diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.cdt.core/shareddefaults.xml b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.cdt.core/shareddefaults.xml deleted file mode 100644 index c4b91cfab..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.cdt.core/shareddefaults.xml +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.cdt.make.core/RTOSDemo.sc b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.cdt.make.core/RTOSDemo.sc deleted file mode 100644 index 6643763dc..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.cdt.make.core/RTOSDemo.sc +++ /dev/null @@ -1,155 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.cdt.make.core/specs.c b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.cdt.make.core/specs.c deleted file mode 100644 index 8b1378917..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.cdt.make.core/specs.c +++ /dev/null @@ -1 +0,0 @@ - diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.cdt.make.core/specs.cpp b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.cdt.make.core/specs.cpp deleted file mode 100644 index 8b1378917..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.cdt.make.core/specs.cpp +++ /dev/null @@ -1 +0,0 @@ - diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.cdt.make.ui/dialog_settings.xml b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.cdt.make.ui/dialog_settings.xml deleted file mode 100644 index 9e62c4bb5..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.cdt.make.ui/dialog_settings.xml +++ /dev/null @@ -1,5 +0,0 @@ - -
-
-
-
diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.cdt.ui/cHelpSettings.xml b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.cdt.ui/cHelpSettings.xml deleted file mode 100644 index 5240b1825..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.cdt.ui/cHelpSettings.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.cdt.ui/dialog_settings.xml b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.cdt.ui/dialog_settings.xml deleted file mode 100644 index ab95b0564..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.cdt.ui/dialog_settings.xml +++ /dev/null @@ -1,12 +0,0 @@ - -
- - - - - -
-
-
-
-
diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/RTOSDemo/.indexes/33/5b/e7/4/history.index b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/RTOSDemo/.indexes/33/5b/e7/4/history.index deleted file mode 100644 index b5f9597a4..000000000 Binary files a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/RTOSDemo/.indexes/33/5b/e7/4/history.index and /dev/null differ diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/RTOSDemo/.indexes/69/history.index b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/RTOSDemo/.indexes/69/history.index deleted file mode 100644 index 7cc2335e0..000000000 Binary files a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/RTOSDemo/.indexes/69/history.index and /dev/null differ diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/RTOSDemo/.indexes/ad/history.index b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/RTOSDemo/.indexes/ad/history.index deleted file mode 100644 index 5ae7777f5..000000000 Binary files a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/RTOSDemo/.indexes/ad/history.index and /dev/null differ diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/RTOSDemo/.indexes/history.index b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/RTOSDemo/.indexes/history.index deleted file mode 100644 index 7a847c769..000000000 Binary files a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/RTOSDemo/.indexes/history.index and /dev/null differ diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/RTOSDemo/.indexes/properties.index b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/RTOSDemo/.indexes/properties.index deleted file mode 100644 index 401e243bb..000000000 Binary files a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/RTOSDemo/.indexes/properties.index and /dev/null differ diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/RTOSDemo/.markers b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/RTOSDemo/.markers deleted file mode 100644 index 7a57056aa..000000000 Binary files a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/RTOSDemo/.markers and /dev/null differ diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/history.version b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/history.version deleted file mode 100644 index 25cb955ba..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/history.version +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.index b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.index deleted file mode 100644 index 567d91cd7..000000000 Binary files a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.index and /dev/null differ diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.version b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.version deleted file mode 100644 index 6b2aaa764..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.version +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.root/.markers b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.root/.markers deleted file mode 100644 index bccaaabca..000000000 Binary files a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.root/.markers and /dev/null differ diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.root/31.tree b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.root/31.tree deleted file mode 100644 index fe99eb192..000000000 Binary files a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.root/31.tree and /dev/null differ diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.safetable/org.eclipse.core.resources b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.safetable/org.eclipse.core.resources deleted file mode 100644 index 7a06fe092..000000000 Binary files a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.safetable/org.eclipse.core.resources and /dev/null differ diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.core.prj-RTOSDemo.prefs b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.core.prj-RTOSDemo.prefs deleted file mode 100644 index bb305ff00..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.core.prj-RTOSDemo.prefs +++ /dev/null @@ -1,3 +0,0 @@ -#Sun Aug 19 15:20:24 BST 2007 -eclipse.preferences.version=1 -indexer/preferenceScope=0 diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.debug.core.prefs b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.debug.core.prefs deleted file mode 100644 index 1c0fdf149..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.debug.core.prefs +++ /dev/null @@ -1,3 +0,0 @@ -#Sun Aug 19 15:19:23 BST 2007 -org.eclipse.cdt.debug.core.cDebug.common_source_containers=\r\n\r\n\r\n\r\n -eclipse.preferences.version=1 diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.debug.ui.prefs b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.debug.ui.prefs deleted file mode 100644 index 962a2b7ac..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.debug.ui.prefs +++ /dev/null @@ -1,5 +0,0 @@ -#Sun Aug 19 23:06:50 BST 2007 -pref_state_memento.org.eclipse.cdt.debug.ui.ModulesView=\r\n -eclipse.preferences.version=1 -org.eclipse.debug.ui.DebugView.org.eclipse.cdt.debug.ui.cDebug.show_full_paths=true -org.eclipse.debug.ui.BreakpointView.org.eclipse.cdt.debug.ui.cDebug.show_full_paths=true diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.managedbuilder.core.prefs b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.managedbuilder.core.prefs deleted file mode 100644 index aa0ab5b81..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.managedbuilder.core.prefs +++ /dev/null @@ -1,3 +0,0 @@ -#Sun Sep 02 21:22:35 BST 2007 -eclipse.preferences.version=1 -properties/RTOSDemo.null.976634949/0.1109417601=\#\r\n\#Sun Sep 02 21\:22\:35 BST 2007\r\n0.1109417601\=\\\#\\r\\n\\\#Sun Sep 02 21\\\:22\\\:35 BST 2007\\r\\nrcState\\\=0\\r\\nrebuildState\\\=false\\r\\n\r\norg.eclipse.cdt.build.core.settings.holder.1502006385\=\\\#\\r\\n\\\#Sun Sep 02 21\\\:22\\\:35 BST 2007\\r\\nrebuildState\\\=false\\r\\n\r\norg.eclipse.cdt.build.core.settings.holder.1021181093\=\\\#\\r\\n\\\#Sun Sep 02 21\\\:22\\\:35 BST 2007\\r\\nrebuildState\\\=false\\r\\n\r\norg.eclipse.cdt.build.core.settings.holder.164584712\=\\\#\\r\\n\\\#Sun Sep 02 21\\\:22\\\:35 BST 2007\\r\\nrebuildState\\\=false\\r\\n\r\norg.eclipse.cdt.build.core.settings.holder.libs.260784574\=\\\#\\r\\n\\\#Sun Sep 02 21\\\:22\\\:35 BST 2007\\r\\nrebuildState\\\=false\\r\\n\r\norg.eclipse.cdt.build.core.prefbase.toolchain.1816209921\=\\\#\\r\\n\\\#Sun Sep 02 21\\\:22\\\:35 BST 2007\\r\\nrebuildState\\\=false\\r\\n\r\n diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.ui.prefs b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.ui.prefs deleted file mode 100644 index 8a970dac4..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.ui.prefs +++ /dev/null @@ -1,12 +0,0 @@ -#Thu Aug 23 20:22:58 BST 2007 -useQuickDiffPrefPage=true -closeBrackets=false -ensureNewlineAtEOF=true -useAnnotationsPrefPage=true -closeAngularBrackets=false -eclipse.preferences.version=1 -org.eclipse.cdt.ui.text.templates.custom= -hoverModifierMasks=org.eclipse.cdt.ui.BestMatchHover;0;org.eclipse.cdt.ui.CSourceHover;131072;org.eclipse.cdt.debug.internal.ui.editors.DebugTextHover;0;org.eclipse.cdt.ui.CDocHover;0;org.eclipse.cdt.ui.AnnotationHover;0; -hoverModifiers=org.eclipse.cdt.ui.BestMatchHover;0;org.eclipse.cdt.ui.CSourceHover;Shift;org.eclipse.cdt.debug.internal.ui.editors.DebugTextHover;\!0;org.eclipse.cdt.ui.CDocHover;\!0;org.eclipse.cdt.ui.AnnotationHover;\!0; -closeBraces=false -closeStrings=false diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.core.resources.prefs b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.core.resources.prefs deleted file mode 100644 index 242e94194..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.core.resources.prefs +++ /dev/null @@ -1,5 +0,0 @@ -#Fri Aug 31 14:25:00 BST 2007 -version=1 -eclipse.preferences.version=1 -pathvariable.FreeRTOS_ROOT=C\:/E/Dev/FreeRTOS -description.autobuilding=false diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.debug.core.prefs b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.debug.core.prefs deleted file mode 100644 index 205a07217..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.debug.core.prefs +++ /dev/null @@ -1,3 +0,0 @@ -#Sun Sep 02 17:49:35 BST 2007 -prefWatchExpressions=\r\n\r\n\r\n\r\n -eclipse.preferences.version=1 diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.debug.ui.prefs b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.debug.ui.prefs deleted file mode 100644 index 53bcfe87a..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.debug.ui.prefs +++ /dev/null @@ -1,12 +0,0 @@ -#Sun Sep 02 17:49:35 BST 2007 -org.eclipse.debug.ui.PREF_FILTER_WORKING_SETS=false -org.eclipse.debug.ui.PREF_LAUNCH_PERSPECTIVES=\r\n\r\n -org.eclipse.debug.ui.BreakpointView+org.eclipse.debug.ui.ShowSupportedBreakpointsAction=true -pref_state_memento.org.eclipse.debug.ui.VariableView=\r\n -pref_state_memento.org.eclipse.debug.ui.RegisterView=\r\n -pref_state_memento.org.eclipse.debug.ui.ExpressionView=\r\n -org.eclipse.debug.ui.PREF_FILTER_LAUNCH_CLOSED=false -preferredDetailPanes=DefaultDetailPane\:DefaultDetailPane| -org.eclipse.debug.ui.PREF_FILTER_LAUNCH_DELETED=false -eclipse.preferences.version=1 -org.eclipse.debug.ui.user_view_bindings=\r\n\r\n\r\n\r\n\r\n\r\n diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.help.ui.prefs b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.help.ui.prefs deleted file mode 100644 index 8d1b31164..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.help.ui.prefs +++ /dev/null @@ -1,7 +0,0 @@ -#Sun Aug 26 17:32:13 BST 2007 -browser.x=177 -browser.w=1024 -eclipse.preferences.version=1 -browser.h=768 -browser.maximized=false -browser.y=128 diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.search.prefs b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.search.prefs deleted file mode 100644 index 2426c2b79..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.search.prefs +++ /dev/null @@ -1,3 +0,0 @@ -#Sun Aug 19 19:39:29 BST 2007 -org.eclipse.search.defaultPerspective=org.eclipse.search.defaultPerspective.none -eclipse.preferences.version=1 diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.team.ui.prefs b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.team.ui.prefs deleted file mode 100644 index 06f8f1043..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.team.ui.prefs +++ /dev/null @@ -1,3 +0,0 @@ -#Fri Aug 31 18:19:04 BST 2007 -eclipse.preferences.version=1 -org.eclipse.team.ui.first_time=false diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.editors.prefs b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.editors.prefs deleted file mode 100644 index 1affd268e..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.editors.prefs +++ /dev/null @@ -1,3 +0,0 @@ -#Sun Aug 19 20:45:57 BST 2007 -eclipse.preferences.version=1 -overviewRuler_migration=migrated_3.1 diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.ide.prefs b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.ide.prefs deleted file mode 100644 index b6611b723..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.ide.prefs +++ /dev/null @@ -1,4 +0,0 @@ -#Fri Aug 31 14:27:00 BST 2007 -eclipse.preferences.version=1 -tipsAndTricks=true -platformState=1187207632230 diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.prefs b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.prefs deleted file mode 100644 index 3e5b2b17d..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.prefs +++ /dev/null @@ -1,3 +0,0 @@ -#Sun Aug 19 20:45:58 BST 2007 -eclipse.preferences.version=1 -showIntro=false diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.workbench.prefs b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.workbench.prefs deleted file mode 100644 index 06cd1e9cd..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.workbench.prefs +++ /dev/null @@ -1,3 +0,0 @@ -#Mon Aug 20 21:59:49 BST 2007 -eclipse.preferences.version=1 -org.eclipse.ui.commands=\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.debug.core/.launches/OpenOCD Programmer.launch b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.debug.core/.launches/OpenOCD Programmer.launch deleted file mode 100644 index 4175eca53..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.debug.core/.launches/OpenOCD Programmer.launch +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.debug.core/.launches/OpenOCD Server.launch b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.debug.core/.launches/OpenOCD Server.launch deleted file mode 100644 index f70d8f970..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.debug.core/.launches/OpenOCD Server.launch +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.debug.core/.launches/RTOSDemo.launch b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.debug.core/.launches/RTOSDemo.launch deleted file mode 100644 index acc651f5b..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.debug.core/.launches/RTOSDemo.launch +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.debug.ui/dialog_settings.xml b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.debug.ui/dialog_settings.xml deleted file mode 100644 index 4b1222134..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.debug.ui/dialog_settings.xml +++ /dev/null @@ -1,34 +0,0 @@ - -
-
- - - - - -
-
- - - - - - - - -
-
- - - - - -
-
- - - - - -
-
diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.debug.ui/launchConfigurationHistory.xml b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.debug.ui/launchConfigurationHistory.xml deleted file mode 100644 index 598b376c8..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.debug.ui/launchConfigurationHistory.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.help.ui/dialog_settings.xml b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.help.ui/dialog_settings.xml deleted file mode 100644 index 1ef2b05b5..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.help.ui/dialog_settings.xml +++ /dev/null @@ -1,3 +0,0 @@ - -
-
diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.help.ui/scope_sets/Default.pref b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.help.ui/scope_sets/Default.pref deleted file mode 100644 index fc158177d..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.help.ui/scope_sets/Default.pref +++ /dev/null @@ -1,2 +0,0 @@ -#Sun Aug 26 17:54:18 BST 2007 -__DEFAULT__=true diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.help.ui/scope_sets/relative_path.hist b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.help.ui/scope_sets/relative_path.hist deleted file mode 100644 index 713e72168..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.help.ui/scope_sets/relative_path.hist +++ /dev/null @@ -1,4 +0,0 @@ -#Sun Aug 26 17:36:29 BST 2007 -__DEFAULT__=false -org.eclipse.help.ui.localSearch.master=true -expression=relative path diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.help.ui/scope_sets/working_set.hist b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.help.ui/scope_sets/working_set.hist deleted file mode 100644 index 197837b95..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.help.ui/scope_sets/working_set.hist +++ /dev/null @@ -1,4 +0,0 @@ -#Sun Aug 26 17:29:25 BST 2007 -__DEFAULT__=false -org.eclipse.help.ui.localSearch.master=true -expression=working set diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.help.ui/scope_sets/working_sets.hist b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.help.ui/scope_sets/working_sets.hist deleted file mode 100644 index a88e15eb8..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.help.ui/scope_sets/working_sets.hist +++ /dev/null @@ -1,4 +0,0 @@ -#Sun Aug 26 17:54:21 BST 2007 -__DEFAULT__=false -org.eclipse.help.ui.localSearch.master=true -expression=working sets diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.ltk.ui.refactoring/dialog_settings.xml b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.ltk.ui.refactoring/dialog_settings.xml deleted file mode 100644 index ac671478c..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.ltk.ui.refactoring/dialog_settings.xml +++ /dev/null @@ -1,6 +0,0 @@ - -
-
- -
-
diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.search/dialog_settings.xml b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.search/dialog_settings.xml deleted file mode 100644 index 839aca5ed..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.search/dialog_settings.xml +++ /dev/null @@ -1,46 +0,0 @@ - -
-
- -
-
- - - - - -
-
- - - - - - - - -
-
- -
-
- - - - -
- - - - - - - - - -
-
-
- -
-
diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.ui.cheatsheets/dialog_settings.xml b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.ui.cheatsheets/dialog_settings.xml deleted file mode 100644 index 1df8b48c3..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.ui.cheatsheets/dialog_settings.xml +++ /dev/null @@ -1,10 +0,0 @@ - -
-
- - - - - -
-
diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.ui.ide/dialog_settings.xml b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.ui.ide/dialog_settings.xml deleted file mode 100644 index 127582b33..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.ui.ide/dialog_settings.xml +++ /dev/null @@ -1,26 +0,0 @@ - -
-
- - -
-
-
-
-
-
- - - - - -
-
- - - - - - -
-
diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.ui.intro/dialog_settings.xml b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.ui.intro/dialog_settings.xml deleted file mode 100644 index d3014f5c1..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.ui.intro/dialog_settings.xml +++ /dev/null @@ -1,4 +0,0 @@ - -
- -
diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.ui.workbench.texteditor/dialog_settings.xml b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.ui.workbench.texteditor/dialog_settings.xml deleted file mode 100644 index ec032bd0b..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.ui.workbench.texteditor/dialog_settings.xml +++ /dev/null @@ -1,38 +0,0 @@ - -
-
- - - - - -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - -
-
diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.ui.workbench/dialog_settings.xml b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.ui.workbench/dialog_settings.xml deleted file mode 100644 index 77beade3e..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.ui.workbench/dialog_settings.xml +++ /dev/null @@ -1,19 +0,0 @@ - -
-
- - -
-
- - - - -
-
- - - - -
-
diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.ui.workbench/workbench.xml b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.ui.workbench/workbench.xml deleted file mode 100644 index 01621f472..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.ui.workbench/workbench.xml +++ /dev/null @@ -1,530 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.ui.workbench/workingsets.xml b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.ui.workbench/workingsets.xml deleted file mode 100644 index ce2a93059..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.ui.workbench/workingsets.xml +++ /dev/null @@ -1,73 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.ui/dialog_settings.xml b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.ui/dialog_settings.xml deleted file mode 100644 index 64561b65c..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.ui/dialog_settings.xml +++ /dev/null @@ -1,10 +0,0 @@ - -
-
- - - - - -
-
diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.update.ui/dialog_settings.xml b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.update.ui/dialog_settings.xml deleted file mode 100644 index 86928e08c..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/.plugins/org.eclipse.update.ui/dialog_settings.xml +++ /dev/null @@ -1,5 +0,0 @@ - -
-
-
-
diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/version.ini b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/version.ini deleted file mode 100644 index c51ff745b..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/.metadata/version.ini +++ /dev/null @@ -1 +0,0 @@ -org.eclipse.core.runtime=1 \ No newline at end of file diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/.cproject b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/.cproject deleted file mode 100644 index bbcae405f..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/.cproject +++ /dev/null @@ -1,230 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/.project b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/.project deleted file mode 100644 index b3776decb..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/.project +++ /dev/null @@ -1,97 +0,0 @@ - - - RTOSDemo - - - - - - org.eclipse.cdt.managedbuilder.core.genmakebuilder - clean,full,incremental, - - - org.eclipse.cdt.make.core.cleanBuildTarget - clean - - - org.eclipse.cdt.make.core.enableCleanBuild - true - - - ?name? - - - - org.eclipse.cdt.make.core.append_environment - true - - - org.eclipse.cdt.make.core.stopOnError - true - - - org.eclipse.cdt.make.core.buildCommand - make - - - org.eclipse.cdt.make.core.contents - org.eclipse.cdt.make.core.activeConfigSettings - - - org.eclipse.cdt.make.core.buildLocation - ${workspace_loc:/RTOSDemo} - - - org.eclipse.cdt.make.core.useDefaultBuildCmd - false - - - org.eclipse.cdt.make.core.enableAutoBuild - false - - - org.eclipse.cdt.make.core.enableFullBuild - true - - - org.eclipse.cdt.make.core.buildArguments - - - - org.eclipse.cdt.make.core.fullBuildTarget - all - - - ?children? - ?name?=outputEntries\|?children?=?name?=entry\\\\\\\\\\\\\\\|\\\\\\\|\|| - - - org.eclipse.cdt.make.core.autoBuildTarget - all - - - - - org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder - - - - - - org.eclipse.cdt.managedbuilder.core.ScannerConfigNature - org.eclipse.cdt.managedbuilder.core.managedBuildNature - org.eclipse.cdt.core.cnature - - - - Common Demo Files - 2 - FreeRTOS_ROOT/Demo/Common - - - FreeRTOS.org Source - 2 - FreeRTOS_ROOT/Source - - - diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/.settings/org.eclipse.ltk.core.refactoring.prefs b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/.settings/org.eclipse.ltk.core.refactoring.prefs deleted file mode 100644 index a9f7e81cf..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/.settings/org.eclipse.ltk.core.refactoring.prefs +++ /dev/null @@ -1,3 +0,0 @@ -#Sun Aug 19 20:36:58 BST 2007 -eclipse.preferences.version=1 -org.eclipse.ltk.core.refactoring.enable.project.refactoring.history=false diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/FreeRTOSConfig.h b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/FreeRTOSConfig.h deleted file mode 100644 index 5de383482..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/FreeRTOSConfig.h +++ /dev/null @@ -1,122 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -#ifndef FREERTOS_CONFIG_H -#define FREERTOS_CONFIG_H - -#include -#include "lpc23xx.h" - -/*----------------------------------------------------------- - * Application specific definitions. - * - * These definitions should be adjusted for your particular hardware and - * application requirements. - * - * THESE PARAMETERS ARE DESCRIBED WITHIN THE 'CONFIGURATION' SECTION OF THE - * FreeRTOS API DOCUMENTATION AVAILABLE ON THE FreeRTOS.org WEB SITE. - * - * See http://www.freertos.org/a00110.html - *----------------------------------------------------------*/ - -/* Value to use on old rev '-' devices. */ -//#define configPINSEL2_VALUE 0x50151105 - -/* Value to use on rev 'A' and newer devices. */ -//#define configPINSEL2_VALUE 0x50150105 - -#ifndef configPINSEL2_VALUE - #error Please uncomment one of the two configPINSEL2_VALUE definitions above, depending on the revision of the LPC2000 device being used. -#endif - -#define configUSE_PREEMPTION 1 -#define configUSE_IDLE_HOOK 0 -#define configUSE_TICK_HOOK 1 -#define configCPU_CLOCK_HZ ( ( unsigned long ) 48000000 ) /* =12Mhz xtal multiplied by 5 using the PLL. */ -#define configTICK_RATE_HZ ( ( TickType_t ) 1000 ) -#define configMAX_PRIORITIES ( 4 ) -#define configMINIMAL_STACK_SIZE ( ( unsigned short ) 104 ) -#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 18 * 1024 ) ) -#define configMAX_TASK_NAME_LEN ( 10 ) -#define configUSE_TRACE_FACILITY 1 -#define configUSE_16_BIT_TICKS 0 -#define configIDLE_SHOULD_YIELD 1 -#define configUSE_MUTEXES 1 - -/* Co-routine definitions. */ -#define configUSE_CO_ROUTINES 0 -#define configMAX_CO_ROUTINE_PRIORITIES ( 2 ) - - -/* Set the following definitions to 1 to include the API function, or zero -to exclude the API function. */ - -#define INCLUDE_vTaskPrioritySet 1 -#define INCLUDE_uxTaskPriorityGet 1 -#define INCLUDE_vTaskDelete 1 -#define INCLUDE_vTaskCleanUpResources 0 -#define INCLUDE_vTaskSuspend 1 -#define INCLUDE_vTaskDelayUntil 1 -#define INCLUDE_vTaskDelay 1 -#define INCLUDE_xTaskGetCurrentTaskHandle 1 - -/* This demo makes use of one or more example stats formatting functions. These -format the raw data provided by the uxTaskGetSystemState() function in to human -readable ASCII form. See the notes in the implementation of vTaskList() within -FreeRTOS/Source/tasks.c for limitations. */ -#define configUSE_STATS_FORMATTING_FUNCTIONS 1 - - -#endif /* FREERTOS_CONFIG_H */ - - -#ifndef sbi -#define sbi(x,y) x|=(1 << (y)) -#endif - -#ifndef cbi -#define cbi(x,y) x&=~(1 << (y)) -#endif - -#ifndef tstb -#define tstb(x,y) (x & (1 << (y)) ? 1 : 0) -#endif - -#ifndef toggle -#define toggle(x,y) x^=(1 << (y)) -#endif - -#ifndef BIT -#define BIT(x) (1 << (x)) - -typedef struct -{ - long xColumn; - char *pcMessage; -} xLCDMessage; - -#endif diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/LCD/portlcd.c b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/LCD/portlcd.c deleted file mode 100644 index 657a63fc5..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/LCD/portlcd.c +++ /dev/null @@ -1,391 +0,0 @@ -/***************************************************************************** - * - * Project : lwIP Web - * Subproject : - * Name : portlcd.c - * Function : Routines for LCD - * Designer : K. Sterckx - * Creation date : 22/01/2007 - * Compiler : GNU ARM - * Processor : LPC2368 - * Last update : - * Last updated by : - * History : - * based on example code from NXP - * - ************************************************************************ - * - * This code is used to place text on the LCD. - * - ************************************************************************/ - -#include "portlcd.h" -#include "FreeRTOS.h" -#include "task.h" - -/* Please note, on old MCB2300 board, the LCD_E bit is p1.30, on the new board -it's p1.31, please check the schematic carefully, and change LCD_CTRL and LCD_E -accordingly if you have a different board. */ - -/* LCD IO definitions */ -#define LCD_E 0x80000000 /* Enable control pin */ -#define LCD_RW 0x20000000 /* Read/Write control pin */ -#define LCD_RS 0x10000000 /* Data/Instruction control */ -#define LCD_CTRL 0xB0000000 /* Control lines mask */ -#define LCD_DATA 0x0F000000 /* Data lines mask */ - -/* Local variables */ -static unsigned int lcd_ptr; - -/* 8 user defined characters to be loaded into CGRAM (used for bargraph) */ -static const unsigned char UserFont[8][8] = { - { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 }, - { 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10 }, - { 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18 }, - { 0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C }, - { 0x1E,0x1E,0x1E,0x1E,0x1E,0x1E,0x1E,0x1E }, - { 0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F }, - { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 }, - { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 } -}; - -/* Local Function Prototypes */ -static void lcd_write( unsigned int c ); -static void lcd_write_4bit( unsigned int c ); -static unsigned int lcd_read_stat( void ); -static void lcd_write_cmd( unsigned int c ); -static void lcd_write_data( unsigned int d ); -static void lcd_wait_busy( void ); - - -/****************************************************************************** -** Function name: lcd_write_4bit -** -** Descriptions: -** -** parameters: four bits to write -** Returned value: None -** -******************************************************************************/ -static void lcd_write_4bit(unsigned int c) -{ - /* Write a 4-bit command to LCD controller. */ - FIO1DIR |= LCD_DATA | LCD_CTRL; - FIO1CLR = LCD_RW | LCD_DATA; - FIO1SET = (c & 0xF) << 24; - FIO1SET = LCD_E; - vTaskDelay(0); - FIO1CLR = LCD_E; - vTaskDelay(0); - return; -} - -/****************************************************************************** -** Function name: lcd_write -** -** Descriptions: -** -** parameters: word to write -** Returned value: None -** -******************************************************************************/ -static void lcd_write(unsigned int c) -{ - /* Write data/command to LCD controller. */ - lcd_write_4bit (c >> 4); - lcd_write_4bit (c); - return; -} - -/****************************************************************************** -** Function name: lcd_read_stat -** -** Descriptions: -** -** parameters: None -** Returned value: status -** -******************************************************************************/ -static unsigned int lcd_read_stat(void) -{ - /* Read status of LCD controller (ST7066) */ - unsigned int stat; - - FIO1DIR &= ~LCD_DATA; - FIO1CLR = LCD_RS; - FIO1SET = LCD_RW; - vTaskDelay( 0 ); - FIO1SET = LCD_E; - vTaskDelay( 0 ); - stat = (FIO1PIN >> 20) & 0xF0; - FIO1CLR = LCD_E; - vTaskDelay( 0 ); - FIO1SET = LCD_E; - vTaskDelay( 0 ); - stat |= (FIO1PIN >> 24) & 0xF; - FIO1CLR = LCD_E; - return (stat); -} - -/****************************************************************************** -** Function name: lcd_wait_busy -** -** Descriptions: -** -** parameters: None -** Returned value: None -** -******************************************************************************/ -static void lcd_wait_busy(void) -{ - /* Wait until LCD controller (ST7066) is busy. */ - unsigned int stat; - - do - { - stat = lcd_read_stat(); - } - while (stat & 0x80); /* Wait for busy flag */ - - return; -} - -/****************************************************************************** -** Function name: lcd_write_cmd -** -** Descriptions: -** -** parameters: command word -** Returned value: None -** -******************************************************************************/ -static void lcd_write_cmd(unsigned int c) -{ - /* Write command to LCD controller. */ - lcd_wait_busy(); - FIO1CLR = LCD_RS; - lcd_write(c); - return; -} - -/****************************************************************************** -** Function name: lcd_write_data -** -** Descriptions: -** -** parameters: data word -** Returned value: None -** -******************************************************************************/ -static void lcd_write_data(unsigned int d) -{ - /* Write data to LCD controller. */ - lcd_wait_busy(); - FIO1SET = LCD_RS; - lcd_write(d); - return; -} - -/****************************************************************************** -** Function name: LCD_init -** -** Descriptions: -** -** parameters: None -** Returned value: None -** -******************************************************************************/ -void LCD_init(void) -{ - /* Initialize the ST7066 LCD controller to 4-bit mode. */ - PINSEL3 = 0x00000000; -#if USE_FIO - SCS |= 0x00000001;/* set GPIOx to use Fast I/O */ -#endif - FIO1DIR |= LCD_CTRL | LCD_DATA; - FIO1CLR = LCD_RW | LCD_RS | LCD_DATA; - - lcd_write_4bit(0x3); /* Select 4-bit interface */ - vTaskDelay(100); - lcd_write_4bit(0x3); - vTaskDelay(100); - lcd_write_4bit(0x3); - lcd_write_4bit(0x2); - - lcd_write_cmd(0x28); /* 2 lines, 5x8 character matrix */ - lcd_write_cmd(0x0e); /* Display ctrl:Disp/Curs/Blnk=ON */ - lcd_write_cmd(0x06); /* Entry mode: Move right, no shift */ - - LCD_load( (unsigned char *)&UserFont, sizeof (UserFont) ); - LCD_cls(); - return; -} - -/****************************************************************************** -** Function name: LCD_load -** -** Descriptions: -** -** parameters: pointer to the buffer and counter -** Returned value: None -** -******************************************************************************/ -void LCD_load(unsigned char *fp, unsigned int cnt) -{ - /* Load user-specific characters into CGRAM */ - unsigned int i; - - lcd_write_cmd( 0x40 ); /* Set CGRAM address counter to 0 */ - for (i = 0; i < cnt; i++, fp++) - { - lcd_write_data( *fp ); - } - return; -} - -/****************************************************************************** -** Function name: LCD_gotoxy -** -** Descriptions: -** -** parameters: pixel X and Y -** Returned value: None -** -******************************************************************************/ -void LCD_gotoxy(unsigned int x, unsigned int y) -{ - /* Set cursor position on LCD display. Left corner: 1,1, right: 16,2 */ - unsigned int c; - - c = --x; - if (--y) - { - c |= 0x40; - } - lcd_write_cmd (c | 0x80); - lcd_ptr = y*16 + x; - return; -} - -/****************************************************************************** -** Function name: LCD_cls -** -** Descriptions: -** -** parameters: None -** Returned value: None -** -******************************************************************************/ -void LCD_cls(void) -{ - /* Clear LCD display, move cursor to home position. */ - lcd_write_cmd (0x01); - LCD_gotoxy (1,1); - return; -} - -/****************************************************************************** -** Function name: LCD_cur_off -** -** Descriptions: -** -** parameters: None -** Returned value: None -** -******************************************************************************/ -void LCD_cur_off(void) -{ - /* Switch off LCD cursor. */ - lcd_write_cmd(0x0c); - return; -} - - -/****************************************************************************** -** Function name: LCD_on -** -** Descriptions: -** -** parameters: None -** Returned value: None -** -******************************************************************************/ -void LCD_on(void) -{ - /* Switch on LCD and enable cursor. */ - lcd_write_cmd (0x0e); - return; -} - -/****************************************************************************** -** Function name: LCD_putc -** -** Descriptions: -** -** parameters: unsigned char character -** Returned value: None -** -******************************************************************************/ -void LCD_putc(unsigned char c) -{ - /* Print a character to LCD at current cursor position. */ - if (lcd_ptr == 16) - { - lcd_write_cmd (0xc0); - } - lcd_write_data(c); - lcd_ptr++; - return; -} - -/****************************************************************************** -** Function name: LCD_puts -** -** Descriptions: -** -** parameters: pointer to the buffer -** Returned value: None -** -******************************************************************************/ -void LCD_puts(char *sp) -{ - /* Print a string to LCD display. */ - while (*sp) - { - LCD_putc (*sp++); - } - return; -} - -/****************************************************************************** -** Function name: LCD_bargraph -** -** Descriptions: -** -** parameters: value and size -** Returned value: None -** -******************************************************************************/ -void LCD_bargraph(unsigned int val, unsigned int size) -{ - /* Print a bargraph to LCD display. */ - /* - val: value 0..100 % */ - /* - size: size of bargraph 1..16 */ - unsigned int i; - - val = val * size / 20; /* Display matrix 5 x 8 pixels */ - for (i = 0; i < size; i++) - { - if (val > 5) - { - LCD_putc(5); - val -= 5; - } - else - { - LCD_putc(val); - break; - } - } - return; -} diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/LCD/portlcd.h b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/LCD/portlcd.h deleted file mode 100644 index 76962538f..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/LCD/portlcd.h +++ /dev/null @@ -1,31 +0,0 @@ -/***************************************************************************** - * rtc.h: Header file for NXP LPC23xx/24xx Family Microprocessors - * - * Copyright(C) 2006, NXP Semiconductor - * All rights reserved. - * - * History - * 2006.07.13 ver 1.00 Prelimnary version, first Release - * -******************************************************************************/ -#ifndef __PORTLCD_H -#define __PORTLCD_H - -extern void LCD_init(void); -extern void LCD_load(unsigned char *fp, unsigned int cnt); -extern void LCD_gotoxy(unsigned int x, unsigned int y); -extern void LCD_cls(void); -extern void LCD_cur_off(void); -extern void LCD_on(void); -extern void LCD_putc(unsigned char c); -extern void LCD_puts(char *sp); -extern void LCD_bargraph(unsigned int val, unsigned int size); - -extern void LCD_putnibble(unsigned char nibble); -extern void LCD_puthexbyte(unsigned char abyte); - - -#endif /* end __PORTLCD_H */ -/***************************************************************************** -** End Of File -******************************************************************************/ diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/Makefile b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/Makefile deleted file mode 100644 index 578c1b3d6..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/Makefile +++ /dev/null @@ -1,128 +0,0 @@ -#/* -# * FreeRTOS V202011.00 -# * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. -# * -# * Permission is hereby granted, free of charge, to any person obtaining a copy of -# * this software and associated documentation files (the "Software"), to deal in -# * the Software without restriction, including without limitation the rights to -# * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -# * the Software, and to permit persons to whom the Software is furnished to do so, -# * subject to the following conditions: -# * -# * The above copyright notice and this permission notice shall be included in all -# * copies or substantial portions of the Software. -# * -# * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -# * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -# * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -# * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -# * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -# * -# * http://www.FreeRTOS.org -# * http://aws.amazon.com/freertos -# * -# * 1 tab == 4 spaces! -# */ - - -RTOS_SOURCE_DIR=../../../Source -DEMO_COMMON_DIR=../../Common/Minimal -DEMO_INCLUDE_DIR=../../Common/include -UIP_COMMON_DIR=../../Common/ethernet/uIP/uip-1.0/uip - -CC=arm-elf-gcc -OBJCOPY=arm-elf-objcopy -LDSCRIPT=lpc2368.ld - -LINKER_FLAGS=-mthumb -nostartfiles -Xlinker -oRTOSDemo.elf -Xlinker -M -Xlinker -Map=rtosdemo.map - -DEBUG=-g -OPTIM=-O0 - - -CFLAGS= $(DEBUG) \ - $(OPTIM) \ - -T$(LDSCRIPT) \ - -I . \ - -I $(RTOS_SOURCE_DIR)/include \ - -I $(RTOS_SOURCE_DIR)/portable/GCC/ARM7_LPC23xx \ - -I $(DEMO_INCLUDE_DIR) \ - -I ./webserver \ - -I $(UIP_COMMON_DIR) \ - -D ROWLEY_LPC23xx \ - -D THUMB_INTERWORK \ - -mcpu=arm7tdmi \ - -D PACK_STRUCT_END=__attribute\(\(packed\)\) \ - -D ALIGN_STRUCT_END=__attribute\(\(aligned\(4\)\)\) \ - -fomit-frame-pointer \ - -mthumb-interwork \ - -fno-dwarf2-cfi-asm \ - -fno-strict-aliasing - -THUMB_SOURCE= \ - main.c \ - ./ParTest/ParTest.c \ - ./LCD/portlcd.c \ - $(DEMO_COMMON_DIR)/BlockQ.c \ - $(DEMO_COMMON_DIR)/blocktim.c \ - $(DEMO_COMMON_DIR)/flash.c \ - $(DEMO_COMMON_DIR)/integer.c \ - $(DEMO_COMMON_DIR)/GenQTest.c \ - $(DEMO_COMMON_DIR)/QPeek.c \ - $(DEMO_COMMON_DIR)/dynamic.c \ - ./webserver/uIP_Task.c \ - ./webserver/emac.c \ - ./webserver/httpd.c \ - ./webserver/httpd-cgi.c \ - ./webserver/httpd-fs.c \ - ./webserver/http-strings.c \ - $(UIP_COMMON_DIR)/uip_arp.c \ - $(UIP_COMMON_DIR)/psock.c \ - $(UIP_COMMON_DIR)/timer.c \ - $(UIP_COMMON_DIR)/uip.c \ - $(RTOS_SOURCE_DIR)/list.c \ - $(RTOS_SOURCE_DIR)/queue.c \ - $(RTOS_SOURCE_DIR)/tasks.c \ - $(RTOS_SOURCE_DIR)/portable/GCC/ARM7_LPC23xx/port.c \ - $(RTOS_SOURCE_DIR)/portable/MemMang/heap_2.c \ - syscalls.c - -ARM_SOURCE= \ - $(RTOS_SOURCE_DIR)/portable/GCC/ARM7_LPC23xx/portISR.c \ - ./webserver/EMAC_ISR.c - -THUMB_OBJS = $(THUMB_SOURCE:.c=.o) -ARM_OBJS = $(ARM_SOURCE:.c=.o) - - -all: RTOSDemo.bin - -RTOSDemo.bin : RTOSDemo.hex - $(OBJCOPY) RTOSDemo.elf -O binary RTOSDemo.bin - -RTOSDemo.hex : RTOSDemo.elf - $(OBJCOPY) RTOSDemo.elf -O ihex RTOSDemo.hex - -RTOSDemo.elf : $(THUMB_OBJS) $(ARM_OBJS) boot.s Makefile - $(CC) $(CFLAGS) $(ARM_OBJS) $(THUMB_OBJS) $(LIBS) boot.s $(LINKER_FLAGS) - -$(THUMB_OBJS) : %.o : %.c Makefile FreeRTOSConfig.h - $(CC) -c $(CFLAGS) -mthumb $< -o $@ - -$(ARM_OBJS) : %.o : %.c Makefile FreeRTOSConfig.h - $(CC) -c $(CFLAGS) $< -o $@ - -clean : - rm $(THUMB_OBJS) - rm $(ARM_OBJS) - touch Makefile - rm RTOSDemo.elf - rm RTOSDemo.hex - - - - - - - diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/ParTest/ParTest.c b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/ParTest/ParTest.c deleted file mode 100644 index 2f79f44e9..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/ParTest/ParTest.c +++ /dev/null @@ -1,109 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* FreeRTOS.org includes. */ -#include "FreeRTOS.h" - -/* Demo application includes. */ -#include "partest.h" - -#define partstFIRST_IO ( ( unsigned long ) 0x01 ) -#define partstNUM_LEDS ( 8 ) -#define partstALL_OUTPUTS_OFF ( ( unsigned long ) 0xff ) - -/*----------------------------------------------------------- - * Simple parallel port IO routines. - *-----------------------------------------------------------*/ - -void vParTestInitialise( void ) -{ - PINSEL10 = 0; - FIO2DIR = 0x000000FF; - FIO2MASK = 0x00000000; - FIO2CLR = 0xFF; - SCS |= (1<<0); //fast mode for port 0 and 1 - - FIO2CLR = partstALL_OUTPUTS_OFF; -} -/*-----------------------------------------------------------*/ - -void vParTestSetLED( unsigned portBASE_TYPE uxLED, signed portBASE_TYPE xValue ) -{ -unsigned long ulLED = partstFIRST_IO; - - if( uxLED < partstNUM_LEDS ) - { - /* Rotate to the wanted bit of port */ - ulLED <<= ( unsigned long ) uxLED; - - /* Set of clear the output. */ - if( xValue ) - { - FIO2CLR = ulLED; - } - else - { - FIO2SET = ulLED; - } - } -} -/*-----------------------------------------------------------*/ - -void vParTestToggleLED( unsigned portBASE_TYPE uxLED ) -{ -unsigned long ulLED = partstFIRST_IO, ulCurrentState; - - if( uxLED < partstNUM_LEDS ) - { - /* Rotate to the wanted bit of port 0. Only P10 to P13 have an LED - attached. */ - ulLED <<= ( unsigned long ) uxLED; - - /* If this bit is already set, clear it, and vice versa. */ - ulCurrentState = FIO2PIN; - if( ulCurrentState & ulLED ) - { - FIO2CLR = ulLED; - } - else - { - FIO2SET = ulLED; - } - } -} - -/*-----------------------------------------------------------*/ -unsigned portBASE_TYPE uxParTextGetLED( unsigned portBASE_TYPE uxLED ) -{ -unsigned long ulLED = partstFIRST_IO; - - ulLED <<= ( unsigned long ) uxLED; - - return ( FIO2PIN & ulLED ); -} - - diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/boot.s b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/boot.s deleted file mode 100644 index eafdd9345..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/boot.s +++ /dev/null @@ -1,157 +0,0 @@ - /* Sample initialization file */ - - .extern main - .extern exit - - .text - .code 32 - - - .align 0 - - .extern __bss_beg__ - .extern __bss_end__ - .extern __stack_end__ - .extern __data_beg__ - .extern __data_end__ - .extern __data+beg_src__ - - .global start - .global endless_loop - - /* Stack Sizes */ - .set UND_STACK_SIZE, 0x00000004 - .set ABT_STACK_SIZE, 0x00000004 - .set FIQ_STACK_SIZE, 0x00000004 - .set IRQ_STACK_SIZE, 0X00000100 - .set SVC_STACK_SIZE, 0x00000100 - - /* Standard definitions of Mode bits and Interrupt (I & F) flags in PSRs */ - .set MODE_USR, 0x10 /* User Mode */ - .set MODE_FIQ, 0x11 /* FIQ Mode */ - .set MODE_IRQ, 0x12 /* IRQ Mode */ - .set MODE_SVC, 0x13 /* Supervisor Mode */ - .set MODE_ABT, 0x17 /* Abort Mode */ - .set MODE_UND, 0x1B /* Undefined Mode */ - .set MODE_SYS, 0x1F /* System Mode */ - - .equ I_BIT, 0x80 /* when I bit is set, IRQ is disabled */ - .equ F_BIT, 0x40 /* when F bit is set, FIQ is disabled */ - - -start: -_start: -_mainCRTStartup: - - /* Setup a stack for each mode - note that this only sets up a usable stack - for system/user, SWI and IRQ modes. Also each mode is setup with - interrupts initially disabled. */ - ldr r0, .LC6 - msr CPSR_c, #MODE_UND|I_BIT|F_BIT /* Undefined Instruction Mode */ - mov sp, r0 - sub r0, r0, #UND_STACK_SIZE - msr CPSR_c, #MODE_ABT|I_BIT|F_BIT /* Abort Mode */ - mov sp, r0 - sub r0, r0, #ABT_STACK_SIZE - msr CPSR_c, #MODE_FIQ|I_BIT|F_BIT /* FIQ Mode */ - mov sp, r0 - sub r0, r0, #FIQ_STACK_SIZE - msr CPSR_c, #MODE_IRQ|I_BIT|F_BIT /* IRQ Mode */ - mov sp, r0 - sub r0, r0, #IRQ_STACK_SIZE - msr CPSR_c, #MODE_SVC|I_BIT|F_BIT /* Supervisor Mode */ - mov sp, r0 - sub r0, r0, #SVC_STACK_SIZE - msr CPSR_c, #MODE_SYS|I_BIT|F_BIT /* System Mode */ - mov sp, r0 - - /* We want to start in supervisor mode. Operation will switch to system - mode when the first task starts. */ - msr CPSR_c, #MODE_SVC|I_BIT|F_BIT - - /* Clear BSS. */ - - mov a2, #0 /* Fill value */ - mov fp, a2 /* Null frame pointer */ - mov r7, a2 /* Null frame pointer for Thumb */ - - ldr r1, .LC1 /* Start of memory block */ - ldr r3, .LC2 /* End of memory block */ - subs r3, r3, r1 /* Length of block */ - beq .end_clear_loop - mov r2, #0 - -.clear_loop: - strb r2, [r1], #1 - subs r3, r3, #1 - bgt .clear_loop - -.end_clear_loop: - - /* Initialise data. */ - - ldr r1, .LC3 /* Start of memory block */ - ldr r2, .LC4 /* End of memory block */ - ldr r3, .LC5 - subs r3, r3, r1 /* Length of block */ - beq .end_set_loop - -.set_loop: - ldrb r4, [r2], #1 - strb r4, [r1], #1 - subs r3, r3, #1 - bgt .set_loop - -.end_set_loop: - - mov r0, #0 /* no arguments */ - mov r1, #0 /* no argv either */ - - bl main - -endless_loop: - b endless_loop - - - .align 0 - - .LC1: - .word __bss_beg__ - .LC2: - .word __bss_end__ - .LC3: - .word __data_beg__ - .LC4: - .word __data_beg_src__ - .LC5: - .word __data_end__ - .LC6: - .word __stack_end__ - - - /* Setup vector table. Note that undf, pabt, dabt, fiq just execute - a null loop. */ - -.section .startup,"ax" - .code 32 - .align 0 - - b _start /* reset - _start */ - ldr pc, _undf /* undefined - _undf */ - ldr pc, _swi /* SWI - _swi */ - ldr pc, _pabt /* program abort - _pabt */ - ldr pc, _dabt /* data abort - _dabt */ - nop /* reserved */ - ldr pc, [pc,#-0x120] /* IRQ - read the VIC */ - ldr pc, _fiq /* FIQ - _fiq */ - -_undf: .word __undf /* undefined */ -_swi: .word vPortYieldProcessor /* SWI */ -_pabt: .word __pabt /* program abort */ -_dabt: .word __dabt /* data abort */ -_fiq: .word __fiq /* FIQ */ - -__undf: b . /* undefined */ -__pabt: b . /* program abort */ -__dabt: b . /* data abort */ -__fiq: b . /* FIQ */ diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/lpc2368.ld b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/lpc2368.ld deleted file mode 100644 index f15d232ea..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/lpc2368.ld +++ /dev/null @@ -1,71 +0,0 @@ -MEMORY -{ - flash : ORIGIN = 0x00000000, LENGTH = 500K - ram : ORIGIN = 0x40000000, LENGTH = 32K - usbram : ORIGIN = 0x7FD00000, LENGTH = 8K - ethram : ORIGIN = 0x7FE00000, LENGTH = 16K -} - -__stack_end__ = 0x40000000 + 32K - 4; - - -SECTIONS -{ - - . = 0; - startup : { *(.startup)} >flash - - prog : - { - *(.text) - *(.rodata) - *(.rodata*) - *(.glue_7) - *(.glue_7t) - KEEP(*(.eh_frame)) - } >flash - - __end_of_text__ = .; - - .data : - { - __data_beg__ = .; - __data_beg_src__ = __end_of_text__; - *(.data) - __data_end__ = .; - } >ram AT>flash - - .bss : - { - __bss_beg__ = .; - *(.bss) - } >ram - - /* Align here to ensure that the .bss section occupies space up to - _end. Align after .bss to ensure correct alignment even if the - .bss section disappears because there are no input sections. */ - . = ALIGN(32 / 8); - _bss_end__ = . ; __bss_end__ = . ; __end__ = . ; - - .usbram (NOLOAD): - { - __usbram_beg__ = .; - *(.dmaram) - __usbram_end__ = .; - } >usbram - - .ethram (NOLOAD): - { - __ethram_beg__ = .; - *(.ethram) - __ethram_end__ = .; - } >ethram - - -} - . = ALIGN(32 / 8); - _end = .; - - PROVIDE (end = .); - - diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/lpc23xx.h b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/lpc23xx.h deleted file mode 100644 index d3587f553..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/lpc23xx.h +++ /dev/null @@ -1,1138 +0,0 @@ -/***************************************************************************** - * - * Project : lwIP Web - * Subproject : - * Name : LPC23xx.h - * Function : register definitions - * Designer : K. Sterckx - * Creation date : 22/01/2007 - * Compiler : GNU ARM - * Processor : LPC23xx - * Last update : - * Last updated by : - * History : - * - ***************************************************************************** - * - * Hardware specific macro's and defines - * - ****************************************************************************/ - -#ifndef __LPC23xx_H -#define __LPC23xx_H - -/* Vectored Interrupt Controller (VIC) */ -#define VIC_BASE_ADDR 0xFFFFF000 -#define VICIRQStatus (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x000)) -#define VICFIQStatus (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x004)) -#define VICRawIntr (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x008)) -#define VICIntSelect (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x00C)) -#define VICIntEnable (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x010)) -#define VICIntEnClr (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x014)) -#define VICSoftInt (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x018)) -#define VICSoftIntClr (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x01C)) -#define VICProtection (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x020)) -#define VICSWPrioMask (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x024)) - -#define VICVectAddr0 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x100)) -#define VICVectAddr1 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x104)) -#define VICVectAddr2 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x108)) -#define VICVectAddr3 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x10C)) -#define VICVectAddr4 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x110)) -#define VICVectAddr5 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x114)) -#define VICVectAddr6 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x118)) -#define VICVectAddr7 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x11C)) -#define VICVectAddr8 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x120)) -#define VICVectAddr9 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x124)) -#define VICVectAddr10 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x128)) -#define VICVectAddr11 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x12C)) -#define VICVectAddr12 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x130)) -#define VICVectAddr13 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x134)) -#define VICVectAddr14 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x138)) -#define VICVectAddr15 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x13C)) -#define VICVectAddr16 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x140)) -#define VICVectAddr17 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x144)) -#define VICVectAddr18 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x148)) -#define VICVectAddr19 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x14C)) -#define VICVectAddr20 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x150)) -#define VICVectAddr21 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x154)) -#define VICVectAddr22 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x158)) -#define VICVectAddr23 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x15C)) -#define VICVectAddr24 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x160)) -#define VICVectAddr25 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x164)) -#define VICVectAddr26 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x168)) -#define VICVectAddr27 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x16C)) -#define VICVectAddr28 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x170)) -#define VICVectAddr29 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x174)) -#define VICVectAddr30 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x178)) -#define VICVectAddr31 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x17C)) - -/* The name convention below is from previous LPC2000 family MCUs, in LPC230x, -these registers are known as "VICVectPriority(x)". */ -#define VICVectCntl0 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x200)) -#define VICVectCntl1 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x204)) -#define VICVectCntl2 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x208)) -#define VICVectCntl3 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x20C)) -#define VICVectCntl4 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x210)) -#define VICVectCntl5 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x214)) -#define VICVectCntl6 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x218)) -#define VICVectCntl7 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x21C)) -#define VICVectCntl8 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x220)) -#define VICVectCntl9 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x224)) -#define VICVectCntl10 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x228)) -#define VICVectCntl11 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x22C)) -#define VICVectCntl12 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x230)) -#define VICVectCntl13 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x234)) -#define VICVectCntl14 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x238)) -#define VICVectCntl15 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x23C)) -#define VICVectCntl16 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x240)) -#define VICVectCntl17 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x244)) -#define VICVectCntl18 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x248)) -#define VICVectCntl19 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x24C)) -#define VICVectCntl20 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x250)) -#define VICVectCntl21 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x254)) -#define VICVectCntl22 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x258)) -#define VICVectCntl23 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x25C)) -#define VICVectCntl24 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x260)) -#define VICVectCntl25 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x264)) -#define VICVectCntl26 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x268)) -#define VICVectCntl27 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x26C)) -#define VICVectCntl28 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x270)) -#define VICVectCntl29 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x274)) -#define VICVectCntl30 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x278)) -#define VICVectCntl31 (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x27C)) - -#define VICVectAddr (*(volatile unsigned int *)(VIC_BASE_ADDR + 0xF00)) - - -/* Pin Connect Block */ -#define PINSEL_BASE_ADDR 0xE002C000 -#define PINSEL0 (*(volatile unsigned int *)(PINSEL_BASE_ADDR + 0x00)) -#define PINSEL1 (*(volatile unsigned int *)(PINSEL_BASE_ADDR + 0x04)) -#define PINSEL2 (*(volatile unsigned int *)(PINSEL_BASE_ADDR + 0x08)) -#define PINSEL3 (*(volatile unsigned int *)(PINSEL_BASE_ADDR + 0x0C)) -#define PINSEL4 (*(volatile unsigned int *)(PINSEL_BASE_ADDR + 0x10)) -#define PINSEL5 (*(volatile unsigned int *)(PINSEL_BASE_ADDR + 0x14)) -#define PINSEL6 (*(volatile unsigned int *)(PINSEL_BASE_ADDR + 0x18)) -#define PINSEL7 (*(volatile unsigned int *)(PINSEL_BASE_ADDR + 0x1C)) -#define PINSEL8 (*(volatile unsigned int *)(PINSEL_BASE_ADDR + 0x20)) -#define PINSEL9 (*(volatile unsigned int *)(PINSEL_BASE_ADDR + 0x24)) -#define PINSEL10 (*(volatile unsigned int *)(PINSEL_BASE_ADDR + 0x28)) - -#define PINMODE0 (*(volatile unsigned int *)(PINSEL_BASE_ADDR + 0x40)) -#define PINMODE1 (*(volatile unsigned int *)(PINSEL_BASE_ADDR + 0x44)) -#define PINMODE2 (*(volatile unsigned int *)(PINSEL_BASE_ADDR + 0x48)) -#define PINMODE3 (*(volatile unsigned int *)(PINSEL_BASE_ADDR + 0x4C)) -#define PINMODE4 (*(volatile unsigned int *)(PINSEL_BASE_ADDR + 0x50)) -#define PINMODE5 (*(volatile unsigned int *)(PINSEL_BASE_ADDR + 0x54)) -#define PINMODE6 (*(volatile unsigned int *)(PINSEL_BASE_ADDR + 0x58)) -#define PINMODE7 (*(volatile unsigned int *)(PINSEL_BASE_ADDR + 0x5C)) -#define PINMODE8 (*(volatile unsigned int *)(PINSEL_BASE_ADDR + 0x60)) -#define PINMODE9 (*(volatile unsigned int *)(PINSEL_BASE_ADDR + 0x64)) - -/* General Purpose Input/Output (GPIO) */ -#define GPIO_BASE_ADDR 0xE0028000 -#define IOPIN0 (*(volatile unsigned int *)(GPIO_BASE_ADDR + 0x00)) -#define IOSET0 (*(volatile unsigned int *)(GPIO_BASE_ADDR + 0x04)) -#define IODIR0 (*(volatile unsigned int *)(GPIO_BASE_ADDR + 0x08)) -#define IOCLR0 (*(volatile unsigned int *)(GPIO_BASE_ADDR + 0x0C)) -#define IOPIN1 (*(volatile unsigned int *)(GPIO_BASE_ADDR + 0x10)) -#define IOSET1 (*(volatile unsigned int *)(GPIO_BASE_ADDR + 0x14)) -#define IODIR1 (*(volatile unsigned int *)(GPIO_BASE_ADDR + 0x18)) -#define IOCLR1 (*(volatile unsigned int *)(GPIO_BASE_ADDR + 0x1C)) - -/* GPIO Interrupt Registers */ -#define IO0_INT_EN_R (*(volatile unsigned int *)(GPIO_BASE_ADDR + 0x90)) -#define IO0_INT_EN_F (*(volatile unsigned int *)(GPIO_BASE_ADDR + 0x94)) -#define IO0_INT_STAT_R (*(volatile unsigned int *)(GPIO_BASE_ADDR + 0x84)) -#define IO0_INT_STAT_F (*(volatile unsigned int *)(GPIO_BASE_ADDR + 0x88)) -#define IO0_INT_CLR (*(volatile unsigned int *)(GPIO_BASE_ADDR + 0x8C)) - -#define IO2_INT_EN_R (*(volatile unsigned int *)(GPIO_BASE_ADDR + 0xB0)) -#define IO2_INT_EN_F (*(volatile unsigned int *)(GPIO_BASE_ADDR + 0xB4)) -#define IO2_INT_STAT_R (*(volatile unsigned int *)(GPIO_BASE_ADDR + 0xA4)) -#define IO2_INT_STAT_F (*(volatile unsigned int *)(GPIO_BASE_ADDR + 0xA8)) -#define IO2_INT_CLR (*(volatile unsigned int *)(GPIO_BASE_ADDR + 0xAC)) - -#define IO_INT_STAT (*(volatile unsigned int *)(GPIO_BASE_ADDR + 0x80)) - -#define PARTCFG_BASE_ADDR 0x3FFF8000 -#define PARTCFG (*(volatile unsigned int *)(PARTCFG_BASE_ADDR + 0x00)) - -/* Fast I/O setup */ -#define FIO_BASE_ADDR 0x3FFFC000 -#define FIO0DIR (*(volatile unsigned int *)(FIO_BASE_ADDR + 0x00)) -#define FIO0MASK (*(volatile unsigned int *)(FIO_BASE_ADDR + 0x10)) -#define FIO0PIN (*(volatile unsigned int *)(FIO_BASE_ADDR + 0x14)) -#define FIO0SET (*(volatile unsigned int *)(FIO_BASE_ADDR + 0x18)) -#define FIO0CLR (*(volatile unsigned int *)(FIO_BASE_ADDR + 0x1C)) - -#define FIO1DIR (*(volatile unsigned int *)(FIO_BASE_ADDR + 0x20)) -#define FIO1MASK (*(volatile unsigned int *)(FIO_BASE_ADDR + 0x30)) -#define FIO1PIN (*(volatile unsigned int *)(FIO_BASE_ADDR + 0x34)) -#define FIO1SET (*(volatile unsigned int *)(FIO_BASE_ADDR + 0x38)) -#define FIO1CLR (*(volatile unsigned int *)(FIO_BASE_ADDR + 0x3C)) - -#define FIO2DIR (*(volatile unsigned int *)(FIO_BASE_ADDR + 0x40)) -#define FIO2MASK (*(volatile unsigned int *)(FIO_BASE_ADDR + 0x50)) -#define FIO2PIN (*(volatile unsigned int *)(FIO_BASE_ADDR + 0x54)) -#define FIO2SET (*(volatile unsigned int *)(FIO_BASE_ADDR + 0x58)) -#define FIO2CLR (*(volatile unsigned int *)(FIO_BASE_ADDR + 0x5C)) - -#define FIO3DIR (*(volatile unsigned int *)(FIO_BASE_ADDR + 0x60)) -#define FIO3MASK (*(volatile unsigned int *)(FIO_BASE_ADDR + 0x70)) -#define FIO3PIN (*(volatile unsigned int *)(FIO_BASE_ADDR + 0x74)) -#define FIO3SET (*(volatile unsigned int *)(FIO_BASE_ADDR + 0x78)) -#define FIO3CLR (*(volatile unsigned int *)(FIO_BASE_ADDR + 0x7C)) - -#define FIO4DIR (*(volatile unsigned int *)(FIO_BASE_ADDR + 0x80)) -#define FIO4MASK (*(volatile unsigned int *)(FIO_BASE_ADDR + 0x90)) -#define FIO4PIN (*(volatile unsigned int *)(FIO_BASE_ADDR + 0x94)) -#define FIO4SET (*(volatile unsigned int *)(FIO_BASE_ADDR + 0x98)) -#define FIO4CLR (*(volatile unsigned int *)(FIO_BASE_ADDR + 0x9C)) - -/* FIOs can be accessed through WORD, HALF-WORD or BYTE. */ -#define FIO0DIR0 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x01)) -#define FIO1DIR0 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x21)) -#define FIO2DIR0 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x41)) -#define FIO3DIR0 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x61)) -#define FIO4DIR0 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x81)) - -#define FIO0DIR1 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x02)) -#define FIO1DIR1 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x22)) -#define FIO2DIR1 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x42)) -#define FIO3DIR1 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x62)) -#define FIO4DIR1 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x82)) - -#define FIO0DIR2 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x03)) -#define FIO1DIR2 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x23)) -#define FIO2DIR2 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x43)) -#define FIO3DIR2 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x63)) -#define FIO4DIR2 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x83)) - -#define FIO0DIR3 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x04)) -#define FIO1DIR3 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x24)) -#define FIO2DIR3 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x44)) -#define FIO3DIR3 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x64)) -#define FIO4DIR3 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x84)) - -#define FIO0DIRL (*(volatile unsigned short *)(FIO_BASE_ADDR + 0x00)) -#define FIO1DIRL (*(volatile unsigned short *)(FIO_BASE_ADDR + 0x20)) -#define FIO2DIRL (*(volatile unsigned short *)(FIO_BASE_ADDR + 0x40)) -#define FIO3DIRL (*(volatile unsigned short *)(FIO_BASE_ADDR + 0x60)) -#define FIO4DIRL (*(volatile unsigned short *)(FIO_BASE_ADDR + 0x80)) - -#define FIO0DIRU (*(volatile unsigned short *)(FIO_BASE_ADDR + 0x02)) -#define FIO1DIRU (*(volatile unsigned short *)(FIO_BASE_ADDR + 0x22)) -#define FIO2DIRU (*(volatile unsigned short *)(FIO_BASE_ADDR + 0x42)) -#define FIO3DIRU (*(volatile unsigned short *)(FIO_BASE_ADDR + 0x62)) -#define FIO4DIRU (*(volatile unsigned short *)(FIO_BASE_ADDR + 0x82)) - -#define FIO0MASK0 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x10)) -#define FIO1MASK0 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x30)) -#define FIO2MASK0 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x50)) -#define FIO3MASK0 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x70)) -#define FIO4MASK0 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x90)) - -#define FIO0MASK1 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x11)) -#define FIO1MASK1 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x21)) -#define FIO2MASK1 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x51)) -#define FIO3MASK1 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x71)) -#define FIO4MASK1 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x91)) - -#define FIO0MASK2 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x12)) -#define FIO1MASK2 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x32)) -#define FIO2MASK2 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x52)) -#define FIO3MASK2 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x72)) -#define FIO4MASK2 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x92)) - -#define FIO0MASK3 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x13)) -#define FIO1MASK3 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x33)) -#define FIO2MASK3 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x53)) -#define FIO3MASK3 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x73)) -#define FIO4MASK3 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x93)) - -#define FIO0MASKL (*(volatile unsigned short *)(FIO_BASE_ADDR + 0x10)) -#define FIO1MASKL (*(volatile unsigned short *)(FIO_BASE_ADDR + 0x30)) -#define FIO2MASKL (*(volatile unsigned short *)(FIO_BASE_ADDR + 0x50)) -#define FIO3MASKL (*(volatile unsigned short *)(FIO_BASE_ADDR + 0x70)) -#define FIO4MASKL (*(volatile unsigned short *)(FIO_BASE_ADDR + 0x90)) - -#define FIO0MASKU (*(volatile unsigned short *)(FIO_BASE_ADDR + 0x12)) -#define FIO1MASKU (*(volatile unsigned short *)(FIO_BASE_ADDR + 0x32)) -#define FIO2MASKU (*(volatile unsigned short *)(FIO_BASE_ADDR + 0x52)) -#define FIO3MASKU (*(volatile unsigned short *)(FIO_BASE_ADDR + 0x72)) -#define FIO4MASKU (*(volatile unsigned short *)(FIO_BASE_ADDR + 0x92)) - -#define FIO0PIN0 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x14)) -#define FIO1PIN0 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x34)) -#define FIO2PIN0 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x54)) -#define FIO3PIN0 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x74)) -#define FIO4PIN0 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x94)) - -#define FIO0PIN1 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x15)) -#define FIO1PIN1 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x25)) -#define FIO2PIN1 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x55)) -#define FIO3PIN1 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x75)) -#define FIO4PIN1 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x95)) - -#define FIO0PIN2 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x16)) -#define FIO1PIN2 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x36)) -#define FIO2PIN2 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x56)) -#define FIO3PIN2 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x76)) -#define FIO4PIN2 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x96)) - -#define FIO0PIN3 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x17)) -#define FIO1PIN3 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x37)) -#define FIO2PIN3 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x57)) -#define FIO3PIN3 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x77)) -#define FIO4PIN3 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x97)) - -#define FIO0PINL (*(volatile unsigned short *)(FIO_BASE_ADDR + 0x14)) -#define FIO1PINL (*(volatile unsigned short *)(FIO_BASE_ADDR + 0x34)) -#define FIO2PINL (*(volatile unsigned short *)(FIO_BASE_ADDR + 0x54)) -#define FIO3PINL (*(volatile unsigned short *)(FIO_BASE_ADDR + 0x74)) -#define FIO4PINL (*(volatile unsigned short *)(FIO_BASE_ADDR + 0x94)) - -#define FIO0PINU (*(volatile unsigned short *)(FIO_BASE_ADDR + 0x16)) -#define FIO1PINU (*(volatile unsigned short *)(FIO_BASE_ADDR + 0x36)) -#define FIO2PINU (*(volatile unsigned short *)(FIO_BASE_ADDR + 0x56)) -#define FIO3PINU (*(volatile unsigned short *)(FIO_BASE_ADDR + 0x76)) -#define FIO4PINU (*(volatile unsigned short *)(FIO_BASE_ADDR + 0x96)) - -#define FIO0SET0 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x18)) -#define FIO1SET0 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x38)) -#define FIO2SET0 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x58)) -#define FIO3SET0 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x78)) -#define FIO4SET0 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x98)) - -#define FIO0SET1 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x19)) -#define FIO1SET1 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x29)) -#define FIO2SET1 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x59)) -#define FIO3SET1 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x79)) -#define FIO4SET1 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x99)) - -#define FIO0SET2 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x1A)) -#define FIO1SET2 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x3A)) -#define FIO2SET2 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x5A)) -#define FIO3SET2 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x7A)) -#define FIO4SET2 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x9A)) - -#define FIO0SET3 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x1B)) -#define FIO1SET3 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x3B)) -#define FIO2SET3 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x5B)) -#define FIO3SET3 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x7B)) -#define FIO4SET3 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x9B)) - -#define FIO0SETL (*(volatile unsigned short *)(FIO_BASE_ADDR + 0x18)) -#define FIO1SETL (*(volatile unsigned short *)(FIO_BASE_ADDR + 0x38)) -#define FIO2SETL (*(volatile unsigned short *)(FIO_BASE_ADDR + 0x58)) -#define FIO3SETL (*(volatile unsigned short *)(FIO_BASE_ADDR + 0x78)) -#define FIO4SETL (*(volatile unsigned short *)(FIO_BASE_ADDR + 0x98)) - -#define FIO0SETU (*(volatile unsigned short *)(FIO_BASE_ADDR + 0x1A)) -#define FIO1SETU (*(volatile unsigned short *)(FIO_BASE_ADDR + 0x3A)) -#define FIO2SETU (*(volatile unsigned short *)(FIO_BASE_ADDR + 0x5A)) -#define FIO3SETU (*(volatile unsigned short *)(FIO_BASE_ADDR + 0x7A)) -#define FIO4SETU (*(volatile unsigned short *)(FIO_BASE_ADDR + 0x9A)) - -#define FIO0CLR0 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x1C)) -#define FIO1CLR0 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x3C)) -#define FIO2CLR0 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x5C)) -#define FIO3CLR0 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x7C)) -#define FIO4CLR0 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x9C)) - -#define FIO0CLR1 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x1D)) -#define FIO1CLR1 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x2D)) -#define FIO2CLR1 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x5D)) -#define FIO3CLR1 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x7D)) -#define FIO4CLR1 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x9D)) - -#define FIO0CLR2 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x1E)) -#define FIO1CLR2 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x3E)) -#define FIO2CLR2 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x5E)) -#define FIO3CLR2 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x7E)) -#define FIO4CLR2 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x9E)) - -#define FIO0CLR3 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x1F)) -#define FIO1CLR3 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x3F)) -#define FIO2CLR3 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x5F)) -#define FIO3CLR3 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x7F)) -#define FIO4CLR3 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x9F)) - -#define FIO0CLRL (*(volatile unsigned short *)(FIO_BASE_ADDR + 0x1C)) -#define FIO1CLRL (*(volatile unsigned short *)(FIO_BASE_ADDR + 0x3C)) -#define FIO2CLRL (*(volatile unsigned short *)(FIO_BASE_ADDR + 0x5C)) -#define FIO3CLRL (*(volatile unsigned short *)(FIO_BASE_ADDR + 0x7C)) -#define FIO4CLRL (*(volatile unsigned short *)(FIO_BASE_ADDR + 0x9C)) - -#define FIO0CLRU (*(volatile unsigned short *)(FIO_BASE_ADDR + 0x1E)) -#define FIO1CLRU (*(volatile unsigned short *)(FIO_BASE_ADDR + 0x3E)) -#define FIO2CLRU (*(volatile unsigned short *)(FIO_BASE_ADDR + 0x5E)) -#define FIO3CLRU (*(volatile unsigned short *)(FIO_BASE_ADDR + 0x7E)) -#define FIO4CLRU (*(volatile unsigned short *)(FIO_BASE_ADDR + 0x9E)) - - -/* System Control Block(SCB) modules include Memory Accelerator Module, -Phase Locked Loop, VPB divider, Power Control, External Interrupt, -Reset, and Code Security/Debugging */ -#define SCB_BASE_ADDR 0xE01FC000 - -/* Memory Accelerator Module (MAM) */ -#define MAMCR (*(volatile unsigned int *)(SCB_BASE_ADDR + 0x000)) -#define MAMTIM (*(volatile unsigned int *)(SCB_BASE_ADDR + 0x004)) -#define MEMMAP (*(volatile unsigned int *)(SCB_BASE_ADDR + 0x040)) - -/* Phase Locked Loop (PLL) */ -#define PLLCON (*(volatile unsigned int *)(SCB_BASE_ADDR + 0x080)) -#define PLLCFG (*(volatile unsigned int *)(SCB_BASE_ADDR + 0x084)) -#define PLLSTAT (*(volatile unsigned int *)(SCB_BASE_ADDR + 0x088)) -#define PLLFEED (*(volatile unsigned int *)(SCB_BASE_ADDR + 0x08C)) - -/* Power Control */ -#define PCON (*(volatile unsigned int *)(SCB_BASE_ADDR + 0x0C0)) -#define PCONP (*(volatile unsigned int *)(SCB_BASE_ADDR + 0x0C4)) - -/* Clock Divider */ -#define APBDIV (*(volatile unsigned int *)(SCB_BASE_ADDR + 0x100)) -#define CCLKCFG (*(volatile unsigned int *)(SCB_BASE_ADDR + 0x104)) -#define USBCLKCFG (*(volatile unsigned int *)(SCB_BASE_ADDR + 0x108)) -#define CLKSRCSEL (*(volatile unsigned int *)(SCB_BASE_ADDR + 0x10C)) -#define PCLKSEL0 (*(volatile unsigned int *)(SCB_BASE_ADDR + 0x1A8)) -#define PCLKSEL1 (*(volatile unsigned int *)(SCB_BASE_ADDR + 0x1AC)) - -/* External Interrupts */ -#define EXTINT (*(volatile unsigned int *)(SCB_BASE_ADDR + 0x140)) -#define INTWAKE (*(volatile unsigned int *)(SCB_BASE_ADDR + 0x144)) -#define EXTMODE (*(volatile unsigned int *)(SCB_BASE_ADDR + 0x148)) -#define EXTPOLAR (*(volatile unsigned int *)(SCB_BASE_ADDR + 0x14C)) - -/* Reset, reset source identification */ -#define RSIR (*(volatile unsigned int *)(SCB_BASE_ADDR + 0x180)) - -/* RSID, code security protection */ -#define CSPR (*(volatile unsigned int *)(SCB_BASE_ADDR + 0x184)) - -/* AHB configuration */ -#define AHBCFG1 (*(volatile unsigned int *)(SCB_BASE_ADDR + 0x188)) -#define AHBCFG2 (*(volatile unsigned int *)(SCB_BASE_ADDR + 0x18C)) - -/* System Controls and Status */ -#define SCS (*(volatile unsigned int *)(SCB_BASE_ADDR + 0x1A0)) - -/*MPMC(EMC) registers*/ -#define STATIC_MEM0_BASE 0x80000000 -#define STATIC_MEM1_BASE 0x81000000 -#define STATIC_MEM2_BASE 0x82000000 -#define STATIC_MEM3_BASE 0x83000000 - -#define DYNAMIC_MEM0_BASE 0xA0000000 -#define DYNAMIC_MEM1_BASE 0xB0000000 -#define DYNAMIC_MEM2_BASE 0xC0000000 -#define DYNAMIC_MEM3_BASE 0xD0000000 - -/* External Memory Controller (EMC) */ -#define EMC_BASE_ADDR 0xFFE08000 -#define EMC_CTRL (*(volatile unsigned int *)(EMC_BASE_ADDR + 0x000)) -#define EMC_STAT (*(volatile unsigned int *)(EMC_BASE_ADDR + 0x004)) -#define EMC_CONFIG (*(volatile unsigned int *)(EMC_BASE_ADDR + 0x008)) - -/* Dynamic RAM access registers */ -#define EMC_DYN_CTRL (*(volatile unsigned int *)(EMC_BASE_ADDR + 0x020)) -#define EMC_DYN_RFSH (*(volatile unsigned int *)(EMC_BASE_ADDR + 0x024)) -#define EMC_DYN_RD_CFG (*(volatile unsigned int *)(EMC_BASE_ADDR + 0x028)) -#define EMC_DYN_RP (*(volatile unsigned int *)(EMC_BASE_ADDR + 0x030)) -#define EMC_DYN_RAS (*(volatile unsigned int *)(EMC_BASE_ADDR + 0x034)) -#define EMC_DYN_SREX (*(volatile unsigned int *)(EMC_BASE_ADDR + 0x038)) -#define EMC_DYN_APR (*(volatile unsigned int *)(EMC_BASE_ADDR + 0x03C)) -#define EMC_DYN_DAL (*(volatile unsigned int *)(EMC_BASE_ADDR + 0x040)) -#define EMC_DYN_WR (*(volatile unsigned int *)(EMC_BASE_ADDR + 0x044)) -#define EMC_DYN_RC (*(volatile unsigned int *)(EMC_BASE_ADDR + 0x048)) -#define EMC_DYN_RFC (*(volatile unsigned int *)(EMC_BASE_ADDR + 0x04C)) -#define EMC_DYN_XSR (*(volatile unsigned int *)(EMC_BASE_ADDR + 0x050)) -#define EMC_DYN_RRD (*(volatile unsigned int *)(EMC_BASE_ADDR + 0x054)) -#define EMC_DYN_MRD (*(volatile unsigned int *)(EMC_BASE_ADDR + 0x058)) - -#define EMC_DYN_CFG0 (*(volatile unsigned int *)(EMC_BASE_ADDR + 0x100)) -#define EMC_DYN_RASCAS0 (*(volatile unsigned int *)(EMC_BASE_ADDR + 0x104)) -#define EMC_DYN_CFG1 (*(volatile unsigned int *)(EMC_BASE_ADDR + 0x140)) -#define EMC_DYN_RASCAS1 (*(volatile unsigned int *)(EMC_BASE_ADDR + 0x144)) -#define EMC_DYN_CFG2 (*(volatile unsigned int *)(EMC_BASE_ADDR + 0x160)) -#define EMC_DYN_RASCAS2 (*(volatile unsigned int *)(EMC_BASE_ADDR + 0x164)) -#define EMC_DYN_CFG3 (*(volatile unsigned int *)(EMC_BASE_ADDR + 0x180)) -#define EMC_DYN_RASCAS3 (*(volatile unsigned int *)(EMC_BASE_ADDR + 0x184)) - -/* static RAM access registers */ -#define EMC_STA_CFG0 (*(volatile unsigned int *)(EMC_BASE_ADDR + 0x200)) -#define EMC_STA_WAITWEN0 (*(volatile unsigned int *)(EMC_BASE_ADDR + 0x204)) -#define EMC_STA_WAITOEN0 (*(volatile unsigned int *)(EMC_BASE_ADDR + 0x208)) -#define EMC_STA_WAITRD0 (*(volatile unsigned int *)(EMC_BASE_ADDR + 0x20C)) -#define EMC_STA_WAITPAGE0 (*(volatile unsigned int *)(EMC_BASE_ADDR + 0x210)) -#define EMC_STA_WAITWR0 (*(volatile unsigned int *)(EMC_BASE_ADDR + 0x214)) -#define EMC_STA_WAITTURN0 (*(volatile unsigned int *)(EMC_BASE_ADDR + 0x218)) - -#define EMC_STA_CFG1 (*(volatile unsigned int *)(EMC_BASE_ADDR + 0x220)) -#define EMC_STA_WAITWEN1 (*(volatile unsigned int *)(EMC_BASE_ADDR + 0x224)) -#define EMC_STA_WAITOEN1 (*(volatile unsigned int *)(EMC_BASE_ADDR + 0x228)) -#define EMC_STA_WAITRD1 (*(volatile unsigned int *)(EMC_BASE_ADDR + 0x22C)) -#define EMC_STA_WAITPAGE1 (*(volatile unsigned int *)(EMC_BASE_ADDR + 0x230)) -#define EMC_STA_WAITWR1 (*(volatile unsigned int *)(EMC_BASE_ADDR + 0x234)) -#define EMC_STA_WAITTURN1 (*(volatile unsigned int *)(EMC_BASE_ADDR + 0x238)) - -#define EMC_STA_CFG2 (*(volatile unsigned int *)(EMC_BASE_ADDR + 0x240)) -#define EMC_STA_WAITWEN2 (*(volatile unsigned int *)(EMC_BASE_ADDR + 0x244)) -#define EMC_STA_WAITOEN2 (*(volatile unsigned int *)(EMC_BASE_ADDR + 0x248)) -#define EMC_STA_WAITRD2 (*(volatile unsigned int *)(EMC_BASE_ADDR + 0x24C)) -#define EMC_STA_WAITPAGE2 (*(volatile unsigned int *)(EMC_BASE_ADDR + 0x250)) -#define EMC_STA_WAITWR2 (*(volatile unsigned int *)(EMC_BASE_ADDR + 0x254)) -#define EMC_STA_WAITTURN2 (*(volatile unsigned int *)(EMC_BASE_ADDR + 0x258)) - -#define EMC_STA_CFG3 (*(volatile unsigned int *)(EMC_BASE_ADDR + 0x260)) -#define EMC_STA_WAITWEN3 (*(volatile unsigned int *)(EMC_BASE_ADDR + 0x264)) -#define EMC_STA_WAITOEN3 (*(volatile unsigned int *)(EMC_BASE_ADDR + 0x268)) -#define EMC_STA_WAITRD3 (*(volatile unsigned int *)(EMC_BASE_ADDR + 0x26C)) -#define EMC_STA_WAITPAGE3 (*(volatile unsigned int *)(EMC_BASE_ADDR + 0x270)) -#define EMC_STA_WAITWR3 (*(volatile unsigned int *)(EMC_BASE_ADDR + 0x274)) -#define EMC_STA_WAITTURN3 (*(volatile unsigned int *)(EMC_BASE_ADDR + 0x278)) - -#define EMC_STA_EXT_WAIT (*(volatile unsigned int *)(EMC_BASE_ADDR + 0x880)) - - -/* Timer 0 */ -#define TMR0_BASE_ADDR 0xE0004000 -#define T0IR (*(volatile unsigned int *)(TMR0_BASE_ADDR + 0x00)) -#define T0TCR (*(volatile unsigned int *)(TMR0_BASE_ADDR + 0x04)) -#define T0TC (*(volatile unsigned int *)(TMR0_BASE_ADDR + 0x08)) -#define T0PR (*(volatile unsigned int *)(TMR0_BASE_ADDR + 0x0C)) -#define T0PC (*(volatile unsigned int *)(TMR0_BASE_ADDR + 0x10)) -#define T0MCR (*(volatile unsigned int *)(TMR0_BASE_ADDR + 0x14)) -#define T0MR0 (*(volatile unsigned int *)(TMR0_BASE_ADDR + 0x18)) -#define T0MR1 (*(volatile unsigned int *)(TMR0_BASE_ADDR + 0x1C)) -#define T0MR2 (*(volatile unsigned int *)(TMR0_BASE_ADDR + 0x20)) -#define T0MR3 (*(volatile unsigned int *)(TMR0_BASE_ADDR + 0x24)) -#define T0CCR (*(volatile unsigned int *)(TMR0_BASE_ADDR + 0x28)) -#define T0CR0 (*(volatile unsigned int *)(TMR0_BASE_ADDR + 0x2C)) -#define T0CR1 (*(volatile unsigned int *)(TMR0_BASE_ADDR + 0x30)) -#define T0CR2 (*(volatile unsigned int *)(TMR0_BASE_ADDR + 0x34)) -#define T0CR3 (*(volatile unsigned int *)(TMR0_BASE_ADDR + 0x38)) -#define T0EMR (*(volatile unsigned int *)(TMR0_BASE_ADDR + 0x3C)) -#define T0CTCR (*(volatile unsigned int *)(TMR0_BASE_ADDR + 0x70)) - -/* Timer 1 */ -#define TMR1_BASE_ADDR 0xE0008000 -#define T1IR (*(volatile unsigned int *)(TMR1_BASE_ADDR + 0x00)) -#define T1TCR (*(volatile unsigned int *)(TMR1_BASE_ADDR + 0x04)) -#define T1TC (*(volatile unsigned int *)(TMR1_BASE_ADDR + 0x08)) -#define T1PR (*(volatile unsigned int *)(TMR1_BASE_ADDR + 0x0C)) -#define T1PC (*(volatile unsigned int *)(TMR1_BASE_ADDR + 0x10)) -#define T1MCR (*(volatile unsigned int *)(TMR1_BASE_ADDR + 0x14)) -#define T1MR0 (*(volatile unsigned int *)(TMR1_BASE_ADDR + 0x18)) -#define T1MR1 (*(volatile unsigned int *)(TMR1_BASE_ADDR + 0x1C)) -#define T1MR2 (*(volatile unsigned int *)(TMR1_BASE_ADDR + 0x20)) -#define T1MR3 (*(volatile unsigned int *)(TMR1_BASE_ADDR + 0x24)) -#define T1CCR (*(volatile unsigned int *)(TMR1_BASE_ADDR + 0x28)) -#define T1CR0 (*(volatile unsigned int *)(TMR1_BASE_ADDR + 0x2C)) -#define T1CR1 (*(volatile unsigned int *)(TMR1_BASE_ADDR + 0x30)) -#define T1CR2 (*(volatile unsigned int *)(TMR1_BASE_ADDR + 0x34)) -#define T1CR3 (*(volatile unsigned int *)(TMR1_BASE_ADDR + 0x38)) -#define T1EMR (*(volatile unsigned int *)(TMR1_BASE_ADDR + 0x3C)) -#define T1CTCR (*(volatile unsigned int *)(TMR1_BASE_ADDR + 0x70)) - -/* Timer 2 */ -#define TMR2_BASE_ADDR 0xE0070000 -#define T2IR (*(volatile unsigned int *)(TMR2_BASE_ADDR + 0x00)) -#define T2TCR (*(volatile unsigned int *)(TMR2_BASE_ADDR + 0x04)) -#define T2TC (*(volatile unsigned int *)(TMR2_BASE_ADDR + 0x08)) -#define T2PR (*(volatile unsigned int *)(TMR2_BASE_ADDR + 0x0C)) -#define T2PC (*(volatile unsigned int *)(TMR2_BASE_ADDR + 0x10)) -#define T2MCR (*(volatile unsigned int *)(TMR2_BASE_ADDR + 0x14)) -#define T2MR0 (*(volatile unsigned int *)(TMR2_BASE_ADDR + 0x18)) -#define T2MR1 (*(volatile unsigned int *)(TMR2_BASE_ADDR + 0x1C)) -#define T2MR2 (*(volatile unsigned int *)(TMR2_BASE_ADDR + 0x20)) -#define T2MR3 (*(volatile unsigned int *)(TMR2_BASE_ADDR + 0x24)) -#define T2CCR (*(volatile unsigned int *)(TMR2_BASE_ADDR + 0x28)) -#define T2CR0 (*(volatile unsigned int *)(TMR2_BASE_ADDR + 0x2C)) -#define T2CR1 (*(volatile unsigned int *)(TMR2_BASE_ADDR + 0x30)) -#define T2CR2 (*(volatile unsigned int *)(TMR2_BASE_ADDR + 0x34)) -#define T2CR3 (*(volatile unsigned int *)(TMR2_BASE_ADDR + 0x38)) -#define T2EMR (*(volatile unsigned int *)(TMR2_BASE_ADDR + 0x3C)) -#define T2CTCR (*(volatile unsigned int *)(TMR2_BASE_ADDR + 0x70)) - -/* Timer 3 */ -#define TMR3_BASE_ADDR 0xE0074000 -#define T3IR (*(volatile unsigned int *)(TMR3_BASE_ADDR + 0x00)) -#define T3TCR (*(volatile unsigned int *)(TMR3_BASE_ADDR + 0x04)) -#define T3TC (*(volatile unsigned int *)(TMR3_BASE_ADDR + 0x08)) -#define T3PR (*(volatile unsigned int *)(TMR3_BASE_ADDR + 0x0C)) -#define T3PC (*(volatile unsigned int *)(TMR3_BASE_ADDR + 0x10)) -#define T3MCR (*(volatile unsigned int *)(TMR3_BASE_ADDR + 0x14)) -#define T3MR0 (*(volatile unsigned int *)(TMR3_BASE_ADDR + 0x18)) -#define T3MR1 (*(volatile unsigned int *)(TMR3_BASE_ADDR + 0x1C)) -#define T3MR2 (*(volatile unsigned int *)(TMR3_BASE_ADDR + 0x20)) -#define T3MR3 (*(volatile unsigned int *)(TMR3_BASE_ADDR + 0x24)) -#define T3CCR (*(volatile unsigned int *)(TMR3_BASE_ADDR + 0x28)) -#define T3CR0 (*(volatile unsigned int *)(TMR3_BASE_ADDR + 0x2C)) -#define T3CR1 (*(volatile unsigned int *)(TMR3_BASE_ADDR + 0x30)) -#define T3CR2 (*(volatile unsigned int *)(TMR3_BASE_ADDR + 0x34)) -#define T3CR3 (*(volatile unsigned int *)(TMR3_BASE_ADDR + 0x38)) -#define T3EMR (*(volatile unsigned int *)(TMR3_BASE_ADDR + 0x3C)) -#define T3CTCR (*(volatile unsigned int *)(TMR3_BASE_ADDR + 0x70)) - - -/* Pulse Width Modulator (PWM) */ -#define PWM0_BASE_ADDR 0xE0014000 -#define PWM0IR (*(volatile unsigned int *)(PWM0_BASE_ADDR + 0x00)) -#define PWM0TCR (*(volatile unsigned int *)(PWM0_BASE_ADDR + 0x04)) -#define PWM0TC (*(volatile unsigned int *)(PWM0_BASE_ADDR + 0x08)) -#define PWM0PR (*(volatile unsigned int *)(PWM0_BASE_ADDR + 0x0C)) -#define PWM0PC (*(volatile unsigned int *)(PWM0_BASE_ADDR + 0x10)) -#define PWM0MCR (*(volatile unsigned int *)(PWM0_BASE_ADDR + 0x14)) -#define PWM0MR0 (*(volatile unsigned int *)(PWM0_BASE_ADDR + 0x18)) -#define PWM0MR1 (*(volatile unsigned int *)(PWM0_BASE_ADDR + 0x1C)) -#define PWM0MR2 (*(volatile unsigned int *)(PWM0_BASE_ADDR + 0x20)) -#define PWM0MR3 (*(volatile unsigned int *)(PWM0_BASE_ADDR + 0x24)) -#define PWM0CCR (*(volatile unsigned int *)(PWM0_BASE_ADDR + 0x28)) -#define PWM0CR0 (*(volatile unsigned int *)(PWM0_BASE_ADDR + 0x2C)) -#define PWM0CR1 (*(volatile unsigned int *)(PWM0_BASE_ADDR + 0x30)) -#define PWM0CR2 (*(volatile unsigned int *)(PWM0_BASE_ADDR + 0x34)) -#define PWM0CR3 (*(volatile unsigned int *)(PWM0_BASE_ADDR + 0x38)) -#define PWM0EMR (*(volatile unsigned int *)(PWM0_BASE_ADDR + 0x3C)) -#define PWM0MR4 (*(volatile unsigned int *)(PWM0_BASE_ADDR + 0x40)) -#define PWM0MR5 (*(volatile unsigned int *)(PWM0_BASE_ADDR + 0x44)) -#define PWM0MR6 (*(volatile unsigned int *)(PWM0_BASE_ADDR + 0x48)) -#define PWM0PCR (*(volatile unsigned int *)(PWM0_BASE_ADDR + 0x4C)) -#define PWM0LER (*(volatile unsigned int *)(PWM0_BASE_ADDR + 0x50)) -#define PWM0CTCR (*(volatile unsigned int *)(PWM0_BASE_ADDR + 0x70)) - -#define PWM1_BASE_ADDR 0xE0018000 -#define PWM1IR (*(volatile unsigned int *)(PWM1_BASE_ADDR + 0x00)) -#define PWM1TCR (*(volatile unsigned int *)(PWM1_BASE_ADDR + 0x04)) -#define PWM1TC (*(volatile unsigned int *)(PWM1_BASE_ADDR + 0x08)) -#define PWM1PR (*(volatile unsigned int *)(PWM1_BASE_ADDR + 0x0C)) -#define PWM1PC (*(volatile unsigned int *)(PWM1_BASE_ADDR + 0x10)) -#define PWM1MCR (*(volatile unsigned int *)(PWM1_BASE_ADDR + 0x14)) -#define PWM1MR0 (*(volatile unsigned int *)(PWM1_BASE_ADDR + 0x18)) -#define PWM1MR1 (*(volatile unsigned int *)(PWM1_BASE_ADDR + 0x1C)) -#define PWM1MR2 (*(volatile unsigned int *)(PWM1_BASE_ADDR + 0x20)) -#define PWM1MR3 (*(volatile unsigned int *)(PWM1_BASE_ADDR + 0x24)) -#define PWM1CCR (*(volatile unsigned int *)(PWM1_BASE_ADDR + 0x28)) -#define PWM1CR0 (*(volatile unsigned int *)(PWM1_BASE_ADDR + 0x2C)) -#define PWM1CR1 (*(volatile unsigned int *)(PWM1_BASE_ADDR + 0x30)) -#define PWM1CR2 (*(volatile unsigned int *)(PWM1_BASE_ADDR + 0x34)) -#define PWM1CR3 (*(volatile unsigned int *)(PWM1_BASE_ADDR + 0x38)) -#define PWM1EMR (*(volatile unsigned int *)(PWM1_BASE_ADDR + 0x3C)) -#define PWM1MR4 (*(volatile unsigned int *)(PWM1_BASE_ADDR + 0x40)) -#define PWM1MR5 (*(volatile unsigned int *)(PWM1_BASE_ADDR + 0x44)) -#define PWM1MR6 (*(volatile unsigned int *)(PWM1_BASE_ADDR + 0x48)) -#define PWM1PCR (*(volatile unsigned int *)(PWM1_BASE_ADDR + 0x4C)) -#define PWM1LER (*(volatile unsigned int *)(PWM1_BASE_ADDR + 0x50)) -#define PWM1CTCR (*(volatile unsigned int *)(PWM1_BASE_ADDR + 0x70)) - - -/* Universal Asynchronous Receiver Transmitter 0 (UART0) */ -#define UART0_BASE_ADDR 0xE000C000 -#define U0RBR (*(volatile unsigned int *)(UART0_BASE_ADDR + 0x00)) -#define U0THR (*(volatile unsigned int *)(UART0_BASE_ADDR + 0x00)) -#define U0DLL (*(volatile unsigned int *)(UART0_BASE_ADDR + 0x00)) -#define U0DLM (*(volatile unsigned int *)(UART0_BASE_ADDR + 0x04)) -#define U0IER (*(volatile unsigned int *)(UART0_BASE_ADDR + 0x04)) -#define U0IIR (*(volatile unsigned int *)(UART0_BASE_ADDR + 0x08)) -#define U0FCR (*(volatile unsigned int *)(UART0_BASE_ADDR + 0x08)) -#define U0LCR (*(volatile unsigned int *)(UART0_BASE_ADDR + 0x0C)) -#define U0LSR (*(volatile unsigned int *)(UART0_BASE_ADDR + 0x14)) -#define U0SCR (*(volatile unsigned int *)(UART0_BASE_ADDR + 0x1C)) -#define U0ACR (*(volatile unsigned int *)(UART0_BASE_ADDR + 0x20)) -#define U0ICR (*(volatile unsigned int *)(UART0_BASE_ADDR + 0x24)) -#define U0FDR (*(volatile unsigned int *)(UART0_BASE_ADDR + 0x28)) -#define U0TER (*(volatile unsigned int *)(UART0_BASE_ADDR + 0x30)) - -/* Universal Asynchronous Receiver Transmitter 1 (UART1) */ -#define UART1_BASE_ADDR 0xE0010000 -#define U1RBR (*(volatile unsigned int *)(UART1_BASE_ADDR + 0x00)) -#define U1THR (*(volatile unsigned int *)(UART1_BASE_ADDR + 0x00)) -#define U1DLL (*(volatile unsigned int *)(UART1_BASE_ADDR + 0x00)) -#define U1DLM (*(volatile unsigned int *)(UART1_BASE_ADDR + 0x04)) -#define U1IER (*(volatile unsigned int *)(UART1_BASE_ADDR + 0x04)) -#define U1IIR (*(volatile unsigned int *)(UART1_BASE_ADDR + 0x08)) -#define U1FCR (*(volatile unsigned int *)(UART1_BASE_ADDR + 0x08)) -#define U1LCR (*(volatile unsigned int *)(UART1_BASE_ADDR + 0x0C)) -#define U1MCR (*(volatile unsigned int *)(UART1_BASE_ADDR + 0x10)) -#define U1LSR (*(volatile unsigned int *)(UART1_BASE_ADDR + 0x14)) -#define U1MSR (*(volatile unsigned int *)(UART1_BASE_ADDR + 0x18)) -#define U1SCR (*(volatile unsigned int *)(UART1_BASE_ADDR + 0x1C)) -#define U1ACR (*(volatile unsigned int *)(UART1_BASE_ADDR + 0x20)) -#define U1FDR (*(volatile unsigned int *)(UART1_BASE_ADDR + 0x28)) -#define U1TER (*(volatile unsigned int *)(UART1_BASE_ADDR + 0x30)) - -/* Universal Asynchronous Receiver Transmitter 2 (UART2) */ -#define UART2_BASE_ADDR 0xE0078000 -#define U2RBR (*(volatile unsigned int *)(UART2_BASE_ADDR + 0x00)) -#define U2THR (*(volatile unsigned int *)(UART2_BASE_ADDR + 0x00)) -#define U2DLL (*(volatile unsigned int *)(UART2_BASE_ADDR + 0x00)) -#define U2DLM (*(volatile unsigned int *)(UART2_BASE_ADDR + 0x04)) -#define U2IER (*(volatile unsigned int *)(UART2_BASE_ADDR + 0x04)) -#define U2IIR (*(volatile unsigned int *)(UART2_BASE_ADDR + 0x08)) -#define U2FCR (*(volatile unsigned int *)(UART2_BASE_ADDR + 0x08)) -#define U2LCR (*(volatile unsigned int *)(UART2_BASE_ADDR + 0x0C)) -#define U2LSR (*(volatile unsigned int *)(UART2_BASE_ADDR + 0x14)) -#define U2SCR (*(volatile unsigned int *)(UART2_BASE_ADDR + 0x1C)) -#define U2ACR (*(volatile unsigned int *)(UART2_BASE_ADDR + 0x20)) -#define U2ICR (*(volatile unsigned int *)(UART2_BASE_ADDR + 0x24)) -#define U2FDR (*(volatile unsigned int *)(UART2_BASE_ADDR + 0x28)) -#define U2TER (*(volatile unsigned int *)(UART2_BASE_ADDR + 0x30)) - -/* Universal Asynchronous Receiver Transmitter 3 (UART3) */ -#define UART3_BASE_ADDR 0xE007C000 -#define U3RBR (*(volatile unsigned int *)(UART3_BASE_ADDR + 0x00)) -#define U3THR (*(volatile unsigned int *)(UART3_BASE_ADDR + 0x00)) -#define U3DLL (*(volatile unsigned int *)(UART3_BASE_ADDR + 0x00)) -#define U3DLM (*(volatile unsigned int *)(UART3_BASE_ADDR + 0x04)) -#define U3IER (*(volatile unsigned int *)(UART3_BASE_ADDR + 0x04)) -#define U3IIR (*(volatile unsigned int *)(UART3_BASE_ADDR + 0x08)) -#define U3FCR (*(volatile unsigned int *)(UART3_BASE_ADDR + 0x08)) -#define U3LCR (*(volatile unsigned int *)(UART3_BASE_ADDR + 0x0C)) -#define U3LSR (*(volatile unsigned int *)(UART3_BASE_ADDR + 0x14)) -#define U3SCR (*(volatile unsigned int *)(UART3_BASE_ADDR + 0x1C)) -#define U3ACR (*(volatile unsigned int *)(UART3_BASE_ADDR + 0x20)) -#define U3ICR (*(volatile unsigned int *)(UART3_BASE_ADDR + 0x24)) -#define U3FDR (*(volatile unsigned int *)(UART3_BASE_ADDR + 0x28)) -#define U3TER (*(volatile unsigned int *)(UART3_BASE_ADDR + 0x30)) - -/* I2C Interface 0 */ -#define I2C0_BASE_ADDR 0xE001C000 -#define I20CONSET (*(volatile unsigned int *)(I2C0_BASE_ADDR + 0x00)) -#define I20STAT (*(volatile unsigned int *)(I2C0_BASE_ADDR + 0x04)) -#define I20DAT (*(volatile unsigned int *)(I2C0_BASE_ADDR + 0x08)) -#define I20ADR (*(volatile unsigned int *)(I2C0_BASE_ADDR + 0x0C)) -#define I20SCLH (*(volatile unsigned int *)(I2C0_BASE_ADDR + 0x10)) -#define I20SCLL (*(volatile unsigned int *)(I2C0_BASE_ADDR + 0x14)) -#define I20CONCLR (*(volatile unsigned int *)(I2C0_BASE_ADDR + 0x18)) -//Slightly different naming -#define I2C0CONSET (*(volatile unsigned int *)(I2C0_BASE_ADDR + 0x00)) -#define I2C0STAT (*(volatile unsigned int *)(I2C0_BASE_ADDR + 0x04)) -#define I2C0DAT (*(volatile unsigned int *)(I2C0_BASE_ADDR + 0x08)) -#define I2C0ADR (*(volatile unsigned int *)(I2C0_BASE_ADDR + 0x0C)) -#define I2C0SCLH (*(volatile unsigned int *)(I2C0_BASE_ADDR + 0x10)) -#define I2C0SCLL (*(volatile unsigned int *)(I2C0_BASE_ADDR + 0x14)) -#define I2C0CONCLR (*(volatile unsigned int *)(I2C0_BASE_ADDR + 0x18)) - - -/* I2C Interface 1 */ -#define I2C1_BASE_ADDR 0xE005C000 -#define I21CONSET (*(volatile unsigned int *)(I2C1_BASE_ADDR + 0x00)) -#define I21STAT (*(volatile unsigned int *)(I2C1_BASE_ADDR + 0x04)) -#define I21DAT (*(volatile unsigned int *)(I2C1_BASE_ADDR + 0x08)) -#define I21ADR (*(volatile unsigned int *)(I2C1_BASE_ADDR + 0x0C)) -#define I21SCLH (*(volatile unsigned int *)(I2C1_BASE_ADDR + 0x10)) -#define I21SCLL (*(volatile unsigned int *)(I2C1_BASE_ADDR + 0x14)) -#define I21CONCLR (*(volatile unsigned int *)(I2C1_BASE_ADDR + 0x18)) - -/* I2C Interface 2 */ -#define I2C2_BASE_ADDR 0xE0080000 -#define I22CONSET (*(volatile unsigned int *)(I2C2_BASE_ADDR + 0x00)) -#define I22STAT (*(volatile unsigned int *)(I2C2_BASE_ADDR + 0x04)) -#define I22DAT (*(volatile unsigned int *)(I2C2_BASE_ADDR + 0x08)) -#define I22ADR (*(volatile unsigned int *)(I2C2_BASE_ADDR + 0x0C)) -#define I22SCLH (*(volatile unsigned int *)(I2C2_BASE_ADDR + 0x10)) -#define I22SCLL (*(volatile unsigned int *)(I2C2_BASE_ADDR + 0x14)) -#define I22CONCLR (*(volatile unsigned int *)(I2C2_BASE_ADDR + 0x18)) - -/* SPI0 (Serial Peripheral Interface 0) */ -#define SPI0_BASE_ADDR 0xE0020000 -#define S0SPCR (*(volatile unsigned int *)(SPI0_BASE_ADDR + 0x00)) -#define S0SPSR (*(volatile unsigned int *)(SPI0_BASE_ADDR + 0x04)) -#define S0SPDR (*(volatile unsigned int *)(SPI0_BASE_ADDR + 0x08)) -#define S0SPCCR (*(volatile unsigned int *)(SPI0_BASE_ADDR + 0x0C)) -#define S0SPINT (*(volatile unsigned int *)(SPI0_BASE_ADDR + 0x1C)) - -/* SSP0 Controller */ -#define SSP0_BASE_ADDR 0xE0068000 -#define SSP0CR0 (*(volatile unsigned int *)(SSP0_BASE_ADDR + 0x00)) -#define SSP0CR1 (*(volatile unsigned int *)(SSP0_BASE_ADDR + 0x04)) -#define SSP0DR (*(volatile unsigned int *)(SSP0_BASE_ADDR + 0x08)) -#define SSP0SR (*(volatile unsigned int *)(SSP0_BASE_ADDR + 0x0C)) -#define SSP0CPSR (*(volatile unsigned int *)(SSP0_BASE_ADDR + 0x10)) -#define SSP0IMSC (*(volatile unsigned int *)(SSP0_BASE_ADDR + 0x14)) -#define SSP0RIS (*(volatile unsigned int *)(SSP0_BASE_ADDR + 0x18)) -#define SSP0MIS (*(volatile unsigned int *)(SSP0_BASE_ADDR + 0x1C)) -#define SSP0ICR (*(volatile unsigned int *)(SSP0_BASE_ADDR + 0x20)) -#define SSP0DMACR (*(volatile unsigned int *)(SSP0_BASE_ADDR + 0x24)) - -/* SSP1 Controller */ -#define SSP1_BASE_ADDR 0xE0030000 -#define SSP1CR0 (*(volatile unsigned int *)(SSP1_BASE_ADDR + 0x00)) -#define SSP1CR1 (*(volatile unsigned int *)(SSP1_BASE_ADDR + 0x04)) -#define SSP1DR (*(volatile unsigned int *)(SSP1_BASE_ADDR + 0x08)) -#define SSP1SR (*(volatile unsigned int *)(SSP1_BASE_ADDR + 0x0C)) -#define SSP1CPSR (*(volatile unsigned int *)(SSP1_BASE_ADDR + 0x10)) -#define SSP1IMSC (*(volatile unsigned int *)(SSP1_BASE_ADDR + 0x14)) -#define SSP1RIS (*(volatile unsigned int *)(SSP1_BASE_ADDR + 0x18)) -#define SSP1MIS (*(volatile unsigned int *)(SSP1_BASE_ADDR + 0x1C)) -#define SSP1ICR (*(volatile unsigned int *)(SSP1_BASE_ADDR + 0x20)) -#define SSP1DMACR (*(volatile unsigned int *)(SSP1_BASE_ADDR + 0x24)) - - -/* Real Time Clock */ -#define RTC_BASE_ADDR 0xE0024000 -#define RTC_ILR (*(volatile unsigned int *)(RTC_BASE_ADDR + 0x00)) -#define RTC_CTC (*(volatile unsigned int *)(RTC_BASE_ADDR + 0x04)) -#define RTC_CCR (*(volatile unsigned int *)(RTC_BASE_ADDR + 0x08)) -#define RTC_CIIR (*(volatile unsigned int *)(RTC_BASE_ADDR + 0x0C)) -#define RTC_AMR (*(volatile unsigned int *)(RTC_BASE_ADDR + 0x10)) -#define RTC_CTIME0 (*(volatile unsigned int *)(RTC_BASE_ADDR + 0x14)) -#define RTC_CTIME1 (*(volatile unsigned int *)(RTC_BASE_ADDR + 0x18)) -#define RTC_CTIME2 (*(volatile unsigned int *)(RTC_BASE_ADDR + 0x1C)) -#define RTC_SEC (*(volatile unsigned int *)(RTC_BASE_ADDR + 0x20)) -#define RTC_MIN (*(volatile unsigned int *)(RTC_BASE_ADDR + 0x24)) -#define RTC_HOUR (*(volatile unsigned int *)(RTC_BASE_ADDR + 0x28)) -#define RTC_DOM (*(volatile unsigned int *)(RTC_BASE_ADDR + 0x2C)) -#define RTC_DOW (*(volatile unsigned int *)(RTC_BASE_ADDR + 0x30)) -#define RTC_DOY (*(volatile unsigned int *)(RTC_BASE_ADDR + 0x34)) -#define RTC_MONTH (*(volatile unsigned int *)(RTC_BASE_ADDR + 0x38)) -#define RTC_YEAR (*(volatile unsigned int *)(RTC_BASE_ADDR + 0x3C)) -#define RTC_CISS (*(volatile unsigned int *)(RTC_BASE_ADDR + 0x40)) -#define RTC_ALSEC (*(volatile unsigned int *)(RTC_BASE_ADDR + 0x60)) -#define RTC_ALMIN (*(volatile unsigned int *)(RTC_BASE_ADDR + 0x64)) -#define RTC_ALHOUR (*(volatile unsigned int *)(RTC_BASE_ADDR + 0x68)) -#define RTC_ALDOM (*(volatile unsigned int *)(RTC_BASE_ADDR + 0x6C)) -#define RTC_ALDOW (*(volatile unsigned int *)(RTC_BASE_ADDR + 0x70)) -#define RTC_ALDOY (*(volatile unsigned int *)(RTC_BASE_ADDR + 0x74)) -#define RTC_ALMON (*(volatile unsigned int *)(RTC_BASE_ADDR + 0x78)) -#define RTC_ALYEAR (*(volatile unsigned int *)(RTC_BASE_ADDR + 0x7C)) -#define RTC_PREINT (*(volatile unsigned int *)(RTC_BASE_ADDR + 0x80)) -#define RTC_PREFRAC (*(volatile unsigned int *)(RTC_BASE_ADDR + 0x84)) - - -/* A/D Converter 0 (AD0) */ -#define AD0_BASE_ADDR 0xE0034000 -#define AD0CR (*(volatile unsigned int *)(AD0_BASE_ADDR + 0x00)) -#define AD0GDR (*(volatile unsigned int *)(AD0_BASE_ADDR + 0x04)) -#define AD0INTEN (*(volatile unsigned int *)(AD0_BASE_ADDR + 0x0C)) -#define AD0DR0 (*(volatile unsigned int *)(AD0_BASE_ADDR + 0x10)) -#define AD0DR1 (*(volatile unsigned int *)(AD0_BASE_ADDR + 0x14)) -#define AD0DR2 (*(volatile unsigned int *)(AD0_BASE_ADDR + 0x18)) -#define AD0DR3 (*(volatile unsigned int *)(AD0_BASE_ADDR + 0x1C)) -#define AD0DR4 (*(volatile unsigned int *)(AD0_BASE_ADDR + 0x20)) -#define AD0DR5 (*(volatile unsigned int *)(AD0_BASE_ADDR + 0x24)) -#define AD0DR6 (*(volatile unsigned int *)(AD0_BASE_ADDR + 0x28)) -#define AD0DR7 (*(volatile unsigned int *)(AD0_BASE_ADDR + 0x2C)) -#define AD0STAT (*(volatile unsigned int *)(AD0_BASE_ADDR + 0x30)) - - -/* D/A Converter */ -#define DAC_BASE_ADDR 0xE006C000 -#define DACR (*(volatile unsigned int *)(DAC_BASE_ADDR + 0x00)) - - -/* Watchdog */ -#define WDG_BASE_ADDR 0xE0000000 -#define WDMOD (*(volatile unsigned int *)(WDG_BASE_ADDR + 0x00)) -#define WDTC (*(volatile unsigned int *)(WDG_BASE_ADDR + 0x04)) -#define WDFEED (*(volatile unsigned int *)(WDG_BASE_ADDR + 0x08)) -#define WDTV (*(volatile unsigned int *)(WDG_BASE_ADDR + 0x0C)) -#define WDCLKSEL (*(volatile unsigned int *)(WDG_BASE_ADDR + 0x10)) - -/* CAN CONTROLLERS AND ACCEPTANCE FILTER */ -#define CAN_ACCEPT_BASE_ADDR 0xE003C000 -#define CAN_AFMR (*(volatile unsigned int *)(CAN_ACCEPT_BASE_ADDR + 0x00)) -#define CAN_SFF_SA (*(volatile unsigned int *)(CAN_ACCEPT_BASE_ADDR + 0x04)) -#define CAN_SFF_GRP_SA (*(volatile unsigned int *)(CAN_ACCEPT_BASE_ADDR + 0x08)) -#define CAN_EFF_SA (*(volatile unsigned int *)(CAN_ACCEPT_BASE_ADDR + 0x0C)) -#define CAN_EFF_GRP_SA (*(volatile unsigned int *)(CAN_ACCEPT_BASE_ADDR + 0x10)) -#define CAN_EOT (*(volatile unsigned int *)(CAN_ACCEPT_BASE_ADDR + 0x14)) -#define CAN_LUT_ERR_ADR (*(volatile unsigned int *)(CAN_ACCEPT_BASE_ADDR + 0x18)) -#define CAN_LUT_ERR (*(volatile unsigned int *)(CAN_ACCEPT_BASE_ADDR + 0x1C)) - -#define CAN_CENTRAL_BASE_ADDR 0xE0040000 -#define CAN_TX_SR (*(volatile unsigned int *)(CAN_CENTRAL_BASE_ADDR + 0x00)) -#define CAN_RX_SR (*(volatile unsigned int *)(CAN_CENTRAL_BASE_ADDR + 0x04)) -#define CAN_MSR (*(volatile unsigned int *)(CAN_CENTRAL_BASE_ADDR + 0x08)) - -#define CAN1_BASE_ADDR 0xE0044000 -#define CAN1MOD (*(volatile unsigned int *)(CAN1_BASE_ADDR + 0x00)) -#define CAN1CMR (*(volatile unsigned int *)(CAN1_BASE_ADDR + 0x04)) -#define CAN1GSR (*(volatile unsigned int *)(CAN1_BASE_ADDR + 0x08)) -#define CAN1ICR (*(volatile unsigned int *)(CAN1_BASE_ADDR + 0x0C)) -#define CAN1IER (*(volatile unsigned int *)(CAN1_BASE_ADDR + 0x10)) -#define CAN1BTR (*(volatile unsigned int *)(CAN1_BASE_ADDR + 0x14)) -#define CAN1EWL (*(volatile unsigned int *)(CAN1_BASE_ADDR + 0x18)) -#define CAN1SR (*(volatile unsigned int *)(CAN1_BASE_ADDR + 0x1C)) -#define CAN1RFS (*(volatile unsigned int *)(CAN1_BASE_ADDR + 0x20)) -#define CAN1RID (*(volatile unsigned int *)(CAN1_BASE_ADDR + 0x24)) -#define CAN1RDA (*(volatile unsigned int *)(CAN1_BASE_ADDR + 0x28)) -#define CAN1RDB (*(volatile unsigned int *)(CAN1_BASE_ADDR + 0x2C)) - -#define CAN1TFI1 (*(volatile unsigned int *)(CAN1_BASE_ADDR + 0x30)) -#define CAN1TID1 (*(volatile unsigned int *)(CAN1_BASE_ADDR + 0x34)) -#define CAN1TDA1 (*(volatile unsigned int *)(CAN1_BASE_ADDR + 0x38)) -#define CAN1TDB1 (*(volatile unsigned int *)(CAN1_BASE_ADDR + 0x3C)) -#define CAN1TFI2 (*(volatile unsigned int *)(CAN1_BASE_ADDR + 0x40)) -#define CAN1TID2 (*(volatile unsigned int *)(CAN1_BASE_ADDR + 0x44)) -#define CAN1TDA2 (*(volatile unsigned int *)(CAN1_BASE_ADDR + 0x48)) -#define CAN1TDB2 (*(volatile unsigned int *)(CAN1_BASE_ADDR + 0x4C)) -#define CAN1TFI3 (*(volatile unsigned int *)(CAN1_BASE_ADDR + 0x50)) -#define CAN1TID3 (*(volatile unsigned int *)(CAN1_BASE_ADDR + 0x54)) -#define CAN1TDA3 (*(volatile unsigned int *)(CAN1_BASE_ADDR + 0x58)) -#define CAN1TDB3 (*(volatile unsigned int *)(CAN1_BASE_ADDR + 0x5C)) - -#define CAN2_BASE_ADDR 0xE0048000 -#define CAN2MOD (*(volatile unsigned int *)(CAN2_BASE_ADDR + 0x00)) -#define CAN2CMR (*(volatile unsigned int *)(CAN2_BASE_ADDR + 0x04)) -#define CAN2GSR (*(volatile unsigned int *)(CAN2_BASE_ADDR + 0x08)) -#define CAN2ICR (*(volatile unsigned int *)(CAN2_BASE_ADDR + 0x0C)) -#define CAN2IER (*(volatile unsigned int *)(CAN2_BASE_ADDR + 0x10)) -#define CAN2BTR (*(volatile unsigned int *)(CAN2_BASE_ADDR + 0x14)) -#define CAN2EWL (*(volatile unsigned int *)(CAN2_BASE_ADDR + 0x18)) -#define CAN2SR (*(volatile unsigned int *)(CAN2_BASE_ADDR + 0x1C)) -#define CAN2RFS (*(volatile unsigned int *)(CAN2_BASE_ADDR + 0x20)) -#define CAN2RID (*(volatile unsigned int *)(CAN2_BASE_ADDR + 0x24)) -#define CAN2RDA (*(volatile unsigned int *)(CAN2_BASE_ADDR + 0x28)) -#define CAN2RDB (*(volatile unsigned int *)(CAN2_BASE_ADDR + 0x2C)) - -#define CAN2TFI1 (*(volatile unsigned int *)(CAN2_BASE_ADDR + 0x30)) -#define CAN2TID1 (*(volatile unsigned int *)(CAN2_BASE_ADDR + 0x34)) -#define CAN2TDA1 (*(volatile unsigned int *)(CAN2_BASE_ADDR + 0x38)) -#define CAN2TDB1 (*(volatile unsigned int *)(CAN2_BASE_ADDR + 0x3C)) -#define CAN2TFI2 (*(volatile unsigned int *)(CAN2_BASE_ADDR + 0x40)) -#define CAN2TID2 (*(volatile unsigned int *)(CAN2_BASE_ADDR + 0x44)) -#define CAN2TDA2 (*(volatile unsigned int *)(CAN2_BASE_ADDR + 0x48)) -#define CAN2TDB2 (*(volatile unsigned int *)(CAN2_BASE_ADDR + 0x4C)) -#define CAN2TFI3 (*(volatile unsigned int *)(CAN2_BASE_ADDR + 0x50)) -#define CAN2TID3 (*(volatile unsigned int *)(CAN2_BASE_ADDR + 0x54)) -#define CAN2TDA3 (*(volatile unsigned int *)(CAN2_BASE_ADDR + 0x58)) -#define CAN2TDB3 (*(volatile unsigned int *)(CAN2_BASE_ADDR + 0x5C)) - - -/* MultiMedia Card Interface(MCI) Controller */ -#define MCI_BASE_ADDR 0xE008C000 -#define MCI_POWER (*(volatile unsigned int *)(MCI_BASE_ADDR + 0x00)) -#define MCI_CLOCK (*(volatile unsigned int *)(MCI_BASE_ADDR + 0x04)) -#define MCI_ARGUMENT (*(volatile unsigned int *)(MCI_BASE_ADDR + 0x08)) -#define MCI_COMMAND (*(volatile unsigned int *)(MCI_BASE_ADDR + 0x0C)) -#define MCI_RESP_CMD (*(volatile unsigned int *)(MCI_BASE_ADDR + 0x10)) -#define MCI_RESP0 (*(volatile unsigned int *)(MCI_BASE_ADDR + 0x14)) -#define MCI_RESP1 (*(volatile unsigned int *)(MCI_BASE_ADDR + 0x18)) -#define MCI_RESP2 (*(volatile unsigned int *)(MCI_BASE_ADDR + 0x1C)) -#define MCI_RESP3 (*(volatile unsigned int *)(MCI_BASE_ADDR + 0x20)) -#define MCI_DATA_TMR (*(volatile unsigned int *)(MCI_BASE_ADDR + 0x24)) -#define MCI_DATA_LEN (*(volatile unsigned int *)(MCI_BASE_ADDR + 0x28)) -#define MCI_DATA_CTRL (*(volatile unsigned int *)(MCI_BASE_ADDR + 0x2C)) -#define MCI_DATA_CNT (*(volatile unsigned int *)(MCI_BASE_ADDR + 0x30)) -#define MCI_STATUS (*(volatile unsigned int *)(MCI_BASE_ADDR + 0x34)) -#define MCI_CLEAR (*(volatile unsigned int *)(MCI_BASE_ADDR + 0x38)) -#define MCI_MASK0 (*(volatile unsigned int *)(MCI_BASE_ADDR + 0x3C)) -#define MCI_MASK1 (*(volatile unsigned int *)(MCI_BASE_ADDR + 0x40)) -#define MCI_FIFO_CNT (*(volatile unsigned int *)(MCI_BASE_ADDR + 0x48)) -#define MCI_FIFO (*(volatile unsigned int *)(MCI_BASE_ADDR + 0x80)) - - -/* I2S Interface Controller (I2S) */ -#define I2S_BASE_ADDR 0xE0088000 -#define I2S_DAO (*(volatile unsigned int *)(I2S_BASE_ADDR + 0x00)) -#define I2S_DAI (*(volatile unsigned int *)(I2S_BASE_ADDR + 0x04)) -#define I2S_TX_FIFO (*(volatile unsigned int *)(I2S_BASE_ADDR + 0x08)) -#define I2S_RX_FIFO (*(volatile unsigned int *)(I2S_BASE_ADDR + 0x0C)) -#define I2S_STATE (*(volatile unsigned int *)(I2S_BASE_ADDR + 0x10)) -#define I2S_DMA1 (*(volatile unsigned int *)(I2S_BASE_ADDR + 0x14)) -#define I2S_DMA2 (*(volatile unsigned int *)(I2S_BASE_ADDR + 0x18)) -#define I2S_IRQ (*(volatile unsigned int *)(I2S_BASE_ADDR + 0x1C)) -#define I2S_TXRATE (*(volatile unsigned int *)(I2S_BASE_ADDR + 0x20)) -#define I2S_RXRATE (*(volatile unsigned int *)(I2S_BASE_ADDR + 0x24)) - - -/* General-purpose DMA Controller */ -#define DMA_BASE_ADDR 0xFFE04000 -#define GPDMA_INT_STAT (*(volatile unsigned int *)(DMA_BASE_ADDR + 0x000)) -#define GPDMA_INT_TCSTAT (*(volatile unsigned int *)(DMA_BASE_ADDR + 0x004)) -#define GPDMA_INT_TCCLR (*(volatile unsigned int *)(DMA_BASE_ADDR + 0x008)) -#define GPDMA_INT_ERR_STAT (*(volatile unsigned int *)(DMA_BASE_ADDR + 0x00C)) -#define GPDMA_INT_ERR_CLR (*(volatile unsigned int *)(DMA_BASE_ADDR + 0x010)) -#define GPDMA_RAW_INT_TCSTAT (*(volatile unsigned int *)(DMA_BASE_ADDR + 0x014)) -#define GPDMA_RAW_INT_ERR_STAT (*(volatile unsigned int *)(DMA_BASE_ADDR + 0x018)) -#define GPDMA_ENABLED_CHNS (*(volatile unsigned int *)(DMA_BASE_ADDR + 0x01C)) -#define GPDMA_SOFT_BREQ (*(volatile unsigned int *)(DMA_BASE_ADDR + 0x020)) -#define GPDMA_SOFT_SREQ (*(volatile unsigned int *)(DMA_BASE_ADDR + 0x024)) -#define GPDMA_SOFT_LBREQ (*(volatile unsigned int *)(DMA_BASE_ADDR + 0x028)) -#define GPDMA_SOFT_LSREQ (*(volatile unsigned int *)(DMA_BASE_ADDR + 0x02C)) -#define GPDMA_CONFIG (*(volatile unsigned int *)(DMA_BASE_ADDR + 0x030)) -#define GPDMA_SYNC (*(volatile unsigned int *)(DMA_BASE_ADDR + 0x034)) - -/* DMA channel 0 registers */ -#define GPDMA_CH0_SRC (*(volatile unsigned int *)(DMA_BASE_ADDR + 0x100)) -#define GPDMA_CH0_DEST (*(volatile unsigned int *)(DMA_BASE_ADDR + 0x104)) -#define GPDMA_CH0_LLI (*(volatile unsigned int *)(DMA_BASE_ADDR + 0x108)) -#define GPDMA_CH0_CTRL (*(volatile unsigned int *)(DMA_BASE_ADDR + 0x10C)) -#define GPDMA_CH0_CFG (*(volatile unsigned int *)(DMA_BASE_ADDR + 0x110)) - -/* DMA channel 1 registers */ -#define GPDMA_CH1_SRC (*(volatile unsigned int *)(DMA_BASE_ADDR + 0x120)) -#define GPDMA_CH1_DEST (*(volatile unsigned int *)(DMA_BASE_ADDR + 0x124)) -#define GPDMA_CH1_LLI (*(volatile unsigned int *)(DMA_BASE_ADDR + 0x128)) -#define GPDMA_CH1_CTRL (*(volatile unsigned int *)(DMA_BASE_ADDR + 0x12C)) -#define GPDMA_CH1_CFG (*(volatile unsigned int *)(DMA_BASE_ADDR + 0x130)) - - -/* USB Controller */ -#define USB_INT_BASE_ADDR 0xE01FC1C0 -#define USB_BASE_ADDR 0xFFE0C200 /* USB Base Address */ - -#define USB_INT_STAT (*(volatile unsigned int *)(USB_INT_BASE_ADDR + 0x00)) - -/* USB Device Interrupt Registers */ -#define DEV_INT_STAT (*(volatile unsigned int *)(USB_BASE_ADDR + 0x00)) -#define DEV_INT_EN (*(volatile unsigned int *)(USB_BASE_ADDR + 0x04)) -#define DEV_INT_CLR (*(volatile unsigned int *)(USB_BASE_ADDR + 0x08)) -#define DEV_INT_SET (*(volatile unsigned int *)(USB_BASE_ADDR + 0x0C)) -#define DEV_INT_PRIO (*(volatile unsigned int *)(USB_BASE_ADDR + 0x2C)) - -/* USB Device Endpoint Interrupt Registers */ -#define EP_INT_STAT (*(volatile unsigned int *)(USB_BASE_ADDR + 0x30)) -#define EP_INT_EN (*(volatile unsigned int *)(USB_BASE_ADDR + 0x34)) -#define EP_INT_CLR (*(volatile unsigned int *)(USB_BASE_ADDR + 0x38)) -#define EP_INT_SET (*(volatile unsigned int *)(USB_BASE_ADDR + 0x3C)) -#define EP_INT_PRIO (*(volatile unsigned int *)(USB_BASE_ADDR + 0x40)) - -/* USB Device Endpoint Realization Registers */ -#define REALIZE_EP (*(volatile unsigned int *)(USB_BASE_ADDR + 0x44)) -#define EP_INDEX (*(volatile unsigned int *)(USB_BASE_ADDR + 0x48)) -#define MAXPACKET_SIZE (*(volatile unsigned int *)(USB_BASE_ADDR + 0x4C)) - -/* USB Device Command Reagisters */ -#define CMD_CODE (*(volatile unsigned int *)(USB_BASE_ADDR + 0x10)) -#define CMD_DATA (*(volatile unsigned int *)(USB_BASE_ADDR + 0x14)) - -/* USB Device Data Transfer Registers */ -#define RX_DATA (*(volatile unsigned int *)(USB_BASE_ADDR + 0x18)) -#define TX_DATA (*(volatile unsigned int *)(USB_BASE_ADDR + 0x1C)) -#define RX_PLENGTH (*(volatile unsigned int *)(USB_BASE_ADDR + 0x20)) -#define TX_PLENGTH (*(volatile unsigned int *)(USB_BASE_ADDR + 0x24)) -#define USB_CTRL (*(volatile unsigned int *)(USB_BASE_ADDR + 0x28)) - -/* USB Device DMA Registers */ -#define DMA_REQ_STAT (*(volatile unsigned int *)(USB_BASE_ADDR + 0x50)) -#define DMA_REQ_CLR (*(volatile unsigned int *)(USB_BASE_ADDR + 0x54)) -#define DMA_REQ_SET (*(volatile unsigned int *)(USB_BASE_ADDR + 0x58)) -#define UDCA_HEAD (*(volatile unsigned int *)(USB_BASE_ADDR + 0x80)) -#define EP_DMA_STAT (*(volatile unsigned int *)(USB_BASE_ADDR + 0x84)) -#define EP_DMA_EN (*(volatile unsigned int *)(USB_BASE_ADDR + 0x88)) -#define EP_DMA_DIS (*(volatile unsigned int *)(USB_BASE_ADDR + 0x8C)) -#define DMA_INT_STAT (*(volatile unsigned int *)(USB_BASE_ADDR + 0x90)) -#define DMA_INT_EN (*(volatile unsigned int *)(USB_BASE_ADDR + 0x94)) -#define EOT_INT_STAT (*(volatile unsigned int *)(USB_BASE_ADDR + 0xA0)) -#define EOT_INT_CLR (*(volatile unsigned int *)(USB_BASE_ADDR + 0xA4)) -#define EOT_INT_SET (*(volatile unsigned int *)(USB_BASE_ADDR + 0xA8)) -#define NDD_REQ_INT_STAT (*(volatile unsigned int *)(USB_BASE_ADDR + 0xAC)) -#define NDD_REQ_INT_CLR (*(volatile unsigned int *)(USB_BASE_ADDR + 0xB0)) -#define NDD_REQ_INT_SET (*(volatile unsigned int *)(USB_BASE_ADDR + 0xB4)) -#define SYS_ERR_INT_STAT (*(volatile unsigned int *)(USB_BASE_ADDR + 0xB8)) -#define SYS_ERR_INT_CLR (*(volatile unsigned int *)(USB_BASE_ADDR + 0xBC)) -#define SYS_ERR_INT_SET (*(volatile unsigned int *)(USB_BASE_ADDR + 0xC0)) - - -/* USB Host Controller */ -#define USBHC_BASE_ADDR 0xFFE0C000 -#define HC_REVISION (*(volatile unsigned int *)(USBHC_BASE_ADDR + 0x00)) -#define HC_CONTROL (*(volatile unsigned int *)(USBHC_BASE_ADDR + 0x04)) -#define HC_CMD_STAT (*(volatile unsigned int *)(USBHC_BASE_ADDR + 0x08)) -#define HC_INT_STAT (*(volatile unsigned int *)(USBHC_BASE_ADDR + 0x0C)) -#define HC_INT_EN (*(volatile unsigned int *)(USBHC_BASE_ADDR + 0x10)) -#define HC_INT_DIS (*(volatile unsigned int *)(USBHC_BASE_ADDR + 0x14)) -#define HC_HCCA (*(volatile unsigned int *)(USBHC_BASE_ADDR + 0x18)) -#define HC_PERIOD_CUR_ED (*(volatile unsigned int *)(USBHC_BASE_ADDR + 0x1C)) -#define HC_CTRL_HEAD_ED (*(volatile unsigned int *)(USBHC_BASE_ADDR + 0x20)) -#define HC_CTRL_CUR_ED (*(volatile unsigned int *)(USBHC_BASE_ADDR + 0x24)) -#define HC_BULK_HEAD_ED (*(volatile unsigned int *)(USBHC_BASE_ADDR + 0x28)) -#define HC_BULK_CUR_ED (*(volatile unsigned int *)(USBHC_BASE_ADDR + 0x2C)) -#define HC_DONE_HEAD (*(volatile unsigned int *)(USBHC_BASE_ADDR + 0x30)) -#define HC_FM_INTERVAL (*(volatile unsigned int *)(USBHC_BASE_ADDR + 0x34)) -#define HC_FM_REMAINING (*(volatile unsigned int *)(USBHC_BASE_ADDR + 0x38)) -#define HC_FM_NUMBER (*(volatile unsigned int *)(USBHC_BASE_ADDR + 0x3C)) -#define HC_PERIOD_START (*(volatile unsigned int *)(USBHC_BASE_ADDR + 0x40)) -#define HC_LS_THRHLD (*(volatile unsigned int *)(USBHC_BASE_ADDR + 0x44)) -#define HC_RH_DESCA (*(volatile unsigned int *)(USBHC_BASE_ADDR + 0x48)) -#define HC_RH_DESCB (*(volatile unsigned int *)(USBHC_BASE_ADDR + 0x4C)) -#define HC_RH_STAT (*(volatile unsigned int *)(USBHC_BASE_ADDR + 0x50)) -#define HC_RH_PORT_STAT1 (*(volatile unsigned int *)(USBHC_BASE_ADDR + 0x54)) -#define HC_RH_PORT_STAT2 (*(volatile unsigned int *)(USBHC_BASE_ADDR + 0x58)) - -/* USB OTG Controller */ -#define USBOTG_BASE_ADDR 0xFFE0C100 -#define OTG_INT_STAT (*(volatile unsigned int *)(USBOTG_BASE_ADDR + 0x00)) -#define OTG_INT_EN (*(volatile unsigned int *)(USBOTG_BASE_ADDR + 0x04)) -#define OTG_INT_SET (*(volatile unsigned int *)(USBOTG_BASE_ADDR + 0x08)) -#define OTG_INT_CLR (*(volatile unsigned int *)(USBOTG_BASE_ADDR + 0x0C)) -#define OTG_STAT_CTRL (*(volatile unsigned int *)(USBOTG_BASE_ADDR + 0x10)) -#define OTG_TIMER (*(volatile unsigned int *)(USBOTG_BASE_ADDR + 0x14)) - -#define USBOTG_I2C_BASE_ADDR 0xFFE0C300 -#define OTG_I2C_RX (*(volatile unsigned int *)(USBOTG_I2C_BASE_ADDR + 0x00)) -#define OTG_I2C_TX (*(volatile unsigned int *)(USBOTG_I2C_BASE_ADDR + 0x00)) -#define OTG_I2C_STS (*(volatile unsigned int *)(USBOTG_I2C_BASE_ADDR + 0x04)) -#define OTG_I2C_CTL (*(volatile unsigned int *)(USBOTG_I2C_BASE_ADDR + 0x08)) -#define OTG_I2C_CLKHI (*(volatile unsigned int *)(USBOTG_I2C_BASE_ADDR + 0x0C)) -#define OTG_I2C_CLKLO (*(volatile unsigned int *)(USBOTG_I2C_BASE_ADDR + 0x10)) - -#define USBOTG_CLK_BASE_ADDR 0xFFE0CFF0 -#define OTG_CLK_CTRL (*(volatile unsigned int *)(USBOTG_CLK_BASE_ADDR + 0x04)) -#define OTG_CLK_STAT (*(volatile unsigned int *)(USBOTG_CLK_BASE_ADDR + 0x08)) - - -/* Ethernet MAC (32 bit data bus) -- all registers are RW unless indicated in parentheses */ -#define MAC_BASE_ADDR 0xFFE00000 /* AHB Peripheral # 0 */ -#define MAC_MAC1 (*(volatile unsigned int *)(MAC_BASE_ADDR + 0x000)) /* MAC config reg 1 */ -#define MAC_MAC2 (*(volatile unsigned int *)(MAC_BASE_ADDR + 0x004)) /* MAC config reg 2 */ -#define MAC_IPGT (*(volatile unsigned int *)(MAC_BASE_ADDR + 0x008)) /* b2b InterPacketGap reg */ -#define MAC_IPGR (*(volatile unsigned int *)(MAC_BASE_ADDR + 0x00C)) /* non b2b InterPacketGap reg */ -#define MAC_CLRT (*(volatile unsigned int *)(MAC_BASE_ADDR + 0x010)) /* CoLlision window/ReTry reg */ -#define MAC_MAXF (*(volatile unsigned int *)(MAC_BASE_ADDR + 0x014)) /* MAXimum Frame reg */ -#define MAC_SUPP (*(volatile unsigned int *)(MAC_BASE_ADDR + 0x018)) /* PHY SUPPort reg */ -#define MAC_TEST (*(volatile unsigned int *)(MAC_BASE_ADDR + 0x01C)) /* TEST reg */ -#define MAC_MCFG (*(volatile unsigned int *)(MAC_BASE_ADDR + 0x020)) /* MII Mgmt ConFiG reg */ -#define MAC_MCMD (*(volatile unsigned int *)(MAC_BASE_ADDR + 0x024)) /* MII Mgmt CoMmanD reg */ -#define MAC_MADR (*(volatile unsigned int *)(MAC_BASE_ADDR + 0x028)) /* MII Mgmt ADdRess reg */ -#define MAC_MWTD (*(volatile unsigned int *)(MAC_BASE_ADDR + 0x02C)) /* MII Mgmt WriTe Data reg (WO) */ -#define MAC_MRDD (*(volatile unsigned int *)(MAC_BASE_ADDR + 0x030)) /* MII Mgmt ReaD Data reg (RO) */ -#define MAC_MIND (*(volatile unsigned int *)(MAC_BASE_ADDR + 0x034)) /* MII Mgmt INDicators reg (RO) */ - -#define MAC_SA0 (*(volatile unsigned int *)(MAC_BASE_ADDR + 0x040)) /* Station Address 0 reg */ -#define MAC_SA1 (*(volatile unsigned int *)(MAC_BASE_ADDR + 0x044)) /* Station Address 1 reg */ -#define MAC_SA2 (*(volatile unsigned int *)(MAC_BASE_ADDR + 0x048)) /* Station Address 2 reg */ - -#define MAC_COMMAND (*(volatile unsigned int *)(MAC_BASE_ADDR + 0x100)) /* Command reg */ -#define MAC_STATUS (*(volatile unsigned int *)(MAC_BASE_ADDR + 0x104)) /* Status reg (RO) */ -#define MAC_RXDESCRIPTOR (*(volatile unsigned int *)(MAC_BASE_ADDR + 0x108)) /* Rx descriptor base address reg */ -#define MAC_RXSTATUS (*(volatile unsigned int *)(MAC_BASE_ADDR + 0x10C)) /* Rx status base address reg */ -#define MAC_RXDESCRIPTORNUM (*(volatile unsigned int *)(MAC_BASE_ADDR + 0x110)) /* Rx number of descriptors reg */ -#define MAC_RXPRODUCEINDEX (*(volatile unsigned int *)(MAC_BASE_ADDR + 0x114)) /* Rx produce index reg (RO) */ -#define MAC_RXCONSUMEINDEX (*(volatile unsigned int *)(MAC_BASE_ADDR + 0x118)) /* Rx consume index reg */ -#define MAC_TXDESCRIPTOR (*(volatile unsigned int *)(MAC_BASE_ADDR + 0x11C)) /* Tx descriptor base address reg */ -#define MAC_TXSTATUS (*(volatile unsigned int *)(MAC_BASE_ADDR + 0x120)) /* Tx status base address reg */ -#define MAC_TXDESCRIPTORNUM (*(volatile unsigned int *)(MAC_BASE_ADDR + 0x124)) /* Tx number of descriptors reg */ -#define MAC_TXPRODUCEINDEX (*(volatile unsigned int *)(MAC_BASE_ADDR + 0x128)) /* Tx produce index reg */ -#define MAC_TXCONSUMEINDEX (*(volatile unsigned int *)(MAC_BASE_ADDR + 0x12C)) /* Tx consume index reg (RO) */ - -#define MAC_TSV0 (*(volatile unsigned int *)(MAC_BASE_ADDR + 0x158)) /* Tx status vector 0 reg (RO) */ -#define MAC_TSV1 (*(volatile unsigned int *)(MAC_BASE_ADDR + 0x15C)) /* Tx status vector 1 reg (RO) */ -#define MAC_RSV (*(volatile unsigned int *)(MAC_BASE_ADDR + 0x160)) /* Rx status vector reg (RO) */ - -#define MAC_FLOWCONTROLCNT (*(volatile unsigned int *)(MAC_BASE_ADDR + 0x170)) /* Flow control counter reg */ -#define MAC_FLOWCONTROLSTS (*(volatile unsigned int *)(MAC_BASE_ADDR + 0x174)) /* Flow control status reg */ - -#define MAC_RXFILTERCTRL (*(volatile unsigned int *)(MAC_BASE_ADDR + 0x200)) /* Rx filter ctrl reg */ -#define MAC_RXFILTERWOLSTS (*(volatile unsigned int *)(MAC_BASE_ADDR + 0x204)) /* Rx filter WoL status reg (RO) */ -#define MAC_RXFILTERWOLCLR (*(volatile unsigned int *)(MAC_BASE_ADDR + 0x208)) /* Rx filter WoL clear reg (WO) */ - -#define MAC_HASHFILTERL (*(volatile unsigned int *)(MAC_BASE_ADDR + 0x210)) /* Hash filter LSBs reg */ -#define MAC_HASHFILTERH (*(volatile unsigned int *)(MAC_BASE_ADDR + 0x214)) /* Hash filter MSBs reg */ - -#define MAC_INTSTATUS (*(volatile unsigned int *)(MAC_BASE_ADDR + 0xFE0)) /* Interrupt status reg (RO) */ -#define MAC_INTENABLE (*(volatile unsigned int *)(MAC_BASE_ADDR + 0xFE4)) /* Interrupt enable reg */ -#define MAC_INTCLEAR (*(volatile unsigned int *)(MAC_BASE_ADDR + 0xFE8)) /* Interrupt clear reg (WO) */ -#define MAC_INTSET (*(volatile unsigned int *)(MAC_BASE_ADDR + 0xFEC)) /* Interrupt set reg (WO) */ - -#define MAC_POWERDOWN (*(volatile unsigned int *)(MAC_BASE_ADDR + 0xFF4)) /* Power-down reg */ -#define MAC_MODULEID (*(volatile unsigned int *)(MAC_BASE_ADDR + 0xFFC)) /* Module ID reg (RO) */ - - -#endif /* __LPC23xx_H */ - diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/main.c b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/main.c deleted file mode 100644 index efff93156..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/main.c +++ /dev/null @@ -1,284 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* - * Creates all the demo application tasks, then starts the scheduler. The WEB - * documentation provides more details of the standard demo application tasks. - * In addition to the standard demo tasks, the following tasks and tests are - * defined and/or created within this file: - * - * "LCD" task - the LCD task is a 'gatekeeper' task. It is the only task that - * is permitted to access the display directly. Other tasks wishing to write a - * message to the LCD send the message on a queue to the LCD task instead of - * accessing the LCD themselves. The LCD task just blocks on the queue waiting - * for messages - waking and displaying the messages as they arrive. - * - * "Check" hook - This only executes every five seconds from the tick hook. - * Its main function is to check that all the standard demo tasks are still - * operational. Should any unexpected behaviour within a demo task be discovered - * the tick hook will write an error to the LCD (via the LCD task). If all the - * demo tasks are executing with their expected behaviour then the check task - * writes PASS to the LCD (again via the LCD task), as described above. - * - * "uIP" task - This is the task that handles the uIP stack. All TCP/IP - * processing is performed in this task. - */ - -/* Scheduler includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "queue.h" -#include "semphr.h" - -/* Demo app includes. */ -#include "BlockQ.h" -#include "death.h" -#include "blocktim.h" -#include "LCD/portlcd.h" -#include "flash.h" -#include "partest.h" -#include "GenQTest.h" -#include "QPeek.h" -#include "dynamic.h" - -/* Demo application definitions. */ -#define mainQUEUE_SIZE ( 3 ) -#define mainCHECK_DELAY ( ( TickType_t ) 5000 / portTICK_PERIOD_MS ) -#define mainBASIC_WEB_STACK_SIZE ( configMINIMAL_STACK_SIZE * 6 ) - -/* Task priorities. */ -#define mainQUEUE_POLL_PRIORITY ( tskIDLE_PRIORITY + 2 ) -#define mainCHECK_TASK_PRIORITY ( tskIDLE_PRIORITY + 3 ) -#define mainBLOCK_Q_PRIORITY ( tskIDLE_PRIORITY + 2 ) -#define mainFLASH_PRIORITY ( tskIDLE_PRIORITY + 2 ) -#define mainCREATOR_TASK_PRIORITY ( tskIDLE_PRIORITY + 3 ) -#define mainGEN_QUEUE_TASK_PRIORITY ( tskIDLE_PRIORITY ) - -/* Constants to setup the PLL. */ -#define mainPLL_MUL ( ( unsigned long ) ( 8 - 1 ) ) -#define mainPLL_DIV ( ( unsigned long ) 0x0000 ) -#define mainCPU_CLK_DIV ( ( unsigned long ) 0x0003 ) -#define mainPLL_ENABLE ( ( unsigned long ) 0x0001 ) -#define mainPLL_CONNECT ( ( ( unsigned long ) 0x0002 ) | mainPLL_ENABLE ) -#define mainPLL_FEED_BYTE1 ( ( unsigned long ) 0xaa ) -#define mainPLL_FEED_BYTE2 ( ( unsigned long ) 0x55 ) -#define mainPLL_LOCK ( ( unsigned long ) 0x4000000 ) -#define mainPLL_CONNECTED ( ( unsigned long ) 0x2000000 ) -#define mainOSC_ENABLE ( ( unsigned long ) 0x20 ) -#define mainOSC_STAT ( ( unsigned long ) 0x40 ) -#define mainOSC_SELECT ( ( unsigned long ) 0x01 ) - -/* Constants to setup the MAM. */ -#define mainMAM_TIM_3 ( ( unsigned char ) 0x03 ) -#define mainMAM_MODE_FULL ( ( unsigned char ) 0x02 ) - -/* - * The task that handles the uIP stack. All TCP/IP processing is performed in - * this task. - */ -extern void vuIP_Task( void *pvParameters ); - -/* - * The LCD is written two by more than one task so is controlled by a - * 'gatekeeper' task. This is the only task that is actually permitted to - * access the LCD directly. Other tasks wanting to display a message send - * the message to the gatekeeper. - */ -static void vLCDTask( void *pvParameters ); - -/* Configure the hardware as required by the demo. */ -static void prvSetupHardware( void ); - -/* The queue used to send messages to the LCD task. */ -QueueHandle_t xLCDQueue; - -/*-----------------------------------------------------------*/ - -int main( void ) -{ - prvSetupHardware(); - - /* Create the queue used by the LCD task. Messages for display on the LCD - are received via this queue. */ - xLCDQueue = xQueueCreate( mainQUEUE_SIZE, sizeof( xLCDMessage ) ); - - /* Create the uIP task. This uses the lwIP RTOS abstraction layer.*/ - xTaskCreate( vuIP_Task, "uIP", mainBASIC_WEB_STACK_SIZE, NULL, mainCHECK_TASK_PRIORITY - 1, NULL ); - - /* Start the standard demo tasks. */ - vStartBlockingQueueTasks( mainBLOCK_Q_PRIORITY ); - vCreateBlockTimeTasks(); - vStartLEDFlashTasks( mainFLASH_PRIORITY ); - vStartGenericQueueTasks( mainGEN_QUEUE_TASK_PRIORITY ); - vStartQueuePeekTasks(); - vStartDynamicPriorityTasks(); - - /* Start the tasks defined within this file/specific to this demo. */ - xTaskCreate( vLCDTask, "LCD", configMINIMAL_STACK_SIZE, NULL, mainCHECK_TASK_PRIORITY - 1, NULL ); - - /* Start the scheduler. */ - vTaskStartScheduler(); - - /* Will only get here if there was insufficient memory to create the idle - task. */ - return 0; -} -/*-----------------------------------------------------------*/ - -void vApplicationTickHook( void ) -{ -unsigned portBASE_TYPE uxColumn = 0; -static xLCDMessage xMessage = { 0, "PASS" }; -static unsigned long ulTicksSinceLastDisplay = 0; -static portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE; - - /* Called from every tick interrupt. Have enough ticks passed to make it - time to perform our health status check again? */ - ulTicksSinceLastDisplay++; - if( ulTicksSinceLastDisplay >= mainCHECK_DELAY ) - { - ulTicksSinceLastDisplay = 0; - - /* Has an error been found in any task? */ - - if( xAreBlockingQueuesStillRunning() != pdTRUE ) - { - xMessage.pcMessage = "ERROR - BLOCKQ"; - } - - if( xAreBlockTimeTestTasksStillRunning() != pdTRUE ) - { - xMessage.pcMessage = "ERROR - BLOCKTIM"; - } - - if( xAreGenericQueueTasksStillRunning() != pdTRUE ) - { - xMessage.pcMessage = "ERROR - GENQ"; - } - - if( xAreQueuePeekTasksStillRunning() != pdTRUE ) - { - xMessage.pcMessage = "ERROR - PEEKQ"; - } - - if( xAreDynamicPriorityTasksStillRunning() != pdTRUE ) - { - xMessage.pcMessage = "ERROR - DYNAMIC"; - } - - xMessage.xColumn++; - - /* Send the message to the LCD gatekeeper for display. */ - xHigherPriorityTaskWoken = pdFALSE; - xQueueSendToBackFromISR( xLCDQueue, &xMessage, &xHigherPriorityTaskWoken ); - } -} -/*-----------------------------------------------------------*/ - -void vLCDTask( void *pvParameters ) -{ -xLCDMessage xMessage; - - /* Initialise the LCD and display a startup message. */ - LCD_init(); - LCD_cur_off(); - LCD_cls(); - LCD_gotoxy( 1, 1 ); - LCD_puts( "www.FreeRTOS.org" ); - - for( ;; ) - { - /* Wait for a message to arrive that requires displaying. */ - while( xQueueReceive( xLCDQueue, &xMessage, portMAX_DELAY ) != pdPASS ); - - /* Display the message. Print each message to a different position. */ - LCD_cls(); - LCD_gotoxy( ( xMessage.xColumn & 0x07 ) + 1, ( xMessage.xColumn & 0x01 ) + 1 ); - LCD_puts( xMessage.pcMessage ); - } - -} -/*-----------------------------------------------------------*/ - -static void prvSetupHardware( void ) -{ - #ifdef RUN_FROM_RAM - /* Remap the interrupt vectors to RAM if we are are running from RAM. */ - SCB_MEMMAP = 2; - #endif - - /* Disable the PLL. */ - PLLCON = 0; - PLLFEED = mainPLL_FEED_BYTE1; - PLLFEED = mainPLL_FEED_BYTE2; - - /* Configure clock source. */ - SCS |= mainOSC_ENABLE; - while( !( SCS & mainOSC_STAT ) ); - CLKSRCSEL = mainOSC_SELECT; - - /* Setup the PLL to multiply the XTAL input by 4. */ - PLLCFG = ( mainPLL_MUL | mainPLL_DIV ); - PLLFEED = mainPLL_FEED_BYTE1; - PLLFEED = mainPLL_FEED_BYTE2; - - /* Turn on and wait for the PLL to lock... */ - PLLCON = mainPLL_ENABLE; - PLLFEED = mainPLL_FEED_BYTE1; - PLLFEED = mainPLL_FEED_BYTE2; - CCLKCFG = mainCPU_CLK_DIV; - while( !( PLLSTAT & mainPLL_LOCK ) ); - - /* Connecting the clock. */ - PLLCON = mainPLL_CONNECT; - PLLFEED = mainPLL_FEED_BYTE1; - PLLFEED = mainPLL_FEED_BYTE2; - while( !( PLLSTAT & mainPLL_CONNECTED ) ); - - /* - This code is commented out as the MAM does not work on the original revision - LPC2368 chips. If using Rev B chips then you can increase the speed though - the use of the MAM. - - Setup and turn on the MAM. Three cycle access is used due to the fast - PLL used. It is possible faster overall performance could be obtained by - tuning the MAM and PLL settings. - MAMCR = 0; - MAMTIM = mainMAM_TIM_3; - MAMCR = mainMAM_MODE_FULL; - */ - - /* Setup the led's on the MCB2300 board */ - vParTestInitialise(); -} - - - - - - - diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/syscalls.c b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/syscalls.c deleted file mode 100644 index ac8ddeb66..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/syscalls.c +++ /dev/null @@ -1,162 +0,0 @@ -/**************************************************************************** -* Copyright (c) 2009 by Michael Fischer. All rights reserved. -* -* Redistribution and use in source and binary forms, with or without -* modification, are permitted provided that the following conditions -* are met: -* -* 1. Redistributions of source code must retain the above copyright -* notice, this list of conditions and the following disclaimer. -* 2. Redistributions in binary form must reproduce the above copyright -* notice, this list of conditions and the following disclaimer in the -* documentation and/or other materials provided with the distribution. -* 3. Neither the name of the author nor the names of its contributors may -* be used to endorse or promote products derived from this software -* without specific prior written permission. -* -* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS -* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL -* THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, -* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, -* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS -* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED -* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF -* THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -* SUCH DAMAGE. -* -**************************************************************************** -* History: -* -* 28.03.09 mifi First Version, based on the original syscall.c from -* newlib version 1.17.0 -****************************************************************************/ - -#include -#include -#include -#include -#include - -/***************************************************************************/ - -int _read_r (struct _reent *r, int file, char * ptr, int len) -{ - r = r; - file = file; - ptr = ptr; - len = len; - - errno = EINVAL; - return -1; -} - -/***************************************************************************/ - -int _lseek_r (struct _reent *r, int file, int ptr, int dir) -{ - r = r; - file = file; - ptr = ptr; - dir = dir; - - return 0; -} - -/***************************************************************************/ - -int _write_r (struct _reent *r, int file, char * ptr, int len) -{ - r = r; - file = file; - ptr = ptr; - -#if 0 - int index; - - /* For example, output string by UART */ - for(index=0; index stack_ptr) - { - /* Some of the libstdc++-v3 tests rely upon detecting - out of memory errors, so do not abort here. */ -#if 0 - extern void abort (void); - - _write (1, "_sbrk: Heap and stack collision\n", 32); - - abort (); -#else - errno = ENOMEM; - return (caddr_t) -1; -#endif - } - - heap_end += incr; - - return (caddr_t) prev_heap_end; -} - -/***************************************************************************/ - -int _fstat_r (struct _reent *r, int file, struct stat * st) -{ - r = r; - file = file; - - memset (st, 0, sizeof (* st)); - st->st_mode = S_IFCHR; - return 0; -} - -/***************************************************************************/ - -int _isatty_r(struct _reent *r, int fd) -{ - r = r; - fd = fd; - - return 1; -} - -/*** EOF ***/ - - diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/EMAC_ISR.c b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/EMAC_ISR.c deleted file mode 100644 index 8140babcd..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/EMAC_ISR.c +++ /dev/null @@ -1,45 +0,0 @@ -#include "FreeRTOS.h" -#include "semphr.h" -#include "task.h" - -/* The interrupt entry point. */ -void vEMAC_ISR_Wrapper( void ) __attribute__((naked)); - -/* The handler that does the actual work. */ -void vEMAC_ISR_Handler( void ) __attribute__((noinline)); - -extern SemaphoreHandle_t xEMACSemaphore; - - -void vEMAC_ISR_Handler( void ) -{ -portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE; - - /* Clear the interrupt. */ - MAC_INTCLEAR = 0xffff; - VICVectAddr = 0; - - /* Ensure the uIP task is not blocked as data has arrived. */ - xSemaphoreGiveFromISR( xEMACSemaphore, &xHigherPriorityTaskWoken ); - - if( xHigherPriorityTaskWoken ) - { - /* Giving the semaphore woke a task. */ - portYIELD_FROM_ISR(); - } -} -/*-----------------------------------------------------------*/ - -void vEMAC_ISR_Wrapper( void ) -{ - /* Save the context of the interrupted task. */ - portSAVE_CONTEXT(); - - /* Call the handler. This must be a separate function unless you can - guarantee that no stack will be used. */ - __asm volatile ( "bl vEMAC_ISR_Handler" ); - - /* Restore the context of whichever task is going to run next. */ - portRESTORE_CONTEXT(); -} - diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/clock-arch.h b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/clock-arch.h deleted file mode 100644 index cde657b62..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/clock-arch.h +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright (c) 2006, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: clock-arch.h,v 1.2 2006/06/12 08:00:31 adam Exp $ - */ - -#ifndef __CLOCK_ARCH_H__ -#define __CLOCK_ARCH_H__ - -#include "FreeRTOS.h" - -typedef unsigned long clock_time_t; -#define CLOCK_CONF_SECOND configTICK_RATE_HZ - -#endif /* __CLOCK_ARCH_H__ */ diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/emac.c b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/emac.c deleted file mode 100644 index 294cfb145..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/emac.c +++ /dev/null @@ -1,411 +0,0 @@ -/****************************************************************** - ***** ***** - ***** Name: cs8900.c ***** - ***** Ver.: 1.0 ***** - ***** Date: 07/05/2001 ***** - ***** Auth: Andreas Dannenberg ***** - ***** HTWK Leipzig ***** - ***** university of applied sciences ***** - ***** Germany ***** - ***** Func: ethernet packet-driver for use with LAN- ***** - ***** controller CS8900 from Crystal/Cirrus Logic ***** - ***** ***** - ***** Keil: Module modified for use with Philips ***** - ***** LPC2378 EMAC Ethernet controller ***** - ***** ***** - ******************************************************************/ - -/* Adapted from file originally written by Andreas Dannenberg. Supplied with permission. */ - -#include "FreeRTOS.h" -#include "semphr.h" -#include "task.h" -#include "emac.h" - -/* The semaphore used to wake the uIP task when data arives. */ -SemaphoreHandle_t xEMACSemaphore = NULL; - -static unsigned short *rptr; -static unsigned short *tptr; - -// easyWEB internal function -// help function to swap the byte order of a WORD - -static unsigned short SwapBytes(unsigned short Data) -{ - return (Data >> 8) | (Data << 8); -} - -// Keil: function added to write PHY -void write_PHY (int PhyReg, int Value) -{ - unsigned int tout; - - MAC_MADR = DP83848C_DEF_ADR | PhyReg; - MAC_MWTD = Value; - - /* Wait utill operation completed */ - tout = 0; - for (tout = 0; tout < MII_WR_TOUT; tout++) { - if ((MAC_MIND & MIND_BUSY) == 0) { - break; - } - } -} - - -// Keil: function added to read PHY -unsigned short read_PHY (unsigned char PhyReg) -{ - unsigned int tout; - - MAC_MADR = DP83848C_DEF_ADR | PhyReg; - MAC_MCMD = MCMD_READ; - - /* Wait until operation completed */ - tout = 0; - for (tout = 0; tout < MII_RD_TOUT; tout++) { - if ((MAC_MIND & MIND_BUSY) == 0) { - break; - } - } - MAC_MCMD = 0; - return (MAC_MRDD); -} - - -// Keil: function added to initialize Rx Descriptors -void rx_descr_init (void) -{ - unsigned int i; - - for (i = 0; i < NUM_RX_FRAG; i++) { - RX_DESC_PACKET(i) = RX_BUF(i); - RX_DESC_CTRL(i) = RCTRL_INT | (ETH_FRAG_SIZE-1); - RX_STAT_INFO(i) = 0; - RX_STAT_HASHCRC(i) = 0; - } - - /* Set EMAC Receive Descriptor Registers. */ - MAC_RXDESCRIPTOR = RX_DESC_BASE; - MAC_RXSTATUS = RX_STAT_BASE; - MAC_RXDESCRIPTORNUM = NUM_RX_FRAG-1; - - /* Rx Descriptors Point to 0 */ - MAC_RXCONSUMEINDEX = 0; -} - - -// Keil: function added to initialize Tx Descriptors -void tx_descr_init (void) { - unsigned int i; - - for (i = 0; i < NUM_TX_FRAG; i++) { - TX_DESC_PACKET(i) = TX_BUF(i); - TX_DESC_CTRL(i) = 0; - TX_STAT_INFO(i) = 0; - } - - /* Set EMAC Transmit Descriptor Registers. */ - MAC_TXDESCRIPTOR = TX_DESC_BASE; - MAC_TXSTATUS = TX_STAT_BASE; - MAC_TXDESCRIPTORNUM = NUM_TX_FRAG-1; - - /* Tx Descriptors Point to 0 */ - MAC_TXPRODUCEINDEX = 0; -} - - -// configure port-pins for use with LAN-controller, -// reset it and send the configuration-sequence - -portBASE_TYPE Init_EMAC(void) -{ -portBASE_TYPE xReturn = pdPASS; - -// Keil: function modified to access the EMAC -// Initializes the EMAC ethernet controller - volatile unsigned int regv,tout,id1,id2; - - /* Enable P1 Ethernet Pins. */ - PINSEL2 = configPINSEL2_VALUE; - PINSEL3 = (PINSEL3 & ~0x0000000F) | 0x00000005; - - /* Power Up the EMAC controller. */ - PCONP |= 0x40000000; - vTaskDelay( 1 ); - - /* Reset all EMAC internal modules. */ - MAC_MAC1 = MAC1_RES_TX | MAC1_RES_MCS_TX | MAC1_RES_RX | MAC1_RES_MCS_RX | MAC1_SIM_RES | MAC1_SOFT_RES; - MAC_COMMAND = CR_REG_RES | CR_TX_RES | CR_RX_RES; - - /* A short delay after reset. */ - vTaskDelay( 1 ); - - /* Initialize MAC control registers. */ - MAC_MAC1 = MAC1_PASS_ALL; - MAC_MAC2 = MAC2_CRC_EN | MAC2_PAD_EN; - MAC_MAXF = ETH_MAX_FLEN; - MAC_CLRT = CLRT_DEF; - MAC_IPGR = IPGR_DEF; - - /* Enable Reduced MII interface. */ - MAC_COMMAND = CR_RMII | CR_PASS_RUNT_FRM; - - /* Reset Reduced MII Logic. */ - MAC_SUPP = SUPP_RES_RMII; - MAC_SUPP = 0; - - /* Put the DP83848C in reset mode */ - write_PHY (PHY_REG_BMCR, 0x8000); - write_PHY (PHY_REG_BMCR, 0x8000); - - /* Wait for hardware reset to end. */ - for (tout = 0; tout < 100; tout++) { - vTaskDelay( 10 ); - regv = read_PHY (PHY_REG_BMCR); - if (!(regv & 0x8000)) { - /* Reset complete */ - break; - } - } - - /* Check if this is a DP83848C PHY. */ - id1 = read_PHY (PHY_REG_IDR1); - id2 = read_PHY (PHY_REG_IDR2); - if (((id1 << 16) | (id2 & 0xFFF0)) == DP83848C_ID) { - /* Configure the PHY device */ - - /* Use autonegotiation about the link speed. */ - write_PHY (PHY_REG_BMCR, PHY_AUTO_NEG); - /* Wait to complete Auto_Negotiation. */ - for (tout = 0; tout < 10; tout++) { - vTaskDelay( 100 ); - regv = read_PHY (PHY_REG_BMSR); - if (regv & 0x0020) { - /* Autonegotiation Complete. */ - break; - } - } - } - else - { - xReturn = pdFAIL; - } - - /* Check the link status. */ - if( xReturn == pdPASS ) - { - xReturn = pdFAIL; - for (tout = 0; tout < 10; tout++) { - vTaskDelay( 100 ); - regv = read_PHY (PHY_REG_STS); - if (regv & 0x0001) { - /* Link is on. */ - xReturn = pdPASS; - break; - } - } - } - - if( xReturn == pdPASS ) - { - /* Configure Full/Half Duplex mode. */ - if (regv & 0x0004) { - /* Full duplex is enabled. */ - MAC_MAC2 |= MAC2_FULL_DUP; - MAC_COMMAND |= CR_FULL_DUP; - MAC_IPGT = IPGT_FULL_DUP; - } - else { - /* Half duplex mode. */ - MAC_IPGT = IPGT_HALF_DUP; - } - - /* Configure 100MBit/10MBit mode. */ - if (regv & 0x0002) { - /* 10MBit mode. */ - MAC_SUPP = 0; - } - else { - /* 100MBit mode. */ - MAC_SUPP = SUPP_SPEED; - } - - /* Set the Ethernet MAC Address registers */ - MAC_SA0 = (emacETHADDR0 << 8) | emacETHADDR1; - MAC_SA1 = (emacETHADDR2 << 8) | emacETHADDR3; - MAC_SA2 = (emacETHADDR4 << 8) | emacETHADDR5; - - /* Initialize Tx and Rx DMA Descriptors */ - rx_descr_init (); - tx_descr_init (); - - /* Receive Broadcast and Perfect Match Packets */ - MAC_RXFILTERCTRL = RFC_UCAST_EN | RFC_BCAST_EN | RFC_PERFECT_EN; - - /* Create the semaphore used ot wake the uIP task. */ - vSemaphoreCreateBinary( xEMACSemaphore ); - - /* Reset all interrupts */ - MAC_INTCLEAR = 0xFFFF; - - /* Enable receive and transmit mode of MAC Ethernet core */ - MAC_COMMAND |= (CR_RX_EN | CR_TX_EN); - MAC_MAC1 |= MAC1_REC_EN; - } - - return xReturn; -} - - -// reads a word in little-endian byte order from RX_BUFFER - -unsigned short ReadFrame_EMAC(void) -{ - return (*rptr++); -} - -// reads a word in big-endian byte order from RX_FRAME_PORT -// (useful to avoid permanent byte-swapping while reading -// TCP/IP-data) - -unsigned short ReadFrameBE_EMAC(void) -{ - unsigned short ReturnValue; - - ReturnValue = SwapBytes (*rptr++); - return (ReturnValue); -} - - -// copies bytes from frame port to MCU-memory -// NOTES: * an odd number of byte may only be transfered -// if the frame is read to the end! -// * MCU-memory MUST start at word-boundary - -void CopyFromFrame_EMAC(void *Dest, unsigned short Size) -{ - unsigned short * piDest; // Keil: Pointer added to correct expression - - piDest = Dest; // Keil: Line added - while (Size > 1) { - *piDest++ = ReadFrame_EMAC(); - Size -= 2; - } - - if (Size) { // check for leftover byte... - *(unsigned char *)piDest = (char)ReadFrame_EMAC();// the LAN-Controller will return 0 - } // for the highbyte -} - -// does a dummy read on frame-I/O-port -// NOTE: only an even number of bytes is read! - -void DummyReadFrame_EMAC(unsigned short Size) // discards an EVEN number of bytes -{ // from RX-fifo - while (Size > 1) { - ReadFrame_EMAC(); - Size -= 2; - } -} - -// Reads the length of the received ethernet frame and checks if the -// destination address is a broadcast message or not -// returns the frame length -unsigned short StartReadFrame(void) { - unsigned short RxLen; - unsigned int idx; - - idx = MAC_RXCONSUMEINDEX; - RxLen = (RX_STAT_INFO(idx) & RINFO_SIZE) - 3; - rptr = (unsigned short *)RX_DESC_PACKET(idx); - return(RxLen); -} - -void EndReadFrame(void) { - unsigned int idx; - - /* DMA free packet. */ - idx = MAC_RXCONSUMEINDEX; - - if (++idx == NUM_RX_FRAG) - idx = 0; - - MAC_RXCONSUMEINDEX = idx; -} - -unsigned int CheckFrameReceived(void) { // Packet received ? - - if (MAC_RXPRODUCEINDEX != MAC_RXCONSUMEINDEX) // more packets received ? - return(1); - else - return(0); -} - -unsigned int uiGetEMACRxData( unsigned char *ucBuffer ) -{ -unsigned int uiLen = 0; - - if( MAC_RXPRODUCEINDEX != MAC_RXCONSUMEINDEX ) - { - uiLen = StartReadFrame(); - CopyFromFrame_EMAC( ucBuffer, uiLen ); - EndReadFrame(); - } - - return uiLen; -} - -// requests space in EMAC memory for storing an outgoing frame - -void RequestSend(void) -{ - unsigned int idx; - - idx = MAC_TXPRODUCEINDEX; - tptr = (unsigned short *)TX_DESC_PACKET(idx); -} - -// check if ethernet controller is ready to accept the -// frame we want to send - -unsigned int Rdy4Tx(void) -{ - return (1); // the ethernet controller transmits much faster -} // than the CPU can load its buffers - - -// writes a word in little-endian byte order to TX_BUFFER -void WriteFrame_EMAC(unsigned short Data) -{ - *tptr++ = Data; -} - -// copies bytes from MCU-memory to frame port -// NOTES: * an odd number of byte may only be transfered -// if the frame is written to the end! -// * MCU-memory MUST start at word-boundary - -void CopyToFrame_EMAC(void *Source, unsigned int Size) -{ - unsigned short * piSource; - - piSource = Source; - Size = (Size + 1) & 0xFFFE; // round Size up to next even number - while (Size > 0) { - WriteFrame_EMAC(*piSource++); - Size -= 2; - } -} - -void DoSend_EMAC(unsigned short FrameSize) -{ - unsigned int idx; - - idx = MAC_TXPRODUCEINDEX; - TX_DESC_CTRL(idx) = FrameSize | TCTRL_LAST; - if (++idx == NUM_TX_FRAG) idx = 0; - MAC_TXPRODUCEINDEX = idx; -} - diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/emac.h b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/emac.h deleted file mode 100644 index c3634217d..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/emac.h +++ /dev/null @@ -1,322 +0,0 @@ -/*---------------------------------------------------------------------------- - * LPC2378 Ethernet Definitions - *---------------------------------------------------------------------------- - * Name: EMAC.H - * Purpose: Philips LPC2378 EMAC hardware definitions - *---------------------------------------------------------------------------- - * Copyright (c) 2006 KEIL - An ARM Company. All rights reserved. - *---------------------------------------------------------------------------*/ -#ifndef __EMAC_H -#define __EMAC_H - -/* MAC address definition. The MAC address must be unique on the network. */ -#define emacETHADDR0 0 -#define emacETHADDR1 0xbd -#define emacETHADDR2 0x33 -#define emacETHADDR3 0x02 -#define emacETHADDR4 0x64 -#define emacETHADDR5 0x24 - - -/* EMAC Memory Buffer configuration for 16K Ethernet RAM. */ -#define NUM_RX_FRAG 4 /* Num.of RX Fragments 4*1536= 6.0kB */ -#define NUM_TX_FRAG 2 /* Num.of TX Fragments 2*1536= 3.0kB */ -#define ETH_FRAG_SIZE 1536 /* Packet Fragment size 1536 Bytes */ - -#define ETH_MAX_FLEN 1536 /* Max. Ethernet Frame Size */ - -/* EMAC variables located in 16K Ethernet SRAM */ -#define RX_DESC_BASE 0x7FE00000 -#define RX_STAT_BASE (RX_DESC_BASE + NUM_RX_FRAG*8) -#define TX_DESC_BASE (RX_STAT_BASE + NUM_RX_FRAG*8) -#define TX_STAT_BASE (TX_DESC_BASE + NUM_TX_FRAG*8) -#define RX_BUF_BASE (TX_STAT_BASE + NUM_TX_FRAG*4) -#define TX_BUF_BASE (RX_BUF_BASE + NUM_RX_FRAG*ETH_FRAG_SIZE) - -/* RX and TX descriptor and status definitions. */ -#define RX_DESC_PACKET(i) (*(unsigned int *)(RX_DESC_BASE + 8*i)) -#define RX_DESC_CTRL(i) (*(unsigned int *)(RX_DESC_BASE+4 + 8*i)) -#define RX_STAT_INFO(i) (*(unsigned int *)(RX_STAT_BASE + 8*i)) -#define RX_STAT_HASHCRC(i) (*(unsigned int *)(RX_STAT_BASE+4 + 8*i)) -#define TX_DESC_PACKET(i) (*(unsigned int *)(TX_DESC_BASE + 8*i)) -#define TX_DESC_CTRL(i) (*(unsigned int *)(TX_DESC_BASE+4 + 8*i)) -#define TX_STAT_INFO(i) (*(unsigned int *)(TX_STAT_BASE + 4*i)) -#define RX_BUF(i) (RX_BUF_BASE + ETH_FRAG_SIZE*i) -#define TX_BUF(i) (TX_BUF_BASE + ETH_FRAG_SIZE*i) - -/* MAC Configuration Register 1 */ -#define MAC1_REC_EN 0x00000001 /* Receive Enable */ -#define MAC1_PASS_ALL 0x00000002 /* Pass All Receive Frames */ -#define MAC1_RX_FLOWC 0x00000004 /* RX Flow Control */ -#define MAC1_TX_FLOWC 0x00000008 /* TX Flow Control */ -#define MAC1_LOOPB 0x00000010 /* Loop Back Mode */ -#define MAC1_RES_TX 0x00000100 /* Reset TX Logic */ -#define MAC1_RES_MCS_TX 0x00000200 /* Reset MAC TX Control Sublayer */ -#define MAC1_RES_RX 0x00000400 /* Reset RX Logic */ -#define MAC1_RES_MCS_RX 0x00000800 /* Reset MAC RX Control Sublayer */ -#define MAC1_SIM_RES 0x00004000 /* Simulation Reset */ -#define MAC1_SOFT_RES 0x00008000 /* Soft Reset MAC */ - -/* MAC Configuration Register 2 */ -#define MAC2_FULL_DUP 0x00000001 /* Full Duplex Mode */ -#define MAC2_FRM_LEN_CHK 0x00000002 /* Frame Length Checking */ -#define MAC2_HUGE_FRM_EN 0x00000004 /* Huge Frame Enable */ -#define MAC2_DLY_CRC 0x00000008 /* Delayed CRC Mode */ -#define MAC2_CRC_EN 0x00000010 /* Append CRC to every Frame */ -#define MAC2_PAD_EN 0x00000020 /* Pad all Short Frames */ -#define MAC2_VLAN_PAD_EN 0x00000040 /* VLAN Pad Enable */ -#define MAC2_ADET_PAD_EN 0x00000080 /* Auto Detect Pad Enable */ -#define MAC2_PPREAM_ENF 0x00000100 /* Pure Preamble Enforcement */ -#define MAC2_LPREAM_ENF 0x00000200 /* Long Preamble Enforcement */ -#undef MAC2_NO_BACKOFF /* Remove compiler warning. */ -#define MAC2_NO_BACKOFF 0x00001000 /* No Backoff Algorithm */ -#define MAC2_BACK_PRESSURE 0x00002000 /* Backoff Presurre / No Backoff */ -#define MAC2_EXCESS_DEF 0x00004000 /* Excess Defer */ - -/* Back-to-Back Inter-Packet-Gap Register */ -#define IPGT_FULL_DUP 0x00000015 /* Recommended value for Full Duplex */ -#define IPGT_HALF_DUP 0x00000012 /* Recommended value for Half Duplex */ - -/* Non Back-to-Back Inter-Packet-Gap Register */ -#define IPGR_DEF 0x00000012 /* Recommended value */ - -/* Collision Window/Retry Register */ -#define CLRT_DEF 0x0000370F /* Default value */ - -/* PHY Support Register */ -#undef SUPP_SPEED /* Remove compiler warning. */ -#define SUPP_SPEED 0x00000100 /* Reduced MII Logic Current Speed */ -#define SUPP_RES_RMII 0x00000800 /* Reset Reduced MII Logic */ - -/* Test Register */ -#define TEST_SHCUT_PQUANTA 0x00000001 /* Shortcut Pause Quanta */ -#define TEST_TST_PAUSE 0x00000002 /* Test Pause */ -#define TEST_TST_BACKP 0x00000004 /* Test Back Pressure */ - -/* MII Management Configuration Register */ -#define MCFG_SCAN_INC 0x00000001 /* Scan Increment PHY Address */ -#define MCFG_SUPP_PREAM 0x00000002 /* Suppress Preamble */ -#define MCFG_CLK_SEL 0x0000001C /* Clock Select Mask */ -#define MCFG_RES_MII 0x00008000 /* Reset MII Management Hardware */ - -/* MII Management Command Register */ -#undef MCMD_READ /* Remove compiler warning. */ -#define MCMD_READ 0x00000001 /* MII Read */ -#undef MCMD_SCAN /* Remove compiler warning. */ -#define MCMD_SCAN 0x00000002 /* MII Scan continuously */ - -#define MII_WR_TOUT 0x00050000 /* MII Write timeout count */ -#define MII_RD_TOUT 0x00050000 /* MII Read timeout count */ - -/* MII Management Address Register */ -#define MADR_REG_ADR 0x0000001F /* MII Register Address Mask */ -#define MADR_PHY_ADR 0x00001F00 /* PHY Address Mask */ - -/* MII Management Indicators Register */ -#undef MIND_BUSY /* Remove compiler warning. */ -#define MIND_BUSY 0x00000001 /* MII is Busy */ -#define MIND_SCAN 0x00000002 /* MII Scanning in Progress */ -#define MIND_NOT_VAL 0x00000004 /* MII Read Data not valid */ -#define MIND_MII_LINK_FAIL 0x00000008 /* MII Link Failed */ - -/* Command Register */ -#define CR_RX_EN 0x00000001 /* Enable Receive */ -#define CR_TX_EN 0x00000002 /* Enable Transmit */ -#define CR_REG_RES 0x00000008 /* Reset Host Registers */ -#define CR_TX_RES 0x00000010 /* Reset Transmit Datapath */ -#define CR_RX_RES 0x00000020 /* Reset Receive Datapath */ -#define CR_PASS_RUNT_FRM 0x00000040 /* Pass Runt Frames */ -#define CR_PASS_RX_FILT 0x00000080 /* Pass RX Filter */ -#define CR_TX_FLOW_CTRL 0x00000100 /* TX Flow Control */ -#define CR_RMII 0x00000200 /* Reduced MII Interface */ -#define CR_FULL_DUP 0x00000400 /* Full Duplex */ - -/* Status Register */ -#define SR_RX_EN 0x00000001 /* Enable Receive */ -#define SR_TX_EN 0x00000002 /* Enable Transmit */ - -/* Transmit Status Vector 0 Register */ -#define TSV0_CRC_ERR 0x00000001 /* CRC error */ -#define TSV0_LEN_CHKERR 0x00000002 /* Length Check Error */ -#define TSV0_LEN_OUTRNG 0x00000004 /* Length Out of Range */ -#define TSV0_DONE 0x00000008 /* Tramsmission Completed */ -#define TSV0_MCAST 0x00000010 /* Multicast Destination */ -#define TSV0_BCAST 0x00000020 /* Broadcast Destination */ -#define TSV0_PKT_DEFER 0x00000040 /* Packet Deferred */ -#define TSV0_EXC_DEFER 0x00000080 /* Excessive Packet Deferral */ -#define TSV0_EXC_COLL 0x00000100 /* Excessive Collision */ -#define TSV0_LATE_COLL 0x00000200 /* Late Collision Occured */ -#define TSV0_GIANT 0x00000400 /* Giant Frame */ -#define TSV0_UNDERRUN 0x00000800 /* Buffer Underrun */ -#define TSV0_BYTES 0x0FFFF000 /* Total Bytes Transferred */ -#define TSV0_CTRL_FRAME 0x10000000 /* Control Frame */ -#define TSV0_PAUSE 0x20000000 /* Pause Frame */ -#define TSV0_BACK_PRESS 0x40000000 /* Backpressure Method Applied */ -#define TSV0_VLAN 0x80000000 /* VLAN Frame */ - -/* Transmit Status Vector 1 Register */ -#define TSV1_BYTE_CNT 0x0000FFFF /* Transmit Byte Count */ -#define TSV1_COLL_CNT 0x000F0000 /* Transmit Collision Count */ - -/* Receive Status Vector Register */ -#define RSV_BYTE_CNT 0x0000FFFF /* Receive Byte Count */ -#define RSV_PKT_IGNORED 0x00010000 /* Packet Previously Ignored */ -#define RSV_RXDV_SEEN 0x00020000 /* RXDV Event Previously Seen */ -#define RSV_CARR_SEEN 0x00040000 /* Carrier Event Previously Seen */ -#define RSV_REC_CODEV 0x00080000 /* Receive Code Violation */ -#define RSV_CRC_ERR 0x00100000 /* CRC Error */ -#define RSV_LEN_CHKERR 0x00200000 /* Length Check Error */ -#define RSV_LEN_OUTRNG 0x00400000 /* Length Out of Range */ -#define RSV_REC_OK 0x00800000 /* Frame Received OK */ -#define RSV_MCAST 0x01000000 /* Multicast Frame */ -#define RSV_BCAST 0x02000000 /* Broadcast Frame */ -#define RSV_DRIB_NIBB 0x04000000 /* Dribble Nibble */ -#define RSV_CTRL_FRAME 0x08000000 /* Control Frame */ -#define RSV_PAUSE 0x10000000 /* Pause Frame */ -#define RSV_UNSUPP_OPC 0x20000000 /* Unsupported Opcode */ -#define RSV_VLAN 0x40000000 /* VLAN Frame */ - -/* Flow Control Counter Register */ -#define FCC_MIRR_CNT 0x0000FFFF /* Mirror Counter */ -#define FCC_PAUSE_TIM 0xFFFF0000 /* Pause Timer */ - -/* Flow Control Status Register */ -#define FCS_MIRR_CNT 0x0000FFFF /* Mirror Counter Current */ - -/* Receive Filter Control Register */ -#define RFC_UCAST_EN 0x00000001 /* Accept Unicast Frames Enable */ -#define RFC_BCAST_EN 0x00000002 /* Accept Broadcast Frames Enable */ -#define RFC_MCAST_EN 0x00000004 /* Accept Multicast Frames Enable */ -#define RFC_UCAST_HASH_EN 0x00000008 /* Accept Unicast Hash Filter Frames */ -#define RFC_MCAST_HASH_EN 0x00000010 /* Accept Multicast Hash Filter Fram.*/ -#define RFC_PERFECT_EN 0x00000020 /* Accept Perfect Match Enable */ -#define RFC_MAGP_WOL_EN 0x00001000 /* Magic Packet Filter WoL Enable */ -#define RFC_PFILT_WOL_EN 0x00002000 /* Perfect Filter WoL Enable */ - -/* Receive Filter WoL Status/Clear Registers */ -#define WOL_UCAST 0x00000001 /* Unicast Frame caused WoL */ -#define WOL_BCAST 0x00000002 /* Broadcast Frame caused WoL */ -#define WOL_MCAST 0x00000004 /* Multicast Frame caused WoL */ -#define WOL_UCAST_HASH 0x00000008 /* Unicast Hash Filter Frame WoL */ -#define WOL_MCAST_HASH 0x00000010 /* Multicast Hash Filter Frame WoL */ -#define WOL_PERFECT 0x00000020 /* Perfect Filter WoL */ -#define WOL_RX_FILTER 0x00000080 /* RX Filter caused WoL */ -#define WOL_MAG_PACKET 0x00000100 /* Magic Packet Filter caused WoL */ - -/* Interrupt Status/Enable/Clear/Set Registers */ -#define INT_RX_OVERRUN 0x00000001 /* Overrun Error in RX Queue */ -#define INT_RX_ERR 0x00000002 /* Receive Error */ -#define INT_RX_FIN 0x00000004 /* RX Finished Process Descriptors */ -#define INT_RX_DONE 0x00000008 /* Receive Done */ -#define INT_TX_UNDERRUN 0x00000010 /* Transmit Underrun */ -#define INT_TX_ERR 0x00000020 /* Transmit Error */ -#define INT_TX_FIN 0x00000040 /* TX Finished Process Descriptors */ -#define INT_TX_DONE 0x00000080 /* Transmit Done */ -#define INT_SOFT_INT 0x00001000 /* Software Triggered Interrupt */ -#define INT_WAKEUP 0x00002000 /* Wakeup Event Interrupt */ - -/* Power Down Register */ -#define PD_POWER_DOWN 0x80000000 /* Power Down MAC */ - -/* RX Descriptor Control Word */ -#define RCTRL_SIZE 0x000007FF /* Buffer size mask */ -#define RCTRL_INT 0x80000000 /* Generate RxDone Interrupt */ - -/* RX Status Hash CRC Word */ -#define RHASH_SA 0x000001FF /* Hash CRC for Source Address */ -#define RHASH_DA 0x001FF000 /* Hash CRC for Destination Address */ - -/* RX Status Information Word */ -#define RINFO_SIZE 0x000007FF /* Data size in bytes */ -#define RINFO_CTRL_FRAME 0x00040000 /* Control Frame */ -#define RINFO_VLAN 0x00080000 /* VLAN Frame */ -#define RINFO_FAIL_FILT 0x00100000 /* RX Filter Failed */ -#define RINFO_MCAST 0x00200000 /* Multicast Frame */ -#define RINFO_BCAST 0x00400000 /* Broadcast Frame */ -#define RINFO_CRC_ERR 0x00800000 /* CRC Error in Frame */ -#define RINFO_SYM_ERR 0x01000000 /* Symbol Error from PHY */ -#define RINFO_LEN_ERR 0x02000000 /* Length Error */ -#define RINFO_RANGE_ERR 0x04000000 /* Range Error (exceeded max. size) */ -#define RINFO_ALIGN_ERR 0x08000000 /* Alignment Error */ -#define RINFO_OVERRUN 0x10000000 /* Receive overrun */ -#define RINFO_NO_DESCR 0x20000000 /* No new Descriptor available */ -#define RINFO_LAST_FLAG 0x40000000 /* Last Fragment in Frame */ -#define RINFO_ERR 0x80000000 /* Error Occured (OR of all errors) */ - -#define RINFO_ERR_MASK (RINFO_FAIL_FILT | RINFO_CRC_ERR | RINFO_SYM_ERR | \ - RINFO_LEN_ERR | RINFO_ALIGN_ERR | RINFO_OVERRUN) - -/* TX Descriptor Control Word */ -#define TCTRL_SIZE 0x000007FF /* Size of data buffer in bytes */ -#define TCTRL_OVERRIDE 0x04000000 /* Override Default MAC Registers */ -#define TCTRL_HUGE 0x08000000 /* Enable Huge Frame */ -#define TCTRL_PAD 0x10000000 /* Pad short Frames to 64 bytes */ -#define TCTRL_CRC 0x20000000 /* Append a hardware CRC to Frame */ -#define TCTRL_LAST 0x40000000 /* Last Descriptor for TX Frame */ -#define TCTRL_INT 0x80000000 /* Generate TxDone Interrupt */ - -/* TX Status Information Word */ -#define TINFO_COL_CNT 0x01E00000 /* Collision Count */ -#define TINFO_DEFER 0x02000000 /* Packet Deferred (not an error) */ -#define TINFO_EXCESS_DEF 0x04000000 /* Excessive Deferral */ -#define TINFO_EXCESS_COL 0x08000000 /* Excessive Collision */ -#define TINFO_LATE_COL 0x10000000 /* Late Collision Occured */ -#define TINFO_UNDERRUN 0x20000000 /* Transmit Underrun */ -#define TINFO_NO_DESCR 0x40000000 /* No new Descriptor available */ -#define TINFO_ERR 0x80000000 /* Error Occured (OR of all errors) */ - -/* DP83848C PHY Registers */ -#define PHY_REG_BMCR 0x00 /* Basic Mode Control Register */ -#define PHY_REG_BMSR 0x01 /* Basic Mode Status Register */ -#define PHY_REG_IDR1 0x02 /* PHY Identifier 1 */ -#define PHY_REG_IDR2 0x03 /* PHY Identifier 2 */ -#define PHY_REG_ANAR 0x04 /* Auto-Negotiation Advertisement */ -#define PHY_REG_ANLPAR 0x05 /* Auto-Neg. Link Partner Abitily */ -#define PHY_REG_ANER 0x06 /* Auto-Neg. Expansion Register */ -#define PHY_REG_ANNPTR 0x07 /* Auto-Neg. Next Page TX */ - -/* PHY Extended Registers */ -#define PHY_REG_STS 0x10 /* Status Register */ -#define PHY_REG_MICR 0x11 /* MII Interrupt Control Register */ -#define PHY_REG_MISR 0x12 /* MII Interrupt Status Register */ -#define PHY_REG_FCSCR 0x14 /* False Carrier Sense Counter */ -#define PHY_REG_RECR 0x15 /* Receive Error Counter */ -#define PHY_REG_PCSR 0x16 /* PCS Sublayer Config. and Status */ -#define PHY_REG_RBR 0x17 /* RMII and Bypass Register */ -#define PHY_REG_LEDCR 0x18 /* LED Direct Control Register */ -#define PHY_REG_PHYCR 0x19 /* PHY Control Register */ -#define PHY_REG_10BTSCR 0x1A /* 10Base-T Status/Control Register */ -#define PHY_REG_CDCTRL1 0x1B /* CD Test Control and BIST Extens. */ -#define PHY_REG_EDCR 0x1D /* Energy Detect Control Register */ - -#define PHY_FULLD_100M 0x2100 /* Full Duplex 100Mbit */ -#define PHY_HALFD_100M 0x2000 /* Half Duplex 100Mbit */ -#define PHY_FULLD_10M 0x0100 /* Full Duplex 10Mbit */ -#define PHY_HALFD_10M 0x0000 /* Half Duplex 10MBit */ -#define PHY_AUTO_NEG 0x3000 /* Select Auto Negotiation */ - -#define DP83848C_DEF_ADR 0x0100 /* Default PHY device address */ -#define DP83848C_ID 0x20005C90 /* PHY Identifier */ - -// prototypes -portBASE_TYPE Init_EMAC(void); -unsigned short ReadFrameBE_EMAC(void); -void CopyToFrame_EMAC(void *Source, unsigned int Size); -void CopyFromFrame_EMAC(void *Dest, unsigned short Size); -void DummyReadFrame_EMAC(unsigned short Size); -unsigned short StartReadFrame(void); -void EndReadFrame(void); -unsigned int CheckFrameReceived(void); -void RequestSend(void); -unsigned int Rdy4Tx(void); -void DoSend_EMAC(unsigned short FrameSize); -void vEMACWaitForInput( void ); -unsigned int uiGetEMACRxData( unsigned char *ucBuffer ); - - -#endif - -/*---------------------------------------------------------------------------- - * end of file - *---------------------------------------------------------------------------*/ - diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/http-strings b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/http-strings deleted file mode 100644 index 0d3c30cdd..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/http-strings +++ /dev/null @@ -1,35 +0,0 @@ -http_http "http://" -http_200 "200 " -http_301 "301 " -http_302 "302 " -http_get "GET " -http_10 "HTTP/1.0" -http_11 "HTTP/1.1" -http_content_type "content-type: " -http_texthtml "text/html" -http_location "location: " -http_host "host: " -http_crnl "\r\n" -http_index_html "/index.html" -http_404_html "/404.html" -http_referer "Referer:" -http_header_200 "HTTP/1.0 200 OK\r\nServer: uIP/1.0 http://www.sics.se/~adam/uip/\r\nConnection: close\r\n" -http_header_404 "HTTP/1.0 404 Not found\r\nServer: uIP/1.0 http://www.sics.se/~adam/uip/\r\nConnection: close\r\n" -http_content_type_plain "Content-type: text/plain\r\n\r\n" -http_content_type_html "Content-type: text/html\r\n\r\n" -http_content_type_css "Content-type: text/css\r\n\r\n" -http_content_type_text "Content-type: text/text\r\n\r\n" -http_content_type_png "Content-type: image/png\r\n\r\n" -http_content_type_gif "Content-type: image/gif\r\n\r\n" -http_content_type_jpg "Content-type: image/jpeg\r\n\r\n" -http_content_type_binary "Content-type: application/octet-stream\r\n\r\n" -http_html ".html" -http_shtml ".shtml" -http_htm ".htm" -http_css ".css" -http_png ".png" -http_gif ".gif" -http_jpg ".jpg" -http_text ".txt" -http_txt ".txt" - diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/http-strings.c b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/http-strings.c deleted file mode 100644 index ef7a41c7d..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/http-strings.c +++ /dev/null @@ -1,102 +0,0 @@ -const char http_http[8] = -/* "http://" */ -{0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, }; -const char http_200[5] = -/* "200 " */ -{0x32, 0x30, 0x30, 0x20, }; -const char http_301[5] = -/* "301 " */ -{0x33, 0x30, 0x31, 0x20, }; -const char http_302[5] = -/* "302 " */ -{0x33, 0x30, 0x32, 0x20, }; -const char http_get[5] = -/* "GET " */ -{0x47, 0x45, 0x54, 0x20, }; -const char http_10[9] = -/* "HTTP/1.0" */ -{0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30, }; -const char http_11[9] = -/* "HTTP/1.1" */ -{0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x31, }; -const char http_content_type[15] = -/* "content-type: " */ -{0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, }; -const char http_texthtml[10] = -/* "text/html" */ -{0x74, 0x65, 0x78, 0x74, 0x2f, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_location[11] = -/* "location: " */ -{0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, }; -const char http_host[7] = -/* "host: " */ -{0x68, 0x6f, 0x73, 0x74, 0x3a, 0x20, }; -const char http_crnl[3] = -/* "\r\n" */ -{0xd, 0xa, }; -const char http_index_html[12] = -/* "/index.html" */ -{0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_404_html[10] = -/* "/404.html" */ -{0x2f, 0x34, 0x30, 0x34, 0x2e, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_referer[9] = -/* "Referer:" */ -{0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x72, 0x3a, }; -const char http_header_200[84] = -/* "HTTP/1.0 200 OK\r\nServer: uIP/1.0 http://www.sics.se/~adam/uip/\r\nConnection: close\r\n" */ -{0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x32, 0x30, 0x30, 0x20, 0x4f, 0x4b, 0xd, 0xa, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x3a, 0x20, 0x75, 0x49, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x73, 0x69, 0x63, 0x73, 0x2e, 0x73, 0x65, 0x2f, 0x7e, 0x61, 0x64, 0x61, 0x6d, 0x2f, 0x75, 0x69, 0x70, 0x2f, 0xd, 0xa, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0xd, 0xa, }; -const char http_header_404[91] = -/* "HTTP/1.0 404 Not found\r\nServer: uIP/1.0 http://www.sics.se/~adam/uip/\r\nConnection: close\r\n" */ -{0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x34, 0x30, 0x34, 0x20, 0x4e, 0x6f, 0x74, 0x20, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0xd, 0xa, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x3a, 0x20, 0x75, 0x49, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x73, 0x69, 0x63, 0x73, 0x2e, 0x73, 0x65, 0x2f, 0x7e, 0x61, 0x64, 0x61, 0x6d, 0x2f, 0x75, 0x69, 0x70, 0x2f, 0xd, 0xa, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0xd, 0xa, }; -const char http_content_type_plain[29] = -/* "Content-type: text/plain\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_html[28] = -/* "Content-type: text/html\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_css [27] = -/* "Content-type: text/css\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x63, 0x73, 0x73, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_text[28] = -/* "Content-type: text/text\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x74, 0x65, 0x78, 0x74, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_png [28] = -/* "Content-type: image/png\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x70, 0x6e, 0x67, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_gif [28] = -/* "Content-type: image/gif\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x67, 0x69, 0x66, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_jpg [29] = -/* "Content-type: image/jpeg\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x6a, 0x70, 0x65, 0x67, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_binary[43] = -/* "Content-type: application/octet-stream\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x6f, 0x63, 0x74, 0x65, 0x74, 0x2d, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0xd, 0xa, 0xd, 0xa, }; -const char http_html[6] = -/* ".html" */ -{0x2e, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_shtml[7] = -/* ".shtml" */ -{0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_htm[5] = -/* ".htm" */ -{0x2e, 0x68, 0x74, 0x6d, }; -const char http_css[5] = -/* ".css" */ -{0x2e, 0x63, 0x73, 0x73, }; -const char http_png[5] = -/* ".png" */ -{0x2e, 0x70, 0x6e, 0x67, }; -const char http_gif[5] = -/* ".gif" */ -{0x2e, 0x67, 0x69, 0x66, }; -const char http_jpg[5] = -/* ".jpg" */ -{0x2e, 0x6a, 0x70, 0x67, }; -const char http_text[5] = -/* ".txt" */ -{0x2e, 0x74, 0x78, 0x74, }; -const char http_txt[5] = -/* ".txt" */ -{0x2e, 0x74, 0x78, 0x74, }; diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/http-strings.h b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/http-strings.h deleted file mode 100644 index acbe7e17f..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/http-strings.h +++ /dev/null @@ -1,34 +0,0 @@ -extern const char http_http[8]; -extern const char http_200[5]; -extern const char http_301[5]; -extern const char http_302[5]; -extern const char http_get[5]; -extern const char http_10[9]; -extern const char http_11[9]; -extern const char http_content_type[15]; -extern const char http_texthtml[10]; -extern const char http_location[11]; -extern const char http_host[7]; -extern const char http_crnl[3]; -extern const char http_index_html[12]; -extern const char http_404_html[10]; -extern const char http_referer[9]; -extern const char http_header_200[84]; -extern const char http_header_404[91]; -extern const char http_content_type_plain[29]; -extern const char http_content_type_html[28]; -extern const char http_content_type_css [27]; -extern const char http_content_type_text[28]; -extern const char http_content_type_png [28]; -extern const char http_content_type_gif [28]; -extern const char http_content_type_jpg [29]; -extern const char http_content_type_binary[43]; -extern const char http_html[6]; -extern const char http_shtml[7]; -extern const char http_htm[5]; -extern const char http_css[5]; -extern const char http_png[5]; -extern const char http_gif[5]; -extern const char http_jpg[5]; -extern const char http_text[5]; -extern const char http_txt[5]; diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/httpd-cgi.c b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/httpd-cgi.c deleted file mode 100644 index cf9883e01..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/httpd-cgi.c +++ /dev/null @@ -1,276 +0,0 @@ -/** - * \addtogroup httpd - * @{ - */ - -/** - * \file - * Web server script interface - * \author - * Adam Dunkels - * - */ - -/* - * Copyright (c) 2001-2006, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: httpd-cgi.c,v 1.2 2006/06/11 21:46:37 adam Exp $ - * - */ - -#include "uip.h" -#include "psock.h" -#include "httpd.h" -#include "httpd-cgi.h" -#include "httpd-fs.h" - -#include -#include - -HTTPD_CGI_CALL(file, "file-stats", file_stats); -HTTPD_CGI_CALL(tcp, "tcp-connections", tcp_stats); -HTTPD_CGI_CALL(net, "net-stats", net_stats); -HTTPD_CGI_CALL(rtos, "rtos-stats", rtos_stats ); -HTTPD_CGI_CALL(io, "led-io", led_io ); - - -static const struct httpd_cgi_call * const calls[] = { &file, &tcp, &net, &rtos, &io, NULL }; - -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(nullfunction(struct httpd_state *s, char *ptr)) -{ - PSOCK_BEGIN(&s->sout); - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -httpd_cgifunction -httpd_cgi(char *name) -{ - const struct httpd_cgi_call **f; - - /* Find the matching name in the table, return the function. */ - for(f = calls; *f != NULL; ++f) { - if(strncmp((*f)->name, name, strlen((*f)->name)) == 0) { - return (*f)->function; - } - } - return nullfunction; -} -/*---------------------------------------------------------------------------*/ -static unsigned short -generate_file_stats(void *arg) -{ - char *f = (char *)arg; - return snprintf((char *)uip_appdata, UIP_APPDATA_SIZE, "%5u", httpd_fs_count(f)); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(file_stats(struct httpd_state *s, char *ptr)) -{ - PSOCK_BEGIN(&s->sout); - - PSOCK_GENERATOR_SEND(&s->sout, generate_file_stats, strchr(ptr, ' ') + 1); - - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -static const char closed[] = /* "CLOSED",*/ -{0x43, 0x4c, 0x4f, 0x53, 0x45, 0x44, 0}; -static const char syn_rcvd[] = /* "SYN-RCVD",*/ -{0x53, 0x59, 0x4e, 0x2d, 0x52, 0x43, 0x56, - 0x44, 0}; -static const char syn_sent[] = /* "SYN-SENT",*/ -{0x53, 0x59, 0x4e, 0x2d, 0x53, 0x45, 0x4e, - 0x54, 0}; -static const char established[] = /* "ESTABLISHED",*/ -{0x45, 0x53, 0x54, 0x41, 0x42, 0x4c, 0x49, 0x53, 0x48, - 0x45, 0x44, 0}; -static const char fin_wait_1[] = /* "FIN-WAIT-1",*/ -{0x46, 0x49, 0x4e, 0x2d, 0x57, 0x41, 0x49, - 0x54, 0x2d, 0x31, 0}; -static const char fin_wait_2[] = /* "FIN-WAIT-2",*/ -{0x46, 0x49, 0x4e, 0x2d, 0x57, 0x41, 0x49, - 0x54, 0x2d, 0x32, 0}; -static const char closing[] = /* "CLOSING",*/ -{0x43, 0x4c, 0x4f, 0x53, 0x49, - 0x4e, 0x47, 0}; -static const char time_wait[] = /* "TIME-WAIT,"*/ -{0x54, 0x49, 0x4d, 0x45, 0x2d, 0x57, 0x41, - 0x49, 0x54, 0}; -static const char last_ack[] = /* "LAST-ACK"*/ -{0x4c, 0x41, 0x53, 0x54, 0x2d, 0x41, 0x43, - 0x4b, 0}; - -static const char *states[] = { - closed, - syn_rcvd, - syn_sent, - established, - fin_wait_1, - fin_wait_2, - closing, - time_wait, - last_ack}; - - -static unsigned short -generate_tcp_stats(void *arg) -{ - struct uip_conn *conn; - struct httpd_state *s = (struct httpd_state *)arg; - - conn = &uip_conns[s->count]; - return snprintf((char *)uip_appdata, UIP_APPDATA_SIZE, - "%d%u.%u.%u.%u:%u%s%u%u%c %c\r\n", - htons(conn->lport), - htons(conn->ripaddr[0]) >> 8, - htons(conn->ripaddr[0]) & 0xff, - htons(conn->ripaddr[1]) >> 8, - htons(conn->ripaddr[1]) & 0xff, - htons(conn->rport), - states[conn->tcpstateflags & UIP_TS_MASK], - conn->nrtx, - conn->timer, - (uip_outstanding(conn))? '*':' ', - (uip_stopped(conn))? '!':' '); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(tcp_stats(struct httpd_state *s, char *ptr)) -{ - - PSOCK_BEGIN(&s->sout); - - for(s->count = 0; s->count < UIP_CONNS; ++s->count) { - if((uip_conns[s->count].tcpstateflags & UIP_TS_MASK) != UIP_CLOSED) { - PSOCK_GENERATOR_SEND(&s->sout, generate_tcp_stats, s); - } - } - - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -static unsigned short -generate_net_stats(void *arg) -{ - struct httpd_state *s = (struct httpd_state *)arg; - return snprintf((char *)uip_appdata, UIP_APPDATA_SIZE, - "%5u\n", ((uip_stats_t *)&uip_stat)[s->count]); -} - -static -PT_THREAD(net_stats(struct httpd_state *s, char *ptr)) -{ - PSOCK_BEGIN(&s->sout); - -#if UIP_STATISTICS - - for(s->count = 0; s->count < sizeof(uip_stat) / sizeof(uip_stats_t); - ++s->count) { - PSOCK_GENERATOR_SEND(&s->sout, generate_net_stats, s); - } - -#endif /* UIP_STATISTICS */ - - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ - -extern void vTaskList( char *pcWriteBuffer ); -static char cCountBuf[ 32 ]; -long lRefreshCount = 0; -static unsigned short -generate_rtos_stats(void *arg) -{ - lRefreshCount++; - sprintf( cCountBuf, "


Refresh count = %ld", lRefreshCount ); - vTaskList( ( char * ) uip_appdata ); - strcat( uip_appdata, cCountBuf ); - - return strlen( uip_appdata ); -} -/*---------------------------------------------------------------------------*/ - - -static -PT_THREAD(rtos_stats(struct httpd_state *s, char *ptr)) -{ - PSOCK_BEGIN(&s->sout); - PSOCK_GENERATOR_SEND(&s->sout, generate_rtos_stats, NULL); - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ - -char *pcStatus[ 3 ]; -unsigned long ulString; -extern unsigned long uxParTextGetLED( unsigned long uxLED ); - -static unsigned short generate_io_state( void *arg ) -{ - for( ulString = 0; ulString < 3; ulString++ ) - { - if( uxParTextGetLED( ulString + 5 ) ) - { - pcStatus[ ulString ] = "checked"; - } - else - { - pcStatus[ ulString ] = ""; - } - } - - sprintf( uip_appdata, - "LED 2.5,"\ - "LED 2.6,"\ - "LED 2.7"\ - "

"\ - "", - pcStatus[ 0 ], - pcStatus[ 1 ], - pcStatus[ 2 ] ); - - return strlen( uip_appdata ); -} - -static PT_THREAD(led_io(struct httpd_state *s, char *ptr)) -{ - PSOCK_BEGIN(&s->sout); - PSOCK_GENERATOR_SEND(&s->sout, generate_io_state, NULL); - PSOCK_END(&s->sout); -} - -/** @} */ - - - - - - diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/httpd-cgi.h b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/httpd-cgi.h deleted file mode 100644 index 7ae928321..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/httpd-cgi.h +++ /dev/null @@ -1,84 +0,0 @@ -/** - * \addtogroup httpd - * @{ - */ - -/** - * \file - * Web server script interface header file - * \author - * Adam Dunkels - * - */ - - - -/* - * Copyright (c) 2001, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: httpd-cgi.h,v 1.2 2006/06/11 21:46:38 adam Exp $ - * - */ - -#ifndef __HTTPD_CGI_H__ -#define __HTTPD_CGI_H__ - -#include "psock.h" -#include "httpd.h" - -typedef PT_THREAD((* httpd_cgifunction)(struct httpd_state *, char *)); - -httpd_cgifunction httpd_cgi(char *name); - -struct httpd_cgi_call { - const char *name; - const httpd_cgifunction function; -}; - -/** - * \brief HTTPD CGI function declaration - * \param name The C variable name of the function - * \param str The string name of the function, used in the script file - * \param function A pointer to the function that implements it - * - * This macro is used for declaring a HTTPD CGI - * function. This function is then added to the list of - * HTTPD CGI functions with the httpd_cgi_add() function. - * - * \hideinitializer - */ -#define HTTPD_CGI_CALL(name, str, function) \ -static PT_THREAD(function(struct httpd_state *, char *)); \ -static const struct httpd_cgi_call name = {str, function} - -void httpd_cgi_init(void); -#endif /* __HTTPD_CGI_H__ */ - -/** @} */ diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/httpd-fs.c b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/httpd-fs.c deleted file mode 100644 index dc4aef011..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/httpd-fs.c +++ /dev/null @@ -1,132 +0,0 @@ -/* - * Copyright (c) 2001, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - * $Id: httpd-fs.c,v 1.1 2006/06/07 09:13:08 adam Exp $ - */ - -#include "httpd.h" -#include "httpd-fs.h" -#include "httpd-fsdata.h" - -#ifndef NULL -#define NULL 0 -#endif /* NULL */ - -#include "httpd-fsdata.c" - -#if HTTPD_FS_STATISTICS -static u16_t count[HTTPD_FS_NUMFILES]; -#endif /* HTTPD_FS_STATISTICS */ - -/*-----------------------------------------------------------------------------------*/ -static u8_t -httpd_fs_strcmp(const char *str1, const char *str2) -{ - u8_t i; - i = 0; - loop: - - if(str2[i] == 0 || - str1[i] == '\r' || - str1[i] == '\n') { - return 0; - } - - if(str1[i] != str2[i]) { - return 1; - } - - - ++i; - goto loop; -} -/*-----------------------------------------------------------------------------------*/ -int -httpd_fs_open(const char *name, struct httpd_fs_file *file) -{ -#if HTTPD_FS_STATISTICS - u16_t i = 0; -#endif /* HTTPD_FS_STATISTICS */ - struct httpd_fsdata_file_noconst *f; - - for(f = (struct httpd_fsdata_file_noconst *)HTTPD_FS_ROOT; - f != NULL; - f = (struct httpd_fsdata_file_noconst *)f->next) { - - if(httpd_fs_strcmp(name, f->name) == 0) { - file->data = f->data; - file->len = f->len; -#if HTTPD_FS_STATISTICS - ++count[i]; -#endif /* HTTPD_FS_STATISTICS */ - return 1; - } -#if HTTPD_FS_STATISTICS - ++i; -#endif /* HTTPD_FS_STATISTICS */ - - } - return 0; -} -/*-----------------------------------------------------------------------------------*/ -void -httpd_fs_init(void) -{ -#if HTTPD_FS_STATISTICS - u16_t i; - for(i = 0; i < HTTPD_FS_NUMFILES; i++) { - count[i] = 0; - } -#endif /* HTTPD_FS_STATISTICS */ -} -/*-----------------------------------------------------------------------------------*/ -#if HTTPD_FS_STATISTICS -u16_t httpd_fs_count -(char *name) -{ - struct httpd_fsdata_file_noconst *f; - u16_t i; - - i = 0; - for(f = (struct httpd_fsdata_file_noconst *)HTTPD_FS_ROOT; - f != NULL; - f = (struct httpd_fsdata_file_noconst *)f->next) { - - if(httpd_fs_strcmp(name, f->name) == 0) { - return count[i]; - } - ++i; - } - return 0; -} -#endif /* HTTPD_FS_STATISTICS */ -/*-----------------------------------------------------------------------------------*/ diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/httpd-fs.h b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/httpd-fs.h deleted file mode 100644 index b594eea56..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/httpd-fs.h +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright (c) 2001, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - * $Id: httpd-fs.h,v 1.1 2006/06/07 09:13:08 adam Exp $ - */ -#ifndef __HTTPD_FS_H__ -#define __HTTPD_FS_H__ - -#define HTTPD_FS_STATISTICS 1 - -struct httpd_fs_file { - char *data; - int len; -}; - -/* file must be allocated by caller and will be filled in - by the function. */ -int httpd_fs_open(const char *name, struct httpd_fs_file *file); - -#ifdef HTTPD_FS_STATISTICS -#if HTTPD_FS_STATISTICS == 1 -u16_t httpd_fs_count(char *name); -#endif /* HTTPD_FS_STATISTICS */ -#endif /* HTTPD_FS_STATISTICS */ - -void httpd_fs_init(void); - -#endif /* __HTTPD_FS_H__ */ diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/httpd-fs/404.html b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/httpd-fs/404.html deleted file mode 100644 index 43e7f4cad..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/httpd-fs/404.html +++ /dev/null @@ -1,8 +0,0 @@ - - -

-

404 - file not found

-

Go here instead.

-
- - \ No newline at end of file diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/httpd-fs/index.html b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/httpd-fs/index.html deleted file mode 100644 index 1d3bbeee1..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/httpd-fs/index.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Loading index.shtml. Click here if not automatically redirected. - - - - - diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/httpd-fs/index.shtml b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/httpd-fs/index.shtml deleted file mode 100644 index 0ce405ba0..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/httpd-fs/index.shtml +++ /dev/null @@ -1,20 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -RTOS Stats | TCP Stats | Connections | FreeRTOS.org Homepage | IO -

-


-

-

Task statistics

-Page will refresh evey 2 seconds.

-

Task          State  Priority  Stack	#
************************************************
-%! rtos-stats -
-
- - - diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/httpd-fs/io.shtml b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/httpd-fs/io.shtml deleted file mode 100644 index 0ffdbff7c..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/httpd-fs/io.shtml +++ /dev/null @@ -1,28 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -RTOS Stats | TCP Stats | Connections | FreeRTOS.org Homepage | IO -

-


-LED and LCD IO
- -

- -Use the check boxes to select the LED's to turn on or off, enter text to display on the LCD, then click "Update IO". - - -

-

-%! led-io -

- -

-

- - - - diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/httpd-fs/stats.shtml b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/httpd-fs/stats.shtml deleted file mode 100644 index d762f40d8..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/httpd-fs/stats.shtml +++ /dev/null @@ -1,41 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -RTOS Stats | TCP Stats | Connections | FreeRTOS.org Homepage | IO -

-


-

-

Network statistics

- -
-IP           Packets dropped
-             Packets received
-             Packets sent
-IP errors    IP version/header length
-             IP length, high byte
-             IP length, low byte
-             IP fragments
-             Header checksum
-             Wrong protocol
-ICMP	     Packets dropped
-             Packets received
-             Packets sent
-             Type errors
-TCP          Packets dropped
-             Packets received
-             Packets sent
-             Checksum errors
-             Data packets without ACKs
-             Resets
-             Retransmissions
-	     No connection avaliable
-	     Connection attempts to closed ports
-
%! net-stats
-
-
- - diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/httpd-fs/tcp.shtml b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/httpd-fs/tcp.shtml deleted file mode 100644 index 654d61f21..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/httpd-fs/tcp.shtml +++ /dev/null @@ -1,21 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -RTOS Stats | TCP Stats | Connections | FreeRTOS.org Homepage | IO -

-


-
-

Network connections

-

- - -%! tcp-connections - - - - - diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/httpd-fsdata.c b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/httpd-fsdata.c deleted file mode 100644 index e7e29e344..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/httpd-fsdata.c +++ /dev/null @@ -1,470 +0,0 @@ -static const unsigned char data_404_html[] = { - /* /404.html */ - 0x2f, 0x34, 0x30, 0x34, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, 0xa, 0x20, 0x20, - 0x3c, 0x62, 0x6f, 0x64, 0x79, 0x20, 0x62, 0x67, 0x63, 0x6f, - 0x6c, 0x6f, 0x72, 0x3d, 0x22, 0x77, 0x68, 0x69, 0x74, 0x65, - 0x22, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x63, - 0x65, 0x6e, 0x74, 0x65, 0x72, 0x3e, 0xd, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x3c, 0x68, 0x31, 0x3e, 0x34, 0x30, - 0x34, 0x20, 0x2d, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x6e, - 0x6f, 0x74, 0x20, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x3c, 0x2f, - 0x68, 0x31, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x3c, 0x68, 0x33, 0x3e, 0x47, 0x6f, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x2f, 0x22, 0x3e, - 0x68, 0x65, 0x72, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x69, - 0x6e, 0x73, 0x74, 0x65, 0x61, 0x64, 0x2e, 0x3c, 0x2f, 0x68, - 0x33, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x2f, - 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x3e, 0xd, 0xa, 0x20, - 0x20, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xd, 0xa, - 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0}; - -static const unsigned char data_index_html[] = { - /* /index.html */ - 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x20, 0x6f, 0x6e, 0x4c, 0x6f, 0x61, 0x64, - 0x3d, 0x22, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x73, - 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x28, - 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x6c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x68, 0x72, 0x65, 0x66, 0x3d, - 0x27, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, - 0x6d, 0x6c, 0x27, 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x2c, - 0x31, 0x30, 0x30, 0x29, 0x22, 0x62, 0x67, 0x63, 0x6f, 0x6c, - 0x6f, 0x72, 0x3d, 0x22, 0x23, 0x43, 0x43, 0x43, 0x43, 0x66, - 0x66, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x6e, 0x74, - 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, 0x69, - 0x61, 0x6c, 0x22, 0x3e, 0xd, 0xa, 0x4c, 0x6f, 0x61, 0x64, - 0x69, 0x6e, 0x67, 0x20, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x2e, 0x20, 0x20, 0x43, 0x6c, - 0x69, 0x63, 0x6b, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, - 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, - 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x68, 0x65, 0x72, 0x65, - 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x69, 0x66, 0x20, 0x6e, 0x6f, - 0x74, 0x20, 0x61, 0x75, 0x74, 0x6f, 0x6d, 0x61, 0x74, 0x69, - 0x63, 0x61, 0x6c, 0x6c, 0x79, 0x20, 0x72, 0x65, 0x64, 0x69, - 0x72, 0x65, 0x63, 0x74, 0x65, 0x64, 0x2e, 0xd, 0xa, 0x3c, - 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xd, 0xa, 0x3c, 0x2f, - 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x62, - 0x6f, 0x64, 0x79, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x68, 0x74, - 0x6d, 0x6c, 0x3e, 0xd, 0xa, 0xd, 0xa, 0}; - -static const unsigned char data_index_shtml[] = { - /* /index.shtml */ - 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x20, 0x6f, 0x6e, 0x4c, 0x6f, 0x61, 0x64, - 0x3d, 0x22, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x73, - 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x28, - 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x6c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x68, 0x72, 0x65, 0x66, 0x3d, - 0x27, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, - 0x6d, 0x6c, 0x27, 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x2c, - 0x32, 0x30, 0x30, 0x30, 0x29, 0x22, 0x62, 0x67, 0x63, 0x6f, - 0x6c, 0x6f, 0x72, 0x3d, 0x22, 0x23, 0x43, 0x43, 0x43, 0x43, - 0x66, 0x66, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x6e, - 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, - 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x61, 0x20, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x52, - 0x54, 0x4f, 0x53, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, - 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x43, 0x50, 0x20, 0x53, - 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, 0x63, 0x70, - 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x43, 0x6f, - 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, - 0x77, 0x77, 0x2e, 0x66, 0x72, 0x65, 0x65, 0x72, 0x74, 0x6f, - 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x22, 0x3e, 0x46, 0x72, - 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, 0x72, 0x67, - 0x20, 0x48, 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0xd, 0xa, - 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, - 0x68, 0x72, 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, - 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x32, 0x3e, 0x54, 0x61, - 0x73, 0x6b, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, - 0x69, 0x63, 0x73, 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0xd, 0xa, - 0x50, 0x61, 0x67, 0x65, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, - 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x20, 0x65, 0x76, - 0x65, 0x79, 0x20, 0x32, 0x20, 0x73, 0x65, 0x63, 0x6f, 0x6e, - 0x64, 0x73, 0x2e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x66, - 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, - 0x63, 0x6f, 0x75, 0x72, 0x69, 0x65, 0x72, 0x22, 0x3e, 0x3c, - 0x70, 0x72, 0x65, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x53, 0x74, - 0x61, 0x74, 0x65, 0x20, 0x20, 0x50, 0x72, 0x69, 0x6f, 0x72, - 0x69, 0x74, 0x79, 0x20, 0x20, 0x53, 0x74, 0x61, 0x63, 0x6b, - 0x9, 0x23, 0x3c, 0x62, 0x72, 0x3e, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x3c, 0x62, 0x72, 0x3e, 0xd, 0xa, - 0x25, 0x21, 0x20, 0x72, 0x74, 0x6f, 0x73, 0x2d, 0x73, 0x74, - 0x61, 0x74, 0x73, 0xd, 0xa, 0x3c, 0x2f, 0x70, 0x72, 0x65, - 0x3e, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xd, 0xa, - 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xd, 0xa, 0x3c, - 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xd, 0xa, 0x3c, 0x2f, - 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, 0xa, 0xd, 0xa, 0}; - -static const unsigned char data_io_shtml[] = { - /* /io.shtml */ - 0x2f, 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x20, 0x62, 0x67, 0x63, 0x6f, 0x6c, 0x6f, - 0x72, 0x3d, 0x22, 0x23, 0x43, 0x43, 0x43, 0x43, 0x66, 0x66, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, - 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, 0x69, 0x61, - 0x6c, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x52, 0x54, 0x4f, - 0x53, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, - 0x6c, 0x22, 0x3e, 0x54, 0x43, 0x50, 0x20, 0x53, 0x74, 0x61, - 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, 0x63, 0x70, 0x2e, 0x73, - 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, - 0x2e, 0x66, 0x72, 0x65, 0x65, 0x72, 0x74, 0x6f, 0x73, 0x2e, - 0x6f, 0x72, 0x67, 0x2f, 0x22, 0x3e, 0x46, 0x72, 0x65, 0x65, - 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x48, - 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0xd, 0xa, 0x3c, 0x62, - 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x72, - 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x3e, 0x4c, 0x45, 0x44, 0x20, - 0x61, 0x6e, 0x64, 0x20, 0x4c, 0x43, 0x44, 0x20, 0x49, 0x4f, - 0x3c, 0x2f, 0x62, 0x3e, 0x3c, 0x62, 0x72, 0x3e, 0xd, 0xa, - 0xd, 0xa, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0xd, 0xa, 0x55, - 0x73, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x68, 0x65, - 0x63, 0x6b, 0x20, 0x62, 0x6f, 0x78, 0x65, 0x73, 0x20, 0x74, - 0x6f, 0x20, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x20, 0x74, - 0x68, 0x65, 0x20, 0x4c, 0x45, 0x44, 0x27, 0x73, 0x20, 0x74, - 0x6f, 0x20, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6f, 0x6e, 0x20, - 0x6f, 0x72, 0x20, 0x6f, 0x66, 0x66, 0x2c, 0x20, 0x65, 0x6e, - 0x74, 0x65, 0x72, 0x20, 0x74, 0x65, 0x78, 0x74, 0x20, 0x74, - 0x6f, 0x20, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x20, - 0x6f, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x4c, 0x43, 0x44, - 0x2c, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x20, 0x63, 0x6c, 0x69, - 0x63, 0x6b, 0x20, 0x22, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x20, 0x49, 0x4f, 0x22, 0x2e, 0xd, 0xa, 0xd, 0xa, 0xd, - 0xa, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x72, - 0x6d, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x22, 0x61, 0x46, - 0x6f, 0x72, 0x6d, 0x22, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x3d, 0x22, 0x2f, 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, - 0x6d, 0x6c, 0x22, 0x20, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, - 0x3d, 0x22, 0x67, 0x65, 0x74, 0x22, 0x3e, 0xd, 0xa, 0x25, - 0x21, 0x20, 0x6c, 0x65, 0x64, 0x2d, 0x69, 0x6f, 0xd, 0xa, - 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x69, 0x6e, 0x70, 0x75, - 0x74, 0x20, 0x74, 0x79, 0x70, 0x65, 0x3d, 0x22, 0x73, 0x75, - 0x62, 0x6d, 0x69, 0x74, 0x22, 0x20, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x3d, 0x22, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, - 0x49, 0x4f, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, - 0x72, 0x6d, 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, - 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, - 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, - 0xd, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, - 0xa, 0xd, 0xa, 0}; - -static const unsigned char data_stats_shtml[] = { - /* /stats.shtml */ - 0x2f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x20, 0x62, 0x67, 0x63, 0x6f, 0x6c, 0x6f, - 0x72, 0x3d, 0x22, 0x23, 0x43, 0x43, 0x43, 0x43, 0x66, 0x66, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, - 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, 0x69, 0x61, - 0x6c, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x52, 0x54, 0x4f, - 0x53, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, - 0x6c, 0x22, 0x3e, 0x54, 0x43, 0x50, 0x20, 0x53, 0x74, 0x61, - 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, 0x63, 0x70, 0x2e, 0x73, - 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, - 0x2e, 0x66, 0x72, 0x65, 0x65, 0x72, 0x74, 0x6f, 0x73, 0x2e, - 0x6f, 0x72, 0x67, 0x2f, 0x22, 0x3e, 0x46, 0x72, 0x65, 0x65, - 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x48, - 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0xd, 0xa, 0x3c, 0x62, - 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x72, - 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, - 0xd, 0xa, 0x3c, 0x68, 0x32, 0x3e, 0x4e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, - 0x74, 0x69, 0x63, 0x73, 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0xd, - 0xa, 0x3c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x77, 0x69, - 0x64, 0x74, 0x68, 0x3d, 0x22, 0x33, 0x30, 0x30, 0x22, 0x20, - 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x3d, 0x22, 0x30, 0x22, - 0x3e, 0xd, 0xa, 0x3c, 0x74, 0x72, 0x3e, 0x3c, 0x74, 0x64, - 0x20, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x3d, 0x22, 0x6c, 0x65, - 0x66, 0x74, 0x22, 0x3e, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, - 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x63, 0x6f, 0x75, 0x72, - 0x69, 0x65, 0x72, 0x22, 0x3e, 0x3c, 0x70, 0x72, 0x65, 0x3e, - 0xd, 0xa, 0x49, 0x50, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, - 0x74, 0x73, 0x20, 0x64, 0x72, 0x6f, 0x70, 0x70, 0x65, 0x64, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, - 0x74, 0x73, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, - 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, 0xd, 0xa, - 0x49, 0x50, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x20, - 0x20, 0x20, 0x20, 0x49, 0x50, 0x20, 0x76, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, - 0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0xd, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x49, 0x50, 0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, - 0x68, 0x2c, 0x20, 0x68, 0x69, 0x67, 0x68, 0x20, 0x62, 0x79, - 0x74, 0x65, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x49, 0x50, 0x20, - 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x2c, 0x20, 0x6c, 0x6f, - 0x77, 0x20, 0x62, 0x79, 0x74, 0x65, 0xd, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x49, 0x50, 0x20, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, - 0x6e, 0x74, 0x73, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x48, 0x65, - 0x61, 0x64, 0x65, 0x72, 0x20, 0x63, 0x68, 0x65, 0x63, 0x6b, - 0x73, 0x75, 0x6d, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x57, 0x72, - 0x6f, 0x6e, 0x67, 0x20, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, - 0x6f, 0x6c, 0xd, 0xa, 0x49, 0x43, 0x4d, 0x50, 0x9, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x73, 0x20, 0x64, 0x72, 0x6f, 0x70, 0x70, 0x65, 0x64, 0xd, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x73, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, - 0x74, 0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, 0xd, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x54, 0x79, 0x70, 0x65, 0x20, 0x65, 0x72, 0x72, - 0x6f, 0x72, 0x73, 0xd, 0xa, 0x54, 0x43, 0x50, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, - 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x64, 0x72, 0x6f, 0x70, - 0x70, 0x65, 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, - 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x72, 0x65, 0x63, 0x65, - 0x69, 0x76, 0x65, 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, - 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x73, 0x65, 0x6e, - 0x74, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x43, 0x68, 0x65, 0x63, - 0x6b, 0x73, 0x75, 0x6d, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, - 0x73, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x44, 0x61, 0x74, 0x61, - 0x20, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x77, - 0x69, 0x74, 0x68, 0x6f, 0x75, 0x74, 0x20, 0x41, 0x43, 0x4b, - 0x73, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x52, 0x65, 0x73, 0x65, - 0x74, 0x73, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x52, 0x65, 0x74, - 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, - 0x6e, 0x73, 0xd, 0xa, 0x9, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x4e, 0x6f, 0x20, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x20, 0x61, 0x76, 0x61, 0x6c, 0x69, 0x61, - 0x62, 0x6c, 0x65, 0xd, 0xa, 0x9, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x20, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x73, - 0x20, 0x74, 0x6f, 0x20, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x64, - 0x20, 0x70, 0x6f, 0x72, 0x74, 0x73, 0xd, 0xa, 0x3c, 0x2f, - 0x70, 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, - 0x3e, 0x3c, 0x2f, 0x74, 0x64, 0x3e, 0x3c, 0x74, 0x64, 0x3e, - 0x3c, 0x70, 0x72, 0x65, 0x3e, 0x25, 0x21, 0x20, 0x6e, 0x65, - 0x74, 0x2d, 0x73, 0x74, 0x61, 0x74, 0x73, 0xd, 0xa, 0x3c, - 0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x74, 0x61, 0x62, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, - 0x74, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, - 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0}; - -static const unsigned char data_tcp_shtml[] = { - /* /tcp.shtml */ - 0x2f, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x20, 0x62, 0x67, 0x63, 0x6f, 0x6c, 0x6f, - 0x72, 0x3d, 0x22, 0x23, 0x43, 0x43, 0x43, 0x43, 0x66, 0x66, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, - 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, 0x69, 0x61, - 0x6c, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x52, 0x54, 0x4f, - 0x53, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, - 0x6c, 0x22, 0x3e, 0x54, 0x43, 0x50, 0x20, 0x53, 0x74, 0x61, - 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, 0x63, 0x70, 0x2e, 0x73, - 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, - 0x2e, 0x66, 0x72, 0x65, 0x65, 0x72, 0x74, 0x6f, 0x73, 0x2e, - 0x6f, 0x72, 0x67, 0x2f, 0x22, 0x3e, 0x46, 0x72, 0x65, 0x65, - 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x48, - 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0xd, 0xa, 0x3c, 0x62, - 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x72, - 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0xd, 0xa, 0x3c, - 0x68, 0x32, 0x3e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, - 0x20, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0xd, 0xa, 0x3c, - 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x74, 0x61, 0x62, 0x6c, 0x65, - 0x3e, 0xd, 0xa, 0x3c, 0x74, 0x72, 0x3e, 0x3c, 0x74, 0x68, - 0x3e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x3c, 0x2f, 0x74, 0x68, - 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x52, 0x65, 0x6d, 0x6f, 0x74, - 0x65, 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, - 0x53, 0x74, 0x61, 0x74, 0x65, 0x3c, 0x2f, 0x74, 0x68, 0x3e, - 0x3c, 0x74, 0x68, 0x3e, 0x52, 0x65, 0x74, 0x72, 0x61, 0x6e, - 0x73, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x3c, - 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x54, 0x69, - 0x6d, 0x65, 0x72, 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, - 0x68, 0x3e, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x3c, 0x2f, 0x74, - 0x68, 0x3e, 0x3c, 0x2f, 0x74, 0x72, 0x3e, 0xd, 0xa, 0x25, - 0x21, 0x20, 0x74, 0x63, 0x70, 0x2d, 0x63, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0xd, 0xa, 0x3c, - 0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, - 0x74, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, - 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, - 0xd, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, - 0xa, 0xd, 0xa, 0}; - -const struct httpd_fsdata_file file_404_html[] = {{NULL, data_404_html, data_404_html + 10, sizeof(data_404_html) - 10}}; - -const struct httpd_fsdata_file file_index_html[] = {{file_404_html, data_index_html, data_index_html + 12, sizeof(data_index_html) - 12}}; - -const struct httpd_fsdata_file file_index_shtml[] = {{file_index_html, data_index_shtml, data_index_shtml + 13, sizeof(data_index_shtml) - 13}}; - -const struct httpd_fsdata_file file_io_shtml[] = {{file_index_shtml, data_io_shtml, data_io_shtml + 10, sizeof(data_io_shtml) - 10}}; - -const struct httpd_fsdata_file file_stats_shtml[] = {{file_io_shtml, data_stats_shtml, data_stats_shtml + 13, sizeof(data_stats_shtml) - 13}}; - -const struct httpd_fsdata_file file_tcp_shtml[] = {{file_stats_shtml, data_tcp_shtml, data_tcp_shtml + 11, sizeof(data_tcp_shtml) - 11}}; - -#define HTTPD_FS_ROOT file_tcp_shtml - -#define HTTPD_FS_NUMFILES 6 diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/httpd-fsdata.h b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/httpd-fsdata.h deleted file mode 100644 index 52d35c265..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/httpd-fsdata.h +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright (c) 2001, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - * $Id: httpd-fsdata.h,v 1.1 2006/06/07 09:13:08 adam Exp $ - */ -#ifndef __HTTPD_FSDATA_H__ -#define __HTTPD_FSDATA_H__ - -#include "uip.h" - -struct httpd_fsdata_file { - const struct httpd_fsdata_file *next; - const char *name; - const char *data; - const int len; -#ifdef HTTPD_FS_STATISTICS -#if HTTPD_FS_STATISTICS == 1 - u16_t count; -#endif /* HTTPD_FS_STATISTICS */ -#endif /* HTTPD_FS_STATISTICS */ -}; - -struct httpd_fsdata_file_noconst { - struct httpd_fsdata_file *next; - char *name; - char *data; - int len; -#ifdef HTTPD_FS_STATISTICS -#if HTTPD_FS_STATISTICS == 1 - u16_t count; -#endif /* HTTPD_FS_STATISTICS */ -#endif /* HTTPD_FS_STATISTICS */ -}; - -#endif /* __HTTPD_FSDATA_H__ */ diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/httpd.c b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/httpd.c deleted file mode 100644 index 644cf16b7..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/httpd.c +++ /dev/null @@ -1,346 +0,0 @@ -/** - * \addtogroup apps - * @{ - */ - -/** - * \defgroup httpd Web server - * @{ - * The uIP web server is a very simplistic implementation of an HTTP - * server. It can serve web pages and files from a read-only ROM - * filesystem, and provides a very small scripting language. - - */ - -/** - * \file - * Web server - * \author - * Adam Dunkels - */ - - -/* - * Copyright (c) 2004, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * Author: Adam Dunkels - * - * $Id: httpd.c,v 1.2 2006/06/11 21:46:38 adam Exp $ - */ - -#include "uip.h" -#include "httpd.h" -#include "httpd-fs.h" -#include "httpd-cgi.h" -#include "http-strings.h" - -#include - -#define STATE_WAITING 0 -#define STATE_OUTPUT 1 - -#define ISO_nl 0x0a -#define ISO_space 0x20 -#define ISO_bang 0x21 -#define ISO_percent 0x25 -#define ISO_period 0x2e -#define ISO_slash 0x2f -#define ISO_colon 0x3a - - -/*---------------------------------------------------------------------------*/ -static unsigned short -generate_part_of_file(void *state) -{ - struct httpd_state *s = (struct httpd_state *)state; - - if(s->file.len > uip_mss()) { - s->len = uip_mss(); - } else { - s->len = s->file.len; - } - memcpy(uip_appdata, s->file.data, s->len); - - return s->len; -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(send_file(struct httpd_state *s)) -{ - PSOCK_BEGIN(&s->sout); - - do { - PSOCK_GENERATOR_SEND(&s->sout, generate_part_of_file, s); - s->file.len -= s->len; - s->file.data += s->len; - } while(s->file.len > 0); - - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(send_part_of_file(struct httpd_state *s)) -{ - PSOCK_BEGIN(&s->sout); - - PSOCK_SEND(&s->sout, s->file.data, s->len); - - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -static void -next_scriptstate(struct httpd_state *s) -{ - char *p; - p = strchr(s->scriptptr, ISO_nl) + 1; - s->scriptlen -= (unsigned short)(p - s->scriptptr); - s->scriptptr = p; -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(handle_script(struct httpd_state *s)) -{ - char *ptr; - - PT_BEGIN(&s->scriptpt); - - - while(s->file.len > 0) { - - /* Check if we should start executing a script. */ - if(*s->file.data == ISO_percent && - *(s->file.data + 1) == ISO_bang) { - s->scriptptr = s->file.data + 3; - s->scriptlen = s->file.len - 3; - if(*(s->scriptptr - 1) == ISO_colon) { - httpd_fs_open(s->scriptptr + 1, &s->file); - PT_WAIT_THREAD(&s->scriptpt, send_file(s)); - } else { - PT_WAIT_THREAD(&s->scriptpt, - httpd_cgi(s->scriptptr)(s, s->scriptptr)); - } - next_scriptstate(s); - - /* The script is over, so we reset the pointers and continue - sending the rest of the file. */ - s->file.data = s->scriptptr; - s->file.len = s->scriptlen; - } else { - /* See if we find the start of script marker in the block of HTML - to be sent. */ - - if(s->file.len > uip_mss()) { - s->len = uip_mss(); - } else { - s->len = s->file.len; - } - - if(*s->file.data == ISO_percent) { - ptr = strchr(s->file.data + 1, ISO_percent); - } else { - ptr = strchr(s->file.data, ISO_percent); - } - if(ptr != NULL && - ptr != s->file.data) { - s->len = (int)(ptr - s->file.data); - if(s->len >= uip_mss()) { - s->len = uip_mss(); - } - } - PT_WAIT_THREAD(&s->scriptpt, send_part_of_file(s)); - s->file.data += s->len; - s->file.len -= s->len; - - } - } - - PT_END(&s->scriptpt); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(send_headers(struct httpd_state *s, const char *statushdr)) -{ - char *ptr; - - PSOCK_BEGIN(&s->sout); - - PSOCK_SEND_STR(&s->sout, statushdr); - - ptr = strrchr(s->filename, ISO_period); - if(ptr == NULL) { - PSOCK_SEND_STR(&s->sout, http_content_type_binary); - } else if(strncmp(http_html, ptr, 5) == 0 || - strncmp(http_shtml, ptr, 6) == 0) { - PSOCK_SEND_STR(&s->sout, http_content_type_html); - } else if(strncmp(http_css, ptr, 4) == 0) { - PSOCK_SEND_STR(&s->sout, http_content_type_css); - } else if(strncmp(http_png, ptr, 4) == 0) { - PSOCK_SEND_STR(&s->sout, http_content_type_png); - } else if(strncmp(http_gif, ptr, 4) == 0) { - PSOCK_SEND_STR(&s->sout, http_content_type_gif); - } else if(strncmp(http_jpg, ptr, 4) == 0) { - PSOCK_SEND_STR(&s->sout, http_content_type_jpg); - } else { - PSOCK_SEND_STR(&s->sout, http_content_type_plain); - } - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(handle_output(struct httpd_state *s)) -{ - char *ptr; - - PT_BEGIN(&s->outputpt); - - if(!httpd_fs_open(s->filename, &s->file)) { - httpd_fs_open(http_404_html, &s->file); - strcpy(s->filename, http_404_html); - PT_WAIT_THREAD(&s->outputpt, - send_headers(s, - http_header_404)); - PT_WAIT_THREAD(&s->outputpt, - send_file(s)); - } else { - PT_WAIT_THREAD(&s->outputpt, - send_headers(s, - http_header_200)); - ptr = strchr(s->filename, ISO_period); - if(ptr != NULL && strncmp(ptr, http_shtml, 6) == 0) { - PT_INIT(&s->scriptpt); - PT_WAIT_THREAD(&s->outputpt, handle_script(s)); - } else { - PT_WAIT_THREAD(&s->outputpt, - send_file(s)); - } - } - PSOCK_CLOSE(&s->sout); - PT_END(&s->outputpt); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(handle_input(struct httpd_state *s)) -{ - PSOCK_BEGIN(&s->sin); - - PSOCK_READTO(&s->sin, ISO_space); - - - if(strncmp(s->inputbuf, http_get, 4) != 0) { - PSOCK_CLOSE_EXIT(&s->sin); - } - PSOCK_READTO(&s->sin, ISO_space); - - if(s->inputbuf[0] != ISO_slash) { - PSOCK_CLOSE_EXIT(&s->sin); - } - - if(s->inputbuf[1] == ISO_space) { - strncpy(s->filename, http_index_html, sizeof(s->filename)); - } else { - - s->inputbuf[PSOCK_DATALEN(&s->sin) - 1] = 0; - - /* Process any form input being sent to the server. */ - { - extern void vApplicationProcessFormInput( char *pcInputString, long xInputLength ); - vApplicationProcessFormInput( s->inputbuf, PSOCK_DATALEN(&s->sin) ); - } - - strncpy(s->filename, &s->inputbuf[0], sizeof(s->filename)); - } - - /* httpd_log_file(uip_conn->ripaddr, s->filename);*/ - - s->state = STATE_OUTPUT; - - while(1) { - PSOCK_READTO(&s->sin, ISO_nl); - - if(strncmp(s->inputbuf, http_referer, 8) == 0) { - s->inputbuf[PSOCK_DATALEN(&s->sin) - 2] = 0; - /* httpd_log(&s->inputbuf[9]);*/ - } - } - - PSOCK_END(&s->sin); -} -/*---------------------------------------------------------------------------*/ -static void -handle_connection(struct httpd_state *s) -{ - handle_input(s); - if(s->state == STATE_OUTPUT) { - handle_output(s); - } -} -/*---------------------------------------------------------------------------*/ -void -httpd_appcall(void) -{ - struct httpd_state *s = (struct httpd_state *)&(uip_conn->appstate); - - if(uip_closed() || uip_aborted() || uip_timedout()) { - } else if(uip_connected()) { - PSOCK_INIT(&s->sin, s->inputbuf, sizeof(s->inputbuf) - 1); - PSOCK_INIT(&s->sout, s->inputbuf, sizeof(s->inputbuf) - 1); - PT_INIT(&s->outputpt); - s->state = STATE_WAITING; - /* timer_set(&s->timer, CLOCK_SECOND * 100);*/ - s->timer = 0; - handle_connection(s); - } else if(s != NULL) { - if(uip_poll()) { - ++s->timer; - if(s->timer >= 20) { - uip_abort(); - } - } else { - s->timer = 0; - } - handle_connection(s); - } else { - uip_abort(); - } -} -/*---------------------------------------------------------------------------*/ -/** - * \brief Initialize the web server - * - * This function initializes the web server and should be - * called at system boot-up. - */ -void -httpd_init(void) -{ - uip_listen(HTONS(80)); -} -/*---------------------------------------------------------------------------*/ -/** @} */ diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/httpd.h b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/httpd.h deleted file mode 100644 index 7f7a6666e..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/httpd.h +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright (c) 2001-2005, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: httpd.h,v 1.2 2006/06/11 21:46:38 adam Exp $ - * - */ - -#ifndef __HTTPD_H__ -#define __HTTPD_H__ - -#include "psock.h" -#include "httpd-fs.h" - -struct httpd_state { - unsigned char timer; - struct psock sin, sout; - struct pt outputpt, scriptpt; - char inputbuf[50]; - char filename[20]; - char state; - struct httpd_fs_file file; - int len; - char *scriptptr; - int scriptlen; - - unsigned short count; -}; - -void httpd_init(void); -void httpd_appcall(void); - -void httpd_log(char *msg); -void httpd_log_file(u16_t *requester, char *file); - -#endif /* __HTTPD_H__ */ diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/makefsdata b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/makefsdata deleted file mode 100644 index 8d2715a8a..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/makefsdata +++ /dev/null @@ -1,78 +0,0 @@ -#!/usr/bin/perl - -open(OUTPUT, "> httpd-fsdata.c"); - -chdir("httpd-fs"); - -opendir(DIR, "."); -@files = grep { !/^\./ && !/(CVS|~)/ } readdir(DIR); -closedir(DIR); - -foreach $file (@files) { - - if(-d $file && $file !~ /^\./) { - print "Processing directory $file\n"; - opendir(DIR, $file); - @newfiles = grep { !/^\./ && !/(CVS|~)/ } readdir(DIR); - closedir(DIR); - printf "Adding files @newfiles\n"; - @files = (@files, map { $_ = "$file/$_" } @newfiles); - next; - } -} - -foreach $file (@files) { - if(-f $file) { - - print "Adding file $file\n"; - - open(FILE, $file) || die "Could not open file $file\n"; - - $file =~ s-^-/-; - $fvar = $file; - $fvar =~ s-/-_-g; - $fvar =~ s-\.-_-g; - # for AVR, add PROGMEM here - print(OUTPUT "static const unsigned char data".$fvar."[] = {\n"); - print(OUTPUT "\t/* $file */\n\t"); - for($j = 0; $j < length($file); $j++) { - printf(OUTPUT "%#02x, ", unpack("C", substr($file, $j, 1))); - } - printf(OUTPUT "0,\n"); - - - $i = 0; - while(read(FILE, $data, 1)) { - if($i == 0) { - print(OUTPUT "\t"); - } - printf(OUTPUT "%#02x, ", unpack("C", $data)); - $i++; - if($i == 10) { - print(OUTPUT "\n"); - $i = 0; - } - } - print(OUTPUT "0};\n\n"); - close(FILE); - push(@fvars, $fvar); - push(@pfiles, $file); - } -} - -for($i = 0; $i < @fvars; $i++) { - $file = $pfiles[$i]; - $fvar = $fvars[$i]; - - if($i == 0) { - $prevfile = "NULL"; - } else { - $prevfile = "file" . $fvars[$i - 1]; - } - print(OUTPUT "const struct httpd_fsdata_file file".$fvar."[] = {{$prevfile, data$fvar, "); - print(OUTPUT "data$fvar + ". (length($file) + 1) .", "); - print(OUTPUT "sizeof(data$fvar) - ". (length($file) + 1) ."}};\n\n"); -} - -print(OUTPUT "#define HTTPD_FS_ROOT file$fvars[$i - 1]\n\n"); -print(OUTPUT "#define HTTPD_FS_NUMFILES $i\n"); diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/makestrings b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/makestrings deleted file mode 100644 index 8a13c6d29..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/makestrings +++ /dev/null @@ -1,40 +0,0 @@ -#!/usr/bin/perl - - -sub stringify { - my $name = shift(@_); - open(OUTPUTC, "> $name.c"); - open(OUTPUTH, "> $name.h"); - - open(FILE, "$name"); - - while() { - if(/(.+) "(.+)"/) { - $var = $1; - $data = $2; - - $datan = $data; - $datan =~ s/\\r/\r/g; - $datan =~ s/\\n/\n/g; - $datan =~ s/\\01/\01/g; - $datan =~ s/\\0/\0/g; - - printf(OUTPUTC "const char $var\[%d] = \n", length($datan) + 1); - printf(OUTPUTC "/* \"$data\" */\n"); - printf(OUTPUTC "{"); - for($j = 0; $j < length($datan); $j++) { - printf(OUTPUTC "%#02x, ", unpack("C", substr($datan, $j, 1))); - } - printf(OUTPUTC "};\n"); - - printf(OUTPUTH "extern const char $var\[%d];\n", length($datan) + 1); - - } - } - close(OUTPUTC); - close(OUTPUTH); -} -stringify("http-strings"); - -exit 0; - diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/uIP_Task.c b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/uIP_Task.c deleted file mode 100644 index ed24864b7..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/uIP_Task.c +++ /dev/null @@ -1,313 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ -/* Standard includes. */ -#include - -/* Scheduler includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "semphr.h" - -/* uip includes. */ -#include "uip.h" -#include "uip_arp.h" -#include "httpd.h" -#include "timer.h" -#include "clock-arch.h" - -/* Demo includes. */ -#include "emac.h" -#include "partest.h" - -/*-----------------------------------------------------------*/ - -/* MAC address configuration. */ -#define uipMAC_ADDR0 0x00 -#define uipMAC_ADDR1 0x12 -#define uipMAC_ADDR2 0x13 -#define uipMAC_ADDR3 0x10 -#define uipMAC_ADDR4 0x15 -#define uipMAC_ADDR5 0x11 - -/* IP address configuration. */ -#define uipIP_ADDR0 172 -#define uipIP_ADDR1 25 -#define uipIP_ADDR2 218 -#define uipIP_ADDR3 16 - -/* How long to wait before attempting to connect the MAC again. */ -#define uipINIT_WAIT 100 - -/* Shortcut to the header within the Rx buffer. */ -#define xHeader ((struct uip_eth_hdr *) &uip_buf[ 0 ]) - -/* Standard constant. */ -#define uipTOTAL_FRAME_HEADER_SIZE 54 - -/*-----------------------------------------------------------*/ - -/* - * Send the uIP buffer to the MAC. - */ -static void prvENET_Send(void); - -/* - * Setup the MAC address in the MAC itself, and in the uIP stack. - */ -static void prvSetMACAddress( void ); - -/* - * Port functions required by the uIP stack. - */ -void clock_init( void ); -clock_time_t clock_time( void ); - -/*-----------------------------------------------------------*/ - -/* The semaphore used by the ISR to wake the uIP task. */ -extern SemaphoreHandle_t xEMACSemaphore; - -/*-----------------------------------------------------------*/ - -void clock_init(void) -{ - /* This is done when the scheduler starts. */ -} -/*-----------------------------------------------------------*/ - -clock_time_t clock_time( void ) -{ - return xTaskGetTickCount(); -} -/*-----------------------------------------------------------*/ - -void vuIP_Task( void *pvParameters ) -{ -portBASE_TYPE i; -uip_ipaddr_t xIPAddr; -struct timer periodic_timer, arp_timer; -extern void ( vEMAC_ISR_Wrapper )( void ); - - /* Create the semaphore used by the ISR to wake this task. */ - vSemaphoreCreateBinary( xEMACSemaphore ); - - /* Initialise the uIP stack. */ - timer_set( &periodic_timer, configTICK_RATE_HZ / 2 ); - timer_set( &arp_timer, configTICK_RATE_HZ * 10 ); - uip_init(); - uip_ipaddr( xIPAddr, uipIP_ADDR0, uipIP_ADDR1, uipIP_ADDR2, uipIP_ADDR3 ); - uip_sethostaddr( xIPAddr ); - httpd_init(); - - /* Initialise the MAC. */ - while( Init_EMAC() != pdPASS ) - { - vTaskDelay( uipINIT_WAIT ); - } - - portENTER_CRITICAL(); - { - MAC_INTENABLE = INT_RX_DONE; - VICIntEnable |= 0x00200000; - VICVectAddr21 = ( long ) vEMAC_ISR_Wrapper; - prvSetMACAddress(); - } - portEXIT_CRITICAL(); - - - for( ;; ) - { - /* Is there received data ready to be processed? */ - uip_len = uiGetEMACRxData( uip_buf ); - - if( uip_len > 0 ) - { - /* Standard uIP loop taken from the uIP manual. */ - if( xHeader->type == htons( UIP_ETHTYPE_IP ) ) - { - uip_arp_ipin(); - uip_input(); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - uip_arp_out(); - prvENET_Send(); - } - } - else if( xHeader->type == htons( UIP_ETHTYPE_ARP ) ) - { - uip_arp_arpin(); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - prvENET_Send(); - } - } - } - else - { - if( timer_expired( &periodic_timer ) ) - { - timer_reset( &periodic_timer ); - for( i = 0; i < UIP_CONNS; i++ ) - { - uip_periodic( i ); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - uip_arp_out(); - prvENET_Send(); - } - } - - /* Call the ARP timer function every 10 seconds. */ - if( timer_expired( &arp_timer ) ) - { - timer_reset( &arp_timer ); - uip_arp_timer(); - } - } - else - { - /* We did not receive a packet, and there was no periodic - processing to perform. Block for a fixed period. If a packet - is received during this period we will be woken by the ISR - giving us the Semaphore. */ - xSemaphoreTake( xEMACSemaphore, configTICK_RATE_HZ / 2 ); - } - } - } -} -/*-----------------------------------------------------------*/ - -static void prvENET_Send(void) -{ - RequestSend(); - - /* Copy the header into the Tx buffer. */ - CopyToFrame_EMAC( uip_buf, uipTOTAL_FRAME_HEADER_SIZE ); - if( uip_len > uipTOTAL_FRAME_HEADER_SIZE ) - { - CopyToFrame_EMAC( uip_appdata, ( uip_len - uipTOTAL_FRAME_HEADER_SIZE ) ); - } - - DoSend_EMAC( uip_len ); -} -/*-----------------------------------------------------------*/ - -static void prvSetMACAddress( void ) -{ -struct uip_eth_addr xAddr; - - /* Configure the MAC address in the uIP stack. */ - xAddr.addr[ 0 ] = uipMAC_ADDR0; - xAddr.addr[ 1 ] = uipMAC_ADDR1; - xAddr.addr[ 2 ] = uipMAC_ADDR2; - xAddr.addr[ 3 ] = uipMAC_ADDR3; - xAddr.addr[ 4 ] = uipMAC_ADDR4; - xAddr.addr[ 5 ] = uipMAC_ADDR5; - uip_setethaddr( xAddr ); -} -/*-----------------------------------------------------------*/ - -void vApplicationProcessFormInput( char *pcInputString, portBASE_TYPE xInputLength ) -{ -char *c, *pcText; -static char cMessageForDisplay[ 32 ]; -extern QueueHandle_t xLCDQueue; -xLCDMessage xLCDMessage; - - /* Process the form input sent by the IO page of the served HTML. */ - - c = strstr( pcInputString, "?" ); - if( c ) - { - /* Turn LED's on or off in accordance with the check box status. */ - if( strstr( c, "LED0=1" ) != NULL ) - { - vParTestSetLED( 5, 0 ); - } - else - { - vParTestSetLED( 5, 1 ); - } - - if( strstr( c, "LED1=1" ) != NULL ) - { - vParTestSetLED( 6, 0 ); - } - else - { - vParTestSetLED( 6, 1 ); - } - - if( strstr( c, "LED2=1" ) != NULL ) - { - vParTestSetLED( 7, 0 ); - } - else - { - vParTestSetLED( 7, 1 ); - } - - /* Find the start of the text to be displayed on the LCD. */ - pcText = strstr( c, "LCD=" ); - pcText += strlen( "LCD=" ); - - /* Terminate the file name for further processing within uIP. */ - *c = 0x00; - - /* Terminate the LCD string. */ - c = strstr( pcText, " " ); - if( c != NULL ) - { - *c = 0x00; - } - - /* Add required spaces. */ - while( ( c = strstr( pcText, "+" ) ) != NULL ) - { - *c = ' '; - } - - /* Write the message to the LCD. */ - strcpy( cMessageForDisplay, pcText ); - xLCDMessage.xColumn = 0; - xLCDMessage.pcMessage = cMessageForDisplay; - xQueueSend( xLCDQueue, &xLCDMessage, portMAX_DELAY ); - } -} - diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/uip-conf.h b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/uip-conf.h deleted file mode 100644 index 3e6f7f381..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/uip-conf.h +++ /dev/null @@ -1,157 +0,0 @@ -/** - * \addtogroup uipopt - * @{ - */ - -/** - * \name Project-specific configuration options - * @{ - * - * uIP has a number of configuration options that can be overridden - * for each project. These are kept in a project-specific uip-conf.h - * file and all configuration names have the prefix UIP_CONF. - */ - -/* - * Copyright (c) 2006, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: uip-conf.h,v 1.6 2006/06/12 08:00:31 adam Exp $ - */ - -/** - * \file - * An example uIP configuration file - * \author - * Adam Dunkels - */ - -#ifndef __UIP_CONF_H__ -#define __UIP_CONF_H__ - -#include - -/** - * 8 bit datatype - * - * This typedef defines the 8-bit type used throughout uIP. - * - * \hideinitializer - */ -typedef uint8_t u8_t; - -/** - * 16 bit datatype - * - * This typedef defines the 16-bit type used throughout uIP. - * - * \hideinitializer - */ -typedef uint16_t u16_t; - -/** - * Statistics datatype - * - * This typedef defines the dataype used for keeping statistics in - * uIP. - * - * \hideinitializer - */ -typedef unsigned short uip_stats_t; - -/** - * Maximum number of TCP connections. - * - * \hideinitializer - */ -#define UIP_CONF_MAX_CONNECTIONS 40 - -/** - * Maximum number of listening TCP ports. - * - * \hideinitializer - */ -#define UIP_CONF_MAX_LISTENPORTS 40 - -/** - * uIP buffer size. - * - * \hideinitializer - */ -#define UIP_CONF_BUFFER_SIZE 1480 - -/** - * CPU byte order. - * - * \hideinitializer - */ -#define UIP_CONF_BYTE_ORDER LITTLE_ENDIAN - -/** - * Logging on or off - * - * \hideinitializer - */ -#define UIP_CONF_LOGGING 0 - -/** - * UDP support on or off - * - * \hideinitializer - */ -#define UIP_CONF_UDP 0 - -/** - * UDP checksums on or off - * - * \hideinitializer - */ -#define UIP_CONF_UDP_CHECKSUMS 1 - -/** - * uIP statistics on or off - * - * \hideinitializer - */ -#define UIP_CONF_STATISTICS 1 - -/* Here we include the header file for the application(s) we use in - our project. */ -/*#include "smtp.h"*/ -/*#include "hello-world.h"*/ -/*#include "telnetd.h"*/ -#include "webserver.h" -/*#include "dhcpc.h"*/ -/*#include "resolv.h"*/ -/*#include "webclient.h"*/ - -#endif /* __UIP_CONF_H__ */ - -/** @} */ -/** @} */ diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/webserver.h b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/webserver.h deleted file mode 100644 index 1acb290b8..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/webserver.h +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright (c) 2002, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials provided - * with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: webserver.h,v 1.2 2006/06/11 21:46:38 adam Exp $ - * - */ -#ifndef __WEBSERVER_H__ -#define __WEBSERVER_H__ - -#include "httpd.h" - -typedef struct httpd_state uip_tcp_appstate_t; -/* UIP_APPCALL: the name of the application function. This function - must return void and take no arguments (i.e., C type "void - appfunc(void)"). */ -#ifndef UIP_APPCALL -#define UIP_APPCALL httpd_appcall -#endif - - -#endif /* __WEBSERVER_H__ */ diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/ReadMe.txt b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/ReadMe.txt new file mode 100644 index 000000000..12c70d213 --- /dev/null +++ b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/ReadMe.txt @@ -0,0 +1 @@ +The third party uIP TCP/IP stack and the demo project that used to be in this directory was removed in FreeRTOS version V10.4.3 due to security vulnerabilities identified in uIP. In a future version this demo may be replaced by a version which does not use TCP/IP or uses FreeRTOS’s own TCP/IP stack in place of the original third party stack. \ No newline at end of file diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/lpc2368_flash.cfg b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/lpc2368_flash.cfg deleted file mode 100644 index c45e902a8..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/lpc2368_flash.cfg +++ /dev/null @@ -1,35 +0,0 @@ -#daemon configuration -telnet_port 4444 -gdb_port 3333 - -#interface -interface parport -parport_port 0x378 -parport_cable wiggler -jtag_speed 2 - -#use combined on interfaces or targets that can't set TRST/SRST separately -reset_config trst_and_srst srst_pulls_trst - -#jtag scan chain -#format L IRC IRCM IDCODE (Length, IR Capture, IR Capture Mask, IDCODE) -jtag_device 4 0x1 0xf 0xe - -#target configuration -daemon_startup reset - -#target -#target arm7tdmi -target arm7tdmi little run_and_init 0 arm7tdmi-s_r4 -run_and_halt_time 0 30 - -working_area 0 0x40000000 0x40000 nobackup - -#flash configuration -flash bank lpc2000 0x0 0x80000 0 0 0 lpc2000_v2 12000 calc_checksum -flash bank cfi 0x80000000 0x400000 2 2 0 - -# For more information about the configuration files, take a look at: -# http://openfacts.berlios.de/index-en.phtml?title=Open+On-Chip+Debugger - -target_script 0 reset program.script diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/lpc2xxx_pp.cfg b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/lpc2xxx_pp.cfg deleted file mode 100644 index 4c3b0ceb9..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/lpc2xxx_pp.cfg +++ /dev/null @@ -1,33 +0,0 @@ -#daemon configuration -telnet_port 4444 -gdb_port 3333 - -#interface -interface parport -parport_port 0x378 -parport_cable wiggler -jtag_speed 2 - -#use combined on interfaces or targets that can't set TRST/SRST separately -reset_config trst_and_srst srst_pulls_trst - -#jtag scan chain -#format L IRC IRCM IDCODE (Length, IR Capture, IR Capture Mask, IDCODE) -jtag_device 4 0x1 0xf 0xe - -#target configuration -daemon_startup reset - -#target -#target arm7tdmi -target arm7tdmi little run_and_halt 0 arm7tdmi-s_r4 -run_and_halt_time 0 30 - -working_area 0 0x40000000 0x40000 nobackup - -#flash configuration -flash bank lpc2000 0x0 0x80000 0 0 0 lpc2000_v2 12000 calc_checksum -flash bank cfi 0x80000000 0x400000 2 2 0 - -# For more information about the configuration files, take a look at: -# http://openfacts.berlios.de/index-en.phtml?title=Open+On-Chip+Debugger diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/program.script b/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/program.script deleted file mode 100644 index 363913c7c..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Eclipse/program.script +++ /dev/null @@ -1,11 +0,0 @@ -arm7_9 dcc_downloads enable -wait_halt -sleep 10 -poll -flash probe 0 -#flash protect 0 0 26 'off' -flash erase 0 0 26 -flash write 0 ./RTOSDemo/RTOSDemo.bin 0x0 -reset run -sleep 10 -shutdown diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/FreeRTOSConfig.h b/FreeRTOS/Demo/ARM7_LPC2368_Rowley/FreeRTOSConfig.h deleted file mode 100644 index aab6043f2..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/FreeRTOSConfig.h +++ /dev/null @@ -1,126 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -#ifndef FREERTOS_CONFIG_H -#define FREERTOS_CONFIG_H - -#include -#include -#define vPortYieldProcessor swi_handler - -/*----------------------------------------------------------- - * Application specific definitions. - * - * These definitions should be adjusted for your particular hardware and - * application requirements. - * - * THESE PARAMETERS ARE DESCRIBED WITHIN THE 'CONFIGURATION' SECTION OF THE - * FreeRTOS API DOCUMENTATION AVAILABLE ON THE FreeRTOS.org WEB SITE. - * - * See http://www.freertos.org/a00110.html - *----------------------------------------------------------*/ - - -/* Value to use on old rev '-' devices. */ -//#define configPINSEL2_VALUE 0x50151105 - -/* Value to use on rev 'A' and newer devices. */ -//#define configPINSEL2_VALUE 0x50150105 - -#ifndef configPINSEL2_VALUE - #error Please uncomment one of the two configPINSEL2_VALUE definitions above, depending on the revision of the LPC2000 device being used. -#endif - -#define configUSE_PREEMPTION 1 -#define configUSE_IDLE_HOOK 0 -#define configUSE_TICK_HOOK 0 -#define configCPU_CLOCK_HZ ( ( unsigned long ) 57600000 ) -#define configTICK_RATE_HZ ( ( TickType_t ) 1000 ) -#define configMAX_PRIORITIES ( 4 ) -#define configMINIMAL_STACK_SIZE ( ( unsigned short ) 120 ) -#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 18 * 1024 ) ) -#define configMAX_TASK_NAME_LEN ( 16 ) -#define configUSE_TRACE_FACILITY 1 -#define configUSE_16_BIT_TICKS 0 -#define configIDLE_SHOULD_YIELD 1 - -/* Co-routine definitions. */ -#define configUSE_CO_ROUTINES 0 -#define configMAX_CO_ROUTINE_PRIORITIES ( 2 ) - - -/* Set the following definitions to 1 to include the API function, or zero -to exclude the API function. */ - -#define INCLUDE_vTaskPrioritySet 1 -#define INCLUDE_uxTaskPriorityGet 1 -#define INCLUDE_vTaskDelete 1 -#define INCLUDE_vTaskCleanUpResources 0 -#define INCLUDE_vTaskSuspend 1 -#define INCLUDE_vTaskDelayUntil 1 -#define INCLUDE_vTaskDelay 1 -#define INCLUDE_xTaskGetCurrentTaskHandle 1 - -/* This demo makes use of one or more example stats formatting functions. These -format the raw data provided by the uxTaskGetSystemState() function in to human -readable ASCII form. See the notes in the implementation of vTaskList() within -FreeRTOS/Source/tasks.c for limitations. */ -#define configUSE_STATS_FORMATTING_FUNCTIONS 1 - - -#endif /* FREERTOS_CONFIG_H */ - - -#ifndef sbi -#define sbi(x,y) x|=(1 << (y)) -#endif - -#ifndef cbi -#define cbi(x,y) x&=~(1 << (y)) -#endif - -#ifndef tstb -#define tstb(x,y) (x & (1 << (y)) ? 1 : 0) -#endif - -#ifndef toggle -#define toggle(x,y) x^=(1 << (y)) -#endif - -#ifndef BIT -#define BIT(x) (1 << (x)) - - -#define VICVectAddr VICAddress -#define VICVectCntl4 VICVectPriority4 -typedef struct -{ - long xColumn; - signed char *pcMessage; -} xLCDMessage; - -#endif diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/LCD/portlcd.c b/FreeRTOS/Demo/ARM7_LPC2368_Rowley/LCD/portlcd.c deleted file mode 100644 index 5ddcf2dd1..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/LCD/portlcd.c +++ /dev/null @@ -1,392 +0,0 @@ -/***************************************************************************** - * - * Project : lwIP Web - * Subproject : - * Name : portlcd.c - * Function : Routines for LCD - * Designer : K. Sterckx - * Creation date : 22/01/2007 - * Compiler : GNU ARM - * Processor : LPC2368 - * Last update : - * Last updated by : - * History : - * based on example code from NXP - * - ************************************************************************ - * - * This code is used to place text on the LCD. - * - ************************************************************************/ - -#include -#include "portlcd.h" -#include "FreeRTOS.h" -#include "task.h" - -/* Please note, on old MCB2300 board, the LCD_E bit is p1.30, on the new board -it's p1.31, please check the schematic carefully, and change LCD_CTRL and LCD_E -accordingly if you have a different board. */ - -/* LCD IO definitions */ -#define LCD_E 0x80000000 /* Enable control pin */ -#define LCD_RW 0x20000000 /* Read/Write control pin */ -#define LCD_RS 0x10000000 /* Data/Instruction control */ -#define LCD_CTRL 0xB0000000 /* Control lines mask */ -#define LCD_DATA 0x0F000000 /* Data lines mask */ - -/* Local variables */ -static unsigned int lcd_ptr; - -/* 8 user defined characters to be loaded into CGRAM (used for bargraph) */ -static const unsigned char UserFont[8][8] = { - { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 }, - { 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10 }, - { 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18 }, - { 0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C }, - { 0x1E,0x1E,0x1E,0x1E,0x1E,0x1E,0x1E,0x1E }, - { 0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F }, - { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 }, - { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 } -}; - -/* Local Function Prototypes */ -static void lcd_write( unsigned int c ); -static void lcd_write_4bit( unsigned int c ); -static unsigned int lcd_read_stat( void ); -static void lcd_write_cmd( unsigned int c ); -static void lcd_write_data( unsigned int d ); -static void lcd_wait_busy( void ); - - -/****************************************************************************** -** Function name: lcd_write_4bit -** -** Descriptions: -** -** parameters: four bits to write -** Returned value: None -** -******************************************************************************/ -static void lcd_write_4bit(unsigned int c) -{ - /* Write a 4-bit command to LCD controller. */ - FIO1DIR |= LCD_DATA | LCD_CTRL; - FIO1CLR = LCD_RW | LCD_DATA; - FIO1SET = (c & 0xF) << 24; - FIO1SET = LCD_E; - vTaskDelay(0); - FIO1CLR = LCD_E; - vTaskDelay(0); - return; -} - -/****************************************************************************** -** Function name: lcd_write -** -** Descriptions: -** -** parameters: word to write -** Returned value: None -** -******************************************************************************/ -static void lcd_write(unsigned int c) -{ - /* Write data/command to LCD controller. */ - lcd_write_4bit (c >> 4); - lcd_write_4bit (c); - return; -} - -/****************************************************************************** -** Function name: lcd_read_stat -** -** Descriptions: -** -** parameters: None -** Returned value: status -** -******************************************************************************/ -static unsigned int lcd_read_stat(void) -{ - /* Read status of LCD controller (ST7066) */ - unsigned int stat; - - FIO1DIR &= ~LCD_DATA; - FIO1CLR = LCD_RS; - FIO1SET = LCD_RW; - vTaskDelay( 0 ); - FIO1SET = LCD_E; - vTaskDelay( 0 ); - stat = (FIO1PIN >> 20) & 0xF0; - FIO1CLR = LCD_E; - vTaskDelay( 0 ); - FIO1SET = LCD_E; - vTaskDelay( 0 ); - stat |= (FIO1PIN >> 24) & 0xF; - FIO1CLR = LCD_E; - return (stat); -} - -/****************************************************************************** -** Function name: lcd_wait_busy -** -** Descriptions: -** -** parameters: None -** Returned value: None -** -******************************************************************************/ -static void lcd_wait_busy(void) -{ - /* Wait until LCD controller (ST7066) is busy. */ - unsigned int stat; - - do - { - stat = lcd_read_stat(); - } - while (stat & 0x80); /* Wait for busy flag */ - - return; -} - -/****************************************************************************** -** Function name: lcd_write_cmd -** -** Descriptions: -** -** parameters: command word -** Returned value: None -** -******************************************************************************/ -static void lcd_write_cmd(unsigned int c) -{ - /* Write command to LCD controller. */ - lcd_wait_busy(); - FIO1CLR = LCD_RS; - lcd_write(c); - return; -} - -/****************************************************************************** -** Function name: lcd_write_data -** -** Descriptions: -** -** parameters: data word -** Returned value: None -** -******************************************************************************/ -static void lcd_write_data(unsigned int d) -{ - /* Write data to LCD controller. */ - lcd_wait_busy(); - FIO1SET = LCD_RS; - lcd_write(d); - return; -} - -/****************************************************************************** -** Function name: LCD_init -** -** Descriptions: -** -** parameters: None -** Returned value: None -** -******************************************************************************/ -void LCD_init(void) -{ - /* Initialize the ST7066 LCD controller to 4-bit mode. */ - PINSEL3 = 0x00000000; -#if USE_FIO - SCS |= 0x00000001;/* set GPIOx to use Fast I/O */ -#endif - FIO1DIR |= LCD_CTRL | LCD_DATA; - FIO1CLR = LCD_RW | LCD_RS | LCD_DATA; - - lcd_write_4bit(0x3); /* Select 4-bit interface */ - vTaskDelay(100); - lcd_write_4bit(0x3); - vTaskDelay(100); - lcd_write_4bit(0x3); - lcd_write_4bit(0x2); - - lcd_write_cmd(0x28); /* 2 lines, 5x8 character matrix */ - lcd_write_cmd(0x0e); /* Display ctrl:Disp/Curs/Blnk=ON */ - lcd_write_cmd(0x06); /* Entry mode: Move right, no shift */ - - LCD_load( (unsigned char *)&UserFont, sizeof (UserFont) ); - LCD_cls(); - return; -} - -/****************************************************************************** -** Function name: LCD_load -** -** Descriptions: -** -** parameters: pointer to the buffer and counter -** Returned value: None -** -******************************************************************************/ -void LCD_load(unsigned char *fp, unsigned int cnt) -{ - /* Load user-specific characters into CGRAM */ - unsigned int i; - - lcd_write_cmd( 0x40 ); /* Set CGRAM address counter to 0 */ - for (i = 0; i < cnt; i++, fp++) - { - lcd_write_data( *fp ); - } - return; -} - -/****************************************************************************** -** Function name: LCD_gotoxy -** -** Descriptions: -** -** parameters: pixel X and Y -** Returned value: None -** -******************************************************************************/ -void LCD_gotoxy(unsigned int x, unsigned int y) -{ - /* Set cursor position on LCD display. Left corner: 1,1, right: 16,2 */ - unsigned int c; - - c = --x; - if (--y) - { - c |= 0x40; - } - lcd_write_cmd (c | 0x80); - lcd_ptr = y*16 + x; - return; -} - -/****************************************************************************** -** Function name: LCD_cls -** -** Descriptions: -** -** parameters: None -** Returned value: None -** -******************************************************************************/ -void LCD_cls(void) -{ - /* Clear LCD display, move cursor to home position. */ - lcd_write_cmd (0x01); - LCD_gotoxy (1,1); - return; -} - -/****************************************************************************** -** Function name: LCD_cur_off -** -** Descriptions: -** -** parameters: None -** Returned value: None -** -******************************************************************************/ -void LCD_cur_off(void) -{ - /* Switch off LCD cursor. */ - lcd_write_cmd(0x0c); - return; -} - - -/****************************************************************************** -** Function name: LCD_on -** -** Descriptions: -** -** parameters: None -** Returned value: None -** -******************************************************************************/ -void LCD_on(void) -{ - /* Switch on LCD and enable cursor. */ - lcd_write_cmd (0x0e); - return; -} - -/****************************************************************************** -** Function name: LCD_putc -** -** Descriptions: -** -** parameters: unsigned char character -** Returned value: None -** -******************************************************************************/ -void LCD_putc(unsigned char c) -{ - /* Print a character to LCD at current cursor position. */ - if (lcd_ptr == 16) - { - lcd_write_cmd (0xc0); - } - lcd_write_data(c); - lcd_ptr++; - return; -} - -/****************************************************************************** -** Function name: LCD_puts -** -** Descriptions: -** -** parameters: pointer to the buffer -** Returned value: None -** -******************************************************************************/ -void LCD_puts(unsigned char *sp) -{ - /* Print a string to LCD display. */ - while (*sp) - { - LCD_putc (*sp++); - } - return; -} - -/****************************************************************************** -** Function name: LCD_bargraph -** -** Descriptions: -** -** parameters: value and size -** Returned value: None -** -******************************************************************************/ -void LCD_bargraph(unsigned int val, unsigned int size) -{ - /* Print a bargraph to LCD display. */ - /* - val: value 0..100 % */ - /* - size: size of bargraph 1..16 */ - unsigned int i; - - val = val * size / 20; /* Display matrix 5 x 8 pixels */ - for (i = 0; i < size; i++) - { - if (val > 5) - { - LCD_putc(5); - val -= 5; - } - else - { - LCD_putc(val); - break; - } - } - return; -} diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/LCD/portlcd.h b/FreeRTOS/Demo/ARM7_LPC2368_Rowley/LCD/portlcd.h deleted file mode 100644 index 4742e4484..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/LCD/portlcd.h +++ /dev/null @@ -1,31 +0,0 @@ -/***************************************************************************** - * rtc.h: Header file for NXP LPC23xx/24xx Family Microprocessors - * - * Copyright(C) 2006, NXP Semiconductor - * All rights reserved. - * - * History - * 2006.07.13 ver 1.00 Prelimnary version, first Release - * -******************************************************************************/ -#ifndef __PORTLCD_H -#define __PORTLCD_H - -extern void LCD_init(void); -extern void LCD_load(unsigned char *fp, unsigned int cnt); -extern void LCD_gotoxy(unsigned int x, unsigned int y); -extern void LCD_cls(void); -extern void LCD_cur_off(void); -extern void LCD_on(void); -extern void LCD_putc(unsigned char c); -extern void LCD_puts(unsigned char *sp); -extern void LCD_bargraph(unsigned int val, unsigned int size); - -extern void LCD_putnibble(unsigned char nibble); -extern void LCD_puthexbyte(unsigned char abyte); - - -#endif /* end __PORTLCD_H */ -/***************************************************************************** -** End Of File -******************************************************************************/ diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/ParTest/ParTest.c b/FreeRTOS/Demo/ARM7_LPC2368_Rowley/ParTest/ParTest.c deleted file mode 100644 index 2f79f44e9..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/ParTest/ParTest.c +++ /dev/null @@ -1,109 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* FreeRTOS.org includes. */ -#include "FreeRTOS.h" - -/* Demo application includes. */ -#include "partest.h" - -#define partstFIRST_IO ( ( unsigned long ) 0x01 ) -#define partstNUM_LEDS ( 8 ) -#define partstALL_OUTPUTS_OFF ( ( unsigned long ) 0xff ) - -/*----------------------------------------------------------- - * Simple parallel port IO routines. - *-----------------------------------------------------------*/ - -void vParTestInitialise( void ) -{ - PINSEL10 = 0; - FIO2DIR = 0x000000FF; - FIO2MASK = 0x00000000; - FIO2CLR = 0xFF; - SCS |= (1<<0); //fast mode for port 0 and 1 - - FIO2CLR = partstALL_OUTPUTS_OFF; -} -/*-----------------------------------------------------------*/ - -void vParTestSetLED( unsigned portBASE_TYPE uxLED, signed portBASE_TYPE xValue ) -{ -unsigned long ulLED = partstFIRST_IO; - - if( uxLED < partstNUM_LEDS ) - { - /* Rotate to the wanted bit of port */ - ulLED <<= ( unsigned long ) uxLED; - - /* Set of clear the output. */ - if( xValue ) - { - FIO2CLR = ulLED; - } - else - { - FIO2SET = ulLED; - } - } -} -/*-----------------------------------------------------------*/ - -void vParTestToggleLED( unsigned portBASE_TYPE uxLED ) -{ -unsigned long ulLED = partstFIRST_IO, ulCurrentState; - - if( uxLED < partstNUM_LEDS ) - { - /* Rotate to the wanted bit of port 0. Only P10 to P13 have an LED - attached. */ - ulLED <<= ( unsigned long ) uxLED; - - /* If this bit is already set, clear it, and vice versa. */ - ulCurrentState = FIO2PIN; - if( ulCurrentState & ulLED ) - { - FIO2CLR = ulLED; - } - else - { - FIO2SET = ulLED; - } - } -} - -/*-----------------------------------------------------------*/ -unsigned portBASE_TYPE uxParTextGetLED( unsigned portBASE_TYPE uxLED ) -{ -unsigned long ulLED = partstFIRST_IO; - - ulLED <<= ( unsigned long ) uxLED; - - return ( FIO2PIN & ulLED ); -} - - diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/RTOSDemo.hzp b/FreeRTOS/Demo/ARM7_LPC2368_Rowley/RTOSDemo.hzp deleted file mode 100644 index 6c4b95075..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/RTOSDemo.hzp +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/RTOSDemo.hzs b/FreeRTOS/Demo/ARM7_LPC2368_Rowley/RTOSDemo.hzs deleted file mode 100644 index 7aad07d5d..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/RTOSDemo.hzs +++ /dev/null @@ -1,63 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/ReadMe.txt b/FreeRTOS/Demo/ARM7_LPC2368_Rowley/ReadMe.txt new file mode 100644 index 000000000..12c70d213 --- /dev/null +++ b/FreeRTOS/Demo/ARM7_LPC2368_Rowley/ReadMe.txt @@ -0,0 +1 @@ +The third party uIP TCP/IP stack and the demo project that used to be in this directory was removed in FreeRTOS version V10.4.3 due to security vulnerabilities identified in uIP. In a future version this demo may be replaced by a version which does not use TCP/IP or uses FreeRTOS’s own TCP/IP stack in place of the original third party stack. \ No newline at end of file diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/main.c b/FreeRTOS/Demo/ARM7_LPC2368_Rowley/main.c deleted file mode 100644 index ce0bda6e3..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/main.c +++ /dev/null @@ -1,231 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* Environment includes. */ -#include - -/* Scheduler includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "queue.h" -#include "semphr.h" - -/* Demo app includes. */ -#include "BlockQ.h" -#include "death.h" -#include "integer.h" -#include "blocktim.h" -#include "portlcd.h" -#include "flash.h" -#include "partest.h" -#include "semtest.h" -#include "PollQ.h" - -/* Demo application definitions. */ -#define mainQUEUE_SIZE ( 3 ) -#define mainCHECK_DELAY ( ( TickType_t ) 5000 / portTICK_PERIOD_MS ) -#define mainBASIC_WEB_STACK_SIZE ( configMINIMAL_STACK_SIZE * 2 ) - -/* Task priorities. */ -#define mainQUEUE_POLL_PRIORITY ( tskIDLE_PRIORITY + 2 ) -#define mainCHECK_TASK_PRIORITY ( tskIDLE_PRIORITY + 3 ) -#define mainSEM_TEST_PRIORITY ( tskIDLE_PRIORITY + 1 ) -#define mainBLOCK_Q_PRIORITY ( tskIDLE_PRIORITY + 2 ) -#define mainFLASH_PRIORITY ( tskIDLE_PRIORITY + 2 ) -#define mainCREATOR_TASK_PRIORITY ( tskIDLE_PRIORITY + 3 ) -#define mainINTEGER_TASK_PRIORITY ( tskIDLE_PRIORITY ) - - -/* - * Checks the status of all the demo tasks then prints a message to the - * CrossStudio terminal IO windows. The message will be either PASS or FAIL - * depending on the status of the demo applications tasks. A FAIL status will - * be latched. - * - * Messages are not written directly to the terminal, but passed to vPrintTask - * via a queue. - */ -static void vCheckTask( void *pvParameters ); - -/* - * The task that handles the uIP stack. All TCP/IP processing is performed in - * this task. - */ -extern void vuIP_Task( void *pvParameters ); - -/* - * The LCD is written two by more than one task so is controlled by a - * 'gatekeeper' task. This is the only task that is actually permitted to - * access the LCD directly. Other tasks wanting to display a message send - * the message to the gatekeeper. - */ -static void vLCDTask( void *pvParameters ); - -/* The queue used to send messages to the LCD task. */ -QueueHandle_t xLCDQueue; - -/*-----------------------------------------------------------*/ - -int main (void) -{ - /* Setup the led's on the MCB2300 board */ - vParTestInitialise(); - - /* Create the queue used by the LCD task. Messages for display on the LCD - are received via this queue. */ - xLCDQueue = xQueueCreate( mainQUEUE_SIZE, sizeof( xLCDMessage ) ); - - /* Create the lwIP task. This uses the lwIP RTOS abstraction layer.*/ - xTaskCreate( vuIP_Task, "uIP", mainBASIC_WEB_STACK_SIZE, NULL, mainCHECK_TASK_PRIORITY - 1, NULL ); - - /* Start the standard demo tasks - these serve no useful purpose other than - to demonstrate the FreeRTOS API being used and to test the port. */ - vStartBlockingQueueTasks( mainBLOCK_Q_PRIORITY ); - vCreateBlockTimeTasks(); - vStartLEDFlashTasks( mainFLASH_PRIORITY ); - vStartSemaphoreTasks( mainSEM_TEST_PRIORITY ); - vStartPolledQueueTasks( mainQUEUE_POLL_PRIORITY ); - vStartIntegerMathTasks( mainINTEGER_TASK_PRIORITY ); - - /* Start the tasks defined within this file/specific to this demo. */ - xTaskCreate( vCheckTask, "Check", configMINIMAL_STACK_SIZE, NULL, mainCHECK_TASK_PRIORITY, NULL ); - xTaskCreate( vLCDTask, "LCD", configMINIMAL_STACK_SIZE, NULL, mainCHECK_TASK_PRIORITY - 1, NULL ); - - /* The suicide tasks must be created last as they need to know how many - tasks were running prior to their creation in order to ascertain whether - or not the correct/expected number of tasks are running at any given time. */ - vCreateSuicidalTasks( mainCREATOR_TASK_PRIORITY ); - - /* Start the scheduler. */ - vTaskStartScheduler(); - - /* Will only get here if there was insufficient memory to create the idle - task. */ - return 0; -} -/*-----------------------------------------------------------*/ - -static void vCheckTask( void *pvParameters ) -{ -portBASE_TYPE xErrorOccurred = pdFALSE; -TickType_t xLastExecutionTime; -unsigned portBASE_TYPE uxColumn = 0; -xLCDMessage xMessage; - - xLastExecutionTime = xTaskGetTickCount(); - - xMessage.xColumn = 0; - xMessage.pcMessage = "PASS"; - - for( ;; ) - { - /* Perform this check every mainCHECK_DELAY milliseconds. */ - vTaskDelayUntil( &xLastExecutionTime, mainCHECK_DELAY ); - - /* Has an error been found in any task? */ - - if( xAreBlockingQueuesStillRunning() != pdTRUE ) - { - xErrorOccurred = pdTRUE; - } - - if( xAreBlockTimeTestTasksStillRunning() != pdTRUE ) - { - xErrorOccurred = pdTRUE; - } - - if( xAreSemaphoreTasksStillRunning() != pdTRUE ) - { - xErrorOccurred = pdTRUE; - } - - if( xArePollingQueuesStillRunning() != pdTRUE ) - { - xErrorOccurred = pdTRUE; - } - - if( xIsCreateTaskStillRunning() != pdTRUE ) - { - xErrorOccurred = pdTRUE; - } - - if( xAreIntegerMathsTaskStillRunning() != pdTRUE ) - { - xErrorOccurred = pdTRUE; - } - - LCD_cls(); - xMessage.xColumn++; - LCD_gotoxy( ( uxColumn & 0x07 ) + 1, ( uxColumn & 0x01 ) + 1 ); - - if( xErrorOccurred == pdTRUE ) - { - xMessage.pcMessage = "FAIL"; - } - - /* Send the message to the LCD gatekeeper for display. */ - xQueueSend( xLCDQueue, &xMessage, portMAX_DELAY ); - } -} -/*-----------------------------------------------------------*/ - -void vLCDTask( void *pvParameters ) -{ -xLCDMessage xMessage; - - /* Initialise the LCD and display a startup message. */ - LCD_init(); - LCD_cur_off(); - LCD_cls(); - LCD_gotoxy( 1, 1 ); - LCD_puts( ( signed char * ) "www.FreeRTOS.org" ); - - for( ;; ) - { - /* Wait for a message to arrive that requires displaying. */ - while( xQueueReceive( xLCDQueue, &xMessage, portMAX_DELAY ) != pdPASS ); - - /* Display the message. Print each message to a different position. */ - LCD_cls(); - LCD_gotoxy( ( xMessage.xColumn & 0x07 ) + 1, ( xMessage.xColumn & 0x01 ) + 1 ); - LCD_puts( xMessage.pcMessage ); - } - -} -/*-----------------------------------------------------------*/ - -/* Keep the compiler quiet. */ -#include -int __putchar( int c ) -{ - return EOF; -} - - - - - diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/EMAC_ISR.c b/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/EMAC_ISR.c deleted file mode 100644 index 7d8620fe8..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/EMAC_ISR.c +++ /dev/null @@ -1,50 +0,0 @@ -#include "FreeRTOS.h" -#include "semphr.h" -#include "task.h" - -/* The interrupt entry point. */ -void vEMAC_ISR_Wrapper( void ) __attribute__((naked)); - -/* The function that actually performs the interrupt processing. This must be -separate to the wrapper to ensure the correct stack frame is set up. */ -void vEMAC_ISR_Handler( void ) __attribute__((noinline)); - -extern SemaphoreHandle_t xEMACSemaphore; - -void vEMAC_ISR_Handler( void ) -{ -portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE; - - /* Clear the interrupt. */ - IntClear = 0xffff; - VICVectAddr = 0; - - /* Ensure the uIP task is not blocked as data has arrived. */ - xSemaphoreGiveFromISR( xEMACSemaphore, &xHigherPriorityTaskWoken ); - - if( xHigherPriorityTaskWoken ) - { - /* If the uIP task was unblocked then calling "Yield from ISR" here - will ensure the interrupt returns directly to the uIP task, if it - is the highest priority read task. */ - portYIELD_FROM_ISR(); - } -} -/*-----------------------------------------------------------*/ - -void vEMAC_ISR_Wrapper( void ) -{ - /* Save the context of the interrupted task. */ - portSAVE_CONTEXT(); - - /* Call the handler function. This must be separate from the wrapper - function to ensure the correct stack frame is set up. */ - __asm volatile( "bl vEMAC_ISR_Handler" ); - - /* Restore the context of whichever task is going to run next. */ - portRESTORE_CONTEXT(); -} - - - - diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/clock-arch.h b/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/clock-arch.h deleted file mode 100644 index cde657b62..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/clock-arch.h +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright (c) 2006, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: clock-arch.h,v 1.2 2006/06/12 08:00:31 adam Exp $ - */ - -#ifndef __CLOCK_ARCH_H__ -#define __CLOCK_ARCH_H__ - -#include "FreeRTOS.h" - -typedef unsigned long clock_time_t; -#define CLOCK_CONF_SECOND configTICK_RATE_HZ - -#endif /* __CLOCK_ARCH_H__ */ diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/emac.c b/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/emac.c deleted file mode 100644 index a5a464474..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/emac.c +++ /dev/null @@ -1,412 +0,0 @@ -/****************************************************************** - ***** ***** - ***** Name: cs8900.c ***** - ***** Ver.: 1.0 ***** - ***** Date: 07/05/2001 ***** - ***** Auth: Andreas Dannenberg ***** - ***** HTWK Leipzig ***** - ***** university of applied sciences ***** - ***** Germany ***** - ***** Func: ethernet packet-driver for use with LAN- ***** - ***** controller CS8900 from Crystal/Cirrus Logic ***** - ***** ***** - ***** Keil: Module modified for use with Philips ***** - ***** LPC2378 EMAC Ethernet controller ***** - ***** ***** - ******************************************************************/ - -/* Adapted from file originally written by Andreas Dannenberg. Supplied with permission. */ - -#include "FreeRTOS.h" -#include "semphr.h" -#include "task.h" -#include "emac.h" - -/* The semaphore used to wake the uIP task when data arives. */ -SemaphoreHandle_t xEMACSemaphore = NULL; - -static unsigned short *rptr; -static unsigned short *tptr; - -// easyWEB internal function -// help function to swap the byte order of a WORD - -static unsigned short SwapBytes(unsigned short Data) -{ - return (Data >> 8) | (Data << 8); -} - -// Keil: function added to write PHY -void write_PHY (int PhyReg, int Value) -{ - unsigned int tout; - - MADR = DP83848C_DEF_ADR | PhyReg; - MWTD = Value; - - /* Wait utill operation completed */ - tout = 0; - for (tout = 0; tout < MII_WR_TOUT; tout++) { - if ((MIND & MIND_BUSY) == 0) { - break; - } - } -} - - -// Keil: function added to read PHY -unsigned short read_PHY (unsigned char PhyReg) -{ - unsigned int tout; - - MADR = DP83848C_DEF_ADR | PhyReg; - MCMD = MCMD_READ; - - /* Wait until operation completed */ - tout = 0; - for (tout = 0; tout < MII_RD_TOUT; tout++) { - if ((MIND & MIND_BUSY) == 0) { - break; - } - } - MCMD = 0; - return (MRDD); -} - - -// Keil: function added to initialize Rx Descriptors -void rx_descr_init (void) -{ - unsigned int i; - - for (i = 0; i < NUM_RX_FRAG; i++) { - RX_DESC_PACKET(i) = RX_BUF(i); - RX_DESC_CTRL(i) = RCTRL_INT | (ETH_FRAG_SIZE-1); - RX_STAT_INFO(i) = 0; - RX_STAT_HASHCRC(i) = 0; - } - - /* Set EMAC Receive Descriptor Registers. */ - RxDescriptor = RX_DESC_BASE; - RxStatus = RX_STAT_BASE; - RxDescriptorNumber = NUM_RX_FRAG-1; - - /* Rx Descriptors Point to 0 */ - RxConsumeIndex = 0; -} - - -// Keil: function added to initialize Tx Descriptors -void tx_descr_init (void) { - unsigned int i; - - for (i = 0; i < NUM_TX_FRAG; i++) { - TX_DESC_PACKET(i) = TX_BUF(i); - TX_DESC_CTRL(i) = 0; - TX_STAT_INFO(i) = 0; - } - - /* Set EMAC Transmit Descriptor Registers. */ - TxDescriptor = TX_DESC_BASE; - TxStatus = TX_STAT_BASE; - TxDescriptorNumber = NUM_TX_FRAG-1; - - /* Tx Descriptors Point to 0 */ - TxProduceIndex = 0; -} - - -// configure port-pins for use with LAN-controller, -// reset it and send the configuration-sequence - -portBASE_TYPE Init_EMAC(void) -{ -portBASE_TYPE xReturn = pdPASS; -static portBASE_TYPE xAttempt = 0; -// Keil: function modified to access the EMAC -// Initializes the EMAC ethernet controller - volatile unsigned int regv,tout,id1,id2; - - /* Enable P1 Ethernet Pins. */ - PINSEL2 = configPINSEL2_VALUE; - PINSEL3 = (PINSEL3 & ~0x0000000F) | 0x00000005; - - /* Power Up the EMAC controller. */ - PCONP |= 0x40000000; - vTaskDelay( 10 ); - - /* Reset all EMAC internal modules. */ - MAC1 = MAC1_RES_TX | MAC1_RES_MCS_TX | MAC1_RES_RX | MAC1_RES_MCS_RX | - MAC1_SIM_RES | MAC1_SOFT_RES; - Command = CR_REG_RES | CR_TX_RES | CR_RX_RES; - - /* A short delay after reset. */ - vTaskDelay( 10 ); - - /* Initialize MAC control registers. */ - MAC1 = MAC1_PASS_ALL; - MAC2 = MAC2_CRC_EN | MAC2_PAD_EN; - MAXF = ETH_MAX_FLEN; - CLRT = CLRT_DEF; - IPGR = IPGR_DEF; - - /* Enable Reduced MII interface. */ - Command = CR_RMII | CR_PASS_RUNT_FRM; - - /* Reset Reduced MII Logic. */ - SUPP = SUPP_RES_RMII; - SUPP = 0; - - /* Put the DP83848C in reset mode */ - write_PHY (PHY_REG_BMCR, 0x8000); - write_PHY (PHY_REG_BMCR, 0x8000); - - /* Wait for hardware reset to end. */ - for (tout = 0; tout < 100; tout++) { - vTaskDelay( 200 ); - regv = read_PHY (PHY_REG_BMCR); - if (!(regv & 0x8000)) { - /* Reset complete */ - break; - } - } - - /* Check if this is a DP83848C PHY. */ - id1 = read_PHY (PHY_REG_IDR1); - id2 = read_PHY (PHY_REG_IDR2); - if (((id1 << 16) | (id2 & 0xFFF0)) == DP83848C_ID) { - /* Configure the PHY device */ - - /* Use autonegotiation about the link speed. */ - write_PHY (PHY_REG_BMCR, PHY_AUTO_NEG); - /* Wait to complete Auto_Negotiation. */ - for (tout = 0; tout < 10; tout++) { - vTaskDelay( 200 ); - regv = read_PHY (PHY_REG_BMSR); - if (regv & 0x0020) { - /* Autonegotiation Complete. */ - break; - } - } - } - else - { - xReturn = pdFAIL; - } - - /* Check the link status. */ - if( xReturn == pdPASS ) - { - xReturn = pdFAIL; - for (tout = 0; tout < 10; tout++) { - vTaskDelay( 200 ); - regv = read_PHY (PHY_REG_STS); - if (regv & 0x0001) { - /* Link is on. */ - xReturn = pdPASS; - break; - } - } - } - - if( xReturn == pdPASS ) - { - /* Configure Full/Half Duplex mode. */ - if (regv & 0x0004) { - /* Full duplex is enabled. */ - MAC2 |= MAC2_FULL_DUP; - Command |= CR_FULL_DUP; - IPGT = IPGT_FULL_DUP; - } - else { - /* Half duplex mode. */ - IPGT = IPGT_HALF_DUP; - } - - /* Configure 100MBit/10MBit mode. */ - if (regv & 0x0002) { - /* 10MBit mode. */ - SUPP = 0; - } - else { - /* 100MBit mode. */ - SUPP = SUPP_SPEED; - } - - /* Set the Ethernet MAC Address registers */ - SA0 = (emacETHADDR0 << 8) | emacETHADDR1; - SA1 = (emacETHADDR2 << 8) | emacETHADDR3; - SA2 = (emacETHADDR4 << 8) | emacETHADDR5; - - /* Initialize Tx and Rx DMA Descriptors */ - rx_descr_init (); - tx_descr_init (); - - /* Receive Broadcast and Perfect Match Packets */ - RxFilterCtrl = RFC_UCAST_EN | RFC_BCAST_EN | RFC_PERFECT_EN; - - /* Create the semaphore used ot wake the uIP task. */ - vSemaphoreCreateBinary( xEMACSemaphore ); - - /* Reset all interrupts */ - IntClear = 0xFFFF; - - /* Enable receive and transmit mode of MAC Ethernet core */ - Command |= (CR_RX_EN | CR_TX_EN); - MAC1 |= MAC1_REC_EN; - } - - return xReturn; -} - - -// reads a word in little-endian byte order from RX_BUFFER - -unsigned short ReadFrame_EMAC(void) -{ - return (*rptr++); -} - -// reads a word in big-endian byte order from RX_FRAME_PORT -// (useful to avoid permanent byte-swapping while reading -// TCP/IP-data) - -unsigned short ReadFrameBE_EMAC(void) -{ - unsigned short ReturnValue; - - ReturnValue = SwapBytes (*rptr++); - return (ReturnValue); -} - - -// copies bytes from frame port to MCU-memory -// NOTES: * an odd number of byte may only be transfered -// if the frame is read to the end! -// * MCU-memory MUST start at word-boundary - -void CopyFromFrame_EMAC(void *Dest, unsigned short Size) -{ - unsigned short * piDest; // Keil: Pointer added to correct expression - - piDest = Dest; // Keil: Line added - while (Size > 1) { - *piDest++ = ReadFrame_EMAC(); - Size -= 2; - } - - if (Size) { // check for leftover byte... - *(unsigned char *)piDest = (char)ReadFrame_EMAC();// the LAN-Controller will return 0 - } // for the highbyte -} - -// does a dummy read on frame-I/O-port -// NOTE: only an even number of bytes is read! - -void DummyReadFrame_EMAC(unsigned short Size) // discards an EVEN number of bytes -{ // from RX-fifo - while (Size > 1) { - ReadFrame_EMAC(); - Size -= 2; - } -} - -// Reads the length of the received ethernet frame and checks if the -// destination address is a broadcast message or not -// returns the frame length -unsigned short StartReadFrame(void) { - unsigned short RxLen; - unsigned int idx; - - idx = RxConsumeIndex; - RxLen = (RX_STAT_INFO(idx) & RINFO_SIZE) - 3; - rptr = (unsigned short *)RX_DESC_PACKET(idx); - return(RxLen); -} - -void EndReadFrame(void) { - unsigned int idx; - - /* DMA free packet. */ - idx = RxConsumeIndex; - - if (++idx == NUM_RX_FRAG) - idx = 0; - - RxConsumeIndex = idx; -} - -unsigned int CheckFrameReceived(void) { // Packet received ? - - if (RxProduceIndex != RxConsumeIndex) // more packets received ? - return(1); - else - return(0); -} - -unsigned int uiGetEMACRxData( unsigned char *ucBuffer ) -{ -unsigned int uiLen = 0; - - if( RxProduceIndex != RxConsumeIndex ) - { - uiLen = StartReadFrame(); - CopyFromFrame_EMAC( ucBuffer, uiLen ); - EndReadFrame(); - } - - return uiLen; -} - -// requests space in EMAC memory for storing an outgoing frame - -void RequestSend(void) -{ - unsigned int idx; - - idx = TxProduceIndex; - tptr = (unsigned short *)TX_DESC_PACKET(idx); -} - -// check if ethernet controller is ready to accept the -// frame we want to send - -unsigned int Rdy4Tx(void) -{ - return (1); // the ethernet controller transmits much faster -} // than the CPU can load its buffers - - -// writes a word in little-endian byte order to TX_BUFFER -void WriteFrame_EMAC(unsigned short Data) -{ - *tptr++ = Data; -} - -// copies bytes from MCU-memory to frame port -// NOTES: * an odd number of byte may only be transfered -// if the frame is written to the end! -// * MCU-memory MUST start at word-boundary - -void CopyToFrame_EMAC(void *Source, unsigned int Size) -{ - unsigned short * piSource; - - piSource = Source; - Size = (Size + 1) & 0xFFFE; // round Size up to next even number - while (Size > 0) { - WriteFrame_EMAC(*piSource++); - Size -= 2; - } -} - -void DoSend_EMAC(unsigned short FrameSize) -{ - unsigned int idx; - - idx = TxProduceIndex; - TX_DESC_CTRL(idx) = FrameSize | TCTRL_LAST; - if (++idx == NUM_TX_FRAG) idx = 0; - TxProduceIndex = idx; -} - diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/emac.h b/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/emac.h deleted file mode 100644 index c3634217d..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/emac.h +++ /dev/null @@ -1,322 +0,0 @@ -/*---------------------------------------------------------------------------- - * LPC2378 Ethernet Definitions - *---------------------------------------------------------------------------- - * Name: EMAC.H - * Purpose: Philips LPC2378 EMAC hardware definitions - *---------------------------------------------------------------------------- - * Copyright (c) 2006 KEIL - An ARM Company. All rights reserved. - *---------------------------------------------------------------------------*/ -#ifndef __EMAC_H -#define __EMAC_H - -/* MAC address definition. The MAC address must be unique on the network. */ -#define emacETHADDR0 0 -#define emacETHADDR1 0xbd -#define emacETHADDR2 0x33 -#define emacETHADDR3 0x02 -#define emacETHADDR4 0x64 -#define emacETHADDR5 0x24 - - -/* EMAC Memory Buffer configuration for 16K Ethernet RAM. */ -#define NUM_RX_FRAG 4 /* Num.of RX Fragments 4*1536= 6.0kB */ -#define NUM_TX_FRAG 2 /* Num.of TX Fragments 2*1536= 3.0kB */ -#define ETH_FRAG_SIZE 1536 /* Packet Fragment size 1536 Bytes */ - -#define ETH_MAX_FLEN 1536 /* Max. Ethernet Frame Size */ - -/* EMAC variables located in 16K Ethernet SRAM */ -#define RX_DESC_BASE 0x7FE00000 -#define RX_STAT_BASE (RX_DESC_BASE + NUM_RX_FRAG*8) -#define TX_DESC_BASE (RX_STAT_BASE + NUM_RX_FRAG*8) -#define TX_STAT_BASE (TX_DESC_BASE + NUM_TX_FRAG*8) -#define RX_BUF_BASE (TX_STAT_BASE + NUM_TX_FRAG*4) -#define TX_BUF_BASE (RX_BUF_BASE + NUM_RX_FRAG*ETH_FRAG_SIZE) - -/* RX and TX descriptor and status definitions. */ -#define RX_DESC_PACKET(i) (*(unsigned int *)(RX_DESC_BASE + 8*i)) -#define RX_DESC_CTRL(i) (*(unsigned int *)(RX_DESC_BASE+4 + 8*i)) -#define RX_STAT_INFO(i) (*(unsigned int *)(RX_STAT_BASE + 8*i)) -#define RX_STAT_HASHCRC(i) (*(unsigned int *)(RX_STAT_BASE+4 + 8*i)) -#define TX_DESC_PACKET(i) (*(unsigned int *)(TX_DESC_BASE + 8*i)) -#define TX_DESC_CTRL(i) (*(unsigned int *)(TX_DESC_BASE+4 + 8*i)) -#define TX_STAT_INFO(i) (*(unsigned int *)(TX_STAT_BASE + 4*i)) -#define RX_BUF(i) (RX_BUF_BASE + ETH_FRAG_SIZE*i) -#define TX_BUF(i) (TX_BUF_BASE + ETH_FRAG_SIZE*i) - -/* MAC Configuration Register 1 */ -#define MAC1_REC_EN 0x00000001 /* Receive Enable */ -#define MAC1_PASS_ALL 0x00000002 /* Pass All Receive Frames */ -#define MAC1_RX_FLOWC 0x00000004 /* RX Flow Control */ -#define MAC1_TX_FLOWC 0x00000008 /* TX Flow Control */ -#define MAC1_LOOPB 0x00000010 /* Loop Back Mode */ -#define MAC1_RES_TX 0x00000100 /* Reset TX Logic */ -#define MAC1_RES_MCS_TX 0x00000200 /* Reset MAC TX Control Sublayer */ -#define MAC1_RES_RX 0x00000400 /* Reset RX Logic */ -#define MAC1_RES_MCS_RX 0x00000800 /* Reset MAC RX Control Sublayer */ -#define MAC1_SIM_RES 0x00004000 /* Simulation Reset */ -#define MAC1_SOFT_RES 0x00008000 /* Soft Reset MAC */ - -/* MAC Configuration Register 2 */ -#define MAC2_FULL_DUP 0x00000001 /* Full Duplex Mode */ -#define MAC2_FRM_LEN_CHK 0x00000002 /* Frame Length Checking */ -#define MAC2_HUGE_FRM_EN 0x00000004 /* Huge Frame Enable */ -#define MAC2_DLY_CRC 0x00000008 /* Delayed CRC Mode */ -#define MAC2_CRC_EN 0x00000010 /* Append CRC to every Frame */ -#define MAC2_PAD_EN 0x00000020 /* Pad all Short Frames */ -#define MAC2_VLAN_PAD_EN 0x00000040 /* VLAN Pad Enable */ -#define MAC2_ADET_PAD_EN 0x00000080 /* Auto Detect Pad Enable */ -#define MAC2_PPREAM_ENF 0x00000100 /* Pure Preamble Enforcement */ -#define MAC2_LPREAM_ENF 0x00000200 /* Long Preamble Enforcement */ -#undef MAC2_NO_BACKOFF /* Remove compiler warning. */ -#define MAC2_NO_BACKOFF 0x00001000 /* No Backoff Algorithm */ -#define MAC2_BACK_PRESSURE 0x00002000 /* Backoff Presurre / No Backoff */ -#define MAC2_EXCESS_DEF 0x00004000 /* Excess Defer */ - -/* Back-to-Back Inter-Packet-Gap Register */ -#define IPGT_FULL_DUP 0x00000015 /* Recommended value for Full Duplex */ -#define IPGT_HALF_DUP 0x00000012 /* Recommended value for Half Duplex */ - -/* Non Back-to-Back Inter-Packet-Gap Register */ -#define IPGR_DEF 0x00000012 /* Recommended value */ - -/* Collision Window/Retry Register */ -#define CLRT_DEF 0x0000370F /* Default value */ - -/* PHY Support Register */ -#undef SUPP_SPEED /* Remove compiler warning. */ -#define SUPP_SPEED 0x00000100 /* Reduced MII Logic Current Speed */ -#define SUPP_RES_RMII 0x00000800 /* Reset Reduced MII Logic */ - -/* Test Register */ -#define TEST_SHCUT_PQUANTA 0x00000001 /* Shortcut Pause Quanta */ -#define TEST_TST_PAUSE 0x00000002 /* Test Pause */ -#define TEST_TST_BACKP 0x00000004 /* Test Back Pressure */ - -/* MII Management Configuration Register */ -#define MCFG_SCAN_INC 0x00000001 /* Scan Increment PHY Address */ -#define MCFG_SUPP_PREAM 0x00000002 /* Suppress Preamble */ -#define MCFG_CLK_SEL 0x0000001C /* Clock Select Mask */ -#define MCFG_RES_MII 0x00008000 /* Reset MII Management Hardware */ - -/* MII Management Command Register */ -#undef MCMD_READ /* Remove compiler warning. */ -#define MCMD_READ 0x00000001 /* MII Read */ -#undef MCMD_SCAN /* Remove compiler warning. */ -#define MCMD_SCAN 0x00000002 /* MII Scan continuously */ - -#define MII_WR_TOUT 0x00050000 /* MII Write timeout count */ -#define MII_RD_TOUT 0x00050000 /* MII Read timeout count */ - -/* MII Management Address Register */ -#define MADR_REG_ADR 0x0000001F /* MII Register Address Mask */ -#define MADR_PHY_ADR 0x00001F00 /* PHY Address Mask */ - -/* MII Management Indicators Register */ -#undef MIND_BUSY /* Remove compiler warning. */ -#define MIND_BUSY 0x00000001 /* MII is Busy */ -#define MIND_SCAN 0x00000002 /* MII Scanning in Progress */ -#define MIND_NOT_VAL 0x00000004 /* MII Read Data not valid */ -#define MIND_MII_LINK_FAIL 0x00000008 /* MII Link Failed */ - -/* Command Register */ -#define CR_RX_EN 0x00000001 /* Enable Receive */ -#define CR_TX_EN 0x00000002 /* Enable Transmit */ -#define CR_REG_RES 0x00000008 /* Reset Host Registers */ -#define CR_TX_RES 0x00000010 /* Reset Transmit Datapath */ -#define CR_RX_RES 0x00000020 /* Reset Receive Datapath */ -#define CR_PASS_RUNT_FRM 0x00000040 /* Pass Runt Frames */ -#define CR_PASS_RX_FILT 0x00000080 /* Pass RX Filter */ -#define CR_TX_FLOW_CTRL 0x00000100 /* TX Flow Control */ -#define CR_RMII 0x00000200 /* Reduced MII Interface */ -#define CR_FULL_DUP 0x00000400 /* Full Duplex */ - -/* Status Register */ -#define SR_RX_EN 0x00000001 /* Enable Receive */ -#define SR_TX_EN 0x00000002 /* Enable Transmit */ - -/* Transmit Status Vector 0 Register */ -#define TSV0_CRC_ERR 0x00000001 /* CRC error */ -#define TSV0_LEN_CHKERR 0x00000002 /* Length Check Error */ -#define TSV0_LEN_OUTRNG 0x00000004 /* Length Out of Range */ -#define TSV0_DONE 0x00000008 /* Tramsmission Completed */ -#define TSV0_MCAST 0x00000010 /* Multicast Destination */ -#define TSV0_BCAST 0x00000020 /* Broadcast Destination */ -#define TSV0_PKT_DEFER 0x00000040 /* Packet Deferred */ -#define TSV0_EXC_DEFER 0x00000080 /* Excessive Packet Deferral */ -#define TSV0_EXC_COLL 0x00000100 /* Excessive Collision */ -#define TSV0_LATE_COLL 0x00000200 /* Late Collision Occured */ -#define TSV0_GIANT 0x00000400 /* Giant Frame */ -#define TSV0_UNDERRUN 0x00000800 /* Buffer Underrun */ -#define TSV0_BYTES 0x0FFFF000 /* Total Bytes Transferred */ -#define TSV0_CTRL_FRAME 0x10000000 /* Control Frame */ -#define TSV0_PAUSE 0x20000000 /* Pause Frame */ -#define TSV0_BACK_PRESS 0x40000000 /* Backpressure Method Applied */ -#define TSV0_VLAN 0x80000000 /* VLAN Frame */ - -/* Transmit Status Vector 1 Register */ -#define TSV1_BYTE_CNT 0x0000FFFF /* Transmit Byte Count */ -#define TSV1_COLL_CNT 0x000F0000 /* Transmit Collision Count */ - -/* Receive Status Vector Register */ -#define RSV_BYTE_CNT 0x0000FFFF /* Receive Byte Count */ -#define RSV_PKT_IGNORED 0x00010000 /* Packet Previously Ignored */ -#define RSV_RXDV_SEEN 0x00020000 /* RXDV Event Previously Seen */ -#define RSV_CARR_SEEN 0x00040000 /* Carrier Event Previously Seen */ -#define RSV_REC_CODEV 0x00080000 /* Receive Code Violation */ -#define RSV_CRC_ERR 0x00100000 /* CRC Error */ -#define RSV_LEN_CHKERR 0x00200000 /* Length Check Error */ -#define RSV_LEN_OUTRNG 0x00400000 /* Length Out of Range */ -#define RSV_REC_OK 0x00800000 /* Frame Received OK */ -#define RSV_MCAST 0x01000000 /* Multicast Frame */ -#define RSV_BCAST 0x02000000 /* Broadcast Frame */ -#define RSV_DRIB_NIBB 0x04000000 /* Dribble Nibble */ -#define RSV_CTRL_FRAME 0x08000000 /* Control Frame */ -#define RSV_PAUSE 0x10000000 /* Pause Frame */ -#define RSV_UNSUPP_OPC 0x20000000 /* Unsupported Opcode */ -#define RSV_VLAN 0x40000000 /* VLAN Frame */ - -/* Flow Control Counter Register */ -#define FCC_MIRR_CNT 0x0000FFFF /* Mirror Counter */ -#define FCC_PAUSE_TIM 0xFFFF0000 /* Pause Timer */ - -/* Flow Control Status Register */ -#define FCS_MIRR_CNT 0x0000FFFF /* Mirror Counter Current */ - -/* Receive Filter Control Register */ -#define RFC_UCAST_EN 0x00000001 /* Accept Unicast Frames Enable */ -#define RFC_BCAST_EN 0x00000002 /* Accept Broadcast Frames Enable */ -#define RFC_MCAST_EN 0x00000004 /* Accept Multicast Frames Enable */ -#define RFC_UCAST_HASH_EN 0x00000008 /* Accept Unicast Hash Filter Frames */ -#define RFC_MCAST_HASH_EN 0x00000010 /* Accept Multicast Hash Filter Fram.*/ -#define RFC_PERFECT_EN 0x00000020 /* Accept Perfect Match Enable */ -#define RFC_MAGP_WOL_EN 0x00001000 /* Magic Packet Filter WoL Enable */ -#define RFC_PFILT_WOL_EN 0x00002000 /* Perfect Filter WoL Enable */ - -/* Receive Filter WoL Status/Clear Registers */ -#define WOL_UCAST 0x00000001 /* Unicast Frame caused WoL */ -#define WOL_BCAST 0x00000002 /* Broadcast Frame caused WoL */ -#define WOL_MCAST 0x00000004 /* Multicast Frame caused WoL */ -#define WOL_UCAST_HASH 0x00000008 /* Unicast Hash Filter Frame WoL */ -#define WOL_MCAST_HASH 0x00000010 /* Multicast Hash Filter Frame WoL */ -#define WOL_PERFECT 0x00000020 /* Perfect Filter WoL */ -#define WOL_RX_FILTER 0x00000080 /* RX Filter caused WoL */ -#define WOL_MAG_PACKET 0x00000100 /* Magic Packet Filter caused WoL */ - -/* Interrupt Status/Enable/Clear/Set Registers */ -#define INT_RX_OVERRUN 0x00000001 /* Overrun Error in RX Queue */ -#define INT_RX_ERR 0x00000002 /* Receive Error */ -#define INT_RX_FIN 0x00000004 /* RX Finished Process Descriptors */ -#define INT_RX_DONE 0x00000008 /* Receive Done */ -#define INT_TX_UNDERRUN 0x00000010 /* Transmit Underrun */ -#define INT_TX_ERR 0x00000020 /* Transmit Error */ -#define INT_TX_FIN 0x00000040 /* TX Finished Process Descriptors */ -#define INT_TX_DONE 0x00000080 /* Transmit Done */ -#define INT_SOFT_INT 0x00001000 /* Software Triggered Interrupt */ -#define INT_WAKEUP 0x00002000 /* Wakeup Event Interrupt */ - -/* Power Down Register */ -#define PD_POWER_DOWN 0x80000000 /* Power Down MAC */ - -/* RX Descriptor Control Word */ -#define RCTRL_SIZE 0x000007FF /* Buffer size mask */ -#define RCTRL_INT 0x80000000 /* Generate RxDone Interrupt */ - -/* RX Status Hash CRC Word */ -#define RHASH_SA 0x000001FF /* Hash CRC for Source Address */ -#define RHASH_DA 0x001FF000 /* Hash CRC for Destination Address */ - -/* RX Status Information Word */ -#define RINFO_SIZE 0x000007FF /* Data size in bytes */ -#define RINFO_CTRL_FRAME 0x00040000 /* Control Frame */ -#define RINFO_VLAN 0x00080000 /* VLAN Frame */ -#define RINFO_FAIL_FILT 0x00100000 /* RX Filter Failed */ -#define RINFO_MCAST 0x00200000 /* Multicast Frame */ -#define RINFO_BCAST 0x00400000 /* Broadcast Frame */ -#define RINFO_CRC_ERR 0x00800000 /* CRC Error in Frame */ -#define RINFO_SYM_ERR 0x01000000 /* Symbol Error from PHY */ -#define RINFO_LEN_ERR 0x02000000 /* Length Error */ -#define RINFO_RANGE_ERR 0x04000000 /* Range Error (exceeded max. size) */ -#define RINFO_ALIGN_ERR 0x08000000 /* Alignment Error */ -#define RINFO_OVERRUN 0x10000000 /* Receive overrun */ -#define RINFO_NO_DESCR 0x20000000 /* No new Descriptor available */ -#define RINFO_LAST_FLAG 0x40000000 /* Last Fragment in Frame */ -#define RINFO_ERR 0x80000000 /* Error Occured (OR of all errors) */ - -#define RINFO_ERR_MASK (RINFO_FAIL_FILT | RINFO_CRC_ERR | RINFO_SYM_ERR | \ - RINFO_LEN_ERR | RINFO_ALIGN_ERR | RINFO_OVERRUN) - -/* TX Descriptor Control Word */ -#define TCTRL_SIZE 0x000007FF /* Size of data buffer in bytes */ -#define TCTRL_OVERRIDE 0x04000000 /* Override Default MAC Registers */ -#define TCTRL_HUGE 0x08000000 /* Enable Huge Frame */ -#define TCTRL_PAD 0x10000000 /* Pad short Frames to 64 bytes */ -#define TCTRL_CRC 0x20000000 /* Append a hardware CRC to Frame */ -#define TCTRL_LAST 0x40000000 /* Last Descriptor for TX Frame */ -#define TCTRL_INT 0x80000000 /* Generate TxDone Interrupt */ - -/* TX Status Information Word */ -#define TINFO_COL_CNT 0x01E00000 /* Collision Count */ -#define TINFO_DEFER 0x02000000 /* Packet Deferred (not an error) */ -#define TINFO_EXCESS_DEF 0x04000000 /* Excessive Deferral */ -#define TINFO_EXCESS_COL 0x08000000 /* Excessive Collision */ -#define TINFO_LATE_COL 0x10000000 /* Late Collision Occured */ -#define TINFO_UNDERRUN 0x20000000 /* Transmit Underrun */ -#define TINFO_NO_DESCR 0x40000000 /* No new Descriptor available */ -#define TINFO_ERR 0x80000000 /* Error Occured (OR of all errors) */ - -/* DP83848C PHY Registers */ -#define PHY_REG_BMCR 0x00 /* Basic Mode Control Register */ -#define PHY_REG_BMSR 0x01 /* Basic Mode Status Register */ -#define PHY_REG_IDR1 0x02 /* PHY Identifier 1 */ -#define PHY_REG_IDR2 0x03 /* PHY Identifier 2 */ -#define PHY_REG_ANAR 0x04 /* Auto-Negotiation Advertisement */ -#define PHY_REG_ANLPAR 0x05 /* Auto-Neg. Link Partner Abitily */ -#define PHY_REG_ANER 0x06 /* Auto-Neg. Expansion Register */ -#define PHY_REG_ANNPTR 0x07 /* Auto-Neg. Next Page TX */ - -/* PHY Extended Registers */ -#define PHY_REG_STS 0x10 /* Status Register */ -#define PHY_REG_MICR 0x11 /* MII Interrupt Control Register */ -#define PHY_REG_MISR 0x12 /* MII Interrupt Status Register */ -#define PHY_REG_FCSCR 0x14 /* False Carrier Sense Counter */ -#define PHY_REG_RECR 0x15 /* Receive Error Counter */ -#define PHY_REG_PCSR 0x16 /* PCS Sublayer Config. and Status */ -#define PHY_REG_RBR 0x17 /* RMII and Bypass Register */ -#define PHY_REG_LEDCR 0x18 /* LED Direct Control Register */ -#define PHY_REG_PHYCR 0x19 /* PHY Control Register */ -#define PHY_REG_10BTSCR 0x1A /* 10Base-T Status/Control Register */ -#define PHY_REG_CDCTRL1 0x1B /* CD Test Control and BIST Extens. */ -#define PHY_REG_EDCR 0x1D /* Energy Detect Control Register */ - -#define PHY_FULLD_100M 0x2100 /* Full Duplex 100Mbit */ -#define PHY_HALFD_100M 0x2000 /* Half Duplex 100Mbit */ -#define PHY_FULLD_10M 0x0100 /* Full Duplex 10Mbit */ -#define PHY_HALFD_10M 0x0000 /* Half Duplex 10MBit */ -#define PHY_AUTO_NEG 0x3000 /* Select Auto Negotiation */ - -#define DP83848C_DEF_ADR 0x0100 /* Default PHY device address */ -#define DP83848C_ID 0x20005C90 /* PHY Identifier */ - -// prototypes -portBASE_TYPE Init_EMAC(void); -unsigned short ReadFrameBE_EMAC(void); -void CopyToFrame_EMAC(void *Source, unsigned int Size); -void CopyFromFrame_EMAC(void *Dest, unsigned short Size); -void DummyReadFrame_EMAC(unsigned short Size); -unsigned short StartReadFrame(void); -void EndReadFrame(void); -unsigned int CheckFrameReceived(void); -void RequestSend(void); -unsigned int Rdy4Tx(void); -void DoSend_EMAC(unsigned short FrameSize); -void vEMACWaitForInput( void ); -unsigned int uiGetEMACRxData( unsigned char *ucBuffer ); - - -#endif - -/*---------------------------------------------------------------------------- - * end of file - *---------------------------------------------------------------------------*/ - diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/http-strings b/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/http-strings deleted file mode 100644 index 0d3c30cdd..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/http-strings +++ /dev/null @@ -1,35 +0,0 @@ -http_http "http://" -http_200 "200 " -http_301 "301 " -http_302 "302 " -http_get "GET " -http_10 "HTTP/1.0" -http_11 "HTTP/1.1" -http_content_type "content-type: " -http_texthtml "text/html" -http_location "location: " -http_host "host: " -http_crnl "\r\n" -http_index_html "/index.html" -http_404_html "/404.html" -http_referer "Referer:" -http_header_200 "HTTP/1.0 200 OK\r\nServer: uIP/1.0 http://www.sics.se/~adam/uip/\r\nConnection: close\r\n" -http_header_404 "HTTP/1.0 404 Not found\r\nServer: uIP/1.0 http://www.sics.se/~adam/uip/\r\nConnection: close\r\n" -http_content_type_plain "Content-type: text/plain\r\n\r\n" -http_content_type_html "Content-type: text/html\r\n\r\n" -http_content_type_css "Content-type: text/css\r\n\r\n" -http_content_type_text "Content-type: text/text\r\n\r\n" -http_content_type_png "Content-type: image/png\r\n\r\n" -http_content_type_gif "Content-type: image/gif\r\n\r\n" -http_content_type_jpg "Content-type: image/jpeg\r\n\r\n" -http_content_type_binary "Content-type: application/octet-stream\r\n\r\n" -http_html ".html" -http_shtml ".shtml" -http_htm ".htm" -http_css ".css" -http_png ".png" -http_gif ".gif" -http_jpg ".jpg" -http_text ".txt" -http_txt ".txt" - diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/http-strings.c b/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/http-strings.c deleted file mode 100644 index ef7a41c7d..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/http-strings.c +++ /dev/null @@ -1,102 +0,0 @@ -const char http_http[8] = -/* "http://" */ -{0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, }; -const char http_200[5] = -/* "200 " */ -{0x32, 0x30, 0x30, 0x20, }; -const char http_301[5] = -/* "301 " */ -{0x33, 0x30, 0x31, 0x20, }; -const char http_302[5] = -/* "302 " */ -{0x33, 0x30, 0x32, 0x20, }; -const char http_get[5] = -/* "GET " */ -{0x47, 0x45, 0x54, 0x20, }; -const char http_10[9] = -/* "HTTP/1.0" */ -{0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30, }; -const char http_11[9] = -/* "HTTP/1.1" */ -{0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x31, }; -const char http_content_type[15] = -/* "content-type: " */ -{0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, }; -const char http_texthtml[10] = -/* "text/html" */ -{0x74, 0x65, 0x78, 0x74, 0x2f, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_location[11] = -/* "location: " */ -{0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, }; -const char http_host[7] = -/* "host: " */ -{0x68, 0x6f, 0x73, 0x74, 0x3a, 0x20, }; -const char http_crnl[3] = -/* "\r\n" */ -{0xd, 0xa, }; -const char http_index_html[12] = -/* "/index.html" */ -{0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_404_html[10] = -/* "/404.html" */ -{0x2f, 0x34, 0x30, 0x34, 0x2e, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_referer[9] = -/* "Referer:" */ -{0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x72, 0x3a, }; -const char http_header_200[84] = -/* "HTTP/1.0 200 OK\r\nServer: uIP/1.0 http://www.sics.se/~adam/uip/\r\nConnection: close\r\n" */ -{0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x32, 0x30, 0x30, 0x20, 0x4f, 0x4b, 0xd, 0xa, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x3a, 0x20, 0x75, 0x49, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x73, 0x69, 0x63, 0x73, 0x2e, 0x73, 0x65, 0x2f, 0x7e, 0x61, 0x64, 0x61, 0x6d, 0x2f, 0x75, 0x69, 0x70, 0x2f, 0xd, 0xa, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0xd, 0xa, }; -const char http_header_404[91] = -/* "HTTP/1.0 404 Not found\r\nServer: uIP/1.0 http://www.sics.se/~adam/uip/\r\nConnection: close\r\n" */ -{0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x34, 0x30, 0x34, 0x20, 0x4e, 0x6f, 0x74, 0x20, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0xd, 0xa, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x3a, 0x20, 0x75, 0x49, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x73, 0x69, 0x63, 0x73, 0x2e, 0x73, 0x65, 0x2f, 0x7e, 0x61, 0x64, 0x61, 0x6d, 0x2f, 0x75, 0x69, 0x70, 0x2f, 0xd, 0xa, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0xd, 0xa, }; -const char http_content_type_plain[29] = -/* "Content-type: text/plain\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_html[28] = -/* "Content-type: text/html\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_css [27] = -/* "Content-type: text/css\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x63, 0x73, 0x73, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_text[28] = -/* "Content-type: text/text\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x74, 0x65, 0x78, 0x74, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_png [28] = -/* "Content-type: image/png\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x70, 0x6e, 0x67, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_gif [28] = -/* "Content-type: image/gif\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x67, 0x69, 0x66, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_jpg [29] = -/* "Content-type: image/jpeg\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x6a, 0x70, 0x65, 0x67, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_binary[43] = -/* "Content-type: application/octet-stream\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x6f, 0x63, 0x74, 0x65, 0x74, 0x2d, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0xd, 0xa, 0xd, 0xa, }; -const char http_html[6] = -/* ".html" */ -{0x2e, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_shtml[7] = -/* ".shtml" */ -{0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_htm[5] = -/* ".htm" */ -{0x2e, 0x68, 0x74, 0x6d, }; -const char http_css[5] = -/* ".css" */ -{0x2e, 0x63, 0x73, 0x73, }; -const char http_png[5] = -/* ".png" */ -{0x2e, 0x70, 0x6e, 0x67, }; -const char http_gif[5] = -/* ".gif" */ -{0x2e, 0x67, 0x69, 0x66, }; -const char http_jpg[5] = -/* ".jpg" */ -{0x2e, 0x6a, 0x70, 0x67, }; -const char http_text[5] = -/* ".txt" */ -{0x2e, 0x74, 0x78, 0x74, }; -const char http_txt[5] = -/* ".txt" */ -{0x2e, 0x74, 0x78, 0x74, }; diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/http-strings.h b/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/http-strings.h deleted file mode 100644 index acbe7e17f..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/http-strings.h +++ /dev/null @@ -1,34 +0,0 @@ -extern const char http_http[8]; -extern const char http_200[5]; -extern const char http_301[5]; -extern const char http_302[5]; -extern const char http_get[5]; -extern const char http_10[9]; -extern const char http_11[9]; -extern const char http_content_type[15]; -extern const char http_texthtml[10]; -extern const char http_location[11]; -extern const char http_host[7]; -extern const char http_crnl[3]; -extern const char http_index_html[12]; -extern const char http_404_html[10]; -extern const char http_referer[9]; -extern const char http_header_200[84]; -extern const char http_header_404[91]; -extern const char http_content_type_plain[29]; -extern const char http_content_type_html[28]; -extern const char http_content_type_css [27]; -extern const char http_content_type_text[28]; -extern const char http_content_type_png [28]; -extern const char http_content_type_gif [28]; -extern const char http_content_type_jpg [29]; -extern const char http_content_type_binary[43]; -extern const char http_html[6]; -extern const char http_shtml[7]; -extern const char http_htm[5]; -extern const char http_css[5]; -extern const char http_png[5]; -extern const char http_gif[5]; -extern const char http_jpg[5]; -extern const char http_text[5]; -extern const char http_txt[5]; diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/httpd-cgi.c b/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/httpd-cgi.c deleted file mode 100644 index a1de4e887..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/httpd-cgi.c +++ /dev/null @@ -1,276 +0,0 @@ -/** - * \addtogroup httpd - * @{ - */ - -/** - * \file - * Web server script interface - * \author - * Adam Dunkels - * - */ - -/* - * Copyright (c) 2001-2006, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: httpd-cgi.c,v 1.2 2006/06/11 21:46:37 adam Exp $ - * - */ - -#include "uip.h" -#include "psock.h" -#include "httpd.h" -#include "httpd-cgi.h" -#include "httpd-fs.h" - -#include -#include - -HTTPD_CGI_CALL(file, "file-stats", file_stats); -HTTPD_CGI_CALL(tcp, "tcp-connections", tcp_stats); -HTTPD_CGI_CALL(net, "net-stats", net_stats); -HTTPD_CGI_CALL(rtos, "rtos-stats", rtos_stats ); -HTTPD_CGI_CALL(io, "led-io", led_io ); - - -static const struct httpd_cgi_call * const calls[] = { &file, &tcp, &net, &rtos, &io, NULL }; - -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(nullfunction(struct httpd_state *s, char *ptr)) -{ - PSOCK_BEGIN(&s->sout); - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -httpd_cgifunction -httpd_cgi(char *name) -{ - const struct httpd_cgi_call **f; - - /* Find the matching name in the table, return the function. */ - for(f = calls; *f != NULL; ++f) { - if(strncmp((*f)->name, name, strlen((*f)->name)) == 0) { - return (*f)->function; - } - } - return nullfunction; -} -/*---------------------------------------------------------------------------*/ -static unsigned short -generate_file_stats(void *arg) -{ - char *f = (char *)arg; - return snprintf((char *)uip_appdata, UIP_APPDATA_SIZE, "%5u", httpd_fs_count(f)); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(file_stats(struct httpd_state *s, char *ptr)) -{ - PSOCK_BEGIN(&s->sout); - - PSOCK_GENERATOR_SEND(&s->sout, generate_file_stats, strchr(ptr, ' ') + 1); - - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -static const char closed[] = /* "CLOSED",*/ -{0x43, 0x4c, 0x4f, 0x53, 0x45, 0x44, 0}; -static const char syn_rcvd[] = /* "SYN-RCVD",*/ -{0x53, 0x59, 0x4e, 0x2d, 0x52, 0x43, 0x56, - 0x44, 0}; -static const char syn_sent[] = /* "SYN-SENT",*/ -{0x53, 0x59, 0x4e, 0x2d, 0x53, 0x45, 0x4e, - 0x54, 0}; -static const char established[] = /* "ESTABLISHED",*/ -{0x45, 0x53, 0x54, 0x41, 0x42, 0x4c, 0x49, 0x53, 0x48, - 0x45, 0x44, 0}; -static const char fin_wait_1[] = /* "FIN-WAIT-1",*/ -{0x46, 0x49, 0x4e, 0x2d, 0x57, 0x41, 0x49, - 0x54, 0x2d, 0x31, 0}; -static const char fin_wait_2[] = /* "FIN-WAIT-2",*/ -{0x46, 0x49, 0x4e, 0x2d, 0x57, 0x41, 0x49, - 0x54, 0x2d, 0x32, 0}; -static const char closing[] = /* "CLOSING",*/ -{0x43, 0x4c, 0x4f, 0x53, 0x49, - 0x4e, 0x47, 0}; -static const char time_wait[] = /* "TIME-WAIT,"*/ -{0x54, 0x49, 0x4d, 0x45, 0x2d, 0x57, 0x41, - 0x49, 0x54, 0}; -static const char last_ack[] = /* "LAST-ACK"*/ -{0x4c, 0x41, 0x53, 0x54, 0x2d, 0x41, 0x43, - 0x4b, 0}; - -static const char *states[] = { - closed, - syn_rcvd, - syn_sent, - established, - fin_wait_1, - fin_wait_2, - closing, - time_wait, - last_ack}; - - -static unsigned short -generate_tcp_stats(void *arg) -{ - struct uip_conn *conn; - struct httpd_state *s = (struct httpd_state *)arg; - - conn = &uip_conns[s->count]; - return snprintf((char *)uip_appdata, UIP_APPDATA_SIZE, - "\r\n", - htons(conn->lport), - htons(conn->ripaddr[0]) >> 8, - htons(conn->ripaddr[0]) & 0xff, - htons(conn->ripaddr[1]) >> 8, - htons(conn->ripaddr[1]) & 0xff, - htons(conn->rport), - states[conn->tcpstateflags & UIP_TS_MASK], - conn->nrtx, - conn->timer, - (uip_outstanding(conn))? '*':' ', - (uip_stopped(conn))? '!':' '); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(tcp_stats(struct httpd_state *s, char *ptr)) -{ - - PSOCK_BEGIN(&s->sout); - - for(s->count = 0; s->count < UIP_CONNS; ++s->count) { - if((uip_conns[s->count].tcpstateflags & UIP_TS_MASK) != UIP_CLOSED) { - PSOCK_GENERATOR_SEND(&s->sout, generate_tcp_stats, s); - } - } - - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -static unsigned short -generate_net_stats(void *arg) -{ - struct httpd_state *s = (struct httpd_state *)arg; - return snprintf((char *)uip_appdata, UIP_APPDATA_SIZE, - "%5u\n", ((uip_stats_t *)&uip_stat)[s->count]); -} - -static -PT_THREAD(net_stats(struct httpd_state *s, char *ptr)) -{ - PSOCK_BEGIN(&s->sout); - -#if UIP_STATISTICS - - for(s->count = 0; s->count < sizeof(uip_stat) / sizeof(uip_stats_t); - ++s->count) { - PSOCK_GENERATOR_SEND(&s->sout, generate_net_stats, s); - } - -#endif /* UIP_STATISTICS */ - - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ - -extern void vTaskList( char *pcWriteBuffer ); -static char cCountBuf[ 32 ]; -long lRefreshCount = 0; -static unsigned short -generate_rtos_stats(void *arg) -{ - lRefreshCount++; - sprintf( cCountBuf, "


Refresh count = %d", lRefreshCount ); - vTaskList( ( char * ) uip_appdata ); - strcat( uip_appdata, cCountBuf ); - - return strlen( uip_appdata ); -} -/*---------------------------------------------------------------------------*/ - - -static -PT_THREAD(rtos_stats(struct httpd_state *s, char *ptr)) -{ - PSOCK_BEGIN(&s->sout); - PSOCK_GENERATOR_SEND(&s->sout, generate_rtos_stats, NULL); - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ - -char *pcStatus[ 3 ]; -unsigned long ulString; -extern unsigned long uxParTextGetLED( unsigned long uxLED ); - -static unsigned short generate_io_state( void *arg ) -{ - for( ulString = 0; ulString < 4; ulString++ ) - { - if( uxParTextGetLED( ulString + 5 ) ) - { - pcStatus[ ulString ] = "checked"; - } - else - { - pcStatus[ ulString ] = ""; - } - } - - sprintf( uip_appdata, - "LED 2.5,"\ - "LED 2.6,"\ - "LED 2.7"\ - "

"\ - "", - pcStatus[ 0 ], - pcStatus[ 1 ], - pcStatus[ 2 ] ); - - return strlen( uip_appdata ); -} - -static PT_THREAD(led_io(struct httpd_state *s, char *ptr)) -{ - PSOCK_BEGIN(&s->sout); - PSOCK_GENERATOR_SEND(&s->sout, generate_io_state, NULL); - PSOCK_END(&s->sout); -} - -/** @} */ - - - - - - diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/httpd-cgi.h b/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/httpd-cgi.h deleted file mode 100644 index 7ae928321..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/httpd-cgi.h +++ /dev/null @@ -1,84 +0,0 @@ -/** - * \addtogroup httpd - * @{ - */ - -/** - * \file - * Web server script interface header file - * \author - * Adam Dunkels - * - */ - - - -/* - * Copyright (c) 2001, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: httpd-cgi.h,v 1.2 2006/06/11 21:46:38 adam Exp $ - * - */ - -#ifndef __HTTPD_CGI_H__ -#define __HTTPD_CGI_H__ - -#include "psock.h" -#include "httpd.h" - -typedef PT_THREAD((* httpd_cgifunction)(struct httpd_state *, char *)); - -httpd_cgifunction httpd_cgi(char *name); - -struct httpd_cgi_call { - const char *name; - const httpd_cgifunction function; -}; - -/** - * \brief HTTPD CGI function declaration - * \param name The C variable name of the function - * \param str The string name of the function, used in the script file - * \param function A pointer to the function that implements it - * - * This macro is used for declaring a HTTPD CGI - * function. This function is then added to the list of - * HTTPD CGI functions with the httpd_cgi_add() function. - * - * \hideinitializer - */ -#define HTTPD_CGI_CALL(name, str, function) \ -static PT_THREAD(function(struct httpd_state *, char *)); \ -static const struct httpd_cgi_call name = {str, function} - -void httpd_cgi_init(void); -#endif /* __HTTPD_CGI_H__ */ - -/** @} */ diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/httpd-fs.c b/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/httpd-fs.c deleted file mode 100644 index dc4aef011..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/httpd-fs.c +++ /dev/null @@ -1,132 +0,0 @@ -/* - * Copyright (c) 2001, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - * $Id: httpd-fs.c,v 1.1 2006/06/07 09:13:08 adam Exp $ - */ - -#include "httpd.h" -#include "httpd-fs.h" -#include "httpd-fsdata.h" - -#ifndef NULL -#define NULL 0 -#endif /* NULL */ - -#include "httpd-fsdata.c" - -#if HTTPD_FS_STATISTICS -static u16_t count[HTTPD_FS_NUMFILES]; -#endif /* HTTPD_FS_STATISTICS */ - -/*-----------------------------------------------------------------------------------*/ -static u8_t -httpd_fs_strcmp(const char *str1, const char *str2) -{ - u8_t i; - i = 0; - loop: - - if(str2[i] == 0 || - str1[i] == '\r' || - str1[i] == '\n') { - return 0; - } - - if(str1[i] != str2[i]) { - return 1; - } - - - ++i; - goto loop; -} -/*-----------------------------------------------------------------------------------*/ -int -httpd_fs_open(const char *name, struct httpd_fs_file *file) -{ -#if HTTPD_FS_STATISTICS - u16_t i = 0; -#endif /* HTTPD_FS_STATISTICS */ - struct httpd_fsdata_file_noconst *f; - - for(f = (struct httpd_fsdata_file_noconst *)HTTPD_FS_ROOT; - f != NULL; - f = (struct httpd_fsdata_file_noconst *)f->next) { - - if(httpd_fs_strcmp(name, f->name) == 0) { - file->data = f->data; - file->len = f->len; -#if HTTPD_FS_STATISTICS - ++count[i]; -#endif /* HTTPD_FS_STATISTICS */ - return 1; - } -#if HTTPD_FS_STATISTICS - ++i; -#endif /* HTTPD_FS_STATISTICS */ - - } - return 0; -} -/*-----------------------------------------------------------------------------------*/ -void -httpd_fs_init(void) -{ -#if HTTPD_FS_STATISTICS - u16_t i; - for(i = 0; i < HTTPD_FS_NUMFILES; i++) { - count[i] = 0; - } -#endif /* HTTPD_FS_STATISTICS */ -} -/*-----------------------------------------------------------------------------------*/ -#if HTTPD_FS_STATISTICS -u16_t httpd_fs_count -(char *name) -{ - struct httpd_fsdata_file_noconst *f; - u16_t i; - - i = 0; - for(f = (struct httpd_fsdata_file_noconst *)HTTPD_FS_ROOT; - f != NULL; - f = (struct httpd_fsdata_file_noconst *)f->next) { - - if(httpd_fs_strcmp(name, f->name) == 0) { - return count[i]; - } - ++i; - } - return 0; -} -#endif /* HTTPD_FS_STATISTICS */ -/*-----------------------------------------------------------------------------------*/ diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/httpd-fs.h b/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/httpd-fs.h deleted file mode 100644 index b594eea56..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/httpd-fs.h +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright (c) 2001, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - * $Id: httpd-fs.h,v 1.1 2006/06/07 09:13:08 adam Exp $ - */ -#ifndef __HTTPD_FS_H__ -#define __HTTPD_FS_H__ - -#define HTTPD_FS_STATISTICS 1 - -struct httpd_fs_file { - char *data; - int len; -}; - -/* file must be allocated by caller and will be filled in - by the function. */ -int httpd_fs_open(const char *name, struct httpd_fs_file *file); - -#ifdef HTTPD_FS_STATISTICS -#if HTTPD_FS_STATISTICS == 1 -u16_t httpd_fs_count(char *name); -#endif /* HTTPD_FS_STATISTICS */ -#endif /* HTTPD_FS_STATISTICS */ - -void httpd_fs_init(void); - -#endif /* __HTTPD_FS_H__ */ diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/httpd-fs/404.html b/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/httpd-fs/404.html deleted file mode 100644 index 43e7f4cad..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/httpd-fs/404.html +++ /dev/null @@ -1,8 +0,0 @@ - - -

-

404 - file not found

-

Go here instead.

-
- - \ No newline at end of file diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/httpd-fs/index.html b/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/httpd-fs/index.html deleted file mode 100644 index 1d3bbeee1..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/httpd-fs/index.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Loading index.shtml. Click here if not automatically redirected. - - - - - diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/httpd-fs/index.shtml b/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/httpd-fs/index.shtml deleted file mode 100644 index 4e7ffef6e..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/httpd-fs/index.shtml +++ /dev/null @@ -1,20 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -RTOS Stats | 65K JPG | Connections | IO -

-


-

-

Task statistics

-This page shows dynamically generated task state information. The page will refresh evey 2 seconds.

-

Task          State  Priority  Stack	#
************************************************
-%! rtos-stats -
-
- - - diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/httpd-fs/io.shtml b/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/httpd-fs/io.shtml deleted file mode 100644 index d87ec25f8..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/httpd-fs/io.shtml +++ /dev/null @@ -1,28 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -RTOS Stats | 65K JPG | Connections | IO -

-


-LED and LCD IO
- -

-This page demonstrates two way communication. By using the check boxes and text boxes this WEB interface can influence the program execution.

-Use the check boxes to select the LED's to turn on or off, enter text to display on the LCD, then click "Update IO". - - -

-
-%! led-io -

- - -

- - - - diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/httpd-fs/stats.shtml b/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/httpd-fs/stats.shtml deleted file mode 100644 index d762f40d8..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/httpd-fs/stats.shtml +++ /dev/null @@ -1,41 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -RTOS Stats | TCP Stats | Connections | FreeRTOS.org Homepage | IO -

-


-

-

Network statistics

-
LocalRemoteStateRetransmissionsTimerFlags
%d%u.%u.%u.%u:%u%s%u%u%c %c
-
-IP           Packets dropped
-             Packets received
-             Packets sent
-IP errors    IP version/header length
-             IP length, high byte
-             IP length, low byte
-             IP fragments
-             Header checksum
-             Wrong protocol
-ICMP	     Packets dropped
-             Packets received
-             Packets sent
-             Type errors
-TCP          Packets dropped
-             Packets received
-             Packets sent
-             Checksum errors
-             Data packets without ACKs
-             Resets
-             Retransmissions
-	     No connection avaliable
-	     Connection attempts to closed ports
-
%! net-stats
-
- - - diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/httpd-fs/tcp.shtml b/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/httpd-fs/tcp.shtml deleted file mode 100644 index 5d24c32c4..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/httpd-fs/tcp.shtml +++ /dev/null @@ -1,22 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -RTOS Stats | 65K JPG | Connections | IO -

-


-
-

Network connections

-This page displays dynamically generated status information on the TCP/IP connections. -

- - -%! tcp-connections - - - - - diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/httpd-fsdata.c b/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/httpd-fsdata.c deleted file mode 100644 index a061bb257..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/httpd-fsdata.c +++ /dev/null @@ -1,7113 +0,0 @@ -static const unsigned char data_404_html[] = { - /* /404.html */ - 0x2f, 0x34, 0x30, 0x34, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, 0x20, 0x20, 0x3c, - 0x62, 0x6f, 0x64, 0x79, 0x20, 0x62, 0x67, 0x63, 0x6f, 0x6c, - 0x6f, 0x72, 0x3d, 0x22, 0x77, 0x68, 0x69, 0x74, 0x65, 0x22, - 0x3e, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x63, 0x65, 0x6e, - 0x74, 0x65, 0x72, 0x3e, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x3c, 0x68, 0x31, 0x3e, 0x34, 0x30, 0x34, 0x20, 0x2d, - 0x20, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x6e, 0x6f, 0x74, 0x20, - 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x3c, 0x2f, 0x68, 0x31, 0x3e, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x68, 0x33, - 0x3e, 0x47, 0x6f, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, - 0x66, 0x3d, 0x22, 0x2f, 0x22, 0x3e, 0x68, 0x65, 0x72, 0x65, - 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x65, - 0x61, 0x64, 0x2e, 0x3c, 0x2f, 0x68, 0x33, 0x3e, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x3c, 0x2f, 0x63, 0x65, 0x6e, 0x74, 0x65, - 0x72, 0x3e, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x62, 0x6f, 0x64, - 0x79, 0x3e, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, -0}; - -static const unsigned char data_image_jpg[] = { - /* /image.jpg */ - 0x2f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2e, 0x6a, 0x70, 0x67, 0, - 0xff, 0xd8, 0xff, 0xe0, 00, 0x10, 0x4a, 0x46, 0x49, 0x46, - 00, 0x1, 0x1, 00, 00, 0x1, 00, 0x1, 00, 00, - 0xff, 0xdb, 00, 0x43, 00, 0x3, 0x2, 0x2, 0x3, 0x2, - 0x2, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x3, 0x4, 0x5, - 0x8, 0x5, 0x5, 0x4, 0x4, 0x5, 0xa, 0x7, 0x7, 0x6, - 0x8, 0xc, 0xa, 0xc, 0xc, 0xb, 0xa, 0xb, 0xb, 0xd, - 0xe, 0x12, 0x10, 0xd, 0xe, 0x11, 0xe, 0xb, 0xb, 0x10, - 0x16, 0x10, 0x11, 0x13, 0x14, 0x15, 0x15, 0x15, 0xc, 0xf, - 0x17, 0x18, 0x16, 0x14, 0x18, 0x12, 0x14, 0x15, 0x14, 0xff, - 0xdb, 00, 0x43, 0x1, 0x3, 0x4, 0x4, 0x5, 0x4, 0x5, - 0x9, 0x5, 0x5, 0x9, 0x14, 0xd, 0xb, 0xd, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0xff, 0xc0, - 00, 0x11, 0x8, 0x2, 0x69, 0x4, 0x39, 0x3, 0x1, 0x22, - 00, 0x2, 0x11, 0x1, 0x3, 0x11, 0x1, 0xff, 0xc4, 00, - 0x1f, 00, 00, 0x1, 0x5, 0x1, 0x1, 0x1, 0x1, 0x1, - 0x1, 00, 00, 00, 00, 00, 00, 00, 00, 0x1, - 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb, - 0xff, 0xc4, 00, 0xb5, 0x10, 00, 0x2, 0x1, 0x3, 0x3, - 0x2, 0x4, 0x3, 0x5, 0x5, 0x4, 0x4, 00, 00, 0x1, - 0x7d, 0x1, 0x2, 0x3, 00, 0x4, 0x11, 0x5, 0x12, 0x21, - 0x31, 0x41, 0x6, 0x13, 0x51, 0x61, 0x7, 0x22, 0x71, 0x14, - 0x32, 0x81, 0x91, 0xa1, 0x8, 0x23, 0x42, 0xb1, 0xc1, 0x15, - 0x52, 0xd1, 0xf0, 0x24, 0x33, 0x62, 0x72, 0x82, 0x9, 0xa, - 0x16, 0x17, 0x18, 0x19, 0x1a, 0x25, 0x26, 0x27, 0x28, 0x29, - 0x2a, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x43, 0x44, - 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x53, 0x54, 0x55, 0x56, - 0x57, 0x58, 0x59, 0x5a, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, - 0x69, 0x6a, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, - 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x92, 0x93, - 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0xa2, 0xa3, 0xa4, - 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xb2, 0xb3, 0xb4, 0xb5, - 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, - 0xc7, 0xc8, 0xc9, 0xca, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, - 0xd8, 0xd9, 0xda, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, - 0xe8, 0xe9, 0xea, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, - 0xf8, 0xf9, 0xfa, 0xff, 0xc4, 00, 0x1f, 0x1, 00, 0x3, - 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 00, - 00, 00, 00, 00, 00, 0x1, 0x2, 0x3, 0x4, 0x5, - 0x6, 0x7, 0x8, 0x9, 0xa, 0xb, 0xff, 0xc4, 00, 0xb5, - 0x11, 00, 0x2, 0x1, 0x2, 0x4, 0x4, 0x3, 0x4, 0x7, - 0x5, 0x4, 0x4, 00, 0x1, 0x2, 0x77, 00, 0x1, 0x2, - 0x3, 0x11, 0x4, 0x5, 0x21, 0x31, 0x6, 0x12, 0x41, 0x51, - 0x7, 0x61, 0x71, 0x13, 0x22, 0x32, 0x81, 0x8, 0x14, 0x42, - 0x91, 0xa1, 0xb1, 0xc1, 0x9, 0x23, 0x33, 0x52, 0xf0, 0x15, - 0x62, 0x72, 0xd1, 0xa, 0x16, 0x24, 0x34, 0xe1, 0x25, 0xf1, - 0x17, 0x18, 0x19, 0x1a, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x35, - 0x36, 0x37, 0x38, 0x39, 0x3a, 0x43, 0x44, 0x45, 0x46, 0x47, - 0x48, 0x49, 0x4a, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, - 0x5a, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x73, - 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x82, 0x83, 0x84, - 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x92, 0x93, 0x94, 0x95, - 0x96, 0x97, 0x98, 0x99, 0x9a, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, - 0xa7, 0xa8, 0xa9, 0xaa, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, - 0xb8, 0xb9, 0xba, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, - 0xc9, 0xca, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, - 0xda, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, - 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xff, - 0xda, 00, 0xc, 0x3, 0x1, 00, 0x2, 0x11, 0x3, 0x11, - 00, 0x3f, 00, 0xfd, 0x53, 0xa2, 0x8a, 0x28, 00, 0xa2, - 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x69, - 0x3c, 0xd0, 0x1, 0xba, 0x92, 0x8a, 0x28, 00, 0xe9, 0x4d, - 0x3c, 0xd0, 0x4e, 0x69, 0xa5, 0xb1, 0x40, 0x1, 0x61, 0x8a, - 0x6e, 0x69, 0x19, 0xb8, 0xa6, 0x16, 0xa0, 0x7, 0x31, 0xe7, - 0xe9, 0x4d, 0x2d, 0x4c, 0x67, 0xe2, 0xa3, 0x66, 0xa0, 0x7, - 0xb3, 0xd3, 0xc, 0x83, 0xd6, 0xa2, 0x79, 0x30, 0x9, 0x27, - 00, 0x56, 0x44, 0xba, 0xdb, 0xcb, 0x2b, 0x47, 0x65, 0x67, - 0x3d, 0xe1, 0x1d, 0x25, 0x45, 0xfd, 0xd1, 0xfa, 0x37, 0x43, - 0xe9, 0xc5, 0x67, 0x3a, 0x91, 0xa7, 0xf1, 0x18, 0xd4, 0xad, - 0xa, 0x4b, 0xde, 0x66, 0xcb, 0x3d, 0x56, 0xb9, 0xbe, 0x82, - 0xd0, 0x6e, 0x9a, 0x68, 0xe2, 0x7, 0xbc, 0x8c, 0x16, 0xb9, - 0x6b, 0x8d, 0x27, 0xc7, 0x7a, 0x8b, 0x3a, 0x8b, 0x8d, 0x3b, - 0x4f, 0x85, 0xb8, 0x6, 0x25, 0x6f, 0x33, 0x1e, 0xe4, 0xe7, - 0x9a, 0xe7, 0xef, 0x7e, 0x4, 0x6a, 0x1a, 0xdb, 0x97, 0xd5, - 0x3c, 0x47, 0xa8, 0xdc, 0x67, 0x1f, 0x27, 0xda, 0x9b, 0x60, - 0xfa, 0xc, 0x57, 0x8d, 0x5f, 0x1f, 0x89, 0x4a, 0xd8, 0x6c, - 0x3c, 0xa4, 0xfc, 0xda, 0x8a, 0xff, 00, 0x3f, 0xc0, 0xf0, - 0x71, 0x39, 0x9e, 0x31, 0x2b, 0x60, 0xf0, 0x92, 0x9b, 0xfe, - 0xf3, 0x51, 0x5f, 0xab, 0xfc, 0xe, 0xca, 0xf7, 0xc7, 0x1a, - 0xd, 0x8e, 0x7c, 0xfd, 0x62, 0xc6, 0x3c, 0xc, 0x9c, 0xce, - 0xbf, 0xe3, 0x58, 0xd2, 0xfc, 0x5e, 0xf0, 0x7c, 0x6d, 0x8f, - 0xf8, 0x48, 0x2c, 0x5b, 0xfd, 0xd9, 0x97, 0x8f, 0xd6, 0xb9, - 0xa1, 0xfb, 0x2b, 0xe8, 0x44, 0x7c, 0xf7, 0x37, 0x4, 0xf5, - 0xe6, 0x41, 0xfe, 0x15, 0x5e, 0x4f, 0xd9, 0x43, 0x44, 0x60, - 0x76, 0xdd, 0x4f, 0xf8, 0xb8, 0xff, 00, 0xe2, 0x6b, 0xc6, - 0x9e, 0x33, 0x88, 0x37, 0x86, 0x1a, 0xb, 0xfe, 0xde, 0x6f, - 0xf4, 0x47, 0xcf, 0xd4, 0xc7, 0xf1, 0x4b, 0xd6, 0x18, 0x3a, - 0x6b, 0xfe, 0xdf, 0x6f, 0xf4, 0x47, 0x55, 0x1f, 0xc6, 0xf, - 0x7, 0xbb, 0x63, 0xfb, 0x7e, 0xc1, 0x7d, 0xda, 0x75, 0xff, - 00, 0x1a, 0xb0, 0xbf, 0x14, 0xbc, 0x28, 0xdf, 0x77, 0xc4, - 0x3a, 0x71, 0x3f, 0xf5, 0xf0, 0xb5, 0xc0, 0xcb, 0xfb, 0x25, - 0xe9, 0xe7, 0xee, 0x5e, 0x4a, 0x3e, 0xb2, 0xf, 0xfe, 0x26, - 0xa9, 0x4b, 0xfb, 0x24, 0x45, 0xfc, 0x17, 0xa7, 0xf1, 0x71, - 0xff, 00, 0xc4, 0xd7, 0x33, 0xcc, 0x38, 0x8e, 0x3b, 0xe1, - 0x22, 0xff, 00, 0xed, 0xe3, 0x93, 0xfb, 0x53, 0x8b, 0x21, - 0xbe, 0xa, 0xf, 0xd2, 0x4c, 0xf5, 0x1, 0xf1, 0xf, 0xc3, - 0x92, 0xfd, 0xdd, 0x72, 0xc0, 0xfd, 0x2e, 0x17, 0xfc, 0x6a, - 0x68, 0xfc, 0x69, 0xa2, 0x49, 0xf7, 0x75, 0x7b, 0x26, 0xff, - 00, 0xb7, 0x85, 0xff, 00, 0x1a, 0xf2, 0x9, 0x7f, 0x64, - 0x89, 0xf9, 0xf2, 0xef, 0x87, 0xe3, 0x27, 0xff, 00, 0x63, - 0x54, 0xa4, 0xfd, 0x92, 0x35, 0x31, 0xfe, 0xae, 0xf6, 0x2f, - 0xc6, 0x4f, 0xfe, 0xc6, 0xa7, 0xfb, 0x5f, 0x88, 0x23, 0xbe, - 0x5, 0x3f, 0xfb, 0x7b, 0xfe, 0x1, 0x1f, 0xdb, 0xbc, 0x51, - 0xd, 0xf2, 0xd4, 0xfd, 0x25, 0xff, 00, 00, 0xf7, 0x45, - 0xf1, 0x46, 0x94, 0xdd, 0x35, 0x2b, 0x33, 0xff, 00, 0x6d, - 0xd7, 0xfc, 0x69, 0xdf, 0xf0, 0x90, 0x69, 0xc4, 0xf1, 0x7f, - 0x6a, 0x7f, 0xed, 0xb2, 0xff, 00, 0x8d, 0x7c, 0xfd, 0x27, - 0xec, 0x9b, 0xae, 0xa3, 0x65, 0x2e, 0xa0, 0xc8, 0x3d, 0x7c, - 0xc3, 0xff, 00, 0xc4, 0xd4, 0x2d, 0xfb, 0x2f, 0x78, 0xb2, - 0xc, 0x98, 0xef, 0x50, 0x7f, 0xbb, 0x33, 0xff, 00, 0x85, - 0x4f, 0xf6, 0xf6, 0x75, 0x1f, 0x8b, 0x2f, 0x7f, 0xf8, 0x17, - 0xfc, 0x2, 0x7f, 0xd6, 0x6e, 0x21, 0x8f, 0xc5, 0x95, 0x3f, - 0x94, 0xbf, 0xe0, 0x1f, 0x45, 0xae, 0xaf, 0x66, 0xe3, 0xe5, - 0xba, 0x81, 0xbe, 0x92, 0x3, 0xfd, 0x6a, 0x44, 0xbe, 0x85, - 0xfe, 0xec, 0xa8, 0xdf, 0x46, 0x15, 0xf3, 0x63, 0x7c, 0x1, - 0xf1, 0xf5, 0xa8, 0xc4, 0x5a, 0x9c, 0xe0, 0x7a, 0x25, 0xcc, - 0xa3, 0xfa, 0x53, 0x4f, 0xc2, 0xf, 0x89, 0x96, 0xdf, 0x73, - 0x56, 0xd4, 0x47, 0xfb, 0x97, 0x93, 0xa, 0xa5, 0xc4, 0x98, - 0xf8, 0xfc, 0x78, 0x9, 0xfc, 0x8a, 0xff, 00, 0x5b, 0xb3, - 0x38, 0xff, 00, 0x13, 0x2b, 0x9f, 0xc9, 0xdf, 0xf4, 0x3e, - 0x9a, 0x12, 0x83, 0x82, 0xf, 0x14, 0xbe, 0x76, 0x3b, 0xd7, - 0xcc, 0x3f, 0xf0, 0x82, 0x7c, 0x54, 0xb5, 0x1b, 0x46, 0xb1, - 0xab, 0x37, 0xd6, 0xee, 0x73, 0x4a, 0x74, 0xaf, 0x8a, 0xb6, - 0x60, 0xe6, 0xff, 00, 0x51, 0x7c, 0xfa, 0xcb, 0x31, 0xaa, - 0xff, 00, 0x5a, 0xe7, 0x1f, 0x8f, 0x5, 0x51, 0x16, 0xb8, - 0xda, 0xa4, 0x7f, 0x89, 0x97, 0xd5, 0x5f, 0x23, 0xe9, 0xef, - 0x3b, 0xde, 0x81, 0x2e, 0x4d, 0x7c, 0xc4, 0xba, 0xa7, 0xc5, - 0x3b, 0x30, 0x3e, 0x7b, 0xa9, 0x31, 0xfd, 0xf4, 0x95, 0xa9, - 0xe3, 0xc7, 0xdf, 0x14, 0x2d, 0x7a, 0xc0, 0xcd, 0x83, 0xd1, - 0xad, 0x1c, 0xff, 00, 0x4a, 0xa5, 0xc5, 0xf8, 0x75, 0xf1, - 0xd0, 0xa8, 0xbf, 0xed, 0xd2, 0xd7, 0x1d, 0xe1, 0x57, 0xf1, - 0x30, 0xd5, 0x63, 0xff, 00, 0x6e, 0xff, 00, 0xc1, 0x3e, - 0x9b, 0xf3, 0x3d, 0xe9, 0xc2, 0x5e, 0x3a, 0xd7, 0xcc, 0xf, - 0xf1, 0x7b, 0xe2, 0x64, 0x44, 0x6e, 0xb1, 0x8b, 0x8f, 0xfa, - 0x71, 0x7a, 0x61, 0xf8, 0xe3, 0xf1, 0x12, 0x13, 0xf3, 0xe9, - 0xb0, 0x37, 0xd6, 0xcd, 0xff, 00, 0xc6, 0x9f, 0xfa, 0xe5, - 0x97, 0x2f, 0x8a, 0x13, 0x5f, 0xf6, 0xef, 0xfc, 0x11, 0xff, - 00, 0xc4, 0x40, 0xca, 0x96, 0xf0, 0xa8, 0xbf, 0xed, 0xcf, - 0xf8, 0x27, 0xd4, 0x7e, 0x77, 0xbd, 0x1e, 0x6e, 0x7b, 0xd7, - 0xcb, 0x87, 0xf6, 0x83, 0xf1, 0xdc, 0x64, 0xee, 0xd2, 0xac, - 0xbf, 0x1b, 0x59, 0x7, 0xfe, 0xcd, 0x49, 0xff, 00, 0xd, - 0x25, 0xe3, 0x44, 0xfb, 0xda, 0x56, 0x9c, 0x47, 0xbc, 0x12, - 0xff, 00, 0xf1, 0x55, 0x4b, 0x8d, 0x32, 0xae, 0xae, 0x4b, - 0xfe, 0xdd, 0x63, 0x5e, 0x20, 0xe4, 0x97, 0xd5, 0xcd, 0x7f, - 0xdb, 0xac, 0xfa, 0x99, 0x65, 0xf7, 0xa7, 0xf9, 0x9e, 0xe2, - 0xbe, 0x5f, 0x87, 0xf6, 0x9c, 0xf1, 0xa, 0xf1, 0x36, 0x95, - 0x69, 0xff, 00, 00, 0x89, 0xff, 00, 0xf8, 0xba, 0xbf, - 0x6f, 0xfb, 0x51, 0xdd, 0xab, 0x9f, 0xb4, 0x69, 0x23, 0x18, - 0xff, 00, 0x96, 0x71, 0x9c, 0xfe, 0xaf, 0x5a, 0xc7, 0x8c, - 0x32, 0x89, 0x7f, 0xcb, 0xc6, 0xbe, 0x4c, 0xe8, 0x8f, 0x1e, - 0x64, 0x52, 0xde, 0xab, 0x5e, 0xa9, 0x9f, 0x48, 0xf9, 0x98, - 0xf4, 0xa5, 0x12, 0xe4, 0xd7, 0xcf, 0x91, 0x7e, 0xd4, 0xd6, - 0x63, 0x1e, 0x66, 0x91, 0x74, 0x7d, 0x76, 0xa2, 0xff, 00, - 0xf1, 0x75, 0x79, 0x3f, 0x6a, 0xad, 0xb, 0x1f, 0x36, 0x91, - 0xa8, 0xaf, 0xe0, 0x9f, 0xfc, 0x55, 0x75, 0x47, 0x8a, 0x72, - 0x89, 0x7f, 0xcb, 0xf4, 0xbe, 0xf3, 0xb2, 0x3c, 0x69, 0x90, - 0xcf, 0xfe, 0x62, 0x52, 0xfb, 0xcf, 0x78, 0xf3, 0x7, 0xf9, - 0x34, 0x79, 0x9e, 0xff, 00, 0xad, 0x78, 0x72, 0x7e, 0xd4, - 0xbe, 0x1c, 0x3f, 0x7b, 0x4f, 0xd4, 0x53, 0xfe, 00, 0xa7, - 0xff, 00, 0x66, 0xab, 0x9, 0xfb, 0x4f, 0xf8, 0x51, 0x86, - 0x5a, 0x1b, 0xf4, 0xfa, 0xc2, 0x3f, 0xc6, 0xb6, 0x5c, 0x49, - 0x94, 0x3f, 0xf9, 0x88, 0x8f, 0xde, 0x74, 0x2e, 0x2e, 0xc8, - 0xa5, 0xff, 00, 0x31, 0x70, 0xfb, 0xcf, 0x69, 0xf3, 0x7e, - 0xbf, 0x9d, 0x1e, 0x65, 0x78, 0xe2, 0xfe, 0xd3, 0x7e, 0xe, - 0x3f, 0x79, 0xef, 0x57, 0xeb, 0x6e, 0x7f, 0xc6, 0xad, 0xc5, - 0xfb, 0x48, 0xf8, 0x32, 0x5c, 0x7f, 0xa5, 0xdc, 0x2f, 0xfb, - 0xf0, 0xe3, 0xfa, 0xd6, 0xd1, 0xcf, 0xf2, 0xa9, 0x6d, 0x89, - 0x87, 0xfe, 0x4, 0x8d, 0xe3, 0xc4, 0xf9, 0x24, 0xb6, 0xc5, - 0xc3, 0xff, 00, 0x2, 0x47, 0xac, 0xf9, 0x9e, 0xf4, 0xbe, - 0x65, 0x79, 0x8c, 0x5f, 0x1f, 0xfc, 0x1b, 0x2e, 0xdf, 0xf8, - 0x99, 0x85, 0xcf, 0xf7, 0xb0, 0x31, 0xfa, 0xd5, 0xf8, 0x7e, - 0x34, 0x78, 0x42, 0x6f, 0xf9, 0x8e, 0x59, 0xa7, 0x19, 0xf9, - 0xe7, 0x41, 0xff, 00, 0xb3, 0x57, 0x44, 0x73, 0x7c, 0xbe, - 0x7f, 0xd, 0x78, 0xbf, 0xfb, 0x79, 0x1d, 0x70, 0xcf, 0x72, - 0xba, 0x9a, 0x47, 0x13, 0x7, 0xff, 00, 0x6f, 0x23, 0xd0, - 0x77, 0xe0, 0x50, 0x1e, 0xb8, 0xc8, 0x3e, 0x2a, 0xf8, 0x4a, - 0x60, 0xf, 0xfc, 0x24, 0xba, 0x52, 0x7b, 0x3d, 0xec, 0x40, - 0xff, 00, 0xe8, 0x55, 0x6d, 0x3e, 0x21, 0xf8, 0x6a, 0x4f, - 0xb9, 0xe2, 0x1d, 0x29, 0x8f, 0xb5, 0xec, 0x7f, 0xfc, 0x55, - 0x75, 0x47, 0x1b, 0x85, 0x96, 0xaa, 0xac, 0x7e, 0xf4, 0x76, - 0x47, 0x31, 0xc1, 0xcf, 0x58, 0xd6, 0x8f, 0xfe, 0x4, 0xbf, - 0xcc, 0xea, 0x77, 0xfb, 0x8a, 0x5f, 0x37, 0xde, 0xb9, 0xf8, - 0xbc, 0x5d, 0xa3, 0x4e, 0x71, 0x1e, 0xaf, 0x63, 0x21, 0xff, - 00, 0x66, 0xe5, 0xf, 0xf5, 0xab, 0x91, 0x6a, 0xd6, 0x93, - 0xe3, 0xcb, 0xbb, 0x81, 0xf3, 0xfd, 0xd9, 0x1, 0xad, 0xe3, - 0x5a, 0x94, 0xbe, 0x19, 0x27, 0xf3, 0x47, 0x4c, 0x6b, 0xd2, - 0x9f, 0xc3, 0x34, 0xfe, 0x68, 0xd4, 0xf3, 0x7d, 0xe8, 0xf3, - 0x33, 0x55, 0x16, 0x65, 0x70, 0xa, 0xb0, 0x61, 0xea, 0x29, - 0xc2, 0x60, 0x3b, 0xd6, 0xd7, 0x46, 0xd7, 0x45, 0xc5, 0x7c, - 0xa, 0x5f, 0x32, 0xa9, 0x89, 0x81, 0xe8, 0x69, 0x44, 0x99, - 0xef, 0x4a, 0xe8, 0x2e, 0x8b, 0x7e, 0x65, 0x1e, 0x66, 0x6a, - 0xb2, 0xc8, 0x3d, 0x73, 0x4e, 0xf3, 0x68, 0xb8, 0xc9, 0xf7, - 0x51, 0xba, 0xa1, 0xf3, 0x30, 0x29, 0x77, 0xd3, 0x2, 0x75, - 0x6a, 0x5d, 0xd5, 0x58, 0x3e, 0x29, 0x7c, 0xd3, 0x40, 0x16, - 0x37, 0x52, 0xef, 0xf7, 0xaa, 0xde, 0x65, 0x28, 0x93, 0x34, - 0x1, 0x63, 0x7f, 0xbd, 0x1b, 0xea, 0x10, 0xe2, 0x97, 0x78, - 0xf5, 0xa0, 0x9, 0xb3, 0xef, 0x4b, 0xba, 0xa0, 0xdf, 0xef, - 0x49, 0xbc, 0xd0, 0x4, 0xfb, 0xe9, 0x77, 0x54, 0x1b, 0xa9, - 0x43, 0xe4, 0xd0, 0x4, 0xf9, 0xa3, 0x35, 0x16, 0xfa, 0x5d, - 0xf4, 0x1, 0x26, 0x68, 0xcd, 0x47, 0xba, 0x8d, 0xd4, 0x1, - 0x28, 0xa7, 0x6e, 0xa8, 0x37, 0xfd, 0x28, 0xde, 0x7d, 0x68, - 0x2, 0x7d, 0xdf, 0x5a, 0x37, 0x7d, 0x6a, 0x2d, 0xde, 0xf4, - 0x6e, 0xf7, 0xa0, 0x9, 0x77, 0x7b, 0xd2, 0x86, 0xa8, 0x77, - 0x7b, 0xd2, 0x86, 0xa0, 0x9, 0x77, 0x51, 0xba, 0xa3, 0xdd, - 0xf5, 0xa3, 0x7d, 00, 0x49, 0xba, 0x8d, 0xd4, 0xcd, 0xd4, - 0x6f, 0xa0, 0x7, 0xee, 0xa3, 0x75, 0x33, 0x77, 0xbd, 0x1b, - 0xa8, 0x2, 0x4d, 0xd4, 0x64, 0x53, 0x37, 0x51, 0xba, 0x80, - 0x1f, 0x91, 0x46, 0x45, 0x33, 0x75, 0x1b, 0xa8, 0x1, 0xf9, - 0x14, 0xb9, 0x15, 0x1e, 0xea, 0x51, 0xcd, 00, 0x3e, 0x8a, - 0x4c, 0xd1, 0xba, 0x80, 0x16, 0x8a, 0x4d, 0xd4, 0x6e, 0xa0, - 0x7, 0x64, 0xd1, 0xf8, 0xd2, 0x66, 0x8c, 0xd0, 0x2, 0xfe, - 0x34, 0x67, 0xde, 0x93, 0x34, 0x66, 0x80, 0x17, 0x75, 0x1b, - 0xa9, 0x28, 0xa0, 0x5, 0xdd, 0x46, 0xea, 0x4a, 0x28, 0x1, - 0x77, 0x51, 0xba, 0x92, 0x8a, 00, 0x5d, 0xd4, 0xa3, 0x9a, - 0x6d, 0x28, 0x38, 0xa0, 0x7, 0x51, 0x4d, 0xc9, 0xa3, 0x75, - 00, 0x3a, 0x8a, 0x6e, 0xea, 0x37, 0x50, 0x3, 0xa8, 0xa6, - 0xee, 0xa5, 0xdd, 0x40, 0xb, 0x45, 0x26, 0xea, 0x37, 0x50, - 0x2, 0xd1, 0x49, 0xba, 0x8c, 0xd0, 0x2, 0xd1, 0x45, 0x14, - 00, 0x51, 0x45, 0x14, 00, 0x51, 0x45, 0x14, 00, 0x51, - 0x45, 0x14, 00, 0x51, 0x45, 0x14, 00, 0x51, 0x45, 0x14, - 00, 0x51, 0x45, 0x14, 00, 0x51, 0x45, 0x14, 00, 0x51, - 0x45, 0x14, 00, 0x51, 0x45, 0x14, 00, 0x51, 0x45, 0x14, - 00, 0x51, 0x45, 0x26, 0x68, 0x1, 0xa7, 0xad, 0x14, 0x51, - 0x9a, 00, 0x29, 0xa4, 0xd0, 0x69, 0xac, 0x68, 00, 0x27, - 0x6, 0xa3, 0x66, 0xa1, 0x8f, 0xbd, 0x46, 0x4f, 0x34, 00, - 0x33, 0x1a, 0x8c, 0xb5, 0x23, 0xb7, 0x53, 0x50, 0xbb, 0xd0, - 0x3, 0xd9, 0xe9, 0x23, 0x57, 0x9d, 0xb0, 0xa3, 0x3e, 0xf4, - 0xfb, 0x6b, 0x66, 0xb8, 0x39, 0x3c, 0x27, 0xad, 0x69, 0x47, - 0x1a, 0xc6, 0xb8, 0x51, 0x81, 0x40, 0x14, 0x13, 0x4a, 0x53, - 0x22, 0xbc, 0xad, 0xbf, 0x6f, 0x44, 0xfe, 0x1f, 0xc4, 0x77, - 0xab, 0xa9, 0x12, 0x46, 0xa1, 0x55, 0x2, 0x8f, 0x40, 0x30, - 0x2a, 0x5a, 0x2a, 0x54, 0x56, 0xe4, 0xf2, 0xa4, 0xee, 0x27, - 0x4a, 0x4e, 0xbd, 0x29, 0xd4, 0x53, 0x28, 0x69, 0x14, 0x7e, - 0x54, 0xea, 0x29, 0x80, 0xde, 0x94, 0x62, 0x9d, 0x45, 00, - 0x37, 0x22, 0x94, 0xd2, 0xd1, 0x48, 0x6, 0xfe, 0x34, 0x62, - 0x9d, 0x45, 0x30, 0x1b, 0x8a, 0x38, 0xa7, 0x51, 0x40, 0xc, - 0xda, 0x3f, 0xba, 0x29, 0xa6, 0x24, 0x3f, 0xc0, 0xa7, 0xf0, - 0xa9, 0x68, 0xa5, 0x61, 0x59, 0x10, 0x9b, 0x68, 0x8f, 0x58, - 0x90, 0xfd, 0x54, 0x53, 0x5a, 0xc2, 0xdd, 0xbe, 0xf4, 0x11, - 0x1f, 0xf8, 00, 0xab, 0x14, 0x52, 0xe5, 0x5d, 0x89, 0xe4, - 0x8b, 0xdd, 0x14, 0xbf, 0xb2, 0x6c, 0x8e, 0x73, 0x69, 0x9, - 0xff, 00, 0x80, 0xa, 0x8d, 0xb4, 0x1d, 0x39, 0xfa, 0xd8, - 0xdb, 0x9f, 0xfb, 0x66, 0x3f, 0xc2, 0xb4, 0x68, 0xa9, 0x74, - 0xe0, 0xf7, 0x48, 0x87, 0x46, 0x9b, 0xde, 0x2b, 0xee, 0x32, - 0x5b, 0xc3, 0x1a, 0x4b, 0xfd, 0xed, 0x3a, 0xd4, 0xfd, 0x62, - 0x5f, 0xf0, 0xa8, 0x5f, 0xc1, 0x7a, 0x1b, 0xfd, 0xed, 0x2e, - 0xd4, 0xff, 00, 0xdb, 0x15, 0xff, 00, 0xa, 0xdc, 0xa2, - 0xb3, 0x78, 0x7a, 0x2f, 0x78, 0x2f, 0xb9, 0x19, 0xbc, 0x2d, - 0x7, 0xbc, 0x17, 0xdc, 0x8e, 0x6d, 0xfe, 0x1e, 0xf8, 0x76, - 0x4e, 0xba, 0x55, 0xaf, 0xfd, 0xf9, 0x5f, 0xf0, 0xaa, 0x92, - 0xfc, 0x2a, 0xf0, 0xd4, 0xdf, 0x7b, 0x4a, 0xb6, 0xff, 00, - 0xbf, 0x2b, 0xfe, 0x15, 0xd7, 0xd1, 0x58, 0xbc, 0xe, 0x16, - 0x5b, 0xd3, 0x5f, 0x72, 0x30, 0x96, 0x5d, 0x83, 0x9f, 0xc5, - 0x4a, 0x3f, 0x72, 0x38, 0x49, 0x3e, 0xc, 0x78, 0x5a, 0x5e, - 0xba, 0x6c, 0x1f, 0x84, 0x49, 0xfe, 0x15, 0x4e, 0x6f, 0x81, - 0x3e, 0x16, 0x97, 0xfe, 0x5c, 0x22, 0x1f, 0xf6, 0xc9, 0x3f, - 0xc2, 0xbd, 0x1e, 0x8a, 0xe7, 0x96, 0x55, 0x81, 0x96, 0xf4, - 0x63, 0xf7, 0x1c, 0xb2, 0xc9, 0x32, 0xd9, 0xfc, 0x54, 0x23, - 0xf7, 0x23, 0xca, 0xe6, 0xfd, 0x9e, 0x7c, 0x31, 0x20, 0xe2, - 0xd9, 0x17, 0xfe, 0xd9, 0x27, 0xf8, 0x55, 0x19, 0x7f, 0x66, - 0xaf, 0xe, 0x49, 0x9c, 0x28, 0x5f, 0xa4, 0x6b, 0xfe, 0x15, - 0xec, 0x54, 0x57, 0x3c, 0xb2, 0x2c, 0xb6, 0x5b, 0xd0, 0x8f, - 0xdc, 0x72, 0x4b, 0x86, 0xb2, 0x89, 0xef, 0x87, 0x8f, 0xdc, - 0x78, 0x84, 0xdf, 0xb2, 0xee, 0x87, 0x21, 0xca, 0xcd, 0xb7, - 0xfe, 00, 0x2a, 0x84, 0xdf, 0xb2, 0x8e, 0x97, 0x21, 0x3b, - 0x2f, 0xa, 0xfd, 0x54, 0x57, 0xbf, 0x51, 0x5c, 0xb2, 0xe1, - 0x9c, 0xa6, 0x5b, 0xd0, 0x47, 0x1c, 0xf8, 0x43, 0x24, 0x9e, - 0xf8, 0x74, 0x7c, 0xe9, 0x37, 0xec, 0x95, 0x6c, 0xd9, 0xd9, - 0xa8, 0x1, 0xff, 00, 00, 0xaa, 0x52, 0x7e, 0xc8, 0xa7, - 0xf8, 0x35, 0x38, 0x87, 0xd5, 0xd, 0x7d, 0x31, 0x45, 0x73, - 0xcb, 0x84, 0xb2, 0x89, 0x7f, 0xcb, 0xaf, 0xc5, 0x9c, 0x92, - 0xe0, 0x6c, 0x86, 0x5f, 0xf2, 0xe3, 0xf1, 0x67, 0xcb, 0x92, - 0xfe, 0xc8, 0xb7, 0x63, 0xee, 0xea, 0x90, 0x1f, 0xac, 0x66, - 0xab, 0x3f, 0xec, 0x99, 0xac, 0x47, 0xf7, 0x35, 0x58, 0xf, - 0xfc, 0x5, 0xab, 0xea, 0xca, 0x2b, 0x9d, 0xf0, 0x6e, 0x50, - 0xf6, 0xa6, 0xd7, 0xcd, 0x9c, 0xcf, 0x80, 0x32, 0x27, 0xb5, - 0x26, 0xbf, 0xed, 0xe6, 0x7c, 0x96, 0xff, 00, 0xb2, 0xf7, - 0x8a, 0x61, 0xff, 00, 0x53, 0xaa, 0xa0, 0xfa, 0x33, 0x8a, - 0x81, 0xff, 00, 0x67, 0x6f, 0x1c, 0x41, 0xfe, 0xaf, 0x53, - 0x6e, 0x3d, 0x26, 0x90, 0x57, 0xd7, 0x74, 0x56, 0x6f, 0x83, - 0x32, 0xdf, 0xb2, 0xe4, 0xbf, 0xed, 0xe6, 0x62, 0xfc, 0x3f, - 0xca, 0x3e, 0xcb, 0x9a, 0xff, 00, 0xb7, 0x99, 0xf1, 0xe4, - 0x9f, 0x3, 0x3e, 0x20, 0xc3, 0xf7, 0x75, 0x29, 0xb8, 0xf4, - 0xb9, 0x90, 0x55, 0x67, 0xf8, 0x47, 0xf1, 0x1e, 0xd7, 0x38, - 0xd4, 0xee, 0x87, 0xd2, 0xea, 0x4a, 0xfb, 0x2f, 0x14, 0x60, - 0x7a, 0x56, 0x72, 0xe0, 0xcc, 0x27, 0xd9, 0xab, 0x35, 0xff, - 00, 0x6f, 0x19, 0x3f, 0xf, 0xf0, 0x3f, 0x66, 0xbd, 0x45, - 0xff, 00, 0x6f, 0x1f, 0x16, 0x3f, 0xc3, 0xff, 00, 0x89, - 0x76, 0xdf, 0x77, 0x55, 0xbf, 0x1f, 0xee, 0xde, 0x49, 0x55, - 0x9f, 0xc3, 0xff, 00, 0x13, 0x20, 0xff, 00, 0x98, 0xbe, - 0xa9, 0xf5, 0x5b, 0xd7, 0xff, 00, 0x1a, 0xfb, 0x73, 0x68, - 0x3d, 0x85, 0x35, 0xa3, 0x53, 0xfc, 0x23, 0xf2, 0xac, 0x9f, - 0x6, 0xc1, 0x7c, 0x18, 0xa9, 0xaf, 0x99, 0x8b, 0xe0, 0xa, - 0x6b, 0xe0, 0xc6, 0x55, 0x5f, 0x33, 0xe2, 0x1d, 0xff, 00, - 0x12, 0xec, 0x4f, 0x3a, 0xae, 0xa6, 0xfc, 0xe7, 0xe7, 0xbb, - 0x73, 0xff, 00, 0xb3, 0x54, 0xa9, 0xe2, 0xff, 00, 0x88, - 0xf6, 0x58, 0xcd, 0xe5, 0xcb, 0x91, 0xff, 00, 0x3d, 0x27, - 0x73, 0xff, 00, 0xb3, 0xd7, 0xda, 0xe6, 0x4, 0x3d, 0x63, - 0x5f, 0xca, 0x98, 0x6c, 0xe0, 0x6e, 0xb1, 0x21, 0xff, 00, - 0x80, 0xd4, 0xff, 00, 0xaa, 0x55, 0xe3, 0xf0, 0x63, 0x66, - 0xbf, 0xaf, 0x52, 0x3f, 0xd4, 0x7c, 0x4c, 0x7f, 0x87, 0x98, - 0xd4, 0x5f, 0xd7, 0xa9, 0xf1, 0x94, 0x7f, 0x16, 0xbe, 0x21, - 0xd9, 0x72, 0xd2, 0x29, 0xc7, 0xf7, 0xcb, 0x9f, 0xfd, 0x9e, - 0xac, 0x27, 0xc7, 0xff, 00, 0x1f, 0xdb, 0xff, 00, 0xd, - 0x8b, 0x60, 0x63, 0xe7, 0x89, 0x8f, 0xfe, 0xcd, 0x5f, 0x60, - 0xb6, 0x97, 0x6a, 0xdf, 0x7a, 0xde, 0x23, 0xf5, 0x51, 0x51, - 0xb6, 0x87, 0xa7, 0xb7, 0xde, 0xb3, 0x84, 0xff, 00, 0xc0, - 0x5, 0x35, 0xc3, 0x79, 0x9c, 0x3e, 0xc, 0x7c, 0xbe, 0xe2, - 0x97, 0x8, 0xe7, 0x14, 0xff, 00, 0x87, 0x99, 0xcf, 0xee, - 0xff, 00, 0x82, 0x7c, 0x93, 0x1f, 0xed, 0x2d, 0xe3, 0x38, - 0x98, 0x79, 0xb6, 0xb6, 0xd, 0xeb, 0x88, 0xc8, 0xcf, 0xeb, - 0x56, 0x97, 0xf6, 0xa4, 0xf1, 0xc, 0x6d, 0xfb, 0xcd, 0x32, - 0xd5, 0x87, 0xa0, 0x62, 0x2b, 0xea, 0x57, 0xf0, 0xb6, 0x92, - 0xff, 00, 0x7a, 0xc2, 0x3, 0xff, 00, 00, 0x15, 0x5e, - 0x4f, 0x3, 0xe8, 0x92, 0xfd, 0xed, 0x3a, 0x3, 0xff, 00, - 00, 0x15, 0x7f, 0xd8, 0x99, 0xe4, 0x7e, 0x1c, 0x7d, 0xfe, - 0x46, 0x9f, 0xea, 0xef, 0x11, 0x43, 0xe1, 0xcc, 0xdb, 0xf5, - 0x89, 0xf3, 0x74, 0x5f, 0xb5, 0x7e, 0xa2, 0xbf, 0xeb, 0x34, - 0x18, 0x9f, 0xe9, 0x71, 0x8f, 0xfd, 0x96, 0xae, 0x47, 0xfb, - 0x5b, 0xba, 0xf1, 0x27, 0x86, 0x49, 0xf7, 0x5b, 0xcf, 0xfe, - 0xc2, 0xbd, 0xea, 0x5f, 0x86, 0xbe, 0x1d, 0x94, 0x9d, 0xda, - 0x64, 0x1f, 0xf7, 0xcd, 0x54, 0x97, 0xe1, 0x27, 0x86, 0x65, - 0x1c, 0xe9, 0xb0, 0xfe, 0x55, 0x4b, 0x2e, 0xe2, 0x28, 0x7c, - 0x38, 0xb4, 0xfd, 0x62, 0x57, 0xf6, 0x57, 0x15, 0xd3, 0xf8, - 0x71, 0xd1, 0x7e, 0xb1, 0x3c, 0x62, 0x2f, 0xda, 0xe6, 0xdb, - 0xfe, 0x5a, 0x78, 0x6e, 0x75, 0xff, 00, 0x76, 0xe4, 0x1f, - 0xfd, 0x96, 0xac, 0xa7, 0xed, 0x71, 0xa4, 0xf1, 0xe6, 0x68, - 0x37, 0xcb, 0xfe, 0xec, 0x88, 0x7f, 0xa8, 0xaf, 0x52, 0x97, - 0xe0, 0x97, 0x86, 0x25, 0x7, 0xfe, 0x25, 0xf1, 0x2f, 0xd0, - 0x7f, 0xf5, 0xea, 0x9c, 0xdf, 00, 0x3c, 0x31, 0x2f, 0x4b, - 0x44, 0x5f, 0xcf, 0xfc, 0x6a, 0x5e, 0x1b, 0x89, 0xe3, 0xb5, - 0x78, 0x3f, 0x91, 0xf, 0x7, 0xc6, 0x51, 0xf8, 0x71, 0x30, - 0x7f, 0xf6, 0xea, 0x38, 0x28, 0xff, 00, 0x6b, 0x7f, 0xe, - 0x7f, 0x1e, 0x8f, 0xaa, 0x83, 0xfe, 0xca, 0xc4, 0x7f, 0xf6, - 0x71, 0x56, 0x22, 0xfd, 0xac, 0xbc, 0x29, 0x26, 0x73, 0xa7, - 0xea, 0xd1, 0xff, 00, 0xbd, 0x14, 0x5f, 0xfc, 0x72, 0xba, - 0x69, 0x7f, 0x67, 0xf, 0xd, 0x48, 0x4e, 0x22, 0xb, 0x9f, - 0xf7, 0xbf, 0xc6, 0xa9, 0x4f, 0xfb, 0x31, 0x78, 0x7e, 0x5e, - 0x87, 0x67, 0xfd, 0xf5, 0xff, 00, 0xc5, 0x56, 0x7c, 0xbc, - 0x59, 0x1f, 0xb5, 0x7, 0xf2, 0x46, 0x5c, 0xbc, 0x6f, 0xd, - 0xa7, 0x4d, 0xfc, 0x91, 0x56, 0xf, 0xda, 0x7f, 0xc2, 0x13, - 0x75, 0x5b, 0xd8, 0xff, 00, 0xdf, 0x48, 0xff, 00, 0xf8, - 0xba, 0xd3, 0x87, 0xf6, 0x88, 0xf0, 0x64, 0x9b, 0x4f, 0xf6, - 0x83, 0x26, 0x7b, 0x38, 0x51, 0x8f, 0xfc, 0x7a, 0xb2, 0x26, - 0xfd, 0x95, 0x34, 0x67, 0x3f, 0x2d, 0xc6, 0xdf, 0xc1, 0xbf, - 0xf8, 0xaa, 0xa7, 0x27, 0xec, 0x99, 0xa7, 0x36, 0x76, 0xdf, - 0xed, 0xff, 00, 0x80, 0x37, 0xff, 00, 0x15, 0x42, 0xaf, - 0xc5, 0x51, 0xde, 0x94, 0x1f, 0xf5, 0xea, 0x35, 0x8a, 0xe3, - 0x58, 0x6f, 0x46, 0x9c, 0xbf, 0xaf, 0x53, 0xb0, 0x87, 0xe3, - 0xc7, 0x82, 0x65, 0xc6, 0x75, 0xc8, 0x23, 0xe7, 0xf8, 0xcd, - 0x5f, 0x8b, 0xe3, 0xf, 0x83, 0xa7, 0x20, 0x26, 0xbf, 0x6a, - 0xd9, 0xe4, 0x61, 0x8f, 0xf8, 0x57, 0x9b, 0x49, 0xfb, 0x23, - 0xdb, 0x9f, 0xbb, 0xaa, 0x2f, 0xfd, 0xfb, 0x3f, 0xfc, 0x55, - 0x52, 0x97, 0xf6, 0x43, 0x6c, 0x9d, 0xba, 0xa8, 0x3f, 0xf6, - 0xcb, 0xff, 00, 0xb2, 0xad, 0x3f, 0xb4, 0x38, 0x9a, 0x3f, - 0x16, 0x16, 0x2f, 0xe7, 0xff, 00, 0x4, 0xd1, 0x66, 0xbc, - 0x61, 0xf, 0x8b, 0x5, 0x7, 0xf3, 0xff, 00, 0x82, 0x7b, - 0x1c, 0x3f, 0x12, 0x3c, 0x37, 0x71, 0xb7, 0xcb, 0xd5, 0xe0, - 0x7d, 0xdd, 0x31, 0x9e, 0x7f, 0x4a, 0xd0, 0x87, 0xc5, 0x1a, - 0x5d, 0xc2, 0xee, 0x8e, 0xf6, 0x36, 0x1e, 0xa3, 0x35, 0xe0, - 0x13, 0x7e, 0xc8, 0xd7, 0x63, 0x3b, 0x35, 0x24, 0x3f, 0xf6, - 0xc8, 0x7f, 0xf1, 0x55, 0x4a, 0x7f, 0xd9, 0x2f, 0x55, 0x4f, - 0xf5, 0x77, 0x8a, 0xc3, 0xfd, 0xc1, 0xff, 00, 0xc5, 0x53, - 0x59, 0xce, 0x7f, 0xf, 0x8b, 0x3, 0x7f, 0x49, 0x7f, 0xc3, - 0x8f, 0xfb, 0x7f, 0x89, 0xe1, 0xfc, 0x4c, 0xb1, 0x3f, 0x49, - 0x7f, 0xc3, 0x9f, 0x4d, 0xc5, 0x7b, 0xc, 0xcb, 0xb9, 0x25, - 0x56, 0x1e, 0xb9, 0xa9, 0x5, 0xc2, 0x7f, 0x7d, 0x7f, 0x3a, - 0xf9, 0x52, 0x4f, 0xd9, 0x5f, 0x5d, 0x8b, 0x94, 0x9c, 0x12, - 0x3d, 00, 0x1f, 0xfb, 0x35, 0x56, 0x7f, 0xd9, 0xbf, 0xc5, - 0x36, 0xe0, 0xf9, 0x73, 0x49, 0xff, 00, 0x1, 0x6c, 0x7f, - 0xec, 0xd4, 0xdf, 0x10, 0xe6, 0xb1, 0xf8, 0xb2, 0xe9, 0x7f, - 0xe0, 0x5f, 0xf0, 0x6, 0xf8, 0xab, 0x3a, 0x87, 0xc7, 0x95, - 0x4b, 0xff, 00, 0x2, 0xff, 00, 0xed, 0x4f, 0xad, 0x7e, - 0xd2, 0x9f, 0xde, 0x1f, 0x9d, 0x28, 0x9d, 0x4f, 0xf1, 0xf, - 0xce, 0xbe, 0x43, 0x3f, 0x3, 0x7c, 0x71, 0x6d, 0xcc, 0x77, - 0x17, 0xab, 0xfe, 0xe4, 0xd8, 0xff, 00, 0xd9, 0xea, 0xbc, - 0x9f, 0xa, 0xfe, 0x20, 0xdb, 0xfd, 0xdb, 0x9d, 0x4f, 0x8f, - 0x4b, 0x92, 0x3f, 0xf6, 0x7a, 0xcf, 0xfd, 0x69, 0xc6, 0x47, - 0xe3, 0xc0, 0x4f, 0xef, 0xff, 00, 0x80, 0x66, 0xf8, 0xd3, - 0x1f, 0xf, 0x8f, 0x2c, 0xa8, 0xbe, 0x7f, 0xf0, 0xf, 0xb1, - 0xbc, 0xc5, 0xf5, 0x1f, 0x9d, 0x2, 0x41, 0xd8, 0xd7, 0xc6, - 0x47, 0xc1, 0x3f, 0x12, 0x6d, 0x18, 0x15, 0xba, 0xd5, 0xce, - 0x3f, 0xe9, 0xe9, 0x88, 0xff, 00, 0xd0, 0xe9, 0x7e, 0xc7, - 0xf1, 0x42, 0xcd, 0x76, 0x8b, 0x9d, 0x4f, 0xfe, 0x4, 0xfb, - 0xbf, 0xad, 0x4f, 0xfa, 0xe1, 0x35, 0xf1, 0xe0, 0xe6, 0x89, - 0xff, 00, 0x5f, 0x27, 0x1f, 0xe2, 0x60, 0x2a, 0x2f, 0x91, - 0xf6, 0x76, 0xea, 0x37, 0x7d, 0x6b, 0xe3, 0x58, 0xfc, 0x43, - 0xf1, 0x56, 0xc8, 0x60, 0x5c, 0xdf, 00, 0x3f, 0xbd, 0x1a, - 0xb5, 0x48, 0xbf, 0x11, 0x7e, 0x2b, 0x5a, 0x1c, 0x8b, 0xdb, - 0xaf, 0xf8, 0x15, 0xac, 0x67, 0xff, 00, 0x65, 0xad, 0x17, - 0x19, 0xe1, 0xd7, 0xc7, 0x42, 0x6b, 0xe4, 0x69, 0x1f, 0x10, - 0x30, 0xbf, 0x6f, 0xd, 0x51, 0x7f, 0xdb, 0xa7, 0xd8, 0xdb, - 0xe8, 0xf3, 0x31, 0x5f, 0x1f, 0x2f, 0xc6, 0x4f, 0x89, 0xf0, - 0x5, 0x12, 0xcf, 0x33, 0xe3, 0xa9, 0xfb, 0x24, 0x63, 0x3f, - 0xf8, 0xed, 0x5a, 0x8b, 0xe3, 0xf7, 0x8f, 0x6d, 0xb1, 0xe7, - 0x43, 0x24, 0xbe, 0xb9, 0x89, 0x57, 0xff, 00, 0x64, 0xad, - 0x57, 0x1a, 0x65, 0xf7, 0xd6, 0x13, 0x5f, 0xf6, 0xe9, 0xba, - 0xf1, 0x7, 0x2b, 0xfb, 0x50, 0xa8, 0xbf, 0xed, 0xd3, 0xeb, - 0x7f, 0x32, 0x8f, 0x32, 0xbe, 0x55, 0x83, 0xf6, 0x97, 0xf1, - 0x54, 00, 0x79, 0xba, 0x57, 0x9b, 0x8e, 0xbb, 0x88, 0x5f, - 0xfd, 0x92, 0xaf, 0x47, 0xfb, 0x57, 0xeb, 0x31, 0x7f, 0xac, - 0xf0, 0xdc, 0x4f, 0xff, 00, 0x6f, 0x4, 0x7f, 0xec, 0xb5, - 0xd1, 0x1e, 0x30, 0xca, 0x9e, 0xf2, 0x6b, 0xfe, 0xdd, 0x67, - 0x54, 0x38, 0xf3, 0x24, 0x97, 0xc5, 0x39, 0x2f, 0x58, 0xcb, - 0xfc, 0x8f, 0xa7, 0x81, 0xf7, 0xa7, 0x6e, 0xaf, 0x99, 0xd3, - 0xf6, 0xb9, 0xbc, 0x1f, 0x7f, 0xc3, 0x2b, 0xf8, 0x5c, 0x9f, - 0xfe, 0x26, 0xa6, 0x4f, 0xda, 0xf3, 0x7, 0xf7, 0x9e, 0x1b, - 0x70, 0x3f, 0xd9, 0xb8, 0x1f, 0xe1, 0x5b, 0x2e, 0x2d, 0xc9, - 0xdf, 0xfc, 0xbe, 0xfc, 0x1f, 0xf9, 0x1d, 0xb, 0x8e, 0x72, - 0x1f, 0xf9, 0xff, 00, 0xff, 00, 0x92, 0xcb, 0xfc, 0x8f, - 0xa4, 0xb7, 0x51, 0xba, 0xbe, 0x74, 0x4f, 0xda, 0xf6, 0xcb, - 0xf8, 0xfc, 0x3b, 0x72, 0x3d, 0x71, 0x32, 0xff, 00, 0x85, - 0x58, 0x8f, 0xf6, 0xbc, 0xd2, 0x58, 0xfc, 0xda, 0x5, 0xea, - 0x7b, 0xf9, 0x8a, 0x45, 0x68, 0xb8, 0xab, 0x26, 0x7f, 0xf2, - 0xfd, 0x7d, 0xcf, 0xfc, 0x8d, 0x23, 0xc6, 0xd9, 0x4, 0xbf, - 0xe6, 0x25, 0x2f, 0x93, 0xff, 00, 0x23, 0xe8, 0x3d, 0xd4, - 0xbb, 0xab, 0xc1, 0x60, 0xfd, 0xad, 0x3c, 0x3f, 0x20, 0xfd, - 0xe6, 0x9b, 0x75, 0xf, 0xb3, 0x1c, 0xff, 00, 0x21, 0x5a, - 0x10, 0xfe, 0xd4, 0xfe, 0x11, 0x7f, 0xbe, 0xd3, 0x44, 0x7d, - 0xe3, 0x73, 0xfc, 0x92, 0xba, 0x23, 0xc4, 0x99, 0x44, 0xf6, - 0xc4, 0x44, 0xea, 0x87, 0x17, 0x64, 0x53, 0xdb, 0x15, 0x1f, - 0xcb, 0xf3, 0x3d, 0xab, 0x77, 0xd6, 0x8d, 0xd5, 0xe4, 0x90, - 0x7e, 0xd3, 0x5e, 0x5, 0x7f, 0xbf, 0xa9, 0x49, 0x1f, 0xfd, - 0xbb, 0x4c, 0x7f, 0x92, 0x55, 0xf8, 0xff, 00, 0x68, 0xcf, - 0x87, 0xf3, 0xc, 0xae, 0xbb, 0xc7, 0x4e, 0x6d, 0x27, 0x1f, - 0xfb, 0x25, 0x75, 0x47, 0x3b, 0xcb, 0x27, 0xb6, 0x22, 0x1f, - 0xf8, 0x12, 0xff, 00, 0x33, 0xb6, 0x1c, 0x45, 0x93, 0xcf, - 0xe1, 0xc5, 0xd3, 0xff, 00, 0xc0, 0xa3, 0xfe, 0x67, 0xa6, - 0x6e, 0xf7, 0xa7, 0x6, 0xe2, 0xb8, 0x8, 0x7e, 0x38, 0x78, - 0x2e, 0x70, 0xa, 0x6b, 0x48, 0x41, 0xf5, 0x86, 0x41, 0xff, - 00, 0xb2, 0xd6, 0x95, 0xbf, 0xc5, 0xf, 0xb, 0xdc, 0x1, - 0xb3, 0x59, 0xb7, 0x39, 0xf5, 0xc8, 0xfe, 0x62, 0xba, 0xa3, - 0x98, 0x60, 0xe7, 0xf0, 0xd6, 0x8b, 0xf9, 0xa3, 0xb6, 0x19, - 0xae, 0x2, 0xa6, 0x90, 0xaf, 0x7, 0xff, 00, 0x6f, 0x2f, - 0xf3, 0x3a, 0xdd, 0xd4, 0x6e, 0xac, 0x38, 0x3c, 0x63, 0xa1, - 0xce, 0x37, 0x26, 0xad, 0x67, 0x8f, 0x79, 0x94, 0x7f, 0x33, - 0x53, 0x8f, 0x13, 0x69, 0x2d, 0xd3, 0x53, 0xb3, 0x3f, 0xf6, - 0xdd, 0x7f, 0xc6, 0xba, 0x95, 0x6a, 0x4f, 0x55, 0x25, 0xf7, - 0xa3, 0xb5, 0x62, 0x28, 0xb5, 0x75, 0x35, 0xf7, 0x9a, 0xd9, - 0x14, 0x64, 0x56, 0x72, 0xeb, 0xba, 0x7b, 0xfd, 0xdb, 0xeb, - 0x66, 0xfa, 0x4a, 0xbf, 0xe3, 0x52, 0x2e, 0xa9, 0x68, 0xdd, - 0x2e, 0x61, 0x3f, 0x47, 0x14, 0xfd, 0xad, 0x3f, 0xe6, 0x45, - 0x2a, 0xd4, 0x9f, 0xda, 0x5f, 0x79, 0x77, 0x22, 0x8c, 0xe6, - 0xab, 0xb, 0xd8, 0x4f, 0x49, 0x50, 0xff, 00, 0xc0, 0x85, - 0x38, 0x5c, 0x46, 0x47, 0xe, 0xa7, 0xf1, 0xaa, 0xe7, 0x8f, - 0x72, 0xb9, 0xe2, 0xfa, 0x93, 0xd2, 0xe7, 0x15, 0x10, 0x91, - 0x4f, 0x46, 0x1f, 0x9d, 0x2e, 0xe1, 0xeb, 0x54, 0x9a, 0x65, - 0x5d, 0x12, 0x64, 0xd1, 0x93, 0x51, 0xe6, 0x8c, 0xd3, 0x19, - 0x26, 0x4d, 0x28, 0x39, 0xa8, 0xc1, 0xc5, 0x2e, 0xe3, 0x40, - 0x12, 0x51, 0x4c, 0xdd, 0xef, 0x4a, 0x1a, 0x80, 0x1d, 0x45, - 0x37, 0x26, 0x8c, 0x9a, 00, 0x75, 0x14, 0xdc, 0x9a, 0x37, - 0x50, 0x3, 0xb3, 0x46, 0x69, 0xbb, 0xa8, 0xdd, 0x40, 0xe, - 0xcd, 0x3, 0x83, 0x4d, 0xdd, 0xed, 0x4e, 0x7, 0x34, 00, - 0xec, 0x8a, 0x32, 0x29, 0xb4, 0x50, 0x3, 0xb2, 0x29, 0x69, - 0x94, 0xe0, 0x45, 00, 0x2d, 0x14, 0x99, 0x14, 0x66, 0x80, - 0x16, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, - 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, - 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, - 0x28, 0xa0, 0x2, 0x98, 0x79, 0xa7, 0x1a, 0x6d, 00, 0x14, - 0xd3, 0xd6, 0x82, 0x69, 0x9, 0xc5, 00, 0x23, 0x54, 0x6c, - 0x69, 0xc5, 0xaa, 0x36, 0x39, 0x14, 00, 0xd6, 0x3c, 0x54, - 0x4c, 0xd8, 0xef, 0x4a, 0xed, 0x8a, 0x82, 0x47, 0xa0, 0x1, - 0xde, 0xab, 0xdb, 0xcc, 0x97, 0x57, 0xa6, 0xdc, 0x1c, 0x95, - 0x19, 0x7e, 0x3a, 0xa, 0xe6, 0x3c, 0x71, 0xe3, 0x78, 0x7c, - 0x32, 0x2d, 0x2c, 0xe3, 0xd, 0x2e, 0xa9, 0xa8, 0xb1, 0x8a, - 0xd2, 0x24, 00, 0xe1, 0xb0, 0x49, 0x66, 0xc9, 0xfb, 0xa3, - 0x1d, 0x70, 0x6b, 0xa0, 0xf0, 0x65, 0x84, 0xd6, 0xb6, 0x11, - 0x9b, 0xa9, 0x3c, 0xeb, 0xb7, 0x1b, 0xe6, 0x94, 0x9c, 0xee, - 0x63, 0xd6, 0xb9, 0xd5, 0x55, 0x3a, 0x8e, 0x9c, 0x7a, 0x6e, - 0x72, 0xaa, 0xca, 0x75, 0x5d, 0x28, 0x74, 0xdf, 0xfc, 0x8e, - 0x9d, 00, 0x55, 0xa, 0x6, 00, 0xa7, 0x51, 0x45, 0x74, - 0x1d, 0x41, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x84, 0xed, - 0x19, 0x34, 00, 0xb4, 0xdd, 0xe0, 0xe, 0x4e, 0x3e, 0xb5, - 0xe6, 0xdf, 0x12, 0xbf, 0x68, 0x2f, 0x8, 0xfc, 0x2b, 0xc, - 0x35, 0xab, 0xb7, 0xe, 0x17, 0x21, 0x61, 0xd8, 0x4f, 0xea, - 0xc3, 0xd2, 0xbe, 0x29, 0xf8, 0xb9, 0xff, 00, 0x5, 0x24, - 0xd0, 0xc5, 0xe5, 0xcc, 0x7a, 0x1d, 0xfd, 0xf2, 0xaa, 0xb1, - 0xb, 0x85, 0x8c, 0x7f, 0x27, 0x34, 0x1, 0xfa, 0x3a, 0x67, - 0x8d, 0x7a, 0xba, 0x8f, 0xc6, 0xa3, 0xfb, 0x7d, 0xbe, 0xec, - 0x79, 0xaa, 0x4f, 0xb5, 0x7e, 0x2b, 0x78, 0xab, 0xfe, 0xa, - 0x39, 0xe2, 0x47, 0x93, 0x16, 0xba, 0x9e, 0xa1, 0xb7, 0x9e, - 0x9b, 0x3f, 0xc6, 0xb4, 0x7e, 0x15, 0x7e, 0xdc, 0xde, 0x34, - 0xf1, 0x5e, 0xbf, 0x6d, 0x6d, 0xf6, 0xeb, 0xd7, 0x12, 0xc8, - 0x10, 0x67, 0x6f, 0x72, 0x7, 0x6a, 00, 0xfd, 0x9e, 0x57, - 0xc, 0x1, 0x1c, 0x83, 0xdc, 0x53, 0xab, 0x82, 0xf8, 0x47, - 0xaa, 0xde, 0xdd, 0xf8, 0xa, 0xc2, 0xff, 00, 0x55, 0x97, - 0xf7, 0xb2, 0xa0, 0x62, 0xce, 0xde, 0xc2, 0xaf, 0x5e, 0x7c, - 0x57, 0xf0, 0xcd, 0x85, 0xcb, 0x41, 0x36, 0xa5, 0x1a, 0xc8, - 0xa7, 0x4, 0x64, 0x7f, 0x8d, 00, 0x75, 0xf4, 0x57, 0x33, - 0xa7, 0xfc, 0x45, 0xd0, 0x35, 0x59, 0x44, 0x56, 0xda, 0x84, - 0x72, 0x39, 0xe8, 0x33, 0x5d, 0x22, 0x38, 0x75, 0xc, 0xa7, - 0x20, 0xd0, 0x3, 0xa9, 0x1, 0xa0, 0xd5, 0x3b, 0xed, 0x46, - 0x2b, 0x8, 0xcb, 0xc8, 0x7d, 0xea, 0x65, 0x25, 0x15, 0x77, - 0xb1, 0x12, 0x9c, 0x60, 0xb9, 0xa4, 0xec, 0x8b, 0x99, 0xa0, - 0x9a, 0xe5, 0x4f, 0x8f, 0x6c, 0xf7, 0x11, 0x86, 0xfd, 0x3f, - 0xc6, 0xa4, 0x1e, 0x39, 0xb2, 0xfe, 0xeb, 0x7e, 0x9f, 0xe3, - 0x5c, 0x5f, 0x5f, 0xc3, 0x7f, 0x3a, 0x3c, 0xf5, 0x99, 0xe1, - 0x1f, 0xfc, 0xbc, 0x47, 0x4d, 0x93, 0xe9, 0x46, 0x4f, 0xa5, - 0x73, 0x83, 0xc6, 0xf6, 0x27, 0xa8, 0x6f, 0xc8, 0x53, 0xc7, - 0x8d, 0x2c, 0x4f, 0xf7, 0xbf, 0x4a, 0xaf, 0xae, 0xe1, 0xdf, - 0xdb, 0x45, 0xac, 0xc3, 0xa, 0xf6, 0xa8, 0x8e, 0x83, 0x27, - 0xd2, 0x8c, 0xfb, 0x56, 0x12, 0xf8, 0xba, 0xc4, 0xf7, 0x6f, - 0xd2, 0x9e, 0x3c, 0x57, 0x62, 0x7f, 0x89, 0xbf, 0x4a, 0xaf, - 0xad, 0x50, 0x7f, 0x6d, 0x16, 0xb1, 0xb8, 0x77, 0xf6, 0xd1, - 0xb5, 0x9a, 0x33, 0x58, 0xeb, 0xe2, 0x7b, 0x33, 0xd1, 0x8d, - 0x3f, 0xfe, 0x12, 0x3b, 0x43, 0xfc, 0x66, 0xab, 0xeb, 0x14, - 0xbf, 0x99, 0x14, 0xb1, 0x54, 0x1f, 0xdb, 0x46, 0xae, 0x45, - 0x19, 0xac, 0xc1, 0xaf, 0xda, 0x1f, 0xe3, 0xa7, 0x8d, 0x6a, - 0xd8, 0xff, 00, 0x1f, 0xeb, 0x55, 0xed, 0xa9, 0xbf, 0xb4, - 0x8b, 0x58, 0x8a, 0x4f, 0xed, 0x23, 0x42, 0x8c, 0xd5, 0x11, - 0xab, 0x5b, 0x9e, 0x92, 0xa, 0x94, 0x6a, 0x10, 0xb7, 0xfc, - 0xb4, 0x1f, 0x9d, 0x5a, 0xa9, 0x7, 0xb3, 0x2d, 0x55, 0xa6, - 0xf6, 0x92, 0x2c, 0xd2, 0xd4, 0x31, 0xce, 0x8e, 0x7e, 0x56, - 0x7, 0xf1, 0xa9, 0x7a, 0xd5, 0xa7, 0x7d, 0x8d, 0x13, 0x4f, - 0x61, 0x68, 0xa2, 0x8a, 0x63, 0xa, 0x28, 0xa2, 0x80, 0xa, - 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa2, - 0x80, 0xa, 0x28, 0xa2, 0x80, 0x13, 0x9f, 0x5a, 0x31, 0x4b, - 0x45, 00, 0x26, 0x28, 0xc5, 0x2d, 0x14, 00, 0x98, 0xa3, - 0x1e, 0xf4, 0xb4, 0x50, 0x2, 0x51, 0x4b, 0x45, 0x2b, 00, - 0x52, 0x52, 0xd1, 0x4c, 0x4, 0xc5, 0x18, 0x34, 0xb4, 0x50, - 0x2, 0x62, 0x80, 0x29, 0x68, 0xa0, 0x4, 0xc5, 0x2d, 0x14, - 0x50, 0x2, 0x62, 0x8c, 0x52, 0xd1, 0x40, 0xd, 0xdb, 0x46, - 0xda, 0x75, 0x14, 00, 0x98, 0xa4, 0x2a, 0xd, 0x3a, 0x8a, - 00, 0x69, 0x40, 0x69, 0x3c, 0xa5, 0xee, 0xa0, 0xfe, 0x14, - 0xfa, 0x28, 0x15, 0x91, 0x19, 0xb7, 0x8c, 0xff, 00, 0x2, - 0xfe, 0x54, 0xc3, 0x65, 0x3, 0x7f, 0xcb, 0x25, 0xfc, 0xaa, - 0x7a, 0x4a, 0x9e, 0x48, 0xbe, 0x84, 0xb8, 0x45, 0xee, 0x8a, - 0xad, 0xa5, 0x5a, 0x3f, 0x58, 0x10, 0xfe, 0x15, 0xb, 0xf8, - 0x7f, 0x4f, 0x7e, 0xb6, 0xc9, 0xf9, 0x56, 0x8d, 0x15, 0xe, - 0x95, 0x37, 0xbc, 0x57, 0xdc, 0x66, 0xe8, 0x52, 0x96, 0xf1, - 0x5f, 0x71, 0x8f, 0x27, 0x84, 0xb4, 0xa9, 0x47, 0xcd, 0x68, - 0x86, 0xaa, 0x49, 0xf0, 0xff, 00, 0x44, 0x97, 0xad, 0x9a, - 0xfe, 0x66, 0xba, 0x3a, 0x2b, 0x27, 0x84, 0xc3, 0xcb, 0x78, - 0x2f, 0xb8, 0xc2, 0x58, 0x1c, 0x2c, 0xfe, 0x2a, 0x51, 0x7f, - 0x24, 0x72, 0x52, 0xfc, 0x2f, 0xd0, 0x25, 0xeb, 0x66, 0x3f, - 0x33, 0x54, 0xe6, 0xf8, 0x37, 0xe1, 0xb9, 0xba, 0xda, 0x11, - 0xff, 00, 0x2, 0x35, 0xdc, 0xd1, 0x5c, 0xf2, 0xcb, 0x70, - 0x52, 0xde, 0x94, 0x7e, 0xe4, 0x73, 0x4b, 0x28, 0xcb, 0xe7, - 0xf1, 0x50, 0x8f, 0xdc, 0x8f, 0x38, 0x97, 0xe0, 0x37, 0x86, - 0x26, 0xeb, 0x6e, 0xc3, 0xe8, 0xd5, 0x4a, 0x6f, 0xd9, 0xd7, - 0xc2, 0xf2, 0x9f, 0xf5, 0x72, 0xf, 0xf8, 0x15, 0x7a, 0xa5, - 0x15, 0xcf, 0x2c, 0x97, 0x2e, 0x96, 0xf4, 0x23, 0xf7, 0x1c, - 0xb2, 0xe1, 0xec, 0xaa, 0x7b, 0xe1, 0xe3, 0xf7, 0x1e, 0x3b, - 0x3f, 0xec, 0xc7, 0xe1, 0x99, 0x7a, 0x34, 0xab, 0x54, 0xe5, - 0xfd, 0x95, 0xfc, 0x3e, 0xe7, 0x8b, 0xa9, 0x97, 0xf0, 0x15, - 0xed, 0xd4, 0x84, 0x66, 0xb9, 0xa5, 0xc3, 0xb9, 0x54, 0xb7, - 0xa0, 0x8e, 0x49, 0xf0, 0xae, 0x4b, 0x3f, 0x8b, 0xd, 0x1f, - 0xc4, 0xf0, 0x69, 0x7f, 0x64, 0xed, 0x15, 0x8f, 0xcb, 0xa8, - 0xce, 0x3f, 0xe0, 0x22, 0xa9, 0x4b, 0xfb, 0x24, 0x69, 0xcd, - 0x9d, 0xba, 0xac, 0xff, 00, 0xf7, 0xca, 0xd7, 0xd0, 0xbc, - 0x51, 0x8a, 0xe7, 0x97, 0xb, 0xe5, 0x12, 0xde, 0x82, 0xfb, - 0xdf, 0xf9, 0x9c, 0xb2, 0xe0, 0xbc, 0x86, 0x7b, 0xe1, 0x97, - 0xde, 0xff, 00, 0xcc, 0xf9, 0xbe, 0x6f, 0xd9, 0x16, 0x6, - 0xfb, 0x9a, 0xb4, 0x83, 0xea, 0x8b, 0x54, 0xe5, 0xfd, 0x91, - 0x25, 0x1f, 0x73, 0x56, 0x6c, 0xfb, 0xa0, 0xff, 00, 0x1a, - 0xfa, 0x73, 0x6, 0x8c, 0x1a, 0xe7, 0x7c, 0x21, 0x93, 0xcb, - 0xfe, 0x5d, 0x7e, 0x2c, 0xe5, 0x97, 0x2, 0x64, 0x32, 0xff, - 00, 0x97, 0x1f, 0x8b, 0xff, 00, 0x33, 0xe5, 0x89, 0xbf, - 0x64, 0x7d, 0x47, 0x9d, 0x9a, 0x92, 0x1f, 0xaa, 0x8f, 0xf1, - 0xaa, 0x72, 0x7e, 0xc9, 0x7a, 0xd8, 0xce, 0xdb, 0xe8, 0xdb, - 0xea, 0x3f, 0xfb, 0x2a, 0xfa, 0xcf, 0x6, 0x97, 0x15, 0x83, - 0xe0, 0xcc, 0xa1, 0xed, 0x6, 0xbe, 0x6c, 0xe6, 0x97, 0x87, - 0xd9, 0x13, 0xda, 0x9b, 0x5f, 0xf6, 0xf3, 0x3e, 0x41, 0x93, - 0xf6, 0x53, 0xf1, 0x22, 0x67, 0x6d, 0xd2, 0x1f, 0xc7, 0x1f, - 0xd6, 0xaa, 0xcb, 0xfb, 0x2e, 0xf8, 0xb2, 0x3f, 0xba, 0xe8, - 0xc3, 0xda, 0x40, 0x3f, 0xad, 0x7d, 0x8f, 0xc5, 0x18, 0x15, - 0x9b, 0xe0, 0xbc, 0xb3, 0xec, 0xb9, 0x2f, 0xfb, 0x78, 0xc5, - 0xf8, 0x7b, 0x94, 0x7d, 0x97, 0x35, 0xff, 00, 0x6f, 0x1f, - 0x17, 0xbf, 0xec, 0xdf, 0xe3, 0x3b, 0x66, 0xc, 0x80, 0x12, - 0x39, 0x4, 0x4a, 0x3f, 0xc6, 0x88, 0xbe, 0x9, 0xfc, 0x40, - 0xb0, 0x25, 0xa2, 0xca, 0xb7, 0xb4, 0x88, 0x7f, 0x9d, 0x7d, - 0xa0, 00, 0xa3, 0x68, 0xf4, 0xa8, 0xff, 00, 0x53, 0x30, - 0x6b, 0xe1, 0xab, 0x35, 0xff, 00, 0x6f, 0x19, 0xff, 00, - 0xc4, 0x3e, 0xc0, 0x47, 0xe0, 0xad, 0x51, 0x7f, 0xdb, 0xc7, - 0xc6, 0x91, 0xf8, 0x2b, 0xe2, 0x95, 0x82, 0xe2, 0x39, 0xa5, - 0x45, 0xf4, 0x6, 0x3f, 0xf0, 0xa9, 0x52, 0xf, 0x8b, 0x96, - 0x3f, 0x72, 0xf6, 0xe1, 0x78, 0xc7, 0x1e, 0x57, 0xf8, 0x57, - 0xd8, 0xa5, 0x17, 0xb8, 0x14, 0xd3, 0x14, 0x67, 0xaa, 0x3, - 0xf8, 0x51, 0xfe, 0xa9, 0x28, 0xff, 00, 0xf, 0x15, 0x51, - 0x7c, 0xc6, 0xb8, 0x1a, 0x30, 0xfe, 0x1e, 0x36, 0xaa, 0xff, - 00, 0xb7, 0x8f, 0x90, 0x7, 0x88, 0x7e, 0x2f, 0xdb, 0xc, - 0x35, 0xf5, 0xc3, 0xe3, 0xfb, 0xc2, 0x2a, 0x90, 0x7c, 0x44, - 0xf8, 0xaf, 0x69, 0xf7, 0xdc, 0xbf, 0xfb, 0xca, 0xbf, 0xd0, - 0xd7, 0xd7, 0x26, 0xce, 0x16, 0xeb, 0x12, 0x1f, 0xc2, 0xa3, - 0x3a, 0x6d, 0xa3, 0xe7, 0x75, 0xbc, 0x67, 0xfe, 0x2, 0x29, - 0xff, 00, 0xab, 0x58, 0xb8, 0xfc, 0x18, 0xe9, 0xfd, 0xe3, - 0xff, 00, 0x53, 0xf1, 0xb1, 0xfe, 0x1e, 0x63, 0x53, 0xe6, - 0xdb, 0x3e, 0x4f, 0x5f, 0x8d, 0x1f, 0x13, 0x6d, 0x7e, 0xfd, - 0xad, 0xbb, 0xf7, 0xf9, 0x93, 0x3f, 0xc9, 0xaa, 0x55, 0xfd, - 0xa2, 0xbe, 0x21, 0xdb, 0xc, 0x3e, 0x97, 0x60, 0xff, 00, - 0xef, 0xc4, 0xff, 00, 0xd1, 0xeb, 0xea, 0x67, 0xd0, 0xb4, - 0xf6, 0xfb, 0xd6, 0x90, 0x9f, 0xf8, 00, 0xa8, 0x24, 0xf0, - 0xae, 0x95, 0x27, 0xde, 0xb0, 0x80, 0xff, 00, 0xc0, 0x5, - 0x3f, 0xec, 0x2c, 0xd6, 0x1f, 0x6, 0x3a, 0x5f, 0x31, 0xff, - 00, 0xab, 0x59, 0xd5, 0x3f, 0xe1, 0xe6, 0x52, 0xf9, 0xa3, - 0xe6, 0x31, 0xfb, 0x50, 0x78, 0xd9, 0x8, 0xdf, 0xa1, 0xd8, - 0x37, 0xae, 0x12, 0x41, 0xff, 00, 0xb3, 0x54, 0xb1, 0xfe, - 0xd5, 0xbe, 0x27, 0x8d, 0xbf, 0x7b, 0xe1, 0xcb, 0x46, 0xf5, - 0xda, 0xec, 0xbf, 0xe3, 0x5f, 0x48, 0x3f, 0x82, 0x34, 0x29, - 0x3e, 0xf6, 0x99, 0x6e, 0x7f, 0xe0, 0x2, 0xab, 0xc9, 0xf0, - 0xe3, 0xc3, 0x72, 0x7d, 0xed, 0x22, 0xd8, 0xff, 00, 0xc0, - 0x29, 0x3c, 0xa7, 0x3f, 0x5f, 0xe, 0x3b, 0xf0, 0x5f, 0xe4, - 0x4b, 0xc8, 0xb8, 0x9e, 0x3f, 0x6, 0x65, 0xf7, 0xc5, 0x7f, - 0x91, 0xe0, 0x3, 0xf6, 0xb9, 0xd6, 0x14, 0x9f, 0x33, 0xc2, - 0x90, 0x9f, 0xa5, 0xd1, 0x1f, 0xfb, 0x25, 0x4c, 0xbf, 0xb6, - 0x15, 0xe2, 0xfd, 0xff, 00, 0x8, 0x2e, 0x3d, 0xb5, 0xf, - 0xfe, 0xd7, 0x5e, 0xe1, 0x27, 0xc2, 0x8f, 0xa, 0xcb, 0xf7, - 0xb4, 0x5b, 0x63, 0xff, 00, 0x1, 0xaa, 0x33, 0xfc, 0x16, - 0xf0, 0x84, 0xe3, 0x7, 0x45, 0xb7, 0xff, 00, 0xbe, 0x6b, - 0x37, 0x96, 0xf1, 0x34, 0x7e, 0x1c, 0x64, 0x5f, 0xaa, 0x5f, - 0xfc, 0x89, 0x93, 0xca, 0x78, 0xc2, 0x3f, 0x6, 0x61, 0x17, - 0xeb, 0x15, 0xff, 00, 0xc8, 0x9e, 0x57, 0x63, 0xfb, 0x60, - 0xd9, 0xc9, 0x26, 0x2f, 0x34, 0x7, 0xb5, 0x4f, 0xef, 0x25, - 0xc9, 0x7f, 0xd3, 0x60, 0xae, 0x9a, 0xcb, 0xf6, 0xad, 0xf0, - 0x2c, 0xe1, 0x7e, 0xd1, 0x75, 0x73, 0x68, 0xc7, 0xae, 0xfb, - 0x77, 0x60, 0x3f, 0x10, 0x2b, 0x57, 0x50, 0xfd, 0x9c, 0xfc, - 0x23, 0x78, 0xa7, 0x6d, 0x84, 0x71, 0xe7, 0xfb, 0xb9, 0x1f, - 0xd6, 0xbc, 0xff, 00, 0x5f, 0xfd, 0x92, 0xac, 0xe6, 0x2e, - 0x6c, 0xa5, 0x8e, 0x20, 0x7e, 0xee, 0xf9, 0x1b, 0xfc, 0xd, - 0x45, 0xf8, 0xa7, 0xb, 0xbb, 0x85, 0x4f, 0x97, 0xf9, 0x58, - 0x94, 0xf8, 0xd3, 0x7, 0xf1, 0x3a, 0x75, 0x7e, 0x56, 0x7f, - 0x85, 0x8f, 0x65, 0xf0, 0xaf, 0xc4, 0xff, 00, 0xd, 0x78, - 0xca, 0x2f, 0x33, 0x4a, 0xd5, 0x23, 0xb8, 0x5f, 0xf6, 0xd5, - 0xa3, 0xff, 00, 0xd0, 0x80, 0xae, 0xa5, 0x64, 0xe, 0xa0, - 0x82, 0x8, 0x3d, 0xc1, 0xaf, 0x8c, 0x35, 0x6f, 0xd9, 0x47, - 0xc4, 0x56, 0x13, 0x79, 0xba, 0x7d, 0xf5, 0x90, 0x75, 0x39, - 0x56, 0x13, 0x3a, 0x90, 0x7d, 0xbe, 0x4a, 0x65, 0xb4, 0xbf, - 0x1a, 0xbe, 0x1c, 0xb6, 0xe8, 0x75, 0x99, 0x75, 0xb, 0x54, - 0xeb, 0xc, 0x8d, 0xe7, 0x82, 0x7, 0x60, 0x5d, 0x9, 0x1f, - 0x85, 0x7a, 0x14, 0x33, 0xcc, 0x75, 0x25, 0x6c, 0x76, 0x16, - 0x4b, 0xce, 0x3a, 0xa3, 0xd4, 0xc3, 0x71, 0x1e, 0x63, 0x45, - 0x5b, 0x32, 0xc1, 0x49, 0x79, 0xc7, 0x55, 0xf7, 0x1f, 0x69, - 0x86, 0xa7, 0x3, 0x8a, 0xf9, 0x87, 0x44, 0xfd, 0xb4, 0x2c, - 0xb4, 0x9b, 0x6f, 0x27, 0xc5, 0xfe, 0x1e, 0xd4, 0xed, 0x2f, - 0x81, 0xc1, 0x6b, 0x18, 0x55, 0xe3, 0xc7, 0xa9, 0x2c, 0xea, - 0x7f, 0x21, 0x5e, 0xdb, 0xe0, 0xf, 0x8a, 0xde, 0x1a, 0xf8, - 0x99, 0x63, 0xf6, 0x9d, 0x3, 0x53, 0x8a, 0xeb, 0x3, 0xe7, - 0x80, 0xb0, 0x59, 0x93, 0xfd, 0xe4, 0xea, 0x2b, 0xe8, 0xf0, - 0xb9, 0x9e, 0x13, 0x16, 0xf9, 0x69, 0x4f, 0x5e, 0xdb, 0x3f, - 0xb8, 0xfa, 0xcc, 0x1e, 0x6f, 0x82, 0xc7, 0xbe, 0x5a, 0x15, - 0x13, 0x97, 0x67, 0xa3, 0xfb, 0x99, 0xd9, 0x6e, 0xa3, 0x75, - 0x47, 0xbe, 0x80, 0xd5, 0xea, 0x1e, 0xc9, 0x26, 0x79, 0xa5, - 0xa6, 0xe7, 0x14, 0x64, 0xd0, 0x3, 0xa8, 0x1c, 0x1a, 0x40, - 0x73, 0x4b, 0x40, 0xe, 0xdd, 0x40, 0x39, 0xa6, 0xe6, 0x8c, - 0xe2, 0x80, 0x1f, 0x45, 0x37, 0x26, 0x9d, 0x40, 0x5, 0x14, - 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, - 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, 0x21, - 0xa5, 0xa6, 0x50, 0x1, 0x45, 0x14, 0xd2, 0x68, 0x1, 0xac, - 0x69, 0x28, 0x63, 0x4c, 0x26, 0x80, 0x1a, 0xe7, 0x2, 0xa2, - 0x62, 0x69, 0xce, 0x6a, 0x17, 0x6e, 0xb4, 00, 0xc7, 0x7a, - 0xab, 0x3c, 0xdb, 0x15, 0x98, 0xf4, 0x3, 0x9a, 0x91, 0xdb, - 0xad, 0x78, 0x47, 0xed, 0x61, 0xf1, 0x36, 0x2f, 0x5, 0xf8, - 0xe, 0x4d, 0x26, 0x19, 0x88, 0xd4, 0xf5, 0x85, 0x68, 0x22, - 0x11, 0xb8, 0xc, 0x89, 0xc6, 0xe6, 0xf5, 0x1d, 0x7a, 0x8a, - 0xe4, 0xc5, 0xe2, 0x23, 0x85, 0xa3, 0x2a, 0xd3, 0xd9, 0x2b, - 0x9c, 0x58, 0xdc, 0x54, 0x30, 0x58, 0x79, 0xd7, 0x9e, 0xd1, - 0x46, 0x47, 0xc3, 0x6f, 0x11, 0xbf, 0xc5, 0xdf, 0x89, 0xba, - 0x9f, 0x89, 0x58, 0xee, 0xd2, 0xec, 0xcf, 0x91, 0xa7, 0xa3, - 0x64, 0xed, 0x5e, 0x85, 0xb1, 0x92, 0x1, 0x38, 0xec, 0x6b, - 0xe9, 0x9d, 0x2b, 0x9, 0x1a, 0x8e, 0xb5, 0xe0, 0x1f, 0xb3, - 0x67, 0x86, 0x1b, 0x43, 0xf0, 0x45, 0x80, 0x74, 0xda, 0xf2, - 0x2e, 0xf3, 0xc7, 0x3d, 0x4d, 0x7d, 0x9, 0xa7, 0x47, 0x85, - 0x15, 0xc7, 0x95, 0xc2, 0x4b, 0xc, 0xa7, 0x53, 0xe2, 0x96, - 0xaf, 0xe6, 0x79, 0xf9, 0x2d, 0x39, 0xc7, 0x8, 0xaa, 0x55, - 0xf8, 0xa7, 0xef, 0x3f, 0x56, 0x5f, 0xa2, 0x8a, 0x2b, 0xd7, - 0x3d, 0xd0, 0xa2, 0x8a, 0x28, 0x1, 0x9, 0xc0, 0x24, 0xf4, - 0x15, 0xe0, 0xbf, 0xb4, 0xe7, 0xed, 0x9, 0x63, 0xf0, 0x97, - 0xc2, 0x17, 0x73, 0xc5, 0x31, 0x37, 0x4a, 0x8c, 0x7f, 0x76, - 0xc0, 0x11, 0xc1, 0xff, 00, 0x68, 0x7a, 0x57, 0xa3, 0xfc, - 0x59, 0xf1, 0xd5, 0xaf, 0x80, 0xbc, 0x11, 0xa9, 0x6a, 0x77, - 0x2e, 0xa9, 0xe5, 0xc4, 0x76, 0xe5, 0xc2, 0xf3, 0x8f, 0x5a, - 0xfc, 0x27, 0xfd, 0xa8, 0x7f, 0x68, 0xab, 0xdf, 0x88, 0x5a, - 0xd6, 0xa1, 0x1c, 0x57, 0x72, 0x49, 0xb, 0x4a, 0xca, 0x7, - 0x9a, 0x4a, 0xe3, 0x26, 0x80, 0x13, 0xf6, 0x85, 0xfd, 0xab, - 0xb5, 0x6f, 0x89, 0x5a, 0xcc, 0xa7, 0xed, 0x37, 0x4a, 0x87, - 0x70, 0x1b, 0xe4, 0x3e, 0xa7, 0xfd, 0xa3, 0x5f, 0x36, 0xdc, - 0x6a, 0x57, 0x37, 0x32, 0xb3, 0xbc, 0xf2, 0x12, 0xc7, 0x27, - 0x2e, 0x69, 0x16, 0x39, 0x6f, 0xa6, 0x3, 0x25, 0x9d, 0x8f, - 0x15, 0xd1, 0xc1, 0xf0, 0xdb, 0x57, 0x9e, 0xdc, 0x4c, 0xb0, - 0xbe, 0xc2, 0x33, 0x9d, 0x94, 0x1, 0xcb, 0x99, 0x64, 0x73, - 0xcb, 0xb1, 0xfa, 0x9a, 0xfa, 0x9f, 0xf6, 0x2f, 0xf0, 0x43, - 0x78, 0x87, 0xc7, 0xda, 0x34, 0x64, 0x67, 0xf7, 0xea, 0xc4, - 0x63, 0xaf, 0xcc, 0x3d, 0xab, 0xe6, 0x27, 0xd3, 0x65, 0xb6, - 0xbf, 0x5b, 0x67, 0x1f, 0x3e, 0xec, 0x60, 0x8a, 0xfd, 0x2c, - 0xff, 00, 0x82, 0x69, 0xfc, 0x3e, 0x7b, 0xff, 00, 0x18, - 0x5a, 0xde, 0x34, 0x79, 0x8e, 0x2, 0x18, 0x9f, 0x2f, 0x3d, - 0x30, 0x7a, 0xd0, 0x7, 0xe8, 0xb7, 0xc4, 0x3b, 0xc1, 0xe0, - 0x3f, 0x85, 0x1, 0x91, 0x8c, 0x9, 0x6b, 0x69, 0xd2, 0x33, - 0xb7, 0x90, 0x9f, 0x85, 0x7e, 0x42, 0xf8, 0xf3, 0xf6, 0xb3, - 0xd4, 0x1b, 0xc6, 0x3a, 0x97, 0x97, 0xa8, 0xdc, 0x4, 0x8e, - 0x67, 0x40, 0x4, 0xa7, 0xb1, 0x3f, 0xed, 0xd7, 0xeb, 0x1f, - 0xed, 0x6b, 0x30, 0x8b, 0xe1, 0x35, 0xf4, 0xa, 0x76, 0xb4, - 0x88, 0xcb, 0x80, 0x39, 0x23, 0x69, 0xaf, 0xc0, 0x2f, 0x8b, - 0xda, 0x7a, 0x69, 0x7e, 0x28, 0xb8, 0x8d, 0x7e, 0xf3, 0xbb, - 0x31, 0x20, 0x63, 0xb9, 0xcd, 00, 0x7e, 0x80, 0xfe, 0xc9, - 0xdf, 0x1e, 0x35, 0xf, 0x17, 0xf8, 0xa0, 0x99, 0x6f, 0xe7, - 0x9a, 0x35, 0x60, 0x36, 0xb4, 0xa4, 0x8e, 0x87, 0xde, 0xbf, - 0x55, 0x7c, 0x2d, 0x70, 0xd7, 0x7a, 0x25, 0xbc, 0xcd, 0x9c, - 0xb8, 0xcf, 0x35, 0xf8, 0x7d, 0xfb, 0x9, 0xdb, 0xb2, 0xeb, - 0xf6, 0xb0, 0xaf, 0x2d, 0x24, 0x80, 0x9f, 0x41, 0xd7, 0xad, - 0x7e, 0xe3, 0xf8, 0x7e, 0xd4, 0xd9, 0x68, 0xd6, 0x90, 0x9c, - 0xe5, 0x50, 0x3, 0x91, 0x8a, 00, 0xd0, 0x6e, 0x95, 0xe7, - 0x7f, 0x11, 0x75, 0x77, 0xb6, 0xb7, 0x70, 0xad, 0x83, 0x5e, - 0x81, 0x3b, 0x6c, 0x8d, 0x9b, 0xd0, 0x57, 0x8b, 0xfc, 0x49, - 0xbf, 0xf3, 0x64, 0xf2, 0xc1, 0xce, 0x5b, 0xfc, 0x6b, 0xe7, - 0x33, 0xda, 0xee, 0x86, 0x15, 0xd9, 0xee, 0x7c, 0x9f, 0x12, - 0xe2, 0x5e, 0x1f, 0x5, 0x2b, 0x3d, 0x59, 0xc6, 0x2e, 0xab, - 0x73, 0x92, 0x77, 0x75, 0xfa, 0xff, 00, 0x8d, 0x48, 0x35, - 0x9b, 0x91, 0xdf, 0xf5, 0x35, 0x54, 0xc, 0xa, 0x2b, 0xf2, - 0x25, 0x52, 0xa7, 0xf3, 0x33, 0xf0, 0x95, 0x56, 0xaf, 0xf3, - 0x32, 0xe2, 0xeb, 0x97, 00, 0x75, 0x3f, 0x99, 0xa7, 0xaf, - 0x88, 0x2e, 0x7, 0x73, 0xf9, 0x9a, 0xa1, 0x46, 0x2a, 0xbd, - 0xb5, 0x55, 0xb4, 0x8b, 0x58, 0x8a, 0xcb, 0xed, 0x33, 0x4c, - 0x78, 0x96, 0xe0, 0x7f, 0x7b, 0xf3, 0x34, 0xe5, 0xf1, 0x44, - 0xe3, 0xfb, 0xdf, 0x99, 0xac, 0xac, 0x51, 0x8a, 0xb5, 0x89, - 0xae, 0xbe, 0xd1, 0x6b, 0x17, 0x88, 0x5b, 0x4c, 0xd8, 0x5f, - 0x15, 0xcc, 0x3f, 0xbd, 0xf9, 0xff, 00, 0xf5, 0xea, 0x41, - 0xe2, 0xd9, 0x47, 0x76, 0xfc, 0xff, 00, 0xfa, 0xf5, 0x84, - 0x54, 0x1a, 0x36, 0x8f, 0x4a, 0xa5, 0x8b, 0xae, 0xbe, 0xd1, - 0x6b, 0x1d, 0x89, 0x5f, 0x6c, 0xe8, 0x47, 0x8c, 0x64, 0x1f, - 0xc4, 0xdf, 0x9f, 0xff, 00, 0x5e, 0xa5, 0x4f, 0x19, 0x38, - 0x3f, 0x78, 0xfe, 0x7f, 0xfd, 0x7a, 0xe6, 0x76, 0x8f, 0x4a, - 0x36, 0x8a, 0xb5, 0x8e, 0xc4, 0xaf, 0xb4, 0x6a, 0xb3, 0x1c, - 0x5a, 0xfb, 0x47, 0x56, 0x9e, 0x34, 0x60, 0x7e, 0xf3, 0x7e, - 0x7f, 0xfd, 0x7a, 0xb5, 0x17, 0x8e, 0x88, 0xc7, 0xcc, 0x7f, - 0x3f, 0xfe, 0xbd, 0x71, 0x3b, 0x5, 0x1e, 0x58, 0xad, 0x56, - 0x65, 0x89, 0x8f, 0x53, 0x68, 0xe6, 0xf8, 0xc8, 0xed, 0x23, - 0xd3, 0xf4, 0xef, 0x88, 0x8, 0xae, 0x32, 0x49, 0xfc, 0x7f, - 0xfa, 0xf5, 0xd6, 0xe9, 0xfe, 0x38, 0xb7, 0xb8, 00, 0x30, - 0x3f, 0x86, 0x3f, 0xc6, 0xbc, 0x11, 0x54, 0x29, 0xcf, 0x15, - 0x7a, 0xd7, 0x56, 0x6b, 0x43, 0xc6, 0x78, 0xf4, 0x35, 0xec, - 0x61, 0x78, 0x82, 0xbd, 0x2d, 0x27, 0xb1, 0xef, 0x60, 0xf8, - 0xa3, 0x13, 0x45, 0xda, 0xa6, 0xc7, 0xd1, 0x96, 0x5a, 0x94, - 0x57, 0xbf, 0x72, 0xad, 0xe6, 0xbc, 0x5b, 0xc3, 0x9e, 0x39, - 0x78, 0x1d, 0x54, 0x96, 0x1d, 0xba, 0xd7, 0xaa, 0x68, 0x5a, - 0xba, 0x6a, 0x76, 0xaa, 0xfb, 0x86, 0x48, 0xaf, 0xbe, 0xcb, - 0xf3, 0x3a, 0x58, 0xd8, 0xe8, 0xf5, 0x3f, 0x4e, 0xca, 0xf3, - 0x8a, 0x39, 0x84, 0x6c, 0x9f, 0xbc, 0x6b, 0xd1, 0x48, 0xd, - 0x2d, 0x7b, 0x67, 0xd1, 0x5, 0x21, 0x1d, 0xe9, 0x69, 0xd, - 00, 0x41, 0x75, 0x38, 0xb5, 0xb7, 0x79, 0x5b, 0xa2, 0x8c, - 0xd7, 0x1b, 0x37, 0x8e, 0x76, 0xcc, 0x40, 0x3c, 0x3, 0x8e, - 0xbf, 0xfd, 0x7a, 0xd6, 0xf1, 0xcd, 0xe1, 0xb3, 0xd0, 0x6e, - 0x58, 0x1c, 0x1d, 0x87, 0x1c, 0xe2, 0xbc, 0x5, 0xef, 0xae, - 0x19, 0xf3, 0xbc, 0xfe, 0x75, 0xf1, 0xb9, 0xde, 0x6b, 0x2c, - 0xd, 0x48, 0xd3, 0xa6, 0x7e, 0x7f, 0xc4, 0x59, 0xdc, 0xf2, - 0xea, 0xd0, 0xa5, 0x4f, 0xaa, 0xb9, 0xed, 0x2b, 0xe3, 0xa0, - 0x7f, 0xfd, 0x7f, 0xfd, 0x7a, 0x95, 0x7c, 0x72, 0xa7, 0xaf, - 0xf3, 0xff, 00, 0xeb, 0xd7, 0x89, 0xb, 0xfb, 0x81, 0xfc, - 0x44, 0xfe, 0x34, 0xf1, 0xa9, 0xdc, 0xe, 0xe7, 0xf3, 0xaf, - 0x9d, 0x5c, 0x47, 0x58, 0xf9, 0x58, 0xf1, 0x66, 0x21, 0x6e, - 0x7b, 0x7a, 0xf8, 0xe2, 0x3c, 0x74, 0xff, 00, 0x3f, 0x9d, - 0x48, 0xbe, 0x35, 0x88, 0xf5, 0x5c, 0xff, 00, 0x9f, 0xad, - 0x78, 0x77, 0xf6, 0xc5, 0xc0, 0xee, 0x7f, 0x3a, 0x72, 0xeb, - 0x77, 0x3, 0xb9, 0x3f, 0x8d, 0x6c, 0xb8, 0x96, 0xa2, 0xdc, - 0xe8, 0x8f, 0x17, 0x55, 0x5b, 0x9e, 0xe8, 0xbe, 0x33, 0x83, - 0xfb, 0x9f, 0xe7, 0xf3, 0xa9, 0x57, 0xc5, 0xd6, 0xe7, 0xf8, - 0x4f, 0xe7, 0x5e, 0x12, 0x3c, 0x41, 0x38, 0xf5, 0xfc, 0xe9, - 0xe3, 0xc4, 0x57, 0xb, 0xd8, 0xfe, 0x75, 0xb2, 0xe2, 0x69, - 0x75, 0xfc, 0x8d, 0xe3, 0xc6, 0x13, 0x5b, 0xfe, 0x47, 0xbb, - 0x8f, 0x15, 0xdb, 0x9e, 0xc7, 0xf3, 0xa7, 0xf, 0x13, 0xdb, - 0x13, 0xd0, 0xfe, 0x75, 0xe1, 0x23, 0xc4, 0xd3, 0xe, 0xc7, - 0xf3, 0xa7, 0x8f, 0x14, 0xcc, 0x3f, 0xbd, 0xff, 00, 0x7d, - 0x56, 0xab, 0x89, 0xbb, 0x9b, 0xae, 0x30, 0xef, 0xf9, 0x1e, - 0xee, 0xbe, 0x22, 0xb6, 0x6f, 0xff, 00, 0x58, 0xa9, 0x6, - 0xbb, 0x6c, 0x7b, 0xfe, 0xb5, 0xe1, 0xb, 0xe2, 0xb9, 0x3d, - 0x5b, 0xf3, 0xa9, 0x17, 0xc5, 0xce, 0xbd, 0xdb, 0xf3, 0xad, - 0x97, 0x13, 0x47, 0xaa, 0x37, 0x8f, 0x17, 0xc3, 0xaa, 0x3d, - 0xd9, 0x75, 0xab, 0x73, 0xfc, 0x42, 0x9e, 0x35, 0x5b, 0x7f, - 0xef, 0xd7, 0x85, 0x2f, 0x8c, 0x1b, 0xfb, 0xcc, 0x3f, 0xe0, - 0x55, 0x2a, 0xf8, 0xcc, 0xff, 00, 0x7c, 0xfe, 0x75, 0xb2, - 0xe2, 0x4a, 0x6f, 0xa1, 0xd1, 0x1e, 0x2e, 0xa5, 0xd5, 0x1e, - 0xe4, 0x35, 0x28, 0xf, 0xf1, 0x8a, 0x78, 0xbe, 0x84, 0xff, - 00, 0x18, 0xfc, 0xeb, 0xc3, 0x97, 0xc6, 0xb8, 0xff, 00, - 0x96, 0x84, 0x7f, 0xc0, 0xaa, 0x55, 0xf1, 0xbf, 0xfd, 0x35, - 0x3f, 0xf7, 0xd5, 0x6c, 0xb8, 0x8e, 0x8f, 0x53, 0x78, 0xf1, - 0x66, 0x1d, 0xee, 0x7b, 0x70, 0xbb, 0x88, 0xff, 00, 0x10, - 0xa7, 0x79, 0xe8, 0x7f, 0x8c, 0x57, 0x8a, 0x47, 0xe3, 0x8f, - 0xfa, 0x6a, 0x7f, 0xef, 0xaa, 0x98, 0x78, 0xeb, 0x8e, 0x24, - 0x3f, 0xf7, 0xd5, 0x6a, 0xb8, 0x87, 0xe, 0xf7, 0x37, 0x5c, - 0x53, 0x85, 0x67, 0xb3, 0xab, 0x6, 0xe8, 0x41, 0xfa, 0x53, - 0xab, 0x85, 0xf0, 0x7e, 0xb8, 0xda, 0x88, 0xdd, 0xb8, 0x90, - 0x7d, 0xeb, 0xb9, 0x1d, 0x2b, 0xe8, 0x30, 0xb8, 0x98, 0xe2, - 0xa9, 0xaa, 0x91, 0x3e, 0xa7, 0x7, 0x8b, 0x86, 0x32, 0x92, - 0xab, 0xd, 0x85, 0xa2, 0x8a, 0x2b, 0xb0, 0xee, 0xa, 0x28, - 0xa2, 0x80, 0xa, 0x28, 0xa4, 0xcd, 00, 0x2d, 0x15, 0x1b, - 0x4e, 0x89, 0xf7, 0x98, 0x2f, 0xd4, 0xd6, 0x7d, 0xee, 0xbf, - 0x6d, 0x68, 0xa4, 0xf9, 0x8a, 0x7f, 0xe0, 0x55, 0x9c, 0xea, - 0x42, 0xa, 0xf2, 0x66, 0x55, 0x2a, 0xc2, 0x92, 0xbc, 0xdd, - 0x8d, 0x3c, 0xd2, 0x71, 0x5c, 0x7c, 0xfe, 0x3e, 0xb6, 0x84, - 0xfa, 0xe3, 0xde, 0xb3, 0x6e, 0xbe, 0x29, 0x5b, 0xc7, 0xc0, - 0x1c, 0xfb, 0x1f, 0xfe, 0xb5, 0x79, 0xb3, 0xcd, 0x30, 0x94, - 0xfe, 0x29, 0x9e, 0x45, 0x4c, 0xeb, 0x3, 0x4b, 0xe2, 0xa8, - 0x8f, 0x42, 0xc8, 0xa3, 0x2b, 0x5e, 0x5c, 0xff, 00, 0x14, - 0xa1, 0x63, 0xd7, 0x1f, 0x56, 0xa5, 0x4f, 0x89, 0xb0, 0x13, - 0xcb, 0x7f, 0xe3, 0xd5, 0xca, 0xf3, 0xbc, 0x25, 0xed, 0xcc, - 0x71, 0x7f, 0xac, 0x79, 0x7d, 0xfe, 0x33, 0xd4, 0x73, 0x46, - 0x6b, 0xcc, 0xd3, 0xe2, 0x5d, 0xb1, 0xfe, 0x3f, 0xfc, 0x7a, - 0xaf, 0x5a, 0xfc, 0x48, 0xb4, 0x63, 0x82, 0xe3, 0xfe, 0xfa, - 0xad, 0xa3, 0x9b, 0xe1, 0x24, 0xed, 0xce, 0x6f, 0xc, 0xfb, - 0x3, 0x37, 0x65, 0x34, 0x77, 0xf4, 0x57, 0x37, 0x6d, 0xe3, - 0x9b, 0xb, 0x8c, 0x7c, 0xe0, 0x7e, 0x35, 0xa7, 0x6, 0xbb, - 0x69, 0x3f, 0xdd, 0x90, 0x67, 0xeb, 0x5e, 0x84, 0x31, 0x54, - 0x6a, 0x7c, 0x12, 0x4c, 0xf5, 0xa9, 0xe3, 0x30, 0xf5, 0x7e, - 0x9, 0xa6, 0x68, 0xd1, 0x4c, 0x49, 0x4, 0x8a, 0xa, 0xf2, - 0x29, 0xd9, 0xae, 0x9b, 0x9d, 0x82, 0xd1, 0x48, 0xd, 0x2d, - 0x30, 0xa, 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa2, 0x80, 0xa, - 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa2, - 0x80, 0xa, 0x29, 0x28, 0xa0, 0x5, 0xa2, 0x92, 0x82, 0x71, - 0x40, 0xb, 0x45, 0x34, 0xb6, 0x29, 0x72, 0x3d, 0x68, 0xb, - 0x8b, 0x45, 0x26, 0xe1, 0x46, 0xea, 00, 0x5a, 0x29, 0x37, - 0x52, 0x6e, 0xa0, 0x7, 0x51, 0x4d, 0xdd, 0x4b, 0x9a, 00, - 0x5a, 0x64, 0x8b, 0xb9, 0x69, 0xf4, 0x8d, 0xf7, 0x4d, 00, - 0x62, 0x5e, 0xc4, 0xa4, 0x1c, 0x81, 0x5c, 0xae, 0xaf, 0x65, - 0x1c, 0x81, 0x83, 0x28, 0x61, 0xe8, 0x45, 0x75, 0xd7, 0xfd, - 0xe, 0x2b, 0x9c, 0xd4, 0x30, 0x43, 0x52, 0xb2, 0x64, 0xb8, - 0xa7, 0xb9, 0xe4, 0x7e, 0x30, 0xf8, 0x77, 0xa3, 0x6b, 0x91, - 0xc8, 0x27, 0xb2, 0x83, 0x79, 0xfe, 0x31, 0x1a, 0xe7, 0xf9, - 0x57, 0x89, 0x6a, 0xbf, 0xa, 0xf5, 0xbf, 0x4, 0x5f, 0xb6, - 0xa9, 0xe1, 0x1d, 0x72, 0xe7, 0x4a, 0x9d, 0x48, 0x72, 0x90, - 0xc8, 0xc8, 0xaf, 0x8e, 0x81, 0x82, 0x81, 0xb8, 0x75, 0xe0, - 0xfa, 0xd7, 0xd3, 0x9a, 0xb4, 0x63, 0xe6, 0xae, 0x23, 0x59, - 0x88, 0x10, 0xdc, 0x57, 0x95, 0x88, 0xcb, 0x30, 0xd8, 0x87, - 0xcc, 0xe3, 0x69, 0x77, 0x5a, 0x33, 0xc5, 0xc5, 0x64, 0xf8, - 0x4c, 0x53, 0xe7, 0x70, 0xb4, 0xbb, 0xad, 0x1a, 0xf9, 0xa3, - 0x53, 0xe0, 0x57, 0xed, 0x27, 0xff, 00, 0x9, 0x6d, 0xfd, - 0xaf, 0x84, 0x7c, 0x4b, 0x69, 0x2d, 0xa7, 0x8a, 0x15, 0x8, - 0x13, 0xa8, 0x2, 0x1b, 0x8d, 0xa3, 0x92, 0x37, 0x36, 0xec, - 0xfe, 0x1e, 0xb5, 0xef, 0xe1, 0xab, 0xe1, 0x8f, 0x1a, 0xe9, - 0xb, 0x75, 0x19, 0x96, 0xde, 0x46, 0xb2, 0xbe, 0x89, 0x83, - 0xc1, 0x77, 0x9, 0x2b, 0x2c, 0x4c, 0xf, 0xc, 0xac, 0x30, - 0x41, 0xfa, 0x1a, 0xf6, 0x1f, 0x82, 0x3f, 0xb4, 0x62, 0xea, - 0x4f, 0x67, 0xe1, 0x8f, 0x16, 0x3a, 0xdb, 0xea, 0xaa, 0x8b, - 0x14, 0x3a, 0x94, 0xb3, 0xd, 0x97, 0x67, 0x80, 0x1, 0xc8, - 0xe1, 0xcf, 0xb9, 0x39, 0xf5, 0xad, 0xa8, 0x3a, 0x94, 0x7f, - 0x77, 0x59, 0xdd, 0x74, 0x7f, 0xe7, 0xe6, 0x74, 0x61, 0xdd, - 0x6c, 0x3a, 0xf6, 0x55, 0xdf, 0x37, 0x67, 0xfe, 0x7e, 0x67, - 0xd1, 0x1, 0xb3, 0x4b, 0x9a, 0x84, 0x3e, 0x71, 0x8a, 0x7e, - 0xea, 0xf4, 0xf, 0x50, 0x95, 0x4d, 0x2e, 0x7d, 0xea, 0x30, - 0x78, 0xa7, 0x29, 0x19, 0xa0, 0x9, 0x16, 0x96, 0x99, 0x9a, - 0x51, 0xd6, 0x80, 0x1d, 0x4b, 0x9f, 0x7a, 0x4c, 0xd1, 0x40, - 0xe, 0x1d, 0x29, 0x69, 0x99, 0xa7, 0x2d, 00, 0x2d, 0x14, - 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, - 0x5, 0x14, 0x52, 0x1e, 0x94, 00, 0x99, 0xe2, 0x92, 0x8a, - 0x28, 00, 0x35, 0x1b, 0x74, 0xa7, 0xb5, 0x46, 0xc6, 0x80, - 0x10, 0xb0, 0xc5, 0x46, 0xcd, 0x4a, 0xd5, 0x13, 0x9c, 0x66, - 0x80, 0x1b, 0x23, 0x75, 0xaa, 0xf2, 0x36, 0x33, 0x4f, 0x76, - 0xe2, 0xab, 0xc8, 0xdd, 0x68, 0x2, 0x29, 0x5f, 00, 0xf3, - 0x5f, 0x5, 0xfe, 0xd1, 0x5a, 0xd5, 0xcf, 0x8f, 0x7f, 0x68, - 0x57, 0xd1, 0x5b, 0x1e, 0x46, 0x95, 0xb2, 0xd5, 0x14, 0xc, - 0x75, 0x1, 0xc9, 0xfa, 0xfc, 0xc3, 0xf2, 0xaf, 0xbb, 0x66, - 0x94, 0x20, 0x66, 0x62, 0x15, 0x40, 0xc9, 0x24, 0xf0, 0x2b, - 0xe1, 0xbf, 0x1, 0x45, 0xff, 00, 0xb, 0x7, 0xf6, 0x8c, - 0xf1, 0x6, 0xb0, 0x47, 0x9f, 0x1a, 0xde, 0x38, 0x2e, 0x40, - 0x1f, 0x74, 0x6c, 0xed, 0xfe, 0xe5, 0x7c, 0xa7, 0x10, 0x5e, - 0xac, 0x29, 0x61, 0xd7, 0xdb, 0x92, 0x5f, 0x23, 0xe2, 0x78, - 0xa1, 0x3a, 0xd4, 0xe8, 0x61, 0x62, 0xff, 00, 0x89, 0x34, - 0xbe, 0x47, 0xd8, 0xde, 0x4, 0xd2, 0x57, 0x4e, 0xd3, 0x2d, - 0xa0, 0x51, 0x80, 0x88, 0x5, 0x7a, 0x15, 0xaa, 0x6d, 0x5a, - 0xe6, 0xf4, 0xb, 0x7d, 0xb1, 0x20, 0xc5, 0x75, 0x31, 0x2e, - 0xd4, 0x2, 0xbe, 0xa2, 0x11, 0xe5, 0x8a, 0x8a, 0xe8, 0x7d, - 0x95, 0x38, 0xa8, 0x41, 0x45, 0x74, 0x1f, 0x45, 0x14, 0x55, - 0x9a, 0x5, 0x47, 0x34, 0xa2, 0x18, 0xd9, 0xdb, 0x85, 0x51, - 0x92, 0x6a, 0x4a, 0xe6, 0x3e, 0x22, 0xeb, 0x23, 0x42, 0xf0, - 0x96, 0xa1, 0x73, 0xbb, 0x61, 0x11, 0xf0, 0xde, 0x94, 0x1, - 0xf0, 0x77, 0xfc, 0x14, 0x3f, 0xf6, 0x80, 0x7d, 0x3b, 0xc1, - 0xd7, 0x9a, 0x4c, 0x13, 0x84, 0x32, 0x12, 0xa0, 0x1, 0xec, - 0x7f, 0xd9, 0xf7, 0xaf, 0xc7, 0xc9, 0x5a, 0x5d, 0x4e, 0xe4, - 0xb7, 0x2f, 0x23, 0xb1, 0x3d, 0x7b, 0x93, 0x5f, 0x52, 0xfe, - 0xdb, 0xfe, 0x3c, 0x9b, 0x5d, 0xf1, 0x2c, 0xb6, 0xc6, 0x66, - 0x60, 0x5c, 0x9c, 0x10, 0x3f, 0xc2, 0xbc, 0x8f, 0xe0, 0x5f, - 0x81, 0x8f, 0x8b, 0xbc, 0x4f, 0xa6, 0xdb, 0xf9, 0x3e, 0x68, - 0x96, 0xe1, 0x17, 0x6f, 0xaf, 0xcc, 0x28, 0x3, 0xe8, 0x4f, - 0xd9, 0x6b, 0xf6, 0x2a, 0x9f, 0xe2, 0x85, 0xb5, 0xae, 0xa1, - 0x71, 0x6b, 0x23, 0xa1, 0x61, 0xca, 0xb8, 0x3, 0xa0, 0xff, - 00, 0x68, 0x7a, 0xd7, 0xd2, 0x5f, 0x19, 0x7f, 0x65, 0x2b, - 0xf, 0x85, 0x3e, 0xb, 0xbd, 0xb9, 0x31, 0x1d, 0xd0, 0xc2, - 0x39, 0x66, 0xe3, 0xb7, 0xfb, 0x46, 0xbe, 0xe4, 0xfd, 0x9f, - 0x3e, 0x18, 0xd8, 0x7c, 0x3d, 0xf8, 0x73, 0xa5, 0x42, 0x96, - 0xe8, 0x93, 0x98, 0x83, 0xb1, 0x5c, 0xf1, 0xf2, 0x8e, 0x3f, - 0x4a, 0xf9, 0x37, 0xfe, 0xa, 0x3d, 0xf1, 0x23, 0xfb, 0x23, - 0xc1, 0x97, 0xf6, 0xa9, 0x3e, 0x1a, 0x4e, 0x2, 0xf1, 0x8e, - 0xa3, 0xaf, 0x14, 0x1, 0xf9, 0x24, 0x90, 0xd, 0x53, 0xc7, - 0x13, 0x84, 0x19, 0x41, 0x27, 0x6, 0xbf, 0x67, 0x3f, 0xe0, - 0x9b, 0xde, 0x2, 0xfe, 0xc6, 0xf0, 0x6c, 0xba, 0x9c, 0x91, - 0xec, 0x69, 0x14, 0xed, 0xe7, 0x3d, 0xc7, 0xbd, 0x7e, 0x3d, - 0xfc, 0x18, 0xd2, 0x9f, 0xc4, 0x3e, 0x30, 0xc6, 0x3, 0xbb, - 0x48, 0xb9, 0x3f, 0x52, 0x6b, 0xfa, 00, 0xfd, 0x98, 0x7c, - 0x28, 0x9e, 0x12, 0xf8, 0x53, 0xa6, 0x44, 0x63, 0x11, 0xb3, - 0xc6, 0x18, 0x9c, 0xf5, 0xa0, 0xe, 0x37, 0xf6, 0xc5, 0xd7, - 0x56, 0xd7, 0xc2, 0x33, 0x40, 0xc7, 0x2a, 0xb0, 0xb3, 0x10, - 0x3e, 0x8d, 0x5f, 0x83, 0x7f, 0x15, 0xf5, 0x31, 0xac, 0x78, - 0xea, 0xfe, 0x45, 0x70, 0xe8, 0x25, 0x65, 0x18, 0x18, 0x3, - 0xe6, 0x35, 0xfa, 0xe3, 0xfb, 0x7f, 0x7c, 0x48, 0x8b, 0x4f, - 0xd1, 0xb5, 0x18, 0xc4, 0xcd, 0xfe, 0xad, 0x94, 0x28, 0x3, - 0x9e, 0x1a, 0xbf, 0x1a, 0xae, 0x26, 0x3a, 0x86, 0xab, 0x34, - 0xa7, 0x96, 0x92, 0x46, 0x73, 0xf8, 0x9c, 0xd0, 0x7, 0xdd, - 0xff, 00, 0xf0, 0x4d, 0x8f, 0xd, 0xbe, 0xbf, 0xe3, 0xd8, - 0x5c, 0xa9, 0x31, 0xc0, 0xc8, 0x33, 0xd8, 0x70, 0xdc, 0xf5, - 0xe6, 0xbf, 0x6a, 0x14, 00, 0xa0, 0xe, 0x95, 0xf9, 0xa3, - 0xff, 00, 0x4, 0xaa, 0xf8, 0x78, 0x6d, 0x74, 0x9b, 0x8d, - 0x5e, 0x58, 0x40, 0x62, 0xc0, 0x86, 0x24, 0xf1, 0xf7, 0xbf, - 0x33, 0x5f, 0xa5, 0xdd, 0xa8, 0x2, 0x9e, 0xaf, 0x37, 0x93, - 0x66, 0xe7, 0xda, 0xbc, 0x7, 0xc5, 0xf7, 0x66, 0xeb, 0x53, - 0x61, 0x9c, 0x85, 0x27, 0x8a, 0xf6, 0xaf, 0x16, 0xde, 0xb, - 0x7b, 0x27, 0xfa, 0x57, 0x80, 0xdf, 0xcb, 0xe7, 0xdf, 0xca, - 0xfd, 0x7e, 0x63, 0x5f, 0x9d, 0xf1, 0x3d, 0x7b, 0xf2, 0xd2, - 0x4c, 0xfc, 0xa7, 0x8c, 0xb1, 0x3a, 0xc2, 0x8a, 0x21, 0xa2, - 0x8a, 0x2b, 0xe0, 0xf, 0xcc, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x82, 0x1, 0xa2, 0x8a, - 00, 0x54, 0x95, 0xa0, 0x39, 0x5e, 0x2b, 0xb9, 0xf0, 0x47, - 0x89, 0x25, 0x8a, 0x54, 0x49, 0x1f, 0xb, 0xf4, 0xae, 0x16, - 0xa6, 0xb3, 0x9d, 0xa0, 0x9d, 0x48, 0x62, 0x6, 0x7b, 0x57, - 0x6e, 0xf, 0x11, 0x2c, 0x2d, 0x55, 0x38, 0xb3, 0xd0, 0xc0, - 0x63, 0x27, 0x82, 0xad, 0x1a, 0x91, 0x67, 0xd2, 0xf6, 0x17, - 0x49, 0x77, 0x2, 0xba, 0x9c, 0xf1, 0x56, 0x6b, 0x8c, 0xf0, - 0x26, 0xaa, 0x2f, 0x2d, 0x95, 0x1, 0xc8, 00, 0x57, 0x64, - 0x39, 0xaf, 0xda, 0xf0, 0xb5, 0xd6, 0x22, 0x8c, 0x6a, 0x2e, - 0xa7, 0xf4, 0x3e, 0xb, 0x10, 0xb1, 0x54, 0x23, 0x55, 0x75, - 0x16, 0x90, 0xd2, 0xd3, 0x58, 0xe0, 0x57, 0x59, 0xdc, 0x70, - 0x5f, 0x14, 0x2e, 0xf6, 0x69, 0x72, 0xc7, 0x9e, 0xa3, 0xa5, - 0x78, 0xc5, 0x7a, 0x37, 0xc5, 0x2d, 0x43, 0x7c, 0xc2, 0x20, - 0x7e, 0xa0, 0x57, 0x9c, 0xd7, 0xe3, 0xf9, 0xf5, 0x6f, 0x6b, - 0x8c, 0x69, 0x74, 0x3f, 0x5, 0xe2, 0x6a, 0xfe, 0xdb, 0x30, - 0x95, 0xba, 0x68, 0x14, 0x51, 0x45, 0x7c, 0xe9, 0xf2, 0x81, - 0x8a, 0x28, 0xa2, 0x90, 0x5, 0x18, 0xa2, 0x8a, 00, 0x36, - 0x8a, 0x4d, 0xa3, 0xd2, 0x96, 0x8a, 0x34, 0x16, 0x82, 0x6d, - 0x1e, 0x94, 0x6c, 0x1e, 0x94, 0xb4, 0x51, 0x64, 0x16, 0x42, - 0x6c, 0x14, 0x6c, 0x5f, 0x4a, 0x5a, 0x29, 0x59, 0x5, 0x90, - 0x86, 0x35, 0x34, 0x9e, 0x58, 0xf5, 0xa7, 0x51, 0x47, 0x2a, - 0x15, 0x90, 0xdf, 0x2c, 0x53, 0x5a, 0x2c, 0xf4, 0x26, 0xa4, - 0xa9, 0x6d, 0x13, 0xcc, 0xbb, 0x85, 0x3a, 0xe5, 0x80, 0xc5, - 0x35, 0x14, 0xda, 0x43, 0x50, 0x4e, 0x49, 0x1e, 0xb7, 0xf0, - 0xe7, 0x4e, 0xf2, 0x6d, 0x90, 0x90, 0x6b, 0xd1, 0x6b, 0x9b, - 0xf0, 0x75, 0xa7, 0x93, 0x62, 0xa4, 0x8e, 0xd5, 0xd2, 0xd7, - 0xed, 0xf9, 0x6d, 0x2f, 0x63, 0x86, 0x8c, 0x4f, 0xe8, 0xcc, - 0x9e, 0x82, 0xc3, 0xe0, 0xe1, 0x5, 0xd8, 0x28, 0xa2, 0x8a, - 0xf5, 0xf, 0x68, 0x29, 0x29, 0x7, 0xad, 0x50, 0xd5, 0x75, - 0x58, 0xb4, 0xf8, 0x19, 0x99, 0xc0, 0x6c, 0x74, 0xa8, 0x9c, - 0xe3, 0x8, 0xb9, 0x4b, 0x64, 0x67, 0x52, 0xa4, 0x69, 0xc5, - 0xca, 0x6e, 0xc9, 0x16, 0xe6, 0x99, 0x6d, 0xd4, 0xb3, 0x1c, - 0x57, 0x3d, 0xaa, 0xf8, 0xca, 0xd6, 0xce, 0x36, 0x1, 0x86, - 0xef, 0xaf, 0xff, 00, 0x5a, 0xb8, 0x6f, 0x11, 0xfc, 0x44, - 0x79, 0x19, 0xa3, 0x47, 0x6c, 0x67, 0x1c, 0xa, 0xe1, 0xaf, - 0xf5, 0x49, 0x2f, 0x98, 0xb6, 0xe3, 0xcd, 0x7c, 0x56, 0x3f, - 0x88, 0xa1, 0x4e, 0xf0, 0xa1, 0xab, 0x3f, 0x3b, 0xcc, 0xf8, - 0xaa, 0x14, 0xaf, 0xc, 0x36, 0xac, 0xed, 0x75, 0x8f, 0x1d, - 0x4a, 0xe4, 0xf9, 0x4f, 0x8a, 0xe4, 0xaf, 0x3c, 0x4f, 0x7b, - 0x70, 0x4e, 0x5e, 0xb2, 0x40, 0x3d, 0xcd, 0x2d, 0x7c, 0x2e, - 0x23, 0x30, 0xc4, 0x62, 0x1d, 0xe5, 0x26, 0x7e, 0x6f, 0x89, - 0xcd, 0x71, 0x58, 0xa7, 0x79, 0x49, 0xa2, 0xc3, 0x6a, 0x97, - 0xf, 0xf7, 0x8d, 0x42, 0xd2, 0xb4, 0x87, 0x2d, 0x4d, 0xa2, - 0xbc, 0xf7, 0x29, 0x4b, 0x76, 0x79, 0x6e, 0x53, 0x97, 0xc4, - 0xee, 0x18, 0x14, 0x9b, 0x45, 0x2d, 0x15, 0x36, 0x44, 0xd8, - 0x4d, 0xb4, 0xe4, 0x25, 0xf, 0x4, 0x8a, 0x4a, 0x28, 0xb0, - 0x6d, 0xa9, 0x76, 0xdf, 0x53, 0x6b, 0x72, 0xe, 0xe3, 0xc5, - 0x6d, 0x69, 0xfe, 0x31, 0x6b, 0x77, 0x1f, 0x35, 0x73, 0x18, - 0x6, 0x80, 00, 0x3d, 0x2b, 0xae, 0x9e, 0x26, 0xb5, 0x1f, - 0x85, 0x9d, 0xb4, 0x71, 0xb5, 0xe8, 0x3b, 0xc1, 0x9e, 0xc5, - 0xa1, 0xf8, 0xf8, 0x4c, 0x8a, 0xa5, 0x86, 0x2b, 0xb5, 0xd3, - 0xf5, 0x15, 0xbe, 0x40, 0x46, 0x2b, 0xe6, 0xfb, 0x7d, 0x46, - 0x4b, 0x56, 0x1b, 0x7b, 0x57, 0x63, 0xe1, 0xbf, 0x18, 0xcd, - 0x13, 0x28, 0x66, 0x2a, 0x3f, 0xa, 0xfb, 0x4c, 0xb7, 0x88, - 0x1b, 0x6a, 0x15, 0x99, 0xfa, 0x1e, 0x53, 0xc5, 0xf, 0x99, - 0x53, 0xc4, 0x33, 0xdb, 0x47, 0x4a, 0x5a, 0xc5, 0xd1, 0x75, - 0xa8, 0xef, 0x62, 0x5c, 0xc9, 0x92, 0x6b, 0x60, 0x73, 0xcd, - 0x7e, 0x81, 0x4e, 0xac, 0x6a, 0xc7, 0x9a, 0x27, 0xea, 0x14, - 0xaa, 0xc2, 0xb4, 0x54, 0xe0, 0xf4, 0x1d, 0x45, 0x14, 0x56, - 0xa6, 0xc1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, - 0x45, 0x14, 0x86, 0x80, 0x16, 0x8a, 0x8a, 0x59, 0x56, 0x24, - 0x2c, 0xe7, 00, 0x56, 0xe, 0xa7, 0xe2, 0xfb, 0x4b, 0x35, - 0x23, 0x7f, 0x22, 0xb0, 0xab, 0x5e, 0x9d, 0x15, 0x79, 0xbb, - 0x1c, 0xd5, 0xb1, 0x14, 0xb0, 0xea, 0xf5, 0x25, 0x63, 0xa0, - 0x67, 0x3, 0xa9, 0xc5, 0x50, 0xbe, 0xd5, 0xe2, 0xb2, 0x42, - 0x4b, 0x2, 0x45, 0x79, 0x9e, 0xad, 0xe3, 0xb6, 0x77, 0x6f, - 0x26, 0x43, 0x5c, 0x96, 0xa3, 0xe2, 0xbb, 0xcb, 0x96, 0x3f, - 0xbc, 0x62, 0x3f, 0xa, 0xf9, 0x6c, 0x57, 0x11, 0x51, 0xa5, - 0x75, 0x5, 0x76, 0x7c, 0x5e, 0x37, 0x8a, 0xb0, 0xf4, 0x13, - 0x8d, 0x35, 0x76, 0x7a, 0xec, 0xde, 0x3a, 0x86, 0x2c, 0xf4, - 0xaa, 0x13, 0xfc, 0x4a, 0x86, 0x3e, 0x32, 0x33, 0xf4, 0x35, - 0xe4, 0x7, 0x56, 0x9d, 0xc7, 0x24, 0x9a, 0x85, 0xee, 0x5d, - 0xfa, 0xe6, 0xbe, 0x6e, 0xa7, 0x12, 0x62, 0x1f, 0xc0, 0x7c, - 0x9d, 0x5e, 0x2d, 0xc4, 0xbf, 0x80, 0xf5, 0x79, 0xbe, 0x27, - 0xa1, 0x3f, 0x7c, 0xf, 0xc3, 0xff, 00, 0xad, 0x51, 0xaf, - 0xc4, 0x98, 0xcf, 0xf1, 0x8f, 0xf3, 0xf8, 0x57, 0x94, 0x75, - 0xa4, 0xdb, 0x5c, 0x8f, 0x3f, 0xc6, 0x37, 0x7b, 0x9e, 0x7b, - 0xe2, 0x7c, 0x7b, 0x77, 0xb9, 0xeb, 0xab, 0xf1, 0x1a, 0x1f, - 0xef, 0xff, 00, 0x3a, 0xb3, 0xf, 0xc4, 0x48, 0x1b, 0xab, - 0x8f, 0xd7, 0xfc, 0x2b, 0xc6, 0x76, 0xfb, 0xd2, 0x8c, 0x8e, - 0xe6, 0xaa, 0x3c, 0x43, 0x8b, 0x46, 0x91, 0xe2, 0x9c, 0x6c, - 0x5e, 0xb6, 0x3d, 0xe2, 0xd3, 0xc7, 0x36, 0x8f, 0xf7, 0x9c, - 0x67, 0xf1, 0xff, 00, 0xa, 0xd5, 0x83, 0xc4, 0xf6, 0x53, - 0x8e, 0x24, 0xc7, 0xe7, 0x5f, 0x3c, 0x45, 0x72, 0xf1, 0xff, - 00, 0x11, 0xad, 0xb, 0x6d, 0x75, 0xa0, 0xc6, 0x5d, 0x85, - 0x7a, 0x94, 0x38, 0x9a, 0xa2, 0xd2, 0x69, 0x1e, 0xce, 0x1f, - 0x8c, 0x2a, 0xad, 0x2a, 0x45, 0x1f, 0x41, 0xa6, 0xad, 0x6d, - 0x27, 0x49, 0x33, 0x56, 0x52, 0x55, 0x7e, 0x41, 0xcd, 0x78, - 0x4d, 0x9f, 0x8c, 0x4c, 0x4c, 0x33, 0x23, 0x7e, 0x55, 0xd8, - 0xe8, 0x5e, 0x3e, 0x85, 0x99, 0x55, 0x9f, 0x24, 0xfb, 0x57, - 0xd0, 0x61, 0x73, 0xda, 0x35, 0xdd, 0xa4, 0xec, 0x7d, 0x4e, - 0xb, 0x89, 0x70, 0xf8, 0x96, 0xa3, 0x36, 0x91, 0xe9, 0x35, - 0x14, 0xcf, 0xb5, 0x6a, 0xb5, 0x86, 0xa4, 0x97, 0xa8, 0x19, - 0x4f, 0x5a, 0x4b, 0xc9, 0xb1, 0x9e, 0x6b, 0xe9, 0xe3, 0x25, - 0x35, 0x74, 0x7d, 0x84, 0x27, 0x1a, 0x8b, 0x9a, 0x3b, 0x14, - 0x6f, 0x64, 0xe0, 0xf3, 0x5c, 0xee, 0xa1, 0x27, 0x5a, 0xd5, - 0xbc, 0x9f, 0xad, 0x73, 0xba, 0x84, 0xff, 00, 0x7b, 0x9a, - 0xa2, 0xcc, 0x5d, 0x4d, 0xf2, 0xd, 0x71, 0x9a, 0xae, 0xe, - 0x6b, 0xa7, 0xd4, 0x67, 0xe1, 0xb9, 0xae, 0x3b, 0x56, 0x9b, - 0x93, 0x40, 0x1c, 0x3f, 0x89, 0x63, 0x1e, 0x5c, 0x98, 0xaf, - 0x1c, 0xf1, 0x85, 0xc0, 0xb3, 0x63, 0x2a, 0x31, 0x8e, 0x64, - 0x3b, 0x91, 0xd4, 0xe0, 0xa9, 0x1d, 0x8, 0xf7, 0xaf, 0x5e, - 0xf1, 0x35, 0xc0, 0x4b, 0x69, 0x58, 0x9c, 0x60, 0x57, 0xce, - 0xdf, 0x11, 0x35, 0x8c, 0x34, 0x9f, 0x37, 0x1c, 0xff, 00, - 0x5a, 0xe4, 0xc4, 0xd5, 0x54, 0xe1, 0xa9, 0xc3, 0x8b, 0xad, - 0x1a, 0x50, 0x77, 0x3e, 0xbb, 0xfd, 0x95, 0x7f, 0x69, 0xe4, - 0xf1, 0xf7, 0xfc, 0x52, 0x7e, 0x22, 0xb8, 0x8d, 0x7c, 0x43, - 0x6e, 0xbf, 0xe8, 0xf2, 0x85, 0x23, 0xed, 0x51, 0x81, 0xce, - 0x40, 0x5d, 0xa0, 0x8e, 0xfc, 0xf3, 0x5f, 0x4f, 0x7, 0xe2, - 0xbf, 0xb, 0x67, 0xf1, 0xed, 0xf7, 0x84, 0xfc, 0x4b, 0x6b, - 0xaa, 0xe9, 0xb7, 0xf, 0x6f, 0x77, 0x6b, 0x20, 0x92, 0x39, - 0x13, 0x19, 0x1e, 0xa3, 0x9f, 0x6e, 0x3f, 0x1a, 0xfd, 0x62, - 0xfd, 0x97, 0x3e, 0x3b, 0xda, 0xfc, 0x68, 0xf8, 0x7d, 0x63, - 0x74, 0xf7, 0x46, 0x5d, 0x52, 0x34, 0xc4, 0xde, 0x66, 0xd5, - 0x67, 0xe4, 0x8c, 0xe0, 0x7d, 0xf, 0x1e, 0x83, 0x3d, 0xeb, - 0xc, 0x1e, 0x2a, 0x35, 0xd3, 0x8f, 0x54, 0x73, 0x60, 0x31, - 0x91, 0xc4, 0x27, 0x1b, 0xea, 0x8f, 0x71, 0xd, 0x4f, 0x56, - 0xe6, 0xa0, 0x57, 0xcd, 0x38, 0x35, 0x7a, 0x47, 0xae, 0x58, - 0xd, 0xcd, 0x3b, 0x75, 0x42, 0x8d, 0x4f, 0xdd, 0x40, 0x12, - 0x75, 0xa7, 0x8c, 0x54, 0x60, 0x80, 0x29, 0xca, 0x45, 00, - 0x3a, 0x8a, 0x4c, 0x8a, 0x5a, 00, 0x75, 0x2d, 0x34, 0x1c, - 0x52, 0xe7, 0x34, 00, 0xb4, 0x51, 0x45, 00, 0x14, 0x51, - 0x45, 00, 0x14, 0xd2, 0x69, 0xd4, 0xd3, 0xd6, 0x80, 0x12, - 0x90, 0x9a, 0x5a, 0x6b, 0x50, 0x2, 0x66, 0x98, 0x7a, 0x52, - 0x93, 0x83, 0x4d, 0x2c, 0x28, 0x1, 0x8c, 0x6a, 0x9, 0x1a, - 0xa4, 0x73, 0xc5, 0x57, 0x91, 0xa8, 0x2, 0x37, 0x35, 0x56, - 0x56, 0xa9, 0x9d, 0xb8, 0xaa, 0x93, 0x3f, 0x5a, 00, 0xe3, - 0x3e, 0x2f, 0x78, 0x9a, 0x3f, 0xa, 0x7c, 0x38, 0xf1, 0x16, - 0xa4, 0xed, 0xb4, 0xc7, 0x67, 0x22, 0x21, 0xc8, 0x18, 0x76, - 0x52, 0xab, 0xd4, 0x8e, 0xe4, 0x57, 0xce, 0x9f, 0xb1, 0xcf, - 0x87, 0xde, 0xe2, 0xc6, 0xfb, 0x59, 0x9d, 0x1, 0x96, 0xe6, - 0x5c, 0xee, 0xee, 0x4f, 0xcc, 0x4f, 0xf3, 0xae, 0x8b, 0xf6, - 0xdf, 0xf1, 0x7f, 0xd8, 0x3c, 0xb, 0xa7, 0xf8, 0x7e, 0x17, - 0xc4, 0xda, 0x95, 0xd2, 0xb4, 0xab, 0x9c, 0x66, 0x15, 0xc, - 0x73, 0x8c, 0xff, 00, 0x78, 0x2f, 0x51, 0x5d, 0x8f, 0xec, - 0xbd, 0xe1, 0xe5, 0xd3, 0x3e, 0x1a, 0x69, 0xd, 0xb1, 0x91, - 0xe5, 0x42, 0xec, 0x8, 0xc1, 0xce, 0xe2, 0x2b, 0xe5, 0x6a, - 0xc9, 0x62, 0xb3, 0x78, 0x53, 0x5b, 0x53, 0x8d, 0xfe, 0x6c, - 0xf8, 0x9a, 0xd2, 0x58, 0xcc, 0xf6, 0x14, 0xba, 0x52, 0x8d, - 0xfe, 0x6c, 0xf7, 0xad, 0x26, 0x1d, 0xa8, 0xbc, 0x56, 0xd8, - 0xe0, 0xa, 0xa3, 0x61, 0x16, 0xd5, 0x2, 0xaf, 0xd7, 0xd5, - 0x1f, 0x6c, 0x14, 0x51, 0x45, 00, 0x15, 0xe2, 0x1f, 0xb5, - 0x4f, 0x89, 0x7f, 0xb1, 0x3c, 0x9, 0x3c, 0x6a, 0xec, 0xac, - 0xc8, 0x58, 0xe3, 0xea, 0x2b, 0xdb, 0xeb, 0xe6, 0xf, 0xdb, - 0x62, 0x46, 0xb2, 0xf0, 0x6, 0xa3, 0x7d, 0x23, 0xf9, 0x69, - 0x1c, 0x58, 0x42, 0x7a, 0x13, 0xc5, 00, 0x7e, 0x21, 0xfc, - 0x7b, 0xd7, 0xce, 0xbb, 0xe3, 0xab, 0x9f, 0x9d, 0x9d, 0x55, - 0xba, 0xb1, 0xf5, 0xaf, 0x7d, 0xfd, 0x82, 0xbc, 0x37, 0x1e, - 0xbb, 0xf1, 0x2b, 0x44, 0xb7, 0x28, 0x19, 0x56, 0x78, 0xc9, - 0xff, 00, 0xbe, 0xd7, 0xf4, 0xaf, 0x94, 0x7c, 0x5d, 0x7a, - 0xfa, 0x87, 0x88, 0x6f, 0x2e, 0x9b, 0xab, 0xc8, 0x6b, 0xdb, - 0x3f, 0x65, 0x4f, 0x8a, 0xef, 0xf0, 0xeb, 0xc5, 0x10, 0x5d, - 0xf9, 0xd0, 0xc6, 0xe6, 0x55, 0xe6, 0x43, 0x82, 0x6, 0x47, - 0xb8, 0xf4, 0xa0, 0xf, 0xe8, 0x22, 0xe1, 0xe3, 0xd2, 0xbc, - 0x3a, 0x15, 0x70, 0xa9, 0x14, 0x21, 0x46, 0xd3, 0xd3, 0x8a, - 0xfc, 0x6f, 0xff, 00, 0x82, 0x99, 0x7c, 0x40, 0x37, 0xfa, - 0xcb, 0x69, 0x49, 0x31, 0x60, 0x64, 0x19, 0x40, 0x78, 0xe3, - 0x7, 0x9e, 0x7d, 0xab, 0xee, 0x1b, 0x3f, 0xdb, 0xf, 0xc3, - 0x77, 0x5e, 0x3, 0x48, 0xe6, 0xd4, 0xa0, 0x7b, 0x9f, 0x2b, - 0x73, 0xec, 0x91, 0x4f, 0x6f, 0xf7, 0xeb, 0xf2, 0x27, 0xf6, - 0xa9, 0xf8, 0x8f, 0xff, 00, 0xb, 0x13, 0xe2, 0x5d, 0xe4, - 0xf1, 0x48, 0xaf, 0x2, 0xb9, 0x20, 0xa9, 0xe0, 0x9c, 0xfd, - 0x4e, 0x68, 0x3, 0xb1, 0xfd, 0x88, 0x3c, 0x14, 0x7c, 0x4f, - 0xf1, 0x6, 0x15, 0x30, 0x89, 00, 0x74, 0x3c, 0x8e, 0x9f, - 0x7b, 0xda, 0xbf, 0x77, 0x2e, 0xee, 0xad, 0xfc, 0xd, 0xf0, - 0xec, 0xc8, 0xe4, 0x45, 0x1d, 0xad, 0xa7, 0x7e, 00, 0x21, - 0x7f, 0xa, 0xfc, 0x83, 0xff, 00, 0x82, 0x76, 0x6a, 0x5e, - 0x1b, 0xf0, 0xa7, 0x88, 0x6e, 0x6f, 0xf5, 0x9b, 0xa8, 0xed, - 0xd2, 0x25, 0x8d, 0x81, 0x91, 0xd4, 0x2, 0x7e, 0x7f, 0x5f, - 0xc2, 0xbd, 0x53, 0xf6, 0xbd, 0xfd, 0xbe, 0xef, 0x6f, 0x74, - 0xed, 0x43, 0x43, 0xd1, 0x2e, 0x6d, 0x24, 0xb3, 0x70, 0x50, - 0xb0, 0x2d, 0x92, 0x31, 0x8f, 0xe1, 0x92, 0x80, 0x3c, 0x7, - 0xf6, 0xde, 0xf8, 0xe0, 0x9e, 0x2f, 0xd5, 0xaf, 0xed, 0x2d, - 0xae, 0x9a, 0x44, 0x67, 0x28, 0x70, 0x41, 0xcf, 0x27, 0xdc, - 0xfa, 0xd7, 0xc9, 0x5e, 0x13, 0xd2, 0x65, 0xd6, 0x35, 0x78, - 0x21, 0x8d, 0x59, 0x8c, 0x8e, 0x13, 0xa, 0x33, 0x9c, 0x9a, - 0xaf, 0xae, 0x6b, 0xb7, 0x3e, 0x22, 0xbf, 0x92, 0xe2, 0xe0, - 0xe6, 0x49, 0x18, 0xb1, 0xe4, 0xf2, 0x49, 0xfa, 0xd7, 0xd6, - 0x7f, 0xb1, 0x97, 0xec, 0xf6, 0xde, 0x36, 0xf1, 0xe, 0x95, - 0x75, 0x71, 0x6d, 0x31, 0x42, 0xca, 0xf9, 0x1c, 0xe, 0xa3, - 0xfd, 0x9a, 00, 0xfd, 0x4a, 0xfd, 0x85, 0xfe, 0x1e, 0x8f, - 0x5, 0xfc, 0x24, 0xb3, 0x66, 0x81, 0x62, 0x79, 0x80, 0x6e, - 0x6, 0x3d, 0x7d, 0x87, 0xad, 0x7d, 0x29, 0x59, 0x1e, 0x10, - 0xd0, 0x61, 0xf0, 0xcf, 0x86, 0xec, 0x34, 0xdb, 0x75, 0xdb, - 0x1c, 0x11, 0x5, 0x3, 0xf9, 0xd6, 0xb3, 0x36, 0xd0, 0x4d, - 0x26, 0x7, 0x1, 0xf1, 0x26, 0xfc, 0x41, 0x6d, 0x22, 0xe7, - 0xb5, 0x78, 0xd8, 0x39, 0xc9, 0xf5, 0x39, 0xae, 0xf3, 0xe2, - 0x86, 0xa6, 0x65, 0xbd, 0x78, 0x81, 0x18, 0x27, 0x1c, 0x57, - 0x6, 0x6, 00, 0xaf, 0xc7, 0x73, 0xca, 0xfe, 0xdb, 0x18, - 0xd2, 0xe8, 0x7e, 0x5, 0xc4, 0x78, 0x8f, 0xac, 0x63, 0xe4, - 0x96, 0xd1, 0xd0, 0x28, 0xa2, 0x8a, 0xf9, 0xf3, 0xe5, 0xc2, - 0x8a, 0x28, 0xa6, 0x1, 0xf8, 0x66, 0x93, 0x77, 0xb1, 0xae, - 0x9f, 0x44, 0xf0, 0xa4, 0xda, 0x94, 0x4a, 0xea, 0x8d, 0x83, - 0xed, 0x5b, 0x7, 0xe1, 0xdd, 0xc7, 0xf7, 0x1b, 0xfc, 0xfe, - 0x15, 0xe9, 0xd3, 0xcb, 0x31, 0x35, 0x63, 0xcf, 0x18, 0xe8, - 0x7b, 0x34, 0x72, 0x8c, 0x5d, 0x78, 0x29, 0xc2, 0x1a, 0x1c, - 0x6, 0xef, 0x63, 0x46, 0xea, 0xef, 0x1b, 0xe1, 0xfd, 0xc0, - 0x1f, 0xea, 0x98, 0xfe, 0x1f, 0xfd, 0x6a, 0xcf, 0xbb, 0xf0, - 0x45, 0xdc, 0x59, 0xc4, 0x27, 0xf2, 0x3f, 0xe1, 0x44, 0xf2, - 0xcc, 0x54, 0x15, 0xdc, 0x42, 0x79, 0x36, 0x36, 0xa, 0xee, - 0xf, 0xee, 0x39, 0x4a, 0x2b, 0x4a, 0xe7, 0xc3, 0xd7, 0xd0, - 0x13, 0xfb, 0x9f, 0xe7, 0xfe, 0x15, 0x42, 0x4b, 0x79, 0x60, - 0x38, 0x91, 0x76, 0xd7, 0x4, 0xe9, 0x4e, 0x9f, 0xc7, 0x1b, - 0x1e, 0x5d, 0x4a, 0x35, 0x29, 0x69, 0x38, 0xb4, 0x32, 0x8a, - 0x28, 0xac, 0x8c, 0x82, 0x8a, 0x28, 0xa0, 0x2, 0x90, 0xf1, - 0x83, 0x4b, 0x41, 0xa1, 0x89, 0xec, 0x7a, 0x37, 0xc3, 0x9d, - 0x44, 0xc6, 0xc2, 0x31, 0x9c, 0x9a, 0xf5, 0xd4, 0x3f, 0x2e, - 0x7d, 0xab, 0xc3, 0xbe, 0x1d, 0x3e, 0xeb, 0xf0, 0xc7, 0xa0, - 0x38, 0xaf, 0x6f, 0x85, 0xb7, 0xc4, 0xa7, 0xd4, 0x57, 0xeb, - 0x3c, 0x3d, 0x37, 0x3c, 0x2e, 0xa7, 0xee, 0x3c, 0x2b, 0x55, - 0xd4, 0xc1, 0x59, 0xf4, 0x25, 0xa8, 0x6e, 0xe4, 0x10, 0xc0, - 0xec, 0x7a, 00, 0x6a, 0x45, 0x35, 0x8f, 0xe2, 0xab, 0xef, - 0xb1, 0xe9, 0x53, 0x36, 0x40, 0x3b, 0x4f, 0x5f, 0xa5, 0x7d, - 0x25, 0x69, 0xaa, 0x74, 0xe5, 0x37, 0xd0, 0xfa, 0xdc, 0x45, - 0x45, 0x4a, 0x94, 0xa6, 0xfa, 0x23, 0xc5, 0xfc, 0x73, 0x7b, - 0xf6, 0xad, 0x62, 0x4c, 0x1e, 0x7, 0xf8, 0xd7, 0x37, 0x56, - 0x35, 0x2b, 0xa3, 0x73, 0x7b, 0x2c, 0x84, 0xe7, 0x2c, 0x6a, - 0xb6, 0xe1, 0xeb, 0x5f, 0x85, 0x62, 0x6a, 0xfb, 0x6a, 0xd2, - 0x9f, 0x76, 0x7f, 0x36, 0x63, 0x2b, 0x7b, 0x7c, 0x44, 0xea, - 0x3e, 0xac, 0x5a, 0x28, 0xdc, 0x28, 0xc8, 0xae, 0x7b, 0xa3, - 0x92, 0xe8, 0x28, 0xa2, 0x8a, 0x2e, 0x17, 0xa, 0x28, 0xa2, - 0x81, 0x85, 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, - 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, 0x5f, 0xf0, - 0xfc, 0x1f, 0x69, 0xd6, 0x6d, 0x97, 0x1d, 0x18, 0x55, 0x3, - 0xd2, 0xba, 0x7f, 0x87, 0xb6, 0x5f, 0x69, 0xd6, 0x15, 0x8e, - 0x4e, 0x8, 0xae, 0xbc, 0x24, 0x3d, 0xae, 0x22, 0x10, 0x5d, - 0xce, 0xec, 0xd, 0x2f, 0x6f, 0x8a, 0xa7, 0x5, 0xdd, 0x1e, - 0xdd, 0xa2, 0x42, 0x21, 0xb3, 0x51, 0x8c, 0x71, 0x5a, 0x35, - 0xd, 0xbc, 0x7e, 0x54, 0x48, 0xa2, 0xa6, 0xaf, 0xdd, 0x29, - 0xc7, 0x92, 0x2a, 0x28, 0xfe, 0x92, 0xa5, 0x1e, 0x48, 0x28, - 0x89, 0x46, 0x68, 0x6a, 0xe7, 0x7c, 0x49, 0xe2, 0x88, 0xb4, - 0x98, 0x5c, 0x2b, 0xa9, 0x71, 0x51, 0x5a, 0xb4, 0x28, 0x41, - 0xce, 0xa3, 0xb2, 0x22, 0xbd, 0x7a, 0x78, 0x68, 0x3a, 0x95, - 0x1d, 0x92, 0x2d, 0xeb, 0x1a, 0xf5, 0xbe, 0x95, 0x3, 0x33, - 0x38, 0x7, 0x1e, 0xa2, 0xbc, 0x7b, 0xc5, 0xbe, 0x2e, 0x9b, - 0x50, 0xb9, 0x22, 0x19, 0x4e, 0xca, 0xce, 0xd7, 0xfc, 0x57, - 0x73, 0xac, 0xb3, 0x7, 0x23, 0x67, 0xb7, 0xff, 00, 0xae, - 0xb0, 0xc7, 0xbf, 0x5a, 0xfc, 0xbf, 0x35, 0xce, 0xa7, 0x8b, - 0x7e, 0xca, 0x96, 0x91, 0x3f, 0x19, 0xce, 0xf8, 0x86, 0x78, - 0xe6, 0xe9, 0x50, 0x76, 0x80, 0xac, 0xed, 0x21, 0xcb, 0x9c, - 0x9a, 0x4a, 0x28, 0xaf, 0x93, 0x3e, 0x23, 0xcd, 0x85, 0x14, - 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, - 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0x83, 0x2, - 0x95, 0x25, 0x78, 0xdb, 0xe4, 0x6c, 0x52, 0x51, 0xd6, 0x8f, - 0x41, 0xea, 0xb5, 0x47, 0x5d, 0xe1, 0x6f, 0x11, 0xc9, 0x6f, - 0x32, 0x9, 0x25, 0x38, 0xcf, 0xad, 0x7b, 0x36, 0x8f, 0xaa, - 0x47, 0xa8, 0x5b, 0x29, 0x43, 0x92, 0x7, 0x35, 0xf3, 0x5a, - 0x37, 0x94, 0xe1, 0x87, 0x5a, 0xf4, 0x2f, 0x2, 0x78, 0xa6, - 0x58, 0xa7, 0x58, 0x49, 0x1, 0x3d, 0xeb, 0xed, 0x32, 0x3c, - 0xd5, 0xd2, 0x9a, 0xa3, 0x51, 0xe8, 0xcf, 0xd0, 0xb8, 0x73, - 0x3b, 0x74, 0x2a, 0x2a, 0x15, 0x9e, 0x8c, 0xf6, 0x3a, 0x5a, - 0x82, 0xde, 0x75, 0xb8, 0x8c, 0x30, 0x20, 0xfb, 0x8a, 0x98, - 0x57, 0xe9, 0xc9, 0xa6, 0xae, 0x8f, 0xd8, 0x93, 0x4d, 0x5d, - 0xb, 0x45, 0x14, 0x53, 0x18, 0x51, 0x45, 0x14, 00, 0x99, - 0xac, 0xfd, 0x53, 0x56, 0x87, 0x4f, 0x88, 0xb3, 0x38, 0x6, - 0xb3, 0x7c, 0x4d, 0xe2, 0x78, 0xb4, 0x68, 0x1f, 0xe6, 0x50, - 0xfe, 0xe6, 0xbc, 0x83, 0xc4, 0x1e, 0x31, 0xba, 0xd4, 0x65, - 0x3b, 0x1c, 0x14, 0xf6, 0xff, 00, 0xf5, 0xd7, 0xce, 0x66, - 0x79, 0xc5, 0x2c, 0xa, 0xe5, 0x5a, 0xc8, 0xf9, 0x3c, 0xdf, - 0x3e, 0xa1, 0x97, 0x45, 0xc1, 0x6b, 0x23, 0xa8, 0xf1, 0x17, - 0xc4, 0x5c, 0x97, 0x8d, 0x19, 0xb0, 0x38, 0xe3, 0xff, 00, - 0xd7, 0x5c, 0x1e, 0xa1, 0xac, 0x4d, 0x7a, 0xe5, 0xbc, 0xc6, - 0xe7, 0xde, 0xa8, 0x33, 0xb4, 0xa4, 0x97, 0xea, 0x69, 0x31, - 0x8a, 0xfc, 0xc7, 0x17, 0x98, 0xd7, 0xc5, 0xc9, 0xb9, 0xbd, - 0xf, 0xc7, 0x71, 0xb9, 0xae, 0x27, 0x1d, 0x2b, 0xd4, 0x7a, - 0x9, 0xf3, 0x93, 0xcb, 0x13, 0xf8, 0xd2, 0xe3, 0x34, 0x51, - 0x5e, 0x69, 0xe3, 0xd8, 0x30, 0x28, 0xa2, 0x8a, 0x6, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x85, 0x73, - 0x4b, 0x45, 0x16, 0x15, 0x86, 0xf9, 0x62, 0xad, 0xe9, 0xe, - 0xc6, 0xf9, 0x15, 0x7f, 0x4a, 0xac, 0x6b, 0x7f, 0xc1, 0x1a, - 0x60, 0xbc, 0xd4, 0x37, 0x36, 0x48, 0x18, 0xae, 0x8c, 0x35, - 0x37, 0x56, 0xb4, 0x61, 0x1e, 0xe7, 0x56, 0x12, 0x94, 0xab, - 0x57, 0x84, 0x21, 0xdc, 0xf5, 0xbf, 0xa, 0xee, 0x5b, 0x65, - 0x27, 0x23, 0x8e, 0xf5, 0x6e, 0xf6, 0x72, 0x33, 0xcd, 0x4d, - 0xa7, 0xdb, 0x8b, 0x6b, 0x5e, 0x6, 0x38, 0xac, 0xfb, 0xe9, - 0x39, 0x3f, 0x5a, 0xfd, 0xc3, 0xb, 0x4d, 0xd3, 0xa4, 0xa2, - 0xcf, 0xe8, 0xec, 0x15, 0x27, 0x4a, 0x84, 0x62, 0xcc, 0xcb, - 0xdb, 0xa3, 0xcf, 0x35, 0xce, 0x6a, 0x17, 0x7d, 0x6b, 0x5e, - 0xf9, 0xf8, 0x6a, 0xe5, 0xb5, 0x39, 0x71, 0x9e, 0x6b, 0xac, - 0xee, 0x33, 0x35, 0xb, 0xb1, 0x86, 0xe4, 0xd7, 0x23, 0xaa, - 0x5d, 0x2f, 0x3c, 0xd6, 0xb6, 0xa9, 0x39, 0x50, 0xd8, 0xae, - 0x33, 0x57, 0xbb, 0x3c, 0xf4, 0xa0, 0xe, 0x63, 0xc6, 0xd7, - 0xa2, 0x1d, 0x36, 0x63, 0xbb, 0x92, 0x3d, 0x6b, 0xe5, 0x8f, - 0x89, 0x3a, 0xc1, 0x6, 0x41, 0xbc, 0xf4, 0xff, 00, 0x1a, - 0xf7, 0x7f, 0x88, 0xfa, 0xc3, 0x43, 0x63, 0x28, 0xc8, 0xe9, - 0x5f, 0x28, 0xf8, 0xf3, 0x57, 0x37, 0x17, 0x6c, 0xa0, 0x8f, - 0xf3, 0x9a, 0xf9, 0x7c, 0xde, 0xb5, 0xad, 0x14, 0x7c, 0x66, - 0x79, 0x5f, 0x97, 0xdd, 0x47, 0x9e, 0xeb, 0x53, 0x19, 0x64, - 0x76, 0x63, 0x92, 0x6b, 0xd9, 0x3f, 0x63, 0x3f, 0x8e, 0x57, - 0x3f, 0xd, 0x3e, 0x21, 0x26, 0x9a, 0xd7, 0x4d, 0xc, 0x17, - 0x52, 0x6, 0x81, 0xb, 0x62, 0x3d, 0xc0, 0x1c, 0xa9, 0xf9, - 0x86, 0x77, 0x70, 0x31, 0x5e, 0x25, 0xa9, 0xcb, 0x92, 0x6b, - 0x8f, 0xd4, 0x2f, 0x65, 0xb0, 0xba, 0x4b, 0x9b, 0x79, 0x1a, - 0x39, 0xa3, 0x6c, 0xa3, 0x21, 0xc1, 0x7, 0xea, 0x2b, 0xcf, - 0xcb, 0xa6, 0xe1, 0x35, 0x24, 0x79, 0x59, 0x4c, 0xdd, 0x3a, - 0x8a, 0x47, 0xf4, 0x51, 0xa0, 0xeb, 0x96, 0xfe, 0x20, 0xd2, - 0x2d, 0x75, 0xb, 0x57, 0xf, 0x4, 0xe8, 0x19, 0x79, 0x7, - 0x1e, 0xdd, 0x6b, 0x4d, 0x5f, 0x38, 0xaf, 0x92, 0xbf, 0x61, - 0x1f, 0x8d, 0x2d, 0xf1, 0x23, 0xc0, 0x16, 0xb1, 0x4f, 0x22, - 0x6f, 0x78, 0x7c, 0xcc, 0x2f, 0x18, 0x94, 0x1c, 0x48, 0xa0, - 0x6e, 0x3c, 0x64, 0x8f, 0xd6, 0xbe, 0xae, 0x8d, 0xeb, 0xee, - 0x13, 0xb9, 0xfa, 0x42, 0x77, 0x57, 0x2e, 0x2b, 0x75, 0xa9, - 0x14, 0xf0, 0x2a, 0xb2, 0xbf, 0xbd, 0x4a, 0xae, 0x4d, 00, - 0x4f, 0x9a, 0x72, 0x9a, 0x84, 0x31, 0x35, 0x22, 0x9f, 0x4a, - 00, 0x96, 0x9c, 0xe, 0x69, 0x82, 0x97, 0x38, 0xa0, 0x7, - 0x52, 0x83, 0x8a, 0x4a, 0x28, 0x1, 0xc3, 0x9a, 0x5a, 0x6e, - 0x69, 0xd4, 00, 0x51, 0x45, 0x14, 00, 0x87, 0xa5, 0x36, - 0x9c, 0x4e, 0x29, 0xb4, 00, 0x53, 0x18, 0xd3, 0xcf, 0x15, - 0x1b, 0x50, 0x3, 0x18, 0xd4, 0x6c, 0x69, 0xe7, 0xbd, 0x46, - 0xdd, 0x28, 0x1, 0x8f, 0xd2, 0xab, 0x48, 0x6a, 0x77, 0x35, - 0x5a, 0x53, 0x40, 0x10, 0x48, 0x70, 0xd, 0x53, 0x95, 0xaa, - 0xc4, 0xcd, 0xc5, 0x66, 0xdf, 0xdc, 0x8b, 0x5b, 0x69, 0xa6, - 0x6e, 0x56, 0x24, 0x67, 0x38, 0xf4, 0x3, 0x34, 0x6d, 0xab, - 0x7, 0xa1, 0xf0, 0xff, 00, 0xed, 0x67, 0xac, 0xb7, 0x8a, - 0xbe, 0x35, 0x58, 0x69, 0x31, 0x4d, 0xe7, 0x47, 0x61, 0xa, - 0xc1, 0xb1, 0xf, 0xa, 0xcc, 0xd9, 0x20, 0xfa, 0x9c, 0xe6, - 0xbe, 0xc4, 0xf8, 0x4b, 0xa2, 0x8d, 0x23, 0xc2, 0x5a, 0x65, - 0xb2, 0xa9, 0x51, 0x1c, 0x40, 0x60, 0x9f, 0x72, 0x6b, 0xe1, - 0x6f, 0x4, 0x8f, 0xf8, 0x59, 0x5f, 0x1f, 0x35, 0x3d, 0x55, - 0x23, 0xcd, 0xbd, 0xce, 0xa5, 0x3d, 0xca, 0x2b, 0x1f, 0xba, - 0x86, 0x46, 0x2a, 0x3f, 0x22, 0x2b, 0xf4, 0x4b, 0xc2, 0xf6, - 0xc2, 0x1b, 0x8, 0x54, 0xc, 0x6d, 0x5c, 0x57, 0xc6, 0x64, - 0x9f, 0xed, 0x18, 0xac, 0x46, 0x2d, 0xf5, 0x76, 0x5f, 0x23, - 0xe0, 0x38, 0x77, 0xfd, 0xab, 0x19, 0x8a, 0xc7, 0x3f, 0xb4, - 0xec, 0xbd, 0x11, 0xd3, 0x5a, 0xa6, 0xd5, 0xa9, 0xe9, 0xb1, - 0x8c, 0x20, 0xa7, 0x57, 0xd9, 0x9f, 0x7e, 0x14, 0x51, 0x45, - 00, 0x15, 0xf2, 0xd7, 0xed, 0xed, 0x1c, 0xf7, 0xbf, 0xc, - 0xe5, 0xb3, 0x82, 0x32, 0xc6, 0x44, 0x39, 0x20, 0x67, 0xb8, - 0xaf, 0xa9, 0x6b, 0xcc, 0xbe, 0x3c, 0xf8, 0x56, 0xdf, 0x5f, - 0xf0, 0x4d, 0xfb, 0x3c, 0x7b, 0xe6, 0x11, 0xe1, 0x48, 0x27, - 0x23, 0xa5, 00, 0x7f, 0x39, 0x3e, 0x3e, 0xd3, 0x8e, 0x99, - 0xaf, 0xdc, 0x5b, 0xec, 0x29, 0xb0, 0xf2, 0xf, 0x5a, 0xc4, - 0xb0, 0xbd, 0x92, 0xce, 0x75, 0x75, 0x90, 0xa6, 0x3d, 0xd, - 0x7b, 0x17, 0xed, 0x19, 0xe0, 0xb, 0xef, 0xe, 0x78, 0xb2, - 0xf6, 0x4b, 0x88, 0x84, 0x42, 0x49, 0x49, 0x55, 0xdc, 0x9, - 0x2, 0xbc, 0x51, 0x97, 0x69, 0xc1, 0xa0, 0xf, 0x42, 0xb6, - 0xf8, 0xa1, 0x7b, 0x6d, 0xa7, 0xbc, 0x2, 0xf6, 0x43, 0x95, - 0xdb, 0x8d, 0xcd, 0x5c, 0x35, 0xd5, 0xeb, 0xde, 0x5e, 0x3c, - 0xf2, 0xbe, 0xe6, 0x63, 0x9c, 0xd5, 0x5a, 0x28, 0x3, 0xb4, - 0xd0, 0x7c, 0x7b, 0x7d, 0xe1, 0xfb, 0x69, 0x16, 0xce, 0xf1, - 0xe0, 0x2e, 00, 0x3b, 0x9, 0x19, 0xae, 0x73, 0x54, 0xd7, - 0xef, 0x75, 0x79, 0x99, 0xee, 0xae, 0x24, 0x9b, 0x71, 0xc9, - 0x2c, 0x6b, 0x3a, 0xaf, 0x69, 0x7a, 0x2d, 0xde, 0xb1, 0x32, - 0xc5, 0x6b, 0x9, 0x91, 0xd8, 0xe0, 0x1, 0x81, 0xfc, 0xe8, - 0x3, 0x5f, 0xc0, 0xbe, 0x12, 0xb9, 0xf1, 0x56, 0xbf, 0x65, - 0x69, 0xc, 0x6c, 0xfe, 0x64, 0xca, 0xbf, 0x2e, 0x3d, 0x6b, - 0xf7, 0x27, 0xf6, 0x33, 0xf8, 0x3, 0x17, 0x82, 0xbc, 0x2d, - 0xa5, 0x5e, 0x5c, 0x5a, 0x3a, 0x37, 0x92, 0xad, 0x97, 0x23, - 0x9f, 0x94, 0x57, 0xc9, 0x5f, 0xb0, 0xaf, 0xec, 0x85, 0x2e, - 0xaa, 0x96, 0x1a, 0xee, 0xa5, 0x68, 0xb9, 0x49, 0x15, 0x81, - 0x66, 0xc6, 0x3e, 0xe9, 0xec, 0xd5, 0xfa, 0xc5, 0xa3, 0xe9, - 0xb1, 0x69, 0x1a, 0x75, 0xbd, 0xa4, 0x4a, 0x15, 0x21, 0x45, - 0x41, 0xf8, 0xc, 0x50, 0x5, 0xc0, 0x30, 0x2a, 0xbd, 0xec, - 0xbe, 0x4d, 0xbb, 0x9e, 0x9c, 0x55, 0x9a, 0xc7, 0xf1, 0x1d, - 0xc8, 0x86, 0xc1, 0xfe, 0x95, 0x8d, 0x59, 0x72, 0x41, 0xc8, - 0xe7, 0xc4, 0x4f, 0xd9, 0xd2, 0x94, 0xfb, 0x1e, 0x1d, 0xe3, - 0x6b, 0xbf, 0xb4, 0xeb, 0xb2, 0x8c, 0xe4, 0x29, 0xac, 0x2a, - 0xb9, 0xac, 0xc9, 0xe7, 0x6a, 0xb7, 0xf, 0xfe, 0xd5, 0x53, - 0xaf, 0xc2, 0xf1, 0x33, 0xf6, 0x95, 0xa7, 0x2e, 0xec, 0xfe, - 0x6c, 0xc5, 0xd4, 0x75, 0x71, 0x15, 0x26, 0xfa, 0xb6, 0x14, - 0x51, 0x45, 0x73, 0x1c, 0xa1, 0x52, 0x5b, 0xa7, 0x9b, 0x71, - 0x1a, 0x77, 0x66, 0x2, 0xa3, 0xab, 0xda, 0x14, 0x26, 0xe3, - 0x59, 0xb6, 0x41, 0xfd, 0xf0, 0x6b, 0x4a, 0x71, 0xe7, 0x9c, - 0x63, 0xdd, 0x9a, 0xd2, 0x8f, 0x3d, 0x48, 0xc7, 0xbb, 0x3d, - 0xb7, 0xc1, 0x5a, 0x78, 0x82, 0xc2, 0x3c, 0xaf, 0xf0, 0x8f, - 0xe5, 0x5d, 0x46, 0xd0, 0x47, 0x41, 0x54, 0x34, 0x48, 0x4, - 0x36, 0x68, 0x3d, 0xab, 0x44, 0xc, 0x57, 0xee, 0x78, 0x4a, - 0x6a, 0x95, 0x18, 0xc4, 0xfe, 0x91, 0xc0, 0xd1, 0x54, 0x70, - 0xf0, 0x82, 0xec, 0x33, 0xca, 0x53, 0xfc, 0x22, 0xa3, 0x92, - 0xd2, 0x29, 0x7, 0x28, 0x3f, 0x2a, 0x9e, 0x81, 0x5d, 0x6e, - 0x29, 0xee, 0x76, 0x38, 0xa7, 0xba, 0x30, 0x35, 0x1f, 0xd, - 0xc5, 0x70, 0xe, 0xd4, 0x15, 0xe6, 0xbe, 0x34, 0xf0, 0xa3, - 0x5a, 0x61, 0xc2, 0x90, 0xbd, 0x4d, 0x7b, 0x49, 0x15, 0xcd, - 0x78, 0xd2, 0xc3, 0xed, 0x7a, 0x79, 0x38, 0xe4, 0x3, 0x5f, - 0x3d, 0x9a, 0x65, 0xd4, 0xab, 0x51, 0x94, 0x92, 0xd4, 0xf9, - 0x8c, 0xe7, 0x29, 0xa3, 0x88, 0xc3, 0x4e, 0x49, 0x6a, 0x8f, - 00, 0x2a, 0x55, 0x88, 0xf4, 0xa4, 0xab, 0x9a, 0xa4, 0x22, - 0xde, 0xed, 0x90, 0x76, 0xeb, 0x54, 0xeb, 0xf2, 0x19, 0x47, - 0x92, 0x4e, 0x3d, 0x8f, 0xc1, 0xa5, 0xe, 0x49, 0xb8, 0xf6, - 0xa, 0x28, 0xa2, 0xa0, 0x90, 0xa4, 0x6e, 0x94, 0xb4, 0x87, - 0x92, 0x7, 0xa9, 0xa1, 0x89, 0x9d, 0xb7, 0xc3, 0xe8, 0x8, - 0x99, 0x70, 0x3a, 0x9a, 0xf6, 0xd8, 0x86, 0xd8, 0xd4, 0x77, - 0xc5, 0x79, 0x5f, 0xc3, 0x8b, 0x2d, 0xd2, 0xa9, 0xc7, 0x3, - 0x15, 0xea, 0xc3, 0x8a, 0xfd, 0x6f, 0x87, 0xe9, 0x72, 0x61, - 0x6e, 0xfa, 0x9f, 0xba, 0x70, 0xbd, 0x1f, 0x67, 0x82, 0xbb, - 0xea, 0x2e, 0x39, 0xac, 0x4f, 0x13, 0xe9, 0xa7, 0x50, 0xb1, - 0x68, 0xc0, 0xc9, 0x39, 0xad, 0xca, 0x6b, 0xa0, 0x71, 0xcf, - 0x35, 0xf4, 0x55, 0x69, 0xaa, 0xb0, 0x70, 0x7d, 0x4f, 0xab, - 0xad, 0x46, 0x35, 0xe9, 0xba, 0x72, 0xd9, 0x9e, 0x3f, 0x27, - 0xc3, 0x80, 0xcc, 0xc7, 0xcb, 0x6e, 0x7d, 0xea, 0x16, 0xf8, - 0x71, 0xe8, 0x8d, 0xf9, 0xd7, 0xb1, 0x1b, 0x68, 0xc9, 0xfb, - 0xb4, 0x1b, 0x58, 0xcf, 0xf0, 0xd7, 0xce, 0x3e, 0x1f, 0xc2, - 0xbe, 0x87, 0xc9, 0x3e, 0x17, 0xc1, 0xbf, 0xb2, 0x78, 0xb3, - 0xfc, 0x39, 0x61, 0xd1, 0x1f, 0xf3, 0xa8, 0x5b, 0xe1, 0xdc, - 0xa3, 0xf8, 0x64, 0xfc, 0xc5, 0x7b, 0x69, 0xb3, 0x8c, 0xf6, - 0xa4, 0x36, 0x11, 0x1e, 0xd5, 0x93, 0xe1, 0xdc, 0x33, 0xe8, - 0x60, 0xf8, 0x4f, 0x8, 0xfa, 0x1e, 0x1d, 0x27, 0xc3, 0xf9, - 0xd0, 0x13, 0x87, 0xe3, 0xe9, 0x58, 0x9a, 0x96, 0x92, 0xda, - 0x69, 0xc3, 0xe4, 0x1f, 0x7a, 0xfa, 0xe, 0xee, 0xc2, 0x3f, - 0x25, 0xb8, 0xe3, 0x1d, 0xeb, 0xc4, 0xbc, 0x75, 0x32, 0xff, - 00, 0x69, 0x18, 0xd4, 0xf4, 0x35, 0xf3, 0x79, 0xbe, 0x55, - 0x47, 0x3, 0x4b, 0x9e, 0x3b, 0xb3, 0xe4, 0xf3, 0xcc, 0x97, - 0xf, 0x96, 0x51, 0xf6, 0x90, 0xdd, 0x9c, 0xcd, 0x25, 0x14, - 0x57, 0xc7, 0x23, 0xe0, 0x42, 0x8a, 0x28, 0xa0, 0x3, 0xa5, - 0x4b, 0x1d, 0xb4, 0xb3, 0xfd, 0xc5, 0xcd, 0x42, 0xc7, 0xa0, - 0xf5, 0x38, 0xaf, 0x44, 0xf0, 0x4f, 0x87, 0x85, 0xda, 0x21, - 0x65, 0xc8, 0xe2, 0xbb, 0xb0, 0x78, 0x59, 0x63, 0x2a, 0xfb, - 0x38, 0x9e, 0x96, 0x5f, 0x82, 0x96, 0x3e, 0xb7, 0xb2, 0x89, - 0xc2, 0x9d, 0x2a, 0xf0, 0x7f, 0xcb, 0x13, 0x8f, 0xc2, 0x9a, - 0x74, 0xeb, 0xb1, 0xff, 00, 0x2c, 0x1b, 0xf4, 0xaf, 0x7a, - 0x3e, 0x13, 0x83, 0x3, 0x31, 0xe7, 0xf1, 0xa8, 0xdb, 0xc2, - 0x30, 0x1f, 0xf9, 0x67, 0xfa, 0xd7, 0xd4, 0x3e, 0x19, 0x9a, - 0xda, 0x47, 0xd9, 0x3e, 0xf, 0xab, 0xd2, 0x47, 0x83, 0x9b, - 0x3b, 0x85, 0xeb, 0xb, 0xa, 0x69, 0xb7, 0x9c, 0x7f, 0xcb, - 0x26, 0xaf, 0x75, 0x6f, 0x7, 0x40, 0x47, 0xfa, 0xbf, 0xd6, - 0xa2, 0x6f, 0x5, 0x40, 0xdf, 0xf2, 0xce, 0xb2, 0x7c, 0x37, - 0x5b, 0xa3, 0x30, 0x7c, 0x23, 0x5d, 0x6d, 0x23, 0xc3, 0x24, - 0x8a, 0x55, 0x1c, 0xc6, 0xdf, 0x95, 0x7a, 0x2f, 0xc2, 0xfd, - 0x3d, 0x95, 0xd6, 0x46, 0x42, 0x32, 0x73, 0xcd, 0x75, 0xf, - 0xe0, 0x68, 0x18, 0x8f, 0x93, 0xfc, 0xfe, 0x75, 0xd1, 0x68, - 0xda, 0x14, 0x5a, 0x6c, 0x60, 0x20, 0xc5, 0x77, 0xe5, 0xb9, - 0x15, 0x5c, 0x3e, 0x21, 0x54, 0x9b, 0xd1, 0x1e, 0xa6, 0x51, - 0xc3, 0x55, 0xb0, 0xb8, 0xa5, 0x5a, 0xa3, 0xba, 0x46, 0xaa, - 0xd0, 0x4d, 0x2e, 0x2a, 0xbd, 0xdd, 0xd2, 0x5a, 0x42, 0x5d, - 0xce, 00, 0x15, 0xfa, 0x13, 0x6a, 0x2a, 0xec, 0xfd, 0x4a, - 0x52, 0x51, 0x5c, 0xcc, 0xa1, 0xaf, 0x6b, 0x71, 0xe9, 0x36, - 0xe5, 0x8b, 00, 0xd5, 0xe1, 0xfe, 0x26, 0xf1, 0xc, 0xba, - 0x9d, 0xf4, 0x98, 0x7c, 0xae, 0x6b, 0x6b, 0xc7, 0xfe, 0x26, - 0x37, 0x57, 0x7e, 0x52, 0x31, 0xc6, 0x6b, 0x87, 0x1f, 0x78, - 0xb7, 0x73, 0x5f, 0x95, 0x67, 0x99, 0xa4, 0xb1, 0x35, 0x1d, - 0x1a, 0x6f, 0xdd, 0x47, 0xe2, 0xdc, 0x49, 0x9c, 0xcb, 0x17, - 0x55, 0xe1, 0xe9, 0x3f, 0x75, 00, 0xe9, 0x45, 0x14, 0x57, - 0xc9, 0x1f, 0xa, 0x14, 0x51, 0x45, 00, 0x14, 0x50, 0x78, - 0x15, 0x25, 0xbd, 0xbb, 0x5c, 0xb8, 0x45, 0x19, 0x26, 0x9a, - 0xbb, 0x76, 0x40, 0x93, 0x93, 0xb2, 0x23, 0x7, 0x26, 0x97, - 0xca, 0x90, 0xf2, 0x10, 0x9a, 0xea, 0x34, 0xbf, 0x3, 0x5d, - 0xdd, 0x61, 0xb0, 0x71, 0x5d, 0x65, 0xa7, 0x80, 0xa4, 0x8e, - 0x35, 0xc, 0x99, 0x38, 0xff, 00, 0x3d, 0xeb, 0xd8, 0xc3, - 0xe5, 0x38, 0x9a, 0xea, 0xee, 0x36, 0x47, 0xd0, 0x61, 0xb2, - 0x3c, 0x5e, 0x25, 0x73, 0x72, 0xd9, 0x1e, 0x55, 0xe5, 0x4c, - 0x3f, 0xe5, 0x99, 0xa4, 0x29, 0x2f, 0x75, 0x35, 0xec, 0xd, - 0xe0, 0x7e, 0x3e, 0xe1, 0xcd, 0x66, 0xde, 0xf8, 0x26, 0x42, - 0xe, 0xd8, 0xeb, 0xa6, 0x79, 0x16, 0x22, 0xa, 0xfa, 0x9d, - 0x75, 0x38, 0x6f, 0x15, 0x4d, 0x5c, 0xf3, 0x20, 0x8, 0xea, - 0x31, 0x45, 0x6f, 0xea, 0xde, 0x1a, 0xba, 0xb6, 0x62, 0x76, - 0x60, 0x56, 0x13, 0xc4, 0xf0, 0xb6, 0xd7, 0x18, 0x35, 0xe1, - 0xd5, 0xa3, 0x52, 0x8b, 0xb4, 0xd1, 0xf3, 0x75, 0xb0, 0xf5, - 0x70, 0xf2, 0xe5, 0x9a, 0xb0, 0xda, 0x28, 0xa2, 0xb1, 0x30, - 0xa, 0x28, 0xa2, 0x80, 0xa, 0xbb, 0xa4, 0xde, 0xb5, 0xa5, - 0xd2, 0x90, 0xd8, 0xc9, 0x15, 0x4a, 0x80, 0x76, 0xb8, 0x6f, - 0x4a, 0xa8, 0x4d, 0xd3, 0x92, 0x92, 0x2e, 0x13, 0x74, 0xe4, - 0xa6, 0xba, 0x1f, 0x41, 0xf8, 0x32, 0xfc, 0x5e, 0xe9, 0xcb, - 0xf3, 0x65, 0x86, 0x33, 0x5d, 0x10, 0x18, 0xaf, 0x36, 0xf8, - 0x57, 0xa9, 0x6f, 0xb6, 0x64, 0x27, 0xa9, 0xaf, 0x49, 0xaf, - 0xdb, 0x32, 0xca, 0xff, 00, 0x58, 0xc2, 0xc2, 0x67, 0xf4, - 0x46, 0x4f, 0x88, 0xfa, 0xce, 0xa, 0x9c, 0xfc, 0x85, 0xa2, - 0x8a, 0x2b, 0xd5, 0x3d, 0xa1, 0xd, 0x54, 0xd4, 0x2f, 0xe3, - 0xb1, 0x85, 0x99, 0x98, 0x2, 0x5, 0x5a, 0x66, 0xda, 0x32, - 0x7a, 0x57, 0x97, 0x7c, 0x44, 0xf1, 0x19, 0x8e, 0x76, 0x81, - 0x1b, 0xa0, 0xaf, 0x37, 0x1f, 0x8b, 0x8e, 0xa, 0x8b, 0xa8, - 0xcf, 0x23, 0x34, 0xc7, 0xc7, 0x2f, 0xc3, 0xba, 0xb2, 0x39, - 0xf, 0x17, 0xf8, 0x8a, 0x4d, 0x4e, 0xf6, 0x75, 0xdd, 0x95, - 0xdd, 0xc5, 0x73, 0x6a, 0x30, 0x29, 0x5d, 0x8c, 0x8e, 0xce, - 0xc7, 0x24, 0x9c, 0xd2, 0x57, 0xe2, 0xb5, 0xeb, 0x4b, 0x11, - 0x51, 0xd4, 0x9b, 0xdc, 0xfe, 0x7a, 0xc4, 0xe2, 0x27, 0x8a, - 0xaa, 0xea, 0xd4, 0x7a, 0xb0, 0xa2, 0x8a, 0x2b, 0x3, 0x98, - 0x28, 0xa2, 0x8a, 00, 0x28, 0xa3, 0xad, 0x1b, 0x5c, 0xf4, - 0x53, 0x40, 0x5, 0x14, 0x85, 0x64, 0xfe, 0xe9, 0xa4, 0x3b, - 0xc7, 0xf0, 0x9a, 0x57, 0xf2, 0x15, 0xfc, 0x87, 0x51, 0x4c, - 0xde, 0x47, 0x50, 0x7f, 0x2a, 0x5d, 0xfc, 0x51, 0x71, 0x5c, - 0x75, 0x14, 0x3, 0x9a, 0x29, 0x8c, 0x1b, 0x90, 0x6b, 0xd1, - 0x7e, 0x1a, 0x69, 0xe4, 0x27, 0x98, 0x57, 0x9e, 0xb5, 0xe7, - 0x68, 0xbb, 0xdc, 0x1, 0xde, 0xbd, 0xa7, 0xc0, 0x96, 0x2, - 0xdb, 0x4f, 0x53, 0x8e, 0xb5, 0xf4, 0x79, 0xd, 0xf, 0x6b, - 0x8a, 0x4d, 0xf4, 0x3e, 0xb7, 0x86, 0x70, 0xfe, 0xdb, 0x1b, - 0xcc, 0xfa, 0x1d, 0x44, 0x9f, 0x24, 00, 0x7b, 0x56, 0xd, - 0xeb, 0xf5, 0xfa, 0xd6, 0xe5, 0xd9, 0xc2, 0x91, 0x9a, 0xe7, - 0x6f, 0x9f, 0x4, 0xfd, 0x6b, 0xf5, 0xf4, 0xac, 0x8f, 0xde, - 0x12, 0xb2, 0xb1, 0x89, 0xa8, 0xbe, 0x1, 0xae, 0x5b, 0x52, - 0x93, 0x83, 0x5d, 0xe, 0xa4, 0xfd, 0x6b, 0x95, 0xd4, 0xe4, - 0xeb, 0x4c, 0x67, 0x37, 0xab, 0xc9, 0xc1, 0xae, 0x1b, 0x58, - 0x97, 0x1b, 0xab, 0xad, 0xd6, 0x25, 0xeb, 0x5c, 0x2e, 0xb9, - 0x3e, 0xd4, 0x73, 0xed, 0x40, 0x6c, 0x78, 0xdf, 0xc5, 0x3b, - 0xfd, 0xb6, 0x97, 0x3, 0x77, 0x6a, 0xf9, 0x57, 0xc4, 0xd7, - 0x86, 0x5b, 0xd9, 0x9, 0x39, 0x3, 0xff, 00, 0xaf, 0x5f, - 0x43, 0xfc, 0x56, 0xd4, 0x3f, 0xd1, 0x2e, 0x79, 0x35, 0xf3, - 0x2e, 0xb5, 0x3f, 0x99, 0x34, 0x8d, 0xea, 0x6b, 0xe1, 0xb3, - 0x29, 0x73, 0xd5, 0xe5, 0x3f, 0x38, 0xcd, 0xe7, 0xcf, 0x59, - 0x23, 0x7, 0x50, 0x9f, 0x83, 0xcd, 0x72, 0x1a, 0xd3, 0xe5, - 0x4f, 0xbd, 0x6f, 0x6a, 0x53, 0x63, 0x35, 0xce, 0x6a, 0x4d, - 0xbe, 0x33, 0x5a, 0xe1, 0x61, 0x66, 0x99, 0xae, 0xa, 0x1c, - 0xb6, 0x67, 0xdb, 0x5f, 0xf0, 0x4c, 0x4f, 0x1c, 0x3d, 0x86, - 0xaf, 0x71, 0x61, 0x2d, 0xcf, 0xee, 0xed, 0xee, 0xd7, 0x6c, - 0x44, 0x9f, 0xba, 0xe1, 0xf3, 0xfa, 0xed, 0xaf, 0xd6, 0x44, - 0x7e, 0x2b, 0xf1, 0xb, 0xfe, 0x9, 0xfd, 0x7c, 0xf6, 0xdf, - 0x14, 0x75, 0x18, 0x83, 0x60, 0x79, 0x29, 0x2e, 0x31, 0xdc, - 0x48, 0x83, 0x3f, 0xad, 0x7e, 0xd8, 0xd9, 0x4e, 0x65, 0xb5, - 0x85, 0xf3, 0x9d, 0xc8, 0x1b, 0x3f, 0x85, 0x7d, 0x85, 0x3f, - 0x85, 0x1f, 0x7b, 0x4d, 0xde, 0x8, 0xd4, 0x46, 0xe9, 0x53, - 0x21, 0x15, 0x4a, 0x37, 0xcf, 0x5a, 0xb3, 0x1b, 0x71, 0x5a, - 0x1a, 0x96, 0x57, 0x8a, 0x91, 0x4e, 0x4f, 0x5a, 0x85, 0x4d, - 0x3d, 0x4f, 0x14, 0x1, 0x3a, 0xf7, 0xa7, 0x8e, 0x95, 0xa, - 0x9f, 0x7a, 0x91, 0x48, 0xcd, 00, 0x48, 0x29, 0x69, 0xbd, - 0xe9, 0xd4, 00, 0xa3, 0xad, 0x3a, 0x99, 0x4e, 0x1d, 0x28, - 0x1, 0x68, 0xa2, 0x8a, 00, 0x6b, 0x52, 0x50, 0x68, 0xa0, - 0x4, 0x6a, 0x8d, 0xa9, 0xec, 0x79, 0xa8, 0xd8, 0xd0, 0x3, - 0x1a, 0xa3, 0x63, 0x8a, 0x7b, 0x54, 0x6d, 0xd2, 0x80, 0x21, - 0x73, 0xc5, 0x56, 0x90, 0xe7, 0x35, 0x62, 0x43, 0x55, 0x65, - 0x34, 0x1, 0x56, 0x73, 0x8a, 0xf3, 0x1f, 0xda, 0xb, 0xc4, - 0xf1, 0x78, 0x57, 0xe1, 0x2f, 0x88, 0xee, 0xde, 0x63, 0x4, - 0xd2, 0x5b, 0x3c, 0x16, 0xe7, 0xbb, 0x4a, 0xca, 0x76, 0x8f, - 0x6e, 0x86, 0xbd, 0x2e, 0x66, 0xe6, 0xbe, 0x55, 0xfd, 0xb9, - 0xfc, 0x47, 0xe5, 0x78, 0x6f, 0x42, 0xd0, 0x22, 0x95, 0x77, - 0x5d, 0x5d, 0x7d, 0xa2, 0x48, 0xc3, 0x7c, 0xc0, 0x28, 0x21, - 0x4e, 0x3d, 0x39, 0x35, 0xe5, 0xe6, 0x75, 0xfe, 0xad, 0x83, - 0xa9, 0x53, 0xc8, 0xf1, 0xb3, 0x8c, 0x4f, 0xd5, 0x30, 0x15, - 0x6a, 0xf6, 0x4f, 0xf1, 0xd0, 0xe3, 0x7f, 0x63, 0x9f, 0xc, - 0xfd, 0xa3, 0x55, 0xb8, 0xd4, 0x18, 0x13, 0xb1, 0x76, 0x83, - 0x8e, 0x33, 0xc5, 0x7d, 0xe1, 0xa3, 0x45, 0xb2, 0xdd, 0x31, - 0xe9, 0x5f, 0x35, 0x7e, 0xca, 0x3e, 0x1a, 0x3a, 0x5f, 0x82, - 0x6d, 0xa6, 0x65, 0x2a, 0xf3, 0xfc, 0xfd, 0x3b, 0x1c, 0x57, - 0xd4, 0x1a, 0x64, 0x7b, 0x61, 0x5a, 0xe2, 0xc8, 0xa8, 0x7b, - 0xc, 0xc, 0x2f, 0xbb, 0xd7, 0xef, 0x3c, 0xfe, 0x1a, 0xc3, - 0xfd, 0x5f, 0x2d, 0xa7, 0x7d, 0xe5, 0xaf, 0xdf, 0xa9, 0x7f, - 0xa5, 0x2d, 0x14, 0x57, 0xd0, 0x9f, 0x52, 0x14, 0x51, 0x45, - 00, 0x15, 0x53, 0x53, 0xb2, 0x5d, 0x42, 0xce, 0x58, 0x1b, - 0xa3, 0x8c, 0x55, 0xba, 0x28, 0x3, 0xf3, 0x43, 0xf6, 0xd8, - 0xfd, 0x94, 0xc6, 0xaa, 0x66, 0xd6, 0x9c, 0x49, 0xc9, 0x62, - 0x36, 0xe, 0xbc, 0x7f, 0xbd, 0x5f, 0x98, 0x3e, 0x38, 0xf8, - 0x7c, 0xde, 0x1a, 0xba, 0x91, 0x36, 0x4b, 0xf2, 0x93, 0xf7, - 0x94, 0xd7, 0xf4, 0x91, 0xe3, 0x3f, 0x3, 0xd9, 0xf8, 0xde, - 0xc3, 0xec, 0xb7, 0xa5, 0x96, 0x3f, 0xf6, 0x40, 0x3f, 0xce, - 0xbe, 0x66, 0xf8, 0x9f, 0xfb, 0x10, 0xf8, 0x77, 0x56, 0x57, - 0x92, 0x29, 0x65, 0x24, 0x8c, 0xe0, 0x46, 0x9f, 0xfc, 0x4d, - 00, 0x7e, 0xb, 0x32, 0x90, 0xc4, 0x60, 0xd2, 0xc6, 0xbb, - 0xdc, 0x2f, 0xad, 0x7e, 0xab, 0x78, 0x8f, 0xf6, 0x11, 0xb3, - 0x5b, 0x87, 0x11, 0x2c, 0xe4, 0xe, 0x9f, 0xba, 0x1f, 0xfc, - 0x45, 0x5e, 0xf0, 0x9f, 0xfc, 0x13, 0xa6, 0xc7, 0x54, 0x91, - 0x3c, 0xdc, 0xa6, 0x7a, 0xee, 0x88, 0x3, 0xff, 00, 0xa2, - 0xe8, 0x3, 0xf3, 0x43, 0xc0, 0xff, 00, 0xc, 0xaf, 0x3c, - 0x69, 0x7a, 0x20, 0xb7, 0x59, 0x33, 0xc7, 0x28, 0x9b, 0xab, - 0xf4, 0x17, 0xf6, 0x48, 0xfd, 0x86, 0x2e, 0xa0, 0xbb, 0x86, - 0xf7, 0x56, 0x8a, 0xe1, 0xd7, 0x70, 0x7d, 0xaf, 0x9, 0x5e, - 0xe3, 0xfd, 0xaa, 0xfa, 0xdb, 0xe1, 0x2f, 0xec, 0x21, 0xa2, - 0x7c, 0x3d, 0xbe, 0x5b, 0xcf, 0x3f, 0x73, 0xf0, 0x70, 0x15, - 0x7b, 0x7f, 0xc0, 0x5, 0x7d, 0x53, 0xa4, 0xe9, 0x50, 0xe8, - 0xf6, 0x8b, 0x4, 0x23, 0xe5, 0x51, 0x8e, 0x68, 0x3, 0x1f, - 0xc0, 0xbe, 0xd, 0xb3, 0xf0, 0x66, 0x85, 0x6f, 0x63, 0x6c, - 0x9b, 0x42, 0x28, 0xe7, 0xf0, 0xff, 00, 0xeb, 0x57, 0x4b, - 0x45, 0x14, 00, 0x57, 0x1b, 0xe3, 0xcb, 0xdf, 0x26, 0xc5, - 0xf9, 0xed, 0x5d, 0x83, 0x30, 0xa, 0x4d, 0x79, 0x57, 0xc4, - 0xad, 0x47, 0xfd, 0x1d, 0x90, 0x1c, 0x92, 0x71, 0x5e, 0x26, - 0x6f, 0x5b, 0xd8, 0xe1, 0x64, 0xcf, 0x9d, 0xcf, 0x71, 0x1f, - 0x57, 0xc1, 0x4d, 0xf9, 0x1e, 0x65, 0x23, 0xf9, 0x92, 0xbb, - 0x7a, 0x9a, 0x6d, 0x22, 0xf4, 0x14, 0xb5, 0xf8, 0xbd, 0xef, - 0xa9, 0xfc, 0xf9, 0x7b, 0xea, 0x14, 0x51, 0x45, 0x30, 0xa, - 0xe8, 0x7c, 0x7, 0x6b, 0xf6, 0x8d, 0x7a, 0x32, 0x47, 0xb, - 0x5c, 0xf1, 0xe9, 0x5d, 0xff, 00, 0xc2, 0xdb, 0x12, 0xd7, - 0x82, 0x5c, 0x1e, 0xb5, 0xe9, 0x65, 0x94, 0xfd, 0xae, 0x2e, - 0x11, 0xf3, 0x3d, 0x8c, 0xa2, 0x8f, 0xb6, 0xc7, 0x53, 0x8f, - 0x99, 0xec, 0x56, 0xc8, 0x12, 0x15, 0x3, 0xd2, 0xa5, 0xa6, - 0xaf, 0x2, 0x9d, 0x5f, 0xb7, 0xa5, 0x65, 0x63, 0xfa, 0x31, - 0x2b, 0x2b, 0x5, 0x14, 0x51, 0x4c, 0x61, 0x59, 0xda, 0xe6, - 0xd1, 0xa7, 0x4a, 0x5b, 0x9c, 0x29, 0xad, 0x1a, 0xe6, 0xfc, - 0x6d, 0x7b, 0xf6, 0x3d, 0x1e, 0x43, 0x90, 0x37, 0x2, 0x39, - 0xae, 0x5c, 0x54, 0xd5, 0x3a, 0x33, 0x93, 0xe8, 0x8e, 0x3c, - 0x65, 0x45, 0x4b, 0xf, 0x39, 0xcb, 0x64, 0x99, 0xe1, 0xda, - 0xe3, 0x6f, 0xd4, 0x25, 0x6f, 0xf6, 0x8d, 0x67, 0x55, 0x8b, - 0xd9, 0x7c, 0xd9, 0x98, 0xfb, 0x9a, 0xaf, 0x5f, 0x85, 0x55, - 0x7c, 0xd5, 0x24, 0xcf, 0xe6, 0xba, 0xd2, 0xe7, 0xab, 0x29, - 0x77, 0xa, 0x28, 0xa2, 0xb3, 0x32, 0xa, 0x92, 0xd9, 0x3c, - 0xcb, 0x94, 0x15, 0x1d, 0x69, 0xf8, 0x76, 0xd8, 0xdc, 0xdf, - 0xc, 0x74, 0xc8, 0xe9, 0x5a, 0x53, 0x87, 0xb4, 0xa9, 0x18, - 0xa3, 0x6a, 0x30, 0x75, 0x2a, 0x46, 0xb, 0xa9, 0xeb, 0xbf, - 0xf, 0x2c, 0x3c, 0xab, 0x53, 0x21, 0x1c, 0xf1, 0xda, 0xbb, - 0x40, 0x2b, 0x33, 0xc3, 0x96, 0xa2, 0xd7, 0x4e, 0x41, 0xdc, - 0x8a, 0xd5, 0xaf, 0xdc, 0x30, 0x34, 0x95, 0x1a, 0x11, 0x82, - 0x3f, 0xa3, 0x72, 0xea, 0x1f, 0x57, 0xc2, 0xc2, 0x1e, 0x41, - 0x45, 0x14, 0x57, 0x79, 0xe9, 0x5, 0x14, 0x51, 0x40, 0x5, - 0x14, 0x51, 0x40, 0x19, 0x7a, 0xed, 0xc7, 0x91, 0x61, 0x23, - 0x7a, 0x29, 0xaf, 0x9f, 0x35, 0xeb, 0x9f, 0xb5, 0x6a, 0xb3, - 0x3e, 0x73, 0xc9, 0x15, 0xed, 0x3e, 0x3b, 0xbd, 0x16, 0xfa, - 0x64, 0xbc, 0x8f, 0xba, 0x6b, 0xc2, 0x64, 0x7f, 0x32, 0x57, - 0x63, 0xdc, 0x9a, 0xfc, 0xd7, 0x89, 0xeb, 0x73, 0x54, 0x8d, - 0x24, 0x7e, 0x43, 0xc6, 0x58, 0x8e, 0x6a, 0xb0, 0xa2, 0xba, - 0xd, 0xa2, 0x8a, 0x2b, 0xe1, 0x8f, 0xce, 0x2, 0x8a, 0x28, - 0xa0, 0x7, 0xdb, 0x46, 0x66, 0xbb, 0x8d, 0x7b, 0x64, 0x57, - 0xb9, 0xf8, 0x16, 0xd3, 0xca, 0xb6, 0x7, 0xd8, 0x57, 0x8c, - 0xf8, 0x72, 0xf, 0xb4, 0xea, 0x4b, 0xc6, 0x71, 0x5e, 0xff, - 00, 0xe1, 0xbb, 0x6f, 0x22, 0xc5, 0x7d, 0xc0, 0xaf, 0xb8, - 0xe1, 0x8a, 0x1c, 0xd3, 0x75, 0x4f, 0xd1, 0xb8, 0x3b, 0xf, - 0xcf, 0x56, 0x55, 0x59, 0xaa, 0x6, 0x29, 0x71, 0x4b, 0x45, - 0x7e, 0x96, 0x7e, 0xbe, 0x26, 0x28, 0xc7, 0xb9, 0xa5, 0xa2, - 0x80, 0x1b, 0xc7, 0x7e, 0xb4, 0xa2, 0x96, 0x90, 0xd0, 00, - 0x48, 0x3, 0x26, 0xbc, 0xfb, 0xe2, 0x2f, 0x88, 0x85, 0xac, - 0x3e, 0x52, 0x10, 0x38, 0xf5, 0xae, 0xb7, 0x5f, 0xbf, 0x5b, - 0xb, 0x17, 0x72, 0x70, 0x71, 0x5e, 0x13, 0xe2, 0xdd, 0x54, - 0xea, 0x37, 0xc7, 0xb8, 0x15, 0xf2, 0x79, 0xf6, 0x3f, 0xea, - 0xd4, 0x1d, 0x38, 0xbd, 0x59, 0xf1, 0x1c, 0x4f, 0x99, 0xfd, - 0x53, 0xe, 0xe8, 0xc1, 0xfb, 0xcc, 0xc8, 0xb9, 0x99, 0xae, - 0x67, 0x2e, 0xdc, 0xd4, 0x74, 0x51, 0x5f, 0x94, 0xb6, 0xdb, - 0xbb, 0x3f, 0x12, 0x6d, 0xb6, 0xe4, 0xf7, 0xa, 0x28, 0xa2, - 0x90, 0x82, 0x8a, 0x2a, 0xc6, 0x9d, 0x68, 0xd7, 0xf7, 0x22, - 0x35, 0x4, 0xe7, 0xd0, 0x53, 0x49, 0xc9, 0xa8, 0xae, 0xa5, - 0x46, 0x2e, 0x72, 0x51, 0x8e, 0xec, 0x93, 0x4f, 0xd3, 0xe4, - 0xbe, 0x90, 0x2a, 0xa9, 0x3c, 0xf6, 0x15, 0xea, 0x7e, 0x16, - 0xf0, 0x24, 0x62, 0x14, 0x96, 0x41, 0x83, 0x56, 0x7c, 0xb, - 0xe1, 0x34, 0xb4, 0xb7, 0xdf, 0x30, 0x3b, 0x8e, 0x3a, 0x8a, - 0xee, 0xa3, 0x8c, 0x46, 0x81, 0x40, 0xe0, 0x57, 0xe9, 0x59, - 0x3e, 0x49, 0x1a, 0x71, 0x55, 0xab, 0xad, 0x4f, 0xd7, 0x32, - 0xe, 0x1d, 0x85, 0x28, 0x2c, 0x46, 0x21, 0x5d, 0xbe, 0x84, - 0x16, 0x76, 0x31, 0xda, 0x26, 0xd5, 0x15, 0x67, 0x2, 0x9d, - 0x45, 0x7d, 0xb4, 0x62, 0xa2, 0xac, 0x8f, 0xd1, 0x63, 0x15, - 0x5, 0xcb, 0x1d, 0x86, 0xe2, 0x82, 0xaa, 0x47, 0x23, 0x34, - 0xea, 0x29, 0xd8, 0x66, 0x1e, 0xb7, 0xa2, 0x2d, 0xf4, 0x47, - 0x6a, 0x8a, 0xf1, 0xff, 00, 0x15, 0x78, 0x71, 0xac, 0x66, - 0x77, 0x39, 0xc6, 0x6b, 0xde, 0x98, 0x67, 0x8e, 0xd5, 0xc8, - 0xf8, 0xd3, 0x44, 0x5b, 0x9b, 0x66, 0x6e, 0x78, 0x19, 0xc5, - 0x7c, 0xce, 0x71, 0x97, 0x47, 0x11, 0x49, 0xce, 0x2b, 0x54, - 0x7c, 0x7e, 0x7d, 0x94, 0xc3, 0x17, 0x45, 0xd4, 0x8a, 0xf7, - 0x91, 0xe1, 0x44, 0x60, 0xd2, 0x55, 0x9d, 0x42, 0x13, 0x5, - 0xdb, 0xa9, 0x4, 00, 0x71, 0x55, 0xab, 0xf2, 0x47, 0x17, - 0x16, 0xe2, 0xcf, 0xc3, 0x65, 0x17, 0x9, 0x38, 0xbe, 0x81, - 0x45, 0x14, 0x52, 0x24, 0x28, 0x23, 0x39, 0xa2, 0x8a, 0x1e, - 0xc0, 0x77, 0x7f, 0xc, 0xaf, 0xa, 0xdd, 0x94, 0xe8, 0x1, - 0xaf, 0x69, 0x8d, 0x83, 0x20, 0x23, 0xd2, 0xbe, 0x7f, 0xf0, - 0x34, 0xc6, 0x1d, 0x40, 0x1, 0xd5, 0x8d, 0x7b, 0xdd, 0x91, - 0xcd, 0xb4, 0x67, 0xda, 0xbf, 0x53, 0xe1, 0xaa, 0xbc, 0xf8, - 0x6e, 0x5e, 0xc7, 0xed, 0x3c, 0x23, 0x5b, 0x9f, 0x7, 0xc9, - 0xd8, 0x9e, 0x9b, 0x93, 0x4e, 0xa6, 0x9e, 0x73, 0x5f, 0x60, - 0x7d, 0xe1, 0x8d, 0xe2, 0x4d, 0x53, 0xfb, 0x3e, 0xd1, 0x8e, - 0x70, 0x48, 0xaf, 0x6, 0xf1, 0x6, 0xa2, 0xda, 0x86, 0xa5, - 0x23, 0x13, 0xd0, 0xd7, 0xa4, 0xfc, 0x46, 0xd5, 0x42, 0xb3, - 0x44, 0xf, 0x4c, 0xd7, 0x92, 0x33, 0x6f, 0x95, 0xdb, 0xd4, - 0xd7, 0xe5, 0xbc, 0x47, 0x8c, 0x75, 0x2a, 0xaa, 0x31, 0x7a, - 0x23, 0xf1, 0x8e, 0x2c, 0xc7, 0x3a, 0xd5, 0xd5, 0x4, 0xf4, - 0x41, 0x45, 0x14, 0x57, 0xc7, 0x1f, 0x2, 0x14, 0x51, 0x45, - 0x30, 0xa, 0x92, 0xde, 0xdd, 0xae, 0xdf, 0x62, 0xf5, 0xa4, - 0x89, 0xc, 0xb2, 0x4, 00, 0x92, 0x7d, 0x2b, 0xd1, 0xbc, - 0x9, 0xe0, 0xe1, 0x70, 0xcb, 0x34, 0x80, 0x81, 0xd7, 0x91, - 0x5d, 0xf8, 0x2c, 0x1d, 0x4c, 0x6d, 0x55, 0x4e, 0x8, 0xf5, - 0x32, 0xec, 0x5, 0x4c, 0xc2, 0xb2, 0xa5, 0x4, 0x73, 0xba, - 0x67, 0x82, 0xae, 0x6e, 0x48, 0x3f, 0x36, 0x3f, 0xdd, 0xae, - 0x8e, 0xdf, 0xc0, 0x92, 0x2a, 0x8d, 0xca, 0x7f, 0x2a, 0xf5, - 0x1b, 0x4b, 0x8, 0xec, 0xd0, 0x5, 0x15, 0x64, 0x28, 0xf4, - 0x19, 0xaf, 0xd1, 0xb0, 0xfc, 0x3d, 0x87, 0xa7, 0x1f, 0x7b, - 0x73, 0xf5, 0x8c, 0x37, 0xa, 0xe1, 0x69, 0x47, 0xde, 0xd5, - 0x9e, 0x60, 0x9e, 0x7, 0x3, 0xaa, 0x9f, 0xca, 0x91, 0xfc, - 0x10, 0x3f, 0xb8, 0x7f, 0xef, 0x9a, 0xf5, 0x1c, 0xf, 0x4a, - 0x4d, 0x8b, 0xe9, 0xfa, 0x57, 0x6f, 0xf6, 0x2e, 0x1b, 0xb1, - 0xe8, 0xff, 00, 0xab, 0xd8, 0x4b, 0x5a, 0xc7, 0x92, 0x5c, - 0x78, 0x2b, 0x1d, 0x11, 0xbf, 0x2a, 0xca, 0xbc, 0xf0, 0x8b, - 0xc4, 0x38, 0x46, 0xfc, 0xab, 0xdb, 0x8c, 0x48, 0xdf, 0xc3, - 0x9a, 0x89, 0xec, 0xe2, 0x7e, 0xa8, 0xd, 0x72, 0xd4, 0xc8, - 0x28, 0x4d, 0x68, 0x70, 0xd5, 0xe1, 0x8c, 0x3c, 0xfe, 0x13, - 0xe7, 0x4b, 0xdd, 0x16, 0xe2, 0x2, 0x7f, 0x74, 0xdf, 0x95, - 0x66, 0xbc, 0x33, 0x47, 0xc3, 0x21, 0x15, 0xf4, 0x46, 0xa3, - 0xe1, 0xc8, 0x27, 0x53, 0xb5, 0x39, 0xfa, 0x57, 0x15, 0xaf, - 0xf8, 0x35, 0xca, 0x37, 0x96, 0x8c, 0x3f, 0xe0, 0x35, 0xf2, - 0xd8, 0xce, 0x1e, 0xa9, 0x45, 0x39, 0x43, 0x53, 0xe3, 0x31, - 0xfc, 0x2d, 0x56, 0x85, 0xe5, 0x4d, 0xdc, 0xf3, 0x8d, 0x1e, - 0xdc, 0xdc, 0x5f, 0x44, 0x87, 0xd6, 0xbd, 0xf3, 0x43, 0xb6, - 0x16, 0xd6, 0x31, 0x28, 0xf4, 0xaf, 0x2d, 0xf0, 0xe7, 0x85, - 0xe7, 0x8f, 0x57, 0x52, 0xc0, 0x85, 0x53, 0xd3, 0x15, 0xec, - 0x28, 0xbe, 0x54, 0x20, 0x7a, 0xc, 0x57, 0xb1, 0xc3, 0x78, - 0x49, 0x52, 0x8c, 0xa7, 0x35, 0x66, 0x7b, 0xfc, 0x25, 0x81, - 0x95, 0x18, 0xce, 0xa5, 0x45, 0x66, 0x52, 0xbc, 0x7c, 0x66, - 0xb9, 0xcb, 0xf7, 0xeb, 0xf5, 0xad, 0xdb, 0xd7, 0xeb, 0x5c, - 0xe5, 0xfb, 0xfd, 0xea, 0xfb, 0xb3, 0xf4, 0xa3, 0x3, 0x52, - 0x93, 0xad, 0x72, 0x9a, 0x94, 0x9d, 0x6b, 0xa2, 0xd4, 0xa4, - 0xeb, 0x5c, 0xa6, 0xa7, 0x26, 0x3, 0x50, 0x7, 0x2f, 0xac, - 0xcb, 0xd6, 0xbc, 0xff, 00, 0xc4, 0xf7, 0x3e, 0x5d, 0xbc, - 0x84, 0x7a, 0x75, 0xae, 0xd3, 0x58, 0x97, 0xef, 0x73, 0x5e, - 0x67, 0xe3, 0x6b, 0xa0, 0x96, 0xad, 0xf3, 0x1, 0xc5, 0x44, - 0xdd, 0xa2, 0xd9, 0x9d, 0x47, 0xcb, 0x6, 0xcf, 0x9f, 0x7e, - 0x2b, 0xdf, 0x7f, 0xa3, 0x4e, 0x5, 0x7c, 0xf7, 0xa9, 0xcb, - 0x9d, 0xc6, 0xbd, 0x8b, 0xe2, 0x95, 0xee, 0xe8, 0xe5, 0x5c, - 0xd7, 0x8a, 0x6a, 0x72, 0x70, 0x45, 0x7c, 0xd, 0x77, 0xcf, - 0x5a, 0xe7, 0xe6, 0x18, 0x99, 0x7b, 0x4c, 0x49, 0xce, 0x6a, - 0x4f, 0xc9, 0xac, 0x3b, 0x93, 0x90, 0x45, 0x6a, 0x6a, 0xf, - 0x96, 0x35, 0x8f, 0x3b, 0x73, 0x5e, 0xb5, 0x5, 0x64, 0x7b, - 0xb8, 0x68, 0xd9, 0x23, 0xdf, 0xbf, 0x61, 0x1b, 0x76, 0xff, - 00, 0x85, 0xb1, 0xa9, 0x48, 0x9, 0x3, 0xec, 0x21, 0x78, - 0xf5, 0xf3, 0x52, 0xbf, 0x6b, 0xf4, 0x62, 0x57, 0x4c, 0xb3, - 0x52, 0x79, 0x10, 0x27, 0xfe, 0x82, 0x2b, 0xf2, 0x3, 0xfe, - 0x9, 0xf7, 0xa0, 0x3d, 0xef, 0x89, 0xb5, 0x5b, 0xc0, 0xa4, - 0x7e, 0xfa, 0x8, 0x41, 0xc7, 0x18, 0x2d, 0x93, 0xff, 00, - 0xa0, 0xd7, 0xec, 0x5, 0xa8, 0x11, 0xc4, 0x8a, 0xf, 0xdd, - 00, 0x57, 0xd2, 0xd2, 0xf8, 0x11, 0xf5, 0xf4, 0x3f, 0x86, - 0x8d, 0x48, 0x5e, 0xac, 0xa3, 0x73, 0x59, 0xf0, 0x9c, 0xd5, - 0xb4, 0x6a, 0xd8, 0xdc, 0xb9, 0x1b, 0xd4, 0xca, 0xd9, 0xaa, - 0xb1, 0x9c, 0xd4, 0xea, 0xdd, 0x28, 0x2, 0x75, 0x22, 0xa4, - 0x53, 0x50, 0xa1, 0xcd, 0x4c, 0xa7, 0x8a, 00, 0x90, 0x1a, - 0x55, 0xa6, 0xad, 0x2d, 00, 0x3e, 0x94, 0x75, 0xa4, 0xa5, - 0x14, 00, 0xea, 0x28, 0xa2, 0x80, 0x19, 0x45, 0x14, 0x87, - 0x8a, 00, 0x6b, 0x1e, 0x2a, 0x36, 0xa7, 0xb5, 0x46, 0x4d, - 00, 0x31, 0x8d, 0x46, 0xfc, 0xa, 0x7b, 0x54, 0x52, 0x1e, - 0x28, 0x2, 0x9, 0xd, 0x55, 0x94, 0xd4, 0xf2, 0x1a, 0xab, - 0x29, 0xa0, 0xa, 0xb3, 0x1a, 0xf8, 0x23, 0xf6, 0x95, 0xd7, - 0x1f, 0xc7, 0x5f, 0x1e, 0xa3, 0xd3, 0xed, 0xa4, 0x5b, 0xab, - 0x7b, 0x18, 0xa2, 0xb4, 0xb, 0x1, 0xdc, 0x37, 0xef, 0x62, - 0x7d, 0x79, 0xc3, 0xa, 0xfb, 0x9b, 0xc4, 0x3a, 0xa2, 0x68, - 0x9a, 0x35, 0xfe, 0xa1, 0x22, 0xee, 0x8e, 0xd2, 0x7, 0x9d, - 0x94, 0x1c, 0x64, 0x2a, 0x92, 0x7f, 0x95, 0x7c, 0xb, 0xf0, - 0x46, 0xc2, 0x4f, 0x1b, 0xfc, 0x61, 0xb8, 0xd4, 0x66, 0x3b, - 0xf7, 0x5d, 0x3c, 0xe4, 0x9e, 0x78, 0xdf, 0xc7, 0x5f, 0x6a, - 0xf9, 0xe, 0x21, 0x9b, 0xa9, 0x1a, 0x58, 0x48, 0xfd, 0xb9, - 0x2b, 0xfa, 0x23, 0xe0, 0xf8, 0xaa, 0xa3, 0xa9, 0xa, 0x18, - 0x18, 0xef, 0x52, 0x4a, 0xfe, 0x88, 0xfb, 0x7b, 0xe1, 0x36, - 0x80, 0x34, 0x4f, 0xc, 0xe9, 0xb6, 0xa2, 0x32, 0x9e, 0x5c, - 0x8, 0xa, 0x9e, 0xa0, 0xed, 0x15, 0xea, 0xf6, 0x69, 0x88, - 0x45, 0x73, 0x1e, 0x1d, 0xb6, 0x11, 0xc1, 0x18, 0x3, 0xf8, - 0x6b, 0xac, 0x88, 0x62, 0x35, 0xaf, 0xaa, 0xa5, 0x5, 0x4e, - 0x9c, 0x60, 0xba, 0x23, 0xed, 0x68, 0x53, 0x54, 0xa9, 0x46, - 0x9a, 0xd9, 0x21, 0xf4, 0x51, 0x45, 0x6a, 0x6e, 0x14, 0x51, - 0x45, 00, 0x14, 0x51, 0x5c, 0x3f, 0x8e, 0x3e, 0x2e, 0x68, - 0x9e, 0x4, 0x57, 0xfb, 0x73, 0xb1, 0x75, 0xfe, 0x15, 0xc7, - 0x34, 0x1, 0xdb, 0x34, 0x8a, 0x83, 0x2c, 0xc1, 0x7e, 0xa7, - 0x15, 0xc, 0xaf, 0x6d, 0x30, 0xc3, 0xbc, 0x6c, 0x3d, 0xc8, - 0x35, 0xf0, 0xa7, 0xc6, 0x3f, 0xdb, 0x66, 0xc2, 0x11, 0x22, - 0xe9, 0xad, 0x74, 0x84, 0x67, 0x95, 0x97, 0x3, 0xf4, 0x35, - 0xf3, 0x7e, 0xaf, 0xfb, 0x74, 0x6b, 0x30, 0xca, 0xe6, 0x2b, - 0x8b, 0xb2, 0x1, 0xef, 0x72, 0xff, 00, 0xe3, 0x40, 0x1f, - 0xad, 0x92, 0x68, 0xba, 0x4c, 0xcc, 0x4b, 0x45, 0xb, 0x37, - 0xe1, 0x56, 0xed, 0x34, 0xcb, 0x4b, 0x5e, 0x61, 0x89, 0x7, - 0xb8, 0x2, 0xbf, 0x20, 0xbc, 0x13, 0xfb, 0x6d, 0xf8, 0x97, - 0x5e, 0xd7, 0xe3, 0x80, 0xcb, 0x74, 0x54, 0xb6, 0xd1, 0xfe, - 0x96, 0xfc, 0x9c, 0xfd, 0x6b, 0xf5, 0x13, 0xe0, 0x76, 0xb3, - 0x77, 0xad, 0xf8, 0xa, 0xca, 0xfe, 0xf5, 0x9b, 0xcc, 0x95, - 0x3, 0x7c, 0xee, 0x58, 0xfe, 0x66, 0x80, 0x3d, 0x10, 0xc, - 0x52, 0xd6, 0x7b, 0xeb, 0xd6, 0x11, 0xc9, 0xe5, 0xbd, 0xca, - 0xab, 0xfa, 0x10, 0x6a, 0x68, 0x35, 0x1b, 0x7b, 0xa3, 0x88, - 0xa5, 0x57, 0xfa, 0x50, 0x5, 0xaa, 0x43, 0x4b, 0x49, 0x40, - 0x15, 0xef, 0x65, 0xf2, 0x6d, 0xdc, 0xe6, 0xbc, 0x2b, 0xc7, - 0x97, 0xe6, 0xe2, 0xff, 00, 0xcb, 0xc, 0x8, 0xce, 0x78, - 0xaf, 0x63, 0xf1, 0x3d, 0xcf, 0xd9, 0xec, 0x9b, 0x9c, 0x71, - 0x5f, 0x3f, 0x6a, 0xf7, 0x6, 0xe7, 0x51, 0x91, 0x89, 0x27, - 0x9a, 0xf8, 0x1e, 0x27, 0xc4, 0x5a, 0xa, 0x92, 0xea, 0x7e, - 0x61, 0xc6, 0x38, 0xae, 0x58, 0x46, 0x82, 0xea, 0x55, 0xe9, - 0x45, 0x14, 0x57, 0xe7, 0x47, 0xe5, 0x3b, 0x5, 0x14, 0x51, - 0x4c, 00, 0x8c, 0x8c, 0xe, 0xa6, 0xbd, 0x8f, 0xe1, 0xae, - 0x9d, 0xf6, 0x7b, 0x64, 0x72, 0xb8, 0x38, 0xaf, 0x24, 0xd3, - 0x62, 0xf3, 0xef, 0xe2, 0x4f, 0xf6, 0xab, 0xdf, 0xfc, 0x29, - 0x6e, 0xb0, 0x59, 0xa8, 0x3, 0x1c, 0x57, 0xd8, 0x70, 0xdd, - 0xe, 0x7a, 0xee, 0xa3, 0xe8, 0x7d, 0xef, 0x8, 0xe1, 0xbd, - 0xae, 0x29, 0xd6, 0x7d, 0xd, 0xe1, 0x4b, 0x48, 0x29, 0x6b, - 0xf5, 0x23, 0xf6, 0x80, 0xa4, 0xcd, 0x23, 0x38, 0x3, 0x93, - 0x50, 0xbd, 0xd4, 0x71, 0xa9, 0x25, 0x80, 0xa9, 0x6d, 0x2d, - 0xd9, 0x2e, 0x49, 0x6e, 0xc9, 0x5e, 0x40, 0x8a, 0x49, 0xe0, - 0xf, 0x5a, 0xf2, 0xdf, 0x8a, 0x5e, 0x20, 0x8e, 0x58, 0x63, - 0xb7, 0x8a, 0x40, 0xdc, 0x9e, 0x95, 0xb3, 0xe2, 0xef, 0x19, - 0x25, 0xa4, 0x2f, 0x1c, 0x64, 0xf4, 0xec, 0x6b, 0xc8, 0x35, - 0x2b, 0xf3, 0xa8, 0xcf, 0xbd, 0x89, 0x3d, 0x4f, 0x26, 0xbe, - 0x1b, 0x3e, 0xcd, 0xa2, 0xa9, 0xbc, 0x3d, 0x27, 0x76, 0xf7, - 0x3f, 0x38, 0xe2, 0x6c, 0xee, 0xa, 0x94, 0xb0, 0x94, 0x5d, - 0xdb, 0xdc, 0xaa, 0x4e, 0xee, 0x69, 0x28, 0xa2, 0xbf, 0x37, - 0x3f, 0x23, 0xa, 0x28, 0xa2, 0x80, 0xc, 0xd7, 0x79, 0xf0, - 0xe7, 0x44, 0x7b, 0xad, 0xb3, 0x18, 0xdb, 0x6e, 0x7a, 0xd7, - 0x17, 0xa7, 0xda, 0x9b, 0xcb, 0x8d, 0xa2, 0xbd, 0xeb, 0xc0, - 0xfa, 0x62, 0xe9, 0xfa, 0x14, 0xb, 0x81, 0xb8, 0x8c, 0xe7, - 0x15, 0xf4, 0xf9, 0x6, 0xf, 0xeb, 0x38, 0x8e, 0x79, 0x6c, - 0x8f, 0xb2, 0xe1, 0x8c, 0xbf, 0xeb, 0x98, 0xbf, 0x69, 0x2f, - 0x86, 0x26, 0xfd, 0xbc, 0x62, 0x28, 0x95, 00, 0xe0, 0xa, - 0x96, 0x90, 0x1, 0x4b, 0x5f, 0xad, 0xa5, 0x6d, 0x8f, 0xdc, - 0x92, 0xb2, 0xb2, 0xa, 0x28, 0xa2, 0x98, 0xc2, 0x8a, 0x28, - 0xa0, 0x4, 0x27, 0x14, 0x8c, 0xdb, 0x41, 0x3e, 0x94, 0xa7, - 0xa8, 0xa8, 0x2e, 0xdf, 0x64, 0x2c, 0x69, 0x37, 0x65, 0x72, - 0x64, 0xf9, 0x53, 0x67, 0x9a, 0x7c, 0x50, 0xd4, 0x82, 0xc2, - 0xd1, 0x6, 0x19, 0x22, 0xbc, 0xad, 0x47, 0x15, 0xd5, 0x7c, - 0x41, 0xbe, 0x37, 0x1a, 0xa1, 0x4c, 0x9c, 0xf, 0x7f, 0xad, - 0x72, 0xc2, 0xbf, 0x16, 0xcd, 0xeb, 0xfb, 0x7c, 0x5c, 0x9f, - 0x6d, 0xf, 0xe7, 0xbc, 0xf7, 0x11, 0xf5, 0x9c, 0x74, 0xdf, - 0x45, 0xa0, 0x51, 0x45, 0x15, 0xe3, 0x1e, 00, 0x50, 0x4e, - 0x5, 0x14, 0x8d, 0xe9, 0xeb, 0x43, 0xd8, 0x4f, 0x63, 0xa9, - 0xf0, 0x1d, 0x89, 0x9a, 0xe8, 0x3e, 0xd3, 0xd6, 0xbd, 0xd6, - 0xc2, 0x3f, 0x2a, 0xd9, 0x17, 0xa1, 0xc5, 0x79, 0x8f, 0xc3, - 0x7b, 0x1f, 0x96, 0x33, 0x81, 0xd2, 0xbd, 0x55, 00, 00, - 0x1, 0x5f, 0xab, 0xf0, 0xf6, 0x1f, 0xd9, 0x61, 0xb9, 0xbb, - 0x9f, 0xb7, 0xf0, 0xae, 0x17, 0xd8, 0xe1, 0x39, 0xdf, 0x51, - 0xd4, 0x51, 0x45, 0x7d, 0x61, 0xf6, 0xe1, 0x45, 0x14, 0x50, - 0x1, 0x48, 0xc4, 0x1, 0x93, 0x4b, 0x54, 0x75, 0x8b, 0xa1, - 0x69, 0x61, 0x2c, 0x87, 0xb2, 0x9a, 0x89, 0xc9, 0x42, 0x2e, - 0x4f, 0xa1, 0x13, 0x92, 0x84, 0x5c, 0x9f, 0x43, 0x83, 0xf8, - 0x9f, 0xaf, 0x2c, 0x70, 0x2c, 0x31, 0xb8, 0xcf, 0xa5, 0x79, - 0x2c, 0x8e, 0x65, 0x72, 0xc6, 0xb6, 0x3c, 0x57, 0xa8, 0xb5, - 0xf6, 0xa2, 0x72, 0x49, 00, 0x93, 0x58, 0xb5, 0xf8, 0xbe, - 0x6b, 0x8b, 0x78, 0xbc, 0x4c, 0xa5, 0xd1, 0x1f, 0xcf, 0x99, - 0xde, 0x39, 0xe3, 0xb1, 0x72, 0x9f, 0x44, 0x14, 0x51, 0x45, - 0x79, 0x7, 0x80, 0x14, 0x51, 0x41, 0xa4, 0x21, 0xd1, 0xa3, - 0x4b, 0x22, 0xa2, 0x82, 0x49, 0xec, 0x2b, 0xd2, 0xbe, 0x1e, - 0xf8, 0x51, 0x8c, 0xe2, 0x69, 0xa2, 0x60, 0x31, 0xde, 0xb9, - 0x7f, 0x5, 0xe9, 0x1f, 0x6e, 0xd5, 0xa3, 0xc8, 0xc8, 0x1c, - 0xf4, 0xaf, 0x78, 0xb1, 0xb3, 0x4b, 0x38, 0x55, 0x15, 0x40, - 0xe3, 0xb0, 0xaf, 0xb5, 0xe1, 0xfc, 0xb1, 0x57, 0x7f, 0x58, - 0xa9, 0xb2, 0x3f, 0x45, 0xe1, 0x7c, 0x9d, 0x62, 0x25, 0xf5, - 0xaa, 0xbb, 0x45, 0xe8, 0x4b, 0x14, 0x4b, 0x12, 0xed, 0x40, - 00, 0x15, 0x26, 0x28, 0x14, 0xb5, 0xfa, 0x75, 0x8f, 0xd8, - 0x12, 0x49, 0x59, 0x5, 0x14, 0x51, 0x40, 0xc2, 0x8a, 0x28, - 0xa0, 0x4, 0x35, 0x4f, 0x54, 0x83, 0xed, 0x16, 0x8e, 0xb8, - 0xc9, 0xc5, 0x5c, 0x34, 0xc9, 0x7e, 0xe3, 0x7d, 0x2a, 0x27, - 0x15, 0x28, 0xb4, 0xc8, 0x9c, 0x54, 0xa2, 0xd3, 0x3c, 0x3, - 0xc6, 0x96, 0x82, 0xd7, 0x50, 0x2a, 0x6, 0x39, 0xe6, 0xb9, - 0xca, 0xee, 0xbe, 0x21, 0xdb, 0x84, 0xb8, 0x77, 0x3d, 0x79, - 0xae, 0x14, 0x74, 0xaf, 0xc4, 0xb3, 0x1a, 0x7e, 0xcf, 0x13, - 0x28, 0x9f, 0xce, 0x99, 0xb5, 0x3f, 0x65, 0x8c, 0x9c, 0x7c, - 0xc2, 0x8a, 0x28, 0xaf, 0x30, 0xf2, 0x2, 0x8a, 0x28, 0xa0, - 0xd, 0xbf, 0x8, 0x30, 0x5d, 0x55, 0x9, 0xe8, 0xd, 0x7b, - 0xfe, 0x97, 0x2f, 0x9b, 0x68, 0x87, 0xda, 0xbe, 0x78, 0xd0, - 0x18, 0xa5, 0xf2, 0x1, 0xdd, 0xab, 0xe8, 0x2d, 0x5, 0x71, - 0xa6, 0xc3, 0xf4, 0xaf, 0xd1, 0xb8, 0x5e, 0x5e, 0xe4, 0xa2, - 0x8f, 0xd6, 0x38, 0x32, 0x6d, 0xc2, 0x71, 0x34, 0x6a, 0x19, - 0xe5, 0x11, 0x44, 0xee, 0x4e, 00, 0x1d, 0x6a, 0x6a, 0xc8, - 0xf1, 0x2c, 0xff, 00, 0x67, 0xd2, 0xa5, 0x6c, 0xe0, 0xe2, - 0xbe, 0xe2, 0xac, 0xfd, 0x9c, 0x1c, 0xfb, 0x1f, 0xa3, 0x57, - 0xa9, 0xec, 0xa9, 0x4a, 0x7d, 0x91, 0xe3, 0x9e, 0x37, 0xd5, - 0x3e, 0xd7, 0xa8, 0xcb, 0xb5, 0x81, 0x19, 0x23, 0xf5, 0xae, - 0x48, 0x77, 0xab, 0xba, 0xa3, 0xf9, 0x97, 0x72, 0x31, 0x39, - 0xcb, 0x13, 0x54, 0xeb, 0xf0, 0xbc, 0x5d, 0x57, 0x5e, 0xbc, - 0xa6, 0xfb, 0x9f, 0xcd, 0xf8, 0xea, 0xd2, 0xc4, 0xe2, 0x25, - 0x52, 0x5d, 0xc2, 0x8a, 0x28, 0xae, 0x53, 0x84, 0x28, 0xa2, - 0x82, 0x70, 0x28, 0x6e, 0xc8, 0x46, 0xf7, 0x83, 0x74, 0xcf, - 0xed, 0xd, 0x49, 0x72, 0x85, 0x80, 0x3e, 0x95, 0xef, 0x1a, - 0x3d, 0x82, 0x58, 0xda, 0xaa, 0xaa, 0xe3, 0x8a, 0xf2, 0xaf, - 0x86, 0x4a, 0xa8, 0xfb, 0x8f, 0x52, 0x6b, 0xd8, 0xa3, 0xfb, - 0x80, 0xfb, 0x66, 0xbf, 0x52, 0xe1, 0xcc, 0x3c, 0x21, 0x87, - 0xf6, 0x9d, 0x59, 0xfb, 0x3f, 0x9, 0x61, 0x61, 0xc, 0x2f, - 0xb5, 0xea, 0xc7, 0xd2, 0xa, 0x5a, 0x2b, 0xec, 0x4f, 0xbf, - 0xa, 0x28, 0xa2, 0x80, 0x10, 0x8c, 0xd1, 0x4b, 0x45, 00, - 0x26, 0x33, 0x4c, 0x92, 0x25, 0x91, 0x70, 0xc0, 0x1f, 0xad, - 0x49, 0x48, 0x7a, 0x8a, 0x56, 0x13, 0x57, 0xd1, 0x99, 0xd0, - 0x69, 0x71, 0xc5, 0x39, 0x90, 0x28, 0x15, 0x2d, 0xc1, 0xa, - 0xd, 0x5b, 0x6e, 0x14, 0xd6, 0x75, 0xdb, 0xf0, 0x6a, 0x61, - 0x8, 0xc1, 0x5a, 0x24, 0x42, 0x9c, 0x69, 0xab, 0x45, 0x19, - 0x37, 0xaf, 0xd6, 0xb9, 0xbd, 0x42, 0x4f, 0xbd, 0x5b, 0x97, - 0xaf, 0xd6, 0xb9, 0xad, 0x49, 0xf1, 0x9a, 0xb3, 0x43, 0x3, - 0x52, 0x90, 0x73, 0xcd, 0x72, 0x3a, 0xac, 0x98, 0xd, 0xcd, - 0x74, 0x5a, 0x93, 0xf5, 0xae, 0x47, 0x57, 0x93, 00, 0xd0, - 0x7, 0x2b, 0xac, 0x4b, 0xf7, 0xb9, 0xaf, 0x25, 0xf8, 0x83, - 0x7f, 0xb6, 0x36, 0x19, 0x1d, 0x2b, 0xd3, 0x35, 0xa9, 0x71, - 0xba, 0xbc, 0x37, 0xe2, 0x45, 0xf7, 0x12, 0x63, 0x3c, 0xf, - 0x5a, 0xe3, 0xc5, 0x4b, 0x96, 0x9b, 0x38, 0x31, 0xb3, 0xe4, - 0xa2, 0xcf, 0x9f, 0xbe, 0x22, 0x5e, 0xf9, 0x92, 0xc8, 0x37, - 0x3, 0xcd, 0x79, 0x4e, 0xa9, 0x27, 0x26, 0xbb, 0x7f, 0x18, - 0xdc, 0xf9, 0xb7, 0x52, 0x72, 0x48, 0xc9, 0xaf, 0x3d, 0xd5, - 0x24, 0xeb, 0x5f, 0xf, 0xf, 0x7e, 0xa3, 0x67, 0xe7, 0x14, - 0xff, 00, 0x79, 0x59, 0xb3, 0x6, 0xf5, 0xb2, 0xc6, 0xb2, - 0xa7, 0x6e, 0xb5, 0x7e, 0xe9, 0xf9, 0x35, 0x99, 0x33, 0x63, - 0x9a, 0xf7, 0xe9, 0x2e, 0x87, 0xd4, 0x50, 0x89, 0xfa, 0x31, - 0xff, 00, 0x4, 0xe7, 0xf0, 0x44, 0xd1, 0x68, 0x9a, 0x6d, - 0xe4, 0xd6, 0xce, 0xa6, 0x7b, 0x87, 0xb8, 0x70, 0xc3, 0x39, - 0x8c, 0x64, 0x23, 0x7b, 0xf, 0x9a, 0xbf, 0x46, 0x61, 0x7e, - 0x3a, 0xd7, 0xcc, 0xbf, 0xb1, 0xe7, 0x84, 0x8f, 0x85, 0xfc, - 0x29, 0xd, 0xbb, 0x2a, 0xa7, 0xd8, 0xac, 0xe1, 0xb6, 0xe9, - 0xd4, 0xe0, 0xe7, 0xf9, 0x7e, 0xb5, 0xf4, 0xa4, 0x2f, 0xc0, - 0xaf, 0xa2, 0x82, 0xb4, 0x52, 0x3e, 0xae, 0x9a, 0xe5, 0x82, - 0x46, 0xa4, 0x2d, 0x56, 0x91, 0xab, 0x3e, 0x6, 0xcd, 0x5d, - 0x88, 0xd5, 0x96, 0x5d, 0x8d, 0xaa, 0xc2, 0x1c, 0xd5, 0x48, - 0xaa, 0xc2, 0x1e, 0x28, 0x2, 0xca, 0x1c, 0xa, 0x95, 0x4d, - 0x40, 0x3b, 0x54, 0xc9, 0x40, 0x13, 0x2b, 0x71, 0x4e, 0xa8, - 0xc7, 0x4a, 0x72, 0x9a, 00, 0x90, 0x1c, 0xd1, 0x48, 0x3a, - 0x52, 0xd0, 0x3, 0xe8, 0xa4, 0x7, 0x34, 0xb4, 00, 0xca, - 0x46, 0xa5, 0xa2, 0x80, 0x22, 0x26, 0xa3, 0x6a, 0x94, 0x8c, - 0x53, 0x18, 0xa, 00, 0x84, 0xf5, 0xa8, 0x65, 0x3c, 0x54, - 0xed, 0x55, 0xe5, 0x34, 0x1, 0x5a, 0x43, 0x55, 0x25, 0x3c, - 0x9a, 0xb3, 0x21, 0xaa, 0x72, 0x9a, 00, 0xf1, 0xff, 00, - 0xda, 0x8f, 0xc4, 0xcb, 0xe1, 0xcf, 0x83, 0x7a, 0xf3, 0x6f, - 0x65, 0x9e, 0xee, 0x31, 0x6b, 0x1a, 0xa9, 0xc6, 0xed, 0xec, - 0x15, 0x86, 0x71, 0xfd, 0xd2, 0x7a, 0xd7, 0x8a, 0xfe, 0xc6, - 0x7e, 0x18, 0x38, 0xbb, 0xd4, 0x59, 0x30, 0x32, 0x23, 0x53, - 0x8e, 0xbd, 0xf, 0xad, 0x68, 0xfe, 0xdd, 0x5e, 0x20, 0x2d, - 0xf, 0x86, 0x74, 0x8, 0xd9, 0x33, 0x24, 0xad, 0x74, 0xe0, - 0x7d, 0xe2, 00, 0x2b, 0x8f, 0xa6, 0x48, 0xaf, 0x4a, 0xfd, - 0x98, 0xfc, 0x34, 0x34, 0x7f, 0x3, 0x59, 0x12, 0x8, 0x79, - 0xbf, 0x78, 0x77, 0x2e, 0x3a, 0x81, 0xfe, 0x15, 0xf1, 0x93, - 0xff, 00, 0x6b, 0xce, 0x94, 0x7a, 0x53, 0x5f, 0x8b, 0x3f, - 0x3e, 0xab, 0xfe, 0xdd, 0xc4, 0x51, 0x8f, 0x4a, 0x51, 0xfc, - 0x59, 0xef, 0xfa, 0x3c, 0x3b, 0x62, 0x1f, 0x4a, 0xdd, 0x51, - 0x85, 0x15, 0x9d, 0xa7, 0x47, 0xb5, 0x14, 0x56, 0x95, 0x7d, - 0x99, 0xfa, 0x8, 0x51, 0x45, 0x14, 00, 0x51, 0x45, 0x62, - 0x78, 0xc7, 0xc4, 0x31, 0x78, 0x63, 0xc3, 0xb7, 0xba, 0x84, - 0xcc, 0xa8, 0xb0, 0xc6, 0x5b, 0x2e, 0xc0, 0xc, 0xe2, 0x80, - 0x39, 0x9f, 0x8d, 0x3f, 0x14, 0x6c, 0xbe, 0x18, 0x78, 0x32, - 0xef, 0x54, 0x9e, 0x54, 0xf3, 0x15, 0x4e, 0xd5, 0xdd, 0x83, - 0xfc, 0x8d, 0x7e, 0x28, 0x7e, 0xd2, 0xff, 00, 0xb5, 0x9d, - 0xf7, 0xc4, 0x4d, 0x6a, 0xf0, 0x5b, 0xdd, 0x4c, 0x81, 0xb8, - 0xca, 0xbf, 0xb0, 0xe9, 0xf2, 0x8a, 0xef, 0x7f, 0x6d, 0x8f, - 0xda, 0xa6, 0xfb, 0xc5, 0x73, 0xdc, 0xe9, 0x96, 0xcd, 0x3, - 0x41, 0xbc, 0x8c, 0xab, 0x6, 0x27, 0x91, 0x5f, 0x7, 0xcb, - 0x23, 0xdd, 0xce, 0x5c, 0xf2, 0xcc, 0x68, 0x2, 0xed, 0xc7, - 0x88, 0xb5, 0xb, 0x87, 0x2c, 0xd7, 0x93, 0x36, 0x4f, 0x77, - 0x35, 0x7, 0xf6, 0xa5, 0xd1, 0xeb, 0x3b, 0x9f, 0xc6, 0x8f, - 0xec, 0xab, 0x9d, 0xbb, 0xbc, 0xb6, 0xc7, 0xae, 0xd, 0x57, - 0x8e, 0x32, 0xd2, 0xaa, 0x11, 0x82, 0x58, 0xf, 0xd6, 0x80, - 0x3e, 0x8a, 0xfd, 0x94, 0x7c, 0x39, 0x71, 0xe2, 0xf, 0x19, - 0xe9, 0xd1, 0xe4, 0x9d, 0xf2, 0x82, 0x49, 0x19, 0xe3, 0xf3, - 0xaf, 0xdb, 0xed, 0x56, 0x57, 0xf0, 0x2f, 0xc2, 0x4b, 0x24, - 0x8d, 0xbc, 0x81, 0x6f, 0x6a, 0x19, 0x9b, 0xf5, 0xf7, 0xf5, - 0xaf, 0xcc, 0x3f, 0xf8, 0x27, 0x4f, 0x80, 0x4e, 0xad, 0xe3, - 0x5b, 0x29, 0xb6, 0xbe, 0x23, 0x23, 0x9d, 0xa7, 0x1d, 0xab, - 0xf4, 0xc3, 0xf6, 0xa4, 0x65, 0xb1, 0xf8, 0x4b, 0xa8, 0x84, - 0x3b, 0x5b, 0xca, 0xda, 0x9, 0xec, 0x1, 0x1f, 0x99, 0xa0, - 0xf, 0xcd, 0x4f, 0x88, 0x1f, 0xb5, 0xb6, 0xa3, 0x6d, 0xe3, - 0x1b, 0xd8, 0x63, 0xbf, 0x90, 0x47, 0x1b, 0x1, 0x8f, 0x33, - 0xdb, 0xfd, 0xda, 0xf7, 0xcf, 0xd8, 0xff, 00, 0xe3, 0x85, - 0xef, 0x8d, 0xf5, 0xa3, 0x2c, 0xf7, 0x4f, 0x2a, 0x6f, 0xc0, - 0xcb, 0xf0, 0x3a, 0x7b, 0xa, 0xfc, 0xa5, 0xf8, 0xa7, 0xa7, - 0x9d, 0x3f, 0xc5, 0x57, 0x4, 0x12, 0x1e, 0x69, 0x19, 0x8e, - 0x7f, 0xa, 0xfb, 0xa3, 0xfe, 0x9, 0xdb, 0x6a, 0xc9, 0x7d, - 0xa7, 0xc0, 0xa4, 0x96, 0x91, 0xc1, 0x3c, 0x70, 0x32, 0x45, - 00, 0x7e, 0xc0, 0x69, 0x92, 0x99, 0xec, 0x61, 0x90, 0xe7, - 0xe6, 0x50, 0x79, 0xab, 0x55, 0x5b, 0x4f, 0x8b, 0xc9, 0xb2, - 0x85, 0x3f, 0xba, 0x80, 0x7e, 0x95, 0x34, 0x8d, 0xb5, 0x9, - 0xf6, 0xa0, 0xe, 0x27, 0xe2, 0x5, 0xf8, 0x8a, 0xd5, 0xc6, - 0x7b, 0x57, 0x88, 0xee, 0x2e, 0xec, 0xc7, 0xb9, 0xcd, 0x7a, - 0x47, 0xc4, 0xcb, 0xfc, 0x86, 0x40, 0x79, 0x3c, 0x57, 0x9b, - 0xa8, 0xc0, 0xaf, 0xc8, 0x33, 0xfa, 0xde, 0xdb, 0x16, 0xd7, - 0x63, 0xf0, 0x6e, 0x26, 0xc4, 0x7b, 0x6c, 0x73, 0x8f, 0x44, - 0x2d, 0x14, 0x51, 0x5f, 0x36, 0x7c, 0x98, 0x51, 0x45, 0x14, - 0x1, 0x77, 0x48, 0x9d, 0x6d, 0x6f, 0x16, 0x56, 0xed, 0x5e, - 0x91, 0xa6, 0x78, 0xfe, 0x2b, 0x68, 0x82, 0xf1, 0xf9, 0xff, - 00, 0xf5, 0xab, 0xca, 0xc1, 0xc5, 0x2f, 0x98, 0x71, 0xd2, - 0xbd, 0x4c, 0x1e, 0x61, 0x57, 0x5, 0xfc, 0x33, 0xd9, 0xc0, - 0x66, 0x95, 0xb2, 0xe5, 0xfb, 0xa3, 0xd9, 0x93, 0xe2, 0x44, - 0x18, 0xe4, 0x8f, 0xcf, 0xff, 00, 0xad, 0x49, 0x2f, 0xc4, - 0x68, 0x31, 0xd5, 0x7f, 0x3f, 0xfe, 0xb5, 0x78, 0xd7, 0x9a, - 0x7d, 0x29, 0x19, 0xb7, 0xf5, 0xaf, 0x5b, 0xfd, 0x62, 0xc5, - 0x58, 0xf6, 0xff, 00, 0xd6, 0xbc, 0x6d, 0xac, 0x7a, 0xad, - 0xe7, 0xc4, 0x8, 0xdd, 0x48, 0xd, 0x8f, 0xa1, 0xff, 00, - 0xeb, 0x57, 0x37, 0xa9, 0x78, 0xca, 0x59, 0x41, 0x9, 0x21, - 0xfc, 0xff, 00, 0xfa, 0xd5, 0xc5, 0xf9, 0x62, 0x94, 0x2e, - 0x2b, 0xcf, 0xad, 0x9b, 0xe2, 0x6b, 0x6e, 0xec, 0x79, 0xb5, - 0xf3, 0xec, 0x66, 0x23, 0x46, 0xec, 0x59, 0xba, 0xbf, 0x96, - 0xed, 0xc9, 0x76, 0x24, 0x1f, 0x7a, 0xaf, 0x45, 0x15, 0xe3, - 0xb9, 0x39, 0x3b, 0xb6, 0x7c, 0xfc, 0xa5, 0x29, 0xbb, 0xc9, - 0xea, 0x14, 0x51, 0x41, 0x38, 0xa9, 0x24, 0x29, 0xd1, 0xa3, - 0x4a, 0xe1, 0x14, 0x64, 0x9a, 0x48, 0xd4, 0xca, 0xc1, 0x54, - 0x12, 0x4d, 0x76, 0xfe, 0xd, 0xf0, 0x64, 0xb7, 0x37, 0x29, - 0x2c, 0xa1, 0x82, 0xfa, 0x62, 0xba, 0xf0, 0xb8, 0x5a, 0x98, - 0xba, 0x8a, 0x10, 0x47, 0x76, 0xb, 0x7, 0x57, 0x1d, 0x55, - 0x53, 0xa4, 0x8d, 0x1f, 0x87, 0x7e, 0x14, 0x32, 0xb1, 0x9a, - 0x55, 0xc0, 0xeb, 0xc8, 0xaf, 0x57, 0x86, 0x1, 0x6f, 0x10, - 0x45, 0xe8, 0x2a, 0xd, 0x3b, 0x4f, 0x8f, 0x4f, 0x80, 0x22, - 0xe, 0xd5, 0x72, 0xbf, 0x63, 0xcb, 0xb0, 0x30, 0xc0, 0xd1, - 0x50, 0x5b, 0x9f, 0xbe, 0xe5, 0x59, 0x74, 0x32, 0xea, 0xa, - 0x9c, 0x56, 0xbd, 0x40, 0xc, 0x52, 0xd1, 0x45, 0x7a, 0xa7, - 0xb4, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x21, - 0xac, 0xdd, 0x7a, 0xe3, 0xc8, 0xb2, 0x73, 0xd3, 0x83, 0x5a, - 0x58, 0xae, 0x53, 0xc7, 0x57, 0xa2, 0xdf, 0x4f, 0x93, 0xe9, - 0x5c, 0x78, 0xba, 0x9e, 0xca, 0x84, 0xa4, 0x70, 0x63, 0xaa, - 0xfb, 0x1c, 0x3c, 0xe7, 0xe4, 0x78, 0xaf, 0x88, 0x6e, 0x3e, - 0xd3, 0xab, 0xcc, 0xd9, 0xc8, 0xce, 0x2b, 0x3e, 0x9f, 0x33, - 0x99, 0x67, 0x91, 0xcf, 0x73, 0x4c, 0xaf, 0xc3, 0x2a, 0x4f, - 0xda, 0x4e, 0x53, 0x7d, 0x4f, 0xe6, 0xda, 0xb3, 0xf6, 0x95, - 0x25, 0x3e, 0xed, 0x85, 0x14, 0x51, 0x59, 0x99, 0x85, 0x3a, - 0x8, 0xfc, 0xeb, 0xa8, 0xd0, 0x73, 0xc8, 0xa6, 0xd5, 0xed, - 0x6, 0xf, 0xb4, 0x6a, 0x89, 0xc7, 0x2, 0xae, 0x11, 0xe7, - 0x9c, 0x63, 0xdd, 0x9a, 0x53, 0x8f, 0xb4, 0xa9, 0x18, 0xf7, - 0x67, 0xb0, 0xf8, 0x6, 0xc8, 0xc5, 0x2, 0x92, 0x3b, 0x57, - 0x6d, 0x58, 0x9e, 0x17, 0xb7, 0xf2, 0x6c, 0x14, 0xfa, 0x81, - 0x5b, 0x75, 0xfb, 0x86, 0x2, 0x97, 0xb2, 0xc3, 0xc6, 0x27, - 0xf4, 0x6e, 0x5b, 0x4b, 0xd8, 0xe1, 0x61, 0x11, 0x68, 0xa2, - 0x8a, 0xf4, 0xf, 0x50, 0x28, 0xa2, 0x8a, 00, 0x69, 0xae, - 0x4b, 0xe2, 0x1e, 0xa6, 0x2d, 0x34, 0x97, 0x8c, 0x1f, 0x99, - 0x81, 0xae, 0xb0, 0x9c, 0x3, 0x5e, 0x47, 0xf1, 0x4b, 0x52, - 0xf3, 0x2e, 0x4, 0x43, 0x9e, 0xdd, 0x6b, 0xc3, 0xce, 0x31, - 0x1f, 0x57, 0xc2, 0x49, 0xad, 0xde, 0x87, 0xce, 0x67, 0xf8, - 0xaf, 0xaa, 0xe0, 0x67, 0x25, 0xbb, 0xd0, 0xf3, 0xab, 0x89, - 0xc, 0xb3, 0x97, 0xf5, 0x34, 0xda, 0x5, 0x15, 0xf8, 0xc5, - 0xdb, 0x6d, 0xb3, 0xf9, 0xf6, 0xf7, 0x77, 0x61, 0x45, 0x14, - 0x50, 0x1, 0x4f, 0x82, 0x33, 0x35, 0xc4, 0x69, 0xea, 0x69, - 0x95, 0xaf, 0xe1, 0x8b, 0x33, 0x77, 0xaa, 0xc4, 0x30, 0x70, - 0x8, 0xad, 0xa9, 0x41, 0xd5, 0xa9, 0x18, 0x2e, 0xa6, 0xd4, - 0x69, 0xba, 0xd5, 0x63, 0x4d, 0x75, 0x67, 0xa6, 0xfc, 0x3d, - 0xd0, 0xc5, 0xb0, 0xf3, 0x98, 0x73, 0x8a, 0xf4, 0x11, 0x59, - 0x9a, 0x1d, 0xa0, 0xb6, 0xb3, 0x51, 0xed, 0x5a, 0x95, 0xfb, - 0x6e, 0x3, 0xe, 0xb0, 0xd4, 0x23, 0x4, 0x7f, 0x45, 0x65, - 0x98, 0x58, 0xe1, 0x30, 0xd1, 0xa7, 0x10, 0xa2, 0x8a, 0x2b, - 0xd0, 0x3d, 0x50, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, - 0x1, 0x8, 0xce, 0x29, 0x1c, 0x65, 0x48, 0xf6, 0xa7, 0x52, - 0x13, 0x80, 0x68, 0x13, 0x3c, 0x77, 0xe2, 0x87, 0x13, 0x95, - 0x3, 0xde, 0xbc, 0xf2, 0xbd, 0x17, 0xe2, 0x5a, 0xee, 0x9a, - 0x47, 0x3d, 0xab, 0xce, 0x57, 0xa5, 0x7e, 0x2f, 0x9c, 0xab, - 0x63, 0x66, 0x7f, 0x3e, 0xe7, 0xff, 00, 0xef, 0xf3, 0x16, - 0x8a, 0x28, 0xaf, 0x10, 0xf9, 0xd0, 0xa2, 0x8a, 0x28, 0x3, - 0x5f, 0xc2, 0xf1, 0x79, 0xba, 0xb4, 0x43, 0xd0, 0xe6, 0xbe, - 0x82, 0xd2, 0x6, 0x2c, 0x90, 0x7a, 0xa, 0xf0, 0x2f, 0x8, - 0xf, 0xf8, 0x99, 0x6e, 0xf4, 0x35, 0xef, 0x7a, 0x38, 0x3f, - 0x63, 0x43, 0xed, 0x5f, 0xa3, 0x70, 0xba, 0xf7, 0x24, 0xcf, - 0xd6, 0x78, 0x35, 0x5a, 0x9c, 0xd9, 0x7e, 0xb9, 0x6f, 0x1e, - 0x4f, 0xb3, 0x4a, 0x65, 0xee, 0x41, 0xae, 0xa6, 0xb8, 0x5f, - 0x88, 0x92, 0x11, 0x9, 0x51, 0xd3, 0x15, 0xf5, 0x59, 0x94, - 0xf9, 0x30, 0xb3, 0x67, 0xda, 0x66, 0xd5, 0x3d, 0x9e, 0xe, - 0xa3, 0xf2, 0x3c, 0x66, 0xf4, 0xff, 00, 0xa4, 0x11, 0xef, - 0x50, 0xd3, 0xa6, 0x6d, 0xf7, 0x32, 0x1f, 0x73, 0x4d, 0xaf, - 0xc4, 0x5b, 0xbb, 0x67, 0xf3, 0x9c, 0x9d, 0xe4, 0xc2, 0x8a, - 0x28, 0xa9, 0x10, 0x50, 0x7a, 0x51, 0x45, 0x2, 0x3a, 0xff, - 00, 0x5, 0x6a, 0x2b, 0x6b, 0x74, 0x8a, 0x4e, 0x5, 0x7b, - 0x65, 0x85, 0xec, 0x57, 0x70, 0xa9, 0x46, 0x7, 0x8a, 0xf9, - 0xae, 0xce, 0xe3, 0xec, 0xb2, 0x86, 0xcd, 0x7a, 0x47, 0x84, - 0x3c, 0x66, 0x23, 0x65, 0x88, 0x95, 0x23, 0xdd, 0xab, 0xee, - 0x72, 0x2c, 0xd2, 0x34, 0x57, 0xb1, 0xa9, 0xd4, 0xfd, 0x27, - 0x86, 0x73, 0x88, 0x61, 0xff, 00, 0xd9, 0xea, 0xbd, 0x19, - 0xea, 0xf4, 0x56, 0x7d, 0x86, 0xae, 0x97, 0xa0, 0x74, 0x19, - 0xf4, 0x35, 0x7f, 0x76, 0x47, 0x15, 0xfa, 0x3c, 0x67, 0x19, - 0xab, 0xc5, 0x9f, 0xac, 0xc2, 0xa4, 0x6a, 0x2e, 0x68, 0xbb, - 0x8b, 0x45, 0x20, 0x34, 0x3, 0x9a, 0xb3, 0x41, 0x68, 0xa2, - 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x64, 0xa7, 0xb, 0x59, - 0x37, 0x8f, 0xd7, 0xeb, 0x5a, 0x73, 0x9e, 0x2b, 0x1a, 0xf5, - 0xba, 0xd0, 0x6, 0x3d, 0xf3, 0xf0, 0x6b, 0x97, 0xd4, 0xa4, - 0xc1, 0x6a, 0xe8, 0xaf, 0x5f, 0x83, 0x5c, 0xa6, 0xa7, 0x27, - 0x2d, 0x40, 0x1c, 0xee, 0xa5, 0x27, 0x5a, 0xe3, 0xf5, 0x89, - 0x78, 0x6a, 0xe9, 0xf5, 0x17, 0xfb, 0xdc, 0xd7, 0x19, 0xac, - 0x4b, 0xf7, 0xa8, 0x3, 0x90, 0xd7, 0xe7, 0x9, 0x14, 0x86, - 0xbe, 0x77, 0xf8, 0x97, 0x7e, 0x2, 0xcb, 0xce, 0x3a, 0xd7, - 0xba, 0x78, 0xae, 0xe7, 0xcb, 0xb5, 0x90, 0xd7, 0xcc, 0xff, - 00, 0x13, 0x2f, 0xf3, 0xe6, 0x8c, 0x8e, 0xfd, 0xeb, 0xc5, - 0xcc, 0xa7, 0xcb, 0x4e, 0xc7, 0xcf, 0x66, 0xf5, 0x39, 0x69, - 0xd8, 0xf1, 0x3f, 0x10, 0xdc, 0x19, 0x27, 0x94, 0xfb, 0xd7, - 0x11, 0xa9, 0xc9, 0x9c, 0xd7, 0x53, 0xac, 0x4b, 0x9d, 0xe7, - 0xd4, 0xd7, 0x1b, 0xa9, 0x49, 0x92, 0x45, 0x7c, 0xbe, 0x16, - 0x37, 0x77, 0x3e, 0x37, 0x5, 0x1b, 0xbb, 0x99, 0x17, 0xd, - 0xd6, 0xb6, 0x7e, 0x19, 0x68, 0x5f, 0xf0, 0x94, 0xfc, 0x43, - 0xd0, 0xf4, 0xc3, 0xf7, 0x2e, 0x2e, 0x55, 0x5c, 0xe3, 0x38, - 0x5e, 0xe7, 0x1d, 0xeb, 0xa, 0x76, 0xaf, 0x60, 0xfd, 0x91, - 0xbc, 0x38, 0x75, 0xaf, 0x8a, 0xf1, 0x5e, 0xb0, 0x26, 0x1b, - 0x8, 0x9a, 0x43, 0xb4, 0x7f, 0x11, 0x7, 0x6f, 0x3f, 0x51, - 0x5f, 0x4b, 0x42, 0x37, 0x92, 0x3e, 0xbb, 0xd, 0x1b, 0xc9, - 0x1f, 0xae, 0x9f, 0x5, 0xb4, 0xef, 0xec, 0xff, 00, 0x7, - 0xc5, 0x21, 0x3f, 0x34, 0xcc, 0x5b, 0xa7, 0x6e, 0xd5, 0xe8, - 0xf0, 0xb7, 0x4e, 0x6b, 0x9a, 0xf0, 0x85, 0x8a, 0xe9, 0x5e, - 0x1f, 0xb1, 0xb5, 0x4, 0x9f, 0x2e, 0x20, 0x9, 0x3d, 0xeb, - 0xa2, 0x81, 0xb9, 0xaf, 0x74, 0xfa, 0x53, 0x4e, 0x3, 0xfc, - 0xea, 0xf4, 0x47, 0x26, 0xb3, 0xad, 0xdb, 0x35, 0x7a, 0x23, - 0xcd, 00, 0x5d, 0x8c, 0x8a, 0xb2, 0x95, 0x52, 0x3a, 0xb3, - 0x19, 0xe2, 0x80, 0x2d, 0x27, 0x5a, 0x95, 0x7a, 0x54, 0x11, - 0xe3, 0x19, 0xab, 0x9, 0x40, 0x12, 0x2d, 0x3d, 0x69, 0x8b, - 0x52, 0xe, 0x94, 00, 0xa3, 0x93, 0x4e, 0xa6, 0xaf, 0x5a, - 0x75, 00, 0x39, 0x69, 0x69, 0xa0, 0xd3, 0xa8, 0x1, 0x94, - 0x87, 0xa5, 0x2d, 0x23, 0x50, 0x3, 0x1b, 0x93, 0x51, 0xb1, - 0xa7, 0x31, 0xc8, 0xa6, 0x35, 00, 0x44, 0xf5, 0x5e, 0x53, - 0x53, 0xc9, 0x55, 0x65, 0xa0, 0xa, 0xf2, 0x9a, 0xa7, 0x29, - 0xab, 0x32, 0x1a, 0xc8, 0xd7, 0x75, 0x18, 0x74, 0xad, 0x36, - 0xea, 0xee, 0x79, 0x52, 0x8, 0xa1, 0x8c, 0xb3, 0x4b, 0x21, - 0xc0, 0x5a, 0x99, 0x4b, 0x96, 0x2e, 0x4f, 0xa1, 0x32, 0x92, - 0x84, 0x5c, 0x9f, 0x43, 0xe1, 0x1f, 0x8e, 0xba, 0xb7, 0xfc, - 0x2c, 0x4f, 0xda, 0x2a, 0x5b, 0x3b, 0x6d, 0xd2, 0x5b, 0x5b, - 0x4b, 0x15, 0x9a, 0x7, 0x18, 0xc3, 00, 0xa1, 0xfa, 0x76, - 0xdc, 0xd, 0x7d, 0xb7, 0xf0, 0xef, 0x49, 0x1a, 0x76, 0x8b, - 0x65, 0x6e, 0x10, 0x28, 0x8e, 0x35, 0x5c, 0x1, 0xc7, 0x41, - 0x5f, 0xa, 0x7c, 00, 0xb5, 0x97, 0xc7, 0x7f, 0x16, 0x1b, - 0x58, 0xba, 0x3e, 0x64, 0x92, 0xdc, 0x35, 0xdb, 0xee, 0xe7, - 0x92, 0x73, 0xef, 0x5f, 0xa1, 0xbe, 0x1d, 0xb6, 0x11, 0xc2, - 0x83, 00, 0x60, 0x1, 0xc5, 0x7c, 0x7e, 0x42, 0x9d, 0x6a, - 0xb5, 0xf1, 0x6f, 0xed, 0x4b, 0x4f, 0x44, 0x7c, 0x17, 0xc, - 0xc5, 0xe2, 0x2b, 0x62, 0x71, 0xd2, 0xfb, 0x72, 0x69, 0x7a, - 0x23, 0xa5, 0xb4, 0x5c, 0xa, 0xb5, 0x51, 0x40, 0x30, 0xb5, - 0x2d, 0x7d, 0x91, 0xf7, 0xe1, 0x45, 0x14, 0x50, 0x3, 0x59, - 0x82, 0x82, 0x4f, 0x40, 0x33, 0x5f, 0x12, 0xfe, 0xde, 0xdf, - 0xb4, 0x4, 0x5e, 0x18, 0xf0, 0x16, 0xa3, 0xa6, 0xdb, 0x5d, - 0x98, 0xa5, 0x2a, 0xc3, 0xe5, 0xc6, 0x3a, 0x11, 0xfd, 0x2b, - 0xec, 0x1f, 0x18, 0xea, 0x83, 0x46, 0xf0, 0xdd, 0xfd, 0xde, - 0x9, 0x29, 0x13, 0x11, 0x8f, 0xa1, 0xaf, 0xc4, 0x9f, 0xdb, - 0xc3, 0xe2, 0x75, 0xc6, 0xbb, 0xac, 0x5d, 0x5a, 0x99, 0x1f, - 0x69, 0x90, 0x8c, 0x6e, 0x38, 0x1c, 0x9f, 0x7a, 00, 0xf8, - 0xff, 00, 0x58, 0xd5, 0x2e, 0x35, 0xfd, 0x4d, 0xe4, 0x92, - 0x67, 0x99, 0xe5, 0x93, 0xab, 0x9c, 0xe7, 0x26, 0xbe, 0x8d, - 0xf8, 0x1d, 0xfb, 0x1a, 0x6b, 0xff, 00, 0x12, 0x5e, 0xda, - 0x78, 0x6c, 0xdd, 0xc4, 0x9d, 0x39, 0x6c, 0x77, 0xf4, 0x5a, - 0xf1, 0x8f, 0x84, 0x3e, 0xf, 0x6f, 0x16, 0x78, 0xbb, 0x4a, - 0xb5, 0xca, 0x81, 0x2d, 0xd4, 0x6b, 0x96, 0x19, 0x1f, 0x7b, - 0xe9, 0x5f, 0xd0, 0x7f, 0xc1, 0x9f, 0x83, 0x5a, 0x57, 0xc3, - 0x1f, 0x9, 0xd8, 0xf9, 0x70, 0x42, 0x66, 0x48, 0x43, 0x16, - 0x11, 0xa8, 0x39, 0x39, 0x3e, 0x83, 0xd6, 0x80, 0x3f, 0x24, - 0xfe, 0x33, 0xfe, 0xca, 0x17, 0xbf, 0xb, 0x7c, 0x3b, 0x3d, - 0xd5, 0xdd, 0xba, 0xc5, 0xe5, 0x8c, 0x64, 0x93, 0xe9, 0xee, - 0xa2, 0xbe, 0x37, 0xd2, 0x2d, 0x3e, 0xdd, 0xaf, 0xa4, 0x6a, - 0x3, 0xf, 0x34, 0x7b, 0x77, 0xaf, 0xd4, 0xdf, 0xf8, 0x29, - 0x7f, 0xc4, 0x21, 0xa7, 0x78, 0x6d, 0xec, 0xa3, 0x53, 0xba, - 0x42, 0x78, 0x5e, 0x9c, 0xfa, 0xf3, 0x5f, 0x9a, 0x9f, 0xa, - 0x74, 0x93, 0xaa, 0xf8, 0x92, 0xdc, 0x1e, 0x73, 0x22, 0x81, - 0xf9, 0x8f, 0xf1, 0xa0, 0xf, 0xd6, 0xff, 00, 0xf8, 0x26, - 0x97, 0x80, 0x3e, 0xc5, 0xa4, 0x49, 0xaa, 0x49, 00, 0xc8, - 0x1c, 0x39, 0x1e, 0xc3, 0xa5, 0x7b, 0xe7, 0xed, 0x77, 0xaa, - 0x45, 0xf, 0x82, 0x66, 0xb7, 0x91, 0x88, 0x1b, 0x72, 0x40, - 0xfc, 0x2a, 0x4f, 0xd8, 0xd3, 0xc2, 0x9, 0xe1, 0x8f, 0x85, - 0x36, 0xaf, 0xb5, 0x43, 0xcd, 0xb4, 0xe4, 0xc, 0x7f, 0x8, - 0xaf, 0x22, 0xfd, 0xbb, 0xbc, 0x72, 0xba, 0x5e, 0x81, 0xa8, - 0xae, 0xf2, 0xa1, 0x17, 0x6f, 0xca, 0x79, 0xed, 0xd3, 0x9a, - 00, 0xfc, 0x72, 0xf8, 0xbb, 0x7d, 0x1e, 0xa1, 0xf1, 0x2, - 0xec, 0x45, 0x83, 0x1a, 0x3e, 0x3a, 0xd7, 0xe8, 0x57, 0xfc, - 0x13, 0x7, 0x42, 0x93, 0x56, 0xd7, 0xe3, 0xba, 0x64, 0xd, - 0x14, 0xc, 0x31, 0x9f, 0xba, 0x31, 0x8f, 0xd6, 0xbf, 0x34, - 0x2f, 0xee, 0x9b, 0x56, 0xf1, 0xd, 0xc4, 0xe4, 0x92, 0x5e, - 0x42, 0x79, 0x39, 0xaf, 0xd9, 0x4f, 0xf8, 0x25, 0xff, 00, - 0x80, 0xce, 0x8f, 0xe0, 0x73, 0xa8, 0xb8, 0x5, 0xdd, 0x7a, - 0x81, 0xeb, 0x8f, 0x6e, 0xb4, 0x1, 0xf7, 0xc8, 0x18, 0x2, - 0xab, 0x6a, 0x33, 0x79, 0x36, 0xce, 0x7d, 0xaa, 0xc7, 0x6a, - 0xc6, 0xf1, 0x2d, 0xc8, 0xb7, 0xb2, 0x3c, 0xf6, 0xac, 0x2b, - 0xcd, 0x53, 0xa6, 0xe4, 0x73, 0x62, 0x2a, 0x7b, 0x2a, 0x52, - 0x9b, 0xe8, 0x78, 0xc7, 0x8f, 0x2f, 0x4d, 0xce, 0xa5, 0xb3, - 0x39, 00, 0xd7, 0x37, 0x57, 0x35, 0xab, 0x8f, 0xb5, 0x6a, - 0x73, 0x37, 0x3c, 0x1c, 0x55, 0x3a, 0xfc, 0x37, 0x15, 0x53, - 0xda, 0xd7, 0x9c, 0xdf, 0x73, 0xf9, 0xbf, 0x1b, 0x55, 0xd7, - 0xc4, 0xce, 0x6f, 0xb8, 0x51, 0x45, 0x15, 0xca, 0x71, 0x85, - 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, - 0x40, 0x82, 0x8a, 0x28, 0xa0, 0x61, 0x45, 0x14, 0xaa, 0x37, - 0x11, 0x40, 0x87, 0x2c, 0x32, 0x49, 0xf7, 0x17, 0x35, 0xa3, - 0x61, 0xa0, 0xdc, 0xdd, 0x38, 0x6, 0x23, 0x8a, 0xe8, 0xbc, - 0x1f, 0xa6, 0xc3, 0x73, 0x22, 0xef, 0x40, 0xd9, 0xaf, 0x56, - 0xd3, 0xfc, 0x3f, 0x67, 0x4, 0x2a, 0xc2, 0x15, 0xce, 0x3d, - 0x5, 0x7d, 0x66, 0x5b, 0x92, 0x3c, 0x62, 0xf6, 0x8d, 0xe8, - 0x7d, 0xc6, 0x53, 0xc3, 0xaf, 0x1f, 0x15, 0x52, 0x52, 0xd0, - 0xe2, 0x3c, 0x39, 0xf0, 0xed, 0xe, 0xd9, 0x24, 0x8d, 0x78, - 0xe7, 0x9a, 0xf4, 0x5b, 0xd, 0x3e, 0x2b, 0x18, 0x42, 0x46, - 0xa1, 0x70, 0x3b, 0xa, 0x9d, 0x23, 0x58, 0x86, 0xd5, 0x18, - 0x1e, 0xd5, 0x20, 0xaf, 0xd1, 0x30, 0x78, 0xa, 0x38, 0x38, - 0xda, 0x9a, 0xd4, 0xfd, 0x5f, 0x1, 0x96, 0x61, 0xf2, 0xf8, - 0xda, 0x94, 0x75, 0x13, 0xaf, 0x14, 0xea, 0x28, 0xaf, 0x4c, - 0xf5, 0xc2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x4, 0x63, 0x81, 0x5e, 0x65, 0xf1, 0x42, - 0xff, 00, 0x65, 0xb1, 0x4c, 0xf5, 0xe3, 0x15, 0xe9, 0x53, - 0xb0, 0x48, 0xc9, 0x35, 0xe2, 0x3f, 0x12, 0xaf, 0xfc, 0xeb, - 0xc1, 0x18, 0x27, 0xad, 0x7c, 0xce, 0x7f, 0x5b, 0xd9, 0x61, - 0x1a, 0xee, 0x7c, 0x7f, 0x13, 0xe2, 0x3d, 0x8e, 0x6, 0x4b, - 0xb9, 0xc5, 0x8e, 0x94, 0x51, 0x45, 0x7e, 0x44, 0x7e, 0x12, - 0x82, 0x8a, 0x28, 0xa0, 0x60, 0x4e, 0x1, 0x35, 0xd2, 0x78, - 0x1a, 0xcf, 0xce, 0xbc, 0xdf, 0x8c, 0xf3, 0x5c, 0xd3, 0x9e, - 0x3d, 0xeb, 0xd1, 0x3e, 0x1b, 0xd8, 0xef, 0x2a, 0x71, 0xd6, - 0xbd, 0x4c, 0xb2, 0x97, 0xb6, 0xc5, 0xc5, 0x1e, 0xce, 0x4f, - 0x47, 0xdb, 0xe3, 0x61, 0x13, 0xd5, 0xf4, 0xc8, 0xbc, 0x9b, - 0x38, 0xc7, 0xb7, 0xf4, 0xab, 0x62, 0x99, 0x1a, 0x6d, 0x40, - 0x5, 0x49, 0x5f, 0xb6, 0x41, 0x72, 0xc5, 0x23, 0xfa, 0x26, - 0x11, 0xe5, 0x8a, 0x41, 0x45, 0x14, 0x55, 0x96, 0x14, 0x51, - 0x45, 00, 0x56, 0xd4, 0x25, 0xf2, 0x2d, 0x9d, 0xf3, 0x8c, - 0xa, 0xf0, 0x1f, 0x18, 0xdf, 0x1b, 0xbd, 0x5a, 0x4e, 0x73, - 0x83, 0x5e, 0xd3, 0xe2, 0xcb, 0xc1, 0x6d, 0xa6, 0xca, 0x73, - 0x8e, 0x3b, 0x57, 0xcf, 0xf7, 0xf3, 0x19, 0xef, 0x25, 0x7c, - 0xe7, 0x2c, 0x6b, 0xf3, 0xee, 0x27, 0xaf, 0x65, 0x1a, 0x49, - 0x9f, 0x97, 0x71, 0x96, 0x26, 0xca, 0x14, 0x13, 0x2b, 0xd1, - 0x45, 0x15, 0xf9, 0xe9, 0xf9, 0x58, 0x51, 0x45, 0x14, 00, - 0x1e, 0x95, 0xdf, 0xfc, 0x2d, 0xd3, 0x3e, 0xd5, 0x74, 0xf2, - 0x11, 0x9d, 0xa4, 0x73, 0x5c, 0xa, 0xae, 0xe6, 0x2, 0xbd, - 0x8f, 0xe1, 0x2d, 0x8f, 0x95, 0xa6, 0xcd, 0x21, 0x1c, 0x96, - 0xe2, 0xbe, 0x87, 0x22, 0xa3, 0xed, 0xb1, 0xb1, 0xbe, 0xc8, - 0xfa, 0xae, 0x19, 0xc3, 0xfd, 0x63, 0x30, 0x8d, 0xd6, 0x8b, - 0x53, 0xbe, 0x8e, 0x31, 0x1a, 0x80, 0x38, 0x2, 0xa4, 0xa4, - 0xc5, 0x2d, 0x7e, 0xc2, 0x7e, 0xf4, 0x95, 0xb4, 0xa, 0x28, - 0xa2, 0x98, 0xc2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, - 0x4, 0xef, 0x51, 0xcc, 0xdb, 0x63, 0x6f, 0xa5, 0x4b, 0x55, - 0xef, 0x1b, 0x6c, 0xe, 0x6a, 0x64, 0xec, 0x9b, 0x22, 0x6e, - 0xd1, 0x6c, 0xf1, 0xff, 00, 0x89, 0x13, 0x81, 0x23, 0x2e, - 0x7a, 0xf1, 0x5c, 0x8, 0xe9, 0x5d, 0x4f, 0x8f, 0xee, 0xbc, - 0xed, 0x4c, 0xa8, 0xe9, 0x9f, 0xf1, 0xae, 0x5a, 0xbf, 0x12, - 0xcc, 0xe7, 0xed, 0x31, 0x73, 0x67, 0xf3, 0xbe, 0x73, 0x53, - 0xda, 0x63, 0x66, 0xd0, 0x51, 0x45, 0x15, 0xe5, 0x9e, 0x28, - 0x50, 0x68, 0xa0, 0xf4, 0xa0, 0xe, 0x87, 0xc1, 0x51, 0x19, - 0x2f, 0xd4, 0x1, 0x9c, 0xb5, 0x7b, 0xed, 0x82, 0x79, 0x76, - 0xb1, 0xaf, 0xb5, 0x78, 0xb7, 0xc3, 0x6b, 0x4f, 0x3b, 0x51, - 0x4e, 0x3a, 0x57, 0xb7, 0xa0, 0xc2, 0x81, 0xe9, 0x5f, 0xa9, - 0x70, 0xd5, 0x3e, 0x5c, 0x33, 0x91, 0xfb, 0x37, 0x7, 0xd1, - 0xe5, 0xc2, 0x39, 0xf7, 0x1d, 0x5c, 0x2f, 0xc4, 0x48, 0x8a, - 0x59, 0x3b, 0x9f, 0x43, 0x5d, 0xd5, 0x72, 0x5e, 0x3b, 0xb7, - 0x33, 0xd8, 0x95, 0x3, 0x23, 0x15, 0xee, 0xe6, 0x51, 0xe7, - 0xc2, 0xcd, 0x1f, 0x4d, 0x9b, 0xc3, 0x9f, 0x7, 0x51, 0x2e, - 0xc7, 0x83, 0xb0, 0xc3, 0xb7, 0xd6, 0x92, 0xa6, 0xbd, 0x4f, - 0x2e, 0xed, 0xd7, 0x18, 00, 0xd4, 0x35, 0xf8, 0x8b, 0x56, - 0x93, 0x47, 0xf3, 0xa4, 0x97, 0x2c, 0x9a, 0x61, 0x45, 0x14, - 0x52, 0x10, 0x51, 0x45, 0x14, 00, 0x11, 0x9a, 0x96, 0xda, - 0xf1, 0xad, 0x24, 0xc, 0x99, 0xcf, 0xb5, 0x45, 0x45, 0x34, - 0xda, 0x77, 0x40, 0x9b, 0x8b, 0xbc, 0x77, 0x3a, 0x9d, 0x27, - 0xc6, 0x97, 0x36, 0xec, 0x3e, 0x76, 0x15, 0xda, 0xe9, 0x7e, - 0x39, 0x69, 0x2, 0x87, 0x90, 0xfe, 0x38, 0xaf, 0x20, 0xcb, - 0xe, 0x86, 0xa5, 0x8e, 0xfa, 0xe2, 0x36, 0xf9, 0x5c, 0x8f, - 0xc6, 0xbd, 0xac, 0x2e, 0x71, 0x5f, 0xf, 0xa3, 0x6d, 0xa3, - 0xe8, 0xf0, 0x79, 0xee, 0x27, 0x9, 0xa3, 0x93, 0x68, 0xfa, - 0x2f, 0x4c, 0xd6, 0xe2, 0xbb, 0x41, 0x99, 0x6, 0x7e, 0xb5, - 0xa8, 0xb2, 0xa3, 0xf4, 0x60, 0x7e, 0x86, 0xbe, 0x7d, 0xd2, - 0xbc, 0x4d, 0x77, 0x6e, 0xc3, 0x32, 0x9f, 0xcc, 0xff, 00, - 0x8d, 0x76, 0xda, 0x1f, 0x8c, 0xcb, 0x32, 0x89, 0x1c, 0xe3, - 0xeb, 0xff, 00, 0xd7, 0xaf, 0xba, 0xc1, 0x67, 0xd4, 0xab, - 0x25, 0x19, 0xe8, 0xcf, 0xd2, 0x32, 0xfe, 0x26, 0xa3, 0x88, - 0x4a, 0x35, 0x34, 0x67, 0xa7, 0xd1, 0x59, 0x36, 0x1a, 0xed, - 0xbd, 0xd2, 0xf, 0x9b, 0x9f, 0xad, 0x6a, 0x2b, 0xac, 0x8b, - 0x90, 0x72, 0x2b, 0xea, 0xa1, 0x52, 0x35, 0x15, 0xe2, 0xcf, - 0xb5, 0xa7, 0x56, 0x15, 0x55, 0xe0, 0xee, 0x3a, 0x8a, 0x29, - 0xf, 0x4a, 0xd0, 0xd4, 0xab, 0x72, 0xdc, 0x1a, 0xc5, 0xbc, - 0x7e, 0xb5, 0xad, 0x74, 0xdc, 0x1a, 0xc2, 0xbd, 0x6c, 0x66, - 0x80, 0x31, 0xaf, 0x9f, 0x86, 0xae, 0x4b, 0x53, 0x93, 0x96, - 0xae, 0x9a, 0xfd, 0xfe, 0x53, 0x5c, 0x86, 0xa6, 0xfc, 0xb7, - 0xd6, 0x80, 0x39, 0xed, 0x4a, 0x4e, 0x1a, 0xb8, 0x9d, 0x62, - 0x5f, 0xbd, 0x5d, 0x66, 0xab, 0x2f, 0x6, 0xb8, 0x7d, 0x66, - 0x5f, 0xbd, 0x40, 0x1e, 0x77, 0xe3, 0xab, 0xcf, 0x2e, 0xd9, - 0xc6, 0xec, 0x7f, 0x91, 0x5f, 0x2e, 0xfc, 0x49, 0xbf, 0xdc, - 0xee, 0x3, 0x73, 0x5f, 0x42, 0xfc, 0x45, 0xbd, 0x28, 0x92, - 0x2e, 0x4e, 00, 0xff, 00, 0xa, 0xf9, 0x6f, 0xc7, 0x97, - 0x9e, 0x65, 0xd1, 00, 0xf1, 0xef, 0x5f, 0x2b, 0x9a, 0xcf, - 0xa1, 0xf1, 0x39, 0xdd, 0x5e, 0x88, 0xf3, 0xdd, 0x56, 0x4c, - 0x2b, 0x57, 0x21, 0x7e, 0xf9, 0x63, 0x5d, 0x36, 0xab, 0x27, - 0xc8, 0xd5, 0xc9, 0x5e, 0x3f, 0x26, 0xbc, 0xfc, 0x24, 0x74, - 0x3c, 0xcc, 0x14, 0x74, 0x33, 0xe7, 0x3c, 0x1a, 0xfa, 0xff, - 00, 0xfe, 0x9, 0xf7, 0xe1, 0x44, 0xbf, 0xbb, 0xd4, 0xef, - 0x9a, 0xdc, 0x39, 0xb9, 0xb9, 0x8a, 0xd7, 0x79, 0x52, 0x70, - 0x17, 0x24, 0xfb, 0x7f, 0x15, 0x7c, 0x79, 0x3b, 0x57, 0xe9, - 0x57, 0xfc, 0x13, 0xf3, 0xc2, 0x46, 0xc3, 0xc1, 0x7a, 0x1d, - 0xcb, 0xc6, 0x11, 0xe7, 0xf3, 0xae, 0x64, 0x52, 0x39, 0xce, - 0xf7, 0x55, 0x3d, 0x3d, 0x14, 0x57, 0xd2, 0xe1, 0x63, 0xef, - 0x5c, 0xfa, 0xfc, 0x14, 0x7d, 0xeb, 0x9f, 0x72, 0x41, 0x91, - 0x81, 0xe8, 0x2a, 0xfc, 0x24, 0xf1, 0x59, 0xf0, 0xe7, 0xd6, - 0xaf, 0xc2, 0x78, 0x15, 0xea, 0x9e, 0xd1, 0xa3, 0x5, 0x5e, - 0x84, 0xf4, 0xac, 0xfb, 0x7c, 0xd5, 0xf8, 0x4f, 0x2, 0x80, - 0x2e, 0xc4, 0x78, 0xab, 0x51, 0xf4, 0xaa, 0x90, 0xd5, 0xb8, - 0xce, 0x28, 0x2, 0xc2, 0xa, 0x9d, 0x2a, 0x4, 0x3c, 0x8a, - 0x99, 0xe, 0x7b, 0x50, 0x4, 0xa3, 0x9a, 0x91, 0x6a, 0x35, - 0xed, 0x52, 0x2d, 00, 0x3d, 0x69, 0x69, 0x1, 0xe2, 0x96, - 0x80, 0x14, 0x75, 0xa5, 0xcd, 0x36, 0x8a, 00, 0x29, 0xa4, - 0xd3, 0x8d, 0x46, 0xd4, 00, 0xc3, 0xe9, 0x4c, 0x63, 0x4f, - 0x3d, 0x6a, 0x26, 0x34, 0x1, 0x1c, 0x87, 0x8a, 0xab, 0x23, - 0x71, 0x56, 0x64, 0x38, 0xaa, 0x92, 0x9a, 00, 0xab, 0x2b, - 0x57, 0x87, 0xfe, 0xd6, 0x9e, 0x32, 0x8b, 0xc3, 0x1f, 0x7, - 0xf5, 0x5b, 0x7c, 0x31, 0xb9, 0xd5, 0x31, 0x69, 0xe, 0xd6, - 0x20, 0xa9, 0x24, 0x12, 0xdd, 0x3b, 0x7f, 0x5a, 0xf6, 0xd9, - 0x8e, 0x2b, 0xe2, 0xaf, 0xdb, 0x8b, 0xc4, 0x8d, 0xa8, 0xf8, - 0xc7, 0xc3, 0x5e, 0x1c, 0x42, 0x7, 0xd9, 0x22, 0x7b, 0x99, - 00, 0xce, 0x4f, 0x98, 0x50, 0x2f, 0xfe, 0x8b, 0x6a, 0xf1, - 0x73, 0x9c, 0x47, 0xd5, 0xb0, 0x35, 0x26, 0xb7, 0x6a, 0xcb, - 0xe6, 0x7c, 0xf6, 0x7f, 0x8a, 0xfa, 0x9e, 0x5d, 0x56, 0xa2, - 0xdd, 0xab, 0x2f, 0x9e, 0x86, 0xaf, 0xec, 0x75, 0xe0, 0xf6, - 0x8a, 0xd2, 0x7d, 0x51, 0xf6, 0xfc, 0xe7, 0x62, 0xf1, 0xce, - 0x32, 0x3f, 0xc2, 0xbe, 0xce, 0xd2, 0x21, 0xd9, 0x12, 0xd7, - 0x8a, 0x7e, 0xcf, 0x7e, 0x1a, 0x1a, 0x27, 0x82, 0x74, 0xe8, - 0xb6, 0x6d, 0x2c, 0xa1, 0xcf, 0x39, 0xeb, 0xff, 00, 0xeb, - 0xaf, 0x77, 0xb0, 0x8f, 0x6a, 0xa8, 0x14, 0x64, 0xf8, 0x7f, - 0xab, 0x60, 0xa1, 0xe, 0xb6, 0xb8, 0x64, 0x18, 0x55, 0x84, - 0xcb, 0xa9, 0x43, 0xab, 0x57, 0xfb, 0xcd, 0x4, 0x18, 0x51, - 0x4e, 0xa2, 0x8a, 0xf6, 0x8f, 0xa1, 0xa, 0x28, 0xa4, 0x3d, - 0x28, 0x3, 0xc6, 0xff, 00, 0x6a, 0xf, 0x16, 0xa7, 0x87, - 0x3e, 0x1e, 0xdd, 0x47, 0xf3, 0xee, 0x94, 0x1f, 0xb9, 0xe9, - 0xb4, 0xf7, 0xaf, 0xc1, 0x8f, 0xda, 0x2f, 0xc4, 0xff, 00, - 0xf0, 0x90, 0x78, 0xe2, 0xed, 0x6, 0xed, 0xab, 0x21, 0xea, - 0x73, 0xdc, 0xd7, 0xed, 0x17, 0xed, 0xb5, 0x75, 0x2a, 0xf8, - 0x3a, 0xf6, 0x4c, 0x8f, 0x2e, 0x28, 0xcf, 0xfe, 0x82, 0x6b, - 0xf0, 0x8f, 0xc7, 0x77, 0xe7, 0x51, 0xf1, 0x6e, 0xa3, 0x3e, - 0xed, 0xe0, 0xce, 0xc0, 0x1c, 0x7a, 0x13, 0x40, 0x1f, 0x50, - 0x7e, 0xc1, 0xde, 0xc, 0x4f, 0x10, 0x7c, 0x4f, 0xd1, 0x53, - 0x6a, 0x1f, 0x2a, 0x65, 0x90, 0x96, 0x1d, 0x31, 0x9a, 0xfd, - 0xc9, 0xf1, 0x5d, 0xf2, 0xe9, 0x5a, 0x4, 0xc7, 0xd1, 0x30, - 0x31, 0x5f, 0x85, 0x9f, 0xb0, 0xcf, 0x8e, 0x17, 0xc2, 0x9e, - 0x39, 0xb7, 0xbb, 0x99, 0xc4, 0x59, 0x91, 0x57, 0x79, 0x19, - 0xf5, 0xed, 0x5f, 0xae, 0x1f, 0x14, 0x7e, 0x33, 0x68, 0x3, - 0xc0, 0xb2, 0x3a, 0xea, 0x4a, 0xf2, 0x8b, 0x72, 0xc4, 0x8, - 0xd8, 0x64, 0xfa, 0x74, 0xa0, 0xf, 0xc9, 0xff, 00, 0xf8, - 0x28, 0x87, 0xc4, 0x65, 0xf1, 0x1f, 0x8f, 0xe, 0x99, 0x11, - 0x93, 0x11, 0x36, 0x58, 0x13, 0xc1, 0xae, 0x23, 0xf6, 0x47, - 0xf0, 0x2c, 0xbe, 0x25, 0xf1, 0xa6, 0x95, 0x12, 0x95, 0x1, - 0xee, 0x23, 0x24, 0xb0, 0xe3, 0x1b, 0x96, 0xbc, 0xef, 0xe3, - 0xc7, 0x89, 0x4f, 0x8c, 0x3e, 0x29, 0x6a, 0x17, 0xb, 0x28, - 0x9a, 0x22, 0xe1, 0x50, 0xa8, 0xc0, 0xaf, 0xb3, 0xff, 00, - 0xe0, 0x9d, 0x9e, 0x16, 0xb0, 0x6f, 0x16, 0x58, 0x5e, 0x5d, - 0x30, 0x55, 0x85, 0x91, 0x89, 0x24, 0x80, 0x30, 0x54, 0xd0, - 0x7, 0xea, 0xc7, 0x86, 0xed, 0xe2, 0xf0, 0x27, 0xc3, 0x8b, - 0x75, 0x97, 0x1, 0x2d, 0xad, 0x83, 0x36, 0xc1, 0x81, 0xf7, - 0x6b, 0xf2, 0x43, 0xf6, 0xf1, 0xf8, 0xf9, 0x6b, 0xe2, 0x29, - 0xf5, 0x1b, 0x2b, 0x4f, 0x3f, 0x73, 0x48, 0x54, 0x92, 0x7b, - 0x64, 0x57, 0xd8, 0x7f, 0xb6, 0x4f, 0xed, 0x61, 0x6b, 0xe1, - 0x3f, 0x8, 0xea, 0x1a, 0x4e, 0x97, 0x77, 0x13, 0x13, 0x19, - 0x52, 0x76, 0x1e, 0xc0, 0x8f, 0xee, 0xd7, 0xe2, 0xe7, 0x8d, - 0x7c, 0x5d, 0x71, 0xe2, 0xbd, 0x4a, 0xe2, 0xe6, 0x79, 0x37, - 0x99, 0x24, 0x2e, 0x4f, 0x4c, 0x93, 0xf8, 0x50, 0x4, 0xdf, - 0xe, 0xb4, 0x19, 0xbc, 0x4b, 0xe2, 0x9b, 0x4b, 0x48, 0xb1, - 0xba, 0x49, 0x54, 0x73, 0xcf, 0x7a, 0xfe, 0x84, 0xbf, 0x65, - 0x1f, 0x1, 0x1f, 0x3, 0xfc, 0x2b, 0xd2, 0xed, 0xdc, 0x26, - 0xe7, 0x8c, 0x11, 0xb5, 0x71, 0xc6, 0x2b, 0xf1, 0xf7, 0xf6, - 0x6, 0xf8, 0x42, 0xde, 0x37, 0xf8, 0x83, 0x5, 0xc4, 0x90, - 0x99, 0x12, 0x12, 0x8d, 0xf7, 0xb1, 0xd7, 0x77, 0x3d, 0x7d, - 0xab, 0xf7, 0x83, 0x47, 0xb0, 0x4d, 0x33, 0x4b, 0xb5, 0xb5, - 0x8c, 0x61, 0x62, 0x8c, 0x28, 0xfc, 0xa8, 0x2, 0xe1, 0xe9, - 0x5c, 0x37, 0x8f, 0xf5, 0x11, 0x5, 0x9c, 0xbd, 0x78, 0x6, - 0xbb, 0x79, 0x1b, 0x64, 0x6c, 0x7d, 0x5, 0x78, 0xf7, 0xc4, - 0xad, 0x40, 0x90, 0xc8, 0xf, 0x53, 0x8a, 0xf0, 0x33, 0x9c, - 0x47, 0xb0, 0xc2, 0xb3, 0xe5, 0xf8, 0x87, 0x13, 0xf5, 0x6c, - 0x14, 0x9f, 0x73, 0xcf, 0x59, 0xbc, 0xc9, 0x19, 0xfd, 0x4e, - 0x68, 0xa4, 0x5f, 0xba, 0x29, 0x6b, 0xf1, 0xb3, 0xf0, 0x1b, - 0xdf, 0x50, 0xa2, 0x8a, 0x28, 0x18, 0x51, 0x45, 0x48, 0x96, - 0xd2, 0xcc, 0x3f, 0x76, 0xb9, 0xa6, 0x93, 0x7b, 0x2, 0x4d, - 0xe8, 0x88, 0xe8, 0xa9, 0xbf, 0xb3, 0xae, 0xc7, 0xfc, 0xb3, - 0xa6, 0x35, 0xa5, 0xc2, 0x75, 0x43, 0x4f, 0x96, 0x6b, 0x74, - 0xca, 0xe4, 0x9a, 0xde, 0x2c, 0x65, 0x14, 0x6d, 0x75, 0x3f, - 0x32, 0xe2, 0x8a, 0x92, 0x7d, 0x42, 0x8a, 0x28, 0xa0, 0x2, - 0x94, 0x36, 0xd3, 0x9a, 0x4a, 0x28, 0x3, 0x7f, 0xc3, 0xfe, - 0x25, 0x6d, 0x3e, 0x75, 0x1, 0x9, 0xfa, 0x1a, 0xf6, 0xbf, - 0xd, 0xea, 0xff, 00, 0xda, 0x96, 0x6a, 0xc7, 0x83, 0x8e, - 0x84, 0xd7, 0xce, 0xab, 0x95, 0x91, 0x48, 0xf5, 0xaf, 0x5a, - 0xf8, 0x6d, 0x7e, 0xd2, 0xe1, 0x4b, 0x70, 0x2b, 0xed, 0x38, - 0x7b, 0x1d, 0x52, 0x35, 0xbd, 0x8c, 0x9e, 0x87, 0xe8, 0x3c, - 0x2b, 0x99, 0x54, 0x8d, 0x7f, 0xab, 0xc9, 0xe8, 0xcf, 0x4b, - 0xc5, 0x2d, 0x20, 0xe9, 0x4b, 0x5f, 0xa7, 0x9f, 0xb2, 0x5, - 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, - 0x40, 0x5, 0x26, 0x78, 0xa5, 0xa4, 0x3d, 0x28, 0x2, 0x8e, - 0xad, 0x70, 0x20, 0xb5, 0x66, 0xf6, 0x35, 0xf3, 0xff, 00, - 0x8a, 0x6f, 0x3e, 0xd7, 0xab, 0x48, 0x7b, 0x3, 0xde, 0xbd, - 0xa3, 0xc6, 0x97, 0x9f, 0x67, 0xd3, 0xe4, 0x39, 0xc7, 0x15, - 0xe0, 0x97, 0x12, 0x19, 0xae, 0x65, 0x73, 0xd4, 0xb5, 0x7e, - 0x71, 0xc4, 0xf5, 0xef, 0x28, 0xd2, 0x47, 0xe4, 0xdc, 0x65, - 0x89, 0xbc, 0xa1, 0x41, 0x7a, 0x91, 0xd1, 0x45, 0x15, 0xf0, - 0x67, 0xe6, 0x61, 0x45, 0x14, 0x50, 0x20, 0x55, 0xf3, 0x26, - 0x8d, 0x7, 0x52, 0x6b, 0xd9, 0xfe, 0x1e, 0xe9, 0xc6, 0x18, - 0x51, 0xbd, 0x5, 0x79, 0x16, 0x8f, 0xf, 0x9f, 0xa8, 0xc6, - 0x7, 0x63, 0x5e, 0xf9, 0xe1, 0x2b, 0x51, 0xd, 0x8a, 0x9c, - 0x60, 0xe2, 0xbe, 0xc7, 0x86, 0xa8, 0x7b, 0x4a, 0xce, 0xa3, - 0xe8, 0x7d, 0xff, 00, 0x8, 0xe1, 0xbd, 0xa6, 0x21, 0xd5, - 0x7d, 0xd, 0xfa, 0x5a, 0x28, 0xaf, 0xd4, 0x8f, 0xd9, 0xc2, - 0x8a, 0x28, 0xa0, 0x2, 0x92, 0x8a, 0x6b, 0xb6, 0x10, 0x9a, - 0x4f, 0x41, 0x37, 0x63, 0x80, 0xf8, 0x95, 0xa9, 0xfd, 0x9e, - 0xc1, 0x97, 0x9e, 0x7d, 0xeb, 0xc6, 0xf3, 0xb8, 0x93, 0xeb, - 0x5e, 0x81, 0xf1, 0x3e, 0xf3, 0x7c, 0xfe, 0x5e, 0x7b, 0xf4, - 0xaf, 0x3f, 0x1d, 0x2b, 0xf1, 0xec, 0xf2, 0xb3, 0xad, 0x8c, - 0x92, 0xec, 0x7e, 0x9, 0xc4, 0x98, 0x8f, 0x6f, 0x8f, 0x92, - 0xed, 0xa0, 0x51, 0x45, 0x15, 0xf3, 0xc7, 0xcb, 0x5, 0x14, - 0x51, 0x43, 0xd8, 0xb, 0x16, 0x51, 0x19, 0x27, 0x51, 0xeb, - 0x5e, 0xf9, 0xe0, 0x7b, 0x1f, 0xb0, 0xe8, 0xa8, 0xa7, 0x92, - 0x79, 0xaf, 0x13, 0xf0, 0xdd, 0xbf, 0xda, 0x2f, 0xe2, 0x5c, - 0x67, 0x9a, 0xfa, 0xb, 0x4b, 0x84, 0x41, 0x65, 0x12, 0x1, - 0xd1, 0x45, 0x7d, 0xff, 00, 0xb, 0xd0, 0xf7, 0xa7, 0x54, - 0xfd, 0x43, 0x83, 0x70, 0xfe, 0xf4, 0xeb, 0x76, 0xd0, 0xb6, - 0x69, 0x68, 0xa2, 0xbf, 0x44, 0x3f, 0x55, 0xa, 0x28, 0xa2, - 0x80, 0xa, 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa2, 0x80, 0x10, - 0xd6, 0x6e, 0xb7, 0x70, 0x2d, 0xec, 0xdc, 0x9f, 0x43, 0x5a, - 0x75, 0xca, 0x78, 0xea, 0xef, 0xc8, 0xd3, 0xe4, 0xe7, 0xb5, - 0x71, 0xe2, 0xea, 0x7b, 0x2a, 0x12, 0x97, 0x91, 0xc1, 0x8e, - 0xab, 0xec, 0x70, 0xf3, 0x9f, 0x64, 0x78, 0xb7, 0x88, 0xae, - 0xbe, 0xd7, 0xaa, 0xca, 0xdd, 0x81, 0x35, 0x9b, 0x4f, 0x99, - 0xbc, 0xc9, 0xe4, 0x73, 0xd4, 0xb1, 0x34, 0xca, 0xfc, 0x36, - 0xa4, 0xfd, 0xa4, 0xe5, 0x37, 0xd4, 0xfe, 0x6e, 0xad, 0x37, - 0x56, 0xa4, 0xa6, 0xfa, 0xb0, 0xa2, 0x8a, 0x2b, 0x23, 0x20, - 0xa5, 0x3, 0x26, 0x92, 0x9d, 0x1f, 0x2e, 0x5, 0x1b, 0xe8, - 0x1b, 0xe8, 0x7a, 0x7f, 0xc2, 0x6b, 0x2f, 0x32, 0x59, 0x65, - 0x3d, 0x16, 0xbd, 0x50, 0xa, 0xe1, 0x7e, 0x15, 0xda, 0x79, - 0x3a, 0x54, 0x92, 0xe3, 0x96, 0x35, 0xdd, 0xe, 0xa6, 0xbf, - 0x67, 0xc9, 0x69, 0xfb, 0x3c, 0x14, 0x17, 0x73, 0xfa, 0x7, - 0x87, 0xe9, 0x7b, 0x1c, 0xba, 0x9a, 0xef, 0xa8, 0xb5, 0x9d, - 0xac, 0xda, 0xb, 0xab, 0x39, 0x17, 0x19, 0x38, 0xad, 0x1a, - 0x6b, 0x28, 0x2a, 0x41, 0xe8, 0x6b, 0xd9, 0x9c, 0x54, 0xe2, - 0xe2, 0xfa, 0x9f, 0x41, 0x52, 0xa, 0xa4, 0x1c, 0x1f, 0x53, - 0xe7, 0x7f, 0x14, 0xe9, 0x6f, 0x63, 0x78, 0xf9, 0x23, 0x96, - 0xed, 0x58, 0x60, 0xe6, 0xbd, 0x87, 0xc7, 0x5e, 0x1c, 0x49, - 0x23, 0x79, 0x82, 0xe5, 0xb9, 0xef, 0x5e, 0x47, 0x75, 0x6e, - 0xf6, 0xf2, 0x95, 0xda, 0x47, 0x35, 0xf8, 0xce, 0x6b, 0x82, - 0x96, 0x12, 0xbb, 0xd3, 0x46, 0x7f, 0x3f, 0x67, 0x79, 0x7c, - 0xf0, 0x38, 0x97, 0xa6, 0x8c, 0x8a, 0x8a, 0x28, 0xaf, 0x14, - 0xf9, 0xf0, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 0x1, - 0x69, 0x28, 0xa2, 0x80, 0x10, 0x83, 0xd8, 0xe2, 0x9f, 0x14, - 0xb2, 0xc4, 0x72, 0x24, 0x61, 0xf8, 0xd3, 0x68, 0xa3, 0x6d, - 0x50, 0x2d, 0x35, 0x47, 0x41, 0xa4, 0x78, 0xad, 0xac, 0x1d, - 0x77, 0xb3, 0xb7, 0xe2, 0x6b, 0xd4, 0xfc, 0x2b, 0xe3, 0x48, - 0xb5, 0x28, 0xfc, 0xb0, 0x87, 0x23, 0xb9, 0x35, 0xe1, 0x64, - 0xa, 0xd4, 0xd1, 0x35, 0x89, 0x6c, 0x2e, 0x6, 0xd3, 0x81, - 0x9a, 0xfa, 0x1c, 0xb7, 0x36, 0xad, 0x84, 0xa8, 0xa3, 0x27, - 0xee, 0x9f, 0x55, 0x94, 0xe7, 0xb5, 0xb0, 0x55, 0x14, 0x64, - 0xef, 0x13, 0xe9, 0x4, 0x90, 0x48, 0xa0, 0x8e, 0x86, 0x89, - 0x1b, 0xb, 0x5c, 0x9f, 0x84, 0xbc, 0x43, 0xf6, 0xe8, 0x57, - 0x7b, 0x73, 0x8e, 0xf5, 0xd4, 0x48, 0xfb, 0x97, 0x39, 0xaf, - 0xd6, 0x30, 0xf8, 0x88, 0x62, 0x29, 0xa9, 0xc4, 0xfd, 0xbf, - 0x9, 0x8a, 0x86, 0x2e, 0x92, 0xa9, 0xe, 0xa5, 0x1b, 0xb9, - 0x38, 0x35, 0x85, 0x7e, 0xfc, 0x1a, 0xd6, 0xbc, 0x6e, 0xb5, - 0x83, 0x7c, 0xfc, 0x9a, 0xea, 0x3b, 0xc, 0x4d, 0x46, 0x4c, - 0x29, 0xae, 0x43, 0x52, 0x97, 0x96, 0xfa, 0xd7, 0x4d, 0xa9, - 0x3f, 0x6, 0xb8, 0xfd, 0x4a, 0x4e, 0x5b, 0xeb, 0x40, 0x1c, - 0xe6, 0xaf, 0x2e, 0x33, 0x5c, 0x2e, 0xb5, 0x3f, 0xd, 0x5d, - 0x6e, 0xb1, 0x2f, 0xde, 0xaf, 0x3f, 0xf1, 0x1d, 0xcf, 0x97, - 0x6f, 0x29, 0xcf, 0x6a, 0x4d, 0xd9, 0x5c, 0x4d, 0xd9, 0x5c, - 0xf1, 0xaf, 0x89, 0x3a, 0x98, 0xb, 0x37, 0x5f, 0xf3, 0x8a, - 0xf9, 0x9b, 0xc5, 0x37, 0x66, 0x6b, 0xd9, 0xf, 0x6a, 0xf6, - 0xcf, 0x89, 0x3a, 0x9f, 0x33, 0xc, 0xd7, 0xcf, 0xda, 0xcc, - 0xfb, 0xe6, 0x90, 0xe7, 0xa9, 0xaf, 0x85, 0xc7, 0xd4, 0xe7, - 0xa9, 0x63, 0xf3, 0x5c, 0xd2, 0xa7, 0xb4, 0xad, 0x63, 0x99, - 0xd5, 0xa5, 0xf9, 0x1a, 0xb9, 0x6b, 0x97, 0xce, 0x6b, 0x7b, - 0x56, 0x93, 0x2a, 0xd5, 0xcd, 0xdc, 0x1c, 0xe6, 0xba, 0x70, - 0xd1, 0xb2, 0x3b, 0x70, 0x91, 0xb4, 0x48, 0x60, 0xb5, 0x6b, - 0xfb, 0xeb, 0x6b, 0x68, 0xf1, 0xbe, 0x69, 0x16, 0x35, 0xcf, - 0xa9, 0x20, 0xf, 0xe7, 0x5f, 0xb2, 0x7f, 0xb3, 0x7, 0x86, - 0x6, 0x83, 0xe1, 0x28, 0xd7, 0x6a, 0x2a, 0xc5, 0x4, 0x70, - 00, 00, 0x18, 0x60, 0x37, 0x1c, 0x7f, 0xdf, 0x55, 0xf9, - 0x3b, 0xf0, 0x4b, 0xc3, 0x6b, 0xe2, 0xdf, 0x8a, 0xde, 0x1f, - 0xd3, 0xdc, 0x6e, 0x8c, 0xce, 0x66, 0x3c, 0xe3, 0x1b, 0x14, - 0xb8, 0xee, 0x3b, 0xa8, 0xaf, 0xda, 0xf, 0x85, 0xda, 0x77, - 0xd8, 0x3c, 0x27, 0x6a, 0x48, 0xc3, 0xca, 0x59, 0xc8, 0xfc, - 0x48, 0x1f, 0xa6, 0x2b, 0xe9, 0x70, 0xd1, 0xb4, 0x5b, 0x3e, - 0xbb, 0x7, 0x1b, 0x45, 0xb3, 0xb8, 0x87, 0xa0, 0xab, 0xf0, - 0xf6, 0xaa, 0x30, 0x91, 0xc6, 0x6a, 0xf4, 0x18, 0xcd, 0x76, - 0x9e, 0x81, 0xa1, 0x6f, 0xf5, 0xab, 0xf1, 0xe, 0x95, 0x46, - 0xd6, 0xb4, 0x22, 0xc5, 00, 0x5b, 0x84, 0x1a, 0xb4, 0x83, - 0xa5, 0x55, 0x88, 0x71, 0x56, 0xa3, 0x18, 0xc5, 00, 0x59, - 0x41, 0x53, 0x20, 0xe2, 0xa0, 0x41, 0xc5, 0x4c, 0xbc, 0x1a, - 00, 0x99, 0x45, 0x48, 0x3a, 0x54, 0x4a, 0x4d, 0x48, 0xf, - 0x34, 00, 0xe1, 0xd6, 0x9d, 0x48, 0xb4, 0xb4, 00, 0x53, - 0xb1, 0x48, 0x3a, 0xd3, 0xa8, 0x2, 0x36, 0xa8, 0xc9, 0xe6, - 0x9e, 0x7a, 0xd4, 0x6c, 0x68, 0x1, 0x87, 0xa5, 0x46, 0xdd, - 0xaa, 0x46, 0xa8, 0x98, 0xe4, 0x50, 0x4, 0x32, 0x1a, 0xab, - 0x21, 0xe2, 0xac, 0x49, 0x55, 0x65, 0xa0, 0xa, 0x93, 0x9e, - 0x3a, 0xe2, 0xbf, 0x3b, 0xfc, 0x79, 0x7e, 0x3e, 0x24, 0xfe, - 0xd1, 0x5a, 0x9c, 0xd6, 0xf9, 0x7b, 0x53, 0x72, 0x91, 0x42, - 0x5f, 0xae, 0xc5, 0x51, 0xe9, 0xef, 0x9f, 0x5a, 0xfb, 0xcb, - 0xc7, 0xba, 0xfa, 0x78, 0x67, 0xc2, 0x1a, 0xc6, 0xa8, 0xf2, - 0x88, 0xbe, 0xc9, 0x6b, 0x24, 0xa1, 0x89, 0x3, 0x90, 0xa7, - 0x18, 0xcf, 0x72, 0x6b, 0xe1, 0x7f, 0xd9, 0x77, 0x43, 0x6f, - 0x10, 0xfc, 0x40, 0x96, 0xfe, 0x60, 0x66, 0xd8, 0x4c, 0xac, - 0xf2, 0x2, 0x4e, 0x49, 0x3f, 0xaf, 0x15, 0xf1, 0xb9, 0xfc, - 0x9d, 0x6a, 0x94, 0x30, 0x8b, 0xed, 0x4a, 0xef, 0xe4, 0x7c, - 0x7, 0x13, 0xc9, 0xd7, 0xab, 0x86, 0xc0, 0xc7, 0xed, 0xca, - 0xef, 0xe4, 0x7d, 0xdb, 0xe0, 0xad, 0x38, 0x59, 0x69, 0xf6, - 0xf0, 0x85, 00, 0x22, 0x81, 0x8f, 0xc2, 0xbb, 0xcb, 0x45, - 0xc0, 0xae, 0x7f, 0x42, 0xb7, 0x11, 0xc2, 0xbd, 0xb0, 0x2b, - 0xa5, 0xb7, 0x5c, 0x2d, 0x7d, 0x7c, 0x22, 0xa3, 0x15, 0x15, - 0xd0, 0xfb, 0xc8, 0x45, 0x42, 0xa, 0x2b, 0xa1, 0x35, 0x14, - 0x51, 0x56, 0x58, 0x52, 0x52, 0xd1, 0x40, 0x1f, 0x29, 0x7e, - 0xdf, 0xf3, 0x18, 0x7e, 0x16, 0x5d, 0x45, 0x1f, 0xfa, 0xc9, - 0x54, 0xff, 00, 0xe8, 0x2d, 0xd6, 0xbf, 0x7, 0xfc, 0x5b, - 0x6c, 0x6d, 0x75, 0x9b, 0x84, 0x63, 0x96, 0x2e, 0x4b, 0x1f, - 0x7c, 0x9a, 0xfe, 0x85, 0xff, 00, 0x6a, 0xef, 0x6, 0x45, - 0xe2, 0x7f, 0x1, 0x5f, 0x49, 0x2a, 0x9, 0x56, 0x18, 0x89, - 0x8, 0x47, 0x4, 0xed, 0x3e, 0xd5, 0xf8, 0x21, 0xf1, 0x97, - 0x40, 0x9f, 0x4c, 0xf1, 0x86, 0xa6, 0xcf, 0xf, 0x94, 0x82, - 0x76, 0x55, 0xe3, 0x1c, 0x66, 0x80, 0x39, 0x8f, 0xc, 0x78, - 0x92, 0xf7, 0x42, 0xd4, 0x21, 0x96, 0xda, 0xe1, 0xa1, 0xd8, - 0xc0, 0xe4, 00, 0x6b, 0xd7, 0xf5, 0xbf, 0xda, 0x3, 0x5a, - 0xd4, 0x34, 0x39, 0x6d, 0xa4, 0xd5, 0x26, 0x90, 0x3a, 0x6d, - 0xdb, 0xb5, 0x7a, 0x7a, 0x74, 0xaf, 0x4, 0xe9, 0x4e, 0xf3, - 0x1b, 0x18, 0xdc, 0x71, 0xe9, 0x9a, 00, 0xb0, 0x6e, 0xda, - 0x7b, 0xf3, 0x3c, 0x87, 0x73, 0x16, 0xdc, 0x7d, 0xeb, 0xd9, - 0xbe, 0x1d, 0x7c, 0x6b, 0xd5, 0x3c, 0x7, 0x67, 0x21, 0xb1, - 0xbb, 0x78, 0x58, 0xa1, 0x1f, 0x2e, 0x3d, 0x3d, 0xc1, 0xaf, - 0xf, 0xa7, 0x9, 0x5c, 0xc, 0x6, 0x38, 0xa0, 0xe, 0xe7, - 0xc7, 0x9f, 0x16, 0xf5, 0xcf, 0x1c, 0x5c, 0xca, 0xda, 0x85, - 0xdb, 0xce, 0xac, 0x7f, 0x88, 0x2f, 0x4f, 0xc0, 0xf, 0x5a, - 0xe3, 0xf4, 0xdd, 0x36, 0x6d, 0x4a, 0xea, 0x28, 0x62, 0x42, - 0xec, 0xec, 0x14, 0x62, 0xaa, 0xe0, 0xb1, 0xe9, 0x5f, 0x57, - 0xfe, 0xc9, 0xbf, 0xb3, 0x5d, 0xd7, 0xc4, 0x4d, 0x57, 0x4d, - 0xbe, 0x92, 0xdd, 0x9e, 0xdf, 0xcc, 0xc, 0x4e, 0xc2, 0x72, - 0x39, 0xff, 00, 0x64, 0xd0, 0x7, 0xdf, 0x5f, 0xf0, 0x4d, - 0xbf, 0x82, 0x6d, 0xe1, 0x8d, 0x12, 0x4d, 0x52, 0xee, 0xd9, - 0x11, 0x9d, 0x50, 0xa8, 0x7, 0xa6, 0x37, 0xff, 00, 0x8d, - 0x7d, 0xfa, 0x3a, 0x57, 0x23, 0xf0, 0xc3, 0xc1, 0x16, 0x7e, - 0x5, 0xf0, 0xad, 0x9e, 0x9f, 0x6b, 0x6e, 0x96, 0xe5, 0x63, - 0x1, 0x82, 0x80, 0x32, 0x79, 0xeb, 0xc0, 0xf5, 0xae, 0xba, - 0x80, 0x2a, 0x6a, 0x72, 0x88, 0xad, 0x5c, 0xe7, 0xb5, 0x78, - 0x37, 0x8e, 0x2f, 0x3e, 0xd3, 0xa9, 0x6d, 0x1c, 0xe0, 0x93, - 0x5e, 0xcf, 0xe2, 0x8b, 0x9f, 0x22, 0xc9, 0x86, 0x71, 0xc1, - 0x35, 0xe0, 0x5a, 0xc4, 0xff, 00, 0x69, 0xd4, 0xa5, 0x6c, - 0xf4, 0x35, 0xf9, 0xff, 00, 0x13, 0xd7, 0xb4, 0x63, 0x49, - 0x1f, 0x97, 0x71, 0x8e, 0x26, 0xd1, 0x8d, 0x14, 0x54, 0x1c, - 0x51, 0x45, 0x15, 0xf9, 0xe1, 0xf9, 0x50, 0x51, 0x45, 0x14, - 00, 0x60, 0xb1, 0x3, 0xd4, 0xd7, 0xa6, 0xf8, 0x43, 0xc3, - 0x2, 0xe2, 0xd9, 0x19, 0xa3, 0x7, 0x38, 0xeb, 0x5e, 0x75, - 0xa6, 0x40, 0x6e, 0x2f, 0xe2, 0x4e, 0xbf, 0x30, 0xeb, 0x5e, - 0xff, 00, 0xe1, 0x4b, 0x51, 0x5, 0x92, 0xc, 0x63, 00, - 0x57, 0xd5, 0xf0, 0xfe, 0xe, 0x38, 0x9a, 0xae, 0x53, 0x5a, - 0x23, 0xee, 0x38, 0x5b, 0x3, 0x1c, 0x5d, 0x79, 0x4e, 0x6b, - 0x44, 0x51, 0x1e, 0x10, 0x8b, 0xfe, 0x78, 0x8a, 0xa7, 0x7f, - 0xe0, 0xf8, 0xcc, 0x4d, 0xb6, 0x2e, 0x71, 0x5d, 0xc6, 0x29, - 0xa, 0x82, 0x30, 0x79, 0x1e, 0x95, 0xfa, 0x24, 0xb2, 0xec, - 0x3c, 0x95, 0xac, 0x7e, 0xab, 0x3c, 0xab, 0xd, 0x28, 0xdb, - 0x94, 0xf0, 0x7f, 0x11, 0x78, 0x66, 0x6b, 0x56, 0x66, 0x11, - 0xe0, 0x57, 0x28, 0xc8, 0x50, 0xe1, 0xba, 0x8a, 0xfa, 0xf, - 0xc5, 0x1a, 0x32, 0xde, 0x5a, 0x3e, 0xd4, 0x5e, 0x9e, 0x95, - 0xe1, 0x9a, 0xe5, 0x9f, 0xd9, 0x2f, 0x9d, 0x3d, 0xd, 0x7e, - 0x6d, 0x9d, 0x65, 0xdf, 0x53, 0x9f, 0x34, 0x76, 0x67, 0xe4, - 0x9c, 0x43, 0x94, 0xfd, 0x42, 0xa7, 0x3c, 0x36, 0x66, 0x75, - 0x14, 0x51, 0x5f, 0x32, 0x7c, 0x70, 0x51, 0x45, 0x14, 00, - 0x8e, 0x70, 0xb5, 0xe8, 0x9f, 0xd, 0xa6, 0xf2, 0x98, 0x28, - 0xfb, 0xc6, 0xbc, 0xf0, 0x8c, 0xd7, 0x71, 0xf0, 0xd9, 0x8b, - 0x6a, 0x4a, 0xf, 0xdd, 0x6, 0xbd, 0x9c, 0xa2, 0x5c, 0xb8, - 0xc8, 0x1e, 0xf6, 0x45, 0x3e, 0x5c, 0x7c, 0x2d, 0xd4, 0xf6, - 0xd5, 0xfb, 0xa2, 0x96, 0x9a, 0xad, 0x90, 0x29, 0xd5, 0xfb, - 0x51, 0xfd, 0xc, 0x82, 0x8a, 0x28, 0xa0, 0x61, 0x45, 0x14, - 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x4d, 0x3c, 0xa, 0x75, - 0x47, 0x29, 0xdb, 0x1b, 0x1a, 0x4, 0xcf, 0x3d, 0xf8, 0x97, - 0x7e, 0x12, 0xc9, 0x97, 0x38, 0x3c, 0xd7, 0x8f, 0xe, 0x71, - 0x5d, 0xe7, 0xc4, 0xeb, 0xff, 00, 0x32, 0xe4, 0x44, 0x9, - 0xc1, 0x35, 0xc2, 0x1, 0x81, 0x5f, 0x8d, 0xe7, 0x75, 0xbd, - 0xae, 0x31, 0xf9, 0x1f, 0x81, 0x71, 0x16, 0x23, 0xdb, 0xe3, - 0xe5, 0xe4, 0x14, 0x51, 0x45, 0x78, 0x7, 0xcc, 0x5, 0x4, - 0xe2, 0x8a, 0x47, 0xfb, 0xb4, 0x9, 0xec, 0x74, 0x1e, 0xb, - 0xb4, 0x33, 0xdf, 0x86, 0xc7, 0x7a, 0xf7, 0x9d, 0x26, 0x1f, - 0x26, 0xcd, 0x6, 0x3b, 0x57, 0x91, 0x7c, 0x3a, 0xb2, 0x2d, - 0x22, 0x31, 0x1d, 0x48, 0xaf, 0x67, 0x85, 0x76, 0x46, 0xa0, - 0x76, 0x15, 0xfa, 0x8f, 0xd, 0x50, 0xe4, 0xa0, 0xe7, 0xdc, - 0xfd, 0x9b, 0x84, 0x70, 0xfc, 0x98, 0x67, 0x51, 0xf5, 0x24, - 0xa2, 0x8a, 0x2b, 0xec, 0x8f, 0xd0, 0x2, 0x8a, 0x28, 0xa0, - 0x2, 0xa0, 0xba, 0x7d, 0x90, 0x39, 0xa9, 0xb3, 0x54, 0x35, - 0xa9, 0x3c, 0x9d, 0x3e, 0x56, 0xf4, 0x6, 0xb3, 0xa8, 0xf9, - 0x60, 0xd9, 0x95, 0x59, 0x72, 0x53, 0x94, 0x8f, 0xd, 0xf1, - 0xc5, 0xdf, 0xda, 0x75, 0x67, 0xe7, 0x80, 0x7a, 0x57, 0x36, - 0x3a, 0x56, 0x86, 0xb7, 0x31, 0x9a, 0xfe, 0x56, 0x3d, 0xcd, - 0x67, 0xd7, 0xe1, 0x58, 0xaa, 0x9e, 0xd2, 0xbc, 0xa5, 0xe6, - 0x7f, 0x36, 0x63, 0x6a, 0x3a, 0xb8, 0x99, 0xcd, 0xf7, 0xa, - 0x28, 0xa2, 0xb9, 0x4e, 0x20, 0xa2, 0x8a, 0x28, 0x7b, 0x9, - 0x9d, 0x57, 0x80, 0x6d, 0x4c, 0xda, 0xb2, 0x7a, 0xa, 0xf7, - 0x88, 0x57, 0x6a, 0x28, 0xf4, 0x18, 0xaf, 0x18, 0xf8, 0x61, - 0x16, 0xeb, 0xc3, 0x21, 0x1e, 0x9f, 0xd6, 0xbd, 0xa2, 0x3f, - 0xb8, 0x2b, 0xf5, 0x5e, 0x1b, 0x87, 0x26, 0x15, 0xbe, 0xe7, - 0xed, 0x9c, 0x23, 0x5, 0xc, 0x17, 0x37, 0x71, 0xf4, 0x51, - 0x45, 0x7d, 0x71, 0xf7, 0x41, 0x45, 0x14, 0x50, 0x1, 0x45, - 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x2, 0x31, 0xc0, 0xaf, - 0x33, 0xf8, 0x9d, 0x7f, 0xb6, 0xd8, 0xa0, 0x6e, 0xbc, 0x57, - 0xa3, 0x5d, 0xc9, 0xe5, 0xc0, 0xcd, 0xd3, 0x2, 0xbc, 0x47, - 0xe2, 0x2e, 0xa1, 0xf6, 0x8b, 0xad, 0x99, 0xef, 0x5f, 0x31, - 0x9f, 0xd7, 0xf6, 0x58, 0x57, 0x1e, 0xe7, 0xc7, 0x71, 0x3e, - 0x25, 0x50, 0xc1, 0x4a, 0x3d, 0x59, 0xc7, 0xe, 0x94, 0x50, - 0x6, 0x5, 0x15, 0xf9, 0x1f, 0x43, 0xf0, 0xae, 0x81, 0x45, - 0x14, 0x50, 0x30, 0xab, 0x16, 0x31, 0x19, 0x67, 0x50, 0x3d, - 0x71, 0x55, 0xc9, 0xc0, 0xad, 0x9f, 0xd, 0xda, 0x1b, 0x9b, - 0xd8, 0x94, 0xe, 0xac, 0x2b, 0x6a, 0x30, 0xf6, 0x95, 0x23, - 0x13, 0xa3, 0xd, 0x4f, 0xda, 0xd6, 0x8c, 0x17, 0x53, 0xda, - 0xbc, 0xf, 0x67, 0xf6, 0x3d, 0x16, 0x31, 0x8c, 0x64, 0xf, - 0xe5, 0x5d, 0x10, 0xaa, 0x5a, 0x4c, 0x1e, 0x45, 0x84, 0x29, - 0xe8, 0xa3, 0xf9, 0x55, 0xd1, 0x5f, 0xba, 0x61, 0xa9, 0xfb, - 0x2a, 0x31, 0x87, 0x64, 0x7f, 0x49, 0x61, 0x29, 0x7b, 0x1c, - 0x3c, 0x29, 0xf6, 0x42, 0xd1, 0x45, 0x15, 0xd2, 0x75, 0x95, - 0x6f, 0xac, 0xe3, 0xbc, 0x88, 0xa3, 0xae, 0x45, 0x79, 0x77, - 0x8b, 0xbc, 0x2b, 0x20, 0x67, 0x68, 0xa3, 0xe2, 0xbd, 0x68, - 0xd5, 0x5b, 0xdb, 0x18, 0xee, 0xa2, 0x21, 0x91, 0x49, 0x3e, - 0xa2, 0xbc, 0xac, 0x7e, 0x2, 0x18, 0xd8, 0x59, 0xee, 0x78, - 0x99, 0x9e, 0x5b, 0x4f, 0x30, 0xa4, 0xe3, 0x2d, 0xcf, 0x9a, - 0x6e, 0x2c, 0xa5, 0xb5, 0x94, 0x87, 0x18, 0xc5, 0x45, 0x91, - 0x5e, 0xa5, 0xe2, 0x6f, 0x3, 0xc9, 0x2b, 0xbb, 0xa2, 0xc, - 0x67, 0xb0, 0xff, 00, 0xeb, 0x57, 0x5, 0xa8, 0x78, 0x72, - 0x5b, 0x27, 0x6d, 0xd9, 0xfc, 0xab, 0xf2, 0x7c, 0x66, 0x5b, - 0x5b, 0xb, 0x26, 0xad, 0xa1, 0xf8, 0x86, 0x3f, 0x28, 0xc4, - 0x60, 0xa6, 0xd3, 0x8b, 0xb1, 0x95, 0x45, 0xc, 0x36, 0x1c, - 0x1a, 0x40, 0xd9, 0xaf, 0x26, 0xfd, 0x19, 0xe1, 0xdf, 0x5b, - 0x31, 0x68, 0xa2, 0x8a, 0x6, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x8d, 0x91, 0xf7, 0x78, 0x34, 0xb4, - 0x52, 0x62, 0x67, 0x51, 0xe0, 0xfd, 0x65, 0xed, 0xee, 0xa3, - 0x46, 0x73, 0x8e, 0xf5, 0xec, 0xb6, 0x17, 0xe9, 0x75, 0x6c, - 0x19, 0x4e, 0x70, 0x2b, 0xe7, 0x5b, 0x4b, 0x83, 0x6d, 0x3a, - 0xb6, 0x71, 0xcd, 0x7b, 0x17, 0x84, 0x35, 0x4f, 0x32, 0xc5, - 0x17, 0x24, 0x9c, 0x77, 0xaf, 0xbe, 0xe1, 0xbc, 0x6b, 0xbb, - 0xa3, 0x23, 0xf4, 0xee, 0x12, 0xcc, 0x24, 0xe4, 0xe8, 0x49, - 0x9b, 0xf7, 0x8f, 0xd6, 0xb9, 0xfb, 0xc7, 0xeb, 0x5b, 0x37, - 0xb2, 0x71, 0x9a, 0xc0, 0xbe, 0x6c, 0x3, 0x5f, 0xa3, 0x1f, - 0xac, 0x18, 0x1a, 0x94, 0x9d, 0x6b, 0x90, 0xd4, 0xe4, 0xfb, - 0xf5, 0xd3, 0x6a, 0x72, 0x7d, 0xea, 0xe3, 0xf5, 0x59, 0x30, - 0x1a, 0x80, 0x39, 0x5d, 0x62, 0x5f, 0xbd, 0x5e, 0x6b, 0xe3, - 0x2b, 0xbf, 0x2a, 0xcd, 0xf9, 0xc5, 0x77, 0xda, 0xcc, 0xbf, - 0x7a, 0xbc, 0x9b, 0xe2, 0x15, 0xe6, 0xcb, 0x76, 0x5c, 0x90, - 0x70, 0x6b, 0x1a, 0xd2, 0xe5, 0x83, 0x67, 0x3e, 0x22, 0x5c, - 0x94, 0xdb, 0x3e, 0x7a, 0xf8, 0x8d, 0x7d, 0x9f, 0x37, 0x9f, - 0xf3, 0xc5, 0x78, 0xae, 0xa5, 0x27, 0x5a, 0xf4, 0xaf, 0x88, - 0x37, 0xa5, 0xe5, 0x71, 0x93, 0x9c, 0xd7, 0x96, 0x6a, 0x4f, - 0xc1, 0xe6, 0xbe, 0x2, 0xab, 0xe7, 0xaa, 0x7e, 0x5f, 0x59, - 0xfb, 0x4a, 0xe7, 0x39, 0xaa, 0x3e, 0x41, 0xac, 0x9, 0xdb, - 0xad, 0x6b, 0xea, 0x32, 0x64, 0xb5, 0x62, 0x5c, 0x36, 0x33, - 0x5e, 0xd6, 0x1d, 0x59, 0x1f, 0x47, 0x86, 0x8d, 0xa2, 0x7d, - 0x1, 0xfb, 0x15, 0x78, 0x69, 0xb5, 0x6f, 0x89, 0x37, 0x37, - 0xec, 0xa0, 0xa5, 0xad, 0xb9, 0x44, 0x6c, 0xf2, 0x1d, 0x88, - 0x5f, 0xe4, 0x4d, 0x7e, 0xb8, 0xe8, 0x76, 0xcb, 0x67, 0xa5, - 0xda, 0x40, 0xa3, 0x2, 0x38, 0xc0, 0xfc, 0x7b, 0xd7, 0xe7, - 0x67, 0xfc, 0x13, 0xe3, 0xc1, 0xd1, 0x4b, 0x63, 0x2e, 0xa0, - 0xc8, 0xb2, 0x49, 0x7d, 0x76, 00, 0x2c, 0x73, 0x85, 0x8f, - 0x77, 0x1f, 0xa5, 0x7e, 0x8e, 0xc1, 0xc6, 00, 0x15, 0xf4, - 0xb4, 0x55, 0xa0, 0x8f, 0xad, 0xc3, 0xc6, 0xd4, 0xd1, 0xa1, - 00, 0xab, 0xf0, 0xad, 0x52, 0x87, 0x3c, 0x55, 0xe8, 0x8f, - 0x2, 0xb6, 0x3a, 0xd, 0xb, 0x61, 0xc5, 0x5f, 0x88, 0x55, - 0x2b, 0x6e, 0x95, 0x7a, 0x3a, 00, 0xb7, 0x17, 0x41, 0x56, - 0x63, 0xc7, 0x15, 0x5e, 0x31, 0x56, 0x63, 0x1d, 0x28, 0x2, - 0xc2, 0xc, 0xd4, 0xcb, 0x51, 0x46, 0x2a, 0x55, 0xe9, 0x40, - 0x12, 0x2f, 0x6a, 0x91, 0x6a, 0x31, 0x52, 0x2d, 00, 0x3d, - 0x7a, 0x52, 0xd0, 0x38, 0xa2, 0x80, 0x15, 0x69, 0xd4, 0x8b, - 0x4b, 0x40, 0x10, 0xb7, 0x7a, 0x63, 0x53, 0x9a, 0xa3, 0x63, - 0xcd, 00, 0x31, 0x8d, 0x44, 0xfc, 0xa, 0x91, 0xba, 0x54, - 0x32, 0x1a, 00, 0x86, 0x43, 0x55, 0x65, 0x35, 0x3c, 0x86, - 0xaa, 0x4e, 0x7e, 0x53, 0x40, 0x1f, 0x3f, 0xfe, 0xd9, 0xbe, - 0x29, 0x6d, 0x7, 0xe1, 0x14, 0xf6, 0x71, 0x48, 0xb1, 0xcd, - 0xa9, 0xdc, 0x47, 0x2, 0xe4, 0xe0, 0x90, 0x18, 0x33, 0x1, - 0xcf, 0xa0, 0x3f, 0xad, 0x71, 0x9f, 0xb1, 0xdf, 0x85, 0x7e, - 0xcd, 0xa3, 0x5c, 0x6a, 0xf, 0x11, 0xd, 0x29, 0x50, 0xac, - 0x47, 0x61, 0x9e, 0x9c, 0x7b, 0xd7, 0x37, 0xfb, 0x70, 0xf8, - 0x88, 0x6a, 0x9e, 0x30, 0xf0, 0xf7, 0x87, 0xa1, 0x90, 0xc8, - 0xb6, 0xf1, 0x19, 0xe5, 0x8c, 0x64, 0x6d, 0x90, 0x92, 0x7, - 0x5e, 0x3e, 0xe9, 0x15, 0xef, 0xdf, 00, 0x3c, 0x34, 0x34, - 0x2f, 0x6, 0xe9, 0xf0, 0x14, 0x28, 0xc5, 0x77, 0x30, 0x3e, - 0xbc, 0xd7, 0xc6, 0x47, 0xfd, 0xaf, 0x3b, 0x72, 0xe9, 0x4d, - 0x5b, 0xe6, 0x7e, 0x7d, 0xf, 0xf6, 0xee, 0x23, 0x94, 0xba, - 0x52, 0x8d, 0xbe, 0x67, 0xb2, 0xe9, 0xd1, 0xed, 0x45, 0xad, - 0xa8, 0xc6, 0x14, 0x55, 0xb, 0x48, 0xf8, 0x5a, 0xd1, 0x15, - 0xf6, 0x67, 0xe8, 0x22, 0xd1, 0x45, 0x14, 00, 0x51, 0x45, - 0x66, 0xea, 0x5e, 0x21, 0xd3, 0xf4, 0x90, 0x7e, 0xd5, 0x75, - 0x1c, 0x24, 0x7f, 0x78, 0xd0, 0x5, 0xf, 0x1c, 0x68, 0x6b, - 0xe2, 0x1d, 0x2, 0xe2, 0xcd, 0xa3, 0xf3, 0x3, 0x83, 0xf2, - 0x81, 0x9c, 0xf1, 0x5f, 0x91, 0x1f, 0xb6, 0x9f, 0xec, 0xd9, - 0xa8, 0xc7, 0xad, 0xdc, 0xde, 0xdb, 0x58, 0x4b, 0xd, 0xb0, - 0x25, 0x8b, 0x8, 0xf6, 0x82, 0x72, 0x7d, 0x16, 0xbf, 0x5d, - 0x2d, 0xfe, 0x20, 0x68, 0x57, 0x2c, 0x55, 0x75, 0x2b, 0x72, - 0x7a, 0x63, 0x75, 0x79, 0xd7, 0xc6, 0x1f, 0x86, 0x3a, 0x5f, - 0xc5, 0xd, 0x2d, 0xe1, 0x49, 0x63, 0x98, 0xb2, 0x9e, 0x51, - 0x80, 0x3d, 0xe8, 0x3, 0xf9, 0xd6, 0xd7, 0xf4, 0x9, 0x74, - 0x3b, 0xb6, 0x86, 0x51, 0x86, 0x4, 0xf0, 0x7f, 0xfd, 0x55, - 0x93, 0x5f, 0xa5, 0x3f, 0x1b, 0xbf, 0x60, 0xa4, 0xb7, 0xbb, - 0x96, 0xed, 0x2d, 0x2e, 0x32, 0x73, 0x8d, 0xb2, 0x8e, 0x79, - 0xff, 00, 0x7a, 0xbe, 0x72, 0xbd, 0xfd, 0x91, 0xee, 0x60, - 0x99, 0x90, 0x59, 0xdc, 0x8c, 0x1c, 0x7f, 0xac, 0x7, 0xfa, - 0xd0, 0x7, 0xcc, 0x75, 0x7f, 0x4d, 0xd0, 0xef, 0x75, 0x67, - 0x9, 0x6b, 0x3, 0xca, 0xc7, 0x80, 0x14, 0x75, 0xaf, 0xa6, - 0xf4, 0x1f, 0xd8, 0x9b, 0x56, 0xd7, 0xa7, 0xf2, 0xe1, 0xb5, - 0xbc, 0x27, 0x3d, 0x99, 0x7f, 0xc6, 0xbe, 0x9e, 0xf8, 0x23, - 0xff, 00, 0x4, 0xe9, 0xbe, 0xd3, 0x6e, 0x2d, 0x6e, 0xef, - 0xec, 0x2e, 0xda, 0x35, 0x60, 0x49, 0x77, 0x4c, 0x75, 0x1e, - 0xf4, 0x1, 0xf2, 0xbf, 0xec, 0xdf, 0xfb, 0x2a, 0x78, 0x83, - 0xc7, 0x5a, 0xd4, 0x7f, 0x6e, 0xd1, 0xe7, 0x10, 0x6f, 0x1c, - 0xbc, 0x67, 0x18, 0xf7, 0xca, 0x9a, 0xfd, 0x9b, 0xfd, 0x9f, - 0xbe, 00, 0x69, 0x1f, 0xc, 0x7c, 0x2d, 0x60, 0x89, 0x6c, - 0x91, 0xdc, 0x2a, 0x2, 0x54, 0x46, 0xa3, 0x1f, 0xf8, 0xe8, - 0xad, 0x8f, 0x84, 0xbf, 0x4, 0x74, 0x4f, 00, 0xe9, 0xc8, - 0x23, 0xd3, 0xc4, 0x73, 0x80, 0x39, 0x63, 0x9e, 0xc2, 0xbd, - 0x4d, 0x50, 0x20, 00, 0xc, 0x28, 0xe8, 0x5, 00, 0x28, - 0x18, 0x14, 0xb4, 0x87, 0xa5, 0x32, 0x46, 0xd8, 0xa4, 0xfa, - 0xa, 0x5b, 0x6, 0xc7, 0xf, 0xf1, 0xb, 0x50, 0xf2, 0x6d, - 0x64, 00, 0xe3, 0x8c, 0x57, 0x8a, 0x96, 0x2f, 0x23, 0xb1, - 0xee, 0x4d, 0x7a, 0x27, 0xc4, 0xbd, 0x43, 0x24, 0xc6, 0xf, - 0x27, 0xb5, 0x79, 0xd2, 0xf4, 0xaf, 0xc8, 0x33, 0xda, 0xfe, - 0xdb, 0x16, 0xd7, 0x63, 0xf0, 0x5e, 0x25, 0xc4, 0x7b, 0x7c, - 0x6b, 0x8d, 0xf6, 0x16, 0x8a, 0x28, 0xaf, 0x9c, 0x3e, 0x50, - 0x28, 0xa2, 0x83, 0x43, 0x3, 0x7f, 0xc1, 0x36, 0x5f, 0x6a, - 0xd5, 0x15, 0x88, 0x27, 0x6, 0xbd, 0xef, 0x4c, 0x88, 0x45, - 0x6c, 0xa0, 0x57, 0x92, 0xfc, 0x33, 0xd3, 0xf7, 0x3f, 0x9a, - 0x57, 0x8c, 0xf5, 0xaf, 0x62, 0x85, 0x76, 0x46, 0x7, 0xb5, - 0x7e, 0xa5, 0xc3, 0x74, 0x39, 0x30, 0xfc, 0xef, 0xa9, 0xfb, - 0x3f, 0x8, 0xe1, 0xbd, 0x96, 0x13, 0xda, 0x35, 0xb9, 0x25, - 0x14, 0x51, 0x5f, 0x62, 0x7d, 0xf1, 0xd, 0xd2, 0x6f, 0x81, - 0xd7, 0xd4, 0x57, 0x88, 0x7c, 0x41, 0xb2, 0xfb, 0x35, 0xe1, - 0x2a, 0x39, 0x26, 0xbd, 0xd1, 0xba, 0x57, 0x92, 0x7c, 0x4b, - 0xb7, 0xcc, 0xed, 0x21, 0x18, 0x2, 0xbe, 0x53, 0x88, 0xa9, - 0x29, 0xe1, 0x5c, 0xbb, 0x1f, 0x15, 0xc5, 0x54, 0x55, 0x4c, - 0x13, 0x97, 0x63, 0xcd, 0x68, 0xa4, 0x53, 0x9c, 0xd2, 0xd7, - 0xe4, 0xc8, 0xfc, 0x39, 0x5, 0x14, 0x51, 0x4c, 0x60, 0x78, - 0x15, 0xda, 0xfc, 0x3e, 0x95, 0x61, 0xb8, 0x51, 0xc6, 0xe2, - 0x6b, 0x8a, 0xae, 0xb7, 0xc0, 0x7, 0x76, 0xa6, 0xa0, 0xf4, - 0x6, 0xbd, 0x4c, 0xb1, 0xdb, 0x15, 0xb, 0x77, 0x3d, 0x8c, - 0x9e, 0x5c, 0xb8, 0xd8, 0x58, 0xf7, 0x58, 0xbe, 0xe2, 0xfd, - 0x29, 0xfd, 0xe9, 0x91, 0x30, 0x64, 0x52, 0x3d, 0x29, 0xe2, - 0xbf, 0x6e, 0x5b, 0x1f, 0xd1, 0x6b, 0x64, 0x2d, 0x14, 0x51, - 0x4c, 0xa0, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, - 0xaa, 0x5a, 0x94, 0xe2, 0xb, 0x57, 0x24, 0xf6, 0xab, 0xb5, - 0xce, 0x78, 0xc6, 0xf0, 0x5b, 0x69, 0xd2, 0x1d, 0xd8, 0xe2, - 0xb9, 0xb1, 0x35, 0x3d, 0x95, 0x29, 0x4f, 0xb1, 0xc9, 0x8b, - 0xab, 0xec, 0x68, 0x4a, 0x6f, 0xa2, 0x3c, 0x63, 0xc6, 0x17, - 0xa2, 0xf3, 0x56, 0x72, 0xe, 0x42, 0xd6, 0x1d, 0x4d, 0x79, - 0x31, 0x9e, 0xee, 0x57, 0x3d, 0xda, 0xa1, 0xaf, 0xc3, 0x2b, - 0xd4, 0x75, 0x6a, 0xca, 0x6f, 0xab, 0x3f, 0x9b, 0x71, 0x35, - 0x5d, 0x6a, 0xf3, 0xa8, 0xfa, 0xb0, 0xa2, 0x8a, 0x2b, 0x3, - 0x9c, 0x29, 0xa, 0xee, 0x65, 0x5f, 0x53, 0x4b, 0x53, 0xe9, - 0x90, 0xfd, 0xa2, 0xfe, 0x35, 0x3, 0x38, 0x34, 0xd4, 0x79, - 0x9a, 0x8a, 0xea, 0x38, 0xc7, 0x9e, 0x4a, 0x2b, 0xa9, 0xeb, - 0x1f, 0xf, 0x74, 0xfd, 0x91, 0xc6, 0xdb, 0x7d, 0xeb, 0xd1, - 0x47, 0x15, 0xcd, 0x78, 0x36, 0xd3, 0xc9, 0xb3, 0x7, 0x18, - 0xe2, 0xba, 0x6c, 0x75, 0xaf, 0xdb, 0x72, 0xca, 0x5e, 0xc7, - 0xd, 0x14, 0x7f, 0x44, 0xe4, 0xf4, 0x15, 0xc, 0x24, 0x22, - 0x2d, 0x14, 0x51, 0x5e, 0xa9, 0xed, 0x85, 0x14, 0x51, 0x40, - 0x8, 0x6b, 0xb, 0xc5, 0xf2, 0x98, 0xb4, 0xa9, 0x31, 0xdc, - 0x1a, 0xde, 0xae, 0x77, 0xc6, 0x43, 0x36, 0x4, 0x76, 0xc5, - 0x71, 0xe3, 0x1d, 0xa8, 0x4e, 0xdd, 0x8e, 0xc, 0x7b, 0x6b, - 0xd, 0x3b, 0x76, 0x3c, 0x13, 0x53, 0x38, 0xb9, 0x23, 0xbe, - 0x6a, 0xb5, 0x58, 0xd4, 0x9b, 0x75, 0xf4, 0x9f, 0x5a, 0xaf, - 0x5f, 0x86, 0x54, 0xf8, 0xe4, 0x7f, 0x36, 0xd5, 0xd6, 0xa4, - 0x98, 0x51, 0x45, 0x15, 0x99, 0x98, 0x52, 0x31, 0xc0, 0xa5, - 0xa0, 0x8d, 0xd8, 0xa1, 0x89, 0xec, 0x7a, 0x6f, 0xc3, 0x5b, - 0x70, 0x81, 0x78, 0xe6, 0xbd, 0x61, 0x46, 0x14, 0x57, 0x94, - 0x7c, 0x33, 0x2d, 0x2c, 0xff, 00, 0xec, 0x8a, 0xf5, 0x71, - 0x5f, 0xb0, 0x64, 0x4b, 0xfd, 0x8e, 0x36, 0x3f, 0x7a, 0xe1, - 0xa4, 0x96, 0x6, 0x2d, 0xb, 0x45, 0x14, 0x57, 0xd1, 0x9f, - 0x58, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x4d, 0x24, 0x1, 0xcf, 0x14, 0x1, 0x8d, 0xe2, 0x7d, - 0x41, 0x6c, 0xec, 0xce, 0x58, 0xc, 0xfa, 0xd7, 0x82, 0xf8, - 0x86, 0xf3, 0xed, 0x9a, 0x8b, 0x1c, 0xe7, 0x7, 0xd6, 0xbd, - 0x1b, 0xe2, 0x4e, 0xba, 0xaa, 0xfe, 0x4a, 0x3f, 0x23, 0xd2, - 0xbc, 0xa5, 0xcf, 0x99, 0x23, 0x31, 0xee, 0x6b, 0xf2, 0xde, - 0x23, 0xc6, 0x2a, 0xb5, 0xbd, 0x94, 0x7a, 0x1f, 0x8b, 0xf1, - 0x66, 0x3f, 0xdb, 0x57, 0xf6, 0x11, 0x7a, 0x21, 0x28, 0xa2, - 0x8a, 0xf8, 0xe3, 0xe0, 0x82, 0x8a, 0x28, 0xa0, 0x4, 0x6e, - 0x46, 0x2b, 0xbb, 0xf8, 0x7f, 0xa6, 0x99, 0xaf, 0xa3, 0x25, - 0x4e, 0x1, 0xae, 0x1e, 0x4, 0x32, 0xdc, 0xc6, 0x83, 0xa9, - 0x23, 0x8a, 0xf6, 0x7f, 0x87, 0xfa, 0x4f, 0xd9, 0xe3, 0x12, - 0x15, 0x23, 0x23, 0x39, 0xaf, 0xa0, 0xc8, 0xf0, 0xde, 0xdf, - 0x12, 0x9f, 0x44, 0x7d, 0x4f, 0xe, 0x61, 0x1e, 0x27, 0x18, - 0x9f, 0x44, 0x77, 0x48, 0xbb, 0x42, 0x8f, 0x41, 0x4e, 0x14, - 0xb4, 0x57, 0xec, 0x67, 0xef, 0x76, 0xa, 0x28, 0xa2, 0x81, - 0x85, 0x21, 0xa5, 0xa2, 0x80, 0x20, 0x96, 0x15, 0x99, 0x76, - 0xb0, 0xac, 0x1d, 0x53, 0xc2, 0x10, 0x5e, 0xab, 0x1c, 0x2, - 0x6b, 0xa5, 0xa4, 0x35, 0xcf, 0x56, 0x85, 0x3a, 0xca, 0xd5, - 0x15, 0xce, 0x5a, 0xf8, 0x6a, 0x58, 0x85, 0x6a, 0x91, 0xb9, - 0xe4, 0x3a, 0xc7, 0x80, 0x12, 0x1d, 0xc5, 0x53, 0xf4, 0xff, - 00, 0xeb, 0x57, 0x1d, 0xa9, 0xe8, 0x8d, 0x66, 0x4f, 0xc8, - 0xdc, 0x7b, 0x57, 0xd0, 0xf3, 0x59, 0x45, 0x36, 0x77, 0x2e, - 0x73, 0x58, 0x7a, 0xb7, 0x84, 0xad, 0x6e, 0x50, 0x9d, 0x9c, - 0xd7, 0xc8, 0x63, 0x78, 0x7a, 0x35, 0x13, 0x95, 0x1d, 0x19, - 0xf0, 0x99, 0x8f, 0xb, 0x42, 0xa2, 0x72, 0xa0, 0x92, 0x3e, - 0x7d, 0x60, 0xca, 0x70, 0x54, 0xfe, 0x22, 0x94, 0x74, 0xaf, - 0x46, 0xd7, 0x3c, 0x1b, 0xe5, 0x6, 0x31, 0xc4, 0x4d, 0x70, - 0xba, 0x86, 0x9b, 0x3d, 0xa3, 0xb6, 0xe8, 0xc8, 0x1e, 0xf5, - 0xf0, 0x78, 0xac, 0xd, 0x6c, 0x2b, 0xb4, 0x91, 0xf9, 0x9e, - 0x33, 0x2d, 0xaf, 0x82, 0x7e, 0xfa, 0xd0, 0xa7, 0x45, 0x3, - 0x3d, 0xe8, 0xaf, 0x3c, 0xf2, 0xc2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0x3d, 0x29, 0x31, 0x32, 0x23, 0xc3, 0x29, 0x3d, - 0x8d, 0x7a, 0x37, 0x80, 0x2f, 0xc, 0xe4, 0x29, 0x38, 0x51, - 0x5e, 0x6f, 0x31, 0xda, 0xb5, 0xd9, 0xf8, 0x12, 0xe7, 0xc9, - 0xc7, 0x3f, 0x31, 0xff, 00, 0xeb, 0x57, 0xb9, 0x92, 0x4b, - 0x93, 0x14, 0x8f, 0xa3, 0xe1, 0xda, 0x9e, 0xcf, 0x1a, 0x8f, - 0x49, 0xbd, 0x97, 0x2b, 0x58, 0x1a, 0x84, 0x98, 0x52, 0x2b, - 0x56, 0x59, 0x33, 0x12, 0x9f, 0x6a, 0xc2, 0xd4, 0x5f, 00, - 0xd7, 0xec, 0xe9, 0xdd, 0x5c, 0xfe, 0x81, 0x8b, 0xba, 0xb9, - 0xce, 0xea, 0x52, 0x75, 0xe6, 0xb8, 0xfd, 0x5e, 0x4f, 0xbd, - 0xcd, 0x75, 0x1a, 0x8c, 0x9d, 0x6b, 0x8c, 0xd6, 0x65, 0xfb, - 0xd4, 0xca, 0x39, 0x1d, 0x66, 0x6e, 0x5b, 0x9a, 0xf1, 0x1f, - 0x89, 0x5a, 0x87, 0xfa, 0xd0, 0xf, 0x6a, 0xf6, 0x1d, 0x6e, - 0x6c, 0x24, 0x87, 0xda, 0xbe, 0x7a, 0xf8, 0x95, 0xa8, 0x65, - 0xa5, 0xe7, 0xd7, 0xf9, 0xd7, 0x9d, 0x8e, 0x9f, 0x2d, 0x23, - 0xca, 0xcc, 0x67, 0xc9, 0x44, 0xf0, 0x4f, 0x19, 0xdd, 0x79, - 0xb7, 0x6c, 0x33, 0xde, 0xbc, 0xff, 00, 0x52, 0x93, 0x19, - 0xae, 0xb3, 0xc4, 0x57, 0x1e, 0x6d, 0xdc, 0xa7, 0x35, 0xc5, - 0x6a, 0x72, 0x7d, 0xea, 0xf8, 0x9a, 0x7e, 0xf4, 0xee, 0x7e, - 0x77, 0x45, 0x73, 0x54, 0x6c, 0xe7, 0xef, 0x5f, 0x25, 0xab, - 0x22, 0xe0, 0xe7, 0x23, 0xae, 0x6b, 0x4a, 0xe9, 0xbe, 0xf5, - 0x57, 0xd3, 0x6c, 0xe4, 0xd4, 0xb5, 0x8b, 0x2b, 0x58, 0x90, - 0xc9, 0x24, 0xb3, 0x22, 0x5, 0xce, 0x33, 0x93, 0x5f, 0x47, - 0x45, 0x6c, 0x8f, 0xac, 0xc3, 0xc6, 0xf6, 0x47, 0xe9, 0xef, - 0xec, 0x31, 0xe1, 0x6f, 0xec, 0x9f, 0x2, 0x68, 0x5, 0xad, - 0xda, 0x16, 0xfb, 0x17, 0xda, 0x18, 0x3a, 0x5, 0x3b, 0xdf, - 0x4, 0xff, 00, 0x33, 0xef, 0x5f, 0x5d, 0x5b, 0x8e, 0x95, - 0xe4, 0x7f, 0xb3, 0xf6, 0x83, 0x1e, 0x8b, 0xe1, 0x8d, 0x91, - 0xae, 0x22, 0x44, 0x8e, 0x28, 0xfd, 0x82, 0xaf, 0x23, 0xf9, - 0x57, 0xaf, 0x40, 0x38, 0x15, 0xf4, 0x51, 0x56, 0x56, 0x3e, - 0xae, 0x2b, 0x95, 0x24, 0x5f, 0x84, 0x70, 0x2a, 0xf4, 0x23, - 0x91, 0x54, 0xed, 0xc5, 0x5e, 0x82, 0xa8, 0xa3, 0x42, 0xdd, - 0x78, 0xab, 0xd1, 0x2f, 0x35, 0x4a, 0xdc, 0x74, 0xab, 0xd1, - 0xe, 0x68, 0x2, 0xdc, 0x62, 0xac, 0xc6, 0x2a, 0xbc, 0x43, - 0x22, 0xac, 0xc6, 0x28, 0x2, 0x74, 0x15, 0x2a, 0x8a, 0x62, - 0x8e, 0x2a, 0x41, 0xd6, 0x80, 0x1e, 0xb5, 0x20, 0xed, 0x4c, - 0x5a, 0x90, 0x75, 0xa0, 0x7, 0x51, 0x45, 0x14, 00, 0xe1, - 0xd2, 0x96, 0x90, 0x52, 0xd0, 0x5, 0x76, 0x35, 0x1b, 0x53, - 0xcd, 0x46, 0xd4, 00, 0xd6, 0x35, 0x5e, 0x43, 0x53, 0x31, - 0xaa, 0xd2, 0x1a, 00, 0x82, 0x43, 0x54, 0xaf, 0x25, 0x58, - 0x21, 0x79, 0x1c, 0xed, 0x45, 0x5, 0x98, 0x9e, 0xc0, 0x77, - 0xab, 0x72, 0x1a, 0xe2, 0x3e, 0x2e, 0xf8, 0x8d, 0xbc, 0x2b, - 0xf0, 0xe7, 0xc4, 0x3a, 0xa2, 0x22, 0xc8, 0xd6, 0xf6, 0x72, - 0x30, 0x57, 0x6d, 0xa0, 0xe4, 0x63, 0xaf, 0xe3, 0x59, 0xd4, - 0x9a, 0xa7, 0x9, 0x4d, 0xec, 0x8c, 0xaa, 0xcd, 0x52, 0xa7, - 0x2a, 0x8f, 0x64, 0xae, 0x7c, 0x41, 0xab, 0x5d, 0xb7, 0xc5, - 0x3f, 0xda, 0x33, 0x51, 0x98, 0xb1, 0xba, 0xb6, 0x37, 0xc6, - 0x18, 0xc9, 0xe3, 0x31, 0xc7, 0xf2, 0x8f, 0x4e, 0x30, 0xbd, - 0xeb, 0xef, 0xaf, 0x7, 0xe9, 0xcb, 0x67, 0x67, 0xc, 0x6a, - 0xbb, 0x55, 0x54, 00, 0x2b, 0xe1, 0xcf, 0xd9, 0x1b, 0xc3, - 0x87, 0x54, 0xf1, 0x44, 0xba, 0x94, 0xc0, 0xb3, 0x44, 0x33, - 0xb8, 0xaf, 0x56, 0x20, 0xe7, 0xf9, 0xd7, 0xdf, 0x9a, 0x1d, - 0xb8, 0x48, 0x57, 0x15, 0xf2, 0x9c, 0x3b, 0x7, 0x52, 0x9d, - 0x4c, 0x54, 0xb7, 0x9c, 0x9f, 0xdc, 0x7c, 0x47, 0xa, 0x41, - 0xd4, 0xa7, 0x57, 0x1b, 0x3d, 0xea, 0x49, 0xfd, 0xc6, 0xed, - 0xb4, 0x78, 0xab, 0x34, 0xd4, 0x5d, 0xaa, 0x29, 0xd5, 0xf5, - 0xe7, 0xde, 0x5, 0x14, 0x51, 0x40, 0x15, 0xf5, 0xb, 0x91, - 0x67, 0x65, 0x3c, 0xec, 0x70, 0x23, 0x42, 0xd5, 0xf9, 0x5f, - 0xfb, 0x6e, 0x7e, 0xd2, 0x7a, 0xf6, 0x81, 0x75, 0x7a, 0x9a, - 0x76, 0xac, 0xf6, 0xe4, 0x64, 0x2e, 0x22, 0x53, 0xf8, 0x72, - 0xb5, 0xfa, 0x5b, 0xf1, 0x3b, 0x50, 0x93, 0x4f, 0xf0, 0x66, - 0xa0, 0xf1, 0xc, 0xc8, 0xc9, 0xb4, 0x1, 0xf8, 0x57, 0xe1, - 0x3f, 0xed, 0xb5, 0xe2, 0x9, 0xee, 0x3c, 0x59, 0x2d, 0xac, - 0x87, 0xef, 0x37, 0x73, 0xc9, 0x1f, 0x4e, 0xd4, 0x1, 0xc8, - 0xe9, 0x7f, 0xb5, 0x5f, 0xc4, 0x8, 0x27, 0x7, 0xfe, 0x12, - 0x16, 0xe4, 0xff, 00, 0xcf, 0xbc, 0x5f, 0xfc, 0x45, 0x7d, - 0xc9, 0xfb, 0x1f, 0x7c, 0x60, 0xf1, 0x97, 0x8f, 0xf5, 0x9b, - 0xb, 0x6b, 0xed, 0x5d, 0xe7, 0x8d, 0xca, 0x86, 0x1e, 0x5a, - 0x1, 0x83, 0xf4, 0x51, 0x5f, 0x96, 0x1a, 0x44, 0x3f, 0x69, - 0xd4, 0x60, 0x8c, 0x9e, 0xb, 0xa, 0xfd, 0x69, 0xff, 00, - 0x82, 0x69, 0xf8, 0x22, 0x1b, 0xad, 0x45, 0x2f, 0x8a, 0x87, - 0x10, 0x80, 0xdf, 0x30, 0xe0, 0x60, 0x3, 0xeb, 0xd6, 0x80, - 0x3f, 0x45, 0x2e, 0xbc, 0x17, 0xa4, 0xea, 0x96, 0x89, 0x15, - 0xe5, 0xa8, 0x9b, 0xa, 0x1, 0xcb, 0x11, 0x9f, 0xc8, 0xd6, - 0x4, 0xbf, 0x3, 0xbc, 0x1d, 0x2b, 0x16, 0x3a, 0x4a, 0x67, - 0xfd, 0xf7, 0xff, 00, 0x1a, 0xef, 0x47, 0x14, 0xb4, 0x1, - 0xc8, 0x69, 0x3f, 0xa, 0x7c, 0x37, 0xa2, 0x49, 0xbe, 0xd7, - 0x4f, 0x58, 0xcf, 0xb3, 0x37, 0xf8, 0xd7, 0x57, 0xc, 0x29, - 0x4, 0x61, 0x10, 0x6d, 0x50, 0x30, 0x7, 0xa5, 0x49, 0x45, - 00, 0x25, 0x2d, 0x14, 0x50, 0x2, 0x55, 0x3d, 0x4e, 0x6f, - 0x22, 0xd2, 0x46, 0xf6, 0x35, 0x70, 0xf4, 0xac, 0xf, 0x16, - 0xdd, 0xfd, 0x9e, 0xc5, 0xf0, 0x7b, 0x66, 0xb9, 0xf1, 0x13, - 0xf6, 0x74, 0xa5, 0x23, 0x97, 0x15, 0x53, 0xd9, 0x51, 0x94, - 0xfb, 0x23, 0xc6, 0x3c, 0x6d, 0x7a, 0x6e, 0xb5, 0x46, 0x5d, - 0xdc, 0x3, 0xfd, 0x4d, 0x60, 0x55, 0x9d, 0x52, 0x63, 0x71, - 0xa8, 0xca, 0xe4, 0xe7, 0x9a, 0xad, 0x5f, 0x86, 0x62, 0x2a, - 0x7b, 0x5a, 0xd2, 0x9b, 0xea, 0xcf, 0xe6, 0xec, 0x55, 0x57, - 0x5a, 0xbc, 0xea, 0x3e, 0xac, 0x28, 0xa2, 0x8a, 0xe7, 0x39, - 0x42, 0x94, 0xd, 0xcc, 0xaa, 0x3b, 0x9c, 0x52, 0x55, 0xad, - 0x2a, 0xf, 0xb4, 0xea, 0x31, 0x27, 0xb8, 0xab, 0x8c, 0x79, - 0xa4, 0xa3, 0xdc, 0xa8, 0x45, 0xce, 0x4a, 0x2b, 0xa9, 0xec, - 0x1f, 0xe, 0xb4, 0xd1, 0x5, 0x84, 0x67, 0x6f, 0x38, 0xeb, - 0x5d, 0xd8, 0x18, 0x15, 0x87, 0xe1, 0x6b, 0x41, 0x6f, 0x60, - 0x9c, 0x63, 0xe5, 0x15, 0xb8, 0x2b, 0xf6, 0xfc, 0x5, 0x2f, - 0x63, 0x87, 0x84, 0x7c, 0x8f, 0xe8, 0xec, 0xae, 0x82, 0xc3, - 0xe1, 0x61, 0xf, 0x21, 0x68, 0xa2, 0x8a, 0xf4, 0x4f, 0x54, - 0x42, 0x33, 0x5e, 0x65, 0xf1, 0x45, 0x31, 0x16, 0xd5, 0xe7, - 0x3d, 0x6b, 0xd3, 0x6b, 0xce, 0xfe, 0x24, 0x28, 0x31, 0x33, - 0x1e, 0xc2, 0xbc, 0x2c, 0xe6, 0x3c, 0xd8, 0x39, 0xa3, 0xe6, - 0xf8, 0x82, 0x3c, 0xd8, 0x9, 0xa3, 0xc7, 0xb1, 0xb4, 0x90, - 0x28, 0xa4, 0x7, 0x73, 0x13, 0xeb, 0x4b, 0x5f, 0x8c, 0xa3, - 0xf9, 0xf4, 0x28, 0xa2, 0x8a, 0x6, 0x7, 0xa5, 0x74, 0xde, - 0x7, 0x90, 0xc5, 0x7a, 0xa0, 0x7d, 0xe6, 0x35, 0xcc, 0x9e, - 0x95, 0xd1, 0xf8, 0x24, 0xe7, 0x55, 0x4c, 0xf4, 0x6, 0xbb, - 0xb0, 0x3f, 0xef, 0x30, 0xf5, 0x3d, 0x2c, 0xb5, 0xdb, 0x17, - 0x4f, 0xd5, 0x1e, 0xf7, 0x68, 0xbb, 0x6d, 0xd0, 0x1f, 0x4a, - 0x9e, 0xa1, 0xb5, 0x71, 0x24, 0x2a, 0x45, 0x4d, 0x5f, 0xb9, - 0x43, 0xe1, 0x47, 0xf4, 0x84, 0x2d, 0xca, 0xac, 0x2d, 0x14, - 0x51, 0x56, 0x58, 0x51, 0x45, 0x14, 00, 0x51, 0x45, 0x21, - 0xa0, 0x2, 0xbc, 0xe7, 0xe2, 0x6e, 0xa4, 0x61, 0xb3, 0x64, - 0xc, 0x79, 0xaf, 0x43, 0x95, 0xb6, 0xc6, 0x4d, 0x78, 0xb7, - 0xc4, 0xcd, 0x40, 0xcb, 0x73, 0xe5, 0x67, 0x3f, 0x35, 0x7c, - 0xe6, 0x7b, 0x5f, 0xd8, 0xe1, 0x24, 0xbb, 0x9f, 0x25, 0xc4, - 0xb8, 0x9f, 0x61, 0x81, 0x97, 0x99, 0xc3, 0xe, 0x79, 0xf5, - 0xa2, 0x81, 0xd2, 0x8a, 0xfc, 0x7c, 0xfc, 0x19, 0x5, 0x14, - 0x51, 0x40, 0x5, 0x6e, 0x78, 0x36, 0xd3, 0xed, 0x37, 0xe0, - 0xe3, 0xb8, 0xac, 0x26, 0x38, 0x53, 0x5d, 0xdf, 0xc3, 0xcb, - 0xd, 0xd2, 0xab, 0x11, 0xe9, 0x5e, 0x8e, 0x5f, 0x49, 0xd6, - 0xc5, 0x46, 0x27, 0xad, 0x95, 0x50, 0x75, 0xf1, 0x90, 0x89, - 0xeb, 0xba, 0x3d, 0xb8, 0x82, 0xc9, 00, 0x18, 0xe2, 0xaf, - 0xd4, 0x70, 0x2e, 0xc8, 0x94, 0xe, 0xc2, 0xa4, 0xaf, 0xdb, - 0xe1, 0x1e, 0x58, 0xa4, 0x7f, 0x46, 0x53, 0x8f, 0x24, 0x14, - 0x7b, 0x5, 0x14, 0x51, 0x56, 0x68, 0x14, 0x51, 0x45, 00, - 0x15, 0xcd, 0xf8, 0xd9, 0xfc, 0xbd, 0x2d, 0xdb, 0xbe, 0x2b, - 0xa3, 0x35, 0xcd, 0xf8, 0xd9, 0x3c, 0xcd, 0x38, 0xaf, 0x6c, - 0x57, 0xe, 0x37, 0xfd, 0xde, 0x7e, 0x87, 0x9d, 0x98, 0xdf, - 0xea, 0xb5, 0x2d, 0xd8, 0xf0, 0x2b, 0xac, 0x99, 0xd8, 0x9e, - 0xa4, 0xd4, 0x75, 0x3e, 0xa3, 0xf2, 0xde, 0x3a, 0xfa, 0x1a, - 0x82, 0xbf, 0xd, 0x9f, 0xc4, 0xd1, 0xfc, 0xdd, 0x51, 0x5a, - 0x72, 0x41, 0x45, 0x14, 0x54, 0x10, 0x14, 0x13, 0x81, 0x45, - 0x7, 0xa5, 0x26, 0x1d, 0xf, 0x48, 0xf8, 0x67, 0x75, 0xe4, - 0x38, 0x1f, 0xc4, 0x45, 0x7a, 0xea, 0x9c, 0x81, 0x5e, 0xf, - 0xe0, 0x1b, 0xd2, 0xba, 0x96, 0xf, 0xa, 0x31, 0xfd, 0x6b, - 0xdc, 0xed, 0x64, 0x12, 0xc2, 0xac, 0x3b, 0x8a, 0xfd, 0x67, - 0x87, 0x6a, 0xa9, 0xe1, 0x79, 0x57, 0x43, 0xf6, 0xfe, 0x14, - 0xae, 0xaa, 0x60, 0xf9, 0x7b, 0x13, 0x51, 0x45, 0x15, 0xf5, - 0x67, 0xdb, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x52, 0x50, - 0x2, 0xd6, 0x2f, 0x89, 0x35, 0x51, 0xa7, 0x5a, 0x31, 0xdd, - 0xb5, 0xab, 0x52, 0x79, 0x85, 0xba, 0x16, 0x35, 0xe4, 0x7f, - 0x11, 0x3c, 0x4c, 0xd3, 0xdc, 0xf9, 0x51, 0xbe, 0x7, 0xa0, - 0xaf, 0x1b, 0x35, 0xc6, 0xc7, 0x5, 0x87, 0x72, 0xbe, 0xa7, - 0xcf, 0xe7, 0x39, 0x84, 0x30, 0x18, 0x69, 0x49, 0xbd, 0x5e, - 0xc7, 0x1f, 0xe2, 0x3d, 0x49, 0xf5, 0xd, 0x4a, 0x46, 0x2d, - 0x91, 0x9a, 0xcb, 0xa5, 0x66, 0x2e, 0xe5, 0x8f, 0x53, 0x49, - 0x5f, 0x8c, 0xd4, 0xa8, 0xea, 0xcd, 0xce, 0x5d, 0x4f, 0xe7, - 0xfa, 0xb5, 0x65, 0x5a, 0xa4, 0xaa, 0x4b, 0x76, 0x14, 0x51, - 0x45, 0x66, 0x64, 0x14, 0x51, 0x4a, 0x8b, 0xe6, 0x48, 0xaa, - 0x3b, 0xd0, 0x6, 0xef, 0x83, 0x74, 0xef, 0xb7, 0xea, 0xf1, - 0x82, 0x32, 0x1, 0x15, 0xef, 0x3a, 0x5d, 0x92, 0x59, 0xdb, - 0x2a, 0xaa, 0xe3, 0x8a, 0xf3, 0xdf, 0x86, 0x5a, 0x28, 0x49, - 0x3c, 0xe7, 0x5e, 0x7a, 0xe4, 0x8a, 0xf4, 0xec, 0xc, 0xf, - 0x4a, 0xfd, 0x5b, 0x87, 0xb0, 0x7e, 0xc7, 0xf, 0xed, 0x24, - 0xb5, 0x67, 0xed, 0x9c, 0x2b, 0x81, 0xfa, 0xbe, 0x17, 0xda, - 0xc9, 0x6b, 0x21, 0xf4, 0x51, 0x45, 0x7d, 0x69, 0xf7, 0x21, - 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x48, 0x46, - 0x69, 0x68, 0xa0, 0x4, 0x2, 0x82, 0x32, 0x31, 0x4b, 0x45, - 00, 0x41, 0x2d, 0xa4, 0x52, 0x82, 0x19, 0x1, 0xcd, 0x72, - 0x1e, 0x2d, 0xf0, 0xac, 0x77, 0x16, 0xae, 0xd1, 0xa6, 0x3e, - 0x86, 0xbb, 0x53, 0x51, 0x5c, 0x42, 0xb3, 0xc2, 0xc8, 0x7b, - 0xd7, 0x1e, 0x27, 0xd, 0x4f, 0x11, 0x7, 0x9, 0x23, 0x83, - 0x17, 0x83, 0xa5, 0x8a, 0xa4, 0xe1, 0x34, 0x7c, 0xdd, 0xab, - 0x69, 0xe6, 0xc2, 0x7d, 0x87, 0xd6, 0xa8, 0x57, 0x77, 0xe3, - 0xdd, 0x2d, 0x2d, 0xe6, 0x77, 0x3, 0xa5, 0x70, 0x6a, 0xc5, - 0xb9, 0xaf, 0xc5, 0xb1, 0xb4, 0x3e, 0xad, 0x5e, 0x54, 0xcf, - 0xe7, 0xbc, 0xc7, 0xd, 0xf5, 0x4c, 0x44, 0xa9, 0xb, 0x45, - 0x14, 0x57, 0x9, 0xe6, 0x85, 0x23, 0x74, 0xa5, 0xa4, 0x6e, - 0x94, 0x99, 0x2c, 0xaf, 0x71, 0xc9, 0x3, 0xad, 0x75, 0x3e, - 0xa, 0x52, 0xf7, 0x61, 0x6b, 0x95, 0x90, 0xe6, 0x4a, 0xee, - 0x3c, 0x3, 00, 0x32, 0x6f, 0xaf, 0x6f, 0x26, 0xa6, 0xe7, - 0x8a, 0x89, 0xf4, 0xbc, 0x3d, 0x49, 0xd4, 0xc6, 0xc4, 0xed, - 0xe7, 0x6c, 0x46, 0xa0, 0x76, 0x15, 0xcf, 0x6a, 0x72, 0x75, - 0xad, 0xbb, 0xa7, 0xc2, 0x57, 0x35, 0xa9, 0x49, 0x9c, 0xd7, - 0xed, 0xb, 0x43, 0xfa, 0x5, 0x68, 0x91, 0x81, 0xa8, 0xc9, - 0xc1, 0xe6, 0xb8, 0x7d, 0x6a, 0x6f, 0xbd, 0xcd, 0x75, 0xda, - 0x94, 0x9c, 0x35, 0x70, 0x9a, 0xd4, 0xdc, 0xb7, 0xd6, 0x98, - 0xce, 0x2b, 0xc5, 0x17, 0x66, 0x1b, 0x39, 0x5b, 0x38, 0xe2, - 0xbe, 0x67, 0xf8, 0x8f, 0xa8, 0x96, 0x69, 0x7e, 0x7f, 0x5a, - 0xf7, 0xff, 00, 0x1d, 0xdd, 0x98, 0xac, 0xdf, 0x1d, 0xc5, - 0x7c, 0xbb, 0xf1, 0x16, 0xfc, 0xb3, 0x48, 0x33, 0xeb, 0x5f, - 0x3d, 0x9a, 0x54, 0xb2, 0xb1, 0xf2, 0xd9, 0xd5, 0x5e, 0x58, - 0xf2, 0x9e, 0x53, 0xab, 0x4c, 0x5d, 0xdd, 0x89, 0xea, 0x6b, - 0x92, 0xd4, 0xe5, 0xeb, 0xcd, 0x74, 0x5a, 0x94, 0x9c, 0x1a, - 0xe5, 0x35, 0x19, 0x32, 0x4d, 0x7c, 0xfe, 0x1a, 0x37, 0x67, - 0xcb, 0x60, 0xe3, 0x7d, 0x4c, 0x7b, 0x96, 0xce, 0x6b, 0xbe, - 0xfd, 0x9b, 0xfc, 0x3b, 0xff, 00, 0x9, 0x3f, 0xc6, 0x2d, - 0x16, 0x2f, 0x2c, 0x48, 0xb6, 0x8d, 0xf6, 0xb6, 0x4, 0xe3, - 0x84, 0x23, 0x3c, 0xfe, 0x3d, 0x2b, 0xcf, 0x6e, 0x1b, 0x8a, - 0xfa, 0x4b, 0xf6, 0x14, 0xf0, 0xbf, 0xf6, 0xa7, 0x8c, 0xb5, - 0x5d, 0x48, 0x8f, 0x9e, 0x15, 0x4b, 0x78, 0xfe, 0x5c, 0xe7, - 0x79, 0xf9, 0xb9, 0xfc, 0xab, 0xe9, 0xb0, 0xd1, 0xbc, 0x91, - 0xf6, 0x18, 0x48, 0xde, 0x48, 0xfd, 0x3b, 0xf8, 0x7b, 0xa7, - 0x7f, 0x67, 0x78, 0x5a, 0xca, 0x3d, 0xa1, 0x4c, 0x89, 0xe6, - 0x11, 0xee, 0x79, 0xae, 0xc6, 0xdd, 0x7a, 0x56, 0x6e, 0x9f, - 0x6e, 0x2d, 0xed, 0xe2, 0x89, 0x7e, 0xea, 0x20, 0x2, 0xb5, - 0x20, 0xe3, 0x15, 0xed, 0x9f, 0x44, 0x5d, 0x80, 0x56, 0x85, - 0xba, 0xf4, 0xe2, 0xa9, 0x42, 0x38, 0x15, 0xa1, 0x7, 0x4, - 0x50, 0x5, 0xd8, 0x5, 0x5e, 0x85, 0x78, 0x6, 0xa9, 0xc1, - 0x57, 0xe2, 0x1c, 0xa, 00, 0xb1, 0x10, 0xab, 0x31, 0xf6, - 0xaa, 0xf1, 0x8c, 0x55, 0x98, 0xc7, 0x4a, 00, 0x9d, 0x2a, - 0x55, 0xa8, 0x90, 0x54, 0xa3, 0xa5, 00, 0x48, 0xbd, 0xaa, - 0x45, 0xa6, 0x2d, 0x3c, 0x74, 0xa0, 0x5, 0xa5, 0x1d, 0x69, - 0x29, 0x56, 0x80, 0x1d, 0x45, 0x14, 0x50, 0x5, 0x56, 0xa8, - 0xcf, 0x7a, 0x7b, 0x1a, 0x8d, 0xa8, 0x2, 0x37, 0xe9, 0x55, - 0xa4, 0xa9, 0xe4, 0x35, 0x5a, 0x43, 0x40, 0x15, 0xe4, 0x3c, - 0xd7, 0xce, 0xdf, 0xb6, 0xe5, 0xdc, 0xb6, 0xff, 00, 0x7, - 0x61, 0x48, 0x8e, 0x4, 0xfa, 0xa4, 0x30, 0xbf, 0xba, 0x94, - 0x94, 0x9f, 0xe4, 0x2b, 0xe8, 0x79, 0x5b, 00, 0xd7, 0xc9, - 0x5f, 0xb6, 0xcf, 0x88, 0x9a, 0xe6, 0x6f, 0xc, 0xf8, 0x5a, - 0x19, 0x43, 0x79, 0xf2, 0x9b, 0xb9, 0xa1, 00, 0xe7, 0x2b, - 0xf2, 0xa1, 0xf4, 0xfe, 0x26, 0xaf, 0x17, 0x39, 0xa9, 0xec, - 0xf0, 0x15, 0x5f, 0x75, 0x6f, 0xbc, 0xf9, 0xfc, 0xfe, 0xaf, - 0xb2, 0xcb, 0x2b, 0x3e, 0xad, 0x5b, 0xef, 0xd0, 0xd5, 0xfd, - 0x91, 0x3c, 0x2f, 0xfd, 0x9f, 0xe1, 0x61, 0x78, 0xca, 0x43, - 0x5c, 0x36, 0x72, 0x47, 0x50, 0x32, 0x2b, 0xeb, 0x1d, 0x32, - 0x20, 0xb1, 0x8a, 0xf2, 0x3f, 0x82, 0x5e, 0x1e, 0x5d, 0x1b, - 0xc2, 0x5a, 0x5c, 0x2, 0x3d, 0xa5, 0x61, 0x5c, 0xf1, 0xdf, - 0xad, 0x7b, 0x35, 0x8a, 00, 0xa2, 0xb6, 0xca, 0xe8, 0x7d, - 0x5b, 0x9, 0x4e, 0x9f, 0x91, 0xb6, 0x4d, 0x86, 0x58, 0x4c, - 0xd, 0x2a, 0x5e, 0x45, 0xda, 0x28, 0xa2, 0xbd, 0x43, 0xda, - 0xa, 0x28, 0xa2, 0x80, 0x39, 0xbf, 0x1e, 0x58, 0x7d, 0xbf, - 0xc3, 0xd7, 0x2a, 0x46, 0x42, 0xa1, 0x38, 0xaf, 0xc1, 0x9f, - 0xdb, 0x5b, 0xc3, 0x77, 0x2b, 0xf1, 0x2b, 0x52, 0xbc, 0x93, - 0x7a, 0xc2, 0x87, 0x3, 0x78, 0xc6, 0x7f, 0x4a, 0xfd, 0xfb, - 0xd6, 0x44, 0x72, 0x69, 0x93, 0xc7, 0x23, 0xa4, 0x6a, 0xeb, - 0xb7, 0x32, 0x30, 0x2, 0xbf, 0x2c, 0xff, 00, 0x6e, 0x5f, - 0x83, 0x3a, 0x5d, 0xdd, 0xd5, 0xdd, 0xca, 0x4b, 0x14, 0xa7, - 0x1b, 0x98, 0xa4, 0xca, 0x73, 0xf4, 0xc5, 00, 0x7e, 0x5f, - 0xe9, 0x53, 0x79, 0x17, 0xc9, 0x20, 0x3c, 0x8f, 0x5a, 0xfd, - 0x7b, 0xff, 00, 0x82, 0x6c, 0x78, 0xae, 0xc3, 0x4a, 0xd0, - 0x12, 0x39, 0x24, 0x43, 0x75, 0x28, 00, 0xd, 0xc3, 0x3, - 0x20, 0x74, 0xc9, 0xcd, 0x7e, 0x47, 0xeb, 0x76, 0x11, 0x69, - 0x9a, 0x9c, 0xb1, 0xc6, 0x70, 0x88, 0xe4, 0x2, 0xf, 0xa1, - 0xaf, 0xa8, 0xbf, 0x65, 0xf, 0xda, 0x2, 0xdf, 0xe1, 0xc6, - 0xaf, 0x6e, 0xf7, 0x17, 0x91, 0xc6, 0xa8, 0xea, 0x2, 0xcb, - 0x92, 0xbd, 0xbd, 0xe8, 0x3, 0xf7, 0xae, 0x27, 0xe, 0x81, - 0x87, 0x42, 0x33, 0x4f, 0xaf, 0x9b, 0x3e, 0x17, 0x7e, 0xd5, - 0x96, 0x3e, 0x30, 0xb4, 0x87, 0x75, 0xc5, 0xab, 0x96, 0xe9, - 0xb1, 0x48, 0x3f, 0xce, 0xbd, 0x86, 0xf, 0x89, 0x3a, 0x74, - 0xa8, 0x18, 0xcc, 0x83, 0x34, 0x1, 0xd9, 0x51, 0x5c, 0xaa, - 0xf8, 0xff, 00, 0x4e, 0x6f, 0xf9, 0x6e, 0x9f, 0x9d, 0x4e, - 0x9e, 0x39, 0xd3, 0x1b, 0xfe, 0x5b, 0xad, 00, 0x74, 0x74, - 0x56, 0x75, 0x8e, 0xbb, 0x69, 0x7f, 0x8f, 0x2a, 0x50, 0xc4, - 0xd6, 0x8d, 00, 0x21, 0xae, 0x3, 0xe2, 0x2e, 0xa0, 0x22, - 0xb4, 0x90, 0x3, 0xd8, 0xd7, 0x7b, 0x29, 0xda, 0x84, 0xfb, - 0x57, 0x8e, 0x7c, 0x4b, 0xd4, 0xb, 0x31, 0x8c, 0x1e, 0xa6, - 0xbe, 0x7f, 0x3b, 0xaf, 0xec, 0x70, 0x92, 0x3e, 0x5b, 0x88, - 0xf1, 0x1e, 0xc3, 0x5, 0x2b, 0x75, 0x3c, 0xff, 00, 0x3b, - 0x98, 0xb7, 0xa9, 0xcd, 0x14, 0x8b, 0xc0, 0xa5, 0xaf, 0xc7, - 0x11, 0xf8, 0x12, 0xa, 0x28, 0xa2, 0x81, 0x85, 0x74, 0x3e, - 0x6, 0xb3, 0x37, 0x3a, 0xb8, 0x6c, 0x70, 0x3f, 0xc4, 0x57, - 0x3c, 0x7a, 0x1a, 0xf4, 0x1f, 0x86, 0x5a, 0x7e, 0xe9, 0x3c, - 0xc2, 0x3a, 0xd7, 0xa9, 0x96, 0x52, 0xf6, 0xd8, 0xa8, 0x44, - 0xf6, 0x32, 0x7a, 0x1f, 0x58, 0xc6, 0xd3, 0x8f, 0x9d, 0xcf, - 0x5a, 0xd3, 0xa2, 0xf2, 0xed, 0x94, 0x63, 0x1c, 0x55, 0xaa, - 0x6c, 0x6b, 0xb5, 0x14, 0x53, 0xeb, 0xf6, 0xc8, 0xae, 0x54, - 0x91, 0xfd, 0x15, 0x8, 0xf2, 0xc5, 0x44, 0x28, 0xa2, 0x8a, - 0xb2, 0xc4, 0xaf, 0x3d, 0xf8, 0x9f, 0xc5, 0x99, 0x51, 0xd4, - 0x8a, 0xf4, 0x23, 0x5e, 0x79, 0xf1, 0x24, 0xef, 0x8c, 0xfb, - 0xa, 0xf1, 0x73, 0x8f, 0xf7, 0x39, 0x9f, 0x3d, 0x9f, 0x7f, - 0xb8, 0x4d, 0x1e, 0x3c, 0x57, 0x69, 0x23, 0xd2, 0x92, 0x82, - 0x77, 0x3b, 0x1a, 0x2b, 0xf1, 0x63, 0xf9, 0xec, 0x28, 0xa2, - 0x8a, 00, 0x2b, 0x6b, 0xc2, 0x6f, 0xe5, 0xde, 0x8f, 0x52, - 0x6b, 0x16, 0xb6, 0x3c, 0x2f, 0xf3, 0x6a, 0x91, 0x8e, 0xc0, - 0xf5, 0xae, 0xac, 0x2e, 0x95, 0xe1, 0xea, 0x76, 0xe0, 0x9d, - 0xb1, 0x30, 0xf5, 0x3e, 0x82, 0xd2, 0xc6, 0xdb, 0x28, 0xf3, - 0xe9, 0x56, 0xd6, 0xaa, 0x69, 0xcf, 0xe6, 0x5a, 0x21, 0xf4, - 0x15, 0x6c, 0x57, 0xee, 0x94, 0xed, 0xc8, 0xac, 0x7f, 0x49, - 0x52, 0xb7, 0x24, 0x6d, 0xd9, 0xb, 0x45, 0x14, 0x56, 0xa6, - 0xc1, 0x45, 0x14, 0x50, 0x1, 0x48, 0xdd, 0x29, 0x69, 0xd, - 00, 0x55, 0xd4, 0x24, 0xf2, 0xac, 0xe5, 0x63, 0xd8, 0x57, - 0xcf, 0xde, 0x2d, 0xba, 0xfb, 0x56, 0xb1, 0x27, 0x39, 0xa, - 0x6b, 0xdd, 0x3c, 0x4b, 0x3f, 0x91, 0xa4, 0xdc, 0x36, 0x7a, - 0x29, 0x35, 0xf3, 0xc5, 0xf4, 0xa6, 0x7b, 0xc9, 0x64, 0xf5, - 0x63, 0x5f, 0x9f, 0x71, 0x4d, 0x5b, 0x28, 0x52, 0x47, 0xe5, - 0xbc, 0x67, 0x5e, 0xca, 0x9d, 0x15, 0xd7, 0x52, 0xa, 0x28, - 0xa2, 0xbf, 0x3e, 0x3f, 0x2c, 0xa, 0x28, 0xa2, 0x80, 0x1a, - 0x46, 0x58, 0xf, 0x5a, 0xf6, 0xf, 0x87, 0x76, 0x25, 0x23, - 0x52, 0x47, 0x4a, 0xf2, 0x7b, 0x28, 0x7c, 0xfb, 0xc8, 0xd7, - 0x19, 0xe6, 0xbd, 0xdb, 0xc1, 0x16, 0x9e, 0x4d, 0xae, 0x48, - 0xed, 0x5f, 0x59, 0xc3, 0x94, 0x7d, 0xa6, 0x25, 0xcf, 0xb1, - 0xf6, 0xfc, 0x29, 0x87, 0xf6, 0xb8, 0xa7, 0x37, 0xd0, 0xea, - 0x14, 0x62, 0x9d, 0x48, 0x29, 0x6b, 0xf5, 0x63, 0xf6, 0xe0, - 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xac, 0x4f, - 0x14, 0x45, 0xbf, 0x4d, 0x95, 0xbb, 0xe2, 0xb6, 0xea, 0x86, - 0xb1, 0xf, 0x9f, 0x64, 0xe9, 0x5c, 0xf8, 0x88, 0xf3, 0xd2, - 0x92, 0xf2, 0x39, 0x71, 0x51, 0xe7, 0xa3, 0x28, 0xf9, 0x1f, - 0x39, 0xea, 0x91, 0x79, 0x77, 0x6e, 0xd8, 0xc6, 0x4d, 0x54, - 0xad, 0xaf, 0x16, 0x40, 0x62, 0xd4, 0x8a, 0xe3, 0x81, 0x58, - 0xb5, 0xf8, 0x66, 0x22, 0x1c, 0x95, 0x65, 0x13, 0xf9, 0xb7, - 0x15, 0xf, 0x67, 0x5e, 0x71, 0xf3, 0xa, 0x28, 0xa2, 0xb9, - 0xce, 0x60, 0xa2, 0x8a, 0x28, 0x3, 0x4b, 0x43, 0xba, 0xfb, - 0x2d, 0xd2, 0x74, 0xe4, 0xf7, 0xaf, 0x7a, 0xf0, 0xbd, 0xfa, - 0x5e, 0x69, 0xcb, 0xb4, 0xe4, 0xaf, 0x5a, 0xf9, 0xd1, 0x5b, - 0xcb, 0x70, 0xc3, 0xb5, 0x7a, 0x87, 0xc3, 0xdf, 0x11, 0x88, - 0xa2, 0x30, 0x96, 0x1f, 0x31, 0xaf, 0xb0, 0xe1, 0xec, 0x62, - 0xa1, 0x57, 0xd9, 0x4d, 0xe8, 0xcf, 0xbd, 0xe1, 0x5c, 0xc1, - 0x61, 0xeb, 0xba, 0x33, 0xd9, 0x9e, 0xa8, 0xd, 0x2d, 0x43, - 0x4, 0xeb, 0x34, 0x61, 0x87, 0x39, 0xf4, 0xa9, 0x6b, 0xf5, - 0x24, 0xd3, 0xd5, 0x1f, 0xb3, 0xa7, 0x75, 0x74, 0x2d, 0x14, - 0x51, 0x4c, 0x62, 0x53, 0x5d, 0xc4, 0x60, 0x96, 0x20, 0xa, - 0x49, 0x25, 0x11, 0x2e, 0xe6, 0x38, 0x1e, 0xf5, 0xc5, 0x78, - 0xaf, 0xc6, 0x50, 0xdb, 0x43, 0x2c, 0x71, 0x48, 0x37, 0xe, - 0x2b, 0x8f, 0x13, 0x8a, 0xa7, 0x85, 0x83, 0x9c, 0xd9, 0xc1, - 0x8b, 0xc6, 0x52, 0xc1, 0xd3, 0x75, 0x2a, 0x32, 0x1f, 0x1e, - 0xf8, 0xb5, 0x6c, 0x60, 0xd9, 0x13, 0x6, 0x27, 0x8e, 0xd, - 0x78, 0xfd, 0xf5, 0xdb, 0x5f, 0x5c, 0x99, 0x18, 0xd4, 0xfa, - 0xae, 0xa9, 0x2e, 0xa5, 0x29, 0x2e, 0xdb, 0x86, 0x6a, 0x8f, - 0x4a, 0xfc, 0x87, 0x33, 0xcc, 0x27, 0x8f, 0xaa, 0xdf, 0x43, - 0xf0, 0x8c, 0xe3, 0x34, 0xa9, 0x99, 0x57, 0x72, 0xbf, 0xbb, - 0xd8, 0x28, 0xa2, 0x8a, 0xf1, 0x8f, 00, 0x28, 0xa2, 0x8a, - 00, 0x2b, 0x63, 0xc2, 0x9a, 0x61, 0xd4, 0x35, 0x25, 0x18, - 0x24, 0xf, 0x6a, 0xc9, 0x85, 0x1a, 0x69, 0x95, 0x14, 0x67, - 0x35, 0xea, 0xff, 00, 0xe, 0x7c, 0x3a, 0x21, 0x73, 0x33, - 0xa9, 0xfc, 0x6b, 0xd8, 0xca, 0xf0, 0x8f, 0x17, 0x88, 0x8c, - 0x7a, 0x23, 0xdd, 0xc9, 0xb0, 0x32, 0xc7, 0x62, 0xa3, 0x1b, - 0x68, 0xb7, 0x3b, 0x9d, 0xb, 0x4d, 0x5b, 0xb, 0x45, 00, - 0x60, 0xe2, 0xb5, 0x29, 0x14, 0x60, 0x52, 0xd7, 0xec, 0xf4, - 0xe0, 0xa9, 0xc5, 0x45, 0x74, 0x3f, 0xa0, 0xe9, 0x53, 0x54, - 0xa0, 0xa1, 0x1d, 0x90, 0x51, 0x49, 0x9f, 0x6a, 0xcb, 0xbe, - 0xd7, 0xa0, 0xb1, 0x97, 0x63, 0x38, 0xcd, 0x13, 0xa9, 0x1a, - 0x6a, 0xf2, 0x76, 0xa, 0x95, 0x61, 0x49, 0x73, 0x4d, 0xd9, - 0x1a, 0xb4, 0x55, 0x1b, 0x2d, 0x52, 0x2b, 0xd5, 0xca, 0x30, - 0x3f, 0x4a, 0xbb, 0x55, 0x19, 0x29, 0xab, 0xc5, 0x95, 0x9, - 0xa9, 0xae, 0x68, 0xbd, 0x5, 0xa2, 0x8a, 0x2a, 0x8b, 0xa, - 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa2, 0x80, 0x12, 0x91, 0xcf, - 0xca, 0x68, 0x6a, 0x8a, 0xe6, 0x41, 0x14, 0x2c, 0xc4, 0xe0, - 0xa, 0x96, 0xec, 0xae, 0x4c, 0x9d, 0x93, 0x67, 0x94, 0x7c, - 0x4f, 0x91, 0x50, 0x6c, 0x1d, 0x4d, 0x79, 0xb8, 0x18, 0x15, - 0xd7, 0x7c, 0x44, 0xd4, 0x45, 0xce, 0xa4, 0x10, 0x36, 0x40, - 0xf4, 0xae, 0x46, 0xbf, 0x15, 0xcd, 0xaa, 0xaa, 0x98, 0xb9, - 0xb5, 0xd0, 0xfe, 0x79, 0xcf, 0x2b, 0x2a, 0xd8, 0xf9, 0xc9, - 0x74, 0xa, 0x28, 0xa2, 0xbc, 0x83, 0xc1, 0xa, 0x6b, 0x9e, - 0xd, 0x3a, 0xa2, 0x95, 0xbe, 0x53, 0x52, 0xc9, 0x64, 0x7, - 0xe6, 0x92, 0xbd, 0x2f, 0xc1, 0x36, 0xde, 0x55, 0xa6, 0xea, - 0xf3, 0xab, 0x28, 0xbc, 0xe9, 0xd1, 0x71, 0x9c, 0x9c, 0x57, - 0xad, 0x68, 0x56, 0xff, 00, 0x67, 0xd3, 0x93, 0x8c, 0x12, - 0x5, 0x7d, 0xa7, 0xd, 0x50, 0x73, 0xac, 0xe6, 0xfa, 0x1f, - 0xa1, 0xf0, 0x8e, 0x1b, 0x9f, 0x10, 0xea, 0x76, 0x44, 0xb7, - 0xb2, 0x61, 0xd, 0x72, 0xfa, 0x8b, 0xf5, 0xae, 0x87, 0x51, - 0x93, 00, 0xd7, 0x2d, 0xa8, 0xc9, 0xd6, 0xbf, 0x51, 0x3f, - 0x65, 0x39, 0xed, 0x4e, 0x4c, 0x2b, 0x57, 0x3, 0xac, 0xcb, - 0xf3, 0x35, 0x76, 0x9a, 0xac, 0x98, 0x6, 0xbc, 0xff, 00, - 0x59, 0x9b, 0x97, 0x3f, 0x5a, 00, 0xf2, 0xbf, 0x89, 0x17, - 0xbb, 0x63, 0x75, 0x4, 0x70, 0xd, 0x7c, 0xb9, 0xe3, 0xdb, - 0xbf, 0x32, 0xe1, 0x96, 0xbe, 0x81, 0xf8, 0x99, 0xa8, 0xd, - 0xf3, 0x60, 0x8e, 0x33, 0xfd, 0x6b, 0xe6, 0x5f, 0x16, 0xdd, - 0x79, 0xd7, 0x6f, 0xce, 0x79, 0xaf, 0x8e, 0xcd, 0x2a, 0x5e, - 0x56, 0x3e, 0x3, 0x3a, 0xab, 0xcd, 0x3b, 0x1c, 0x6e, 0xa6, - 0xfd, 0x45, 0x72, 0xb7, 0xef, 0x97, 0x35, 0xd0, 0xea, 0x6f, - 0xcb, 0x73, 0x5c, 0xc5, 0xe3, 0xe5, 0x8d, 0x73, 0xe1, 0x63, - 0x63, 0x9b, 0x7, 0x1b, 0x23, 0x3a, 0xe1, 0xb8, 0x22, 0xbe, - 0xf7, 0xff, 00, 0x82, 0x7c, 0xf8, 0x33, 0xc8, 0xf0, 0xdc, - 0x57, 0x92, 0x67, 0x7d, 0xde, 0xa0, 0xd7, 0x4a, 0x3b, 0x6c, - 0x55, 0x8f, 0x3, 0xa7, 0xa8, 0x35, 0xf0, 0x2d, 0xc1, 0xc8, - 0x6f, 0xf0, 0xaf, 0xd6, 0x2f, 0xd8, 0xe3, 0xc2, 0xe9, 0xa1, - 0xf8, 0x1b, 0x48, 0x45, 0x89, 0x93, 0xca, 0xb1, 0x46, 0xdc, - 0x47, 0x52, 0xfc, 0x9f, 0x7e, 0x84, 0x57, 0xd3, 0x61, 0x23, - 0xad, 0xcf, 0xb0, 0xc0, 0xc7, 0x5b, 0x9f, 0x4b, 0x41, 0xd6, - 0xb4, 0x61, 0xe0, 0xa, 0xa1, 0x8, 0xe2, 0xb4, 0x20, 0x1d, - 0x2b, 0xd3, 0x3d, 0x82, 0xf4, 0x39, 0xe2, 0xb4, 0x21, 0x1d, - 0x2a, 0x8c, 0x23, 0x9a, 0xbd, 0xf, 0x41, 0x40, 0x17, 0xed, - 0xc6, 00, 0xab, 0xd1, 0x72, 0x2a, 0x9c, 0x1c, 0xe3, 0xda, - 0xae, 0xc5, 0xd2, 0x80, 0x2c, 0xc6, 0x2a, 0xcc, 0x62, 0xab, - 0xc7, 0x56, 0x63, 0xa0, 0x9, 0x93, 0xa5, 0x4a, 0x3a, 0xd4, - 0x4b, 0x52, 0x29, 0xa0, 0x9, 0x7, 0x4a, 0x90, 0x54, 0x6a, - 0x6a, 0x40, 0x73, 0x40, 0x5, 0x39, 0x69, 0xb4, 0xe1, 0xd2, - 0x80, 0x16, 0x8a, 0x28, 0xa0, 0xa, 0x6d, 0x51, 0xb1, 0xa7, - 0xb5, 0x46, 0xc7, 0xad, 00, 0x43, 0x21, 0xcd, 0x55, 0x90, - 0xd5, 0x89, 0x3a, 0x55, 0x69, 0x28, 0x2, 0xb4, 0xc7, 0xa8, - 0xaf, 0x86, 0xbe, 0x26, 0x5f, 0xb7, 0xc4, 0x8f, 0xda, 0x99, - 0xac, 0xe, 0xc, 0x3a, 0x57, 0xfa, 0x16, 0xd0, 0x31, 0xca, - 0x33, 0x12, 0x7f, 0xf1, 0xe1, 0xf9, 0x57, 0xda, 0x9e, 0x23, - 0xd5, 0x23, 0xd1, 0x34, 0x3d, 0x4b, 0x51, 0x98, 0x81, 0x15, - 0xa5, 0xbc, 0x97, 0xf, 0x93, 0x81, 0xb5, 0x10, 0xb1, 0xe7, - 0xb7, 0x2, 0xbe, 0x18, 0xfd, 0x99, 0xe1, 0x93, 0xc5, 0x1f, - 0x1a, 0xf5, 0x5d, 0x5a, 0x45, 0x2c, 0x24, 0x13, 0xcc, 0x4f, - 0x1d, 0x4b, 0xae, 0x3f, 0x4a, 0xf9, 0x5c, 0xee, 0x5e, 0xd2, - 0x74, 0x30, 0xbf, 0xcd, 0x25, 0xf7, 0x23, 0xe2, 0xb8, 0x8a, - 0x7e, 0xd6, 0x78, 0x6c, 0x1a, 0xfb, 0x73, 0x57, 0xf4, 0x47, - 0xdc, 0xfe, 0x10, 0xb0, 0x16, 0xb6, 0x70, 0xa0, 0x18, 0xa, - 0xa0, 0xa, 0xed, 0x6d, 0x97, 0xb, 0x9a, 0xc1, 0xd1, 0x20, - 0xf2, 0xe2, 0x5a, 0xe8, 0xa3, 0x1b, 0x50, 0x57, 0xd4, 0xc5, - 0x72, 0xab, 0x1f, 0x67, 0x15, 0xcb, 0x14, 0x90, 0xfa, 0x28, - 0xa2, 0x99, 0x41, 0x4d, 0x77, 0x8, 0xa5, 0x8f, 0x41, 0x4e, - 0xaa, 0x1a, 0xd5, 0xc8, 0xb6, 0xd3, 0xe5, 0x62, 0x40, 0xe3, - 0xbd, 00, 0x7c, 0x79, 0xfb, 0x71, 0xfe, 0xd1, 0xd7, 0xbf, - 0xb, 0xbc, 0x32, 0xc9, 0xa7, 0xbe, 0xdb, 0x89, 0xe, 0x7, - 00, 0xe3, 0x91, 0xea, 0x3d, 0xeb, 0xf2, 0xff, 00, 0xc7, - 0xff, 00, 0xb4, 0x7e, 0xb9, 0xe3, 0x3b, 0x19, 0x7e, 0xdd, - 0x3e, 0xe7, 0x71, 0x83, 0x85, 0x51, 0xfc, 0x85, 0x7a, 0xdf, - 0xfc, 0x14, 0xd3, 0xe2, 0x7, 0xf6, 0xaf, 0x8b, 0x62, 0xd2, - 0xe0, 0xb9, 0xc, 0x91, 0xb1, 0xdc, 0x88, 0xd9, 0xc7, 0xb, - 0xd6, 0xbe, 0x11, 0x33, 0xc8, 0x46, 0xb, 0x93, 0xf8, 0xd0, - 0x5, 0xad, 0x56, 0xec, 0xdd, 0x5c, 0x33, 0x12, 0x4e, 0x49, - 0x3c, 0xd2, 0xe9, 0x7a, 0x9b, 0xe9, 0xd3, 0xa4, 0x8b, 0xce, - 0xd3, 0x9a, 0xa2, 0x4e, 0x68, 0xa0, 0xf, 0x78, 0xf0, 0x47, - 0xed, 0x4f, 0xab, 0xf8, 0x31, 0x63, 0x58, 0x22, 0x24, 0x2f, - 0x71, 0xb7, 0xfa, 0x8a, 0xf4, 0xfb, 0x3f, 0xf8, 0x28, 0x66, - 0xbf, 00, 0x50, 0x62, 0x90, 0x1, 0xfe, 0xcc, 0x67, 0xfa, - 0x57, 0xc7, 0x14, 0x50, 0x7, 0xdb, 0xf6, 0xbf, 0xf0, 0x51, - 0x7d, 0x65, 0x71, 0xba, 0x37, 0xce, 0x39, 0xca, 0x47, 0x5b, - 0xba, 0x6f, 0xfc, 0x14, 0x6b, 0x51, 0x92, 0x78, 0xd0, 0xc6, - 0x72, 0xce, 0x14, 0x60, 0x47, 0xdf, 0xf0, 0xaf, 0x80, 0xeb, - 0x7b, 0xc1, 0x5a, 0x6b, 0x6a, 0x7a, 0xfd, 0xac, 0x61, 0x4b, - 00, 0xeb, 0x9c, 0xc, 0xf7, 0xa0, 0xf, 0xdb, 0xaf, 0xd9, - 0x33, 0xf6, 0x84, 0xbc, 0xf8, 0xa9, 0xa8, 0xc1, 0x13, 0x2, - 0xab, 0x81, 0xd5, 0x57, 0x24, 0xe0, 0x74, 0xc5, 0x7d, 0xa1, - 0x5f, 0xf, 0xff, 00, 0xc1, 0x3b, 0xbc, 0x4, 0xda, 0x66, - 0x85, 0x26, 0xa4, 0xf1, 0x6c, 0xc2, 0x85, 0xcb, 0x2e, 0x9, - 0xc8, 0x1c, 0x75, 0xaf, 0xb7, 0xf3, 0x40, 0x15, 0x75, 0x39, - 0xbc, 0x9b, 0x66, 0x3e, 0xd5, 0xe0, 0x9e, 0x37, 0xbd, 0x37, - 0x3a, 0x99, 0x4e, 0xc0, 0xd7, 0xb4, 0xf8, 0xae, 0xe8, 0x5b, - 0xd8, 0xe7, 0x38, 0xeb, 0x5f, 0x3f, 0xea, 0x93, 0x7d, 0xa7, - 0x50, 0x95, 0xfb, 0x67, 0x15, 0xf9, 0xff, 00, 0x13, 0xd7, - 0xd2, 0x34, 0x91, 0xf9, 0x77, 0x19, 0x62, 0x6d, 0x18, 0xd1, - 0x4f, 0x72, 0xb7, 0x4a, 0x28, 0xa2, 0xbf, 0x3c, 0x3f, 0x2a, - 0x5a, 0x5, 0x14, 0x51, 0x4c, 0x60, 0x6, 0xe6, 0x51, 0xea, - 0x6b, 0xd9, 0xfe, 0x1d, 0x69, 0xe2, 0x1b, 0x38, 0xcf, 0x4c, - 0x81, 0x5e, 0x43, 0xa6, 0x40, 0x6e, 0x2f, 0xe1, 0x40, 0x33, - 0xf3, 0xa, 0xf7, 0xef, 0xb, 0x5a, 0x7d, 0x9a, 0xc5, 0x32, - 0x3b, 0x57, 0xd8, 0xf0, 0xd5, 0xe, 0x7a, 0xce, 0xa3, 0x5b, - 0x1f, 0x7d, 0xc2, 0x18, 0x6f, 0x69, 0x89, 0x95, 0x56, 0xb6, - 0x37, 0xa9, 0x68, 0xa2, 0xbf, 0x51, 0x3f, 0x67, 0xa, 0x28, - 0xa2, 0x80, 0x13, 0x38, 0xaf, 0x3d, 0xf8, 0x99, 0x1f, 0x97, - 0x66, 0xc4, 0x75, 0x22, 0xbd, 0xa, 0xbc, 0xff, 00, 0xe2, - 0x4b, 0x6f, 0x8b, 0x1d, 0x80, 0xaf, 0x1b, 0x37, 0xff, 00, - 0x73, 0x99, 0xf3, 0xf9, 0xed, 0xbe, 0xa3, 0x33, 0xc6, 0xb1, - 0xb7, 0x8a, 0x28, 0x63, 0xba, 0x46, 0x34, 0x57, 0xe2, 0xa7, - 0xf3, 0xd0, 0x51, 0x45, 0x14, 00, 0x56, 0xb7, 0x86, 0x5b, - 0x65, 0xee, 0xec, 0xf7, 0xac, 0x9a, 0xd1, 0xd0, 0x1b, 0xfe, - 0x26, 0x8, 0x3d, 0xeb, 0xa3, 0xe, 0xed, 0x56, 0x3e, 0xa7, - 0x4e, 0x15, 0xdb, 0x11, 0xf, 0x53, 0xe8, 0x4d, 0x10, 0x11, - 0x61, 0x1e, 0x7a, 0x9a, 0xd0, 0x15, 0x9d, 0xa2, 0x4a, 0x24, - 0xb2, 0x40, 0x3b, 0xa, 0xd1, 0x15, 0xfb, 0xa5, 0x1f, 0xe1, - 0xc7, 0xd0, 0xfe, 0x94, 0xc3, 0xdb, 0xd9, 0x46, 0xdd, 0x85, - 0xa2, 0x8a, 0x2b, 0x73, 0xa0, 0x28, 0xa2, 0x8a, 00, 0x29, - 0xd, 0x2d, 0x23, 0x1c, 0x50, 0x7, 0x23, 0xf1, 0x6, 0xf3, - 0xc8, 0xd1, 0xae, 0x31, 0xfd, 0xc3, 0x5e, 0x10, 0xe, 0x72, - 0x7d, 0x6b, 0xd6, 0x3e, 0x29, 0x5f, 0x3, 0x66, 0xd1, 0x67, - 0xaf, 0x1d, 0x6b, 0xc9, 0xc7, 0x4a, 0xfc, 0x9b, 0x88, 0xaa, - 0xfb, 0x4c, 0x5d, 0x97, 0x44, 0x7e, 0x1d, 0xc5, 0x95, 0xfd, - 0xae, 0x3b, 0x95, 0x6c, 0x90, 0x51, 0x45, 0x15, 0xf2, 0xa7, - 0xc5, 0x85, 0x14, 0x50, 0x4e, 0x5, 00, 0x6a, 0xf8, 0x5a, - 0xdf, 0xed, 0x1a, 0xa0, 0x1d, 0x85, 0x7b, 0xf6, 0x83, 00, - 0xb7, 0xb3, 0x5f, 0x7a, 0xf1, 0x5f, 0x87, 0x96, 0xa6, 0x7d, - 0x45, 0x9f, 0x15, 0xee, 0xd6, 0xd1, 0xec, 0x85, 0x16, 0xbf, - 0x49, 0xe1, 0x8a, 0x36, 0xa4, 0xea, 0x33, 0xf5, 0xce, 0xe, - 0xa1, 0x6a, 0xe, 0xab, 0x5b, 0x93, 0xa, 0x5a, 0x28, 0xaf, - 0xba, 0x3f, 0x49, 0xa, 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa2, - 0x80, 0x10, 0x9a, 0x8e, 0x65, 0xcc, 0x6e, 0x2a, 0x5a, 0x42, - 0x33, 0x49, 0xab, 0x89, 0xab, 0xab, 0x1e, 0x21, 0xf1, 0x3, - 0x4d, 0xfb, 0x3c, 0xed, 0x21, 0xea, 0x4f, 0xf8, 0x57, 0x12, - 0x3a, 0x57, 0xb2, 0xfc, 0x41, 0xd2, 0xc, 0xf1, 0x3c, 0x9b, - 0x49, 0xc7, 0xa0, 0xaf, 0x1c, 0x95, 0x1a, 0x39, 0x59, 0x58, - 0x15, 0xe7, 0xbd, 0x7e, 0x39, 0x9d, 0x61, 0x9d, 0xc, 0x53, - 0x76, 0xd1, 0x9f, 0x81, 0x71, 0x16, 0x11, 0xe1, 0xb1, 0x8d, - 0xa5, 0xa3, 0x1b, 0x45, 0x14, 0x57, 0x80, 0x7c, 0xc0, 0x51, - 0x45, 0x14, 00, 0x11, 0x91, 0x57, 0x74, 0xcd, 0x56, 0x4d, - 0x3a, 0x40, 0x53, 0x39, 0xaa, 0x54, 0x1c, 0xf6, 0xaa, 0x8c, - 0xa5, 0x7, 0xcd, 0x1d, 0xca, 0x84, 0xe5, 0x4e, 0x4a, 0x71, - 0x76, 0x67, 0xa6, 0x68, 0x7e, 0x3b, 0x98, 0x5, 0x56, 0xe9, - 0xf8, 0x57, 0x6b, 0x61, 0xe2, 0x84, 0x99, 0x6, 0xe2, 0x2b, - 0xe7, 0xf4, 0x9e, 0x58, 0xcf, 0xca, 0xd8, 0xab, 0x90, 0xeb, - 0x17, 0x51, 0x74, 0x90, 0xd7, 0xd5, 0x61, 0x33, 0xfa, 0xb4, - 0x15, 0xa7, 0xa9, 0xf6, 0xb8, 0x1e, 0x27, 0xad, 0x87, 0x4a, - 0x35, 0x2e, 0xcf, 0xa0, 0x8f, 0x88, 0x22, 0x3, 0x39, 0x15, - 0x95, 0xa8, 0xf8, 0xd1, 0x2d, 0x41, 0xc7, 0x35, 0xe2, 0xe7, - 0xc4, 0x37, 0x78, 0xc6, 0xf3, 0xf9, 0xd5, 0x79, 0x75, 0x7b, - 0x89, 0x78, 0x66, 0x26, 0xbb, 0xaa, 0xf1, 0x34, 0xa5, 0x1b, - 0x41, 0x58, 0xf4, 0xab, 0x71, 0x84, 0xa5, 0x1b, 0x53, 0x56, - 0x67, 0xa1, 0x6b, 0x3f, 0x13, 0xb, 0xa3, 0x22, 0x8a, 0xf3, - 0xed, 0x43, 0x51, 0x92, 0xfe, 0x79, 0x1c, 0xb1, 0xf9, 0x89, - 0x35, 0x55, 0xd8, 0xbf, 0x5a, 0x4a, 0xf9, 0x7c, 0x5e, 0x3e, - 0xbe, 0x35, 0xfe, 0xf1, 0xe8, 0x7c, 0x66, 0x37, 0x34, 0xc4, - 0xe6, 0xf, 0xf7, 0xd2, 0xd0, 0x3a, 0x8a, 0x28, 0xa2, 0xbc, - 0xe3, 0xc8, 0xa, 0x28, 0xa2, 0x90, 0xc2, 0x8e, 0xe2, 0x8a, - 0xd1, 0xd1, 0x74, 0x79, 0x75, 0x2b, 0xc8, 0x80, 0x46, 0x2b, - 0x9e, 0xc2, 0xb4, 0x85, 0x39, 0x54, 0x92, 0x8c, 0x16, 0xac, - 0xd2, 0x9d, 0x39, 0xd6, 0x9a, 0x84, 0x15, 0xdb, 0x35, 0xfc, - 0x19, 0xe1, 0xc9, 0x2f, 0xf5, 0x4, 0x66, 0xfb, 0xb9, 0xe9, - 0x5e, 0xe1, 0xa6, 0x69, 0xe9, 0x63, 00, 0x55, 0x18, 0x26, - 0xb2, 0xfc, 0x2f, 0xa0, 0x8d, 0x36, 0xd9, 0x9, 0x18, 0x6c, - 0x57, 0x45, 0x5f, 0xae, 0xe4, 0xf9, 0x74, 0x70, 0x54, 0x53, - 0x6b, 0xde, 0x67, 0xee, 0xf9, 0xe, 0x53, 0x1c, 0xba, 0x82, - 0x72, 0x5e, 0xf3, 0x12, 0x96, 0x8a, 0x2b, 0xe8, 0x8f, 0xaa, - 0x23, 0x99, 0xc2, 0x46, 0xcd, 0xe8, 0x2b, 0xc5, 0xfc, 0x69, - 0xaf, 0xb4, 0x5a, 0x84, 0x84, 0x13, 0xc1, 0xc7, 0x15, 0xeb, - 0x5a, 0xed, 0xc8, 0xb5, 0xd3, 0x65, 0x62, 0x71, 0xc6, 0x2b, - 0xe7, 0xdf, 0x10, 0xdc, 0x7d, 0xa6, 0xed, 0xcf, 0xa9, 0xaf, - 0x89, 0xe2, 0x4c, 0x4b, 0xa5, 0x4e, 0x30, 0x8b, 0xd4, 0xfc, - 0xef, 0x8b, 0xb1, 0x92, 0xa3, 0x4a, 0x34, 0xa0, 0xf5, 0x3a, - 0xaf, 0xd, 0xf8, 0xe9, 0xad, 0xf0, 0xa7, 0x35, 0xe8, 0x3a, - 0x5f, 0x8b, 0x96, 0xf4, 0xa8, 0x3c, 0x66, 0xbc, 0xa, 0x39, - 0x1a, 0x1e, 0x54, 0x56, 0x95, 0x97, 0x88, 0x2e, 0x2d, 0x9c, - 0x63, 0x38, 0xfa, 0xd7, 0xcd, 0xe0, 0x33, 0xca, 0xb8, 0x7b, - 0x42, 0xa3, 0xd0, 0xf9, 0xc, 0xb3, 0x89, 0x2b, 0x61, 0x52, - 0x85, 0x57, 0x74, 0x7d, 0x1f, 0x14, 0xeb, 0x2a, 0x82, 0xd, - 0x49, 0x9a, 0xf1, 0x3b, 0xf, 0x1d, 0xce, 0x98, 0x5, 0x88, - 0xfc, 0x6b, 0xa3, 0xd3, 0xbc, 0x71, 0xe6, 0x63, 0x7c, 0x98, - 0xfc, 0x7f, 0xfa, 0xd5, 0xf6, 0xd4, 0x33, 0xcc, 0x35, 0x5d, - 0xf, 0xd1, 0xb0, 0xdc, 0x49, 0x84, 0xaf, 0x65, 0x7b, 0x1e, - 0x95, 0x45, 0x73, 0x36, 0x9e, 0x29, 0xb7, 0x92, 0x30, 0x4c, - 0xc9, 0x9f, 0xf7, 0xaa, 0xf2, 0x6b, 0xf6, 0xcc, 0x38, 0x99, - 0xf, 0xfc, 0xa, 0xbd, 0x98, 0xe2, 0xa9, 0x4d, 0x69, 0x23, - 0xdf, 0x86, 0x36, 0x84, 0xd5, 0xd4, 0x91, 0xb1, 0x45, 0x64, - 0x1d, 0x7a, 0xd8, 0x7f, 0xcb, 0x64, 0xff, 00, 0xbe, 0x85, - 0x52, 0xbb, 0xf1, 0x75, 0xbd, 0xbe, 0x70, 0xea, 0x7f, 0x1a, - 0x25, 0x8a, 0xa3, 0x5, 0x79, 0x48, 0x27, 0x8d, 0xc3, 0xd3, - 0x57, 0x94, 0x91, 0xd1, 0x31, 00, 0x64, 0xf4, 0xae, 0x5b, - 0xc6, 0x5a, 0xfc, 0x76, 0x3a, 0x74, 0x8a, 0xa7, 0xe6, 0x35, - 0x8d, 0xa9, 0xfc, 0x46, 0x8d, 0x23, 0x65, 0x52, 0x7, 0x1e, - 0xbf, 0xfd, 0x6a, 0xf3, 0x7f, 0x10, 0x6b, 0xcf, 0xab, 0x31, - 0xc3, 0x1c, 0x66, 0xbe, 0x6b, 0x33, 0xce, 0xe9, 0x53, 0xa4, - 0xe1, 0x45, 0xdd, 0xb3, 0xe4, 0x33, 0x8e, 0x22, 0xa1, 0x4a, - 0x8c, 0xa1, 0x41, 0xde, 0x4c, 0xce, 0xd5, 0x6e, 0xda, 0xf2, - 0xf1, 0xa4, 0x27, 0x35, 0x5a, 0x8a, 0x2b, 0xf2, 0xc9, 0x49, - 0xce, 0x4e, 0x4f, 0xa9, 0xf8, 0xbc, 0xe4, 0xe7, 0x27, 0x27, - 0xbb, 0xa, 0x28, 0xa2, 0xa4, 0x80, 0x35, 0x5e, 0xe0, 0xe1, - 0x45, 0x4e, 0xdd, 0x2a, 0x6, 0x43, 0x3c, 0xa8, 0x8a, 0x9, - 0xc9, 0xed, 0x45, 0xae, 0xec, 0x81, 0x27, 0x26, 0x92, 0x35, - 0x7c, 0x39, 0x65, 0xe7, 0x5c, 0xc4, 0x7d, 0xeb, 0xd5, 0x51, - 0x4, 0x36, 0xb1, 0xaf, 0xfb, 0x22, 0xb9, 0x8f, 0xc, 0x68, - 0x86, 0x2f, 0x2d, 0xd9, 0x8, 0xfa, 0x8a, 0xea, 0x6e, 0xdb, - 0x6a, 0xfd, 0x2b, 0xf5, 0xbc, 0x83, 0xa, 0xe8, 0x51, 0xe6, - 0x6b, 0x73, 0xf7, 0x3e, 0x18, 0xc1, 0x3c, 0x36, 0x1f, 0x9e, - 0x4b, 0x56, 0x62, 0xea, 0x52, 0x75, 0xae, 0x57, 0x50, 0x7e, - 0xb5, 0xbf, 0xa9, 0x49, 0x92, 0xd5, 0xcc, 0x6a, 0x32, 0x75, - 0xaf, 0xaa, 0x3e, 0xd4, 0xe6, 0xb5, 0x89, 0x70, 0xad, 0x5e, - 0x79, 0xaf, 0x4f, 0xb2, 0x39, 0xf, 0xb1, 0xae, 0xdf, 0x5a, - 0x9b, 0x86, 0xc1, 0xaf, 0x33, 0xf1, 0x6d, 0xd0, 0x8a, 0xce, - 0x62, 0x4e, 0x38, 0xa9, 0x93, 0xb2, 0x6c, 0x99, 0xbe, 0x58, - 0xb6, 0x78, 0x47, 0xc4, 0xad, 0x43, 0x26, 0x73, 0xdf, 0x27, - 0xfa, 0xd7, 0xce, 0xda, 0xf4, 0xe5, 0xee, 0x24, 0x3e, 0xf5, - 0xec, 0xbf, 0x12, 0x2f, 0xfe, 0x69, 0x7e, 0x6e, 0xe7, 0xbf, - 0xb9, 0xaf, 0xc, 0xd5, 0x25, 0xc9, 0x73, 0xef, 0x5f, 0x5, - 0x8c, 0x97, 0x3d, 0x53, 0xf3, 0x2c, 0x7c, 0xfd, 0xa5, 0x6b, - 0x1c, 0xe6, 0xa7, 0x27, 0x7, 0x9e, 0xf5, 0xcd, 0xdc, 0xb7, - 0x26, 0xb6, 0xb5, 0x39, 0x39, 0x35, 0x83, 0x70, 0x7a, 0xd7, - 0x76, 0x1d, 0x68, 0x8f, 0x4b, 0xb, 0x1b, 0x45, 0x1a, 0x1e, - 0xa, 0xd2, 0xce, 0xbb, 0xe3, 0x5d, 0xa, 0xc0, 0x2e, 0xe1, - 0x71, 0x7d, 0xc, 0x6c, 0x3f, 0xd9, 0x32, 0xc, 0xfe, 0x99, - 0xaf, 0xd9, 0x4f, 0x82, 0x3a, 0x3a, 0xe9, 0x5e, 0x14, 0x50, - 0x31, 0x80, 0xc2, 0x35, 0x3f, 0xec, 0xaa, 0x28, 0x15, 0xf9, - 0x39, 0xfb, 0x35, 0xdb, 0x47, 0x79, 0xf1, 0xaf, 0xc3, 0xd1, - 0xc8, 0x3, 00, 0xee, 0xc0, 0x11, 0x9e, 0x42, 0x12, 0x3f, - 0x5a, 0xfd, 0x8a, 0xf0, 0x45, 0x81, 0xb0, 0xf0, 0xd5, 0x84, - 0x4c, 0xe, 0xed, 0x81, 0x8e, 0x47, 0xaf, 0x3f, 0xd6, 0xbe, - 0x97, 0xc, 0xbd, 0xdb, 0x9f, 0x5d, 0x83, 0x56, 0x8d, 0xce, - 0xa2, 0x11, 0x5a, 0x36, 0xe3, 0xa5, 0x50, 0xb7, 0x18, 0xab, - 0xf0, 0xe, 0x5, 0x76, 0x1d, 0xe5, 0xf8, 0x57, 0xa5, 0x5e, - 0x84, 0x74, 0xaa, 0x56, 0xea, 0x2b, 0x42, 0x11, 0xc8, 0x34, - 0x1, 0x76, 0xdc, 0x75, 0xab, 0xb1, 0x8e, 0x95, 0x4e, 0xe, - 0xb5, 0x7a, 0x31, 0x40, 0x13, 0xc6, 0x2a, 0xca, 0x54, 0x9, - 0x56, 0x13, 0xb5, 00, 0x48, 0xbd, 0x69, 0xeb, 0xd2, 0x98, - 0xb5, 0x20, 0x14, 00, 0xf5, 0xed, 0x52, 0x2d, 0x31, 0x69, - 0xe3, 0xa5, 00, 0x2d, 0x28, 0xeb, 0x49, 0x4a, 0xb4, 00, - 0xea, 0x28, 0xa2, 0x80, 0x28, 0xb7, 0x7a, 0x89, 0xcd, 0x48, - 0xd5, 0x14, 0x87, 0x14, 0x1, 0x4, 0x86, 0xab, 0x48, 0x6a, - 0x79, 0xd, 0x56, 0x94, 0xf1, 0x40, 0x1e, 0x17, 0xfb, 0x5f, - 0x78, 0x95, 0x74, 0x1f, 0x83, 0x7a, 0x9c, 0x23, 0x6, 0x6d, - 0x41, 0x85, 0xa2, 0xa9, 0xf4, 0x6e, 0x18, 0xfe, 00, 0x9a, - 0xf3, 0x4f, 0xd8, 0xb3, 0xc3, 0x86, 0x1b, 0x7b, 0xbd, 0x41, - 0xb2, 0x37, 0x8d, 0x83, 0x8e, 0xdc, 0x1f, 0xf0, 0xaa, 0x3f, - 0xb7, 0x47, 0x8a, 0x85, 0xe6, 0xb7, 0xe1, 0xbf, 0xb, 0x45, - 0x20, 0x63, 0x1e, 0x2f, 0xa4, 0x54, 0xed, 0x92, 0xc9, 0x83, - 0xcf, 0xa0, 0x7, 0x4, 0x57, 0xb2, 0xfe, 0xcd, 0x3e, 0x18, - 0x3a, 0x17, 0x83, 0x2c, 0x51, 0x94, 0x2b, 0x48, 0x81, 0xcf, - 0xe2, 0x7, 0xb5, 0x7c, 0x63, 0xff, 00, 0x6b, 0xce, 0xfc, - 0xa9, 0xaf, 0xc4, 0xfc, 0xfd, 0xff, 00, 0xb7, 0x71, 0x12, - 0xb6, 0xd4, 0xa3, 0xf8, 0xb3, 0xde, 0x34, 0xe8, 0xf0, 0x8a, - 0x2b, 0x54, 0x71, 0x54, 0xec, 0x93, 00, 0x54, 0x97, 0xf7, - 0xd1, 0x69, 0xf6, 0xcf, 0x3c, 0xcc, 0x11, 0x14, 0x75, 0x35, - 0xf6, 0x67, 0xe8, 0x5, 0x9a, 0x2b, 0xe7, 0x3f, 0x88, 0x1f, - 0xb5, 0xbe, 0x8f, 0xe1, 0x3d, 0x51, 0xac, 0xa3, 0x96, 0x22, - 0xe3, 0x83, 0x9c, 0x13, 0xff, 00, 0xa1, 0x56, 0x57, 0x87, - 0xff, 00, 0x6b, 0xeb, 0x3d, 0x72, 0xf6, 0x38, 0x11, 0xe3, - 0xcb, 0x7a, 0x2f, 0xff, 00, 0x65, 0x40, 0x1f, 0x50, 0xd7, - 0xb, 0xf1, 0x63, 0x56, 0xfe, 0xcc, 0xf0, 0xdd, 0xc4, 0x80, - 0x67, 0x6a, 0x13, 0x8c, 0xf5, 0xad, 0xdf, 0x8, 0x78, 0x83, - 0xfe, 0x12, 0x3d, 0x29, 0x2e, 0xf1, 0x80, 0xc0, 0x63, 0x1d, - 0xeb, 0x37, 0xe2, 0x3f, 0x83, 0x9f, 0xc6, 0x1a, 0xd, 0xc5, - 0x94, 0x6d, 0xb5, 0xa5, 0x5d, 0xbd, 0x71, 0x40, 0x1f, 0xcf, - 0xc7, 0xed, 0x2a, 0x6f, 0xfc, 0x63, 0xf1, 0x43, 0x53, 0xba, - 0xc6, 0x55, 0x5f, 0x3, 0x6a, 0x92, 0x31, 0x81, 0xfe, 0x15, - 0xe4, 0xaf, 0xe1, 0x6b, 0xd5, 0xfe, 0x6, 0x3f, 0xf0, 0x3, - 0x5f, 0xb0, 0x3a, 0xff, 00, 0xfc, 0x13, 0x7e, 0xe3, 0x53, - 0xbd, 0xb8, 0xb9, 0x3b, 0x59, 0xe4, 0x62, 0xc4, 0x99, 0x87, - 0xff, 00, 0x1b, 0xae, 0x6e, 0xef, 0xfe, 0x9, 0xa1, 0xa8, - 0x63, 0xe5, 0x88, 0x9f, 0xf7, 0x66, 0xff, 00, 0xed, 0x74, - 0x1, 0xf9, 0x3c, 0x7c, 0x39, 0x7a, 0x3f, 0xe5, 0x93, 0x7f, - 0xdf, 0x27, 0xfc, 0x2a, 0x36, 0xd0, 0xaf, 0x17, 0xfe, 0x58, - 0xb1, 0xfa, 0x29, 0xff, 00, 0xa, 0xfd, 0x4b, 0xbb, 0xff, - 00, 0x82, 0x6b, 0xeb, 0x28, 0x4e, 0xcb, 0x79, 0x4f, 0x5e, - 0xac, 0x7f, 0xf8, 0xdd, 0x63, 0x5d, 0x7f, 0xc1, 0x38, 0xbc, - 0x44, 0x84, 0xe2, 0xd5, 0xff, 00, 0x33, 0xff, 00, 0xc6, - 0xe8, 0x3, 0xf3, 0x21, 0xb4, 0x9b, 0xa5, 0x1c, 0xc2, 0xff, - 00, 0xf7, 0xc9, 0xff, 00, 0xa, 0x61, 0xb0, 0xb8, 0x1f, - 0xf2, 0xc6, 0x4f, 0xfb, 0xe4, 0xd7, 0xe8, 0xf5, 0xdf, 0xfc, - 0x13, 0xc7, 0xc4, 0xd1, 0xe7, 0x16, 0x6e, 0x7f, 0x3, 0xff, - 00, 0xc6, 0xeb, 0x9f, 0xbb, 0xfd, 0x81, 0xbc, 0x57, 0x11, - 0x20, 0x59, 0x3, 0xed, 0xf3, 0x7f, 0xf1, 0xba, 00, 0xfc, - 0xfe, 0xfb, 0x24, 0xff, 00, 0xf3, 0xc6, 0x41, 0xff, 00, - 00, 0x35, 0xea, 0xff, 00, 00, 0x7c, 0x3b, 0x2e, 0xa1, - 0xe2, 0x8b, 0x72, 0x62, 0x93, 0x99, 0x55, 0x47, 0xc8, 0x7d, - 0x45, 0x7d, 0x25, 0x75, 0xfb, 0xb, 0xf8, 0xba, 0x1d, 0xdf, - 0xf1, 0x2f, 0x7, 0x3, 0xb6, 0xe3, 0xff, 00, 0xb4, 0xeb, - 0xd8, 0xff, 00, 0x67, 0x5f, 0xd8, 0xfb, 0x5b, 0xd0, 0xb5, - 0xcb, 0x19, 0x6f, 0xac, 0x95, 0x15, 0x66, 0x56, 0x62, 0x41, - 0xe3, 0x91, 0xea, 0x94, 0x1, 0xf7, 0xcf, 0xec, 0xc3, 0xe1, - 0xaf, 0xf8, 0x47, 0x3e, 0x17, 0xd8, 0xa1, 0x52, 0x8d, 0x20, - 0xc, 0x41, 0x18, 0x3f, 0x74, 0x75, 0xaf, 0x5c, 0x3d, 0x45, - 0x66, 0xf8, 0x6b, 0x49, 0x4d, 0x17, 0x43, 0xb3, 0xb3, 0x55, - 0xb, 0xe5, 0x46, 0x14, 0xe3, 0xe9, 0x5a, 0x67, 0xa6, 0x28, - 0x3, 0x84, 0xf8, 0x97, 0x7e, 0x20, 0xb0, 0xc7, 0xb1, 0xeb, - 0xf8, 0x57, 0x89, 0xac, 0x9b, 0x89, 0x27, 0xa9, 0x35, 0xeb, - 0xff, 00, 0x12, 0x6c, 0x26, 0xbe, 0x8d, 0x11, 0x10, 0xb7, - 0x27, 0xa7, 0xe1, 0x5e, 0x7f, 0xff, 00, 0x8, 0xbc, 0xca, - 0x7, 0xee, 0xcd, 0x7e, 0x55, 0x9e, 0xd3, 0xad, 0x5f, 0x16, - 0xdc, 0x56, 0x88, 0xfc, 0x4f, 0x89, 0xa8, 0xd7, 0xc4, 0xe3, - 0x9b, 0x8a, 0xd1, 0x23, 0x7, 0x75, 0x1b, 0xab, 0x6d, 0xbc, - 0x39, 0x28, 0xff, 00, 0x96, 0x7f, 0xa5, 0x44, 0xde, 0x1f, - 0x95, 0x7f, 0x80, 0xfe, 0x55, 0xf3, 0x4f, 0xb, 0x59, 0x74, - 0x3e, 0x45, 0xe0, 0xeb, 0xaf, 0xb2, 0x65, 0x66, 0x8c, 0x8a, - 0xd2, 0x6d, 0xa, 0x51, 0xfc, 0x7, 0xf2, 0xa8, 0xdb, 0x46, - 0x90, 0xe, 0x8d, 0x50, 0xe8, 0x55, 0x5d, 0xc, 0xde, 0x1e, - 0xb2, 0xfb, 0x26, 0x9f, 0x82, 0x2d, 0x3e, 0xd3, 0xab, 0x29, - 0xe7, 00, 0x8a, 0xf7, 0xad, 0x3e, 0x2d, 0x96, 0xc8, 0x3d, - 0xab, 0xcb, 0x3e, 0x1b, 0xe8, 0x6c, 0x92, 0x19, 0x18, 0x1e, - 0x4f, 0x7f, 0xad, 0x7a, 0xda, 0x2e, 0xd4, 00, 0x76, 0x15, - 0xfa, 0x7f, 0xe, 0x61, 0xdd, 0x2c, 0x37, 0x34, 0xb7, 0x67, - 0xec, 0x7c, 0x27, 0x85, 0x74, 0x30, 0xae, 0x72, 0x5a, 0xb1, - 0xf4, 0x51, 0x45, 0x7d, 0x71, 0xf7, 0x61, 0x45, 0x14, 0x50, - 0x2, 0x1a, 0xf3, 0xff, 00, 0x89, 0x29, 0xe5, 0xd9, 0x33, - 0x13, 0xc9, 0x15, 0xe8, 0xd, 0xd2, 0xbc, 0xf3, 0xe2, 0x73, - 0x34, 0xb1, 0x4, 0x3, 0xa0, 0xaf, 0x17, 0x37, 0x76, 0xc1, - 0xcc, 0xf9, 0xec, 0xf6, 0xdf, 0x51, 0x9b, 0x3c, 0x77, 0x6e, - 0xde, 0x28, 0xa1, 0xe3, 0x7f, 0x30, 0xf1, 0x46, 0xd7, 0x1d, - 0x8d, 0x7e, 0x2d, 0xf2, 0x3f, 0x9e, 0xb6, 0xe8, 0x14, 0x51, - 0xb5, 0xbf, 0xba, 0x69, 0x39, 0xf4, 0xa2, 0xe1, 0x71, 0x6b, - 0x43, 0x42, 0x6d, 0x97, 0x80, 0xf7, 0xcd, 0x67, 0x64, 0xf7, - 0x1f, 0xa5, 0x5a, 0xd2, 0x58, 0x9d, 0x42, 0x35, 0xf7, 0xcd, - 0x6b, 0x45, 0xfe, 0xf6, 0x26, 0xf4, 0x25, 0x6a, 0xb1, 0x7e, - 0x67, 0xd0, 0xbe, 0x1b, 0x18, 0xd3, 0xd4, 0xf5, 0xcd, 0x6b, - 0x8a, 0xc6, 0xf0, 0xd3, 0xee, 0xb1, 0x51, 0xe8, 0x2b, 0x66, - 0xbf, 0x74, 0xc3, 0x7f, 0x6, 0x3e, 0x87, 0xf4, 0x9e, 0xf, - 0x5a, 0x10, 0xf4, 0x16, 0x8a, 0x28, 0xae, 0xa3, 0xb0, 0x28, - 0xa2, 0x8a, 00, 0x2a, 0x2b, 0x96, 0xd9, 0xb, 0x1f, 0x6a, - 0x96, 0xb3, 0xb5, 0xab, 0x81, 0x5, 0x94, 0x8d, 0xe8, 0xd, - 0x67, 0x52, 0x5c, 0xb0, 0x72, 0x66, 0x55, 0x65, 0xc9, 0x7, - 0x26, 0x78, 0xdf, 0xc4, 0x7b, 0xef, 0x3e, 0xfc, 0x47, 0xd8, - 0x1f, 0x5a, 0xe3, 0xab, 0x4f, 0xc4, 0xb7, 0x7f, 0x6b, 0xd5, - 0xa5, 0x3d, 0x70, 0x48, 0xac, 0xca, 0xfc, 0x3b, 0x1b, 0x57, - 0xdb, 0x62, 0x27, 0x3f, 0x33, 0xf9, 0xc3, 0x31, 0xad, 0xf5, - 0x8c, 0x5d, 0x49, 0xf9, 0x85, 0x14, 0x51, 0x5c, 0x27, 0x9c, - 0x14, 0x8f, 0xf7, 0x4d, 0x2d, 0x26, 0xdf, 0x32, 0x45, 0x5f, - 0x53, 0x43, 0xf2, 0x13, 0xd7, 0x43, 0xd3, 0x3e, 0x16, 0x59, - 0x64, 0xee, 0xaf, 0x5a, 0x3, 0x18, 0xae, 0xf, 0xe1, 0xad, - 0x9f, 0x93, 0x6f, 0xbb, 0x1f, 0xc3, 0x5d, 0xed, 0x7e, 0xcb, - 0x92, 0xd2, 0xf6, 0x58, 0x38, 0xa3, 0xfa, 0x3, 0x87, 0xa8, - 0x7b, 0x1c, 0xbe, 0x8, 0x28, 0xa2, 0x8a, 0xf7, 0x8f, 0xa6, - 0xa, 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa2, 0x80, 0xa, 0x28, - 0xa2, 0x80, 0x28, 0x6a, 0xd6, 0x82, 0xee, 0xd1, 0x93, 0x19, - 0x35, 0xe2, 0x1e, 0x31, 0xd0, 0xde, 0xd6, 0xed, 0xe4, 0xe4, - 0x28, 0xf6, 0xaf, 0x7c, 0x20, 0x10, 0x7d, 0x2b, 0x8c, 0xf1, - 0xaf, 0x87, 0x45, 0xe5, 0xa4, 0x8e, 0x6, 0x78, 0x26, 0xbe, - 0x67, 0x3b, 0xc0, 0xfd, 0x6a, 0x8b, 0x92, 0x5a, 0xa3, 0xe3, - 0xf8, 0x8b, 0x2d, 0x58, 0xda, 0xe, 0x71, 0x5a, 0xa3, 0xc3, - 0x81, 0xc8, 0xa2, 0xac, 0x5f, 0xda, 0x35, 0xac, 0xac, 0x36, - 0x10, 0x33, 0x8e, 0x95, 0x5c, 0x57, 0xe4, 0x6e, 0x2e, 0xf, - 0x96, 0x47, 0xe1, 0x72, 0x8b, 0x83, 0xe5, 0x90, 0x51, 0x45, - 0x14, 0x8, 0x28, 0xa2, 0x8a, 0x40, 0x14, 0x51, 0x45, 00, - 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, - 0x45, 00, 0x14, 0x13, 0x8a, 0xe, 0x7b, 0x55, 0xdd, 0x37, - 0x4b, 0x97, 0x51, 0x9d, 0x54, 0x21, 0xe7, 0xbd, 0x54, 0x63, - 0x2a, 0x92, 0xe5, 0x8e, 0xe5, 0xc2, 0x12, 0xab, 0x2e, 0x48, - 0x2b, 0xb1, 0x9a, 0x66, 0x9d, 0x26, 0xa1, 0x74, 0xb1, 0xa0, - 0x27, 0x24, 0x3, 0x81, 0x5e, 0xe3, 0xe1, 0x1f, 0xc, 0xc7, - 0x61, 0x69, 0x1b, 0x38, 0x3b, 0xb8, 0xea, 0x2b, 0x27, 0xc1, - 0x9e, 0x8, 0x5d, 0x39, 0x96, 0x59, 0x17, 0x9e, 0xbf, 0xe7, - 0x8a, 0xef, 0xd1, 0x42, 00, 00, 0xc0, 0xaf, 0xd3, 0x72, - 0x3c, 0xa3, 0xea, 0xf1, 0xf6, 0xd5, 0x97, 0xbc, 0xcf, 0xd8, - 0x78, 0x6f, 0x23, 0xfa, 0xac, 0x3d, 0xbd, 0x75, 0xef, 0x31, - 0x40, 0x2, 0x96, 0x8a, 0x2b, 0xed, 0xf, 0xd0, 0x42, 0x8a, - 0x29, 0x9, 0xc0, 0xcd, 00, 0x71, 0xdf, 0x12, 0x2f, 0xbe, - 0xcb, 0xa5, 0x6d, 0xcf, 0xde, 0xaf, 0xe, 0x9d, 0xb7, 0xca, - 0x4d, 0x7a, 0x5f, 0xc5, 0xbd, 0x50, 0x17, 0x86, 0x10, 0x7b, - 0x74, 0xaf, 0x32, 0x3c, 0x92, 0x6b, 0xf2, 0x3e, 0x21, 0xaf, - 0xed, 0x71, 0x8e, 0x2b, 0x64, 0x7e, 0x19, 0xc5, 0x58, 0x8f, - 0x6d, 0x8f, 0x94, 0x13, 0xd2, 0x21, 0x48, 0x46, 0x68, 0xa2, - 0xbe, 0x60, 0xf8, 0xd1, 0xb8, 0x23, 0xbd, 0x1, 0xa4, 0x5e, - 0x8c, 0x45, 0x3a, 0x8a, 0x5b, 0x6c, 0x4e, 0xdb, 0x31, 0xeb, - 0x79, 0x3a, 0xc, 0x9, 0xd, 0x4c, 0x9a, 0xad, 0xca, 0xc, - 0x79, 0x86, 0xab, 0x51, 0x54, 0xaa, 0x4d, 0x6c, 0xcb, 0x55, - 0x6a, 0x47, 0x69, 0x32, 0xd9, 0xd6, 0x6e, 0xb1, 0xc3, 0xd4, - 0x4f, 0xa9, 0xdc, 0xc9, 0xc3, 0x1c, 0xd4, 0x34, 0x55, 0x3a, - 0xb3, 0x7f, 0x68, 0xa7, 0x5a, 0xab, 0xde, 0x4c, 0x53, 0x23, - 0x49, 0xd6, 0x93, 0x14, 0x51, 0x59, 0x19, 0x36, 0xde, 0xe1, - 0x45, 0x14, 0x50, 0x20, 0xa2, 0x8a, 0xf, 0x2, 0x80, 0x19, - 0x23, 0x71, 0x5b, 0x9e, 0x11, 0xd2, 0x7e, 0xdb, 0x7a, 0x92, - 0x1c, 0xe0, 0x1f, 0x4a, 0xc8, 0xb6, 0xb4, 0x92, 0xf1, 0x82, - 0xa2, 0xe7, 0x9a, 0xf5, 0xbf, 0x7, 0xf8, 0x7f, 0xec, 0x16, - 0x6a, 0xf2, 0x28, 0xd, 0xe9, 0x5e, 0xf6, 0x4f, 0x81, 0x96, - 0x2f, 0x10, 0x9b, 0x5a, 0x23, 0xe9, 0xb8, 0x7f, 0x2e, 0x96, - 0x37, 0x14, 0xa4, 0xd7, 0xba, 0x8d, 0x41, 0x6e, 0xb6, 0xf1, - 0xa8, 0x3, 0x18, 0x15, 0x97, 0x7a, 0xf8, 0x53, 0x5a, 0xf7, - 0x8f, 0xc9, 0xac, 0xd, 0x42, 0x4c, 0x29, 0xaf, 0xd9, 0x21, - 0x15, 0x5, 0x64, 0x7e, 0xff, 00, 0x8, 0x2a, 0x71, 0x51, - 0x89, 0x81, 0xa8, 0xbf, 0x27, 0x9a, 0xe5, 0xf5, 0x17, 0x18, - 0x35, 0xbf, 0xa8, 0xc9, 0xd6, 0xb9, 0x6d, 0x4e, 0x4c, 0x2b, - 0x55, 0x96, 0x72, 0x9a, 0xcc, 0x83, 0xe6, 0xaf, 0x24, 0xf8, - 0x85, 0x7b, 0xe5, 0xda, 0xb2, 0xff, 00, 0x5a, 0xf4, 0xfd, - 0x5e, 0x6e, 0x5a, 0xbc, 0x47, 0xe2, 0x5d, 0xfe, 0xdd, 0xe3, - 0xb0, 0xae, 0x6c, 0x44, 0xb9, 0x69, 0xb6, 0x71, 0xe2, 0xe7, - 0xc9, 0x49, 0xb3, 0xe7, 0x9f, 0x88, 0x77, 0xa1, 0xa6, 0x94, - 0x7b, 0x9f, 0xe6, 0x6b, 0xc9, 0xf5, 0x39, 0x38, 0x35, 0xde, - 0x78, 0xde, 0xeb, 0xcd, 0xba, 0x70, 0x3f, 0xbc, 0x7f, 0xad, - 0x79, 0xde, 0xa5, 0x27, 0x5a, 0xf8, 0x26, 0xf9, 0xaa, 0xb6, - 0x7e, 0x65, 0x27, 0xcf, 0x5d, 0xb3, 0x9c, 0xd4, 0x5f, 0x2e, - 0x6b, 0x1e, 0x63, 0x9e, 0x33, 0x8a, 0xd1, 0xbd, 0x7c, 0xb9, - 0xac, 0xa9, 0xcf, 0xcd, 0x5e, 0xed, 0x15, 0x64, 0x7d, 0x2d, - 0x8, 0xd9, 0x23, 0xde, 0xbf, 0x62, 0x2f, 0xa, 0x37, 0x89, - 0x3e, 0x36, 0xdb, 0x4c, 0x54, 0xec, 0xb2, 0x8b, 0xcd, 0xdd, - 0x83, 0xdd, 0xd5, 0x48, 0xfc, 0x98, 0xd7, 0xeb, 0x9d, 0x9c, - 0x22, 0x18, 0xa3, 0x8c, 0x74, 0x45, 0xb, 0xf9, 0x57, 0xe7, - 0x5f, 0xfc, 0x13, 0x8f, 0xc3, 0x2a, 0x2f, 0xee, 0x75, 0x89, - 0x41, 0xdf, 0x3d, 0xc9, 0x86, 0x3c, 0x74, 0xda, 0x17, 0x27, - 0xb7, 0x5c, 0xad, 0x7e, 0x8d, 0x40, 0xb5, 0xf4, 0x54, 0x63, - 0x68, 0x23, 0xea, 0xf0, 0xf1, 0xe5, 0xa6, 0x8b, 0x90, 0x2f, - 0x35, 0xa3, 0xa, 0xf0, 0x2a, 0x8c, 0x2, 0xb4, 0x61, 0x1d, - 0x2b, 0x73, 0xa4, 0xb7, 0x8, 0xc9, 0xad, 0x18, 0x47, 0x19, - 0xaa, 0x30, 0xe, 0x6a, 0xfc, 0x27, 0x20, 0x50, 0x5, 0xd8, - 0x5, 0x5c, 0x8e, 0xaa, 0xc1, 0xc5, 0x5b, 0x8e, 0x80, 0x27, - 0x8c, 0x66, 0xac, 0x20, 0xa8, 0x63, 0xc5, 0x4e, 0x94, 0x1, - 0x20, 0xe8, 0x2a, 0x41, 0xd6, 0x98, 0x3a, 0xd4, 0x8b, 0x40, - 0xf, 0x5a, 0x7d, 0x31, 0x7b, 0x53, 0xe8, 00, 0xa7, 0x1, - 0xc5, 0x36, 0x9c, 0x3a, 0x50, 0x2, 0xd1, 0x45, 0x14, 0x1, - 0x9e, 0xd5, 0xc, 0x86, 0xa6, 0x7a, 0x82, 0x4a, 00, 0xaf, - 0x21, 0xaa, 0xb2, 0x9a, 0xb3, 0x21, 0xae, 0x7b, 0xc6, 0x3a, - 0xbc, 0x7a, 0x17, 0x86, 0xb5, 0x4b, 0xf9, 0x66, 0xf2, 0x16, - 0xde, 0xd9, 0xdf, 0xcc, 0xe7, 0xe5, 0x3b, 0x4e, 0x3f, 0x5c, - 0x54, 0xc9, 0xa8, 0xa7, 0x27, 0xd0, 0x99, 0x49, 0x42, 0x2e, - 0x4f, 0xa1, 0xf0, 0x77, 0xc5, 0xeb, 0xf3, 0xf1, 0x17, 0xf6, - 0x93, 0xba, 0x48, 0xff, 00, 0xd4, 0xc3, 0x75, 0x15, 0x9a, - 0x86, 0x39, 0xc6, 0xd6, 0xa, 0xdf, 0xf8, 0xf6, 0x4d, 0x7d, - 0xd3, 0xf0, 0xf3, 0x4c, 0x5d, 0x3f, 0x4c, 0xb7, 0x89, 0x40, - 0x1, 0x23, 0x3, 0x81, 0xec, 0x2b, 0xe1, 0x4f, 0xd9, 0xab, - 0x4b, 0x93, 0xc5, 0x9f, 0x13, 0x66, 0xd5, 0x6e, 0x3f, 0x7a, - 0xef, 0x33, 0xdd, 0xc8, 0xcf, 0x8c, 0x97, 0x67, 0xdc, 0x49, - 0xf7, 0xc9, 0x35, 0xfa, 0x17, 0xe1, 0xbb, 0x7f, 0x2e, 0x34, - 0x1e, 0xd5, 0xf2, 0x1c, 0x3e, 0xbd, 0xb4, 0xab, 0x62, 0xe5, - 0xbc, 0xe4, 0x7c, 0x1f, 0xb, 0x45, 0xe2, 0x25, 0x88, 0xc7, - 0x4b, 0x79, 0xc9, 0xdb, 0xd0, 0xe8, 0xad, 0x97, 0x9, 0x5e, - 0x47, 0xfb, 0x4b, 0xf8, 0xec, 0xf8, 0x2f, 0xc1, 0x6f, 0x22, - 0x6e, 0xde, 0xc1, 0x8e, 0x54, 0xe3, 0xd3, 0x1d, 0xfd, 0xeb, - 0xd8, 0x54, 0x61, 0x45, 0x7c, 0x3b, 0xff, 00, 0x5, 0x9, - 0xf1, 0xe2, 0x69, 0x1e, 0x1c, 0xb9, 0x8c, 0x31, 0x3b, 0x10, - 0x82, 0x1, 0xc7, 0xf7, 0x6b, 0xec, 0x4f, 0xbe, 0x3f, 0x2c, - 0xfe, 0x2e, 0x7e, 0xd0, 0x7a, 0xde, 0xaf, 0xe3, 0x7d, 0x42, - 0x58, 0xee, 0x25, 0x8, 0xb2, 0x15, 0x3, 0xcc, 0x6f, 0xfe, - 0x2a, 0xbb, 0x9f, 0xd9, 0xa3, 0xc7, 0x7e, 0x21, 0xf1, 0x47, - 0x8a, 0x23, 0xd, 0x72, 0xc1, 0xc, 0x8a, 0x80, 0xb3, 0xb7, - 0xa8, 0xf7, 0x35, 0xf2, 0xbe, 0xa3, 0x72, 0x6f, 0x2f, 0xa6, - 0x98, 0xe7, 0x2e, 0xc4, 0xf3, 0x5f, 0x76, 0x7f, 0xc1, 0x3f, - 0x7c, 0x3, 0xfd, 0xa3, 0xaf, 0x58, 0x48, 0x63, 0xf, 0xb9, - 0xd5, 0xce, 0x47, 0xba, 0xd0, 0x7, 0xeb, 0xef, 0xc1, 0xed, - 0x3e, 0x4d, 0x3f, 0xc0, 0x5a, 0x62, 0xca, 0xc5, 0xe4, 0x68, - 0x95, 0x8b, 0x1e, 0xff, 00, 0x28, 0xae, 0xca, 0x59, 0xd2, - 0x11, 0x97, 0x6c, 0x55, 0x4d, 0x3a, 0x5, 0xd3, 0x34, 0x9b, - 0x78, 0xf0, 0x2, 0xc5, 0x12, 0x8e, 0x3d, 0x85, 0x7c, 0x83, - 0xfb, 0x44, 0xfe, 0xda, 0xda, 0x3f, 0xc3, 0x4f, 0x1a, 0xc9, - 0xa1, 0xc8, 0x24, 0x67, 0x88, 0xe1, 0xb6, 0x92, 0x7, 0x40, - 0x7f, 0xba, 0x7d, 0x68, 0x3, 0xec, 0x65, 0xbd, 0x89, 0x8f, - 0xe, 0x2a, 0x65, 0x21, 0x86, 0x41, 0xcd, 0x7c, 0x1, 0xe1, - 0x4f, 0xdb, 0xdb, 0x46, 0xd7, 0xb5, 0x4b, 0x7b, 0x44, 0x8e, - 0x66, 0x79, 0xe, 0x7, 0xce, 0x47, 0xfe, 0xc9, 0x5f, 0x66, - 0xfc, 0x35, 0xf1, 0xa4, 0x7e, 0x30, 0xd2, 0x56, 0xe2, 0x35, - 0x2a, 0xa4, 0x67, 0x93, 0x9f, 0xe9, 0x40, 0x1d, 0x91, 00, - 0xf5, 0xa6, 0x98, 0x90, 0xf5, 0x45, 0x3f, 0x85, 0x3e, 0x8a, - 00, 0x85, 0xad, 0x21, 0x6e, 0xb1, 0x21, 0xff, 00, 0x80, - 0x8a, 0x8d, 0xb4, 0xcb, 0x46, 0xeb, 0x6b, 0x1, 0xfa, 0xc6, - 0x2a, 0xd5, 0x14, 0x1, 0x41, 0xb4, 0x2d, 0x39, 0xba, 0xd8, - 0xdb, 0x9f, 0xac, 0x4b, 0xfe, 0x14, 0xf8, 0x34, 0x7b, 0x1b, - 0x66, 0x6, 0x2b, 0x38, 0x62, 0x23, 0xba, 0xc6, 0x5, 0x5c, - 0xa2, 0x80, 0x10, 0x51, 0x8c, 0xa, 0x5a, 0x42, 0x33, 0x40, - 0x15, 0xe7, 0xb2, 0x86, 0xeb, 0x1e, 0x64, 0x6a, 0xf8, 0xf5, - 0x15, 0x5d, 0xb4, 0x3b, 0x46, 0xff, 00, 0x96, 0x4a, 0x3f, - 0xa, 0xd0, 0xdb, 0x46, 0x2b, 0x39, 0x53, 0x84, 0xb5, 0x68, - 0xca, 0x54, 0xa9, 0xc9, 0xde, 0x51, 0x4c, 0xcb, 0x6f, 0xe, - 0xd9, 0x37, 0xfc, 0xb2, 0x1f, 0x90, 0xa8, 0xdb, 0xc2, 0xf6, - 0x4c, 0x7f, 0xd5, 0x8f, 0xc8, 0x56, 0xc6, 0x28, 0xc5, 0x66, - 0xf0, 0xf4, 0x9e, 0xf1, 0x46, 0x4f, 0xb, 0x41, 0xef, 0x5, - 0xf7, 0x18, 0x4f, 0xe1, 0x1b, 0x36, 0xfe, 0x1, 0xf9, 0xa, - 0x85, 0xfc, 0x17, 0x66, 0xdf, 0xc2, 0xbf, 0x95, 0x74, 0x78, - 0xa3, 0x15, 0x93, 0xc1, 0xd0, 0x7f, 0x61, 0x19, 0x3c, 0x6, - 0x19, 0xef, 0x4, 0x66, 0xe9, 0x9a, 0x2c, 0x1a, 0x64, 0x61, - 0x63, 0x3, 0xeb, 0x8a, 0xd1, 0x14, 0xb8, 0xe2, 0x8a, 0xe9, - 0x84, 0x23, 0x4e, 0x3c, 0xb1, 0x56, 0x3a, 0xe9, 0xd3, 0x8d, - 0x28, 0xf2, 0xc1, 0x59, 0xb, 0x45, 0x14, 0x56, 0x86, 0x81, - 0x45, 0x14, 0x50, 0x2, 0x1a, 0xe6, 0x7c, 0x51, 0xa1, 0xb6, - 0xa6, 0xa7, 0x68, 0x1c, 0xfa, 0x8a, 0xe9, 0x8f, 0x34, 0x9b, - 0x6b, 0xa, 0xf4, 0x63, 0x5e, 0xe, 0x13, 0xd8, 0xe6, 0xc4, - 0x61, 0xe1, 0x89, 0xa6, 0xe9, 0xcf, 0x66, 0x79, 0x1, 0xf8, - 0x7f, 0x38, 0x24, 0xf1, 0xf9, 0x7f, 0xf5, 0xaa, 0x17, 0xf0, - 0x1c, 0xe3, 0xb0, 0xfc, 0xab, 0xd9, 0x4a, 0xa, 0x4f, 0x2c, - 0x7a, 0xf, 0xca, 0xbe, 0x7d, 0xe4, 0x18, 0x56, 0x7c, 0xbc, - 0xb8, 0x63, 0x6, 0xf6, 0x3c, 0x55, 0xbc, 0xf, 0x70, 0x3a, - 0x28, 0xfc, 0x8d, 0x44, 0xfe, 0xc, 0x9c, 0x7f, 0xa, 0xfe, - 00, 0xd7, 0xb7, 0x18, 0x50, 0xff, 00, 0x8, 0xfc, 0xa9, - 0xd, 0xb4, 0x47, 0xf8, 0x17, 0xf2, 0xac, 0x5f, 0xe, 0xe1, - 0xde, 0xcc, 0xc2, 0x5c, 0x29, 0x85, 0x7b, 0x33, 0xc2, 0x9f, - 0xc2, 0x13, 0xaf, 0xf0, 0xf, 0xca, 0xa4, 0xd3, 0x3c, 0x2b, - 0x34, 0x57, 0x61, 0xfc, 0xb1, 0xf9, 0x57, 0xb7, 0x9b, 0x28, - 0x5b, 0xfe, 0x59, 0xaf, 0xe5, 0x48, 0x2c, 0x20, 0x7, 0x88, - 0xd7, 0xf2, 0xac, 0xd7, 0xe, 0x52, 0x52, 0x52, 0x52, 0xd8, - 0xc5, 0x70, 0x9d, 0x18, 0xc9, 0x49, 0x4b, 0x62, 0x96, 0x83, - 0x6c, 0xd6, 0xd6, 0x40, 0x30, 0xc1, 0xad, 0x41, 0x48, 0x14, - 0x1, 0x81, 0xc0, 0xa5, 0xaf, 0xad, 0xa7, 0x5, 0x4e, 0xa, - 0x2b, 0xa1, 0xf7, 0x34, 0xa9, 0xaa, 0x50, 0x50, 0x5d, 0x5, - 0xa2, 0x8a, 0x2b, 0x43, 0x50, 0xa2, 0x8a, 0x28, 0x1, 0xa7, - 0xa5, 0x73, 0x9e, 0x32, 0x95, 0x93, 0x4d, 0x94, 0x3, 0x82, - 0x54, 0x81, 0x5d, 0x21, 0x15, 0x9f, 0xab, 0x69, 0x4b, 0xa9, - 0x44, 0x50, 0x90, 0x33, 0xea, 0x2b, 0x97, 0x13, 0x9, 0x54, - 0xa5, 0x28, 0x47, 0x76, 0x71, 0x63, 0x29, 0xce, 0xad, 0x9, - 0x42, 0x1b, 0xb3, 0xe7, 0x5b, 0x8b, 0x29, 0x26, 0xb9, 0x91, - 0xf3, 0xd4, 0x9e, 0x4d, 0x44, 0x6c, 0x64, 0x1d, 0xeb, 0xda, - 0x5f, 0xe1, 0xec, 0x47, 0x3c, 0xa1, 0x3f, 0xee, 0xd4, 0xf, - 0xf0, 0xed, 0x4f, 0x42, 0xbf, 0xf7, 0xcf, 0xff, 00, 0x5e, - 0xbf, 0x35, 0x97, 0xe, 0xe2, 0x2f, 0x7b, 0x1f, 0x91, 0x4f, - 0x85, 0x31, 0x57, 0x6e, 0xc7, 0x8e, 0x1b, 0x39, 0x7, 0x7a, - 0x6f, 0xd9, 0x64, 0xcf, 0x5a, 0xf5, 0xf6, 0xf8, 0x77, 0xd7, - 0x5, 0x7f, 0x2a, 0x81, 0xfe, 0x1d, 0x37, 0xb7, 0xe5, 0x5c, - 0xef, 0x20, 0xc4, 0xae, 0x87, 0x2c, 0xb8, 0x5f, 0x16, 0xb6, - 0x89, 0xe4, 0xc6, 0x9, 0x5, 0x4f, 0xa5, 0xda, 0x3c, 0xda, - 0x84, 0x63, 0x1d, 0xd, 0x7a, 0x5c, 0x9f, 0xf, 0x24, 0xec, - 0x7f, 0x4f, 0xfe, 0xbd, 0x4b, 0xa4, 0xf8, 0xa, 0x4b, 0x6b, - 0xb0, 0xec, 0x47, 0x1f, 0xec, 0xd4, 0xc3, 0x22, 0xc4, 0x7b, - 0x48, 0xde, 0x3a, 0x11, 0x4f, 0x86, 0xf1, 0x7e, 0xd6, 0x37, - 0x8e, 0x87, 0x53, 0xe0, 0xeb, 0x43, 0x6f, 0x62, 0xe, 0x31, - 0xc5, 0x74, 0x95, 0x56, 0xc2, 0xd8, 0x5a, 0xdb, 0xaa, 0x77, - 0xab, 0x55, 0xfa, 0xae, 0x1e, 0x9f, 0xb2, 0xa5, 0x18, 0x76, - 0x3f, 0x6c, 0xc2, 0x52, 0xf6, 0x14, 0x63, 0x4f, 0xb0, 0x51, - 0x45, 0x15, 0xd2, 0x75, 0x85, 0x14, 0x51, 0x40, 0x5, 0x14, - 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, 0x41, 0x75, 0x6e, - 0xb7, 0x31, 0x14, 0x6e, 0x84, 0x54, 0xf4, 0x94, 0x9a, 0x4d, - 0x59, 0x89, 0xa5, 0x25, 0x66, 0x79, 0x77, 0x8b, 0xfc, 0x2a, - 0xa3, 0x7b, 0x46, 0x83, 0xf2, 0xaf, 0x35, 0xbc, 0xd3, 0x67, - 0xb7, 0x90, 0xee, 0x50, 0x2b, 0xe9, 0x5b, 0x8b, 0x54, 0xb8, - 0x8c, 0xab, 0x28, 0x3f, 0x85, 0x71, 0x1e, 0x22, 0xf0, 0x93, - 0x5c, 0xee, 0x31, 0xa8, 0x1f, 0x85, 0x7c, 0x26, 0x6d, 0x91, - 0xfb, 0x4b, 0xd4, 0xa4, 0x7e, 0x6b, 0x9d, 0xf0, 0xef, 0xb5, - 0x6e, 0xb5, 0xf, 0xb8, 0xf1, 0x7c, 0x63, 0x83, 0x46, 0x6b, - 0xa5, 0xd5, 0x3c, 0x1d, 0x73, 0x3, 0x13, 0xbb, 0x1f, 0x87, - 0xff, 00, 0x5e, 0xb0, 0x66, 0xd3, 0xe4, 0xb7, 0x38, 0x63, - 0x9f, 0xc2, 0xbe, 0x6, 0xae, 0x1a, 0xad, 0x17, 0x69, 0xc6, - 0xc7, 0xe6, 0x15, 0xf0, 0x95, 0xf0, 0xee, 0xd3, 0x8d, 0x88, - 0x28, 0xa5, 0xc1, 0x1c, 0x1a, 0x4c, 0x8a, 0xe6, 0xbf, 0x73, - 0x8e, 0xfd, 0xc2, 0x8a, 0x37, 0xa, 0x37, 0xf, 0x5a, 0x2e, - 0x17, 0x41, 0x45, 0x14, 0x50, 0x30, 0xa2, 0x82, 0x71, 0xdb, - 0x34, 0xaa, 0x8c, 0xe7, 0x85, 0x34, 0x6a, 0x24, 0xdb, 0x76, - 0x42, 0x12, 0x5, 0x2c, 0x68, 0x66, 0x20, 0x28, 0xe6, 0xb5, - 0x74, 0xed, 0x2, 0x4b, 0xf6, 0xc6, 0x31, 0xee, 0x6b, 0xb5, - 0xd0, 0x7e, 0x1d, 0xb0, 0x91, 0x5d, 0xb1, 0xff, 00, 0x7c, - 0xd7, 0xa7, 0x85, 0xcb, 0xb1, 0x18, 0xa6, 0xb9, 0x56, 0x87, - 0xb5, 0x83, 0xca, 0x71, 0x58, 0xc9, 0x2e, 0x48, 0xe8, 0x72, - 0x5a, 0x37, 0x85, 0xae, 0x2f, 0xa4, 0x19, 0x1c, 0x67, 0xd2, - 0xbd, 0x63, 0xc3, 0x9e, 0xd, 0x82, 0xca, 0x15, 0x77, 0x40, - 0x5b, 0xe9, 0x5b, 0x9a, 0x56, 0x89, 0x15, 0x84, 0x40, 0x6d, - 0x5c, 0x8f, 0x6a, 0xd2, 0xb, 0x81, 0x8e, 0xd5, 0xfa, 0x4e, - 0x5d, 0x92, 0xd2, 0xc2, 0x25, 0x39, 0x2b, 0xb3, 0xf5, 0xac, - 0xa7, 0x87, 0xa8, 0xe0, 0x57, 0x3d, 0x45, 0x79, 0xc, 0x8e, - 0x31, 0x1a, 0xed, 0x51, 0x52, 0xa, 0x31, 0x4b, 0x5f, 0x4c, - 0x95, 0x8f, 0xb1, 0x4a, 0xda, 0x20, 0xa2, 0x8a, 0x29, 0x8c, - 0x2a, 0xb5, 0xe4, 0xc2, 0x18, 0x1d, 0x8d, 0x58, 0xac, 0x3f, - 0x14, 0xdd, 0x1b, 0x7b, 0x33, 0x8f, 0x4a, 0xc2, 0xbc, 0xfd, - 0x9d, 0x39, 0x4c, 0xe6, 0xc4, 0x55, 0x54, 0x69, 0x4a, 0x7d, - 0x8f, 0x1e, 0xf8, 0x87, 0x7d, 0xf6, 0xbd, 0x61, 0x70, 0x4e, - 00, 0x3f, 0xce, 0xb9, 0x7a, 0xbd, 0xae, 0x5c, 0x35, 0xce, - 0xa4, 0xec, 0x7b, 0x13, 0x54, 0x6b, 0xf0, 0xec, 0x65, 0x57, - 0x5a, 0xbc, 0xe6, 0xfa, 0xb3, 0xf9, 0xc3, 0x1d, 0x59, 0xd7, - 0xc4, 0xd4, 0xa8, 0xfa, 0xb0, 0xa2, 0x8a, 0x2b, 0x8e, 0xc7, - 0xd, 0x82, 0x8a, 0x28, 0xa7, 0x60, 0xb0, 0x51, 0x45, 0x14, - 0x58, 0x2c, 0x14, 0x51, 0x45, 0x2b, 0x5, 0x82, 0x8a, 0x28, - 0xa7, 0x60, 0xb0, 0x51, 0x45, 0x3, 0xe6, 0xe0, 0x52, 0x10, - 0x84, 0xe2, 0xa4, 0xb5, 0xb7, 0x6b, 0xc9, 0x76, 0x28, 0x39, - 0x35, 0x6f, 0x4f, 0xd2, 0x27, 0xbb, 0x95, 0x40, 0x5e, 0x9, - 0xaf, 0x4e, 0xf0, 0xaf, 0x82, 0x95, 0x4a, 0xbb, 0x81, 0x9f, - 0xa5, 0x7a, 0xd8, 0x2c, 0xb6, 0xae, 0x36, 0x76, 0x4b, 0x43, - 0xdc, 0xcb, 0x72, 0x8a, 0xf9, 0x84, 0xd2, 0x4a, 0xc8, 0xcf, - 0xf0, 0x67, 0x83, 0xf6, 0x44, 0x24, 0x91, 0x43, 0x7b, 0x91, - 0x5d, 0xe4, 0x90, 0xad, 0xac, 0xa, 0x80, 0x1, 0x5a, 0x96, - 0xb6, 0x89, 0x67, 0xe, 0xc5, 0x3, 0x8f, 0x41, 0x54, 0x75, - 0x7, 0xe3, 0x15, 0xfa, 0xd6, 0x3, 0x3, 0x4f, 0x5, 0x4d, - 0x46, 0x2b, 0x53, 0xf7, 0x2c, 0xb7, 0x2d, 0xa7, 0x97, 0xd2, - 0x50, 0x8a, 0xd4, 0xe7, 0xef, 0x1a, 0xb9, 0xed, 0x49, 0xf8, - 0x35, 0xd0, 0x5e, 0xbf, 0x5a, 0xe7, 0x75, 0x27, 0xeb, 0x5e, - 0xa1, 0xec, 0x9c, 0xce, 0xa2, 0xfd, 0x6b, 0x94, 0xd5, 0xe5, - 0xc2, 0x9a, 0xe9, 0xf5, 0x29, 0x3a, 0xd7, 0x23, 0xab, 0xcb, - 0xc1, 0xe6, 0x80, 0x38, 0xcd, 0x5e, 0x4f, 0xbf, 0x5f, 0x3d, - 0x7c, 0x4e, 0xd4, 0xe, 0xf9, 0xb9, 0x38, 0xc9, 0xaf, 0x7e, - 0xd6, 0xe6, 0xda, 0xae, 0x7d, 0xab, 0xe6, 0x3f, 0x89, 0x97, - 0xf8, 0x79, 0xb9, 0x27, 0x93, 0xde, 0xbc, 0xac, 0xc2, 0x7c, - 0xb4, 0x8f, 0x17, 0x34, 0x9f, 0x25, 0x13, 0xc2, 0x3c, 0x4d, - 0x70, 0x64, 0xbd, 0x90, 0x92, 0x7a, 0x9f, 0xe6, 0x6b, 0x88, - 0xd4, 0xe4, 0xeb, 0x5d, 0x56, 0xb9, 0x36, 0xf9, 0xe4, 0x3e, - 0xe6, 0xb8, 0xed, 0x4d, 0xf8, 0x6a, 0xf8, 0xea, 0x3e, 0xf4, - 0xee, 0x7c, 0x6, 0x19, 0x73, 0x4e, 0xe6, 0x5, 0xd3, 0x65, - 0x8d, 0x66, 0x4e, 0x72, 0x4f, 0xbd, 0x68, 0x5c, 0xb7, 0x26, - 0xaa, 0xda, 0xc2, 0x6e, 0xaf, 0xed, 0xa1, 00, 0x93, 0x24, - 0x8a, 0xb8, 0x3, 0x3d, 0x4d, 0x7d, 0x1d, 0x25, 0xb1, 0xf5, - 0xb4, 0x23, 0xb2, 0x3f, 0x4b, 0x7f, 0x61, 0x2f, 0x9, 0x47, - 0xa2, 0xf8, 0x1f, 0x45, 0x65, 0xc3, 0xbc, 0x91, 0x35, 0xeb, - 0x3e, 0x39, 0xfd, 0xe6, 0xe, 0x9, 0xe3, 0xa6, 0xea, 0xfb, - 0x16, 0x1c, 0xe0, 0x67, 0xad, 0x78, 0xdf, 0xec, 0xeb, 0xe1, - 0xf1, 0xa1, 0xf8, 0x5a, 0xde, 00, 0xaa, 0xab, 0x6f, 0x6f, - 0x15, 0xb2, 0x6d, 00, 0xc, 0x2a, 0x81, 0xc0, 0x1d, 0x3a, - 0x57, 0xb3, 0x42, 0xb5, 0xf4, 0x31, 0x56, 0x49, 0x1f, 0x55, - 0x15, 0x68, 0xa4, 0x5e, 0xb7, 0x7, 0xd6, 0xb4, 0x21, 0xaa, - 0x56, 0xeb, 0x57, 0xe0, 0x1c, 0xa, 0xa2, 0x8b, 0xb0, 0xe, - 0x5, 0x5f, 0x8b, 0x8c, 0x55, 0x4b, 0x75, 0xe9, 0x57, 0x63, - 0x1d, 0x28, 0x2, 0xe4, 0x3c, 0xd5, 0xb8, 0xc5, 0x56, 0xb7, - 0x18, 0x15, 0x6e, 0x3a, 00, 0x9e, 0x31, 0x53, 0xaf, 0x41, - 0x51, 0x46, 0x2a, 0x75, 0x14, 00, 0xf5, 0xa7, 0x81, 0xc5, - 0x31, 0x7a, 0x54, 0x8b, 0xc5, 00, 0x3d, 0x69, 0xd4, 0x8b, - 0x4b, 0x40, 0x5, 0x3e, 0x9a, 0x3a, 0xd3, 0xa8, 00, 0xa2, - 0x8a, 0x28, 0x3, 0x39, 0xfa, 0xd5, 0x79, 0xd, 0x4e, 0xf5, - 0x5a, 0x43, 0x40, 0x15, 0xe4, 0x35, 0xe0, 0x9f, 0xb6, 0x37, - 0x8b, 0xcf, 0x86, 0xbe, 0xf, 0x5d, 0xda, 0xa2, 0x2b, 0xbe, - 0xaf, 0x32, 0x59, 0x6e, 0x24, 0xe5, 0x41, 0xf9, 0xf7, 0xf, - 0xfb, 0xe3, 0x1f, 0x8d, 0x7b, 0xcc, 0xb5, 0xf1, 0x27, 0xed, - 0xb7, 0xe2, 0xe8, 0xbc, 0x41, 0xe3, 0x9d, 0x7, 0xc2, 0x96, - 0xbb, 0x9a, 0x5d, 0x3d, 0x4c, 0xf3, 0xff, 00, 0x74, 0xb4, - 0x98, 0x8, 0x38, 0xee, 0x30, 0x7f, 0x3a, 0xf0, 0xf3, 0xac, - 0x47, 0xd5, 0xb0, 0x35, 0x25, 0x7d, 0x5a, 0xb2, 0xf9, 0x9f, - 0x39, 0xc4, 0x18, 0xaf, 0xaa, 0x65, 0xb5, 0x67, 0x7d, 0x5a, - 0xb2, 0xf5, 0x66, 0xe7, 0xec, 0x73, 0xe1, 0x63, 0x6, 0x93, - 0x36, 0xa2, 0xd9, 0xcc, 0x8f, 0xb4, 0xf, 0x6c, 0x2d, 0x7d, - 0x97, 0xa3, 0xc3, 0xb1, 0x17, 0x35, 0xe2, 0x7f, 0xb3, 0xe7, - 0x85, 0xf, 0x87, 0xfc, 0x13, 0xa6, 0xc2, 0xc8, 0xaa, 0xec, - 0x81, 0xdb, 0x69, 0x3d, 0x48, 0x15, 0xee, 0xd6, 0x11, 0xed, - 0x1f, 0x85, 0x5e, 0x51, 0x87, 0xfa, 0xb6, 0xa, 0x9c, 0x1e, - 0xf6, 0xbb, 0xf9, 0x9a, 0x64, 0x38, 0x6f, 0xaa, 0x65, 0xf4, - 0xa9, 0xdb, 0x5b, 0x5d, 0xfc, 0xcb, 0x57, 0x12, 0x8b, 0x7b, - 0x79, 0x24, 0x6e, 0x15, 0x14, 0x93, 0x5f, 0x90, 0x1f, 0xf0, - 0x52, 0x9f, 0x88, 0xbf, 0x69, 0x96, 0x4b, 0x34, 0x70, 0x1e, - 0x42, 0x47, 0x4e, 0xbf, 0x77, 0xda, 0xbf, 0x57, 0xfe, 0x20, - 0xea, 0xa3, 0x48, 0xf0, 0xad, 0xec, 0xb9, 0x21, 0x8a, 0x60, - 0x62, 0xbf, 0x4, 0x7f, 0x6d, 0xef, 0x1b, 0x7f, 0xc2, 0x43, - 0xf1, 0x15, 0xed, 0x56, 0x46, 0x91, 0x61, 0xcf, 0xc, 00, - 0xc7, 0xdd, 0xff, 00, 0xa, 0xf6, 0x4f, 0x7c, 0xf9, 0xd7, - 0x4b, 0xb5, 0x37, 0x97, 0xf6, 0xf0, 0x81, 0xf7, 0xe4, 0x51, - 0xf8, 0x67, 0x9a, 0xfd, 0x7f, 0xff, 00, 0x82, 0x71, 0xf8, - 0x22, 0x12, 0x22, 0xb9, 0xc9, 0x6f, 0x29, 0x57, 0x20, 0xe, - 0x6, 0x36, 0xfb, 0xd7, 0xe4, 0x37, 0x87, 0xef, 0x22, 0xb0, - 0xd4, 0xe1, 0x9e, 0x5c, 0xed, 0x46, 0x7, 0x8a, 0xfd, 0x48, - 0xfd, 0x88, 0xbf, 0x6a, 0x8f, 0xb, 0xfc, 0x3a, 0xf0, 0xff, - 00, 0xd9, 0xef, 0x96, 0xe1, 0xa6, 0x90, 0x1, 0xfb, 0xb8, - 0xd4, 0x8e, 0x8b, 0xea, 0x7d, 0xa8, 0x3, 0xf4, 0xd3, 0xc5, - 0x97, 0xc3, 0x4f, 0xd1, 0x2e, 0x25, 0xec, 0xa8, 0x49, 0xfa, - 0x62, 0xbf, 0x9e, 0xdf, 0xdb, 0x5f, 0xc5, 0xb2, 0xf8, 0x9f, - 0xf6, 0x86, 0xf1, 0x44, 0xc6, 0x42, 0x56, 0x39, 0xc2, 0x2e, - 0x38, 0x3, 0xa, 0xb5, 0xfa, 0xb9, 0xf1, 0x87, 0xf6, 0xe6, - 0xf0, 0x99, 0xf0, 0x8e, 0xa0, 0x90, 0x47, 0x77, 0xbc, 0xc4, - 0x55, 0x7e, 0x45, 0xea, 0x47, 0xfb, 0xd5, 0xf8, 0x9f, 0xf1, - 0x3b, 0xc4, 0x43, 0xc5, 0x9e, 0x3e, 0xd6, 0xf5, 0x65, 0xdd, - 0xb6, 0xea, 0xe0, 0xb8, 0xdd, 0xd7, 0xb0, 0xfe, 0x94, 0x1, - 0xe8, 0xbf, 0xb2, 0xdf, 0x86, 0xe5, 0xf1, 0x17, 0xc4, 0x1b, - 0x43, 0x96, 0x65, 0x47, 0x1d, 0xfa, 0xf5, 0xaf, 0xde, 0x8f, - 0xd9, 0xef, 0xc3, 0xc3, 0x45, 0xf0, 0x4d, 0xbb, 0x75, 0x67, - 0x18, 0xcf, 0xb0, 0xaf, 0xc6, 0x5f, 0xd8, 0x9e, 0xeb, 0x49, - 0xf0, 0xfe, 0xb3, 0x15, 0xde, 0xa6, 0x33, 0x96, 0xc9, 0xda, - 0x32, 0x4f, 0x5c, 0xe, 0xa2, 0xbf, 0x5f, 0x7c, 0x1d, 0xfb, - 0x45, 0x78, 0x27, 0x4e, 0xd0, 0x6d, 0x2d, 0xbe, 0xd1, 0x3a, - 0xb2, 0xa7, 0x41, 0x18, 0xff, 00, 0xe2, 0xa8, 0x3, 0xdc, - 0x68, 0xaf, 0x31, 0x8f, 0xf6, 0x89, 0xf0, 0x6c, 0xa3, 0x8b, - 0xa9, 0xff, 00, 0xef, 0x81, 0xff, 00, 0xc5, 0x55, 0xb8, - 0xfe, 0x3c, 0x78, 0x46, 0x4e, 0x97, 0xb2, 0xf, 0xaa, 0xf, - 0xf1, 0xa0, 0xf, 0x43, 0xa2, 0xb8, 0x68, 0xbe, 0x33, 0x78, - 0x5e, 0x53, 0xc5, 0xf1, 0x1f, 0x55, 0xff, 00, 0xeb, 0xd5, - 0xc8, 0xfe, 0x29, 0x78, 0x72, 0x5e, 0x97, 0xe0, 0x7f, 0xc0, - 0x4d, 00, 0x75, 0xb4, 0x56, 0x5e, 0x99, 0xe2, 0x5d, 0x3b, - 0x57, 0x20, 0x5a, 0xdc, 0xac, 0xa4, 0xf4, 0x2, 0xb5, 0x28, - 00, 0xa2, 0x8a, 0x8a, 0x5b, 0xa8, 0x60, 0x19, 0x92, 0x45, - 0x4f, 0xa9, 0xa0, 0x9, 0x68, 0xa8, 0x16, 0xfa, 0xdd, 0xba, - 0x4f, 0x19, 0xff, 00, 0x81, 0xa, 0x78, 0x9e, 0x33, 0xd2, - 0x45, 0x3f, 0x46, 0x14, 0x1, 0x25, 0x14, 0xdd, 0xea, 0x7f, - 0x88, 0x7e, 0x74, 0xbb, 0x87, 0xa8, 0xa0, 0x5, 0xa2, 0x8a, - 0x4a, 00, 0x5a, 0x28, 0xa4, 0xcd, 00, 0x2d, 0x14, 0x51, - 0x40, 0x5, 0x14, 0x99, 0x14, 0xb4, 00, 0x51, 0x45, 0x14, - 00, 0x51, 0x45, 0x14, 00, 0x51, 0x45, 0x14, 00, 0x51, - 0x45, 0x14, 00, 0x51, 0x45, 0x14, 00, 0x51, 0x45, 0x14, - 00, 0x51, 0x45, 0x14, 00, 0x52, 0x1a, 0x5a, 0x28, 0x1, - 0xb8, 0xa3, 0x8a, 0x75, 0x14, 00, 0xde, 0x28, 0xcd, 0x3a, - 0x8a, 00, 0x6e, 0x1, 0xa5, 0xc0, 0x14, 0xb4, 0x50, 0x3, - 0x69, 0xd4, 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, - 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, - 0x5, 0x14, 0x51, 0x40, 0x5, 0x34, 0x80, 0x69, 0xd4, 0x50, - 0x6, 0x5e, 0xa1, 0xa3, 0x25, 0xe0, 0x23, 0x81, 0x9a, 0xe4, - 0xb5, 0x3f, 0x87, 0x9f, 0x69, 0x25, 0x87, 0x5f, 0x63, 0x5e, - 0x83, 0x48, 0x46, 0x6b, 0xcf, 0xc4, 0x60, 0x28, 0x62, 0x7f, - 0x88, 0x8f, 0x2b, 0x13, 0x96, 0x61, 0xb1, 0x7f, 0xc5, 0x89, - 0xe3, 0x97, 0x3f, 0xd, 0x1d, 0x49, 0xc6, 0x7f, 0x3f, 0xfe, - 0xbd, 0x64, 0x5d, 0xf8, 0xa, 0x58, 0xf, 0x53, 0x5e, 0xec, - 0xd0, 0xab, 0xf5, 0x5a, 0xab, 0x3e, 0x95, 0x14, 0xfd, 0xbf, - 0x3a, 0xf0, 0x2b, 0x70, 0xee, 0x1a, 0x4b, 0xdc, 0x47, 0xcc, - 0xd7, 0xe1, 0x4c, 0x2c, 0xd7, 0xb8, 0x8f, 0x2, 0x7f, 0x8, - 0xce, 0x3b, 0x9a, 0x8f, 0xfe, 0x11, 0x4b, 0x8c, 0xf5, 0x35, - 0xee, 0xcf, 0xe1, 0xb8, 0x5b, 0xb0, 0xa6, 0x8f, 0xc, 0xc2, - 0xe, 0x70, 0xb5, 0xe6, 0x3e, 0x19, 0x8d, 0xcf, 0x1d, 0xf0, - 0x7c, 0x6f, 0xa1, 0xe2, 0x49, 0xe0, 0xeb, 0xb6, 0x1c, 0x67, - 0xf4, 0xa9, 0x53, 0xc1, 0x77, 0x9e, 0x87, 0xfc, 0xfe, 0x35, - 0xee, 0x31, 0xe8, 0x91, 0x20, 0x3, 0x2, 0xac, 0x26, 0x9d, - 0x12, 0x7f, 0x8, 0x35, 0xbc, 0x38, 0x66, 0x97, 0x56, 0x75, - 0x43, 0x83, 0xa8, 0xfd, 0xa6, 0x78, 0xc5, 0x8f, 0x81, 0xee, - 0x59, 0x86, 0xe1, 0x91, 0xf4, 0xff, 00, 0xeb, 0xd7, 0x67, - 0xa4, 0xf8, 0xa, 0x2d, 0x8a, 0x64, 0x18, 0x38, 0xae, 0xe8, - 0x40, 0x8b, 0xd1, 0x45, 0x48, 0xa0, 0x1, 0xc5, 0x7b, 0x18, - 0x6c, 0x8f, 0xd, 0x87, 0x7a, 0xab, 0x9e, 0xee, 0x13, 0x87, - 0x30, 0x98, 0x67, 0x76, 0xae, 0x62, 0xd9, 0xf8, 0x5e, 0xd6, - 0xd3, 0x5, 0x46, 0x6b, 0x5e, 0x38, 0x96, 0x31, 0x80, 0x31, - 0xf4, 0xa9, 0x28, 0xaf, 0x7a, 0x9d, 0x28, 0x52, 0x56, 0x82, - 0xb1, 0xf4, 0xb4, 0xa8, 0xd3, 0xa2, 0xad, 0x4e, 0x36, 0x10, - 0x63, 0xb5, 0x2d, 0x14, 0x56, 0xa6, 0xe1, 0x45, 0x14, 0x50, - 0x1, 0x45, 0x14, 0x50, 0x2, 0x56, 0x3f, 0x88, 0x74, 0xd6, - 0xbf, 0xb7, 0x21, 0x73, 0xd3, 0x15, 0xb3, 0x45, 0x65, 0x52, - 0x9a, 0xab, 0x17, 0x9, 0x75, 0x31, 0xad, 0x4a, 0x35, 0xa0, - 0xe9, 0xcb, 0x66, 0x78, 0x66, 0xaf, 0xe0, 0x6b, 0x95, 0x99, - 0x98, 0x67, 0x93, 0x9a, 0xe7, 0x6e, 0xfc, 0x3d, 0x71, 0x6e, - 0xc7, 0x35, 0xf4, 0x65, 0xcd, 0x9a, 0xdc, 0xae, 0x8, 0x19, - 0xae, 0x7f, 0x51, 0xf0, 0x72, 0x5d, 0x93, 0x8d, 0xa3, 0xeb, - 0x5f, 0xd, 0x8b, 0xe1, 0xb8, 0xc9, 0xb7, 0x48, 0xfc, 0xe3, - 0x1d, 0xc2, 0x70, 0x95, 0xe5, 0x40, 0xf0, 0x56, 0xb6, 0x78, - 0xcf, 0x34, 0xdc, 0x62, 0xbd, 0x66, 0xf7, 0xe1, 0x93, 0xc8, - 0x49, 0x5d, 0x9f, 0x99, 0xac, 0x9b, 0x8f, 0x86, 0x13, 0x8c, - 0xe0, 0x2f, 0xfd, 0xf4, 0x6b, 0xe6, 0xaa, 0xe4, 0x78, 0xb8, - 0x3d, 0x22, 0x7c, 0x7d, 0x5e, 0x1b, 0xc7, 0x52, 0x7a, 0x40, - 0xf3, 0xbc, 0xe2, 0x8c, 0x8a, 0xec, 0xe7, 0xf8, 0x6d, 0x76, - 0x99, 0xc6, 0xdf, 0xcc, 0xd6, 0x74, 0xfe, 0x5, 0xbc, 0x8c, - 0xf6, 0xfc, 0xcd, 0x79, 0xf3, 0xcb, 0xb1, 0x54, 0xf7, 0x81, - 0xe6, 0x4f, 0x2a, 0xc7, 0x53, 0xde, 0x9b, 0x39, 0xdc, 0x8a, - 0x33, 0x9a, 0xd9, 0x6f, 0x6, 0xde, 0xaf, 0xa7, 0xe6, 0x69, - 0x17, 0xc1, 0xfa, 0x81, 0x3c, 0x5, 0x3f, 0x89, 0xac, 0x3e, - 0xab, 0x88, 0xfe, 0x46, 0x73, 0x7d, 0x4b, 0x15, 0xff, 00, - 0x3e, 0xd9, 0x8f, 0x45, 0x6e, 0xaf, 0x82, 0x35, 0x36, 0xe8, - 0x8b, 0xf9, 0x9a, 0x90, 0x78, 0x1f, 0x53, 0xff, 00, 0x9e, - 0x6b, 0xf9, 0x9a, 0xd1, 0x60, 0xb1, 0x2f, 0xec, 0x32, 0xd6, - 0x5f, 0x8b, 0x7f, 0xf2, 0xed, 0x9c, 0xf1, 0x34, 0x81, 0xb2, - 0x71, 0x8a, 0xec, 0x2d, 0x3c, 0x1, 0xa8, 0x39, 0x1b, 0xa3, - 0x5c, 0x7d, 0x4d, 0x74, 0xfa, 0x5f, 0xc3, 0x82, 0xd8, 0xf3, - 0x51, 0x3f, 0x33, 0x5d, 0xb4, 0x32, 0x7c, 0x5d, 0x77, 0xa4, - 0x6c, 0x7a, 0x58, 0x7c, 0x83, 0x1d, 0x88, 0x76, 0xe5, 0x68, - 0xf3, 0x4b, 0x3d, 0x32, 0x4b, 0xd6, 0x1, 0x41, 0xe6, 0xba, - 0x8d, 0x17, 0xe1, 0xf4, 0xf7, 0x32, 0x6, 0xc9, 0xc5, 0x7a, - 0x55, 0x87, 0x81, 0xad, 0xad, 0x8, 0x25, 0x57, 0xf0, 0xae, - 0x82, 0xd2, 0xce, 0x3b, 0x45, 0xc2, 0x2e, 0x2b, 0xea, 0xf0, - 0x7c, 0x37, 0x18, 0xb4, 0xeb, 0x9f, 0x6d, 0x97, 0xf0, 0x8c, - 0x62, 0xd4, 0xb1, 0x46, 0x6, 0x83, 0xe1, 0x18, 0xb4, 0xf8, - 0xd7, 0xcc, 0x5c, 0x9a, 0xe9, 0x63, 0x85, 0x63, 0x18, 0x51, - 0x8f, 0xa5, 0x3e, 0x8a, 0xfb, 0x6a, 0x34, 0x29, 0xd0, 0x8f, - 0x2d, 0x35, 0x63, 0xf4, 0x4c, 0x3e, 0x16, 0x96, 0x1a, 0xa, - 0x14, 0x95, 0x91, 0x14, 0xa7, 0x2, 0xb1, 0xb5, 0x6, 0xe7, - 0xf0, 0xad, 0x6b, 0x86, 0xc0, 0x35, 0x85, 0xa8, 0xbf, 0xf5, - 0xae, 0x83, 0xa8, 0xc5, 0xbc, 0x7e, 0x4d, 0x73, 0x5a, 0x94, - 0x9d, 0x6b, 0x7a, 0xf6, 0x4e, 0xb5, 0xcb, 0xea, 0x52, 0xf5, - 0xa0, 0xe, 0x7f, 0x52, 0x93, 0xad, 0x71, 0xda, 0xc4, 0xbd, - 0x6b, 0xa8, 0xd4, 0xe5, 0xc6, 0xea, 0xe2, 0xf5, 0x79, 0xb3, - 0x9e, 0x68, 0x3, 0x8c, 0xf1, 0x35, 0xcf, 0x95, 0x6b, 0x2b, - 0xf, 0x4a, 0xf9, 0x47, 0xe2, 0x56, 0xa1, 0xba, 0x49, 0xb1, - 0xea, 0x6b, 0xe9, 0x4f, 0x1b, 0xdf, 0x8, 0x6c, 0xdf, 0x9e, - 0xd5, 0xf2, 0x37, 0xc4, 0x2d, 0x47, 0xcc, 0x9e, 0x45, 0xc9, - 0xe4, 0xd7, 0xcd, 0xe6, 0xd5, 0x2d, 0x14, 0x8f, 0x92, 0xcf, - 0x2a, 0xa5, 0x15, 0x13, 0xcd, 0xb5, 0x49, 0x32, 0x58, 0xfa, - 0x9a, 0xe4, 0xb5, 0x29, 0x32, 0x4d, 0x74, 0x5a, 0x94, 0xbd, - 0x6b, 0x95, 0xd4, 0x65, 0xc9, 0x35, 0xe1, 0xe1, 0x62, 0x7c, - 0xde, 0xa, 0x26, 0x4d, 0xcb, 0x75, 0xae, 0xaf, 0xe0, 0x96, - 0x84, 0xde, 0x24, 0xf8, 0xab, 0xe1, 0xeb, 0x4d, 0xa1, 0xa2, - 0x17, 0x4a, 0xf2, 0xf3, 0x8c, 0x20, 0x3c, 0x9a, 0xe4, 0x6e, - 0x1b, 0x93, 0x5e, 0xf9, 0xfb, 0x14, 0x78, 0x62, 0x4d, 0x67, - 0xe2, 0x36, 0xa1, 0xa9, 0x85, 0xd, 0x1d, 0x8d, 0xb0, 0x8c, - 0x82, 0x70, 0x4b, 0x48, 0x78, 0x3f, 0xf8, 0xe1, 0xfc, 0xeb, - 0xe9, 0x30, 0xf1, 0xbc, 0x91, 0xf5, 0xb8, 0x58, 0xde, 0x49, - 0x1f, 0xa8, 0x5f, 0xc, 0x74, 0xf3, 0x63, 0xe1, 0x8b, 0x7c, - 0xf5, 0x90, 0xef, 0xfc, 0xf, 0x4a, 0xed, 0xe1, 0x1c, 0xd6, - 0x4e, 0x89, 0x67, 0xf6, 0x1d, 0x3e, 0xd6, 0xdf, 0x8f, 0xdd, - 0x46, 0xa9, 0xc7, 0xb0, 0x15, 0xb5, 00, 0xe6, 0xbd, 0xc3, - 0xe9, 0xb, 0xb0, 0xae, 0x5, 0x5f, 0x81, 0x72, 0x5, 0x54, - 0x89, 0x6a, 0xf4, 0x2b, 0xd2, 0x80, 0x2f, 0x40, 0x3a, 0x55, - 0xc8, 0x85, 0x56, 0x85, 0x71, 0x8a, 0xb9, 0x8, 0xa0, 0xb, - 0x71, 0xe, 0x5, 0x5b, 0x8c, 0x55, 0x78, 0x85, 0x5a, 0x8c, - 0x50, 0x4, 0xd1, 0x8a, 0x99, 0x6a, 0x34, 0x15, 0x2a, 0xf6, - 0xa0, 0x7, 0x8e, 0xd5, 0x22, 0xf5, 0xa6, 0x2d, 0x3d, 0x7a, - 0x50, 0x4, 0x83, 0xa5, 0x14, 0xa, 0x28, 0x1, 0xcb, 0x4b, - 0x48, 0x3a, 0x52, 0xd0, 0x1, 0x45, 0x14, 0x50, 0x6, 0x5c, - 0x86, 0xab, 0x48, 0x6a, 0xc4, 0x9d, 0x6a, 0xac, 0x94, 0x1, - 0x5e, 0x53, 0x5f, 0x9c, 0xda, 0xc5, 0xdf, 0xfc, 0x2c, 0xbf, - 0xda, 0x33, 0x50, 0xbc, 0x4f, 0xde, 0x5b, 0xc9, 0x7c, 0x16, - 0x20, 0x79, 0xf9, 0x17, 0xb1, 0xc6, 0x47, 0xad, 0x7d, 0xd9, - 0xf1, 0x6b, 0xc4, 0xcb, 0xe0, 0xef, 0x87, 0x7a, 0xf6, 0xb0, - 0xd2, 0xb4, 0x4d, 0x6b, 0x6a, 0xee, 0x85, 0x5b, 0x6b, 0x16, - 0xc7, 0xca, 0x1, 0xf5, 0x27, 0x8a, 0xf8, 0xab, 0xf6, 0x4d, - 0xf0, 0xe3, 0xea, 0xde, 0x30, 0x96, 0xfd, 0xd3, 0x72, 0xc4, - 0x37, 0x12, 0xc3, 0x27, 0x24, 0x8a, 0xf8, 0xcc, 0xf9, 0xfb, - 0x7a, 0xd8, 0x7c, 0x22, 0xea, 0xee, 0xfe, 0x47, 0xe7, 0xfc, - 0x4d, 0x2f, 0xac, 0xe2, 0x30, 0xb8, 0x15, 0xf6, 0xa5, 0x77, - 0xe8, 0x8f, 0xb9, 0xfc, 0x17, 0xa7, 0xad, 0x96, 0x9f, 0x6f, - 0x1a, 0xae, 0xd0, 0x88, 0x6, 0x31, 0xe8, 0x5, 0x77, 0x56, - 0xab, 0x85, 0xcd, 0x73, 0xfa, 0x15, 0xbf, 0x97, 0xa, 0xc, - 0x76, 0xae, 0x96, 0x21, 0x84, 0xaf, 0xb1, 0x8a, 0xe5, 0x49, - 0x1f, 0x7b, 0x8, 0xf2, 0xc5, 0x44, 0xf3, 0xff, 00, 0x8d, - 0xf2, 0xfd, 0x9f, 0xc0, 0xd7, 0xf3, 0x31, 0x21, 0x23, 0x89, - 0x98, 0xe3, 0xd6, 0xbf, 0x9d, 0xcf, 0x8e, 0xba, 0xab, 0xeb, - 0x5f, 0x11, 0x75, 0x5b, 0xa6, 0x24, 0x83, 0x26, 0x1, 0x35, - 0xfd, 0x9, 0x7e, 0xd2, 0x30, 0xdc, 0x5d, 0x7c, 0x2e, 0xd5, - 0x6d, 0xad, 0x43, 0x19, 0xa6, 0x4d, 0xa3, 0x68, 0x24, 0xf5, - 0x1e, 0x95, 0xfc, 0xf9, 0xfc, 0x6f, 0xf0, 0xfc, 0xda, 0x7, - 0x8b, 0xee, 0x6d, 0xa6, 0x3b, 0xa4, 0xc, 0x4b, 0x1c, 0x7d, - 0x2a, 0x8b, 0x3c, 0xdc, 0x70, 0x6b, 0xaf, 0xf0, 0xff, 00, - 0xc4, 0x3b, 0xcd, 0x1, 0x54, 0x40, 0xec, 0x9b, 0x7f, 0xbb, - 0x9f, 0xf1, 0xae, 0x42, 0x8a, 00, 0xef, 0xb5, 0xef, 0x8b, - 0x7a, 0x9e, 0xb9, 0x64, 0xd0, 0x49, 0x73, 0x31, 0xd, 0xd4, - 0x12, 0x71, 0xfc, 0xeb, 0x82, 0x76, 0x2e, 0xc5, 0x8f, 0x24, - 0x9c, 0xd2, 0x51, 0x40, 0x1d, 0xef, 0x82, 0xfe, 0x23, 0x3f, - 0x85, 0xca, 0x79, 0x72, 0x48, 0x9b, 0x7f, 0xbb, 0xff, 00, - 0xeb, 0xaf, 0x4e, 0xb6, 0xfd, 0xa8, 0x6f, 0xa2, 0x1, 0x7e, - 0xdd, 0x70, 00, 0xe3, 0x4, 0x9f, 0xfe, 0x2a, 0xbe, 0x74, - 0xa2, 0x80, 0x3e, 0x9e, 0xb6, 0xfd, 0xab, 0x2f, 0x53, 0x1f, - 0xf1, 0x30, 0xb8, 0x5f, 0xa3, 0x1f, 0xfe, 0x2a, 0xb4, 0xed, - 0xff, 00, 0x6b, 0x5b, 0xd1, 0x8f, 0xf8, 0x9a, 0x5c, 0xaf, - 0xfc, 0xf, 0xff, 00, 0xb2, 0xaf, 0x93, 0xa8, 0xdc, 0x7d, - 0x4d, 00, 0x7d, 0x8f, 0x6b, 0xfb, 0x5d, 0xde, 0x86, 0x4, - 0x6a, 0xd2, 0xe7, 0xfe, 0xba, 0x7f, 0xf6, 0x75, 0xbb, 0xa7, - 0x7e, 0xd7, 0x77, 0xf3, 0xcf, 0x14, 0x6b, 0xab, 0xcf, 0x96, - 0x20, 0x7f, 0xac, 0xff, 00, 0xec, 0xab, 0xe1, 0xcd, 0xec, - 0x3f, 0x88, 0xfe, 0x75, 0xd2, 0x78, 0xe, 0xc2, 0x5d, 0x53, - 0xc4, 0x36, 0xf1, 0x82, 0xcc, 0x1, 0xfa, 0x8a, 00, 0xfd, - 0xb4, 0xfd, 0x8e, 0xfe, 0x22, 0x5e, 0xf8, 0xee, 0xf9, 0xc, - 0xb7, 0x4f, 0x3a, 0x2a, 0x2, 0x77, 0x36, 0x73, 0xd3, 0xdc, - 0xd7, 0xd9, 0xc2, 0xbe, 0x36, 0xff, 00, 0x82, 0x7b, 0x78, - 0x11, 0xb4, 0x4f, 0xa, 0x49, 0x7d, 0x2a, 0x6d, 0x2e, 0x83, - 0xef, 0x2f, 0x3f, 0xfd, 0x6e, 0x95, 0xf6, 0x4d, 00, 0x67, - 0xeb, 0xba, 0xa2, 0x69, 0x1a, 0x6c, 0xd7, 0x2e, 0xdb, 0x42, - 0xf, 0x51, 0x5f, 0xb, 0x7e, 0xd0, 0xbf, 0xb5, 0xa4, 0xbe, - 0x17, 0xd6, 0xd, 0xa5, 0xae, 0xa0, 0xf1, 0x90, 0xf8, 0xf9, - 0x5f, 0xff, 00, 0xb3, 0xaf, 0xa8, 0xbf, 0x68, 0x6f, 0x10, - 0xd, 0x1b, 0xc1, 0xf3, 0x8f, 0x30, 0xa1, 0x2a, 0x5b, 0xe5, - 0x6c, 0x1e, 0x86, 0xbf, 0x6, 0x3f, 0x69, 0x8f, 0x1d, 0x5d, - 0x6b, 0x7f, 0x11, 0xaf, 0x7c, 0xab, 0xb9, 0x8a, 0x46, 0xe7, - 0xee, 0xca, 0x71, 0xf8, 0x73, 0x40, 0x1f, 0x78, 0xd9, 0x7e, - 0xdb, 0x7a, 0x8a, 0xf5, 0xd5, 0x25, 0xff, 00, 0xbe, 0xff, - 00, 0xfb, 0x3a, 0xdd, 0xb4, 0xfd, 0xb8, 0x2f, 0x94, 0x8f, - 0xf8, 0x99, 0xca, 0x7e, 0x92, 0x7f, 0xf6, 0x75, 0xf9, 0x32, - 0x9e, 0x21, 0xd4, 0x53, 0xa5, 0xe4, 0xff, 00, 0xf7, 0xf5, - 0xbf, 0xc6, 0xa7, 0x5f, 0x16, 0xea, 0x89, 0xd2, 0xf2, 0x5f, - 0xfb, 0xf8, 0xdf, 0xe3, 0x40, 0x1f, 0xae, 0xf6, 0x9f, 0xb7, - 0x1d, 0xe7, 00, 0xea, 0x73, 0x7f, 0xdf, 0x63, 0xff, 00, - 0x8b, 0xad, 0x8b, 0x4f, 0xdb, 0x8e, 0xe3, 0x1c, 0xea, 0xe, - 0x7f, 0xe0, 0x43, 0xff, 00, 0x8b, 0xaf, 0xc7, 0x88, 0xfc, - 0x73, 0xab, 0xc6, 0x78, 0xbb, 0x97, 0xfe, 0xfe, 0xb7, 0xf8, - 0xd5, 0x94, 0xf8, 0x8d, 0xac, 0x46, 0x31, 0xf6, 0x87, 0x3f, - 0xf6, 0xd5, 0xbf, 0xc6, 0x80, 0x3f, 0x65, 0xad, 0xff, 00, - 0x6e, 0x6, 0x38, 0xdd, 0x7b, 0x27, 0xe8, 0x7f, 0xf6, 0x7a, - 0xd6, 0xb4, 0xfd, 0xb6, 0xe3, 0x6c, 0x66, 0xeb, 0x3c, 0x7f, - 0x10, 0x1f, 0xfc, 0x5d, 0x7e, 0x2e, 0x47, 0xf1, 0x4f, 0x59, - 0x8f, 0xfe, 0x5b, 0x49, 0xff, 00, 0x7f, 0x9b, 0xfc, 0x6a, - 0xdc, 0x5f, 0x18, 0x75, 0x88, 0xcf, 0xdf, 0x90, 0xff, 00, - 0xdb, 0x66, 0xff, 00, 0x1a, 00, 0xfd, 0xb2, 0xb5, 0xfd, - 0xb4, 0x6c, 0xca, 0x82, 0xd3, 0x29, 0xff, 00, 0xbe, 0x7f, - 0xf8, 0xba, 0xd6, 0xb5, 0xfd, 0xb2, 0x74, 0xc7, 0x3, 0x74, - 0xb1, 0xf3, 0xeb, 0xb4, 0x7f, 0xec, 0xf5, 0xf8, 0x89, 0xf, - 0xc6, 0xfd, 0x5a, 0x30, 0x32, 0x66, 0x3f, 0x49, 0x9b, 0xfc, - 0x6a, 0xec, 0x3f, 0x1f, 0x35, 0x48, 0xcf, 0x26, 0x73, 0xff, - 00, 0x6d, 0xda, 0x80, 0x3f, 0x70, 0xed, 0xbf, 0x6b, 0xbd, - 0x22, 0x4f, 0xbc, 0xf1, 0xfe, 0x6b, 0xff, 00, 0xc5, 0xd6, - 0x9d, 0xbf, 0xed, 0x5d, 0xa1, 0x49, 0xf7, 0x9d, 0x7f, 0x35, - 0xff, 00, 0xe2, 0xeb, 0xf0, 0xde, 0x1f, 0xda, 0x23, 0x51, - 0x8c, 0xf3, 0xf6, 0x8f, 0xc2, 0x73, 0xfe, 0x35, 0x7a, 0x1f, - 0xda, 0x4a, 0xf9, 0x47, 0x2f, 0x74, 0x3f, 0xed, 0xb1, 0xff, - 00, 0x1a, 00, 0xfd, 0xcc, 0xb7, 0xfd, 0xa7, 0x7c, 0x3d, - 0x2e, 0x9, 0x75, 0xfc, 0x19, 0x3f, 0xf8, 0xba, 0xd1, 0x87, - 0xf6, 0x8b, 0xf0, 0xd4, 0xa4, 0x66, 0x42, 0x33, 0xfe, 0xd2, - 0x7f, 0xf1, 0x55, 0xf8, 0x67, 0x7, 0xed, 0x39, 0x76, 0xa1, - 0x73, 0x25, 0xc0, 0xff, 00, 0xb6, 0xe7, 0xfc, 0x6b, 0x46, - 0xdb, 0xf6, 0xa6, 0x9d, 0x59, 0x77, 0x4f, 0x72, 0xa3, 0xfe, - 0xbe, 0xf, 0xf8, 0xd0, 0x7, 0xee, 0x5c, 0x1f, 0x1d, 0xbc, - 0x37, 0x2e, 0x3f, 0x7f, 0xd7, 0xfd, 0xb4, 0xff, 00, 0xe2, - 0xaa, 0xec, 0x5f, 0x19, 0xbc, 0x39, 0x20, 0xcf, 0xda, 0x31, - 0xff, 00, 0x2, 0x4f, 0xf1, 0xaf, 0xc3, 0xcb, 0x7f, 0xda, - 0xba, 0x54, 0xe7, 0xed, 0x93, 0xf, 0xad, 0xc1, 0xff, 00, - 0x1a, 0xd2, 0xb7, 0xfd, 0xad, 0xdd, 0x71, 0xfe, 0x9f, 0x38, - 0x3f, 0xf5, 0xf4, 0x7f, 0xc6, 0x80, 0x3f, 0x6e, 0xa2, 0xf8, - 0xaf, 0xe1, 0xf9, 0x7a, 0x5d, 0x1, 0xf5, 0x65, 0xff, 00, - 0x1a, 0xb9, 0x17, 0xc4, 0x5d, 0xe, 0x53, 0xc5, 0xe4, 0x7f, - 0xf7, 0xda, 0xff, 00, 0x8d, 0x7e, 0x25, 0x5b, 0x7e, 0xd7, - 0xae, 0x98, 0xff, 00, 0x89, 0x8c, 0xff, 00, 0x8d, 0xd1, - 0xff, 00, 0x1a, 0xd5, 0xb6, 0xfd, 0xb1, 0x48, 0x23, 0x3a, - 0x9c, 0x83, 0xfe, 0xde, 0xcf, 0xf8, 0xd0, 0x7, 0xed, 0x4a, - 0x78, 0xd7, 0x47, 0x7e, 0x97, 0x91, 0x7f, 0xdf, 0xc5, 0xff, - 00, 0x1a, 0xb3, 0x1f, 0x89, 0xb4, 0xc9, 0x7e, 0xed, 0xe4, - 0x27, 0xfe, 0xda, 0x2f, 0xf8, 0xd7, 0xe3, 0x1d, 0xa7, 0xed, - 0x96, 0xca, 0x72, 0x35, 0x49, 0x7f, 0xf0, 0x2c, 0xff, 00, - 0xf1, 0x55, 0xb1, 0x69, 0xfb, 0x68, 0xb0, 0xff, 00, 0x98, - 0x9b, 0xff, 00, 0xe0, 0x51, 0xff, 00, 0xe2, 0xa8, 0x3, - 0xf6, 0x2d, 0x35, 0x9b, 0x27, 0xe9, 0x73, 0xf, 0xfd, 0xfc, - 0x1f, 0xe3, 0x52, 0xad, 0xfd, 0xb3, 0xf4, 0x9e, 0x3f, 0xfb, - 0xec, 0x57, 0xe4, 0x4d, 0xa7, 0xed, 0xaa, 0xc0, 0x8f, 0xf8, - 0x99, 0x4b, 0xff, 00, 0x81, 0x67, 0xff, 00, 0x8a, 0xad, - 0x9b, 0x4f, 0xdb, 0x71, 0xd7, 0xfe, 0x62, 0x4f, 0x8f, 0x7b, - 0xa3, 0xfe, 0x34, 0x1, 0xfa, 0xc2, 0x2e, 0x22, 0x23, 0x89, - 0x10, 0xff, 00, 0xc0, 0x85, 0x38, 0x48, 0xa7, 0xa3, 0x3, - 0xf4, 0x35, 0xf9, 0x67, 0x6b, 0xfb, 0x70, 0x9c, 0x1, 0xf6, - 0xf7, 0xfc, 0x2f, 0xf, 0xf8, 0xd6, 0xcd, 0xa7, 0xed, 0xc6, - 0x1, 0x1f, 0xe9, 0xf2, 0x7e, 0x37, 0x47, 0xfc, 0x68, 0x3, - 0xf4, 0xd3, 0x34, 0x66, 0xbf, 0x39, 0x2d, 0x7f, 0x6e, 0x74, - 0x7, 0x9b, 0xd7, 0x3f, 0xf6, 0xf5, 0xff, 00, 0xd7, 0xad, - 0xab, 0x2f, 0xdb, 0xa6, 0xd, 0xa3, 0x75, 0xe3, 0xf5, 0xfe, - 0x2b, 0x9f, 0xfe, 0xbd, 00, 0x7e, 0x80, 0xe6, 0x8c, 0xd7, - 0xc3, 0x16, 0xdf, 0xb7, 0x45, 0x9f, 0x19, 0xba, 0xcf, 0xfd, - 0xbc, 0x7f, 0xf5, 0xeb, 0x62, 0xd3, 0xf6, 0xe4, 0xd3, 0x9b, - 0x1b, 0xa7, 0x1f, 0x8c, 0xe3, 0xfc, 0x68, 0x3, 0xec, 0xfa, - 0x33, 0x5f, 0x23, 0x5a, 0xfe, 0xdb, 0xfa, 0x43, 0x81, 0xba, - 0x58, 0xcf, 0xfd, 0xb6, 0x1f, 0xe3, 0x5a, 0xd6, 0xff, 00, - 0xb6, 0xae, 0x84, 0xf8, 0xcc, 0x91, 0x1f, 0xfb, 0x6c, 0xb4, - 0x1, 0xf5, 0x25, 0x15, 0xf3, 0x7d, 0xb7, 0xed, 0x95, 0xe1, - 0xb7, 0x20, 0x34, 0x90, 0x8f, 0xac, 0xcb, 0x5a, 0x96, 0xff, - 00, 0xb5, 0xdf, 0x85, 0xa5, 0x3, 0x32, 0xc4, 0x3e, 0x93, - 0xad, 00, 0x7b, 0xe5, 0x15, 0xe2, 0xb0, 0x7e, 0xd5, 0x3e, - 0x13, 0x97, 0x19, 0xb8, 0x45, 0xcf, 0xfd, 0x36, 0x4f, 0xf1, - 0xab, 0xf0, 0xfe, 0xd2, 0xfe, 0x11, 0x94, 0x81, 0xf6, 0xb8, - 0xc7, 0xfd, 0xb6, 0x4f, 0xf1, 0xa0, 0xf, 0x5b, 0xa2, 0xbc, - 0xca, 0x2f, 0xda, 0x13, 0xc2, 0x32, 0xe3, 0xfd, 0x39, 0x7, - 0xfd, 0xb4, 0x4f, 0xf1, 0xab, 0xb1, 0x7c, 0x71, 0xf0, 0x9c, - 0xbd, 0x35, 0x28, 0x87, 0xfc, 0xd, 0x7f, 0xc6, 0x80, 0x3d, - 0x2, 0x8a, 0xe2, 0xe2, 0xf8, 0xbd, 0xe1, 0x79, 0xba, 0x6a, - 0x70, 0x8f, 0xab, 0xaf, 0xf8, 0xd5, 0xb8, 0xfe, 0x26, 0x78, - 0x6a, 0x51, 0xc6, 0xad, 0x6e, 0x3e, 0xb2, 0xf, 0xf1, 0xa0, - 0xe, 0xa6, 0x8a, 0xe7, 0xe3, 0xf1, 0xee, 0x81, 0x27, 0xdd, - 0xd5, 0x6d, 0x4f, 0xfd, 0xb4, 0x1f, 0xe3, 0x56, 0x17, 0xc5, - 0xfa, 0x2b, 0xf4, 0xd4, 0xed, 0x8f, 0xfd, 0xb4, 0x14, 0x1, - 0xb1, 0x45, 0x66, 0xaf, 0x89, 0x34, 0xa7, 0xfb, 0xba, 0x8d, - 0xb1, 0xff, 00, 0xb6, 0xa2, 0xa5, 0x5d, 0x66, 0xc5, 0x87, - 0x17, 0x90, 0x1f, 0xa4, 0x82, 0x80, 0x2e, 0xd1, 0x55, 0x86, - 0xa1, 0x6c, 0xdd, 0x2e, 0x22, 0x3f, 0x47, 0x15, 0x22, 0xdc, - 0xc4, 0xdd, 0x25, 0x46, 0xfa, 0x30, 0xa0, 0x9, 0x68, 0xa6, - 0x9, 0x50, 0xf4, 0x60, 0x7f, 0x1a, 0x70, 0x60, 0x7a, 0x1a, - 00, 0x5a, 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa2, 0x80, 0xa, - 0x28, 0xa2, 0x80, 0x10, 0x52, 0xd1, 0x45, 00, 0x21, 0xa2, - 0x96, 0x8a, 00, 0x29, 0x3f, 0x1a, 0x5a, 0x28, 0x1, 0x31, - 0x40, 0x18, 0xa5, 0xa2, 0x80, 0xa, 0x28, 0xa2, 0x80, 0xa, - 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa2, - 0x80, 0xa, 0x28, 0xa2, 0x80, 0xa, 0x4c, 0x52, 0xd1, 0x40, - 0x9, 0x8a, 0x6b, 0x44, 0xad, 0xd4, 0xa, 0x7d, 0x14, 0x1, - 0x3, 0xd9, 0xc6, 0xfd, 0x56, 0xaa, 0x4b, 0xa2, 0xc1, 0x26, - 0x72, 0xa2, 0xb4, 0xa8, 0xac, 0xe5, 0x4e, 0x12, 0xdd, 0x19, - 0x4a, 0x94, 0x27, 0xf1, 0x23, 0x1c, 0xf8, 0x7a, 0x3, 0xfc, - 0x23, 0xf2, 0xa5, 0x5d, 0x2, 0x15, 0x39, 0xa, 0x3f, 0x2a, - 0xd6, 0xc5, 0x18, 0xac, 0xfe, 0xaf, 0x4f, 0xb1, 0x8f, 0xd5, - 0x68, 0xff, 00, 0x29, 0x45, 0x34, 0xa8, 0x93, 0xf8, 0x47, - 0xe5, 0x52, 0xa6, 0x9f, 0xa, 0xff, 00, 0xcb, 0x35, 0xfc, - 0xaa, 0xce, 0x29, 0x6b, 0x45, 0x4e, 0x2b, 0xa1, 0xb2, 0xa5, - 0x5, 0xb2, 0x23, 0x5b, 0x78, 0x97, 0xa4, 0x6a, 0x3f, 0xa, - 0x78, 0x50, 0xbd, 00, 0x1f, 0x4a, 0x5a, 0x2a, 0xec, 0x69, - 0x64, 0x84, 0xa2, 0x96, 0x8a, 0x63, 0xa, 0x28, 0xa4, 0x63, - 0x80, 0x68, 0x2, 0x9d, 0xd3, 0x70, 0x79, 0xae, 0x7f, 0x51, - 0x7a, 0xda, 0xbc, 0x6e, 0x2b, 0x9e, 0xd4, 0x1e, 0x80, 0x31, - 0x6f, 0x9f, 0x83, 0x5c, 0xae, 0xa5, 0x27, 0x5a, 0xe8, 0xb5, - 0x19, 0x38, 0x35, 0xca, 0x6a, 0x32, 0x75, 0xa0, 0xe, 0x7b, - 0x54, 0x93, 00, 0xd7, 0x13, 0xab, 0xc9, 0xd6, 0xba, 0xbd, - 0x5a, 0x5c, 0x3, 0x5c, 0x46, 0xb1, 0x2e, 0x33, 0x40, 0x1e, - 0x57, 0xf1, 0x22, 0xf7, 0x64, 0x2e, 0xb9, 0xed, 0x5f, 0x24, - 0xf8, 0xd2, 0xe7, 0xcd, 0xbc, 0x71, 0x9c, 0xf3, 0x5f, 0x49, - 0x7c, 0x4d, 0xbf, 0x4, 0xcb, 0x86, 0xe3, 0xeb, 0x5f, 0x2c, - 0xf8, 0x92, 0xe3, 0xcc, 0xbc, 0x90, 0xe7, 0xbd, 0x7c, 0x56, - 0x69, 0x3e, 0x6a, 0x89, 0x23, 0xf3, 0xcc, 0xea, 0xa7, 0x3d, - 0x44, 0x8e, 0x4b, 0x52, 0x7e, 0xd, 0x72, 0xf7, 0xad, 0x96, - 0x35, 0xbf, 0xa9, 0xc9, 0xc3, 0x57, 0x35, 0x74, 0xf9, 0x26, - 0xa7, 0xd, 0x1d, 0x9, 0xc1, 0xc7, 0x43, 0x3e, 0x76, 0xeb, - 0x5f, 0x73, 0xff, 00, 0xc1, 0x3e, 0xfc, 0x19, 0x9d, 0x25, - 0xb5, 0x27, 0x41, 0xba, 0xf6, 0xec, 0x2, 0x71, 0xd6, 0x34, - 0xe9, 0xce, 0x3f, 0xda, 0x35, 0xf0, 0xad, 0xc1, 0xeb, 0x5f, - 0xaa, 0x3f, 0xb1, 0x6f, 0x84, 0x3f, 0xb0, 0x3c, 0xb, 0xa3, - 0xc4, 0xe3, 0x32, 0x41, 0x6b, 0xb9, 0xce, 0x31, 0x96, 0x76, - 0x38, 0x3f, 0x96, 0x2b, 0xe8, 0xf0, 0xab, 0x5b, 0x9f, 0x59, - 0x82, 0x8d, 0xe5, 0x73, 0xea, 0x38, 0x17, 0xa7, 0xb7, 0x15, - 0xa1, 0x6e, 0x7, 0x15, 0x4a, 0x5, 0xe9, 0x5a, 0x56, 0xe3, - 0x81, 0xc5, 0x7a, 0x87, 0xb2, 0x5c, 0x85, 0x79, 0xab, 0xf0, - 0x2f, 0x4a, 0xa7, 0x8, 0xe6, 0xaf, 0xdb, 0xaf, 0x2, 0x80, - 0x2e, 0xc4, 0x3a, 0x55, 0xc8, 0x47, 0x22, 0xab, 0x44, 0xb5, - 0x72, 0x11, 0x40, 0x16, 0xa3, 0x15, 0x66, 0x31, 0xc8, 0xa8, - 0x22, 0x1d, 0x2a, 0xcc, 0x74, 0x1, 0x3a, 0x8e, 0x2a, 0x45, - 0xa6, 0x28, 0xc1, 0xa9, 0x16, 0x80, 0x1c, 0xb5, 0x22, 0x8e, - 0x29, 0x8b, 0x52, 0x2f, 0x5a, 00, 0x75, 0x14, 0x50, 0x28, - 0x1, 0xc3, 0x8a, 0x5a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, - 0xc, 0x89, 0xd, 0x56, 0x91, 0xaa, 0x79, 0xd, 0x55, 0x90, - 0xe6, 0x80, 0x3e, 0x72, 0xfd, 0xb7, 0x7c, 0x58, 0xda, 0x37, - 0xc2, 0xe8, 0x74, 0x88, 0xe5, 0x54, 0x93, 0x57, 0xb8, 0x11, - 0x8c, 0x83, 0xb8, 0x84, 0x65, 0x66, 0x3, 0xb7, 0x4e, 0xb9, - 0xae, 0x7f, 0xf6, 0x40, 0xf0, 0xb7, 0xd8, 0xbc, 0x3b, 0x25, - 0xf3, 0x46, 0x43, 0x4c, 0xc0, 0x6, 0x3d, 0xc5, 0x70, 0xdf, - 0xb6, 0xd6, 0xb6, 0x35, 0xbf, 0x89, 0xba, 0x36, 0x89, 0xf, - 0xce, 0x6c, 0x2d, 0xf2, 0xe0, 0x8e, 0x3, 0xbe, 0xf, 0xfe, - 0x82, 0x45, 0x7d, 0x23, 0xf0, 0x37, 0xc3, 0xa3, 0x44, 0xf0, - 0x86, 0x9d, 00, 0x50, 0xa4, 0x46, 0xa4, 0xfd, 0x6b, 0xe2, - 0xa9, 0x7f, 0xb5, 0x67, 0x73, 0x93, 0xda, 0x9a, 0xb1, 0xf9, - 0xed, 0x1f, 0xf6, 0xee, 0x22, 0xa9, 0x37, 0xb5, 0x25, 0x6f, - 0x9b, 0x3d, 0x7f, 0x4c, 0x8b, 0x6c, 0x6a, 0x2b, 0x60, 0xc, - 0xa, 0xa1, 0x63, 0x1e, 00, 0xf6, 0xad, 0xa, 0xfb, 0x53, - 0xf4, 0x23, 0xb, 0xc6, 0x5a, 0x22, 0xeb, 0xba, 0x1d, 0xc5, - 0xb9, 0x1b, 0x89, 0x43, 0x81, 0x5f, 0x8f, 0x3f, 0xb6, 0x37, - 0xec, 0xec, 0xda, 0x3e, 0xb5, 0x73, 0x77, 0x67, 0x61, 0x2c, - 0xf3, 0x48, 0xc7, 0x24, 0x30, 0xe3, 0xa7, 0xbd, 0x7e, 0xd1, - 0x32, 0x86, 0x4, 0x11, 0x90, 0x6b, 0x8a, 0xf1, 0x87, 0xc2, - 0x9d, 0x7, 0xc5, 0x50, 0x48, 0x6e, 0xac, 0xc4, 0x92, 0x63, - 0x8f, 0x9d, 0x87, 0xf2, 0x34, 0x1, 0xfc, 0xda, 0x6a, 0x9e, - 00, 0xd7, 0x2d, 0x2e, 0x1c, 0x1d, 0x3a, 0x44, 0x50, 0x71, - 0x92, 0x47, 0xf8, 0xd6, 0x54, 0xde, 0x1c, 0xd4, 0xad, 0xc6, - 0x64, 0xb4, 0x75, 0x1e, 0xf8, 0xaf, 0xdb, 0xef, 0x88, 0x9f, - 0xb2, 0x65, 0x96, 0xa1, 0x73, 0x21, 0xb4, 0xb0, 0x50, 0xe, - 0x4e, 0x37, 0x1f, 0xfe, 0x2a, 0xbe, 0x59, 0xf8, 0xe7, 0xfb, - 0x34, 0x8f, 0x7, 0xe8, 0x17, 0x97, 0xaf, 0x6a, 0x91, 0xa2, - 0x21, 0x39, 0xc9, 0xf4, 0x3f, 0xed, 0x7b, 0x50, 0x7, 0xe6, - 0xbc, 0x91, 0xb4, 0x4c, 0x55, 0x86, 0x8, 0xed, 0x42, 0xc6, - 0xcf, 0xd0, 0x66, 0xaf, 0xf8, 0x80, 0x8f, 0xed, 0x7b, 0x95, - 0x5f, 0xba, 0xb2, 0x30, 0x1c, 0xfb, 0xd7, 0xa9, 0xfc, 0x16, - 0xf8, 0x47, 0x7b, 0xe3, 0x85, 0x49, 0x21, 0x80, 0x4a, 0x8c, - 0x78, 0xc9, 0xc6, 0x7a, 0xfb, 0xd0, 0x7, 0x8f, 0x79, 0x2e, - 0x7, 0xdd, 0x34, 0xd2, 0xa4, 0x76, 0xaf, 0xbe, 0xe0, 0xfd, - 0x8e, 0x6f, 0xcd, 0x94, 0x6c, 0x74, 0xf4, 0xc9, 00, 0xfd, - 0xfc, 0xff, 00, 0xec, 0xd5, 0x9d, 0x77, 0xfb, 0x1f, 0x5e, - 0xc, 0xff, 00, 0xa0, 0x27, 0xe2, 0xdf, 0xfd, 0x95, 00, - 0x7c, 0x29, 0x45, 0x7d, 0xab, 0x71, 0xfb, 0x21, 0x5d, 0xae, - 0x7f, 0xe2, 0x5e, 0x87, 0xe8, 0xdf, 0xfd, 0x95, 0x64, 0xdd, - 0x7e, 0xc9, 0x37, 0x6b, 0xd6, 0xc5, 0x47, 0xe3, 0xff, 00, - 0xd9, 0x50, 0x7, 0xc8, 0x15, 0xeb, 0x7f, 0xb3, 0xf6, 0x87, - 0xfd, 0xa7, 0xe2, 0x38, 0x49, 0x5d, 0xd9, 0x90, 0x1, 0x5e, - 0x9f, 0x71, 0xfb, 0x27, 0x5d, 0xa9, 0xff, 00, 0x8f, 0x18, - 0xff, 00, 0xef, 0xaf, 0xfe, 0xca, 0xbd, 0xd7, 0xf6, 0x63, - 0xfd, 0x95, 0xe7, 0xb4, 0xf1, 0x5, 0x8c, 0x8f, 0x6c, 0xa8, - 0x4, 0x9b, 0x89, 0xdd, 0xd3, 0x93, 0xfe, 0xd5, 00, 0x7e, - 0x97, 0xfe, 0xcd, 0x3e, 0x18, 0x5f, 0xe, 0x7c, 0x35, 0xb1, - 0x51, 0x19, 0x8d, 0xa4, 0x50, 0xc4, 0x1e, 0xa7, 0x8e, 0xf5, - 0xeb, 0x27, 0xa5, 0x66, 0x78, 0x67, 0x49, 0x4d, 0xf, 0x43, - 0xb4, 0xb2, 0x45, 0xda, 0x22, 0x40, 0xb8, 0xad, 0x27, 0x3b, - 0x54, 0x9f, 0x41, 0x40, 0x1f, 0x26, 0x7e, 0xdb, 0x7e, 0x33, - 0x5d, 0x1f, 0xc3, 0x37, 0x88, 0x25, 0xb, 0xb6, 0x12, 0x30, - 0x3f, 0x1a, 0xfc, 0x29, 0xf1, 0xae, 0xaa, 0xda, 0xcf, 0x89, - 0xb5, 0xb, 0xa6, 0x70, 0xe5, 0xe4, 0x38, 0x23, 0xa1, 0xe7, - 0xb5, 0x7e, 0xbd, 0x7e, 0xdf, 0x50, 0x5f, 0x6a, 0xda, 0x5d, - 0xe4, 0x30, 0x37, 0xdf, 0xc, 0x36, 0xfe, 0x75, 0xf9, 0x6f, - 0x73, 0xf0, 0x47, 0x59, 0x2c, 0xce, 0xc0, 0x64, 0xf2, 0x4e, - 0x47, 0xf8, 0xd0, 0x7, 0x98, 0x51, 0x5e, 0x81, 0x37, 0xc1, - 0x9d, 0x6a, 0x3e, 0x8a, 0xf, 0xe2, 0x3f, 0xc6, 0xaa, 0x3f, - 0xc2, 0x6d, 0x6d, 0x3f, 0xe5, 0x9a, 0xff, 00, 0xdf, 0x42, - 0x80, 0x38, 0xaa, 0x2b, 0xac, 0x93, 0xe1, 0x96, 0xb7, 0x1f, - 0x58, 0x57, 0xfe, 0xfa, 0x15, 0x5d, 0xfe, 0x1f, 0x6b, 0x28, - 0x70, 0x6d, 0xc7, 0xfd, 0xf4, 0x28, 0x3, 0x9b, 0xa2, 0xb7, - 0x1f, 0xc1, 0x5a, 0xb2, 0x75, 0xb6, 0xff, 00, 0xc7, 0x85, - 0x42, 0xde, 0x15, 0xd4, 0xd3, 0xad, 0xb1, 0xfc, 0xc5, 00, - 0x64, 0xd1, 0x5a, 0xf, 0xa0, 0x5f, 0xa1, 0xe6, 0xdd, 0xbf, - 0x30, 0x6a, 0x26, 0xd2, 0xae, 0xd7, 0xac, 0xd, 0x40, 0x15, - 0x28, 0xa9, 0xda, 0xc2, 0xe1, 0x7a, 0xc2, 0xc3, 0xf0, 0xa8, - 0xcd, 0xbc, 0xa3, 0xac, 0x6e, 0x3f, 0xe0, 0x26, 0x80, 0x19, - 0x45, 0x3b, 0xca, 0x7f, 0xee, 0x37, 0xe5, 0x49, 0xb4, 0x8e, - 0xc7, 0xf2, 0xa0, 0x4, 0xa2, 0x8c, 0x71, 0x46, 0x3d, 0xe8, - 0x1, 0x77, 0x1f, 0x53, 0xf9, 0xd1, 0xbd, 0xbf, 0xbc, 0x7f, - 0x3a, 0x4a, 0x28, 0x1, 0xe2, 0x79, 0x7, 0x49, 0x1c, 0x7f, - 0xc0, 0x8d, 0x3d, 0x6f, 0x27, 0x5e, 0x93, 0x38, 0xff, 00, - 0x81, 0x54, 0x34, 0x50, 0x5, 0x95, 0xd4, 0xee, 0xd3, 0xa5, - 0xc4, 0x83, 0xfe, 0x5, 0x52, 0xae, 0xb9, 0x7e, 0xa3, 0x2, - 0xea, 0x4f, 0xce, 0xa8, 0xd1, 0x40, 0x1a, 0x6b, 0xe2, 0x5d, - 0x4d, 0x3a, 0x5d, 0xc9, 0xf9, 0xd4, 0xc9, 0xe3, 0xd, 0x5e, - 0x3e, 0x97, 0x8f, 0xf8, 0xd6, 0x35, 0x14, 0x1, 0xd0, 0x27, - 0x8e, 0xf5, 0x94, 0xff, 00, 0x97, 0xb2, 0x7f, 0xa, 0xb3, - 0x17, 0xc4, 0x9d, 0x72, 0x2c, 0x62, 0xec, 0x90, 0x3d, 0xab, - 0x96, 0xa2, 0x80, 0x3b, 0x28, 0xfe, 0x2b, 0x6b, 0xb1, 0x9f, - 0xf8, 0xf9, 0xcf, 0xfc, 0x7, 0xff, 00, 0xaf, 0x57, 0x22, - 0xf8, 0xc7, 0xae, 0x46, 0x3f, 0xd7, 0x9f, 0xcb, 0xff, 00, - 0xaf, 0x5c, 0xd, 0x14, 0x1, 0xe9, 0x51, 0xfc, 0x6f, 0xd6, - 0xd0, 0xf, 0xdf, 0xff, 00, 0xe3, 0xb5, 0x6e, 0x1f, 0x8f, - 0x7a, 0xc4, 0x67, 0x99, 0x4f, 0xe0, 0x2b, 0xca, 0xa8, 0xa0, - 0xf, 0x64, 0x87, 0xf6, 0x87, 0xd5, 0x53, 0x19, 0x9c, 0x8f, - 0xaa, 0x9a, 0xd2, 0x87, 0xf6, 0x91, 0xd4, 0x53, 00, 0xdc, - 0x63, 0xe8, 0xd, 0x78, 0x4d, 0x14, 0x1, 0xf4, 0x3d, 0xbf, - 0xed, 0x39, 0x7c, 0x98, 0xcd, 0xe9, 0x5c, 0x7f, 0xb2, 0x7f, - 0xc2, 0xb4, 0x20, 0xfd, 0xa8, 0xef, 0x14, 0xf3, 0x7e, 0x3f, - 0x22, 0x2b, 0xe6, 0x8a, 0x28, 0x3, 0xea, 0xab, 0x6f, 0xda, - 0xae, 0xe5, 0x40, 0x1f, 0xda, 0x58, 0x3f, 0xf0, 0x2a, 0xd5, - 0xb6, 0xfd, 0xac, 0xee, 0x86, 0x3f, 0xe2, 0x68, 0x9f, 0x91, - 0xaf, 0x90, 0x28, 0xa0, 0xf, 0xb5, 0x6d, 0x3f, 0x6b, 0x8b, - 0xa4, 0x39, 0xfe, 0xd5, 0x5f, 0xc3, 0x35, 0xb1, 0x6d, 0xfb, - 0x5f, 0x5d, 0xa8, 00, 0x6a, 0xe8, 0x7f, 0x3, 0xfe, 0x15, - 0xf0, 0x90, 0x38, 0xa5, 0xe, 0xc3, 0xa1, 0xa0, 0xf, 0xd0, - 0x3b, 0x5f, 0xdb, 0xe, 0xf4, 0x63, 0xfe, 0x26, 0xa9, 0xf8, - 0x3, 0xfe, 0x15, 0xb1, 0x6b, 0xfb, 0x64, 0xdf, 0x29, 0xe3, - 0x56, 0x4f, 0xc5, 0x49, 0xfe, 0x95, 0xf9, 0xcc, 0x25, 0x61, - 0xd0, 0xfe, 0x95, 0x22, 0xde, 0xcc, 0x9f, 0x75, 0xf1, 0xf8, - 0xa, 00, 0xfd, 0x2b, 0xb5, 0xfd, 0xb3, 0xaf, 0xd7, 0x9f, - 0xed, 0x58, 0xbf, 0x23, 0x5b, 0x36, 0x9f, 0xb6, 0x9d, 0xf2, - 0xff, 00, 0xcc, 0x55, 0x7, 0xe0, 0x7f, 0xc2, 0xbf, 0x2f, - 0xd7, 0x56, 0xba, 0x5e, 0x92, 0xfe, 0x82, 0xa6, 0x4f, 0x10, - 0x5f, 0x47, 0xf7, 0x67, 0xc7, 0xe0, 0x28, 0x3, 0xf5, 0x5a, - 0xd3, 0xf6, 0xd9, 0xbd, 0x18, 0xce, 0xa9, 0x11, 0xfc, 0xd, - 0x6c, 0x5a, 0x7e, 0xdb, 0xb7, 0x8a, 0x3f, 0xe4, 0x23, 0x1f, - 0xe4, 0x7f, 0xc2, 0xbf, 0x25, 0xd3, 0xc5, 0x7a, 0x9c, 0x7d, - 0x27, 0xff, 00, 0xc7, 0x45, 0x58, 0x4f, 0x1c, 0x6a, 0xc9, - 0xd2, 0x7e, 0x3f, 0xdd, 0x1f, 0xe1, 0x40, 0x1f, 0xaf, 0x36, - 0x9f, 0xb7, 0xd, 0xc8, 0xb, 0x9d, 0x4a, 0x23, 0xed, 0xb4, - 0xff, 00, 0x85, 0x6d, 0xda, 0xfe, 0xdb, 0xf3, 0x1c, 0x67, - 0x50, 0x84, 0xfd, 0x10, 0xff, 00, 0x85, 0x7e, 0x38, 0xaf, - 0xc4, 0x2d, 0x61, 0x31, 0x89, 0x87, 0xfd, 0xf2, 0x3f, 0xc2, - 0xac, 0xc7, 0xf1, 0x3b, 0x59, 0x4f, 0xf9, 0x68, 0xf, 0xe0, - 0x3f, 0xc2, 0x80, 0x3f, 0x67, 0x6d, 0xbf, 0x6d, 0xdf, 0x5d, - 0x46, 0xc, 0x7b, 0xc6, 0x7f, 0xc2, 0xb5, 0xac, 0xff, 00, - 0x6d, 0x98, 0x58, 0x82, 0xf7, 0xb6, 0xc7, 0xdb, 0xcb, 0x3f, - 0xe1, 0x5f, 0x8a, 0xf1, 0x7c, 0x5c, 0xd6, 0x63, 0x1f, 0xeb, - 0x7, 0xe4, 0x3f, 0xc2, 0xad, 0x43, 0xf1, 0x9f, 0x57, 0x8c, - 0x8c, 0xb6, 0x7f, 0x2f, 0xfe, 0x26, 0x80, 0x3f, 0x6e, 0x6d, - 0x7f, 0x6c, 0xfb, 0x17, 0xfb, 0xd7, 0x76, 0xbf, 0xf7, 0xc3, - 0x7f, 0x85, 0x69, 0xdb, 0x7e, 0xd8, 0x9a, 0x5c, 0x9f, 0x7a, - 0xea, 0xd0, 0x8f, 0xf7, 0x5b, 0xfc, 0x2b, 0xf1, 0x12, 0x1f, - 0x8e, 0xba, 0xaa, 0x1, 0x97, 0x23, 0xf0, 0x1f, 0xfc, 0x4d, - 0x5c, 0x87, 0xf6, 0x80, 0xd4, 0x10, 0x60, 0xb1, 0xfc, 0x87, - 0xff, 00, 0x13, 0x40, 0x1f, 0xb8, 0x56, 0xdf, 0xb5, 0xb6, - 0x8b, 0x20, 0x1b, 0xae, 0x2d, 0x87, 0xe0, 0xdf, 0xe1, 0x5a, - 0x70, 0x7e, 0xd4, 0xde, 0x1f, 0x97, 0x19, 0xb9, 0xb7, 0xff, - 00, 0xc7, 0xbf, 0xc2, 0xbf, 0xe, 0x6d, 0xff, 00, 0x68, - 0x9b, 0xd4, 0xff, 00, 0x96, 0x8e, 0xb8, 0xff, 00, 0x64, - 0x1f, 0xfd, 0x96, 0xaf, 0xc5, 0xfb, 0x4b, 0x5c, 0xc6, 0x79, - 0x99, 0xff, 00, 0xef, 0x81, 0xff, 00, 0xc4, 0xd0, 0x7, - 0xee, 0x54, 0x1f, 0xb4, 0x97, 0x87, 0x25, 0xeb, 0x73, 0xf, - 0xd4, 0x16, 0xff, 00, 0xa, 0xd0, 0xb7, 0xfd, 0xa0, 0x7c, - 0x33, 0x30, 0xff, 00, 0x8f, 0xc8, 0x87, 0x3f, 0xed, 0x7f, - 0x85, 0x7e, 0x1a, 0xdb, 0xfe, 0xd3, 0xd3, 0x27, 0x59, 0x98, - 0x1f, 0x5d, 0x9f, 0xfd, 0x8d, 0x69, 0xdb, 0x7e, 0xd5, 0x12, - 0xa6, 0x7, 0xda, 0x9c, 0x7f, 0xdb, 0x2c, 0xff, 00, 0xec, - 0xb4, 0x1, 0xfb, 0x8f, 0xf, 0xc6, 0xcf, 0xc, 0xcb, 0xff, - 00, 0x2f, 0xf1, 0x73, 0xfe, 0xf7, 0xf8, 0x55, 0xc8, 0xbe, - 0x2d, 0xf8, 0x6a, 0x5f, 0xf9, 0x89, 0x46, 0x3f, 0x6, 0xff, - 00, 0xa, 0xfc, 0x41, 0xb6, 0xfd, 0xab, 0xe4, 0x5f, 0xf9, - 0x7a, 0x7f, 0xfb, 0xf7, 0xff, 00, 0xd8, 0x56, 0xbd, 0xb7, - 0xed, 0x6f, 0x2a, 0xe3, 0xfd, 0x39, 0xc7, 0xfd, 0xb3, 0xff, - 00, 0xec, 0x68, 0x3, 0xf6, 0xca, 0x3f, 0x89, 0x7e, 0x1d, - 0x97, 0xa6, 0xa5, 0x11, 0xfc, 0xff, 00, 0xc2, 0xad, 0x27, - 0x8e, 0xf4, 0x29, 0x3a, 0x6a, 0x31, 0x7e, 0xbf, 0xe1, 0x5f, - 0x8a, 0xf6, 0xbf, 0xb5, 0xdc, 0xdc, 0x1, 0x7a, 0xc7, 0xfe, - 0xd9, 0x8f, 0xfe, 0x26, 0xb6, 0x2d, 0x7f, 0x6b, 0xf9, 0x90, - 0x8c, 0x5f, 0x30, 0xc7, 0xfb, 0x3, 0xff, 00, 0x89, 0xa0, - 0xf, 0xd9, 0x74, 0xf1, 0x76, 0x8d, 0x27, 0xdd, 0xd4, 0x21, - 0x3f, 0x89, 0xab, 0x9, 0xaf, 0xe9, 0xce, 0x32, 0xb7, 0x91, - 0x1f, 0xc6, 0xbf, 0x1d, 0xad, 0x7f, 0x6c, 0x6b, 0x80, 0x47, - 0xfa, 0x7b, 0x7f, 0xdf, 0xaf, 0xfe, 0xc6, 0xb6, 0xed, 0x3f, - 0x6c, 0xcb, 0x80, 0x7, 0xfa, 0x6b, 0x8c, 0xfa, 0x20, 0xff, - 00, 0xe2, 0x28, 0x3, 0xf5, 0xcd, 0x75, 0x6b, 0x36, 0xe9, - 0x70, 0x87, 0xf1, 0xa9, 0x56, 0xf2, 0x6, 0xe9, 0x2a, 0x9f, - 0xc6, 0xbf, 0x27, 0xad, 0xbf, 0x6d, 0x1b, 0x85, 0x23, 0xfd, - 0x39, 0x8f, 0xd6, 0x31, 0xff, 00, 0xc4, 0x56, 0xd5, 0xa7, - 0xed, 0xad, 0x30, 0x23, 0x37, 0x4c, 0x7f, 0xe0, 0x23, 0xff, - 00, 0x88, 0xa0, 0xf, 0xd4, 0xa1, 0x32, 0x1e, 0x8c, 0x29, - 0x43, 0x83, 0xd0, 0xd7, 0xe6, 0x6d, 0xa7, 0xed, 0xb9, 0x22, - 0xa8, 0xcd, 0xe3, 0x8f, 0xfb, 0x66, 0x3f, 0xf8, 0x8a, 0xd8, - 0xb4, 0xfd, 0xb7, 0xe4, 0xe3, 0xfd, 0x31, 0xcf, 0xd1, 00, - 0xff, 00, 0xd9, 0x28, 0x3, 0xf4, 0x72, 0x8a, 0xfc, 0xfd, - 0xb3, 0xfd, 0xb8, 0xa, 0x91, 0xfe, 0x98, 0xe3, 0xfe, 00, - 0xf, 0xfe, 0xc9, 0x5b, 0x56, 0x9f, 0xb7, 0xa, 0x7f, 0xcf, - 0xdb, 0x1f, 0xfb, 0x67, 0x8f, 0xfd, 0x92, 0x80, 0x3e, 0xe8, - 0xa4, 0xaf, 0x8c, 0x6d, 0xbf, 0x6d, 0xf8, 0x30, 0x37, 0x5c, - 0x37, 0xe0, 0x9f, 0xfd, 0x85, 0x6b, 0xdb, 0x7e, 0xdb, 0x3a, - 0x7b, 0x91, 0xba, 0xe1, 0xbf, 0xef, 0xdf, 0xff, 00, 0x61, - 0x40, 0x1f, 0x5c, 0x52, 0x66, 0xbe, 0x5f, 0xb6, 0xfd, 0xb2, - 0xb4, 0x99, 00, 0xdd, 0x29, 0xe7, 0xfd, 0x93, 0xff, 00, - 0xc4, 0xd6, 0x9d, 0xbf, 0xed, 0x7d, 0xa1, 0xbe, 0x37, 0x48, - 0xdf, 0xf7, 0xc9, 0xff, 00, 0xe2, 0x68, 0x3, 0xe8, 0xdc, - 0x8a, 0x5a, 0xf0, 0x6b, 0x5f, 0xda, 0xb7, 0xc3, 0xd3, 0xe, - 0x5c, 0xb7, 0xe7, 0xff, 00, 0xc4, 0xd6, 0x94, 0x1f, 0xb4, - 0xf7, 0x86, 0x64, 0x19, 0x2e, 0xe3, 0xfe, 0x2, 0x7f, 0xf8, - 0x9a, 00, 0xf6, 0x7a, 0x2b, 0xca, 0x6d, 0xff, 00, 0x68, - 0xbf, 0xb, 0xcd, 0x8f, 0xdf, 0x3f, 0x3f, 0xec, 0xb7, 0xff, - 00, 0x13, 0x57, 0xe1, 0xf8, 0xf1, 0xe1, 0x79, 0xbf, 0xe5, - 0xe1, 0xc7, 0xfc, 0x1, 0xbf, 0xc2, 0x80, 0x3d, 0x1e, 0x8a, - 0xe1, 0x62, 0xf8, 0xcd, 0xe1, 0x99, 0x47, 0x17, 0x6d, 0xff, - 00, 0x7e, 0xdb, 0xfc, 0x2a, 0xe4, 0x5f, 0x14, 0xfc, 0x3b, - 0x2f, 0x4b, 0xd3, 0xff, 00, 0x7e, 0xdb, 0xfc, 0x28, 0x3, - 0xae, 0xa2, 0xb9, 0xc8, 0xbe, 0x21, 0x68, 0x53, 0x7d, 0xdb, - 0xd1, 0xf8, 0xa3, 0x7f, 0x85, 0x5a, 0x4f, 0x18, 0x69, 0x32, - 0x7d, 0xdb, 0xb5, 0x3f, 0xf0, 0x13, 0x40, 0x1b, 0x34, 0x56, - 0x6a, 0xf8, 0x8f, 0x4e, 0x7e, 0x97, 0x4b, 0xf9, 0x1a, 0x99, - 0x35, 0x7b, 0x39, 0x3e, 0xec, 0xe8, 0x68, 0x2, 0xe5, 0x15, - 0x2, 0xdf, 0x40, 0xc3, 0x89, 0x54, 0xfe, 0x34, 0xf5, 0xb8, - 0x8d, 0xba, 0x3a, 0x9f, 0xc6, 0x80, 0x24, 0xa2, 0x9a, 0x1d, - 0x4f, 0x46, 0x7, 0xf1, 0xa5, 0xdc, 0x3d, 0x68, 0x1, 0x69, - 0x92, 0x9c, 0x2d, 0x3b, 0x35, 0x14, 0xed, 0xc5, 00, 0x66, - 0x5e, 0xbe, 0x3f, 0x2a, 0xe7, 0x6f, 0xde, 0xb6, 0xef, 0xde, - 0xb9, 0xeb, 0xf6, 0xa0, 0xc, 0x2d, 0x4a, 0x4e, 0xb5, 0xca, - 0x6a, 0x52, 0x75, 0xae, 0x8b, 0x53, 0x93, 0xad, 0x72, 0x9a, - 0x8c, 0x9c, 0x1a, 00, 0xe6, 0x75, 0x89, 0x71, 0xba, 0xb8, - 0x4d, 0x76, 0x7d, 0x91, 0x48, 0x49, 0xe9, 0x5d, 0x86, 0xb1, - 0x2e, 0x37, 0x57, 0x9d, 0xf8, 0xae, 0xeb, 0xcb, 0xb3, 0x90, - 0x83, 0x8a, 0x99, 0x3b, 0x26, 0xc9, 0x93, 0xe5, 0x8b, 0x67, - 0x82, 0x7c, 0x4a, 0xd4, 0x32, 0xd3, 0x1d, 0xd5, 0xf3, 0x86, - 0xb3, 0x36, 0xe9, 0xa4, 0x39, 0xee, 0x6b, 0xdb, 0x7e, 0x23, - 0x5f, 0xe7, 0xcd, 0xe6, 0xbc, 0x1b, 0x56, 0x97, 0x2c, 0xe7, - 0xdc, 0xd7, 0xc0, 0xe2, 0x9f, 0x3d, 0x63, 0xf3, 0xc, 0x6c, - 0xbd, 0xa5, 0x73, 0x9b, 0xd4, 0xe4, 0xeb, 0x5c, 0xfd, 0xc3, - 0x75, 0xad, 0x8d, 0x4a, 0x4c, 0x93, 0x58, 0x57, 0xd, 0xd6, - 0xbd, 0x1a, 0x11, 0xb2, 0x47, 0xad, 0x86, 0x8d, 0x91, 0x37, - 0x87, 0xb4, 0xd1, 0xad, 0xf8, 0x8b, 0x4c, 0xd3, 0xdc, 0x16, - 0x5b, 0xab, 0x98, 0xe1, 0x20, 0x75, 0x3b, 0x98, 0xa, 0xfd, - 0x97, 0xf8, 0x1d, 0xa3, 0xae, 0x97, 0xe1, 0x81, 0xb6, 0x3d, - 0x98, 0xb, 0x10, 0xe3, 0x1c, 0x28, 0xff, 00, 0x12, 0x6b, - 0xf2, 0x8f, 0xf6, 0x6d, 0xd0, 0xdf, 0x5f, 0xf8, 0xcb, 0xe1, - 0xf4, 0xd9, 0xbe, 0x8, 0x5e, 0x49, 0xa4, 0x39, 0xc6, 0x36, - 0xc4, 0xe5, 0x4f, 0x5e, 0x7e, 0x60, 0x2b, 0xf6, 0xf, 0xe1, - 0xfd, 0x91, 0xb1, 0xf0, 0xb5, 0x9a, 0x30, 0xc3, 0xb0, 0x2c, - 0xd8, 0xfa, 0x9a, 0xfa, 0x3c, 0x32, 0xb4, 0x6e, 0x7d, 0x66, - 0x12, 0x36, 0x8b, 0x67, 0x59, 00, 0xe9, 0x5a, 0x50, 0xa, - 0xa1, 00, 0xf9, 0x85, 0x69, 0x42, 0x38, 0xae, 0xc3, 0xbc, - 0xb9, 0x8, 0xad, 0xb, 0x71, 0xd2, 0xa9, 0x42, 0xbd, 0x2b, - 0x42, 0x5, 0xc0, 0x6, 0x80, 0x2d, 0xc6, 0x39, 0xab, 0xb0, - 0x81, 0x81, 0x55, 0x22, 0x1d, 0x2a, 0xec, 0x43, 0xa5, 00, - 0x58, 0x88, 0x55, 0xa4, 0x1c, 0xd5, 0x78, 0x85, 0x5a, 0x8c, - 0x50, 0x4, 0xab, 0x4f, 0x5a, 0x62, 0xf4, 0xa9, 0x7, 0x6a, - 00, 0x78, 0xeb, 0x52, 0x2d, 0x31, 0x69, 0xeb, 0xd2, 0x80, - 0x16, 0x95, 0x69, 0x29, 0x56, 0x80, 0x1d, 0x45, 0x14, 0x50, - 0x1, 0x45, 0x14, 0x50, 0x6, 0x24, 0x95, 0x52, 0x77, 0x54, - 0x46, 0x67, 0x21, 0x55, 0x41, 0x25, 0x8f, 0x40, 0x2a, 0xd4, - 0x95, 0xe7, 0x3f, 0x1d, 0xfc, 0x5e, 0x7c, 0xf, 0xf0, 0xab, - 0xc4, 0x5a, 0xaa, 0x18, 0x4c, 0xc9, 0x7, 0x95, 0x1a, 0xce, - 0xd8, 0xc, 0x64, 0x60, 0x87, 0xf1, 0xc3, 0x13, 0xf8, 0x56, - 0x55, 0x6a, 0x2a, 0x54, 0xe5, 0x37, 0xb2, 0x46, 0x35, 0xaa, - 0xaa, 0x34, 0xe5, 0x52, 0x5d, 0x15, 0xcf, 0x89, 0x35, 0x6b, - 0xa9, 0x3e, 0x29, 0x7e, 0xd1, 0xda, 0xb5, 0xd8, 0x73, 0x73, - 0x1c, 0x97, 0xc2, 0x25, 0x2d, 0xc2, 0xed, 0x8d, 0x56, 0x3e, - 0x31, 0xc6, 0x3e, 0x4e, 0xdd, 0x7a, 0xd7, 0xdf, 0xbe, 0x12, - 0xb2, 0x5b, 0x4b, 0x38, 0x50, 00, 0xa1, 0x54, 0xc, 0xa, - 0xf8, 0x73, 0xf6, 0x48, 0xd0, 0xd6, 0xe3, 0xc4, 0x32, 0xdf, - 0xca, 0x37, 0x34, 0x43, 0x86, 0x3e, 0xa7, 0x3c, 0xd7, 0xdc, - 0xba, 0x4d, 0xc6, 0xd4, 00, 0x1e, 0x82, 0xbe, 0x57, 0x87, - 0x69, 0xb9, 0xd3, 0xa9, 0x8a, 0x96, 0xf3, 0x6c, 0xf8, 0x9e, - 0x14, 0xa6, 0xe7, 0x4a, 0xae, 0x36, 0x5b, 0xd4, 0x93, 0x67, - 0x69, 0x66, 0xc0, 0x28, 0x15, 0x6a, 0xb0, 0x6d, 0x6e, 0xba, - 0x73, 0x5a, 0x71, 0x5d, 0x64, 0xe, 0x6b, 0xeb, 0xcf, 0xbc, - 0x2d, 0xd1, 0x4c, 0x59, 0x3, 0x53, 0xb2, 0x28, 0x1, 0xaf, - 0x1a, 0x10, 0x4b, 0x20, 0x3f, 0x51, 0x5f, 0x8, 0xff, 00, - 0xc1, 0x47, 0x3c, 0x79, 0x69, 0xe1, 0xff, 00, 0x87, 0xd7, - 0x56, 0xd1, 0x22, 0x47, 0x34, 0x8a, 0xdc, 0x88, 0xc7, 0x1f, - 0x2b, 0x74, 0xf7, 0xaf, 0xba, 0xee, 0x9b, 0x10, 0x39, 0x1d, - 0x71, 0x5f, 0x15, 0x7e, 0xd7, 0x1f, 0x9, 0x6e, 0x3e, 0x25, - 0x5c, 0x47, 0xf, 0x90, 0xd3, 0x20, 0xe0, 0xfc, 0x9b, 0x87, - 0x7f, 0x63, 0xeb, 0x40, 0x1f, 0x87, 0x57, 0x1b, 0xe7, 0xb8, - 0x96, 0x42, 0xac, 0xcc, 0xec, 0x5b, 0x27, 0xaf, 0x26, 0xbf, - 0x56, 0x3f, 0xe0, 0x9c, 0xdf, 0xc, 0xac, 0x2f, 0xfc, 0x2b, - 0xa5, 0x3d, 0xe6, 0x9f, 0x1c, 0xcd, 0x26, 0x49, 0x2e, 0x32, - 0x4f, 0xcc, 0xdf, 0xa5, 0x70, 0xa9, 0xfb, 0x19, 0xab, 0x5d, - 0x46, 0xe, 0x94, 0x71, 0xb8, 0x64, 0x8b, 0x7f, 0x7f, 0xf7, - 0x6b, 0xf4, 0x2b, 0xf6, 0x64, 0xf8, 0x5b, 0x6b, 0xe0, 0xf, - 0xb, 0xda, 0x43, 0x1d, 0xb0, 0x81, 0xe3, 0x8f, 0x18, 0x9, - 0x8e, 0xe7, 0xd8, 0x7a, 0xd0, 0x7, 0xad, 0xf, 0x2, 0x68, - 0x1b, 0x15, 0x7f, 0xb2, 0xad, 0xc0, 0x3, 0x18, 0xdb, 0x55, - 0xe5, 0xf8, 0x73, 0xe1, 0xd9, 0x7e, 0xf6, 0x95, 0x6e, 0x7f, - 0xe0, 0x35, 0xd3, 0x51, 0x40, 0x1c, 0x74, 0xbf, 0x9, 0xfc, - 0x31, 0x2e, 0x73, 0xa5, 0xc2, 0x3e, 0x82, 0xa9, 0xcd, 0xf0, - 0x53, 0xc2, 0xd2, 0xf5, 0xd3, 0xa3, 0xc7, 0xfb, 0xb5, 0xde, - 0xd1, 0x40, 0x1e, 0x67, 0x37, 0xc0, 0x1f, 0xa, 0xcb, 0x9f, - 0xf8, 0x97, 0xc4, 0x3f, 0xe0, 0x35, 0xb5, 0xe1, 0xbf, 0x85, - 0xda, 0x2f, 0x86, 0x65, 0x49, 0x2d, 0x6d, 0x63, 0x57, 0x5f, - 0xbb, 0x81, 0xd2, 0xbb, 0x2a, 0x28, 0x1, 0x29, 0x1d, 0x77, - 0xa1, 0x5f, 0x51, 0x8a, 0x75, 0x14, 0x1, 0xe3, 0xbf, 0x14, - 0x3e, 0x2, 0x5a, 0xfc, 0x42, 0xe2, 0x58, 0xe0, 0x91, 0x49, - 0xe4, 0x48, 0xc4, 0x7f, 0x43, 0x5e, 0x55, 0x73, 0xfb, 0x10, - 0x69, 0xef, 0xf7, 0x6c, 0xec, 0xfa, 0xf6, 0x90, 0xff, 00, - 0x85, 0x7d, 0x6f, 0x45, 00, 0x7c, 0x5f, 0x79, 0xfb, 0xb, - 0x40, 0xe3, 0xf7, 0x76, 0x76, 0xa7, 0xfe, 0x6, 0x7f, 0xf8, - 0x9a, 0xc6, 0xba, 0xfd, 0x84, 0xe, 0xe, 0xdd, 0x3a, 0xdc, - 0xfd, 0x1d, 0xbf, 0xf8, 0x9a, 0xfb, 0xa6, 0x8a, 00, 0xfc, - 0xfe, 0xbb, 0xfd, 0x83, 0x67, 0x39, 0xb, 0xa7, 0x45, 0x9f, - 0x72, 0xdf, 0xfc, 0x4d, 0x62, 0xdd, 0x7e, 0xc1, 0xd7, 0xc0, - 0xb6, 0x34, 0xc8, 0xb1, 0xec, 0x5b, 0xff, 00, 0x89, 0xaf, - 0xd1, 0xba, 0x28, 0x3, 0xf3, 0x2a, 0xf3, 0xf6, 0x15, 0xd4, - 0x14, 0x1c, 0x69, 0x8b, 0xf8, 0x6e, 0xff, 00, 0xe2, 0x6b, - 0x12, 0xf3, 0xf6, 0x1b, 0xd4, 0xd7, 0xa6, 0x97, 0x19, 0xfc, - 0x1b, 0xff, 00, 0x89, 0xaf, 0xd5, 0xa, 0x42, 0xa0, 0xf5, - 0x14, 0x1, 0xf9, 0x29, 0x7b, 0xfb, 0x11, 0xea, 0x68, 0x5b, - 0xfe, 0x25, 0xb, 0xd7, 0xb0, 0x6f, 0xfe, 0x26, 0xb1, 0x2e, - 0xbf, 0x62, 0xad, 0x50, 0xf, 0xf9, 0x4, 0x45, 0xf8, 0xab, - 0x7f, 0xf1, 0x35, 0xfb, 0x4, 0xd6, 0xf1, 0xb7, 0x54, 0x53, - 0xf5, 0x14, 0xc6, 0xb0, 0xb7, 0x7f, 0xbd, 0xa, 0x1f, 0xa8, - 0xa0, 0xf, 0xc6, 0x9b, 0xbf, 0xd8, 0xc7, 0x52, 0x5f, 0xf9, - 0x83, 0xa1, 0x3e, 0xc1, 0xbf, 0xf8, 0x9a, 0xc7, 0xbb, 0xfd, - 0x8e, 0xf5, 0x4, 0xce, 0x74, 0x75, 0xfc, 0x55, 0xbf, 0xf8, - 0x9a, 0xfd, 0xa9, 0x6d, 0x16, 0xc5, 0xba, 0xda, 0xc4, 0x7e, - 0xab, 0x51, 0x37, 0x87, 0x74, 0xc7, 0xfb, 0xd6, 0x30, 0x1f, - 0xf8, 00, 0xa0, 0xf, 0xc4, 0x4b, 0x9f, 0xd9, 0x6, 0xf5, - 0x41, 0xce, 0x8c, 0xbf, 0x80, 0x6f, 0xfe, 0x26, 0xb2, 0x2f, - 0x3f, 0x64, 0x9b, 0xc4, 0x7, 0x3a, 0x40, 0x3, 0xfd, 0xd6, - 0xff, 00, 0xe2, 0x6b, 0xf7, 0x31, 0xfc, 0x23, 0xa2, 0xbf, - 0xde, 0xd3, 0x2d, 0x9b, 0xeb, 0x18, 0xa8, 0xa4, 0xf0, 0x3e, - 0x81, 0x27, 0xde, 0xd2, 0x2d, 0x3f, 0xef, 0xd0, 0xa0, 0xf, - 0xc2, 0x1b, 0x8f, 0xd9, 0x4a, 0xed, 0x73, 0xff, 00, 0x12, - 0xac, 0x7d, 0x3, 0x7f, 0xf1, 0x35, 0x99, 0x71, 0xfb, 0x2d, - 0xde, 0x20, 0xe3, 0x4d, 0x75, 0xfc, 0x1b, 0x1f, 0xfa, 0xd, - 0x7e, 0xf3, 0xc9, 0xf0, 0xd7, 0xc3, 0x32, 0x83, 0xbb, 0x46, - 0xb4, 0x39, 0xff, 00, 0xa6, 0x4b, 0xfe, 0x15, 0x56, 0x4f, - 0x84, 0xbe, 0x15, 0x97, 0xef, 0x69, 0x16, 0xdf, 0x84, 0x4b, - 0xfe, 0x14, 0x1, 0xf8, 0x23, 0x3f, 0xec, 0xcd, 0x79, 0x1e, - 0x7f, 0xd0, 0x58, 0xf, 0xf8, 0x17, 0xf8, 0x56, 0x74, 0xff, - 00, 0xb3, 0x75, 0xf2, 0x1e, 0x2d, 0x1c, 0x7f, 0xdf, 0x5f, - 0xe1, 0x5f, 0xbe, 0x72, 0xfc, 0x11, 0xf0, 0x8c, 0xc4, 0x96, - 0xd2, 0xa1, 0xff, 00, 0xbf, 0x69, 0xff, 00, 0xc4, 0xd5, - 0x39, 0x7f, 0x67, 0xef, 0x6, 0xc9, 0x9f, 0xf8, 0x95, 0xc4, - 0x33, 0xe9, 0x12, 0x7f, 0xf1, 0x34, 0x1, 0xf8, 0x11, 0x3f, - 0xec, 0xf5, 0xa8, 0xc7, 0x9c, 0x40, 0xc3, 0xea, 0x5b, 0xff, - 00, 0x89, 0xaa, 0x33, 0x7c, 0x3, 0xd5, 0x23, 0x3c, 0x44, - 0xff, 00, 0x81, 0x3f, 0xfc, 0x4d, 0x7e, 0xfc, 0x4f, 0xfb, - 0x35, 0x78, 0x2e, 0x71, 0x83, 0x60, 0xa0, 0x7a, 0x79, 0x49, - 0xff, 00, 0xc4, 0xd6, 0x7d, 0xc7, 0xec, 0xab, 0xe0, 0xa9, - 0xf2, 0x7e, 0xc6, 0x80, 0x9f, 0xfa, 0x63, 0x1f, 0xff, 00, - 0x13, 0x40, 0x1f, 0x81, 0x32, 0xfc, 0xf, 0xd5, 0xd0, 0xf1, - 0x1b, 0x7e, 0x39, 0xff, 00, 0xe2, 0x6a, 0x9c, 0xbf, 0x6, - 0xb5, 0xa4, 0xe9, 0x17, 0xea, 0x7f, 0xf8, 0x9a, 0xfd, 0xf0, - 0xb8, 0xfd, 0x90, 0x3c, 0x1d, 0x30, 0xe2, 0x4, 0x5f, 0xfb, - 0x65, 0x1f, 0xff, 00, 0x13, 0x59, 0xb3, 0xfe, 0xc5, 0xbe, - 0x11, 0x90, 0x8d, 0xb1, 0x45, 0xf8, 0xc4, 0x9f, 0xfc, 0x4d, - 00, 0x7e, 0xb, 0xcb, 0xf0, 0x97, 0x5b, 0x8f, 0xfe, 0x58, - 0x8f, 0xfc, 0x7b, 0xff, 00, 0x89, 0xaa, 0xaf, 0xf0, 0xcb, - 0x5b, 0x4f, 0xf9, 0x62, 0xf, 0xd3, 0x3f, 0xe1, 0x5f, 0xbc, - 0x17, 0x1f, 0xb1, 0x7, 0x86, 0x24, 0xe0, 0x24, 0x23, 0xe9, - 0x1a, 0xff, 00, 0xf1, 0x15, 0x93, 0x73, 0xfb, 0x9, 0xf8, - 0x7e, 0x4c, 0xe1, 0x62, 0xe7, 0xfe, 0x99, 0xaf, 0xff, 00, - 0x11, 0x40, 0x1f, 0x85, 0xcf, 0xf0, 0xf3, 0x59, 0x4e, 0xb6, - 0xe4, 0xfd, 0x14, 0xff, 00, 0x85, 0x57, 0x7f, 0x4, 0xea, - 0xc9, 0xd6, 0xdd, 0xbf, 0x23, 0xfe, 0x15, 0xfb, 0x87, 0x75, - 0xfb, 0x6, 0x69, 0xd, 0xf7, 0x62, 0x8b, 0xf0, 0x8c, 0x7f, - 0xf1, 0x15, 0x8b, 0x79, 0xfb, 0x3, 0x69, 0xee, 0xcd, 0xb6, - 0x11, 0xff, 00, 0x7e, 0xc7, 0xff, 00, 0x11, 0x40, 0x1f, - 0x8a, 0xf, 0xe1, 0x4d, 0x4d, 0x3a, 0xdb, 0x3f, 0xe0, 0xa7, - 0xfc, 0x2a, 0x6, 0xf0, 0xfd, 0xfa, 0xe, 0x6d, 0xe4, 0xff, - 00, 0xbe, 0xf, 0xf8, 0x57, 0xec, 0xe5, 0xd7, 0xec, 0x5, - 0x6, 0xe, 0xdb, 0x60, 0x7e, 0x91, 0xf, 0xfe, 0x22, 0xb1, - 0xae, 0xbf, 0x60, 0x35, 0xe4, 0xb, 0x39, 0x31, 0xff, 00, - 0x5c, 0x47, 0xff, 00, 0x11, 0x40, 0x1f, 0x8e, 0xed, 0xa4, - 0xdd, 0xaf, 0x5b, 0x79, 0x7, 0xfc, 00, 0xd4, 0x6d, 0x61, - 0x70, 0x9d, 0x60, 0x93, 0xfe, 0xf9, 0x35, 0xfa, 0xe7, 0x77, - 0xfb, 0x2, 0x38, 0x24, 0xad, 0x8c, 0x87, 0xeb, 0x7, 0xff, - 00, 0x61, 0x58, 0xd7, 0x7f, 0xb0, 0x5c, 0xeb, 0x9c, 0x69, - 0xd2, 0x1f, 0xa5, 0xbf, 0xff, 00, 0x61, 0x40, 0x1f, 0x94, - 0x5f, 0x66, 0x94, 0xe, 0x62, 0x7f, 0xfb, 0xe4, 0xd3, 0x4c, - 0x4e, 0x3a, 0xa3, 0xf, 0xc2, 0xbf, 0x51, 0xaf, 0x3f, 0x61, - 0x9, 0xd1, 0x4f, 0xfc, 0x4b, 0x24, 0x3f, 0x5b, 0x73, 0xff, - 00, 0xc4, 0x56, 0x1d, 0xdf, 0xec, 0x37, 0x74, 0x80, 0xff, - 00, 0xc4, 0xad, 0xcf, 0xd2, 0xdb, 0xff, 00, 0xb0, 0xa0, - 0xf, 0xcd, 0x4d, 0xa4, 0x76, 0x34, 0x98, 0x3e, 0x86, 0xbf, - 0x44, 0xee, 0xbf, 0x62, 0x3b, 0x90, 0x32, 0x74, 0xa7, 0xfc, - 0x6d, 0xbf, 0xfb, 0xa, 0xc7, 0xba, 0xfd, 0x8b, 0x2e, 0x54, - 0x1f, 0xf8, 0x94, 0x93, 0xec, 0x2d, 0xff, 00, 0xfb, 0xa, - 00, 0xf8, 0x12, 0x8a, 0xfb, 0x92, 0xe3, 0xf6, 0x34, 0xb9, - 0x52, 0x73, 0xa4, 0x49, 0xff, 00, 0x80, 0xdf, 0xfd, 0x85, - 0x65, 0x5c, 0x7e, 0xc7, 0xd7, 0x8, 0x73, 0xfd, 0x93, 0x20, - 0xff, 00, 0xb7, 0x7f, 0xfe, 0xc2, 0x80, 0x3e, 0x30, 0xa2, - 0xbe, 0xba, 0xba, 0xfd, 0x92, 0x6e, 0x53, 0xfe, 0x61, 0x93, - 0xaf, 0xd2, 0xdf, 0xff, 00, 0xb0, 0xac, 0xbb, 0x8f, 0xd9, - 0x52, 0xe5, 0x33, 0xfe, 0x81, 0x38, 0xfa, 0xc1, 0xff, 00, - 0xd8, 0xd0, 0x7, 0xcb, 0x34, 0x57, 0xd2, 0x97, 0x1f, 0xb2, - 0xed, 0xda, 0xff, 00, 0xcb, 0xa5, 0xc0, 0xfa, 0x44, 0x7f, - 0xf8, 0x9a, 0xcf, 0x9f, 0xf6, 0x65, 0xbc, 0x51, 0xc4, 0x17, - 0x23, 0xfe, 0xd9, 0x1f, 0xfe, 0x26, 0x80, 0x3e, 0x7b, 0xa2, - 0xbd, 0xce, 0x7f, 0xd9, 0xbe, 0xf9, 0x3f, 0xe5, 0x95, 0xcf, - 0xfd, 0xfb, 0xff, 00, 0xec, 0x6a, 0x8c, 0xbf, 0xb3, 0xcd, - 0xfa, 0x67, 0xf7, 0x77, 0x3f, 0xf7, 0xc1, 0xff, 00, 0xe2, - 0x68, 0x3, 0xc6, 0xa8, 0xaf, 0x56, 0x9b, 0xe0, 0x3e, 0xa4, - 0x84, 0xed, 0x49, 0x8f, 0xfc, 0x4, 0xff, 00, 0xf1, 0x35, - 0x4e, 0x4f, 0x82, 0x7a, 0xa2, 0x7f, 0xcb, 0x39, 0xbf, 0xef, - 0x83, 0xfe, 0x14, 0x1, 0xe6, 0xb4, 0x57, 0x7f, 0x2f, 0xc1, - 0xed, 0x59, 0x3a, 0x45, 0x21, 0xfa, 0xa9, 0xff, 00, 0xa, - 0xa9, 0x2f, 0xc2, 0xbd, 0x62, 0x3f, 0xf9, 0x77, 0x93, 0xfe, - 0xf9, 0x6f, 0xf0, 0xa0, 0xe, 0x2e, 0x8a, 0xea, 0xe4, 0xf8, - 0x6f, 0xac, 0xa1, 0xff, 00, 0x8f, 0x77, 0x3f, 0xf0, 0x16, - 0xff, 00, 0xa, 0xab, 0x27, 0x80, 0xb5, 0x98, 0xc9, 0xff, - 00, 0x44, 0x73, 0xff, 00, 0x1, 0x6f, 0xf0, 0xa0, 0xe, - 0x7a, 0x8a, 0xda, 0x7f, 0x7, 0x6a, 0xc9, 0xff, 00, 0x2e, - 0x72, 0xff, 00, 0xdf, 0x6, 0xa1, 0x6f, 0xc, 0x6a, 0x8b, - 0xff, 00, 0x2e, 0x72, 0xff, 00, 0xdf, 0x26, 0x80, 0x32, - 0xe8, 0xab, 0xed, 0xa0, 0xea, 0x9, 0xd6, 0xce, 0x6f, 0xfb, - 0xe4, 0xd4, 0x67, 0x49, 0xbd, 0x5e, 0xb6, 0xb2, 0x8f, 0xf8, - 0x9, 0xa0, 0xa, 0x94, 0x55, 0x83, 0xa7, 0x5d, 0x2f, 0x5b, - 0x79, 0x47, 0xfc, 00, 0xd4, 0x6d, 0x6b, 0x32, 0x9e, 0x62, - 0x71, 0xf5, 0x53, 0x40, 0x11, 0xd2, 0xee, 0x3e, 0xa6, 0x9c, - 0x61, 0x90, 0x7f, 0x3, 0x7e, 0x54, 0xd2, 0x8c, 0xbd, 0x54, - 0x8f, 0xa8, 0xa0, 0x3, 0x7b, 0x7f, 0x78, 0xfe, 0x74, 0xe1, - 0x71, 0x2a, 0xf4, 0x91, 0x87, 0xe3, 0x4c, 0xa2, 0x80, 0x26, - 0x17, 0xb7, 0xb, 0xd2, 0x69, 0x7, 0xfc, 0x8, 0xd4, 0x8b, - 0xaa, 0xde, 0x27, 0xdd, 0xba, 0x94, 0x7d, 0x1c, 0xd5, 0x5c, - 0x1f, 0x4a, 0x28, 0x2, 0xf2, 0xeb, 0xda, 0x8a, 0x74, 0xbc, - 0x9b, 0xfe, 0xfa, 0xa9, 0x93, 0xc4, 0xfa, 0xa2, 0x74, 0xbd, - 0x97, 0xfe, 0xfa, 0xac, 0xba, 0x28, 0x3, 0x69, 0x7c, 0x65, - 0xac, 0x27, 0x4b, 0xe9, 0x7f, 0xef, 0xaa, 0xb0, 0x9e, 0x3e, - 0xd6, 0x50, 0xff, 00, 0xc7, 0xe4, 0x87, 0xf1, 0xae, 0x76, - 0x8a, 00, 0xeb, 0x62, 0xf8, 0x97, 0xad, 0x47, 0x8f, 0xf4, - 0xc9, 0x7f, 0x3a, 0xb5, 0x1f, 0xc5, 0xad, 0x6d, 0xf, 0x37, - 0x32, 0x1f, 0xc6, 0xb8, 0x8a, 0x28, 0x3, 0xd0, 0xa2, 0xf8, - 0xcb, 0xac, 0x47, 0x83, 0xf6, 0x89, 0x47, 0xd1, 0xaa, 0xec, - 0x3f, 0x1c, 0xb5, 0x78, 0xfa, 0xdc, 0x4c, 0x7f, 0x2a, 0xf3, - 0xa, 0x28, 0x3, 0xd7, 0x21, 0xf8, 0xfd, 0xa9, 0xc7, 0x8c, - 0xcf, 0x70, 0x3e, 0x98, 0xff, 00, 0x1a, 0xbf, 0xf, 0xed, - 0x15, 0xa8, 0x21, 0x7, 0xed, 0x57, 0x3f, 0x8f, 0xff, 00, - 0xae, 0xbc, 0x52, 0x8a, 00, 0xf7, 0xcb, 0x7f, 0xda, 0x56, - 0xf1, 0x3a, 0xdd, 0xdc, 0x3, 0xf4, 0xff, 00, 0xeb, 0xd6, - 0x8c, 0x3f, 0xb5, 0x5, 0xca, 0x60, 0x7d, 0xba, 0xe4, 0x7e, - 0x1f, 0xfd, 0x7a, 0xf9, 0xca, 0x8a, 00, 0xfa, 0x7e, 0xdb, - 0xf6, 0xa9, 0x9d, 0x4f, 0x3a, 0x8d, 0xc6, 0x7f, 0xcf, 0xbd, - 0x6a, 0x5b, 0x7e, 0xd6, 0x33, 0x2f, 0xfc, 0xc5, 0x6e, 0x41, - 0xf7, 0x3f, 0xfd, 0x7a, 0xf9, 0x32, 0x8a, 00, 0xfb, 0x26, - 0xdf, 0xf6, 0xb9, 0x98, 0x60, 0x7f, 0x6c, 0x4c, 0x7f, 0x11, - 0xfe, 0x35, 0xaf, 0x69, 0xfb, 0x5f, 0x4c, 0xbf, 0xf3, 0x18, - 0x9c, 0xf, 0xf7, 0x87, 0xf8, 0xd7, 0xc3, 0xf4, 0x50, 0x7, - 0xdf, 0x36, 0x7f, 0xb6, 0x25, 0xc0, 0x3, 0xfe, 0x27, 0x32, - 0x9f, 0xab, 0xf, 0xf1, 0xad, 0xab, 0x5f, 0xdb, 0x22, 0xe0, - 0x63, 0xfe, 0x27, 0x13, 0x7e, 0xc, 0x3f, 0xc6, 0xbf, 0x3b, - 0x43, 0x91, 0xde, 0x9c, 0x26, 0x75, 0x3c, 0x31, 0x14, 0x1, - 0xfa, 0x4f, 0x6b, 0xfb, 0x67, 0x5c, 0xa9, 0x1f, 0xf1, 0x39, - 0x9b, 0xf1, 0x2b, 0xfe, 0x35, 0xaf, 0x69, 0xfb, 0x69, 0xdc, - 0x8e, 0xba, 0xbc, 0xa4, 0xfb, 0x30, 0xff, 00, 0x1a, 0xfc, - 0xc4, 0x17, 0xb3, 0x28, 0xc0, 0x90, 0x8a, 0x7a, 0xea, 0x77, - 0x4b, 0xd2, 0x66, 0x14, 0x1, 0xfa, 0xa3, 0x6d, 0xfb, 0x6b, - 0xdc, 0xa8, 0x1f, 0xf1, 0x37, 0x9c, 0x7d, 0x48, 0xff, 00, - 0x1a, 0xd8, 0xb2, 0xfd, 0xb7, 0x6e, 0x1, 0x1f, 0xf1, 0x36, - 0x9b, 0xf3, 0x5f, 0xf1, 0xaf, 0xc9, 0xb5, 0xd7, 0x2f, 0x93, - 0xee, 0xdc, 0xb8, 0xfc, 0xaa, 0x41, 0xe2, 0x3d, 0x49, 0x7a, - 0x5d, 0xb8, 0xfc, 0xa8, 0x3, 0xf5, 0xf2, 0xd3, 0xf6, 0xe0, - 0x91, 0x79, 0x3a, 0xac, 0xff, 00, 0x9a, 0xff, 00, 0xf1, - 0x55, 0xb3, 0x67, 0xfb, 0x71, 0x31, 0x23, 0x3a, 0xac, 0xc7, - 0xdb, 0xe5, 0xff, 00, 0x1a, 0xfc, 0x70, 0x4f, 0x17, 0x6a, - 0xc9, 0xd2, 0xf1, 0xc7, 0xd3, 0x15, 0x2a, 0x78, 0xe3, 0x5a, - 0x43, 0x91, 0x7d, 0x27, 0xe3, 0x40, 0x1f, 0xb5, 0x96, 0x3f, - 0xb6, 0xec, 0x4d, 0x80, 0xda, 0x94, 0xa7, 0xea, 0xab, 0xfe, - 0x35, 0xd2, 0xe9, 0x9f, 0xb6, 0x55, 0x95, 0xdc, 0x8a, 0xaf, - 0x79, 0x9c, 0xfa, 0xa2, 0x7f, 0x8d, 0x7e, 0x1c, 0xc3, 0xf1, - 0x2b, 0x5e, 0x84, 0xc, 0x5e, 0x31, 0xae, 0x83, 0xc3, 0xdf, - 0x15, 0xfc, 0x44, 0xd7, 0xd0, 0xa2, 0xce, 0x5f, 0x73, 0x81, - 0xd4, 0xff, 00, 0x8d, 00, 0x7f, 0x40, 0x5e, 0xb, 0xf8, - 0x95, 0x6f, 0xe3, 0xab, 0x31, 0x34, 0x27, 0x70, 0xf5, 0xc0, - 0x1f, 0xc8, 0xd6, 0xb6, 0xa1, 0x27, 0x19, 0xaf, 0x9c, 0xff, - 00, 0x63, 0x1f, 0xb5, 0xc9, 0xf0, 0xee, 0x1b, 0x9b, 0xb5, - 0x75, 0x77, 0x3, 0x5, 0xc1, 0xc9, 0xeb, 0x5f, 0x41, 0xdf, - 0xb9, 0x9, 0xf8, 0x50, 0x7, 0x3f, 0xa9, 0x49, 0xd6, 0xb9, - 0x5d, 0x4a, 0x4c, 0x6, 0xae, 0x83, 0x53, 0x97, 0xad, 0x72, - 0x7a, 0xac, 0xbf, 0x29, 0xa0, 0xe, 0x5b, 0x58, 0x97, 0xef, - 0x57, 0x97, 0xf8, 0xf2, 0xef, 0xca, 0xb3, 0x60, 0xe, 0x2b, - 0xd0, 0xb5, 0x99, 0x7e, 0xf7, 0x35, 0xe3, 0x1f, 0x12, 0xf5, - 0x12, 0xaa, 0xeb, 0x9e, 0x5, 0x73, 0x62, 0x65, 0xc9, 0x4d, - 0xb3, 0x8f, 0x17, 0x3e, 0x4a, 0x4d, 0x9f, 0x3f, 0xfc, 0x42, - 0xbd, 0xdc, 0xd2, 0xc, 0x9a, 0xf1, 0xed, 0x52, 0x4e, 0x5a, - 0xbd, 0x7, 0xc6, 0xd7, 0x66, 0x59, 0x9c, 0x67, 0xbd, 0x79, - 0x9e, 0xa9, 0x2f, 0x27, 0x9a, 0xf8, 0x2f, 0x8e, 0xab, 0x3f, - 0x33, 0xbf, 0xb4, 0xae, 0xd9, 0xcf, 0xea, 0xf, 0x92, 0x6b, - 0x1a, 0x76, 0xad, 0x1b, 0xd7, 0xcb, 0x1a, 0xca, 0xb8, 0x6e, - 0xb5, 0xef, 0x52, 0x47, 0xd3, 0x50, 0x8d, 0x92, 0x3e, 0x93, - 0xfd, 0x86, 0xbc, 0x36, 0x75, 0x3f, 0x19, 0xea, 0xb7, 0xec, - 0x80, 0xac, 0x51, 0xa4, 0x11, 0xbe, 0x39, 0xe, 0xc7, 0x7, - 0x1f, 0x81, 0xaf, 0xd5, 0x6d, 0x36, 0xdc, 0x5b, 0x5a, 0x41, - 0x1e, 0x31, 0xb5, 00, 0xfd, 0x2b, 0xe1, 0xaf, 0xd8, 0x7, - 0xc1, 0x42, 0xdf, 0xc2, 0x5a, 0x7d, 0xf3, 0xa0, 0x7, 0x50, - 0x9e, 0x4b, 0x89, 0x6, 0x39, 0xfd, 0xd9, 0x91, 0x54, 0x9f, - 0xc8, 0x57, 0xdd, 0xb0, 0x1e, 0x73, 0x8c, 0x57, 0xd1, 0x52, - 0x8f, 0x2c, 0x11, 0xf5, 0x74, 0x23, 0xcb, 0x4d, 0x22, 0xed, - 0xba, 0xf2, 0x2b, 0x4e, 0x11, 0xd2, 0xb3, 0xed, 0xfa, 0x8a, - 0xd1, 0x83, 0xb5, 0x6c, 0x6e, 0x5d, 0x84, 0x64, 0xd6, 0x84, - 0x2b, 0xf2, 0x8a, 0xa5, 0x6, 0x3d, 0x2b, 0x42, 0x1e, 0x82, - 0x80, 0x2d, 0x44, 0x33, 0x8a, 0xb9, 0x18, 0xaa, 0xd0, 0x81, - 0x9a, 0xb7, 0x18, 0xa0, 0xb, 0x11, 0xe, 0x95, 0x65, 0x2a, - 0x8, 0x85, 0x59, 0x51, 0xc5, 00, 0x3d, 0x47, 0x6a, 0x90, - 0x75, 0xa6, 0x2f, 0x5a, 0x91, 0x68, 0x1, 0xcb, 0x52, 0xe, - 0x94, 0xc5, 0xed, 0x4f, 0xa0, 0x2, 0x9c, 0x3a, 0x53, 0x69, - 0xc2, 0x80, 0x16, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, - 0xc, 0x19, 0xd, 0x7c, 0xaf, 0xfb, 0x7b, 0x78, 0x9d, 0x2c, - 0x7e, 0x1f, 0x69, 0x3a, 0x32, 0xb9, 0x5b, 0x8b, 0xeb, 0xc1, - 0x21, 0x50, 0x7a, 0xc6, 0x80, 0xe7, 0xf5, 0x2b, 0x5f, 0x54, - 0x49, 0x8c, 0xd7, 0xe7, 0xff, 00, 0xed, 0xfd, 0xae, 0x3d, - 0xdf, 0xc4, 0xed, 0x3, 0x4d, 0x2f, 0xfb, 0xbb, 0x3b, 0x47, - 0x75, 0x4f, 0x4f, 0x30, 0xa9, 0xfc, 0x7e, 0xed, 0x78, 0x39, - 0xe5, 0x57, 0x4b, 0x1, 0x51, 0xad, 0xde, 0x9f, 0x79, 0xf3, - 0x3c, 0x47, 0x59, 0xd1, 0xcb, 0x2a, 0x35, 0xbb, 0xd3, 0xef, - 0x3a, 0x6f, 0xd9, 0x3e, 0xd0, 0x5b, 0x68, 0x53, 0x5c, 0x63, - 0x6, 0x47, 0xc6, 0x7f, 0x12, 0x2b, 0xea, 0x3d, 0x32, 0xef, - 0xa, 0x39, 0x15, 0xf3, 0x57, 0xec, 0xe7, 0x8b, 0x3f, 0x7, - 0x5b, 0x8e, 0x85, 0x8b, 0x1f, 0xfc, 0x78, 0xd7, 0xbb, 0x69, - 0xf7, 0xf8, 0xc7, 0x3c, 0x56, 0xd9, 0x45, 0x2f, 0x65, 0x82, - 0xa7, 0x1f, 0x23, 0x7c, 0x8a, 0x8a, 0xa1, 0x97, 0x52, 0x8a, - 0xec, 0x77, 0xb6, 0xd7, 0x9e, 0xf5, 0xa5, 0xd, 0xef, 0x1d, - 0x45, 0x71, 0xb0, 0x5f, 0x71, 0xd7, 0xf4, 0xad, 0x18, 0x2f, - 0xc7, 0x73, 0x5e, 0xc1, 0xef, 0x9d, 0x64, 0x77, 0xbe, 0xf5, - 0x38, 0xbf, 0xf7, 0xae, 0x5d, 0x6f, 0xf1, 0xfc, 0x54, 0xe1, - 0xa8, 0xfb, 0xd0, 0x7, 0x48, 0xf7, 0xa1, 0x87, 0x27, 0x8a, - 0xcf, 0xba, 0xd3, 0xf4, 0xfb, 0xe6, 0xdd, 0x3d, 0xbc, 0x72, - 0xb7, 0xab, 0x28, 0x26, 0xb2, 0x9b, 0x51, 0xe3, 0xad, 0x20, - 0xd4, 0xbd, 0xff, 00, 0x4a, 00, 0xbb, 0xff, 00, 0x8, - 0xd6, 0x8f, 0xb8, 0x30, 0xb4, 0x8c, 0x1f, 0xa0, 0xad, 0x5b, - 0x4f, 0x26, 0xc6, 0x30, 0x90, 0xa8, 0x45, 0x1d, 0x85, 0x73, - 0xe3, 0x52, 0x3e, 0xbf, 0xa5, 0x3c, 0x6a, 0x5e, 0xf4, 0x1, - 0xd3, 0xfd, 0xbb, 0xde, 0x94, 0x5e, 0xfb, 0xd7, 0x32, 0x35, - 0x2f, 0x7a, 0x7a, 0xea, 0x78, 0xef, 0x40, 0x1d, 0x20, 0xbc, - 0xcf, 0x7a, 0x77, 0xdb, 0x7d, 0xeb, 0x9a, 0x1a, 0x96, 0x7b, - 0xd3, 0xff, 00, 0xb4, 0xb8, 0xeb, 0xfa, 0x50, 0x7, 0x46, - 0x2f, 0x5, 0x2f, 0xda, 0x81, 0xae, 0x74, 0x6a, 0x5e, 0xf4, - 0xe1, 0xa8, 0xfb, 0xd0, 0x7, 0x43, 0xf6, 0xa1, 0xeb, 0x47, - 0xda, 0x47, 0xad, 0x60, 0x7f, 0x68, 0x7b, 0x8a, 0x70, 0xd4, - 0x7, 0xad, 00, 0x6f, 0xfd, 0xa0, 0x7a, 0xd2, 0x89, 0xd7, - 0xd6, 0xb0, 0x7e, 0xde, 0x3d, 0x7f, 0x4a, 0x51, 0x7e, 0x3d, - 0x68, 0x3, 0x7b, 0xce, 0x5f, 0x5a, 0x5f, 0x35, 0x7d, 0x6b, - 0xc, 0x5f, 0x83, 0xde, 0x94, 0x5f, 0x8c, 0xf5, 0xfd, 0x28, - 0x3, 0x6f, 0xcc, 0x5f, 0x5a, 0x50, 0xe0, 0xf7, 0xac, 0x5f, - 0xb6, 0x8f, 0x51, 0x4f, 0x17, 0xdc, 0x75, 0xa0, 0xd, 0x7d, - 0xc3, 0xd6, 0x97, 0x22, 0xb2, 0x3e, 0xdb, 0xcf, 0xde, 0xa7, - 0x7d, 0xbb, 0xfd, 0xaa, 00, 0xd5, 0xcd, 0x19, 0xac, 0xc1, - 0x7d, 0xef, 0x4e, 0x17, 0xbc, 0xf5, 0x14, 0x1, 0xa5, 0x45, - 0x67, 0x7d, 0xb7, 0xde, 0x97, 0xed, 0xbe, 0xff, 00, 0xa5, - 00, 0x68, 0x51, 0x54, 0x45, 0xe7, 0xa9, 0xfd, 0x29, 0xdf, - 0x6d, 0xf7, 0x14, 0x1, 0x72, 0x8a, 0xa8, 0x2f, 0x33, 0xdc, - 0x53, 0xbe, 0xd6, 0x3d, 0x68, 0x2, 0xcd, 0x15, 0x5c, 0x5d, - 0x8c, 0x76, 0xa3, 0xed, 0x62, 0x80, 0x2c, 0x51, 0x50, 0xfd, - 0xa5, 0x73, 0x4a, 0x2e, 0x14, 0xd0, 0x4, 0xb4, 0x54, 0x7e, - 0x7a, 0xfa, 0xd2, 0x89, 0x94, 0xf7, 0xa0, 0x7, 0xd1, 0x4c, - 0xf3, 0x54, 0xf7, 0xa5, 0xde, 0x3d, 0x68, 0x1, 0x71, 0x46, - 0x7, 0xa5, 0x20, 0x71, 0xeb, 0x46, 0xe1, 0xeb, 0x40, 0xb, - 0x8a, 0x31, 0x46, 0x45, 0x2d, 00, 0x21, 0x50, 0x7a, 0x8c, - 0xfd, 0x69, 0x86, 0x8, 0xc8, 0xc1, 0x45, 0x3f, 0xf0, 0x1a, - 0x92, 0x8a, 00, 0x81, 0xac, 0x6d, 0xdf, 0xef, 0x5b, 0xc4, - 0xdf, 0x54, 0x6, 0xa2, 0x6d, 0x1e, 0xc5, 0xf3, 0x9b, 0x48, - 0x3f, 0xef, 0xd8, 0xab, 0x94, 0x50, 0x6, 0x63, 0xf8, 0x6f, - 0x4c, 0x90, 0x61, 0xac, 0x60, 0x3f, 0xf6, 0xcc, 0x7f, 0x85, - 0x56, 0x93, 0xc1, 0x7a, 0x2c, 0xbd, 0x74, 0xe8, 0x3f, 0x8, - 0xc7, 0xf8, 0x56, 0xe5, 0x14, 0x1, 0xcd, 0x3f, 0xc3, 0xbd, - 0x2, 0x4c, 0xee, 0xd3, 0xa2, 0x39, 0xff, 00, 0x64, 0x7f, - 0x85, 0x55, 0x93, 0xe1, 0x47, 0x86, 0x65, 0xfb, 0xda, 0x6c, - 0x5f, 0x82, 0x8f, 0xf0, 0xae, 0xbe, 0x8a, 00, 0xe1, 0x25, - 0xf8, 0x29, 0xe1, 0x49, 0xb3, 0x9d, 0x3c, 0xc, 0xfa, 0x6d, - 0xff, 00, 0xa, 0xa3, 0x37, 0xc0, 0x1f, 0x8, 0xcd, 0xd6, - 0xc4, 0xff, 00, 0xe3, 0xbf, 0xfc, 0x4d, 0x7a, 0x4d, 0x27, - 0x4a, 00, 0xf2, 0x69, 0xff, 00, 0x66, 0xaf, 0x8, 0x4c, - 0x78, 0xb4, 0x23, 0xf1, 0x5f, 0xfe, 0x26, 0xb3, 0xee, 0x7f, - 0x65, 0xaf, 0x9, 0xcb, 0xd2, 0xdf, 0xf3, 0xda, 0x7f, 0xf6, - 0x5a, 0xf6, 0x9a, 0x5a, 00, 0xf0, 0x1b, 0x9f, 0xd9, 0x1b, - 0xc2, 0xd3, 0x67, 0x16, 0xeb, 0xf9, 0xaf, 0xff, 00, 0x13, - 0x59, 0x97, 0x1f, 0xb1, 0xb7, 0x87, 0x1c, 0x7c, 0x90, 0xf, - 0xcd, 0x7f, 0xf8, 0x9a, 0xfa, 0x46, 0x92, 0x80, 0x3e, 0x56, - 0xbb, 0xfd, 0x89, 0x74, 0x49, 0x18, 0xec, 0xb5, 0x52, 0x3d, - 0x9d, 0x7, 0xf4, 0xac, 0x8b, 0x9f, 0xd8, 0x73, 0x4d, 0x6c, - 0x95, 0xb4, 0x39, 0x3c, 0xf1, 0x22, 0x7f, 0x85, 0x7d, 0x81, - 0x45, 00, 0x7c, 0x4f, 0x77, 0xfb, 0xa, 0x5a, 0x91, 0xf2, - 0x58, 0x96, 0xfa, 0x3a, 0x7f, 0x85, 0x63, 0xdd, 0x7e, 0xc2, - 0xb, 0xce, 0x34, 0xd9, 0x8e, 0x3d, 0x1d, 0x4f, 0xf4, 0xaf, - 0xbc, 0x68, 0xa0, 0xf, 0xcf, 0x6b, 0xbf, 0xd8, 0x3d, 0xf9, - 0x2b, 0xa6, 0x4d, 0xf8, 0xed, 0xff, 00, 0xa, 0xc4, 0xbc, - 0xfd, 0x84, 0xee, 0x50, 0x1c, 0x69, 0x13, 0xfe, 0x1b, 0x7f, - 0xc2, 0xbf, 0x48, 0xf0, 0x3d, 0x29, 0x36, 0x29, 0xec, 0x3f, - 0x2a, 00, 0xfc, 0xc0, 0xbb, 0xfd, 0x86, 0xee, 0xc1, 0x3f, - 0xf1, 0x2a, 0x9f, 0x3, 0xd4, 0x2f, 0xf8, 0x56, 0x2d, 0xdf, - 0xec, 0x45, 0x7c, 0xb9, 0xff, 00, 0x89, 0x3c, 0xdf, 0x92, - 0xff, 00, 0x85, 0x7e, 0xac, 0x18, 0x90, 0xf5, 0x45, 0x3f, - 0x85, 0x31, 0xac, 0xe0, 0x71, 0x83, 0x12, 0x91, 0xf4, 0xa0, - 0xf, 0xc9, 0xb, 0xbf, 0xd8, 0xaa, 0xf9, 0x3f, 0xe6, 0xf, - 0x3f, 0xfd, 0xf2, 0x3f, 0xc2, 0xb1, 0xee, 0xff, 00, 0x63, - 0x1b, 0xe5, 0x27, 0xfe, 0x24, 0xf2, 0x91, 0xec, 0xa3, 0xfc, - 0x2b, 0xf6, 0x9, 0xb4, 0xab, 0x47, 0xeb, 0x2, 0x9a, 0x82, - 0x4f, 0xe, 0x69, 0xb2, 0xe7, 0x75, 0xa2, 0x1c, 0xfb, 0x9f, - 0xf1, 0xa0, 0xf, 0xc6, 0xbb, 0xaf, 0xd8, 0xea, 0xf5, 0x3f, - 0xe6, 0xd, 0x3f, 0xfd, 0xf2, 0x3f, 0xc2, 0xb1, 0xaf, 0x3f, - 0x64, 0x2b, 0xc5, 0x3f, 0xf2, 0x6, 0x98, 0xe7, 0xd5, 0x47, - 0xf8, 0x57, 0xed, 0x23, 0xf8, 0x3b, 0x47, 0x90, 0x73, 0x64, - 0xa7, 0xfe, 0x4, 0xdf, 0xe3, 0x55, 0x66, 0xf8, 0x79, 0xa0, - 0x4d, 0xf7, 0xec, 0x47, 0xa7, 0xe, 0xc3, 0xfa, 0xd0, 0x7, - 0xe2, 0x75, 0xcf, 0xec, 0x93, 0x74, 0x3a, 0xe8, 0xb3, 0xff, - 00, 0xdf, 0x23, 0xfc, 0x2b, 0x26, 0xe7, 0xf6, 0x51, 0xb8, - 0x4c, 0xff, 00, 0xc4, 0x9e, 0x71, 0xff, 00, 0x1, 0x1f, - 0xe1, 0x5f, 0xb7, 0x92, 0x7c, 0x28, 0xf0, 0xd4, 0xbd, 0x6c, - 0x4f, 0xe1, 0x23, 0x7f, 0x8d, 0x54, 0x9b, 0xe0, 0xbf, 0x85, - 0xe6, 0x4, 0x1b, 0x16, 0xff, 00, 0xbf, 0x8d, 0xfe, 0x34, - 0x1, 0xf8, 0x77, 0x71, 0xfb, 0x2c, 0x5c, 0x27, 0xfc, 0xc2, - 0x6e, 0x3f, 00, 0x3f, 0xc2, 0xb3, 0x6e, 0x3f, 0x66, 0x19, - 0xd3, 0xfe, 0x61, 0xb7, 0x4b, 0xf8, 0x7f, 0xf5, 0xab, 0xf7, - 0x22, 0x6f, 0x80, 0x1e, 0x13, 0x98, 0x93, 0xf6, 0x47, 0x19, - 0xff, 00, 0xa6, 0x8d, 0xfe, 0x35, 0x42, 0x7f, 0xd9, 0xbb, - 0xc2, 0x92, 0xe7, 0x10, 0xb8, 0xcf, 0xfb, 0x4c, 0x7f, 0xf6, - 0x6a, 00, 0xfc, 0x34, 0x9b, 0xf6, 0x6a, 0xb8, 0x5c, 0xe2, - 0xc6, 0xe3, 0x8f, 0x43, 0xff, 00, 0xd6, 0xac, 0xdb, 0x8f, - 0xd9, 0xd2, 0xea, 0x3c, 0xe2, 0xd6, 0xe4, 0x7e, 0x35, 0xfb, - 0x99, 0x71, 0xfb, 0x2d, 0xf8, 0x56, 0x50, 0x7f, 0x76, 0xd9, - 0xfa, 0xb7, 0xff, 00, 0x15, 0x59, 0x37, 0x1f, 0xb2, 0x3f, - 0x86, 0xa5, 0x27, 0x6a, 0xb8, 0xfa, 0x93, 0xff, 00, 0xc5, - 0x50, 0x7, 0xe1, 0xd4, 0xbf, 0xb3, 0xfd, 0xea, 0xf4, 0x82, - 0x7f, 0xce, 0xa9, 0x4b, 0xf0, 0x27, 0x51, 0x4f, 0xf9, 0x61, - 0x38, 0xff, 00, 0x3f, 0x4a, 0xfd, 0xbd, 0xba, 0xfd, 0x8e, - 0x34, 0x29, 0x33, 0xb5, 0x9, 0xff, 00, 0x81, 0x1f, 0xfe, - 0x2a, 0xb2, 0x6e, 0x7f, 0x62, 0x8d, 0x1e, 0x40, 0x76, 0xa3, - 0x73, 0xfe, 0xd1, 0xff, 00, 0xe2, 0xe8, 0x3, 0xf1, 0x2e, - 0x5f, 0x82, 0x9a, 0xa2, 0x74, 0x8a, 0x6f, 0xc4, 0xf, 0xf0, - 0xaa, 0x92, 0xfc, 0x1f, 0xd5, 0xd3, 0xa5, 0xbc, 0xbf, 0x90, - 0xaf, 0xda, 0x9b, 0xaf, 0xd8, 0x76, 0xc1, 0xb3, 0xb6, 0x22, - 0xc0, 0xff, 00, 0xb6, 0x7f, 0xf8, 0xba, 0xc9, 0xb9, 0xfd, - 0x85, 0x2d, 0xdb, 0x25, 0x6d, 0x5b, 0xf0, 0x93, 0xff, 00, - 0xb3, 0xa0, 0xf, 0xc6, 0x29, 0x7e, 0x15, 0x6a, 0xe9, 0x9f, - 0xdc, 0x48, 0x3e, 0xab, 0x54, 0xe4, 0xf8, 0x6f, 0xad, 0x27, - 0xfc, 0xba, 0xc8, 0x47, 0xfb, 0xbf, 0xfd, 0x7a, 0xfd, 0x91, - 0xbc, 0xfd, 0x84, 0x41, 0xc9, 0x5b, 0x66, 0xfa, 0x6f, 0x1f, - 0xfc, 0x5d, 0x60, 0xdd, 0x7e, 0xc2, 0x52, 0xe4, 0xe2, 0xcd, - 0xb1, 0xea, 0x1c, 0x1f, 0xfd, 0x9e, 0x80, 0x3f, 0x21, 0x1f, - 0xc0, 0x9a, 0xc4, 0x7d, 0x6c, 0xe5, 0xff, 00, 0xbe, 0x6a, - 0xbb, 0xf8, 0x3f, 0x56, 0x4e, 0xb6, 0x52, 0xfe, 0x55, 0xfa, - 0xd5, 0x77, 0xfb, 0xc, 0xce, 0x9, 0xff, 00, 0x45, 0x71, - 0xf5, 0x60, 0x7f, 0xf6, 0x7a, 0xc4, 0xbb, 0xfd, 0x87, 0xae, - 0xc0, 0xff, 00, 0x8f, 0x46, 0x3f, 0xf0, 0x30, 0x3f, 0xf6, - 0x7a, 00, 0xfc, 0xaa, 0x7f, 0xd, 0x6a, 0x69, 0xd6, 0xca, - 0x5f, 0xca, 0xa2, 0x6d, 0xe, 0xfd, 0x3a, 0xda, 0x4a, 0x3f, - 0xe0, 0x35, 0xfa, 0x83, 0x79, 0xfb, 0x12, 0xde, 0x27, 0xfc, - 0xb9, 0xb0, 0xfa, 0xb8, 0xff, 00, 0xe2, 0xeb, 0x16, 0xeb, - 0xf6, 0x2e, 0xbd, 00, 0xe2, 0xd0, 0xb7, 0xfc, 0x8, 0xf, - 0xfd, 0x9e, 0x80, 0x3f, 0x35, 0x1b, 0x4b, 0xbb, 0x5e, 0xb6, - 0xd2, 0x8f, 0xf8, 0x1, 0xa8, 0xcd, 0x94, 0xeb, 0xd6, 0x17, - 0x1f, 0x55, 0xaf, 0xd1, 0x4b, 0xdf, 0xd8, 0xda, 0xf6, 0x3c, - 0x9f, 0xb1, 0x30, 0xfa, 0x48, 0x3f, 0xf8, 0xaa, 0xc5, 0xb9, - 0xfd, 0x90, 0x6f, 0x39, 0xff, 00, 0x42, 0x27, 0xeb, 0x20, - 0xff, 00, 0xe2, 0xa8, 0x3, 0xe0, 0x33, 0x6f, 0x28, 0xeb, - 0x1b, 0xf, 0xc2, 0x98, 0x51, 0x87, 0x55, 0x23, 0xf0, 0xaf, - 0xba, 0xae, 0x3f, 0x64, 0x5b, 0xb5, 0xce, 0x6c, 0x1b, 0xf0, - 0x90, 0x7f, 0xf1, 0x55, 0x8f, 0x75, 0xfb, 0x28, 0x5c, 0x26, - 0x7f, 0xd0, 0x5b, 0xfe, 0xfb, 0x1f, 0xfc, 0x55, 00, 0x7c, - 0x5b, 0xb4, 0xd2, 0x60, 0x8a, 0xfa, 0xfa, 0xe3, 0xf6, 0x53, - 0xb8, 0xc9, 0xcd, 0x8b, 0x1f, 0xfb, 0x68, 0x3f, 0xf8, 0xaa, - 0xcb, 0xb9, 0xfd, 0x96, 0xe5, 0x4e, 0xb6, 0x6e, 0x31, 0xff, - 00, 0x4d, 0x7, 0xff, 00, 0x15, 0x40, 0x1f, 0x2a, 0xd1, - 0x5f, 0x4a, 0x5d, 0x7e, 0xcc, 0x92, 0xa1, 0x23, 0xec, 0xad, - 0x9f, 0xfa, 0xe9, 0xff, 00, 0xd9, 0x56, 0x74, 0xff, 00, - 0xb3, 0x6c, 0xb1, 0xe7, 0x36, 0xee, 0x3d, 0xf7, 0xf, 0xfe, - 0x2a, 0x80, 0x3e, 0x7c, 0xa2, 0xbd, 0xce, 0x5f, 0xd9, 0xde, - 0x75, 0xce, 0xd8, 0xdb, 0xf3, 0xff, 00, 0xec, 0xaa, 0x94, - 0xbf, 00, 0x6e, 0xd0, 0x1c, 0x46, 0xdf, 0x98, 0xff, 00, - 0xe2, 0xa8, 0x3, 0xc6, 0x68, 0xaf, 0x58, 0x9b, 0xe0, 0x5d, - 0xfa, 0x7d, 0xd5, 0x3f, 0xa7, 0xff, 00, 0x15, 0x54, 0x66, - 0xf8, 0x29, 0xaa, 0x2e, 0x76, 0xaf, 0x4f, 0x71, 0xfe, 0x34, - 0x1, 0xe6, 0xb4, 0x57, 0x7b, 0x27, 0xc2, 0x1d, 0x55, 0x7, - 0x4f, 0xe5, 0xfe, 0x35, 0x9d, 0x71, 0xf0, 0xd3, 0x57, 0x83, - 0xfe, 0x59, 0x83, 0xf8, 0x8f, 0xf1, 0xa0, 0xe, 0x4e, 0xbb, - 0xef, 0x84, 0x9a, 0x1f, 0xf6, 0xd7, 0x8b, 0xf4, 0xbb, 0x6f, - 0x2c, 0xcb, 0xbe, 0x50, 0x76, 0x8e, 0xf5, 0xce, 0xcd, 0xe0, - 0xcd, 0x52, 0xf, 0xbd, 00, 0xc7, 0xfb, 0xc2, 0xbd, 0xaf, - 0xf6, 0x4d, 0xf0, 0x8d, 0xd6, 0xa5, 0xf1, 0x4b, 0x4f, 0x8e, - 0x58, 0x76, 0xa2, 0x37, 0x2d, 0x91, 0xc7, 0xeb, 0x40, 0x1f, - 0xb1, 0xbf, 00, 0xfc, 0x3e, 0x34, 0x2f, 00, 0x69, 0xb0, - 0xec, 0xd8, 0xc5, 0x32, 0x47, 0xe7, 0x5d, 0xee, 0xa8, 0xf8, - 0x1f, 0x85, 0x55, 0xf0, 0x95, 0x8a, 0xe9, 0xfa, 0x25, 0x9c, - 0x28, 0xbb, 0x55, 0x23, 0x3, 0x14, 0xed, 0x59, 0xe8, 0x3, - 0x99, 0xd4, 0xa4, 0xeb, 0x5c, 0x96, 0xaf, 0x2e, 0x14, 0xd7, - 0x49, 0xa9, 0xc9, 0xc9, 0xae, 0x43, 0x58, 0x97, 0xad, 00, - 0x72, 0x5a, 0xd4, 0xd8, 0xd, 0xcd, 0x78, 0x7, 0xc4, 0xbd, - 0x43, 0x2f, 0x27, 0x22, 0xbd, 0xbf, 0xc4, 0x37, 0x1e, 0x5c, - 0x52, 0x12, 0x71, 0xc1, 0xaf, 0x9a, 0xfe, 0x24, 0x5f, 0xe5, - 0xa5, 0x3b, 0xab, 0xc8, 0xcc, 0x67, 0xcb, 0x4e, 0xc7, 0x87, - 0x9a, 0xd4, 0xe5, 0xa5, 0x63, 0xc4, 0x7c, 0x4f, 0x71, 0xe6, - 0x5c, 0xbf, 0x22, 0xb8, 0xd, 0x52, 0x4e, 0x5a, 0xba, 0xed, - 0x6e, 0x6d, 0xf3, 0x48, 0x73, 0x9a, 0xe2, 0x35, 0x49, 0x39, - 0x6a, 0xf9, 0x2c, 0x3a, 0xe6, 0x9d, 0xcf, 0x84, 0xc2, 0xae, - 0x69, 0xb6, 0x62, 0x5c, 0xb7, 0x26, 0xb3, 0x9d, 0x4c, 0x92, - 0x2a, 0xaf, 0x25, 0x8e, 00, 0xfc, 0x6a, 0xe5, 0xc3, 0x67, - 0x35, 0xa1, 0xe0, 0x4d, 0x14, 0x78, 0x93, 0xc6, 0xba, 0x4e, - 0x9a, 0xd9, 0x2b, 0x71, 0x38, 0x52, 0x1, 0xc7, 0x41, 0x9f, - 0xe9, 0x5f, 0x45, 0x46, 0x3a, 0xd8, 0xfa, 0xda, 0x11, 0xbb, - 0x48, 0xfd, 0x50, 0xfd, 0x92, 0xbc, 0x26, 0xbe, 0x1c, 0xf0, - 0x46, 0x99, 0x6e, 0x51, 0x92, 0x4b, 0x7b, 0x34, 0xc, 0xad, - 0xd9, 0xdb, 0x96, 0xfe, 0x66, 0xbe, 0x88, 0x84, 0x71, 0x5e, - 0x7f, 0xf0, 0x8b, 0x4b, 0x8e, 0xc3, 0xc3, 0x61, 0xe3, 0x5d, - 0x8b, 0x23, 0x10, 0x3e, 0x8a, 0x48, 0x1f, 0xca, 0xbd, 0xe, - 0x11, 0xd3, 0x15, 0xf4, 0x2b, 0x45, 0x63, 0xea, 0x56, 0x8a, - 0xc5, 0xdb, 0x61, 0x92, 0x31, 0x5a, 0x50, 0x8a, 0xa3, 0x6e, - 0x3a, 0x56, 0x84, 0x23, 0xa5, 0x31, 0x97, 0x60, 0x5a, 0xd0, - 0x8b, 0x8c, 0x55, 0x38, 00, 0xc5, 0x5e, 0x88, 0x50, 0x5, - 0xa8, 0xbd, 0x6a, 0xec, 0x63, 0xa5, 0x55, 0x88, 0x70, 0x2a, - 0xd4, 0x62, 0x80, 0x2d, 0x45, 0x56, 0x16, 0xab, 0xc4, 0x3a, - 0x55, 0x95, 0xa0, 0x7, 0xad, 0x3c, 0x76, 0xa6, 0xe, 0x95, - 0x20, 0xeb, 0x40, 0xf, 0x1d, 0x69, 0xd4, 0x8b, 0x4b, 0x40, - 0xa, 0x3a, 0xd3, 0xa9, 0xab, 0x4e, 0xa0, 0x2, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0xe, 0x7e, 0x43, 0x8a, 0xfc, - 0xd7, 0xfd, 0xb8, 0xaf, 0x4d, 0xcf, 0xed, 0x4, 0xe9, 0x9c, - 0xa4, 0x56, 0x10, 0x20, 0x19, 0xcf, 0x3f, 0x36, 0x7f, 0xa5, - 0x7e, 0x94, 0x4d, 0x93, 0x5f, 0x98, 0x9f, 0xb6, 0x89, 0xc7, - 0xed, 0xd, 0x7f, 0x81, 0x8f, 0xdc, 0xc5, 0xfc, 0xda, 0xbe, - 0x67, 0x88, 0x3f, 0xdc, 0xd2, 0xee, 0xd1, 0xf1, 0xfc, 0x51, - 0xae, 0x5, 0x47, 0xbc, 0x91, 0xec, 0xff, 00, 0x6, 0xee, - 0x45, 0xa7, 0x85, 0x6c, 0x50, 0x1f, 0xe1, 0x3f, 0xcc, 0xd7, - 0xac, 0x58, 0xea, 0x20, 0x1, 0xcf, 0xeb, 0x5e, 0x19, 0xf0, - 0xce, 0xf3, 0xc9, 0xd0, 0x6c, 0xd7, 0x3d, 0x13, 0xfa, 0x9a, - 0xf4, 0x7b, 0x4d, 0x4f, 0x81, 0xcd, 0x7b, 0xb8, 0x68, 0xf2, - 0xd1, 0x82, 0xf2, 0x47, 0xd2, 0x60, 0xe3, 0xc9, 0x87, 0x84, - 0x7c, 0x91, 0xe9, 0x16, 0xda, 0x96, 0x40, 0xff, 00, 0x1a, - 0xd0, 0x8f, 0x51, 0xc7, 0xff, 00, 0xae, 0xbc, 0xfe, 0xdb, - 0x56, 0xc6, 0x39, 0x1f, 0x9d, 0x68, 0x47, 0xab, 0xae, 0x39, - 0x75, 0x1f, 0x8d, 0x74, 0x9d, 0x87, 0x72, 0xba, 0x98, 0x1d, - 0xea, 0x41, 0xa9, 0x3, 0xde, 0xb8, 0x71, 0xae, 0x44, 0x3f, - 0xe5, 0xa2, 0xfe, 0x62, 0x9d, 0xfd, 0xbf, 0x8, 0x1f, 0xeb, - 0x17, 0xfe, 0xfa, 0xa9, 0xe6, 0x5d, 0xc9, 0xe6, 0x8a, 0xea, - 0x76, 0xaf, 0xa8, 0x8c, 0x75, 0xa8, 0xff, 00, 0xb4, 0x7d, - 0xff, 00, 0x5a, 0xe3, 0x5b, 0x5f, 0x87, 0x1f, 0xeb, 0x17, - 0xfe, 0xfa, 0x14, 0xc5, 0xd7, 0xa3, 0xcf, 0xdf, 0x5f, 0xfb, - 0xea, 0x8e, 0x65, 0xdc, 0x39, 0xa3, 0xdc, 0xed, 0xc6, 0xa5, - 0xef, 0x4f, 0x1a, 0x8f, 0xbd, 0x71, 0x43, 0x5b, 0x42, 0x7f, - 0xd6, 0x2f, 0xfd, 0xf4, 0x2a, 0x45, 0xd6, 0x54, 0xff, 00, - 0x1a, 0x9f, 0xf8, 0x15, 0x3b, 0xa1, 0xdd, 0x77, 0x3b, 0x41, - 0xa9, 0x7b, 0xd3, 0x86, 0xa3, 0xef, 0x5c, 0x62, 0xeb, 0x2b, - 0x9f, 0xbc, 0xbf, 0x9d, 0x48, 0xba, 0xb8, 0x3d, 0xc7, 0xe7, - 0x45, 0xc2, 0xe8, 0xec, 0x46, 0xa5, 0xef, 0x4f, 0x1a, 0x8f, - 0xbd, 0x71, 0xa3, 0x56, 0x19, 0xea, 0x3f, 0x3a, 0x72, 0xea, - 0xd9, 0xee, 0x3f, 0x3a, 0x63, 0x3b, 0x2f, 0xed, 0x2f, 0x7a, - 0x70, 0xd4, 0x7d, 0xeb, 0x8f, 0x1a, 0xaf, 0xb8, 0xfc, 0xe9, - 0xeb, 0xaa, 0xfb, 0x8f, 0xce, 0x80, 0x3b, 0x1, 0xa8, 0xe3, - 0xbd, 0x38, 0x6a, 0x5e, 0xf5, 0xc8, 0x2e, 0xab, 0xc7, 0x51, - 0xf9, 0xd3, 0x97, 0x55, 0xe3, 0xa8, 0xfc, 0xe8, 0x3, 0xaf, - 0x1a, 0x8f, 0xbd, 0x38, 0x6a, 0x3e, 0xf5, 0xc8, 0x8d, 0x50, - 0x7a, 0x8f, 0xce, 0x9c, 0x35, 0x4c, 0xf7, 0x1f, 0x9d, 00, - 0x75, 0xcb, 0xa8, 0x8f, 0xf2, 0x69, 0xe3, 0x51, 0xf7, 0xae, - 0x45, 0x75, 0x41, 0xea, 0x3f, 0x3a, 0x70, 0xd4, 0xc7, 0x5c, - 0x8f, 0xce, 0x80, 0x3a, 0xe1, 0xa8, 0xfb, 0xd3, 0x86, 0xa3, - 0xef, 0x5c, 0x90, 0xd5, 0x3d, 0xc7, 0xe7, 0x4f, 0x1a, 0x98, - 0xf5, 0x1f, 0x9d, 00, 0x75, 0xa3, 0x51, 0xf7, 0xa7, 0xd, - 0x47, 0xdf, 0xf5, 0xae, 0x48, 0x6a, 0x63, 0xd4, 0x7e, 0x74, - 0xe1, 0xa9, 0x7b, 0xfe, 0xb4, 0x1, 0xd6, 0x8d, 0x47, 0xde, - 0x9d, 0xfd, 0xa3, 0xef, 0x5c, 0x98, 0xd4, 0xbd, 0xc7, 0xe7, - 0x4e, 0x1a, 0x9f, 0xb8, 0xfc, 0xe8, 0x3, 0xad, 0xfe, 0xd1, - 0xf7, 0xa7, 0xd, 0x4a, 0xb9, 0x2f, 0xed, 0x2f, 0x71, 0xf9, - 0xd3, 0x86, 0xa5, 0xee, 0x7, 0xe3, 0x40, 0x1d, 0x68, 0xd4, - 0x47, 0xaf, 0xeb, 0x4f, 0x1a, 0x97, 0x3d, 0x6b, 0x92, 0xfe, - 0xd2, 0xf7, 0x1f, 0x9d, 0x38, 0x6a, 0x5e, 0xe3, 0xf3, 0xa0, - 0xe, 0xb4, 0x6a, 0x3e, 0xf4, 0xe1, 0xa8, 0x8f, 0x5a, 0xe4, - 0x86, 0xa5, 0xee, 0xf, 0xe3, 0x4e, 0xfe, 0xd1, 0xf7, 0xfd, - 0x68, 0x3, 0xad, 0xfe, 0xd1, 0x14, 0xe1, 0xa8, 0xa, 0xe4, - 0xc6, 0xa4, 0x3d, 0x45, 0x38, 0x6a, 0x7e, 0xe2, 0x80, 0x3a, - 0xc5, 0xd4, 0x7, 0xad, 0x38, 0x6a, 0x3, 0xd7, 0xf5, 0xae, - 0x4c, 0x6a, 0x5e, 0xe2, 0x9c, 0x35, 0x3f, 0x7f, 0xd6, 0x80, - 0x3a, 0xd1, 0xa8, 0xf, 0x5a, 0x51, 0x7e, 0xf, 0x53, 0x5c, - 0xa0, 0xd4, 0xfd, 0xe9, 0xcb, 0xa9, 0x67, 0xb8, 0xa0, 0xe, - 0xaf, 0xed, 0xc0, 0xff, 00, 0xfa, 0xe9, 0xdf, 0x6d, 0x1d, - 0x8d, 0x72, 0x83, 0x52, 0x1e, 0xbf, 0xad, 0x3c, 0x6a, 0x7e, - 0xe2, 0x80, 0x3a, 0xa1, 0x7a, 0x3d, 0x69, 0xc2, 0xf7, 0xde, - 0xb9, 0x51, 0xa9, 0xf3, 0xd4, 0x53, 0x97, 0x52, 0xf7, 0x1f, - 0x9d, 00, 0x75, 0x3f, 0x6d, 0x1e, 0xb9, 0xa7, 0xb, 0xce, - 0x3a, 0xd7, 0x2e, 0x35, 0x2f, 0x71, 0xf9, 0xd3, 0x86, 0xa5, - 0xee, 0x28, 0x3, 0xa8, 0x17, 0x83, 0xb7, 0xf3, 0xa5, 0x17, - 0xbc, 0xd7, 0x30, 0x35, 0x2f, 0x7f, 0xd6, 0x9c, 0x35, 0x2f, - 0x71, 0x40, 0x1d, 0x38, 0xbc, 0xf7, 0xa5, 0x17, 0x9e, 0xff, - 00, 0xad, 0x73, 0x23, 0x52, 0xe7, 0xa8, 0xa7, 0x8d, 0x48, - 0x7a, 0x8a, 00, 0xe9, 0x85, 0xed, 0x28, 0xbc, 0x15, 0xcd, - 0xd, 0x47, 0xdc, 0x53, 0x86, 0xa3, 0x8e, 0xe3, 0xf3, 0xa0, - 0xe, 0x97, 0xed, 0x82, 0x8f, 0xb5, 0x8a, 0xe7, 0x6, 0xa3, - 0xee, 0x29, 0xdf, 0xda, 0x3, 0xdb, 0xf3, 0xa0, 0xe, 0x8b, - 0xed, 0x6b, 0x4e, 0xfb, 0x4a, 0xf7, 0xae, 0x74, 0x6a, 0x23, - 0xdb, 0xf3, 0xa7, 0x8d, 0x40, 0x63, 0xa8, 0xa0, 0xd, 0xff, - 00, 0xb4, 0x25, 0x28, 0x9d, 0x6b, 00, 0x6a, 0x3e, 0xe2, - 0x9e, 0x35, 0x1, 0xea, 0x28, 0x3, 0x74, 0x4e, 0xa6, 0x97, - 0xcd, 0x5f, 0x5a, 0xc2, 0x1a, 0x80, 0xf5, 0xfd, 0x69, 0xdf, - 0x6f, 0x1e, 0xb4, 0x1, 0xb8, 0x24, 0x53, 0xde, 0x8d, 0xe3, - 0xd6, 0xb1, 0x45, 0xf8, 0xf5, 0xfd, 0x69, 0xc2, 0xfb, 0xfd, - 0xaf, 0xd6, 0x80, 0x36, 0x77, 0xf, 0x5a, 0x32, 0x3d, 0x6b, - 0x23, 0xed, 0xde, 0xff, 00, 0xad, 0x38, 0x5f, 0xf, 0x5f, - 0xd6, 0x80, 0x35, 0x73, 0x46, 0x6b, 0x33, 0xed, 0xc0, 0xf7, - 0xa5, 0xfb, 0x6f, 0xbf, 0xeb, 0x40, 0x1a, 0x74, 0x56, 0x70, - 0xbd, 0xf7, 0xa7, 0xb, 0xdf, 0x7a, 00, 0xbf, 0x45, 0x52, - 0x17, 0xb9, 0xef, 0x4b, 0xf6, 0xcc, 0xf7, 0xa0, 0xb, 0x94, - 0x55, 0x4f, 0xb6, 0x53, 0x85, 0xd8, 0xf6, 0xa0, 0xb, 0x34, - 0x55, 0x71, 0x74, 0xd, 0x28, 0xba, 0x6, 0x80, 0x27, 0xa2, - 0xa1, 0x17, 0x22, 0x8f, 0xb4, 0xad, 00, 0x4d, 0x45, 0x46, - 0x27, 0x53, 0x47, 0x9c, 0xb4, 0x1, 0x25, 0x14, 0xcf, 0x35, - 0x7d, 0x68, 0xf3, 0x17, 0xd6, 0x80, 0x1f, 0x45, 0x37, 0x70, - 0x3d, 0xe9, 0x77, 0xf, 0x5a, 00, 0x5a, 0x29, 0x32, 0x28, - 0xcd, 00, 0x18, 0xcd, 0x21, 0x40, 0x7a, 0x80, 0x69, 0x73, - 0x4b, 0x40, 0x11, 0x98, 0x50, 0xff, 00, 0x2, 0xfe, 0x42, - 0x9a, 0xd6, 0x90, 0xb7, 0x58, 0x63, 0x3f, 0x55, 0x15, 0x35, - 0x14, 0x1, 0x51, 0xf4, 0xab, 0x37, 0x3f, 0x35, 0xb4, 0x47, - 0xfe, 0x2, 0x2a, 0x17, 0xf0, 0xfe, 0x9d, 0x27, 0xde, 0xb3, - 0x88, 0xff, 00, 0xc0, 0x6b, 0x46, 0x8a, 00, 0xc6, 0x93, - 0xc1, 0xfa, 0x34, 0xa3, 0xe6, 0xd3, 0xe2, 0x3f, 0x9f, 0xf8, - 0xd5, 0x69, 0x7c, 0x1, 0xa1, 0xca, 0x72, 0x6c, 0x22, 0xfa, - 0x60, 0xff, 00, 0x8d, 0x74, 0x54, 0x50, 0x7, 0x21, 0x37, - 0xc2, 0xcf, 0xf, 0x4d, 0xf7, 0xac, 0x23, 0x19, 0xf4, 0x7, - 0xfc, 0x6a, 0x8c, 0xff, 00, 0x6, 0x3c, 0x3b, 0x36, 0x7f, - 0xd1, 0x51, 0x7f, 0x3, 0xfe, 0x35, 0xde, 0xd1, 0x40, 0x1e, - 0x65, 0x71, 0xf0, 0xf, 0xc3, 0x93, 0xff, 00, 0xcb, 0xbc, - 0x63, 0xfe, 0x2, 0x7f, 0xf8, 0xaa, 0xce, 0x9f, 0xf6, 0x6c, - 0xf0, 0xe4, 0xc4, 0xe1, 0x11, 0x33, 0xfe, 0xc1, 0x3f, 0xfb, - 0x35, 0x7a, 0xf5, 0x14, 0x1, 0xe2, 0x33, 0xfe, 0xcb, 0x5e, - 0x1e, 0x94, 0x70, 0x63, 0xfc, 0x63, 0x3f, 0xfc, 0x55, 0x66, - 0x5d, 0x7e, 0xc8, 0xfa, 0xc, 0xdf, 0x74, 0xc6, 0x3f, 0xed, - 0x99, 0xff, 00, 0xe2, 0xab, 0xe8, 0x1a, 0x28, 0x3, 0xe6, - 0x9b, 0x9f, 0xd8, 0xdf, 0x48, 0x93, 0x38, 0x68, 0xcf, 0x6f, - 0xf5, 0x7f, 0xfd, 0x9d, 0x63, 0xdd, 0xfe, 0xc5, 0x56, 0x12, - 0x29, 0xc2, 0xc7, 0x93, 0xdc, 0x2f, 0xff, 00, 0x67, 0x5f, - 0x57, 0x51, 0x40, 0x1f, 0x1b, 0x5e, 0xfe, 0xc4, 0x36, 0xec, - 0xa7, 0x6c, 0x6a, 0x7e, 0x8b, 0xff, 00, 0xd9, 0xd7, 0x15, - 0xad, 0xfe, 0xc4, 0x2e, 0xa4, 0xec, 0xb6, 0x61, 0xf4, 0x4c, - 0xff, 00, 0xec, 0xf5, 0xf7, 0xee, 0x2a, 0x39, 0x24, 0x8, - 0x3d, 0x68, 0x3, 0xf3, 0x1f, 0x5a, 0xfd, 0x8c, 0x2e, 0x60, - 0x66, 0xc5, 0xb3, 0x8c, 0x67, 0xfe, 0x59, 0x7f, 0xf6, 0x55, - 0xd9, 0x7e, 0xcf, 0x7f, 0xb3, 0x87, 0xfc, 0x22, 0x3e, 0x2a, - 0x17, 0x93, 0x5b, 0xe1, 0x94, 0x9c, 0x12, 0x98, 0xc7, 0xfe, - 0x3c, 0x6b, 0xef, 0x5b, 0xb9, 0x51, 0x94, 0x83, 0x83, 0x5c, - 0xfd, 0xda, 0x44, 0x8e, 0x59, 0x54, 0x6, 0xf5, 0xcd, 00, - 0x66, 0x8, 0x44, 0x11, 0x6d, 0x1c, 0x60, 0x57, 0x3f, 0xab, - 0xc9, 0x5b, 0x77, 0x97, 0x38, 0xcd, 0x73, 0x3a, 0xad, 0xc0, - 0x39, 0xa0, 0xe, 0x73, 0x52, 0x93, 0x93, 0x5c, 0x6e, 0xb1, - 0x27, 0xde, 0xae, 0xa7, 0x52, 0x90, 0x73, 0xcd, 0x71, 0x5a, - 0xcc, 0xb8, 0xdd, 0x40, 0x1c, 0x1f, 0x8c, 0xae, 0xbc, 0xab, - 0x39, 0x7d, 0xeb, 0xe5, 0xef, 0x88, 0x97, 0xd9, 0x32, 0x57, - 0xd0, 0xbf, 0x10, 0xaf, 0x76, 0x5b, 0x30, 0x4, 0x67, 0x15, - 0xf2, 0xdf, 0x8f, 0xaf, 0xb, 0x3b, 0x8e, 0x39, 0x3d, 0xab, - 0xe6, 0x73, 0x5a, 0x9d, 0xf, 0x8f, 0xce, 0xea, 0x7d, 0x93, - 0xcd, 0x75, 0x39, 0x32, 0x58, 0xe6, 0xb8, 0xed, 0x49, 0xf2, - 0xed, 0x5d, 0x46, 0xa7, 0x27, 0x6, 0xb8, 0xfb, 0xf7, 0xcb, - 0x9a, 0xf1, 0xf0, 0xb1, 0x3c, 0xc, 0xc, 0x7a, 0x99, 0x93, - 0xb5, 0x7a, 0xbf, 0xec, 0x9b, 0xa3, 0x36, 0xaf, 0xf1, 0x96, - 0xc9, 0xf6, 0x16, 0x4b, 0x48, 0x64, 0x9f, 0x76, 0xde, 0x1, - 0x18, 0x3, 0x9e, 0xdd, 0x4d, 0x79, 0x25, 0xc3, 0x72, 0x6b, - 0xea, 0xcf, 0xd8, 0x33, 0xc3, 0xd, 0x7b, 0xa9, 0x6b, 0x7a, - 0x83, 0xc, 0x16, 0x92, 0x18, 0x22, 0x60, 0x33, 0x9f, 0xbd, - 0xbb, 0xfa, 0x57, 0xd2, 0xe1, 0xa3, 0x79, 0x23, 0xeb, 0xf0, - 0xb1, 0xbc, 0xd1, 0xfa, 0x49, 0xe0, 0xfb, 0x53, 0x69, 0xe1, - 0xeb, 0x8, 0xca, 0xed, 0x6f, 0x28, 0x12, 0x3d, 0xcf, 0x26, - 0xba, 0x58, 0x6b, 0x3e, 0xda, 0x31, 0x1a, 0xaa, 0x8e, 0x2, - 0x8c, 0xa, 0xd1, 0x80, 0x66, 0xbd, 0x93, 0xe8, 0xb, 0xf6, - 0xfd, 0x45, 0x69, 0x42, 0x2b, 0x3e, 0x1, 0xd2, 0xb4, 0x21, - 0x1c, 0xd0, 0x5, 0xf8, 0x32, 0x2a, 0xec, 0x43, 0xa5, 0x54, - 0x84, 0x55, 0xd8, 0x86, 00, 0xa0, 0xb, 0x91, 0xc, 0x62, - 0xad, 0x47, 0x55, 0xa2, 0x19, 0xab, 0x51, 0x8e, 0x5, 00, - 0x59, 0x88, 0xd4, 0xeb, 0x50, 0xc5, 0x53, 0xaf, 0x6a, 00, - 0x90, 0x75, 0xa7, 0xad, 0x30, 0x75, 0xa9, 0x7, 0x4a, 00, - 0x70, 0xe9, 0x4b, 0x45, 0x14, 00, 0xab, 0x4e, 0xa4, 0x1d, - 0x29, 0x68, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, - 0x3, 0x9e, 0x92, 0xbf, 0x33, 0x3f, 0x6e, 0x2b, 0x17, 0xb0, - 0xfd, 0xa1, 0x26, 0x76, 0xce, 0xc9, 0xec, 0xe1, 0x90, 0x12, - 0x38, 0xe7, 0x76, 0x47, 0xe1, 0x5f, 0xa6, 0xb2, 0x62, 0xbf, - 0x3e, 0x7f, 0xe0, 0xa1, 0x1a, 0xb, 0x43, 0xe3, 0xed, 0x27, - 0x59, 0x4, 0x5, 0x68, 0x4, 0xd, 0x8e, 0xa4, 0x80, 0x2b, - 0xc1, 0xce, 0xe9, 0xb9, 0xe1, 0x1b, 0x5d, 0x1a, 0x67, 0xcc, - 0xf1, 0x15, 0x27, 0x53, 0x2, 0xe4, 0xbe, 0xcb, 0x4c, 0xab, - 0xe0, 0x8d, 0x41, 0x61, 0xd1, 0x6d, 0xe, 0xe0, 0x6, 0xce, - 0xb9, 0xae, 0xc3, 0xfe, 0x12, 0x48, 0x20, 0x4f, 0xf5, 0xc9, - 0x9f, 0xf7, 0xab, 0xc6, 0xbc, 0x37, 0xad, 0x81, 0xa0, 0x5b, - 0xa0, 0x27, 0x85, 0xeb, 0x9f, 0x7a, 0xa5, 0xa9, 0x78, 0xbc, - 0xdb, 0xe5, 0x72, 0x49, 0x1d, 0xf3, 0xff, 00, 0xd7, 0xad, - 0x16, 0x36, 0x34, 0xe8, 0xc5, 0xf9, 0x1a, 0xc7, 0x31, 0x85, - 0x3c, 0x34, 0x1a, 0xec, 0x8f, 0x6b, 0x6f, 0x1d, 0xc7, 0x1f, - 0x1e, 0x7c, 0x60, 0x7f, 0xbd, 0xff, 00, 0xd7, 0xaa, 0xf2, - 0xfc, 0x43, 0x84, 0x7f, 0xcb, 0xd4, 0x7f, 0xf7, 0xdf, 0xff, - 00, 0x5e, 0xbe, 0x73, 0xd4, 0x7c, 0x70, 0x70, 0x70, 0xcd, - 0xff, 00, 0x7d, 0x7f, 0xf5, 0xeb, 0x9f, 0xba, 0xf1, 0xbc, - 0xc4, 0x9d, 0xac, 0xe7, 0xfe, 0x4, 0x7f, 0xc6, 0xbc, 0x3a, - 0xf9, 0xbd, 0xb6, 0x3e, 0x73, 0x13, 0x9f, 0x59, 0xd9, 0x1f, - 0x52, 0x37, 0xc4, 0x6b, 0x71, 0xff, 00, 0x2f, 0x71, 0x7f, - 0xdf, 0x7f, 0xfd, 0x7a, 0x89, 0xbe, 0x24, 0xdb, 0xff, 00, - 0xcf, 0xdc, 0x7f, 0xf7, 0xdf, 0xff, 00, 0x5e, 0xbe, 0x54, - 0x6f, 0x18, 0xdc, 0x1f, 0xe2, 0x71, 0xf5, 0x63, 0xfe, 0x34, - 0xd3, 0xe2, 0xbb, 0x82, 0x7e, 0xfb, 0xf, 0xf8, 0x11, 0xff, - 00, 0x1a, 0xf2, 0xe5, 0x9b, 0xce, 0xe7, 0x8d, 0x2c, 0xfa, - 0xa7, 0x43, 0xea, 0xb3, 0xf1, 0x2a, 0xdf, 0x1f, 0xf1, 0xf7, - 0x1f, 0xfd, 0xf7, 0xff, 00, 0xd7, 0xa7, 0xc7, 0xf1, 0x22, - 0xdc, 0xe3, 0xfd, 0x2e, 0x3f, 0xfb, 0xe8, 0x7f, 0x8d, 0x7c, - 0x9e, 0x7c, 0x55, 0x71, 0x9f, 0xbe, 0xdf, 0xf7, 0xd1, 0xff, - 00, 0x1a, 0x72, 0xf8, 0xbe, 0xe0, 0x7f, 0x13, 0x7f, 0xdf, - 0x47, 0xfc, 0x68, 0x59, 0xbc, 0xc1, 0x67, 0xd5, 0x3b, 0x1f, - 0x5b, 0x2f, 0xc4, 0x7b, 0x73, 0xff, 00, 0x2f, 0x71, 0xff, - 00, 0xdf, 0x7f, 0xfd, 0x7a, 0xb1, 0x1f, 0xc4, 0x78, 0x30, - 0x3f, 0xd2, 0xe2, 0xff, 00, 0xbf, 0x9f, 0xfd, 0x7a, 0xf9, - 0x19, 0x7c, 0x65, 0x70, 0x3f, 0x89, 0xbf, 0x33, 0xfe, 0x35, - 0x61, 0x7c, 0x6f, 0x32, 0xf7, 0x7f, 0xfb, 0xe8, 0xff, 00, - 0x8d, 0x68, 0xb3, 0x99, 0x1a, 0xac, 0xfe, 0x7d, 0x4f, 0xae, - 0x63, 0xf8, 0x8d, 0xf, 0xfc, 0xfd, 0xc5, 0xff, 00, 0x7f, - 0x3f, 0xfa, 0xf5, 0x61, 0x3e, 0x23, 0x43, 0xc7, 0xfa, 0x5c, - 0x5f, 0xf7, 0xdf, 0xff, 00, 0x5e, 0xbe, 0x44, 0x4f, 0x1e, - 0x4c, 0x3b, 0xbf, 0xfd, 0xf5, 0xff, 00, 0xd7, 0xa9, 0x93, - 0xc7, 0xf2, 0xff, 00, 0x79, 0xff, 00, 0xef, 0xa3, 0xfe, - 0x35, 0xb2, 0xce, 0xa4, 0x6c, 0xb8, 0x86, 0x48, 0xfa, 0xf1, - 0x7e, 0x23, 0x43, 0x9f, 0xf8, 0xfb, 0x8b, 0xfe, 0xfb, 0xff, - 00, 0xeb, 0xd5, 0x84, 0xf8, 0x8b, 0x17, 0xfc, 0xfd, 0x45, - 0xff, 00, 0x7d, 0xff, 00, 0xf5, 0xeb, 0xe4, 0x34, 0xf8, - 0x81, 0x20, 0x3f, 0x79, 0xff, 00, 0xef, 0xa3, 0xfe, 0x35, - 0x62, 0x3f, 0x88, 0x8f, 0xfd, 0xf6, 0xff, 00, 0xbe, 0xbf, - 0xfa, 0xf5, 0xa2, 0xce, 0x9f, 0x73, 0x65, 0xc4, 0x4c, 0xfa, - 0xf1, 0x3e, 0x22, 0x42, 0x7f, 0xe5, 0xe6, 0x33, 0xff, 00, - 0x2, 0xff, 00, 0xeb, 0xd5, 0x84, 0xf8, 0x85, 0xf, 0xfc, - 0xfc, 0x27, 0xfd, 0xf5, 0xff, 00, 0xd7, 0xaf, 0x90, 0xd3, - 0xe2, 0x33, 0x9f, 0xe3, 0x71, 0xff, 00, 0x2, 0xff, 00, - 0xeb, 0xd5, 0x98, 0xfe, 0x23, 0x38, 0xff, 00, 0x96, 0x8f, - 0xff, 00, 0x7d, 0x7f, 0xf5, 0xeb, 0x58, 0xe7, 0x7e, 0x66, - 0xf1, 0xe2, 0x23, 0xeb, 0xa4, 0xf1, 0xfc, 0x1f, 0xf3, 0xf1, - 0x1f, 0xfd, 0xf5, 0xff, 00, 0xd7, 0xa9, 0xe3, 0xf1, 0xfd, - 0xbf, 0xfc, 0xf7, 0x8f, 0xfe, 0xfa, 0xff, 00, 0xeb, 0xd7, - 0xc8, 0xc9, 0xf1, 0x21, 0x87, 0xfc, 0xb4, 0x6f, 0xfb, 0xeb, - 0xff, 00, 0xaf, 0x56, 0x63, 0xf8, 0x92, 0xc7, 0xf8, 0xdb, - 0xfe, 0xfa, 0xff, 00, 0xeb, 0xd6, 0xeb, 0x3b, 0x46, 0xf1, - 0xe2, 0x24, 0x7d, 0x6c, 0xbe, 0x3b, 0xb5, 0x3f, 0xf2, 0xde, - 0x3f, 0xfb, 0xe8, 0x7f, 0x8d, 0x4a, 0x9e, 0x39, 0xb5, 0x3f, - 0xf2, 0xde, 0x3f, 0xfb, 0xe8, 0x7f, 0x8d, 0x7c, 0x9a, 0x9f, - 0x12, 0x1b, 0xfb, 0xed, 0xff, 00, 0x7d, 0x7f, 0xf5, 0xea, - 0xca, 0x7c, 0x49, 0x3c, 0x65, 0xd8, 0x7f, 0xc0, 0xbf, 0xfa, - 0xf5, 0xa2, 0xce, 0x93, 0x36, 0x5c, 0x40, 0x99, 0xf5, 0x7a, - 0x78, 0xd6, 0xd0, 0x8f, 0xf5, 0xe9, 0xf8, 0x11, 0xfe, 0x35, - 0x30, 0xf1, 0x8d, 0xa1, 0xff, 00, 0x97, 0x84, 0xfc, 0xc7, - 0xf8, 0xd7, 0xca, 0x71, 0xfc, 0x4a, 0x27, 0xa3, 0x37, 0xfd, - 0xf5, 0xff, 00, 0xd7, 0xab, 0x31, 0xfc, 0x48, 0x3d, 0xd9, - 0xbf, 0xef, 0xaf, 0xfe, 0xbd, 0x6a, 0xb3, 0x88, 0xb3, 0x75, - 0x9f, 0xc0, 0xfa, 0xa5, 0x3c, 0x61, 0x66, 0xc3, 0xfe, 0x3e, - 0x13, 0xfe, 0xfa, 0x1f, 0xe3, 0x52, 0xaf, 0x8b, 0x2d, 0x1b, - 0xfe, 0x5e, 0x63, 0xff, 00, 0xbe, 0x87, 0xf8, 0xd7, 0xcb, - 0x51, 0xfc, 0x46, 0xc8, 0xfb, 0xcf, 0xff, 00, 0x7d, 0x7f, - 0xf5, 0xea, 0xcc, 0x7f, 0x11, 0xf1, 0x8e, 0x58, 0xff, 00, - 0xc0, 0xbf, 0xfa, 0xf5, 0xaa, 0xcd, 0xe0, 0xcd, 0x96, 0x7b, - 0x4c, 0xfa, 0x80, 0x78, 0xa6, 0xd4, 0xff, 00, 0xcb, 0xcc, - 0x7f, 0xf7, 0xd0, 0xa9, 0x57, 0xc4, 0xf6, 0xa4, 0xf, 0xf4, - 0x98, 0xff, 00, 0xef, 0xb1, 0x5f, 0x31, 0x47, 0xf1, 0x14, - 0x67, 0xef, 0x37, 0xe7, 0xff, 00, 0xd7, 0xab, 0x9, 0xf1, - 0x10, 0x1f, 0xe2, 0x6f, 0xfb, 0xeb, 0xff, 00, 0xaf, 0x5a, - 0x2c, 0xd6, 0xc, 0xd5, 0x67, 0x74, 0xd9, 0xf4, 0xc8, 0xf1, - 0x25, 0xb7, 0xfc, 0xfd, 0x47, 0xff, 00, 0x7d, 0x8f, 0xf1, - 0xa9, 0x7, 0x88, 0xed, 0xcf, 0xfc, 0xbc, 0x45, 0xff, 00, - 0x7d, 0xf, 0xf1, 0xaf, 0x9b, 0x23, 0xf8, 0x86, 0x8, 0xfb, - 0xcd, 0xff, 00, 0x7d, 0x7f, 0xf5, 0xea, 0xc4, 0x7f, 0x10, - 0x47, 0xf7, 0x9b, 0xfe, 0xfa, 0xff, 00, 0xeb, 0xd6, 0x8b, - 0x33, 0x81, 0xaa, 0xce, 0x29, 0xb3, 0xe8, 0xf1, 0xe2, 0x18, - 0x3b, 0x5c, 0x47, 0xff, 00, 0x7d, 0xf, 0xf1, 0xa7, 0x8d, - 0x7e, 0x1f, 0xf9, 0xef, 0x1f, 0xfd, 0xf4, 0x3f, 0xc6, 0xbe, - 0x75, 0x8f, 0xe2, 0x6, 0x7f, 0x89, 0xbf, 0xef, 0xaf, 0xfe, - 0xbd, 0x58, 0x4f, 0x88, 0x1f, 0xed, 0xb7, 0xfd, 0xf5, 0xff, - 00, 0xd7, 0xab, 0x59, 0x95, 0x36, 0x6a, 0xb3, 0x6a, 0x4c, - 0xfa, 0x17, 0xfb, 0x76, 0x23, 0xff, 00, 0x2d, 0x93, 0xfe, - 0xfa, 0xa9, 0x6, 0xb9, 0x19, 0xe9, 0x22, 0xff, 00, 0xdf, - 0x55, 0xf3, 0xf2, 0x78, 0xf8, 0x90, 0x3e, 0x76, 0xff, 00, - 0xbe, 0xbf, 0xfa, 0xf5, 0x61, 0x3c, 0x7c, 0x7f, 0xbe, 0xdf, - 0xf7, 0xd7, 0xff, 00, 0x5e, 0xad, 0x66, 0x14, 0xd9, 0x6b, - 0x33, 0xa4, 0xcf, 0x7d, 0x1a, 0xd4, 0x64, 0xff, 00, 0xac, - 0x5f, 0xfb, 0xea, 0x9e, 0x35, 0x94, 0x3f, 0xf2, 0xd1, 0x4f, - 0xe3, 0x5e, 0x10, 0x9e, 0x3d, 0x38, 0xfb, 0xed, 0xff, 00, - 0x7d, 0x7f, 0xf5, 0xea, 0xc2, 0x78, 0xf4, 0x9f, 0xe2, 0x6f, - 0xfb, 0xeb, 0xff, 00, 0xaf, 0x5a, 0x2c, 0x6d, 0x36, 0x6a, - 0xb3, 0xa, 0x4c, 0xf7, 0x21, 0xac, 0x27, 0xf7, 0xd7, 0xf3, - 0xa7, 0xd, 0x5d, 0x73, 0xf7, 0xd7, 0xf3, 0xaf, 0x13, 0x4f, - 0x1e, 0xb6, 0x7e, 0xf1, 0xfc, 0xff, 00, 0xfa, 0xf5, 0x3a, - 0xf8, 0xf1, 0x8f, 0xf1, 0x37, 0xe7, 0xff, 00, 0xd7, 0xab, - 0x58, 0xba, 0x6f, 0xa9, 0xa2, 0xc7, 0x52, 0x7d, 0x4f, 0x68, - 0x1a, 0xc2, 0xff, 00, 0x79, 0x7f, 0x3a, 0x72, 0xea, 0xc9, - 0xfd, 0xf5, 0xfc, 0xeb, 0xc7, 0x13, 0xc7, 0x7c, 0x8e, 0x5b, - 0xf3, 0xff, 00, 0xeb, 0xd5, 0x88, 0xfc, 0x75, 0x8f, 0x5f, - 0xcf, 0xff, 00, 0xaf, 0x56, 0xb1, 0x34, 0xdf, 0x52, 0xfe, - 0xb9, 0x49, 0xf5, 0x3d, 0x79, 0x75, 0x65, 0xfe, 0xfa, 0xfe, - 0x74, 0xe1, 0xab, 0x2e, 0x7e, 0xfa, 0xfe, 0x75, 0xe4, 0xcb, - 0xe3, 0x91, 0xef, 0xf9, 0xff, 00, 0xf5, 0xea, 0x65, 0xf1, - 0xba, 0xf7, 0xce, 0x3e, 0xbf, 0xfd, 0x7a, 0xaf, 0x6f, 0x4f, - 0xb9, 0x6b, 0x13, 0x49, 0xf5, 0x3d, 0x58, 0x6a, 0xa9, 0xfd, - 0xf5, 0xfc, 0xe9, 0xc3, 0x56, 0x4f, 0xef, 0xaf, 0xe7, 0x5e, - 0x5a, 0x9e, 0x36, 0x8c, 0xf6, 0x3f, 0x9f, 0xff, 00, 0x5e, - 0xa6, 0x4f, 0x19, 0x46, 0x7b, 0x1f, 0xce, 0xab, 0xdb, 0x41, - 0xf5, 0x2f, 0xdb, 0xd3, 0xee, 0x7a, 0x78, 0xd5, 0x53, 0xfb, - 0xeb, 0xf9, 0xd3, 0x86, 0xa8, 0xb8, 0xfb, 0xeb, 0xf9, 0xd7, - 0x99, 0xaf, 0x8b, 0xe2, 0x27, 0xf8, 0xbf, 0x3a, 0x99, 0x7c, - 0x59, 0x17, 0xab, 0x7e, 0x62, 0xab, 0xda, 0x43, 0xb8, 0xd5, - 0x58, 0x3e, 0xa7, 0xa4, 0xd, 0x55, 0x7f, 0xbe, 0xbf, 0x9d, - 0x3c, 0x6a, 0xab, 0xfd, 0xf5, 0xfc, 0xeb, 0xce, 0x57, 0xc5, - 0x31, 0x1e, 0x85, 0xbf, 0x31, 0x53, 0x27, 0x89, 0xa3, 0x3c, - 0x64, 0x8f, 0xc6, 0x9f, 0x3c, 0x7b, 0x95, 0xed, 0x23, 0xdc, - 0xf4, 0x21, 0xaa, 0xa0, 0xfe, 0x35, 0xfc, 0xe9, 0xc3, 0x55, - 0x5f, 0xef, 0xaf, 0xe7, 0x5e, 0x7e, 0x9e, 0x21, 0x8d, 0xba, - 0x31, 0xfc, 0xea, 0x45, 0xd7, 0x93, 0xfb, 0xe7, 0xf3, 0xa7, - 0xcc, 0xbb, 0x95, 0xcd, 0x1e, 0xe7, 0x7e, 0x35, 0x55, 0xfe, - 0xf2, 0xfe, 0x74, 0xf1, 0xaa, 0x2f, 0xf7, 0x87, 0xe7, 0x5c, - 0x12, 0x6b, 0x88, 0x7a, 0x37, 0xeb, 0x52, 0xae, 0xb2, 0xb8, - 0xfb, 0xc7, 0xf3, 0xaa, 0xba, 0x1d, 0xd1, 0xdd, 0x7f, 0x6a, - 0xf, 0xef, 0xf, 0xce, 0x9c, 0x35, 0x45, 0xfe, 0xf0, 0xfc, - 0xeb, 0x86, 0x1a, 0xc0, 0x3f, 0xc4, 0x7f, 0x3a, 0x7a, 0xea, - 0xf9, 0x1d, 0x4f, 0xe7, 0x40, 0xce, 0xe0, 0x6a, 0x8b, 0x8f, - 0xbc, 0x3f, 0x3a, 0x70, 0xd5, 0x17, 0xfb, 0xc3, 0xf3, 0xae, - 0x24, 0x6a, 0xbc, 0x75, 0x3f, 0x9d, 0x38, 0x6a, 0xa4, 0xe, - 0xa7, 0xf3, 0xa0, 0xe, 0xdd, 0x75, 0x41, 0xfd, 0xe1, 0xf9, - 0xd3, 0x86, 0xa8, 0x3f, 0xbc, 0x3f, 0x3a, 0xe2, 0x6, 0xac, - 0x71, 0xd4, 0xd4, 0x83, 0x55, 0xc7, 0x52, 0x7f, 0x3a, 00, - 0xed, 0x46, 0xa8, 0xbf, 0xde, 0x1f, 0x9d, 0x3f, 0xfb, 0x50, - 0x7f, 0x78, 0x7e, 0x75, 0xc4, 0x8d, 0x54, 0x9e, 0xe7, 0xf3, - 0xa7, 0x8d, 0x57, 0x8e, 0xf4, 0x1, 0xda, 0x8d, 0x50, 0x63, - 0xef, 0xf, 0xce, 0x9c, 0x35, 0x41, 0xfd, 0xe1, 0xf9, 0xd7, - 0x14, 0x35, 0x43, 0x8e, 0xf4, 0xe5, 0xd5, 0x7e, 0xbf, 0x9d, - 00, 0x76, 0xa3, 0x54, 0x5f, 0xef, 0xf, 0xce, 0x9e, 0x35, - 0x41, 0xfd, 0xe5, 0xfc, 0xeb, 0x8a, 0x1a, 0xaf, 0xd7, 0xf3, - 0xa7, 0x8d, 0x4f, 0x9e, 0xa6, 0x80, 0x3b, 0x41, 0xaa, 0x2f, - 0xf7, 0x87, 0xe7, 0x4e, 0x1a, 0xa0, 0xfe, 0xf0, 0xfc, 0xeb, - 0x8c, 0x1a, 0xa7, 0xb9, 0xa7, 0xd, 0x53, 0x9e, 0xa7, 0xf3, - 0xa0, 0xe, 0xcc, 0x6a, 0x83, 0xfb, 0xc3, 0xf3, 0xa7, 0x8d, - 0x50, 0x7f, 0x78, 0x7e, 0x75, 0xc5, 0x8d, 0x4b, 0xdc, 0xd3, - 0x86, 0xa5, 0xd3, 0x93, 0x40, 0x1d, 0xa0, 0xd5, 0x7, 0xf7, - 0x87, 0xe7, 0x4f, 0x1a, 0xa2, 0xff, 00, 0x79, 0x7f, 0x3a, - 0xe2, 0xc6, 0xa5, 0xcf, 0x53, 0x4f, 0x1a, 0x97, 0xb9, 0xa0, - 0xe, 0xc8, 0x6a, 0x8a, 0x3f, 0x8c, 0x7e, 0x74, 0xf1, 0xaa, - 0x2f, 0xf7, 0x87, 0xe7, 0x5c, 0x5f, 0xf6, 0x97, 0xb9, 0xa7, - 0x8d, 0x48, 0x9e, 0xe6, 0x80, 0x3b, 0x31, 0xaa, 0x3, 0xfc, - 0x43, 0xf3, 0xa7, 0xd, 0x51, 0x7f, 0xbc, 0xbf, 0x9d, 0x71, - 0x83, 0x52, 0xe3, 0xa9, 0xa7, 0xd, 0x47, 0xdc, 0xd0, 0x7, - 0x66, 0x35, 0x35, 0xcf, 0xde, 0x5f, 0xce, 0x9c, 0x35, 0x35, - 0xcf, 0xde, 0x5f, 0xce, 0xb8, 0xd1, 0xa9, 0x7b, 0x9f, 0xce, - 0x9c, 0x35, 0x2f, 0x73, 0x40, 0x1d, 0x97, 0xf6, 0x92, 0xff, - 00, 0x7c, 0x7e, 0x74, 0xe1, 0xa9, 0x2f, 0xf7, 0x97, 0xf3, - 0xae, 0x34, 0x6a, 0x5e, 0xe7, 0xf3, 0xa7, 0x8d, 0x4b, 0xde, - 0x80, 0x3b, 0x11, 0xa9, 0x2f, 0xf7, 0x97, 0xf3, 0xa7, 0xd, - 0x41, 0x3f, 0xbc, 0x3f, 0x3a, 0xe3, 0x46, 0xa5, 0xc7, 0x53, - 0xf9, 0xd3, 0xd7, 0x53, 0xf7, 0xa0, 0xe, 0xc7, 0xfb, 0x45, - 0x7f, 0xbe, 0xbf, 0x9d, 0x2a, 0xea, 0x9, 0xfd, 0xe1, 0xf9, - 0xd7, 0x1e, 0x35, 0x2f, 0x7f, 0xd6, 0x9c, 0x35, 0x2f, 0x73, - 0xf9, 0xd0, 0x7, 0x60, 0x35, 0x5, 0xfe, 0xf0, 0x1f, 0x8d, - 0x38, 0x6a, 0xa, 0x3f, 0x88, 0x7e, 0x75, 0xc7, 0x8d, 0x4b, - 0x3d, 0xcd, 0x3c, 0x6a, 0x5e, 0xe7, 0xf3, 0xa0, 0xe, 0xbf, - 0xed, 0xeb, 0xfd, 0xf1, 0xf9, 0xd3, 0xbe, 0xde, 0xf, 0xf1, - 0xf, 0xce, 0xb9, 0xf, 0xed, 0x2f, 0x73, 0xf9, 0xd3, 0x86, - 0xa5, 0xee, 0x7f, 0x3a, 00, 0xeb, 0x85, 0xfa, 0xff, 00, - 0x78, 0x7e, 0x74, 0xe1, 0x7e, 0x3f, 0xbc, 0x3f, 0x3a, 0xe4, - 0x86, 0xa5, 0xee, 0x7f, 0x3a, 0x70, 0xd4, 0x7d, 0xce, 0x3e, - 0xb4, 0x1, 0xd6, 0x7d, 0xbc, 0x7f, 0x78, 0x7e, 0x74, 0xe1, - 0x7c, 0xbf, 0xde, 0x1f, 0x9d, 0x72, 0x5f, 0xda, 0x5e, 0xe6, - 0x9e, 0x35, 0x1c, 0xf7, 0x3f, 0x9d, 00, 0x75, 0x82, 0xf5, - 0x7f, 0xbc, 0x29, 0x45, 0xea, 0x8e, 0xe2, 0xb9, 0x41, 0xa9, - 0x7b, 0x9f, 0xce, 0x9e, 0x35, 0x2f, 0x7a, 00, 0xea, 0x85, - 0xea, 0x9e, 0xe2, 0x97, 0xed, 0x8b, 0xea, 0x2b, 0x96, 0x1a, - 0x8f, 0x3d, 0x4f, 0xe7, 0x4e, 0x1a, 0x91, 0xf5, 0x3f, 0x9d, - 00, 0x75, 0x2, 0xed, 0x7d, 0x47, 0xe7, 0x4a, 0x2e, 0x90, - 0xf7, 0x1f, 0x9d, 0x73, 0x3, 0x52, 0xf7, 0x34, 0xf1, 0xa8, - 0xfb, 0x9a, 00, 0xe9, 0x7e, 0xd2, 0x9e, 0xa3, 0xf3, 0xa5, - 0x17, 0x9, 0xfd, 0xe1, 0xf9, 0xd7, 0x36, 0x35, 0x1f, 0xad, - 0x3b, 0xfb, 0x47, 0xeb, 0xf9, 0xd0, 0x7, 0x47, 0xe7, 0xa7, - 0xf7, 0xa8, 0xf3, 0x93, 0xfb, 0xc2, 0xb9, 0xe1, 0xa8, 0x7d, - 0x7f, 0x3a, 0x51, 0xa8, 0x7d, 0x7f, 0x3a, 00, 0xe8, 0x44, - 0xc8, 0x7f, 0x88, 0x7e, 0x74, 0x86, 0x74, 0x1f, 0xc4, 0x3f, - 0x3a, 0xc2, 0xfe, 0xd0, 0xe3, 0xa9, 0xa8, 0x5f, 0x50, 0xeb, - 0xc9, 0xfc, 0xe8, 0x3, 0x72, 0x5b, 0xd5, 0x3, 0xa8, 0xac, - 0xeb, 0x8b, 0xe5, 0x19, 0xcb, 0xa, 0xc9, 0x9b, 0x51, 0xe3, - 0x82, 0x6b, 0x32, 0xeb, 0x51, 0x3c, 0xf2, 0x68, 0x3, 0x4e, - 0xeb, 0x50, 0x1c, 0xfc, 0xc2, 0xb1, 0x6e, 0xf5, 0x1, 0xcf, - 0xcc, 0x2a, 0x85, 0xd6, 0xa1, 0xd7, 0x9a, 0xc7, 0xbb, 0xd4, - 0x31, 0x9e, 0x4d, 00, 0x5a, 0xbe, 0xbf, 0x5c, 0x1f, 0x98, - 0x7e, 0x75, 0xcd, 0x6a, 0x97, 0xcb, 0xfd, 0xe1, 0x51, 0x5f, - 0x6a, 0x39, 0xee, 0x6b, 0x9c, 0xd4, 0x75, 0xc, 0x77, 0x34, - 00, 0xdd, 0x46, 0xfc, 0x60, 0xfc, 0xc2, 0xb9, 0xd, 0x52, - 0xf5, 0x4e, 0xec, 0xb0, 0xfc, 0xea, 0xc6, 0xa7, 0xa8, 0xf5, - 0xe4, 0xd7, 0x23, 0xaa, 0xea, 0x4, 0x2b, 0x73, 0x40, 0x1e, - 0x7d, 0xf1, 0x2f, 0x50, 0x4f, 0xde, 00, 0xe3, 0xa7, 0xad, - 0x7c, 0xc5, 0xe3, 0x2b, 0xa1, 0x2d, 0xc3, 0x61, 0xb3, 0x5e, - 0xd5, 0xf1, 0x1b, 0x54, 0x2c, 0xf2, 0xf2, 0x7b, 0xd7, 0xcf, - 0x5e, 0x21, 0xbb, 0xf3, 0x2e, 0x5f, 0xae, 0x2b, 0xe2, 0x73, - 0x29, 0x39, 0x54, 0xb1, 0xf9, 0xd6, 0x6f, 0x37, 0x3a, 0x96, - 0x39, 0x8d, 0x4a, 0x4c, 0x67, 0xa5, 0x72, 0x57, 0x8d, 0x97, - 0x6f, 0xad, 0x74, 0x5a, 0x9c, 0x83, 0xd, 0x5c, 0xbd, 0xcb, - 0x64, 0xb7, 0xd6, 0x8c, 0x2c, 0x74, 0x1e, 0xe, 0x36, 0x45, - 0x9, 0xdb, 0x93, 0x5f, 0xa2, 0x3f, 0xb0, 0x37, 0x84, 0x65, - 0xb0, 0xf0, 0x6e, 0x9f, 0x71, 0x2c, 0x2e, 0xbf, 0x68, 0x99, - 0xee, 0xc3, 0x38, 0xfe, 0x1c, 00, 0x3b, 0x74, 0xeb, 0x5f, - 0x9e, 0x11, 0xc0, 0xf7, 0xb7, 0x90, 0x5b, 0xc7, 0xcc, 0x92, - 0xc8, 0xb1, 0xaf, 0xd4, 0x9c, 0xa, 0xfd, 0x82, 0xfd, 0x9b, - 0x7c, 0x31, 0x1e, 0x81, 0xe1, 0x2b, 0x68, 0x13, 0x5, 0x6d, - 0xe0, 0x8e, 0x24, 0xe3, 0x18, 0xe3, 0x27, 0xf9, 0xd7, 0xd2, - 0xe1, 0x57, 0x53, 0xeb, 0xb0, 0x51, 0xdd, 0x9e, 0xd5, 0xa, - 0xfb, 0x55, 0xf8, 0x6, 0x2a, 0x9c, 0x23, 0x8a, 0xbf, 0xa, - 0xe0, 0xd7, 0xa2, 0x7a, 0xc5, 0xeb, 0x7e, 0xd5, 0xa3, 00, - 0xe9, 0x54, 0x6d, 0xd7, 0xa5, 0x68, 0x42, 0xbd, 0x28, 0x2, - 0xf4, 0x42, 0xae, 0xc5, 0xda, 0xa9, 0xc2, 0x39, 0xab, 0xd0, - 0x8e, 0x28, 0x2, 0xd4, 0x42, 0xac, 0xc7, 0xd0, 0x54, 0x11, - 0x8e, 0x95, 0x66, 0x31, 0x40, 0x16, 0x23, 0xe2, 0xa7, 0x5e, - 0xd5, 0x4, 0x62, 0xa5, 0x5a, 00, 0x99, 0x69, 0xe3, 0xb5, - 0x44, 0x5, 0x48, 0xbd, 0x68, 0x2, 0x4a, 0x29, 0x7, 0x4a, - 0x5a, 00, 0x70, 0xe9, 0x4b, 0x4d, 0x5e, 0xf4, 0xea, 00, - 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0xc1, 0x7a, - 0xf9, 0x4b, 0xf6, 0xe9, 0xf0, 0x7c, 0x9a, 0xdf, 0x84, 0x20, - 0xbd, 0x89, 0x3, 0x32, 0x29, 0x51, 0x90, 0x32, 0x1b, 0x72, - 0x9e, 0xe7, 0xfb, 0xa1, 0xab, 0xea, 0xf7, 0xe6, 0xbc, 0xfb, - 0xe3, 0x4f, 0x85, 0xff, 00, 0xe1, 0x2b, 0xf0, 0xe, 0xa1, - 0x6c, 0xab, 0x99, 0x63, 0x2, 0x44, 0xfc, 0x8, 0xcf, 0xfe, - 0x3b, 0x9a, 0xc6, 0xb5, 0x35, 0x56, 0x9c, 0xa0, 0xfa, 0xa3, - 0x9f, 0x11, 0x49, 0x57, 0xa5, 0x2a, 0x6f, 0xaa, 0x3f, 0x2c, - 0xf4, 0x4d, 0x65, 0xa0, 0xd3, 0x17, 0x93, 0x80, 0x8, 0x3c, - 0xf4, 0xe6, 0xb9, 0xbd, 0x73, 0x59, 0x6b, 0x99, 0x98, 0x29, - 0x20, 0xfa, 0x83, 0x5d, 0x1f, 0x8b, 0xf4, 0x47, 0xf0, 0xce, - 0xb1, 0xa8, 0x58, 0xed, 0x6f, 0x2b, 0x7e, 0xf8, 0xd9, 0x86, - 0x32, 0x8, 0x7, 0xf4, 0xce, 0x3f, 0xa, 0xe2, 0x5a, 0x2, - 0xb2, 0x73, 0xfa, 0xd7, 0xe5, 0x15, 0xeb, 0xce, 0x1f, 0xb9, - 0x96, 0xeb, 0x43, 0xf1, 0x2c, 0x4e, 0x2a, 0xa5, 0x3f, 0xf6, - 0x69, 0xef, 0x1d, 0xa, 0x12, 0x5c, 0x3e, 0x7e, 0x66, 0x39, - 0xfa, 0xd3, 0x7c, 0xdc, 0x9e, 0xb5, 0x62, 0xe6, 0xdb, 0x3d, - 0xaa, 0x93, 0x42, 0xd1, 0xf3, 0x5c, 0xc9, 0xa9, 0x6e, 0x71, - 0x45, 0xc6, 0x5a, 0x93, 0x96, 0xc8, 0xeb, 0x4d, 0x2c, 0x47, - 0x7a, 0x8b, 0x79, 0xe8, 0x69, 0xc0, 0xe4, 0x51, 0x61, 0xd8, - 0x46, 0x99, 0x80, 0xa6, 0x89, 0x98, 0x52, 0x3f, 0x7a, 0x65, - 0x55, 0x8d, 0x12, 0x56, 0x25, 0xfb, 0x41, 0xa5, 0xfb, 0x53, - 0x7f, 0x93, 0x50, 0xd1, 0x45, 0x90, 0x72, 0xa2, 0x7f, 0xb4, - 0x9a, 0x70, 0xba, 0x35, 0x5a, 0x8a, 0x39, 0x50, 0x72, 0x22, - 0xcf, 0xda, 0x8e, 0x69, 0xc2, 0xee, 0xaa, 0x52, 0xe6, 0x8e, - 0x54, 0x27, 0x4e, 0x25, 0xb1, 0x77, 0xf5, 0xfc, 0xe9, 0xdf, - 0x6c, 0xf7, 0x3f, 0x9d, 0x51, 0xa2, 0x97, 0x22, 0x17, 0xb3, - 0x45, 0xff, 00, 0xb6, 0x1f, 0x53, 0xf9, 0xd3, 0xc5, 0xf3, - 0x2f, 0xf1, 0x1f, 0xce, 0xb3, 0x68, 0xcd, 0x2e, 0x44, 0x2f, - 0x66, 0x8d, 0x41, 0xa8, 0x3f, 0xf7, 0x9b, 0xf3, 0xa7, 0x8d, - 0x45, 0xc7, 0xf1, 0xb7, 0xe7, 0x59, 0x19, 0xa5, 0xc9, 0xa3, - 0x95, 0x7, 0xb3, 0xf3, 0x36, 0x57, 0x56, 0x95, 0x7a, 0x3b, - 0x7e, 0x75, 0x20, 0xd6, 0x66, 0x3, 0xfd, 0x61, 0xfc, 0xeb, - 0xb, 0x71, 0xf5, 0xa5, 0xde, 0xde, 0xb4, 0x72, 0x8b, 0xd9, - 0xbe, 0xe6, 0xfa, 0xeb, 0x93, 0xc, 0xf, 0x31, 0xbf, 0x3a, - 0x99, 0x7c, 0x41, 0x30, 0xea, 0xc7, 0xfe, 0xfa, 0xae, 0x6b, - 0x7b, 0x52, 0xf9, 0x8d, 0x47, 0x2b, 0xee, 0x3e, 0x49, 0x77, - 0x3a, 0x81, 0xe2, 0x49, 0xc1, 0xfb, 0xcd, 0xf9, 0xd4, 0x8b, - 0xe2, 0xa9, 0xc0, 0xfb, 0xcd, 0xff, 00, 0x7d, 0x57, 0x26, - 0x25, 0x61, 0xde, 0x97, 0xce, 0x34, 0xfd, 0xee, 0xe1, 0x69, - 0xf7, 0x3b, 0x24, 0xf1, 0x74, 0xaa, 0x3a, 0xbf, 0xfd, 0xf5, - 0x53, 0x27, 0x8d, 0x25, 0x5e, 0xed, 0xff, 00, 0x7d, 0x57, - 0xf, 0xe7, 0xb5, 0x38, 0x5c, 0x1a, 0x77, 0x9a, 0xea, 0x3b, - 0xd4, 0x5d, 0x4e, 0xed, 0x7c, 0x6d, 0x2f, 0xab, 0x8f, 0xf8, - 0x15, 0x58, 0x8f, 0xc7, 0x4e, 0xa3, 0xab, 0xfe, 0x75, 0xe7, - 0xbf, 0x69, 0x3e, 0xb4, 0xbf, 0x6a, 0x6a, 0x7c, 0xf5, 0x57, - 0x52, 0x95, 0x4a, 0xab, 0xa9, 0xe9, 0x11, 0xf8, 0xfd, 0xc7, - 0xf1, 0x3f, 0xe7, 0xff, 00, 0xd6, 0xab, 0x9, 0xf1, 0x1, - 0xbd, 0x5c, 0xf, 0xa9, 0xff, 00, 0xa, 0xf3, 0x1, 0x74, - 0xd9, 0xe6, 0x9c, 0x2e, 0xc8, 0x1c, 0xd5, 0x7b, 0x5a, 0xab, - 0xa8, 0xfd, 0xb5, 0x75, 0xd4, 0xf5, 0x54, 0xf8, 0x82, 0x47, - 0xf1, 0x3f, 0xe7, 0xff, 00, 0xd6, 0xab, 0x31, 0xfc, 0x43, - 0x3f, 0xde, 0x7c, 0xfd, 0x7f, 0xfa, 0xd5, 0xe4, 0x3f, 0x6c, - 0xfc, 0x69, 0xe2, 0xef, 0xd0, 0xe2, 0xab, 0xdb, 0xd6, 0x5d, - 0x4b, 0x58, 0x9a, 0xeb, 0xa9, 0xec, 0x89, 0xf1, 0x1b, 0x3f, - 0xc4, 0xdf, 0x9f, 0xff, 00, 0x5a, 0xac, 0x47, 0xf1, 0x13, - 0x9f, 0xbe, 0xff, 00, 0x9f, 0xff, 00, 0x5a, 0xbc, 0x57, - 0xed, 0x67, 0xd7, 0xf5, 0xa5, 0xfb, 0x71, 0xf5, 0xfd, 0x6a, - 0x96, 0x26, 0xb1, 0x4b, 0x1b, 0x5d, 0x75, 0x3d, 0xc9, 0x3e, - 0x22, 0xff, 00, 0xb4, 0xdf, 0x9f, 0xff, 00, 0x5a, 0xac, - 0xc7, 0xf1, 0x1f, 0xfd, 0xa6, 0xfc, 0xff, 00, 0xfa, 0xd5, - 0xe0, 0xc2, 0xf9, 0xbb, 0x37, 0xeb, 0x52, 0x2e, 0xa2, 0xe3, - 0xa3, 0x1a, 0xa5, 0x8c, 0xaa, 0x8b, 0x58, 0xfa, 0xe8, 0xf7, - 0xe8, 0xfe, 0x23, 0x67, 0xf8, 0x9b, 0xf3, 0xff, 00, 0xeb, - 0x55, 0xa8, 0xfe, 0x22, 0x83, 0xfc, 0x4d, 0xf9, 0xff, 00, - 0xf5, 0xab, 0xe7, 0xa1, 0xaa, 0x48, 0x31, 0x87, 0xa7, 0x2e, - 0xaf, 0x28, 0x3f, 0x7c, 0xd5, 0xac, 0x75, 0x54, 0x6a, 0xb3, - 0x3a, 0xc8, 0xfa, 0x2d, 0x3e, 0x23, 0x2f, 0xab, 0x7e, 0x7f, - 0xfd, 0x6a, 0xb1, 0x1f, 0xc4, 0x55, 0x38, 0xe5, 0xbf, 0x3f, - 0xfe, 0xb5, 0x7c, 0xe2, 0xba, 0xdc, 0xcb, 0xfc, 0x62, 0xa4, - 0x5d, 0x7e, 0x75, 0xe8, 0xc2, 0xb4, 0x59, 0x8d, 0x43, 0x45, - 0x9b, 0x55, 0x47, 0xd2, 0x69, 0xf1, 0x9, 0x4f, 0x42, 0xdf, - 0x9f, 0xff, 00, 0x5a, 0xac, 0xa7, 0xc4, 0x34, 0x3f, 0xc4, - 0xdf, 0x9d, 0x7c, 0xce, 0xbe, 0x24, 0xb8, 0x1f, 0xc4, 0x2a, - 0x55, 0xf1, 0x44, 0xeb, 0xe9, 0xf9, 0xd5, 0xac, 0xce, 0x68, - 0xd5, 0x67, 0x15, 0x11, 0xf4, 0xda, 0x7c, 0x41, 0x4f, 0xef, - 0x37, 0xe7, 0xff, 00, 0xd6, 0xab, 0x31, 0xf8, 0xfd, 0xe, - 0x3e, 0x76, 0xfc, 0xff, 00, 0xfa, 0xd5, 0xf3, 0xa, 0xf8, - 0xb6, 0x71, 0xe9, 0x52, 0xa7, 0x8c, 0xee, 0x7, 0xff, 00, - 0xae, 0xb5, 0x59, 0xa4, 0x91, 0xb2, 0xce, 0xa6, 0x8f, 0xa8, - 0x53, 0xc7, 0xe9, 0xfd, 0xf3, 0xf9, 0xff, 00, 0xf5, 0xaa, - 0xc4, 0x7e, 0x3f, 0x4f, 0xef, 0xb7, 0xe7, 0xff, 00, 0xd6, - 0xaf, 0x97, 0x53, 0xc6, 0xb3, 0xe, 0xa6, 0xa6, 0x5f, 0x1d, - 0x4a, 0x3b, 0xfe, 0xbf, 0xfd, 0x6a, 0xd1, 0x66, 0xcc, 0xd5, - 0x67, 0x92, 0x3e, 0xa4, 0x4f, 0x1f, 0x2f, 0x1f, 0x3b, 0x3, - 0xf5, 0x3f, 0xe1, 0x56, 0x93, 0xc7, 0x83, 0xfb, 0xec, 0x3f, - 0x13, 0x5f, 0x2c, 0x47, 0xe3, 0xd9, 0x3d, 0x47, 0xe7, 0xff, - 00, 0xd6, 0xab, 0x11, 0xf8, 0xfd, 0xc6, 0x3e, 0x65, 0xff, - 00, 0xbe, 0xbf, 0xfa, 0xd5, 0xb2, 0xcd, 0xdf, 0x73, 0x78, - 0xe7, 0xaf, 0xb9, 0xf5, 0x34, 0x7e, 0x3d, 0x18, 0xfb, 0xe7, - 0xf3, 0x35, 0x61, 0x3c, 0x78, 0xf, 0xf1, 0x9f, 0xcf, 0xff, - 00, 0xad, 0x5f, 0x2c, 0xc7, 0xf1, 0xd, 0x81, 0xfb, 0xcb, - 0xff, 00, 0x7d, 0x7f, 0xf5, 0xaa, 0xc2, 0x7c, 0x46, 0x7f, - 0x55, 0xff, 00, 0xbe, 0xbf, 0xfa, 0xd5, 0xaa, 0xce, 0x3c, - 0xcd, 0xd6, 0x7d, 0xe6, 0x7d, 0x4a, 0x9e, 0x3c, 0xe3, 0xef, - 0xb7, 0xe6, 0x6a, 0x75, 0xf1, 0xd0, 0xfe, 0xf3, 0x7e, 0x7f, - 0xfd, 0x6a, 0xf9, 0x6d, 0x3e, 0x22, 0x37, 0xf7, 0xd7, 0xfe, - 0xfa, 0xff, 00, 0xeb, 0x55, 0x98, 0xfe, 0x22, 0xb7, 0xf7, - 0x97, 0xfe, 0xfa, 0xff, 00, 0xeb, 0x56, 0xab, 0x37, 0xf3, - 0x37, 0x59, 0xf2, 0x7d, 0x4f, 0xa8, 0xe3, 0xf1, 0xc8, 0x3, - 0xef, 0x1f, 0xcf, 0xff, 00, 0xad, 0x56, 0x17, 0xc7, 0x60, - 0xf7, 0x3f, 0xe7, 0xf0, 0xaf, 0x97, 0x63, 0xf8, 0x8e, 0x47, - 0xf1, 0x29, 0x3f, 0xef, 0x7f, 0xf5, 0xaa, 0xd4, 0x7f, 0x11, - 0x8e, 0x7e, 0xf2, 0xff, 00, 0xdf, 0x5f, 0xfd, 0x6a, 0xda, - 0x39, 0xba, 0xee, 0x6f, 0x1c, 0xf9, 0x77, 0x3e, 0x9f, 0x4f, - 0x1c, 0x29, 0xc7, 0x27, 0xf3, 0xff, 00, 0xeb, 0x54, 0xc9, - 0xe3, 0x74, 0xf7, 0xfc, 0xff, 00, 0xfa, 0xd5, 0xf3, 0x1c, - 0x7f, 0x11, 0x4f, 0xf7, 0x93, 0xf1, 0x6f, 0xfe, 0xb5, 0x58, - 0x4f, 0x88, 0xff, 00, 0xed, 0x21, 0xff, 00, 0x81, 0x7f, - 0xf5, 0xab, 0x65, 0x9b, 0xae, 0xe6, 0xf1, 0xcf, 0x63, 0xdc, - 0xfa, 0x6d, 0x7c, 0x6b, 0x1f, 0x52, 0xf, 0xe7, 0xff, 00, - 0xd6, 0xa9, 0x57, 0xc6, 0x51, 0x1f, 0x5f, 0xcf, 0xff, 00, - 0xad, 0x5f, 0x33, 0xc7, 0xf1, 0x1b, 0x3f, 0xc4, 0x9f, 0xf7, - 0xd7, 0xff, 00, 0x5a, 0xac, 0xa7, 0xc4, 0x5c, 0xff, 00, - 0x12, 0x67, 0xfd, 0xef, 0xfe, 0xb5, 0x68, 0xb3, 0x68, 0xf7, - 0x36, 0x59, 0xe4, 0x7b, 0x9f, 0x4b, 0x27, 0x8c, 0x21, 0xe3, - 0x39, 0xfc, 0xff, 00, 0xfa, 0xd5, 0x2a, 0x78, 0xb2, 0x3, - 0xeb, 0xf9, 0xff, 00, 0xf5, 0xab, 0xe6, 0xe8, 0xfe, 0x22, - 0x8c, 0xc, 0xb2, 0xff, 00, 0xdf, 0x5f, 0xfd, 0x6a, 0x9d, - 0x3e, 0x22, 0x3, 0xdd, 0x7f, 0xef, 0xaf, 0xfe, 0xb5, 0x6c, - 0xb3, 0x58, 0xbe, 0xa6, 0xf1, 0xce, 0xa0, 0xfa, 0x9f, 0x48, - 0x2f, 0x8a, 0x21, 0xcf, 0x53, 0xfe, 0x7f, 0xa, 0x91, 0x3c, - 0x4b, 0x9, 0xfe, 0x23, 0xfe, 0x7f, 0xa, 0xf9, 0xd2, 0x3f, - 0x88, 0x20, 0x91, 0xf3, 0x2f, 0xd3, 0x77, 0xff, 00, 0x5a, - 0xac, 0xa7, 0xc4, 0x5, 0xfe, 0xfa, 0xf, 0xf8, 0x17, 0xff, - 00, 0x5a, 0xb4, 0x59, 0x9c, 0x4d, 0x96, 0x71, 0x4c, 0xfa, - 0x20, 0x78, 0x8a, 0xf, 0xef, 0x1a, 0x7a, 0xeb, 0xf1, 0x13, - 0xf7, 0x8f, 0xf9, 0xfc, 0x2b, 0xe7, 0xc4, 0xf8, 0x82, 0x9, - 0xfb, 0xeb, 0xff, 00, 0x7d, 0x7f, 0xf5, 0xaa, 0xc4, 0x7e, - 0x3e, 0x1c, 0x7c, 0xe9, 0xff, 00, 0x7d, 0x7f, 0xf5, 0xab, - 0x45, 0x99, 0x41, 0x9b, 0x2c, 0xda, 0x9b, 0x3e, 0x81, 0x5d, - 0x6e, 0x32, 0x7e, 0xf7, 0xeb, 0x52, 0x2e, 0xb2, 0x9f, 0xde, - 0xfd, 0x6b, 0xc0, 0xe3, 0xf1, 0xea, 0x8f, 0xe3, 0x4f, 0xfb, - 0xe8, 0x7f, 0x85, 0x58, 0x4f, 0x1e, 0x82, 0x71, 0xbd, 0x3f, - 0xef, 0xaf, 0xfe, 0xb5, 0x6a, 0xb3, 0xa, 0x66, 0x8b, 0x34, - 0xa6, 0xcf, 0x77, 0x5d, 0x61, 0x4f, 0x46, 0xfd, 0x6a, 0x41, - 0xab, 0xf, 0x5f, 0xd6, 0xbc, 0x32, 0x3f, 0x1e, 0x67, 0xfe, - 0x5a, 0x20, 0xff, 00, 0x81, 0x7f, 0xf5, 0xaa, 0xc2, 0x78, - 0xef, 0x27, 0xef, 0x28, 0xff, 00, 0x81, 0xf, 0xf0, 0xab, - 0x58, 0xea, 0x66, 0xab, 0x32, 0xa4, 0xcf, 0x6e, 0x5d, 0x59, - 0x7a, 0xe4, 0xfe, 0x74, 0xf5, 0xd5, 0xb3, 0xdc, 0xd7, 0x8a, - 0x27, 0x8e, 0xce, 0x7e, 0xfa, 0xff, 00, 0xdf, 0x5f, 0xfd, - 0x6a, 0xb3, 0x17, 0x8e, 0x8e, 0x3e, 0xf2, 0x7e, 0x7f, 0xfd, - 0x6a, 0xb5, 0x8c, 0xa6, 0x68, 0xb1, 0xf4, 0x99, 0xec, 0xab, - 0xaa, 0xfb, 0x9a, 0x7a, 0xea, 0x9e, 0xe6, 0xbc, 0x7e, 0x3f, - 0x1d, 0x9f, 0x54, 0xfc, 0xff, 00, 0xfa, 0xd5, 0x3a, 0xf8, - 0xe8, 0x9e, 0x72, 0x9f, 0x9f, 0xff, 00, 0x5a, 0xaf, 0xeb, - 0x54, 0xfb, 0x9a, 0x2c, 0x6d, 0x17, 0xd4, 0xf5, 0xb5, 0xd5, - 0x7d, 0xcf, 0xe7, 0x4f, 0x5d, 0x53, 0x9e, 0xbf, 0xad, 0x79, - 0x3a, 0x78, 0xe7, 0xdd, 0x3f, 0x3f, 0xfe, 0xb5, 0x58, 0x5f, - 0x1c, 0xfb, 0xa7, 0xfd, 0xf5, 0xff, 00, 0xd6, 0xab, 0x58, - 0x8a, 0x6f, 0xa9, 0x6b, 0x15, 0x4b, 0xb9, 0xea, 0x4b, 0xaa, - 0x7b, 0xfe, 0xb4, 0xf5, 0xd5, 0x6, 0x3a, 0xfe, 0xb5, 0xe6, - 0x9, 0xe3, 0x75, 0x3c, 0xfc, 0x9f, 0xf7, 0xd7, 0xff, 00, - 0x5a, 0xa7, 0x4f, 0x1a, 0x27, 0xfb, 0x3f, 0xf7, 0xd5, 0x57, - 0xb6, 0x87, 0x72, 0x96, 0x22, 0x9b, 0xea, 0x7a, 0x50, 0xd5, - 0x3f, 0xce, 0x69, 0xe3, 0x54, 0xff, 00, 0x39, 0xaf, 0x38, - 0x1e, 0x30, 0x8c, 0xff, 00, 0x77, 0xfe, 0xfa, 0xa9, 0x57, - 0xc5, 0xd1, 0x9e, 0x85, 0x7f, 0xef, 0xaa, 0xaf, 0x6b, 0xe, - 0xe5, 0xfb, 0x6a, 0x7d, 0xcf, 0x44, 0x5d, 0x4c, 0x77, 0x3f, - 0xad, 0x38, 0x6a, 0x59, 0xee, 0x7f, 0x3a, 0xf3, 0xf5, 0xf1, - 0x5c, 0x47, 0xab, 0x28, 0xff, 00, 0x81, 0x54, 0xab, 0xe2, - 0x88, 0x4f, 0xf1, 0xaf, 0xfd, 0xf5, 0x4d, 0x54, 0x8f, 0x72, - 0xbd, 0xa4, 0x3b, 0x9d, 0xf0, 0xd4, 0xbd, 0xff, 00, 0x5a, - 0x78, 0xd4, 0xbd, 0xcf, 0xe7, 0x5c, 0x1a, 0xf8, 0x92, 0x23, - 0xfc, 0x6b, 0xff, 00, 0x7d, 0x54, 0xab, 0xe2, 0x8, 0xcf, - 0xf1, 0xaf, 0xe7, 0x55, 0xcd, 0x1e, 0xe3, 0x53, 0x8b, 0xea, - 0x77, 0x23, 0x52, 0xf7, 0x3f, 0x9d, 0x38, 0x6a, 0x5c, 0x75, - 0xfd, 0x6b, 0x88, 0x5d, 0x76, 0x3e, 0xd2, 0x2f, 0xe7, 0x52, - 0xd, 0x71, 0x3f, 0xe7, 0xa0, 0xa7, 0x74, 0x57, 0x32, 0xee, - 0x76, 0xc3, 0x52, 0xf7, 0xfd, 0x69, 0x46, 0xa5, 0xef, 0xfa, - 0xd7, 0x18, 0xba, 0xca, 0x9c, 0x61, 0xd7, 0xf3, 0xa9, 0x6, - 0xae, 0x3f, 0xbc, 0x3f, 0x3a, 0x63, 0xba, 0x3b, 0x25, 0xd4, - 0x7d, 0xff, 00, 0x5a, 0x70, 0xd4, 0x7d, 0xcf, 0xe7, 0x5c, - 0x72, 0xea, 0xc3, 0xb3, 0x3, 0xf8, 0xd4, 0x8b, 0xaa, 0xfb, - 0xfe, 0xb4, 0x1, 0xd8, 0xd, 0x47, 0xdc, 0xfe, 0x74, 0xef, - 0xed, 0x1f, 0x7f, 0xd6, 0xb8, 0xf1, 0xaa, 0xf3, 0xf7, 0xbf, - 0x5a, 0x78, 0xd5, 0x79, 0xed, 0xf9, 0xd0, 0x7, 0x5e, 0x35, - 0x2f, 0x7f, 0xd6, 0x9e, 0x35, 0x1f, 0x73, 0xf9, 0xd7, 0x20, - 0x35, 0x5f, 0x71, 0xf9, 0xd3, 0xff, 00, 0xb5, 0x72, 0x7a, - 0xd0, 0x7, 0x5c, 0x35, 0x2f, 0x7f, 0xd6, 0x9c, 0x35, 0x2f, - 0x73, 0xf9, 0xd7, 0x22, 0x35, 0x4f, 0x71, 0xf9, 0xd3, 0xc6, - 0xa9, 0xee, 0x28, 0x3, 0xae, 0x1a, 0x97, 0xb9, 0xfc, 0xe9, - 0x46, 0xa5, 0xef, 0xfa, 0xd7, 0x26, 0x35, 0x41, 0xeb, 0xfa, - 0xd3, 0x86, 0xa9, 0xee, 0x3f, 0x3a, 00, 0xeb, 0x7f, 0xb4, - 0xb8, 0xeb, 0xfa, 0xd4, 0x32, 0x6a, 0x3e, 0xe7, 0xf3, 0xae, - 0x6b, 0xfb, 0x4f, 0x3d, 0xea, 0x39, 0x75, 0x31, 0xeb, 0x40, - 0x1b, 0xb3, 0xea, 0x5c, 0x75, 0x3f, 0x9d, 0x67, 0x5c, 0x6a, - 0x1d, 0x79, 0x3f, 0x9d, 0x62, 0xdc, 0x6a, 0x83, 0xb7, 0xf3, - 0xac, 0xcb, 0x9d, 0x53, 0xdc, 0x7e, 0x74, 0x1, 0xad, 0x75, - 0xa9, 0x63, 0x23, 0x35, 0x8d, 0x79, 0xaa, 0x67, 0x3c, 0xfe, - 0xb5, 0x97, 0x77, 0xa9, 0xf5, 0xe6, 0xb1, 0x6e, 0xf5, 0x3e, - 0xbc, 0x8a, 00, 0xd0, 0xbe, 0xd4, 0xbf, 0xce, 0x6b, 0x9c, - 0xd4, 0xf5, 0x3e, 0x3a, 0xfe, 0xb5, 0x5a, 0xfb, 0x53, 0xeb, - 0xcf, 0xeb, 0x5c, 0xce, 0xa5, 0xaa, 0x7b, 0xfe, 0xb4, 0x1, - 0x2e, 0xa5, 0xa9, 0x75, 0xe7, 0xf5, 0xae, 0x43, 0x5b, 0xd5, - 0x36, 0xc4, 0xfc, 0xfe, 0xb4, 0xfd, 0x43, 0x52, 0xce, 0x6b, - 0x90, 0xf1, 0x5, 0xf9, 0xfb, 0x2c, 0x86, 0x93, 0xd8, 0x99, - 0x6c, 0xcf, 0x31, 0xf1, 0xf6, 0xab, 0xb9, 0xa5, 0xeb, 0xdf, - 0xbd, 0x78, 0x96, 0xa9, 0x75, 0xbe, 0x67, 0x39, 0xaf, 0x40, - 0xf1, 0xc6, 0xa4, 0x4b, 0xcb, 0xcf, 0xad, 0x79, 0x65, 0xdc, - 0xbb, 0xd9, 0x8e, 0x7b, 0xd7, 0xc4, 0xe2, 0xe3, 0x7a, 0xa7, - 0xe7, 0x98, 0xd8, 0xf3, 0x55, 0x33, 0x75, 0x9, 0x38, 0x35, - 0xcf, 0x5c, 0x37, 0x5a, 0xda, 0xbc, 0x24, 0x9e, 0x4d, 0x62, - 0xdc, 0xaf, 0x5f, 0xad, 0x74, 0xd0, 0x56, 0xd0, 0xeb, 0xc3, - 0x2b, 0x2b, 0x1d, 0x17, 0xc1, 0xef, 0xf, 0xb7, 0x8a, 0x3e, - 0x28, 0x78, 0x76, 0xcc, 0x36, 0x2, 0xde, 0x45, 0x33, 0x8c, - 0x75, 0x54, 0x70, 0xc4, 0x75, 0x1d, 0x85, 0x7e, 0xc7, 0x7c, - 0x31, 0xb0, 0x4b, 0x1f, 0xc, 0x43, 0xb0, 0x60, 0x48, 0xdb, - 0xbf, 0x90, 0xfe, 0x95, 0xf9, 0x71, 0xfb, 0x1b, 0x68, 0x6b, - 0xa9, 0xfc, 0x55, 0x96, 0xec, 0xa1, 0x76, 0xb2, 0xb5, 0x67, - 0x5c, 0xc, 0xf2, 0xc7, 0x6f, 0xf5, 0xaf, 0xd6, 0x5f, 0xf, - 0x5b, 0x7d, 0x97, 0x4a, 0xb4, 0x8b, 0xa6, 0xd8, 0xd7, 0x8f, - 0xc2, 0xbe, 0x93, 0xe, 0xad, 0xb, 0x9f, 0x5b, 0x84, 0x8d, - 0xa1, 0x73, 0x66, 0x1e, 0xd5, 0xa1, 00, 0xef, 0x54, 0xa1, - 0x1c, 0xd5, 0xf8, 0x33, 0xeb, 0x5d, 0x47, 0x69, 0x7e, 0x3, - 0xd2, 0xb4, 0x60, 0x15, 0x9f, 00, 0xe4, 0x56, 0x94, 0x14, - 0x1, 0x72, 0x11, 0x57, 0x62, 0xe7, 0x2, 0xaa, 0xc4, 0x38, - 0xab, 0xb0, 0xe, 0x94, 0x1, 0x6a, 0x35, 0xe6, 0xac, 0xc6, - 0x2a, 0xbc, 0x62, 0xac, 0xc4, 0x3a, 0x50, 0x4, 0xe9, 0xc0, - 0xa9, 0x17, 0xa0, 0xa6, 0x20, 0xa9, 0x7, 0x5a, 00, 0x78, - 0xeb, 0x4f, 0x5a, 0x62, 0xd4, 0x83, 0xa5, 00, 0x3c, 0x74, - 0xa2, 0x8a, 0x28, 0x1, 0xcb, 0x4b, 0x48, 0x3a, 0x52, 0xd0, - 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x6, 0x34, - 0x83, 0xda, 0xaa, 0xca, 0x81, 0x83, 0x2, 0x32, 0xf, 0x15, - 0x71, 0xf3, 0x55, 0xdd, 0x68, 0x3, 0xe0, 0x8f, 0xda, 0xc7, - 0xe0, 0xec, 0xba, 0x76, 0xbb, 0x71, 0x7f, 0x6d, 00, 0xf2, - 0x9c, 0x99, 0x61, 0x29, 0x93, 0xbc, 0x1c, 0x16, 0x5e, 0x7b, - 0x83, 0xbb, 0x8a, 0xf9, 0x56, 0x7d, 0x38, 0x83, 0xc8, 0xaf, - 0xd6, 0xef, 0x89, 0x7e, 0x3, 0x83, 0xc7, 0x9e, 0x1e, 0x9a, - 0xc9, 0x96, 0x31, 0x74, 0xa0, 0x9b, 0x79, 0x9c, 0x7d, 0xc6, - 0xfa, 0xe0, 0x9c, 0x1c, 0x73, 0x5f, 0x9d, 0xbf, 0x13, 0x7e, - 0x1a, 0x4f, 0xe1, 0x5d, 0x5a, 0xe1, 0x56, 0x10, 0x91, 0xab, - 0xed, 0x78, 0xc2, 0x9f, 0x90, 0xfe, 0x5d, 0x2b, 0xf3, 0xce, - 0x24, 0xcb, 0xa7, 0x17, 0xf5, 0xda, 0x2b, 0xfc, 0x5f, 0xe6, - 0x7e, 0x57, 0xc5, 0xd9, 0x4c, 0xa2, 0xff, 00, 0xb4, 0x28, - 0x2b, 0xaf, 0xb4, 0x97, 0xe7, 0xfe, 0x67, 0x8b, 0xcb, 0x60, - 0x79, 0x18, 0xe2, 0xa9, 0xcd, 0x61, 0xed, 0x5d, 0x94, 0xda, - 0x6e, 0x72, 0x40, 0xaa, 0x32, 0xe9, 0xd8, 0xed, 0x5f, 0x1, - 0x1c, 0x4d, 0xcf, 0xcb, 0xe9, 0xe2, 0xee, 0x72, 0x12, 0x69, - 0xfe, 0xd5, 0x3, 0x58, 0x91, 0xd0, 0x57, 0x64, 0xba, 0x2b, - 0xcb, 0xdb, 0xf0, 0xc5, 0x2b, 0x78, 0x61, 0x9b, 0xb6, 0x4f, - 0xb0, 0xff, 00, 0xeb, 0x57, 0x7c, 0x2a, 0xb9, 0x6c, 0x7a, - 0x54, 0xeb, 0xca, 0x47, 0xc, 0xf6, 0x4c, 0x3a, 0x3, 0x51, - 0x9b, 0x57, 0x15, 0xdd, 0x3f, 0x85, 0x5f, 0xfb, 0x87, 0xf2, - 0x3f, 0xe1, 0x51, 0x37, 0x85, 0x9f, 0xfb, 0x87, 0xf2, 0xff, - 00, 0xeb, 0x57, 0x4a, 0x9c, 0xbb, 0x1d, 0x8a, 0xa4, 0xfb, - 0x1c, 0x4f, 0xd9, 0xdf, 0xd2, 0x93, 0xc8, 0x7c, 0xe3, 0x15, - 0xd8, 0xb7, 0x86, 0x1c, 0x7f, 0x9, 0xfc, 0xbf, 0xfa, 0xd5, - 0x13, 0x78, 0x69, 0xc7, 0x6f, 0xd3, 0xff, 00, 0xad, 0x4f, - 0x9d, 0xf6, 0x2b, 0xda, 0x4b, 0xaa, 0x39, 0x23, 0xb, 0xe, - 0xd4, 0xd3, 0x13, 0xe, 0xd5, 0xd4, 0xb7, 0x87, 0xe4, 0x1d, - 0x87, 0xe4, 0x7f, 0xc2, 0xa3, 0x3a, 0xc, 0x9e, 0x9f, 0xa1, - 0xff, 00, 0xa, 0x7e, 0xd3, 0xc8, 0x7e, 0xd5, 0xf6, 0x39, - 0xad, 0x8d, 0xe9, 0x49, 0xb4, 0xfa, 0x57, 0x49, 0xfd, 0x89, - 0x27, 0xf7, 0x3f, 0x43, 0x51, 0xbe, 0x8b, 0x20, 0xfe, 0x1f, - 0xd0, 0xd3, 0xf6, 0x81, 0xed, 0x7c, 0x8e, 0x7f, 0x69, 0xf4, - 0xa4, 0xc5, 0x6e, 0x9d, 0x21, 0xff, 00, 0xbb, 0xfa, 0x1a, - 0x8c, 0xe9, 0x4e, 0x3f, 0x80, 0xfe, 0x46, 0x8e, 0x74, 0x57, - 0xb5, 0x5d, 0x8c, 0x6c, 0x51, 0x5a, 0xe7, 0x4c, 0x61, 0xfc, - 0x7, 0xf2, 0xa6, 0x9d, 0x38, 0xf7, 0x43, 0xf9, 0x53, 0xf6, - 0x88, 0x3d, 0xac, 0x4c, 0xaa, 0x2b, 0x48, 0xe9, 0xdf, 0xec, - 0xe2, 0x98, 0x6c, 0x3d, 0xa9, 0xf3, 0xc4, 0x7e, 0xd6, 0x25, - 0xa, 0x2a, 0xef, 0xd8, 0x69, 0xd, 0x89, 0xa3, 0x9d, 0x15, - 0xed, 0x22, 0x53, 0xc5, 0x15, 0x6b, 0xec, 0x64, 0x53, 0x4d, - 0xa3, 0x53, 0xe6, 0x41, 0xed, 0x23, 0xdc, 0xaf, 0x45, 0x4e, - 0x6d, 0x5b, 0xd6, 0x93, 0xec, 0xaf, 0x45, 0xd0, 0xf9, 0x97, - 0x72, 0x1a, 0x2a, 0x5f, 0xb3, 0xb5, 0x27, 0x90, 0xd4, 0xee, - 0x87, 0x74, 0x47, 0x45, 0x49, 0xe4, 0x36, 0x29, 0xc, 0x4c, - 0x3b, 0x51, 0x70, 0xba, 0x19, 0x45, 0x3b, 0x63, 0x7a, 0x51, - 0xb0, 0xfa, 0x50, 0x31, 0xb4, 0x52, 0xed, 0x34, 0x6d, 0x34, - 00, 0x94, 0x52, 0xe2, 0x92, 0x80, 0x17, 0x3e, 0xf4, 0x67, - 0xde, 0x92, 0x8c, 0x53, 0x18, 0xbb, 0x88, 0xa5, 0xdc, 0x7d, - 0x69, 0xb4, 0x52, 0xd, 0x7, 0x6e, 0x6f, 0x53, 0x46, 0xf6, - 0x1d, 0xe9, 0xb4, 0x53, 0xb0, 0xac, 0x87, 0xf9, 0xad, 0x47, - 0x9a, 0x69, 0x94, 0x52, 0xb0, 0xb9, 0x51, 0x20, 0x99, 0x85, - 0x2f, 0x9e, 0x6a, 0x2a, 0x28, 0xb2, 0xe, 0x54, 0x4d, 0xf6, - 0x83, 0x4a, 0x2e, 0x4d, 0x41, 0x45, 0x2b, 0x21, 0x72, 0x22, - 0xc7, 0xda, 0x69, 0xdf, 0x6c, 0x3e, 0xa6, 0xaa, 0xd1, 0x45, - 0x90, 0xb9, 0x11, 0x68, 0x5d, 0x7b, 0xe2, 0x94, 0x5d, 0xff, - 00, 0xb5, 0xfa, 0x55, 0x4a, 0x29, 0x72, 0xa1, 0x7b, 0x38, - 0x97, 0x45, 0xef, 0xbd, 0x38, 0x5e, 0xe3, 0xb9, 0xaa, 0x14, - 0x66, 0x8e, 0x44, 0x1e, 0xce, 0x26, 0x90, 0xbe, 0x3f, 0xde, - 0xa7, 0xd, 0x41, 0xbf, 0xbe, 0x6b, 0x2f, 0x34, 0x66, 0x97, - 0x22, 0x17, 0xb3, 0x46, 0xb8, 0xd4, 0x9c, 0x7f, 0x19, 0xa7, - 0xae, 0xab, 0x28, 0xe9, 0x23, 0x56, 0x36, 0xe3, 0xeb, 0x46, - 0xe3, 0xeb, 0x47, 0x22, 0xf, 0x66, 0xbb, 0x9b, 0xa3, 0x57, - 0x9c, 0x7f, 0xcb, 0x53, 0x4e, 0x1a, 0xdc, 0xe3, 0xfe, 0x5a, - 0xb5, 0x60, 0x6e, 0x34, 0xa2, 0x46, 0x1d, 0xe8, 0xe5, 0xf3, - 0x17, 0x23, 0xee, 0x74, 0x69, 0xe2, 0x9, 0xc6, 0x3f, 0x78, - 0x4d, 0x4a, 0x3c, 0x49, 0x72, 0x3f, 0xe5, 0xa1, 0xae, 0x63, - 0xcd, 0x6f, 0x5a, 0x4, 0xcc, 0x3d, 0xe8, 0xe5, 0x6b, 0x66, - 0x3e, 0x59, 0x2e, 0xa7, 0x56, 0xbe, 0x29, 0xb9, 0x5f, 0xf9, - 0x6a, 0xc3, 0xf2, 0xff, 00, 0xa, 0x9a, 0x3f, 0x16, 0x4e, - 0x3a, 0xc8, 0xdf, 0xa5, 0x71, 0xfe, 0x79, 0xa5, 0xfb, 0x43, - 0xa, 0x3d, 0xee, 0xe1, 0xfb, 0xce, 0xe7, 0x68, 0xbe, 0x32, - 0x9d, 0x4f, 0xdf, 0x7f, 0xd2, 0xa6, 0x4f, 0x1b, 0x4e, 0x3f, - 0x8d, 0xff, 00, 0x4a, 0xe1, 0xc5, 0xc3, 0xe, 0xe6, 0x97, - 0xed, 0x27, 0xde, 0x9f, 0x35, 0x45, 0xb3, 0x2a, 0xf5, 0x57, - 0x53, 0xbe, 0x4f, 0x1c, 0xca, 0x3a, 0xca, 0xff, 00, 0x90, - 0xab, 0x9, 0xe3, 0xe7, 0x5f, 0xf9, 0x6a, 0xe3, 0xf0, 0x15, - 0xe7, 0x22, 0xe8, 0x8e, 0xc6, 0x97, 0xed, 0x59, 0xf5, 0xab, - 0x55, 0x2a, 0xae, 0xa3, 0xf6, 0x95, 0x97, 0x53, 0xd2, 0xd3, - 0xe2, 0xb, 0xff, 00, 0xcf, 0x57, 0xfc, 0x85, 0x58, 0x8f, - 0xe2, 0x13, 0x77, 0x99, 0xbf, 0x21, 0x5e, 0x5b, 0xf6, 0xa3, - 0x4e, 0x17, 0x98, 0xef, 0x4f, 0xdb, 0x56, 0x5d, 0x4a, 0x55, - 0xeb, 0xae, 0xa7, 0xac, 0x27, 0xc4, 0x42, 0x3f, 0xe5, 0xb3, - 0x7e, 0x42, 0xad, 0x47, 0xf1, 0x18, 0xf6, 0x99, 0xbf, 0x21, - 0x5e, 0x3d, 0xf6, 0xc3, 0xeb, 0x4e, 0x5b, 0xd2, 0x3b, 0x9a, - 0xa5, 0x88, 0xaa, 0x8a, 0x58, 0xaa, 0xeb, 0xa9, 0xec, 0xf1, - 0xfc, 0x46, 0x3f, 0xf3, 0xdd, 0xbf, 0x21, 0x56, 0x63, 0xf8, - 0x8d, 0xff, 00, 0x4d, 0xdb, 0xf2, 0x15, 0xe2, 0x42, 0xfc, - 0xff, 00, 0x78, 0xfe, 0x74, 0xa3, 0x50, 0x7f, 0xef, 0xb7, - 0xe7, 0x55, 0xf5, 0xaa, 0xa8, 0xd1, 0x63, 0xab, 0xa3, 0xdd, - 0x63, 0xf8, 0x90, 0x7, 0xfc, 0xb7, 0x6f, 0xc8, 0x54, 0xe9, - 0xf1, 0x1f, 0x3f, 0xf2, 0xdd, 0xbf, 0x21, 0x5e, 0xe, 0x35, - 0x29, 0x7, 0xfc, 0xb4, 0x6f, 0xce, 0x9c, 0x35, 0x59, 0x7f, - 0xe7, 0xab, 0x7e, 0x75, 0x6b, 0x1b, 0x59, 0x1a, 0x2c, 0xc6, - 0xb9, 0xf4, 0x4, 0x7f, 0x11, 0xbf, 0xe9, 0xb3, 0x7e, 0x42, - 0xad, 0x27, 0xc4, 0x70, 0x3a, 0xce, 0xdf, 0x90, 0xaf, 0x9e, - 0x6, 0xb1, 0x30, 0xff, 00, 0x96, 0xcd, 0xf9, 0xd4, 0x8b, - 0xad, 0xce, 0xbf, 0xf2, 0xd5, 0xbf, 0x3a, 0xb5, 0x8f, 0xa8, - 0x8b, 0x59, 0xa5, 0x64, 0x7d, 0x14, 0x9f, 0x11, 0x81, 0xff, - 00, 0x96, 0xcd, 0xf9, 0xa, 0xb3, 0x1f, 0xc4, 0x54, 0x3d, - 0x67, 0x3f, 0xa5, 0x7c, 0xe0, 0x3c, 0x43, 0x72, 0x3f, 0xe5, - 0xa9, 0xfc, 0xea, 0x51, 0xe2, 0x5b, 0xa1, 0xff, 00, 0x2d, - 0x8f, 0xe7, 0x56, 0xb3, 0x2a, 0x88, 0xd5, 0x66, 0xf5, 0x51, - 0xf4, 0x9a, 0x7c, 0x45, 0x4e, 0xf3, 0x11, 0xf8, 0xa, 0xb0, - 0x9f, 0x11, 0x10, 0xff, 00, 0xcb, 0x76, 0xfd, 0x2b, 0xe6, - 0x85, 0xf1, 0x45, 0xd0, 0xff, 00, 0x96, 0xa7, 0xf3, 0xff, - 00, 0xeb, 0xd4, 0xcb, 0xe2, 0xcb, 0x90, 0x3f, 0xd6, 0x37, - 0xf9, 0xfc, 0x6b, 0x55, 0x9a, 0x4d, 0x1a, 0xac, 0xe6, 0xa1, - 0xf4, 0xcc, 0x7f, 0x10, 0x93, 0x3f, 0xeb, 0x9b, 0xf2, 0x15, - 0x69, 0x3e, 0x20, 0xa7, 0xfc, 0xf7, 0x23, 0xf0, 0x15, 0xf3, - 0xa, 0xf8, 0xca, 0xe5, 0x7f, 0xe5, 0xa3, 0x7f, 0x9f, 0xc6, - 0xa6, 0x4f, 0x1a, 0xdc, 0x7f, 0xcf, 0x47, 0xfc, 0xff, 00, - 0xfa, 0xf5, 0xa2, 0xcd, 0x64, 0x6a, 0xb3, 0xb9, 0x1f, 0x4f, - 0xa7, 0xc4, 0x4, 0x3f, 0xf2, 0xdc, 0xfe, 0x95, 0x62, 0x3f, - 0x88, 0xa, 0x7f, 0xe5, 0xb9, 0xfc, 0x85, 0x7c, 0xbc, 0xbe, - 0x39, 0x9c, 0x7f, 0xcb, 0x47, 0xff, 00, 0x3f, 0x8d, 0x4e, - 0x9e, 0x3e, 0x98, 0x7f, 0xcb, 0x47, 0x3f, 0xe7, 0xeb, 0x5a, - 0xac, 0xd9, 0x9b, 0x2c, 0xf2, 0x47, 0xd4, 0x69, 0xe3, 0xe5, - 0xff, 00, 0x9e, 0xe4, 0x7e, 0x55, 0x3a, 0xf8, 0xf4, 0x1f, - 0xf9, 0x78, 0x3f, 0xa5, 0x7c, 0xb8, 0x9f, 0x10, 0x25, 0xe3, - 0x32, 0xb7, 0xf9, 0xfc, 0x6a, 0xc2, 0x7c, 0x41, 0x90, 0x7f, - 0xcb, 0x56, 0xfc, 0xff, 00, 0xfa, 0xf5, 0xaa, 0xcd, 0xcd, - 0xe3, 0x9e, 0xbe, 0xe7, 0xd4, 0x71, 0xf8, 0xf5, 0x7b, 0x4e, - 0x7f, 0x4a, 0xb2, 0x9e, 0x3c, 0xe9, 0xfb, 0xf3, 0xf9, 0xa, - 0xf9, 0x72, 0x3f, 0x88, 0xce, 0x3f, 0xe5, 0xb1, 0xfc, 0xff, - 00, 0xfa, 0xf5, 0x66, 0x3f, 0x88, 0xd2, 0x7f, 0xcf, 0x66, - 0xff, 00, 0xbe, 0xbf, 0xfa, 0xf5, 0xaa, 0xcd, 0xfc, 0xcd, - 0xe3, 0x9e, 0xf9, 0x9f, 0x50, 0xaf, 0x8f, 0x79, 0xc7, 0x9e, - 0xdf, 0xa5, 0x4e, 0x9e, 0x3b, 0x1f, 0xf3, 0xd9, 0xbf, 0x4a, - 0xf9, 0x7e, 0x3f, 0x88, 0xcf, 0xff, 00, 0x3d, 0xdb, 0xfe, - 0xfa, 0xff, 00, 0xeb, 0xd5, 0x98, 0xfe, 0x24, 0x37, 0xfc, - 0xf6, 0x6f, 0xfb, 0xeb, 0xff, 00, 0xaf, 0x5b, 0x47, 0x37, - 0xf3, 0x37, 0x59, 0xf2, 0xee, 0x7d, 0x3e, 0x9e, 0x3c, 0xcf, - 0xfc, 0xb6, 0x3f, 0x90, 0xa9, 0x97, 0xc7, 0x43, 0xbc, 0xa7, - 0xf2, 0x15, 0xf3, 0x12, 0x7c, 0x48, 0x7f, 0xf9, 0xec, 0x7f, - 0x3f, 0xfe, 0xbd, 0x59, 0x8b, 0xe2, 0x3b, 0xf1, 0xfb, 0xe6, - 0xfc, 0xff, 00, 0xfa, 0xf5, 0xb2, 0xcd, 0xd7, 0x73, 0x78, - 0xe7, 0xab, 0xb9, 0xf4, 0xdc, 0x7e, 0x38, 0x4c, 0x7f, 0xad, - 0x3f, 0x90, 0xa9, 0xd3, 0xc7, 0x11, 0xe7, 0xef, 0x9f, 0xd2, - 0xbe, 0x66, 0x8f, 0xe2, 0x43, 0xf, 0xf9, 0x6c, 0x7f, 0xef, - 0xaf, 0xfe, 0xbd, 0x5a, 0x4f, 0x89, 0xc, 0x7f, 0xe5, 0xa9, - 0xfc, 0xff, 00, 0xfa, 0xf5, 0xaa, 0xcd, 0x97, 0x73, 0x78, - 0xe7, 0x8b, 0xb9, 0xf4, 0xaa, 0xf8, 0xda, 0x23, 0xff, 00, - 0x2d, 0xd, 0x4c, 0x9e, 0x32, 0x84, 0xf2, 0x5c, 0xd7, 0xcd, - 0x71, 0xfc, 0x46, 0x3f, 0xf3, 0xd4, 0xff, 00, 0xdf, 0x5f, - 0xfd, 0x7a, 0xb2, 0x9f, 0x11, 0x4f, 0x79, 0x8f, 0xe7, 0xff, - 00, 0xd7, 0xad, 0x56, 0x6d, 0x13, 0x75, 0x9d, 0xc7, 0xb9, - 0xf4, 0x8a, 0x78, 0xc6, 0xf, 0xef, 0x9a, 0x6b, 0xf8, 0xb2, - 0x6, 0xfe, 0x32, 0x3e, 0xb5, 0xf3, 0xc2, 0x7c, 0x46, 0xed, - 0xe6, 0x9f, 0xfb, 0xeb, 0xff, 00, 0xaf, 0x4f, 0x1f, 0x10, - 0x43, 0x1f, 0xf5, 0xa7, 0xf3, 0x1f, 0xe3, 0x5b, 0x47, 0x34, - 0x8b, 0x37, 0x8e, 0x73, 0x16, 0x7b, 0xe4, 0x9e, 0x25, 0x85, - 0xc7, 0x12, 0x73, 0x54, 0xe6, 0xd6, 0xd1, 0x81, 0xc4, 0x95, - 0xe2, 0x2b, 0xe3, 0xdd, 0xdd, 0x26, 0x3f, 0x98, 0xff, 00, - 0x1a, 0x7f, 0xfc, 0x26, 0xe5, 0xbf, 0xe5, 0xa9, 0xff, 00, - 0xbe, 0x87, 0xf8, 0xd7, 0x64, 0x31, 0xd0, 0x91, 0xdd, 0x4f, - 0x32, 0x84, 0xcf, 0x58, 0xba, 0xd5, 0x86, 0xf, 0xcf, 0x58, - 0x97, 0xba, 0xb7, 0x5f, 0x9a, 0xb8, 0x13, 0xe3, 0x56, 0x3f, - 0xf2, 0xd4, 0xff, 00, 0xdf, 0x43, 0xfc, 0x6a, 0x9, 0x7c, - 0x58, 0x1c, 0x1c, 0xbe, 0x7f, 0x1f, 0xfe, 0xbd, 0x76, 0x46, - 0xbc, 0x65, 0xb1, 0xe8, 0x43, 0x11, 0x9, 0xec, 0x74, 0xd7, - 0xda, 0xbf, 0xfb, 0x75, 0xce, 0xdf, 0xea, 0xbb, 0xb8, 0xce, - 0x6b, 0x26, 0xe3, 0x5f, 0x59, 0x8f, 0xc, 0x7f, 0x3a, 0xa1, - 0x25, 0xd9, 0x73, 0x9c, 0xe6, 0xb7, 0x4d, 0x3d, 0x8e, 0x94, - 0xd3, 0xd8, 0xb3, 0x73, 0x79, 0xd7, 0x26, 0xb9, 0x3f, 0x11, - 0x5e, 0x62, 0xde, 0x41, 0x9a, 0xd4, 0xbc, 0xb8, 0xe3, 0xa9, - 0xae, 0x57, 0xc4, 0x13, 0x19, 0x2d, 0xd8, 0x52, 0x9f, 0xc2, - 0xc9, 0x9f, 0xc2, 0xcf, 0x21, 0xf1, 0x7c, 0xbe, 0x64, 0xd2, - 0x73, 0xdc, 0xd7, 0x3, 0x36, 0x77, 0x1e, 0x7b, 0xd7, 0x79, - 0xe2, 0x94, 0xe5, 0x8f, 0xbd, 0x70, 0xd2, 0x8e, 0x4d, 0x7c, - 0x66, 0x25, 0xfe, 0xf0, 0xfc, 0xff, 00, 0x16, 0xff, 00, - 0x7a, 0x66, 0xdc, 0x2e, 0x73, 0x59, 0x17, 0x69, 0x80, 0x6b, - 0x6e, 0xe0, 0x75, 0xac, 0xd9, 0x2d, 0x9a, 0xea, 0x78, 0xa1, - 0x8f, 0x97, 0x91, 0x82, 0x28, 0x3e, 0xa4, 0xe0, 0x56, 0x94, - 0x5e, 0xa6, 0xd4, 0x1e, 0xb6, 0x3e, 0xbe, 0xfd, 0x82, 0x3c, - 0x18, 0xd2, 0x59, 0xdc, 0xea, 0x6c, 0x83, 0xcc, 0xba, 0xbd, - 0x8, 0xa4, 0xe7, 0x98, 0x97, 0x69, 0x6f, 0xd4, 0x1a, 0xfd, - 0x10, 0xb5, 0x4d, 0xaa, 0x7, 0x40, 0x2b, 0xe7, 0xf, 0xd9, - 0x2b, 0xc0, 0x3, 0xc2, 0x5e, 0xe, 0xd2, 0x20, 0x31, 0xa8, - 0x78, 0x6d, 0x12, 0x49, 0x4e, 0x3f, 0xe5, 0xb3, 0xaa, 0x96, - 0xed, 0xee, 0x6b, 0xe9, 0x38, 0x17, 0x8a, 0xfa, 0xda, 0x71, - 0xe5, 0x82, 0x47, 0xdb, 0xd2, 0x8f, 0x2c, 0x12, 0x2e, 0x42, - 0x38, 0xab, 0xf0, 0x2d, 0x52, 0x84, 0x70, 0x2b, 0x46, 0x5, - 0xe2, 0xb4, 0x36, 0x2e, 0x40, 0x39, 0x15, 0xa5, 0x6e, 0x2a, - 0x84, 0xb, 0xcd, 0x69, 0x5b, 0x8c, 0x62, 0x80, 0x2e, 0x46, - 0x2a, 0xe4, 0x23, 0x8a, 0xab, 0x18, 0xe6, 0xae, 0x44, 0x38, - 0x14, 0x1, 0x66, 0x3e, 0xd5, 0x61, 0x3a, 0x54, 0x11, 0x8e, - 0x95, 0x61, 0x7, 0x14, 0x1, 0x32, 0x54, 0xab, 0x51, 0xa8, - 0xa9, 0x7, 0x4a, 00, 0x7a, 0xf4, 0xa9, 0x7, 0x6a, 0x60, - 0x1d, 0xa9, 0xeb, 0x40, 0xe, 0xa2, 0x8a, 0x28, 0x1, 0xc2, - 0x96, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, - 0x28, 0x3, 0x31, 0x96, 0xa0, 0x91, 0x2a, 0xd3, 0xe, 0x6a, - 0x17, 0x5e, 0xb4, 0x1, 0x52, 0x45, 0xe6, 0xbc, 0xd3, 0xe2, - 0xa7, 0xc1, 0xdb, 0x1f, 0x88, 0x71, 0x46, 0xeb, 0x24, 0x56, - 0x37, 0x91, 0xe7, 0x73, 0x98, 0x3, 0xac, 0xab, 0x8f, 0xba, - 0xc3, 0x23, 0xb8, 0x1c, 0xf3, 0x8a, 0xf5, 0x6, 0x4a, 0xaf, - 0x22, 0x52, 0x69, 0x49, 0x59, 0x89, 0xa5, 0x25, 0x67, 0xb1, - 0xf9, 0xcb, 0xf1, 0x13, 0xe0, 0xb5, 0xef, 0x85, 0x35, 0x8b, - 0x8b, 0x52, 0x63, 0xf3, 0x14, 0x96, 0x11, 0x81, 0xc1, 0x5f, - 0x50, 0x7f, 0xe, 0xf8, 0xaf, 0x3d, 0x83, 0x41, 0xf3, 0x6e, - 0xbc, 0xb7, 0xc0, 0x23, 0xd4, 0x57, 0xe9, 0xf7, 0x89, 0x7c, - 0x29, 0xa6, 0x78, 0xa6, 0xc1, 0xed, 0x35, 0x2b, 0x55, 0x9e, - 0x36, 0x18, 0x7, 0x38, 0x65, 0x3e, 0xa0, 0x8e, 0x6b, 0xe6, - 0x7f, 0x8a, 0x1f, 00, 0xa7, 0xd0, 0x6e, 0x7e, 0xd9, 0xa7, - 0xc3, 0x2d, 0xee, 0x9e, 0xa0, 0x9f, 0x38, 0x6d, 0xdf, 0x1f, - 0xb3, 0x7a, 0xf4, 0xeb, 0x8c, 0x57, 0xe7, 0xd9, 0x9f, 0xb, - 0x46, 0xa3, 0xf6, 0xd8, 0x1d, 0x1f, 0x6e, 0x8f, 0xfc, 0x8f, - 0xca, 0xf3, 0x9e, 0xb, 0x85, 0x57, 0xf5, 0x8c, 0xb9, 0xf2, - 0xcb, 0xac, 0x7a, 0x3f, 0x4e, 0xdf, 0x91, 0xf3, 0xf5, 0x9f, - 0x83, 0x3, 0x81, 0xca, 0xff, 00, 0xdf, 0x35, 0xa9, 0xf, - 0x81, 0xf3, 0xdd, 0x49, 0xff, 00, 0x76, 0xbb, 0x8d, 0x2a, - 0xd6, 0x4, 0xa, 0xac, 0xc0, 0x30, 0x1c, 0x66, 0xba, 0xe8, - 0xb4, 0x55, 0x65, 0x52, 0x6, 0x46, 0x2b, 0xe7, 0xe9, 0xe1, - 0x2a, 0x50, 0xf7, 0x6b, 0x41, 0xc5, 0xf9, 0x9f, 0x2f, 0x4b, - 0x3, 0x57, 0xd, 0xee, 0xd7, 0x83, 0x8b, 0xf3, 0x3c, 0x71, - 0xfc, 0xa, 0x7f, 0xbc, 0x9f, 0xf7, 0xcd, 0x42, 0xfe, 0x7, - 0xc7, 0xf1, 0x27, 0xfd, 0xf3, 0x5e, 0xcd, 0x2e, 0x8c, 0x39, - 0xf9, 0x2a, 0xa4, 0x9a, 0x37, 0xfb, 0x6, 0xbb, 0x14, 0x20, - 0x77, 0xa8, 0x53, 0x3c, 0x75, 0xbc, 0x10, 0x7d, 0x53, 0xfe, - 0xf8, 0xa8, 0x9b, 0xc0, 0xf9, 0xfe, 0xe1, 0xff, 00, 0x80, - 0xa, 0xf6, 0x23, 0xa4, 0xf, 0xee, 0x1a, 0x63, 0x68, 0xe3, - 0xfb, 0x94, 0xf9, 0x20, 0x5f, 0xb3, 0x81, 0xe3, 0x4f, 0xe0, - 0x5c, 0xe7, 0x38, 0xfc, 0x14, 0x54, 0x2f, 0xe0, 0x51, 0xdf, - 0x1f, 0xf7, 0xc8, 0xaf, 0x67, 0x6d, 0x19, 0x4f, 0xf0, 0x53, - 0xe, 0x8a, 0xbf, 0xdc, 0x34, 0xbd, 0x9c, 0x9, 0xf6, 0x50, - 0x3c, 0x4d, 0xfc, 0xc, 0xbf, 0xec, 0xfe, 0x2b, 0x50, 0xbf, - 0x81, 0xd4, 0x9e, 0xa8, 0x3f, 0xe0, 0x35, 0xed, 0xc7, 0x44, - 0x5f, 0xee, 0x1a, 0x63, 0x68, 0x4a, 0x7f, 0x80, 0xd2, 0x74, - 0xa2, 0xc5, 0xec, 0x20, 0xcf, 0xe, 0x7f, 0x2, 0x83, 0xdd, - 0x3f, 0xef, 0x9a, 0x81, 0xfc, 0x8, 0x8, 0xea, 0xbf, 0xf7, - 0xc8, 0xaf, 0x75, 0x6d, 0x5, 0x71, 0xf7, 0xd, 0x44, 0x7c, - 0x3e, 0xb8, 0xfb, 0x87, 0xf4, 0xa5, 0xec, 0x62, 0x4f, 0xd5, - 0xe0, 0x78, 0x53, 0x78, 0xc, 0x7b, 0x7f, 0xdf, 0x22, 0xa1, - 0x6f, 0x1, 0x8f, 0x55, 0xfc, 0x50, 0x57, 0xbb, 0x37, 0x87, - 0x93, 0xfb, 0x95, 0x1b, 0x78, 0x71, 0xf, 0xf0, 0x52, 0xfa, - 0xbc, 0x49, 0xfa, 0xac, 0x4f, 0x6, 0x7f, 0x2, 0xf, 0xef, - 0x20, 0xff, 00, 0x80, 0x54, 0xd, 0xe0, 0x51, 0x9f, 0xbe, - 0xa3, 0xfe, 0x3, 0x5e, 0xf6, 0xde, 0x1a, 0x8c, 0x8c, 0x6c, - 0xa8, 0x8f, 0x86, 0x50, 0xff, 00, 0x7, 0xeb, 0x52, 0xf0, - 0xc8, 0x97, 0x84, 0x47, 0x81, 0xbf, 0x81, 0x1, 0xff, 00, - 0x96, 0x8a, 0x7f, 0xe0, 0x35, 0x13, 0xf8, 0xc, 0xff, 00, - 0x79, 0x7f, 0xef, 0x9a, 0xf7, 0xd7, 0xf0, 0xba, 0x7f, 0xcf, - 0x33, 0xf9, 0xd4, 0x2f, 0xe1, 0x65, 0xc1, 0xf9, 0xf, 0xe9, - 0x4b, 0xea, 0xc8, 0x5f, 0x54, 0x47, 0x81, 0x37, 0x81, 0x1b, - 0xb1, 0x5f, 0xfb, 0xe6, 0xa1, 0x6f, 0x2, 0xb8, 0xfe, 0x25, - 0x1f, 0xf0, 0x1a, 0xf7, 0xe6, 0xf0, 0xaa, 0x9f, 0xf9, 0x66, - 0x7f, 0x4a, 0x89, 0xbc, 0x24, 0xa4, 0xf0, 0x94, 0xbe, 0xac, - 0x4f, 0xd5, 0x17, 0x63, 0xc0, 0x5f, 0xc1, 0xe, 0x3a, 0xb2, - 0xfe, 0x55, 0x13, 0x78, 0x29, 0x87, 0x1b, 0xc7, 0xe5, 0x5e, - 0xfc, 0xde, 0x12, 0x5c, 0x1f, 0x93, 0xfc, 0xfe, 0x75, 0xb, - 0xf8, 0x45, 0x7f, 0xb8, 0x6a, 0x7e, 0xac, 0x4b, 0xc2, 0x1e, - 0x2, 0xde, 0xe, 0x90, 0x7f, 0x10, 0xfc, 0xaa, 0x26, 0xf0, - 0x7c, 0xbf, 0xde, 0x1f, 0x95, 0x7b, 0xe3, 0x78, 0x4c, 0x3, - 0xfe, 0xac, 0xfe, 0x75, 0x13, 0xf8, 0x48, 0x7f, 0xcf, 0x23, - 0xf9, 0x8a, 0x9f, 0xab, 0x13, 0xf5, 0x53, 0xc1, 0xf, 0x84, - 0xa5, 0x1f, 0xc4, 0x3f, 0x2a, 0x89, 0xbc, 0x2d, 0x22, 0xf5, - 0x65, 0xfc, 0xab, 0xde, 0x9b, 0xc2, 0x3f, 0xf4, 0xc8, 0xfe, - 0x95, 0x13, 0xf8, 0x3f, 0x3f, 0xf2, 0xcc, 0xd2, 0xf6, 0xc, - 0x9f, 0xab, 0x48, 0xf0, 0x66, 0xf0, 0xcb, 0xf6, 0x23, 0xf2, - 0xa6, 0x37, 0x87, 0x25, 0xc7, 0x5f, 0xd2, 0xbd, 0xd9, 0xbc, - 0x1c, 0xf, 0xfc, 0xb3, 0xa8, 0x24, 0xf0, 0x70, 0xff, 00, - 0x9e, 0x47, 0xfc, 0xfe, 0x34, 0xbd, 0x8c, 0x85, 0xf5, 0x79, - 0x9e, 0x16, 0x7c, 0x3b, 0x20, 0xf4, 0xfc, 0xa9, 0x87, 0x42, - 0x71, 0xe9, 0x5e, 0xe0, 0xfe, 0x10, 0x51, 0xff, 00, 0x2c, - 0xbf, 0x95, 0x40, 0xde, 0x11, 0x1f, 0xf3, 0xc8, 0xfe, 0x62, - 0x97, 0xb2, 0x90, 0xbd, 0x84, 0xcf, 0x12, 0x3a, 0x23, 0xf, - 0x4a, 0x61, 0xd1, 0x9f, 0xd0, 0x7e, 0x55, 0xed, 0x6f, 0xe0, - 0xf5, 0x3f, 0xf2, 0xc9, 0x87, 0xe2, 0x2a, 0x27, 0xf0, 0x6a, - 0xff, 00, 0xcf, 0x26, 0x3f, 0x8d, 0x2f, 0x67, 0x31, 0x7b, - 0x2a, 0x87, 0x8b, 0x1d, 0x1d, 0xc7, 0x6f, 0xd2, 0x9a, 0xda, - 0x53, 0xe, 0xd5, 0xec, 0xaf, 0xe0, 0xc1, 0xff, 00, 0x3c, - 0x8d, 0x42, 0xfe, 0xd, 00, 0xf0, 0x86, 0x97, 0x24, 0xd0, - 0xbd, 0x9d, 0x53, 0xc7, 0x1b, 0x4b, 0x34, 0xc3, 0xa6, 0x9f, - 0x7a, 0xf5, 0xf7, 0xf0, 0x70, 0xfe, 0xe3, 0x55, 0x77, 0xf0, - 0x70, 0xff, 00, 0x9e, 0x64, 0xfe, 0x34, 0xad, 0x34, 0x4f, - 0x2d, 0x54, 0x79, 0x41, 0xd3, 0x88, 0xa6, 0x9d, 0x3d, 0xbd, - 0xff, 00, 0x2a, 0xf5, 0x36, 0xf0, 0x76, 0x7f, 0xe5, 0x99, - 0xfc, 0xff, 00, 0xfa, 0xf5, 0x13, 0x78, 0x37, 0xaf, 0xee, - 0xcd, 0x1e, 0xf8, 0x7e, 0xf0, 0xf2, 0xf3, 0x62, 0x47, 0x7a, - 0x4f, 0xb1, 0x37, 0xad, 0x7a, 0x63, 0xf8, 0x39, 0xbf, 0xe7, - 0x91, 0x35, 0x5d, 0xfc, 0x1e, 0xc3, 0xfe, 0x59, 0x37, 0xe7, - 0x45, 0xe6, 0x17, 0xa8, 0x8f, 0x3a, 0xfb, 0x23, 0xa, 0x3e, - 0xca, 0x6b, 0xbf, 0x7f, 0x8, 0xb0, 0x3f, 0xea, 0xdb, 0xf3, - 0xa8, 0x9b, 0xc2, 0x6f, 0xfd, 0xc3, 0xf5, 0xa5, 0xcd, 0x3e, - 0xc1, 0xcd, 0x53, 0xb1, 0xc1, 0xfd, 0x95, 0xa9, 0xd, 0xbb, - 0xa, 0xee, 0x1b, 0xc2, 0xae, 0x3f, 0x84, 0xfe, 0x75, 0x1b, - 0x78, 0x5e, 0x41, 0xfc, 0xd, 0xf9, 0xd1, 0xcf, 0x2e, 0xc2, - 0xf6, 0x93, 0xea, 0x8e, 0x2c, 0xc0, 0xde, 0xd4, 0x86, 0x16, - 0xae, 0xbd, 0xfc, 0x35, 0x20, 0xfe, 0x6, 0xfc, 0xea, 0x13, - 0xe1, 0xe9, 0x7, 0xf0, 0xd1, 0xce, 0xfb, 0xf, 0xda, 0xbe, - 0xc7, 0x28, 0x63, 0x6f, 0x4a, 0x36, 0x37, 0xa1, 0xae, 0xa0, - 0xf8, 0x7e, 0x4f, 0xee, 0x54, 0x6d, 0xa1, 0x4b, 0xd9, 0xd, - 0x1c, 0xfe, 0x41, 0xed, 0x9f, 0x63, 0x9a, 0xda, 0x7d, 0x28, - 0xc7, 0xb5, 0x74, 0x2d, 0xa2, 0xc9, 0xfd, 0xc3, 0xf9, 0xd4, - 0x67, 0x47, 0x90, 0x75, 0x8f, 0xf5, 0x14, 0x7b, 0x44, 0x35, - 0x59, 0x76, 0x30, 0x68, 0xad, 0xb6, 0xd2, 0x1c, 0x1f, 0xb8, - 0x69, 0xad, 0xa5, 0x3f, 0xf7, 0xd, 0x3f, 0x68, 0x83, 0xda, - 0xa3, 0x1a, 0x8a, 0xd6, 0xfe, 0xca, 0x6e, 0xe8, 0x69, 0x87, - 0x4d, 0x6f, 0xee, 0x53, 0xe7, 0x43, 0xf6, 0xb1, 0x33, 0x28, - 0xad, 0x3, 0xa7, 0x1f, 0xee, 0x9a, 0x4f, 0xb0, 0xfb, 0x53, - 0xe7, 0x88, 0xfd, 0xa4, 0x4a, 0x14, 0x55, 0xd3, 0x60, 0x7f, - 0xc9, 0xa6, 0xfd, 0x85, 0xbd, 0xd, 0x1c, 0xc8, 0xaf, 0x69, - 0x12, 0xa5, 0x15, 0x6f, 0xec, 0x44, 0x76, 0x34, 0xcf, 0xb2, - 0x37, 0xa5, 0x3e, 0x64, 0x1c, 0xf1, 0x2b, 0xe6, 0x8a, 0x9c, - 0xda, 0xb0, 0xa3, 0xec, 0xcd, 0x8e, 0x94, 0x5d, 0x15, 0xcd, - 0x12, 0xa, 0x2a, 0x5f, 0x21, 0xbd, 0x39, 0xa4, 0xf2, 0x5f, - 0xd0, 0xd3, 0xb8, 0xf9, 0x91, 0x1d, 0x14, 0xf3, 0x13, 0x7a, - 0x1a, 0x4f, 0x2d, 0xb1, 0xd2, 0x9e, 0x81, 0x74, 0x36, 0x8a, - 0x76, 0xc6, 0xf4, 0xa4, 0xd8, 0x47, 0x63, 0x40, 0x5d, 0x9, - 0x46, 0x69, 0x76, 0x9f, 0x4a, 0x30, 0x68, 0x1, 0x32, 0x68, - 0xcd, 0x18, 0xa2, 0x80, 0x17, 0x79, 0xf5, 0xa5, 0xde, 0xde, - 0xb4, 0xda, 0x28, 0xb0, 0x58, 0x77, 0x98, 0xde, 0xa6, 0x94, - 0x48, 0xd9, 0xea, 0x7f, 0x3a, 0x65, 0x18, 0xa4, 0x16, 0x25, - 0xf3, 0x9b, 0xd7, 0xf5, 0xa3, 0xcf, 0x61, 0xde, 0xa2, 0xc5, - 0x18, 0xa0, 0x5c, 0xa8, 0x97, 0xed, 0x6, 0x97, 0xed, 0x2c, - 0x3d, 0x6a, 0x1a, 0x29, 0x59, 0xb, 0x95, 0x13, 0x8b, 0xa6, - 0xf7, 0xa7, 0x7d, 0xa9, 0xbd, 0x3f, 0x5a, 0xad, 0x45, 0x16, - 0x41, 0xca, 0xbb, 0x16, 0x4d, 0xdb, 0x7a, 0x52, 0x8b, 0xc3, - 0xe9, 0x55, 0x68, 0xa5, 0xca, 0x85, 0xc8, 0x8b, 0x82, 0xf4, - 0x8a, 0x51, 0x7e, 0x47, 0x73, 0xf9, 0xd5, 0x2a, 0x28, 0xe5, - 0x41, 0xc9, 0x1e, 0xc5, 0xf1, 0xa8, 0x1f, 0x56, 0xfc, 0xe9, - 0x45, 0xfb, 0xf, 0xe2, 0x6f, 0xce, 0xb3, 0xe8, 0xa3, 0x95, - 0xb, 0xd9, 0xc4, 0xd2, 0x1a, 0x9b, 0x8f, 0xe3, 0x61, 0xff, - 00, 0x2, 0xa7, 0x8d, 0x52, 0x41, 0xfc, 0x6d, 0xff, 00, - 0x7d, 0x1a, 0xca, 0xa2, 0x97, 0x2a, 0x17, 0xb3, 0x46, 0xc2, - 0xea, 0xd2, 0xaf, 0xf1, 0xb7, 0xfd, 0xf5, 0x52, 0x8d, 0x72, - 0x60, 0x3e, 0xfb, 0x7e, 0x66, 0xb0, 0xa9, 0x41, 0xc5, 0x1c, - 0xa1, 0xec, 0xd7, 0x73, 0x7d, 0x7c, 0x41, 0x38, 0xfe, 0x36, - 0xff, 00, 0xbe, 0x8d, 0x48, 0xbe, 0x23, 0x9d, 0x7f, 0x8d, - 0x8f, 0xfc, 0x8, 0xd7, 0x39, 0xb8, 0xfa, 0xd2, 0xef, 0x3e, - 0xa6, 0x8e, 0x57, 0xdc, 0x7c, 0x8f, 0xa3, 0x3a, 0x71, 0xe2, - 0x7b, 0x85, 0x1c, 0x33, 0x7f, 0xdf, 0x46, 0x90, 0xf8, 0xba, - 0xe5, 0x47, 0x56, 0xff, 00, 0xbe, 0xcd, 0x73, 0x25, 0xcf, - 0xa9, 0xa8, 0xe4, 0x90, 0x9a, 0xd2, 0x29, 0xf7, 0x2e, 0x2a, - 0x49, 0xee, 0x75, 0x63, 0xc7, 0x37, 0x9, 0xfc, 0x2d, 0xff, - 00, 0x7f, 0x2a, 0x44, 0xf8, 0x85, 0x2a, 0xf5, 0x57, 0x1f, - 0xf6, 0xd2, 0xb8, 0xa3, 0xcf, 0x7a, 0x6b, 0x29, 0x3d, 0xeb, - 0xaa, 0x15, 0x27, 0x1d, 0x99, 0xdb, 0xa, 0xd5, 0x21, 0xb3, - 0x3b, 0xe8, 0xfe, 0x21, 0xc8, 0xc7, 0xee, 0xb7, 0xfd, 0xf7, - 0x5a, 0x36, 0xfe, 0x34, 0x69, 0x7a, 0xee, 0xff, 00, 0xbe, - 0xab, 0xcb, 0xc2, 0x11, 0xde, 0x9e, 0x97, 0x12, 0x44, 0x7e, - 0x52, 0x6b, 0xbe, 0x9e, 0x3a, 0xa4, 0x77, 0x3d, 0x3a, 0x39, - 0x95, 0x58, 0x3d, 0x4f, 0x63, 0xb6, 0xf1, 0x26, 0xef, 0x5f, - 0xce, 0xb4, 0x21, 0xd7, 0x77, 0xe, 0x87, 0xf3, 0xaf, 0x1a, - 0xb6, 0xd6, 0xe5, 0x88, 0x8c, 0xb5, 0x6f, 0x69, 0xde, 0x20, - 0x27, 0xab, 0x8c, 0x7d, 0x2b, 0xdb, 0xc3, 0xe6, 0x57, 0x76, - 0x6c, 0xfa, 0x3c, 0x2e, 0x6d, 0x77, 0x66, 0xcf, 0x4d, 0x7d, - 0x44, 0x5c, 0xe, 0x41, 0x1f, 0x8d, 0x65, 0xeb, 0x3, 0x36, - 0xac, 0x7a, 0xd6, 0x2d, 0xae, 0xae, 0x1c, 0x7d, 0xea, 0x5b, - 0xcd, 0x57, 0x75, 0xbb, 0x2e, 0xe1, 0x5e, 0xea, 0xc5, 0x46, - 0x71, 0x67, 0xd2, 0x47, 0x17, 0x19, 0xc1, 0xea, 0x79, 0xff, - 00, 0x8a, 00, 0x66, 0x7f, 0xa9, 0xae, 0x12, 0x61, 0xc9, - 0xfa, 0xd7, 0x6d, 0xe2, 0x9, 0x3c, 0xc6, 0x93, 0x7, 0x3c, - 0xd7, 0x19, 0x30, 0xc9, 0x35, 0xf2, 0xd5, 0xdd, 0xe7, 0x73, - 0xe2, 0xf1, 0x32, 0xe6, 0xa9, 0x73, 0x3a, 0x75, 0xe2, 0xbd, - 0x2b, 0xf6, 0x71, 0xf8, 0x63, 0x2f, 0x8f, 0x7c, 0x73, 0xd, - 0xeb, 0x98, 0xd7, 0x4f, 0xd2, 0xa4, 0x59, 0xa5, 0x59, 0x17, - 0x77, 0x9a, 0xd9, 0xf9, 0x53, 0x1d, 0x7, 0x73, 0x9e, 0x7a, - 0x57, 0x9d, 0xb4, 0x4f, 0x71, 0x22, 0x45, 0x1a, 0x97, 0x91, - 0x88, 0x1, 0x47, 0x73, 0x5f, 0xa4, 0x7f, 0xb3, 0x1f, 0xc2, - 0x9b, 0x5f, 0xb, 0xf8, 0x6a, 0xc6, 0x3f, 0x24, 0x85, 0x8d, - 0x4, 0xb2, 0x48, 0x4f, 0xdf, 0x98, 0x81, 0x93, 0xf9, 0xe, - 0x95, 0xe9, 0xe5, 0xf4, 0xbd, 0xa4, 0xf9, 0x9e, 0xc8, 0xf6, - 0x32, 0xca, 0x3e, 0xd6, 0x7c, 0xcf, 0x64, 0x7b, 0x67, 0x82, - 0x74, 0x21, 0xa1, 0xe8, 0xb0, 0xc2, 0x76, 0x99, 0x5c, 0x7, - 0x7c, 0xc, 0x60, 0x91, 0xd3, 0xf0, 0xe9, 0x5d, 0x64, 0x2b, - 0xc0, 0xaa, 0x70, 0x20, 0x38, 0xad, 0x8, 0x90, 0x71, 0x5f, - 0x4e, 0x7d, 0x89, 0x6a, 0x11, 0xc8, 0xad, 0x8, 0x7, 0x15, - 0x52, 0x4, 0xe6, 0xb4, 0x21, 0x4e, 0x28, 0x2, 0xd4, 0xb, - 0xd2, 0xb4, 0xed, 0xc5, 0x51, 0x85, 0x3e, 0x61, 0x5a, 0x30, - 0xe, 0x28, 0x2, 0xd4, 0x62, 0xae, 0x46, 0xbd, 0x2a, 0xac, - 0x2b, 0xcd, 0x5d, 0x8c, 0x50, 0x4, 0xc8, 0x39, 0xa9, 0xd0, - 0x74, 0xa8, 0x90, 0x74, 0xa9, 0xd0, 0x50, 0x4, 0xab, 0x52, - 0x1, 0xd2, 0x98, 0xa2, 0xa4, 0x1d, 0x68, 0x1, 0xeb, 0xd6, - 0x9e, 0xb4, 0xc5, 0xe9, 0x52, 0xe, 0x94, 00, 0x52, 0xaf, - 0x26, 0x92, 0x95, 0x68, 0x1, 0xd4, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x51, 0x61, 0xed, - 0x51, 0xba, 0xe4, 0x54, 0xf8, 0xcd, 0x30, 0x8c, 0x9a, 00, - 0xac, 0xcb, 0x50, 0x32, 0x66, 0xae, 0x32, 0x8a, 0x85, 0xd4, - 0x50, 0x5, 0x27, 0x8f, 0x9a, 0x82, 0x48, 0x81, 0x7, 0x23, - 0xad, 0x5e, 0x64, 0xa8, 0x9e, 0x3e, 0x28, 0x3, 0x81, 0xf1, - 0x27, 0xc2, 0xaf, 0xe, 0xf8, 0x92, 0x49, 0x26, 0xb9, 0xb0, - 0x51, 0x72, 0xe7, 0x26, 0x64, 0x66, 0x4, 0x9f, 0xc0, 0xd7, - 0x9a, 0xea, 0x5f, 0x2, 0xf5, 0xbd, 0x2a, 0x69, 0x1b, 0x42, - 0xd5, 0x22, 0x78, 0x98, 0xf1, 0x1c, 0xab, 0xb3, 0x3, 0xd3, - 0x3f, 0x35, 0x7d, 00, 0xe9, 0xed, 0x50, 0xb4, 0x5c, 0x74, - 0xa8, 0x9c, 0x23, 0x35, 0x69, 0xab, 0xa3, 0x39, 0xd3, 0x85, - 0x45, 0xcb, 0x35, 0x75, 0xe6, 0x7c, 0xd3, 0x75, 0xe0, 0xcf, - 0x1c, 0x69, 0xd, 0x9b, 0x8d, 0x3a, 0x3b, 0xa8, 0xc7, 0x3b, - 0xa2, 0x96, 0x3f, 0xf1, 0xcf, 0xe9, 0x59, 0x13, 0xde, 0xea, - 0x56, 0x80, 0x8b, 0x9d, 0xe, 0x65, 0x20, 0xe0, 0x95, 0x6c, - 0xff, 00, 0x21, 0x5f, 0x53, 0x3c, 0x3c, 0x54, 0x12, 0x40, - 0x18, 0x10, 0x40, 0x20, 0xf1, 0x83, 0x5c, 0x33, 0xcb, 0xb0, - 0xb3, 0xde, 0x8, 0xf3, 0x2a, 0x65, 0x38, 0x2a, 0xba, 0xba, - 0x6b, 0xe5, 0xa7, 0xe4, 0x7c, 0xb3, 0xfd, 0xbb, 0x18, 0xff, - 00, 0x59, 0xa7, 0xdc, 0x2f, 0xfc, 00, 0xff, 00, 0x85, - 0x1f, 0xf0, 0x91, 0xe9, 0xe3, 0xef, 0xc7, 0x32, 0x7d, 0x52, - 0xbe, 0x97, 0x9f, 0x44, 0xb2, 0x9b, 0x3b, 0xec, 0xed, 0xdf, - 0x3c, 0x1d, 0xd1, 0x29, 0xfe, 0x95, 0x9f, 0x37, 0x83, 0xb4, - 0x69, 0x81, 0xf3, 0x34, 0x8b, 0x7, 0x7, 0xae, 0xeb, 0x64, - 0x3f, 0xd2, 0xb9, 0x5e, 0x4f, 0x85, 0x7b, 0x27, 0xf7, 0x9c, - 0x92, 0xc8, 0x70, 0x4f, 0xa3, 0x5f, 0x33, 0xe7, 0x7f, 0xf8, - 0x48, 0xf4, 0xb6, 0xfe, 0x29, 0x7, 0xd5, 0x29, 0x7f, 0xb7, - 0x74, 0x93, 0xd6, 0x62, 0x3f, 0xe0, 0x6, 0xbd, 0xf2, 0x5f, - 00, 0x78, 0x79, 0xba, 0xe8, 0x7a, 0x78, 0xff, 00, 0x76, - 0xd9, 0x7, 0xf2, 0x15, 0x4a, 0x5f, 0x86, 0x7e, 0x1b, 0x93, - 0xae, 0x8b, 0x6d, 0xff, 00, 0x1, 0x52, 0x3f, 0x95, 0x66, - 0xf2, 0x5c, 0x3f, 0x46, 0xcc, 0x9f, 0xf, 0x61, 0x1e, 0xcd, - 0xfd, 0xe7, 0x89, 0xd, 0x57, 0x4a, 0x7e, 0x97, 0x23, 0x3f, - 0xee, 0x37, 0xf8, 0x53, 0xd6, 0xf3, 0x4d, 0x90, 0xfc, 0xb3, - 0x83, 0xff, 00, 0x1, 0x6f, 0xf0, 0xaf, 0x5f, 0x93, 0xe1, - 0x37, 0x85, 0xe4, 0xe0, 0xe9, 0x8, 0x3f, 0xdd, 0x96, 0x41, - 0xfc, 0x9a, 0xa9, 0xcd, 0xf0, 0x73, 0xc3, 0x2f, 0xc2, 0xd8, - 0xb4, 0x67, 0xda, 0x69, 0xf, 0xf3, 0x6a, 0x87, 0x92, 0x51, - 0x7b, 0x49, 0x99, 0x3e, 0x1d, 0xa1, 0xd2, 0x6c, 0xf3, 0x15, - 0x16, 0x72, 0xf, 0x96, 0x54, 0xfd, 0x69, 0xff, 00, 0x61, - 0x88, 0xe3, 0xe, 0x87, 0xfe, 0x4, 0x2b, 0xbf, 0x9b, 0xe0, - 0x96, 0x82, 0xc7, 0xe4, 0x13, 0xa7, 0x18, 0xc0, 0x90, 0xff, - 00, 0x5a, 0xa3, 0x27, 0xc0, 0x9d, 0x33, 0x4, 0xc7, 0x7d, - 0x79, 0x19, 0xf4, 0xca, 0xe3, 0xf9, 0x56, 0x2f, 0x23, 0x8f, - 0x49, 0xbf, 0xb8, 0xc2, 0x5c, 0x39, 0x1f, 0xb3, 0x51, 0xfd, - 0xc7, 0x18, 0x74, 0xd4, 0x27, 0x82, 0xa7, 0xfe, 0x4, 0x29, - 0xe, 0x94, 0xf, 0x61, 0x5d, 0x5c, 0xbf, 0x4, 0x2, 0x7f, - 0xc7, 0xbe, 0xa9, 0x70, 0xf, 0xfb, 0x52, 0x63, 0xf9, 0x2d, - 0x54, 0x7f, 0x83, 0x9a, 0xba, 0x9f, 0xdc, 0xeb, 0x4, 0x7f, - 0xbd, 0x3b, 0x8f, 0xe4, 0xb5, 0x8b, 0xc8, 0xe7, 0xd2, 0xa1, - 0x84, 0xb8, 0x72, 0xa7, 0xd9, 0xa8, 0x73, 0xa7, 0x49, 0xf6, - 0xa6, 0x36, 0x93, 0x9f, 0xe1, 0xad, 0xb9, 0x3e, 0x12, 0xf8, - 0xa9, 0x7e, 0xe6, 0xaf, 0x1, 0x5f, 0xf6, 0xa7, 0x93, 0x3f, - 0xfa, 0xd, 0x30, 0xfc, 0x30, 0xf1, 0x7c, 0x67, 0x8b, 0xfb, - 0x66, 0xff, 00, 0xb6, 0xcd, 0xfd, 0x56, 0xb3, 0x79, 0x25, - 0x6e, 0x93, 0x46, 0x2f, 0x87, 0x71, 0x1d, 0x26, 0xbf, 0x13, - 0x15, 0xb4, 0x8c, 0xff, 00, 0xd, 0x46, 0xda, 0x47, 0xfb, - 0x35, 0xb6, 0x7e, 0x1f, 0xf8, 0xd2, 0x33, 0xc4, 0xf6, 0xed, - 0xff, 00, 0x3, 0x53, 0xfc, 0xd6, 0xa3, 0x7f, 0x7, 0xf8, - 0xce, 0x2c, 0xe6, 0x28, 0x64, 0xc7, 0xa1, 0x53, 0xfc, 0x85, - 0x43, 0xc9, 0x71, 0x3d, 0xd7, 0xe2, 0x43, 0xe1, 0xfc, 0x5a, - 0xda, 0x4b, 0xf1, 0x31, 0x8e, 0x91, 0x8f, 0xe1, 0xa6, 0x36, - 0x91, 0x9f, 0xe1, 0xad, 0x56, 0xd1, 0x7c, 0x59, 0x8, 0xf9, - 0xb4, 0xdf, 0x33, 0xfd, 0xd4, 0x27, 0xf9, 0xa, 0x88, 0xc3, - 0xe2, 0x58, 0x87, 0xcf, 0xa0, 0x4c, 0xe3, 0xd5, 0x60, 0x73, - 0xfc, 0xab, 0x27, 0x94, 0xe2, 0xd7, 0x44, 0xfe, 0x66, 0xf, - 0x23, 0xc7, 0x2d, 0x92, 0x7f, 0x33, 0x30, 0xe8, 0xff, 00, - 0xec, 0xd3, 0xe, 0x8f, 0x91, 0xf7, 0x6b, 0x41, 0xae, 0xb5, - 0x84, 0xff, 00, 0x59, 0xa0, 0x5d, 0xaf, 0xae, 0x6d, 0x9c, - 0x52, 0x1d, 0x62, 0x58, 0xc7, 0xef, 0x74, 0xbb, 0xb4, 0xcf, - 0xfd, 0x31, 0x3f, 0xe3, 0x59, 0x3c, 0xb7, 0x19, 0x1f, 0xb2, - 0x63, 0x2c, 0xa3, 0x1d, 0x1f, 0xb1, 0xf8, 0xa3, 0x35, 0xb4, - 0x8e, 0xbf, 0x2d, 0x46, 0xda, 0x3f, 0xfb, 0x35, 0xa4, 0xfe, - 0x27, 0xb1, 0x4e, 0x24, 0xb6, 0xb9, 0x46, 0xf7, 0x41, 0xfe, - 0x34, 0xd1, 0xe2, 0x7d, 0x30, 0xff, 00, 0xc, 0xab, 0xf5, - 0x41, 0xfe, 0x35, 0x93, 0xc1, 0x62, 0x97, 0xfc, 0xbb, 0x66, - 0x2f, 0x2e, 0xc7, 0x2f, 0xf9, 0x74, 0xff, 00, 0x3, 0x30, - 0xe8, 0xa3, 0xfb, 0xa2, 0x98, 0xda, 0x2f, 0xfb, 0x23, 0xf3, - 0xad, 0x81, 0xe2, 0x2d, 0x2c, 0xf7, 0x71, 0xff, 00, 00, - 0xa7, 0xd, 0x6f, 0x4b, 0x61, 0xfe, 0xb3, 0x1f, 0x55, 0x35, - 0xf, 0xb, 0x89, 0x5f, 0xf2, 0xed, 0xfd, 0xc4, 0x3c, 0x16, - 0x2d, 0x6f, 0x49, 0xfd, 0xc6, 0xb, 0x68, 0x80, 0xff, 00, - 00, 0x34, 0xd6, 0xd0, 0xc7, 0xf7, 0x5, 0x74, 0x43, 0x53, - 0xd3, 0x5c, 0xf1, 0x3a, 0xf, 0xaf, 0x15, 0x28, 0xb9, 0xd3, - 0x9f, 0xfe, 0x5e, 0xa0, 0x19, 0xe7, 0x99, 00, 0xac, 0xdd, - 0x2a, 0xcb, 0x78, 0x3f, 0xb8, 0xc6, 0x54, 0x2b, 0xc7, 0x7a, - 0x6f, 0xee, 0x39, 0x36, 0xd0, 0xc7, 0xf7, 0x29, 0x87, 0x42, - 0x7, 0xf8, 0x6b, 0xb1, 0xdb, 0x64, 0xdd, 0x2e, 0x6d, 0xcf, - 0xfd, 0xb5, 0x14, 0xa2, 0xca, 0xdd, 0xf9, 0x59, 0x22, 0x23, - 0xd9, 0xc1, 0xac, 0xda, 0x92, 0xde, 0x3f, 0x81, 0x93, 0x53, - 0x5b, 0xc5, 0xfd, 0xc7, 0xe, 0xde, 0x1f, 0x53, 0xdb, 0xfc, - 0xfe, 0x75, 0x1b, 0xf8, 0x71, 0xf, 0xf0, 0xf, 0xf3, 0xf8, - 0xd7, 0x7d, 0xfd, 0x96, 0xad, 0xd3, 0x69, 0xfa, 0x52, 0x1d, - 0x27, 0x3f, 0xc3, 0x51, 0x75, 0xd8, 0xca, 0xeb, 0xaa, 0x3c, - 0xf8, 0xf8, 0x69, 0x3f, 0xb8, 0x3f, 0x33, 0x51, 0xb7, 0x86, - 0x97, 0xfb, 0xa3, 0x1f, 0x53, 0x5e, 0x82, 0x74, 0x9e, 0x7e, - 0xed, 0x35, 0xb4, 0x8f, 0xf6, 0x5, 0x2b, 0xa0, 0xe6, 0x89, - 0xe7, 0x6d, 0xe1, 0x95, 0xfe, 0xe0, 0xfc, 0xea, 0x26, 0xf0, - 0xb8, 0x3f, 0xc0, 0x2b, 0xd1, 0x4e, 0x91, 0xfe, 0xc0, 0xa6, - 0x7f, 0x64, 0xff, 00, 0xb3, 0x47, 0xba, 0x17, 0x81, 0xe7, - 0xd, 0xe1, 0x40, 0x7f, 0x84, 0x7f, 0x9f, 0xc6, 0xa0, 0x7f, - 0x9, 0x3, 0xd8, 0x7e, 0x5f, 0xfd, 0x7a, 0xf4, 0xc3, 0xa4, - 0x7f, 0xb1, 0x51, 0xb6, 0x91, 0xfe, 0xc5, 0x1e, 0xe8, 0x7b, - 0x87, 0x98, 0xb7, 0x84, 0x47, 0xf7, 0x7f, 0xcf, 0xe7, 0x51, - 0x37, 0x84, 0xbf, 0xd8, 0x5f, 0xd6, 0xbd, 0x44, 0xe9, 0x1c, - 0x7d, 0xca, 0x61, 0xd1, 0xff, 00, 0xd9, 0xa2, 0xd1, 0x17, - 0x2c, 0xf, 0x2b, 0x6f, 0x9, 0x1f, 0xf9, 0xe6, 0x3f, 0x3, - 0x51, 0x37, 0x84, 0x8f, 0xf7, 0x7, 0xe7, 0x5e, 0xaa, 0x74, - 0x61, 0xfd, 0xca, 0x63, 0x68, 0xc3, 0xfe, 0x79, 0x8f, 0xca, - 0x97, 0x2c, 0x45, 0xc9, 0x3, 0xca, 0x1b, 0xc2, 0xd, 0xfd, - 0xdf, 0xd4, 0x7f, 0x8d, 0x42, 0xfe, 0xe, 0x63, 0xd5, 0x7f, - 0x5f, 0xfe, 0xbd, 0x7a, 0xd1, 0xd1, 0x47, 0xf7, 0x17, 0xf2, - 0xa8, 0xce, 0x88, 0xa4, 0xff, 00, 0xab, 0x14, 0x38, 0x40, - 0x5e, 0xce, 0x7, 0x91, 0x3f, 0x83, 0x88, 0xfe, 0x11, 0xfe, - 0x7f, 0x1a, 0x85, 0xbc, 0x24, 0x7f, 0xb9, 0xfc, 0xeb, 0xd8, - 0x5b, 0x43, 0x5f, 0xf9, 0xe6, 0x2a, 0x36, 0xd1, 0x17, 0xfb, - 0x95, 0x3e, 0xca, 0x2, 0xf6, 0x50, 0x67, 0x8d, 0xbf, 0x84, - 0x49, 0xff, 00, 0x96, 0x79, 0xfc, 0x4d, 0x42, 0xde, 0xf, - 0x7, 0xfe, 0x59, 0xf, 0xcc, 0xd7, 0xb2, 0xb6, 0x84, 0xa7, - 0xf8, 0x2a, 0x36, 0xf0, 0xfa, 0x1f, 0xf9, 0x66, 0x3f, 0x2a, - 0x4e, 0x8c, 0x45, 0xec, 0x22, 0x78, 0xcb, 0xf8, 0x3b, 0xfd, - 0x81, 0xff, 00, 0x7d, 0x7f, 0xf5, 0xea, 0x16, 0xf0, 0x71, - 0x27, 0xee, 0x1, 0xf8, 0xff, 00, 0xf5, 0xeb, 0xda, 0x1b, - 0xc3, 0xb1, 0x9f, 0xf9, 0x64, 0xb9, 0xfa, 0x54, 0x67, 0xc3, - 0x68, 0x7f, 0xe5, 0x92, 0xfe, 0x54, 0xbd, 0x82, 0x27, 0xea, - 0xe8, 0xf1, 0x47, 0xf0, 0x6f, 0xfb, 0x23, 0xf3, 0xff, 00, - 0xeb, 0xd4, 0xf, 0xe0, 0xe0, 0x3f, 0xe5, 0x98, 0x3f, 0x9d, - 0x7b, 0x6b, 0x78, 0x69, 0x3f, 0xe7, 0x9a, 0xfe, 0xb5, 0x13, - 0x78, 0x65, 0x7f, 0xe7, 0x98, 0xfc, 0xcd, 0x2f, 0x60, 0x84, - 0xf0, 0xc9, 0x9e, 0x1e, 0xfe, 0xe, 0xcf, 0xf0, 0xf, 0xd6, - 0xa2, 0x6f, 0x6, 0xb7, 0x64, 0x15, 0xee, 0x2d, 0xe1, 0x75, - 0x3f, 0xf2, 0xcc, 0x7e, 0x75, 0x13, 0x78, 0x51, 0x71, 0xf7, - 0x5, 0x4f, 0xd5, 0xd1, 0x1f, 0x55, 0x47, 0x87, 0x37, 0x83, - 0x4f, 0x75, 0x5f, 0xf3, 0xf8, 0xd4, 0x4d, 0xe0, 0xc6, 0x3d, - 0x10, 0x1f, 0xc7, 0xff, 00, 0xaf, 0x5e, 0xe2, 0xde, 0x13, - 0x4f, 0xf9, 0xe6, 0x33, 0xf4, 0xa8, 0x5f, 0xc2, 0x49, 0xff, - 00, 0x3c, 0x97, 0xfe, 0xf9, 0xa9, 0xfa, 0xb9, 0x3f, 0x54, - 0x47, 0x86, 0xbf, 0x83, 0xd8, 0x1f, 0xf5, 0x63, 0xf3, 0xaa, - 0xef, 0xe0, 0xf6, 0xfe, 0xe0, 0xaf, 0x74, 0x7f, 0x8, 0xfa, - 0x44, 0xbf, 0x91, 0xa8, 0x4f, 0x84, 0xbd, 0x62, 0x5f, 0xcc, - 0xd2, 0xfa, 0xb9, 0x1f, 0x55, 0x3c, 0x31, 0xbc, 0x20, 0xe3, - 0xa2, 0xf, 0xf3, 0xf8, 0xd4, 0x67, 0xc2, 0x2e, 0x3f, 0x83, - 0xf5, 0xff, 00, 0xeb, 0xd7, 0xb9, 0x3f, 0x84, 0xbf, 0xe9, - 0x98, 0x15, 0x13, 0x78, 0x47, 0xfe, 0x99, 0x8a, 0x8f, 0xab, - 0x13, 0xf5, 0x43, 0xc3, 0x5f, 0xc2, 0x92, 0x8f, 0xe0, 0x1f, - 0x9f, 0xff, 00, 0x5e, 0xa1, 0x93, 0xc2, 0xf2, 0xf, 0xe1, - 0x1f, 0x9d, 0x7b, 0x93, 0xf8, 0x3c, 0x67, 0xfd, 0x50, 0xfc, - 0xaa, 0x17, 0xf0, 0x79, 0x1d, 0x22, 0x1f, 0x80, 0xa9, 0xfa, - 0xbb, 0x27, 0xea, 0xac, 0xf0, 0xe6, 0xf0, 0xcc, 0x98, 0xe8, - 0x2a, 0x26, 0xf0, 0xd4, 0xbf, 0xdd, 0xaf, 0x6f, 0x7f, 0x8, - 0x1f, 0xf9, 0xe2, 0x3f, 0x23, 0x50, 0xbf, 0x84, 0xf, 0xfc, - 0xf1, 0x1f, 0x91, 0xa5, 0xec, 0x24, 0x4f, 0xd5, 0xa4, 0x78, - 0x9b, 0x78, 0x72, 0x6f, 0xee, 0xff, 00, 0x2a, 0x89, 0xb4, - 0x9, 0x47, 0xf0, 0x8a, 0xf6, 0xb6, 0xf0, 0x78, 0xcf, 0xfa, - 0x95, 0xfd, 0x6a, 0x16, 0xf0, 0x72, 0xff, 00, 0xcf, 0x15, - 0xa5, 0xec, 0x64, 0x4f, 0xd5, 0xe7, 0xdc, 0xf1, 0x53, 0xa1, - 0xc9, 0xfd, 0xc1, 0x4c, 0x3a, 0x2c, 0xbf, 0xdd, 0x1f, 0x9d, - 0x7b, 0x43, 0xf8, 0x35, 0x7f, 0xe7, 0x98, 0xfc, 0x2a, 0x9, - 0x3c, 0x1a, 0x33, 0xc4, 0x54, 0xbd, 0x94, 0xd0, 0xbd, 0x84, - 0xcf, 0x1c, 0x3a, 0x3c, 0xa3, 0xf8, 0x3f, 0x51, 0x51, 0x9d, - 0x25, 0xc7, 0xf0, 0xf, 0xcc, 0x57, 0xb0, 0x3f, 0x83, 0x78, - 0xff, 00, 0x53, 0xfa, 0x1a, 0x81, 0xbc, 0x1b, 0xff, 00, - 0x4c, 0x47, 0xe4, 0x69, 0x7b, 0x39, 0x8b, 0xd9, 0x54, 0x47, - 0x91, 0xb6, 0x96, 0xff, 00, 0xdc, 0xfd, 0x45, 0x30, 0xe9, - 0xa7, 0x3f, 0x76, 0xbd, 0x69, 0xbc, 0x1a, 0x3f, 0xe7, 0x98, - 0xfc, 0xbf, 0xfa, 0xd5, 0xb, 0xf8, 0x3b, 0xfd, 0x81, 0x47, - 0x2c, 0xc3, 0x92, 0xa2, 0x3c, 0xab, 0xfb, 0x3f, 0x1f, 0xc2, - 0x7f, 0x2a, 0x61, 0xd3, 0xce, 0x4f, 0x18, 0xfc, 0x2b, 0xd4, - 0x9b, 0xc1, 0xbf, 0xf4, 0xcd, 0x4f, 0xe3, 0x50, 0x3f, 0x83, - 0x5b, 0xfe, 0x79, 0x2f, 0xeb, 0x4a, 0xd3, 0xb, 0x54, 0x3c, - 0xc8, 0xd8, 0xfb, 0x1a, 0x69, 0xb2, 0xc7, 0xa9, 0xaf, 0x49, - 0x7f, 0x6, 0x37, 0xfc, 0xf2, 0x1f, 0x97, 0xff, 00, 0x5a, - 0xa1, 0x7f, 0x7, 0x3f, 0xfc, 0xf3, 0xfd, 0x28, 0xf7, 0xc5, - 0x7a, 0x88, 0xf3, 0xbf, 0xb1, 0x9a, 0x69, 0xb4, 0x61, 0x5e, - 0x82, 0xde, 0xf, 0x61, 0xff, 00, 0x2c, 0xea, 0x16, 0xf0, - 0x9b, 0x8f, 0xf9, 0x66, 0x3f, 0x33, 0x45, 0xe7, 0xd8, 0x39, - 0xaa, 0x23, 0x84, 0x6b, 0x56, 0x2, 0x9a, 0x6d, 0x9c, 0x57, - 0x6e, 0xde, 0x14, 0x90, 0x7f, 0xcb, 0x31, 0xfa, 0xd4, 0x6d, - 0xe1, 0x69, 0x7, 0xf0, 0x1f, 0xca, 0x8e, 0x69, 0x76, 0xf, - 0x69, 0x2e, 0xc7, 0x17, 0xf6, 0x77, 0xa4, 0x36, 0xee, 0x3b, - 0x57, 0x60, 0x7c, 0x33, 0x28, 0xfe, 0x3, 0xfe, 0x7f, 0xa, - 0x88, 0xf8, 0x72, 0x5f, 0xee, 0x51, 0xce, 0xfb, 0x7, 0xb4, - 0x97, 0x63, 0x93, 0xf2, 0x5f, 0xd2, 0x8f, 0x29, 0xbd, 0x2b, - 0xa8, 0x6f, 0xf, 0xcd, 0xfd, 0xd1, 0xfa, 0xd4, 0x47, 0x40, - 0x98, 0x1f, 0xb9, 0xfa, 0x1f, 0xf0, 0xa3, 0xda, 0x79, 0xf, - 0xda, 0xbe, 0xc7, 0x37, 0xe5, 0xb0, 0xed, 0x48, 0x50, 0xfa, - 0x57, 0x44, 0x74, 0x29, 0xbf, 0xe7, 0x9f, 0xe8, 0x6a, 0x36, - 0xd1, 0xa4, 0x1f, 0xf2, 0xce, 0x8f, 0x68, 0x83, 0xda, 0x98, - 0x3b, 0x4f, 0xa5, 0x18, 0xad, 0xb3, 0xa4, 0x48, 0x3f, 0x83, - 0xf5, 0xa6, 0x9d, 0x29, 0xff, 00, 0xb8, 0x69, 0xfb, 0x44, - 0x3f, 0x6c, 0x8c, 0x5c, 0x51, 0x5a, 0xed, 0xa6, 0x3f, 0xfc, - 0xf3, 0x3f, 0x95, 0x30, 0xe9, 0xad, 0xfd, 0xc3, 0xf9, 0x53, - 0xf6, 0x91, 0x1f, 0xb5, 0x89, 0x97, 0x45, 0x69, 0x1d, 0x3d, - 0xbf, 0xb9, 0x4c, 0x36, 0x7, 0xd2, 0x9f, 0x3c, 0x47, 0xed, - 0x62, 0x50, 0xa2, 0xaf, 0x1b, 0xc, 0x76, 0xa6, 0xfd, 0x88, - 0xd1, 0xcf, 0x11, 0xfb, 0x48, 0x94, 0xea, 0x37, 0xab, 0xc6, - 0xcc, 0x8f, 0x5a, 0x63, 0x59, 0x9e, 0xe2, 0xa9, 0x4d, 0x14, - 0xa7, 0x1e, 0xe5, 0xa, 0x50, 0x33, 0x57, 0x45, 0xa7, 0xb5, - 0xd, 0x6a, 0x17, 0xb5, 0x5f, 0x3a, 0x2f, 0xda, 0x22, 0x9e, - 0xda, 0x42, 0xbe, 0xd5, 0x73, 0xc9, 0xa8, 0x5e, 0x2d, 0xb4, - 0xd4, 0xae, 0x35, 0x2b, 0x95, 0x18, 0x60, 0xd2, 0x2c, 0xad, - 0x11, 0xf9, 0x4d, 0x4c, 0xc9, 0x9e, 0x2a, 0x36, 0x80, 0xfa, - 0x56, 0xd1, 0x95, 0x8d, 0xe1, 0x3e, 0x57, 0x72, 0xfd, 0x8e, - 0xb4, 0xd1, 0x9c, 0x31, 0x20, 0xfd, 0x2b, 0x46, 0x4d, 0x50, - 0xbc, 0x67, 0xe6, 0x35, 0xcd, 0x98, 0xfd, 0xb1, 0x4e, 0x8e, - 0x77, 0x1f, 0x29, 0x26, 0xbd, 0x3a, 0x38, 0x96, 0xb4, 0x67, - 0xb3, 0x87, 0xc6, 0x35, 0xa3, 0x64, 0x7a, 0x95, 0xc6, 0xf7, - 0x61, 0x9e, 0xb5, 0x84, 0xf1, 0x65, 0x8f, 0x6a, 0xd8, 0xba, - 0x81, 0xb7, 0x6e, 0xeb, 0x5e, 0x97, 0xf0, 0x7b, 0xe0, 0xad, - 0xd7, 0x8d, 0x75, 0x8, 0x2f, 0xf5, 0xb, 0x62, 0xba, 0x3a, - 0xb7, 0xdd, 0x7d, 0xca, 0xd3, 0x1e, 0x70, 0x17, 0x8e, 0x47, - 0xe3, 0x5d, 0x14, 0xe3, 0x2c, 0x44, 0xd4, 0x21, 0xab, 0x3a, - 0xa9, 0x42, 0x78, 0xaa, 0x8a, 0x14, 0xd5, 0xd9, 0xa1, 0xfb, - 0x35, 0x7c, 0x15, 0xb8, 0xf1, 0x6, 0xb3, 0x6f, 0xaf, 0xea, - 0x36, 0x99, 0x81, 0x5c, 0x7d, 0x8a, 0x37, 0x38, 0x2e, 0xe0, - 0xe3, 0x77, 0x5e, 00, 0x3e, 0xbe, 0x95, 0xfa, 0x2f, 0xa2, - 0x69, 0xd1, 0xe9, 0x7a, 0x74, 0x36, 0xd1, 0xa8, 0x50, 0x8a, - 0x1, 0xc7, 0x3c, 0xf7, 0xae, 0x4f, 0xe1, 0xff, 00, 0x81, - 0x2d, 0xbc, 0x33, 0x61, 0x1, 0x36, 0xd1, 0x45, 0x2a, 0xae, - 0xd8, 0xe3, 0x41, 0xc4, 0x4b, 0xd8, 0xe, 0x38, 0xae, 0xf6, - 0x24, 0xe9, 0xc5, 0x7d, 0xae, 0x1e, 0x84, 0x68, 0x41, 0x45, - 0x1f, 0xa2, 0x61, 0x70, 0xf1, 0xc3, 0x53, 0x50, 0x45, 0x88, - 0x54, 0xe, 0xd5, 0x7e, 0x11, 0x55, 0xa1, 0x8f, 0xda, 0xaf, - 0x42, 0x80, 0x57, 0x49, 0xd6, 0x5a, 0xb7, 0x19, 0xc5, 0x68, - 0x42, 0x3a, 0x55, 0x48, 0x10, 0x71, 0x5a, 0x10, 0xa0, 0x27, - 0xa5, 00, 0x5a, 0x81, 0x79, 0xad, 0x18, 0x97, 0x8a, 0xa7, - 0x6e, 0xbd, 0x2b, 0x42, 0x21, 0xd2, 0x80, 0x2c, 0x44, 0xbc, - 0xd5, 0xb8, 0xc7, 0x4a, 0xaf, 0x12, 0xe6, 0xad, 0x20, 0xa0, - 0x9, 0xe3, 0x15, 0x3a, 0xf4, 0xa8, 0x63, 0x15, 0x3a, 0xaf, - 0x14, 00, 0xf5, 0xed, 0x4f, 0x5a, 0x45, 0x5a, 0x70, 0x18, - 0xa0, 0x7, 0x28, 0xe2, 0xa4, 0xa6, 0xaf, 0x5a, 0x75, 00, - 0x14, 0xe1, 0xd2, 0x9b, 0x4f, 0xa0, 0x2, 0x8a, 0x28, 0xa0, - 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0xa, 0xf8, - 0xf6, 0xa6, 0x30, 0xa9, 0x4f, 0x4a, 0x6e, 0x3d, 0xa8, 0x2, - 0x16, 0x5a, 0x89, 0x93, 0xa9, 0xab, 0x24, 0x73, 0xd2, 0xa3, - 0x64, 0x18, 0xa0, 0xa, 0xac, 0x9c, 0x54, 0x6e, 0x95, 0x6c, - 0xae, 0x29, 0x8e, 0x94, 0x1, 0x49, 0xa2, 0xe2, 0xa2, 0x31, - 0xfb, 0x55, 0xd6, 0x41, 0xe9, 0x51, 0xb2, 0x71, 0x40, 0x14, - 0x1e, 0x2f, 0x6a, 0x89, 0xa2, 0x1e, 0x95, 0x7d, 0xa3, 0xcd, - 0x46, 0xd1, 0xf5, 0xe0, 0xd0, 0x6, 0x7b, 0x46, 0x3f, 0xc8, - 0xa8, 0xda, 0x1c, 0xff, 00, 0xfa, 0xab, 0x40, 0xc4, 0x3d, - 0x29, 0x86, 0x21, 0xe9, 0x40, 0x19, 0xaf, 0x5, 0x46, 0x60, - 0xf6, 0xad, 0x23, 0xf, 0x14, 0xd3, 0xe, 0x28, 0x3, 0x30, - 0xc1, 0x4c, 0x30, 0x64, 0xe6, 0xb4, 0x9a, 0x2f, 0x6a, 0x67, - 0x91, 0x40, 0x19, 0xc6, 0xa, 0x61, 0x84, 0xe3, 0xa7, 0xe9, - 0x5a, 0x66, 0x1c, 0xe, 0x95, 0x1f, 0x92, 0x3d, 0x28, 0x3, - 0x37, 0xec, 0xfe, 0xd4, 0x86, 0xf, 0x6f, 0xd2, 0xb4, 0xbc, - 0x9a, 0x69, 0xb7, 0xc5, 00, 0x65, 0xf9, 0x39, 0xed, 0xfa, - 0x52, 0x1b, 0x7f, 0x6f, 0xd2, 0xb5, 0x3c, 0x9c, 0x53, 0x5a, - 0x1e, 0x3a, 0x50, 0x6, 0x49, 0xb7, 0x3, 0xb5, 0x21, 0xb7, - 0x1e, 0x9c, 0x56, 0x99, 0xb7, 0x18, 0xe9, 0x4d, 0x30, 0x71, - 0xd2, 0x80, 0x32, 0x8d, 0xb6, 0x7b, 0x50, 0x2d, 0x80, 0xad, - 0x2f, 0x26, 0x90, 0xc0, 0x3d, 0x28, 0x3, 0x25, 0xed, 0x11, - 0x8f, 0x2a, 0x1b, 0xea, 0x33, 0x50, 0xbe, 0x93, 0x6f, 0x27, - 0xde, 0xb7, 0x8c, 0xfd, 0x50, 0x1f, 0xe9, 0x5b, 0x26, 0xd8, - 0x7a, 0x52, 0x1b, 0x71, 0xe9, 0x40, 0x18, 0x12, 0x78, 0x7e, - 0xc1, 0xcf, 0xcd, 0x65, 0x6e, 0x7e, 0xb1, 0x2f, 0xf8, 0x54, - 0xf, 0xe1, 0x7d, 0x31, 0xfa, 0xe9, 0xd6, 0xc7, 0xfe, 0xd8, - 0xaf, 0xf8, 0x57, 0x46, 0x6d, 0xf3, 0xd4, 0x53, 0x4d, 0xb8, - 0xec, 0x28, 0x3, 0x97, 0x6f, 0x6, 0x68, 0xef, 0xd7, 0x4b, - 0xb5, 0x3f, 0xf6, 0xc5, 0x7f, 0xc2, 0xa2, 0x93, 0xc0, 0x7a, - 0x13, 0x8c, 0x1d, 0x26, 0xd7, 0xeb, 0xe4, 0x8c, 0xd7, 0x5a, - 0x6d, 0xf8, 0xe9, 0x4d, 0xfb, 0x31, 0xa0, 0xe, 0x22, 0x7f, - 0x86, 0xda, 0x14, 0xa7, 0x8b, 0x18, 0xe3, 0xff, 00, 0x71, - 0x14, 0x7f, 0x4a, 0xcf, 0x9b, 0xe1, 0x26, 0x89, 0x3e, 0x40, - 0x59, 0xe3, 0xc9, 0xcf, 0xc8, 0x54, 0x63, 0xff, 00, 0x1d, - 0xaf, 0x45, 0x36, 0xe4, 0x53, 0x7c, 0x83, 0x40, 0x1e, 0x62, - 0xdf, 0x5, 0xf4, 0x7c, 0xe5, 0x6e, 0xaf, 0xd7, 0xfe, 0xda, - 0x2f, 0xff, 00, 0x13, 0x51, 0xb7, 0xc1, 0xab, 0x5, 0xce, - 0xcd, 0x46, 0xf9, 0x7f, 0xe0, 0x4b, 0xfe, 0x15, 0xea, 0x1f, - 0x67, 0x3e, 0x94, 0x1b, 0x71, 0xdc, 0x54, 0xb8, 0xa7, 0xba, - 0x25, 0xc6, 0x2f, 0x74, 0x79, 0x67, 0xfc, 0x29, 0xf8, 0x86, - 0x76, 0x6a, 0xf7, 0xab, 0x4c, 0x6f, 0x84, 0x72, 0x2e, 0x76, - 0x6b, 0x77, 0x5f, 0xf0, 0x21, 0x8f, 0xeb, 0x5e, 0xa6, 0xd0, - 0xfb, 0x53, 0x7c, 0x8a, 0x9f, 0x65, 0x7, 0xbc, 0x57, 0xdc, - 0x47, 0xb2, 0xa6, 0xf7, 0x8a, 0xfb, 0x91, 0xe4, 0x92, 0xfc, - 0x2b, 0xd5, 0x23, 0xff, 00, 0x55, 0xac, 0x31, 0xff, 00, - 0x79, 0x98, 0x7f, 0x4a, 0xad, 0x27, 0xc3, 0x4f, 0x11, 0xa1, - 0xfd, 0xce, 0xa9, 0x3, 0x7f, 0xbf, 0x23, 0x8f, 0xfd, 0x94, - 0xd7, 0xb1, 0x34, 0x1e, 0xa2, 0x9a, 0x60, 0x1e, 0x95, 0xe, - 0x85, 0x27, 0xf6, 0x17, 0xdc, 0x66, 0xf0, 0xd4, 0x1e, 0xf0, - 0x5f, 0x72, 0x3c, 0x61, 0xfc, 0xd, 0xe2, 0xa8, 0x7, 0xfc, - 0x7c, 0x5b, 0x49, 0xf4, 0x77, 0x3f, 0xfb, 0x2d, 0x44, 0xfa, - 0x7, 0x8a, 0xad, 0xcf, 0xfc, 0x7b, 0x43, 0x2f, 0x19, 0xe0, - 0x39, 0xaf, 0x69, 0x68, 0x3b, 0x62, 0x9b, 0xf6, 0x70, 0x3b, - 0x62, 0xb3, 0x78, 0x3c, 0x3c, 0xb7, 0xa6, 0xbe, 0xe3, 0x29, - 0x60, 0x30, 0xb2, 0xde, 0x9a, 0xfb, 0x8f, 0x12, 0x92, 0xd7, - 0xc5, 0x31, 0x71, 0xfd, 0x8c, 0x24, 0xf7, 0x58, 0xdb, 0xfc, - 0x6a, 0x22, 0x7c, 0x46, 0xbf, 0x7b, 0x42, 0x6f, 0xc2, 0x36, - 0xaf, 0x70, 0x68, 0x6, 0x3a, 0x53, 0x3c, 0x8f, 0xad, 0x63, - 0xfd, 0x9d, 0x85, 0x7f, 0xf2, 0xed, 0x18, 0x3c, 0xab, 0x4, - 0xff, 00, 0xe5, 0xd2, 0x3c, 0x3d, 0xae, 0xf5, 0xb8, 0xfe, - 0xf6, 0x85, 0x2f, 0xe1, 0x1b, 0x7f, 0x85, 0x30, 0xea, 0x9a, - 0x8a, 0xff, 00, 0xac, 0xd1, 0x2e, 0x14, 0xff, 00, 0xd7, - 0x36, 0xff, 00, 0xa, 0xf7, 0x26, 0xb6, 0xea, 0x79, 0xa8, - 0xda, 0xd5, 0x4f, 0x51, 0x9f, 0xad, 0x43, 0xcb, 0x30, 0xaf, - 0xec, 0x19, 0xbc, 0x9f, 0x4, 0xff, 00, 0xe5, 0xda, 0xfc, - 0x4f, 0x10, 0xfe, 0xdb, 0x75, 0x27, 0xcc, 0xd2, 0xee, 0x57, - 0x1e, 0x91, 0x9f, 0xeb, 0x48, 0x7c, 0x45, 0x6a, 0xbc, 0xc9, - 0x69, 0x74, 0xbf, 0xf6, 0xcc, 0x7f, 0x8d, 0x7b, 0x4c, 0x9a, - 0x55, 0xbc, 0x9f, 0x7a, 0xde, 0x26, 0xcf, 0xf7, 0x90, 0x1a, - 0xae, 0xfe, 0x1b, 0xd3, 0xa4, 0x1f, 0x3e, 0x9f, 0x6a, 0xdf, - 0x58, 0x54, 0xff, 00, 0x4a, 0xc9, 0xe5, 0x18, 0x57, 0xd2, - 0xdf, 0x33, 0x9, 0x64, 0x58, 0x27, 0xf6, 0x5f, 0xde, 0x78, - 0xfa, 0xf8, 0x8b, 0x4d, 0x63, 0xca, 0xca, 0xbf, 0xef, 0x2a, - 0xff, 00, 0x8d, 0x4a, 0xba, 0xce, 0x9a, 0xff, 00, 0xf2, - 0xd3, 0x6f, 0xd7, 0x1f, 0xe3, 0x5e, 0xa6, 0xfe, 0x10, 0xd1, - 0xcb, 0x73, 0xa5, 0xd9, 0x8f, 0xa4, 0xa, 0x3f, 0xa5, 0x55, - 0x97, 0xc0, 0x7a, 0x2c, 0x84, 0xff, 00, 0xc4, 0xba, 0x11, - 0x9f, 0xee, 0xa0, 0x15, 0x8b, 0xc9, 0xb0, 0xfd, 0x1b, 0x30, - 0x7c, 0x3f, 0x85, 0x7b, 0x36, 0xbe, 0x67, 0x9d, 0xb, 0xed, - 0x31, 0xcf, 0x17, 0x31, 0x8f, 0xa9, 0x14, 0xef, 0x3f, 0x4e, - 0x61, 0xc5, 0xd4, 0x3f, 0xf7, 0xd0, 0xae, 0xe2, 0x4f, 0x86, - 0x7a, 0x14, 0xa0, 0x86, 0xb2, 0xc6, 0x7f, 0xba, 0xe4, 0x55, - 0x76, 0xf8, 0x53, 0xa0, 0xb7, 0x48, 0x25, 0x5f, 0xa4, 0xc6, - 0xb2, 0x79, 0x25, 0x2e, 0x93, 0x66, 0xf, 0x87, 0x28, 0xbd, - 0xaa, 0x33, 0x8f, 0xff, 00, 0x41, 0x6e, 0x97, 0x30, 0xfe, - 0xc, 0x28, 0xf2, 0x6d, 0x5b, 0xa5, 0xc4, 0x47, 0xfe, 0x6, - 0x2b, 0xa9, 0x93, 0xe1, 0x2e, 0x89, 0xd8, 0x5c, 0xa7, 0xd2, - 0x5f, 0xfe, 0xb5, 0x42, 0xdf, 0x8, 0xb4, 0x9e, 0x4a, 0x4f, - 0x7a, 0x87, 0xda, 0x45, 0xff, 00, 0xe2, 0x6a, 0x1e, 0x47, - 0x1e, 0x95, 0x1f, 0xdc, 0x8c, 0xdf, 0xd, 0xd3, 0xe9, 0x55, - 0xfd, 0xc7, 0x39, 0xf6, 0x38, 0xf, 0x49, 0x50, 0xff, 00, - 0xc0, 0x85, 0x28, 0xd3, 0xa3, 0x3d, 0x18, 0x1f, 0xca, 0xb7, - 0x24, 0xf8, 0x4f, 0x6e, 0xa3, 0xf7, 0x57, 0xd7, 0x6b, 0xf5, - 0x71, 0xfd, 0x16, 0xa0, 0x93, 0xe1, 0x85, 0xc8, 0xe2, 0x2d, - 0x52, 0x71, 0xfe, 0xf4, 0x87, 0xfc, 0x2b, 0x27, 0x91, 0xcb, - 0xec, 0xd4, 0xfc, 0xc, 0xa5, 0xc3, 0x6f, 0xec, 0xd5, 0xfb, - 0xd1, 0x92, 0xda, 0x48, 0x3d, 0xb3, 0x51, 0x9d, 0x1f, 0xfd, - 0x9f, 0xd2, 0xb4, 0xdf, 0xe1, 0xc6, 0xb5, 0x1f, 0x31, 0x6a, - 0xec, 0x7d, 0x99, 0xda, 0xa2, 0x6f, 0x4, 0x78, 0x8e, 0x23, - 0xf2, 0xde, 0xa4, 0x9f, 0x53, 0xfe, 0x26, 0xb2, 0x79, 0x25, - 0x65, 0xb4, 0xd1, 0x84, 0xb8, 0x76, 0xba, 0xda, 0xa2, 0xfc, - 0x4c, 0xff, 00, 0xec, 0x7f, 0xf6, 0x4f, 0xe5, 0x4c, 0x6d, - 0x1c, 0x7f, 0x76, 0xaf, 0x1f, 0xd, 0xf8, 0xb2, 0x21, 0xf2, - 0x84, 0x7f, 0xf8, 0x12, 0x7f, 0x8d, 0x44, 0xda, 0x57, 0x8c, - 0x10, 0xf3, 0x62, 0x8d, 0xf4, 0x68, 0xff, 00, 0xf8, 0xaa, - 0xc9, 0xe4, 0xd8, 0x9e, 0x8d, 0x7d, 0xe6, 0xf, 0x20, 0xc6, - 0x2d, 0x9a, 0xfb, 0xff, 00, 0xe0, 0x15, 0xe, 0x91, 0xfe, - 0xcf, 0xe9, 0x4c, 0x6d, 0x23, 0x8f, 0xba, 0x7f, 0x2a, 0xb4, - 0xd6, 0xde, 0x2b, 0x4e, 0xba, 0x60, 0x6c, 0x7a, 0x28, 0x3f, - 0xc8, 0xd4, 0x65, 0xfc, 0x4c, 0xa7, 0xe6, 0xd1, 0xc9, 0xc7, - 0xfd, 0x31, 0x63, 0xfc, 0x8d, 0x47, 0xf6, 0x4e, 0x2d, 0x76, - 0xfb, 0xcc, 0xde, 0x45, 0x8d, 0x5d, 0xbe, 0xf2, 0xa9, 0xd1, - 0xc0, 0xfe, 0x3, 0xf9, 0x53, 0x3f, 0xb1, 0xff, 00, 0xd9, - 0xfd, 0x2a, 0xd7, 0xdb, 0xb5, 0xa5, 0x27, 0xcd, 0xd1, 0x65, - 0x1f, 0x4b, 0x77, 0x14, 0xdf, 0xed, 0xbb, 0x88, 0x94, 0x19, - 0x74, 0xb9, 0x97, 0x3f, 0xf4, 0xcc, 0x8a, 0xc9, 0xe5, 0x98, - 0xb5, 0xf6, 0x4c, 0xde, 0x4f, 0x8e, 0x5f, 0x66, 0xe5, 0x56, - 0xd1, 0x87, 0xf7, 0x7f, 0x4a, 0x8c, 0xe8, 0xcb, 0xfd, 0xdf, - 0xd2, 0xaf, 0x1f, 0x14, 0x5b, 0xa7, 0x12, 0xda, 0x4e, 0x9f, - 0x86, 0x28, 0x1e, 0x28, 0xd3, 0xdb, 0xaa, 0x48, 0xbf, 0x5a, - 0xcd, 0xe0, 0x71, 0x6b, 0xfe, 0x5d, 0xb3, 0x7, 0x96, 0x63, - 0x56, 0xf4, 0xd9, 0x9e, 0x74, 0x55, 0xcf, 0xdc, 0x1f, 0x95, - 0x46, 0xda, 0x22, 0xff, 00, 0x70, 0x7e, 0x55, 0xb2, 0xbe, - 0x21, 0xd2, 0xdb, 0xab, 0xb2, 0xfd, 0x54, 0x9f, 0xe9, 0x4f, - 0x1a, 0xd6, 0x92, 0xff, 00, 0xf2, 0xf3, 0xb7, 0xea, 0x8d, - 0xfe, 0x15, 0x8b, 0xc3, 0x62, 0x16, 0xf0, 0x66, 0xf, 0x9, - 0x8a, 0x8e, 0xf4, 0xdf, 0xdc, 0x73, 0xef, 0xa2, 0x29, 0xfe, - 0x11, 0xf9, 0x7f, 0xf5, 0xaa, 0x36, 0xd0, 0x93, 0x1f, 0x77, - 0xf4, 0xae, 0x94, 0x6a, 0x3a, 0x5b, 0xf4, 0xbb, 0x4f, 0xc4, - 0x11, 0xfd, 0x29, 0xc2, 0xe7, 0x4d, 0x6e, 0x97, 0x70, 0xfe, - 0x2e, 0x5, 0x43, 0xa5, 0x59, 0x6f, 0x7, 0xf7, 0x19, 0x3a, - 0x15, 0xd6, 0xf4, 0xdf, 0xdc, 0xce, 0x50, 0xf8, 0x7d, 0xf, - 0xf0, 0x7e, 0x94, 0xc7, 0xf0, 0xf2, 0x7f, 0x73, 0xf4, 0x15, - 0xd8, 0x66, 0xc5, 0xba, 0x5d, 0x40, 0x7e, 0x92, 0xad, 0x2f, - 0xd9, 0xed, 0x9f, 0xa4, 0xb1, 0x9f, 0xa3, 0x8a, 0xcd, 0xc6, - 0x6b, 0x78, 0xb3, 0x37, 0x9, 0xad, 0xe0, 0xfe, 0xe6, 0x71, - 0x4d, 0xe1, 0xc8, 0xcf, 0xf0, 0xff, 00, 0xe3, 0xa2, 0xa3, - 0x6f, 0xd, 0xc6, 0x3f, 0x80, 0x7f, 0xdf, 0x35, 0xdd, 0xae, - 0x9b, 0x1b, 0x74, 0x20, 0xfd, 0xd, 0x7, 0x48, 0x7, 0xf8, - 0x4d, 0x45, 0xed, 0xba, 0x33, 0xbd, 0xb7, 0x47, 0x9f, 0xb7, - 0x86, 0xe3, 0x3d, 0x10, 0xf, 0xc2, 0xa2, 0x6f, 0xc, 0x46, - 0x7f, 0x84, 0x7e, 0x5f, 0xfd, 0x6a, 0xf4, 0x13, 0xa4, 0x8f, - 0xee, 0x9a, 0x6b, 0x69, 0x23, 0xfb, 0xb4, 0xaf, 0x1e, 0xc2, - 0xe6, 0x8f, 0x63, 0xce, 0xdb, 0xc2, 0xb1, 0x9f, 0xe1, 0xff, - 00, 0x3f, 0x95, 0x42, 0xfe, 0x13, 0x8f, 0xfb, 0xbf, 0xa0, - 0xff, 00, 0xa, 0xf4, 0x83, 0xa4, 0xff, 00, 0xb2, 0x6a, - 0x33, 0xa4, 0xff, 00, 0xb2, 0x68, 0xbc, 0x42, 0xf1, 0x3c, - 0xd9, 0xbc, 0x24, 0x9f, 0xdc, 0x3f, 0x90, 0xff, 00, 0xa, - 0x8d, 0xbc, 0x24, 0x9f, 0xdc, 0xff, 00, 0xc7, 0x6b, 0xd2, - 0xce, 0x91, 0xfe, 0xc9, 0xa8, 0xce, 0x91, 0xd7, 0xe4, 0x34, - 0x7b, 0xa1, 0x68, 0x1e, 0x66, 0xde, 0x12, 0x4f, 0xee, 0x7e, - 0x3b, 0x6a, 0x17, 0xf0, 0x8a, 0x9e, 0x88, 0x3f, 0x2f, 0xfe, - 0xb5, 0x7a, 0x87, 0xf6, 0x47, 0xfb, 0x26, 0x98, 0x74, 0x8c, - 0x7f, 0x9, 0xa2, 0xd1, 0xb, 0x40, 0xf2, 0xc6, 0xf0, 0x70, - 0xfe, 0xe8, 0xfc, 0xbf, 0xfa, 0xd5, 0xb, 0xf8, 0x38, 0x7a, - 0x7e, 0x9f, 0xfd, 0x6a, 0xf5, 0x63, 0xa4, 0x75, 0xf9, 0xd, - 0x33, 0xfb, 0x1c, 0x7f, 0x76, 0x8e, 0x48, 0x93, 0xc9, 0x6, - 0x79, 0x33, 0xf8, 0x40, 0x7f, 0x70, 0x9f, 0xf8, 0xf, 0xff, - 00, 0x5a, 0xa1, 0x6f, 0x8, 0x2f, 0xfc, 0xf3, 0x3f, 0xf7, - 0xc8, 0xaf, 0x5b, 0x6d, 0x18, 0x63, 0xee, 0x7f, 0x2a, 0x8c, - 0xe8, 0x83, 0xba, 0x7f, 0x2a, 0x9e, 0x48, 0x87, 0xb2, 0x81, - 0xe4, 0x6d, 0xe1, 0x1, 0xff, 00, 0x3c, 0xbf, 0x34, 0xa8, - 0x5b, 0xc1, 0xc0, 0xff, 00, 0xcb, 0x1f, 0xfc, 0x77, 0xff, - 00, 0xad, 0x5e, 0xc0, 0xda, 0x22, 0xe3, 0xee, 0x1a, 0x88, - 0xe8, 0x69, 0xff, 00, 0x3c, 0xe8, 0xf6, 0x71, 0x17, 0xb2, - 0x81, 0xe3, 0xd2, 0x78, 0x30, 0x1f, 0xf9, 0x66, 0x3f, 0xef, - 0x9f, 0xfe, 0xb5, 0x42, 0xfe, 0xc, 0x1f, 0xf3, 0xcc, 0x7e, - 0x5f, 0xfd, 0x6a, 0xf6, 0x46, 0xd0, 0x97, 0xfb, 0x94, 0xc6, - 0xd0, 0x13, 0x1f, 0xea, 0xff, 00, 0x95, 0x2f, 0x63, 0x2, - 0x7d, 0x84, 0x4f, 0x18, 0x6f, 0x6, 0xa8, 0xff, 00, 0x96, - 0x67, 0xf2, 0xff, 00, 0xeb, 0x54, 0xf, 0xe0, 0xe5, 0xff, - 00, 0x9e, 0x47, 0xfe, 0xf9, 0xaf, 0x69, 0x6f, 0xf, 0x46, - 0x3f, 0xe5, 0x97, 0xe8, 0x2a, 0x33, 0xe1, 0xd8, 0xcf, 0xfc, - 0xb3, 0xc7, 0xe0, 0x2a, 0x7d, 0x82, 0x17, 0xd5, 0xe2, 0x78, - 0xa3, 0x78, 0x35, 0x48, 0xff, 00, 0x56, 0xdf, 0xf7, 0xc8, - 0xa8, 0x9f, 0xc1, 0x4b, 0xfd, 0xc6, 0xff, 00, 0xbe, 0x7f, - 0xfa, 0xd5, 0xed, 0x6d, 0xe1, 0xa8, 0xcf, 0xfc, 0xb3, 0x1f, - 0x95, 0x44, 0xde, 0x19, 0x8f, 0xb4, 0x7f, 0x95, 0x2f, 0x60, - 0x89, 0xfa, 0xb2, 0x3c, 0x49, 0xbc, 0x14, 0x7, 0xf0, 0x1f, - 0xfb, 0xe7, 0xff, 00, 0xad, 0x50, 0xbf, 0x82, 0xff, 00, - 0xd8, 0xfd, 0x3f, 0xfa, 0xd5, 0xed, 0xe7, 0xc3, 0xa, 0x7f, - 0xe5, 0x99, 0xfc, 0xea, 0x36, 0xf0, 0xb2, 0x7f, 0xcf, 0x22, - 0x6a, 0x7e, 0xae, 0x89, 0xfa, 0xac, 0x4f, 0xe, 0x7f, 0x6, - 0xf, 0xee, 0xfe, 0x9f, 0xfd, 0x6a, 0x82, 0x4f, 0x7, 0xf, - 0xee, 0x9f, 0xc8, 0x7f, 0x85, 0x7b, 0x9b, 0x78, 0x56, 0x3f, - 0xf9, 0xe6, 0x7f, 0x4a, 0x85, 0xbc, 0x26, 0x87, 0xfe, 0x59, - 0x1f, 0xc8, 0x52, 0xfa, 0xba, 0x27, 0xea, 0xa8, 0xf0, 0xc6, - 0xf0, 0x69, 0xfe, 0xe1, 0xfc, 0xbf, 0xfa, 0xd5, 0x13, 0x78, - 0x35, 0x87, 0xfc, 0xb3, 0x3f, 0xf7, 0xcf, 0xff, 00, 0x5a, - 0xbd, 0xc9, 0xbc, 0x24, 0xbf, 0xf3, 0xcc, 0xfe, 0x55, 0xb, - 0xf8, 0x45, 0x7f, 0xe7, 0x9f, 0xe9, 0x53, 0xf5, 0x72, 0x3e, - 0xa8, 0x78, 0x73, 0xf8, 0x39, 0xbf, 0xb8, 0x7f, 0xef, 0x9f, - 0xfe, 0xb5, 0x54, 0xb8, 0xf0, 0x9b, 0xaa, 0x9f, 0x95, 0x87, - 0xe1, 0xff, 00, 0xd6, 0xaf, 0x77, 0x6f, 0x8, 0x81, 0xff, - 00, 0x2c, 0xea, 0xa5, 0xc7, 0x84, 0xb2, 0x8, 0xf2, 0x89, - 0xfc, 0x6a, 0x7e, 0xae, 0x2f, 0xaa, 0x9e, 0x9, 0x37, 0x87, - 0x24, 0x8f, 0x9d, 0xad, 0xf9, 0x7f, 0xf5, 0xaa, 0x84, 0xda, - 0x4c, 0x91, 0xf5, 0x4f, 0xd2, 0xbd, 0xca, 0xef, 0xc1, 0xf8, - 0x7, 0xf7, 0x44, 0xa, 0xc2, 0xbe, 0xf0, 0x89, 0x19, 0xcc, - 0x67, 0xda, 0xb0, 0x95, 0x16, 0x8e, 0x59, 0xd0, 0x94, 0x4f, - 0x1f, 0x92, 0xc4, 0x8e, 0x30, 0x45, 0x40, 0xd6, 0x15, 0xe8, - 0xd7, 0xfe, 0x16, 0x61, 0x9c, 0x46, 0xd9, 0xac, 0x3b, 0x9d, - 0x15, 0xa1, 0xfe, 0x6, 0xc5, 0x72, 0x3a, 0x92, 0x83, 0xb3, - 0x38, 0xa5, 0x56, 0x54, 0xdd, 0x99, 0xc8, 0x35, 0x87, 0xb5, - 0x34, 0xd9, 0x7b, 0x57, 0x4c, 0xda, 0x7f, 0x1d, 0xd, 0x46, - 0xda, 0x7f, 0xa0, 0xa6, 0xb1, 0x3, 0x58, 0xa3, 0x99, 0x7b, - 0x2c, 0x9e, 0x5, 0x47, 0x1e, 0x98, 0xf2, 0xc8, 0xa9, 0x1a, - 0x33, 0xc8, 0xc7, 0x1, 0x54, 0x64, 0x93, 0x5d, 0xe6, 0x87, - 0xe0, 0x8d, 0x43, 0xc4, 0x57, 0xb, 0x15, 0x9d, 0xac, 0x92, - 0x2e, 0x40, 0x69, 0x71, 0xf2, 0xa8, 0xf5, 0x24, 0xf1, 0x5e, - 0xed, 0xf0, 0xd7, 0xe0, 0xd, 0xb5, 0xb5, 0xc4, 0x57, 0x2f, - 0x6c, 0xd7, 0xb7, 0x63, 0xef, 0x4b, 0x2e, 0xc, 0x49, 0xf4, - 0x4, 0x75, 0xfc, 0xeb, 0xdf, 0xcb, 0xf0, 0x78, 0x8c, 0x6b, - 0xbc, 0x15, 0xa3, 0xdc, 0xfa, 0x7c, 0xb3, 0x2f, 0xc5, 0x66, - 0x2d, 0x38, 0x2b, 0x47, 0xbb, 0xfd, 0x3b, 0x9e, 0x5f, 0xf0, - 0xc3, 0xe0, 0x1d, 0xcf, 0x88, 0x24, 0x86, 0xf3, 0x57, 0x86, - 0x54, 0x8c, 0x30, 0x64, 0xb4, 0x9, 0xf3, 0xbe, 0x3f, 0xbc, - 0xa, 0xe3, 0x15, 0xf6, 0x47, 0x82, 0x3c, 0x1, 0x67, 0xe1, - 0xdb, 0x58, 0x8b, 0x41, 0x18, 0x70, 0x3e, 0x58, 0x95, 00, - 0x48, 0xfe, 0x83, 0x15, 0xa9, 0xe1, 0xef, 0xa, 0xda, 0x68, - 0x91, 0xa9, 0x44, 0xdf, 0x3e, 0x39, 0x91, 0xb0, 0x71, 0xf4, - 0xe3, 0x81, 0x5d, 0x4, 0x69, 0x9e, 0x6b, 0xf4, 0x5c, 0x2e, - 0x12, 0x9e, 0x16, 0x3c, 0xb0, 0x5a, 0xf7, 0x3f, 0x58, 0xc1, - 0x60, 0x69, 0x60, 0xa1, 0xcb, 0xd, 0x5f, 0x57, 0xd5, 0x92, - 0xc4, 0x9e, 0xd5, 0x7a, 0x24, 0x35, 0x4, 0x51, 0xd5, 0xf8, - 0x53, 0xda, 0xbb, 0x4f, 0x40, 0x9e, 0x14, 0xe2, 0xae, 0xc2, - 0xbd, 0x38, 0xa8, 0x61, 0x4c, 0x1, 0xc5, 0x5e, 0x86, 0x3e, - 0x9c, 0x50, 0x5, 0x88, 0x17, 0xda, 0xaf, 0x42, 0xbc, 0x55, - 0x78, 0x53, 0xda, 0xaf, 0x44, 0xa2, 0x80, 0x2c, 0xc0, 0xbc, - 0x8a, 0xbd, 0x1a, 0x73, 0x55, 0xa1, 0x51, 0x9e, 0x95, 0x7a, - 0x25, 0xa0, 0x9, 0xa2, 0x15, 0x65, 0x14, 0x11, 0x50, 0xa2, - 0xd5, 0x94, 0x1d, 0x28, 0x2, 0x54, 0x1d, 0x2a, 0x75, 0xed, - 0x51, 0xa2, 0xd4, 0x8b, 0xfc, 0xa8, 0x2, 0x45, 0xa7, 0x1, - 0x4d, 0x5e, 0x31, 0x52, 0x1, 0x9a, 00, 0x55, 0xa5, 0xa0, - 0xc, 0x51, 0x40, 00, 0xe4, 0xd3, 0xe9, 0xab, 0xd6, 0x9d, - 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, - 0x14, 0x51, 0x40, 0x11, 0x6d, 0xa4, 0xa7, 0xd2, 0x6d, 0xa0, - 0x6, 0x6d, 0xa6, 0x32, 0xf3, 0x52, 0x9e, 0xd, 0x37, 0x6f, - 0x34, 0x1, 0x11, 0x5a, 0x61, 0x5a, 0x9d, 0x87, 0xbd, 0x37, - 0x14, 0x1, 0x5c, 0xa0, 0x34, 0xd6, 0x8c, 0x55, 0x82, 0xb8, - 0x34, 0xc2, 0xb4, 0x1, 0x59, 0xa3, 00, 0x9a, 0x61, 0x8c, - 0x1a, 0xb6, 0x50, 0x62, 0x9b, 0xb0, 0x50, 0x5, 0x33, 0x10, - 0x1d, 0xa9, 0x8d, 0x17, 0xb5, 0x5c, 0x31, 0x83, 0x4c, 0x64, - 0x19, 0xe9, 0x40, 0x15, 0x3c, 0x9f, 0x63, 0x4c, 0x30, 0x8c, - 0xf2, 0xb5, 0x77, 0xcb, 0xf6, 0xa6, 0xb4, 0x54, 0x1, 0x49, - 0xa2, 0x7, 0xb5, 0x33, 0xc9, 0xab, 0xde, 0x5d, 0x27, 0x97, - 0x40, 0x14, 0x5a, 0x1, 0xe9, 0x4d, 0xf2, 0x7, 0xa5, 0x5f, - 0x31, 0x53, 0x4c, 0x42, 0x80, 0x28, 0x79, 0x34, 0x86, 0xdc, - 0x7a, 0x55, 0xff, 00, 0x26, 0x90, 0xc2, 0x31, 0x40, 0x19, - 0xe6, 0x1, 0xe9, 0x4c, 0x30, 0xf3, 0x5a, 0x6, 0x1a, 0x4f, - 0x27, 0xda, 0x80, 0x33, 0xcd, 0xbf, 0xb5, 0x31, 0xa0, 0x19, - 0xe9, 0x5a, 0x46, 0xc, 0xf6, 0xa6, 0x18, 0x28, 0x3, 0x3b, - 0xc8, 0xf6, 0xa4, 0xf2, 0x33, 0xd8, 0xd6, 0x8f, 0x93, 0xed, - 0x48, 0x60, 0xf6, 0xa0, 0xc, 0xc6, 0xb7, 0x19, 0xa4, 0x30, - 0x7b, 0x56, 0x8f, 0x91, 0x49, 0xe4, 0xe2, 0x80, 0x33, 0x7e, - 0xcf, 0xed, 0x48, 0xd6, 0xe0, 0x76, 0xad, 0x13, 0xf, 0xb5, - 0x23, 0x43, 0x40, 0x19, 0xbe, 0x47, 0xb6, 0x29, 0x3e, 0xcf, - 0x5a, 0x1e, 0x4d, 0x1e, 0x4d, 00, 0x66, 0x9b, 0x51, 0xe9, - 0x48, 0x6d, 0x87, 0xa5, 0x69, 0x79, 0x14, 0x9e, 0x48, 0xa0, - 0xc, 0xd3, 0x6f, 0xed, 0x4c, 0x36, 0xc3, 0x15, 0xa9, 0xe4, - 0x67, 0xb5, 0x30, 0xc0, 0x3d, 0x28, 0x3, 0x33, 0xec, 0xe3, - 0x3d, 0x29, 0x1a, 0xdf, 0xda, 0xb4, 0xcc, 0x22, 0x98, 0x60, - 0xa0, 0xc, 0xc3, 0x6b, 0x93, 0xd2, 0x9a, 0x6d, 0xc0, 0xed, - 0x9a, 0xd3, 0xf2, 0x33, 0xda, 0x90, 0xc1, 0x40, 0x19, 0x46, - 0xdb, 0x3d, 0xa8, 0xfb, 0x2f, 0xb5, 0x69, 0x79, 0x34, 0x9e, - 0x41, 0xf4, 0xa0, 0xc, 0xa6, 0xb6, 0x1e, 0x94, 0xdf, 0xb3, - 0x7b, 0x56, 0xa3, 0x5b, 0xf3, 0x49, 0xe4, 0xfb, 0x50, 0x6, - 0x53, 0x5b, 0x71, 0xd2, 0x99, 0xf6, 0x60, 0x3b, 0x56, 0xa9, - 0xb7, 0x27, 0xb5, 0x27, 0xd9, 0xf1, 0x40, 0x19, 0x5f, 0x67, - 0x1e, 0x86, 0x93, 0xec, 0xb9, 0xec, 0x6b, 0x54, 0xc3, 0x4d, - 0x30, 0x7b, 0x50, 0x6, 0x51, 0xb4, 0x3, 0xb7, 0xeb, 0x4d, - 0x36, 0xc3, 0xd2, 0xb5, 0x3e, 0xcf, 0xed, 0x48, 0x60, 0x1e, - 0x94, 0x1, 0x97, 0xf6, 0x6a, 0x43, 0x6b, 0x8a, 0xd4, 0xf2, - 0x3d, 0xa9, 0xd, 0xb8, 0xc7, 0x4a, 00, 0xc9, 0x36, 0xfc, - 0xf4, 0xa6, 0xfd, 0x9f, 0xda, 0xb5, 0xd, 0xb8, 0xa3, 0xec, - 0xfe, 0xd4, 0x1, 0x90, 0xd6, 0xde, 0xd4, 0xdf, 0xb3, 0xfb, - 0x66, 0xb5, 0x4d, 0xb0, 0x26, 0x93, 0xec, 0xe0, 0x76, 0xa0, - 0xc, 0x96, 0xb6, 0xf6, 0x34, 0xd3, 0x6c, 0x2b, 0x55, 0xad, - 0xf2, 0x69, 0xbf, 0x66, 0xf5, 0xa0, 0xc, 0x96, 0xb6, 0x50, - 0x3a, 0x53, 0x7e, 0xce, 0xd, 0x6a, 0xb5, 0xbf, 0x34, 0xd3, - 0x6f, 0xed, 0x40, 0x19, 0x66, 0xd8, 0x7a, 0x53, 0x5a, 0xdc, - 0xe, 0xd5, 0xa8, 0xd6, 0xe7, 0xd2, 0x98, 0x6d, 0xb3, 0xda, - 0x80, 0x32, 0xcd, 0xb0, 0x27, 0x3b, 0x73, 0x4c, 0x36, 0x28, - 0x7a, 0xa0, 0x3f, 0x51, 0x5a, 0xa6, 00, 0x38, 0xc5, 0x1f, - 0x67, 0xff, 00, 0x38, 0xa0, 0xc, 0x86, 0xd3, 0xa1, 0xef, - 0x12, 0xff, 00, 0xdf, 0x22, 0xab, 0x49, 0xa2, 0x5a, 0x4a, - 0x30, 0xf6, 0xe8, 0xd5, 0xbe, 0x6d, 0xf0, 0x2a, 0x3f, 0x22, - 0x80, 0x39, 0x99, 0x7c, 0x25, 0xa6, 0x4c, 0x7e, 0x7b, 0x35, - 0x3f, 0xf0, 0x26, 0x1f, 0xd6, 0xaa, 0xcb, 0xe0, 0xd, 0x12, - 0x5f, 0xbd, 0x62, 0xf, 0xfd, 0xb4, 0x71, 0xfd, 0x6b, 0xaf, - 0xf2, 0x28, 0x36, 0xa2, 0x80, 0x38, 0xb3, 0xf0, 0xe7, 0x41, - 0xff, 00, 0x9f, 0x1, 0xff, 00, 0x7f, 0x5f, 0xff, 00, - 0x8a, 0xa6, 0xff, 00, 0xc2, 0xbb, 0xd0, 0x41, 0xff, 00, - 0x8f, 0x1, 0xff, 00, 0x7f, 0x64, 0xff, 00, 0xe2, 0xab, - 0xb3, 0x30, 0x1, 0xd2, 0x98, 0x6d, 0xf3, 0xd3, 0x8a, 00, - 0xe3, 0xcf, 0xc3, 0xcd, 0xb, 0x1c, 0x58, 0xe3, 0xe9, 0x2b, - 0xff, 00, 0xf1, 0x55, 0x1b, 0x7c, 0x3c, 0xd1, 0x7b, 0x5b, - 0x3a, 0xfd, 0x26, 0x6f, 0xf1, 0xae, 0xd3, 0xec, 0xc7, 0xeb, - 0x4c, 0x30, 0x73, 0xd2, 0x81, 0x34, 0x9e, 0xe7, 0x15, 0xff, - 00, 0xa, 0xeb, 0x49, 0xec, 0x93, 0x8f, 0xa4, 0xad, 0x4c, - 0x3f, 0xf, 0x6c, 0x13, 0x98, 0xe5, 0xb8, 0x4f, 0xac, 0x99, - 0xae, 0xd8, 0xdb, 0xfb, 0x52, 0x1b, 0x7f, 0x5a, 0x87, 0x8, - 0xbd, 0xd1, 0x2e, 0x9c, 0x1e, 0xe9, 0x33, 0x88, 0x3e, 0x6, - 0xa, 0x3f, 0x77, 0x7f, 0x2a, 0x7d, 0x50, 0x35, 0x46, 0x7c, - 0x1d, 0x7c, 0xa3, 0x11, 0xeb, 0x2c, 0xbf, 0x5b, 0x65, 0x3f, - 0xd6, 0xbb, 0x8f, 0x22, 0x9a, 0x61, 0xf6, 0xac, 0x9e, 0x1e, - 0x8b, 0xde, 0xb, 0xee, 0x30, 0x96, 0x17, 0xf, 0x2f, 0x8a, - 0x9a, 0x7f, 0x24, 0x70, 0x4f, 0xe1, 0x1d, 0x61, 0x49, 0xdb, - 0xac, 0x86, 0xfa, 0xdb, 0x28, 0xfe, 0xb5, 0x56, 0x5f, 0xc, - 0x78, 0x81, 0x4f, 0xcb, 0xa8, 0xab, 0x7d, 0x62, 0x41, 0x5e, - 0x88, 0x60, 0xf6, 0xa4, 0xf2, 00, 0xed, 0x51, 0xf5, 0x4c, - 0x3f, 0xfc, 0xfb, 0x5f, 0x71, 0x1f, 0x51, 0xc2, 0xff, 00, - 0xcf, 0xa8, 0xfd, 0xc8, 0xf3, 0x29, 0x7c, 0x3d, 0xe2, 0x85, - 0xfb, 0xb3, 0xc6, 0xdf, 0x5d, 0x83, 0xfa, 0x54, 0x47, 0x46, - 0xf1, 0x52, 0x7f, 0xc, 0x4d, 0xf8, 0xad, 0x7a, 0x8f, 0x92, - 0x3d, 0x29, 0x86, 0xe, 0x7d, 0xa8, 0xfa, 0xa6, 0x1f, 0xfe, - 0x7d, 0xaf, 0xb8, 0x4f, 0x3, 0x85, 0x7f, 0xf2, 0xea, 0x3f, - 0x72, 0x3c, 0xb8, 0xe9, 0xfe, 0x28, 0x53, 0xff, 00, 0x1e, - 0xa8, 0xdf, 0x8a, 0xff, 00, 0x8d, 0x21, 0xb7, 0xf1, 0x22, - 0x2, 0x5f, 0x4e, 0x52, 0x3d, 0x41, 0x1f, 0xe3, 0x5e, 0xa2, - 0x6d, 0xe9, 0x3c, 0x9a, 0x87, 0x81, 0xc3, 0x3f, 0xf9, 0x76, - 0x8c, 0xde, 0x5b, 0x83, 0x7f, 0xf2, 0xe9, 0x1e, 0x58, 0xd3, - 0xeb, 0x10, 0x9c, 0x49, 0xa6, 0x8c, 0xff, 00, 0xbc, 0x5, - 0x42, 0xda, 0xe5, 0xc4, 0x5f, 0xeb, 0x34, 0xde, 0x9c, 0x1f, - 0xde, 0xe3, 0xfa, 0x57, 0xac, 0x18, 0x29, 0xad, 0x7, 0xb5, - 0x64, 0xf2, 0xdc, 0x2b, 0xfb, 0x6, 0x32, 0xca, 0x30, 0x52, - 0xff, 00, 0x97, 0x67, 0x92, 0x8f, 0x15, 0x45, 0xd1, 0xec, - 0xa, 0xff, 00, 0xdb, 0x52, 0x7f, 0xa5, 0x4c, 0xbe, 0x25, - 0xb1, 0x3f, 0x7a, 0x16, 0x5f, 0xc4, 0x9a, 0xf5, 0x6, 0xb7, - 0x56, 0x18, 0x2a, 0x18, 0x7a, 0x11, 0x50, 0x3e, 0x93, 0x6d, - 0x27, 0xde, 0xb7, 0x8c, 0xfd, 0x56, 0xb1, 0x79, 0x4e, 0x15, - 0xf4, 0xfc, 0x4c, 0x25, 0x91, 0xe0, 0xa5, 0xf6, 0x5a, 0xf9, - 0x9e, 0x74, 0xbe, 0x20, 0xd2, 0x9b, 0xef, 0x19, 0x13, 0xe8, - 0xa4, 0xd3, 0xbf, 0xb6, 0x74, 0x86, 0xff, 00, 0x96, 0x8c, - 0x3f, 0xe0, 0x2d, 0x5d, 0xdb, 0xf8, 0x6f, 0x4f, 0x7c, 0xee, - 0xb2, 0x85, 0x81, 0xf5, 0x4a, 0x80, 0xf8, 0x4f, 0x49, 0x3d, - 0x74, 0xeb, 0x7f, 0xc1, 0x31, 0x59, 0x3c, 0x9b, 0xd, 0xd1, - 0xb3, 0x7, 0xc3, 0xf8, 0x47, 0xd5, 0xfd, 0xe7, 0x17, 0xfd, - 0xa9, 0xa4, 0x1f, 0xf9, 0x6f, 0xfa, 0x35, 0x3b, 0xfb, 0x43, - 0x48, 0x6f, 0xf9, 0x79, 0x51, 0xf5, 0xdd, 0x5d, 0x6b, 0xf8, - 0x33, 0x47, 0x6e, 0xba, 0x7c, 0x5f, 0x86, 0x47, 0xf5, 0xa8, - 0x9b, 0xc0, 0xba, 0x33, 0x75, 0xb1, 0x3, 0xe9, 0x23, 0x8f, - 0xeb, 0x50, 0xf2, 0x4a, 0x1d, 0x24, 0xff, 00, 0x3, 0x37, - 0xc3, 0xb8, 0x67, 0xb4, 0xa5, 0xf8, 0x7f, 0x91, 0xcd, 0x2c, - 0x9a, 0x74, 0xa7, 0xb, 0x32, 0x93, 0xf8, 0xd4, 0x89, 0x69, - 0x6a, 0xfd, 0x18, 0x1f, 0xce, 0xb6, 0x24, 0xf8, 0x7f, 0xa4, - 0xb7, 0xdd, 0x80, 0xa7, 0xd1, 0xd8, 0xff, 00, 0x5a, 0xad, - 0x27, 0xc3, 0x9b, 0x6, 0xfb, 0xac, 0xe9, 0xf9, 0x9f, 0xeb, - 0x59, 0x3c, 0x8e, 0x9f, 0xd9, 0x9b, 0x31, 0x97, 0xe, 0x53, - 0xfb, 0x35, 0x1f, 0xdc, 0x55, 0x3a, 0x4c, 0x6c, 0x32, 0x17, - 0x23, 0xeb, 0x4d, 0x3a, 0x3a, 0x7f, 0x77, 0xf5, 0xa9, 0x5f, - 0xe1, 0xad, 0xb8, 0x39, 0x4b, 0xb9, 0x13, 0xd8, 0x28, 0x3f, - 0xd6, 0x9b, 0xff, 00, 0xa, 0xf1, 0x90, 0xd, 0x9a, 0x94, - 0xab, 0xff, 00, 0x1, 0xff, 00, 0xeb, 0xd6, 0x2f, 0x23, - 0x7d, 0x2a, 0x7e, 0x6, 0xf, 0x86, 0xdf, 0xd9, 0xab, 0xf8, - 0x7f, 0xc1, 0x21, 0xfe, 0xc6, 0x43, 0xfc, 0x3f, 0xad, 0x31, - 0xb4, 0x55, 0xfe, 0xef, 0xeb, 0x56, 0x8f, 0x82, 0x2f, 0x14, - 0xfc, 0x9a, 0xbc, 0x80, 0x7f, 0xbb, 0xff, 00, 0xd7, 0xa0, - 0xf8, 0x43, 0x55, 0x4f, 0xbb, 0xac, 0xb9, 0xf6, 0x2a, 0x7f, - 0xc6, 0xb2, 0x79, 0x25, 0x6e, 0x93, 0x5f, 0x89, 0x83, 0xe1, - 0xda, 0xeb, 0x6a, 0x88, 0xa2, 0xda, 0x2a, 0xff, 00, 0x77, - 0xf5, 0xa6, 0x9d, 0x15, 0x7f, 0xb9, 0xfa, 0xd5, 0xb9, 0x3c, - 0x39, 0xaf, 0x46, 0x4e, 0xcd, 0x40, 0xb8, 0x1d, 0xe, 0xd1, - 0xfd, 0x4d, 0x40, 0xda, 0x3f, 0x89, 0x94, 0xfc, 0xb2, 0xee, - 0xfc, 0x23, 0xfe, 0xb5, 0x2f, 0x25, 0xc4, 0x2f, 0xb4, 0x8c, - 0xdf, 0xf, 0xe2, 0x96, 0xd2, 0x5f, 0x89, 0x1, 0xd1, 0x57, - 0xfb, 0x9f, 0xad, 0x31, 0xb4, 0x55, 0xc7, 0xdc, 0xfd, 0x6a, - 0x63, 0x67, 0xe2, 0x98, 0xcf, 0xcd, 0x8, 0x7f, 0xc6, 0x2a, - 0x43, 0x2e, 0xbf, 0x11, 0x3b, 0xec, 0x4b, 0x7f, 0xdf, 0x3f, - 0xd2, 0xb2, 0x79, 0x46, 0x29, 0x6d, 0x63, 0x27, 0x91, 0x63, - 0x16, 0xd6, 0x7f, 0x32, 0xf, 0xec, 0x55, 0xfe, 0xe7, 0xeb, - 0x50, 0xcb, 0xa2, 0x23, 0xf, 0xb9, 0xfa, 0xd5, 0xc3, 0xaa, - 0x6a, 0xb1, 0xf, 0x9f, 0x4a, 0x76, 0x1f, 0x43, 0xfd, 0x5, - 0x30, 0xeb, 0xf7, 0x9d, 0x1b, 0x48, 0x94, 0x7e, 0xd, 0xfe, - 0x15, 0x9b, 0xca, 0xf1, 0x6b, 0xec, 0xfe, 0x26, 0x2f, 0x26, - 0xc7, 0x2d, 0xa2, 0xbe, 0xf3, 0x26, 0x5f, 0xf, 0x44, 0x41, - 0xcc, 0x79, 0xfa, 0x93, 0x59, 0xb7, 0x5e, 0x15, 0x81, 0xf3, - 0xfb, 0xaf, 0xd4, 0xd7, 0x46, 0xda, 0xd5, 0xd3, 0xf0, 0x34, - 0xa9, 0x9, 0xfa, 0x37, 0xf8, 0x53, 0x3c, 0xdd, 0x52, 0xf1, - 0xb1, 0x16, 0x99, 0x22, 0x7d, 0x54, 0x8f, 0xe7, 0x42, 0xca, - 0xb1, 0x52, 0xd1, 0xc7, 0xf1, 0x1a, 0xc9, 0x71, 0xb3, 0xd1, - 0xc3, 0xf1, 0x47, 0x9e, 0x6a, 0x9e, 0x10, 0x8d, 0x57, 0xfd, - 0x58, 0xf6, 0xf9, 0xba, 0xfe, 0xb5, 0xc6, 0xea, 0xbe, 0x13, - 0x56, 0x62, 0x16, 0x3c, 0x92, 0x78, 0xe7, 0xff, 00, 0xaf, - 0x5e, 0xee, 0xbe, 0x13, 0xd6, 0xef, 0x48, 0xf3, 0x61, 0x11, - 0x46, 0x79, 0xc9, 0x28, 0x71, 0xfa, 0xe6, 0xb4, 0xad, 0xbe, - 0x19, 0x28, 0x6c, 0xcb, 0x77, 0x9e, 0xe4, 0x2a, 0x63, 0xfa, - 0xd4, 0xbe, 0x1c, 0xa9, 0x55, 0xfe, 0xf2, 0x69, 0x21, 0x3e, - 0x13, 0xab, 0x5d, 0xfe, 0xf2, 0xa2, 0x8a, 0xf2, 0x57, 0x67, - 0xcc, 0x71, 0x7c, 0x2e, 0xd4, 0x6e, 0xa4, 0x4, 0x42, 0xb0, - 0xc6, 0x7f, 0x89, 0x9c, 0x1f, 0xd3, 0x35, 0xe8, 0x7e, 0x14, - 0xf8, 0x9, 0x67, 0x7b, 0x16, 0xe9, 0x20, 0xfb, 0x71, 0x4, - 0x6e, 0x91, 0xdc, 0xc6, 0x7, 0xd0, 0x6, 0xaf, 0x79, 0xb0, - 0xf0, 0x6e, 0x99, 0x62, 0x14, 0x8b, 0x65, 0x79, 0x17, 0xf8, - 0xdc, 0x93, 0xfa, 0x13, 0x5b, 0x91, 0x40, 0x10, 00, 0xa3, - 00, 0x74, 0x2, 0xbd, 0x9c, 0x27, 0xf, 0xe0, 0xb0, 0x8f, - 0x99, 0xae, 0x67, 0xe7, 0xaf, 0xe1, 0xb1, 0xef, 0xe0, 0x38, - 0x5f, 0x2f, 0xc1, 0x3e, 0x67, 0x1e, 0x77, 0xfd, 0xed, 0x7f, - 0xd, 0x8e, 0x33, 0xc3, 0xff, 00, 0xb, 0xf4, 0x9d, 0x1e, - 0xce, 0x38, 0x4c, 0x26, 0x5d, 0xa3, 00, 0x2, 0x54, 0x7f, - 0x3c, 0x9f, 0xce, 0xbb, 0xb, 0x6b, 0x28, 0xed, 0xa2, 0x58, - 0xe3, 0x8c, 0x22, 0x2f, 00, 0xa, 0xb2, 0x90, 0xfb, 0x54, - 0xe9, 0xf, 0x3d, 0x2b, 0xe8, 0xd4, 0x54, 0x52, 0x4b, 0x63, - 0xeb, 0x23, 0x15, 0x4, 0xa3, 0x15, 0x64, 0x86, 0x45, 0x17, - 0xb5, 0x58, 0x8a, 0x3a, 0x91, 0x22, 0xab, 0x11, 0x43, 0xed, - 0x54, 0x50, 0x45, 0x15, 0x5f, 0x86, 0x3e, 0x3a, 0x53, 0x22, - 0x87, 0xa5, 0x5d, 0x86, 0x2e, 0x94, 0x1, 0x24, 0x31, 0x55, - 0xe8, 0x63, 0xa8, 0xe1, 0x8e, 0xae, 0xc5, 0x1f, 0x4a, 00, - 0x92, 0x24, 0xe2, 0xae, 0xc3, 0x1f, 0x35, 0x1c, 0x68, 0x6a, - 0xe4, 0x28, 0x7a, 0xd0, 0x4, 0xb0, 0xc7, 0xcd, 0x5c, 0x89, - 0x5, 0x45, 0x12, 0x74, 0xab, 0x71, 0xa9, 0xa0, 0x7, 0xaa, - 0x8a, 0x9d, 0x13, 0x8a, 0x6a, 0xa, 0x99, 0x46, 0x68, 0x1, - 0xeb, 0x4f, 0x1d, 0x29, 0x10, 0x71, 0x52, 00, 0x31, 0xd2, - 0x80, 0x15, 0x7b, 0x54, 0x83, 0xa5, 0x31, 0x69, 0xe3, 0xa5, - 00, 0x2d, 0x14, 0x52, 0x81, 0x40, 0x2, 0xd3, 0xa9, 0x29, - 0x68, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, - 0xa2, 0x8a, 0x28, 0x1, 0x94, 0x53, 0xb0, 0x29, 0xa6, 0x80, - 0xc, 0x52, 0x6d, 0xa5, 0xa2, 0x80, 0x18, 0x57, 0x9a, 0x4d, - 0xb4, 0xf2, 0x28, 0xc0, 0xf5, 0xa0, 0x8, 0xc8, 0xa6, 0xed, - 0xcd, 0x48, 0x79, 0x14, 0x9b, 0x68, 0x2, 0x32, 0x29, 0x84, - 0x54, 0xfb, 0x69, 0xbb, 0x7e, 0xb4, 0x1, 0xe, 0xda, 0x4d, - 0x82, 0xa6, 0xc6, 0xd, 0x18, 0xf6, 0xa0, 0x8, 0xa, 0xe2, - 0x98, 0x63, 0xab, 0x5, 0x69, 0x36, 0x50, 0x4, 0x1e, 0x55, - 0x1e, 0x5f, 0xb5, 0x4d, 0xb2, 0x8d, 0x94, 0x1, 0x58, 0xc7, - 0xcd, 0x27, 0x97, 0xf5, 0xab, 0x25, 0x5, 0x26, 0xc1, 0x40, - 0x15, 0xcc, 0x74, 0x86, 0x2c, 0xd5, 0x8d, 0x98, 0x14, 0x6d, - 0xcd, 00, 0x56, 0xf2, 0x40, 0xa6, 0xf9, 0x75, 0x68, 0xa6, - 0x78, 0xa4, 0xf2, 0xc5, 00, 0x55, 0xf2, 0xe9, 0x3c, 0x9a, - 0xb5, 0xb0, 0xd3, 0x4a, 0x73, 0x40, 0x15, 0x4a, 0x9a, 0x6e, - 0xca, 0xb6, 0x63, 0xa4, 0xf2, 0xfe, 0xb4, 0x1, 0x50, 0xc5, - 0x49, 0xe5, 0xd5, 0xcf, 0x2f, 0xd8, 0xd2, 0x79, 0x7e, 0xd4, - 0x1, 0x4c, 0xc6, 0x4d, 0x34, 0xc3, 0x9a, 0xbd, 0xb3, 0x34, - 0xd6, 0x4e, 0x28, 0x2, 0x97, 0x92, 0x29, 0xc, 0x3e, 0x95, - 0x70, 0xc5, 0xed, 0x49, 0xb3, 0xda, 0x80, 0x29, 0x79, 0x54, - 0x79, 0x42, 0xae, 0x79, 0x74, 0x79, 0x42, 0x80, 0x29, 0x79, - 0x5c, 0x53, 0xc, 0x19, 0xad, 0xf, 0x2f, 0xeb, 0x4d, 0xf2, - 0xa8, 0x2, 0x87, 0x91, 0x48, 0xd1, 0x71, 0x57, 0x8c, 0x5c, - 0x53, 0x7c, 0x9f, 0xc6, 0x80, 0x28, 0x79, 0x19, 0xa6, 0x98, - 0x30, 0x2b, 0x47, 0xca, 0xa6, 0xb4, 0x1c, 0x50, 0x6, 0x6f, - 0x93, 0x47, 0x93, 0x5a, 0x6, 0xf, 0x63, 0x4d, 0xf2, 0x7d, - 0x8d, 00, 0x67, 0xb4, 0x14, 0xc3, 0xd, 0x69, 0x34, 0x1f, - 0x5a, 0x69, 0xb7, 0x3, 0xd6, 0x80, 0x33, 0xfc, 0xaa, 0x4f, - 0xb3, 0xd5, 0xff, 00, 0x23, 0xeb, 0x41, 0x84, 0xd0, 0x6, - 0x61, 0x87, 0x34, 0x9e, 0x4e, 0x45, 0x68, 0x18, 0x31, 0xd8, - 0xd2, 0x79, 0x54, 0x1, 0x43, 0xec, 0xf4, 0x9e, 0x4e, 0x3f, - 0xfd, 0x55, 0xa1, 0xe4, 0x7d, 0x69, 0xc, 0x1f, 0x5a, 00, - 0xce, 0x68, 0xa9, 0x9e, 0x4d, 0x69, 0xb4, 0x5c, 0x54, 0x7e, - 0x47, 0xd6, 0x80, 0x33, 0xfc, 0x80, 0x29, 0x8d, 0xf, 0x3d, - 0x2b, 0x4b, 0xc8, 0xfc, 0x29, 0x1a, 0x1c, 0x7a, 0xd0, 0x6, - 0x61, 0xb7, 0xcd, 0x35, 0xad, 0xc0, 0x35, 0xa5, 0xe4, 0x1f, - 0x7a, 0x43, 0x6f, 0x40, 0x19, 0x9f, 0x67, 0xa4, 0x36, 0xf5, - 0xa3, 0xe4, 0xd3, 0x7c, 0x93, 0xe9, 0x40, 0x19, 0x8d, 0x6d, - 0xcd, 0x37, 0xec, 0xf5, 0xa6, 0xd6, 0xfe, 0xb9, 0xa6, 0xf9, - 0x3, 0xde, 0x80, 0x33, 0x4c, 0x1e, 0xd4, 0xd3, 0x5, 0x69, - 0x98, 0xd, 0x37, 0xec, 0xf9, 0xa0, 0xc, 0xcf, 0x22, 0x90, - 0xc0, 0x4f, 0x6a, 0xd2, 0xf2, 0x71, 0xd8, 0xd1, 0xe4, 0xfb, - 0x1a, 00, 0xcb, 0x68, 0x38, 0xa6, 0xf9, 0x38, 0xad, 0x36, - 0xb7, 0x27, 0xb1, 0x34, 0x9e, 0x41, 0xf4, 0x34, 0x1, 0x96, - 0x61, 0xcf, 0x6a, 0x3e, 0xce, 0x3d, 0x2b, 0x4c, 0xc2, 0x41, - 0xe9, 0x4d, 0x30, 0x13, 0xda, 0x80, 0x32, 0xda, 0xde, 0x99, - 0xe4, 0x7b, 0x56, 0xa7, 0xd9, 0xfd, 0xa9, 0x3c, 0x8f, 0x63, - 0x40, 0x19, 0x9f, 0x67, 0xcd, 0x33, 0xec, 0xf5, 0xaa, 0x6d, - 0xf2, 0x2a, 0x3f, 0xb3, 0x7e, 0x14, 0x1, 0x99, 0xf6, 0x7a, - 0x63, 0x5b, 0xf3, 0x5a, 0xbe, 0x40, 0xa6, 0x1b, 0x7e, 0x68, - 0x3, 0x30, 0xdb, 0xd3, 0xc, 0x1c, 0xd6, 0xa1, 0xb6, 0xa6, - 0x1b, 0x7f, 0xad, 00, 0x66, 0x7d, 0x9c, 0x9a, 0x6b, 0xdb, - 0xe3, 0xad, 0x6a, 0x1b, 0x7a, 0x63, 0x5b, 0xe4, 0xf3, 0x40, - 0x19, 0x9e, 0x47, 0xe3, 0x4d, 0x36, 0xf9, 0xed, 0x5a, 0x7f, - 0x67, 0xfa, 0xd2, 0x18, 0xf, 0xa5, 00, 0x66, 0x7d, 0x9f, - 0x8a, 0x46, 0x83, 0x3, 0xa5, 0x69, 0xb4, 0x7, 0x1d, 0x29, - 0x9e, 0x47, 0xb5, 00, 0x66, 0x79, 0x54, 0xd3, 0x6f, 0x9a, - 0xd4, 0x30, 0x7b, 0x52, 0x79, 0x1f, 0x5a, 00, 0xcb, 0x30, - 0x76, 0xe6, 0x9b, 0xe4, 0xe2, 0xb5, 0x7e, 0xcf, 0xf5, 0xa8, - 0xcc, 0x3e, 0xc6, 0x80, 0x33, 0x4c, 0x39, 0xa6, 0x1b, 0x7d, - 0xbe, 0xf5, 0xa9, 0xe4, 0x7b, 0x1a, 0x63, 0x5b, 0xf3, 0xc8, - 0xe2, 0x80, 0x33, 0x7c, 0xaa, 0x6b, 0x43, 0x91, 0x5a, 0x46, - 0xdc, 0x76, 0x6, 0x9a, 0x61, 0xc0, 0xe8, 0x68, 0x3, 0x30, - 0xc1, 0x8e, 0xb4, 0x86, 0x2f, 0x4a, 0xd2, 0x36, 0xf9, 0x3d, - 0xe9, 0xa6, 0xc, 0x7a, 0x9a, 00, 0xcc, 0x30, 0x9e, 0xf4, - 0x9e, 0x45, 0x68, 0x9b, 0x7c, 0xd2, 0x7d, 0x98, 0xfb, 0xd0, - 0x6, 0x71, 0x82, 0x93, 0xcb, 0xc7, 0x6a, 0xd0, 0x30, 0x63, - 0xb5, 0x31, 0xa0, 0x24, 0xf4, 0x34, 0x1, 0x43, 0xca, 0xcf, - 0x6a, 0xc, 0x78, 0xab, 0xc6, 0xdc, 0xd1, 0xe4, 0x7b, 0x50, - 0x5, 0xd, 0x94, 0x9e, 0x57, 0xb7, 0xe9, 0x57, 0x8c, 0x27, - 0xd2, 0x93, 0xc9, 0x3e, 0x86, 0x80, 0x29, 0x79, 0x62, 0x8f, - 0x2b, 0xd2, 0xae, 0xf9, 0x1e, 0xc6, 0x90, 0x43, 0xcf, 0x4a, - 00, 0xa4, 0x21, 0xc5, 0x2f, 0x93, 0x9e, 0xbc, 0xd5, 0xef, - 0x27, 0xeb, 0x4b, 0xf6, 0x7f, 0x5a, 00, 0xa5, 0xe4, 0xe0, - 0x52, 0xac, 0x26, 0xae, 0x88, 0x29, 0xe2, 0x1e, 0x28, 0x2, - 0x9a, 0xc3, 0x8a, 0x95, 0x63, 0x20, 0x55, 0xa1, 0x7, 0x3d, - 0xea, 0x44, 0x87, 0xeb, 0x40, 0x15, 0x52, 0x23, 0x56, 0x23, - 0x87, 0x9a, 0x9d, 0x21, 0xe6, 0xac, 0x24, 0x18, 0xa0, 0x8, - 0x56, 0x3c, 0x55, 0x88, 0xe3, 0xa9, 0x52, 0x1a, 0xb3, 0x1c, - 0x44, 0xf6, 0xa0, 0x6, 0xc5, 0x16, 0x6a, 0xec, 0x71, 0x7b, - 0x51, 0x14, 0x27, 0xd2, 0xae, 0xc5, 0x17, 0xb5, 00, 0x24, - 0x51, 0x74, 0xe2, 0xae, 0x45, 0x1d, 0x11, 0x45, 0x56, 0xa3, - 0x8e, 0x80, 0x16, 0x28, 0xea, 0xdc, 0x51, 0xd3, 0x63, 0x8f, - 0xa5, 0x59, 0x8d, 0x31, 0x40, 0x12, 0x46, 0x87, 0xb5, 0x5a, - 0x8d, 0x4d, 0x47, 0x1a, 0x55, 0x88, 0xd2, 0x80, 0x1c, 0xa3, - 0x9a, 0x95, 0x6, 0x3b, 0x52, 0x5, 0xa9, 0x94, 0x70, 0x28, - 00, 0x3, 0x8a, 0x91, 0x79, 0x34, 0x80, 0x52, 0x81, 0x40, - 0xa, 0x5, 0x3e, 0x81, 0xd2, 0x8a, 00, 0x29, 0xcb, 0xd2, - 0x90, 0xc, 0xd2, 0xf4, 0xa0, 0x5, 0xa2, 0x8a, 0x28, 00, - 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, - 0x28, 00, 0xa2, 0x8a, 0x28, 0x1, 0x31, 0x4d, 0xa7, 0xd2, - 0x62, 0x80, 0x1b, 0x45, 0x3b, 0x14, 0xdc, 0x50, 0x2, 0x6d, - 0xa3, 0x6d, 0x2d, 0x14, 00, 0x9b, 0x69, 0x8, 0xc1, 0xa7, - 0x51, 0x81, 0x40, 0x11, 0x91, 0x46, 0xda, 0x7e, 0x5, 0x1b, - 0x68, 0x1, 0x9b, 0x28, 0xdb, 0x4f, 0xdb, 0x46, 0xda, 00, - 0x8f, 0x67, 0xb5, 0x1b, 0x6a, 0x4d, 0xb4, 0x6d, 0xa0, 0x8, - 0x4a, 0xd2, 0x14, 0xa9, 0x8a, 0xfe, 0x34, 0x9b, 0x7d, 0xa8, - 0x2, 0x2d, 0x94, 0x9b, 0x6a, 0x52, 0x38, 0xa4, 0xc5, 00, - 0x47, 0xb6, 0x93, 0x65, 0x4b, 0x8a, 0x31, 0x40, 0x11, 0x6d, - 0xa6, 0x95, 0xa9, 0x8a, 0xd2, 0x6d, 0xa0, 0x8, 0x76, 0xd1, - 0xb7, 0xda, 0xa6, 0xdb, 0x46, 0xca, 00, 0x83, 0x6d, 0x1b, - 0x6a, 0x6d, 0x94, 0x6c, 0xa0, 0x8, 0x76, 0x8a, 0x6b, 0x26, - 0x4d, 0x58, 0xd9, 0x41, 0x5c, 0x76, 0xa0, 0xa, 0xbe, 0x5d, - 0x2f, 0x96, 0x3d, 0xaa, 0x7d, 0xb9, 0xa3, 0x60, 0xa0, 0xa, - 0xfe, 0x5f, 0xd2, 0x93, 0xcb, 0x15, 0x67, 0x6f, 0xb5, 0x34, - 0xa5, 00, 0x40, 0x63, 0x2, 0x90, 0xc7, 0x53, 0xec, 0xa4, - 0xd9, 0x40, 0x10, 0x79, 0x34, 0xd3, 0x10, 0xcd, 0x59, 0xd8, - 0x69, 0x3c, 0xba, 00, 0xad, 0xe5, 0xd2, 0x79, 0x59, 0xab, - 0x5e, 0x5d, 0x21, 0x8f, 0x2, 0x80, 0x2a, 0x98, 0xa9, 0xbb, - 0x2a, 0xd1, 0x8f, 0x34, 0x9e, 0x5e, 0x28, 0x2, 0xa7, 0x95, - 0x9a, 0x3c, 0x9f, 0xc6, 0xad, 0x79, 0x74, 0x79, 0x54, 0x1, - 0x53, 0xcb, 0xa4, 0xf2, 0x73, 0x56, 0xfc, 0xbf, 0x6a, 0x3c, - 0xb3, 0x40, 0x14, 0x4c, 0x3c, 0xd1, 0xe4, 0x8a, 0xb6, 0xd1, - 0x1c, 0xf3, 0x49, 0xe5, 0xd0, 0x5, 0x43, 0x17, 0xb7, 0xe9, - 0x4d, 0x30, 0xe6, 0xae, 0x6c, 0xf6, 0xa3, 0xcb, 0xf6, 0xa0, - 0xa, 0x46, 0x2f, 0x6a, 0x4f, 0x26, 0xae, 0xf9, 0x7e, 0xd4, - 0x85, 0x38, 0xe9, 0x40, 0x14, 0x3c, 0x81, 0xf5, 0xa4, 0x31, - 0xa, 0xbd, 0xe4, 0xd2, 0x79, 0x3e, 0xd4, 0x1, 0x43, 0xc9, - 0xcf, 0xff, 00, 0xaa, 0x91, 0xa0, 0xe3, 0x9a, 0xd0, 0xf2, - 0x69, 0x8f, 0xf, 0x4a, 00, 0xce, 0xf2, 0x5, 0x1e, 0x45, - 0x5f, 0xf2, 0x68, 0xf2, 0xbd, 0x6, 0x68, 0x3, 0x39, 0xe1, - 0xf6, 0xa6, 0x79, 0x2, 0xb4, 0x5a, 0x2, 0x4f, 0x4a, 0x4f, - 0x23, 0xe9, 0x40, 0x19, 0xfe, 0x4d, 0x21, 0x87, 0xda, 0xb4, - 0x3c, 0x9f, 0x6a, 0x43, 0x6e, 0x68, 0x3, 0x30, 0xc1, 0xcf, - 0x4a, 0x3c, 0xaa, 0xd0, 0xfb, 0x3d, 0x37, 0xc8, 0xf6, 0xa0, - 0xc, 0xf3, 0xe, 0x69, 0x3c, 0x8f, 0x6a, 0xd1, 0xfb, 0x39, - 0x3d, 0xa9, 0x3e, 0xcf, 0xed, 0x40, 0x19, 0xe6, 0x11, 0x8a, - 0x61, 0x83, 0xaf, 0x15, 0xa5, 0xe4, 0x7b, 0x52, 0x34, 0x3c, - 0x50, 0x6, 0x67, 0x91, 0xfe, 0x71, 0x49, 0xe4, 0x8f, 0x4a, - 0xd1, 0xfb, 0x39, 0x34, 0x9e, 0x45, 00, 0x66, 0x18, 0x3d, - 0xa9, 0xd, 0xbd, 0x68, 0xb4, 0x27, 0x34, 0x9f, 0x67, 0x27, - 0xd2, 0x80, 0x33, 0xc, 0x3, 0xd2, 0x9b, 0xf6, 0x7f, 0x6a, - 0xd3, 0x68, 0x3d, 0xa9, 0x86, 0xc, 0x74, 0xa0, 0xc, 0xe3, - 0x6f, 0xc5, 0x46, 0x6d, 0x80, 0xad, 0x5f, 0xb3, 0x93, 0x4c, - 0x36, 0xfc, 0xd0, 0x6, 0x67, 0xd9, 0xfd, 0xa9, 0x86, 0xdb, - 0x9f, 0xfe, 0xb5, 0x6a, 0x18, 0x3d, 0xa9, 0xbf, 0x65, 0x27, - 0xda, 0x80, 0x33, 0x3e, 0xcd, 0x8a, 0x3e, 0xcf, 0xf4, 0xad, - 0x2f, 0xb3, 0x7f, 0x9c, 0x53, 0x7c, 0x9f, 0x6a, 00, 0xcd, - 0x36, 0xf8, 0x14, 0xc3, 0x6f, 0x8f, 0xff, 00, 0x55, 0x69, - 0xb5, 0xb9, 0x34, 0xd3, 0x6c, 0x7d, 0x28, 0x3, 0x30, 0xc1, - 0xfe, 0x71, 0x48, 0x6d, 0xf3, 0xda, 0xb5, 0x5, 0xbf, 0xb5, - 0x34, 0xc2, 0x73, 0xd2, 0x80, 0x33, 0xd, 0xbd, 0x30, 0xdb, - 0x8f, 0x4c, 0xd6, 0xa1, 0xb7, 0xe3, 0xa5, 0x37, 0xec, 0xfe, - 0xd4, 0x1, 0x96, 0x6d, 0xfd, 0xbf, 0x4a, 0x61, 0xb7, 0xcd, - 0x6a, 0x98, 0x49, 0xed, 0x4c, 0xfb, 0x31, 0xf4, 0xa0, 0xc, - 0xcf, 0xb3, 0x8f, 0x4a, 0x63, 0x40, 0x33, 0xd2, 0xb5, 0x7e, - 0xcf, 0xed, 0x4c, 0x36, 0xff, 00, 0xec, 0xd0, 0x6, 0x59, - 0xb7, 0x6, 0x98, 0xd6, 0xe3, 0x35, 0xab, 0xf6, 0x7f, 0x6a, - 0x61, 0xb7, 0x19, 0xe9, 0x40, 0x19, 0x7f, 0x67, 0xf6, 0xa4, - 0x36, 0xfc, 0xd6, 0xa1, 0xb7, 0xf6, 0xa6, 0x35, 0xb1, 0xf4, - 0xa0, 0xc, 0xb3, 0x6f, 0x48, 0x6d, 0xfe, 0x95, 0xa7, 0xf6, - 0x6a, 0x4f, 0xb3, 0xfb, 0x50, 0x6, 0x67, 0xd9, 0x8d, 0x21, - 0xb7, 0xad, 0x36, 0xb6, 0x34, 0x86, 0xd8, 0x8f, 0x4a, 00, - 0xcc, 0x30, 0x62, 0x93, 0xec, 0xf9, 0xed, 0xfa, 0x56, 0x9f, - 0xd9, 0xe8, 0x36, 0xed, 0xe9, 0x40, 0x19, 0x7f, 0x67, 0xff, - 00, 0x38, 0xa4, 0xf2, 0x3d, 0xab, 0x4c, 0xdb, 0x1f, 0x4a, - 0x5, 0xb1, 0xf4, 0xa0, 0xc, 0xef, 0x23, 0xdb, 0x1f, 0x85, - 0x2, 0xdc, 0x56, 0x99, 0xb7, 0x27, 0xb5, 0x2, 0xd8, 0x81, - 0xd2, 0x80, 0x33, 0x7c, 0x80, 0x29, 0xc2, 0x1e, 0x6b, 0x43, - 0xec, 0xdc, 0xf4, 0xa7, 0xfd, 0x9f, 0xda, 0x80, 0x33, 0xc4, - 0x15, 0x22, 0xc1, 0xed, 0x57, 0x96, 0xdf, 0xda, 0xa4, 0x5b, - 0x7f, 0x6a, 00, 0xa4, 0xb0, 0x55, 0x88, 0xe0, 0xfc, 0x6a, - 0xd0, 0xb6, 0xc0, 0xe9, 0x52, 0xad, 0xb9, 0xa0, 0xa, 0xe9, - 00, 0x1c, 0xd5, 0x88, 0xa1, 0xa9, 0xe3, 0xb7, 0x35, 0x61, - 0x20, 0xf6, 0xa0, 0x8, 0xe3, 0x86, 0xae, 0x45, 0x10, 0xa7, - 0x47, 0x6e, 0x41, 0xab, 0x51, 0xc3, 0x40, 0xd, 0x8e, 0x2e, - 0x2a, 0xc2, 0x45, 0xd2, 0x95, 0x13, 0xa0, 0xc5, 0x59, 0x48, - 0xe8, 0x1, 0x12, 0x2a, 0xb0, 0x89, 0x42, 0x47, 0x53, 0xa4, - 0x74, 00, 0xa8, 0x98, 0xc5, 0x4c, 0xa3, 0x14, 0x8a, 0xb5, - 0x22, 0xaf, 0x14, 00, 0xf5, 0x5e, 0x3a, 0xd4, 0x81, 0x79, - 0xa6, 0xa8, 0xa9, 0x16, 0x80, 00, 0x3d, 0x69, 0xdb, 0x69, - 0x29, 0xf4, 00, 0xa, 0x72, 0xd3, 0x69, 0xc3, 0xa5, 00, - 0x2d, 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, - 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, - 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, - 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0x8, 0x7a, 0x53, 0x69, - 0xf4, 0x50, 0x3, 0x28, 0xa7, 0x62, 0x8c, 0x50, 0x3, 0x68, - 0xa7, 0x62, 0x8c, 0xa, 00, 0x6d, 0x14, 0xec, 0xa, 0x36, - 0xd0, 0x3, 0x68, 0xa7, 0x6d, 0xa4, 0x23, 0x14, 00, 0xcd, - 0xb4, 0x6d, 0xa7, 0x51, 0x40, 0xd, 0xc1, 0xa3, 0x6, 0x9d, - 0x45, 00, 0x37, 0x6, 0x8c, 0x1a, 0x75, 0x14, 00, 0xdc, - 0x1a, 0x31, 0x8a, 0x75, 0x14, 00, 0xca, 0x31, 0x4f, 0xa2, - 0x80, 0x19, 0x81, 0x49, 0x8a, 0x92, 0x93, 0xf0, 0xa0, 0x8, - 0xf6, 0x50, 0x57, 0x15, 0x26, 0x5, 0x1b, 0x68, 0x2, 0x2c, - 0xa, 0x36, 0x54, 0xbb, 0x69, 0x8, 0xc5, 00, 0x47, 0xb6, - 0x93, 0x6d, 0x48, 0x46, 0x69, 0x36, 0xd0, 0x3, 0x36, 0xd2, - 0x6c, 0xa7, 0xe0, 0xd1, 0x83, 0x40, 0xc, 0xda, 0x5, 0x23, - 0x26, 0x45, 0x49, 0x83, 0x46, 0xd2, 0x68, 0x2, 0x1d, 0x94, - 0x6c, 0xa9, 0x76, 0x51, 0xb2, 0x80, 0x22, 0xd9, 0x46, 0xca, - 0x97, 0x6f, 0xd6, 0x8d, 0xb4, 0x1, 0xe, 0xda, 0x8, 0xa9, - 0xb6, 0xd2, 0x6d, 0xa0, 0x8, 0x3c, 0xba, 0x3c, 0xba, 0x98, - 0xae, 0x69, 0x36, 0xd0, 0x4, 0x3b, 0x5, 0x26, 0xcc, 0x7a, - 0x9a, 0x9f, 0x6d, 0x21, 0x5c, 0x9a, 00, 0x83, 0x2, 0x8d, - 0xbe, 0xf5, 0x36, 0xda, 0x36, 0xfd, 0x68, 0x2, 0xd, 0x94, - 0xdf, 0x2e, 0xac, 0x6d, 0xa3, 0x65, 00, 0x56, 0xd9, 0xed, - 0x41, 0x8e, 0xac, 0xed, 0xa6, 0xb2, 0xf1, 0x40, 0x15, 0x5a, - 0x3a, 0x4f, 0x2c, 0x7a, 0x55, 0x9d, 0x94, 0x6c, 0xa0, 0xa, - 0xbe, 0x56, 0x68, 0xf2, 0x80, 0xab, 0x5b, 0x29, 0x3c, 0xba, - 00, 0xaa, 0x62, 0x14, 0xd3, 0x1d, 0x5c, 0xd9, 0x49, 0xb2, - 0x80, 0x29, 0xf9, 0x42, 0x93, 0x65, 0x5a, 0x31, 0x8c, 0xd1, - 0xe5, 0x8a, 00, 0xa8, 0x63, 0x27, 0xb5, 0x27, 0x94, 0x7d, - 0xea, 0xd9, 0x8f, 0x3d, 0xa9, 0x3c, 0xaa, 00, 0xa9, 0xe5, - 0x52, 0x18, 0x89, 0xab, 0x9e, 0x5f, 0xd6, 0x90, 0xc7, 0x40, - 0x14, 0x8c, 0x20, 0x53, 0x4c, 0x40, 0x55, 0xe6, 0x88, 0xb5, - 0x37, 0xca, 0xc7, 0xa5, 00, 0x51, 0x31, 0x64, 0xd2, 0x79, - 0x15, 0x7b, 0xcb, 0xa4, 0xf2, 0x89, 0xa0, 0xa, 0xd, 0xf, - 0x34, 0xd3, 0x15, 0x5e, 0x31, 0xd2, 0x79, 0x67, 0xd2, 0x80, - 0x28, 0x98, 0x79, 0xa6, 0x34, 0x35, 0xa2, 0x62, 0xcf, 0x6a, - 0x69, 0x84, 0xa, 00, 0xcf, 0xf2, 0xa9, 0xc, 0x39, 0xab, - 0xfe, 0x55, 0x21, 0x8a, 0x80, 0x28, 0x18, 0x71, 0x51, 0x98, - 0xb1, 0x5a, 0x26, 0x1e, 0x29, 0x3c, 0x8a, 00, 0xce, 0xf2, - 0x73, 0x47, 0x91, 0x5a, 0x1e, 0x41, 0xa6, 0x98, 0x31, 0x40, - 0x14, 0x3c, 0xac, 0x53, 0x4c, 0x35, 0xa3, 0xe4, 0xfb, 0x53, - 0x5a, 0x1f, 0x6a, 00, 0xcd, 0xf2, 0x69, 0xc, 0x42, 0xb4, - 0x7e, 0xce, 0x69, 0xc, 0x34, 0x1, 0x9a, 0x61, 0xc0, 0x14, - 0xdf, 0x22, 0xb4, 0x5a, 0x1e, 0x7a, 0x53, 0x7c, 0x83, 0x40, - 0x19, 0xcd, 0x6, 0x29, 0xbe, 0x5d, 0x68, 0xb4, 0x3c, 0x53, - 0x7c, 0x9a, 00, 0xcf, 0xf2, 0x69, 0x9e, 0x4f, 0xb5, 0x69, - 0x18, 0x49, 0xed, 0x4c, 0x68, 0x70, 0x68, 0x3, 0x3c, 0xc2, - 0x3d, 0x29, 0x86, 0x3, 0xef, 0x5a, 0x3e, 0x4f, 0xb5, 0x1e, - 0x45, 00, 0x66, 0x7d, 0x9c, 0x7a, 0x52, 0x79, 0x1e, 0xd5, - 0xa7, 0xe4, 0xd2, 0x34, 0x3c, 0x74, 0xa0, 0xc, 0xc3, 0x6f, - 0x9a, 0x4f, 0xb3, 0xfa, 0xd6, 0x89, 0x86, 0x90, 0xc1, 0x40, - 0x19, 0xa6, 0x1a, 0xd, 0xbe, 0x7e, 0x95, 0xa3, 0xe4, 0xd2, - 0x79, 0x1e, 0xd4, 0x1, 0x9d, 0xf6, 0x7a, 0x4, 0x1c, 0xd6, - 0x97, 0xd9, 0xa8, 0xf2, 0x31, 0x40, 0x19, 0xde, 0x41, 0x3d, - 0xa8, 0xf2, 0x31, 0x5a, 0x22, 0xc, 0x9a, 0x3e, 0xcd, 0x8a, - 00, 0xcf, 0x10, 0xe3, 0xb5, 0x38, 0x43, 0x57, 0xfe, 0xcf, - 0x4e, 0x10, 0x76, 0xc5, 00, 0x51, 0x10, 0x73, 0x52, 0x2c, - 0x22, 0xae, 0xb, 0x7c, 0xd3, 0xd6, 0xde, 0x80, 0x2a, 0x2c, - 0x39, 0xa9, 0x16, 0x1a, 0xb6, 0xb0, 0xd4, 0xab, 0x7, 0xe5, - 0x40, 0x15, 0x56, 0xc, 0xe2, 0xac, 0xa4, 0x38, 0xed, 0x53, - 0xac, 0x38, 0xa9, 0x56, 0x2a, 00, 0x85, 0x22, 0xcd, 0x58, - 0x58, 0xe9, 0xe9, 0x15, 0x4e, 0xb1, 0xe3, 0x14, 00, 0xc5, - 0x8e, 0xa6, 0x8d, 0x29, 0xe8, 0xb5, 0x28, 0x4a, 00, 0x6a, - 0xa5, 0x4c, 0xab, 0x40, 0x5a, 0x91, 0x45, 00, 0xb, 0x4f, - 00, 0x71, 0x4a, 0xa3, 0xa5, 0x3c, 0xe, 0x7a, 0x50, 00, - 0xa0, 0x66, 0x9d, 0xd2, 0x8c, 0x62, 0x9c, 0x7, 0x14, 00, - 0x60, 0x52, 0xd1, 0x45, 00, 0x28, 0x19, 0xa7, 0x52, 0xe, - 0x94, 0xb4, 00, 0x51, 0x45, 0x14, 00, 0x51, 0x45, 0x14, - 00, 0x51, 0x45, 0x14, 00, 0x51, 0x45, 0x14, 00, 0x51, - 0x45, 0x14, 00, 0x51, 0x45, 0x14, 00, 0x51, 0x45, 0x14, - 00, 0x51, 0x45, 0x14, 00, 0x51, 0x45, 0x14, 00, 0x51, - 0x45, 0x14, 00, 0x51, 0x45, 0x14, 00, 0x51, 0x45, 0x14, - 00, 0x51, 0x45, 0x14, 00, 0x52, 0x60, 0x1a, 0x5a, 0x28, - 0x1, 0xbb, 0x68, 0xdb, 0x4e, 0xa2, 0x80, 0x1b, 0xb6, 0x8d, - 0xb4, 0xea, 0x28, 0x1, 0xbb, 0x68, 0xdb, 0x4e, 0xa2, 0x80, - 0x1b, 0x83, 0x46, 0xd, 0x3a, 0x8a, 00, 0x66, 0x28, 0xc5, - 0x3e, 0x8a, 00, 0x65, 0x14, 0xfa, 0x4c, 0x50, 0x3, 0x68, - 0xa7, 0x60, 0x51, 0x81, 0x40, 0xd, 0xa2, 0x9d, 0x81, 0x41, - 0x1c, 0x50, 0x3, 0x30, 0x28, 0xc0, 0xa5, 0xa2, 0x80, 0x13, - 0x6d, 0x1b, 0x69, 0x68, 0xa0, 0x4, 0xdb, 0x49, 0xb6, 0x9d, - 0x46, 0x28, 0x1, 0xbb, 0x68, 0xc1, 0xa7, 0x62, 0x8a, 00, - 0x6e, 0x28, 0xc7, 0xb5, 0x3a, 0x8a, 00, 0x66, 0x28, 0xc5, - 0x3e, 0x8a, 00, 0x8c, 0xad, 0x26, 0xda, 0x96, 0x8c, 0x50, - 0x4, 0x5b, 0x68, 0xdb, 0x52, 0xe2, 0x91, 0xa8, 0x2, 0x22, - 0xb4, 0x9b, 0x6a, 0x4c, 0x51, 0x81, 0x40, 0x11, 0xed, 0x34, - 0x6d, 0xa7, 0x91, 0x46, 0xda, 00, 0x66, 0xda, 0x6b, 0x2d, - 0x4b, 0xb6, 0x8d, 0xb4, 0x1, 0xe, 0xca, 0x36, 0xd4, 0xbb, - 0x68, 0xdb, 0x40, 0x11, 0x14, 0xcd, 0x26, 0xcf, 0x7a, 0x9b, - 0x6f, 0xb5, 0x26, 0xcc, 0xd0, 0x4, 0x5b, 0x29, 0x36, 0xd4, - 0xdb, 0x28, 0xdb, 0x40, 0x10, 0x6c, 0xa3, 0x67, 0xb0, 0xa9, - 0x88, 0xf6, 0xa4, 0xc6, 0x28, 0x2, 0x2d, 0x83, 0xd0, 0x52, - 0x79, 0x62, 0xa6, 0xc5, 0x26, 0x5, 00, 0x40, 0x52, 0x8d, - 0x9e, 0xd5, 0x36, 0xda, 0x30, 0x68, 0x2, 0x1d, 0xb4, 0xd6, - 0x4a, 0x9f, 0x66, 0x68, 0xd9, 0x40, 0x15, 0xfc, 0xba, 0x3c, - 0xba, 0xb1, 0xb4, 0x52, 0x6d, 0xa0, 0xa, 0xfe, 0x5f, 0xd2, - 0x9a, 0x63, 0xf6, 0xab, 0xc, 0xbc, 0xd2, 0x6d, 0xa0, 0xa, - 0xde, 0x5d, 0x21, 0x8f, 0x35, 0x6b, 0x6d, 0x26, 0xca, 00, - 0xab, 0xe5, 0x7b, 0x50, 0x62, 0xf6, 0xab, 0x5b, 0x29, 0x36, - 0x50, 0x5, 0x5f, 0x26, 0x9b, 0xb0, 0x7a, 0x55, 0xc2, 0x9c, - 0x54, 0x7b, 0x68, 0x2, 0xbf, 0x96, 0x3d, 0x5, 0x34, 0xc3, - 0x93, 0x56, 0xb6, 0xd1, 0xe5, 0xd0, 0x5, 0x43, 0xd, 0x1e, - 0x49, 0xab, 0x5e, 0x5d, 0x1e, 0x5d, 00, 0x54, 0x30, 0xfb, - 0x53, 0x1a, 0x21, 0x57, 0x4c, 0x59, 0xa6, 0x98, 0x68, 0x2, - 0x91, 0x8b, 0x3d, 0xa9, 0x3c, 0xaf, 0xa5, 0x5d, 0xf2, 0xfd, - 0xe9, 0x36, 0x50, 0x5, 0x16, 0x87, 0x9e, 0x82, 0x93, 0xc9, - 0xf6, 0xab, 0xa6, 0x23, 0x49, 0xe5, 0xd0, 0x5, 0x2f, 0x27, - 0x34, 0xc6, 0x80, 0x75, 0xab, 0xfe, 0x5d, 0x35, 0xa3, 0xc0, - 0xe9, 0x40, 0x19, 0xfe, 0x50, 0xa4, 0x30, 0x66, 0xaf, 0xf9, - 0x7e, 0xd4, 0x9e, 0x5e, 0x68, 0x2, 0x89, 0x82, 0x93, 0xc8, - 0xc7, 0xa1, 0xab, 0xe6, 0x2a, 0x4f, 0x2c, 0x50, 0x6, 0x71, - 0xb7, 0x24, 0xd2, 0x7d, 0x9f, 0xda, 0xb4, 0x7c, 0xbc, 0xd2, - 0x79, 0x22, 0x80, 0x33, 0x8c, 0x1f, 0x4a, 0x41, 0x6, 0x4f, - 0x4a, 0xd2, 0x31, 0x52, 0x79, 0x34, 0x1, 0x40, 0xc1, 0xea, - 0x29, 0xc, 0x1e, 0xd5, 0xa1, 0xe4, 0xd2, 0x18, 0x68, 0x2, - 0x82, 0xc1, 0xcf, 0x41, 0x4a, 0x60, 0xcf, 0x61, 0x57, 0x84, - 0x54, 0xbe, 0x51, 0xa0, 0xa, 0x42, 0xe, 0x28, 0x11, 0x73, - 0x57, 0x44, 0x54, 0xbe, 0x5d, 00, 0x54, 0x10, 0xf1, 0xda, - 0x9e, 0x21, 0xab, 0x42, 0x2a, 0x78, 0x8b, 0xda, 0x80, 0x2a, - 0xac, 0x35, 0x20, 0x8e, 0xac, 0x88, 0xf8, 0xe9, 0x4a, 0x22, - 0xe6, 0x80, 0x21, 0x58, 0x86, 0x7a, 0x54, 0xab, 0x10, 0xa9, - 0x56, 0x3c, 0x54, 0x9b, 0x45, 00, 0x42, 0x22, 0xc5, 0x4c, - 0x91, 0xe7, 0xd2, 0x9f, 0xb2, 0x9e, 0xab, 0x40, 0xd, 0x54, - 0xc5, 0x4a, 0x13, 0x38, 0xa5, 0x55, 0xa7, 0xaa, 0xd0, 0x3, - 0x42, 0xd3, 0xc0, 0x34, 0xbb, 0x69, 0xd8, 0xc0, 0xa0, 00, - 0x66, 0x9f, 0x8a, 0x4a, 0x78, 0xe9, 0x40, 0x9, 0x81, 0x4b, - 0x45, 0x14, 00, 0x52, 0x81, 0x4a, 0x7, 0x14, 0xb4, 00, - 0x51, 0x45, 0x14, 00, 0x51, 0x45, 0x14, 00, 0x51, 0x45, - 0x14, 00, 0x51, 0x45, 0x14, 00, 0x51, 0x45, 0x14, 00, - 0x51, 0x45, 0x14, 00, 0x51, 0x45, 0x14, 00, 0x51, 0x45, - 0x14, 00, 0x51, 0x45, 0x14, 00, 0x51, 0x45, 0x14, 00, - 0x51, 0x45, 0x14, 00, 0x51, 0x45, 0x14, 00, 0x51, 0x45, - 0x14, 00, 0x51, 0x45, 0x14, 00, 0x51, 0x45, 0x14, 00, - 0x51, 0x45, 0x14, 00, 0x51, 0x45, 0x14, 00, 0x51, 0x45, - 0x14, 00, 0x51, 0x45, 0x14, 00, 0x51, 0x45, 0x14, 00, - 0x51, 0x45, 0x14, 00, 0x51, 0x45, 0x14, 00, 0x51, 0x45, - 0x14, 00, 0x98, 0x14, 0x6d, 0xa5, 0xa2, 0x80, 0x13, 0x6d, - 0x18, 0xa5, 0xa2, 0x80, 0x13, 0x1e, 0xf4, 0x63, 0xde, 0x96, - 0x8a, 00, 0x69, 0x7, 0xeb, 0x46, 0xd, 0x3a, 0x8a, 00, - 0x6e, 0xd, 0x26, 0x29, 0xf4, 0x50, 0x3, 0x31, 0x46, 0x29, - 0xf4, 0x50, 0x3, 0x31, 0x46, 0x29, 0xf4, 0x50, 0x3, 0x28, - 0xa7, 0x62, 0x8c, 0x50, 0x3, 0x31, 0x9a, 0x36, 0xd2, 0xe2, - 0x8a, 00, 0x4d, 0xb4, 0x6d, 0xa5, 0xa2, 0x80, 0x13, 0x6d, - 0x1b, 0x69, 0x68, 0xa0, 0x4, 0xdb, 0x46, 0xda, 0x5a, 0x28, - 0x1, 0xb8, 0x34, 0x60, 0xd3, 0xa8, 0xa0, 0x6, 0xe0, 0xd1, - 0x83, 0x4e, 0xa2, 0x80, 0x19, 0xb3, 0x34, 0x9b, 0x6a, 0x4a, - 0x28, 0x2, 0x3c, 0x51, 0xb7, 0xde, 0xa4, 0xc5, 0x18, 0xa0, - 0x8, 0xf6, 0x53, 0x70, 0x2a, 0x42, 0x3d, 0xa9, 0x31, 0x40, - 0xc, 0xdb, 0x46, 0xda, 0x7e, 0x28, 0xc0, 0xa0, 0x6, 0x6d, - 0xa3, 0x1e, 0xf4, 0xfc, 0xa, 0x4d, 0xb4, 0x1, 0x19, 0x5e, - 0x69, 0x36, 0xd4, 0xbb, 0x68, 0xdb, 0x40, 0x10, 0xed, 0xa3, - 0x60, 0xa9, 0xb6, 0xd1, 0xb6, 0x80, 0x21, 0xd8, 0x29, 0x36, - 0x66, 0xa7, 0xd9, 0x49, 0xb6, 0x80, 0x21, 0xf2, 0xe9, 0x36, - 0x54, 0xfb, 0x29, 0xbb, 0x68, 0x2, 0x2d, 0x94, 0x6c, 0xa9, - 0x76, 0xd2, 0x6d, 0xa0, 0x8, 0xa, 0x51, 0xb6, 0xa6, 0xf2, - 0xe8, 0xd9, 0x40, 0x10, 0x6d, 0x26, 0x93, 0x65, 0x58, 0xd9, - 0x49, 0xb0, 0x50, 0x5, 0x7f, 0x2e, 0x8f, 0x2e, 0xac, 0x6c, - 0xa3, 0x65, 00, 0x56, 0x31, 0xe3, 0xad, 0x35, 0x93, 0xd2, - 0xac, 0xb2, 0x7b, 0x52, 0x6c, 0xf6, 0xa0, 0xa, 0xbe, 0x5d, - 0x1e, 0x55, 0x59, 0xd9, 0x49, 0xb2, 0x80, 0x2b, 0xf9, 0x5e, - 0xd4, 0x9e, 0x5f, 0xb5, 0x59, 0xf2, 0xe8, 0xf2, 0xe8, 0x2, - 0xaf, 0x95, 0xed, 0x49, 0xe5, 0xf, 0x4a, 0xb7, 0xe5, 0xd1, - 0xb2, 0x80, 0x2a, 0x79, 0x54, 0x86, 0x2c, 0xd5, 0xbf, 0x2e, - 0x93, 0xcb, 0xcd, 00, 0x55, 0xf2, 0x47, 0xf9, 0x14, 0x9e, - 0x4d, 0x5b, 0xf2, 0xe8, 0xf2, 0xe8, 0x2, 0x9f, 0x91, 0x47, - 0x91, 0xef, 0x56, 0xcc, 0x54, 0x79, 0x43, 0xd2, 0x80, 0x2a, - 0x8, 0xa8, 0xf2, 0x8d, 0x5a, 0xf2, 0xc7, 0xa5, 0x1e, 0x5d, - 00, 0x56, 0x11, 0x7a, 0x9a, 0x5f, 0x2f, 0xd2, 0xad, 0x79, - 0x74, 0x79, 0x74, 0x1, 0x5f, 0xcb, 0xa5, 0x58, 0xaa, 0x7f, - 0x2e, 0x9c, 0x23, 0xe2, 0x80, 0x21, 0xd9, 0x4a, 0x23, 0x3e, - 0x95, 0x32, 0xa7, 0x34, 0xed, 0x80, 0xd0, 0x4, 0x41, 0x29, - 0xea, 0x9c, 0xd3, 0xc2, 0x71, 0x4e, 0xb, 0x40, 0xc, 0xb, - 0x4f, 0xb, 0xd2, 0x9c, 0x12, 0x9c, 0x16, 0x80, 0x1a, 0x17, - 0x6, 0x9e, 0x17, 0x8a, 0x5c, 0x7b, 0x50, 0x5, 00, 0x26, - 0xda, 0x70, 0x19, 0x34, 0xb8, 0x14, 0xb4, 00, 0x63, 0x14, - 0x51, 0x4a, 0x6, 0x68, 00, 0x3, 0x34, 0xa0, 0x71, 0x40, - 0x18, 0xa5, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x4, - 0xc0, 0xa3, 0x2, 0x96, 0x8a, 00, 0x4c, 0xa, 0x36, 0xd2, - 0xd1, 0x40, 0x9, 0xb6, 0x93, 0x6d, 0x3a, 0x8a, 00, 0x6e, - 0xda, 0x36, 0xd3, 0xa8, 0xa0, 0x6, 0xed, 0xa3, 0x6d, 0x3a, - 0x8a, 00, 0x6e, 0x28, 0xc7, 0xb5, 0x3a, 0x8a, 00, 0x6e, - 0x29, 0x29, 0xc4, 0x66, 0x93, 0x6, 0x80, 0x12, 0x8a, 0x31, - 0x46, 0x28, 00, 0xa2, 0x8a, 0x28, 0x1, 0x30, 0x28, 0xc0, - 0xa5, 0xa2, 0x80, 0x13, 0x6e, 0x68, 0xc0, 0xf5, 0xa5, 0xa2, - 0x80, 0x13, 0x3, 0xd6, 0x93, 0x6d, 0x3a, 0x8a, 00, 0x6e, - 0xda, 0x36, 0xd3, 0xa8, 0xa0, 0x6, 0xed, 0xa4, 0xd9, 0xed, - 0x4f, 0xa2, 0x80, 0x19, 0xb7, 0x14, 0x84, 0x53, 0xc8, 0xcd, - 0x26, 0xd, 00, 0x32, 0x93, 0x2, 0xa4, 0xc1, 0xa3, 0x6, - 0x80, 0x23, 0xc5, 0x18, 0xa9, 0x31, 0x46, 0x28, 0x2, 0x2d, - 0xb4, 0x6d, 0xa9, 0x31, 0x46, 0x28, 0x2, 0x3d, 0x94, 0x9b, - 0x2a, 0x4d, 0xb4, 0x6d, 0xa0, 0x8, 0xf6, 0xd2, 0x6d, 0xfa, - 0xd4, 0xbb, 0x68, 0xdb, 0x40, 0x11, 0x15, 0x1d, 0xe9, 0x36, - 0x8a, 0x9b, 0x6d, 0x1b, 0x28, 0x2, 0x1d, 0x94, 0x6c, 0xa9, - 0x76, 0xd1, 0xb6, 0x80, 0x22, 0xd9, 0x49, 0xb2, 0xa6, 0xdb, - 0xed, 0x46, 0xdf, 0x6a, 00, 0x87, 0x65, 0x1b, 0x2a, 0x5d, - 0x94, 0x6c, 0xa0, 0x8, 0x76, 0x1a, 0x36, 0x7a, 0xd4, 0xdb, - 0x7e, 0xb4, 0x6d, 0xa0, 0x8, 0xf6, 0x51, 0xb7, 0xda, 0xa4, - 0xc5, 0x18, 0xa0, 0x8, 0xf6, 0x52, 0x85, 0xc7, 0x15, 0x26, - 0xda, 0x50, 0xb4, 00, 0xc0, 0xb4, 0x6d, 0xa7, 0xed, 0xa0, - 0xa, 00, 0x68, 0x5e, 0x69, 0xdb, 0x69, 0xc0, 0x66, 0x97, - 0x6d, 00, 0x36, 0x97, 0x6, 0x94, 0xc, 0x1a, 0x5a, 00, - 0x40, 0x30, 0x29, 0x68, 0xa3, 0x14, 00, 0x51, 0x4e, 0x3, - 0x8a, 0x31, 0x40, 0x6, 0x28, 0xe9, 0x4b, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x98, 0xa5, 0xa2, 0x80, - 0x13, 0x14, 0x62, 0x96, 0x8a, 00, 0x6e, 0xda, 0x36, 0xd3, - 0xa8, 0xa0, 0x6, 0xed, 0xa3, 0x6d, 0x3a, 0x8a, 00, 0x6e, - 0xda, 0x36, 0xd3, 0xa8, 0xa0, 0x6, 0x91, 0x8a, 0x4a, 0x56, - 0xa4, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, - 0x3, 0x14, 0x62, 0x8a, 0x28, 00, 0xc5, 0x26, 0x5, 0x2d, - 0x14, 00, 0x98, 0x14, 0x60, 0x52, 0xd1, 0x40, 0x9, 0x81, - 0x46, 0x5, 0x2d, 0x14, 00, 0x9b, 0x68, 0xdb, 0x4b, 0x45, - 00, 0x37, 0x14, 0x62, 0x9d, 0x45, 00, 0x37, 0x14, 0x62, - 0x9d, 0x45, 00, 0x37, 0x14, 0x98, 0xa7, 0xd1, 0x40, 0xc, - 0xc5, 0x18, 0xa7, 0xd1, 0x40, 0xd, 0x3, 0x34, 0xb8, 0x14, - 0xb4, 0x50, 0x2, 0x60, 0x51, 0x81, 0x4b, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0xb8, 0xa4, 0xa7, 0xe, 0x94, 00, - 0x80, 0x73, 0x4e, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, - 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, - 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, - 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, - 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0xff, 0xd9, 0}; - -static const unsigned char data_index_html[] = { - /* /index.html */ - 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, - 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, - 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, 0x57, 0x45, 0x42, - 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x64, 0x65, - 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x42, 0x4f, 0x44, 0x59, 0x20, 0x6f, - 0x6e, 0x4c, 0x6f, 0x61, 0x64, 0x3d, 0x22, 0x77, 0x69, 0x6e, - 0x64, 0x6f, 0x77, 0x2e, 0x73, 0x65, 0x74, 0x54, 0x69, 0x6d, - 0x65, 0x6f, 0x75, 0x74, 0x28, 0x26, 0x71, 0x75, 0x6f, 0x74, - 0x3b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x27, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x27, 0x26, 0x71, - 0x75, 0x6f, 0x74, 0x3b, 0x2c, 0x31, 0x30, 0x30, 0x29, 0x22, - 0x62, 0x67, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3d, 0x22, 0x23, - 0x43, 0x43, 0x43, 0x43, 0x66, 0x66, 0x22, 0x3e, 0xa, 0x3c, - 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, - 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xa, 0x4c, - 0x6f, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x69, 0x6e, 0x64, - 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x2e, 0x20, - 0x20, 0x43, 0x6c, 0x69, 0x63, 0x6b, 0x20, 0x3c, 0x61, 0x20, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x68, - 0x65, 0x72, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x69, 0x66, - 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x61, 0x75, 0x74, 0x6f, 0x6d, - 0x61, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x6c, 0x79, 0x20, 0x72, - 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x65, 0x64, 0x2e, - 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xa, 0x3c, - 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xa, 0x3c, 0x2f, 0x62, - 0x6f, 0x64, 0x79, 0x3e, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, - 0x6c, 0x3e, 0xa, 0xa, 0}; - -static const unsigned char data_index_shtml[] = { - /* /index.shtml */ - 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, - 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, - 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, 0x57, 0x45, 0x42, - 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x64, 0x65, - 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x42, 0x4f, 0x44, 0x59, 0x20, 0x6f, - 0x6e, 0x4c, 0x6f, 0x61, 0x64, 0x3d, 0x22, 0x77, 0x69, 0x6e, - 0x64, 0x6f, 0x77, 0x2e, 0x73, 0x65, 0x74, 0x54, 0x69, 0x6d, - 0x65, 0x6f, 0x75, 0x74, 0x28, 0x26, 0x71, 0x75, 0x6f, 0x74, - 0x3b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x27, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x27, 0x26, 0x71, - 0x75, 0x6f, 0x74, 0x3b, 0x2c, 0x32, 0x30, 0x30, 0x30, 0x29, - 0x22, 0x3e, 0xa, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, - 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, - 0x22, 0x3e, 0xa, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, - 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x52, 0x54, 0x4f, 0x53, 0x20, - 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, - 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, - 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6d, - 0x61, 0x67, 0x65, 0x2e, 0x6a, 0x70, 0x67, 0x22, 0x3e, 0x36, - 0x35, 0x4b, 0x20, 0x4a, 0x50, 0x47, 0x3c, 0x2f, 0x61, 0x3e, - 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, - 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, - 0x6d, 0x6c, 0x22, 0x3e, 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, - 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xa, 0x3c, - 0x68, 0x72, 0x3e, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, - 0x3e, 0xa, 0x3c, 0x68, 0x32, 0x3e, 0x54, 0x61, 0x73, 0x6b, - 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, - 0x73, 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0xa, 0x54, 0x68, 0x69, - 0x73, 0x20, 0x70, 0x61, 0x67, 0x65, 0x20, 0x73, 0x68, 0x6f, - 0x77, 0x73, 0x20, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, - 0x61, 0x6c, 0x6c, 0x79, 0x20, 0x67, 0x65, 0x6e, 0x65, 0x72, - 0x61, 0x74, 0x65, 0x64, 0x20, 0x74, 0x61, 0x73, 0x6b, 0x20, - 0x73, 0x74, 0x61, 0x74, 0x65, 0x20, 0x69, 0x6e, 0x66, 0x6f, - 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x20, 0x20, - 0x54, 0x68, 0x65, 0x20, 0x70, 0x61, 0x67, 0x65, 0x20, 0x77, - 0x69, 0x6c, 0x6c, 0x20, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, - 0x68, 0x20, 0x65, 0x76, 0x65, 0x79, 0x20, 0x32, 0x20, 0x73, - 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x2e, 0x3c, 0x70, 0x3e, - 0xa, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, - 0x65, 0x3d, 0x22, 0x63, 0x6f, 0x75, 0x72, 0x69, 0x65, 0x72, - 0x22, 0x3e, 0x3c, 0x70, 0x72, 0x65, 0x3e, 0x54, 0x61, 0x73, - 0x6b, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x53, 0x74, 0x61, 0x74, 0x65, 0x20, 0x20, 0x50, 0x72, - 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x20, 0x20, 0x53, 0x74, - 0x61, 0x63, 0x6b, 0x9, 0x23, 0x3c, 0x62, 0x72, 0x3e, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x3c, 0x62, 0x72, - 0x3e, 0xa, 0x25, 0x21, 0x20, 0x72, 0x74, 0x6f, 0x73, 0x2d, - 0x73, 0x74, 0x61, 0x74, 0x73, 0xa, 0x3c, 0x2f, 0x70, 0x72, - 0x65, 0x3e, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xa, - 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xa, 0x3c, 0x2f, - 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xa, 0x3c, 0x2f, 0x68, 0x74, - 0x6d, 0x6c, 0x3e, 0xa, 0xa, 0}; - -static const unsigned char data_io_shtml[] = { - /* /io.shtml */ - 0x2f, 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, - 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, - 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, 0x57, 0x45, 0x42, - 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x64, 0x65, - 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x42, 0x4f, 0x44, 0x59, 0x3e, 0xa, - 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, - 0x3d, 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xa, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x52, 0x54, 0x4f, 0x53, 0x20, 0x53, 0x74, 0x61, - 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6d, 0x61, 0x67, 0x65, - 0x2e, 0x6a, 0x70, 0x67, 0x22, 0x3e, 0x36, 0x35, 0x4b, 0x20, - 0x4a, 0x50, 0x47, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, - 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, 0x63, 0x70, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x43, 0x6f, 0x6e, - 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, - 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, - 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, - 0x22, 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, - 0x3e, 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0xa, 0x3c, 0x62, - 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xa, 0x3c, 0x68, 0x72, 0x3e, - 0xa, 0x3c, 0x62, 0x3e, 0x4c, 0x45, 0x44, 0x20, 0x61, 0x6e, - 0x64, 0x20, 0x4c, 0x43, 0x44, 0x20, 0x49, 0x4f, 0x3c, 0x2f, - 0x62, 0x3e, 0x3c, 0x62, 0x72, 0x3e, 0xa, 0xa, 0x3c, 0x70, - 0x3e, 0xa, 0x54, 0x68, 0x69, 0x73, 0x20, 0x70, 0x61, 0x67, - 0x65, 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x6e, 0x73, 0x74, 0x72, - 0x61, 0x74, 0x65, 0x73, 0x20, 0x74, 0x77, 0x6f, 0x20, 0x77, - 0x61, 0x79, 0x20, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x20, 0x20, 0x42, - 0x79, 0x20, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x68, - 0x65, 0x20, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x20, 0x62, 0x6f, - 0x78, 0x65, 0x73, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x74, 0x65, - 0x78, 0x74, 0x20, 0x62, 0x6f, 0x78, 0x65, 0x73, 0x20, 0x74, - 0x68, 0x69, 0x73, 0x20, 0x57, 0x45, 0x42, 0x20, 0x69, 0x6e, - 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x20, 0x63, 0x61, - 0x6e, 0x20, 0x69, 0x6e, 0x66, 0x6c, 0x75, 0x65, 0x6e, 0x63, - 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, 0x6f, 0x67, - 0x72, 0x61, 0x6d, 0x20, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, - 0x69, 0x6f, 0x6e, 0x2e, 0x3c, 0x70, 0x3e, 0xa, 0x55, 0x73, - 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x68, 0x65, 0x63, - 0x6b, 0x20, 0x62, 0x6f, 0x78, 0x65, 0x73, 0x20, 0x74, 0x6f, - 0x20, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x20, 0x74, 0x68, - 0x65, 0x20, 0x4c, 0x45, 0x44, 0x27, 0x73, 0x20, 0x74, 0x6f, - 0x20, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6f, 0x6e, 0x20, 0x6f, - 0x72, 0x20, 0x6f, 0x66, 0x66, 0x2c, 0x20, 0x65, 0x6e, 0x74, - 0x65, 0x72, 0x20, 0x74, 0x65, 0x78, 0x74, 0x20, 0x74, 0x6f, - 0x20, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x20, 0x6f, - 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x4c, 0x43, 0x44, 0x2c, - 0x20, 0x74, 0x68, 0x65, 0x6e, 0x20, 0x63, 0x6c, 0x69, 0x63, - 0x6b, 0x20, 0x22, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, - 0x49, 0x4f, 0x22, 0x2e, 0xa, 0xa, 0xa, 0x3c, 0x70, 0x3e, - 0xa, 0x3c, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x6e, 0x61, 0x6d, - 0x65, 0x3d, 0x22, 0x61, 0x46, 0x6f, 0x72, 0x6d, 0x22, 0x20, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3d, 0x22, 0x2f, 0x69, - 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x20, 0x6d, - 0x65, 0x74, 0x68, 0x6f, 0x64, 0x3d, 0x22, 0x67, 0x65, 0x74, - 0x22, 0x3e, 0xa, 0x25, 0x21, 0x20, 0x6c, 0x65, 0x64, 0x2d, - 0x69, 0x6f, 0xa, 0x3c, 0x70, 0x3e, 0xa, 0x3c, 0x69, 0x6e, - 0x70, 0x75, 0x74, 0x20, 0x74, 0x79, 0x70, 0x65, 0x3d, 0x22, - 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x22, 0x20, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x3d, 0x22, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x20, 0x49, 0x4f, 0x22, 0x3e, 0xa, 0x3c, 0x2f, 0x66, - 0x6f, 0x72, 0x6d, 0x3e, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, - 0x70, 0x3e, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, - 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xa, 0x3c, - 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, 0xa, 0}; - -static const unsigned char data_stats_shtml[] = { - /* /stats.shtml */ - 0x2f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, - 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, - 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, 0x57, 0x45, 0x42, - 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x64, 0x65, - 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x42, 0x4f, 0x44, 0x59, 0x20, 0x62, - 0x67, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3d, 0x22, 0x23, 0x43, - 0x43, 0x43, 0x43, 0x66, 0x66, 0x22, 0x3e, 0xa, 0x3c, 0x66, - 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, - 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xa, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, - 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x52, 0x54, 0x4f, 0x53, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, - 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, - 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, - 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, - 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x43, 0x50, 0x20, - 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, - 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, - 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, 0x63, - 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x43, - 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, - 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, - 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, - 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, 0x65, 0x65, 0x72, 0x74, - 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x22, 0x3e, 0x46, - 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, 0x72, - 0x67, 0x20, 0x48, 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, - 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, - 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, - 0x66, 0x3d, 0x22, 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, - 0x6c, 0x22, 0x3e, 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0xa, - 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xa, 0x3c, 0x68, - 0x72, 0x3e, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, - 0xa, 0x3c, 0x68, 0x32, 0x3e, 0x4e, 0x65, 0x74, 0x77, 0x6f, - 0x72, 0x6b, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, - 0x69, 0x63, 0x73, 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0xa, 0x3c, - 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x77, 0x69, 0x64, 0x74, - 0x68, 0x3d, 0x22, 0x33, 0x30, 0x30, 0x22, 0x20, 0x62, 0x6f, - 0x72, 0x64, 0x65, 0x72, 0x3d, 0x22, 0x30, 0x22, 0x3e, 0xa, - 0x3c, 0x74, 0x72, 0x3e, 0x3c, 0x74, 0x64, 0x20, 0x61, 0x6c, - 0x69, 0x67, 0x6e, 0x3d, 0x22, 0x6c, 0x65, 0x66, 0x74, 0x22, - 0x3e, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, - 0x65, 0x3d, 0x22, 0x63, 0x6f, 0x75, 0x72, 0x69, 0x65, 0x72, - 0x22, 0x3e, 0x3c, 0x70, 0x72, 0x65, 0x3e, 0xa, 0x49, 0x50, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x64, - 0x72, 0x6f, 0x70, 0x70, 0x65, 0x64, 0xa, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x72, 0x65, - 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0xa, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x73, 0x65, - 0x6e, 0x74, 0xa, 0x49, 0x50, 0x20, 0x65, 0x72, 0x72, 0x6f, - 0x72, 0x73, 0x20, 0x20, 0x20, 0x20, 0x49, 0x50, 0x20, 0x76, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x2f, 0x68, 0x65, 0x61, - 0x64, 0x65, 0x72, 0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x49, 0x50, 0x20, 0x6c, 0x65, 0x6e, - 0x67, 0x74, 0x68, 0x2c, 0x20, 0x68, 0x69, 0x67, 0x68, 0x20, - 0x62, 0x79, 0x74, 0x65, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x49, 0x50, - 0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x2c, 0x20, 0x6c, - 0x6f, 0x77, 0x20, 0x62, 0x79, 0x74, 0x65, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x49, 0x50, 0x20, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, - 0x6e, 0x74, 0x73, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x48, 0x65, 0x61, - 0x64, 0x65, 0x72, 0x20, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, - 0x75, 0x6d, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x57, 0x72, 0x6f, 0x6e, - 0x67, 0x20, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, - 0xa, 0x49, 0x43, 0x4d, 0x50, 0x9, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x64, - 0x72, 0x6f, 0x70, 0x70, 0x65, 0x64, 0xa, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x72, 0x65, - 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0xa, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x73, 0x65, - 0x6e, 0x74, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x54, 0x79, 0x70, 0x65, - 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0xa, 0x54, 0x43, - 0x50, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x64, - 0x72, 0x6f, 0x70, 0x70, 0x65, 0x64, 0xa, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x72, 0x65, - 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0xa, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x73, 0x65, - 0x6e, 0x74, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x43, 0x68, 0x65, 0x63, - 0x6b, 0x73, 0x75, 0x6d, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, - 0x73, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x44, 0x61, 0x74, 0x61, 0x20, - 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x77, 0x69, - 0x74, 0x68, 0x6f, 0x75, 0x74, 0x20, 0x41, 0x43, 0x4b, 0x73, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x52, 0x65, 0x73, 0x65, 0x74, 0x73, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x52, 0x65, 0x74, 0x72, 0x61, 0x6e, - 0x73, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0xa, - 0x9, 0x20, 0x20, 0x20, 0x20, 0x20, 0x4e, 0x6f, 0x20, 0x63, - 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, - 0x61, 0x76, 0x61, 0x6c, 0x69, 0x61, 0x62, 0x6c, 0x65, 0xa, - 0x9, 0x20, 0x20, 0x20, 0x20, 0x20, 0x43, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x61, 0x74, 0x74, - 0x65, 0x6d, 0x70, 0x74, 0x73, 0x20, 0x74, 0x6f, 0x20, 0x63, - 0x6c, 0x6f, 0x73, 0x65, 0x64, 0x20, 0x70, 0x6f, 0x72, 0x74, - 0x73, 0xa, 0x3c, 0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, 0x2f, - 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0x3c, 0x2f, 0x74, 0x64, 0x3e, - 0x3c, 0x74, 0x64, 0x3e, 0x3c, 0x70, 0x72, 0x65, 0x3e, 0x25, - 0x21, 0x20, 0x6e, 0x65, 0x74, 0x2d, 0x73, 0x74, 0x61, 0x74, - 0x73, 0xa, 0x3c, 0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, 0x2f, - 0x74, 0x61, 0x62, 0x6c, 0x65, 0x3e, 0xa, 0x3c, 0x2f, 0x66, - 0x6f, 0x6e, 0x74, 0x3e, 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, - 0x79, 0x3e, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xa, 0}; - -static const unsigned char data_tcp_shtml[] = { - /* /tcp.shtml */ - 0x2f, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, - 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, - 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, 0x57, 0x45, 0x42, - 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x64, 0x65, - 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x42, 0x4f, 0x44, 0x59, 0x3e, 0xa, - 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, - 0x3d, 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xa, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x52, 0x54, 0x4f, 0x53, 0x20, 0x53, 0x74, 0x61, - 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6d, 0x61, 0x67, 0x65, - 0x2e, 0x6a, 0x70, 0x67, 0x22, 0x3e, 0x36, 0x35, 0x4b, 0x20, - 0x4a, 0x50, 0x47, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, - 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, 0x63, 0x70, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x43, 0x6f, 0x6e, - 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, - 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, - 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, - 0x22, 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, - 0x3e, 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0xa, 0x3c, 0x62, - 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xa, 0x3c, 0x68, 0x72, 0x3e, - 0xa, 0x3c, 0x62, 0x72, 0x3e, 0xa, 0x3c, 0x68, 0x32, 0x3e, - 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x20, 0x63, 0x6f, - 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c, - 0x2f, 0x68, 0x32, 0x3e, 0xa, 0x54, 0x68, 0x69, 0x73, 0x20, - 0x70, 0x61, 0x67, 0x65, 0x20, 0x64, 0x69, 0x73, 0x70, 0x6c, - 0x61, 0x79, 0x73, 0x20, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, - 0x63, 0x61, 0x6c, 0x6c, 0x79, 0x20, 0x67, 0x65, 0x6e, 0x65, - 0x72, 0x61, 0x74, 0x65, 0x64, 0x20, 0x73, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x20, 0x69, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6f, 0x6e, 0x20, 0x74, 0x68, - 0x65, 0x20, 0x54, 0x43, 0x50, 0x2f, 0x49, 0x50, 0x20, 0x63, - 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x2e, 0xa, 0x3c, 0x70, 0x3e, 0xa, 0x3c, 0x74, 0x61, 0x62, - 0x6c, 0x65, 0x3e, 0xa, 0x3c, 0x74, 0x72, 0x3e, 0x3c, 0x74, - 0x68, 0x3e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x3c, 0x2f, 0x74, - 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x52, 0x65, 0x6d, 0x6f, - 0x74, 0x65, 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, - 0x3e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x3c, 0x2f, 0x74, 0x68, - 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x52, 0x65, 0x74, 0x72, 0x61, - 0x6e, 0x73, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, - 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x54, - 0x69, 0x6d, 0x65, 0x72, 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, - 0x74, 0x68, 0x3e, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x3c, 0x2f, - 0x74, 0x68, 0x3e, 0x3c, 0x2f, 0x74, 0x72, 0x3e, 0xa, 0x25, - 0x21, 0x20, 0x74, 0x63, 0x70, 0x2d, 0x63, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0xa, 0x3c, 0x2f, - 0x70, 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, - 0x3e, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xa, - 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xa, 0x3c, 0x2f, - 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, 0xa, 0}; - -const struct httpd_fsdata_file file_404_html[] = {{NULL, data_404_html, data_404_html + 10, sizeof(data_404_html) - 10}}; - -const struct httpd_fsdata_file file_image_jpg[] = {{file_404_html, data_image_jpg, data_image_jpg + 11, sizeof(data_image_jpg) - 11}}; - -const struct httpd_fsdata_file file_index_html[] = {{file_image_jpg, data_index_html, data_index_html + 12, sizeof(data_index_html) - 12}}; - -const struct httpd_fsdata_file file_index_shtml[] = {{file_index_html, data_index_shtml, data_index_shtml + 13, sizeof(data_index_shtml) - 13}}; - -const struct httpd_fsdata_file file_io_shtml[] = {{file_index_shtml, data_io_shtml, data_io_shtml + 10, sizeof(data_io_shtml) - 10}}; - -const struct httpd_fsdata_file file_stats_shtml[] = {{file_io_shtml, data_stats_shtml, data_stats_shtml + 13, sizeof(data_stats_shtml) - 13}}; - -const struct httpd_fsdata_file file_tcp_shtml[] = {{file_stats_shtml, data_tcp_shtml, data_tcp_shtml + 11, sizeof(data_tcp_shtml) - 11}}; - -#define HTTPD_FS_ROOT file_tcp_shtml - -#define HTTPD_FS_NUMFILES 7 diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/httpd-fsdata.h b/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/httpd-fsdata.h deleted file mode 100644 index 52d35c265..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/httpd-fsdata.h +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright (c) 2001, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - * $Id: httpd-fsdata.h,v 1.1 2006/06/07 09:13:08 adam Exp $ - */ -#ifndef __HTTPD_FSDATA_H__ -#define __HTTPD_FSDATA_H__ - -#include "uip.h" - -struct httpd_fsdata_file { - const struct httpd_fsdata_file *next; - const char *name; - const char *data; - const int len; -#ifdef HTTPD_FS_STATISTICS -#if HTTPD_FS_STATISTICS == 1 - u16_t count; -#endif /* HTTPD_FS_STATISTICS */ -#endif /* HTTPD_FS_STATISTICS */ -}; - -struct httpd_fsdata_file_noconst { - struct httpd_fsdata_file *next; - char *name; - char *data; - int len; -#ifdef HTTPD_FS_STATISTICS -#if HTTPD_FS_STATISTICS == 1 - u16_t count; -#endif /* HTTPD_FS_STATISTICS */ -#endif /* HTTPD_FS_STATISTICS */ -}; - -#endif /* __HTTPD_FSDATA_H__ */ diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/httpd.c b/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/httpd.c deleted file mode 100644 index 644cf16b7..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/httpd.c +++ /dev/null @@ -1,346 +0,0 @@ -/** - * \addtogroup apps - * @{ - */ - -/** - * \defgroup httpd Web server - * @{ - * The uIP web server is a very simplistic implementation of an HTTP - * server. It can serve web pages and files from a read-only ROM - * filesystem, and provides a very small scripting language. - - */ - -/** - * \file - * Web server - * \author - * Adam Dunkels - */ - - -/* - * Copyright (c) 2004, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * Author: Adam Dunkels - * - * $Id: httpd.c,v 1.2 2006/06/11 21:46:38 adam Exp $ - */ - -#include "uip.h" -#include "httpd.h" -#include "httpd-fs.h" -#include "httpd-cgi.h" -#include "http-strings.h" - -#include - -#define STATE_WAITING 0 -#define STATE_OUTPUT 1 - -#define ISO_nl 0x0a -#define ISO_space 0x20 -#define ISO_bang 0x21 -#define ISO_percent 0x25 -#define ISO_period 0x2e -#define ISO_slash 0x2f -#define ISO_colon 0x3a - - -/*---------------------------------------------------------------------------*/ -static unsigned short -generate_part_of_file(void *state) -{ - struct httpd_state *s = (struct httpd_state *)state; - - if(s->file.len > uip_mss()) { - s->len = uip_mss(); - } else { - s->len = s->file.len; - } - memcpy(uip_appdata, s->file.data, s->len); - - return s->len; -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(send_file(struct httpd_state *s)) -{ - PSOCK_BEGIN(&s->sout); - - do { - PSOCK_GENERATOR_SEND(&s->sout, generate_part_of_file, s); - s->file.len -= s->len; - s->file.data += s->len; - } while(s->file.len > 0); - - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(send_part_of_file(struct httpd_state *s)) -{ - PSOCK_BEGIN(&s->sout); - - PSOCK_SEND(&s->sout, s->file.data, s->len); - - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -static void -next_scriptstate(struct httpd_state *s) -{ - char *p; - p = strchr(s->scriptptr, ISO_nl) + 1; - s->scriptlen -= (unsigned short)(p - s->scriptptr); - s->scriptptr = p; -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(handle_script(struct httpd_state *s)) -{ - char *ptr; - - PT_BEGIN(&s->scriptpt); - - - while(s->file.len > 0) { - - /* Check if we should start executing a script. */ - if(*s->file.data == ISO_percent && - *(s->file.data + 1) == ISO_bang) { - s->scriptptr = s->file.data + 3; - s->scriptlen = s->file.len - 3; - if(*(s->scriptptr - 1) == ISO_colon) { - httpd_fs_open(s->scriptptr + 1, &s->file); - PT_WAIT_THREAD(&s->scriptpt, send_file(s)); - } else { - PT_WAIT_THREAD(&s->scriptpt, - httpd_cgi(s->scriptptr)(s, s->scriptptr)); - } - next_scriptstate(s); - - /* The script is over, so we reset the pointers and continue - sending the rest of the file. */ - s->file.data = s->scriptptr; - s->file.len = s->scriptlen; - } else { - /* See if we find the start of script marker in the block of HTML - to be sent. */ - - if(s->file.len > uip_mss()) { - s->len = uip_mss(); - } else { - s->len = s->file.len; - } - - if(*s->file.data == ISO_percent) { - ptr = strchr(s->file.data + 1, ISO_percent); - } else { - ptr = strchr(s->file.data, ISO_percent); - } - if(ptr != NULL && - ptr != s->file.data) { - s->len = (int)(ptr - s->file.data); - if(s->len >= uip_mss()) { - s->len = uip_mss(); - } - } - PT_WAIT_THREAD(&s->scriptpt, send_part_of_file(s)); - s->file.data += s->len; - s->file.len -= s->len; - - } - } - - PT_END(&s->scriptpt); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(send_headers(struct httpd_state *s, const char *statushdr)) -{ - char *ptr; - - PSOCK_BEGIN(&s->sout); - - PSOCK_SEND_STR(&s->sout, statushdr); - - ptr = strrchr(s->filename, ISO_period); - if(ptr == NULL) { - PSOCK_SEND_STR(&s->sout, http_content_type_binary); - } else if(strncmp(http_html, ptr, 5) == 0 || - strncmp(http_shtml, ptr, 6) == 0) { - PSOCK_SEND_STR(&s->sout, http_content_type_html); - } else if(strncmp(http_css, ptr, 4) == 0) { - PSOCK_SEND_STR(&s->sout, http_content_type_css); - } else if(strncmp(http_png, ptr, 4) == 0) { - PSOCK_SEND_STR(&s->sout, http_content_type_png); - } else if(strncmp(http_gif, ptr, 4) == 0) { - PSOCK_SEND_STR(&s->sout, http_content_type_gif); - } else if(strncmp(http_jpg, ptr, 4) == 0) { - PSOCK_SEND_STR(&s->sout, http_content_type_jpg); - } else { - PSOCK_SEND_STR(&s->sout, http_content_type_plain); - } - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(handle_output(struct httpd_state *s)) -{ - char *ptr; - - PT_BEGIN(&s->outputpt); - - if(!httpd_fs_open(s->filename, &s->file)) { - httpd_fs_open(http_404_html, &s->file); - strcpy(s->filename, http_404_html); - PT_WAIT_THREAD(&s->outputpt, - send_headers(s, - http_header_404)); - PT_WAIT_THREAD(&s->outputpt, - send_file(s)); - } else { - PT_WAIT_THREAD(&s->outputpt, - send_headers(s, - http_header_200)); - ptr = strchr(s->filename, ISO_period); - if(ptr != NULL && strncmp(ptr, http_shtml, 6) == 0) { - PT_INIT(&s->scriptpt); - PT_WAIT_THREAD(&s->outputpt, handle_script(s)); - } else { - PT_WAIT_THREAD(&s->outputpt, - send_file(s)); - } - } - PSOCK_CLOSE(&s->sout); - PT_END(&s->outputpt); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(handle_input(struct httpd_state *s)) -{ - PSOCK_BEGIN(&s->sin); - - PSOCK_READTO(&s->sin, ISO_space); - - - if(strncmp(s->inputbuf, http_get, 4) != 0) { - PSOCK_CLOSE_EXIT(&s->sin); - } - PSOCK_READTO(&s->sin, ISO_space); - - if(s->inputbuf[0] != ISO_slash) { - PSOCK_CLOSE_EXIT(&s->sin); - } - - if(s->inputbuf[1] == ISO_space) { - strncpy(s->filename, http_index_html, sizeof(s->filename)); - } else { - - s->inputbuf[PSOCK_DATALEN(&s->sin) - 1] = 0; - - /* Process any form input being sent to the server. */ - { - extern void vApplicationProcessFormInput( char *pcInputString, long xInputLength ); - vApplicationProcessFormInput( s->inputbuf, PSOCK_DATALEN(&s->sin) ); - } - - strncpy(s->filename, &s->inputbuf[0], sizeof(s->filename)); - } - - /* httpd_log_file(uip_conn->ripaddr, s->filename);*/ - - s->state = STATE_OUTPUT; - - while(1) { - PSOCK_READTO(&s->sin, ISO_nl); - - if(strncmp(s->inputbuf, http_referer, 8) == 0) { - s->inputbuf[PSOCK_DATALEN(&s->sin) - 2] = 0; - /* httpd_log(&s->inputbuf[9]);*/ - } - } - - PSOCK_END(&s->sin); -} -/*---------------------------------------------------------------------------*/ -static void -handle_connection(struct httpd_state *s) -{ - handle_input(s); - if(s->state == STATE_OUTPUT) { - handle_output(s); - } -} -/*---------------------------------------------------------------------------*/ -void -httpd_appcall(void) -{ - struct httpd_state *s = (struct httpd_state *)&(uip_conn->appstate); - - if(uip_closed() || uip_aborted() || uip_timedout()) { - } else if(uip_connected()) { - PSOCK_INIT(&s->sin, s->inputbuf, sizeof(s->inputbuf) - 1); - PSOCK_INIT(&s->sout, s->inputbuf, sizeof(s->inputbuf) - 1); - PT_INIT(&s->outputpt); - s->state = STATE_WAITING; - /* timer_set(&s->timer, CLOCK_SECOND * 100);*/ - s->timer = 0; - handle_connection(s); - } else if(s != NULL) { - if(uip_poll()) { - ++s->timer; - if(s->timer >= 20) { - uip_abort(); - } - } else { - s->timer = 0; - } - handle_connection(s); - } else { - uip_abort(); - } -} -/*---------------------------------------------------------------------------*/ -/** - * \brief Initialize the web server - * - * This function initializes the web server and should be - * called at system boot-up. - */ -void -httpd_init(void) -{ - uip_listen(HTONS(80)); -} -/*---------------------------------------------------------------------------*/ -/** @} */ diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/httpd.h b/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/httpd.h deleted file mode 100644 index 7f7a6666e..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/httpd.h +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright (c) 2001-2005, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: httpd.h,v 1.2 2006/06/11 21:46:38 adam Exp $ - * - */ - -#ifndef __HTTPD_H__ -#define __HTTPD_H__ - -#include "psock.h" -#include "httpd-fs.h" - -struct httpd_state { - unsigned char timer; - struct psock sin, sout; - struct pt outputpt, scriptpt; - char inputbuf[50]; - char filename[20]; - char state; - struct httpd_fs_file file; - int len; - char *scriptptr; - int scriptlen; - - unsigned short count; -}; - -void httpd_init(void); -void httpd_appcall(void); - -void httpd_log(char *msg); -void httpd_log_file(u16_t *requester, char *file); - -#endif /* __HTTPD_H__ */ diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/makefsdata b/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/makefsdata deleted file mode 100644 index 8d2715a8a..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/makefsdata +++ /dev/null @@ -1,78 +0,0 @@ -#!/usr/bin/perl - -open(OUTPUT, "> httpd-fsdata.c"); - -chdir("httpd-fs"); - -opendir(DIR, "."); -@files = grep { !/^\./ && !/(CVS|~)/ } readdir(DIR); -closedir(DIR); - -foreach $file (@files) { - - if(-d $file && $file !~ /^\./) { - print "Processing directory $file\n"; - opendir(DIR, $file); - @newfiles = grep { !/^\./ && !/(CVS|~)/ } readdir(DIR); - closedir(DIR); - printf "Adding files @newfiles\n"; - @files = (@files, map { $_ = "$file/$_" } @newfiles); - next; - } -} - -foreach $file (@files) { - if(-f $file) { - - print "Adding file $file\n"; - - open(FILE, $file) || die "Could not open file $file\n"; - - $file =~ s-^-/-; - $fvar = $file; - $fvar =~ s-/-_-g; - $fvar =~ s-\.-_-g; - # for AVR, add PROGMEM here - print(OUTPUT "static const unsigned char data".$fvar."[] = {\n"); - print(OUTPUT "\t/* $file */\n\t"); - for($j = 0; $j < length($file); $j++) { - printf(OUTPUT "%#02x, ", unpack("C", substr($file, $j, 1))); - } - printf(OUTPUT "0,\n"); - - - $i = 0; - while(read(FILE, $data, 1)) { - if($i == 0) { - print(OUTPUT "\t"); - } - printf(OUTPUT "%#02x, ", unpack("C", $data)); - $i++; - if($i == 10) { - print(OUTPUT "\n"); - $i = 0; - } - } - print(OUTPUT "0};\n\n"); - close(FILE); - push(@fvars, $fvar); - push(@pfiles, $file); - } -} - -for($i = 0; $i < @fvars; $i++) { - $file = $pfiles[$i]; - $fvar = $fvars[$i]; - - if($i == 0) { - $prevfile = "NULL"; - } else { - $prevfile = "file" . $fvars[$i - 1]; - } - print(OUTPUT "const struct httpd_fsdata_file file".$fvar."[] = {{$prevfile, data$fvar, "); - print(OUTPUT "data$fvar + ". (length($file) + 1) .", "); - print(OUTPUT "sizeof(data$fvar) - ". (length($file) + 1) ."}};\n\n"); -} - -print(OUTPUT "#define HTTPD_FS_ROOT file$fvars[$i - 1]\n\n"); -print(OUTPUT "#define HTTPD_FS_NUMFILES $i\n"); diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/makestrings b/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/makestrings deleted file mode 100644 index 8a13c6d29..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/makestrings +++ /dev/null @@ -1,40 +0,0 @@ -#!/usr/bin/perl - - -sub stringify { - my $name = shift(@_); - open(OUTPUTC, "> $name.c"); - open(OUTPUTH, "> $name.h"); - - open(FILE, "$name"); - - while() { - if(/(.+) "(.+)"/) { - $var = $1; - $data = $2; - - $datan = $data; - $datan =~ s/\\r/\r/g; - $datan =~ s/\\n/\n/g; - $datan =~ s/\\01/\01/g; - $datan =~ s/\\0/\0/g; - - printf(OUTPUTC "const char $var\[%d] = \n", length($datan) + 1); - printf(OUTPUTC "/* \"$data\" */\n"); - printf(OUTPUTC "{"); - for($j = 0; $j < length($datan); $j++) { - printf(OUTPUTC "%#02x, ", unpack("C", substr($datan, $j, 1))); - } - printf(OUTPUTC "};\n"); - - printf(OUTPUTH "extern const char $var\[%d];\n", length($datan) + 1); - - } - } - close(OUTPUTC); - close(OUTPUTH); -} -stringify("http-strings"); - -exit 0; - diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/uIP_Task.c b/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/uIP_Task.c deleted file mode 100644 index 2bab3ab01..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/uIP_Task.c +++ /dev/null @@ -1,324 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ -/* Standard includes. */ -#include - -/* Scheduler includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "semphr.h" - -/* uip includes. */ -#include "uip.h" -#include "uip_arp.h" -#include "httpd.h" -#include "timer.h" -#include "clock-arch.h" - -/* Demo includes. */ -#include "emac.h" -#include "partest.h" - -/*-----------------------------------------------------------*/ - -/* MAC address configuration. */ -#define uipMAC_ADDR0 0x00 -#define uipMAC_ADDR1 0x12 -#define uipMAC_ADDR2 0x13 -#define uipMAC_ADDR3 0x10 -#define uipMAC_ADDR4 0x15 -#define uipMAC_ADDR5 0x11 - -/* IP address configuration. */ -#define uipIP_ADDR0 192 -#define uipIP_ADDR1 168 -#define uipIP_ADDR2 0 -#define uipIP_ADDR3 200 - -/* How long to wait before attempting to connect the MAC again. */ -#define uipINIT_WAIT 200 - -/* Shortcut to the header within the Rx buffer. */ -#define xHeader ((struct uip_eth_hdr *) &uip_buf[ 0 ]) - -/* Standard constant. */ -#define uipTOTAL_FRAME_HEADER_SIZE 54 - -/*-----------------------------------------------------------*/ - -/* - * Send the uIP buffer to the MAC. - */ -static void prvENET_Send(void); - -/* - * Setup the MAC address in the MAC itself, and in the uIP stack. - */ -static void prvSetMACAddress( void ); - -/* - * Port functions required by the uIP stack. - */ -void clock_init( void ); -clock_time_t clock_time( void ); - -/*-----------------------------------------------------------*/ - -/* The semaphore used by the ISR to wake the uIP task. */ -extern SemaphoreHandle_t xEMACSemaphore; - -/*-----------------------------------------------------------*/ - -void clock_init(void) -{ - /* This is done when the scheduler starts. */ -} -/*-----------------------------------------------------------*/ - -clock_time_t clock_time( void ) -{ - return xTaskGetTickCount(); -} -/*-----------------------------------------------------------*/ - -void vuIP_Task( void *pvParameters ) -{ -portBASE_TYPE i; -uip_ipaddr_t xIPAddr; -struct timer periodic_timer, arp_timer; -extern void ( vEMAC_ISR_Wrapper )( void ); - - /* Create the semaphore used by the ISR to wake this task. */ - vSemaphoreCreateBinary( xEMACSemaphore ); - - /* Initialise the uIP stack. */ - timer_set( &periodic_timer, configTICK_RATE_HZ / 2 ); - timer_set( &arp_timer, configTICK_RATE_HZ * 10 ); - uip_init(); - uip_ipaddr( xIPAddr, uipIP_ADDR0, uipIP_ADDR1, uipIP_ADDR2, uipIP_ADDR3 ); - uip_sethostaddr( xIPAddr ); - httpd_init(); - - /* Initialise the MAC. */ - while( Init_EMAC() != pdPASS ) - { - vTaskDelay( uipINIT_WAIT ); - } - - portENTER_CRITICAL(); - { - IntEnable = INT_RX_DONE; - VICIntEnable |= 0x00200000; - VICVectAddr21 = ( long ) vEMAC_ISR_Wrapper; - prvSetMACAddress(); - } - portEXIT_CRITICAL(); - - - for( ;; ) - { - /* Is there received data ready to be processed? */ - uip_len = uiGetEMACRxData( uip_buf ); - - if( uip_len > 0 ) - { - /* Standard uIP loop taken from the uIP manual. */ - if( xHeader->type == htons( UIP_ETHTYPE_IP ) ) - { - uip_arp_ipin(); - uip_input(); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - uip_arp_out(); - prvENET_Send(); - } - } - else if( xHeader->type == htons( UIP_ETHTYPE_ARP ) ) - { - uip_arp_arpin(); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - prvENET_Send(); - } - } - } - else - { - if( timer_expired( &periodic_timer ) ) - { - timer_reset( &periodic_timer ); - for( i = 0; i < UIP_CONNS; i++ ) - { - uip_periodic( i ); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - uip_arp_out(); - prvENET_Send(); - } - } - - /* Call the ARP timer function every 10 seconds. */ - if( timer_expired( &arp_timer ) ) - { - timer_reset( &arp_timer ); - uip_arp_timer(); - } - } - else - { - /* We did not receive a packet, and there was no periodic - processing to perform. Block for a fixed period. If a packet - is received during this period we will be woken by the ISR - giving us the Semaphore. */ - xSemaphoreTake( xEMACSemaphore, configTICK_RATE_HZ / 2 ); - } - } - } -} -/*-----------------------------------------------------------*/ - -static void prvENET_Send(void) -{ - RequestSend(); - - /* Copy the header into the Tx buffer. */ - CopyToFrame_EMAC( uip_buf, uipTOTAL_FRAME_HEADER_SIZE ); - if( uip_len > uipTOTAL_FRAME_HEADER_SIZE ) - { - CopyToFrame_EMAC( uip_appdata, ( uip_len - uipTOTAL_FRAME_HEADER_SIZE ) ); - } - - DoSend_EMAC( uip_len ); - - RequestSend(); - - /* Copy the header into the Tx buffer. */ - CopyToFrame_EMAC( uip_buf, uipTOTAL_FRAME_HEADER_SIZE ); - if( uip_len > uipTOTAL_FRAME_HEADER_SIZE ) - { - CopyToFrame_EMAC( uip_appdata, ( uip_len - uipTOTAL_FRAME_HEADER_SIZE ) ); - } - - DoSend_EMAC( uip_len ); -} -/*-----------------------------------------------------------*/ - -static void prvSetMACAddress( void ) -{ -struct uip_eth_addr xAddr; - - /* Configure the MAC address in the uIP stack. */ - xAddr.addr[ 0 ] = uipMAC_ADDR0; - xAddr.addr[ 1 ] = uipMAC_ADDR1; - xAddr.addr[ 2 ] = uipMAC_ADDR2; - xAddr.addr[ 3 ] = uipMAC_ADDR3; - xAddr.addr[ 4 ] = uipMAC_ADDR4; - xAddr.addr[ 5 ] = uipMAC_ADDR5; - uip_setethaddr( xAddr ); -} -/*-----------------------------------------------------------*/ - -void vApplicationProcessFormInput( char *pcInputString, portBASE_TYPE xInputLength ) -{ -char *c, *pcText; -static char cMessageForDisplay[ 32 ]; -extern QueueHandle_t xLCDQueue; -xLCDMessage xLCDMessage; - - /* Process the form input sent by the IO page of the served HTML. */ - - c = strstr( pcInputString, "?" ); - if( c ) - { - /* Turn LED's on or off in accordance with the check box status. */ - if( strstr( c, "LED0=1" ) != NULL ) - { - vParTestSetLED( 5, 0 ); - } - else - { - vParTestSetLED( 5, 1 ); - } - - if( strstr( c, "LED1=1" ) != NULL ) - { - vParTestSetLED( 6, 0 ); - } - else - { - vParTestSetLED( 6, 1 ); - } - - if( strstr( c, "LED2=1" ) != NULL ) - { - vParTestSetLED( 7, 0 ); - } - else - { - vParTestSetLED( 7, 1 ); - } - - /* Find the start of the text to be displayed on the LCD. */ - pcText = strstr( c, "LCD=" ); - pcText += strlen( "LCD=" ); - - /* Terminate the file name for further processing within uIP. */ - *c = 0x00; - - /* Terminate the LCD string. */ - c = strstr( pcText, " " ); - if( c != NULL ) - { - *c = 0x00; - } - - /* Add required spaces. */ - while( ( c = strstr( pcText, "+" ) ) != NULL ) - { - *c = ' '; - } - - /* Write the message to the LCD. */ - strcpy( cMessageForDisplay, pcText ); - xLCDMessage.xColumn = 0; - xLCDMessage.pcMessage = cMessageForDisplay; - xQueueSend( xLCDQueue, &xLCDMessage, portMAX_DELAY ); - } -} - diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/uip-conf.h b/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/uip-conf.h deleted file mode 100644 index 3e6f7f381..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/uip-conf.h +++ /dev/null @@ -1,157 +0,0 @@ -/** - * \addtogroup uipopt - * @{ - */ - -/** - * \name Project-specific configuration options - * @{ - * - * uIP has a number of configuration options that can be overridden - * for each project. These are kept in a project-specific uip-conf.h - * file and all configuration names have the prefix UIP_CONF. - */ - -/* - * Copyright (c) 2006, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: uip-conf.h,v 1.6 2006/06/12 08:00:31 adam Exp $ - */ - -/** - * \file - * An example uIP configuration file - * \author - * Adam Dunkels - */ - -#ifndef __UIP_CONF_H__ -#define __UIP_CONF_H__ - -#include - -/** - * 8 bit datatype - * - * This typedef defines the 8-bit type used throughout uIP. - * - * \hideinitializer - */ -typedef uint8_t u8_t; - -/** - * 16 bit datatype - * - * This typedef defines the 16-bit type used throughout uIP. - * - * \hideinitializer - */ -typedef uint16_t u16_t; - -/** - * Statistics datatype - * - * This typedef defines the dataype used for keeping statistics in - * uIP. - * - * \hideinitializer - */ -typedef unsigned short uip_stats_t; - -/** - * Maximum number of TCP connections. - * - * \hideinitializer - */ -#define UIP_CONF_MAX_CONNECTIONS 40 - -/** - * Maximum number of listening TCP ports. - * - * \hideinitializer - */ -#define UIP_CONF_MAX_LISTENPORTS 40 - -/** - * uIP buffer size. - * - * \hideinitializer - */ -#define UIP_CONF_BUFFER_SIZE 1480 - -/** - * CPU byte order. - * - * \hideinitializer - */ -#define UIP_CONF_BYTE_ORDER LITTLE_ENDIAN - -/** - * Logging on or off - * - * \hideinitializer - */ -#define UIP_CONF_LOGGING 0 - -/** - * UDP support on or off - * - * \hideinitializer - */ -#define UIP_CONF_UDP 0 - -/** - * UDP checksums on or off - * - * \hideinitializer - */ -#define UIP_CONF_UDP_CHECKSUMS 1 - -/** - * uIP statistics on or off - * - * \hideinitializer - */ -#define UIP_CONF_STATISTICS 1 - -/* Here we include the header file for the application(s) we use in - our project. */ -/*#include "smtp.h"*/ -/*#include "hello-world.h"*/ -/*#include "telnetd.h"*/ -#include "webserver.h" -/*#include "dhcpc.h"*/ -/*#include "resolv.h"*/ -/*#include "webclient.h"*/ - -#endif /* __UIP_CONF_H__ */ - -/** @} */ -/** @} */ diff --git a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/webserver.h b/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/webserver.h deleted file mode 100644 index 1acb290b8..000000000 --- a/FreeRTOS/Demo/ARM7_LPC2368_Rowley/webserver/webserver.h +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright (c) 2002, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials provided - * with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: webserver.h,v 1.2 2006/06/11 21:46:38 adam Exp $ - * - */ -#ifndef __WEBSERVER_H__ -#define __WEBSERVER_H__ - -#include "httpd.h" - -typedef struct httpd_state uip_tcp_appstate_t; -/* UIP_APPCALL: the name of the application function. This function - must return void and take no arguments (i.e., C type "void - appfunc(void)"). */ -#ifndef UIP_APPCALL -#define UIP_APPCALL httpd_appcall -#endif - - -#endif /* __WEBSERVER_H__ */ diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/91x_init.s b/FreeRTOS/Demo/ARM9_STR91X_IAR/91x_init.s deleted file mode 100644 index 6c74e5272..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/91x_init.s +++ /dev/null @@ -1,242 +0,0 @@ -;******************** (C) COPYRIGHT 2006 STMicroelectronics ******************** -;* File Name : 91x_init.s -;* Author : MCD Application Team -;* Date First Issued : 05/18/2006 : Version 1.0 -;* Description : This module performs: -;* - FLASH/RAM initialization, -;* - Stack pointer initialization for each mode , -;* - Branches to ?main in the C library (which eventually -;* calls main()). -;* -;* On reset, the ARM core starts up in Supervisor (SVC) mode, -;* in ARM state,with IRQ and FIQ disabled. -;******************************************************************************* -;* History: -;* 05/22/2007 : Version 1.2 -;* 05/24/2006 : Version 1.1 -;* 05/18/2006 : Version 1.0 -;******************************************************************************* -;* THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH -;* CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS -;* A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, INDIRECT -;* OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT -;* OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION -;* CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. -;******************************************************************************/ - -; At power up, the CPU defaults to run on the oscillator clock, so Depending -; of your Application, Disable or Enable the following Define - - #define PLL_Clock ; Use PLL as the default clock source @ 96 MHz only with - ; Bank 0 @ 0x0 and Bank 1 @ 0x80000 -; #define RTC_Clock ; Use RTC as the default clock source -; #define OSC_Clock ; Use OSC as the default clock source - - -; --- Standard definitions of mode bits and interrupt (I & F) flags in PSRs - -Mode_USR EQU 0x10 -Mode_FIQ EQU 0x11 -Mode_IRQ EQU 0x12 -Mode_SVC EQU 0x13 -Mode_ABT EQU 0x17 -Mode_UND EQU 0x1B -Mode_SYS EQU 0x1F ; available on ARM Arch 4 and later - -I_Bit EQU 0x80 ; when I bit is set, IRQ is disabled -F_Bit EQU 0x40 ; when F bit is set, FIQ is disabled - - - -; --- STR9X SCU specific definitions - -SCU_BASE_Address EQU 0x5C002000 ; SCU Base Address -SCU_CLKCNTR_OFST EQU 0x00000000 ; Clock Control register Offset -SCU_PLLCONF_OFST EQU 0x00000004 ; PLL Configuration register Offset -SCU_SYSSTATUS_OFST EQU 0x00000008 ; System Status Register Offset -SCU_SCR0_OFST EQU 0x00000034 ; System Configuration Register 0 Offset - -; --- STR9X FMI specific definitions - -FMI_BASE_Address EQU 0x54000000 ; FMI Base Address -FMI_BBSR_OFST EQU 0x00000000 ; Boot Bank Size Register -FMI_NBBSR_OFST EQU 0x00000004 ; Non-boot Bank Size Register -FMI_BBADR_OFST EQU 0x0000000C ; Boot Bank Base Address Register -FMI_NBBADR_OFST EQU 0x00000010 ; Non-boot Bank Base Address Register -FMI_CR_OFST EQU 0x00000018 ; Control Register - -;--------------------------------------------------------------- -; ?program_start -;--------------------------------------------------------------- - MODULE ?program_start - - SECTION IRQ_STACK:DATA:NOROOT(3) - SECTION FIQ_STACK:DATA:NOROOT(3) - SECTION UND_STACK:DATA:NOROOT(3) - SECTION ABT_STACK:DATA:NOROOT(3) - SECTION SVC_STACK:DATA:NOROOT(3) - SECTION CSTACK:DATA:NOROOT(3) - SECTION .icode:CODE:NOROOT(2) - PUBLIC __iar_program_start - EXTERN ?main - CODE32 - -__iar_program_start: - LDR pc, =NextInst - - -NextInst - - - NOP ; execute some instructions to access CPU registers after wake - NOP ; up from Reset, while waiting for OSC stabilization - NOP - NOP - NOP - NOP - NOP - NOP - NOP - - -; BUFFERED_Mode -; ------------------------------------------------------------------------------ -; Description : Enable the Buffered mode. -; Just enable the buffered define on the 91x_conf.h -; http://www.arm.com/pdfs/DDI0164A_966E_S.pdf -; ------------------------------------------------------------------------------ - - MRC p15, 0, r0, c1, c0, 0 ; Read CP15 register 1 into r0 - ORR r0, r0, #0x8 ; Enable Write Buffer on AHB - MCR p15, 0, r0, c1, c0, 0 ; Write CP15 register 1 - - - -; --- Remap Flash Bank 0 at address 0x0 and Bank 1 at address 0x80000, -; when the bank 0 is the boot bank, then enable the Bank 1. - - LDR R6, =FMI_BASE_Address - - LDR R7, = 0x4 ; BOOT BANK Size = 512KB - STR R7, [R6, #FMI_BBSR_OFST] ; (2^4) * 32 = 512KB - - LDR R7, = 0x2 ; NON BOOT BANK Size = 32KB - STR R7, [R6, #FMI_NBBSR_OFST] ; (2^2) * 8 = 32KB - - LDR R7, = 0x0 ; BOOT BANK Address = 0x0 - STR R7, [R6, #FMI_BBADR_OFST] - - LDR R7, = 0x20000 ; NON BOOT BANK Address = 0x80000 - STR R7, [R6, #FMI_NBBADR_OFST] ; need to put 0x20000 because FMI - ; bus on A[25:2] of CPU bus - - LDR R7, = 0x18 ; Enable CS on both banks - STR R7, [R6, #FMI_CR_OFST] ; LDR R7, = 0x19 ;in RevD - ; to enable 8 words PFQ deepth - -; --- Enable 96K RAM, PFQBC enabled, DTCM & AHB wait-states disabled - LDR R0, = SCU_BASE_Address - LDR R1, = 0x0191 - STR R1, [R0, #SCU_SCR0_OFST] - -; ------------------------------------------------------------------------------ -; --- System clock configuration -; ------------------------------------------------------------------------------ - -#ifdef PLL_Clock ; Use 96 MHZ PLL clock as the default frequency - -; --- wait states Flash confguration - - LDR R6, = 0x00080000 ;Write a Write Flash Configuration - LDR R7, =0x60 ;Register command (60h) to any word - STRH R7, [R6] ;address in Bank 1. - - LDR R6, = 0x00083040 ;Write a Write Flash Configuration - LDR R7, = 0x3 ;Register Confirm command (03h) - STRH R7, [R6] ;2Wstaites in read,PWD,LVD enabled, - ;High BUSCFG. -; --- PLL configuration - LDR R1, = 0x00020002 ;Set OSC as clock source - STR R1, [R0, #SCU_CLKCNTR_OFST ] - - - NOP ; Wait for OSC stabilization - NOP - NOP - NOP - NOP - NOP - NOP - NOP - NOP - NOP - NOP - NOP - - - - - LDR R1, = 0x000ac019 ;Set PLL ENABLE, to 96Mhz - STR R1, [R0, #SCU_PLLCONF_OFST] - -Wait_Loop - LDR R1,[R0, #SCU_SYSSTATUS_OFST] ;Wait until PLL is Locked - ANDS R1, R1, #0x01 - BEQ Wait_Loop - - LDR R1, = 0x00020080 ;Set PLL as clock source after pll - STR R1, [R0, #SCU_CLKCNTR_OFST ] ;is locked and FMICLK=RCLK, - ;PCLK=RCLK/2 -#endif - -#ifdef RTC_Clock ;Use RTC as the default clock source - LDR R1, = 0x00020001 ;Set RTC as clock source and - STR R1, [R0, #SCU_CLKCNTR_OFST ] ;FMICLK=RCLK, PCLK=RCLK -#endif - -#ifdef OSC_Clock ;Use Osc as the default clock source - LDR R1, = 0x00020002 ;Set OSC as clock source and - STR R1, [R0, #SCU_CLKCNTR_OFST ] ;FMICLK=RCLK, PCLK=RCLK -#endif - - -; --- Initialize Stack pointer registers - -; Enter each mode in turn and set up the stack pointer - - MSR CPSR_c, #Mode_FIQ|I_Bit|F_Bit ; No interrupts - LDR SP, =SFE(FIQ_STACK) - - MSR CPSR_c, #Mode_IRQ|I_Bit|F_Bit ; No interrupts - LDR SP, = SFE(IRQ_STACK) - - MSR CPSR_c, #Mode_ABT|I_Bit|F_Bit ; No interrupts - LDR SP, = SFE(ABT_STACK) - - MSR CPSR_c, #Mode_UND|I_Bit|F_Bit ; No interrupts - LDR SP, = SFE(UND_STACK) - - MSR CPSR_c, #Mode_SYS ; IRQs & FIQs are now enabled - LDR SP, = SFE(CSTACK) - - MSR CPSR_c, #Mode_SVC|I_Bit|F_Bit ; No interrupts - LDR SP, = SFE(SVC_STACK) - -; --- Set bits 17-18(DTCM/ITCM order bits)of the Core Configuration Control -; Register - MOV r0, #0x60000 - MCR p15,0x1,r0,c15,c1,0 - -; --- Now enter the C code - B ?main ; Note : use B not BL, because an application will - ; never return this way - - LTORG - - - END -;******************* (C) COPYRIGHT 2006 STMicroelectronics *****END OF FILE**** - - - - diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/91x_init_IAR.s b/FreeRTOS/Demo/ARM9_STR91X_IAR/91x_init_IAR.s deleted file mode 100644 index 1204e0871..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/91x_init_IAR.s +++ /dev/null @@ -1,175 +0,0 @@ -;******************** (C) COPYRIGHT 2006 STMicroelectronics ******************** -;* File Name : 91x_init.s -;* Author : MCD Application Team -;* Date First Issued : 05/18/2006 : Version 1.0 -;* Description : This module performs: -;* - FLASH/RAM initialization, -;* - Stack pointer initialization for each mode , -;* - Branches to ?main in the C library (which eventually -;* calls main()). -;* -;* On reset, the ARM core starts up in Supervisor (SVC) mode, -;* in ARM state,with IRQ and FIQ disabled. -;******************************************************************************* -; History: -; 05/24/2006 : Version 1.1 -; 05/18/2006 : Version 1.0 -;******************************************************************************* -;* THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH -;* CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS -;* A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, INDIRECT -;* OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT -;* OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION -;* CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. -;******************************************************************************/ - -; Depending in Your Application, Disable or Enable the following Define - -; #define BUFFERED_Mode ; Work on Buffered mode, when enabling this define - ; just enable the Buffered define on 91x_conf.h - -; --- Standard definitions of mode bits and interrupt (I & F) flags in PSRs - -Mode_USR EQU 0x10 -Mode_FIQ EQU 0x11 -Mode_IRQ EQU 0x12 -Mode_SVC EQU 0x13 -Mode_ABT EQU 0x17 -Mode_UND EQU 0x1B -Mode_SYS EQU 0x1F ; available on ARM Arch 4 and later - -I_Bit EQU 0x80 ; when I bit is set, IRQ is disabled -F_Bit EQU 0x40 ; when F bit is set, FIQ is disabled - -;--- BASE ADDRESSES -; System memory locations - -SRAM_Base EQU 0x04000000 -SRAM_Limit EQU 0x04018000 ; at the top of 96 KB SRAM - -SVC_Stack DEFINE SRAM_Limit ; 512 byte SVC stack at - ; top of memory - used by kernel. -IRQ_Stack DEFINE SVC_Stack-512 ; followed by IRQ stack -USR_Stack DEFINE IRQ_Stack-512 ; followed by USR stack. Tasks run in - ; system mode but task stacks are allocated - ; when the task is created. -FIQ_Stack DEFINE USR_Stack-8 ; followed by FIQ stack -ABT_Stack DEFINE FIQ_Stack-8 ; followed by ABT stack -UND_Stack DEFINE ABT_Stack-8 ; followed by UNDEF stack - - EXTERN main - -; STR9X register specific definition - -FMI_BBSR_AHB_UB EQU 0x54000000 -FMI_BBADR_AHB_UB EQU 0x5400000C -FMI_NBBSR_AHB_UB EQU 0x54000004 -FMI_NBBADR_AHB_UB EQU 0x54000010 - -SCU_SCRO_APB1_UB EQU 0x4C002034 -SCRO_AHB_UNB EQU 0x5C002034 - - - -;--------------------------------------------------------------- -; ?program_start -;--------------------------------------------------------------- - MODULE ?program_start - RSEG ICODE:CODE(2) - IMPORT LINK - PUBLIC __program_start - EXTERN ?main - CODE32 - - -__program_start: - LDR pc, =NextInst - - -NextInst - - - NOP ; execute some instructions to access CPU registers after wake - NOP ; up from Reset, while waiting for OSC stabilization - NOP - NOP - NOP - NOP - NOP - NOP - NOP - ldr r0,=LINK ; to include the vector table inside the final executable. - - - -; --- Remap Flash Bank 0 at address 0x0 and Bank 1 at address 0x80000, -; when the bank 0 is the boot bank, then enable the Bank 1. - - LDR R6, =0x54000000 - LDR R7, =0x4 - STR R7, [R6] - - LDR R6, =0x54000004 - LDR R7, =0x3 - STR R7, [R6] - - LDR R6, =0x5400000C - LDR R7, =0x0 - STR R7, [R6] - - LDR R6, =0x54000010 - LDR R7, =0x20000 - STR R7, [R6] - - LDR R6, =0x54000018 - LDR R7, =0x18 - STR R7, [R6] - -; --- Enable 96K RAM - LDR R0, = SCRO_AHB_UNB - LDR R1, = 0x0196 - STR R1, [R0] - - - /* Setup a stack for each mode - note that this only sets up a usable stack - for system/user, SWI and IRQ modes. Also each mode is setup with - interrupts initially disabled. */ - - MSR CPSR_c, #Mode_FIQ|I_Bit|F_Bit ; No interrupts - LDR SP, =FIQ_Stack - - MSR CPSR_c, #Mode_IRQ|I_Bit|F_Bit ; No interrupts - LDR SP, =IRQ_Stack - - MSR CPSR_c, #Mode_ABT|I_Bit|F_Bit ; No interrupts - LDR SP, =ABT_Stack - - MSR CPSR_c, #Mode_UND|I_Bit|F_Bit ; No interrupts - LDR SP, =UND_Stack - - MSR CPSR_c, #Mode_SVC|I_Bit|F_Bit ; No interrupts - LDR SP, =SVC_Stack - - MSR CPSR_c, #Mode_SYS|I_Bit|F_Bit ; No interrupts - LDR SP, =USR_Stack - - /* We want to start in supervisor mode. Operation will switch to system - mode when the first task starts. */ - MSR CPSR_c, #Mode_SVC|I_Bit|F_Bit - - -; --- Set bits 17-18 of the Core Configuration Control Register - - MOV r0, #0x60000 - MCR p15,0x1,r0,c15,c1,0 - - -; --- Now enter the C code - B ?main ; Note : use B not BL, because an application will - ; never return this way - - LTORG - - END -;******************* (C) COPYRIGHT 2006 STMicroelectronics *****END OF FILE**** - diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/91x_vect.s b/FreeRTOS/Demo/ARM9_STR91X_IAR/91x_vect.s deleted file mode 100644 index d1a4b0b2b..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/91x_vect.s +++ /dev/null @@ -1,228 +0,0 @@ -;******************** (C) COPYRIGHT 2006 STMicroelectronics ******************** -;* File Name : 91x_vect.s -;* Author : MCD Application Team -;* Date First Issued : 05/18/2006 : Version 1.0 -;* Description : This File used to initialize the exception and IRQ -;* vectors, and to enter/return to/from exceptions -;* handlers. -;******************************************************************************* -* History: -* 05/22/2007 : Version 1.2 -* 05/24/2006 : Version 1.1 -* 05/18/2006 : Version 1.0 -;******************************************************************************* -; THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH -; CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS -; A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, INDIRECT -; OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT -; OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION -; CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. -;******************************************************************************/ - -#include "FreeRTOSConfig.h" -#include "ISR_Support.h" - - SECTION .intvec:CODE:ROOT(2) - CODE32 - - -VectorAddress EQU 0xFFFFF030 ; VIC Vector address register address. -VectorAddressDaisy EQU 0xFC000030 ; Daisy VIC Vector address register -I_Bit EQU 0x80 ; when I bit is set, IRQ is disabled -F_Bit EQU 0x40 ; when F bit is set, FIQ is disabled - - - - -;******************************************************************************* -; Import the __iar_program_start address from 91x_init.s -;******************************************************************************* - - IMPORT __iar_program_start - -;******************************************************************************* -; Import exception handlers -;******************************************************************************* - - IMPORT Undefined_Handler - IMPORT vPortYieldProcessor ; FreeRTOS SWI handler - IMPORT Prefetch_Handler - IMPORT Abort_Handler - IMPORT FIQ_Handler - - -;******************************************************************************* -; Export Peripherals IRQ handlers table address -;******************************************************************************* - -;******************************************************************************* -; Exception vectors -;******************************************************************************* - - LDR PC, Reset_Addr - LDR PC, Undefined_Addr - LDR PC, SWI_Addr - LDR PC, Prefetch_Addr - LDR PC, Abort_Addr - NOP ; Reserved vector - LDR PC, IRQ_Addr - -;******************************************************************************* -;* Function Name : FIQHandler -;* Description : This function is called when FIQ exception is entered. -;* Input : none -;* Output : none -;******************************************************************************* -FIQHandler - SUB lr,lr,#4 ; Update the link register. - STMFD sp!,{r0-r7,lr} ; Save The workspace plus the current return - ; address lr_fiq into the FIQ stack. - ldr r0,=FIQ_Handler - ldr lr,=FIQ_Handler_end - bx r0 ;Branch to FIQ_Handler. -FIQ_Handler_end: - - LDMFD sp!,{r0-r7,pc}^; Return to the instruction following... - ; ...the exception interrupt. - - -;******************************************************************************* -; Exception handlers address table -;******************************************************************************* - -Reset_Addr DCD __iar_program_start -Undefined_Addr DCD UndefinedHandler -SWI_Addr DCD vPortYieldProcessor -Prefetch_Addr DCD PrefetchAbortHandler -Abort_Addr DCD DataAbortHandler - DCD 0 ; Reserved vector -IRQ_Addr DCD IRQHandler - - -;******************************************************************************* -; MACRO -;******************************************************************************* -;******************************************************************************* -;* Macro Name : SaveContext -;* Description : This macro is used to save the context before entering -; an exception handler. -;* Input : The range of registers to store. -;* Output : none -;******************************************************************************* - -SaveContext MACRO reg1,reg2 - STMFD sp!,{reg1-reg2,lr} ; Save The workspace plus the current return - ; address lr_ mode into the stack. - MRS r1,spsr ; Save the spsr_mode into r1. - STMFD sp!,{r1} ; Save spsr. - ENDM - -;******************************************************************************* -;* Macro Name : RestoreContext -;* Description : This macro is used to restore the context to return from -; an exception handler and continue the program execution. -;* Input : The range of registers to restore. -;* Output : none -;******************************************************************************* - -RestoreContext MACRO reg1,reg2 - LDMFD sp!,{r1} ; Restore the saved spsr_mode into r1. - MSR spsr_cxsf,r1 ; Restore spsr_mode. - LDMFD sp!,{reg1-reg2,pc}^; Return to the instruction following... - ; ...the exception interrupt. - ENDM - - -;******************************************************************************* -; Exception Handlers -;******************************************************************************* - - -;******************************************************************************* -;* Function Name : UndefinedHandler -;* Description : This function is called when undefined instruction -; exception is entered. -;* Input : none -;* Output : none -;******************************************************************************* - -UndefinedHandler - SaveContext r0,r12 ; Save the workspace plus the current - ; return address lr_ und and spsr_und. - - ldr r0,=Undefined_Handler - ldr lr,=Undefined_Handler_end - bx r0 ; Branch to Undefined_Handler. - -Undefined_Handler_end: - RestoreContext r0,r12 ; Return to the instruction following... - ; ...the undefined instruction. - -;******************************************************************************* -;* Function Name : PrefetchAbortHandler -;* Description : This function is called when Prefetch Abort -; exception is entered. -;* Input : none -;* Output : none -;******************************************************************************* - -PrefetchAbortHandler - SUB lr,lr,#4 ; Update the link register. - SaveContext r0,r12 ; Save the workspace plus the current - ; return address lr_abt and spsr_abt. - - ldr r0,=Prefetch_Handler - ldr lr,=Prefetch_Handler_end - bx r0 ; Branch to Prefetch_Handler. - -Prefetch_Handler_end: - RestoreContext r0,r12 ; Return to the instruction following that... - ; ...has generated the prefetch abort exception. - -;******************************************************************************* -;* Function Name : DataAbortHandler -;* Description : This function is called when Data Abort -; exception is entered. -;* Input : none -;* Output : none -;******************************************************************************* - -DataAbortHandler - SUB lr,lr,#8 ; Update the link register. - SaveContext r0,r12 ; Save the workspace plus the current - ; return address lr_ abt and spsr_abt. - ldr r0,=Abort_Handler - ldr lr,=Abort_Handler_end - bx r0 ; Branch to Abort_Handler. - -Abort_Handler_end: - - RestoreContext r0,r12 ; Return to the instruction following that... - ; ...has generated the data abort exception. -;******************************************************************************* -;* Function Name : IRQHandler -;* Description : This function is called when IRQ exception is entered. -;* Input : none -;* Output : none -;******************************************************************************* - -IRQHandler - portSAVE_CONTEXT ; Save the context of the current task. - - LDR r0, = VectorAddress - LDR r0, [r0] ; Read the routine address - LDR r1, = VectorAddressDaisy - LDR r1, [r1] - MOV lr, pc - bx r0 - LDR r0, = VectorAddress ; Write to the VectorAddress to clear the - STR r0, [r0] ; respective interrupt in the internal interrupt - LDR r1, = VectorAddressDaisy ; Write to the VectorAddressDaisy to clear the - STR r1,[r1] ; respective interrupt in the internal interrupt - - portRESTORE_CONTEXT ; Restore the context of the selected task. - - LTORG - - END -;******************* (C) COPYRIGHT 2006 STMicroelectronics *****END OF FILE**** diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/91x_vect_IAR.s b/FreeRTOS/Demo/ARM9_STR91X_IAR/91x_vect_IAR.s deleted file mode 100644 index c87b0004b..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/91x_vect_IAR.s +++ /dev/null @@ -1,134 +0,0 @@ -;******************** (C) COPYRIGHT 2005 STMicroelectronics ******************** -;* File Name : 91x_vect.s -;* Author : MCD Application Team -;* Date First Issued : 10/25/2005 : Beta Version V0.1 -;* Description : This File used to initialize the exception and IRQ -;* vectors, and to enter/return to/from exceptions -;* handlers. -;******************************************************************************* -; History: -; 10/25/2005 : Beta Version V0.1 -;******************************************************************************* -; THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH -; CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS -; A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, INDIRECT -; OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT -; OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION -; CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. -;******************************************************************************/ - -#include "FreeRTOSConfig.h" -#include "ISR_Support.h" - - MODULE ?RESET - COMMON INTVEC:CODE(2) - CODE32 - EXPORT LINK - -VectorAddress EQU 0xFFFFF030 ; VIC Vector address register address. -VectorAddressDaisy EQU 0xFC000030 ; Daisy VIC Vector address register - ; address. -LINK EQU 0x0 - -I_Bit EQU 0x80 ; when I bit is set, IRQ is disabled -F_Bit EQU 0x40 ; when F bit is set, FIQ is disabled - -;******************************************************************************* -; MACRO -;******************************************************************************* - -;******************************************************************************* -; Import the __program_start address from 91x_init.s -;******************************************************************************* - - IMPORT __program_start - -;******************************************************************************* -; Import exception handlers -;******************************************************************************* - - IMPORT vPortYieldProcessor ; FreeRTOS SWI handler - -;******************************************************************************* -; Export Peripherals IRQ handlers table address -;******************************************************************************* - -;******************************************************************************* -; Exception vectors -;******************************************************************************* - - LDR PC, Reset_Addr - LDR PC, Undefined_Addr - LDR PC, SWI_Addr - LDR PC, Prefetch_Addr - LDR PC, Abort_Addr - NOP ; Reserved vector - LDR PC, IRQ_Addr - LDR PC, FIQ_Addr - -;******************************************************************************* -; Exception handlers address table -;******************************************************************************* - -Reset_Addr DCD __program_start -Undefined_Addr DCD UndefinedHandler -SWI_Addr DCD vPortYieldProcessor -Prefetch_Addr DCD PrefetchAbortHandler -Abort_Addr DCD DataAbortHandler - DCD 0 ; Reserved vector -IRQ_Addr DCD IRQHandler -FIQ_Addr DCD FIQHandler - - -;******************************************************************************* -; Exception Handlers -;******************************************************************************* - -; - NOTE - -; The IRQ and SWI handlers are the only managed exception. - -UndefinedHandler - b UndefinedHandler - -PrefetchAbortHandler - b PrefetchAbortHandler - -DataAbortHandler - b DataAbortHandler - -FIQHandler - b FIQHandler - -DefaultISR - b DefaultISR - - -;******************************************************************************* -;* Function Name : IRQHandler -;* Description : This function called when IRQ exception is entered. -;* Input : none -;* Output : none -;******************************************************************************* - -IRQHandler - portSAVE_CONTEXT ; Save the context of the current task. - - LDR r0, = VectorAddress - LDR r0, [r0] ; Read the routine address - LDR r1, = VectorAddressDaisy - LDR r1, [r1] - MOV lr, pc - bx r0 - LDR r0, = VectorAddress ; Write to the VectorAddress to clear the - STR r0, [r0] ; respective interrupt in the internal interrupt - LDR r1, = VectorAddressDaisy ; Write to the VectorAddressDaisy to clear the - STR r1,[r1] ; respective interrupt in the internal interrupt - - portRESTORE_CONTEXT ; Restore the context of the selected task. - - - LTORG - - END - -;******************* (C) COPYRIGHT 2003 STMicroelectronics *****END OF FILE**** diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/FreeRTOSConfig.h b/FreeRTOS/Demo/ARM9_STR91X_IAR/FreeRTOSConfig.h deleted file mode 100644 index ba90f9b4a..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/FreeRTOSConfig.h +++ /dev/null @@ -1,89 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -#ifndef FREERTOS_CONFIG_H -#define FREERTOS_CONFIG_H - -/*----------------------------------------------------------- - * Application specific definitions. - * - * These definitions should be adjusted for your particular hardware and - * application requirements. - * - * THESE PARAMETERS ARE DESCRIBED WITHIN THE 'CONFIGURATION' SECTION OF THE - * FreeRTOS API DOCUMENTATION AVAILABLE ON THE FreeRTOS.org WEB SITE. - * - * See http://www.freertos.org/a00110.html - *----------------------------------------------------------*/ - - -/** - * The STR9 port can use either the watchdog or the timer 2 interrupt to generate - * the system tick. Set configUSE_WATCHDOG_TICK to 1 to use the watchdog, or - * 0 to use timer 2. - */ -#define configUSE_WATCHDOG_TICK 1 - - -#define configUSE_PREEMPTION 1 -#define configUSE_IDLE_HOOK 0 -#define configUSE_TICK_HOOK 0 -#define configCPU_CLOCK_HZ ( ( unsigned long ) 96000000 ) -#define configCPU_PERIPH_HZ ( ( unsigned long ) 48000000 ) -#define configTICK_RATE_HZ ( ( TickType_t ) 100 ) -#define configMAX_PRIORITIES ( 5 ) -#define configMINIMAL_STACK_SIZE ( ( unsigned short ) 180 ) -#define configTOTAL_HEAP_SIZE ( ( size_t ) 52000 ) -#define configMAX_TASK_NAME_LEN ( 16 ) -#define configUSE_TRACE_FACILITY 1 -#define configUSE_16_BIT_TICKS 0 -#define configIDLE_SHOULD_YIELD 1 -#define configUSE_MUTEXES 1 - -/* Co-routine definitions. */ -#define configUSE_CO_ROUTINES 0 -#define configMAX_CO_ROUTINE_PRIORITIES ( 2 ) - -/* Set the following definitions to 1 to include the API function, or zero -to exclude the API function. */ - -#define INCLUDE_vTaskPrioritySet 1 -#define INCLUDE_uxTaskPriorityGet 1 -#define INCLUDE_vTaskDelete 1 -#define INCLUDE_vTaskCleanUpResources 0 -#define INCLUDE_vTaskSuspend 1 -#define INCLUDE_vTaskDelayUntil 1 -#define INCLUDE_vTaskDelay 1 -#define INCLUDE_xTaskGetCurrentTaskHandle 1 - -/* This demo makes use of one or more example stats formatting functions. These -format the raw data provided by the uxTaskGetSystemState() function in to human -readable ASCII form. See the notes in the implementation of vTaskList() within -FreeRTOS/Source/tasks.c for limitations. */ -#define configUSE_STATS_FORMATTING_FUNCTIONS 1 - -#endif /* FREERTOS_CONFIG_H */ diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/include/91x_ahbapb.h b/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/include/91x_ahbapb.h deleted file mode 100644 index 1828d488e..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/include/91x_ahbapb.h +++ /dev/null @@ -1,60 +0,0 @@ -/******************** (C) COPYRIGHT 2006 STMicroelectronics ******************** -* File Name : 91x_ahbapb.h -* Author : MCD Application Team -* Date First Issued : 05/18/2006 : Version 1.0 -* Description : This file contains all the functions prototypes for the -* AHBAPB software library. -******************************************************************************** -* History: -* 05/24/2006 : Version 1.1 -* 05/18/2006 : Version 1.0 -******************************************************************************** -* THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH -* CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS -* A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, INDIRECT -* OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT -* OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION -* CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. -*******************************************************************************/ - -/* Define to prevent recursive inclusion -------------------------------------*/ -#ifndef _91x_AHBAPB_H -#define _91x_AHBAPB_H - -#include "91x_map.h" - -#define AHBAPB_Split_Enable 0x01000000 -#define AHBAPB_Split_Disable 0xFEFFFFFF -#define AHBAPB_Error_Enable 0x0000100 -#define AHBAPB_Error_Disable 0xFFFFEFF - -/*FLAG*/ -#define AHBAPB_FLAG_ERROR 0x01 /* error flag*/ -#define AHBAPB_FLAG_OUTM 0x10 /* Out of Memory flag */ -#define AHBAPB_FLAG_APBT 0x20 /* APB Time-out flag */ -#define AHBAPB_FLAG_RW 0x40 /*Access type flag*/ - -/* Includes ------------------------------------------------------------------*/ - - -/* AHBAPB Init structure definition */ -typedef struct -{ - u32 AHBAPB_SetTimeOut; - u32 AHBAPB_Error; - u32 AHBAPB_Split; - u8 AHBAPB_SplitCounter; -}AHBAPB_InitTypeDef; - -/* Exported constants --------------------------------------------------------*/ -void AHBAPB_DeInit(AHBAPB_TypeDef* AHBAPBx); -void AHBAPB_Init(AHBAPB_TypeDef* AHBAPBx, AHBAPB_InitTypeDef* AHBAPB_InitStruct); -void AHBAPB_StructInit(AHBAPB_InitTypeDef* AHBAPB_InitStruct); -FlagStatus AHBAPB_GetFlagStatus(AHBAPB_TypeDef* AHBAPBx, u8 AHBAPB_FLAG); -void AHBAPB_ClearFlag(AHBAPB_TypeDef* AHBAPBx, u8 AHBAPB_FLAG); -u32 AHBAPB_GetPeriphAddrError(AHBAPB_TypeDef* AHBAPBx); - - -#endif /* _91x_AHBAPB_H */ - -/******************* (C) COPYRIGHT 2006 STMicroelectronics *****END OF FILE****/ diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/include/91x_conf.h b/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/include/91x_conf.h deleted file mode 100644 index 4fc85fff1..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/include/91x_conf.h +++ /dev/null @@ -1,119 +0,0 @@ -/******************** (C) COPYRIGHT 2006 STMicroelectronics ******************** -* File Name : 91x_conf.h -* Author : MCD Application Team -* Date First Issued : 03/31/2006 : Beta Version V0.1 -* Description : Library configuration. -******************************************************************************** -* History: -* 03/31/2006 : Beta Version V0.1 -******************************************************************************** -* THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH -* CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS -* A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, INDIRECT -* OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT -* OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION -* CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. -*******************************************************************************/ - - -#ifndef __91x_CONF_H -#define __91x_CONF_H - -/* To work in buffered mode just decomment the following line */ - -//#define Buffered - -/* Comment the line below to put the library in release mode */ - -//#ifndef inline -// #define inline inline -//#endif - -/************************* AHBAPB *************************/ -#define _AHBAPB -#define _AHBAPB0 -#define _AHBAPB1 -/************************* VIC *************************/ -#define _VIC -#define _VIC0 -#define _VIC1 -/************************* DMA *************************/ -//#define _DMA -//#define _DMA_Channel0 -//#define _DMA_Channel1 -//#define _DMA_Channel2 -//#define _DMA_Channel3 -//#define _DMA_Channel4 -//#define _DMA_Channel5 -//#define _DMA_Channel6 -//#define _DMA_Channel7 - -/************************* EMI *************************/ -//#define _EMI -//#define _EMI_Bank0 -//#define _EMI_Bank1 -//#define _EMI_Bank2 -//#define _EMI_Bank3 -/************************* FMI *************************/ -#define _FMI -/************************* WIU *************************/ -//#define _WIU -/************************* TIM *************************/ -#define _TIM -//#define _TIM0 -//#define _TIM1 -#define _TIM2 -//#define _TIM3 -/************************* GPIO ************************/ -#define _GPIO -#define _GPIO0 -#define _GPIO1 -#define _GPIO2 -#define _GPIO3 -#define _GPIO4 -#define _GPIO5 -#define _GPIO6 -#define _GPIO7 -#define _GPIO8 -#define _GPIO9 -/************************* RTC *************************/ -//#define _RTC -/************************* SCU *************************/ -#define _SCU -/************************* MC **************************/ -//#define _MC -/************************* UART ************************/ -#define _UART -//#define _UART0 -#define _UART1 -//#define _UART2 -/************************* SSP *************************/ -//#define _SSP -//#define _SSP0 -//#define _SSP1 -/************************* CAN *************************/ -//#define _CAN -/************************* ADC *************************/ -//#define _ADC -/************************* WDG *************************/ -#define _WDG -/************************* I2C *************************/ -//#define _I2C -//#define _I2C0 -//#define _I2C1 -/************************ ENET *************************/ -#define _ENET -/************************ DENET ************************/ -//#define _DENET - -/*---------------------------- _Main_Crystal frequency value (KHz)------------*/ - -#ifndef _Main_Crystal -#define _Main_Crystal 25000 -#endif -/*------------------------------------------------------------------------------*/ - - -#endif /* __91x_CONF_H */ - -/******************* (C) COPYRIGHT 2006 STMicroelectronics *****END OF FILE****/ diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/include/91x_dma.h b/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/include/91x_dma.h deleted file mode 100644 index 6a383aafe..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/include/91x_dma.h +++ /dev/null @@ -1,247 +0,0 @@ -/******************** (C) COPYRIGHT 2006 STMicroelectronics ******************** -* File Name : template.h -* Author : MCD Application Team -* Date First Issued : 05/18/2006 : Version 1.0 -* Description : provide a short description of the source file indicating -* its purpose. -******************************************************************************** -* History: -* 05/24/2006 : Version 1.1 -* 05/18/2006 : Version 1.0 -******************************************************************************** -* THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS -* WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. -* AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, -* INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE -* CONTENT OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING -* INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. -*******************************************************************************/ - -/* Define to prevent recursive inclusion -------------------------------------*/ -#ifndef __91x_DMA_H -#define __91x_DMA_H - -/* Includes ------------------------------------------------------------------*/ -#include"91x_map.h" - - -/* Exported types ------------------------------------------------------------*/ - -typedef struct -{ - u32 DMA_Channel_SrcAdd; /* The current source address (byte-aligned) of the data to be transferred.*/ - - u32 DMA_Channel_DesAdd; /* The current destination address (byte-aligned) of the data to be transferred.*/ - - u32 DMA_Channel_LLstItm; /* The word- aligned address for the next Linked List Item. */ - - u32 DMA_Channel_DesWidth; /* Destination transfer width. */ - - u32 DMA_Channel_SrcWidth; /* Source transfer width. */ - - u32 DMA_Channel_DesBstSize; /* The destination burst size which indicates the number of transfers that make up a destination burst transfer request.*/ - - u32 DMA_Channel_SrcBstSize; /* The source burst size.Indicates the number of transfers that make up a source burst */ - - u32 DMA_Channel_TrsfSize; /* Transfer size which indicates the size of the transfer when the DMA controller is the flow controller*/ - - u32 DMA_Channel_FlowCntrl; /* Flow control and transfer type. */ - - u32 DMA_Channel_Src; /* Source peripheral: selects the DMA source request peripheral. */ - - u32 DMA_Channel_Des; /* Destination peripheral:selects the DMA destination request peripheral. */ - -} DMA_InitTypeDef; - -/* Exported constants --------------------------------------------------------*/ - - /* Interrupts masks */ - -#define DMA_ITMask_IE 0x4000 /* Interrupt error mask. */ -#define DMA_ITMask_ITC 0x8000 /* Terminal count interrupt mask.*/ -#define DMA_ITMask_ALL 0xC000 /* All DMA_Channelx interrupts enable/disable mask*/ - - /* Sources Request (used as masks) */ - -#define DMA_USB_RX_Mask 0x0001 -#define DMA_USB_TX_Mask 0x0002 -#define DMA_TIM0_Mask 0x0004 -#define DMA_TIM1_Mask 0x0008 -#define DMA_UART0_RX_Mask 0x0010 -#define DMA_UART0_TX_Mask 0x0020 -#define DMA_UART1_RX_Mask 0x0040 -#define DMA_UART1_TX_Mask 0x0080 -#define DMA_External_Req0_Mask 0x0100 -#define DMA_External_Req1_Mask 0x0200 -#define DMA_I2C0_Mask 0x0400 -#define DMA_I2C1_Mask 0x0800 -#define DMA_SSP0_RX_Mask 0x1000 -#define DMA_SSP0_TX_Mask 0x2000 -#define DMA_SSP1_RX_Mask 0x4000 -#define DMA_SSP1_TX_Mask 0x8000 - - -/* Previleged Mode and user mode */ - -#define DMA_PrevilegedMode 0x10000000 -#define DMA_UserMode 0xEFFFFFFF - - -/* Error and Terminal Count interrupts Status, after and before"raw" masking */ -#define DMA_IS 0x01 -#define DMA_TCS 0x02 -#define DMA_ES 0x03 -#define DMA_TCRS 0x04 -#define DMA_ERS 0x05 - - -/* interrupt clear: Terminal Count flag Clear and Error flag clear*/ - -#define DMA_TCC 0x01 -#define DMA_EC 0x02 - -/* channel index "0...7"*/ - -#define Channel0 0 -#define Channel1 1 -#define Channel2 2 -#define Channel3 3 -#define Channel4 4 -#define Channel5 5 -#define Channel6 6 -#define Channel7 7 - - - -/* Destination request selection: selects the DMA Destination request peripheral */ - -#define DMA_DES_USB_RX 0x00 -#define DMA_DES_USB_TX 0x40 -#define DMA_DES_TIM1 0x80 -#define DMA_DES_TIM2 0xC0 -#define DMA_DES_UART0_RX 0x100 -#define DMA_DES_UART0_TX 0x140 -#define DMA_DES_UART1_RX 0x180 -#define DMA_DES_UART1_TX 0x1C0 -#define DMA_DES_External_Req0 0x200 -#define DMA_DES_External_Req1 0x240 -#define DMA_DES_I2C0 0x280 -#define DMA_DES_I2C1 0x2C0 -#define DMA_DES_SSP0_RX 0x300 -#define DMA_DES_SSP0_TX 0x340 -#define DMA_DES_SSP1_RX 0x380 -#define DMA_DES_SSP1_TX 0x3C0 - - - - -/* Source request selection: selects the DMA Source request peripheral */ - -#define DMA_SRC_USB_RX 0x00 -#define DMA_SRC_USB_TX 0x02 -#define DMA_SRC_TIM1 0x04 -#define DMA_SRC_TIM2 0x06 -#define DMA_SRC_UART0_RX 0x08 -#define DMA_SRC_UART0_TX 0x0A -#define DMA_SRC_UART1_RX 0x0C -#define DMA_SRC_UART1_TX 0x0E -#define DMA_SRC_External_Req0 0x10 -#define DMA_SRC_External_Req1 0x12 -#define DMA_SRC_I2C0 0x14 -#define DMA_SRC_I2C1 0x16 -#define DMA_SRC_SSP0_RX 0x18 -#define DMA_SRC_SSP0_TX 0x1A -#define DMA_SRC_SSP1_RX 0x1C -#define DMA_SRC_SSP1_TX 0x1E - - - - - -#define DMA_FlowCntrlt0_DMA 0x00000000 /* transfer type :Memory-to-memory, flow controller:DMA */ -#define DMA_FlowCntrl1_DMA 0x00000800 /* transfer type :Memory-to-peripheral, flow controller:DMA */ -#define DMA_FlowCntrl2_DMA 0x00001000 /* transfer type :Peripheral-to-memory, flow controller:DMA */ -#define DMA_FlowCntrl3_DMA 0x00001800 /* transfer type :Source peripheral-to-destination peripheral, flow controller:DMA */ -#define DMA_FlowCntrl_DestPerip 0x00002000 /* transfer type :Source peripheral-to-destination peripheral, flow controller:Destination peripheral */ -#define DMA_FlowCntrl_Perip1 0x00002800 /* transfer type :Memory-to-peripheral, flow controller:peripheral */ -#define DMA_FlowCntrl_Perip2 0x00003000 /* transfer type : Peripheral-to-memory, flow controller:peripheral */ -#define DMA_FlowCntrl_SrcPerip 0x00003800 /* transfer type :Source peripheral-to-destination peripheral, flow controller:Source peripheral */ - - - - -#define DMA_SrcBst_1Data 0x00000000 /* Source Burst transfer request IS 1 Data ( DATA = Source transfer width ) */ -#define DMA_SrcBst_4Data 0x00001000 /* Source Burst transfer request IS 4 Data */ -#define DMA_SrcBst_8Data 0x00002000 /* Source Burst transfer request IS 8 Data */ -#define DMA_SrcBst_16Data 0x00003000 /* Source Burst transfer request IS 16 Data */ -#define DMA_SrcBst_32Data 0x00004000 /* Source Burst transfer request IS 32 Data */ -#define DMA_SrcBst_64Data 0x00005000 /* Source Burst transfer request IS 64Data */ -#define DMA_SrcBst_128Data 0x00006000 /* Source Burst transfer request IS 128 Data */ -#define DMA_SrcBst_256Data 0x00007000 /* Source Burst transfer request IS 256 Data */ - - - - -#define DMA_DesBst_1Data 0x00000000 /*Destination Burst transfer request IS 1Data ( DATA = destination transfer width ) */ -#define DMA_DesBst_4Data 0x00008000 /*Destination Burst transfer request IS 1 Data */ -#define DMA_DesBst_8Data 0x00010000 /*Destination Burst transfer request IS 4 Data */ -#define DMA_DesBst_16Data 0x00018000 /*Destination Burst transfer request IS 8 Data */ -#define DMA_DesBst_32Data 0x00020000 /*Destination Burst transfer request IS 16 Data */ -#define DMA_DesBst_64Data 0x00028000 /*Destination Burst transfer request IS 32 Data */ -#define DMA_DesBst_128Data 0x00030000 /*Destination Burst transfer request IS 128 Data */ -#define DMA_DesBst_256Data 0x00038000 /*Destination Burst transfer request IS 256 Data */ - - - - - -#define DMA_SrcWidth_Byte 0x00000000 /* source Width is one Byte */ -#define DMA_SrcWidth_HalfWord 0x00040000 /* source Width is one HalfWord */ -#define DMA_SrcWidth_Word 0x00080000 /* source Width is one Word */ - - - - -#define DMA_DesWidth_Byte 0x00000000 /* Destination Width is one Byte */ -#define DMA_DesWidth_HalfWord 0x00200000 /* Destination Width is one HalfWord */ -#define DMA_DesWidth_Word 0x00400000 /* Destination Width is one Word */ - - - - - - -/* Exported macro ------------------------------------------------------------*/ -/* Exported functions ------------------------------------------------------- */ - -void DMA_DeInit(void); -void DMA_Init(DMA_Channel_TypeDef * DMA_Channelx, DMA_InitTypeDef * DMA_InitStruct); -void DMA_StructInit(DMA_InitTypeDef *DMA_InitStruct); -void DMA_Cmd(FunctionalState NewState); -void DMA_ITMaskConfig(DMA_Channel_TypeDef * DMA_Channelx, u16 DMA_ITMask, FunctionalState NewState); -void DMA_ITConfig(DMA_Channel_TypeDef * DMA_Channelx, FunctionalState NewState); -FlagStatus DMA_GetChannelStatus(u8 ChannelIndx ); -ITStatus DMA_GetITStatus(u8 ChannelIndx,u8 DMA_ITReq); -void DMA_ClearIT(u8 ChannelIndx,u8 DMA_ITClr); -void DMA_SyncConfig(u16 DMA_SrcReq, FunctionalState NewState); -FlagStatus DMA_GetSReq(u16 DMA_SrcReq); -FlagStatus DMA_GetLSReq(u16 DMA_SrcReq); -FlagStatus DMA_GetBReq(u16 DMA_SrcReq); -FlagStatus DMA_GetLBReq(u16 DMA_SrcReq); -FlagStatus DMA_GetChannelActiveStatus( DMA_Channel_TypeDef * DMA_Channelx); -void DMA_SetSReq(u16 DMA_SrcReq); -void DMA_SetLSReq(u16 DMA_SrcReq); -void DMA_SetBReq(u16 DMA_SrcReq); -void DMA_SetLBReq(u16 DMA_SrcReq); -void DMA_ChannelCmd (DMA_Channel_TypeDef * DMA_Channelx,FunctionalState NewState); -void DMA_ChannelHalt (DMA_Channel_TypeDef * DMA_Channelx,FunctionalState NewState); -void DMA_ChannelBuffering (DMA_Channel_TypeDef * DMA_Channelx,FunctionalState NewState); -void DMA_ChannelLockTrsf(DMA_Channel_TypeDef * DMA_Channelx,FunctionalState NewState); -void DMA_ChannelCache(DMA_Channel_TypeDef * DMA_Channelx,FunctionalState NewState); -void DMA_ChannelProt0Mode(DMA_Channel_TypeDef * DMA_Channelx,u32 Prot0Mode); -void DMA_ChannelSRCIncConfig (DMA_Channel_TypeDef * DMA_Channelx, FunctionalState NewState); -void DMA_ChannelDESIncConfig (DMA_Channel_TypeDef * DMA_Channelx, FunctionalState NewState); - -#endif /* __91x_DMA_H */ - -/******************* (C) COPYRIGHT 2006 STMicroelectronics *****END OF FILE****/ diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/include/91x_enet.h b/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/include/91x_enet.h deleted file mode 100644 index 7ba5263e1..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/include/91x_enet.h +++ /dev/null @@ -1,358 +0,0 @@ -/******************** (C) COPYRIGHT 2006 STMicroelectronics ******************** -* File Name : 91x_enet.h -* Author : MCD Application Team -* Date First Issued : May 2006 -* Description : ENET driver defines & function prototypes -******************************************************************************** -* History: -* May 2006: v1.0 -******************************************************************************** -* THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS -* WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. -* AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, -* INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE -* CONTENT OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING -* INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. -*******************************************************************************/ - -#ifndef _ENET_H_ -#define _ENET_H_ - -#include <91x_lib.h> - -#define ENET_BUFFER_SIZE 1520 -/*Structures typedef----------------------------------------------------------*/ - -/*Struct containing the DMA Descriptor data */ -typedef struct { - volatile u32 dmaStatCntl; /* DMA Status and Control Register */ - volatile u32 dmaAddr; /* DMA Start Address Register */ - volatile u32 dmaNext; /* DMA Next Descriptor Register */ - volatile u32 dmaPackStatus; /* DMA Packet Status and Control Register */ -} ENET_DMADSCRBase; - - -/* ENET_MACConfig Struct*/ -typedef struct { - FunctionalState ReceiveALL; /* Receive All frames: no address rule filtering */ - u32 MIIPrescaler; /* MII Clock Prescaler value */ - FunctionalState LoopbackMode; /* MAC Loopback mode */ - u32 AddressFilteringMode; /* Address Filtering Mode */ - u32 VLANFilteringMode; /* VLAN Filtering Mode */ - FunctionalState PassWrongFrame; /* Pass wrong frame (CRC, overlength, runt..)*/ - FunctionalState LateCollision; /* Retransmit frame when late collision*/ - FunctionalState BroadcastFrameReception; /* Accept broardcast frame */ - FunctionalState PacketRetry; /* Retransmit frame in case of collision */ - FunctionalState RxFrameFiltering; /* Filter early runt frame and address filter fail frames*/ - FunctionalState AutomaticPadRemoval; /* Automatic Padding removal */ - FunctionalState DeferralCheck; /* Excessive Defferal check */ -} ENET_MACConfig; - -/* ENET_TxStatus Struct*/ -typedef struct { - FlagStatus PacketRetry; - u8 ByteCount; - u8 collisionCount; - FlagStatus LateCollisionObserved; - FlagStatus Deffered; - FlagStatus UnderRun; - FlagStatus ExcessiveCollision; - FlagStatus LateCollision; - FlagStatus ExcessiveDefferal; - FlagStatus LossOfCarrier; - FlagStatus NoCarrier; - FlagStatus FrameAborted; -} ENET_TxStatus; - -/* ENET_RxStatus Struct*/ -typedef struct { - FlagStatus FrameAborted; - FlagStatus PacketFilter; - FlagStatus FilteringFail; - FlagStatus BroadCastFrame; - FlagStatus MulticastFrame; - FlagStatus UnsupportedControFrame; - FlagStatus ControlFrame; - FlagStatus LengthError; - FlagStatus Vlan2Tag; - FlagStatus Vlan1Tag; - FlagStatus CRCError; - FlagStatus ExtraBit; - FlagStatus MIIError; - FlagStatus FrameType; - FlagStatus LateCollision; - FlagStatus OverLength; - FlagStatus RuntFrame; - FlagStatus WatchDogTimout; - FlagStatus FalseCarrierIndication; - u16 FrameLength; -} ENET_RxStatus; - -/*Constants-------------------------------------------------------------------*/ - - -/* AddressFilteringMode */ -#define MAC_Perfect_Multicast_Perfect 0x0 -#define MAC_Perfect_Multicast_Hash 0x1<<17 -#define MAC_Hash_Multicast_Hash 0x2<<17 -#define MAC_Inverse 0x3<<17 -#define MAC_Promiscuous 0x4<<17 -#define MAC_Perfect_Multicast_All 0x5<<17 -#define MAC_Hash_Multicast_All 0x6<<17 - -/* VLANFilteringMode */ -#define VLANFilter_VLTAG_VLID 1 -#define VLANfilter_VLTAG 0 - -/* MIIPrescaler */ -#define MIIPrescaler_1 0 /* Prescaler for MDC clock when HCLK < 50 MHz */ -#define MIIPrescaler_2 1 /* Precaler for MDC when HCLK > = 50 MHz */ - - -/* MAC Address*/ -#define MAC_ADDR0 0x00 -#define MAC_ADDR1 0x0A -#define MAC_ADDR2 0x08 -#define MAC_ADDR3 0x04 -#define MAC_ADDR4 0x02 -#define MAC_ADDR5 0x01 - -/* Multicast Address */ -#define MCAST_ADDR0 0xFF -#define MCAST_ADDR1 0x00 -#define MCAST_ADDR2 0xFF -#define MCAST_ADDR3 0x00 -#define MCAST_ADDR4 0xFF -#define MCAST_ADDR5 0x00 - - - -#define ENET_MAX_PACKET_SIZE 1520 -#define ENET_NEXT_ENABLE 0x4000 - -/*ENET_OperatingMode*/ -/* Set the full/half-duplex mode at 100 Mb/s */ -#define PHY_FULLDUPLEX_100M 0x2100 -#define PHY_HALFDUPLEX_100M 0x2000 -/* Set the full/half-duplex mode at 10 Mb/s */ -#define PHY_FULLDUPLEX_10M 0x0100 -#define PHY_HALFDUPLEX_10M 0x0000 - - -/*----------------------------functions----------------------------------------*/ - -void ENET_MACControlConfig(ENET_MACConfig *MAC_Config); -void ENET_GetRxStatus(ENET_RxStatus * RxStatus); -void ENET_GetTxStatus(ENET_TxStatus * TxStatus); -long ENET_SetOperatingMode(void); -void ENET_InitClocksGPIO(void); -void ENET_MIIWriteReg (u8 phyDev, u8 phyReg, u32 phyVal); -u32 ENET_MIIReadReg (u8 phyDev, u32 phyReg ); -void ENET_RxDscrInit(void); -void ENET_TxDscrInit(void); -void ENET_Init(void); -void ENET_Start(void); -u32 ENET_RxPacketGetSize(void); -void ENET_TxPkt(void *ppkt, u16 size); -u32 ENET_HandleRxPkt(void *ppkt); - - -/*Driver internal constants---------------------------------------------------*/ - -/* MII Address */ -/* Description of bit field values of the MII Address Register */ -#define MAC_MIIA_PADDR 0x0000F800 -#define MAC_MII_ADDR_PHY_ADDR MAC_MIIA_PADDR /* Phy Address (default: 0): select one of 32 dev */ -#define MAC_MII_ADDR_MII_REG 0x000007C0 /* MII Register (default: 0) */ -#define MAC_MII_ADDR_MII_WRITE 0x00000002 /* MII Write */ -#define MAC_MIIA_PHY_DEV_ADDR (0x00005000 & MAC_MIIA_PADDR) /*To be changed if PHY device address changes */ -#define MAC_MII_ADDR_MII_BUSY 0x00000001 /* MII Busy */ - - -/* MII DATA register */ -#define MAC_MII_DATA_REG 0x0000FFFF /* MII Data */ - -/* MII Read / write timeouts*/ -#define MII_READ_TO 0x0004FFFF -#define MII_WRITE_TO 0x0004FFFF - -/* Description of common PHY registers */ -#define MAC_MII_REG_XCR 0x00000000 /* Tranceiver control register */ -#define MAC_MII_REG_XSR 0x00000001 /* Tranceiver status register */ -#define MAC_MII_REG_PID1 0x00000002 /* Tranceiver PHY identifier 1 */ -#define MAC_MII_REG_PID2 0x00000003 /* Tranceiver PHY identifier 2 */ -#define MAC_MII_REG_ANA 0x00000004 /* Auto-Negociation Advertissement register */ -#define MAC_MII_REG_ANLPA 0x00000005 /* Auto-Negociation Link Partner Ability register */ -#define MAC_MII_REG_ANE 0x00000006 /* Auto-Negociation Expansion register */ - - - - -/* MAC_MCR register fields */ -#define MAC_MCR_RA 0x80000000 -#define MAC_MCR_EN 0x40000000 -#define MAC_MCR_PS 0x03000000 -#define MAC_MCR_DRO 0x00800000 -#define MAC_MCR_LM 0x00600000 -#define MAC_MCR_FDM 0x00100000 -#define MAC_MCR_AFM 0x000E0000 -#define MAC_MCR_PWF 0x00010000 -#define MAC_MCR_VFM 0x00008000 -#define MAC_MCR_ELC 0x00001000 -#define MAC_MCR_DBF 0x00000800 -#define MAC_MCR_DPR 0x00000400 -#define MAC_MCR_RVFF 0x00000200 -#define MAC_MCR_APR 0x00000100 -#define MAC_MCR_BL 0x000000C0 -#define MAC_MCR_DCE 0x00000020 -#define MAC_MCR_RVBE 0x00000010 -#define MAC_MCR_TE 0x00000008 -#define MAC_MCR_RE 0x00000004 -#define MAC_MCR_RCFA 0x00000001 - -/* MTS */ -#define MAC_MTS_FA 0x00000001 -#define MAC_MTS_NC 0x00000004 -#define MAC_MTS_LOC 0x00000008 -#define MAC_MTS_ED 0x00000010 -#define MAC_MTS_LC 0x00000020 -#define MAC_MTS_EC 0x00000040 -#define MAC_MTS_UR 0x00000080 -#define MAC_MTS_DEF 0x00000100 -#define MAC_MTS_LCO 0x00000200 -#define MAC_MTS_CC 0x00003C00 -#define MAC_MTS_BC 0x7FFC0000 -#define MAC_MTS_PR 0x80000000 - -/* MRS */ -#define MAC_MRS_FL 0x000007FF -#define MAC_MRS_FCI 0x00002000 -#define MAC_MRS_WT 0x00004000 -#define MAC_MRS_RF 0x00008000 -#define MAC_MRS_OL 0x00010000 -#define MAC_MRS_LC 0x00020000 -#define MAC_MRS_FT 0x00040000 -#define MAC_MRS_ME 0x00080000 -#define MAC_MRS_EB 0x00100000 -#define MAC_MRS_CE 0x00200000 -#define MAC_MRS_VL1 0x00400000 -#define MAC_MRS_VL2 0x00800000 -#define MAC_MRS_LE 0x01000000 -#define MAC_MRS_CF 0x02000000 -#define MAC_MRS_UCF 0x04000000 -#define MAC_MRS_MCF 0x08000000 -#define MAC_MRS_BF 0x10000000 -#define MAC_MRS_FF 0x20000000 -#define MAC_MRS_PF 0x40000000 -#define MAC_MRS_FA 0x80000000 - -/* SCR */ -#define DMA_SCR_SRESET 0x00000001 /* Soft Reset (DMA_SCR_RESET) */ -#define DMA_SCR_LOOPB 0x00000002 /* Loopback mode (DMA_SCR_LOOPB) */ -#define DMA_SCR_RX_MBSIZE 0x00000010 /* Max defined burst length in RX mode (DMA_SCR_RX_MAX_BURST_...) */ -#define DMA_SCR_TX_MBSIZE 0x000000C0 /* Max defined burst length in TX mode (DMA_SCR_TX_MAX_BURST_...) */ -#define DMA_SCR_RX_MAX_BURST_SZ DMA_SCR_RX_MBSIZE /* Maximum value of defined burst length in RX mode */ -#define DMA_SCR_RX_MAX_BURST_SZ_VAL 0x00000000 /* Default value of burst length in RX mode */ -#define DMA_SCR_TX_MAX_BURST_SZ DMA_SCR_TX_MBSIZE /* Maximum value of defined burst length in TX mode */ -#define DMA_SCR_TX_MAX_BURST_SZ_VAL 0x000000C0 /* Default value of burst length in TX mode */ - - -/* DMA_RX_START */ -#define DMA_RX_START_DMAEN 0x00000001 -#define DMA_RX_START_STFETCH 0x00000004 -#define DMA_RX_START_FFAIL 0x00000020 -#define DMA_RX_START_RUNT 0x00000040 -#define DMA_RX_START_COLLS 0x00000080 -#define DMA_RX_START_DMA_EN 0x00000001 /* set = 0 by sw force a DMA abort */ -#define DMA_RX_START_FETCH 0x00000004 /* start fetching the 1st descriptor */ -#define DMA_RX_START_FILTER_FAIL 0x00000020 /* if = 1 the address filtering failed cond */ -#define DMA_RX_START_RUNT 0x00000040 /* discard damaged RX frames from cpu charge */ -#define DMA_RX_START_COLLS_SEEN 0x00000080 /* Late Collision Seen Cond discard frame automat. */ -#define DMA_RX_START_DFETCH_DLY 0x00FFFF00 /* Descriptor Fetch Delay */ -#define DMA_RX_START_DFETCH_DLY_POS 8 -#define DMA_RX_START_DFETCH_DEFAULT 0x00010000 /* Descriptor Fetch Delay default value */ - -/* DMA_DSCR_PACK_STAT */ -#define DMA_DSCR_PACK_STAT 0x00010000 - - -/* DMA_TX_START */ -#define DMA_TX_START_DMAEN 0x00000001 -#define DMA_TX_START_STFETCH 0x00000004 -#define DMA_TX_START_URUN 0x00000020 -#define DMA_TX_START_DISPAD 0x00000040 -#define DMA_TX_START_ADDCTC 0x00000080 -#define DMA_TX_START_DMA_EN 0x00000001 /* set = 0 by sw force a DMA abort */ -#define DMA_TX_START_FETCH 0x00000004 /* start fetching the 1st descriptor */ -#define DMA_RX_START_FILTER_FAIL 0x00000020 /* if = 1 the address filtering failed cond */ -#define DMA_TX_START_DFETCH_DLY 0x00FFFF00 /* Descriptor Fetch Delay */ -#define DMA_TX_START_DFETCH_DEFAULT 0x00010000 /* Descriptor Fetch Delay */ -#define DMA_TX_START_DFETCH_DLY_POS 0x8 -#define DMA_TX_START_URUN 0x00000020 -#define DMA_TX_START_DIS_PADDING 0x00000040 /* Avoid automatic addition of padding bits by MAC*/ -#define DMA_TX_START_ADD_CRC_DIS 0x00000080 /* Tell MAC not to ADD CRC field at end of frame */ - -/* DMA_DSCR_CNTL */ -#define DMA_DSCR_CNTL_XFERCOUNT 0x00000FFF -#define DMA_DSCR_CNTL_NXTEN 0x00004000 - -/* DMA_DSCR_ADDR */ -#define DMA_DSCR_ADDR 0xFFFFFFFC /* for DMA Start Address (32 bit Word Align) */ -#define DMA_DSCR_ADDR_FIX_ADDR 0x00000002 /* Disable incrementing of DMA_ADDR */ -#define DMA_DSCR_ADDR_WRAPEN_SET 0x00000001 -#define DMA_DSCR_ADDR_WRAPEN_RST 0x00000000 - -/* DMA_DSCR_NEXT_ADDR TX/RX */ -#define DMA_DSCR_NXT_DSCR_ADDR 0xFFFFFFFC /* Points to Next descriptor starting address */ -#define DMA_DSCR_NXT_NPOL_EN 0x00000001 /* Next Descriptor Polling Enable */ -#define DMA_DSCR_NXT_NEXT_EN 0x00000002 /* Next Descriptor Fetch mode Enable */ - -/* DMA Descriptor Packet Status: TX */ -#define DMA_DSCR_TX_STATUS_FA_MSK 0x00000001 /* Frame Aborted */ -#define DMA_DSCR_TX_STATUS_JTO_MSK 0x00000002 /* Jabber Timeout. */ -#define DMA_DSCR_TX_STATUS_NOC_MSK 0x00000004 /* No Carrier */ -#define DMA_DSCR_TX_STATUS_LOC_MSK 0x00000008 /* Loss of Carrier */ -#define DMA_DSCR_TX_STATUS_EXCD_MSK 0x00000010 /* Excessive Deferral */ -#define DMA_DSCR_TX_STATUS_LCOLL_MSK 0x00000020 /* Late Collision */ -#define DMA_DSCR_TX_STATUS_ECOLL_MSK 0x00000040 /* Excessive Collisions */ -#define DMA_DSCR_TX_STATUS_URUN_MSK 0x00000080 /* Under Run */ -#define DMA_DSCR_TX_STATUS_DEFER_MSK 0x00000100 /* Deferred */ -#define DMA_DSCR_TX_STATUS_LCOLLO_MSK 0x00000200 /* Late Collision Observed */ -#define DMA_DSCR_TX_STATUS_CCNT_MSK 0x00003C00 /* Collision Count */ -#define DMA_DSCR_TX_STATUS_HBFAIL_MSK 0x00004000 /* Heart Beat Fail */ -#define DMA_DSCR_TX_STATUS_VALID_MSK 0x00010000 /* Valid bit indicator - This bit marks the dscriptors this word belong */ -#define DMA_DSCR_TX_STATUS_PKT_RTRY_MSK 0x80000000 /* Packet Retry */ -#define DMA_DSCR_TX_STATUS_ORED_ERR_MSK 0x000003D7 /* for total number of errors */ - -/* DMA Descriptor Packet Status: RX */ -#define DMA_DSCR_RX_STATUS_FLEN_MSK 0x000007ff /* 0x00003FFF * Frame Length (max 2047) */ -#define DMA_DSCR_RX_STATUS_FTLONG_MSK 0x00001000 /* Over Lenght */ -#define DMA_DSCR_RX_STATUS_FCI_MSK 0x00002000 /* Frame too Long */ -#define DMA_DSCR_RX_STATUS_WDTO_MSK 0x00004000 /* Watchdog Timeout */ -#define DMA_DSCR_RX_STATUS_RUNTFR_MSK 0x00008000 /* Runt Frame */ -#define DMA_DSCR_RX_STATUS_VALID_MSK 0x00010000 /* Valid bit indicator - This bit marks the dscriptors this word */ -#define DMA_DSCR_RX_STATUS_COLLSEEN_MSK 0x00020000 /* Collision Seen */ -#define DMA_DSCR_RX_STATUS_FTYPE_MSK 0x00040000 /* Frame Type */ -#define DMA_DSCR_RX_STATUS_MII_ERR_MSK 0x00080000 /* MII Error */ -#define DMA_DSCR_RX_STATUS_DRBBIT_MSK 0x00100000 /* Dribbling Bit */ -#define DMA_DSCR_RX_STATUS_CRC_ERR_MSK 0x00200000 /* CRC Error */ -#define DMA_DSCR_RX_STATUS_VLAN1_FR_MSK 0x00400000 /* One-Level VLAN Frame */ -#define DMA_DSCR_RX_STATUS_VLAN2_FR_MSK 0x00800000 /* Two-Level VLAN Frame */ -#define DMA_DSCR_RX_STATUS_LEN_ERR_MSK 0x01000000 /* Length Error */ -#define DMA_DSCR_RX_STATUS_CTL_FR_MSK 0x02000000 /* Control Frame */ -#define DMA_DSCR_RX_STATUS_UCTRL_FR_MSK 0x04000000 /* Unsupported Control Frame */ -#define DMA_DSCR_RX_STATUS_MCAST_FR_MSK 0x08000000 /* Multicast Frame */ -#define DMA_DSCR_RX_STATUS_BCAST_FR_MSK 0x10000000 /* BroadCast Frame */ -#define DMA_DSCR_RX_STATUS_FLT_FAIL_MSK 0x20000000 /* Filtering Fail */ -#define DMA_DSCR_RX_STATUS_PKT_FILT_MSK 0x40000000 /* Packet Filter */ -#define DMA_DSCR_RX_STATUS_MIS_FR_MSK 0x80000000 /* Missed Frame */ -#define DMA_DSCR_RX_STATUS_ERROR_MSK (DMA_DSCR_RX_STATUS_LEN_ERR | DMA_DSCR_RX_STATUS_CRC_ERR | \ - DMA_DSCR_RX_STATUS_MII_ERR | DMA_DSCR_RX_STATUS_RUNTFR | \ - DMA_DSCR_RX_STATUS_FTLONG | DMA_DSCR_RX_STATUS_COLLSEEN) -#define DMA_DSCR_RX_STATUS_ORED_ERR_MSK 0x00000000 /*Mask for total number of errors */ - - -#endif /* _ENET_H_ */ - -/******************** (C) COPYRIGHT 2006 STMicroelectronics *******************/ - diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/include/91x_fmi.h b/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/include/91x_fmi.h deleted file mode 100644 index 06e811567..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/include/91x_fmi.h +++ /dev/null @@ -1,184 +0,0 @@ -/******************** (C) COPYRIGHT 2006 STMicroelectronics ******************** -* File Name : 91x_fmi.h -* Author : MCD Application Team -* Date First Issued : 05/18/2006 : Version 1.0 -* Description : This file contains all the functions prototypes for the -* FMI software library. -******************************************************************************** -* History: -* 05/24/2006 : Version 1.1 -* 05/18/2006 : Version 1.0 -******************************************************************************** -* THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH -* CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS -* A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, INDIRECT -* OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT -* OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION -* CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. -*******************************************************************************/ - - -/* Define to prevent recursive inclusion ------------------------------------ */ - -#ifndef __91x_FMI_H -#define __91x_FMI_H - -/* ========================================================================== */ -/* When bank 1 is remapped at address 0x0, decomment the following line */ -/* ========================================================================== */ - -//#define Remap_Bank_1 - - -/* Includes ------------------------------------------------------------------*/ - -#include "91x_map.h" - -/* Exported types ------------------------------------------------------------*/ -/* Exported constants --------------------------------------------------------*/ - -/* FMI banks */ - -#ifdef Remap_Bank_1 - -#define FMI_BANK_0 ((*(vu32*)0x54000010) << 2) /* FMI Bank 0 */ -#define FMI_BANK_1 ((*(vu32*)0x5400000C) << 2) /* FMI Bank 1 */ - -#else /* Remap Bank 0 */ - -#define FMI_BANK_0 ((*(vu32*)0x5400000C) << 2) /* FMI Bank 0 */ -#define FMI_BANK_1 ((*(vu32*)0x54000010) << 2) /* FMI Bank 1 */ - -#endif - -/* FMI sectors */ - -#define FMI_B0S0 0x00000000 + FMI_BANK_0 /* Bank 0 sector 0 */ -#define FMI_B0S1 0x00010000 + FMI_BANK_0 /* Bank 0 sector 1 */ -#define FMI_B0S2 0x00020000 + FMI_BANK_0 /* Bank 0 sector 2 */ -#define FMI_B0S3 0x00030000 + FMI_BANK_0 /* Bank 0 sector 3 */ -#define FMI_B0S4 0x00040000 + FMI_BANK_0 /* Bank 0 sector 4 */ -#define FMI_B0S5 0x00050000 + FMI_BANK_0 /* Bank 0 sector 5 */ -#define FMI_B0S6 0x00060000 + FMI_BANK_0 /* Bank 0 sector 6 */ -#define FMI_B0S7 0x00070000 + FMI_BANK_0 /* Bank 0 sector 7 */ - -#define FMI_B1S0 0x00000000 + FMI_BANK_1 /* Bank 1 sector 0 */ -#define FMI_B1S1 0x00002000 + FMI_BANK_1 /* Bank 1 sector 1 */ -#define FMI_B1S2 0x00004000 + FMI_BANK_1 /* Bank 1 sector 2 */ -#define FMI_B1S3 0x00006000 + FMI_BANK_1 /* Bank 1 sector 3 */ - -/* FMI Flags */ - -#define FMI_FLAG_SPS 0x02 /* Sector Protection Status Flag */ -#define FMI_FLAG_PSS 0x04 /* Program Suspend Status Flag */ -#define FMI_FLAG_PS 0x10 /* Program Status Flag */ -#define FMI_FLAG_ES 0x20 /* Erase Status Flag */ -#define FMI_FLAG_ESS 0x40 /* Erase Suspend Status Flag */ -#define FMI_FLAG_PECS 0x80 /* FPEC Status Flag */ - -/* FMI read wait states */ - -#define FMI_READ_WAIT_STATE_1 0x0000 /* One read wait state */ -#define FMI_READ_WAIT_STATE_2 0x2000 /* Two read wait states */ -#define FMI_READ_WAIT_STATE_3 0x4000 /* Three read wait states */ - -/* FMI write wait states */ - -#define FMI_WRITE_WAIT_STATE_0 0xFFFFFEFF /* Zero wait state */ -#define FMI_WRITE_WAIT_STATE_1 0x00000100 /* One wait state */ - -/* FMI power down configuration */ - -#define FMI_PWD_ENABLE 0x1000 /* FMI Power Down Enable */ -#define FMI_PWD_DISABLE 0x0000 /* FMI Power Down Disable */ - -/* FMI low voltage detector */ - -#define FMI_LVD_ENABLE 0x0000 /* FMI Low Voltage Detector Enable */ -#define FMI_LVD_DISABLE 0x0800 /* FMI Low Voltage Detector Disable */ - -/* FMI frequency range */ - -#define FMI_FREQ_LOW 0x0000 /* FMI Low bus working frequency */ -#define FMI_FREQ_HIGH 0x0040 /* FMI High bus working gfrequency */ - /* Above 66 MHz*/ -/* FMI OTP word addresses */ - -#define FMI_OTP_WORD_0 0x00 /* OTP word 0 */ -#define FMI_OTP_WORD_1 0x04 /* OTP word 1 */ -#define FMI_OTP_WORD_2 0x08 /* OTP word 2 */ -#define FMI_OTP_WORD_3 0x0C /* OTP word 3 */ -#define FMI_OTP_WORD_4 0x10 /* OTP word 4 */ -#define FMI_OTP_WORD_5 0x14 /* OTP word 5 */ -#define FMI_OTP_WORD_6 0x18 /* OTP word 6 */ -#define FMI_OTP_WORD_7 0x1C /* OTP word 7 */ - -/* FMI OTP halfword addresses */ - -#define FMI_OTP_LOW_HALFWORD_0 0x00 /* OTP Low halfword 0 */ -#define FMI_OTP_HIGH_HALFWORD_0 0x02 /* OTP High halfword 0 */ -#define FMI_OTP_LOW_HALFWORD_1 0x04 /* OTP Low halfword 1 */ -#define FMI_OTP_HIGH_HALFWORD_1 0x06 /* OTP High halfword 1 */ -#define FMI_OTP_LOW_HALFWORD_2 0x08 /* OTP Low halfword 2 */ -#define FMI_OTP_HIGH_HALFWORD_2 0x0A /* OTP High halfword 2 */ -#define FMI_OTP_LOW_HALFWORD_3 0x0C /* OTP Low halfword 3 */ -#define FMI_OTP_HIGH_HALFWORD_3 0x0E /* OTP High halfword 3 */ -#define FMI_OTP_LOW_HALFWORD_4 0x10 /* OTP Low halfword 4 */ -#define FMI_OTP_HIGH_HALFWORD_4 0x12 /* OTP High halfword 4 */ -#define FMI_OTP_LOW_HALFWORD_5 0x14 /* OTP Low halfword 5 */ -#define FMI_OTP_HIGH_HALFWORD_5 0x16 /* OTP High halfword 5 */ -#define FMI_OTP_LOW_HALFWORD_6 0x18 /* OTP Low halfword 6 */ -#define FMI_OTP_HIGH_HALFWORD_6 0x1A /* OTP High halfword 6 */ -#define FMI_OTP_LOW_HALFWORD_7 0x1C /* OTP Low halfword 7 */ -#define FMI_OTP_HIGH_HALFWORD_7 0x1E /* OTP High halfword 7 */ - -/* FMI sectors Masks */ - -#define FMI_B0S0_MASK 0x0001 /* FMI B0S0 mask */ -#define FMI_B0S1_MASK 0x0002 /* FMI B0S1 mask */ -#define FMI_B0S2_MASK 0x0004 /* FMI B0S2 mask */ -#define FMI_B0S3_MASK 0x0008 /* FMI B0S3 mask */ -#define FMI_B0S4_MASK 0x0010 /* FMI B0S4 mask */ -#define FMI_B0S5_MASK 0x0020 /* FMI B0S5 mask */ -#define FMI_B0S6_MASK 0x0040 /* FMI B0S6 mask */ -#define FMI_B0S7_MASK 0x0080 /* FMI B0S7 mask */ - -#define FMI_B1S0_MASK 0x0100 /* FMI B1S0 mask */ -#define FMI_B1S1_MASK 0x0200 /* FMI B1S1 mask */ -#define FMI_B1S2_MASK 0x0400 /* FMI B1S2 mask */ -#define FMI_B1S3_MASK 0x0800 /* FMI B1S3 mask */ - -/* Timeout error */ - -#define FMI_TIME_OUT_ERROR 0x00 /* Timeout error */ -#define FMI_NO_TIME_OUT_ERROR 0x01 /* No Timeout error */ - -/* Module private variables --------------------------------------------------*/ -/* Exported macro ------------------------------------------------------------*/ -/* Private functions ---------------------------------------------------------*/ -/* Exported functions ------------------------------------------------------- */ - -void FMI_BankRemapConfig(u8 FMI_BootBankSize, u8 FMI_NonBootBankSize, \ - u32 FMI_BootBankAddress, u32 FMI_NonBootBankAddress); -void FMI_Config(u16 FMI_ReadWaitState, u32 FMI_WriteWaitState, u16 FMI_PWD,\ - u16 FMI_LVDEN, u16 FMI_FreqRange); -void FMI_EraseSector(vu32 FMI_Sector); -void FMI_EraseBank(vu32 FMI_Bank); -void FMI_WriteHalfWord(u32 FMI_Address, u16 FMI_Data); -void FMI_WriteOTPHalfWord(u8 FMI_OTPHWAddress, u16 FMI_OTPData); -u32 FMI_ReadWord(u32 FMI_Address); -u32 FMI_ReadOTPData(u8 FMI_OTPAddress); -FlagStatus FMI_GetFlagStatus(u8 FMI_Flag, vu32 FMI_Bank); -u16 FMI_GetReadWaitStateValue(void); -u16 FMI_GetWriteWaitStateValue(void); -void FMI_SuspendEnable(vu32 FMI_Bank); -void FMI_ResumeEnable(vu32 FMI_Bank); -void FMI_ClearFlag(vu32 FMI_Bank); -void FMI_WriteProtectionCmd(vu32 FMI_Sector, FunctionalState FMI_NewState); -FlagStatus FMI_GetWriteProtectionStatus(u32 FMI_Sector_Protection); -u8 FMI_WaitForLastOperation(vu32 FMI_Bank); - -#endif /* __91x_FMI_H */ - -/******************* (C) COPYRIGHT 2006 STMicroelectronics *****END OF FILE****/ - diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/include/91x_gpio.h b/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/include/91x_gpio.h deleted file mode 100644 index f4e565804..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/include/91x_gpio.h +++ /dev/null @@ -1,93 +0,0 @@ -/******************** (C) COPYRIGHT 2006 STMicroelectronics ******************** -* File Name : 91x_gpio.h -* Author : MCD Application Team -* Date First Issued : 05/18/2006 : Version 1.0 -* Description : This file contains all the functions prototypes for the -* GPIO software library. -******************************************************************************** -* History: -* 05/24/2006 : Version 1.1 -* 05/18/2006 : Version 1.0 -******************************************************************************** -* THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH -* CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS -* A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, INDIRECT -* OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT -* OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION -* CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. -*******************************************************************************/ - -/* Define to prevent recursive inclusion ------------------------------------ */ - -#ifndef _91x_GPIO_H -#define _91x_GPIO_H - -/* Includes ------------------------------------------------------------------*/ -#include "91x_map.h" - -/* GPIO Init structure definition */ -typedef struct -{ - u8 GPIO_Pin; - u8 GPIO_Direction; - u8 GPIO_Type; - u8 GPIO_IPConnected; - u16 GPIO_Alternate; -}GPIO_InitTypeDef; - -/* Bit_SET and Bit_RESET enumeration */ -typedef enum -{ Bit_RESET = 0, - Bit_SET -}BitAction; - - -/* Exported constants --------------------------------------------------------*/ -#define GPIO_Pin_None 0x00 -#define GPIO_Pin_0 0x01 -#define GPIO_Pin_1 0x02 -#define GPIO_Pin_2 0x04 -#define GPIO_Pin_3 0x08 -#define GPIO_Pin_4 0x10 -#define GPIO_Pin_5 0x20 -#define GPIO_Pin_6 0x40 -#define GPIO_Pin_7 0x80 -#define GPIO_Pin_All 0xFF - -#define GPIO_PinInput 0x00 -#define GPIO_PinOutput 0x01 - -#define GPIO_Type_PushPull 0x00 -#define GPIO_Type_OpenCollector 0x01 - -#define GPIO_IPConnected_Disable 0x00 -#define GPIO_IPConnected_Enable 0x01 - -#define GPIO_InputAlt1 0x00 -#define GPIO_OutputAlt1 0x01 -#define GPIO_OutputAlt2 0x02 -#define GPIO_OutputAlt3 0x03 - -#define GPIO_ANAChannel0 0x01 -#define GPIO_ANAChannel1 0x02 -#define GPIO_ANAChannel2 0x04 -#define GPIO_ANAChannel3 0x08 -#define GPIO_ANAChannel4 0x10 -#define GPIO_ANAChannel5 0x20 -#define GPIO_ANAChannel6 0x40 -#define GPIO_ANAChannel7 0x80 -#define GPIO_ANAChannelALL 0xFF - -void GPIO_DeInit(GPIO_TypeDef* GPIOx); -void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct); -void GPIO_StructInit(GPIO_InitTypeDef* GPIO_InitStruct); -u8 GPIO_ReadBit(GPIO_TypeDef* GPIOx, u8 GPIO_Pin); -u8 GPIO_Read(GPIO_TypeDef* GPIOx); -void GPIO_WriteBit(GPIO_TypeDef* GPIOx, u8 GPIO_Pin, BitAction BitVal); -void GPIO_Write(GPIO_TypeDef* GPIOx, u8 PortVal); -void GPIO_EMIConfig(FunctionalState NewState); -void GPIO_ANAPinConfig(u8 GPIO_ANAChannel, FunctionalState NewState); - -#endif /* _91x_GPIO_H */ - -/******************* (C) COPYRIGHT 2006 STMicroelectronics *****END OF FILE****/ diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/include/91x_it.h b/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/include/91x_it.h deleted file mode 100644 index a8e35fcb1..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/include/91x_it.h +++ /dev/null @@ -1,73 +0,0 @@ -/******************** (C) COPYRIGHT 2006 STMicroelectronics ******************** -* File Name : 91x_it.h -* Author : MCD Application Team -* Date First Issued : 05/18/2006 : Version 1.0 -* Description : This file contains the headers of the interrupt -* handlers'routines -******************************************************************************** -* History: -* 05/24/2006 : Version 1.1 -* 05/18/2006 : Version 1.0 -******************************************************************************** -* THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH -* CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS -* A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, INDIRECT -* OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT -* OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION -* CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. -*******************************************************************************/ - -/* Define to prevent recursive inclusion ------------------------------------ */ -#ifndef _91x_IT_H -#define _91x_IT_H - -/* Includes ------------------------------------------------------------------*/ -#include "91x_lib.h" - -/* Exported types ------------------------------------------------------------*/ -/* Exported constants --------------------------------------------------------*/ -/* Module private variables --------------------------------------------------*/ -/* Exported macro ------------------------------------------------------------*/ -/* Private functions ---------------------------------------------------------*/ -/* Exported functions ------------------------------------------------------- */ -void Undefined_Handler (void); -void SWI_Handler (void); -void Prefetch_Handler (void); -void Abort_Handler (void); -void FIQ_Handler (void); -void WDG_IRQHandler (void); -void SW_IRQHandler (void); -void ARMRX_IRQHandler (void); -void ARMTX_IRQHandler (void); -void TIM0_IRQHandler (void); -void TIM1_IRQHandler (void); -void TIM2_IRQHandler (void); -void TIM3_IRQHandler (void); -void USBHP_IRQHandler (void); -void USBLP_IRQHandler (void); -void SCU_IRQHandler (void); -void ENET_IRQHandler (void); -void DMA_IRQHandler (void); -void CAN_IRQHandler (void); -void MC_IRQHandler (void); -void ADC_IRQHandler (void); -void UART0_IRQHandler (void); -void UART1_IRQHandler (void); -void UART2_IRQHandler (void); -void I2C0_IRQHandler (void); -void I2C1_IRQHandler (void); -void SSP0_IRQHandler (void); -void SSP1_IRQHandler (void); -void LVD_IRQHandler (void); -void RTC_IRQHandler (void); -void WIU_IRQHandler (void); -void EXTIT0_IRQHandler (void); -void EXTIT1_IRQHandler (void); -void EXTIT2_IRQHandler (void); -void EXTIT3_IRQHandler (void); -void USBWU_IRQHandler (void); -void PFQBC_IRQHandler (void); - -#endif /* _91x_IT_H */ - -/******************* (C) COPYRIGHT 2006 STMicroelectronics *****END OF FILE****/ diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/include/91x_lib.h b/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/include/91x_lib.h deleted file mode 100644 index 823b25012..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/include/91x_lib.h +++ /dev/null @@ -1,114 +0,0 @@ -/******************** (C) COPYRIGHT 2006 STMicroelectronics ******************** -* File Name : 91x_lib.h -* Author : MCD Application Team -* Date First Issued : 05/18/2006 : Version 1.0 -* Description : Used to include the peripherals header file in the -* user application. -******************************************************************************** -* History: -* 05/24/2006 : Version 1.1 -* 05/18/2006 : Version 1.0 -******************************************************************************** -* THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH -* CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS -* A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, INDIRECT -* OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT -* OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION -* CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. -*******************************************************************************/ - -#ifndef __91x_LIB_H -#define __91x_LIB_H - -#include "91x_map.h" -#include "91x_conf.h" - -#ifdef _AHBAPB - #include "91x_ahbapb.h" -#endif /* _AHBAPB */ - -#ifdef _EMI - #include "91x_emi.h" -#endif /* _EMI */ - -#ifdef _DMA - #include "91x_dma.h" -#endif /* _DMA */ - -#ifdef _FMI - #include "91x_fmi.h" -#endif /* _FMI */ - -#ifdef _VIC - #include "91x_vic.h" -#endif /* _VIC */ - -#ifdef _WIU - #include "91x_wiu.h" -#endif /* _WIU */ - -#ifdef _TIM - #include "91x_tim.h" -#endif /* _TIM */ - -#ifdef _GPIO - #include "91x_gpio.h" -#endif /* _GPIO */ - -#ifdef _RTC - #include "91x_rtc.h" -#endif /* _RTC */ - -#ifdef _SCU - #include "91x_scu.h" -#endif /* _SCU */ - -#ifdef _UART - #include "91x_uart.h" -#endif /* _UART */ - -#ifdef _SSP - #include "91x_ssp.h" -#endif /* _SSP */ - -#ifdef _CAN - #include "91x_can.h" -#endif /* _CAN */ - -#ifdef _ADC - #include "91x_adc.h" -#endif /* _ADC */ - -#ifdef _WDG - #include "91x_wdg.h" -#endif /* _WDG */ - -#ifdef _I2C - #include "91x_i2c.h" -#endif /* _I2C */ - -#ifdef _WIU - #include "91x_wiu.h" -#endif - -#ifdef _MC - #include "91x_mc.h" -#endif - -#ifdef _ENET - #include "91x_enet.h" -#endif - -/* Exported types ------------------------------------------------------------*/ -/* Exported constants --------------------------------------------------------*/ -/* Module private variables --------------------------------------------------*/ -/* Exported macro ------------------------------------------------------------*/ -/* Private functions ---------------------------------------------------------*/ -/* Exported functions ------------------------------------------------------- */ - - void debug( void ); - - -#endif /* __91x_LIB_H */ - -/******************* (C) COPYRIGHT 2006 STMicroelectronics *****END OF FILE****/ diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/include/91x_map.h b/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/include/91x_map.h deleted file mode 100644 index 147302ff6..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/include/91x_map.h +++ /dev/null @@ -1,878 +0,0 @@ -/******************** (C) COPYRIGHT 2006 STMicroelectronics ******************** -* File Name : 91x_map.h -* Author : MCD Application Team -* Date First Issued : 05/18/2006 : Version 1.0 -* Description : Peripherals registers definition and memory mapping. -******************************************************************************** -* History: -* 05/24/2006 : Version 1.1 -* 05/18/2006 : Version 1.0 -******************************************************************************** -* THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH -* CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS -* A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, INDIRECT -* OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT -* OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION -* CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. -*******************************************************************************/ - -/* Define to prevent recursive inclusion ------------------------------------ */ -#ifndef __91x_MAP_H -#define __91x_MAP_H - -#ifndef EXT - #define EXT extern -#endif /* EXT */ - -/* Includes ------------------------------------------------------------------*/ -#include "91x_conf.h" -#include "91x_type.h" - -/******************************************************************************/ -/* IP registers structures */ -/******************************************************************************/ - -/*------------------------------------ FMI -----------------------------------*/ - -typedef struct -{ - vu32 BBSR; /* Boot Bank Size Register */ - vu32 NBBSR; /* Non-Boot Bank Size Register */ - vu32 EMPTY1; - vu32 BBADR; /* Boot Bank Base Address Register */ - vu32 NBBADR; /* Non-Boot Bank Base Address Register */ - vu32 EMPTY2; - vu32 CR; /* Control Register */ - vu32 SR; /* Status Register */ - vu32 BCE5ADDR; /* BC Fifth Entry Target Address Register */ -} FMI_TypeDef; - -/*---------------------- Analog to Digital Convertor ------------------------*/ - -typedef struct -{ - vu16 CR; /* Control Register */ - vu16 EMPTY1; - vu16 CCR; /* Channel Configuration Register */ - vu16 EMPTY2; - vu16 HTR; /* Higher Threshold Register */ - vu16 EMPTY3; - vu16 LTR; /* Lower Threshold Register */ - vu16 EMPTY4; - vu16 CRR; /* Compare Result Register */ - vu16 EMPTY5; - vu16 DR0; /* Data Register for Channel 0 */ - vu16 EMPTY6; - vu16 DR1; /* Data Register for Channel 1 */ - vu16 EMPTY7; - vu16 DR2; /* Data Register for Channel 2 */ - vu16 EMPTY8; - vu16 DR3; /* Data Register for Channel 3 */ - vu16 EMPTY9; - vu16 DR4; /* Data Register for Channel 4 */ - vu16 EMPTY10; - vu16 DR5; /* Data Register for Channel 5 */ - vu16 EMPTY11; - vu16 DR6; /* Data Register for Channel 6 */ - vu16 EMPTY12; - vu16 DR7; /* Data Register for Channel 7 */ - vu16 EMPTY13; - vu16 PRS; /* Prescaler Value Register */ - vu16 EMPTY14; -} ADC_TypeDef; - -/*--------------------- AHB APB BRIDGE registers strcture --------------------*/ - -typedef struct -{ - vu32 BSR; /* Bridge Status Register */ - vu32 BCR; /* Bridge Configuration Register */ - vu32 PAER; /* Peripheral Address Error register */ -} AHBAPB_TypeDef; - -/*--------------- Controller Area Network Interface Register -----------------*/ - -typedef struct -{ - vu16 CRR; /* IFn Command request Register */ - vu16 EMPTY1; - vu16 CMR; /* IFn Command Mask Register */ - vu16 EMPTY2; - vu16 M1R; /* IFn Message Mask 1 Register */ - vu16 EMPTY3; - vu16 M2R; /* IFn Message Mask 2 Register */ - vu16 EMPTY4; - vu16 A1R; /* IFn Message Arbitration 1 Register */ - vu16 EMPTY5; - vu16 A2R; /* IFn Message Arbitration 2 Register */ - vu16 EMPTY6; - vu16 MCR; /* IFn Message Control Register */ - vu16 EMPTY7; - vu16 DA1R; /* IFn DATA A 1 Register */ - vu16 EMPTY8; - vu16 DA2R; /* IFn DATA A 2 Register */ - vu16 EMPTY9; - vu16 DB1R; /* IFn DATA B 1 Register */ - vu16 EMPTY10; - vu16 DB2R; /* IFn DATA B 2 Register */ - vu16 EMPTY11[27]; -} CAN_MsgObj_TypeDef; - -typedef struct -{ - vu16 CR; /* Control Register */ - vu16 EMPTY1; - vu16 SR; /* Status Register */ - vu16 EMPTY2; - vu16 ERR; /* Error counter Register */ - vu16 EMPTY3; - vu16 BTR; /* Bit Timing Register */ - vu16 EMPTY4; - vu16 IDR; /* Interrupt Identifier Register */ - vu16 EMPTY5; - vu16 TESTR; /* Test Register */ - vu16 EMPTY6; - vu16 BRPR; /* BRP Extension Register */ - vu16 EMPTY7[3]; - CAN_MsgObj_TypeDef sMsgObj[2]; - vu16 EMPTY8[16]; - vu16 TXR1R; /* Transmission request 1 Register */ - vu16 EMPTY9; - vu16 TXR2R; /* Transmission Request 2 Register */ - vu16 EMPTY10[13]; - vu16 ND1R; /* New Data 1 Register */ - vu16 EMPTY11; - vu16 ND2R; /* New Data 2 Register */ - vu16 EMPTY12[13]; - vu16 IP1R; /* Interrupt Pending 1 Register */ - vu16 EMPTY13; - vu16 IP2R; /* Interrupt Pending 2 Register */ - vu16 EMPTY14[13]; - vu16 MV1R; /* Message Valid 1 Register */ - vu16 EMPTY15; - vu16 MV2R; /* Message VAlid 2 Register */ - vu16 EMPTY16; -} CAN_TypeDef; - -/*----------------------- System Control Unit---------------------------------*/ - -typedef struct -{ - vu32 CLKCNTR; /* Clock Control Register */ - vu32 PLLCONF; /* PLL Configuration Register */ - vu32 SYSSTATUS; /* System Status Register */ - vu32 PWRMNG; /* Power Management Register */ - vu32 ITCMSK; /* Interrupt Mask Register */ - vu32 PCGRO; /* Peripheral Clock Gating Register 0 */ - vu32 PCGR1; /* Peripheral Clock Gating Register 1 */ - vu32 PRR0; /* Peripheral Reset Register 0 */ - vu32 PRR1; /* Peripheral Reset Register 1 */ - vu32 MGR0; /* Idle Mode Mask Gating Register 0 */ - vu32 MGR1; /* Idle Mode Mask Gating Register 1 */ - vu32 PECGR0; /* Peripheral Emulation Clock Gating Register 0 */ - vu32 PECGR1; /* Peripheral Emulation Clock Gating Register 1 */ - vu32 SCR0; /* System Configuration Register 0 */ - vu32 SCR1; /* System Configuration Register 1 */ - vu32 SCR2; /* System Configuration Register 2 */ - u32 EMPTY1; - vu32 GPIOOUT[8]; /* GPIO Output Registers */ - vu32 GPIOIN[8]; /* GPIO Input Registers */ - vu32 GPIOTYPE[10]; /* GPIO Type Registers */ - vu32 GPIOEMI; /* GPIO EMI Selector Register */ - vu32 WKUPSEL; /* Wake-Up Selection Register */ - u32 EMPTY2[2]; - vu32 GPIOANA; /* GPIO Analag mode Register */ -} SCU_TypeDef; - -/*------------------------- DMA Channelx Registers ---------------------------*/ - -typedef struct -{ - vu32 SRC; /* Channelx Source Address Register */ - vu32 DES; /* Channelx Destination Address Register */ - vu32 LLI; /* Channelx Lincked List Item Register */ - vu32 CC; /* Channelx Contol Register */ - vu32 CCNF; /* Channelx Configuration Register */ -} DMA_Channel_TypeDef; - -/* x can be ,0,1,2,3,4,5,6 or 7. There are eight Channels AHB BUS Master */ - -/*----------------------------- DMA Controller -------------------------------*/ - -typedef struct -{ - vu32 ISR; /* Interrupt Status Register */ - vu32 TCISR; /* Terminal Count Interrupt Status Register */ - vu32 TCICR; /* Terminal CountInterrupt Clear Register */ - vu32 EISR; /* Error Interrupt Status Register */ - vu32 EICR; /* Error Interrupt Clear Register */ - vu32 TCRISR; /* Terminal Count Raw Interrupt Status Register */ - vu32 ERISR; /* Raw Error Interrupt Status Register */ - vu32 ENCSR; /* Enabled Channel Status Register */ - vu32 SBRR; /* Software Burst Request Register */ - vu32 SSRR; /* Software Single Request Register */ - vu32 SLBRR; /* Software Last Burst Request Register */ - vu32 SLSRR; /* Software Last Single Request Register */ - vu32 CNFR; /* Configuration Register */ - vu32 SYNR; /* Syncronization Register */ -} DMA_TypeDef; - -/*--------------------------------- TIM Timer --------------------------------*/ - -typedef struct -{ - vu16 IC1R; /* Input Capture 1 Register */ - vu16 EMPTY1; - vu16 IC2R; /* Input Capture 2 Register */ - vu16 EMPTY2; - vu16 OC1R; /* Output Compare 1 Register */ - vu16 EMPTY3; - vu16 OC2R; /* Output Compare 2 Register */ - vu16 EMPTY4; - vu16 CNTR; /* Counter Register */ - vu16 EMPTY5; - vu16 CR1; /* Control Register 1 */ - vu16 EMPTY6; - vu16 CR2; /* Control Register 2 */ - vu16 EMPTY7; - vu16 SR; /* Status Register */ - vu16 EMPTY8; -} TIM_TypeDef; - -/*---------------------------- EMI Bankx Registers ---------------------------*/ - -typedef struct -{ - vu32 ICR; /* Bankx Idle Cycle Control Register */ - vu32 RCR; /* Bankx Read Wait State Control Register */ - vu32 WCR; /* Bankx Write Wait State Control Register */ - vu32 OECR; /* Bankx Output Enable Assertion Delay Control Register */ - vu32 WECR; /* Bankx Write Enable Assertion Delay Control Register */ - vu32 BCR; /* Bankx Control Register */ - } EMI_Bank_TypeDef; - -/*---------------------------- Ethernet Controller ---------------------------*/ - -/* MAC Registers */ -typedef struct -{ - vu32 MCR; /* ENET Control Register */ - vu32 MAH; /* ENET Address High Register */ - vu32 MAL; /* ENET Address Low Register */ - vu32 MCHA; /* Multicast Address High Register */ - vu32 MCLA; /* Multicast Address Low Register */ - vu32 MIIA; /* MII Address Register */ - vu32 MIID; /* MII Data Register */ - vu32 MCF; /* ENET Control Frame Register */ - vu32 VL1; /* VLAN1 Register */ - vu32 VL2; /* VLAN2 register */ - vu32 MTS; /* ENET Transmission Status Register */ - vu32 MRS; /* ENET Reception Status Register */ -} ENET_MAC_TypeDef; - -/* DMA Registers */ -typedef struct -{ - vu32 SCR; /* DMA Status and Control Register */ - vu32 IER; /* DMA Interrupt Sources Enable Register */ - vu32 ISR; /* DMA Interrupt Status Register */ - vu32 CCR; /* Clock Control Relation : HCLK, PCLK and - ENET_CLK phase relations */ - vu32 RXSTR; /* Rx DMA start Register */ - vu32 RXCR; /* Rx DMA Control Register */ - vu32 RXSAR; /* Rx DMA Base Address Register */ - vu32 RXNDAR; /* Rx DMA Next Descriptor Address Register */ - vu32 RXCAR; /* Rx DMA Current Address Register */ - vu32 RXCTCR; /* Rx DMA Current Transfer Count Register */ - vu32 RXTOR; /* Rx DMA FIFO Time Out Register */ - vu32 RXSR; /* Rx DMA FIFO Status Register */ - vu32 TXSTR; /* Tx DMA start Register */ - vu32 TXCR; /* Tx DMA Control Register */ - vu32 TXSAR; /* Tx DMA Base Address Register */ - vu32 TXNDAR; /* Tx DMA Next Descriptor Address Register */ - vu32 TXCAR; /* Tx DMA Current Address Register */ - vu32 TXTCR; /* Tx DMA Current Transfer Count Register */ - vu32 TXTOR; /* Tx DMA FIFO Time Out Register */ - vu32 TXSR; /* Tx DMA FIFO Status Register */ -} ENET_DMA_TypeDef; - -/*------------------------------------- GPIO ---------------------------------*/ - -typedef struct -{ - vu8 DR[1021]; /* Data Register */ - vu32 DDR; /* Data Direction Register */ -} GPIO_TypeDef; - -/*-------------------------------- I2C interface -----------------------------*/ - -typedef struct -{ - vu8 CR; /* Control Register */ - vu8 EMPTY1[3]; - vu8 SR1; /* Status Register 1 */ - vu8 EMPTY2[3]; - vu8 SR2; /* Status Register 2 */ - vu8 EMPTY3[3]; - vu8 CCR; /* Clock Control Register */ - vu8 EMPTY4[3]; - vu8 OAR1; /* Own Address Register 1 */ - vu8 EMPTY5[3]; - vu8 OAR2; /* Own Address Register 2 */ - vu8 EMPTY6[3]; - vu8 DR; /* Data Register */ - vu8 EMPTY7[3]; - vu8 ECCR; /* Extended Clock Control Register */ - vu8 EMPTY8[3]; -} I2C_TypeDef; - -/*------------------------------------- VIC ----------------------------------*/ - -typedef struct -{ - vu32 ISR; /* IRQ Status Register */ - vu32 FSR; /* FIQ Status Register */ - vu32 RINTSR; /* Raw Interrupt Status Register */ - vu32 INTSR; /* Interrupt Select Register */ - vu32 INTER; /* Interrupt Enable Register */ - vu32 INTECR; /* Interrupt Enable Clear Register */ - vu32 SWINTR; /* Software Interrupt Register */ - vu32 SWINTCR; /* Software Interrupt clear Register */ - vu32 PER; /* Protection Enable Register */ - vu32 EMPTY1[3]; - vu32 VAR; /* Vector Address Register */ - vu32 DVAR; /* Default Vector Address Register */ - vu32 EMPTY2[50]; - vu32 VAiR[16]; /* Vector Address 0-15 Register */ - vu32 EMPTY3[48]; - vu32 VCiR[16]; /* Vector Control 0-15 Register */ -} VIC_TypeDef; - -/*-------------------------------- Motor Control -----------------------------*/ - -typedef struct -{ - vu16 TCPT; /* Tacho Capture Register */ - vu16 EMPTY1; - vu16 TCMP; /* Tacho Compare Register */ - vu16 EMPTY2; - vu16 IPR; /* Input Pending Register */ - vu16 EMPTY3; - vu16 TPRS; /* Tacho Prescaler Register */ - vu16 EMPTY4; - vu16 CPRS; /* PWM Counter Prescaler Register */ - vu16 EMPTY5; - vu16 REP; /* Repetition Counter Register */ - vu16 EMPTY6; - vu16 CMPW; /* Compare Phase W Preload Register */ - vu16 EMPTY7; - vu16 CMPV; /* Compare Phase V Preload Register */ - vu16 EMPTY8; - vu16 CMPU; /* Compare Phase U Preload Register */ - vu16 EMPTY9; - vu16 CMP0; /* Compare 0 Preload Register */ - vu16 EMPTY10; - vu16 PCR0; /* Peripheral Control Register 0 */ - vu16 EMPTY11; - vu16 PCR1; /* Peripheral Control Register 1 */ - vu16 EMPTY12; - vu16 PCR2; /* Peripheral Control Register 2 */ - vu16 EMPTY13; - vu16 PSR; /* Polarity Selection Register */ - vu16 EMPTY14; - vu16 OPR; /* Output Peripheral Register */ - vu16 EMPTY15; - vu16 IMR; /* Interrupt Mask Register */ - vu16 EMPTY16; - vu16 DTG; /* Dead Time Generator Register */ - vu16 EMPTY17; - vu16 ESC; /* Emergency Stop Clear Register */ - vu16 EMPTY18; -}MC_TypeDef; - -/*------------------------------------- RTC ----------------------------------*/ - -typedef struct -{ - vu32 TR; /* Time Register */ - vu32 DTR; /* Date Register */ - vu32 ATR; /* Alarm time Register */ - vu32 CR; /* Control Register */ - vu32 SR; /* Status Register */ - vu32 MILR; /* Millisec Register */ -}RTC_TypeDef; - -/*------------------------------------- SSP ----------------------------------*/ - -typedef struct -{ - vu16 CR0; /* Control Register 1 */ - vu16 EMPTY1; - vu16 CR1; /* Control Register 2 */ - vu16 EMPTY2; - vu16 DR; /* Data Register */ - vu16 EMPTY3; - vu16 SR; /* Status Register */ - vu16 EMPTY4; - vu16 PR; /* Clock Prescale Register */ - vu16 EMPTY5; - vu16 IMSCR; /* Interrupt Mask Set or Clear Register */ - vu16 EMPTY6; - vu16 RISR; /* Raw Interrupt Status Register */ - vu16 EMPTY7; - vu16 MISR; /* Masked Interrupt Status Register */ - vu16 EMPTY8; - vu16 ICR; /* Interrupt Clear Register */ - vu16 EMPTY9; - vu16 DMACR; /* DMA Control Register */ - vu16 EMPTY10; -}SSP_TypeDef; - -/*------------------------------------ UART ----------------------------------*/ - -typedef struct -{ - vu16 DR; /* Data Register */ - vu16 EMPTY1; - vu16 RSECR; /* Receive Status Register (read)/Error Clear Register (write) */ - vu16 EMPTY2[9]; - vu16 FR; /* Flag Register */ - vu16 EMPTY3[3]; - vu16 ILPR; /* IrDA Low-Power counter Register */ - vu16 EMPTY4; - vu16 IBRD; /* Integer Baud Rate Divisor Register */ - vu16 EMPTY5; - vu16 FBRD; /* Fractional Baud Rate Divisor Register */ - vu16 EMPTY6; - vu16 LCR; /* Line Control Register, High byte */ - vu16 EMPTY7; - vu16 CR; /* Control Register */ - vu16 EMPTY8; - vu16 IFLS; /* Interrupt FIFO Level Select Register */ - vu16 EMPTY9; - vu16 IMSC; /* Interrupt Mask Set/Clear Register */ - vu16 EMPTY10; - vu16 RIS; /* Raw Interrupt Status Register */ - vu16 EMPTY11; - vu16 MIS; /* Masked Interrupt Status Register */ - vu16 EMPTY12; - vu16 ICR; /* Interrupt Clear Register */ - vu16 EMPTY13; - vu16 DMACR; /* DMA Control Register */ - vu16 EMPTY14; -}UART_TypeDef; - -/*------------------------------- Wake-up System -----------------------------*/ - -typedef struct -{ - vu32 CTRL; /* Control Register */ - vu32 MR; /* Mask Register */ - vu32 TR; /* Trigger Register */ - vu32 PR; /* Pending Register */ - vu32 INTR; /* Software Interrupt Register */ -} WIU_TypeDef; - -/*------------------------------- WatchDog Timer -----------------------------*/ - -typedef struct -{ - vu16 CR; /* Control Register */ - vu16 EMPTY1; - vu16 PR; /* Presclar Register */ - vu16 EMPTY2; - vu16 VR; /* Pre-load Value Register */ - vu16 EMPTY3; - vu16 CNT; /* Counter Register */ - vu16 EMPTY4; - vu16 SR; /* Status Register */ - vu16 EMPTY5; - vu16 MR; /* Mask Register */ - vu16 EMPTY6; - vu16 KR; /* Key Register */ - vu16 EMPTY7; -} WDG_TypeDef; - -/******************************************************************************* -* Memory Mapping of STR91x * -*******************************************************************************/ - -#define AHB_APB_BRDG0_U (0x58000000) /* AHB/APB Bridge 0 UnBuffered Space */ -#define AHB_APB_BRDG0_B (0x48000000) /* AHB/APB Bridge 0 Buffered Space */ - -#define AHB_APB_BRDG1_U (0x5C000000) /* AHB/APB Bridge 1 UnBuffered Space */ -#define AHB_APB_BRDG1_B (0x4C000000) /* AHB/APB Bridge 1 Buffered Space */ - -#define AHB_EMI_U (0x74000000) /* EMI UnBuffered Space */ -#define AHB_EMI_B (0x64000000) /* EMI Buffered Space */ - -#define AHB_DMA_U (0x78000000) /* DMA UnBuffered Space */ -#define AHB_DMA_B (0x68000000) /* DMA Buffered Space */ - -#define AHB_ENET_MAC_U (0x7C000400) /* ENET_MAC UnBuffered Space */ -#define AHB_ENET_MAC_B (0x6C000400) /* ENET_MAC Buffered Space */ - -#define AHB_ENET_DMA_U (0x7C000000) /* ENET_DMA Unbuffered Space */ -#define AHB_ENET_DMA_B (0x6C000000) /* ENET_DMA Buffered Space */ - -#define AHB_VIC1_U (0xFC000000) /* Secondary VIC1 UnBuffered Space */ -#define AHB_VIC0_U (0xFFFFF000) /* Primary VIC0 UnBuffered Space */ - -#define AHB_FMI_U (0x54000000) /* FMI Unbuffered Space */ -#define AHB_FMI_B (0x44000000) /* FMI buffered Space */ - -/******************************************************************************* -* Addresses related to the VICs' peripherals * -*******************************************************************************/ - -#define VIC0_BASE (AHB_VIC0_U) -#define VIC1_BASE (AHB_VIC1_U) - -/******************************************************************************* -* Addresses related to the EMI banks * -*******************************************************************************/ - -#define AHB_EMIB3_OFST (0x00000040) /* Offset of EMI bank3 */ -#define AHB_EMIB2_OFST (0x00000020) /* Offset of EMI bank2 */ -#define AHB_EMIB1_OFST (0x00000000) /* Offset of EMI bank1 */ -#define AHB_EMIB0_OFST (0x000000E0) /* Offset of EMI bank0 */ - -/******************************************************************************* -* Addresses related to the DMA peripheral * -*******************************************************************************/ - -#define AHB_DMA_Channel0_OFST (0x00000100) /* Offset of Channel 0 */ -#define AHB_DMA_Channel1_OFST (0x00000120) /* Offset of Channel 1 */ -#define AHB_DMA_Channel2_OFST (0x00000140) /* Offset of Channel 2 */ -#define AHB_DMA_Channel3_OFST (0x00000160) /* Offset of Channel 3 */ -#define AHB_DMA_Channel4_OFST (0x00000180) /* Offset of Channel 4 */ -#define AHB_DMA_Channel5_OFST (0x000001A0) /* Offset of Channel 5 */ -#define AHB_DMA_Channel6_OFST (0x000001C0) /* Offset of Channel 6 */ -#define AHB_DMA_Channel7_OFST (0x000001E0) /* Offset of Channel 7 */ - -/******************************************************************************* -* Addresses related to the APB0 sub-system * -*******************************************************************************/ - -#define APB_WIU_OFST (0x00001000) /* Offset of WIU */ -#define APB_TIM0_OFST (0x00002000) /* Offset of TIM0 */ -#define APB_TIM1_OFST (0x00003000) /* Offset of TIM1 */ -#define APB_TIM2_OFST (0x00004000) /* Offset of TIM2 */ -#define APB_TIM3_OFST (0x00005000) /* Offset of TIM3 */ -#define APB_GPIO0_OFST (0x00006000) /* Offset of GPIO0 */ -#define APB_GPIO1_OFST (0x00007000) /* Offset of GPIO1 */ -#define APB_GPIO2_OFST (0x00008000) /* Offset of GPIO2 */ -#define APB_GPIO3_OFST (0x00009000) /* Offset of GPIO3 */ -#define APB_GPIO4_OFST (0x0000A000) /* Offset of GPIO4 */ -#define APB_GPIO5_OFST (0x0000B000) /* Offset of GPIO5 */ -#define APB_GPIO6_OFST (0x0000C000) /* Offset of GPIO6 */ -#define APB_GPIO7_OFST (0x0000D000) /* Offset of GPIO7 */ -#define APB_GPIO8_OFST (0x0000E000) /* Offset of GPIO8 */ -#define APB_GPIO9_OFST (0x0000F000) /* Offset of GPIO9 */ - -/******************************************************************************* -* Addresses related to the APB1 sub-system * -*******************************************************************************/ - -#define APB_RTC_OFST (0x00001000) /* Offset of RTC */ -#define APB_SCU_OFST (0x00002000) /* Offset of System Controller */ -#define APB_MC_OFST (0x00003000) /* Offset of Motor Control */ -#define APB_UART0_OFST (0x00004000) /* Offset of UART0 */ -#define APB_UART1_OFST (0x00005000) /* Offset of UART1 */ -#define APB_UART2_OFST (0x00006000) /* Offset of UART2 */ -#define APB_SSP0_OFST (0x00007000) /* Offset of SSP0 */ -#define APB_SSP1_OFST (0x00008000) /* Offset of SSPI */ -#define APB_CAN_OFST (0x00009000) /* Offset of CAN */ -#define APB_ADC_OFST (0x0000A000) /* Offset of ADC */ -#define APB_WDG_OFST (0x0000B000) /* Offset of WDG */ -#define APB_I2C0_OFST (0x0000C000) /* Offset of I2C0 */ -#define APB_I2C1_OFST (0x0000D000) /* Offset of I2C1 */ - -/*----------------------------------------------------------------------------*/ -/*----------------------------- Unbuffered Mode ------------------------------*/ -/*----------------------------------------------------------------------------*/ - -#ifndef Buffered - -/******************************************************************************* -* AHBAPB peripheral Unbuffered Base Address * -*******************************************************************************/ - -#define AHBAPB0_BASE (AHB_APB_BRDG0_U) -#define AHBAPB1_BASE (AHB_APB_BRDG1_U) - -/******************************************************************************* -* ENET peripheral Unbuffered Base Address * -*******************************************************************************/ - -#define ENET_MAC_BASE (AHB_ENET_MAC_U) -#define ENET_DMA_BASE (AHB_ENET_DMA_U) - -/******************************************************************************* -* DMA peripheral Unbuffered Base Address * -*******************************************************************************/ - -#define DMA_BASE (AHB_DMA_U) - -/******************************************************************************* -* EMI peripheral Unbuffered Base Address * -*******************************************************************************/ - -#define EMI_BASE (AHB_EMI_U) - -/******************************************************************************* -* FMI peripheral Unbuffered Base Address * -*******************************************************************************/ - -#define FMI_BASE (AHB_FMI_U) - - -#else /* Buffered */ - -/*----------------------------------------------------------------------------*/ -/*------------------------------ Buffered Mode -------------------------------*/ -/*----------------------------------------------------------------------------*/ - -/******************************************************************************* -* AHBAPB peripheral Buffered Base Address * -*******************************************************************************/ - -#define AHBAPB0_BASE (AHB_APB_BRDG0_B) -#define AHBAPB1_BASE (AHB_APB_BRDG1_B) - -/******************************************************************************* -* ENET peripheral Unbuffered Base Address * -*******************************************************************************/ - -#define ENET_MAC_BASE (AHB_ENET_MAC_B) -#define ENET_DMA_BASE (AHB_ENET_DMA_B) - -/******************************************************************************* -* DMA peripheral Buffered Base Address * -*******************************************************************************/ - -#define DMA_BASE (AHB_DMA_B) - -/******************************************************************************* -* EMI peripheral Buffered Base Address * -*******************************************************************************/ - -#define EMI_BASE (AHB_EMI_B) - -/******************************************************************************* -* FMI peripheral Buffered Base Address * -*******************************************************************************/ - -#define FMI_BASE (AHB_FMI_B) - -#endif /* Buffered */ - -/******************************************************************************* -* DMA channels Base Address * -*******************************************************************************/ -#define DMA_Channel0_BASE (DMA_BASE + AHB_DMA_Channel0_OFST) -#define DMA_Channel1_BASE (DMA_BASE + AHB_DMA_Channel1_OFST) -#define DMA_Channel2_BASE (DMA_BASE + AHB_DMA_Channel2_OFST) -#define DMA_Channel3_BASE (DMA_BASE + AHB_DMA_Channel3_OFST) -#define DMA_Channel4_BASE (DMA_BASE + AHB_DMA_Channel4_OFST) -#define DMA_Channel5_BASE (DMA_BASE + AHB_DMA_Channel5_OFST) -#define DMA_Channel6_BASE (DMA_BASE + AHB_DMA_Channel6_OFST) -#define DMA_Channel7_BASE (DMA_BASE + AHB_DMA_Channel7_OFST) - -/******************************************************************************* -* EMI Banks peripheral Base Address * -*******************************************************************************/ - -#define EMI_Bank0_BASE (EMI_BASE + AHB_EMIB0_OFST) -#define EMI_Bank1_BASE (EMI_BASE + AHB_EMIB1_OFST) -#define EMI_Bank2_BASE (EMI_BASE + AHB_EMIB2_OFST) -#define EMI_Bank3_BASE (EMI_BASE + AHB_EMIB3_OFST) - -/******************************************************************************* -* APB0 Peripherals' Base addresses * -*******************************************************************************/ - -#define WIU_BASE (AHBAPB0_BASE + APB_WIU_OFST) -#define TIM0_BASE (AHBAPB0_BASE + APB_TIM0_OFST) -#define TIM1_BASE (AHBAPB0_BASE + APB_TIM1_OFST) -#define TIM2_BASE (AHBAPB0_BASE + APB_TIM2_OFST) -#define TIM3_BASE (AHBAPB0_BASE + APB_TIM3_OFST) -#define GPIO0_BASE (AHBAPB0_BASE + APB_GPIO0_OFST) -#define GPIO1_BASE (AHBAPB0_BASE + APB_GPIO1_OFST) -#define GPIO2_BASE (AHBAPB0_BASE + APB_GPIO2_OFST) -#define GPIO3_BASE (AHBAPB0_BASE + APB_GPIO3_OFST) -#define GPIO4_BASE (AHBAPB0_BASE + APB_GPIO4_OFST) -#define GPIO5_BASE (AHBAPB0_BASE + APB_GPIO5_OFST) -#define GPIO6_BASE (AHBAPB0_BASE + APB_GPIO6_OFST) -#define GPIO7_BASE (AHBAPB0_BASE + APB_GPIO7_OFST) -#define GPIO8_BASE (AHBAPB0_BASE + APB_GPIO8_OFST) -#define GPIO9_BASE (AHBAPB0_BASE + APB_GPIO9_OFST) - -/******************************************************************************* -* APB1 Peripherals' Base addresses * -*******************************************************************************/ - -#define RTC_BASE (AHBAPB1_BASE + APB_RTC_OFST) -#define SCU_BASE (AHBAPB1_BASE + APB_SCU_OFST) -#define MC_BASE (AHBAPB1_BASE + APB_MC_OFST) -#define UART0_BASE (AHBAPB1_BASE + APB_UART0_OFST) -#define UART1_BASE (AHBAPB1_BASE + APB_UART1_OFST) -#define UART2_BASE (AHBAPB1_BASE + APB_UART2_OFST) -#define SSP0_BASE (AHBAPB1_BASE + APB_SSP0_OFST) -#define SSP1_BASE (AHBAPB1_BASE + APB_SSP1_OFST) -#define CAN_BASE (AHBAPB1_BASE + APB_CAN_OFST) -#define ADC_BASE (AHBAPB1_BASE + APB_ADC_OFST) -#define WDG_BASE (AHBAPB1_BASE + APB_WDG_OFST) -#define I2C0_BASE (AHBAPB1_BASE + APB_I2C0_OFST) -#define I2C1_BASE (AHBAPB1_BASE + APB_I2C1_OFST) - -/******************************************************************************* -* IPs' declaration * -*******************************************************************************/ - -/*------------------------------ Non Debug Mode ------------------------------*/ - -#ifndef DEBUG - -/*********************************** AHBAPB ***********************************/ - -#define AHBAPB0 ((AHBAPB_TypeDef *)AHBAPB0_BASE) -#define AHBAPB1 ((AHBAPB_TypeDef *)AHBAPB1_BASE) - -/************************************* EMI ************************************/ - -#define EMI ((EMI_TypeDef *)EMI_BASE) - -/************************************* DMA ************************************/ - -#define DMA ((DMA_TypeDef *)DMA_BASE) -#define DMA_Channel0 ((DMA_Channel_TypeDef *)DMA_Channel0_BASE) -#define DMA_Channel1 ((DMA_Channel_TypeDef *)DMA_Channel1_BASE) -#define DMA_Channel2 ((DMA_Channel_TypeDef *)DMA_Channel2_BASE) -#define DMA_Channel3 ((DMA_Channel_TypeDef *)DMA_Channel3_BASE) -#define DMA_Channel4 ((DMA_Channel_TypeDef *)DMA_Channel4_BASE) -#define DMA_Channel5 ((DMA_Channel_TypeDef *)DMA_Channel5_BASE) -#define DMA_Channel6 ((DMA_Channel_TypeDef *)DMA_Channel6_BASE) -#define DMA_Channel7 ((DMA_Channel_TypeDef *)DMA_Channel7_BASE) - -/************************************* EMI ************************************/ - -#define EMI_Bank0 ((EMI_Bank_TypeDef *)EMI_Bank0_BASE) -#define EMI_Bank1 ((EMI_Bank_TypeDef *)EMI_Bank1_BASE) -#define EMI_Bank2 ((EMI_Bank_TypeDef *)EMI_Bank2_BASE) -#define EMI_Bank3 ((EMI_Bank_TypeDef *)EMI_Bank3_BASE) - -/************************************* ENET_MAC ************************************/ - -#define ENET_MAC ((ENET_MAC_TypeDef *)ENET_MAC_BASE) - -/************************************* ENET_DMA ************************************/ - -#define ENET_DMA ((ENET_DMA_TypeDef *)ENET_DMA_BASE) - -/************************************* FMI ************************************/ - -#define FMI ((FMI_TypeDef *)FMI_BASE) - -/************************************* VIC ************************************/ - -#define VIC0 ((VIC_TypeDef *)VIC0_BASE) -#define VIC1 ((VIC_TypeDef *)VIC1_BASE) - -/******************************************************************************* -* APB0 Peripherals' * -*******************************************************************************/ -#define WIU ((WIU_TypeDef *)WIU_BASE) -#define TIM0 ((TIM_TypeDef *)TIM0_BASE) -#define TIM1 ((TIM_TypeDef *)TIM1_BASE) -#define TIM2 ((TIM_TypeDef *)TIM2_BASE) -#define TIM3 ((TIM_TypeDef *)TIM3_BASE) -#define GPIO0 ((GPIO_TypeDef *)GPIO0_BASE) -#define GPIO1 ((GPIO_TypeDef *)GPIO1_BASE) -#define GPIO2 ((GPIO_TypeDef *)GPIO2_BASE) -#define GPIO3 ((GPIO_TypeDef *)GPIO3_BASE) -#define GPIO4 ((GPIO_TypeDef *)GPIO4_BASE) -#define GPIO5 ((GPIO_TypeDef *)GPIO5_BASE) -#define GPIO6 ((GPIO_TypeDef *)GPIO6_BASE) -#define GPIO7 ((GPIO_TypeDef *)GPIO7_BASE) -#define GPIO8 ((GPIO_TypeDef *)GPIO8_BASE) -#define GPIO9 ((GPIO_TypeDef *)GPIO9_BASE) -/******************************************************************************* -* APB1 Peripherals' * -*******************************************************************************/ -#define RTC ((RTC_TypeDef *)RTC_BASE) -#define SCU ((SCU_TypeDef *)SCU_BASE) -#define MC ((MC_TypeDef *)MC_BASE) -#define UART0 ((UART_TypeDef *)UART0_BASE) -#define UART1 ((UART_TypeDef *)UART1_BASE) -#define UART2 ((UART_TypeDef *)UART2_BASE) -#define SSP0 ((SSP_TypeDef *)SSP0_BASE) -#define SSP1 ((SSP_TypeDef *)SSP1_BASE) -#define CAN ((CAN_TypeDef *)CAN_BASE) -#define ADC ((ADC_TypeDef *)ADC_BASE) -#define WDG ((WDG_TypeDef *)WDG_BASE) -#define I2C0 ((I2C_TypeDef *)I2C0_BASE) -#define I2C1 ((I2C_TypeDef *)I2C1_BASE) -#define ENET_MAC ((ENET_MAC_TypeDef *)ENET_MAC_BASE) -#define ENET_DMA ((ENET_DMA_TypeDef *)ENET_DMA_BASE) - -#else /* DEBUG */ - -/*-------------------------------- Debug Mode --------------------------------*/ - -EXT AHBAPB_TypeDef *AHBAPB0; -EXT AHBAPB_TypeDef *AHBAPB1; -EXT DMA_TypeDef *DMA; -EXT DMA_Channel_TypeDef *DMA_Channel0; -EXT DMA_Channel_TypeDef *DMA_Channel1; -EXT DMA_Channel_TypeDef *DMA_Channel2; -EXT DMA_Channel_TypeDef *DMA_Channel3; -EXT DMA_Channel_TypeDef *DMA_Channel4; -EXT DMA_Channel_TypeDef *DMA_Channel5; -EXT DMA_Channel_TypeDef *DMA_Channel6; -EXT DMA_Channel_TypeDef *DMA_Channel7; -EXT EMI_Bank_TypeDef *EMI_Bank0; -EXT EMI_Bank_TypeDef *EMI_Bank1; -EXT EMI_Bank_TypeDef *EMI_Bank2; -EXT EMI_Bank_TypeDef *EMI_Bank3; -EXT FMI_TypeDef *FMI; -EXT VIC_TypeDef *VIC0; -EXT VIC_TypeDef *VIC1; -EXT WIU_TypeDef *WIU; -EXT TIM_TypeDef *TIM0; -EXT TIM_TypeDef *TIM1; -EXT TIM_TypeDef *TIM2; -EXT TIM_TypeDef *TIM3; -EXT GPIO_TypeDef *GPIO0; -EXT GPIO_TypeDef *GPIO1; -EXT GPIO_TypeDef *GPIO2; -EXT GPIO_TypeDef *GPIO3; -EXT GPIO_TypeDef *GPIO4; -EXT GPIO_TypeDef *GPIO5; -EXT GPIO_TypeDef *GPIO6; -EXT GPIO_TypeDef *GPIO7; -EXT GPIO_TypeDef *GPIO8; -EXT GPIO_TypeDef *GPIO9; -EXT RTC_TypeDef *RTC; -EXT SCU_TypeDef *SCU; -EXT MC_TypeDef *MC; -EXT UART_TypeDef *UART0; -EXT UART_TypeDef *UART1; -EXT UART_TypeDef *UART2; -EXT SSP_TypeDef *SSP0; -EXT SSP_TypeDef *SSP1; -EXT CAN_TypeDef *CAN; -EXT ADC_TypeDef *ADC; -EXT WDG_TypeDef *WDG; -EXT I2C_TypeDef *I2C0; -EXT I2C_TypeDef *I2C1; -EXT ENET_MAC_TypeDef *ENET_MAC; -EXT ENET_DMA_TypeDef *ENET_DMA; - - -#endif /* DEBUG */ - -#endif /* __91x_MAP_H*/ - -/******************* (C) COPYRIGHT 2006 STMicroelectronics *****END OF FILE****/ - diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/include/91x_scu.h b/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/include/91x_scu.h deleted file mode 100644 index b9d04f558..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/include/91x_scu.h +++ /dev/null @@ -1,196 +0,0 @@ -/******************** (C) COPYRIGHT 2006 STMicroelectronics ******************** -* File Name : 91x_scu.h -* Author : MCD Application Team -* Date First Issued : 05/18/2006 : Version 1.0 -* Description : This file provides the SCU library software functions -* prototypes & definitions -******************************************************************************** -* History: -* 05/24/2006 : Version 1.1 -* 05/18/2006 : Version 1.0 -******************************************************************************** -* THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH -* CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS -* A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, INDIRECT -* OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT -* OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION -* CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. -*******************************************************************************/ - -/* Define to prevent recursive inclusion -------------------------------------*/ -#ifndef __91x_SCU_H -#define __91x_SCU_H - -/* Includes ------------------------------------------------------------------*/ -#include "91x_map.h" - -/* Exported constants --------------------------------------------------------*/ - -/*MCLK_Source*/ -#define SCU_MCLK_PLL 0x0 -#define SCU_MCLK_RTC 0x1 -#define SCU_MCLK_OSC 0x2 - -/*RCLK_Divisor*/ -#define SCU_RCLK_Div1 0xFFFFFFE3 -#define SCU_RCLK_Div2 0x4 -#define SCU_RCLK_Div4 0x8 -#define SCU_RCLK_Div8 0xC -#define SCU_RCLK_Div16 0x10 -#define SCU_RCLK_Div1024 0x14 - -/*HCLK_Divisor*/ -#define SCU_HCLK_Div1 0xFFFFFF9F -#define SCU_HCLK_Div2 0x20 -#define SCU_HCLK_Div4 0x40 - -/*PCLK_Divisor*/ -#define SCU_PCLK_Div1 0xFFFFFE7F -#define SCU_PCLK_Div2 0x80 -#define SCU_PCLK_Div4 0x100 -#define SCU_PCLK_Div8 0x180 - -/*FMICLK_Divisor*/ -#define SCU_FMICLK_Div1 0xFFFEFFFF -#define SCU_FMICLK_Div2 0x10000 - -/*BRCLK_Divisor*/ -#define SCU_BRCLK_Div1 0xFFFFFDFF -#define SCU_BRCLK_Div2 0x200 - -/*TIMCLK_Source*/ -#define SCU_TIMCLK_EXT 0x1 -#define SCU_TIMCLK_INT 0x0 - -/*TIMx*/ -#define SCU_TIM01 0x0 -#define SCU_TIM23 0x1 - - -/*USBCLK_Source*/ -#define SCU_USBCLK_MCLK 0xFFFFF3FF -#define SCU_USBCLK_MCLK2 0x400 -#define SCU_USBCLK_EXT 0x800 - -/*SCU_EMIBCLK*/ -#define SCU_EMIBCLK_Div1 0xFFF9FFFF -#define SCU_EMIBCLK_Div2 0x20000 - -/*SCU_EMIMODE*/ -#define SCU_EMI_MUX 0xFFFFFFBF -#define SCU_EMI_DEMUX 0x40 - -/*SCU_EMIALE_LEN*/ -#define SCU_EMIALE_LEN1 0xFFFFFEFF -#define SCU_EMIALE_LEN2 0x100 - -/*SCU_EMIALE_POL*/ -#define SCU_EMIALE_POLLow 0xFFFFFF7F -#define SCU_EMIALE_POLHigh 0x80 - -/*UART_IrDA_Mode*/ -#define SCU_UARTMode_IrDA 0x1 -#define SCU_UARTMode_UART 0x0 - -/*APBPeriph*/ -#define __TIM01 0x1 -#define __TIM23 0x2 -#define __MC 0x4 -#define __UART0 0x8 -#define __UART1 0x10 -#define __UART2 0x20 -#define __I2C0 0x40 -#define __I2C1 0x80 -#define __SSP0 0x100 -#define __SSP1 0x200 -#define __CAN 0x400 -#define __ADC 0x800 -#define __WDG 0x1000 -#define __WIU 0x2000 -#define __GPIO0 0x4000 -#define __GPIO1 0x8000 -#define __GPIO2 0x10000 -#define __GPIO3 0x20000 -#define __GPIO4 0x40000 -#define __GPIO5 0x80000 -#define __GPIO6 0x100000 -#define __GPIO7 0x200000 -#define __GPIO8 0x400000 -#define __GPIO9 0x800000 -#define __RTC 0x1000000 - -/*AHBPeriph*/ -#define __FMI 0x1 -#define __FPQBC 0x2 -#define __SRAM 0x8 -#define __SRAM_ARBITER 0x10 -#define __VIC 0x20 -#define __EMI 0x40 -#define __EMI_MEM_CLK 0x80 -#define __DMA 0x100 -#define __USB 0x200 -#define __USB48M 0x400 -#define __ENET 0x800 -#define __PFQBC_AHB 0x1000 - -/*SCU_IT*/ -#define SCU_IT_LVD_RST 0x10 -#define SCU_IT_SRAM_ERROR 0x8 -#define SCU_IT_ACK_PFQBC 0x4 -#define SCU_IT_LOCK_LOST 0x2 -#define SCU_IT_LOCK 0x1 - -/*SCU_FLAG*/ -#define SCU_FLAG_SRAM_ERROR 0x20 -#define SCU_FLAG_ACK_PFQBC 0x10 -#define SCU_FLAG_LVD_RESET 0x8 -#define SCU_FLAG_WDG_RST 0x4 -#define SCU_FLAG_LOCK_LOST 0x2 -#define SCU_FLAG_LOCK 0x1 - - -/* Module private variables --------------------------------------------------*/ -/* Exported macro ------------------------------------------------------------*/ -/* Private functions ---------------------------------------------------------*/ -/* Exported functions ------------------------------------------------------- */ -ErrorStatus SCU_MCLKSourceConfig(u32 MCLK_Source); -ErrorStatus SCU_PLLFactorsConfig(u8 PLLN, u8 PLLM, u8 PLLP); -ErrorStatus SCU_PLLCmd(FunctionalState NewState); -void SCU_RCLKDivisorConfig(u32 RCLK_Divisor); -void SCU_HCLKDivisorConfig(u32 HCLK_Divisor); -void SCU_PCLKDivisorConfig(u32 PCLK_Divisor); -void SCU_APBPeriphClockConfig(u32 APBPeriph, FunctionalState NewState); -void SCU_AHBPeriphClockConfig(u32 AHBPeriph, FunctionalState NewState); -void SCU_APBPeriphReset(u32 APBPeriph, FunctionalState NewState); -void SCU_AHBPeriphReset(u32 AHBPeriph, FunctionalState NewState); -void SCU_APBPeriphIdleConfig(u32 APBPeriph, FunctionalState NewState); -void SCU_AHBPeriphIdleConfig(u32 AHBPeriph, FunctionalState NewState); -void SCU_APBPeriphDebugConfig(u32 APBPeriph, FunctionalState NewState); -void SCU_AHBPeriphDebugConfig(u32 AHBPeriph, FunctionalState NewState); -void SCU_BRCLKDivisorConfig(u32 BRCLK_Divisor); -void SCU_TIMCLKSourceConfig(u8 TIMx, u32 TIMCLK_Source); -void SCU_TIMPresConfig(u8 TIMx, u16 Prescaler); -void SCU_USBCLKConfig(u32 USBCLK_Source); -void SCU_PHYCLKConfig(FunctionalState NewState); -void SCU_FMICLKDivisorConfig(u32 FMICLK_Divisor); -void SCU_EMIBCLKDivisorConfig(u32 SCU_EMIBCLK); -void SCU_EMIModeConfig(u32 SCU_EMIMODE); -void SCU_EMIALEConfig(u32 SCU_EMIALE_LEN, u32 SCU_EMIALE_POL); -void SCU_ITConfig(u32 SCU_IT, FunctionalState NewState); -FlagStatus SCU_GetFlagStatus(u32 SCU_Flag); -void SCU_ClearFlag(u32 SCU_Flag); -u32 SCU_GetPLLFreqValue(void); -u32 SCU_GetMCLKFreqValue(void); -u32 SCU_GetRCLKFreqValue(void); -u32 SCU_GetHCLKFreqValue(void); -u32 SCU_GetPCLKFreqValue(void); -void SCU_WakeUpLineConfig(u8 EXTint); -void SCU_SpecIntRunModeConfig(FunctionalState NewState); -void SCU_EnterIdleMode(void); -void SCU_EnterSleepMode(void); -void SCU_UARTIrDASelect(UART_TypeDef * UARTx, u8 UART_IrDA_Mode); -void SCU_PFQBCCmd(FunctionalState NewState); - -#endif /*__91x_SCU_H*/ - -/******************* (C) COPYRIGHT 2006 STMicroelectronics *****END OF FILE****/ diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/include/91x_tim.h b/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/include/91x_tim.h deleted file mode 100644 index b587c27ac..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/include/91x_tim.h +++ /dev/null @@ -1,155 +0,0 @@ -/******************** (C) COPYRIGHT 2006 STMicroelectronics ******************** -* File Name : 91x_tim.h -* Author : MCD Application Team -* Date First Issued : 05/18/2006 : Version 1.0 -* Description : This file contains all the functions prototypes for the -* TIM software library. -******************************************************************************** -* History: -* 05/24/2006 : Version 1.1 -* 05/18/2006 : Version 1.0 -******************************************************************************** -* THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH -* CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS -* A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, INDIRECT -* OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT -* OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION -* CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. -*******************************************************************************/ - -/* Define to prevent recursive inclusion -------------------------------------*/ -#ifndef __91x_TIM_H -#define __91x_TIM_H - -/* Includes ------------------------------------------------------------------*/ -#include "91x_map.h" -#include "91x_scu.h" - -/* Exported types ----------------------------------------------------------- */ - -/* TIM Init structure define */ -typedef struct -{ - u16 TIM_Mode; /* Timer mode */ - u16 TIM_OC1_Modes; /* Output Compare 1 Mode: Timing or Wave */ - u16 TIM_OC2_Modes; /* Output Compare 2 Mode: Timing or Wave */ - u16 TIM_Clock_Source; /* Timer Clock source APB/SCU/EXTERNAL */ - u16 TIM_Clock_Edge; /* Timer Clock Edge: Rising or Falling Edge */ - u16 TIM_OPM_INPUT_Edge; /* Timer Input Capture 1 Edge used in OPM Mode */ - u16 TIM_ICAP1_Edge; /* Timer Input Capture 1 Edge used in ICAP1 Mode */ - u16 TIM_ICAP2_Edge; /* Timer Input Capture 2 Edge used in ICAP2 Mode */ - u8 TIM_Prescaler; /* Timer Prescaler factor */ - u16 TIM_Pulse_Level_1; /* Level applied on the Output Compare Pin 1 */ - u16 TIM_Pulse_Level_2; /* Level applied on the Output Compare Pin 2 */ - u16 TIM_Period_Level; /* Level applied during the Period of a PWM Mode */ - u16 TIM_Pulse_Length_1; /* Pulse 1 Length used in Output Compare 1 Mode */ - u16 TIM_Pulse_Length_2; /* Pulse 2 Length used in Output Compare 2 Mode */ - u16 TIM_Full_Period; /* Period Length used in PWM Mode */ -} TIM_InitTypeDef; - -typedef enum -{ - TIM_START, - TIM_STOP, - TIM_CLEAR -} TIM_CounterOperations; - -/* Exported constants --------------------------------------------------------*/ - -/* TIM MODE */ -#define TIM_PWMI 0x4000 /* PWM INPUT Mode */ -#define TIM_OCM_CHANNEL_1 0x0040 /* OUTPUT COMPARE CHANNEL 1 Mode */ -#define TIM_OCM_CHANNEL_2 0x0080 /* OUTPUT COMPARE CHANNEL 2 Mode */ -#define TIM_OCM_CHANNEL_12 0x00C0 /* OUTPUT COMPARE CHANNEL 1 & 2 Mode */ -#define TIM_PWM 0x0010 /* PWM Mode */ -#define TIM_OPM 0x0020 /* ONE PULSE Mode */ -#define TIM_ICAP_CHANNEL_1 0x0400 /* INPUT CAPTURE 1 Mode */ -#define TIM_ICAP_CHANNEL_2 0x0500 /* INPUT CAPTURE 2 Mode */ -#define TIM_ICAP_CHANNEL_12 0x0600 /* INPUT CAPTURE 1 & 2 Mode */ - -/* TIM OUTPUT COMPARE MODE */ -#define TIM_WAVE 0x0001 -#define TIM_TIMING 0x0002 - -/* TIM CLOCK SOURCE */ -#define TIM_CLK_APB 0xFFFE -#define TIM_CLK_EXTERNAL 0x0001 -#define TIM_CLK_SCU 0x0001 - -/* TIM CLOCK EDGE */ -#define TIM_CLK_EDGE_FALLING 0xFFFD -#define TIM_CLK_EDGE_RISING 0x0002 - -/* TIM OPM INPUT EDGE */ -#define TIM_OPM_EDGE_FALLING 0xFFFB -#define TIM_OPM_EDGE_RISING 0x0004 - -/* TIM ICAPA INPUT EDGE */ -#define TIM_ICAP1_EDGE_FALLING 0xFFFB -#define TIM_ICAP1_EDGE_RISING 0x0004 - -/* TIM ICAPB INPUT EDGE */ -#define TIM_ICAP2_EDGE_FALLING 0xFFF7 -#define TIM_ICAP2_EDGE_RISING 0x0008 - -/* TIM OUTPUT LEVEL */ -#define TIM_HIGH 0x0200 -#define TIM_LOW 0x0300 - -/* TIM OUTPUT EDGE */ -#define TIM_OUTPUT_EDGE_RISING 0x8000 -#define TIM_OUTPUT_EDGE_FALLING 0x0800 - -/* TIM channels */ -#define TIM_PWM_OC1_Channel 0x1 /* PWM/Output Compare 1 Channel */ -#define TIM_OC2_Channel 0x2 /* Output Compare 2 Channel */ - -/* TIM DMA SOURCE */ -#define TIM_DMA_IC1 0x0000 /* Input Capture Channel 1 DMA Source */ -#define TIM_DMA_OC1 0x1000 /* OUTPUT Compare Channel 1 DMA Source */ -#define TIM_DMA_IC2 0x2000 /* Input Capture Channel 2 DMA Source */ -#define TIM_DMA_OC2 0x3000 /* OUTPUT Compare Channel 2 DMA Source */ - -/* TIM DMA ENABLE or DISABLE */ -#define TIM_DMA_ENABLE 0x0400 /* DMA Enable */ -#define TIM_DMA_DISABLE 0xFBFF /* DMA Disable */ - -/* TIM Interruption Sources*/ -#define TIM_IT_IC1 0x8000 /* Input Capture Channel 1 Interrupt Source */ -#define TIM_IT_OC1 0x4000 /* Output Compare Channel 1 Interrupt Source */ -#define TIM_IT_TO 0x2000 /* Timer OverFlow Interrupt Source */ -#define TIM_IT_IC2 0x1000 /* Input Capture Channel 2 Interrupt Source */ -#define TIM_IT_OC2 0x0800 /* Output Compare Channel 2 Interrupt Source */ - -/* TIM Flags */ -#define TIM_FLAG_IC1 0x8000 /* Input Capture Channel 1 Flag */ -#define TIM_FLAG_OC1 0x4000 /* Output Compare Channel 1 Flag */ -#define TIM_FLAG_TO 0x2000 /* Timer OverFlow Flag */ -#define TIM_FLAG_IC2 0x1000 /* Input Capture Channel 2 Flag */ -#define TIM_FLAG_OC2 0x0800 /* Output Compare Channel 2 Flag */ - -/* Module private variables --------------------------------------------------*/ -/* Exported macro ------------------------------------------------------------*/ -/* Private functions ---------------------------------------------------------*/ -/* Exported functions ------------------------------------------------------- */ -void TIM_Init(TIM_TypeDef *TIMx, TIM_InitTypeDef *TIM_InitStruct); -void TIM_DeInit(TIM_TypeDef *TIMx); -void TIM_StructInit(TIM_InitTypeDef *TIM_InitStruct); -void TIM_CounterCmd(TIM_TypeDef *TIMx, TIM_CounterOperations TIM_operation); -void TIM_PrescalerConfig(TIM_TypeDef *TIMx, u8 TIM_Prescaler); -u8 TIM_GetPrescalerValue(TIM_TypeDef *TIMx); -u16 TIM_GetCounterValue(TIM_TypeDef *TIMx); -u16 TIM_GetICAP1Value(TIM_TypeDef *TIMx); -u16 TIM_GetICAP2Value(TIM_TypeDef *TIMx); -void TIM_SetPulse(TIM_TypeDef *TIMx,u16 TIM_Channel ,u16 TIM_Pulse); -FlagStatus TIM_GetFlagStatus(TIM_TypeDef *TIMx, u16 TIM_Flag); -void TIM_ClearFlag(TIM_TypeDef *TIMx, u16 TIM_Flag); -u16 TIM_GetPWMIPulse(TIM_TypeDef *TIMx); -u16 TIM_GetPWMIPeriod(TIM_TypeDef *TIMx); -void TIM_ITConfig(TIM_TypeDef *TIMx, u16 TIM_IT, FunctionalState TIM_Newstate); -void TIM_DMAConfig(TIM_TypeDef *TIMx, u16 TIM_DMA_Sources); -void TIM_DMACmd(TIM_TypeDef *TIMx, FunctionalState TIM_Newstate); - -#endif /* __91x_TIM_H */ - -/******************* (C) COPYRIGHT 2006 STMicroelectronics *****END OF FILE****/ diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/include/91x_type.h b/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/include/91x_type.h deleted file mode 100644 index 916d81c68..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/include/91x_type.h +++ /dev/null @@ -1,50 +0,0 @@ -/******************** (C) COPYRIGHT 2006 STMicroelectronics ******************** -* File Name : 91x_type.h -* Author : MCD Application Team -* Date First Issued : 05/18/2006 : Version 1.0 -* Description : It contains common types and constants used in all the -* peripherals' drivers. -******************************************************************************** -* History: -* 05/24/2006 : Version 1.1 -* 05/18/2006 : Version 1.0 -********************************************************************************** -* THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS -* WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. -* AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, INDIRECT -* OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT -* OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION -* CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. -*********************************************************************************/ - -#ifndef __91x_type_H -#define __91x_type_H - - typedef long long u64; - typedef unsigned long u32; - typedef unsigned short u16; - typedef unsigned char u8; - - typedef signed long s32; - typedef signed short s16; - typedef signed char s8; - - typedef volatile unsigned long vu32; - typedef volatile unsigned short vu16; - typedef volatile unsigned char vu8; - - typedef volatile signed long vs32; - typedef volatile signed short vs16; - typedef volatile signed char vs8; - -typedef enum { FALSE = 0, TRUE = !FALSE } bool; - -typedef enum { RESET = 0, SET = !RESET } FlagStatus, ITStatus; - -typedef enum { DISABLE = 0, ENABLE = !DISABLE} FunctionalState; - -typedef enum { ERROR = 0, SUCCESS = !ERROR} ErrorStatus; - -#endif /* __91x_type_H */ - -/******************* (C) COPYRIGHT 2006 STMicroelectronics *****END OF FILE****/ diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/include/91x_uart.h b/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/include/91x_uart.h deleted file mode 100644 index b979438bb..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/include/91x_uart.h +++ /dev/null @@ -1,174 +0,0 @@ -/******************** (C) COPYRIGHT 2006 STMicroelectronics ******************** -* File Name : 91x_uart.h -* Author : MCD Application Team -* Date First Issued : 05/18/2006 : Version 1.0 -* Description : This file contains all the functions prototypes for the -* UART software library. -******************************************************************************** -* History: -* 05/24/2006 : Version 1.1 -* 05/18/2006 : Version 1.0 -******************************************************************************** -* THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS -* WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. -* AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, -* INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE -* CONTENT OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING -* INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. -*******************************************************************************/ - -/* Define to prevent recursive inclusion -------------------------------------*/ -#ifndef __91x_UART_H -#define __91x_UART_H - -/* Includes ------------------------------------------------------------------*/ -#include <91x_map.h> - -/* Exported types ------------------------------------------------------------*/ -/* UART FIFO Level enumeration */ -typedef enum -{ - UART_FIFOLevel_1_8 = 0x0000, /* FIFO size 16 bytes, FIFO level 2 bytes */ - UART_FIFOLevel_1_4 = 0x0001, /* FIFO size 16 bytes, FIFO level 4 bytes */ - UART_FIFOLevel_1_2 = 0x0002, /* FIFO size 16 bytes, FIFO level 8 bytes */ - UART_FIFOLevel_3_4 = 0x0003, /* FIFO size 16 bytes, FIFO level 12 bytes */ - UART_FIFOLevel_7_8 = 0x0004 /* FIFO size 16 bytes, FIFO level 14 bytes */ -}UART_FIFOLevel; - -/* UART Init Structure definition */ -typedef struct -{ - u16 UART_WordLength; - u16 UART_StopBits; - u16 UART_Parity; - u32 UART_BaudRate; - u16 UART_HardwareFlowControl; - u16 UART_Mode; - u16 UART_FIFO; - UART_FIFOLevel UART_TxFIFOLevel; - UART_FIFOLevel UART_RxFIFOLevel; -}UART_InitTypeDef; - - -/* UART RTS enumeration */ -typedef enum -{ - LowLevel = 0, - HighLevel -}UART_LevelTypeDef; - -/* Exported constants --------------------------------------------------------*/ -/* UART Data Length */ -#define UART_WordLength_5D 0x0000 /* 5 bits Data */ -#define UART_WordLength_6D 0x0020 /* 6 bits Data */ -#define UART_WordLength_7D 0x0040 /* 7 bits Data */ -#define UART_WordLength_8D 0x0060 /* 8 bits Data */ - -/* UART Stop Bits */ -#define UART_StopBits_1 0xFFF7 /* Disable two stop bit is transmitted - at the end of frame */ -#define UART_StopBits_2 0x0008 /* Enable Two stop bits are transmitted - at the end of frame */ -/* UART Parity */ -#define UART_Parity_No 0x0000 /* Parity Disable */ -#define UART_Parity_Even 0x0006 /* Even Parity */ -#define UART_Parity_Odd 0x0002 /* Odd Parity */ -#define UART_Parity_OddStick 0x0082 /* 1 is transmitted as bit parity */ -#define UART_Parity_EvenStick 0x0086 /* 0 is transmitted as bit parity */ - -/* UART Hardware Flow Control */ -#define UART_HardwareFlowControl_None 0x0000 /* HFC Disable */ -#define UART_HardwareFlowControl_RTS 0x4000 /* RTS Enable */ -#define UART_HardwareFlowControl_CTS 0x8000 /* CTS Enable */ -#define UART_HardwareFlowControl_RTS_CTS 0xC000 /* CTS and RTS Enable */ - -/* UART Mode */ -#define UART_Mode_Rx 0x0200 /* UART Rx Enabled */ -#define UART_Mode_Tx 0x0100 /* UART Tx Enbled */ -#define UART_Mode_Tx_Rx 0x0300 /* UART Tx and Rx Enabled */ - -/* UART FIFO */ -#define UART_FIFO_Disable 0xFFEF /* FIFOs Disable */ -#define UART_FIFO_Enable 0x0010 /* FIFOs Enable */ - -/* UART Interrupt definition */ -#define UART_IT_OverrunError 0x0400 /* Overrun Error interrupt mask */ -#define UART_IT_BreakError 0x0200 /* Break Error interrupt mask */ -#define UART_IT_ParityError 0x0100 /* Parity Error interrupt mask */ -#define UART_IT_FrameError 0x0080 /* Frame Error interrupt mask */ -#define UART_IT_ReceiveTimeOut 0x0040 /* Receive Time Out interrupt mask */ -#define UART_IT_Transmit 0x0020 /* Transmit interrupt mask */ -#define UART_IT_Receive 0x0010 /* Receive interrupt mask */ -#define UART_IT_DSR 0x0008 /* DSR interrupt mask */ -#define UART_IT_DCD 0x0004 /* DCD interrupt mask */ -#define UART_IT_CTS 0x0002 /* CTS interrupt mask */ -#define UART_IT_RI 0x0001 /* RI interrupt mask */ - -/* UART DMA On Error */ -#define UART_DMAOnError_Enable 0xFFFB /* DMA receive request enabled - when the UART error interrupt - is asserted. */ -#define UART_DMAOnError_Disable 0x0004 /* DMA receive request disabled - when the UART error interrupt - is asserted. */ -/* UART DMA Request */ -#define UART_DMAReq_Tx 0x02 /* Transmit DMA Enable */ -#define UART_DMAReq_Rx 0x01 /* Receive DMA Enable */ - -/* UART FLAG */ -#define UART_FLAG_OverrunError 0x23 /* Overrun error flag */ -#define UART_FLAG_Break 0x22 /* break error flag */ -#define UART_FLAG_ParityError 0x21 /* parity error flag */ -#define UART_FLAG_FrameError 0x20 /* frame error flag */ -#define UART_FLAG_RI 0x48 /* RI flag */ -#define UART_FLAG_TxFIFOEmpty 0x47 /* Transmit FIFO Empty flag */ -#define UART_FLAG_RxFIFOFull 0x46 /* Receive FIFO Full flag */ -#define UART_FLAG_TxFIFOFull 0x45 /* Transmit FIFO Full flag */ -#define UART_FLAG_RxFIFOEmpty 0x44 /* Receive FIFO Empty flag */ -#define UART_FLAG_Busy 0x43 /* UART Busy flag */ -#define UART_FLAG_DCD 0x42 /* DCD flag */ -#define UART_FLAG_DSR 0x41 /* DSR flag */ -#define UART_FLAG_CTS 0x40 /* CTS flag */ -#define UART_RawIT_OverrunError 0x6A /* Overrun Error Raw IT flag */ -#define UART_RawIT_BreakError 0x69 /* Break Error Raw IT flag */ -#define UART_RawIT_ParityError 0x68 /* Parity Error Raw IT flag */ -#define UART_RawIT_FrameError 0x67 /* Frame Error Raw IT flag */ -#define UART_RawIT_ReceiveTimeOut 0x66 /* ReceiveTimeOut Raw IT flag */ -#define UART_RawIT_Transmit 0x65 /* Transmit Raw IT flag */ -#define UART_RawIT_Receive 0x64 /* Receive Raw IT flag */ -#define UART_RawIT_DSR 0x63 /* DSR Raw IT flag */ -#define UART_RawIT_DCD 0x62 /* DCD Raw IT flag */ -#define UART_RawIT_CTS 0x61 /* CTS Raw IT flag */ -#define UART_RawIT_RI 0x60 /* RI Raw IT flag */ - -/*IrDAx select*/ -#define IrDA0 0x01 /*IrDA0 select*/ -#define IrDA1 0x02 /*IrDA0 select*/ -#define IrDA2 0x03 /*IrDA0 select*/ - -/* Exported macro ------------------------------------------------------------*/ -/* Exported functions ------------------------------------------------------- */ -void UART_DeInit(UART_TypeDef* UARTx); -void UART_Init(UART_TypeDef* UARTx, UART_InitTypeDef* UART_InitStruct); -void UART_StructInit(UART_InitTypeDef* UART_InitStruct); -void UART_Cmd(UART_TypeDef* UARTx, FunctionalState NewState); -void UART_ITConfig(UART_TypeDef* UARTx, u16 UART_IT, FunctionalState NewState); -void UART_DMAConfig(UART_TypeDef* UARTx, u16 UART_DMAOnError); -void UART_DMACmd(UART_TypeDef* UARTx, u8 UART_DMAReq, FunctionalState NewState); -void UART_LoopBackConfig(UART_TypeDef* UARTx, FunctionalState NewState); -FlagStatus UART_GetFlagStatus(UART_TypeDef* UARTx, u16 UART_FLAG); -void UART_ClearFlag(UART_TypeDef* UARTx); -void UART_ClearITPendingBit(UART_TypeDef* UARTx, u16 UART_IT); -void UART_IrDALowPowerConfig(u8 IrDAx, FunctionalState NewState); -void UART_IrDACmd(u8 IrDAx, FunctionalState NewState); -void UART_IrDASetCounter(u8 IrDAx, u32 IrDA_Counter); -void UART_SendData(UART_TypeDef* UARTx, u8 Data); -u8 UART_ReceiveData(UART_TypeDef* UARTx); -void UART_SendBreak(UART_TypeDef* UARTx); -void UART_DTRConfig(UART_LevelTypeDef LevelState); -void UART_RTSConfig(UART_LevelTypeDef LevelState); -ITStatus UART_GetITStatus(UART_TypeDef* UARTx, u16 UART_IT); - -#endif /* __91x_UART_H */ - -/******************* (C) COPYRIGHT 2006 STMicroelectronics *****END OF FILE****/ diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/include/91x_vic.h b/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/include/91x_vic.h deleted file mode 100644 index 127716a38..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/include/91x_vic.h +++ /dev/null @@ -1,94 +0,0 @@ -/******************** (C) COPYRIGHT 2006 STMicroelectronics ******************** -* File Name : 91x_vic.h -* Author : MCD Application Team -* Date First Issued : 05/18/2006 : Version 1.0 -* Description : This file contains all the functions prototypes for the -* VIC software library. -******************************************************************************** -* History: -* 05/24/2006 : Version 1.1 -* 05/18/2006 : Version 1.0 -******************************************************************************** -* THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH -* CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS -* A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, INDIRECT -* OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT -* OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION -* CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. -*******************************************************************************/ - - -/* Define to prevent recursive inclusion ------------------------------------ */ -#ifndef __91x_VIC_H -#define __91x_VIC_H - -/* Includes ------------------------------------------------------------------*/ -#include "91x_map.h" -#include "91x_it.h" - -/* Exported types ------------------------------------------------------------*/ -/* Type of interrupt */ -typedef enum -{ - VIC_IRQ, - VIC_FIQ -} VIC_ITLineMode; - -/* Exported constants --------------------------------------------------------*/ - -/* VIC sources*/ - -#define WDG_ITLine 0 -#define SW_ITLine 1 -#define ARMRX_ITLine 2 -#define ARMTX_ITLine 3 -#define TIM0_ITLine 4 -#define TIM1_ITLine 5 -#define TIM2_ITLine 6 -#define TIM3_ITLine 7 -#define USBHP_ITLine 8 -#define USBLP_ITLine 9 -#define SCU_ITLine 10 -#define ENET_ITLine 11 -#define DMA_ITLine 12 -#define CAN_ITLine 13 -#define MC_ITLine 14 -#define ADC_ITLine 15 -#define UART0_ITLine 16 -#define UART1_ITLine 17 -#define UART2_ITLine 18 -#define I2C0_ITLine 19 -#define I2C1_ITLine 20 -#define SSP0_ITLine 21 -#define SSP1_ITLine 22 -#define LVD_ITLine 23 -#define RTC_ITLine 24 -#define WIU_ITLine 25 -#define EXTIT0_ITLine 26 -#define EXTIT1_ITLine 27 -#define EXTIT2_ITLine 28 -#define EXTIT3_ITLine 29 -#define USBWU_ITLine 30 -#define PFQBC_ITLine 31 - - -/* Module private variables --------------------------------------------------*/ -/* Exported macro ------------------------------------------------------------*/ -/* Private functions ---------------------------------------------------------*/ -/* Exported functions ------------------------------------------------------- */ - -void VIC_DeInit(void); -FlagStatus VIC_GetIRQStatus(u16 VIC_Source); -FlagStatus VIC_GetFIQStatus(u16 VIC_Source); -FlagStatus VIC_GetSourceITStatus(u16 VIC_Source); -void VIC_ITCmd(u16 VIC_Source, FunctionalState VIC_NewState); -void VIC_SWITCmd(u16 VIC_Source, FunctionalState VIC_NewState); -void VIC_ProtectionCmd(FunctionalState VIC_NewState); -u32 VIC_GetCurrentISRAdd(VIC_TypeDef* VICx); -u32 VIC_GetISRVectAdd(u16 VIC_Source); -void VIC_Config(u16 VIC_Source, VIC_ITLineMode VIC_LineMode, u8 VIC_Priority); - -#endif /* __91x_VIC_H */ - -/******************* (C) COPYRIGHT 2006 STMicroelectronics *****END OF FILE****/ - diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/include/91x_wdg.h b/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/include/91x_wdg.h deleted file mode 100644 index fc70547ad..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/include/91x_wdg.h +++ /dev/null @@ -1,82 +0,0 @@ -/******************** (C) COPYRIGHT 2006 STMicroelectronics ******************** -* File Name : 91x_wdg.h -* Author : MCD Application Team -* Date First Issued : 05/18/2006 : Version 1.0 -* Description : This file contains all the functions prototypes for the -* WDG software library. -******************************************************************************** -* History: -* 05/24/2006 : Version 1.1 -* 05/18/2006 : Version 1.0 -******************************************************************************** -* THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS -* WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. -* AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, -* INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE -* CONTENT OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING -* INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. -*******************************************************************************/ - -/* Define to prevent recursive inclusion -------------------------------------*/ -#ifndef __91x_WDG_H -#define __91x_WDG_H - -/* Includes ------------------------------------------------------------------*/ -#include "91x_map.h" - -/* Exported types ------------------------------------------------------------*/ -typedef struct -{ -u16 WDG_Mode; -u16 WDG_ClockSource; -u16 WDG_Prescaler; -u16 WDG_Preload; - -} WDG_InitTypeDef; - -/* Exported constants --------------------------------------------------------*/ - -/* WDG_Mode */ -#define WDG_Mode_Wdg 0x0001 /*WDG configured to run in watchdog mode.*/ -#define WDG_Mode_Timer 0xFFFE /*WDG configured to be in Free-running Timer mode.*/ - - -/* WDG_ClockSource */ -#define WDG_ClockSource_Rtc 0x0004 /* External clock ( 32 khz RTC clock ) will be used as counting clock.*/ -#define WDG_ClockSource_Apb 0xFFFB /*The APB clock signal will be used as counting clock.*/ - -/* WDG_Prescaler */ -/*This member must be a number between 0x00 and 0xFF. -Specifies the Prescaler value to divide the clock source. -The clock of the Watchdog Timer Counter is divided by " WDG_Prescaler + 1".*/ - - - -/* WDG_Preload */ -/*This member must be a number between 0x0000 and 0xFFFF. -This value is loaded in the WDG Counter when it starts counting.*/ - - -/* WDG Sequence */ -#define WDG_KeyValue1 0xA55A -#define WDG_KeyValue2 0x5AA5 - -/* Exported macro ------------------------------------------------------------*/ - - -/* Exported functions ------------------------------------------------------- */ - -void WDG_DeInit(void); -void WDG_Init(WDG_InitTypeDef* WDG_InitStruct); -void WDG_StructInit(WDG_InitTypeDef* WDG_InitStruct); -void WDG_Cmd(FunctionalState NewState); -void WDG_ITConfig(FunctionalState NewState); -u16 WDG_GetCounter(void); -FlagStatus WDG_GetFlagStatus(void); -void WDG_ClearFlag(void); -ITStatus WDG_GetITStatus(void); -void WDG_ClearITPendingBit(void); - -#endif /* __WDG_H */ - -/******************* (C) COPYRIGHT 2006 STMicroelectronics *****END OF FILE****/ diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/source/91x_can.c b/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/source/91x_can.c deleted file mode 100644 index e560d03c5..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/source/91x_can.c +++ /dev/null @@ -1,768 +0,0 @@ -/******************** (C) COPYRIGHT 2006 STMicroelectronics ******************** -* File Name : 91x_can.c -* Author : MCD Application Team -* Date First Issued : 05/18/2006 : Version 1.0 -* Description : This file provides all the CAN software functions. -******************************************************************************** -* History: -* 05/24/2006 : Version 1.1 -* 05/18/2006 : Version 1.0 -******************************************************************************** -* THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS -* WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. -* AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, -* INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE -* CONTENT OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING -* INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. -*******************************************************************************/ - -/* Includes ------------------------------------------------------------------*/ -#include "91x_can.h" -#include "91x_scu.h" - -/* Private typedef -----------------------------------------------------------*/ -/* Private define ------------------------------------------------------------*/ -/* Private macro -------------------------------------------------------------*/ -/*----------------------------------------------------------------------------*/ -/* Macro Name : xxx_ID_MSK, xxx_ID_ARB */ -/* Description : Form the Mask and Arbitration registers value to filter */ -/* a range of identifiers or a fixed identifier, for standard*/ -/* and extended IDs */ -/*----------------------------------------------------------------------------*/ -#define RANGE_ID_MSK(range_start, range_end) (~((range_end) - (range_start))) -#define RANGE_ID_ARB(range_start, range_end) ((range_start) & (range_end)) - -#define FIXED_ID_MSK(id) RANGE_ID_MSK((id), (id)) -#define FIXED_ID_ARB(id) RANGE_ID_ARB((id), (id)) - -#define STD_RANGE_ID_MSK(range_start, range_end) ((u16)((RANGE_ID_MSK((range_start), (range_end)) & 0x7FF) << 2)) -#define STD_RANGE_ID_ARB(range_start, range_end) ((u16)(RANGE_ID_ARB((range_start), (range_end)) << 2)) - -#define STD_FIXED_ID_MSK(id) ((u16)((FIXED_ID_MSK(id) & 0x7FF) << 2)) -#define STD_FIXED_ID_ARB(id) ((u16)(FIXED_ID_ARB(id) << 2)) - -#define EXT_RANGE_ID_MSK_L(range_start, range_end) ((u16)(RANGE_ID_MSK((range_start), (range_end)) >> 11)) -#define EXT_RANGE_ID_MSK_H(range_start, range_end) ((u16)(STD_RANGE_ID_MSK((range_start), (range_end)) | ((RANGE_ID_MSK((range_start), (range_end)) >> 27) & 0x03))) -#define EXT_RANGE_ID_ARB_L(range_start, range_end) ((u16)(RANGE_ID_ARB((range_start), (range_end)) >> 11)) -#define EXT_RANGE_ID_ARB_H(range_start, range_end) ((u16)(STD_RANGE_ID_ARB((range_start), (range_end)) | ((RANGE_ID_ARB((range_start), (range_end)) >> 27) & 0x03))) - -#define EXT_FIXED_ID_MSK_L(id) ((u16)(FIXED_ID_MSK(id) >> 11)) -#define EXT_FIXED_ID_MSK_H(id) ((u16)(STD_FIXED_ID_MSK(id) | ((FIXED_ID_MSK(id) >> 27) & 0x03))) -#define EXT_FIXED_ID_ARB_L(id) ((u16)(FIXED_ID_ARB(id) >> 11)) -#define EXT_FIXED_ID_ARB_H(id) ((u16)(STD_FIXED_ID_ARB(id) | ((FIXED_ID_ARB(id) >> 27) & 0x03))) - -/* macro to format the timing register value from the timing parameters*/ -#define CAN_TIMING(tseg1, tseg2, sjw, brp) ((((tseg2-1) & 0x07) << 12) | (((tseg1-1) & 0x0F) << 8) | (((sjw-1) & 0x03) << 6) | ((brp-1) & 0x3F)) - -/* Private variables ---------------------------------------------------------*/ -/* array of pre-defined timing parameters for standard bitrates*/ -u16 CanTimings[] = { /* value bitrate NTQ TSEG1 TSEG2 SJW BRP */ - CAN_TIMING(11, 4, 4, 5), /* 0x3AC4 100 kbit/s 16 11 4 4 5 */ - CAN_TIMING(11, 4, 4, 4), /* 0x3AC3 125 kbit/s 16 11 4 4 4 */ - CAN_TIMING( 4, 3, 3, 4), /* 0x2383 250 kbit/s 8 4 3 3 4 */ - CAN_TIMING(13, 2, 1, 1), /* 0x1C00 500 kbit/s 16 13 2 1 1 */ - CAN_TIMING( 4, 3, 1, 1), /* 0x2300 1 Mbit/s 8 4 3 1 1 */ -}; - -/* Private function prototypes -----------------------------------------------*/ -static u32 GetFreeIF(void); -/* Private functions ---------------------------------------------------------*/ - -/******************************************************************************* -* Function Name : CAN_DeInit -* Description : Deinitializes the CAN peripheral registers to their default -* reset values. -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void CAN_DeInit (void) -{ - /* Reset the CAN registers values*/ - - SCU_APBPeriphReset(__CAN,ENABLE); /*CAN peripheral is under Reset */ - SCU_APBPeriphReset(__CAN,DISABLE); /*CAN peripheral Reset off*/ - - -} - -/******************************************************************************* -* Function Name : CAN_Init -* Description : Initializes the CAN peripheral according to the specified -* parameters in the CAN_InitStruct. -* Input : CAN_InitStruct: pointer to a CAN_InitTypeDef structure that -* contains the configuration information for the CAN peripheral. -* Output : None -* Return : None -*******************************************************************************/ -void CAN_Init(CAN_InitTypeDef* CAN_InitStruct) -{ - CAN_EnterInitMode(CAN_CR_CCE | CAN_InitStruct->CAN_ConfigParameters); - CAN_SetBitrate(CAN_InitStruct->CAN_Bitrate); - CAN_LeaveInitMode(); - CAN_LeaveTestMode(); -} - -/******************************************************************************* -* Function Name : CAN_StructInit -* Description : Fills each CAN_InitStruct member with its reset value. -* Input : CAN_InitStruct : pointer to a CAN_InitTypeDef structure which -* will be initialized. -* Output : None -* Return : None. -*******************************************************************************/ -void CAN_StructInit(CAN_InitTypeDef* CAN_InitStruct) -{ -/* Reset CAN init structure parameters values */ - CAN_InitStruct->CAN_ConfigParameters = 0x0; - CAN_InitStruct->CAN_Bitrate = 0x2301; -} - -/******************************************************************************* -* Function Name : CAN_SetBitrate -* Description : Setups a standard CAN bitrate. -* Input : bitrate: specifies the bit rate. -* Output : None -* Return : None -*******************************************************************************/ -void CAN_SetBitrate(u32 bitrate) -{ - CAN->BTR = CanTimings[bitrate]; /* write the predefined timing value */ - CAN->BRPR = 0; /* clear the Extended Baud Rate Prescaler */ -} - -/******************************************************************************* -* Function Name : CAN_SetTiming -* Description : Setups the CAN timing with specific parameters -* Input : - tseg1: specifies Time Segment before the sample point. -* This parameter must be a number between 1 and 16. -* - tseg2: Time Segment after the sample point. This parameter -* must be a number between 1 and 8. -* - sjw: Synchronisation Jump Width. This parameter must be -* a number between 1 and 4. -* - brp: Baud Rate Prescaler. This parameter must be a number -* between 1 and 1024. -* Output : None -* Return : None -*******************************************************************************/ -void CAN_SetTiming(u32 tseg1, u32 tseg2, u32 sjw, u32 brp) -{ - CAN->BTR = CAN_TIMING(tseg1, tseg2, sjw, brp); - CAN->BRPR = ((brp-1) >> 6) & 0x0F; -} - -/******************************************************************************* -* Function Name : GetFreeIF -* Description : Searchs the first free message interface, starting from 0. -* Input : None -* Output : None -* Return : A free message interface number (0 or 1) if found, else 2 -*******************************************************************************/ -static u32 GetFreeIF(void) -{ - if ((CAN->sMsgObj[0].CRR & CAN_CRR_BUSY) == 0) - return 0; - else if ((CAN->sMsgObj[1].CRR & CAN_CRR_BUSY) == 0) - return 1; - else - return 2; -} - -/******************************************************************************* -* Function Name : CAN_SetUnusedMsgObj -* Description : Configures the message object as unused -* Input : msgobj: specifies the Message object number, from 0 to 31. -* Output : None -* Return : An ErrorStatus enumuration value: -* - SUCCESS: Interface to treat the message -* - ERROR: No interface to treat the message -*******************************************************************************/ -ErrorStatus CAN_SetUnusedMsgObj(u32 msgobj) -{ - u32 msg_if=0; - - if ((msg_if = GetFreeIF()) == 2) - { - return ERROR; - } - - CAN->sMsgObj[msg_if].CMR = CAN_CMR_WRRD - | CAN_CMR_MASK - | CAN_CMR_ARB - | CAN_CMR_CONTROL - | CAN_CMR_DATAA - | CAN_CMR_DATAB; - - CAN->sMsgObj[msg_if].M1R = 0; - CAN->sMsgObj[msg_if].M2R = 0; - - CAN->sMsgObj[msg_if].A1R = 0; - CAN->sMsgObj[msg_if].A2R = 0; - - CAN->sMsgObj[msg_if].MCR = 0; - - CAN->sMsgObj[msg_if].DA1R = 0; - CAN->sMsgObj[msg_if].DA2R = 0; - CAN->sMsgObj[msg_if].DB1R = 0; - CAN->sMsgObj[msg_if].DB2R = 0; - - CAN->sMsgObj[msg_if].CRR = 1 + msgobj; - - return SUCCESS; -} - -/******************************************************************************* -* Function Name : CAN_SetTxMsgObj -* Description : Configures the message object as TX. -* Input : - msgobj: specifies the Message object number, from 0 to 31. -* - idType: specifies the identifier type of the frames that -* will be transmitted using this message object. -* This parameter can be one of the following values: -* - CAN_STD_ID (standard ID, 11-bit) -* - CAN_EXT_ID (extended ID, 29-bit) -* Output : None -* Return : An ErrorStatus enumuration value: -* - SUCCESS: Interface to treat the message -* - ERROR: No interface to treat the message -*******************************************************************************/ -ErrorStatus CAN_SetTxMsgObj(u32 msgobj, u32 idType) -{ - u32 msg_if=0; - - if ((msg_if = GetFreeIF()) == 2) - { - return ERROR; - } - - CAN->sMsgObj[msg_if].CMR = CAN_CMR_WRRD - | CAN_CMR_MASK - | CAN_CMR_ARB - | CAN_CMR_CONTROL - | CAN_CMR_DATAA - | CAN_CMR_DATAB; - - CAN->sMsgObj[msg_if].M1R = 0; - CAN->sMsgObj[msg_if].A1R = 0; - - if (idType == CAN_STD_ID) - { - CAN->sMsgObj[msg_if].M2R = CAN_M2R_MDIR; - CAN->sMsgObj[msg_if].A2R = CAN_A2R_MSGVAL | CAN_A2R_DIR; - } - else - { - CAN->sMsgObj[msg_if].M2R = CAN_M2R_MDIR | CAN_M2R_MXTD; - CAN->sMsgObj[msg_if].A2R = CAN_A2R_MSGVAL | CAN_A2R_DIR | CAN_A2R_XTD; - } - - CAN->sMsgObj[msg_if].MCR = CAN_MCR_TXIE | CAN_MCR_EOB; - - CAN->sMsgObj[msg_if].DA1R = 0; - CAN->sMsgObj[msg_if].DA2R = 0; - CAN->sMsgObj[msg_if].DB1R = 0; - CAN->sMsgObj[msg_if].DB2R = 0; - - CAN->sMsgObj[msg_if].CRR = 1 + msgobj; - - return SUCCESS; -} - -/******************************************************************************* -* Function Name : CAN_SetRxMsgObj -* Description : Configures the message object as RX. -* Input : - msgobj: specifies the Message object number, from 0 to 31. -* - idType: specifies the identifier type of the frames that -* will be transmitted using this message object. -* This parameter can be one of the following values: -* - CAN_STD_ID (standard ID, 11-bit) -* - CAN_EXT_ID (extended ID, 29-bit) -* - idLow: specifies the low part of the identifier range used -* for acceptance filtering. -* - idHigh: specifies the high part of the identifier range -* used for acceptance filtering. -* - singleOrFifoLast: specifies the end-of-buffer indicator. -* This parameter can be one of the following values: -* - TRUE: for a single receive object or a FIFO receive -* object that is the last one of the FIFO. -* - FALSE: for a FIFO receive object that is not the -* last one. -* Output : None -* Return : An ErrorStatus enumuration value: -* - SUCCESS: Interface to treat the message -* - ERROR: No interface to treat the message -*******************************************************************************/ -ErrorStatus CAN_SetRxMsgObj(u32 msgobj, u32 idType, u32 idLow, u32 idHigh, bool singleOrFifoLast) -{ - u32 msg_if=0; - - if ((msg_if = GetFreeIF()) == 2) - { - return ERROR; - } - - CAN->sMsgObj[msg_if].CMR = CAN_CMR_WRRD - | CAN_CMR_MASK - | CAN_CMR_ARB - | CAN_CMR_CONTROL - | CAN_CMR_DATAA - | CAN_CMR_DATAB; - - if (idType == CAN_STD_ID) - { - CAN->sMsgObj[msg_if].M1R = 0; - CAN->sMsgObj[msg_if].M2R = STD_RANGE_ID_MSK(idLow, idHigh); - - CAN->sMsgObj[msg_if].A1R = 0; - CAN->sMsgObj[msg_if].A2R = CAN_A2R_MSGVAL | STD_RANGE_ID_ARB(idLow, idHigh); - } - else - { - CAN->sMsgObj[msg_if].M1R = EXT_RANGE_ID_MSK_L(idLow, idHigh); - CAN->sMsgObj[msg_if].M2R = CAN_M2R_MXTD | EXT_RANGE_ID_MSK_H(idLow, idHigh); - - CAN->sMsgObj[msg_if].A1R = EXT_RANGE_ID_ARB_L(idLow, idHigh); - CAN->sMsgObj[msg_if].A2R = CAN_A2R_MSGVAL | CAN_A2R_XTD | EXT_RANGE_ID_ARB_H(idLow, idHigh); - } - - CAN->sMsgObj[msg_if].MCR = CAN_MCR_RXIE | CAN_MCR_UMASK | (singleOrFifoLast ? CAN_MCR_EOB : 0); - - CAN->sMsgObj[msg_if].DA1R = 0; - CAN->sMsgObj[msg_if].DA2R = 0; - CAN->sMsgObj[msg_if].DB1R = 0; - CAN->sMsgObj[msg_if].DB2R = 0; - - CAN->sMsgObj[msg_if].CRR = 1 + msgobj; - - return SUCCESS; -} - -/******************************************************************************* -* Function Name : CAN_InvalidateAllMsgObj -* Description : Configures all the message objects as unused. -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void CAN_InvalidateAllMsgObj(void) -{ - u32 i=0; - for (i = 0; i < 32; i++) - CAN_SetUnusedMsgObj(i); -} - - -/******************************************************************************* -* Function Name : CAN_ReleaseMessage -* Description : Releases the message object -* Input : - msgobj: specifies the Message object number, from 0 to 31. -* Output : None -* Return : An ErrorStatus enumuration value: -* - SUCCESS: Interface to treat the message -* - ERROR: No interface to treat the message -*******************************************************************************/ -ErrorStatus CAN_ReleaseMessage(u32 msgobj) -{ - u32 msg_if=0; - - if ((msg_if = GetFreeIF()) == 2) - { - return ERROR; - } - - CAN->sMsgObj[msg_if].CMR = CAN_CMR_CLRINTPND | CAN_CMR_TXRQSTNEWDAT; - CAN->sMsgObj[msg_if].CRR = 1 + msgobj; - - return SUCCESS; -} - -/******************************************************************************* -* Function Name : CAN_SendMessage -* Description : Start transmission of a message -* Input : - msgobj: specifies the Message object number, from 0 to 31. -* : - pCanMsg: pointer to the message structure containing data -* to transmit. -* Output : None -* Return : An ErrorStatus enumuration value: -* - SUCCESS: Transmission OK -* - ERROR: No transmission -*******************************************************************************/ -ErrorStatus CAN_SendMessage(u32 msgobj, canmsg* pCanMsg) -{ - if (CAN->sMsgObj[0].CRR & CAN_CRR_BUSY) - { - return ERROR; - } - - CAN->SR &= ~CAN_SR_TXOK; - - /* read the Arbitration and Message Control*/ - CAN->sMsgObj[0].CMR = CAN_CMR_ARB | CAN_CMR_CONTROL; - - CAN->sMsgObj[0].CRR = 1 + msgobj; - - if (CAN->sMsgObj[0].CRR & CAN_CRR_BUSY) - { - return ERROR; - } - - /* update the contents needed for transmission*/ - CAN->sMsgObj[0].CMR = CAN_CMR_WRRD - | CAN_CMR_ARB - | CAN_CMR_CONTROL - | CAN_CMR_DATAA - | CAN_CMR_DATAB; - - if ((CAN->sMsgObj[0].A2R & CAN_A2R_XTD) == 0) - { - /* standard ID*/ - CAN->sMsgObj[0].A1R = 0; - CAN->sMsgObj[0].A2R = (CAN->sMsgObj[0].A2R & 0xE000) | STD_FIXED_ID_ARB(pCanMsg->Id); - } - else - { - /* extended ID*/ - CAN->sMsgObj[0].A1R = EXT_FIXED_ID_ARB_L(pCanMsg->Id); - CAN->sMsgObj[0].A2R = (CAN->sMsgObj[0].A2R & 0xE000) | EXT_FIXED_ID_ARB_H(pCanMsg->Id); - } - - CAN->sMsgObj[0].MCR = (CAN->sMsgObj[0].MCR & 0xFEF0) | CAN_MCR_NEWDAT | CAN_MCR_TXRQST | pCanMsg->Dlc; - - CAN->sMsgObj[0].DA1R = ((u16)pCanMsg->Data[1]<<8) | pCanMsg->Data[0]; - CAN->sMsgObj[0].DA2R = ((u16)pCanMsg->Data[3]<<8) | pCanMsg->Data[2]; - CAN->sMsgObj[0].DB1R = ((u16)pCanMsg->Data[5]<<8) | pCanMsg->Data[4]; - CAN->sMsgObj[0].DB2R = ((u16)pCanMsg->Data[7]<<8) | pCanMsg->Data[6]; - - CAN->sMsgObj[0].CRR = 1 + msgobj; - - return SUCCESS; -} - -/******************************************************************************* -* Function Name : CAN_ReceiveMessage -* Description : Gets the message, if received. -* Input : - msgobj: specifies the Message object number, from 0 to 31. -* - release: specifies the message release indicator. -* This parameter can be one of the following values: -* - TRUE: the message object is released when getting -* the data. -* - FALSE: the message object is not released. -* - pCanMsg: pointer to the message structure where received -* data is copied. -* Output : None -* Return : An ErrorStatus enumuration value: -* - SUCCESS: Reception OK -* - ERROR: No message pending -*******************************************************************************/ -ErrorStatus CAN_ReceiveMessage(u32 msgobj, bool release, canmsg* pCanMsg) -{ - if (!CAN_IsMessageWaiting(msgobj)) - { - return ERROR; - } - - CAN->SR &= ~CAN_SR_RXOK; - - /* read the message contents*/ - CAN->sMsgObj[1].CMR = CAN_CMR_MASK - | CAN_CMR_ARB - | CAN_CMR_CONTROL - | CAN_CMR_CLRINTPND - | (release ? CAN_CMR_TXRQSTNEWDAT : 0) - | CAN_CMR_DATAA - | CAN_CMR_DATAB; - - CAN->sMsgObj[1].CRR = 1 + msgobj; - - if (CAN->sMsgObj[1].CRR & CAN_CRR_BUSY) - { - return ERROR; - } - - if ((CAN->sMsgObj[1].A2R & CAN_A2R_XTD) == 0) - { - /* standard ID*/ - pCanMsg->IdType = CAN_STD_ID; - pCanMsg->Id = (CAN->sMsgObj[1].A2R >> 2) & 0x07FF; - } - else - { - /* extended ID*/ - pCanMsg->IdType = CAN_EXT_ID; - pCanMsg->Id = ((CAN->sMsgObj[1].A2R >> 2) & 0x07FF); - pCanMsg->Id |= ((u32)CAN->sMsgObj[1].A1R << 11); - pCanMsg->Id |= (((u32)CAN->sMsgObj[1].A2R & 0x0003) << 27); - } - - pCanMsg->Dlc = CAN->sMsgObj[1].MCR & 0x0F; - - pCanMsg->Data[0] = (u8) CAN->sMsgObj[1].DA1R; - pCanMsg->Data[1] = (u8)(CAN->sMsgObj[1].DA1R >> 8); - pCanMsg->Data[2] = (u8) CAN->sMsgObj[1].DA2R; - pCanMsg->Data[3] = (u8)(CAN->sMsgObj[1].DA2R >> 8); - pCanMsg->Data[4] = (u8) CAN->sMsgObj[1].DB1R; - pCanMsg->Data[5] = (u8)(CAN->sMsgObj[1].DB1R >> 8); - pCanMsg->Data[6] = (u8) CAN->sMsgObj[1].DB2R; - pCanMsg->Data[7] = (u8)(CAN->sMsgObj[1].DB2R >> 8); - - return SUCCESS; -} - -/******************************************************************************* -* Function Name : CAN_WaitEndOfTx -* Description : Waits until current transmission is finished. -* Input : None -* Output : None -* Return : An ErrorStatus enumuration value: -* - SUCCESS: Transmission ended -* - ERROR: Transmission did not occur yet -*******************************************************************************/ -ErrorStatus CAN_WaitEndOfTx(void) -{ - if ((CAN->SR & CAN_SR_TXOK) == 0) - { - return ERROR; - } - CAN->SR &= ~CAN_SR_TXOK; - - return SUCCESS; -} - -/******************************************************************************* -* Function Name : CAN_BasicSendMessage -* Description : Starts transmission of a message in BASIC mode. This mode -* does not use the message RAM. -* Input : pCanMsg: Pointer to the message structure containing data to -* transmit. -* Output : None -* Return : An ErrorStatus enumuration value: -* - SUCCESS: Transmission OK -* - ERROR: No transmission -*******************************************************************************/ -ErrorStatus CAN_BasicSendMessage(canmsg* pCanMsg) -{ - /* clear NewDat bit in IF2 to detect next reception*/ - CAN->sMsgObj[1].MCR &= ~CAN_MCR_NEWDAT; - - CAN->SR &= ~CAN_SR_TXOK; - CAN->sMsgObj[0].CMR = CAN_CMR_WRRD - | CAN_CMR_ARB - | CAN_CMR_CONTROL - | CAN_CMR_DATAA - | CAN_CMR_DATAB; - - if (pCanMsg->IdType == CAN_STD_ID) - { - /* standard ID*/ - CAN->sMsgObj[0].A1R = 0; - CAN->sMsgObj[0].A2R = (CAN->sMsgObj[0].A2R & 0xE000) | STD_FIXED_ID_ARB(pCanMsg->Id); - } - else - { - /* extended ID*/ - CAN->sMsgObj[0].A1R = EXT_FIXED_ID_ARB_L(pCanMsg->Id); - CAN->sMsgObj[0].A2R = ((CAN->sMsgObj[0].A2R) & 0xE000) | EXT_FIXED_ID_ARB_H(pCanMsg->Id); - } - - CAN->sMsgObj[0].MCR = (CAN->sMsgObj[0].MCR & 0xFCF0) | pCanMsg->Dlc; - - CAN->sMsgObj[0].DA1R = ((u16)pCanMsg->Data[1]<<8) | pCanMsg->Data[0]; - CAN->sMsgObj[0].DA2R = ((u16)pCanMsg->Data[3]<<8) | pCanMsg->Data[2]; - CAN->sMsgObj[0].DB1R = ((u16)pCanMsg->Data[5]<<8) | pCanMsg->Data[4]; - CAN->sMsgObj[0].DB2R = ((u16)pCanMsg->Data[7]<<8) | pCanMsg->Data[6]; - - /* request transmission*/ - if (CAN->sMsgObj[0].CRR == CAN_CRR_BUSY ) - { - return ERROR; - } - - return SUCCESS; -} - -/******************************************************************************* -* Function Name : CAN_BasicReceiveMessage -* Description : Gets the message in BASIC mode, if received. This mode does -* not use the message RAM. -* Input : pCanMsg: pointer to the message structure where message is copied. -* Output : None -* Return : An ErrorStatus enumuration value: -* - SUCCESS: Reception OK -* - ERROR: No message pending -*******************************************************************************/ -ErrorStatus CAN_BasicReceiveMessage(canmsg* pCanMsg) -{ - if ((CAN->sMsgObj[1].MCR & CAN_MCR_NEWDAT) == 0) - { - return ERROR; - } - - CAN->SR &= ~CAN_SR_RXOK; - - CAN->sMsgObj[1].CMR = CAN_CMR_ARB - | CAN_CMR_CONTROL - | CAN_CMR_DATAA - | CAN_CMR_DATAB; - - if ((CAN->sMsgObj[1].A2R & CAN_A2R_XTD) == 0) - { - /* standard ID*/ - pCanMsg->IdType = CAN_STD_ID; - pCanMsg->Id = (CAN->sMsgObj[1].A2R >> 2) & 0x07FF; - } - else - { - /* extended ID*/ - pCanMsg->IdType = CAN_EXT_ID; - pCanMsg->Id = ((CAN->sMsgObj[1].A2R >> 2) & 0x07FF); - pCanMsg->Id |= ((u32)CAN->sMsgObj[1].A1R << 11); - pCanMsg->Id |= (((u32)CAN->sMsgObj[1].A2R & 0x0003) << 27); - } - - pCanMsg->Dlc = CAN->sMsgObj[1].MCR & 0x0F; - - pCanMsg->Data[0] = (u8) CAN->sMsgObj[1].DA1R; - pCanMsg->Data[1] = (u8)(CAN->sMsgObj[1].DA1R >> 8); - pCanMsg->Data[2] = (u8) CAN->sMsgObj[1].DA2R; - pCanMsg->Data[3] = (u8)(CAN->sMsgObj[1].DA2R >> 8); - pCanMsg->Data[4] = (u8) CAN->sMsgObj[1].DB1R; - pCanMsg->Data[5] = (u8)(CAN->sMsgObj[1].DB1R >> 8); - pCanMsg->Data[6] = (u8) CAN->sMsgObj[1].DB2R; - pCanMsg->Data[7] = (u8)(CAN->sMsgObj[1].DB2R >> 8); - - return SUCCESS; -} - -/******************************************************************************* -* Function Name : CAN_EnterInitMode -* Description : Switchs the CAN into initialization mode. This function must -* be used in conjunction with CAN_LeaveInitMode(). -* Input : InitMask: specifies the CAN configuration in normal mode. -* Output : None -* Return : None -*******************************************************************************/ -void CAN_EnterInitMode(u8 InitMask) -{ - CAN->CR = InitMask | CAN_CR_INIT; - CAN->SR = 0; /* reset the status*/ -} - -/******************************************************************************* -* Function Name : CAN_LeaveInitMode -* Description : Leaves the initialization mode (switch into normal mode). -* This function must be used in conjunction with CAN_EnterInitMode(). -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void CAN_LeaveInitMode(void) -{ - CAN->CR &= ~(CAN_CR_INIT | CAN_CR_CCE); -} - -/******************************************************************************* -* Function Name : CAN_EnterTestMode -* Description : Switchs the CAN into test mode. This function must be used in -* conjunction with CAN_LeaveTestMode(). -* Input : TestMask: specifies the configuration in test modes. -* Output : None -* Return : None -*******************************************************************************/ -void CAN_EnterTestMode(u8 TestMask) -{ - CAN->CR |= CAN_CR_TEST; - CAN->TESTR |= TestMask; -} - -/******************************************************************************* -* Function Name : CAN_LeaveTestMode -* Description : Leaves the current test mode (switch into normal mode). -* This function must be used in conjunction with CAN_EnterTestMode(). -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void CAN_LeaveTestMode(void) -{ - CAN->CR |= CAN_CR_TEST; - CAN->TESTR &= ~(CAN_TESTR_LBACK | CAN_TESTR_SILENT | CAN_TESTR_BASIC); - CAN->CR &= ~CAN_CR_TEST; -} - -/******************************************************************************* -* Function Name : CAN_ReleaseTxMessage -* Description : Releases the transmit message object. -* Input : - msgobj: specifies the Message object number, from 0 to 31. -* Output : None -* Return : None -*******************************************************************************/ -void CAN_ReleaseTxMessage(u32 msgobj) -{ - CAN->sMsgObj[0].CMR = CAN_CMR_CLRINTPND | CAN_CMR_TXRQSTNEWDAT; - CAN->sMsgObj[0].CRR = 1 + msgobj; -} - -/******************************************************************************* -* Function Name : CAN_ReleaseRxMessage -* Description : Releases the receive message object. -* Input : - msgobj: specifies the Message object number, from 0 to 31. -* Output : None -* Return : None -*******************************************************************************/ -void CAN_ReleaseRxMessage(u32 msgobj) -{ - CAN->sMsgObj[1].CMR = CAN_CMR_CLRINTPND | CAN_CMR_TXRQSTNEWDAT; - CAN->sMsgObj[1].CRR = 1 + msgobj; -} - -/******************************************************************************* -* Function Name : CAN_IsMessageWaiting -* Description : Tests the waiting status of a received message. -* Input : - msgobj: specifies the Message object number, from 0 to 31. -* Output : None -* Return : A non-zero value if the corresponding message object has -* received a message waiting to be copied, else 0. -*******************************************************************************/ -u32 CAN_IsMessageWaiting(u32 msgobj) -{ - return (msgobj < 16 ? CAN->ND1R & (1 << msgobj) : CAN->ND2R & (1 << (msgobj-16))); -} - -/******************************************************************************* -* Function Name : CAN_IsTransmitRequested -* Description : Tests the request status of a transmitted message. -* Input : - msgobj: specifies the Message object number, from 0 to 31. -* Output : None -* Return : A non-zero value if the corresponding message is requested -* to transmit, else 0. -*******************************************************************************/ -u32 CAN_IsTransmitRequested(u32 msgobj) -{ - return (msgobj < 16 ? CAN->TXR1R & (1 << msgobj) : CAN->TXR2R & (1 << (msgobj-16))); -} - -/******************************************************************************* -* Function Name : CAN_IsInterruptPending -* Description : Tests the interrupt status of a message object. -* Input : - msgobj: specifies the Message object number, from 0 to 31. -* Output : None -* Return : A non-zero value if the corresponding message has an -* interrupt pending, else 0. -*******************************************************************************/ -u32 CAN_IsInterruptPending(u32 msgobj) -{ - return (msgobj < 16 ? CAN->IP1R & (1 << msgobj) : CAN->IP2R & (1 << (msgobj-16))); -} - -/******************************************************************************* -* Function Name : CAN_IsObjectValid -* Description : Tests the validity of a message object (ready to use). -* Input : - msgobj: specifies the Message object number, from 0 to 31. -* Output : None -* Return : A non-zero value if the corresponding message object is -* valid, else 0. -*******************************************************************************/ -u32 CAN_IsObjectValid(u32 msgobj) -{ - return (msgobj < 16 ? CAN->MV1R & (1 << msgobj) : CAN->MV2R & (1 << (msgobj-16))); -} -/******************* (C) COPYRIGHT 2006 STMicroelectronics *****END OF FILE****/ diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/source/91x_enet.c b/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/source/91x_enet.c deleted file mode 100644 index 5c2f31078..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/source/91x_enet.c +++ /dev/null @@ -1,588 +0,0 @@ -/******************** -* Original work (C) COPYRIGHT 2006 STMicroelectronics ************************** -* Modifications (C) CopyRight 2006 Richard barry -* File Name : 91x_enet.c -* Author : MCD Application Team -* Date First Issued : May 2006 -* Description : ENET library functions -******************************************************************************** -* History: -* May 2006: v1.0 -******************************************************************************** -* THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS -* WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. -* AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, -* INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE -* CONTENT OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING -* INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. -*******************************************************************************/ - - -/* Includes ------------------------------------------------------------------*/ -#include "FreeRTOS.h" -#include "task.h" -#include "91x_lib.h" -#include "string.h" //include when using memcpy function - -/* Include of other module interface headers ---------------------------------*/ -/* Local includes ------------------------------------------------------------*/ -/* Private typedef -----------------------------------------------------------*/ -/* Private define ------------------------------------------------------------*/ -#ifndef NULL -#define NULL (0) -#endif -/* Function return values */ -#define ENET_OK (1) -#define ENET_NOK (0) - -/* PHY interface constants. */ -#define STE100P_STATUS_REG 0x01 -#define STE100P_CONTROL_REG 0x00 -#define STE100P_LINK_ABILITY 0x05 -#define STE100P_STATUS_LINKED 0x0004 -#define STE100P_AUTO_NEGOTIATE_ABILITY 0x1000 -#define STE100P_AUTO_NEGOTIATE_COMPLETE 0x20 -#define STE100P_10HALF 0x0020 -#define STE100P_10FULL 0x0040 -#define STE100P_100HALF 0x0080 -#define STE100P_100FULL 0x0100 -#define STE100P_CTRL_FULL 0x0100 - - -/* Private macro -------------------------------------------------------------*/ -/* Private variables ---------------------------------------------------------*/ -#define ENET_NUM_RX_BUFFERS 8 - -static ENET_DMADSCRBase dmaTxDscrBase, dmaRxDscrBase[ ENET_NUM_RX_BUFFERS ]; -static u8 RxBuff[ ENET_NUM_RX_BUFFERS ][ENET_BUFFER_SIZE]; -u8 TxBuff[ENET_BUFFER_SIZE]; - -/* Interface functions -------------------------------------------------------*/ -/* Private functions ---------------------------------------------------------*/ - -/******************************************************************************* -* Function Name : ENET_SetMACConfig(ENET_MACConfig * MAC_Config) -* Description : MAC Control Register Configuration -* Input : MAC_Config structure -* Output : None -* Return : None -*******************************************************************************/ -void ENET_MACControlConfig(ENET_MACConfig *MAC_Config) -{ - /* ReceiveALL bit */ - if (MAC_Config->ReceiveALL==ENABLE) ENET_MAC->MCR |= MAC_MCR_RA; - else ENET_MAC->MCR &=~MAC_MCR_RA; - - /* MIIPrescaler */ - ENET_MAC->MCR &=~(0x3<<24); - if ((MAC_Config->MIIPrescaler) == MIIPrescaler_2) - ENET_MAC->MCR |=0x1<<24; - - /* Loopback mode */ - if (MAC_Config->LoopbackMode==ENABLE) - { - ENET_MAC->MCR &=~MAC_MCR_LM; - ENET_MAC->MCR |=0x1<<21; - ENET_MAC->MCR &=~MAC_MCR_DRO; /*enable frame reception during transmission*/ - } - - /* Address filtering mode */ - ENET_MAC->MCR &=~MAC_MCR_AFM; - ENET_MAC->MCR |= MAC_Config->AddressFilteringMode; - - /* VLAN Filtering Mode */ - ENET_MAC->MCR |= (MAC_Config->VLANFilteringMode)<<15; - - /*Wrong Frame Pass */ - if (MAC_Config->PassWrongFrame == ENABLE) ENET_MAC->MCR |=MAC_MCR_PWF; - else ENET_MAC->MCR &=~MAC_MCR_PWF; - - /* Late Collision Retransmission*/ - if (MAC_Config->LateCollision == ENABLE) ENET_MAC->MCR |=MAC_MCR_ELC; - else ENET_MAC->MCR &=~MAC_MCR_ELC; - - /* Broadcast Frame Reception */ - if (MAC_Config->BroadcastFrameReception == ENABLE) ENET_MAC->MCR &=~MAC_MCR_DBF; - else ENET_MAC->MCR |=MAC_MCR_DBF; - - /* PacketRetry */ - if (MAC_Config->PacketRetry == ENABLE) ENET_MAC->MCR &=~MAC_MCR_DPR; - else ENET_MAC->MCR |=MAC_MCR_DPR; - - /* RxFrameFiltering */ - if (MAC_Config->RxFrameFiltering == ENABLE) ENET_MAC->MCR |=MAC_MCR_RVFF; - else ENET_MAC->MCR &=~MAC_MCR_RVFF; - - /* AutomaticPadRemoval */ - if (MAC_Config->AutomaticPadRemoval == ENABLE) ENET_MAC->MCR |=MAC_MCR_APR; - else ENET_MAC->MCR &=~MAC_MCR_APR; - - /* DefferalCheck */ - if (MAC_Config->DeferralCheck == ENABLE) ENET_MAC->MCR |=MAC_MCR_DCE; - else ENET_MAC->MCR &=~MAC_MCR_DCE; - -} - - - -/******************************************************************************* -* Function Name : ENET_SetOperatingMode -* Description : Sets the Operating mode -* Input : ENET_OperatingMode:(see ENET_OperatingMode in 91x_enet.h) -* Output : None -* Return : None -*******************************************************************************/ -portBASE_TYPE ENET_SetOperatingMode( void ) -{ -unsigned long ulStatusReg, ulControlReg, ulLinkAbilityReg; - - /* Link status is latched, so read twice to get current value */ - ulStatusReg = ENET_MIIReadReg(0, STE100P_STATUS_REG); - ulStatusReg = ENET_MIIReadReg(0, STE100P_STATUS_REG); - - if( !( ulStatusReg & STE100P_STATUS_LINKED ) ) - { - /* No Link. */ - return pdFAIL; - } - - ulControlReg = ENET_MIIReadReg(0, STE100P_CONTROL_REG); - if (ulControlReg & STE100P_AUTO_NEGOTIATE_ABILITY) - { - /* AutoNegotiation is enabled. */ - if (!(ulStatusReg & STE100P_AUTO_NEGOTIATE_COMPLETE)) - { - /* Auto-negotiation in progress. */ - return pdFAIL; - } - - ulLinkAbilityReg = ENET_MIIReadReg(0, STE100P_LINK_ABILITY); - if( ( ulLinkAbilityReg & STE100P_100FULL ) || ( ulLinkAbilityReg & STE100P_10FULL ) ) - { - ENET_MAC->MCR |=MAC_MCR_FDM; /* full duplex mode */ - ENET_MAC->MCR &=~MAC_MCR_DRO; /* enable frame reception during transmission */ - } - else - { - ENET_MAC->MCR &=~MAC_MCR_FDM; /* half duplex mode */ - ENET_MAC->MCR |=MAC_MCR_DRO; /* disable frame reception during transmission */ - } - } - else - { - if( ulStatusReg & STE100P_CTRL_FULL ) - { - ENET_MAC->MCR |=MAC_MCR_FDM; /* full duplex mode */ - ENET_MAC->MCR &=~MAC_MCR_DRO; /* enable frame reception during transmission */ - } - else - { - ENET_MAC->MCR &=~MAC_MCR_FDM; /* half duplex mode */ - ENET_MAC->MCR |=MAC_MCR_DRO; /* disable frame reception during transmission */ - } - } - - return pdPASS; -} - -/******************************************************************************* -* Function Name : ENET_MIIWriteReg -* Description : Writes a value on the PHY registers -* Input : phyDev PHY device address - : phyReg PHY register to be written -* : phyVal PHY register value -* Output : None -* Return : None -*******************************************************************************/ -void ENET_MIIWriteReg (u8 phyDev, u8 phyReg, u32 phyVal) -{ - - volatile u32 addr; - volatile u32 res; /* temporary result for address register status */ - volatile u32 timeout; - - /* Prepare the MII register address */ - addr = 0; - addr |= ((phyDev<<11) & MAC_MII_ADDR_PHY_ADDR); /* set the PHY address */ - addr |= ((phyReg<<6) & MAC_MII_ADDR_MII_REG); /* select the corresponding register */ - addr |= MAC_MII_ADDR_MII_WRITE; /* in write mode */ - addr |= MAC_MII_ADDR_MII_BUSY; - - /* Check for the Busy flag */ - timeout=0; - do - { - timeout++; - res = ENET_MAC->MIIA; - } while ((res & MAC_MII_ADDR_MII_BUSY) && (timeout < (u32 )MII_WRITE_TO)); - - /* Give the value to the MII data register */ - ENET_MAC->MIID = (phyVal & 0xFFFF); - - /* write the result value into the MII Address register */ - ENET_MAC->MIIA =addr; - - /* Check for the Busy flag */ - timeout=0; - do - { - timeout++; - res = ENET_MAC->MIIA; - } while ((res & MAC_MII_ADDR_MII_BUSY) && (timeout < (u32 )MII_WRITE_TO)); - -} - -/******************************************************************************* -* Function Name : ENET_MIIReadReg -* Description : Writes a value on the PHY -* Input : phyDev PHY device address -* : phyReg PHY register to be read -* Output : None -* Return : The read value (16 bits) -*******************************************************************************/ -u32 ENET_MIIReadReg (u8 phyDev, u32 phyReg ) -{ - - u32 rValue; - u32 addr; - u32 res; /* temporary result for address register status */ - u32 timeout; /* timeout value for read process */ - - /* prepare the MII register address */ - addr = 0; - addr |= ((phyDev<<11) & MAC_MII_ADDR_PHY_ADDR); /* set the PHY address */ - addr |= ((phyReg<<6) & MAC_MII_ADDR_MII_REG); /* select the corresponding register */ - addr &= ~(MAC_MII_ADDR_MII_WRITE); /* ... in read mode */ - addr |= MAC_MII_ADDR_MII_BUSY; - - /* Check for the Busy flag */ - timeout = 0; - - do - { - timeout++; - res = ENET_MAC->MIIA; - } while ((res & MAC_MII_ADDR_MII_BUSY) && (timeout < (u32 )MII_READ_TO)); - - /* write the result value into the MII Address register */ - ENET_MAC->MIIA = addr; - - /* Check for the Busy flag */ - timeout = 0; - - do - { - timeout++; - res = ENET_MAC->MIIA; - } while ((res & MAC_MII_ADDR_MII_BUSY) && (timeout < (u32 )MII_READ_TO)); - - /* read the result value from data register*/ - rValue = ENET_MAC->MIID; - - return (rValue & 0x0000FFFF); -} - -/******************************************************************************* -* Function Name : ENET_RxDscrInit -* Description : Initializes the Rx ENET descriptor chain. Single Descriptor -* Input : None -* Output : None -* Return : None -*******************************************************************************/ - -void ENET_RxDscrInit(void) -{ -int i; - - for( i = 0; i < ENET_NUM_RX_BUFFERS; i++ ) - { - /* Assign temp Rx array to the ENET buffer */ - dmaRxDscrBase[ i ].dmaAddr = (u32)&(RxBuff[ i ][ 0 ]); - - /* Initialize RX ENET Status and control */ - dmaRxDscrBase[ i ].dmaStatCntl = 0x4000; - - /* Initialize the next descriptor- In our case its single descriptor */ - dmaRxDscrBase[ i ].dmaNext = (u32)&(dmaRxDscrBase[i+1]) | 0x01; - - /* Set the max packet size */ - dmaRxDscrBase[ i ].dmaStatCntl = ENET_MAX_PACKET_SIZE | ENET_NEXT_ENABLE; - - /* Setting the VALID bit */ - dmaRxDscrBase[ i ].dmaPackStatus = DMA_DSCR_RX_STATUS_VALID_MSK; - } - - dmaRxDscrBase[ ENET_NUM_RX_BUFFERS - 1 ].dmaNext = (u32)&(dmaRxDscrBase[ 0 ]); - - /* Setting the RX NEXT Descriptor Register inside the ENET */ - ENET_DMA->RXNDAR = (u32)&(dmaRxDscrBase) | 0x01; -} - -/******************************************************************************* -* Function Name : ENET_TxDscrInit -* Description : Initializes the Tx ENET descriptor chain with single descriptor -* Input : None -* Output : None -* Return : None -*******************************************************************************/ - -void ENET_TxDscrInit(void) -{ - - /* ENET Start Address */ - dmaTxDscrBase.dmaAddr = (u32)TxBuff; - - /* Next Descriptor Address */ - dmaTxDscrBase.dmaNext = (u32)&(dmaTxDscrBase); - - /* Initialize ENET status and control */ - dmaTxDscrBase.dmaStatCntl = 0; - - /* Tx next set to Tx decriptor base */ - ENET_DMA->TXNDAR = (u32)&(dmaTxDscrBase); - - /* Enable next enable */ - ENET_DMA->TXNDAR |= DMA_DSCR_NXT_NPOL_EN; - -} - -/******************************************************************************* -* Function Name : ENET_Init -* Description : ENET MAC, PHY and DMA initializations -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void ENET_Init () -{ - - vu32 regValue; - ENET_MACConfig *MAC_Config; - ENET_MACConfig config; - - /* De-assert the SRESET bit of ENET + MAC devices */ - ENET_DMA->SCR &=~DMA_SCR_SRESET; - MAC_Config =&config; - /* Initialize MAC control register with common values */ - MAC_Config->ReceiveALL = DISABLE; - if (SCU_GetHCLKFreqValue() > 50000) - MAC_Config->MIIPrescaler = MIIPrescaler_2; - MAC_Config->LoopbackMode = DISABLE; - MAC_Config->AddressFilteringMode = MAC_Perfect_Multicast_Perfect; - MAC_Config->VLANFilteringMode = VLANfilter_VLTAG; - MAC_Config->PassWrongFrame = DISABLE; - MAC_Config->LateCollision = DISABLE; - MAC_Config->BroadcastFrameReception = ENABLE; - MAC_Config->PacketRetry = ENABLE; - MAC_Config->RxFrameFiltering = ENABLE; - MAC_Config->AutomaticPadRemoval = ENABLE; - MAC_Config->DeferralCheck = ENABLE; - - /* Configure MAC control register */ - ENET_MACControlConfig(MAC_Config); - - /* DMA initialization */ - /* Read the ENET DMA Status and Control Register */ - regValue = ENET_DMA->SCR; - - /* Setup Tx Max burst size */ - regValue &= ~(u32)DMA_SCR_TX_MAX_BURST_SZ; - regValue |= (u32)DMA_SCR_TX_MAX_BURST_SZ_VAL; - - /* Setup Rx Max Burst size */ - regValue &= ~(u32)DMA_SCR_RX_MAX_BURST_SZ; - regValue |= (u32)DMA_SCR_RX_MAX_BURST_SZ_VAL; - - /* Write Tx & Rx burst size to the ENET status and control register */ - ENET_DMA->SCR = regValue; - - /* Put the PHY in reset mode */ - ENET_MIIWriteReg(0x0,MAC_MII_REG_XCR, 0x8000); - - /* Delay to assure PHY reset */ - vTaskDelay( 3000 / portTICK_PERIOD_MS ); - - /* initialize the opearting mode */ - while( ENET_SetOperatingMode() == pdFAIL ) - { - vTaskDelay( 3000 / portTICK_PERIOD_MS ); - } - - /*set MAC physical*/ - //ENET_MAC->MAH = (MAC_ADDR5<<8) + MAC_ADDR4; - //ENET_MAC->MAL = (MAC_ADDR3<<24) + (MAC_ADDR2<<16) + (MAC_ADDR1<<8) + MAC_ADDR0; - - /* Initialize Rx and Tx descriptors in memory */ - ENET_TxDscrInit(); - ENET_RxDscrInit(); - - // What's happening ??? -#ifdef DEBUG - //int pippo = 1; // Do NOT remove!!! -#endif -} - -/******************************************************************************** -* Function Name : ENET_HandleRxPkt -* Description : receive a packet and copy it to memory pointed by ppkt. -* Input : ppkt: pointer on application receive buffer. -* Output : None -* Return : ENET_NOK - If there is no packet -* : ENET_OK - If there is a packet -*******************************************************************************/ -u32 ENET_HandleRxPkt ( void *ppkt) -{ -ENET_DMADSCRBase *pDescr; -u16 size; -static int iNextRx = 0; - - if( dmaRxDscrBase[ iNextRx ].dmaPackStatus & DMA_DSCR_RX_STATUS_VALID_MSK ) - { - return 0; - } - - pDescr = &dmaRxDscrBase[ iNextRx ]; - - /*Get the size of the packet*/ - size = ((pDescr->dmaPackStatus & 0x7ff) - 4); - - //MEMCOPY_L2S_BY4((u8*)ppkt, RxBuff, size); /*optimized memcopy function*/ - memcpy(ppkt, RxBuff[iNextRx], size); //string.h library*/ - - /* Give the buffer back to ENET */ - pDescr->dmaPackStatus = DMA_DSCR_RX_STATUS_VALID_MSK; - - iNextRx++; - - if( iNextRx >= ENET_NUM_RX_BUFFERS ) - { - iNextRx = 0; - } - - /* Return no error */ - return size; -} - -/******************************************************************************* -* Function Name : ENET_TxPkt -* Description : Transmit a packet -* Input : ppkt: pointer to application packet Buffer -* : size: Tx Packet size -* Output : None -* Return : None -*******************************************************************************/ - -u8 *pcGetNextBuffer( void ) -{ - if( dmaTxDscrBase.dmaPackStatus & DMA_DSCR_TX_STATUS_VALID_MSK ) - { - return NULL; - } - else - { - return ( unsigned char * ) TxBuff; - } -} - -void ENET_TxPkt(void *ppkt, u16 size) -{ - /* Setting the Frame Length*/ - dmaTxDscrBase.dmaStatCntl = (size&0xFFF); - - /* Start the ENET by setting the VALID bit in dmaPackStatus of current descr*/ - dmaTxDscrBase.dmaPackStatus = DMA_DSCR_TX_STATUS_VALID_MSK; - - /* Start the transmit operation */ - ENET_DMA->TXSTR|= DMA_TX_START_FETCH; -} - -/******************************************************************************* -* Function Name : ENET_Start -* Description : Enables ENET MAC reception / transmission & starts DMA fetch -* Input : None -* Output : None -* Return : None -*******************************************************************************/ - -void ENET_Start ( void) -{ - u32 value; - - /* Force a ENET abort by software for the receive block */ - ENET_DMA->RXSTR &=~ DMA_RX_START_DMA_EN; - - /* Force a ENET abort by software for the transmit block */ - ENET_DMA->TXSTR &=~DMA_TX_START_DMA_EN; - - /* Reset all interrupts */ - ENET_DMA->ISR = 0xFFFFFFFF; - - /* Setup Descriptor Fetch ENET_PhyDelay for Receive Block */ - value = ENET_DMA->RXSTR; - value &= ~( DMA_RX_START_DFETCH_DLY ); - value |= DMA_RX_START_DFETCH_DEFAULT; - ENET_DMA->RXSTR= value; - - /* Setup Descriptor Fetch ENET_PhyDelay for Transmit Block */ - value = ENET_DMA->TXSTR; - value &= ~( DMA_TX_START_DFETCH_DLY ); - value |= DMA_TX_START_DFETCH_DEFAULT; - ENET_DMA->TXSTR= value; - - /* Set Tx underrun bit */ - value &= ~( DMA_TX_START_URUN ); - value |= DMA_TX_START_URUN; - ENET_DMA->TXSTR = value; - - /* Clear the interrupts */ - ENET_DMA->IER = 0x0; - - /* MAC TX enable */ - ENET_MAC->MCR|= MAC_MCR_TE; - - /* MAC RX enable */ - ENET_MAC->MCR|= MAC_MCR_RE; - - /* Start the DMA Fetch */ - ENET_DMA->RXSTR|= DMA_RX_START_FETCH; -} - - -/******************************************************************************* -* Function Name : ENET_InitClocksGPIO -* Description : Reset, clocks & GPIO Ethernet Pin initializations -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void ENET_InitClocksGPIO(void) -{ - - GPIO_InitTypeDef GPIO_Struct; - - SCU_AHBPeriphClockConfig(__ENET, ENABLE); - SCU_AHBPeriphReset(__ENET,DISABLE); - SCU_PHYCLKConfig(ENABLE); - - GPIO_DeInit(GPIO1); - GPIO_Struct.GPIO_Pin = GPIO_Pin_1 | GPIO_Pin_2 |GPIO_Pin_3 |GPIO_Pin_4 |GPIO_Pin_7 ; - GPIO_Struct.GPIO_Type = GPIO_Type_PushPull; - GPIO_Struct.GPIO_Direction = GPIO_PinOutput; - GPIO_Struct.GPIO_IPConnected = GPIO_IPConnected_Disable; - GPIO_Struct.GPIO_Alternate=GPIO_OutputAlt2; - GPIO_Init(GPIO1, &GPIO_Struct); - - - GPIO_DeInit(GPIO5); - GPIO_Struct.GPIO_Pin = GPIO_Pin_2 | GPIO_Pin_3; - GPIO_Struct.GPIO_Type = GPIO_Type_PushPull; - GPIO_Struct.GPIO_Direction = GPIO_PinOutput; - GPIO_Struct.GPIO_IPConnected = GPIO_IPConnected_Disable; - GPIO_Struct.GPIO_Alternate=GPIO_OutputAlt2; - GPIO_Init(GPIO5, &GPIO_Struct); - -} - -/******************** (C) COPYRIGHT 2006 STMicroelectronics *******************/ - - diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/source/91x_fmi.c b/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/source/91x_fmi.c deleted file mode 100644 index fb558ada6..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/source/91x_fmi.c +++ /dev/null @@ -1,519 +0,0 @@ -/******************** (C) COPYRIGHT 2006 STMicroelectronics ******************** -* File Name : 91x_fmi.c -* Author : MCD Application Team -* Date First Issued : 05/18/2006 : Version 1.0 -* Description : This file provides all the FMI software functions. -******************************************************************************** -* History: -* 05/24/2006 : Version 1.1 -* 05/18/2006 : Version 1.0 -******************************************************************************** -* THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH -* CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS -* A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, INDIRECT -* OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT -* OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION -* CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. -*******************************************************************************/ - - -/* Standard include ----------------------------------------------------------*/ -#include "91x_fmi.h" - -/* Include of other module interface headers ---------------------------------*/ -/* Local includes ------------------------------------------------------------*/ -/* Private typedef -----------------------------------------------------------*/ -/* Private define ------------------------------------------------------------*/ - -#define TIMEOUT 0xFFFFFF /* Timeout value */ - -/* Private macro -------------------------------------------------------------*/ -/* Private variables ---------------------------------------------------------*/ -/* Private function prototypes -----------------------------------------------*/ -/* Interface functions -------------------------------------------------------*/ -/* Private functions ---------------------------------------------------------*/ - - -/******************************************************************************* -* Function Name : FMI_BankRemapConfig -* Description : Configure the addresses and sizes of bank 0 and bank 1. -* Input1 : FMI_BootBankSize: specifies the boot bank size. -* This parameter can be one of the following values: -* - 0x0: 32KBytes. -* - 0x1: 64KBytes. -* - 0x2: 128KBytes. -* - 0x3: 256KBytes. -* - 0x4: 512KBytes. -* .... -* - 0xB: 64MBytes. -* Input2 : FMI_NonBootBankSize: specifies the non boot bank size. -* This parameter can be one of the following values: -* - 0x0: 8KBytes. -* - 0x1: 16KBytes. -* - 0x2: 32KBytes. -* - 0x3: 64KBytes. -* .... -* - 0xD: 64MBytes. -* Input3 : FMI_BootBankAddress: specifies the address of the boot bank. -* Input4 : FMI_NonBootBankAddress: specifies the address of the non -* boot bank. -* Output : None -* Return : None -*******************************************************************************/ -void FMI_BankRemapConfig(u8 FMI_BootBankSize, u8 FMI_NonBootBankSize, \ - u32 FMI_BootBankAddress, u32 FMI_NonBootBankAddress) -{ - FMI->BBSR = FMI_BootBankSize; - FMI->NBBSR = FMI_NonBootBankSize; - FMI->BBADR = (FMI_BootBankAddress >> 2); - FMI->NBBADR = (FMI_NonBootBankAddress >> 2); - FMI->CR |= 0x18; /* Enable bank 1 */ -} - -/******************************************************************************* -* Function Name : FMI_Config -* Description : Configure the FMI. -* Input1 : FMI_ReadWaitState: specifies the needed read wait states. -* This parameter can be one of the following values: -* - FMI_READ_WAIT_STATE_1: One read wait state. -* - FMI_READ_WAIT_STATE_2: Two read wait states. -* - FMI_READ_WAIT_STATE_3: Three read wait states. -* Input2 : FMI_WriteWaitState: specifies the needed write wait states. -* This parameter can be one of the following values: -* - FMI_WRITE_WAIT_STATE_1: One write wait state. -* - FMI_WRITE_WAIT_STATE_2: Two write wait states. -* Input3 : FMI_PWD: specifies the power down mode status. -* This parameter can be one of the following values: -* - FMI_PWD_ENABLE: Enable the PWD. -* - FMI_PWD_DISABLE: Disable the PWD. -* Input4 : FMI_LVDEN: specifies the low voltage detector status. -* This parameter can be one of the following values: -* - FMI_LVD_ENABLE: Enable the LVD. -* - FMI_LVD_DISABLE: Disable the LVD. -* Input5 : FMI_FreqRange: specifies the working frequency range. -* This parameter can be one of the following values: -* - FMI_FREQ_LOW: Low working frequency (up to 66MHz). -* - FMI_FREQ_HIGH: High working frequency (above 66MHz) . -* Output : None -* Return : None -*******************************************************************************/ -void FMI_Config(u16 FMI_ReadWaitState, u32 FMI_WriteWaitState, u16 FMI_PWD,\ - u16 FMI_LVDEN, u16 FMI_FreqRange) -{ - /* Configure the write wait state value */ - if (FMI_WriteWaitState == FMI_WRITE_WAIT_STATE_1) - { - FMI->CR |= FMI_WRITE_WAIT_STATE_1; - } - else - { - FMI->CR &= FMI_WRITE_WAIT_STATE_0; - } - - /* Write a write flash configuration register command */ - *(vu16 *)FMI_BANK_1 = 0x60; - - /* Configure the flash configuration register */ - *(vu16 *)(FMI_BANK_1|FMI_ReadWaitState|FMI_PWD|FMI_LVDEN|FMI_FreqRange) = 0x03; -} - -/******************************************************************************* -* Function Name : FMI_EraseSector -* Description : Erase the needed sector. -* Input : FMI_Sector: specifies the sector to be erased. -* This parameter can be one of the following values: -* - FMI_B0S0: FMI bank 0 sector 0. -* - FMI_B0S1: FMI bank 0 sector 1. -* - FMI_B0S2: FMI bank 0 sector 2. -* - FMI_B0S3: FMI bank 0 sector 3. -* - FMI_B0S4: FMI bank 0 sector 4. -* - FMI_B0S5: FMI bank 0 sector 5. -* - FMI_B0S6: FMI bank 0 sector 6. -* - FMI_B0S7: FMI bank 0 sector 7. -* - FMI_B1S0: FMI bank 1 sector 0. -* - FMI_B1S1: FMI bank 1 sector 1. -* - FMI_B1S2: FMI bank 1 sector 2. -* - FMI_B1S3: FMI bank 1 sector 3. -* Output : None -* Return : None -*******************************************************************************/ -void FMI_EraseSector(vu32 FMI_Sector) -{ - /* Write an erase set-up command to the sector */ - *(vu16 *)FMI_Sector = 0x20; - - /* Write an erase confirm command to the sector */ - *(vu16 *)FMI_Sector = 0xD0; -} - -/******************************************************************************* -* Function Name : FMI_EraseBank -* Description : Erase the needed bank. -* Input : FMI_Bank: specifies the bank to be erased. -* This parameter can be one of the following values: -* - FMI_BANK_0: FMI bank 0. -* - FMI_BANK_1: FMI bank 1. -* Output : None -* Return : None -*******************************************************************************/ -void FMI_EraseBank(vu32 FMI_Bank) -{ - /* Write a bank erase set-up command to the bank */ - *(vu16 *)FMI_Bank = 0x80; - - /* Write an erase confirm command to the sector */ - *(vu16 *)FMI_Bank = 0xD0; -} - -/******************************************************************************* -* Function Name : FMI_WriteHalfWord -* Description : Write a halfword to the needed Flash memory address. -* Input 1 : FMI_Address: specifies the address offset where the data will -* be written. -* Input 2 : FMI_Data: the needed data. -* Output : None -* Return : None -*******************************************************************************/ -void FMI_WriteHalfWord(u32 FMI_Address, u16 FMI_Data) -{ - /* Write a program command to the sector to be written */ - *(vu16 *)(FMI_Address & 0xFFFFFFFC) = 0x40; - - /* Write the halfword to the destination address */ - *(vu16 *)FMI_Address = FMI_Data; -} - -/******************************************************************************* -* Function Name : FMI_WriteOTPHalfWord -* Description : Write a halfword to the needed OTP sector address. -* Input 1 : FMI_OTPHWAddress: specifies the halfword address offset -* where the data will be written. -* This parameter can be one of the following values: -* - FMI_OTP_LOW_HALFWORD_0: OTP Low halfword 0. -* - FMI_OTP_HIGH_HALFWORD_0: OTP High halfword 0. -* - FMI_OTP_LOW_HALFWORD_1: OTP Low halfword 1. -* - FMI_OTP_HIGH_HALFWORD_1: OTP High halfword 1. -* - FMI_OTP_LOW_HALFWORD_2: OTP Low halfword 2. -* - FMI_OTP_HIGH_HALFWORD_2: OTP High halfword 2. -* - FMI_OTP_LOW_HALFWORD_3: OTP Low halfword 3. -* - FMI_OTP_HIGH_HALFWORD_3: OTP High halfword 3. -* - FMI_OTP_LOW_HALFWORD_4: OTP Low halfword 4. -* - FMI_OTP_HIGH_HALFWORD_4: OTP High halfword 4. -* - FMI_OTP_LOW_HALFWORD_5: OTP Low halfword 5. -* - FMI_OTP_HIGH_HALFWORD_5: OTP High halfword 5. -* - FMI_OTP_LOW_HALFWORD_6: OTP Low halfword 6. -* - FMI_OTP_HIGH_HALFWORD_6: OTP High halfword 6. -* - FMI_OTP_LOW_HALFWORD_7: OTP Low halfword 7. -* - FMI_OTP_HIGH_HALFWORD_7: OTP High halfword 7. -* Input 2 : FMI_OTPData: The needed OTP data. -* Output : None -* Return : None -*******************************************************************************/ -void FMI_WriteOTPHalfWord(u8 FMI_OTPHWAddress, u16 FMI_OTPData) -{ - /* Write a write OTP command to the needed address */ - *(vu16 *)(FMI_BANK_1) = 0xC0; - - /* Write the halfword to the destination address */ - *(vu16 *)(FMI_BANK_1 + FMI_OTPHWAddress) = FMI_OTPData; -} - -/******************************************************************************* -* Function Name : FMI_ReadWord -* Description : Read the correspondent data. -* Input : FMI_Address: specifies the needed address. -* Output : None -* Return : The data contained in the specified address. -*******************************************************************************/ -u32 FMI_ReadWord(u32 FMI_Address) -{ - return(*(u32*)FMI_Address); -} - -/******************************************************************************* -* Function Name : FMI_ReadOTPData -* Description : Read data from the OTP sector. -* Input : FMI_OTPAddress: specifies the address of the data to be read. -* This parameter can be one of the following values: -* - FMI_OTP_WORD_0: FMI bank 0 sector 0. -* - FMI_OTP_WORD_1: FMI bank 0 sector 1. -* - FMI_OTP_WORD_2: FMI bank 0 sector 2. -* - FMI_OTP_WORD_3: FMI bank 0 sector 3. -* - FMI_OTP_WORD_4: FMI bank 0 sector 4. -* - FMI_OTP_WORD_5: FMI bank 0 sector 5. -* - FMI_OTP_WORD_6: FMI bank 0 sector 6. -* - FMI_OTP_WORD_7: FMI bank 0 sector 7. -* Output : None -* Return : The needed OTP words. -*******************************************************************************/ -u32 FMI_ReadOTPData(u8 FMI_OTPAddress) -{ - u32 OTP_Data = 0x0; - /* write a read OTP sector command */ - *(vu16 *)(FMI_BANK_1) = 0x98; - - /* Read the correspondent data */ - OTP_Data = (*(vu32*)(FMI_BANK_1 + FMI_OTPAddress)); - - /* Write a read array command */ - *(vu16 *)(FMI_BANK_1) = 0xFF; - - return OTP_Data; -} - -/******************************************************************************* -* Function Name : FMI_GetFlagStatus -* Description : Check whether the specified FMI flag is set or not. -* Input1 : FMI_Flag: flag to check. -* This parameter can be one of the following values: -* - FMI_FLAG_SPS: Sector Protection Status Flag. -* - FMI_FLAG_PSS: Program Suspend Status Flag. -* - FMI_FLAG_PS: Program Status Flag. -* - FMI_FLAG_ES: Erase Status Flag. -* - FMI_FLAG_ESS: Erase Suspend Status Flag. -* - FMI_FLAG_PECS: FPEC Status Flag. -* Input2 : FMI_Bank: specifies the needed bank. -* This parameter can be one of the following values: -* - FMI_BANK_0: FMI bank 0. -* - FMI_BANK_1: FMI bank 1. -* Output : None -* Return : None -*******************************************************************************/ -FlagStatus FMI_GetFlagStatus(u8 FMI_Flag, vu32 FMI_Bank) -{ - u16 FMI_Status_Register = 0; - - /* Write a read status register command */ - *(vu16 *)FMI_Bank = 0x70; - - /* Wait until operation completion */ - while(!((*(vu16 *)FMI_Bank) & 0x80)); - - /* Read the status register */ - FMI_Status_Register = *(vu16 *)FMI_Bank; - - /* Write a read array command */ - *(vu16 *)FMI_Bank = 0xFF; - - if((FMI_Status_Register & FMI_Flag) != RESET) - { - return SET; - } - else - { - return RESET; - } -} - -/******************************************************************************* -* Function Name : FMI_GetReadWaitStateValue -* Description : Get the current Read wait state value. -* Input : None -* Output : None -* Return : The current read wait states value. -*******************************************************************************/ -u16 FMI_GetReadWaitStateValue(void) -{ - u16 FMI_Configuration_Register = 0; - /* Write a read flash configuration register command */ - *(vu16 *)FMI_BANK_1 = 0x90; - - /* Read the flash configuration register */ - FMI_Configuration_Register = *(vu16 *)(FMI_BANK_1 + 0x14); - - /* Write a read array command */ - *(vu16 *)FMI_BANK_1 = 0xFF; - - FMI_Configuration_Register = ((FMI_Configuration_Register>>11) + 1) & 0x3; - - /* Return the wait states value */ - return FMI_Configuration_Register; -} - -/******************************************************************************* -* Function Name : FMI_GetWriteWaitStateValue -* Description : Get the current write wait state value. -* Input : None -* Output : None -* Return : The current write wait states value. -*******************************************************************************/ -u16 FMI_GetWriteWaitStateValue(void) -{ - return ((u16)((FMI->CR & 0x100) >> 8)); -} - -/******************************************************************************* -* Function Name : FMI_SuspendEnable -* Description : Suspend command enable. -* Input : FMI_Bank: specifies the bank to be suspended. -* This parameter can be one of the following values: -* - FMI_BANK_0: FMI bank 0. -* - FMI_BANK_1: FMI bank 1. -* Output : None -* Return : None -*******************************************************************************/ -void FMI_SuspendEnable(vu32 FMI_Bank) -{ - /* Write a suspend command to the bank */ - *(vu16 *)FMI_Bank = 0xB0; -} - -/******************************************************************************* -* Function Name : FMI_ResumeEnable -* Description : Resume the suspended command. -* Input : FMI_Bank: specifies the suspended bank. -* This parameter can be one of the following values: -* - FMI_BANK_0: FMI bank 0. -* - FMI_BANK_1: FMI bank 1. -* Output : None -* Return : None -*******************************************************************************/ -void FMI_ResumeEnable(vu32 FMI_Bank) -{ - /* Write a resume command to the bank */ - *(vu16 *)FMI_Bank = 0xD0; -} - -/******************************************************************************* -* Function Name : FMI_ClearFlag -* Description : Clear the FMI Flags on the correspondent bank. -* Input : FMI_Bank: specifies the needed bank. -* This parameter can be one of the following values: -* - FMI_BANK_0: FMI bank 0. -* - FMI_BANK_1: FMI bank 1. -* Output : None -* Return : None -*******************************************************************************/ -void FMI_ClearFlag(vu32 FMI_Bank) -{ - /* Write a clear status register command */ - *(vu16 *)FMI_Bank = 0x50; -} - -/******************************************************************************* -* Function Name : FMI_WriteProtectionCmd -* Description : Enable or disable the write protection for the needed sector. -* Input1 : FMI_Sector: specifies the sector to be protected or -* unprotected. -* This parameter can be one of the following values: -* - FMI_B0S0: FMI bank 0 sector 0. -* - FMI_B0S1: FMI bank 0 sector 1. -* - FMI_B0S2: FMI bank 0 sector 2. -* - FMI_B0S3: FMI bank 0 sector 3. -* - FMI_B0S4: FMI bank 0 sector 4. -* - FMI_B0S5: FMI bank 0 sector 5. -* - FMI_B0S6: FMI bank 0 sector 6. -* - FMI_B0S7: FMI bank 0 sector 7. -* - FMI_B1S0: FMI bank 1 sector 0. -* - FMI_B1S1: FMI bank 1 sector 1. -* - FMI_B1S2: FMI bank 1 sector 2. -* - FMI_B1S3: FMI bank 1 sector 3. -* Input2 : FMI_NewState: specifies the protection status. -* This parameter can be one of the following values: -* - ENABLE: Enable the protection. -* - DISABLE: Disable the protection. -* Output : None -* Return : None -*******************************************************************************/ -void FMI_WriteProtectionCmd(vu32 FMI_Sector, FunctionalState FMI_NewState) -{ - if (FMI_NewState == ENABLE) - { - *(vu16*)FMI_Sector = 0x60; - *(vu16*)FMI_Sector = 0x01; - *(vu16*)FMI_Sector = 0xFF; - } - else /* DISABLE */ - { - *(vu16*)FMI_Sector = 0x60; - *(vu16*)FMI_Sector = 0xD0; - *(vu16*)FMI_Sector = 0xFF; - } -} - -/******************************************************************************* -* Function Name : FMI_GetWriteProtectionStatus -* Description : Get the write protection status for the needed sector. -* Input : FMI_Sector_Mask: specifies the needed sector mask. -* This parameter can be one of the following values: -* - FMI_B0S0_MASK: FMI bank 0 sector 0. -* - FMI_B0S1_MASK: FMI bank 0 sector 1. -* - FMI_B0S2_MASK: FMI bank 0 sector 2. -* - FMI_B0S3_MASK: FMI bank 0 sector 3. -* - FMI_B0S4_MASK: FMI bank 0 sector 4. -* - FMI_B0S5_MASK: FMI bank 0 sector 5. -* - FMI_B0S6_MASK: FMI bank 0 sector 6. -* - FMI_B0S7_MASK: FMI bank 0 sector 7. -* - FMI_B1S0_MASK: FMI bank 1 sector 0. -* - FMI_B1S1_MASK: FMI bank 1 sector 1. -* - FMI_B1S2_MASK: FMI bank 1 sector 2. -* - FMI_B1S3_MASK: FMI bank 1 sector 3. -* Output : None -* Return : The Protection Status of the needed sector. -* - RESET: The needed sector is not write protected. -* - SET : The needed sector is write protected. -*******************************************************************************/ -FlagStatus FMI_GetWriteProtectionStatus(u32 FMI_Sector_Mask) -{ - u16 Protection_Level_1_Register = 0; - /* Write a read flash protection level 1 register command */ - *(vu16 *)FMI_BANK_1 = 0x90; - - /* Read the flash protection level 1 register */ - Protection_Level_1_Register = *(vu16 *)(FMI_BANK_1 + 0x10); - - /* Write a read array command */ - *(vu16 *)FMI_BANK_1 = 0xFF; - - if (Protection_Level_1_Register &= FMI_Sector_Mask) - { - return SET; - } - else - { - return RESET; - } -} - -/******************************************************************************* -* Function Name : FMI_WaitForLastOperation -* Description : Wait until the last operation (Write halfword, Write OTP -* halfword, Erase sector and Erase bank) completion. -* Input : FMI_Bank: specifies the bank where the operation is on going. -* This parameter can be one of the following values: -* - FMI_BANK_0: FMI bank 0. -* - FMI_BANK_1: FMI bank 1. -* Output : None -* Return : The timeout status. -* This parameter can be one of the following values: -* - FMI_TIME_OUT_ERROR: Timeout error occurred. -* - FMI_NO_TIME_OUT_ERROR: No timeout error. -*******************************************************************************/ -u8 FMI_WaitForLastOperation(vu32 FMI_Bank) -{ - u32 Time_Out = 0; - - /* Write a read status register command */ - *(vu16 *)(FMI_Bank) = 0x70; - - /* Wait until operation compeletion */ - while((!((*(vu16 *)FMI_Bank) & 0x80))&&(Time_Out < TIMEOUT )) - { - Time_Out ++; /* Time Out */ - } - - /* Write a read array command */ - *(vu16 *)FMI_Bank = 0xFF; - - if (Time_Out == TIMEOUT) - { - return FMI_TIME_OUT_ERROR; - } - else - { - return FMI_NO_TIME_OUT_ERROR; - } -} - - -/******************* (C) COPYRIGHT 2006 STMicroelectronics *****END OF FILE****/ diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/source/91x_gpio.c b/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/source/91x_gpio.c deleted file mode 100644 index f2d094199..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/source/91x_gpio.c +++ /dev/null @@ -1,407 +0,0 @@ -/******************** (C) COPYRIGHT 2006 STMicroelectronics ******************** -* File Name : 91x_gpio.c -* Author : MCD Application Team -* Date First Issued : 05/18/2006 : Version 1.0 -* Description : This file provides all the GPIO software functions. -******************************************************************************** -* History: -* 05/24/2006 : Version 1.1 -* 05/18/2006 : Version 1.0 -******************************************************************************** -* THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS -* WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. -* AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, -* INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE -* CONTENT OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING -* INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. -*******************************************************************************/ - -/* Includes ------------------------------------------------------------------*/ -#include "91x_gpio.h" -#include "91x_scu.h" - -/* Private typedef -----------------------------------------------------------*/ -/* Private define ------------------------------------------------------------*/ - -/* Private macro -------------------------------------------------------------*/ -/* Private variables ---------------------------------------------------------*/ -/* Private function prototypes -----------------------------------------------*/ - static u8 GPIO_GetGPIONumber(GPIO_TypeDef* GPIOx); - -/* Private functions ---------------------------------------------------------*/ - -/******************************************************************************* -* Function Name : GPIO_DeInit -* Description : Deinitializes the GPIOx peripheral registers to their default -* reset values. -* Input : GPIOx: where x can be (0..9) to select the GPIO peripheral. -* Output : None -* Return : None -*******************************************************************************/ -void GPIO_DeInit(GPIO_TypeDef* GPIOx) -{ - - /* Reset the GPIO registers values */ - if(GPIOx == GPIO0) - { - SCU_APBPeriphReset(__GPIO0,ENABLE); - SCU_APBPeriphReset(__GPIO0,DISABLE); - SCU->GPIOTYPE[0x00] = 0x0000 ; - SCU->GPIOOUT[0x00] = 0x0000; - SCU->GPIOIN[0x00] = 0x0000; - } - - if(GPIOx == GPIO1) - { - SCU_APBPeriphReset(__GPIO1,ENABLE); - SCU_APBPeriphReset(__GPIO1,DISABLE); - SCU->GPIOTYPE[0x01] = 0x0000 ; - SCU->GPIOOUT[0x01] = 0x0000; - SCU->GPIOIN[0x01] = 0x0000; - } - - if(GPIOx == GPIO2) - { - SCU_APBPeriphReset(__GPIO2,ENABLE); - SCU_APBPeriphReset(__GPIO2,DISABLE); - SCU->GPIOTYPE[0x02] = 0x0000 ; - SCU->GPIOOUT[0x02] = 0x0000; - SCU->GPIOIN[0x02] = 0x0000; - } - - if(GPIOx == GPIO3) - { - SCU_APBPeriphReset(__GPIO3,ENABLE); - SCU_APBPeriphReset(__GPIO3,DISABLE); - SCU->GPIOTYPE[0x03] = 0x0000 ; - SCU->GPIOOUT[0x03] = 0x0000; - SCU->GPIOIN[0x03] = 0x0000; - } - - if(GPIOx == GPIO4) - { - SCU_APBPeriphReset(__GPIO4,ENABLE); - SCU_APBPeriphReset(__GPIO4,DISABLE); - SCU->GPIOTYPE[0x04] = 0x0000 ; - SCU->GPIOOUT[0x04] = 0x0000; - SCU->GPIOIN[0x04] = 0x0000; - SCU->GPIOANA = 0x00; - } - - if(GPIOx == GPIO5) - { - SCU_APBPeriphReset(__GPIO5,ENABLE); - SCU_APBPeriphReset(__GPIO5,DISABLE); - SCU->GPIOTYPE[0x05] = 0x0000 ; - SCU->GPIOOUT[0x05] = 0x0000; - SCU->GPIOIN[0x05] = 0x0000; - } - - if(GPIOx == GPIO6) - { - SCU_APBPeriphReset(__GPIO6,ENABLE); - SCU_APBPeriphReset(__GPIO6,DISABLE); - SCU->GPIOTYPE[0x06] = 0x0000 ; - SCU->GPIOOUT[0x06] = 0x0000; - SCU->GPIOIN[0x06] = 0x0000; - } - - if(GPIOx == GPIO7) - { - SCU_APBPeriphReset(__GPIO7,ENABLE); - SCU_APBPeriphReset(__GPIO7,DISABLE); - SCU->GPIOOUT[0x07] = 0xAAAA; - SCU->GPIOOUT[0x07] = 0x0000; - SCU->GPIOIN[0x07] = 0x0000; - } - - if(GPIOx == GPIO8) - { - SCU_APBPeriphReset(__GPIO8,ENABLE); - SCU_APBPeriphReset(__GPIO8,DISABLE); - SCU->GPIOEMI = 0x00; - } - - if(GPIOx == GPIO9) - { - SCU_APBPeriphReset(__GPIO9,ENABLE); - SCU_APBPeriphReset(__GPIO9,DISABLE); - SCU->GPIOEMI = 0x00; - } -} -/******************************************************************************* -* Function Name : GPIO_Init -* Description : Initializes the GPIOx peripheral according to the specified -* parameters in the GPIO_InitStruct . -* Input :- GPIOx: where x can be (0..9) to select the GPIO peripheral. -* - GPIO_InitStruct: pointer to a GPIO_InitTypeDef structure that -* contains the configuration information for the specified GPIO -* peripheral. -* Output : None -* Return : None -*******************************************************************************/ -void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct) -{ - /* Select pin direction */ - u8 PinNumber = 0; - u8 Counter = 0; - u8 GPIO_Number = 0; - - GPIO_Number = GPIO_GetGPIONumber(GPIOx); - - - if(GPIO_InitStruct->GPIO_Direction == GPIO_PinOutput) - { - GPIOx->DDR |= GPIO_InitStruct->GPIO_Pin; - } - else - { - GPIOx->DDR &= ~GPIO_InitStruct->GPIO_Pin; - } - - for (Counter = 0; Counter < 8;Counter++) - { - /*Search pin number*/ - PinNumber = (GPIO_InitStruct->GPIO_Pin & (1 <> Counter) == 1) - { - /*Output ALternate 0*/ - SCU->GPIOOUT[GPIO_Number] &= ~(0x3 <<(Counter *2)); - if(GPIO_InitStruct->GPIO_Alternate == GPIO_OutputAlt1) - { - /*Output ALternate 1*/ - SCU->GPIOOUT[GPIO_Number] |= 1 << (Counter *2); - } - if(GPIO_InitStruct->GPIO_Alternate == GPIO_OutputAlt2) - { - /*Output ALternate 2*/ - SCU->GPIOOUT[GPIO_Number] |= 0x2 << (Counter *2); - } - if(GPIO_InitStruct->GPIO_Alternate == GPIO_OutputAlt3) - { - /*Output ALternate 3*/ - SCU->GPIOOUT[GPIO_Number] |= 0x3 << (Counter *2); - } - - /*Type configuration: PushPull or Open Collector*/ - SCU->GPIOTYPE[GPIO_Number] &= ~(0x1 << Counter) ; - if(GPIO_InitStruct->GPIO_Type == GPIO_Type_OpenCollector) - { - /*Open Drain configuration*/ - SCU->GPIOTYPE[GPIO_Number] |= 0x1 << Counter; - } - - /*IP Connected disable*/ - SCU->GPIOIN[GPIO_Number] &= ~(0x1 << Counter) ; - if(GPIO_InitStruct->GPIO_IPConnected == GPIO_IPConnected_Enable) - { - /*IP Connected enable*/ - SCU->GPIOIN[GPIO_Number] |= 0x1 << Counter; - } - } - } -} - -/******************************************************************************* -* Function Name : GPIO_StructInit -* Description : Initialize the GPIO Init Structure parameters -* Input : GPIO_InitStruct : pointer to a GPIO_InitTypeDef structure -* which will be initialized. -* Output : None -* Return : None -*******************************************************************************/ -void GPIO_StructInit(GPIO_InitTypeDef* GPIO_InitStruct) -{ - /* Reset GPIO init structure parameters values */ - GPIO_InitStruct->GPIO_Pin = GPIO_Pin_All; - GPIO_InitStruct->GPIO_Direction = GPIO_PinInput; - GPIO_InitStruct->GPIO_Type = GPIO_Type_PushPull; - GPIO_InitStruct->GPIO_IPConnected = GPIO_IPConnected_Disable; - GPIO_InitStruct->GPIO_Alternate = GPIO_InputAlt1; -} - -/******************************************************************************* -* Function Name : GPIO_ReadBit -* Description : Reads the specified port pin -* Input : - GPIOx: where x can be (0..9) to select the GPIO peripheral. -* : - GPIO_Pin: the Pin number. This parameter can be GPIO_Pin_x -* where x can be (0..7). -* Output : None -* Return : The port pin value -*******************************************************************************/ -u8 GPIO_ReadBit(GPIO_TypeDef* GPIOx, u8 GPIO_Pin) -{ - if ((((GPIOx->DR[GPIO_Pin<<2])) & GPIO_Pin) != Bit_RESET ) - { - return Bit_SET; - } - else - { - return Bit_RESET; - } -} - -/******************************************************************************* -* Function Name : GPIO_Read -* Description : Reads the specified GPIO data port -* Input : - GPIOx: where x can be (0..9) to select the GPIO peripheral. -* Output : None -* Return : GPIO data port word value. -*******************************************************************************/ -u8 GPIO_Read(GPIO_TypeDef* GPIOx) -{ - return (GPIOx->DR[0x3FC]); -} - -/******************************************************************************* -* Function Name : GPIO_WriteBit -* Description : Sets or clears the selected data port bit. -* Input : - GPIOx: where x can be (0..9) to select the GPIO peripheral. -* - GPIO_Pin: the Pin number. This parameter can be GPIO_Pin_x -* where x can be (0..7). -* - BitVal: this parameter specifies the value to be written -* to the selected bit. -* BitVal must be one of the BitAction enum values: -* - Bit_RESET: to clear the port pin -* - Bit_SET: to set the port pin -* Output : None -* Return : None -*******************************************************************************/ -void GPIO_WriteBit(GPIO_TypeDef* GPIOx, u8 GPIO_Pin, BitAction BitVal) -{ - if(BitVal == Bit_SET) - { - GPIOx->DR[GPIO_Pin <<2] = GPIO_Pin; - } - else - { - GPIOx->DR[GPIO_Pin <<2] = 0x00; - } -} - -/******************************************************************************* -* Function Name : GPIO_Write -* Description : Writes the passed value in the selected data GPIOx port -* register. -* Input :- GPIOx: where x can be (0..9) to select the GPIO peripheral. -* - PortVal: the value to be written to the data port register. -* Output : None -* Return : None -*******************************************************************************/ -void GPIO_Write(GPIO_TypeDef* GPIOx, u8 PortVal) -{ - GPIOx->DR[0x3FC] = PortVal; -} - -/******************************************************************************* -* Function Name : GPIO_EMIConfig -* Description : Enables or disables GPIO 8 and 9 in EMI mode. -* Input : - NewState: new state of the EMI. -* This parameter can be: ENABLE or DISABLE. -* Output : None -* Return : None -*******************************************************************************/ -void GPIO_EMIConfig(FunctionalState NewState) -{ - if(NewState == ENABLE) - { - SCU->GPIOEMI = 0x01; - } - else - { - SCU->GPIOEMI = 0x00; - } -} - -/******************************************************************************* -* Function Name : GPIO_ANAPinConfig -* Description : Enables or disables pins from GPIO 4 in Analogue mode. -* Input :- GPIO_ANAChannel: selects the ADC channel pin. -* This parameter can be one of the following values: -* GPIO_ANAChannel0 -* GPIO_ANAChannel1 -* GPIO_ANAChannel2 -* GPIO_ANAChannel3 -* GPIO_ANAChannel4 -* GPIO_ANAChannel5 -* GPIO_ANAChannel6 -* GPIO_ANAChannel7 -* GPIO_ANAChannelALL -* - NewState: new state of the port pin. -* This parameter can be: ENABLE or DISABLE. -* Output : None -* Return : None -*******************************************************************************/ -void GPIO_ANAPinConfig(u8 GPIO_ANAChannel, FunctionalState NewState) -{ - - if(NewState == ENABLE) - { - if(GPIO_ANAChannel == GPIO_ANAChannelALL) - { - SCU->GPIOOUT[4] = 0x0000; - SCU->GPIOIN[4] = 0x00; - } - else - { - SCU->GPIOOUT[4] &= ~(0x3<<(GPIO_ANAChannel-1)); - SCU->GPIOIN[4] &= ~GPIO_ANAChannel; - } - SCU->GPIOANA |= GPIO_ANAChannel; - - } - else - { - SCU->GPIOANA &= ~GPIO_ANAChannel; - } -} - -/******************************************************************************* -* Function Name : GPIO_GetGPIONumber -* Description : searche the GPIO number. -* Input : GPIOx: where x can be (0..9) to select the GPIO peripheral. -* Output : None -* Return : GPIO number -*******************************************************************************/ -u8 GPIO_GetGPIONumber(GPIO_TypeDef* GPIOx) -{ - - if(GPIOx == GPIO1) - { - return 1; - } - if(GPIOx == GPIO2) - { - return 2; - } - if(GPIOx == GPIO3) - { - return 3; - } - if(GPIOx == GPIO4) - { - return 4; - } - if(GPIOx == GPIO5) - { - return 5; - } - if(GPIOx == GPIO6) - { - return 6; - } - if(GPIOx == GPIO7) - { - return 7; - } - if(GPIOx == GPIO8) - { - return 8; - } - if(GPIOx == GPIO9) - { - return 9; - } - return 0; -} -/******************* (C) COPYRIGHT 2006 STMicroelectronics *****END OF FILE****/ diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/source/91x_it.c b/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/source/91x_it.c deleted file mode 100644 index adf5696c9..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/source/91x_it.c +++ /dev/null @@ -1,387 +0,0 @@ -/******************** (C) COPYRIGHT 2006 STMicroelectronics ******************** -* File Name : 91x_it.c -* Author : MCD Application Team -* Date First Issued : 03/31/2006 : Beta Version V0.1 -* Description : Main Interrupt Service Routines. -******************************************************************************** -* This file can be used to describe all the exceptions subroutines -* that may occur within user application. -* When an interrupt happens, the software will branch automatically -* to the corresponding routine according to the interrupt vector -* loaded in the PC register. -* The following routines are all empty, user can write code for -* exceptions handlers and peripherals IRQ interrupts. -******************************************************************************** -* History: -* 03/31/2006 : Beta Version V0.1 -******************************************************************************** -* THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH -* CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS -* A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, INDIRECT -* OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT -* OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION -* CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. -*******************************************************************************/ -#include "FreeRTOSConfig.h" -#include "91x_it.h" - -/******************************************************************************* -* Function Name : Undefined_Handler -* Description : This function Undefined instruction exception. -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void Undefined_Handler(void) -{ - // NOT USED. -} -/******************************************************************************* -* Function Name : SWI_Handler -* Description : This function handles SW exception. -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void SWI_Handler(void) -{ - // NOT USED. -} -/******************************************************************************* -* Function Name : Prefetch_Handler -* Description : This function handles preftetch abort exception. -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void Prefetch_Handler(void) -{ - // NOT USED. -} -/******************************************************************************* -* Function Name : Abort_Handler -* Description : This function handles data abort exception. -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void Abort_Handler(void) -{ - // NOT USED. -} -/******************************************************************************* -* Function Name : FIQ_Handler -* Description : This function handles FIQ exception. -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void FIQ_Handler(void) -{ - // NOT USED. -} -/******************************************************************************* -* Function Name : SW_IRQHandler -* Description : This function handles the SW interrupt request -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void SW_IRQHandler(void) -{ -} -/******************************************************************************* -* Function Name : ARMRX_IRQHandler -* Description : This function handles the ARMRX interrupt request -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void ARMRX_IRQHandler(void) -{ -} -/******************************************************************************* -* Function Name : ARMTX_IRQHandler -* Description : This function handles the ARMTX interrupt request -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void ARMTX_IRQHandler(void) -{ -} -/******************************************************************************* -* Function Name : TIM0_IRQHandler -* Description : This function handles the TIM0 interrupt request -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void TIM0_IRQHandler(void) -{ -} -/******************************************************************************* -* Function Name : TIM1_IRQHandler -* Description : This function handles the TIM1 interrupt request -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void TIM1_IRQHandler(void) -{ -} -/******************************************************************************* -* Function Name : TIM2_IRQHandler -* Description : This function handles the TIM2 interrupt request -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -//void TIM2_IRQHandler(void) -//{ -//} -/******************************************************************************* -* Function Name : TIM3_IRQHandler -* Description : This function handles the TIM3 interrupt request -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void TIM3_IRQHandler(void) -{ -} -/******************************************************************************* -* Function Name : USBHP_IRQHandler -* Description : This function handles the USBHP interrupt request -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void USBHP_IRQHandler(void) -{ -} -/******************************************************************************* -* Function Name : USBLP_IRQHandler -* Description : This function handles the USBLP interrupt request -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void USBLP_IRQHandler(void) -{ -} -/******************************************************************************* -* Function Name : SCU_IRQHandler -* Description : This function handles the SCU interrupt request -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void SCU_IRQHandler(void) -{ -} -/******************************************************************************* -* Function Name : DMA_IRQHandler -* Description : This function handles the DMA interrupt request -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void DMA_IRQHandler(void) -{ -} - -/******************************************************************************* -* Function Name : CAN_IRQHandler -* Description : This function handles the CAN interrupt request -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void CAN_IRQHandler(void) -{ -} -/******************************************************************************* -* Function Name : MC_IRQHandler -* Description : This function handles the MC interrupt request -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void MC_IRQHandler(void) -{ -} -/******************************************************************************* -* Function Name : ADC_IRQHandler -* Description : This function handles the ADC interrupt request -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void ADC_IRQHandler(void) -{ -} -/******************************************************************************* -* Function Name : UART0_IRQHandler -* Description : This function handles the UART0 interrupt request -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void UART0_IRQHandler(void) -{ -} -/******************************************************************************* -* Function Name : UART2_IRQHandler -* Description : This function handles the UART2 interrupt request -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void UART2_IRQHandler(void) -{ -} -/******************************************************************************* -* Function Name : I2C0_IRQHandler -* Description : This function handles the I2C0 interrupt request -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void I2C0_IRQHandler(void) -{ -} -/******************************************************************************* -* Function Name : I2C1_IRQHandler -* Description : This function handles the I2C1 interrupt request -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void I2C1_IRQHandler(void) -{ -} -/******************************************************************************* -* Function Name : SSP0_IRQHandler -* Description : This function handles the SSP0 interrupt request -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void SSP0_IRQHandler(void) -{ -} -/******************************************************************************* -* Function Name : SSP1_IRQHandler -* Description : This function handles the SSP1 interrupt request -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void SSP1_IRQHandler(void) -{ -} -/******************************************************************************* -* Function Name : LVD_IRQHandler -* Description : This function handles the LVD interrupt request -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void LVD_IRQHandler(void) -{ -} -/******************************************************************************* -* Function Name : RTC_IRQHandler -* Description : This function handles the RTC interrupt request -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void RTC_IRQHandler(void) -{ -} -/******************************************************************************* -* Function Name : WIU_IRQHandler -* Description : This function handles the WIU interrupt request -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void WIU_IRQHandler(void) -{ -} -/******************************************************************************* -* Function Name : EXTIT0_IRQHandler -* Description : This function handles the EXTIT0 interrupt request -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void EXTIT0_IRQHandler(void) -{ -} -/******************************************************************************* -* Function Name : EXTIT1_IRQHandler -* Description : This function handles the EXTIT1 interrupt request -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void EXTIT1_IRQHandler(void) -{ -} -/******************************************************************************* -* Function Name : EXTIT2_IRQHandler -* Description : This function handles the EXTIT2 interrupt request -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void EXTIT2_IRQHandler(void) -{ -} -/******************************************************************************* -* Function Name : EXTIT3_IRQHandler -* Description : This function handles the EXTIT3 interrupt request -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void EXTIT3_IRQHandler(void) -{ -} -/******************************************************************************* -* Function Name : USBWU_IRQHandler -* Description : This function handles the USBWU interrupt request -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void USBWU_IRQHandler(void) -{ -} -/******************************************************************************* -* Function Name : PFQBC_IRQHandler -* Description : This function handles the PFQBC interrupt request -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void PFQBC_IRQHandler(void) -{ -} - -#if configUSE_WATCHDOG_TICK == 0 - /* The kernel is not using the watchdog interrupt so it can be defined here. */ - void WDG_IRQHandler( void ) - { - } -#else - /* The kernel is not using the timer 2 interrupt so it can be defined here. */ - void TIM2_IRQHandler( void ) - { - } -#endif /* configUSE_WATCHDOG_TICK */ - -/******************* (C) COPYRIGHT 2006 STMicroelectronics *****END OF FILE****/ diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/source/91x_lib.c b/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/source/91x_lib.c deleted file mode 100644 index c0eadbb94..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/source/91x_lib.c +++ /dev/null @@ -1,281 +0,0 @@ -/******************** (C) COPYRIGHT 2006 STMicroelectronics ******************** -* File Name : 91x_lib.c -* Author : MCD Application Team -* Date First Issued : 05/18/2006 : Version 1.0 -* Description : This file provides all peripherals pointers - : initialization. -******************************************************************************** -* History: -* 05/24/2006 : Version 1.1 -* 05/18/2006 : Version 1.0 -******************************************************************************** -* THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH -* CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS -* A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, INDIRECT -* OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT -* OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION -* CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. -*******************************************************************************/ -#define EXT - -/* Standard include ----------------------------------------------------------*/ -#include "91x_map.h" - -/* Include of other module interface headers ---------------------------------*/ -/* Local includes ------------------------------------------------------------*/ -/* Private typedef -----------------------------------------------------------*/ -/* Private define ------------------------------------------------------------*/ -/* Private macro -------------------------------------------------------------*/ -/* Private variables ---------------------------------------------------------*/ -/* Private function prototypes -----------------------------------------------*/ -/* Interface functions -------------------------------------------------------*/ -/* Private functions ---------------------------------------------------------*/ -#ifdef DEBUG - -/******************************************************************************* -* Function Name : debug -* Description : this function initialize peripherals pointers -* Input : no one -* Output : no one -* Return : no one -*******************************************************************************/ -void debug(void) -{ - - -/************************* DMA *************************/ - -#ifdef _DMA - DMA = (DMA_TypeDef *)DMA_BASE; -#endif /* _DMA */ - -/************************* DMA *************************/ - - -#ifdef _DMA_Channel0 - DMA_Channel0= (DMA_Channel_TypeDef *)DMA_Channel0_BASE; -#endif /* _DMA_Channel0 */ - -#ifdef _DMA_Channel1 - DMA_Channel1= (DMA_Channel_TypeDef *)DMA_Channel1_BASE; -#endif /* _DMA_Channel1 */ - -#ifdef _DMA_Channel2 - DMA_Channel2 = (DMA_Channel_TypeDef *)DMA_Channel2_BASE; -#endif /* _DMA_Channel2 */ - -#ifdef _DMA_Channel3 - DMA_Channel3 = (DMA_Channel_TypeDef *)DMA_Channel3_BASE; -#endif /* _DMA_Channel3 */ - -#ifdef _DMA_Channel4 - DMA_Channel4 = (DMA_Channel_TypeDef *)DMA_Channel4_BASE; -#endif /* _DMA_Channel4 */ - -#ifdef _DMA_Channel5 - DMA_Channel5= (DMA_Channel_TypeDef *)DMA_Channel5_BASE; -#endif /* _DMA_Channel5*/ - - -#ifdef _DMA_Channel6 - DMA_Channel6 = (DMA_Channel_TypeDef *)DMA_Channel6_BASE; -#endif /* _DMA_Channel6 */ - -#ifdef _DMA_Channel7 - DMA_Channel7 = (DMA_Channel_TypeDef *)DMA_Channel7_BASE; -#endif /* _DMA_Channel7 */ - - - - /************************* EMI *************************/ - -#ifdef _EMI_Bank0 - EMI_Bank0= (EMI_Bank_TypeDef *)EMI_Bank0_BASE; -#endif /* _EMI_Bank0 */ - -#ifdef _EMI_Bank1 - EMI_Bank1= (EMI_Bank_TypeDef *)EMI_Bank1_BASE; -#endif /* _EMI_Bank1 */ - -#ifdef _EMI_Bank2 - EMI_Bank2 = (EMI_Bank_TypeDef *)EMI_Bank2_BASE; -#endif /* _EMI_Bank2 */ - -#ifdef _EMI_Bank3 - EMI_Bank3 = (EMI_Bank_TypeDef *)EMI_Bank3_BASE; - #endif /* _EMI_Bank3 */ - - - -/************************* AHBAPB *************************/ - -#ifdef _AHBAPB0 - AHBAPB0 = (AHBAPB_TypeDef *)AHBAPB0_BASE; -#endif /* _AHBAPB0 */ - -#ifdef _AHBAPB1 - AHBAPB1 = (AHBAPB_TypeDef *)AHBAPB1_BASE; -#endif /*_AHBAPB1 */ - - - -/************************* FMI *************************/ - -#ifdef _FMI - FMI = (FMI_TypeDef *)FMI_BASE; -#endif /* _FMI */ - -/************************* VIC *************************/ - -#ifdef _VIC0 - VIC0 = (VIC_TypeDef *)VIC0_BASE; -#endif /* _VIC0 */ - -#ifdef _VIC1 - VIC1 = (VIC_TypeDef *)VIC1_BASE; -#endif /* _VIC1 */ - -/************************* WIU *************************/ - -#ifdef _WIU - WIU = (WIU_TypeDef *)WIU_BASE; -#endif /* _WIU */ - -/************************* TIM *************************/ - -#ifdef _TIM0 - TIM0 = (TIM_TypeDef *)TIM0_BASE; -#endif /* _TIM0 */ - -#ifdef _TIM1 - TIM1 = (TIM_TypeDef *)TIM1_BASE; -#endif /* _TIM1 */ - -#ifdef _TIM2 - TIM2 = (TIM_TypeDef *)TIM2_BASE; -#endif /* _TIM2 */ - -#ifdef _TIM3 - TIM3 = (TIM_TypeDef *)TIM3_BASE; -#endif /* _TIM3 */ - -/************************* GPIO ************************/ - -#ifdef _GPIO0 - GPIO0 = (GPIO_TypeDef *)GPIO0_BASE; -#endif /* _GPIO0 */ - -#ifdef _GPIO1 - GPIO1 = (GPIO_TypeDef *)GPIO1_BASE; -#endif /* _GPIO1 */ - -#ifdef _GPIO2 - GPIO2 = (GPIO_TypeDef *)GPIO2_BASE; -#endif /* _GPIO2 */ - -#ifdef _GPIO3 - GPIO3 = (GPIO_TypeDef *)GPIO3_BASE; -#endif /* _GPIO3 */ - -#ifdef _GPIO4 - GPIO4 = (GPIO_TypeDef *)GPIO4_BASE; -#endif /* _GPIO4 */ - -#ifdef _GPIO5 - GPIO5 = (GPIO_TypeDef *)GPIO5_BASE; -#endif /* _GPIO5 */ - -#ifdef _GPIO6 - GPIO6 = (GPIO_TypeDef *)GPIO6_BASE; -#endif /* _GPIO6 */ - -#ifdef _GPIO7 - GPIO7 = (GPIO_TypeDef *)GPIO7_BASE; -#endif /* _GPIO7 */ - -#ifdef _GPIO8 - GPIO8 = (GPIO_TypeDef *)GPIO8_BASE; -#endif /* _GPIO8 */ - -#ifdef _GPIO9 - GPIO9 = (GPIO_TypeDef *)GPIO9_BASE; -#endif /* _GPIO9 */ - -/************************* RTC *************************/ - -#ifdef _RTC - RTC = (RTC_TypeDef *)RTC_BASE; -#endif /* _RTC */ - -/************************* PRCCU ***********************/ - -#ifdef _SCU - SCU = (SCU_TypeDef *)SCU_BASE; -#endif /* _PRCCU */ - -/************************** MC *************************/ - -#ifdef _MC - MC = (MC_TypeDef *)MC_BASE; -#endif /* _MC */ - -/************************* UART ************************/ - -#ifdef _UART0 - UART0 = (UART_TypeDef *)UART0_BASE; -#endif /* _UART0 */ - -#ifdef _UART1 - UART1 = (UART_TypeDef *)UART1_BASE; -#endif /* _UART1 */ - -#ifdef _UART2 - UART2 = (UART_TypeDef *)UART2_BASE; -#endif /* _UART2 */ - -/************************* SSP *************************/ - -#ifdef _SSP0 - SSP0 = (SSP_TypeDef *)SSP0_BASE; -#endif /* _SSP0 */ - -#ifdef _SSP1 - SSP1 = (SSP_TypeDef *)SSP1_BASE; -#endif /* _SSP1 */ - -/************************* CAN *************************/ - -#ifdef _CAN - CAN = (CAN_TypeDef *)CAN_BASE; -#endif /* _CAN */ - -/************************* ADC *************************/ - -#ifdef _ADC - ADC = (ADC_TypeDef *)ADC_BASE; -#endif /* _ADC */ - -/************************* WDG *************************/ - -#ifdef _WDG - WDG = (WDG_TypeDef *)WDG_BASE; -#endif /* _WDG */ - -/************************* I2C *************************/ - -#ifdef _I2C0 - I2C0 = (I2C_TypeDef *)I2C0_BASE; -#endif /* _I2C0 */ - -#ifdef _I2C1 - I2C1 = (I2C_TypeDef *)I2C1_BASE; -#endif /* _I2C1 */ -/********************** ENET **************************/ -#ifdef _ENET - ENET_MAC = (ENET_MAC_TypeDef *)ENET_MAC_BASE; - ENET_DMA = (ENET_DMA_TypeDef *)ENET_DMA_BASE; -#endif /* _ENET */ -} -#endif /* DEBUG */ - -/******************* (C) COPYRIGHT 2006 STMicroelectronics *****END OF FILE****/ diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/source/91x_scu.c b/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/source/91x_scu.c deleted file mode 100644 index 21116b2a3..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/source/91x_scu.c +++ /dev/null @@ -1,661 +0,0 @@ -/******************** (C) COPYRIGHT 2006 STMicroelectronics ******************** -* File Name : 91x_scu.c -* Author : MCD Application Team -* Date First Issued : 05/18/2006 : Version 1.0 -* Description : This file provides the SCU library software functions -******************************************************************************** -* History: -* 05/24/2006 : Version 1.1 -* 05/18/2006 : Version 1.0 -******************************************************************************** -* THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH -* CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS -* A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, INDIRECT -* OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT -* OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION -* CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. -*******************************************************************************/ - -/* Includes ------------------------------------------------------------------*/ -#include "91x_scu.h" - -/* Include of other module interface headers ---------------------------------*/ -/* Local includes ------------------------------------------------------------*/ -/* Private typedef -----------------------------------------------------------*/ -/* Private define ------------------------------------------------------------*/ -#define SCU_PLLEN 0x80000 -/* Private macro -------------------------------------------------------------*/ -/* Private variables ---------------------------------------------------------*/ -/* Private function prototypes -----------------------------------------------*/ -/* Interface functions -------------------------------------------------------*/ -/* Private functions ---------------------------------------------------------*/ - -/******************************************************************************* -* Function Name : SCU_MCLKSourceConfig -* Description : Configures the MCLK source clock -* Input : MCLK_Source = SCU_MCLK_OSC, SCU_MCLK_PLL or SCU_MCLK_RTC -* Output : None -* Return : ErrorStatus: SUCCESS or ERROR -* Note : this function returns ERROR if trying to select the PLL as -* clock source while the PLL is disabled or not locked. -*******************************************************************************/ -ErrorStatus SCU_MCLKSourceConfig(u32 MCLK_Source) -{ - u32 CLKCNTR_Value; - - CLKCNTR_Value = SCU->CLKCNTR; /*get CLKCNTR register value*/ - CLKCNTR_Value &=~0x3; /*clear field MCLKSEL*/ - if (MCLK_Source == SCU_MCLK_PLL) /*PLL selected as clock source*/ - { - /*check if PLL enabled & locked*/ - if (!((SCU->PLLCONF&SCU_PLLEN)&&(SCU->SYSSTATUS&SCU_FLAG_LOCK))) - return ERROR; - } - else CLKCNTR_Value |=MCLK_Source; /*OSC or RTC selected as clock source*/ - SCU->CLKCNTR = CLKCNTR_Value; /*Update CLKCNTR register value*/ - return SUCCESS; -} - -/******************************************************************************* -* Function Name : SCU_PLLFactorsConfig -* Description : Sets the PLL factors -* Input : PLLN, PLLM and PLLP -* Output : None -* Return : ErrorStatus: ERROR or SUCCESS -* Notes : -The PLL factors must respect the PLL specification requirements -* -The function returns ERROR if trying to change PLL -* factors while PLL is selected as Main Clock source (MCLK) -* -This function disables the PLL, to enable the PLL use -* function" SCU_PLLCmd(ENABLE)" after setting the PLL factors -******************************************************************************/ -ErrorStatus SCU_PLLFactorsConfig(u8 PLLN, u8 PLLM, u8 PLLP) -{ - if (SCU_PLLCmd(DISABLE)==SUCCESS) /*Disable PLL*/ - { - SCU->PLLCONF =0; /*clear PLLCONF register*/ - SCU->PLLCONF |=(PLLN<<8); /*update PLLN field*/ - SCU->PLLCONF |=PLLM; /*update PLLM field*/ - SCU->PLLCONF |=PLLP<<16; /*update PLLP field*/ - return SUCCESS; - } - return ERROR; -} - -/******************************************************************************* -* Function Name : SCU_PLLCmd -* Description : Enable or Disable the PLL -* Input : NewState = ENABLE or DISABLE -* Output : None -* Return : ErrorStatus: SUCCESS or ERROR -* Note : -The function returns ERROR if: -* *trying to disable the PLL while it is selected as the MCLK -* *trying to enable the PLL while it is already enabled and -* locked -*******************************************************************************/ -ErrorStatus SCU_PLLCmd(FunctionalState NewState) -{ - vu32 i; - if (NewState==ENABLE) - { - if (!((SCU->PLLCONF&SCU_PLLEN)&&(SCU->SYSSTATUS&SCU_FLAG_LOCK))) - { - SCU->SYSSTATUS|=SCU_FLAG_LOCK; /*clear LOCK bit*/ - SCU->PLLCONF |=SCU_PLLEN; /*PLL Enable*/ - while(!SCU->SYSSTATUS&SCU_FLAG_LOCK); /*Wait PLL to lock*/ - return SUCCESS; - } - else return ERROR; - } - else /*NewState = DISABLE*/ - { - if(SCU->CLKCNTR&0x3) /*check if PLL not sys CLK*/ - { - for(i=10;i>0;i--); /*delay before PLL disabling*/ - SCU->PLLCONF &=~SCU_PLLEN; /*PLL Disable*/ - return SUCCESS; - } - else return ERROR; - } -} - -/******************************************************************************* -* Function Name : SCU_RCLKDivisorConfig -* Description : Sets the RCLK divisor value -* Input : RCLK_Divisor -* Output : None -* Return : None -*******************************************************************************/ -void SCU_RCLKDivisorConfig(u32 RCLK_Divisor) -{ - SCU->CLKCNTR &=SCU_RCLK_Div1; /*clear RCLKDIV[2:0] field*/ - if (RCLK_Divisor!=SCU_RCLK_Div1) - SCU->CLKCNTR |= RCLK_Divisor; /*update field with RCLK divisor*/ -} - -/******************************************************************************* -* Function Name : SCU_HCLKDivisorConfig -* Description : Sets the HCLK divisor value -* Input : HCLK_Divisor -* Output : None -* Return : None -*******************************************************************************/ -void SCU_HCLKDivisorConfig(u32 HCLK_Divisor) -{ - SCU->CLKCNTR &=SCU_HCLK_Div1; /*clear AHBDIV[1:0] field*/ - if (HCLK_Divisor!=SCU_HCLK_Div1) - SCU->CLKCNTR |= HCLK_Divisor; /*update field with HCLK divisor*/ -} - -/******************************************************************************* -* Function Name : SCU_PCLKDivisorConfig -* Description : Sets the PCLK divisor value -* Input : PCLK_Divisor -* Output : None -* Return : None -*******************************************************************************/ -void SCU_PCLKDivisorConfig(u32 PCLK_Divisor) -{ - SCU->CLKCNTR &=SCU_PCLK_Div1; /*clear APBDIV[1:0] field*/ - if (PCLK_Divisor!=SCU_PCLK_Div1) - SCU->CLKCNTR |= PCLK_Divisor; /*update field with PCLK Divisor*/ -} - -/******************************************************************************* -* Function Name : SCU_APBPeriphClockConfig -* Description : Enable the clock for an APB peripheral -* Input : -APBPerip : APB peripherals(__RTC, __ADC ,...) -* -NewState : ENABLE or DISABLE -* Output : None -* Return : None -*******************************************************************************/ -void SCU_APBPeriphClockConfig(u32 APBPeriph, FunctionalState NewState) -{ - if (NewState==ENABLE) /*Enable clock for APB peripheral*/ - SCU->PCGR1 |=APBPeriph; - else - SCU->PCGR1 &=~APBPeriph; /*Disable clock for APB peripheral*/ -} - -/******************************************************************************* -* Function Name : SCU_AHBPeriphClockConfig -* Description : Enable the clock for an AHB peripheral -* Input : -AHBPerip: AHB peripherals(__USB, __DMA,...) -* -NewState : ENABLE or DISABLE -* Output : None -* Return : None -*******************************************************************************/ -void SCU_AHBPeriphClockConfig(u32 AHBPeriph, FunctionalState NewState) -{ - if (NewState==ENABLE) /*Enable clock for AHB peripheral*/ - SCU->PCGRO |=AHBPeriph; - else - SCU->PCGRO &=~AHBPeriph; /*Disable clock for AHB peripheral*/ -} - -/******************************************************************************* -* Function Name : SCU_APBPeriphReset -* Description : Assert or deassert Reset on APB peripheral -* Input : -APBPeriph: APB peripherals(__RTC, __ADC,...) - -NewState : ENABLE or DISABLE -* Output : None -* Return : None -*******************************************************************************/ -void SCU_APBPeriphReset(u32 APBPeriph, FunctionalState NewState) -{ - if (NewState==DISABLE) /*APB peripheral not held in Reset*/ - SCU->PRR1 |=APBPeriph; - else - SCU->PRR1 &=~APBPeriph; /*APB peripheral held in Reset*/ -} - -/******************************************************************************* -* Function Name : SCU_AHBPeriphReset -* Description : Assert or deassert Reset on AHB peripheral -* Input : -AHBPeriph: AHB peripherals(__USB, __DMA,...) - -NewState : ENABLE or DISABLE -* Output : None -* Return : None -*******************************************************************************/ -void SCU_AHBPeriphReset(u32 AHBPeriph, FunctionalState NewState) -{ - if (NewState==DISABLE) - SCU->PRR0 |=AHBPeriph; /*AHB peripheral not held in Reset*/ - else - SCU->PRR0 &=~AHBPeriph; /*AHB peripheral held in Reset*/ -} - -/******************************************************************************* -* Function Name : SCU_APBPeriphIdleConfig -* Description : Enable or Disable Periph Clock during Idle mode -* Input : -APBPeriph: APB peripherals(__RTC, __ADC,...) - -NewState : ENABLE or DISABLE -* Output : None -* Return : None -*******************************************************************************/ -void SCU_APBPeriphIdleConfig(u32 APBPeriph, FunctionalState NewState) -{ - if (NewState==ENABLE) - SCU->MGR1 |=APBPeriph; /*APB peripheral clock enabled during Idle mode*/ - else - SCU->MGR1 &=~APBPeriph; /*APB peripheral clock disabled during Idle mode*/ -} - -/******************************************************************************* -* Function Name : SCU_AHBPeriphIdleConfig -* Description : Enable or Disable Periph Clock during Idle mode -* Input : -AHBPeriph: AHB peripherals(__USB, __DMA,...) - -NewState : ENABLE or DISABLE -* Output : None -* Return : None -*******************************************************************************/ -void SCU_AHBPeriphIdleConfig(u32 AHBPeriph, FunctionalState NewState) -{ - if (NewState==ENABLE) - SCU->MGR0 |=AHBPeriph; /*AHB peripheral clock enabled during Idle mode*/ - else - SCU->MGR0 &=~AHBPeriph; /*AHB peripheral clock disabled during Idle mode*/ -} - -/******************************************************************************* -* Function Name : SCU_APBPeriphDebugConfig -* Description : Enable or Disable Periph Clock during ARM debug state -* Input : -APBPeriph: APB peripherals(__RTC, __ADC,...) - -NewState : ENABLE or DISABLE -* Output : None -* Return : None -*******************************************************************************/ -void SCU_APBPeriphDebugConfig(u32 APBPeriph, FunctionalState NewState) -{ - if (NewState==ENABLE) - SCU->PECGR1 |=APBPeriph; /*APB peripheral clock enabled during ARM debug state*/ - else - SCU->PECGR1 &=~APBPeriph; /*APB peripheral clock disabled during ARM debug state*/ -} - -/******************************************************************************* -* Function Name : SCU_AHBPeriphDebugConfig -* Description : Enable or Disable Periph Clock during ARM debug state -* Input : -AHBPeriph: AHB peripherals(__USB, __DMA,...) - -NewState : ENABLE or DISABLE -* Output : None -* Return : None -*******************************************************************************/ -void SCU_AHBPeriphDebugConfig(u32 AHBPeriph, FunctionalState NewState) -{ - if (NewState==ENABLE) - SCU->PECGR0 |=AHBPeriph; /*AHB peripheral clock enabled during ARM debug state*/ - else - SCU->PECGR0 &=~AHBPeriph; /*AHB peripheral clock disabled during ARM debug state*/ -} -/******************************************************************************* -* Function Name : SCU_BRCLKDivisorConfig -* Description : Sets the BRCLK divisor value -* Input : BRCLK_Divisor -* Output : None -* Return : None -*******************************************************************************/ -void SCU_BRCLKDivisorConfig(u32 BRCLK_Divisor) -{ - SCU->CLKCNTR &=SCU_BRCLK_Div1; /*Clear BRSEL bit*/ - if (BRCLK_Divisor!=SCU_BRCLK_Div1) - SCU->CLKCNTR |= SCU_BRCLK_Div2; /*set bit BRSEL*/ -} - -/******************************************************************************* -* Function Name : SCU_TIMCLKSourceConfig -* Description : Sets the TIMx clock source -* Input : - TIMx : SCU_TIM01 or SCU_TIM23 -* - TIMCLK_Source = SCU_TIMCLK_EXT or SCU_TIMCLK_INT -* Output : None -* Return : None -*******************************************************************************/ -void SCU_TIMCLKSourceConfig(u8 TIMx, u32 TIMCLK_Source) -{ - if (TIMx== SCU_TIM01) /*TIM01 clock source configuration*/ - { - SCU->CLKCNTR &=0xFFFFDFFF; - if (TIMCLK_Source == SCU_TIMCLK_EXT) - SCU->CLKCNTR |=0x2000; - } - else - { - SCU->CLKCNTR &=0xFFFFBFFF; /*TIM23 clock source configuration*/ - if (TIMCLK_Source == SCU_TIMCLK_EXT) - SCU->CLKCNTR |=0x4000; - } -} - -/******************************************************************************* -* Function Name : SCU_TIMPresConfig -* Description : Sets the TIMx Prescaler Value -* Input : - TIMx : SCU_TIM01 or SCU_TIM23 -* - Prescaler (16 bit value) -* Output : None -* Return : None -*******************************************************************************/ -void SCU_TIMPresConfig(u8 TIMx, u16 Prescaler) -{ - if (TIMx==SCU_TIM01) /*TIM01 Prescaler configuration*/ - SCU->SCR1 = Prescaler&0xFFFF; - else - SCU->SCR2 = Prescaler&0xFFFF; /*TIM23 Prescaler configuration*/ -} - -/******************************************************************************* -* Function Name : SCU_USBCLKConfig -* Description : Configures the clock source for the 48MHz USBCLK -* Input : USBCLK_Source: SCU_USBCLK_MCLK,SCU_USBCLK_MCLK2 or SCU_USBCLK_EXT -* Output : None -* Return : None -*******************************************************************************/ -void SCU_USBCLKConfig(u32 USBCLK_Source) -{ - SCU->CLKCNTR &=SCU_USBCLK_MCLK; /*clear USBSEL[1:0] field*/ - if (USBCLK_Source!=SCU_USBCLK_MCLK) - SCU->CLKCNTR |= USBCLK_Source; /*update field with USBCLK_Source*/ -} - -/******************************************************************************* -* Function Name : SCU_PHYCLKConfig -* Description : Enable or Disable PHY clock output -* Input : NewState : ENABLE or DISABLE -* Output : None -* Return : None -*******************************************************************************/ -void SCU_PHYCLKConfig(FunctionalState NewState) -{ - if (NewState==ENABLE) - SCU->CLKCNTR |= 0x1000; /*enable MIIPHY clock*/ - else - SCU->CLKCNTR &=~0x1000; /*disable MIIPHY clock*/ -} - -/******************************************************************************* -* Function Name : SCU_FMICLKDivisorConfig -* Description : Set the FMI clock divisor -* Input : FMICLK_Divisor: SCU_FMICLK_Div1 or SCU_FMICLK_DIV2 -* Output : None -* Return : None -*******************************************************************************/ -void SCU_FMICLKDivisorConfig(u32 FMICLK_Divisor) -{ - SCU->CLKCNTR &=SCU_FMICLK_Div1; /*FMICLK = RCLK*/ - if (FMICLK_Divisor!=SCU_FMICLK_Div1) - SCU->CLKCNTR |=SCU_FMICLK_Div2; /*FMICLK = RCLK/2 */ -} - -/******************************************************************************* -* Function Name : SCU_EMIBCLKDivisorConfig -* Description : Set the EMI Bus clock divisor: EMIBCLK = HCLK or HCLK/2 -* Input : SCU_EMICLK: SCU_EMIBCLK_Div1 , SCU_EMIBCLK_Div2 -* Output : None -* Return : None -*******************************************************************************/ -void SCU_EMIBCLKDivisorConfig(u32 SCU_EMIBCLK) -{ - SCU->CLKCNTR &=SCU_EMIBCLK_Div1; /*EMIBCLK = HCLK */ - if (SCU_EMIBCLK!=SCU_EMIBCLK_Div1) - SCU->CLKCNTR |= SCU_EMIBCLK_Div2; /*EMIBCLK = HCLK/2 */ -} - -/******************************************************************************* -* Function Name : SCU_EMIModeConfig -* Description : Configure the EMI as Multiplexed or Demultiplexed -* Input : SCU_EMIMODE : SCU_EMI_MUX or SCU_EMI_DEMUX -* Output : None -* Return : None -*******************************************************************************/ -void SCU_EMIModeConfig(u32 SCU_EMIMODE) -{ - SCU->SCR0 &=SCU_EMI_MUX; /*EMI mode = Multiplexed*/ - if (SCU_EMIMODE!=SCU_EMI_MUX) - SCU->SCR0 |= SCU_EMI_DEMUX; /*EMI mode = Demultiplexed*/ -} - -/******************************************************************************* -* Function Name : SCU_EMIALEConfig -* Description : Configure the ALE signal (length & polarity) -* Input : -SCU_EMIALE_LEN : SCU_EMIALE_LEN1 or SCU_EMIALE_LEN2 -* -SCU_EMIALE_POL : SCU_EMIALE_POLLow or SCU_EMI_POLHigh -* Output : None -* Return : None -*******************************************************************************/ -void SCU_EMIALEConfig(u32 SCU_EMIALE_LEN, u32 SCU_EMIALE_POL) -{ - /*Configure EMI ALE Length*/ - SCU->SCR0 &=SCU_EMIALE_LEN1; - if (SCU_EMIALE_LEN!=SCU_EMIALE_LEN1) - SCU->SCR0 |= SCU_EMIALE_LEN2; - - /*Configure EMI ALE POL*/ - SCU->SCR0 &=SCU_EMIALE_POLLow; - if (SCU_EMIALE_POL!=SCU_EMIALE_POLLow) - SCU->SCR0 |= SCU_EMIALE_POLHigh; -} - -/******************************************************************************* -* Function Name : SCU_ITConfig -* Description : ENBALE or DISABLE an SCU interrupt -* Input : -SCU_IT: interrupt mask -* -NewState: ENABLE or DISABLE -* Output : None -* Return : None -*******************************************************************************/ -void SCU_ITConfig(u32 SCU_IT, FunctionalState NewState) -{ - if (NewState==ENABLE) - SCU->ITCMSK&=~SCU_IT; /*IT enable */ - else - SCU->ITCMSK|=SCU_IT; /*IT disable( mask)*/ -} - -/******************************************************************************* -* Function Name : SCU_GetFlagStatus -* Description : Returns flag status -* Input : SCU_Flag -* Output : NONE -* Return : SET or RESET -*******************************************************************************/ -FlagStatus SCU_GetFlagStatus(u32 SCU_Flag) -{ - if (SCU->SYSSTATUS&SCU_Flag) - return SET; - else return RESET; -} - -/******************************************************************************* -* Function Name : SCU_ClearFlag -* Description : Clears a SYSTATUS Flag -* Input : SCU_Flag -* Output : None -* Return : None -*******************************************************************************/ -void SCU_ClearFlag(u32 SCU_Flag) -{ - SCU->SYSSTATUS = SCU_Flag; -} -/******************************************************************************* -* Function Name : SCU_GetPLLfreqValue -* Description : Gets the current PLL frequency -* Input : None -* Output : None -* Return : PLL frequency (KHz) -*******************************************************************************/ -u32 SCU_GetPLLFreqValue(void) -{ - u8 PLL_M; - u8 PLL_N; - u8 PLL_P; - - PLL_M = SCU->PLLCONF&0xFF; - PLL_N = (SCU->PLLCONF&0xFF00)>>8; - PLL_P = (SCU->PLLCONF&0x70000)>>16; - - if ((PLL_M>0)&&(PLL_N>0)) - return (u32)(((_Main_Crystal*2)*PLL_N)/(PLL_M<CLKCNTR&0x3) == 0x2) return (u32)(_Main_Crystal); - if ((SCU->CLKCNTR&0x3) == 0x1) return (u32)(32); - else return (SCU_GetPLLFreqValue()); -} - -/******************************************************************************* -* Function Name : SCU_GetRCLKFreqValue -* Description : Gets the current RCLK frequency -* Input : None -* Output : None -* Return : RCLK frequency (KHz) -*******************************************************************************/ -u32 SCU_GetRCLKFreqValue(void) -{ - u8 RCLK_Div; - RCLK_Div = (SCU->CLKCNTR&0x1C)>>2; - if (RCLK_Div==0x5) RCLK_Div=10; - return (u32)(SCU_GetMCLKFreqValue() >>RCLK_Div); -} - -/******************************************************************************* -* Function Name : SCU_GetHCLKFreqValue -* Description : Gets the current PCLK frequency -* Input : None -* Output : None -* Return : HCLK frequency (KHz) -*******************************************************************************/ -u32 SCU_GetHCLKFreqValue(void) -{ - u8 HCLK_Div; - HCLK_Div = (SCU->CLKCNTR&0x60)>>5; - return (u32)(SCU_GetRCLKFreqValue() >>HCLK_Div); -} - -/******************************************************************************* -* Function Name : SCU_GetPCLKFreqValue -* Description : Gets the current HCLK frequency -* Input : None -* Output : None -* Return : PCLK frequency (KHz) -*******************************************************************************/ -u32 SCU_GetPCLKFreqValue(void) -{ - u8 PCLK_Div; - PCLK_Div = (SCU->CLKCNTR&0x180)>>7; - return (u32)(SCU_GetRCLKFreqValue() >>PCLK_Div); -} - -/******************************************************************************* -* Function Name : SCU_WakeUpLineConfig -* Description : Configures an External interrupt as WakeUp line -* Input : EXTint : 0 -> 31 -* Output : None -* Return : None -*******************************************************************************/ -void SCU_WakeUpLineConfig(u8 EXTint) -{ - if (EXTint < 8) - { - SCU->WKUPSEL&=~0x7; - SCU->WKUPSEL|=EXTint; - } - else if (EXTint<16) - { - SCU->WKUPSEL&=~0x38; - SCU->WKUPSEL|=(EXTint-8)<<3; - } - else if (EXTint<24) - { - SCU->WKUPSEL&=~0x1C0; - SCU->WKUPSEL|=(EXTint-16)<<6; - } - else - { - SCU->WKUPSEL&=~0xE00; - SCU->WKUPSEL|=(EXTint-24)<<9; - } -} - -/******************************************************************************* -* Function Name : SCU_SpecIntRunModeConfig -* Description : Enables or Disables the Special Run mode -* Input : newstate = ENABLE or DISABLE -* Output : None -* Return : None -*******************************************************************************/ -void SCU_SpecIntRunModeConfig(FunctionalState NewState) -{ - if (NewState == ENABLE) - SCU->PWRMNG |=0x8; - else - SCU->PWRMNG &=~0x8; -} -/******************************************************************************* -* Function Name : SCU_EnterIdleMode -* Description : Enters in Idle mode -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void SCU_EnterIdleMode(void) -{ - SCU->PWRMNG |=0x1; -} -/******************************************************************************* -* Function Name : SCU_EnterSleepMode -* Description : Enters in Sleep mode -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void SCU_EnterSleepMode(void) -{ - SCU->PWRMNG |=0x2; -} - -/******************************************************************************* -* Function Name : SCU_UARTIrDAConfig -* Description : Enable or Disable the Irda mode for UARTx -* Input : - UARTx :x=0,1 or 2 -* - UART_IrDA_Mode : SCU_UARTMode_IrDA or SCU_UARTMode_UART -* Output : None -* Return : None -*******************************************************************************/ -void SCU_UARTIrDASelect(UART_TypeDef * UARTx, u8 UART_IrDA_Mode) -{ - if (UART_IrDA_Mode == SCU_UARTMode_IrDA) - { - if (UARTx== UART0) SCU->SCR0 |=0x400; - else if (UARTx==UART1) SCU->SCR0 |=0x800; - else SCU->SCR0 |=0x1000; - } - else - { - if (UARTx== UART0) SCU->SCR0 &=~0x400; - else if (UARTx==UART1) SCU->SCR0 &=~0x800; - else SCU->SCR0 &=~0x1000; - } -} -/******************************************************************************* -* Function Name : SCU_PFQBCCmd -* Description : Enable or Disable PFQBC -* Input : NewState : ENABLE or DISABLE -* Output : None -* Return : None -*******************************************************************************/ -void SCU_PFQBCCmd(FunctionalState NewState) -{ - if (NewState==ENABLE) - SCU->SCR0 |=0x1; - else SCU->SCR0 &=~0x1; -} - -/******************* (C) COPYRIGHT 2006 STMicroelectronics *****END OF FILE****/ diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/source/91x_tim.c b/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/source/91x_tim.c deleted file mode 100644 index a0e78f0fd..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/source/91x_tim.c +++ /dev/null @@ -1,692 +0,0 @@ -/******************** (C) COPYRIGHT 2006 STMicroelectronics ******************** -* File Name : 91x_tim.c -* Author : MCD Application Team -* Date First Issued : 05/18/2006 : Version 1.0 -* Description : This file provides all the TIM software functions. -******************************************************************************** -* History: -* 05/22/2007 : Version 1.2 -* 05/24/2006 : Version 1.1 -* 05/18/2006 : Version 1.0 -******************************************************************************** -* THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH -* CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS -* A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, INDIRECT -* OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT -* OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION -* CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. -*******************************************************************************/ - -/* Includes ------------------------------------------------------------------*/ -#include "91x_tim.h" - -/* Include of other module interface headers ---------------------------------*/ -/* Local includes ------------------------------------------------------------*/ -/* Private typedef -----------------------------------------------------------*/ -/* Private define ------------------------------------------------------------*/ - -/* TIM Bits Masks */ - -#define TIM_PWM_MASK 0x0010 -#define TIM_OPM_MASK 0x0020 -#define TIM_OC1_ENABLE_MASK 0x0040 -#define TIM_OC1_DISABLE_MASK 0xFFBF -#define TIM_OC2_ENABLE_MASK 0x0080 -#define TIM_OC2_DISABLE_MASK 0xFF7F - -#define TIM_OLVL1_SET_MASK 0x0100 -#define TIM_OLVL1_RESET_MASK 0xFEFF - -#define TIM_OLVL2_SET_MASK 0x0200 -#define TIM_OLVL2_RESET_MASK 0xFDFF - -#define TIM_ENABLE_MASK 0x8000 -#define TIM_DISABLE_MASK 0x7FFF - -#define TIM_DMA_CLEAR_MASK 0xCFFF - -/* Private macro -------------------------------------------------------------*/ -/* Private variables ---------------------------------------------------------*/ -/* Private function prototypes -----------------------------------------------*/ -/* Interface functions -------------------------------------------------------*/ -/* Private functions ---------------------------------------------------------*/ -/******************************************************************************* -* Function Name : TIM_DeInit -* Description : Initializes TIM peripheral control and registers to their -* : default reset values. -* Input : TIMx: where x can be from 0 to 3 to select the TIM -* peripheral. -* Output : None -* Return : None -*******************************************************************************/ -void TIM_DeInit(TIM_TypeDef *TIMx) -{ - if((TIMx == TIM0)||(TIMx == TIM1)) - { - SCU_APBPeriphReset(__TIM01, DISABLE); /* TIM0 & TIM1 Reset's off */ - } - else - { - SCU_APBPeriphReset(__TIM23, DISABLE); /* TIM2 & TIM3 Reset's off */ - } - - /* Set all the TIMx registers to thier default values */ - TIMx->OC1R = 0x8000; - TIMx->OC2R = 0x8000; - TIMx->CR1 = 0x0; - TIMx->CR2 = 0x1; - TIMx->CNTR = 0x1234; - TIMx->SR = 0x0; -} - -/******************************************************************************* -* Function Name : TIM_StructInit -* Description : Fills in a TIM_InitTypeDef structure with the reset value of -* each parameter. -* Input : TIM_InitStruct : pointer to a TIM_InitTypeDef structure - which will be initialized. -* Output : None -* Return : None. -*******************************************************************************/ -void TIM_StructInit(TIM_InitTypeDef *TIM_InitStruct) -{ - TIM_InitStruct->TIM_Mode = 0x0000; - TIM_InitStruct->TIM_OC1_Modes = 0x0000; - TIM_InitStruct->TIM_OC2_Modes = 0x0000; - TIM_InitStruct->TIM_Clock_Source = 0x0000; - TIM_InitStruct->TIM_Clock_Edge = 0x0000; - TIM_InitStruct->TIM_OPM_INPUT_Edge = 0x0000; - TIM_InitStruct->TIM_ICAP1_Edge = 0x0000; - TIM_InitStruct->TIM_ICAP2_Edge = 0x0000; - TIM_InitStruct->TIM_Prescaler = 0x0000; - TIM_InitStruct->TIM_Pulse_Level_1 = 0x0000; - TIM_InitStruct->TIM_Pulse_Level_2 = 0x0000; - TIM_InitStruct->TIM_Period_Level = 0x0000; - TIM_InitStruct->TIM_Pulse_Length_1 = 0x0000; - TIM_InitStruct->TIM_Pulse_Length_2 = 0x0000; - TIM_InitStruct->TIM_Full_Period = 0x0000; -} - -/******************************************************************************* -* Function Name : TIM_Init -* Description : Initializes TIM peripheral according to the specified -* parameters in the TIM_InitTypeDef structure. -* Input1 : TIMx: where x can be from 0 to 3 to select the TIM -* peripheral. -* Input2 : TIM_InitStruct: pointer to a TIM_InitTypeDef structure that -* contains the configuration information for the specified -* TIM peripheral. -* Output : None -* Return : None -*******************************************************************************/ - -void TIM_Init(TIM_TypeDef *TIMx, TIM_InitTypeDef *TIM_InitStruct) -{ -/***************************** Clock configuration ****************************/ - - if (TIM_InitStruct->TIM_Clock_Source == TIM_CLK_APB) - { - /* APB clock */ - TIMx->CR1 &= TIM_CLK_APB; - } - else - { - /* External/SCU clock */ - TIMx->CR1 |= TIM_CLK_EXTERNAL; - if (TIM_InitStruct->TIM_Clock_Edge == TIM_CLK_EDGE_RISING) - { - /* Clock rising edge */ - TIMx->CR1 |= TIM_CLK_EDGE_RISING; - } - else - { - /* Clock falling edge */ - TIMx->CR1 &= TIM_CLK_EDGE_FALLING; - } - } - -/************************** Prescaler configuration ***************************/ - - TIMx->CR2 =( TIMx->CR2 & 0xFF00 )|TIM_InitStruct->TIM_Prescaler ; - -/********************************** TIM Modes *********************************/ - - switch ( TIM_InitStruct->TIM_Mode) - { -/******************************* PWM Input mode *******************************/ - - case TIM_PWMI: - - /* Set the PWMI Bit */ - TIMx->CR1 |= TIM_PWMI; - - /* Set the first edge Level */ - if ( TIM_InitStruct->TIM_ICAP1_Edge == TIM_ICAP1_EDGE_RISING) - { - TIMx->CR1 |= TIM_ICAP1_EDGE_RISING; - } - else - { - TIMx->CR1 &= TIM_ICAP1_EDGE_FALLING; - } - - /* Set the Second edge Level ( Opposite of the first level ) */ - if ( TIM_InitStruct->TIM_ICAP1_Edge == TIM_ICAP1_EDGE_RISING) - { - TIMx->CR1 &= TIM_ICAP2_EDGE_FALLING; - } - else - { - TIMx->CR1 |= TIM_ICAP2_EDGE_RISING; - } - - break; - -/************************** Output compare channel 1 **************************/ - - case TIM_OCM_CHANNEL_1: - - if (TIM_InitStruct->TIM_Pulse_Level_1 == TIM_HIGH) - { - TIMx->CR1 |= TIM_OLVL1_SET_MASK; - } - else - { - TIMx->CR1 &= TIM_OLVL1_RESET_MASK; - } - - TIMx->OC1R = TIM_InitStruct->TIM_Pulse_Length_1; - - if (TIM_InitStruct->TIM_OC1_Modes == TIM_TIMING) - { - TIMx->CR1 &= TIM_OC1_DISABLE_MASK; - } - else - { - TIMx->CR1 |= TIM_OC1_ENABLE_MASK; - } - - break; - -/************************** Output compare channel 2 **************************/ - - case TIM_OCM_CHANNEL_2: - - if (TIM_InitStruct->TIM_Pulse_Level_2 == TIM_HIGH) - { - TIMx->CR1 |= TIM_OLVL2_SET_MASK; - } - else - { - TIMx->CR1 &= TIM_OLVL2_RESET_MASK; - } - - TIMx->OC2R = TIM_InitStruct->TIM_Pulse_Length_2; - - if (TIM_InitStruct->TIM_OC2_Modes == TIM_TIMING) - { - TIMx->CR1 &= TIM_OC2_DISABLE_MASK; - } - else - { - TIMx->CR1 |= TIM_OC2_ENABLE_MASK; - } - - break; - -/************************ Output compare channel 1 & 2 ************************/ - - case TIM_OCM_CHANNEL_12: - - TIMx->OC2R = TIM_InitStruct->TIM_Pulse_Length_2; - TIMx->OC1R = TIM_InitStruct->TIM_Pulse_Length_1; - - if (TIM_InitStruct->TIM_OC2_Modes == TIM_TIMING) - { - TIMx->CR1 &= TIM_OC2_DISABLE_MASK; - } - else - { - TIMx->CR1 |= TIM_OC2_ENABLE_MASK; - } - - if (TIM_InitStruct->TIM_OC1_Modes == TIM_TIMING) - { - TIMx->CR1 &= TIM_OC1_DISABLE_MASK; - } - else - { - TIMx->CR1 |= TIM_OC1_ENABLE_MASK; - } - - if (TIM_InitStruct->TIM_Pulse_Level_1 == TIM_HIGH) - { - TIMx->CR1 |= TIM_OLVL1_SET_MASK; - } - else - { - TIMx->CR1 &= TIM_OLVL1_RESET_MASK; - } - - if (TIM_InitStruct->TIM_Pulse_Level_2 == TIM_HIGH) - { - TIMx->CR1 |= TIM_OLVL2_SET_MASK; - } - else - { - TIMx->CR1 &= TIM_OLVL2_RESET_MASK; - } - - break; - -/********************************** PWM mode **********************************/ - - case TIM_PWM: - - /* Set the Level During the pulse */ - if ( TIM_InitStruct->TIM_Pulse_Level_1 == TIM_HIGH) - { - TIMx->CR1 |= TIM_OLVL2_SET_MASK; - } - else - { - TIMx->CR1 &= TIM_OLVL2_RESET_MASK; - } - - /* Set the Level after the pulse */ - if (TIM_InitStruct->TIM_Period_Level == TIM_HIGH) - { - TIMx->CR1 |= TIM_OLVL1_SET_MASK; - } - else - { - TIMx->CR1 &= TIM_OLVL1_RESET_MASK; - } - - /* Set the OCAE */ - TIMx->CR1 |= TIM_OC1_ENABLE_MASK; - - /* Set the PWM Bit */ - TIMx->CR1 |= TIM_PWM_MASK; - - /* Set the Duty Cycle value */ - - TIMx->OC1R = TIM_InitStruct->TIM_Pulse_Length_1 ; - - /* Set the Full Period */ - - TIMx->OC2R = TIM_InitStruct->TIM_Full_Period ; - - break; - -/******************************* One pulse mode *******************************/ - - case TIM_OPM: - - /* Set the Level During the pulse */ - if (TIM_InitStruct->TIM_Pulse_Level_1 == TIM_HIGH) - { - TIMx->CR1 |= TIM_OLVL2_SET_MASK; - } - - /* Set the Level after the pulse */ - if (TIM_InitStruct->TIM_Period_Level == TIM_HIGH) - { - TIMx->CR1 |= TIM_OLVL1_SET_MASK; - } - - /* Set the Activation Edge on the ICAP 1 */ - if (TIM_InitStruct->TIM_OPM_INPUT_Edge == TIM_OPM_EDGE_RISING) - { - TIMx->CR1 |= TIM_OPM_EDGE_RISING; - } - - /* Set the Output Compare Function */ - TIMx->CR1 |= TIM_OC1_ENABLE_MASK; - - /* Set the One pulse mode */ - TIMx->CR1 |= TIM_OPM_MASK; - - /* Set the Pulse length */ - TIMx->OC1R = TIM_InitStruct->TIM_Pulse_Length_1; - - break; - -/*************************** Input capture channel 1 **************************/ - - case TIM_ICAP_CHANNEL_1: - - if (TIM_InitStruct->TIM_ICAP1_Edge == TIM_ICAP1_EDGE_RISING) - { - TIMx->CR1 |= TIM_ICAP1_EDGE_RISING; - } - else - { - TIMx->CR1 &= TIM_ICAP1_EDGE_FALLING; - } - - break; - -/*************************** Input capture channel 2 **************************/ - - case TIM_ICAP_CHANNEL_2: - - if (TIM_InitStruct->TIM_ICAP2_Edge == TIM_ICAP2_EDGE_RISING) - { - TIMx->CR1 |= TIM_ICAP2_EDGE_RISING; - } - else - { - TIMx->CR1 &= TIM_ICAP2_EDGE_FALLING; - } - - break; - -/************************* Input capture channel 1 & 2 ************************/ - - case TIM_ICAP_CHANNEL_12: - if (TIM_InitStruct->TIM_ICAP2_Edge == TIM_ICAP2_EDGE_RISING) - { - TIMx->CR1 |= TIM_ICAP2_EDGE_RISING; - } - else - { - TIMx->CR1 &= TIM_ICAP2_EDGE_FALLING; - } - - if (TIM_InitStruct->TIM_ICAP1_Edge == TIM_ICAP1_EDGE_RISING) - { - TIMx->CR1 |= TIM_ICAP1_EDGE_RISING; - } - else - { - TIMx->CR1 &= TIM_ICAP1_EDGE_FALLING; - } - - break; - - default: - break; - } -} - -/******************************************************************************* -* Function Name : TIM_CounterCmd -* Description : Enables or disables TIMx Counter peripheral. -* Input1 : TIMx: where x can be from 0 to 3 to select the TIM -* peripheral. -* Input2 : TIM_operation: specifies the new state of the TIMx Counter. -* This parameter can be one of the following values: -* - TIM_START: Start the timer counter. -* - TIM_STOP : Stop the timer counter. -* - TIM_CLEAR: Clear the timer counter. -* Output : None -* Return : None -*******************************************************************************/ -void TIM_CounterCmd(TIM_TypeDef *TIMx, TIM_CounterOperations TIM_operation) -{ - switch (TIM_operation) - { - case TIM_START: - TIMx->CR1 |= TIM_ENABLE_MASK; - break; - - case TIM_STOP: - TIMx->CR1 &= TIM_DISABLE_MASK; - break; - - case TIM_CLEAR: - TIMx->CNTR = 0x1234; - break; - - default: - break; - } -} - -/******************************************************************************* -* Function Name : TIM_PrescalerConfig -* Description : This routine is used to configure the TIMx prescaler value -* (when using the APB clock). -* Input1 : TIMx: where x can be from 0 to 3 to select the TIM -* peripheral. -* Input2 : TIM_Prescaler: specifies the prescaler value. This parameter -* can be a value from 0x0 to 0xFF. -* Output : None -* Return : None -*******************************************************************************/ -void TIM_PrescalerConfig(TIM_TypeDef *TIMx, u8 TIM_Prescaler) -{ - TIMx->CR2 &= 0xFF00; - TIMx->CR2 |= TIM_Prescaler; - -} -/******************************************************************************* -* Function Name : TIM_GetPrescalerValue -* Description : This routine is used to get the TIMx prescaler value -* (when using the APB clock). -* Input : TIMx: where x can be from 0 to 3 to select the TIM -* peripheral. -* Output : None -* Return : The prescaler value. -*******************************************************************************/ -u8 TIM_GetPrescalerValue(TIM_TypeDef *TIMx) -{ - return TIMx->CR2 & 0x00FF; -} - -/******************************************************************************* -* Function Name : TIM_GetCounterValue -* Description : This routine is used to get the TIMx counter value. -* Input : TIMx: where x can be from 0 to 3 to select the TIM -* peripheral. -* Output : None -* Return : The counter value. -*******************************************************************************/ -u16 TIM_GetCounterValue(TIM_TypeDef *TIMx) -{ - return TIMx->CNTR; -} - -/******************************************************************************* -* Function Name : TIM_GetICAP1Value -* Description : This routine is used to get the Input Capture 1 value. -* Input : TIMx: where x can be from 0 to 3 to select the TIM -* peripheral. -* Output : None -* Return : The Input Capture 1 value. -*******************************************************************************/ -u16 TIM_GetICAP1Value(TIM_TypeDef *TIMx) -{ - return TIMx->IC1R; -} - -/******************************************************************************* -* Function Name : TIM_GetICAP2Value -* Description : This routine is used to get the Input Capture 2 value. -* Input : TIMx: where x can be from 0 to 3 to select the TIM -* peripheral. -* Output : None -* Return : The Input Capture 2 value. -*******************************************************************************/ -u16 TIM_GetICAP2Value(TIM_TypeDef *TIMx) -{ - return TIMx->IC2R; -} - -/******************************************************************************* -* Function Name : TIM_SetPulse -* Description : This routine is used to set the pulse value. -* Input1 : TIMx: where x can be from 0 to 3 to select the TIM -* peripheral. -* Input2 : TIM_Channel: specifies the needed channel. -* This parameter can be one of the following values: -* - TIM_PWM_OC1_Channel: PWM/Output Compare 1 Channel -* - TIM_OC2_Channel : Output Compare 2 Channel -* Input3 : TIM_Pulse: specifies the new pulse value. -* Output : None -* Return : None -*******************************************************************************/ -void TIM_SetPulse(TIM_TypeDef *TIMx,u16 TIM_Channel ,u16 TIM_Pulse) -{ - if (TIM_Channel == TIM_PWM_OC1_Channel) - { - TIMx->OC1R = TIM_Pulse; - } - else - { - TIMx->OC2R = TIM_Pulse; - } -} -/******************************************************************************* -* Function Name : TIM_GetFlagStatus -* Description : Checks whether the specified TIMx flag is set or not. -* Input1 : TIMx: where x can be from 0 to 3 to select the TIM -* peripheral. -* Input2 : TIM_Flag: specifies the flag to check. -* This parameter can be one of the following values: -* - TIM_FLAG_IC1: Input Capture Channel 1 Flag -* - TIM_FLAG_IC2: Input Capture Channel 2 Flag -* - TIM_FLAG_TO : Timer Overflow Flag -* - TIM_FLAG_OC1: Output Compare Channel 1 Flag -* - TIM_FLAG_OC2: Output Compare Channel 2 Flag -* Output : None -* Return : The NewState of the TIM_Flag (SET or RESET). -*******************************************************************************/ -FlagStatus TIM_GetFlagStatus(TIM_TypeDef *TIMx, u16 TIM_Flag) -{ - if((TIMx->SR & TIM_Flag) == RESET) - { - return RESET; - } - else - { - return SET; - } -} - -/******************************************************************************* -* Function Name : TIM_ClearFlag -* Description : Clears the TIM Flag passed as a parameter. -* Input1 : TIMx: where x can be from 0 to 3 to select the TIM -* peripheral. -* Input2 : TIM_Flag: specifies the flag to clear. -* This parameter can be one of the following values: -* - TIM_FLAG_IC1: Input Capture Channel 1 Flag -* - TIM_FLAG_IC2: Input Capture Channel 2 Flag -* - TIM_FLAG_TO : Timer Overflow Flag -* - TIM_FLAG_OC1: Output Compare Channel 1 Flag -* - TIM_FLAG_OC2: Output Compare Channel 2 Flag -* Output : None -* Return : None -*******************************************************************************/ -void TIM_ClearFlag(TIM_TypeDef *TIMx, u16 TIM_Flag) -{ - /* Clear TIM_Flag */ - TIMx->SR &= ~TIM_Flag; -} - -/******************************************************************************* -* Function Name : TIM_GetPWMIPulse -* Description : This routine is used to get the Pulse value in PWMI Mode. -* Input : TIMx: where x can be from 0 to 3 to select the TIM -* peripheral. -* Output : None -* Return : The pulse value. -*******************************************************************************/ -u16 TIM_GetPWMIPulse(TIM_TypeDef *TIMx) -{ - return TIMx->IC2R; -} - -/******************************************************************************* -* Function Name : TIM_GetPWMIPeriod -* Description : This routine is used to get the Period value in PWMI Mode. -* Input : TIMx: where x can be from 0 to 3 to select the TIM -* peripheral. -* Output : None -* Return : The period value. -*******************************************************************************/ -u16 TIM_GetPWMIPeriod(TIM_TypeDef *TIMx) -{ - return TIMx->IC1R; -} - -/******************************************************************************* -* Function Name : TIM_ITConfig -* Description : Configures the Timer interrupt source. -* Input1 : TIMx: where x can be from 0 to 3 to select the TIM -* peripheral. -* Input2 : TIM_IT: specifies the TIM interrupt source to be enabled. -* This parameter can be one of the following values: -* - TIM_IT_IC1: Input Capture 1 Interrupt source. -* - TIM_IT_OC1: Output Compare 1 Interrupt source. -* - TIM_IT_TO : Timer Overflow Interrupt source. -* - TIM_IT_IC2: Input Capture 2 Interrupt source. -* - TIM_IT_OC2: Output Compare 2 Interrupt source. -* Input3 : TIM_Newstate: specifies the new state of the TIMx IT. -* This parameter can be one of the following values: -* - ENABLE : Enable the needed interrupt. -* - DISABLE: Disable the needed interrupt. -* Output : None -* Return : None -*******************************************************************************/ -void TIM_ITConfig(TIM_TypeDef *TIMx, u16 TIM_IT, FunctionalState TIM_Newstate) -{ - if(TIM_Newstate == ENABLE) - { - TIMx->CR2 = (TIMx->CR2 & 0x00FF) | TIM_IT; - } - else - { - TIMx->CR2 &= ~TIM_IT; - } -} - -/******************************************************************************* -* Function Name : TIM_DMAConfig -* Description : Configures the Timer DMA source. -* Input1 : TIMx: where x can be from 0 to 3 to select the TIM -* peripheral. -* Input2 : TIM_DMA_Souces: specifies the TIM DMA source to be selected. -* This parameter can be one of the following values: -* - TIM_DMA_IC1: Input Capture 1 DMA source. -* - TIM_DMA_OCA1 Output Compare 1 DMA source. -* - TIM_DMA_TO: Timer Overflow DMA source. -* - TIM_DMA_IC2: Input Capture 2 DMA source. -* - TIM_DMA_OC2: Output Compare 2 DMA source. -* Output : None -* Return : None -*******************************************************************************/ -void TIM_DMAConfig(TIM_TypeDef *TIMx, u16 TIM_DMA_Sources) -{ - /* Reset the DMAS[1:0] bits */ - TIMx->CR1 &= TIM_DMA_CLEAR_MASK; - /* Set the DMAS[1:0] bits according to TIM_DMA_Sources parameter */ - TIMx->CR1 |= TIM_DMA_Sources; -} - -/******************************************************************************* -* Function Name : TIM_DMACmd -* Description : Enables or disables TIMx DMA peripheral. -* Input1 : TIMx: where x can be from 0 to 3 to select the TIM -* peripheral. -* Input2 : TIM_Newstate: new state of the TIMx DMA peripheral -* This parameter can be one of the following values: -* - ENABLE : Enable the TIMx DMA. -* - DISABLE: Disable the TIMx DMA. -* Output : None -* Return : None -*******************************************************************************/ -void TIM_DMACmd(TIM_TypeDef *TIMx, FunctionalState TIM_Newstate) -{ - if (TIM_Newstate == ENABLE) - { - TIMx->CR2 |= TIM_DMA_ENABLE; - } - else - { - TIMx->CR2 &= TIM_DMA_DISABLE; - } -} -/******************* (C) COPYRIGHT 2006 STMicroelectronics *****END OF FILE****/ diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/source/91x_uart.c b/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/source/91x_uart.c deleted file mode 100644 index 84ef375a3..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/source/91x_uart.c +++ /dev/null @@ -1,658 +0,0 @@ -/******************** (C) COPYRIGHT 2006 STMicroelectronics ******************** -* File Name : 91x_uart.c -* Author : MCD Application Team -* Date First Issued : 05/18/2006 : Version 1.0 -* Description : This file provides all the UART software functions. -******************************************************************************** -* History: -* 05/24/2006 : Version 1.1 -* 05/18/2006 : Version 1.0 -******************************************************************************** -* THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS -* WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. -* AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, -* INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE -* CONTENT OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING -* INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. -*******************************************************************************/ - -/* Includes ------------------------------------------------------------------*/ -#include "91x_uart.h" -#include "91x_scu.h" - -/* Private typedef -----------------------------------------------------------*/ -/* Private define ------------------------------------------------------------*/ -/* UART IrDA Mask */ -#define UART_IrDA_Disable_Mask 0xFFFD /* IrDA Disable Mask */ -#define UART_IrDA_Enable_Mask 0x0002 /* IrDA Enable Mask */ -#define IrDA_LowPower_Enable_Mask 0x0004 /*IrDA lower power mode enable*/ -#define IrDA_LowPower_Disable_Mask 0xFFFB /*IrDA lower power mode enable*/ - -/* UART Mask */ -#define UART_Enable_Mask 0x0001 /* UART Enable Mask */ -#define UART_Disable_Mask 0xFFFE /* UART Disable Mask */ - -/* UART LoopBack */ -#define UART_LoopBack_Disable_Mask 0xFF7F /* LoopBack Disable Mask */ -#define UART_LoopBack_Enable_Mask 0x0080 /* LoopBack Enable Mask */ - -#define UART_WordLength_Mask 0xFF9F /* UART Word Length Mask */ -#define UART_Parity_Mask 0xFF79 /* UART Parity Mask */ -#define UART_HardwareFlowControl_Mask 0x3FFF /* UART Hardware Flow Control Mask */ -#define UART_TxRxFIFOLevel_Mask 0xFFC0 /* UART Tx Rx FIFO Level Mask */ -#define UART_BreakChar_Mask 0x0001 /* UART Break Character send Mask*/ -#define UART_FLAG_Mask 0x1F /* UART Flag Mask */ -#define UART_Mode_Mask 0xFCFF /* UART Mode Mask */ -#define UART_RTS_LowLevel_Mask 0x0800 /* RTS signal is low */ -#define UART_RTS_HighLevel_Mask 0xF7FF /* RTS signal is High */ -#define UART_DTR_LowLevel_Mask 0x0400 /* DTR signal is low */ -#define UART_DTR_HighLevel_Mask 0xFBFF /* DTR signal is High */ -#define UART_ClearFlag_Mask 0xAA /* Clear Flag Mask */ - -/* Private macro -------------------------------------------------------------*/ -/* Private variables ---------------------------------------------------------*/ -/* Private function prototypes -----------------------------------------------*/ -/* Private functions ---------------------------------------------------------*/ - - /******************************************************************************* -* Function Name : UART_DeInit -* Description : Deinitializes the UARTx peripheral registers -* to their default reset values. -* Input : UARTx: where x can be 0,1 or 2 to select the UART peripheral. -* Output : None -* Return : None -*******************************************************************************/ -void UART_DeInit(UART_TypeDef* UARTx) -{ - /* Reset the UARTx registers values */ - if(UARTx == UART0) - { - SCU_APBPeriphReset(__UART0,ENABLE); - SCU_APBPeriphReset(__UART0,DISABLE); - } - else if(UARTx == UART1) - { - SCU_APBPeriphReset(__UART1,ENABLE); - SCU_APBPeriphReset(__UART1,DISABLE); - } - else if(UARTx == UART2) - { - SCU_APBPeriphReset(__UART2,ENABLE); - SCU_APBPeriphReset(__UART2,DISABLE); - } -} - -/******************************************************************************* -* Function Name : UART_Init -* Description : Initializes the UARTx peripheral according to the specified -* parameters in the UART_InitStruct . -* Input : - UARTx: where x can be 0,1or 2 to select the UART peripheral. -* - UART_InitStruct: pointer to a UART_InitTypeDef structure -* that contains the configuration information for the -* specified UART peripheral. -* Output : None -* Return : None -*******************************************************************************/ -void UART_Init(UART_TypeDef* UARTx, UART_InitTypeDef* UART_InitStruct) -{ - - u64 UART_MainClock = 0; - u32 IntegerDivider = 0; - u32 FractionalDivider = 0; - - /* Clear the LCR[6:5] bits */ - UARTx->LCR &= UART_WordLength_Mask; - /* Set the LCR[6:5] bits according to UART_WordLength value */ - UARTx->LCR |= UART_InitStruct->UART_WordLength; - - /* Choose Stop Bits */ - if(UART_InitStruct->UART_StopBits == UART_StopBits_2) - { - /* 2 Stop Bit */ - UARTx->LCR |= UART_StopBits_2; - } - else - { - /* One Stop Bits */ - UARTx->LCR &= UART_StopBits_1; - } - - /* Configure the Parity */ - /* Clear the LCR[7]and LCR[2:1] bits */ - UARTx->LCR &= UART_Parity_Mask; - /* Set the LCR[7]and LCR[2:1] bits according to UART_Parity value */ - UARTx->LCR |= UART_InitStruct->UART_Parity; - - /* Configure the BaudRate */ - UART_MainClock = (SCU_GetMCLKFreqValue())*1000; - if((SCU->CLKCNTR & 0x200) != 0x200) - { - UART_MainClock = UART_MainClock/2; - } - /* Determine the integer part */ - IntegerDivider = ((100) * (UART_MainClock) / (16 * (UART_InitStruct->UART_BaudRate))); - UARTx->IBRD = IntegerDivider / 100; - - /* Determine the fractional part */ - FractionalDivider = IntegerDivider - (100 * (UARTx->IBRD)); - UARTx->FBRD = ((((FractionalDivider * 64) + 50) / 100)); - - /* Choose the Hardware Flow Control */ - /* Clear the CR[15:14] bits */ - UARTx->CR &= UART_HardwareFlowControl_Mask; - /* Set the CR[15:14] bits according to UART_HardwareFlowControl value */ - UARTx->CR |= UART_InitStruct->UART_HardwareFlowControl; - - /* Configure the UART mode */ - /* Clear the CR[9:8] bits */ - UARTx->CR &= UART_Mode_Mask; - /* Set the CR[9:8] bits according to UART_Mode value */ - UARTx->CR |= UART_InitStruct->UART_Mode; - - /* Enable or disable the FIFOs */ - /* Set the FIFOs Levels */ - if(UART_InitStruct->UART_FIFO == UART_FIFO_Enable) - { - /* Enable the FIFOs */ - UARTx->LCR |= UART_FIFO_Enable; - - /* Clear TXIFLSEL and RXIFLSEL bits */ - UARTx->IFLS &= UART_TxRxFIFOLevel_Mask; - - /* Set RXIFLSEL bits according to UART_RxFIFOLevel value */ - UARTx->IFLS |= (UART_InitStruct->UART_RxFIFOLevel << 3); - - /* Set TXIFLSEL bits according to UART_TxFIFOLevel value */ - UARTx->IFLS |= UART_InitStruct->UART_TxFIFOLevel; - } - else - { - /* Disable the FIFOs */ - UARTx->LCR &= UART_FIFO_Disable; - } -} - -/******************************************************************************* -* Function Name : UART_StructInit -* Description : Fills each UART_InitStruct member with its reset value. -* Input : UART_InitStruct: pointer to a UART_InitTypeDef structure which -* will be initialized. -* Output : None -* Return : None -*******************************************************************************/ -void UART_StructInit(UART_InitTypeDef* UART_InitStruct) -{ - /* Reset the UART_InitStruct members */ - UART_InitStruct->UART_WordLength = UART_WordLength_8D; - UART_InitStruct->UART_StopBits = UART_StopBits_1; - UART_InitStruct->UART_Parity = UART_Parity_Odd ; - UART_InitStruct->UART_BaudRate = 9600; - UART_InitStruct->UART_HardwareFlowControl = UART_HardwareFlowControl_None; - UART_InitStruct->UART_Mode = UART_Mode_Tx_Rx; - UART_InitStruct->UART_FIFO = UART_FIFO_Enable; - UART_InitStruct->UART_TxFIFOLevel = UART_FIFOLevel_1_2; - UART_InitStruct->UART_RxFIFOLevel = UART_FIFOLevel_1_2; -} - -/******************************************************************************* -* Function Name : UART_Cmd -* Description : Enables or disables the specified UART peripheral. -* Input : - UARTx: where x can be 0,1 or 2 to select the UART peripheral -* - NewState: new state of the UARTx peripheral. -* This parameter can be: ENABLE or DISABLE. -* Output : None -* Return : None -*******************************************************************************/ -void UART_Cmd(UART_TypeDef* UARTx, FunctionalState NewState) -{ - if (NewState == ENABLE) - { - /* Enable the selected UART by setting the UARTEN bit in the CR register */ - UARTx->CR |= UART_Enable_Mask; - } - else - { - /* Disable the selected UART by clearing the UARTEN bit in the CR register */ - UARTx->CR &= UART_Disable_Mask; - } -} - -/******************************************************************************* -* Function Name : UART_ITConfig -* Description : Enables or disables the specified UART interrupts. -* Input : - UARTx: where x can be 0,1 or 2 to select the UART peripheral -* - UART_IT: specifies the UART interrupts sources to be -* enabled or disabled. This parameter can be any combination -* of the following values: -* - UART_IT_OverrunError: Overrun Error interrupt -* - UART_IT_BreakError: Break Error interrupt -* - UART_IT_ParityError: Parity Error interrupt -* - UART_IT_FrameError: Frame Error interrupt -* - UART_IT_ReceiveTimeOut: Receive Time Out interrupt -* - UART_IT_Transmit: Transmit interrupt -* - UART_IT_Receive: Receive interrupt -* - UART_IT_DSR: DSR interrupt -* - UART_IT_DCD: DCD interrupt -* - UART_IT_CTS: CTS interrupt -* - UART_IT_RI: RI interrupt -* - NewState: new state of the UARTx peripheral. -* This parameter can be: ENABLE or DISABLE. -* Output : None -* Return : None -*******************************************************************************/ -void UART_ITConfig(UART_TypeDef* UARTx, u16 UART_IT, FunctionalState NewState) -{ - if(NewState == ENABLE) - { - /* Enables the selected interrupts */ - UARTx->IMSC |= UART_IT; - } - else - { - /* Disables the selected interrupts */ - UARTx->IMSC &= ~UART_IT; - } -} - -/******************************************************************************* -* Function Name : UART_DMAConfig -* Description : Configures the UARTx’s DMA interface. -* Input : - UARTx: where x can be 1 or 2 to select the UART peripheral -* - UART_DMAOnError: specifies the DMA on error request. -* This parameter can be: -* - UART_DMAOnError_Enable: DMA receive request enabled -* when the UART error interrupt is asserted. -* - UART_DMAOnError_Disable: DMA receive request disabled -* when the UART error interrupt is asserted. -* Output : None -* Return : None -*******************************************************************************/ -void UART_DMAConfig(UART_TypeDef* UARTx, u16 UART_DMAOnError) -{ - if(UART_DMAOnError == UART_DMAOnError_Enable) - { - UARTx->DMACR &= UART_DMAOnError_Enable; - } - else - { - UARTx->DMACR |= UART_DMAOnError_Disable; - } -} - -/******************************************************************************* -* Function Name : UART_DMACmd -* Description : Enables or disables the UARTx’s DMA interface. -* Input : - UARTx: where x can be 1 or 2 to select the UART peripheral -* - UART_DMAReq: enables or disables the request of DMA from UART. -* This parameter can be: -* - UART_DMAReq_Tx: Transmit DMA Enable -* - UART_DMAReq_Rx: Receive DMA Enable -* - NewState: new state of the UARTx peripheral. -* This parameter can be: ENABLE or DISABLE. -* Output : None -* Return : None -*******************************************************************************/ -void UART_DMACmd(UART_TypeDef* UARTx, u8 UART_DMAReq, FunctionalState NewState) -{ - if(UART_DMAReq == UART_DMAReq_Tx) - { - if(NewState == ENABLE) - { - UARTx->DMACR |= UART_DMAReq_Tx; - } - else - { - UARTx->DMACR &= ~UART_DMAReq_Tx; - } - } - - if(UART_DMAReq == UART_DMAReq_Rx) - { - if(NewState == ENABLE) - { - UARTx->DMACR |= UART_DMAReq_Rx; - } - else - { - UARTx->DMACR &= ~UART_DMAReq_Rx; - } - } -} - -/******************************************************************************* -* Function Name : UART_LoopBackConfig -* Description : Enables or disables the LoopBack mode. -* Input : - UARTx: where x can be 0,1 or 2 to select the UART peripheral -* - NewState: new state of the UARTx peripheral. -* This parameter can be: ENABLE or DISABLE. -* Output : None -* Return : None -*******************************************************************************/ -void UART_LoopBackConfig(UART_TypeDef* UARTx, FunctionalState NewState) -{ - if (NewState == ENABLE) - { - /* Enable the LoopBack mode of the specified UART */ - UARTx->CR |= UART_LoopBack_Enable_Mask; - } - else - { - /* Disable the LoopBack mode of the specified UART */ - UARTx->CR &= UART_LoopBack_Disable_Mask; - } -} - -/******************************************************************************* -* Function Name : UART_GetFlagStatus -* Description : Checks whether the specified UART flag is set or not. -* Input : - UARTx: where x can be 0,1 or 2 to select the UART peripheral -* - UART_FLAG: specifies the flag to check. -* This parameter can be one of the following values: -* - UART_FLAG_OverrunError: Overrun error flag -* - UART_FLAG_Break: break error flag -* - UART_FLAG_ParityError: parity error flag -* - UART_FLAG_FrameError: frame error flag -* - UART_FLAG_RI: RI flag -* - UART_FLAG_TxFIFOEmpty: Transmit FIFO Empty flag -* - UART_FLAG_RxFIFOFull: Receive FIFO Full flag -* - UART_FLAG_TxFIFOFull: Transmit FIFO Full flag -* - UART_FLAG_RxFIFOEmpty: Receive FIFO Empty flag -* - UART_FLAG_Busy: UART Busy flag -* - UART_FLAG_CTS: CTS flag -* - UART_FLAG_DCD: DCD flag -* - UART_FLAG_DSR: DSR flag -* - UART_RawIT_OverrunError: Overrun Error interrupt flag -* - UART_RawIT_BreakError: Break Error interrupt flag -* - UART_RawIT_ParityError: Parity Error interrupt flag -* - UART_RawIT_FrameError: Frame Error interrupt flag -* - UART_RawIT_ReceiveTimeOut: ReceiveTimeOut interrupt flag -* - UART_RawIT_Transmit: Transmit interrupt flag -* - UART_RawIT_Receive: Receive interrupt flag -* - UART_RawIT_DSR: DSR interrupt flag -* - UART_RawIT_DCD: DCD interrupt flag -* - UART_RawIT_CTS: CTS interrupt flag -* - UART_RawIT_RI: RI interrupt flag -* Output : None -* Return : The new state of UART_FLAG (SET or RESET). -*******************************************************************************/ -FlagStatus UART_GetFlagStatus(UART_TypeDef* UARTx, u16 UART_FLAG) -{ - - u32 UARTReg = 0, FlagPos = 0; - u32 StatusReg = 0; - - /* Get the UART register index */ - UARTReg = UART_FLAG >> 5; - - /* Get the flag position */ - FlagPos = UART_FLAG & UART_FLAG_Mask; - - if(UARTReg == 1) /* The flag to check is in RSR register */ - { - StatusReg = UARTx->RSECR; - } - else if (UARTReg == 2) /* The flag to check is in FR register */ - { - StatusReg = UARTx->FR; - } - else if(UARTReg == 3) /* The flag to check is in RIS register */ - { - StatusReg = UARTx->RIS; - } - - if((StatusReg & (1 << FlagPos))!= RESET) - { - return SET; - } - else - { - return RESET; - } -} - -/******************************************************************************* -* Function Name : UART_ClearFlag -* Description : Clears the UARTx’s flags(Frame, Parity, Break, Overrun error). -* Input : - UARTx: where x can be 0,1or 2 to select the UART peripheral. -* Output : None -* Return : None -*******************************************************************************/ -void UART_ClearFlag(UART_TypeDef* UARTx) -{ - /* Clear the flag */ - UARTx->RSECR = UART_ClearFlag_Mask; -} - -/******************************************************************************* -* Function Name : UART_GetITStatus -* Description : Checks whether the specified UART interrupt has occured or not. -* Input : - UARTx: where x can be 0,1or 2 to select the UART peripheral. -* - UART_IT: specifies the interrupt pending bit to be checked. -* This parameter can be one of the following values: -* - UART_IT_OverrunError: Overrun Error interrupt -* - UART_IT_BreakError: Break Error interrupt -* - UART_IT_ParityError: Parity Error interrupt -* - UART_IT_FrameError: Frame Error interrupt -* - UART_IT_ReceiveTimeOut: Receive Time Out interrupt -* - UART_IT_Transmit: Transmit interrupt -* - UART_IT_Receive: Receive interrupt -* - UART_IT_DSR: DSR interrupt -* - UART_IT_DCD: DCD interrupt -* - UART_IT_CTS: CTS interrupt -* - UART_IT_RI: RI interrupt -* Output : None -* Return : The new state of UART_IT (SET or RESET). -*******************************************************************************/ -ITStatus UART_GetITStatus(UART_TypeDef* UARTx, u16 UART_IT) -{ - if((UARTx->MIS & UART_IT) != RESET) - { - return SET; - } - else - { - return RESET; - } -} - -/******************************************************************************* -* Function Name : UART_ClearITPendingBit -* Description : Clears the UARTx’s interrupt pending bits. -* Input : - UARTx: where x can be 0,1or 2 to select the UART peripheral. -* - UART_IT: specifies the interrupt pending bit to clear. -* More than one interrupt can be cleared using the “|” operator. -* This parameter can be: -* - UART_IT_OverrunError: Overrun Error interrupt -* - UART_IT_BreakError: Break Error interrupt -* - UART_IT_ParityError: Parity Error interrupt -* - UART_IT_FrameError: Frame Error interrupt -* - UART_IT_ReceiveTimeOut: Receive Time Out interrupt -* - UART_IT_Transmit: Transmit interrupt -* - UART_IT_Receive: Receive interrupt -* - UART_IT_DSR: DSR interrupt -* - UART_IT_DCD: DCD interrupt -* - UART_IT_CTS: CTS interrupt -* - UART_IT_RI: RI interrupt -* Output : None -* Return : None -*******************************************************************************/ -void UART_ClearITPendingBit(UART_TypeDef* UARTx, u16 UART_IT) -{ - /* Clear the specified interrupt */ - UARTx->ICR &= UART_IT; -} - -/******************************************************************************* -* Function Name : UART_IrDALowPowerConfig -* Description : Sets the IrDA low power mode -* Input : - IrDAx: where x can be 0,1 or 2 to select the UART/IrDA peripheral. -* - NewState: new state of the UARTIrDA peripheral. -* This parameter can be: ENABLE or DISABLE. -* Output : None -* Return : None -*******************************************************************************/ -void UART_IrDALowPowerConfig(u8 IrDAx, FunctionalState NewState) -{ - UART_TypeDef* UARTx; - - switch(IrDAx) - { - case IrDA0: UARTx = UART0; - break; - case IrDA1: UARTx = UART1; - break; - case IrDA2: UARTx = UART2; - break; - } - - if (NewState == ENABLE) - { - UARTx->CR |= IrDA_LowPower_Enable_Mask; - } - else - { - UARTx->CR &= IrDA_LowPower_Disable_Mask; - } -} - -/******************************************************************************* -* Function Name : UART_IrDASetCounter -* Description : Sets the IrDA counter divisor value. -* Input : - UARTx: where x can be 0,1 or 2 to select the UART/IrDA peripheral. -* - IrDA_Counter: IrDA counter divisor new value n low power mode(Hz). -* Output : None -* Return : None -*******************************************************************************/ -void UART_IrDASetCounter(u8 IrDAx, u32 IrDA_Counter) -{ - UART_TypeDef* UARTx; - u32 APBClock; - switch(IrDAx) - { - case IrDA0: UARTx = UART0; - break; - case IrDA1: UARTx = UART1; - break; - case IrDA2: UARTx = UART2; - break; - } - /* Get the APB frequency */ - APBClock = (SCU_GetPCLKFreqValue())*1000; - /* Determine the Counter Divisor part */ - UARTx->ILPR = (((APBClock*10) / ( IrDA_Counter)) + 5 )/10; - } - -/******************************************************************************* -* Function Name : UART_IrDACmd -* Description : Enables or disables the UARTx’s IrDA interface. -* Input : - IrDAx: where x can be 0,1 or 2 to select the UART/IrDA peripheral -* - NewState: new state of the UARTx peripheral. -* This parameter can be: ENABLE or DISABLE. -* Output : None -* Return : None -*******************************************************************************/ -void UART_IrDACmd(u8 IrDAx, FunctionalState NewState) -{ - UART_TypeDef* UARTx; - - switch(IrDAx) - { - case IrDA0: UARTx = UART0; - break; - case IrDA1: UARTx = UART1; - break; - case IrDA2: UARTx = UART2; - break; - } - if(NewState == ENABLE) - { - /* Enable the IrDA mode of the specified UART */ - UARTx->CR |= UART_IrDA_Enable_Mask; - } - else - { - /* Disable the IrDA mode of the specified UART */ - UARTx->CR &= UART_IrDA_Disable_Mask; - } -} - -/******************************************************************************* -* Function Name : UART_SendData -* Description : Transmits signle Byte of data through the UARTx peripheral. -* Input : - UARTx: where x can be 0,1 or 2 to select the UART peripheral. -* - Data: the byte to transmit -* Output : None -* Return : None -*******************************************************************************/ -void UART_SendData(UART_TypeDef* UARTx, u8 Data) -{ - /* Transmit one byte */ - UARTx->DR = Data; -} - -/******************************************************************************* -* Function Name : UART_ReceiveData -* Description : Returns the most recent received Byte by the UARTx peripheral. -* Input : UARTx: where x can be 0,1 or 2 to select the UART peripheral. -* Output : None -* Return : The received data -*******************************************************************************/ -u8 UART_ReceiveData(UART_TypeDef* UARTx) -{ - /* Receive one byte */ - return ((u8)UARTx->DR); -} - -/******************************************************************************* -* Function Name : UART_SendBreak -* Description : Transmits break characters. -* Input : UARTx: where x can be 0,1 or 2 to select the UART peripheral. -* Output : None -* Return : None -*******************************************************************************/ -void UART_SendBreak(UART_TypeDef* UARTx) -{ - /* Send break characters */ - UARTx->LCR |= UART_BreakChar_Mask; -} - -/******************************************************************************* -* Function Name : UART_RTSConfig -* Description : Sets or Resets the RTS signal -* Input : - LevelState: new state of the RTS signal for UART0 only. -* This parameter can be: LowLevel or HighLevel -* Output : None -* Return : None -*******************************************************************************/ -void UART_RTSConfig(UART_LevelTypeDef LevelState) -{ - if(LevelState == LowLevel) - { - UART0->CR |= UART_RTS_LowLevel_Mask; - } - else - { - UART0->CR &= UART_RTS_HighLevel_Mask; - } -} - -/******************************************************************************* -* Function Name : UART_DTRConfig -* Description : Sets or Resets the DTR signal for UART0 only -* Input : - LevelState: new state of the DTR signal. -* This parameter can be: LowLevel or HighLevel -* Output : None -* Return : None -*******************************************************************************/ -void UART_DTRConfig(UART_LevelTypeDef LevelState) -{ - if(LevelState == LowLevel) - { - UART0->CR |= UART_DTR_LowLevel_Mask; - } - else - { - UART0->CR &= UART_DTR_HighLevel_Mask; - } -} -/******************* (C) COPYRIGHT 2006 STMicroelectronics *****END OF FILE****/ diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/source/91x_vic.c b/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/source/91x_vic.c deleted file mode 100644 index fc202e920..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/source/91x_vic.c +++ /dev/null @@ -1,830 +0,0 @@ -/******************** (C) COPYRIGHT 2006 STMicroelectronics ******************** -* File Name : 91x_vic.c -* Author : MCD Application Team -* Date First Issued : 05/18/2006 : Version 1.0 -* Description : This file provides all the VIC software functions. -******************************************************************************** -* History: -* 05/24/2006 : Version 1.1 -* 05/18/2006 : Version 1.0 -******************************************************************************** -* THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH -* CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS -* A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, INDIRECT -* OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT -* OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION -* CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. -*******************************************************************************/ - - -/* Standard include ----------------------------------------------------------*/ -#include "91x_vic.h" - -/* Include of other module interface headers ---------------------------------*/ -/* Local includes ------------------------------------------------------------*/ -/* Private typedef -----------------------------------------------------------*/ -/* Private define ------------------------------------------------------------*/ - -#define VIC_REGISTER_NUMBER 16 -#define VIC_PROTECTION_ENABLE_MASK 0x1 -#define VIC_PROTECTION_DISABLE_MASK 0xFFFFFFFE -#define VIC_VECTOR_ENABLE_MASK 0x20 -#define VIC_IT_SOURCE_MASK 0xFFFFFFE0 -/* Private macro -------------------------------------------------------------*/ -/* Private variables ---------------------------------------------------------*/ -/* Private function prototypes -----------------------------------------------*/ - -static void VIC_ITModeConfig(u16 VIC_Source, VIC_ITLineMode VIC_LineMode); -static void VIC_ISRVectAddConfig(u16 VIC_Source, u16 VIC_Priority, \ - void (*VIC_VectAddress)(void)); -static void VIC_VectEnableConfig(u16 VIC_Source, u16 VIC_Priority); -static void VIC_ITSourceConfig(u16 VIC_Source, u16 VIC_Priority); - -/* Interface functions -------------------------------------------------------*/ -/* Private functions ---------------------------------------------------------*/ - -/******************************************************************************* -* Function Name : VIC_DeInit -* Description : Deinitialize the VIC module registers to their default reset -* values. -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void VIC_DeInit(void) -{ - SCU_AHBPeriphReset(__VIC, ENABLE); /* VIC peripheral is under Reset */ - SCU_AHBPeriphReset(__VIC, DISABLE); /* VIC peripheral Reset off */ -} - -/******************************************************************************* -* Function Name : VIC_GetIRQStatus -* Description : Get the status of interrupts after IRQ masking. -* Input : VIC_Source: specifies the number of the source line. -* This parameter can be one of the following values: -* - WDG_ITLine : VIC source 0 -* - SW_ITLine : VIC source 1 -* - ARMRX_ITLine : VIC source 2 -* - ARMTX_ITLine : VIC source 3 -* - TIM0_ITLine : VIC source 4 -* - TIM1_ITLine : VIC source 5 -* - TIM2_ITLine : VIC source 6 -* - TIM3_ITLine : VIC source 7 -* - USBHP_ITLine : VIC source 8 -* - USBLP_ITLine : VIC source 9 -* - SCU_ITLine : VIC source 10 -* - ENET_ITLine : VIC source 11 -* - DMA_ITLine : VIC source 12 -* - CAN_ITLine : VIC source 13 -* - MC_ITLine : VIC source 14 -* - ADC_ITLine : VIC source 15 -* - UART0_ITLine : VIC source 16 -* - UART1_ITLine : VIC source 17 -* - UART2_ITLine : VIC source 18 -* - I2C0_ITLine : VIC source 19 -* - I2C1_ITLine : VIC source 20 -* - SSP0_ITLine : VIC source 21 -* - SSP1_ITLine : VIC source 22 -* - LVD_ITLine : VIC source 23 -* - RTC_ITLine : VIC source 24 -* - WIU_ITLine : VIC source 25 -* - EXTIT0_ITLine: VIC source 26 -* - EXTIT1_ITLine: VIC source 27 -* - EXTIT2_ITLine: VIC source 28 -* - EXTIT3_ITLine: VIC source 29 -* - USBWU_ITLine : VIC source 30 -* - PFQBC_ITLine : VIC source 31 -* Output : None -* Return : The status of the IRQ interrupt after masking (SET or RESET). -*******************************************************************************/ -FlagStatus VIC_GetIRQStatus(u16 VIC_Source) -{ - u32 VIC_Mask = 1; - if (VIC_Source < VIC_REGISTER_NUMBER) - { - if ((VIC0->ISR | VIC_Mask << VIC_Source) != RESET) - return SET; - else - return RESET; - } - else - { - if ((VIC1->ISR | VIC_Mask << (VIC_Source - VIC_REGISTER_NUMBER)) != RESET) - return SET; - else - return RESET; - } -} - -/******************************************************************************* -* Function Name : VIC_GetFIQStatus -* Description : Get the status of interrupts after FIQ masking -* Input : VIC_Source: specifies the number of the source line. -* This parameter can be one of the following values: -* - WDG_ITLine : VIC source 0 -* - SW_ITLine : VIC source 1 -* - ARMRX_ITLine : VIC source 2 -* - ARMTX_ITLine : VIC source 3 -* - TIM0_ITLine : VIC source 4 -* - TIM1_ITLine : VIC source 5 -* - TIM2_ITLine : VIC source 6 -* - TIM3_ITLine : VIC source 7 -* - USBHP_ITLine : VIC source 8 -* - USBLP_ITLine : VIC source 9 -* - SCU_ITLine : VIC source 10 -* - ENET_ITLine : VIC source 11 -* - DMA_ITLine : VIC source 12 -* - CAN_ITLine : VIC source 13 -* - MC_ITLine : VIC source 14 -* - ADC_ITLine : VIC source 15 -* - UART0_ITLine : VIC source 16 -* - UART1_ITLine : VIC source 17 -* - UART2_ITLine : VIC source 18 -* - I2C0_ITLine : VIC source 19 -* - I2C1_ITLine : VIC source 20 -* - SSP0_ITLine : VIC source 21 -* - SSP1_ITLine : VIC source 22 -* - LVD_ITLine : VIC source 23 -* - RTC_ITLine : VIC source 24 -* - WIU_ITLine : VIC source 25 -* - EXTIT0_ITLine: VIC source 26 -* - EXTIT1_ITLine: VIC source 27 -* - EXTIT2_ITLine: VIC source 28 -* - EXTIT3_ITLine: VIC source 29 -* - USBWU_ITLine : VIC source 30 -* - PFQBC_ITLine : VIC source 31 -* Output : None -* Return : The status of the FIQ interrupt after masking (SET or RESET) -*******************************************************************************/ -FlagStatus VIC_GetFIQStatus(u16 VIC_Source) -{ - u32 VIC_Mask = 1; - if (VIC_Source < VIC_REGISTER_NUMBER) - { - if ((VIC0->RINTSR | VIC_Mask << VIC_Source) != RESET) - return SET; - else - return RESET; - } - else - { - if ((VIC1->RINTSR | VIC_Mask << (VIC_Source - VIC_REGISTER_NUMBER)) != RESET) - return SET; - else - return RESET; - } -} - -/******************************************************************************* -* Function Name : VIC_GetSourceITStatus -* Description : Get the status of the source interrupts before masking. -* Input : VIC_Source: specifies the number of the source line. -* This parameter can be one of the following values: -* - WDG_ITLine : VIC source 0 -* - SW_ITLine : VIC source 1 -* - ARMRX_ITLine : VIC source 2 -* - ARMTX_ITLine : VIC source 3 -* - TIM0_ITLine : VIC source 4 -* - TIM1_ITLine : VIC source 5 -* - TIM2_ITLine : VIC source 6 -* - TIM3_ITLine : VIC source 7 -* - USBHP_ITLine : VIC source 8 -* - USBLP_ITLine : VIC source 9 -* - SCU_ITLine : VIC source 10 -* - ENET_ITLine : VIC source 11 -* - DMA_ITLine : VIC source 12 -* - CAN_ITLine : VIC source 13 -* - MC_ITLine : VIC source 14 -* - ADC_ITLine : VIC source 15 -* - UART0_ITLine : VIC source 16 -* - UART1_ITLine : VIC source 17 -* - UART2_ITLine : VIC source 18 -* - I2C0_ITLine : VIC source 19 -* - I2C1_ITLine : VIC source 20 -* - SSP0_ITLine : VIC source 21 -* - SSP1_ITLine : VIC source 22 -* - LVD_ITLine : VIC source 23 -* - RTC_ITLine : VIC source 24 -* - WIU_ITLine : VIC source 25 -* - EXTIT0_ITLine: VIC source 26 -* - EXTIT1_ITLine: VIC source 27 -* - EXTIT2_ITLine: VIC source 28 -* - EXTIT3_ITLine: VIC source 29 -* - USBWU_ITLine : VIC source 30 -* - PFQBC_ITLine : VIC source 31 -* Output : None -* Return : The status of the source interrupt before masking -*******************************************************************************/ -FlagStatus VIC_GetSourceITStatus(u16 VIC_Source) -{ - u32 VIC_Mask = 1; - if (VIC_Source < VIC_REGISTER_NUMBER) - { - if ((VIC0->FSR | VIC_Mask << VIC_Source) != RESET) - return SET; - else - return RESET; - } - else - { - if ((VIC1->FSR | VIC_Mask << (VIC_Source - VIC_REGISTER_NUMBER)) != RESET) - return SET; - else - return RESET; - } -} - -/******************************************************************************* -* Function Name : VIC_ITModeConfig -* Description : Select the type of interrupt (IRQ or FIQ) -* Input1 : VIC_Source: specifies the number of the source line. -* This parameter can be one of the following values: -* - WDG_ITLine : VIC source 0 -* - SW_ITLine : VIC source 1 -* - ARMRX_ITLine : VIC source 2 -* - ARMTX_ITLine : VIC source 3 -* - TIM0_ITLine : VIC source 4 -* - TIM1_ITLine : VIC source 5 -* - TIM2_ITLine : VIC source 6 -* - TIM3_ITLine : VIC source 7 -* - USBHP_ITLine : VIC source 8 -* - USBLP_ITLine : VIC source 9 -* - SCU_ITLine : VIC source 10 -* - ENET_ITLine : VIC source 11 -* - DMA_ITLine : VIC source 12 -* - CAN_ITLine : VIC source 13 -* - MC_ITLine : VIC source 14 -* - ADC_ITLine : VIC source 15 -* - UART0_ITLine : VIC source 16 -* - UART1_ITLine : VIC source 17 -* - UART2_ITLine : VIC source 18 -* - I2C0_ITLine : VIC source 19 -* - I2C1_ITLine : VIC source 20 -* - SSP0_ITLine : VIC source 21 -* - SSP1_ITLine : VIC source 22 -* - LVD_ITLine : VIC source 23 -* - RTC_ITLine : VIC source 24 -* - WIU_ITLine : VIC source 25 -* - EXTIT0_ITLine: VIC source 26 -* - EXTIT1_ITLine: VIC source 27 -* - EXTIT2_ITLine: VIC source 28 -* - EXTIT3_ITLine: VIC source 29 -* - USBWU_ITLine : VIC source 30 -* - PFQBC_ITLine : VIC source 31 -* Input2 : VIC_LineMode :specifies the type of interrupt of the source -* line. This parameter can be one of the following values: -* - VIC_IRQ: the correspondent line is configured as IRQ. -* - VIC_FIQ: the correspondent line is configured as FIQ. -* Output : None -* Return : None -*******************************************************************************/ -static void VIC_ITModeConfig(u16 VIC_Source, VIC_ITLineMode VIC_LineMode) -{ - u32 VIC_Mask = 1; - - if (VIC_Source < VIC_REGISTER_NUMBER) /* VIC0 */ - { - if (VIC_LineMode == VIC_IRQ) - VIC0->INTSR &= ~(VIC_Mask << VIC_Source); - else /* VIC_LineMode == VIC_FIQ */ - VIC0->INTSR |= (VIC_Mask << VIC_Source); - } - else /* VIC1 */ - { - if (VIC_LineMode == VIC_IRQ) - VIC1->INTSR &= ~(VIC_Mask << (VIC_Source - VIC_REGISTER_NUMBER)); - else /* VIC_LineMode == VIC_FIQ */ - VIC1->INTSR |= (VIC_Mask << (VIC_Source - VIC_REGISTER_NUMBER)); - } -} - -/******************************************************************************* -* Function Name : VIC_ITCmd -* Description : Enable or disable the interrupt request lines. -* Input1 : VIC_Source: specifies the number of the source line. -* This parameter can be one of the following values: -* - WDG_ITLine : VIC source 0 -* - SW_ITLine : VIC source 1 -* - ARMRX_ITLine : VIC source 2 -* - ARMTX_ITLine : VIC source 3 -* - TIM0_ITLine : VIC source 4 -* - TIM1_ITLine : VIC source 5 -* - TIM2_ITLine : VIC source 6 -* - TIM3_ITLine : VIC source 7 -* - USBHP_ITLine : VIC source 8 -* - USBLP_ITLine : VIC source 9 -* - SCU_ITLine : VIC source 10 -* - ENET_ITLine : VIC source 11 -* - DMA_ITLine : VIC source 12 -* - CAN_ITLine : VIC source 13 -* - MC_ITLine : VIC source 14 -* - ADC_ITLine : VIC source 15 -* - UART0_ITLine : VIC source 16 -* - UART1_ITLine : VIC source 17 -* - UART2_ITLine : VIC source 18 -* - I2C0_ITLine : VIC source 19 -* - I2C1_ITLine : VIC source 20 -* - SSP0_ITLine : VIC source 21 -* - SSP1_ITLine : VIC source 22 -* - LVD_ITLine : VIC source 23 -* - RTC_ITLine : VIC source 24 -* - WIU_ITLine : VIC source 25 -* - EXTIT0_ITLine: VIC source 26 -* - EXTIT1_ITLine: VIC source 27 -* - EXTIT2_ITLine: VIC source 28 -* - EXTIT3_ITLine: VIC source 29 -* - USBWU_ITLine : VIC source 30 -* - PFQBC_ITLine : VIC source 31 -* Input2 : FMI_NewState: specifies the line status. -* This parameter can be one of the following values: -* - ENABLE: The line is enabled. -* - DISABLE: The line is disabled. -* Output : None -* Return : None -*******************************************************************************/ -void VIC_ITCmd(u16 VIC_Source, FunctionalState VIC_NewState) -{ - u32 VIC_Mask = 1; - - if (VIC_NewState == ENABLE) - { - if (VIC_Source < VIC_REGISTER_NUMBER) /* VIC0 */ - VIC0->INTER |= (VIC_Mask << VIC_Source); - else /* VIC1 */ - VIC1->INTER |= (VIC_Mask << (VIC_Source - VIC_REGISTER_NUMBER)); - } - else /* VIC_NewState == DISABLE */ - { - if (VIC_Source < VIC_REGISTER_NUMBER) /* VIC0 */ - VIC0->INTECR |= (VIC_Mask << VIC_Source); - else /* VIC1 */ - VIC1->INTECR |= (VIC_Mask << (VIC_Source - VIC_REGISTER_NUMBER)); - } -} - -/******************************************************************************* -* Function Name : VIC_SWITCmd -* Description : Generate a software interrupt for the specific source -* interrupt. -* Input1 : VIC_Source: specifies the number of the source line. -* This parameter can be one of the following values: -* - WDG_ITLine : VIC source 0 -* - SW_ITLine : VIC source 1 -* - ARMRX_ITLine : VIC source 2 -* - ARMTX_ITLine : VIC source 3 -* - TIM0_ITLine : VIC source 4 -* - TIM1_ITLine : VIC source 5 -* - TIM2_ITLine : VIC source 6 -* - TIM3_ITLine : VIC source 7 -* - USBHP_ITLine : VIC source 8 -* - USBLP_ITLine : VIC source 9 -* - SCU_ITLine : VIC source 10 -* - ENET_ITLine : VIC source 11 -* - DMA_ITLine : VIC source 12 -* - CAN_ITLine : VIC source 13 -* - MC_ITLine : VIC source 14 -* - ADC_ITLine : VIC source 15 -* - UART0_ITLine : VIC source 16 -* - UART1_ITLine : VIC source 17 -* - UART2_ITLine : VIC source 18 -* - I2C0_ITLine : VIC source 19 -* - I2C1_ITLine : VIC source 20 -* - SSP0_ITLine : VIC source 21 -* - SSP1_ITLine : VIC source 22 -* - LVD_ITLine : VIC source 23 -* - RTC_ITLine : VIC source 24 -* - WIU_ITLine : VIC source 25 -* - EXTIT0_ITLine: VIC source 26 -* - EXTIT1_ITLine: VIC source 27 -* - EXTIT2_ITLine: VIC source 28 -* - EXTIT3_ITLine: VIC source 29 -* - USBWU_ITLine : VIC source 30 -* - PFQBC_ITLine : VIC source 31 -* Input2 : FMI_NewState: specifies the software interrupt status. -* This parameter can be one of the following values: -* - ENABLE: The software interrupt is enabled. -* - DISABLE: The software interrupt is disabled. -* Output : None -* Return : None -*******************************************************************************/ -void VIC_SWITCmd(u16 VIC_Source, FunctionalState VIC_NewState) -{ - u32 VIC_Mask = 1; - - if (VIC_NewState == ENABLE) - { - if (VIC_Source < VIC_REGISTER_NUMBER) /* VIC0 */ - VIC0->SWINTR |= (VIC_Mask << VIC_Source); - else /* VIC1 */ - VIC1->SWINTR |= (VIC_Mask << (VIC_Source - VIC_REGISTER_NUMBER)); - } - else /* VIC_NewState == DISABLE */ - { - if (VIC_Source < VIC_REGISTER_NUMBER) /* VIC0 */ - VIC0->SWINTCR = (VIC_Mask << VIC_Source); - else /* VIC1 */ - VIC1->SWINTCR = (VIC_Mask << (VIC_Source - VIC_REGISTER_NUMBER)); - } -} - -/******************************************************************************* -* Function Name : VIC_ProtectionCmd -* Description : Enable or Disable the register access protection. -* Input : FMI_NewState: specifies the protection status. -* This parameter can be one of the following values: -* - ENABLE: The protection is enabled. -* - DISABLE: The protection is disabled. -* Output : None -* Return : None -*******************************************************************************/ -void VIC_ProtectionCmd(FunctionalState VIC_NewState) -{ - if (VIC_NewState == ENABLE) - { - VIC0->PER |= VIC_PROTECTION_ENABLE_MASK; - VIC1->PER |= VIC_PROTECTION_ENABLE_MASK; - } - else - { - VIC0->PER &= VIC_PROTECTION_DISABLE_MASK; - VIC1->PER &= VIC_PROTECTION_DISABLE_MASK; - } -} - -/******************************************************************************* -* Function Name : VIC_GetCurrentISRAdd -* Description : Get the address of the current active ISR. -* Input : VICx: specifies the VIC peripheral -* This parameter can be one of the following values: -* - VIC0: To select VIC0. -* - VIC1: To select VIC1. -* Output : None -* Return : The Address of the active ISR. -*******************************************************************************/ -u32 VIC_GetCurrentISRAdd(VIC_TypeDef* VICx) -{ - return VICx->VAR; -} - -/******************************************************************************* -* Function Name : VIC_ISRVectAddConfig -* Description : Configuration of the ISR vector address. -* Input1 : VIC_Source: specifies the number of the source line. -* This parameter can be one of the following values: -* - WDG_ITLine : VIC source 0 -* - SW_ITLine : VIC source 1 -* - ARMRX_ITLine : VIC source 2 -* - ARMTX_ITLine : VIC source 3 -* - TIM0_ITLine : VIC source 4 -* - TIM1_ITLine : VIC source 5 -* - TIM2_ITLine : VIC source 6 -* - TIM3_ITLine : VIC source 7 -* - USBHP_ITLine : VIC source 8 -* - USBLP_ITLine : VIC source 9 -* - SCU_ITLine : VIC source 10 -* - ENET_ITLine : VIC source 11 -* - DMA_ITLine : VIC source 12 -* - CAN_ITLine : VIC source 13 -* - MC_ITLine : VIC source 14 -* - ADC_ITLine : VIC source 15 -* - UART0_ITLine : VIC source 16 -* - UART1_ITLine : VIC source 17 -* - UART2_ITLine : VIC source 18 -* - I2C0_ITLine : VIC source 19 -* - I2C1_ITLine : VIC source 20 -* - SSP0_ITLine : VIC source 21 -* - SSP1_ITLine : VIC source 22 -* - LVD_ITLine : VIC source 23 -* - RTC_ITLine : VIC source 24 -* - WIU_ITLine : VIC source 25 -* - EXTIT0_ITLine: VIC source 26 -* - EXTIT1_ITLine: VIC source 27 -* - EXTIT2_ITLine: VIC source 28 -* - EXTIT3_ITLine: VIC source 29 -* - USBWU_ITLine : VIC source 30 -* - PFQBC_ITLine : VIC source 31 -* Input2 : VIC_Priority: specifies the priority of the interrupt. -* It can be a value from 0 to 15. 0 is the highest priority. -* Input3 : void (*VIC_VectAddress)(void): specifies the ISR vector -* address pointer. -* Output : None -* Return : None -*******************************************************************************/ -static void VIC_ISRVectAddConfig(u16 VIC_Source, u16 VIC_Priority, \ - void (*VIC_VectAddress)(void)) -{ - if (VIC_Source < VIC_REGISTER_NUMBER) /* VIC0 */ - VIC0->VAiR[VIC_Priority] = (u32)VIC_VectAddress; - else /* VIC1 */ - VIC1->VAiR[VIC_Priority] = (u32)VIC_VectAddress; -} - -/******************************************************************************* -* Function Name : VIC_GetISRVectAdd -* Description : Get the ISR vector address of the correspondent line. -* Input : VIC_Source: specifies the number of the source line. -* This parameter can be one of the following values: -* - WDG_ITLine : VIC source 0 -* - SW_ITLine : VIC source 1 -* - ARMRX_ITLine : VIC source 2 -* - ARMTX_ITLine : VIC source 3 -* - TIM0_ITLine : VIC source 4 -* - TIM1_ITLine : VIC source 5 -* - TIM2_ITLine : VIC source 6 -* - TIM3_ITLine : VIC source 7 -* - USBHP_ITLine : VIC source 8 -* - USBLP_ITLine : VIC source 9 -* - SCU_ITLine : VIC source 10 -* - ENET_ITLine : VIC source 11 -* - DMA_ITLine : VIC source 12 -* - CAN_ITLine : VIC source 13 -* - MC_ITLine : VIC source 14 -* - ADC_ITLine : VIC source 15 -* - UART0_ITLine : VIC source 16 -* - UART1_ITLine : VIC source 17 -* - UART2_ITLine : VIC source 18 -* - I2C0_ITLine : VIC source 19 -* - I2C1_ITLine : VIC source 20 -* - SSP0_ITLine : VIC source 21 -* - SSP1_ITLine : VIC source 22 -* - LVD_ITLine : VIC source 23 -* - RTC_ITLine : VIC source 24 -* - WIU_ITLine : VIC source 25 -* - EXTIT0_ITLine: VIC source 26 -* - EXTIT1_ITLine: VIC source 27 -* - EXTIT2_ITLine: VIC source 28 -* - EXTIT3_ITLine: VIC source 29 -* - USBWU_ITLine : VIC source 30 -* - PFQBC_ITLine : VIC source 31 -* Output : None -* Return : The correspondent ISR vector address. -*******************************************************************************/ -u32 VIC_GetISRVectAdd(u16 VIC_Source) -{ - if (VIC_Source < VIC_REGISTER_NUMBER) /* VIC0 */ - return VIC0->VAiR[VIC_Source]; - else /* VIC1 */ - return VIC1->VAiR[VIC_Source - VIC_REGISTER_NUMBER]; -} - -/******************************************************************************* -* Function Name : VIC_VectEnableConfig -* Description : Enable the vector interrupt. -* Input1 : VIC_Source: specifies the number of the source line. -* This parameter can be one of the following values: -* - WDG_ITLine : VIC source 0 -* - SW_ITLine : VIC source 1 -* - ARMRX_ITLine : VIC source 2 -* - ARMTX_ITLine : VIC source 3 -* - TIM0_ITLine : VIC source 4 -* - TIM1_ITLine : VIC source 5 -* - TIM2_ITLine : VIC source 6 -* - TIM3_ITLine : VIC source 7 -* - USBHP_ITLine : VIC source 8 -* - USBLP_ITLine : VIC source 9 -* - SCU_ITLine : VIC source 10 -* - ENET_ITLine : VIC source 11 -* - DMA_ITLine : VIC source 12 -* - CAN_ITLine : VIC source 13 -* - MC_ITLine : VIC source 14 -* - ADC_ITLine : VIC source 15 -* - UART0_ITLine : VIC source 16 -* - UART1_ITLine : VIC source 17 -* - UART2_ITLine : VIC source 18 -* - I2C0_ITLine : VIC source 19 -* - I2C1_ITLine : VIC source 20 -* - SSP0_ITLine : VIC source 21 -* - SSP1_ITLine : VIC source 22 -* - LVD_ITLine : VIC source 23 -* - RTC_ITLine : VIC source 24 -* - WIU_ITLine : VIC source 25 -* - EXTIT0_ITLine: VIC source 26 -* - EXTIT1_ITLine: VIC source 27 -* - EXTIT2_ITLine: VIC source 28 -* - EXTIT3_ITLine: VIC source 29 -* - USBWU_ITLine : VIC source 30 -* - PFQBC_ITLine : VIC source 31 -* Input2 : VIC_Priority: specifies the priority of the interrupt. -* It can be a value from 0 to 15. 0 is the highest priority. -* Output : None -* Return : None -*******************************************************************************/ -static void VIC_VectEnableConfig(u16 VIC_Source, u16 VIC_Priority) -{ - if (VIC_Source < VIC_REGISTER_NUMBER) /* VIC0 */ - VIC0->VCiR[VIC_Priority] |= VIC_VECTOR_ENABLE_MASK; - else /* VIC1 */ - VIC1->VCiR[VIC_Priority] |= VIC_VECTOR_ENABLE_MASK; -} - -/******************************************************************************* -* Function Name : VIC_ITSourceConfig -* Description : Select the interrupt source. -* Input1 : VIC_Source: specifies the number of the source line. -* This parameter can be one of the following values: -* - WDG_ITLine : VIC source 0 -* - SW_ITLine : VIC source 1 -* - ARMRX_ITLine : VIC source 2 -* - ARMTX_ITLine : VIC source 3 -* - TIM0_ITLine : VIC source 4 -* - TIM1_ITLine : VIC source 5 -* - TIM2_ITLine : VIC source 6 -* - TIM3_ITLine : VIC source 7 -* - USBHP_ITLine : VIC source 8 -* - USBLP_ITLine : VIC source 9 -* - SCU_ITLine : VIC source 10 -* - ENET_ITLine : VIC source 11 -* - DMA_ITLine : VIC source 12 -* - CAN_ITLine : VIC source 13 -* - MC_ITLine : VIC source 14 -* - ADC_ITLine : VIC source 15 -* - UART0_ITLine : VIC source 16 -* - UART1_ITLine : VIC source 17 -* - UART2_ITLine : VIC source 18 -* - I2C0_ITLine : VIC source 19 -* - I2C1_ITLine : VIC source 20 -* - SSP0_ITLine : VIC source 21 -* - SSP1_ITLine : VIC source 22 -* - LVD_ITLine : VIC source 23 -* - RTC_ITLine : VIC source 24 -* - WIU_ITLine : VIC source 25 -* - EXTIT0_ITLine: VIC source 26 -* - EXTIT1_ITLine: VIC source 27 -* - EXTIT2_ITLine: VIC source 28 -* - EXTIT3_ITLine: VIC source 29 -* - USBWU_ITLine : VIC source 30 -* - PFQBC_ITLine : VIC source 31 -* Input2 : VIC_Priority: specifies the priority of the interrupt. -* It can be a value from 0 to 15. 0 is the highest priority. -* Output : None -* Return : None -*******************************************************************************/ -static void VIC_ITSourceConfig(u16 VIC_Source, u16 VIC_Priority) -{ - if (VIC_Source < VIC_REGISTER_NUMBER) /* VIC0 */ - { - VIC0->VCiR[VIC_Priority] &= VIC_IT_SOURCE_MASK; - VIC0->VCiR[VIC_Priority] |= VIC_Source; - } - else /* VIC1 */ - { - VIC1->VCiR[VIC_Priority] &= VIC_IT_SOURCE_MASK; - VIC1->VCiR[VIC_Priority] |= VIC_Source - VIC_REGISTER_NUMBER; - } -} - -/******************************************************************************* -* Function Name : VIC_Config -* Description : Configure the ISR, the line, the mode and the priority for -* each interrupt source line. -* Input1 : VIC_Source: specifies the number of the source line. -* This parameter can be one of the following values: -* - WDG_ITLine : VIC source 0 -* - SW_ITLine : VIC source 1 -* - ARMRX_ITLine : VIC source 2 -* - ARMTX_ITLine : VIC source 3 -* - TIM0_ITLine : VIC source 4 -* - TIM1_ITLine : VIC source 5 -* - TIM2_ITLine : VIC source 6 -* - TIM3_ITLine : VIC source 7 -* - USBHP_ITLine : VIC source 8 -* - USBLP_ITLine : VIC source 9 -* - SCU_ITLine : VIC source 10 -* - ENET_ITLine : VIC source 11 -* - DMA_ITLine : VIC source 12 -* - CAN_ITLine : VIC source 13 -* - MC_ITLine : VIC source 14 -* - ADC_ITLine : VIC source 15 -* - UART0_ITLine : VIC source 16 -* - UART1_ITLine : VIC source 17 -* - UART2_ITLine : VIC source 18 -* - I2C0_ITLine : VIC source 19 -* - I2C1_ITLine : VIC source 20 -* - SSP0_ITLine : VIC source 21 -* - SSP1_ITLine : VIC source 22 -* - LVD_ITLine : VIC source 23 -* - RTC_ITLine : VIC source 24 -* - WIU_ITLine : VIC source 25 -* - EXTIT0_ITLine: VIC source 26 -* - EXTIT1_ITLine: VIC source 27 -* - EXTIT2_ITLine: VIC source 28 -* - EXTIT3_ITLine: VIC source 29 -* - USBWU_ITLine : VIC source 30 -* - PFQBC_ITLine : VIC source 31 -* Input2 : VIC_LineMode :specifies the type of interrupt of the source -* line. This parameter can be one of the following values: -* - VIC_IRQ: the correspondent line is configured as IRQ. -* - VIC_FIQ: the correspondent line is configured as FIQ. -* Input3 : VIC_Priority: specifies the priority of the interrupt. -* It can be a value from 0 to 15. 0 is the highest priority. -* Output : None -* Return : None -*******************************************************************************/ -void VIC_Config(u16 VIC_Source, VIC_ITLineMode VIC_LineMode, u8 VIC_Priority) -{ - switch (VIC_Source) - { - case 0: VIC_ISRVectAddConfig(VIC_Source, VIC_Priority, WDG_IRQHandler); - break; - - case 1: VIC_ISRVectAddConfig(VIC_Source, VIC_Priority, SW_IRQHandler); - break; - - case 2: VIC_ISRVectAddConfig(VIC_Source, VIC_Priority, ARMRX_IRQHandler); - break; - - case 3: VIC_ISRVectAddConfig(VIC_Source, VIC_Priority, ARMTX_IRQHandler); - break; - - case 4: VIC_ISRVectAddConfig(VIC_Source, VIC_Priority, TIM0_IRQHandler); - break; - - case 5: VIC_ISRVectAddConfig(VIC_Source, VIC_Priority, TIM1_IRQHandler); - break; - - case 6: VIC_ISRVectAddConfig(VIC_Source, VIC_Priority, TIM2_IRQHandler); - break; - - case 7: VIC_ISRVectAddConfig(VIC_Source, VIC_Priority, TIM3_IRQHandler); - break; - - case 8: VIC_ISRVectAddConfig(VIC_Source, VIC_Priority, USBHP_IRQHandler); - break; - - case 9: VIC_ISRVectAddConfig(VIC_Source, VIC_Priority, USBLP_IRQHandler); - break; - - case 10: VIC_ISRVectAddConfig(VIC_Source, VIC_Priority, SCU_IRQHandler); - break; - - case 11: VIC_ISRVectAddConfig(VIC_Source, VIC_Priority, ENET_IRQHandler); - break; - - case 12: VIC_ISRVectAddConfig(VIC_Source, VIC_Priority, DMA_IRQHandler); - break; - - case 13: VIC_ISRVectAddConfig(VIC_Source, VIC_Priority, CAN_IRQHandler); - break; - - case 14: VIC_ISRVectAddConfig(VIC_Source, VIC_Priority, MC_IRQHandler); - break; - - case 15: VIC_ISRVectAddConfig(VIC_Source, VIC_Priority, ADC_IRQHandler); - break; - - case 16: VIC_ISRVectAddConfig(VIC_Source, VIC_Priority, UART0_IRQHandler); - break; - - case 17: VIC_ISRVectAddConfig(VIC_Source, VIC_Priority, UART1_IRQHandler); - break; - - case 18: VIC_ISRVectAddConfig(VIC_Source, VIC_Priority, UART2_IRQHandler); - break; - - case 19: VIC_ISRVectAddConfig(VIC_Source, VIC_Priority, I2C0_IRQHandler); - break; - - case 20: VIC_ISRVectAddConfig(VIC_Source, VIC_Priority, I2C1_IRQHandler); - break; - - case 21: VIC_ISRVectAddConfig(VIC_Source, VIC_Priority, SSP0_IRQHandler); - break; - - case 22: VIC_ISRVectAddConfig(VIC_Source, VIC_Priority, SSP1_IRQHandler); - break; - - case 23: VIC_ISRVectAddConfig(VIC_Source, VIC_Priority, LVD_IRQHandler); - break; - - case 24: VIC_ISRVectAddConfig(VIC_Source, VIC_Priority, RTC_IRQHandler); - break; - - case 25: VIC_ISRVectAddConfig(VIC_Source, VIC_Priority, WIU_IRQHandler); - break; - - case 26: VIC_ISRVectAddConfig(VIC_Source, VIC_Priority, EXTIT0_IRQHandler); - break; - - case 27: VIC_ISRVectAddConfig(VIC_Source, VIC_Priority, EXTIT1_IRQHandler); - break; - - case 28: VIC_ISRVectAddConfig(VIC_Source, VIC_Priority, EXTIT2_IRQHandler); - break; - - case 29: VIC_ISRVectAddConfig(VIC_Source, VIC_Priority, EXTIT3_IRQHandler); - break; - - case 30: VIC_ISRVectAddConfig(VIC_Source, VIC_Priority, USBWU_IRQHandler); - break; - - case 31: VIC_ISRVectAddConfig(VIC_Source, VIC_Priority, PFQBC_IRQHandler); - break; - - default: break; - } - VIC_ITModeConfig(VIC_Source, VIC_LineMode); - VIC_VectEnableConfig(VIC_Source, VIC_Priority); - VIC_ITSourceConfig(VIC_Source, VIC_Priority); -} - -/******************* (C) COPYRIGHT 2006 STMicroelectronics *****END OF FILE****/ diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/source/91x_wdg.c b/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/source/91x_wdg.c deleted file mode 100644 index f933635d0..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/Library/source/91x_wdg.c +++ /dev/null @@ -1,277 +0,0 @@ -/******************** (C) COPYRIGHT 2006 STMicroelectronics ******************** -* File Name : 91x_wdg.c -* Author : MCD Application Team -* Date First Issued : 05/18/2006 : Version 1.0 -* Description : This file provides all the WDG software functions. -******************************************************************************** -* History: -* 05/24/2006 : Version 1.1 -* 05/18/2006 : Version 1.0 -******************************************************************************** -* THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS -* WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. -* AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, -* INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE -* CONTENT OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING -* INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. -*******************************************************************************/ - -/* Includes ------------------------------------------------------------------*/ -#include "91x_wdg.h" -#include "91x_scu.h" -/* Private typedef -----------------------------------------------------------*/ -/* Private define ------------------------------------------------------------*/ - - -/* WDG End of Count interrupt Flag */ -#define WDG_FLAG_EC 0x0001 - - -/* WDG End of Count interrupt request */ -#define WDG_IT_EC 0x0001 - - - -/* WDG Start/Stop counter */ -#define WDG_Counter_Start 0x0002 -#define WDG_Counter_Stop 0xFFFD - - -/* Private macro -------------------------------------------------------------*/ -/* Private variables ---------------------------------------------------------*/ -/* Registers reset value */ -/* Private function prototypes -----------------------------------------------*/ -/* Private functions ---------------------------------------------------------*/ - -/****************************************************************************** -* Function Name : WDG_DeInit -* Description : Deinitializes the WDG peripheral registers to their default -* reset values. -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void WDG_DeInit(void) -{ - - SCU_APBPeriphReset(__WDG, ENABLE); /*WDG peripheral under Reset */ - SCU_APBPeriphReset(__WDG, DISABLE); /*WDG peripheral Reset off*/ - -} - -/******************************************************************************* -* Function Name : WDG_StructInit -* Description : Fills the WDG_InitTypeDef structure member with its reset -* value. -* Input : WDG_InitStruct : pointer to a WDG_InitTypeDef structure -* which will be initialized. -* Output : None -* Return : None -*******************************************************************************/ -void WDG_StructInit(WDG_InitTypeDef *WDG_InitStruct) -{ - /* Select the Watchdog running mode*/ - WDG_InitStruct->WDG_Mode = WDG_Mode_Timer; - - /* Select the source clock */ - WDG_InitStruct-> WDG_ClockSource = WDG_ClockSource_Apb; - - /* Initialize Prescaler */ - WDG_InitStruct->WDG_Prescaler =0xFF; - - /* Initialize Preload */ - WDG_InitStruct->WDG_Preload =0xFFFF; - - -} - -/******************************************************************************* -* Function Name : WDG_Init -* Description : Initializes WDG peripheral according to the specified -* parameters in the WDG_InitStruct. -* Input : WDG_InitStruct: pointer to a WDG_InitTypeDef structure that -* contains the configuration information for the WDG peripheral. -* Output : None -* Return : None -*******************************************************************************/ -void WDG_Init(WDG_InitTypeDef* WDG_InitStruct) -{ - - - if(WDG_InitStruct->WDG_ClockSource == WDG_ClockSource_Apb) - { - /* Select The APB clock as clock source */ - WDG->CR &= WDG_ClockSource_Apb; - } - - else - { - /* Select the RTC clock as source */ - WDG->CR |= WDG_ClockSource_Rtc ; - } - - - /* Configure WDG Prescaler register value */ - WDG->PR = WDG_InitStruct->WDG_Prescaler; - - /* Configure WDG Pre-load register value */ - WDG->VR = WDG_InitStruct->WDG_Preload ; - - - if(WDG_InitStruct->WDG_Mode == WDG_Mode_Timer) - { - /* Select Timer mode */ - WDG->CR &= WDG_Mode_Timer; - } - else - { - /* Select WDG mode */ - WDG->CR |= WDG_Mode_Wdg ; - } - - -} - -/******************************************************************************* -* Function Name : WDG_Cmd -* Description : Enables or disables the WDG peripheral. -* Input : NewState: new state of the WDG peripheral (Newstate can be -* ENABLE or DISABLE) -* Output : None -* Return : None -*******************************************************************************/ -void WDG_Cmd(FunctionalState NewState ) -{ - if((WDG->CR & WDG_Mode_Wdg) == 0) - { - /* Timer mode */ - if(NewState == ENABLE) - { - /* Start timer by setting SC bit in Control register */ - WDG->CR |= WDG_Counter_Start; - } - else - { - /* Stop timer by clearning SC bit in Control register */ - WDG->CR &= WDG_Counter_Stop; - } - } - else - { - /* Watchdog mode */ - if(NewState == ENABLE) - { - WDG->KR = WDG_KeyValue1; - WDG->KR = WDG_KeyValue2; - } - } -} - -/******************************************************************************* -* Function Name : WDG_ITConfig -* Description : Enables or disables the WDG End of Count(EC) interrupt. -* Input : Newstate: new state of the End of Count(EC) WDG interrupt. -* This parameter can be: ENABLE or DISABLE. -* Output : None -* Return : None -*******************************************************************************/ -void WDG_ITConfig(FunctionalState NewState) -{ - if(NewState == ENABLE) - { - /* Enable the End of Count interrupt */ - WDG->MR |= WDG_IT_EC; - } - else - { - /* Disable the End of Count interrupt */ - WDG->MR &= ~WDG_IT_EC; - } -} - -/******************************************************************************* -* Function Name : WDG_GetCounter -* Description : Gets the WDG’s current counter value. -* Input : None -* Output : None -* Return : The WDG current counter value -*******************************************************************************/ -u16 WDG_GetCounter(void) -{ - return WDG->CNT; -} - - - - -/******************************************************************************* -* Function Name : WDG_GetITStatus -* Description : Checks whether the WDG End of Count(EC) interrupt is occured or not. -* Input : None -* Output : None -* Return : The new state of WDG_IT (SET or RESET). -*******************************************************************************/ -ITStatus WDG_GetITStatus(void) -{ - if(((WDG->SR & WDG_IT_EC) != RESET )&&((WDG->MR & WDG_IT_EC) != RESET )) - { - return SET; - } - else - { - return RESET; - } -} - -/******************************************************************************* -* Function Name : WDG_ClearITPendingBit -* Description : Clears the WDG's End of Count(EC) interrupt pending bit. -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void WDG_ClearITPendingBit(void) -{ - /* Clear the EC pending bit */ - WDG->SR &= ~WDG_IT_EC; - -} - -/******************************************************************************* -* Function Name : WDG_ClearFlag -* Description : Clears the WDG's End of Count(EC) Flag. -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void WDG_ClearFlag(void) -{ - /* Clear the EC Flag */ - - WDG->SR &= ~WDG_FLAG_EC; - -} - - -/******************************************************************************* -* Function Name : WDG_GetFlagStatus -* Description : Checks whether the WDG End of Count(EC) flag is set or not. -* Input : None -* Output : None -* Return : The new state of the WDG_FLAG (SET or RESET). -*******************************************************************************/ -FlagStatus WDG_GetFlagStatus(void) -{ - if((WDG->SR & WDG_FLAG_EC) != RESET ) - { - return SET; - } - else - { - return RESET; - } -} - - - -/******************* (C) COPYRIGHT 2006 STMicroelectronics *****END OF FILE****/ diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/ParTest/ParTest.c b/FreeRTOS/Demo/ARM9_STR91X_IAR/ParTest/ParTest.c deleted file mode 100644 index 97a13f5fb..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/ParTest/ParTest.c +++ /dev/null @@ -1,103 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* Library includes. */ -#include "91x_lib.h" - -/* Scheduler includes. */ -#include "FreeRTOS.h" - -/* Demo application includes. */ -#include "partest.h" - -#define partstMAX_LEDs 4 -#define partstLED_PORT *( ( unsigned short * ) 0x5800f3fc ) - -/*-----------------------------------------------------------*/ - -static GPIO_InitTypeDef GPIO9_InitStruct; - -void vParTestInitialise( void ) -{ - /* Configure the bits used to flash LED's on port 9 as output. */ - GPIO_StructInit( &GPIO9_InitStruct ); - GPIO9_InitStruct.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3; - GPIO9_InitStruct.GPIO_Direction = GPIO_PinOutput; - GPIO_Init( GPIO9, &GPIO9_InitStruct ); -} -/*-----------------------------------------------------------*/ - -void vParTestSetLED( unsigned portBASE_TYPE uxLED, signed portBASE_TYPE xValue ) -{ -unsigned short usLED = 0x0001; - - if( uxLED < partstMAX_LEDs ) - { - usLED <<= uxLED; - - portENTER_CRITICAL(); - { - if( xValue ) - { - partstLED_PORT &= ~usLED; - } - else - { - partstLED_PORT |= usLED; - } - } - portEXIT_CRITICAL(); - } -} -/*-----------------------------------------------------------*/ - -void vParTestToggleLED( unsigned portBASE_TYPE uxLED ) -{ -unsigned short usLED = 0x0001; - - if( uxLED < partstMAX_LEDs ) - { - usLED <<= uxLED; - - portENTER_CRITICAL(); - { - if( partstLED_PORT & usLED ) - { - partstLED_PORT &= ~usLED; - } - else - { - partstLED_PORT |= usLED; - } - } - portEXIT_CRITICAL(); - } -} - - - - diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/RTOSDemo.ewd b/FreeRTOS/Demo/ARM9_STR91X_IAR/RTOSDemo.ewd deleted file mode 100644 index e00a0c08a..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/RTOSDemo.ewd +++ /dev/null @@ -1,2443 +0,0 @@ - - - - 1 - - THUMB - - ARM - - 1 - - C-SPY - 2 - - 15 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - ARMSIM_ID - 2 - - 1 - 1 - 1 - - - - - - - - ANGEL_ID - 2 - - 0 - 1 - 1 - - - - - - - - - - - - GDBSERVER_ID - 2 - - 0 - 1 - 1 - - - - - - - - - - - IARROM_ID - 2 - - 0 - 1 - 1 - - - - - - - - - - JLINK_ID - 2 - - 9 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - LMIFTDI_ID - 2 - - 1 - 1 - 1 - - - - - - - - MACRAIGOR_ID - 2 - - 2 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - RDI_ID - 2 - - 1 - 1 - 1 - - - - - - - - - - - - - - - - - THIRDPARTY_ID - 2 - - 0 - 1 - 1 - - - - - - - - - $TOOLKIT_DIR$\plugins\rtos\CMX\CmxArmPlugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\CMX\CmxTinyArmPlugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\OSE\OseEpsilonPlugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\PowerPac\PowerPacRTOS.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXArmPlugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-KA-CSpy.ewplugin - 0 - - - $EW_DIR$\common\plugins\CodeCoverage\CodeCoverage.ENU.ewplugin - 1 - - - $EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin - 0 - - - $EW_DIR$\common\plugins\Profiling\Profiling.ENU.ewplugin - 1 - - - $EW_DIR$\common\plugins\Stack\Stack.ENU.ewplugin - 1 - - - - - ARM - uIP - D - - ARM - - 1 - - C-SPY - 2 - - 15 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - ARMSIM_ID - 2 - - 1 - 1 - 1 - - - - - - - - ANGEL_ID - 2 - - 0 - 1 - 1 - - - - - - - - - - - - GDBSERVER_ID - 2 - - 0 - 1 - 1 - - - - - - - - - - - IARROM_ID - 2 - - 0 - 1 - 1 - - - - - - - - - - JLINK_ID - 2 - - 9 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - LMIFTDI_ID - 2 - - 1 - 1 - 1 - - - - - - - - MACRAIGOR_ID - 2 - - 2 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - RDI_ID - 2 - - 1 - 1 - 1 - - - - - - - - - - - - - - - - - THIRDPARTY_ID - 2 - - 0 - 1 - 1 - - - - - - - - - $TOOLKIT_DIR$\plugins\rtos\CMX\CmxArmPlugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\CMX\CmxTinyArmPlugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\OSE\OseEpsilonPlugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\PowerPac\PowerPacRTOS.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXArmPlugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-KA-CSpy.ewplugin - 0 - - - $EW_DIR$\common\plugins\CodeCoverage\CodeCoverage.ENU.ewplugin - 1 - - - $EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin - 0 - - - $EW_DIR$\common\plugins\Profiling\Profiling.ENU.ewplugin - 1 - - - $EW_DIR$\common\plugins\Stack\Stack.ENU.ewplugin - 1 - - - - - ARM - lwIP - D - - ARM - - 1 - - C-SPY - 2 - - 15 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - ARMSIM_ID - 2 - - 1 - 1 - 1 - - - - - - - - ANGEL_ID - 2 - - 0 - 1 - 1 - - - - - - - - - - - - GDBSERVER_ID - 2 - - 0 - 1 - 1 - - - - - - - - - - - IARROM_ID - 2 - - 0 - 1 - 1 - - - - - - - - - - JLINK_ID - 2 - - 9 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - LMIFTDI_ID - 2 - - 1 - 1 - 1 - - - - - - - - MACRAIGOR_ID - 2 - - 2 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - RDI_ID - 2 - - 1 - 1 - 1 - - - - - - - - - - - - - - - - - THIRDPARTY_ID - 2 - - 0 - 1 - 1 - - - - - - - - - $TOOLKIT_DIR$\plugins\rtos\CMX\CmxArmPlugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\CMX\CmxTinyArmPlugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\OSE\OseEpsilonPlugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\PowerPac\PowerPacRTOS.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXArmPlugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-KA-CSpy.ewplugin - 0 - - - $EW_DIR$\common\plugins\CodeCoverage\CodeCoverage.ENU.ewplugin - 1 - - - $EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin - 0 - - - $EW_DIR$\common\plugins\Profiling\Profiling.ENU.ewplugin - 1 - - - $EW_DIR$\common\plugins\Stack\Stack.ENU.ewplugin - 1 - - - - - ARM - uIP - R - - ARM - - 0 - - C-SPY - 2 - - 15 - 1 - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - ARMSIM_ID - 2 - - 1 - 1 - 0 - - - - - - - - ANGEL_ID - 2 - - 0 - 1 - 0 - - - - - - - - - - - - GDBSERVER_ID - 2 - - 0 - 1 - 0 - - - - - - - - - - - IARROM_ID - 2 - - 0 - 1 - 0 - - - - - - - - - - JLINK_ID - 2 - - 9 - 1 - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - LMIFTDI_ID - 2 - - 1 - 1 - 0 - - - - - - - - MACRAIGOR_ID - 2 - - 2 - 1 - 0 - - - - - - - - - - - - - - - - - - - - - RDI_ID - 2 - - 1 - 1 - 0 - - - - - - - - - - - - - - - - - THIRDPARTY_ID - 2 - - 0 - 1 - 0 - - - - - - - - - $TOOLKIT_DIR$\plugins\rtos\CMX\CmxArmPlugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\CMX\CmxTinyArmPlugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\OSE\OseEpsilonPlugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\PowerPac\PowerPacRTOS.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXArmPlugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-KA-CSpy.ewplugin - 0 - - - $EW_DIR$\common\plugins\CodeCoverage\CodeCoverage.ENU.ewplugin - 1 - - - $EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin - 0 - - - $EW_DIR$\common\plugins\Profiling\Profiling.ENU.ewplugin - 1 - - - $EW_DIR$\common\plugins\Stack\Stack.ENU.ewplugin - 1 - - - - - - diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/RTOSDemo.ewp b/FreeRTOS/Demo/ARM9_STR91X_IAR/RTOSDemo.ewp deleted file mode 100644 index 496c3bc13..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/RTOSDemo.ewp +++ /dev/null @@ -1,4166 +0,0 @@ - - - - 1 - - THUMB - - ARM - - 1 - - General - 3 - - 14 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ICCARM - 2 - - 19 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - AARM - 2 - - 7 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - OBJCOPY - 0 - - 1 - 1 - 1 - - - - - - - - - CUSTOM - 3 - - - - - - - BICOMP - 0 - - - - BUILDACTION - 1 - - - - - - - ILINK - 0 - - 5 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - IARCHIVE - 0 - - 0 - 1 - 1 - - - - - - - BILINK - 0 - - - - - ARM - uIP - D - - ARM - - 1 - - General - 3 - - 14 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ICCARM - 2 - - 19 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - AARM - 2 - - 7 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - OBJCOPY - 0 - - 1 - 1 - 1 - - - - - - - - - CUSTOM - 3 - - - - - - - BICOMP - 0 - - - - BUILDACTION - 1 - - - - - - - ILINK - 0 - - 5 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - IARCHIVE - 0 - - 0 - 1 - 1 - - - - - - - BILINK - 0 - - - - - ARM - lwIP - D - - ARM - - 1 - - General - 3 - - 14 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ICCARM - 2 - - 19 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - AARM - 2 - - 7 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - OBJCOPY - 0 - - 1 - 1 - 1 - - - - - - - - - CUSTOM - 3 - - - - - - - BICOMP - 0 - - - - BUILDACTION - 1 - - - - - - - ILINK - 0 - - 5 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - IARCHIVE - 0 - - 0 - 1 - 1 - - - - - - - BILINK - 0 - - - - - ARM - uIP - R - - ARM - - 0 - - General - 3 - - 14 - 1 - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ICCARM - 2 - - 19 - 1 - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - AARM - 2 - - 7 - 1 - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - OBJCOPY - 0 - - 1 - 1 - 0 - - - - - - - - - CUSTOM - 3 - - - - - - - BICOMP - 0 - - - - BUILDACTION - 1 - - - - - - - ILINK - 0 - - 5 - 1 - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - IARCHIVE - 0 - - 0 - 1 - 0 - - - - - - - BILINK - 0 - - - - - Demo Source - - $PROJ_DIR$\..\Common\Minimal\BlockQ.c - - - $PROJ_DIR$\..\Common\Minimal\comtest.c - - - $PROJ_DIR$\..\Common\Minimal\dynamic.c - - - $PROJ_DIR$\..\Common\Minimal\flash.c - - - $PROJ_DIR$\..\Common\Minimal\flop.c - - - $PROJ_DIR$\..\Common\Minimal\GenQTest.c - - - $PROJ_DIR$\..\..\Source\portable\MemMang\heap_2.c - - - $PROJ_DIR$\..\Common\Minimal\integer.c - - - $PROJ_DIR$\STCode\lcd.c - - - $PROJ_DIR$\main.c - - - $PROJ_DIR$\ParTest\ParTest.c - - - $PROJ_DIR$\..\Common\Minimal\PollQ.c - - - $PROJ_DIR$\..\Common\Minimal\QPeek.c - - - $PROJ_DIR$\..\Common\Minimal\semtest.c - - - $PROJ_DIR$\serial\serial.c - - - $PROJ_DIR$\webserver\uIP_Task.c - - ARM - lwIP - D - - - - - Library Source - - $PROJ_DIR$\Library\include\91x_conf.h - - - $PROJ_DIR$\Library\source\91x_enet.c - - THUMB - - ICCARM - - 19 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ARM - uIP - D - - ICCARM - - 19 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ARM - lwIP - D - - ICCARM - - 19 - 0 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ARM - uIP - R - - ICCARM - - 19 - 1 - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - $PROJ_DIR$\Library\source\91x_fmi.c - - - $PROJ_DIR$\Library\source\91x_gpio.c - - - $PROJ_DIR$\Library\source\91x_it.c - - - $PROJ_DIR$\Library\source\91x_lib.c - - - $PROJ_DIR$\Library\source\91x_scu.c - - - $PROJ_DIR$\Library\source\91x_tim.c - - - $PROJ_DIR$\Library\source\91x_uart.c - - - $PROJ_DIR$\Library\source\91x_vic.c - - - $PROJ_DIR$\Library\source\91x_wdg.c - - - - lwIP - - THUMB - ARM - uIP - D - ARM - uIP - R - - - api - - $PROJ_DIR$\..\Common\ethernet\lwIP\api\api_lib.c - - - $PROJ_DIR$\..\Common\ethernet\lwIP\api\api_msg.c - - - $PROJ_DIR$\..\Common\ethernet\lwIP\api\err.c - - - $PROJ_DIR$\..\Common\ethernet\lwIP\api\sockets.c - - - $PROJ_DIR$\lwip\api\sys_arch.c - - - $PROJ_DIR$\..\Common\ethernet\lwIP\api\tcpip.c - - - - core - - $PROJ_DIR$\..\Common\ethernet\lwIP\core\dhcp.c - - - $PROJ_DIR$\..\Common\ethernet\lwIP\core\inet.c - - - $PROJ_DIR$\..\Common\ethernet\lwIP\core\mem.c - - - $PROJ_DIR$\..\Common\ethernet\lwIP\core\memp.c - - - $PROJ_DIR$\..\Common\ethernet\lwIP\core\netif.c - - - $PROJ_DIR$\..\Common\ethernet\lwIP\core\pbuf.c - - - $PROJ_DIR$\..\Common\ethernet\lwIP\core\raw.c - - - $PROJ_DIR$\..\Common\ethernet\lwIP\core\stats.c - - - $PROJ_DIR$\..\Common\ethernet\lwIP\core\sys.c - - - $PROJ_DIR$\..\Common\ethernet\lwIP\core\tcp.c - - - $PROJ_DIR$\..\Common\ethernet\lwIP\core\tcp_in.c - - - $PROJ_DIR$\..\Common\ethernet\lwIP\core\tcp_out.c - - - $PROJ_DIR$\..\Common\ethernet\lwIP\core\udp.c - - - - ipv4 - - $PROJ_DIR$\..\Common\ethernet\lwIP\core\ipv4\icmp.c - - - $PROJ_DIR$\..\Common\ethernet\lwIP\core\ipv4\ip.c - - - $PROJ_DIR$\..\Common\ethernet\lwIP\core\ipv4\ip_addr.c - - - $PROJ_DIR$\..\Common\ethernet\lwIP\core\ipv4\ip_frag.c - - - - netif - - $PROJ_DIR$\..\Common\ethernet\lwIP\netif\etharp.c - - - $PROJ_DIR$\lwip\netif\ethernetif.c - - - - snmp - - $PROJ_DIR$\..\Common\ethernet\lwIP\core\snmp\asn1_dec.c - - - $PROJ_DIR$\..\Common\ethernet\lwIP\core\snmp\asn1_enc.c - - - $PROJ_DIR$\..\Common\ethernet\lwIP\core\snmp\mib2.c - - - $PROJ_DIR$\..\Common\ethernet\lwIP\core\snmp\mib_structs.c - - - $PROJ_DIR$\..\Common\ethernet\lwIP\core\snmp\msg_in.c - - - $PROJ_DIR$\..\Common\ethernet\lwIP\core\snmp\msg_out.c - - - - WebServer - - $PROJ_DIR$\lwip\lwipWebServer\BasicWEB.c - - - $PROJ_DIR$\lwip\lwipWebServer\fs.c - - - $PROJ_DIR$\lwip\lwipWebServer\httpd.c - - - - - RTOS Source - - $PROJ_DIR$\FreeRTOSConfig.h - - - $PROJ_DIR$\..\..\Source\list.c - - - $PROJ_DIR$\..\..\Source\portable\IAR\STR91x\port.c - - - $PROJ_DIR$\..\..\Source\portable\IAR\STR91x\portasm.s79 - - - $PROJ_DIR$\..\..\Source\queue.c - - - $PROJ_DIR$\..\..\Source\tasks.c - - - - System Files - - $PROJ_DIR$\91x_init.s - - - $PROJ_DIR$\91x_vect.s - - - - uIP - - ARM - lwIP - D - - - $PROJ_DIR$\..\Common\ethernet\uIP\uip-1.0\apps\webserver\http-strings.c - - - $PROJ_DIR$\webserver\httpd-cgi.c - - - $PROJ_DIR$\webserver\httpd-fs.c - - - $PROJ_DIR$\webserver\httpd.c - - - $PROJ_DIR$\..\Common\ethernet\uIP\uip-1.0\uip\psock.c - - - $PROJ_DIR$\..\Common\ethernet\uIP\uip-1.0\uip\timer.c - - - $PROJ_DIR$\..\Common\ethernet\uIP\uip-1.0\uip\uip.c - - - $PROJ_DIR$\..\Common\ethernet\uIP\uip-1.0\uip\uip_arp.c - - - - - diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/RTOSDemo.eww b/FreeRTOS/Demo/ARM9_STR91X_IAR/RTOSDemo.eww deleted file mode 100644 index 239a9381e..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/RTOSDemo.eww +++ /dev/null @@ -1,10 +0,0 @@ - - - - - $WS_DIR$\RTOSDemo.ewp - - - - - diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/ReadMe.txt b/FreeRTOS/Demo/ARM9_STR91X_IAR/ReadMe.txt new file mode 100644 index 000000000..12c70d213 --- /dev/null +++ b/FreeRTOS/Demo/ARM9_STR91X_IAR/ReadMe.txt @@ -0,0 +1 @@ +The third party uIP TCP/IP stack and the demo project that used to be in this directory was removed in FreeRTOS version V10.4.3 due to security vulnerabilities identified in uIP. In a future version this demo may be replaced by a version which does not use TCP/IP or uses FreeRTOS’s own TCP/IP stack in place of the original third party stack. \ No newline at end of file diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/STCode/lcd.c b/FreeRTOS/Demo/ARM9_STR91X_IAR/STCode/lcd.c deleted file mode 100644 index f2f77736f..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/STCode/lcd.c +++ /dev/null @@ -1,1409 +0,0 @@ -/******************** (C) COPYRIGHT 2006 STMicroelectronics ******************** -* File Name : lcd.c -* Author : MCD Application Team -* Date First Issued : 05/18/2006 : Version 1.0 -* Description : This file includes the LCD driver for GXM12232-2SL liquid -* Crystal Display Module of STR75x-EVAL. -******************************************************************************** -* History: -* 05/24/2006 : Version 1.1 -* 05/18/2006 : Version 1.0 -******************************************************************************** -* THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS -* WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. -* AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, -* INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE -* CONTENT OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING -* INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. -*******************************************************************************/ - -/* Includes ------------------------------------------------------------------*/ -#include "91x_lib.h" -#include "lcd.h" -#include "FreeRTOS.h" -#include "task.h" - -/* Private typedef -----------------------------------------------------------*/ -static GPIO_InitTypeDef GPIO_InitStructure; - -/* Private define ------------------------------------------------------------*/ -/* Private macro -------------------------------------------------------------*/ -/* Private variables ---------------------------------------------------------*/ - /* Global variable to set the written text color: used for LCD_Printf */ - TextColorMode_TypeDef TextMode=BlackText; - - /* ASCII Table: each character is 7 column (7dots large) on two pages (16dots high) */ - /* 7 column character: Two 8bit data to display one column*/ - u8 AsciiDotsTable[1778] = { - /* ASCII 0 */ 0x1f,0xe0,0x10,0x20,0x10,0x20,0x10,0x20,0x10,0x20,0x1f,0xe0,0x00,0x00, - /* ASCII 1 */ 0x1f,0xe0,0x10,0x20,0x10,0x20,0x10,0x20,0x10,0x20,0x1f,0xe0,0x00,0x00, - /* ASCII 2 */ 0x1f,0xe0,0x10,0x20,0x10,0x20,0x10,0x20,0x10,0x20,0x1f,0xe0,0x00,0x00, - /* ASCII 3 */ 0x1f,0xe0,0x10,0x20,0x10,0x20,0x10,0x20,0x10,0x20,0x1f,0xe0,0x00,0x00, - /* ASCII 4 */ 0x1f,0xe0,0x10,0x20,0x10,0x20,0x10,0x20,0x10,0x20,0x1f,0xe0,0x00,0x00, - /* ASCII 5 */ 0x1f,0xe0,0x10,0x20,0x10,0x20,0x10,0x20,0x10,0x20,0x1f,0xe0,0x00,0x00, - /* ASCII 6 */ 0x1f,0xe0,0x10,0x20,0x10,0x20,0x10,0x20,0x10,0x20,0x1f,0xe0,0x00,0x00, - /* ASCII 7 */ 0x1f,0xe0,0x10,0x20,0x10,0x20,0x10,0x20,0x10,0x20,0x1f,0xe0,0x00,0x00, - /* ASCII 8 */ 0x1f,0xe0,0x10,0x20,0x10,0x20,0x10,0x20,0x10,0x20,0x1f,0xe0,0x00,0x00, - /* ASCII 9 */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - /* ASCII 10 */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - /* ASCII 11 */ 0x1f,0xe0,0x10,0x20,0x10,0x20,0x10,0x20,0x10,0x20,0x1f,0xe0,0x00,0x00, - /* ASCII 12 */ 0x1f,0xe0,0x10,0x20,0x10,0x20,0x10,0x20,0x10,0x20,0x1f,0xe0,0x00,0x00, - /* ASCII 13 */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - /* ASCII 14 */ 0x1f,0xe0,0x10,0x20,0x10,0x20,0x10,0x20,0x10,0x20,0x1f,0xe0,0x00,0x00, - /* ASCII 15 */ 0x1f,0xe0,0x10,0x20,0x10,0x20,0x10,0x20,0x10,0x20,0x1f,0xe0,0x00,0x00, - /* ASCII 16 */ 0x1f,0xe0,0x10,0x20,0x10,0x20,0x10,0x20,0x10,0x20,0x1f,0xe0,0x00,0x00, - /* ASCII 17 */ 0x1f,0xe0,0x10,0x20,0x10,0x20,0x10,0x20,0x10,0x20,0x1f,0xe0,0x00,0x00, - /* ASCII 18 */ 0x1f,0xe0,0x10,0x20,0x10,0x20,0x10,0x20,0x10,0x20,0x1f,0xe0,0x00,0x00, - /* ASCII 19 */ 0x1f,0xe0,0x10,0x20,0x10,0x20,0x10,0x20,0x10,0x20,0x1f,0xe0,0x00,0x00, - /* ASCII 20 */ 0x1f,0xe0,0x10,0x20,0x10,0x20,0x10,0x20,0x10,0x20,0x1f,0xe0,0x00,0x00, - /* ASCII 21 */ 0x1f,0xe0,0x10,0x20,0x10,0x20,0x10,0x20,0x10,0x20,0x1f,0xe0,0x00,0x00, - /* ASCII 22 */ 0x1f,0xe0,0x10,0x20,0x10,0x20,0x10,0x20,0x10,0x20,0x1f,0xe0,0x00,0x00, - /* ASCII 23 */ 0x1f,0xe0,0x10,0x20,0x10,0x20,0x10,0x20,0x10,0x20,0x1f,0xe0,0x00,0x00, - /* ASCII 24 */ 0x1f,0xe0,0x10,0x20,0x10,0x20,0x10,0x20,0x10,0x20,0x1f,0xe0,0x00,0x00, - /* ASCII 25 */ 0x1f,0xe0,0x10,0x20,0x10,0x20,0x10,0x20,0x10,0x20,0x1f,0xe0,0x00,0x00, - /* ASCII 26 */ 0x1f,0xe0,0x10,0x20,0x10,0x20,0x10,0x20,0x10,0x20,0x1f,0xe0,0x00,0x00, - /* ASCII 27 */ 0x1f,0xe0,0x10,0x20,0x10,0x20,0x10,0x20,0x10,0x20,0x1f,0xe0,0x00,0x00, - /* ASCII 28 */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - /* ASCII 29 */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - /* ASCII 30 */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - /* ASCII 31 */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - /* ASCII 32 */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - /* ASCII 33 */ 0x00,0x00,0x00,0x00,0x00,0x00,0x13,0xe0,0x00,0x00,0x00,0x00,0x00,0x00, - /* ASCII 34 */ 0x00,0x00,0x00,0xe0,0x00,0x20,0x00,0x00,0x00,0xe0,0x00,0x20,0x00,0x00, - /* ASCII 35 */ 0x00,0x00,0x35,0x00,0x0f,0x80,0x35,0x60,0x0f,0x80,0x05,0x60,0x00,0x00, - /* ASCII 36 */ 0x00,0x00,0x0d,0x80,0x0a,0x40,0x3a,0x60,0x06,0x40,0x00,0x00,0x00,0x00, - /* ASCII 37 */ 0x00,0x00,0x02,0x40,0x02,0xa0,0x0a,0x40,0x15,0x00,0x09,0x00,0x00,0x00, - /* ASCII 38 */ 0x00,0x00,0x0c,0x00,0x13,0x00,0x14,0x80,0x08,0x80,0x14,0x00,0x00,0x00, - /* ASCII 39 */ 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xe0,0x00,0x00,0x00,0x00,0x00,0x00, - /* ASCII 40 */ 0x00,0x00,0x00,0x00,0x00,0x00,0x1f,0x80,0x60,0x60,0x00,0x00,0x00,0x00, - /* ASCII 41 */ 0x00,0x00,0x00,0x00,0x60,0x60,0x1f,0x80,0x00,0x00,0x00,0x00,0x00,0x00, - /* ASCII 42 */ 0x00,0x00,0x00,0x40,0x03,0x40,0x00,0xe0,0x03,0x40,0x00,0x40,0x00,0x00, - /* ASCII 43 */ 0x02,0x00,0x02,0x00,0x02,0x00,0x1f,0xc0,0x02,0x00,0x02,0x00,0x02,0x00, - /* ASCII 44 */ 0x00,0x00,0x00,0x00,0x60,0x00,0x38,0x00,0x08,0x00,0x00,0x00,0x00,0x00, - /* ASCII 45 */ 0x00,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x00,0x00, - /* ASCII 46 */ 0x00,0x00,0x00,0x00,0x18,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - /* ASCII 47 */ 0x00,0x00,0x20,0x00,0x18,0x00,0x06,0x00,0x01,0x80,0x00,0x60,0x00,0x00, - /* ASCII 48 */ 0x00,0x00,0x0f,0xc0,0x10,0x20,0x10,0x20,0x10,0x20,0x0f,0xc0,0x00,0x00, - /* ASCII 49 */ 0x00,0x00,0x10,0x00,0x10,0x20,0x1f,0xe0,0x10,0x00,0x10,0x00,0x00,0x00, - /* ASCII 50 */ 0x00,0x00,0x18,0x40,0x14,0x20,0x12,0x20,0x11,0x20,0x18,0xc0,0x00,0x00, - /* ASCII 51 */ 0x00,0x00,0x08,0x40,0x10,0x20,0x11,0x20,0x11,0x20,0x0e,0xc0,0x00,0x00, - /* ASCII 52 */ 0x00,0x00,0x06,0x00,0x05,0x00,0x04,0xc0,0x14,0x20,0x1f,0xe0,0x14,0x00, - /* ASCII 53 */ 0x00,0x00,0x08,0x00,0x11,0xe0,0x11,0x20,0x11,0x20,0x0e,0x20,0x00,0x00, - /* ASCII 54 */ 0x00,0x00,0x0f,0x80,0x11,0x40,0x11,0x20,0x11,0x20,0x0e,0x20,0x00,0x00, - /* ASCII 55 */ 0x00,0x00,0x00,0x60,0x00,0x20,0x18,0x20,0x07,0x20,0x00,0xe0,0x00,0x00, - /* ASCII 56 */ 0x00,0x00,0x0e,0xc0,0x11,0x20,0x11,0x20,0x11,0x20,0x0e,0xc0,0x00,0x00, - /* ASCII 57 */ 0x00,0x00,0x11,0xc0,0x12,0x20,0x12,0x20,0x0a,0x20,0x07,0xc0,0x00,0x00, - /* ASCII 58 */ 0x00,0x00,0x00,0x00,0x19,0x80,0x19,0x80,0x00,0x00,0x00,0x00,0x00,0x00, - /* ASCII 59 */ 0x00,0x00,0x00,0x00,0x30,0x00,0x19,0x80,0x09,0x80,0x00,0x00,0x00,0x00, - /* ASCII 60 */ 0x02,0x00,0x05,0x00,0x05,0x00,0x08,0x80,0x10,0x40,0x10,0x40,0x00,0x00, - /* ASCII 61 */ 0x00,0x00,0x05,0x00,0x05,0x00,0x05,0x00,0x05,0x00,0x05,0x00,0x00,0x00, - /* ASCII 62 */ 0x10,0x40,0x10,0x40,0x08,0x80,0x05,0x00,0x05,0x00,0x02,0x00,0x00,0x00, - /* ASCII 63 */ 0x00,0x00,0x00,0x00,0x10,0x80,0x14,0x40,0x02,0x40,0x01,0x80,0x00,0x00, - /* ASCII 64 */ 0x00,0x00,0x1f,0xe0,0x20,0x10,0x23,0x10,0x24,0x90,0x17,0xe0,0x00,0x00, - /* ASCII 65 */ 0x10,0x00,0x1c,0x00,0x17,0xa0,0x04,0x60,0x17,0x80,0x1c,0x00,0x10,0x00, - /* ASCII 66 */ 0x10,0x20,0x1f,0xe0,0x11,0x20,0x11,0x20,0x11,0x20,0x0e,0xc0,0x00,0x00, - /* ASCII 67 */ 0x00,0x00,0x0f,0xc0,0x10,0x20,0x10,0x20,0x10,0x20,0x08,0x60,0x00,0x00, - /* ASCII 68 */ 0x10,0x20,0x1f,0xe0,0x10,0x20,0x10,0x20,0x08,0x40,0x07,0x80,0x00,0x00, - /* ASCII 69 */ 0x10,0x20,0x1f,0xe0,0x11,0x20,0x13,0xa0,0x10,0x20,0x18,0x60,0x00,0x00, - /* ASCII 70 */ 0x00,0x00,0x10,0x20,0x1f,0xe0,0x11,0x20,0x03,0xa0,0x00,0x20,0x00,0x60, - /* ASCII 71 */ 0x00,0x00,0x0f,0xc0,0x10,0x20,0x10,0x20,0x12,0x20,0x0e,0x60,0x02,0x00, - /* ASCII 72 */ 0x10,0x20,0x1f,0xe0,0x11,0x20,0x01,0x00,0x11,0x20,0x1f,0xe0,0x10,0x20, - /* ASCII 73 */ 0x00,0x00,0x10,0x20,0x10,0x20,0x1f,0xe0,0x10,0x20,0x10,0x20,0x00,0x00, - /* ASCII 74 */ 0x00,0x00,0x0e,0x00,0x10,0x20,0x10,0x20,0x0f,0xe0,0x00,0x20,0x00,0x00, - /* ASCII 75 */ 0x10,0x20,0x1f,0xe0,0x12,0x20,0x03,0x00,0x04,0xa0,0x18,0x60,0x10,0x20, - /* ASCII 76 */ 0x00,0x00,0x10,0x20,0x1f,0xe0,0x10,0x20,0x10,0x00,0x1c,0x00,0x00,0x00, - /* ASCII 77 */ 0x10,0x20,0x1f,0xe0,0x10,0xe0,0x03,0x00,0x10,0xe0,0x1f,0xe0,0x10,0x20, - /* ASCII 78 */ 0x10,0x20,0x1f,0xe0,0x10,0xe0,0x07,0x00,0x18,0x20,0x1f,0xe0,0x00,0x20, - /* ASCII 79 */ 0x00,0x00,0x0f,0xc0,0x10,0x20,0x10,0x20,0x10,0x20,0x0f,0xc0,0x00,0x00, - /* ASCII 80 */ 0x00,0x00,0x10,0x20,0x1f,0xe0,0x12,0x20,0x02,0x20,0x01,0xc0,0x00,0x00, - /* ASCII 81 */ 0x00,0x00,0x0f,0xc0,0x10,0x20,0x30,0x20,0x30,0x20,0x2f,0xc0,0x00,0x00, - /* ASCII 82 */ 0x10,0x20,0x1f,0xe0,0x12,0x20,0x02,0x20,0x06,0x20,0x09,0xc0,0x10,0x00, - /* ASCII 83 */ 0x00,0x00,0x18,0xc0,0x09,0x20,0x11,0x20,0x11,0x40,0x0e,0x60,0x00,0x00, - /* ASCII 84 */ 0x00,0x60,0x00,0x20,0x10,0x20,0x1f,0xe0,0x10,0x20,0x00,0x20,0x00,0x60, - /* ASCII 85 */ 0x00,0x20,0x0f,0xe0,0x10,0x20,0x10,0x00,0x10,0x20,0x0f,0xe0,0x00,0x20, - /* ASCII 86 */ 0x00,0x20,0x00,0xe0,0x07,0x20,0x18,0x00,0x07,0x20,0x00,0xe0,0x00,0x20, - /* ASCII 87 */ 0x00,0x20,0x0f,0xe0,0x10,0x20,0x0f,0x00,0x10,0x20,0x0f,0xe0,0x00,0x20, - /* ASCII 88 */ 0x10,0x20,0x18,0x60,0x04,0x80,0x03,0x00,0x04,0x80,0x18,0x60,0x10,0x20, - /* ASCII 89 */ 0x00,0x20,0x00,0x60,0x11,0xa0,0x1e,0x00,0x11,0xa0,0x00,0x60,0x00,0x20, - /* ASCII 90 */ 0x00,0x00,0x18,0x60,0x14,0x20,0x13,0x20,0x10,0xa0,0x18,0x60,0x00,0x00, - /* ASCII 91 */ 0x00,0x00,0x00,0x00,0x7f,0xe0,0x40,0x20,0x40,0x20,0x00,0x00,0x00,0x00, - /* ASCII 92 */ 0x00,0x00,0x00,0x20,0x01,0xc0,0x06,0x00,0x38,0x00,0x00,0x00,0x00,0x00, - /* ASCII 93 */ 0x00,0x00,0x00,0x00,0x40,0x20,0x40,0x20,0x7f,0xe0,0x00,0x00,0x00,0x00, - /* ASCII 94 */ 0x00,0x00,0x01,0x00,0x00,0x80,0x00,0x60,0x00,0x80,0x01,0x00,0x00,0x00, - /* ASCII 95 */ 0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00, - /* ASCII 96 */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x40,0x00,0x00,0x00,0x00, - /* ASCII 97 */ 0x00,0x00,0x0d,0x00,0x12,0x80,0x12,0x80,0x12,0x80,0x1f,0x00,0x10,0x00, - /* ASCII 98 */ 0x10,0x20,0x1f,0xe0,0x11,0x00,0x10,0x80,0x10,0x80,0x0f,0x00,0x00,0x00, - /* ASCII 99 */ 0x00,0x00,0x0f,0x00,0x10,0x80,0x10,0x80,0x10,0x80,0x09,0x80,0x00,0x00, - /* ASCII 100 */ 0x00,0x00,0x0f,0x00,0x10,0x80,0x10,0x80,0x11,0x20,0x1f,0xe0,0x10,0x00, - /* ASCII 101 */ 0x00,0x00,0x0f,0x00,0x12,0x80,0x12,0x80,0x12,0x80,0x13,0x00,0x00,0x00, - /* ASCII 102 */ 0x00,0x00,0x10,0x80,0x1f,0xc0,0x10,0xa0,0x10,0xa0,0x10,0xa0,0x00,0x00, - /* ASCII 103 */ 0x00,0x00,0x0f,0x00,0x50,0x80,0x50,0x80,0x51,0x00,0x3f,0x80,0x00,0x80, - /* ASCII 104 */ 0x10,0x20,0x1f,0xe0,0x11,0x00,0x00,0x80,0x10,0x80,0x1f,0x00,0x10,0x00, - /* ASCII 105 */ 0x00,0x00,0x10,0x80,0x10,0x80,0x1f,0xa0,0x10,0x00,0x10,0x00,0x00,0x00, - /* ASCII 106 */ 0x00,0x00,0x40,0x80,0x40,0x80,0x40,0xa0,0x3f,0x80,0x00,0x00,0x00,0x00, - /* ASCII 107 */ 0x10,0x20,0x1f,0xe0,0x02,0x00,0x16,0x80,0x19,0x80,0x10,0x80,0x00,0x00, - /* ASCII 108 */ 0x00,0x00,0x10,0x00,0x10,0x20,0x1f,0xe0,0x10,0x00,0x10,0x00,0x00,0x00, - /* ASCII 109 */ 0x10,0x80,0x1f,0x80,0x10,0x80,0x1f,0x00,0x10,0x80,0x1f,0x00,0x10,0x00, - /* ASCII 110 */ 0x10,0x80,0x1f,0x80,0x11,0x00,0x00,0x80,0x10,0x80,0x1f,0x00,0x10,0x00, - /* ASCII 111 */ 0x00,0x00,0x0f,0x00,0x10,0x80,0x10,0x80,0x10,0x80,0x0f,0x00,0x00,0x00, - /* ASCII 112 */ 0x40,0x80,0x7f,0x80,0x51,0x00,0x10,0x80,0x10,0x80,0x0f,0x00,0x00,0x00, - /* ASCII 113 */ 0x00,0x00,0x0f,0x00,0x10,0x80,0x10,0x80,0x51,0x00,0x7f,0x80,0x40,0x80, - /* ASCII 114 */ 0x00,0x00,0x10,0x80,0x1f,0x80,0x11,0x00,0x10,0x80,0x10,0x80,0x00,0x00, - /* ASCII 115 */ 0x00,0x00,0x19,0x00,0x12,0x80,0x12,0x80,0x12,0x80,0x0d,0x80,0x00,0x00, - /* ASCII 116 */ 0x00,0x00,0x00,0x80,0x0f,0xc0,0x10,0x80,0x10,0x80,0x10,0x80,0x08,0x00, - /* ASCII 117 */ 0x00,0x80,0x0f,0x80,0x10,0x00,0x10,0x00,0x08,0x80,0x1f,0x80,0x10,0x00, - /* ASCII 118 */ 0x00,0x80,0x03,0x80,0x0c,0x80,0x10,0x00,0x0c,0x80,0x03,0x80,0x00,0x80, - /* ASCII 119 */ 0x00,0x80,0x0f,0x80,0x10,0x80,0x0e,0x00,0x10,0x80,0x0f,0x80,0x00,0x80, - /* ASCII 120 */ 0x10,0x80,0x19,0x80,0x06,0x00,0x06,0x00,0x19,0x80,0x10,0x80,0x00,0x00, - /* ASCII 121 */ 0x00,0x80,0x41,0x80,0x46,0x80,0x78,0x00,0x4c,0x80,0x03,0x80,0x00,0x80, - /* ASCII 122 */ 0x00,0x00,0x19,0x80,0x14,0x80,0x12,0x80,0x11,0x80,0x18,0x80,0x00,0x00, - /* ASCII 123 */ 0x00,0x00,0x00,0x00,0x04,0x00,0x3b,0xc0,0x40,0x20,0x00,0x00,0x00,0x00, - /* ASCII 124 */ 0x00,0x00,0x00,0x00,0x00,0x00,0x3f,0xe0,0x00,0x00,0x00,0x00,0x00,0x00, - /* ASCII 125 */ 0x00,0x00,0x00,0x00,0x40,0x20,0x3b,0xc0,0x04,0x00,0x00,0x00,0x00,0x00, - /* ASCII 126 */ 0x00,0x00,0x04,0x00,0x02,0x00,0x04,0x00,0x04,0x00,0x02,0x00,0x00,0x00}; - -/* Private function prototypes -----------------------------------------------*/ -/* Private functions ---------------------------------------------------------*/ - -/******************************************************************************* -* Function Name : LCD_DataLinesConfig -* Description : Configure data lines D0~D7 (P8.0~P8.7) in Input Floating mode -* for read from LCD or in Output Push-Pull mode for write on LCD -* Input : - Mode: specifies the configuration mode for data lines D0~D7 -* - Input: configure in Input Floating mode -* - Output: configure in Output Push-Pul mode -* Output : None -* Return : None -*******************************************************************************/ -void LCD_DataLinesConfig(DataConfigMode_TypeDef Mode) -{ - GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All; - if (Mode == Input) - { - /* Configure D0~D7 lines (P8.0 ->P8.7) as Input */ - GPIO_InitStructure.GPIO_Direction = GPIO_PinInput; - } - else - { - /* Configure D0~D7 lines in Output Push-Pull mode */ - GPIO_InitStructure.GPIO_Direction = GPIO_PinOutput ; - GPIO_InitStructure.GPIO_Type = GPIO_Type_PushPull ; - } - GPIO_Init(GPIO8, &GPIO_InitStructure); -} - -/******************************************************************************* -* Function Name : LCD_DataLinesWrite -* Description : Write a value on D0~D7 (P8.0~P8.7) -* Input : - GPIOx: GPIO port to write on. It could be -* - PortVal: value to write -* Output : None -* Return : None. -*******************************************************************************/ -void LCD_DataLinesWrite(GPIO_TypeDef* GPIOx, u32 PortVal) -{ - GPIOx->DR[0x3FC] = PortVal; -} - -/******************************************************************************* -* Function Name : LCD_CtrlLinesConfig -* Description : Configure control lines E2, E1, RW, DI (P9.4~P9.7) in -* Output Push-Pull mode. -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void LCD_CtrlLinesConfig(void) -{ - /* Configure E2, E1, RW, DI lines (P9.4~P9.7) in Output Push-Pull mode */ - GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7; - GPIO_InitStructure.GPIO_Direction = GPIO_PinOutput ; - GPIO_InitStructure.GPIO_Type = GPIO_Type_PushPull ; - GPIO_Init(GPIO9, &GPIO_InitStructure); -} - -/******************************************************************************* -* Function Name : LCD_CtrlLinesWrite -* Description : Set or reset control lines E2, E1, RW, DI (P9.4~P9.7). -* Input : - GPIOx: where x can be 0,1 or 2 to select the GPIO peripheral. -* - CtrlPins: the Control line. This parameter can be: -* - CtrlPin_E2: Enabe clock signal for Slave -* - CtrlPin_E1: Enabe clock signal for Master -* - CtrlPin_RW: Read/Write control line -* - CtrlPin_DI: -* Output : None -* Return : None -*******************************************************************************/ -void LCD_CtrlLinesWrite(GPIO_TypeDef* GPIOx, u32 CtrlPins, BitAction BitVal) -{ - /* Set or Reset the control line */ - if(BitVal == Bit_SET) - { - GPIOx->DR[CtrlPins <<2] = CtrlPins; - } - else - { - GPIOx->DR[CtrlPins <<2] = 0x00; - } -} - -/******************************************************************************* -* Function Name : LCD_CheckMasterStatus -* Description : Check whether master LCD is busy or not -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void LCD_CheckMasterStatus(void) -{ - u8 MasterStatus = 0; - - /* Configure Data lines as Input */ - LCD_DataLinesConfig(Input); - /* Start the master read sequence */ - LCD_CtrlLinesWrite(GPIO9, CtrlPin_E1, Bit_RESET); /* E1 = 0 */ - LCD_CtrlLinesWrite(GPIO9, CtrlPin_RW, Bit_SET); /* RW = 1 */ - LCD_CtrlLinesWrite(GPIO9, CtrlPin_DI, Bit_RESET); /* DI = 0 */ - LCD_CtrlLinesWrite(GPIO9, CtrlPin_E1, Bit_SET); /* E1 = 1 */ - MasterStatus = GPIO_Read(GPIO8); - LCD_CtrlLinesWrite(GPIO9, CtrlPin_E1, Bit_RESET); /* E1 = 0 */ - - /* Wait until BF is cleared */ - while ((MasterStatus & 0x80)) - { - vTaskDelay( 1 ); - LCD_CtrlLinesWrite(GPIO9, CtrlPin_E1, Bit_SET); /* E1 = 1 */ - MasterStatus = GPIO_Read(GPIO8); - LCD_CtrlLinesWrite(GPIO9, CtrlPin_E1, Bit_RESET); /* E1 = 0 */ - } -} - -/******************************************************************************* -* Function Name : LCD_CheckSlaveStatus -* Description : Check whether slave LCD is busy or not -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void LCD_CheckSlaveStatus(void) -{ - u8 SlaveStatus = 0; - - /* Configure Data lines as Input */ - LCD_DataLinesConfig(Input); - /* Start the slave read sequence */ - LCD_CtrlLinesWrite(GPIO9, CtrlPin_E2, Bit_RESET); /* E2 = 0 */ - LCD_CtrlLinesWrite(GPIO9, CtrlPin_RW, Bit_SET); /* RW = 1 */ - LCD_CtrlLinesWrite(GPIO9, CtrlPin_DI, Bit_RESET); /* DI = 0 */ - LCD_CtrlLinesWrite(GPIO9, CtrlPin_E2, Bit_SET); /* E2 = 1 */ - SlaveStatus = GPIO_Read(GPIO8); - LCD_CtrlLinesWrite(GPIO9, CtrlPin_E2, Bit_RESET); /* E2 = 0 */ - - /* Wait until BF is cleared */ - while ((SlaveStatus & 0x80)) - { - vTaskDelay( 1 ); - LCD_CtrlLinesWrite(GPIO9, CtrlPin_E2, Bit_SET); /* E2 = 1 */ - SlaveStatus = GPIO_Read(GPIO8); - LCD_CtrlLinesWrite(GPIO9, CtrlPin_E2, Bit_RESET); /* E2 = 0 */ - } -} - -/******************************************************************************* -* Function Name : LCD_SendMasterCmd -* Description : Send one byte command to master LCD. -* Input : - Cmd: the user expected command to send to master LCD -* Output : None -* Return : None -*******************************************************************************/ -void LCD_SendMasterCmd(u8 Cmd) -{ - /* Check the master status */ - LCD_CheckMasterStatus(); - /* Configure Data lines as Output */ - LCD_DataLinesConfig(Output); - /* Start the master send command sequence */ - LCD_CtrlLinesWrite(GPIO9, CtrlPin_E1, Bit_RESET); /* E1 = 0 */ - LCD_CtrlLinesWrite(GPIO9, CtrlPin_RW, Bit_RESET); /* RW = 0 */ - LCD_CtrlLinesWrite(GPIO9, CtrlPin_DI, Bit_RESET); /* DI = 0 */ - LCD_CtrlLinesWrite(GPIO9, CtrlPin_E1, Bit_SET); /* E1 = 1 */ - /* Write master command */ - LCD_DataLinesWrite(GPIO8, (u32)Cmd); - LCD_CtrlLinesWrite(GPIO9, CtrlPin_E1, Bit_RESET); /* E1 = 0 */ -} - -/******************************************************************************* -* Function Name : LCD_SendSlaveCmd -* Description : Send one byte command to slave LCD -* Input : - Cmd: the user expected command to send to slave LCD. -* Output : None -* Return : None -*******************************************************************************/ -void LCD_SendSlaveCmd(u8 Cmd) -{ - /* Check the slave status */ - LCD_CheckSlaveStatus(); - /* Configure Data lines as Output */ - LCD_DataLinesConfig(Output); - /* Start the slave send command sequence */ - LCD_CtrlLinesWrite(GPIO9, CtrlPin_E2, Bit_RESET); /* E2 = 0 */ - LCD_CtrlLinesWrite(GPIO9, CtrlPin_RW, Bit_RESET); /* RW = 0 */ - LCD_CtrlLinesWrite(GPIO9, CtrlPin_DI, Bit_RESET); /* DI = 0 */ - LCD_CtrlLinesWrite(GPIO9, CtrlPin_E2, Bit_SET); /* E2 = 1 */ - /* Write slave command */ - LCD_DataLinesWrite(GPIO8, (u32)Cmd); - LCD_CtrlLinesWrite(GPIO9, CtrlPin_E2, Bit_RESET); /* E2 = 0 */ -} - -/******************************************************************************* -* Function Name : LCD_SendMasterData -* Description : Display one byte data to master LCD. -* Input : - Data: the user expected data to display on master LCD. -* Output : None -* Return : None -*******************************************************************************/ -void LCD_SendMasterData(u8 Data) -{ - /* Check the master status */ - LCD_CheckMasterStatus(); - /* Configure Data lines as Output */ - LCD_DataLinesConfig(Output); - /* Start the master send data sequence */ - LCD_CtrlLinesWrite(GPIO9, CtrlPin_E1, Bit_RESET); /* E1 = 0 */ - LCD_CtrlLinesWrite(GPIO9, CtrlPin_RW, Bit_RESET); /* RW = 0 */ - LCD_CtrlLinesWrite(GPIO9, CtrlPin_DI, Bit_SET); /* DI = 1 */ - LCD_CtrlLinesWrite(GPIO9, CtrlPin_E1, Bit_SET); /* E1 = 1 */ - /* Write data to the master */ - LCD_DataLinesWrite(GPIO8, (u32)Data); - LCD_CtrlLinesWrite(GPIO9, CtrlPin_E1, Bit_RESET); /* E1 = 0 */ -} - -/******************************************************************************* -* Function Name : LCD_ReadMasterData -* Description : Read master byte data displayed on master LCD. -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -u32 LCD_ReadMasterData(void) -{ - u32 MasterData = 0; - - /* Check the master status */ - LCD_CheckMasterStatus(); - /* Configure Data lines as Input */ - LCD_DataLinesConfig(Input); - /* Start the master read data sequence */ - LCD_CtrlLinesWrite(GPIO9, CtrlPin_E1, Bit_RESET); /* E1 = 0 */ - LCD_CtrlLinesWrite(GPIO9, CtrlPin_RW, Bit_SET); /* RW = 1 */ - LCD_CtrlLinesWrite(GPIO9, CtrlPin_DI, Bit_SET); /* DI = 1 */ - LCD_CtrlLinesWrite(GPIO9, CtrlPin_E1, Bit_SET); /* E1 = 1 */ - /* Read data from the master */ - MasterData = (GPIO_Read(GPIO8)); - LCD_CtrlLinesWrite(GPIO9, CtrlPin_E1, Bit_RESET); /* E1 = 0 */ - /* Read the master returned data */ - return MasterData; -} - -/******************************************************************************* -* Function Name : LCD_SendSlaveData -* Description : Display one byte data to slave LCD. -* Input : - Data: the user expected data to display on slave LCD. -* Output : None -* Return : None -*******************************************************************************/ -void LCD_SendSlaveData(u8 Data) -{ - /* Check the slave status */ - LCD_CheckSlaveStatus(); - /* Configure Data lines as Output */ - LCD_DataLinesConfig(Output); - /* Start the slave send data sequence */ - LCD_CtrlLinesWrite(GPIO9, CtrlPin_E2, Bit_RESET); /* E2 = 0 */ - LCD_CtrlLinesWrite(GPIO9, CtrlPin_RW, Bit_RESET); /* RW = 0 */ - LCD_CtrlLinesWrite(GPIO9, CtrlPin_DI, Bit_SET); /* DI = 1 */ - LCD_CtrlLinesWrite(GPIO9, CtrlPin_E2, Bit_SET); /* E2 = 1 */ - /* Write data to the slave */ - LCD_DataLinesWrite(GPIO8, (u32)Data); - LCD_CtrlLinesWrite(GPIO9, CtrlPin_E2, Bit_RESET); /* E2 = 0 */ -} - -/******************************************************************************* -* Function Name : LCD_ReadSlaveData -* Description : Read slave byte data displayed on slave LCD. -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -u32 LCD_ReadSlaveData(void) -{ - u32 SlaveData = 0; - - /* Check the slave status */ - LCD_CheckSlaveStatus(); - /* Configure Data lines as Input */ - LCD_DataLinesConfig(Input); - /* Start the slave read data sequence */ - LCD_CtrlLinesWrite(GPIO9, CtrlPin_E2, Bit_RESET); /* E2 = 0 */ - LCD_CtrlLinesWrite(GPIO9, CtrlPin_RW, Bit_SET); /* RW = 1 */ - LCD_CtrlLinesWrite(GPIO9, CtrlPin_DI, Bit_SET); /* DI = 1 */ - LCD_CtrlLinesWrite(GPIO9, CtrlPin_E2, Bit_SET); /* E2 = 1 */ - /* Read data from the slave */ - SlaveData = GPIO_Read(GPIO8); - LCD_CtrlLinesWrite(GPIO9, CtrlPin_E2, Bit_RESET); /* E2 = 0 */ - /* Read the slave returned data */ - return SlaveData; -} - -/******************************************************************************* -* Function Name : LCD_Init -* Description : Initialize master and slave LCD. -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void LCD_Init(void) -{ - /* Enable GPIO Clock */ - - - /* Configure control lines signals as output mode */ - LCD_CtrlLinesConfig(); - - /* Master LCD Init */ - LCD_SendMasterCmd(SOFTWARE_RESET); - LCD_SendMasterCmd(DISPLAY_OFF); - LCD_SendMasterCmd(DYNAMIC_DRIVE); - LCD_SendMasterCmd(DUTY_CYCLE); - LCD_SendMasterCmd(CLOCKWISE_OUTPUT); - LCD_SendMasterCmd(READ_MODIFY_WRITE_OFF); - LCD_SendMasterCmd(START_COLUMN); /* Set master column address to 0 */ - LCD_SendMasterCmd(START_LINE); /* Set master display start line to 0 */ - LCD_SendMasterCmd(DISPLAY_ON ); - - /* Slave LCD Init */ - LCD_SendSlaveCmd(SOFTWARE_RESET); - LCD_SendSlaveCmd(DISPLAY_OFF); - LCD_SendSlaveCmd(DYNAMIC_DRIVE); - LCD_SendSlaveCmd(DUTY_CYCLE); - LCD_SendSlaveCmd(CLOCKWISE_OUTPUT); - LCD_SendSlaveCmd(READ_MODIFY_WRITE_OFF); - LCD_SendSlaveCmd(START_COLUMN ); /* Set slave column address to 0 */ - LCD_SendSlaveCmd(START_LINE); /* Set slave display start line to 0 */ - LCD_SendSlaveCmd(DISPLAY_ON); - - /* Clear LCD */ - LCD_Clear(); - /* Set current Page to 0 for Master and Slave LCDs */ - LCD_SetSlavePage(0); - LCD_SetMasterPage(0); -} - -/******************************************************************************* -* Function Name : LCD_SetSlavePage -* Description : Set the display page of slave LCD, the page range is 0 to 3, -* make sure the input will not exceed this range ,otherwise it -* will reach a undecided result. -* Input : - Page: specifies the expected display page of slave LCD -* Output : None -* Return : None -*******************************************************************************/ -void LCD_SetSlavePage(u8 Page) -{ -static u8 ucLastPage = 255; - - /* Set Slave page */ - if( Page != ucLastPage ) - { - LCD_SendSlaveCmd(0xB8|Page); - ucLastPage = Page; - } -} - -/******************************************************************************* -* Function Name : LCD_SetMasterPage -* Description : Set the display page of master LCD, the page range is 0 to 3, -* make sure the input will not exceed this range ,otherwise it -* will reach a undecided result. -* Input : - Page: specifies the expected display page of master LCD -* Output : None -* Return : None -*******************************************************************************/ -void LCD_SetMasterPage(u8 Page) -{ -static u8 ulLastPage = 255; - - /* Set Master page */ - if( Page != ulLastPage ) - { - LCD_SendMasterCmd(0xB8|Page); - ulLastPage = Page; - } -} - -/******************************************************************************* -* Function Name : SetAddress -* Description : Set the display column of slave LCD. Column range is 0 to 61. -* Input : - Address: specifies the expected display column of slave LCD -* Output : None -* Return : None -*******************************************************************************/ -void LCD_SetSlaveColumn(u8 Address) -{ - /* Set Slave column address */ - LCD_SendSlaveCmd(Address&0x7F); -} - -/******************************************************************************* -* Function Name : LCD_SetMasterColumn -* Description : Set the display column of master LCD. Column range is 0 to 61. -* Input : - Address: specifies the expected display column of slave LCD -* Output : None -* Return : None -*******************************************************************************/ -void LCD_SetMasterColumn(u8 Address) -{ - /* Set Master column address */ - LCD_SendMasterCmd(Address&0x7F); -} - -/******************************************************************************* -* Function Name : LCD_SetTextColor -* Description : Set the text color for LCD. -* Input : - TextColor: BlackText: character on black, bottom on white. -* WhiteText: character on white, bottom on black. -* Output : None -* Return : None -*******************************************************************************/ -void LCD_SetTextColor(TextColorMode_TypeDef TextColor) -{ - if(TextColor) - { - /* Set White Text color */ - TextMode=WhiteText; - } - else - { - /* Set Black Text color */ - TextMode=BlackText; - } -} - -/******************************************************************************* -* Function Name : LCD_Clear -* Description : Clear the Master and Slave LCDs display. -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void LCD_Clear(void) -{ - u8 Page = 0, Column = 0; - - /* Clear master and slave LCDs page by page */ - for (Page=0; Page<4; Page++) - { - /* Set master and slave page by page */ - LCD_SetMasterPage(Page); - LCD_SetSlavePage(Page); - /* Set master and slave column address */ - LCD_SetMasterColumn(0); - LCD_SetSlaveColumn(0); - /* Send empty data to master and slave column address on the selected page */ - for (Column=0; Column<61; Column++) - { - LCD_SendSlaveData(0); - LCD_SendMasterData(0); - } - } -} - -/******************************************************************************* -* Function Name : LCD_ClearLine -* Description : Clear the selected line of the LCD. -* Input : - Line: the Line to clear. -* - Line1 (Page0&1): clear the first line -* - Line2 (Page2&3): clear the second line -* Output : None -* Return : None -*******************************************************************************/ -void LCD_ClearLine(u8 Line) -{ - u8 Page = 0, Column = 0; - - /* Clear the slected master and slave line */ - for (Page=Line; Page 121) - { - /* Return if column exceeded 121 */ - return; - } - if (X > 60) - { - /* To be displayed on slave LCD (Window = 1) */ - Window = 1; - /* Get the Slave relative start column */ -// ActualColumn = X%61; - ActualColumn = X - 61; - } - else - { - /* To be displayed on master LCD (Window = 0) */ - ActualColumn = X; - } - - /* Switch window, display the character upper part */ - if (Window) - { - /* Display it on slave LCD */ - LCD_SetSlavePage(Line); - LCD_SetSlaveColumn(ActualColumn); - LCD_SendSlaveData(Bmp[i]); - } - else - { - /* Display it on master LCD */ - LCD_SetMasterPage(Line); - LCD_SetMasterColumn(ActualColumn); - LCD_SendMasterData(Bmp[i]); - } - /* Switch window, diplay the character lower part */ - if (Window) - { - /* Display it on slave LCD */ - LCD_SetSlavePage(Line+1); - LCD_SetSlaveColumn(ActualColumn); - LCD_SendSlaveData(Bmp[i+1]); - } - else - { - /* Display it on master LCD */ - LCD_SetMasterPage(Line+1); - LCD_SetMasterColumn(ActualColumn); - LCD_SendMasterData(Bmp[i+1]); - } - /* Increment by 2 the character table index */ - i+=2; - } -} - -/******************************************************************************* -* Function Name : LCD_DisplayChar -* Description : Display one character (7dots large, 16dots high). -* Note: -* the LCD can only display two line character,so page 0 and 1 -* is to display the first line, page2 and page 3 is to display -* the second line. -* Input : - Line: the Line where to display the character. -* - Line1 (Page0&1): display character on the first line -* - Line2 (Page2&3): display character on the second line -* - Column: start column address. -* - Ascii: character ascii code. -* - CharMode: BlackText: character on black, bottom on white. -* WhiteText: character on white, bottom on black. -* Output : None -* Return : None -*******************************************************************************/ -void LCD_DisplayChar(u8 Line, u8 Column, u8 Ascii, TextColorMode_TypeDef CharMode) -{ - u8 DotBuffer[14], i = 0; - - /* Display the character lower and upper 8bit parts (2*7columns) */ - for (i=0;i<14;i++) - { - /* Character displayed as white Text on black buttom */ - if(CharMode) - { - if( i & 0x01 ) - { - DotBuffer[i] = ~AsciiDotsTable[Ascii*14+i-1]; - } - else - { - DotBuffer[i] = ~AsciiDotsTable[Ascii*14+i+1]; - } - } - /* Character displayed as black Text on white buttom */ - else - { - if( ( u8 ) i & 0x01 ) - { - DotBuffer[i] = AsciiDotsTable[Ascii*14+i-1]; - } - else - { - DotBuffer[i] = AsciiDotsTable[Ascii*14+i+1]; - } - } - } - /* Display the asc code after conversion */ - LCD_DrawChar(Line, Column, 7, DotBuffer); -} - -/******************************************************************************* -* Function Name : LCD_HexToAsciiLow -* Description : This function is used to convert the low nibble of an -* unsigned byte (0-F hex) to ASCII. -* Input : - byte: byte to convert to ASCII. -* Output : None -* Return : ASCII value result of the conversion. -*******************************************************************************/ -char LCD_HexToAsciiLow(u8 byte) -{ - /* Keep lower nibble only */ - byte = byte & 0x0F; - /* If the ascii is a number */ - if (byte <= 0x09) - { - /* Add 0x30 to its ascii */ - return(byte + 0x30); - } - else - { - /* Add 0x37 to its ascii */ - return (byte + 0x37); - } -} - -/******************************************************************************* -* Function Name : LCD_HexToAsciiHigh -* Description : This function is used to convert the high nibble of an -* unsigned byte (0-F hex) to ASCII. -* Input : - byte: byte to convert to ASCII. -* Output : None -* Return : ASCII value result of the conversion. -*******************************************************************************/ -char LCD_HexToAsciiHigh(u8 byte) -{ - /* Keep upper nibble only */ - byte = byte & 0xF0; - byte = byte >> 4; - /* If the ascii is a number */ - if (byte <= 0x09) - { - /* Add 0x30 to display its ascii */ - return(byte + 0x30); - } - else - { - /* Add 0x37 to display its ascii */ - return (byte + 0x37); - } -} - -/******************************************************************************* -* Function Name : LCD_DisplayString -* Description : This function is used to display a 17char max string of -* characters on the LCD display on the selected line. -* Note: -* this function is the user interface to use the LCD driver. -* Input : - *ptr: pointer to string to display on LCD. -* - Line: the Line where to display the character. -* - Line1 (Page0&1): display character on the first line -* - Line2 (Page2&3): display character on the second line -* Output : None -* Return : None -*******************************************************************************/ -void LCD_DisplayString(u8 Line, u8 *ptr, TextColorMode_TypeDef CharMode) -{ - u8 RefColumn = 0, i = 0; - - /* Send the string character by character on lCD */ - while ((*ptr!=0)&(i<17)) - { - vTaskDelay( 1 ); - - /* Display one character on LCD */ - LCD_DisplayChar(Line, RefColumn, *ptr, CharMode); - - /* Increment the column position by 7 */ - RefColumn+=7; - /* Point on the next character */ - ptr++; - /* Increment the character counter */ - i++; - /* If we reach the maximum Line character */ - if(i==17) - { - LCD_DisplayChar(Line, RefColumn-1, 0x1f, CharMode); /* Add missed columns */ - } - } -} - -/******************************************************************************* -* Function Name : LCD_Printf -* Description : This function is used to display a string of characters -* on the LCD display. -* Note: -* this function is the user interface to use the LCD driver. -* Input : - *ptr: pointer to string to display on LCD. -* Output : None -* Return : None -*******************************************************************************/ -void LCD_Printf(u8 *ptr, ...) -{ - u8 RefColumn = 0, RefPage = 0, i = 0, c1 = 0; - u16 var = 0, c2 = 0, c3 = 0, c4 = 0, c5 = 0; - u32 WordVar = 0; - - /* Store pointer on LCD_Printf second parameter (String) */ - u8 *var_ptr=(u8 *)(&ptr+1); - - /* Send String */ - while (*ptr != 0) - { - c1 = *ptr; - /* Limited to AsciiDotsTable code table */ - if(c1 <= 128) - { - /* Carriage return */ - if ( *ptr == '\r') - { - ptr++; - RefColumn = 0; - } - /* Jump to Line2 */ - else if( *ptr == '\n') - { - /* Point on the string to display */ - ptr++; - /* Clear Line2 */ - LCD_ClearLine(Line2); - /* Point on first Line2 column */ - RefColumn = 0; - /* Increment RefPage by 2 */ - RefPage+=2; - } - /* Display value on the passed format */ - else if( *ptr == '%') - { - ptr++; - /* Display decimal value */ - if (*ptr == 'd') - { - ptr++; - /* Get the word value to display */ - WordVar = ((*var_ptr)|(*(var_ptr+1)<<8)|(*(var_ptr+2)<<16)); - c1=WordVar/10000; - c2=(WordVar%10000)/1000; - c3=(WordVar%1000)/100; - c4=(WordVar%100)/10; - c5=(WordVar%10); - /* Display the ten miles digit */ - if (c1!=0) - { - LCD_DisplayChar(RefPage, RefColumn, c1+0x30, TextMode); - RefColumn+=7; - } - /* Display the miles digit */ - if (!((c1==0)&(c2==0))) - { - LCD_DisplayChar(RefPage, RefColumn, c2+0x30, TextMode); - RefColumn+=7; - } - /* Display the hundred digit */ - if (!((c1==0)&(c2==0)&(c3==0))) - { - LCD_DisplayChar(RefPage, RefColumn, c3+0x30, TextMode); - RefColumn+=7; - } - /* Display the tens digit */ - if (!((c1==0)&(c2==0)&(c3==0)&(c4==0))) - { - LCD_DisplayChar(RefPage, RefColumn, c4+0x30, TextMode); - RefColumn+=7; - } - /* Display the rest */ - LCD_DisplayChar(RefPage, RefColumn, c5+0x30, TextMode); - RefColumn+=7; - } - /* Display 16bits Hex value */ - else if (*ptr == 'x') - { - ptr++; - /* Display 8bits MSB */ - var_ptr = var_ptr +1; - var = *var_ptr; - c1 = LCD_HexToAsciiHigh(var); - LCD_DisplayChar(RefPage, RefColumn, c1, TextMode); - RefColumn+=7; - c1 = LCD_HexToAsciiLow(var); - LCD_DisplayChar(RefPage, RefColumn, c1, TextMode); - RefColumn+=7; - /* Display 8bits LSB */ - var_ptr = var_ptr -1; - var = *var_ptr; - var_ptr = var_ptr +4; - c1 = LCD_HexToAsciiHigh(var); - LCD_DisplayChar(RefPage, RefColumn, c1, TextMode); - RefColumn+=7; - c1 = LCD_HexToAsciiLow(var); - LCD_DisplayChar(RefPage, RefColumn, c1, TextMode); - RefColumn+=7; - } - /* Display 32bits Hex value */ - else if (*ptr == 'w') - { - ptr++; - /* Display 16bits MSB */ - var_ptr = var_ptr +3; - var = *var_ptr; - c1 = LCD_HexToAsciiHigh(var); - LCD_DisplayChar(RefPage, RefColumn, c1, TextMode); - RefColumn+=7; - c1 = LCD_HexToAsciiLow(var); - LCD_DisplayChar(RefPage, RefColumn, c1, TextMode); - RefColumn+=7; - var_ptr = var_ptr -1; - var = *var_ptr; - c1 = LCD_HexToAsciiHigh(var); - LCD_DisplayChar(RefPage, RefColumn, c1, TextMode); - RefColumn+=7; - c1 = LCD_HexToAsciiLow(var); - LCD_DisplayChar(RefPage, RefColumn, c1, TextMode); - RefColumn+=7; - /* Display 16bits LSB */ - var_ptr = var_ptr -1; - var = *var_ptr; - var_ptr = var_ptr +4; - c1 = LCD_HexToAsciiHigh(var); - LCD_DisplayChar(RefPage, RefColumn, c1, TextMode); - RefColumn+=7; - c1 = LCD_HexToAsciiLow(var); - LCD_DisplayChar(RefPage, RefColumn, c1, TextMode); - RefColumn+=7; - var_ptr = var_ptr -5; - var = *var_ptr; - var_ptr = var_ptr +4; - c1 = LCD_HexToAsciiHigh(var); - LCD_DisplayChar(RefPage, RefColumn, c1, TextMode); - RefColumn+=7; - c1 = LCD_HexToAsciiLow(var); - LCD_DisplayChar(RefPage, RefColumn, c1, TextMode); - RefColumn+=7; - } - else - { - /* Display '%' character which is followed by (d, x or w) */ - ptr--; - c1 = *ptr; - LCD_DisplayChar(RefPage, RefColumn, c1, TextMode); - RefColumn+=7; - ptr++; - i++; - if(i==17) - { - /* Add missed columns */ - LCD_DisplayChar(RefPage, RefColumn-1, 0x1f, TextMode); - RefColumn = 0; - RefPage+=2; - } - } - } - else - { - /* Display characters different from (\r, \n, %) */ - LCD_DisplayChar(RefPage, RefColumn, c1, TextMode); - RefColumn+=7; - ptr++; - i++; - if(i==17) - { - /* Add missed columns */ - LCD_DisplayChar(RefPage, RefColumn-1, 0x1f, TextMode); - LCD_ClearLine(Line2); - RefColumn = 0; - RefPage+=2; - } - } - } - } - /* Display spaces if string doesn't reach the max LCD characters size */ - while(RefColumn<119) - { - /* Display Spaces */ - LCD_DisplayChar(RefPage, RefColumn, 0x20, TextMode); - RefColumn+=7; - /* Add missed columns */ - LCD_DisplayChar(RefPage, RefColumn, 0x1f, TextMode); - } -} - -/******************************************************************************* -* Function Name : LCD_DrawMasterGraphic -* Description : Draw a Graphic image on master LCD. -* Input : - Bmp: the pointer of the dot matrix data. -* Output : None -* Return : None. -*******************************************************************************/ -void LCD_DrawMasterGraphic(u8 *Bmp) -{ - u8 j = 0, k = 0, ActPage = 0; - - /* Draw graphic on master: 61 Column *4 Pages */ - while(j<244) - { - /* Draw on master page by page */ - LCD_SetMasterPage(ActPage); - for(k=0; k<61; k++) - { - LCD_SetMasterColumn(k); - LCD_SendMasterData(*Bmp++); - j++; - } - ActPage++; - } -} - -/******************************************************************************* -* Function Name : LCD_DrawSlaveGraphic -* Description : Draw a Graphic image on slave LCD. -* Input : - Bmp: the pointer of the dot matrix data. -* Output : None -* Return : None. -*******************************************************************************/ -void LCD_DrawSlaveGraphic(u8 *Bmp) -{ - u8 j = 0, k = 0, ActPage = 0; - - /* Draw graphic on slave: 61 Column *4 Pages */ - while(j<244) - { - /* Draw on slave page by page */ - LCD_SetSlavePage(ActPage); - for(k=0; k<61; k++) - { - LCD_SetSlaveColumn(k); - LCD_SendSlaveData(*Bmp++); - j++; - } - ActPage++; - } -} - -/******************************************************************************* -* Function Name : LCD_DrawGraphic -* Description : Draw a Graphic image on LCD. -* Input : - Bmp: the pointer of the dot matrix data. -* Output : None -* Return : None. -*******************************************************************************/ -void LCD_DrawGraphic(u8 *Bmp) -{ - u8 Pos = 0, ActPage = 0; - u16 j = 0, k = 0; - - /* Draw graphic on LCD: 122 Column *4 Pages */ - while(j<488) - { - if(!Pos) - { - /* Draw on master page by page */ - LCD_SetMasterPage(ActPage); - for(k=0; k<61; k++) - { - LCD_SetMasterColumn(k); - LCD_SendMasterData(*Bmp++); - j++; - } - Pos=1; - } - else - { - /* Draw on slave page by page */ - LCD_SetSlavePage(ActPage); - for(k=0; k<61; k++) - { - LCD_SetSlaveColumn(k); - LCD_SendSlaveData(*Bmp++); - j++; - } - ActPage++; - Pos=0; - } - } -} - -/******************************************************************************* -* Function Name : LCD_ScrollGraphic -* Description : Scroll a Graphic image on LCD. -* Input : - Bmp: the pointer of the dot matrix data. -* - nCount: specifies the delay time length. -* Output : None -* Return : None. -*******************************************************************************/ -void LCD_ScrollGraphic(u8 *Bmp, u32 nCount) -{ - u8 Pos = 0, ActPage = 0; - u16 j = 0, k = 0; - u32 Counter = 0; - - /* Draw graphic on LCD: 122 Column *4 Pages */ - while(j<488) - { - if(!Pos) - { - /* Draw on master page by page */ - LCD_SetMasterPage(ActPage); - for(k=0; k<61; k++) - { - LCD_SetMasterColumn(k); - LCD_SendMasterData(*Bmp++); - Counter = nCount; - /* Set a delay */ - for(; Counter != 0; Counter--); - j++; - } - Pos=1; - } - else - { - /* Draw on slave page by page */ - LCD_SetSlavePage(ActPage); - for(k=0; k<61; k++) - { - LCD_SetSlaveColumn(k); - Counter = nCount; - /* Set a delay */ - for(; Counter != 0; Counter--); - LCD_SendSlaveData(*Bmp++); - j++; - } - ActPage++; - Pos=0; - } - } -} - -/******************************************************************************* -* Function Name : LCD_DrawPixel -* Description : Draw a Graphic image on slave LCD. -* Input : - XPos: the dot line number of the pixel. -* - 1->61 : displayed on master LCD -* - 62->122: displayed on slave LCD -* - YPos: column address of the pixel from 1->32. -* - Mode: Dot_On: Pixel turned on (black). -* Dot_Off: Pixel turned off (black). -* Output : None -* Return : None. -*******************************************************************************/ -void LCD_DrawPixel(u8 XPos, u8 YPos, DotMode_TypeDef Mode) -{ - u8 Page = 0, Position = 0; - u16 Mask = 0; - u32 MasterDataIn = 0, MasterDataOut = 0, SlaveDataIn = 0, SlaveDataOut = 0; - - /* Pixel page */ - Page = (XPos-1)/8; - /* Pixel column */ - Position = (YPos-1)/61; /* 0:Master, 1:Slave */ - /* Mask for the pixel */ - Mask= 1<<((XPos-1)%8); - /* If Position=0 draw pixel on master LCD */ - if(!Position) - { - LCD_SetMasterPage(Page); - LCD_SetMasterColumn(YPos-1); - MasterDataIn = LCD_ReadMasterData(); - MasterDataIn = LCD_ReadMasterData(); - LCD_SetMasterColumn(YPos-1); - if(Mode==Dot_On) - { - MasterDataOut = MasterDataIn | Mask; - } - else - { - MasterDataOut = MasterDataIn & (~Mask); - } - LCD_SendMasterData(MasterDataOut); - } - /* If Position=1 draw pixel on slave LCD */ - else - { - LCD_SetSlavePage(Page); - LCD_SetSlaveColumn(YPos-62); - SlaveDataIn = LCD_ReadSlaveData(); - SlaveDataIn = LCD_ReadSlaveData(); - LCD_SetSlaveColumn(YPos-62); - if(Mode==Dot_On) - { - SlaveDataOut = SlaveDataIn | Mask; - } - else - { - SlaveDataOut = SlaveDataIn & (~Mask); - } - LCD_SendSlaveData(SlaveDataOut); - } -} - -/******************************************************************************* -* Function Name : LCD_DrawLine -* Description : Draw a line on master and slave LCDs. -* Input : - XPos1: the dot line number of the source point . -* - XPos2: the dot line number of the destination point . -* - YPos1: the dot column number of the source point. -* - YPos2: the dot column number of the destination point. -* Output : None -* Return : None. -*******************************************************************************/ -void LCD_DrawLine(u8 XPos1, u8 YPos1, u8 XPos2, u8 YPos2) -{ - u8 XPos = 0, YPos = 0; - - /* Use XPos1, YPos1, XPos2 and YPos2 */ - if((XPos2>=XPos1)&(YPos2>=YPos1)) - { - for(XPos=XPos1; XPos<=XPos2; XPos++) - { - for(YPos=YPos1; YPos<=YPos2; YPos++) - { - LCD_DrawPixel(XPos, YPos, Dot_On); - } - } - } - else if((XPos2=YPos1)) - { - for(XPos=XPos2; XPos<=XPos1; XPos++) - { - for(YPos=YPos1; YPos<=YPos2; YPos++) - { - LCD_DrawPixel(XPos, YPos, Dot_On); - } - } - } - else if((XPos2>=XPos1)&(YPos2 - * - */ - -/* lwIP includes. */ -#include "lwip/debug.h" -#include "lwip/def.h" -#include "lwip/sys.h" -#include "lwip/mem.h" - -#include - -/* Message queue constants. */ -#define archMESG_QUEUE_LENGTH ( 6 ) -#define archPOST_BLOCK_TIME_MS ( ( unsigned long ) 10000 ) - -struct timeoutlist -{ - struct sys_timeouts timeouts; - TaskHandle_t pid; -}; - -/* This is the number of threads that can be started with sys_thread_new() */ -#define SYS_THREAD_MAX 4 - -static struct timeoutlist timeoutlist[SYS_THREAD_MAX]; -static u16_t nextthread = 0; -int intlevel = 0; - -static sys_arch_state_t s_sys_arch_state; - -/*-----------------------------------------------------------------------------------*/ -// Creates an empty mailbox. -sys_mbox_t -sys_mbox_new(void) -{ - QueueHandle_t mbox; - - mbox = xQueueCreate( archMESG_QUEUE_LENGTH, sizeof( void * ) ); - - return mbox; -} - -/*-----------------------------------------------------------------------------------*/ -/* - Deallocates a mailbox. If there are messages still present in the - mailbox when the mailbox is deallocated, it is an indication of a - programming error in lwIP and the developer should be notified. -*/ -void -sys_mbox_free(sys_mbox_t mbox) -{ - if( uxQueueMessagesWaiting( mbox ) ) - { - /* Line for breakpoint. Should never break here! */ -// __asm volatile ( "NOP" ); - } - - vQueueDelete( mbox ); -} - -/*-----------------------------------------------------------------------------------*/ -// Posts the "msg" to the mailbox. -void -sys_mbox_post(sys_mbox_t mbox, void *data) -{ - xQueueSend( mbox, &data, ( TickType_t ) ( archPOST_BLOCK_TIME_MS / portTICK_PERIOD_MS ) ); -} - - -/*-----------------------------------------------------------------------------------*/ -/* - Blocks the thread until a message arrives in the mailbox, but does - not block the thread longer than "timeout" milliseconds (similar to - the sys_arch_sem_wait() function). The "msg" argument is a result - parameter that is set by the function (i.e., by doing "*msg = - ptr"). The "msg" parameter maybe NULL to indicate that the message - should be dropped. - - The return values are the same as for the sys_arch_sem_wait() function: - Number of milliseconds spent waiting or SYS_ARCH_TIMEOUT if there was a - timeout. - - Note that a function with a similar name, sys_mbox_fetch(), is - implemented by lwIP. -*/ -u32_t sys_arch_mbox_fetch(sys_mbox_t mbox, void **msg, u32_t timeout) -{ -void *dummyptr; -TickType_t StartTime, EndTime, Elapsed; - - StartTime = xTaskGetTickCount(); - - if( msg == NULL ) - { - msg = &dummyptr; - } - - if( timeout != 0 ) - { - if(pdTRUE == xQueueReceive( mbox, &(*msg), timeout ) ) - { - EndTime = xTaskGetTickCount(); - Elapsed = EndTime - StartTime; - if( Elapsed == 0 ) - { - Elapsed = 1; - } - return ( Elapsed ); - } - else // timed out blocking for message - { - *msg = NULL; - return SYS_ARCH_TIMEOUT; - } - } - else // block forever for a message. - { - while( pdTRUE != xQueueReceive( mbox, &(*msg), 10000 ) ) // time is arbitrary - { - ; - } - EndTime = xTaskGetTickCount(); - Elapsed = EndTime - StartTime; - if( Elapsed == 0 ) - { - Elapsed = 1; - } - return ( Elapsed ); // return time blocked TBD test - } -} - -/*-----------------------------------------------------------------------------------*/ -// Creates and returns a new semaphore. The "count" argument specifies -// the initial state of the semaphore. TBD finish and test -sys_sem_t -sys_sem_new(u8_t count) -{ - SemaphoreHandle_t xSemaphore; - - portENTER_CRITICAL(); - vSemaphoreCreateBinary( xSemaphore ); - if(count == 0) // Means it can't be taken - { - xSemaphoreTake(xSemaphore,1); - } - portEXIT_CRITICAL(); - - if( xSemaphore == NULL ) - { - return NULL; // TBD need assert - } - else - { - return xSemaphore; - } -} - -/*-----------------------------------------------------------------------------------*/ -/* - Blocks the thread while waiting for the semaphore to be - signaled. If the "timeout" argument is non-zero, the thread should - only be blocked for the specified time (measured in - milliseconds). - - If the timeout argument is non-zero, the return value is the number of - milliseconds spent waiting for the semaphore to be signaled. If the - semaphore wasn't signaled within the specified time, the return value is - SYS_ARCH_TIMEOUT. If the thread didn't have to wait for the semaphore - (i.e., it was already signaled), the function may return zero. - - Notice that lwIP implements a function with a similar name, - sys_sem_wait(), that uses the sys_arch_sem_wait() function. -*/ -u32_t -sys_arch_sem_wait(sys_sem_t sem, u32_t timeout) -{ -TickType_t StartTime, EndTime, Elapsed; - - StartTime = xTaskGetTickCount(); - - if( timeout != 0) - { - if( xSemaphoreTake( sem, timeout ) == pdTRUE ) - { - EndTime = xTaskGetTickCount(); - Elapsed = EndTime - StartTime; - if( Elapsed == 0 ) - { - Elapsed = 1; - } - return (Elapsed); // return time blocked TBD test - } - else - { - return SYS_ARCH_TIMEOUT; - } - } - else // must block without a timeout - { - while( xSemaphoreTake( sem, 10000 ) != pdTRUE ) - { - ; - } - EndTime = xTaskGetTickCount(); - Elapsed = EndTime - StartTime; - if( Elapsed == 0 ) - { - Elapsed = 1; - } - - return ( Elapsed ); // return time blocked - - } -} - -/*-----------------------------------------------------------------------------------*/ -// Signals a semaphore -void -sys_sem_signal(sys_sem_t sem) -{ - xSemaphoreGive( sem ); -} - -/*-----------------------------------------------------------------------------------*/ -// Deallocates a semaphore -void -sys_sem_free(sys_sem_t sem) -{ - vQueueDelete( sem ); -} - -/*-----------------------------------------------------------------------------------*/ -// Initialize sys arch -void -sys_init(void) -{ - - int i; - - // Initialize the the per-thread sys_timeouts structures - // make sure there are no valid pids in the list - for(i = 0; i < SYS_THREAD_MAX; i++) - { - timeoutlist[i].pid = 0; - } - - // keep track of how many threads have been created - nextthread = 0; - - s_sys_arch_state.nTaskCount = 0; - sys_set_default_state(); -} - -/*-----------------------------------------------------------------------------------*/ -/* - Returns a pointer to the per-thread sys_timeouts structure. In lwIP, - each thread has a list of timeouts which is represented as a linked - list of sys_timeout structures. The sys_timeouts structure holds a - pointer to a linked list of timeouts. This function is called by - the lwIP timeout scheduler and must not return a NULL value. - - In a single threaded sys_arch implementation, this function will - simply return a pointer to a global sys_timeouts variable stored in - the sys_arch module. -*/ -struct sys_timeouts * -sys_arch_timeouts(void) -{ -int i; -TaskHandle_t pid; -struct timeoutlist *tl; - - pid = xTaskGetCurrentTaskHandle( ); - - for(i = 0; i < nextthread; i++) - { - tl = &timeoutlist[i]; - if(tl->pid == pid) - { - return &(tl->timeouts); - } - } - - // Error - return NULL; -} - -/*-----------------------------------------------------------------------------------*/ -/*-----------------------------------------------------------------------------------*/ -// TBD -/*-----------------------------------------------------------------------------------*/ -/* - Starts a new thread with priority "prio" that will begin its execution in the - function "thread()". The "arg" argument will be passed as an argument to the - thread() function. The id of the new thread is returned. Both the id and - the priority are system dependent. -*/ -sys_thread_t sys_thread_new(void (* thread)(void *arg), void *arg, int prio) -{ -TaskHandle_t CreatedTask; -int result; - - result = xTaskCreate(thread, s_sys_arch_state.cTaskName, s_sys_arch_state.nStackDepth, arg, prio, &CreatedTask ); - - // For each task created, store the task handle (pid) in the timers array. - // This scheme doesn't allow for threads to be deleted - timeoutlist[nextthread++].pid = CreatedTask; - - if(result == pdPASS) - { - ++s_sys_arch_state.nTaskCount; - - return CreatedTask; - } - else - { - return NULL; - } -} - -/* - This optional function does a "fast" critical region protection and returns - the previous protection level. This function is only called during very short - critical regions. An embedded system which supports ISR-based drivers might - want to implement this function by disabling interrupts. Task-based systems - might want to implement this by using a mutex or disabling tasking. This - function should support recursive calls from the same task or interrupt. In - other words, sys_arch_protect() could be called while already protected. In - that case the return value indicates that it is already protected. - - sys_arch_protect() is only required if your port is supporting an operating - system. -*/ -sys_prot_t sys_arch_protect(void) -{ - vPortEnterCritical(); - return 1; -} - -/* - This optional function does a "fast" set of critical region protection to the - value specified by pval. See the documentation for sys_arch_protect() for - more information. This function is only required if your port is supporting - an operating system. -*/ -void sys_arch_unprotect(sys_prot_t pval) -{ - ( void ) pval; - vPortExitCritical(); -} - -void sys_set_default_state() -{ - s_sys_arch_state.nStackDepth = configMINIMAL_STACK_SIZE; - sprintf(s_sys_arch_state.cTaskName, "thread%d", s_sys_arch_state.nTaskCount); -} - -void sys_set_state(signed char *pTaskName, unsigned short nStackSize) -{ - s_sys_arch_state.nStackDepth = nStackSize; - sprintf(s_sys_arch_state.cTaskName, "%s", pTaskName); -} diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/include/arch/cc.h b/FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/include/arch/cc.h deleted file mode 100644 index 1e401b04c..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/include/arch/cc.h +++ /dev/null @@ -1,78 +0,0 @@ -/* - * Copyright (c) 2001-2003 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT - * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT - * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * Author: Stefano Oliveri - * - */ -#ifndef __CC_H__ -#define __CC_H__ - -#include "cpu.h" - -//#define LWIP_PROVIDE_ERRNO 1 -#include "lwip_errno.h" - -// Typedefs for the types used by lwip - -typedef unsigned char u8_t; -typedef signed char s8_t; -typedef unsigned short u16_t; -typedef signed short s16_t; -typedef unsigned long u32_t; -typedef signed long s32_t; -typedef u32_t mem_ptr_t; -typedef int sys_prot_t; - -// Compiler hints for packing lwip's structures - -#define PACK_STRUCT_BEGIN -//#define PACK_STRUCT_BEGIN _Pragma("pack(2)") -#define PACK_STRUCT_STRUCT -#define PACK_STRUCT_END -//#define PACK_STRUCT_END _Pragma("pack()") -#define PACK_STRUCT_FIELD(x) x - -// Platform specific diagnostic output - -// non-fatal, print a message. -#define LWIP_PLATFORM_DIAG(x) -// fatal, print message and abandon execution. -#define LWIP_PLATFORM_ASSERT(x) - -// "lightweight" synchronization mechanisms - -// declare a protection state variable. -#define SYS_ARCH_DECL_PROTECT(x) -// enter protection mode. -#define SYS_ARCH_PROTECT(x) -// leave protection mode. -#define SYS_ARCH_UNPROTECT(x) - - -#endif /* __CC_H__ */ diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/include/arch/cpu.h b/FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/include/arch/cpu.h deleted file mode 100644 index 2af31a864..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/include/arch/cpu.h +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright (c) 2001-2003 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT - * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT - * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ -#ifndef __CPU_H__ -#define __CPU_H__ - -#define BYTE_ORDER LITTLE_ENDIAN - -#endif /* __CPU_H__ */ diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/include/arch/lwip_errno.h b/FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/include/arch/lwip_errno.h deleted file mode 100644 index bae240779..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/include/arch/lwip_errno.h +++ /dev/null @@ -1,153 +0,0 @@ -#ifndef __LWIP_ERRNO_H_ -#define __LWIP_ERRNO_H_ - -#define EPERM 1 /* Operation not permitted */ -#define ENOENT 2 /* No such file or directory */ -#define ESRCH 3 /* No such process */ -#define EINTR 4 /* Interrupted system call */ -#define EIO 5 /* I/O error */ -#define ENXIO 6 /* No such device or address */ -#define E2BIG 7 /* Arg list too long */ -#define ENOEXEC 8 /* Exec format error */ -#define EBADF 9 /* Bad file number */ -#define ECHILD 10 /* No child processes */ -#define EAGAIN 11 /* Try again */ -#define ENOMEM 12 /* Out of memory */ -#define EACCES 13 /* Permission denied */ -#define EFAULT 14 /* Bad address */ -#define ENOTBLK 15 /* Block device required */ -#define EBUSY 16 /* Device or resource busy */ -#define EEXIST 17 /* File exists */ -#define EXDEV 18 /* Cross-device link */ -#define ENODEV 19 /* No such device */ -#define ENOTDIR 20 /* Not a directory */ -#define EISDIR 21 /* Is a directory */ -#define EINVAL 22 /* Invalid argument */ -#define ENFILE 23 /* File table overflow */ -#define EMFILE 24 /* Too many open files */ -#define ENOTTY 25 /* Not a typewriter */ -#define ETXTBSY 26 /* Text file busy */ -#define EFBIG 27 /* File too large */ -#define ENOSPC 28 /* No space left on device */ -#define ESPIPE 29 /* Illegal seek */ -#define EROFS 30 /* Read-only file system */ -#define EMLINK 31 /* Too many links */ -#define EPIPE 32 /* Broken pipe */ -//#define EDOM 33 /* Math argument out of domain of func */ -//#define ERANGE 34 /* Math result not representable */ -#define EDEADLK 35 /* Resource deadlock would occur */ -#define ENAMETOOLONG 36 /* File name too long */ -#define ENOLCK 37 /* No record locks available */ -#define ENOSYS 38 /* Function not implemented */ -#define ENOTEMPTY 39 /* Directory not empty */ -#define ELOOP 40 /* Too many symbolic links encountered */ -#define EWOULDBLOCK EAGAIN /* Operation would block */ -#define ENOMSG 42 /* No message of desired type */ -#define EIDRM 43 /* Identifier removed */ -#define ECHRNG 44 /* Channel number out of range */ -#define EL2NSYNC 45 /* Level 2 not synchronized */ -#define EL3HLT 46 /* Level 3 halted */ -#define EL3RST 47 /* Level 3 reset */ -#define ELNRNG 48 /* Link number out of range */ -#define EUNATCH 49 /* Protocol driver not attached */ -#define ENOCSI 50 /* No CSI structure available */ -#define EL2HLT 51 /* Level 2 halted */ -#define EBADE 52 /* Invalid exchange */ -#define EBADR 53 /* Invalid request descriptor */ -#define EXFULL 54 /* Exchange full */ -#define ENOANO 55 /* No anode */ -#define EBADRQC 56 /* Invalid request code */ -#define EBADSLT 57 /* Invalid slot */ - -#define EDEADLOCK EDEADLK - -#define EBFONT 59 /* Bad font file format */ -#define ENOSTR 60 /* Device not a stream */ -#define ENODATA 61 /* No data available */ -#define ETIME 62 /* Timer expired */ -#define ENOSR 63 /* Out of streams resources */ -#define ENONET 64 /* Machine is not on the network */ -#define ENOPKG 65 /* Package not installed */ -#define EREMOTE 66 /* Object is remote */ -#define ENOLINK 67 /* Link has been severed */ -#define EADV 68 /* Advertise error */ -#define ESRMNT 69 /* Srmount error */ -#define ECOMM 70 /* Communication error on send */ -#define EPROTO 71 /* Protocol error */ -#define EMULTIHOP 72 /* Multihop attempted */ -#define EDOTDOT 73 /* RFS specific error */ -#define EBADMSG 74 /* Not a data message */ -#define EOVERFLOW 75 /* Value too large for defined data type */ -#define ENOTUNIQ 76 /* Name not unique on network */ -#define EBADFD 77 /* File descriptor in bad state */ -#define EREMCHG 78 /* Remote address changed */ -#define ELIBACC 79 /* Can not access a needed shared library */ -#define ELIBBAD 80 /* Accessing a corrupted shared library */ -#define ELIBSCN 81 /* .lib section in a.out corrupted */ -#define ELIBMAX 82 /* Attempting to link in too many shared libraries */ -#define ELIBEXEC 83 /* Cannot exec a shared library directly */ -// #define EILSEQ 84 /* Illegal byte sequence */ -#define ERESTART 85 /* Interrupted system call should be restarted */ -#define ESTRPIPE 86 /* Streams pipe error */ -#define EUSERS 87 /* Too many users */ -#define ENOTSOCK 88 /* Socket operation on non-socket */ -#define EDESTADDRREQ 89 /* Destination address required */ -#define EMSGSIZE 90 /* Message too long */ -#define EPROTOTYPE 91 /* Protocol wrong type for socket */ -#define ENOPROTOOPT 92 /* Protocol not available */ -#define EPROTONOSUPPORT 93 /* Protocol not supported */ -#define ESOCKTNOSUPPORT 94 /* Socket type not supported */ -#define EOPNOTSUPP 95 /* Operation not supported on transport endpoint */ -#define EPFNOSUPPORT 96 /* Protocol family not supported */ -#define EAFNOSUPPORT 97 /* Address family not supported by protocol */ -#define EADDRINUSE 98 /* Address already in use */ -#define EADDRNOTAVAIL 99 /* Cannot assign requested address */ -#define ENETDOWN 100 /* Network is down */ -#define ENETUNREACH 101 /* Network is unreachable */ -#define ENETRESET 102 /* Network dropped connection because of reset */ -#define ECONNABORTED 103 /* Software caused connection abort */ -#define ECONNRESET 104 /* Connection reset by peer */ -#define ENOBUFS 105 /* No buffer space available */ -#define EISCONN 106 /* Transport endpoint is already connected */ -#define ENOTCONN 107 /* Transport endpoint is not connected */ -#define ESHUTDOWN 108 /* Cannot send after transport endpoint shutdown */ -#define ETOOMANYREFS 109 /* Too many references: cannot splice */ -#define ETIMEDOUT 110 /* Connection timed out */ -#define ECONNREFUSED 111 /* Connection refused */ -#define EHOSTDOWN 112 /* Host is down */ -#define EHOSTUNREACH 113 /* No route to host */ -#define EALREADY 114 /* Operation already in progress */ -#define EINPROGRESS 115 /* Operation now in progress */ -#define ESTALE 116 /* Stale NFS file handle */ -#define EUCLEAN 117 /* Structure needs cleaning */ -#define ENOTNAM 118 /* Not a XENIX named type file */ -#define ENAVAIL 119 /* No XENIX semaphores available */ -#define EISNAM 120 /* Is a named type file */ -#define EREMOTEIO 121 /* Remote I/O error */ -#define EDQUOT 122 /* Quota exceeded */ - -#define ENOMEDIUM 123 /* No medium found */ -#define EMEDIUMTYPE 124 /* Wrong medium type */ - - -#define ENSROK 0 /* DNS server returned answer with no data */ -#define ENSRNODATA 160 /* DNS server returned answer with no data */ -#define ENSRFORMERR 161 /* DNS server claims query was misformatted */ -#define ENSRSERVFAIL 162 /* DNS server returned general failure */ -#define ENSRNOTFOUND 163 /* Domain name not found */ -#define ENSRNOTIMP 164 /* DNS server does not implement requested operation */ -#define ENSRREFUSED 165 /* DNS server refused query */ -#define ENSRBADQUERY 166 /* Misformatted DNS query */ -#define ENSRBADNAME 167 /* Misformatted domain name */ -#define ENSRBADFAMILY 168 /* Unsupported address family */ -#define ENSRBADRESP 169 /* Misformatted DNS reply */ -#define ENSRCONNREFUSED 170 /* Could not contact DNS servers */ -#define ENSRTIMEOUT 171 /* Timeout while contacting DNS servers */ -#define ENSROF 172 /* End of file */ -#define ENSRFILE 173 /* Error reading file */ -#define ENSRNOMEM 174 /* Out of memory */ -#define ENSRDESTRUCTION 175 /* Application terminated lookup */ -#define ENSRQUERYDOMAINTOOLONG 176 /* Domain name is too long */ -#define ENSRCNAMELOOP 177 /* Domain name is too long */ - -#endif // __LWIP_ERRNO_H_ diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/include/arch/perf.h b/FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/include/arch/perf.h deleted file mode 100644 index 68afdb56f..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/include/arch/perf.h +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright (c) 2001-2003 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT - * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT - * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ -#ifndef __PERF_H__ -#define __PERF_H__ - -#define PERF_START /* null definition */ -#define PERF_STOP(x) /* null definition */ - -#endif /* __PERF_H__ */ diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/include/arch/sys_arch.h b/FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/include/arch/sys_arch.h deleted file mode 100644 index 890ac7605..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/include/arch/sys_arch.h +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright (c) 2001-2003 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT - * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT - * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ -#ifndef __SYS_RTXC_H__ -#define __SYS_RTXC_H__ - -#include "FreeRTOS.h" -#include "task.h" -#include "queue.h" -#include "semphr.h" - -#define SYS_MBOX_NULL (QueueHandle_t)0 -#define SYS_SEM_NULL (SemaphoreHandle_t)0 -#define SYS_DEFAULT_THREAD_STACK_DEPTH configMINIMAL_STACK_SIZE - -typedef SemaphoreHandle_t sys_sem_t; -typedef QueueHandle_t sys_mbox_t; -typedef TaskHandle_t sys_thread_t; - -typedef struct _sys_arch_state_t -{ - // Task creation data. - char cTaskName[configMAX_TASK_NAME_LEN]; - unsigned short nStackDepth; - unsigned short nTaskCount; -} sys_arch_state_t; - -//extern sys_arch_state_t s_sys_arch_state; - -void sys_set_default_state(); -void sys_set_state(signed char *pTaskName, unsigned short nStackSize); - -#endif /* __SYS_RTXC_H__ */ - diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/include/lwIPWebServer/BasicWEB.h b/FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/include/lwIPWebServer/BasicWEB.h deleted file mode 100644 index 409950dc2..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/include/lwIPWebServer/BasicWEB.h +++ /dev/null @@ -1,85 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -#ifndef BASIC_WEB_SERVER_H -#define BASIC_WEB_SERVER_H - -#include <91x_type.h> - -/*------------------------------------------------------------------------------*/ -/* MACROS */ -/*------------------------------------------------------------------------------*/ -#define basicwebWEBSERVER_PRIORITY ( tskIDLE_PRIORITY + 2 ) - -/* The port on which we listen. */ -#define webHTTP_PORT ( 80 ) - -/* Delay on close error. */ -#define webSHORT_DELAY ( 10 / portTICK_PERIOD_MS ) - -/* The IP address being used. */ -#define emacIPADDR0 172 -#define emacIPADDR1 25 -#define emacIPADDR2 218 -#define emacIPADDR3 17 - -/* The gateway address being used. */ -#define emacGATEWAY_ADDR0 10 -#define emacGATEWAY_ADDR1 52 -#define emacGATEWAY_ADDR2 156 -#define emacGATEWAY_ADDR3 254 - -/* The network mask being used. */ -#define emacNET_MASK0 255 -#define emacNET_MASK1 255 -#define emacNET_MASK2 255 -#define emacNET_MASK3 0 - -#define STATIC_IP 1 -#define DHCP_IP 2 - -#define lwipBASIC_SERVER_STACK_SIZE 250 - -/*------------------------------------------------------------------------------*/ -/* PROTOTYPES */ -/*------------------------------------------------------------------------------*/ -/* The function that implements the WEB server task. */ -void vBasicWEBServer( void *pvParameters ); - -/* Initialisation required by lwIP. */ -void vlwIPInit( void ); - -void PrintIPOnLCD(unsigned int ipAddr); - -void ToDoAfterGettingIP(bool dhcpStaticFlag); - -void InitializeStaticIP(void); - -void DelayForDHCPToCome(void); - -#endif - diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/include/lwIPWebServer/fs.h b/FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/include/lwIPWebServer/fs.h deleted file mode 100644 index dc848a12f..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/include/lwIPWebServer/fs.h +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright (c) 2001-2003 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT - * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT - * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels <adam@sics.se> - * - */ -#ifndef __FS_H__ -#define __FS_H__ - -struct fs_file { - char *data; - int len; -}; - -/* file must be allocated by caller and will be filled in - by the function. */ -int fs_open(char *name, struct fs_file *file); - -#endif /* __FS_H__ */ - diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/include/lwIPWebServer/fsdata.h b/FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/include/lwIPWebServer/fsdata.h deleted file mode 100644 index a8cbc84a5..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/include/lwIPWebServer/fsdata.h +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Copyright (c) 2001-2003 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT - * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT - * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels <adam@sics.se> - * - */ -#ifndef __FSDATA_H__ -#define __FSDATA_H__ - -struct httpd_fsdata_file { - const struct httpd_fsdata_file *next; - const unsigned char *name; - const unsigned char *data; - const int len; -}; - -struct httpd_fsdata_file_noconst { - struct httpd_fsdata_file *next; - unsigned char *name; - unsigned char *data; - int len; -}; - -#endif /* __FSDATA_H__ */ - diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/include/lwIPWebServer/httpd.h b/FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/include/lwIPWebServer/httpd.h deleted file mode 100644 index 60f74a9ab..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/include/lwIPWebServer/httpd.h +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright (c) 2001-2003 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT - * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT - * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels <adam@sics.se> - * - */ -#ifndef __HTTPD_H__ -#define __HTTPD_H__ - -void httpd_init(void); - -#endif /* __HTTPD_H__ */ - diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/include/lwip/lwipopts.h b/FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/include/lwip/lwipopts.h deleted file mode 100644 index 6fb319d25..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/include/lwip/lwipopts.h +++ /dev/null @@ -1,194 +0,0 @@ -/* - * Copyright (c) 2001-2003 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT - * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT - * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ -#ifndef __LWIPOPTS_H__ -#define __LWIPOPTS_H__ - -#define LWIP_NOASSERT 1 // To suppress some errors for now (no debug output) -#define SYS_LIGHTWEIGHT_PROT 1 - -#define TCPIP_THREAD_PRIO 3 - -#define ETH_PAD_SIZE 2 - -/* ---------- Memory options ---------- */ -/* MEM_ALIGNMENT: should be set to the alignment of the CPU for which - lwIP is compiled. 4 byte alignment -> define MEM_ALIGNMENT to 4, 2 - byte alignment -> define MEM_ALIGNMENT to 2. */ -#define MEM_ALIGNMENT 4 - -/* MEM_SIZE: the size of the heap memory. If the application will send -a lot of data that needs to be copied, this should be set high. */ -#define MEM_SIZE 8000 - -/* MEMP_NUM_PBUF: the number of memp struct pbufs. If the application - sends a lot of data out of ROM (or other static memory), this - should be set high. */ -#define MEMP_NUM_PBUF 40 -/* MEMP_NUM_UDP_PCB: the number of UDP protocol control blocks. One - per active UDP "connection". */ -#define MEMP_NUM_UDP_PCB 4 -/* MEMP_NUM_TCP_PCB: the number of simulatenously active TCP - connections. */ -#define MEMP_NUM_TCP_PCB 10 -/* MEMP_NUM_TCP_PCB_LISTEN: the number of listening TCP - connections. */ -#define MEMP_NUM_TCP_PCB_LISTEN 8 -/* MEMP_NUM_TCP_SEG: the number of simultaneously queued TCP - segments. */ -#define MEMP_NUM_TCP_SEG 8 -/* MEMP_NUM_SYS_TIMEOUT: the number of simulateously active - timeouts. */ -#define MEMP_NUM_SYS_TIMEOUT 3 - - -/* The following four are used only with the sequential API and can be - set to 0 if the application only will use the raw API. */ -/* MEMP_NUM_NETBUF: the number of struct netbufs. */ -#define MEMP_NUM_NETBUF 4 -/* MEMP_NUM_NETCONN: the number of struct netconns. */ -#define MEMP_NUM_NETCONN 4 -/* MEMP_NUM_APIMSG: the number of struct api_msg, used for - communication between the TCP/IP stack and the sequential - programs. */ -#define MEMP_NUM_API_MSG 8 -/* MEMP_NUM_TCPIPMSG: the number of struct tcpip_msg, which is used - for sequential API communication and incoming packets. Used in - src/api/tcpip.c. */ -#define MEMP_NUM_TCPIP_MSG 8 - -/* These two control is reclaimer functions should be compiled - in. Should always be turned on (1). */ -#define MEM_RECLAIM 1 -#define MEMP_RECLAIM 1 - -/* ---------- Pbuf options ---------- */ -/* PBUF_POOL_SIZE: the number of buffers in the pbuf pool. */ -#define PBUF_POOL_SIZE 8 - -/* PBUF_POOL_BUFSIZE: the size of each pbuf in the pbuf pool. */ -#define PBUF_POOL_BUFSIZE 1500 - -/* PBUF_LINK_HLEN: the number of bytes that should be allocated for a - link level header. */ -#define PBUF_LINK_HLEN 16 - -/* ---------- TCP options ---------- */ -#define LWIP_TCP 1 -#define TCP_TTL 255 - -/* Controls if TCP should queue segments that arrive out of - order. Define to 0 if your device is low on memory. */ -#define TCP_QUEUE_OOSEQ 1 - -/* TCP Maximum segment size. */ -#define TCP_MSS 1500 - -/* TCP sender buffer space (bytes). */ -#define TCP_SND_BUF 1500 - -/* TCP sender buffer space (pbufs). This must be at least = 2 * - TCP_SND_BUF/TCP_MSS for things to work. */ -#define TCP_SND_QUEUELEN 6 * TCP_SND_BUF/TCP_MSS - -/* TCP receive window. */ -#define TCP_WND 1500 - -/* Maximum number of retransmissions of data segments. */ -#define TCP_MAXRTX 12 - -/* Maximum number of retransmissions of SYN segments. */ -#define TCP_SYNMAXRTX 4 - -/* ---------- ARP options ---------- */ -#define ARP_TABLE_SIZE 10 -#define ARP_QUEUEING 1 - -/* ---------- IP options ---------- */ -/* Define IP_FORWARD to 1 if you wish to have the ability to forward - IP packets across network interfaces. If you are going to run lwIP - on a device with only one network interface, define this to 0. */ -#define IP_FORWARD 1 - -/* If defined to 1, IP options are allowed (but not parsed). If - defined to 0, all packets with IP options are dropped. */ -#define IP_OPTIONS 1 - -/** IP reassembly and segmentation. Even if they both deal with IP - * fragments, note that these are orthogonal, one dealing with incoming - * packets, the other with outgoing packets - */ - -/** Reassemble incoming fragmented IP packets */ -#define IP_REASSEMBLY 0 - -/** Fragment outgoing IP packets if their size exceeds MTU */ -#define IP_FRAG 1 - -/* IP reassemly default age in seconds */ -#define IP_REASS_MAXAGE 30 - - -/* ---------- ICMP options ---------- */ -#define ICMP_TTL 255 - - -/* ---------- DHCP options ---------- */ -/* Define LWIP_DHCP to 1 if you want DHCP configuration of - interfaces. DHCP is not implemented in lwIP 0.5.1, however, so - turning this on does currently not work. */ -#define LWIP_DHCP 0 - -/* 1 if you want to do an ARP check on the offered address - (recommended). */ -#define DHCP_DOES_ARP_CHECK 1 - -/* ---------- UDP options ---------- */ -#define LWIP_UDP 1 -#define UDP_TTL 255 - - -/* ---------- Statistics options ---------- */ -#define STATS - -#ifdef STATS -#define LINK_STATS 1 -#define IP_STATS 1 -#define ICMP_STATS 1 -#define UDP_STATS 1 -#define TCP_STATS 1 -#define MEM_STATS 1 -#define MEMP_STATS 1 -#define PBUF_STATS 1 -#define SYS_STATS 1 -#endif /* STATS */ - -#endif /* __LWIPOPTS_H__ */ diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/include/lwip/opt.h b/FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/include/lwip/opt.h deleted file mode 100644 index 48b999629..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/include/lwip/opt.h +++ /dev/null @@ -1,722 +0,0 @@ -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT - * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT - * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ -#ifndef __LWIP_OPT_H__ -#define __LWIP_OPT_H__ - -/* Include user defined options first */ -#include "lwipopts.h" -#include "lwip/debug.h" - -/* Define default values for unconfigured parameters. */ - -/* Platform specific locking */ - -/* - * enable SYS_LIGHTWEIGHT_PROT in lwipopts.h if you want inter-task protection - * for certain critical regions during buffer allocation, deallocation and memory - * allocation and deallocation. - */ -#ifndef SYS_LIGHTWEIGHT_PROT -#define SYS_LIGHTWEIGHT_PROT 0 -#endif - -#ifndef NO_SYS -#define NO_SYS 0 -#endif -/* ---------- Memory options ---------- */ -#ifndef MEM_LIBC_MALLOC -#define MEM_LIBC_MALLOC 0 -#endif - -/* MEM_ALIGNMENT: should be set to the alignment of the CPU for which - lwIP is compiled. 4 byte alignment -> define MEM_ALIGNMENT to 4, 2 - byte alignment -> define MEM_ALIGNMENT to 2. */ - -#ifndef MEM_ALIGNMENT -#define MEM_ALIGNMENT 1 -#endif - -/* MEM_SIZE: the size of the heap memory. If the application will send -a lot of data that needs to be copied, this should be set high. */ -#ifndef MEM_SIZE -#define MEM_SIZE 1600 -#endif - -#ifndef MEMP_SANITY_CHECK -#define MEMP_SANITY_CHECK 0 -#endif - -/* MEMP_NUM_PBUF: the number of memp struct pbufs. If the application - sends a lot of data out of ROM (or other static memory), this - should be set high. */ -#ifndef MEMP_NUM_PBUF -#define MEMP_NUM_PBUF 16 -#endif - -/* Number of raw connection PCBs */ -#ifndef MEMP_NUM_RAW_PCB -#define MEMP_NUM_RAW_PCB 4 -#endif - -/* MEMP_NUM_UDP_PCB: the number of UDP protocol control blocks. One - per active UDP "connection". */ -#ifndef MEMP_NUM_UDP_PCB -#define MEMP_NUM_UDP_PCB 4 -#endif -/* MEMP_NUM_TCP_PCB: the number of simulatenously active TCP - connections. */ -#ifndef MEMP_NUM_TCP_PCB -#define MEMP_NUM_TCP_PCB 5 -#endif -/* MEMP_NUM_TCP_PCB_LISTEN: the number of listening TCP - connections. */ -#ifndef MEMP_NUM_TCP_PCB_LISTEN -#define MEMP_NUM_TCP_PCB_LISTEN 8 -#endif -/* MEMP_NUM_TCP_SEG: the number of simultaneously queued TCP - segments. */ -#ifndef MEMP_NUM_TCP_SEG -#define MEMP_NUM_TCP_SEG 16 -#endif -/* MEMP_NUM_SYS_TIMEOUT: the number of simulateously active - timeouts. */ -#ifndef MEMP_NUM_SYS_TIMEOUT -#define MEMP_NUM_SYS_TIMEOUT 3 -#endif - -/* The following four are used only with the sequential API and can be - set to 0 if the application only will use the raw API. */ -/* MEMP_NUM_NETBUF: the number of struct netbufs. */ -#ifndef MEMP_NUM_NETBUF -#define MEMP_NUM_NETBUF 2 -#endif -/* MEMP_NUM_NETCONN: the number of struct netconns. */ -#ifndef MEMP_NUM_NETCONN -#define MEMP_NUM_NETCONN 4 -#endif -/* MEMP_NUM_APIMSG: the number of struct api_msg, used for - communication between the TCP/IP stack and the sequential - programs. */ -#ifndef MEMP_NUM_API_MSG -#define MEMP_NUM_API_MSG 8 -#endif -/* MEMP_NUM_TCPIPMSG: the number of struct tcpip_msg, which is used - for sequential API communication and incoming packets. Used in - src/api/tcpip.c. */ -#ifndef MEMP_NUM_TCPIP_MSG -#define MEMP_NUM_TCPIP_MSG 8 -#endif - -/* ---------- Pbuf options ---------- */ -/* PBUF_POOL_SIZE: the number of buffers in the pbuf pool. */ - -#ifndef PBUF_POOL_SIZE -#define PBUF_POOL_SIZE 16 -#endif - -/* PBUF_POOL_BUFSIZE: the size of each pbuf in the pbuf pool. */ - -#ifndef PBUF_POOL_BUFSIZE -#define PBUF_POOL_BUFSIZE 128 -#endif - -/* PBUF_LINK_HLEN: the number of bytes that should be allocated for a - link level header. Defaults to 14 for Ethernet. */ - -#ifndef PBUF_LINK_HLEN -#define PBUF_LINK_HLEN 14 -#endif - - - -/* ---------- ARP options ---------- */ - -/** Number of active hardware address, IP address pairs cached */ -#ifndef ARP_TABLE_SIZE -#define ARP_TABLE_SIZE 10 -#endif - -/** - * If enabled, outgoing packets are queued during hardware address - * resolution. - * - * This feature has not stabilized yet. Single-packet queueing is - * believed to be stable, multi-packet queueing is believed to - * clash with the TCP segment queueing. - * - * As multi-packet-queueing is currently disabled, enabling this - * _should_ work, but we need your testing feedback on lwip-users. - * - */ -#ifndef ARP_QUEUEING -#define ARP_QUEUEING 1 -#endif - -/* This option is deprecated */ -#ifdef ETHARP_QUEUE_FIRST -#error ETHARP_QUEUE_FIRST option is deprecated. Remove it from your lwipopts.h. -#endif - -/* This option is removed to comply with the ARP standard */ -#ifdef ETHARP_ALWAYS_INSERT -#error ETHARP_ALWAYS_INSERT option is deprecated. Remove it from your lwipopts.h. -#endif - -/* ---------- IP options ---------- */ -/* Define IP_FORWARD to 1 if you wish to have the ability to forward - IP packets across network interfaces. If you are going to run lwIP - on a device with only one network interface, define this to 0. */ -#ifndef IP_FORWARD -#define IP_FORWARD 0 -#endif - -/* If defined to 1, IP options are allowed (but not parsed). If - defined to 0, all packets with IP options are dropped. */ -#ifndef IP_OPTIONS -#define IP_OPTIONS 1 -#endif - -/** IP reassembly and segmentation. Even if they both deal with IP - * fragments, note that these are orthogonal, one dealing with incoming - * packets, the other with outgoing packets - */ - -/** Reassemble incoming fragmented IP packets */ -#ifndef IP_REASSEMBLY -#define IP_REASSEMBLY 1 -#endif - -/** Fragment outgoing IP packets if their size exceeds MTU */ -#ifndef IP_FRAG -#define IP_FRAG 1 -#endif - -/* IP reassemly default age in seconds */ -#ifndef IP_REASS_MAXAGE -#define IP_REASS_MAXAGE 3 -#endif - -/* IP reassembly buffer size (minus IP header) */ -#ifndef IP_REASS_BUFSIZE -#define IP_REASS_BUFSIZE 5760 -#endif - -/* Assumed max MTU on any interface for IP frag buffer */ -#ifndef IP_FRAG_MAX_MTU -#define IP_FRAG_MAX_MTU 1500 -#endif - -/** Global default value for Time To Live used by transport layers. */ -#ifndef IP_DEFAULT_TTL -#define IP_DEFAULT_TTL 255 -#endif - -/* ---------- ICMP options ---------- */ - -#ifndef ICMP_TTL -#define ICMP_TTL (IP_DEFAULT_TTL) -#endif - -/* ---------- RAW options ---------- */ - -#ifndef LWIP_RAW -#define LWIP_RAW 1 -#endif - -#ifndef RAW_TTL -#define RAW_TTL (IP_DEFAULT_TTL) -#endif - -/* ---------- DHCP options ---------- */ - -#ifndef LWIP_DHCP -#define LWIP_DHCP 0 -#endif - -/* 1 if you want to do an ARP check on the offered address - (recommended). */ -#ifndef DHCP_DOES_ARP_CHECK -#define DHCP_DOES_ARP_CHECK 1 -#endif - -/* ---------- SNMP options ---------- */ -/** @note UDP must be available for SNMP transport */ -#ifndef LWIP_SNMP -#define LWIP_SNMP 0 -#endif - -/** @note At least one request buffer is required. */ -#ifndef SNMP_CONCURRENT_REQUESTS -#define SNMP_CONCURRENT_REQUESTS 1 -#endif - -/** @note At least one trap destination is required */ -#ifndef SNMP_TRAP_DESTINATIONS -#define SNMP_TRAP_DESTINATIONS 1 -#endif - -#ifndef SNMP_PRIVATE_MIB -#define SNMP_PRIVATE_MIB 0 -#endif - -/* ---------- UDP options ---------- */ -#ifndef LWIP_UDP -#define LWIP_UDP 1 -#endif - -#ifndef UDP_TTL -#define UDP_TTL (IP_DEFAULT_TTL) -#endif - -/* ---------- TCP options ---------- */ -#ifndef LWIP_TCP -#define LWIP_TCP 1 -#endif - -#ifndef TCP_TTL -#define TCP_TTL (IP_DEFAULT_TTL) -#endif - -#ifndef TCP_WND -#define TCP_WND 2048 -#endif - -#ifndef TCP_MAXRTX -#define TCP_MAXRTX 12 -#endif - -#ifndef TCP_SYNMAXRTX -#define TCP_SYNMAXRTX 6 -#endif - - -/* Controls if TCP should queue segments that arrive out of - order. Define to 0 if your device is low on memory. */ -#ifndef TCP_QUEUE_OOSEQ -#define TCP_QUEUE_OOSEQ 1 -#endif - -/* TCP Maximum segment size. */ -#ifndef TCP_MSS -#define TCP_MSS 128 /* A *very* conservative default. */ -#endif - -/* TCP sender buffer space (bytes). */ -#ifndef TCP_SND_BUF -#define TCP_SND_BUF 256 -#endif - -/* TCP sender buffer space (pbufs). This must be at least = 2 * - TCP_SND_BUF/TCP_MSS for things to work. */ -#ifndef TCP_SND_QUEUELEN -#define TCP_SND_QUEUELEN 4 * TCP_SND_BUF/TCP_MSS -#endif - - -/* Maximum number of retransmissions of data segments. */ - -/* Maximum number of retransmissions of SYN segments. */ - -/* TCP writable space (bytes). This must be less than or equal - to TCP_SND_BUF. It is the amount of space which must be - available in the tcp snd_buf for select to return writable */ -#ifndef TCP_SNDLOWAT -#define TCP_SNDLOWAT TCP_SND_BUF/2 -#endif - -/* Support loop interface (127.0.0.1) */ -#ifndef LWIP_HAVE_LOOPIF -#define LWIP_HAVE_LOOPIF 0 -#endif - -#ifndef LWIP_EVENT_API -#define LWIP_EVENT_API 0 -#define LWIP_CALLBACK_API 1 -#else -#define LWIP_EVENT_API 1 -#define LWIP_CALLBACK_API 0 -#endif - -#ifndef LWIP_COMPAT_SOCKETS -#define LWIP_COMPAT_SOCKETS 1 -#endif - - -#ifndef TCPIP_THREAD_PRIO -#define TCPIP_THREAD_PRIO 1 -#endif - -#ifndef SLIPIF_THREAD_PRIO -#define SLIPIF_THREAD_PRIO 1 -#endif - -#ifndef PPP_THREAD_PRIO -#define PPP_THREAD_PRIO 1 -#endif - -#ifndef DEFAULT_THREAD_PRIO -#define DEFAULT_THREAD_PRIO 1 -#endif - - -/* ---------- Socket Options ---------- */ -/* Enable SO_REUSEADDR and SO_REUSEPORT options */ -#ifdef SO_REUSE -/* I removed the lot since this was an ugly hack. It broke the raw-API. - It also came with many ugly goto's, Christiaan Simons. */ -#error "SO_REUSE currently unavailable, this was a hack" -#endif - - -/* ---------- Statistics options ---------- */ -#ifndef LWIP_STATS -#define LWIP_STATS 1 -#endif - -#if LWIP_STATS - -#ifndef LWIP_STATS_DISPLAY -#define LWIP_STATS_DISPLAY 0 -#endif - -#ifndef LINK_STATS -#define LINK_STATS 1 -#endif - -#ifndef IP_STATS -#define IP_STATS 1 -#endif - -#ifndef IPFRAG_STATS -#define IPFRAG_STATS 1 -#endif - -#ifndef ICMP_STATS -#define ICMP_STATS 1 -#endif - -#ifndef UDP_STATS -#define UDP_STATS 1 -#endif - -#ifndef TCP_STATS -#define TCP_STATS 1 -#endif - -#ifndef MEM_STATS -#define MEM_STATS 1 -#endif - -#ifndef MEMP_STATS -#define MEMP_STATS 1 -#endif - -#ifndef PBUF_STATS -#define PBUF_STATS 1 -#endif - -#ifndef SYS_STATS -#define SYS_STATS 1 -#endif - -#ifndef RAW_STATS -#define RAW_STATS 0 -#endif - -#else - -#define LINK_STATS 0 -#define IP_STATS 0 -#define IPFRAG_STATS 0 -#define ICMP_STATS 0 -#define UDP_STATS 0 -#define TCP_STATS 0 -#define MEM_STATS 0 -#define MEMP_STATS 0 -#define PBUF_STATS 0 -#define SYS_STATS 0 -#define RAW_STATS 0 -#define LWIP_STATS_DISPLAY 0 - -#endif /* LWIP_STATS */ - -/* ---------- PPP options ---------- */ - -#ifndef PPP_SUPPORT -#define PPP_SUPPORT 0 /* Set for PPP */ -#endif - -#if PPP_SUPPORT - -#define NUM_PPP 1 /* Max PPP sessions. */ - - - -#ifndef PAP_SUPPORT -#define PAP_SUPPORT 0 /* Set for PAP. */ -#endif - -#ifndef CHAP_SUPPORT -#define CHAP_SUPPORT 0 /* Set for CHAP. */ -#endif - -#define MSCHAP_SUPPORT 0 /* Set for MSCHAP (NOT FUNCTIONAL!) */ -#define CBCP_SUPPORT 0 /* Set for CBCP (NOT FUNCTIONAL!) */ -#define CCP_SUPPORT 0 /* Set for CCP (NOT FUNCTIONAL!) */ - -#ifndef VJ_SUPPORT -#define VJ_SUPPORT 0 /* Set for VJ header compression. */ -#endif - -#ifndef MD5_SUPPORT -#define MD5_SUPPORT 0 /* Set for MD5 (see also CHAP) */ -#endif - - -/* - * Timeouts. - */ -#define FSM_DEFTIMEOUT 6 /* Timeout time in seconds */ -#define FSM_DEFMAXTERMREQS 2 /* Maximum Terminate-Request transmissions */ -#define FSM_DEFMAXCONFREQS 10 /* Maximum Configure-Request transmissions */ -#define FSM_DEFMAXNAKLOOPS 5 /* Maximum number of nak loops */ - -#define UPAP_DEFTIMEOUT 6 /* Timeout (seconds) for retransmitting req */ -#define UPAP_DEFREQTIME 30 /* Time to wait for auth-req from peer */ - -#define CHAP_DEFTIMEOUT 6 /* Timeout time in seconds */ -#define CHAP_DEFTRANSMITS 10 /* max # times to send challenge */ - - -/* Interval in seconds between keepalive echo requests, 0 to disable. */ -#if 1 -#define LCP_ECHOINTERVAL 0 -#else -#define LCP_ECHOINTERVAL 10 -#endif - -/* Number of unanswered echo requests before failure. */ -#define LCP_MAXECHOFAILS 3 - -/* Max Xmit idle time (in jiffies) before resend flag char. */ -#define PPP_MAXIDLEFLAG 100 - -/* - * Packet sizes - * - * Note - lcp shouldn't be allowed to negotiate stuff outside these - * limits. See lcp.h in the pppd directory. - * (XXX - these constants should simply be shared by lcp.c instead - * of living in lcp.h) - */ -#define PPP_MTU 1500 /* Default MTU (size of Info field) */ -#if 0 -#define PPP_MAXMTU 65535 - (PPP_HDRLEN + PPP_FCSLEN) -#else -#define PPP_MAXMTU 1500 /* Largest MTU we allow */ -#endif -#define PPP_MINMTU 64 -#define PPP_MRU 1500 /* default MRU = max length of info field */ -#define PPP_MAXMRU 1500 /* Largest MRU we allow */ -#define PPP_DEFMRU 296 /* Try for this */ -#define PPP_MINMRU 128 /* No MRUs below this */ - - -#define MAXNAMELEN 256 /* max length of hostname or name for auth */ -#define MAXSECRETLEN 256 /* max length of password or secret */ - -#endif /* PPP_SUPPORT */ - -/* checksum options - set to zero for hardware checksum support */ - -#ifndef CHECKSUM_GEN_IP -#define CHECKSUM_GEN_IP 1 -#endif - -#ifndef CHECKSUM_GEN_UDP -#define CHECKSUM_GEN_UDP 1 -#endif - -#ifndef CHECKSUM_GEN_TCP -#define CHECKSUM_GEN_TCP 1 -#endif - -#ifndef CHECKSUM_CHECK_IP -#define CHECKSUM_CHECK_IP 1 -#endif - -#ifndef CHECKSUM_CHECK_UDP -#define CHECKSUM_CHECK_UDP 1 -#endif - -#ifndef CHECKSUM_CHECK_TCP -#define CHECKSUM_CHECK_TCP 1 -#endif - -/* Debugging options all default to off */ - -#ifndef DBG_TYPES_ON -#define DBG_TYPES_ON 0 -#endif - -#ifndef ETHARP_DEBUG -#define ETHARP_DEBUG DBG_OFF -#endif - -#ifndef NETIF_DEBUG -#define NETIF_DEBUG DBG_OFF -#endif - -#ifndef PBUF_DEBUG -#define PBUF_DEBUG DBG_OFF -#endif - -#ifndef API_LIB_DEBUG -#define API_LIB_DEBUG DBG_OFF -#endif - -#ifndef API_MSG_DEBUG -#define API_MSG_DEBUG DBG_OFF -#endif - -#ifndef SOCKETS_DEBUG -#define SOCKETS_DEBUG DBG_OFF -#endif - -#ifndef ICMP_DEBUG -#define ICMP_DEBUG DBG_OFF -#endif - -#ifndef INET_DEBUG -#define INET_DEBUG DBG_OFF -#endif - -#ifndef IP_DEBUG -#define IP_DEBUG DBG_OFF -#endif - -#ifndef IP_REASS_DEBUG -#define IP_REASS_DEBUG DBG_OFF -#endif - -#ifndef RAW_DEBUG -#define RAW_DEBUG DBG_OFF -#endif - -#ifndef MEM_DEBUG -#define MEM_DEBUG DBG_OFF -#endif - -#ifndef MEMP_DEBUG -#define MEMP_DEBUG DBG_OFF -#endif - -#ifndef SYS_DEBUG -#define SYS_DEBUG DBG_OFF -#endif - -#ifndef TCP_DEBUG -#define TCP_DEBUG DBG_OFF -#endif - -#ifndef TCP_INPUT_DEBUG -#define TCP_INPUT_DEBUG DBG_OFF -#endif - -#ifndef TCP_FR_DEBUG -#define TCP_FR_DEBUG DBG_OFF -#endif - -#ifndef TCP_RTO_DEBUG -#define TCP_RTO_DEBUG DBG_OFF -#endif - -#ifndef TCP_REXMIT_DEBUG -#define TCP_REXMIT_DEBUG DBG_OFF -#endif - -#ifndef TCP_CWND_DEBUG -#define TCP_CWND_DEBUG DBG_OFF -#endif - -#ifndef TCP_WND_DEBUG -#define TCP_WND_DEBUG DBG_OFF -#endif - -#ifndef TCP_OUTPUT_DEBUG -#define TCP_OUTPUT_DEBUG DBG_OFF -#endif - -#ifndef TCP_RST_DEBUG -#define TCP_RST_DEBUG DBG_OFF -#endif - -#ifndef TCP_QLEN_DEBUG -#define TCP_QLEN_DEBUG DBG_OFF -#endif - -#ifndef UDP_DEBUG -#define UDP_DEBUG DBG_OFF -#endif - -#ifndef TCPIP_DEBUG -#define TCPIP_DEBUG DBG_OFF -#endif - -#ifndef PPP_DEBUG -#define PPP_DEBUG DBG_OFF -#endif - -#ifndef SLIP_DEBUG -#define SLIP_DEBUG DBG_OFF -#endif - -#ifndef DHCP_DEBUG -#define DHCP_DEBUG DBG_OFF -#endif - -#ifndef SNMP_MSG_DEBUG -#define SNMP_MSG_DEBUG DBG_OFF -#endif - -#ifndef SNMP_MIB_DEBUG -#define SNMP_MIB_DEBUG DBG_OFF -#endif - -#ifndef DBG_MIN_LEVEL -#define DBG_MIN_LEVEL DBG_LEVEL_OFF -#endif - -#endif /* __LWIP_OPT_H__ */ - - - diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/lwipWebServer/BasicWEB.c b/FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/lwipWebServer/BasicWEB.c deleted file mode 100644 index d852d2070..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/lwipWebServer/BasicWEB.c +++ /dev/null @@ -1,116 +0,0 @@ - -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* - Implements a simplistic WEB server. Every time a connection is made and - data is received a dynamic page that shows the current TCP/IP statistics - is generated and returned. The connection is then closed. -*/ - - -/*------------------------------------------------------------------------------*/ -/* PROTOTYPES */ -/*------------------------------------------------------------------------------*/ - -/* Standard includes. */ -#include -#include - -/* Scheduler includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "semphr.h" - -/* Demo includes. */ -#include "BasicWEB.h" - -/* lwIP includes. */ -#include "lwip/api.h" -#include "lwip/tcpip.h" -#include "lwip/memp.h" -#include "lwip/stats.h" -#include "netif/loopif.h" -#include "lcd.h" -#include "httpd.h" - -#define lwipTCP_STACK_SIZE 600 - - -/*------------------------------------------------------------------------------*/ -/* GLOBALS */ -/*------------------------------------------------------------------------------*/ -static struct netif EMAC_if; - -/*------------------------------------------------------------------------------*/ -/* FUNCTIONS */ -/*------------------------------------------------------------------------------*/ - - -void vlwIPInit( void ) -{ - /* Initialize lwIP and its interface layer. */ - sys_init(); - mem_init(); - memp_init(); - pbuf_init(); - netif_init(); - ip_init(); - sys_set_state(( signed char * ) "lwIP", lwipTCP_STACK_SIZE); - tcpip_init( NULL, NULL ); - sys_set_default_state(); -} -/*------------------------------------------------------------*/ - -void vBasicWEBServer( void *pvParameters ) -{ -struct ip_addr xIpAddr, xNetMast, xGateway; -extern err_t ethernetif_init( struct netif *netif ); - - /* Parameters are not used - suppress compiler error. */ - ( void ) pvParameters; - - /* Create and configure the EMAC interface. */ - IP4_ADDR( &xIpAddr, emacIPADDR0, emacIPADDR1, emacIPADDR2, emacIPADDR3 ); - IP4_ADDR( &xNetMast, emacNET_MASK0, emacNET_MASK1, emacNET_MASK2, emacNET_MASK3 ); - IP4_ADDR( &xGateway, emacGATEWAY_ADDR0, emacGATEWAY_ADDR1, emacGATEWAY_ADDR2, emacGATEWAY_ADDR3 ); - netif_add( &EMAC_if, &xIpAddr, &xNetMast, &xGateway, NULL, ethernetif_init, tcpip_input ); - - /* make it the default interface */ - netif_set_default( &EMAC_if ); - - /* bring it up */ - netif_set_up(&EMAC_if); - - /* Initialize HTTP */ - httpd_init(); - - /* Nothing else to do. No point hanging around. */ - vTaskDelete( NULL ); -} - - diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/lwipWebServer/fs.c b/FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/lwipWebServer/fs.c deleted file mode 100644 index 677155c22..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/lwipWebServer/fs.c +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Copyright (c) 2001-2003 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT - * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT - * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels <adam@sics.se> - * - */ -#include "lwip/def.h" -#include "fs.h" -#include "fsdata.h" -#include "fsdata.c" - -// Standard lib include -#include - -/*-----------------------------------------------------------------------------------*/ - - -/*-----------------------------------------------------------------------------------*/ -int -fs_open(char *name, struct fs_file *file) -{ - struct httpd_fsdata_file_noconst *f; - - for(f = (struct httpd_fsdata_file_noconst *)HTTPD_FS_ROOT; - f != NULL; - f = (struct httpd_fsdata_file_noconst *)f->next) { - if (!strcmp(name, (char *)f->name)) { - file->data = (char *)f->data; - file->len = f->len; - return 1; - } - } - return 0; -} -/*-----------------------------------------------------------------------------------*/ - diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/lwipWebServer/fs/WS1/404.html b/FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/lwipWebServer/fs/WS1/404.html deleted file mode 100644 index 43e7f4cad..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/lwipWebServer/fs/WS1/404.html +++ /dev/null @@ -1,8 +0,0 @@ - - -
-

404 - file not found

-

Go here instead.

-
- - \ No newline at end of file diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/lwipWebServer/fs/WS1/index.html b/FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/lwipWebServer/fs/WS1/index.html deleted file mode 100644 index a41dad2a3..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/lwipWebServer/fs/WS1/index.html +++ /dev/null @@ -1,50 +0,0 @@ - - - - FreeRTOS.org STR9 lwIP WEB server demo - - -




- - FreeRTOS.org lwIP WEB server example running on an STR912 from STMicroelectronics. Page will refresh every 2 seconds (or there abouts).

- - -
- FreeRTOS.orgTM is a portable, open source, mini Real Time Kernel - a free to download and royalty free RTOS - that can be used in commercial applications. -

- Ports exist for many different processor architectures and development tools. Each official port includes a pre-configured - example application demonstrating the kernel features, expediting learning, and permitting 'out of the box' development.

- - Free support is provided by an active user community. - Commercial support along with a - full development service is also provided.

- - SafeRTOSTM is a version that has been certified for use - in safety critical applications. It is a functionally similar product for which complete - IEC 61508 compliant development/safety lifecyle documentation is available - (conformance certified by TÜV SÜD, including compiler verification evidence). - While FreeRTOS.org does not contain the same safety features as SafeRTOS there is still commonality - allowing FreeRTOS.org to benefit directly from the - very rigorous SafeRTOS testing and validation activities. -

- - Here are some reasons why FreeRTOS.org is a good choice for your next application - FreeRTOS.org... - -

    -
  • Provides one solution for many different architectures and development tools.
  • -
  • Is known to be reliable. Confidence is assured by the activities undertaken by the SafeRTOS sister project.
  • -
  • Is undergoing continuous active development.
  • -
  • Has a minimal ROM, RAM and processing overhead.
  • -
  • Is truly free for use in commercial applications (see license conditions for details).
  • -
  • Comes with a porting, platform development, or application development service should it be required.
  • -
  • Is well established with a large and ever growing user base.
  • -
  • Contains a pre-configured example for each port. No need to figure out how to setup a project - just download and compile!
  • -
  • Has an excellent and active free support forum.
  • -
  • Has the assurance that commercial support is available should it be required.
  • -
  • Provides ample documentation.
  • -
  • Is very scalable, simple and easy to use.
  • -
- - - - diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/lwipWebServer/fs/WS1/logo.gif b/FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/lwipWebServer/fs/WS1/logo.gif deleted file mode 100644 index 1ca6d2ec4..000000000 Binary files a/FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/lwipWebServer/fs/WS1/logo.gif and /dev/null differ diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/lwipWebServer/fsdata.c b/FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/lwipWebServer/fsdata.c deleted file mode 100644 index 36caa5dc5..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/lwipWebServer/fsdata.c +++ /dev/null @@ -1,953 +0,0 @@ -static const unsigned char data_404_html[] = { - /* /404.html */ - 0x2f, 0x34, 0x30, 0x34, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, 0xa, 0x20, 0x20, - 0x3c, 0x62, 0x6f, 0x64, 0x79, 0x20, 0x62, 0x67, 0x63, 0x6f, - 0x6c, 0x6f, 0x72, 0x3d, 0x22, 0x77, 0x68, 0x69, 0x74, 0x65, - 0x22, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x63, - 0x65, 0x6e, 0x74, 0x65, 0x72, 0x3e, 0xd, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x3c, 0x68, 0x31, 0x3e, 0x34, 0x30, - 0x34, 0x20, 0x2d, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x6e, - 0x6f, 0x74, 0x20, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x3c, 0x2f, - 0x68, 0x31, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x3c, 0x68, 0x33, 0x3e, 0x47, 0x6f, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x2f, 0x22, 0x3e, - 0x68, 0x65, 0x72, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x69, - 0x6e, 0x73, 0x74, 0x65, 0x61, 0x64, 0x2e, 0x3c, 0x2f, 0x68, - 0x33, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x2f, - 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x3e, 0xd, 0xa, 0x20, - 0x20, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xd, 0xa, - 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0}; - -static const unsigned char data_index_html[] = { - /* /index.html */ - 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x53, 0x54, 0x52, 0x39, - 0x20, 0x6c, 0x77, 0x49, 0x50, 0x20, 0x57, 0x45, 0x42, 0x20, - 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x64, 0x65, 0x6d, - 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, 0xd, - 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, 0x4f, 0x44, 0x59, 0x20, - 0x6f, 0x6e, 0x4c, 0x6f, 0x61, 0x64, 0x3d, 0x22, 0x77, 0x69, - 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x73, 0x65, 0x74, 0x54, 0x69, - 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x28, 0x26, 0x71, 0x75, 0x6f, - 0x74, 0x3b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x2e, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x27, 0x69, 0x6e, 0x64, - 0x65, 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x27, 0x26, 0x71, - 0x75, 0x6f, 0x74, 0x3b, 0x2c, 0x32, 0x30, 0x30, 0x30, 0x29, - 0x22, 0x20, 0x62, 0x67, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3d, - 0x22, 0x23, 0x43, 0x43, 0x43, 0x43, 0x66, 0x66, 0x22, 0x3e, - 0xd, 0xa, 0x9, 0x9, 0x3c, 0x69, 0x6d, 0x67, 0x20, 0x73, - 0x72, 0x63, 0x3d, 0x22, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, 0x67, - 0x69, 0x66, 0x22, 0x20, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x3d, - 0x22, 0x72, 0x69, 0x67, 0x68, 0x74, 0x22, 0x3e, 0x3c, 0x70, - 0x3e, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0x3c, 0x62, - 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0x3c, 0x62, 0x72, 0x3e, 0xd, - 0xa, 0x9, 0x9, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, - 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, - 0x22, 0x3e, 0xd, 0xa, 0x9, 0x9, 0x46, 0x72, 0x65, 0x65, - 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x6c, - 0x77, 0x49, 0x50, 0x20, 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, - 0x72, 0x76, 0x65, 0x72, 0x20, 0x65, 0x78, 0x61, 0x6d, 0x70, - 0x6c, 0x65, 0x20, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, - 0x20, 0x6f, 0x6e, 0x20, 0x61, 0x6e, 0x20, 0x3c, 0x61, 0x20, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, - 0x3a, 0x2f, 0x2f, 0x6d, 0x63, 0x75, 0x2e, 0x73, 0x74, 0x2e, - 0x63, 0x6f, 0x6d, 0x2f, 0x6d, 0x63, 0x75, 0x2f, 0x69, 0x6e, - 0x63, 0x68, 0x74, 0x6d, 0x6c, 0x2e, 0x70, 0x68, 0x70, 0x3f, - 0x66, 0x64, 0x69, 0x72, 0x3d, 0x70, 0x61, 0x67, 0x65, 0x73, - 0x26, 0x66, 0x6e, 0x61, 0x6d, 0x3d, 0x73, 0x74, 0x72, 0x39, - 0x22, 0x3e, 0x53, 0x54, 0x52, 0x39, 0x31, 0x32, 0x3c, 0x2f, - 0x61, 0x3e, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x53, 0x54, - 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x65, 0x6c, 0x65, 0x63, 0x74, - 0x72, 0x6f, 0x6e, 0x69, 0x63, 0x73, 0x2e, 0x20, 0x20, 0x50, - 0x61, 0x67, 0x65, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x72, - 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x20, 0x65, 0x76, 0x65, - 0x72, 0x79, 0x20, 0x32, 0x20, 0x73, 0x65, 0x63, 0x6f, 0x6e, - 0x64, 0x73, 0x20, 0x28, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, - 0x72, 0x65, 0x20, 0x61, 0x62, 0x6f, 0x75, 0x74, 0x73, 0x29, - 0x2e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x9, 0x9, 0xd, 0xa, - 0x9, 0x9, 0xd, 0xa, 0x9, 0x9, 0x3c, 0x62, 0x72, 0x3e, - 0xd, 0xa, 0x9, 0x9, 0x9, 0x9, 0x46, 0x72, 0x65, 0x65, - 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x3c, 0x53, - 0x4d, 0x41, 0x4c, 0x4c, 0x3e, 0x3c, 0x53, 0x55, 0x50, 0x3e, - 0x54, 0x4d, 0x3c, 0x2f, 0x53, 0x55, 0x50, 0x3e, 0x3c, 0x2f, - 0x53, 0x4d, 0x41, 0x4c, 0x4c, 0x3e, 0x20, 0x69, 0x73, 0x20, - 0x61, 0x20, 0x70, 0x6f, 0x72, 0x74, 0x61, 0x62, 0x6c, 0x65, - 0x2c, 0x20, 0x6f, 0x70, 0x65, 0x6e, 0x20, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x2c, 0x20, 0x3c, 0x69, 0x3e, 0x6d, 0x69, - 0x6e, 0x69, 0x3c, 0x2f, 0x69, 0x3e, 0x20, 0x52, 0x65, 0x61, - 0x6c, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x4b, 0x65, 0x72, - 0x6e, 0x65, 0x6c, 0x20, 0x2d, 0x20, 0x61, 0x20, 0x66, 0x72, - 0x65, 0x65, 0x20, 0x74, 0x6f, 0x20, 0x64, 0x6f, 0x77, 0x6e, - 0x6c, 0x6f, 0x61, 0x64, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x72, - 0x6f, 0x79, 0x61, 0x6c, 0x74, 0x79, 0x20, 0x66, 0x72, 0x65, - 0x65, 0x20, 0x52, 0x54, 0x4f, 0x53, 0x20, 0xd, 0xa, 0x9, - 0x9, 0x9, 0x9, 0x74, 0x68, 0x61, 0x74, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, - 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, - 0x65, 0x65, 0x72, 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, - 0x2f, 0x61, 0x30, 0x30, 0x31, 0x31, 0x34, 0x2e, 0x68, 0x74, - 0x6d, 0x6c, 0x23, 0x67, 0x70, 0x6c, 0x22, 0x3e, 0x63, 0x61, - 0x6e, 0x20, 0x62, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, - 0x69, 0x6e, 0x20, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x72, 0x63, - 0x69, 0x61, 0x6c, 0x20, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61, 0x3e, - 0x2e, 0x20, 0xd, 0xa, 0x9, 0x9, 0x3c, 0x70, 0x3e, 0xd, - 0xa, 0x9, 0x9, 0x9, 0x9, 0x50, 0x6f, 0x72, 0x74, 0x73, - 0x20, 0x65, 0x78, 0x69, 0x73, 0x74, 0x20, 0x66, 0x6f, 0x72, - 0x20, 0x6d, 0x61, 0x6e, 0x79, 0x20, 0x64, 0x69, 0x66, 0x66, - 0x65, 0x72, 0x65, 0x6e, 0x74, 0x20, 0x70, 0x72, 0x6f, 0x63, - 0x65, 0x73, 0x73, 0x6f, 0x72, 0x20, 0x61, 0x72, 0x63, 0x68, - 0x69, 0x74, 0x65, 0x63, 0x74, 0x75, 0x72, 0x65, 0x73, 0x20, - 0x61, 0x6e, 0x64, 0x20, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, - 0x70, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x74, 0x6f, 0x6f, 0x6c, - 0x73, 0x2e, 0x20, 0x20, 0x45, 0x61, 0x63, 0x68, 0x20, 0x6f, - 0x66, 0x66, 0x69, 0x63, 0x69, 0x61, 0x6c, 0x20, 0x70, 0x6f, - 0x72, 0x74, 0x20, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, - 0x73, 0x20, 0x61, 0x20, 0x70, 0x72, 0x65, 0x2d, 0x63, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x64, 0xd, 0xa, - 0x9, 0x9, 0x9, 0x9, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, - 0x65, 0x20, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x6e, 0x73, - 0x74, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x68, - 0x65, 0x20, 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x20, 0x66, - 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2c, 0x20, 0x65, - 0x78, 0x70, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6e, 0x67, 0x20, - 0x6c, 0x65, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x2c, 0x20, - 0x61, 0x6e, 0x64, 0x20, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x74, - 0x74, 0x69, 0x6e, 0x67, 0x20, 0x27, 0x6f, 0x75, 0x74, 0x20, - 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x6f, 0x78, - 0x27, 0x20, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x6d, - 0x65, 0x6e, 0x74, 0x2e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0xd, - 0xa, 0x9, 0x9, 0x9, 0x9, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x66, 0x6f, 0x72, - 0x67, 0x65, 0x2e, 0x6e, 0x65, 0x74, 0x2f, 0x66, 0x6f, 0x72, - 0x75, 0x6d, 0x2f, 0x66, 0x6f, 0x72, 0x75, 0x6d, 0x2e, 0x70, - 0x68, 0x70, 0x3f, 0x66, 0x6f, 0x72, 0x75, 0x6d, 0x5f, 0x69, - 0x64, 0x3d, 0x33, 0x38, 0x32, 0x30, 0x30, 0x35, 0x22, 0x20, - 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x3d, 0x22, 0x5f, 0x62, - 0x6c, 0x61, 0x6e, 0x6b, 0x22, 0x3e, 0x46, 0x72, 0x65, 0x65, - 0x20, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x3c, 0x2f, - 0x61, 0x3e, 0x20, 0x69, 0x73, 0x20, 0x70, 0x72, 0x6f, 0x76, - 0x69, 0x64, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x61, 0x6e, - 0x20, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x20, 0x75, 0x73, - 0x65, 0x72, 0x20, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, - 0x74, 0x79, 0x2e, 0x20, 0x20, 0xd, 0xa, 0x9, 0x9, 0x9, - 0x9, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, - 0x2e, 0x68, 0x69, 0x67, 0x68, 0x69, 0x6e, 0x74, 0x65, 0x67, - 0x72, 0x69, 0x74, 0x79, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, - 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x70, 0x65, 0x6e, - 0x72, 0x74, 0x6f, 0x73, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x22, - 0x20, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x3d, 0x22, 0x5f, - 0x62, 0x6c, 0x61, 0x6e, 0x6b, 0x22, 0x3e, 0x43, 0x6f, 0x6d, - 0x6d, 0x65, 0x72, 0x63, 0x69, 0x61, 0x6c, 0x20, 0x73, 0x75, - 0x70, 0x70, 0x6f, 0x72, 0x74, 0x3c, 0x2f, 0x61, 0x3e, 0x20, - 0x61, 0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x77, 0x69, 0x74, 0x68, - 0x20, 0x61, 0x20, 0xd, 0xa, 0x9, 0x9, 0x9, 0x9, 0x3c, - 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, - 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, - 0x72, 0x65, 0x65, 0x72, 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x61, 0x30, 0x30, 0x31, 0x31, 0x35, 0x2e, 0x68, - 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x66, 0x75, 0x6c, 0x6c, 0x20, - 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x6d, 0x65, 0x6e, - 0x74, 0x20, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x69, 0x73, 0x20, 0x61, 0x6c, 0x73, - 0x6f, 0x20, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x64, - 0x2e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0xd, 0xa, 0x9, 0x9, - 0x9, 0x9, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, - 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, - 0x77, 0x2e, 0x73, 0x61, 0x66, 0x65, 0x72, 0x74, 0x6f, 0x73, - 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x22, 0x20, 0x74, 0x61, 0x72, - 0x67, 0x65, 0x74, 0x3d, 0x22, 0x5f, 0x62, 0x6c, 0x61, 0x6e, - 0x6b, 0x22, 0x3e, 0x53, 0x61, 0x66, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x3c, 0x2f, 0x61, 0x3e, 0x3c, 0x73, 0x6d, 0x61, 0x6c, - 0x6c, 0x3e, 0x3c, 0x73, 0x75, 0x70, 0x3e, 0x54, 0x4d, 0x3c, - 0x2f, 0x73, 0x75, 0x70, 0x3e, 0x3c, 0x2f, 0x73, 0x6d, 0x61, - 0x6c, 0x6c, 0x3e, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x76, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x74, 0x68, 0x61, - 0x74, 0x20, 0x68, 0x61, 0x73, 0x20, 0x62, 0x65, 0x65, 0x6e, - 0x20, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x65, 0x64, - 0x20, 0x66, 0x6f, 0x72, 0x20, 0x75, 0x73, 0x65, 0xd, 0xa, - 0x9, 0x9, 0x9, 0x9, 0x69, 0x6e, 0x20, 0x73, 0x61, 0x66, - 0x65, 0x74, 0x79, 0x20, 0x63, 0x72, 0x69, 0x74, 0x69, 0x63, - 0x61, 0x6c, 0x20, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x20, 0x49, 0x74, 0x20, - 0x69, 0x73, 0x20, 0x61, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x6c, 0x79, 0x20, 0x73, 0x69, - 0x6d, 0x69, 0x6c, 0x61, 0x72, 0x20, 0x70, 0x72, 0x6f, 0x64, - 0x75, 0x63, 0x74, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x77, 0x68, - 0x69, 0x63, 0x68, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, - 0x74, 0x65, 0x20, 0xd, 0xa, 0x9, 0x9, 0x9, 0x9, 0x3c, - 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, - 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x69, - 0x65, 0x63, 0x2e, 0x63, 0x68, 0x2f, 0x7a, 0x6f, 0x6e, 0x65, - 0x2f, 0x66, 0x73, 0x61, 0x66, 0x65, 0x74, 0x79, 0x2f, 0x66, - 0x73, 0x61, 0x66, 0x65, 0x74, 0x79, 0x5f, 0x65, 0x6e, 0x74, - 0x72, 0x79, 0x2e, 0x68, 0x74, 0x6d, 0x22, 0x20, 0x74, 0x61, - 0x72, 0x67, 0x65, 0x74, 0x3d, 0x22, 0x5f, 0x62, 0x6c, 0x61, - 0x6e, 0x6b, 0x22, 0x3e, 0x49, 0x45, 0x43, 0x20, 0x36, 0x31, - 0x35, 0x30, 0x38, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x63, 0x6f, - 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x74, 0x20, 0x64, 0x65, - 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x6d, 0x65, 0x6e, 0x74, 0x2f, - 0x73, 0x61, 0x66, 0x65, 0x74, 0x79, 0x20, 0x6c, 0x69, 0x66, - 0x65, 0x63, 0x79, 0x6c, 0x65, 0x20, 0x64, 0x6f, 0x63, 0x75, - 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, - 0x69, 0x73, 0x20, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, - 0x6c, 0x65, 0xd, 0xa, 0x9, 0x9, 0x9, 0x9, 0x28, 0x63, - 0x6f, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x6e, 0x63, 0x65, - 0x20, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x65, 0x64, - 0x20, 0x62, 0x79, 0x20, 0x54, 0xdc, 0x56, 0x20, 0x53, 0xdc, - 0x44, 0x2c, 0x20, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x69, - 0x6e, 0x67, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, - 0x72, 0x20, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x65, 0x76, 0x69, 0x64, 0x65, - 0x6e, 0x63, 0x65, 0x29, 0x2e, 0x20, 0xd, 0xa, 0x9, 0x9, - 0x9, 0x9, 0x57, 0x68, 0x69, 0x6c, 0x65, 0x20, 0x46, 0x72, - 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, 0x72, 0x67, - 0x20, 0x64, 0x6f, 0x65, 0x73, 0x20, 0x6e, 0x6f, 0x74, 0x20, - 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x20, 0x74, 0x68, - 0x65, 0x20, 0x73, 0x61, 0x6d, 0x65, 0x20, 0x73, 0x61, 0x66, - 0x65, 0x74, 0x79, 0x20, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, - 0x65, 0x73, 0x20, 0x61, 0x73, 0x20, 0x53, 0x61, 0x66, 0x65, - 0x52, 0x54, 0x4f, 0x53, 0x20, 0x74, 0x68, 0x65, 0x72, 0x65, - 0x20, 0x69, 0x73, 0x20, 0x73, 0x74, 0x69, 0x6c, 0x6c, 0x20, - 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x61, 0x6c, 0x69, 0x74, - 0x79, 0x20, 0x2d, 0x20, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x69, - 0x6e, 0x67, 0x20, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x74, 0x6f, 0x20, 0x62, - 0x65, 0x6e, 0x65, 0x66, 0x69, 0x74, 0x20, 0x64, 0x69, 0x72, - 0x65, 0x63, 0x74, 0x6c, 0x79, 0x20, 0x66, 0x72, 0x6f, 0x6d, - 0x20, 0x74, 0x68, 0x65, 0x20, 0xd, 0xa, 0x9, 0x9, 0x9, - 0x9, 0x76, 0x65, 0x72, 0x79, 0x20, 0x72, 0x69, 0x67, 0x6f, - 0x72, 0x6f, 0x75, 0x73, 0x20, 0x53, 0x61, 0x66, 0x65, 0x52, - 0x54, 0x4f, 0x53, 0x20, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, - 0x67, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x76, 0x61, 0x6c, 0x69, - 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x61, 0x63, 0x74, - 0x69, 0x76, 0x69, 0x74, 0x69, 0x65, 0x73, 0x2e, 0xd, 0xa, - 0x9, 0x9, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x9, 0x9, 0xd, - 0xa, 0x9, 0x9, 0x48, 0x65, 0x72, 0x65, 0x20, 0x61, 0x72, - 0x65, 0x20, 0x73, 0x6f, 0x6d, 0x65, 0x20, 0x72, 0x65, 0x61, - 0x73, 0x6f, 0x6e, 0x73, 0x20, 0x77, 0x68, 0x79, 0x20, 0x46, - 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, 0x72, - 0x67, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x67, 0x6f, 0x6f, - 0x64, 0x20, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x20, 0x66, - 0x6f, 0x72, 0x20, 0x79, 0x6f, 0x75, 0x72, 0x20, 0x6e, 0x65, - 0x78, 0x74, 0x20, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x2d, 0x20, 0x46, 0x72, 0x65, - 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x2e, - 0x2e, 0x2e, 0xd, 0xa, 0xd, 0xa, 0x9, 0x9, 0x3c, 0x75, - 0x6c, 0x20, 0x74, 0x79, 0x70, 0x65, 0x3d, 0x22, 0x64, 0x69, - 0x73, 0x63, 0x22, 0x3e, 0xd, 0xa, 0x9, 0x9, 0x9, 0x9, - 0x3c, 0x6c, 0x69, 0x3e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, - 0x65, 0x73, 0x20, 0x6f, 0x6e, 0x65, 0x20, 0x73, 0x6f, 0x6c, - 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x66, 0x6f, 0x72, 0x20, - 0x6d, 0x61, 0x6e, 0x79, 0x20, 0x64, 0x69, 0x66, 0x66, 0x65, - 0x72, 0x65, 0x6e, 0x74, 0x20, 0x61, 0x72, 0x63, 0x68, 0x69, - 0x74, 0x65, 0x63, 0x74, 0x75, 0x72, 0x65, 0x73, 0x20, 0x61, - 0x6e, 0x64, 0x20, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, - 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x74, 0x6f, 0x6f, 0x6c, 0x73, - 0x2e, 0x3c, 0x2f, 0x6c, 0x69, 0x3e, 0xd, 0xa, 0x9, 0x9, - 0x9, 0x9, 0x3c, 0x6c, 0x69, 0x3e, 0x49, 0x73, 0x20, 0x6b, - 0x6e, 0x6f, 0x77, 0x6e, 0x20, 0x74, 0x6f, 0x20, 0x62, 0x65, - 0x20, 0x72, 0x65, 0x6c, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x2e, - 0x20, 0x20, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, - 0x63, 0x65, 0x20, 0x69, 0x73, 0x20, 0x61, 0x73, 0x73, 0x75, - 0x72, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x74, 0x68, 0x65, - 0x20, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x69, 0x65, - 0x73, 0x20, 0x75, 0x6e, 0x64, 0x65, 0x72, 0x74, 0x61, 0x6b, - 0x65, 0x6e, 0x20, 0x62, 0x79, 0x20, 0x74, 0x68, 0x65, 0x20, - 0x53, 0x61, 0x66, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x20, 0x73, - 0x69, 0x73, 0x74, 0x65, 0x72, 0x20, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x2e, 0x3c, 0x2f, 0x6c, 0x69, 0x3e, 0xd, - 0xa, 0x9, 0x9, 0x9, 0x9, 0x3c, 0x6c, 0x69, 0x3e, 0x49, - 0x73, 0x20, 0x75, 0x6e, 0x64, 0x65, 0x72, 0x67, 0x6f, 0x69, - 0x6e, 0x67, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, - 0x6f, 0x75, 0x73, 0x20, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, - 0x20, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x6d, 0x65, - 0x6e, 0x74, 0x2e, 0x3c, 0x2f, 0x6c, 0x69, 0x3e, 0xd, 0xa, - 0x9, 0x9, 0x9, 0x9, 0x3c, 0x6c, 0x69, 0x3e, 0x48, 0x61, - 0x73, 0x20, 0x61, 0x20, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x61, - 0x6c, 0x20, 0x52, 0x4f, 0x4d, 0x2c, 0x20, 0x52, 0x41, 0x4d, - 0x20, 0x61, 0x6e, 0x64, 0x20, 0x70, 0x72, 0x6f, 0x63, 0x65, - 0x73, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x6f, 0x76, 0x65, 0x72, - 0x68, 0x65, 0x61, 0x64, 0x2e, 0x3c, 0x2f, 0x6c, 0x69, 0x3e, - 0xd, 0xa, 0x9, 0x9, 0x9, 0x9, 0x3c, 0x6c, 0x69, 0x3e, - 0x49, 0x73, 0x20, 0x74, 0x72, 0x75, 0x6c, 0x79, 0x20, 0x66, - 0x72, 0x65, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x75, 0x73, - 0x65, 0x20, 0x69, 0x6e, 0x20, 0x63, 0x6f, 0x6d, 0x6d, 0x65, - 0x72, 0x63, 0x69, 0x61, 0x6c, 0x20, 0x61, 0x70, 0x70, 0x6c, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x28, - 0x73, 0x65, 0x65, 0x20, 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, - 0x65, 0x20, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x64, 0x65, 0x74, - 0x61, 0x69, 0x6c, 0x73, 0x29, 0x2e, 0x3c, 0x2f, 0x6c, 0x69, - 0x3e, 0xd, 0xa, 0x9, 0x9, 0x9, 0x9, 0x3c, 0x6c, 0x69, - 0x3e, 0x43, 0x6f, 0x6d, 0x65, 0x73, 0x20, 0x77, 0x69, 0x74, - 0x68, 0x20, 0x61, 0x20, 0x70, 0x6f, 0x72, 0x74, 0x69, 0x6e, - 0x67, 0x2c, 0x20, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x20, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x6d, - 0x65, 0x6e, 0x74, 0x2c, 0x20, 0x6f, 0x72, 0x20, 0x61, 0x70, - 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, - 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x6d, 0x65, 0x6e, - 0x74, 0x20, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x20, - 0x73, 0x68, 0x6f, 0x75, 0x6c, 0x64, 0x20, 0x69, 0x74, 0x20, - 0x62, 0x65, 0x20, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, - 0x64, 0x2e, 0x3c, 0x2f, 0x6c, 0x69, 0x3e, 0xd, 0xa, 0x9, - 0x9, 0x9, 0x9, 0x3c, 0x6c, 0x69, 0x3e, 0x49, 0x73, 0x20, - 0x77, 0x65, 0x6c, 0x6c, 0x20, 0x65, 0x73, 0x74, 0x61, 0x62, - 0x6c, 0x69, 0x73, 0x68, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, - 0x68, 0x20, 0x61, 0x20, 0x6c, 0x61, 0x72, 0x67, 0x65, 0x20, - 0x61, 0x6e, 0x64, 0x20, 0x65, 0x76, 0x65, 0x72, 0x20, 0x67, - 0x72, 0x6f, 0x77, 0x69, 0x6e, 0x67, 0x20, 0x75, 0x73, 0x65, - 0x72, 0x20, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x3c, 0x2f, 0x6c, - 0x69, 0x3e, 0xd, 0xa, 0x9, 0x9, 0x9, 0x9, 0x3c, 0x6c, - 0x69, 0x3e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, - 0x20, 0x61, 0x20, 0x70, 0x72, 0x65, 0x2d, 0x63, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x64, 0x20, 0x65, 0x78, - 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, - 0x65, 0x61, 0x63, 0x68, 0x20, 0x70, 0x6f, 0x72, 0x74, 0x2e, - 0x20, 0x20, 0x4e, 0x6f, 0x20, 0x6e, 0x65, 0x65, 0x64, 0x20, - 0x74, 0x6f, 0x20, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x20, - 0x6f, 0x75, 0x74, 0x20, 0x68, 0x6f, 0x77, 0x20, 0x74, 0x6f, - 0x20, 0x73, 0x65, 0x74, 0x75, 0x70, 0x20, 0x61, 0x20, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x20, 0x2d, 0x20, 0x6a, - 0x75, 0x73, 0x74, 0x20, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, - 0x61, 0x64, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x63, 0x6f, 0x6d, - 0x70, 0x69, 0x6c, 0x65, 0x21, 0x3c, 0x2f, 0x6c, 0x69, 0x3e, - 0xd, 0xa, 0x9, 0x9, 0x9, 0x9, 0x3c, 0x6c, 0x69, 0x3e, - 0x48, 0x61, 0x73, 0x20, 0x61, 0x6e, 0x20, 0x65, 0x78, 0x63, - 0x65, 0x6c, 0x6c, 0x65, 0x6e, 0x74, 0x20, 0x61, 0x6e, 0x64, - 0x20, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x20, 0x66, 0x72, - 0x65, 0x65, 0x20, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, - 0x20, 0x66, 0x6f, 0x72, 0x75, 0x6d, 0x3c, 0x2f, 0x61, 0x3e, - 0x2e, 0x3c, 0x2f, 0x6c, 0x69, 0x3e, 0xd, 0xa, 0x9, 0x9, - 0x9, 0x9, 0x3c, 0x6c, 0x69, 0x3e, 0x48, 0x61, 0x73, 0x20, - 0x74, 0x68, 0x65, 0x20, 0x61, 0x73, 0x73, 0x75, 0x72, 0x61, - 0x6e, 0x63, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x63, - 0x6f, 0x6d, 0x6d, 0x65, 0x72, 0x63, 0x69, 0x61, 0x6c, 0x20, - 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x20, 0x69, 0x73, - 0x20, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, - 0x20, 0x73, 0x68, 0x6f, 0x75, 0x6c, 0x64, 0x20, 0x69, 0x74, - 0x20, 0x62, 0x65, 0x20, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, - 0x65, 0x64, 0x2e, 0x3c, 0x2f, 0x6c, 0x69, 0x3e, 0xd, 0xa, - 0x9, 0x9, 0x9, 0x9, 0x3c, 0x6c, 0x69, 0x3e, 0x50, 0x72, - 0x6f, 0x76, 0x69, 0x64, 0x65, 0x73, 0x20, 0x61, 0x6d, 0x70, - 0x6c, 0x65, 0x20, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, - 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x3c, 0x2f, 0x6c, - 0x69, 0x3e, 0xd, 0xa, 0x9, 0x9, 0x9, 0x9, 0x3c, 0x6c, - 0x69, 0x3e, 0x49, 0x73, 0x20, 0x76, 0x65, 0x72, 0x79, 0x20, - 0x73, 0x63, 0x61, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x2c, 0x20, - 0x73, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x20, 0x61, 0x6e, 0x64, - 0x20, 0x65, 0x61, 0x73, 0x79, 0x20, 0x74, 0x6f, 0x20, 0x75, - 0x73, 0x65, 0x2e, 0x3c, 0x2f, 0x6c, 0x69, 0x3e, 0xd, 0xa, - 0x9, 0x9, 0x3c, 0x2f, 0x75, 0x6c, 0x3e, 0xd, 0xa, 0x9, - 0x9, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xd, 0xa, - 0x9, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xd, 0xa, - 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, 0xa, 0xd, - 0xa, 0}; - -static const unsigned char data_logo_gif[] = { - /* /logo.gif */ - 0x2f, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, 0x67, 0x69, 0x66, 0, - 0x47, 0x49, 0x46, 0x38, 0x39, 0x61, 00, 0x1, 0x5d, 00, - 0xf7, 00, 00, 00, 00, 00, 0x4, 0x4, 0x4, 0x8, - 0x8, 0x8, 0xc, 0xc, 0xc, 0x10, 0x10, 0x10, 0x14, 0x14, - 0x14, 0x18, 0x18, 0x18, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x24, - 0x20, 0x20, 0x20, 0x24, 0x24, 0x24, 0x28, 0x28, 0x28, 0x2c, - 0x2c, 0x2c, 0x30, 0x30, 0x30, 0x30, 0x30, 0x3c, 0x34, 0x34, - 0x34, 0x38, 0x38, 0x38, 0x3c, 0x3c, 0x3c, 0x40, 0x40, 0x40, - 0x40, 0x40, 0x50, 0x44, 0x44, 0x44, 0x48, 0x48, 0x48, 0x4c, - 0x4c, 0x4c, 0x4c, 0x4c, 0x61, 0x50, 0x50, 0x50, 0x55, 0x55, - 0x55, 0x59, 0x59, 0x59, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x75, - 0x61, 0x61, 0x61, 0x65, 0x65, 0x65, 0x69, 0x69, 0x69, 0x69, - 0x69, 0x85, 0x6d, 0x6d, 0x6d, 0x71, 0x71, 0x71, 0x75, 0x75, - 0x75, 0x75, 0x75, 0x95, 0x79, 0x79, 0x79, 0x7d, 0x7d, 0x7d, - 00, 0xd6, 00, 00, 0xda, 00, 0x81, 0x81, 0x81, 0x4, - 0xda, 0x4, 00, 0xde, 00, 0xc, 0xd6, 0x10, 0x8, 0xda, - 0x8, 0x4, 0xde, 0x4, 0x81, 0x81, 0xa1, 0x85, 0x85, 0x85, - 0x10, 0xd6, 0x14, 00, 0xe2, 00, 0xc, 0xda, 0xc, 0x8, - 0xde, 0x8, 0x4, 0xe2, 0x4, 0x10, 0xda, 0x10, 0x8, 0xe2, - 0x8, 0x14, 0xda, 0x14, 0x89, 0x89, 0x89, 0xc, 0xe2, 0xc, - 0x14, 0xde, 0x14, 0x10, 0xe2, 0x10, 0xc, 0xe6, 0xc, 0x18, - 0xde, 0x18, 0x8d, 0x8d, 0x8d, 0x20, 0xda, 0x24, 0x10, 0xe6, - 0x10, 0x18, 0xe2, 0x18, 0x14, 0xe6, 0x14, 0x28, 0xd6, 0x34, - 0x20, 0xde, 0x20, 0x8d, 0x8d, 0xb2, 0x91, 0x91, 0x91, 0x24, - 0xde, 0x24, 0x20, 0xe2, 0x20, 0x28, 0xde, 0x28, 0x30, 0xda, - 0x34, 0x2c, 0xde, 0x2c, 0x95, 0x95, 0x95, 0x1c, 0xea, 0x1c, - 0x20, 0xea, 0x20, 0x2c, 0xe2, 0x2c, 0x28, 0xe6, 0x28, 0x34, - 0xde, 0x34, 0x24, 0xea, 0x24, 0x99, 0x99, 0x99, 0x28, 0xea, - 0x28, 0x34, 0xe2, 0x34, 0x2c, 0xea, 0x2c, 0x38, 0xe2, 0x38, - 0x99, 0x99, 0xbe, 0x9d, 0x9d, 0x9d, 0x2c, 0xee, 0x2c, 0x40, - 0xe2, 0x40, 0x44, 0xde, 0x4c, 0x30, 0xee, 0x30, 0xa1, 0xa1, - 0xa1, 0x44, 0xe2, 0x44, 0x38, 0xee, 0x38, 0x50, 0xde, 0x5d, - 0xa5, 0xa5, 0xa5, 0x4c, 0xe2, 0x55, 0xa1, 0xa1, 0xce, 0x50, - 0xe2, 0x55, 0x4c, 0xe6, 0x4c, 0x50, 0xe6, 0x50, 0x40, 0xf2, - 0x40, 0xaa, 0xaa, 0xaa, 0x59, 0xe2, 0x5d, 0x61, 0xde, 0x6d, - 0x65, 0xde, 0x6d, 0xae, 0xae, 0xae, 0x5d, 0xe6, 0x5d, 0x4c, - 0xf2, 0x4c, 0x65, 0xe2, 0x6d, 0x50, 0xf2, 0x50, 0xb2, 0xb2, - 0xb2, 0x55, 0xf2, 0x55, 0xae, 0xae, 0xda, 0x59, 0xf2, 0x59, - 0x69, 0xea, 0x69, 0xb6, 0xb6, 0xb6, 0x6d, 0xea, 0x6d, 0x71, - 0xea, 0x71, 0xba, 0xba, 0xba, 0x79, 0xea, 0x79, 0x5d, 0xff, - 0x5d, 0x7d, 0xea, 0x7d, 0xbe, 0xbe, 0xbe, 0x61, 0xff, 0x61, - 0x79, 0xee, 0x79, 0x65, 0xff, 0x65, 0x7d, 0xee, 0x7d, 0x99, - 0xd6, 0xba, 0x69, 0xff, 0x69, 0x81, 0xee, 0x81, 0xc2, 0xc2, - 0xc2, 0x71, 0xfa, 0x71, 0x89, 0xea, 0x89, 0x6d, 0xff, 0x6d, - 0x85, 0xee, 0x85, 0x89, 0xea, 0x91, 0x71, 0xff, 0x71, 0x89, - 0xee, 0x89, 0xc6, 0xc6, 0xc6, 0x75, 0xff, 0x75, 0x8d, 0xee, - 0x8d, 0x7d, 0xfa, 0x7d, 0xc2, 0xc2, 0xf2, 0x79, 0xff, 0x79, - 0x91, 0xee, 0x91, 0x95, 0xea, 0xa1, 0x7d, 0xff, 0x7d, 0x95, - 0xee, 0x95, 0xca, 0xca, 0xca, 0x99, 0xea, 0xa1, 0x85, 0xfa, - 0x85, 0x81, 0xff, 0x81, 0xae, 0xda, 0xce, 0x99, 0xee, 0x99, - 0x95, 0xf2, 0x95, 0x85, 0xff, 0x85, 0xb6, 0xd6, 0xda, 0xa1, - 0xea, 0xaa, 0x99, 0xf2, 0x99, 0xce, 0xce, 0xce, 0xc2, 0xce, - 0xf2, 0x89, 0xff, 0x89, 0xbe, 0xd2, 0xea, 0x8d, 0xff, 0x8d, - 0xaa, 0xea, 0xb2, 0xaa, 0xea, 0xb6, 0xa1, 0xf2, 0xa1, 0xca, - 0xce, 0xfa, 0x91, 0xff, 0x91, 0xd2, 0xd2, 0xd2, 0xa5, 0xf2, - 0xa5, 0xaa, 0xee, 0xb2, 0xcc, 0xcc, 0xff, 0x95, 0xff, 0x95, - 0xc6, 0xd6, 0xea, 0xca, 0xd2, 0xf6, 0xaa, 0xf2, 0xaa, 0x99, - 0xff, 0x99, 0xca, 0xd6, 0xee, 0xd6, 0xd6, 0xd6, 0xc2, 0xde, - 0xe2, 0x9d, 0xff, 0x9d, 0xd2, 0xd2, 0xff, 0xce, 0xd6, 0xf6, - 0xa1, 0xff, 0xa1, 0xba, 0xee, 0xc2, 0xa5, 0xff, 0xa5, 0xda, - 0xda, 0xda, 0xaa, 0xff, 0xaa, 0xb6, 0xf6, 0xb6, 0xae, 0xff, - 0xae, 0xde, 0xde, 0xde, 0xb2, 0xff, 0xb2, 0xbe, 0xf6, 0xbe, - 0xb6, 0xff, 0xb6, 0xca, 0xee, 0xd6, 0xc2, 0xf6, 0xc2, 0xe2, - 0xe2, 0xe2, 0xba, 0xff, 0xba, 0xce, 0xee, 0xde, 0xbe, 0xff, - 0xbe, 0xca, 0xf6, 0xca, 0xce, 0xf2, 0xda, 0xc2, 0xff, 0xc2, - 0xce, 0xf6, 0xce, 0xd2, 0xf2, 0xda, 0xe6, 0xe6, 0xe6, 0xc6, - 0xff, 0xc6, 0xca, 0xff, 0xca, 0xea, 0xea, 0xea, 0xce, 0xff, - 0xce, 0xd2, 0xff, 0xd2, 0xd6, 0xff, 0xd6, 0xee, 0xee, 0xee, - 0xde, 0xfa, 0xde, 0xda, 0xff, 0xda, 0xde, 0xff, 0xde, 0xe6, - 0xfa, 0xe6, 0xf2, 0xf2, 0xf2, 0xe2, 0xff, 0xe2, 0xe6, 0xff, - 0xe6, 0xee, 0xfa, 0xee, 0xea, 0xff, 0xea, 0xf6, 0xf6, 0xf6, - 0xee, 0xff, 0xee, 0xf2, 0xff, 0xf2, 0xfa, 0xfa, 0xfa, 0xf6, - 0xff, 0xf6, 0xfa, 0xff, 0xfa, 0xff, 0xff, 0xff, 00, 00, - 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, - 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, - 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, - 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, - 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, - 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, - 00, 0x21, 0xf9, 0x4, 0x1, 00, 00, 0xb1, 00, 0x2c, - 00, 00, 00, 00, 00, 0x1, 0x5d, 00, 00, 0x8, - 0xff, 00, 0x63, 0x9, 0x1c, 0x48, 0xb0, 0xa0, 0xc1, 0x83, - 0x8, 0x13, 0x2a, 0x5c, 0xc8, 0xb0, 0xa1, 0xc3, 0x87, 0x10, - 0x23, 0x4a, 0x9c, 0x48, 0xb1, 0xa2, 0xc5, 0x82, 0xbc, 0x42, - 0x79, 0x82, 0x53, 0x43, 0x46, 0x8d, 0x8f, 0x20, 0x43, 0x8a, - 0x1c, 0x49, 0xb2, 0xa4, 0xc9, 0x93, 0x28, 0x53, 0xaa, 0x5c, - 0xc9, 0xb2, 0xa5, 0xcb, 0x97, 0x30, 0x63, 0xa2, 0x94, 0x21, - 0x43, 0xe, 0xa1, 0x59, 0x17, 0x6f, 0x39, 0x4a, 0x83, 0x2, - 0x85, 0x8a, 0x9f, 0x40, 0x83, 0xa, 0x1d, 0x4a, 0xb4, 0xa8, - 0xd1, 0xa3, 0x48, 0x93, 0x2a, 0x5d, 0xca, 0xb4, 0xa9, 0xd3, - 0xa7, 0x50, 0xa3, 0x32, 0x45, 0x31, 0x4, 0x51, 0x2e, 0x8b, - 0x89, 0x74, 0x9c, 0xf0, 0xa9, 0x2, 0xc5, 0x89, 0xaf, 0x60, - 0xc3, 0x8a, 0x1d, 0x4b, 0xb6, 0xac, 0xd9, 0xb3, 0x68, 0xd3, - 0xaa, 0x5d, 0xcb, 0xb6, 0xad, 0xdb, 0xb7, 0x70, 0xe3, 0xa2, - 0xe5, 0xda, 0x53, 0x12, 0x2d, 0x8a, 0xa1, 0x94, 0xb8, 0xf0, - 0xe9, 0x15, 0xc5, 0xc, 0x1b, 0x80, 0x3, 0xb, 0x1e, 0x4c, - 0xb8, 0xb0, 0xe1, 0xc3, 0x88, 0x13, 0x2b, 0x5e, 0xcc, 0xb8, - 0xb1, 0xe3, 0xc7, 0x90, 0x23, 0x4b, 0x6, 0x8c, 0xa3, 0xb2, - 0x65, 0x1c, 0x33, 0x7a, 0xfe, 0x44, 0x21, 0xa4, 0x53, 0xac, - 0x32, 0xa0, 0x43, 0x97, 0x99, 0xf4, 0xb9, 0x4e, 0xc1, 0xd1, - 0xb1, 0xd6, 0xd0, 0xe0, 0xaa, 0x2, 0x87, 0x95, 0x3b, 0x83, - 0x2, 0xc9, 0x9e, 0x4d, 0xbb, 0xb6, 0xed, 0xdb, 0xb8, 0x73, - 0xeb, 0xde, 0xcd, 0xbb, 0xb7, 0xef, 0xdf, 0xc0, 0x83, 0xb, - 0x1f, 0x4e, 0xdc, 0x10, 0xa6, 0x51, 0x9f, 0x92, 0x7f, 0x1a, - 0xc5, 0x87, 0x49, 0xd7, 0xae, 0x28, 0x36, 0xc5, 0x9a, 0xe0, - 0xc0, 0x1, 0x80, 0xea, 0xe, 0x48, 0x94, 0x1, 0x80, 0x80, - 0xe0, 0xb, 00, 0x20, 0x62, 0xb1, 0xff, 0x58, 0xf1, 0xdc, - 0x4a, 0x24, 0x63, 0xde, 0xcc, 0xa9, 0x5f, 0xcf, 0xbe, 0xbd, - 0xfb, 0xf7, 0xf0, 0xe3, 0xcb, 0x9f, 0x4f, 0xbf, 0xbe, 0xfd, - 0xfb, 0xf8, 0xf3, 0xeb, 0xdf, 0xcf, 0xdf, 0x1c, 0x3a, 0x75, - 00, 0x6, 0xa8, 0x8e, 0x39, 0xab, 0x60, 0x1, 0x1d, 0xa, - 0x49, 0x10, 0x84, 0x40, 0x19, 0x3, 0x6d, 0x87, 0x80, 0x69, - 0x2, 0x4d, 0x30, 0x41, 0x78, 0x31, 0xb8, 0xd0, 0xd5, 0xc, - 0x83, 0x98, 0x23, 0xe0, 0x86, 0x1c, 0x76, 0xe8, 0xe1, 0x87, - 0x20, 0x86, 0x28, 0xe2, 0x88, 0x24, 0x96, 0x68, 0xe2, 0x89, - 0x28, 0xa6, 0xa8, 0x22, 0x8a, 0xe8, 0x44, 0x82, 0xc3, 0x9, - 0x3f, 0xad, 0xa0, 0x20, 0x83, 0x2, 0x95, 0x81, 0xc0, 0x5, - 0x1c, 0xc, 0x84, 00, 0x7, 0x14, 0xee, 0x85, 0x42, 0x11, - 0xaf, 0xac, 0x28, 0xe4, 0x90, 0x44, 0x16, 0x69, 0xe4, 0x91, - 0x48, 0x22, 0x29, 0xc, 0x14, 0x9a, 0xb9, 0x30, 0x63, 0x83, - 0x8, 0x18, 0xd1, 0x5d, 0x2c, 0x2f, 0x5c, 00, 0x42, 0x8f, - 0x3d, 0x29, 0x51, 0x4b, 0x92, 0x5c, 0x76, 0xe9, 0xe5, 0x97, - 0x60, 0x86, 0x69, 0xc, 0x16, 0x4d, 0x3e, 0x59, 0x63, 0x77, - 0xf, 0x4e, 0x97, 0xc5, 0x95, 0xb1, 0x54, 0xd8, 0x13, 0x12, - 0x5b, 0x86, 0x29, 0xe7, 0x9c, 0x74, 0xd6, 0x49, 0xe7, 0x98, - 0x65, 0xea, 0x48, 0xe3, 0x67, 0xdd, 0xe1, 0x18, 0x4b, 0x77, - 0x6c, 0xba, 0x89, 0x2, 0x9c, 0x76, 0x16, 0x6a, 0xe8, 0xa1, - 0x88, 0x92, 0x88, 0xa7, 0x4f, 0x4e, 0xea, 0x9, 0x65, 0x2c, - 0x59, 0x20, 0xf0, 0x42, 0x8e, 0x81, 0xfa, 0x48, 0x68, 0xa2, - 0x98, 0x66, 0xaa, 0xe9, 0x9c, 0x8b, 0xaa, 0xd0, 0xa8, 0x40, - 0xb, 0x3e, 0xfa, 0x67, 0x9a, 0x95, 0xbe, 0x19, 0x27, 0x8a, - 0xe7, 0x7c, 0x33, 0xd, 0x31, 0xae, 0xec, 0x61, 0x8d, 0x88, - 0xe9, 0xc4, 0xff, 0x2a, 0xeb, 0xac, 0xb4, 0xd6, 0x2a, 0xab, - 0x3a, 0xe9, 0xa0, 0x98, 0xe, 0x3a, 0xb6, 0xf6, 0xea, 0xeb, - 0xaf, 0xb7, 0x9e, 0x18, 0x2b, 0x3a, 0xe3, 0x70, 0x83, 0xcd, - 0x35, 0xd8, 0x54, 0x83, 0x2c, 0x36, 0xd9, 0x84, 0xe3, 0x5f, - 0xae, 0x5f, 0xee, 0x4a, 0x6c, 0x36, 0xd8, 0x54, 0x4b, 0xcd, - 0xb2, 0xd8, 0x70, 0xe3, 0x2c, 0xaf, 0xd0, 0x8a, 0xd8, 0xe9, - 0xa7, 0x7f, 0xee, 0x69, 0xa3, 0x40, 0x1c, 0x38, 0x20, 0x50, - 0xa9, 0x83, 0x9e, 0x5a, 0xe2, 0x39, 0xc0, 0x7c, 0x51, 0xc2, - 0x7, 0x1b, 0x58, 0x10, 0xc1, 0x23, 0xea, 0x90, 0xa3, 0xcd, - 0xbd, 0xe7, 0x8, 0x98, 0xe, 0x37, 0xc7, 0x14, 0xe3, 0xef, - 0xbf, 00, 0x7, 0x2c, 0xb0, 0xbf, 0xd0, 0x54, 0x53, 0xcd, - 0xb6, 0xdd, 0x82, 0xd8, 0xcd, 0x32, 0x3, 0x37, 0xec, 0xf0, - 0xc3, 0xc5, 0x2c, 0xc3, 0x4d, 0xc2, 0x20, 0xee, 0xda, 0x4d, - 0x33, 0xc5, 0x4, 0xa3, 0xb, 0x2a, 0x97, 0x50, 0x42, 0x89, - 0x22, 0x1e, 0x53, 0x62, 0x8a, 0x2d, 0xbf, 0x44, 0x8c, 0x4d, - 0x39, 0xff, 0x19, 0xb9, 0xeb, 0x38, 0xd5, 0x64, 0xfc, 0x8b, - 0x2c, 0x9c, 0x84, 0xdc, 0x48, 0xc8, 0x97, 0xb4, 0xa2, 0x4b, - 0xc9, 0xc5, 0x50, 0x3, 0x8e, 0x39, 0x14, 0x73, 0xf8, 0x2d, - 0x45, 0x82, 0x5e, 0x5a, 0x22, 0x39, 0x73, 0x6c, 0x90, 00, - 00, 0x48, 0x3, 0x60, 0xc0, 0x21, 0xe4, 0xe0, 0x11, 0xc2, - 0x7, 0x22, 0x90, 0x22, 0x20, 0x3a, 0xc3, 0x8, 0xd2, 0x7, - 0x20, 0x58, 0x67, 0xad, 0xf5, 0xd6, 0x5c, 0x3, 0x2, 0xf2, - 0x25, 0xb2, 0xfc, 0x12, 0xc, 0x35, 0xe5, 0xf4, 0xbc, 0xe1, - 0x32, 0x90, 0x74, 0xad, 0xf6, 0xda, 0x6c, 0x3, 0xd2, 0xc8, - 0x31, 0x66, 0x6f, 0x88, 0x4e, 0x38, 0xcd, 0xfc, 0x82, 0x4a, - 0x23, 0x5a, 0xb, 0xa2, 0xf7, 0xde, 0x82, 0x68, 0xff, 0xad, - 0x8, 0x27, 0xb6, 0x4, 0x83, 0x8d, 0x86, 0x42, 0xa6, 0x63, - 0xe, 0x35, 0xc1, 0xd8, 0x92, 0x76, 0xd6, 0x7c, 0x37, 0xbe, - 0x35, 0x24, 0xb2, 0x4, 0x93, 0x4d, 0xdc, 00, 0xfe, 0x3c, - 0x51, 0xd0, 0xea, 0x8a, 0x78, 0x8e, 0x1a, 0xd, 0x24, 0x9d, - 0xf4, 0x1, 0x4c, 0x1f, 0x11, 00, 0xd2, 0x3f, 0x90, 0x13, - 0x20, 0x3a, 0xc5, 0x14, 0x2, 0x48, 0xe3, 0xac, 0xb7, 0xde, - 0x7a, 0xd6, 0x94, 0xc8, 0xd2, 0xcc, 0x38, 0x20, 0x2e, 0x43, - 0x89, 0xeb, 0xb8, 0xe7, 0xee, 0x7a, 0x23, 0xcb, 0x50, 0x8e, - 0x6b, 0x38, 0xc5, 0xc8, 0x82, 0xf7, 0xea, 0xba, 0xb3, 0xee, - 0x35, 0x27, 0xbf, 0xc, 0xae, 0xe2, 0x38, 0xcd, 0xe8, 0x72, - 0x49, 0xdf, 0xc5, 0xbb, 0xee, 0x35, 0x34, 0xbe, 0x5b, 0x2e, - 0x11, 0xe6, 0x26, 0xba, 0x2, 0x81, 0xe7, 0x9f, 0x1f, 0xa2, - 0xce, 0x1e, 0xb, 0x20, 0xad, 0x1, 0x31, 0xa7, 0xa7, 0x1e, - 0xfd, 0xf9, 0x7a, 0x63, 0xd, 0x49, 0x2b, 0xd8, 0x7c, 0x68, - 0x3b, 0xfa, 0xf0, 0xf3, 0xd, 0x49, 0xef, 0x1f, 0xa2, 0x3, - 0x8d, 0xf0, 0xc4, 0xc7, 0xdf, 0xf8, 0xdf, 0xbf, 0x74, 0x23, - 0x2c, 0x36, 0x8a, 0xc3, 0x9a, 0xfe, 0x1a, 0x7, 0x89, 0xf6, - 0x81, 0xc8, 0x7a, 0x11, 0xc1, 0x1e, 0x89, 0xbe, 0xf1, 0x3, - 0x1, 0x20, 0x4d, 00, 0xa, 0x50, 0x80, 0x3, 0x41, 0xa7, - 0xe, 0x62, 0x6c, 0x60, 0x74, 0xa, 0xc8, 0x44, 0xf9, 0xa, - 0x31, 0xc0, 0xf3, 0x5d, 0x82, 0x1a, 0x66, 0x7b, 0x5f, 0x7, - 0xcf, 0x37, 0xbf, 0xb8, 0x99, 0xe3, 0x18, 0x90, 0x18, 0xe1, - 0xeb, 0x14, 0x81, 0x8a, 0x6b, 0x94, 0x28, 0x1d, 0xd0, 0xe0, - 0x84, 0xa, 0x9, 0x98, 0x8d, 0x10, 0x21, 0x10, 0x22, 0xa, - 0x1c, 0x11, 0x30, 0x3a, 0x7, 0x80, 0x2, 0x74, 0xe0, 0xf, - 0x6e, 0x38, 0xda, 0xd2, 0xff, 0xd4, 0x61, 0xd, 0x11, 0x38, - 0x70, 00, 0xde, 0x3, 0x10, 0xea, 0x38, 0x38, 0x43, 0xdc, - 0xb9, 0x8d, 0x1a, 0x1d, 0x12, 0x61, 0x13, 0x71, 0x57, 0xc2, - 0xe, 0x8d, 0xe3, 0x17, 0x8d, 0x98, 0x62, 0xeb, 0x3e, 0x48, - 0x22, 0x6a, 0x50, 0x22, 0x7f, 0x4d, 0xbc, 0x44, 0x38, 0x6c, - 0x48, 0x26, 0x46, 0x1, 0xcd, 0x52, 0x99, 0x3, 0x91, 0x2b, - 0x8, 00, 0x80, 00, 0x6c, 0x80, 0x7c, 0x99, 0x8, 0xdf, - 0x10, 0xc9, 0x91, 0x82, 0x23, 0x26, 0x51, 0x1d, 0x4b, 0xd4, - 0xa2, 0xf4, 0x1a, 0x1, 0xe, 0xe, 0x49, 0x51, 0x8f, 0x4, - 0xa4, 0xdf, 0x86, 0xc6, 0xd1, 0xb, 0xd5, 0x1, 0x92, 0x6f, - 0xd3, 0x13, 0x51, 0x36, 0xbe, 0x8, 0xc8, 0x4b, 0xd0, 0xee, - 0x80, 0x65, 0xf4, 0xd4, 0x19, 0x4d, 0x55, 0x22, 0x52, 0xb0, - 0x31, 00, 0x25, 0xc8, 0xd7, 0x23, 0x14, 0xa0, 0x34, 0xef, - 0x15, 0xd1, 0x8e, 0x1b, 0x3c, 0x64, 0xeb, 0x64, 0x41, 0xb1, - 0x3f, 0x8a, 0x52, 0x10, 0x55, 0x14, 0x90, 0x39, 0x7e, 0xc1, - 0x44, 0xf4, 0x9, 0xd0, 0x95, 0x8a, 0x70, 0xe1, 0x87, 0xc2, - 0x71, 0x9, 0x30, 0x9e, 0xef, 0x95, 0xad, 0xe3, 0xc4, 0x23, - 0x3f, 0x74, 0xc3, 0x87, 0xe4, 0x50, 0x44, 0x96, 0x6c, 0xa3, - 0x9, 0x34, 0xc9, 0xc9, 0x21, 0xe2, 0x22, 0x3, 0xa3, 0x13, - 0xc0, 0x1d, 0xf3, 0x58, 0xbc, 0x42, 0x38, 0xd3, 0x99, 0xfa, - 0x83, 0xc4, 0x2e, 0x1, 0xf4, 0xbe, 0xb5, 0xb9, 0x72, 0x6d, - 0x6f, 0x2b, 0xa5, 0x21, 0xcf, 0xe7, 0xcc, 0x46, 0x40, 0x13, - 0x7e, 0x97, 0xe8, 0xa3, 0x87, 0x52, 0x67, 0x4b, 0xdc, 0x3d, - 0xb3, 0x10, 0xde, 0xfc, 0x66, 0xdf, 0x88, 0x7, 0x8a, 0x69, - 0x76, 0xa8, 0x97, 0xe, 0xf9, 0x65, 0x88, 0x82, 0x19, 00, - 0xf, 0x4c, 0x43, 0x1d, 0xa4, 0x8, 0xdf, 0x1, 0xe8, 0xf5, - 0xff, 0x5, 0x3, 0x20, 0xed, 00, 0x1a, 0x54, 0xa2, 0xf9, - 0x72, 0xc7, 0x9, 0x9b, 0xe9, 0x42, 0x63, 0xba, 0x68, 0x5, - 0x27, 0x14, 0xb1, 0x4d, 0xdd, 0x15, 0x2, 0x6e, 0x2, 0x6a, - 0xc6, 0x25, 0xce, 0x49, 0x51, 0x75, 0xe6, 0xae, 0xa2, 0x14, - 0xa5, 0x84, 0x20, 0x1, 0xc4, 0xd, 0xbc, 0x45, 0xaf, 0x10, - 0x9c, 0x38, 0x68, 0x30, 0x96, 0x31, 0x8c, 0x60, 0xf4, 0xc2, - 0x14, 0x59, 0x3c, 0x5f, 0x2f, 0x52, 0xb6, 0x21, 0x73, 0x50, - 0xa2, 0xf, 0xba, 0x3, 0x44, 0x21, 0x2e, 0x11, 0xb8, 0x60, - 0xd8, 0x94, 0xa4, 0x36, 0xfd, 0x45, 0x2f, 0x64, 0x41, 0x9, - 0xe, 0x2, 0x42, 0x97, 0x64, 0xcc, 0xd3, 0xf5, 0xd0, 0x58, - 0x22, 0x57, 0x14, 00, 0x69, 0xa, 0xc8, 0x1, 0x30, 0xfe, - 0x50, 0x4c, 0x35, 0xec, 0x1, 0x3, 0xa3, 0x3, 0xc0, 0xf8, - 0x42, 0x69, 0xce, 0x61, 0x94, 0x43, 0x3d, 0x3, 0x32, 0x7, - 0xcb, 0x8e, 0xd1, 0x8b, 0xdb, 0x45, 0xf, 0x15, 0x84, 0x3, - 0x50, 0x37, 0x8e, 0x31, 0x8c, 0xb2, 0x9a, 0xf5, 0xac, 0xbd, - 0x50, 0x84, 0xee, 0x1a, 0xf1, 0x8b, 0xb3, 0xba, 0x75, 0x18, - 0x12, 0xeb, 0x56, 0x3a, 0x6c, 0xe1, 0xc1, 0x5e, 0x5c, 0x83, - 0xa5, 0x1, 0x2, 0xc7, 0x32, 0x4c, 0xd1, 0x50, 0xdc, 0x35, - 0x42, 0x96, 0x1b, 0xaa, 0x86, 0x47, 0x73, 0xd7, 0x8, 0x5d, - 0x54, 0xa3, 0x1c, 0x20, 0x2a, 0xc7, 0x35, 0x8a, 0xa1, 0xb, - 0x4a, 0xb4, 0x2, 0xb1, 0x90, 0x14, 0x6a, 0x2, 0x89, 0x4a, - 0x22, 0x65, 0x58, 0xe0, 0x73, 0x1a, 0xd0, 00, 0x1b, 0x7, - 0x40, 0x1, 0x8, 0x44, 0x55, 00, 0x54, 0x30, 0x9d, 0x40, - 0x5b, 0xd9, 0xba, 0x42, 0x2c, 0xe3, 0x43, 0xe6, 0xa8, 0x6, - 0x5f, 0x8b, 0x7, 0x8a, 0xb0, 0x8e, 0x8, 0x1c, 0x69, 0xcb, - 0x1d, 0x28, 0xf0, 0x2a, 0x22, 0x6c, 0xff, 0xc, 0x96, 0xa0, - 0xd0, 0x80, 0xac, 0x87, 0xb8, 0x21, 0xb, 0xd2, 0xe2, 0xce, - 0x16, 0xae, 0x5, 0x10, 0x5d, 0x1d, 0x1a, 0xc, 0x77, 0x82, - 0x8, 0x1d, 0xd7, 0x98, 0x5c, 0x50, 0xcd, 0x78, 0x39, 0xca, - 0x8e, 0x88, 0x1c, 0x6a, 0x38, 0x2a, 0xf7, 0xa6, 0xb, 00, - 0x6, 0xdc, 0x11, 0x8f, 0x3, 0x75, 0x9d, 0x69, 0x7d, 0x97, - 0xd, 0x19, 0xea, 0xae, 0xb5, 0x26, 0xea, 0x46, 0x6c, 0x71, - 0x7, 0x5e, 0x12, 0xcd, 0x35, 0x7a, 0x9c, 0xa8, 0xc6, 0x6b, - 0x65, 0x11, 0xbd, 0x4b, 0x18, 0x50, 0x40, 0xa6, 0x28, 0x67, - 0xe3, 0x38, 0xe1, 0x3f, 0x2e, 0xc1, 0xb3, 0x21, 0xf2, 0xc, - 0x91, 0x5, 0xa3, 0x4a, 0x5d, 0xa4, 0x11, 0x20, 0x7, 0xda, - 0x98, 0x5a, 0x76, 0x4b, 0xbb, 0x51, 0xf, 0xe9, 0xa2, 0x78, - 0x94, 0x8, 0x6e, 0x88, 0xc4, 0x2b, 0xdf, 0xbd, 0x95, 0x77, - 0x44, 0xd9, 0x78, 0x9e, 0xee, 0x52, 0x29, 0x22, 0x70, 0x70, - 0xa2, 0xc1, 0x7b, 0x53, 0xc4, 0x4a, 0x37, 0x14, 0xdf, 0xef, - 0xea, 0x16, 0x49, 0xf7, 0x65, 0x48, 0x7e, 0x43, 0xf4, 0x87, - 0x8, 0xf0, 0x77, 0xba, 0x3, 0x8, 0x81, 0x32, 0xe4, 0x36, - 0x60, 0xd6, 0x6d, 0x37, 0x44, 0xd4, 0x50, 0x4, 0x86, 0x5, - 0x71, 0x9, 0x5, 0x2b, 0x6c, 0xbc, 0xae, 0x7b, 0xb0, 0x88, - 0x82, 0xe1, 0xdb, 0xd6, 0x99, 0x62, 0x8c, 0x25, 0x82, 0x86, - 0x8c, 0xbf, 0xb, 0xe4, 00, 0x5d, 0x58, 0x77, 0xa6, 0xb0, - 0x31, 0x91, 0x42, 0xbc, 0x90, 0x11, 0x83, 0x88, 0x1c, 0x7f, - 0xd8, 0xc0, 0x1, 0xa8, 0xbb, 00, 0x13, 0xac, 0x98, 0xc5, - 0x3d, 0xe6, 0xdb, 0x8b, 0x41, 0xd4, 0xd1, 0x19, 0x27, 0x39, - 0xbc, 0x38, 0x6e, 0x9d, 0x8e, 0x2b, 0xd6, 0x8a, 0x66, 0x42, - 0xe3, 0x44, 0xe8, 0x38, 0x32, 0x61, 0xb, 0xac, 0x66, 0xdc, - 0x85, 0xb3, 0xff, 0x4b, 0x4c, 0x56, 0x88, 0x93, 0x43, 0x64, - 0xd, 0x35, 0x60, 0xe0, 0x1, 0xf, 0x80, 0x40, 0x9e, 0x3b, - 0xc0, 0xb4, 0xe, 0x31, 0x53, 0xbb, 0x5, 0xee, 0x50, 0x31, - 0xd4, 0x6a, 0xce, 0xd, 0x97, 0x88, 0xc1, 0xb2, 0x55, 0x32, - 0x87, 0xba, 0x1, 0xa, 0x4, 0x7f, 0x98, 0x44, 0xc7, 0x18, - 0x72, 0xee, 0xc, 0xd, 0xa0, 0x5a, 0x16, 0x4f, 0x16, 0x45, - 0x3e, 0x52, 0x9c, 0x13, 0x22, 0x28, 0x2d, 0x9, 0xe9, 0x1c, - 0xa0, 0x6, 0xf5, 0x71, 0x5b, 0xdc, 0xb8, 0x2d, 0x7b, 0x28, - 0x1d, 0xec, 0xcd, 0x9d, 0x22, 0xde, 0x4b, 0x22, 0x44, 0x93, - 0x57, 0xd1, 0x1b, 0x42, 0x61, 0xf1, 0x7e, 0x41, 0xdb, 0x11, - 0x95, 0x83, 0x91, 0xb9, 0x3, 0xae, 0x80, 0x40, 0x31, 0xe3, - 0xf4, 0xb5, 0xf0, 0xd1, 0x43, 0xda, 0x34, 0x42, 0x82, 0x16, - 0x24, 0x39, 0xfd, 0x99, 0xc0, 0x21, 0x5a, 0x64, 0xee, 00, - 0x51, 0xe3, 0x13, 0xb9, 0x3a, 0xc7, 0xb0, 0x16, 0xd0, 0x81, - 0x1d, 0x5a, 0x5f, 0x61, 0xf1, 0x1a, 0xc9, 0x99, 0xe6, 0x71, - 0xaf, 0xfb, 0x56, 0x8, 0x59, 0x40, 0x83, 0x1b, 0xd1, 0x56, - 0x54, 0x24, 0xc1, 0x85, 0x43, 0x1f, 0xf9, 0x60, 0x14, 0xbe, - 0x3, 0xd1, 0x39, 0xc8, 0x41, 0x8e, 0x69, 0x28, 0x23, 0x5f, - 0xf5, 0x23, 0xb5, 0x96, 0x4f, 0xeb, 0x21, 0x74, 0x60, 0xa3, - 0xd1, 0xba, 0xb, 0x46, 0xba, 0x17, 0x1d, 0x66, 0xd6, 0x8d, - 0xf9, 0x43, 0xba, 0xc8, 0xb2, 0x96, 0x8d, 0x4b, 0x22, 0x1e, - 0x7f, 0xb7, 0x86, 0x1, 0x7a, 0x76, 0x4c, 0xbd, 0xd6, 0x8b, - 0x66, 0x5c, 0x23, 0x1c, 0xb5, 0x2e, 0x91, 0xb0, 0xf, 0x52, - 0x21, 0x15, 0x9c, 0xa0, 0x5, 0x8e, 0xd8, 0x37, 0x87, 0xb4, - 0xf1, 0x88, 0x26, 0xc0, 0x20, 0x5, 0x21, 0x18, 0x1, 0x30, - 0xd4, 0xb1, 0x6e, 0x76, 0x63, 0xf9, 0xa2, 0xc1, 0xff, 0x8, - 0xc7, 0x38, 0x56, 0xbe, 0xf2, 0x6e, 0x60, 0x3, 0x71, 0x12, - 0xce, 0xdd, 0x97, 0x9d, 0xdd, 0xef, 0xc6, 0xfd, 0xbb, 0x43, - 0xe6, 0x8, 0xb8, 0xee, 0x28, 0x1, 0x6c, 0x12, 0x5d, 0xe3, - 0xb6, 0xad, 0x6b, 0x44, 0x33, 0xe4, 0xda, 0x61, 0xf8, 0x61, - 0x4d, 0x11, 0xb2, 0x28, 0xc6, 0xb7, 0xc3, 0xed, 0xb3, 0x71, - 0x9f, 0xd1, 0xe2, 0x18, 0xd7, 0x78, 0x80, 0xce, 0x91, 0x9, - 0x13, 0x50, 0x60, 00, 0x49, 0x2b, 00, 0xd3, 0x32, 0x41, - 0x85, 0x26, 0x50, 0x81, 0x7c, 0x54, 0xc5, 0x1d, 0xe0, 0x74, - 0x61, 0x8b, 0xb2, 0xdb, 0x42, 0x16, 0x97, 0x90, 0x31, 0x86, - 0x57, 0xc7, 0x9, 0x56, 0x1f, 0xba, 0xe6, 0x7c, 0xbb, 0x39, - 0x87, 0xca, 0xd1, 0x5b, 0xdd, 0xb5, 0x82, 0xe9, 0x1d, 0x52, - 0x78, 0xeb, 0x86, 0x81, 0x57, 0x68, 00, 0xfd, 0x9a, 0x85, - 0x40, 0xc5, 0x2f, 0xae, 0xd1, 0x73, 0x5e, 0x3a, 0xbd, 0xb9, - 0x50, 0xcf, 0xf8, 0xba, 0xe, 0x61, 0x1, 0x7, 0x7a, 0x6e, - 0x69, 0xe4, 0xa0, 0x42, 0x2, 0x8, 0x90, 0x80, 0x31, 0xc0, - 0x1b, 0xbb, 0x2, 0x47, 0x24, 0xd7, 0x16, 0xe, 0xd2, 0x33, - 0xa7, 0x48, 0xef, 0x36, 0x67, 0x3a, 0x38, 0x50, 0x51, 0x3c, - 0x4a, 0x9f, 0x68, 0x1c, 0xb8, 0xc6, 0x5d, 0x30, 0xf0, 0x8a, - 0xe, 0x5b, 0xe0, 0x52, 0x7f, 0x58, 0xbb, 0x84, 0x61, 0xf1, - 0x3e, 0x71, 0x83, 0x54, 0xfc, 0xe2, 0x8a, 0x27, 0x11, 0x31, - 0x90, 0x39, 0x5d, 0xa, 0xba, 0x61, 0xca, 00, 0x8, 0xc1, - 0x3d, 0x47, 0x7b, 0x48, 0x99, 0x52, 0xc2, 0xae, 0x11, 0x1f, - 0x11, 0xe8, 0xe3, 0xce, 0xf4, 0x6b, 0x78, 0x37, 0x77, 0x81, - 0x2e, 0x11, 0xea, 0x7b, 0xbd, 0xfa, 0xd, 0x75, 0xf7, 0xf5, - 0x1d, 0xbc, 0x44, 0x2f, 0xc4, 0xb9, 0x5c, 0x49, 0x22, 0x1e, - 0xf7, 0x52, 0x3f, 0xc7, 0xff, 0x18, 0xa4, 0xdb, 0x43, 0x3, - 0x4c, 0xd0, 0x7b, 0xb8, 0x80, 0x2a, 00, 0x1e, 0xe0, 0x8a, - 0xb0, 0x4f, 0x91, 0x7f, 0x84, 0x17, 0xd2, 0xf2, 0x1d, 0xcc, - 0x74, 0x6a, 0xc4, 0x1c, 0x77, 0x9e, 0x4f, 0xd1, 0xf4, 0xf3, - 0x5d, 0xeb, 0x6a, 0xc8, 0x70, 0xdb, 0xb, 0x67, 0xa, 0x8, - 0x17, 0x59, 0xcc, 0x35, 0x54, 0x89, 0x27, 0x75, 0xc4, 0x40, - 0x1, 0xf, 0x4, 0x1, 0x47, 0x70, 0x4, 0x53, 0x36, 0x44, - 0xd6, 0x10, 0x2, 0xe, 0x44, 00, 0xf4, 0x42, 0x7c, 0x7a, - 0xc4, 0x9, 0xb9, 0x45, 0x24, 0xf3, 0xa7, 0x37, 0x72, 0xb7, - 0x21, 0xf6, 0x57, 0x3c, 0xf9, 0x87, 0x22, 0xfb, 0x97, 0x3b, - 0xd5, 0xc7, 0x21, 0xd9, 0x60, 0xb, 0xc3, 0x33, 0x43, 0x3f, - 0xc5, 0xd, 0xdd, 0x47, 0x6e, 0xbe, 0x64, 0x21, 0xe0, 0x47, - 0x22, 0x46, 0xd5, 0x46, 0x14, 0xb0, 0x75, 0x72, 0xe4, 0x3d, - 0x74, 0xe4, 0x40, 0xca, 0xe4, 0x7e, 0x53, 0x4, 0xa, 0xd4, - 0x90, 0x7c, 0x6f, 0x37, 0x63, 0x1d, 0x28, 0x20, 0x1f, 0xa8, - 0x3b, 0x50, 0xb4, 0x3c, 0xa9, 0xe7, 0x3a, 0x25, 0xc8, 0x21, - 0xe6, 0xd0, 0xc, 0xa0, 0x50, 0x8, 0x57, 0x33, 0x43, 0x98, - 0x46, 0x80, 0xde, 0x67, 0x80, 0x31, 0x38, 0x22, 0xf4, 0x34, - 0x2, 0xc4, 0xd4, 0x49, 0xea, 0xf0, 0xd, 0x25, 00, 0x4a, - 0x16, 0x8, 0x48, 0x1a, 0x5, 0x84, 0xca, 0x7, 0x77, 0xf4, - 0x37, 0x22, 0xdc, 0x60, 0xa, 0xc5, 0x53, 0xc, 0x52, 0xc7, - 0x21, 0x23, 0x88, 0x3b, 0xb4, 0x96, 0x58, 0xc5, 0x60, 0xa, - 0x29, 0x84, 0x7d, 0xe8, 0xa3, 0x8, 0x4b, 0xd8, 0x74, 0x92, - 0x55, 0x6e, 0x7, 0x48, 0x22, 0xf4, 0x34, 0x4c, 0xea, 0xb0, - 0x49, 0x5c, 0x8, 0xc, 0x1a, 0x90, 0x4c, 0xcb, 0x24, 0x6f, - 0xc6, 0x63, 0x87, 0xd2, 0xe3, 0x5e, 0xf2, 0x67, 0x86, 0x1c, - 0xff, 0xc8, 0x74, 0xe5, 0x60, 0xb, 0x99, 0xa7, 0x37, 0x60, - 0xa5, 0x22, 0xe1, 0xe0, 0x88, 0x82, 0x50, 0x8, 0x79, 0xf8, - 0x21, 0xd8, 0xb0, 0x31, 0x29, 0xb4, 0x4e, 0x46, 0xf7, 0x63, - 0x86, 0xb7, 0x87, 0x2f, 0xd8, 0x87, 0x58, 0x78, 0x49, 0x22, - 0x60, 0x3a, 0x71, 0x4, 00, 0xfb, 0xa4, 0xe, 0x73, 0x10, - 0x3e, 0x3d, 0x74, 0x88, 0x93, 0xa8, 0x37, 0x15, 0x75, 0x3e, - 0x9b, 0x8, 0x66, 0x42, 0x8, 0x89, 0x92, 0xa8, 0x3b, 0x9c, - 0x50, 0x78, 0xb5, 0xf5, 0x77, 0x8d, 0xf3, 0x36, 0x64, 0x28, - 0x37, 0xd4, 0xf0, 0x32, 0x3d, 0xe5, 0x53, 0xe7, 0x23, 0x8c, - 0x1e, 0x52, 0x7b, 0x5, 0x71, 0x7b, 0x51, 0xe7, 0x87, 0x6c, - 0x4, 00, 0x11, 0x30, 0x7, 0xda, 0x70, 0x8, 0xc5, 0x84, - 0x7, 0xb8, 0xd0, 0x1, 0x51, 0x25, 0x1, 0xb8, 0xc0, 0x83, - 0xac, 0x63, 0xa, 0xc1, 0x50, 0x52, 0x25, 0xa5, 0x38, 0xd1, - 0x3, 0x9, 0x2c, 0xa8, 0x22, 0x1b, 0x28, 0x8, 0x43, 0x78, - 0x3a, 0xc3, 0x75, 0x51, 0x4, 0x37, 0x22, 0x91, 0x36, 0x63, - 0x94, 00, 0x42, 0x28, 0x62, 0xe, 0xd7, 0x30, 0xc, 0xb6, - 0xd0, 0x53, 00, 0x8, 0x8, 0xa6, 0x27, 0x20, 0xcc, 0x48, - 0x10, 0xce, 0x98, 0x7b, 0x22, 0x42, 0xc, 0xdb, 0x83, 0x34, - 0x10, 0x30, 0x2, 0x1f, 0x70, 0x54, 0x3, 0xb0, 0x1, 0x19, - 0xe0, 0x78, 0x1, 00, 0x3, 0xdf, 0xe0, 0x8d, 0xf3, 0xd6, - 0x52, 0xcd, 0xb0, 0x5a, 0xba, 0x13, 0x7d, 0xad, 0x86, 0x89, - 0xeb, 0x18, 0x20, 0x85, 0x44, 0x6d, 0x29, 0x92, 0xe, 0xd7, - 0x26, 0x73, 0xd5, 0x96, 0x22, 0xe5, 0x50, 0xd, 0xbf, 0x80, - 0x89, 0x7b, 0xa3, 0xb, 0x85, 0xf7, 0x8f, 0x3, 0x11, 0x90, - 0x52, 0x47, 0xe, 0x47, 0x80, 0x75, 0x49, 0x73, 0x62, 0x9e, - 0x73, 00, 0x7b, 0x20, 0x60, 0x93, 0xff, 0x68, 0x5a, 0x1c, - 0x92, 0xe, 0xd7, 0x80, 0x6f, 0xb2, 0xf5, 0x8e, 0x22, 0x92, - 0x8e, 0x1b, 0x9, 0x20, 0xc7, 0x90, 0x52, 0xb9, 0xc3, 0x86, - 0xf5, 0x98, 0x84, 0xad, 0xf3, 0x58, 0x44, 0x52, 0xe, 0xd0, - 0x70, 0x7f, 0xb8, 0x83, 0xa, 0x23, 0xe9, 0x8f, 0x87, 0x67, - 0x85, 0xcf, 0x28, 0x83, 0x11, 0xd0, 0x5f, 0x9e, 0x23, 00, - 0x2a, 0x86, 0x93, 0x17, 0x15, 0x7d, 0xe9, 0x50, 0x94, 0xe, - 0x35, 0x80, 0x34, 0x97, 0x8b, 0x3e, 0x7, 0x95, 0x62, 0xe6, - 0x8b, 0x1f, 0x42, 0xd, 0xc0, 0xd8, 0x38, 0xba, 0x30, 0x8c, - 0x41, 0xd6, 0x96, 0x7c, 0xd3, 0x76, 0xcb, 0x58, 0x95, 0x93, - 0x65, 0x8a, 0xcf, 0xf5, 0x5, 0x47, 0xa3, 0x95, 0x1, 0x60, - 0x1, 0x1, 0x25, 0x91, 0x7b, 0x63, 0x6a, 0x2, 0x12, 0xe, - 0xed, 0xa8, 0x7a, 0x70, 0x99, 0x77, 0x1a, 0x89, 0x77, 0xe5, - 0xa0, 0x86, 0x6b, 0x5, 0x58, 0x25, 0x52, 0x66, 0xba, 0xa3, - 0x8, 0x48, 0x59, 0x24, 0xe6, 00, 0x99, 0x84, 0x35, 0x74, - 0xef, 0x64, 0x97, 0x7c, 0x78, 0x85, 0xb, 0xa4, 0x5, 0x11, - 0x20, 0x93, 0xdc, 0x53, 00, 0x1a, 0xf0, 0x7, 0xa2, 0x5, - 0x98, 0xb4, 0x88, 0x91, 0xea, 0xd0, 0xc, 0x46, 0xe9, 0x3a, - 0xd2, 0xf4, 0x79, 0x89, 0x59, 0x22, 0x85, 0x89, 0x3b, 0xb2, - 0x80, 0x77, 00, 0x92, 0xd, 0x72, 0xb9, 0x37, 0xf4, 0x75, - 0x24, 0xe9, 0xa0, 0x9a, 0xf2, 0x48, 0x8f, 0x7a, 0x58, 0x80, - 0x77, 0xc9, 0x99, 0x25, 0x2, 0xc, 0x29, 00, 0x1, 0xb, - 0x10, 0x41, 0xa, 0xd0, 00, 0x14, 0xd0, 0x4, 0xef, 0xc6, - 0x21, 0xc7, 0xe6, 0x62, 0xa8, 0x19, 0xe, 0x96, 0xa9, 0x5d, - 0xea, 0x85, 0x22, 0x42, 0x49, 0x9b, 0x6c, 0xd9, 0x6b, 0x8d, - 0x10, 0x82, 0x21, 0x62, 0xe, 0xa4, 0x57, 0x3c, 0x77, 0x87, - 0x24, 0xd9, 0xff, 0x99, 0x3b, 0x52, 0x59, 0x97, 0xa4, 0x18, - 0x4f, 0x30, 0x78, 0x95, 0x22, 0x42, 0xe, 0x99, 0x90, 0x9, - 0xb8, 0x40, 0xc, 0xd3, 0x60, 0xd, 0xc0, 0xf0, 0x8, 0x8f, - 0x90, 0x9, 0xd6, 0x40, 0xe, 0x97, 0x77, 0x72, 0xe6, 0x84, - 0x9a, 0xea, 0xc0, 0x4a, 0xdf, 0x75, 0x98, 0x1b, 0x72, 0x9d, - 0x2f, 0x54, 0x74, 0x4, 0x75, 0x8e, 0xdd, 0xc9, 0x4a, 0xbd, - 0x6, 0x9, 0xd4, 0xe3, 0x9c, 0xb4, 0xa9, 0x2f, 0x1d, 0x99, - 0x3b, 0xad, 0xc0, 0x7d, 0x1b, 0xc2, 0x92, 0x2, 0xe1, 0x92, - 0x7e, 0x38, 0x41, 0xf, 0x10, 0x5a, 0x25, 0xf2, 0x9c, 0xa5, - 0xc6, 0x9f, 0xce, 0xb7, 0x6c, 0x85, 0x90, 0x69, 0x19, 0x69, - 0x96, 0x25, 0x42, 0x4e, 0xc5, 0x83, 0xa, 0x6, 0xea, 0x21, - 0xab, 0xd4, 0x57, 0xae, 0x53, 0x89, 0x26, 0xd8, 0xb, 0x87, - 0x75, 0x22, 0xdc, 0x80, 0x92, 0xfd, 0x18, 0x20, 0x14, 0xda, - 0x26, 0xe9, 0x29, 0x90, 0xf3, 0x14, 0x8d, 0x1, 0x90, 0x3, - 0xf9, 0x19, 0x22, 0x1c, 0x3a, 0x6f, 0x94, 0x83, 0xe, 0xa9, - 0x96, 0x3b, 0x10, 0x85, 0x8b, 0x89, 0x66, 0x22, 0x20, 0x9, - 0x80, 0x3e, 0x68, 0x63, 0xe9, 0xd0, 0xd, 0x85, 0xb4, 0x6d, - 0x85, 0x80, 0x99, 0x1c, 0x22, 0x64, 0x7d, 0x80, 0xa, 0xcd, - 0x80, 0xd, 0x10, 0xe7, 0x3b, 0xe9, 0x90, 0xd, 0x8c, 0xc9, - 0x7f, 0xe6, 0x9, 0x9c, 0x9b, 0xa9, 0x9e, 0x3b, 0x8a, 0x34, - 0x1, 0x90, 0x2, 0x11, 0x49, 0x22, 0x41, 0x1a, 0x98, 0xfc, - 0xa9, 0xe, 0xf, 0x2a, 0x76, 0xd, 0xaa, 0xe, 0x2, 0x6a, - 0x22, 0xd4, 0x80, 0x92, 0x7d, 0xa3, 0x61, 0xd0, 0xc0, 0x2c, - 0x2a, 0x97, 0xd, 0xd5, 0x70, 0xc, 0x5f, 0x7a, 0x69, 0xc9, - 0x77, 0x60, 0xab, 0xe3, 0x35, 0xa8, 0x10, 0x31, 0xd0, 0x90, - 0x5c, 0xe0, 0xc0, 0x72, 0xc6, 0x42, 0xd, 0xc7, 0xff, 0x80, - 0x96, 0x5b, 0x74, 0xd, 0x71, 0x73, 0xa3, 0x16, 0xaa, 0x43, - 0x3c, 0x14, 00, 0x19, 0x30, 0x72, 0x6a, 0x8a, 0x88, 0xa7, - 0xe9, 0x3b, 0xd7, 0xe0, 0xa8, 0xf2, 0x33, 0x95, 0x41, 0xf9, - 0x9a, 0x4a, 0xaa, 0x6d, 0xd1, 0xb3, 0x3a, 0x94, 00, 0x38, - 0xb6, 0x70, 0x9, 0x59, 0xb4, 0x8f, 0x94, 0x90, 0xa2, 0x1b, - 0x52, 0xa4, 0x7b, 0x3, 0x3b, 0x5, 0xd5, 0xb, 0xbd, 0xa0, - 0xb, 0xa6, 0x30, 0x51, 00, 0x28, 0x8, 0x6f, 0x39, 0x8a, - 0x62, 0x5a, 0x8a, 0xc2, 0x9, 0x22, 0xdf, 0xd0, 0x4, 0xfe, - 0xa4, 0x34, 0x4d, 0x10, 0x60, 0x23, 0xb2, 0xa6, 0x9b, 0x7a, - 0x5c, 0x3e, 0xa9, 0x5d, 0xbf, 0xd0, 0x86, 0x72, 0x2a, 0xaa, - 0x26, 0x32, 0xe, 0xd3, 0x79, 0x4b, 0xb9, 0x9a, 0x3e, 0x8a, - 0xc0, 0x9f, 0x97, 00, 0x53, 0xcb, 0xa6, 0x88, 0x4e, 0x44, - 0x9, 0xd5, 0x40, 0x39, 0x92, 0x9a, 0xa3, 0x6d, 0xa8, 0xd, - 0x29, 00, 0x7c, 0xd, 0x50, 0x2, 0x99, 0xa0, 0xc, 0xea, - 0xba, 0xae, 0xea, 0x6a, 0xd, 0x97, 0x87, 0xac, 0x99, 0xd8, - 0xa6, 0x6e, 0xca, 0x5a, 0x6a, 0xc9, 0x6f, 0x24, 0x7a, 0x22, - 0xd8, 0xa0, 0x86, 0xd5, 0x1a, 0x3f, 0x5e, 0xa3, 0x6f, 0x20, - 0x92, 0xad, 0xc5, 0x57, 0x8, 0x71, 0xc8, 0xab, 0x55, 0x18, - 0x9c, 0x64, 0xfa, 0x64, 0xa4, 0xf0, 0x5, 0x16, 0x20, 0x93, - 0x4, 00, 0x1, 0x14, 0xf0, 0xb0, 0x10, 0xfb, 0xb0, 0x23, - 0x70, 0x65, 0x98, 0xf7, 0x95, 0xe9, 0x66, 0x9b, 0x33, 0x6, - 0x9, 0xd5, 0x39, 0xa2, 0x49, 0xaa, 0x2b, 0xf9, 0xca, 0xa2, - 0x53, 0xe4, 0x36, 0xc3, 00, 0x94, 0x95, 0xa6, 0xad, 0x7a, - 0x54, 0x8, 0xb6, 0x20, 0xa1, 0x99, 0x79, 0x9e, 0xf8, 0x25, - 0xae, 0x24, 0x32, 0xd, 0x1e, 0xb0, 00, 0x6, 0x40, 0x93, - 0xd4, 0x5, 0x1, 0xed, 0xff, 0x17, 0x86, 0x4, 0x96, 0x6e, - 0x69, 0xd6, 0x6b, 0xbb, 0xca, 0xb1, 0xaf, 0xa6, 0x22, 0x5d, - 0xaa, 0xb, 0x92, 0x16, 0xb2, 0x80, 0x30, 0x3f, 0xc3, 0x68, - 0xe, 0x96, 0xa6, 0x45, 0xab, 0x93, 0xb2, 0xde, 0xa2, 0x99, - 0xbe, 0xda, 0x2, 0x8b, 0x20, 0x75, 0xca, 0xa0, 0x80, 0x5a, - 0xc9, 0x3d, 0x36, 0x6b, 0x9a, 0xf1, 0x9a, 0x6e, 0xe9, 0x30, - 0x6d, 0x32, 0x27, 0xa2, 0x37, 0x76, 0xaf, 0xfa, 0x37, 0xc, - 0x8b, 0xa3, 0x82, 0x32, 0x85, 0xa, 0xd5, 00, 0x97, 0xe1, - 0xa0, 0x94, 0x1d, 0x4, 0x8, 0x7d, 00, 0x9, 0xbd, 0xe0, - 0xb5, 0x2b, 0xdb, 0xab, 0xe8, 0x9, 0x75, 0x51, 0x5b, 0x59, - 0x54, 0x5b, 0xb5, 0x49, 0x73, 0xb5, 0xa3, 0xd5, 0x60, 0xab, - 0x23, 0xaf, 0xea, 0xc0, 0xd, 0x43, 0xdb, 0x3a, 0x14, 0xb6, - 0x60, 0xd0, 0xa, 0xb4, 0xd7, 0x10, 0x40, 0xdc, 0xba, 0xad, - 0x33, 0x55, 0x5c, 0x24, 0x92, 0xd, 0x8a, 0x10, 0x85, 0x23, - 0x84, 0x35, 0x8d, 0xc0, 0x9, 0x90, 0x2a, 0x6e, 0x2c, 0x2b, - 0x62, 0xe9, 0x59, 0xb7, 0x23, 0x32, 0xb5, 0x78, 0xeb, 0x39, - 0x7a, 0x8b, 0x79, 0x7c, 0x2b, 0x8, 0x47, 0x5a, 0x31, 0x6a, - 0x1b, 0xab, 0x82, 0x10, 0x9e, 0xca, 0x77, 0x9b, 0x3f, 0x15, - 0xa7, 0x1f, 0x52, 0xd, 0xa9, 0xa, 0xb2, 0xaf, 0xb3, 0x37, - 0x8d, 0x80, 0xa, 0xc3, 00, 0xb7, 0xad, 0x8b, 0xa, 0x1f, - 0x3, 0x3d, 0x89, 0x6b, 0xba, 0xdc, 0x46, 0x9, 0xa8, 0xf0, - 0x83, 0x26, 0x12, 0xae, 0x74, 0x2b, 0x75, 0xd6, 0x30, 0x2, - 0x11, 0x10, 0x1, 0x12, 0x90, 0xbc, 0xca, 0xbb, 0xbc, 0x12, - 0x80, 0xbc, 0x21, 00, 0x76, 0x78, 0x54, 0xd, 0xb2, 0x80, - 0xa, 0xad, 0x50, 0xbd, 0xd6, 0x7b, 0xbd, 0xdf, 0xa, 0x2b, - 0xc1, 0x40, 0xbd, 0xd7, 0xdb, 0xbd, 0xad, 0x90, 0x72, 0x24, - 0xff, 0x32, 0xe, 0xb6, 0xc0, 0xbd, 0xde, 0x5b, 0xbd, 0x35, - 0x2a, 0x24, 0xe0, 0x30, 0xc, 0xb2, 0xd0, 0xa, 0xa0, 0x90, - 0x4e, 0x18, 0xa5, 0x8, 0x8d, 00, 0xa, 0x36, 0xb3, 0xa0, - 0x29, 0x2, 0xe, 0xc7, 0x70, 0x76, 0xad, 0xa0, 0xaa, 0xc, - 0x85, 0x51, 0xcf, 0x14, 0xbf, 0xad, 0x10, 0x36, 0x64, 0x29, - 0x71, 0x4e, 0x3b, 0xb7, 0x17, 0xa7, 0xb9, 0x2, 0x62, 0xd, - 0x87, 0x80, 0x7, 0x73, 0x80, 0x7, 0x60, 0x77, 0xe, 0xab, - 0x42, 0xc, 0x10, 0x1c, 0xc1, 0x12, 0x2c, 0xc1, 0xd3, 0x90, - 0x9f, 0xe9, 0x50, 0xe, 0x18, 0x9c, 0xc1, 0x1a, 0x8c, 0xc1, - 0x52, 0x67, 0xe, 0x1b, 0xfc, 0xc1, 0x18, 0xc, 0xa0, 0x3, - 0x2, 0xc2, 0x1b, 0xec, 0x25, 0xe8, 0x90, 0xd, 0xc7, 0xf0, - 0xb, 0x2a, 0xbc, 0xc2, 0x2b, 0x3c, 0xc, 0xdf, 0xe6, 0xac, - 0x40, 0x9a, 0xd, 0xd0, 0x30, 0xc, 0x2c, 0x5c, 0xc3, 0x62, - 0xf3, 0x6d, 0xf5, 0xda, 0x82, 0x4f, 0x57, 0xc0, 0x3d, 0x93, - 0x9, 0x18, 0x90, 00, 0x9, 0xb0, 00, 0x5a, 0x50, 0x9a, - 0x9b, 0x52, 0xc4, 0x46, 0x7c, 0xc4, 0x13, 0x3a, 0xc0, 0x2d, - 0x3b, 0xbc, 0x1c, 0xf2, 0x7, 0x95, 0xfa, 0x3, 0x11, 0x99, - 0x2a, 0xd6, 0x60, 0xd, 0xda, 0xf0, 0xa3, 0x48, 0x7c, 0xc5, - 0x58, 0x2c, 0x27, 0xc2, 0xcb, 0xc3, 0x1c, 0x72, 0x8, 0x3c, - 0x24, 00, 0x50, 0x4c, 0x44, 0x3f, 0xb0, 0x1, 0x1b, 0x50, - 0x2, 0x52, 0x93, 0xc5, 0x68, 0x9c, 0xc6, 0x70, 0xa6, 0xc4, - 0x98, 0xcb, 0xc4, 0x1b, 0xe2, 0xc5, 0xf, 0x74, 0x4, 0x11, - 0xc9, 0xb9, 00, 0xa0, 00, 0x6e, 0xa0, 0xc6, 0x78, 0x9c, - 0xc7, 0xc1, 0xc6, 0xc6, 0x4d, 0x96, 0xb9, 0x3d, 0xe3, 0xc4, - 0xf, 0x4, 0x3, 0xf9, 0x32, 0xd, 0x15, 0x80, 0x34, 0xb, - 0x30, 0x7, 0x7a, 0x9c, 0xc8, 0x8a, 0xff, 0x6c, 0xb9, 0x72, - 0xbb, 0xc4, 0x5c, 0xfc, 0xc6, 0x5, 0x9, 00, 0x14, 0xf0, - 0x8, 0xe7, 0x40, 0xc7, 0x76, 0x6c, 0xc5, 0x8b, 0x9c, 0xc9, - 0x8b, 0xbc, 0xc5, 0x50, 0xdb, 0x33, 0xc7, 0x14, 0x55, 0x1, - 0xd0, 00, 0x3f, 0x90, 0x3, 0x9c, 0x4, 00, 0x4, 0xe0, - 0x1, 0x5a, 0xf0, 0x5, 0xaa, 0xbc, 0xca, 0xac, 0x8c, 0x7, - 0x69, 0x5a, 0x2f, 0x9, 0x9b, 0xca, 0xac, 0x3c, 0xcb, 0xb4, - 0x5c, 0xcb, 0xb6, 0x7c, 0xcb, 0xb8, 0x9c, 0xcb, 0xba, 0xbc, - 0xcb, 0xbc, 0xdc, 0xcb, 0xbe, 0xfc, 0xcb, 0xc0, 0x5c, 0xcb, - 0x6a, 00, 0xc, 0x98, 0xcc, 0xc9, 0x6, 0x1c, 0x20, 0xda, - 0x30, 0x2, 0x34, 0x49, 0xb3, 0x55, 0x1b, 0x1, 0x37, 0x4b, - 0x44, 0x75, 0xd4, 0xb9, 0xd2, 0x3c, 0xcd, 0xd4, 0x5c, 0xcd, - 0xd6, 0x7c, 0xcd, 0xd8, 0x9c, 0xcd, 0xda, 0xac, 0x95, 0x7, - 0xa0, 0x5, 0xc5, 0xcc, 0xc7, 0x72, 0xe6, 0xc7, 0x1d, 0xa2, - 0x5, 0xe4, 0x87, 0xcd, 0x9f, 0x6b, 0xd, 0x26, 0xe0, 0x78, - 0xdb, 0xbc, 0xce, 0xec, 0xdc, 0xce, 0xee, 0xfc, 0xce, 0xed, - 0x6c, 00, 0x54, 0xf0, 0xcd, 0x97, 0xdb, 0xc7, 0x6e, 0xbc, - 0x21, 0xc7, 0xa4, 0xce, 0xd7, 0x7c, 0xce, 0xe9, 0xc, 0xcf, - 0xfe, 0xfc, 0xcf, 00, 0x1d, 0xd0, 0xec, 0x7c, 00, 0xf3, - 0x1c, 0xb7, 0x5, 0x3b, 0xa6, 0xc7, 0x2c, 0x20, 0x7f, 0x80, - 0x1, 0x6, 0x30, 00, 0xfa, 0x3c, 0xcd, 0xec, 0x17, 0x20, - 0xd6, 0x50, 0x2, 0xcc, 0x2c, 0xd0, 0x16, 0x7d, 0xd1, 0x18, - 0xed, 0xcf, 0x5, 0x50, 0xd0, 0xbf, 0x79, 0xd0, 0x4f, 0x9b, - 0xd0, 0x2, 0x82, 0xb, 0x4d, 0x80, 0x90, 0x12, 0x50, 00, - 0xa0, 0x3c, 00, 0x5, 0x90, 0xd2, 0x2a, 0xbd, 0xd2, 0x5, - 0x50, 0x1, 0xdd, 0x8, 0x20, 0xd6, 0x90, 0x3, 0x7, 0x40, - 00, 0x2c, 0xff, 0x5d, 0xd3, 0x36, 0x7d, 0xd3, 0x38, 0x9d, - 0xd3, 0x3a, 0xbd, 0xd3, 0x3c, 0xdd, 0xd3, 0x3e, 0xfd, 0xd3, - 0x40, 0x1d, 0xd4, 0x3b, 0xcd, 00, 0x5f, 0x40, 0xcf, 0x8d, - 0xdc, 0xc6, 0x8f, 0xfc, 0x21, 0xed, 0xf6, 0x8, 0x3f, 00, - 0x8b, 0x6, 0xf0, 0x1, 0x54, 0x10, 0xd5, 0x52, 0x3d, 0xd5, - 0x54, 0x40, 0x8d, 0x1, 0x42, 0xe, 0xa4, 0xa0, 0x5, 0x54, - 0xbd, 0xd5, 0x5c, 0xdd, 0xd5, 0x5e, 0xfd, 0xd5, 0x60, 0x1d, - 0xd6, 0x62, 0x3d, 0xd6, 0x64, 0x5d, 0xd6, 0x66, 0x7d, 0xd6, - 0x62, 0x3d, 0x6, 0xb8, 0x60, 0xd4, 0x1e, 0x4d, 0xc0, 0x9d, - 0xfc, 0xb2, 0x54, 0xab, 00, 0x88, 0xac, 0xc9, 0x74, 0xad, - 0xc9, 0xc6, 0x2c, 0xb5, 0x15, 0x30, 0x3a, 0xc, 0x30, 0xd7, - 0x75, 0xdd, 0xd7, 0x7a, 0x7c, 0xd7, 0x24, 0x12, 0xd3, 0x1b, - 0xa0, 0x1, 0x23, 0xf0, 0x97, 0x7e, 0x7d, 0xd8, 0x68, 0xc, - 0xd8, 0xb, 0x34, 0xc5, 0xdf, 0x40, 0xc4, 0x88, 0xfd, 0xd8, - 0x47, 0xac, 0xd8, 0x90, 0x3d, 0xd9, 0x7d, 0x2d, 0xd9, 0x94, - 0x7d, 0xd9, 0x9b, 0xc, 0xce, 0x9, 0x1, 0x4, 0xe9, 0xe9, - 0x7, 0x22, 0x8c, 0xd9, 0xa0, 0xbd, 0x29, 0xce, 00, 0x6, - 0xcf, 0xe1, 0x82, 0xe, 0x61, 0x6, 0xab, 0xe1, 0x13, 0x67, - 0x10, 0xd, 0xa1, 0xdd, 0xda, 0x6a, 0x9c, 0xe, 0xc2, 0x60, - 0x20, 0x3e, 0x21, 0x23, 0x13, 0x51, 0x9, 0x3c, 00, 0x23, - 0x28, 0xb0, 0x3, 0xa3, 0xf0, 0x1f, 0xd2, 0x82, 0xe, 0xbe, - 0xfd, 0xdb, 0xc0, 0x1d, 0xdc, 0xc2, 0x3d, 0xdc, 0xc4, 0x5d, - 0xdc, 0xc6, 0x7d, 0xdc, 0xc1, 0xed, 0xc1, 0x24, 0xbc, 0xdc, - 0xcc, 0xdd, 0xdc, 0xce, 0xfd, 0xdc, 0xcc, 0x2d, 0xe, 0xd2, - 0x3d, 0xdd, 0xd4, 0x5d, 0xdd, 0xd6, 0x7d, 0xdd, 0xd8, 0x9d, - 0xdd, 0xda, 0xbd, 0xdd, 0xd4, 0xbd, 0xd, 0xaf, 0xff, 0x80, - 0x6, 0x2d, 00, 0x23, 0x2a, 0x40, 0xdb, 0x12, 0x81, 0xc, - 0x3b, 0xc0, 0x17, 0x2a, 0xc0, 0x5, 0xa3, 0x90, 0xc, 0xc2, - 0x50, 0x9, 0xee, 0xfd, 0xde, 0xf0, 0x1d, 0xdf, 0xf2, 0x3d, - 0xdf, 0xf4, 0x5d, 0xdf, 0xf6, 0x7d, 0xdf, 0xf3, 0xbd, 0x8, - 0x7a, 0x90, 0x7, 0x7a, 0xd0, 0xdf, 0xfe, 0xfd, 0xdf, 00, - 0x1e, 0xe0, 0x2, 0x3e, 0xe0, 0x4, 0x5e, 0xe0, 0x6, 0x1e, - 0xe0, 0x77, 0x90, 0xe0, 0xa, 0xbe, 0xe0, 0xc, 0xde, 0xe0, - 0xe, 0xfe, 0xe0, 0x10, 0x1e, 0xe1, 0x12, 0xbe, 0xe0, 0x6f, - 0x80, 0x4, 0x9a, 0xd1, 0x15, 0x5b, 0x40, 0x11, 0xa5, 0xb0, - 0x4, 0x7b, 0x1, 0x1d, 0x45, 0xc0, 0x5, 0x52, 0xe0, 0x3, - 0x22, 0x3e, 0xe2, 0x24, 0x5e, 0xe2, 0x26, 0x7e, 0xe2, 0x28, - 0x9e, 0xe2, 0x2a, 0xbe, 0xe2, 0x27, 0x6e, 0x3, 0x72, 0xf1, - 0xe2, 0x30, 0x1e, 0xe3, 0x32, 0x3e, 0xe3, 0x61, 0x71, 0xe1, - 0x28, 0x40, 0x3, 0x8c, 0x40, 0x11, 0xac, 0x90, 0x8, 0xb7, - 0xbd, 0x19, 0x7d, 0xd1, 0x13, 0x40, 0x1e, 0xe4, 0x42, 0x3e, - 0xe4, 0x44, 0x5e, 0xe4, 0x46, 0x7e, 0xe4, 0x48, 0x9e, 0xe4, - 0x4a, 0xbe, 0xe4, 0x4c, 0xde, 0xe4, 0x4e, 0xfe, 0xe4, 0x50, - 0x1e, 0xe5, 0x47, 0xbe, 0x19, 0x5b, 0x61, 0x7, 0xa7, 0x50, - 0x11, 0xc8, 0x40, 0x7, 0x4e, 0xe0, 0x15, 0x3e, 0x2e, 0x15, - 0x5e, 0xfe, 0xe5, 0x60, 0x1e, 0xe6, 0x62, 0xde, 0x15, 0x34, - 0x5e, 0xe6, 0x30, 0x7e, 0x3, 0x4f, 0x10, 0x6, 0xb0, 0xb0, - 0xb, 0x16, 0xc1, 0xc, 0x8c, 0x10, 0x5, 0x3d, 0x20, 0x13, - 0x72, 0x3e, 0xe7, 0x74, 0x5e, 0xe7, 0x76, 0x2e, 0x12, 0x41, - 0x30, 0x4, 0x7a, 0xbe, 0xe7, 0x7c, 0xde, 0xe7, 0x7e, 0xfe, - 0xe7, 0x80, 0x1e, 0xe8, 0x82, 0x3e, 0xe8, 0x7f, 0x3e, 0x5, - 0x57, 0x50, 0x5, 0x53, 0x4a, 0xe0, 0x5, 0x5d, 0x60, 0x9, - 0xd2, 0xc0, 0xe6, 0x17, 0x11, 0xb, 0xaa, 0x40, 0x6, 0x44, - 0x30, 0xe9, 0x94, 0x5e, 0xe9, 0x96, 0x7e, 0xe9, 0x98, 0x9e, - 0xe9, 0x9a, 0xbe, 0xe9, 0x9c, 0xde, 0xe9, 0x9e, 0xfe, 0xe9, - 0xa0, 0x1e, 0xea, 0x9b, 0x2e, 0x6, 0x6d, 0x50, 0xea, 0xa6, - 0x7e, 0xea, 0xa8, 0x9e, 0xea, 0xaa, 0xbe, 0xea, 0xac, 0xde, - 0xea, 0xae, 0x8e, 0xea, 0x6c, 0x10, 0x7, 0xa2, 0xe0, 0xb, - 0xa9, 0xa0, 0x9, 0xcf, 0xe0, 0xe8, 0x16, 0x11, 0x10, 00, - 0x3b, 0}; - -const struct httpd_fsdata_file file_404_html[] = {{NULL, data_404_html, data_404_html + 10, sizeof(data_404_html) - 10}}; - -const struct httpd_fsdata_file file_index_html[] = {{file_404_html, data_index_html, data_index_html + 12, sizeof(data_index_html) - 12}}; - -const struct httpd_fsdata_file file_logo_gif[] = {{file_index_html, data_logo_gif, data_logo_gif + 10, sizeof(data_logo_gif) - 10}}; - -#define HTTPD_FS_ROOT file_logo_gif - -#define HTTPD_FS_NUMFILES 3 diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/lwipWebServer/httpd.c b/FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/lwipWebServer/httpd.c deleted file mode 100644 index b9589d382..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/lwipWebServer/httpd.c +++ /dev/null @@ -1,244 +0,0 @@ -/* - * Copyright (c) 2001-2003 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT - * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT - * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ - -#include "lwip/debug.h" -#include "lwip/stats.h" -#include "httpd.h" -#include "lwip/tcp.h" -#include "fs.h" - -#include - -#pragma pack(2) -struct http_state { - char *file; - u32_t left; - u8_t retries; -}; -#pragma pack() - -/*-----------------------------------------------------------------------------------*/ -void conn_err(void *arg, err_t err) -{ - struct http_state *hs; - - hs = arg; - mem_free(hs); -} -/*-----------------------------------------------------------------------------------*/ -static void -close_conn(struct tcp_pcb *pcb, struct http_state *hs) -{ - tcp_arg(pcb, NULL); - tcp_sent(pcb, NULL); - tcp_recv(pcb, NULL); - mem_free(hs); - tcp_close(pcb); -} -/*-----------------------------------------------------------------------------------*/ -static void -send_data(struct tcp_pcb *pcb, struct http_state *hs) -{ - err_t err; - u16_t len; - - /* We cannot send more data than space available in the send - buffer. */ - if (tcp_sndbuf(pcb) < hs->left) { - len = tcp_sndbuf(pcb); - } else { - len = hs->left; - } - - do { - err = tcp_write(pcb, hs->file, len, 0); - if (err == ERR_MEM) { - len /= 2; - } - } while (err == ERR_MEM && len > 1); - - if (err == ERR_OK) { - hs->file += len; - hs->left -= len; - /* } else { - printf("send_data: error %s len %d %d\n", lwip_strerr(err), len, tcp_sndbuf(pcb));*/ - } -} -/*-----------------------------------------------------------------------------------*/ -err_t http_poll(void *arg, struct tcp_pcb *pcb) -{ - struct http_state *hs; - - hs = arg; - - /* printf("Polll\n");*/ - if (hs == NULL) { - /* printf("Null, close\n");*/ - tcp_abort(pcb); - return ERR_ABRT; - } else { - ++hs->retries; - if (hs->retries == 4) { - tcp_abort(pcb); - return ERR_ABRT; - } - send_data(pcb, hs); - } - - return ERR_OK; -} -/*-----------------------------------------------------------------------------------*/ -err_t http_sent(void *arg, struct tcp_pcb *pcb, u16_t len) -{ - struct http_state *hs; - - hs = arg; - - hs->retries = 0; - - if (hs->left > 0) { - send_data(pcb, hs); - } else { - close_conn(pcb, hs); - } - - return ERR_OK; -} -/*-----------------------------------------------------------------------------------*/ -err_t http_recv(void *arg, struct tcp_pcb *pcb, struct pbuf *p, err_t err) -{ - int i; - char *data; - struct fs_file file; - struct http_state *hs; - - hs = arg; - - if (err == ERR_OK && p != NULL) { - - /* Inform TCP that we have taken the data. */ - tcp_recved(pcb, p->tot_len); - - if (hs->file == NULL) { - data = p->payload; - - if (strncmp(data, "GET ", 4) == 0) { - for(i = 0; i < 40; i++) { - if (((char *)data + 4)[i] == ' ' || - ((char *)data + 4)[i] == '\r' || - ((char *)data + 4)[i] == '\n') { - ((char *)data + 4)[i] = 0; - } - } - - if (*(char *)(data + 4) == '/' && - *(char *)(data + 5) == 0) { - fs_open("/index.html", &file); - } - else { - if (!fs_open((char *)data + 4, &file)) { - fs_open("/404.html", &file); - } - } - hs->file = file.data; - hs->left = file.len; - /* printf("data %p len %ld\n", hs->file, hs->left);*/ - - pbuf_free(p); - send_data(pcb, hs); - - /* Tell TCP that we wish be to informed of data that has been - successfully sent by a call to the http_sent() function. */ - tcp_sent(pcb, http_sent); - } else { - pbuf_free(p); - close_conn(pcb, hs); - } - } else { - pbuf_free(p); - } - } - - if (err == ERR_OK && p == NULL) { - close_conn(pcb, hs); - } - return ERR_OK; -} -/*-----------------------------------------------------------------------------------*/ -err_t http_accept(void *arg, struct tcp_pcb *pcb, err_t err) -{ - struct http_state *hs; - - tcp_setprio(pcb, TCP_PRIO_MIN); - - /* Allocate memory for the structure that holds the state of the - connection. */ - hs = mem_malloc(sizeof(struct http_state)); - - if (hs == NULL) { -// printf("http_accept: Out of memory\n"); - return ERR_MEM; - } - - /* Initialize the structure. */ - hs->file = NULL; - hs->left = 0; - hs->retries = 0; - - /* Tell TCP that this is the structure we wish to be passed for our - callbacks. */ - tcp_arg(pcb, hs); - - - /* Tell TCP that we wish to be informed of incoming data by a call - to the http_recv() function. */ - tcp_recv(pcb, http_recv); - - tcp_err(pcb, conn_err); - - tcp_poll(pcb, http_poll, 4); - - return ERR_OK; -} - -/*-----------------------------------------------------------------------------------*/ -void httpd_init(void) -{ - struct tcp_pcb *pcb; - - pcb = tcp_new(); - tcp_bind(pcb, NULL, 80); - pcb = tcp_listen(pcb); - tcp_accept(pcb, http_accept); -} -/*-----------------------------------------------------------------------------------*/ - diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/netif/ethernetif.c b/FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/netif/ethernetif.c deleted file mode 100644 index 900749d97..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/lwip/netif/ethernetif.c +++ /dev/null @@ -1,436 +0,0 @@ -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT - * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT - * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ - -/* - * This file is a skeleton for developing Ethernet network interface - * drivers for lwIP. Add code to the low_level functions and do a - * search-and-replace for the word "ethernetif" to replace it with - * something that better describes your network interface. - */ - -#include "lwip/opt.h" -#include "lwip/def.h" -#include "lwip/mem.h" -#include "lwip/pbuf.h" -#include "lwip/sys.h" -#include - -#include "netif/etharp.h" -#include "91x_enet.h" - -// Standard library include -#include - -#define netifMTU ( 1500 ) -#define netifINTERFACE_TASK_STACK_SIZE ( 350 ) -#define netifINTERFACE_TASK_PRIORITY ( configMAX_PRIORITIES - 1 ) -#define netifGUARD_BLOCK_TIME ( 250 ) -#define IFNAME0 'e' -#define IFNAME1 'm' - -/* The time to block waiting for input. */ -#define emacBLOCK_TIME_WAITING_FOR_INPUT ( ( TickType_t ) 100 ) - -/* Interrupt status bit definition. */ -#define DMI_RX_CURRENT_DONE 0x8000 - -extern u8 TxBuff[1520]; - -static u8_t s_rxBuff[1520]; - -/* The semaphore used by the ISR to wake the lwIP task. */ -static SemaphoreHandle_t s_xSemaphore = NULL; - -struct ethernetif { - struct eth_addr *ethaddr; - /* Add whatever per-interface state that is needed here. */ -}; - -static struct netif *s_pxNetIf = NULL; - -/* Forward declarations. */ -static err_t ethernetif_output(struct netif *netif, struct pbuf *p, struct ip_addr *ipaddr); -static void ethernetif_input( void * pvParameters ); -static void vEMACWaitForInput( void ); - - - -static void low_level_init(struct netif *netif) -{ - /* set MAC hardware address length */ - netif->hwaddr_len = 6; - - /* set MAC hardware address */ - netif->hwaddr[0] = MAC_ADDR0; - netif->hwaddr[1] = MAC_ADDR1; - netif->hwaddr[2] = MAC_ADDR2; - netif->hwaddr[3] = MAC_ADDR3; - netif->hwaddr[4] = MAC_ADDR4; - netif->hwaddr[5] = MAC_ADDR5; - - /* maximum transfer unit */ - netif->mtu = netifMTU; - - /* broadcast capability */ - netif->flags = NETIF_FLAG_BROADCAST; - - s_pxNetIf = netif; - - if( s_xSemaphore == NULL ) - { - vSemaphoreCreateBinary( s_xSemaphore ); - xSemaphoreTake( s_xSemaphore, 0); - } - - /* Do whatever else is needed to initialize interface. */ - /* Initialise the MAC. */ - ENET_InitClocksGPIO(); - ENET_Init(); - ENET_Start(); - - portENTER_CRITICAL(); - { - /*set MAC physical*/ - ENET_MAC->MAH = (MAC_ADDR5<<8) + MAC_ADDR4; - ENET_MAC->MAL = (MAC_ADDR3<<24) + (MAC_ADDR2<<16) + (MAC_ADDR1<<8) + MAC_ADDR0; - - VIC_Config( ENET_ITLine, VIC_IRQ, 1 ); - VIC_ITCmd( ENET_ITLine, ENABLE ); - ENET_DMA->ISR = DMI_RX_CURRENT_DONE; - ENET_DMA->IER = DMI_RX_CURRENT_DONE; - } - portEXIT_CRITICAL(); - - /* Create the task that handles the EMAC. */ - xTaskCreate( ethernetif_input, "ETH_INT", netifINTERFACE_TASK_STACK_SIZE, NULL, netifINTERFACE_TASK_PRIORITY, NULL ); -} - - -/* - * low_level_output(): - * - * Should do the actual transmission of the packet. The packet is - * contained in the pbuf that is passed to the function. This pbuf - * might be chained. - * - */ - -static err_t low_level_output(struct netif *netif, struct pbuf *p) -{ - static SemaphoreHandle_t xTxSemaphore = NULL; - struct pbuf *q; - u32_t l = 0; - - if( xTxSemaphore == NULL ) - { - vSemaphoreCreateBinary( xTxSemaphore ); - } - - -#if ETH_PAD_SIZE - pbuf_header(p, -ETH_PAD_SIZE); /* drop the padding word */ -#endif - - - /* Access to the EMAC is guarded using a semaphore. */ - if( xSemaphoreTake( xTxSemaphore, netifGUARD_BLOCK_TIME ) ) - { - for(q = p; q != NULL; q = q->next) { - /* Send the data from the pbuf to the interface, one pbuf at a - time. The size of the data in each pbuf is kept in the ->len - variable. */ - memcpy(&TxBuff[l], (u8_t*)q->payload, q->len); - l += q->len; - } - - ENET_TxPkt(0, l); - - #if ETH_PAD_SIZE - pbuf_header(p, ETH_PAD_SIZE); /* reclaim the padding word */ - #endif - - #if LINK_STATS - lwip_stats.link.xmit++; - #endif /* LINK_STATS */ - - xSemaphoreGive( xTxSemaphore ); - } - - return ERR_OK; -} - -/* - * low_level_input(): - * - * Should allocate a pbuf and transfer the bytes of the incoming - * packet from the interface into the pbuf. - * - */ - -static struct pbuf * -low_level_input(struct netif *netif) -{ - static SemaphoreHandle_t xRxSemaphore = NULL; - struct pbuf *p, *q; - u16_t len, l; - - l = 0; - p = NULL; - - if( xRxSemaphore == NULL ) - { - vSemaphoreCreateBinary( xRxSemaphore ); - } - - /* Access to the emac is guarded using a semaphore. */ - if( xSemaphoreTake( xRxSemaphore, netifGUARD_BLOCK_TIME ) ) - { - /* Obtain the size of the packet and put it into the "len" - variable. */ - len = ENET_HandleRxPkt(s_rxBuff); - - if(len) - { - #if ETH_PAD_SIZE - len += ETH_PAD_SIZE; /* allow room for Ethernet padding */ - #endif - - /* We allocate a pbuf chain of pbufs from the pool. */ - p = pbuf_alloc(PBUF_RAW, len, PBUF_POOL); - - if (p != NULL) { - - #if ETH_PAD_SIZE - pbuf_header(p, -ETH_PAD_SIZE); /* drop the padding word */ - #endif - - /* We iterate over the pbuf chain until we have read the entire - * packet into the pbuf. */ - for(q = p; q != NULL; q = q->next) { - /* Read enough bytes to fill this pbuf in the chain. The - * available data in the pbuf is given by the q->len - * variable. */ - memcpy((u8_t*)q->payload, &s_rxBuff[l], q->len); - l = l + q->len; - } - - - #if ETH_PAD_SIZE - pbuf_header(p, ETH_PAD_SIZE); /* reclaim the padding word */ - #endif - - #if LINK_STATS - lwip_stats.link.recv++; - #endif /* LINK_STATS */ - } else { - #if LINK_STATS - lwip_stats.link.memerr++; - lwip_stats.link.drop++; - #endif /* LINK_STATS */ - } /* End else */ - } /* End if */ - - xSemaphoreGive( xRxSemaphore ); - } - - return p; -} - -/* - * ethernetif_output(): - * - * This function is called by the TCP/IP stack when an IP packet - * should be sent. It calls the function called low_level_output() to - * do the actual transmission of the packet. - * - */ - -static err_t ethernetif_output(struct netif *netif, struct pbuf *p, struct ip_addr *ipaddr) -{ - - /* resolve hardware address, then send (or queue) packet */ - return etharp_output(netif, ipaddr, p); - -} - -/* - * ethernetif_input(): - * - * This function should be called when a packet is ready to be read - * from the interface. It uses the function low_level_input() that - * should handle the actual reception of bytes from the network - * interface. - * - */ - -static void ethernetif_input( void * pvParameters ) -{ - struct ethernetif *ethernetif; - struct eth_hdr *ethhdr; - struct pbuf *p; - - for( ;; ) - { - do - { - ethernetif = s_pxNetIf->state; - - /* move received packet into a new pbuf */ - p = low_level_input( s_pxNetIf ); - - if( p == NULL ) - { - /* No packet could be read. Wait a for an interrupt to tell us - there is more data available. */ - vEMACWaitForInput(); - } - - } while( p == NULL ); - - /* points to packet payload, which starts with an Ethernet header */ - ethhdr = p->payload; - - #if LINK_STATS - lwip_stats.link.recv++; - #endif /* LINK_STATS */ - - ethhdr = p->payload; - - switch (htons(ethhdr->type)) - { - /* IP packet? */ - case ETHTYPE_IP: - /* update ARP table */ - etharp_ip_input(s_pxNetIf, p); - /* skip Ethernet header */ - pbuf_header(p, (s16_t)-sizeof(struct eth_hdr)); - /* pass to network layer */ - s_pxNetIf->input(p, s_pxNetIf); - break; - - case ETHTYPE_ARP: - /* pass p to ARP module */ - etharp_arp_input(s_pxNetIf, ethernetif->ethaddr, p); - break; - - default: - pbuf_free(p); - p = NULL; - break; - } - } -} - -static void -arp_timer(void *arg) -{ - etharp_tmr(); - sys_timeout(ARP_TMR_INTERVAL, arp_timer, NULL); -} - -/* - * ethernetif_init(): - * - * Should be called at the beginning of the program to set up the - * network interface. It calls the function low_level_init() to do the - * actual setup of the hardware. - * - */ - -err_t -ethernetif_init(struct netif *netif) -{ - struct ethernetif *ethernetif; - - ethernetif = mem_malloc(sizeof(struct ethernetif)); - - if (ethernetif == NULL) - { - LWIP_DEBUGF(NETIF_DEBUG, ("ethernetif_init: out of memory\n")); - return ERR_MEM; - } - -#if LWIP_SNMP - /* ifType ethernetCsmacd(6) @see RFC1213 */ - netif->link_type = 6; - /* your link speed here */ - netif->link_speed = ; - netif->ts = 0; - netif->ifinoctets = 0; - netif->ifinucastpkts = 0; - netif->ifinnucastpkts = 0; - netif->ifindiscards = 0; - netif->ifoutoctets = 0; - netif->ifoutucastpkts = 0; - netif->ifoutnucastpkts = 0; - netif->ifoutdiscards = 0; -#endif - - netif->state = ethernetif; - netif->name[0] = IFNAME0; - netif->name[1] = IFNAME1; - netif->output = ethernetif_output; - netif->linkoutput = low_level_output; - - ethernetif->ethaddr = (struct eth_addr *)&(netif->hwaddr[0]); - - low_level_init(netif); - - etharp_init(); - - sys_timeout(ARP_TMR_INTERVAL, arp_timer, NULL); - - return ERR_OK; -} -/*-----------------------------------------------------------*/ - -void ENET_IRQHandler(void) -{ -portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE; - - /* Give the semaphore in case the lwIP task needs waking. */ - xSemaphoreGiveFromISR( s_xSemaphore, &xHigherPriorityTaskWoken ); - - /* Clear the interrupt. */ - ENET_DMA->ISR = DMI_RX_CURRENT_DONE; - - /* Switch tasks if necessary. */ - portEND_SWITCHING_ISR( xHigherPriorityTaskWoken ); -} -/*-----------------------------------------------------------*/ - -void vEMACWaitForInput( void ) -{ - /* Just wait until we are signled from an ISR that data is available, or - we simply time out. */ - xSemaphoreTake( s_xSemaphore, emacBLOCK_TIME_WAITING_FOR_INPUT ); -} diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/main.c b/FreeRTOS/Demo/ARM9_STR91X_IAR/main.c deleted file mode 100644 index 089ec2091..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/main.c +++ /dev/null @@ -1,444 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* - NOTE : Tasks run in system mode and the scheduler runs in Supervisor mode. - The processor MUST be in supervisor mode when vTaskStartScheduler is - called. The demo applications included in the FreeRTOS.org download switch - to supervisor mode prior to main being called. If you are not using one of - these demo application projects then ensure Supervisor mode is used. -*/ - -/* - * Creates all the demo application tasks, then starts the scheduler. The WEB - * documentation provides more details of the demo application tasks. - * - * A few tasks are created that are not part of the standard demo. These are - * the 'LCD' task, the 'LCD Message' task, a WEB server task and the 'Check' - * task. - * - * The LCD task is the only task that accesses the LCD directly, so mutual - * exclusion is ensured. Any task wishing to display text sends the LCD task - * a message containing a pointer to the string that should be displayed. - * The LCD task itself just blocks on a queue waiting for such a message to - * arrive - processing each in turn. - * - * The LCD Message task does nothing other than periodically send messages to - * the LCD task. The messages originating from the LCD Message task are - * displayed on the top row of the LCD. - * - * The Check task only executes every three seconds but has the highest - * priority so is guaranteed to get processor time. Its main function is to - * check that all the other tasks are still operational. Most tasks maintain - * a unique count that is incremented each time the task successfully completes - * a cycle of its function. Should any error occur within such a task the - * count is permanently halted. The check task sets a bit in an error status - * flag should it find any counter variable at a value that indicates an - * error has occurred. The error flag value is converted to a string and sent - * to the LCD task for display on the bottom row on the LCD. - */ - -/* Standard includes. */ -#include - -/* Library includes. */ -#include "91x_lib.h" - -/* Scheduler includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "queue.h" - -/* Demo application includes. */ -#include "lcd.h" -#include "flash.h" -#include "integer.h" -#include "PollQ.h" -#include "BlockQ.h" -#include "semtest.h" -#include "dynamic.h" -#include "partest.h" -#include "flop.h" -#include "comtest2.h" -#include "serial.h" -#include "GenQTest.h" -#include "QPeek.h" - -#ifdef STACK_LWIP - #include "BasicWEB.h" - #include "sys.h" -#endif - -/* Priorities for the demo application tasks. */ -#define mainLED_TASK_PRIORITY ( tskIDLE_PRIORITY + 1 ) -#define mainQUEUE_POLL_PRIORITY ( tskIDLE_PRIORITY + 2 ) -#define mainCHECK_TASK_PRIORITY ( tskIDLE_PRIORITY + 4 ) -#define mainSEM_TEST_PRIORITY ( tskIDLE_PRIORITY + 1 ) -#define mainBLOCK_Q_PRIORITY ( tskIDLE_PRIORITY + 2 ) -#define mainCOM_TEST_PRIORITY ( tskIDLE_PRIORITY + 3 ) -#define mainLCD_TASK_PRIORITY ( tskIDLE_PRIORITY + 1 ) -#define mainMSG_TASK_PRIORITY ( tskIDLE_PRIORITY + 1 ) -#define mainGENERIC_QUEUE_PRIORITY ( tskIDLE_PRIORITY ) - -/* Delays used by the various tasks defined in this file. */ -#define mainCHECK_PERIOD ( ( TickType_t ) 3000 / portTICK_PERIOD_MS ) -#define mainSTRING_WRITE_DELAY ( 500 / portTICK_PERIOD_MS ) -#define mainLCD_DELAY ( 20 / portTICK_PERIOD_MS ) - -/* Constants for the ComTest tasks. */ -#define mainCOM_TEST_BAUD_RATE ( ( unsigned long ) 115200 ) -#define mainCOM_TEST_LED ( 3 ) - -/* The maximum number of messages that can be pending to be written to the LCD. */ -#define mainLCD_QUEUE_LEN ( 6 ) - -/* Dimension the buffer used to write the error flag string. */ -#define mainMAX_FLAG_STRING_LEN ( 32 ) - -/* The structure that is passed on the LCD message queue. */ -typedef struct -{ - char **ppcMessageToDisplay; /*<< Points to a char* pointing to the message to display. */ - portBASE_TYPE xRow; /*<< The row on which the message should be displayed. */ -} xLCDMessage; -/*-----------------------------------------------------------*/ - -/* - * The task that executes at the highest priority and calls - * prvCheckOtherTasksAreStillRunning(). See the description at the top - * of the file. - */ -static void vErrorChecks( void *pvParameters ); - -/* - * Configure the processor clock and ports. - */ -static void prvSetupHardware( void ); - -/* - * Checks that all the demo application tasks are still executing without error - * - as described at the top of the file. Called by vErrorChecks(). - */ -static void prvCheckOtherTasksAreStillRunning( void ); - -#ifdef STACK_UIP - /* - * The WEB server task prototype. The task is created in this file but defined - * elsewhere. STACK_UIP is defined when the uIP stack is used in preference - * to the lwIP stack. - */ - extern void vuIP_Task(void *pvParameters); -#endif - -/* - * The task that displays text on the LCD. - */ -static void prvLCDTask( void * pvParameters ); - -/* - * The task that sends messages to be displayed on the top row of the LCD. - */ -static void prvLCDMessageTask( void * pvParameters ); - -/*-----------------------------------------------------------*/ - -/* The queue used to pass messages to the LCD task. */ -static QueueHandle_t xLCDQueue; - -/* Error status flag. */ -static unsigned long ulErrorFlags = 0; - -/*-----------------------------------------------------------*/ - -/* - * Starts all the other tasks, then starts the scheduler. - */ -void main( void ) -{ - #ifdef DEBUG - debug(); - #endif - - /* Setup any hardware that has not already been configured by the low - level init routines. */ - prvSetupHardware(); - /* Create the queue used to send data to the LCD task. */ - xLCDQueue = xQueueCreate( mainLCD_QUEUE_LEN, sizeof( xLCDMessage ) ); - - /* Start all the standard demo application tasks. */ - vStartIntegerMathTasks( tskIDLE_PRIORITY ); - vStartLEDFlashTasks( mainLED_TASK_PRIORITY ); - vStartPolledQueueTasks( mainQUEUE_POLL_PRIORITY ); - vStartSemaphoreTasks( mainSEM_TEST_PRIORITY ); - vStartBlockingQueueTasks( mainBLOCK_Q_PRIORITY ); - vStartDynamicPriorityTasks(); - vStartMathTasks( tskIDLE_PRIORITY ); - vAltStartComTestTasks( mainCOM_TEST_PRIORITY, mainCOM_TEST_BAUD_RATE, mainCOM_TEST_LED ); - vStartGenericQueueTasks( mainGENERIC_QUEUE_PRIORITY ); - vStartQueuePeekTasks(); - - /* Start the tasks which are defined in this file. */ - xTaskCreate( vErrorChecks, "Check", configMINIMAL_STACK_SIZE, NULL, mainCHECK_TASK_PRIORITY, NULL ); - xTaskCreate( prvLCDTask, "LCD", configMINIMAL_STACK_SIZE, ( void * ) &xLCDQueue, mainLCD_TASK_PRIORITY, NULL ); - xTaskCreate( prvLCDMessageTask, "MSG", configMINIMAL_STACK_SIZE, ( void * ) &xLCDQueue, mainMSG_TASK_PRIORITY, NULL ); - - /* Start either the uIP TCP/IP stack or the lwIP TCP/IP stack. */ - #ifdef STACK_UIP - /* Finally, create the WEB server task. */ - xTaskCreate( vuIP_Task, "uIP", configMINIMAL_STACK_SIZE * 3, NULL, mainCHECK_TASK_PRIORITY - 1, NULL ); - #endif - - #ifdef STACK_LWIP - /* Create the lwIP task. This uses the lwIP RTOS abstraction layer.*/ - vlwIPInit(); - sys_set_state( ( signed char * ) "httpd", lwipBASIC_SERVER_STACK_SIZE ); - sys_thread_new( vBasicWEBServer, ( void * ) NULL, basicwebWEBSERVER_PRIORITY ); - sys_set_default_state(); - #endif - - /* Start the scheduler. - - NOTE : Tasks run in system mode and the scheduler runs in Supervisor mode. - The processor MUST be in supervisor mode when vTaskStartScheduler is - called. The demo applications included in the FreeRTOS.org download switch - to supervisor mode prior to main being called. If you are not using one of - these demo application projects then ensure Supervisor mode is used here. */ - - vTaskStartScheduler(); - - /* We should never get here as control is now taken by the scheduler. */ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -static void prvSetupHardware( void ) -{ - /* Configuration taken from the ST code. - - Set Flash banks size & address */ - FMI_BankRemapConfig( 4, 2, 0, 0x80000 ); - - /* FMI Waite States */ - FMI_Config( FMI_READ_WAIT_STATE_2, FMI_WRITE_WAIT_STATE_0, FMI_PWD_ENABLE, FMI_LVD_ENABLE, FMI_FREQ_HIGH ); - - /* Configure the FPLL = 96MHz, and APB to 48MHz. */ - SCU_PCLKDivisorConfig( SCU_PCLK_Div2 ); - SCU_PLLFactorsConfig( 192, 25, 2 ); - SCU_PLLCmd( ENABLE ); - SCU_MCLKSourceConfig( SCU_MCLK_PLL ); - - WDG_Cmd( DISABLE ); - VIC_DeInit(); - - /* GPIO8 clock source enable, used by the LCD. */ - SCU_APBPeriphClockConfig(__GPIO8, ENABLE); - GPIO_DeInit(GPIO8); - - /* GPIO 9 clock source enable, used by the LCD. */ - SCU_APBPeriphClockConfig(__GPIO9, ENABLE); - GPIO_DeInit(GPIO9); - - /* Enable VIC clock */ - SCU_AHBPeriphClockConfig(__VIC, ENABLE); - SCU_AHBPeriphReset(__VIC, DISABLE); - - /* Peripheral initialisation. */ - vParTestInitialise(); -} -/*-----------------------------------------------------------*/ - -static void vErrorChecks( void *pvParameters ) -{ -static char cCheckVal[ mainMAX_FLAG_STRING_LEN ]; -char *pcFlagString; -xLCDMessage xMessageToSend; -TickType_t xLastWakeTime; -char *pcStringsToDisplay[] = { - "Check status flag" - }; - - /* The parameters are not used in this task. */ - ( void ) pvParameters; - - pcFlagString = &cCheckVal[ 0 ]; - - /* Initialise xLastWakeTime to ensure the first call to vTaskDelayUntil() - functions correctly. */ - xLastWakeTime = xTaskGetTickCount(); - - /* Cycle for ever, delaying then checking all the other tasks are still - operating without error. */ - for( ;; ) - { - /* Delay until it is time to execute again. */ - vTaskDelayUntil( &xLastWakeTime, mainCHECK_PERIOD ); - - /* Check all the other tasks to see if the error flag needs updating. */ - prvCheckOtherTasksAreStillRunning(); - - /* Create a string indicating the error flag status. */ - sprintf( cCheckVal, "equals 0x%x ", ulErrorFlags ); - xMessageToSend.xRow = Line2; - - /* Send the first part of the message to the LCD task. */ - xMessageToSend.ppcMessageToDisplay = &pcStringsToDisplay[ 0 ]; - xQueueSend( xLCDQueue, ( void * ) &xMessageToSend, 0 ); - vTaskDelay( mainSTRING_WRITE_DELAY ); - - /* Send the second part of the message to the LCD task. */ - xMessageToSend.ppcMessageToDisplay = &pcFlagString; - xQueueSend( xLCDQueue, ( void * ) &xMessageToSend, 0 ); - } -} -/*-----------------------------------------------------------*/ - -static void prvCheckOtherTasksAreStillRunning( void ) -{ - if( xAreIntegerMathsTaskStillRunning() != pdTRUE ) - { - ulErrorFlags |= 0x01; - } - - if( xArePollingQueuesStillRunning() != pdTRUE ) - { - ulErrorFlags |= 0x02; - } - - if( xAreSemaphoreTasksStillRunning() != pdTRUE ) - { - ulErrorFlags |= 0x04; - } - - if( xAreBlockingQueuesStillRunning() != pdTRUE ) - { - ulErrorFlags |= 0x08; - } - - if( xAreComTestTasksStillRunning() != pdTRUE ) - { - ulErrorFlags |= 0x10; - } - - if( xAreDynamicPriorityTasksStillRunning() != pdTRUE ) - { - ulErrorFlags |= 0x20; - } - - if( xAreMathsTaskStillRunning() != pdTRUE ) - { - ulErrorFlags |= 0x40; - } - - if( xAreGenericQueueTasksStillRunning() != pdTRUE ) - { - ulErrorFlags |= 0x80; - } - - if( xAreQueuePeekTasksStillRunning() != pdTRUE ) - { - ulErrorFlags |= 0x100; - } - -} -/*-----------------------------------------------------------*/ - -static void prvLCDMessageTask( void * pvParameters ) -{ -QueueHandle_t *pxLCDQueue; -xLCDMessage xMessageToSend; -portBASE_TYPE xIndex = 0; - -/* The strings that are written to the LCD. */ -char *pcStringsToDisplay[] = { - "IAR ", - "STR912 ", - "Demo ", - "www.FreeRTOS.org", - "" - }; - - - /* To test the parameter passing mechanism, the queue on which messages are - posted is passed in as a parameter even though it is available as a file - scope variable anyway. */ - pxLCDQueue = ( QueueHandle_t * ) pvParameters; - - for( ;; ) - { - /* Wait until it is time to move onto the next string. */ - vTaskDelay( mainSTRING_WRITE_DELAY ); - - /* Configure the message object to send to the LCD task. */ - xMessageToSend.ppcMessageToDisplay = &pcStringsToDisplay[ xIndex ]; - xMessageToSend.xRow = Line1; - - /* Post the message to be displayed. */ - xQueueSend( *pxLCDQueue, ( void * ) &xMessageToSend, 0 ); - - /* Move onto the next message, wrapping when necessary. */ - xIndex++; - if( *( pcStringsToDisplay[ xIndex ] ) == 0x00 ) - { - xIndex = 0; - - /* Delay longer before going back to the start of the messages. */ - vTaskDelay( mainSTRING_WRITE_DELAY * 2 ); - } - } -} -/*-----------------------------------------------------------*/ - -void prvLCDTask( void * pvParameters ) -{ -QueueHandle_t *pxLCDQueue; -xLCDMessage xReceivedMessage; -char *pcString; - - /* To test the parameter passing mechanism, the queue on which messages are - received is passed in as a parameter even though it is available as a file - scope variable anyway. */ - pxLCDQueue = ( QueueHandle_t * ) pvParameters; - - LCD_Init(); - - for( ;; ) - { - /* Wait for a message to arrive. */ - if( xQueueReceive( *pxLCDQueue, &xReceivedMessage, portMAX_DELAY ) ) - { - /* Where is the string we are going to display? */ - pcString = *xReceivedMessage.ppcMessageToDisplay; - LCD_DisplayString(xReceivedMessage.xRow, pcString, BlackText); - - /* The delay here is just to ensure the LCD task does not starve - out lower priority tasks as writing to the LCD can take a long - time. */ - vTaskDelay( mainLCD_DELAY ); - } - } -} -/*-----------------------------------------------------------*/ diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/serial/serial.c b/FreeRTOS/Demo/ARM9_STR91X_IAR/serial/serial.c deleted file mode 100644 index 4bad2f11e..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/serial/serial.c +++ /dev/null @@ -1,284 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* - BASIC INTERRUPT DRIVEN SERIAL PORT DRIVER FOR UART1. -*/ - -/* Library includes. */ -#include "91x_lib.h" - -/* Scheduler includes. */ -#include "FreeRTOS.h" -#include "queue.h" -#include "semphr.h" - -/* Demo application includes. */ -#include "serial.h" -/*-----------------------------------------------------------*/ - -/* Misc defines. */ -#define serINVALID_QUEUE ( ( QueueHandle_t ) 0 ) -#define serNO_BLOCK ( ( TickType_t ) 0 ) -#define serTX_BLOCK_TIME ( 40 / portTICK_PERIOD_MS ) - -/* Interrupt and status bit definitions. */ -#define mainTXRIS 0x20 -#define mainRXRIS 0x50 -#define serTX_FIFO_FULL 0x20 -#define serCLEAR_ALL_INTERRUPTS 0x3ff -/*-----------------------------------------------------------*/ - -/* The queue used to hold received characters. */ -static QueueHandle_t xRxedChars; - -/* The semaphore used to wake a task waiting for space to become available -in the FIFO. */ -static SemaphoreHandle_t xTxFIFOSemaphore; - -/*-----------------------------------------------------------*/ - -/* UART interrupt handler. */ -void UART1_IRQHandler( void ); - -/* The interrupt service routine - called from the assembly entry point. */ -__arm void UART1_IRQHandler( void ); - -/*-----------------------------------------------------------*/ - -/* Flag to indicate whether or not a task is blocked waiting for space on -the FIFO. */ -static long lTaskWaiting = pdFALSE; - -/* - * See the serial2.h header file. - */ -xComPortHandle xSerialPortInitMinimal( unsigned long ulWantedBaud, unsigned portBASE_TYPE uxQueueLength ) -{ -xComPortHandle xReturn; -UART_InitTypeDef xUART1_Init; -GPIO_InitTypeDef GPIO_InitStructure; - - /* Create the queues used to hold Rx characters. */ - xRxedChars = xQueueCreate( uxQueueLength, ( unsigned portBASE_TYPE ) sizeof( signed char ) ); - - /* Create the semaphore used to wake a task waiting for space to become - available in the FIFO. */ - vSemaphoreCreateBinary( xTxFIFOSemaphore ); - - /* If the queue/semaphore was created correctly then setup the serial port - hardware. */ - if( ( xRxedChars != serINVALID_QUEUE ) && ( xTxFIFOSemaphore != serINVALID_QUEUE ) ) - { - /* Pre take the semaphore so a task will block if it tries to access - it. */ - xSemaphoreTake( xTxFIFOSemaphore, 0 ); - - /* Configure the UART. */ - xUART1_Init.UART_WordLength = UART_WordLength_8D; - xUART1_Init.UART_StopBits = UART_StopBits_1; - xUART1_Init.UART_Parity = UART_Parity_No; - xUART1_Init.UART_BaudRate = ulWantedBaud; - xUART1_Init.UART_HardwareFlowControl = UART_HardwareFlowControl_None; - xUART1_Init.UART_Mode = UART_Mode_Tx_Rx; - xUART1_Init.UART_FIFO = UART_FIFO_Enable; - - /* Enable the UART1 Clock */ - SCU_APBPeriphClockConfig( __UART1, ENABLE ); - - /* Enable the GPIO3 Clock */ - SCU_APBPeriphClockConfig( __GPIO3, ENABLE ); - - /* Configure UART1_Rx pin GPIO3.2 */ - GPIO_InitStructure.GPIO_Direction = GPIO_PinInput; - GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2; - GPIO_InitStructure.GPIO_Type = GPIO_Type_PushPull ; - GPIO_InitStructure.GPIO_IPConnected = GPIO_IPConnected_Enable; - GPIO_InitStructure.GPIO_Alternate = GPIO_InputAlt1 ; - GPIO_Init( GPIO3, &GPIO_InitStructure ); - - /* Configure UART1_Tx pin GPIO3.3 */ - GPIO_InitStructure.GPIO_Direction = GPIO_PinOutput; - GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3; - GPIO_InitStructure.GPIO_Type = GPIO_Type_PushPull ; - GPIO_InitStructure.GPIO_IPConnected = GPIO_IPConnected_Enable; - GPIO_InitStructure.GPIO_Alternate = GPIO_OutputAlt2 ; - GPIO_Init( GPIO3, &GPIO_InitStructure ); - - - portENTER_CRITICAL(); - { - /* Configure the UART itself. */ - UART_DeInit( UART1 ); - UART_Init( UART1, &xUART1_Init ); - UART_ITConfig( UART1, UART_IT_Receive | UART_IT_Transmit, ENABLE ); - UART1->ICR = serCLEAR_ALL_INTERRUPTS; - UART_LoopBackConfig( UART1, DISABLE ); - UART_IrDACmd( IrDA1, DISABLE ); - - /* Configure the VIC for the UART interrupts. */ - VIC_Config( UART1_ITLine, VIC_IRQ, 9 ); - VIC_ITCmd( UART1_ITLine, ENABLE ); - - UART_Cmd( UART1, ENABLE ); - lTaskWaiting = pdFALSE; - } - portEXIT_CRITICAL(); - } - else - { - xReturn = ( xComPortHandle ) 0; - } - - /* This demo file only supports a single port but we have to return - something to comply with the standard demo header file. */ - return xReturn; -} -/*-----------------------------------------------------------*/ - -signed portBASE_TYPE xSerialGetChar( xComPortHandle pxPort, signed char *pcRxedChar, TickType_t xBlockTime ) -{ - /* The port handle is not required as this driver only supports one port. */ - ( void ) pxPort; - - /* Get the next character from the buffer. Return false if no characters - are available, or arrive before xBlockTime expires. */ - if( xQueueReceive( xRxedChars, pcRxedChar, xBlockTime ) ) - { - return pdTRUE; - } - else - { - return pdFALSE; - } -} -/*-----------------------------------------------------------*/ - -void vSerialPutString( xComPortHandle pxPort, const signed char * const pcString, unsigned short usStringLength ) -{ -signed char *pxNext; - - /* A couple of parameters that this port does not use. */ - ( void ) usStringLength; - ( void ) pxPort; - - /* NOTE: This implementation does not handle the queue being full as no - block time is used! */ - - /* The port handle is not required as this driver only supports UART1. */ - ( void ) pxPort; - - /* Send each character in the string, one at a time. */ - pxNext = ( signed char * ) pcString; - while( *pxNext ) - { - xSerialPutChar( pxPort, *pxNext, serNO_BLOCK ); - pxNext++; - } -} -/*-----------------------------------------------------------*/ - -signed portBASE_TYPE xSerialPutChar( xComPortHandle pxPort, signed char cOutChar, TickType_t xBlockTime ) -{ -portBASE_TYPE xReturn; - - portENTER_CRITICAL(); - { - /* Can we write to the FIFO? */ - if( UART1->FR & serTX_FIFO_FULL ) - { - /* Wait for the interrupt letting us know there is space on the - FIFO. It is ok to block in a critical section, interrupts will be - enabled for other tasks once we force a switch. */ - lTaskWaiting = pdTRUE; - - /* Just to be a bit different this driver uses a semaphore to - block the sending task when the FIFO is full. The standard COMTest - task assumes a queue of adequate length exists so does not use - a block time. For this demo the block time is therefore hard - coded. */ - xReturn = xSemaphoreTake( xTxFIFOSemaphore, serTX_BLOCK_TIME ); - if( xReturn ) - { - UART1->DR = cOutChar; - } - } - else - { - UART1->DR = cOutChar; - xReturn = pdPASS; - } - } - portEXIT_CRITICAL(); - - return xReturn; -} -/*-----------------------------------------------------------*/ - -void vSerialClose( xComPortHandle xPort ) -{ - /* Not supported as not required by the demo application. */ -} -/*-----------------------------------------------------------*/ - -void UART1_IRQHandler( void ) -{ -signed char cChar; -portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE; - - while( UART1->RIS & mainRXRIS ) - { - /* The interrupt was caused by a character being received. Grab the - character from the DR and place it in the queue of received - characters. */ - cChar = UART1->DR; - xQueueSendFromISR( xRxedChars, &cChar, &xHigherPriorityTaskWoken ); - } - - if( UART1->RIS & mainTXRIS ) - { - if( lTaskWaiting == pdTRUE ) - { - /* This interrupt was caused by space becoming available on the Tx - FIFO, wake any task that is waiting to post (if any). */ - xSemaphoreGiveFromISR( xTxFIFOSemaphore, &xHigherPriorityTaskWoken ); - lTaskWaiting = pdFALSE; - } - - UART1->ICR = mainTXRIS; - } - - /* If a task was woken by either a character being received or a character - being transmitted then we may need to switch to another task. */ - portEND_SWITCHING_ISR( xHigherPriorityTaskWoken ); -} - - - - - - diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/settings/FreeRTOS.wsdt b/FreeRTOS/Demo/ARM9_STR91X_IAR/settings/FreeRTOS.wsdt deleted file mode 100644 index c72818da9..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/settings/FreeRTOS.wsdt +++ /dev/null @@ -1,63 +0,0 @@ - - - - - - RTOSDemo/Debug - - - - - - - - - 208272727 - - - - - - - 30020100426766 - - 300BuildFind-in-FilesBreakpoints - - - - - 300BuildDebug-LogBreakpoints48268826 - 100300BuildFind-in-FilesDebug-Log - - - - - - - TabID-19472-27051 - Workspace - Workspace - - - RTOSDemoRTOSDemo/Demo Source - - - - 0TabID-17576-32349BuildBuild0 - - - - - - TextEditorC:\E\Dev\FreeRTOS\Source\portable\IAR\STR91x\port.c026282728272TextEditorC:\E\Dev\FreeRTOS\Demo\ARM9_STR91X_IAR\91x_vect_IAR.s09949794979TextEditorC:\E\Dev\FreeRTOS\Source\queue.c04201760317603TextEditorC:\E\Dev\FreeRTOS\Source\portable\IAR\STR91x\portasm.s7902124702470TextEditorC:\E\Dev\FreeRTOS\Source\tasks.c010183428134281TextEditorC:\E\Dev\FreeRTOS\Demo\ARM9_STR91X_IAR\FreeRTOSConfig.h0919681968TextEditorC:\E\Dev\FreeRTOS\Demo\ARM9_STR91X_IAR\91x_init_IAR.s070373237326TextEditorC:\E\Dev\FreeRTOS\Demo\ARM9_STR91X_IAR\Library\source\91x_enet.c14091399713997TextEditorC:\E\Dev\FreeRTOS\Demo\ARM9_STR91X_IAR\webserver\uIP_Task.c025673177317TextEditorC:\E\Dev\FreeRTOS\Demo\ARM9_STR91X_IAR\Library\include\91x_enet.h0126548154810100000010000001 - - - - - - - iaridepm1-2-2695282-2-2200200142857205761202857717078-2-22311402-2-214042331002857239712142857205761 - - - - diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/settings/RTOSDemo.cspy.bat b/FreeRTOS/Demo/ARM9_STR91X_IAR/settings/RTOSDemo.cspy.bat deleted file mode 100644 index 7259709f7..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/settings/RTOSDemo.cspy.bat +++ /dev/null @@ -1,32 +0,0 @@ -@REM This bat file has been generated by the IAR Embeddded Workbench -@REM C-SPY interactive debugger,as an aid to preparing a command -@REM line for running the cspybat command line utility with the -@REM appropriate settings. -@REM -@REM After making some adjustments to this file, you can launch cspybat -@REM by typing the name of this file followed by the name of the debug -@REM file (usually an ubrof file). Note that this file is generated -@REM every time a new debug session is initialized, so you may want to -@REM move or rename the file before making changes. -@REM -@REM Note: some command line arguments cannot be properly generated -@REM by this process. Specifically, the plugin which is responsible -@REM for the Terminal I/O window (and other C runtime functionality) -@REM comes in a special version for cspybat, and the name of that -@REM plugin dll is not known when generating this file. It resides in -@REM the $TOOLKIT_DIR$\bin folder and is usually called XXXbat.dll or -@REM XXXlibsupportbat.dll, where XXX is the name of the corresponding -@REM tool chain. Replace the '' parameter -@REM below with the appropriate file name. Other plugins loaded by -@REM C-SPY are usually not needed by, or will not work in, cspybat -@REM but they are listed at the end of this file for reference. - - -"C:\Devtools\IAR Systems\Embedded Workbench 5.0\common\bin\cspybat" "C:\Devtools\IAR Systems\Embedded Workbench 5.0\ARM\bin\armproc.dll" "C:\Devtools\IAR Systems\Embedded Workbench 5.0\ARM\bin\armjlink.dll" %1 --plugin "C:\Devtools\IAR Systems\Embedded Workbench 5.0\ARM\bin\" --backend -B "--endian" "little" "--cpu" "ARM966E-S" "--fpu" "None" "--proc_device_desc_file" "C:\Devtools\IAR Systems\Embedded Workbench 5.0\ARM\CONFIG\debugger\ST\iostr912f.ddf" "--drv_verify_download" "all" "--proc_no_semihosting" "--proc_driver" "jlink" "--jlink_connection" "USB:0" "--jlink_initial_speed" "32" "--jlink_catch_exceptions" "0x000" - - -@REM Loaded plugins: -@REM armlibsupport.dll -@REM C:\Devtools\IAR Systems\Embedded Workbench 5.0\common\plugins\CodeCoverage\CodeCoverage.dll -@REM C:\Devtools\IAR Systems\Embedded Workbench 5.0\common\plugins\Profiling\Profiling.dll -@REM C:\Devtools\IAR Systems\Embedded Workbench 5.0\common\plugins\stack\stack.dll diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/settings/RTOSDemo.dbgdt b/FreeRTOS/Demo/ARM9_STR91X_IAR/settings/RTOSDemo.dbgdt deleted file mode 100644 index 985ff1079..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/settings/RTOSDemo.dbgdt +++ /dev/null @@ -1,81 +0,0 @@ - - - - - - - - - - - - 20100626867 - - - - - - - 268272727 - - - - - - - - 200 - - - - 010 - 20048268826 - - - - - - - TabID-874-7293 - Debug Log - Debug-Log - - - - TabID-11099-7306 - Build - Build - - - TabID-4501-4793Find in FilesFind-in-FilesTabID-19328-10860BreakpointsBreakpoints - - 0 - - - TabID-11622-7296 - Workspace - Workspace - - - RTOSDemo - - - - 0 - - - - - - TextEditorC:\E\Dev\FreeRTOS\Demo\ARM9_STR91X_IAR\91x_vect.s04527852785TextEditorC:\E\Dev\FreeRTOS\Demo\ARM9_STR91X_IAR\91x_init.s06537043704TextEditorC:\E\Dev\FreeRTOS\Demo\ARM9_STR91X_IAR\main.c0170695269522TextEditorC:\E\Dev\FreeRTOS\Demo\ARM9_STR91X_IAR\webserver\uIP_Task.c03600TextEditorC:\E\Dev\FreeRTOS\Demo\ARM9_STR91X_IAR\lwip\include\lwIPWebServer\BasicWEB.h03420792079TextEditorC:\E\Dev\FreeRTOS\Demo\Common\ethernet\lwIP\core\tcp_in.c028410447104470100000010000001 - - - - - - - iaridepm.enu1debuggergui.enu1-2-2740342-2-2200200142857203666245714755601-2-21981402-2-214042001002857203666142857203666 - - - - diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/settings/RTOSDemo.dni b/FreeRTOS/Demo/ARM9_STR91X_IAR/settings/RTOSDemo.dni deleted file mode 100644 index c18ff2915..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/settings/RTOSDemo.dni +++ /dev/null @@ -1,37 +0,0 @@ -[JLinkDriver] -WatchCond=_ 0 -Watch0=_ 0 "" 0 "" 0 "" 0 "" 0 0 0 0 -Watch1=_ 0 "" 0 "" 0 "" 0 "" 0 0 0 0 -[DisAssemblyWindow] -NumStates=_ 1 -State 1=_ 1 -[Profiling] -Enabled=0 -[StackPlugin] -Enabled=1 -OverflowWarningsEnabled=1 -WarningThreshold=90 -SpWarningsEnabled=1 -WarnHow=0 -UseTrigger=1 -TriggerName=main -LimitSize=0 -ByteLimit=50 -[BreakpointUsageDialog] -Placement=_ 144 186 919 647 -[CodeCoverage] -Enabled=_ 0 -[Log file] -LoggingEnabled=_ 0 -LogFile=_ "" -Category=_ 0 -[TermIOLog] -LoggingEnabled=_ 0 -LogFile=_ "" -[Disassemble mode] -mode=0 -[Breakpoints] -Count=0 -[TraceHelper] -Enabled=0 -ShowSource=1 diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/settings/RTOSDemo.wsdt b/FreeRTOS/Demo/ARM9_STR91X_IAR/settings/RTOSDemo.wsdt deleted file mode 100644 index 32b6915d1..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/settings/RTOSDemo.wsdt +++ /dev/null @@ -1,68 +0,0 @@ - - - - - - RTOSDemo/ARM - uIP - R - - - - - - - - - 328272727 - - - - - - - 20100626867 - - - 68268826100 - - - - - - - TabID-13420-7058 - Workspace - Workspace - - - RTOSDemoRTOSDemo/System Files - - - - 0 - - - TabID-22078-7100 - Build - Build - - - TabID-3326-16295Debug LogDebug-LogTabID-12949-6886Find in FilesFind-in-Files - - 0 - - - - - - TextEditorC:\E\Dev\FreeRTOS\Demo\ARM9_STR91X_IAR\91x_vect.s04527852785TextEditorC:\E\Dev\FreeRTOS\Demo\ARM9_STR91X_IAR\91x_init.s06537043704TextEditorC:\E\Dev\FreeRTOS\Demo\ARM9_STR91X_IAR\main.c0170695269522TextEditorC:\E\Dev\FreeRTOS\Demo\ARM9_STR91X_IAR\webserver\uIP_Task.c03600TextEditorC:\E\Dev\FreeRTOS\Demo\ARM9_STR91X_IAR\lwip\include\lwIPWebServer\BasicWEB.h03420792079TextEditorC:\E\Dev\FreeRTOS\Demo\Common\ethernet\lwIP\core\tcp_in.c028410447104470100000010000001 - - - - - - - iaridepm.enu1-2-2606402-2-2200200142857203666288571619145-2-23321402-2-214043341002857340122142857203666 - - - - diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/Makefile.webserver b/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/Makefile.webserver deleted file mode 100644 index f38c47a72..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/Makefile.webserver +++ /dev/null @@ -1 +0,0 @@ -APP_SOURCES += httpd.c http-strings.c httpd-fs.c httpd-cgi.c diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/clock-arch.h b/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/clock-arch.h deleted file mode 100644 index cde657b62..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/clock-arch.h +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright (c) 2006, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: clock-arch.h,v 1.2 2006/06/12 08:00:31 adam Exp $ - */ - -#ifndef __CLOCK_ARCH_H__ -#define __CLOCK_ARCH_H__ - -#include "FreeRTOS.h" - -typedef unsigned long clock_time_t; -#define CLOCK_CONF_SECOND configTICK_RATE_HZ - -#endif /* __CLOCK_ARCH_H__ */ diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/http-strings b/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/http-strings deleted file mode 100644 index 0d3c30cdd..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/http-strings +++ /dev/null @@ -1,35 +0,0 @@ -http_http "http://" -http_200 "200 " -http_301 "301 " -http_302 "302 " -http_get "GET " -http_10 "HTTP/1.0" -http_11 "HTTP/1.1" -http_content_type "content-type: " -http_texthtml "text/html" -http_location "location: " -http_host "host: " -http_crnl "\r\n" -http_index_html "/index.html" -http_404_html "/404.html" -http_referer "Referer:" -http_header_200 "HTTP/1.0 200 OK\r\nServer: uIP/1.0 http://www.sics.se/~adam/uip/\r\nConnection: close\r\n" -http_header_404 "HTTP/1.0 404 Not found\r\nServer: uIP/1.0 http://www.sics.se/~adam/uip/\r\nConnection: close\r\n" -http_content_type_plain "Content-type: text/plain\r\n\r\n" -http_content_type_html "Content-type: text/html\r\n\r\n" -http_content_type_css "Content-type: text/css\r\n\r\n" -http_content_type_text "Content-type: text/text\r\n\r\n" -http_content_type_png "Content-type: image/png\r\n\r\n" -http_content_type_gif "Content-type: image/gif\r\n\r\n" -http_content_type_jpg "Content-type: image/jpeg\r\n\r\n" -http_content_type_binary "Content-type: application/octet-stream\r\n\r\n" -http_html ".html" -http_shtml ".shtml" -http_htm ".htm" -http_css ".css" -http_png ".png" -http_gif ".gif" -http_jpg ".jpg" -http_text ".txt" -http_txt ".txt" - diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/http-strings.c b/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/http-strings.c deleted file mode 100644 index ef7a41c7d..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/http-strings.c +++ /dev/null @@ -1,102 +0,0 @@ -const char http_http[8] = -/* "http://" */ -{0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, }; -const char http_200[5] = -/* "200 " */ -{0x32, 0x30, 0x30, 0x20, }; -const char http_301[5] = -/* "301 " */ -{0x33, 0x30, 0x31, 0x20, }; -const char http_302[5] = -/* "302 " */ -{0x33, 0x30, 0x32, 0x20, }; -const char http_get[5] = -/* "GET " */ -{0x47, 0x45, 0x54, 0x20, }; -const char http_10[9] = -/* "HTTP/1.0" */ -{0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30, }; -const char http_11[9] = -/* "HTTP/1.1" */ -{0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x31, }; -const char http_content_type[15] = -/* "content-type: " */ -{0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, }; -const char http_texthtml[10] = -/* "text/html" */ -{0x74, 0x65, 0x78, 0x74, 0x2f, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_location[11] = -/* "location: " */ -{0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, }; -const char http_host[7] = -/* "host: " */ -{0x68, 0x6f, 0x73, 0x74, 0x3a, 0x20, }; -const char http_crnl[3] = -/* "\r\n" */ -{0xd, 0xa, }; -const char http_index_html[12] = -/* "/index.html" */ -{0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_404_html[10] = -/* "/404.html" */ -{0x2f, 0x34, 0x30, 0x34, 0x2e, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_referer[9] = -/* "Referer:" */ -{0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x72, 0x3a, }; -const char http_header_200[84] = -/* "HTTP/1.0 200 OK\r\nServer: uIP/1.0 http://www.sics.se/~adam/uip/\r\nConnection: close\r\n" */ -{0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x32, 0x30, 0x30, 0x20, 0x4f, 0x4b, 0xd, 0xa, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x3a, 0x20, 0x75, 0x49, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x73, 0x69, 0x63, 0x73, 0x2e, 0x73, 0x65, 0x2f, 0x7e, 0x61, 0x64, 0x61, 0x6d, 0x2f, 0x75, 0x69, 0x70, 0x2f, 0xd, 0xa, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0xd, 0xa, }; -const char http_header_404[91] = -/* "HTTP/1.0 404 Not found\r\nServer: uIP/1.0 http://www.sics.se/~adam/uip/\r\nConnection: close\r\n" */ -{0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x34, 0x30, 0x34, 0x20, 0x4e, 0x6f, 0x74, 0x20, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0xd, 0xa, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x3a, 0x20, 0x75, 0x49, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x73, 0x69, 0x63, 0x73, 0x2e, 0x73, 0x65, 0x2f, 0x7e, 0x61, 0x64, 0x61, 0x6d, 0x2f, 0x75, 0x69, 0x70, 0x2f, 0xd, 0xa, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0xd, 0xa, }; -const char http_content_type_plain[29] = -/* "Content-type: text/plain\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_html[28] = -/* "Content-type: text/html\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_css [27] = -/* "Content-type: text/css\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x63, 0x73, 0x73, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_text[28] = -/* "Content-type: text/text\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x74, 0x65, 0x78, 0x74, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_png [28] = -/* "Content-type: image/png\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x70, 0x6e, 0x67, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_gif [28] = -/* "Content-type: image/gif\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x67, 0x69, 0x66, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_jpg [29] = -/* "Content-type: image/jpeg\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x6a, 0x70, 0x65, 0x67, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_binary[43] = -/* "Content-type: application/octet-stream\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x6f, 0x63, 0x74, 0x65, 0x74, 0x2d, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0xd, 0xa, 0xd, 0xa, }; -const char http_html[6] = -/* ".html" */ -{0x2e, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_shtml[7] = -/* ".shtml" */ -{0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_htm[5] = -/* ".htm" */ -{0x2e, 0x68, 0x74, 0x6d, }; -const char http_css[5] = -/* ".css" */ -{0x2e, 0x63, 0x73, 0x73, }; -const char http_png[5] = -/* ".png" */ -{0x2e, 0x70, 0x6e, 0x67, }; -const char http_gif[5] = -/* ".gif" */ -{0x2e, 0x67, 0x69, 0x66, }; -const char http_jpg[5] = -/* ".jpg" */ -{0x2e, 0x6a, 0x70, 0x67, }; -const char http_text[5] = -/* ".txt" */ -{0x2e, 0x74, 0x78, 0x74, }; -const char http_txt[5] = -/* ".txt" */ -{0x2e, 0x74, 0x78, 0x74, }; diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/http-strings.h b/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/http-strings.h deleted file mode 100644 index acbe7e17f..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/http-strings.h +++ /dev/null @@ -1,34 +0,0 @@ -extern const char http_http[8]; -extern const char http_200[5]; -extern const char http_301[5]; -extern const char http_302[5]; -extern const char http_get[5]; -extern const char http_10[9]; -extern const char http_11[9]; -extern const char http_content_type[15]; -extern const char http_texthtml[10]; -extern const char http_location[11]; -extern const char http_host[7]; -extern const char http_crnl[3]; -extern const char http_index_html[12]; -extern const char http_404_html[10]; -extern const char http_referer[9]; -extern const char http_header_200[84]; -extern const char http_header_404[91]; -extern const char http_content_type_plain[29]; -extern const char http_content_type_html[28]; -extern const char http_content_type_css [27]; -extern const char http_content_type_text[28]; -extern const char http_content_type_png [28]; -extern const char http_content_type_gif [28]; -extern const char http_content_type_jpg [29]; -extern const char http_content_type_binary[43]; -extern const char http_html[6]; -extern const char http_shtml[7]; -extern const char http_htm[5]; -extern const char http_css[5]; -extern const char http_png[5]; -extern const char http_gif[5]; -extern const char http_jpg[5]; -extern const char http_text[5]; -extern const char http_txt[5]; diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/httpd-cgi.c b/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/httpd-cgi.c deleted file mode 100644 index ecbe93822..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/httpd-cgi.c +++ /dev/null @@ -1,233 +0,0 @@ -/** - * \addtogroup httpd - * @{ - */ - -/** - * \file - * Web server script interface - * \author - * Adam Dunkels - * - */ - -/* - * Copyright (c) 2001-2006, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: httpd-cgi.c,v 1.2 2006/06/11 21:46:37 adam Exp $ - * - */ - -#include "uip.h" -#include "psock.h" -#include "httpd.h" -#include "httpd-cgi.h" -#include "httpd-fs.h" - -#include -#include - -HTTPD_CGI_CALL(file, "file-stats", file_stats); -HTTPD_CGI_CALL(tcp, "tcp-connections", tcp_stats); -HTTPD_CGI_CALL(net, "net-stats", net_stats); -HTTPD_CGI_CALL(rtos, "rtos-stats", rtos_stats ); - - -static const struct httpd_cgi_call *calls[] = { &file, &tcp, &net, &rtos, NULL }; - -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(nullfunction(struct httpd_state *s, char *ptr)) -{ - PSOCK_BEGIN(&s->sout); - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -httpd_cgifunction -httpd_cgi(char *name) -{ - const struct httpd_cgi_call **f; - - /* Find the matching name in the table, return the function. */ - for(f = calls; *f != NULL; ++f) { - if(strncmp((*f)->name, name, strlen((*f)->name)) == 0) { - return (*f)->function; - } - } - return nullfunction; -} -/*---------------------------------------------------------------------------*/ -static unsigned short -generate_file_stats(void *arg) -{ - char *f = (char *)arg; - return snprintf((char *)uip_appdata, UIP_APPDATA_SIZE, "%5u", httpd_fs_count(f)); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(file_stats(struct httpd_state *s, char *ptr)) -{ - PSOCK_BEGIN(&s->sout); - - PSOCK_GENERATOR_SEND(&s->sout, generate_file_stats, strchr(ptr, ' ') + 1); - - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -static const char closed[] = /* "CLOSED",*/ -{0x43, 0x4c, 0x4f, 0x53, 0x45, 0x44, 0}; -static const char syn_rcvd[] = /* "SYN-RCVD",*/ -{0x53, 0x59, 0x4e, 0x2d, 0x52, 0x43, 0x56, - 0x44, 0}; -static const char syn_sent[] = /* "SYN-SENT",*/ -{0x53, 0x59, 0x4e, 0x2d, 0x53, 0x45, 0x4e, - 0x54, 0}; -static const char established[] = /* "ESTABLISHED",*/ -{0x45, 0x53, 0x54, 0x41, 0x42, 0x4c, 0x49, 0x53, 0x48, - 0x45, 0x44, 0}; -static const char fin_wait_1[] = /* "FIN-WAIT-1",*/ -{0x46, 0x49, 0x4e, 0x2d, 0x57, 0x41, 0x49, - 0x54, 0x2d, 0x31, 0}; -static const char fin_wait_2[] = /* "FIN-WAIT-2",*/ -{0x46, 0x49, 0x4e, 0x2d, 0x57, 0x41, 0x49, - 0x54, 0x2d, 0x32, 0}; -static const char closing[] = /* "CLOSING",*/ -{0x43, 0x4c, 0x4f, 0x53, 0x49, - 0x4e, 0x47, 0}; -static const char time_wait[] = /* "TIME-WAIT,"*/ -{0x54, 0x49, 0x4d, 0x45, 0x2d, 0x57, 0x41, - 0x49, 0x54, 0}; -static const char last_ack[] = /* "LAST-ACK"*/ -{0x4c, 0x41, 0x53, 0x54, 0x2d, 0x41, 0x43, - 0x4b, 0}; - -static const char *states[] = { - closed, - syn_rcvd, - syn_sent, - established, - fin_wait_1, - fin_wait_2, - closing, - time_wait, - last_ack}; - - -static unsigned short -generate_tcp_stats(void *arg) -{ - struct uip_conn *conn; - struct httpd_state *s = (struct httpd_state *)arg; - - conn = &uip_conns[s->count]; - return snprintf((char *)uip_appdata, UIP_APPDATA_SIZE, - "
\r\n", - htons(conn->lport), - htons(conn->ripaddr[0]) >> 8, - htons(conn->ripaddr[0]) & 0xff, - htons(conn->ripaddr[1]) >> 8, - htons(conn->ripaddr[1]) & 0xff, - htons(conn->rport), - states[conn->tcpstateflags & UIP_TS_MASK], - conn->nrtx, - conn->timer, - (uip_outstanding(conn))? '*':' ', - (uip_stopped(conn))? '!':' '); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(tcp_stats(struct httpd_state *s, char *ptr)) -{ - - PSOCK_BEGIN(&s->sout); - - for(s->count = 0; s->count < UIP_CONNS; ++s->count) { - if((uip_conns[s->count].tcpstateflags & UIP_TS_MASK) != UIP_CLOSED) { - PSOCK_GENERATOR_SEND(&s->sout, generate_tcp_stats, s); - } - } - - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -static unsigned short -generate_net_stats(void *arg) -{ - struct httpd_state *s = (struct httpd_state *)arg; - return snprintf((char *)uip_appdata, UIP_APPDATA_SIZE, - "%5u\n", ((uip_stats_t *)&uip_stat)[s->count]); -} - -static -PT_THREAD(net_stats(struct httpd_state *s, char *ptr)) -{ - PSOCK_BEGIN(&s->sout); - -#if UIP_STATISTICS - - for(s->count = 0; s->count < sizeof(uip_stat) / sizeof(uip_stats_t); - ++s->count) { - PSOCK_GENERATOR_SEND(&s->sout, generate_net_stats, s); - } - -#endif /* UIP_STATISTICS */ - - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ - -extern void vTaskList( char *pcWriteBuffer ); -static char cCountBuf[ 32 ]; -long lRefreshCount = 0; -static unsigned short -generate_rtos_stats(void *arg) -{ - lRefreshCount++; - sprintf( cCountBuf, "


Refresh count = %d", lRefreshCount ); - vTaskList( ( char * ) uip_appdata ); - strcat( uip_appdata, cCountBuf ); - - return strlen( uip_appdata ); -} -/*---------------------------------------------------------------------------*/ - - -static -PT_THREAD(rtos_stats(struct httpd_state *s, char *ptr)) -{ - PSOCK_BEGIN(&s->sout); -// for( s->count = 0; s->count < 4; ++s->count ) -// { - PSOCK_GENERATOR_SEND(&s->sout, generate_rtos_stats, NULL); -// } - PSOCK_END(&s->sout); -} - -/** @} */ diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/httpd-cgi.h b/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/httpd-cgi.h deleted file mode 100644 index 7ae928321..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/httpd-cgi.h +++ /dev/null @@ -1,84 +0,0 @@ -/** - * \addtogroup httpd - * @{ - */ - -/** - * \file - * Web server script interface header file - * \author - * Adam Dunkels - * - */ - - - -/* - * Copyright (c) 2001, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: httpd-cgi.h,v 1.2 2006/06/11 21:46:38 adam Exp $ - * - */ - -#ifndef __HTTPD_CGI_H__ -#define __HTTPD_CGI_H__ - -#include "psock.h" -#include "httpd.h" - -typedef PT_THREAD((* httpd_cgifunction)(struct httpd_state *, char *)); - -httpd_cgifunction httpd_cgi(char *name); - -struct httpd_cgi_call { - const char *name; - const httpd_cgifunction function; -}; - -/** - * \brief HTTPD CGI function declaration - * \param name The C variable name of the function - * \param str The string name of the function, used in the script file - * \param function A pointer to the function that implements it - * - * This macro is used for declaring a HTTPD CGI - * function. This function is then added to the list of - * HTTPD CGI functions with the httpd_cgi_add() function. - * - * \hideinitializer - */ -#define HTTPD_CGI_CALL(name, str, function) \ -static PT_THREAD(function(struct httpd_state *, char *)); \ -static const struct httpd_cgi_call name = {str, function} - -void httpd_cgi_init(void); -#endif /* __HTTPD_CGI_H__ */ - -/** @} */ diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/httpd-fs.c b/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/httpd-fs.c deleted file mode 100644 index dc4aef011..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/httpd-fs.c +++ /dev/null @@ -1,132 +0,0 @@ -/* - * Copyright (c) 2001, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - * $Id: httpd-fs.c,v 1.1 2006/06/07 09:13:08 adam Exp $ - */ - -#include "httpd.h" -#include "httpd-fs.h" -#include "httpd-fsdata.h" - -#ifndef NULL -#define NULL 0 -#endif /* NULL */ - -#include "httpd-fsdata.c" - -#if HTTPD_FS_STATISTICS -static u16_t count[HTTPD_FS_NUMFILES]; -#endif /* HTTPD_FS_STATISTICS */ - -/*-----------------------------------------------------------------------------------*/ -static u8_t -httpd_fs_strcmp(const char *str1, const char *str2) -{ - u8_t i; - i = 0; - loop: - - if(str2[i] == 0 || - str1[i] == '\r' || - str1[i] == '\n') { - return 0; - } - - if(str1[i] != str2[i]) { - return 1; - } - - - ++i; - goto loop; -} -/*-----------------------------------------------------------------------------------*/ -int -httpd_fs_open(const char *name, struct httpd_fs_file *file) -{ -#if HTTPD_FS_STATISTICS - u16_t i = 0; -#endif /* HTTPD_FS_STATISTICS */ - struct httpd_fsdata_file_noconst *f; - - for(f = (struct httpd_fsdata_file_noconst *)HTTPD_FS_ROOT; - f != NULL; - f = (struct httpd_fsdata_file_noconst *)f->next) { - - if(httpd_fs_strcmp(name, f->name) == 0) { - file->data = f->data; - file->len = f->len; -#if HTTPD_FS_STATISTICS - ++count[i]; -#endif /* HTTPD_FS_STATISTICS */ - return 1; - } -#if HTTPD_FS_STATISTICS - ++i; -#endif /* HTTPD_FS_STATISTICS */ - - } - return 0; -} -/*-----------------------------------------------------------------------------------*/ -void -httpd_fs_init(void) -{ -#if HTTPD_FS_STATISTICS - u16_t i; - for(i = 0; i < HTTPD_FS_NUMFILES; i++) { - count[i] = 0; - } -#endif /* HTTPD_FS_STATISTICS */ -} -/*-----------------------------------------------------------------------------------*/ -#if HTTPD_FS_STATISTICS -u16_t httpd_fs_count -(char *name) -{ - struct httpd_fsdata_file_noconst *f; - u16_t i; - - i = 0; - for(f = (struct httpd_fsdata_file_noconst *)HTTPD_FS_ROOT; - f != NULL; - f = (struct httpd_fsdata_file_noconst *)f->next) { - - if(httpd_fs_strcmp(name, f->name) == 0) { - return count[i]; - } - ++i; - } - return 0; -} -#endif /* HTTPD_FS_STATISTICS */ -/*-----------------------------------------------------------------------------------*/ diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/httpd-fs.h b/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/httpd-fs.h deleted file mode 100644 index b594eea56..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/httpd-fs.h +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright (c) 2001, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - * $Id: httpd-fs.h,v 1.1 2006/06/07 09:13:08 adam Exp $ - */ -#ifndef __HTTPD_FS_H__ -#define __HTTPD_FS_H__ - -#define HTTPD_FS_STATISTICS 1 - -struct httpd_fs_file { - char *data; - int len; -}; - -/* file must be allocated by caller and will be filled in - by the function. */ -int httpd_fs_open(const char *name, struct httpd_fs_file *file); - -#ifdef HTTPD_FS_STATISTICS -#if HTTPD_FS_STATISTICS == 1 -u16_t httpd_fs_count(char *name); -#endif /* HTTPD_FS_STATISTICS */ -#endif /* HTTPD_FS_STATISTICS */ - -void httpd_fs_init(void); - -#endif /* __HTTPD_FS_H__ */ diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/httpd-fs/404.html b/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/httpd-fs/404.html deleted file mode 100644 index 43e7f4cad..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/httpd-fs/404.html +++ /dev/null @@ -1,8 +0,0 @@ - - -

-

404 - file not found

-

Go here instead.

-
- - \ No newline at end of file diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/httpd-fs/index.html b/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/httpd-fs/index.html deleted file mode 100644 index 1d3bbeee1..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/httpd-fs/index.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Loading index.shtml. Click here if not automatically redirected. - - - - - diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/httpd-fs/index.shtml b/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/httpd-fs/index.shtml deleted file mode 100644 index 37afd33a5..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/httpd-fs/index.shtml +++ /dev/null @@ -1,20 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -RTOS Stats | TCP Stats | Connections | FreeRTOS.org Homepage -

-


-

-

Task statistics

-Page will refresh evey 2 seconds.

-

Task          State  Priority  Stack	#
************************************************
-%! rtos-stats -
-
- - - diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/httpd-fs/stats.shtml b/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/httpd-fs/stats.shtml deleted file mode 100644 index 3cc2df397..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/httpd-fs/stats.shtml +++ /dev/null @@ -1,41 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -RTOS Stats | TCP Stats | Connections | FreeRTOS.org Homepage -

-


-

-

Network statistics

-
LocalRemoteStateRetransmissionsTimerFlags
%d%u.%u.%u.%u:%u%s%u%u%c %c
-
-IP           Packets dropped
-             Packets received
-             Packets sent
-IP errors    IP version/header length
-             IP length, high byte
-             IP length, low byte
-             IP fragments
-             Header checksum
-             Wrong protocol
-ICMP	     Packets dropped
-             Packets received
-             Packets sent
-             Type errors
-TCP          Packets dropped
-             Packets received
-             Packets sent
-             Checksum errors
-             Data packets without ACKs
-             Resets
-             Retransmissions
-	     No connection avaliable
-	     Connection attempts to closed ports
-
%! net-stats
-
- - - diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/httpd-fs/tcp.shtml b/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/httpd-fs/tcp.shtml deleted file mode 100644 index 4ed468a88..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/httpd-fs/tcp.shtml +++ /dev/null @@ -1,21 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -RTOS Stats | TCP Stats | Connections | FreeRTOS.org Homepage -

-


-
-

Network connections

-

- - -%! tcp-connections - - - - - diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/httpd-fsdata.c b/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/httpd-fsdata.c deleted file mode 100644 index d4017cd19..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/httpd-fsdata.c +++ /dev/null @@ -1,363 +0,0 @@ -static const unsigned char data_404_html[] = { - /* /404.html */ - 0x2f, 0x34, 0x30, 0x34, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, 0x20, 0x20, 0x3c, - 0x62, 0x6f, 0x64, 0x79, 0x20, 0x62, 0x67, 0x63, 0x6f, 0x6c, - 0x6f, 0x72, 0x3d, 0x22, 0x77, 0x68, 0x69, 0x74, 0x65, 0x22, - 0x3e, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x63, 0x65, 0x6e, - 0x74, 0x65, 0x72, 0x3e, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x3c, 0x68, 0x31, 0x3e, 0x34, 0x30, 0x34, 0x20, 0x2d, - 0x20, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x6e, 0x6f, 0x74, 0x20, - 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x3c, 0x2f, 0x68, 0x31, 0x3e, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x68, 0x33, - 0x3e, 0x47, 0x6f, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, - 0x66, 0x3d, 0x22, 0x2f, 0x22, 0x3e, 0x68, 0x65, 0x72, 0x65, - 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x65, - 0x61, 0x64, 0x2e, 0x3c, 0x2f, 0x68, 0x33, 0x3e, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x3c, 0x2f, 0x63, 0x65, 0x6e, 0x74, 0x65, - 0x72, 0x3e, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x62, 0x6f, 0x64, - 0x79, 0x3e, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, -0}; - -static const unsigned char data_index_html[] = { - /* /index.html */ - 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, - 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, - 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, 0x57, 0x45, 0x42, - 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x64, 0x65, - 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x42, 0x4f, 0x44, 0x59, 0x20, 0x6f, - 0x6e, 0x4c, 0x6f, 0x61, 0x64, 0x3d, 0x22, 0x77, 0x69, 0x6e, - 0x64, 0x6f, 0x77, 0x2e, 0x73, 0x65, 0x74, 0x54, 0x69, 0x6d, - 0x65, 0x6f, 0x75, 0x74, 0x28, 0x26, 0x71, 0x75, 0x6f, 0x74, - 0x3b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x27, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x27, 0x26, 0x71, - 0x75, 0x6f, 0x74, 0x3b, 0x2c, 0x31, 0x30, 0x30, 0x29, 0x22, - 0x62, 0x67, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3d, 0x22, 0x23, - 0x43, 0x43, 0x43, 0x43, 0x66, 0x66, 0x22, 0x3e, 0xa, 0x3c, - 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, - 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xa, 0x4c, - 0x6f, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x69, 0x6e, 0x64, - 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x2e, 0x20, - 0x20, 0x43, 0x6c, 0x69, 0x63, 0x6b, 0x20, 0x3c, 0x61, 0x20, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x68, - 0x65, 0x72, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x69, 0x66, - 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x61, 0x75, 0x74, 0x6f, 0x6d, - 0x61, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x6c, 0x79, 0x20, 0x72, - 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x65, 0x64, 0x2e, - 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xa, 0x3c, - 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xa, 0x3c, 0x2f, 0x62, - 0x6f, 0x64, 0x79, 0x3e, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, - 0x6c, 0x3e, 0xa, 0xa, 0}; - -static const unsigned char data_index_shtml[] = { - /* /index.shtml */ - 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, - 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, - 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, 0x57, 0x45, 0x42, - 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x64, 0x65, - 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x42, 0x4f, 0x44, 0x59, 0x20, 0x6f, - 0x6e, 0x4c, 0x6f, 0x61, 0x64, 0x3d, 0x22, 0x77, 0x69, 0x6e, - 0x64, 0x6f, 0x77, 0x2e, 0x73, 0x65, 0x74, 0x54, 0x69, 0x6d, - 0x65, 0x6f, 0x75, 0x74, 0x28, 0x26, 0x71, 0x75, 0x6f, 0x74, - 0x3b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x27, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x27, 0x26, 0x71, - 0x75, 0x6f, 0x74, 0x3b, 0x2c, 0x32, 0x30, 0x30, 0x30, 0x29, - 0x22, 0x62, 0x67, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3d, 0x22, - 0x23, 0x43, 0x43, 0x43, 0x43, 0x66, 0x66, 0x22, 0x3e, 0xa, - 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, - 0x3d, 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xa, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x52, 0x54, 0x4f, 0x53, 0x20, 0x53, 0x74, 0x61, - 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, 0x74, 0x73, - 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x43, - 0x50, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, - 0x3e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, - 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, 0x65, 0x65, - 0x72, 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x22, - 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, - 0x6f, 0x72, 0x67, 0x20, 0x48, 0x6f, 0x6d, 0x65, 0x70, 0x61, - 0x67, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0xa, 0x3c, 0x62, 0x72, - 0x3e, 0x3c, 0x70, 0x3e, 0xa, 0x3c, 0x68, 0x72, 0x3e, 0xa, - 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xa, 0x3c, 0x68, - 0x32, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x73, 0x74, 0x61, - 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x3c, 0x2f, 0x68, - 0x32, 0x3e, 0xa, 0x50, 0x61, 0x67, 0x65, 0x20, 0x77, 0x69, - 0x6c, 0x6c, 0x20, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, - 0x20, 0x65, 0x76, 0x65, 0x79, 0x20, 0x32, 0x20, 0x73, 0x65, - 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x2e, 0x3c, 0x70, 0x3e, 0xa, - 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, - 0x3d, 0x22, 0x63, 0x6f, 0x75, 0x72, 0x69, 0x65, 0x72, 0x22, - 0x3e, 0x3c, 0x70, 0x72, 0x65, 0x3e, 0x54, 0x61, 0x73, 0x6b, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x53, 0x74, 0x61, 0x74, 0x65, 0x20, 0x20, 0x50, 0x72, 0x69, - 0x6f, 0x72, 0x69, 0x74, 0x79, 0x20, 0x20, 0x53, 0x74, 0x61, - 0x63, 0x6b, 0x9, 0x23, 0x3c, 0x62, 0x72, 0x3e, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x3c, 0x62, 0x72, 0x3e, - 0xa, 0x25, 0x21, 0x20, 0x72, 0x74, 0x6f, 0x73, 0x2d, 0x73, - 0x74, 0x61, 0x74, 0x73, 0xa, 0x3c, 0x2f, 0x70, 0x72, 0x65, - 0x3e, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xa, 0x3c, - 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xa, 0x3c, 0x2f, 0x62, - 0x6f, 0x64, 0x79, 0x3e, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, - 0x6c, 0x3e, 0xa, 0xa, 0}; - -static const unsigned char data_stats_shtml[] = { - /* /stats.shtml */ - 0x2f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, - 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, - 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, 0x57, 0x45, 0x42, - 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x64, 0x65, - 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x42, 0x4f, 0x44, 0x59, 0x20, 0x62, - 0x67, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3d, 0x22, 0x23, 0x43, - 0x43, 0x43, 0x43, 0x66, 0x66, 0x22, 0x3e, 0xa, 0x3c, 0x66, - 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, - 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xa, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, - 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x52, 0x54, 0x4f, 0x53, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, - 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, - 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, - 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, - 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x43, 0x50, 0x20, - 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, - 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, - 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, 0x63, - 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x43, - 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, - 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, - 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, - 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, 0x65, 0x65, 0x72, 0x74, - 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x22, 0x3e, 0x46, - 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, 0x72, - 0x67, 0x20, 0x48, 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, - 0x3c, 0x2f, 0x61, 0x3e, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, - 0x70, 0x3e, 0xa, 0x3c, 0x68, 0x72, 0x3e, 0xa, 0x3c, 0x62, - 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xa, 0x3c, 0x68, 0x32, 0x3e, - 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x20, 0x73, 0x74, - 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x3c, 0x2f, - 0x68, 0x32, 0x3e, 0xa, 0x3c, 0x74, 0x61, 0x62, 0x6c, 0x65, - 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3d, 0x22, 0x33, 0x30, - 0x30, 0x22, 0x20, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x3d, - 0x22, 0x30, 0x22, 0x3e, 0xa, 0x3c, 0x74, 0x72, 0x3e, 0x3c, - 0x74, 0x64, 0x20, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x3d, 0x22, - 0x6c, 0x65, 0x66, 0x74, 0x22, 0x3e, 0x3c, 0x66, 0x6f, 0x6e, - 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x63, 0x6f, - 0x75, 0x72, 0x69, 0x65, 0x72, 0x22, 0x3e, 0x3c, 0x70, 0x72, - 0x65, 0x3e, 0xa, 0x49, 0x50, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x73, 0x20, 0x64, 0x72, 0x6f, 0x70, 0x70, 0x65, - 0x64, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, - 0x74, 0x73, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, - 0x64, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, - 0x74, 0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, 0xa, 0x49, 0x50, - 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x20, 0x20, 0x20, - 0x20, 0x49, 0x50, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, 0x6c, - 0x65, 0x6e, 0x67, 0x74, 0x68, 0xa, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x49, - 0x50, 0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x2c, 0x20, - 0x68, 0x69, 0x67, 0x68, 0x20, 0x62, 0x79, 0x74, 0x65, 0xa, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x49, 0x50, 0x20, 0x6c, 0x65, 0x6e, 0x67, - 0x74, 0x68, 0x2c, 0x20, 0x6c, 0x6f, 0x77, 0x20, 0x62, 0x79, - 0x74, 0x65, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x49, 0x50, 0x20, 0x66, - 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, 0x63, - 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x57, 0x72, 0x6f, 0x6e, 0x67, 0x20, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0xa, 0x49, 0x43, 0x4d, 0x50, - 0x9, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x73, 0x20, 0x64, 0x72, 0x6f, 0x70, 0x70, 0x65, - 0x64, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, - 0x74, 0x73, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, - 0x64, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, - 0x74, 0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x54, 0x79, 0x70, 0x65, 0x20, 0x65, 0x72, 0x72, 0x6f, - 0x72, 0x73, 0xa, 0x54, 0x43, 0x50, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x73, 0x20, 0x64, 0x72, 0x6f, 0x70, 0x70, 0x65, - 0x64, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, - 0x74, 0x73, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, - 0x64, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, - 0x74, 0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x20, - 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0xa, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x44, 0x61, 0x74, 0x61, 0x20, 0x70, 0x61, 0x63, 0x6b, 0x65, - 0x74, 0x73, 0x20, 0x77, 0x69, 0x74, 0x68, 0x6f, 0x75, 0x74, - 0x20, 0x41, 0x43, 0x4b, 0x73, 0xa, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x52, - 0x65, 0x73, 0x65, 0x74, 0x73, 0xa, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x52, - 0x65, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x73, 0x73, - 0x69, 0x6f, 0x6e, 0x73, 0xa, 0x9, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x4e, 0x6f, 0x20, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x61, 0x76, 0x61, 0x6c, 0x69, - 0x61, 0x62, 0x6c, 0x65, 0xa, 0x9, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x20, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x73, - 0x20, 0x74, 0x6f, 0x20, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x64, - 0x20, 0x70, 0x6f, 0x72, 0x74, 0x73, 0xa, 0x3c, 0x2f, 0x70, - 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, - 0x3c, 0x2f, 0x74, 0x64, 0x3e, 0x3c, 0x74, 0x64, 0x3e, 0x3c, - 0x70, 0x72, 0x65, 0x3e, 0x25, 0x21, 0x20, 0x6e, 0x65, 0x74, - 0x2d, 0x73, 0x74, 0x61, 0x74, 0x73, 0xa, 0x3c, 0x2f, 0x70, - 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x74, 0x61, 0x62, 0x6c, 0x65, - 0x3e, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xa, - 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xa, 0x3c, 0x2f, - 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, 0}; - -static const unsigned char data_tcp_shtml[] = { - /* /tcp.shtml */ - 0x2f, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, - 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, - 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, 0x57, 0x45, 0x42, - 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x64, 0x65, - 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x42, 0x4f, 0x44, 0x59, 0x20, 0x62, - 0x67, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3d, 0x22, 0x23, 0x43, - 0x43, 0x43, 0x43, 0x66, 0x66, 0x22, 0x3e, 0xa, 0x3c, 0x66, - 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, - 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xa, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, - 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x52, 0x54, 0x4f, 0x53, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, - 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, - 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, - 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, - 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x43, 0x50, 0x20, - 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, - 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, - 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, 0x63, - 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x43, - 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, - 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, - 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, - 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, 0x65, 0x65, 0x72, 0x74, - 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x22, 0x3e, 0x46, - 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, 0x72, - 0x67, 0x20, 0x48, 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, - 0x3c, 0x2f, 0x61, 0x3e, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, - 0x70, 0x3e, 0xa, 0x3c, 0x68, 0x72, 0x3e, 0xa, 0x3c, 0x62, - 0x72, 0x3e, 0xa, 0x3c, 0x68, 0x32, 0x3e, 0x4e, 0x65, 0x74, - 0x77, 0x6f, 0x72, 0x6b, 0x20, 0x63, 0x6f, 0x6e, 0x6e, 0x65, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x68, 0x32, - 0x3e, 0xa, 0x3c, 0x70, 0x3e, 0xa, 0x3c, 0x74, 0x61, 0x62, - 0x6c, 0x65, 0x3e, 0xa, 0x3c, 0x74, 0x72, 0x3e, 0x3c, 0x74, - 0x68, 0x3e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x3c, 0x2f, 0x74, - 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x52, 0x65, 0x6d, 0x6f, - 0x74, 0x65, 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, - 0x3e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x3c, 0x2f, 0x74, 0x68, - 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x52, 0x65, 0x74, 0x72, 0x61, - 0x6e, 0x73, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, - 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x54, - 0x69, 0x6d, 0x65, 0x72, 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, - 0x74, 0x68, 0x3e, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x3c, 0x2f, - 0x74, 0x68, 0x3e, 0x3c, 0x2f, 0x74, 0x72, 0x3e, 0xa, 0x25, - 0x21, 0x20, 0x74, 0x63, 0x70, 0x2d, 0x63, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0xa, 0x3c, 0x2f, - 0x70, 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, - 0x3e, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xa, - 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xa, 0x3c, 0x2f, - 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, 0xa, 0}; - -const struct httpd_fsdata_file file_404_html[] = {{NULL, data_404_html, data_404_html + 10, sizeof(data_404_html) - 10}}; - -const struct httpd_fsdata_file file_index_html[] = {{file_404_html, data_index_html, data_index_html + 12, sizeof(data_index_html) - 12}}; - -const struct httpd_fsdata_file file_index_shtml[] = {{file_index_html, data_index_shtml, data_index_shtml + 13, sizeof(data_index_shtml) - 13}}; - -const struct httpd_fsdata_file file_stats_shtml[] = {{file_index_shtml, data_stats_shtml, data_stats_shtml + 13, sizeof(data_stats_shtml) - 13}}; - -const struct httpd_fsdata_file file_tcp_shtml[] = {{file_stats_shtml, data_tcp_shtml, data_tcp_shtml + 11, sizeof(data_tcp_shtml) - 11}}; - -#define HTTPD_FS_ROOT file_tcp_shtml - -#define HTTPD_FS_NUMFILES 5 diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/httpd-fsdata.h b/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/httpd-fsdata.h deleted file mode 100644 index 52d35c265..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/httpd-fsdata.h +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright (c) 2001, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - * $Id: httpd-fsdata.h,v 1.1 2006/06/07 09:13:08 adam Exp $ - */ -#ifndef __HTTPD_FSDATA_H__ -#define __HTTPD_FSDATA_H__ - -#include "uip.h" - -struct httpd_fsdata_file { - const struct httpd_fsdata_file *next; - const char *name; - const char *data; - const int len; -#ifdef HTTPD_FS_STATISTICS -#if HTTPD_FS_STATISTICS == 1 - u16_t count; -#endif /* HTTPD_FS_STATISTICS */ -#endif /* HTTPD_FS_STATISTICS */ -}; - -struct httpd_fsdata_file_noconst { - struct httpd_fsdata_file *next; - char *name; - char *data; - int len; -#ifdef HTTPD_FS_STATISTICS -#if HTTPD_FS_STATISTICS == 1 - u16_t count; -#endif /* HTTPD_FS_STATISTICS */ -#endif /* HTTPD_FS_STATISTICS */ -}; - -#endif /* __HTTPD_FSDATA_H__ */ diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/httpd.c b/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/httpd.c deleted file mode 100644 index e808688d2..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/httpd.c +++ /dev/null @@ -1,338 +0,0 @@ -/** - * \addtogroup apps - * @{ - */ - -/** - * \defgroup httpd Web server - * @{ - * The uIP web server is a very simplistic implementation of an HTTP - * server. It can serve web pages and files from a read-only ROM - * filesystem, and provides a very small scripting language. - - */ - -/** - * \file - * Web server - * \author - * Adam Dunkels - */ - - -/* - * Copyright (c) 2004, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * Author: Adam Dunkels - * - * $Id: httpd.c,v 1.2 2006/06/11 21:46:38 adam Exp $ - */ - -#include "uip.h" -#include "httpd.h" -#include "httpd-fs.h" -#include "httpd-cgi.h" -#include "http-strings.h" - -#include - -#define STATE_WAITING 0 -#define STATE_OUTPUT 1 - -#define ISO_nl 0x0a -#define ISO_space 0x20 -#define ISO_bang 0x21 -#define ISO_percent 0x25 -#define ISO_period 0x2e -#define ISO_slash 0x2f -#define ISO_colon 0x3a - - -/*---------------------------------------------------------------------------*/ -static unsigned short -generate_part_of_file(void *state) -{ - struct httpd_state *s = (struct httpd_state *)state; - - if(s->file.len > uip_mss()) { - s->len = uip_mss(); - } else { - s->len = s->file.len; - } - memcpy(uip_appdata, s->file.data, s->len); - - return s->len; -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(send_file(struct httpd_state *s)) -{ - PSOCK_BEGIN(&s->sout); - - do { - PSOCK_GENERATOR_SEND(&s->sout, generate_part_of_file, s); - s->file.len -= s->len; - s->file.data += s->len; - } while(s->file.len > 0); - - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(send_part_of_file(struct httpd_state *s)) -{ - PSOCK_BEGIN(&s->sout); - - PSOCK_SEND(&s->sout, s->file.data, s->len); - - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -static void -next_scriptstate(struct httpd_state *s) -{ - char *p; - p = strchr(s->scriptptr, ISO_nl) + 1; - s->scriptlen -= (unsigned short)(p - s->scriptptr); - s->scriptptr = p; -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(handle_script(struct httpd_state *s)) -{ - char *ptr; - - PT_BEGIN(&s->scriptpt); - - - while(s->file.len > 0) { - - /* Check if we should start executing a script. */ - if(*s->file.data == ISO_percent && - *(s->file.data + 1) == ISO_bang) { - s->scriptptr = s->file.data + 3; - s->scriptlen = s->file.len - 3; - if(*(s->scriptptr - 1) == ISO_colon) { - httpd_fs_open(s->scriptptr + 1, &s->file); - PT_WAIT_THREAD(&s->scriptpt, send_file(s)); - } else { - PT_WAIT_THREAD(&s->scriptpt, - httpd_cgi(s->scriptptr)(s, s->scriptptr)); - } - next_scriptstate(s); - - /* The script is over, so we reset the pointers and continue - sending the rest of the file. */ - s->file.data = s->scriptptr; - s->file.len = s->scriptlen; - } else { - /* See if we find the start of script marker in the block of HTML - to be sent. */ - - if(s->file.len > uip_mss()) { - s->len = uip_mss(); - } else { - s->len = s->file.len; - } - - if(*s->file.data == ISO_percent) { - ptr = strchr(s->file.data + 1, ISO_percent); - } else { - ptr = strchr(s->file.data, ISO_percent); - } - if(ptr != NULL && - ptr != s->file.data) { - s->len = (int)(ptr - s->file.data); - if(s->len >= uip_mss()) { - s->len = uip_mss(); - } - } - PT_WAIT_THREAD(&s->scriptpt, send_part_of_file(s)); - s->file.data += s->len; - s->file.len -= s->len; - - } - } - - PT_END(&s->scriptpt); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(send_headers(struct httpd_state *s, const char *statushdr)) -{ - char *ptr; - - PSOCK_BEGIN(&s->sout); - - PSOCK_SEND_STR(&s->sout, statushdr); - - ptr = strrchr(s->filename, ISO_period); - if(ptr == NULL) { - PSOCK_SEND_STR(&s->sout, http_content_type_binary); - } else if(strncmp(http_html, ptr, 5) == 0 || - strncmp(http_shtml, ptr, 6) == 0) { - PSOCK_SEND_STR(&s->sout, http_content_type_html); - } else if(strncmp(http_css, ptr, 4) == 0) { - PSOCK_SEND_STR(&s->sout, http_content_type_css); - } else if(strncmp(http_png, ptr, 4) == 0) { - PSOCK_SEND_STR(&s->sout, http_content_type_png); - } else if(strncmp(http_gif, ptr, 4) == 0) { - PSOCK_SEND_STR(&s->sout, http_content_type_gif); - } else if(strncmp(http_jpg, ptr, 4) == 0) { - PSOCK_SEND_STR(&s->sout, http_content_type_jpg); - } else { - PSOCK_SEND_STR(&s->sout, http_content_type_plain); - } - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(handle_output(struct httpd_state *s)) -{ - char *ptr; - - PT_BEGIN(&s->outputpt); - - if(!httpd_fs_open(s->filename, &s->file)) { - httpd_fs_open(http_404_html, &s->file); - strcpy(s->filename, http_404_html); - PT_WAIT_THREAD(&s->outputpt, - send_headers(s, - http_header_404)); - PT_WAIT_THREAD(&s->outputpt, - send_file(s)); - } else { - PT_WAIT_THREAD(&s->outputpt, - send_headers(s, - http_header_200)); - ptr = strchr(s->filename, ISO_period); - if(ptr != NULL && strncmp(ptr, http_shtml, 6) == 0) { - PT_INIT(&s->scriptpt); - PT_WAIT_THREAD(&s->outputpt, handle_script(s)); - } else { - PT_WAIT_THREAD(&s->outputpt, - send_file(s)); - } - } - PSOCK_CLOSE(&s->sout); - PT_END(&s->outputpt); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(handle_input(struct httpd_state *s)) -{ - PSOCK_BEGIN(&s->sin); - - PSOCK_READTO(&s->sin, ISO_space); - - - if(strncmp(s->inputbuf, http_get, 4) != 0) { - PSOCK_CLOSE_EXIT(&s->sin); - } - PSOCK_READTO(&s->sin, ISO_space); - - if(s->inputbuf[0] != ISO_slash) { - PSOCK_CLOSE_EXIT(&s->sin); - } - - if(s->inputbuf[1] == ISO_space) { - strncpy(s->filename, http_index_html, sizeof(s->filename)); - } else { - s->inputbuf[PSOCK_DATALEN(&s->sin) - 1] = 0; - strncpy(s->filename, &s->inputbuf[0], sizeof(s->filename)); - } - - /* httpd_log_file(uip_conn->ripaddr, s->filename);*/ - - s->state = STATE_OUTPUT; - - while(1) { - PSOCK_READTO(&s->sin, ISO_nl); - - if(strncmp(s->inputbuf, http_referer, 8) == 0) { - s->inputbuf[PSOCK_DATALEN(&s->sin) - 2] = 0; - /* httpd_log(&s->inputbuf[9]);*/ - } - } - - PSOCK_END(&s->sin); -} -/*---------------------------------------------------------------------------*/ -static void -handle_connection(struct httpd_state *s) -{ - handle_input(s); - if(s->state == STATE_OUTPUT) { - handle_output(s); - } -} -/*---------------------------------------------------------------------------*/ -void -httpd_appcall(void) -{ - struct httpd_state *s = (struct httpd_state *)&(uip_conn->appstate); - - if(uip_closed() || uip_aborted() || uip_timedout()) { - } else if(uip_connected()) { - PSOCK_INIT(&s->sin, s->inputbuf, sizeof(s->inputbuf) - 1); - PSOCK_INIT(&s->sout, s->inputbuf, sizeof(s->inputbuf) - 1); - PT_INIT(&s->outputpt); - s->state = STATE_WAITING; - /* timer_set(&s->timer, CLOCK_SECOND * 100);*/ - s->timer = 0; - handle_connection(s); - } else if(s != NULL) { - if(uip_poll()) { - ++s->timer; - if(s->timer >= 20) { - uip_abort(); - } - } else { - s->timer = 0; - } - handle_connection(s); - } else { - uip_abort(); - } -} -/*---------------------------------------------------------------------------*/ -/** - * \brief Initialize the web server - * - * This function initializes the web server and should be - * called at system boot-up. - */ -void -httpd_init(void) -{ - uip_listen(HTONS(80)); -} -/*---------------------------------------------------------------------------*/ -/** @} */ diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/httpd.h b/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/httpd.h deleted file mode 100644 index 7f7a6666e..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/httpd.h +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright (c) 2001-2005, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: httpd.h,v 1.2 2006/06/11 21:46:38 adam Exp $ - * - */ - -#ifndef __HTTPD_H__ -#define __HTTPD_H__ - -#include "psock.h" -#include "httpd-fs.h" - -struct httpd_state { - unsigned char timer; - struct psock sin, sout; - struct pt outputpt, scriptpt; - char inputbuf[50]; - char filename[20]; - char state; - struct httpd_fs_file file; - int len; - char *scriptptr; - int scriptlen; - - unsigned short count; -}; - -void httpd_init(void); -void httpd_appcall(void); - -void httpd_log(char *msg); -void httpd_log_file(u16_t *requester, char *file); - -#endif /* __HTTPD_H__ */ diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/makefsdata b/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/makefsdata deleted file mode 100644 index 8d2715a8a..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/makefsdata +++ /dev/null @@ -1,78 +0,0 @@ -#!/usr/bin/perl - -open(OUTPUT, "> httpd-fsdata.c"); - -chdir("httpd-fs"); - -opendir(DIR, "."); -@files = grep { !/^\./ && !/(CVS|~)/ } readdir(DIR); -closedir(DIR); - -foreach $file (@files) { - - if(-d $file && $file !~ /^\./) { - print "Processing directory $file\n"; - opendir(DIR, $file); - @newfiles = grep { !/^\./ && !/(CVS|~)/ } readdir(DIR); - closedir(DIR); - printf "Adding files @newfiles\n"; - @files = (@files, map { $_ = "$file/$_" } @newfiles); - next; - } -} - -foreach $file (@files) { - if(-f $file) { - - print "Adding file $file\n"; - - open(FILE, $file) || die "Could not open file $file\n"; - - $file =~ s-^-/-; - $fvar = $file; - $fvar =~ s-/-_-g; - $fvar =~ s-\.-_-g; - # for AVR, add PROGMEM here - print(OUTPUT "static const unsigned char data".$fvar."[] = {\n"); - print(OUTPUT "\t/* $file */\n\t"); - for($j = 0; $j < length($file); $j++) { - printf(OUTPUT "%#02x, ", unpack("C", substr($file, $j, 1))); - } - printf(OUTPUT "0,\n"); - - - $i = 0; - while(read(FILE, $data, 1)) { - if($i == 0) { - print(OUTPUT "\t"); - } - printf(OUTPUT "%#02x, ", unpack("C", $data)); - $i++; - if($i == 10) { - print(OUTPUT "\n"); - $i = 0; - } - } - print(OUTPUT "0};\n\n"); - close(FILE); - push(@fvars, $fvar); - push(@pfiles, $file); - } -} - -for($i = 0; $i < @fvars; $i++) { - $file = $pfiles[$i]; - $fvar = $fvars[$i]; - - if($i == 0) { - $prevfile = "NULL"; - } else { - $prevfile = "file" . $fvars[$i - 1]; - } - print(OUTPUT "const struct httpd_fsdata_file file".$fvar."[] = {{$prevfile, data$fvar, "); - print(OUTPUT "data$fvar + ". (length($file) + 1) .", "); - print(OUTPUT "sizeof(data$fvar) - ". (length($file) + 1) ."}};\n\n"); -} - -print(OUTPUT "#define HTTPD_FS_ROOT file$fvars[$i - 1]\n\n"); -print(OUTPUT "#define HTTPD_FS_NUMFILES $i\n"); diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/makestrings b/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/makestrings deleted file mode 100644 index 8a13c6d29..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/makestrings +++ /dev/null @@ -1,40 +0,0 @@ -#!/usr/bin/perl - - -sub stringify { - my $name = shift(@_); - open(OUTPUTC, "> $name.c"); - open(OUTPUTH, "> $name.h"); - - open(FILE, "$name"); - - while() { - if(/(.+) "(.+)"/) { - $var = $1; - $data = $2; - - $datan = $data; - $datan =~ s/\\r/\r/g; - $datan =~ s/\\n/\n/g; - $datan =~ s/\\01/\01/g; - $datan =~ s/\\0/\0/g; - - printf(OUTPUTC "const char $var\[%d] = \n", length($datan) + 1); - printf(OUTPUTC "/* \"$data\" */\n"); - printf(OUTPUTC "{"); - for($j = 0; $j < length($datan); $j++) { - printf(OUTPUTC "%#02x, ", unpack("C", substr($datan, $j, 1))); - } - printf(OUTPUTC "};\n"); - - printf(OUTPUTH "extern const char $var\[%d];\n", length($datan) + 1); - - } - } - close(OUTPUTC); - close(OUTPUTH); -} -stringify("http-strings"); - -exit 0; - diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/uIP_Task.c b/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/uIP_Task.c deleted file mode 100644 index b9eff82fc..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/uIP_Task.c +++ /dev/null @@ -1,308 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ -/* Standard includes. */ -#include - -/* Library includes. */ -#include "91x_lib.h" -#include "91x_enet.h" - -/* Scheduler includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "semphr.h" - -/* uip includes. */ -#include "uip.h" -#include "uip_arp.h" -#include "httpd.h" -#include "timer.h" -#include "clock-arch.h" - -/*-----------------------------------------------------------*/ - -/* MAC address configuration. */ -#define uipMAC_ADDR0 0x00 -#define uipMAC_ADDR1 0x12 -#define uipMAC_ADDR2 0x13 -#define uipMAC_ADDR3 0x14 -#define uipMAC_ADDR4 0x15 -#define uipMAC_ADDR5 0x20 - -/* IP address configuration. */ -#define uipIP_ADDR0 172 -#define uipIP_ADDR1 25 -#define uipIP_ADDR2 218 -#define uipIP_ADDR3 11 - -/* Netmask configuration. */ -#define uipNET_MASK0 255 -#define uipNET_MASK1 255 -#define uipNET_MASK2 255 -#define uipNET_MASK3 0 - -/* Gateway address configuration. */ -#define uipGATEWAY_ADDR0 172 -#define uipGATEWAY_ADDR1 25 -#define uipGATEWAY_ADDR2 218 -#define uipGATEWAY_ADDR3 1 - -/* Shortcut to the header within the Rx buffer. */ -#define xHeader ((struct uip_eth_hdr *) &uip_buf[ 0 ]) - -/* uIP update frequencies. */ -#define uipMAX_BLOCK_TIME (configTICK_RATE_HZ / 4) - -/* Interrupt status bit definition. */ -#define uipDMI_RX_CURRENT_DONE 0x8000 - -/* If no buffers are available, then wait this long before looking again. */ -#define uipBUFFER_WAIT_DELAY ( 10 / portTICK_PERIOD_MS ) -#define uipBUFFER_WAIT_ATTEMPTS ( 10 ) - -/* Standard constant. */ -#define uipTOTAL_FRAME_HEADER_SIZE 54 - -/*-----------------------------------------------------------*/ - -/* - * Send the uIP buffer to the MAC. - */ -static void prvENET_Send(void); - -/* - * Setup the MAC address in the MAC itself, and in the uIP stack. - */ -static void prvSetMACAddress( void ); - -/* - * Used to return a pointer to the next buffer to be used. - */ -extern unsigned char *pcGetNextBuffer( void ); - -/* - * Port functions required by the uIP stack. - */ -void clock_init( void ); -clock_time_t clock_time( void ); - -/*-----------------------------------------------------------*/ - -/* The semaphore used by the ISR to wake the uIP task. */ -SemaphoreHandle_t xSemaphore = NULL; - -/*-----------------------------------------------------------*/ - -void clock_init(void) -{ - /* This is done when the scheduler starts. */ -} -/*-----------------------------------------------------------*/ - -clock_time_t clock_time( void ) -{ - return xTaskGetTickCount(); -} -/*-----------------------------------------------------------*/ - -void vuIP_Task( void *pvParameters ) -{ -portBASE_TYPE i; -uip_ipaddr_t xIPAddr; -struct timer periodic_timer, arp_timer; - - /* Create the semaphore used by the ISR to wake this task. */ - vSemaphoreCreateBinary( xSemaphore ); - - /* Initialise the uIP stack. */ - timer_set( &periodic_timer, configTICK_RATE_HZ / 2 ); - timer_set( &arp_timer, configTICK_RATE_HZ * 10 ); - uip_init(); - uip_ipaddr( xIPAddr, uipIP_ADDR0, uipIP_ADDR1, uipIP_ADDR2, uipIP_ADDR3 ); - uip_sethostaddr( xIPAddr ); - uip_ipaddr( xIPAddr, uipNET_MASK0, uipNET_MASK1, uipNET_MASK2, uipNET_MASK3 ); - uip_setnetmask( xIPAddr ); - uip_ipaddr( xIPAddr, uipGATEWAY_ADDR0, uipGATEWAY_ADDR1, uipGATEWAY_ADDR2, uipGATEWAY_ADDR3 ); - uip_setdraddr( xIPAddr ); - httpd_init(); - - /* Initialise the MAC. */ - ENET_InitClocksGPIO(); - ENET_Init(); - portENTER_CRITICAL(); - { - ENET_Start(); - prvSetMACAddress(); - VIC_Config( ENET_ITLine, VIC_IRQ, 1 ); - VIC_ITCmd( ENET_ITLine, ENABLE ); - ENET_DMA->ISR = uipDMI_RX_CURRENT_DONE; - ENET_DMA->IER = uipDMI_RX_CURRENT_DONE; - } - portEXIT_CRITICAL(); - - - while(1) - { - /* Is there received data ready to be processed? */ - uip_len = ENET_HandleRxPkt( uip_buf ); - - if( uip_len > 0 ) - { - /* Standard uIP loop taken from the uIP manual. */ - if( xHeader->type == htons( UIP_ETHTYPE_IP ) ) - { - uip_arp_ipin(); - uip_input(); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - uip_arp_out(); - prvENET_Send(); - } - } - else if( xHeader->type == htons( UIP_ETHTYPE_ARP ) ) - { - uip_arp_arpin(); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - prvENET_Send(); - } - } - } - else - { - if( timer_expired( &periodic_timer ) ) - { - timer_reset( &periodic_timer ); - for( i = 0; i < UIP_CONNS; i++ ) - { - uip_periodic( i ); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - uip_arp_out(); - prvENET_Send(); - } - } - - /* Call the ARP timer function every 10 seconds. */ - if( timer_expired( &arp_timer ) ) - { - timer_reset( &arp_timer ); - uip_arp_timer(); - } - } - else - { - /* We did not receive a packet, and there was no periodic - processing to perform. Block for a fixed period. If a packet - is received during this period we will be woken by the ISR - giving us the Semaphore. */ - xSemaphoreTake( xSemaphore, configTICK_RATE_HZ / 2 ); - } - } - } -} -/*-----------------------------------------------------------*/ - -static void prvENET_Send(void) -{ -portBASE_TYPE i; -static unsigned char *pcTxData; - - /* Get a DMA buffer into which we can write the data to send. */ - for( i = 0; i < uipBUFFER_WAIT_ATTEMPTS; i++ ) - { - pcTxData = pcGetNextBuffer(); - - if( pcTxData ) - { - break; - } - else - { - vTaskDelay( uipBUFFER_WAIT_DELAY ); - } - } - - if( pcTxData ) - { - /* Copy the header into the Tx buffer. */ - memcpy( ( void * ) pcTxData, ( void * ) uip_buf, uipTOTAL_FRAME_HEADER_SIZE ); - if( uip_len > uipTOTAL_FRAME_HEADER_SIZE ) - { - memcpy( ( void * ) &( pcTxData[ uipTOTAL_FRAME_HEADER_SIZE ] ), ( void * ) uip_appdata, ( uip_len - uipTOTAL_FRAME_HEADER_SIZE ) ); - } - - ENET_TxPkt( &pcTxData, uip_len ); - } -} -/*-----------------------------------------------------------*/ - -void ENET_IRQHandler(void) -{ -portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE; - - /* Give the semaphore in case the uIP task needs waking. */ - xSemaphoreGiveFromISR( xSemaphore, &xHigherPriorityTaskWoken ); - - /* Clear the interrupt. */ - ENET_DMA->ISR = uipDMI_RX_CURRENT_DONE; - - /* Switch tasks if necessary. */ - portEND_SWITCHING_ISR( xHigherPriorityTaskWoken ); -} -/*-----------------------------------------------------------*/ - -static void prvSetMACAddress( void ) -{ -struct uip_eth_addr xAddr; - - /* Configure the MAC address in the uIP stack. */ - xAddr.addr[ 0 ] = uipMAC_ADDR0; - xAddr.addr[ 1 ] = uipMAC_ADDR1; - xAddr.addr[ 2 ] = uipMAC_ADDR2; - xAddr.addr[ 3 ] = uipMAC_ADDR3; - xAddr.addr[ 4 ] = uipMAC_ADDR4; - xAddr.addr[ 5 ] = uipMAC_ADDR5; - uip_setethaddr( xAddr ); - - /* Write the MAC address to the MAC. */ - ENET_MAC->MAL = ( uipMAC_ADDR3 << 24 ) | ( uipMAC_ADDR2 << 16 ) | ( uipMAC_ADDR1 << 8 ) | ( uipMAC_ADDR0 ); - ENET_MAC->MAH = ( uipMAC_ADDR5 << 8 ) | ( uipMAC_ADDR4 ); -} - diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/uip-conf.h b/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/uip-conf.h deleted file mode 100644 index d514d14d2..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/uip-conf.h +++ /dev/null @@ -1,157 +0,0 @@ -/** - * \addtogroup uipopt - * @{ - */ - -/** - * \name Project-specific configuration options - * @{ - * - * uIP has a number of configuration options that can be overridden - * for each project. These are kept in a project-specific uip-conf.h - * file and all configuration names have the prefix UIP_CONF. - */ - -/* - * Copyright (c) 2006, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: uip-conf.h,v 1.6 2006/06/12 08:00:31 adam Exp $ - */ - -/** - * \file - * An example uIP configuration file - * \author - * Adam Dunkels - */ - -#ifndef __UIP_CONF_H__ -#define __UIP_CONF_H__ - -#include - -/** - * 8 bit datatype - * - * This typedef defines the 8-bit type used throughout uIP. - * - * \hideinitializer - */ -typedef uint8_t u8_t; - -/** - * 16 bit datatype - * - * This typedef defines the 16-bit type used throughout uIP. - * - * \hideinitializer - */ -typedef uint16_t u16_t; - -/** - * Statistics datatype - * - * This typedef defines the dataype used for keeping statistics in - * uIP. - * - * \hideinitializer - */ -typedef unsigned short uip_stats_t; - -/** - * Maximum number of TCP connections. - * - * \hideinitializer - */ -#define UIP_CONF_MAX_CONNECTIONS 40 - -/** - * Maximum number of listening TCP ports. - * - * \hideinitializer - */ -#define UIP_CONF_MAX_LISTENPORTS 40 - -/** - * uIP buffer size. - * - * \hideinitializer - */ -#define UIP_CONF_BUFFER_SIZE 1480 - -/** - * CPU byte order. - * - * \hideinitializer - */ -#define UIP_CONF_BYTE_ORDER LITTLE_ENDIAN - -/** - * Logging on or off - * - * \hideinitializer - */ -#define UIP_CONF_LOGGING 0 - -/** - * UDP support on or off - * - * \hideinitializer - */ -#define UIP_CONF_UDP 0 - -/** - * UDP checksums on or off - * - * \hideinitializer - */ -#define UIP_CONF_UDP_CHECKSUMS 1 - -/** - * uIP statistics on or off - * - * \hideinitializer - */ -#define UIP_CONF_STATISTICS 1 - -/* Here we include the header file for the application(s) we use in - our project. */ -/*#include "smtp.h"*/ -/*#include "hello-world.h"*/ -/*#include "telnetd.h"*/ -#include "webserver.h" -/*#include "dhcpc.h"*/ -/*#include "resolv.h"*/ -/*#include "webclient.h"*/ - -#endif /* __UIP_CONF_H__ */ - -/** @} */ -/** @} */ diff --git a/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/webserver.h b/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/webserver.h deleted file mode 100644 index 1acb290b8..000000000 --- a/FreeRTOS/Demo/ARM9_STR91X_IAR/webserver/webserver.h +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright (c) 2002, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials provided - * with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: webserver.h,v 1.2 2006/06/11 21:46:38 adam Exp $ - * - */ -#ifndef __WEBSERVER_H__ -#define __WEBSERVER_H__ - -#include "httpd.h" - -typedef struct httpd_state uip_tcp_appstate_t; -/* UIP_APPCALL: the name of the application function. This function - must return void and take no arguments (i.e., C type "void - appfunc(void)"). */ -#ifndef UIP_APPCALL -#define UIP_APPCALL httpd_appcall -#endif - - -#endif /* __WEBSERVER_H__ */ diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/FreeRTOSConfig.h b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/FreeRTOSConfig.h deleted file mode 100644 index 82ae09f48..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/FreeRTOSConfig.h +++ /dev/null @@ -1,150 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - - -#ifndef FREERTOS_CONFIG_H -#define FREERTOS_CONFIG_H - -/* Use a guard to ensure the following few definitions are'nt included in -assembly files that include this header file. */ -#ifndef __IASMARM__ - #include - #include - extern uint32_t SystemFrequency; - void vMainConfigureTimerForRunTimeStats( void ); - unsigned long ulGetRunTimeCounterValue( void ); -#endif - -/*----------------------------------------------------------- - * Application specific definitions. - * - * These definitions should be adjusted for your particular hardware and - * application requirements. - * - * THESE PARAMETERS ARE DESCRIBED WITHIN THE 'CONFIGURATION' SECTION OF THE - * FreeRTOS API DOCUMENTATION AVAILABLE ON THE FreeRTOS.org WEB SITE. - * - * See http://www.freertos.org/a00110.html - *----------------------------------------------------------*/ - - -#define configUSE_PREEMPTION 1 -#define configUSE_IDLE_HOOK 1 -#define configUSE_TICK_HOOK 0 -#define configCPU_CLOCK_HZ ( SystemFrequency ) -#define configTICK_RATE_HZ ( ( TickType_t ) 1000 ) -#define configMAX_PRIORITIES ( 5 ) -#define configMINIMAL_STACK_SIZE ( ( unsigned short ) 90 ) -#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 30 * 1024 ) ) -#define configMAX_TASK_NAME_LEN ( 10 ) -#define configUSE_TRACE_FACILITY 1 -#define configUSE_16_BIT_TICKS 0 -#define configIDLE_SHOULD_YIELD 1 -#define configUSE_MUTEXES 1 -#define configQUEUE_REGISTRY_SIZE 0 -#define configGENERATE_RUN_TIME_STATS 1 -#define configCHECK_FOR_STACK_OVERFLOW 2 -#define configUSE_RECURSIVE_MUTEXES 1 -#define configUSE_MALLOC_FAILED_HOOK 1 -#define configUSE_APPLICATION_TASK_TAG 0 -#define configUSE_COUNTING_SEMAPHORES 0 - -/* Co-routine definitions. */ -#define configUSE_CO_ROUTINES 0 -#define configMAX_CO_ROUTINE_PRIORITIES ( 2 ) - -/* Software timer definitions. */ -#define configUSE_TIMERS 1 -#define configTIMER_TASK_PRIORITY ( 2 ) -#define configTIMER_QUEUE_LENGTH 10 -#define configTIMER_TASK_STACK_DEPTH ( configMINIMAL_STACK_SIZE * 2 ) - -/* Set the following definitions to 1 to include the API function, or zero -to exclude the API function. */ -#define INCLUDE_vTaskPrioritySet 1 -#define INCLUDE_uxTaskPriorityGet 1 -#define INCLUDE_vTaskDelete 1 -#define INCLUDE_vTaskCleanUpResources 1 -#define INCLUDE_vTaskSuspend 1 -#define INCLUDE_vTaskDelayUntil 1 -#define INCLUDE_vTaskDelay 1 - -/* This demo makes use of one or more example stats formatting functions. These -format the raw data provided by the uxTaskGetSystemState() function in to human -readable ASCII form. See the notes in the implementation of vTaskList() within -FreeRTOS/Source/tasks.c for limitations. */ -#define configUSE_STATS_FORMATTING_FUNCTIONS 1 - -#define portCONFIGURE_TIMER_FOR_RUN_TIME_STATS() vMainConfigureTimerForRunTimeStats() -#define portGET_RUN_TIME_COUNTER_VALUE() ulGetRunTimeCounterValue() - -/* Use the system definition, if there is one */ -#ifdef __NVIC_PRIO_BITS - #define configPRIO_BITS __NVIC_PRIO_BITS -#else - #define configPRIO_BITS 5 /* 31 priority levels */ -#endif - -#define configLIBRARY_LOWEST_INTERRUPT_PRIORITY 0x1f -#define configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY 5 - -/* The lowest priority. */ -#define configKERNEL_INTERRUPT_PRIORITY ( configLIBRARY_LOWEST_INTERRUPT_PRIORITY << (8 - configPRIO_BITS) ) -/* Priority 5, or 160 as only the top three bits are implemented. */ -/* !!!! configMAX_SYSCALL_INTERRUPT_PRIORITY must not be set to zero !!!! -See http://www.FreeRTOS.org/RTOS-Cortex-M3-M4.html. */ -#define configMAX_SYSCALL_INTERRUPT_PRIORITY ( configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY << (8 - configPRIO_BITS) ) - -#define configASSERT( x ) if( ( x ) == 0 ) { taskDISABLE_INTERRUPTS(); for( ;; ); } - -#define vPortSVCHandler SVC_Handler -#define xPortPendSVHandler PendSV_Handler -#define vPortSVCHandler SVC_Handler -#define xPortSysTickHandler SysTick_Handler - -/* MAC address configuration. */ -#define configMAC_ADDR0 0x00 -#define configMAC_ADDR1 0x12 -#define configMAC_ADDR2 0x13 -#define configMAC_ADDR3 0x10 -#define configMAC_ADDR4 0x15 -#define configMAC_ADDR5 0x11 - -/* IP address configuration. */ -#define configIP_ADDR0 192 -#define configIP_ADDR1 168 -#define configIP_ADDR2 0 -#define configIP_ADDR3 200 - -/* Netmask configuration. */ -#define configNET_MASK0 255 -#define configNET_MASK1 255 -#define configNET_MASK2 255 -#define configNET_MASK3 0 - -#endif /* FREERTOS_CONFIG_H */ - diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/IAR_System/linker_nvm.icf b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/IAR_System/linker_nvm.icf deleted file mode 100644 index a40542708..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/IAR_System/linker_nvm.icf +++ /dev/null @@ -1,42 +0,0 @@ -/*###ICF### Section handled by ICF editor, don't touch! ****/ -/*-Editor annotation file-*/ -/* IcfEditorFile="$TOOLKIT_DIR$\config\ide\IcfEditor\a_v1_0.xml" */ -/*-Specials-*/ -define symbol __ICFEDIT_intvec_start__ = 0x0; -/*-Memory Regions-*/ -define symbol __ICFEDIT_region_ROM_start__ = 0xc0; -define symbol __ICFEDIT_region_ROM_end__ = 0x40000; -define symbol __ICFEDIT_region_RAM_start__ = 0x20000000; -define symbol __ICFEDIT_region_RAM_end__ = 0x2000FFFF; -/*-Sizes-*/ -define symbol __ICFEDIT_size_cstack__ = 0x2800; -define symbol __ICFEDIT_size_svcstack__ = 0x400; -define symbol __ICFEDIT_size_irqstack__ = 0x400; -define symbol __ICFEDIT_size_fiqstack__ = 0x400; -define symbol __ICFEDIT_size_undstack__ = 0x400; -define symbol __ICFEDIT_size_abtstack__ = 0x400; -define symbol __ICFEDIT_size_heap__ = 0x7000; -/**** End of ICF editor section. ###ICF###*/ - - -define memory mem with size = 4G; -define region ROM_region = mem:[from __ICFEDIT_region_ROM_start__ to __ICFEDIT_region_ROM_end__]; -define region RAM_region = mem:[from __ICFEDIT_region_RAM_start__ to __ICFEDIT_region_RAM_end__]; - -define block CSTACK with alignment = 8, size = __ICFEDIT_size_cstack__ { }; -define block SVC_STACK with alignment = 8, size = __ICFEDIT_size_svcstack__ { }; -define block IRQ_STACK with alignment = 8, size = __ICFEDIT_size_irqstack__ { }; -define block FIQ_STACK with alignment = 8, size = __ICFEDIT_size_fiqstack__ { }; -define block UND_STACK with alignment = 8, size = __ICFEDIT_size_undstack__ { }; -define block ABT_STACK with alignment = 8, size = __ICFEDIT_size_abtstack__ { }; -define block HEAP with alignment = 8, size = __ICFEDIT_size_heap__ { }; - -initialize by copy { readwrite }; -do not initialize { section .noinit }; - -place at address mem:__ICFEDIT_intvec_start__ { readonly section .intvec }; - -place in ROM_region { readonly }; -place in RAM_region { readwrite, - block CSTACK, block SVC_STACK, block IRQ_STACK, block FIQ_STACK, - block UND_STACK, block ABT_STACK, block HEAP }; \ No newline at end of file diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/CMSIS/a2fxxxm3.h b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/CMSIS/a2fxxxm3.h deleted file mode 100644 index ab389e05d..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/CMSIS/a2fxxxm3.h +++ /dev/null @@ -1,1102 +0,0 @@ -/******************************************************************************* - * (c) Copyright 2009 Actel Corporation. All rights reserved. - * - * SmartFusion A2FxxxM3 Cortex Microcontroller Software Interface - Peripheral - * Access Layer. - * - * This file describes the interrupt assignment and peripheral registers for - * the SmartFusion A2FxxxM3 familly of devices. - * - * SVN $Revision: 2331 $ - * SVN $Date: 2010-02-26 12:02:06 +0000 (Fri, 26 Feb 2010) $ - */ -#ifndef __A2FXXXM3_H__ -#define __A2FXXXM3_H__ - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * ========================================================================== - * ---------- Interrupt Number Definition ----------------------------------- - * ========================================================================== - */ - -typedef enum IRQn -{ -/****** Cortex-M3 Processor Exceptions Numbers *********************************************************/ - NonMaskableInt_IRQn = -14, /*!< 2 Non Maskable Interrupt */ - HardFault_IRQn = -13, /*!< 2 Hard Fault Interrupt */ - MemoryManagement_IRQn = -12, /*!< 4 Cortex-M3 Memory Management Interrupt */ - BusFault_IRQn = -11, /*!< 5 Cortex-M3 Bus Fault Interrupt */ - UsageFault_IRQn = -10, /*!< 6 Cortex-M3 Usage Fault Interrupt */ - SVCall_IRQn = -5, /*!< 11 Cortex-M3 SV Call Interrupt */ - DebugMonitor_IRQn = -4, /*!< 12 Cortex-M3 Debug Monitor Interrupt */ - PendSV_IRQn = -2, /*!< 14 Cortex-M3 Pend SV Interrupt */ - SysTick_IRQn = -1, /*!< 15 Cortex-M3 System Tick Interrupt */ - -/****** SmartFusion specific Interrupt Numbers *********************************************************/ - WdogWakeup_IRQn = 0, /*!< WatchDog wakeup interrupt */ - BrownOut_1_5V_IRQn = 1, /*!< Supply dropped below 1.5V */ - BrownOut_3_3V_IRQn = 2, /*!< Supply dropped below 1.5V */ - RTC_Match_IRQn = 3, /*!< RTC match interrupt */ - RTCIF_Pub_IRQn = 4, /*!< RTC interface push button interrupt */ - EthernetMAC_IRQn = 5, /*!< Ethernet MAC interrupt */ - IAP_IRQn = 6, /*!< In Application Programming (IAP) interrupt */ - ENVM0_IRQn = 7, /*!< eNVM0 operation completion interrupt */ - ENVM1_IRQn = 8, /*!< eNVM1 operation completion interrupt */ - DMA_IRQn = 9, /*!< Peripheral DMA interrupt */ - UART0_IRQn = 10, /*!< UART0 interrupt */ - UART1_IRQn = 11, /*!< UART1 interrupt */ - SPI0_IRQn = 12, /*!< SPI0 interrupt */ - SPI1_IRQn = 13, /*!< SP1 interrupt */ - I2C0_IRQn = 14, /*!< I2C0 interrupt */ - I2C0_SMBAlert_IRQn = 15, /*!< I2C0 SMBus Alert interrupt */ - I2C0_SMBus_IRQn = 16, /*!< I2C0 SMBus Suspend interrupt */ - I2C1_IRQn = 17, /*!< I2C1 interrupt */ - I2C1_SMBAlert_IRQn = 18, /*!< I2C1 SMBus Alert interrupt */ - I2C1_SMBus_IRQn = 19, /*!< I2C1 SMBus Suspend interrupt */ - Timer1_IRQn = 20, /*!< Timer1 interrupt */ - Timer2_IRQn = 21, /*!< Timer2 interrupt */ - PLL_Lock_IRQn = 22, /*!< PLL lock interrupt */ - PLL_LockLost_IRQn = 23, /*!< PLL loss of lock interrupt */ - CommError_IRQn = 24, /*!< Communications Matrix error interrupt */ - Fabric_IRQn = 31, /*!< FPGA fabric interrupt */ - GPIO0_IRQn = 32, /*!< GPIO 0 interrupt */ - GPIO1_IRQn = 33, /*!< GPIO 1 interrupt */ - GPIO2_IRQn = 34, /*!< GPIO 2 interrupt */ - GPIO3_IRQn = 35, /*!< GPIO 3 interrupt */ - GPIO4_IRQn = 36, /*!< GPIO 4 interrupt */ - GPIO5_IRQn = 37, /*!< GPIO 5 interrupt */ - GPIO6_IRQn = 38, /*!< GPIO 6 interrupt */ - GPIO7_IRQn = 39, /*!< GPIO 7 interrupt */ - GPIO8_IRQn = 40, /*!< GPIO 8 interrupt */ - GPIO9_IRQn = 41, /*!< GPIO 9 interrupt */ - GPIO10_IRQn = 42, /*!< GPIO 10 interrupt */ - GPIO11_IRQn = 43, /*!< GPIO 11 interrupt */ - GPIO12_IRQn = 44, /*!< GPIO 12 interrupt */ - GPIO13_IRQn = 45, /*!< GPIO 13 interrupt */ - GPIO14_IRQn = 46, /*!< GPIO 14 interrupt */ - GPIO15_IRQn = 47, /*!< GPIO 15 interrupt */ - GPIO16_IRQn = 48, /*!< GPIO 16 interrupt */ - GPIO17_IRQn = 49, /*!< GPIO 17 interrupt */ - GPIO18_IRQn = 50, /*!< GPIO 18 interrupt */ - GPIO19_IRQn = 51, /*!< GPIO 19 interrupt */ - GPIO20_IRQn = 52, /*!< GPIO 20 interrupt */ - GPIO21_IRQn = 53, /*!< GPIO 21 interrupt */ - GPIO22_IRQn = 54, /*!< GPIO 22 interrupt */ - GPIO23_IRQn = 55, /*!< GPIO 23 interrupt */ - GPIO24_IRQn = 56, /*!< GPIO 24 interrupt */ - GPIO25_IRQn = 57, /*!< GPIO 25 interrupt */ - GPIO26_IRQn = 58, /*!< GPIO 26 interrupt */ - GPIO27_IRQn = 59, /*!< GPIO 27 interrupt */ - GPIO28_IRQn = 60, /*!< GPIO 28 interrupt */ - GPIO29_IRQn = 61, /*!< GPIO 29 interrupt */ - GPIO30_IRQn = 62, /*!< GPIO 30 interrupt */ - GPIO31_IRQn = 63, /*!< GPIO 31 interrupt */ - ACE_PC0_Flag0_IRQn = 64, /*!< ACE SSE program counter 0 flag 0 interrupt */ - ACE_PC0_Flag1_IRQn = 65, /*!< ACE SSE program counter 0 flag 1 interrupt */ - ACE_PC0_Flag2_IRQn = 66, /*!< ACE SSE program counter 0 flag 2 interrupt */ - ACE_PC0_Flag3_IRQn = 67, /*!< ACE SSE program counter 0 flag 3 interrupt */ - ACE_PC1_Flag0_IRQn = 68, /*!< ACE SSE program counter 1 flag 0 interrupt */ - ACE_PC1_Flag1_IRQn = 69, /*!< ACE SSE program counter 1 flag 1 interrupt */ - ACE_PC1_Flag2_IRQn = 70, /*!< ACE SSE program counter 1 flag 2 interrupt */ - ACE_PC1_Flag3_IRQn = 71, /*!< ACE SSE program counter 1 flag 3 interrupt */ - ACE_PC2_Flag0_IRQn = 72, /*!< ACE SSE program counter 2 flag 0 interrupt */ - ACE_PC2_Flag1_IRQn = 73, /*!< ACE SSE program counter 2 flag 1 interrupt */ - ACE_PC2_Flag2_IRQn = 74, /*!< ACE SSE program counter 2 flag 2 interrupt */ - ACE_PC2_Flag3_IRQn = 75, /*!< ACE SSE program counter 2 flag 3 interrupt */ - ACE_ADC0_DataValid_IRQn = 76, /*!< ACE ADC0 data valid interrupt */ - ACE_ADC1_DataValid_IRQn = 77, /*!< ACE ADC1 data valid interrupt */ - ACE_ADC2_DataValid_IRQn = 78, /*!< ACE ADC2 data valid interrupt */ - ACE_ADC0_CalDone_IRQn = 79, /*!< ACE ADC0 calibration done interrupt */ - ACE_ADC1_CalDone_IRQn = 80, /*!< ACE ADC1 calibration done interrupt */ - ACE_ADC2_CalDone_IRQn = 81, /*!< ACE ADC2 calibration done interrupt */ - ACE_ADC0_CalStart_IRQn = 82, /*!< ACE ADC0 calibration start interrupt */ - ACE_ADC1_CalStart_IRQn = 83, /*!< ACE ADC1 calibration start interrupt */ - ACE_ADC2_CalStart_IRQn = 84, /*!< ACE ADC2 calibration start interrupt */ - ACE_Comp0_Fall_IRQn = 85, /*!< ACE comparator 0 falling under reference interrupt */ - ACE_Comp1_Fall_IRQn = 86, /*!< ACE comparator 1 falling under reference interrupt */ - ACE_Comp2_Fall_IRQn = 87, /*!< ACE comparator 2 falling under reference interrupt */ - ACE_Comp3_Fall_IRQn = 88, /*!< ACE comparator 3 falling under reference interrupt */ - ACE_Comp4_Fall_IRQn = 89, /*!< ACE comparator 4 falling under reference interrupt */ - ACE_Comp5_Fall_IRQn = 90, /*!< ACE comparator 5 falling under reference interrupt */ - ACE_Comp6_Fall_IRQn = 91, /*!< ACE comparator 6 falling under reference interrupt */ - ACE_Comp7_Fall_IRQn = 92, /*!< ACE comparator 7 falling under reference interrupt */ - ACE_Comp8_Fall_IRQn = 93, /*!< ACE comparator 8 falling under reference interrupt */ - ACE_Comp9_Fall_IRQn = 94, /*!< ACE comparator 9 falling under reference interrupt */ - ACE_Comp10_Fall_IRQn = 95, /*!< ACE comparator 10 falling under reference interrupt */ - ACE_Comp11_Fall_IRQn = 96, /*!< ACE comparator 11 falling under reference interrupt */ - ACE_Comp0_Rise_IRQn = 97, /*!< ACE comparator 0 rising over reference interrupt */ - ACE_Comp1_Rise_IRQn = 98, /*!< ACE comparator 1 rising over reference interrupt */ - ACE_Comp2_Rise_IRQn = 99, /*!< ACE comparator 2 rising over reference interrupt */ - ACE_Comp3_Rise_IRQn = 100, /*!< ACE comparator 3 rising over reference interrupt */ - ACE_Comp4_Rise_IRQn = 101, /*!< ACE comparator 4 rising over reference interrupt */ - ACE_Comp5_Rise_IRQn = 102, /*!< ACE comparator 5 rising over reference interrupt */ - ACE_Comp6_Rise_IRQn = 103, /*!< ACE comparator 6 rising over reference interrupt */ - ACE_Comp7_Rise_IRQn = 104, /*!< ACE comparator 7 rising over reference interrupt */ - ACE_Comp8_Rise_IRQn = 105, /*!< ACE comparator 8 rising over reference interrupt */ - ACE_Comp9_Rise_IRQn = 106, /*!< ACE comparator 9 rising over reference interrupt */ - ACE_Comp10_Rise_IRQn = 107, /*!< ACE comparator 10 rising over reference interrupt */ - ACE_Comp11_Rise_IRQn = 108, /*!< ACE comparator 11 rising over reference interrupt */ - ACE_ADC0_FifoFull_IRQn = 109, /*!< ACE ADC0 FIFO full interrupt */ - ACE_ADC0_FifoAFull_IRQn = 110, /*!< ACE ADC0 FIFO almost full interrupt */ - ACE_ADC0_FifoEmpty_IRQn = 111, /*!< ACE ADC0 FIFO empty interrupt */ - ACE_ADC1_FifoFull_IRQn = 112, /*!< ACE ADC1 FIFO full interrupt */ - ACE_ADC1_FifoAFull_IRQn = 113, /*!< ACE ADC1 FIFO almost full interrupt */ - ACE_ADC1_FifoEmpty_IRQn = 114, /*!< ACE ADC1 FIFO empty interrupt */ - ACE_ADC2_FifoFull_IRQn = 115, /*!< ACE ADC2 FIFO full interrupt */ - ACE_ADC2_FifoAFull_IRQn = 116, /*!< ACE ADC2 FIFO almost full interrupt */ - ACE_ADC2_FifoEmpty_IRQn = 117, /*!< ACE ADC2 FIFO empty interrupt */ - ACE_PPE_Flag0_IRQn = 118, /*!< ACE post processing engine flag 0 interrupt */ - ACE_PPE_Flag1_IRQn = 119, /*!< ACE post processing engine flag 1 interrupt */ - ACE_PPE_Flag2_IRQn = 120, /*!< ACE post processing engine flag 2 interrupt */ - ACE_PPE_Flag3_IRQn = 121, /*!< ACE post processing engine flag 3 interrupt */ - ACE_PPE_Flag4_IRQn = 122, /*!< ACE post processing engine flag 4 interrupt */ - ACE_PPE_Flag5_IRQn = 123, /*!< ACE post processing engine flag 5 interrupt */ - ACE_PPE_Flag6_IRQn = 124, /*!< ACE post processing engine flag 6 interrupt */ - ACE_PPE_Flag7_IRQn = 125, /*!< ACE post processing engine flag 7 interrupt */ - ACE_PPE_Flag8_IRQn = 126, /*!< ACE post processing engine flag 8 interrupt */ - ACE_PPE_Flag9_IRQn = 127, /*!< ACE post processing engine flag 9 interrupt */ - ACE_PPE_Flag10_IRQn = 128, /*!< ACE post processing engine flag 10 interrupt */ - ACE_PPE_Flag11_IRQn = 129, /*!< ACE post processing engine flag 11 interrupt */ - ACE_PPE_Flag12_IRQn = 130, /*!< ACE post processing engine flag 12 interrupt */ - ACE_PPE_Flag13_IRQn = 131, /*!< ACE post processing engine flag 13 interrupt */ - ACE_PPE_Flag14_IRQn = 132, /*!< ACE post processing engine flag 14 interrupt */ - ACE_PPE_Flag15_IRQn = 133, /*!< ACE post processing engine flag 15 interrupt */ - ACE_PPE_Flag16_IRQn = 134, /*!< ACE post processing engine flag 16 interrupt */ - ACE_PPE_Flag17_IRQn = 135, /*!< ACE post processing engine flag 17 interrupt */ - ACE_PPE_Flag18_IRQn = 136, /*!< ACE post processing engine flag 18 interrupt */ - ACE_PPE_Flag19_IRQn = 137, /*!< ACE post processing engine flag 19 interrupt */ - ACE_PPE_Flag20_IRQn = 138, /*!< ACE post processing engine flag 20 interrupt */ - ACE_PPE_Flag21_IRQn = 139, /*!< ACE post processing engine flag 21 interrupt */ - ACE_PPE_Flag22_IRQn = 140, /*!< ACE post processing engine flag 22 interrupt */ - ACE_PPE_Flag23_IRQn = 141, /*!< ACE post processing engine flag 23 interrupt */ - ACE_PPE_Flag24_IRQn = 142, /*!< ACE post processing engine flag 24 interrupt */ - ACE_PPE_Flag25_IRQn = 143, /*!< ACE post processing engine flag 25 interrupt */ - ACE_PPE_Flag26_IRQn = 144, /*!< ACE post processing engine flag 26 interrupt */ - ACE_PPE_Flag27_IRQn = 145, /*!< ACE post processing engine flag 27 interrupt */ - ACE_PPE_Flag28_IRQn = 146, /*!< ACE post processing engine flag 28 interrupt */ - ACE_PPE_Flag29_IRQn = 147, /*!< ACE post processing engine flag 29 interrupt */ - ACE_PPE_Flag30_IRQn = 148, /*!< ACE post processing engine flag 30 interrupt */ - ACE_PPE_Flag31_IRQn = 149 /*!< ACE post processing engine flag 31 interrupt */ -} IRQn_Type; - - -/* - * ========================================================================== - * ----------- Processor and Core Peripheral Section ------------------------ - * ========================================================================== - */ - -/* Configuration of the Cortex-M3 Processor and Core Peripherals */ -#define __MPU_PRESENT 1 /*!< SmartFusion includes a MPU */ -#define __NVIC_PRIO_BITS 5 /*!< SmartFusion uses 5 Bits for the Priority Levels */ -#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ - - -#include "core_cm3.h" /* Cortex-M3 processor and core peripherals */ -#include "system_a2fxxxm3.h" /* SmartFusion System */ - -/******************************************************************************/ -/* Device Specific Peripheral registers structures */ -/******************************************************************************/ -#if defined ( __CC_ARM ) - /* Enable anonymous unions when building using Keil-MDK */ - #pragma anon_unions -#endif -/*----------------------------------------------------------------------------*/ -/*----------------------------------- UART -----------------------------------*/ -/*----------------------------------------------------------------------------*/ -typedef struct -{ - union - { - __I uint8_t RBR; - __O uint8_t THR; - __IO uint8_t DLR; - uint32_t RESERVED0; - }; - - union - { - __IO uint8_t DMR; - __IO uint8_t IER; - uint32_t RESERVED1; - }; - - union - { - __IO uint8_t IIR; - __IO uint8_t FCR; - uint32_t RESERVED2; - }; - - __IO uint8_t LCR; - uint8_t RESERVED3; - uint16_t RESERVED4; - __IO uint8_t MCR; - uint8_t RESERVED5; - uint16_t RESERVED6; - __I uint8_t LSR; - uint8_t RESERVED7; - uint16_t RESERVED8; - __I uint8_t MSR; - uint8_t RESERVED9; - uint16_t RESERVED10; - __IO uint8_t SR; - uint8_t RESERVED11; - uint16_t RESERVED12; -} UART_TypeDef; - -/*------------------------------------------------------------------------------ - * - */ -typedef struct -{ - uint32_t RESERVED0[32]; - - __IO uint32_t IER_ERBFI; - __IO uint32_t IER_ETBEI; - __IO uint32_t IER_ELSI; - __IO uint32_t IER_EDSSI; - - uint32_t RESERVED1[28]; - - __IO uint32_t FCR_ENABLE; - __IO uint32_t FCR_CLEAR_RX_FIFO; - __IO uint32_t FCR_CLEAR_TX_FIFO; - __IO uint32_t FCR_RXRDY_TXRDYN_EN; - __IO uint32_t FCR_RESERVED0; - __IO uint32_t FCR_RESERVED1; - __IO uint32_t FCR_RX_TRIG0; - __IO uint32_t FCR_RX_TRIG1; - - uint32_t RESERVED2[24]; - - __IO uint32_t LCR_WLS0; - __IO uint32_t LCR_WLS1; - __IO uint32_t LCR_STB; - __IO uint32_t LCR_PEN; - __IO uint32_t LCR_EPS; - __IO uint32_t LCR_SP; - __IO uint32_t LCR_SB; - __IO uint32_t LCR_DLAB; - - uint32_t RESERVED3[24]; - - __IO uint32_t MCR_DTR; - __IO uint32_t MCR_RTS; - __IO uint32_t MCR_OUT1; - __IO uint32_t MCR_OUT2; - __IO uint32_t MCR_LOOP; - - uint32_t RESERVED4[27]; - - __I uint32_t LSR_DR; - __I uint32_t LSR_OE; - __I uint32_t LSR_PE; - __I uint32_t LSR_FE; - __I uint32_t LSR_BI; - __I uint32_t LSR_THRE; - __I uint32_t LSR_TEMT; - __I uint32_t LSR_FIER; - - uint32_t RESERVED5[24]; - - __I uint32_t MSR_DCTS; - __I uint32_t MSR_DDSR; - __I uint32_t MSR_TERI; - __I uint32_t MSR_DDCD; - __I uint32_t MSR_CTS; - __I uint32_t MSR_DSR; - __I uint32_t MSR_RI; - __I uint32_t MSR_DCD; - -} UART_BitBand_TypeDef; - -/*----------------------------------------------------------------------------*/ -/*----------------------------------- I2C ------------------------------------*/ -/*----------------------------------------------------------------------------*/ -typedef struct -{ - __IO uint8_t CTRL; - uint8_t RESERVED0; - uint16_t RESERVED1; - uint8_t STATUS; - uint8_t RESERVED2; - uint16_t RESERVED3; - __IO uint8_t DATA; - uint8_t RESERVED4; - uint16_t RESERVED5; - __IO uint8_t ADDR; - uint8_t RESERVED6; - uint16_t RESERVED7; - __IO uint8_t SMBUS; - uint8_t RESERVED8; - uint16_t RESERVED9; - __IO uint8_t FREQ; - uint8_t RESERVED10; - uint16_t RESERVED11; - __IO uint8_t GLITCHREG; - uint8_t RESERVED12; - uint16_t RESERVED13; -} I2C_TypeDef; - -/*------------------------------------------------------------------------------ - * - */ -typedef struct -{ - uint32_t CTRL_CR0; - uint32_t CTRL_CR1; - uint32_t CTRL_AA; - uint32_t CTRL_SI; - uint32_t CTRL_STO; - uint32_t CTRL_STA; - uint32_t CTRL_ENS1; - uint32_t CTRL_CR2; - uint32_t RESERVED0[56]; - uint32_t DATA_DIR; - uint32_t RESERVED1[31]; - uint32_t ADDR_GC; -} I2C_BitBand_TypeDef; - -/*----------------------------------------------------------------------------*/ -/*----------------------------------- SPI ------------------------------------*/ -/*----------------------------------------------------------------------------*/ -typedef struct -{ - __IO uint32_t CONTROL; - __IO uint32_t TXRXDF_SIZE; - __I uint32_t STATUS; - __O uint32_t INT_CLEAR; - __I uint32_t RX_DATA; - __O uint32_t TX_DATA; - __IO uint32_t CLK_GEN; - __IO uint32_t SLAVE_SELECT; - __I uint32_t MIS; - __I uint32_t RIS; -} SPI_TypeDef; - -typedef struct -{ - __IO uint32_t CTRL_ENABLE; - __IO uint32_t CTRL_MASTER; - __IO uint32_t CTRL_MODE[2]; - __IO uint32_t CTRL_RX_INT_EN; - __IO uint32_t CTRL_TX_INT_EN; - __IO uint32_t CTRL_RX_OVERFLOW_INT_EN; - __IO uint32_t CTRL_TX_UNDERRUN_INT_EN; - __IO uint32_t CTRL_TXRXDFCOUNT[16]; - __IO uint32_t CTRL_SPO; - __IO uint32_t CTRL_SPH; - __IO uint32_t CTRL_RESERVED[6]; - - __IO uint32_t TXRXDF_SIZE[32]; - - __I uint32_t STATUS_TX_DONE; - __I uint32_t STATUS_RX_RDY; - __I uint32_t STATUS_RX_CH_OV; - __I uint32_t STATUS_TX_CH_UV; - __I uint32_t STATUS_RX_FIFO_FULL; - __I uint32_t STATUS_RX_FIFO_FULL_NEXT; - __I uint32_t STATUS_RX_FIFO_EMPTY; - __I uint32_t STATUS_RX_FIFO_EMPTY_NEXT; - __I uint32_t STATUS_TX_FIFO_FULL; - __I uint32_t STATUS_TX_FIFO_FULL_NEXT; - __I uint32_t STATUS_TX_FIFO_EMPTY; - __I uint32_t STATUS_TX_FIFO_EMPTY_NEXT; - __I uint32_t STATUS_RESERVED[20]; - - __O uint32_t INT_CLEAR_TX_DONE; - __O uint32_t INT_CLEAR_RX_RDY; - __O uint32_t INT_CLEAR_RX_OVER; - __O uint32_t INT_CLEAR_TX_UNDER; - __O uint32_t INT_CLEAR[28]; - - __I uint32_t RX_DATA[32]; - __O uint32_t TX_DATA[32]; - __IO uint32_t CLK_GEN[32]; - __IO uint32_t SLAVE_SELECT[32]; - __I uint32_t MIS_TX_DONE; - __I uint32_t MIS_RX_RDY; - __I uint32_t MIS_RX_OVER; - __I uint32_t MIS_TX_UNDER; - __I uint32_t MIS[28]; - __I uint32_t RIS[32]; -} SPI_BitBand_TypeDef; - -/*----------------------------------------------------------------------------*/ -/*----------------------------------- GPIO -----------------------------------*/ -/*----------------------------------------------------------------------------*/ -typedef struct -{ - __IO uint32_t GPIO_0_CFG; - __IO uint32_t GPIO_1_CFG; - __IO uint32_t GPIO_2_CFG; - __IO uint32_t GPIO_3_CFG; - __IO uint32_t GPIO_4_CFG; - __IO uint32_t GPIO_5_CFG; - __IO uint32_t GPIO_6_CFG; - __IO uint32_t GPIO_7_CFG; - __IO uint32_t GPIO_8_CFG; - __IO uint32_t GPIO_9_CFG; - __IO uint32_t GPIO_10_CFG; - __IO uint32_t GPIO_11_CFG; - __IO uint32_t GPIO_12_CFG; - __IO uint32_t GPIO_13_CFG; - __IO uint32_t GPIO_14_CFG; - __IO uint32_t GPIO_15_CFG; - __IO uint32_t GPIO_16_CFG; - __IO uint32_t GPIO_17_CFG; - __IO uint32_t GPIO_18_CFG; - __IO uint32_t GPIO_19_CFG; - __IO uint32_t GPIO_20_CFG; - __IO uint32_t GPIO_21_CFG; - __IO uint32_t GPIO_22_CFG; - __IO uint32_t GPIO_23_CFG; - __IO uint32_t GPIO_24_CFG; - __IO uint32_t GPIO_25_CFG; - __IO uint32_t GPIO_26_CFG; - __IO uint32_t GPIO_27_CFG; - __IO uint32_t GPIO_28_CFG; - __IO uint32_t GPIO_29_CFG; - __IO uint32_t GPIO_30_CFG; - __IO uint32_t GPIO_31_CFG; - __IO uint32_t GPIO_IRQ; - __I uint32_t GPIO_IN; - __IO uint32_t GPIO_OUT; -} GPIO_TypeDef; - -typedef struct -{ - __IO uint32_t GPIO_0_CFG[32]; - __IO uint32_t GPIO_1_CFG[32]; - __IO uint32_t GPIO_2_CFG[32]; - __IO uint32_t GPIO_3_CFG[32]; - __IO uint32_t GPIO_4_CFG[32]; - __IO uint32_t GPIO_5_CFG[32]; - __IO uint32_t GPIO_6_CFG[32]; - __IO uint32_t GPIO_7_CFG[32]; - __IO uint32_t GPIO_8_CFG[32]; - __IO uint32_t GPIO_9_CFG[32]; - __IO uint32_t GPIO_10_CFG[32]; - __IO uint32_t GPIO_11_CFG[32]; - __IO uint32_t GPIO_12_CFG[32]; - __IO uint32_t GPIO_13_CFG[32]; - __IO uint32_t GPIO_14_CFG[32]; - __IO uint32_t GPIO_15_CFG[32]; - __IO uint32_t GPIO_16_CFG[32]; - __IO uint32_t GPIO_17_CFG[32]; - __IO uint32_t GPIO_18_CFG[32]; - __IO uint32_t GPIO_19_CFG[32]; - __IO uint32_t GPIO_20_CFG[32]; - __IO uint32_t GPIO_21_CFG[32]; - __IO uint32_t GPIO_22_CFG[32]; - __IO uint32_t GPIO_23_CFG[32]; - __IO uint32_t GPIO_24_CFG[32]; - __IO uint32_t GPIO_25_CFG[32]; - __IO uint32_t GPIO_26_CFG[32]; - __IO uint32_t GPIO_27_CFG[32]; - __IO uint32_t GPIO_28_CFG[32]; - __IO uint32_t GPIO_29_CFG[32]; - __IO uint32_t GPIO_30_CFG[32]; - __IO uint32_t GPIO_31_CFG[32]; - __IO uint32_t GPIO_IRQ[32]; - __I uint32_t GPIO_IN[32]; - __IO uint32_t GPIO_OUT[32]; -} GPIO_BitBand_TypeDef; - - -/*----------------------------------------------------------------------------*/ -/*----------------------------------- RTC ------------------------------------*/ -/*----------------------------------------------------------------------------*/ -typedef struct -{ - __IO uint32_t COUNTER0_REG; - __IO uint32_t COUNTER1_REG; - __IO uint32_t COUNTER2_REG; - __IO uint32_t COUNTER3_REG; - __IO uint32_t COUNTER4_REG; - - __IO uint32_t RESERVED0[3]; - - __IO uint32_t MATCHREG0_REG; - __IO uint32_t MATCHREG1_REG; - __IO uint32_t MATCHREG2_REG; - __IO uint32_t MATCHREG3_REG; - __IO uint32_t MATCHREG4_REG; - - __IO uint32_t RESERVED1[3]; - - __IO uint32_t MATCHBITS0_REG; - __IO uint32_t MATCHBITS1_REG; - __IO uint32_t MATCHBITS2_REG; - __IO uint32_t MATCHBITS3_REG; - __IO uint32_t MATCHBITS4_REG; - - __IO uint32_t RESERVED2[3]; - - __IO uint32_t CTRL_STAT_REG; -} RTC_TypeDef; - -/*----------------------------------------------------------------------------*/ -/*---------------------------------- Timer -----------------------------------*/ -/*----------------------------------------------------------------------------*/ -typedef struct -{ - __I uint32_t TIM1_VAL; - __IO uint32_t TIM1_LOADVAL; - __IO uint32_t TIM1_BGLOADVAL; - __IO uint32_t TIM1_CTRL; - __IO uint32_t TIM1_RIS; - __I uint32_t TIM1_MIS; - - __I uint32_t TIM2_VAL; - __IO uint32_t TIM2_LOADVAL; - __IO uint32_t TIM2_BGLOADVAL; - __IO uint32_t TIM2_CTRL; - __IO uint32_t TIM2_RIS; - __I uint32_t TIM2_MIS; - - __I uint32_t TIM64_VAL_U; - __I uint32_t TIM64_VAL_L; - __IO uint32_t TIM64_LOADVAL_U; - __IO uint32_t TIM64_LOADVAL_L; - __IO uint32_t TIM64_BGLOADVAL_U; - __IO uint32_t TIM64_BGLOADVAL_L; - __IO uint32_t TIM64_CTRL; - __IO uint32_t TIM64_RIS; - __I uint32_t TIM64_MIS; - __IO uint32_t TIM64_MODE; -} TIMER_TypeDef; - -/*------------------------------------------------------------------------------ - * Timer bit band - */ -typedef struct -{ - __I uint32_t TIM1_VALUE_BIT[32]; - __IO uint32_t TIM1_LOADVAL[32]; - __IO uint32_t TIM1_BGLOADVAL[32]; - - __IO uint32_t TIM1ENABLE; - __IO uint32_t TIM1MODE; - __IO uint32_t TIM1INTEN; - __IO uint32_t TIM1_CTRL_RESERVED[29]; - __IO uint32_t TIM1_RIS[32]; - __I uint32_t TIM1_MIS[32]; - - __I uint32_t TIM2_VALUE[32]; - __IO uint32_t TIM2_LOADVAL[32]; - __IO uint32_t TIM2_BGLOADVAL[32]; - - __IO uint32_t TIM2ENABLE; - __IO uint32_t TIM2MODE; - __IO uint32_t TIM2INTEN; - __IO uint32_t TIM2_CTRL[29]; - __IO uint32_t TIM2_RIS[32]; - __I uint32_t TIM2_MIS[32]; - - __I uint32_t TIM64VALUEU[32]; - __I uint32_t TIM64VALUEL[32]; - __IO uint32_t TIM64LOADVALUEU[32]; - __IO uint32_t TIM64LOADVALUEL[32]; - __IO uint32_t TIM64BGLOADVALUEU[32]; - __IO uint32_t TIM64BGLOADVALUEL[32]; - __IO uint32_t TIM64ENABLE; - __IO uint32_t TIM64MODE; - __IO uint32_t TIM64INTEN; - __IO uint32_t TIM64_CTRL[29]; - __IO uint32_t TIM64_RIS[32]; - __I uint32_t TIM64_MIS[32]; - __IO uint32_t TIM64_MODE[32]; -} TIMER_BitBand_TypeDef; - -/*----------------------------------------------------------------------------*/ -/*--------------------------------- Watchdog ---------------------------------*/ -/*----------------------------------------------------------------------------*/ -typedef struct -{ - __I uint32_t WDOGVALUE; - __IO uint32_t WDOGLOAD; - __IO uint32_t WDOGMVRP; - __O uint32_t WDOGREFRESH; - __IO uint32_t WDOGENABLE; - __IO uint32_t WDOGCONTROL; - __I uint32_t WDOGSTATUS; - __IO uint32_t WDOGRIS; - __I uint32_t WDOGMIS; -} WATCHDOG_TypeDef; - -/*----------------------------------------------------------------------------*/ -/*----------------------------- Real Time Clock ------------------------------*/ -/*----------------------------------------------------------------------------*/ - -/*----------------------------------------------------------------------------*/ -/*----------------------------- Peripherals DMA ------------------------------*/ -/*----------------------------------------------------------------------------*/ -typedef struct -{ - __IO uint32_t CRTL; - __IO uint32_t STATUS; - __IO uint32_t BUFFER_A_SRC_ADDR; - __IO uint32_t BUFFER_A_DEST_ADDR; - __IO uint32_t BUFFER_A_TRANSFER_COUNT; - __IO uint32_t BUFFER_B_SRC_ADDR; - __IO uint32_t BUFFER_B_DEST_ADDR; - __IO uint32_t BUFFER_B_TRANSFER_COUNT; -} PDMA_Channel_TypeDef; - -typedef struct -{ - __IO uint32_t RATIO_HIGH_LOW; - __IO uint32_t BUFFER_STATUS; - uint32_t RESERVED[6]; - PDMA_Channel_TypeDef CHANNEL[8]; -} PDMA_TypeDef; - -/*----------------------------------------------------------------------------*/ -/*------------------------------ Ethernet MAC --------------------------------*/ -/*----------------------------------------------------------------------------*/ -typedef struct -{ - __IO uint32_t CSR0; - uint32_t RESERVED0; - __IO uint32_t CSR1; - uint32_t RESERVED1; - __IO uint32_t CSR2; - uint32_t RESERVED2; - __IO uint32_t CSR3; - uint32_t RESERVED3; - __IO uint32_t CSR4; - uint32_t RESERVED4; - __IO uint32_t CSR5; - uint32_t RESERVED5; - __IO uint32_t CSR6; - uint32_t RESERVED6; - __IO uint32_t CSR7; - uint32_t RESERVED7; - __IO uint32_t CSR8; - uint32_t RESERVED8; - __IO uint32_t CSR9; - uint32_t RESERVED9; - uint32_t RESERVED10; - uint32_t RESERVED11; - __IO uint32_t CSR11; -} MAC_TypeDef; - -/*----------------------------------------------------------------------------*/ -/*---------------------- Analog Conversion Engine (ACE) ----------------------*/ -/*----------------------------------------------------------------------------*/ -/* Analog quad configuration */ -typedef struct -{ - __IO uint8_t b0; - uint8_t reserved0_0; - uint16_t reserved0_1; - __IO uint8_t b1; - uint8_t reserved1_0; - uint16_t reserved1_1; - __IO uint8_t b2; - uint8_t reserved2_0; - uint16_t reserved2_1; - __IO uint8_t b3; - uint8_t reserved3_0; - uint16_t reserved3_1; - __IO uint8_t b4; - uint8_t reserved4_0; - uint16_t reserved4_1; - __IO uint8_t b5; - uint8_t reserved5_0; - uint16_t reserved5_1; - __IO uint8_t b6; - uint8_t reserved6_0; - uint16_t reserved6_1; - __IO uint8_t b7; - uint8_t reserved7_0; - uint16_t reserved7_1; - __IO uint8_t b8; - uint8_t reserved8_0; - uint16_t reserved8_1; - __IO uint8_t b9; - uint8_t reserved9_0; - uint16_t reserved9_1; - __IO uint8_t b10; - uint8_t reserved10_0; - uint16_t reserved10_1; - __IO uint8_t b11; - uint8_t reserved11_0; - uint16_t reserved11_1; -} AQ_config_t; - -/* ACE memory map layout */ -typedef struct -{ - __O uint32_t NOP; - __IO uint32_t SSE_TS_CTRL; - __IO uint32_t ADC_SYNC_CONV; - __IO uint32_t ANA_COMM_CTRL; - __IO uint32_t DAC_SYNC_CTRL; - __IO uint32_t PDMA_REQUEST; - uint32_t RESERVED0[10]; - __O uint32_t PC0_LO; - __O uint32_t PC0_HI; - __IO uint32_t PC0_CTRL; - __IO uint32_t PC0_DLY; - __IO uint32_t ADC0_CONV_CTRL; - __IO uint32_t ADC0_STC; - __IO uint32_t ADC0_TVC; - __IO uint32_t ADC0_MISC_CTRL; - __IO uint32_t DAC0_CTRL; - __IO uint32_t DAC0_BYTE0; - __IO uint32_t DAC0_BYTE1; - __IO uint32_t DAC0_BYTE2; - __IO uint32_t LC0; - __O uint32_t LC0_JMP_LO; - __O uint32_t LC0_JMP_HI; - __O uint32_t PC0_FLAGS; - __O uint32_t PC1_LO; - __O uint32_t PC1_HI; - __IO uint32_t PC1_CTRL; - __IO uint32_t PC1_DLY; - __IO uint32_t ADC1_CONV_CTRL; - __IO uint32_t ADC1_STC; - __IO uint32_t ADC1_TVC; - __IO uint32_t ADC1_MISC_CTRL; - __IO uint32_t DAC1_CTRL; - __IO uint32_t DAC1_BYTE0; - __IO uint32_t DAC1_BYTE1; - __IO uint32_t DAC1_BYTE2; - __IO uint32_t LC1; - __O uint32_t LC1_JMP_LO; - __O uint32_t LC1_JMP_HI; - __O uint32_t PC1_FLAGS; - __O uint32_t PC2_LO; - __O uint32_t PC2_HI; - __IO uint32_t PC2_CTRL; - __IO uint32_t PC2_DLY; - __IO uint32_t ADC2_CONV_CTRL; - __IO uint32_t ADC2_STC; - __IO uint32_t ADC2_TVC; - __IO uint32_t ADC2_MISC_CTRL; - __IO uint32_t DAC2_CTRL; - __IO uint32_t DAC2_BYTE0; - __IO uint32_t DAC2_BYTE1; - __IO uint32_t DAC2_BYTE2; - __IO uint32_t LC2; - __O uint32_t LC2_JMP_LO; - __O uint32_t LC2_JMP_HI; - __O uint32_t PC2_FLAGS; - uint32_t RESERVED1; - uint32_t RESERVED2; - __IO uint32_t SSE_RAM_LO_IDATA; - __IO uint32_t SSE_RAM_HI_IDATA; - uint32_t RESERVED3[61]; - AQ_config_t ACB_DATA[6]; - uint32_t RESERVED4[59]; - __IO uint32_t SSE_PC0; - __IO uint32_t SSE_PC1; - __IO uint32_t SSE_PC2; - uint32_t RESERVED5[57]; - __IO uint32_t SSE_DAC0_BYTES01; - __IO uint32_t SSE_DAC1_BYTES01; - __IO uint32_t SSE_DAC2_BYTES01; - uint32_t RESERVED6[61]; - __O uint32_t SSE_ADC0_RESULTS; - __O uint32_t SSE_ADC1_RESULTS; - __O uint32_t SSE_ADC2_RESULTS; - uint32_t RESERVED7[61]; - __O uint32_t SSE_PDMA_DATAIN; - uint32_t RESERVED8[63]; - __IO uint32_t SSE_RAM_DATA[512]; - __I uint32_t ADC0_STATUS; - __I uint32_t ADC1_STATUS; - __I uint32_t ADC2_STATUS; - __I uint32_t COMPARATOR_STATUS; - uint32_t RESERVED9[124]; - __IO uint32_t SSE_IRQ_EN; - __I uint32_t SSE_IRQ; - __O uint32_t SSE_IRQ_CLR; - __IO uint32_t COMP_IRQ_EN; - __I uint32_t COMP_IRQ; - __O uint32_t COMP_IRQ_CLR; - __IO uint32_t PPE_FIFO_IRQ_EN; - __I uint32_t PPE_FIFO_IRQ; - __O uint32_t PPE_FIFO_IRQ_CLR; - __IO uint32_t PPE_FLAGS0_IRQ_EN; - __I uint32_t PPE_FLAGS0_IRQ; - __O uint32_t PPE_FLAGS0_IRQ_CLR; - __IO uint32_t PPE_FLAGS1_IRQ_EN; - __I uint32_t PPE_FLAGS1_IRQ; - __O uint32_t PPE_FLAGS1_IRQ_CLR; - __IO uint32_t PPE_FLAGS2_IRQ_EN; - __I uint32_t PPE_FLAGS2_IRQ; - __O uint32_t PPE_FLAGS2_IRQ_CLR; - __IO uint32_t PPE_FLAGS3_IRQ_EN; - __I uint32_t PPE_FLAGS3_IRQ; - __O uint32_t PPE_FLAGS3_IRQ_CLR; - __IO uint32_t PPE_SFFLAGS_IRQ_EN; - __I uint32_t PPE_SFFLAGS_IRQ; - __O uint32_t PPE_SFFLAGS_IRQ_CLR; - __IO uint32_t FPGA_FLAGS_SEL; - uint32_t RESERVED10[39]; - __IO uint32_t PPE_PDMA_CTRL; - __I uint32_t PDMA_STATUS; - __IO uint32_t PPE_PDMA_DATAOUT; - uint32_t RESERVED11[61]; - __I uint32_t PPE_NOP; - __IO uint32_t PPE_CTRL; - __IO uint32_t PPE_PC_ETC; - __IO uint32_t PPE_SF; - __IO uint32_t PPE_SCRATCH; - uint32_t RESERVED12; - __IO uint32_t ALU_CTRL; - __I uint32_t ALU_STATUS; - __IO uint32_t ALU_A; - uint32_t RESERVED50; - __IO uint32_t ALU_B; - uint32_t RESERVED53; - __IO uint32_t ALU_C; - uint32_t RESERVED51; - __IO uint32_t ALU_D; - uint32_t RESERVED52; - __IO uint32_t ALU_E; - uint32_t RESERVED54; - __IO uint32_t PPE_FPTR; - uint32_t RESERVED55; - __IO uint32_t PPE_FLAGS0; - __IO uint32_t PPE_FLAGS1; - __IO uint32_t PPE_FLAGS2; - __IO uint32_t PPE_FLAGS3; - __IO uint32_t PPE_SFFLAGS; - uint32_t RESERVED13[11]; - __IO uint32_t ADC0_FIFO_CTRL; - __I uint32_t ADC0_FIFO_STATUS; - __IO uint32_t ADC0_FIFO_DATA; - __IO uint32_t ADC1_FIFO_CTRL; - __I uint32_t ADC1_FIFO_STATUS; - __IO uint32_t ADC1_FIFO_DATA; - __IO uint32_t ADC2_FIFO_CTRL; - __I uint32_t ADC2_FIFO_STATUS; - __IO uint32_t ADC2_FIFO_DATA; - uint32_t RESERVED14[19]; - __I uint32_t ADC0_FIFO_DATA_PEEK; - __I uint32_t ADC0_FIFO_DATA0; - __I uint32_t ADC0_FIFO_DATA1; - __I uint32_t ADC0_FIFO_DATA2; - __I uint32_t ADC0_FIFO_DATA3; - __I uint32_t ADC1_FIFO_DATA_PEEK; - __I uint32_t ADC1_FIFO_DATA0; - __I uint32_t ADC1_FIFO_DATA1; - __I uint32_t ADC1_FIFO_DATA2; - __I uint32_t ADC1_FIFO_DATA3; - __I uint32_t ADC2_FIFO_DATA_PEEK; - __I uint32_t ADC2_FIFO_DATA0; - __I uint32_t ADC2_FIFO_DATA1; - __I uint32_t ADC2_FIFO_DATA2; - __I uint32_t ADC2_FIFO_DATA3; - uint32_t RESERVED15[177]; - __IO uint32_t PPE_RAM_DATA[512]; -} ACE_TypeDef; - -/*----------------------------------------------------------------------------*/ -/*------------------------ In Application Programming ------------------------*/ -/*----------------------------------------------------------------------------*/ -typedef struct -{ - __IO uint32_t IAP_IR; - __IO uint32_t IAP_DR2; - __IO uint32_t IAP_DR3; - __IO uint32_t IAP_DR5; - __IO uint32_t IAP_DR26; - __IO uint32_t IAP_DR32; - __IO uint32_t IAP_DR; - __IO uint32_t IAP_DR_LENGTH; - __IO uint32_t IAP_TAP_NEW_STATE; - __IO uint32_t IAP_TAP_CONTROL; - __I uint32_t IAP_STATUS; -} IAP_TypeDef; - -/*----------------------------------------------------------------------------*/ -/*---------------------- eNVM Special Function Registers ---------------------*/ -/*----------------------------------------------------------------------------*/ -typedef struct -{ - __IO uint32_t STATUS; - __IO uint32_t CONTROL; - __IO uint32_t ENABLE; - uint32_t RESERVED0; - __IO uint32_t CONFIG_0; - __IO uint32_t CONFIG_1; - __IO uint32_t PAGE_STATUS_0; - __IO uint32_t PAGE_STATUS_1; - __IO uint32_t SEGMENT; - __IO uint32_t ENVM_SELECT; -} NVM_TypeDef; - -/*----------------------------------------------------------------------------*/ -/*---------------------- eNVM Special Function Registers ---------------------*/ -/*----------------------------------------------------------------------------*/ -typedef struct -{ - __IO uint32_t MSSIRQ_EN0; - __IO uint32_t MSSIRQ_EN1; - __IO uint32_t MSSIRQ_EN2; - __IO uint32_t MSSIRQ_EN3; - __IO uint32_t MSSIRQ_EN4; - __IO uint32_t MSSIRQ_EN5; - __IO uint32_t MSSIRQ_EN6; - __IO uint32_t MSSIRQ_EN7; - __I uint32_t MSSIRQ_SRC0; - __I uint32_t MSSIRQ_SRC1; - __I uint32_t MSSIRQ_SRC2; - __I uint32_t MSSIRQ_SRC3; - __I uint32_t MSSIRQ_SRC4; - __I uint32_t MSSIRQ_SRC5; - __I uint32_t MSSIRQ_SRC6; - __I uint32_t MSSIRQ_SRC7; - __IO uint32_t FIIC_MR; -} MSS_IRQ_CTRL_TypeDef; - -/*----------------------------------------------------------------------------*/ -/*------------------------------ System Registers ----------------------------*/ -/*----------------------------------------------------------------------------*/ -typedef struct -{ - __IO uint32_t ESRAM_CR; - __IO uint32_t ENVM_CR; - __IO uint32_t ENVM_REMAP_SYS_CR; - __IO uint32_t ENVM_REMAP_FAB_CR; - __IO uint32_t FAB_PROT_SIZE_CR; - __IO uint32_t FAB_PROT_BASE_CR; - __IO uint32_t AHB_MATRIX_CR; - __IO uint32_t MSS_SR; - __IO uint32_t CLR_MSS_SR; - __IO uint32_t EFROM_CR; - __IO uint32_t IAP_CR; - __IO uint32_t SOFT_IRQ_CR; - __IO uint32_t SOFT_RST_CR; - __IO uint32_t DEVICE_SR; - __IO uint32_t SYSTICK_CR; - __IO uint32_t EMC_MUX_CR; - __IO uint32_t EMC_CS_0_CR; - __IO uint32_t EMC_CS_1_CR; - __IO uint32_t MSS_CLK_CR; - __IO uint32_t MSS_CCC_DIV_CR; - __IO uint32_t MSS_CCC_MUX_CR; - __IO uint32_t MSS_CCC_PLL_CR; - __IO uint32_t MSS_CCC_DLY_CR; - __IO uint32_t MSS_CCC_SR; - __IO uint32_t MSS_RCOSC_CR; - __IO uint32_t VRPSM_CR; - __IO uint32_t RESERVED; - __IO uint32_t FAB_IF_CR; - __IO uint32_t FAB_APB_HIWORD_DR; - __IO uint32_t LOOPBACK_CR; - __IO uint32_t MSS_IO_BANK_CR; - __IO uint32_t GPIN_SOURCE_CR; - __IO uint32_t TEST_SR; - __IO uint32_t RED_REP_ADDR0; - __I uint32_t RED_REP_LOW_LOCS0; - __I uint32_t RED_REP_HIGH_LOCS0; - __IO uint32_t RED_REP_ADDR1; - __I uint32_t RED_REP_LOW_LOCS1; - __I uint32_t RED_REP_HIGH_LOCS1; - __IO uint32_t FABRIC_CR; - uint32_t RESERVED1[24]; - __IO uint32_t IOMUX_CR[83]; -} SYSREG_TypeDef; - -#define SYSREG_ENVM_SOFTRESET_MASK (uint32_t)0x00000001 -#define SYSREG_ESRAM0_SOFTRESET_MASK (uint32_t)0x00000002 -#define SYSREG_ESRAM1_SOFTRESET_MASK (uint32_t)0x00000004 -#define SYSREG_EMC_SOFTRESET_MASK (uint32_t)0x00000008 -#define SYSREG_MAC_SOFTRESET_MASK (uint32_t)0x00000010 -#define SYSREG_PDMA_SOFTRESET_MASK (uint32_t)0x00000020 -#define SYSREG_TIMER_SOFTRESET_MASK (uint32_t)0x00000040 -#define SYSREG_UART0_SOFTRESET_MASK (uint32_t)0x00000080 -#define SYSREG_UART1_SOFTRESET_MASK (uint32_t)0x00000100 -#define SYSREG_SPI0_SOFTRESET_MASK (uint32_t)0x00000200 -#define SYSREG_SPI1_SOFTRESET_MASK (uint32_t)0x00000400 -#define SYSREG_I2C0_SOFTRESET_MASK (uint32_t)0x00000800 -#define SYSREG_I2C1_SOFTRESET_MASK (uint32_t)0x00001000 -#define SYSREG_ACE_SOFTRESET_MASK (uint32_t)0x00002000 -#define SYSREG_GPIO_SOFTRESET_MASK (uint32_t)0x00004000 -#define SYSREG_IAP_SOFTRESET_MASK (uint32_t)0x00008000 -#define SYSREG_EXT_SOFTRESET_MASK (uint32_t)0x00010000 -#define SYSREG_FPGA_SOFTRESET_MASK (uint32_t)0x00020000 -#define SYSREG_F2M_RESET_ENABLE_MASK (uint32_t)0x00040000 -#define SYSREG_PADRESET_ENABLE_MASK (uint32_t)0x00080000 - -/******************************************************************************/ -/* Peripheral memory map */ -/******************************************************************************/ -#define UART0_BASE 0x40000000U -#define SPI0_BASE 0x40001000U -#define I2C0_BASE 0x40002000U -#define MAC_BASE 0x40003000U -#define PDMA_BASE 0x40004000U -#define TIMER_BASE 0x40005000U -#define WATCHDOG_BASE 0x40006000U -#define H2F_IRQ_CTRL_BASE 0x40007000U -#define UART1_BASE 0x40010000U -#define SPI1_BASE 0x40011000U -#define I2C1_BASE 0x40012000U -#define GPIO_BASE 0x40013000U -#define RTC_BASE 0x40014100U -#define FROM_BASE 0x40015000U -#define IAP_BASE 0x40016000U -#define ACE_BASE 0x40020000U -#define FPGA_FABRIC_RAM_BASE 0x40040000U -#define FPGA_FABRIC_BASE 0x40050000U -#define ENVM_BASE 0x60000000U -#define ENVM_REGS_BASE 0x60100000U -#define SYSREG_BASE 0xE0042000U - -/******************************************************************************/ -/* bitband address calcualtion macro */ -/******************************************************************************/ -#define BITBAND_ADDRESS(X) ((X & 0xF0000000U) + 0x02000000U + ((X & 0xFFFFFU) << 5)) - -/******************************************************************************/ -/* Peripheral declaration */ -/******************************************************************************/ -#define UART0 ((UART_TypeDef *) UART0_BASE) -#define UART0_BITBAND ((UART_BitBand_TypeDef *) BITBAND_ADDRESS(UART0_BASE)) -#define SPI0 ((SPI_TypeDef *) SPI0_BASE) -#define SPI0_BITBAND ((SPI_BitBand_TypeDef *) BITBAND_ADDRESS(SPI0_BASE)) -#define I2C0 ((I2C_TypeDef *) I2C0_BASE) -#define I2C0_BITBAND ((I2C_BitBand_TypeDef *) BITBAND_ADDRESS(I2C0_BASE)) -#define MAC ((MAC_TypeDef *) MAC_BASE) -#define PDMA ((PDMA_TypeDef *) PDMA_BASE) -#define TIMER ((TIMER_TypeDef *) TIMER_BASE) -#define TIMER_BITBAND ((TIMER_BitBand_TypeDef *) BITBAND_ADDRESS(TIMER_BASE)) -#define WATCHDOG ((WATCHDOG_TypeDef *) WATCHDOG_BASE) -#define MSS_IRQ_CTRL ((MSS_IRQ_CTRL_TypeDef *) H2F_IRQ_CTRL_BASE) -#define UART1 ((UART_TypeDef *) UART1_BASE) -#define UART1_BITBAND ((UART_BitBand_TypeDef *) BITBAND_ADDRESS(UART1_BASE)) -#define SPI1 ((SPI_TypeDef *) SPI1_BASE) -#define SPI1_BITBAND ((SPI_BitBand_TypeDef *) BITBAND_ADDRESS(SPI1_BASE)) -#define I2C1 ((I2C_TypeDef *) I2C1_BASE) -#define I2C1_BITBAND ((I2C_BitBand_TypeDef *) BITBAND_ADDRESS(I2C1_BASE)) -#define GPIO ((GPIO_TypeDef *) GPIO_BASE) -#define GPIO_BITBAND ((GPIO_BitBand_TypeDef *) BITBAND_ADDRESS(GPIO_BASE)) -#define RTC ((RTC_TypeDef *) RTC_BASE) -#define FROM ((void *) FROM_BASE) -#define IAP ((IAP_TypeDef *) IAP_BASE) -#define ACE ((ACE_TypeDef *) ACE_BASE) -#define FPGA_FABRIC_RAM ((void *) FPGA_FABRIC_RAM_BASE) -#define FPGA_FABRIC ((void *) FPGA_FABRIC_BASE) -#define ENVM ((void *) ENVM_BASE) -#define ENVM_REGS ((NVM_TypeDef *) ENVM_REGS_BASE) -#define SYSREG ((SYSREG_TypeDef *) SYSREG_BASE) - -#ifdef __cplusplus -} -#endif - -#endif /* __A2FXXXM3_H__ */ - diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/CMSIS/core_cm3.c b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/CMSIS/core_cm3.c deleted file mode 100644 index 0e8c3c43c..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/CMSIS/core_cm3.c +++ /dev/null @@ -1,784 +0,0 @@ -/**************************************************************************//** - * @file core_cm3.c - * @brief CMSIS Cortex-M3 Core Peripheral Access Layer Source File - * @version V1.30 - * @date 30. October 2009 - * - * @note - * Copyright (C) 2009 ARM Limited. All rights reserved. - * - * @par - * ARM Limited (ARM) is supplying this software for use with Cortex-M - * processor based microcontrollers. This file can be freely distributed - * within development tools that are supporting such ARM based processors. - * - * @par - * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED - * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. - * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR - * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. - * - ******************************************************************************/ - -#include - -/* define compiler specific symbols */ -#if defined ( __CC_ARM ) - #define __ASM __asm /*!< asm keyword for ARM Compiler */ - #define __INLINE __inline /*!< inline keyword for ARM Compiler */ - -#elif defined ( __ICCARM__ ) - #define __ASM __asm /*!< asm keyword for IAR Compiler */ - #define __INLINE inline /*!< inline keyword for IAR Compiler. Only avaiable in High optimization mode! */ - -#elif defined ( __GNUC__ ) - #define __ASM __asm /*!< asm keyword for GNU Compiler */ - #define __INLINE inline /*!< inline keyword for GNU Compiler */ - -#elif defined ( __TASKING__ ) - #define __ASM __asm /*!< asm keyword for TASKING Compiler */ - #define __INLINE inline /*!< inline keyword for TASKING Compiler */ - -#endif - - -/* ################### Compiler specific Intrinsics ########################### */ - -#if defined ( __CC_ARM ) /*------------------RealView Compiler -----------------*/ -/* ARM armcc specific functions */ - -/** - * @brief Return the Process Stack Pointer - * - * @return ProcessStackPointer - * - * Return the actual process stack pointer - */ -__ASM uint32_t __get_PSP(void) -{ - mrs r0, psp - bx lr -} - -/** - * @brief Set the Process Stack Pointer - * - * @param topOfProcStack Process Stack Pointer - * - * Assign the value ProcessStackPointer to the MSP - * (process stack pointer) Cortex processor register - */ -__ASM void __set_PSP(uint32_t topOfProcStack) -{ - msr psp, r0 - bx lr -} - -/** - * @brief Return the Main Stack Pointer - * - * @return Main Stack Pointer - * - * Return the current value of the MSP (main stack pointer) - * Cortex processor register - */ -__ASM uint32_t __get_MSP(void) -{ - mrs r0, msp - bx lr -} - -/** - * @brief Set the Main Stack Pointer - * - * @param topOfMainStack Main Stack Pointer - * - * Assign the value mainStackPointer to the MSP - * (main stack pointer) Cortex processor register - */ -__ASM void __set_MSP(uint32_t mainStackPointer) -{ - msr msp, r0 - bx lr -} - -/** - * @brief Reverse byte order in unsigned short value - * - * @param value value to reverse - * @return reversed value - * - * Reverse byte order in unsigned short value - */ -__ASM uint32_t __REV16(uint16_t value) -{ - rev16 r0, r0 - bx lr -} - -/** - * @brief Reverse byte order in signed short value with sign extension to integer - * - * @param value value to reverse - * @return reversed value - * - * Reverse byte order in signed short value with sign extension to integer - */ -__ASM int32_t __REVSH(int16_t value) -{ - revsh r0, r0 - bx lr -} - - -#if (__ARMCC_VERSION < 400000) - -/** - * @brief Remove the exclusive lock created by ldrex - * - * Removes the exclusive lock which is created by ldrex. - */ -__ASM void __CLREX(void) -{ - clrex -} - -/** - * @brief Return the Base Priority value - * - * @return BasePriority - * - * Return the content of the base priority register - */ -__ASM uint32_t __get_BASEPRI(void) -{ - mrs r0, basepri - bx lr -} - -/** - * @brief Set the Base Priority value - * - * @param basePri BasePriority - * - * Set the base priority register - */ -__ASM void __set_BASEPRI(uint32_t basePri) -{ - msr basepri, r0 - bx lr -} - -/** - * @brief Return the Priority Mask value - * - * @return PriMask - * - * Return state of the priority mask bit from the priority mask register - */ -__ASM uint32_t __get_PRIMASK(void) -{ - mrs r0, primask - bx lr -} - -/** - * @brief Set the Priority Mask value - * - * @param priMask PriMask - * - * Set the priority mask bit in the priority mask register - */ -__ASM void __set_PRIMASK(uint32_t priMask) -{ - msr primask, r0 - bx lr -} - -/** - * @brief Return the Fault Mask value - * - * @return FaultMask - * - * Return the content of the fault mask register - */ -__ASM uint32_t __get_FAULTMASK(void) -{ - mrs r0, faultmask - bx lr -} - -/** - * @brief Set the Fault Mask value - * - * @param faultMask faultMask value - * - * Set the fault mask register - */ -__ASM void __set_FAULTMASK(uint32_t faultMask) -{ - msr faultmask, r0 - bx lr -} - -/** - * @brief Return the Control Register value - * - * @return Control value - * - * Return the content of the control register - */ -__ASM uint32_t __get_CONTROL(void) -{ - mrs r0, control - bx lr -} - -/** - * @brief Set the Control Register value - * - * @param control Control value - * - * Set the control register - */ -__ASM void __set_CONTROL(uint32_t control) -{ - msr control, r0 - bx lr -} - -#endif /* __ARMCC_VERSION */ - - - -#elif (defined (__ICCARM__)) /*------------------ ICC Compiler -------------------*/ -/* IAR iccarm specific functions */ -#pragma diag_suppress=Pe940 - -/** - * @brief Return the Process Stack Pointer - * - * @return ProcessStackPointer - * - * Return the actual process stack pointer - */ -uint32_t __get_PSP(void) -{ - __ASM("mrs r0, psp"); - __ASM("bx lr"); -} - -/** - * @brief Set the Process Stack Pointer - * - * @param topOfProcStack Process Stack Pointer - * - * Assign the value ProcessStackPointer to the MSP - * (process stack pointer) Cortex processor register - */ -void __set_PSP(uint32_t topOfProcStack) -{ - __ASM("msr psp, r0"); - __ASM("bx lr"); -} - -/** - * @brief Return the Main Stack Pointer - * - * @return Main Stack Pointer - * - * Return the current value of the MSP (main stack pointer) - * Cortex processor register - */ -uint32_t __get_MSP(void) -{ - __ASM("mrs r0, msp"); - __ASM("bx lr"); -} - -/** - * @brief Set the Main Stack Pointer - * - * @param topOfMainStack Main Stack Pointer - * - * Assign the value mainStackPointer to the MSP - * (main stack pointer) Cortex processor register - */ -void __set_MSP(uint32_t topOfMainStack) -{ - __ASM("msr msp, r0"); - __ASM("bx lr"); -} - -/** - * @brief Reverse byte order in unsigned short value - * - * @param value value to reverse - * @return reversed value - * - * Reverse byte order in unsigned short value - */ -uint32_t __REV16(uint16_t value) -{ - __ASM("rev16 r0, r0"); - __ASM("bx lr"); -} - -/** - * @brief Reverse bit order of value - * - * @param value value to reverse - * @return reversed value - * - * Reverse bit order of value - */ -uint32_t __RBIT(uint32_t value) -{ - __ASM("rbit r0, r0"); - __ASM("bx lr"); -} - -/** - * @brief LDR Exclusive (8 bit) - * - * @param *addr address pointer - * @return value of (*address) - * - * Exclusive LDR command for 8 bit values) - */ -uint8_t __LDREXB(uint8_t *addr) -{ - __ASM("ldrexb r0, [r0]"); - __ASM("bx lr"); -} - -/** - * @brief LDR Exclusive (16 bit) - * - * @param *addr address pointer - * @return value of (*address) - * - * Exclusive LDR command for 16 bit values - */ -uint16_t __LDREXH(uint16_t *addr) -{ - __ASM("ldrexh r0, [r0]"); - __ASM("bx lr"); -} - -/** - * @brief LDR Exclusive (32 bit) - * - * @param *addr address pointer - * @return value of (*address) - * - * Exclusive LDR command for 32 bit values - */ -uint32_t __LDREXW(uint32_t *addr) -{ - __ASM("ldrex r0, [r0]"); - __ASM("bx lr"); -} - -/** - * @brief STR Exclusive (8 bit) - * - * @param value value to store - * @param *addr address pointer - * @return successful / failed - * - * Exclusive STR command for 8 bit values - */ -uint32_t __STREXB(uint8_t value, uint8_t *addr) -{ - __ASM("strexb r0, r0, [r1]"); - __ASM("bx lr"); -} - -/** - * @brief STR Exclusive (16 bit) - * - * @param value value to store - * @param *addr address pointer - * @return successful / failed - * - * Exclusive STR command for 16 bit values - */ -uint32_t __STREXH(uint16_t value, uint16_t *addr) -{ - __ASM("strexh r0, r0, [r1]"); - __ASM("bx lr"); -} - -/** - * @brief STR Exclusive (32 bit) - * - * @param value value to store - * @param *addr address pointer - * @return successful / failed - * - * Exclusive STR command for 32 bit values - */ -uint32_t __STREXW(uint32_t value, uint32_t *addr) -{ - __ASM("strex r0, r0, [r1]"); - __ASM("bx lr"); -} - -#pragma diag_default=Pe940 - - -#elif (defined (__GNUC__)) /*------------------ GNU Compiler ---------------------*/ -/* GNU gcc specific functions */ - -/** - * @brief Return the Process Stack Pointer - * - * @return ProcessStackPointer - * - * Return the actual process stack pointer - */ -uint32_t __get_PSP(void) __attribute__( ( naked ) ); -uint32_t __get_PSP(void) -{ - uint32_t result=0; - - __ASM volatile ("MRS %0, psp\n\t" - "MOV r0, %0 \n\t" - "BX lr \n\t" : "=r" (result) ); - return(result); -} - -/** - * @brief Set the Process Stack Pointer - * - * @param topOfProcStack Process Stack Pointer - * - * Assign the value ProcessStackPointer to the MSP - * (process stack pointer) Cortex processor register - */ -void __set_PSP(uint32_t topOfProcStack) __attribute__( ( naked ) ); -void __set_PSP(uint32_t topOfProcStack) -{ - __ASM volatile ("MSR psp, %0\n\t" - "BX lr \n\t" : : "r" (topOfProcStack) ); -} - -/** - * @brief Return the Main Stack Pointer - * - * @return Main Stack Pointer - * - * Return the current value of the MSP (main stack pointer) - * Cortex processor register - */ -uint32_t __get_MSP(void) __attribute__( ( naked ) ); -uint32_t __get_MSP(void) -{ - uint32_t result=0; - - __ASM volatile ("MRS %0, msp\n\t" - "MOV r0, %0 \n\t" - "BX lr \n\t" : "=r" (result) ); - return(result); -} - -/** - * @brief Set the Main Stack Pointer - * - * @param topOfMainStack Main Stack Pointer - * - * Assign the value mainStackPointer to the MSP - * (main stack pointer) Cortex processor register - */ -void __set_MSP(uint32_t topOfMainStack) __attribute__( ( naked ) ); -void __set_MSP(uint32_t topOfMainStack) -{ - __ASM volatile ("MSR msp, %0\n\t" - "BX lr \n\t" : : "r" (topOfMainStack) ); -} - -/** - * @brief Return the Base Priority value - * - * @return BasePriority - * - * Return the content of the base priority register - */ -uint32_t __get_BASEPRI(void) -{ - uint32_t result=0; - - __ASM volatile ("MRS %0, basepri_max" : "=r" (result) ); - return(result); -} - -/** - * @brief Set the Base Priority value - * - * @param basePri BasePriority - * - * Set the base priority register - */ -void __set_BASEPRI(uint32_t value) -{ - __ASM volatile ("MSR basepri, %0" : : "r" (value) ); -} - -/** - * @brief Return the Priority Mask value - * - * @return PriMask - * - * Return state of the priority mask bit from the priority mask register - */ -uint32_t __get_PRIMASK(void) -{ - uint32_t result=0; - - __ASM volatile ("MRS %0, primask" : "=r" (result) ); - return(result); -} - -/** - * @brief Set the Priority Mask value - * - * @param priMask PriMask - * - * Set the priority mask bit in the priority mask register - */ -void __set_PRIMASK(uint32_t priMask) -{ - __ASM volatile ("MSR primask, %0" : : "r" (priMask) ); -} - -/** - * @brief Return the Fault Mask value - * - * @return FaultMask - * - * Return the content of the fault mask register - */ -uint32_t __get_FAULTMASK(void) -{ - uint32_t result=0; - - __ASM volatile ("MRS %0, faultmask" : "=r" (result) ); - return(result); -} - -/** - * @brief Set the Fault Mask value - * - * @param faultMask faultMask value - * - * Set the fault mask register - */ -void __set_FAULTMASK(uint32_t faultMask) -{ - __ASM volatile ("MSR faultmask, %0" : : "r" (faultMask) ); -} - -/** - * @brief Return the Control Register value -* -* @return Control value - * - * Return the content of the control register - */ -uint32_t __get_CONTROL(void) -{ - uint32_t result=0; - - __ASM volatile ("MRS %0, control" : "=r" (result) ); - return(result); -} - -/** - * @brief Set the Control Register value - * - * @param control Control value - * - * Set the control register - */ -void __set_CONTROL(uint32_t control) -{ - __ASM volatile ("MSR control, %0" : : "r" (control) ); -} - - -/** - * @brief Reverse byte order in integer value - * - * @param value value to reverse - * @return reversed value - * - * Reverse byte order in integer value - */ -uint32_t __REV(uint32_t value) -{ - uint32_t result=0; - - __ASM volatile ("rev %0, %1" : "=r" (result) : "r" (value) ); - return(result); -} - -/** - * @brief Reverse byte order in unsigned short value - * - * @param value value to reverse - * @return reversed value - * - * Reverse byte order in unsigned short value - */ -uint32_t __REV16(uint16_t value) -{ - uint32_t result=0; - - __ASM volatile ("rev16 %0, %1" : "=r" (result) : "r" (value) ); - return(result); -} - -/** - * @brief Reverse byte order in signed short value with sign extension to integer - * - * @param value value to reverse - * @return reversed value - * - * Reverse byte order in signed short value with sign extension to integer - */ -int32_t __REVSH(int16_t value) -{ - uint32_t result=0; - - __ASM volatile ("revsh %0, %1" : "=r" (result) : "r" (value) ); - return(result); -} - -/** - * @brief Reverse bit order of value - * - * @param value value to reverse - * @return reversed value - * - * Reverse bit order of value - */ -uint32_t __RBIT(uint32_t value) -{ - uint32_t result=0; - - __ASM volatile ("rbit %0, %1" : "=r" (result) : "r" (value) ); - return(result); -} - -/** - * @brief LDR Exclusive (8 bit) - * - * @param *addr address pointer - * @return value of (*address) - * - * Exclusive LDR command for 8 bit value - */ -uint8_t __LDREXB(uint8_t *addr) -{ - uint8_t result=0; - - __ASM volatile ("ldrexb %0, [%1]" : "=r" (result) : "r" (addr) ); - return(result); -} - -/** - * @brief LDR Exclusive (16 bit) - * - * @param *addr address pointer - * @return value of (*address) - * - * Exclusive LDR command for 16 bit values - */ -uint16_t __LDREXH(uint16_t *addr) -{ - uint16_t result=0; - - __ASM volatile ("ldrexh %0, [%1]" : "=r" (result) : "r" (addr) ); - return(result); -} - -/** - * @brief LDR Exclusive (32 bit) - * - * @param *addr address pointer - * @return value of (*address) - * - * Exclusive LDR command for 32 bit values - */ -uint32_t __LDREXW(uint32_t *addr) -{ - uint32_t result=0; - - __ASM volatile ("ldrex %0, [%1]" : "=r" (result) : "r" (addr) ); - return(result); -} - -/** - * @brief STR Exclusive (8 bit) - * - * @param value value to store - * @param *addr address pointer - * @return successful / failed - * - * Exclusive STR command for 8 bit values - */ -uint32_t __STREXB(uint8_t value, uint8_t *addr) -{ - uint32_t result=0; - - __ASM volatile ("strexb %0, %2, [%1]" : "=&r" (result) : "r" (addr), "r" (value) ); - return(result); -} - -/** - * @brief STR Exclusive (16 bit) - * - * @param value value to store - * @param *addr address pointer - * @return successful / failed - * - * Exclusive STR command for 16 bit values - */ -uint32_t __STREXH(uint16_t value, uint16_t *addr) -{ - uint32_t result=0; - - __ASM volatile ("strexh %0, %2, [%1]" : "=&r" (result) : "r" (addr), "r" (value) ); - return(result); -} - -/** - * @brief STR Exclusive (32 bit) - * - * @param value value to store - * @param *addr address pointer - * @return successful / failed - * - * Exclusive STR command for 32 bit values - */ -uint32_t __STREXW(uint32_t value, uint32_t *addr) -{ - uint32_t result=0; - - __ASM volatile ("strex %0, %2, [%1]" : "=r" (result) : "r" (addr), "r" (value) ); - return(result); -} - - -#elif (defined (__TASKING__)) /*------------------ TASKING Compiler ---------------------*/ -/* TASKING carm specific functions */ - -/* - * The CMSIS functions have been implemented as intrinsics in the compiler. - * Please use "carm -?i" to get an up to date list of all instrinsics, - * Including the CMSIS ones. - */ - -#endif diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/CMSIS/mss_assert.h b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/CMSIS/mss_assert.h deleted file mode 100644 index 4725d2132..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/CMSIS/mss_assert.h +++ /dev/null @@ -1,48 +0,0 @@ -/******************************************************************************* - * (c) Copyright 2009 Actel Corporation. All rights reserved. - * - * Assertion implementation. - * - * This file provides the implementation of the ASSERT macro. This file can be - * modified to cater for project specific requirements regarding the way - * assertions are handled. - * - * SVN $Revision: 1676 $ - * SVN $Date: 2009-12-02 16:47:03 +0000 (Wed, 02 Dec 2009) $ - */ -#ifndef __MSS_ASSERT_H_ -#define __MSS_ASSERT_H_ - -#include - -#if defined ( __GNUC__ ) - -#if defined(NDEBUG) - -#define ASSERT(CHECK) - -#else /* NDEBUG */ -/* - * SoftConsole assertion handling - */ -#define ASSERT(CHECK) \ - do { \ - if (!(CHECK)) \ - { \ - __asm volatile ("BKPT\n\t"); \ - } \ - } while (0); - -#endif /* NDEBUG */ - -#else -/* - * IAR Embedded Workbench or Keil assertion handling. - * Call C library assert function which should result in error message - * displayed in debugger. - */ -#define ASSERT(X) assert(X) - -#endif - -#endif /* __MSS_ASSERT_H_ */ diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/CMSIS/startup_iar/startup_a2fxxxm3.s b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/CMSIS/startup_iar/startup_a2fxxxm3.s deleted file mode 100644 index 0aa80dffa..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/CMSIS/startup_iar/startup_a2fxxxm3.s +++ /dev/null @@ -1,973 +0,0 @@ -/******************************************************************************* - * (c) Copyright 2009 Actel Corporation. All rights reserved. - * - * Startup code for SmartFusion A2FM3Fxxx - * - * SVN $Revision: 2068 $ - * SVN $Date: 2010-01-27 17:27:41 +0000 (Wed, 27 Jan 2010) $ - */ - - MODULE ?cstartup - - ;; Forward declaration of sections. - SECTION CSTACK:DATA:NOROOT(3) - - SECTION .intvec:CODE:NOROOT(2) - - EXTERN __iar_program_start -; EXTERN SystemInit - PUBLIC __vector_table - - DATA -__vector_table - DCD sfe(CSTACK) - DCD Reset_Handler - - DCD NMI_Handler - DCD HardFault_Handler - DCD MemManage_Handler - DCD BusFault_Handler - DCD UsageFault_Handler - DCD 0 - DCD 0 - DCD 0 - DCD 0 - DCD SVC_Handler - DCD DebugMon_Handler - DCD 0 - DCD PendSV_Handler - DCD SysTick_Handler - - ; External Interrupts - DCD WdogWakeup_IRQHandler - DCD BrownOut_1_5V_IRQHandler - DCD BrownOut_3_3V_IRQHandler - DCD RTC_Match_IRQHandler - DCD RTCIF_Pub_IRQHandler - DCD EthernetMAC_IRQHandler - DCD IAP_IRQHandler - DCD ENVM0_IRQHandler - DCD ENVM1_IRQHandler - DCD DMA_IRQHandler - DCD UART0_IRQHandler - DCD UART1_IRQHandler - DCD SPI0_IRQHandler - DCD SPI1_IRQHandler - DCD I2C0_IRQHandler - DCD I2C0_SMBAlert_IRQHandler - DCD I2C0_SMBus_IRQHandler - DCD I2C1_IRQHandler - DCD I2C1_SMBAlert_IRQHandler - DCD I2C1_SMBus_IRQHandler - DCD Timer1_IRQHandler - DCD Timer2_IRQHandler - DCD PLL_Lock_IRQHandler - DCD PLL_LockLost_IRQHandler - DCD CommError_IRQHandler - DCD 0 - DCD 0 - DCD 0 - DCD 0 - DCD 0 - DCD 0 - DCD Fabric_IRQHandler - DCD GPIO0_IRQHandler - DCD GPIO1_IRQHandler - DCD GPIO2_IRQHandler - DCD GPIO3_IRQHandler - DCD GPIO4_IRQHandler - DCD GPIO5_IRQHandler - DCD GPIO6_IRQHandler - DCD GPIO7_IRQHandler - DCD GPIO8_IRQHandler - DCD GPIO9_IRQHandler - DCD GPIO10_IRQHandler - DCD GPIO11_IRQHandler - DCD GPIO12_IRQHandler - DCD GPIO13_IRQHandler - DCD GPIO14_IRQHandler - DCD GPIO15_IRQHandler - DCD GPIO16_IRQHandler - DCD GPIO17_IRQHandler - DCD GPIO18_IRQHandler - DCD GPIO19_IRQHandler - DCD GPIO20_IRQHandler - DCD GPIO21_IRQHandler - DCD GPIO22_IRQHandler - DCD GPIO23_IRQHandler - DCD GPIO24_IRQHandler - DCD GPIO25_IRQHandler - DCD GPIO26_IRQHandler - DCD GPIO27_IRQHandler - DCD GPIO28_IRQHandler - DCD GPIO29_IRQHandler - DCD GPIO30_IRQHandler - DCD GPIO31_IRQHandler - DCD ACE_PC0_Flag0_IRQHandler - DCD ACE_PC0_Flag1_IRQHandler - DCD ACE_PC0_Flag2_IRQHandler - DCD ACE_PC0_Flag3_IRQHandler - DCD ACE_PC1_Flag0_IRQHandler - DCD ACE_PC1_Flag1_IRQHandler - DCD ACE_PC1_Flag2_IRQHandler - DCD ACE_PC1_Flag3_IRQHandler - DCD ACE_PC2_Flag0_IRQHandler - DCD ACE_PC2_Flag1_IRQHandler - DCD ACE_PC2_Flag2_IRQHandler - DCD ACE_PC2_Flag3_IRQHandler - DCD ACE_ADC0_DataValid_IRQHandler - DCD ACE_ADC1_DataValid_IRQHandler - DCD ACE_ADC2_DataValid_IRQHandler - DCD ACE_ADC0_CalDone_IRQHandler - DCD ACE_ADC1_CalDone_IRQHandler - DCD ACE_ADC2_CalDone_IRQHandler - DCD ACE_ADC0_CalStart_IRQHandler - DCD ACE_ADC1_CalStart_IRQHandler - DCD ACE_ADC2_CalStart_IRQHandler - DCD ACE_Comp0_Fall_IRQHandler - DCD ACE_Comp1_Fall_IRQHandler - DCD ACE_Comp2_Fall_IRQHandler - DCD ACE_Comp3_Fall_IRQHandler - DCD ACE_Comp4_Fall_IRQHandler - DCD ACE_Comp5_Fall_IRQHandler - DCD ACE_Comp6_Fall_IRQHandler - DCD ACE_Comp7_Fall_IRQHandler - DCD ACE_Comp8_Fall_IRQHandler - DCD ACE_Comp9_Fall_IRQHandler - DCD ACE_Comp10_Fall_IRQHandler - DCD ACE_Comp11_Fall_IRQHandler - DCD ACE_Comp0_Rise_IRQHandler - DCD ACE_Comp1_Rise_IRQHandler - DCD ACE_Comp2_Rise_IRQHandler - DCD ACE_Comp3_Rise_IRQHandler - DCD ACE_Comp4_Rise_IRQHandler - DCD ACE_Comp5_Rise_IRQHandler - DCD ACE_Comp6_Rise_IRQHandler - DCD ACE_Comp7_Rise_IRQHandler - DCD ACE_Comp8_Rise_IRQHandler - DCD ACE_Comp9_Rise_IRQHandler - DCD ACE_Comp10_Rise_IRQHandler - DCD ACE_Comp11_Rise_IRQHandler - DCD ACE_ADC0_FifoFull_IRQHandler - DCD ACE_ADC0_FifoAFull_IRQHandler - DCD ACE_ADC0_FifoEmpty_IRQHandler - DCD ACE_ADC1_FifoFull_IRQHandler - DCD ACE_ADC1_FifoAFull_IRQHandler - DCD ACE_ADC1_FifoEmpty_IRQHandler - DCD ACE_ADC2_FifoFull_IRQHandler - DCD ACE_ADC2_FifoAFull_IRQHandler - DCD ACE_ADC2_FifoEmpty_IRQHandler - DCD ACE_PPE_Flag0_IRQHandler - DCD ACE_PPE_Flag1_IRQHandler - DCD ACE_PPE_Flag2_IRQHandler - DCD ACE_PPE_Flag3_IRQHandler - DCD ACE_PPE_Flag4_IRQHandler - DCD ACE_PPE_Flag5_IRQHandler - DCD ACE_PPE_Flag6_IRQHandler - DCD ACE_PPE_Flag7_IRQHandler - DCD ACE_PPE_Flag8_IRQHandler - DCD ACE_PPE_Flag9_IRQHandler - DCD ACE_PPE_Flag10_IRQHandler - DCD ACE_PPE_Flag11_IRQHandler - DCD ACE_PPE_Flag12_IRQHandler - DCD ACE_PPE_Flag13_IRQHandler - DCD ACE_PPE_Flag14_IRQHandler - DCD ACE_PPE_Flag15_IRQHandler - DCD ACE_PPE_Flag16_IRQHandler - DCD ACE_PPE_Flag17_IRQHandler - DCD ACE_PPE_Flag18_IRQHandler - DCD ACE_PPE_Flag19_IRQHandler - DCD ACE_PPE_Flag20_IRQHandler - DCD ACE_PPE_Flag21_IRQHandler - DCD ACE_PPE_Flag22_IRQHandler - DCD ACE_PPE_Flag23_IRQHandler - DCD ACE_PPE_Flag24_IRQHandler - DCD ACE_PPE_Flag25_IRQHandler - DCD ACE_PPE_Flag26_IRQHandler - DCD ACE_PPE_Flag27_IRQHandler - DCD ACE_PPE_Flag28_IRQHandler - DCD ACE_PPE_Flag29_IRQHandler - DCD ACE_PPE_Flag30_IRQHandler - DCD ACE_PPE_Flag31_IRQHandler - - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; -;; Default interrupt handlers. -;; - THUMB - - PUBWEAK Reset_Handler - SECTION .text:CODE:REORDER(2) -Reset_Handler -; LDR R0, =SystemInit -; BLX R0 - LDR R0, =__iar_program_start - BX R0 - - PUBWEAK NMI_Handler - SECTION .text:CODE:REORDER(1) -NMI_Handler - B NMI_Handler - - PUBWEAK HardFault_Handler - SECTION .text:CODE:REORDER(1) -HardFault_Handler - B HardFault_Handler - - PUBWEAK MemManage_Handler - SECTION .text:CODE:REORDER(1) -MemManage_Handler - B MemManage_Handler - - PUBWEAK BusFault_Handler - SECTION .text:CODE:REORDER(1) -BusFault_Handler - B BusFault_Handler - - PUBWEAK UsageFault_Handler - SECTION .text:CODE:REORDER(1) -UsageFault_Handler - B UsageFault_Handler - - PUBWEAK SVC_Handler - SECTION .text:CODE:REORDER(1) -SVC_Handler - B SVC_Handler - - PUBWEAK DebugMon_Handler - SECTION .text:CODE:REORDER(1) -DebugMon_Handler - B DebugMon_Handler - - PUBWEAK PendSV_Handler - SECTION .text:CODE:REORDER(1) -PendSV_Handler - B PendSV_Handler - - PUBWEAK SysTick_Handler - SECTION .text:CODE:REORDER(1) -SysTick_Handler - B SysTick_Handler - - PUBWEAK WdogWakeup_IRQHandler - SECTION .text:CODE:REORDER(1) -WdogWakeup_IRQHandler - B WdogWakeup_IRQHandler - - PUBWEAK BrownOut_1_5V_IRQHandler - SECTION .text:CODE:REORDER(1) -BrownOut_1_5V_IRQHandler - B BrownOut_1_5V_IRQHandler - - PUBWEAK BrownOut_3_3V_IRQHandler - SECTION .text:CODE:REORDER(1) -BrownOut_3_3V_IRQHandler - B BrownOut_3_3V_IRQHandler - - PUBWEAK RTC_Match_IRQHandler - SECTION .text:CODE:REORDER(1) -RTC_Match_IRQHandler - B RTC_Match_IRQHandler - - PUBWEAK RTCIF_Pub_IRQHandler - SECTION .text:CODE:REORDER(1) -RTCIF_Pub_IRQHandler - B RTCIF_Pub_IRQHandler - - PUBWEAK EthernetMAC_IRQHandler - SECTION .text:CODE:REORDER(1) -EthernetMAC_IRQHandler - B EthernetMAC_IRQHandler - - PUBWEAK IAP_IRQHandler - SECTION .text:CODE:REORDER(1) -IAP_IRQHandler - B IAP_IRQHandler - - PUBWEAK ENVM0_IRQHandler - SECTION .text:CODE:REORDER(1) -ENVM0_IRQHandler - B ENVM0_IRQHandler - - PUBWEAK ENVM1_IRQHandler - SECTION .text:CODE:REORDER(1) -ENVM1_IRQHandler - B ENVM1_IRQHandler - - PUBWEAK DMA_IRQHandler - SECTION .text:CODE:REORDER(1) -DMA_IRQHandler - B DMA_IRQHandler - - PUBWEAK UART0_IRQHandler - SECTION .text:CODE:REORDER(1) -UART0_IRQHandler - B UART0_IRQHandler - - PUBWEAK UART1_IRQHandler - SECTION .text:CODE:REORDER(1) -UART1_IRQHandler - B UART1_IRQHandler - - PUBWEAK SPI0_IRQHandler - SECTION .text:CODE:REORDER(1) -SPI0_IRQHandler - B SPI0_IRQHandler - - PUBWEAK SPI1_IRQHandler - SECTION .text:CODE:REORDER(1) -SPI1_IRQHandler - B SPI1_IRQHandler - - PUBWEAK I2C0_IRQHandler - SECTION .text:CODE:REORDER(1) -I2C0_IRQHandler - B I2C0_IRQHandler - - PUBWEAK I2C0_SMBAlert_IRQHandler - SECTION .text:CODE:REORDER(1) -I2C0_SMBAlert_IRQHandler - B I2C0_SMBAlert_IRQHandler - - PUBWEAK I2C0_SMBus_IRQHandler - SECTION .text:CODE:REORDER(1) -I2C0_SMBus_IRQHandler - B I2C0_SMBus_IRQHandler - - PUBWEAK I2C1_IRQHandler - SECTION .text:CODE:REORDER(1) -I2C1_IRQHandler - B I2C1_IRQHandler - - PUBWEAK I2C1_SMBAlert_IRQHandler - SECTION .text:CODE:REORDER(1) -I2C1_SMBAlert_IRQHandler - B I2C1_SMBAlert_IRQHandler - - PUBWEAK I2C1_SMBus_IRQHandler - SECTION .text:CODE:REORDER(1) -I2C1_SMBus_IRQHandler - B I2C1_SMBus_IRQHandler - - PUBWEAK Timer1_IRQHandler - SECTION .text:CODE:REORDER(1) -Timer1_IRQHandler - B Timer1_IRQHandler - - PUBWEAK Timer2_IRQHandler - SECTION .text:CODE:REORDER(1) -Timer2_IRQHandler - B Timer2_IRQHandler - - PUBWEAK PLL_Lock_IRQHandler - SECTION .text:CODE:REORDER(1) -PLL_Lock_IRQHandler - B PLL_Lock_IRQHandler - - PUBWEAK PLL_LockLost_IRQHandler - SECTION .text:CODE:REORDER(1) -PLL_LockLost_IRQHandler - B PLL_LockLost_IRQHandler - - PUBWEAK CommError_IRQHandler - SECTION .text:CODE:REORDER(1) -CommError_IRQHandler - B CommError_IRQHandler - - PUBWEAK Fabric_IRQHandler - SECTION .text:CODE:REORDER(1) -Fabric_IRQHandler - B Fabric_IRQHandler - - PUBWEAK GPIO0_IRQHandler - SECTION .text:CODE:REORDER(1) -GPIO0_IRQHandler - B GPIO0_IRQHandler - - PUBWEAK GPIO1_IRQHandler - SECTION .text:CODE:REORDER(1) -GPIO1_IRQHandler - B GPIO1_IRQHandler - - PUBWEAK GPIO2_IRQHandler - SECTION .text:CODE:REORDER(1) -GPIO2_IRQHandler - B GPIO2_IRQHandler - - PUBWEAK GPIO3_IRQHandler - SECTION .text:CODE:REORDER(1) -GPIO3_IRQHandler - B GPIO3_IRQHandler - - PUBWEAK GPIO4_IRQHandler - SECTION .text:CODE:REORDER(1) -GPIO4_IRQHandler - B GPIO4_IRQHandler - - PUBWEAK GPIO5_IRQHandler - SECTION .text:CODE:REORDER(1) -GPIO5_IRQHandler - B GPIO5_IRQHandler - - PUBWEAK GPIO6_IRQHandler - SECTION .text:CODE:REORDER(1) -GPIO6_IRQHandler - B GPIO6_IRQHandler - - PUBWEAK GPIO7_IRQHandler - SECTION .text:CODE:REORDER(1) -GPIO7_IRQHandler - B GPIO7_IRQHandler - - PUBWEAK GPIO8_IRQHandler - SECTION .text:CODE:REORDER(1) -GPIO8_IRQHandler - B GPIO8_IRQHandler - - PUBWEAK GPIO9_IRQHandler - SECTION .text:CODE:REORDER(1) -GPIO9_IRQHandler - B GPIO9_IRQHandler - - PUBWEAK GPIO10_IRQHandler - SECTION .text:CODE:REORDER(1) -GPIO10_IRQHandler - B GPIO10_IRQHandler - - PUBWEAK GPIO11_IRQHandler - SECTION .text:CODE:REORDER(1) -GPIO11_IRQHandler - B GPIO11_IRQHandler - - PUBWEAK GPIO12_IRQHandler - SECTION .text:CODE:REORDER(1) -GPIO12_IRQHandler - B GPIO12_IRQHandler - - PUBWEAK GPIO13_IRQHandler - SECTION .text:CODE:REORDER(1) -GPIO13_IRQHandler - B GPIO13_IRQHandler - - PUBWEAK GPIO14_IRQHandler - SECTION .text:CODE:REORDER(1) -GPIO14_IRQHandler - B GPIO14_IRQHandler - - PUBWEAK GPIO15_IRQHandler - SECTION .text:CODE:REORDER(1) -GPIO15_IRQHandler - B GPIO15_IRQHandler - - PUBWEAK GPIO16_IRQHandler - SECTION .text:CODE:REORDER(1) -GPIO16_IRQHandler - B GPIO16_IRQHandler - - PUBWEAK GPIO17_IRQHandler - SECTION .text:CODE:REORDER(1) -GPIO17_IRQHandler - B GPIO17_IRQHandler - - PUBWEAK GPIO18_IRQHandler - SECTION .text:CODE:REORDER(1) -GPIO18_IRQHandler - B GPIO18_IRQHandler - - PUBWEAK GPIO19_IRQHandler - SECTION .text:CODE:REORDER(1) -GPIO19_IRQHandler - B GPIO19_IRQHandler - - PUBWEAK GPIO20_IRQHandler - SECTION .text:CODE:REORDER(1) -GPIO20_IRQHandler - B GPIO20_IRQHandler - - PUBWEAK GPIO21_IRQHandler - SECTION .text:CODE:REORDER(1) -GPIO21_IRQHandler - B GPIO21_IRQHandler - - PUBWEAK GPIO22_IRQHandler - SECTION .text:CODE:REORDER(1) -GPIO22_IRQHandler - B GPIO22_IRQHandler - - PUBWEAK GPIO23_IRQHandler - SECTION .text:CODE:REORDER(1) -GPIO23_IRQHandler - B GPIO23_IRQHandler - - PUBWEAK GPIO24_IRQHandler - SECTION .text:CODE:REORDER(1) -GPIO24_IRQHandler - B GPIO24_IRQHandler - - PUBWEAK GPIO25_IRQHandler - SECTION .text:CODE:REORDER(1) -GPIO25_IRQHandler - B GPIO25_IRQHandler - - PUBWEAK GPIO26_IRQHandler - SECTION .text:CODE:REORDER(1) -GPIO26_IRQHandler - B GPIO26_IRQHandler - - PUBWEAK GPIO27_IRQHandler - SECTION .text:CODE:REORDER(1) -GPIO27_IRQHandler - B GPIO27_IRQHandler - - PUBWEAK GPIO28_IRQHandler - SECTION .text:CODE:REORDER(1) -GPIO28_IRQHandler - B GPIO28_IRQHandler - - PUBWEAK GPIO29_IRQHandler - SECTION .text:CODE:REORDER(1) -GPIO29_IRQHandler - B GPIO29_IRQHandler - - PUBWEAK GPIO30_IRQHandler - SECTION .text:CODE:REORDER(1) -GPIO30_IRQHandler - B GPIO30_IRQHandler - - PUBWEAK GPIO31_IRQHandler - SECTION .text:CODE:REORDER(1) -GPIO31_IRQHandler - B GPIO31_IRQHandler - - PUBWEAK ACE_PC0_Flag0_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_PC0_Flag0_IRQHandler - B ACE_PC0_Flag0_IRQHandler - - PUBWEAK ACE_PC0_Flag1_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_PC0_Flag1_IRQHandler - B ACE_PC0_Flag1_IRQHandler - - PUBWEAK ACE_PC0_Flag2_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_PC0_Flag2_IRQHandler - B ACE_PC0_Flag2_IRQHandler - - PUBWEAK ACE_PC0_Flag3_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_PC0_Flag3_IRQHandler - B ACE_PC0_Flag3_IRQHandler - - PUBWEAK ACE_PC1_Flag0_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_PC1_Flag0_IRQHandler - B ACE_PC1_Flag0_IRQHandler - - PUBWEAK ACE_PC1_Flag1_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_PC1_Flag1_IRQHandler - B ACE_PC1_Flag1_IRQHandler - - PUBWEAK ACE_PC1_Flag2_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_PC1_Flag2_IRQHandler - B ACE_PC1_Flag2_IRQHandler - - PUBWEAK ACE_PC1_Flag3_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_PC1_Flag3_IRQHandler - B ACE_PC1_Flag3_IRQHandler - - PUBWEAK ACE_PC2_Flag0_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_PC2_Flag0_IRQHandler - B ACE_PC2_Flag0_IRQHandler - - PUBWEAK ACE_PC2_Flag1_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_PC2_Flag1_IRQHandler - B ACE_PC2_Flag1_IRQHandler - - PUBWEAK ACE_PC2_Flag2_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_PC2_Flag2_IRQHandler - B ACE_PC2_Flag2_IRQHandler - - PUBWEAK ACE_PC2_Flag3_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_PC2_Flag3_IRQHandler - B ACE_PC2_Flag3_IRQHandler - - PUBWEAK ACE_ADC0_DataValid_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_ADC0_DataValid_IRQHandler - B ACE_ADC0_DataValid_IRQHandler - - PUBWEAK ACE_ADC1_DataValid_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_ADC1_DataValid_IRQHandler - B ACE_ADC1_DataValid_IRQHandler - - PUBWEAK ACE_ADC2_DataValid_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_ADC2_DataValid_IRQHandler - B ACE_ADC2_DataValid_IRQHandler - - PUBWEAK ACE_ADC0_CalDone_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_ADC0_CalDone_IRQHandler - B ACE_ADC0_CalDone_IRQHandler - - PUBWEAK ACE_ADC1_CalDone_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_ADC1_CalDone_IRQHandler - B ACE_ADC1_CalDone_IRQHandler - - PUBWEAK ACE_ADC2_CalDone_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_ADC2_CalDone_IRQHandler - B ACE_ADC2_CalDone_IRQHandler - - PUBWEAK ACE_ADC0_CalStart_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_ADC0_CalStart_IRQHandler - B ACE_ADC0_CalStart_IRQHandler - - PUBWEAK ACE_ADC1_CalStart_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_ADC1_CalStart_IRQHandler - B ACE_ADC1_CalStart_IRQHandler - - PUBWEAK ACE_ADC2_CalStart_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_ADC2_CalStart_IRQHandler - B ACE_ADC2_CalStart_IRQHandler - - PUBWEAK ACE_Comp0_Fall_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_Comp0_Fall_IRQHandler - B ACE_Comp0_Fall_IRQHandler - - PUBWEAK ACE_Comp1_Fall_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_Comp1_Fall_IRQHandler - B ACE_Comp1_Fall_IRQHandler - - PUBWEAK ACE_Comp2_Fall_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_Comp2_Fall_IRQHandler - B ACE_Comp2_Fall_IRQHandler - - PUBWEAK ACE_Comp3_Fall_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_Comp3_Fall_IRQHandler - B ACE_Comp3_Fall_IRQHandler - - PUBWEAK ACE_Comp4_Fall_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_Comp4_Fall_IRQHandler - B ACE_Comp4_Fall_IRQHandler - - PUBWEAK ACE_Comp5_Fall_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_Comp5_Fall_IRQHandler - B ACE_Comp5_Fall_IRQHandler - - PUBWEAK ACE_Comp6_Fall_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_Comp6_Fall_IRQHandler - B ACE_Comp6_Fall_IRQHandler - - PUBWEAK ACE_Comp7_Fall_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_Comp7_Fall_IRQHandler - B ACE_Comp7_Fall_IRQHandler - - PUBWEAK ACE_Comp8_Fall_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_Comp8_Fall_IRQHandler - B ACE_Comp8_Fall_IRQHandler - - PUBWEAK ACE_Comp9_Fall_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_Comp9_Fall_IRQHandler - B ACE_Comp9_Fall_IRQHandler - - PUBWEAK ACE_Comp10_Fall_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_Comp10_Fall_IRQHandler - B ACE_Comp10_Fall_IRQHandler - - PUBWEAK ACE_Comp11_Fall_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_Comp11_Fall_IRQHandler - B ACE_Comp11_Fall_IRQHandler - - PUBWEAK ACE_Comp0_Rise_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_Comp0_Rise_IRQHandler - B ACE_Comp0_Rise_IRQHandler - - PUBWEAK ACE_Comp1_Rise_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_Comp1_Rise_IRQHandler - B ACE_Comp1_Rise_IRQHandler - - PUBWEAK ACE_Comp2_Rise_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_Comp2_Rise_IRQHandler - B ACE_Comp2_Rise_IRQHandler - - PUBWEAK ACE_Comp3_Rise_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_Comp3_Rise_IRQHandler - B ACE_Comp3_Rise_IRQHandler - - PUBWEAK ACE_Comp4_Rise_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_Comp4_Rise_IRQHandler - B ACE_Comp4_Rise_IRQHandler - - PUBWEAK ACE_Comp5_Rise_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_Comp5_Rise_IRQHandler - B ACE_Comp5_Rise_IRQHandler - - PUBWEAK ACE_Comp6_Rise_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_Comp6_Rise_IRQHandler - B ACE_Comp6_Rise_IRQHandler - - PUBWEAK ACE_Comp7_Rise_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_Comp7_Rise_IRQHandler - B ACE_Comp7_Rise_IRQHandler - - PUBWEAK ACE_Comp8_Rise_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_Comp8_Rise_IRQHandler - B ACE_Comp8_Rise_IRQHandler - - PUBWEAK ACE_Comp9_Rise_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_Comp9_Rise_IRQHandler - B ACE_Comp9_Rise_IRQHandler - - PUBWEAK ACE_Comp10_Rise_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_Comp10_Rise_IRQHandler - B ACE_Comp10_Rise_IRQHandler - - PUBWEAK ACE_Comp11_Rise_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_Comp11_Rise_IRQHandler - B ACE_Comp11_Rise_IRQHandler - - PUBWEAK ACE_ADC0_FifoFull_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_ADC0_FifoFull_IRQHandler - B ACE_ADC0_FifoFull_IRQHandler - - PUBWEAK ACE_ADC0_FifoAFull_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_ADC0_FifoAFull_IRQHandler - B ACE_ADC0_FifoAFull_IRQHandler - - PUBWEAK ACE_ADC0_FifoEmpty_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_ADC0_FifoEmpty_IRQHandler - B ACE_ADC0_FifoEmpty_IRQHandler - - PUBWEAK ACE_ADC1_FifoFull_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_ADC1_FifoFull_IRQHandler - B ACE_ADC1_FifoFull_IRQHandler - - PUBWEAK ACE_ADC1_FifoAFull_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_ADC1_FifoAFull_IRQHandler - B ACE_ADC1_FifoAFull_IRQHandler - - PUBWEAK ACE_ADC1_FifoEmpty_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_ADC1_FifoEmpty_IRQHandler - B ACE_ADC1_FifoEmpty_IRQHandler - - PUBWEAK ACE_ADC2_FifoFull_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_ADC2_FifoFull_IRQHandler - B ACE_ADC2_FifoFull_IRQHandler - - PUBWEAK ACE_ADC2_FifoAFull_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_ADC2_FifoAFull_IRQHandler - B ACE_ADC2_FifoAFull_IRQHandler - - PUBWEAK ACE_ADC2_FifoEmpty_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_ADC2_FifoEmpty_IRQHandler - B ACE_ADC2_FifoEmpty_IRQHandler - - PUBWEAK ACE_PPE_Flag0_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_PPE_Flag0_IRQHandler - B ACE_PPE_Flag0_IRQHandler - - PUBWEAK ACE_PPE_Flag1_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_PPE_Flag1_IRQHandler - B ACE_PPE_Flag1_IRQHandler - - PUBWEAK ACE_PPE_Flag2_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_PPE_Flag2_IRQHandler - B ACE_PPE_Flag2_IRQHandler - - PUBWEAK ACE_PPE_Flag3_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_PPE_Flag3_IRQHandler - B ACE_PPE_Flag3_IRQHandler - - PUBWEAK ACE_PPE_Flag4_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_PPE_Flag4_IRQHandler - B ACE_PPE_Flag4_IRQHandler - - PUBWEAK ACE_PPE_Flag5_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_PPE_Flag5_IRQHandler - B ACE_PPE_Flag5_IRQHandler - - PUBWEAK ACE_PPE_Flag6_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_PPE_Flag6_IRQHandler - B ACE_PPE_Flag6_IRQHandler - - PUBWEAK ACE_PPE_Flag7_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_PPE_Flag7_IRQHandler - B ACE_PPE_Flag7_IRQHandler - - PUBWEAK ACE_PPE_Flag8_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_PPE_Flag8_IRQHandler - B ACE_PPE_Flag8_IRQHandler - - PUBWEAK ACE_PPE_Flag9_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_PPE_Flag9_IRQHandler - B ACE_PPE_Flag9_IRQHandler - - PUBWEAK ACE_PPE_Flag10_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_PPE_Flag10_IRQHandler - B ACE_PPE_Flag10_IRQHandler - - PUBWEAK ACE_PPE_Flag11_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_PPE_Flag11_IRQHandler - B ACE_PPE_Flag11_IRQHandler - - PUBWEAK ACE_PPE_Flag12_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_PPE_Flag12_IRQHandler - B ACE_PPE_Flag12_IRQHandler - - PUBWEAK ACE_PPE_Flag13_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_PPE_Flag13_IRQHandler - B ACE_PPE_Flag13_IRQHandler - - PUBWEAK ACE_PPE_Flag14_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_PPE_Flag14_IRQHandler - B ACE_PPE_Flag14_IRQHandler - - PUBWEAK ACE_PPE_Flag15_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_PPE_Flag15_IRQHandler - B ACE_PPE_Flag15_IRQHandler - - PUBWEAK ACE_PPE_Flag16_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_PPE_Flag16_IRQHandler - B ACE_PPE_Flag16_IRQHandler - - PUBWEAK ACE_PPE_Flag17_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_PPE_Flag17_IRQHandler - B ACE_PPE_Flag17_IRQHandler - - PUBWEAK ACE_PPE_Flag18_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_PPE_Flag18_IRQHandler - B ACE_PPE_Flag18_IRQHandler - - PUBWEAK ACE_PPE_Flag19_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_PPE_Flag19_IRQHandler - B ACE_PPE_Flag19_IRQHandler - - PUBWEAK ACE_PPE_Flag20_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_PPE_Flag20_IRQHandler - B ACE_PPE_Flag20_IRQHandler - - PUBWEAK ACE_PPE_Flag21_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_PPE_Flag21_IRQHandler - B ACE_PPE_Flag21_IRQHandler - - PUBWEAK ACE_PPE_Flag22_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_PPE_Flag22_IRQHandler - B ACE_PPE_Flag22_IRQHandler - - PUBWEAK ACE_PPE_Flag23_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_PPE_Flag23_IRQHandler - B ACE_PPE_Flag23_IRQHandler - - PUBWEAK ACE_PPE_Flag24_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_PPE_Flag24_IRQHandler - B ACE_PPE_Flag24_IRQHandler - - PUBWEAK ACE_PPE_Flag25_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_PPE_Flag25_IRQHandler - B ACE_PPE_Flag25_IRQHandler - - PUBWEAK ACE_PPE_Flag26_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_PPE_Flag26_IRQHandler - B ACE_PPE_Flag26_IRQHandler - - PUBWEAK ACE_PPE_Flag27_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_PPE_Flag27_IRQHandler - B ACE_PPE_Flag27_IRQHandler - - PUBWEAK ACE_PPE_Flag28_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_PPE_Flag28_IRQHandler - B ACE_PPE_Flag28_IRQHandler - - PUBWEAK ACE_PPE_Flag29_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_PPE_Flag29_IRQHandler - B ACE_PPE_Flag29_IRQHandler - - PUBWEAK ACE_PPE_Flag30_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_PPE_Flag30_IRQHandler - B ACE_PPE_Flag30_IRQHandler - - PUBWEAK ACE_PPE_Flag31_IRQHandler - SECTION .text:CODE:REORDER(1) -ACE_PPE_Flag31_IRQHandler - B ACE_PPE_Flag31_IRQHandler - - END diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/CMSIS/startup_keil/core_cm3.h b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/CMSIS/startup_keil/core_cm3.h deleted file mode 100644 index e0565d7d4..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/CMSIS/startup_keil/core_cm3.h +++ /dev/null @@ -1,1818 +0,0 @@ -/**************************************************************************//** - * @file core_cm3.h - * @brief CMSIS Cortex-M3 Core Peripheral Access Layer Header File - * @version V1.30 - * @date 30. October 2009 - * - * @note - * Copyright (C) 2009 ARM Limited. All rights reserved. - * - * @par - * ARM Limited (ARM) is supplying this software for use with Cortex-M - * processor based microcontrollers. This file can be freely distributed - * within development tools that are supporting such ARM based processors. - * - * @par - * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED - * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. - * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR - * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. - * - ******************************************************************************/ - -#ifndef __CM3_CORE_H__ -#define __CM3_CORE_H__ - -/** @addtogroup CMSIS_CM3_core_LintCinfiguration CMSIS CM3 Core Lint Configuration - * - * List of Lint messages which will be suppressed and not shown: - * - Error 10: \n - * register uint32_t __regBasePri __asm("basepri"); \n - * Error 10: Expecting ';' - * . - * - Error 530: \n - * return(__regBasePri); \n - * Warning 530: Symbol '__regBasePri' (line 264) not initialized - * . - * - Error 550: \n - * __regBasePri = (basePri & 0x1ff); \n - * Warning 550: Symbol '__regBasePri' (line 271) not accessed - * . - * - Error 754: \n - * uint32_t RESERVED0[24]; \n - * Info 754: local structure member '' (line 109, file ./cm3_core.h) not referenced - * . - * - Error 750: \n - * #define __CM3_CORE_H__ \n - * Info 750: local macro '__CM3_CORE_H__' (line 43, file./cm3_core.h) not referenced - * . - * - Error 528: \n - * static __INLINE void NVIC_DisableIRQ(uint32_t IRQn) \n - * Warning 528: Symbol 'NVIC_DisableIRQ(unsigned int)' (line 419, file ./cm3_core.h) not referenced - * . - * - Error 751: \n - * } InterruptType_Type; \n - * Info 751: local typedef 'InterruptType_Type' (line 170, file ./cm3_core.h) not referenced - * . - * Note: To re-enable a Message, insert a space before 'lint' * - * - */ - -/*lint -save */ -/*lint -e10 */ -/*lint -e530 */ -/*lint -e550 */ -/*lint -e754 */ -/*lint -e750 */ -/*lint -e528 */ -/*lint -e751 */ - - -/** @addtogroup CMSIS_CM3_core_definitions CM3 Core Definitions - This file defines all structures and symbols for CMSIS core: - - CMSIS version number - - Cortex-M core registers and bitfields - - Cortex-M core peripheral base address - @{ - */ - -#ifdef __cplusplus - extern "C" { -#endif - -#define __CM3_CMSIS_VERSION_MAIN (0x01) /*!< [31:16] CMSIS HAL main version */ -#define __CM3_CMSIS_VERSION_SUB (0x30) /*!< [15:0] CMSIS HAL sub version */ -#define __CM3_CMSIS_VERSION ((__CM3_CMSIS_VERSION_MAIN << 16) | __CM3_CMSIS_VERSION_SUB) /*!< CMSIS HAL version number */ - -#define __CORTEX_M (0x03) /*!< Cortex core */ - -#include /* Include standard types */ - -#if defined (__ICCARM__) - #include /* IAR Intrinsics */ -#endif - - -#ifndef __NVIC_PRIO_BITS - #define __NVIC_PRIO_BITS 4 /*!< standard definition for NVIC Priority Bits */ -#endif - - - - -/** - * IO definitions - * - * define access restrictions to peripheral registers - */ - -#ifdef __cplusplus - #define __I volatile /*!< defines 'read only' permissions */ -#else - #define __I volatile const /*!< defines 'read only' permissions */ -#endif -#define __O volatile /*!< defines 'write only' permissions */ -#define __IO volatile /*!< defines 'read / write' permissions */ - - - -/******************************************************************************* - * Register Abstraction - ******************************************************************************/ -/** @addtogroup CMSIS_CM3_core_register CMSIS CM3 Core Register - @{ -*/ - - -/** @addtogroup CMSIS_CM3_NVIC CMSIS CM3 NVIC - memory mapped structure for Nested Vectored Interrupt Controller (NVIC) - @{ - */ -typedef struct -{ - __IO uint32_t ISER[8]; /*!< Offset: 0x000 Interrupt Set Enable Register */ - uint32_t RESERVED0[24]; - __IO uint32_t ICER[8]; /*!< Offset: 0x080 Interrupt Clear Enable Register */ - uint32_t RSERVED1[24]; - __IO uint32_t ISPR[8]; /*!< Offset: 0x100 Interrupt Set Pending Register */ - uint32_t RESERVED2[24]; - __IO uint32_t ICPR[8]; /*!< Offset: 0x180 Interrupt Clear Pending Register */ - uint32_t RESERVED3[24]; - __IO uint32_t IABR[8]; /*!< Offset: 0x200 Interrupt Active bit Register */ - uint32_t RESERVED4[56]; - __IO uint8_t IP[240]; /*!< Offset: 0x300 Interrupt Priority Register (8Bit wide) */ - uint32_t RESERVED5[644]; - __O uint32_t STIR; /*!< Offset: 0xE00 Software Trigger Interrupt Register */ -} NVIC_Type; -/*@}*/ /* end of group CMSIS_CM3_NVIC */ - - -/** @addtogroup CMSIS_CM3_SCB CMSIS CM3 SCB - memory mapped structure for System Control Block (SCB) - @{ - */ -typedef struct -{ - __I uint32_t CPUID; /*!< Offset: 0x00 CPU ID Base Register */ - __IO uint32_t ICSR; /*!< Offset: 0x04 Interrupt Control State Register */ - __IO uint32_t VTOR; /*!< Offset: 0x08 Vector Table Offset Register */ - __IO uint32_t AIRCR; /*!< Offset: 0x0C Application Interrupt / Reset Control Register */ - __IO uint32_t SCR; /*!< Offset: 0x10 System Control Register */ - __IO uint32_t CCR; /*!< Offset: 0x14 Configuration Control Register */ - __IO uint8_t SHP[12]; /*!< Offset: 0x18 System Handlers Priority Registers (4-7, 8-11, 12-15) */ - __IO uint32_t SHCSR; /*!< Offset: 0x24 System Handler Control and State Register */ - __IO uint32_t CFSR; /*!< Offset: 0x28 Configurable Fault Status Register */ - __IO uint32_t HFSR; /*!< Offset: 0x2C Hard Fault Status Register */ - __IO uint32_t DFSR; /*!< Offset: 0x30 Debug Fault Status Register */ - __IO uint32_t MMFAR; /*!< Offset: 0x34 Mem Manage Address Register */ - __IO uint32_t BFAR; /*!< Offset: 0x38 Bus Fault Address Register */ - __IO uint32_t AFSR; /*!< Offset: 0x3C Auxiliary Fault Status Register */ - __I uint32_t PFR[2]; /*!< Offset: 0x40 Processor Feature Register */ - __I uint32_t DFR; /*!< Offset: 0x48 Debug Feature Register */ - __I uint32_t ADR; /*!< Offset: 0x4C Auxiliary Feature Register */ - __I uint32_t MMFR[4]; /*!< Offset: 0x50 Memory Model Feature Register */ - __I uint32_t ISAR[5]; /*!< Offset: 0x60 ISA Feature Register */ -} SCB_Type; - -/* SCB CPUID Register Definitions */ -#define SCB_CPUID_IMPLEMENTER_Pos 24 /*!< SCB CPUID: IMPLEMENTER Position */ -#define SCB_CPUID_IMPLEMENTER_Msk (0xFFul << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */ - -#define SCB_CPUID_VARIANT_Pos 20 /*!< SCB CPUID: VARIANT Position */ -#define SCB_CPUID_VARIANT_Msk (0xFul << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */ - -#define SCB_CPUID_PARTNO_Pos 4 /*!< SCB CPUID: PARTNO Position */ -#define SCB_CPUID_PARTNO_Msk (0xFFFul << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */ - -#define SCB_CPUID_REVISION_Pos 0 /*!< SCB CPUID: REVISION Position */ -#define SCB_CPUID_REVISION_Msk (0xFul << SCB_CPUID_REVISION_Pos) /*!< SCB CPUID: REVISION Mask */ - -/* SCB Interrupt Control State Register Definitions */ -#define SCB_ICSR_NMIPENDSET_Pos 31 /*!< SCB ICSR: NMIPENDSET Position */ -#define SCB_ICSR_NMIPENDSET_Msk (1ul << SCB_ICSR_NMIPENDSET_Pos) /*!< SCB ICSR: NMIPENDSET Mask */ - -#define SCB_ICSR_PENDSVSET_Pos 28 /*!< SCB ICSR: PENDSVSET Position */ -#define SCB_ICSR_PENDSVSET_Msk (1ul << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */ - -#define SCB_ICSR_PENDSVCLR_Pos 27 /*!< SCB ICSR: PENDSVCLR Position */ -#define SCB_ICSR_PENDSVCLR_Msk (1ul << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */ - -#define SCB_ICSR_PENDSTSET_Pos 26 /*!< SCB ICSR: PENDSTSET Position */ -#define SCB_ICSR_PENDSTSET_Msk (1ul << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */ - -#define SCB_ICSR_PENDSTCLR_Pos 25 /*!< SCB ICSR: PENDSTCLR Position */ -#define SCB_ICSR_PENDSTCLR_Msk (1ul << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */ - -#define SCB_ICSR_ISRPREEMPT_Pos 23 /*!< SCB ICSR: ISRPREEMPT Position */ -#define SCB_ICSR_ISRPREEMPT_Msk (1ul << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */ - -#define SCB_ICSR_ISRPENDING_Pos 22 /*!< SCB ICSR: ISRPENDING Position */ -#define SCB_ICSR_ISRPENDING_Msk (1ul << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */ - -#define SCB_ICSR_VECTPENDING_Pos 12 /*!< SCB ICSR: VECTPENDING Position */ -#define SCB_ICSR_VECTPENDING_Msk (0x1FFul << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */ - -#define SCB_ICSR_RETTOBASE_Pos 11 /*!< SCB ICSR: RETTOBASE Position */ -#define SCB_ICSR_RETTOBASE_Msk (1ul << SCB_ICSR_RETTOBASE_Pos) /*!< SCB ICSR: RETTOBASE Mask */ - -#define SCB_ICSR_VECTACTIVE_Pos 0 /*!< SCB ICSR: VECTACTIVE Position */ -#define SCB_ICSR_VECTACTIVE_Msk (0x1FFul << SCB_ICSR_VECTACTIVE_Pos) /*!< SCB ICSR: VECTACTIVE Mask */ - -/* SCB Interrupt Control State Register Definitions */ -#define SCB_VTOR_TBLBASE_Pos 29 /*!< SCB VTOR: TBLBASE Position */ -#define SCB_VTOR_TBLBASE_Msk (0x1FFul << SCB_VTOR_TBLBASE_Pos) /*!< SCB VTOR: TBLBASE Mask */ - -#define SCB_VTOR_TBLOFF_Pos 7 /*!< SCB VTOR: TBLOFF Position */ -#define SCB_VTOR_TBLOFF_Msk (0x3FFFFFul << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF Mask */ - -/* SCB Application Interrupt and Reset Control Register Definitions */ -#define SCB_AIRCR_VECTKEY_Pos 16 /*!< SCB AIRCR: VECTKEY Position */ -#define SCB_AIRCR_VECTKEY_Msk (0xFFFFul << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */ - -#define SCB_AIRCR_VECTKEYSTAT_Pos 16 /*!< SCB AIRCR: VECTKEYSTAT Position */ -#define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFul << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */ - -#define SCB_AIRCR_ENDIANESS_Pos 15 /*!< SCB AIRCR: ENDIANESS Position */ -#define SCB_AIRCR_ENDIANESS_Msk (1ul << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */ - -#define SCB_AIRCR_PRIGROUP_Pos 8 /*!< SCB AIRCR: PRIGROUP Position */ -#define SCB_AIRCR_PRIGROUP_Msk (7ul << SCB_AIRCR_PRIGROUP_Pos) /*!< SCB AIRCR: PRIGROUP Mask */ - -#define SCB_AIRCR_SYSRESETREQ_Pos 2 /*!< SCB AIRCR: SYSRESETREQ Position */ -#define SCB_AIRCR_SYSRESETREQ_Msk (1ul << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */ - -#define SCB_AIRCR_VECTCLRACTIVE_Pos 1 /*!< SCB AIRCR: VECTCLRACTIVE Position */ -#define SCB_AIRCR_VECTCLRACTIVE_Msk (1ul << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */ - -#define SCB_AIRCR_VECTRESET_Pos 0 /*!< SCB AIRCR: VECTRESET Position */ -#define SCB_AIRCR_VECTRESET_Msk (1ul << SCB_AIRCR_VECTRESET_Pos) /*!< SCB AIRCR: VECTRESET Mask */ - -/* SCB System Control Register Definitions */ -#define SCB_SCR_SEVONPEND_Pos 4 /*!< SCB SCR: SEVONPEND Position */ -#define SCB_SCR_SEVONPEND_Msk (1ul << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */ - -#define SCB_SCR_SLEEPDEEP_Pos 2 /*!< SCB SCR: SLEEPDEEP Position */ -#define SCB_SCR_SLEEPDEEP_Msk (1ul << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */ - -#define SCB_SCR_SLEEPONEXIT_Pos 1 /*!< SCB SCR: SLEEPONEXIT Position */ -#define SCB_SCR_SLEEPONEXIT_Msk (1ul << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */ - -/* SCB Configuration Control Register Definitions */ -#define SCB_CCR_STKALIGN_Pos 9 /*!< SCB CCR: STKALIGN Position */ -#define SCB_CCR_STKALIGN_Msk (1ul << SCB_CCR_STKALIGN_Pos) /*!< SCB CCR: STKALIGN Mask */ - -#define SCB_CCR_BFHFNMIGN_Pos 8 /*!< SCB CCR: BFHFNMIGN Position */ -#define SCB_CCR_BFHFNMIGN_Msk (1ul << SCB_CCR_BFHFNMIGN_Pos) /*!< SCB CCR: BFHFNMIGN Mask */ - -#define SCB_CCR_DIV_0_TRP_Pos 4 /*!< SCB CCR: DIV_0_TRP Position */ -#define SCB_CCR_DIV_0_TRP_Msk (1ul << SCB_CCR_DIV_0_TRP_Pos) /*!< SCB CCR: DIV_0_TRP Mask */ - -#define SCB_CCR_UNALIGN_TRP_Pos 3 /*!< SCB CCR: UNALIGN_TRP Position */ -#define SCB_CCR_UNALIGN_TRP_Msk (1ul << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */ - -#define SCB_CCR_USERSETMPEND_Pos 1 /*!< SCB CCR: USERSETMPEND Position */ -#define SCB_CCR_USERSETMPEND_Msk (1ul << SCB_CCR_USERSETMPEND_Pos) /*!< SCB CCR: USERSETMPEND Mask */ - -#define SCB_CCR_NONBASETHRDENA_Pos 0 /*!< SCB CCR: NONBASETHRDENA Position */ -#define SCB_CCR_NONBASETHRDENA_Msk (1ul << SCB_CCR_NONBASETHRDENA_Pos) /*!< SCB CCR: NONBASETHRDENA Mask */ - -/* SCB System Handler Control and State Register Definitions */ -#define SCB_SHCSR_USGFAULTENA_Pos 18 /*!< SCB SHCSR: USGFAULTENA Position */ -#define SCB_SHCSR_USGFAULTENA_Msk (1ul << SCB_SHCSR_USGFAULTENA_Pos) /*!< SCB SHCSR: USGFAULTENA Mask */ - -#define SCB_SHCSR_BUSFAULTENA_Pos 17 /*!< SCB SHCSR: BUSFAULTENA Position */ -#define SCB_SHCSR_BUSFAULTENA_Msk (1ul << SCB_SHCSR_BUSFAULTENA_Pos) /*!< SCB SHCSR: BUSFAULTENA Mask */ - -#define SCB_SHCSR_MEMFAULTENA_Pos 16 /*!< SCB SHCSR: MEMFAULTENA Position */ -#define SCB_SHCSR_MEMFAULTENA_Msk (1ul << SCB_SHCSR_MEMFAULTENA_Pos) /*!< SCB SHCSR: MEMFAULTENA Mask */ - -#define SCB_SHCSR_SVCALLPENDED_Pos 15 /*!< SCB SHCSR: SVCALLPENDED Position */ -#define SCB_SHCSR_SVCALLPENDED_Msk (1ul << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ - -#define SCB_SHCSR_BUSFAULTPENDED_Pos 14 /*!< SCB SHCSR: BUSFAULTPENDED Position */ -#define SCB_SHCSR_BUSFAULTPENDED_Msk (1ul << SCB_SHCSR_BUSFAULTPENDED_Pos) /*!< SCB SHCSR: BUSFAULTPENDED Mask */ - -#define SCB_SHCSR_MEMFAULTPENDED_Pos 13 /*!< SCB SHCSR: MEMFAULTPENDED Position */ -#define SCB_SHCSR_MEMFAULTPENDED_Msk (1ul << SCB_SHCSR_MEMFAULTPENDED_Pos) /*!< SCB SHCSR: MEMFAULTPENDED Mask */ - -#define SCB_SHCSR_USGFAULTPENDED_Pos 12 /*!< SCB SHCSR: USGFAULTPENDED Position */ -#define SCB_SHCSR_USGFAULTPENDED_Msk (1ul << SCB_SHCSR_USGFAULTPENDED_Pos) /*!< SCB SHCSR: USGFAULTPENDED Mask */ - -#define SCB_SHCSR_SYSTICKACT_Pos 11 /*!< SCB SHCSR: SYSTICKACT Position */ -#define SCB_SHCSR_SYSTICKACT_Msk (1ul << SCB_SHCSR_SYSTICKACT_Pos) /*!< SCB SHCSR: SYSTICKACT Mask */ - -#define SCB_SHCSR_PENDSVACT_Pos 10 /*!< SCB SHCSR: PENDSVACT Position */ -#define SCB_SHCSR_PENDSVACT_Msk (1ul << SCB_SHCSR_PENDSVACT_Pos) /*!< SCB SHCSR: PENDSVACT Mask */ - -#define SCB_SHCSR_MONITORACT_Pos 8 /*!< SCB SHCSR: MONITORACT Position */ -#define SCB_SHCSR_MONITORACT_Msk (1ul << SCB_SHCSR_MONITORACT_Pos) /*!< SCB SHCSR: MONITORACT Mask */ - -#define SCB_SHCSR_SVCALLACT_Pos 7 /*!< SCB SHCSR: SVCALLACT Position */ -#define SCB_SHCSR_SVCALLACT_Msk (1ul << SCB_SHCSR_SVCALLACT_Pos) /*!< SCB SHCSR: SVCALLACT Mask */ - -#define SCB_SHCSR_USGFAULTACT_Pos 3 /*!< SCB SHCSR: USGFAULTACT Position */ -#define SCB_SHCSR_USGFAULTACT_Msk (1ul << SCB_SHCSR_USGFAULTACT_Pos) /*!< SCB SHCSR: USGFAULTACT Mask */ - -#define SCB_SHCSR_BUSFAULTACT_Pos 1 /*!< SCB SHCSR: BUSFAULTACT Position */ -#define SCB_SHCSR_BUSFAULTACT_Msk (1ul << SCB_SHCSR_BUSFAULTACT_Pos) /*!< SCB SHCSR: BUSFAULTACT Mask */ - -#define SCB_SHCSR_MEMFAULTACT_Pos 0 /*!< SCB SHCSR: MEMFAULTACT Position */ -#define SCB_SHCSR_MEMFAULTACT_Msk (1ul << SCB_SHCSR_MEMFAULTACT_Pos) /*!< SCB SHCSR: MEMFAULTACT Mask */ - -/* SCB Configurable Fault Status Registers Definitions */ -#define SCB_CFSR_USGFAULTSR_Pos 16 /*!< SCB CFSR: Usage Fault Status Register Position */ -#define SCB_CFSR_USGFAULTSR_Msk (0xFFFFul << SCB_CFSR_USGFAULTSR_Pos) /*!< SCB CFSR: Usage Fault Status Register Mask */ - -#define SCB_CFSR_BUSFAULTSR_Pos 8 /*!< SCB CFSR: Bus Fault Status Register Position */ -#define SCB_CFSR_BUSFAULTSR_Msk (0xFFul << SCB_CFSR_BUSFAULTSR_Pos) /*!< SCB CFSR: Bus Fault Status Register Mask */ - -#define SCB_CFSR_MEMFAULTSR_Pos 0 /*!< SCB CFSR: Memory Manage Fault Status Register Position */ -#define SCB_CFSR_MEMFAULTSR_Msk (0xFFul << SCB_CFSR_MEMFAULTSR_Pos) /*!< SCB CFSR: Memory Manage Fault Status Register Mask */ - -/* SCB Hard Fault Status Registers Definitions */ -#define SCB_HFSR_DEBUGEVT_Pos 31 /*!< SCB HFSR: DEBUGEVT Position */ -#define SCB_HFSR_DEBUGEVT_Msk (1ul << SCB_HFSR_DEBUGEVT_Pos) /*!< SCB HFSR: DEBUGEVT Mask */ - -#define SCB_HFSR_FORCED_Pos 30 /*!< SCB HFSR: FORCED Position */ -#define SCB_HFSR_FORCED_Msk (1ul << SCB_HFSR_FORCED_Pos) /*!< SCB HFSR: FORCED Mask */ - -#define SCB_HFSR_VECTTBL_Pos 1 /*!< SCB HFSR: VECTTBL Position */ -#define SCB_HFSR_VECTTBL_Msk (1ul << SCB_HFSR_VECTTBL_Pos) /*!< SCB HFSR: VECTTBL Mask */ - -/* SCB Debug Fault Status Register Definitions */ -#define SCB_DFSR_EXTERNAL_Pos 4 /*!< SCB DFSR: EXTERNAL Position */ -#define SCB_DFSR_EXTERNAL_Msk (1ul << SCB_DFSR_EXTERNAL_Pos) /*!< SCB DFSR: EXTERNAL Mask */ - -#define SCB_DFSR_VCATCH_Pos 3 /*!< SCB DFSR: VCATCH Position */ -#define SCB_DFSR_VCATCH_Msk (1ul << SCB_DFSR_VCATCH_Pos) /*!< SCB DFSR: VCATCH Mask */ - -#define SCB_DFSR_DWTTRAP_Pos 2 /*!< SCB DFSR: DWTTRAP Position */ -#define SCB_DFSR_DWTTRAP_Msk (1ul << SCB_DFSR_DWTTRAP_Pos) /*!< SCB DFSR: DWTTRAP Mask */ - -#define SCB_DFSR_BKPT_Pos 1 /*!< SCB DFSR: BKPT Position */ -#define SCB_DFSR_BKPT_Msk (1ul << SCB_DFSR_BKPT_Pos) /*!< SCB DFSR: BKPT Mask */ - -#define SCB_DFSR_HALTED_Pos 0 /*!< SCB DFSR: HALTED Position */ -#define SCB_DFSR_HALTED_Msk (1ul << SCB_DFSR_HALTED_Pos) /*!< SCB DFSR: HALTED Mask */ -/*@}*/ /* end of group CMSIS_CM3_SCB */ - - -/** @addtogroup CMSIS_CM3_SysTick CMSIS CM3 SysTick - memory mapped structure for SysTick - @{ - */ -typedef struct -{ - __IO uint32_t CTRL; /*!< Offset: 0x00 SysTick Control and Status Register */ - __IO uint32_t LOAD; /*!< Offset: 0x04 SysTick Reload Value Register */ - __IO uint32_t VAL; /*!< Offset: 0x08 SysTick Current Value Register */ - __I uint32_t CALIB; /*!< Offset: 0x0C SysTick Calibration Register */ -} SysTick_Type; - -/* SysTick Control / Status Register Definitions */ -#define SysTick_CTRL_COUNTFLAG_Pos 16 /*!< SysTick CTRL: COUNTFLAG Position */ -#define SysTick_CTRL_COUNTFLAG_Msk (1ul << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */ - -#define SysTick_CTRL_CLKSOURCE_Pos 2 /*!< SysTick CTRL: CLKSOURCE Position */ -#define SysTick_CTRL_CLKSOURCE_Msk (1ul << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */ - -#define SysTick_CTRL_TICKINT_Pos 1 /*!< SysTick CTRL: TICKINT Position */ -#define SysTick_CTRL_TICKINT_Msk (1ul << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */ - -#define SysTick_CTRL_ENABLE_Pos 0 /*!< SysTick CTRL: ENABLE Position */ -#define SysTick_CTRL_ENABLE_Msk (1ul << SysTick_CTRL_ENABLE_Pos) /*!< SysTick CTRL: ENABLE Mask */ - -/* SysTick Reload Register Definitions */ -#define SysTick_LOAD_RELOAD_Pos 0 /*!< SysTick LOAD: RELOAD Position */ -#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFul << SysTick_LOAD_RELOAD_Pos) /*!< SysTick LOAD: RELOAD Mask */ - -/* SysTick Current Register Definitions */ -#define SysTick_VAL_CURRENT_Pos 0 /*!< SysTick VAL: CURRENT Position */ -#define SysTick_VAL_CURRENT_Msk (0xFFFFFFul << SysTick_VAL_CURRENT_Pos) /*!< SysTick VAL: CURRENT Mask */ - -/* SysTick Calibration Register Definitions */ -#define SysTick_CALIB_NOREF_Pos 31 /*!< SysTick CALIB: NOREF Position */ -#define SysTick_CALIB_NOREF_Msk (1ul << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */ - -#define SysTick_CALIB_SKEW_Pos 30 /*!< SysTick CALIB: SKEW Position */ -#define SysTick_CALIB_SKEW_Msk (1ul << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */ - -#define SysTick_CALIB_TENMS_Pos 0 /*!< SysTick CALIB: TENMS Position */ -#define SysTick_CALIB_TENMS_Msk (0xFFFFFFul << SysTick_VAL_CURRENT_Pos) /*!< SysTick CALIB: TENMS Mask */ -/*@}*/ /* end of group CMSIS_CM3_SysTick */ - - -/** @addtogroup CMSIS_CM3_ITM CMSIS CM3 ITM - memory mapped structure for Instrumentation Trace Macrocell (ITM) - @{ - */ -typedef struct -{ - __O union - { - __O uint8_t u8; /*!< Offset: ITM Stimulus Port 8-bit */ - __O uint16_t u16; /*!< Offset: ITM Stimulus Port 16-bit */ - __O uint32_t u32; /*!< Offset: ITM Stimulus Port 32-bit */ - } PORT [32]; /*!< Offset: 0x00 ITM Stimulus Port Registers */ - uint32_t RESERVED0[864]; - __IO uint32_t TER; /*!< Offset: ITM Trace Enable Register */ - uint32_t RESERVED1[15]; - __IO uint32_t TPR; /*!< Offset: ITM Trace Privilege Register */ - uint32_t RESERVED2[15]; - __IO uint32_t TCR; /*!< Offset: ITM Trace Control Register */ - uint32_t RESERVED3[29]; - __IO uint32_t IWR; /*!< Offset: ITM Integration Write Register */ - __IO uint32_t IRR; /*!< Offset: ITM Integration Read Register */ - __IO uint32_t IMCR; /*!< Offset: ITM Integration Mode Control Register */ - uint32_t RESERVED4[43]; - __IO uint32_t LAR; /*!< Offset: ITM Lock Access Register */ - __IO uint32_t LSR; /*!< Offset: ITM Lock Status Register */ - uint32_t RESERVED5[6]; - __I uint32_t PID4; /*!< Offset: ITM Peripheral Identification Register #4 */ - __I uint32_t PID5; /*!< Offset: ITM Peripheral Identification Register #5 */ - __I uint32_t PID6; /*!< Offset: ITM Peripheral Identification Register #6 */ - __I uint32_t PID7; /*!< Offset: ITM Peripheral Identification Register #7 */ - __I uint32_t PID0; /*!< Offset: ITM Peripheral Identification Register #0 */ - __I uint32_t PID1; /*!< Offset: ITM Peripheral Identification Register #1 */ - __I uint32_t PID2; /*!< Offset: ITM Peripheral Identification Register #2 */ - __I uint32_t PID3; /*!< Offset: ITM Peripheral Identification Register #3 */ - __I uint32_t CID0; /*!< Offset: ITM Component Identification Register #0 */ - __I uint32_t CID1; /*!< Offset: ITM Component Identification Register #1 */ - __I uint32_t CID2; /*!< Offset: ITM Component Identification Register #2 */ - __I uint32_t CID3; /*!< Offset: ITM Component Identification Register #3 */ -} ITM_Type; - -/* ITM Trace Privilege Register Definitions */ -#define ITM_TPR_PRIVMASK_Pos 0 /*!< ITM TPR: PRIVMASK Position */ -#define ITM_TPR_PRIVMASK_Msk (0xFul << ITM_TPR_PRIVMASK_Pos) /*!< ITM TPR: PRIVMASK Mask */ - -/* ITM Trace Control Register Definitions */ -#define ITM_TCR_BUSY_Pos 23 /*!< ITM TCR: BUSY Position */ -#define ITM_TCR_BUSY_Msk (1ul << ITM_TCR_BUSY_Pos) /*!< ITM TCR: BUSY Mask */ - -#define ITM_TCR_ATBID_Pos 16 /*!< ITM TCR: ATBID Position */ -#define ITM_TCR_ATBID_Msk (0x7Ful << ITM_TCR_ATBID_Pos) /*!< ITM TCR: ATBID Mask */ - -#define ITM_TCR_TSPrescale_Pos 8 /*!< ITM TCR: TSPrescale Position */ -#define ITM_TCR_TSPrescale_Msk (3ul << ITM_TCR_TSPrescale_Pos) /*!< ITM TCR: TSPrescale Mask */ - -#define ITM_TCR_SWOENA_Pos 4 /*!< ITM TCR: SWOENA Position */ -#define ITM_TCR_SWOENA_Msk (1ul << ITM_TCR_SWOENA_Pos) /*!< ITM TCR: SWOENA Mask */ - -#define ITM_TCR_DWTENA_Pos 3 /*!< ITM TCR: DWTENA Position */ -#define ITM_TCR_DWTENA_Msk (1ul << ITM_TCR_DWTENA_Pos) /*!< ITM TCR: DWTENA Mask */ - -#define ITM_TCR_SYNCENA_Pos 2 /*!< ITM TCR: SYNCENA Position */ -#define ITM_TCR_SYNCENA_Msk (1ul << ITM_TCR_SYNCENA_Pos) /*!< ITM TCR: SYNCENA Mask */ - -#define ITM_TCR_TSENA_Pos 1 /*!< ITM TCR: TSENA Position */ -#define ITM_TCR_TSENA_Msk (1ul << ITM_TCR_TSENA_Pos) /*!< ITM TCR: TSENA Mask */ - -#define ITM_TCR_ITMENA_Pos 0 /*!< ITM TCR: ITM Enable bit Position */ -#define ITM_TCR_ITMENA_Msk (1ul << ITM_TCR_ITMENA_Pos) /*!< ITM TCR: ITM Enable bit Mask */ - -/* ITM Integration Write Register Definitions */ -#define ITM_IWR_ATVALIDM_Pos 0 /*!< ITM IWR: ATVALIDM Position */ -#define ITM_IWR_ATVALIDM_Msk (1ul << ITM_IWR_ATVALIDM_Pos) /*!< ITM IWR: ATVALIDM Mask */ - -/* ITM Integration Read Register Definitions */ -#define ITM_IRR_ATREADYM_Pos 0 /*!< ITM IRR: ATREADYM Position */ -#define ITM_IRR_ATREADYM_Msk (1ul << ITM_IRR_ATREADYM_Pos) /*!< ITM IRR: ATREADYM Mask */ - -/* ITM Integration Mode Control Register Definitions */ -#define ITM_IMCR_INTEGRATION_Pos 0 /*!< ITM IMCR: INTEGRATION Position */ -#define ITM_IMCR_INTEGRATION_Msk (1ul << ITM_IMCR_INTEGRATION_Pos) /*!< ITM IMCR: INTEGRATION Mask */ - -/* ITM Lock Status Register Definitions */ -#define ITM_LSR_ByteAcc_Pos 2 /*!< ITM LSR: ByteAcc Position */ -#define ITM_LSR_ByteAcc_Msk (1ul << ITM_LSR_ByteAcc_Pos) /*!< ITM LSR: ByteAcc Mask */ - -#define ITM_LSR_Access_Pos 1 /*!< ITM LSR: Access Position */ -#define ITM_LSR_Access_Msk (1ul << ITM_LSR_Access_Pos) /*!< ITM LSR: Access Mask */ - -#define ITM_LSR_Present_Pos 0 /*!< ITM LSR: Present Position */ -#define ITM_LSR_Present_Msk (1ul << ITM_LSR_Present_Pos) /*!< ITM LSR: Present Mask */ -/*@}*/ /* end of group CMSIS_CM3_ITM */ - - -/** @addtogroup CMSIS_CM3_InterruptType CMSIS CM3 Interrupt Type - memory mapped structure for Interrupt Type - @{ - */ -typedef struct -{ - uint32_t RESERVED0; - __I uint32_t ICTR; /*!< Offset: 0x04 Interrupt Control Type Register */ -#if ((defined __CM3_REV) && (__CM3_REV >= 0x200)) - __IO uint32_t ACTLR; /*!< Offset: 0x08 Auxiliary Control Register */ -#else - uint32_t RESERVED1; -#endif -} InterruptType_Type; - -/* Interrupt Controller Type Register Definitions */ -#define InterruptType_ICTR_INTLINESNUM_Pos 0 /*!< InterruptType ICTR: INTLINESNUM Position */ -#define InterruptType_ICTR_INTLINESNUM_Msk (0x1Ful << InterruptType_ICTR_INTLINESNUM_Pos) /*!< InterruptType ICTR: INTLINESNUM Mask */ - -/* Auxiliary Control Register Definitions */ -#define InterruptType_ACTLR_DISFOLD_Pos 2 /*!< InterruptType ACTLR: DISFOLD Position */ -#define InterruptType_ACTLR_DISFOLD_Msk (1ul << InterruptType_ACTLR_DISFOLD_Pos) /*!< InterruptType ACTLR: DISFOLD Mask */ - -#define InterruptType_ACTLR_DISDEFWBUF_Pos 1 /*!< InterruptType ACTLR: DISDEFWBUF Position */ -#define InterruptType_ACTLR_DISDEFWBUF_Msk (1ul << InterruptType_ACTLR_DISDEFWBUF_Pos) /*!< InterruptType ACTLR: DISDEFWBUF Mask */ - -#define InterruptType_ACTLR_DISMCYCINT_Pos 0 /*!< InterruptType ACTLR: DISMCYCINT Position */ -#define InterruptType_ACTLR_DISMCYCINT_Msk (1ul << InterruptType_ACTLR_DISMCYCINT_Pos) /*!< InterruptType ACTLR: DISMCYCINT Mask */ -/*@}*/ /* end of group CMSIS_CM3_InterruptType */ - - -#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1) -/** @addtogroup CMSIS_CM3_MPU CMSIS CM3 MPU - memory mapped structure for Memory Protection Unit (MPU) - @{ - */ -typedef struct -{ - __I uint32_t TYPE; /*!< Offset: 0x00 MPU Type Register */ - __IO uint32_t CTRL; /*!< Offset: 0x04 MPU Control Register */ - __IO uint32_t RNR; /*!< Offset: 0x08 MPU Region RNRber Register */ - __IO uint32_t RBAR; /*!< Offset: 0x0C MPU Region Base Address Register */ - __IO uint32_t RASR; /*!< Offset: 0x10 MPU Region Attribute and Size Register */ - __IO uint32_t RBAR_A1; /*!< Offset: 0x14 MPU Alias 1 Region Base Address Register */ - __IO uint32_t RASR_A1; /*!< Offset: 0x18 MPU Alias 1 Region Attribute and Size Register */ - __IO uint32_t RBAR_A2; /*!< Offset: 0x1C MPU Alias 2 Region Base Address Register */ - __IO uint32_t RASR_A2; /*!< Offset: 0x20 MPU Alias 2 Region Attribute and Size Register */ - __IO uint32_t RBAR_A3; /*!< Offset: 0x24 MPU Alias 3 Region Base Address Register */ - __IO uint32_t RASR_A3; /*!< Offset: 0x28 MPU Alias 3 Region Attribute and Size Register */ -} MPU_Type; - -/* MPU Type Register */ -#define MPU_TYPE_IREGION_Pos 16 /*!< MPU TYPE: IREGION Position */ -#define MPU_TYPE_IREGION_Msk (0xFFul << MPU_TYPE_IREGION_Pos) /*!< MPU TYPE: IREGION Mask */ - -#define MPU_TYPE_DREGION_Pos 8 /*!< MPU TYPE: DREGION Position */ -#define MPU_TYPE_DREGION_Msk (0xFFul << MPU_TYPE_DREGION_Pos) /*!< MPU TYPE: DREGION Mask */ - -#define MPU_TYPE_SEPARATE_Pos 0 /*!< MPU TYPE: SEPARATE Position */ -#define MPU_TYPE_SEPARATE_Msk (1ul << MPU_TYPE_SEPARATE_Pos) /*!< MPU TYPE: SEPARATE Mask */ - -/* MPU Control Register */ -#define MPU_CTRL_PRIVDEFENA_Pos 2 /*!< MPU CTRL: PRIVDEFENA Position */ -#define MPU_CTRL_PRIVDEFENA_Msk (1ul << MPU_CTRL_PRIVDEFENA_Pos) /*!< MPU CTRL: PRIVDEFENA Mask */ - -#define MPU_CTRL_HFNMIENA_Pos 1 /*!< MPU CTRL: HFNMIENA Position */ -#define MPU_CTRL_HFNMIENA_Msk (1ul << MPU_CTRL_HFNMIENA_Pos) /*!< MPU CTRL: HFNMIENA Mask */ - -#define MPU_CTRL_ENABLE_Pos 0 /*!< MPU CTRL: ENABLE Position */ -#define MPU_CTRL_ENABLE_Msk (1ul << MPU_CTRL_ENABLE_Pos) /*!< MPU CTRL: ENABLE Mask */ - -/* MPU Region Number Register */ -#define MPU_RNR_REGION_Pos 0 /*!< MPU RNR: REGION Position */ -#define MPU_RNR_REGION_Msk (0xFFul << MPU_RNR_REGION_Pos) /*!< MPU RNR: REGION Mask */ - -/* MPU Region Base Address Register */ -#define MPU_RBAR_ADDR_Pos 5 /*!< MPU RBAR: ADDR Position */ -#define MPU_RBAR_ADDR_Msk (0x7FFFFFFul << MPU_RBAR_ADDR_Pos) /*!< MPU RBAR: ADDR Mask */ - -#define MPU_RBAR_VALID_Pos 4 /*!< MPU RBAR: VALID Position */ -#define MPU_RBAR_VALID_Msk (1ul << MPU_RBAR_VALID_Pos) /*!< MPU RBAR: VALID Mask */ - -#define MPU_RBAR_REGION_Pos 0 /*!< MPU RBAR: REGION Position */ -#define MPU_RBAR_REGION_Msk (0xFul << MPU_RBAR_REGION_Pos) /*!< MPU RBAR: REGION Mask */ - -/* MPU Region Attribute and Size Register */ -#define MPU_RASR_XN_Pos 28 /*!< MPU RASR: XN Position */ -#define MPU_RASR_XN_Msk (1ul << MPU_RASR_XN_Pos) /*!< MPU RASR: XN Mask */ - -#define MPU_RASR_AP_Pos 24 /*!< MPU RASR: AP Position */ -#define MPU_RASR_AP_Msk (7ul << MPU_RASR_AP_Pos) /*!< MPU RASR: AP Mask */ - -#define MPU_RASR_TEX_Pos 19 /*!< MPU RASR: TEX Position */ -#define MPU_RASR_TEX_Msk (7ul << MPU_RASR_TEX_Pos) /*!< MPU RASR: TEX Mask */ - -#define MPU_RASR_S_Pos 18 /*!< MPU RASR: Shareable bit Position */ -#define MPU_RASR_S_Msk (1ul << MPU_RASR_S_Pos) /*!< MPU RASR: Shareable bit Mask */ - -#define MPU_RASR_C_Pos 17 /*!< MPU RASR: Cacheable bit Position */ -#define MPU_RASR_C_Msk (1ul << MPU_RASR_C_Pos) /*!< MPU RASR: Cacheable bit Mask */ - -#define MPU_RASR_B_Pos 16 /*!< MPU RASR: Bufferable bit Position */ -#define MPU_RASR_B_Msk (1ul << MPU_RASR_B_Pos) /*!< MPU RASR: Bufferable bit Mask */ - -#define MPU_RASR_SRD_Pos 8 /*!< MPU RASR: Sub-Region Disable Position */ -#define MPU_RASR_SRD_Msk (0xFFul << MPU_RASR_SRD_Pos) /*!< MPU RASR: Sub-Region Disable Mask */ - -#define MPU_RASR_SIZE_Pos 1 /*!< MPU RASR: Region Size Field Position */ -#define MPU_RASR_SIZE_Msk (0x1Ful << MPU_RASR_SIZE_Pos) /*!< MPU RASR: Region Size Field Mask */ - -#define MPU_RASR_ENA_Pos 0 /*!< MPU RASR: Region enable bit Position */ -#define MPU_RASR_ENA_Msk (0x1Ful << MPU_RASR_ENA_Pos) /*!< MPU RASR: Region enable bit Disable Mask */ - -/*@}*/ /* end of group CMSIS_CM3_MPU */ -#endif - - -/** @addtogroup CMSIS_CM3_CoreDebug CMSIS CM3 Core Debug - memory mapped structure for Core Debug Register - @{ - */ -typedef struct -{ - __IO uint32_t DHCSR; /*!< Offset: 0x00 Debug Halting Control and Status Register */ - __O uint32_t DCRSR; /*!< Offset: 0x04 Debug Core Register Selector Register */ - __IO uint32_t DCRDR; /*!< Offset: 0x08 Debug Core Register Data Register */ - __IO uint32_t DEMCR; /*!< Offset: 0x0C Debug Exception and Monitor Control Register */ -} CoreDebug_Type; - -/* Debug Halting Control and Status Register */ -#define CoreDebug_DHCSR_DBGKEY_Pos 16 /*!< CoreDebug DHCSR: DBGKEY Position */ -#define CoreDebug_DHCSR_DBGKEY_Msk (0xFFFFul << CoreDebug_DHCSR_DBGKEY_Pos) /*!< CoreDebug DHCSR: DBGKEY Mask */ - -#define CoreDebug_DHCSR_S_RESET_ST_Pos 25 /*!< CoreDebug DHCSR: S_RESET_ST Position */ -#define CoreDebug_DHCSR_S_RESET_ST_Msk (1ul << CoreDebug_DHCSR_S_RESET_ST_Pos) /*!< CoreDebug DHCSR: S_RESET_ST Mask */ - -#define CoreDebug_DHCSR_S_RETIRE_ST_Pos 24 /*!< CoreDebug DHCSR: S_RETIRE_ST Position */ -#define CoreDebug_DHCSR_S_RETIRE_ST_Msk (1ul << CoreDebug_DHCSR_S_RETIRE_ST_Pos) /*!< CoreDebug DHCSR: S_RETIRE_ST Mask */ - -#define CoreDebug_DHCSR_S_LOCKUP_Pos 19 /*!< CoreDebug DHCSR: S_LOCKUP Position */ -#define CoreDebug_DHCSR_S_LOCKUP_Msk (1ul << CoreDebug_DHCSR_S_LOCKUP_Pos) /*!< CoreDebug DHCSR: S_LOCKUP Mask */ - -#define CoreDebug_DHCSR_S_SLEEP_Pos 18 /*!< CoreDebug DHCSR: S_SLEEP Position */ -#define CoreDebug_DHCSR_S_SLEEP_Msk (1ul << CoreDebug_DHCSR_S_SLEEP_Pos) /*!< CoreDebug DHCSR: S_SLEEP Mask */ - -#define CoreDebug_DHCSR_S_HALT_Pos 17 /*!< CoreDebug DHCSR: S_HALT Position */ -#define CoreDebug_DHCSR_S_HALT_Msk (1ul << CoreDebug_DHCSR_S_HALT_Pos) /*!< CoreDebug DHCSR: S_HALT Mask */ - -#define CoreDebug_DHCSR_S_REGRDY_Pos 16 /*!< CoreDebug DHCSR: S_REGRDY Position */ -#define CoreDebug_DHCSR_S_REGRDY_Msk (1ul << CoreDebug_DHCSR_S_REGRDY_Pos) /*!< CoreDebug DHCSR: S_REGRDY Mask */ - -#define CoreDebug_DHCSR_C_SNAPSTALL_Pos 5 /*!< CoreDebug DHCSR: C_SNAPSTALL Position */ -#define CoreDebug_DHCSR_C_SNAPSTALL_Msk (1ul << CoreDebug_DHCSR_C_SNAPSTALL_Pos) /*!< CoreDebug DHCSR: C_SNAPSTALL Mask */ - -#define CoreDebug_DHCSR_C_MASKINTS_Pos 3 /*!< CoreDebug DHCSR: C_MASKINTS Position */ -#define CoreDebug_DHCSR_C_MASKINTS_Msk (1ul << CoreDebug_DHCSR_C_MASKINTS_Pos) /*!< CoreDebug DHCSR: C_MASKINTS Mask */ - -#define CoreDebug_DHCSR_C_STEP_Pos 2 /*!< CoreDebug DHCSR: C_STEP Position */ -#define CoreDebug_DHCSR_C_STEP_Msk (1ul << CoreDebug_DHCSR_C_STEP_Pos) /*!< CoreDebug DHCSR: C_STEP Mask */ - -#define CoreDebug_DHCSR_C_HALT_Pos 1 /*!< CoreDebug DHCSR: C_HALT Position */ -#define CoreDebug_DHCSR_C_HALT_Msk (1ul << CoreDebug_DHCSR_C_HALT_Pos) /*!< CoreDebug DHCSR: C_HALT Mask */ - -#define CoreDebug_DHCSR_C_DEBUGEN_Pos 0 /*!< CoreDebug DHCSR: C_DEBUGEN Position */ -#define CoreDebug_DHCSR_C_DEBUGEN_Msk (1ul << CoreDebug_DHCSR_C_DEBUGEN_Pos) /*!< CoreDebug DHCSR: C_DEBUGEN Mask */ - -/* Debug Core Register Selector Register */ -#define CoreDebug_DCRSR_REGWnR_Pos 16 /*!< CoreDebug DCRSR: REGWnR Position */ -#define CoreDebug_DCRSR_REGWnR_Msk (1ul << CoreDebug_DCRSR_REGWnR_Pos) /*!< CoreDebug DCRSR: REGWnR Mask */ - -#define CoreDebug_DCRSR_REGSEL_Pos 0 /*!< CoreDebug DCRSR: REGSEL Position */ -#define CoreDebug_DCRSR_REGSEL_Msk (0x1Ful << CoreDebug_DCRSR_REGSEL_Pos) /*!< CoreDebug DCRSR: REGSEL Mask */ - -/* Debug Exception and Monitor Control Register */ -#define CoreDebug_DEMCR_TRCENA_Pos 24 /*!< CoreDebug DEMCR: TRCENA Position */ -#define CoreDebug_DEMCR_TRCENA_Msk (1ul << CoreDebug_DEMCR_TRCENA_Pos) /*!< CoreDebug DEMCR: TRCENA Mask */ - -#define CoreDebug_DEMCR_MON_REQ_Pos 19 /*!< CoreDebug DEMCR: MON_REQ Position */ -#define CoreDebug_DEMCR_MON_REQ_Msk (1ul << CoreDebug_DEMCR_MON_REQ_Pos) /*!< CoreDebug DEMCR: MON_REQ Mask */ - -#define CoreDebug_DEMCR_MON_STEP_Pos 18 /*!< CoreDebug DEMCR: MON_STEP Position */ -#define CoreDebug_DEMCR_MON_STEP_Msk (1ul << CoreDebug_DEMCR_MON_STEP_Pos) /*!< CoreDebug DEMCR: MON_STEP Mask */ - -#define CoreDebug_DEMCR_MON_PEND_Pos 17 /*!< CoreDebug DEMCR: MON_PEND Position */ -#define CoreDebug_DEMCR_MON_PEND_Msk (1ul << CoreDebug_DEMCR_MON_PEND_Pos) /*!< CoreDebug DEMCR: MON_PEND Mask */ - -#define CoreDebug_DEMCR_MON_EN_Pos 16 /*!< CoreDebug DEMCR: MON_EN Position */ -#define CoreDebug_DEMCR_MON_EN_Msk (1ul << CoreDebug_DEMCR_MON_EN_Pos) /*!< CoreDebug DEMCR: MON_EN Mask */ - -#define CoreDebug_DEMCR_VC_HARDERR_Pos 10 /*!< CoreDebug DEMCR: VC_HARDERR Position */ -#define CoreDebug_DEMCR_VC_HARDERR_Msk (1ul << CoreDebug_DEMCR_VC_HARDERR_Pos) /*!< CoreDebug DEMCR: VC_HARDERR Mask */ - -#define CoreDebug_DEMCR_VC_INTERR_Pos 9 /*!< CoreDebug DEMCR: VC_INTERR Position */ -#define CoreDebug_DEMCR_VC_INTERR_Msk (1ul << CoreDebug_DEMCR_VC_INTERR_Pos) /*!< CoreDebug DEMCR: VC_INTERR Mask */ - -#define CoreDebug_DEMCR_VC_BUSERR_Pos 8 /*!< CoreDebug DEMCR: VC_BUSERR Position */ -#define CoreDebug_DEMCR_VC_BUSERR_Msk (1ul << CoreDebug_DEMCR_VC_BUSERR_Pos) /*!< CoreDebug DEMCR: VC_BUSERR Mask */ - -#define CoreDebug_DEMCR_VC_STATERR_Pos 7 /*!< CoreDebug DEMCR: VC_STATERR Position */ -#define CoreDebug_DEMCR_VC_STATERR_Msk (1ul << CoreDebug_DEMCR_VC_STATERR_Pos) /*!< CoreDebug DEMCR: VC_STATERR Mask */ - -#define CoreDebug_DEMCR_VC_CHKERR_Pos 6 /*!< CoreDebug DEMCR: VC_CHKERR Position */ -#define CoreDebug_DEMCR_VC_CHKERR_Msk (1ul << CoreDebug_DEMCR_VC_CHKERR_Pos) /*!< CoreDebug DEMCR: VC_CHKERR Mask */ - -#define CoreDebug_DEMCR_VC_NOCPERR_Pos 5 /*!< CoreDebug DEMCR: VC_NOCPERR Position */ -#define CoreDebug_DEMCR_VC_NOCPERR_Msk (1ul << CoreDebug_DEMCR_VC_NOCPERR_Pos) /*!< CoreDebug DEMCR: VC_NOCPERR Mask */ - -#define CoreDebug_DEMCR_VC_MMERR_Pos 4 /*!< CoreDebug DEMCR: VC_MMERR Position */ -#define CoreDebug_DEMCR_VC_MMERR_Msk (1ul << CoreDebug_DEMCR_VC_MMERR_Pos) /*!< CoreDebug DEMCR: VC_MMERR Mask */ - -#define CoreDebug_DEMCR_VC_CORERESET_Pos 0 /*!< CoreDebug DEMCR: VC_CORERESET Position */ -#define CoreDebug_DEMCR_VC_CORERESET_Msk (1ul << CoreDebug_DEMCR_VC_CORERESET_Pos) /*!< CoreDebug DEMCR: VC_CORERESET Mask */ -/*@}*/ /* end of group CMSIS_CM3_CoreDebug */ - - -/* Memory mapping of Cortex-M3 Hardware */ -#define SCS_BASE (0xE000E000) /*!< System Control Space Base Address */ -#define ITM_BASE (0xE0000000) /*!< ITM Base Address */ -#define CoreDebug_BASE (0xE000EDF0) /*!< Core Debug Base Address */ -#define SysTick_BASE (SCS_BASE + 0x0010) /*!< SysTick Base Address */ -#define NVIC_BASE (SCS_BASE + 0x0100) /*!< NVIC Base Address */ -#define SCB_BASE (SCS_BASE + 0x0D00) /*!< System Control Block Base Address */ - -#define InterruptType ((InterruptType_Type *) SCS_BASE) /*!< Interrupt Type Register */ -#define SCB ((SCB_Type *) SCB_BASE) /*!< SCB configuration struct */ -#define SysTick ((SysTick_Type *) SysTick_BASE) /*!< SysTick configuration struct */ -#define NVIC ((NVIC_Type *) NVIC_BASE) /*!< NVIC configuration struct */ -#define ITM ((ITM_Type *) ITM_BASE) /*!< ITM configuration struct */ -#define CoreDebug ((CoreDebug_Type *) CoreDebug_BASE) /*!< Core Debug configuration struct */ - -#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1) - #define MPU_BASE (SCS_BASE + 0x0D90) /*!< Memory Protection Unit */ - #define MPU ((MPU_Type*) MPU_BASE) /*!< Memory Protection Unit */ -#endif - -/*@}*/ /* end of group CMSIS_CM3_core_register */ - - -/******************************************************************************* - * Hardware Abstraction Layer - ******************************************************************************/ - -#if defined ( __CC_ARM ) - #define __ASM __asm /*!< asm keyword for ARM Compiler */ - #define __INLINE __inline /*!< inline keyword for ARM Compiler */ - -#elif defined ( __ICCARM__ ) - #define __ASM __asm /*!< asm keyword for IAR Compiler */ - #define __INLINE inline /*!< inline keyword for IAR Compiler. Only avaiable in High optimization mode! */ - -#elif defined ( __GNUC__ ) - #define __ASM __asm /*!< asm keyword for GNU Compiler */ - #define __INLINE inline /*!< inline keyword for GNU Compiler */ - -#elif defined ( __TASKING__ ) - #define __ASM __asm /*!< asm keyword for TASKING Compiler */ - #define __INLINE inline /*!< inline keyword for TASKING Compiler */ - -#endif - - -/* ################### Compiler specific Intrinsics ########################### */ - -#if defined ( __CC_ARM ) /*------------------RealView Compiler -----------------*/ -/* ARM armcc specific functions */ - -#define __enable_fault_irq __enable_fiq -#define __disable_fault_irq __disable_fiq - -#define __NOP __nop -#define __WFI __wfi -#define __WFE __wfe -#define __SEV __sev -#define __ISB() __isb(0) -#define __DSB() __dsb(0) -#define __DMB() __dmb(0) -#define __REV __rev -#define __RBIT __rbit -#define __LDREXB(ptr) ((unsigned char ) __ldrex(ptr)) -#define __LDREXH(ptr) ((unsigned short) __ldrex(ptr)) -#define __LDREXW(ptr) ((unsigned int ) __ldrex(ptr)) -#define __STREXB(value, ptr) __strex(value, ptr) -#define __STREXH(value, ptr) __strex(value, ptr) -#define __STREXW(value, ptr) __strex(value, ptr) - - -/* intrinsic unsigned long long __ldrexd(volatile void *ptr) */ -/* intrinsic int __strexd(unsigned long long val, volatile void *ptr) */ -/* intrinsic void __enable_irq(); */ -/* intrinsic void __disable_irq(); */ - - -/** - * @brief Return the Process Stack Pointer - * - * @return ProcessStackPointer - * - * Return the actual process stack pointer - */ -extern uint32_t __get_PSP(void); - -/** - * @brief Set the Process Stack Pointer - * - * @param topOfProcStack Process Stack Pointer - * - * Assign the value ProcessStackPointer to the MSP - * (process stack pointer) Cortex processor register - */ -extern void __set_PSP(uint32_t topOfProcStack); - -/** - * @brief Return the Main Stack Pointer - * - * @return Main Stack Pointer - * - * Return the current value of the MSP (main stack pointer) - * Cortex processor register - */ -extern uint32_t __get_MSP(void); - -/** - * @brief Set the Main Stack Pointer - * - * @param topOfMainStack Main Stack Pointer - * - * Assign the value mainStackPointer to the MSP - * (main stack pointer) Cortex processor register - */ -extern void __set_MSP(uint32_t topOfMainStack); - -/** - * @brief Reverse byte order in unsigned short value - * - * @param value value to reverse - * @return reversed value - * - * Reverse byte order in unsigned short value - */ -extern uint32_t __REV16(uint16_t value); - -/** - * @brief Reverse byte order in signed short value with sign extension to integer - * - * @param value value to reverse - * @return reversed value - * - * Reverse byte order in signed short value with sign extension to integer - */ -extern int32_t __REVSH(int16_t value); - - -#if (__ARMCC_VERSION < 400000) - -/** - * @brief Remove the exclusive lock created by ldrex - * - * Removes the exclusive lock which is created by ldrex. - */ -extern void __CLREX(void); - -/** - * @brief Return the Base Priority value - * - * @return BasePriority - * - * Return the content of the base priority register - */ -extern uint32_t __get_BASEPRI(void); - -/** - * @brief Set the Base Priority value - * - * @param basePri BasePriority - * - * Set the base priority register - */ -extern void __set_BASEPRI(uint32_t basePri); - -/** - * @brief Return the Priority Mask value - * - * @return PriMask - * - * Return state of the priority mask bit from the priority mask register - */ -extern uint32_t __get_PRIMASK(void); - -/** - * @brief Set the Priority Mask value - * - * @param priMask PriMask - * - * Set the priority mask bit in the priority mask register - */ -extern void __set_PRIMASK(uint32_t priMask); - -/** - * @brief Return the Fault Mask value - * - * @return FaultMask - * - * Return the content of the fault mask register - */ -extern uint32_t __get_FAULTMASK(void); - -/** - * @brief Set the Fault Mask value - * - * @param faultMask faultMask value - * - * Set the fault mask register - */ -extern void __set_FAULTMASK(uint32_t faultMask); - -/** - * @brief Return the Control Register value - * - * @return Control value - * - * Return the content of the control register - */ -extern uint32_t __get_CONTROL(void); - -/** - * @brief Set the Control Register value - * - * @param control Control value - * - * Set the control register - */ -extern void __set_CONTROL(uint32_t control); - -#else /* (__ARMCC_VERSION >= 400000) */ - -/** - * @brief Remove the exclusive lock created by ldrex - * - * Removes the exclusive lock which is created by ldrex. - */ -#define __CLREX __clrex - -/** - * @brief Return the Base Priority value - * - * @return BasePriority - * - * Return the content of the base priority register - */ -static __INLINE uint32_t __get_BASEPRI(void) -{ - register uint32_t __regBasePri __ASM("basepri"); - return(__regBasePri); -} - -/** - * @brief Set the Base Priority value - * - * @param basePri BasePriority - * - * Set the base priority register - */ -static __INLINE void __set_BASEPRI(uint32_t basePri) -{ - register uint32_t __regBasePri __ASM("basepri"); - __regBasePri = (basePri & 0xff); -} - -/** - * @brief Return the Priority Mask value - * - * @return PriMask - * - * Return state of the priority mask bit from the priority mask register - */ -static __INLINE uint32_t __get_PRIMASK(void) -{ - register uint32_t __regPriMask __ASM("primask"); - return(__regPriMask); -} - -/** - * @brief Set the Priority Mask value - * - * @param priMask PriMask - * - * Set the priority mask bit in the priority mask register - */ -static __INLINE void __set_PRIMASK(uint32_t priMask) -{ - register uint32_t __regPriMask __ASM("primask"); - __regPriMask = (priMask); -} - -/** - * @brief Return the Fault Mask value - * - * @return FaultMask - * - * Return the content of the fault mask register - */ -static __INLINE uint32_t __get_FAULTMASK(void) -{ - register uint32_t __regFaultMask __ASM("faultmask"); - return(__regFaultMask); -} - -/** - * @brief Set the Fault Mask value - * - * @param faultMask faultMask value - * - * Set the fault mask register - */ -static __INLINE void __set_FAULTMASK(uint32_t faultMask) -{ - register uint32_t __regFaultMask __ASM("faultmask"); - __regFaultMask = (faultMask & 1); -} - -/** - * @brief Return the Control Register value - * - * @return Control value - * - * Return the content of the control register - */ -static __INLINE uint32_t __get_CONTROL(void) -{ - register uint32_t __regControl __ASM("control"); - return(__regControl); -} - -/** - * @brief Set the Control Register value - * - * @param control Control value - * - * Set the control register - */ -static __INLINE void __set_CONTROL(uint32_t control) -{ - register uint32_t __regControl __ASM("control"); - __regControl = control; -} - -#endif /* __ARMCC_VERSION */ - - - -#elif (defined (__ICCARM__)) /*------------------ ICC Compiler -------------------*/ -/* IAR iccarm specific functions */ - -#define __enable_irq __enable_interrupt /*!< global Interrupt enable */ -#define __disable_irq __disable_interrupt /*!< global Interrupt disable */ - -static __INLINE void __enable_fault_irq() { __ASM ("cpsie f"); } -static __INLINE void __disable_fault_irq() { __ASM ("cpsid f"); } - -#define __NOP __no_operation /*!< no operation intrinsic in IAR Compiler */ -static __INLINE void __WFI() { __ASM ("wfi"); } -static __INLINE void __WFE() { __ASM ("wfe"); } -static __INLINE void __SEV() { __ASM ("sev"); } -static __INLINE void __CLREX() { __ASM ("clrex"); } - -/* intrinsic void __ISB(void) */ -/* intrinsic void __DSB(void) */ -/* intrinsic void __DMB(void) */ -/* intrinsic void __set_PRIMASK(); */ -/* intrinsic void __get_PRIMASK(); */ -/* intrinsic void __set_FAULTMASK(); */ -/* intrinsic void __get_FAULTMASK(); */ -/* intrinsic uint32_t __REV(uint32_t value); */ -/* intrinsic uint32_t __REVSH(uint32_t value); */ -/* intrinsic unsigned long __STREX(unsigned long, unsigned long); */ -/* intrinsic unsigned long __LDREX(unsigned long *); */ - - -/** - * @brief Return the Process Stack Pointer - * - * @return ProcessStackPointer - * - * Return the actual process stack pointer - */ -extern uint32_t __get_PSP(void); - -/** - * @brief Set the Process Stack Pointer - * - * @param topOfProcStack Process Stack Pointer - * - * Assign the value ProcessStackPointer to the MSP - * (process stack pointer) Cortex processor register - */ -extern void __set_PSP(uint32_t topOfProcStack); - -/** - * @brief Return the Main Stack Pointer - * - * @return Main Stack Pointer - * - * Return the current value of the MSP (main stack pointer) - * Cortex processor register - */ -extern uint32_t __get_MSP(void); - -/** - * @brief Set the Main Stack Pointer - * - * @param topOfMainStack Main Stack Pointer - * - * Assign the value mainStackPointer to the MSP - * (main stack pointer) Cortex processor register - */ -extern void __set_MSP(uint32_t topOfMainStack); - -/** - * @brief Reverse byte order in unsigned short value - * - * @param value value to reverse - * @return reversed value - * - * Reverse byte order in unsigned short value - */ -extern uint32_t __REV16(uint16_t value); - -/** - * @brief Reverse bit order of value - * - * @param value value to reverse - * @return reversed value - * - * Reverse bit order of value - */ -extern uint32_t __RBIT(uint32_t value); - -/** - * @brief LDR Exclusive (8 bit) - * - * @param *addr address pointer - * @return value of (*address) - * - * Exclusive LDR command for 8 bit values) - */ -extern uint8_t __LDREXB(uint8_t *addr); - -/** - * @brief LDR Exclusive (16 bit) - * - * @param *addr address pointer - * @return value of (*address) - * - * Exclusive LDR command for 16 bit values - */ -extern uint16_t __LDREXH(uint16_t *addr); - -/** - * @brief LDR Exclusive (32 bit) - * - * @param *addr address pointer - * @return value of (*address) - * - * Exclusive LDR command for 32 bit values - */ -extern uint32_t __LDREXW(uint32_t *addr); - -/** - * @brief STR Exclusive (8 bit) - * - * @param value value to store - * @param *addr address pointer - * @return successful / failed - * - * Exclusive STR command for 8 bit values - */ -extern uint32_t __STREXB(uint8_t value, uint8_t *addr); - -/** - * @brief STR Exclusive (16 bit) - * - * @param value value to store - * @param *addr address pointer - * @return successful / failed - * - * Exclusive STR command for 16 bit values - */ -extern uint32_t __STREXH(uint16_t value, uint16_t *addr); - -/** - * @brief STR Exclusive (32 bit) - * - * @param value value to store - * @param *addr address pointer - * @return successful / failed - * - * Exclusive STR command for 32 bit values - */ -extern uint32_t __STREXW(uint32_t value, uint32_t *addr); - - - -#elif (defined (__GNUC__)) /*------------------ GNU Compiler ---------------------*/ -/* GNU gcc specific functions */ - -static __INLINE void __enable_irq(void) { __ASM volatile ("cpsie i"); } -static __INLINE void __disable_irq(void) { __ASM volatile ("cpsid i"); } - -static __INLINE void __enable_fault_irq(void) { __ASM volatile ("cpsie f"); } -static __INLINE void __disable_fault_irq(void) { __ASM volatile ("cpsid f"); } - -static __INLINE void __NOP(void) { __ASM volatile ("nop"); } -static __INLINE void __WFI(void) { __ASM volatile ("wfi"); } -static __INLINE void __WFE(void) { __ASM volatile ("wfe"); } -static __INLINE void __SEV(void) { __ASM volatile ("sev"); } -static __INLINE void __ISB(void) { __ASM volatile ("isb"); } -static __INLINE void __DSB(void) { __ASM volatile ("dsb"); } -static __INLINE void __DMB(void) { __ASM volatile ("dmb"); } -static __INLINE void __CLREX(void) { __ASM volatile ("clrex"); } - - -/** - * @brief Return the Process Stack Pointer - * - * @return ProcessStackPointer - * - * Return the actual process stack pointer - */ -extern uint32_t __get_PSP(void); - -/** - * @brief Set the Process Stack Pointer - * - * @param topOfProcStack Process Stack Pointer - * - * Assign the value ProcessStackPointer to the MSP - * (process stack pointer) Cortex processor register - */ -extern void __set_PSP(uint32_t topOfProcStack); - -/** - * @brief Return the Main Stack Pointer - * - * @return Main Stack Pointer - * - * Return the current value of the MSP (main stack pointer) - * Cortex processor register - */ -extern uint32_t __get_MSP(void); - -/** - * @brief Set the Main Stack Pointer - * - * @param topOfMainStack Main Stack Pointer - * - * Assign the value mainStackPointer to the MSP - * (main stack pointer) Cortex processor register - */ -extern void __set_MSP(uint32_t topOfMainStack); - -/** - * @brief Return the Base Priority value - * - * @return BasePriority - * - * Return the content of the base priority register - */ -extern uint32_t __get_BASEPRI(void); - -/** - * @brief Set the Base Priority value - * - * @param basePri BasePriority - * - * Set the base priority register - */ -extern void __set_BASEPRI(uint32_t basePri); - -/** - * @brief Return the Priority Mask value - * - * @return PriMask - * - * Return state of the priority mask bit from the priority mask register - */ -extern uint32_t __get_PRIMASK(void); - -/** - * @brief Set the Priority Mask value - * - * @param priMask PriMask - * - * Set the priority mask bit in the priority mask register - */ -extern void __set_PRIMASK(uint32_t priMask); - -/** - * @brief Return the Fault Mask value - * - * @return FaultMask - * - * Return the content of the fault mask register - */ -extern uint32_t __get_FAULTMASK(void); - -/** - * @brief Set the Fault Mask value - * - * @param faultMask faultMask value - * - * Set the fault mask register - */ -extern void __set_FAULTMASK(uint32_t faultMask); - -/** - * @brief Return the Control Register value -* -* @return Control value - * - * Return the content of the control register - */ -extern uint32_t __get_CONTROL(void); - -/** - * @brief Set the Control Register value - * - * @param control Control value - * - * Set the control register - */ -extern void __set_CONTROL(uint32_t control); - -/** - * @brief Reverse byte order in integer value - * - * @param value value to reverse - * @return reversed value - * - * Reverse byte order in integer value - */ -extern uint32_t __REV(uint32_t value); - -/** - * @brief Reverse byte order in unsigned short value - * - * @param value value to reverse - * @return reversed value - * - * Reverse byte order in unsigned short value - */ -extern uint32_t __REV16(uint16_t value); - -/** - * @brief Reverse byte order in signed short value with sign extension to integer - * - * @param value value to reverse - * @return reversed value - * - * Reverse byte order in signed short value with sign extension to integer - */ -extern int32_t __REVSH(int16_t value); - -/** - * @brief Reverse bit order of value - * - * @param value value to reverse - * @return reversed value - * - * Reverse bit order of value - */ -extern uint32_t __RBIT(uint32_t value); - -/** - * @brief LDR Exclusive (8 bit) - * - * @param *addr address pointer - * @return value of (*address) - * - * Exclusive LDR command for 8 bit value - */ -extern uint8_t __LDREXB(uint8_t *addr); - -/** - * @brief LDR Exclusive (16 bit) - * - * @param *addr address pointer - * @return value of (*address) - * - * Exclusive LDR command for 16 bit values - */ -extern uint16_t __LDREXH(uint16_t *addr); - -/** - * @brief LDR Exclusive (32 bit) - * - * @param *addr address pointer - * @return value of (*address) - * - * Exclusive LDR command for 32 bit values - */ -extern uint32_t __LDREXW(uint32_t *addr); - -/** - * @brief STR Exclusive (8 bit) - * - * @param value value to store - * @param *addr address pointer - * @return successful / failed - * - * Exclusive STR command for 8 bit values - */ -extern uint32_t __STREXB(uint8_t value, uint8_t *addr); - -/** - * @brief STR Exclusive (16 bit) - * - * @param value value to store - * @param *addr address pointer - * @return successful / failed - * - * Exclusive STR command for 16 bit values - */ -extern uint32_t __STREXH(uint16_t value, uint16_t *addr); - -/** - * @brief STR Exclusive (32 bit) - * - * @param value value to store - * @param *addr address pointer - * @return successful / failed - * - * Exclusive STR command for 32 bit values - */ -extern uint32_t __STREXW(uint32_t value, uint32_t *addr); - - -#elif (defined (__TASKING__)) /*------------------ TASKING Compiler ---------------------*/ -/* TASKING carm specific functions */ - -/* - * The CMSIS functions have been implemented as intrinsics in the compiler. - * Please use "carm -?i" to get an up to date list of all instrinsics, - * Including the CMSIS ones. - */ - -#endif - - -/** @addtogroup CMSIS_CM3_Core_FunctionInterface CMSIS CM3 Core Function Interface - Core Function Interface containing: - - Core NVIC Functions - - Core SysTick Functions - - Core Reset Functions -*/ -/*@{*/ - -/* ########################## NVIC functions #################################### */ - -/** - * @brief Set the Priority Grouping in NVIC Interrupt Controller - * - * @param PriorityGroup is priority grouping field - * - * Set the priority grouping field using the required unlock sequence. - * The parameter priority_grouping is assigned to the field - * SCB->AIRCR [10:8] PRIGROUP field. Only values from 0..7 are used. - * In case of a conflict between priority grouping and available - * priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set. - */ -static __INLINE void NVIC_SetPriorityGrouping(uint32_t PriorityGroup) -{ - uint32_t reg_value; - uint32_t PriorityGroupTmp = (PriorityGroup & 0x07); /* only values 0..7 are used */ - - reg_value = SCB->AIRCR; /* read old register configuration */ - reg_value &= ~(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk); /* clear bits to change */ - reg_value = (reg_value | - (0x5FA << SCB_AIRCR_VECTKEY_Pos) | - (PriorityGroupTmp << 8)); /* Insert write key and priorty group */ - SCB->AIRCR = reg_value; -} - -/** - * @brief Get the Priority Grouping from NVIC Interrupt Controller - * - * @return priority grouping field - * - * Get the priority grouping from NVIC Interrupt Controller. - * priority grouping is SCB->AIRCR [10:8] PRIGROUP field. - */ -static __INLINE uint32_t NVIC_GetPriorityGrouping(void) -{ - return ((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos); /* read priority grouping field */ -} - -/** - * @brief Enable Interrupt in NVIC Interrupt Controller - * - * @param IRQn The positive number of the external interrupt to enable - * - * Enable a device specific interupt in the NVIC interrupt controller. - * The interrupt number cannot be a negative value. - */ -static __INLINE void NVIC_EnableIRQ(IRQn_Type IRQn) -{ - NVIC->ISER[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F)); /* enable interrupt */ -} - -/** - * @brief Disable the interrupt line for external interrupt specified - * - * @param IRQn The positive number of the external interrupt to disable - * - * Disable a device specific interupt in the NVIC interrupt controller. - * The interrupt number cannot be a negative value. - */ -static __INLINE void NVIC_DisableIRQ(IRQn_Type IRQn) -{ - NVIC->ICER[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F)); /* disable interrupt */ -} - -/** - * @brief Read the interrupt pending bit for a device specific interrupt source - * - * @param IRQn The number of the device specifc interrupt - * @return 1 = interrupt pending, 0 = interrupt not pending - * - * Read the pending register in NVIC and return 1 if its status is pending, - * otherwise it returns 0 - */ -static __INLINE uint32_t NVIC_GetPendingIRQ(IRQn_Type IRQn) -{ - return((uint32_t) ((NVIC->ISPR[(uint32_t)(IRQn) >> 5] & (1 << ((uint32_t)(IRQn) & 0x1F)))?1:0)); /* Return 1 if pending else 0 */ -} - -/** - * @brief Set the pending bit for an external interrupt - * - * @param IRQn The number of the interrupt for set pending - * - * Set the pending bit for the specified interrupt. - * The interrupt number cannot be a negative value. - */ -static __INLINE void NVIC_SetPendingIRQ(IRQn_Type IRQn) -{ - NVIC->ISPR[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F)); /* set interrupt pending */ -} - -/** - * @brief Clear the pending bit for an external interrupt - * - * @param IRQn The number of the interrupt for clear pending - * - * Clear the pending bit for the specified interrupt. - * The interrupt number cannot be a negative value. - */ -static __INLINE void NVIC_ClearPendingIRQ(IRQn_Type IRQn) -{ - NVIC->ICPR[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F)); /* Clear pending interrupt */ -} - -/** - * @brief Read the active bit for an external interrupt - * - * @param IRQn The number of the interrupt for read active bit - * @return 1 = interrupt active, 0 = interrupt not active - * - * Read the active register in NVIC and returns 1 if its status is active, - * otherwise it returns 0. - */ -static __INLINE uint32_t NVIC_GetActive(IRQn_Type IRQn) -{ - return((uint32_t)((NVIC->IABR[(uint32_t)(IRQn) >> 5] & (1 << ((uint32_t)(IRQn) & 0x1F)))?1:0)); /* Return 1 if active else 0 */ -} - -/** - * @brief Set the priority for an interrupt - * - * @param IRQn The number of the interrupt for set priority - * @param priority The priority to set - * - * Set the priority for the specified interrupt. The interrupt - * number can be positive to specify an external (device specific) - * interrupt, or negative to specify an internal (core) interrupt. - * - * Note: The priority cannot be set for every core interrupt. - */ -static __INLINE void NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) -{ - if(IRQn < 0) { - SCB->SHP[((uint32_t)(IRQn) & 0xF)-4] = ((priority << (8 - __NVIC_PRIO_BITS)) & 0xff); } /* set Priority for Cortex-M3 System Interrupts */ - else { - NVIC->IP[(uint32_t)(IRQn)] = ((priority << (8 - __NVIC_PRIO_BITS)) & 0xff); } /* set Priority for device specific Interrupts */ -} - -/** - * @brief Read the priority for an interrupt - * - * @param IRQn The number of the interrupt for get priority - * @return The priority for the interrupt - * - * Read the priority for the specified interrupt. The interrupt - * number can be positive to specify an external (device specific) - * interrupt, or negative to specify an internal (core) interrupt. - * - * The returned priority value is automatically aligned to the implemented - * priority bits of the microcontroller. - * - * Note: The priority cannot be set for every core interrupt. - */ -static __INLINE uint32_t NVIC_GetPriority(IRQn_Type IRQn) -{ - - if(IRQn < 0) { - return((uint32_t)(SCB->SHP[((uint32_t)(IRQn) & 0xF)-4] >> (8 - __NVIC_PRIO_BITS))); } /* get priority for Cortex-M3 system interrupts */ - else { - return((uint32_t)(NVIC->IP[(uint32_t)(IRQn)] >> (8 - __NVIC_PRIO_BITS))); } /* get priority for device specific interrupts */ -} - - -/** - * @brief Encode the priority for an interrupt - * - * @param PriorityGroup The used priority group - * @param PreemptPriority The preemptive priority value (starting from 0) - * @param SubPriority The sub priority value (starting from 0) - * @return The encoded priority for the interrupt - * - * Encode the priority for an interrupt with the given priority group, - * preemptive priority value and sub priority value. - * In case of a conflict between priority grouping and available - * priority bits (__NVIC_PRIO_BITS) the samllest possible priority group is set. - * - * The returned priority value can be used for NVIC_SetPriority(...) function - */ -static __INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) -{ - uint32_t PriorityGroupTmp = (PriorityGroup & 0x07); /* only values 0..7 are used */ - uint32_t PreemptPriorityBits; - uint32_t SubPriorityBits; - - PreemptPriorityBits = ((7 - PriorityGroupTmp) > __NVIC_PRIO_BITS) ? __NVIC_PRIO_BITS : 7 - PriorityGroupTmp; - SubPriorityBits = ((PriorityGroupTmp + __NVIC_PRIO_BITS) < 7) ? 0 : PriorityGroupTmp - 7 + __NVIC_PRIO_BITS; - - return ( - ((PreemptPriority & ((1 << (PreemptPriorityBits)) - 1)) << SubPriorityBits) | - ((SubPriority & ((1 << (SubPriorityBits )) - 1))) - ); -} - - -/** - * @brief Decode the priority of an interrupt - * - * @param Priority The priority for the interrupt - * @param PriorityGroup The used priority group - * @param pPreemptPriority The preemptive priority value (starting from 0) - * @param pSubPriority The sub priority value (starting from 0) - * - * Decode an interrupt priority value with the given priority group to - * preemptive priority value and sub priority value. - * In case of a conflict between priority grouping and available - * priority bits (__NVIC_PRIO_BITS) the samllest possible priority group is set. - * - * The priority value can be retrieved with NVIC_GetPriority(...) function - */ -static __INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* pPreemptPriority, uint32_t* pSubPriority) -{ - uint32_t PriorityGroupTmp = (PriorityGroup & 0x07); /* only values 0..7 are used */ - uint32_t PreemptPriorityBits; - uint32_t SubPriorityBits; - - PreemptPriorityBits = ((7 - PriorityGroupTmp) > __NVIC_PRIO_BITS) ? __NVIC_PRIO_BITS : 7 - PriorityGroupTmp; - SubPriorityBits = ((PriorityGroupTmp + __NVIC_PRIO_BITS) < 7) ? 0 : PriorityGroupTmp - 7 + __NVIC_PRIO_BITS; - - *pPreemptPriority = (Priority >> SubPriorityBits) & ((1 << (PreemptPriorityBits)) - 1); - *pSubPriority = (Priority ) & ((1 << (SubPriorityBits )) - 1); -} - - - -/* ################################## SysTick function ############################################ */ - -#if (!defined (__Vendor_SysTickConfig)) || (__Vendor_SysTickConfig == 0) - -/** - * @brief Initialize and start the SysTick counter and its interrupt. - * - * @param ticks number of ticks between two interrupts - * @return 1 = failed, 0 = successful - * - * Initialise the system tick timer and its interrupt and start the - * system tick timer / counter in free running mode to generate - * periodical interrupts. - */ -static __INLINE uint32_t SysTick_Config(uint32_t ticks) -{ - if (ticks > SysTick_LOAD_RELOAD_Msk) return (1); /* Reload value impossible */ - - SysTick->LOAD = (ticks & SysTick_LOAD_RELOAD_Msk) - 1; /* set reload register */ - NVIC_SetPriority (SysTick_IRQn, (1<<__NVIC_PRIO_BITS) - 1); /* set Priority for Cortex-M0 System Interrupts */ - SysTick->VAL = 0; /* Load the SysTick Counter Value */ - SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | - SysTick_CTRL_TICKINT_Msk | - SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ - return (0); /* Function successful */ -} - -#endif - - - - -/* ################################## Reset function ############################################ */ - -/** - * @brief Initiate a system reset request. - * - * Initiate a system reset request to reset the MCU - */ -static __INLINE void NVIC_SystemReset(void) -{ - SCB->AIRCR = ((0x5FA << SCB_AIRCR_VECTKEY_Pos) | - (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) | - SCB_AIRCR_SYSRESETREQ_Msk); /* Keep priority group unchanged */ - __DSB(); /* Ensure completion of memory access */ - while(1); /* wait until reset */ -} - -/*@}*/ /* end of group CMSIS_CM3_Core_FunctionInterface */ - - - -/* ##################################### Debug In/Output function ########################################### */ - -/** @addtogroup CMSIS_CM3_CoreDebugInterface CMSIS CM3 Core Debug Interface - Core Debug Interface containing: - - Core Debug Receive / Transmit Functions - - Core Debug Defines - - Core Debug Variables -*/ -/*@{*/ - -extern volatile int ITM_RxBuffer; /*!< variable to receive characters */ -#define ITM_RXBUFFER_EMPTY 0x5AA55AA5 /*!< value identifying ITM_RxBuffer is ready for next character */ - - -/** - * @brief Outputs a character via the ITM channel 0 - * - * @param ch character to output - * @return character to output - * - * The function outputs a character via the ITM channel 0. - * The function returns when no debugger is connected that has booked the output. - * It is blocking when a debugger is connected, but the previous character send is not transmitted. - */ -static __INLINE uint32_t ITM_SendChar (uint32_t ch) -{ - if ((CoreDebug->DEMCR & CoreDebug_DEMCR_TRCENA_Msk) && /* Trace enabled */ - (ITM->TCR & ITM_TCR_ITMENA_Msk) && /* ITM enabled */ - (ITM->TER & (1ul << 0) ) ) /* ITM Port #0 enabled */ - { - while (ITM->PORT[0].u32 == 0); - ITM->PORT[0].u8 = (uint8_t) ch; - } - return (ch); -} - - -/** - * @brief Inputs a character via variable ITM_RxBuffer - * - * @return received character, -1 = no character received - * - * The function inputs a character via variable ITM_RxBuffer. - * The function returns when no debugger is connected that has booked the output. - * It is blocking when a debugger is connected, but the previous character send is not transmitted. - */ -static __INLINE int ITM_ReceiveChar (void) { - int ch = -1; /* no character available */ - - if (ITM_RxBuffer != ITM_RXBUFFER_EMPTY) { - ch = ITM_RxBuffer; - ITM_RxBuffer = ITM_RXBUFFER_EMPTY; /* ready for next character */ - } - - return (ch); -} - - -/** - * @brief Check if a character via variable ITM_RxBuffer is available - * - * @return 1 = character available, 0 = no character available - * - * The function checks variable ITM_RxBuffer whether a character is available or not. - * The function returns '1' if a character is available and '0' if no character is available. - */ -static __INLINE int ITM_CheckChar (void) { - - if (ITM_RxBuffer == ITM_RXBUFFER_EMPTY) { - return (0); /* no character available */ - } else { - return (1); /* character available */ - } -} - -/*@}*/ /* end of group CMSIS_CM3_core_DebugInterface */ - - -#ifdef __cplusplus -} -#endif - -/*@}*/ /* end of group CMSIS_CM3_core_definitions */ - -#endif /* __CM3_CORE_H__ */ - -/*lint -restore */ diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/CMSIS/startup_keil/startus_a2fxxxm3.s b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/CMSIS/startup_keil/startus_a2fxxxm3.s deleted file mode 100644 index cdd3ebc82..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/CMSIS/startup_keil/startus_a2fxxxm3.s +++ /dev/null @@ -1,610 +0,0 @@ -;/******************************************************************************* -; * SmartFusion startup code for Keil-MDK. -; * -; * This file is based on an ARM provided example. -; * -; * SVN $Revision: 2536 $ -; * SVN $Date: 2010-04-08 16:57:12 +0100 (Thu, 08 Apr 2010) $ -; */ - -; *------- <<< Use Configuration Wizard in Context Menu >>> ------------------ - - -; Stack Configuration -; Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> -; - -Stack_Size EQU 0x00002000 - - AREA STACK, NOINIT, READWRITE, ALIGN=3 -Stack_Mem SPACE Stack_Size -__initial_sp - - -; Heap Configuration -; Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> -; - -Heap_Size EQU 0x00000000 - - AREA HEAP, NOINIT, READWRITE, ALIGN=3 -__heap_base -Heap_Mem SPACE Heap_Size -__heap_limit - - - PRESERVE8 - THUMB - - -;------------------------------------------------------------------------------- -; Vector Table Mapped to Address 0 at Reset - AREA RESET, DATA, READONLY - EXPORT __Vectors - EXPORT __Vectors_End - EXPORT __Vectors_Size - - -__Vectors DCD __initial_sp ; Top of Stack - DCD Reset_Handler ; Reset Handler - DCD NMI_Handler ; NMI Handler - DCD HardFault_Handler ; Hard Fault Handler - DCD MemManage_Handler ; MPU Fault Handler - DCD BusFault_Handler ; Bus Fault Handler - DCD UsageFault_Handler ; Usage Fault Handler - DCD 0 ; Reserved - DCD 0 ; Reserved - DCD 0 ; Reserved - DCD 0 ; Reserved - DCD SVC_Handler ; SVCall Handler - DCD DebugMon_Handler ; Debug Monitor Handler - DCD 0 ; Reserved - DCD PendSV_Handler ; PendSV Handler - DCD SysTick_Handler ; SysTick Handler - - ; External Interrupts - DCD WdogWakeup_IRQHandler - DCD BrownOut_1_5V_IRQHandler - DCD BrownOut_3_3V_IRQHandler - DCD RTC_Match_IRQHandler - DCD RTCIF_Pub_IRQHandler - DCD EthernetMAC_IRQHandler - DCD IAP_IRQHandler - DCD ENVM0_IRQHandler - DCD ENVM1_IRQHandler - DCD DMA_IRQHandler - DCD UART0_IRQHandler - DCD UART1_IRQHandler - DCD SPI0_IRQHandler - DCD SPI1_IRQHandler - DCD I2C0_IRQHandler - DCD I2C0_SMBAlert_IRQHandler - DCD I2C0_SMBus_IRQHandler - DCD I2C1_IRQHandler - DCD I2C1_SMBAlert_IRQHandler - DCD I2C1_SMBus_IRQHandler - DCD Timer1_IRQHandler - DCD Timer2_IRQHandler - DCD PLL_Lock_IRQHandler - DCD PLL_LockLost_IRQHandler - DCD CommError_IRQHandler - DCD 0 - DCD 0 - DCD 0 - DCD 0 - DCD 0 - DCD 0 - DCD Fabric_IRQHandler - DCD GPIO0_IRQHandler - DCD GPIO1_IRQHandler - DCD GPIO2_IRQHandler - DCD GPIO3_IRQHandler - DCD GPIO4_IRQHandler - DCD GPIO5_IRQHandler - DCD GPIO6_IRQHandler - DCD GPIO7_IRQHandler - DCD GPIO8_IRQHandler - DCD GPIO9_IRQHandler - DCD GPIO10_IRQHandler - DCD GPIO11_IRQHandler - DCD GPIO12_IRQHandler - DCD GPIO13_IRQHandler - DCD GPIO14_IRQHandler - DCD GPIO15_IRQHandler - DCD GPIO16_IRQHandler - DCD GPIO17_IRQHandler - DCD GPIO18_IRQHandler - DCD GPIO19_IRQHandler - DCD GPIO20_IRQHandler - DCD GPIO21_IRQHandler - DCD GPIO22_IRQHandler - DCD GPIO23_IRQHandler - DCD GPIO24_IRQHandler - DCD GPIO25_IRQHandler - DCD GPIO26_IRQHandler - DCD GPIO27_IRQHandler - DCD GPIO28_IRQHandler - DCD GPIO29_IRQHandler - DCD GPIO30_IRQHandler - DCD GPIO31_IRQHandler - DCD ACE_PC0_Flag0_IRQHandler - DCD ACE_PC0_Flag1_IRQHandler - DCD ACE_PC0_Flag2_IRQHandler - DCD ACE_PC0_Flag3_IRQHandler - DCD ACE_PC1_Flag0_IRQHandler - DCD ACE_PC1_Flag1_IRQHandler - DCD ACE_PC1_Flag2_IRQHandler - DCD ACE_PC1_Flag3_IRQHandler - DCD ACE_PC2_Flag0_IRQHandler - DCD ACE_PC2_Flag1_IRQHandler - DCD ACE_PC2_Flag2_IRQHandler - DCD ACE_PC2_Flag3_IRQHandler - DCD ACE_ADC0_DataValid_IRQHandler - DCD ACE_ADC1_DataValid_IRQHandler - DCD ACE_ADC2_DataValid_IRQHandler - DCD ACE_ADC0_CalDone_IRQHandler - DCD ACE_ADC1_CalDone_IRQHandler - DCD ACE_ADC2_CalDone_IRQHandler - DCD ACE_ADC0_CalStart_IRQHandler - DCD ACE_ADC1_CalStart_IRQHandler - DCD ACE_ADC2_CalStart_IRQHandler - DCD ACE_Comp0_Fall_IRQHandler - DCD ACE_Comp1_Fall_IRQHandler - DCD ACE_Comp2_Fall_IRQHandler - DCD ACE_Comp3_Fall_IRQHandler - DCD ACE_Comp4_Fall_IRQHandler - DCD ACE_Comp5_Fall_IRQHandler - DCD ACE_Comp6_Fall_IRQHandler - DCD ACE_Comp7_Fall_IRQHandler - DCD ACE_Comp8_Fall_IRQHandler - DCD ACE_Comp9_Fall_IRQHandler - DCD ACE_Comp10_Fall_IRQHandler - DCD ACE_Comp11_Fall_IRQHandler - DCD ACE_Comp0_Rise_IRQHandler - DCD ACE_Comp1_Rise_IRQHandler - DCD ACE_Comp2_Rise_IRQHandler - DCD ACE_Comp3_Rise_IRQHandler - DCD ACE_Comp4_Rise_IRQHandler - DCD ACE_Comp5_Rise_IRQHandler - DCD ACE_Comp6_Rise_IRQHandler - DCD ACE_Comp7_Rise_IRQHandler - DCD ACE_Comp8_Rise_IRQHandler - DCD ACE_Comp9_Rise_IRQHandler - DCD ACE_Comp10_Rise_IRQHandler - DCD ACE_Comp11_Rise_IRQHandler - DCD ACE_ADC0_FifoFull_IRQHandler - DCD ACE_ADC0_FifoAFull_IRQHandler - DCD ACE_ADC0_FifoEmpty_IRQHandler - DCD ACE_ADC1_FifoFull_IRQHandler - DCD ACE_ADC1_FifoAFull_IRQHandler - DCD ACE_ADC1_FifoEmpty_IRQHandler - DCD ACE_ADC2_FifoFull_IRQHandler - DCD ACE_ADC2_FifoAFull_IRQHandler - DCD ACE_ADC2_FifoEmpty_IRQHandler - DCD ACE_PPE_Flag0_IRQHandler - DCD ACE_PPE_Flag1_IRQHandler - DCD ACE_PPE_Flag2_IRQHandler - DCD ACE_PPE_Flag3_IRQHandler - DCD ACE_PPE_Flag4_IRQHandler - DCD ACE_PPE_Flag5_IRQHandler - DCD ACE_PPE_Flag6_IRQHandler - DCD ACE_PPE_Flag7_IRQHandler - DCD ACE_PPE_Flag8_IRQHandler - DCD ACE_PPE_Flag9_IRQHandler - DCD ACE_PPE_Flag10_IRQHandler - DCD ACE_PPE_Flag11_IRQHandler - DCD ACE_PPE_Flag12_IRQHandler - DCD ACE_PPE_Flag13_IRQHandler - DCD ACE_PPE_Flag14_IRQHandler - DCD ACE_PPE_Flag15_IRQHandler - DCD ACE_PPE_Flag16_IRQHandler - DCD ACE_PPE_Flag17_IRQHandler - DCD ACE_PPE_Flag18_IRQHandler - DCD ACE_PPE_Flag19_IRQHandler - DCD ACE_PPE_Flag20_IRQHandler - DCD ACE_PPE_Flag21_IRQHandler - DCD ACE_PPE_Flag22_IRQHandler - DCD ACE_PPE_Flag23_IRQHandler - DCD ACE_PPE_Flag24_IRQHandler - DCD ACE_PPE_Flag25_IRQHandler - DCD ACE_PPE_Flag26_IRQHandler - DCD ACE_PPE_Flag27_IRQHandler - DCD ACE_PPE_Flag28_IRQHandler - DCD ACE_PPE_Flag29_IRQHandler - DCD ACE_PPE_Flag30_IRQHandler - DCD ACE_PPE_Flag31_IRQHandler - -__Vectors_End - -__Vectors_Size EQU __Vectors_End - __Vectors - - AREA |.text|, CODE, READONLY - - - -;------------------------------------------------------------------------------- -; Reset Handler -; -Reset_Handler PROC - EXPORT Reset_Handler [WEAK] - IMPORT SystemInit - IMPORT __main - LDR R0, =SystemInit - BLX R0 - LDR R0, =__main - BX R0 - ENDP - -;------------------------------------------------------------------------------- -; Dummy Exception Handlers (infinite loops which can be modified) - -NMI_Handler PROC - EXPORT NMI_Handler [WEAK] - B . - ENDP -HardFault_Handler\ - PROC - EXPORT HardFault_Handler [WEAK] - B . - ENDP -MemManage_Handler\ - PROC - EXPORT MemManage_Handler [WEAK] - B . - ENDP -BusFault_Handler\ - PROC - EXPORT BusFault_Handler [WEAK] - B . - ENDP -UsageFault_Handler\ - PROC - EXPORT UsageFault_Handler [WEAK] - B . - ENDP -SVC_Handler PROC - EXPORT SVC_Handler [WEAK] - B . - ENDP -DebugMon_Handler\ - PROC - EXPORT DebugMon_Handler [WEAK] - B . - ENDP -PendSV_Handler PROC - EXPORT PendSV_Handler [WEAK] - B . - ENDP -SysTick_Handler PROC - EXPORT SysTick_Handler [WEAK] - B . - ENDP - -Default_Handler PROC - - EXPORT WdogWakeup_IRQHandler [WEAK] - EXPORT BrownOut_1_5V_IRQHandler [WEAK] - EXPORT BrownOut_3_3V_IRQHandler [WEAK] - EXPORT RTC_Match_IRQHandler [WEAK] - EXPORT RTCIF_Pub_IRQHandler [WEAK] - EXPORT EthernetMAC_IRQHandler [WEAK] - EXPORT IAP_IRQHandler [WEAK] - EXPORT ENVM0_IRQHandler [WEAK] - EXPORT ENVM1_IRQHandler [WEAK] - EXPORT DMA_IRQHandler [WEAK] - EXPORT UART0_IRQHandler [WEAK] - EXPORT UART1_IRQHandler [WEAK] - EXPORT SPI0_IRQHandler [WEAK] - EXPORT SPI1_IRQHandler [WEAK] - EXPORT I2C0_IRQHandler [WEAK] - EXPORT I2C0_SMBAlert_IRQHandler [WEAK] - EXPORT I2C0_SMBus_IRQHandler [WEAK] - EXPORT I2C1_IRQHandler [WEAK] - EXPORT I2C1_SMBAlert_IRQHandler [WEAK] - EXPORT I2C1_SMBus_IRQHandler [WEAK] - EXPORT Timer1_IRQHandler [WEAK] - EXPORT Timer2_IRQHandler [WEAK] - EXPORT PLL_Lock_IRQHandler [WEAK] - EXPORT PLL_LockLost_IRQHandler [WEAK] - EXPORT CommError_IRQHandler [WEAK] - EXPORT Fabric_IRQHandler [WEAK] - EXPORT GPIO0_IRQHandler [WEAK] - EXPORT GPIO1_IRQHandler [WEAK] - EXPORT GPIO2_IRQHandler [WEAK] - EXPORT GPIO3_IRQHandler [WEAK] - EXPORT GPIO4_IRQHandler [WEAK] - EXPORT GPIO5_IRQHandler [WEAK] - EXPORT GPIO6_IRQHandler [WEAK] - EXPORT GPIO7_IRQHandler [WEAK] - EXPORT GPIO8_IRQHandler [WEAK] - EXPORT GPIO9_IRQHandler [WEAK] - EXPORT GPIO10_IRQHandler [WEAK] - EXPORT GPIO11_IRQHandler [WEAK] - EXPORT GPIO12_IRQHandler [WEAK] - EXPORT GPIO13_IRQHandler [WEAK] - EXPORT GPIO14_IRQHandler [WEAK] - EXPORT GPIO15_IRQHandler [WEAK] - EXPORT GPIO16_IRQHandler [WEAK] - EXPORT GPIO17_IRQHandler [WEAK] - EXPORT GPIO18_IRQHandler [WEAK] - EXPORT GPIO19_IRQHandler [WEAK] - EXPORT GPIO20_IRQHandler [WEAK] - EXPORT GPIO21_IRQHandler [WEAK] - EXPORT GPIO22_IRQHandler [WEAK] - EXPORT GPIO23_IRQHandler [WEAK] - EXPORT GPIO24_IRQHandler [WEAK] - EXPORT GPIO25_IRQHandler [WEAK] - EXPORT GPIO26_IRQHandler [WEAK] - EXPORT GPIO27_IRQHandler [WEAK] - EXPORT GPIO28_IRQHandler [WEAK] - EXPORT GPIO29_IRQHandler [WEAK] - EXPORT GPIO30_IRQHandler [WEAK] - EXPORT GPIO31_IRQHandler [WEAK] - EXPORT ACE_PC0_Flag0_IRQHandler [WEAK] - EXPORT ACE_PC0_Flag1_IRQHandler [WEAK] - EXPORT ACE_PC0_Flag2_IRQHandler [WEAK] - EXPORT ACE_PC0_Flag3_IRQHandler [WEAK] - EXPORT ACE_PC1_Flag0_IRQHandler [WEAK] - EXPORT ACE_PC1_Flag1_IRQHandler [WEAK] - EXPORT ACE_PC1_Flag2_IRQHandler [WEAK] - EXPORT ACE_PC1_Flag3_IRQHandler [WEAK] - EXPORT ACE_PC2_Flag0_IRQHandler [WEAK] - EXPORT ACE_PC2_Flag1_IRQHandler [WEAK] - EXPORT ACE_PC2_Flag2_IRQHandler [WEAK] - EXPORT ACE_PC2_Flag3_IRQHandler [WEAK] - EXPORT ACE_ADC0_DataValid_IRQHandler [WEAK] - EXPORT ACE_ADC1_DataValid_IRQHandler [WEAK] - EXPORT ACE_ADC2_DataValid_IRQHandler [WEAK] - EXPORT ACE_ADC0_CalDone_IRQHandler [WEAK] - EXPORT ACE_ADC1_CalDone_IRQHandler [WEAK] - EXPORT ACE_ADC2_CalDone_IRQHandler [WEAK] - EXPORT ACE_ADC0_CalStart_IRQHandler [WEAK] - EXPORT ACE_ADC1_CalStart_IRQHandler [WEAK] - EXPORT ACE_ADC2_CalStart_IRQHandler [WEAK] - EXPORT ACE_Comp0_Fall_IRQHandler [WEAK] - EXPORT ACE_Comp1_Fall_IRQHandler [WEAK] - EXPORT ACE_Comp2_Fall_IRQHandler [WEAK] - EXPORT ACE_Comp3_Fall_IRQHandler [WEAK] - EXPORT ACE_Comp4_Fall_IRQHandler [WEAK] - EXPORT ACE_Comp5_Fall_IRQHandler [WEAK] - EXPORT ACE_Comp6_Fall_IRQHandler [WEAK] - EXPORT ACE_Comp7_Fall_IRQHandler [WEAK] - EXPORT ACE_Comp8_Fall_IRQHandler [WEAK] - EXPORT ACE_Comp9_Fall_IRQHandler [WEAK] - EXPORT ACE_Comp10_Fall_IRQHandler [WEAK] - EXPORT ACE_Comp11_Fall_IRQHandler [WEAK] - EXPORT ACE_Comp0_Rise_IRQHandler [WEAK] - EXPORT ACE_Comp1_Rise_IRQHandler [WEAK] - EXPORT ACE_Comp2_Rise_IRQHandler [WEAK] - EXPORT ACE_Comp3_Rise_IRQHandler [WEAK] - EXPORT ACE_Comp4_Rise_IRQHandler [WEAK] - EXPORT ACE_Comp5_Rise_IRQHandler [WEAK] - EXPORT ACE_Comp6_Rise_IRQHandler [WEAK] - EXPORT ACE_Comp7_Rise_IRQHandler [WEAK] - EXPORT ACE_Comp8_Rise_IRQHandler [WEAK] - EXPORT ACE_Comp9_Rise_IRQHandler [WEAK] - EXPORT ACE_Comp10_Rise_IRQHandler [WEAK] - EXPORT ACE_Comp11_Rise_IRQHandler [WEAK] - EXPORT ACE_ADC0_FifoFull_IRQHandler [WEAK] - EXPORT ACE_ADC0_FifoAFull_IRQHandler [WEAK] - EXPORT ACE_ADC0_FifoEmpty_IRQHandler [WEAK] - EXPORT ACE_ADC1_FifoFull_IRQHandler [WEAK] - EXPORT ACE_ADC1_FifoAFull_IRQHandler [WEAK] - EXPORT ACE_ADC1_FifoEmpty_IRQHandler [WEAK] - EXPORT ACE_ADC2_FifoFull_IRQHandler [WEAK] - EXPORT ACE_ADC2_FifoAFull_IRQHandler [WEAK] - EXPORT ACE_ADC2_FifoEmpty_IRQHandler [WEAK] - EXPORT ACE_PPE_Flag0_IRQHandler [WEAK] - EXPORT ACE_PPE_Flag1_IRQHandler [WEAK] - EXPORT ACE_PPE_Flag2_IRQHandler [WEAK] - EXPORT ACE_PPE_Flag3_IRQHandler [WEAK] - EXPORT ACE_PPE_Flag4_IRQHandler [WEAK] - EXPORT ACE_PPE_Flag5_IRQHandler [WEAK] - EXPORT ACE_PPE_Flag6_IRQHandler [WEAK] - EXPORT ACE_PPE_Flag7_IRQHandler [WEAK] - EXPORT ACE_PPE_Flag8_IRQHandler [WEAK] - EXPORT ACE_PPE_Flag9_IRQHandler [WEAK] - EXPORT ACE_PPE_Flag10_IRQHandler [WEAK] - EXPORT ACE_PPE_Flag11_IRQHandler [WEAK] - EXPORT ACE_PPE_Flag12_IRQHandler [WEAK] - EXPORT ACE_PPE_Flag13_IRQHandler [WEAK] - EXPORT ACE_PPE_Flag14_IRQHandler [WEAK] - EXPORT ACE_PPE_Flag15_IRQHandler [WEAK] - EXPORT ACE_PPE_Flag16_IRQHandler [WEAK] - EXPORT ACE_PPE_Flag17_IRQHandler [WEAK] - EXPORT ACE_PPE_Flag18_IRQHandler [WEAK] - EXPORT ACE_PPE_Flag19_IRQHandler [WEAK] - EXPORT ACE_PPE_Flag20_IRQHandler [WEAK] - EXPORT ACE_PPE_Flag21_IRQHandler [WEAK] - EXPORT ACE_PPE_Flag22_IRQHandler [WEAK] - EXPORT ACE_PPE_Flag23_IRQHandler [WEAK] - EXPORT ACE_PPE_Flag24_IRQHandler [WEAK] - EXPORT ACE_PPE_Flag25_IRQHandler [WEAK] - EXPORT ACE_PPE_Flag26_IRQHandler [WEAK] - EXPORT ACE_PPE_Flag27_IRQHandler [WEAK] - EXPORT ACE_PPE_Flag28_IRQHandler [WEAK] - EXPORT ACE_PPE_Flag29_IRQHandler [WEAK] - EXPORT ACE_PPE_Flag30_IRQHandler [WEAK] - EXPORT ACE_PPE_Flag31_IRQHandler [WEAK] - - -WdogWakeup_IRQHandler -BrownOut_1_5V_IRQHandler -BrownOut_3_3V_IRQHandler -RTC_Match_IRQHandler -RTCIF_Pub_IRQHandler -EthernetMAC_IRQHandler -IAP_IRQHandler -ENVM0_IRQHandler -ENVM1_IRQHandler -DMA_IRQHandler -UART0_IRQHandler -UART1_IRQHandler -SPI0_IRQHandler -SPI1_IRQHandler -I2C0_IRQHandler -I2C0_SMBAlert_IRQHandler -I2C0_SMBus_IRQHandler -I2C1_IRQHandler -I2C1_SMBAlert_IRQHandler -I2C1_SMBus_IRQHandler -Timer1_IRQHandler -Timer2_IRQHandler -PLL_Lock_IRQHandler -PLL_LockLost_IRQHandler -CommError_IRQHandler -Fabric_IRQHandler -GPIO0_IRQHandler -GPIO1_IRQHandler -GPIO2_IRQHandler -GPIO3_IRQHandler -GPIO4_IRQHandler -GPIO5_IRQHandler -GPIO6_IRQHandler -GPIO7_IRQHandler -GPIO8_IRQHandler -GPIO9_IRQHandler -GPIO10_IRQHandler -GPIO11_IRQHandler -GPIO12_IRQHandler -GPIO13_IRQHandler -GPIO14_IRQHandler -GPIO15_IRQHandler -GPIO16_IRQHandler -GPIO17_IRQHandler -GPIO18_IRQHandler -GPIO19_IRQHandler -GPIO20_IRQHandler -GPIO21_IRQHandler -GPIO22_IRQHandler -GPIO23_IRQHandler -GPIO24_IRQHandler -GPIO25_IRQHandler -GPIO26_IRQHandler -GPIO27_IRQHandler -GPIO28_IRQHandler -GPIO29_IRQHandler -GPIO30_IRQHandler -GPIO31_IRQHandler -ACE_PC0_Flag0_IRQHandler -ACE_PC0_Flag1_IRQHandler -ACE_PC0_Flag2_IRQHandler -ACE_PC0_Flag3_IRQHandler -ACE_PC1_Flag0_IRQHandler -ACE_PC1_Flag1_IRQHandler -ACE_PC1_Flag2_IRQHandler -ACE_PC1_Flag3_IRQHandler -ACE_PC2_Flag0_IRQHandler -ACE_PC2_Flag1_IRQHandler -ACE_PC2_Flag2_IRQHandler -ACE_PC2_Flag3_IRQHandler -ACE_ADC0_DataValid_IRQHandler -ACE_ADC1_DataValid_IRQHandler -ACE_ADC2_DataValid_IRQHandler -ACE_ADC0_CalDone_IRQHandler -ACE_ADC1_CalDone_IRQHandler -ACE_ADC2_CalDone_IRQHandler -ACE_ADC0_CalStart_IRQHandler -ACE_ADC1_CalStart_IRQHandler -ACE_ADC2_CalStart_IRQHandler -ACE_Comp0_Fall_IRQHandler -ACE_Comp1_Fall_IRQHandler -ACE_Comp2_Fall_IRQHandler -ACE_Comp3_Fall_IRQHandler -ACE_Comp4_Fall_IRQHandler -ACE_Comp5_Fall_IRQHandler -ACE_Comp6_Fall_IRQHandler -ACE_Comp7_Fall_IRQHandler -ACE_Comp8_Fall_IRQHandler -ACE_Comp9_Fall_IRQHandler -ACE_Comp10_Fall_IRQHandler -ACE_Comp11_Fall_IRQHandler -ACE_Comp0_Rise_IRQHandler -ACE_Comp1_Rise_IRQHandler -ACE_Comp2_Rise_IRQHandler -ACE_Comp3_Rise_IRQHandler -ACE_Comp4_Rise_IRQHandler -ACE_Comp5_Rise_IRQHandler -ACE_Comp6_Rise_IRQHandler -ACE_Comp7_Rise_IRQHandler -ACE_Comp8_Rise_IRQHandler -ACE_Comp9_Rise_IRQHandler -ACE_Comp10_Rise_IRQHandler -ACE_Comp11_Rise_IRQHandler -ACE_ADC0_FifoFull_IRQHandler -ACE_ADC0_FifoAFull_IRQHandler -ACE_ADC0_FifoEmpty_IRQHandler -ACE_ADC1_FifoFull_IRQHandler -ACE_ADC1_FifoAFull_IRQHandler -ACE_ADC1_FifoEmpty_IRQHandler -ACE_ADC2_FifoFull_IRQHandler -ACE_ADC2_FifoAFull_IRQHandler -ACE_ADC2_FifoEmpty_IRQHandler -ACE_PPE_Flag0_IRQHandler -ACE_PPE_Flag1_IRQHandler -ACE_PPE_Flag2_IRQHandler -ACE_PPE_Flag3_IRQHandler -ACE_PPE_Flag4_IRQHandler -ACE_PPE_Flag5_IRQHandler -ACE_PPE_Flag6_IRQHandler -ACE_PPE_Flag7_IRQHandler -ACE_PPE_Flag8_IRQHandler -ACE_PPE_Flag9_IRQHandler -ACE_PPE_Flag10_IRQHandler -ACE_PPE_Flag11_IRQHandler -ACE_PPE_Flag12_IRQHandler -ACE_PPE_Flag13_IRQHandler -ACE_PPE_Flag14_IRQHandler -ACE_PPE_Flag15_IRQHandler -ACE_PPE_Flag16_IRQHandler -ACE_PPE_Flag17_IRQHandler -ACE_PPE_Flag18_IRQHandler -ACE_PPE_Flag19_IRQHandler -ACE_PPE_Flag20_IRQHandler -ACE_PPE_Flag21_IRQHandler -ACE_PPE_Flag22_IRQHandler -ACE_PPE_Flag23_IRQHandler -ACE_PPE_Flag24_IRQHandler -ACE_PPE_Flag25_IRQHandler -ACE_PPE_Flag26_IRQHandler -ACE_PPE_Flag27_IRQHandler -ACE_PPE_Flag28_IRQHandler -ACE_PPE_Flag29_IRQHandler -ACE_PPE_Flag30_IRQHandler -ACE_PPE_Flag31_IRQHandler - - B . - - ENDP - - - ALIGN - - -;------------------------------------------------------------------------------- -; User Initial Stack & Heap - - IF :DEF:__MICROLIB - - EXPORT __initial_sp - EXPORT __heap_base - EXPORT __heap_limit - - ELSE - - IMPORT __use_two_region_memory - EXPORT __user_initial_stackheap -__user_initial_stackheap - - LDR R0, = Heap_Mem - LDR R1, =(Stack_Mem + Stack_Size) - LDR R2, = (Heap_Mem + Heap_Size) - LDR R3, = Stack_Mem - BX LR - - ALIGN - - ENDIF - - - END diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/CMSIS/system_a2fxxxm3.c b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/CMSIS/system_a2fxxxm3.c deleted file mode 100644 index 1b3798f3e..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/CMSIS/system_a2fxxxm3.c +++ /dev/null @@ -1,199 +0,0 @@ -/******************************************************************************* - * (c) Copyright 2009 Actel Corporation. All rights reserved. - * - * SmartFusion A2FxxxM3 CMSIS system initialization. - * - * SVN $Revision: 2069 $ - * SVN $Date: 2010-01-28 00:23:48 +0000 (Thu, 28 Jan 2010) $ - */ -#include "a2fxxxm3.h" -#include "mss_assert.h" - -/* System frequency (FCLK) coming out of reset is 25MHz. */ -#define RESET_SYSCLCK_FREQ 25000000uL - -/* - * SmartFusion Microcontroller Subsystem FLCK frequency. - * The value of SMARTFUSION_FCLK_FREQ is used to report the system's clock - * frequency in system's which either do not use the Actel System Boot or - * a version of the Actel System Boot older than 1.3.1. In eitehr of these cases - * SMARTFUSION_FCLK_FREQ should be defined in the projects settings to reflect - * the FCLK frequency selected in the Libero MSS configurator. - * Systems using the Actel System Boot version 1.3.1 or later do not require this - * define since the system's frequency is retrieved from eNVM spare pages where - * the MSS Configurator stored the frequency selected during hardware design/configuration. - */ -#ifdef SMARTFUSION_FCLK_FREQ -#define SMARTFUSION_FCLK_FREQ_DEFINED 1 -#else -#define SMARTFUSION_FCLK_FREQ_DEFINED 0 -#define SMARTFUSION_FCLK_FREQ RESET_SYSCLCK_FREQ -#endif - -/* Divider values for APB0, APB1 and ACE clocks. */ -#define RESET_PCLK0_DIV 4uL -#define RESET_PCLK1_DIV 4uL -#define RESET_ACE_DIV 4uL -#define RESET_FPGA_CLK_DIV 4uL - -/* System register clock control mask and shift for PCLK dividers. */ -#define PCLK_DIV_MASK 0x00000003uL -#define PCLK0_DIV_SHIFT 2uL -#define PCLK1_DIV_SHIFT 4uL -#define ACE_DIV_SHIFT 6uL - -/* System register MSS_CCC_DIV_CR mask and shift for GLB (FPGA fabric clock). */ -#define OBDIV_SHIFT 8uL -#define OBDIV_MASK 0x0000001FuL -#define OBDIVHALF_SHIFT 13uL -#define OBDIVHALF_MASK 0x00000001uL - -/* - * Actel system boot version defines used to extract the system clock from eNVM - * spare pages. - * These defines allow detecting the presence of Actel system boot in eNVM spare - * pages and the version of that system boot executable and associated - * configuration data. - */ -#define SYSBOOT_KEY_ADDR (uint32_t *)0x6008081C -#define SYSBOOT_KEY_VALUE 0x4C544341uL -#define SYSBOOT_VERSION_ADDR (uint32_t *)0x60080840 -#define SYSBOOT_1_3_FCLK_ADDR (uint32_t *)0x6008162C -#define SYSBOOT_2_x_FCLK_ADDR (uint32_t *)0x60081EAC - -/* - * The system boot version is stored in the least significant 24 bits of a word. - * The FCLK is stored in eNVM from version 1.3.1 of the system boot. We expect - * that the major version number of the system boot version will change if the - * system boot configuration data layout needs to change. - */ -#define SYSBOOT_VERSION_MASK 0x00FFFFFFuL -#define MIN_SYSBOOT_VERSION 0x00010301uL -#define SYSBOOT_VERSION_2_X 0x00020000uL -#define MAX_SYSBOOT_VERSION 0x00030000uL - -/* Standard CMSIS global variables. */ -uint32_t SystemFrequency = SMARTFUSION_FCLK_FREQ; /*!< System Clock Frequency (Core Clock) */ -uint32_t SystemCoreClock = SMARTFUSION_FCLK_FREQ; /*!< System Clock Frequency (Core Clock) */ - -/* SmartFusion specific clocks. */ -uint32_t g_FrequencyPCLK0 = (SMARTFUSION_FCLK_FREQ / RESET_PCLK0_DIV); /*!< Clock frequency of APB bus 0. */ -uint32_t g_FrequencyPCLK1 = (SMARTFUSION_FCLK_FREQ / RESET_PCLK1_DIV); /*!< Clock frequency of APB bus 1. */ -uint32_t g_FrequencyACE = (SMARTFUSION_FCLK_FREQ / RESET_ACE_DIV); /*!< Clock frequency of Analog Compute Engine. */ -uint32_t g_FrequencyFPGA = (SMARTFUSION_FCLK_FREQ / RESET_FPGA_CLK_DIV); /*!< Clock frequecny of FPGA fabric */ - -/* Local functions */ -static uint32_t GetSystemClock( void ); - -/***************************************************************************//** - * See system_a2fm3fxxx.h for details. - */ -void SystemInit(void) -{ -} - -/***************************************************************************//** - * - */ -void SystemCoreClockUpdate (void) -{ - uint32_t PclkDiv0; - uint32_t PclkDiv1; - uint32_t AceDiv; - uint32_t FabDiv; - - const uint32_t pclk_div_lut[4] = { 1uL, 2uL, 4uL, 1uL }; - - /* Read PCLK dividers from system registers. Multiply the value read from - * system register by two to get actual divider value. */ - PclkDiv0 = pclk_div_lut[((SYSREG->MSS_CLK_CR >> PCLK0_DIV_SHIFT) & PCLK_DIV_MASK)]; - PclkDiv1 = pclk_div_lut[((SYSREG->MSS_CLK_CR >> PCLK1_DIV_SHIFT) & PCLK_DIV_MASK)]; - AceDiv = pclk_div_lut[((SYSREG->MSS_CLK_CR >> ACE_DIV_SHIFT) & PCLK_DIV_MASK)]; - { - /* Compute the FPGA fabric frequency divider. */ - uint32_t obdiv; - uint32_t obdivhalf; - - obdiv = (SYSREG->MSS_CCC_DIV_CR >> OBDIV_SHIFT) & OBDIV_MASK; - obdivhalf = (SYSREG->MSS_CCC_DIV_CR >> OBDIVHALF_SHIFT) & OBDIVHALF_MASK; - FabDiv = obdiv + 1uL; - if ( obdivhalf != 0uL ) - { - FabDiv = FabDiv * 2uL; - } - } - - /* Retrieve FCLK from eNVM spare pages if Actel system boot programmed as part of the system. */ - - /* Read system clock from eNVM spare pages. */ - SystemCoreClock = GetSystemClock(); - g_FrequencyPCLK0 = SystemCoreClock / PclkDiv0; - g_FrequencyPCLK1 = SystemCoreClock / PclkDiv1; - g_FrequencyACE = SystemCoreClock / AceDiv; - g_FrequencyFPGA = SystemCoreClock / FabDiv; - - /* Keep SystemFrequency as well as SystemCoreClock for legacy reasons. */ - SystemFrequency = SystemCoreClock; -} - -/***************************************************************************//** - * Retrieve the system clock frequency from eNVM spare page if available. - * Returns the frequency defined through SMARTFUSION_FCLK_FREQ if FCLK cannot be - * retrieved from eNVM spare pages. - * The FCLK frequency value selected in the MSS Configurator software tool is - * stored in eNVM spare pages as part of the Actel system boot configuration data. - */ -uint32_t GetSystemClock( void ) -{ - uint32_t fclk = 0uL; - - uint32_t * p_sysboot_key = SYSBOOT_KEY_ADDR; - - if ( SYSBOOT_KEY_VALUE == *p_sysboot_key ) - { - /* Actel system boot programmed, check if it has the FCLK value stored. */ - uint32_t *p_sysboot_version = SYSBOOT_VERSION_ADDR; - uint32_t sysboot_version = *p_sysboot_version; - - sysboot_version &= SYSBOOT_VERSION_MASK; - - if ( sysboot_version >= MIN_SYSBOOT_VERSION ) - { - /* Handle change of eNVM location of FCLK between 1.3.x and 2.x.x versions of the system boot. */ - if ( sysboot_version < SYSBOOT_VERSION_2_X ) - { - /* Read FCLK value from MSS configurator generated configuration - * data stored in eNVM spare pages as part of system boot version 1.3.x - * configuration tables. */ - uint32_t *p_fclk = SYSBOOT_1_3_FCLK_ADDR; - fclk = *p_fclk; - } - else if ( sysboot_version < MAX_SYSBOOT_VERSION ) - { - /* Read FCLK value from MSS configurator generated configuration - * data stored in eNVM spare pages as part of system boot version 2.x.x - * configuration tables. */ - uint32_t *p_fclk = SYSBOOT_2_x_FCLK_ADDR; - fclk = *p_fclk; - } - else - { - fclk = 0uL; - } - } - } - - if ( 0uL == fclk ) - { - /* - * Could not retrieve FCLK from system boot configuration data. Fall back - * to using SMARTFUSION_FCLK_FREQ which must then be defined as part of - * project settings. - */ - ASSERT( SMARTFUSION_FCLK_FREQ_DEFINED ); - fclk = SMARTFUSION_FCLK_FREQ; - } - - return fclk; -} - diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/CMSIS/system_a2fxxxm3.h b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/CMSIS/system_a2fxxxm3.h deleted file mode 100644 index 6ae0ad5b7..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/CMSIS/system_a2fxxxm3.h +++ /dev/null @@ -1,49 +0,0 @@ -/******************************************************************************* - * (c) Copyright 2009 Actel Corporation. All rights reserved. - * - * SmartFusion A2FxxxM3 CMSIS system initialization. - * - * SVN $Revision: 2064 $ - * SVN $Date: 2010-01-27 15:05:58 +0000 (Wed, 27 Jan 2010) $ - */ - -#ifndef __SYSTEM_A2FM3FXX_H__ -#define __SYSTEM_A2FM3FXX_H__ - -#ifdef __cplusplus -extern "C" { -#endif - -/* Standard CMSIS global variables. */ -extern uint32_t SystemFrequency; /*!< System Clock Frequency (Core Clock) */ -extern uint32_t SystemCoreClock; /*!< System Clock Frequency (Core Clock) */ - -/* SmartFusion specific clocks. */ -extern uint32_t g_FrequencyPCLK0; /*!< Clock frequency of APB bus 0. */ -extern uint32_t g_FrequencyPCLK1; /*!< Clock frequency of APB bus 1. */ -extern uint32_t g_FrequencyACE; /*!< Clock frequency of Analog Compute Engine. */ -extern uint32_t g_FrequencyFPGA; /*!< Clock frequecny of FPGA fabric */ - -/***************************************************************************//** - * The SystemInit() is a standard CMSIS function called during system startup. - * It is meant to perform low level hardware setup such as configuring PLLs. In - * the case of SmartFusion these hardware setup operations are performed by the - * chip boot which executed before the application started. Therefore this - * function does not need to perform any hardware setup. - */ -void SystemInit(void); - -/***************************************************************************//** - * The SystemCoreClockUpdate() is a standard CMSIS function which can be called - * by the application in order to ensure that the SystemCoreClock global - * variable contains the up to date Cortex-M3 core frequency. Calling this - * function also updates the global variables containing the frequencies of the - * APB busses connecting the peripherals and the ACE frequency. - */ -void SystemCoreClockUpdate(void); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/I2C/i2c.c b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/I2C/i2c.c deleted file mode 100644 index 595e71844..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/I2C/i2c.c +++ /dev/null @@ -1,835 +0,0 @@ -/******************************************************************************* - * (c) Copyright 2007-2008 Actel Corporation. All rights reserved. - * - * SmartFusion microcontroller subsystem I2C bare metal software driver - * implementation. - * - * SVN $Revision: 2152 $ - * SVN $Date: 2010-02-11 14:44:11 +0000 (Thu, 11 Feb 2010) $ - */ - - -#include "i2c.h" -#include "../../CMSIS/mss_assert.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/*------------------------------------------------------------------------------ - * I2C transaction direction. - */ -#define WRITE_DIR 0 -#define READ_DIR 1 - -/* -- TRANSACTIONS TYPES -- */ -#define NO_TRANSACTION 0 -#define MASTER_WRITE_TRANSACTION 1 -#define MASTER_READ_TRANSACTION 2 -#define MASTER_RANDOM_READ_TRANSACTION 3 -#define WRITE_SLAVE_TRANSACTION 4 -#define READ_SLAVE_TRANSACTION 5 -#define RANDOM_READ_SLAVE_TRANSACTION 6 - - -/* -- SMBUS H/W STATES -- */ -/* -- MASTER STATES -- */ -#define ST_START 0x08 /* start condition sent */ -#define ST_RESTART 0x10 /* repeated start */ -#define ST_SLAW_ACK 0x18 /* SLA+W sent, ack received */ -#define ST_SLAW_NACK 0x20 /* SLA+W sent, nack received */ -#define ST_TX_DATA_ACK 0x28 /* Data sent, ACK'ed */ -#define ST_TX_DATA_NACK 0x30 /* Data sent, NACK'ed */ -#define ST_LOST_ARB 0x38 /* Master lost arbitration */ -#define ST_SLAR_ACK 0x40 /* SLA+R sent, ACK'ed */ -#define ST_SLAR_NACK 0x48 /* SLA+R sent, NACK'ed */ -#define ST_RX_DATA_ACK 0x50 /* Data received, ACK sent */ -#define ST_RX_DATA_NACK 0x58 /* Data received, NACK sent */ - -/* -- SLAVE STATES -- */ -#define ST_SLAVE_SLAW 0x60 /* SLA+W received */ -#define ST_SLAVE_SLAR_ACK 0xA8 /* SLA+R received, ACK returned */ -#define ST_SLV_LA 0x68 /* Slave lost arbitration */ -#define ST_GCA 0x70 /* GCA received */ -#define ST_GCA_LA 0x78 /* GCA lost arbitration */ -#define ST_RDATA 0x80 /* Data received */ -#define ST_SLA_NACK 0x88 /* Slave addressed, NACK returned */ -#define ST_GCA_ACK 0x90 /* Previously addresses with GCA, data ACKed */ -#define ST_GCA_NACK 0x98 /* GCA addressed, NACK returned */ -#define ST_RSTOP 0xA0 /* Stop received */ -#define ST_REPEAT 0xA0 /* Repeated start received */ -#define ST_SLAR_ACKS 0xA8 /* Slave read received, ACKed */ -#define ST_SLARW_LA 0xB0 /* Arbitration lost */ -#define ST_RACK 0xB8 /* Byte sent, ACK received */ -#define ST_SLAVE_RNACK 0xC0 /* Byte sent, NACK received */ -#define ST_FINAL 0xC8 /* Final byte sent, ACK received */ -#define ST_BERR 0x00 /* Error on the bus */ -#define ST_SLV_RST 0xD8 /* Slave reset state */ - -/*------------------------------------------------------------------------------ - * - */ -static uint32_t disable_interrupts( void ); -static void restore_interrupts( uint32_t primask ); -static void mss_i2c_isr( mss_i2c_instance_t * this_i2c ); - -/*------------------------------------------------------------------------------ - * - *------------------------------------------------------------------------------ - * - */ -mss_i2c_instance_t g_mss_i2c0; -mss_i2c_instance_t g_mss_i2c1; - -/*------------------------------------------------------------------------------ - * MSS_I2C_init() - * See "mss_i2c.h" for details of how to use this function. - */ -void MSS_I2C_init -( - mss_i2c_instance_t * this_i2c, - uint8_t ser_address, - mss_i2c_clock_divider_t ser_clock_speed -) -{ - uint_fast16_t clock_speed = ser_clock_speed; - - ASSERT( (this_i2c == &g_mss_i2c0) || (this_i2c == &g_mss_i2c1) ); - - if ( this_i2c == &g_mss_i2c0 ) - { - this_i2c->irqn = I2C0_IRQn; - this_i2c->hw_reg = I2C0; - this_i2c->hw_reg_bit = I2C0_BITBAND; - - /* reset I2C0 */ - SYSREG->SOFT_RST_CR |= SYSREG_I2C0_SOFTRESET_MASK; - /* Clear any previously pended I2C0 interrupt */ - NVIC_ClearPendingIRQ( I2C0_IRQn ); - /* Take I2C0 out of reset. */ - SYSREG->SOFT_RST_CR &= ~SYSREG_I2C0_SOFTRESET_MASK; - } - else - { - this_i2c->irqn = I2C1_IRQn; - this_i2c->hw_reg = I2C1; - this_i2c->hw_reg_bit = I2C1_BITBAND; - - /* reset I2C1 */ - SYSREG->SOFT_RST_CR |= SYSREG_I2C1_SOFTRESET_MASK; - /* Clear any previously pended I2C1 interrupt */ - NVIC_ClearPendingIRQ( I2C1_IRQn ); - /* Take I2C1 out of reset. */ - SYSREG->SOFT_RST_CR &= ~SYSREG_I2C1_SOFTRESET_MASK; - } - - this_i2c->transaction = NO_TRANSACTION; - - this_i2c->ser_address = ser_address; - - this_i2c->tx_buffer = 0; - this_i2c->tx_size = 0; - this_i2c->tx_idx = 0; - - this_i2c->rx_buffer = 0; - this_i2c->rx_size = 0; - this_i2c->rx_idx = 0; - - this_i2c->status = MSS_I2C_SUCCESS; - - this_i2c->random_read_addr = 0; - - this_i2c->slave_write_handler = 0; - this_i2c->slave_mem_offset_length = 0; - - this_i2c->hw_reg_bit->CTRL_ENS1 = 0x01; /* set enable bit */ - this_i2c->hw_reg_bit->CTRL_CR2 = (clock_speed >> 2) & 0x01; - this_i2c->hw_reg_bit->CTRL_CR1 = (clock_speed >> 1) & 0x01; - this_i2c->hw_reg_bit->CTRL_CR0 = clock_speed & 0x01; - this_i2c->hw_reg->ADDR = this_i2c->ser_address; - - /* The interrupt can cause a context switch, so ensure its priority is - between configKERNEL_INTERRUPT_PRIORITY and configMAX_SYSCALL_INTERRUPT_PRIORITY. */ - NVIC_SetPriority( this_i2c->irqn, configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY ); - - vSemaphoreCreateBinary( ( this_i2c->xI2CCompleteSemaphore ) ); - xSemaphoreTake( ( this_i2c->xI2CCompleteSemaphore ), 0 ); - configASSERT( ( this_i2c->xI2CCompleteSemaphore ) ); -} - -/*------------------------------------------------------------------------------ - * MSS_I2C_set_slave_mem_offset_length() - * See "mss_i2c.h" for details of how to use this function. - */ -void MSS_I2C_set_slave_mem_offset_length -( - mss_i2c_instance_t * this_i2c, - uint8_t offset_length -) -{ - ASSERT( (this_i2c == &g_mss_i2c0) || (this_i2c == &g_mss_i2c1) ); - - this_i2c->slave_mem_offset_length = offset_length; -} - -/*------------------------------------------------------------------------------ - * MSS_I2C_register_write_handler() - * See "mss_i2c.h" for details of how to use this function. - */ -void MSS_I2C_register_write_handler -( - mss_i2c_instance_t * this_i2c, - mss_i2c_slave_wr_handler_t handler -) -{ - ASSERT( (this_i2c == &g_mss_i2c0) || (this_i2c == &g_mss_i2c1) ); - - this_i2c->slave_write_handler = handler; -} - -/*------------------------------------------------------------------------------ - * MSS_I2C_write() - * See "mss_i2c.h" for details of how to use this function. - */ -void MSS_I2C_write -( - mss_i2c_instance_t * this_i2c, - uint8_t serial_addr, - const uint8_t * write_buffer, - uint16_t write_size, - uint8_t options -) -{ - volatile uint8_t stat_ctrl; - uint8_t serial_interrupt; - - uint32_t primask; - - ASSERT( (this_i2c == &g_mss_i2c0) || (this_i2c == &g_mss_i2c1) ); - configASSERT( ( this_i2c->xI2CCompleteSemaphore ) ); - - primask = disable_interrupts(); - - this_i2c->transaction = MASTER_WRITE_TRANSACTION; - - this_i2c->target_addr = serial_addr; - this_i2c->dir = WRITE_DIR; - this_i2c->tx_buffer = write_buffer; - this_i2c->tx_size = write_size; - this_i2c->tx_idx = 0; - - this_i2c->status = MSS_I2C_IN_PROGRESS; - this_i2c->options = options; - - /* Clear interrupts if required (depends on repeated starts).*/ - serial_interrupt = this_i2c->hw_reg_bit->CTRL_SI; - this_i2c->hw_reg_bit->CTRL_STA = 0x01; - - if ( serial_interrupt != 0 ) - { - this_i2c->hw_reg_bit->CTRL_SI = 0x00; - NVIC_ClearPendingIRQ( this_i2c->irqn ); - } - - stat_ctrl = this_i2c->hw_reg->STATUS; - - NVIC_EnableIRQ( this_i2c->irqn ); - - restore_interrupts( primask ); -} - -/*------------------------------------------------------------------------------ - * MSS_I2C_read() - * See "mss_i2c.h" for details of how to use this function. - */ -void MSS_I2C_read -( - mss_i2c_instance_t * this_i2c, - uint8_t serial_addr, - uint8_t * read_buffer, - uint16_t read_size, - uint8_t options -) -{ - uint32_t primask; - - ASSERT( (this_i2c == &g_mss_i2c0) || (this_i2c == &g_mss_i2c1) ); - - if ( read_size > 0 ) - { - volatile uint8_t stat_ctrl; - uint8_t serial_interrupt; - - primask = disable_interrupts(); - - this_i2c->transaction = MASTER_READ_TRANSACTION; - - this_i2c->target_addr = serial_addr; - this_i2c->dir = READ_DIR; - this_i2c->rx_buffer = read_buffer; - this_i2c->rx_size = read_size; - this_i2c->rx_idx = 0; - - this_i2c->status = MSS_I2C_IN_PROGRESS; - - this_i2c->options = options; - - /* Clear interrupts if required (depends on repeated starts).*/ - serial_interrupt = this_i2c->hw_reg_bit->CTRL_SI; - this_i2c->hw_reg_bit->CTRL_STA = 0x01; - - if ( serial_interrupt != 0 ) - { - this_i2c->hw_reg_bit->CTRL_SI = 0x00; - NVIC_ClearPendingIRQ( this_i2c->irqn ); - } - - stat_ctrl = this_i2c->hw_reg->STATUS; - - NVIC_EnableIRQ( this_i2c->irqn ); - - restore_interrupts( primask ); - } -} - -/*------------------------------------------------------------------------------ - * MSS_I2C_write_read() - * See "mss_i2c.h" for details of how to use this function. - */ -void MSS_I2C_write_read -( - mss_i2c_instance_t * this_i2c, - uint8_t serial_addr, - const uint8_t * addr_offset, - uint16_t offset_size, - uint8_t * read_buffer, - uint16_t read_size, - uint8_t options -) -{ - volatile uint8_t stat_ctrl; - uint8_t serial_interrupt; - uint32_t primask; - - ASSERT( (this_i2c == &g_mss_i2c0) || (this_i2c == &g_mss_i2c1) ); - - primask = disable_interrupts(); - - this_i2c->transaction = MASTER_RANDOM_READ_TRANSACTION; - this_i2c->target_addr = serial_addr; - this_i2c->dir = WRITE_DIR; - this_i2c->tx_buffer = addr_offset; - this_i2c->tx_size = offset_size; - this_i2c->tx_idx = 0; - - this_i2c->rx_buffer = read_buffer; - this_i2c->rx_size = read_size; - this_i2c->rx_idx = 0; - - this_i2c->status = MSS_I2C_IN_PROGRESS; - this_i2c->options = options; - - /* Clear interrupts if required (depends on repeated starts).*/ - serial_interrupt = this_i2c->hw_reg_bit->CTRL_SI; - this_i2c->hw_reg_bit->CTRL_STA = 0x01; - - if ( serial_interrupt != 0 ) - { - this_i2c->hw_reg_bit->CTRL_SI = 0x00; - NVIC_ClearPendingIRQ( this_i2c->irqn ); - } - - stat_ctrl = this_i2c->hw_reg->STATUS; - - NVIC_EnableIRQ( this_i2c->irqn ); - - restore_interrupts( primask ); -} - -/*------------------------------------------------------------------------------ - * MSS_I2C_set_slave_rx_buffer() - * See "mss_i2c.h" for details of how to use this function. - */ -void MSS_I2C_set_slave_rx_buffer -( - mss_i2c_instance_t * this_i2c, - uint8_t * rx_buffer, - uint16_t rx_size -) -{ - uint32_t primask; - - ASSERT( (this_i2c == &g_mss_i2c0) || (this_i2c == &g_mss_i2c1) ); - - primask = disable_interrupts(); - - this_i2c->rx_buffer = rx_buffer; - this_i2c->rx_size = rx_size; - this_i2c->rx_idx = 0; - - restore_interrupts( primask ); -} - - -/*------------------------------------------------------------------------------ - * MSS_I2C_get_status() - * See "mss_i2c.h" for details of how to use this function. - */ -mss_i2c_status_t MSS_I2C_get_status -( - mss_i2c_instance_t * this_i2c -) -{ - ASSERT( (this_i2c == &g_mss_i2c0) || (this_i2c == &g_mss_i2c1) ); - - return this_i2c->status; -} - -/*------------------------------------------------------------------------------ - * MSS_I2C_set_slave_tx_buffer() - * See "mss_i2c.h" for details of how to use this function. - */ -void MSS_I2C_set_slave_tx_buffer -( - mss_i2c_instance_t * this_i2c, - uint8_t * tx_buffer, - uint16_t tx_size -) -{ - uint32_t primask; - - ASSERT( (this_i2c == &g_mss_i2c0) || (this_i2c == &g_mss_i2c1) ); - - primask = disable_interrupts(); - - this_i2c->tx_buffer = tx_buffer; - this_i2c->tx_size = tx_size; - this_i2c->tx_idx = 0; - - restore_interrupts( primask ); - - /* Set the assert acknowledge bit. */ - this_i2c->hw_reg_bit->CTRL_AA = 0x01; -} - -/*------------------------------------------------------------------------------ - * MSS_I2C_enable_slave_rx() - * See "mss_i2c.h" for details of how to use this function. - */ -void MSS_I2C_enable_slave_rx -( - mss_i2c_instance_t * this_i2c -) -{ - ASSERT( (this_i2c == &g_mss_i2c0) || (this_i2c == &g_mss_i2c1) ); - - /* Set the assert acknowledge bit. */ - this_i2c->hw_reg_bit->CTRL_AA = 0x01; - /* accept GC addressing. */ - this_i2c->hw_reg_bit->ADDR_GC = 0x01; - - NVIC_EnableIRQ( this_i2c->irqn ); -} - -/*------------------------------------------------------------------------------ - * MSS_I2C_wait_complete() - * See "mss_i2c.h" for details of how to use this function. - */ -mss_i2c_status_t MSS_I2C_wait_complete -( - mss_i2c_instance_t * this_i2c -) -{ - ASSERT( (this_i2c == &g_mss_i2c0) || (this_i2c == &g_mss_i2c1) ); - -#ifdef USE_OLD_I2C_POLLING_CODE - while ( this_i2c->status == MSS_I2C_IN_PROGRESS ) - { - /* Wait for transaction to compltete.*/ - ; - } -#else - configASSERT( ( this_i2c->xI2CCompleteSemaphore ) ); - if( xTaskGetSchedulerState() == taskSCHEDULER_NOT_STARTED ) - { - while ( this_i2c->status == MSS_I2C_IN_PROGRESS ) - { - /* Wait for transaction to compltete.*/ - ; - } - } - else - { - xSemaphoreTake( this_i2c->xI2CCompleteSemaphore, portMAX_DELAY ); - } -#endif - - return this_i2c->status; -} - -/*------------------------------------------------------------------------------ - * MSS I2C interrupt service routine. - *------------------------------------------------------------------------------ - * Parameters: - * - * mss_i2c_instance_t * this_i2c: - * Pointer to the mss_i2c_instance_t data structure holding all data related to - * the MSS I2C instance that generated the interrupt. - */ -static void mss_i2c_isr -( - mss_i2c_instance_t * this_i2c - ) -{ - volatile uint8_t status; - uint8_t data; - uint8_t hold_bus; - uint8_t clear_irq = 1; - long lHigherPriorityTaskWoken = pdFALSE; - configASSERT( ( this_i2c->xI2CCompleteSemaphore ) ); - - ASSERT( (this_i2c == &g_mss_i2c0) || (this_i2c == &g_mss_i2c1) ); - - status = this_i2c->hw_reg->STATUS; - - switch( status ) - { - /************** MASTER TRANSMITTER / RECEIVER *******************/ - - case ST_START: /* start has been xmt'd */ - case ST_RESTART: /* repeated start has been xmt'd */ - this_i2c->hw_reg_bit->CTRL_STA = 0x0; - this_i2c->hw_reg->DATA = this_i2c->target_addr; - this_i2c->hw_reg_bit->DATA_DIR = this_i2c->dir; - - this_i2c->tx_idx = 0; - this_i2c->rx_idx = 0; - break; - - case ST_LOST_ARB: - /* Set start bit. Let's keep trying! Don't give up! */ - this_i2c->hw_reg_bit->CTRL_STA = 0x01; - break; - - /******************* MASTER TRANSMITTER *************************/ - case ST_SLAW_ACK: - /* call address has been xmt'd with ACK, time to send data byte and increment index. */ - if ( this_i2c->tx_idx < this_i2c->tx_size ) - { - /* load data byte */ - this_i2c->hw_reg->DATA = this_i2c->tx_buffer[this_i2c->tx_idx++]; - } - else - { - NVIC_DisableIRQ( this_i2c->irqn ); - } - break; - - case ST_SLAW_NACK: -#if 0 - /* SLA+W has been transmitted; not ACK has been received - let's stop. */ - this_i2c->hw_reg_bit->CTRL_STO = 0x01; - this_i2c->status = MSS_I2C_FAILED; -#endif - /* call address has been xmt'd with ACK, time to send data byte and increment index. */ - if ( this_i2c->tx_idx < this_i2c->tx_size ) - { - /* load data byte */ - this_i2c->hw_reg->DATA = this_i2c->tx_buffer[this_i2c->tx_idx++]; - } - else - { - NVIC_DisableIRQ( this_i2c->irqn ); - } - break; - - case ST_TX_DATA_ACK: - /* data byte has been xmt'd with ACK, time to send stop bit or repeated start. */ - if (this_i2c->tx_idx < this_i2c->tx_size) - { - this_i2c->hw_reg->DATA = this_i2c->tx_buffer[this_i2c->tx_idx++]; - } - else if ( this_i2c->transaction == MASTER_RANDOM_READ_TRANSACTION ) - { - /* We are finished sending the address offset part of a random read transaction. - * It is is time to send a restart in order to change direction. */ - this_i2c->dir = READ_DIR; - this_i2c->hw_reg_bit->CTRL_STA = 0x01; - } - else /* done sending. let's stop */ - { - hold_bus = this_i2c->options & MSS_I2C_HOLD_BUS; - if ( hold_bus == 0 ) - { - this_i2c->hw_reg_bit->CTRL_STO = 0x01; /*xmt stop condition */ - } - else - { - NVIC_DisableIRQ( this_i2c->irqn ); - clear_irq = 0; - } - this_i2c->status = MSS_I2C_SUCCESS; - xSemaphoreGiveFromISR( this_i2c->xI2CCompleteSemaphore, &lHigherPriorityTaskWoken ); - } - break; - - case ST_TX_DATA_NACK: -#if 0 - /* data byte SENT, ACK to be received - * In fact, this means we've received a NACK (This may not be - * obvious, but if we've rec'd an ACK then we would be in state - * 0x28!) hence, let's send a stop bit - */ - this_i2c->hw_reg_bit->CTRL_STO = 0x01; - this_i2c->status = MSS_I2C_FAILED; -#endif - /* data byte has been xmt'd with ACK, time to send stop bit or repeated start. */ - if (this_i2c->tx_idx < this_i2c->tx_size) - { - this_i2c->hw_reg->DATA = this_i2c->tx_buffer[this_i2c->tx_idx++]; - } - else if ( this_i2c->transaction == MASTER_RANDOM_READ_TRANSACTION ) - { - /* We are finished sending the address offset part of a random read transaction. - * It is is time to send a restart in order to change direction. */ - this_i2c->dir = READ_DIR; - this_i2c->hw_reg_bit->CTRL_STA = 0x01; - } - else /* done sending. let's stop */ - { - hold_bus = this_i2c->options & MSS_I2C_HOLD_BUS; - if ( hold_bus == 0 ) - { - this_i2c->hw_reg_bit->CTRL_STO = 0x01; /*xmt stop condition */ - } - else - { - NVIC_DisableIRQ( this_i2c->irqn ); - clear_irq = 0; - } - this_i2c->status = MSS_I2C_SUCCESS; - xSemaphoreGiveFromISR( this_i2c->xI2CCompleteSemaphore, &lHigherPriorityTaskWoken ); - } - break; - - /********************* MASTER (or slave?) RECEIVER *************************/ - - /* STATUS codes 08H, 10H, 38H are all covered in MTX mode */ - case ST_SLAR_ACK: /* SLA+R tx'ed. */ - /* Let's make sure we ACK the first data byte received (set AA bit in CTRL) unless - * the next byte is the last byte of the read transaction. - */ - if( this_i2c->rx_size > 1 ) - { - this_i2c->hw_reg_bit->CTRL_AA = 0x01; - } - else - { - this_i2c->hw_reg_bit->CTRL_AA = 0x00; - } - break; - - case ST_SLAR_NACK: /* SLA+R tx'ed; let's release the bus (send a stop condition) */ - this_i2c->hw_reg_bit->CTRL_STO = 0x01; - this_i2c->status = MSS_I2C_FAILED; - xSemaphoreGiveFromISR( this_i2c->xI2CCompleteSemaphore, &lHigherPriorityTaskWoken ); - break; - - case ST_RX_DATA_ACK: /* Data byte received, ACK returned */ - /* First, get the data */ - this_i2c->rx_buffer[this_i2c->rx_idx++] = this_i2c->hw_reg->DATA; - - if( this_i2c->rx_idx >= this_i2c->rx_size - 1) - { - /* If we're at the second last byte, let's set AA to 0 so - * we return a NACK at the last byte. */ - this_i2c->hw_reg_bit->CTRL_AA = 0x00; - } - break; - - case ST_RX_DATA_NACK: /* Data byte received, NACK returned */ - /* Get the data, then send a stop condition */ - this_i2c->rx_buffer[this_i2c->rx_idx++] = this_i2c->hw_reg->DATA; - - hold_bus = this_i2c->options & MSS_I2C_HOLD_BUS; - if ( hold_bus == 0 ) - { - this_i2c->hw_reg_bit->CTRL_STO = 0x01; /*xmt stop condition */ - } - else - { - NVIC_DisableIRQ( this_i2c->irqn ); - clear_irq = 0; - } - - this_i2c->status = MSS_I2C_SUCCESS; -// xSemaphoreGiveFromISR( this_i2c->xI2CCompleteSemaphore, &lHigherPriorityTaskWoken ); - break; - - /******************** SLAVE RECEIVER **************************/ - case ST_GCA_NACK: /* NACK after, GCA addressing */ - case ST_SLA_NACK: /* Get Data, but also re-enable AA (assert ack) bit for future transmissions */ - if ( this_i2c->rx_buffer != 0 ) - { - this_i2c->rx_buffer[this_i2c->rx_idx] = this_i2c->hw_reg->DATA; - } - this_i2c->hw_reg_bit->CTRL_AA = 0x01; - break; - - case ST_SLAVE_SLAW: /* SLA+W received, ACK returned */ - this_i2c->transaction = WRITE_SLAVE_TRANSACTION; - this_i2c->rx_idx = 0; - this_i2c->random_read_addr = 0; -#ifndef INCLUDE_SLA_IN_RX_PAYLOAD - /* Only break from this case if the slave address must NOT be included at the - * beginning of the received write data. */ - break; -#endif - case ST_GCA_ACK: /* DATA received; ACK sent after GCA */ - case ST_RDATA: /* DATA received; must clear DATA register */ - if (this_i2c->rx_idx >= this_i2c->rx_size - 2) - { - this_i2c->hw_reg_bit->CTRL_AA = 0x00; /* send a NACK when done (next reception) */ - } - data = this_i2c->hw_reg->DATA; - this_i2c->rx_buffer[this_i2c->rx_idx++] = data; - this_i2c->random_read_addr = (this_i2c->random_read_addr << 8) + data; - - break; - - case ST_RSTOP: - /* STOP or repeated START occured. */ - /* We cannot be sure if the transaction has actually completed as - * this hardware state reports that either a STOP or repeated START - * condition has occured. We assume that this is a repeated START - * if the transaction was a write from the master to this point.*/ - if ( this_i2c->transaction == WRITE_SLAVE_TRANSACTION ) - { - if ( this_i2c->rx_idx == this_i2c->slave_mem_offset_length ) - { - this_i2c->transaction = RANDOM_READ_SLAVE_TRANSACTION; - this_i2c->tx_idx = this_i2c->random_read_addr; - } - else - { - /* Call the slave's write transaction handler if it exists. */ - if ( this_i2c->slave_write_handler != 0 ) - { - mss_i2c_slave_handler_ret_t h_ret; - h_ret = this_i2c->slave_write_handler( this_i2c->rx_buffer, (uint16_t)this_i2c->rx_idx ); - if ( MSS_I2C_REENABLE_SLAVE_RX == h_ret ) - { - this_i2c->hw_reg_bit->CTRL_AA = 0x01; - } - else - { - this_i2c->hw_reg_bit->CTRL_AA = 0x00; - } - } - } - } - /* Mark any previous master write transaction as complete. */ - this_i2c->status = MSS_I2C_SUCCESS; -// xSemaphoreGiveFromISR( this_i2c->xI2CCompleteSemaphore, &lHigherPriorityTaskWoken ); - break; - - case ST_SLV_RST: /* SMBUS ONLY: timeout state. must clear interrupt */ - case ST_SLV_LA: /* Arbitr. lost (SLA rec'd) */ - case ST_GCA: /* General call address received, ACK returned */ - case ST_GCA_LA: /* Arbitr. lost (GCA rec'd) */ - /* do nothing */ - break; - - /****************** SLAVE TRANSMITTER **************************/ - case ST_SLAVE_SLAR_ACK: /* SLA+R received, ACK returned */ - case ST_SLARW_LA: /* Arbitration lost, and: */ - case ST_RACK: /* Data tx'ed, ACK received */ - if ( status == ST_SLAVE_SLAR_ACK ) - { - this_i2c->transaction = READ_SLAVE_TRANSACTION; - this_i2c->random_read_addr = 0; - } - /* Load the data, and determine if it is the last one */ - this_i2c->hw_reg->DATA = this_i2c->tx_buffer[this_i2c->tx_idx++]; - if (this_i2c->tx_idx >= this_i2c->tx_size - 1) /* last byte? */ - { - this_i2c->hw_reg_bit->CTRL_AA = 0x00; - /* Next read transaction will result in slave's transmit buffer - * being sent from the first byte. */ - this_i2c->tx_idx = 0; - } - break; - - case ST_SLAVE_RNACK: /* Data byte has been transmitted; not-ACK has been received. */ - /* We assume that the transaction will be stopped by the master. - * Reset tx_idx so that a subsequent read will result in the slave's - * transmit buffer being sent from the first byte. */ - this_i2c->tx_idx = 0; - break; - - case ST_FINAL: /* Last Data byte tx'ed, ACK recieved */ - default: - /* do nothing */ - break; - } - - if ( clear_irq ) - { - /* clear interrupt. */ - this_i2c->hw_reg_bit->CTRL_SI = 0x00; - } - - /* Read the status register to ensure the last I2C registers write took place - * in a system built around a bus making use of posted writes. */ - status = this_i2c->hw_reg->STATUS; - - portEND_SWITCHING_ISR( lHigherPriorityTaskWoken ); -} - -/*------------------------------------------------------------------------------ - * - */ -uint32_t disable_interrupts( void ) -{ - uint32_t primask; - primask = __get_PRIMASK(); - return primask; -} - -/*------------------------------------------------------------------------------ - * - */ -void restore_interrupts( uint32_t primask ) -{ - __set_PRIMASK( primask ); -} - -/*------------------------------------------------------------------------------ - * - */ -#if defined(__GNUC__) -__attribute__((__interrupt__)) void I2C0_IRQHandler( void ) -#else -void I2C0_IRQHandler( void ) -#endif -{ - mss_i2c_isr( &g_mss_i2c0 ); - NVIC_ClearPendingIRQ( I2C0_IRQn ); -} - -/*------------------------------------------------------------------------------ - * - */ -#if defined(__GNUC__) -__attribute__((__interrupt__)) void I2C1_IRQHandler( void ) -#else -void I2C1_IRQHandler( void ) -#endif -{ - mss_i2c_isr( &g_mss_i2c1 ); - NVIC_ClearPendingIRQ( I2C1_IRQn ); -} - -#ifdef __cplusplus -} -#endif diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/I2C/i2c.h b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/I2C/i2c.h deleted file mode 100644 index 6c80cf343..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/I2C/i2c.h +++ /dev/null @@ -1,783 +0,0 @@ -/******************************************************************************* - * (c) Copyright 2007-2008 Actel Corporation. All rights reserved. - * - * SmartFusion microcontroller subsystem I2C bare metal software driver public - * API. - * - * SVN $Revision: 2150 $ - * SVN $Date: 2010-02-11 14:39:24 +0000 (Thu, 11 Feb 2010) $ - */ -/*=========================================================================*//** - @mainpage SmartFusion MSS I2C Bare Metal Driver. - - @section intro_sec Introduction - The SmartFusion™ microcontroller subsystem (MSS) includes two I2C peripherals - for serial communication. This driver provides a set of functions for - controlling the MSS I2Cs as part of a bare metal system where no operating - system is available. These drivers can be adapted for use as part of an - operating system, but the implementation of the adaptation layer between this - driver and the operating system's driver model is outside the scope of this - driver. - - @section hw_dependencies Hardware Flow Dependencies - The configuration of all features of the MSS I2Cs is covered by this driver - with the exception of the SmartFusion IOMUX configuration. SmartFusion allows - multiple non-concurrent uses of some external pins through IOMUX configuration. - This feature allows optimization of external pin usage by assigning external - pins for use by either the microcontroller subsystem or the FPGA fabric. The - MSS I2Cs serial signals are routed through IOMUXes to the SmartFusion device - external pins. These IOMUXes are automatically configured correctly by the MSS - configurator tool in the hardware flow when the MSS I2Cs are enabled in that - tool. You must ensure that the MSS I2Cs are enabled by the MSS configurator - tool in the hardware flow; otherwise the serial inputs and outputs will not be - connected to the chip's external pins. For more information on IOMUX, refer to - the IOMUX section of the SmartFusion Datasheet. - The base address, register addresses and interrupt number assignment for the - MSS I2C blocks are defined as constants in the SmartFusion CMSIS-PAL. You must - ensure that the SmartFusion CMSIS-PAL is either included in the software tool - chain used to build your project or is included in your project. - - @section theory_op Theory of Operation - The MSS I2C driver functions are grouped into the following categories: - • Initialization and configuration functions - • Interrupt control - • I2C master operations – functions to handle write, read and write-read transactions - • I2C slave operations – functions to handle write, read and write-read transactions - - Initialization and Configuration - The MSS I2C driver is initialized through a call to the MSS_I2C_init() - function. This function takes the MSS I2C's configuration as parameters. The - MSS_I2C_init() function must be called before any other MSS I2C driver - functions can be called. The first parameter of the MSS_I2C_init() function - is a pointer to one of two global data structures used by the driver to - store state information for each MSS I2C. A pointer to these data structures - is also used as first parameter to any of the driver functions to identify - which MSS I2C will be used by the called function. The names of these two - data structures are g_mss_i2c0 and g_mss_i2c1. Therefore any call to an MSS - I2C driver function should be of the form MSS_I2C_function_name( &g_mss_i2c0, ... ) - or MSS_I2C_function_name( &g_mss_i2c1, ... ). - The MSS_I2C_init() function call for each MSS I2C also takes the I2C serial - address assigned to the MSS I2C and the serial clock divider to be used to - generate its I2C clock as configuration parameters. - - Interrupt Control - The MSS I2C driver is interrupt driven and it enables and disables the - generation of interrupts by MSS I2C at various times when it is operating. - The driver automatically handles MSS I2C interrupts internally, including - enabling disabling and clearing MSS I2C interrupts in the Cortex-M3 - interrupt controller when required. - The function MSS_I2C_register_write_handler() is used to register a write - handler function with the MSS I2C driver that it will call on completion of - an I2C write transaction by the MSS I2C slave. It is your responsibility to - create and register the implementation of this handler function that will - process or trigger the processing of the received data. - Transaction Types - The MSS I2C driver is designed to handle three types of I2C transaction: - • Write transactions - • Read transactions - • Write-read transactions - - Write transaction - The master I2C device initiates a write transaction by sending a START bit - as soon as the bus becomes free. The START bit is followed by the 7-bit - serial address of the target slave device followed by the read/write bit - indicating the direction of the transaction. The slave acknowledges receipt - of it’s address with an acknowledge bit. The master sends data one byte at - a time to the slave, which must acknowledge receipt of each byte for the - next byte to be sent. The master sends a STOP bit to complete the transaction. - The slave can abort the transaction by replying with a non-acknowledge bit - instead of an acknowledge. - The application programmer can choose not to send a STOP bit at the end of - the transaction causing the next transaction to begin with a repeated START bit. - - Read transaction - The master I2C device initiates a read transaction by sending a START bit - as soon as the bus becomes free. The START bit is followed by the 7-bit - serial address of the target slave device followed by the read/write bit - indicating the direction of the transaction. The slave acknowledges receipt - of it’s slave address with an acknowledge bit. The slave sends data one byte - at a time to the master, which must acknowledge receipt of each byte for the - next byte to be sent. The master sends a non-acknowledge bit following the - last byte it wishes to read followed by a STOP bit. - The application programmer can choose not to send a STOP bit at the end of - the transaction causing the next transaction to begin with a repeated START bit. - - Write-read transaction - The write-read transaction is a combination of a write transaction - immediately followed by a read transaction. There is no STOP bit between - the write and read phases of a write-read transaction. A repeated START - bit is sent between the write and read phases. - The write-read transaction is typically used to send a command or offset - in the write transaction specifying the logical data to be transferred - during the read phase. - The application programmer can choose not to send a STOP bit at the end of - the transaction causing the next transaction to begin with a repeated START bit. - - Master Operations - The application can use the MSS_I2C_write(), MSS_I2C_read() and MSS_I2C_write_read() - functions to initiate an I2C bus transaction. The application can then wait - for the transaction to complete using the MSS_I2C_wait_complete() function - or poll the status of the I2C transaction using the MSS_I2C_get_status() - function until it returns a value different from MSS_I2C_IN_PROGRESS. - - Slave Operations - The configuration of the MSS I2C driver to operate as an I2C slave requires - the use of the following functions: - • MSS_I2C_set_slave_tx_buffer() - • MSS_I2C_set_slave_rx_buffer() - • MSS_I2C_set_slave_mem_offset_length() - • MSS_I2C_register_write_handler() - • MSS_I2C_enable_slave_rx() - Use of all functions is not required if the slave I2C does not need to support - all types of I2C read transactions. The subsequent sections list the functions - that must be used to support each transaction type. - - Responding to read transactions - The following functions are used to configure the MSS I2C driver to respond - to I2C read transactions: - • MSS_I2C_set_slave_tx_buffer() - • MSS_I2C_enable_slave_rx() - The function MSS_I2C_set_slave_tx_buffer() specifies the data buffer that - will be transmitted when the I2C slave is the target of an I2C read - transaction. It is then up to the application to manage the content of that - buffer to control the data that will be transmitted to the I2C master as a - result of the read transaction. - The function MSS_I2C_enable_slave_rx() enables the MSS I2C hardware instance - to respond to I2C transactions. It must be called after the MSS I2C driver - has been configured to respond to the required transaction types. - - Responding to write transactions - The following functions are used to configure the MSS I2C driver to respond - to I2C write transactions: - • MSS_I2C_set_slave_rx_buffer() - • MSS_I2C_register_write_handler() - • MSS_I2C_enable_slave_rx() - The function MSS_I2C_set_slave_rx_buffer() specifies the data buffer that - will be used to store the data received by the I2C slave when it is the - target an I2C write transaction. - The function MSS_I2C_register_write_handler() specifies the handler function - that must be called on completion of the I2C write transaction. It is this - handler function that will process or trigger the processing of the received - data. - The function MSS_I2C_enable_slave_rx() enables the MSS I2C hardware instance - to respond to I2C transactions. It must be called after the MSS I2C driver - has been configured to respond to the required transaction types. - - Responding to write-read transactions - The following functions are used to configure the MSS I2C driver to respond - to write-read transactions: - • MSS_I2C_set_slave_tx_buffer() - • MSS_I2C_set_slave_rx_buffer() - • MSS_I2C_set_slave_mem_offset_length() - • MSS_I2C_enable_slave_rx() - The function MSS_I2C_set_slave_mem_offset_length() specifies the number of - bytes expected by the I2C slave during the write phase of the write-read - transaction. - The function MSS_I2C_set_slave_tx_buffer() specifies the data that will be - transmitted to the I2C master during the read phase of the write-read - transaction. The value received by the I2C slave during the write phase of - the transaction will be used as an index into the transmit buffer specified - by this function to decide which part of the transmit buffer will be - transmitted to the I2C master as part of the read phase of the write-read - transaction. - The function MSS_I2C_set_slave_rx_buffer() specifies the data buffer that - will be used to store the data received by the I2C slave during the write - phase of the write-read transaction. This buffer must be at least large - enough to accommodate the number of bytes specified through the - MSS_I2C_set_slave_mem_offset_length() function. - The function MSS_I2C_enable_slave_rx() enables the MSS I2C hardware - instance to respond to I2C transactions. It must be called after the MSS - I2C driver has been configured to respond to the required transaction types. - *//*=========================================================================*/ -#ifndef I2C_H_ -#define I2C_H_ - -#include "../../CMSIS/a2fxxxm3.h" - -/* FreeRTOS includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "semphr.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/*-------------------------------------------------------------------------*//** - The mss_i2c_clock_divider_t type is used to specify the divider to be applied - to the MSS I2C BCLK signal in order to generate the I2C clock. - */ -typedef enum mss_i2c_clock_divider { - MSS_I2C_PCLK_DIV_256 = 0, - MSS_I2C_PCLK_DIV_224, - MSS_I2C_PCLK_DIV_192, - MSS_I2C_PCLK_DIV_160, - MSS_I2C_PCLK_DIV_960, - MSS_I2C_PCLK_DIV_120, - MSS_I2C_PCLK_DIV_60, - MSS_I2C_BCLK_DIV_8 -} mss_i2c_clock_divider_t; - -/*-------------------------------------------------------------------------*//** - The MSS_I2C_RELEASE_BUS constant is used to specify the options parameter to - functions MSS_I2C_read(), MSS_I2C_write() and MSS_I2C_write_read() to indicate - that a STOP bit must be generated at the end of the I2C transaction to release - the bus. - */ -#define MSS_I2C_RELEASE_BUS 0x00 - -/*-------------------------------------------------------------------------*//** - The MSS_I2C_HOLD_BUS constant is used to specify the options parameter to - functions MSS_I2C_read(), MSS_I2C_write() and MSS_I2C_write_read() to indicate - that a STOP bit must not be generated at the end of the I2C transaction in - order to retain the bus ownership. This will cause the next transaction to - begin with a repeated START bit and no STOP bit between the transactions. - */ -#define MSS_I2C_HOLD_BUS 0x01 - -/*-------------------------------------------------------------------------*//** - The mss_i2c_status_t type is used to report the status of I2C transactions. - */ -typedef enum mss_i2c_status -{ - MSS_I2C_SUCCESS = 0, - MSS_I2C_IN_PROGRESS, - MSS_I2C_FAILED -} mss_i2c_status_t; - -/*-------------------------------------------------------------------------*//** - The mss_i2c_slave_handler_ret_t type is used by slave write handler functions - to indicate whether the received data buffer should be released or not. - */ -typedef enum mss_i2c_slave_handler_ret { - MSS_I2C_REENABLE_SLAVE_RX = 0, - MSS_I2C_PAUSE_SLAVE_RX = 1 -} mss_i2c_slave_handler_ret_t; - -/*-------------------------------------------------------------------------*//** - Slave write handler functions prototype. - ------------------------------------------------------------------------------ - This defines the function prototype that must be followed by MSS I2C slave - write handler functions. These functions are registered with the MSS I2C driver - through the MSS_I2C_register_write_handler() function. - - Declaring and Implementing Slave Write Handler Functions: - Slave write handler functions should follow the following prototype: - mss_i2c_slave_handler_ret_t write_handler( uint8_t * data, uint16_t size ); - - The data parameter is a pointer to a buffer (received data buffer) holding - the data written to the MSS I2C slave. - The size parameter is the number of bytes held in the received data buffer. - Handler functions must return one of the following values: - • MSS_I2C_REENABLE_SLAVE_RX - • MSS_I2C_PAUSE_SLAVE_RX. - If the handler function returns MSS_I2C_REENABLE_SLAVE_RX, the driver will - release the received data buffer and allow further I2C write transactions to - the MSS I2C slave to take place. - If the handler function returns MSS_I2C_PAUSE_SLAVE_RX, the MSS I2C slave - will respond to subsequent write requests with a non-acknowledge bit (NACK), - until the received data buffer content has been processed by some other part - of the software application. - A call to MSS_I2C_enable_slave_rx() is required at some point after - returning MSS_I2C_PAUSE_SLAVE_RX in order to release the received data - buffer so it can be used to store data received by subsequent I2C write - transactions. - */ -typedef mss_i2c_slave_handler_ret_t (*mss_i2c_slave_wr_handler_t)( uint8_t *, uint16_t ); - -/*-------------------------------------------------------------------------*//** - mss_i2c_instance_t - ------------------------------------------------------------------------------ - There is one instance of this structure for each of the microcontroller - subsystem's I2Cs. Instances of this structure are used to identify a specific - I2C. A pointer to an instance of the mss_i2c_instance_t structure is passed as - the first parameter to MSS I2C driver functions to identify which I2C should - perform the requested operation. - */ -typedef struct mss_i2c_instance -{ - uint_fast8_t ser_address; - /* Transmit related info:*/ - uint_fast8_t target_addr; - - /* Current transaction type (WRITE, READ, RANDOM_READ)*/ - uint8_t transaction; - - uint_fast16_t random_read_addr; - - uint8_t options; - - /* I2C hardware instance identification */ - IRQn_Type irqn; - I2C_TypeDef * hw_reg; - I2C_BitBand_TypeDef * hw_reg_bit; - - /* TX INFO: */ - const uint8_t * tx_buffer; - uint_fast16_t tx_size; - uint_fast16_t tx_idx; - uint_fast8_t dir; - - /* RX INFO: */ - uint8_t * rx_buffer; - uint_fast16_t rx_size; - uint_fast16_t rx_idx; - - /* status variable: */ - volatile mss_i2c_status_t status; - - /* Slave data: */ - uint_fast8_t slave_mem_offset_length; - mss_i2c_slave_wr_handler_t slave_write_handler; - - /* Used to get access to and wait for completion of an I2C transaction. */ - SemaphoreHandle_t xI2CCompleteSemaphore; - -} mss_i2c_instance_t; - -/*-------------------------------------------------------------------------*//** - This instance of mss_i2c_instance_t holds all data related to the operations - performed by MSS I2C 0. A pointer to g_mss_i2c0 is passed as the first - parameter to MSS I2C driver functions to indicate that MSS I2C 0 should - perform the requested operation. - */ -extern mss_i2c_instance_t g_mss_i2c0; - -/*-------------------------------------------------------------------------*//** - This instance of mss_i2c_instance_t holds all data related to the operations - performed by MSS I2C 1. A pointer to g_mss_i2c1 is passed as the first - parameter to MSS I2C driver functions to indicate that MSS I2C 1 should - perform the requested operation. - */ -extern mss_i2c_instance_t g_mss_i2c1; - -/*-------------------------------------------------------------------------*//** - MSS I2C initialisation routine. - ------------------------------------------------------------------------------ - The MSS_I2C_init() function initializes and configures hardware and data - structures of one of the SmartFusion MSS I2Cs. - ------------------------------------------------------------------------------ - @param this_i2c: - The this_i2c parameter is a pointer to an mss_i2c_instance_t structure - identifying the MSS I2C hardware block to be initialized. There are two such - data structures, g_mss_i2c0 and g_mss_i2c1, associated with MSS I2C 0 and - MSS I2C 1 respectively. This parameter must point to either the g_mss_i2c0 - or g_mss_i2c1 global data structure defined within the I2C driver. - - @param ser_address: - This parameter sets the I2C serial address being initialized. It is the I2C - bus address to which the MSS I2C instance will respond. Any 8 bit address is - allowed. - - @param ser_clock_speed: - This parameter sets the I2C serial clock frequency. It selects the divider - that will be used to generate the serial clock from the APB clock. It can be - one of the following: - • MSS_I2C_PCLK_DIV_256 - • MSS_I2C_PCLK_DIV_224 - • MSS_I2C_PCLK_DIV_192 - • MSS_I2C_PCLK_DIV_160 - • MSS_I2C_PCLK_DIV_960 - • MSS_I2C_PCLK_DIV_120 - • MSS_I2C_PCLK_DIV_60 - • MSS_I2C_BCLK_DIV_8 - */ -void MSS_I2C_init -( - mss_i2c_instance_t * this_i2c, - uint8_t ser_address, - mss_i2c_clock_divider_t ser_clock_speed -); - -/******************************************************************************* - ******************************************************************************* - * - * Master specific functions - * - * The following functions are only used within an I2C master's implementation. - */ - -/*-------------------------------------------------------------------------*//** - I2C master write function. - ------------------------------------------------------------------------------ - This function initiates an I2C master write transaction. This function returns - immediately after initiating the transaction. The content of the write buffer - passed as parameter should not be modified until the write transaction - completes. It also means that the memory allocated for the write buffer should - not be freed or go out of scope before the write completes. You can check for - the write transaction completion using the MSS_I2C_status() function. - ------------------------------------------------------------------------------ - @param this_i2c: - The this_i2c parameter is a pointer to an mss_i2c_instance_t structure - identifying the MSS I2C hardware block that will perform the requested - function. There are two such data structures, g_mss_i2c0 and g_mss_i2c1, - associated with MSS I2C 0 and MSS I2C 1 respectively. This parameter must - point to either the g_mss_i2c0 or g_mss_i2c1 global data structure defined - within the I2C driver. - - @param serial_addr: - This parameter specifies the serial address of the target I2C device. - - @param write_buffer: - This parameter is a pointer to a buffer holding the data to be written to - the target I2C device. - Care must be taken not to release the memory used by this buffer before the - write transaction completes. For example, it is not appropriate to return - from a function allocating this buffer as an array variable before the write - transaction completes as this would result in the buffer's memory being - de-allocated from the stack when the function returns. This memory could - then be subsequently reused and modified causing unexpected data to be - written to the target I2C device. - - @param write_size: - Number of bytes held in the write_buffer to be written to the target I2C - device. - - @param options: - The options parameter is used to indicate if the I2C bus should be released - on completion of the write transaction. Using the MSS_I2C_RELEASE_BUS - constant for the options parameter causes a STOP bit to be generated at the - end of the write transaction causing the bus to be released for other I2C - devices to use. Using the MSS_I2C_HOLD_BUS constant as options parameter - prevents a STOP bit from being generated at the end of the write - transaction, preventing other I2C devices from initiating a bus transaction. - */ -void MSS_I2C_write -( - mss_i2c_instance_t * this_i2c, - uint8_t serial_addr, - const uint8_t * write_buffer, - uint16_t write_size, - uint8_t options -); - -/*-------------------------------------------------------------------------*//** - I2C master read. - ------------------------------------------------------------------------------ - This function initiates an I2C master read transaction. This function returns - immediately after initiating the transaction. - The content of the read buffer passed as parameter should not be modified - until the read transaction completes. It also means that the memory allocated - for the read buffer should not be freed or go out of scope before the read - completes. You can check for the read transaction completion using the - MSS_I2C_status() function. - ------------------------------------------------------------------------------ - @param this_i2c: - The this_i2c parameter is a pointer to an mss_i2c_instance_t structure - identifying the MSS I2C hardware block that will perform the requested - function. There are two such data structures, g_mss_i2c0 and g_mss_i2c1, - associated with MSS I2C 0 and MSS I2C 1 respectively. This parameter must - point to either the g_mss_i2c0 or g_mss_i2c1 global data structure defined - within the I2C driver. - - @param serial_addr: - This parameter specifies the serial address of the target I2C device. - - @param read_buffer - Pointer to a buffer where the data received from the target device will be - stored. - Care must be taken not to release the memory used by this buffer before the - read transaction completes. For example, it is not appropriate to return - from a function allocating this buffer as an array variable before the read - transaction completes as this would result in the buffer's memory being - de-allocated from the stack when the function returns. This memory could - then be subsequently reallocated resulting in the read transaction - corrupting the newly allocated memory. - - @param read_size: - This parameter is the number of bytes to read from the target device. This - size must not exceed the size of the read_buffer buffer. - - @param options: - The options parameter is used to indicate if the I2C bus should be released - on completion of the read transaction. Using the MSS_I2C_RELEASE_BUS - constant for the options parameter causes a STOP bit to be generated at the - end of the read transaction causing the bus to be released for other I2C - devices to use. Using the MSS_I2C_HOLD_BUS constant as options parameter - prevents a STOP bit from being generated at the end of the read transaction, - preventing other I2C devices from initiating a bus transaction. - */ -void MSS_I2C_read -( - mss_i2c_instance_t * this_i2c, - uint8_t serial_addr, - uint8_t * read_buffer, - uint16_t read_size, - uint8_t options -); - -/*-------------------------------------------------------------------------*//** - I2C master write-read - ------------------------------------------------------------------------------ - This function initiates an I2C write-read transaction where data is first - written to the target device before issuing a restart condition and changing - the direction of the I2C transaction in order to read from the target device. - ------------------------------------------------------------------------------ - @param this_i2c: - The this_i2c parameter is a pointer to an mss_i2c_instance_t structure - identifying the MSS I2C hardware block that will perform the requested - function. There are two such data structures, g_mss_i2c0 and g_mss_i2c1, - associated with MSS I2C 0 and MSS I2C 1 respectively. This parameter must - point to either the g_mss_i2c0 or g_mss_i2c1 global data structure defined - within the I2C driver. - - @param serial_addr: - This parameter specifies the serial address of the target I2C device. - - @param addr_offset: - This parameter is a pointer to the buffer containing the data that will be - sent to the slave during the write phase of the write-read transaction. This - data is typically used to specify an address offset specifying to the I2C - slave device what data it must return during the read phase of the - write-read transaction. - - @param offset_size: - This parameter specifies the number of offset bytes to be written during the - write phase of the write-read transaction. This is typically the size of the - buffer pointed to by the addr_offset parameter. - - @param read_buffer: - This parameter is a pointer to the buffer where the data read from the I2C - slave will be stored. - - @param read_size: - This parameter specifies the number of bytes to read from the target I2C - slave device. This size must not exceed the size of the buffer pointed to by - the read_buffer parameter. - - @param options: - The options parameter is used to indicate if the I2C bus should be released - on completion of the write-read transaction. Using the MSS_I2C_RELEASE_BUS - constant for the options parameter causes a STOP bit to be generated at the - end of the write-read transaction causing the bus to be released for other - I2C devices to use. Using the MSS_I2C_HOLD_BUS constant as options parameter - prevents a STOP bit from being generated at the end of the write-read - transaction, preventing other I2C devices from initiating a bus transaction. - */ -void MSS_I2C_write_read -( - mss_i2c_instance_t * this_i2c, - uint8_t serial_addr, - const uint8_t * addr_offset, - uint16_t offset_size, - uint8_t * read_buffer, - uint16_t read_size, - uint8_t options -); - -/*-------------------------------------------------------------------------*//** - I2C status - ------------------------------------------------------------------------------ - This function indicates the current state of a MSS I2C instance. - ------------------------------------------------------------------------------ - @param this_i2c: - The this_i2c parameter is a pointer to an mss_i2c_instance_t structure - identifying the MSS I2C hardware block that will perform the requested - function. There are two such data structures, g_mss_i2c0 and g_mss_i2c1, - associated with MSS I2C 0 and MSS I2C 1 respectively. This parameter must - point to either the g_mss_i2c0 or g_mss_i2c1 global data structure defined - within the I2C driver. - ------------------------------------------------------------------------------ - @return - The return value indicates the current state of a MSS I2C instance or the - outcome of the previous transaction if no transaction is in progress. - Possible return values are: - SUCCESS - The last I2C transaction has completed successfully. - IN_PROGRESS - There is an I2C transaction in progress. - FAILED - The last I2C transaction failed. - - */ -mss_i2c_status_t MSS_I2C_get_status -( - mss_i2c_instance_t * this_i2c -); - -/*-------------------------------------------------------------------------*//** - Wait for I2C transaction completion. - ------------------------------------------------------------------------------ - This function waits for the current I2C transaction to complete. The return - value indicates whether the last I2C transaction was successful, or is still - in progress, or failed. - ------------------------------------------------------------------------------ - @param this_i2c: - The this_i2c parameter is a pointer to an mss_i2c_instance_t structure - identifying the MSS I2C hardware block that will perform the requested - function. There are two such data structures, g_mss_i2c0 and g_mss_i2c1, - associated with MSS I2C 0 and MSS I2C 1 respectively. This parameter must - point to either the g_mss_i2c0 or g_mss_i2c1 global data structure defined - within the I2C driver. - ------------------------------------------------------------------------------ - @return - The return value indicates the outcome of the last I2C transaction. It can - be one of the following: - MSS_I2C_SUCCESS - The last I2C transaction has completed successfully. - MSS_I2C_IN_PROGRESS - The current I2C transaction is still in progress. - MSS_I2C_FAILED - The last I2C transaction failed. - */ -mss_i2c_status_t MSS_I2C_wait_complete -( - mss_i2c_instance_t * this_i2c -); - - -/******************************************************************************* - ******************************************************************************* - * - * Slave specific functions - * - * The following functions are only used within the implementation of an I2C - * slave device. - */ - -/*-------------------------------------------------------------------------*//** - I2C slave transmit buffer configuration. - ------------------------------------------------------------------------------ - This function specifies the memory buffer holding the data that will be sent - to the I2C master when this MSS I2C instance is the target of an I2C read or - write-read transaction. - ------------------------------------------------------------------------------ - @param this_i2c: - The this_i2c parameter is a pointer to an mss_i2c_instance_t structure - identifying the MSS I2C hardware block that will perform the requested - function. There are two such data structures, g_mss_i2c0 and g_mss_i2c1, - associated with MSS I2C 0 and MSS I2C 1 respectively. This parameter must - point to either the g_mss_i2c0 or g_mss_i2c1 global data structure defined - within the I2C driver. - - @param tx_buffer: - This parameter is a pointer to the memory buffer holding the data to be - returned to the I2C master when this MSS I2C instance is the target of an - I2C read or write-read transaction. - - @param tx_size: - Size of the transmit buffer pointed to by the tx_buffer parameter. - */ -void MSS_I2C_set_slave_tx_buffer -( - mss_i2c_instance_t * this_i2c, - uint8_t * tx_buffer, - uint16_t tx_size -); - -/*-------------------------------------------------------------------------*//** - I2C slave receive buffer configuration. - ------------------------------------------------------------------------------ - This function specifies the memory buffer that will be used by the MSS I2C - instance to receive data when it is a slave. This buffer is the memory where - data will be stored when the MSS I2C is the target of an I2C master write - transaction (i.e. when it is the slave). - ------------------------------------------------------------------------------ - @param this_i2c: - The this_i2c parameter is a pointer to an mss_i2c_instance_t structure - identifying the MSS I2C hardware block that will perform the requested - function. There are two such data structures, g_mss_i2c0 and g_mss_i2c1, - associated with MSS I2C 0 and MSS I2C 1 respectively. This parameter must - point to either the g_mss_i2c0 or g_mss_i2c1 global data structure defined - within the I2C driver. - - @param rx_buffer: - This parameter is a pointer to the memory buffer allocated by the caller - software to be used as a slave receive buffer. - - @param rx_size: - Size of the slave receive buffer. This is the amount of memory that is - allocated to the buffer pointed to by rx_buffer. - Note: This buffer size will indirectly specify the maximum I2C write - transaction length this MSS I2C instance can be the target of. This - is because this MSS I2C instance will respond to further received - bytes with a non-acknowledge bit (NACK) as soon as its receive - buffer is full. This will cause the write transaction to fail. - */ -void MSS_I2C_set_slave_rx_buffer -( - mss_i2c_instance_t * this_i2c, - uint8_t * rx_buffer, - uint16_t rx_size -); - -/*-------------------------------------------------------------------------*//** - I2C slave memory offset length configuration. - ------------------------------------------------------------------------------ - This function is used as part of the configuration of a MSS I2C instance for - operation as a slave supporting write-read transactions. It specifies the - number of bytes expected as part of the write phase of a write-read - transaction. The bytes received during the write phase of a write-read - transaction will be interpreted as an offset into the slave’s transmit buffer. - This allows random access into the I2C slave transmit buffer from a remote - I2C master. - ------------------------------------------------------------------------------ - @param this_i2c: - The this_i2c parameter is a pointer to an mss_i2c_instance_t structure - identifying the MSS I2C hardware block that will perform the requested - function. There are two such data structures, g_mss_i2c0 and g_mss_i2c1, - associated with MSS I2C 0 and MSS I2C 1 respectively. This parameter must - point to either the g_mss_i2c0 or g_mss_i2c1 global data structure defined - within the I2C driver. - - @param offset_length: - The offset_length parameter configures the number of bytes to be interpreted - by the MSS I2C slave as a memory offset value during the write phase of - write-read transactions. - */ -void MSS_I2C_set_slave_mem_offset_length -( - mss_i2c_instance_t * this_i2c, - uint8_t offset_length -); - -/*-------------------------------------------------------------------------*//** - I2C write handler registration. - ------------------------------------------------------------------------------ - Register the function that will be called to process the data written to this - MSS I2C instance when it is the slave in an I2C write transaction. - Note: The write handler is not called as a result of a write-read transaction. - The write data of a write read transaction is interpreted as an offset - into the slave’s transmit buffer and handled by the driver. - ------------------------------------------------------------------------------ - @param this_i2c: - The this_i2c parameter is a pointer to an mss_i2c_instance_t structure - identifying the MSS I2C hardware block that will perform the requested - function. There are two such data structures, g_mss_i2c0 and g_mss_i2c1, - associated with MSS I2C 0 and MSS I2C 1 respectively. This parameter must - point to either the g_mss_i2c0 or g_mss_i2c1 global data structure defined - within the I2C driver. - - @param handler: - Pointer to the function that will process the I2C write request. - */ -void MSS_I2C_register_write_handler -( - mss_i2c_instance_t * this_i2c, - mss_i2c_slave_wr_handler_t handler -); - -/*-------------------------------------------------------------------------*//** - I2C slave receive enable. - ------------------------------------------------------------------------------ - Enables the MSS I2C instance identified through the this_i2c parameter to - receive data when it is the target of an I2C write or write-read transaction. - ------------------------------------------------------------------------------ - @param this_i2c: - The this_i2c parameter is a pointer to an mss_i2c_instance_t structure - identifying the MSS I2C hardware block that will perform the requested - function. There are two such data structures, g_mss_i2c0 and g_mss_i2c1, - associated with MSS I2C 0 and MSS I2C 1 respectively. This parameter must - point to either the g_mss_i2c0 or g_mss_i2c1 global data structure defined - within the I2C driver. - */ -void MSS_I2C_enable_slave_rx -( - mss_i2c_instance_t * this_i2c -); - -#ifdef __cplusplus -} -#endif - -#endif /*MSS_I2C_H_*/ diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/OLED/oled.c b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/OLED/oled.c deleted file mode 100644 index faa199d9a..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/OLED/oled.c +++ /dev/null @@ -1,536 +0,0 @@ -/***************************************************************************** - * (c) Copyright 2009 Actel Corporation. All rights reserved. - * - * Author : Actel Application Team - * Rev : 1.0.0.0 - * Description: Device driver for the on-board OLED for SmartFusion KITS - * Implementation of sample basic driver for OLED display found on Actel - * SmartFusion development boards. - * This code is intended as an example of using the SmartFusion I2C driver. - *****************************************************************************/ - - #include "oled.h" -#include "../bsp_config.h" - -/***************************************************************************//** - Command definitions for the SSD300 controller inside the OLED display module. - */ -#define CMD_DISPLAY_OFF_SET 0xD3 -#define CMD_PANEL_ON 0xAF -#define CMD_PANEL_OFF 0xAE -#define CMD_DC_DC 0xAD -#define CMD_DC_DC_DEFAULT_ON 0x8B -#define CMD_DC_DC_OFF 0x8A -#define CMD_DISPLAY_ALL_ON 0xA5 -#define CMD_DISPLAY_ALL_OFF 0xA4 -#define CMD_DISPLAY_NON_INV 0xA6 -#define CMD_DISPLAY_INV 0xA7 -#define CMD_ARECOL_LPM 0xD8 -#define CMD_ARECOL_MONO 0x00 -#define CMD_ARECOL_COLOR 0x30 -#define CMD_LPM_ON 0x05 -#define CMD_LPM_OFF 0x00 -#define CMD_CONTRAST 0x81 -#define CMD_MIRROR_HORI_ON 0xC8 -#define CMD_MIRROR_HORI_OFF 0xC0 -#define CMD_MIRROR_VERT_ON 0xA1 -#define CMD_MIRROR_VERT_OFF 0xA0 -#define CMD_HORI_SCRL 0x26 -#define CMD_HORI_SCRL_ON 0x2F -#define CMD_HORI_SCRL_OFF 0x2E -#define CMD_MUX_RATIO 0xA8 -#define CMD_MUX_RATIO_31 0x23 - -#define CMD_PAGE_0 0xB0 -#define CMD_PAGE_1 0xB1 -#define CMD_PAGE_2 0xB2 -#define CMD_PAGE_3 0xB3 -#define CMD_PAGE_4 0xB4 -#define CMD_PAGE_5 0xB5 - -#define CMD_LOW_NIB_COL 0x00 -#define CMD_HIGH_NIB_COL 0x10 - -#define CMD_START_LINE 0x50 -#define CONTRAST_DEFAULT 0xFF -#define CONTRAST_25_PERC 0x40 -#define CONTRAST_100_PERC 0xFF -#define CONTRAST_0_PERC 0x00 -#define SCROLL_1_COLUMN 0x01 -#define SCROLL_2_COLUMN 0x02 -#define SCROLL_3_COLUMN 0x03 -#define SCROLL_4_COLUMN 0x04 -#define SCROLL_PAGE_0 0x00 -#define SCROLL_PAGE_1 0x01 -#define SCROLL_PAGE_2 0x02 -#define SCROLL_PAGE_3 0x03 -#define SCROLL_PAGE_4 0x04 -#define SCROLL_PAGE_5 0x05 -#define SCROLL_12_FRAMES 0x00 -#define SCROLL_64_FRAMES 0x01 -#define SCROLL_128_FRAMES 0x02 -#define SCROLL_256_FRAMES 0x03 -#define SCROLL_PER_STEP 0x01 -#define PAGE0_COLOR_BAG 0x92 -#define PAGE1_COLOR_BAG 0x93 - -/***************************************************************************//** - OLED display I2C communication protocol control byte values. Used to indicate - whether the byte following the control byte is to be interpreted by the OLED - display as a command or data byte. - */ -#define OLED_COMMAND_CODE 0x80 -#define OLED_DATA_CODE 0xC0 - -/***************************************************************************//** - I2C serial address of OLED display. - */ -#define OLED_SLAVE_ADDRESS 0x78 - -/***************************************************************************//** - Bitmaps of the character set. - Each character is 5 pixels wide and 7 pixels high. - The table is indexed on ASCII character codes. - */ -#define CHARACTER_WIDTH 5 - -const unsigned char oled_ascii_character_set[255][CHARACTER_WIDTH] = -{ - {0x00, 0x00, 0x00, 0x00, 0x00}, - {0x00, 0x00, 0x00, 0x00, 0x00}, - {0x00, 0x00, 0x00, 0x00, 0x00}, - {0x00, 0x00, 0x00, 0x00, 0x00}, - {0x00, 0x00, 0x00, 0x00, 0x00}, - {0x00, 0x00, 0x00, 0x00, 0x00}, - {0x00, 0x00, 0x00, 0x00, 0x00}, - {0x00, 0x00, 0x00, 0x00, 0x00}, - {0x00, 0x00, 0x00, 0x00, 0x00}, - {0x00, 0x00, 0x00, 0x00, 0x00}, - {0x00, 0x00, 0x00, 0x00, 0x00}, - {0x00, 0x00, 0x00, 0x00, 0x00}, - {0x00, 0x00, 0x00, 0x00, 0x00}, - {0x00, 0x00, 0x00, 0x00, 0x00}, - {0x00, 0x00, 0x00, 0x00, 0x00}, - {0x00, 0x00, 0x00, 0x00, 0x00}, - {0x00, 0x00, 0x00, 0x00, 0x00}, - {0x00, 0x00, 0x00, 0x00, 0x00}, - {0x00, 0x00, 0x00, 0x00, 0x00}, - {0x00, 0x00, 0x00, 0x00, 0x00}, - {0x00, 0x00, 0x00, 0x00, 0x00}, - {0x00, 0x00, 0x00, 0x00, 0x00}, - {0x00, 0x00, 0x00, 0x00, 0x00}, - {0x00, 0x00, 0x00, 0x00, 0x00}, - {0x00, 0x00, 0x00, 0x00, 0x00}, - {0x00, 0x00, 0x00, 0x00, 0x00}, - {0x00, 0x00, 0x00, 0x00, 0x00}, - {0x00, 0x00, 0x00, 0x00, 0x00}, - {0x00, 0x00, 0x00, 0x00, 0x00}, - {0x00, 0x00, 0x00, 0x00, 0x00}, - {0x00, 0x00, 0x00, 0x00, 0x00}, - {0x00, 0x00, 0x00, 0x00, 0x00}, - {0x00, 0x00, 0x00, 0x00, 0x00}, - - {0x00, 0x00, 0x5F, 0x00, 0x00}, - {0x00, 0x07, 0x00, 0x07, 0x00}, - {0x14, 0x7F, 0x14, 0x7F, 0x14}, - {0x24, 0x2A, 0x7F, 0x2A, 0x12}, - {0x23, 0x13, 0x08, 0x64, 0x62}, - {0x36, 0x49, 0x55, 0x22, 0x50}, - {0x00, 0x05, 0x03, 0x00, 0x00}, - {0x00, 0x1C, 0x22, 0x41, 0x00}, - {0x00, 0x41, 0x22, 0x1C, 0x00}, - {0x14, 0x08, 0x3E, 0x08, 0x14}, - {0x08, 0x08, 0x3E, 0x08, 0x08}, - {0x00, 0x50, 0x30, 0x00, 0x00}, - {0x08, 0x08, 0x08, 0x08, 0x08}, - {0x00, 0x60, 0x60, 0x00, 0x00}, - {0x20, 0x10, 0x08, 0x04, 0x02}, - {0x3E, 0x51, 0x49, 0x45, 0x3E}, - {0x00, 0x42, 0x7F, 0x40, 0x00}, - {0x42, 0x61, 0x51, 0x49, 0x46}, - {0x21, 0x41, 0x45, 0x4B, 0x31}, - {0x18, 0x14, 0x12, 0x7F, 0x10}, - {0x27, 0x45, 0x45, 0x45, 0x39}, - {0x3C, 0x4A, 0x49, 0x49, 0x30}, - {0x01, 0x71, 0x09, 0x05, 0x03}, - {0x36, 0x49, 0x49, 0x49, 0x36}, - {0x06, 0x49, 0x49, 0x29, 0x1E}, - {0x00, 0x36, 0x36, 0x00, 0x00}, - {0x00, 0x56, 0x36, 0x00, 0x00}, - {0x08, 0x14, 0x22, 0x41, 0x00}, - {0x14, 0x14, 0x14, 0x14, 0x14}, - {0x00, 0x41, 0x22, 0x14, 0x08}, - {0x02, 0x01, 0x51, 0x09, 0x06}, - {0x32, 0x49, 0x79, 0x41, 0x3E}, - {0x7E, 0x11, 0x11, 0x11, 0x7E}, - {0x7F, 0x49, 0x49, 0x49, 0x36}, - {0x3E, 0x41, 0x41, 0x41, 0x22}, - {0x7F, 0x41, 0x41, 0x22, 0x1C}, - {0x7F, 0x49, 0x49, 0x49, 0x41}, - {0x7F, 0x09, 0x09, 0x09, 0x01}, - {0x3E, 0x41, 0x49, 0x49, 0x7A}, - {0x7F, 0x08, 0x08, 0x08, 0x7F}, - {0x00, 0x41, 0x7F, 0x41, 0x00}, - {0x20, 0x40, 0x41, 0x3F, 0x01}, - {0x7F, 0x08, 0x14, 0x22, 0x41}, - {0x3F, 0x40, 0x40, 0x40, 0x40}, - {0x7F, 0x02, 0x0C, 0x02, 0x7F}, - {0x7F, 0x04, 0x08, 0x10, 0x7F}, - {0x3E, 0x41, 0x41, 0x41, 0x3E}, - {0x7F, 0x09, 0x09, 0x09, 0x06}, - {0x3E, 0x41, 0x51, 0x21, 0x5E}, - {0x7F, 0x09, 0x19, 0x29, 0x46}, - {0x46, 0x49, 0x49, 0x49, 0x31}, - {0x01, 0x01, 0x7F, 0x01, 0x01}, - {0x3F, 0x40, 0x40, 0x40, 0x3F}, - {0x1F, 0x20, 0x40, 0x20, 0x1F}, - {0x3F, 0x40, 0x38, 0x40, 0x3F}, - {0x63, 0x14, 0x08, 0x14, 0x63}, - {0x07, 0x08, 0x70, 0x08, 0x07}, - {0x61, 0x51, 0x49, 0x45, 0x43}, - {0x00, 0x7F, 0x41, 0x41, 0x00}, - {0x02, 0x04, 0x08, 0x10, 0x20}, - {0x00, 0x41, 0x41, 0x7F, 0x00}, - {0x04, 0x02, 0x01, 0x02, 0x04}, - {0x40, 0x40, 0x40, 0x40, 0x40}, - {0x00, 0x01, 0x02, 0x04, 0x00}, - {0x20, 0x54, 0x54, 0x54, 0x78}, - {0x7F, 0x48, 0x44, 0x44, 0x38}, - {0x38, 0x44, 0x44, 0x44, 0x20}, - {0x30, 0x48, 0x48, 0x50, 0x7F}, - {0x38, 0x54, 0x54, 0x54, 0x18}, - {0x10, 0x7E, 0x11, 0x01, 0x02}, - {0x0C, 0x52, 0x52, 0x52, 0x3E}, - {0x7F, 0x08, 0x04, 0x04, 0x78}, - {0x00, 0x44, 0x7D, 0x40, 0x00}, - {0x20, 0x40, 0x44, 0x3D, 0x00}, - {0x7F, 0x10, 0x28, 0x44, 0x00}, - {0x00, 0x41, 0x7F, 0x40, 0x00}, - {0x7C, 0x04, 0x18, 0x04, 0x78}, - {0x7C, 0x08, 0x04, 0x04, 0x78}, - {0x38, 0x44, 0x44, 0x44, 0x38}, - {0x7C, 0x14, 0x14, 0x14, 0x08}, - {0x08, 0x14, 0x14, 0x18, 0x7C}, - {0x7C, 0x08, 0x04, 0x04, 0x08}, - {0x48, 0x54, 0x54, 0x54, 0x20}, - {0x04, 0x3F, 0x44, 0x40, 0x20}, - {0x3C, 0x40, 0x40, 0x20, 0x7C}, - {0x1C, 0x20, 0x40, 0x20, 0x1C}, - {0x3C, 0x40, 0x30, 0x40, 0x3C}, - {0x44, 0x28, 0x10, 0x28, 0x44}, - {0x0C, 0x50, 0x50, 0x50, 0x3C}, - {0x44, 0x64, 0x54, 0x4C, 0x44}, - - {0x00, 0x00, 0x00, 0x00, 0x00}, - {0x00, 0x00, 0x00, 0x00, 0x00}, - {0x00, 0x00, 0x00, 0x00, 0x00}, - - {0x07, 0x05, 0x07, 0x00, 0x00}, - {0x12, 0x19, 0x16, 0x00, 0x00}, - {0x00, 0x00, 0x00, 0x00, 0x00} - -}; - -#define FIRST_CHARACTER 0 - -/***************************************************************************//** - The g_p_oled_i2c global variable is only used inside the OLED driver. It - identifies the MSS I2C block used to communicate with the OLED display. - */ -static mss_i2c_instance_t * g_p_oled_i2c = OLED_I2C_INSTANCE; - -/***************************************************************************//** - The OLED_set_cursor function sets the cursor position. - - @param line - The line parameter specifies the line at which to set the cursor. It can - take the values: - - FIRST_LINE - - SECOND_LINE - - @param char_offset - The char_offset paraemter specifies the character offset on a line where to - set the cursor location. It can be set to FIRST_CHARACTER to set the cursor - at the start of a line. - */ -void OLED_set_cursor -( - uint8_t line, - uint8_t char_offset -); -/***************************************************************************//** - The OLED_write_string function displays the input string to the OLED panel. - - @param string - The string parameter is a pointer to the zero-terminated to display on the - OLED. - */ -void OLED_write_string( const char *string); - -/***************************************************************************//** - The OLED_write_char function displays a single character to the display. - - @param data_char - The data_char parameter is the ASCII code of the character to display. -*/ -void OLED_write_char( const uint8_t data_char ); -/***************************************************************************//** - OLED_init() - See "oled.h" for details of how to use this function. - */ -void OLED_init(void ) -{ - uint8_t oled_init_sequence1[] = - { - OLED_COMMAND_CODE, CMD_DISPLAY_NON_INV, - OLED_COMMAND_CODE, CMD_DISPLAY_ALL_OFF, - OLED_COMMAND_CODE, CMD_MIRROR_HORI_ON, - OLED_COMMAND_CODE, CMD_MIRROR_VERT_OFF, - OLED_COMMAND_CODE, CMD_HORI_SCRL_OFF, - OLED_COMMAND_CODE, CMD_CONTRAST, - OLED_COMMAND_CODE, CONTRAST_DEFAULT, - OLED_COMMAND_CODE, CMD_ARECOL_LPM, - OLED_COMMAND_CODE, CMD_ARECOL_MONO^CMD_LPM_OFF - }; - - uint8_t oled_init_sequence2[] = - { - OLED_COMMAND_CODE, CMD_START_LINE, - OLED_COMMAND_CODE, CMD_PANEL_ON - }; - - MSS_I2C_init( g_p_oled_i2c, OLED_SLAVE_ADDRESS, MSS_I2C_PCLK_DIV_60 ); - - MSS_I2C_write( g_p_oled_i2c, OLED_SLAVE_ADDRESS, oled_init_sequence1, sizeof(oled_init_sequence1), MSS_I2C_RELEASE_BUS ); - MSS_I2C_wait_complete( g_p_oled_i2c ); - - OLED_clear_display(BOTH_LINES); - - MSS_I2C_write( g_p_oled_i2c, OLED_SLAVE_ADDRESS, oled_init_sequence2, sizeof(oled_init_sequence2), MSS_I2C_RELEASE_BUS ); - MSS_I2C_wait_complete( g_p_oled_i2c ); - - OLED_set_cursor( FIRST_LINE, FIRST_CHARACTER ); -} - -/***************************************************************************//** - OLED_clear_display() - See "oled.h" for details of how to use this function. - */ -void OLED_clear_display( oled_no_of_line LINES ) -{ - uint8_t i, j,start_line = 0,end_line = 0; - uint8_t clear_8_columns[] = - { - OLED_DATA_CODE, 0x00, - OLED_DATA_CODE, 0x00, - OLED_DATA_CODE, 0x00, - OLED_DATA_CODE, 0x00, - OLED_DATA_CODE, 0x00, - OLED_DATA_CODE, 0x00, - OLED_DATA_CODE, 0x00, - OLED_DATA_CODE, 0x00 - }; - - switch(LINES) - { - case FIRST_LINE: - { - start_line = FIRST_LINE; - end_line = FIRST_LINE; - } - - case SECOND_LINE: - { - start_line = SECOND_LINE; - end_line = SECOND_LINE; - } - - case BOTH_LINES: - { - start_line = FIRST_LINE; - end_line = SECOND_LINE; - } - - } - - for( j = start_line; j <= end_line; ++j ) - { - OLED_set_cursor( j, FIRST_CHARACTER ); - for( i = 0; i < 13; ++i ) - { - MSS_I2C_write( g_p_oled_i2c, OLED_SLAVE_ADDRESS, clear_8_columns, sizeof(clear_8_columns), MSS_I2C_RELEASE_BUS ); - MSS_I2C_wait_complete( g_p_oled_i2c ); - } - } -} - -/***************************************************************************//** - OLED_set_cursor() - See definition of OLED_set_cursor() for details of how to use this function. - */ -void OLED_set_cursor -( - uint8_t line, - uint8_t char_offset -) -{ - uint8_t command_sequence[] = - { - OLED_COMMAND_CODE, CMD_LOW_NIB_COL, - OLED_COMMAND_CODE, CMD_HIGH_NIB_COL, - OLED_COMMAND_CODE, CMD_PAGE_0 - }; - uint8_t low_nib, high_nib; - - ++char_offset; - char_offset *= CHARACTER_WIDTH; - low_nib = 0x0F & char_offset; - high_nib = (0xF0 & char_offset) >> 4; - line += 2; - - command_sequence[1] |= low_nib; - command_sequence[3] |= high_nib; - command_sequence[5] |= line; - MSS_I2C_write( g_p_oled_i2c, OLED_SLAVE_ADDRESS, command_sequence, sizeof(command_sequence), MSS_I2C_RELEASE_BUS ); - MSS_I2C_wait_complete( g_p_oled_i2c ); -} - -/***************************************************************************//** - OLED_write_string() - See definition of OLED_write_string for details of how to use this function. - */ -void OLED_write_string -( - const char *string -) -{ - while (*string != 0) - { - OLED_write_char( *string ); - ++string; - } -} - -/***************************************************************************//** - OLED_write_char() - See definition of OLED_write_char() for details of how to use this function. - */ -void OLED_write_char -( - const uint8_t data_char -) -{ - uint8_t txbuff[10]; - uint8_t i; - - for ( i = 0; i < CHARACTER_WIDTH; ++i ) - { - txbuff[i * 2] = OLED_DATA_CODE; - txbuff[(i * 2) + 1] = oled_ascii_character_set[data_char][i]; - } - MSS_I2C_write( g_p_oled_i2c, OLED_SLAVE_ADDRESS, txbuff, sizeof(txbuff), MSS_I2C_RELEASE_BUS ); - MSS_I2C_wait_complete( g_p_oled_i2c ); -} - -/***************************************************************************//** - OLED_horizontal_scroll() - See "oled.h" for details of how to use this function. - */ -void OLED_horizontal_scroll(struct oled_data * horiz_scroll) -{ - uint8_t horiz_scroll_on_off[] = - { - OLED_COMMAND_CODE, CMD_HORI_SCRL_OFF, - }; - - uint8_t horiz_scroll_setup_data[] = - { - OLED_COMMAND_CODE, CMD_HORI_SCRL, - OLED_COMMAND_CODE, SCROLL_PER_STEP, - OLED_COMMAND_CODE, SCROLL_PAGE_0, - OLED_COMMAND_CODE, SCROLL_12_FRAMES, - OLED_COMMAND_CODE, SCROLL_PAGE_1, - }; - MSS_I2C_write( g_p_oled_i2c, OLED_SLAVE_ADDRESS, horiz_scroll_on_off, sizeof(horiz_scroll_on_off), MSS_I2C_RELEASE_BUS ); - MSS_I2C_wait_complete( g_p_oled_i2c ); - - if(horiz_scroll->on_off == 1) - { - horiz_scroll_setup_data[3] = horiz_scroll->column_scrool_per_step; - horiz_scroll_setup_data[5] = horiz_scroll->start_page; - horiz_scroll_setup_data[7] = horiz_scroll->time_intrval_btw_scroll_step; - horiz_scroll_setup_data[9] = horiz_scroll->end_page; - MSS_I2C_write( g_p_oled_i2c, OLED_SLAVE_ADDRESS, horiz_scroll_setup_data, sizeof(horiz_scroll_setup_data), MSS_I2C_RELEASE_BUS ); - MSS_I2C_wait_complete( g_p_oled_i2c ); - - horiz_scroll_on_off[1] = CMD_HORI_SCRL_ON; - MSS_I2C_write( g_p_oled_i2c, OLED_SLAVE_ADDRESS, horiz_scroll_on_off, sizeof(horiz_scroll_on_off), MSS_I2C_RELEASE_BUS ); - MSS_I2C_wait_complete( g_p_oled_i2c ); - } -} - -/***************************************************************************//** - OLED_contrast() - See "oled.h" for details of how to use this function. - */ -void OLED_contrast(uint8_t color_contrast) -{ - uint8_t oled_contrast[] = - { - OLED_COMMAND_CODE, CMD_CONTRAST, - OLED_COMMAND_CODE, CONTRAST_DEFAULT, - }; - - oled_contrast[3] = color_contrast; - MSS_I2C_write( g_p_oled_i2c, OLED_SLAVE_ADDRESS, oled_contrast, sizeof(oled_contrast), MSS_I2C_RELEASE_BUS ); - MSS_I2C_wait_complete( g_p_oled_i2c ); - -} - -/***************************************************************************//** - OLED_write_data() - See "oled.h" for details of how to use this function. - */ -void OLED_write_data(struct oled_data* data, oled_no_of_line LINES) -{ - uint8_t line; - uint8_t char_offset; - char *string; - - switch(LINES) - { - - case FIRST_LINE: - { - OLED_clear_display(FIRST_LINE); - line = data->line1; - char_offset = data->char_offset1; - string = data->string1; - } - - case SECOND_LINE: - { - OLED_clear_display(SECOND_LINE); - line = data->line2; - char_offset = data->char_offset2; - string = data->string2; - } - - case BOTH_LINES: - { - OLED_clear_display(BOTH_LINES); - line = data->line1; - char_offset = data->char_offset1; - string = data->string1; - OLED_set_cursor(line,char_offset); - OLED_write_string(string); - line = data->line2; - char_offset = data->char_offset2; - string = data->string2; - } - - OLED_set_cursor(line,char_offset); - OLED_write_string(string); - OLED_contrast(data->contrast_val); - } -} diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/OLED/oled.h b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/OLED/oled.h deleted file mode 100644 index 17ab4a71c..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/OLED/oled.h +++ /dev/null @@ -1,210 +0,0 @@ -/***************************************************************************** - * (c) Copyright 2009 Actel Corporation. All rights reserved. - * - * Author : Actel Application Team - * Rev : 1.0.0.0 - * Description: Device driver for the on-board OLED for SmartFusion KITS - * API of sample basic driver for OLED display found on Actel SmartFusion - * development boards. - * This code is intended as an example of using the SmartFusion I2C driver. - * - */ -#ifndef OLED_H_ -#define OLED_H_ - -#include "i2c.h" - -#define OLED_HORIZ_SCROLL_ON 0x01 -#define OLED_HORIZ_SCROLL_OFF 0x00 -#define OLED_HORIZ_SCROLL_STEP 0x08 -#define OLED_CONTRAST_VAL 0xFF -#define OLED_START_PAGE 0x01 -#define OLED_HORIZ_SCROLL_TINVL 0x00 -#define OLED_END_PAGE 0x05 -/*-------------------------------------------------------------------------*/ -/* The oled_no_of_line type represents number of lines to be written on OLED. - FIRST LINE : The OLED cursor is set to line number 1 and only 1 line is - printed on OLED - SECOND_LINE : The OLED cursor is set to line number 2 and only 1 line is - printed on OLED - BOTH_LINES : The OLED cursor is set to line number 1 and line 1 and line 2 - are printed on OLED -*/ -typedef enum { - FIRST_LINE = 0, - SECOND_LINE, - BOTH_LINES -} oled_no_of_line; - -/*-------------------------------------------------------------------------*//** - oled_data - ------------------------------------------------------------------------------ - There is one instance of this structure for OLED data. Instances of this - structure is used to provide the data to OLED. A pointer to an instance of - the oled_data structure is passed as the parameter OLED driver functions. - */ -struct oled_data -{ - /* Represents line number, where String 1 has to be printed */ - uint8_t line1; - /* Represents character offset within the line1, from where String 1 has to be - * printed */ - uint8_t char_offset1; - /* Represents line number, where String 2 has to be printed */ - uint8_t line2; - /* Represents character offset within the line2, from where String 2 has to be - * printed */ - uint8_t char_offset2; - /* String 1 holds the data to be displayed on line 1 of OLED, It has to be - * less that 49 characters*/ - char *string1; - /* String 1 holds the data to be displayed on line 2 of OLED, It has to be - * less that 49 characters*/ - char *string2; - /* Holds the contrast value to be set for String 1 and String 2 */ - uint8_t contrast_val; - /* Represents ON or OFF for horizontal scrolling */ - uint8_t on_off; - /* Represents number of coumns scrolls per step for horizontal scroll*/ - unsigned char column_scrool_per_step; - /* Represents start page for horizontal scroll*/ - unsigned char start_page; - /* Represents time interval for horizontal scroll*/ - unsigned char time_intrval_btw_scroll_step; - /* Represents end page for horizontal scroll*/ - unsigned char end_page; - -}; -/***************************************************************************//** - The following defines can be used as parameter to the OLED_set_cursor() - function. - */ - -/***************************************************************************//** - The OLED_init function initializes the OLED display. - */ -void vOLEDInit( void ); -void OLED_init( void ); - -/***************************************************************************//** - This function(OLED_clear_display) clears the content of the display RAM - based on the LINES input. - ------------------------------------------------------------------------------ - @param oled_no_of_line: - The oled_no_of_line parameter enum that holds Number of lines. - If FIRST_LINE is passed as parameter to this function thnen, this functions - clears only First line that is 0 - If SECOND_LINE is passed as parameter to this function thnen, this functions - clears only Second line that is 1 - If BOTH_LINE is passed as parameter to this function thnen, this functions - clears entire OLED display. - */ -void OLED_clear_display( oled_no_of_line LINES ); - -/*-------------------------------------------------------------------------*//** - OLED Write data. - ------------------------------------------------------------------------------ - This function (OLED_write_data ) writes the data to OLED basedon the - parameters passed to this function. - ------------------------------------------------------------------------------ - @param data: - The data parameter is a pointer to an oled_data structure, that holds - different fields of data to be required for OLED (see the oled_data structure - definition). - - @param oled_no_of_line: - The oled_no_of_line parameter enum that holds Number of lines. - If FIRST_LINE is passed as parameter to this function thnen, this functions - wtites string 1 at FIRST LINE - If SECOND_LINE is passed as parameter to this function thnen, this functions - wtites string 1 at SECOND LINE - If BOTH_LINE is passed as parameter to this function thnen, this functions - wtites string 1 and string 2 at FIRST LINE and SECOND LINE respectively. -Example: - @code -#include "drivers/mss_watchdog/mss_watchdog.h" -#include "oled.h" -#define FIRST_CHARACTER 0 - -int main() -{ - - char *string1="SmartFusion"; - char *string2="INNOVATIVE "; - struct oled_data write_data; - - write_data.line1 = FIRST_LINE; - write_data.char_offset1 = FIRST_CHARACTER; - write_data.string1 = string1; - write_data.line2 = SECOND_LINE; - write_data.char_offset2 = FIRST_CHARACTER; - write_data.string2 = string2; - write_data.contrast_val = 0x01; - - MSS_WD_disable(); - OLED_init(); - OLED_write_data(&write_data,BOTH_LINES); - return 0; -} - @endcode - */ - -void OLED_write_data(struct oled_data * data, oled_no_of_line flag); - -/*-------------------------------------------------------------------------*//** - OLED Horizontal scrolling. - ------------------------------------------------------------------------------ - This function (OLED_horizontal_scroll ) enbles the Horizontal scrolling. - ------------------------------------------------------------------------------ - @param data: - The horiz_scroll parameter is a pointer to an oled_data structure, that holds - different fields of data to be required for OLED (see the oled_data structure - definition). -Example: - @code - -int main() -{ - - char *string1="SmartFusion"; - char *string2="INNOVATIVE "; - struct oled_data write_data; - - write_data.line1 = FIRST_LINE; - write_data.char_offset1 = FIRST_CHARACTER; - write_data.string1 = string1; - write_data.line2 = SECOND_LINE; - write_data.char_offset2 = FIRST_CHARACTER; - write_data.string2 = string2; - write_data.contrast_val = 0x01; - write_data.on_off = 0x01; - write_data.column_scrool_per_step = 0x08; - write_data.start_page = 0x01; - write_data.time_intrval_btw_scroll_step = 0x00; - write_data.end_page = 0x05; - - MSS_WD_disable(); - OLED_init(); - OLED_write_data(&write_data,BOTH_LINES); - OLED_horizontal_scroll(&write_data); - return 0; -} - @endcode - */ - -void OLED_horizontal_scroll(struct oled_data * horiz_scroll); - -/***************************************************************************//** - This function(OLED_contrast) sets ths conrtast to the data displayed on the - OLED. - ------------------------------------------------------------------------------ - @param color_contrast: - The color_contrast parameter that holds contrast value. - The color_contrast values should be in the range of 1 to 256. - */ -void OLED_contrast(uint8_t color_contrast); - -#endif - - - diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/bsp_config.h b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/bsp_config.h deleted file mode 100644 index 79f456e1a..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/bsp_config.h +++ /dev/null @@ -1,28 +0,0 @@ -/***************************************************************************** - * (c) Copyright 2009 Actel Corporation. All rights reserved. - * - * - * - * Author : Actel Application Team - * Rev : 1.0.0.0 - * Description: Configuration for the ON-BOARD peripherals for SmartFusion KITS. - * - *******************************************************************************/ -#ifndef BSP_CONFIG_H_ -#define BSP_CONFIG_H_ - -#include "i2c.h" -/* Configuration for OLED */ -#define OLED_I2C_INSTANCE &g_mss_i2c0 - -/* Configuration for the SPI Flash */ -#define SPI_FLASH_ON_SF_DEV_KIT 0 -#define SPI_FLASH_ON_SF_EVAL_KIT 1 - -#define USE_DMA_FOR_SPI_FLASH 1 -#define SPI_FLASH_DMA_CHANNEL 0 - -#endif - - - diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_ace/ace_convert.c b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_ace/ace_convert.c deleted file mode 100644 index dbe1205ba..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_ace/ace_convert.c +++ /dev/null @@ -1,831 +0,0 @@ -/******************************************************************************* - * (c) Copyright 2009 Actel Corporation. All rights reserved. - * - * SVN $Revision: 2905 $ - * SVN $Date: 2010-08-20 14:03:28 +0100 (Fri, 20 Aug 2010) $ - */ -#include "mss_ace.h" -#include "mss_ace_configurator.h" -#include "../../CMSIS/a2fxxxm3.h" -#include "../../CMSIS/mss_assert.h" -#include "../../drivers_config/mss_ace/ace_handles.h" -#include "../../drivers_config/mss_ace/ace_config.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/*-------------------------------------------------------------------------*//** - * - */ -extern ace_channel_desc_t g_ace_channel_desc_table[ACE_NB_OF_INPUT_CHANNELS]; -extern ace_adc_config_t g_ace_adc_config[ACE_NB_OF_ADC]; -extern const uint32_t g_ace_current_resistors[ACE_NB_OF_CURRENT_MONITORS]; - -/*-------------------------------------------------------------------------*//** - * - */ -static uint16_t convert_mV_to_ppe_value -( - ace_channel_handle_t channel_handle, - uint32_t voltage -); - -/*-------------------------------------------------------------------------*//** - * - */ -void ace_init_convert(void); - -/*-------------------------------------------------------------------------*//** - * - */ -#define VOLTAGE_CHANNEL 0u -#define CURRENT_CHANNEL 1u -#define TEMPERATURE_CHANNEL 2u -#define INVALID_CHANNEL 0xFFu - -static const uint8_t channel_type_lut[] = -{ - VOLTAGE_CHANNEL, /* ADC0_1P5V = 0 */ - VOLTAGE_CHANNEL, /* ABPS0 = 1 */ - VOLTAGE_CHANNEL, /* ABPS1 = 2 */ - CURRENT_CHANNEL, /* CM0 = 3 */ - TEMPERATURE_CHANNEL, /* TM0 = 4 */ - VOLTAGE_CHANNEL, /* ABPS2 = 5 */ - VOLTAGE_CHANNEL, /* ABPS3 = 6 */ - CURRENT_CHANNEL, /* CM1 = 7 */ - TEMPERATURE_CHANNEL, /* TM1 = 8 */ - VOLTAGE_CHANNEL, /* ADC0 = 9 */ - VOLTAGE_CHANNEL, /* ADC1 = 10 */ - VOLTAGE_CHANNEL, /* ADC2 = 11 */ - VOLTAGE_CHANNEL, /* ADC3 = 12 */ - INVALID_CHANNEL, - INVALID_CHANNEL, - VOLTAGE_CHANNEL, /* SDD0_IN = 15 */ - - VOLTAGE_CHANNEL, /* ADC1_1P5V = 16 */ - VOLTAGE_CHANNEL, /* ABPS4 = 17 */ - VOLTAGE_CHANNEL, /* ABPS5 = 18 */ - CURRENT_CHANNEL, /* CM2 = 19 */ - TEMPERATURE_CHANNEL, /* TM2 = 20 */ - VOLTAGE_CHANNEL, /* ABPS6 = 21 */ - VOLTAGE_CHANNEL, /* ABPS7 = 22 */ - CURRENT_CHANNEL, /* CM3 = 23 */ - TEMPERATURE_CHANNEL, /* TM3 = 24 */ - VOLTAGE_CHANNEL, /* ADC4 = 25 */ - VOLTAGE_CHANNEL, /* ADC5 = 26 */ - VOLTAGE_CHANNEL, /* ADC6 = 27 */ - VOLTAGE_CHANNEL, /* ADC7 = 28 */ - INVALID_CHANNEL, - INVALID_CHANNEL, - VOLTAGE_CHANNEL, /* SDD1_IN = 31 */ - - VOLTAGE_CHANNEL, /* ADC2_1P5V = 32 */ - VOLTAGE_CHANNEL, /* ABPS8 = 33 */ - VOLTAGE_CHANNEL, /* ABPS9 = 34 */ - CURRENT_CHANNEL, /* CM4 = 35 */ - TEMPERATURE_CHANNEL, /* TM4 = 36 */ - VOLTAGE_CHANNEL, /* ABPS10 = 37 */ - VOLTAGE_CHANNEL, /* ABPS11 = 38 */ - CURRENT_CHANNEL, /* CM5 = 39 */ - TEMPERATURE_CHANNEL, /* TM5 = 40 */ - VOLTAGE_CHANNEL, /* ADC8 = 41 */ - VOLTAGE_CHANNEL, /* ADC9 = 42 */ - VOLTAGE_CHANNEL, /* ADC10 = 43 */ - VOLTAGE_CHANNEL, /* ADC11 = 44 */ - INVALID_CHANNEL, - INVALID_CHANNEL, - VOLTAGE_CHANNEL /* SDD2_IN = 47 */ -}; - -static const uint8_t channel_quad_lut[] = -{ - 0xFFu, /* ADC0_1P5V = 0 */ - 0u, /* ABPS0 = 1 */ - 0u, /* ABPS1 = 2 */ - 0u, /* CM0 = 3 */ - 0u, /* TM0 = 4 */ - 1u, /* ABPS2 = 5 */ - 1u, /* ABPS3 = 6 */ - 1u, /* CM1 = 7 */ - 1u, /* TM1 = 8 */ - 0xFFu, /* ADC0 = 9 */ - 0xFFu, /* ADC1 = 10 */ - 0xFFu, /* ADC2 = 11 */ - 0xFFu, /* ADC3 = 12 */ - INVALID_CHANNEL, - INVALID_CHANNEL, - 0xFFu, /* SDD0_IN = 15 */ - - 0xFFu, /* ADC1_1P5V = 16 */ - 2u, /* ABPS4 = 17 */ - 2u, /* ABPS5 = 18 */ - 2u, /* CM2 = 19 */ - 2u, /* TM2 = 20 */ - 3u, /* ABPS6 = 21 */ - 3u, /* ABPS7 = 22 */ - 3u, /* CM3 = 23 */ - 3u, /* TM3 = 24 */ - 0xFFu, /* ADC4 = 25 */ - 0xFFu, /* ADC5 = 26 */ - 0xFFu, /* ADC6 = 27 */ - 0xFFu, /* ADC7 = 28 */ - INVALID_CHANNEL, - INVALID_CHANNEL, - 0xFFu, /* SDD1_IN = 31 */ - - 0xFFu, /* ADC2_1P5V = 32 */ - 4u, /* ABPS8 = 33 */ - 4u, /* ABPS9 = 34 */ - 4u, /* CM4 = 35 */ - 4u, /* TM4 = 36 */ - 5u, /* ABPS10 = 37 */ - 5u, /* ABPS11 = 38 */ - 5u, /* CM5 = 39 */ - 5u, /* TM5 = 40 */ - 0xFFu, /* ADC8 = 41 */ - 0xFFu, /* ADC9 = 42 */ - 0xFFu, /* ADC10 = 43 */ - 0xFFu, /* ADC11 = 44 */ - INVALID_CHANNEL, - INVALID_CHANNEL, - 0xFFu /* SDD2_IN = 47 */ -}; - -/*-------------------------------------------------------------------------*//** - * - */ -#define NON_ABPS_CHANNEL 0xFFu -#define MAX_NB_OF_APBS 12u - -/*-------------------------------------------------------------------------*//** - * Lookup of the quad to which an ABPS belongs - */ -static const uint8_t abps_channel_lut[] = -{ - NON_ABPS_CHANNEL, /* ADC0_1P5V = 0 */ - 0u, /* ABPS0 = 1 */ - 0u, /* ABPS1 = 2 */ - NON_ABPS_CHANNEL, /* CM0 = 3 */ - NON_ABPS_CHANNEL, /* TM0 = 4 */ - 1u, /* ABPS2 = 5 */ - 1u, /* ABPS3 = 6 */ - NON_ABPS_CHANNEL, /* CM1 = 7 */ - NON_ABPS_CHANNEL, /* TM1 = 8 */ - NON_ABPS_CHANNEL, /* ADC0 = 9 */ - NON_ABPS_CHANNEL, /* ADC1 = 10 */ - NON_ABPS_CHANNEL, /* ADC2 = 11 */ - NON_ABPS_CHANNEL, /* ADC3 = 12 */ - INVALID_CHANNEL, - INVALID_CHANNEL, - NON_ABPS_CHANNEL, /* SDD0_IN = 15 */ - - NON_ABPS_CHANNEL, /* ADC1_1P5V = 16 */ - 2u, /* ABPS4 = 17 */ - 2u, /* ABPS5 = 18 */ - NON_ABPS_CHANNEL, /* CM2 = 19 */ - NON_ABPS_CHANNEL, /* TM2 = 20 */ - 3u, /* ABPS6 = 21 */ - 3u, /* ABPS7 = 22 */ - NON_ABPS_CHANNEL, /* CM3 = 23 */ - NON_ABPS_CHANNEL, /* TM3 = 24 */ - NON_ABPS_CHANNEL, /* ADC4 = 25 */ - NON_ABPS_CHANNEL, /* ADC5 = 26 */ - NON_ABPS_CHANNEL, /* ADC6 = 27 */ - NON_ABPS_CHANNEL, /* ADC7 = 28 */ - INVALID_CHANNEL, - INVALID_CHANNEL, - NON_ABPS_CHANNEL, /* SDD1_IN = 31 */ - - NON_ABPS_CHANNEL, /* ADC2_1P5V = 32 */ - 4u, /* ABPS8 = 33 */ - 4u, /* ABPS9 = 34 */ - NON_ABPS_CHANNEL, /* CM4 = 35 */ - NON_ABPS_CHANNEL, /* TM4 = 36 */ - 5u, /* ABPS10 = 37 */ - 5u, /* ABPS11 = 38 */ - NON_ABPS_CHANNEL, /* CM5 = 39 */ - NON_ABPS_CHANNEL, /* TM5 = 40 */ - NON_ABPS_CHANNEL, /* ADC8 = 41 */ - NON_ABPS_CHANNEL, /* ADC9 = 42 */ - NON_ABPS_CHANNEL, /* ADC10 = 43 */ - NON_ABPS_CHANNEL, /* ADC11 = 44 */ - INVALID_CHANNEL, - INVALID_CHANNEL, - NON_ABPS_CHANNEL /* SDD2_IN = 47 */ -}; - -static const uint8_t abps_idx_lut[] = -{ - NON_ABPS_CHANNEL, /* ADC0_1P5V = 0 */ - 0u, /* ABPS0 = 1 */ - 1u, /* ABPS1 = 2 */ - NON_ABPS_CHANNEL, /* CM0 = 3 */ - NON_ABPS_CHANNEL, /* TM0 = 4 */ - 2u, /* ABPS2 = 5 */ - 3u, /* ABPS3 = 6 */ - NON_ABPS_CHANNEL, /* CM1 = 7 */ - NON_ABPS_CHANNEL, /* TM1 = 8 */ - NON_ABPS_CHANNEL, /* ADC0 = 9 */ - NON_ABPS_CHANNEL, /* ADC1 = 10 */ - NON_ABPS_CHANNEL, /* ADC2 = 11 */ - NON_ABPS_CHANNEL, /* ADC3 = 12 */ - INVALID_CHANNEL, - INVALID_CHANNEL, - NON_ABPS_CHANNEL, /* SDD0_IN = 15 */ - - NON_ABPS_CHANNEL, /* ADC1_1P5V = 16 */ - 4u, /* ABPS4 = 17 */ - 5u, /* ABPS5 = 18 */ - NON_ABPS_CHANNEL, /* CM2 = 19 */ - NON_ABPS_CHANNEL, /* TM2 = 20 */ - 6u, /* ABPS6 = 21 */ - 7u, /* ABPS7 = 22 */ - NON_ABPS_CHANNEL, /* CM3 = 23 */ - NON_ABPS_CHANNEL, /* TM3 = 24 */ - NON_ABPS_CHANNEL, /* ADC4 = 25 */ - NON_ABPS_CHANNEL, /* ADC5 = 26 */ - NON_ABPS_CHANNEL, /* ADC6 = 27 */ - NON_ABPS_CHANNEL, /* ADC7 = 28 */ - INVALID_CHANNEL, - INVALID_CHANNEL, - NON_ABPS_CHANNEL, /* SDD1_IN = 31 */ - - NON_ABPS_CHANNEL, /* ADC2_1P5V = 32 */ - 8u, /* ABPS8 = 33 */ - 9u, /* ABPS9 = 34 */ - NON_ABPS_CHANNEL, /* CM4 = 35 */ - NON_ABPS_CHANNEL, /* TM4 = 36 */ - 10u, /* ABPS10 = 37 */ - 11u, /* ABPS11 = 38 */ - NON_ABPS_CHANNEL, /* CM5 = 39 */ - NON_ABPS_CHANNEL, /* TM5 = 40 */ - NON_ABPS_CHANNEL, /* ADC8 = 41 */ - NON_ABPS_CHANNEL, /* ADC9 = 42 */ - NON_ABPS_CHANNEL, /* ADC10 = 43 */ - NON_ABPS_CHANNEL, /* ADC11 = 44 */ - INVALID_CHANNEL, - INVALID_CHANNEL, - NON_ABPS_CHANNEL /* SDD2_IN = 47 */ -}; - -/*-------------------------------------------------------------------------*//** - * - */ -static const int8_t apbs_gain_lut[] = -{ - 12, - 8, - 4, - 2 -}; - -static const int16_t apbs_range[] = -{ - 15360, - 10240, - 5120, - 2560 -}; - -static uint8_t g_gdec_lut[MAX_NB_OF_APBS]; -static channel_type_t channel_type_lut_h[ACE_NB_OF_INPUT_CHANNELS]; - - -/*-------------------------------------------------------------------------*//** - * - */ -channel_type_t -ACE_get_channel_type -( - ace_channel_handle_t channel_handle -) -{ - channel_type_t channel_type = VOLTAGE; - - ASSERT(channel_handle < ACE_NB_OF_INPUT_CHANNELS); - - if((int32_t)channel_handle < ACE_NB_OF_INPUT_CHANNELS) - { - channel_type = channel_type_lut_h[channel_handle]; - } - else - { - channel_type = VOLTAGE; - } - - return channel_type; -} - -/*-------------------------------------------------------------------------*//** - * - */ -uint32_t ACE_convert_adc_input_to_mV -( - ace_channel_handle_t channel_handle, - uint16_t sample_value -) -{ - uint32_t voltage; - adc_channel_id_t channel_id; - uint8_t adc_id; - - channel_id = g_ace_channel_desc_table[channel_handle].signal_id; - adc_id = (uint8_t)channel_id >> 4u; - voltage = ( g_ace_adc_config[adc_id].va_ref * (uint32_t)sample_value ) / g_ace_adc_config[adc_id].adc_resolution; - - return voltage; -} - -/*-------------------------------------------------------------------------*//** - * - */ -#define PPE_SAMPLES_RESOLUTION 4095u - -/*-------------------------------------------------------------------------*//** - * - */ -void ace_init_convert(void) -{ - uint8_t abps_idx; - int32_t channel; - uint32_t saved_pc2_ctrl; - - /* Pause the SSE PC2 while accesses to ACB from APB3 are taking place. */ - saved_pc2_ctrl = ACE->PC2_CTRL; - ACE->PC2_CTRL = 0u; - - /* Populate the g_gdec_lut look-up table. */ - for(abps_idx = 0u; abps_idx < MAX_NB_OF_APBS; ++abps_idx) - { - uint8_t quad_id; - uint8_t acb_config_byte; - uint32_t channel_is_abps2; - - quad_id = abps_idx / 2u; - acb_config_byte = ACE->ACB_DATA[quad_id].b8; - channel_is_abps2 = abps_idx & 0x01uL; - if(channel_is_abps2) - { - /* ABPS2 */ - g_gdec_lut[abps_idx] = (acb_config_byte >> 5u) & 0x03u; - } - else - { - /* ABPS1 */ - g_gdec_lut[abps_idx] = (acb_config_byte >> 1u) & 0x03u; - } - } - - /* Populate the channel_type_lut_h look-up table. */ - for(channel = 0; channel < ACE_NB_OF_INPUT_CHANNELS; ++channel) - { - uint8_t quad_id; - uint8_t acb_config_byte; - adc_channel_id_t channel_id; - channel_type_t channel_type; - - channel_id = g_ace_channel_desc_table[channel].signal_id; - quad_id = channel_quad_lut[channel_id]; - - switch (channel_type_lut[channel_id]) - { - case VOLTAGE_CHANNEL: - channel_type = VOLTAGE; - break; - - case CURRENT_CHANNEL: - ASSERT( quad_id != 0xFFu ); - acb_config_byte = ACE->ACB_DATA[quad_id].b9; - if ( acb_config_byte & 0x01u ) - { - channel_type = VOLTAGE; - } - else - { - channel_type = CURRENT; - } - break; - - case TEMPERATURE_CHANNEL: - ASSERT( quad_id != 0xFFu ); - acb_config_byte = ACE->ACB_DATA[quad_id].b10; - if ( acb_config_byte & 0x01u ) - { - channel_type = VOLTAGE; - } - else - { - channel_type = TEMPERATURE; - } - break; - - default: - ASSERT(0); - channel_type = VOLTAGE; - break; - } - - channel_type_lut_h[channel] = channel_type; - } - - /* Restore SSE PC2 operations. */ - ACE->PC2_CTRL = saved_pc2_ctrl; -} - -/*-------------------------------------------------------------------------*//** - * - */ -int32_t ACE_convert_to_mV -( - ace_channel_handle_t channel_handle, - uint16_t sample_value -) -{ - uint32_t adc_voltage; - int32_t voltage; - adc_channel_id_t channel_id; - uint8_t adc_id; - uint8_t apbs_idx; - - channel_id = g_ace_channel_desc_table[channel_handle].signal_id; - adc_id = (uint8_t)channel_id >> 4u; - adc_voltage = ( g_ace_adc_config[adc_id].va_ref * (uint32_t)sample_value ) / PPE_SAMPLES_RESOLUTION; - voltage = (int32_t)adc_voltage; - - apbs_idx = abps_idx_lut[channel_id]; - if ( abps_channel_lut[channel_id] != NON_ABPS_CHANNEL ) - { - uint8_t gdec; - gdec = g_gdec_lut[apbs_idx]; - voltage = (voltage * apbs_gain_lut[gdec]) - apbs_range[gdec]; - } - return voltage; -} - -/*-------------------------------------------------------------------------*//** - * - */ -uint32_t ACE_convert_to_mA -( - ace_channel_handle_t channel_handle, - uint16_t sample_value -) -{ - uint32_t current = 0u; - - ASSERT(channel_handle < ACE_NB_OF_INPUT_CHANNELS); - - if((int32_t)channel_handle < ACE_NB_OF_INPUT_CHANNELS) - { - adc_channel_id_t channel_id; - uint8_t current_monitor_idx; - - channel_id = g_ace_channel_desc_table[channel_handle].signal_id; - ASSERT(channel_id < sizeof(channel_type_lut)); - if(CURRENT_CHANNEL == channel_type_lut[channel_id]) - { - uint32_t resistor; - uint32_t voltage; - - /* Compute index into g_ace_current_resistors[] from the current - * channel number. This uses bit 2, 4 and 5 of the channel number - * to derive the index as follows: - * channel name : channel number : index - * CM0 : 0x03 : 0 - * CM1 : 0x07 : 1 - * CM2 : 0x13 : 2 - * CM3 : 0x17 : 3 - * CM4 : 0x23 : 4 - * CM5 : 0x27 : 5 - */ - current_monitor_idx - = (((uint8_t)channel_id & 0x04u) >> 2u) + (((uint8_t)channel_id & 0x30u) >> 3u); - - if(current_monitor_idx < (uint8_t)ACE_NB_OF_CURRENT_MONITORS) - { - /* Retrieve the current sensing external resistor value from - * the ACE configuration data generated by the ACE configurator. */ - resistor = g_ace_current_resistors[current_monitor_idx]; - - /* Compute mA current value taking into account the amplication - * factor of 50 used within the current monitor hardware. */ - voltage = ACE_convert_adc_input_to_mV(channel_handle, sample_value); - current = (voltage * (1000u / 50u)) / resistor; -; - } - } - } - - return current; -} - -/*-------------------------------------------------------------------------*//** - * - */ -uint32_t ACE_convert_to_Kelvin -( - ace_channel_handle_t channel_handle, - uint16_t sample_value -) -{ - uint32_t temperature; - uint32_t voltage; - - voltage = ACE_convert_adc_input_to_mV( channel_handle, sample_value ); - - /* Tk = (V * 10^3) / 2.5 */ - temperature = (voltage * 10u) / 25u; - - return temperature; -} - -/*-------------------------------------------------------------------------*//** - * - */ -int32_t ACE_convert_to_Celsius -( - ace_channel_handle_t channel_handle, - uint16_t sample_value -) -{ - int32_t temperature; - int32_t voltage; - - voltage = (int32_t)ACE_convert_adc_input_to_mV( channel_handle, sample_value ); - - /* Tk = (V * 10^3) / 2.5 */ - /* Tc = Tk - 273.15 */ - temperature = (voltage * 4) - 2731; - - return temperature; -} - -/*-------------------------------------------------------------------------*//** - * - */ -int32_t ACE_convert_to_Fahrenheit -( - ace_channel_handle_t channel_handle, - uint16_t sample_value -) -{ - int32_t temperature; - - temperature = (int32_t)ACE_convert_to_Kelvin( channel_handle, sample_value ); - - /* F = (K * 9/5) - 459.67 */ - temperature = ((temperature * 9) / 5) - 459; - - return temperature; -} - -/*-------------------------------------------------------------------------*//** - * - */ -const uint8_t * ACE_get_channel_name -( - ace_channel_handle_t channel_handle -) -{ - const uint8_t * p_channel_name = 0; - - if ( channel_handle < NB_OF_ACE_CHANNEL_HANDLES) - { - p_channel_name = g_ace_channel_desc_table[channel_handle].p_sz_channel_name; - } - - return p_channel_name; -} - -/*-------------------------------------------------------------------------*//** - * - */ -uint16_t ACE_convert_mV_to_adc_value -( - ace_channel_handle_t channel_handle, - uint32_t voltage -) -{ - uint16_t sample_value; - adc_channel_id_t channel_id; - uint8_t adc_id; - - channel_id = g_ace_channel_desc_table[channel_handle].signal_id; - adc_id = (uint8_t)channel_id >> 4u; - - if (voltage > g_ace_adc_config[adc_id].va_ref) - { - sample_value = g_ace_adc_config[adc_id].adc_resolution - 1u; - } - else - { - sample_value = (uint16_t)((voltage * (g_ace_adc_config[adc_id].adc_resolution - 1)) / g_ace_adc_config[adc_id].va_ref); - } - - return sample_value; -} - -/*-------------------------------------------------------------------------*//** - * - */ -static uint16_t convert_mV_to_ppe_value -( - ace_channel_handle_t channel_handle, - uint32_t voltage -) -{ - uint16_t sample_value; - adc_channel_id_t channel_id; - uint8_t adc_id; - - channel_id = g_ace_channel_desc_table[channel_handle].signal_id; - adc_id = (uint8_t)channel_id >> 4u; - - if (voltage > g_ace_adc_config[adc_id].va_ref) - { - sample_value = PPE_SAMPLES_RESOLUTION; - } - else - { - sample_value = (uint16_t)((voltage * PPE_SAMPLES_RESOLUTION) / g_ace_adc_config[adc_id].va_ref); - } - - return sample_value; -} - -#define MAX_PPE_SAMPLE_VALUE 0x0FFFu - -/*-------------------------------------------------------------------------*//** - * - */ -uint16_t ACE_convert_from_mV -( - ace_channel_handle_t channel_handle, - int32_t voltage -) -{ - uint16_t sample_value; - adc_channel_id_t channel_id; - uint8_t adc_id; - uint32_t adc_voltage; - - channel_id = g_ace_channel_desc_table[channel_handle].signal_id; - adc_id = (uint8_t)channel_id >> 4u; - - if ( abps_channel_lut[channel_id] == NON_ABPS_CHANNEL ) - { - if (voltage > 0) - { - adc_voltage = (uint32_t)voltage; - } - else - { - adc_voltage = 0u; - } - } - else - { - uint8_t apbs_idx; - uint8_t gdec; - - apbs_idx = abps_idx_lut[channel_id]; - gdec = g_gdec_lut[apbs_idx]; - voltage = voltage + apbs_range[gdec]; - if (voltage > 0) - { - adc_voltage = (uint32_t)voltage; - adc_voltage = adc_voltage / (uint8_t)apbs_gain_lut[gdec]; - } - else - { - adc_voltage = 0; - } - } - - sample_value = (uint16_t)((adc_voltage * PPE_SAMPLES_RESOLUTION) / g_ace_adc_config[adc_id].va_ref); - - if (sample_value > MAX_PPE_SAMPLE_VALUE) - { - sample_value = MAX_PPE_SAMPLE_VALUE; - } - return sample_value; -} - -/*-------------------------------------------------------------------------*//** - * - */ -uint16_t ACE_convert_from_mA -( - ace_channel_handle_t channel_handle, - uint32_t current -) -{ - uint16_t sample_value; - uint32_t voltage; - uint32_t resistor = 1u; - - voltage = current * 50u * resistor; - sample_value = convert_mV_to_ppe_value( channel_handle, voltage ); - - if (sample_value > MAX_PPE_SAMPLE_VALUE) - { - sample_value = MAX_PPE_SAMPLE_VALUE; - } - return sample_value; -} - -/*-------------------------------------------------------------------------*//** - * - */ -uint16_t ACE_convert_from_Kelvin -( - ace_channel_handle_t channel_handle, - uint32_t temperature -) -{ - uint16_t sample_value; - uint32_t voltage; - - voltage = (temperature * 25u) / 10u; - sample_value = convert_mV_to_ppe_value( channel_handle, voltage ); - - if (sample_value > MAX_PPE_SAMPLE_VALUE) - { - sample_value = MAX_PPE_SAMPLE_VALUE; - } - return sample_value; -} - -/*-------------------------------------------------------------------------*//** - * - */ -uint16_t ACE_convert_from_Celsius -( - ace_channel_handle_t channel_handle, - int32_t temperature -) -{ - uint16_t sample_value; - uint32_t voltage; - - temperature = temperature + 2731; - voltage = (uint32_t)temperature / 4u; - sample_value = convert_mV_to_ppe_value( channel_handle, voltage ); - - if (sample_value > MAX_PPE_SAMPLE_VALUE) - { - sample_value = MAX_PPE_SAMPLE_VALUE; - } - return sample_value; -} - -/*-------------------------------------------------------------------------*//** - * - */ -uint16_t ACE_convert_from_Fahrenheit -( - ace_channel_handle_t channel_handle, - int32_t temperature -) -{ - uint16_t sample_value; - uint32_t kelvin; - - temperature = temperature + 459; - kelvin = (uint32_t)temperature; - kelvin = (kelvin * 5u) / 9u; - - sample_value = ACE_convert_from_Kelvin( channel_handle, kelvin ); - - if (sample_value > MAX_PPE_SAMPLE_VALUE) - { - sample_value = MAX_PPE_SAMPLE_VALUE; - } - return sample_value; -} - -/*-------------------------------------------------------------------------*//** - * - */ -uint16_t ACE_translate_pdma_value -( - uint32_t pdma_value, - adc_channel_id_t * channel_id -) -{ - uint16_t ppe_value; - - ppe_value = (pdma_value >> 8u) & 0xFFFFu; - if ( channel_id != 0 ) - { - *channel_id = (adc_channel_id_t)((pdma_value >> 24u) & 0xFFu); - } - - return ppe_value; -} - -#ifdef __cplusplus -} -#endif - diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_ace/envm_layout.h b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_ace/envm_layout.h deleted file mode 100644 index 0081310d7..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_ace/envm_layout.h +++ /dev/null @@ -1,37 +0,0 @@ -/******************************************************************************* - * (c) Copyright 2009 Actel Corporation. All rights reserved. - * - * This file contains the addresses and size of the various blocks of data - * stored in eNVM. - * - * SVN $Revision: 1113 $ - * SVN $Date: 2009-07-01 11:11:29 +0100 (Wed, 01 Jul 2009) $ - */ -#ifndef ENVM_LAYOUT_HEADER -#define ENVM_LAYOUT_HEADER - -#ifdef __cplusplus -extern "C" { -#endif - -/*============================================================================== - * Address of the manufacturing test data. - */ -#define MTD_ADDRESS 0x60080010 - -/*============================================================================== - * MSS configuration location. - */ -#define MSS_CONFIG_ADDRESS 0x60081618 - -/*============================================================================== - * Analog configuration location and size. - */ -#define ANALOG_CONFIG_ADDRESS 0x60081600 -#define ANALOG_CONFIG_BYTE_SIZE 24 - -#ifdef __cplusplus -} -#endif - -#endif /* ENVM_LAYOUT_HEADER */ diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_ace/mss_ace.c b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_ace/mss_ace.c deleted file mode 100644 index ebd1e8dde..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_ace/mss_ace.c +++ /dev/null @@ -1,746 +0,0 @@ -/******************************************************************************* - * (c) Copyright 2009 Actel Corporation. All rights reserved. - * - * SVN $Revision: 2905 $ - * SVN $Date: 2010-08-20 14:03:28 +0100 (Fri, 20 Aug 2010) $ - */ - -#include "mss_ace.h" -#include "mtd_data.h" -#include "envm_layout.h" -#include "mss_ace_configurator.h" -#include "../../CMSIS/a2fxxxm3.h" -#include "../../CMSIS/mss_assert.h" -#include "../../drivers_config/mss_ace/ace_config.h" -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#define START_ADC_CONVERSION 0x80uL - - -/**/ -void ace_init_flags( void ); -void ace_init_convert(void); - -/*-------------------------------------------------------------------------*//** - See "mss_ace.h" for details of how to use this function. - */ -void ACE_init( void ) -{ - /* Initialize driver's internal data. */ - #if (ACE_NB_OF_PPE_FLAGS > 0) - ace_init_flags(); - #endif - - /* Initialize the data structures used by conversion functions. */ - ace_init_convert(); -} - -/*-------------------------------------------------------------------------*//** - See "mss_ace.h" for details of how to use this function. - */ -void ACE_start_adc -( - adc_channel_id_t channel_id -) -{ - ACE->ADC0_CONV_CTRL = (uint32_t)channel_id | START_ADC_CONVERSION; -} - -/*-------------------------------------------------------------------------*//** - See "mss_ace.h" for details of how to use this function. - */ -#define ADC_DATAVALID_MASK 0x00001000uL -#define ADC_RESULT_MASK 0x00000FFFuL - -static const uint32_t volatile * const adc_status_reg_lut[NB_OF_ANALOG_MODULES] = -{ - &ACE->ADC0_STATUS, - &ACE->ADC1_STATUS, - &ACE->ADC2_STATUS -}; - -uint16_t ACE_get_adc_result -( - uint8_t adc_id -) -{ - uint16_t result = 0u; - uint32_t data_valid; - - ASSERT( adc_id < NB_OF_ANALOG_MODULES ); - - if ( adc_id < (uint8_t)NB_OF_ANALOG_MODULES ) - { - do { - data_valid = *adc_status_reg_lut[adc_id] & ADC_DATAVALID_MASK; - } while ( !data_valid ); - - result = (uint16_t)(*adc_status_reg_lut[adc_id] & ADC_RESULT_MASK); - } - return result; -} - -/*============================================================================== - =========== Sigma Delta Digital to Analog Converters (SDD) Control ============ - =============================================================================*/ - -#define SDD_ENABLE_MASK 0x20uL -#define SDD_REG_SEL_MASK 0x40uL - -#define DAC0_SYNC_EN_MASK 0x10uL -#define DAC1_SYNC_EN_MASK 0x20uL -#define DAC2_SYNC_EN_MASK 0x40uL - -#define DAC0_SYNC_UPDATE 0x01uL -#define DAC1_SYNC_UPDATE 0x02uL -#define DAC2_SYNC_UPDATE 0x04uL - -/*-------------------------------------------------------------------------*//** - * - */ -static volatile uint32_t * const dac_ctrl_reg_lut[NB_OF_ANALOG_MODULES] = -{ - &ACE->DAC0_CTRL, - &ACE->DAC1_CTRL, - &ACE->DAC1_CTRL -}; - -static const uint32_t dac_enable_masks_lut[NB_OF_ANALOG_MODULES] = -{ - DAC0_SYNC_EN_MASK, - DAC1_SYNC_EN_MASK, - DAC2_SYNC_EN_MASK -}; - -static volatile uint32_t * const dac_byte01_reg_lut[NB_OF_ANALOG_MODULES] = -{ - &ACE->SSE_DAC0_BYTES01, - &ACE->SSE_DAC1_BYTES01, - &ACE->SSE_DAC2_BYTES01, -}; - -static volatile uint32_t * const dac_byte2_reg_lut[NB_OF_ANALOG_MODULES] = -{ - &ACE->DAC0_BYTE2, - &ACE->DAC1_BYTE2, - &ACE->DAC2_BYTE2 -}; - -/*------------------------------------------------------------------------------ - * Pointer to the manufacturing test data containing trimming information - * generated during manufacturing. - */ -static const mtd_data_t * const p_mtd_data = (mtd_data_t *)MTD_ADDRESS; - -/*-------------------------------------------------------------------------*//** - See "mss_ace.h" for details of how to use this function. - */ -#define OBD_MODE_MASK (uint8_t)0x01 -#define OBD_CHOPPING_MASK (uint8_t)0x02 - -void ACE_configure_sdd -( - sdd_id_t sdd_id, - sdd_resolution_t resolution, - uint8_t mode, - sdd_update_method_t sync_update -) -{ - ASSERT( sdd_id < NB_OF_SDD ); - - if ( sdd_id < NB_OF_SDD ) - { - const uint8_t sdd_2_quad_lut[NB_OF_SDD] = {0u, 2u, 4u}; - uint8_t quad_id; - uint8_t obd_mode_idx = 1u; - uint8_t chopping_mode_idx = 0u; - uint32_t saved_pc2_ctrl; - - quad_id = sdd_2_quad_lut[sdd_id]; - - /* Pause the SSE PC2 while accesses to ACB from APB3 are taking place. */ - saved_pc2_ctrl = ACE->PC2_CTRL; - ACE->PC2_CTRL = 0u; - - /* Select between voltage/current and RTZ modes.*/ - ACE->ACB_DATA[quad_id].b6 = mode; - - /* Load manufacturing generated trim value. */ - if ( (mode & OBD_MODE_MASK) > 0u ) - { - obd_mode_idx = 0u; - } - if ( (mode & OBD_CHOPPING_MASK) > 0u ) - { - chopping_mode_idx = 1u; - } - ACE->ACB_DATA[quad_id].b4 - = p_mtd_data->odb_trimming[sdd_id][obd_mode_idx][chopping_mode_idx]; - - /* Restore SSE PC2 operations since no ACB accesses should take place - * beyond this point. */ - ACE->PC2_CTRL = saved_pc2_ctrl; - - /* Set SDD resolution. */ - *dac_ctrl_reg_lut[sdd_id] = (uint32_t)resolution; - - /* Update SDD value through SSE_DACn_BYTES01. */ - *dac_ctrl_reg_lut[sdd_id] |= SDD_REG_SEL_MASK; - - /* Synchronous or individual SDD update. */ - if ( INDIVIDUAL_UPDATE == sync_update ) - { - ACE->DAC_SYNC_CTRL &= ~dac_enable_masks_lut[sdd_id]; - } - else - { - ACE->DAC_SYNC_CTRL |= dac_enable_masks_lut[sdd_id]; - } - } -} - -/*-------------------------------------------------------------------------*//** - See "mss_ace.h" for details of how to use this function. - */ -void ACE_enable_sdd -( - sdd_id_t sdd_id -) -{ - ASSERT( sdd_id < NB_OF_SDD ); - - if ( sdd_id < NB_OF_SDD ) - { - *dac_ctrl_reg_lut[sdd_id] |= SDD_ENABLE_MASK; - } -} - -/*-------------------------------------------------------------------------*//** - See "mss_ace.h" for details of how to use this function. - */ -void ACE_disable_sdd -( - sdd_id_t sdd_id -) -{ - ASSERT( sdd_id < NB_OF_SDD ); - - if ( sdd_id < NB_OF_SDD ) - { - *dac_ctrl_reg_lut[sdd_id] &= ~SDD_ENABLE_MASK; - } -} - -/*-------------------------------------------------------------------------*//** - See "mss_ace.h" for details of how to use this function. - */ -void ACE_set_sdd_value -( - sdd_id_t sdd_id, - uint32_t sdd_value -) -{ - ASSERT( sdd_id < NB_OF_SDD ); - - if ( sdd_id < NB_OF_SDD ) - { - *dac_byte2_reg_lut[sdd_id] = sdd_value >> 16; - *dac_byte01_reg_lut[sdd_id] = sdd_value; - } -} - -/*-------------------------------------------------------------------------*//** - See "mss_ace.h" for details of how to use this function. - */ -void ACE_set_sdd_value_sync -( - uint32_t sdd0_value, - uint32_t sdd1_value, - uint32_t sdd2_value -) -{ - uint32_t dac_sync_ctrl; - - dac_sync_ctrl = ACE->DAC_SYNC_CTRL; - - if ( SDD_NO_UPDATE != sdd0_value ) - { - ACE->DAC0_BYTE2 = sdd0_value >> 16; - ACE->SSE_DAC0_BYTES01 = sdd0_value; - dac_sync_ctrl |= DAC0_SYNC_UPDATE; - } - - if ( SDD_NO_UPDATE != sdd1_value ) - { - ACE->DAC1_BYTE2 = sdd1_value >> 16; - ACE->SSE_DAC1_BYTES01 = sdd1_value; - dac_sync_ctrl |= DAC1_SYNC_UPDATE; - } - - if ( SDD_NO_UPDATE != sdd2_value ) - { - ACE->DAC2_BYTE2 = sdd2_value >> 16; - ACE->DAC2_BYTE1 = sdd2_value >> 8; - ACE->SSE_DAC2_BYTES01 = sdd2_value; - dac_sync_ctrl |= DAC2_SYNC_UPDATE; - } - - ACE->DAC_SYNC_CTRL = dac_sync_ctrl; -} - -/*============================================================================== - ============================ Comparators Control ============================== - =============================================================================*/ - - /* - * SDD Analog switch mask. ACB byte 10. - * 0: TMB comparator reference voltage is an ADC direct input - * 1: TMB comparator reference voltage is one of the SDD outputs as - * selected by DAC_MUXSEL[1:0] - */ -#define B10_COMP_VREF_SW_MASK 0x20u - -/* - * Comparator reference voltage multiplexer. - * Used to select which SDD output will be used as reference voltage for TMB - * comparator. These bits are only meaningful when COMP_VREF_SW is set to 1. - */ -#define B11_DAC_MUXSEL_MASK 0x03u - -/* - * Number of bits to shift a value of type comp_hysteresis_t to get the - * hysteresis to program into ACB b9 or b10. - */ -#define HYSTERESIS_SHIFT 6u - -/* - * Mask of hysteresis bits within ACB b9 or b10. - */ -#define HYSTERESIS_MASK 0xC0u - -/* - * Mask of the comparator enable bit within ACB b9 and b10. - */ -#define COMPARATOR_ENABLE_MASK 0x10u - -/* - * Comparator ID to Signal Conditioning Block (SCB) lookup table. - * USe to find which SCB a comparator belongs to. - */ -const uint8_t comp_id_2_scb_lut[NB_OF_COMPARATORS] = -{ - 0u, /* CMP0 */ - 0u, /* CMP1 */ - 1u, /* CMP2 */ - 1u, /* CMP3 */ - 2u, /* CMP4 */ - 2u, /* CMP5 */ - 3u, /* CMP6 */ - 3u, /* CMP7 */ - 4u, /* CMP8 */ - 4u, /* CMP9 */ - 5u, /* CMP10 */ - 5u /* CMP11 */ -}; - -/*-------------------------------------------------------------------------*//** - * This function is requred to configure comparators included in temperature - * monitor blocks. - */ -void ACE_set_comp_reference -( - comparator_id_t comp_id, - comp_reference_t reference -) -{ - uint8_t scb_id; - uint32_t odd; - - odd = (uint32_t)comp_id & 0x01uL; - - ASSERT( comp_id < NB_OF_COMPARATORS ); - ASSERT( reference < NB_OF_COMP_REF ); - ASSERT( odd ); /* Only Temperature block comparators have configurable reference input. */ - - if ( (comp_id < NB_OF_COMPARATORS) && (reference < NB_OF_COMP_REF) && (odd) ) - { - uint32_t saved_pc2_ctrl; - - scb_id = comp_id_2_scb_lut[comp_id]; - - /* Pause the SSE PC2 while accesses to ACB from APB3 are taking place. */ - saved_pc2_ctrl = ACE->PC2_CTRL; - ACE->PC2_CTRL = 0u; - - if ( ADC_IN_COMP_REF == reference ) - { - ACE->ACB_DATA[scb_id].b10 &= (uint8_t)~B10_COMP_VREF_SW_MASK; - ACE->ACB_DATA[scb_id].b11 &= (uint8_t)~B11_DAC_MUXSEL_MASK; - } - else - { - ACE->ACB_DATA[scb_id].b10 &= (uint8_t)~B10_COMP_VREF_SW_MASK; - ACE->ACB_DATA[scb_id].b11 = (ACE->ACB_DATA[scb_id].b11 & (uint8_t)~B11_DAC_MUXSEL_MASK) + (uint8_t)reference; - } - - /* Restore SSE PC2 operations since no ACB accesses should take place - * beyond this point. */ - ACE->PC2_CTRL = saved_pc2_ctrl; - } -} - -/*-------------------------------------------------------------------------*//** - * Set analog block comparators hysteresis. - */ -void ACE_set_comp_hysteresis -( - comparator_id_t comp_id, - comp_hysteresis_t hysteresis -) -{ - uint8_t scb_id; - - ASSERT( comp_id < NB_OF_COMPARATORS ); - ASSERT( hysteresis < NB_OF_HYSTERESIS ); - - if ( (comp_id < NB_OF_COMPARATORS) && (hysteresis < NB_OF_HYSTERESIS) ) - { - uint32_t odd; - uint32_t saved_pc2_ctrl; - - scb_id = comp_id_2_scb_lut[comp_id]; - odd = (uint32_t)comp_id & 0x01uL; - - /* Pause the SSE PC2 while accesses to ACB from APB3 are taking place. */ - saved_pc2_ctrl = ACE->PC2_CTRL; - ACE->PC2_CTRL = 0u; - - if ( odd ) - { - /* Temperature monitor block comparator. */ - ACE->ACB_DATA[scb_id].b10 = (ACE->ACB_DATA[scb_id].b10 & HYSTERESIS_MASK) | (uint8_t)((uint8_t)hysteresis << HYSTERESIS_SHIFT); - } - else - { - /* Current monitor block comparator. */ - ACE->ACB_DATA[scb_id].b9 = (ACE->ACB_DATA[scb_id].b9 & HYSTERESIS_MASK) | (uint8_t)((uint8_t)hysteresis << HYSTERESIS_SHIFT); - } - - /* Restore SSE PC2 operations since no ACB accesses should take place - * beyond this point. */ - ACE->PC2_CTRL = saved_pc2_ctrl; - } -} - -/*-------------------------------------------------------------------------*//** - - */ -void ACE_enable_comp -( - comparator_id_t comp_id -) -{ - uint8_t scb_id; - - ASSERT( comp_id < NB_OF_COMPARATORS ); - - if ( comp_id < NB_OF_COMPARATORS ) - { - uint32_t odd; - uint32_t saved_pc2_ctrl; - - scb_id = comp_id_2_scb_lut[comp_id]; - odd = (uint32_t)comp_id & 0x01uL; - - /* Pause the SSE PC2 while accesses to ACB from APB3 are taking place. */ - saved_pc2_ctrl = ACE->PC2_CTRL; - ACE->PC2_CTRL = 0u; - - if ( odd ) - { - /* Temperature monitor block comparator. */ - ACE->ACB_DATA[scb_id].b10 |= COMPARATOR_ENABLE_MASK; - } - else - { - /* Current monitor block comparator. */ - ACE->ACB_DATA[scb_id].b9 |= COMPARATOR_ENABLE_MASK; - } - - /* Restore SSE PC2 operations since no ACB accesses should take place - * beyond this point. */ - ACE->PC2_CTRL = saved_pc2_ctrl; - } -} - -/*-------------------------------------------------------------------------*//** - * - */ -void ACE_disable_comp -( - comparator_id_t comp_id -) -{ - uint8_t scb_id; - - ASSERT( comp_id < NB_OF_COMPARATORS ); - - if ( comp_id < NB_OF_COMPARATORS ) - { - uint32_t odd; - uint32_t saved_pc2_ctrl; - - scb_id = comp_id_2_scb_lut[comp_id]; - odd = (uint32_t)comp_id & 0x01uL; - - /* Pause the SSE PC2 while accesses to ACB from APB3 are taking place. */ - saved_pc2_ctrl = ACE->PC2_CTRL; - ACE->PC2_CTRL = 0u; - - if ( odd ) - { - /* Temperature monitor block comparator. */ - ACE->ACB_DATA[scb_id].b10 &= (uint8_t)~COMPARATOR_ENABLE_MASK; - } - else - { - /* Current monitor block comparator. */ - ACE->ACB_DATA[scb_id].b9 &= (uint8_t)~COMPARATOR_ENABLE_MASK; - } - - /* Restore SSE PC2 operations since no ACB accesses should take place - * beyond this point. */ - ACE->PC2_CTRL = saved_pc2_ctrl; - } -} - -/* - * Bit mask of comparator 0 rise interrupt bit. - * Shift this value left by the value of the comparator ID to obtain the bit - * mask used enable/disable/clear rise interrupts from that comparator. - */ -#define FIRST_RISE_IRQ_MASK 0x00000800uL - -/* - * Bit mask of comparator 0 fall interrupt bit. - * Shift this value left by the value of the comparator ID to obtain the bit - * mask used enable/disable/clear fall interrupts from that comparator. - */ -#define FIRST_FALL_IRQ_MASK 0x00000001uL - -/*-------------------------------------------------------------------------*//** - See "mss_ace.h" for details of how to use this function. - */ -void ACE_enable_comp_rise_irq -( - comparator_id_t comp_id -) -{ - ASSERT( comp_id < NB_OF_COMPARATORS ); - - ACE->COMP_IRQ_EN |= (FIRST_RISE_IRQ_MASK << (uint32_t)comp_id); -} - -/*-------------------------------------------------------------------------*//** - See "mss_ace.h" for details of how to use this function. - */ -void ACE_disable_comp_rise_irq -( - comparator_id_t comp_id -) -{ - ASSERT( comp_id < NB_OF_COMPARATORS ); - - ACE->COMP_IRQ_EN &= ~(FIRST_RISE_IRQ_MASK << (uint32_t)comp_id); -} - -/*-------------------------------------------------------------------------*//** - See "mss_ace.h" for details of how to use this function. - */ -void ACE_clear_comp_rise_irq -( - comparator_id_t comp_id -) -{ - ASSERT( comp_id < NB_OF_COMPARATORS ); - - ACE->COMP_IRQ_CLR |= (FIRST_RISE_IRQ_MASK << (uint32_t)comp_id); -} - -/*-------------------------------------------------------------------------*//** - See "mss_ace.h" for details of how to use this function. - */ -void ACE_enable_comp_fall_irq -( - comparator_id_t comp_id -) -{ - ASSERT( comp_id < NB_OF_COMPARATORS ); - - ACE->COMP_IRQ_EN |= (FIRST_FALL_IRQ_MASK << (uint32_t)comp_id); -} - -/*-------------------------------------------------------------------------*//** - See "mss_ace.h" for details of how to use this function. - */ -void ACE_disable_comp_fall_irq -( - comparator_id_t comp_id -) -{ - ASSERT( comp_id < NB_OF_COMPARATORS ); - - ACE->COMP_IRQ_EN &= ~(FIRST_FALL_IRQ_MASK << (uint32_t)comp_id); -} - -/*-------------------------------------------------------------------------*//** - See "mss_ace.h" for details of how to use this function. - */ -void ACE_clear_comp_fall_irq -( - comparator_id_t comp_id -) -{ - ASSERT( comp_id < NB_OF_COMPARATORS ); - - ACE->COMP_IRQ_CLR |= (FIRST_FALL_IRQ_MASK << (uint32_t)comp_id); -} - -/*-------------------------------------------------------------------------*//** - * Returns the raw analog quad comparator status. - */ -uint32_t ACE_get_comp_status( void ) -{ - return ACE->COMP_IRQ; -} - -/*============================================================================== - ============ Reading Samples from post processing engine (PPE) ================ - =============================================================================*/ -extern ace_channel_desc_t g_ace_channel_desc_table[ACE_NB_OF_INPUT_CHANNELS]; - -/*-------------------------------------------------------------------------*//** - See "mss_ace.h" for details of how to use this function. - */ -uint32_t -ACE_get_channel_count -( - void -) -{ - return (uint32_t)ACE_NB_OF_INPUT_CHANNELS; -} - -/*-------------------------------------------------------------------------*//** - See "mss_ace.h" for details of how to use this function. - */ -ace_channel_handle_t -ACE_get_first_channel -( - void -) -{ - ace_channel_handle_t channel_handle; - - channel_handle = (ace_channel_handle_t)0; - - return channel_handle; -} - -/*-------------------------------------------------------------------------*//** - See "mss_ace.h" for details of how to use this function. - */ -ace_channel_handle_t -ACE_get_next_channel -( - ace_channel_handle_t channel_handle -) -{ - ++channel_handle; - - if ( channel_handle >= NB_OF_ACE_CHANNEL_HANDLES ) - { - channel_handle = (ace_channel_handle_t)0; - } - - return channel_handle; -} - -/*-------------------------------------------------------------------------*//** - See "mss_ace.h" for details of how to use this function. - */ -ace_channel_handle_t -ACE_get_channel_handle -( - const uint8_t * p_sz_channel_name -) -{ - uint16_t channel_idx; - ace_channel_handle_t channel_handle = INVALID_CHANNEL_HANDLE; - - for ( channel_idx = 0u; channel_idx < (uint16_t)ACE_NB_OF_INPUT_CHANNELS; ++channel_idx ) - { - if ( g_ace_channel_desc_table[channel_idx].p_sz_channel_name != 0 ) - { - int32_t diff; - diff = strncmp( (const char*)p_sz_channel_name, (const char*)g_ace_channel_desc_table[channel_idx].p_sz_channel_name, MAX_CHANNEL_NAME_LENGTH ); - if ( 0 == diff ) - { - /* channel name found. */ - channel_handle = (ace_channel_handle_t)channel_idx; - break; - } - } - } - return channel_handle; -} - -/*-------------------------------------------------------------------------*//** - See "mss_ace.h" for details of how to use this function. - */ -ace_channel_handle_t -ACE_get_input_channel_handle -( - adc_channel_id_t channel_id -) -{ - uint16_t channel_idx; - ace_channel_handle_t channel_handle = INVALID_CHANNEL_HANDLE; - - for ( channel_idx = 0u; channel_idx < (uint16_t)ACE_NB_OF_INPUT_CHANNELS; ++channel_idx ) - { - if ( g_ace_channel_desc_table[channel_idx].signal_id == channel_id ) - { - /* channel ID found. */ - channel_handle = (ace_channel_handle_t)channel_idx; - break; - } - } - return channel_handle; -} - -/*-------------------------------------------------------------------------*//** - See "mss_ace.h" for details of how to use this function. - */ -uint16_t -ACE_get_ppe_sample -( - ace_channel_handle_t channel_handle -) -{ - uint16_t sample; - uint16_t ppe_offset; - - ppe_offset = g_ace_channel_desc_table[channel_handle].signal_ppe_offset; - sample = (uint16_t)(ACE->PPE_RAM_DATA[ppe_offset] >> 16u); - - return sample; -} - -#ifdef __cplusplus -} -#endif diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_ace/mss_ace.h b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_ace/mss_ace.h deleted file mode 100644 index 2acc01b1e..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_ace/mss_ace.h +++ /dev/null @@ -1,2816 +0,0 @@ -/******************************************************************************* - * (c) Copyright 2009 Actel Corporation. All rights reserved. - * - * SmartFusion ACE driver public API. - * - * SVN $Revision: 2884 $ - * SVN $Date: 2010-08-13 16:16:59 +0100 (Fri, 13 Aug 2010) $ - */ - -/*=========================================================================*//** - @mainpage SmartFusion Analog Compute Engine driver public API. - - @section intro_sec Introduction - The SmartFusion™ microcontroller subsystem (MSS) includes the Analog Compute - Engine (ACE) which provides access to the analog capabilities of SmartFusion - from the Cortex™-M3 microcontroller. This driver provides a set of functions - for controlling the MSS ACE as part of a bare metal system where no operating - system is available. These drivers can be adapted for use as part of an - operating system, but the implementation of the adaptation layer between this - driver and the operating system's driver model is outside the scope of this - driver. The ACE includes: - • A Sample Sequencing Engine (SSE) controlling the operations of up to - three analog to digital converters (ADC) - • A Post Processing Engine (PPE) processing the analog inputs samples - generated as a result of the SSE operations - • An interface for controlling Sigma Delta DACs (SDD) - • An interface for controlling high speed comparators - - The Sample Sequencing Engine controls the sampling of the various analog - inputs based on a predefined sampling sequence without requiring intervention - from the Cortex-M3. The sampling sequence is defined using the ACE Configurator - provided as part of the MSS Configurator software tool. - Available analog inputs are: - • Active bipolar prescaler inputs (ABPS) allowing to measure voltages within - four possible ranges: - o -15V to +15V - o -10V to +10V - o -5V to +5V - o -2.5V to +2.5V - • Current inputs - • Temperature inputs - • Direct ADC inputs allowing to measure a voltage between zero volts and - the ADC’s reference voltage (VAREF) - Please refer to the Analog Front End section of the SmartFusion datasheet for - further details about analog inputs. - - The Post Processing Engine can perform the following operations on the analog - input samples generated as a result of the SSE operations: - • Calibration adjustment - • Averaging - • Threshold detection - • DMA transfer of most recent sample result to RAM or FPGA fabric - The result of analog input sampling is read from the PPE rather than directly - from the ADC. This ensures more accurate sample results thought the factory - calibration adjustment performed by the PPE. - The PPE can be set to generate interrupts when specific threshold values are - reached on analog inputs through the ACE Configurator software tool. These - thresholds can also be dynamically adjusted through the ACE driver. - - The ACE provides an interface to the Sigma Delta DACs included within the - Analog Front End (AFE). This interface allows control of the DAC’s output - value. Dynamic configuration of the DAC is also possible. - - The ACE provides an interface to the high speed comparators included within - the Analog Front End. This interface allows dynamic configuration of the - comparators and controlling interrupts based on the comparators’ state. - - @section theory_op Theory of Operation - The configuration of the ACE is set though the use of the ACE Configurator - included in the SmartFusion MSS Configurator software tool provided as part of - the Libero Integrated Design Environment tool suite. The ACE Configurator - offers an easy to use graphical method of selecting the configuration of the - following ACE characteristics: - • Analog input channels configuration - • ADC configuration - • Analog input channels sampling sequence - • Filtering applied to analog input samples - • Threshold flags configuration including hysteresis or state filtering properties - • Selection of post processing results transferred though DMA - • Sigma Delta DACs configuration - • Analog comparators configuration - The selected configuration hardware settings, SSE microcode and PPE microcode - are stored in the SmartFusion eNVM. This configuration data is used by the - system boot to configure the ACE after the system come out of reset and before - control is passed to the application. This results in the ACE being fully - operational by the time the application starts executing. - The ACE Configurator also generates a set of C files containing information - about the ACE’s configuration. These C files must be copied into the - drivers_config/mss_ace folder of you r software project for consumption by the - ACE driver. The ACE driver uses the content of these configuration files to - interact with the configured ACE hardware. - - The ACE driver functions are grouped into the following categories: - • Initialization - • Reading analog input channels values and properties - • Post Processing Engine flags - • Conversion functions between sample value and real world units - • Sample Sequencing Engine control - • Sample Sequencing Engine Interrupts Control - • Comparators control - • Sigma Delta Digital to Analog Converters (SDD) control - • Direct analog block configuration and usage - - - Initialization - The ACE driver is initialized through a call to the ACE_init() function. The - ACE_init() function must be called before any other ACE driver functions can - be called. It initializes the ACE’s internal data. - - - Reading analog input channels values and properties - The ACE driver allows retrieving the most recent post processed sample value - for each analog input. It also allows retrieving the name of the analog input - channel assigned in the ACE Configurator and whether the input channel samples - a voltage, current or temperature. - Each individual analog input channel is identified using a channel handle which - is passed as parameter to the ACE input channel driver functions. The channel - handles are design specific. The list of channel handles is generated by the - ACE Configurator based on the names given to the input signals. The channel - handles can be found in the drivers_config\mss_ace\ace_handles.h file. The - channel handle can be obtained from the channel name using the ACE_get_channel_handle() - function. It is also possible to iterate through all the channels using the - ACE_get_first_channel() and ACE_get_next_channel() functions. - - Reading analog input samples from the post processing engine is done the following function: - • uint16_t ACE_get_ppe_sample( ace_channel_handle_t channel_handle ) - - Information about an input channel can be retrieved using the following functions: - • const uint8_t * ACE_get_channel_name( ace_channel_handle_t channel_handle ) - • channel_type_t ACE_get_channel_type( ace_channel_handle_t channel_handle ) - - - Post Processing Engine flags - The SmartFusion ACE Post Processing Engine (PPE) provides the ability to monitor - the state of analog input channels and detect when certain threshold values are - crossed. Flags are raised by the PPE when these thresholds are crossed. Interrupts - can optionally be generated when flags are raised. - The flags are defined using the ACE Configurator software tool. The flag’s name, - threshold value and hysteresis settings are specified in the ACE Configurator. - The ACE Configurator generates microcode based on the selected configuration which - is executed at system run time by the PPE. The PPE microcode is loaded into the - ACE at chip boot time by the Actel provided system boot code. No ACE driver - intervention is required to load up the PPE microcode. - The ACE driver allows: - • Retrieving the current state of the post processing engine flags - • Assigning a handler function to individual flag assertions - • Assigning a handler function to flags generated based on the value of a - specific channel - • Controlling flag interrupts - • Dynamically modify a flag’s threshold value - • Dynamically modify a flag’s hysteresis - - Each individual flag is identified using a flag handle which is passed as parameter - to the ACE driver functions controlling the flags. The flag handles are design - specific. They are defined in the drivers_config\mss_ace\ace_handles.h file which - is generated by the ACE Configurator based on the names selected for the signal - and flag names. A flag handle can be obtained from the driver using the name of - the flag entered in the ACE Configurator software when the flag was created. A - flag handle can also be obtained using the functions ACE_get_channel_first_flag() - and ACE_get_channel_next_flag() when iterating through the flags associated with - an analog input channel. The functions available for retrieving flag handles are: - • ace_flag_handle_t ACE_get_flag_handle (const uint8_t *p_sz_full_flag_name) - • ace_flag_handle_t ACE_get_channel_first_flag (ace_channel_handle_t channel_handle, uint16_t *iterator) - • ace_flag_handle_t ACE_get_channel_next_flag (ace_channel_handle_t channel_handle, uint16_t *iterator) - - The current status of a flag can be polled using the following function: - • int32_t ACE_get_flag_status (ace_flag_handle_t flag_handle) - - Interrupt handlers can be registered with the ACE driver to handle individual - flags. These interrupt handlers will be called by the ACE driver when a specific - flag is raised. The flag interrupt control functions are: - • void ACE_register_flag_isr (ace_flag_handle_t flag_handle, flag_isr_t flag_isr) - • void ACE_enable_flag_irq (ace_flag_handle_t flag_handle) - • void ACE_disable_flag_irq (ace_flag_handle_t flag_handle) - • void ACE_clear_flag_irq (ace_flag_handle_t flag_handle) - - Interrupt handlers can be registered with the ACE driver to handle all flags - associated with one specific analog input channel. These interrupt handlers will - be called by the ACE driver when one of the flags, generated based on the state of - the specified analog input channel, is raised. The channel flag interrupt control - functions are: - • void ACE_register_channel_flags_isr (ace_channel_handle_t channel_handle, channel_flag_isr_t channel_flag_isr) - • void ACE_enable_channel_flags_irq (ace_channel_handle_t channel_handle) - • void ACE_disable_channel_flags_irq (ace_channel_handle_t channel_handle) - • void ACE_clear_channel_flags_irq (ace_channel_handle_t channel_handle) - - A single global interrupt handler can be registered with the ACE driver. The global - flag interrupt handler function will be called by the ACE driver when any of the - interrupt enabled flag is raised. The handle of the flag causing the interrupt and - the handle of the associated analog input channel is passed as parameter to the - registered global flag handler. - • void ACE_register_global_flags_isr (global_flag_isr_t global_flag_isr) - - The configuration of a flag can be dynamically modified using the following functions: - • void ACE_set_flag_threshold (ace_flag_handle_t flag_handle, uint16_t new_threshold) - • void ACE_set_flag_hysteresis (ace_flag_handle_t flag_handle, uint16_t adc_hysteresis) - • void ACE_set_channel_hysteresis (ace_channel_handle_t channel_handle, uint16_t adc_hysteresis) - • void ACE_set_flag_assertion( ace_flag_handle_t flag_handle, uint16_t assertion_value ) - • void ACE_set_flag_deassertion( ace_flag_handle_t flag_handle, uint16_t assertion_value ) - - Information about a flag can be retrieved using the following functions once - the flag handle is known: - • const uint8_t * ACE_get_flag_name (ace_flag_handle_t flag_handle) - • ace_channel_handle_t ACE_get_flag_channel (ace_flag_handle_t flag_handle) - - - Conversion to and from real world units - The ACE driver provides a set of conversion functions to convert sample values - read from the post processing engine into real world units: - • millivolts - • milliamps - • Degrees Kelvin - • Degrees Celsius - • Degrees Fahrenheit - Conversion functions are also available to convert from real world units into - PPE sample values. These functions are typically used for dynamically adjusting - flags threshold values. - - - Sample Sequencing Engine control - The ACE driver provides a set of functions for dynamically controlling the - Sample Sequencing Engine. These functions are only required for managing multiple - sampling sequences. The use of these functions is not required for most applications - since the SSE is already configured and running by the time the application starts. - - - Sample Sequencing Engine Interrupts Control - The ACE driver provides a set of functions for managing interrupts generated by - the Sample Sequencing Engine. These functions allow enabling, disabling and clearing - interrupt defined as part of the sampling sequence. These functions also allow - controlling interrupts generated by the ADCs. - - - Comparators control - The ACE driver provides a set of functions for managing interrupts generated based - on the change of state of the high speed comparators. Functions are also provided - to dynamically modify the comparators configuration. - - - Sigma Delta Digital to Analog Converters (SDD) control - The ACE driver provides functions for controlling the output value of the Sigma - Delta DACs (SDD). Functions are also provided for dynamically adjusting the - configuration of the SDDs. - - *//*=========================================================================*/ -#ifndef __MSS_ACE_H_ -#define __MSS_ACE_H_ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#include "ace_handles.h" - -/*-------------------------------------------------------------------------*//** - Analog to Digital Converter channel IDs. - This enumeration is used to identify the ADC's analog inputs. It caters for up - to three ADCs/Analog Modules as can be found on the larger parts of the - SmartFusion family. The channel ID numbering is designed to allow easy - extraction of the ADC number and also the individual ADC input number by simple - shifting and masking. This enumeration is used as parameter to the - ACE_get_input_channel_handle() function retrieving the channel handle associated - with a specific analog input signal. - */ -typedef enum -{ - ADC0_1P5V = 0, /*!< Analog Module 0, 1.5V/GND */ - ABPS0 = 1, /*!< Analog Module 0, Quad0 Active Bipolar Pre-Scaler input 1 */ - ABPS1 = 2, /*!< Analog Module 0, Quad0 Active Bipolar Pre-Scaler input 2 */ - CM0 = 3, /*!< Analog Module 0, Quad0 Current Monitor Block */ - TM0 = 4, /*!< Analog Module 0, Quad0 Temperature Monitor Block */ - ABPS2 = 5, /*!< Analog Module 0, Quad1 Active Bipolar Pre-Scaler input 1 */ - ABPS3 = 6, /*!< Analog Module 0, Quad1 Active Bipolar Pre-Scaler input 2 */ - CM1 = 7, /*!< Analog Module 0, Quad1 Current Monitor Block */ - TM1 = 8, /*!< Analog Module 0, Quad1 Temperature Monitor Block */ - ADC0 = 9, /*!< Analog Module 0 Direct Input 0 */ - ADC1 = 10, /*!< Analog Module 0 Direct Input 1 */ - ADC2 = 11, /*!< Analog Module 0 Direct Input 2 */ - ADC3 = 12, /*!< Analog Module 0 Direct Input 3 */ - SDD0_IN = 15, /*!< Analog Module 0 Sigma-Delta DAC output */ - - ADC1_1P5V = 16, /*!< Analog Module 1, 1.5V/GND */ - ABPS4 = 17, /*!< Analog Module 1, Quad0 Active Bipolar Pre-Scaler input 1 */ - ABPS5 = 18, /*!< Analog Module 1, Quad0 Active Bipolar Pre-Scaler input 2 */ - CM2 = 19, /*!< Analog Module 1, Quad0 Current Monitor Block */ - TM2 = 20, /*!< Analog Module 1, Quad0 Temperature Monitor Block */ - ABPS6 = 21, /*!< Analog Module 1, Quad1 Active Bipolar Pre-Scaler input 1 */ - ABPS7 = 22, /*!< Analog Module 1, Quad1 Active Bipolar Pre-Scaler input 2 */ - CM3 = 23, /*!< Analog Module 1, Quad1 Current Monitor Block */ - TM3 = 24, /*!< Analog Module 1, Quad1 Temperature Monitor Block */ - ADC4 = 25, /*!< Analog Module 1 Direct Input 0 */ - ADC5 = 26, /*!< Analog Module 1 Direct Input 1 */ - ADC6 = 27, /*!< Analog Module 1 Direct Input 2 */ - ADC7 = 28, /*!< Analog Module 1 Direct Input 3 */ - SDD1_IN = 31, /*!< Analog Module 1 Sigma-Delta DAC output */ - - ADC2_1P5V = 32, /*!< Analog Module 2, 1.5V/GND */ - ABPS8 = 33, /*!< Analog Module 2, Quad0 Active Bipolar Pre-Scaler input 1 */ - ABPS9 = 34, /*!< Analog Module 2, Quad0 Active Bipolar Pre-Scaler input 2 */ - CM4 = 35, /*!< Analog Module 2, Quad0 Current Monitor Block */ - TM4 = 36, /*!< Analog Module 2, Quad0 Temperature Monitor Block */ - ABPS10 = 37, /*!< Analog Module 2, Quad1 Active Bipolar Pre-Scaler input 1 */ - ABPS11 = 38, /*!< Analog Module 2, Quad1 Active Bipolar Pre-Scaler input 2 */ - CM5 = 39, /*!< Analog Module 2, Quad1 Current Monitor Block */ - TM5 = 40, /*!< Analog Module 2, Quad1 Temperature Monitor Block */ - ADC8 = 41, /*!< Analog Module 2 Direct Input 0 */ - ADC9 = 42, /*!< Analog Module 2 Direct Input 1 */ - ADC10 = 43, /*!< Analog Module 2 Direct Input 2 */ - ADC11 = 44, /*!< Analog Module 2 Direct Input 3 */ - SDD2_IN = 47, /*!< Analog Module 2 Sigma-Delta DAC output */ - INVALID_CHANNEL = 255 /*!< Used to indicate errors */ -} adc_channel_id_t; - - -/*-------------------------------------------------------------------------*//** - The ACE_init() function initializes the SmartFusion MSS ACE driver. It - initializes the ACE driver’s internal data structures. The ACE_init() function - must be called before any other MSS ACE driver functions can be called. - */ -void ACE_init( void ); - - -/*============================================================================== - ============== Direct Analog Block Configuration and Usage ==================== - =============================================================================*/ - -/*=========================================================================*//** - @defgroup group1 Direct Analog Block Configuration and Usage - These functions are intended for using the SmartFusion analog block hardware - without relying on the Sampling Sequence Engine or Post Processing engine. - @{ - *//*=========================================================================*/ - -/*-------------------------------------------------------------------------*//** - The ACE_start_adc() function initiates the sampling of the analog input - channel identified by the channel_id parameter. This function is provided for - test purposes. It must not be used while the Sample Sequencing Engine is - running. - - @param channel_id - The channel_id parameter identifies the analog input channel to sample. - - @return - This function does not return a value. - */ -void ACE_start_adc -( - adc_channel_id_t channel_id -); - -/*-------------------------------------------------------------------------*//** - The ACE_get_adc_result () function reads the result of the last input channel - sampling performed by the ADC identified as parameter. - - @param adc_id - The adc_id parameter identifies which of the possible three ADC to read the - sample result from. - - @return - The ACE_start_adc_sync() function returns the ADC result from the ADC - specified as parameter. - */ -uint16_t ACE_get_adc_result -( - uint8_t adc_id -); - -/** @} */ - -/*============================================================================== - =========== Sigma Delta Digital to Analog Converters (SDD) Control ============ - =============================================================================*/ -/*=========================================================================*//** - @defgroup group2 Sigma Delta Digital to Analog Converters (SDD) Control - The following functions are used to control the Sigma Delta DACs included - within the SmartFusion analog block. - @{ - *//*=========================================================================*/ - -/*-------------------------------------------------------------------------*//** - The sdd_id_t enumeration is used to identify the Sigma Delta DACs to the SDD - control functions, ACE_configure_sdd(), ACE_enable_sdd(), ACE_disable_sdd() - and ACE_set_sdd_value(). There is one SDD per analog module. - */ -typedef enum -{ - SDD0_OUT = 0, /*!< Analog Module 0 Sigma Delta DAC */ - SDD1_OUT = 1, /*!< Analog Module 1 Sigma Delta DAC */ - SDD2_OUT = 2, /*!< Analog Module 2 Sigma Delta DAC */ - NB_OF_SDD = 3 -} sdd_id_t; - -/*-------------------------------------------------------------------------*//** - The sdd_resolution_t enumeration is used as a parameter to the - ACE_configure_sdd() function to specify DAC resolution of the Sigma Delta DAC. - */ -typedef enum -{ - SDD_8_BITS = 0, - SDD_16_BITS = 4, - SDD_24_BITS = 8 -} sdd_resolution_t; - -/*-------------------------------------------------------------------------*//** - These constant definitions are used as an argument to the ACE_configure_sdd() - function to specify operating mode of the Sigma Delta DAC. - */ -#define SDD_CURRENT_MODE 1 -#define SDD_VOLTAGE_MODE 0 -#define SDD_RETURN_TO_ZERO 0 -#define SDD_NON_RTZ 2 - -/*-------------------------------------------------------------------------*//** - The sdd_update_method_t enumeration is used as a parameter to the - ACE_configure_sdd() function to specify individual or synchronous updating of - the Sigma Delta DACs. - */ -typedef enum -{ - INDIVIDUAL_UPDATE = 0, - SYNC_UPDATE = 1 -} sdd_update_method_t; - -/*-------------------------------------------------------------------------*//** - The ACE_configure_sdd() function is used to configure the operating mode of - the Sigma Delta DAC (SDD) specified as parameter. It allows selecting whether the - SDD will output a voltage or a current. A current between 0 and 256uA is - generated in current mode. A voltage between 0 and 2.56V is generated in - voltage mode. - This function also allows selecting whether Return To Zero (RTZ) mode is - enabled or not. Enabling Return To Zero mode improves linearity of the SDD - output at the detriment of accuracy. This mode should be used if linearity is - more important than accuracy. - A call to this function is not required if relying on the configuration - selected in the ACE configurator being loaded after reset by the system boot. - - @param sdd_id - The sdd_id parameter specifies which Sigma Delta DAC is configured by this - function. Allowed values are: - - SDD0_OUT - - SDD1_OUT - - SDD2_OUT - - @param resolution - The resolution parameter specifies the desired resolution of the Sigma Delta DAC. - Allowed values are: - - SDD_8_BITS - - SDD_16_BITS - - SDD_24_BITS - - @param mode - The mode parameter specifies the operating mode of the Sigma Delta DAC. It - specifies whether a current or voltage should be generated and whether - Return to Zero mode should be used. It is a logical OR of the following - defines: - - SDD_CURRENT_MODE - - SDD_VOLTAGE_MODE - - SDD_RETURN_TO_ZERO - - SDD_NON_RTZ - - @param sync_update - The sync_update parameter specifies whether the SDD output will be updated - individually though a call to ACE_set_sdd_value() or synchronously with one - or more other SDD outputs via a call to ACE_set_sdd_value_sync(). - - Example - @code - ACE_configure_sdd - ( - SDD1_OUT, - SDD_24_BITS, - SDD_VOLTAGE_MODE | SDD_RETURN_TO_ZERO, - INDIVIDUAL_UPDATE - ); - @endcode - */ -void ACE_configure_sdd -( - sdd_id_t sdd_id, - sdd_resolution_t resolution, - uint8_t mode, - sdd_update_method_t sync_update -); - -/*-------------------------------------------------------------------------*//** - The ACE_enable_sdd() function is used to enable a Sigma Delta DAC. - - @param sdd_id - The sdd_id parameter specifies the Sigma Delta DAC to enable. - */ -void ACE_enable_sdd -( - sdd_id_t sdd_id -); - -/*-------------------------------------------------------------------------*//** - The ACE_disable_sdd() function is used to disable a Sigma Delta DAC. - - @param sdd_id - The sdd_id parameter specifies the Sigma Delta DAC to disable. - */ -void ACE_disable_sdd -( - sdd_id_t sdd_id -); - -/*-------------------------------------------------------------------------*//** - The ACE_set_sdd_value() function is used to set the value of the output of - a Sigma Delta DAC. It uses the ACE's phase accumulator to generate the one bit - input bit stream into the SDD which will in turn define the voltage or - current generated at the SDD output. - The SDD output is proportional to the sdd_value passed to this function taking - the SDD resolution into account. A maximum voltage of 2.56V or a maximum - current of 256uA will be generated when the sdd_value is set the maximum value - allowed by the SDD resolution - - @param sdd_id - The sdd_id parameter specifies which Sigma Delta DAC is being set. - - @param sdd_value - The sdd_value parameter specifies the value of the Sigma Delta DAC output. - It is a fraction of SDD resolution. The voltage/current value generated from - the sdd_value paramenter can be determined using the following equation where - sdd_resolution is the resolution of the SDD as set through function - ACE_configure_sdd() and sdd_rangSDD configuration: - sdd_output = (sdd_value / sdd_resolution) * sdd_range - */ -void ACE_set_sdd_value -( - sdd_id_t sdd_id, - uint32_t sdd_value -); - - -/*-------------------------------------------------------------------------*//** - This constant definition is used as an argument to the ACE_set_sdd_value_sync() - function to specify that the output value of SDD0, or SDD1, or SDD2 should not - be modified. - */ -#define SDD_NO_UPDATE 0xFFFFFFFF - -/*-------------------------------------------------------------------------*//** - The ACE_set_sdd_value_sync() function is used to synchronize the update of - multiple Sigma Delta DAC outputs. - - @param sdd0_value - The sdd0_value parameter specifies the value that will be used to set the - output of SDD0. - The define SDD_NO_UPDATE can be used to specify that the output value of - SDD0 should not be modified. - - @param sdd1_value - The sdd1_value parameter specifies the value that will be used to set the - output of SDD1. - The define SDD_NO_UPDATE can be used to specify that the output value of - SDD1 should not be modified. - - @param sdd2_value - The sdd2_value parameter specifies the value that will be used to set the - output of SDD2. - The define SDD_NO_UPDATE can be used to specify that the output value of - SDD2 should not be modified. - - For example the code below will change the output value of SDD0 and SDD2 so - that the voltage/current generate by SDD0 and ADD2 will change at the same - time. This function call will not affect the output value of SDD1. - @code - uint32_t sdd0_value = 0x1234; - uint32_t sdd2_value = 0x5678; - ACE_set_sdd_value_sync( sdd0_value, SDD_NO_UPDATE, sdd2_value ); - @endcode - */ - -void ACE_set_sdd_value_sync -( - uint32_t sdd0_value, - uint32_t sdd1_value, - uint32_t sdd2_value -); - -/** @} */ - -/*============================================================================== - ============ Reading Samples from post processing engine (PPE) ================ - =============================================================================*/ -/*=========================================================================*//** - @defgroup group9 Reading Analog Input Channels Values and Properties - The following functions are used to access analog input channels properties - and sampled values. - @{ - *//*=========================================================================*/ - -/*-------------------------------------------------------------------------*//** - This constant returned by the ACE_get_flag_channel(), ACE_get_channel_handle() - and ACE_get_input_channel_handle() functions when the driver can’t find a - valid handle for the ADC input channel. - */ -#define INVALID_CHANNEL_HANDLE NB_OF_ACE_CHANNEL_HANDLES - -/*-------------------------------------------------------------------------*//** - The ACE_get_channel_handle() function returns the channel handle associated - with an analog input channel name. The retrieved channel handle will be - subsequently used as parameter to function ACE_get_ppe_sample() used to read - the most recent post processed sample for the analog input identified through - the channel/service name passed as argument to this function. - - @param p_sz_channel_name - The p_sz_channel_name parameter is a zero-terminated string containing the - name of the channel/service as entered in the ACE configurator. - - @return - This function returns a channel handle. This channel handle is required as - parameter to function ACE_get_ppe_sample(). - It will return INVALID_CHANNEL_HANDLE if the channel/service name is not - recognized. - - @code - uint16_t adc_result; - ace_channel_handle_t at0; - at0 = ACE_get_channel_handle("VoltageMonitorAT0"); - adc_result = ACE_get_ppe_sample( at0 ); - @endcode - */ -ace_channel_handle_t -ACE_get_channel_handle -( - const uint8_t * p_sz_channel_name -); - -/*-------------------------------------------------------------------------*//** - The ACE_get_input_channel_handle() function returns the channel handle for - the hardware analog input channel specified as parameter. - - @param channel_id - The channel_id parameter identifies a hardware analog input of the ACE. - - @return - This function returns a channel handle. This channel handle is required as - parameter to other ACE driver functions dealing with analog inputs. - It will return INVALID_CHANNEL_HANDLE if the channel ID passed as parameter - is invalid. - */ -ace_channel_handle_t -ACE_get_input_channel_handle -( - adc_channel_id_t channel_id -); - -/*-------------------------------------------------------------------------*//** - The ACE_get_ppe_sample() function is used to read the most recent post - processed sample for the analog input channel associated with the channel - handle passed as parameter. - - @param channel_handle - The channel_handle parameter identifies the analog input channel for which - this function will return the most recent ADC conversion result adjusted for - calibration and user provided coefficients as provided through the ACE - configurator. The available channel handle values can be found in the - ace_handles.h file located in the ./drivers_config/mss_ace subdirectory. The - channel handle value can also be retrieved through a call to - ACE_get_channel_handle() when the name of the channel is known, or by - iterating though all analog input channel using the ACE_get_first_channel() - and ACE_get_next_channel(). - - @return - This function returns a 16 bit value representing the adjusted value of the - ADC conversion result for the analog input channel identified by the channel - handle passed as parameter. The return value is actually a 12, 10 or 8 bits - number depending on the configuration of the ADC. - - @code - uint16_t adc_result; - ace_channel_handle_t at0; - at0 = ACE_get_channel_handle("VoltageMonitorAT0"); - adc_result = ACE_get_ppe_sample( at0 ); - @endcode - */ -uint16_t -ACE_get_ppe_sample -( - ace_channel_handle_t channel_handle -); - -/*-------------------------------------------------------------------------*//** - The ACE_get_channel_name() function provides the name of the channel - associated with the channel handle passed as parameter. The channel name is - the name used in the ACE configurator software tool when adding a service to - the ACE. - - @param channel_handle - The channel_handle parameter identifies the analog input channel for which - we want to retrieve the channel name. The available channel handle values can - be found in the ace_handles.h file located in the ./drivers_config/mss_ace - subdirectory. The channel handle value can also be retrieved through a call - to ACE_get_channel_handle() when the name of the channel is known, or by - iterating though all analog input channel using the ACE_get_first_channel() - and ACE_get_next_channel(). - - @return - This function returns a pointer to a zero-terminated string containing the - name of the channel. It returns 0 if the channel handle passed as parameter - is not recognized. - */ -const uint8_t * ACE_get_channel_name -( - ace_channel_handle_t channel_handle -); - -/*-------------------------------------------------------------------------*//** - The channel_type_t enumeration is used to identify the type of quantity - measured by an analog input channel. It is typically used to figure out the - type of conversion that must be applied to the ADC value generated from - sampling a channel in order to yield real world units such millivolts, - milliamps or degrees. - */ -typedef enum -{ - VOLTAGE, - CURRENT, - TEMPERATURE -} channel_type_t; - -/*-------------------------------------------------------------------------*//** - The ACE_get_channel_type() function returns the type of input channel of the - analog input channel identified by the channel handle passed as parameter. - This function allows determining whether the quantity measured through the ADC - is a voltage, current or temperature. - - @param channel_handle - The channel_handle parameter identifies one of the analog input channels - monitored by the ACE. The available channel handle values can be found in the - ace_handles.h file located in the .\drivers_config\mss_ace subdirectory. The - channel handle value can also be retrieved through a call to - ACE_get_channel_handle() when the name of the channel is known, or by - iterating though all analog input channel using the ACE_get_first_channel() - and ACE_get_next_channel(). - - @return - This function returns one of the following values to report the type of - quantity measure throught the channel: - - VOLTAGE - - CURRENT - - TEMPERATURE - */ -channel_type_t -ACE_get_channel_type -( - ace_channel_handle_t channel_handle -); - -/*-------------------------------------------------------------------------*//** - The ACE_get_channel_count() function returns the total number of configured - analog input channels. It is the number of channels available for use as - opposed to the theorical number of physical channels supported by the device. - - @return - The ACE_get_channel_count() function returns the total number of input - channels that were configured in the ACE configurator. - The ACE_get_channel_count() function returns 0 if no input channels were - configured. - - @code - uint32_t inc; - uint32_t nb_of_channels; - ace_channel_handle_t current_channel; - - nb_of_channels = ACE_get_channel_count(); - current_channel = ACE_get_first_channel(); - - for (inc = 0; inc < nb_of_channels; ++inc) - { - adc_result = ACE_get_ppe_sample( current_channel ); - display_value( current_channel, adc_result ); - current_channel = ACE_get_next_channel( current_channel ); - } - @endcode - */ -uint32_t -ACE_get_channel_count -( - void -); - -/*-------------------------------------------------------------------------*//** - The ACE_get_first_channel() function returns the channel handle of one of the - channel controlled by the ACE. This function is used to start iterating though - the list of analog input channels handled by the ACE. - - @return - The ACE_get_first_channel() function returns the first channel handle found - in the ACE driver's internal channel handles list or INVALID_CHANNEL_HANDLE - if there are no channels defined in the ACE configuration. - - @code - uint32_t inc; - uint32_t nb_of_channels; - ace_channel_handle_t current_channel; - - nb_of_channels = ACE_get_channel_count(); - current_channel = ACE_get_first_channel(); - - for (inc = 0; inc < nb_of_channels; ++inc) - { - adc_result = ACE_get_ppe_sample( current_channel ); - display_value( current_channel, adc_result ); - current_channel = ACE_get_next_channel( current_channel ); - } - @endcode - */ -ace_channel_handle_t -ACE_get_first_channel -( - void -); - -/*-------------------------------------------------------------------------*//** - The ACE_get_next_channel() returns the channel handle of the channel following - the one passed as parameter. This function is used to iterate through the list - of analog input channels handled by the ACE. - - @param channel_handle - The channel_handle parameter identifies from which channel the driver should - look in its channel handle list to return the next channel handle. The - channel_handle parameter would typically be the channel handle returned by a - call to ACE_get_first_channel() or a previous call to ACE_get_next_channel(). - Note: - The first call to ACE_get_next_channel() would typically use the - channel_handle returned by a previous call to ACE_get_first_channel(). The - second and subsequent calls to ACE_get_next_channel() would typically use - the channel_handle returned by a previous call to ACE_get_next_channel(). - - @return - The ACE_get_next_channel() function returns the channel handle of the channel - following the one passed as parameter or INVALID_CHANNEL_HANDLE if the end of - the channels list has been reached. - - @code - uint32_t inc; - uint32_t nb_of_channels; - ace_channel_handle_t current_channel; - - nb_of_channels = ACE_get_channel_count(); - current_channel = ACE_get_first_channel(); - - for (inc = 0; inc < nb_of_channels; ++inc) - { - adc_result = ACE_get_ppe_sample( current_channel ); - display_value( current_channel, adc_result ); - current_channel = ACE_get_next_channel( current_channel ); - } - @endcode - */ -ace_channel_handle_t -ACE_get_next_channel -( - ace_channel_handle_t channel_handle -); - - /** @} */ - -/*============================================================================== - =============================== SSE Control ================================== - =============================================================================*/ -/*=========================================================================*//** - @defgroup group3 Sample Sequencing Engine Control - Sample Sequencing Engine control. - @{ - *//*=========================================================================*/ - -/*-------------------------------------------------------------------------*//** - The Sample Sequencing Engine control functions use a parameter of this type as - a handle to identify the Sample Sequencing Engine (SSE) sequences configured - using the ACE configurator. The ACE_get_sse_seq_handle() function retrieves the - handle of the SSE sequence identified by the sequence name passed as parameter. - Note: The ACE configurator generates ACE driver configuration files into the - .\drivers_config\mss_ace folder of the firmware project. These files - contain the details of the SSE sequence handles for your ACE configuration. - The ACE driver automatically includes these files when the - .\drivers_config\mss_ace folder is present in the firmware project. - */ -typedef uint16_t sse_sequence_handle_t; - -/*-------------------------------------------------------------------------*//** - This constant is returned by the ACE_get_sse_seq_handle() function when the - driver can’t find a valid handle for the Sample Sequencing Engine (SSE) sequence. -*/ -#define INVALID_SSE_SEQ_HANDLE 0xFFFFu - -/*-------------------------------------------------------------------------*//** - The ACE_get_sse_seq_handle() function retrieves the handle of the Sample - Sequencing Engine sequence identified by the sequence name passed as parameter. - The sequence handler can then be used as parameter to other SSE sequence control - functions to identify the sequence to control. - - @param p_sz_sequence_name - The p_sz_sequence_name parameter is a pointer to a zero-terminated string - containing the name of the sampling sequence for which we want to retrieve - the handle. - - @return - The ACE_get_sse_seq_handle() function returns the handle used to identify - the sequence passed as parameter with other ACE driver sampling sequence - control functions. It returns INVALID_SSE_SEQ_HANDLE if the sequence name - passed as parameter is not recognized. - - @code - sse_sequence_handle_t sse_seq_handle; - sse_seq_handle = ACE_get_sse_seq_handle("ProcedureA"); - if ( sse_seq_handle != INVALID_SSE_SEQ_HANDLE ) - { - ACE_load_sse( sse_seq_handle ); - ACE_start_sse( sse_seq_handle ); - } - @endcode - */ -sse_sequence_handle_t -ACE_get_sse_seq_handle -( - const uint8_t * p_sz_sequence_name -); - -/*-------------------------------------------------------------------------*//** - The ACE_load_sse() function loads the ACE Sample Sequencing Engine (SSE) RAM - with the microcode implementing the sampling sequence identified by the SSE - sequence handler passed as parameter. - - @param sequence - The sequence parameter is the SSE sequence handler identifying the sampling - sequence to load into the ACE SSE. The value for this handler is retrieved - through a call to function ACE_get_sse_seq_handle(). - */ -void ACE_load_sse -( - sse_sequence_handle_t sequence -); - -/*-------------------------------------------------------------------------*//** - The ACE_start_sse() function causes the Sampling Sequence Engine (SSE) to start - executing the sequence identified by the sequence handler passed as parameter. - It causes the initiailization part of the sampling sequence to be executed - before the loop part of the sequence is started. - You must ensure that the sampling sequence has been loaded into the ACE's SSE - before calling this function. - - @param sequence - The sequence parameter is the SSE sequence handler identifying the sampling - sequence to load into the ACE SSE. The value for this handler is retrieved - through a call to function ACE_get_sse_seq_handle(). - */ -void ACE_start_sse -( - sse_sequence_handle_t sequence -); - -/*-------------------------------------------------------------------------*//** - The ACE_restart_sse() function restarts the loop part of the sampling sequence - loaded into the ACE's Sampling Sequence Engine (SSE). The sampling sequence - will be restarted from the beginning of the sequence but omiting the - intialization phase of the sequence. - This function would typically be called after stopping the sampling sequence - using the ACE_stop_see() function or with non-repeating sequences. - - @param sequence - The sequence parameter is the SSE sequence handler identifying the sampling - sequence to load into the ACE SSE. The value for this handler is retrieved - through a call to function ACE_get_sse_seq_handle(). - */ -void ACE_restart_sse -( - sse_sequence_handle_t sequence -); - -/*-------------------------------------------------------------------------*//** - The ACE_stop_sse() function stops execution of the Sample Sequencing Engine - (SSE) sequence indentified by the sequence handle passed as parameter. - - @param sequence - The sequence parameter is the SSE sequence handle identifying the sampling - sequence to load into the ACE SSE. The value for this handler is retrieved - through a call to function ACE_get_sse_seq_handle(). - */ -void ACE_stop_sse -( - sse_sequence_handle_t sequence -); - -/*-------------------------------------------------------------------------*//** - The ACE_resume_sse() function causes the Sampling Sequencing Engine (SSE) - sampling sequence identified by the sequence handle passed as parameter to - resume execution. This function is typically used to restart execution of - a sequence at the point where it was stopped through a call to ACE_stop_sse(). - - @param sequence - The sequence parameter is the SSE sequence handler identifying the sampling - sequence to load into the ACE SSE. The value for this handler is retrieved - through a call to function ACE_get_sse_seq_handle(). - */ -void ACE_resume_sse -( - sse_sequence_handle_t sequence -); - -/*-------------------------------------------------------------------------*//** - The ACE_clear_sample_pipeline() function clears the ACE hardware of samples - being processed. It clear the various stages involved in the production of - post processed samples within the ACE hardware. It is intended for use when - switching between sampling sequences and using peripheral DMA. It avoids - receiving stale samples generated as a result of a previous sampling sequence. - - The example below shows how this function can be used to ensure that no sample - generated as a result of sampling sequence sequence_a will be generated once - sampling sequence_b is started. Please note that it is important to stop the - SSE using function ACE_stop_sse() before calling ACE_clear_sample_pipeline() - to ensure sequence_a is not restarted after the sample pipeline is cleared. - @code - ACE_stop_sse(sequence_a); - ACE_clear_sample_pipeline(); - ACE_start_sse(sequence_b); - @endcode - - The example below shows how to ensure that the first sample read through PDMA - will be from the first channel in the sampling sequence. - @code - ACE_stop_sse(sequence_a); - ACE_clear_sample_pipeline(); - ACE_restart_sse(sequence_a); - PDMA_start - ( - PDMA_CHANNEL_0, - PDMA_ACE_PPE_DATAOUT, - (uint32_t)g_samples_buffer[g_pdma_buffer_idx], - SAMPLES_BUFFER_SIZE - ); - @endcode - */ -void ACE_clear_sample_pipeline(void); - -/** @} */ -/*============================================================================== - ======================== SSE Interrupts Control =============================== - =============================================================================*/ -/*=========================================================================*//** - @defgroup group4 Sample Sequencing Engine Interrupts Control - The following functions are used to control interrupts generated from the - ACE's Sample Sequencing Engine. These interrupts would typically be used to - detect when valid data is available from the ADCs controlled by the SSE or to - detect the complete or partial completion of the sampling sequence through the - insertion of SSE program counter general purpose interrupt assertion as part - of the sequence. - @{ - *//*=========================================================================*/ - -/*-------------------------------------------------------------------------*//** - The sse_irq_id_t enumeration is used to identify the Sample Sequencing Engine - (SSE) interrupt sources to the SSE interrupt control functions. - */ -typedef enum -{ - PC0_FLAG0 = 0, - PC0_FLAG1 = 1, - PC0_FLAG2 = 2, - PC0_FLAG3 = 3, - PC1_FLAG0 = 4, - PC1_FLAG1 = 5, - PC1_FLAG2 = 6, - PC1_FLAG3 = 7, - PC2_FLAG0 = 8, - PC2_FLAG1 = 9, - PC2_FLAG2 = 10, - PC2_FLAG3 = 11, - ADC0_DATAVALID = 12, - ADC1_DATAVALID = 13, - ADC2_DATAVALID = 14, - ADC0_CALIBRATION_COMPLETE = 15, - ADC1_CALIBRATION_COMPLETE = 16, - ADC2_CALIBRATION_COMPLETE = 17, - ADC0_CALIBRATION_START = 18, - ADC1_CALIBRATION_START = 19, - ADC2_CALIBRATION_START = 20, - NB_OF_SSE_FLAG_IRQS = 21 -} sse_irq_id_t; - -/*-------------------------------------------------------------------------*//** - The ACE_enable_sse_irq() function enables the Sample Sequencing Engine (SSE) - interrupt source specified as parameter to generate interrupts. - - @param sse_irq_id - The sse_irq_id parameter identifies the SSE interrupt source controlled by - this function. - */ -void ACE_enable_sse_irq -( - sse_irq_id_t sse_irq_id -); - -/*-------------------------------------------------------------------------*//** - The ACE_disable_sse_irq() function disables the Sample Sequencing Engine - (SSE) interrupt source specified as parameter from generating interrupts. - - @param sse_irq_id - The sse_irq_id parameter identifies the SSE interrupt source controlled by - this function. - */ -void ACE_disable_sse_irq -( - sse_irq_id_t sse_irq_id -); - -/*-------------------------------------------------------------------------*//** - The ACE_clear_sse_irq() function clears the Sampling Sequencing Engine (SSE) - interrupt specified as parameter. - - @param sse_irq_id - The sse_irq_id parameter identifies the SSE interrupt source controlled by - this function. - */ -void ACE_clear_sse_irq -( - sse_irq_id_t sse_irq_id -); - -/** @} */ -/*============================================================================== - ============================ Comparators Control ============================== - =============================================================================*/ -/*=========================================================================*//** - @defgroup group5 Comparators Control - The following functions are used to control the analog comparators included - in the SmartFusion analog block. - The comparator configuration functions can be used to directly configure the - comparators. Their use is only required when the ACE is not configured using - the ACE configurator software tool. - The comparator interrupt control functions are used regardless of the way the - ACE was configured to enable, disable and clear interrupts generated when the - positive input of a comparator rises above or falls below the negative input. - @{ - *//*=========================================================================*/ - -/*-------------------------------------------------------------------------*//** - The comparator_id_t enumeration is used by the comparator control functions - to identify the analog comparators included in the SmartFusion analog block. - */ -typedef enum -{ - CMP0 = 0, /*!< Analog module 0, Quad 0, CMB comparator */ - CMP1 = 1, /*!< Analog module 0, Quad 0, TMB comparator */ - CMP2 = 2, /*!< Analog module 0, Quad 1, CMB comparator */ - CMP3 = 3, /*!< Analog module 0, Quad 1, TMB comparator */ - CMP4 = 4, /*!< Analog module 1, Quad 0, CMB comparator */ - CMP5 = 5, /*!< Analog module 1, Quad 0, TMB comparator */ - CMP6 = 6, /*!< Analog module 1, Quad 1, CMB comparator */ - CMP7 = 7, /*!< Analog module 1, Quad 1, TMB comparator */ - CMP8 = 8, /*!< Analog module 2, Quad 0, CMB comparator */ - CMP9 = 9, /*!< Analog module 2, Quad 0, TMB comparator */ - CMP10 = 10, /*!< Analog module 2, Quad 1, CMB comparator */ - CMP11 = 11, /*!< Analog module 2, Quad 1, TMB comparator */ - NB_OF_COMPARATORS = 12 -} comparator_id_t; - -/*-------------------------------------------------------------------------*//** - The comp_hysteresis_t enumeration is used by the ACE_set_comp_hysteresis() - function to set the hysteresis of the analog comparators included in the - SmartFusion analog block. This enumeration provides the allowed values of the - hysteresis parameter of the ACE_set_comp_hysteresis() function. - */ -typedef enum -{ - NO_HYSTERESIS = 0, - HYSTERESIS_10_MV = 1, - HYSTERESIS_30_MV = 2, - HYSTERESIS_100_MV = 3, - NB_OF_HYSTERESIS = 4 -} comp_hysteresis_t ; - -/*-------------------------------------------------------------------------*//** - The comp_reference_t enumeration is used by the ACE_set_comp_reference() - function to select the reference input of the odd numbered analog comparators - included in the SmartFusion analog block. This enumeration provides the allowed - values of the reference parameter of the ACE_set_comp_reference () function. - */ -typedef enum -{ - SDD0_COMP_REF = 0, - SDD1_COMP_REF = 1, - SDD2_COMP_REF = 2, - ADC_IN_COMP_REF = 3, - NB_OF_COMP_REF = 4 -} comp_reference_t; - -/*-------------------------------------------------------------------------*//** - The ACE_set_comp_reference() function is used to select the reference input - of a temperature monitor block comparator. The reference input of a temperature - monitor can be an ADC direct input or one of the SDD's output. - - @param comp_id - The comp_id parameter specifies the comparator for which to select the - reference input. Since only temperature monitor block comparators have a - selectable reference input, allowed values are: - - CMP1 - - CMP3 - - CMP5 - - CMP7 - - CMP9 - - CMP11 - - @param reference - The reference parameter specify the signal that will be used as reference - by the comparator. Allowed values are: - - SDD0_COMP_REF - - SDD1_COMP_REF - - SDD2_COMP_REF - - ADC_IN_COMP_REF - */ -void ACE_set_comp_reference -( - comparator_id_t comp_id, - comp_reference_t reference -); - -/*-------------------------------------------------------------------------*//** - The ACE_set_comp_hysteresis() function is used to set the hysteresis of a - comparator. There are four possible hystereris settings: no hysteresis, - +/-10mV, +/-30mV or +/-100mV. - - @param comp_id - The comp_id parameter specifies the comparator for which this function will - set the hyteresis. - - @param hysteresis - The hysteresis parameter specifies the hysteresis that will be applied to - the comparator's input. Allowed values are: - - NO_HYSTERESIS - - HYSTERESIS_10_MV - - HYSTERESIS_30_MV - - HYSTERESIS_100_MV - - */ -void ACE_set_comp_hysteresis -( - comparator_id_t comp_id, - comp_hysteresis_t hysteresis -); - -/*-------------------------------------------------------------------------*//** - The ACE_enable_comp() function is used to enable the comparator specified as - parameter. - - @param comp_id - The comp_id parameter specifies which comparator will be enabled by a call - to this function. - */ -void ACE_enable_comp -( - comparator_id_t comp_id -); - -/*-------------------------------------------------------------------------*//** - The ACE_disable_comp() function is used to disable the comparator specified as - parameter. - - @param comp_id - The comp_id parameter specifies which comparator will be disabled by a call - to this function. - */ -void ACE_disable_comp -( - comparator_id_t comp_id -); - -/*-------------------------------------------------------------------------*//** - The ACE_enable_comp_rise_irq() function is used to enable interrupts to be - generated when the positive input of the comparator specified as parameter - rises above the negative input of the comparator. - The function prototypes for the comparator rise interrupt service routines are: - - void ACE_Comp0_Rise_IRQHandler( void ); - - void ACE_Comp1_Rise_IRQHandler( void ); - - void ACE_Comp2_Rise_IRQHandler( void ); - - void ACE_Comp3_Rise_IRQHandler( void ); - - void ACE_Comp4_Rise_IRQHandler( void ); - - void ACE_Comp5_Rise_IRQHandler( void ); - - void ACE_Comp6_Rise_IRQHandler( void ); - - void ACE_Comp7_Rise_IRQHandler( void ); - - void ACE_Comp8_Rise_IRQHandler( void ); - - void ACE_Comp9_Rise_IRQHandler( void ); - - void ACE_Comp10_Rise_IRQHandler( void ); - - void ACE_Comp11_Rise_IRQHandler( void ); - - @param comp_id - The comp_id parameter specifies which comparator will be enabled to generate - rising interrupts. - */ -void ACE_enable_comp_rise_irq -( - comparator_id_t comp_id -); - -/*-------------------------------------------------------------------------*//** - The ACE_disable_comp_rise_irq() function is used to disable interrupts from - being generated when the positive input of the comparator specified as parameter - rises above the negative input of the comparator. - - @param comp_id - The comp_id parameter specifies which comparator will be disabled from - generating rising interrupts. - */ -void ACE_disable_comp_rise_irq -( - comparator_id_t comp_id -); - -/*-------------------------------------------------------------------------*//** - The ACE_clear_comp_rise_irq() function is used to clear rise interrupts. This - function is typically called as part of the rise interrupt service routine. - - @param comp_id - The comp_id parameter specifies the comparator for which to clear the rise - interrupt. - - Example: - @code - void ACE_Comp1_Rise_IRQHandler( void ) - { - process_rise_irq(); - ACE_clear_comp_rise_irq( CMP1 ); - NVIC_ClearPendingIRQ( ACE_Comp1_Rise_IRQn ); - } - @endcode - */ -void ACE_clear_comp_rise_irq -( - comparator_id_t comp_id -); - -/*-------------------------------------------------------------------------*//** - The ACE_enable_comp_fall_irq() function is used to enable interrupts to be - generated when the positive input of the comparator specified as parameter - falls below the negative input of the comparator. - The function prototypes for the comparator fall interrupt service routines are: - - void ACE_Comp0_Fall_IRQHandler( void ); - - void ACE_Comp1_Fall_IRQHandler( void ); - - void ACE_Comp2_Fall_IRQHandler( void ); - - void ACE_Comp3_Fall_IRQHandler( void ); - - void ACE_Comp4_Fall_IRQHandler( void ); - - void ACE_Comp5_Fall_IRQHandler( void ); - - void ACE_Comp6_Fall_IRQHandler( void ); - - void ACE_Comp7_Fall_IRQHandler( void ); - - void ACE_Comp8_Fall_IRQHandler( void ); - - void ACE_Comp9_Fall_IRQHandler( void ); - - void ACE_Comp10_Fall_IRQHandler( void ); - - void ACE_Comp11_Fall_IRQHandler( void ); - - @param comp_id - The comp_id parameter specifies which comparator will be enabled to generate - fall interrupts. - */ -void ACE_enable_comp_fall_irq -( - comparator_id_t comp_id -); - -/*-------------------------------------------------------------------------*//** - The ACE_disable_comp_fall_irq() function is used to disable interrupts from - being generated when the positive input of the comparator specified as parameter - falls below the negative input of the comparator. - - @param comp_id - The comp_id parameter specifies which comparator will be disabled from - generating fall interrupts. - */ -void ACE_disable_comp_fall_irq -( - comparator_id_t comp_id -); - -/*-------------------------------------------------------------------------*//** - The ACE_clear_comp_fall_irq() function is used to clear fall interrupts. This - function is typically called as part of the fall interrupt service routine. - - @param comp_id - The comp_id parameter specifies the comparator for which to clear the fall - interrupt. - - Example: - @code - void ACE_Comp1_Fall_IRQHandler( void ) - { - process_fall_irq(); - ACE_clear_comp_fall_irq( CMP1 ); - NVIC_ClearPendingIRQ( ACE_Comp1_Fall_IRQn ); - } - @endcode - */ -void ACE_clear_comp_fall_irq -( - comparator_id_t comp_id -); - -/*-------------------------------------------------------------------------*//** - The ACE_get_comp_status() function returns the current comparator interrupt - status. It returns a 32 bit value indicating which comparators experienced a - fall and/or rise event. These status bits can be cleared using the - ACE_clear_comp_rise_irq() and ACE_clear_comp_fall_irq() functions. - - @return - The return value is a 32 bit numnber where bits 0 to 11 indicate which - comparator experienced a fall event and bits 21 to 23 indicate which - comparator experienced a rise event. - */ -uint32_t ACE_get_comp_status( void ); - -/** @} */ - -/*============================================================================== - ========================== Controlling Thresholds ============================= - =============================================================================*/ -/*=========================================================================*//** - @defgroup group8 Controlling Flags Thresholds - The following functions are used to dynamically control Post Processing Engine - (PPE) flags threshholds. - @{ - *//*=========================================================================*/ - -/*-------------------------------------------------------------------------*//** - The ACE_is_hysteresis_flag() function indicates if an hysteresis is applied - to the analog input sample value when determining the state of the flag - identified as parameter. - - @param flag_handle - The flag_handle parameter identifies one of the flags generated based on the - value of an analog input channel. The available flag handle values can be - found in the ace_handles.h file located in the .\drivers_config\mss_ace - subdirectory. The flag handle value can also be retrieved through a call to - ACE_get_flag_handle() when the name of the flag is known, or by iterating - though all flags associated with an analog input channel using the - ACE_get_channel_first_flag() and ACE_get_channel_next_flag(). - - @return - This function returns the value one if a hysteresis is applied to the channel - sample values as part of determining the state of the flag identified as - parameter. It returns zero if no hysteresis is applied. - */ -uint32_t ACE_is_hysteresis_flag -( - ace_flag_handle_t flag_handle -); - -/*-------------------------------------------------------------------------*//** - The ACE_is_under_flag() function indicates whether a flag is triggered when the - monitored analog input falls below the flag's threshold level or above the - flag's threshold level. - - @param flag_handle - The flag_handle parameter identifies one of the flags generated based on the - value of an analog input channel. The available flag handle values can be - found in the ace_handles.h file located in the .\drivers_config\mss_ace - subdirectory. The flag handle value can also be retrieved through a call to - ACE_get_flag_handle() when the name of the flag is known, or by iterating - though all flags associated with an analog input channel using the - ACE_get_channel_first_flag() and ACE_get_channel_next_flag(). - - @return - This function returns the value one if the flag identified as parameter - triggers as a result of the monitored input falling below the flag's - threshold value. - It returns zero if the flag triggers as a result of the monitored input - exceeding the flag's threshold value. - */ -uint32_t ACE_is_under_flag -( - ace_flag_handle_t flag_handle -); - -/*-------------------------------------------------------------------------*//** - The ACE_set_flag_threshold() function is used to adjust the threshold for a - specific post processing engine generated flag. The flag is identified through - the name selected in the ACE configurator software tool. - This function will set a new flag’s threshold value while preserving the - hysteresis specified at configuration time or through a call to - ACE_set_flag_hysteresis(). For example, requesting a 1 volt threshold for an - over flag configured with a 100 millivolts hysteresis will result in the flag - being asserted when the voltage reaches 1.1 volts and deasserted when the - voltage falls below 0.9 volt. - - @param flag_handle - The flag_handle parameter identifies one of the flags generated based on the - value of an analog input channel. The available flag handle values can be - found in the ace_handles.h file located in the ./drivers_config/mss_ace - subdirectory. The flag handle value can also be retrieved through a call to - ACE_get_flag_handle() when the name of the flag is known, or by iterating - though all flags associated with an analog input channel using the - ACE_get_channel_first_flag() and ACE_get_channel_next_flag(). - - @param new_threshold - The new_threshold parameter specifies the new threshold level that must be - reached in order for the flag to be raised. The value of this parameter is - the sample value resulting from a post processing engine conversion of the - desired analog input threshold level. - - Example: - The function below sets the threshold of the flag specified as parameter to - 1 volt. - @code - void set_threshold_to_1V - ( - ace_flag_handle_t flag_handle - ) - { - uint16_t new_threshold; - ace_channel_handle_t channel_handle; - - channel_handle = ACE_get_flag_channel(flag_handle); - new_threshold = ACE_convert_from_mV(channel_handle, 1000); - ACE_set_flag_threshold(flag_handle, new_threshold); - } - @endcode - */ -void ACE_set_flag_threshold -( - ace_flag_handle_t flag_handle, - uint16_t new_threshold -); - -/*-------------------------------------------------------------------------*//** - The ACE_set_flag_hysteresis() function modifies the hysteresis applied to the - analog input channel sample values used to generate the flag specified as - parameter. - - @param flag_handle - The flag_handle parameter identifies one of the flags generated based on the - value of an analog input channel. The available flag handle values can be - found in the ace_handles.h file located in the .\drivers_config\mss_ace - subdirectory. The flag handle value can also be retrieved through a call to - ACE_get_flag_handle() when the name of the flag is known, or by iterating - though all flags associated with an analog input channel using the - ACE_get_channel_first_flag() and ACE_get_channel_next_flag(). - - @param adc_hysteresis - The adc_hysteresis parameter is the value to add and subtract to the - threshold value to obtain the hysteresis high and low limits triggering flag - assertion and deassertion. The adc_hysteresis parameter is a PPE conversion - result offset. - - Example - The example below demonstrates the use of the ACE_set_flag_hysteresis() - function to set a 100mV hysteresis on the OVER_1V flag of the VoltageMonitor - input channel. VoltageMonitor and OVER_1V are names selected in the ACE - configurator for one of the analog inputs and one of the flags associated - with that input. - The method used to compute the adc_hysteresis value will work for all - input types including ABPS inputs where zero Volts is not equivalent to a - PPE sample value of zero. - - @code - ace_channel_handle_t channel_handle; - ace_flag_handle_t flag_handle; - uint16_t adc_hysteresis; - uint16_t upper_limit; - uint16_t lower_limit; - - channel_handle = VoltageMonitor; - flag_handle = VoltageMonitor_OVER_1V; - - upper_limit = ACE_convert_from_mV(channel_handle, 100); - lower_limit = ACE_convert_from_mV(channel_handle, 0); - - if (upper_limit > lower_limit) - { - adc_hysteresis = upper_limit - lower_limit; - } - else - { - adc_hysteresis = lower_limit - upper_limit; - } - - ACE_set_flag_hysteresis(flag_handle, adc_hysteresis); - @endcode - */ -void -ACE_set_flag_hysteresis -( - ace_flag_handle_t flag_handle, - uint16_t adc_hysteresis -); - -/*-------------------------------------------------------------------------*//** - The ACE_set_flag_assertion() function sets the PPE sample value that must be - reached in order for the flag specified as parameter to become asserted. It is - used in conjunction with the ACE_set_flag_deassertion() function as an - alternative to the ACE_set_flag_threshold() and ACE_set_flag_hysteresis() - functions to set the hysteresis window of an hysteresis flag. - The ACE_set_flag_assertion() and ACE_set_flag_deassertion() functions are - intended to be used where the threshold value is not centered within the - hysteresis window. They allow specifying the actual threshold values at which - the flag will be asserted and deasserted. - - @param flag_handle - The flag_handle parameter identifies one of the flags generated based on the - value of an analog input channel. The available flag handle values can be - found in the ace_handles.h file located in the .\drivers_config\mss_ace - subdirectory. The flag handle value can also be retrieved through a call to - ACE_get_flag_handle() when the name of the flag is known, or by iterating - though all flags associated with an analog input channel using the - ACE_get_channel_first_flag() and ACE_get_channel_next_flag(). - - @param assertion_value - The assertion_value parameter is the Post Processing Engine sample value that - must be reached for the flag, identified through the flag_handle parameter, - to become asserted. The PPE sample value is always a 12 bits sample value - regardless of the configuration of the ADC used to sample the input channel. - */ -void ACE_set_flag_assertion -( - ace_flag_handle_t flag_handle, - uint16_t assertion_value -); - -/*-------------------------------------------------------------------------*//** - The ACE_set_flag_deassertion() function sets the PPE sample value that must be - reached in order for the flag specified as parameter to become deasserted. It - is used in conjunction with the ACE_set_flag_assertion() function as an - alternative to the ACE_set_flag_threshold() and ACE_set_flag_hysteresis() - functions to set the hysteresis window of an hysteresis flag. - The ACE_set_flag_assertion() and ACE_set_flag_deassertion() functions are - intended to be used where the threshold value is not centered within the - hysteresis window. They allow specifying the actual threshold values at which - the flag will be asserted and deasserted. - - @param flag_handle - The flag_handle parameter identifies one of the flags generated based on the - value of an analog input channel. The available flag handle values can be - found in the ace_handles.h file located in the .\drivers_config\mss_ace - subdirectory. The flag handle value can also be retrieved through a call to - ACE_get_flag_handle() when the name of the flag is known, or by iterating - though all flags associated with an analog input channel using the - ACE_get_channel_first_flag() and ACE_get_channel_next_flag(). - - @param assertion_value - The assertion_value parameter is the Post Processing Engine sample value - that must be reached for the flag, identified through the flag_handle - parameter, to become de-asserted. The PPE sample value is always a 12 bits - sample value regardless of the configuration of the ADC used to sample the - input channel. - */ -void ACE_set_flag_deassertion -( - ace_flag_handle_t flag_handle, - uint16_t assertion_value -); - -/*-------------------------------------------------------------------------*//** - The ACE_set_channel_hysteresis() function sets the hysteresis applied to - analog input channel sample values when generating flags. It sets the - hysteresis for all flags generated based on the value of the analog input - channel identified by the channel handle passed as first parameter. - - @param channel_handle - The channel_handle parameter identifies one of the analog input channels - monitored by the ACE. The available channel handle values can be found in - the ace_handles.h file located in the .\drivers_config\mss_ace subdirectory. - The channel handle value can also be retrieved through a call to - ACE_get_channel_handle() when the name of the channel is known, or by - iterating though all analog input channel using the ACE_get_first_channel() - and ACE_get_next_channel(). - - @param adc_hysteresis - The adc_hysteresis parameter is the value to add and subtract to the - threshold value to obtain the hysteresis high and low limits triggering flag - assertion and deassertion. The adc_hysteresis parameter is a PPE conversion - result offset. - */ -void -ACE_set_channel_hysteresis -( - ace_channel_handle_t channel_handle, - uint16_t adc_hysteresis -); - - -/** @} */ -/*-------------------------------------------------------------------------*//** - * - */ - -/*============================================================================== - ================================== Flags ====================================== - =============================================================================*/ -/*=========================================================================*//** - @defgroup group6 Post Processing Engine Flags - The following functions are used to control interrupts generated by the ACE's - Post Processing Engine (PPE) when monitored inputs rise above or fall below - thresholds specified in the ACE configurator software tool. - @{ - *//*=========================================================================*/ - - /*-------------------------------------------------------------------------*//** - These constant definitions are the return values of the ACE_get_flag_status() - function. They specify the status of the Post Processing Engine (PPE) flag. - */ -#define UNKNOWN_FLAG (int32_t)(-1) -#define FLAG_ASSERTED (int32_t)1 -#define FLAG_NOT_ASSERTED (int32_t)0 - -/*-------------------------------------------------------------------------*//** - This constant is returned by the ACE_get_flag_handle function when the driver - can’t find a valid handle for the Post Processing Engine (PPE) flag. - */ -#define INVALID_FLAG_HANDLE NB_OF_ACE_FLAG_HANDLES - -/*-------------------------------------------------------------------------*//** - The ACE_get_flag_handle() function returns the handle of the flag identified - by the flag name passed as parameter. The flag handle obtained through this - function is then used as parameter to other flag control functions to identify - which flag is to be controlled by the called function. - - @param p_sz_full_flag_name - The p_sz_full_flag_name parameter is a pointer to a zero-terminated string - holding the name of the flag as specified in the ACE configurator. The full - name of a flag contains both the name of the monitored input channel and the - name of the flag generated based the level of that input separated by ":". - For example, the full name for the flag called "CriticalOver" raised when - the input channel called "MainSupply" reaches a critical level would be - named "MainSupply:CriticalOver". - - @return - The ACE_get_flag_handle() returns the flag handle associated with the flag - name passed as parameter. It returns INVALID_FLAG_HANDLE when the flag name - is invalid and not recognized by the ACE driver. - */ -ace_flag_handle_t -ACE_get_flag_handle -( - const uint8_t * p_sz_full_flag_name -); - -/*-------------------------------------------------------------------------*//** - The ACE_get_flag_status() function returns the current status of the flag - specified as parameter. The flag is identified through the name specified in - the ACE configurator when the flag was created. - - @param flag_handle - The flag_handle parameter identifies one of the flags generated based on the - value of an analog input channel. The available flag handle values can be - found in the ace_handles.h file located in the .\drivers_config\mss_ace - subdirectory. The flag handle value can also be retrieved through a call to - ACE_get_flag_handle() when the name of the flag is known, or by iterating - though all flags associated with an analog input channel using the - ACE_get_channel_first_flag() and ACE_get_channel_next_flag(). - - @return - The ACE_get_flag_status() function returns one of the following values - depending on the current status of the flag: - - FLAG_ASSERTED if the flag is raised/asserted. - - FLAG_NOT_ASSERTED if the flag is not asserted. - - UNKNOWN_FLAG if the flag name is not recognized by the driver. -*/ -int32_t -ACE_get_flag_status -( - ace_flag_handle_t flag_handle -); - -/*-------------------------------------------------------------------------*//** - The ACE_enable_channel_flags_irq() function enables all flags generated based - on the value of the analog input channel passed as parameter to generate - interrupts. Flags used to detect that thresholds are crossed by the value - sampled on the analog input channel identified as parameter are enabled to - generate interrupts by this function. It enables flag interrupts both at the - ACE PEE flag and Cortex-M3 interrupt controller levels. - - @param channel_handle - The channel_handle parameter identifies one of the analog input channels - monitored by the ACE. The available channel handle values can be found in the - ace_handles.h file located in the ./drivers_config/mss_ace subdirectory. The - channel handle value can also be retrieved through a call to - ACE_get_channel_handle() when the name of the channel is known, or by - iterating though all analog input channel using the ACE_get_first_channel() - and ACE_get_next_channel(). - */ -void ACE_enable_channel_flags_irq -( - ace_channel_handle_t channel_handle -); - -/*-------------------------------------------------------------------------*//** - The ACE_disable_channel_flags_irq() function disables all flags generated - based on the value of the analog input channel passed as parameter to generate - interrupts. Flags used to detect that thresholds are crossed by the value - sampled on the analog input channel identified as parameter are disabled from - generating interrupts by this function. The interrupt is only disabled at the - ACE PPE flag level in order to avoid disabling other cahnnel's flag interrupts - which may happen to use the same ACE threshold interrupt line. - - @param channel_handle - The channel_handle parameter identifies one of the analog input channels - monitored by the ACE. The available channel handle values can be found in the - ace_handles.h file located in the ./drivers_config/mss_ace subdirectory. The - channel handle value can also be retrieved through a call to - ACE_get_channel_handle() when the name of the channel is known, or by - iterating though all analog input channel using the ACE_get_first_channel() - and ACE_get_next_channel(). - */ -void ACE_disable_channel_flags_irq -( - ace_channel_handle_t channel_handle -); - -/*-------------------------------------------------------------------------*//** - The ACE_clear_channel_flags_irq() function clears all interrupts generated by - flags associated with the analog input channel passed as parameter. Interrupt - generated by flags used to detect that thresholds are crossed by the value - sampled on the analog input channel identified as parameter are cleared by - this function. This function would typically be used before enabling the flag - interrupts in order to ignore past events. - - @param channel_handle - The channel_handle parameter identifies one of the analog input channels - monitored by the ACE. The available channel handle values can be found in the - ace_handles.h file located in the ./drivers_config/mss_ace subdirectory. The - channel handle value can also be retrieved through a call to - ACE_get_channel_handle() when the name of the channel is known, or by - iterating though all analog input channel using the ACE_get_first_channel() - and ACE_get_next_channel(). - */ -void ACE_clear_channel_flags_irq -( - ace_channel_handle_t channel_handle -); - -/*-------------------------------------------------------------------------*//** - The ACE_enable_flag_irq() function enables the ACE post processing engine (PPE) - generated flags specified as parameter to interrupt the Cortex-M3 processor. - It enables flag interrupts both at the ACE PPE flag and Cortex-M3 interrupt - controller levels. - - @param flag_handle - The flag_handle parameter identifies one of the flags generated based on the - value of an analog input channel. The available flag handle values can be - found in the ace_handles.h file located in the .\drivers_config\mss_ace - subdirectory. The flag handle value can also be retrieved through a call to - ACE_get_flag_handle() when the name of the flag is known, or by iterating - though all flags associated with an analog input channel using the - ACE_get_channel_first_flag() and ACE_get_channel_next_flag(). - */ -void ACE_enable_flag_irq -( - ace_flag_handle_t flag_handle -); - -/*-------------------------------------------------------------------------*//** - The ACE_disable_flag_irq() function disables ACE post processing engine (PPE) - generated flags from interrupting the Cortex-M3. The interrupt is only - disabled at the ACE PPE flag level in order to avoid disabling other flags - interrupts which may happen to use the same ACE threshold interrupt line. - - @param flag_handle - The flag_handle parameter identifies one of the flags generated based on the - value of an analog input channel. The available flag handle values can be - found in the ace_handles.h file located in the .\drivers_config\mss_ace - subdirectory. The flag handle value can also be retrieved through a call to - ACE_get_flag_handle() when the name of the flag is known, or by iterating - though all flags associated with an analog input channel using the - ACE_get_channel_first_flag() and ACE_get_channel_next_flag(). - */ -void ACE_disable_flag_irq -( - ace_flag_handle_t flag_handle -); - -/*-------------------------------------------------------------------------*//** - The ACE_clear_flag_irq() function clears the interrupt for the flag specified - as parameter. This function would typically be used before enabling the flag - interrupt in order to ignore past events. - - @param flag_handle - The flag_handle parameter identifies one of the flags generated based on the - value of an analog input channel. The available flag handle values can be - found in the ace_handles.h file located in the .\drivers_config\mss_ace - subdirectory. The flag handle value can also be retrieved through a call to - ACE_get_flag_handle() when the name of the flag is known, or by iterating - though all flags associated with an analog input channel using the - ACE_get_channel_first_flag() and ACE_get_channel_next_flag(). - */ -void ACE_clear_flag_irq -( - ace_flag_handle_t flag_handle -); - -/*-------------------------------------------------------------------------*//** - The ACE_get_flag_name() function returns the name of the flag identified by - the flag handle passed as parameter. - - @param flag_handle - The flag_handle parameter identifies one of the flags generated based on the - value of an analog input channel. The available flag handle values can be - found in the ace_handles.h file located in the .\drivers_config\mss_ace - subdirectory. The flag handle value can also be retrieved through a call to - ACE_get_flag_handle() when the name of the flag is known, or by iterating - though all flags associated with an analog input channel using the - ACE_get_channel_first_flag() and ACE_get_channel_next_flag(). - - @return - The ACE_get_flag_name() function returns a pointer to a zero-terminated - string containing the name of the flag identified by the flag handle passed - as parameter. It returns 0 if the flag handle passed as parameter is invalid. - */ -const uint8_t * -ACE_get_flag_name -( - ace_flag_handle_t flag_handle -); - -/*-------------------------------------------------------------------------*//** - The ACE_get_flag_channel() function returns the handle of the channel - monitored in order to generate the flag identified by the flag handle passed - as parameter. - - @param flag_handle - The flag_handle parameter identifies one of the flags generated based on the - value of an analog input channel. The available flag handle values can be - found in the ace_handles.h file located in the .\drivers_config\mss_ace - subdirectory. The flag handle value can also be retrieved through a call to - ACE_get_flag_handle() when the name of the flag is known, or by iterating - though all flags associated with an analog input channel using the - ACE_get_channel_first_flag() and ACE_get_channel_next_flag(). - - @return - The ACE_get_flag_channel() function returns a channel handle identifying the - analog input channel monitored by the flag passed as parameter. - */ -ace_channel_handle_t -ACE_get_flag_channel -( - ace_flag_handle_t flag_handle -); - -/*-------------------------------------------------------------------------*//** - The ACE_get_channel_flag_count() function returns the total number of flags - associated with the input channel specified by the channel_handle parameter. - It indicates how many flags are generated based on the value of the specified - analog input channel. - - @param channel_handle - The channel_handle parameter identifies one of the analog input channels - monitored by the ACE. The available channel handle values can be found in - the ace_handles.h file located in the .\drivers_config\mss_ace subdirectory. - The channel handle value can also be retrieved through a call to - ACE_get_channel_handle() when the name of the channel is known, or by - iterating though all analog input channel using the ACE_get_first_channel() - and ACE_get_next_channel(). - - @return - The ACE_get_channel_flag_count() function returns the total number of flags - that are generated based on the value of the specified analog input channel. - The ACE_get_channel_flag_count() function returns 0 if no input channels were - configured. - - Example - @code - uint32_t inc; - uint32_t nb_of_flags; - uint16_t flag_iterator; - ace_flag_handle_t current_flag; - ace_channel_handle_t channel_handle; - - nb_of_flags = ACE_get_channel_flag_count(channel_handle); - current_flag = ACE_get_channel_first_flag(channel_handle, &flag_iterator); - - for (inc = 0; inc < nb_of_flags; ++inc) - { - current_flag = ACE_get_channel_next_flag(channel_handle, &flag_iterator); - display_flag_properties(current_flag); - } - @endcode - */ -uint32_t -ACE_get_channel_flag_count -( - ace_channel_handle_t channel_handle -); - -/*-------------------------------------------------------------------------*//** - The ACE_get_channel_first_flag() function retrieves the handle of the first - flag associated with the analog input channel identified by the channel handle - passed as parameter. It also initialises the value of the iterator variable - pointed to by the second function parameter. The iterator can be used - subsequently as a parameter to the ACE_get_channel_next_flag() function to - iterate through all flags associated with the analog input channel. - - @param channel_handle - The channel_handle parameter identifies one of the analog input channels - monitored by the ACE. The available channel handle values can be found in the - ace_handles.h file located in the ./drivers_config/mss_ace subdirectory. - The channel handle value can also be retrieved through a call to - ACE_get_channel_handle() when the name of the channel is known, or by - iterating though all analog input channel using the ACE_get_first_channel() - and ACE_get_next_channel(). - - @param iterator - The iterator parameter is a pointer to a uint16_t iterator variable. The - value of the iterator variable will be set by the ACE_get_channel_first_flag() - functions so that it can be used in subsequent calls to - ACE_get_channel_next_flag() to keep track of the current location in the - list of flags associated with the analog input channel. - - @return - The ACE_get_channel_first_flag() function returns a flag handle identifying - one of the flags generated based on the value of the analog input channel - identified by the channel_handle parameter. It returns INVALID_FLAG_HANDLE - if no flags are generated based on the analog input channel input or if the - channel handle is invalid. - - Example - @code - uint32_t inc; - uint32_t nb_of_flags; - uint16_t flag_iterator; - ace_flag_handle_t current_flag; - ace_channel_handle_t channel_handle; - - nb_of_flags = ACE_get_channel_flag_count(channel_handle); - current_flag = ACE_get_channel_first_flag(channel_handle, &flag_iterator); - - for (inc = 0; inc < nb_of_flags; ++inc) - { - current_flag = ACE_get_channel_next_flag(channel_handle, &flag_iterator); - display_flag_properties(current_flag); - } - @endcode - */ -ace_flag_handle_t -ACE_get_channel_first_flag -( - ace_channel_handle_t channel_handle, - uint16_t * iterator -); - -/*-------------------------------------------------------------------------*//** - The ACE_get_channel_next_flag() function retrieves the handle of a flag - associated with the analog input channel identified by the channel handle - passed as parameter. The retrieved flag handle is the next one in the driver's - internal flag list based on the iterator parameter. - - @param channel_handle - The channel_handle parameter identifies one of the analog input channels - monitored by the ACE. The available channel handle values can be found in the - ace_handles.h file located in the .\drivers_config\mss_ace subdirectory. - The channel handle value can also be retrieved through a call to - ACE_get_channel_handle() when the name of the channel is known, or by - iterating though all analog input channel using the ACE_get_first_channel() - and ACE_get_next_channel(). - - @param iterator - The iterator parameter is a pointer to a uint16_t iterator variable. The value - of the iterator variable will be set by the ACE_get_channel_first_flag() - functions so that it can be used in subsequent calls to - ACE_get_channel_next_flag() to keep track of the current location in the list - of flags associated with the analog input channel. - - Example - @code - uint32_t inc; - uint32_t nb_of_flags; - uint16_t flag_iterator; - ace_flag_handle_t current_flag; - ace_channel_handle_t channel_handle; - - nb_of_flags = ACE_get_channel_flag_count(channel_handle); - current_flag = ACE_get_channel_first_flag(channel_handle, &flag_iterator); - - for (inc = 0; inc < nb_of_flags; ++inc) - { - current_flag = ACE_get_channel_next_flag(channel_handle, &flag_iterator); - display_flag_properties(current_flag); - } - @endcode - */ -ace_flag_handle_t -ACE_get_channel_next_flag -( - ace_channel_handle_t channel_handle, - uint16_t * iterator -); - -/*-------------------------------------------------------------------------*//** - This defines the function prototype that must be followed by MSS ACE Post - Processing Engine (PPE) flag handler functions. These functions are registered - with the ACE driver and associated with a particular flag through the - ACE_register_flag_isr() function. The ACE driver will call the flag handler - function when the associated flag is raised. - - Declaring and Implementing PPE Flag Handler Functions - PPE flag handler functions should follow the following prototype: - void my_flag_handler ( ace_flag_handle_t flag_handle ); - The actual name of the PPE flag handler is unimportant. You can use any name of - your choice for the PPE flag handler. - The flag_handle parameter passes the handle of the raised flag to the flag - handler function. - */ -typedef void (*flag_isr_t)( ace_flag_handle_t flag_handle ); - -/*-------------------------------------------------------------------------*//** - The ACE_register_flag_isr() function is used to register a handler function - with the ACE driver. The registered function will be called by the ACE driver - when the associated flag is raised by the ACE post processing engine. - - @param flag_handle - The flag_handle parameter identifies one of the flags generated based on the - value of an analog input channel. The available flag handle values can be - found in the ace_handles.h file located in the .\drivers_config\mss_ace - subdirectory. The flag handle value can also be retrieved through a call to - ACE_get_flag_handle() when the name of the flag is known, or by iterating - though all flags associated with an analog input channel using the - ACE_get_channel_first_flag() and ACE_get_channel_next_flag(). - - @param flag_isr - The flag_isr parameter is a pointer to a flag handler function with the - following prototype: - void handler_function_name(ace_flag_handle_t flag_handle) - The flag handler function is called by the ACE driver as part of the relevant - post processing engine flag interrupt service routine. It does not need to - handle flag interrupt clearing as this is done by the ACE driver. - - - @code - void my_critical_handler( void ); - - void system_init( void ) - { - ace_flag_handle_t flag_handle; - - flag_handle = ACE_get_flag_handle( "MainSupply:CriticalLevel" ); - ACE_register_flag_isr( flag_handle, my_critical_handler ); - ACE_enable_flag_irq( flag_handle ); - } - - void my_critical_handler( ace_flag_handle_t flag_handle ) - { - panic( flag_handle ); - } - - @endcode - */ -void ACE_register_flag_isr -( - ace_flag_handle_t flag_handle, - flag_isr_t flag_isr -); - -/*-------------------------------------------------------------------------*//** - This defines the function prototype that must be followed by MSS ACE Post - Processing Engine (PPE) channel flag handler functions. These functions are - registered with the ACE driver and associated with a particular ADC input - channel through the ACE_register_channel_flags_isr() function. The ACE driver - will call the channel flags handler function when one of the flags for the - associated ADC input channel is raised. - - Declaring and Implementing PPE Channel Flag Handler Functions - PPE channel flag handler functions should follow the following prototype: - void my_channel_flag_handler ( ace_flag_handle_t flag_handle ); - The actual name of the PPE channel flag handler is unimportant. You can use - any name of your choice for the PPE channel flag handler. The flag_handle - parameter passes the handle of the raised flag to the channel flag handler - function. - */ -typedef void (*channel_flag_isr_t)( ace_flag_handle_t flag_handle ); - -/*-------------------------------------------------------------------------*//** - The ACE_register_channel_flags_isr() function is used to register a flag - interrupt handler function with the ACE driver. The registered interrupt - handler will be called by the ACE driver when one of the flag generated based - on the value of the analog input channel identified by the channel handle - passed as parameter is asserted. - - @param channel_handle - The channel_handle parameter identifies one of the analog input channels - monitored by the ACE. The available channel handle values can be found in the - ace_handles.h file located in the ./drivers_config/mss_ace subdirectory. The - channel handle value can also be retrieved through a call to - ACE_get_channel_handle() when the name of the channel is known, or by - iterating though all analog input channel using the ACE_get_first_channel() - and ACE_get_next_channel(). - - @param channel_flag_isr - The channel_flag_isr parameter is pointer to a function taking a flag handle - as parameter. - void handler_function_name(ace_flag_handle_t flag_handle) - The flag handler function is called by the ACE driver as part of the relevant - post processing engine flag interrupt service routine. It does not need to - handle flag interrupt clearing as this is done by the ACE driver. - - Example - The example below demonstrates the use of the ACE_register_channel_flags_isr() - function in a system where the ACE is configured to have an analog input - channels named "MainSupply" with one flag named "Critical" generated based - on the value of "MainSupply" channel. The names "MainSupply" and "Critical" - were user selected in the ACE configurator. - @code - void main_supply_handler (ace_flag_handle_t flag_handle); - - void system_init(void) - { - ACE_register_channel_flag_isr(MainSupply, main_supply_handler); - ACE_enable_channel_flags_irq(MainSupply); - } - - void main_supply_handler (ace_flag_handle_t flag_handle) - { - if (MainSupply_Critical == flag_handle) - { - panic(flag_handle); - } - } - - @endcode -*/ -void ACE_register_channel_flags_isr -( - ace_channel_handle_t channel_handle, - channel_flag_isr_t channel_flag_isr -); - -/*-------------------------------------------------------------------------*//** - This defines the function prototype that must be followed by MSS ACE Post - Processing Engine (PPE) global flag handler functions. These functions are - registered with the ACE driver through the ACE_register_global_flags_isr() - function. The ACE driver will call the global flags handler function when any - flag for any ADC input channel is raised. - - Declaring and Implementing Global Flag Handler Functions - PPE global flag handler functions should follow the following prototype: - void my_global_flag_handler( - ace_flag_handle_t flag_handle, - ace_channel_handle_t channel_handle - ); - The actual name of the PPE global flag handler is unimportant. You can use any - name of your choice for the PPE global flag handler. The flag_handle parameter - passes the handle of the raised flag to the global flag handler function. The - channel_handle parameter passes the handle of the channel for which the flag - was raised to the global flag handler function. - - */ -typedef void (*global_flag_isr_t)( ace_flag_handle_t flag_handle, ace_channel_handle_t channel_handle ); - -/*-------------------------------------------------------------------------*//** - The ACE_register_global_flags_isr() function is used to register a global - flag handler function with the ACE driver. The registered global handler will - be called when any flag interrupt is generated. - - @param global_flag_isr - The global_flag_isr parameter is a pointer to a function taking a flag - handle and channel handle as parameter. - */ -void ACE_register_global_flags_isr -( - global_flag_isr_t global_flag_isr -); - -/** @} */ - -/*=========================================================================*//** - @defgroup group11 Conversion Functions - The following functions are used to convert an ADC sample value to a real - world unit. - @{ - *//*=========================================================================*/ - -/*-------------------------------------------------------------------------*//** - The ACE_convert_adc_input_to_mV() function converts an ADC sample value into - the value in millivolts of the voltage seen at ADC input. It does not account - for prescaling taking place before the ADC hardware input. - - @param channel_handle - The channel_handle parameter identifies one of the analog input channels - monitored by the ACE. The available channel handle values can be found in the - ace_handles.h file located in the ./drivers_config/mss_ace subdirectory. The - channel handle value can also be retrieved through a call to - ACE_get_channel_handle() when the name of the channel is known, or by - iterating though all analog input channel using the ACE_get_first_channel() - and ACE_get_next_channel(). - - @param sample_value - The sample_value parameter is the result of an analog to digital conversion. - - @return - The ACE_convert_adc_input_to_mV() returns the number of millivolts derived - from the ADC sample value passed as parameter. - */ -uint32_t ACE_convert_adc_input_to_mV -( - ace_channel_handle_t channel_handle, - uint16_t sample_value -); - -/*-------------------------------------------------------------------------*//** - The ACE_convert_to_mV() function converts a PPE sample value into milli-Volts. - It handles prescaling adjusments based on ACE configuration for ABPS inputs. - - @param channel_handle - The channel_handle parameter identifies one of the analog input channels - monitored by the ACE. The available channel handle values can be found in the - ace_handles.h file located in the ./drivers_config/mss_ace subdirectory. The - channel handle value can also be retrieved through a call to - ACE_get_channel_handle() when the name of the channel is known, or by - iterating though all analog input channel using the ACE_get_first_channel() - and ACE_get_next_channel(). - - @param sample_value - The sample_value parameter is the result of an analog to digital conversion. - - @return - The ACE_convert_to_mV() returns the number of millivolts derived from the - PPE sample value passed as parameter. The returned value can be either - positive or negative since prescaling is accounted for in the conversion. - */ -int32_t ACE_convert_to_mV -( - ace_channel_handle_t channel_handle, - uint16_t sample_value -); - -/*-------------------------------------------------------------------------*//** - The ACE_convert_to_mA() function converts a PPE sample value into milli-Amps. - The result of the conversion is only meaningful if the PPE sample value - results from the conversion of a current monitor input. - - @param channel_handle - The channel_handle parameter identifies one of the analog input channels - monitored by the ACE. The available channel handle values can be found in the - ace_handles.h file located in the ./drivers_config/mss_ace subdirectory. The - channel handle value can also be retrieved through a call to - ACE_get_channel_handle() when the name of the channel is known, or by - iterating though all analog input channel using the ACE_get_first_channel() - and ACE_get_next_channel(). - - @param sample_value - The sample_value parameter is the result of an analog to digital conversion - of the voltage generated by a current monitor analog block. - - @return - The ACE_convert_to_mA() returns the number of milliamps derived from the - PPE sample value passed as parameter. - */ -uint32_t ACE_convert_to_mA -( - ace_channel_handle_t channel_handle, - uint16_t sample_value -); - -/*-------------------------------------------------------------------------*//** - The ACE_convert_to_Kelvin() function converts a PPE sample value into degrees - Kelvin. The result of the conversion is only meaningful if the PPE sample value - results from the conversion of a temperature monitor input. - - @param channel_handle - The channel_handle parameter identifies one of the analog input channels - monitored by the ACE. The available channel handle values can be found in the - ace_handles.h file located in the ./drivers_config/mss_ace subdirectory. The - channel handle value can also be retrieved through a call to - ACE_get_channel_handle() when the name of the channel is known, or by - iterating though all analog input channel using the ACE_get_first_channel() - and ACE_get_next_channel(). - - @param sample_value - The sample_value parameter is the result of an analog to digital conversion - of the voltage generated by a temperature monitor analog block. - - @return - The ACE_convert_to_Kelvin() returns the number of degrees Kelvin derived - from the PPE sample value passed as parameter. - */ -uint32_t ACE_convert_to_Kelvin -( - ace_channel_handle_t channel_handle, - uint16_t sample_value -); - -/*-------------------------------------------------------------------------*//** - The ACE_convert_to_Celsius() function converts a PPE sample value into tenths - of degrees Celsius. The result of the conversion is only meaningful if the PPE - sample value results from the conversion of a temperature monitor input. - - @param channel_handle - The channel_handle parameter identifies one of the analog input channels - monitored by the ACE. The available channel handle values can be found in the - ace_handles.h file located in the ./drivers_config/mss_ace subdirectory. The - channel handle value can also be retrieved through a call to - ACE_get_channel_handle() when the name of the channel is known, or by - iterating though all analog input channel using the ACE_get_first_channel() - and ACE_get_next_channel(). - - @param sample_value - The sample_value parameter is the result of an analog to digital conversion - of the voltage generated by a temperature monitor analog block. - - @return - The ACE_convert_to_Celsius() returns the number of tenths of degrees Celsius - derived from the PPE sample value passed as parameter. - */ -int32_t ACE_convert_to_Celsius -( - ace_channel_handle_t channel_handle, - uint16_t sample_value -); - -/*-------------------------------------------------------------------------*//** - The ACE_convert_to_Fahrenheit() function converts a PPE sample value into - degrees Fahrenheit. The result of the conversion is only meaningful if the PPE - sample value results from the conversion of a temperature monitor input. - - @param channel_handle - The channel_handle parameter identifies one of the analog input channels - monitored by the ACE. The available channel handle values can be found in the - ace_handles.h file located in the ./drivers_config/mss_ace subdirectory. The - channel handle value can also be retrieved through a call to - ACE_get_channel_handle() when the name of the channel is known, or by - iterating though all analog input channel using the ACE_get_first_channel() - and ACE_get_next_channel(). - - @param sample_value - The sample_value parameter is the result of an analog to digital conversion - of the voltage generated by a temperature monitor analog block. - - @return - The ACE_convert_to_Fahrenheit() returns the number of degrees Fahrenheit - derived from the PPE sample value passed as parameter. - */ -int32_t ACE_convert_to_Fahrenheit -( - ace_channel_handle_t channel_handle, - uint16_t sample_value -); - -/*-------------------------------------------------------------------------*//** - The ACE_convert_mV_to_adc_value() function converts a voltage value given in - milli-Volts into the ADC sample value that would result from sampling this - voltage value on the analog input channel specified as parameter. - This function is intended for use when directly controlling the ADC, not when - using samples read from the PPE. It does not account for prescaling taking - place before the ADC hardware input. - - @param channel_handle - The channel_handle parameter identifies one of the analog input channels - monitored by the ACE. The available channel handle values can be found in the - ace_handles.h file located in the ./drivers_config/mss_ace subdirectory. The - channel handle value can also be retrieved through a call to - ACE_get_channel_handle() when the name of the channel is known, or by - iterating though all analog input channel using the ACE_get_first_channel() - and ACE_get_next_channel(). - - @param voltage - The voltage parameter is the milli-Volts voltage value for which we want this - function to return the associated ADC sample result value. - - @return - The ACE_convert_mV_to_adc_value() returns the ADC sample value that would be - produced if the analog input channel identified by channel_handle was set to - the voltage value passed as second parameter. - */ -uint16_t ACE_convert_mV_to_adc_value -( - ace_channel_handle_t channel_handle, - uint32_t voltage -); - -/*-------------------------------------------------------------------------*//** - The ACE_convert_from_mV() function converts a voltage value given in - milli-Volts into the PPE sample value that would result from sampling this - voltage value on the analog input channel specified as parameter. - This function handles prescaling adjusments based on ACE configuration for - ABPS inputs. - - @param channel_handle - The channel_handle parameter identifies one of the analog input channels - monitored by the ACE. The available channel handle values can be found in the - ace_handles.h file located in the ./drivers_config/mss_ace subdirectory. The - channel handle value can also be retrieved through a call to - ACE_get_channel_handle() when the name of the channel is known, or by - iterating though all analog input channel using the ACE_get_first_channel() - and ACE_get_next_channel(). - - @param voltage - The voltage parameter is the milli-Volts voltage value for which we want this - function to return the associated PPE sample result value. - - @return - The ACE_convert_from_mV() returns the PPE sample value that would be produced - if the analog input channel identified by channel_handle was set to the - voltage value passed as second parameter. - */ -uint16_t ACE_convert_from_mV -( - ace_channel_handle_t channel_handle, - int32_t voltage -); - -/*-------------------------------------------------------------------------*//** - The ACE_convert_from_mA() function converts a current value given in - milli-Amps into the PPE sample value that would result from sampling this - current value on the analog input channel specified as parameter. - The result of the conversion is only meaningful if the analog input channel - specified as parameter is configured as a current monitoring channel. - - @param channel_handle - The channel_handle parameter identifies one of the analog input channels - monitored by the ACE. The available channel handle values can be found in the - ace_handles.h file located in the ./drivers_config/mss_ace subdirectory. The - channel handle value can also be retrieved through a call to - ACE_get_channel_handle() when the name of the channel is known, or by - iterating though all analog input channel using the ACE_get_first_channel() - and ACE_get_next_channel(). - - @param current - The current parameter is the milli-Amps current value for which we want this - function to return the associated PPE sample result value. - - @return - The ACE_convert_from_mA() returns the PPE sample value that would be produced - if the analog input channel identified by channel_handle was set to the - current value passed as second parameter. - */ -uint16_t ACE_convert_from_mA -( - ace_channel_handle_t channel_handle, - uint32_t current -); - -/*-------------------------------------------------------------------------*//** - The ACE_convert_from_Kelvin() function converts a temperature value given in - degrees Kelvin into the PPE sample value that would result from sampling this - temperature value on the analog input channel specified as parameter. - The result of the conversion is only meaningful if the analog input channel - specified as parameter is configured as a temperature monitoring channel. - - @param channel_handle - The channel_handle parameter identifies one of the analog input channels - monitored by the ACE. The available channel handle values can be found in the - ace_handles.h file located in the ./drivers_config/mss_ace subdirectory. The - channel handle value can also be retrieved through a call to - ACE_get_channel_handle() when the name of the channel is known, or by - iterating though all analog input channel using the ACE_get_first_channel() - and ACE_get_next_channel(). - - @param temperature - The temperature parameter is the degrees Kelvin temperature value for which - we want this function to return the associated PPE sample result value. - - @return - The ACE_convert_from_Kelvin() returns the PPE sample value that would be - produced if the analog input channel identified by channel_handle was set to - the temperature value passed as second parameter. - */ -uint16_t ACE_convert_from_Kelvin -( - ace_channel_handle_t channel_handle, - uint32_t temperature -); - -/*-------------------------------------------------------------------------*//** - The ACE_convert_from_Celsius() function converts a temperature value given in - degrees Celsius into the PPE sample value that would result from sampling this - temperature value on the analog input channel specified as parameter. - The result of the conversion is only meaningful if the analog input channel - specified as parameter is configured as a temperature monitoring channel. - - @param channel_handle - The channel_handle parameter identifies one of the analog input channels - monitored by the ACE. The available channel handle values can be found in the - ace_handles.h file located in the ./drivers_config/mss_ace subdirectory. The - channel handle value can also be retrieved through a call to - ACE_get_channel_handle() when the name of the channel is known, or by - iterating though all analog input channel using the ACE_get_first_channel() - and ACE_get_next_channel(). - - @param temperature - The temperature parameter is the degrees Celsius temperature value for which - we want this function to return the associated PPE sample result value. - - @return - The ACE_convert_from_Celsius() returns the PPE sample value that would be - produced if the analog input channel identified by channel_handle was set to - the temperature value passed as second parameter. - */ -uint16_t ACE_convert_from_Celsius -( - ace_channel_handle_t channel_handle, - int32_t temperature -); - -/*-------------------------------------------------------------------------*//** - The ACE_convert_from_Fahrenheit() function converts a temperature value given - in degrees Fahrenheit into the PPE sample value that would result from sampling - this temperature value on the analog input channel specified as parameter. - The result of the conversion is only meaningful if the analog input channel - specified as parameter is configured as a temperature monitoring channel. - - @param channel_handle - The channel_handle parameter identifies one of the analog input channels - monitored by the ACE. The available channel handle values can be found in the - ace_handles.h file located in the ./drivers_config/mss_ace subdirectory. The - channel handle value can also be retrieved through a call to - ACE_get_channel_handle() when the name of the channel is known, or by - iterating though all analog input channel using the ACE_get_first_channel() - and ACE_get_next_channel(). - - @param temperature - The temperature parameter is the degrees Fahrenheit temperature value for - which we want this function to return the associated PPE sample result value. - - @return - The ACE_convert_from_Fahrenheit() returns the PPE sample value that would be - produced if the analog input channel identified by channel_handle was set to - the temperature value passed as second parameter. - */ -uint16_t ACE_convert_from_Fahrenheit -( - ace_channel_handle_t channel_handle, - int32_t temperature -); - -/*-------------------------------------------------------------------------*//** - The ACE_translate_pdma_value() function translates PDMA sampling values, - received from the ACE via PDMA transfers, into input channel ID and PPE - sample value. - The PDMA sampling values are generated by the ACE as a result of selecting - "Send result to DMA" in the ACE configurator analog input configuration. The - PDMA sampling values can be either raw ADC values, filtered values or the - result of a linear transformation. - The PDMA sampling values are obtained by configuring the PDMA controller to - transfer data from the ACE into a memory buffer. The ACE_translate_pdma_value() - function is used to interpret the content of that memory buffer. - - Please note that the translation of PDMA data containing raw ADC values from - ABPS inputs will result in sample values with an unexpected polarity. - The returned sample value will have the opposite polarity to the actual analog - value seen on the ABPS input. This is due to the internal characteristics of - the analog front end that are normally hidden by the PPE processing of ADC raw - samples. The translation of raw ADC values from analog inputs other than ABPS - inputs will result in correct sample values. - - @param pdma_value - The pdma_value parameter is a 32-bit value received from the ACE through a - peripheral DMA transfer. - - @param channel_id - The channel_id parameter is a pointer to an ADC channel ID variable. It is - used to return the ID of the ADC channel from which the PPE sample value - was generated from. This parameter can be set to zero if retrieving the - channel ID is not required. - - @return - The ACE_translate_pdma_value() returns the PPE sample value extracted from - the PDMA sampling value. - - Example: - @code - uint16_t ppe_value; - uint16_t pdma_value; - adc_channel_id_t channel_id; - ace_channel_handle_t channel_handle; - - pdma_value = get_next_pdma_ace_sample(); - ppe_value = ACE_translate_pdma_value(pdma_value, &channel_id); - channel_handle = ACE_get_input_channel_handle(channel_id); - if (channel_handle != INVALID_CHANNEL_HANDLE) - { - display_value(channel_handle, ppe_value); - } - @endcode - - */ -uint16_t ACE_translate_pdma_value -( - uint32_t pdma_value, - adc_channel_id_t * channel_id -); - -/** @} */ - -/*=========================================================================*//** - @defgroup group12 Dynamic Linear Transform Control Functions - The following functions are used to dynamically adjust the linear transform - applied to analog input samples by the post processing engine: - - ACE_get_default_m_factor() - - ACE_get_default_c_offset() - - ACE_set_linear_transform() - The post processing engine performs a linear transform on analog input samples - obtained from the sample sequencing engine. The main purpose of this linear - transform is to apply part specific factory calibration to the analog samples - in order to achieve high accuracy. A second user specified linear transform - can also be optionally applied to the analog samples. This second linear - transform can be used to adjust for board level calibration or application - specific tuning. The functions described in this section apply to the user - defined transform. Factory calibration will not be affected by the use of the - ACE_set_linear_transform() function. - Note: - The post processing engine actually only performs one single linear - transform on analog samples. This transform takes into account factory - calibration and the user defined transform. The applied y = m.x + c - transform uses an m factor equal to m1.m2.mext and c offset equal to - (m2.c1.mext) + (c2.mext) where m1 and c1 are the factory calibration factor - and offset; m2 and c2 are the user defined transform factor and offset; and - mext is a factory calibration factor depending on the reference voltage - used by the ADC generating the sample. - @{ - *//*=========================================================================*/ - - -/*------------------------------------------------------------------------*//** - The ACE_get_default_m_factor() function retrieves the default value of the m - factor of the user defined linear transform applied by the post processing - engine to analog samples. The user defined linear transform m factor default - value is selected in the ACE configurator tool. - - @param channel_handle - The channel_handle parameter identifies one of the analog input channels - monitored by the ACE. The available channel handle values can be found in - the ace_handles.h file located in the .\drivers_config\mss_ace - subdirectory. The channel handle value can also be retrieved through a call - to ACE_get_channel_handle() when the name of the channel is known, or by - iterating though all analog input channel using the ACE_get_first_channel() - and ACE_get_next_channel(). - - @return - The ACE_get_default_m_factor() function returns the user transform m factor - default value. It is a signed 16-bit number representing a factor in the - range -2 to +1.99993896484375. The value of the m factor is obtained by - multiplying the return value’s absolute value by 2-14. - */ -int16_t ACE_get_default_m_factor -( - ace_channel_handle_t channel_handle -); - -/*------------------------------------------------------------------------*//** - The ACE_get_default_c_offset() function retrieves the default value of the c - offset of the user defined linear transform applied by the post processing - engine to analog samples. The user defined linear transform c offset default - value is selected in the ACE configurator tool. - - @param channel_handle - The channel_handle parameter identifies one of the analog input channels - monitored by the ACE. The available channel handle values can be found in - the ace_handles.h file located in the .\drivers_config\mss_ace - subdirectory. The channel handle value can also be retrieved through a call - to ACE_get_channel_handle() when the name of the channel is known, or by - iterating though all analog input channel using the ACE_get_first_channel() - and ACE_get_next_channel(). - - @return - The ACE_get_default_c_offset() function returns the user linear transform’s - c offset default value. It is a signed 16-bit number representing a factor - in the range -2 to +1.99993896484375. The value of the c offset is obtained - by multiplying the return value’s absolute value by 2-14. - */ -int16_t ACE_get_default_c_offset -( - ace_channel_handle_t channel_handle -); - -/*------------------------------------------------------------------------*//** - The ACE_set_linear_transform() function allows adjusting the user defined - linear transform applied to analog input samples by the post processing - engine. The linear transform is of the form y = m.x + b where the m factor - and c offset are in the range -2 to +1.99993896484375. - - @param channel_handle - The channel_handle parameter identifies one of the analog input channels - monitored by the ACE. The available channel handle values can be found in - the ace_handles.h file located in the .\drivers_config\mss_ace - subdirectory. The channel handle value can also be retrieved through a call - to ACE_get_channel_handle() when the name of the channel is known, or by - iterating though all analog input channel using the ACE_get_first_channel() - and ACE_get_next_channel(). - - @param m2 - The m2 parameter specifies the user defined transform’s m factor. It is a - signed 16-bit number representing a factor in the range -2 to - +1.99993896484375. The value of the m2 factor is obtained by multiplying the - parameter’s absolute value by 2^-14. For example, a value of 0x7000 - represents a 1.75 factor and a value of 0xE000 represents a -0.5 factor. - - @param c2 - The c2 parameter specifies the user defined transform’s c offset. It is a - signed 16-bit number representing an offset in the range -2 to - +1.99993896484375. The value of the c2 offset is obtained by multiplying the - parameter’s absolute value by 2^-14. For example, a value of 0x1000 represents - a 0.25 offset and a value of 0xB000 represents a -1.25 offset. - - @code - void reset_to_default(ace_channel_handle_t channel_handle) - { - int16_t m; - int16_t c; - - m = ACE_get_default_m_factor(channel_handle); - c = ACE_get_default_c_offset(channel_handle); - ACE_set_linear_transform(channel_handle, m, c); - } - @endcode - */ -void ACE_set_linear_transform -( - ace_channel_handle_t channel_handle, - int16_t m2, - int16_t c2 -); - -/** @} */ - -#ifdef __cplusplus -} -#endif - -#endif /* __MSS_ACE_H_ */ diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_ace/mss_ace_configurator.h b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_ace/mss_ace_configurator.h deleted file mode 100644 index 2621f5375..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_ace/mss_ace_configurator.h +++ /dev/null @@ -1,622 +0,0 @@ -/******************************************************************************* - * (c) Copyright 2009 Actel Corporation. All rights reserved. - * - * SVN $Revision: 2841 $ - * SVN $Date: 2010-07-20 18:10:00 +0100 (Tue, 20 Jul 2010) $ - */ - -/*=========================================================================*//** - @mainpage ACE Configurator data provided to ACE Driver. - - @section intro_sec Introduction - This file contains the definition of data structures used by the ACE - Configurator software tool for sharing information about the ACE configuration - with the ACE driver. It also contains the API for accessor functions used by - the ACE driver to extract relevant information from these data structures. - *//*=========================================================================*/ -#ifndef __MSS_ACE_CONFIGURATOR_H_ -#define __MSS_ACE_CONFIGURATOR_H_ - -#include "mss_ace.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/*-------------------------------------------------------------------------*//** - Post Processing Engine (PPE) flags IDs. - */ -typedef enum -{ - PPE_FLAGS0_0 = 0, - PPE_FLAGS0_1 = 1, - PPE_FLAGS0_2 = 2, - PPE_FLAGS0_3 = 3, - PPE_FLAGS0_4 = 4, - PPE_FLAGS0_5 = 5, - PPE_FLAGS0_6 = 6, - PPE_FLAGS0_7 = 7, - PPE_FLAGS0_8 = 8, - PPE_FLAGS0_9 = 9, - PPE_FLAGS0_10 = 10, - PPE_FLAGS0_11 = 11, - PPE_FLAGS0_12 = 12, - PPE_FLAGS0_13 = 13, - PPE_FLAGS0_14 = 14, - PPE_FLAGS0_15 = 15, - PPE_FLAGS0_16 = 16, - PPE_FLAGS0_17 = 17, - PPE_FLAGS0_18 = 18, - PPE_FLAGS0_19 = 19, - PPE_FLAGS0_20 = 20, - PPE_FLAGS0_21 = 21, - PPE_FLAGS0_22 = 22, - PPE_FLAGS0_23 = 23, - PPE_FLAGS0_24 = 24, - PPE_FLAGS0_25 = 25, - PPE_FLAGS0_26 = 26, - PPE_FLAGS0_27 = 27, - PPE_FLAGS0_28 = 28, - PPE_FLAGS0_29 = 29, - PPE_FLAGS0_30 = 30, - PPE_FLAGS0_31 = 31, - PPE_FLAGS1_0 = 32, - PPE_FLAGS1_1 = 33, - PPE_FLAGS1_2 = 34, - PPE_FLAGS1_3 = 35, - PPE_FLAGS1_4 = 36, - PPE_FLAGS1_5 = 37, - PPE_FLAGS1_6 = 38, - PPE_FLAGS1_7 = 39, - PPE_FLAGS1_8 = 40, - PPE_FLAGS1_9 = 41, - PPE_FLAGS1_10 = 42, - PPE_FLAGS1_11 = 43, - PPE_FLAGS1_12 = 44, - PPE_FLAGS1_13 = 45, - PPE_FLAGS1_14 = 46, - PPE_FLAGS1_15 = 47, - PPE_FLAGS1_16 = 48, - PPE_FLAGS1_17 = 49, - PPE_FLAGS1_18 = 50, - PPE_FLAGS1_19 = 51, - PPE_FLAGS1_20 = 52, - PPE_FLAGS1_21 = 53, - PPE_FLAGS1_22 = 54, - PPE_FLAGS1_23 = 55, - PPE_FLAGS1_24 = 56, - PPE_FLAGS1_25 = 57, - PPE_FLAGS1_26 = 58, - PPE_FLAGS1_27 = 59, - PPE_FLAGS1_28 = 60, - PPE_FLAGS1_29 = 61, - PPE_FLAGS1_30 = 62, - PPE_FLAGS1_31 = 63, - PPE_FLAGS2_0 = 64, - PPE_FLAGS2_1 = 65, - PPE_FLAGS2_2 = 66, - PPE_FLAGS2_3 = 67, - PPE_FLAGS2_4 = 68, - PPE_FLAGS2_5 = 69, - PPE_FLAGS2_6 = 70, - PPE_FLAGS2_7 = 71, - PPE_FLAGS2_8 = 72, - PPE_FLAGS2_9 = 73, - PPE_FLAGS2_10 = 74, - PPE_FLAGS2_11 = 75, - PPE_FLAGS2_12 = 76, - PPE_FLAGS2_13 = 77, - PPE_FLAGS2_14 = 78, - PPE_FLAGS2_15 = 79, - PPE_FLAGS2_16 = 80, - PPE_FLAGS2_17 = 81, - PPE_FLAGS2_18 = 82, - PPE_FLAGS2_19 = 83, - PPE_FLAGS2_20 = 84, - PPE_FLAGS2_21 = 85, - PPE_FLAGS2_22 = 86, - PPE_FLAGS2_23 = 87, - PPE_FLAGS2_24 = 88, - PPE_FLAGS2_25 = 89, - PPE_FLAGS2_26 = 90, - PPE_FLAGS2_27 = 91, - PPE_FLAGS2_28 = 92, - PPE_FLAGS2_29 = 93, - PPE_FLAGS2_30 = 94, - PPE_FLAGS2_31 = 95, - PPE_FLAGS3_0 = 96, - PPE_FLAGS3_1 = 97, - PPE_FLAGS3_2 = 98, - PPE_FLAGS3_3 = 99, - PPE_FLAGS3_4 = 100, - PPE_FLAGS3_5 = 101, - PPE_FLAGS3_6 = 102, - PPE_FLAGS3_7 = 103, - PPE_FLAGS3_8 = 104, - PPE_FLAGS3_9 = 105, - PPE_FLAGS3_10 = 106, - PPE_FLAGS3_11 = 107, - PPE_FLAGS3_12 = 108, - PPE_FLAGS3_13 = 109, - PPE_FLAGS3_14 = 110, - PPE_FLAGS3_15 = 111, - PPE_FLAGS3_16 = 112, - PPE_FLAGS3_17 = 113, - PPE_FLAGS3_18 = 114, - PPE_FLAGS3_19 = 115, - PPE_FLAGS3_20 = 116, - PPE_FLAGS3_21 = 117, - PPE_FLAGS3_22 = 118, - PPE_FLAGS3_23 = 119, - PPE_FLAGS3_24 = 120, - PPE_FLAGS3_25 = 121, - PPE_FLAGS3_26 = 122, - PPE_FLAGS3_27 = 123, - PPE_FLAGS3_28 = 124, - PPE_FLAGS3_29 = 125, - PPE_FLAGS3_30 = 126, - PPE_FLAGS3_31 = 127, - PPE_SFFLAGS_0 = 128, - PPE_SFFLAGS_1 = 129, - PPE_SFFLAGS_2 = 130, - PPE_SFFLAGS_3 = 131, - PPE_SFFLAGS_4 = 132, - PPE_SFFLAGS_5 = 133, - PPE_SFFLAGS_6 = 134, - PPE_SFFLAGS_7 = 135, - PPE_SFFLAGS_8 = 136, - PPE_SFFLAGS_9 = 137, - PPE_SFFLAGS_10 = 138, - PPE_SFFLAGS_11 = 139, - PPE_SFFLAGS_12 = 140, - PPE_SFFLAGS_13 = 141, - PPE_SFFLAGS_14 = 142, - PPE_SFFLAGS_15 = 143, - PPE_SFFLAGS_16 = 144, - PPE_SFFLAGS_17 = 145, - PPE_SFFLAGS_18 = 146, - PPE_SFFLAGS_19 = 147, - PPE_SFFLAGS_20 = 148, - PPE_SFFLAGS_21 = 149, - PPE_SFFLAGS_22 = 150, - PPE_SFFLAGS_23 = 151, - PPE_SFFLAGS_24 = 152, - PPE_SFFLAGS_25 = 153, - PPE_SFFLAGS_26 = 154, - PPE_SFFLAGS_27 = 155, - PPE_SFFLAGS_28 = 156, - PPE_SFFLAGS_29 = 157, - PPE_SFFLAGS_30 = 158, - PPE_SFFLAGS_31 = 159, - NB_OF_PPE_FLAGS = 160 -} ppe_flag_id_t; - -/*-------------------------------------------------------------------------*//** - Flag types. - The following defines are used to indicate the type of flag selected in the - ACE configurator. - */ -/** - A flag configured as BASIC_THRESHOLD_OVER will be asserted when the value of - the input channel exceeds the value of the flag threshold. The flag will be - de-asserted once the value of the input channel falls back under the threshold - value. No hysteresis or state filtering is applied to the flag. - */ -#define BASIC_THRESHOLD_OVER 0u - -/** - A flag configured as BASIC_THRESHOLD_UNDER will be asserted when the value of - the input channel falls under the value of the flag threshold. The flag will be - de-asserted once the value of the input channel exceeds the threshold value. - No hysteresis or state filtering is applied to the flag. - */ -#define BASIC_THRESHOLD_UNDER 1u - -/** - A flag configured as STATE_FILTERED_OVER will be asserted when n consecutive - samples of the analog input are seen to exceed the value of the flag threshold, - where n is the number selected in the "assert samples" option of the ACE - configuration softwaretool flag's configuration. - The flag will be de-asserted once m consecutive samples as seen below the flag - threshold value, where m is the number selected in the "deassert samples" - option of the flag's configuration user interface. - */ -#define STATE_FILTERED_OVER 2u - -/** - A flag configured as STATE_FILTERED_UNDER will be asserted when n consecutive - samples of the analog input are seen below the value of the flag threshold, - where n is the number selected in the "assert samples" option of the ACE - configuration softwaretool flag's configuration. - The flag will be de-asserted once m consecutive samples as seen to exceed the - flag threshold value, where m is the number selected in the "deassert samples" - option of the flag's configuration user interface. - */ -#define STATE_FILTERED_UNDER 3u - -/** - A flag configured as DUAL_HYSTERESIS_OVER will be asserted when the value - of the input channel exceeds the threshold value plus the hysteresis value. - The flag will be deasserted when the value of the input channel falls under the - threshold value minus the hysteresis value. - */ -#define DUAL_HYSTERESIS_OVER 4u - -/** - A flag configured as DUAL_HYSTERESIS_UNDER will be asserted when the value - of the input channel falls under the threshold value minus the hysteresis value. - The flag will be deasserted when the value of the input channel exceeds the - threshold value plus the hysteresis value. - */ -#define DUAL_HYSTERESIS_UNDER 5u - -/** - A flag configured as IPMI_HYSTERESIS_OVER will be asserted when the value - of the input channel exceeds the threshold value. The flag will be deasserted - when the value of the input channel falls under the threshold value minus the - hysteresis value. - */ -#define IPMI_HYSTERESIS_OVER 6u - -/** - A flag configured as IPMI_HYSTERESIS_UNDER will be asserted when the value - of the input channel falls under the threshold value. The flag will be - deasserted when the value of the input channel exceeds the threshold value - plus the hysteresis value. - */ -#define IPMI_HYSTERESIS_UNDER 7u - -/*-------------------------------------------------------------------------*//** - State filtered flag configuration. - */ -typedef struct __state_filtering_cfg -{ - /** - Number of consecutive samples required for flag assertion. - */ - uint8_t assert_samples; - - /** - Number of consecutive samples required for flag deassertion. - */ - uint8_t deassert_samples; -} state_filtering_cfg_t; - -/*-------------------------------------------------------------------------*//** - Post Processing Engine generated flag descriptor. - */ -typedef struct -{ - /** - Pointer to a zero-terminated string identifying the flag described by this - structure. This unique flag name is the name selected in the ACE configurator - software tool when creating a flag. - The flag unique name contains both the name of the monitored input channel - and the name of the flag generated based the level of that input separated - by ":". For example, the unique name for the flag called "CriticalOver" - raised when the input channel called "MainSupply" reaches a critical level - would be named "MainSupply:CriticalOver". - */ - const uint8_t * p_sz_flag_name; - - /** - The flag_id element identifies which PPE hardware flag will be asserted - when the flag conditions are found to be met by the Post Processing Engine. - This flag_id is typically used by the ACE driver to determine which ACE - register is used to enable, disable and clear interrupts on the associated - flag. - */ - ppe_flag_id_t flag_id; - - /** - The flag_type element specifies the type of the described flag. It is - specified using one of the following: - - BASIC_THRESHOLD_OVER - - BASIC_THRESHOLD_UNDER - - STATE_FILTERED_OVER - - STATE_FILTERED_UNDER - - DUAL_HYSTERESIS_OVER - - DUAL_HYSTERESIS_UNDER - - IPMI_HYSTERESIS_OVER - - IPMI_HYSTERESIS_UNDER - */ - uint8_t flag_type; - - /** - PPE RAM offset of flag threshold level. - This is the 32-bit word offset within the Post Processing Engine RAM where - the threshold associated with this flag is stored. This is used to allow - the ACE driver dynamically modifying the threshold beyond which a flag is - asserted. - In the case of hysteresis flags, threshold_ppe_offset indicates the - start location of two consecutive PPE RAM words containing the ADC value - of the hysteresis low limit followed by the ADC value for the high - hysteresis limit. - */ - uint16_t threshold_ppe_offset; - - /** - The default_threshold element specifies the value of the flag's threshold - selected in the ACE Configurator. It is the ADC value for which the flag - would be raised if hysteresis was not applied. - */ - uint16_t default_threshold; - - /** - The flag_properties takes a different meaning depending whether the flag is - an hysteresis flag or a state filtered flag. - - Hysteresis flags: - The flag_properties element specifies the ADC value to be applied as - hysteresis to the threshold value that was selected in the ACE Configurator. - A non-zero value indicates that an hysteresis must be applied and that - threshold_ppe_offset refers to the first of the two ADC values defining - the hysteresis applied to the input signal. - - State filtered flags: - The flag_properties element specifies the number of consecutive samples that - must be over or under the threshold value for the flag state to change. - */ - uint16_t flag_properties; - - /** - The channel_handle element specifies the monitored analog input channel. - It can be used as parameter to a call to function ACE_get_ppe_sample() in - order to read the current value of the analog input channel which caused - the flag described by this structure to be raised. - */ - ace_channel_handle_t channel_handle; - -} ppe_flag_desc_t; - -/*-------------------------------------------------------------------------*//** - The ace_procedure_desc_t structure is used as a procedure descriptor. It - contains all information required by the ACE driver to use and manage an ACE - procedure that was created using the ACE Configurator software tool. - */ -typedef struct -{ - /** - Pointer to a zero-terminated string identifying an ACE procedure. - This procedure name is the one selected when created procedures using the - ACE Configurator software tool. - */ - const uint8_t * p_sz_proc_name; - - /** - Sample Sequencing Engine procedure loop start program counter value. - */ - uint16_t sse_loop_pc; - - /** - Sample Sequencing Engine microcode offset. - This is the 16-bit instruction offset from which the SSE microcode for the - procedure must be loaded at into the ACE SSE RAM. - This is also the value that must be writtent into one of the ACE's SSE program - counter registers in order to start the procedure after having loaded its - microcode into SSE RAM. The actual program counter register written depends - on the analog module used by the procedure. It is determined by the value - of this structure's sse_pc_id element. - */ - uint16_t sse_load_offset; - - /** - Sample Sequencing Engine microcode length. - This is the number of 16-bit SSE instructions that must be loaded into - SSE RAM in order to load the procedure into the ACE. - */ - uint16_t sse_ucode_length; - - /** - Pointer to ucode. - */ - const uint16_t * sse_ucode; - - /** - SSE program counter ID. - This value identifies whether the procedure is used to control analog - module 0, 1 or 2. It is used to know which SSE program counter should - be set when starting the procedure. - */ - uint8_t sse_pc_id; -} ace_procedure_desc_t; - -/*-------------------------------------------------------------------------*//** - The ace_channel_desc_t structure is used as an analog input channel - descriptor. It contains the name of a channel as selected in the ACE - Configurator software tool and the identifier used to identify the ADC channel - to which the analog input signal is connected. - */ -typedef struct -{ - /** - Analog input signal name as selected in the ACE Configurator software tool. - */ - const uint8_t * p_sz_channel_name; - - /** - Analog block input channel connected to the input signal. - */ - adc_channel_id_t signal_id; - - /** - Offset into Post Processing Engine RAM where the result of post processing - on sample for the signal will be stored. - */ - uint16_t signal_ppe_offset; - - /** - Number of PPE generated flags associated with the analog input channel - described by this structure. The nb_of_flags specifies the number of items - found in the p_flags_array array. - */ - uint16_t nb_of_flags; - - /** - The p_flags_array element is a pointer to an array of indexes into the - g_ppe_flags_desc_table flag descriptors table. The array it points to - lists the flags generated base don the value of the analog input channel - described by this structure. - */ - const uint16_t * p_flags_array; - -} ace_channel_desc_t; - -/*-------------------------------------------------------------------------*//** - struct ace_config_desc_t - The ace_config_descr_t structure is used to provide information about the - configuration of the ACE and analog block. A single instance of this structure - is intended to be used to inform the ACE driver of the ACE configuration - seleted using the ACE Configurator software tool and programmed into the ACE - hardware at system boot time. - */ -typedef struct -{ - /*-------------------------------------------------------------------------- - * Procedures information - */ - /** - Procedure descriptors table location. - This is a pointer to an array of procedure descriptors. - @see nb_of_procedures - */ - ace_procedure_desc_t * proc_descr_table; - - /** - Total number of available procedures. This indicates the number of elements - of the procedure descriptor array. - @see proc_descr_table - */ - uint16_t nb_of_procedures; - - /** - Number of procedures loaded into the ACE hardware at system boot time. - @see boot_loaded_proc_idx_list - */ - uint16_t nb_boot_loaded_proc; - /** - Pointer to list of procedures loaded into the ACE hardware at system boot - time. That list contains the indexes into the procedure descriptors array - of the procedures loaded into the ACE hardware. - @see nb_boot_loaded_proc - */ - uint16_t * boot_loaded_proc_idx_list; - - /*-------------------------------------------------------------------------- - * Analog to Digital Converter signals - */ - /** - Total number of configured analog input signals. - This is the number of analog input signals that were added to the ACE - configuration using the ACE Configurator software tool. It is also the - number of elements in the signal descriptor table pointed to by this - structure's signals_descr_table field. - @see signals_descr_table - */ - uint16_t nb_of_signals; - - /** - Signal descriptors table location. - This is a pointer to an array of signal descriptors describing every - configured analog input signals. - @see nb_of_signals - */ - ace_channel_desc_t * signals_descr_table; - - /*-------------------------------------------------------------------------- - * One Bit DACs - */ - /** - One Bit DAC (OBD) names as specified in ACE configurator software tool. - This array is indexed on the analog block number. i.e. sz_obd_names[0] - contains the name used to identify the OBD contained in analog module 0. - A value of 0 in this array indicates that no name was assigned to the - associated OBD. - */ - const uint8_t * sz_obd_names[3]; - - /*-------------------------------------------------------------------------- - * PPE generated flags - */ - /** - Flag descriptors array location. - This is a pointer to an array of ppe_flag_desc_t structures describing the - properties of each of the flags generated by the Post Processing Engine. - The size of that array is specified by the nb_of_flags element of this - structure. - */ - ppe_flag_desc_t * flags_descr_table; - - /** - Number of flags used in the ACE Configurator generated configuration. - */ - uint8_t nb_of_flags; - - /*-------------------------------------------------------------------------- - * Analog comparators - */ - /** - * - */ -} ace_config_desc_t; - - -/*-------------------------------------------------------------------------*//** - The ace_adc_config_t data structure is used by the ACE configurator to inform - the ACE driver of an analog to digital converter's configuration. - */ -typedef struct -{ - /** - ADC resolution. Values can be 256, 1024 or 4096 depending whether the ADC - is configured for 8, 10 or 12 bits. - */ - uint16_t adc_resolution; - - /** - VA_REF value in milli-Volts. This should be set to 2560 if internal VAREF - is used. - */ - uint16_t va_ref; - -} ace_adc_config_t; - -/*-------------------------------------------------------------------------*//** - The ppe_transforms_desc_t data structure is used by the ACE configurator to - inform the ACE driver of the location of the "m" factor and "c" offset used - by the PPE to perform a linear transform of the form y = m*x + c. This linear - transform is used to apply calibration to the ADC samples. It can also include - a user defined linear transform specified by the user using the ACE - configurator. The factor and offset of the user defined transform is included - in the default_m2 and default_c2 items. - */ -typedef struct -{ - /** - Offset into Post Processing Engine RAM where the linear transform m factor - is stored. - */ - uint16_t m_ppe_offset; - - /** - Offset into Post Processing Engine RAM where the linear transform c offset - is stored. - */ - uint16_t c_ppe_offset; - - /** - Default value of the user defined linear transform m2 factor. - */ - int16_t default_m2; - - /** - Default value of the user defined linear transform c2 offset. - */ - int16_t default_c2; -} ppe_transforms_desc_t; - -#ifdef __cplusplus -} -#endif - -#endif /* __MSS_ACE_CONFIGURATOR_H_ */ diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_ace/mtd_data.h b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_ace/mtd_data.h deleted file mode 100644 index 431f28f78..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_ace/mtd_data.h +++ /dev/null @@ -1,104 +0,0 @@ -/******************************************************************************* - * (c) Copyright 2008 Actel Corporation. All rights reserved. - * - * Manufacturing Test Data data structures. - * This header files specified the layout of the various data structures used - * to store manaufacturing test data within eNVM. - * - * SVN $Revision: 700 $ - * SVN $Date: 2009-03-13 13:22:03 +0000 (Fri, 13 Mar 2009) $ - */ -#ifndef MTD_DATA_H -#define MTD_DATA_H - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * Analog block specifications - */ -#define NB_OF_QUADS 6 -#define NB_OF_ABPS_PER_QUAD 2 -#define TOTAL_NB_OF_ABPS (NB_OF_QUADS * NB_OF_ABPS_PER_QUAD) -#define NB_OF_ABPS_RANGES 4 -#define NB_OF_ANALOG_MODULES 3 -#define NB_OF_OBD_MODES 2 -#define NB_OF_QUADS_PER_MODULE 2 -#define NB_OF_CHOPPING_OPTIONS 2 -#define NB_OF_DIRECT_INPUTS_PER_ADC 4 - -#define NB_OF_ADC_CHANNELS 13 - -/*------------------------------------------------------------------------------ - * mtd_global_settings_t - *------------------------------------------------------------------------------ - * This typedef specifies the layout of the data structure holding the - * manufacturing test data global settings. - */ -typedef struct __mtd_global_settings_t -{ - uint16_t crc16; - uint8_t serial[6]; - uint32_t revision; - uint16_t sram_repair[8]; - uint16_t varef_m; - uint16_t spare; - uint8_t big_dec; - uint8_t reserved0; - uint16_t reserved1; -} mtd_global_settings_t; - -/*------------------------------------------------------------------------------ - * mtd_abps_trim_t - *------------------------------------------------------------------------------ - * The following data structure is used to store ABPS trimming information. - */ -typedef struct __mtd_abps_trim_t -{ - uint8_t dacdec; - uint8_t negtrim_per4_per3b_gtdec; -} mtd_abps_trim_t; - - -/*------------------------------------------------------------------------------ - * mtd_calibration_mc_t - *------------------------------------------------------------------------------ - * The following data structure is used to store M and C calibration - * coefficients. - */ -typedef struct __mtd_calibration_mc_t -{ - uint16_t m; - uint16_t c; -} mtd_calibration_mc_t; - - -/*------------------------------------------------------------------------------ - * mtd_data_t - *------------------------------------------------------------------------------ - * The following data structure is used to hold the full set of manufacturing - * test data. - */ -typedef struct __mtd_data_t -{ - mtd_global_settings_t global_settings; - mtd_abps_trim_t abps_trimming[NB_OF_QUADS][NB_OF_ABPS_PER_QUAD][NB_OF_ABPS_RANGES]; - uint8_t odb_trimming[NB_OF_ANALOG_MODULES][NB_OF_OBD_MODES][NB_OF_CHOPPING_OPTIONS]; - mtd_calibration_mc_t abps_calibration[NB_OF_QUADS][NB_OF_ABPS_PER_QUAD][NB_OF_ABPS_RANGES]; - mtd_calibration_mc_t obd_calibration[NB_OF_ANALOG_MODULES][NB_OF_OBD_MODES][NB_OF_CHOPPING_OPTIONS]; - mtd_calibration_mc_t cm_calibration[NB_OF_QUADS]; - mtd_calibration_mc_t tm_calibration[NB_OF_QUADS]; - mtd_calibration_mc_t quads_direct_input_cal[NB_OF_QUADS][2]; - mtd_calibration_mc_t adc_direct_input_cal[NB_OF_ANALOG_MODULES][NB_OF_DIRECT_INPUTS_PER_ADC]; - uint16_t comparators_offsets[NB_OF_QUADS]; - uint32_t ccc_delays_cal; -} mtd_data_t; - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_ethernet_mac/crc32.c b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_ethernet_mac/crc32.c deleted file mode 100644 index fc17e5298..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_ethernet_mac/crc32.c +++ /dev/null @@ -1,103 +0,0 @@ -/***************************************************************************//** - * @file - * crc32 source file. - * - * CRC-32-IEEE 802.3 - * x^32 + x^26 + x^23 + x^22 + x^16 + x^12 + x^11 + x^10 + x^8 + x^7 + x^5 + - * x^4 + x^2 + x + 1 - * - * (c) Copyright 2007 Actel Corporation - * - * SVN $Revision: 2369 $ - * SVN $Date: 2010-03-01 18:31:45 +0000 (Mon, 01 Mar 2010) $ - ******************************************************************************/ - - #ifdef __cplusplus -extern "C" { -#endif - -#include "crc32.h" - -static const uint32_t crc32_table[] = { - 0x00000000UL, 0x77073096UL, 0xee0e612cUL, 0x990951baUL, 0x076dc419UL, 0x706af48fUL, - 0xe963a535UL, 0x9e6495a3UL, 0x0edb8832UL, 0x79dcb8a4UL, 0xe0d5e91eUL, 0x97d2d988UL, - 0x09b64c2bUL, 0x7eb17cbdUL, 0xe7b82d07UL, 0x90bf1d91UL, 0x1db71064UL, 0x6ab020f2UL, - 0xf3b97148UL, 0x84be41deUL, 0x1adad47dUL, 0x6ddde4ebUL, 0xf4d4b551UL, 0x83d385c7UL, - 0x136c9856UL, 0x646ba8c0UL, 0xfd62f97aUL, 0x8a65c9ecUL, 0x14015c4fUL, 0x63066cd9UL, - 0xfa0f3d63UL, 0x8d080df5UL, 0x3b6e20c8UL, 0x4c69105eUL, 0xd56041e4UL, 0xa2677172UL, - 0x3c03e4d1UL, 0x4b04d447UL, 0xd20d85fdUL, 0xa50ab56bUL, 0x35b5a8faUL, 0x42b2986cUL, - 0xdbbbc9d6UL, 0xacbcf940UL, 0x32d86ce3UL, 0x45df5c75UL, 0xdcd60dcfUL, 0xabd13d59UL, - 0x26d930acUL, 0x51de003aUL, 0xc8d75180UL, 0xbfd06116UL, 0x21b4f4b5UL, 0x56b3c423UL, - 0xcfba9599UL, 0xb8bda50fUL, 0x2802b89eUL, 0x5f058808UL, 0xc60cd9b2UL, 0xb10be924UL, - 0x2f6f7c87UL, 0x58684c11UL, 0xc1611dabUL, 0xb6662d3dUL, 0x76dc4190UL, 0x01db7106UL, - 0x98d220bcUL, 0xefd5102aUL, 0x71b18589UL, 0x06b6b51fUL, 0x9fbfe4a5UL, 0xe8b8d433UL, - 0x7807c9a2UL, 0x0f00f934UL, 0x9609a88eUL, 0xe10e9818UL, 0x7f6a0dbbUL, 0x086d3d2dUL, - 0x91646c97UL, 0xe6635c01UL, 0x6b6b51f4UL, 0x1c6c6162UL, 0x856530d8UL, 0xf262004eUL, - 0x6c0695edUL, 0x1b01a57bUL, 0x8208f4c1UL, 0xf50fc457UL, 0x65b0d9c6UL, 0x12b7e950UL, - 0x8bbeb8eaUL, 0xfcb9887cUL, 0x62dd1ddfUL, 0x15da2d49UL, 0x8cd37cf3UL, 0xfbd44c65UL, - 0x4db26158UL, 0x3ab551ceUL, 0xa3bc0074UL, 0xd4bb30e2UL, 0x4adfa541UL, 0x3dd895d7UL, - 0xa4d1c46dUL, 0xd3d6f4fbUL, 0x4369e96aUL, 0x346ed9fcUL, 0xad678846UL, 0xda60b8d0UL, - 0x44042d73UL, 0x33031de5UL, 0xaa0a4c5fUL, 0xdd0d7cc9UL, 0x5005713cUL, 0x270241aaUL, - 0xbe0b1010UL, 0xc90c2086UL, 0x5768b525UL, 0x206f85b3UL, 0xb966d409UL, 0xce61e49fUL, - 0x5edef90eUL, 0x29d9c998UL, 0xb0d09822UL, 0xc7d7a8b4UL, 0x59b33d17UL, 0x2eb40d81UL, - 0xb7bd5c3bUL, 0xc0ba6cadUL, 0xedb88320UL, 0x9abfb3b6UL, 0x03b6e20cUL, 0x74b1d29aUL, - 0xead54739UL, 0x9dd277afUL, 0x04db2615UL, 0x73dc1683UL, 0xe3630b12UL, 0x94643b84UL, - 0x0d6d6a3eUL, 0x7a6a5aa8UL, 0xe40ecf0bUL, 0x9309ff9dUL, 0x0a00ae27UL, 0x7d079eb1UL, - 0xf00f9344UL, 0x8708a3d2UL, 0x1e01f268UL, 0x6906c2feUL, 0xf762575dUL, 0x806567cbUL, - 0x196c3671UL, 0x6e6b06e7UL, 0xfed41b76UL, 0x89d32be0UL, 0x10da7a5aUL, 0x67dd4accUL, - 0xf9b9df6fUL, 0x8ebeeff9UL, 0x17b7be43UL, 0x60b08ed5UL, 0xd6d6a3e8UL, 0xa1d1937eUL, - 0x38d8c2c4UL, 0x4fdff252UL, 0xd1bb67f1UL, 0xa6bc5767UL, 0x3fb506ddUL, 0x48b2364bUL, - 0xd80d2bdaUL, 0xaf0a1b4cUL, 0x36034af6UL, 0x41047a60UL, 0xdf60efc3UL, 0xa867df55UL, - 0x316e8eefUL, 0x4669be79UL, 0xcb61b38cUL, 0xbc66831aUL, 0x256fd2a0UL, 0x5268e236UL, - 0xcc0c7795UL, 0xbb0b4703UL, 0x220216b9UL, 0x5505262fUL, 0xc5ba3bbeUL, 0xb2bd0b28UL, - 0x2bb45a92UL, 0x5cb36a04UL, 0xc2d7ffa7UL, 0xb5d0cf31UL, 0x2cd99e8bUL, 0x5bdeae1dUL, - 0x9b64c2b0UL, 0xec63f226UL, 0x756aa39cUL, 0x026d930aUL, 0x9c0906a9UL, 0xeb0e363fUL, - 0x72076785UL, 0x05005713UL, 0x95bf4a82UL, 0xe2b87a14UL, 0x7bb12baeUL, 0x0cb61b38UL, - 0x92d28e9bUL, 0xe5d5be0dUL, 0x7cdcefb7UL, 0x0bdbdf21UL, 0x86d3d2d4UL, 0xf1d4e242UL, - 0x68ddb3f8UL, 0x1fda836eUL, 0x81be16cdUL, 0xf6b9265bUL, 0x6fb077e1UL, 0x18b74777UL, - 0x88085ae6UL, 0xff0f6a70UL, 0x66063bcaUL, 0x11010b5cUL, 0x8f659effUL, 0xf862ae69UL, - 0x616bffd3UL, 0x166ccf45UL, 0xa00ae278UL, 0xd70dd2eeUL, 0x4e048354UL, 0x3903b3c2UL, - 0xa7672661UL, 0xd06016f7UL, 0x4969474dUL, 0x3e6e77dbUL, 0xaed16a4aUL, 0xd9d65adcUL, - 0x40df0b66UL, 0x37d83bf0UL, 0xa9bcae53UL, 0xdebb9ec5UL, 0x47b2cf7fUL, 0x30b5ffe9UL, - 0xbdbdf21cUL, 0xcabac28aUL, 0x53b39330UL, 0x24b4a3a6UL, 0xbad03605UL, 0xcdd70693UL, - 0x54de5729UL, 0x23d967bfUL, 0xb3667a2eUL, 0xc4614ab8UL, 0x5d681b02UL, 0x2a6f2b94UL, - 0xb40bbe37UL, 0xc30c8ea1UL, 0x5a05df1bUL, 0x2d02ef8dUL -}; - -/** - * Calculates 32 bits CRC value of given data. - */ -uint32_t -mss_mac_crc32 -( - uint32_t value, - const uint8_t *data, - uint32_t data_length -) -{ - uint32_t a; - - for(a=0; a> 8); - } - - return value; -} - -/** - * Calculates 32 bits CRC value of given data, using standart Ethernet CRC - * function. - */ -uint32_t -mss_ethernet_crc -( - const uint8_t *data, - uint32_t data_length -) -{ - return mss_mac_crc32( 0xffffffffUL, data, data_length ); -} - -#ifdef __cplusplus -} -#endif diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_ethernet_mac/crc32.h b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_ethernet_mac/crc32.h deleted file mode 100644 index ce500a6f2..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_ethernet_mac/crc32.h +++ /dev/null @@ -1,46 +0,0 @@ -/***************************************************************************//** - * @file - * crc32 header file. - * - * (c) Copyright 2007 Actel Corporation - * - * SVN $Revision: 2369 $ - * SVN $Date: 2010-03-01 18:31:45 +0000 (Mon, 01 Mar 2010) $ - ******************************************************************************/ - -#ifndef __MSS_ETHERNET_MAC_CRC32_H -#define __MSS_ETHERNET_MAC_CRC32_H 1 - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * Calculates 32 bits CRC value of given data. - */ -uint32_t -mss_mac_crc32 -( - uint32_t value, - const uint8_t *data, - uint32_t data_length -); - -/** - * Calculates 32 bits CRC value of given data, using standart Ethernet CRC - * function. - */ -uint32_t -mss_ethernet_crc -( - const uint8_t *data, - uint32_t data_length -); - -#ifdef __cplusplus -} -#endif - -#endif /* __MSS_ETHERNET_MAC_CRC32_H */ diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_ethernet_mac/mss_ethernet_mac.c b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_ethernet_mac/mss_ethernet_mac.c deleted file mode 100644 index 2b73d0657..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_ethernet_mac/mss_ethernet_mac.c +++ /dev/null @@ -1,1575 +0,0 @@ -/***************************************************************************//** - * @file - * SmartFusion MSS Ethernet MAC driver implementation. - * - * (c) Copyright 2007 Actel Corporation - * - * SVN $Revision: 2369 $ - * SVN $Date: 2010-03-01 18:31:45 +0000 (Mon, 01 Mar 2010) $ - * - ******************************************************************************/ - -/* - * - * - * NOTE: This driver has been modified specifically for use with the* uIP stack. - * It is no longer a generic driver. - * - * - */ - -#ifdef __cplusplus -extern "C" { -#endif - -#include "FreeRTOS.h" -#include "task.h" - -#include "crc32.h" - -#include "mss_ethernet_mac.h" -#include "mss_ethernet_mac_regs.h" -#include "mss_ethernet_mac_desc.h" -#include "mss_ethernet_mac_conf.h" -#include "../../CMSIS/mss_assert.h" - -#include "phy.h" - -/**************************** INTERNAL DEFINES ********************************/ - -#define MAC_CHECK(CHECK,ERRNO) \ - {if(!(CHECK)){g_mss_mac.last_error=(ERRNO); configASSERT((CHECK));}} - -/* - * Flags - */ -#define FLAG_MAC_INIT_DONE 1u -#define FLAG_PERFECT_FILTERING 2u -#define FLAG_CRC_DISABLE 4u -#define FLAG_EXCEED_LIMIT 8u - -/* - * Return types - */ -#define MAC_OK 0 -#define MAC_FAIL (-1) -#define MAC_WRONG_PARAMETER (-2) -#define MAC_TOO_BIG_PACKET (-3) -#define MAC_BUFFER_IS_FULL (-4) -#define MAC_NOT_ENOUGH_SPACE (-5) -#define MAC_TIME_OUT (-6) -#define MAC_TOO_SMALL_PACKET (-7) - -/* Allocating this many buffers will always ensure there is one free as, even -though TX_RING_SIZE is set to two, the two Tx descriptors will only ever point -to the same buffer. */ -#define macNUM_BUFFERS RX_RING_SIZE + TX_RING_SIZE -#define macBUFFER_SIZE 1488 - -/***************************************************************/ -MAC_instance_t g_mss_mac; - -/**************************** INTERNAL DATA ***********************************/ -#define ERROR_MESSAGE_COUNT 8 -#define MAX_ERROR_MESSAGE_WIDTH 40 -static const int8_t unknown_error[] = "Unknown error"; -static const int8_t ErrorMessages[][MAX_ERROR_MESSAGE_WIDTH] = { - "No error occured", - "Method failed", - "Wrong parameter pased to function", - "Frame is too long", - "Not enough space in buffer", - "Not enough space in buffer", - "Timed out", - "Frame is too small" -}; - -/* - * Null variables - */ -static uint8_t* NULL_buffer; -static MSS_MAC_callback_t NULL_callback; - -/* Declare the uip_buf as a pointer, rather than the traditional array, as this -is a zero copy driver. uip_buf just gets set to whichever buffer is being -processed. */ -unsigned char *uip_buf = NULL; - -/**************************** INTERNAL FUNCTIONS ******************************/ - -static int32_t MAC_dismiss_bad_frames( void ); -static int32_t MAC_send_setup_frame( void ); - -static int32_t MAC_stop_transmission( void ); -static void MAC_start_transmission( void ); -static int32_t MAC_stop_receiving( void ); -static void MAC_start_receiving( void ); - -static void MAC_set_time_out( uint32_t time_out ); -static uint32_t MAC_get_time_out( void ); - -static void MAC_memset(uint8_t *s, uint8_t c, uint32_t n); -static void MAC_memcpy(uint8_t *dest, const uint8_t *src, uint32_t n); -static void MAC_memset_All(MAC_instance_t *s, uint32_t c); - -static unsigned char *MAC_obtain_buffer( void ); -static void MAC_release_buffer( unsigned char *pcBufferToRelease ); - -#if( TX_RING_SIZE != 2 ) - #error This uIP Ethernet driver required TX_RING_SIZE to be set to 2 -#endif - -/* Buffers that will dynamically be allocated to/from the Tx and Rx descriptors. -The union is used for alignment only. */ -static union xMAC_BUFFERS -{ - unsigned long ulAlignmentVariable; /* For alignment only, not used anywhere. */ - unsigned char ucBuffer[ macNUM_BUFFERS ][ macBUFFER_SIZE ]; -} xMACBuffers; - -/* Each array position indicates whether or not the buffer of the same index -is currently allocated to a descriptor (pdTRUE) or is free for use (pdFALSE). */ -static unsigned char ucMACBufferInUse[ macNUM_BUFFERS ] = { 0 }; - -/***************************************************************************//** - * Initializes the Ethernet Controller. - * This function will prepare the Ethernet Controller for first time use in a - * given hardware/software configuration. This function should be called before - * any other Ethernet API functions are called. - * - * Initialization of registers - config registers, enable Tx/Rx interrupts, - * enable Tx/Rx, initialize MAC addr, init PHY, autonegotiation, MAC address - * filter table (unicats/multicast)/hash init - */ -void -MSS_MAC_init -( - uint8_t phy_address -) -{ - const uint8_t mac_address[6] = { DEFAULT_MAC_ADDRESS }; - int32_t a; - - /* To start with all buffers are free. */ - for( a = 0; a < macNUM_BUFFERS; a++ ) - { - ucMACBufferInUse[ a ] = pdFALSE; - } - - /* Try to reset chip */ - MAC_BITBAND->CSR0_SWR = 1u; - - do - { - vTaskDelay( 10 ); - } while ( 1u == MAC_BITBAND->CSR0_SWR ); - - /* Check reset values of some registers to constrol - * base address validity */ - configASSERT( MAC->CSR0 == 0xFE000000uL ); - configASSERT( MAC->CSR5 == 0xF0000000uL ); - configASSERT( MAC->CSR6 == 0x32000040uL ); - - /* Instance setup */ - MAC_memset_All( &g_mss_mac, 0u ); - - g_mss_mac.base_address = MAC_BASE; - g_mss_mac.phy_address = phy_address; - - for( a=0; aCSR0_DBO = DESCRIPTOR_BYTE_ORDERING_MODE; - MAC->CSR0 = (MAC->CSR0 & ~CSR0_PBL_MASK) | ((uint32_t)PROGRAMMABLE_BURST_LENGTH << CSR0_PBL_SHIFT); - MAC_BITBAND->CSR0_BLE = BUFFER_BYTE_ORDERING_MODE; - MAC_BITBAND->CSR0_BAR = (uint32_t)BUS_ARBITRATION_SCHEME; - - /* Fixed settings */ - /* No space between descriptors */ - MAC->CSR0 = MAC->CSR0 &~ CSR0_DSL_MASK; - /* General-purpose timer works in continuous mode */ - MAC_BITBAND->CSR11_CON = 1u; - /* Start general-purpose */ - MAC->CSR11 = (MAC->CSR11 & ~CSR11_TIM_MASK) | (0x0000FFFFuL << CSR11_TIM_SHIFT); - - /* Ensure promiscous mode is off (it should be by default anyway). */ - MAC_BITBAND->CSR6_PR = 0; - - /* Perfect filter. */ - MAC_BITBAND->CSR6_HP = 1; - - /* Pass multcast. */ - MAC_BITBAND->CSR6_PM = 1; - - /* Set descriptors */ - MAC->CSR3 = (uint32_t)&(g_mss_mac.rx_descriptors[0].descriptor_0); - MAC->CSR4 = (uint32_t)&(g_mss_mac.tx_descriptors[0].descriptor_0); - - /* enable normal interrupts */ - MAC_BITBAND->CSR7_NIE = 1u; - - /* Set default MAC address and reset mac filters */ - MAC_memcpy( g_mss_mac.mac_address, mac_address, 6u ); - MSS_MAC_set_mac_address((uint8_t *)mac_address); - - /* Detect PHY */ - if( g_mss_mac.phy_address > MSS_PHY_ADDRESS_MAX ) - { - PHY_probe(); - configASSERT( g_mss_mac.phy_address <= MSS_PHY_ADDRESS_MAX ); - } - - /* Reset PHY */ - PHY_reset(); - - /* Configure chip according to PHY status */ - MSS_MAC_auto_setup_link(); - - /* Ensure uip_buf starts by pointing somewhere. */ - uip_buf = MAC_obtain_buffer(); -} - - -/***************************************************************************//** - * Sets the configuration of the Ethernet Controller. - * After the EthernetInit function has been called, this API function can be - * used to configure the various features of the Ethernet Controller. - * - * @param instance Pointer to a MAC_instance_t structure - * @param config The logical OR of the following values: - * - #MSS_MAC_CFG_RECEIVE_ALL - * - #MSS_MAC_CFG_TRANSMIT_THRESHOLD_MODE - * - #MSS_MSS_MAC_CFG_STORE_AND_FORWARD - * - #MAC_CFG_THRESHOLD_CONTROL_[00,01,10,11] - * - #MSS_MAC_CFG_FULL_DUPLEX_MODE - * - #MSS_MAC_CFG_PASS_ALL_MULTICAST - * - #MSS_MAC_CFG_PROMISCUOUS_MODE - * - #MSS_MAC_CFG_PASS_BAD_FRAMES - * @see MAC_get_configuration() - */ -void -MSS_MAC_configure -( - uint32_t configuration -) -{ - int32_t ret; - - ret = MAC_stop_transmission(); - configASSERT( ret == MAC_OK ); - - ret = MAC_stop_receiving(); - configASSERT( ret == MAC_OK ); - - MAC_BITBAND->CSR6_RA = (uint32_t)(((configuration & MSS_MAC_CFG_RECEIVE_ALL) != 0u) ? 1u : 0u ); - MAC_BITBAND->CSR6_TTM = (((configuration & MSS_MAC_CFG_TRANSMIT_THRESHOLD_MODE) != 0u) ? 1u : 0u ); - MAC_BITBAND->CSR6_SF = (uint32_t)(((configuration & MSS_MAC_CFG_STORE_AND_FORWARD) != 0u) ? 1u : 0u ); - - switch( configuration & MSS_MAC_CFG_THRESHOLD_CONTROL_11 ) { - case MSS_MAC_CFG_THRESHOLD_CONTROL_00: - MAC->CSR6 = MAC->CSR6 & ~CSR6_TR_MASK; - break; - case MSS_MAC_CFG_THRESHOLD_CONTROL_01: - MAC->CSR6 = (MAC->CSR6 & ~CSR6_TR_MASK) | ((uint32_t)1 << CSR6_TR_SHIFT ); - break; - case MSS_MAC_CFG_THRESHOLD_CONTROL_10: - MAC->CSR6 = (MAC->CSR6 & ~CSR6_TR_MASK) | ((uint32_t)2 << CSR6_TR_SHIFT ); - break; - case MSS_MAC_CFG_THRESHOLD_CONTROL_11: - MAC->CSR6 = (MAC->CSR6 & ~CSR6_TR_MASK) | ((uint32_t)3 << CSR6_TR_SHIFT ); - break; - default: - break; - } - MAC_BITBAND->CSR6_FD = (uint32_t)(((configuration & MSS_MAC_CFG_FULL_DUPLEX_MODE) != 0u) ? 1u : 0u ); - MAC_BITBAND->CSR6_PM = (uint32_t)(((configuration & MSS_MAC_CFG_PASS_ALL_MULTICAST) != 0u) ? 1u : 0u ); - MAC_BITBAND->CSR6_PR = (uint32_t)(((configuration & MSS_MAC_CFG_PROMISCUOUS_MODE) != 0u) ? 1u : 0u ); - MAC_BITBAND->CSR6_PB = (uint32_t)(((configuration & MSS_MAC_CFG_PASS_BAD_FRAMES) != 0u) ? 1u : 0u ); - PHY_set_link_type( (uint8_t) - ((((configuration & MSS_MAC_CFG_TRANSMIT_THRESHOLD_MODE) != 0u) ? MSS_MAC_LINK_STATUS_100MB : 0u ) | - (((configuration & MSS_MAC_CFG_FULL_DUPLEX_MODE) != 0u) ? MSS_MAC_LINK_STATUS_FDX : 0u )) ); - - MSS_MAC_auto_setup_link(); -} - - -/***************************************************************************//** - * Returns the configuration of the Ethernet Controller. - * - * @param instance Pointer to a MAC_instance_t structure - * @return The logical OR of the following values: - * - #MSS_MAC_CFG_RECEIVE_ALL - * - #MSS_MAC_CFG_TRANSMIT_THRESHOLD_MODE - * - #MSS_MAC_CFG_STORE_AND_FORWARD - * - #MAC_CFG_THRESHOLD_CONTROL_[00,01,10,11] - * - #MSS_MAC_CFG_FULL_DUPLEX_MODE - * - #MSS_MAC_CFG_PASS_ALL_MULTICAST - * - #MSS_MAC_CFG_PROMISCUOUS_MODE - * - #MSS_MAC_CFG_INVERSE_FILTERING - * - #MSS_MAC_CFG_PASS_BAD_FRAMES - * - #MSS_MAC_CFG_HASH_ONLY_FILTERING_MODE - * - #MSS_MAC_CFG_HASH_PERFECT_RECEIVE_FILTERING_MODE - * @see MAC_configure() - */ -int32_t -MSS_MAC_get_configuration( void ) -{ - uint32_t configuration; - - configuration = 0u; - if( MAC_BITBAND->CSR6_RA != 0u ) { - configuration |= MSS_MAC_CFG_RECEIVE_ALL; - } - - if( MAC_BITBAND->CSR6_TTM != 0u ) { - configuration |= MSS_MAC_CFG_TRANSMIT_THRESHOLD_MODE; - } - - if( MAC_BITBAND->CSR6_SF != 0u ) { - configuration |= MSS_MAC_CFG_STORE_AND_FORWARD; - } - - switch( (MAC->CSR6 & CSR6_TR_MASK) >> CSR6_TR_SHIFT ) { - case 1: configuration |= MSS_MAC_CFG_THRESHOLD_CONTROL_01; break; - case 2: configuration |= MSS_MAC_CFG_THRESHOLD_CONTROL_10; break; - case 3: configuration |= MSS_MAC_CFG_THRESHOLD_CONTROL_11; break; - default: break; - } - if( MAC_BITBAND->CSR6_FD != 0u ) { - configuration |= MSS_MAC_CFG_FULL_DUPLEX_MODE; - } - - if( MAC_BITBAND->CSR6_PM != 0u ) { - configuration |= MSS_MAC_CFG_PASS_ALL_MULTICAST; - } - - if( MAC_BITBAND->CSR6_PR != 0u ) { - configuration |= MSS_MAC_CFG_PROMISCUOUS_MODE; - } - - if( MAC_BITBAND->CSR6_IF != 0u ) { - configuration |= MSS_MAC_CFG_INVERSE_FILTERING; - } - - if( MAC_BITBAND->CSR6_PB != 0u ) { - configuration |= MSS_MAC_CFG_PASS_BAD_FRAMES; - } - - if( MAC_BITBAND->CSR6_HO != 0u ) { - configuration |= MSS_MAC_CFG_HASH_ONLY_FILTERING_MODE; - } - - if( MAC_BITBAND->CSR6_HP != 0u ) { - configuration |= MSS_MAC_CFG_HASH_PERFECT_RECEIVE_FILTERING_MODE; - } - - return (int32_t)configuration; -} - - -/***************************************************************************//** - Sends a packet from the uIP stack to the Ethernet Controller. - The MSS_MAC_tx_packet() function is used to send a packet to the MSS Ethernet - MAC. This function writes uip_len bytes of the packet contained in uip_buf into - the transmit FIFO and then activates the transmitter for this packet. If space - is available in the FIFO, the function will return once pac_len bytes of the - packet have been placed into the FIFO and the transmitter has been started. - This function will not wait for the transmission to complete. - - @return - The function returns zero if a timeout occurs otherwise it returns size of the packet. - - @see MAC_rx_packet() - */ - -int32_t -MSS_MAC_tx_packet -( - unsigned short usLength -) -{ - uint32_t desc; - unsigned long ulDescriptor; - int32_t error = MAC_OK; - - configASSERT( uip_buf != NULL_buffer ); - - configASSERT( usLength >= 12 ); - - if( (g_mss_mac.flags & FLAG_EXCEED_LIMIT) == 0u ) - { - configASSERT( usLength <= MSS_MAX_PACKET_SIZE ); - } - - taskENTER_CRITICAL(); - { - /* Check both Tx descriptors are free, meaning the double send has completed. */ - if( ( ( (g_mss_mac.tx_descriptors[ 0 ].descriptor_0) & TDES0_OWN) == TDES0_OWN ) || ( ( (g_mss_mac.tx_descriptors[ 1 ].descriptor_0) & TDES0_OWN) == TDES0_OWN ) ) - { - error = MAC_BUFFER_IS_FULL; - } - } - taskEXIT_CRITICAL(); - - configASSERT( ( g_mss_mac.tx_desc_index == 0 ) ); - - if( error == MAC_OK ) - { - /* Ensure nothing is going to get sent until both descriptors are ready. - This is done to prevent a Tx end occurring prior to the second descriptor - being ready. */ - MAC_BITBAND->CSR6_ST = 0u; - - /* Assumed TX_RING_SIZE == 2. A #error directive checks this is the - case. */ - taskENTER_CRITICAL(); - { - for( ulDescriptor = 0; ulDescriptor < TX_RING_SIZE; ulDescriptor++ ) - { - g_mss_mac.tx_descriptors[ g_mss_mac.tx_desc_index ].descriptor_1 = 0u; - - if( (g_mss_mac.flags & FLAG_CRC_DISABLE) != 0u ) { - g_mss_mac.tx_descriptors[ g_mss_mac.tx_desc_index ].descriptor_1 |= TDES1_AC; - } - - /* Every buffer can hold a full frame so they are always first and last - descriptor */ - g_mss_mac.tx_descriptors[ g_mss_mac.tx_desc_index ].descriptor_1 |= TDES1_LS | TDES1_FS; - - /* set data size */ - g_mss_mac.tx_descriptors[ g_mss_mac.tx_desc_index ].descriptor_1 |= usLength; - - /* reset end of ring */ - g_mss_mac.tx_descriptors[TX_RING_SIZE-1].descriptor_1 |= TDES1_TER; - - if( usLength > MSS_TX_BUFF_SIZE ) /* FLAG_EXCEED_LIMIT */ - { - usLength = (uint16_t)MSS_TX_BUFF_SIZE; - } - - /* The data buffer is assigned to the Tx descriptor. */ - g_mss_mac.tx_descriptors[ g_mss_mac.tx_desc_index ].buffer_1 = ( unsigned long ) uip_buf; - - /* update counters */ - desc = g_mss_mac.tx_descriptors[ g_mss_mac.tx_desc_index ].descriptor_0; - if( (desc & TDES0_LO) != 0u ) { - g_mss_mac.statistics.tx_loss_of_carrier++; - } - if( (desc & TDES0_NC) != 0u ) { - g_mss_mac.statistics.tx_no_carrier++; - } - if( (desc & TDES0_LC) != 0u ) { - g_mss_mac.statistics.tx_late_collision++; - } - if( (desc & TDES0_EC) != 0u ) { - g_mss_mac.statistics.tx_excessive_collision++; - } - if( (desc & TDES0_UF) != 0u ) { - g_mss_mac.statistics.tx_underflow_error++; - } - g_mss_mac.statistics.tx_collision_count += - (desc >> TDES0_CC_OFFSET) & TDES0_CC_MASK; - - /* Give ownership of descriptor to the MAC */ - g_mss_mac.tx_descriptors[ g_mss_mac.tx_desc_index ].descriptor_0 = TDES0_OWN; - - g_mss_mac.tx_desc_index = (g_mss_mac.tx_desc_index + 1u) % (uint32_t)TX_RING_SIZE; - } - } - taskEXIT_CRITICAL(); - } - - if (error == MAC_OK) - { - error = (int32_t)usLength; - - /* Start sending now both descriptors are set up. This is done to - prevent a Tx end occurring prior to the second descriptor being - ready. */ - MAC_BITBAND->CSR6_ST = 1u; - MAC->CSR1 = 1u; - - /* The buffer pointed to by uip_buf is now assigned to a Tx descriptor. - Find anothere free buffer for uip_buf. */ - uip_buf = MAC_obtain_buffer(); - } - else - { - error = 0; - } - return ( error ); -} - - -/***************************************************************************//** - * Returns available packet size. - * - * @param instance Pointer to a MAC_instance_t structure - * @return size of packet, bigger than 0, if a packet is available. - * If not, returns 0. - * @see MAC_rx_packet() - */ -int32_t -MSS_MAC_rx_pckt_size -( - void -) -{ - int32_t retval; - MAC_dismiss_bad_frames(); - - if( (g_mss_mac.rx_descriptors[ g_mss_mac.rx_desc_index ].descriptor_0 & RDES0_OWN) != 0u ) - { - /* Current descriptor is empty */ - retval = 0; - } - else - { - uint32_t frame_length; - frame_length = ( g_mss_mac.rx_descriptors[ g_mss_mac.rx_desc_index ].descriptor_0 >> RDES0_FL_OFFSET ) & RDES0_FL_MASK; - retval = (int32_t)( frame_length ); - } - return retval; -} - - -/***************************************************************************//** - * Receives a packet from the Ethernet Controller into the uIP stack. - * This function reads a packet from the receive FIFO of the controller and - * places it into uip_buf. - - * @return Size of packet if packet fits in uip_buf. - * 0 if there is no received packet. - * @see MAC_rx_pckt_size() - * @see MAC_tx_packet() - */ -int32_t -MSS_MAC_rx_packet -( - void -) -{ - uint16_t frame_length=0u; - - MAC_dismiss_bad_frames(); - - if( (g_mss_mac.rx_descriptors[ g_mss_mac.rx_desc_index ].descriptor_0 & RDES0_OWN) == 0u ) - { - frame_length = ( ( - g_mss_mac.rx_descriptors[ g_mss_mac.rx_desc_index ].descriptor_0 >> - RDES0_FL_OFFSET ) & RDES0_FL_MASK ); - - /* strip crc */ - frame_length -= 4u; - - if( frame_length > macBUFFER_SIZE ) { - return MAC_NOT_ENOUGH_SPACE; - } - - /* uip_buf is about to point to the buffer that contains the received - data, mark the buffer that uip_buf is currently pointing to as free - again. */ - MAC_release_buffer( uip_buf ); - uip_buf = ( unsigned char * ) g_mss_mac.rx_descriptors[ g_mss_mac.rx_desc_index ].buffer_1; - - /* The buffer the Rx descriptor was pointing to is now in use by the - uIP stack - allocate a new buffer to the Rx descriptor. */ - g_mss_mac.rx_descriptors[ g_mss_mac.rx_desc_index ].buffer_1 = ( unsigned long ) MAC_obtain_buffer(); - - MSS_MAC_prepare_rx_descriptor(); - } - return ((int32_t)frame_length); -} - - -/***************************************************************************//** - * Receives a packet from the Ethernet Controller. - * This function reads a packet from the receive FIFO of the controller and - * sets the address of pacData to the received data. - * If time_out parameter is zero the function will return - * immediately (after the copy operation if data is available. Otherwise the function - * will keep trying to read till time_out expires or data is read, if MSS_MAC_BLOCKING - * value is given as time_out, function will wait for the reception to complete. - * - * @param pacData The pointer to the packet data. - * @param time_out Time out value in milli seconds for receiving. - * if value is #MSS_MAC_BLOCKING, there will be no time out. - * if value is #MSS_MAC_NONBLOCKING, function will return immediately - * if there is no packet waiting. - * Otherwise value must be greater than 0 and smaller than - * 0x01000000. - * @return Size of packet if packet fits in pacData. - * 0 if there is no received packet. - * @see MAC_rx_pckt_size() - * @see MAC_tx_packet() - */ -int32_t -MSS_MAC_rx_packet_ptrset -( - uint8_t **pacData, - uint32_t time_out -) -{ - uint16_t frame_length = 0u; - int8_t exit = 0; - - configASSERT( (time_out == MSS_MAC_BLOCKING) || - (time_out == MSS_MAC_NONBLOCKING) || - ((time_out >= 1) && (time_out <= 0x01000000UL)) ); - - MAC_dismiss_bad_frames(); - - /* wait for a packet */ - if( time_out != MSS_MAC_BLOCKING ) { - if( time_out == MSS_MAC_NONBLOCKING ) { - MAC_set_time_out( 0u ); - } else { - MAC_set_time_out( time_out ); - } - } - - while( ((g_mss_mac.rx_descriptors[ g_mss_mac.rx_desc_index ].descriptor_0 & - RDES0_OWN) != 0u) && (exit == 0) ) - { - if( time_out != MSS_MAC_BLOCKING ) - { - if( MAC_get_time_out() == 0u ) { - exit = 1; - } - } - } - - if(exit == 0) - { - frame_length = ( ( - g_mss_mac.rx_descriptors[ g_mss_mac.rx_desc_index ].descriptor_0 >> - RDES0_FL_OFFSET ) & RDES0_FL_MASK ); - - /* strip crc */ - frame_length -= 4u; - - /* Here we are setting the buffer 'pacData' address to the address - RX descriptor address. After this is called, the following function - must be called 'MAC_prepare_rx_descriptor' - to prepare the current rx descriptor for receiving the next packet. - */ - *pacData = (uint8_t *)g_mss_mac.rx_descriptors[ g_mss_mac.rx_desc_index ].buffer_1 ; - - } - return ((int32_t)frame_length); -} - -/***************************************************************************//** - * Returns the status of connection. - * - * @return the logical OR of the following values: - * #MSS_MAC_LINK_STATUS_LINK - Link up/down - * #MSS_MAC_LINK_STATUS_100MB - Connection is 100Mb/10Mb - * #MSS_MAC_LINK_STATUS_FDX - Connection is full/half duplex - * @see MAC_auto_setup_link() - */ -int32_t -MSS_MAC_link_status -( - void -) -{ - uint32_t link; - - link = PHY_link_status(); - if( link == MSS_MAC_LINK_STATUS_LINK ) { - link |= PHY_link_type(); - } - - return ((int32_t)link); -} - - -/***************************************************************************//** - * Setups the link between PHY and MAC and returns the status of connection. - * - * @return the logical OR of the following values: - * #MSS_MAC_LINK_STATUS_LINK - Link up/down - * #MSS_MAC_LINK_STATUS_100MB - Connection is 100Mb/10Mb - * #MSS_MAC_LINK_STATUS_FDX - Connection is full/half duplex - * @see MAC_link_status() - */ -int32_t -MSS_MAC_auto_setup_link -( - void -) -{ - int32_t link; - - PHY_auto_negotiate(); - - link = MSS_MAC_link_status(); - - if( (link & MSS_MAC_LINK_STATUS_LINK) != 0u ) { - int32_t ret; - ret = MAC_stop_transmission(); - MAC_CHECK( ret == MAC_OK, ret ); - - ret = MAC_stop_receiving(); - MAC_CHECK( ret == MAC_OK, ret ); - MAC_BITBAND->CSR6_TTM = (uint32_t)((((uint32_t)link & MSS_MAC_LINK_STATUS_100MB) != 0u) ? 1u : 0u ); - MAC_BITBAND->CSR6_FD = (uint32_t)((((uint32_t)link & MSS_MAC_LINK_STATUS_FDX) != 0u) ? 1u : 1u ); - MAC_start_transmission(); - MAC_start_receiving(); - } - - return link; -} - - -/***************************************************************************//** - * Sets mac address. New address must be unicast. - * - * @param new_address Pointer to a MAC_instance_t structure - * @see MAC_get_mac_address() - */ -void -MSS_MAC_set_mac_address -( - const uint8_t *new_address -) -{ - /* Check if the new address is unicast */ - configASSERT( (new_address[0]&1) == 0 ); - - MAC_memcpy( g_mss_mac.mac_address, new_address, 6u ); - - if((g_mss_mac.flags & FLAG_PERFECT_FILTERING) != 0u ) { - int32_t a; - /* set unused filters to the new mac address */ - for( a=14*6; a>=0; a-=6 ) { - if( (g_mss_mac.mac_filter_data[a] & 1u) != 0u ) { - /* Filters with multicast addresses are used */ - a = -1; - } else { - MAC_memcpy( &(g_mss_mac.mac_filter_data[a]), - g_mss_mac.mac_address, 6u ); - } - } - } - - MAC_send_setup_frame(); -} - - -/***************************************************************************//** - * Returns mac address. - * - * @param address Pointer to receive the MAC address - * @see MAC_set_mac_address() - */ -void -MSS_MAC_get_mac_address -( - uint8_t *address -) -{ - MAC_memcpy( address, g_mss_mac.mac_address, 6u ); -} - - -/***************************************************************************//** - * Sets mac address filters. Addresses must be multicast. - * - * @param filter_count number of addresses - * @param filters Pointer to addresses to be filtered - */ -void -MSS_MAC_set_mac_filters -( - uint16_t filter_count, - const uint8_t *filters -) -{ - configASSERT( (filter_count==0) || (filters != NULL_buffer) ); - /* Check if the mac addresses is multicast */ - { - int32_t a; - for( a = 0u; a < filter_count; a++ ) { - configASSERT( (filters[a*6]&1) == 1 ); - } - } - - if( filter_count <= 15 ){ - int32_t a; - g_mss_mac.flags |= FLAG_PERFECT_FILTERING; - - /* copy new filters */ - MAC_memcpy( g_mss_mac.mac_filter_data, filters, (uint32_t)(filter_count*6)); - - /* set unused filters to our mac address */ - for( a=filter_count; a<15; a++ ) { - MAC_memcpy( &(g_mss_mac.mac_filter_data[a*6]), - g_mss_mac.mac_address, 6 ); - } - } else { - int32_t a,b; - uint32_t hash; - - g_mss_mac.flags &= ~FLAG_PERFECT_FILTERING; - - /* reset hash table */ - MAC_memset( g_mss_mac.mac_filter_data, 0u, 64u ); - - for( a=0, b=0; aCSR5; - - if( (intr_status & CSR5_NIS_MASK) != 0u ) { - if( (intr_status & CSR5_TI_MASK) != 0u ) { /* Transmit */ - g_mss_mac.statistics.tx_interrupts++; - events |= MSS_MAC_EVENT_PACKET_SEND; - } - - if( (intr_status & CSR5_RI_MASK) != 0u ) { /* Receive */ - g_mss_mac.statistics.rx_interrupts++; - events |= MSS_MAC_EVENT_PACKET_RECEIVED; - } - } - - /* Clear interrupts */ - MAC->CSR5 = CSR5_INT_BITS; - - if( (events != 0u) && (g_mss_mac.listener != NULL_callback) ) { - g_mss_mac.listener( events ); - } -} - - -/***************************************************************************//** - * Sets MAC event listener. - * Sets the given event listener function to be triggered inside MAC_isr(). - * Assigning NULL pointer as the listener function will disable it. - * - * @param instance Pointer to a MAC_instance_t structure - * @param listener function pointer to a MAC_callback_t function - * @return #MAC_OK if everything is OK - * #MAC_WRONG_PARAMETER if instance is null or hasn't been - * initialized. - * @see MAC_isr() - */ -void -MSS_MAC_set_callback -( - MSS_MAC_callback_t listener -) -{ - /* disable tx and rx interrupts */ - MAC_BITBAND->CSR7_RIE = 0u; - MAC_BITBAND->CSR7_TIE = 0u; - - g_mss_mac.listener = listener; - - if( listener != NULL_callback ) { - /* enable tx and rx interrupts */ - MAC_BITBAND->CSR7_RIE = 1u; - MAC_BITBAND->CSR7_TIE = 1u; - } -} - - -/***************************************************************************//** - * Returns description of last error. - * - * @param instance Pointer to a MAC_instance_t structure - * @return A string describing the error. This string must not be - * modified by the application. - * #MAC_WRONG_PARAMETER if instance is null or hasn't been - * initialized. - */ -const int8_t* -MSS_MAC_last_error -( - void -) -{ - int8_t error_msg_nb; - const int8_t* returnvalue; - - error_msg_nb = -(g_mss_mac.last_error); - if( error_msg_nb >= ERROR_MESSAGE_COUNT ) { - returnvalue = unknown_error; - } else { - returnvalue = ErrorMessages[error_msg_nb]; - } - return returnvalue; -} - - -/***************************************************************************//** - * Returns statistics counter of stat_id identifier. - * - * @param instance Pointer to a MAC_instance_t structure - * @param stat_id Identifier of statistics counter. - * @return Statistics counter of stat_id identifier. - * On error returns 0. - */ -uint32_t -MSS_MAC_get_statistics -( - mss_mac_statistics_id_t stat_id -) -{ - uint32_t returnval = 0u; - - switch( stat_id ) { - case MSS_MAC_RX_INTERRUPTS: - returnval = g_mss_mac.statistics.rx_interrupts; - break; - case MSS_MAC_RX_FILTERING_FAIL: - returnval = g_mss_mac.statistics.rx_filtering_fail; - break; - case MSS_MAC_RX_DESCRIPTOR_ERROR: - returnval = g_mss_mac.statistics.rx_descriptor_error; - break; - case MSS_MAC_RX_RUNT_FRAME: - returnval = g_mss_mac.statistics.rx_runt_frame; - break; - case MSS_MAC_RX_NOT_FIRST: - returnval = g_mss_mac.statistics.rx_not_first; - break; - case MSS_MAC_RX_NOT_LAST: - returnval = g_mss_mac.statistics.rx_not_last; - break; - case MSS_MAC_RX_FRAME_TOO_LONG: - returnval = g_mss_mac.statistics.rx_frame_too_long; - break; - case MSS_MAC_RX_COLLISION_SEEN: - returnval = g_mss_mac.statistics.rx_collision_seen; - break; - case MSS_MAC_RX_CRC_ERROR: - returnval = g_mss_mac.statistics.rx_crc_error; - break; - case MSS_MAC_RX_FIFO_OVERFLOW: - returnval = g_mss_mac.statistics.rx_fifo_overflow; - break; - case MSS_MAC_RX_MISSED_FRAME: - returnval = g_mss_mac.statistics.rx_missed_frame; - break; - case MSS_MAC_TX_INTERRUPTS: - returnval = g_mss_mac.statistics.tx_interrupts; - break; - case MSS_MAC_TX_LOSS_OF_CARRIER: - returnval = g_mss_mac.statistics.tx_loss_of_carrier; - break; - case MSS_MAC_TX_NO_CARRIER: - returnval = g_mss_mac.statistics.tx_no_carrier; - break; - case MSS_MAC_TX_LATE_COLLISION: - returnval = g_mss_mac.statistics.tx_late_collision; - break; - case MSS_MAC_TX_EXCESSIVE_COLLISION: - returnval = g_mss_mac.statistics.tx_excessive_collision; - break; - case MSS_MAC_TX_COLLISION_COUNT: - returnval = g_mss_mac.statistics.tx_collision_count; - break; - case MSS_MAC_TX_UNDERFLOW_ERROR: - returnval = g_mss_mac.statistics.tx_underflow_error; - break; - default: - break; - } - - return returnval; -} - - -/**************************** INTERNAL FUNCTIONS ******************************/ - - -/***************************************************************************//** - * Prepares current rx descriptor for receiving. - */ -void -MSS_MAC_prepare_rx_descriptor -( - void -) -{ - uint32_t desc; - - /* update counters */ - desc = g_mss_mac.rx_descriptors[ g_mss_mac.rx_desc_index ].descriptor_0; - if( (desc & RDES0_FF) != 0u ) { - g_mss_mac.statistics.rx_filtering_fail++; - } - if( (desc & RDES0_DE) != 0u ) { - g_mss_mac.statistics.rx_descriptor_error++; - } - if( (desc & RDES0_RF) != 0u ) { - g_mss_mac.statistics.rx_runt_frame++; - } - if( (desc & RDES0_FS) == 0u ) { - g_mss_mac.statistics.rx_not_first++; - } - if( (desc & RDES0_LS) == 0u ) { - g_mss_mac.statistics.rx_not_last++; - } - if( (desc & RDES0_TL) != 0u ) { - g_mss_mac.statistics.rx_frame_too_long++; - } - if( (desc & RDES0_CS) != 0u ) { - g_mss_mac.statistics.rx_collision_seen++; - } - if( (desc & RDES0_CE) != 0u ) { - g_mss_mac.statistics.rx_crc_error++; - } - - desc = MAC->CSR8; - g_mss_mac.statistics.rx_fifo_overflow += - (desc & (CSR8_OCO_MASK|CSR8_FOC_MASK)) >> CSR8_FOC_SHIFT; - g_mss_mac.statistics.rx_missed_frame += - (desc & (CSR8_MFO_MASK|CSR8_MFC_MASK)); - - /* Give ownership of descriptor to the MAC */ - g_mss_mac.rx_descriptors[ g_mss_mac.rx_desc_index ].descriptor_0 = RDES0_OWN; - g_mss_mac.rx_desc_index = (g_mss_mac.rx_desc_index + 1u) % RX_RING_SIZE; - - /* Start receive */ - MAC_start_receiving(); -} - - -/***************************************************************************//** - * Prepares a setup frame and sends it to MAC. - * This function is blocking. - * @return #MAC_OK if everything is ok. - * #MAC_TIME_OUT if timed out before packet send. - */ -static int32_t -MAC_send_setup_frame -( - void -) -{ - volatile MAC_descriptor_t descriptor; - uint8_t frame_data[192]; - uint8_t *data; - int32_t a,b,c,d; - int32_t ret; - - /* prepare descriptor */ - descriptor.descriptor_0 = TDES0_OWN; - descriptor.descriptor_1 = TDES1_SET | TDES1_TER | - (sizeof(frame_data) << TDES1_TBS1_OFFSET); - - if( (g_mss_mac.flags & FLAG_PERFECT_FILTERING) == 0u ) { - descriptor.descriptor_1 |= TDES1_FT0; - } - - descriptor.buffer_1 = (uint32_t)frame_data; - descriptor.buffer_2 = 0u; - - /* prepare frame */ - if( (g_mss_mac.flags & FLAG_PERFECT_FILTERING) != 0u ) { - b = 0; - d = 12; - c = 90; - } else { - b = 156; - d = 0; - c = 64; - } - - data = g_mss_mac.mac_address; - frame_data[b] = data[0]; - frame_data[b+1] = data[1]; - frame_data[b+4] = data[2]; - frame_data[b+5] = data[3]; - frame_data[b+8] = data[4]; - frame_data[b+9] = data[5]; - - data = g_mss_mac.mac_filter_data; - for( a = 0; a < c; ) { - frame_data[d] = data[a++]; - frame_data[d+1] = data[a++]; - frame_data[d+4] = data[a++]; - frame_data[d+5] = data[a++]; - frame_data[d+8] = data[a++]; - frame_data[d+9] = data[a++]; - d += 12; - } - - /* Stop transmission */ - ret = MAC_stop_transmission(); - configASSERT( ret == MAC_OK ); - - ret = MAC_stop_receiving(); - configASSERT( ret == MAC_OK ); - - /* Set descriptor */ - MAC->CSR4 = (uint32_t)&descriptor; - - /* Start transmission */ - MAC_start_transmission(); - - /* Wait until transmission over */ - ret = MAC_OK; - MAC_set_time_out( (uint32_t)SETUP_FRAME_TIME_OUT ); - - while( (((MAC->CSR5 & CSR5_TS_MASK) >> CSR5_TS_SHIFT) != - CSR5_TS_SUSPENDED) && (MAC_OK == ret) ) - { - /* transmit poll demand */ - MAC->CSR1 = 1u; - if( MAC_get_time_out() == 0u ) { - ret = MAC_TIME_OUT; - } - } - - MAC_CHECK( MAC_stop_transmission() == MAC_OK, MAC_FAIL ); - - /* Set tx descriptor */ - MAC->CSR4 = (uint32_t)g_mss_mac.tx_descriptors; - - /* Start receiving and transmission */ - MAC_start_receiving(); - MAC_start_transmission(); - - return ret; -} - - -/***************************************************************************//** - * Stops transmission. - * Function will wait until transmit operation enters stop state. - * - * @return #MAC_OK if everything is ok. - * #MAC_TIME_OUT if timed out. - */ -static int32_t -MAC_stop_transmission -( - void -) -{ - int32_t retval = MAC_OK; - MAC_set_time_out( (uint16_t)STATE_CHANGE_TIME_OUT ); - - while( (((MAC->CSR5 & CSR5_TS_MASK) >> CSR5_TS_SHIFT) != - CSR5_TS_STOPPED) && (retval == MAC_OK) ) - { - MAC_BITBAND->CSR6_ST = 0u; - if( MAC_get_time_out() == 0u ) { - retval = MAC_TIME_OUT; - } - } - return retval; -} - - -/***************************************************************************//** - * Starts transmission. - */ -static void -MAC_start_transmission -( - void -) -{ - MAC_BITBAND->CSR6_ST = 1u; -} - - -/***************************************************************************//** - * Stops transmission. - * Function will wait until transmit operation enters stop state. - * - * @return #MAC_OK if everything is ok. - * #MAC_TIME_OUT if timed out. - */ -static int32_t -MAC_stop_receiving -( - void -) -{ - int32_t retval = MAC_OK; - MAC_set_time_out( (uint16_t)STATE_CHANGE_TIME_OUT ); - - while( (((MAC->CSR5 & CSR5_RS_MASK) >> CSR5_RS_SHIFT) != CSR5_RS_STOPPED) - && (retval == MAC_OK) ) - { - MAC_BITBAND->CSR6_SR = 0u; - if( MAC_get_time_out() == 0u ) { - retval = MAC_TIME_OUT; - } - } - - return retval; -} - - -/***************************************************************************//** - * Starts transmission. - */ -static void -MAC_start_receiving -( - void -) -{ - MAC_BITBAND->CSR6_SR = 1u; -} - - -/***************************************************************************//** - * Dismisses bad frames. - * - * @return dismissed frame count. - */ -static int32_t -MAC_dismiss_bad_frames -( - void -) -{ - int32_t dc = 0; - int8_t cont = 1; - - if( MAC_BITBAND->CSR6_PB != 0u ) { - /* User wants bad frames too, don't dismiss anything */ - cont = 0; - } - - while( ( (g_mss_mac.rx_descriptors[ g_mss_mac.rx_desc_index ].descriptor_0 & - RDES0_OWN) == 0u) && (cont == 1) ) /* Host owns this descriptor */ - { - /* check error summary */ - if( (g_mss_mac.rx_descriptors[ g_mss_mac.rx_desc_index ].descriptor_0 & - (RDES0_ES | RDES0_LS | RDES0_FS)) != (RDES0_LS | RDES0_FS) ) - { - MSS_MAC_prepare_rx_descriptor(); - dc++; - } - else - { - cont = 0; - } - } - - return dc; -} - -/***************************************************************************//** - * Sets time out value. - * #MAC_get_time_out must be called frequently to make time out value updated. - * Because of user may not be using ISR, we can not update time out in ISR. - * - * @time_out time out value in milli seconds. - * Must be smaller than 0x01000000. - */ -static void -MAC_set_time_out -( - uint32_t time_out -) -{ - g_mss_mac.time_out_value = (time_out * 122u) / 10u; - - g_mss_mac.last_timer_value = (uint16_t)( MAC->CSR11 & CSR11_TIM_MASK ); -} - -/***************************************************************************//** - * Returns time out value. - * - * @return timer out value in milli seconds. - */ -static uint32_t -MAC_get_time_out -( - void -) -{ - uint32_t timer; - uint32_t time = 0u; - - timer = ( MAC->CSR11 & CSR11_TIM_MASK ); - - if( timer > g_mss_mac.last_timer_value ) { - time = 0x0000ffffUL; - } - time += g_mss_mac.last_timer_value - timer; - - if( MAC_BITBAND->CSR6_TTM == 0u ) { - time *= 10u; - } - if( g_mss_mac.time_out_value <= time ){ - g_mss_mac.time_out_value = 0u; - } else { - g_mss_mac.time_out_value -= time; - } - - g_mss_mac.last_timer_value = (uint16_t)timer; - - return ((g_mss_mac.time_out_value * 10u) / 122u); -} - -/***************************************************************************//** - * Fills the first n bytes of the memory area pointed to by s with the constant - * byte c. - */ -static void MAC_memset(uint8_t *s, uint8_t c, uint32_t n) -{ - uint8_t *sb = s; - - while( n > 0u ) { - n--; - sb[n] = c; - } -} - -/***************************************************************************//** - * Fills all fields of MAC_instance_t with c. - * - * @return a pointer to the given MAC_instance_t s. - */ -static void MAC_memset_All(MAC_instance_t *s, uint32_t c) -{ - int32_t count; - s->base_address = (addr_t)c; - s->flags = (uint8_t)c; - s->last_error = (int8_t)c; - s->last_timer_value = (uint16_t)c; - s->listener = NULL_callback; - MAC_memset( s->mac_address, (uint8_t)c, 6u ); - MAC_memset( s->mac_filter_data, (uint8_t)c, 90u ); - s->phy_address = (uint8_t)c; - s->rx_desc_index =c; - for(count = 0; countrx_descriptors[count].buffer_1 = c; - s->rx_descriptors[count].buffer_2 = c; - s->rx_descriptors[count].descriptor_0 = c; - s->rx_descriptors[count].descriptor_1 = c; - } - s->statistics.rx_collision_seen =c; - s->statistics.rx_crc_error = c; - s->statistics.rx_descriptor_error = c; - s->statistics.rx_fifo_overflow = c; - s->statistics.rx_filtering_fail = c; - s->statistics.rx_frame_too_long = c; - s->statistics.rx_interrupts = c; - s->statistics.rx_missed_frame = c; - s->statistics.rx_not_first = c; - s->statistics.rx_not_last = c; - s->statistics.rx_runt_frame = c; - s->statistics.tx_collision_count = c; - s->statistics.tx_excessive_collision = c; - s->statistics.tx_interrupts = c; - s->statistics.tx_late_collision = c; - s->statistics.tx_loss_of_carrier = c; - s->statistics.tx_no_carrier = c; - s->statistics.tx_underflow_error = c; - s->time_out_value = c; - s->tx_desc_index = c; - for(count = 0; count < TX_RING_SIZE ;count++) - { - s->tx_descriptors[count].buffer_1 = c; - s->tx_descriptors[count].buffer_2 = c; - s->tx_descriptors[count].descriptor_0 = c; - s->tx_descriptors[count].descriptor_1 = c; - } -} - -/***************************************************************************//** - * Copies n bytes from memory area src to memory area dest. - * The memory areas should not overlap. - * - * @return a pointer to the memory area dest. - */ -static void MAC_memcpy(uint8_t *dest, const uint8_t *src, uint32_t n) -{ - uint8_t *d = dest; - - while( n > 0u ) { - n--; - d[n] = src[n]; - } -} - -/***************************************************************************//** - * Tx has completed, mark the buffers that were assigned to the Tx descriptors - * as free again. - * - */ -void MSS_MAC_FreeTxBuffers( void ) -{ - /* Check the buffers have not already been freed in the first of the - two Tx interrupts - which could potentially happen if the second Tx completed - during the interrupt for the first Tx. */ - if( g_mss_mac.tx_descriptors[ 0 ].buffer_1 != NULL ) - { - if( ( ( (g_mss_mac.tx_descriptors[ 0 ].descriptor_0) & TDES0_OWN) == 0 ) && ( ( (g_mss_mac.tx_descriptors[ 1 ].descriptor_0) & TDES0_OWN) == 0 ) ) - { - configASSERT( g_mss_mac.tx_descriptors[ 0 ].buffer_1 == g_mss_mac.tx_descriptors[ 1 ].buffer_1 ); - MAC_release_buffer( ( unsigned char * ) g_mss_mac.tx_descriptors[ 0 ].buffer_1 ); - - /* Just to mark the fact that the buffer has already been released. */ - g_mss_mac.tx_descriptors[ 0 ].buffer_1 = NULL; - } - } -} - -/***************************************************************************//** - * Look through the array of buffers until one is found that is free for use - - * that is, not currently assigned to an Rx or a Tx descriptor. Mark the buffer - * as in use, then return its address. - * - * @return a pointer to a free buffer. - */ -unsigned char *MAC_obtain_buffer( void ) -{ -long lIndex, lAttempt = 0, lDescriptor, lBufferIsInUse; -unsigned char *pcReturn = NULL; -unsigned char *pcBufferAddress; - - /* Find and return the address of a buffer that is not being used. Mark - the buffer as now in use. */ - while( ( lAttempt <= 1 ) && ( pcReturn == NULL ) ) - { - for( lIndex = 0; lIndex < macNUM_BUFFERS; lIndex++ ) - { - if( ucMACBufferInUse[ lIndex ] == pdFALSE ) - { - pcReturn = &( xMACBuffers.ucBuffer[ lIndex ][ 0 ] ); - ucMACBufferInUse[ lIndex ] = pdTRUE; - break; - } - } - - if( pcReturn == NULL ) - { - /* Did not find a buffer. That should not really happen, but could if - an interrupt was missed. See if any buffers are marked as in use, but - are not actually in use. */ - for( lIndex = 0; lIndex < macNUM_BUFFERS; lIndex++ ) - { - pcBufferAddress = &( xMACBuffers.ucBuffer[ lIndex ][ 0 ] ); - lBufferIsInUse = pdFALSE; - - /* Is the buffer used by an Rx descriptor? */ - for( lDescriptor = 0; lDescriptor < RX_RING_SIZE; lDescriptor++ ) - { - if( g_mss_mac.rx_descriptors[ lDescriptor ].buffer_1 == ( uint32_t ) pcBufferAddress ) - { - /* The buffer is in use by an Rx descriptor. */ - lBufferIsInUse = pdTRUE; - break; - } - } - - if( lBufferIsInUse != pdTRUE ) - { - /* Is the buffer used by an Tx descriptor? */ - for( lDescriptor = 0; lDescriptor < TX_RING_SIZE; lDescriptor++ ) - { - if( g_mss_mac.tx_descriptors[ lDescriptor ].buffer_1 == ( uint32_t ) pcBufferAddress ) - { - /* The buffer is in use by an Tx descriptor. */ - lBufferIsInUse = pdTRUE; - break; - } - } - } - - /* If the buffer was not found to be in use by either a Tx or an - Rx descriptor, but the buffer is marked as in use, then mark the - buffer to be in it's correct state of "not in use". */ - if( ( lBufferIsInUse == pdFALSE ) && ( ucMACBufferInUse[ lIndex ] == pdTRUE ) ) - { - ucMACBufferInUse[ lIndex ] = pdFALSE; - } - } - } - - /* If any buffer states were changed it might be that a buffer can now - be obtained. Try again, but only one more time. */ - lAttempt++; - } - - configASSERT( pcReturn ); - return pcReturn; -} - -/***************************************************************************//** - * Return a buffer to the list of free buffers, it was in use, but is not now. - * - */ -void MAC_release_buffer( unsigned char *pucBufferToRelease ) -{ -long lIndex; - - /* uip_buf is going to point to a different buffer - first ensure the buffer - it is currently pointing to is marked as being free again. */ - for( lIndex = 0; lIndex < macNUM_BUFFERS; lIndex++ ) - { - if( pucBufferToRelease == &( xMACBuffers.ucBuffer[ lIndex ][ 0 ] ) ) - { - /* This is the buffer in use, mark it as being free. */ - ucMACBufferInUse[ lIndex ] = pdFALSE; - break; - } - } - - configASSERT( lIndex < macNUM_BUFFERS ); -} - - - -#ifdef __cplusplus -} -#endif - -/******************************** END OF FILE *********************************/ - diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_ethernet_mac/mss_ethernet_mac.h b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_ethernet_mac/mss_ethernet_mac.h deleted file mode 100644 index 9482bb762..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_ethernet_mac/mss_ethernet_mac.h +++ /dev/null @@ -1,573 +0,0 @@ -/***************************************************************************//** - * @file - * SmartFusion MSS Ethernet MAC header file. - * - * (c) Copyright 2007 Actel Corporation - * - * SVN $Revision: 2364 $ - * SVN $Date: 2010-03-01 17:58:41 +0000 (Mon, 01 Mar 2010) $ - * - *******************************************************************************/ - -#ifndef __MSS_ETHERNET_MAC_H -#define __MSS_ETHERNET_MAC_H 1 - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/******************************** DEFINES *************************************/ - -/******************************************************************************* - * Configure values. - */ -/** - * Receive all. - * When set, all incoming frames are received, regardless of their destination address. - * An address check is performed, and the result of the check is written into the receive - * descriptor. - */ -#define MSS_MAC_CFG_RECEIVE_ALL 0x00000001u - -/** - * Transmit threshold mode. - * 1 - Transmit FIFO threshold set for 100 Mbps mode - * 0 - Transmit FIFO threshold set for 10 Mbps mode - * This bit can be changed only when a transmit process is in a stopped state. - */ -#define MSS_MAC_CFG_TRANSMIT_THRESHOLD_MODE 0x00000002u - -/** - * Store and forward. - * When set, the transmission starts after a full packet is written into the transmit - * FIFO, regardless of the current FIFO threshold level. - * This bit can be changed only when the transmit process is in the stopped state. - */ -#define MSS_MAC_CFG_STORE_AND_FORWARD 0x00000004u - -/** - * Threshold control bits. - * These bits, together with TTM, SF, and PS, control the threshold level for the - * transmit FIFO. - */ -#define MSS_MAC_CFG_THRESHOLD_CONTROL_00 0x00000000u -#define MSS_MAC_CFG_THRESHOLD_CONTROL_01 0x00000008u -#define MSS_MAC_CFG_THRESHOLD_CONTROL_10 0x00000010u -#define MSS_MAC_CFG_THRESHOLD_CONTROL_11 0x00000018u - -/** - * Full-duplex mode. - * 0 - Half-duplex mode
- * 1 - Forcing full-duplex mode
- * Changing of this bit is allowed only when both the transmitter and receiver processes - * are in the stopped state. - */ -#define MSS_MAC_CFG_FULL_DUPLEX_MODE 0x00000020u - -/** - * Pass all multicast. - * When set, all frames with multicast destination addresses will be received, regardless - * of the address check result. - */ -#define MSS_MAC_CFG_PASS_ALL_MULTICAST 0x00000040u - -/** - * Promiscuous mode. - * When set, all frames will be received regardless of the address check result. An - * address check is not performed. - */ -#define MSS_MAC_CFG_PROMISCUOUS_MODE 0x00000080u - -/** - * Inverse filtering (read-only). - * If this bit is set when working in a perfect filtering mode, the receiver performs an - * inverse filtering during the address check process. - * The 'filtering type' bits of the setup frame determine the state of this bit. - */ -#define MSS_MAC_CFG_INVERSE_FILTERING 0x00000100u - -/** - * Pass bad frames. - * When set, Core10/100 transfers all frames into the data buffers, regardless of the - * receive errors. This allows the runt frames, collided fragments, and truncated frames - * to be received. - */ -#define MSS_MAC_CFG_PASS_BAD_FRAMES 0x00000200u - -/** - * Hash-only filtering mode (read-only). - * When set, Core10/100 performs an imperfect filtering over both the multicast and - * physical addresses. - * The 'filtering type' bits of the setup frame determine the state of this bit. - */ -#define MSS_MAC_CFG_HASH_ONLY_FILTERING_MODE 0x00000400u - -/** - * Hash/perfect receive filtering mode (read-only). - * 0 - Perfect filtering of the incoming frames is performed according to the physical - * addresses specified in a setup frame.
- * 1 - Imperfect filtering over the frames with the multicast addresses is performed - * according to the hash table specified in a setup frame.
- * A physical address check is performed according to the CSR6.2 (HO, hash-only) bit. - * When both the HO and HP bits are set, an imperfect filtering is performed on all of - * the addresses. - * The 'filtering type' bits of the setup frame determine the state of this bit. - */ -#define MSS_MAC_CFG_HASH_PERFECT_RECEIVE_FILTERING_MODE 0x00000800u - - -/******************************************************************************* - * Link status values. - */ -#define MSS_MAC_LINK_STATUS_LINK 0x0001u /**< Link up/down */ -#define MSS_MAC_LINK_STATUS_100MB 0x0002u /**< Connection is 100Mb/10Mb */ -#define MSS_MAC_LINK_STATUS_FDX 0x0004u /**< Connection is full/half duplex */ - - -/** - * Size of the max packet that can be received/transmited. - */ -#define MSS_MAX_PACKET_SIZE 1514uL - -/** - * Size of a receive/transmit buffer. - * Buffer size must be enough big to hold a full frame and must be multiple of - * four. For rx buffer +4 bytes allocated for crc values. These bytes doesn't - * copied to the user buffer. - */ -#define MSS_TX_BUFF_SIZE ((MSS_MAX_PACKET_SIZE + 3u) & (~(uint32_t)3)) -#define MSS_RX_BUFF_SIZE ((MSS_MAX_PACKET_SIZE + 7u) & (~(uint32_t)3)) - -/******************************************************************************* - * Time out values. - */ -#define MSS_MAC_NONBLOCKING 0u -#define MSS_MAC_BLOCKING 0xFFFFFFFFUL - -/***************************************************************************//** - * MAC events. - */ -#define MSS_MAC_EVENT_PACKET_SEND 1u -#define MSS_MAC_EVENT_PACKET_RECEIVED 2u - -/***************************************************************************//** - * PHY addresses. - */ -#define MSS_PHY_ADDRESS_MIN 0u -#define MSS_PHY_ADDRESS_MAX 31u -#define MSS_PHY_ADDRESS_AUTO_DETECT 255u - -/***************************************************************************//** - * Listener function type defines the function prototype that might be followed - * by MAC_isr which is triggered with each receive and transmit related interrupts. - * Listener functions should follow the following prototype: - * void MAC_Listener( uint32_t events ); - * The parameter is used to inform the listener function about the triggering event - * or events. Events input to the system are: - * #define MSS_MAC_EVENT_PACKET_SEND 1 - * #define MSS_MAC_EVENT_PACKET_RECEIVED 2 - * Listener function should be defined by the application using this driver if - * needed. This function may be assigned to the driver using MAC_set_callback - * routine and may be un assigned again by using the same routine with a NULL pointer - * as the event listener function. It is recommended to use this property for interrupt - * triggered systems and it is not recommended for polling mechanisms. - */ -typedef void (*MSS_MAC_callback_t)(uint32_t events); - -/***************************************************************************//** - * Statistics counter identifiers are used with MAC_get_statistics routine to - * receive the count of the requested errors/interrupts occurrences. - * - * MSS_MAC_RX_INTERRUPTS - * Used to receive the number of receive interrupts occurred. - * - * MSS_MAC_RX_FILTERING_FAIL - * Used to receive the number of received frames which did not pass the - * address recognition process. - * - * MSS_MAC_RX_DESCRIPTOR_ERROR - * Used to receive the number of occurrences of; no receive buffer was - * available when trying to store the received data. - * - * MSS_MAC_RX_RUNT_FRAME - * Used to receive the number of occurrences of; the frame is damaged by a - * collision or by a premature termination before the end of a collision - * window. - * - * MSS_MAC_RX_NOT_FIRST - * Used to receive the number of occurrences of; start of the frame is not - * the first descriptor of a frame. - * - * MSS_MAC_RX_NOT_LAST - * Used to receive the number of occurrences of; end of the frame is not - * the first descriptor of a frame. - * - * MSS_MAC_RX_FRAME_TOO_LONG - * Used to receive the number of occurrences of; a current frame is longer - * than maximum size of 1,518 bytes, as specified by 802.3. - * - * MSS_MAC_RX_COLLISION_SEEN - * Used to receive the number of occurrences of; a late collision was seen - * (collision after 64 bytes following SFD). - * - * MSS_MAC_RX_CRC_ERROR - * Used to receive the number of occurrences of; a CRC error has occurred - * in the received frame. - * - * MSS_MAC_RX_FIFO_OVERFLOW - * Used to receive the number of frames not accepted due to the receive - * FIFO overflow. - * - * MSS_MAC_RX_MISSED_FRAME - * Used to receive the number of frames not accepted due to the - * unavailability of the receive descriptor. - * - * MSS_MAC_TX_INTERRUPTS - * Used to receive the number of transmit interrupts occurred. - * - * MSS_MAC_TX_LOSS_OF_CARRIER - * Used to receive the number of occurrences of; a loss of the carrier - * during a transmission. - * - * MSS_MAC_TX_NO_CARRIER - * Used to receive the number of occurrences of; the carrier was not asserted - * by an external transceiver during the transmission. - * - * MSS_MAC_TX_LATE_COLLISION - * Used to receive the number of occurrences of; a collision was detected - * after transmitting 64 bytes. - * - * MSS_MAC_TX_EXCESSIVE_COLLISION - * Used to receive the number of occurrences of; the transmission was aborted - * after 16 retries. - * - * MSS_MAC_TX_COLLISION_COUNT - * Used to receive the number of collisions occurred. - * - * MSS_MAC_TX_UNDERFLOW_ERROR - * Used to receive the number of occurrences of; the FIFO was empty during - * the frame transmission. - */ -typedef enum { - MSS_MAC_RX_INTERRUPTS, - MSS_MAC_RX_FILTERING_FAIL, - MSS_MAC_RX_DESCRIPTOR_ERROR, - MSS_MAC_RX_RUNT_FRAME, - MSS_MAC_RX_NOT_FIRST, - MSS_MAC_RX_NOT_LAST, - MSS_MAC_RX_FRAME_TOO_LONG, - MSS_MAC_RX_COLLISION_SEEN, - MSS_MAC_RX_CRC_ERROR, - MSS_MAC_RX_FIFO_OVERFLOW, - MSS_MAC_RX_MISSED_FRAME, - - MSS_MAC_TX_INTERRUPTS, - MSS_MAC_TX_LOSS_OF_CARRIER, - MSS_MAC_TX_NO_CARRIER, - MSS_MAC_TX_LATE_COLLISION, - MSS_MAC_TX_EXCESSIVE_COLLISION, - MSS_MAC_TX_COLLISION_COUNT, - MSS_MAC_TX_UNDERFLOW_ERROR -} mss_mac_statistics_id_t; - -/******************************* FUNCTIONS ************************************/ - -/***************************************************************************//** - * Initializes an Ethernet MAC controller and data structures. - * This function will prepare the Ethernet Controller for first time use in a - * given hardware/software configuration. This function should be called before - * any other Ethernet API functions are called. - * - * Initialization of registers - config registers, enable Tx/Rx interrupts, - * enable Tx/Rx, initialize MAC addr, init PHY, autonegotiation, MAC address - * filter table (unicast/multicast)/hash init - * - */ -void -MSS_MAC_init -( - uint8_t phy_address -); - - -/***************************************************************************//** - * Sets the configuration of the Ethernet Controller. - * After the MAC_init function has been called, this API function can be - * used to configure the various features of the Ethernet Controller. - * - * @param configuration The logical OR of the following values: - * - #MSS_MAC_CFG_RECEIVE_ALL - * - #MSS_MAC_CFG_TRANSMIT_THRESHOLD_MODE - * - #MSS_MAC_CFG_STORE_AND_FORWARD - * - #MSS_MAC_CFG_THRESHOLD_CONTROL_[00,01,10,11] - * - #MSS_MAC_CFG_FULL_DUPLEX_MODE - * - #MSS_MAC_CFG_PASS_ALL_MULTICAST - * - #MSS_MAC_CFG_PROMISCUOUS_MODE - * - #MSS_MAC_CFG_PASS_BAD_FRAMES - * @see MAC_get_configuration() - */ -void -MSS_MAC_configure -( - uint32_t configuration -); - - -/***************************************************************************//** - * Returns the configuration of the Ethernet Controller. - * After the MAC_init function has been called, this API function can be used to - * get the configuration of the Ethernet Controller. - * - * @return The logical OR of the following values: - * - #MSS_MAC_CFG_RECEIVE_ALL - * - #MSS_MAC_CFG_TRANSMIT_THRESHOLD_MODE - * - #MSS_MAC_CFG_STORE_AND_FORWARD - * - #MSS_MAC_CFG_THRESHOLD_CONTROL_[00,01,10,11] - * - #MSS_MAC_CFG_FULL_DUPLEX_MODE - * - #MSS_MAC_CFG_PASS_ALL_MULTICAST - * - #MSS_MAC_CFG_PROMISCUOUS_MODE - * - #MSS_MAC_CFG_INVERSE_FILTERING - * - #MSS_MAC_CFG_PASS_BAD_FRAMES - * - #MSS_MAC_CFG_HASH_ONLY_FILTERING_MODE - * - #MSS_MAC_CFG_HASH_PERFECT_RECEIVE_FILTERING_MODE - * @see MAC_configure() - */ -int32_t -MSS_MAC_get_configuration -( - void -); - - -/***************************************************************************//** - Sends a packet from the uIP stack to the Ethernet Controller. - The MSS_MAC_tx_packet() function is used to send a packet to the MSS Ethernet - MAC. This function writes uip_len bytes of the packet contained in uip_buf into - the transmit FIFO and then activates the transmitter for this packet. If space - is available in the FIFO, the function will return once pac_len bytes of the - packet have been placed into the FIFO and the transmitter has been started. - This function will not wait for the transmission to complete. - - @return - The function returns zero if a timeout occurs otherwise it returns size of the packet. - - @see MAC_rx_packet() - */ - -int32_t -MSS_MAC_tx_packet -( - unsigned short usLength -); - -/***************************************************************************//** - * Returns available packet's size. - * - * @return Size of packet, bigger than 0, if a packet is available, - * if not, returns 0. - * @see MAC_rx_packet() - */ -int32_t -MSS_MAC_rx_pckt_size -( - void -); - - - -/***************************************************************************//** - * Prepares the RX descriptor for receiving packets. - * - * @return void - * @see MAC_rx_packet() - */ -void -MSS_MAC_prepare_rx_descriptor -( - void -); - -/***************************************************************************//** - * Receives a packet from the Ethernet Controller into the uIP stack. - * This function reads a packet from the receive FIFO of the controller and - * places it into uip_buf. - - * @return Size of packet if packet fits in uip_buf. - * 0 if there is no received packet. - * @see MAC_rx_pckt_size() - * @see MAC_tx_packet() - */ -int32_t -MSS_MAC_rx_packet -( - void -); - - -/***************************************************************************//** - Receives a packet from the Ethernet Controller. - The MSS_MAC_rx_packet_ptrset() function is very similar to the MSS_MAC_rx_packet() - function, in that it receives data from the MSS Ethernet MAC. The difference - is that it sets pacData to point to the memory buffer where the MSS Ethernet - MAC copied the received packet instead of copying the received packet into a - buffer provided by the application. After this function is called and data is - used by the user application or copied to another buffer, the - MSS_MAC_prepare_rx_descriptor() function must be called to free up the receive - memory buffer used by the MSS Ethernet MAC - - @param pacData - The pacData parameter is a pointer to a memory buffer pointer. The uint8_t - pointer pointed to by the pacData parameter will contain the address of the - memory buffer containing the received packet after this function returns. The - value of pacData is only valid if the return value is larger than zero, - indicating that a packet was received. - - @param time_out - The time_out parameter is the timeout value for the transmission in milliseconds. - The time_out parameter value can be one of the following values: - • Unsigned integer greater than 0 and less than 0x01000000 - • MSS_MAC_BLOCKING – there will be no timeout. - • MSS_MAC_NONBLOCKING – the function will return immediately if no packets - have been received. - - @return - The function returns the size of the packet if the packet fits in pacData. - Returns zero if there is no received packet. - - @see MAC_rx_pckt_size() - @see MAC_tx_packet() - */ -int32_t -MSS_MAC_rx_packet_ptrset -( - uint8_t **pacData, - uint32_t time_out -); - -/***************************************************************************//** - * Returns the status of connection by reading it from the PHY. - * - * @return the logical OR of the following values: - * #MSS_MAC_LINK_STATUS_LINK - Link up/down - * #MSS_MAC_LINK_STATUS_100MB - Connection is 100Mb/10Mb - * #MSS_MAC_LINK_STATUS_FDX - Connection is full/half duplex - * @see MAC_auto_setup_link() - */ -int32_t -MSS_MAC_link_status -( - void -); - - -/***************************************************************************//** - * Setups the link between PHY and MAC and returns the status of connection. - * - * @return the logical OR of the following values: - * #MSS_MAC_LINK_STATUS_LINK - Link up/down - * #MSS_MAC_LINK_STATUS_100MB - Connection is 100Mb/10Mb - * #MSS_MAC_LINK_STATUS_FDX - Connection is full/half duplex - * @see MAC_link_status() - */ -int32_t -MSS_MAC_auto_setup_link -( - void -); - - -/***************************************************************************//** - * Sets mac address. - * - * @param new_address Pointer to then new address value (6 bytes of data) - * @see MAC_get_mac_address() - */ -void -MSS_MAC_set_mac_address -( - const uint8_t *new_address -); - - -/***************************************************************************//** - * Returns mac address. - * - * @param address Pointer to the parameter to receive the MAC address. - * @see MAC_set_mac_address() - */ -void -MSS_MAC_get_mac_address -( - uint8_t *address -); - - -/***************************************************************************//** - * Sets mac address filters. - * If less than 15 addresses are subscribed, system works on perfect filtering mode - * else system works in hash table mode - * - * @param filter_count number of addresses - * @param filters Pointer to addresses to be filtered - */ -void -MSS_MAC_set_mac_filters -( - uint16_t filter_count, - const uint8_t *filters -); - -/***************************************************************************//** - * Sets MAC event listener. - * Sets the given event listener function to be triggered inside MAC_isr(). - * Assigning NULL pointer as the listener function will disable it. - * - * @param listener function pointer to a MSS_MAC_callback_t function - * @see MAC_isr() - */ -void -MSS_MAC_set_callback -( - MSS_MAC_callback_t listener -); - - -/***************************************************************************//** - * Returns description of latest error happened. - * - * @return A string describing the error. This string must not be - * modified by the application. - */ -const int8_t* -MSS_MAC_last_error -( - void -); - - -/***************************************************************************//** - * Returns statistics counter of stat_id identifier. - * - * @param stat_id Identifier of statistics counter. - * @return Statistics counter of stat_id identifier. - * On error returns 0. - */ -uint32_t -MSS_MAC_get_statistics -( - mss_mac_statistics_id_t stat_id -); - -/* - * The double Tx has completed. Hand back the Tx buffer to the control of - * the MAC hardware. - */ -void MSS_MAC_FreeTxBuffers( void ); -#ifdef __cplusplus -} -#endif - -#endif /* __MSS_ETHERNET_MAC_H */ - diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_ethernet_mac/mss_ethernet_mac_conf.h b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_ethernet_mac/mss_ethernet_mac_conf.h deleted file mode 100644 index ac144b36b..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_ethernet_mac/mss_ethernet_mac_conf.h +++ /dev/null @@ -1,43 +0,0 @@ -/***************************************************************************//** - * @file - * SmartFusion MSS Ethenet MAC configuration header file. - * - * (c) Copyright 2007 Actel Corporation - * - * SVN $Revision: 2299 $ - * SVN $Date: 2010-02-24 21:21:12 +0000 (Wed, 24 Feb 2010) $ - *******************************************************************************/ -#ifndef __MSS_ETHERNET_MAC_CONF_H -#define __MSS_ETHERNET_MAC_CONF_H 1 - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * Default MAC address - */ -#define DEFAULT_MAC_ADDRESS configMAC_ADDR0, configMAC_ADDR1, configMAC_ADDR2, configMAC_ADDR3, configMAC_ADDR4, configMAC_ADDR5 -#define BROADCAST_MAC_ADDRESS 0xFFu,0xFFu,0xFFu,0xFFu,0xFFu,0xFFu - -/** - * Descriptor byte ordering mode. - * 1 - Big-endian mode used for data descriptors
- * 0 - Little-endian mode used for data descriptors
- */ -#define DESCRIPTOR_BYTE_ORDERING_MODE LITTLEENDIAN - -/** - * Big/little endian. - * Selects the byte-ordering mode used by the data buffers. - * 1 - Big-endian mode used for the data buffers - * 0 - Little-endian mode used for the data buffers - */ -#define BUFFER_BYTE_ORDERING_MODE LITTLEENDIAN - -#ifdef __cplusplus -} -#endif - -#endif /* __MSS_ETHERNET_MAC_CONF_H */ - diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_ethernet_mac/mss_ethernet_mac_desc.h b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_ethernet_mac/mss_ethernet_mac_desc.h deleted file mode 100644 index dc697f11a..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_ethernet_mac/mss_ethernet_mac_desc.h +++ /dev/null @@ -1,346 +0,0 @@ -/***************************************************************************//** - * @file - * SmartFusion MSS Ethernet MAC internal defines header file. - * - * (c) Copyright 2007 Actel Corporation - * - * SVN $Revision: 2299 $ - * SVN $Date: 2010-02-24 21:21:12 +0000 (Wed, 24 Feb 2010) $ - *******************************************************************************/ -#ifndef __MSS_ETHERNET_MAC_DESC_H -#define __MSS_ETHERNET_MAC_DESC_H 1 - -#ifdef __cplusplus -extern "C" { -#endif - -/******************************************************************************* - * Receive descriptor bits - */ - -/***************************************************************************//** - * Ownership bit. - * 1 - Core10/100 owns the descriptor.
- * 0 - The host owns the descriptor.
- * Core10/100 will clear this bit when it completes a current frame reception or - * when the data buffers associated with a given descriptor are already full. - */ -#define RDES0_OWN 0x80000000UL - -/***************************************************************************//** - * Filtering fail. - * When set, indicates that a received frame did not pass the address recognition process. - * This bit is valid only for the last descriptor of the frame (RDES0.8 set), when the CSR6.30 (receive all) bit - * is set and the frame is at least 64 bytes long. - */ -#define RDES0_FF 0x40000000UL - -/***************************************************************************//** - * Frame length. - * Indicates the length, in bytes, of the data transferred into a host memory for a given frame - * This bit is valid only when RDES0.8 (last descriptor) is set and RDES0.14 (descriptor error) is cleared. - */ -#define RDES0_FL_MASK 0x00003FFFUL -#define RDES0_FL_OFFSET 16 - -/***************************************************************************//** - * Error summary. - * This bit is a logical OR of the following bits: - * RDES0.1 - CRC error - * RDES0.6 - Collision seen - * RDES0.7 - Frame too long - * RDES0.11 - Runt frame - * RDES0.14 - Descriptor error - * This bit is valid only when RDES0.8 (last descriptor) is set. - */ -#define RDES0_ES 0x00008000UL - -/***************************************************************************//** - * Descriptor error. - * Set by Core10/100 when no receive buffer was available when trying to store the received data. - * This bit is valid only when RDES0.8 (last descriptor) is set. - */ -#define RDES0_DE 0x00004000UL - -/***************************************************************************//** - * Runt frame. - * When set, indicates that the frame is damaged by a collision or by a premature termination before the end - * of a collision window. - * This bit is valid only when RDES0.8 (last descriptor) is set. - */ -#define RDES0_RF 0x00000800UL - -/***************************************************************************//** - * Multicast frame. - * When set, indicates that the frame has a multicast address. - * This bit is valid only when RDES0.8 (last descriptor) is set. - */ -#define RDES0_MF 0x00000400UL - -/***************************************************************************//** - * First descriptor. - * When set, indicates that this is the first descriptor of a frame. - */ -#define RDES0_FS 0x00000200UL - -/***************************************************************************//** - * Last descriptor. - * When set, indicates that this is the last descriptor of a frame. - */ -#define RDES0_LS 0x00000100UL - -/***************************************************************************//** - * Frame too long. - * When set, indicates that a current frame is longer than maximum size of 1,518 bytes, as specified by 802.3. - * TL (frame too long) in the receive descriptor has been set when the received frame is longer than - * 1,518 bytes. This flag is valid in all receive descriptors when multiple descriptors are used for one frame. - */ -#define RDES0_TL 0x00000080UL - -/***************************************************************************//** - * Collision seen. - * When set, indicates that a late collision was seen (collision after 64 bytes following SFD). - * This bit is valid only when RDES0.8 (last descriptor) is set. - */ -#define RDES0_CS 0x00000040UL - -/***************************************************************************//** - * Frame type. - * When set, indicates that the frame has a length field larger than 1,500 (Ethernet-type frame). When - * cleared, indicates an 802.3-type frame. - * This bit is valid only when RDES0.8 (last descriptor) is set. - * Additionally, FT is invalid for runt frames shorter than 14 bytes. - */ -#define RDES0_FT 0x00000020UL - -/***************************************************************************//** - * Report on MII error. - * When set, indicates that an error has been detected by a physical layer chip connected through the MII - * interface. - * This bit is valid only when RDES0.8 (last descriptor) is set. - */ -#define RDES0_RE 0x00000008UL - -/***************************************************************************//** - * Dribbling bit. - * When set, indicates that the frame was not byte-aligned. - * This bit is valid only when RDES0.8 (last descriptor) is set. - */ -#define RDES0_DB 0x00000004UL - -/***************************************************************************//** - * CRC error. - * When set, indicates that a CRC error has occurred in the received frame. - * This bit is valid only when RDES0.8 (last descriptor) is set. - * Additionally, CE is not valid when the received frame is a runt frame. - */ -#define RDES0_CE 0x00000002UL - -/***************************************************************************//** - * This bit is reset for frames with a legal length. - */ -#define RDES0_ZERO 0x00000001UL - -/***************************************************************************//** - * Receive end of ring. - * When set, indicates that this is the last descriptor in the receive descriptor ring. Core10/100 returns to the - * first descriptor in the ring, as specified by CSR3 (start of receive list address). - */ -#define RDES1_RER 0x02000000UL - -/***************************************************************************//** - * Second address chained. - * When set, indicates that the second buffer's address points to the next descriptor and not to the data buffer. - * Note that RER takes precedence over RCH. - */ -#define RDES1_RCH 0x01000000UL - -/***************************************************************************//** - * Buffer 2 size. - * Indicates the size, in bytes, of memory space used by the second data buffer. This number must be a - * multiple of four. If it is 0, Core10/100 ignores the second data buffer and fetches the next data descriptor. - * This number is valid only when RDES1.24 (second address chained) is cleared. - */ -#define RDES1_RBS2_MASK 0x7FF -#define RDES1_RBS2_OFFSET 11 - -/***************************************************************************//** - * Buffer 1 size - * Indicates the size, in bytes, of memory space used by the first data buffer. This number must be a multiple of - * four. If it is 0, Core10/100 ignores the first data buffer and uses the second data buffer. - */ -#define RDES1_RBS1_MASK 0x7FF -#define RDES1_RBS1_OFFSET 0 - - -/******************************************************************************* - * Transmit descriptor bits - */ - -/***************************************************************************//** - * Ownership bit. - * 1 - Core10/100 owns the descriptor. - * 0 - The host owns the descriptor. - * Core10/100 will clear this bit when it completes a current frame transmission or when the data buffers - * associated with a given descriptor are empty. - */ -#define TDES0_OWN 0x80000000uL - -/***************************************************************************//** - * Error summary. - * This bit is a logical OR of the following bits: - * TDES0.1 - Underflow error - * TDES0.8 - Excessive collision error - * TDES0.9 - Late collision - * TDES0.10 - No carrier - * TDES0.11 - Loss of carrier - * This bit is valid only when TDES1.30 (last descriptor) is set. - */ -#define TDES0_ES ((uint32_t)1 << 15) - -/***************************************************************************//** - * Loss of carrier. - * When set, indicates a loss of the carrier during a transmission. - * This bit is valid only when TDES1.30 (last descriptor) is set. - */ -#define TDES0_LO ((uint32_t)1 << 11) - -/***************************************************************************//** - * No carrier. - * When set, indicates that the carrier was not asserted by an external transceiver during the transmission. - * This bit is valid only when TDES1.30 (last descriptor) is set. - */ -#define TDES0_NC ((uint32_t)1 << 10) - -/***************************************************************************//** - * Late collision. - * When set, indicates that a collision was detected after transmitting 64 bytes. - * This bit is not valid when TDES0.1 (underflow error) is set. - * This bit is valid only when TDES1.30 (last descriptor) is set. - */ -#define TDES0_LC ((uint32_t)1 << 9) - -/***************************************************************************//** - * Excessive collisions. - * When set, indicates that the transmission was aborted after 16 retries. - * This bit is valid only when TDES1.30 (last descriptor) is set. - */ -#define TDES0_EC ((uint32_t)1 << 8) - -/***************************************************************************//** - * Collision count. - * This field indicates the number of collisions that occurred before the end of a frame transmission. - * This value is not valid when TDES0.8 (excessive collisions bit) is set. - * This bit is valid only when TDES1.30 (last descriptor) is set. - */ -#define TDES0_CC_MASK 0xFu -#define TDES0_CC_OFFSET 3u - -/***************************************************************************//** - * Underflow error. - * When set, indicates that the FIFO was empty during the frame transmission. - * This bit is valid only when TDES1.30 (last descriptor) is set. - */ -#define TDES0_UF ((uint32_t)1 << 1) - -/***************************************************************************//** - * Deferred. - * When set, indicates that the frame was deferred before transmission. Deferring occurs if the carrier is detected - * when the transmission is ready to start. - * This bit is valid only when TDES1.30 (last descriptor) is set. - */ -#define TDES0_DE (1) - -/***************************************************************************//** - * Interrupt on completion. - * Setting this flag instructs Core10/100 to set CSR5.0 (transmit interrupt) immediately after processing a - * current frame. - * This bit is valid when TDES1.30 (last descriptor) is set or for a setup packet. - */ -#define TDES1_IC ((uint32_t)1 << 31) - -/***************************************************************************//** - * Last descriptor. - * When set, indicates the last descriptor of the frame. - */ -#define TDES1_LS ((uint32_t)1 << 30) - -/***************************************************************************//** - * First descriptor. - * When set, indicates the first descriptor of the frame. - */ -#define TDES1_FS ((uint32_t)1 << 29) - -/***************************************************************************//** - * Filtering type. - * This bit, together with TDES0.22 (FT0), controls a current filtering mode. - * This bit is valid only for the setup frames. - */ -#define TDES1_FT1 ((uint32_t)1 << 28) - -/***************************************************************************//** - * Setup packet. - * When set, indicates that this is a setup frame descriptor. - */ -#define TDES1_SET ((uint32_t)1 << 27) - -/***************************************************************************//** - * Add CRC disable. - * When set, Core10/100 does not append the CRC value at the end of the frame. The exception is when the - * frame is shorter than 64 bytes and automatic byte padding is enabled. In that case, the CRC field is added, - * despite the state of the AC flag. - */ -#define TDES1_AC ((uint32_t)1 << 26) - -/***************************************************************************//** - * Transmit end of ring. - * When set, indicates the last descriptor in the descriptor ring. - */ -#define TDES1_TER ((uint32_t)1 << 25) - -/***************************************************************************//** - * Second address chained. - * When set, indicates that the second descriptor's address points to the next descriptor and not to the data - * buffer. - * This bit is valid only when TDES1.25 (transmit end of ring) is reset. - */ -#define TDES1_TCH ((uint32_t)1 << 24) - -/***************************************************************************//** - * Disabled padding. - * When set, automatic byte padding is disabled. Core10/100 normally appends the PAD field after the INFO - * field when the size of an actual frame is less than 64 bytes. After padding bytes, the CRC field is also - * inserted, despite the state of the AC flag. When DPD is set, no padding bytes are appended. - */ -#define TDES1_DPD ((uint32_t)1 << 23) - -/***************************************************************************//** - * Filtering type. - * This bit, together with TDES0.28 (FT1), controls the current filtering mode. - * This bit is valid only when the TDES1.27 (SET) bit is set. - */ -#define TDES1_FT0 ((uint32_t)1 << 22) - -/***************************************************************************//** - * Buffer 2 size. - * Indicates the size, in bytes, of memory space used by the second data buffer. If it is zero, Core10/100 ignores - * the second data buffer and fetches the next data descriptor. - * This bit is valid only when TDES1.24 (second address chained) is cleared. - */ -#define TDES1_TBS2_MASK 0x7FF -#define TDES1_TBS2_OFFSET 11u - -/***************************************************************************//** - * Buffer 1 size. - * Indicates the size, in bytes, of memory space used by the first data buffer. If it is 0, Core10/100 ignores the - * first data buffer and uses the second data buffer. - */ -#define TDES1_TBS1_MASK 0x7FF -#define TDES1_TBS1_OFFSET 0u - -#ifdef __cplusplus -} -#endif - -#endif /* __MSS_ETHERNET_MAC_DESC_H */ - diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_ethernet_mac/mss_ethernet_mac_regs.h b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_ethernet_mac/mss_ethernet_mac_regs.h deleted file mode 100644 index 0a8578f97..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_ethernet_mac/mss_ethernet_mac_regs.h +++ /dev/null @@ -1,1205 +0,0 @@ -/***************************************************************************//** - * @file - * SmartFusion MSS Ethernet MAC registers. - * - * (c) Copyright 2007 Actel Corporation - * - * IP core registers definitions. This file contains the definitions required - * for accessing the IP core through the hardware abstraction layer (HAL). - * This file was automatically generated, using "get_header.exe" version 0.4.0, - * from the IP-XACT description for: - * - * - * SVN $Revision: 2364 $ - * SVN $Date: 2010-03-01 17:58:41 +0000 (Mon, 01 Mar 2010) $ - * - *******************************************************************************/ -#ifndef MSS_ETHERNET_MAC_REGISTERS_H_ -#define MSS_ETHERNET_MAC_REGISTERS_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include "../../CMSIS/a2fxxxm3.h" -#include "mss_ethernet_mac.h" -#include "mss_ethernet_mac_user_cfg.h" - -typedef uint32_t addr_t; - - -/***************************************************************************//** - * Descriptor structure - */ -#include "pack_struct_start.h" -typedef struct { - volatile uint32_t descriptor_0; - volatile uint32_t descriptor_1; - volatile uint32_t buffer_1; - volatile uint32_t buffer_2; -} MAC_descriptor_t -#include "pack_struct_end.h" - - -/***************************************************************************//** - * There should be one instance of this structure for each instance of - * the MAC in your system. MSS_MAC_init routine initializes this structure. - * It is used to identify the various MACs in your system and an initilized - * MAC instance's structure should be passed as first parameter to MAC functions - * to identify which MAC should perform the requested operation. - * Software using the MAC driver should only need to create one single - * instance of this data structure for each MAC hardware instance in - * the system. Using MAC_get_configuration routine, latest status of the driver - * may be read by receiving its flags field, similarly MAC_configure routine lets - * you modify some of these flags. - */ -#include "net/pack_struct_start.h" -typedef struct { - addr_t base_address; /**< Register base address of the driver*/ - uint8_t flags; /**< Configuration of the driver*/ - int8_t last_error; /**< Index of last error happened inside the driver*/ - uint8_t mac_address[6]; /**< MAC address of the drived instance*/ - uint8_t mac_filter_data[90]; /**< MAC filter data, 15 addresses to be used for - received data filtering*/ - uint16_t last_timer_value; /**< Last read value of timer */ - uint32_t time_out_value; /**< Time out value */ - MSS_MAC_callback_t listener; /**< Pointer to the call-back function to be triggered - when a package is received*/ - - /* transmit related info: */ - uint32_t tx_desc_index; /**< index of the transmit descriptor getting used*/ - MAC_descriptor_t tx_descriptors[TX_RING_SIZE];/**< array of transmit descriptors*/ - - /* receive related info: */ - uint32_t rx_desc_index; /**< index of the receive descriptor getting used*/ - MAC_descriptor_t rx_descriptors[RX_RING_SIZE];/**< array of receive descriptors*/ - - uint8_t phy_address; /**< MII address of the connected PHY*/ - - #include "pack_struct_start.h" - struct { - uint32_t rx_interrupts; /**< Number of receive interrupts occurred.*/ - uint32_t rx_filtering_fail; /**< Number of received frames which did not pass - the address recognition process.*/ - uint32_t rx_descriptor_error; /**< Number of occurrences of; no receive buffer was - available when trying to store the received data.*/ - uint32_t rx_runt_frame; /**< Number of occurrences of; the frame is damaged by - a collision or by a premature termination before - the end of a collision window.*/ - uint32_t rx_not_first; /**< Number of occurrences of; start of the frame is - not the first descriptor of a frame.*/ - uint32_t rx_not_last; /**< Number of occurrences of; end of the frame is not - the first descriptor of a frame.*/ - uint32_t rx_frame_too_long; /**< Number of occurrences of; a current frame is - longer than maximum size of 1,518 bytes, as specified - by 802.3.*/ - uint32_t rx_collision_seen; /**< Number of occurrences of; a late collision was seen - (collision after 64 bytes following SFD).*/ - uint32_t rx_crc_error; /**< Number of occurrences of; a CRC error has occurred - in the received frame.*/ - uint32_t rx_fifo_overflow; /**< Number of frames not accepted due to the receive - FIFO overflow.*/ - uint32_t rx_missed_frame; /**< Number of frames not accepted due to the - unavailability of the receive descriptor.*/ - - uint32_t tx_interrupts; /**< Number of transmit interrupts occurred.*/ - uint32_t tx_loss_of_carrier; /**< Number of occurrences of; a loss of the carrier - during a transmission.*/ - uint32_t tx_no_carrier; /**< Number of occurrences of; the carrier was not asserted - by an external transceiver during the transmission.*/ - uint32_t tx_late_collision; /**< Number of occurrences of; a collision was detected - after transmitting 64 bytes.*/ - uint32_t tx_excessive_collision;/**< Number of occurrences of; the transmission was - aborted after 16 retries.*/ - uint32_t tx_collision_count; /**< Number of collisions occurred.*/ - uint32_t tx_underflow_error; /**< Number of occurrences of; the FIFO was empty during - the frame transmission.*/ - } statistics - #include "pack_struct_end.h" -} MAC_instance_t -#include "net/pack_struct_end.h" - - -/*------------------------------------------------------------------------------ - * - */ -typedef struct -{ - uint32_t CSR0_SWR; - uint32_t CSR0_BAR; - uint32_t CSR0_DSL[5]; - uint32_t CSR0_BLE; - uint32_t CSR0_PBL[6]; - uint32_t CSR0_RESERVED0[3]; - uint32_t CSR0_TAP[3]; - uint32_t CSR0_DBO; - uint32_t CSR0_RESERVED1[11]; - - uint32_t MAC_CSR_RESERVED0[32]; - - uint32_t CSR1[32]; - - uint32_t MAC_CSR_RESERVED1[32]; - - uint32_t CSR2[32]; - - uint32_t MAC_CSR_RESERVED2[32]; - - uint32_t CSR3[32]; - - uint32_t MAC_CSR_RESERVED3[32]; - - uint32_t CSR4[32]; - - uint32_t MAC_CSR_RESERVED4[32]; - - uint32_t CSR5_TI; - uint32_t CSR5_TPS; - uint32_t CSR5_TU; - uint32_t CSR5_RESERVED0[2]; - uint32_t CSR5_UNF; - uint32_t CSR5_RI; - uint32_t CSR5_RU; - uint32_t CSR5_RPS; - uint32_t CSR5_RESERVED1; - uint32_t CSR5_ETI; - uint32_t CSR5_GTE; - uint32_t CSR5_RESERVED2[2]; - uint32_t CSR5_ERI; - uint32_t CSR5_AIS; - uint32_t CSR5_NIS; - uint32_t CSR5_RS[3]; - uint32_t CSR5_TS[3]; - uint32_t CSR5_RESERVED3[9]; - - uint32_t MAC_CSR_RESERVED5[32]; - - uint32_t CSR6_HP; - uint32_t CSR6_SR; - uint32_t CSR6_HO; - uint32_t CSR6_PB; - uint32_t CSR6_IF; - uint32_t CSR6_RESERVED0; - uint32_t CSR6_PR; - uint32_t CSR6_PM; - uint32_t CSR6_RESERVED1; - uint32_t CSR6_FD; - uint32_t CSR6_RESERVED2[3]; - uint32_t CSR6_ST; - uint32_t CSR6_TR[2]; - uint32_t CSR6_RESERVED3[5]; - uint32_t CSR6_SF; - uint32_t CSR6_TTM; - uint32_t CSR6_RESERVED4[7]; - uint32_t CSR6_RA; - uint32_t CSR6_RESERVED5; - - uint32_t MAC_CSR_RESERVED6[32]; - - uint32_t CSR7_TIE; - uint32_t CSR7_TSE; - uint32_t CSR7_TUE; - uint32_t CSR7_RESERVED0[2]; - uint32_t CSR7_UNE; - uint32_t CSR7_RIE; - uint32_t CSR7_RUE; - uint32_t CSR7_RSE; - uint32_t CSR7_RESERVED1; - uint32_t CSR7_ETE; - uint32_t CSR7_GTE; - uint32_t CSR7_RESERVED2[2]; - uint32_t CSR7_ERE; - uint32_t CSR7_AIE; - uint32_t CSR7_NIE; - uint32_t CSR7[15]; - - uint32_t MAC_CSR_RESERVED7[32]; - - uint32_t CSR8[32]; - - uint32_t MAC_CSR_RESERVED8[32]; - - uint32_t CSR9_SCS; - uint32_t CSR9_SCLK; - uint32_t CSR9_SDI; - uint32_t CSR9_SDO; - uint32_t CSR9_RESERVED0[12]; - uint32_t CSR9_MDC; - uint32_t CSR9_MDO; - uint32_t CSR9_MDEN; - uint32_t CSR9_MDI; - uint32_t CSR9_RESERVED1[12]; - - uint32_t MAC_CSR_RESERVED9[32]; - - uint32_t CSR10[32]; - - uint32_t MAC_CSR_RESERVED10[32]; - - uint32_t CSR11_TIM[16]; - uint32_t CSR11_CON; - uint32_t CSR11_NRP[3]; - uint32_t CSR11_RT[4]; - uint32_t CSR11_NTP[3]; - uint32_t CSR11_TT[4]; - uint32_t CSR11_CS; -} MAC_BitBand_TypeDef; - -#define MAC_BITBAND ((MAC_BitBand_TypeDef *) BITBAND_ADDRESS(MAC_BASE)) - -/******************************************************************************* - * CSR0 register: - *------------------------------------------------------------------------------ - * CSR0 - Bus Mode Register - */ -#define CSR0_REG_OFFSET 0x00 - -/*------------------------------------------------------------------------------ - * CSR0_DBO: - * DBO field of register CSR0. - *------------------------------------------------------------------------------ - * Descriptor byte ordering mode - */ -#define CSR0_DBO_OFFSET 0x00 -#define CSR0_DBO_MASK 0x00100000UL -#define CSR0_DBO_SHIFT 20 - -/* - * Allowed values for CSR0_DBO: - *------------------------------------------------------------------------------ - * LITTLEENDIAN: Little endian mode used for data descriptors - * BIGENDIAN: Big endian mode used for data descriptors - */ -#define LITTLEENDIAN 0u -#define BIGENDIAN 1u - -/*------------------------------------------------------------------------------ - * CSR0_TAP: - * TAP field of register CSR0. - *------------------------------------------------------------------------------ - * Transmit automatic polling - */ -#define CSR0_TAP_OFFSET 0x00 -#define CSR0_TAP_MASK 0x000E0000UL -#define CSR0_TAP_SHIFT 17 - -/* - * Allowed values for CSR0_TAP: - *------------------------------------------------------------------------------ - * TAP_DISABLED: TAP disabled - * TAP_819US: TAP 819/81.9us - * TAP_2450US: TAP 2450/245us - * TAP_5730US: TAP 5730/573us - * TAP_51_2US: TAP 51.2/5.12us - * TAP_102_4US: TAP 102.4/10.24us - * TAP_153_6US: TAP 156.6/15.26us - * TAP_358_4US: TAP 358.4/35.84us - */ -#define TAP_DISABLED 0x0 -#define TAP_819US 0x1 -#define TAP_2450US 0x2 -#define TAP_5730US 0x3 -#define TAP_51_2US 0x4 -#define TAP_102_4US 0x5 -#define TAP_153_6US 0x6 -#define TAP_358_4US 0x7 - -/*------------------------------------------------------------------------------ - * CSR0_PBL: - * PBL field of register CSR0. - *------------------------------------------------------------------------------ - * Programmable burst length - */ -#define CSR0_PBL_OFFSET 0x00 -#define CSR0_PBL_MASK 0x00003F00uL -#define CSR0_PBL_SHIFT 8 - -/*------------------------------------------------------------------------------ - * CSR0_BLE: - * BLE field of register CSR0. - *------------------------------------------------------------------------------ - * Big/little endian - */ -#define CSR0_BLE_OFFSET 0x00 -#define CSR0_BLE_MASK 0x00000080uL -#define CSR0_BLE_SHIFT 7 - -/*------------------------------------------------------------------------------ - * CSR0_DSL: - * DSL field of register CSR0. - *------------------------------------------------------------------------------ - * Descriptor skip length - */ -#define CSR0_DSL_OFFSET 0x00 -#define CSR0_DSL_MASK 0x0000007CuL -#define CSR0_DSL_SHIFT 2 - -/*------------------------------------------------------------------------------ - * CSR0_BAR: - * BAR field of register CSR0. - *------------------------------------------------------------------------------ - * Bus arbitration scheme - */ -#define CSR0_BAR_OFFSET 0x00 -#define CSR0_BAR_MASK 0x00000002uL -#define CSR0_BAR_SHIFT 1 - -/*------------------------------------------------------------------------------ - * CSR0_SWR: - * SWR field of register CSR0. - *------------------------------------------------------------------------------ - * Software reset - */ -#define CSR0_SWR_OFFSET 0x00 -#define CSR0_SWR_MASK 0x00000001uL -#define CSR0_SWR_SHIFT 0 - -/******************************************************************************* - * CSR1 register: - *------------------------------------------------------------------------------ - * CSR1 - Transmit Poll Demand Register - */ -#define CSR1_REG_OFFSET 0x08 - -/*------------------------------------------------------------------------------ - * CSR1_TPD3: - * TPD3 field of register CSR1. - *------------------------------------------------------------------------------ - * TPD(31..24) - */ -#define CSR1_TPD3_OFFSET 0x08 -#define CSR1_TPD3_MASK 0xFF000000uL -#define CSR1_TPD3_SHIFT 24 - -/*------------------------------------------------------------------------------ - * CSR1_TPD2: - * TPD2 field of register CSR1. - *------------------------------------------------------------------------------ - * TPD(23..16) - */ -#define CSR1_TPD2_OFFSET 0x08 -#define CSR1_TPD2_MASK 0x00FF0000uL -#define CSR1_TPD2_SHIFT 16 - -/*------------------------------------------------------------------------------ - * CSR1_TPD1: - * TPD1 field of register CSR1. - *------------------------------------------------------------------------------ - * TPD(15..8) - */ -#define CSR1_TPD1_OFFSET 0x08 -#define CSR1_TPD1_MASK 0x0000FF00uL -#define CSR1_TPD1_SHIFT 8 - -/*------------------------------------------------------------------------------ - * CSR1_TPD0: - * TPD0 field of register CSR1. - *------------------------------------------------------------------------------ - * TPD(7..0) - */ -#define CSR1_TPD0_OFFSET 0x08 -#define CSR1_TPD0_MASK 0x000000FFuL -#define CSR1_TPD0_SHIFT 0 - -/******************************************************************************* - * CSR2 register: - *------------------------------------------------------------------------------ - * CSR2 - Receive Poll Demand Register - */ -#define CSR2_REG_OFFSET 0x10 - -/*------------------------------------------------------------------------------ - * CSR2_RPD3: - * RPD3 field of register CSR2. - *------------------------------------------------------------------------------ - * RPD(31..24) - */ -#define CSR2_RPD3_OFFSET 0x10 -#define CSR2_RPD3_MASK 0xFF000000uL -#define CSR2_RPD3_SHIFT 24 - -/*------------------------------------------------------------------------------ - * CSR2_RPD2: - * RPD2 field of register CSR2. - *------------------------------------------------------------------------------ - * RPD(23..16) - */ -#define CSR2_RPD2_OFFSET 0x10 -#define CSR2_RPD2_MASK 0x00FF0000uL -#define CSR2_RPD2_SHIFT 16 - -/*------------------------------------------------------------------------------ - * CSR2_RPD1: - * RPD1 field of register CSR2. - *------------------------------------------------------------------------------ - * RPD(15..8) - */ -#define CSR2_RPD1_OFFSET 0x10 -#define CSR2_RPD1_MASK 0x0000FF00uL -#define CSR2_RPD1_SHIFT 8 - -/*------------------------------------------------------------------------------ - * CSR2_RPD0: - * RPD0 field of register CSR2. - *------------------------------------------------------------------------------ - * RPD(7..0) - */ -#define CSR2_RPD0_OFFSET 0x10 -#define CSR2_RPD0_MASK 0x000000FFuL -#define CSR2_RPD0_SHIFT 0 - -/******************************************************************************* - * CSR3 register: - *------------------------------------------------------------------------------ - * CSR3 - Receive Descriptor List Base Address Register - */ -#define CSR3_REG_OFFSET 0x18 - -/*------------------------------------------------------------------------------ - * CSR3_RLA3: - * RLA3 field of register CSR3. - *------------------------------------------------------------------------------ - * RLA(31..24) - */ -#define CSR3_RLA3_OFFSET 0x18 -#define CSR3_RLA3_MASK 0xFF000000uL -#define CSR3_RLA3_SHIFT 24 - -/*------------------------------------------------------------------------------ - * CSR3_RLA2: - * RLA2 field of register CSR3. - *------------------------------------------------------------------------------ - * RLA(23..16) - */ -#define CSR3_RLA2_OFFSET 0x18 -#define CSR3_RLA2_MASK 0x00FF0000uL -#define CSR3_RLA2_SHIFT 16 - -/*------------------------------------------------------------------------------ - * CSR3_RLA1: - * RLA1 field of register CSR3. - *------------------------------------------------------------------------------ - * RLA(15..8) - */ -#define CSR3_RLA1_OFFSET 0x18 -#define CSR3_RLA1_MASK 0x0000FF00uL -#define CSR3_RLA1_SHIFT 8 - -/*------------------------------------------------------------------------------ - * CSR3_RLA0: - * RLA0 field of register CSR3. - *------------------------------------------------------------------------------ - * RLA(7..0) - */ -#define CSR3_RLA0_OFFSET 0x18 -#define CSR3_RLA0_MASK 0x000000FFuL -#define CSR3_RLA0_SHIFT 0 - -/******************************************************************************* - * CSR4 register: - *------------------------------------------------------------------------------ - * CSR4 - Transmit Descriptor List Base Address Register - */ -#define CSR4_REG_OFFSET 0x20 - -/*------------------------------------------------------------------------------ - * CSR4_TLA3: - * TLA3 field of register CSR4. - *------------------------------------------------------------------------------ - * TLA(31..24) - */ -#define CSR4_TLA3_OFFSET 0x20 -#define CSR4_TLA3_MASK 0xFF000000uL -#define CSR4_TLA3_SHIFT 24 - -/*------------------------------------------------------------------------------ - * CSR4_TLA2: - * TLA2 field of register CSR4. - *------------------------------------------------------------------------------ - * TLA(23..16) - */ -#define CSR4_TLA2_OFFSET 0x20 -#define CSR4_TLA2_MASK 0x00FF0000uL -#define CSR4_TLA2_SHIFT 16 - -/*------------------------------------------------------------------------------ - * CSR4_TLA1: - * TLA1 field of register CSR4. - *------------------------------------------------------------------------------ - * TLA(15..8) - */ -#define CSR4_TLA1_OFFSET 0x20 -#define CSR4_TLA1_MASK 0x0000FF00uL -#define CSR4_TLA1_SHIFT 8 - -/*------------------------------------------------------------------------------ - * CSR4_TLA0: - * TLA0 field of register CSR4. - *------------------------------------------------------------------------------ - * TLA(7..0) - */ -#define CSR4_TLA0_OFFSET 0x20 -#define CSR4_TLA0_MASK 0x000000FFuL -#define CSR4_TLA0_SHIFT 0 - -/******************************************************************************* - * CSR5 register: - *------------------------------------------------------------------------------ - * CSR5 - Status Register - */ -#define CSR5_REG_OFFSET 0x28 -#define CSR5_INT_BITS (CSR5_NIS_MASK | CSR5_AIS_MASK | CSR5_ERI_MASK | \ - CSR5_GTE_MASK | CSR5_ETI_MASK | CSR5_RPS_MASK | CSR5_RU_MASK | \ - CSR5_RI_MASK | CSR5_UNF_MASK | CSR5_TU_MASK | CSR5_TPS_MASK | CSR5_TI_MASK) - -/*------------------------------------------------------------------------------ - * CSR5_TS: - * TS field of register CSR5. - *------------------------------------------------------------------------------ - * Transmit process state - */ -#define CSR5_TS_OFFSET 0x28 -#define CSR5_TS_MASK 0x00700000uL -#define CSR5_TS_SHIFT 20 - -/** 000 - Stopped; RESET or STOP TRANSMIT command issued. */ -#define CSR5_TS_STOPPED 0u -/** 001 - Running, fetching the transmit descriptor. */ -#define CSR5_TS_RUNNING_FD 1u -/** 010 - Running, waiting for end of transmission. */ -#define CSR5_TS_RUNNING_WT 2u -/** 011 - Running, transferring data buffer from host memory to FIFO. */ -#define CSR5_TS_RUNNING_TD 3u -/** 101 - Running, setup packet. */ -#define CSR5_TS_RUNNING_SP 5u -/** 110 - Suspended; FIFO underflow or unavailable descriptor. */ -#define CSR5_TS_SUSPENDED 6u -/** 111 - Running, closing transmit descriptor. */ -#define CSR5_TS_RUNNING_CD 7u - -/*------------------------------------------------------------------------------ - * CSR5_RS: - * RS field of register CSR5. - *------------------------------------------------------------------------------ - * Receive process state - */ -#define CSR5_RS_OFFSET 0x28 -#define CSR5_RS_MASK 0x00060000uL -#define CSR5_RS_SHIFT 17 - -/** 000 - Stopped; RESET or STOP RECEIVE command issued. */ -#define CSR5_RS_STOPPED 0u -/** 001 - Running, fetching the receive descriptor. */ -#define CSR5_RS_RUNNING_FD 1u -/** 010 - Running, waiting for the end-of-receive packet before prefetch of the - *next descriptor. */ -#define CSR5_RS_RUNNING_WR 2u -/** 011 - Running, waiting for the receive packet. */ -#define CSR5_RS_RUNNING_RB 3u -/** 100 - Suspended, unavailable receive buffer. */ -#define CSR5_RS_SUSPENDED 4u -/** 101 - Running, closing the receive descriptor. */ -#define CSR5_RS_RUNNING_CD 5u -/** 111 - Running, transferring data from FIFO to host memory. */ -#define CSR5_RS_RUNNING_TD 7u - -/*------------------------------------------------------------------------------ - * CSR5_NIS: - * NIS field of register CSR5. - *------------------------------------------------------------------------------ - * Normal interrupt summary - */ -#define CSR5_NIS_OFFSET 0x28 -#define CSR5_NIS_MASK 0x00010000uL -#define CSR5_NIS_SHIFT 16 - -/*------------------------------------------------------------------------------ - * CSR5_AIS: - * AIS field of register CSR5. - *------------------------------------------------------------------------------ - * Abnormal interrupt summary - */ -#define CSR5_AIS_OFFSET 0x28 -#define CSR5_AIS_MASK 0x00008000UL -#define CSR5_AIS_SHIFT 15 - -/*------------------------------------------------------------------------------ - * CSR5_ERI: - * ERI field of register CSR5. - *------------------------------------------------------------------------------ - * Early receive interrupt - */ -#define CSR5_ERI_OFFSET 0x28 -#define CSR5_ERI_MASK 0x00004000UL -#define CSR5_ERI_SHIFT 14 - -/*------------------------------------------------------------------------------ - * CSR5_GTE: - * GTE field of register CSR5. - *------------------------------------------------------------------------------ - * General-purpose timer expiration - */ -#define CSR5_GTE_OFFSET 0x28 -#define CSR5_GTE_MASK 0x00000800UL -#define CSR5_GTE_SHIFT 11 - -/*------------------------------------------------------------------------------ - * CSR5_ETI: - * ETI field of register CSR5. - *------------------------------------------------------------------------------ - * Early transmit interrupt - */ -#define CSR5_ETI_OFFSET 0x28 -#define CSR5_ETI_MASK 0x00000400UL -#define CSR5_ETI_SHIFT 10 - -/*------------------------------------------------------------------------------ - * CSR5_RPS: - * RPS field of register CSR5. - *------------------------------------------------------------------------------ - * Receive process stopped - */ -#define CSR5_RPS_OFFSET 0x28 -#define CSR5_RPS_MASK 0x00000100UL -#define CSR5_RPS_SHIFT 8 - -/*------------------------------------------------------------------------------ - * CSR5_RU: - * RU field of register CSR5. - *------------------------------------------------------------------------------ - * Receive buffer unavailable - */ -#define CSR5_RU_OFFSET 0x28 -#define CSR5_RU_MASK 0x00000080UL -#define CSR5_RU_SHIFT 7 - -/*------------------------------------------------------------------------------ - * CSR5_RI: - * RI field of register CSR5. - *------------------------------------------------------------------------------ - * Receive interrupt - */ -#define CSR5_RI_OFFSET 0x28 -#define CSR5_RI_MASK 0x00000040UL -#define CSR5_RI_SHIFT 6 - -/*------------------------------------------------------------------------------ - * CSR5_UNF: - * UNF field of register CSR5. - *------------------------------------------------------------------------------ - * Transmit underflow - */ -#define CSR5_UNF_OFFSET 0x28 -#define CSR5_UNF_MASK 0x00000020UL -#define CSR5_UNF_SHIFT 5 - -/*------------------------------------------------------------------------------ - * CSR5_TU: - * TU field of register CSR5. - *------------------------------------------------------------------------------ - * Transmit buffer unavailable - */ -#define CSR5_TU_OFFSET 0x28 -#define CSR5_TU_MASK 0x00000004UL -#define CSR5_TU_SHIFT 2 - -/*------------------------------------------------------------------------------ - * CSR5_TPS: - * TPS field of register CSR5. - *------------------------------------------------------------------------------ - * Transmit process stopped - */ -#define CSR5_TPS_OFFSET 0x28 -#define CSR5_TPS_MASK 0x00000002UL -#define CSR5_TPS_SHIFT 1 - -/*------------------------------------------------------------------------------ - * CSR5_TI: - * TI field of register CSR5. - *------------------------------------------------------------------------------ - * Transmit interrupt - */ -#define CSR5_TI_OFFSET 0x28 -#define CSR5_TI_MASK 0x00000001UL -#define CSR5_TI_SHIFT 0 - -/******************************************************************************* - * CSR6 register: - *------------------------------------------------------------------------------ - * CSR6 - Operation Mode Register - */ -#define CSR6_REG_OFFSET 0x30 - -/*------------------------------------------------------------------------------ - * CSR6_RA: - * RA field of register CSR6. - *------------------------------------------------------------------------------ - * Receive all - */ -#define CSR6_RA_OFFSET 0x30 -#define CSR6_RA_MASK 0x40000000UL -#define CSR6_RA_SHIFT 30 - -/*------------------------------------------------------------------------------ - * CSR6_TTM: - * TTM field of register CSR6. - *------------------------------------------------------------------------------ - * Transmit threshold mode - */ -#define CSR6_TTM_OFFSET 0x30 -#define CSR6_TTM_MASK 0x00400000UL -#define CSR6_TTM_SHIFT 22 - -/*------------------------------------------------------------------------------ - * CSR6_SF: - * SF field of register CSR6. - *------------------------------------------------------------------------------ - * Store and forward - */ -#define CSR6_SF_OFFSET 0x30 -#define CSR6_SF_MASK 0x00200000UL -#define CSR6_SF_SHIFT 21 - -/*------------------------------------------------------------------------------ - * CSR6_TR: - * TR field of register CSR6. - *------------------------------------------------------------------------------ - * Threshold control bits - */ -#define CSR6_TR_OFFSET 0x30 -#define CSR6_TR_MASK 0x0000C000UL -#define CSR6_TR_SHIFT 14 - -/*------------------------------------------------------------------------------ - * CSR6_ST: - * ST field of register CSR6. - *------------------------------------------------------------------------------ - * Start/stop transmit command - */ -#define CSR6_ST_OFFSET 0x30 -#define CSR6_ST_MASK 0x00002000UL -#define CSR6_ST_SHIFT 13 - -/*------------------------------------------------------------------------------ - * CSR6_FD: - * FD field of register CSR6. - *------------------------------------------------------------------------------ - * Full-duplex mode - */ -#define CSR6_FD_OFFSET 0x30 -#define CSR6_FD_MASK 0x00000200UL -#define CSR6_FD_SHIFT 9 - -/*------------------------------------------------------------------------------ - * CSR6_PM: - * PM field of register CSR6. - *------------------------------------------------------------------------------ - * Pass all multicast - */ -#define CSR6_PM_OFFSET 0x30 -#define CSR6_PM_MASK 0x00000080UL -#define CSR6_PM_SHIFT 7 - -/*------------------------------------------------------------------------------ - * CSR6_PR: - * PR field of register CSR6. - *------------------------------------------------------------------------------ - * Promiscuous mode - */ -#define CSR6_PR_OFFSET 0x30 -#define CSR6_PR_MASK 0x00000040UL -#define CSR6_PR_SHIFT 6 - -/*------------------------------------------------------------------------------ - * CSR6_IF: - * IF field of register CSR6. - *------------------------------------------------------------------------------ - * Inverse filtering - */ -#define CSR6_IF_OFFSET 0x30 -#define CSR6_IF_MASK 0x00000010UL -#define CSR6_IF_SHIFT 4 - -/*------------------------------------------------------------------------------ - * CSR6_PB: - * PB field of register CSR6. - *------------------------------------------------------------------------------ - * Pass bad frames - */ -#define CSR6_PB_OFFSET 0x30 -#define CSR6_PB_MASK 0x00000008UL -#define CSR6_PB_SHIFT 3 - -/*------------------------------------------------------------------------------ - * CSR6_HO: - * HO field of register CSR6. - *------------------------------------------------------------------------------ - * Hash-only filtering mode - */ -#define CSR6_HO_OFFSET 0x30 -#define CSR6_HO_MASK 0x00000004UL -#define CSR6_HO_SHIFT 2 - -/*------------------------------------------------------------------------------ - * CSR6_SR: - * SR field of register CSR6. - *------------------------------------------------------------------------------ - * Start/stop receive command - */ -#define CSR6_SR_OFFSET 0x30 -#define CSR6_SR_MASK 0x00000002UL -#define CSR6_SR_SHIFT 1 - -/*------------------------------------------------------------------------------ - * CSR6_HP: - * HP field of register CSR6. - *------------------------------------------------------------------------------ - * Hash/perfect receive filtering mode - */ -#define CSR6_HP_OFFSET 0x30 -#define CSR6_HP_MASK 0x00000001UL -#define CSR6_HP_SHIFT 0 - -/******************************************************************************* - * CSR7 register: - *------------------------------------------------------------------------------ - * CSR7 - Interrupt Enable Register - */ -#define CSR7_REG_OFFSET 0x38 - -/*------------------------------------------------------------------------------ - * CSR7_NIE: - * NIE field of register CSR7. - *------------------------------------------------------------------------------ - * Normal interrupt summary enable - */ -#define CSR7_NIE_OFFSET 0x38 -#define CSR7_NIE_MASK 0x00010000UL -#define CSR7_NIE_SHIFT 16 - -/*------------------------------------------------------------------------------ - * CSR7_AIE: - * AIE field of register CSR7. - *------------------------------------------------------------------------------ - * Abnormal interrupt summary enable - */ -#define CSR7_AIE_OFFSET 0x38 -#define CSR7_AIE_MASK 0x00008000UL -#define CSR7_AIE_SHIFT 15 - -/*------------------------------------------------------------------------------ - * CSR7_ERE: - * ERE field of register CSR7. - *------------------------------------------------------------------------------ - * Early receive interrupt enable - */ -#define CSR7_ERE_OFFSET 0x38 -#define CSR7_ERE_MASK 0x00004000UL -#define CSR7_ERE_SHIFT 14 - -/*------------------------------------------------------------------------------ - * CSR7_GTE: - * GTE field of register CSR7. - *------------------------------------------------------------------------------ - * General-purpose timer overflow enable - */ -#define CSR7_GTE_OFFSET 0x38 -#define CSR7_GTE_MASK 0x00000800UL -#define CSR7_GTE_SHIFT 11 - -/*------------------------------------------------------------------------------ - * CSR7_ETE: - * ETE field of register CSR7. - *------------------------------------------------------------------------------ - * Early transmit interrupt enable - */ -#define CSR7_ETE_OFFSET 0x38 -#define CSR7_ETE_MASK 0x00000400UL -#define CSR7_ETE_SHIFT 10 - -/*------------------------------------------------------------------------------ - * CSR7_RSE: - * RSE field of register CSR7. - *------------------------------------------------------------------------------ - * Receive stopped enable - */ -#define CSR7_RSE_OFFSET 0x38 -#define CSR7_RSE_MASK 0x00000100UL -#define CSR7_RSE_SHIFT 8 - -/*------------------------------------------------------------------------------ - * CSR7_RUE: - * RUE field of register CSR7. - *------------------------------------------------------------------------------ - * Receive buffer unavailable enable - */ -#define CSR7_RUE_OFFSET 0x38 -#define CSR7_RUE_MASK 0x00000080UL -#define CSR7_RUE_SHIFT 7 - -/*------------------------------------------------------------------------------ - * CSR7_RIE: - * RIE field of register CSR7. - *------------------------------------------------------------------------------ - * Receive interrupt enable - */ -#define CSR7_RIE_OFFSET 0x38 -#define CSR7_RIE_MASK 0x00000040UL -#define CSR7_RIE_SHIFT 6 - -/*------------------------------------------------------------------------------ - * CSR7_UNE: - * UNE field of register CSR7. - *------------------------------------------------------------------------------ - * Underflow interrupt enable - */ -#define CSR7_UNE_OFFSET 0x38 -#define CSR7_UNE_MASK 0x00000020UL -#define CSR7_UNE_SHIFT 5 - -/*------------------------------------------------------------------------------ - * CSR7_TUE: - * TUE field of register CSR7. - *------------------------------------------------------------------------------ - * Transmit buffer unavailable enable - */ -#define CSR7_TUE_OFFSET 0x38 -#define CSR7_TUE_MASK 0x00000004UL -#define CSR7_TUE_SHIFT 2 - -/*------------------------------------------------------------------------------ - * CSR7_TSE: - * TSE field of register CSR7. - *------------------------------------------------------------------------------ - * Transmit stopped enable - */ -#define CSR7_TSE_OFFSET 0x38 -#define CSR7_TSE_MASK 0x00000002UL -#define CSR7_TSE_SHIFT 1 - -/*------------------------------------------------------------------------------ - * CSR7_TIE: - * TIE field of register CSR7. - *------------------------------------------------------------------------------ - * Transmit interrupt enable - */ -#define CSR7_TIE_OFFSET 0x38 -#define CSR7_TIE_MASK 0x00000001UL -#define CSR7_TIE_SHIFT 0 - -/******************************************************************************* - * CSR8 register: - *------------------------------------------------------------------------------ - * CSR8 - Missed Frames and Overflow Counter Register - */ -#define CSR8_REG_OFFSET 0x40 - -/*------------------------------------------------------------------------------ - * CSR8_OCO: - * OCO field of register CSR8. - *------------------------------------------------------------------------------ - * Overflow counter overflow - */ -#define CSR8_OCO_OFFSET 0x40 -#define CSR8_OCO_MASK 0x10000000UL -#define CSR8_OCO_SHIFT 28 - -/*------------------------------------------------------------------------------ - * CSR8_FOC: - * FOC field of register CSR8. - *------------------------------------------------------------------------------ - * FIFO overflow counter - */ -#define CSR8_FOC_OFFSET 0x40 -#define CSR8_FOC_MASK 0x0FFE0000UL -#define CSR8_FOC_SHIFT 17 - -/*------------------------------------------------------------------------------ - * CSR8_MFO: - * MFO field of register CSR8. - *------------------------------------------------------------------------------ - * Missed frame overflow - */ -#define CSR8_MFO_OFFSET 0x40 -#define CSR8_MFO_MASK 0x00010000UL -#define CSR8_MFO_SHIFT 16 - -/*------------------------------------------------------------------------------ - * CSR8_MFC: - * MFC field of register CSR8. - *------------------------------------------------------------------------------ - * Missed frame counter - */ -#define CSR8_MFC_OFFSET 0x40 -#define CSR8_MFC_MASK 0x0000FFFFUL -#define CSR8_MFC_SHIFT 0 - -/******************************************************************************* - * CSR9 register: - *------------------------------------------------------------------------------ - * CSR9 - MII Management and Serial ROM Interface Register - */ -#define CSR9_REG_OFFSET 0x48 - -/*------------------------------------------------------------------------------ - * CSR9_MDI: - * MDI field of register CSR9. - *------------------------------------------------------------------------------ - * MII management data in signal - */ -#define CSR9_MDI_OFFSET 0x48 -#define CSR9_MDI_MASK 0x00080000UL -#define CSR9_MDI_SHIFT 19 - -/*------------------------------------------------------------------------------ - * CSR9_MII: - * MII field of register CSR9. - *------------------------------------------------------------------------------ - * MII management operation mode - */ -#define CSR9_MII_OFFSET 0x48 -#define CSR9_MII_MASK 0x00040000UL -#define CSR9_MII_SHIFT 18 - -/*------------------------------------------------------------------------------ - * CSR9_MDO: - * MDO field of register CSR9. - *------------------------------------------------------------------------------ - * MII management write data - */ -#define CSR9_MDO_OFFSET 0x48 -#define CSR9_MDO_MASK 0x00020000UL -#define CSR9_MDO_SHIFT 17 - -/*------------------------------------------------------------------------------ - * CSR9_MDC: - * MDC field of register CSR9. - *------------------------------------------------------------------------------ - * MII management clock - */ -#define CSR9_MDC_OFFSET 0x48 -#define CSR9_MDC_MASK 0x00010000UL -#define CSR9_MDC_SHIFT 16 - -/*------------------------------------------------------------------------------ - * CSR9_SDO: - * SDO field of register CSR9. - *------------------------------------------------------------------------------ - * Serial ROM data output - */ -#define CSR9_SDO_OFFSET 0x48 -#define CSR9_SDO_MASK 0x00000008UL -#define CSR9_SDO_SHIFT 3 - -/*------------------------------------------------------------------------------ - * CSR9_SDI: - * SDI field of register CSR9. - *------------------------------------------------------------------------------ - * Serial ROM data input - */ -#define CSR9_SDI_OFFSET 0x48 -#define CSR9_SDI_MASK 0x00000004UL -#define CSR9_SDI_SHIFT 2 - -/*------------------------------------------------------------------------------ - * CSR9_SCLK: - * SCLK field of register CSR9. - *------------------------------------------------------------------------------ - * Serial ROM clock - */ -#define CSR9_SCLK_OFFSET 0x48 -#define CSR9_SCLK_MASK 0x00000002UL -#define CSR9_SCLK_SHIFT 1 - -/*------------------------------------------------------------------------------ - * CSR9_SCS: - * SCS field of register CSR9. - *------------------------------------------------------------------------------ - * Serial ROM chip select - */ -#define CSR9_SCS_OFFSET 0x48 -#define CSR9_SCS_MASK 0x00000001UL -#define CSR9_SCS_SHIFT 0 - -/******************************************************************************* - * CSR11 register: - *------------------------------------------------------------------------------ - * CSR11 - General-Purpose Timer and Interrupt Mitigation Control Register - */ -#define CSR11_REG_OFFSET 0x58 - -/*------------------------------------------------------------------------------ - * CSR11_CS: - * CS field of register CSR11. - *------------------------------------------------------------------------------ - * Cycle size - */ -#define CSR11_CS_OFFSET 0x58 -#define CSR11_CS_MASK 0x80000000UL -#define CSR11_CS_SHIFT 31 - -/*------------------------------------------------------------------------------ - * CSR11_TT: - * TT field of register CSR11. - *------------------------------------------------------------------------------ - * Transmit timer - */ -#define CSR11_TT_OFFSET 0x58 -#define CSR11_TT_MASK 0x78000000UL -#define CSR11_TT_SHIFT 27 - -/*------------------------------------------------------------------------------ - * CSR11_NTP: - * NTP field of register CSR11. - *------------------------------------------------------------------------------ - * Number of transmit packets - */ -#define CSR11_NTP_OFFSET 0x58 -#define CSR11_NTP_MASK 0x07000000UL -#define CSR11_NTP_SHIFT 24 - -/*------------------------------------------------------------------------------ - * CSR11_RT: - * RT field of register CSR11. - *------------------------------------------------------------------------------ - * Receive timer - */ -#define CSR11_RT_OFFSET 0x58 -#define CSR11_RT_MASK 0x00F00000UL -#define CSR11_RT_SHIFT 20 - -/*------------------------------------------------------------------------------ - * CSR11_NRP: - * NRP field of register CSR11. - *------------------------------------------------------------------------------ - * Number of receive packets - */ -#define CSR11_NRP_OFFSET 0x58 -#define CSR11_NRP_MASK 0x000E0000UL -#define CSR11_NRP_SHIFT 17 - -/*------------------------------------------------------------------------------ - * CSR11_CON: - * CON field of register CSR11. - *------------------------------------------------------------------------------ - * Continuous mode - */ -#define CSR11_CON_OFFSET 0x58 -#define CSR11_CON_MASK 0x00010000UL -#define CSR11_CON_SHIFT 16 - -/*------------------------------------------------------------------------------ - * CSR11_TIM: - * TIM field of register CSR11. - *------------------------------------------------------------------------------ - * Timer value - */ -#define CSR11_TIM_OFFSET 0x58 -#define CSR11_TIM_MASK 0x0000FFFFUL -#define CSR11_TIM_SHIFT 0 - -#ifdef __cplusplus -} -#endif - -#endif /* MSS_ETHERNET_MAC_REGISTERS_H_*/ diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_ethernet_mac/mss_ethernet_mac_user_cfg.h b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_ethernet_mac/mss_ethernet_mac_user_cfg.h deleted file mode 100644 index 8711243f4..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_ethernet_mac/mss_ethernet_mac_user_cfg.h +++ /dev/null @@ -1,26 +0,0 @@ -/******************************************************************************* - * (c) Copyright 2007 Actel Corporation. All rights reserved. - * - * Actel:Firmware:MSS_Ethernet_MAC_Driver:2.0.103 configuration. - * - */ - - -#ifndef ACTEL__FIRMWARE__MSS_ETHERNET_MAC_DRIVER__2_0_103_CONFIGURATION_HEADER -#define ACTEL__FIRMWARE__MSS_ETHERNET_MAC_DRIVER__2_0_103_CONFIGURATION_HEADER - - -#define CORE_VENDOR "Actel" -#define CORE_LIBRARY "Firmware" -#define CORE_NAME "MSS_Ethernet_MAC_Driver" -#define CORE_VERSION "2.0.103" - -#define BUS_ARBITRATION_SCHEME 0 -#define PROGRAMMABLE_BURST_LENGTH 0 -#define RX_RING_SIZE 5 -#define SETUP_FRAME_TIME_OUT 10000 -#define STATE_CHANGE_TIME_OUT 10000 -#define TX_RING_SIZE 2 - -#endif // ACTEL__FIRMWARE__MSS_ETHERNET_MAC_DRIVER__2_0_103_CONFIGURATION_HEADER - diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_ethernet_mac/phy.c b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_ethernet_mac/phy.c deleted file mode 100644 index e0433bace..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_ethernet_mac/phy.c +++ /dev/null @@ -1,390 +0,0 @@ -/***************************************************************************//** - * PHY access methods for DP83848C. - * The implementation in this file is specific to the DP83848C, - * If a different PHY support is required the PHY specific registers must - * be updated. - * (c) Copyright 2007 Actel Corporation - * - * SVN $Revision: 2324 $ - * SVN $Date: 2010-02-26 10:47:36 +0000 (Fri, 26 Feb 2010) $ - * - ******************************************************************************/ - -#ifdef __cplusplus -extern "C" { -#endif - - -#include "mss_ethernet_mac.h" -#include "mss_ethernet_mac_regs.h" - -#include "phy.h" - -#include "FreeRTOS.h" -#include "task.h" - -extern MAC_instance_t g_mss_mac; - -/***************************** MDIO FUNCTIONS *********************************/ - -/* Defines ********************************************************************/ -#define MDIO_START 0x00004000UL -#define MDIO_READ 0x00002000UL -#define MDIO_WRITE 0x00001002UL -#define MDIO_ADDR_OFFSET 7UL -#define MDIO_ADDR_MASK 0x00000f80UL -#define MDIO_REG_ADDR_OFFSET 2UL -#define MDIO_REG_ADDR_MASK 0x0000007cUL -#define PREAMBLECOUNT 32UL -#define ONEMICROSECOND 20UL - -typedef enum { - MDIO_CMD_READ, - MDIO_CMD_WRITE -}mdio_cmd_t; - - - -/***************************************************************************//** - * Set clock high or low. - */ -static void -MDIO_management_clock -( - int32_t clock -) -{ - int32_t volatile a; - - MAC_BITBAND->CSR9_MDC = (uint32_t)clock; - - /* delay for 1us */ - for( a = 0; a < ONEMICROSECOND; a++ ){} -} - - -/***************************************************************************//** - * Send read or write command to PHY. - */ -static void -MDIO_send_cmd -( - uint8_t regad, - mdio_cmd_t mdio_cmd -) -{ - int32_t i; - uint16_t mask, data; - - /* enable MII output */ - MAC_BITBAND->CSR9_MDEN = 1; - - /* send 32 1's preamble */ - MAC_BITBAND->CSR9_MDO = 1; - for (i = 0; i < PREAMBLECOUNT; i++) { - MDIO_management_clock( 0 ); - MDIO_management_clock( 1 ); - } - - /* calculate data bits */ - data = MDIO_START | - (( mdio_cmd == MDIO_CMD_READ ) ? MDIO_READ : MDIO_WRITE ) | - ((g_mss_mac.phy_address << MDIO_ADDR_OFFSET) & MDIO_ADDR_MASK) | - ((regad << MDIO_REG_ADDR_OFFSET) & MDIO_REG_ADDR_MASK); - - /* sent out */ - for( mask = 0x00008000L; mask>0; mask >>= 1 ) - { - if ((mask == 0x2) && (mdio_cmd == MDIO_CMD_READ)) { - /* enable MII input */ - MAC_BITBAND->CSR9_MDEN = 0; - } - - MDIO_management_clock( 0 ); - - /* prepare MDO */ - MAC_BITBAND->CSR9_MDO = (uint32_t)((mask & data) != 0 ? 1UL : 0UL); - - MDIO_management_clock( 1 ); - } -} - - -/***************************************************************************//** - * Reads a PHY register. - */ -static uint16_t -MDIO_read -( - uint8_t regad -) -{ - uint16_t mask; - uint16_t data; - - MDIO_send_cmd( regad, MDIO_CMD_READ); - - /* read data */ - data = 0; - for( mask = 0x00008000L; mask>0; mask >>= 1 ) - { - MDIO_management_clock( 0 ); - - /* read MDI */ - if(MAC_BITBAND-> CSR9_MDI != 0){ - data |= mask; - } - - MDIO_management_clock( 1 ); - } - - MDIO_management_clock( 0 ); - - return data; -} - - -/***************************************************************************//** - * Writes to a PHY register. - */ -static void -MDIO_write -( - uint8_t regad, - uint16_t data -) -{ - uint16_t mask; - - MDIO_send_cmd(regad, MDIO_CMD_WRITE); - - /* write data */ - for( mask = 0x00008000L; mask>0; mask >>= 1 ) - { - MDIO_management_clock( 0 ); - - /* prepare MDO */ - MAC_BITBAND->CSR9_MDO = (uint32_t)((mask & data) != 0 ? 1UL : 0UL); - - MDIO_management_clock( 1 ); - } - - MDIO_management_clock( 0 ); -} - - -/****************************** PHY FUNCTIONS *********************************/ - -/* Defines ********************************************************************/ - -/* Base registers */ -#define PHYREG_MIIMCR 0x00 /**< MII Management Control Register */ -#define MIIMCR_RESET (1<<15) -#define MIIMCR_LOOPBACK (1<<14) -#define MIIMCR_SPEED_SELECT (1<<13) -#define MIIMCR_ENABLE_AUTONEGOTIATION (1<<12) -#define MIIMCR_RESTART_AUTONEGOTIATION (1<<9) -#define MIIMCR_DUPLEX_MODE (1<<8) -#define MIIMCR_COLLISION_TEST (1<<7) - -#define PHYREG_MIIMSR 0x01 /**< MII Management Status Register */ -#define MIIMSR_ANC (1<<5) /**< Auto-Negotiation Completed. */ -#define MIIMSR_LINK (1<<2) /**< Link is established. */ - -#define PHYREG_PHYID1R 0x02 /**< PHY Identifier 1 Register */ -#define PHYREG_PHYID2R 0x03 /**< PHY Identifier 2 Register */ - -#define PHYREG_ANAR 0x04 /**< Auto-Negotiation Advertisement Register */ -#define ANAR_100FD (1<<8) -#define ANAR_100HD (1<<7) -#define ANAR_10FD (1<<6) -#define ANAR_10HD (1<<5) - -#define PHYREG_ANLPAR 0x05 /**< Auto-Negotiation Link Partner Ability Register */ -#define PHYREG_ANER 0x06 /**< Auto-Negotiation Expansion Register */ -#define PHYREG_NPAR 0x07 /**< Next Page Advertisement Register */ -/* 0x08- 0x0F Reserved */ -#define PHYREG_MFR 0x10 /**< Miscellaneous Features Register */ -#define PHYREG_ICSR 0x11 /**< Interrupt Control/Status Register */ - -#define PHYREG_DR 0x12 /**< Diagnostic Register */ -#define DR_DPLX (1<<11) -#define DR_DATA_RATE (1<<10) - -#define PHYREG_PMLR 0x13 /**< Power Management & Loopback Register */ -/* 0x14 Reserved */ -#define PHYREG_MCR 0x15 /**< Mode Control Register */ -#define MCR_LED_SEL (1<<9) -/* 0x16 Reserved */ -#define PHYREG_DCR 0x17 /**< Disconnect Counter */ -#define PHYREG_RECR 0x18 /**< Receive Error Counter */ -/* 0x19-0x1F Reserved */ - -/***************************************************************************//** - * Probe used PHY. - * - * return PHY address. If PHY don't fount, returns 255. - */ -uint8_t PHY_probe( void ) -{ - uint8_t phy; - uint8_t phy_found; - uint16_t reg; - - phy_found = 0; - for (phy = MSS_PHY_ADDRESS_MIN; phy <= MSS_PHY_ADDRESS_MAX; phy++) { - g_mss_mac.phy_address = phy; - - reg = MDIO_read( PHYREG_PHYID1R ); - - if ((reg != 0x0000ffffUL) && (reg != 0x00000000UL)) { - phy_found = 1; - phy = MSS_PHY_ADDRESS_MAX + 1; - } - } - - if( phy_found == 0 ) { - g_mss_mac.phy_address = MSS_PHY_ADDRESS_AUTO_DETECT; - } - return g_mss_mac.phy_address; -} - - -/***************************************************************************//** - * Resets the PHY. - */ -void PHY_reset( void ) -{ - MDIO_write( PHYREG_MIIMCR, MIIMCR_RESET ); - MDIO_write( PHYREG_MIIMCR, - MIIMCR_ENABLE_AUTONEGOTIATION | - MIIMCR_RESTART_AUTONEGOTIATION | - MIIMCR_COLLISION_TEST ); -} - - -/***************************************************************************//** - * Restarts PHY auto-negotiation and wait until it's over. - */ -void PHY_auto_negotiate( void ) -{ - uint16_t reg; - - reg = MDIO_read( PHYREG_MIIMCR ); - MDIO_write( PHYREG_MIIMCR, - (uint16_t)( MIIMCR_ENABLE_AUTONEGOTIATION | - MIIMCR_RESTART_AUTONEGOTIATION | - reg) ); - - for( ;; ) { - reg = MDIO_read( PHYREG_MIIMSR ); - if( (reg & MIIMSR_ANC) != 0 ) { - break; - } else { - vTaskDelay( 200 ); - } - } -} - - -/***************************************************************************//** - * Returns link status. - * - * @return #MAC_LINK_STATUS_LINK if link is up. - */ -uint8_t PHY_link_status( void ) -{ - uint8_t retval = 0; - if(( MDIO_read( PHYREG_MIIMSR ) & MIIMSR_LINK ) != 0 ){ - retval = MSS_MAC_LINK_STATUS_LINK; - } - return retval; -} - - -/***************************************************************************//** - * Returns link type. - * - * @return the logical OR of the following values: - * #MAC_LINK_STATUS_100MB - Connection is 100Mb - * #MAC_LINK_STATUS_FDX - Connection is full duplex - */ -uint8_t PHY_link_type( void ) -{ - uint16_t diagnostic; - uint8_t type = 0; - - diagnostic = MDIO_read( PHYREG_DR ); - - if( (diagnostic & DR_DPLX) != 0 ) { - type = MSS_MAC_LINK_STATUS_FDX; - } - - if( (diagnostic & DR_DATA_RATE) != 0 ) { - type |= MSS_MAC_LINK_STATUS_100MB; - } - - return type; -} - - -/***************************************************************************//** - * Sets link type. - */ -void -PHY_set_link_type -( - uint8_t type -) -{ - uint16_t reg; - - reg = MDIO_read( PHYREG_ANAR ); - reg |= ANAR_100FD | ANAR_100HD | ANAR_10FD | ANAR_10HD; - - if( (type & MSS_MAC_LINK_STATUS_100MB) == 0 ) { - reg &= ~(ANAR_100FD | ANAR_100HD); - } - - if( (type & MSS_MAC_LINK_STATUS_FDX) == 0 ) { - reg &= ~(ANAR_100FD | ANAR_10FD); - } - - MDIO_write( PHYREG_ANAR, reg ); -} - - -/***************************************************************************//** - * Puts the Phy in Loopback mode - */ -uint16_t -PHY_set_loopback -( - uint8_t enable -) -{ - - uint16_t reg = 0; - - - reg = MDIO_read( PHYREG_MIIMCR ); - // If set to one we need to set the LOCAL Phy loopback - if(enable == 1) - reg |= MIIMCR_LOOPBACK; - else // else we want to clear the bit.. - reg ^= MIIMCR_LOOPBACK; - - - MDIO_write( PHYREG_MIIMCR,reg ); - reg = MDIO_read( PHYREG_MIIMCR ); - - return reg; - -} - -#ifdef __cplusplus -} -#endif - -/******************************** END OF FILE *********************************/ - diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_ethernet_mac/phy.h b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_ethernet_mac/phy.h deleted file mode 100644 index e61daaed2..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_ethernet_mac/phy.h +++ /dev/null @@ -1,78 +0,0 @@ -/***************************************************************************//** - * PHY access methods. - * - * (c) Copyright 2007 Actel Corporation - * - * SVN $Revision: 2293 $ - * SVN $Date: 2010-02-24 13:52:02 +0000 (Wed, 24 Feb 2010) $ - * - ******************************************************************************/ - -#ifndef __MSS_ETHERNET_MAC_PHY_H -#define __MSS_ETHERNET_MAC_PHY_H 1 - -#ifdef __cplusplus -extern "C" { -#endif - -/***************************************************************************//** - * Resets the PHY. - */ -void PHY_reset( void ); - - -/***************************************************************************//** - * Restarts PHY auto-negotiation and wait until it's over. - */ -void PHY_auto_negotiate( void ); - - -/***************************************************************************//** - * Probe used PHY. - * - * return PHY address. If PHY don't fount, returns 255. - */ -uint8_t PHY_probe( void ); - - -/***************************************************************************//** - * Returns link status. - * - * @return #MAC_LINK_STATUS_LINK if link is up. - */ -uint8_t PHY_link_status( void ); - - -/***************************************************************************//** - * Returns link type. - * - * @return the logical OR of the following values: - * #MAC_LINK_STATUS_100MB - Connection is 100Mb - * #MAC_LINK_STATUS_FDX - Connection is full duplex - */ -uint8_t PHY_link_type( void ); - - -/***************************************************************************//** - * Sets link type. - */ -void -PHY_set_link_type -( - uint8_t type -); - -/***************************************************************************//** - * Sets/Clears the phy loop back mode, based on the enable value - */ -uint16_t -PHY_set_loopback -( - uint8_t enable -); - -#ifdef __cplusplus -} -#endif - -#endif /*__MSS_ETHERNET_MAC_PHY_H*/ diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_gpio/mss_gpio.c b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_gpio/mss_gpio.c deleted file mode 100644 index e3be9aaa0..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_gpio/mss_gpio.c +++ /dev/null @@ -1,283 +0,0 @@ -/******************************************************************************* - * (c) Copyright 2008 Actel Corporation. All rights reserved. - * - * SmartFusion microcontroller subsystem GPIO bare metal driver implementation. - * - * SVN $Revision: 1753 $ - * SVN $Date: 2009-12-11 15:12:18 +0000 (Fri, 11 Dec 2009) $ - */ -#include "mss_gpio.h" -#include "../../CMSIS/mss_assert.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/*-------------------------------------------------------------------------*//** -* -*/ -#define GPIO_INT_ENABLE_MASK (uint32_t)0x00000008UL -#define OUTPUT_BUFFER_ENABLE_MASK 0x00000004UL - -#define NB_OF_GPIO (uint32_t)32 - -/*-------------------------------------------------------------------------*//** - * Lookup table of GPIO configuration registers address indexed on GPIO ID. - */ -static uint32_t volatile * const g_config_reg_lut[NB_OF_GPIO] = -{ - &(GPIO->GPIO_0_CFG), - &(GPIO->GPIO_1_CFG), - &(GPIO->GPIO_2_CFG), - &(GPIO->GPIO_3_CFG), - &(GPIO->GPIO_4_CFG), - &(GPIO->GPIO_5_CFG), - &(GPIO->GPIO_6_CFG), - &(GPIO->GPIO_7_CFG), - &(GPIO->GPIO_8_CFG), - &(GPIO->GPIO_9_CFG), - &(GPIO->GPIO_10_CFG), - &(GPIO->GPIO_11_CFG), - &(GPIO->GPIO_12_CFG), - &(GPIO->GPIO_13_CFG), - &(GPIO->GPIO_14_CFG), - &(GPIO->GPIO_15_CFG), - &(GPIO->GPIO_16_CFG), - &(GPIO->GPIO_17_CFG), - &(GPIO->GPIO_18_CFG), - &(GPIO->GPIO_19_CFG), - &(GPIO->GPIO_20_CFG), - &(GPIO->GPIO_21_CFG), - &(GPIO->GPIO_22_CFG), - &(GPIO->GPIO_23_CFG), - &(GPIO->GPIO_24_CFG), - &(GPIO->GPIO_25_CFG), - &(GPIO->GPIO_26_CFG), - &(GPIO->GPIO_27_CFG), - &(GPIO->GPIO_28_CFG), - &(GPIO->GPIO_29_CFG), - &(GPIO->GPIO_30_CFG), - &(GPIO->GPIO_31_CFG) -}; - -/*-------------------------------------------------------------------------*//** - * Lookup table of Cortex-M3 GPIO interrupt number indexed on GPIO ID. - */ -static const IRQn_Type g_gpio_irqn_lut[NB_OF_GPIO] = -{ - GPIO0_IRQn, - GPIO1_IRQn, - GPIO2_IRQn, - GPIO3_IRQn, - GPIO4_IRQn, - GPIO5_IRQn, - GPIO6_IRQn, - GPIO7_IRQn, - GPIO8_IRQn, - GPIO9_IRQn, - GPIO10_IRQn, - GPIO11_IRQn, - GPIO12_IRQn, - GPIO13_IRQn, - GPIO14_IRQn, - GPIO15_IRQn, - GPIO16_IRQn, - GPIO17_IRQn, - GPIO18_IRQn, - GPIO19_IRQn, - GPIO20_IRQn, - GPIO21_IRQn, - GPIO22_IRQn, - GPIO23_IRQn, - GPIO24_IRQn, - GPIO25_IRQn, - GPIO26_IRQn, - GPIO27_IRQn, - GPIO28_IRQn, - GPIO29_IRQn, - GPIO30_IRQn, - GPIO31_IRQn -}; - -/*-------------------------------------------------------------------------*//** - * MSS_GPIO_init - * See "mss_gpio.h" for details of how to use this function. - */ -void MSS_GPIO_init( void ) -{ - uint32_t i; - - /* reset MSS GPIO hardware */ - SYSREG->SOFT_RST_CR |= SYSREG_GPIO_SOFTRESET_MASK; - /* Clear any previously pended MSS GPIO interrupt */ - for ( i = 0U; i < NB_OF_GPIO; ++i ) - { - NVIC_ClearPendingIRQ( g_gpio_irqn_lut[i] ); - } - /* Take MSS GPIO hardware out of reset. */ - SYSREG->SOFT_RST_CR &= ~SYSREG_GPIO_SOFTRESET_MASK; -} - -/*-------------------------------------------------------------------------*//** - * MSS_GPIO_config - * See "mss_gpio.h" for details of how to use this function. - */ -void MSS_GPIO_config -( - mss_gpio_id_t port_id, - uint32_t config -) -{ - uint32_t gpio_idx = (uint32_t)port_id; - - ASSERT( gpio_idx < NB_OF_GPIO ); - - if ( gpio_idx < NB_OF_GPIO ) - { - *(g_config_reg_lut[gpio_idx]) = config; - } -} - -/*-------------------------------------------------------------------------*//** - * MSS_GPIO_set_output - * See "mss_gpio.h" for details of how to use this function. - */ -void MSS_GPIO_set_output -( - mss_gpio_id_t port_id, - uint8_t value -) -{ - uint32_t gpio_idx = (uint32_t)port_id; - - ASSERT( gpio_idx < NB_OF_GPIO ); - - if ( gpio_idx < NB_OF_GPIO ) - { - GPIO_BITBAND->GPIO_OUT[gpio_idx] = (uint32_t)value; - } -} - -/*-------------------------------------------------------------------------*//** - * MSS_GPIO_drive_inout - * See "mss_gpio.h" for details of how to use this function. - */ -void MSS_GPIO_drive_inout -( - mss_gpio_id_t port_id, - mss_gpio_inout_state_t inout_state -) -{ - uint32_t outputs_state; - uint32_t config; - uint32_t gpio_idx = (uint32_t)port_id; - - ASSERT( gpio_idx < NB_OF_GPIO ); - - if ( gpio_idx < NB_OF_GPIO ) - { - switch( inout_state ) - { - case MSS_GPIO_DRIVE_HIGH: - /* Set output high */ - outputs_state = GPIO->GPIO_OUT; - outputs_state |= (uint32_t)1 << gpio_idx; - GPIO->GPIO_OUT = outputs_state; - /* Enable output buffer */ - config = *(g_config_reg_lut[gpio_idx]); - config |= OUTPUT_BUFFER_ENABLE_MASK; - *(g_config_reg_lut[gpio_idx]) = config; - break; - - case MSS_GPIO_DRIVE_LOW: - /* Set output low */ - outputs_state = GPIO->GPIO_OUT; - outputs_state &= ~((uint32_t)((uint32_t)1 << gpio_idx)); - GPIO->GPIO_OUT = outputs_state; - /* Enable output buffer */ - config = *(g_config_reg_lut[gpio_idx]); - config |= OUTPUT_BUFFER_ENABLE_MASK; - *(g_config_reg_lut[gpio_idx]) = config; - break; - - case MSS_GPIO_HIGH_Z: - /* Disable output buffer */ - config = *(g_config_reg_lut[gpio_idx]); - config &= ~OUTPUT_BUFFER_ENABLE_MASK; - *(g_config_reg_lut[gpio_idx]) = config; - break; - - default: - ASSERT(0); - break; - } - } -} - -/*-------------------------------------------------------------------------*//** - * MSS_GPIO_enable_irq - * See "mss_gpio.h" for details of how to use this function. - */ -void MSS_GPIO_enable_irq -( - mss_gpio_id_t port_id -) -{ - uint32_t cfg_value; - uint32_t gpio_idx = (uint32_t)port_id; - - ASSERT( gpio_idx < NB_OF_GPIO ); - - if ( gpio_idx < NB_OF_GPIO ) - { - cfg_value = *(g_config_reg_lut[gpio_idx]); - *(g_config_reg_lut[gpio_idx]) = (cfg_value | GPIO_INT_ENABLE_MASK); - NVIC_EnableIRQ( g_gpio_irqn_lut[gpio_idx] ); - } -} - -/*-------------------------------------------------------------------------*//** - * MSS_GPIO_disable_irq - * See "mss_gpio.h" for details of how to use this function. - */ -void MSS_GPIO_disable_irq -( - mss_gpio_id_t port_id -) -{ - uint32_t cfg_value; - uint32_t gpio_idx = (uint32_t)port_id; - - ASSERT( gpio_idx < NB_OF_GPIO ); - - if ( gpio_idx < NB_OF_GPIO ) - { - cfg_value = *(g_config_reg_lut[gpio_idx]); - *(g_config_reg_lut[gpio_idx]) = (cfg_value & ~GPIO_INT_ENABLE_MASK); - } -} - -/*-------------------------------------------------------------------------*//** - * MSS_GPIO_clear_irq - * See "mss_gpio.h" for details of how to use this function. - */ -void MSS_GPIO_clear_irq -( - mss_gpio_id_t port_id -) -{ - uint32_t gpio_idx = (uint32_t)port_id; - - ASSERT( gpio_idx < NB_OF_GPIO ); - - if ( gpio_idx < NB_OF_GPIO ) - { - GPIO->GPIO_IRQ = ((uint32_t)1) << gpio_idx; - NVIC_ClearPendingIRQ( g_gpio_irqn_lut[gpio_idx] ); - } -} - -#ifdef __cplusplus -} -#endif - diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_gpio/mss_gpio.h b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_gpio/mss_gpio.h deleted file mode 100644 index 60220f128..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_gpio/mss_gpio.h +++ /dev/null @@ -1,488 +0,0 @@ -/******************************************************************************* - * (c) Copyright 2008 Actel Corporation. All rights reserved. - * - * SmartFusion Microcontroller Subsystem GPIO bare metal software driver public - * API. - * - * SVN $Revision: 1751 $ - * SVN $Date: 2009-12-11 15:05:48 +0000 (Fri, 11 Dec 2009) $ - */ - -/*=========================================================================*//** - @mainpage SmartFusion MSS GPIO Bare Metal Driver. - - @section intro_sec Introduction - The SmartFusion Microcontroller Subsystem (MSS) includes a block of 32 general - purpose input/outputs (GPIO). - This software driver provides a set of functions for controlling the MSS GPIO - block as part of a bare metal system where no operating system is available. - This driver can be adapted for use as part of an operating system but the - implementation of the adaptation layer between this driver and the operating - system's driver model is outside the scope of this driver. - - @section hw_dependencies Hardware Flow Dependencies - The configuration of all features of the MSS GPIOs is covered by this driver - with the exception of the SmartFusion IOMUX configuration. SmartFusion allows - multiple non-concurrent use of some external pins through IOMUX configuration. - This feature allows optimizing external pin usage by assigning external pins - for usage by either the microcontroller subsystem or the FPGA fabric. - The MSS GPIO ports 0 to 15 are always connected to external pins but GPIO ports - 16 to 31 are routed through IOMUX to the SmartFusion device external pins. - These IOMUX are configured using the MSS Configurator tool. - Make sure the MSS GPIOs 16 to 31 are enabled in the MSS Configurator tool if - you wish to use them - - @section theory_op Theory of Operation - The MSS GPIO driver uses the SmartFusion "Cortex Microcontroler Software - Interface Standard - Peripheral Access Layer" (CMSIS-PAL) to access MSS hardware - registers. You must ensure that the SmartFusion CMSIS-PAL is either included - in the software toolchain used to build your project or is included in your - project. The most up-to-date SmartFusion CMSIS-PAL files can be obtained using - the Actel Firmware Catalog. - - The MSS GPIO driver functions are grouped into the following categories: - - Initiliazation - - Configuration - - Reading and setting GPIO state - - Interrupt control - - The MSS GPIO driver is initialized through a call to the GPIO_init() function. - The GPIO_init() function must be called before any other GPIO driver functions - can be called. - - Each GPIO port is individually configured through a call to the - MSS_GPIO_config() function. Configuration includes deciding if a GPIO port - will be used as an input, an output or both. GPIO ports configured as inputs can be - further configured to generate interrupts based on the input's state. - Interrupts can be level or edge sensitive. - - The state of the GPIO ports can be read and set using the following functions: - - MSS_GPIO_get_inputs() - - MSS_GPIO_get_outputs() - - MSS_GPIO_set_outputs() - - MSS_GPIO_set_output() - - MSS_GPIO_drive_inout() - - Interrupts generated by GPIO ports configured as inputs are controlled using - the following functions: - - MSS_GPIO_enable_irq() - - MSS_GPIO_disable_irq() - - MSS_GPIO_clear_irq() - - *//*=========================================================================*/ -#ifndef MSS_GPIO_H_ -#define MSS_GPIO_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include "../../CMSIS/a2fxxxm3.h" - -/*-------------------------------------------------------------------------*//** - The mss_gpio_id_t enumeration is used to identify GPIOs as part of the - parameter to functions: - - MSS_GPIO_config(), - - MSS_GPIO_drive_inout(), - - MSS_GPIO_enable_irq(), - - MSS_GPIO_disable_irq(), - - MSS_GPIO_clear_irq() - */ -typedef enum __mss_gpio_id_t -{ - MSS_GPIO_0 = 0, - MSS_GPIO_1 = 1, - MSS_GPIO_2 = 2, - MSS_GPIO_3 = 3, - MSS_GPIO_4 = 4, - MSS_GPIO_5 = 5, - MSS_GPIO_6 = 6, - MSS_GPIO_7 = 7, - MSS_GPIO_8 = 8, - MSS_GPIO_9 = 9, - MSS_GPIO_10 = 10, - MSS_GPIO_11 = 11, - MSS_GPIO_12 = 12, - MSS_GPIO_13 = 13, - MSS_GPIO_14 = 14, - MSS_GPIO_15 = 15, - MSS_GPIO_16 = 16, - MSS_GPIO_17 = 17, - MSS_GPIO_18 = 18, - MSS_GPIO_19 = 19, - MSS_GPIO_20 = 20, - MSS_GPIO_21 = 21, - MSS_GPIO_22 = 22, - MSS_GPIO_23 = 23, - MSS_GPIO_24 = 24, - MSS_GPIO_25 = 25, - MSS_GPIO_26 = 26, - MSS_GPIO_27 = 27, - MSS_GPIO_28 = 28, - MSS_GPIO_29 = 29, - MSS_GPIO_30 = 30, - MSS_GPIO_31 = 31 -} mss_gpio_id_t; - -/*-------------------------------------------------------------------------*//** - GPIO ports definitions used to identify GPIOs as part of the parameter to - function MSS_GPIO_set_outputs(). - These definitions can also be used to identity GPIO through logical - operations on the return value of function MSS_GPIO_get_inputs(). - */ -#define MSS_GPIO_0_MASK 0x00000001UL -#define MSS_GPIO_1_MASK 0x00000002UL -#define MSS_GPIO_2_MASK 0x00000004UL -#define MSS_GPIO_3_MASK 0x00000008UL -#define MSS_GPIO_4_MASK 0x00000010UL -#define MSS_GPIO_5_MASK 0x00000020UL -#define MSS_GPIO_6_MASK 0x00000040UL -#define MSS_GPIO_7_MASK 0x00000080UL -#define MSS_GPIO_8_MASK 0x00000100UL -#define MSS_GPIO_9_MASK 0x00000200UL -#define MSS_GPIO_10_MASK 0x00000400UL -#define MSS_GPIO_11_MASK 0x00000800UL -#define MSS_GPIO_12_MASK 0x00001000UL -#define MSS_GPIO_13_MASK 0x00002000UL -#define MSS_GPIO_14_MASK 0x00004000UL -#define MSS_GPIO_15_MASK 0x00008000UL -#define MSS_GPIO_16_MASK 0x00010000UL -#define MSS_GPIO_17_MASK 0x00020000UL -#define MSS_GPIO_18_MASK 0x00040000UL -#define MSS_GPIO_19_MASK 0x00080000UL -#define MSS_GPIO_20_MASK 0x00100000UL -#define MSS_GPIO_21_MASK 0x00200000UL -#define MSS_GPIO_22_MASK 0x00400000UL -#define MSS_GPIO_23_MASK 0x00800000UL -#define MSS_GPIO_24_MASK 0x01000000UL -#define MSS_GPIO_25_MASK 0x02000000UL -#define MSS_GPIO_26_MASK 0x04000000UL -#define MSS_GPIO_27_MASK 0x08000000UL -#define MSS_GPIO_28_MASK 0x10000000UL -#define MSS_GPIO_29_MASK 0x20000000UL -#define MSS_GPIO_30_MASK 0x40000000UL -#define MSS_GPIO_31_MASK 0x80000000UL - -/*-------------------------------------------------------------------------*//** - * GPIO modes - */ -#define MSS_GPIO_INPUT_MODE 0x0000000002UL -#define MSS_GPIO_OUTPUT_MODE 0x0000000005UL -#define MSS_GPIO_INOUT_MODE 0x0000000003UL - -/*-------------------------------------------------------------------------*//** - * Possible GPIO inputs interrupt configurations. - */ -#define MSS_GPIO_IRQ_LEVEL_HIGH 0x0000000000UL -#define MSS_GPIO_IRQ_LEVEL_LOW 0x0000000020UL -#define MSS_GPIO_IRQ_EDGE_POSITIVE 0x0000000040UL -#define MSS_GPIO_IRQ_EDGE_NEGATIVE 0x0000000060UL -#define MSS_GPIO_IRQ_EDGE_BOTH 0x0000000080UL - -/*-------------------------------------------------------------------------*//** - * Possible states for GPIO configured as INOUT. - */ -typedef enum mss_gpio_inout_state -{ - MSS_GPIO_DRIVE_LOW = 0, - MSS_GPIO_DRIVE_HIGH, - MSS_GPIO_HIGH_Z -} mss_gpio_inout_state_t; - -/*-------------------------------------------------------------------------*//** - The MSS_GPIO_init() function initializes the SmartFusion MSS GPIO block. It - resets the MSS GPIO hardware block and it also clears any pending MSS GPIO - interrupts in the Cortex-M3 interrupt controller. - - @return - none. - */ -void MSS_GPIO_init( void ); - -/*-------------------------------------------------------------------------*//** - The MSS_GPIO_config() function is used to configure an individual - GPIO port. - - @param port_id - The port_id parameter identifies the GPIO port to be configured. - An enumeration item of the form MSS_GPIO_n where n is the number of the GPIO - port is used to identify the GPIO port. For example MSS_GPIO_0 identifies - the first GPIO port and MSS_GPIO_31 the last one. - - @param config - The config parameter specifies the configuration to be applied to the GPIO - port identified by the port_id parameter. It is a logical OR of the required - I/O mode and the required interrupt mode. The interrupt mode is not relevant - if the GPIO is configured as an output only. - These I/O mode constants are allowed: - - MSS_GPIO_INPUT_MODE - - MSS_GPIO_OUTPUT_MODE - - MSS_GPIO_INOUT_MODE - These interrupt mode constants are allowed: - - MSS_GPIO_IRQ_LEVEL_HIGH - - MSS_GPIO_IRQ_LEVEL_LOW - - MSS_GPIO_IRQ_EDGE_POSITIVE - - MSS_GPIO_IRQ_EDGE_NEGATIVE - - MSS_GPIO_IRQ_EDGE_BOTH - - @return - none. - - Example: - The following call will configure GPIO 4 as an input generating interrupts on - a low to high transition of the input: - @code - MSS_GPIO_config( MSS_GPIO_4, MSS_GPIO_INPUT_MODE | MSS_GPIO_IRQ_EDGE_POSITIVE ); - @endcode - */ -void MSS_GPIO_config -( - mss_gpio_id_t port_id, - uint32_t config -); - -/*-------------------------------------------------------------------------*//** - The MSS_GPIO_set_outputs() function is used to set the state of all GPIO - ports configured as outputs. - - @param value - The value parameter specifies the state of the GPIO ports configured as - outputs. It is a bit mask of the form (MSS_GPIO_n_MASK | MSS_GPIO_m_MASK) where n - and m are numbers identifying GPIOs. - For example (MSS_GPIO_0_MASK | MSS_GPIO_1_MASK | MSS_GPIO_2_MASK ) specifies - that the first, second and third GPIOs' must be set high and all other - outputs set low. - The driver provides 32 mask constants, MSS_GPIO_0_MASK to MSS_GPIO_31_MASK - inclusive, for this purpose. - - @return - none. - - Example 1: - Set GPIOs outputs 0 and 8 high and all other GPIO outputs low. - @code - MSS_GPIO_set_outputs( MSS_GPIO_0_MASK | MSS_GPIO_8_MASK ); - @endcode - - Example 2: - Set GPIOs outputs 2 and 4 low without affecting other GPIO outputs. - @code - uint32_t gpio_outputs; - gpio_outputs = MSS_GPIO_get_outputs(); - gpio_outputs &= ~( MSS_GPIO_2_MASK | MSS_GPIO_4_MASK ); - MSS_GPIO_set_outputs( gpio_outputs ); - @endcode - - @see MSS_GPIO_get_outputs() - */ -static __INLINE void -MSS_GPIO_set_outputs -( - uint32_t value -) -{ - GPIO->GPIO_OUT = value; -} - -/*-------------------------------------------------------------------------*//** - The MSS_GPIO_set_output() function is used to set the state of a single GPIO - port configured as output. - - @param port_id - The port_id parameter identifies the GPIO port that is to have its output set. - An enumeration item of the form MSS_GPIO_n where n is the number of the GPIO - port is used to identify the GPIO port. For example MSS_GPIO_0 identifies the - first GPIO port and MSS_GPIO_31 the last one. - - @param value - The value parameter specifies the desired state for the GPIO output. A value - of 0 will set the output low and a value of 1 will set the output high. - - @return - none. - */ -void MSS_GPIO_set_output -( - mss_gpio_id_t port_id, - uint8_t value -); - -/*-------------------------------------------------------------------------*//** - The MSS_GPIO_get_inputs() function is used to read the current state of all - GPIO ports confgured as inputs. - - @return - This function returns a 32 bit unsigned integer where each bit represents - the state of a GPIO input. The least significant bit represents the state of - GPIO input 0 and the most significant bit the state of GPIO input 31. - - Example: - Read and assign the current state of the GPIO outputs to a variable. - @code - uint32_t gpio_inputs; - gpio_inputs = MSS_GPIO_get_inputs(); - @endcode - */ -static __INLINE uint32_t -MSS_GPIO_get_inputs( void ) -{ - return GPIO->GPIO_IN; -} - -/*-------------------------------------------------------------------------*//** - The MSS_GPIO_get_outputs() function is used to read the current state of all - GPIO ports confgured as outputs. - - @return - This function returns a 32 bit unsigned integer where each bit represents - the state of a GPIO output. The least significant bit represents the state - of GPIO output 0 and the most significant bit the state of GPIO output 31. - - Example: - Read and assign the current state of the GPIO outputs to a variable. - @code - uint32_t gpio_outputs; - gpio_outputs = MSS_GPIO_get_outputs(); - @endcode - */ -static __INLINE uint32_t -MSS_GPIO_get_outputs( void ) -{ - return GPIO->GPIO_OUT; -} - -/*-------------------------------------------------------------------------*//** - The MSS_GPIO_drive_inout() function is used to set the output state of a single - GPIO port configured as an INOUT. An INOUT GPIO can be in one of three states: - - high - - low - - high impedance - An INOUT output would typically be used where several devices can drive the - state of a shared signal line. The high and low states are equivalent to the - high and low states of a GPIO configured as output. The high impedance state - is used to prevent the GPIO from driving its output state onto the signal line, - while at the same time allowing the input state of the GPIO to be read - - @param port_id - The port_id parameter identifies the GPIO port for which you want to change - the output state. - An enumeration item of the form MSS_GPIO_n where n is the number of the GPIO - port is used to identify the GPIO port. For example MSS_GPIO_0 identifies - the first GPIO port and MSS_GPIO_31 the last one. - - @param inout_state - The inout_state parameter specifies the state of the GPIO port identified by - the port_id parameter. Allowed values of type mss_gpio_inout_state_t are: - - MSS_GPIO_DRIVE_HIGH - - MSS_GPIO_DRIVE_LOW - - MSS_GPIO_HIGH_Z (high impedance) - - @return - none. - - Example: - The call to MSS_GPIO_drive_inout() below will set the GPIO 7 output to the - high impedance state. - @code - MSS_GPIO_drive_inout( MSS_GPIO_7, MSS_GPIO_HIGH_Z ); - @endcode - */ -void MSS_GPIO_drive_inout -( - mss_gpio_id_t port_id, - mss_gpio_inout_state_t inout_state -); - -/*-------------------------------------------------------------------------*//** - The MSS_GPIO_enable_irq() function is used to enable interrupt generation - for the specified GPIO input. Interrupts are generated based on the state of - the GPIO input and the interrupt mode configured for it by MSS_GPIO_config(). - - @param port_id - The port_id parameter identifies the GPIO port for which you want to enable - interrupt generation. - An enumeration item of the form MSS_GPIO_n where n is the number of the GPIO - port is used to identify the GPIO port. For example MSS_GPIO_0 identifies the - first GPIO port and MSS_GPIO_31 the last one. - - @return - none. - - Example: - The call to MSS_GPIO_enable_irq() below will allow GPIO 8 to generate - interrupts. - @code - MSS_GPIO_enable_irq( MSS_GPIO_8 ); - @endcode - */ -void MSS_GPIO_enable_irq -( - mss_gpio_id_t port_id -); - -/*-------------------------------------------------------------------------*//** - The MSS_GPIO_disable_irq() function is used to disable interrupt generation - for the specified GPIO input. - - @param port_id - The port_id parameter identifies the GPIO port for which you want to disable - interrupt generation. - An enumeration item of the form MSS_GPIO_n where n is the number of the GPIO - port is used to identify the GPIO port. For example MSS_GPIO_0 identifies the - first GPIO port and MSS_GPIO_31 the last one. - - @return - none. - - Example: - The call to MSS_GPIO_disable_irq() below will prevent GPIO 8 from generating - interrupts. - @code - MSS_GPIO_disable_irq( MSS_GPIO_8 ); - @endcode - */ -void MSS_GPIO_disable_irq -( - mss_gpio_id_t port_id -); - -/*-------------------------------------------------------------------------*//** - The MSS_GPIO_clear_irq() function is used to clear a pending interrupt from - the specified GPIO input. - Note: The MSS_GPIO_clear_irq() function must be called as part of any GPIO - interrupt service routine (ISR) in order to prevent the same interrupt event - retriggering a call to the GPIO ISR. The function also clears the interrupt - in the Cortex-M3 interrupt controller through a call to NVIC_ClearPendingIRQ(). - - @param port_id - The port_id parameter identifies the GPIO input for which you want to clear the - interrupt. - An enumeration item of the form MSS_GPIO_n where n is the number of the GPIO - port is used to identify the GPIO port. For example MSS_GPIO_0 identifies the - first GPIO port and MSS_GPIO_31 the last one. - - @return - none. - - Example: - The example below demonstrates the use of the MSS_GPIO_clear_irq() function - as part of the GPIO 9 interrupt service routine. - @code - void GPIO9_IRQHandler( void ) - { - do_interrupt_processing(); - - MSS_GPIO_clear_irq( MSS_GPIO_9 ); - } - @endcode - */ -void MSS_GPIO_clear_irq -( - mss_gpio_id_t port_id -); - -#ifdef __cplusplus -} -#endif - -#endif /* MSS_GPIO_H_ */ diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_pdma/mss_pdma.c b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_pdma/mss_pdma.c deleted file mode 100644 index b49dca4ea..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_pdma/mss_pdma.c +++ /dev/null @@ -1,413 +0,0 @@ -/******************************************************************************* - * (c) Copyright 2008 Actel Corporation. All rights reserved. - * - * SmartFusion microcontroller subsystem Peripheral DMA bare metal software - * driver implementation. - * - * SVN $Revision: 2110 $ - * SVN $Date: 2010-02-05 15:24:19 +0000 (Fri, 05 Feb 2010) $ - */ -#include "mss_pdma.h" -#include "../../CMSIS/mss_assert.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#if defined(__GNUC__) -__attribute__((__interrupt__)) void DMA_IRQHandler( void ); -#else -void DMA_IRQHandler( void ); -#endif - -/***************************************************************************//** - Offset of the posted writes WRITE_ADJ bits in a PDMA channel's configuration - register. - */ -#define CHANNEL_N_POSTED_WRITE_ADJUST_SHIFT 14 - -/*-------------------------------------------------------------------------*//** - * Look-up table use to derice a channel's control register value from the - * requested source/destination. This table is incexed on the pdma_src_dest_t - * enumeration. - */ -#define CHANNEL_N_CTRL_PDMA_MASK (uint32_t)0x00000001 -#define CHANNEL_N_PERIPH_SELECT_SHIFT (uint32_t)23 -#define CHANNEL_N_DIRECTION_MASK (uint32_t)0x00000002 - -const uint32_t src_dest_to_ctrl_reg_lut[] = -{ - CHANNEL_N_CTRL_PDMA_MASK, /* PDMA_FROM_UART_0 */ - CHANNEL_N_CTRL_PDMA_MASK | ( (uint32_t)1 << CHANNEL_N_PERIPH_SELECT_SHIFT) | CHANNEL_N_DIRECTION_MASK, /* PDMA_TO_UART_0 */ - CHANNEL_N_CTRL_PDMA_MASK | ( (uint32_t)2 << CHANNEL_N_PERIPH_SELECT_SHIFT), /* PDMA_FROM_UART_1 */ - CHANNEL_N_CTRL_PDMA_MASK | ( (uint32_t)3 << CHANNEL_N_PERIPH_SELECT_SHIFT) | CHANNEL_N_DIRECTION_MASK, /* PDMA_TO_UART_1 */ - CHANNEL_N_CTRL_PDMA_MASK | ( (uint32_t)4 << CHANNEL_N_PERIPH_SELECT_SHIFT), /* PDMA_FROM_SPI_0 */ - CHANNEL_N_CTRL_PDMA_MASK | ( (uint32_t)5 << CHANNEL_N_PERIPH_SELECT_SHIFT) | CHANNEL_N_DIRECTION_MASK, /* PDMA_TO_SPI_0 */ - CHANNEL_N_CTRL_PDMA_MASK | ( (uint32_t)6 << CHANNEL_N_PERIPH_SELECT_SHIFT), /* PDMA_FROM_SPI_1 */ - CHANNEL_N_CTRL_PDMA_MASK | ( (uint32_t)7 << CHANNEL_N_PERIPH_SELECT_SHIFT) | CHANNEL_N_DIRECTION_MASK, /* PDMA_TO_SPI_1 */ - CHANNEL_N_CTRL_PDMA_MASK | ( (uint32_t)8 << CHANNEL_N_PERIPH_SELECT_SHIFT), /* PDMA_FROM_FPGA_1 */ - CHANNEL_N_CTRL_PDMA_MASK | ( (uint32_t)8 << CHANNEL_N_PERIPH_SELECT_SHIFT) | CHANNEL_N_DIRECTION_MASK, /* PDMA_TO_FPGA_1 */ - CHANNEL_N_CTRL_PDMA_MASK | ( (uint32_t)9 << CHANNEL_N_PERIPH_SELECT_SHIFT), /* PDMA_FROM_FPGA_0 */ - CHANNEL_N_CTRL_PDMA_MASK | ( (uint32_t)9 << CHANNEL_N_PERIPH_SELECT_SHIFT) | CHANNEL_N_DIRECTION_MASK, /* PDMA_TO_FPGA_0 */ - CHANNEL_N_CTRL_PDMA_MASK | ( (uint32_t)10 << CHANNEL_N_PERIPH_SELECT_SHIFT) | CHANNEL_N_DIRECTION_MASK, /* PDMA_TO_ACE */ - CHANNEL_N_CTRL_PDMA_MASK | ( (uint32_t)11 << CHANNEL_N_PERIPH_SELECT_SHIFT) /* PDMA_FROM_ACE */ -}; - -/*-------------------------------------------------------------------------*//** - * - */ -#define PDMA_MASTER_ENABLE (uint32_t)0x04 -#define PDMA_SOFT_RESET (uint32_t)0x20 - -/*-------------------------------------------------------------------------*//** - * - */ -#define NB_OF_PDMA_CHANNELS 8 - -#define NEXT_CHANNEL_A 0U -#define NEXT_CHANNEL_B 1U - -#define CHANNEL_STOPPED 0U -#define CHANNEL_STARTED 1U - -static uint8_t g_pdma_next_channel[NB_OF_PDMA_CHANNELS]; -static uint8_t g_pdma_started_a[NB_OF_PDMA_CHANNELS]; -static uint8_t g_pdma_started_b[NB_OF_PDMA_CHANNELS]; -static pdma_channel_isr_t g_pdma_isr_table[NB_OF_PDMA_CHANNELS]; -static const uint16_t g_pdma_status_mask[NB_OF_PDMA_CHANNELS] = -{ - (uint16_t)0x0003, /* PDMA_CHANNEL_0 */ - (uint16_t)0x000C, /* PDMA_CHANNEL_1 */ - (uint16_t)0x0030, /* PDMA_CHANNEL_2 */ - (uint16_t)0x00C0, /* PDMA_CHANNEL_3 */ - (uint16_t)0x0300, /* PDMA_CHANNEL_4 */ - (uint16_t)0x0C00, /* PDMA_CHANNEL_5 */ - (uint16_t)0x3000, /* PDMA_CHANNEL_6 */ - (uint16_t)0xC000, /* PDMA_CHANNEL_7 */ -}; - - - -/***************************************************************************//** - * See mss_pdma.h for description of this function. - */ -void PDMA_init( void ) -{ - int32_t i; - - /* Enable PDMA master access to comms matrix. */ - SYSREG->AHB_MATRIX_CR |= PDMA_MASTER_ENABLE; - - /* Reset PDMA block. */ - SYSREG->SOFT_RST_CR |= PDMA_SOFT_RESET; - - /* Clear any previously pended MSS PDMA interrupt */ - NVIC_ClearPendingIRQ( DMA_IRQn ); - - /* Take PDMA controller out of reset*/ - SYSREG->SOFT_RST_CR &= ~PDMA_SOFT_RESET; - - /* Initialize channels state information. */ - for ( i = 0; i < NB_OF_PDMA_CHANNELS; ++i ) - { - g_pdma_next_channel[i] = NEXT_CHANNEL_A; - g_pdma_started_a[i] = CHANNEL_STOPPED; - g_pdma_started_b[i] = CHANNEL_STOPPED; - g_pdma_isr_table[i] = 0; - } -} - -/***************************************************************************//** - * See mss_pdma.h for description of this function. - */ -#define CHANNEL_RESET_MASK (uint32_t)0x00000020 - -void PDMA_configure -( - pdma_channel_id_t channel_id, - pdma_src_dest_t src_dest, - uint32_t channel_cfg, - uint8_t write_adjust -) -{ - /* Reset the channel. */ - PDMA->CHANNEL[channel_id].CRTL |= CHANNEL_RESET_MASK; - PDMA->CHANNEL[channel_id].CRTL &= ~CHANNEL_RESET_MASK; - - /* Configure PDMA channel's data source and destination. */ - if ( src_dest != PDMA_MEM_TO_MEM ) - { - PDMA->CHANNEL[channel_id].CRTL |= src_dest_to_ctrl_reg_lut[src_dest]; - } - - /* Configure PDMA channel trnasfer size, priority, source and destination address increment. */ - PDMA->CHANNEL[channel_id].CRTL |= channel_cfg; - - /* Posted write adjust. */ - PDMA->CHANNEL[channel_id].CRTL |= ((uint32_t)write_adjust << CHANNEL_N_POSTED_WRITE_ADJUST_SHIFT); -} - -/***************************************************************************//** - * See mss_pdma.h for description of this function. - */ -#define PAUSE_MASK (uint32_t)0x00000010 - -#define BUFFER_B_SELECT_MASK (uint32_t)0x00000004 - -#define CLEAR_PORT_A_DONE_MASK (uint32_t)0x00000080 -#define CLEAR_PORT_B_DONE_MASK (uint32_t)0x00000100 - -#define PORT_A_COMPLETE_MASK (uint32_t)0x00000001 -#define PORT_B_COMPLETE_MASK (uint32_t)0x00000002 - -void PDMA_start -( - pdma_channel_id_t channel_id, - uint32_t src_addr, - uint32_t dest_addr, - uint16_t transfer_count -) -{ - /* Pause transfer. */ - PDMA->CHANNEL[channel_id].CRTL |= PAUSE_MASK; - - /* Clear complete transfers. */ - if ( PDMA->CHANNEL[channel_id].STATUS & PORT_A_COMPLETE_MASK ) - { - PDMA->CHANNEL[channel_id].CRTL |= CLEAR_PORT_A_DONE_MASK; - g_pdma_started_a[channel_id] = CHANNEL_STOPPED; - } - if ( PDMA->CHANNEL[channel_id].STATUS & PORT_B_COMPLETE_MASK ) - { - PDMA->CHANNEL[channel_id].CRTL |= CLEAR_PORT_B_DONE_MASK; - g_pdma_started_b[channel_id] = CHANNEL_STOPPED; - } - - /* Load source, destination and transfer count. */ - if ( PDMA->CHANNEL[channel_id].STATUS & BUFFER_B_SELECT_MASK ) - { - g_pdma_next_channel[channel_id] = NEXT_CHANNEL_A; - g_pdma_started_b[channel_id] = CHANNEL_STARTED; - - PDMA->CHANNEL[channel_id].BUFFER_B_SRC_ADDR = src_addr; - PDMA->CHANNEL[channel_id].BUFFER_B_DEST_ADDR = dest_addr; - PDMA->CHANNEL[channel_id].BUFFER_B_TRANSFER_COUNT = transfer_count; - } - else - { - g_pdma_next_channel[channel_id] = NEXT_CHANNEL_B; - g_pdma_started_a[channel_id] = CHANNEL_STARTED; - - PDMA->CHANNEL[channel_id].BUFFER_A_SRC_ADDR = src_addr; - PDMA->CHANNEL[channel_id].BUFFER_A_DEST_ADDR = dest_addr; - PDMA->CHANNEL[channel_id].BUFFER_A_TRANSFER_COUNT = transfer_count; - } - - /* Start transfer */ - PDMA->CHANNEL[channel_id].CRTL &= ~PAUSE_MASK; -} - -/***************************************************************************//** - * See mss_pdma.h for description of this function. - */ -void PDMA_load_next_buffer -( - pdma_channel_id_t channel_id, - uint32_t src_addr, - uint32_t dest_addr, - uint16_t transfer_count -) -{ - if ( NEXT_CHANNEL_A == g_pdma_next_channel[channel_id] ) - { - /* Wait for channel A current transfer completion. */ - if ( CHANNEL_STARTED == g_pdma_started_a[channel_id] ) - { - uint32_t completed; - uint32_t channel_mask; - channel_mask = (uint32_t)1 << ((uint32_t)channel_id * 2U); - do { - completed = PDMA->BUFFER_STATUS & channel_mask; - } while( !completed ); - PDMA->CHANNEL[channel_id].CRTL |= CLEAR_PORT_A_DONE_MASK; - } - /* Load source, destination and transfer count. */ - PDMA->CHANNEL[channel_id].BUFFER_A_SRC_ADDR = src_addr; - PDMA->CHANNEL[channel_id].BUFFER_A_DEST_ADDR = dest_addr; - PDMA->CHANNEL[channel_id].BUFFER_A_TRANSFER_COUNT = transfer_count; - - /* Update channel state information. */ - g_pdma_next_channel[channel_id] = NEXT_CHANNEL_B; - g_pdma_started_a[channel_id] = CHANNEL_STARTED; - } - else - { - /* Wait for channel B current transfer completion. */ - if ( CHANNEL_STARTED == g_pdma_started_b[channel_id] ) - { - uint32_t completed; - uint32_t channel_mask; - channel_mask = (uint32_t)1 << (((uint32_t)channel_id * 2U) + 1U); - do { - completed = PDMA->BUFFER_STATUS & channel_mask; - } while( !completed ); - PDMA->CHANNEL[channel_id].CRTL |= CLEAR_PORT_B_DONE_MASK; - } - /* Load source, destination and transfer count. */ - PDMA->CHANNEL[channel_id].BUFFER_B_SRC_ADDR = src_addr; - PDMA->CHANNEL[channel_id].BUFFER_B_DEST_ADDR = dest_addr; - PDMA->CHANNEL[channel_id].BUFFER_B_TRANSFER_COUNT = transfer_count; - - /* Update channel state information. */ - g_pdma_next_channel[channel_id] = NEXT_CHANNEL_A; - g_pdma_started_b[channel_id] = CHANNEL_STARTED; - } -} - -/***************************************************************************//** - * See mss_pdma.h for description of this function. - */ -uint32_t PDMA_status -( - pdma_channel_id_t channel_id -) -{ - uint32_t status; - - status = PDMA->CHANNEL[channel_id].STATUS & (PORT_A_COMPLETE_MASK | PORT_B_COMPLETE_MASK); - - return status; -} - -/***************************************************************************//** - * - */ -#define CHANNEL_0_STATUS_BITS_MASK (uint16_t)0x0003 -#define CHANNEL_1_STATUS_BITS_MASK (uint16_t)0x000C -#define CHANNEL_2_STATUS_BITS_MASK (uint16_t)0x0030 -#define CHANNEL_3_STATUS_BITS_MASK (uint16_t)0x00C0 -#define CHANNEL_4_STATUS_BITS_MASK (uint16_t)0x0300 -#define CHANNEL_5_STATUS_BITS_MASK (uint16_t)0x0C00 -#define CHANNEL_6_STATUS_BITS_MASK (uint16_t)0x3000 -#define CHANNEL_7_STATUS_BITS_MASK (uint16_t)0xC000 - -static pdma_channel_id_t get_channel_id_from_status -( - uint16_t status -) -{ - pdma_channel_id_t channel_id = PDMA_CHANNEL_0; - - if ( status & CHANNEL_0_STATUS_BITS_MASK ) - { - channel_id = PDMA_CHANNEL_0; - } - else if ( status & CHANNEL_1_STATUS_BITS_MASK ) - { - channel_id = PDMA_CHANNEL_1; - } - else if ( status & CHANNEL_2_STATUS_BITS_MASK ) - { - channel_id = PDMA_CHANNEL_2; - } - else if ( status & CHANNEL_3_STATUS_BITS_MASK ) - { - channel_id = PDMA_CHANNEL_3; - } - else if ( status & CHANNEL_4_STATUS_BITS_MASK ) - { - channel_id = PDMA_CHANNEL_4; - } - else if ( status & CHANNEL_5_STATUS_BITS_MASK ) - { - channel_id = PDMA_CHANNEL_5; - } - else if ( status & CHANNEL_6_STATUS_BITS_MASK ) - { - channel_id = PDMA_CHANNEL_6; - } - else if ( status & CHANNEL_7_STATUS_BITS_MASK ) - { - channel_id = PDMA_CHANNEL_7; - } - else - { - ASSERT(0); - } - return channel_id; -} - -/***************************************************************************//** - * - */ -#if defined(__GNUC__) -__attribute__((__interrupt__)) void DMA_IRQHandler( void ) -#else -void DMA_IRQHandler( void ) -#endif -{ - uint16_t status; - pdma_channel_id_t channel_id; - - status = (uint16_t)PDMA->BUFFER_STATUS; - - do { - channel_id = get_channel_id_from_status( status ); - status &= (uint16_t)~g_pdma_status_mask[channel_id]; - if ( 0 != g_pdma_isr_table[channel_id]) - { - g_pdma_isr_table[channel_id](); - } - } while ( 0U != status ); - - NVIC_ClearPendingIRQ( DMA_IRQn ); -} - -/***************************************************************************//** - * See mss_pdma.h for description of this function. - */ -void PDMA_set_irq_handler -( - pdma_channel_id_t channel_id, - pdma_channel_isr_t handler -) -{ - /* Save address of handler function in PDMA driver ISR lookup table. */ - g_pdma_isr_table[channel_id] = handler; - - /* Enable PDMA channel's interrupt. */ - PDMA->CHANNEL[channel_id].CRTL |= PDMA_IRQ_ENABLE_MASK; - - /* Enable PDMA interrupt in Cortex-M3 NVIC. */ - NVIC_EnableIRQ( DMA_IRQn ); -} - -/***************************************************************************//** - * See mss_pdma.h for description of this function. - */ -void PDMA_enable_irq( pdma_channel_id_t channel_id ) -{ - PDMA->CHANNEL[channel_id].CRTL |= PDMA_IRQ_ENABLE_MASK; - NVIC_EnableIRQ( DMA_IRQn ); -} - -/***************************************************************************//** - * See mss_pdma.h for description of this function. - */ -void PDMA_clear_irq -( - pdma_channel_id_t channel_id -) -{ - /* Clear interrupt in PDMA controller. */ - PDMA->CHANNEL[channel_id].CRTL |= CLEAR_PORT_A_DONE_MASK; - PDMA->CHANNEL[channel_id].CRTL |= CLEAR_PORT_B_DONE_MASK; - - /* Clear interrupt in Cortex-M3 NVIC. */ - NVIC_ClearPendingIRQ( DMA_IRQn ); -} - -#ifdef __cplusplus -} -#endif - diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_pdma/mss_pdma.h b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_pdma/mss_pdma.h deleted file mode 100644 index 6f79226c3..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_pdma/mss_pdma.h +++ /dev/null @@ -1,703 +0,0 @@ -/******************************************************************************* - * (c) Copyright 2008 Actel Corporation. All rights reserved. - * - * SmartFusion microcontroller subsystem Peripheral DMA bare metal software - * driver public API. - * - * SVN $Revision: 2110 $ - * SVN $Date: 2010-02-05 15:24:19 +0000 (Fri, 05 Feb 2010) $ - */ -/*=========================================================================*//** - @mainpage SmartFusion MSS GPIO Bare Metal Driver. - - @section intro_sec Introduction - The SmartFusion Microcontroller Subsystem (MSS) includes an 8 channel - Peripheral DMA (PDMA) controller. - This software driver provides a set of functions for controlling the MSS PDMA - controller as part of a bare metal system where no operating system is available. - This driver can be adapted for use as part of an operating system but the - implementation of the adaptation layer between this driver and the operating - system's driver model is outside the scope of this driver. - - @section theory_op Theory of Operation - The MSS PDMA driver uses the SmartFusion "Cortex Microcontroler Software - Interface Standard - Peripheral Access Layer" (CMSIS-PAL) to access MSS hardware - registers. You must ensure that the SmartFusion CMSIS-PAL is either included - in the software toolchain used to build your project or is included in your - project. The most up-to-date SmartFusion CMSIS-PAL files can be obtained using - the Actel Firmware Catalog. - - The MSS PDMA driver functions are grouped into the following categories: - - Initialization - - Configuration - - DMA transfer control - - Interrupt control - - The MSS PDMA driver is initialized through a call to the PDMA_init() function. - The PDMA_init() function must be called before any other PDMA driver functions - can be called. - - Each PDMA channel is individually configured through a call to the PDMA_configure() - function. Configuration includes: - - channel priority - - transfer size - - source and/or destination address increment - - source or destination of the DMA transfer - PDMA channels can be divided into high and low priority channels. High priority - channels are given more opportunities to perform transfers than low priority - channels when there are continuous high priority channels requests. The ratio - of high priority to low priority PDMA transfers is configurable through the - PDMA_set_priority() function. - PDMA channels can be configured to perform byte (8 bits), half-word (16 bits) - or word (32 bits) transfers. - The source and destination address of a PDMA channel’s transfers can be - independently configured to increment by 0, 1, 2 or 4 bytes. For example, the - content of a byte buffer located in RAM can be transferred into a peripheral’s - transmit register by configuring the source address increment to one byte and - no increment of the destination address. - The source or destination of a PDMA channel’s transfers can be configured to - be one of the MSS peripherals. This allows the PDMA controller to use some - hardware flow control signaling with the peripheral to avoid overrunning the - peripheral’s data buffer when the peripheral is the destination of the DMA - transfer, or attempting to read data from the peripheral while it is not ready - when the peripheral is the source of the transfer. - A PDMA channel can also be configured to transfer data between two memory - mapped locations (memory to memory). No hardware flow control is used by the - PDMA controller for data transfer in this configuration. - - A DMA transfer can be initiated by a call to the PDMA_start() function after a - PDMA channel has been configured. Once started, further data can be pushed - through the PDMA channel by calling the PDMA_load_next_buffer() function. The - PDMA_load_next_buffer() function can be called every time a call to the - PDMA_status() function indicates that the PDMA channel used for the transfer - has a free buffer or it can be called as a result of a PDMA interrupt. - - A DMA transfer can be paused and resumed through calls to functions PDMA_pause() - and PDMA_resume(). - - Your application can manage DMA transfers using interrupts through the use of - the following functions: - - PDMA_set_irq_handler() - - PDMA_enable_irq() - - PDMA_clear_irq() - - PDMA_disable_irq() - The PDMA_set_irq_handler() function is used to register PDMA channel interrupt - handler functions with the driver. You must create and register an interrupt - handler function for each interrupt driven PDMA channel used by the application. - Use the PDMA_enable_irq() function to enable interrupts for the PDMA channels. - Every time a PDMA channel completes the transfer of a buffer it causes a PDMA - interrupt to occur and the PDMA driver will call the interrupt handler - registered by the application for that PDMA channel. - - *//*=========================================================================*/ -#ifndef __MSS_PERIPHERAL_DMA_H_ -#define __MSS_PERIPHERAL_DMA_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include "../../CMSIS/a2fxxxm3.h" - -/***************************************************************************//** - The pdma_channel_id_t enumeration is used to identify peripheral DMA channels. - It is used as function parameter to specify the PDMA channel used. - */ -typedef enum __pdma_channel_id -{ - PDMA_CHANNEL_0 = 0, - PDMA_CHANNEL_1, - PDMA_CHANNEL_2, - PDMA_CHANNEL_3, - PDMA_CHANNEL_4, - PDMA_CHANNEL_5, - PDMA_CHANNEL_6, - PDMA_CHANNEL_7 -} pdma_channel_id_t; - -/***************************************************************************//** - The pdma_src_dest_t enumeration is used to specify the source or destination - of transfers on a PDMA channel. It specifies which hardware peripheral will be - the source or destination of DMA transfers. This allows the PDMA controller - to use hardware flow control signals to avoid overrunning a - destination peripheral with data it is not ready to receive, or attempting to - transfer data from a peripheral while it has no data ready to transfer. - The pdma_src_dest_t enumeration can also be used to specify that a PDMA channel - is configured to transfer data between two memory mapped locations - (memory to memory). No hardware data flow control is used by the PDMA - controller in this configuration. - This enumeration is used as parameter to function PDMA_configure(). - */ -typedef enum __pdma_src_dest -{ - PDMA_FROM_UART_0 = 0, - PDMA_TO_UART_0, - PDMA_FROM_UART_1, - PDMA_TO_UART_1, - PDMA_FROM_SPI_0, - PDMA_TO_SPI_0, - PDMA_FROM_SPI_1, - PDMA_TO_SPI_1, - PDMA_FROM_FPGA_1, - PDMA_TO_FPGA_1, - PDMA_FROM_FPGA_0, - PDMA_TO_FPGA_0, - PDMA_TO_ACE, - PDMA_FROM_ACE, - PDMA_MEM_TO_MEM -} pdma_src_dest_t; - -/***************************************************************************//** - The pdma_priority_ratio_t enumeration is used to configure the ratio of high - priority to low priority PDMA channels. This ratio specifies how many DMA - transfer opportunities will be given to high priority channels before a DMA - transfer opportunity is given to a low priority channel when there are - continuous requests from high priority channels. This enumeration is used as - parameter to function PDMA_set_priority_ratio(). - */ -typedef enum __pdma_priority_ratio_t -{ - PDMA_ROUND_ROBIN = 0, - PDMA_RATIO_HIGH_LOW_1_TO_1 = 1, - PDMA_RATIO_HIGH_LOW_3_TO_1 = 3, - PDMA_RATIO_HIGH_LOW_7_TO_1 = 7, - PDMA_RATIO_HIGH_LOW_15_TO_1 = 15, - PDMA_RATIO_HIGH_LOW_31_TO_1 = 31, - PDMA_RATIO_HIGH_LOW_63_TO_1 = 63, - PDMA_RATIO_HIGH_LOW_127_TO_1 = 127, - PDMA_RATIO_HIGH_LOW_255_TO_1 = 255 -} pdma_priority_ratio_t; - - -/***************************************************************************//** - The pdma_channel_isr_t type is a pointer to a PDMA channel interrupt handler - function. It specifies the function prototype of functions that can be - registered as PDMA channel interrupt handlers. It is used as parameter to - function PDMA_set_irq_handler(). - */ -typedef void (*pdma_channel_isr_t)( void ); -/***************************************************************************//** - These constants are used to build the channel_cfg parameter of the - PDMA_configure() function. They specify whether a channel is a high or low - priority channel. - */ -#define PDMA_LOW_PRIORITY 0x0000 -#define PDMA_HIGH_PRIORITY 0x0200 - -/***************************************************************************//** - These constants are used to build the channel_cfg parameter of the - PDMA_configure() function. They specify the data width of the transfers - performed by a PDMA channel. - */ -#define PDMA_BYTE_TRANSFER 0x0000 /* Byte transfers (8 bits) */ -#define PDMA_HALFWORD_TRANSFER 0x0004 /* Half-word transfers (16 bits) */ -#define PDMA_WORD_TRANSFER 0x0008 /* Word transfers (32 bits) */ - -/***************************************************************************//** - These constants are used to build the channel_cfg parameter of the - PDMA_configure() function. They specify the PDMA channel’s source and - destination address increment. - */ -#define PDMA_NO_INC 0 -#define PDMA_INC_SRC_ONE_BYTE 0x0400 -#define PDMA_INC_SRC_TWO_BYTES 0x0800 -#define PDMA_INC_SRC_FOUR_BYTES 0x0C00 -#define PDMA_INC_DEST_ONE_BYTE 0x1000 -#define PDMA_INC_DEST_TWO_BYTES 0x2000 -#define PDMA_INC_DEST_FOUR_BYTES 0x3000 - -/***************************************************************************//** - * Mask for various control register bits. - */ -#define PDMA_IRQ_ENABLE_MASK (uint32_t)0x00000040 -#define PDMA_PAUSE_MASK (uint32_t)0x00000010 - -/***************************************************************************//** - These constants are used to specify the src_addr parameter to the PDMA_start() - and PDMA_load_next_buffer() functions. They specify the receive register - address of peripherals that can be the source of a DMA transfer. - When a PDMA channel is configured for DMA transfers from a peripheral to memory, - the constant specifying that peripheral’s receive register address must be used - as the src_addr parameter. - */ -#define PDMA_SPI0_RX_REGISTER 0x40001010uL -#define PDMA_SPI1_RX_REGISTER 0x40011010uL -#define PDMA_UART0_RX_REGISTER 0x40000000uL -#define PDMA_UART1_RX_REGISTER 0x40010000uL -#define PDMA_ACE_PPE_DATAOUT 0x40021308uL - -/***************************************************************************//** - These constants are used to specify the dest_addr parameter to the PDMA_start() - and PDMA_load_next_buffer() functions. They specify the transmit register - address of peripherals that can be the destination of a DMA transfer. - When a PDMA channel is configured for DMA transfers from memory to a peripheral, - the constant specifying that peripheral’s transmit register address must be used - as the dest_addr parameter. - */ -#define PDMA_SPI0_TX_REGISTER 0x40001014uL -#define PDMA_SPI1_TX_REGISTER 0x40011014uL -#define PDMA_UART0_TX_REGISTER 0x40000000uL -#define PDMA_UART1_TX_REGISTER 0x40010000uL -#define PDMA_ACE_SSE_DATAIN 0x40020700uL - -/***************************************************************************//** - The PDMA_DEFAULT_WRITE_ADJ constant provides a suitable default value for the - PDMA_configure() function write_adjust parameter. - */ -#define PDMA_DEFAULT_WRITE_ADJ 10u - -/***************************************************************************//** - The PDMA_init() function initializes the peripheral DMA hardware and driver - internal data. It resets the PDMA and it also clears any pending PDMA - interrupts in the Cortex-M3 interrupt controller. When the function exits, it - takes the PDMA block out of reset. - */ -void PDMA_init( void ); - -/***************************************************************************//** - The PDMA_configure() function configures a PDMA channel. - It specifies: - - The peripheral which will be the source or destination of the DMA transfer. - - Whether the DMA channel will be a high or low priority channel - - The source and destination address increment that will take place after - each transfer. - - @param channel_id - The channel_id parameter identifies the PDMA channel used by the function. - - @param src_dest - The src_dest parameter specifies the source or destination of the DMA - transfers that will be performed. It can be one of the following: - - PDMA_FROM_UART_0 - - PDMA_TO_UART_0 - - PDMA_FROM_UART_1 - - PDMA_TO_UART_1 - - PDMA_FROM_SPI_0 - - PDMA_TO_SPI_0 - - PDMA_FROM_SPI_1 - - PDMA_TO_SPI_1 - - PDMA_FROM_FPGA_1 - - PDMA_TO_FPGA_1 - - PDMA_FROM_FPGA_0 - - PDMA_TO_FPGA_0 - - PDMA_TO_ACE - - PDMA_FROM_ACE - - PDMA_MEM_TO_MEM - - @param channel_cfg - The channel_cfg parameter specifies the configuration of the PDMA channel. - The configuration includes: - - channel priority - - transfer size - - source and/or destination address increment - The channel_cfg parameter value is a logical OR of: - One of the following to specify the channel priority: - - PDMA_LOW_PRIORITY - - PDMA_HIGH_PRIORITY - One of the following to specify the transfer size: - - PDMA_BYTE_TRANSFER - - PDMA_HALFWORD_TRANSFER - - PDMA_WORD_TRANSFER - One or two of the following to specify the source and/or destination address - increment: - - PDMA_NO_INC - - PDMA_INC_SRC_ONE_BYTE - - PDMA_INC_SRC_TWO_BYTES - - PDMA_INC_SRC_FOUR_BYTES - - PDMA_INC_DEST_ONE_BYTE - - PDMA_INC_DEST_TWO_BYTES - - PDMA_INC_DEST_FOUR_BYTES - - @param write_adjust - The write_adjust parameter specifies the number of Cortex-M3 clock cycles - the PDMA controller will wait before attempting another transfer cycle. This - delay is necessary when peripherals are used as destination of a DMA transfer - to ensure the DMA controller interprets the state of the peripheral’s ready - signal only after data has actually been written to the peripheral. This delay - accounts for posted writes (dump and run) for write accesses to peripherals. - The effect of posted writes is that if the PDMA performs a write operation to - a peripheral, the data is not actually written into the peripheral until - sometime after the PDMA controller thinks it is written. - A suitable value for write_adjust depends on the target of the DMA transfer. - Guidelines for choosing this value are as follows: - • The PDMA_DEFAULT_WRITE_ADJ constant provides a suitable default value - for the write_adjust parameter when the PDMA channel is configured for - transfers with MSS peripherals. - • The PDMA_DEFAULT_WRITE_ADJ constant can also be used for DMA transfers - with FPGA fabric implemented peripherals making use of the DMAREADY0 or - DMAREADY1fabric interface signal to indicate that the peripheral is - ready for another DMA transfer. - • The write_adjust parameter can be set to zero to achieve maximum transfer - speed for genuine memory to memory transfers. - • The internal latency of FPGA implemented peripherals will decide the - write_adjust value for fabric peripherals that do not use the DMAREADY0 - or DMAREADY1 fabric interface signals. You need to check the fabric - peripheral documentation for the value to use. - - Example: - @code - PDMA_configure - ( - PDMA_CHANNEL_0, - PDMA_TO_SPI_1, - PDMA_LOW_PRIORITY | PDMA_BYTE_TRANSFER | PDMA_INC_SRC_ONE_BYTE, - PDMA_DEFAULT_WRITE_ADJ - ); - @endcode - */ -void PDMA_configure -( - pdma_channel_id_t channel_id, - pdma_src_dest_t src_dest, - uint32_t channel_cfg, - uint8_t write_adjust -); - - -/***************************************************************************//** - The PDMA_set_priority_ratio() function sets the ratio of high priority to low - priority DMA access opportunities. This ratio is used by the PDMA controller - arbiter to decide which PDMA channel will be given the opportunity to perform - a transfer when multiple PDMA channels are requesting to transfer data at the - same time. The priority ratio specifies how many DMA transfer opportunities - will be given to high priority channels before a DMA transfer opportunity is - given to a low priority channel when there are continuous requests from high - priority channels. - - @param priority_ratio - The priority_ratio parameter specifies the ratio of DMA access opportunities - given to high priority channels versus low priority channels. - Allowed values for this parameter are: - - PDMA_ROUND_ROBIN - - PDMA_RATIO_HIGH_LOW_1_TO_1 - - PDMA_RATIO_HIGH_LOW_3_TO_1 - - PDMA_RATIO_HIGH_LOW_7_TO_1 - - PDMA_RATIO_HIGH_LOW_15_TO_1 - - PDMA_RATIO_HIGH_LOW_31_TO_1 - - PDMA_RATIO_HIGH_LOW_63_TO_1 - - PDMA_RATIO_HIGH_LOW_127_TO_1 - - PDMA_RATIO_HIGH_LOW_255_TO_1 - - Example: - @code - PDMA_set_priority_ratio( PDMA_ROUND_ROBIN ); - @endcode - */ -static __INLINE void PDMA_set_priority_ratio -( - pdma_priority_ratio_t priority_ratio -) -{ - PDMA->RATIO_HIGH_LOW = (uint32_t)priority_ratio; -} - -/***************************************************************************//** - The PDMA_start() function initiates a DMA transfer. It specifies the source - and destination address of the transfer as well as the number of transfers - that must take place. The source and destination addresses can be the address - of peripheral registers. - - @param channel_id - The channel_id parameter identifies the PDMA channel used by the function. - - @param src_addr - The src_addr parameter specifies the address location of the data to be - transferred. You must ensure that this source address is consistent with the - DMA source configured for the selected channel using the PDMA_configure() - function. - For DMA transfers from MSS peripheral to memory, the following src_addr - parameter values are allowed: - • PDMA_SPI0_RX_REGISTER - • PDMA_SPI1_RX_REGISTER - • PDMA_UART0_RX_REGISTER - • PDMA_UART1_RX_REGISTER - • PDMA_ACE_PPE_DATAOUT - For DMA transfers from FPGA fabric peripheral to memory, the following - src_addr parameter values are allowed: - • An address in the FPGA fabric address space (0x40050000-0x400FFFFF) - For DMA transfers from memory to MSS peripheral, or from memory to FPGA - fabric peripheral, or from memory to memory, the following src_addr - parameter values are allowed: - • Any memory mapped address. - - @param dest_addr - The dest_addr parameter specifies the destination address of the PDMA - transfer. You must ensure that this matches with the DMA destination - configured for the selected channel. - For DMA transfers from memory to MSS peripheral, the following dest_addr parameter values are allowed: - • PDMA_SPI0_TX_REGISTER - • PDMA_SPI1_TX_REGISTER - • PDMA_UART0_TX_REGISTER - • PDMA_UART1_TX_REGISTER - • PDMA_ACE_SSE_DATAIN - For DMA transfers from memory to FPGA fabric peripheral, the following - dest_addr parameter values are allowed: - • An address in the FPGA fabric address space (0x40050000-0x400FFFFF) - For DMA transfers from MSS peripheral to memory, or from FPGA fabric - peripheral to memory, or from memory to memory, the following dest_addr - parameter values are allowed: - • Any memory mapped address. - - @param transfer_count - The transfer_count parameter specifies the number of transfers to be - performed. It is the number of bytes to transfer if the PDMA channel is - configured for byte transfer, the number of half-words to transfer if the - PDMA channel is configured for half-word transfer, or the number of words - to transfer if the PDMA channel is configured for word transfer. - - Example: - @code - PDMA_start - ( - PDMA_CHANNEL_3, - PDMA_SPI1_RX_REGISTER, - (uint32_t)slave_rx_buffer, - sizeof(slave_rx_buffer) - ); - @endcode - */ -void PDMA_start -( - pdma_channel_id_t channel_id, - uint32_t src_addr, - uint32_t dest_addr, - uint16_t transfer_count -); - -/***************************************************************************//** - The PDMA_load_next_buffer() function sets the next buffer to be transferred. - This function is called after a transfer has been initiated using the - PDMA_start() function. Its purpose is to keep feeding a PDMA channel with data - buffers. - - @param channel_id - The channel_id parameter identifies the PDMA channel used by the function. - - @param src_addr - The src_addr parameter specifies the address location of the data to be - transferred. You must ensure that this source address is consistent with the - DMA source configured for the selected channel using the PDMA_configure() - function. - For DMA transfers from MSS peripheral to memory, the following src_addr parameter values are allowed: - • PDMA_SPI0_RX_REGISTER - • PDMA_SPI1_RX_REGISTER - • PDMA_UART0_RX_REGISTER - • PDMA_UART1_RX_REGISTER - • PDMA_ACE_PPE_DATAOUT - For DMA transfers from FPGA fabric peripheral to memory, the following src_addr parameter values are allowed: - • An address in the FPGA fabric address space (0x40050000-0x400FFFFF) - For DMA transfers from memory to MSS peripheral, or from memory to FPGA fabric peripheral, or from memory to memory, the following src_addr parameter values are allowed: - • Any memory mapped address. - - @param dest_addr - The dest_addr parameter specifies the destination address of the PDMA - transfer. You must ensure that this matches with the DMA destination - configured for the selected channel. - For DMA transfers from memory to MSS peripheral, the following dest_addr parameter values are allowed: - • PDMA_SPI0_TX_REGISTER - • PDMA_SPI1_TX_REGISTER - • PDMA_UART0_TX_REGISTER - • PDMA_UART1_TX_REGISTER - • PDMA_ACE_SSE_DATAIN - For DMA transfers from memory to FPGA fabric peripheral, the following dest_addr parameter values are allowed: - • An address in the FPGA fabric address space (0x40050000-0x400FFFFF) - For DMA transfers from MSS peripheral to memory, or from FPGA fabric peripheral to memory, or from memory to memory, the following dest_addr parameter values are allowed: - • Any memory mapped address. - - @param transfer_count - The transfer_count parameter specifies the number of transfers to be - performed. It is the number of bytes to transfer if the PDMA channel is - configured for byte transfer, the number of half-words to transfer if the - PDMA channel is configured for half-word transfer or the number of words to - transfer if the PDMA channel is configured for word transfer. - - Example: - @code - void write_cmd_data - ( - mss_spi_instance_t * this_spi, - const uint8_t * cmd_buffer, - uint16_t cmd_byte_size, - uint8_t * data_buffer, - uint16_t data_byte_size - ) - { - uint32_t transfer_size; - - transfer_size = cmd_byte_size + data_byte_size; - - MSS_SPI_disable( this_spi ); - MSS_SPI_set_transfer_byte_count( this_spi, transfer_size ); - - PDMA_start - ( - PDMA_CHANNEL_0, - (uint32_t)cmd_buffer, - PDMA_SPI1_TX_REGISTER, - cmd_byte_size - ); - - PDMA_load_next_buffer - ( - PDMA_CHANNEL_0, - (uint32_t)data_buffer, - PDMA_SPI1_TX_REGISTER, - data_byte_size - ); - - MSS_SPI_enable( this_spi ); - - while ( !MSS_SPI_tx_done(this_spi) ) - { - ; - } - } - @endcode - */ -void PDMA_load_next_buffer -( - pdma_channel_id_t channel_id, - uint32_t src_addr, - uint32_t dest_addr, - uint16_t transfer_count -); - -/***************************************************************************//** - The PDMA_status() function returns the status of a DMA channel. - The returned value indicates if transfers have been completed using buffer A - or buffer B of the PDMA hardware block. - - @param channel_id - The channel_id parameter identifies the PDMA channel used by the function. - - @return - bit 0 of the return value indicates if buffer A has been trasnfered. It is - set to 1 if the transfer has completed. - bit 1 of the return value indicates if buffer B has been transfered. It is - set to 1 if the transfer has completed. - */ -uint32_t PDMA_status -( - pdma_channel_id_t channel_id -); - -/***************************************************************************//** - The PDMA_pause() function temporarily pauses a PDMA transfer taking place on - the specified PDMA channel. The transfer can later be resumed by using the - PDMA_resume() function. - - @param channel_id - The channel_id parameter identifies the PDMA channel used by the function. - */ -static __INLINE void PDMA_pause( pdma_channel_id_t channel_id ) -{ - PDMA->CHANNEL[channel_id].CRTL |= PDMA_PAUSE_MASK; -} - -/***************************************************************************//** - The PDMA_resume() function resumes a transfer previously paused using the - PDMA_pause() function. - - @param channel_id The channel_id parameter identifies the PDMA channel - used by the function. - */ -static __INLINE void PDMA_resume( pdma_channel_id_t channel_id ) -{ - PDMA->CHANNEL[channel_id].CRTL &= ~PDMA_PAUSE_MASK; -} - -/***************************************************************************//** - The PDMA_enable_irq() enables the PDMA hardware to generate an interrupt when - a DMA transfer completes on the specified PDMA channel. This function also - enables the PDMA interrupt in the Cortex-M3 interrupt controller. - - @param channel_id - The channel_id parameter identifies the PDMA channel used by the function. - */ -void PDMA_enable_irq( pdma_channel_id_t channel_id ); - -/***************************************************************************//** - The PDMA_disable_irq() disables interrupts for a specific PDMA channel. - - @param channel_id - The channel_id parameter identifies the PDMA channel used by the function. - */ -static __INLINE void PDMA_disable_irq( pdma_channel_id_t channel_id ) -{ - PDMA->CHANNEL[channel_id].CRTL &= ~PDMA_IRQ_ENABLE_MASK; -} - -/***************************************************************************//** - The PDMA_set_irq_handler() function registers a handler function for - interrupts generated on the completion of a transfer on a specific PDMA - channel. This function also enables the PDMA interrupt both in the PDMA - controller and in the Cortex-M3 interrupt controller. - - @param channel_id - The channel_id parameter identifies the PDMA channel used by the function. - - @param handler - The handler parameter is a pointer to the function that will be called when - a transfer completes on the PDMA channel identified by channel_id and the - interrupt is enabled for that channel. - - Example: - @code - void slave_dma_irq_handler( void ) - { - if ( g_spi1_rx_buffer[2] == 0x99 ) - { - PDMA_load_next_buffer - ( - PDMA_CHANNEL_0, - (uint32_t)g_spi1_tx_buffer_b, - PDMA_SPI1_TX_REGISTER, - sizeof(g_spi1_tx_buffer_b) - ); - } - PDMA_disable_irq( PDMA_CHANNEL_3 ); - } - - void setup_dma( void ) - { - PDMA_init(); - PDMA_configure - ( - PDMA_CHANNEL_0, - PDMA_TO_SPI_1, - PDMA_LOW_PRIORITY | PDMA_BYTE_TRANSFER | PDMA_INC_SRC_ONE_BYTE - ); - PDMA_configure - ( - PDMA_CHANNEL_3, - PDMA_FROM_SPI_1, - PDMA_HIGH_PRIORITY | PDMA_BYTE_TRANSFER | PDMA_INC_DEST_ONE_BYTE - ); - PDMA_set_irq_handler( PDMA_CHANNEL_3, slave_dma_irq_handler ); - PDMA_start( PDMA_CHANNEL_3, PDMA_SPI1_RX_REGISTER, (uint32_t)g_spi1_rx_buffer, 3 ); - } - @endcode - */ -void PDMA_set_irq_handler -( - pdma_channel_id_t channel_id, - pdma_channel_isr_t handler -); - -/***************************************************************************//** - The PDMA_clear_irq() function clears interrupts for a specific PDMA channel. - This function also clears the PDMA interrupt in the Cortex-M3 NVIC. - - @param channel_id - The channel_id parameter identifies the PDMA channel used by the function. - */ -void PDMA_clear_irq -( - pdma_channel_id_t channel_id -); - -#ifdef __cplusplus -} -#endif - -#endif /* __MSS_PERIPHERAL_DMA_H_ */ diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_spi/mss_spi.c b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_spi/mss_spi.c deleted file mode 100644 index e5992301f..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_spi/mss_spi.c +++ /dev/null @@ -1,610 +0,0 @@ -/******************************************************************************* - * (c) Copyright 2008 Actel Corporation. All rights reserved. - * - * SmartFusion microcontroller subsystem SPI bare metal software driver - * implementation. - * - * SVN $Revision: 2176 $ - * SVN $Date: 2010-02-15 21:04:22 +0000 (Mon, 15 Feb 2010) $ - */ -#include "mss_spi.h" -#include "../../CMSIS/mss_assert.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/***************************************************************************//** - MSS SPI can operate as master or slave. - */ -#define MSS_SPI_MODE_SLAVE (uint32_t)0 -#define MSS_SPI_MODE_MASTER (uint32_t)1 - -/***************************************************************************//** - * Mask of transfer protocol and SPO, SPH bits within control register. - */ -#define PROTOCOL_MODE_MASK (uint32_t)0x030000C0 - -/***************************************************************************//** - * Mask of theframe count bits within the SPI control register. - */ -#define TXRXDFCOUNT_MASK (uint32_t)0x00FFFF00 -#define TXRXDFCOUNT_SHIFT (uint32_t)8 - -/***************************************************************************//** - * SPI hardware FIFO depth. - */ -#define RX_FIFO_SIZE 4u - -/***************************************************************************//** - Marker used to detect that the configuration has not been selected for a - specific slave when operating as a master. - */ -#define NOT_CONFIGURED 0xFFFFFFFF - -/***************************************************************************//** - * SPI instance data structures for SPI0 and SPI1. A pointer to these data - * structures must be used as first parameter to any of the SPI driver functions - * to identify the SPI hardware block that will perform the requested operation. - */ -mss_spi_instance_t g_mss_spi0; -mss_spi_instance_t g_mss_spi1; - -/***************************************************************************//** - SPI0 interrupt service routine - */ -#if defined(__GNUC__) -__attribute__((__interrupt__)) void SPI0_IRQHandler( void ); -#else -void SPI0_IRQHandler( void ); -#endif - -/***************************************************************************//** - SPI1 interrupt service routine - */ -#if defined(__GNUC__) -__attribute__((__interrupt__)) void SPI1_IRQHandler( void ); -#else -void SPI1_IRQHandler( void ); -#endif - -/***************************************************************************//** - * MSS_SPI_init() - * See "mss_spi.h" for details of how to use this function. - */ -void MSS_SPI_init -( - mss_spi_instance_t * this_spi -) -{ - uint16_t i; - - ASSERT( (this_spi == &g_mss_spi0) || (this_spi == &g_mss_spi1) ); - - if (this_spi == &g_mss_spi0) - { - this_spi->hw_reg = SPI0; - this_spi->hw_reg_bit = SPI0_BITBAND; - this_spi->irqn = SPI0_IRQn; - - /* reset SPI0 */ - SYSREG->SOFT_RST_CR |= SYSREG_SPI0_SOFTRESET_MASK; - /* Clear any previously pended SPI0 interrupt */ - NVIC_ClearPendingIRQ( SPI0_IRQn ); - /* Take SPI0 out of reset. */ - SYSREG->SOFT_RST_CR &= ~SYSREG_SPI0_SOFTRESET_MASK; - } - else - { - this_spi->hw_reg = SPI1; - this_spi->hw_reg_bit = SPI1_BITBAND; - this_spi->irqn = SPI1_IRQn; - - /* reset SPI1 */ - SYSREG->SOFT_RST_CR |= SYSREG_SPI1_SOFTRESET_MASK; - /* Clear any previously pended SPI1 interrupt */ - NVIC_ClearPendingIRQ( SPI1_IRQn ); - /* Take SPI1 out of reset. */ - SYSREG->SOFT_RST_CR &= ~SYSREG_SPI1_SOFTRESET_MASK; - } - - this_spi->frame_rx_handler = 0U; - this_spi->slave_tx_frame = 0U; - - this_spi->block_rx_handler = 0U; - - this_spi->slave_tx_buffer = 0U; - this_spi->slave_tx_size = 0U; - this_spi->slave_tx_idx = 0U; - - for ( i = 0u; i < (uint16_t)MSS_SPI_MAX_NB_OF_SLAVES; ++i ) - { - this_spi->slaves_cfg[i].ctrl_reg = NOT_CONFIGURED; - } -} - -/***************************************************************************//** - * MSS_SPI_configure_slave_mode() - * See "mss_spi.h" for details of how to use this function. - */ -void MSS_SPI_configure_slave_mode -( - mss_spi_instance_t * this_spi, - mss_spi_protocol_mode_t protocol_mode, - mss_spi_pclk_div_t clk_rate, - uint8_t frame_bit_length -) -{ - ASSERT( (this_spi == &g_mss_spi0) || (this_spi == &g_mss_spi1) ); - ASSERT( frame_bit_length <= 32 ); - - /* Set the mode. */ - this_spi->hw_reg_bit->CTRL_MASTER = MSS_SPI_MODE_SLAVE; - - /* Set the clock rate. */ - this_spi->hw_reg_bit->CTRL_ENABLE = 0U; - this_spi->hw_reg->CONTROL = (this_spi->hw_reg->CONTROL & ~PROTOCOL_MODE_MASK) | (uint32_t)protocol_mode; - this_spi->hw_reg->CLK_GEN = (uint32_t)clk_rate; - - /* Set default frame size to byte size and number of data frames to 1. */ - this_spi->hw_reg->CONTROL = (this_spi->hw_reg->CONTROL & ~TXRXDFCOUNT_MASK) | ((uint32_t)1 << TXRXDFCOUNT_SHIFT); - this_spi->hw_reg->TXRXDF_SIZE = frame_bit_length; - this_spi->hw_reg_bit->CTRL_ENABLE = 1U; -} - -/***************************************************************************//** - * MSS_SPI_configure_master_mode() - * See "mss_spi.h" for details of how to use this function. - */ -void MSS_SPI_configure_master_mode -( - mss_spi_instance_t * this_spi, - mss_spi_slave_t slave, - mss_spi_protocol_mode_t protocol_mode, - mss_spi_pclk_div_t clk_rate, - uint8_t frame_bit_length -) -{ - ASSERT( (this_spi == &g_mss_spi0) || (this_spi == &g_mss_spi1) ); - ASSERT( slave < MSS_SPI_MAX_NB_OF_SLAVES ); - ASSERT( frame_bit_length <= 32 ); - - /* Set the mode. */ - this_spi->hw_reg_bit->CTRL_ENABLE = 0U; - this_spi->hw_reg_bit->CTRL_MASTER = MSS_SPI_MODE_MASTER; - this_spi->hw_reg_bit->CTRL_ENABLE = 1U; - - /* - * Keep track of the required register configuration for this slave. These - * values will be used by the MSS_SPI_set_slave_select() function to configure - * the master to match the slave being selected. - */ - if ( slave < MSS_SPI_MAX_NB_OF_SLAVES ) - { - this_spi->slaves_cfg[slave].ctrl_reg = 0x00000002uL | (uint32_t)protocol_mode | ((uint32_t)1 << TXRXDFCOUNT_SHIFT); - this_spi->slaves_cfg[slave].txrxdf_size_reg = frame_bit_length; - this_spi->slaves_cfg[slave].clk_gen = (uint8_t)clk_rate; - } -} - -/***************************************************************************//** - * MSS_SPI_set_slave_select() - * See "mss_spi.h" for details of how to use this function. - */ -void MSS_SPI_set_slave_select -( - mss_spi_instance_t * this_spi, - mss_spi_slave_t slave -) -{ - ASSERT( (this_spi == &g_mss_spi0) || (this_spi == &g_mss_spi1) ); - - /* This function is only intended to be used with an SPI master. */ - ASSERT( this_spi->hw_reg_bit->CTRL_MASTER == MSS_SPI_MODE_MASTER ); - ASSERT( this_spi->slaves_cfg[slave].ctrl_reg != NOT_CONFIGURED ); - - /* Set the clock rate. */ - this_spi->hw_reg_bit->CTRL_ENABLE = 0U; - this_spi->hw_reg->CONTROL = this_spi->slaves_cfg[slave].ctrl_reg; - this_spi->hw_reg->CLK_GEN = this_spi->slaves_cfg[slave].clk_gen; - this_spi->hw_reg->TXRXDF_SIZE = this_spi->slaves_cfg[slave].txrxdf_size_reg; - this_spi->hw_reg_bit->CTRL_ENABLE = 1U; - - /* Set slave select */ - this_spi->hw_reg->SLAVE_SELECT |= ((uint32_t)1 << (uint32_t)slave); -} - -/***************************************************************************//** - * MSS_SPI_clear_slave_select() - * See "mss_spi.h" for details of how to use this function. - */ -void MSS_SPI_clear_slave_select -( - mss_spi_instance_t * this_spi, - mss_spi_slave_t slave -) -{ - ASSERT( (this_spi == &g_mss_spi0) || (this_spi == &g_mss_spi1) ); - - /* This function is only intended to be used with an SPI master. */ - ASSERT( this_spi->hw_reg_bit->CTRL_MASTER == MSS_SPI_MODE_MASTER ); - - this_spi->hw_reg->SLAVE_SELECT &= ~((uint32_t)1 << (uint32_t)slave); -} - -/***************************************************************************//** - * MSS_SPI_transfer_frame() - * See "mss_spi.h" for details of how to use this function. - */ -uint32_t MSS_SPI_transfer_frame -( - mss_spi_instance_t * this_spi, - uint32_t tx_bits -) -{ - volatile uint32_t dummy; - - ASSERT( (this_spi == &g_mss_spi0) || (this_spi == &g_mss_spi1) ); - - /* This function is only intended to be used with an SPI master. */ - ASSERT( this_spi->hw_reg_bit->CTRL_MASTER == MSS_SPI_MODE_MASTER ); - - /* Flush Rx FIFO. */ - while ( this_spi->hw_reg_bit->STATUS_RX_RDY == 1U ) - { - dummy = this_spi->hw_reg->RX_DATA; - dummy = dummy; /* Prevent Lint warning. */ - } - - /* Send frame. */ - this_spi->hw_reg->TX_DATA = tx_bits; - - /* Wait for frame Tx to complete. */ - while ( this_spi->hw_reg_bit->STATUS_TX_DONE == 0U ) - { - ; - } - - /* Read received frame. */ - /* Wait for Rx complete. */ - while ( this_spi->hw_reg_bit->STATUS_RX_RDY == 0U ) - { - ; - } - /* Return Rx data. */ - return( this_spi->hw_reg->RX_DATA ); -} - - -/***************************************************************************//** - * MSS_SPI_transfer_block() - * See "mss_spi.h" for details of how to use this function. - */ -void MSS_SPI_transfer_block -( - mss_spi_instance_t * this_spi, - const uint8_t * cmd_buffer, - uint16_t cmd_byte_size, - uint8_t * rd_buffer, - uint16_t rd_byte_size -) -{ - uint16_t transfer_idx = 0U; - uint16_t tx_idx; - uint16_t rx_idx; - uint32_t frame_count; - volatile uint32_t rx_raw; - uint16_t transit = 0U; - - uint16_t transfer_size; /* Total number of bytes transfered. */ - - ASSERT( (this_spi == &g_mss_spi0) || (this_spi == &g_mss_spi1) ); - - /* This function is only intended to be used with an SPI master. */ - ASSERT( this_spi->hw_reg_bit->CTRL_MASTER == MSS_SPI_MODE_MASTER ); - - /* Compute number of bytes to transfer. */ - transfer_size = cmd_byte_size + rd_byte_size; - - /* Adjust to 1 byte transfer to cater for DMA transfers. */ - if ( transfer_size == 0U ) - { - frame_count = 1U; - } - else - { - frame_count = transfer_size; - } - - /* Set frame size to 8 bits and the frame count to the tansfer size. */ - this_spi->hw_reg_bit->CTRL_ENABLE = 0U; - this_spi->hw_reg->CONTROL = (this_spi->hw_reg->CONTROL & ~TXRXDFCOUNT_MASK) | ( (frame_count << TXRXDFCOUNT_SHIFT) & TXRXDFCOUNT_MASK); - this_spi->hw_reg->TXRXDF_SIZE = 8U; - this_spi->hw_reg_bit->CTRL_ENABLE = 1U; - - /* Flush the receive FIFO. */ - while ( !this_spi->hw_reg_bit->STATUS_RX_FIFO_EMPTY ) - { - rx_raw = this_spi->hw_reg->RX_DATA; - } - - tx_idx = 0u; - rx_idx = 0u; - if ( tx_idx < cmd_byte_size ) - { - this_spi->hw_reg->TX_DATA = cmd_buffer[tx_idx]; - ++tx_idx; - ++transit; - } - else - { - if ( tx_idx < transfer_size ) - { - this_spi->hw_reg->TX_DATA = 0x00U; - ++tx_idx; - ++transit; - } - } - /* Perform the remainder of the transfer by sending a byte every time a byte - * has been received. This should ensure that no Rx overflow can happen in - * case of an interrupt occurs during this function. */ - while ( transfer_idx < transfer_size ) - { - if ( !this_spi->hw_reg_bit->STATUS_RX_FIFO_EMPTY ) - { - /* Process received byte. */ - rx_raw = this_spi->hw_reg->RX_DATA; - if ( transfer_idx >= cmd_byte_size ) - { - if ( rx_idx < rd_byte_size ) - { - rd_buffer[rx_idx] = (uint8_t)rx_raw; - } - ++rx_idx; - } - ++transfer_idx; - --transit; - } - - if ( !this_spi->hw_reg_bit->STATUS_TX_FIFO_FULL ) - { - if (transit < RX_FIFO_SIZE) - { - /* Send another byte. */ - if ( tx_idx < cmd_byte_size ) - { - this_spi->hw_reg->TX_DATA = cmd_buffer[tx_idx]; - ++tx_idx; - ++transit; - } - else - { - if ( tx_idx < transfer_size ) - { - this_spi->hw_reg->TX_DATA = 0x00U; - ++tx_idx; - ++transit; - } - } - } - } - } -} - -/***************************************************************************//** - * MSS_SPI_set_frame_rx_handler() - * See "mss_spi.h" for details of how to use this function. - */ -void MSS_SPI_set_frame_rx_handler -( - mss_spi_instance_t * this_spi, - mss_spi_frame_rx_handler_t rx_handler -) -{ - ASSERT( (this_spi == &g_mss_spi0) || (this_spi == &g_mss_spi1) ); - - /* This function is only intended to be used with an SPI slave. */ - ASSERT( this_spi->hw_reg_bit->CTRL_MASTER == MSS_SPI_MODE_SLAVE ); - - /* Disable block Rx handler as they are mutually exclusive. */ - this_spi->block_rx_handler = 0U; - - /* Keep a copy of the pointer to the rx hnadler function. */ - this_spi->frame_rx_handler = rx_handler; - - /* Enable Rx interrupt. */ - this_spi->hw_reg_bit->CTRL_RX_INT_EN = 1U; - NVIC_EnableIRQ( this_spi->irqn ); -} - -/***************************************************************************//** - * MSS_SPI_set_slave_tx_frame() - * See "mss_spi.h" for details of how to use this function. - */ -void MSS_SPI_set_slave_tx_frame -( - mss_spi_instance_t * this_spi, - uint32_t frame_value -) -{ - ASSERT( (this_spi == &g_mss_spi0) || (this_spi == &g_mss_spi1) ); - - /* This function is only intended to be used with an SPI slave. */ - ASSERT( this_spi->hw_reg_bit->CTRL_MASTER == MSS_SPI_MODE_SLAVE ); - - /* Disable slave block tx buffer as it is mutually exclusive with frame - * level handling. */ - this_spi->slave_tx_buffer = 0U; - this_spi->slave_tx_size = 0U; - this_spi->slave_tx_idx = 0U; - - /* Keep a copy of the slave tx frame value. */ - this_spi->slave_tx_frame = frame_value; - - /* Load frame into Tx data register. */ - this_spi->hw_reg->TX_DATA = this_spi->slave_tx_frame; - - /* Enable Tx Done interrupt in order to reload the slave Tx frame after each - * time it has been sent. */ - this_spi->hw_reg_bit->CTRL_TX_INT_EN = 1U; - NVIC_EnableIRQ( this_spi->irqn ); -} - -/***************************************************************************//** - * MSS_SPI_set_slave_block_buffers() - * See "mss_spi.h" for details of how to use this function. - */ -void MSS_SPI_set_slave_block_buffers -( - mss_spi_instance_t * this_spi, - const uint8_t * tx_buffer, - uint32_t tx_buff_size, - uint8_t * rx_buffer, - uint32_t rx_buff_size, - mss_spi_block_rx_handler_t block_rx_handler -) -{ - uint32_t frame_count; - - ASSERT( (this_spi == &g_mss_spi0) || (this_spi == &g_mss_spi1) ); - - /* This function is only intended to be used with an SPI slave. */ - ASSERT( this_spi->hw_reg_bit->CTRL_MASTER == MSS_SPI_MODE_SLAVE ); - - /* Disable Rx frame handler as it is mutually exclusive with block rx handler. */ - this_spi->frame_rx_handler = 0U; - - /* Keep a copy of the pointer to the block rx handler function. */ - this_spi->block_rx_handler = block_rx_handler; - - this_spi->slave_rx_buffer = rx_buffer; - this_spi->slave_rx_size = rx_buff_size; - this_spi->slave_rx_idx = 0U; - - /**/ - this_spi->slave_tx_buffer = tx_buffer; - this_spi->slave_tx_size = tx_buff_size; - this_spi->slave_tx_idx = 0U; - - frame_count = rx_buff_size; - - /**/ - this_spi->hw_reg_bit->CTRL_ENABLE = 0U; - this_spi->hw_reg->CONTROL = (this_spi->hw_reg->CONTROL & ~TXRXDFCOUNT_MASK) | (frame_count << TXRXDFCOUNT_SHIFT); - this_spi->hw_reg->TXRXDF_SIZE = 8U; - this_spi->hw_reg_bit->CTRL_ENABLE = 1U; - - /* Load the transmit FIFO. */ - while ( !(this_spi->hw_reg_bit->STATUS_TX_FIFO_FULL) && ( this_spi->slave_tx_idx < this_spi->slave_tx_size ) ) - { - this_spi->hw_reg->TX_DATA = this_spi->slave_tx_buffer[this_spi->slave_tx_idx]; - ++this_spi->slave_tx_idx; - } - - /* Enable Rx interrupt. */ - this_spi->hw_reg_bit->CTRL_RX_INT_EN = 1U; - NVIC_EnableIRQ( this_spi->irqn ); -} - -/***************************************************************************//** - * SPI interrupt service routine. - */ -static void mss_spi_isr -( - mss_spi_instance_t * this_spi -) -{ - uint32_t rx_frame; - - ASSERT( (this_spi == &g_mss_spi0) || (this_spi == &g_mss_spi1) ); - - if ( this_spi->hw_reg_bit->MIS_RX_RDY ) - { - while( !this_spi->hw_reg_bit->STATUS_RX_FIFO_EMPTY ) - { - rx_frame = this_spi->hw_reg->RX_DATA; - if ( this_spi->frame_rx_handler != 0U ) - { - /* Single frame handling mode. */ - this_spi->frame_rx_handler( rx_frame ); - } - else - { - if ( this_spi->block_rx_handler != 0U ) - { - /* Block handling mode. */ - if ( this_spi->slave_rx_idx < this_spi->slave_rx_size ) - { - this_spi->slave_rx_buffer[this_spi->slave_rx_idx] = (uint8_t)rx_frame; - ++this_spi->slave_rx_idx; - if ( this_spi->slave_rx_idx == this_spi->slave_rx_size ) - { - (*this_spi->block_rx_handler)( this_spi->slave_rx_buffer, this_spi->slave_rx_size ); - } - } - } - } - - /* Feed transmit FIFO. */ - if ( !(this_spi->hw_reg_bit->STATUS_TX_FIFO_FULL) && ( this_spi->slave_tx_idx < this_spi->slave_tx_size ) ) - { - this_spi->hw_reg->TX_DATA = this_spi->slave_tx_buffer[this_spi->slave_tx_idx]; - ++this_spi->slave_tx_idx; - } - } - this_spi->hw_reg_bit->INT_CLEAR_RX_RDY = 1U; - } - - if ( this_spi->hw_reg_bit->MIS_TX_DONE ) - { - if ( this_spi->slave_tx_buffer != 0U ) - { - this_spi->hw_reg->TX_DATA = this_spi->slave_tx_buffer[this_spi->slave_tx_idx]; - ++this_spi->slave_tx_idx; - if ( this_spi->slave_tx_idx >= this_spi->slave_tx_size ) - { - this_spi->slave_tx_idx = 0U; - } - } - else - { - /* Reload slave tx frame into Tx data register. */ - this_spi->hw_reg->TX_DATA = this_spi->slave_tx_frame; - } - } -} - -/***************************************************************************//** - * SPIO interrupt service routine. - * Please note that the name of this ISR is defined as part of the SmartFusion - * CMSIS startup code. - */ -#if defined(__GNUC__) -__attribute__((__interrupt__)) void SPI0_IRQHandler( void ) -#else -void SPI0_IRQHandler( void ) -#endif -{ - mss_spi_isr( &g_mss_spi0 ); - NVIC_ClearPendingIRQ( SPI0_IRQn ); -} - -/***************************************************************************//** - * SPI1 interrupt service routine. - * Please note that the name of this ISR is defined as part of the SmartFusion - * CMSIS startup code. - */ -#if defined(__GNUC__) -__attribute__((__interrupt__)) void SPI1_IRQHandler( void ) -#else -void SPI1_IRQHandler( void ) -#endif -{ - mss_spi_isr( &g_mss_spi1 ); - NVIC_ClearPendingIRQ( SPI1_IRQn ); -} - -#ifdef __cplusplus -} -#endif - diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_spi/mss_spi.h b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_spi/mss_spi.h deleted file mode 100644 index 2b3617bc4..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_spi/mss_spi.h +++ /dev/null @@ -1,1296 +0,0 @@ -/***************************************************************************//** - * (c) Copyright 2008 Actel Corporation. All rights reserved. - * - * SmartFusion microcontroller subsystem SPI bare metal software driver public API. - * - * The microcontroller subsystem SPI driver provides functions for implementing - * SPI master or SPI slave operations. These operations can be one of two - * classes: SPI frame operation or block transfer operations. - * Frame operations allow transferring SPI frames from 4 to 32 bits long. Block - * operations allow transferring blocks of data organized as 8 bit bytes. - * - * SVN $Revision: 2189 $ - * SVN $Date: 2010-02-16 22:02:32 +0000 (Tue, 16 Feb 2010) $ - */ -/*=========================================================================*//** - @mainpage SmartFusion MSS SPI Bare Metal Driver. - - @section intro_sec Introduction - The SmartFusion™ microcontroller subsystem (MSS) includes two serial - peripheral interface SPI peripherals for serial communication. This driver - provides a set of functions for controlling the MSS SPIs as part of a bare - metal system where no operating system is available. These drivers can be - adapted for use as part of an operating system, but the implementation of the - adaptation layer between this driver and the operating system's driver model - is outside the scope of this driver. - - @section hw_dependencies Hardware Flow Dependencies - The configuration of all features of the MSS SPIs is covered by this driver - with the exception of the SmartFusion IOMUX configuration. SmartFusion allows - multiple non-concurrent uses of some external pins through IOMUX configuration. - This feature allows optimization of external pin usage by assigning external - pins for use by either the microcontroller subsystem or the FPGA fabric. The - MSS SPIs serial signals are routed through IOMUXes to the SmartFusion device - external pins. These IOMUXes are automatically configured correctly by the MSS - configurator tool in the hardware flow when the MSS SPIs are enabled in that - tool. You must ensure that the MSS SPIs are enabled by the MSS configurator - tool in the hardware flow; otherwise the serial inputs and outputs will not be - connected to the chip's external pins. For more information on IOMUX, refer to - the IOMUX section of the SmartFusion Datasheet. - The base address, register addresses and interrupt number assignment for the - MSS SPI blocks are defined as constants in the SmartFusion CMSIS-PAL. You must - ensure that the SmartFusion CMSIS-PAL is either included in the software tool - chain used to build your project or is included in your project. - - @section theory_op Theory of Operation - The MSS SPI driver functions are grouped into the following categories: - • Initialization - • Configuration for either master or slave operations - • SPI master frame transfer control - • SPI master block transfer control - • SPI slave frame transfer control - • SPI slave block transfer control - • DMA block transfer - Frame transfers allow the MSS SPI to write or read up to 32 bits of data in a - SPI transaction. For example, a frame transfer of 12 bits might be used to - read the result of an ADC conversion from a SPI analog to digital converter. - Block transfers allow the MSS SPI to write or read a number of bytes in a SPI - transaction. Block transfer transactions allow data transfers in multiples of - 8 bits (8, 16, 24, 32, 40…). Block transfers are typically used with byte - oriented devices like SPI FLASH devices. - - Initialization - The MSS SPI driver is initialized through a call to the MSS_SPI_init() - function. The MSS_SPI_init() function takes only one parameter, a pointer - to one of two global data structures used by the driver to store state - information for each MSS SPI. A pointer to these data structures is also - used as first parameter to any of the driver functions to identify which MSS - SPI will be used by the called function. The names of these two data - structures are g_mss_spi0 and g_mss_spi1. Therefore any call to an MSS SPI - driver function should be of the form MSS_SPI_function_name( &g_mss_spi0, ... ) - or MSS_SPI_function_name( &g_mss_spi1, ... ). - The MSS_SPI_init() function resets the specified MSS SPI hardware block and - clears any pending interrupts from that MSS SPI in the Cortex-M3 NVIC. - The MSS_SPI_init() function must be called before any other MSS SPI driver - functions can be called. - - Configuration - A MSS SPI block can operate either as a master or slave SPI device. There - are two distinct functions for configuring a MSS SPI block for master or - slave operations. - - Master configuration - The MSS_SPI_configure_master_mode() function configures the specified MSS - SPI block for operations as a SPI master. It must be called once for each - remote SPI slave device the MSS SPI block will communicate with. It is used - to provide the following information about each SPI slave’s communication - characteristics: - • The SPI protocol mode - • The SPI clock speed - • The frame bit length - This information is held by the driver and will be used to alter the - configuration of the MSS SPI block each time a slave is selected through a - call to MSS_SPI_set_slave_select(). The SPI protocol mode defines the - initial state of the clock signal at the start of a transaction and which - clock edge will be used to sample the data signal, or it defines whether the - SPI block will operate in TI synchronous serial mode or in NSC MICROWIRE mode. - - Slave configuration - The MSS_SPI_configure_slave_mode() function configures the specified MSS SPI - block for operations as a SPI slave. It configures the following SPI - communication characteristics: - • The SPI protocol mode - • The SPI clock speed - • The frame bit length - The SPI protocol mode defines the initial state of the clock signal at the - start of a transaction and which clock edge will be used to sample the data - signal, or it defines whether the SPI block will operate in TI synchronous - serial mode or in NSC MICROWIRE mode. - - SPI master frame transfer control - The following functions are used as part of SPI master frame transfers: - • MSS_SPI_set_slave_select() - • MSS_SPI_transfer_frame() - • MSS_SPI_clear_slave_select() - The master must first select the target slave through a call to - MSS_SPI_set_slave_select(). This causes the relevant slave select line to - become asserted while data is clocked out onto the SPI data line. - A call to is then made to function MSS_SPI_transfer_frame() specifying and - the value of the data frame to be sent. - The function MSS_SPI_clear_slave_select() can be used after the transfer is - complete to prevent this slave select line from being asserted during - subsequent SPI transactions. A call to this function is only required if the - master is communicating with multiple slave devices. - - SPI master block transfer control - The following functions are used as part of SPI master block transfers: - • MSS_SPI_set_slave_select() - • MSS_SPI_clear_slave_select() - • MSS_SPI_transfer_block() - The master must first select the target slave through a call to - MSS_SPI_set_slave_select(). This causes the relevant slave select line to - become asserted while data is clocked out onto the SPI data line. - Alternatively a GPIO can be used to control the state of the target slave - device’s chip select signal. - A call to is then made to function MSS_SPI_transfer_block (). The - parameters of this function specify: - • the number of bytes to be transmitted - • a pointer to the buffer containing the data to be transmitted - • the number of bytes to be received - • a pointer to the buffer where received data will be stored - The number of bytes to be transmitted can be set to zero to indicate that - the transfer is purely a block read transfer. The number of bytes to be - received can be set to zero to specify that the transfer is purely a block - write transfer. - The function MSS_SPI_clear_slave_select() can be used after the transfer is - complete to prevent this slave select line from being asserted during - subsequent SPI transactions. A call to this function is only required if the - master is communicating with multiple slave devices. - - SPI slave frame transfer control - The following functions are used as part of SPI slave frame transfers: - • MSS_SPI_set_slave_tx_frame() - • MSS_SPI_set_frame_rx_handler() - The MSS_SPI_set_slave_tx_frame() function specifies the frame data that will - be returned to the SPI master. The frame data specified through this - function is the value that will be read over the SPI bus by the remote SPI - master when it initiates a transaction. A call to MSS_SPI_set_slave_tx_frame() - is only required if the MSS SPI slave is the target of SPI read transactions, - i.e. if data is meant to be read from the SmartFusion device over SPI. - The MSS_SPI_set_frame_rx_handler() function specifies the receive handler - function that will called when a frame of data has been received by the MSS - SPI when it is configured as a slave. The receive handler function specified - through this call will process the frame data written, over the SPI bus, to - the MSS SPI slave by the remote SPI master. The receive handler function must - be implemented as part of the application. It is only required if the MSS SPI - slave is the target of SPI frame write transactions. - - SPI slave block transfer control - The following functions are used as part of SPI slave block transfers: - • MSS_SPI_set_slave_block_buffers() - The MSS_SPI_set_slave_block_buffers() function is used to configure a MSS SPI - slave for block transfer operations. It specifies: - • The buffer containing the data that will be returned to the remote SPI master - • The buffer where data received from the remote SPI master will be stored - • The handler function that will be called after the receive buffer is filled - - DMA block transfer control - The following functions are used as part of MSS SPI DMA transfers: - • MSS_SPI_disable() - • MSS_SPI_set_transfer_byte_count() - • MSS_SPI_enable() - • MSS_SPI_tx_done() - The MSS SPI must first be disabled through a call to function MSS_SPI_disable(). - The number of bytes to be transferred is then set through a call to function - MSS_SPI_set_transfer_byte_count(). The DMA transfer is then initiated by a call - to the MSS_PDMA_start() function provided by the MSS PDMA driver. The actual - DMA transfer will only start once the MSS SPI block has been re-enabled through - a call to MSS_SPI_enable(). The completion of the DMA driven SPI transfer can - be detected through a call to MSS_SPI_tx_done(). The direction of the SPI - transfer, write or read, depends on the DMA channel configuration. A SPI write - transfer occurs when the DMA channel is configured to write data to the MSS SPI - block. A SPI read transfer occurs when the DMA channel is configured to read data - from the MSS SPI block. - - *//*=========================================================================*/ -#ifndef MSS_SPI_H_ -#define MSS_SPI_H_ - -#include "../../CMSIS/a2fxxxm3.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/***************************************************************************//** - This defines the function prototype that must be followed by MSS SPI slave - frame receive handler functions. These functions are registered with the MSS - SPI driver through the MSS_SPI_set_frame_rx_handler () function. - - Declaring and Implementing Slave Frame Receive Handler Functions: - Slave frame receive handler functions should follow the following prototype: - void slave_frame_receive_handler ( uint32_t rx_frame ); - The actual name of the receive handler is unimportant. You can use any name - of your choice for the receive frame handler. The rx_frame parameter will - contain the value of the received frame. - */ -typedef void (*mss_spi_frame_rx_handler_t)( uint32_t rx_frame ); - -/***************************************************************************//** - This defines the function prototype that must be followed by MSS SPI slave - block receive handler functions. These functions are registered with the MSS - SPI driver through the MSS_SPI_set_slave_block_buffers() function. - - Declaring and Implementing Slave Block Receive Handler Functions - Slave block receive handler functions should follow the following prototype: - void mss_spi_block_rx_handler ( uint8_t * rx_buff, uint16_t rx_size ); - The actual name of the receive handler is unimportant. You can use any name - of your choice for the receive frame handler. The rx_buff parameter will - contain a pointer to the start of the received block. The rx_size parameter - will contain the number of bytes of the received block. - - */ -typedef void (*mss_spi_block_rx_handler_t)( uint8_t * rx_buff, uint32_t rx_size ); - -/***************************************************************************//** - This enumeration is used to define the settings for the SPI protocol mode - bits, CPHA and CPOL. It is used as a parameter to the MSS_SPI_configure_master_mode() - and MSS_SPI_configure_slave_mode() functions. - - - MSS_SPI_MODE0: - Clock starts low, data read on clock's rising edge, data changes on - falling edge. - - - MSS_SPI_MODE1: - Clock starts low, data read on clock's falling edge, data changes on - rising edge. - - - MSS_SPI_MODE2: - Clock starts high, data read on clock's falling edge, data changes on - rising edge. - - - MSS_SPI_MODE3: - Clock starts high, data read on clock's rising edge, data changes on - falling edge. - - - MSS_TI_MODE: - TI syncronous serial mode. Slave select is pulsed at start of transfer. - - - MSS_NSC_MODE: - NSC Microwire mode. - */ -typedef enum __mss_spi_protocol_mode_t -{ - MSS_SPI_MODE0 = 0x00000000, - MSS_SPI_TI_MODE = 0x00000004, - MSS_SPI_NSC_MODE = 0x00000008, - MSS_SPI_MODE2 = 0x01000000, - MSS_SPI_MODE1 = 0x02000000, - MSS_SPI_MODE3 = 0x03000000 -} mss_spi_protocol_mode_t; - -/***************************************************************************//** - This enumeration specifies the divider to be applied to the the APB bus clock - in order to generate the SPI clock. It is used as parameter to the - MSS_SPI_configure_master_mode() and MSS_SPI_configure_slave_mode()functions. - */ - typedef enum __mss_spi_pclk_div_t - { - MSS_SPI_PCLK_DIV_2 = 0, - MSS_SPI_PCLK_DIV_4 = 1, - MSS_SPI_PCLK_DIV_8 = 2, - MSS_SPI_PCLK_DIV_16 = 3, - MSS_SPI_PCLK_DIV_32 = 4, - MSS_SPI_PCLK_DIV_64 = 5, - MSS_SPI_PCLK_DIV_128 = 6, - MSS_SPI_PCLK_DIV_256 = 7 -} mss_spi_pclk_div_t; - -/***************************************************************************//** - This enumeration is used to select a specific SPI slave device (0 to 7). It is - used as a parameter to the MSS_SPI_configure_master_mode(), - MSS_SPI_set_slave_select() and MSS_SPI_clear_slave_select () functions. - */ - typedef enum __mss_spi_slave_t - { - MSS_SPI_SLAVE_0 = 0, - MSS_SPI_SLAVE_1 = 1, - MSS_SPI_SLAVE_2 = 2, - MSS_SPI_SLAVE_3 = 3, - MSS_SPI_SLAVE_4 = 4, - MSS_SPI_SLAVE_5 = 5, - MSS_SPI_SLAVE_6 = 6, - MSS_SPI_SLAVE_7 = 7, - MSS_SPI_MAX_NB_OF_SLAVES = 8 -} mss_spi_slave_t; - -/***************************************************************************//** - This constant defines a frame size of 8 bits when configuring an MSS SPI to - perform block transfer data transactions. - It must be used as the value for the frame_bit_length parameter of function - MSS_SPI_configure_master_mode() when performing block transfers between the - MSS SPI master and the target SPI slave. - It must also be used as the value for the frame_bit_length parameter of - function MSS_SPI_configure_slave_mode() when performing block transfers - between the MSS SPI slave and the remote SPI master. - */ -#define MSS_SPI_BLOCK_TRANSFER_FRAME_SIZE 8 - -/***************************************************************************//** - The mss_spi_slave_cfg_t holds the MSS SPI configuration that must be used to - communicate with a specific SPI slave. - */ -typedef struct __mss_spi_slave_cfg_t -{ - uint32_t ctrl_reg; - uint8_t txrxdf_size_reg; - uint8_t clk_gen; -} mss_spi_slave_cfg_t; - -/***************************************************************************//** - There is one instance of this structure for each of the microcontroller - subsystem's SPIs. Instances of this structure are used to identify a specific - SPI. A pointer to an instance of the mss_spi_instance_t structure is passed as - the first parameter to MSS SPI driver functions to identify which SPI should - perform the requested operation. - */ -typedef struct __mss_spi_instance_t -{ - /* CMSIS related defines identifying the SPI hardware. */ - SPI_TypeDef * hw_reg; /*!< Pointer to SPI registers. */ - SPI_BitBand_TypeDef * hw_reg_bit; /*!< Pointer to SPI registers bit band area. */ - IRQn_Type irqn; /*!< SPI's Cortex-M3 NVIC interrupt number. */ - - /* Internal transmit state: */ - const uint8_t * slave_tx_buffer; /*!< Pointer to slave transmit buffer. */ - uint32_t slave_tx_size; /*!< Size of slave transmit buffer. */ - uint32_t slave_tx_idx; /*!< Current index into slave transmit buffer. */ - - /* Internal receive state: */ - uint8_t * slave_rx_buffer; /*!< Pointer to buffer where data received by a slave will be stored. */ - uint32_t slave_rx_size; /*!< Slave receive buffer size. */ - uint32_t slave_rx_idx; /*!< Current index into slave receive buffer. */ - - /* Configuration for each target slave. */ - mss_spi_slave_cfg_t slaves_cfg[MSS_SPI_MAX_NB_OF_SLAVES]; - - /** Slave received frame handler: */ - mss_spi_frame_rx_handler_t frame_rx_handler; /*!< Pointer to function that will be called when a frame is received when the SPI block is configured as slave. */ - - uint32_t slave_tx_frame; /*!< Value of the data frame that will be transmited when the SPI block is configured as slave. */ - - /* Slave block rx handler: */ - mss_spi_block_rx_handler_t block_rx_handler; /*!< Pointer to the function that will be called when a data block has been received. */ - -} mss_spi_instance_t; - -/***************************************************************************//** - This instance of mss_spi_instance_t holds all data related to the operations - performed by MSS SPI 0. A pointer to g_mss_spi0 is passed as the first - parameter to MSS SPI driver functions to indicate that MSS SPI 0 should - perform the requested operation. - */ -extern mss_spi_instance_t g_mss_spi0; - -/***************************************************************************//** - This instance of mss_spi_instance_t holds all data related to the operations - performed by MSS SPI 1. A pointer to g_mss_spi1 is passed as the first - parameter to MSS SPI driver functions to indicate that MSS SPI 1 should - perform the requested operation. - */ -extern mss_spi_instance_t g_mss_spi1; - -/***************************************************************************//** - The MSS_SPI_init() function initializes and hardware and data structures of - one of the SmartFusion MSS SPIs. The MSS_SPI_init() function must be called - before any other MSS SPI driver functions can be called. - - @param this_spi - The this_spi parameter is a pointer to an mss_spi_instance_t structure - identifying the MSS SPI hardware block to be initialized. There are two such - data structures, g_mss_spi0 and g_mss_spi1, associated with MSS SPI 0 and - MSS SPI 1 respectively. This parameter must point to either the g_mss_spi0 - or g_mss_spi1 global data structure defined within the SPI driver. - - Example: - @code - MSS_SPI_init( &g_mss_spi0 ); - @endcode - */ -void MSS_SPI_init -( - mss_spi_instance_t * this_spi -); - -/***************************************************************************//** - The MSS_SPI_configure_slave_mode() function configure a MSS SPI block for - operations as a slave SPI device. It configures the SPI hardware with the - selected SPI protocol mode and clock speed. - - @param this_spi - The this_spi parameter is a pointer to an mss_spi_instance_t structure - identifying the MSS SPI hardware block to be initialized. There are two such - data structures, g_mss_spi0 and g_mss_spi1, associated with MSS SPI 0 and - MSS SPI 1 respectively. This parameter must point to either the g_mss_spi0 - or g_mss_spi1 global data structure defined within the SPI driver. - - @param protocol_mode - Serial peripheral interface operating mode. Allowed values are: - - MSS_SPI_MODE0 - - MSS_SPI_MODE1 - - MSS_SPI_MODE2 - - MSS_SPI_MODE3 - - MSS_TI_MODE - - MSS_NSC_MODE - - @param clk_rate - Divider value used to generate serial interface clock signal from PCLK. - Allowed values are: - - MSS_SPI_PCLK_DIV_2 - - MSS_SPI_PCLK_DIV_4 - - MSS_SPI_PCLK_DIV_8 - - MSS_SPI_PCLK_DIV_16 - - MSS_SPI_PCLK_DIV_32 - - MSS_SPI_PCLK_DIV_64 - - MSS_SPI_PCLK_DIV_128 - - MSS_SPI_PCLK_DIV_256 - - @param frame_bit_length - Number of bits making up the frame. The maximum frame length is 32 bits. You - must use the MSS_SPI_BLOCK_TRANSFER_FRAME_SIZE constant as the value for - frame_bit_length when configuring the MSS SPI master for block transfer - transactions with the target SPI slave. - - Example: - @code - MSS_SPI_init( &g_mss_spi0 ); - MSS_SPI_configure_slave_mode - ( - &g_mss_spi0, - MSS_SPI_MODE2, - MSS_SPI_PCLK_DIV_64, - MSS_SPI_BLOCK_TRANSFER_FRAME_SIZE - ); - @endcode - - */ -void MSS_SPI_configure_slave_mode -( - mss_spi_instance_t * this_spi, - mss_spi_protocol_mode_t protocol_mode, - mss_spi_pclk_div_t clk_rate, - uint8_t frame_bit_length -); - -/***************************************************************************//** - The MSS_SPI_configure_master_mode() function configures the protocol mode, - serial clock speed and frame size for a specific target SPI slave device. It - is used when the MSS SPI hardware block is used as a SPI master. This function - must be called once for each target SPI slave the SPI master is going to - communicate with. The SPI master hardware will be configured with the - configuration specified by this function during calls to - MSS_SPI_set_slave_select(). - - @param this_spi - The this_spi parameter is a pointer to an mss_spi_instance_t structure - identifying the MSS SPI hardware block to be initialized. There are two such - data structures, g_mss_spi0 and g_mss_spi1, associated with MSS SPI 0 and - MSS SPI 1 respectively. This parameter must point to either the g_mss_spi0 - or g_mss_spi1 global data structure defined within the SPI driver. - - - @param slave - The slave parameter is used to identify a target SPI slave. The driver will - hold the MSS SPI master configuration required to communicate with this - slave, as specified by the other function parameters. Allowed values are: - • MSS_SPI_SLAVE_0 - • MSS_SPI_SLAVE_1 - • MSS_SPI_SLAVE_2 - • MSS_SPI_SLAVE_3 - • MSS_SPI_SLAVE_4 - • MSS_SPI_SLAVE_5 - • MSS_SPI_SLAVE_6 - • MSS_SPI_SLAVE_7 - - @param protocol_mode - Serial peripheral interface operating mode. Allowed values are: - • MSS_SPI_MODE0 - • MSS_SPI_MODE1 - • MSS_SPI_MODE2 - • MSS_SPI_MODE3 - • MSS_SPI_TI_MODE - • MSS_SPI_NSC_MODE - - @param clk_rate - Divider value used to generate serial interface clock signal from PCLK. - Allowed values are: - • MSS_SPI_PCLK_DIV_2 - • MSS_SPI_PCLK_DIV_4 - • MSS_SPI_PCLK_DIV_8 - • MSS_SPI_PCLK_DIV_16 - • MSS_SPI_PCLK_DIV_32 - • MSS_SPI_PCLK_DIV_64 - • MSS_SPI_PCLK_DIV_128 - • MSS_SPI_PCLK_DIV_256 - - @param frame_bit_length - Number of bits making up the frame. The maximum frame length is 32 bits. You - must use the MSS_SPI_BLOCK_TRANSFER_FRAME_SIZE constant as the value for - frame_bit_length when configuring the MSS SPI master for block transfer - transactions with the target SPI slave. - - Example: - @code - MSS_SPI_init( &g_mss_spi0 ); - - MSS_SPI_configure_master_mode - ( - &g_mss_spi0, - MSS_SPI_SLAVE_0, - MSS_SPI_MODE2, - MSS_SPI_PCLK_DIV_64, - 12 - ); - - MSS_SPI_configure_master_mode - ( - &g_mss_spi0, - MSS_SPI_SLAVE_1, - MSS_SPI_TI_MODE, - MSS_SPI_PCLK_DIV_128, - MSS_SPI_BLOCK_TRANSFER_FRAME_SIZE - ); - @endcode - */ -void MSS_SPI_configure_master_mode -( - mss_spi_instance_t * this_spi, - mss_spi_slave_t slave, - mss_spi_protocol_mode_t protocol_mode, - mss_spi_pclk_div_t clk_rate, - uint8_t frame_bit_length -); - -/*============================================================================== - * Master functions - *============================================================================*/ - -/***************************************************************************//** - The MSS_SPI_slave_select() function is used by a MSS SPI master to select a - specific slave. This function causes the relevant slave select signal to be - asserted. - - @param this_spi - The this_spi parameter is a pointer to an mss_spi_instance_t structure - identifying the MSS SPI hardware block to be initialized. There are two such - data structures, g_mss_spi0 and g_mss_spi1, associated with MSS SPI 0 and - MSS SPI 1 respectively. This parameter must point to either the g_mss_spi0 - or g_mss_spi1 global data structure defined within the SPI driver. - - - @param slave - The slave parameter is one of mss_spi_slave_t enumerated constants - identifying a slave. - - Example: - @code - const uint8_t frame_size = 25; - const uint32_t master_tx_frame = 0x0100A0E1; - - MSS_SPI_init( &g_mss_spi0 ); - MSS_SPI_configure_master_mode - ( - &g_mss_spi0, - MSS_SPI_SLAVE_0, - MSS_SPI_MODE1, - MSS_SPI_PCLK_DIV_256, - frame_size - ); - - MSS_SPI_set_slave_select( &g_mss_spi0, MSS_SPI_SLAVE_0 ); - MSS_SPI_transfer_frame( &g_mss_spi0, master_tx_frame ); - MSS_SPI_clear_slave_select( &g_mss_spi0, MSS_SPI_SLAVE_0 ); - @endcode - */ -void MSS_SPI_set_slave_select -( - mss_spi_instance_t * this_spi, - mss_spi_slave_t slave -); - -/***************************************************************************//** - The MSS_SPI_clear_slave_select() function is used by a MSS SPI Master to - deselect a specific slave. This function causes the relevant slave select - signal to be de-asserted. - - @param this_spi - The this_spi parameter is a pointer to an mss_spi_instance_t structure - identifying the MSS SPI hardware block to be initialized. There are two such - data structures, g_mss_spi0 and g_mss_spi1, associated with MSS SPI 0 and - MSS SPI 1 respectively. This parameter must point to either the g_mss_spi0 - or g_mss_spi1 global data structure defined within the SPI driver. - - - @param slave - The slave parameter is one of mss_spi_slave_t enumerated constants - identifying a slave. - - Example: - @code - const uint8_t frame_size = 25; - const uint32_t master_tx_frame = 0x0100A0E1; - - MSS_SPI_init( &g_mss_spi0 ); - MSS_SPI_configure_master_mode - ( - &g_mss_spi0, - MSS_SPI_SLAVE_0, - MSS_SPI_MODE1, - MSS_SPI_PCLK_DIV_256, - frame_size - ); - MSS_SPI_set_slave_select( &g_mss_spi0, MSS_SPI_SLAVE_0 ); - MSS_SPI_transfer_frame( &g_mss_spi0, master_tx_frame ); - MSS_SPI_clear_slave_select( &g_mss_spi0, MSS_SPI_SLAVE_0 ); - @endcode - */ -void MSS_SPI_clear_slave_select -( - mss_spi_instance_t * this_spi, - mss_spi_slave_t slave -); - -/***************************************************************************//** - The MSS_SPI_disable() function is used to temporarily disable a MSS SPI - hardware block. This function is typically used in conjunction with the - SPI_set_transfer_byte_count() function to setup a DMA controlled SPI transmit - transaction as the SPI_set_transfer_byte_count() function must only be used - when the MSS SPI hardware is disabled. - - @param this_spi - The this_spi parameter is a pointer to an mss_spi_instance_t structure - identifying the MSS SPI hardware block to be initialized. There are two such - data structures, g_mss_spi0 and g_mss_spi1, associated with MSS SPI 0 and - MSS SPI 1 respectively. This parameter must point to either the g_mss_spi0 - or g_mss_spi1 global data structure defined within the SPI driver. - - Example: - @code - uint32_t transfer_size; - uint8_t tx_buffer[8] = { 1, 2, 3, 4, 5, 6, 7, 8 }; - - transfer_size = sizeof(tx_buffer); - - MSS_SPI_disable( &g_mss_spi0 ); - MSS_SPI_set_transfer_byte_count( &g_mss_spi0, transfer_size ); - PDMA_start - ( - PDMA_CHANNEL_0, - (uint32_t)tx_buffer, - PDMA_SPI1_TX_REGISTER, - transfer_size - ); - MSS_SPI_enable( &g_mss_spi0 ); - - while ( !MSS_SPI_tx_done( &g_mss_spi0 ) ) - { - ; - } - @endcode - */ -static __INLINE void MSS_SPI_disable -( - mss_spi_instance_t * this_spi -) -{ - this_spi->hw_reg_bit->CTRL_ENABLE = 0; -} - -/***************************************************************************//** - The MSS_SPI_enable() function is used to re-enable a MSS SPI hardware block - after it was disabled using the SPI_disable() function. - - @param this_spi - The this_spi parameter is a pointer to an mss_spi_instance_t structure - identifying the MSS SPI hardware block to be initialized. There are two such - data structures, g_mss_spi0 and g_mss_spi1, associated with MSS SPI 0 and - MSS SPI 1 respectively. This parameter must point to either the g_mss_spi0 - or g_mss_spi1 global data structure defined within the SPI driver. - - Example: - @code - uint32_t transfer_size; - uint8_t tx_buffer[8] = { 1, 2, 3, 4, 5, 6, 7, 8 }; - - transfer_size = sizeof(tx_buffer); - - MSS_SPI_disable( &g_mss_spi0 ); - MSS_SPI_set_transfer_byte_count( &g_mss_spi0, transfer_size ); - PDMA_start - ( - PDMA_CHANNEL_0, - (uint32_t)tx_buffer, - PDMA_SPI1_TX_REGISTER, - transfer_size - ); - MSS_SPI_enable( &g_mss_spi0 ); - - while ( !MSS_SPI_tx_done( &g_mss_spi0 ) ) - { - ; - } - @endcode - */ -static __INLINE void MSS_SPI_enable -( - mss_spi_instance_t * this_spi -) -{ - this_spi->hw_reg_bit->CTRL_ENABLE = 1; -} - -/***************************************************************************//** - The MSS_SPI_set_transfer_byte_count() function is used as part of setting up - a SPI transfer using DMA. It specifies the number of bytes that must be - transferred before MSS_SPI_tx_done() indicates that the transfer is complete. - - @param this_spi - The this_spi parameter is a pointer to an mss_spi_instance_t structure - identifying the MSS SPI hardware block to be initialized. There are two such - data structures, g_mss_spi0 and g_mss_spi1, associated with MSS SPI 0 and - MSS SPI 1 respectively. This parameter must point to either the g_mss_spi0 - or g_mss_spi1 global data structure defined within the SPI driver. - - - @param byte_count - The byte_count parameter specifies the number of bytes that must be - transferred by the SPI hardware block considering that a transaction has - been completed. - - Example: - @code - uint32_t transfer_size; - uint8_t tx_buffer[8] = { 1, 2, 3, 4, 5, 6, 7, 8 }; - - transfer_size = sizeof(tx_buffer); - - MSS_SPI_disable( &g_mss_spi0 ); - - MSS_SPI_set_transfer_byte_count( &g_mss_spi0, transfer_size ); - - PDMA_start( PDMA_CHANNEL_0, (uint32_t)tx_buffer, 0x40011014, transfer_size ); - - MSS_SPI_enable( &g_mss_spi0 ); - - while ( !MSS_SPI_tx_done( &g_mss_spi0) ) - { - ; - } - @endcode - */ -static __INLINE void MSS_SPI_set_transfer_byte_count -( - mss_spi_instance_t * this_spi, - uint16_t byte_count -) -{ - const uint32_t TXRXDFCOUNT_SHIFT = 8U; - const uint32_t TXRXDFCOUNT_MASK = 0x00FFFF00U; - - this_spi->hw_reg->CONTROL = (this_spi->hw_reg->CONTROL & ~TXRXDFCOUNT_MASK) | ( (byte_count << TXRXDFCOUNT_SHIFT) & TXRXDFCOUNT_MASK); - this_spi->hw_reg->TXRXDF_SIZE = 8U; -} - -/***************************************************************************//** - The MSS_SPI_tx_done() function is used to find out if a DMA controlled transfer - has completed. - - @param this_spi - The this_spi parameter is a pointer to an mss_spi_instance_t structure - identifying the MSS SPI hardware block to be initialized. There are two such - data structures, g_mss_spi0 and g_mss_spi1, associated with MSS SPI 0 and - MSS SPI 1 respectively. This parameter must point to either the g_mss_spi0 - or g_mss_spi1 global data structure defined within the SPI driver. - - Example: - @code - uint32_t transfer_size; - uint8_t tx_buffer[8] = { 1, 2, 3, 4, 5, 6, 7, 8 }; - - transfer_size = sizeof(tx_buffer); - - MSS_SPI_disable( &g_mss_spi0 ); - - MSS_SPI_set_transfer_byte_count( &g_mss_spi0, transfer_size ); - - PDMA_start - ( - PDMA_CHANNEL_0, - (uint32_t)tx_buffer, - PDMA_SPI1_TX_REGISTER, - transfer_size - ); - - MSS_SPI_enable( &g_mss_spi0 ); - - while ( !MSS_SPI_tx_done(&g_mss_spi0) ) - { - ; - } - @endcode - */ -static __INLINE uint32_t MSS_SPI_tx_done -( - mss_spi_instance_t * this_spi -) -{ - return this_spi->hw_reg_bit->STATUS_TX_DONE; -} - -/***************************************************************************//** - The MSS_SPI_transfer_frame() function is used by a MSS SPI master to transmit - and receive a frame up to 32 bits long. This function is typically used for - transactions with a SPI slave where the number of transmit and receive bits is - not divisible by 8. - - @param this_spi - The this_spi parameter is a pointer to an mss_spi_instance_t structure - identifying the MSS SPI hardware block to be initialized. There are two such - data structures, g_mss_spi0 and g_mss_spi1, associated with MSS SPI 0 and - MSS SPI 1 respectively. This parameter must point to either the g_mss_spi0 - or g_mss_spi1 global data structure defined within the SPI driver. - - - @param tx_bits - The tx_bits parameter is a 32 bits word containing the value that will be - transmitted. - Note: The bit length of the value to be transmitted to the slave must be - specified as the frame_bit_length parameter in a previous call to - the MSS_SPI_configure_master() function. - - @return - This function returns a 32 bits word containing the value that is received - from the slave. - - Example: - @code - const uint8_t frame_size = 25; - const uint32_t master_tx_frame = 0x0100A0E1; - uint32_t master_rx; - - MSS_SPI_init( &g_mss_spi0 ); - MSS_SPI_configure_master_mode - ( - &g_mss_spi0, - MSS_SPI_SLAVE_0, - MSS_SPI_MODE1, - MSS_SPI_PCLK_DIV_256, - frame_size - ); - - MSS_SPI_set_slave_select( &g_mss_spi0, MSS_SPI_SLAVE_0 ); - master_rx = MSS_SPI_transfer_frame( &g_mss_spi0, master_tx_frame ); - MSS_SPI_clear_slave_select( &g_mss_spi0, MSS_SPI_SLAVE_0 ); - @endcode - */ -uint32_t MSS_SPI_transfer_frame -( - mss_spi_instance_t * this_spi, - uint32_t tx_bits -); - -/***************************************************************************//** - The MSS_SPI_transfer_block() function is used by MSS SPI masters to transmit - and receive blocks of data organized as a specified number of bytes. It can be - used for: - • Writing a data block to a slave - • Reading a data block from a slave - • Sending a command to a slave followed by reading the outcome of the - command in a single SPI transaction. This function can be used alongside - Peripheral DMA functions to perform the actual moving to and from the SPI - hardware block using Peripheral DMA. - - @param this_spi - The this_spi parameter is a pointer to an mss_spi_instance_t structure - identifying the MSS SPI hardware block to be initialized. There are two such - data structures, g_mss_spi0 and g_mss_spi1, associated with MSS SPI 0 and - MSS SPI 1 respectively. This parameter must point to either the g_mss_spi0 - or g_mss_spi1 global data structure defined within the SPI driver. - - - @param cmd_buffer - The cmd_buffer parameter is a pointer to the buffer containing the data that - will be sent by the master from the beginning of the transfer. This pointer - can be null (0) if the master does not need to send a command before reading - data or if the command part of the transfer is written to the SPI hardware - block using DMA. - - @param cmd_byte_size - The cmd_byte_size parameter specifies the number of bytes contained in - cmd_buffer that will be sent. A value of 0 indicates that no data needs to - be sent to the slave. A non-zero value while the cmd_buffer pointer is 0 is - used to indicate that the command data will be written to the SPI hardware - block using DMA. - - @param rd_buffer - The rd_buffer parameter is a pointer to the buffer where the data received - from the slave after the command has been sent will be stored. - - @param rd_byte_size - The rd_byte_size parameter specifies the number of bytes to be received from - the slave and stored in the rd_buffer. A value of 0 indicates that no data - is to be read from the slave. A non-zero value while the rd_buffer pointer - is null (0) is used to specify the receive size when using DMA to read from - the slave. - Note: All bytes received from the slave, including the bytes received - while the command is sent, will be read through DMA. - - Polled write transfer example: - @code - uint8_t master_tx_buffer[MASTER_TX_BUFFER] = - { - 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A - }; - MSS_SPI_init( &g_mss_spi0 ); - MSS_SPI_configure_master_mode - ( - &g_mss_spi0, - MSS_SPI_SLAVE_0, - MSS_SPI_MODE1, - MSS_SPI_PCLK_DIV_256, - MSS_SPI_BLOCK_TRANSFER_FRAME_SIZE - ); - - MSS_SPI_set_slave_select( &g_mss_spi0, MSS_SPI_SLAVE_0 ); - MSS_SPI_transfer_block - ( - &g_mss_spi0, - master_tx_buffer, - sizeof(master_tx_buffer), - 0, - 0 - ); - MSS_SPI_clear_slave_select( &g_mss_spi0, MSS_SPI_SLAVE_0 ); - @endcode - - DMA transfer example: - In this example the transmit and receive buffers are not specified as part of - the call to MSS_SPI_transfer_block(). MSS_SPI_transfer_block() will only - prepare the MSS SPI hardware for a transfer. The MSS SPI transmit hardware - FIFO is filled using one DMA channel and a second DMA channel is used to read - the content of the MSS SPI receive hardware FIFO. The transmit and receive - buffers are specified by two separate calls to PDMA_start() to initiate DMA - transfers on the channel used for transmit data and the channel used for - receive data. - @code - uint8_t master_tx_buffer[MASTER_RX_BUFFER] = - { - 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA - }; - uint8_t slave_rx_buffer[MASTER_RX_BUFFER] = - { - 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A - }; - MSS_SPI_init( &g_mss_spi0 ); - - MSS_SPI_configure_master_mode - ( - &g_mss_spi0, - MSS_SPI_SLAVE_0, - MSS_SPI_MODE1, - MSS_SPI_PCLK_DIV_256, - MSS_SPI_BLOCK_TRANSFER_FRAME_SIZE - ); - MSS_SPI_set_slave_select( &g_mss_spi0, MSS_SPI_SLAVE_0 ); - MSS_SPI_transfer_block( &g_mss_spi0, 0, 0, 0, 0 ); - PDMA_start - ( - PDMA_CHANNEL_1, - PDMA_SPI0_RX_REGISTER, - (uint32_t)master_rx_buffer, - sizeof(master_rx_buffer) - ); - PDMA_start - ( - PDMA_CHANNEL_2, - (uint32_t)master_tx_buffer, - PDMA_SPI0_TX_REGISTER, - sizeof(master_tx_buffer) - ); - while( PDMA_status(PDMA_CHANNEL_1) == 0 ) - { - ; - } - MSS_SPI_clear_slave_select( &g_mss_spi0, MSS_SPI_SLAVE_0 ); - @endcode - */ -void MSS_SPI_transfer_block -( - mss_spi_instance_t * this_spi, - const uint8_t * cmd_buffer, - uint16_t cmd_byte_size, - uint8_t * rd_buffer, - uint16_t rd_byte_size -); - -/*============================================================================== - * Slave functions - *============================================================================*/ - -/***************************************************************************//** - The MSS_SPI_set_frame_rx_handler() function is used by MSS SPI slaves to - specify the receive handler function that will be called by the MSS SPI driver - interrupt handler when a a frame of data is received by the MSS SPI slave. - - @param this_spi - The this_spi parameter is a pointer to an mss_spi_instance_t structure - identifying the MSS SPI hardware block to be initialized. There are two such - data structures, g_mss_spi0 and g_mss_spi1, associated with MSS SPI 0 and - MSS SPI 1 respectively. This parameter must point to either the g_mss_spi0 - or g_mss_spi1 global data structure defined within the SPI driver. - - - @param rx_handler - The rx_handler parameter is a pointer to the frame receive handler that must - be called when a frame is received by the MSS SPI slave. - - Example: - @code - uint32_t g_slave_rx_frame = 0; - - void slave_frame_handler( uint32_t rx_frame ) - { - g_slave_rx_frame = rx_frame; - } - - int setup_slave( void ) - { - const uint16_t frame_size = 25; - MSS_SPI_init( &g_mss_spi1 ); - MSS_SPI_configure_slave_mode - ( - &g_mss_spi0, - MSS_SPI_MODE2, - MSS_SPI_PCLK_DIV_64, - frame_size - ); - MSS_SPI_set_frame_rx_handler( &g_mss_spi1, slave_frame_handler ); - } - @endcode - */ -void MSS_SPI_set_frame_rx_handler -( - mss_spi_instance_t * this_spi, - mss_spi_frame_rx_handler_t rx_handler -); - -/***************************************************************************//** - The MSS_SPI_set_slave_tx_frame() function is used by MSS SPI slaves to specify - the frame that will be transmitted when a transaction is initiated by the SPI - master. - - @param this_spi - The this_spi parameter is a pointer to an mss_spi_instance_t structure - identifying the MSS SPI hardware block to be initialized. There are two such - data structures, g_mss_spi0 and g_mss_spi1, associated with MSS SPI 0 and - MSS SPI 1 respectively. This parameter must point to either the g_mss_spi0 - or g_mss_spi1 global data structure defined within the SPI driver. - - - @param frame_value - The frame_value parameter contains the value of the frame to be sent to the - master. - Note: The bit length of the value to be transmitted to the master must be - specified as the frame_bit_length parameter in a previous call to - the MSS_SPI_configure_slave() function. - - Example: - @code - const uint16_t frame_size = 25; - const uint32_t slave_tx_frame = 0x0110F761; - uint32_t master_rx; - - MSS_SPI_init( &g_mss_spi1 ); - MSS_SPI_configure_slave_mode - ( - &g_mss_spi0, - MSS_SPI_MODE2, - MSS_SPI_PCLK_DIV_64, - frame_size - ); - MSS_SPI_set_slave_tx_frame( &g_mss_spi1, slave_tx_frame ); - @endcode - */ -void MSS_SPI_set_slave_tx_frame -( - mss_spi_instance_t * this_spi, - uint32_t frame_value -); - -/***************************************************************************//** - The MSS_SPI_set_slave_block_buffers() function is used to configure an MSS - SPI slave for block transfer operations. It specifies one or more of the - following: - • The data that will be transmitted when accessed by a master. - • The buffer where data received from a master will be stored. - • The handler function that must be called after the receive buffer has been - filled. - • The number of bytes that must be received from the master before the receive - handler function is called. - These parameters allow the following use cases: - • Slave performing an action after receiving a block of data from a master - containing a command. The action will be performed by the receive handling - based on the content of the receive data buffer. - • Slave returning a block of data to the master. The type of information is - always the same but the actual values change over time. For example, - returning the voltage of a predefined set of analog inputs. - • Slave returning data based on a command contained in the first part of the - SPI transaction. For example, reading the voltage of the analog input - specified by the first data byte by the master. This is achieved by setting - the rx_buff_size parameter to the number of received bytes making up the - command. - - @param this_spi - The this_spi parameter is a pointer to an mss_spi_instance_t structure - identifying the MSS SPI hardware block to be initialized. There are two such - data structures, g_mss_spi0 and g_mss_spi1, associated with MSS SPI 0 and - MSS SPI 1 respectively. This parameter must point to either the g_mss_spi0 - or g_mss_spi1 global data structure defined within the SPI driver. - - - @param tx_buffer - The tx_buffer parameter is a pointer to a buffer containing the data that - will be sent to the master. This parameter can be set to 0 if the MSS SPI - slave is not intended to be the target of SPI read transactions or if DMA - is used to transfer SPI read data into the MSS SPI slave. - - @param tx_buff_size - The tx_buff_size parameter specifies the number of bytes contained in the - tx_buffer. This parameter can be set to 0 if the MSS SPI slave is not - intended to be the target of SPI read transactions or if DMA is used to - transfer SPI read data into the MSS SPI slave. - - @param rx_buffer - The rx_buffer parameter is a pointer to the buffer where data received from - the master will be stored. This parameter can be set to 0 if the MSS SPI - slave is not intended to be the target of SPI write or write-read - transactions. It can also set to 0 if the MSS SPI slave uses DMA to handle - data written to it. - - @param rx_buff_size - The rx_buff_size parameter specifies the size of the receive buffer. It is - also the number of bytes that must be received before the receive handler - is called, if a receive handler is specified using the block_rx_handler - parameter. This parameter can be set to 0 if the MSS SPI slave is not - intended to be the target of SPI write or write-read transactions. It can - also set to 0 if the MSS SPI slave uses DMA to handle data written to it. - - @param block_rx_handler - The block_rx_handler parameter is a pointer to a function that will be - called when the receive buffer has been filled. This parameter can be set - to 0 if the MSS SPI slave is not intended to be the target of SPI write or - write-read transactions. It can also set to 0 if the MSS SPI slave uses DMA - to handle data written to it. - - Slave performing operation based on master command: - In this example the SPI slave is configured to receive 10 bytes of data or - command from the SPI slave and process the data received from the master. - @code - uint32_t nb_of_rx_handler_calls = 0; - - void spi1_block_rx_handler_b - ( - uint8_t * rx_buff, - uint16_t rx_size - ) - { - ++nb_of_rx_handler_calls; - } - - void setup_slave( void ) - { - uint8_t slave_rx_buffer[10] = - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - }; - - MSS_SPI_init( &g_mss_spi1 ); - MSS_SPI_configure_slave_mode - ( - &g_mss_spi0, - MSS_SPI_MODE2, - MSS_SPI_PCLK_DIV_64, - MSS_SPI_BLOCK_TRANSFER_FRAME_SIZE - ); - - MSS_SPI_set_slave_block_buffers - ( - &g_mss_spi1, - 0, - 0, - slave_rx_buffer, - sizeof(master_tx_buffer), - spi1_block_rx_handler_b - ); - } - @endcode - - Slave responding to command example: - In this example the slave will return data based on a command sent by the - master. The first part of the transaction is handled using polled mode where - each byte returned to the master is written as part of the interrupt service - routine. The second part of the transaction, where the slave returns data - based on the command value, is sent using a DMA transfer initiated by the - receive handler. - @code - static uint8_t g_spi1_tx_buffer_b[SLAVE_TX_BUFFER_SIZE] = - { - 5, 6, 7, 8, 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5 - }; - - void spi1_block_rx_handler - ( - uint8_t * rx_buff, - uint16_t rx_size - ) - { - if ( rx_buff[2] == 0x99 ) - { - PDMA_start - ( - PDMA_CHANNEL_0, - (uint32_t)g_spi1_tx_buffer_b, - 0x40011014, - sizeof(g_spi1_tx_buffer_b) - ); - } - } - - void setup_slave( void ) - { - uint8_t slave_preamble[8] = { 9, 10, 11, 12, 13, 14, 16, 16 }; - - MSS_SPI_init( &g_mss_spi1 ); - MSS_SPI_configure_slave_mode - ( - &g_mss_spi0, - MSS_SPI_MODE2, - MSS_SPI_PCLK_DIV_64, - MSS_SPI_BLOCK_TRANSFER_FRAME_SIZE - ); - - PDMA_init(); - PDMA_configure - ( - PDMA_CHANNEL_0, - TO_SPI_1, - LOW_PRIORITY | BYTE_TRANSFER | INC_SRC_ONE_BYTE - ); - - MSS_SPI_set_slave_block_buffers - ( - &g_mss_spi1, - slave_preamble, - 4, - g_spi1_rx_buffer, - sizeof(g_spi1_rx_buffer), - spi1_block_rx_handler - ); - } - @endcode - */ -void MSS_SPI_set_slave_block_buffers -( - mss_spi_instance_t * this_spi, - const uint8_t * tx_buffer, - uint32_t tx_buff_size, - uint8_t * rx_buffer, - uint32_t rx_buff_size, - mss_spi_block_rx_handler_t block_rx_handler -); - -#ifdef __cplusplus -} -#endif - -#endif /* MSS_SPI_H_*/ diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_timer/mss_timer.h b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_timer/mss_timer.h deleted file mode 100644 index d83519d54..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_timer/mss_timer.h +++ /dev/null @@ -1,598 +0,0 @@ -/******************************************************************************* - * (c) Copyright 2009 Actel Corporation. All rights reserved. - * - * SmartFusion microcontroller subsystem (MSS) timer driver API. - * - * SVN $Revision: 2661 $ - * SVN $Date: 2010-04-19 17:14:26 +0100 (Mon, 19 Apr 2010) $ - */ -/*=========================================================================*//** - @mainpage SmartFusion MSS Timer Bare Metal Driver. - - @section intro_sec Introduction - The SmartFusion Microcontroller Subsystem (MSS) includes a timer hardware - block which can be used as two independent 32-bits timers or as a single - 64-bits timer in periodic or one-shot mode. - - This driver provides a set of functions for controlling the MSS timer as part - of a bare metal system where no operating system is available. These drivers - can be adapted for use as part of an operating system but the implementation - of the adaptation layer between this driver and the operating system's driver - model is outside the scope of this driver. - - @section theory_op Theory of Operation - The MSS Timer driver uses the SmartFusion "Cortex Microcontroler Software - Interface Standard - Peripheral Access Layer" (CMSIS-PAL) to access hadware - registers. You must ensure that the SmartFusion CMSIS-PAL is either included - in the software toolchain used to build your project or is included in your - project. The most up-to-date SmartFusion CMSIS-PAL files can be obtained using - the Actel Firmware Catalog. - The SmartFusion MSS Timer can be used in one of two mutually exclusive modes; - either as a single 64-bits timer or as two independent 32-bits timers. The MSS - Timer can be used in either periodic mode or one-shot mode. A timer configured - for periodic mode operations will generate an interrupt and reload its - down-counter when it reaches 0. The timer will then continue decrementing from - its reload value without waiting for the interrupt to be cleared. A timer - configured for one-shot mode will only generate an interrupt once when its - down-counter reaches 0. It must be explitcitly reloaded to start decrementing - again. - - The MSS Timer driver functions are grouped into the following categories: - - Initialization and Configuration - - Timer control - - Interrupt control - - The MSS Timer driver provides three initialization functions: - - MSS_TIM1_init() - - MSS_TIM2_init() - - MSS_TIM64_init() - The MSS Timer driver is initialized through calls to these functions and at - least one of them must be called before any other MSS Timer driver functions - can be called. - You should only use the MSS_TIM1_init() and MSS_TIM2_init() functions if you - intend to use the timer in 32-bits mode. Use the MSS_TIM64_init() function is - you intend to use the MSS Timer as a single 64-bits timer. The initialization - functions take a single parameter specifying the operating mode of the timer - being initialized. - - Once initialized a timer can be controlled using the following functions: - - MSS_TIM1_load_immediate() - - MSS_TIM1_load_background() - - MSS_TIM1_get_current_value() - - MSS_TIM1_start() - - MSS_TIM1_stop() - - MSS_TIM2_load_immediate() - - MSS_TIM2_load_background() - - MSS_TIM2_get_current_value() - - MSS_TIM2_start() - - MSS_TIM2_stop() - - MSS_TIM64_load_immediate() - - MSS_TIM64_load_background() - - MSS_TIM64_get_current_value() - - MSS_TIM64_start() - - MSS_TIM64_stop() - - Timer interrupts are controlled using the following functions: - - MSS_TIM1_enable_irq() - - MSS_TIM1_disable_irq() - - MSS_TIM1_clear_irq() - - MSS_TIM2_enable_irq() - - MSS_TIM2_disable_irq() - - MSS_TIM2_clear_irq() - - MSS_TIM64_enable_irq() - - MSS_TIM64_disable_irq() - - MSS_TIM64_clear_irq() - - The function prototypes for the timer interrupt handlers are: - - void Timer1_IRQHandler( void ) - - void Timer2_IRQHandler( void ) - Entries for these interrupt handlers are provided in the SmartFusion CMSIS-PAL - vector table. To add a Timer 1 interrupt handler, you must implement a - Timer1_IRQHandler( ) function as part of your application code. To add a - Timer 2 interrupt handler, you must implement a Timer2_IRQHandler( ) function - as part of your application code. When using the MSS Timer as a 64-bit timer, - you must implement a Timer1_IRQHandler( ) function as part of your - application code. The Timer 2 interrupt is not used when the MSS Timer is - configured as a 64-bit timer. - - *//*=========================================================================*/ -#ifndef MSS_TIMER_H_ -#define MSS_TIMER_H_ - - -#include "../../CMSIS/a2fxxxm3.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/*-------------------------------------------------------------------------*//** - * Timer mode selection. This enumeration is used to select between the two - * possible timer modes of operation: periodic and one-shot mode. It is used as - * an argument to the MSS_TIM1_init(), MSS_TIM2_init() and MSS_TIM64_init() - * functions. - * MSS_TIMER_PERIODIC_MODE: - * In periodic mode the timer generates interrupts at constant intervals. On - * reaching zero, the timer's counter is reloaded with a value held in a - * register and begins counting down again. - * MSS_TIMER_ONE_SHOT_MODE: - * The timer generates a single interrupt in this mode. On reaching zero, the - * timer's counter halts until reprogrammed by the user. - */ -typedef enum __mss_timer_mode_t -{ - MSS_TIMER_PERIODIC_MODE = 0, - MSS_TIMER_ONE_SHOT_MODE = 1 -} mss_timer_mode_t; - -/*-------------------------------------------------------------------------*//** - The MSS_TIM1_init() function initializes the SmartFusion MSS Timer block for - use as a 32-bit timer and selects the operating mode for Timer 1. This function - takes the MSS Timer block out of reset in case this hasn’t been done already, - stops Timer 1, disables its interrupt and sets the Timer 1 operating mode. - Please note that the SmartFusion MSS Timer block cannot be used both as a - 64-bit and 32-bit timer. Calling MSS_TIM1_init() will overwrite any previous - configuration of the MSS Timer as a 64-bit timer. - - - @param mode - The mode parameter specifies whether the timer will operate in periodic or - one-shot mode. Allowed values for this parameter are: - - MSS_TIMER_PERIODIC_MODE - - MSS_TIMER_ONE_SHOT_MODE - */ -static __INLINE void MSS_TIM1_init( mss_timer_mode_t mode ) -{ - NVIC_DisableIRQ( Timer1_IRQn ); /* Disable timer 1 irq in the Cortex-M3 NVIC */ - - SYSREG->SOFT_RST_CR &= ~SYSREG_TIMER_SOFTRESET_MASK; /* Take timer block out of reset */ - - TIMER->TIM64_MODE = 0U; /* switch to 32 bits mode */ - - TIMER_BITBAND->TIM1ENABLE = 0U; /* disable timer */ - TIMER_BITBAND->TIM1INTEN = 0U; /* disable interrupt */ - TIMER_BITBAND->TIM1MODE = (uint32_t)mode; /* set mode (continuous/one-shot) */ - - TIMER->TIM1_RIS = 1U; /* clear timer 1 interrupt */ - NVIC_ClearPendingIRQ( Timer1_IRQn ); /* clear timer 1 interrupt within NVIC */ -} - -/*-------------------------------------------------------------------------*//** - The MSS_TIM1_start() function enables Timer 1 and starts its down-counter - decrementing from the load_value specified in previous calls to the - MSS_TIM1_load_immediate() or MSS_TIM1_load_background() functions. - */ -static __INLINE void MSS_TIM1_start( void ) -{ - TIMER_BITBAND->TIM1ENABLE = 1U; /* enable timer */ -} - -/*-------------------------------------------------------------------------*//** - The MSS_TIM1_stop() function disables Timer 1 and stops its down-counter - decrementing. - */ -static __INLINE void MSS_TIM1_stop( void ) -{ - TIMER_BITBAND->TIM1ENABLE = 0U; /* disable timer */ -} - -/*-------------------------------------------------------------------------*//** - The MSS_TIM1_get_current_value() returns the current value of the Timer 1 - down-counter. - - @return - This function returns the 32-bits current value of the Timer 1 down-counter. - */ -static __INLINE uint32_t MSS_TIM1_get_current_value( void ) -{ - return TIMER->TIM1_VAL; -} - -/*-------------------------------------------------------------------------*//** - The MSS_TIM1_load_immediate() function loads the value passed by the - load_value parameter into the Timer 1 down-counter. The counter will decrement - immediately from this value once Timer 1 is enabled. The MSS Timer will - generate an interrupt when the counter reaches zero if Timer 1 interrupts are - enabled. This function is intended to be used when Timer 1 is configured for - one-shot mode to time a single delay. - - @param load_value - The load_value parameter specifies the value from which the Timer 1 down-counter - will start decrementing from. - */ -static __INLINE void MSS_TIM1_load_immediate( uint32_t load_value ) -{ - TIMER->TIM1_LOADVAL = load_value; -} - -/*-------------------------------------------------------------------------*//** - The MSS_TIM1_load_background() function is used to specify the value that will - be reloaded into the Timer 1 down-counter the next time the counter reaches - zero. This function is typically used when Timer 1 is configured for periodic - mode operation to select or change the delay period between the interrupts - generated by Timer 1. - - @param load_value - The load_value parameter specifies the value that will be loaded into the - Timer 1 down-counter the next time the down-counter reaches zero. The Timer - 1 down-counter will start decrementing from this value after the current - count expires. - */ -static __INLINE void MSS_TIM1_load_background( uint32_t load_value ) -{ - TIMER->TIM1_BGLOADVAL = load_value; -} - -/*-------------------------------------------------------------------------*//** - The MSS_TIM1_enable_irq() function is used to enable interrupt generation for - Timer 1. This function also enables the interrupt in the Cortex-M3 interrupt - controller. The Timer1_IRQHandler() function will be called when a Timer 1 - interrupt occurs. - Note: Note: A Timer1_IRQHandler() default implementation is defined, with - weak linkage, in the SmartFusion CMSIS-PAL. You must provide your own - implementation of the Timer1_IRQHandler() function, that will override the - default implementation, to suit your application. - - */ -static __INLINE void MSS_TIM1_enable_irq( void ) -{ - TIMER_BITBAND->TIM1INTEN = 1U; - NVIC_EnableIRQ( Timer1_IRQn ); -} - -/*-------------------------------------------------------------------------*//** - The MSS_TIM1_disable_irq() function is used to disable interrupt generation - for Timer 1. This function also disables the interrupt in the Cortex-M3 - interrupt controller. - */ -static __INLINE void MSS_TIM1_disable_irq( void ) -{ - TIMER_BITBAND->TIM1INTEN = 0U; - NVIC_DisableIRQ( Timer1_IRQn ); -} - -/*-------------------------------------------------------------------------*//** - The MSS_TIM1_clear_irq() function is used to clear a pending interrupt from - Timer 1. This function also clears the interrupt in the Cortex-M3 interrupt - controller. - Note: You must call the MSS_TIM1_clear_irq() function as part of your - implementation of the Timer1_IRQHandler() Timer 1 interrupt service routine - (ISR) in order to prevent the same interrupt event retriggering a call to the - ISR. - - */ -static __INLINE void MSS_TIM1_clear_irq( void ) -{ - TIMER->TIM1_RIS = 1U; - NVIC_ClearPendingIRQ( Timer1_IRQn ); -} - -/*-------------------------------------------------------------------------*//** - The MSS_TIM2_init() function initializes the SmartFusion MSS Timer block for - use as a 32-bit timer and selects the operating mode for Timer 2. This function - takes the MSS Timer block out of reset in case this hasn’t been done already, - stops Timer 2, disables its interrupt and sets the Timer 2 operating mode. - Note: Please note that the SmartFusion MSS Timer block cannot be used both as - a 64-bit and 32-bit timer. Calling MSS_TIM2_init() will overwrite any previous - configuration of the MSS Timer as a 64-bit timer. - - @param mode - The mode parameter specifies whether the timer will operate in periodic or - one-shot mode. Allowed values for this parameter are: - - MSS_TIMER_PERIODIC_MODE - - MSS_TIMER_ONE_SHOT_MODE - */ -static __INLINE void MSS_TIM2_init( mss_timer_mode_t mode ) -{ - NVIC_DisableIRQ( Timer2_IRQn ); /* Disable timer 2 irq in the Cortex-M3 NVIC */ - - SYSREG->SOFT_RST_CR &= ~SYSREG_TIMER_SOFTRESET_MASK; /* Take timer block out of reset */ - - TIMER->TIM64_MODE = 0U; /* switch to 32 bits mode */ - - TIMER_BITBAND->TIM2ENABLE = 0U; /* disable timer */ - TIMER_BITBAND->TIM2INTEN = 0U; /* disable interrupt */ - TIMER_BITBAND->TIM2MODE = (uint32_t)mode; /* set mode (continuous/one-shot) */ - - TIMER->TIM2_RIS = 1U; /* clear timer 2 interrupt */ - NVIC_ClearPendingIRQ( Timer2_IRQn ); /* clear timer 2 interrupt within NVIC */ -} - -/*-------------------------------------------------------------------------*//** - The MSS_TIM2_start() function enables Timer 2 and starts its down-counter - decrementing from the load_value specified in previous calls to the - MSS_TIM2_load_immediate() or MSS_TIM2_load_background() functions. - */ -static __INLINE void MSS_TIM2_start( void ) -{ - TIMER_BITBAND->TIM2ENABLE = 1U; /* enable timer */ -} - -/*-------------------------------------------------------------------------*//** - The MSS_TIM2_stop() function disables Timer 2 and stops its down-counter - decrementing. - */ -static __INLINE void MSS_TIM2_stop( void ) -{ - TIMER_BITBAND->TIM2ENABLE = 0U; /* disable timer */ -} - -/*-------------------------------------------------------------------------*//** - The MSS_TIM2_get_current_value() returns the current value of the Timer 2 - down-counter. - */ -static __INLINE uint32_t MSS_TIM2_get_current_value( void ) -{ - return TIMER->TIM2_VAL; -} - -/*-------------------------------------------------------------------------*//** - The MSS_TIM2_load_immediate() function loads the value passed by the - load_value parameter into the Timer 2 down-counter. The counter will decrement - immediately from this value once Timer 2 is enabled. The MSS Timer will - generate an interrupt when the counter reaches zero if Timer 2 interrupts are - enabled. This function is intended to be used when Timer 2 is configured for - one-shot mode to time a single delay. - - @param load_value - The load_value parameter specifies the value from which the Timer 2 - down-counter will start decrementing. - */ -static __INLINE void MSS_TIM2_load_immediate( uint32_t load_value ) -{ - TIMER->TIM2_LOADVAL = load_value; -} - -/*-------------------------------------------------------------------------*//** - The MSS_TIM2_load_background() function is used to specify the value that will - be reloaded into the Timer 2 down-counter the next time the counter reaches - zero. This function is typically used when Timer 2 is configured for periodic - mode operation to select or change the delay period between the interrupts - generated by Timer 2. - - @param load_value - The load_value parameter specifies the value that will be loaded into the - Timer 2 down-counter the next time the down-counter reaches zero. The Timer - 2 down-counter will start decrementing from this value after the current - count expires. - */ -static __INLINE void MSS_TIM2_load_background( uint32_t load_value ) -{ - TIMER->TIM2_BGLOADVAL = load_value; -} - -/*-------------------------------------------------------------------------*//** - The MSS_TIM2_enable_irq() function is used to enable interrupt generation for - Timer 2. This function also enables the interrupt in the Cortex-M3 interrupt - controller. The Timer2_IRQHandler() function will be called when a Timer 2 - interrupt occurs. - Note: A Timer2_IRQHandler() default implementation is defined, with weak - linkage, in the SmartFusion CMSIS-PAL. You must provide your own implementation - of the Timer2_IRQHandler() function, that will override the default - implementation, to suit your application. - */ -static __INLINE void MSS_TIM2_enable_irq( void ) -{ - TIMER_BITBAND->TIM2INTEN = 1U; - NVIC_EnableIRQ( Timer2_IRQn ); -} - -/*-------------------------------------------------------------------------*//** - The MSS_TIM2_disable_irq() function is used to disable interrupt generation - for Timer 2. This function also disables the interrupt in the Cortex-M3 - interrupt controller. - */ -static __INLINE void MSS_TIM2_disable_irq( void ) -{ - TIMER_BITBAND->TIM2INTEN = 0U; - NVIC_DisableIRQ( Timer2_IRQn ); -} - -/*-------------------------------------------------------------------------*//** - The MSS_TIM2_clear_irq() function is used to clear a pending interrupt from - Timer 2. This function also clears the interrupt in the Cortex-M3 interrupt - controller. - Note: You must call the MSS_TIM2_clear_irq() function as part of your - implementation of the Timer2_IRQHandler() Timer 2 interrupt service routine - (ISR) in order to prevent the same interrupt event retriggering a call to the - ISR. - */ -static __INLINE void MSS_TIM2_clear_irq( void ) -{ - TIMER->TIM2_RIS = 1U; - NVIC_ClearPendingIRQ( Timer2_IRQn ); -} - -/*-------------------------------------------------------------------------*//** - The MSS_TIM64_init() function initializes the SmartFusion MSS Timer block for - use as a single 64-bit timer and selects the operating mode of the timer. This - function takes the MSS Timer block out of reset in case this hasn’t been done - already, stops the timer, disables its interrupts and sets the timer's - operating mode. - Note: Please note that the SmartFusion MSS Timer block cannot be used both as - a 64-bit and 32-bit timer. Calling MSS_TIM64_init() will overwrite any previous - configuration of the MSS Timer as a 32-bit timer. - - @param mode - The mode parameter specifies whether the timer will operate in periodic or - one-shot mode. Allowed values for this parameter are: - - MSS_TIMER_PERIODIC_MODE - - MSS_TIMER_ONE_SHOT_MODE - */ -static __INLINE void MSS_TIM64_init( mss_timer_mode_t mode ) -{ - NVIC_DisableIRQ( Timer1_IRQn ); /* disable timer 1 interrupt within NVIC */ - NVIC_DisableIRQ( Timer2_IRQn ); /* disable timer 2 interrupt within NVIC */ - - SYSREG->SOFT_RST_CR &= ~SYSREG_TIMER_SOFTRESET_MASK; /* Take timer block out of reset */ - - TIMER->TIM64_MODE = 1U; /* switch to 64 bits mode */ - - TIMER_BITBAND->TIM64ENABLE = 0U; /* disable timer */ - TIMER_BITBAND->TIM64INTEN = 0U; /* disable interrupt */ - TIMER_BITBAND->TIM64MODE = (uint32_t)mode; /* set mode (continuous/one-shot) */ - - TIMER->TIM1_RIS = 1U; /* clear timer 1 interrupt */ - TIMER->TIM2_RIS = 1U; /* clear timer 2 interrupt */ - NVIC_ClearPendingIRQ( Timer1_IRQn ); /* clear timer 1 interrupt within NVIC */ - NVIC_ClearPendingIRQ( Timer2_IRQn ); /* clear timer 2 interrupt within NVIC */ -} - -/*-------------------------------------------------------------------------*//** - The MSS_TIM64_start() function enables the 64-bit timer and starts its - down-counter decrementing from the load_value specified in previous calls to - the MSS_TIM64_load_immediate() or MSS_TIM64_load_background() functions. - */ -static __INLINE void MSS_TIM64_start( void ) -{ - TIMER_BITBAND->TIM64ENABLE = 1U; /* enable timer */ -} - -/*-------------------------------------------------------------------------*//** - The MSS_TIM64_stop() function disables the 64-bit timer and stops its - down-counter decrementing. - */ -static __INLINE void MSS_TIM64_stop( void ) -{ - TIMER_BITBAND->TIM64ENABLE = 0U; /* disable timer */ -} - -/*-------------------------------------------------------------------------*//** - The MSS_TIM64_get_current_value() is used to read the current value of the - 64-bit timer down-counter. - - @param load_value_u - The load_value_u parameter is a pointer to a 32-bit variable where the upper - 32 bits of the current value of the 64-bit timer down-counter will be copied. - - @param load_value_l - The load_value_l parameter is a pointer to a 32-bit variable where the lower - 32 bits of the current value of the 64-bit timer down-counter will be copied. - - Example: - @code - uint32_t current_value_u = 0; - uint32_t current_value_l = 0; - MSS_TIM64_get_current_value( ¤t_value_u, ¤t_value_l ); - @endcode - */ -static __INLINE void MSS_TIM64_get_current_value -( - uint32_t * load_value_u, - uint32_t * load_value_l -) -{ - *load_value_l = TIMER->TIM64_VAL_L; - *load_value_u = TIMER->TIM64_VAL_U; -} - -/*-------------------------------------------------------------------------*//** - The MSS_TIM64_load_immediate() function loads the values passed by the - load_value_u and load_value_l parameters into the 64-bit timer down-counter. - The counter will decrement immediately from the concatenated 64-bit value once - the 64-bit timer is enabled. The MSS Timer will generate an interrupt when the - counter reaches zero if 64-bit timer interrupts are enabled. This function is - intended to be used when the 64-bit timer is configured for one-shot mode to - time a single delay. - - @param load_value_u - The load_value_u parameter specifies the upper 32 bits of the 64-bit timer - load value from which the 64-bit timer down-counter will start decrementing. - - @param load_value_l - The load_value_l parameter specifies the lower 32 bits of the 64-bit timer - load value from which the 64-bit timer down-counter will start decrementing. - */ -static __INLINE void MSS_TIM64_load_immediate -( - uint32_t load_value_u, - uint32_t load_value_l -) -{ - TIMER->TIM64_LOADVAL_U = load_value_u; - TIMER->TIM64_LOADVAL_L = load_value_l; -} - -/*-------------------------------------------------------------------------*//** - The MSS_TIM64_load_background() function is used to specify the 64-bit value - that will be reloaded into the 64-bit timer down-counter the next time the - counter reaches zero. This function is typically used when the 64-bit timer is - configured for periodic mode operation to select or change the delay period - between the interrupts generated by the 64-bit timer. - - @param load_value_u - The load_value_u parameter specifies the upper 32 bits of the 64-bit timer - load value. The concatenated 64-bit value formed from load_value_u and - load_value_l will be loaded into the 64-bit timer down-counter the next - time the down-counter reaches zero. The 64-bit timer down-counter will start - decrementing from the concatenated 64-bit value after the current count - expires. - - @param load_value_l - The load_value_l parameter specifies the lower 32 bits of the 64-bit timer - load value. The concatenated 64-bit value formed from load_value_u and - load_value_l will be loaded into the 64-bit timer down-counter the next time - the down-counter reaches zero. The 64-bit timer down-counter will start - decrementing from the concatenated 64-bit value after the current count - expires. - - */ -static __INLINE void MSS_TIM64_load_background -( - uint32_t load_value_u, - uint32_t load_value_l -) -{ - TIMER->TIM64_BGLOADVAL_U = load_value_u; - TIMER->TIM64_BGLOADVAL_L = load_value_l; -} - -/*-------------------------------------------------------------------------*//** - The MSS_TIM64_enable_irq() function is used to enable interrupt generation for - the 64-bit timer. This function also enables the interrupt in the Cortex-M3 - interrupt controller. The Timer1_IRQHandler() function will be called when a - 64-bit timer interrupt occurs. - Note: A Timer1_IRQHandler() default implementation is defined, with weak - linkage, in the SmartFusion CMSIS-PAL. You must provide your own - implementation of the Timer1_IRQHandler() function, that will override the - default implementation, to suit your application. - Note: The MSS_TIM64_enable_irq() function enables and uses Timer 1 interrupts - for the 64-bit timer. Timer 2 interrupts remain disabled. - */ -static __INLINE void MSS_TIM64_enable_irq( void ) -{ - TIMER_BITBAND->TIM64INTEN = 1U; - NVIC_EnableIRQ( Timer1_IRQn ); -} - -/*-------------------------------------------------------------------------*//** - The MSS_TIM64_disable_irq() function is used to disable interrupt generation - for the 64-bit timer. This function also disables the interrupt in the - Cortex-M3 interrupt controller. - */ -static __INLINE void MSS_TIM64_disable_irq( void ) -{ - TIMER_BITBAND->TIM64INTEN = 0U; - NVIC_DisableIRQ( Timer1_IRQn ); -} - -/*-------------------------------------------------------------------------*//** - The MSS_TIM64_clear_irq() function is used to clear a pending interrupt from - the 64-bit timer. This function also clears the interrupt in the Cortex-M3 - interrupt controller. - Note: You must call the MSS_TIM64_clear_irq() function as part of your - implementation of the Timer1_IRQHandler() 64-bit timer interrupt service - routine (ISR) in order to prevent the same interrupt event retriggering a - call to the ISR. - */ -static __INLINE void MSS_TIM64_clear_irq( void ) -{ - TIMER->TIM64_RIS = 1U; - NVIC_ClearPendingIRQ( Timer1_IRQn ); -} - -#ifdef __cplusplus -} -#endif - -#endif /*MSS_TIMER_H_*/ diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_uart/mss_uart.c b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_uart/mss_uart.c deleted file mode 100644 index 7dbb6c010..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_uart/mss_uart.c +++ /dev/null @@ -1,458 +0,0 @@ -/******************************************************************************* - * (c) Copyright 2007 Actel Corporation. All rights reserved. - * - * SmartFusion Microcontroller Subsystem UART bare metal software driver - * implementation. - * - * SVN $Revision: 1898 $ - * SVN $Date: 2009-12-21 17:27:57 +0000 (Mon, 21 Dec 2009) $ - */ -#include "mss_uart.h" -#include "../../CMSIS/mss_assert.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/******************************************************************************* - * defines - */ -#define TX_READY 0x01U -#define TX_COMPLETE 0U - -#define TX_FIFO_SIZE 16U - -#define FCR_TRIG_LEVEL_MASK 0xC0U - -#define IIRF_MASK 0x0FU - -/******************************************************************************* - * Possible values for Interrupt Identification Register Field. - */ -#define IIRF_MODEM_STATUS 0x00U -#define IIRF_THRE 0x02U -#define IIRF_RX_DATA 0x04U -#define IIRF_RX_LINE_STATUS 0x06U -#define IIRF_DATA_TIMEOUT 0x0CU - -/******************************************************************************* - * Cortex-M3 interrupt handler functions implemented as part of the MSS UART - * driver. - */ -#if defined(__GNUC__) -__attribute__((__interrupt__)) void UART0_IRQHandler( void ); -#else -void UART0_IRQHandler( void ); -#endif - -#if defined(__GNUC__) -__attribute__((__interrupt__)) void UART1_IRQHandler( void ); -#else -void UART1_IRQHandler( void ); -#endif - -/******************************************************************************* - * Local functions. - */ -static void MSS_UART_isr( mss_uart_instance_t * this_uart ); - -/******************************************************************************* - * - */ -mss_uart_instance_t g_mss_uart0; -mss_uart_instance_t g_mss_uart1; - -/***************************************************************************//** - * UART_init. - * Initialises the UART with default configuration. - */ -void -MSS_UART_init -( - mss_uart_instance_t* this_uart, - uint32_t baud_rate, - uint8_t line_config -) -{ - uint16_t baud_value; - uint32_t pclk_freq; - - /* The driver expects g_mss_uart0 and g_mss_uart1 to be the only - * mss_uart_instance_t instances used to identfy UART0 and UART1. */ - ASSERT( (this_uart == &g_mss_uart0) || (this_uart == &g_mss_uart1) ); - - /* Force the value of the CMSIS global variables holding the various system - * clock frequencies to be updated. */ - SystemCoreClockUpdate(); - - if ( this_uart == &g_mss_uart0 ) - { - this_uart->hw_reg = UART0; - this_uart->hw_reg_bit = UART0_BITBAND; - this_uart->irqn = UART0_IRQn; - - pclk_freq = g_FrequencyPCLK0; - - /* reset UART0 */ - SYSREG->SOFT_RST_CR |= SYSREG_UART0_SOFTRESET_MASK; - /* Clear any previously pended UART0 interrupt */ - NVIC_ClearPendingIRQ( UART0_IRQn ); - /* Take UART0 out of reset. */ - SYSREG->SOFT_RST_CR &= ~SYSREG_UART0_SOFTRESET_MASK; - } - else - { - this_uart->hw_reg = UART1; - this_uart->hw_reg_bit = UART1_BITBAND; - this_uart->irqn = UART1_IRQn; - - pclk_freq = g_FrequencyPCLK1; - - /* Reset UART1 */ - SYSREG->SOFT_RST_CR |= SYSREG_UART1_SOFTRESET_MASK; - /* Clear any previously pended UART1 interrupt */ - NVIC_ClearPendingIRQ( UART1_IRQn ); - /* Take UART1 out of reset. */ - SYSREG->SOFT_RST_CR &= ~SYSREG_UART1_SOFTRESET_MASK; - } - - /* disable interrupts */ - this_uart->hw_reg->IER = 0U; - - /* - * Compute baud value based on requested baud rate and PCLK frequency. - * The baud value is computed using the following equation: - * baud_value = PCLK_Frequency / (baud_rate * 16) - * The baud value is rounded up or down depending on what would be the remainder - * of the divide by 16 operation. - */ - baud_value = (uint16_t)(pclk_freq / baud_rate); - if ( baud_value & 0x00000008U ) - { - /* remainder above 0.5 */ - baud_value = (baud_value >> 4U) + 1U; - } - else - { - /* remainder below 0.5 */ - baud_value = (baud_value >> 4U); - } - - /* set divisor latch */ - this_uart->hw_reg_bit->LCR_DLAB = (uint32_t)1; - - /* msb of baud value */ - this_uart->hw_reg->DMR = (uint8_t)(baud_value >> 8); - /* lsb of baud value */ - this_uart->hw_reg->DLR = (uint8_t)baud_value; - - /* reset divisor latch */ - this_uart->hw_reg_bit->LCR_DLAB = (uint32_t)0; - - /* set the line control register (bit length, stop bits, parity) */ - this_uart->hw_reg->LCR = line_config; - - /* FIFO configuration */ - this_uart->hw_reg->FCR = (uint8_t)MSS_UART_FIFO_SINGLE_BYTE; - - /* disable loopback */ - this_uart->hw_reg_bit->MCR_LOOP = (uint32_t)0; - - /* Instance setup */ - this_uart->tx_buff_size = TX_COMPLETE; - this_uart->tx_buffer = (const uint8_t *)0; - this_uart->tx_idx = 0U; - - this_uart->rx_handler = (mss_uart_rx_handler_t)0; -} - -/***************************************************************************//** - * See mss_uart.h for details of how to use this function. - */ -void -MSS_UART_polled_tx -( - mss_uart_instance_t * this_uart, - const uint8_t * pbuff, - uint32_t tx_size -) -{ - uint32_t char_idx; - uint32_t status; - - ASSERT( (this_uart == &g_mss_uart0) || (this_uart == &g_mss_uart1) ); - - for ( char_idx = 0U; char_idx < tx_size; char_idx++ ) - { - /* Wait for UART to become ready to transmit. */ - do { - status = this_uart->hw_reg_bit->LSR_THRE; - } while ( (status & TX_READY) == 0U ); - /* Send next character in the buffer. */ - this_uart->hw_reg->THR = pbuff[char_idx]; - } -} - -/***************************************************************************//** - * See mss_uart.h for details of how to use this function. - */ -void -MSS_UART_polled_tx_string -( - mss_uart_instance_t * this_uart, - const uint8_t * p_sz_string -) -{ - uint32_t char_idx; - uint32_t status; - - ASSERT( (this_uart == &g_mss_uart0) || (this_uart == &g_mss_uart1) ); - - char_idx = 0U; - - while ( p_sz_string[char_idx] != 0U ) - { - /* Wait for UART to become ready to transmit. */ - do { - status = this_uart->hw_reg_bit->LSR_THRE; - } while ( (status & TX_READY) == 0U); - /* Send next character in the buffer. */ - this_uart->hw_reg->THR = p_sz_string[char_idx]; - ++char_idx; - } -} - -/***************************************************************************//** - * See mss_uart.h for details of how to use this function. - */ -void -MSS_UART_irq_tx -( - mss_uart_instance_t * this_uart, - const uint8_t * pbuff, - uint32_t tx_size -) -{ - ASSERT( (this_uart == &g_mss_uart0) || (this_uart == &g_mss_uart1) ); - - if ( tx_size > 0U ) - { - /*Initialise the transmit info for the UART instance with the arguments.*/ - this_uart->tx_buffer = pbuff; - this_uart->tx_buff_size = tx_size; - this_uart->tx_idx = (uint16_t)0; - - /* enables TX interrupt */ - this_uart->hw_reg_bit->IER_ETBEI = (uint32_t)1; - - /* Enable UART instance interrupt in Cortex-M3 NVIC. */ - NVIC_EnableIRQ( this_uart->irqn ); - } -} - -/***************************************************************************//** - * See mss_uart.h for details of how to use this function. - */ -int8_t -MSS_UART_tx_complete -( - mss_uart_instance_t * this_uart -) -{ - int8_t ret_value = 0; - uint32_t transmit_empty = this_uart->hw_reg_bit->LSR_TEMT; - - ASSERT( (this_uart == &g_mss_uart0) || (this_uart == &g_mss_uart1) ); - - if ( ( TX_COMPLETE == this_uart->tx_buff_size ) && transmit_empty ) - { - ret_value = 1; - } - - return ret_value; -} - - -/***************************************************************************//** - * See mss_uart.h for details of how to use this function. - */ -size_t -MSS_UART_get_rx -( - mss_uart_instance_t * this_uart, - uint8_t * rx_buff, - size_t buff_size -) -{ - size_t rx_size = 0U; - - ASSERT( (this_uart == &g_mss_uart0) || (this_uart == &g_mss_uart1) ); - - while (( this_uart->hw_reg_bit->LSR_DR != 0U) && ( rx_size < buff_size ) ) - { - rx_buff[rx_size] = this_uart->hw_reg->RBR; - ++rx_size; - } - - return rx_size; -} - -/***************************************************************************//** - * Interrupt service routine triggered by the Transmitter Holding Register - * Empty (THRE) interrupt or Received Data Available (RDA). - * On THRE irq this routine will transmit the data from the transmit buffer. - * When all bytes are transmitted, this routine disables the THRE interrupt - * and resets the transmit counter. - * On RDA irq this routine will call the user's receive handler routine previously - * registered with the UART driver through a call to UART_set_rx_handler(). - */ -static void -MSS_UART_isr -( - mss_uart_instance_t * this_uart -) -{ - uint8_t iirf; - uint32_t tx_empty; - - ASSERT( (this_uart == &g_mss_uart0) || (this_uart == &g_mss_uart1) ); - - iirf = this_uart->hw_reg->IIR & IIRF_MASK; - - switch ( iirf ) - { - case IIRF_MODEM_STATUS: - break; - - case IIRF_THRE: /* Transmitter Holding Register Empty */ - tx_empty = this_uart->hw_reg_bit->LSR_TEMT; - - if ( tx_empty ) - { - uint32_t i; - uint32_t fill_size = TX_FIFO_SIZE; - uint32_t tx_remain = this_uart->tx_buff_size - this_uart->tx_idx; - if ( tx_remain < TX_FIFO_SIZE ) - { - fill_size = tx_remain; - } - /* Fill up FIFO */ - for ( i = 0U; i < fill_size; ++i ) - { - this_uart->hw_reg->THR = this_uart->tx_buffer[this_uart->tx_idx]; - ++this_uart->tx_idx; - } - } - else - { - this_uart->hw_reg->THR = this_uart->tx_buffer[this_uart->tx_idx]; - ++this_uart->tx_idx; - } - - if ( this_uart->tx_idx == this_uart->tx_buff_size ) - { - this_uart->tx_buff_size = TX_COMPLETE; - /* disables TX interrupt */ - this_uart->hw_reg_bit->IER_ETBEI = 0U; - } - break; - - case IIRF_RX_DATA: /* Received Data Available */ - case IIRF_DATA_TIMEOUT: - if (this_uart->rx_handler != 0) - { - (*(this_uart->rx_handler))(); - } - break; - - case IIRF_RX_LINE_STATUS: - break; - - default: - /* Disable other interrupts */ - this_uart->hw_reg_bit->IER_ELSI = 0U; - this_uart->hw_reg_bit->IER_EDSSI = 0U; - break; - } -} - -/***************************************************************************//** - * See mss_uart.h for details of how to use this function. - */ -void -MSS_UART_set_rx_handler -( - mss_uart_instance_t * this_uart, - mss_uart_rx_handler_t handler, - mss_uart_rx_trig_level_t trigger_level -) -{ - ASSERT( (this_uart == &g_mss_uart0) || (this_uart == &g_mss_uart1) ); - - this_uart->rx_handler = handler; - - /* Set the receive interrupt trigger level. */ - this_uart->hw_reg->FCR = (this_uart->hw_reg->FCR & (uint8_t)(~((uint8_t)FCR_TRIG_LEVEL_MASK))) | (uint8_t)trigger_level; - - /* Enable receive interrupt. */ - this_uart->hw_reg_bit->IER_ERBFI = 1U; - - /* Enable UART instance interrupt in Cortex-M3 NVIC. */ - NVIC_EnableIRQ( this_uart->irqn ); -} - -/***************************************************************************//** - * See mss_uart.h for details of how to use this function. - */ -void -MSS_UART_set_loopback -( - mss_uart_instance_t * this_uart, - mss_uart_loopback_t loopback -) -{ - ASSERT( (this_uart == &g_mss_uart0) || (this_uart == &g_mss_uart1) ); - - if ( loopback == MSS_UART_LOOPBACK_OFF ) - { - this_uart->hw_reg_bit->MCR_LOOP = 0U; - } - else - { - this_uart->hw_reg_bit->MCR_LOOP = 1U; - } -} - -/***************************************************************************//** - * UART0 interrupt service routine. - * UART0_IRQHandler is included within the Cortex-M3 vector table as part of the - * Fusion 2 CMSIS. - */ -#if defined(__GNUC__) -__attribute__((__interrupt__)) void UART0_IRQHandler( void ) -#else -void UART0_IRQHandler( void ) -#endif -{ - MSS_UART_isr( &g_mss_uart0 ); - NVIC_ClearPendingIRQ( UART0_IRQn ); -} - -/***************************************************************************//** - * UART1 interrupt service routine. - * UART2_IRQHandler is included within the Cortex-M3 vector table as part of the - * Fusion 2 CMSIS. - */ -#if defined(__GNUC__) -__attribute__((__interrupt__)) void UART1_IRQHandler( void ) -#else -void UART1_IRQHandler( void ) -#endif -{ - MSS_UART_isr( &g_mss_uart1 ); - NVIC_ClearPendingIRQ( UART1_IRQn ); -} - -#ifdef __cplusplus -} -#endif diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_uart/mss_uart.h b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_uart/mss_uart.h deleted file mode 100644 index 3897a3c37..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_uart/mss_uart.h +++ /dev/null @@ -1,626 +0,0 @@ -/******************************************************************************* - * (c) Copyright 2007 Actel Corporation. All rights reserved. - * - * SmartFusion Microcontroller Subsystem UART bare metal software driver public API. - * - * SVN $Revision: 1942 $ - * SVN $Date: 2009-12-22 17:48:07 +0000 (Tue, 22 Dec 2009) $ - */ -/*=========================================================================*//** - @mainpage SmartFusion MSS UART Bare Metal Driver. - - @section intro_sec Introduction - The SmartFusion MicroController Subsystem (MSS) includes two UART peripherals - for serial communications. - This driver provides a set of functions for controlling the MSS UARTs as part - of a bare metal system where no operating system is available. These drivers - can be adapted for use as part of an operating system but the implementation - of the adaptation layer between this driver and the operating system's driver - model is outside the scope of this driver. - - @section hw_dependencies Hardware Flow Dependencies - The configuration of all features of the MSS UARTs is covered by this driver - with the exception of the SmartFusion IOMUX configuration. SmartFusion allows - multiple non-concurrent uses of some external pins through IOMUX configuration. - This feature allows optimization of external pin usage by assigning external - pins for use by either the microcontroller subsystem or the FPGA fabric. The - MSS UARTs serial signals are routed through IOMUXes to the SmartFusion device - external pins. These IOMUXes are configured automatically by the MSS - configurator tool in the hardware flow correctly when the MSS UARTs are enabled - in that tool. You must ensure that the MSS UARTs are enabled by the MSS - configurator tool in the hardware flow; otherwise the serial inputs and outputs - will not be connected to the chip's external pins. For more information on - IOMUX, refer to the IOMUX section of the SmartFusion Datasheet. - The base address, register addresses and interrupt number assignment for the MSS - UART blocks are defined as constants in the SmartFusion CMSIS-PAL You must ensure - that the SmartFusion CMSIS-PAL is either included in the software tool chain used - to build your project or is included in your project. - - - @section theory_op Theory of Operation - The MSS UART driver uses the SmartFusion "Cortex Microcontroler Software - Interface Standard - Peripheral Access Layer" (CMSIS-PAL) to access hadware - registers. You must ensure that the SmartFusion CMSIS-PAL is either included - in the software toolchain used to build your project or is included in your - project. The most up to date SmartFusion CMSIS-PAL files can be obtained using - the Actel Firmware Catalog. - - The MSS UART driver functions are logically grouped into three groups: - - Initialization functions - - Polled transmit and receive functions - - Interrupt driven transmit and receive functions - - The MSS UART driver is initialized through a call to the UART_init() function. - This function takes the UART's configuration as parameters. The UART_init() - function must be called before any other UART driver functions can be called. - The first parameter of the UART_init() function is a pointer to one of two - global data structures used to store state information for each UART driver. - A pointer to these data structures is also used as first parameter to any of - the driver functions to identify which UART will be used by the called - function. The name of these two data structures are g_mss_uart0 and - g_mss_uart1. Therefore any call to a MSS UART function should be of the form - UART_function_name( &g_mss_uart0, ... ) or UART_function_name( &g_mss_uart1, ... ). - The two SmartFusion MSS UARTs can also be configured to loop back to each - other using the MSS_set_loopback() function for debugging purposes. - - Polled operations where the processor constantly poll the UART registers state - in order to control data transmit or data receive is performed using functions: - - MSS_UART_polled_tx() - - MSS_UART_get_rx() - - Interrupt driven operations where the processor sets up transmit or receive - then returns to performing some other operation until an interrupts occurs - indicating that its attention is required is performed using functions: - - MSS_UART_irq_tx() - - MSS_UART_tx_complete() - - MSS_UART_set_rx_handler() - - MSS_UART_get_rx() - Interrupt driven transmit is initiated by a call to MSS_UART_irq_tx() specifying - the block of data to transmit. The processor can then perform some other - operation and later inquire whether transmit has completed by calling the - MSS_UART_tx_complete() function. - Interrupt driven receive is performed by first registering a receive handler - function that will be called by the driver whenever receive data is available. - This receive handler function in turns calls the MSS_UART_get_rx() function to - actually read the received data. - - *//*=========================================================================*/ -#ifndef __MSS_UART_H_ -#define __MSS_UART_H_ 1 - -#include "../../CMSIS/a2fxxxm3.h" -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/***************************************************************************//** - Baud rates. - The following definitions are used to specify standard baud rates as a - parameter to the MSS_UART_init() function. - */ -#define MSS_UART_110_BAUD 110 -#define MSS_UART_300_BAUD 300 -#define MSS_UART_1200_BAUD 1200 -#define MSS_UART_2400_BAUD 2400 -#define MSS_UART_4800_BAUD 4800 -#define MSS_UART_9600_BAUD 9600 -#define MSS_UART_19200_BAUD 19200 -#define MSS_UART_38400_BAUD 38400 -#define MSS_UART_57600_BAUD 57600 -#define MSS_UART_115200_BAUD 115200 -#define MSS_UART_230400_BAUD 230400 -#define MSS_UART_460800_BAUD 460800 -#define MSS_UART_921600_BAUD 921600 - -/***************************************************************************//** - Data bits length values. - - The following defines are used to build the value of the MSS_UART_init() - function line_config parameter. - */ -#define MSS_UART_DATA_5_BITS 0x00 -#define MSS_UART_DATA_6_BITS 0x01 -#define MSS_UART_DATA_7_BITS 0x02 -#define MSS_UART_DATA_8_BITS 0x03 - -/***************************************************************************//** - Parity values - The following defines are used to build the value of the MSS_UART_init() - function line_config parameter. - */ -#define MSS_UART_NO_PARITY 0x00 -#define MSS_UART_ODD_PARITY 0x08 -#define MSS_UART_EVEN_PARITY 0x18 -#define MSS_UART_STICK_PARITY_0 0x38 -#define MSS_UART_STICK_PARITY_1 0x28 - -/***************************************************************************//** - Stop bit values - The following defines are used to build the value of the MSS_UART_init() - function line_config parameter. - */ -#define MSS_UART_ONE_STOP_BIT 0x00 -#define MSS_UART_ONEHALF_STOP_BIT 0x04 -#define MSS_UART_TWO_STOP_BITS 0x04 - -/***************************************************************************//** - FIFO trigger sizes - This enumeration specifies the number of bytes that must be received before a - receive interrupt is generated. This enumeration provides the allowed values for - the MSS_UART_set_rx_handler() function trigger_level parameter. - */ -typedef enum __mss_uart_rx_trig_level_t { - MSS_UART_FIFO_SINGLE_BYTE = 0x00, - MSS_UART_FIFO_FOUR_BYTES = 0x40, - MSS_UART_FIFO_EIGHT_BYTES = 0x80, - MSS_UART_FIFO_FOURTEEN_BYTES = 0xC0 -} mss_uart_rx_trig_level_t; - -/***************************************************************************//** - Loopback. - This enumeration is used as parameter to function MSS_UART_set_loopback(). It - specifies the loopback configuration of the UARTs. Using MSS_UART_LOOPBACK_ON - as parameter to function MSS_UART_set_loopback() will set up the UART to locally - loopback its Tx and Rx lines. - */ -typedef enum __mss_uart_loopback_t { - MSS_UART_LOOPBACK_OFF = 0, - MSS_UART_LOOPBACK_ON = 1 -} mss_uart_loopback_t; - -/***************************************************************************//** - Receive handler prototype. - This typedef specifies the prototype of functions that can be registered with - this driver as receive handler functions. - */ -typedef void (*mss_uart_rx_handler_t)(void); - -/***************************************************************************//** - mss_uart_instance_t. - - There is one instance of this structure for each instance of the Microcontroller - Subsystem's UARTs. Instances of this structure are used to identify a specific - UART. A pointer to an instance of the mss_uart_instance_t structure is passed - as the first parameter to MSS UART driver functions to identify which UART - should perform the requested operation. - */ -typedef struct { - /* CMSIS related defines identifying the UART hardware. */ - UART_TypeDef * hw_reg; /*!< Pointer to UART registers. */ - UART_BitBand_TypeDef * hw_reg_bit; /*!< Pointer to UART registers bit band area. */ - IRQn_Type irqn; /*!< UART's Cortex-M3 NVIC interrupt number. */ - - /* transmit related info (used with interrupt driven trnasmit): */ - const uint8_t * tx_buffer; /*!< Pointer to transmit buffer. */ - uint32_t tx_buff_size; /*!< Transmit buffer size. */ - uint32_t tx_idx; /*!< Index within trnamit buffer of next byte to transmit.*/ - - /* receive interrupt handler:*/ - mss_uart_rx_handler_t rx_handler; /*!< Pointer to user registered received handler. */ -} mss_uart_instance_t; - -/***************************************************************************//** - This instance of mss_uart_instance_t holds all data related to the operations - performed by UART0. A pointer to g_mss_uart0 is passed as the first parameter - to MSS UART driver functions to indicate that UART0 should perform the requested - operation. - */ -extern mss_uart_instance_t g_mss_uart0; - -/***************************************************************************//** - This instance of mss_uart_instance_t holds all data related to the operations - performed by UART1. A pointer to g_mss_uart1 is passed as the first parameter - to MSS UART driver functions to indicate that UART1 should perform the requested - operation. - */ -extern mss_uart_instance_t g_mss_uart1; - -/***************************************************************************//** - The MSS_UART_init() function initializes and configures one of the SmartFusion - MSS UARTs with the configuration passed as a parameter. The configuration - parameters are the baud_rate which is used to generate the baud value and the - line_config which is used to specify the line configuration (bit length, stop - bits and parity). - - Example: - @code - #include "mss_uart.h" - - int main(void) - { - MSS_UART_init - ( - &g_mss_uart0, - MSS_UART_57600_BAUD, - MSS_UART_DATA_8_BITS | MSS_UART_NO_PARITY | MSS_UART_ONE_STOP_BIT - ); - return(0); - } - @endcode - - @param this_uart - The this_uart parameter is a pointer to an mss_uart_instance_t structure - identifying the MSS UART hardware block to be initialized. There are two - such data structures, g_mss_uart0 and g_mss_uart1, associated with MSS UART0 - and MSS UART1 respectively. This parameter must point to either the - g_mss_uart0 or g_mss_uart1 global data structure defined within the UART - driver. - - - @param baud_rate - The baud_rate parameter specifies the baud rate. It can be specified for - common baud rates' using the following defines: - - MSS_UART_110_BAUD - - MSS_UART_300_BAUD - - MSS_UART_1200_BAUD - - MSS_UART_2400_BAUD - - MSS_UART_4800_BAUD - - MSS_UART_9600_BAUD - - MSS_UART_19200_BAUD - - MSS_UART_38400_BAUD - - MSS_UART_57600_BAUD - - MSS_UART_115200_BAUD - - MSS_UART_230400_BAUD - - MSS_UART_460800_BAUD - - MSS_UART_921600_BAUD - Alternatively, any non standard baud rate can be specified by simply passing - the actual required baud rate as value for this parameter. - - @param line_config - The line_config parameter is the line configuration specifying the bit length, - number of stop bits and parity settings. This is a logical OR of one of the - following to specify the transmit/receive data bit length: - - MSS_UART_DATA_5_BITS - - MSS_UART_DATA_6_BITS, - - MSS_UART_DATA_7_BITS - - MSS_UART_DATA_8_BITS - with one of the following to specify the parity setting: - - MSS_UART_NO_PARITY - - MSS_UART_EVEN_PARITY - - MSS_UART_ODD_PARITY - - MSS_UART_STICK_PARITY_0 - - MSS_UART_STICK_PARITY_1 - with one of the following to specify the number of stop bits: - - MSS_UART_ONE_STOP_BIT - - MSS_UART_ONEHALF_STOP_BIT - - MSS_UART_TWO_STOP_BITS - - @return - This function does not return a value. - */ -void -MSS_UART_init -( - mss_uart_instance_t* this_uart, - uint32_t baud_rate, - uint8_t line_config -); - -/***************************************************************************//** - The function MSS_UART_polled_tx() is used to transmit data. It transfers the - contents of the transmitter data buffer, passed as a function parameter, into - the UART's hardware transmitter FIFO. It returns when the full content of the - transmit data buffer has been transferred to the UART's transmit FIFO. - - @param this_uart - The this_uart parameter is a pointer to an mss_uart_instance_t structure - identifying the MSS UART hardware block that will perform the requested - function. There are two such data structures, g_mss_uart0 and g_mss_uart1, - associated with MSS UART0 and MSS UART1. This parameter must point to either - the g_mss_uart0 or g_mss_uart1 global data structure defined within the UART - driver. - - @param pbuff - The pbuff parameter is a pointer to a buffer containing the data to be - transmitted. - - @param tx_size - The tx_size parameter specifies the size, in bytes, of the data to be - transmitted. - - @return This function does not return a value. - */ -void -MSS_UART_polled_tx -( - mss_uart_instance_t * this_uart, - const uint8_t * pbuff, - uint32_t tx_size -); - -/***************************************************************************//** - The function MSS_UART_polled_tx_string() is used to transmit a zero-terminated - string. It transfers the text found starting at the address pointed to by - p_sz_string into the UART's hardware transmitter FIFO. It returns when the - complete string has been transferred to the UART's transmit FIFO. - - @param this_uart - The this_uart parameter is a pointer to an mss_uart_instance_t structure - identifying the MSS UART hardware block that will perform the requested - function. There are two such data structures, g_mss_uart0 and g_mss_uart1, - associated with MSS UART0 and MSS UART1. This parameter must point to either - the g_mss_uart0 or g_mss_uart1 global data structure defined within the UART - driver. - - @param p_sz_string - The p_sz_string parameter is a pointer to a buffer containing the - zero-terminated string to be transmitted. - - @return This function does not return a value. - */ -void -MSS_UART_polled_tx_string -( - mss_uart_instance_t * this_uart, - const uint8_t * p_sz_string -); - - -/***************************************************************************//** - The function MSS_UART_irq_tx() is used to initiate interrupt driven transmit. It - returns immediately after making a note of the transmit buffer location and - enabling transmit interrupts both at the UART and Cortex-M3 NVIC level. - This function takes a pointer to a memory buffer containing the data to - transmit as parameter. The memory buffer specified through this pointer - should remain allocated and contain the data to transmit until the transmit - completion has been detected through calls to function MSS_UART_tx_complete(). - NOTE: The MSS_UART_irq_tx() function also enables the Transmitter Holding - Register Empty (THRE) interrupt and the UART instance interrupt in the - Cortex-M3 NVIC as part of its implementation. - - Example: - @code - #include "mss_uart.h" - - int main(void) - { - uint8_t tx_buff[10] = "abcdefghi"; - MSS_UART_init( &g_mss_uart0, MSS_UART_57600_BAUD, MSS_UART_DATA_8_BITS | MSS_UART_NO_PARITY | MSS_UART_ONE_STOP_BIT ); - MSS_UART_irq_tx( &g_mss_uart0, tx_buff, sizeof(tx_buff)); - while ( 0 == MSS_UART_tx_complete( &g_mss_uart0 ) ) - { - ; - } - return(0); - } - @endcode - - @param this_uart - The this_uart parameter is a pointer to an mss_uart_instance_t structure - identifying the MSS UART hardware block that will perform the requested - function. There are two such data structures, g_mss_uart0 and g_mss_uart1, - associated with MSS UART0 and MSS UART1. This parameter must point to either - the g_mss_uart0 or g_mss_uart1 global data structure defined within the UART - driver. - - @param pbuff - The pbuff parameter is a pointer to a buffer containing the data to be - transmitted. - - @param tx_size - The tx_size parameter specifies the size, in bytes, of the data to be - transmitted. - - @return - This function does not return a value. - */ -void -MSS_UART_irq_tx -( - mss_uart_instance_t * this_uart, - const uint8_t * pbuff, - uint32_t tx_size -); - -/***************************************************************************//** - The MSS_UART_tx_complete() function is used to find out if interrupt driven - transmit previously initiated through a call to MSS_UART_irq_tx() is complete. - This is typically used to find out when it is safe to reuse or release the - memory buffer holding transmit data. - - @param this_uart - The this_uart parameter is a pointer to an mss_uart_instance_t structure - identifying the MSS UART hardware block that will perform the requested - function. There are two such data structures, g_mss_uart0 and g_mss_uart1, - associated with MSS UART0 and MSS UART1. This parameter must point to either - the g_mss_uart0 or g_mss_uart1 global data structure defined within the UART - driver. - - @return - This function return a non-zero value if transmit has completed, otherwise - it returns zero. - - Example: - See the MSS_UART_irq_tx() function for an example that uses the - MSS_UART_tx_complete() function. - */ -int8_t -MSS_UART_tx_complete -( - mss_uart_instance_t * this_uart -); - -/***************************************************************************//** - The MSS_UART_get_rx() function is used to read the content of a UART's receive - FIFO. It can be used in polled mode where it is called at regular interval - to find out if any data has been received or in interrupt driven mode where - it is called as part of a receive handler called by the driver as a result of - data being received. This function is non-blocking and will return 0 - immediately if no data has been received. - NOTE: In interrupt driven mode you should call the MSS_UART_get_rx() function - as part of the receive handler function that you register with the MSS UART - driver through a call to MSS_UART_set_rx_handler(). - - @param this_uart - The this_uart parameter is a pointer to an mss_uart_instance_t structure - identifying the MSS UART hardware block that will perform the requested - function. There are two such data structures, g_mss_uart0 and g_mss_uart1, - associated with MSS UART0 and MSS UART1. This parameter must point to either - the g_mss_uart0 or g_mss_uart1 global data structure defined within the UART - driver. - - @param rx_buff - The rx_buff parameter is a pointer to a buffer where the received data will - be copied. - - @param buff_size - The buff_size parameter specifies the size of the receive buffer in bytes. - - @return - This function return the number of bytes that were copied into the rx_buff - buffer. It returns 0 if no data has been received. - - Polled mode example: - @code - int main( void ) - { - uint8_t rx_buff[RX_BUFF_SIZE]; - uint32_t rx_idx = 0; - - MSS_UART_init( &g_mss_uart0, MSS_UART_57600_BAUD, MSS_UART_DATA_8_BITS | MSS_UART_NO_PARITY | MSS_UART_ONE_STOP_BIT ); - - while( 1 ) - { - rx_size = MSS_UART_get_rx( &g_mss_uart0, rx_buff, sizeof(rx_buff) ); - if (rx_size > 0) - { - process_rx_data( rx_buff, rx_size ); - } - task_a(); - task_b(); - } - return 0; - } - @endcode - - Interrupt driven example: - @code - int main( void ) - { - MSS_UART_init( &g_mss_uart1, MSS_UART_57600_BAUD, MSS_UART_DATA_8_BITS | MSS_UART_NO_PARITY | MSS_UART_ONE_STOP_BIT ); - MSS_UART_set_rx_handler( &g_mss_uart1, uart1_rx_handler, MSS_UART_FIFO_SINGLE_BYTE ); - - while( 1 ) - { - task_a(); - task_b(); - } - return 0; - } - - void uart1_rx_handler( void ) - { - uint8_t rx_buff[RX_BUFF_SIZE]; - uint32_t rx_idx = 0; - rx_size = MSS_UART_get_rx( &g_mss_uart1, rx_buff, sizeof(rx_buff) ); - process_rx_data( rx_buff, rx_size ); - } - @endcode - */ -size_t -MSS_UART_get_rx -( - mss_uart_instance_t * this_uart, - uint8_t * rx_buff, - size_t buff_size -); - -/***************************************************************************//** - The MSS_UART_set_rx_handler() function is used to register a receive handler - function which will be called by the driver when a UART Received Data Available - (RDA) interrupt occurs. You must create and register the handler function to - suit your application. The MSS_UART_set_rx_handler() function also enables the UART - Received Data Available interrupt and the UART instance interrupt in the - Cortex-M3 NVIC as part of its implementation. - - @param this_uart - The this_uart parameter is a pointer to an mss_uart_instance_t structure - identifying the MSS UART hardware block that will perform the requested - function. There are two such data structures, g_mss_uart0 and g_mss_uart1, - associated with MSS UART0 and MSS UART1. This parameter must point to either - the g_mss_uart0 or g_mss_uart1 global data structure defined within the UART - driver. - - @param handler - The handler parameter is a pointer to a receive handler function provided - by your application which will be called as a result of a UART Received - Data Available interrupt. - - @param trigger_level - The trigger_level parameter is the receive FIFO trigger level. This specifies - the number of bytes that must be received before the UART triggers a Received - Data Available interrupt. - - @return - This function does not return a value. - - Example: - @code - #include "mss_uart.h" - - #define RX_BUFF_SIZE 64 - - uint8_t g_rx_buff[RX_BUFF_SIZE]; - - void uart0_rx_handler( void ) - { - MSS_UART_get_rx( &g_mss_uart, &g_rx_buff[g_rx_idx], sizeof(g_rx_buff) ); - } - - int main(void) - { - MSS_UART_init( &g_mss_uart0, MSS_UART_57600_BAUD, MSS_UART_DATA_8_BITS | MSS_UART_NO_PARITY | MSS_UART_ONE_STOP_BIT ); - MSS_UART_set_rx_handler( &g_mss_uart0, uart0_rx_handler, MSS_UART_FIFO_SINGLE_BYTE ); - - while ( 1 ) - { - ; - } - return(0); - } - @endcode - */ -void -MSS_UART_set_rx_handler -( - mss_uart_instance_t * this_uart, - mss_uart_rx_handler_t handler, - mss_uart_rx_trig_level_t trigger_level -); - -/***************************************************************************//** - The MSS_UART_set_loopback() function is used to locally loopback the Tx and Rx - lines of a UART. - This is not to be confused with the loopback of UART0 to UART1 which can be - achieved through the microcontroller subsystem's system registers - - @param this_uart - The this_uart parameter is a pointer to an mss_uart_instance_t structure - identifying the MSS UART hardware block that will perform the requested - function. There are two such data structures, g_mss_uart0 and g_mss_uart1, - associated with MSS UART0 and MSS UART1. This parameter must point to either - the g_mss_uart0 or g_mss_uart1 global data structure defined within the UART - driver. - - @param loopback - The loopback parameter indicates whether or not the UART's transmit and receive lines - should be looped back. Allowed values are: - - MSS_UART_LOOPBACK_ON - - MSS_UART_LOOPBACK_OFF - @return - This function does not return a value. - */ -void -MSS_UART_set_loopback -( - mss_uart_instance_t * this_uart, - mss_uart_loopback_t loopback -); - -#ifdef __cplusplus -} -#endif - -#endif /* __MSS_UART_H_ */ diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_watchdog/mss_watchdog.h b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_watchdog/mss_watchdog.h deleted file mode 100644 index 337a91bb1..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers/mss_watchdog/mss_watchdog.h +++ /dev/null @@ -1,427 +0,0 @@ -/******************************************************************************* - * (c) Copyright 2009 Actel Corporation. All rights reserved. - * - * SmartFusion Microcontroller Subsystem (MSS) Watchdog bare metal software - * driver. - * - * SVN $Revision: 1888 $ - * SVN $Date: 2009-12-18 10:58:42 +0000 (Fri, 18 Dec 2009) $ - */ -/*=========================================================================*//** - @section intro_sec Introduction - The SmartFusion microcontroller subsystem (MSS) includes a watchdog timer used - to detect system lockups. - This driver provides a set of functions for controlling the MSS watchdog as - part of a bare metal system where no operating system is available. These - drivers can be adapted for use as part of an operating system but the - implementation of the adaptation layer between this driver and the operating - system's driver model is outside the scope of this driver. - - @section hw_dependencies Hardware Flow Dependencies - The configuration of all features of the MSS watchdog is covered by this - driver. There are no dependencies on the hardware flow for configuring the - SmartFusion MSS watchdog timer. - - @section theory_op Theory of Operation - The watchdog driver uses the SmartFusion "Cortex Microcontroler Software - Interface Standard - Peripheral Access Layer" (CMSIS-PAL) to access hadware - registers. You must ensure that the SmartFusion CMSIS-PAL is either included - in the software toolchain used to build your project or is included in your - project. The most up-to-date SmartFusion CMSIS-PAL files can be obtained using - the Actel Firmware Catalog. - - The watchdog driver functions are grouped into the following categories: - - Initialization and cnfiguration - - Reading the watchdog timer current value and status - - Refreshing the watchdog timer value - - Time-out and wake-up interrupts control - - The watchdog driver is initialized and configured through a call to the - MSS_WD_init() function. The parameters passed to MSS_WD_init() function - specify the watchdog timer configuration. The configuration parameters include - the value that will be reloaded into the watchdog timer down counter every - time the watchdog is refreshed. Also included as part of the configuration - parameters is the optional allowed refresh window. The allowed refresh window - specifies the maximum allowed current value of the watchdog timer at the time - of the watchdog is relaoded. Attempting to reload the watchdog timer when its - value is larger than the allowed refresh window will cause a reset or - interrupt depending on the watchdog configuration. The allowed refresh window - can be disabled by specifying an allowed refesh window equal or higher than - the watchdog reload value. - The MSS_WD_init() function must be called before any other watchdog driver - functions can be called with the exception of the MSS_WD_disable() function. - - The watchdog timer can be disabled using the MSS_WD_disable() function. Once - disabled, the watchdog timer can only be reenabled by a power-on reset. - - The watchdog timer current value can be read using the MSS_WD_current_value() - function. The watchdog status can be read using the MSS_WD_status() function. - These functions are typically required when using the watchdog configured with - an allowed refresh window to check if a watchdog reload is currently allowed. - - The watchdog timer value is reloaded using the MSS_WD_reload() function. The - value reloaded into the watchdog timer down counter is the value specified as - parameter to the MSS_WD_init() function. - - The watchdog timer can generate interrupts instead of resetting the system - when its down-counter timer expires. These time-out interrupts are controlled - using the following functions: - - MSS_WD_enable_timeout_irq - - MSS_WD_disable_timeout_irq - - MSS_WD_clear_timeout_irq - - The watchdog timer is external to the Cortex-M3 processor core and operates - even when the Cortex-M3 is in sleep mode. A wakeup interrupt can be generated - by the watchdog timer to wakeup the Cortext-M3 when the watchdog timer value - reaches the allowed refresh window while the Cortex-M3 is in sleep mode. The - watchdog driver provides the following functions to control wakeup interrupts: - - MSS_WD_enable_wakeup_irq - - MSS_WD_disable_wakeup_irq - - MSS_WD_clear_wakeup_irq - - *//*=========================================================================*/ - -#ifndef MSS_WATCHDOG_H_ -#define MSS_WATCHDOG_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include "../../CMSIS/a2fxxxm3.h" - -/***************************************************************************//** - * The MSS_WDOG_RESET_ON_TIMEOUT_MODE macro is one of the possible values for the - * mode parameter of the WD_init() function. It is used to specify that a reset - * should occur when the watchdog down counter times out. - */ -#define MSS_WDOG_RESET_ON_TIMEOUT_MODE (uint32_t)0x00000000U - -/***************************************************************************//** - * The MSS_WDOG_INTERRUPT_ON_TIMEOUT_MODE macro is one of the possible values for - * the mode parameter of function the WD_init() function. It is used to specify - * that a time out interrupt should occur when the watchdog down counter expires. - */ -#define MSS_WDOG_INTERRUPT_ON_TIMEOUT_MODE (uint32_t)0x00000004U - -/***************************************************************************//** - * The MSS_WDOG_NO_WINDOW macro can be used as the value for the reload_window - * parameter of the WD_init() function. It is used to specify that no forbidden - * window will exist for the reload of the watchdog down counter. - */ -#define MSS_WDOG_NO_WINDOW (uint32_t)0xFFFFFFFFU - -/***************************************************************************//** - * The MSS_WDOG_CTRL_MODE_BIT_MASK macro is a bit mask specifying the bit used to - * set the watchdog's operating mode within the wathcdog's WDOGCONTROL register. - */ -#define MSS_WDOG_CTRL_MODE_BIT_MASK (uint32_t)0x00000004U - -/***************************************************************************//** - * The MSS_WDOG_TIMEOUT_IRQ_ENABLE_BIT_MASK macro is a bit mask specifying the bit - * used to enable the time out interrupt within the watchdog's WDOGCONTROL - * register. - */ -#define MSS_WDOG_TIMEOUT_IRQ_ENABLE_BIT_MASK (uint32_t)0x00000001U - -/***************************************************************************//** - The MSS_WDOG_WAKEUP_IRQ_ENABLE_BIT_MASK macro is a bit mask specifying the bit - used to enable the wake up interrupt within the watchdog's WDOGCONTROL - register. - */ -#define MSS_WDOG_WAKEUP_IRQ_ENABLE_BIT_MASK (uint32_t)0x00000002U - -/***************************************************************************//** - The MSS_WDOG_TIMEOUT_IRQ_CLEAR_BIT_MASK macro is a bit mask specifying the bit - used to clear the time out interrupt within the watchdog's WDOGRIS register. - */ -#define MSS_WDOG_TIMEOUT_IRQ_CLEAR_BIT_MASK (uint32_t)0x00000001U - -/***************************************************************************//** - The MSS_WDOG_WAKEUP_IRQ_CLEAR_BIT_MASK macro is a bit mask specifying the bit - used to clear the wake up interrupt within the watchdog's WDOGRIS register. - */ -#define MSS_WDOG_WAKEUP_IRQ_CLEAR_BIT_MASK (uint32_t)0x00000002U - -/***************************************************************************//** - The MSS_WDOG_REFRESH_KEY macro holds the magic value which will cause a reload - of the watchdog's down counter when written to the watchdog's WDOGREFRESH - register. - */ -#define MSS_WDOG_REFRESH_KEY (uint32_t)0xAC15DE42U - -/***************************************************************************//** - The MSS_WDOG_DISABLE_KEY macro holds the magic value which will disable the - watchdog if written to the watchdog's WDOGENABLE register. - */ -#define MSS_WDOG_DISABLE_KEY (uint32_t)0x4C6E55FAU - -/***************************************************************************//** - The MSS_WD_init() function initializes and configures the watchdog timer. - - @param load_value - The load_value parameter specifies the value that will be loaded into the - watchdog's down counter when the reload command is issued through a call to - MSS_WD_reload(). - - @param reload_window - The reload_window parameter specifies the time window during which a reload - of the watchdog counter is allowed. A reload of the watchdog counter should - only be performed when the watchdog counter value is below the value of the - reload_window. Reloading the watchdog down counter value before it has - reached the reload_window will result in an interrupt or reset depending on - the watchdog's mode. - The reload window can be disabled by using WDOG_NO_WINDOW for this parameter. - - @param mode - The mode parameter specifies the watchdog's operating mode. It can be either - MSS_WDOG_RESET_ON_TIMEOUT_MODE or MSS_WDOG_INTERRUPT_ON_TIMEOUT_MODE. - MSS_WDOG_RESET_ON_TIMEOUT_MODE: a reset will occur if the watchdog timer - expires. - MSS_WDOG_INTERRUPT_ON_TIMEOUT_MODE: an NMI interrupt will occur if the - watchdog timer expires. - - @return - This function does not return a value. - */ -static __INLINE void MSS_WD_init -( - uint32_t load_value, - uint32_t reload_window, - uint32_t mode -) -{ - /* Disable interrupts. */ - WATCHDOG->WDOGCONTROL &= ~(MSS_WDOG_TIMEOUT_IRQ_ENABLE_BIT_MASK | MSS_WDOG_WAKEUP_IRQ_CLEAR_BIT_MASK); - - /* Clear any existing interrupts. */ - WATCHDOG->WDOGRIS = MSS_WDOG_TIMEOUT_IRQ_CLEAR_BIT_MASK | MSS_WDOG_WAKEUP_IRQ_CLEAR_BIT_MASK; - - /* Configure watchdog with new configuration passed as parameter. */ - WATCHDOG->WDOGMVRP = MSS_WDOG_NO_WINDOW; - WATCHDOG->WDOGLOAD = load_value; - WATCHDOG->WDOGCONTROL = (WATCHDOG->WDOGCONTROL & ~MSS_WDOG_CTRL_MODE_BIT_MASK) | (mode & MSS_WDOG_CTRL_MODE_BIT_MASK); - - /* Reload watchdog with new load value. */ - WATCHDOG->WDOGREFRESH = MSS_WDOG_REFRESH_KEY; - - /* Set allowed window. */ - WATCHDOG->WDOGMVRP = reload_window; -} - -/***************************************************************************//** - The MSS_WD_reload() function causes the watchdog to reload its down counter timer - with the load value configured through the call to WD_init(). This function - must be called regularly to avoid a system reset. - - @return - This function does not return a value. - */ -static __INLINE void MSS_WD_reload( void ) -{ - WATCHDOG->WDOGREFRESH = MSS_WDOG_REFRESH_KEY; -} - -/***************************************************************************//** - The MSS_WD_disable() function disables the watchdog. - Please note that the watchdog can only be reenabled as a result of a power-on - reset. - - @return - This function does not return a value. - */ -static __INLINE void MSS_WD_disable( void ) -{ - WATCHDOG->WDOGENABLE = MSS_WDOG_DISABLE_KEY; -} - -/***************************************************************************//** - The MSS_WD_current_value() function returns the current value of the watchdog's - down counter. - - @return - This function returns the current value of the watchdog down counter. - */ -static __INLINE uint32_t MSS_WD_current_value( void ) -{ - return WATCHDOG->WDOGVALUE; -} - -/***************************************************************************//** - The MSS_WD_status() function returns the status of the watchdog. - - @return - The MSS_WD_status() function returns the status of the watchdog. A value of - 0 indicates that watchdog counter has reached the forbidden window and that - a reload should not be done. A value of 1 indicates that the watchdog counter - is within the permitted window and that a reload is allowed. - */ -static __INLINE uint32_t MSS_WD_status( void ) -{ - return WATCHDOG->WDOGSTATUS; -} - -/***************************************************************************//** - The MSS_WD_enable_timeout_irq() function enables the watchdog’s time out - interrupt which is connected to the Cortex-M3 NMI interrupt. - The NMI_Handler() function will be called when a watchdog time out occurs. You - must provide the implementation of the NMI_Handler() function to suit your - application. - - @return - This function does not return a value. - - Example: - @code - #include "mss_watchdog.h" - int main( void ) - { - MSS_WD_init( 0x10000000, MSS_WDOG_NO_WINDOW, MSS_WDOG_INTERRUPT_ON_TIMEOUT_MODE ); - MSS_WD_enable_timeout_irq(); - for (;;) - { - main_task(); - } - } - - void NMI_Handler( void ) - { - process_timeout(); - MSS_WD_clear_timeout_irq(); - } - @endcode - */ -static __INLINE void MSS_WD_enable_timeout_irq( void ) -{ - WATCHDOG->WDOGCONTROL |= MSS_WDOG_TIMEOUT_IRQ_ENABLE_BIT_MASK; -} - -/***************************************************************************//** - The WD_disable_timeout_irq() function disables the generation of the NMI - interrupt when the watchdog times out. - - @return - This function does not return a value. - */ -static __INLINE void MSS_WD_disable_timeout_irq( void ) -{ - WATCHDOG->WDOGCONTROL &= ~MSS_WDOG_TIMEOUT_IRQ_ENABLE_BIT_MASK; -} - -/***************************************************************************//** - The MSS_WD_enable_wakeup_irq() function enables the SmartFusion wakeup - interrupt. The WdogWakeup_IRQHandler() function will be called when a wake up - interrupt occurs. You must provide the implementation of the WdogWakeup_IRQHandler() - function to suit your application. - - @return - This function does not return a value. - - Example: - @code - #include "mss_watchdog.h" - int main( void ) - { - MSS_WD_init( 0x10000000, MSS_WDOG_NO_WINDOW, MSS_WDOG_INTERRUPT_ON_TIMEOUT_MODE ); - MSS_WD_enable_wakeup_irq(); - for (;;) - { - main_task(); - cortex_sleep(); - } - } - - void WdogWakeup_IRQHandler( void ) - { - process_wakeup(); - MSS_WD_clear_wakeup_irq(); - } - @endcode - */ -static __INLINE void MSS_WD_enable_wakeup_irq( void ) -{ - WATCHDOG->WDOGCONTROL |= MSS_WDOG_WAKEUP_IRQ_ENABLE_BIT_MASK; - NVIC_EnableIRQ( WdogWakeup_IRQn ); -} - -/***************************************************************************//** - The MSS_WD_disable_wakeup_irq() function disables the SmartFusion wakeup - interrupt. - - @return - This function does not return a value. - */ -static __INLINE void MSS_WD_disable_wakeup_irq( void ) -{ - WATCHDOG->WDOGCONTROL &= ~MSS_WDOG_WAKEUP_IRQ_ENABLE_BIT_MASK; -} - -/***************************************************************************//** - The MSS_WD_clear_timeout_irq() function clears the watchdog’s time out - interrupt which is connected to the Cortex-M3 NMI interrupt. - Calling MSS_WD_clear_timeout_irq() results in clearing the Cortex-M3 NMI interrupt. - Note: The MSS_WD_clear_timeout_irq() function must be called as part of the - timeout interrupt service routine (ISR) in order to prevent the same interrupt - event retriggering a call to the wakeup ISR. - - @return - The example below demonstrates the use of the MSS_WD_clear_timeout_irq() - function as part of the NMI interrupt service routine. - - Example: - @code - void NMI_Handler( void ) - { - process_timeout(); - MSS_WD_clear_timeout_irq(); - } - @endcode - */ -static __INLINE void MSS_WD_clear_timeout_irq( void ) -{ - WATCHDOG->WDOGRIS = MSS_WDOG_TIMEOUT_IRQ_CLEAR_BIT_MASK; - /* - * Perform a second write to ensure that the first write completed before - * returning from this function. This is to account for posted writes across - * the AHB matrix. The second write ensures that the first write has - * completed and that the interrupt line has been de-asserted by the time - * the function returns. Omitting the second write may result in a delay - * in the de-assertion of the interrupt line going to the Cortex-M3 and a - * retriggering of the interrupt. - */ - WATCHDOG->WDOGRIS = MSS_WDOG_TIMEOUT_IRQ_CLEAR_BIT_MASK; -} - -/***************************************************************************//** - The MSS_WD_clear_wakeup_irq() function clears the wakeup interrupt. - Note: The MSS_WD_clear_wakeup_irq() function must be called as part of the - wakeup interrupt service routine (ISR) in order to prevent the same interrupt - event retriggering a call to the wakeup ISR. This function also clears the - interrupt in the Cortex-M3 interrupt controller through a call to - NVIC_ClearPendingIRQ(). - - @return - This function does not return a value. - - Example: - The example below demonstrates the use of the MSS_WD_clear_wakeup_irq() function - as part of the wakeup interrupt service routine. - @code - void WdogWakeup_IRQHandler( void ) - { - do_interrupt_processing(); - - MSS_WD_clear_wakeup_irq(); - } - @endcode -*/ -static __INLINE void MSS_WD_clear_wakeup_irq( void ) -{ - WATCHDOG->WDOGRIS = MSS_WDOG_WAKEUP_IRQ_CLEAR_BIT_MASK; - NVIC_ClearPendingIRQ( WdogWakeup_IRQn ); -} -#ifdef __cplusplus -} -#endif - -#endif /* MSS_WATCHDOG_H_ */ diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers_config/mss_ace/ace_config.c b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers_config/mss_ace/ace_config.c deleted file mode 100644 index acd270690..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers_config/mss_ace/ace_config.c +++ /dev/null @@ -1,157 +0,0 @@ -/***************************************************************************** -* (c) Copyright Actel Corporation. All rights reserved. -* -*ACE configuration .c file -*Created by Actel MSS_ACE Configurator Fri Dec 17 12:12:19 2010 -* -*/ - -#include "../../drivers/mss_ace/mss_ace_configurator.h" -#include "ace_config.h" -#include "ace_handles.h" - -#include - - -/*----------------------------------------------------------------------------- -*AB Configuration -*---------------------------------------------------------------------------*/ -ace_adc_config_t g_ace_adc_config[ACE_NB_OF_ADC] = -{ - { - 4096, /* uint16_t adc_resolution */ - 2560 /* uint16_t va_ref */ - }, - { - 4096, /* uint16_t adc_resolution */ - 2560 /* uint16_t va_ref */ - }, - { - 4096, /* uint16_t adc_resolution */ - 2560 /* uint16_t va_ref */ - } -}; - -/*----------------------------------------------------------------------------- -*Current Monitor Resistor Values -*---------------------------------------------------------------------------*/ -const uint32_t g_ace_current_resistors[ACE_NB_OF_CURRENT_MONITORS] = -{ - 100000, /*CM0 ( USED AS CURRENT MONITOR ) */ - 1, /*CM1 ( NOT USED AS CURRENT MONITOR ) */ - 1, /*CM2 ( NOT USED AS CURRENT MONITOR ) */ - 1, /*CM3 ( NOT USED AS CURRENT MONITOR ) */ - 1 /*CM4 ( NOT USED AS CURRENT MONITOR ) */ -}; - -/*----------------------------------------------------------------------------- -*Analog Channels -*---------------------------------------------------------------------------*/ -/* Names*/ -const uint8_t g_ace_channel_0_name[] = "CurrentMonitor_0"; -const uint8_t g_ace_channel_1_name[] = "VoltageMonitor_0"; -const uint8_t g_ace_channel_2_name[] = "TemperatureMonitor_0"; - -/* Number of Flags per Channel*/ -#define CHANNEL_0_NB_OF_FLAGS 0 -#define CHANNEL_1_NB_OF_FLAGS 0 -#define CHANNEL_2_NB_OF_FLAGS 0 - -/* Input Channel to Flag Array Association*/ - -/* Channel Table*/ -ace_channel_desc_t g_ace_channel_desc_table[ACE_NB_OF_INPUT_CHANNELS] = -{ - { - g_ace_channel_0_name, /* const uint8_t * p_sz_channel_name */ - CM0, /* adc_channel_id_t signal_id; */ - 14, /* uint16_t signal_ppe_offset */ - CHANNEL_0_NB_OF_FLAGS, /* uint16_t nb_of_flags */ - 0 /* uint16_t * p_flags_array */ - }, - { - g_ace_channel_1_name, /* const uint8_t * p_sz_channel_name */ - TM0, /* adc_channel_id_t signal_id; */ - 23, /* uint16_t signal_ppe_offset */ - CHANNEL_1_NB_OF_FLAGS, /* uint16_t nb_of_flags */ - 0 /* uint16_t * p_flags_array */ - }, - { - g_ace_channel_2_name, /* const uint8_t * p_sz_channel_name */ - TM1, /* adc_channel_id_t signal_id; */ - 32, /* uint16_t signal_ppe_offset */ - CHANNEL_2_NB_OF_FLAGS, /* uint16_t nb_of_flags */ - 0 /* uint16_t * p_flags_array */ - } -}; - -/*----------------------------------------------------------------------------- -*Threshold Flags -*---------------------------------------------------------------------------*/ -/* Flag Names*/ -/* Flag Table*/ -#if ACE_NB_OF_PPE_FLAGS != 0 - ppe_flag_desc_t g_ppe_flags_desc_table[ACE_NB_OF_PPE_FLAGS] = - { - }; -#endif - -/*----------------------------------------------------------------------------- -*Sequencer Procedures -*---------------------------------------------------------------------------*/ -/* Procedure Name and Microcode*/ -const uint8_t g_ace_sse_proc_0_name[] = "ADC0_MAIN"; -const uint16_t g_ace_sse_proc_0_sequence[] = -{ - 0x1705, 0x1601, 0x155c, 0x14c4, - 0x0000, 0x152d, 0x8a0c, 0x1309, - 0x0000, 0x14c3, 0x0000, 0x8a04, - 0x152d, 0x970c, 0x132f, 0x0000, - 0x14c8, 0x0000, 0x9704, 0x1301, - 0x0000, 0x1002 -}; - -const uint8_t g_ace_sse_proc_1_name[] = "ADC1_MAIN"; -const uint16_t g_ace_sse_proc_1_sequence[] = -{ - 0x2705, 0x2601, 0x2200 -}; - -const uint8_t g_ace_sse_proc_2_name[] = "ADC2_MAIN"; -const uint16_t g_ace_sse_proc_2_sequence[] = -{ - 0x3705, 0x3601, 0x3200 -}; - - - -/* Procedure Table*/ -ace_procedure_desc_t g_sse_sequences_desc_table[ACE_NB_OF_SSE_PROCEDURES] = -{ - { - g_ace_sse_proc_0_name, /* const uint8_t * p_sz_proc_name */ - 2, /* uint16_t sse_loop_pc */ - 0, /* uint16_t sse_load_offset */ - sizeof(g_ace_sse_proc_0_sequence) / sizeof(uint16_t), /* uint16_t sse_ucode_length */ - g_ace_sse_proc_0_sequence, /* const uint16_t * sse_ucode */ - 0 /* uint8_t sse_pc_id */ - }, - { - g_ace_sse_proc_1_name, /* const uint8_t * p_sz_proc_name */ - 24, /* uint16_t sse_loop_pc */ - 22, /* uint16_t sse_load_offset */ - sizeof(g_ace_sse_proc_1_sequence) / sizeof(uint16_t), /* uint16_t sse_ucode_length */ - g_ace_sse_proc_1_sequence, /* const uint16_t * sse_ucode */ - 1 /* uint8_t sse_pc_id */ - }, - { - g_ace_sse_proc_2_name, /* const uint8_t * p_sz_proc_name */ - 27, /* uint16_t sse_loop_pc */ - 25, /* uint16_t sse_load_offset */ - sizeof(g_ace_sse_proc_2_sequence) / sizeof(uint16_t), /* uint16_t sse_ucode_length */ - g_ace_sse_proc_2_sequence, /* const uint16_t * sse_ucode */ - 2 /* uint8_t sse_pc_id */ - } -}; - - diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers_config/mss_ace/ace_config.h b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers_config/mss_ace/ace_config.h deleted file mode 100644 index 8f8c584d8..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers_config/mss_ace/ace_config.h +++ /dev/null @@ -1,37 +0,0 @@ -/***************************************************************************** -* (c) Copyright Actel Corporation. All rights reserved. -* -*ACE configuration .h file -*Created by Actel MSS_ACE Configurator Fri Dec 17 12:12:19 2010 -* -*/ - -#ifndef ACE_CONFIG_H -#define ACE_CONFIG_H - - -/*----------------------------------------------------------------------------- -*COMMON VALUES -*---------------------------------------------------------------------------*/ - -/*----------------------------------------------------------------------------- -*AB VALUES -*---------------------------------------------------------------------------*/ -#define ACE_NB_OF_ADC 3 -#define ACE_NB_OF_CURRENT_MONITORS 5 -#define MAX_CHANNEL_NAME_LENGTH 20 -#define ACE_NB_OF_INPUT_CHANNELS 3 - -/*----------------------------------------------------------------------------- -*SSE VALUES -*---------------------------------------------------------------------------*/ -#define ACE_NB_OF_SSE_PROCEDURES 3 -#define MAX_PROCEDURE_NAME_LENGTH 9 - -/*----------------------------------------------------------------------------- -*PPE VALUES -*---------------------------------------------------------------------------*/ -#define ACE_NB_OF_PPE_FLAGS 0 -#define MAX_FLAG_NAME_LENGTH 0 - -#endif diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers_config/mss_ace/ace_handles.h b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers_config/mss_ace/ace_handles.h deleted file mode 100644 index 86782c013..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/MicroSemi_Code/drivers_config/mss_ace/ace_handles.h +++ /dev/null @@ -1,41 +0,0 @@ -/***************************************************************************** -* (c) Copyright Actel Corporation. All rights reserved. -* -*ACE configuration .h file -*Created by Actel MSS_ACE Configurator Fri Dec 17 12:12:19 2010 -* -*/ - -#ifndef ACE_HANDLES_H -#define ACE_HANDLES_H - - -/*----------------------------------------------------------------------------- -*Analog input channel handles -*---------------------------------------------------------------------------*/ -typedef enum { - CurrentMonitor_0 = 0, - VoltageMonitor_0, - TemperatureMonitor_0, - NB_OF_ACE_CHANNEL_HANDLES -} ace_channel_handle_t; - -/*----------------------------------------------------------------------------- -*Flag Handles -*---------------------------------------------------------------------------*/ -typedef enum { - NB_OF_ACE_FLAG_HANDLES = 0 -} ace_flag_handle_t; - -/*----------------------------------------------------------------------------- -*Procedure Handles -*---------------------------------------------------------------------------*/ -typedef enum { - ADC0_MAIN = 0, - ADC1_MAIN, - ADC2_MAIN, - NB_OF_ACE_PROCEDURE_HANDLES -} ace_procedure_handle_t; - - -#endif diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/ParTest.c b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/ParTest.c deleted file mode 100644 index 56ac19b10..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/ParTest.c +++ /dev/null @@ -1,154 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/*----------------------------------------------------------- - * Simple parallel port IO routines. - *-----------------------------------------------------------*/ - -/* Kernel includes. */ -#include "FreeRTOS.h" -#include "task.h" - -/* Library includes. */ -#include "mss_gpio.h" - -#define partstMAX_LEDS 8 - -static volatile unsigned long ulGPIOState = 0UL; - -/*-----------------------------------------------------------*/ - -void vParTestInitialise( void ) -{ -long x; - - /* Initialise the GPIO */ - MSS_GPIO_init(); - - /* Set up GPIO for the LEDs. */ - for( x = 0; x < partstMAX_LEDS; x++ ) - { - MSS_GPIO_config( ( mss_gpio_id_t ) x , MSS_GPIO_OUTPUT_MODE ); - } - - /* All LEDs start off. */ - ulGPIOState = 0xffffffffUL; - MSS_GPIO_set_outputs( ulGPIOState ); -} -/*-----------------------------------------------------------*/ - -void vParTestSetLED( unsigned portBASE_TYPE uxLED, signed portBASE_TYPE xValue ) -{ - if( uxLED < partstMAX_LEDS ) - { - /* A critical section is used as the LEDs are also accessed from an - interrupt. */ - taskENTER_CRITICAL(); - { - if( xValue == pdTRUE ) - { - ulGPIOState &= ~( 1UL << uxLED ); - } - else - { - ulGPIOState |= ( 1UL << uxLED ); - } - - MSS_GPIO_set_outputs( ulGPIOState ); - } - taskEXIT_CRITICAL(); - } -} -/*-----------------------------------------------------------*/ - -void vParTestSetLEDFromISR( unsigned portBASE_TYPE uxLED, signed portBASE_TYPE xValue ) -{ -unsigned portBASE_TYPE uxInterruptFlags; - - uxInterruptFlags = portSET_INTERRUPT_MASK_FROM_ISR(); - { - if( uxLED < partstMAX_LEDS ) - { - if( xValue == pdTRUE ) - { - ulGPIOState &= ~( 1UL << uxLED ); - } - else - { - ulGPIOState |= ( 1UL << uxLED ); - } - - MSS_GPIO_set_outputs( ulGPIOState ); - } - } - portCLEAR_INTERRUPT_MASK_FROM_ISR( uxInterruptFlags ); -} -/*-----------------------------------------------------------*/ - -void vParTestToggleLED( unsigned portBASE_TYPE uxLED ) -{ - if( uxLED < partstMAX_LEDS ) - { - /* A critical section is used as the LEDs are also accessed from an - interrupt. */ - taskENTER_CRITICAL(); - { - if( ( ulGPIOState & ( 1UL << uxLED ) ) != 0UL ) - { - ulGPIOState &= ~( 1UL << uxLED ); - } - else - { - ulGPIOState |= ( 1UL << uxLED ); - } - - MSS_GPIO_set_outputs( ulGPIOState ); - } - taskEXIT_CRITICAL(); - } -} -/*-----------------------------------------------------------*/ - -long lParTestGetLEDState( unsigned long ulLED ) -{ -long lReturn = pdFALSE; - - if( ulLED < partstMAX_LEDS ) - { - taskENTER_CRITICAL(); - { - if( ( ulGPIOState & ( 1UL << ulLED ) ) == 0UL ) - { - lReturn = pdTRUE; - } - } - taskEXIT_CRITICAL(); - } - - return lReturn; -} -/*-----------------------------------------------------------*/ diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/RTOSDemo_IAR.ewd b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/RTOSDemo_IAR.ewd deleted file mode 100644 index 4d06fc88e..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/RTOSDemo_IAR.ewd +++ /dev/null @@ -1,4336 +0,0 @@ - - - 3 - - Blinky - - ARM - - 1 - - C-SPY - 2 - - 29 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ARMSIM_ID - 2 - - 1 - 1 - 1 - - - - - - - - CADI_ID - 2 - - 0 - 1 - 1 - - - - - - - - - CMSISDAP_ID - 2 - - 4 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - GDBSERVER_ID - 2 - - 0 - 1 - 1 - - - - - - - - - - - IJET_ID - 2 - - 8 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - JLINK_ID - 2 - - 16 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - LMIFTDI_ID - 2 - - 2 - 1 - 1 - - - - - - - - - - NULINK_ID - 2 - - 0 - 1 - 1 - - - - - - - PEMICRO_ID - 2 - - 3 - 1 - 1 - - - - - - - - STLINK_ID - 2 - - 5 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - THIRDPARTY_ID - 2 - - 0 - 1 - 1 - - - - - - - - TIFET_ID - 2 - - 1 - 1 - 1 - - - - - - - - - - - - - - - - - - - XDS100_ID - 2 - - 6 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - $TOOLKIT_DIR$\plugins\rtos\CMX\CmxArmPlugin.ENU.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\CMX\CmxTinyArmPlugin.ENU.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\FreeRtos\FreeRtosArmPlugin.ENU.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\Mbed\MbedArmPlugin.ENU.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\OpenRTOS\OpenRTOSPlugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\SafeRTOS\SafeRTOSPlugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXArmPlugin.ENU.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\TI-RTOS\tirtosplugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-286-KA-CSpy.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-KA-CSpy.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\uCOS-III\uCOS-III-KA-CSpy.ewplugin - 0 - - - $EW_DIR$\common\plugins\CodeCoverage\CodeCoverage.ENU.ewplugin - 1 - - - $EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin - 0 - - - $EW_DIR$\common\plugins\TargetAccessServer\TargetAccessServer.ENU.ewplugin - 0 - - - $EW_DIR$\common\plugins\uCProbe\uCProbePlugin.ENU.ewplugin - 0 - - - - - Full - - ARM - - 1 - - C-SPY - 2 - - 29 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ARMSIM_ID - 2 - - 1 - 1 - 1 - - - - - - - - CADI_ID - 2 - - 0 - 1 - 1 - - - - - - - - - CMSISDAP_ID - 2 - - 4 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - GDBSERVER_ID - 2 - - 0 - 1 - 1 - - - - - - - - - - - IJET_ID - 2 - - 8 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - JLINK_ID - 2 - - 16 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - LMIFTDI_ID - 2 - - 2 - 1 - 1 - - - - - - - - - - NULINK_ID - 2 - - 0 - 1 - 1 - - - - - - - PEMICRO_ID - 2 - - 3 - 1 - 1 - - - - - - - - STLINK_ID - 2 - - 5 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - THIRDPARTY_ID - 2 - - 0 - 1 - 1 - - - - - - - - TIFET_ID - 2 - - 1 - 1 - 1 - - - - - - - - - - - - - - - - - - - XDS100_ID - 2 - - 6 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - $TOOLKIT_DIR$\plugins\rtos\CMX\CmxArmPlugin.ENU.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\CMX\CmxTinyArmPlugin.ENU.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\FreeRtos\FreeRtosArmPlugin.ENU.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\Mbed\MbedArmPlugin.ENU.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\OpenRTOS\OpenRTOSPlugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\SafeRTOS\SafeRTOSPlugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXArmPlugin.ENU.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\TI-RTOS\tirtosplugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-286-KA-CSpy.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-KA-CSpy.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\uCOS-III\uCOS-III-KA-CSpy.ewplugin - 0 - - - $EW_DIR$\common\plugins\CodeCoverage\CodeCoverage.ENU.ewplugin - 1 - - - $EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin - 0 - - - $EW_DIR$\common\plugins\TargetAccessServer\TargetAccessServer.ENU.ewplugin - 0 - - - $EW_DIR$\common\plugins\uCProbe\uCProbePlugin.ENU.ewplugin - 0 - - - - - Full_with_optimisation - - ARM - - 1 - - C-SPY - 2 - - 29 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ARMSIM_ID - 2 - - 1 - 1 - 1 - - - - - - - - CADI_ID - 2 - - 0 - 1 - 1 - - - - - - - - - CMSISDAP_ID - 2 - - 4 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - GDBSERVER_ID - 2 - - 0 - 1 - 1 - - - - - - - - - - - IJET_ID - 2 - - 8 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - JLINK_ID - 2 - - 16 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - LMIFTDI_ID - 2 - - 2 - 1 - 1 - - - - - - - - - - NULINK_ID - 2 - - 0 - 1 - 1 - - - - - - - PEMICRO_ID - 2 - - 3 - 1 - 1 - - - - - - - - STLINK_ID - 2 - - 5 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - THIRDPARTY_ID - 2 - - 0 - 1 - 1 - - - - - - - - TIFET_ID - 2 - - 1 - 1 - 1 - - - - - - - - - - - - - - - - - - - XDS100_ID - 2 - - 6 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - $TOOLKIT_DIR$\plugins\rtos\CMX\CmxArmPlugin.ENU.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\CMX\CmxTinyArmPlugin.ENU.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\FreeRtos\FreeRtosArmPlugin.ENU.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\Mbed\MbedArmPlugin.ENU.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\OpenRTOS\OpenRTOSPlugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\SafeRTOS\SafeRTOSPlugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXArmPlugin.ENU.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\TI-RTOS\tirtosplugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-286-KA-CSpy.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-KA-CSpy.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\uCOS-III\uCOS-III-KA-CSpy.ewplugin - 0 - - - $EW_DIR$\common\plugins\CodeCoverage\CodeCoverage.ENU.ewplugin - 1 - - - $EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin - 0 - - - $EW_DIR$\common\plugins\TargetAccessServer\TargetAccessServer.ENU.ewplugin - 0 - - - $EW_DIR$\common\plugins\uCProbe\uCProbePlugin.ENU.ewplugin - 0 - - - - diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/RTOSDemo_IAR.ewp b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/RTOSDemo_IAR.ewp deleted file mode 100644 index 0c7f615e1..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/RTOSDemo_IAR.ewp +++ /dev/null @@ -1,3548 +0,0 @@ - - - 3 - - Blinky - - ARM - - 1 - - General - 3 - - 30 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ICCARM - 2 - - 34 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - AARM - 2 - - 10 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - OBJCOPY - 0 - - 1 - 1 - 1 - - - - - - - - - CUSTOM - 3 - - - - 0 - - - - BICOMP - 0 - - - - BUILDACTION - 1 - - - - - - - ILINK - 0 - - 20 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - IARCHIVE - 0 - - 0 - 1 - 1 - - - - - - - BILINK - 0 - - - - - Full - - ARM - - 1 - - General - 3 - - 30 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ICCARM - 2 - - 34 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - AARM - 2 - - 10 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - OBJCOPY - 0 - - 1 - 1 - 1 - - - - - - - - - CUSTOM - 3 - - - - 0 - - - - BICOMP - 0 - - - - BUILDACTION - 1 - - - - - - - ILINK - 0 - - 20 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - IARCHIVE - 0 - - 0 - 1 - 1 - - - - - - - BILINK - 0 - - - - - Full_with_optimisation - - ARM - - 1 - - General - 3 - - 30 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ICCARM - 2 - - 34 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - AARM - 2 - - 10 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - OBJCOPY - 0 - - 1 - 1 - 1 - - - - - - - - - CUSTOM - 3 - - - - 0 - - - - BICOMP - 0 - - - - BUILDACTION - 1 - - - - - - - ILINK - 0 - - 20 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - IARCHIVE - 0 - - 0 - 1 - 1 - - - - - - - BILINK - 0 - - - - - Common_Demo_Source - - Blinky - - - $PROJ_DIR$\..\Common\Minimal\BlockQ.c - - - $PROJ_DIR$\..\Common\Minimal\blocktim.c - - - $PROJ_DIR$\..\Common\Minimal\death.c - - - $PROJ_DIR$\..\Common\Minimal\dynamic.c - - - $PROJ_DIR$\..\Common\Minimal\flash.c - - - $PROJ_DIR$\..\Common\Minimal\GenQTest.c - - - $PROJ_DIR$\..\Common\Minimal\QPeek.c - - - $PROJ_DIR$\..\Common\Minimal\recmutex.c - - - $PROJ_DIR$\..\Common\Minimal\semtest.c - - - $PROJ_DIR$\..\Common\Minimal\TimerDemo.c - - - - FreeRTOS_Source - - Portable - - $PROJ_DIR$\..\..\Source\portable\MemMang\heap_2.c - - - $PROJ_DIR$\..\..\Source\portable\IAR\ARM_CM3\port.c - - - $PROJ_DIR$\..\..\Source\portable\IAR\ARM_CM3\portasm.s - - - - $PROJ_DIR$\..\..\Source\list.c - - - $PROJ_DIR$\..\..\Source\queue.c - - - $PROJ_DIR$\..\..\Source\tasks.c - - - $PROJ_DIR$\..\..\Source\timers.c - - - - FreeTCPIP(based on uIP) - - Blinky - - - $PROJ_DIR$\..\Common\ethernet\FreeTCPIP\psock.c - - - $PROJ_DIR$\..\Common\ethernet\FreeTCPIP\timer.c - - - $PROJ_DIR$\..\Common\ethernet\FreeTCPIP\uip.c - - - $PROJ_DIR$\..\Common\ethernet\FreeTCPIP\uip_arp.c - - - - Microsemi_Source - - CMSIS - - $PROJ_DIR$\MicroSemi_Code\CMSIS\core_cm3.c - - - $PROJ_DIR$\MicroSemi_Code\CMSIS\system_a2fxxxm3.c - - - - Drivers - - $PROJ_DIR$\MicroSemi_Code\drivers_config\mss_ace\ace_config.c - - Blinky - - - - $PROJ_DIR$\MicroSemi_Code\drivers\mss_ace\ace_convert.c - - Blinky - - - - $PROJ_DIR$\MicroSemi_Code\drivers\mss_ethernet_mac\crc32.c - - Blinky - - - - $PROJ_DIR$\MicroSemi_Code\drivers\I2C\i2c.c - - Blinky - - - - $PROJ_DIR$\MicroSemi_Code\drivers\mss_ace\mss_ace.c - - Blinky - - - Blinky - - ICCARM - - 34 - 0 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - $PROJ_DIR$\MicroSemi_Code\drivers\mss_ethernet_mac\mss_ethernet_mac.c - - Blinky - - - - $PROJ_DIR$\MicroSemi_Code\drivers\mss_gpio\mss_gpio.c - - - $PROJ_DIR$\MicroSemi_Code\drivers\OLED\oled.c - - Blinky - - - - $PROJ_DIR$\MicroSemi_Code\drivers\mss_ethernet_mac\phy.c - - Blinky - - - - - Startup - - $PROJ_DIR$\MicroSemi_Code\CMSIS\startup_iar\startup_a2fxxxm3.s - - - - - Web_Server - - Blinky - - - $PROJ_DIR$\..\Common\ethernet\FreeTCPIP\apps\httpd\http-strings.c - - - $PROJ_DIR$\WebServer\httpd-cgi.c - - - $PROJ_DIR$\..\Common\ethernet\FreeTCPIP\apps\httpd\httpd-fs.c - - - $PROJ_DIR$\..\Common\ethernet\FreeTCPIP\apps\httpd\httpd.c - - - - $PROJ_DIR$\main-blinky.c - - Full - Full_with_optimisation - - - - $PROJ_DIR$\main-full.c - - Blinky - - - - $PROJ_DIR$\ParTest.c - - - $PROJ_DIR$\printf-stdarg.c - - - $PROJ_DIR$\uIP_Task.c - - Blinky - - - diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/RTOSDemo_IAR.eww b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/RTOSDemo_IAR.eww deleted file mode 100644 index f4971a444..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/RTOSDemo_IAR.eww +++ /dev/null @@ -1,10 +0,0 @@ - - - - - $WS_DIR$\RTOSDemo_IAR.ewp - - - - - diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/RTOSDemo_Keil.uvopt b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/RTOSDemo_Keil.uvopt deleted file mode 100644 index 26046862a..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/RTOSDemo_Keil.uvopt +++ /dev/null @@ -1,1129 +0,0 @@ - - - - 1.0 - -
### uVision Project, (C) Keil Software
- - - *.c - *.s*; *.src; *.a* - *.obj - *.lib - *.txt; *.h; *.inc - *.plm - *.cpp - - - - 0 - 0 - - - - Blinky - 0x4 - ARM-ADS - - 20000000 - - 1 - 1 - 1 - 0 - - - 1 - 65535 - 0 - 0 - 0 - - - 79 - 66 - 8 - .\ - - - 1 - 1 - 1 - 0 - 1 - 1 - 0 - 1 - 0 - 0 - 0 - 0 - - - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 0 - 0 - - - 1 - 0 - 0 - - 255 - - SARMCM3.DLL - - DLM.DLL - -pEMBER - SARMCM3.DLL - - TLM.DLL - -pEMBER - - - 0 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 0 - 1 - 0 - 0 - 1 - - - - - - - - - - - BIN\UL2CM3.DLL - - - - 0 - DLGTARM - (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0) - - - 0 - ARMDBGFLAGS - - - - 0 - DLGUARM - (105=-1,-1,-1,-1,0)(106=-1,-1,-1,-1,0)(107=-1,-1,-1,-1,0) - - - 0 - UL2CM3 - -UM1129BUE -O14 -S0 -C0 -N00("ARM CoreSight JTAG-DP") -D00(3BA00477) -L00(4) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC800 -FN1 -FF0A2FxxxM3_256 -FS00 -FL040000 - - - - 0 - 1 - 1 - 0 - 0 - 0 - 0 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - - - - - - Full - 0x4 - ARM-ADS - - 20000000 - - 1 - 1 - 1 - 0 - - - 1 - 65535 - 0 - 0 - 0 - - - 79 - 66 - 8 - .\ - - - 1 - 1 - 1 - 0 - 1 - 1 - 0 - 1 - 0 - 0 - 0 - 0 - - - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 0 - 0 - - - 1 - 0 - 1 - - 255 - - SARMCM3.DLL - - DLM.DLL - -pEMBER - SARMCM3.DLL - - TLM.DLL - -pEMBER - - - 0 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 0 - 1 - 0 - 0 - 1 - - - - - - - - - - - BIN\UL2CM3.DLL - - - - 0 - DLGTARM - (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0) - - - 0 - ARMDBGFLAGS - - - - 0 - DLGUARM - (105=-1,-1,-1,-1,0)(106=-1,-1,-1,-1,0)(107=-1,-1,-1,-1,0) - - - 0 - UL2CM3 - -UM1129BUE -O14 -S0 -C0 -N00("ARM CoreSight JTAG-DP") -D00(3BA00477) -L00(4) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC800 -FN1 -FF0A2FxxxM3_256 -FS00 -FL040000 - - - - 0 - 1 - 1 - 0 - 0 - 0 - 0 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - - - - - - Full_with_optimisation - 0x4 - ARM-ADS - - 20000000 - - 1 - 1 - 1 - 0 - - - 1 - 65535 - 0 - 0 - 0 - - - 79 - 66 - 8 - .\ - - - 1 - 1 - 1 - 0 - 1 - 1 - 0 - 1 - 0 - 0 - 0 - 0 - - - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 0 - 0 - - - 1 - 0 - 0 - - 255 - - SARMCM3.DLL - - DLM.DLL - -pEMBER - SARMCM3.DLL - - TLM.DLL - -pEMBER - - - 0 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 0 - 1 - 0 - 0 - 1 - - - - - - - - - - - BIN\UL2CM3.DLL - - - - 0 - DLGTARM - (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0) - - - 0 - ARMDBGFLAGS - - - - 0 - DLGUARM - (105=-1,-1,-1,-1,0)(106=-1,-1,-1,-1,0)(107=-1,-1,-1,-1,0) - - - 0 - UL2CM3 - -UM1129BUE -O14 -S0 -C0 -N00("ARM CoreSight JTAG-DP") -D00(3BA00477) -L00(4) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC800 -FN1 -FF0A2FxxxM3_256 -FS00 -FL040000 - - - - 0 - 1 - 1 - 0 - 0 - 0 - 0 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - - - - - - System - 0 - 0 - 0 - - 1 - 1 - 2 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\MicroSemi_Code\CMSIS\startup_keil\startus_a2fxxxm3.s - startus_a2fxxxm3.s - - - - - Common_Demo_Source - 0 - 0 - 0 - - 2 - 2 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - ..\Common\Minimal\TimerDemo.c - TimerDemo.c - - - 2 - 3 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - ..\Common\Minimal\BlockQ.c - BlockQ.c - - - 2 - 4 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - ..\Common\Minimal\blocktim.c - blocktim.c - - - 2 - 5 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - ..\Common\Minimal\death.c - death.c - - - 2 - 6 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - ..\Common\Minimal\dynamic.c - dynamic.c - - - 2 - 7 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - ..\Common\Minimal\flash.c - flash.c - - - 2 - 8 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - ..\Common\Minimal\GenQTest.c - GenQTest.c - - - 2 - 9 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - ..\Common\Minimal\QPeek.c - QPeek.c - - - 2 - 10 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - ..\Common\Minimal\recmutex.c - recmutex.c - - - 2 - 11 - 1 - 0 - 0 - 0 - 0 - 213 - 222 - 0 - ..\Common\Minimal\semtest.c - semtest.c - - - - - FreeRTOS_Source - 0 - 0 - 0 - - 3 - 12 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - ..\..\Source\timers.c - timers.c - - - 3 - 13 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - ..\..\Source\list.c - list.c - - - 3 - 14 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - ..\..\Source\queue.c - queue.c - - - 3 - 15 - 1 - 0 - 0 - 0 - 0 - 1742 - 1751 - 0 - ..\..\Source\tasks.c - tasks.c - - - 3 - 16 - 1 - 0 - 0 - 0 - 0 - 191 - 200 - 0 - ..\..\Source\portable\RVDS\ARM_CM3\port.c - port.c - - - 3 - 17 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - ..\..\Source\portable\MemMang\heap_2.c - heap_2.c - - - - - FreeTCPIP(based on uIP) - 0 - 0 - 0 - - 4 - 18 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - ..\Common\ethernet\FreeTCPIP\uip_arp.c - uip_arp.c - - - 4 - 19 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - ..\Common\ethernet\FreeTCPIP\psock.c - psock.c - - - 4 - 20 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - ..\Common\ethernet\FreeTCPIP\timer.c - timer.c - - - 4 - 21 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - ..\Common\ethernet\FreeTCPIP\uip.c - uip.c - - - - - Microsemi_Drivers - 0 - 0 - 0 - - 5 - 22 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\MicroSemi_Code\drivers\mss_gpio\mss_gpio.c - mss_gpio.c - - - 5 - 23 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\MicroSemi_Code\drivers\I2C\i2c.c - i2c.c - - - 5 - 24 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\MicroSemi_Code\drivers\mss_ace\ace_convert.c - ace_convert.c - - - 5 - 25 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\MicroSemi_Code\drivers\mss_ace\mss_ace.c - mss_ace.c - - - 5 - 26 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\MicroSemi_Code\drivers\mss_ethernet_mac\crc32.c - crc32.c - - - 5 - 27 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\MicroSemi_Code\drivers\mss_ethernet_mac\mss_ethernet_mac.c - mss_ethernet_mac.c - - - 5 - 28 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\MicroSemi_Code\drivers\mss_ethernet_mac\phy.c - phy.c - - - 5 - 29 - 1 - 0 - 0 - 44 - 0 - 308 - 321 - 0 - .\MicroSemi_Code\drivers\OLED\oled.c - oled.c - - - 5 - 30 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\MicroSemi_Code\drivers_config\mss_ace\ace_config.c - ace_config.c - - - - - Main - 0 - 0 - 0 - - 6 - 31 - 1 - 0 - 0 - 0 - 0 - 57 - 57 - 0 - .\main-blinky.c - main-blinky.c - - - 6 - 32 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\printf-stdarg.c - printf-stdarg.c - - - 6 - 33 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\ParTest.c - ParTest.c - - - 6 - 34 - 1 - 0 - 0 - 0 - 0 - 58 - 58 - 0 - .\main-full.c - main-full.c - - - 6 - 35 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\uIP_Task.c - uIP_Task.c - - - - - CMSIS - 0 - 0 - 0 - - 7 - 36 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\MicroSemi_Code\CMSIS\system_a2fxxxm3.c - system_a2fxxxm3.c - - - 7 - 37 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\MicroSemi_Code\CMSIS\core_cm3.c - core_cm3.c - - - - - Web_Server - 0 - 0 - 0 - - 8 - 38 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - .\WebServer\httpd-cgi.c - httpd-cgi.c - - - 8 - 39 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - ..\Common\ethernet\FreeTCPIP\apps\httpd\http-strings.c - http-strings.c - - - 8 - 40 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - ..\Common\ethernet\FreeTCPIP\apps\httpd\httpd.c - httpd.c - - - 8 - 41 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - ..\Common\ethernet\FreeTCPIP\apps\httpd\httpd-fs.c - httpd-fs.c - - - - - 1 - 0 - - 100 - 0 - - - .\main-full.c - 0 - 58 - 58 - - - .\main-blinky.c - 0 - 57 - 57 - - - - - -
diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/RTOSDemo_Keil.uvproj b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/RTOSDemo_Keil.uvproj deleted file mode 100644 index 837d410b2..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/RTOSDemo_Keil.uvproj +++ /dev/null @@ -1,2396 +0,0 @@ - - - - 1.1 - -
### uVision Project, (C) Keil Software
- - - - Blinky - 0x4 - ARM-ADS - - - A2F200M3F - Actel - IRAM(0x20000000-0x2000FFFF) IROM(0x00000000-0x0003FFFF) CLOCK(20000000) CPUTYPE("Cortex-M3") - - "Startup\Actel\A2FxxxM3\startup_a2fxxxm3.s" ("SmartFusion A2FxxxM3 Startup Code") - UL2CM3(-O14 -S0 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0A2FxxxM3_256 -FS00 -FL040000) - 5028 - a2fxxxm3.h - - - - - - - - - - - 0 - - - - Actel\A2FxxxM3\ - Actel\A2FxxxM3\ - - 0 - 0 - 0 - 0 - 1 - - .\Keil_output\ - RTOSDemo_Keil - 1 - 0 - 0 - 1 - 1 - .\ - 1 - 0 - 0 - - 0 - 0 - - - 0 - 0 - - - 0 - 0 - - - 0 - 0 - - - 0 - 0 - - - 0 - 0 - - 0 - - - - 0 - 0 - 0 - 0 - 0 - 1 - 0 - 0 - 0 - 0 - 3 - - - - - SARMCM3.DLL - - DLM.DLL - -pEMBER - SARMCM3.DLL - - TLM.DLL - -pEMBER - - - - 1 - 0 - 0 - 0 - 16 - - - 0 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 0 - - - 1 - 1 - 1 - 1 - 1 - 1 - 0 - 1 - - 0 - 1 - - - - - - - - - - - - - - BIN\UL2CM3.DLL - - - - - 1 - 0 - 0 - 1 - 0 - -1 - - BIN\UL2CM3.DLL - - - - - - 0 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 0 - 1 - 1 - 0 - 1 - 1 - 0 - 0 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 0 - 0 - "Cortex-M3" - - 0 - 0 - 0 - 1 - 1 - 0 - 0 - 0 - 0 - 0 - 8 - 0 - 0 - 0 - 3 - 3 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 1 - 0 - 0 - 0 - 0 - 1 - 0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x20000000 - 0x10000 - - - 1 - 0x0 - 0x40000 - - - 0 - 0x0 - 0x0 - - - 1 - 0x0 - 0x0 - - - 1 - 0x0 - 0x0 - - - 1 - 0x0 - 0x0 - - - 1 - 0x0 - 0x40000 - - - 1 - 0x0 - 0x0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x20000000 - 0x10000 - - - 0 - 0x0 - 0x0 - - - - - - 1 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - - - ..\CORTEX_A2F200_IAR_and_Keil;.\MicroSemi_Code\CMSIS;..\..\Source\include;..\..\Source\portable\RVDS\ARM_CM3;.\MicroSemi_Code\drivers\mss_gpio;.\MicroSemi_Code\drivers\mss_watchdog;.\MicroSemi_Code\drivers\mss_ace;.\MicroSemi_Code\drivers_config\mss_ace - - - - 1 - 0 - 0 - 0 - 0 - 0 - 0 - - - - - - - - - 1 - 0 - 0 - 0 - 1 - 0 - 0x00000000 - 0x20000000 - - - - - - - - - - - - System - - - startus_a2fxxxm3.s - 2 - .\MicroSemi_Code\CMSIS\startup_keil\startus_a2fxxxm3.s - - - - - Common_Demo_Source - - - 0 - 0 - 0 - 0 - 0 - 0 - 2 - 2 - 2 - 2 - 11 - - - - - - 2 - 0 - 2 - 2 - 2 - 2 - 2 - 2 - 2 - 2 - 0 - 2 - - - - - - - - - 2 - 2 - 2 - 2 - 2 - 2 - 2 - - - - - - - - - - - - TimerDemo.c - 1 - ..\Common\Minimal\TimerDemo.c - - - BlockQ.c - 1 - ..\Common\Minimal\BlockQ.c - - - blocktim.c - 1 - ..\Common\Minimal\blocktim.c - - - death.c - 1 - ..\Common\Minimal\death.c - - - dynamic.c - 1 - ..\Common\Minimal\dynamic.c - - - flash.c - 1 - ..\Common\Minimal\flash.c - - - GenQTest.c - 1 - ..\Common\Minimal\GenQTest.c - - - QPeek.c - 1 - ..\Common\Minimal\QPeek.c - - - recmutex.c - 1 - ..\Common\Minimal\recmutex.c - - - semtest.c - 1 - ..\Common\Minimal\semtest.c - - - - - FreeRTOS_Source - - - timers.c - 1 - ..\..\Source\timers.c - - - list.c - 1 - ..\..\Source\list.c - - - queue.c - 1 - ..\..\Source\queue.c - - - tasks.c - 1 - ..\..\Source\tasks.c - - - port.c - 1 - ..\..\Source\portable\RVDS\ARM_CM3\port.c - - - heap_2.c - 1 - ..\..\Source\portable\MemMang\heap_2.c - - - - - FreeTCPIP(based on uIP) - - - 0 - 0 - 0 - 0 - 0 - 0 - 2 - 2 - 2 - 2 - 11 - - - - - - 2 - 0 - 2 - 2 - 2 - 2 - 2 - 2 - 2 - 2 - 0 - 2 - - - - - - - - - 2 - 2 - 2 - 2 - 2 - 2 - 2 - - - - - - - - - - - - uip_arp.c - 1 - ..\Common\ethernet\FreeTCPIP\uip_arp.c - - - psock.c - 1 - ..\Common\ethernet\FreeTCPIP\psock.c - - - timer.c - 1 - ..\Common\ethernet\FreeTCPIP\timer.c - - - uip.c - 1 - ..\Common\ethernet\FreeTCPIP\uip.c - - - - - Microsemi_Drivers - - - mss_gpio.c - 1 - .\MicroSemi_Code\drivers\mss_gpio\mss_gpio.c - - - i2c.c - 1 - .\MicroSemi_Code\drivers\I2C\i2c.c - - - 2 - 0 - 0 - 0 - 0 - 0 - 2 - 2 - 2 - 2 - 11 - - - - - - 2 - 0 - 2 - 2 - 2 - 2 - 2 - 2 - 2 - 2 - 0 - 2 - - - - - - - - - - - - ace_convert.c - 1 - .\MicroSemi_Code\drivers\mss_ace\ace_convert.c - - - mss_ace.c - 1 - .\MicroSemi_Code\drivers\mss_ace\mss_ace.c - - - crc32.c - 1 - .\MicroSemi_Code\drivers\mss_ethernet_mac\crc32.c - - - 2 - 0 - 0 - 0 - 0 - 0 - 2 - 2 - 2 - 2 - 11 - - - - - - 2 - 0 - 2 - 2 - 2 - 2 - 2 - 2 - 2 - 2 - 0 - 2 - - - - - - - - - - - - mss_ethernet_mac.c - 1 - .\MicroSemi_Code\drivers\mss_ethernet_mac\mss_ethernet_mac.c - - - 2 - 0 - 0 - 0 - 0 - 0 - 2 - 2 - 2 - 2 - 11 - - - - - - 2 - 0 - 2 - 2 - 2 - 2 - 2 - 2 - 2 - 2 - 0 - 2 - - - - - - - - - - - - phy.c - 1 - .\MicroSemi_Code\drivers\mss_ethernet_mac\phy.c - - - 2 - 0 - 0 - 0 - 0 - 0 - 2 - 2 - 2 - 2 - 11 - - - - - - 2 - 0 - 2 - 2 - 2 - 2 - 2 - 2 - 2 - 2 - 0 - 2 - - - - - - - - - - - - oled.c - 1 - .\MicroSemi_Code\drivers\OLED\oled.c - - - 2 - 0 - 0 - 0 - 0 - 0 - 2 - 2 - 2 - 2 - 11 - - - - - - 2 - 0 - 2 - 2 - 2 - 2 - 2 - 2 - 2 - 2 - 0 - 2 - - - - - - - - - - - - ace_config.c - 1 - .\MicroSemi_Code\drivers_config\mss_ace\ace_config.c - - - - - Main - - - main-blinky.c - 1 - .\main-blinky.c - - - printf-stdarg.c - 1 - .\printf-stdarg.c - - - ParTest.c - 1 - .\ParTest.c - - - main-full.c - 1 - .\main-full.c - - - 2 - 0 - 0 - 0 - 0 - 0 - 2 - 2 - 2 - 2 - 11 - - - - - - 2 - 0 - 2 - 2 - 2 - 2 - 2 - 2 - 2 - 2 - 0 - 2 - - - - - - - - - - - - uIP_Task.c - 1 - .\uIP_Task.c - - - 2 - 0 - 0 - 0 - 0 - 0 - 2 - 2 - 2 - 2 - 11 - - - - - - 2 - 0 - 2 - 2 - 2 - 2 - 2 - 2 - 2 - 2 - 0 - 2 - - - - - - - - - - - - - - CMSIS - - - system_a2fxxxm3.c - 1 - .\MicroSemi_Code\CMSIS\system_a2fxxxm3.c - - - core_cm3.c - 1 - .\MicroSemi_Code\CMSIS\core_cm3.c - - - - - Web_Server - - - 0 - 0 - 0 - 0 - 0 - 0 - 2 - 2 - 2 - 2 - 11 - - - - - - 2 - 0 - 2 - 2 - 2 - 2 - 2 - 2 - 2 - 2 - 0 - 2 - - - - - - - - - 2 - 2 - 2 - 2 - 2 - 2 - 2 - - - - - - - - - - - - httpd-cgi.c - 1 - .\WebServer\httpd-cgi.c - - - http-strings.c - 1 - ..\Common\ethernet\FreeTCPIP\apps\httpd\http-strings.c - - - httpd.c - 1 - ..\Common\ethernet\FreeTCPIP\apps\httpd\httpd.c - - - httpd-fs.c - 1 - ..\Common\ethernet\FreeTCPIP\apps\httpd\httpd-fs.c - - - - - - - Full - 0x4 - ARM-ADS - - - A2F200M3F - Actel - IRAM(0x20000000-0x2000FFFF) IROM(0x00000000-0x0003FFFF) CLOCK(20000000) CPUTYPE("Cortex-M3") - - "Startup\Actel\A2FxxxM3\startup_a2fxxxm3.s" ("SmartFusion A2FxxxM3 Startup Code") - UL2CM3(-O14 -S0 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0A2FxxxM3_256 -FS00 -FL040000) - 5028 - a2fxxxm3.h - - - - - - - - - - - 0 - - - - Actel\A2FxxxM3\ - Actel\A2FxxxM3\ - - 0 - 0 - 0 - 0 - 1 - - .\Keil_output\ - RTOSDemo_Keil - 1 - 0 - 0 - 1 - 1 - .\ - 1 - 0 - 0 - - 0 - 0 - - - 0 - 0 - - - 0 - 0 - - - 0 - 0 - - - 0 - 0 - - - 0 - 0 - - 0 - - - - 0 - 0 - 0 - 0 - 0 - 1 - 0 - 0 - 0 - 0 - 3 - - - - - SARMCM3.DLL - - DLM.DLL - -pEMBER - SARMCM3.DLL - - TLM.DLL - -pEMBER - - - - 1 - 0 - 0 - 0 - 16 - - - 0 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 0 - - - 1 - 1 - 1 - 1 - 1 - 1 - 0 - 1 - - 0 - 1 - - - - - - - - - - - - - - BIN\UL2CM3.DLL - - - - - 1 - 0 - 0 - 1 - 0 - -1 - - BIN\UL2CM3.DLL - - - - - - 0 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 0 - 1 - 1 - 0 - 1 - 1 - 0 - 0 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 0 - 0 - "Cortex-M3" - - 0 - 0 - 0 - 1 - 1 - 0 - 0 - 0 - 0 - 0 - 8 - 0 - 0 - 0 - 3 - 3 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 1 - 0 - 0 - 0 - 0 - 1 - 0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x20000000 - 0x10000 - - - 1 - 0x0 - 0x40000 - - - 0 - 0x0 - 0x0 - - - 1 - 0x0 - 0x0 - - - 1 - 0x0 - 0x0 - - - 1 - 0x0 - 0x0 - - - 1 - 0x0 - 0x40000 - - - 1 - 0x0 - 0x0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x20000000 - 0x10000 - - - 0 - 0x0 - 0x0 - - - - - - 1 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - --diag_suppress 2770 - - - ..\CORTEX_A2F200_IAR_and_Keil;.\MicroSemi_Code\CMSIS;..\..\Source\include;..\..\Source\portable\RVDS\ARM_CM3;.\MicroSemi_Code\drivers\mss_gpio;.\MicroSemi_Code\drivers\mss_watchdog;..\Common\include;..\Common\ethernet\FreeTCPIP;..\Common\ethernet\FreeTCPIP\apps\httpd;.\MicroSemi_Code\drivers_config\mss_ace;.\MicroSemi_Code\drivers\I2C;.\MicroSemi_Code\drivers\mss_ace;.\MicroSemi_Code\drivers\mss_ethernet_mac;.\MicroSemi_Code\drivers\OLED;.\WebServer;.\MicroSemi_Code\drivers\mss_timer;..\Common\ethernet\FreeTCPIP\net - - - - 1 - 0 - 0 - 0 - 0 - 0 - 0 - - - - - - - - - 1 - 0 - 0 - 0 - 1 - 0 - 0x00000000 - 0x20000000 - - - - - - - - - - - - System - - - startus_a2fxxxm3.s - 2 - .\MicroSemi_Code\CMSIS\startup_keil\startus_a2fxxxm3.s - - - - - Common_Demo_Source - - - TimerDemo.c - 1 - ..\Common\Minimal\TimerDemo.c - - - BlockQ.c - 1 - ..\Common\Minimal\BlockQ.c - - - blocktim.c - 1 - ..\Common\Minimal\blocktim.c - - - death.c - 1 - ..\Common\Minimal\death.c - - - dynamic.c - 1 - ..\Common\Minimal\dynamic.c - - - flash.c - 1 - ..\Common\Minimal\flash.c - - - GenQTest.c - 1 - ..\Common\Minimal\GenQTest.c - - - QPeek.c - 1 - ..\Common\Minimal\QPeek.c - - - recmutex.c - 1 - ..\Common\Minimal\recmutex.c - - - semtest.c - 1 - ..\Common\Minimal\semtest.c - - - - - FreeRTOS_Source - - - timers.c - 1 - ..\..\Source\timers.c - - - list.c - 1 - ..\..\Source\list.c - - - queue.c - 1 - ..\..\Source\queue.c - - - tasks.c - 1 - ..\..\Source\tasks.c - - - port.c - 1 - ..\..\Source\portable\RVDS\ARM_CM3\port.c - - - heap_2.c - 1 - ..\..\Source\portable\MemMang\heap_2.c - - - - - FreeTCPIP(based on uIP) - - - uip_arp.c - 1 - ..\Common\ethernet\FreeTCPIP\uip_arp.c - - - psock.c - 1 - ..\Common\ethernet\FreeTCPIP\psock.c - - - timer.c - 1 - ..\Common\ethernet\FreeTCPIP\timer.c - - - uip.c - 1 - ..\Common\ethernet\FreeTCPIP\uip.c - - - - - Microsemi_Drivers - - - mss_gpio.c - 1 - .\MicroSemi_Code\drivers\mss_gpio\mss_gpio.c - - - i2c.c - 1 - .\MicroSemi_Code\drivers\I2C\i2c.c - - - ace_convert.c - 1 - .\MicroSemi_Code\drivers\mss_ace\ace_convert.c - - - mss_ace.c - 1 - .\MicroSemi_Code\drivers\mss_ace\mss_ace.c - - - crc32.c - 1 - .\MicroSemi_Code\drivers\mss_ethernet_mac\crc32.c - - - mss_ethernet_mac.c - 1 - .\MicroSemi_Code\drivers\mss_ethernet_mac\mss_ethernet_mac.c - - - phy.c - 1 - .\MicroSemi_Code\drivers\mss_ethernet_mac\phy.c - - - oled.c - 1 - .\MicroSemi_Code\drivers\OLED\oled.c - - - ace_config.c - 1 - .\MicroSemi_Code\drivers_config\mss_ace\ace_config.c - - - - - Main - - - main-blinky.c - 1 - .\main-blinky.c - - - 2 - 0 - 0 - 0 - 0 - 0 - 2 - 2 - 2 - 2 - 11 - - - - - - 2 - 0 - 2 - 2 - 2 - 2 - 2 - 2 - 2 - 2 - 0 - 2 - - - - - - - - - - - - printf-stdarg.c - 1 - .\printf-stdarg.c - - - ParTest.c - 1 - .\ParTest.c - - - main-full.c - 1 - .\main-full.c - - - uIP_Task.c - 1 - .\uIP_Task.c - - - - - CMSIS - - - system_a2fxxxm3.c - 1 - .\MicroSemi_Code\CMSIS\system_a2fxxxm3.c - - - core_cm3.c - 1 - .\MicroSemi_Code\CMSIS\core_cm3.c - - - - - Web_Server - - - httpd-cgi.c - 1 - .\WebServer\httpd-cgi.c - - - http-strings.c - 1 - ..\Common\ethernet\FreeTCPIP\apps\httpd\http-strings.c - - - httpd.c - 1 - ..\Common\ethernet\FreeTCPIP\apps\httpd\httpd.c - - - httpd-fs.c - 1 - ..\Common\ethernet\FreeTCPIP\apps\httpd\httpd-fs.c - - - - - - - Full_with_optimisation - 0x4 - ARM-ADS - - - A2F200M3F - Actel - IRAM(0x20000000-0x2000FFFF) IROM(0x00000000-0x0003FFFF) CLOCK(20000000) CPUTYPE("Cortex-M3") - - "Startup\Actel\A2FxxxM3\startup_a2fxxxm3.s" ("SmartFusion A2FxxxM3 Startup Code") - UL2CM3(-O14 -S0 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0A2FxxxM3_256 -FS00 -FL040000) - 5028 - a2fxxxm3.h - - - - - - - - - - - 0 - - - - Actel\A2FxxxM3\ - Actel\A2FxxxM3\ - - 0 - 0 - 0 - 0 - 1 - - .\Keil_output\ - RTOSDemo_Keil - 1 - 0 - 0 - 1 - 1 - .\ - 1 - 0 - 0 - - 0 - 0 - - - 0 - 0 - - - 0 - 0 - - - 0 - 0 - - - 0 - 0 - - - 0 - 0 - - 0 - - - - 0 - 0 - 0 - 0 - 0 - 1 - 0 - 0 - 0 - 0 - 3 - - - - - SARMCM3.DLL - - DLM.DLL - -pEMBER - SARMCM3.DLL - - TLM.DLL - -pEMBER - - - - 1 - 0 - 0 - 0 - 16 - - - 0 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 0 - - - 1 - 1 - 1 - 1 - 1 - 1 - 0 - 1 - - 0 - 1 - - - - - - - - - - - - - - BIN\UL2CM3.DLL - - - - - 1 - 0 - 0 - 1 - 0 - -1 - - BIN\UL2CM3.DLL - - - - - - 0 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 0 - 1 - 1 - 0 - 1 - 1 - 0 - 0 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 0 - 0 - "Cortex-M3" - - 0 - 0 - 0 - 1 - 1 - 0 - 0 - 0 - 0 - 0 - 8 - 0 - 0 - 0 - 3 - 3 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 1 - 0 - 0 - 0 - 0 - 1 - 0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x20000000 - 0x10000 - - - 1 - 0x0 - 0x40000 - - - 0 - 0x0 - 0x0 - - - 1 - 0x0 - 0x0 - - - 1 - 0x0 - 0x0 - - - 1 - 0x0 - 0x0 - - - 1 - 0x0 - 0x40000 - - - 1 - 0x0 - 0x0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x20000000 - 0x10000 - - - 0 - 0x0 - 0x0 - - - - - - 1 - 4 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - --diag_suppress 2770 - - - ..\CORTEX_A2F200_IAR_and_Keil;.\MicroSemi_Code\CMSIS;..\..\Source\include;..\..\Source\portable\RVDS\ARM_CM3;.\MicroSemi_Code\drivers\mss_gpio;.\MicroSemi_Code\drivers\mss_watchdog;..\Common\include;..\Common\ethernet\FreeTCPIP;..\Common\ethernet\FreeTCPIP\apps\httpd;.\MicroSemi_Code\drivers_config\mss_ace;.\MicroSemi_Code\drivers\I2C;.\MicroSemi_Code\drivers\mss_ace;.\MicroSemi_Code\drivers\mss_ethernet_mac;.\MicroSemi_Code\drivers\OLED;.\WebServer;.\MicroSemi_Code\drivers\mss_timer;..\Common\ethernet\FreeTCPIP\net - - - - 1 - 0 - 0 - 0 - 0 - 0 - 0 - - - - - - - - - 1 - 0 - 0 - 0 - 1 - 0 - 0x00000000 - 0x20000000 - - - - - - - - - - - - System - - - startus_a2fxxxm3.s - 2 - .\MicroSemi_Code\CMSIS\startup_keil\startus_a2fxxxm3.s - - - - - Common_Demo_Source - - - TimerDemo.c - 1 - ..\Common\Minimal\TimerDemo.c - - - BlockQ.c - 1 - ..\Common\Minimal\BlockQ.c - - - blocktim.c - 1 - ..\Common\Minimal\blocktim.c - - - death.c - 1 - ..\Common\Minimal\death.c - - - dynamic.c - 1 - ..\Common\Minimal\dynamic.c - - - flash.c - 1 - ..\Common\Minimal\flash.c - - - GenQTest.c - 1 - ..\Common\Minimal\GenQTest.c - - - QPeek.c - 1 - ..\Common\Minimal\QPeek.c - - - recmutex.c - 1 - ..\Common\Minimal\recmutex.c - - - semtest.c - 1 - ..\Common\Minimal\semtest.c - - - - - FreeRTOS_Source - - - timers.c - 1 - ..\..\Source\timers.c - - - list.c - 1 - ..\..\Source\list.c - - - queue.c - 1 - ..\..\Source\queue.c - - - tasks.c - 1 - ..\..\Source\tasks.c - - - port.c - 1 - ..\..\Source\portable\RVDS\ARM_CM3\port.c - - - heap_2.c - 1 - ..\..\Source\portable\MemMang\heap_2.c - - - - - FreeTCPIP(based on uIP) - - - uip_arp.c - 1 - ..\Common\ethernet\FreeTCPIP\uip_arp.c - - - psock.c - 1 - ..\Common\ethernet\FreeTCPIP\psock.c - - - timer.c - 1 - ..\Common\ethernet\FreeTCPIP\timer.c - - - uip.c - 1 - ..\Common\ethernet\FreeTCPIP\uip.c - - - - - Microsemi_Drivers - - - mss_gpio.c - 1 - .\MicroSemi_Code\drivers\mss_gpio\mss_gpio.c - - - i2c.c - 1 - .\MicroSemi_Code\drivers\I2C\i2c.c - - - ace_convert.c - 1 - .\MicroSemi_Code\drivers\mss_ace\ace_convert.c - - - mss_ace.c - 1 - .\MicroSemi_Code\drivers\mss_ace\mss_ace.c - - - crc32.c - 1 - .\MicroSemi_Code\drivers\mss_ethernet_mac\crc32.c - - - mss_ethernet_mac.c - 1 - .\MicroSemi_Code\drivers\mss_ethernet_mac\mss_ethernet_mac.c - - - phy.c - 1 - .\MicroSemi_Code\drivers\mss_ethernet_mac\phy.c - - - oled.c - 1 - .\MicroSemi_Code\drivers\OLED\oled.c - - - ace_config.c - 1 - .\MicroSemi_Code\drivers_config\mss_ace\ace_config.c - - - - - Main - - - main-blinky.c - 1 - .\main-blinky.c - - - 2 - 0 - 0 - 0 - 0 - 0 - 2 - 2 - 2 - 2 - 11 - - - - - - 2 - 0 - 2 - 2 - 2 - 2 - 2 - 2 - 2 - 2 - 0 - 2 - - - - - - - - - - - - printf-stdarg.c - 1 - .\printf-stdarg.c - - - ParTest.c - 1 - .\ParTest.c - - - main-full.c - 1 - .\main-full.c - - - uIP_Task.c - 1 - .\uIP_Task.c - - - - - CMSIS - - - system_a2fxxxm3.c - 1 - .\MicroSemi_Code\CMSIS\system_a2fxxxm3.c - - - core_cm3.c - 1 - .\MicroSemi_Code\CMSIS\core_cm3.c - - - - - Web_Server - - - httpd-cgi.c - 1 - .\WebServer\httpd-cgi.c - - - http-strings.c - 1 - ..\Common\ethernet\FreeTCPIP\apps\httpd\http-strings.c - - - httpd.c - 1 - ..\Common\ethernet\FreeTCPIP\apps\httpd\httpd.c - - - httpd-fs.c - 1 - ..\Common\ethernet\FreeTCPIP\apps\httpd\httpd-fs.c - - - - - - - -
diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/ReadMe.txt b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/ReadMe.txt new file mode 100644 index 000000000..12c70d213 --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/ReadMe.txt @@ -0,0 +1 @@ +The third party uIP TCP/IP stack and the demo project that used to be in this directory was removed in FreeRTOS version V10.4.3 due to security vulnerabilities identified in uIP. In a future version this demo may be replaced by a version which does not use TCP/IP or uses FreeRTOS’s own TCP/IP stack in place of the original third party stack. \ No newline at end of file diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/WebServer/httpd-cgi.c b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/WebServer/httpd-cgi.c deleted file mode 100644 index 494396e4f..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/WebServer/httpd-cgi.c +++ /dev/null @@ -1,269 +0,0 @@ -/** - * \addtogroup httpd - * @{ - */ - -/** - * \file - * Web server script interface - * \author - * Adam Dunkels - * - */ - -/* - * Copyright (c) 2001-2006, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: httpd-cgi.c,v 1.2 2006/06/11 21:46:37 adam Exp $ - * - */ -#include "net/uip.h" -#include "net/psock.h" -#include "apps/httpd/httpd.h" -#include "apps/httpd/httpd-cgi.h" -#include "apps/httpd/httpd-fs.h" -#include "mss_ace.h" - -#include -#include - -#include "FreeRTOS.h" -#include "task.h" - -HTTPD_CGI_CALL( file, "file-stats", file_stats ); -HTTPD_CGI_CALL( tcp, "tcp-connections", tcp_stats ); -HTTPD_CGI_CALL( net, "net-stats", net_stats ); -HTTPD_CGI_CALL( rtos, "rtos-stats", rtos_stats ); -HTTPD_CGI_CALL( run, "run-time", run_time ); -HTTPD_CGI_CALL( io, "led-io", led_io ); - -static const struct httpd_cgi_call *calls[] = { &file, &tcp, &net, &rtos, &run, &io, NULL }; - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( nullfunction ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - ( void ) PT_YIELD_FLAG; - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -httpd_cgifunction httpd_cgi( char *name ) -{ - const struct httpd_cgi_call **f; - - /* Find the matching name in the table, return the function. */ - for( f = calls; *f != NULL; ++f ) - { - if( strncmp((*f)->name, name, strlen((*f)->name)) == 0 ) - { - return( *f )->function; - } - } - - return nullfunction; -} - -/*---------------------------------------------------------------------------*/ -static unsigned short generate_file_stats( void *arg ) -{ - char *f = ( char * ) arg; - return sprintf( ( char * ) uip_appdata, "%5u", httpd_fs_count(f) ); -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( file_stats ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - - ( void ) PT_YIELD_FLAG; - - PSOCK_GENERATOR_SEND( &s->sout, generate_file_stats, strchr(ptr, ' ') + 1 ); - - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -static const char closed[] = /* "CLOSED",*/ { 0x43, 0x4c, 0x4f, 0x53, 0x45, 0x44, 0 }; -static const char syn_rcvd[] = /* "SYN-RCVD",*/ { 0x53, 0x59, 0x4e, 0x2d, 0x52, 0x43, 0x56, 0x44, 0 }; -static const char syn_sent[] = /* "SYN-SENT",*/ { 0x53, 0x59, 0x4e, 0x2d, 0x53, 0x45, 0x4e, 0x54, 0 }; -static const char established[] = /* "ESTABLISHED",*/ { 0x45, 0x53, 0x54, 0x41, 0x42, 0x4c, 0x49, 0x53, 0x48, 0x45, 0x44, 0 }; -static const char fin_wait_1[] = /* "FIN-WAIT-1",*/ { 0x46, 0x49, 0x4e, 0x2d, 0x57, 0x41, 0x49, 0x54, 0x2d, 0x31, 0 }; -static const char fin_wait_2[] = /* "FIN-WAIT-2",*/ { 0x46, 0x49, 0x4e, 0x2d, 0x57, 0x41, 0x49, 0x54, 0x2d, 0x32, 0 }; -static const char closing[] = /* "CLOSING",*/ { 0x43, 0x4c, 0x4f, 0x53, 0x49, 0x4e, 0x47, 0 }; -static const char time_wait[] = /* "TIME-WAIT,"*/ { 0x54, 0x49, 0x4d, 0x45, 0x2d, 0x57, 0x41, 0x49, 0x54, 0 }; -static const char last_ack[] = /* "LAST-ACK"*/ { 0x4c, 0x41, 0x53, 0x54, 0x2d, 0x41, 0x43, 0x4b, 0 }; - -static const char *states[] = { closed, syn_rcvd, syn_sent, established, fin_wait_1, fin_wait_2, closing, time_wait, last_ack }; - -static unsigned short generate_tcp_stats( void *arg ) -{ - struct uip_conn *conn; - struct httpd_state *s = ( struct httpd_state * ) arg; - - conn = &uip_conns[s->count]; - return sprintf( ( char * ) uip_appdata, - "
\r\n", htons(conn->lport), - htons(conn->ripaddr.u16[0]) >> 8, htons(conn->ripaddr.u16[0]) & 0xff, htons(conn->ripaddr.u16[1]) >> 8, - htons(conn->ripaddr.u16[1]) & 0xff, htons(conn->rport), states[conn->tcpstateflags & UIP_TS_MASK], conn->nrtx, conn->timer, - (uip_outstanding(conn)) ? '*' : ' ', (uip_stopped(conn)) ? '!' : ' ' ); -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( tcp_stats ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - ( void ) PT_YIELD_FLAG; - for( s->count = 0; s->count < UIP_CONNS; ++s->count ) - { - if( (uip_conns[s->count].tcpstateflags & UIP_TS_MASK) != UIP_CLOSED ) - { - PSOCK_GENERATOR_SEND( &s->sout, generate_tcp_stats, s ); - } - } - - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -static unsigned short generate_net_stats( void *arg ) -{ - struct httpd_state *s = ( struct httpd_state * ) arg; - return sprintf( ( char * ) uip_appdata, "%5u\n", (( uip_stats_t * ) &uip_stat)[s->count] ); -} - -static PT_THREAD( net_stats ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - ( void ) PT_YIELD_FLAG; -#if UIP_STATISTICS - for( s->count = 0; s->count < sizeof(uip_stat) / sizeof(uip_stats_t); ++s->count ) - { - PSOCK_GENERATOR_SEND( &s->sout, generate_net_stats, s ); - } - -#endif /* UIP_STATISTICS */ - - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -extern void vTaskList( char *pcWriteBuffer ); -extern char *pcGetTaskStatusMessage( void ); -static char cCountBuf[128]; -long lRefreshCount = 0; -static unsigned short generate_rtos_stats( void *arg ) -{ - ( void ) arg; - lRefreshCount++; - sprintf( cCountBuf, "


Refresh count = %d


%s", ( int ) lRefreshCount, pcGetTaskStatusMessage() ); - vTaskList( ( char * ) uip_appdata ); - strcat( uip_appdata, cCountBuf ); - - return strlen( uip_appdata ); -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( rtos_stats ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - ( void ) PT_YIELD_FLAG; - PSOCK_GENERATOR_SEND( &s->sout, generate_rtos_stats, NULL ); - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -char *pcStatus; -unsigned long ulString; - -static unsigned short generate_io_state( void *arg ) -{ - extern long lParTestGetLEDState( unsigned long ulLED ); - unsigned short usRawVoltage; - const ace_channel_handle_t xVoltageChannel = ( ace_channel_handle_t ) 0; - - ( void ) arg; - - /* Are the dynamically setable LEDs currently on or off? */ - if( lParTestGetLEDState( 3 ) ) - { - pcStatus = "checked"; - } - else - { - pcStatus = ""; - } - - usRawVoltage = ( unsigned short ) ACE_get_ppe_sample( xVoltageChannel ); - sprintf( uip_appdata, "LED

Raw voltage input is %d", pcStatus, usRawVoltage ); - - return strlen( uip_appdata ); -} - -/*---------------------------------------------------------------------------*/ -extern void vTaskGetRunTimeStats( char *pcWriteBuffer ); -extern unsigned short usMaxJitter; -static unsigned short generate_runtime_stats( void *arg ) -{ - ( void ) arg; - lRefreshCount++; - sprintf( cCountBuf, "


Refresh count = %d", ( int ) lRefreshCount ); - - vTaskGetRunTimeStats( ( char * ) uip_appdata ); - strcat( uip_appdata, cCountBuf ); - - return strlen( uip_appdata ); -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( run_time ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - ( void ) PT_YIELD_FLAG; - PSOCK_GENERATOR_SEND( &s->sout, generate_runtime_stats, NULL ); - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( led_io ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - ( void ) PT_YIELD_FLAG; - PSOCK_GENERATOR_SEND( &s->sout, generate_io_state, NULL ); - PSOCK_END( &s->sout ); -} - -/** @} */ diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/WebServer/httpd-fs/404.html b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/WebServer/httpd-fs/404.html deleted file mode 100644 index 43e7f4cad..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/WebServer/httpd-fs/404.html +++ /dev/null @@ -1,8 +0,0 @@ - - -

-

404 - file not found

-

Go here instead.

-
- - \ No newline at end of file diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/WebServer/httpd-fs/index.html b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/WebServer/httpd-fs/index.html deleted file mode 100644 index 4937dc69a..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/WebServer/httpd-fs/index.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Loading index.shtml. Click here if not automatically redirected. - - - - - diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/WebServer/httpd-fs/index.shtml b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/WebServer/httpd-fs/index.shtml deleted file mode 100644 index 882d085ce..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/WebServer/httpd-fs/index.shtml +++ /dev/null @@ -1,20 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS Homepage | IO | 37K jpg -

-


-

-

Task statistics

-Page will refresh every 2 seconds.

-

Task          State  Priority  Stack	#
************************************************
-%! rtos-stats -
-
- - - diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/WebServer/httpd-fs/io.shtml b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/WebServer/httpd-fs/io.shtml deleted file mode 100644 index 819e2d39b..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/WebServer/httpd-fs/io.shtml +++ /dev/null @@ -1,28 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS Homepage | IO | 37K jpg -

-


-LED and LCD IO
- -

- -Use the check box to turn on or off LED 4, then click "Update IO". - - -

-
-%! led-io -

- - -

- - - - diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/WebServer/httpd-fs/runtime.shtml b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/WebServer/httpd-fs/runtime.shtml deleted file mode 100644 index 3464fd471..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/WebServer/httpd-fs/runtime.shtml +++ /dev/null @@ -1,20 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS Homepage | IO | 37K jpg -

-


-

-

Run-time statistics

-Page will refresh every 2 seconds.

-

Task            Abs Time      % Time
****************************************
-%! run-time -
-
- - - diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/WebServer/httpd-fs/stats.shtml b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/WebServer/httpd-fs/stats.shtml deleted file mode 100644 index f54118606..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/WebServer/httpd-fs/stats.shtml +++ /dev/null @@ -1,47 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS Homepage | IO | 37K jpg -

-


-

-

Network statistics

-
LocalRemoteStateRetransmissionsTimerFlags
%d%u.%u.%u.%u:%u%s%u%u%c %c
-
-IP           Packets received
-             Packets sent
-             Forwaded
-             Dropped
-IP errors    IP version/header length
-             IP length, high byte
-             IP length, low byte
-             IP fragments
-             Header checksum
-             Wrong protocol
-ICMP	     Packets received
-             Packets sent
-             Packets dropped
-             Type errors
-             Checksum errors
-TCP          Packets received
-             Packets sent
-             Packets dropped
-             Checksum errors
-             Data packets without ACKs
-             Resets
-             Retransmissionsa
-             Syn to closed port
-UDP          Packets dropped
-             Packets received
-             Packets sent
-             Packets chkerr
-	     No connection avaliable
-
%! net-stats
-
- - - diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/WebServer/httpd-fs/tcp.shtml b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/WebServer/httpd-fs/tcp.shtml deleted file mode 100644 index 23dcdcae3..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/WebServer/httpd-fs/tcp.shtml +++ /dev/null @@ -1,21 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS Homepage | IO | 37K jpg -

-


-
-

Network connections

-

- - -%! tcp-connections - - - - - diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/WebServer/httpd-fsdata.c b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/WebServer/httpd-fsdata.c deleted file mode 100644 index 47823d100..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/WebServer/httpd-fsdata.c +++ /dev/null @@ -1,3871 +0,0 @@ -static const char data_404_html[] = { - /* /404.html */ - 0x2f, 0x34, 0x30, 0x34, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, 0xa, 0x20, 0x20, - 0x3c, 0x62, 0x6f, 0x64, 0x79, 0x20, 0x62, 0x67, 0x63, 0x6f, - 0x6c, 0x6f, 0x72, 0x3d, 0x22, 0x77, 0x68, 0x69, 0x74, 0x65, - 0x22, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x63, - 0x65, 0x6e, 0x74, 0x65, 0x72, 0x3e, 0xd, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x3c, 0x68, 0x31, 0x3e, 0x34, 0x30, - 0x34, 0x20, 0x2d, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x6e, - 0x6f, 0x74, 0x20, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x3c, 0x2f, - 0x68, 0x31, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x3c, 0x68, 0x33, 0x3e, 0x47, 0x6f, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x2f, 0x22, 0x3e, - 0x68, 0x65, 0x72, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x69, - 0x6e, 0x73, 0x74, 0x65, 0x61, 0x64, 0x2e, 0x3c, 0x2f, 0x68, - 0x33, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x2f, - 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x3e, 0xd, 0xa, 0x20, - 0x20, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xd, 0xa, - 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0}; - -static const char data_index_html[] = { - /* /index.html */ - 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x20, 0x6f, 0x6e, 0x4c, 0x6f, 0x61, 0x64, - 0x3d, 0x22, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x73, - 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x28, - 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x6c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x68, 0x72, 0x65, 0x66, 0x3d, - 0x27, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, - 0x6d, 0x6c, 0x27, 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x2c, - 0x31, 0x30, 0x30, 0x29, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x66, - 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, - 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xd, 0xa, 0x4c, - 0x6f, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x69, 0x6e, 0x64, - 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x2e, 0x20, - 0x20, 0x43, 0x6c, 0x69, 0x63, 0x6b, 0x20, 0x3c, 0x61, 0x20, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x68, - 0x65, 0x72, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x69, 0x66, - 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x61, 0x75, 0x74, 0x6f, 0x6d, - 0x61, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x6c, 0x79, 0x20, 0x72, - 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x65, 0x64, 0x2e, - 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xd, - 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xd, 0xa, - 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xd, 0xa, 0x3c, - 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, 0xa, 0xd, 0xa, -0}; - -static const char data_index_shtml[] = { - /* /index.shtml */ - 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x20, 0x6f, 0x6e, 0x4c, 0x6f, 0x61, 0x64, - 0x3d, 0x22, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x73, - 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x28, - 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x6c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x68, 0x72, 0x65, 0x66, 0x3d, - 0x27, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, - 0x6d, 0x6c, 0x27, 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x2c, - 0x32, 0x30, 0x30, 0x30, 0x29, 0x22, 0x3e, 0xd, 0xa, 0x3c, - 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, - 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xd, 0xa, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x53, 0x74, 0x61, - 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x72, 0x75, 0x6e, 0x74, 0x69, - 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x52, 0x75, 0x6e, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, - 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, - 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x54, 0x43, 0x50, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, - 0x6c, 0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, - 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, - 0x65, 0x65, 0x72, 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, - 0x2f, 0x22, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x20, 0x48, 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, - 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, - 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, - 0x66, 0x3d, 0x22, 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, - 0x6c, 0x22, 0x3e, 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0x20, - 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, - 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x6c, 0x6f, - 0x67, 0x6f, 0x2e, 0x6a, 0x70, 0x67, 0x22, 0x3e, 0x33, 0x37, - 0x4b, 0x20, 0x6a, 0x70, 0x67, 0x3c, 0x2f, 0x61, 0x3e, 0xd, - 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, - 0x3c, 0x68, 0x72, 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, - 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x32, 0x3e, 0x54, - 0x61, 0x73, 0x6b, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, - 0x74, 0x69, 0x63, 0x73, 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0xd, - 0xa, 0x50, 0x61, 0x67, 0x65, 0x20, 0x77, 0x69, 0x6c, 0x6c, - 0x20, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x20, 0x65, - 0x76, 0x65, 0x72, 0x79, 0x20, 0x32, 0x20, 0x73, 0x65, 0x63, - 0x6f, 0x6e, 0x64, 0x73, 0x2e, 0x3c, 0x70, 0x3e, 0xd, 0xa, - 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, - 0x3d, 0x22, 0x63, 0x6f, 0x75, 0x72, 0x69, 0x65, 0x72, 0x22, - 0x3e, 0x3c, 0x70, 0x72, 0x65, 0x3e, 0x54, 0x61, 0x73, 0x6b, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x53, 0x74, 0x61, 0x74, 0x65, 0x20, 0x20, 0x50, 0x72, 0x69, - 0x6f, 0x72, 0x69, 0x74, 0x79, 0x20, 0x20, 0x53, 0x74, 0x61, - 0x63, 0x6b, 0x9, 0x23, 0x3c, 0x62, 0x72, 0x3e, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x3c, 0x62, 0x72, 0x3e, - 0xd, 0xa, 0x25, 0x21, 0x20, 0x72, 0x74, 0x6f, 0x73, 0x2d, - 0x73, 0x74, 0x61, 0x74, 0x73, 0xd, 0xa, 0x3c, 0x2f, 0x70, - 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, - 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xd, - 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xd, 0xa, - 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, 0xa, 0xd, - 0xa, 0}; - -static const char data_io_shtml[] = { - /* /io.shtml */ - 0x2f, 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x6e, - 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, - 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x61, 0x20, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, - 0x61, 0x73, 0x6b, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x52, 0x75, 0x6e, - 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, 0x74, 0x61, 0x74, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x43, 0x50, - 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, - 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, - 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, 0x65, 0x65, 0x72, - 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x22, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x20, 0x48, - 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, - 0x6a, 0x70, 0x67, 0x22, 0x3e, 0x33, 0x37, 0x4b, 0x20, 0x6a, - 0x70, 0x67, 0x3c, 0x2f, 0x61, 0x3e, 0xd, 0xa, 0x3c, 0x62, - 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x72, - 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x3e, 0x4c, 0x45, 0x44, 0x20, - 0x61, 0x6e, 0x64, 0x20, 0x4c, 0x43, 0x44, 0x20, 0x49, 0x4f, - 0x3c, 0x2f, 0x62, 0x3e, 0x3c, 0x62, 0x72, 0x3e, 0xd, 0xa, - 0xd, 0xa, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0xd, 0xa, 0x55, - 0x73, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x68, 0x65, - 0x63, 0x6b, 0x20, 0x62, 0x6f, 0x78, 0x20, 0x74, 0x6f, 0x20, - 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6f, 0x6e, 0x20, 0x6f, 0x72, - 0x20, 0x6f, 0x66, 0x66, 0x20, 0x4c, 0x45, 0x44, 0x20, 0x34, - 0x2c, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x20, 0x63, 0x6c, 0x69, - 0x63, 0x6b, 0x20, 0x22, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x20, 0x49, 0x4f, 0x22, 0x2e, 0xd, 0xa, 0xd, 0xa, 0xd, - 0xa, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x72, - 0x6d, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x22, 0x61, 0x46, - 0x6f, 0x72, 0x6d, 0x22, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x3d, 0x22, 0x2f, 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, - 0x6d, 0x6c, 0x22, 0x20, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, - 0x3d, 0x22, 0x67, 0x65, 0x74, 0x22, 0x3e, 0xd, 0xa, 0x25, - 0x21, 0x20, 0x6c, 0x65, 0x64, 0x2d, 0x69, 0x6f, 0xd, 0xa, - 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x69, 0x6e, 0x70, 0x75, - 0x74, 0x20, 0x74, 0x79, 0x70, 0x65, 0x3d, 0x22, 0x73, 0x75, - 0x62, 0x6d, 0x69, 0x74, 0x22, 0x20, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x3d, 0x22, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, - 0x49, 0x4f, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, - 0x72, 0x6d, 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, - 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, - 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, - 0xd, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, - 0xa, 0xd, 0xa, 0}; - -static const char data_logo_jpg[] = { - /* /logo.jpg */ - 0x2f, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, 0x6a, 0x70, 0x67, 0, - 0xff, 0xd8, 0xff, 0xe0, 00, 0x10, 0x4a, 0x46, 0x49, 0x46, - 00, 0x1, 0x1, 00, 00, 0x1, 00, 0x1, 00, 00, - 0xff, 0xdb, 00, 0x43, 00, 0x3, 0x2, 0x2, 0x3, 0x2, - 0x2, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x3, 0x4, 0x5, - 0x8, 0x5, 0x5, 0x4, 0x4, 0x5, 0xa, 0x7, 0x7, 0x6, - 0x8, 0xc, 0xa, 0xc, 0xc, 0xb, 0xa, 0xb, 0xb, 0xd, - 0xe, 0x12, 0x10, 0xd, 0xe, 0x11, 0xe, 0xb, 0xb, 0x10, - 0x16, 0x10, 0x11, 0x13, 0x14, 0x15, 0x15, 0x15, 0xc, 0xf, - 0x17, 0x18, 0x16, 0x14, 0x18, 0x12, 0x14, 0x15, 0x14, 0xff, - 0xdb, 00, 0x43, 0x1, 0x3, 0x4, 0x4, 0x5, 0x4, 0x5, - 0x9, 0x5, 0x5, 0x9, 0x14, 0xd, 0xb, 0xd, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0xff, 0xc0, - 00, 0x11, 0x8, 0x1, 0x8, 0x2, 0xc2, 0x3, 0x1, 0x22, - 00, 0x2, 0x11, 0x1, 0x3, 0x11, 0x1, 0xff, 0xc4, 00, - 0x1f, 00, 00, 0x1, 0x5, 0x1, 0x1, 0x1, 0x1, 0x1, - 0x1, 00, 00, 00, 00, 00, 00, 00, 00, 0x1, - 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb, - 0xff, 0xc4, 00, 0xb5, 0x10, 00, 0x2, 0x1, 0x3, 0x3, - 0x2, 0x4, 0x3, 0x5, 0x5, 0x4, 0x4, 00, 00, 0x1, - 0x7d, 0x1, 0x2, 0x3, 00, 0x4, 0x11, 0x5, 0x12, 0x21, - 0x31, 0x41, 0x6, 0x13, 0x51, 0x61, 0x7, 0x22, 0x71, 0x14, - 0x32, 0x81, 0x91, 0xa1, 0x8, 0x23, 0x42, 0xb1, 0xc1, 0x15, - 0x52, 0xd1, 0xf0, 0x24, 0x33, 0x62, 0x72, 0x82, 0x9, 0xa, - 0x16, 0x17, 0x18, 0x19, 0x1a, 0x25, 0x26, 0x27, 0x28, 0x29, - 0x2a, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x43, 0x44, - 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x53, 0x54, 0x55, 0x56, - 0x57, 0x58, 0x59, 0x5a, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, - 0x69, 0x6a, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, - 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x92, 0x93, - 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0xa2, 0xa3, 0xa4, - 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xb2, 0xb3, 0xb4, 0xb5, - 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, - 0xc7, 0xc8, 0xc9, 0xca, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, - 0xd8, 0xd9, 0xda, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, - 0xe8, 0xe9, 0xea, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, - 0xf8, 0xf9, 0xfa, 0xff, 0xc4, 00, 0x1f, 0x1, 00, 0x3, - 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 00, - 00, 00, 00, 00, 00, 0x1, 0x2, 0x3, 0x4, 0x5, - 0x6, 0x7, 0x8, 0x9, 0xa, 0xb, 0xff, 0xc4, 00, 0xb5, - 0x11, 00, 0x2, 0x1, 0x2, 0x4, 0x4, 0x3, 0x4, 0x7, - 0x5, 0x4, 0x4, 00, 0x1, 0x2, 0x77, 00, 0x1, 0x2, - 0x3, 0x11, 0x4, 0x5, 0x21, 0x31, 0x6, 0x12, 0x41, 0x51, - 0x7, 0x61, 0x71, 0x13, 0x22, 0x32, 0x81, 0x8, 0x14, 0x42, - 0x91, 0xa1, 0xb1, 0xc1, 0x9, 0x23, 0x33, 0x52, 0xf0, 0x15, - 0x62, 0x72, 0xd1, 0xa, 0x16, 0x24, 0x34, 0xe1, 0x25, 0xf1, - 0x17, 0x18, 0x19, 0x1a, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x35, - 0x36, 0x37, 0x38, 0x39, 0x3a, 0x43, 0x44, 0x45, 0x46, 0x47, - 0x48, 0x49, 0x4a, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, - 0x5a, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x73, - 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x82, 0x83, 0x84, - 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x92, 0x93, 0x94, 0x95, - 0x96, 0x97, 0x98, 0x99, 0x9a, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, - 0xa7, 0xa8, 0xa9, 0xaa, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, - 0xb8, 0xb9, 0xba, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, - 0xc9, 0xca, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, - 0xda, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, - 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xff, - 0xda, 00, 0xc, 0x3, 0x1, 00, 0x2, 0x11, 0x3, 0x11, - 00, 0x3f, 00, 0xfd, 0x53, 0xa2, 0x8a, 0x28, 00, 0xa2, - 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, - 00, 0xaa, 0xf7, 0xfa, 0x85, 0xb6, 0x95, 0x67, 0x2d, 0xd5, - 0xe4, 0xf1, 0xdb, 0x5b, 0x44, 0xa5, 0x9e, 0x59, 0x58, 0x2a, - 0xa8, 0x1e, 0xf5, 0xc6, 0x7c, 0x4e, 0xf8, 0xb3, 0xa6, 0xfc, - 0x39, 0xb4, 0x48, 0xb0, 0xb7, 0xda, 0xd5, 0xc6, 0x5, 0xb6, - 0x9e, 0x8d, 0x86, 0x72, 0x4e, 0x37, 0x37, 0xf7, 0x57, 0xf9, - 0xf6, 0xaa, 0x16, 0x5f, 0xd, 0x9f, 0xc6, 0xd0, 0xc5, 0xa9, - 0xf8, 0xc6, 0xe1, 0xef, 0xa6, 0x99, 0x3, 0xa6, 0x9e, 0x84, - 0xad, 0xbd, 0xb6, 0x7b, 0x2a, 0xf7, 0x3e, 0xe7, 0x9a, 0xe0, - 0xa9, 0x89, 0xbc, 0xdd, 0x1a, 0xb, 0x9a, 0x6b, 0x7e, 0xcb, - 0xd5, 0xfe, 0x9b, 0x9c, 0xb2, 0xaf, 0x79, 0x3a, 0x74, 0xb5, - 0x92, 0xdf, 0xb2, 0xf5, 0xff, 00, 0x23, 0x93, 0xf1, 0xa7, - 0xed, 0x5f, 0xa1, 0x69, 0x1b, 0xa1, 0xd0, 0x2d, 0x64, 0xd6, - 0x2e, 0x1, 0xc7, 0x9b, 0x26, 0x62, 0x84, 0x7d, 0xf, 0x53, - 0xf9, 0x57, 0x91, 0x6b, 0x5f, 0xb5, 0xf, 0x8e, 0x35, 0x49, - 0x9, 0xb7, 0xba, 0xb7, 0xd3, 0x23, 0xec, 0x96, 0xd0, 0x29, - 0xfd, 0x5b, 0x26, 0xbe, 0x92, 0x7f, 0x81, 0x1e, 0xb, 0x7f, - 0xf9, 0x84, 0x46, 0x3e, 0x95, 0xb, 0xfe, 0xcf, 0xfe, 0xa, - 0x93, 0xae, 0x96, 0xa3, 0xe8, 0x6b, 0xc2, 0xaf, 0x84, 0xcd, - 0xab, 0xbb, 0xba, 0xa9, 0x2e, 0xc9, 0xb5, 0xfa, 0x5c, 0xf0, - 0xb1, 0x18, 0x4c, 0xce, 0xbb, 0xd2, 0xb2, 0x8a, 0xec, 0xb4, - 0xff, 00, 0x82, 0x7c, 0x91, 0x3f, 0xc6, 0xf, 0x19, 0x5c, - 0x48, 0x5d, 0xfc, 0x45, 0x7e, 0x58, 0xf5, 0xc4, 0xb8, 0x1f, - 0x90, 0xa7, 0x27, 0xc6, 0x5f, 0x1a, 0x46, 0xca, 0x57, 0xc4, - 0x57, 0xc0, 0xaf, 0x23, 0xf7, 0x99, 0xfe, 0x95, 0xf5, 0x73, - 0xfe, 0xce, 0x9e, 0x9, 0x7f, 0xf9, 0x87, 0x15, 0xfa, 0x35, - 0x43, 0x27, 0xec, 0xd7, 0xe0, 0xa7, 0xe9, 0x67, 0x2a, 0xfd, - 0x1e, 0xbc, 0xcf, 0xec, 0x7c, 0xc5, 0x3b, 0xa9, 0xff, 00, - 0xe4, 0xcc, 0xf3, 0x3f, 0xb1, 0xf3, 0x1d, 0xd5, 0x6f, 0xc5, - 0x9f, 0x31, 0x2f, 0xc7, 0x9f, 0x1e, 0x29, 0xcf, 0xfc, 0x24, - 0x77, 0x47, 0xea, 0x10, 0xff, 00, 0x4a, 0x9e, 0x2f, 0xda, - 0x17, 0xc7, 0xd1, 0xc, 0xf, 0x10, 0xcc, 0x7b, 0xfc, 0xd0, - 0xc6, 0x7f, 0x9a, 0xd7, 0xd1, 0xed, 0xfb, 0x31, 0xf8, 0x34, - 0xe7, 0x10, 0xce, 0x7, 0xfb, 0xff, 00, 0xfd, 0x6a, 0x81, - 0xff, 00, 0x65, 0xcf, 0x8, 0x37, 0x4f, 0xb4, 0x83, 0xfe, - 0xf0, 0xa7, 0xfd, 0x99, 0x9a, 0xad, 0xaa, 0x7f, 0xe4, 0xcc, - 0x3f, 0xb2, 0xf3, 0x45, 0xb5, 0x6f, 0xc5, 0x9f, 0x3d, 0xff, - 00, 0xc3, 0x46, 0x7c, 0x40, 0xff, 00, 0xa0, 0xfb, 0xff, - 00, 0xe0, 0x3c, 0x5f, 0xfc, 0x4d, 0x48, 0xbf, 0xb4, 0x8f, - 0x8f, 0xd4, 0xe7, 0xfb, 0x6f, 0x3e, 0xc6, 0xda, 0x2f, 0xfe, - 0x26, 0xbd, 0xe9, 0xff, 00, 0x65, 0x6f, 0x9, 0xb6, 0x71, - 0x25, 0xd0, 0xff, 00, 0x81, 0xa, 0x85, 0xff, 00, 0x64, - 0xff, 00, 0xb, 0x30, 0xe2, 0xe6, 0xed, 0x4f, 0xd4, 0x51, - 0xfd, 0x9d, 0x9b, 0x2f, 0xb6, 0xff, 00, 0xf0, 0x26, 0x1f, - 0xd9, 0xd9, 0xb2, 0xda, 0xb7, 0xfe, 0x4c, 0xcf, 0x11, 0x5f, - 0xda, 0x63, 0xc7, 0xca, 0x79, 0xd5, 0xa3, 0x6f, 0x63, 0x6b, - 0x1f, 0xf8, 0x54, 0xcb, 0xfb, 0x50, 0x78, 0xf1, 0x40, 0x1f, - 0x6f, 0xb6, 0x3e, 0xe6, 0xd5, 0x2b, 0xd8, 0x5b, 0xf6, 0x49, - 0xf0, 0xd1, 0xe9, 0x7f, 0x76, 0xbe, 0xdc, 0x54, 0xf, 0xfb, - 0x22, 0xe8, 0x24, 0x7c, 0xba, 0xa5, 0xd0, 0x3f, 0xee, 0x8a, - 0x5f, 0x52, 0xce, 0x17, 0xda, 0x7f, 0xf8, 0x17, 0xfc, 0x10, - 0xfa, 0x8e, 0x70, 0xbf, 0xe5, 0xef, 0xfe, 0x4c, 0x79, 0x7a, - 0xfe, 0xd5, 0x9e, 0x38, 0x4, 0x66, 0x4d, 0x3d, 0xb1, 0xd8, - 0xda, 0xf5, 0xfd, 0x6a, 0x55, 0xfd, 0xac, 0x7c, 0x6a, 0xbd, - 0x53, 0x4c, 0x6f, 0xad, 0xb3, 0x7f, 0xf1, 0x55, 0xe8, 0xcf, - 0xfb, 0x21, 0x68, 0xe7, 0xee, 0xea, 0xd7, 0x3, 0xea, 0xa2, - 0xa0, 0x7f, 0xd9, 0x3, 0x4e, 0x39, 0xdb, 0xac, 0x4c, 0x3e, - 0xa8, 0x29, 0xfd, 0x5b, 0x39, 0x5f, 0x69, 0xff, 00, 0xe0, - 0x48, 0x3e, 0xa9, 0x9d, 0x2f, 0xf9, 0x79, 0xf8, 0x9c, 0x18, - 0xfd, 0xad, 0x3c, 0x67, 0xff, 00, 0x3c, 0x74, 0xbf, 0xfc, - 0x7, 0x6f, 0xfe, 0x2e, 0x9e, 0x3f, 0x6b, 0x6f, 0x18, 0x77, - 0xb6, 0xd2, 0xcf, 0xfd, 0xb0, 0x7f, 0xfe, 0x2e, 0xbb, 0x37, - 0xfd, 0x8f, 0xac, 0xff, 00, 0x87, 0x5a, 0x93, 0xf1, 0x41, - 0x50, 0xbf, 0xec, 0x7b, 0x11, 0xfb, 0xba, 0xe3, 0xf, 0xac, - 0x74, 0x7b, 0x1c, 0xe9, 0x75, 0x7f, 0x7a, 0x17, 0xd5, 0xf3, - 0xb5, 0xf6, 0xff, 00, 0x14, 0x72, 0xc9, 0xfb, 0x5d, 0x78, - 0xb1, 0x4f, 0xcd, 0x63, 0xa5, 0xb0, 0xf4, 0xf2, 0x9c, 0x7f, - 0xec, 0xd5, 0x62, 0x2f, 0xda, 0xff, 00, 0xc4, 0x8a, 0xb8, - 0x7d, 0x27, 0x4d, 0x73, 0xea, 0x3, 0x8f, 0xfd, 0x9a, 0xb6, - 0x9f, 0xf6, 0x3d, 0x71, 0x8d, 0x9a, 0xd8, 0x3f, 0x58, 0xea, - 0x17, 0xfd, 0x8f, 0xee, 0x81, 0x3b, 0x75, 0x98, 0xcf, 0xa6, - 0x52, 0xa7, 0x93, 0x3a, 0x5f, 0xcd, 0xf7, 0xa0, 0xf6, 0x79, - 0xe2, 0xfb, 0x5f, 0x91, 0x4d, 0x7f, 0x6c, 0x4d, 0x6c, 0x1, - 0xbb, 0x42, 0xb0, 0x27, 0xb9, 0xe, 0xe3, 0x35, 0x3a, 0x7e, - 0xd8, 0xda, 0x98, 0x3f, 0x37, 0x87, 0x6d, 0x8, 0xf6, 0xb8, - 0x61, 0xfd, 0x29, 0xad, 0xfb, 0x21, 0x6a, 0x40, 0x71, 0xaa, - 0xc2, 0x4f, 0xa6, 0xda, 0x85, 0xff, 00, 0x64, 0x4d, 0x60, - 0x1f, 0x97, 0x53, 0x80, 0xfe, 0x14, 0xef, 0x9d, 0xae, 0xff, - 00, 0x80, 0x7f, 0xc2, 0xe2, 0xeb, 0xf9, 0x17, 0x7, 0xed, - 0x8f, 0x7b, 0xdf, 0xc3, 0x56, 0xdf, 0x85, 0xd3, 0x7f, 0xf1, - 0x35, 0x22, 0xfe, 0xd8, 0xf7, 0x3c, 0x6e, 0xf0, 0xd4, 0x3e, - 0xf8, 0xba, 0x3f, 0xfc, 0x4d, 0x64, 0x37, 0xec, 0x8f, 0xaf, - 0x1, 0xf2, 0xdf, 0xdb, 0x93, 0xe8, 0x6a, 0x16, 0xfd, 0x92, - 0xfc, 0x48, 0xf, 0xcb, 0x75, 0x6c, 0x47, 0xae, 0xea, 0x4e, - 0xae, 0x74, 0xbf, 0x9b, 0xee, 0x42, 0xe7, 0xcf, 0x17, 0xfc, - 0x32, 0x3a, 0x45, 0xfd, 0xb1, 0xf9, 0xf9, 0xbc, 0x32, 0x31, - 0xed, 0x77, 0xff, 00, 0xd8, 0xd4, 0xf1, 0xfe, 0xd8, 0xf6, - 0xd8, 0x3b, 0xfc, 0x37, 0x26, 0x7b, 0x6d, 0xba, 0x1f, 0xfc, - 0x4d, 0x71, 0x6f, 0xfb, 0x29, 0x78, 0xa9, 0x46, 0x43, 0xdb, - 0x93, 0xe9, 0xbc, 0x54, 0x2f, 0xfb, 0x2c, 0x78, 0xb5, 0x71, - 0x81, 0x9, 0xfa, 0x38, 0xa5, 0xf5, 0x9c, 0xe5, 0x74, 0x97, - 0xfe, 0x2, 0xbf, 0xc8, 0x7e, 0xdf, 0x3b, 0x5f, 0x67, 0xf0, - 0x47, 0xa2, 0x45, 0xfb, 0x62, 0xe9, 0x45, 0x7, 0x99, 0xe1, - 0xeb, 0xb0, 0xfe, 0x8b, 0x3a, 0x11, 0xfc, 0xaa, 0xc2, 0x7e, - 0xd8, 0x3a, 0x1, 0xc6, 0xfd, 0xf, 0x50, 0x5f, 0x5c, 0x3a, - 0x1f, 0xeb, 0x5e, 0x58, 0xff, 00, 0xb2, 0xff, 00, 0x8c, - 0x57, 0x38, 0x82, 0x26, 0xc7, 0xfb, 0x62, 0xa2, 0x6f, 0xd9, - 0x97, 0xc6, 0x63, 0x18, 0xb4, 0x43, 0xf4, 0x71, 0x4f, 0xeb, - 0xb9, 0xc2, 0xfb, 0x2f, 0xff, 00, 0x1, 0xff, 00, 0x80, - 0x1f, 0x5a, 0xce, 0x97, 0xd8, 0xfc, 0x11, 0xeb, 0xa3, 0xf6, - 0xbe, 0xf0, 0xd7, 0x7d, 0x23, 0x53, 0x1f, 0xf7, 0xef, 0xff, - 00, 0x8a, 0xa7, 0xaf, 0xed, 0x79, 0xe1, 0x72, 0x39, 0xd2, - 0xf5, 0x31, 0xff, 00, 0x1, 0x4f, 0xfe, 0x2a, 0xbc, 0x61, - 0xff, 00, 0x66, 0xcf, 0x1a, 0xa6, 0x71, 0xa7, 0x86, 0xc7, - 0xa3, 0x8a, 0x85, 0xff, 00, 0x67, 0x5f, 0x1b, 0xa0, 0xcf, - 0xf6, 0x53, 0x1f, 0xa3, 0xa, 0x3f, 0xb4, 0x33, 0x65, 0xf6, - 0x5f, 0xfe, 0x3, 0xff, 00, 00, 0x5f, 0x5e, 0xce, 0x56, - 0xf4, 0xff, 00, 0x3, 0xdc, 0x47, 0xed, 0x71, 0xe1, 0x42, - 0x46, 0x74, 0xfd, 0x4c, 0xf, 0xf7, 0x13, 0xff, 00, 0x8a, - 0xa9, 0xe3, 0xfd, 0xac, 0xfc, 0x1e, 0xc4, 0xee, 0xb6, 0xd4, - 0x90, 0x7f, 0xd7, 0x15, 0x3f, 0xfb, 0x35, 0x78, 0x3, 0x7e, - 0xcf, 0xfe, 0x36, 0x52, 0x47, 0xf6, 0x3c, 0x9f, 0x81, 0x15, - 0xb, 0xfc, 0x9, 0xf1, 0xa2, 0xc, 0xff, 00, 0x63, 0x4c, - 0x7e, 0x98, 0xa5, 0xfd, 0xa7, 0x9a, 0x2d, 0xe2, 0xff, 00, - 0xf0, 0x16, 0x1f, 0xda, 0x39, 0xba, 0xde, 0x9f, 0xe0, 0x7d, - 0x19, 0x1f, 0xed, 0x59, 0xe0, 0x97, 0x5c, 0xb7, 0xf6, 0x8a, - 0x1f, 0x43, 0x6c, 0xf, 0xfe, 0xcd, 0x53, 0xaf, 0xed, 0x4b, - 0xe0, 0x43, 0x8c, 0xdc, 0x5e, 0x8f, 0xad, 0xab, 0x71, 0x5f, - 0x33, 0xb7, 0xc1, 0x2f, 0x19, 0x29, 0xff, 00, 0x90, 0x2d, - 0xc7, 0xe5, 0x50, 0x37, 0xc1, 0xcf, 0x18, 0x20, 0xc9, 0xd1, - 0x2e, 0x71, 0xec, 0xb5, 0x5f, 0xda, 0xf9, 0x92, 0xde, 0x1f, - 0xf9, 0x2b, 0xf, 0xed, 0x5c, 0xd5, 0x6f, 0x4b, 0xf0, 0x7f, - 0xe6, 0x7d, 0x48, 0x3f, 0x69, 0xff, 00, 0x1, 0x1f, 0xf9, - 0x7f, 0xba, 0x1f, 0xf6, 0xe8, 0xff, 00, 0xe1, 0x4e, 0x1f, - 0xb4, 0xe7, 0x80, 0x4f, 0xfc, 0xc4, 0x6e, 0x7, 0xd6, 0xd1, - 0xff, 00, 0xc2, 0xbe, 0x54, 0x7f, 0x84, 0xde, 0x2d, 0x8f, - 0xae, 0x87, 0x77, 0xf8, 0x25, 0x40, 0xdf, 0xc, 0xfc, 0x50, - 0xa0, 0x93, 0xa3, 0x5d, 0xf1, 0xff, 00, 0x4c, 0xcd, 0x27, - 0x9d, 0x66, 0xb, 0xec, 0x2f, 0xfc, 0x5, 0xff, 00, 0x98, - 0xbf, 0xb6, 0x33, 0x35, 0xbd, 0x2f, 0xc1, 0xff, 00, 0x99, - 0xf5, 0xa8, 0xfd, 0xa5, 0xfc, 0x2, 0x46, 0x7f, 0xb5, 0x26, - 0x1f, 0x5b, 0x57, 0xff, 00, 0xa, 0x9d, 0x3f, 0x68, 0xdf, - 00, 0xb9, 0xc7, 0xf6, 0xd1, 0x5f, 0x76, 0xb7, 0x93, 0xff, - 00, 0x89, 0xaf, 0x8f, 0x9b, 0xe1, 0xe7, 0x89, 0x13, 0x19, - 0xd2, 0x2e, 0xc6, 0x7f, 0xe9, 0x99, 0xa8, 0xdb, 0xc0, 0xbe, - 0x20, 0x4c, 0xe7, 0x4a, 0xbb, 0x18, 0xeb, 0xfb, 0xb3, 0x4b, - 0xfb, 0x73, 0x1c, 0xb7, 0x82, 0xfb, 0x9f, 0xf9, 0x87, 0xf6, - 0xd6, 0x60, 0xb7, 0xa5, 0xf8, 0x3f, 0xf3, 0x3e, 0xcc, 0x8f, - 0xf6, 0x84, 0xf0, 0xc, 0x99, 0xff, 00, 0x89, 0xfc, 0x6b, - 0x8f, 0xef, 0x43, 0x20, 0xff, 00, 0xd9, 0x6a, 0x75, 0xf8, - 0xf1, 0xe0, 0x26, 0x50, 0x47, 0x88, 0xed, 0xb9, 0xf5, 0x57, - 0x1f, 0xd2, 0xbe, 0x27, 0x6f, 0x7, 0x6b, 0x8b, 0xd7, 0x4c, - 0xba, 0x1f, 0xf6, 0xcc, 0xd4, 0x6d, 0xe1, 0x6d, 0x65, 0x9, - 0x7, 0x4e, 0xba, 0x18, 0xff, 00, 0xa6, 0x66, 0x9f, 0xf6, - 0xfe, 0x2d, 0x6f, 0x5, 0xf7, 0x3f, 0xf3, 0x1f, 0xf6, 0xee, - 0x35, 0x6f, 0x47, 0xf0, 0x67, 0xdc, 0x23, 0xe3, 0x87, 0x81, - 0xf, 0xfc, 0xcc, 0xd6, 0x5f, 0x99, 0xff, 00, 0xa, 0x92, - 0x3f, 0x8d, 0x3e, 0x7, 0x90, 0x90, 0xbe, 0x26, 0xb0, 0xe3, - 0xd6, 0x4c, 0x7f, 0x4a, 0xf8, 0x54, 0xe8, 0x1a, 0xa2, 0x8c, - 0x9b, 0x1b, 0x80, 0x3f, 0xeb, 0x99, 0xa6, 0x1d, 0x1b, 0x51, - 0x5e, 0xb6, 0x93, 0x8f, 0xf8, 0x1, 0xa7, 0xfe, 0xb0, 0xe2, - 0x7f, 0x92, 0x3f, 0x8f, 0xf9, 0x87, 0xf6, 0xfe, 0x2f, 0xad, - 0x1f, 0xcc, 0xfb, 0xc9, 0x7e, 0x2f, 0x78, 0x2d, 0x86, 0x47, - 0x89, 0x74, 0xec, 0x7f, 0xd7, 0x61, 0x53, 0x47, 0xf1, 0x4f, - 0xc2, 0x12, 0x90, 0x17, 0xc4, 0x7a, 0x71, 0x27, 0xa7, 0xfa, - 0x42, 0xd7, 0xc0, 0xa7, 0x4b, 0xbe, 0x1d, 0x6d, 0xa5, 0x1f, - 0xf0, 0x3, 0x4d, 0x3a, 0x7d, 0xe2, 0xf5, 0xb7, 0x97, 0xfe, - 0xf8, 0x34, 0x7f, 0xac, 0x55, 0xfa, 0xc2, 0x3f, 0x88, 0xff, - 00, 0xd6, 0x1c, 0x42, 0xde, 0x8f, 0xe6, 0x7e, 0x82, 0xc3, - 0xf1, 0xb, 0xc3, 0x17, 0xd, 0xb6, 0x3f, 0x10, 0x69, 0xac, - 0x7a, 0xe3, 0xed, 0x28, 0x3f, 0xad, 0x5a, 0x4f, 0x17, 0xe8, - 0x52, 0x2e, 0x53, 0x59, 0xb0, 0x61, 0xea, 0x2e, 0x50, 0xff, - 00, 0x5a, 0xfc, 0xee, 0x36, 0xb7, 0x23, 0xac, 0x2e, 0x3f, - 0xe0, 0x26, 0x9a, 0x61, 0x98, 0x7f, 0xcb, 0x36, 0xfc, 0xaa, - 0xd7, 0x12, 0x54, 0xeb, 0x4d, 0x7d, 0xe5, 0x2e, 0x23, 0xab, - 0xd6, 0x8f, 0xe3, 0xff, 00, 00, 0xfd, 0x1c, 0x1a, 0xee, - 0x9a, 0x71, 0x8d, 0x42, 0xd4, 0xe7, 0xfe, 0x9b, 0x2f, 0xf8, - 0xd3, 0x86, 0xb3, 0xa7, 0x9e, 0x97, 0xd6, 0xc7, 0xfe, 0xdb, - 0x2f, 0xf8, 0xd7, 0xe7, 0x6, 0xc9, 0x47, 0xf0, 0x37, 0xe5, - 0x47, 0xef, 0x57, 0xb3, 0xa, 0xd3, 0xfd, 0x64, 0x97, 0xfc, - 0xfa, 0x5f, 0x7f, 0xfc, 0x1, 0xff, 00, 0xac, 0x92, 0xff, - 00, 0x9f, 0x3f, 0x8f, 0xfc, 0x3, 0xf4, 0x84, 0x6a, 0xb6, - 0x47, 0xa5, 0xe4, 0x7, 0xe9, 0x2a, 0xff, 00, 0x8d, 0x38, - 0x6a, 0x16, 0xad, 0x8c, 0x5c, 0xc2, 0x73, 0xe9, 0x20, 0xaf, - 0xcd, 0xc1, 0x24, 0xc3, 0xa1, 0x61, 0xf9, 0xd3, 0x85, 0xcd, - 0xc2, 0xf4, 0x77, 0x18, 0xff, 00, 0x68, 0xd3, 0x5c, 0x48, - 0xff, 00, 0xe7, 0xd7, 0xe3, 0xff, 00, 00, 0x7f, 0xeb, - 0x2f, 0x7a, 0x5f, 0x8f, 0xfc, 0x3, 0xf4, 0x95, 0x67, 0x8d, - 0xce, 0x16, 0x44, 0x63, 0xe8, 0x18, 0x1a, 0x7e, 0x47, 0xad, - 0x7e, 0x6d, 0xae, 0xa7, 0x7a, 0x87, 0x2b, 0x73, 0x32, 0x9f, - 0x51, 0x21, 0x1f, 0xd6, 0xa4, 0x1a, 0xe6, 0xa2, 0xbd, 0x2f, - 0x6e, 0x47, 0xd2, 0x66, 0xff, 00, 0x1a, 0xa5, 0xc4, 0x9d, - 0xe9, 0x7e, 0x3f, 0xf0, 0xa, 0xff, 00, 0x59, 0x63, 0xff, - 00, 0x3e, 0xbf, 0x1f, 0xf8, 0x7, 0xe9, 0x6, 0x45, 0x19, - 0xaf, 0xce, 0x31, 0xe2, 0x4d, 0x58, 0xc, 0xd, 0x4a, 0xf0, - 0xf, 0x69, 0xdf, 0xfc, 0x69, 0xc3, 0xc5, 0x3a, 0xc8, 0x3c, - 0x6a, 0x97, 0xc0, 0xff, 00, 0xd7, 0xc3, 0xff, 00, 0x8d, - 0x5f, 0xfa, 0xc7, 0x1f, 0xf9, 0xf5, 0xf8, 0xff, 00, 0xc0, - 0x1f, 0xfa, 0xcb, 0x4f, 0xfe, 0x7d, 0x3f, 0xbf, 0xfe, 0x1, - 0xfa, 0x35, 0x9a, 0x5a, 0xfc, 0xe8, 0x5f, 0x18, 0xeb, 0xb1, - 0xe4, 0x2e, 0xb1, 0x7e, 0xb9, 0xeb, 0x8b, 0x97, 0xe7, 0xf5, - 0xa9, 0x53, 0xc7, 0x7e, 0x22, 0x89, 0x76, 0xae, 0xb9, 0xa9, - 0x28, 0xf4, 0x17, 0x6f, 0xfe, 0x34, 0x7f, 0xac, 0x71, 0xff, - 00, 0x9f, 0x5f, 0x8f, 0xfc, 0x2, 0x97, 0x12, 0xd2, 0xeb, - 0x4d, 0xfd, 0xe7, 0xe8, 0x95, 0x15, 0xf9, 0xe8, 0x9f, 0x12, - 0xbc, 0x55, 0x19, 0x5, 0x7c, 0x43, 0xaa, 0x2, 0x3a, 0x7f, - 0xa5, 0xbf, 0xf8, 0xd4, 0xf1, 0xfc, 0x57, 0xf1, 0x84, 0x59, - 0xdb, 0xe2, 0x5d, 0x50, 0x67, 0xfe, 0x9e, 0x9f, 0xfc, 0x6a, - 0xd7, 0x11, 0xd3, 0xeb, 0x4d, 0xfd, 0xe8, 0xb5, 0xc4, 0x94, - 0x3a, 0xc1, 0xfe, 0x7, 0xe8, 0x25, 0x15, 0xf0, 00, 0xf8, - 0xc3, 0xe3, 0x40, 0x38, 0xf1, 0x3e, 0xa9, 0xff, 00, 0x81, - 0xd, 0x4f, 0x1f, 0x19, 0xbc, 0x6c, 0xe, 0x7f, 0xe1, 0x26, - 0xd4, 0x7f, 0xef, 0xf1, 0xaa, 0xff, 00, 0x58, 0xa8, 0xff, - 00, 0xcf, 0xb7, 0xf8, 0xf, 0xfd, 0x64, 0xc3, 0xff, 00, - 0x23, 0xfc, 0xf, 0xbf, 0x28, 0xaf, 0x82, 0x57, 0xe3, 0x8f, - 0x8e, 0x54, 0xe4, 0x78, 0x92, 0xf8, 0xfd, 0x5c, 0x7f, 0x85, - 0x4a, 0x9f, 0x1e, 0x3c, 0x74, 0x99, 0xc7, 0x88, 0xae, 0xcf, - 0xd7, 0x7, 0xfa, 0x53, 0xff, 00, 0x58, 0xa8, 0x7f, 0xcf, - 0xb9, 0x7e, 0x1f, 0xe6, 0x5a, 0xe2, 0x3c, 0x2f, 0xf2, 0xbf, - 0xc3, 0xfc, 0xcf, 0xbc, 0x68, 0xaf, 0x86, 0x23, 0xfd, 0xa1, - 0xfc, 0x7b, 0x18, 0x51, 0xfd, 0xbd, 0x23, 0x6d, 0xfe, 0xf4, - 0x48, 0x73, 0xf5, 0xe2, 0xac, 0xc7, 0xfb, 0x4a, 0xf8, 0xf6, - 0x37, 0xdd, 0xfd, 0xae, 0x8d, 0xec, 0xd6, 0xd1, 0x91, 0xfc, - 0xaa, 0xd7, 0x10, 0xe1, 0xba, 0xc2, 0x5f, 0x87, 0xf9, 0x96, - 0xb8, 0x8b, 0x9, 0xd9, 0xfd, 0xcb, 0xfc, 0xcf, 0xb7, 0xa8, - 0xaf, 0x8a, 0x17, 0xf6, 0x9f, 0xf1, 0xe8, 0x1c, 0xea, 0x36, - 0xed, 0xf5, 0xb4, 0x4f, 0xf0, 0xa7, 0x8f, 0xda, 0x8b, 0xc7, - 0x7f, 0xf3, 0xfb, 0x69, 0xff, 00, 0x80, 0xab, 0x57, 0xfe, - 0xb0, 0x61, 0x7b, 0x4b, 0xee, 0x5f, 0xe6, 0x57, 0xfa, 0xc3, - 0x83, 0xf3, 0xfb, 0xbf, 0xe0, 0x9f, 0x6a, 0x51, 0x5f, 0x17, - 0xaf, 0xed, 0x4f, 0xe3, 0x90, 0x46, 0x6e, 0x2c, 0xdb, 0xd8, - 0xdb, 0xa, 0x9e, 0x2f, 0xda, 0xb7, 0xc6, 0xb1, 0xb1, 0x2c, - 0x74, 0xf9, 0x6, 0x3a, 0x35, 0xb9, 0xfe, 0x86, 0x9f, 0xfa, - 0xc1, 0x84, 0xed, 0x2f, 0xbb, 0xfe, 0x9, 0x4b, 0x88, 0x30, - 0x5d, 0xdf, 0xdc, 0x7d, 0x93, 0x45, 0x7c, 0x7e, 0xbf, 0xb5, - 0xbf, 0x8b, 0x82, 0x80, 0x6d, 0x34, 0xb6, 0x3e, 0xbe, 0x4b, - 0xff, 00, 0xf1, 0x55, 0x3a, 0x7e, 0xd7, 0x9e, 0x29, 0xc, - 0xb, 0x69, 0xba, 0x5b, 0xe, 0xe3, 0x63, 0x8f, 0xfd, 0x9a, - 0xad, 0x67, 0xd8, 0x3f, 0x3f, 0xb8, 0xb5, 0x9f, 0x60, 0x7f, - 0x99, 0xfd, 0xc7, 0xd7, 0x34, 0x57, 0xc9, 0xab, 0xfb, 0x60, - 0xf8, 0x88, 0x67, 0x76, 0x8d, 0xa6, 0x1f, 0xa1, 0x90, 0x7f, - 0xec, 0xd4, 0xf1, 0xfb, 0x61, 0xeb, 0xdd, 0xf4, 0x3d, 0x37, - 0xfe, 0xfa, 0x93, 0xfc, 0x6a, 0xbf, 0xb7, 0x70, 0x5f, 0xcc, - 0xfe, 0xe6, 0x57, 0xf6, 0xee, 0x7, 0xf9, 0x9f, 0xdc, 0xcf, - 0xab, 0xe8, 0xaf, 0x94, 0xd7, 0xf6, 0xc4, 0xd6, 0xf8, 0xce, - 0x85, 0xa7, 0x9f, 0xa4, 0x8f, 0xfe, 0x35, 0x22, 0xfe, 0xd8, - 0x9a, 0xb6, 0x79, 0xd0, 0x2c, 0x88, 0xf6, 0x99, 0xe9, 0xff, - 00, 0x6e, 0x60, 0xbf, 0x99, 0xfd, 0xcc, 0x7f, 0xdb, 0x98, - 0x1f, 0xe7, 0xfc, 0x19, 0xf5, 0x45, 0x15, 0xf2, 0xf4, 0x7f, - 0xb6, 0x35, 0xe8, 0x5f, 0x9f, 0xc3, 0x76, 0xe5, 0xbd, 0x56, - 0xe9, 0x80, 0xff, 00, 0xd0, 0x6a, 0x65, 0xfd, 0xb2, 0x26, - 0xe3, 0x3e, 0x18, 0x8f, 0xdf, 0x17, 0x87, 0xff, 00, 0x88, - 0xaa, 0x59, 0xde, 0x7, 0xf9, 0xff, 00, 0x7, 0xfe, 0x45, - 0x2c, 0xeb, 0x2, 0xff, 00, 0xe5, 0xe7, 0xe0, 0xff, 00, - 0xc8, 0xfa, 0x6e, 0x8a, 0xf9, 0xba, 0x3f, 0xdb, 0x22, 0xc, - 0xfc, 0xfe, 0x17, 0x90, 0xf, 0xf6, 0x6f, 0x47, 0xff, 00, - 0x11, 0x5b, 0xda, 0x47, 0xed, 0x6f, 0xe1, 0x6b, 0xb8, 0xd7, - 0xed, 0xf6, 0x37, 0xf6, 0x12, 0x13, 0x82, 0x15, 0x56, 0x55, - 0x3, 0xd7, 0x20, 0x83, 0xfa, 0x56, 0xb0, 0xcd, 0xf0, 0x33, - 0x76, 0x55, 0x3f, 0x35, 0xf9, 0xa3, 0x58, 0x66, 0xd8, 0x29, - 0xbb, 0x2a, 0x8b, 0xf1, 0x5f, 0x99, 0xee, 0x74, 0x57, 0x31, - 0xe1, 0xaf, 0x89, 0x9e, 0x17, 0xf1, 0x7b, 0x4, 0xd2, 0x75, - 0xbb, 0x4b, 0xb9, 0x8f, 0x3e, 0x4e, 0xfd, 0xb2, 0x7f, 0xdf, - 0x2d, 0x83, 0xfa, 0x57, 0x4f, 0x5e, 0xac, 0x2a, 0x42, 0xa2, - 0xe6, 0x83, 0xba, 0xf2, 0x3d, 0x48, 0x4e, 0x15, 0x17, 0x34, - 0x1d, 0xd7, 0x90, 0x51, 0x45, 0x15, 0x65, 0x85, 0x14, 0x51, - 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, - 0x14, 0x51, 0x40, 0x5, 0x70, 0x7f, 0x18, 0x7e, 0x28, 0xdb, - 0x7c, 0x2f, 0xf0, 0xc3, 0xdd, 0xfe, 0xee, 0x7d, 0x4e, 0x73, - 0xe5, 0xda, 0x5a, 0xbb, 0x63, 0x7b, 0x77, 0x62, 0x3a, 0xed, - 0x1d, 0x4f, 0xe0, 0x3b, 0xd7, 0x75, 0x24, 0x8b, 0x12, 0x33, - 0xbb, 0x5, 0x45, 0x4, 0x96, 0x3d, 00, 0xaf, 0x82, 0x7e, - 0x32, 0x7c, 0x40, 0x7f, 0x88, 0xde, 0x3a, 0xbd, 0xbf, 0x57, - 0x26, 0xc2, 0x13, 0xf6, 0x7b, 0x34, 0xcf, 0x2, 0x35, 0x3d, - 0x7f, 0xe0, 0x47, 0x27, 0xf1, 0xaf, 0x17, 0x35, 0xc6, 0xbc, - 0x1d, 0xf, 0x73, 0xe2, 0x96, 0x8b, 0xfc, 0xcf, 0xf, 0x37, - 0xc7, 0xfd, 0x46, 0x87, 0xb9, 0xf1, 0xcb, 0x45, 0xfe, 0x7f, - 0x23, 0xa3, 0xf8, 0x39, 0xa7, 0xea, 0x1f, 0x13, 0x7e, 0x2a, - 0xc5, 0xa9, 0x6a, 0x92, 0xbd, 0xe3, 0xac, 0x86, 0xe2, 0x79, - 0x24, 0x39, 0xfa, 0xf, 0x61, 0xe8, 0x2b, 0xed, 0x40, 0x2, - 0x80, 0x7, 00, 0x57, 0x83, 0xfe, 0xca, 0x7e, 0x10, 0xfe, - 0xcc, 0xf0, 0xd5, 0xce, 0xb1, 0x34, 0x78, 0x9a, 0xe9, 0xf6, - 0xa1, 0x23, 0xf8, 0x45, 0x7b, 0xcd, 0x63, 0x92, 0x50, 0x74, - 0xb0, 0xbe, 0xd2, 0x5b, 0xcd, 0xdf, 0xfc, 0x83, 0x27, 0xa0, - 0xe9, 0x61, 0x54, 0xa7, 0xf1, 0x4b, 0x56, 0x14, 0x51, 0x45, - 0x7d, 0x1, 0xee, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x84, - 0x64, 0x70, 0x71, 0xef, 0x40, 0x18, 0x1c, 0x92, 0x7e, 0xb4, - 00, 0xb4, 0x53, 0x2, 0xed, 0x39, 0xde, 0x48, 0xf4, 0x3d, - 0x29, 0xc0, 0x83, 0xd0, 0xe6, 0x80, 0x16, 0x8a, 0x28, 0xa0, - 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, - 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, - 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, - 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x93, 0x2, 0x96, - 0x8a, 00, 0x4c, 0xf, 0x4a, 0x4d, 0x8a, 0x7b, 0xf, 0xca, - 0x9d, 0x45, 00, 0x37, 0xca, 0x43, 0xfc, 0xb, 0xf9, 0x53, - 0x4c, 0x11, 0x1e, 0xb1, 0xa7, 0xfd, 0xf2, 0x2a, 0x4a, 0x29, - 0x58, 0x8, 0xbe, 0xcb, 0xf, 0xfc, 0xf1, 0x8f, 0xfe, 0xf9, - 0x14, 0xd3, 0x65, 0x6e, 0x7a, 0xc1, 0x17, 0xfd, 0xf0, 0x2a, - 0x7a, 0x28, 0xb2, 0x15, 0x91, 0x59, 0xb4, 0xeb, 0x46, 0xeb, - 0x6b, 0x9, 0xfa, 0xc6, 0x29, 0x87, 0x47, 0xb1, 0x6e, 0xb6, - 0x70, 0x1f, 0xac, 0x63, 0xfc, 0x2a, 0xe5, 0x14, 0xb9, 0x63, - 0xd8, 0x2c, 0xbb, 0x19, 0xe7, 0x40, 0xd3, 0x1b, 0xad, 0x85, - 0xb1, 0xff, 00, 0xb6, 0x4b, 0xfe, 0x14, 0xc6, 0xf0, 0xce, - 0x92, 0xdd, 0x74, 0xdb, 0x53, 0xff, 00, 0x6c, 0x85, 0x69, - 0xd1, 0x4b, 0xd9, 0xc3, 0xb2, 0x17, 0x2c, 0x7b, 0x19, 0x7, - 0xc2, 0x3a, 0x2b, 0x75, 0xd2, 0xed, 0x4f, 0xfd, 0xb2, 0x15, - 0x1b, 0x78, 0x2b, 0x41, 0x73, 0x93, 0xa4, 0x59, 0x93, 0xef, - 0xa, 0xd6, 0xdd, 0x15, 0x3e, 0xca, 0x9b, 0xfb, 0x2b, 0xee, - 0x17, 0x24, 0x3b, 0x1c, 0xf3, 0x7c, 0x3f, 0xf0, 0xe3, 0x75, - 0xd1, 0xed, 0x3f, 0xef, 0xd0, 0xa8, 0x9b, 0xe1, 0xaf, 0x86, - 0x1f, 0xae, 0x8b, 0x69, 0xff, 00, 0x7e, 0xc5, 0x74, 0xd4, - 0x54, 0xfd, 0x5e, 0x8b, 0xfb, 0xb, 0xee, 0x44, 0xfb, 0x2a, - 0x6f, 0xec, 0xaf, 0xb8, 0xe4, 0xdf, 0xe1, 0x5f, 0x85, 0x5f, - 0x39, 0xd1, 0x6d, 0xb9, 0xff, 00, 0x60, 0x54, 0x2d, 0xf0, - 0x87, 0xc2, 0x4f, 0xd7, 0x45, 0xb7, 0xff, 00, 0xbe, 0x6b, - 0xb2, 0xa2, 0xa3, 0xea, 0xb4, 0x1f, 0xd8, 0x5f, 0x72, 0x17, - 0xb0, 0xa5, 0xfc, 0xab, 0xee, 0x38, 0x76, 0xf8, 0x2f, 0xe0, - 0xf7, 0xeb, 0xa3, 0x41, 0xf9, 0x54, 0x2f, 0xf0, 0x2f, 0xc1, - 0x8f, 0xff, 00, 0x30, 0x78, 0xc7, 0xd2, 0xbb, 0xea, 0x2a, - 0x5e, 0xb, 0xc, 0xf7, 0xa6, 0xbe, 0xe4, 0x4f, 0xd5, 0xa8, - 0xbf, 0xb0, 0xbe, 0xe3, 0xce, 0x9f, 0xe0, 0x17, 0x83, 0x1f, - 0xfe, 0x61, 0x6a, 0x3e, 0x86, 0xa0, 0x7f, 0xd9, 0xe3, 0xc1, - 0x8f, 0xff, 00, 0x2e, 0x4, 0x7d, 0xd, 0x7a, 0x65, 0x15, - 0xf, 0x1, 0x84, 0x7f, 0xf2, 0xe9, 0x7d, 0xc8, 0x9f, 0xaa, - 0x50, 0x7f, 0x61, 0x7d, 0xc7, 0x96, 0xbf, 0xec, 0xe1, 0xe0, - 0xd7, 0xff, 00, 0x97, 0x37, 0x1f, 0xf0, 0x2a, 0x81, 0xff, - 00, 0x66, 0x7f, 0x7, 0x37, 0xfc, 0xb0, 0x94, 0x7d, 0x1a, - 0xbd, 0x66, 0x8a, 0x9f, 0xec, 0xdc, 0x1b, 0xff, 00, 0x97, - 0x4b, 0xee, 0x23, 0xea, 0x58, 0x67, 0xff, 00, 0x2e, 0xd7, - 0xdc, 0x79, 0x3, 0xfe, 0xcb, 0xfe, 0xf, 0x7f, 0xe0, 0xb8, - 0x5f, 0xa3, 0xd4, 0xd, 0xfb, 0x2c, 0x78, 0x4c, 0xf4, 0x7b, - 0x81, 0xf8, 0x8a, 0xf6, 0x6a, 0x2a, 0x1e, 0x57, 0x82, 0x7f, - 0xf2, 0xe9, 0x12, 0xf0, 0x18, 0x57, 0xff, 00, 0x2e, 0xd7, - 0xdc, 0x78, 0x9b, 0xfe, 0xca, 0x7e, 0x16, 0x6e, 0x97, 0x17, - 0x23, 0xf1, 0x15, 0xb, 0xfe, 0xc9, 0xbe, 0x1b, 0x6f, 0xbb, - 0x79, 0x72, 0x3f, 0x2a, 0xf7, 0x2a, 0x2a, 0x7f, 0xb2, 0x70, - 0x3f, 0xf3, 0xe9, 0x12, 0xf2, 0xec, 0x23, 0xff, 00, 0x97, - 0x68, 0xf0, 0x76, 0xfd, 0x92, 0x74, 0x3, 0xd3, 0x50, 0xb9, - 0x1f, 0x80, 0xa8, 0x5b, 0xf6, 0x45, 0xd1, 0xf, 0x4d, 0x52, - 0xe0, 0x7f, 0xc0, 0x45, 0x7b, 0xf5, 0x15, 0x3f, 0xd9, 0x18, - 0x1f, 0xf9, 0xf7, 0xf9, 0x90, 0xf2, 0xbc, 0x1b, 0xff, 00, - 0x97, 0x68, 0xf9, 0xe9, 0xff, 00, 0x64, 0x2d, 0x2c, 0xfd, - 0xdd, 0x62, 0x7f, 0xc5, 0x5, 0x40, 0xff, 00, 0xb2, 0x5, - 0x97, 0xf0, 0xeb, 0x12, 0x7e, 0x28, 0x2b, 0xe8, 0xca, 0x2a, - 0x3f, 0xb1, 0xb0, 0x3f, 0xf3, 0xef, 0xf1, 0x7f, 0xe6, 0x4b, - 0xca, 0x70, 0x4f, 0xfe, 0x5d, 0xa3, 0xe6, 0xd6, 0xfd, 0x90, - 0x21, 0xfe, 0x1d, 0x65, 0xbf, 0x14, 0xa8, 0x5f, 0xf6, 0x40, - 0x3f, 0xc3, 0xac, 0x7e, 0x69, 0x5f, 0x4c, 0x51, 0x53, 0xfd, - 0x89, 0x81, 0xfe, 0x4f, 0xc5, 0x91, 0xfd, 0x91, 0x82, 0xff, - 00, 0x9f, 0x67, 0xcc, 0xf, 0xfb, 0x20, 0x4f, 0xfc, 0x3a, - 0xba, 0xfe, 0x2b, 0x50, 0xbf, 0xec, 0x83, 0x7e, 0x3e, 0xee, - 0xaf, 0x11, 0xfa, 0xad, 0x7d, 0x4b, 0x45, 0x4f, 0xf6, 0x1e, - 0x7, 0xf9, 0x5f, 0xde, 0xc9, 0x79, 0x36, 0x5, 0xfd, 0x83, - 0xe5, 0x37, 0xfd, 0x91, 0x35, 0x51, 0xd3, 0x53, 0x84, 0xfe, - 0x15, 0x3, 0xfe, 0xc9, 0x1a, 0xd8, 0xe9, 0x7d, 0xb, 0x57, - 0xd6, 0x74, 0x54, 0xbc, 0x87, 0x5, 0xd9, 0xfd, 0xec, 0x87, - 0x92, 0x60, 0x7f, 0x93, 0xf1, 0x3e, 0x46, 0x7f, 0xd9, 0x33, - 0xc4, 0x23, 0xa5, 0xd4, 0x7, 0xf1, 0xa8, 0x1f, 0xf6, 0x51, - 0xf1, 0x28, 0xfb, 0xb2, 0xc2, 0x7f, 0x1a, 0xfb, 0x2, 0x8a, - 0x8f, 0xec, 0xc, 0x1f, 0x9f, 0xde, 0x4f, 0xf6, 0x16, 0xb, - 0xf9, 0x7f, 0x13, 0xe3, 0x87, 0xfd, 0x95, 0x7c, 0x54, 0x3e, - 0xe9, 0x85, 0xbf, 0xe0, 0x42, 0xa1, 0x7f, 0xd9, 0x6f, 0xc5, - 0xeb, 0xd2, 0x38, 0x8f, 0xd1, 0xc5, 0x7d, 0x9b, 0x45, 0x4f, - 0xfa, 0xbf, 0x84, 0xee, 0xfe, 0xff, 00, 0xf8, 0x4, 0xff, - 00, 0x60, 0xe0, 0xbb, 0x3f, 0xbc, 0xf8, 0xad, 0xff, 00, - 0x66, 0x3f, 0x18, 0xaf, 0x4b, 0x64, 0x3f, 0xf0, 0x31, 0x50, - 0xbf, 0xec, 0xd7, 0xe3, 0x35, 0xff, 00, 0x97, 0x20, 0x7f, - 0xe0, 0x42, 0xbe, 0xda, 0xa2, 0xa7, 0xfd, 0x5e, 0xc3, 0x7f, - 0x34, 0xbf, 0xf, 0xf2, 0x23, 0xfd, 0x5f, 0xc1, 0xf9, 0xfd, - 0xe7, 0xc3, 0xcd, 0xfb, 0x39, 0xf8, 0xd1, 0x7f, 0xe6, 0x1a, - 0x4f, 0xfc, 0x8, 0x54, 0x2f, 0xfb, 0x3d, 0xf8, 0xd1, 0x7f, - 0xe6, 0x14, 0xe7, 0xf1, 0x15, 0xf7, 0x3d, 0x15, 0x3f, 0xea, - 0xee, 0x1f, 0xf9, 0xe5, 0xf8, 0x7f, 0x91, 0x3f, 0xea, 0xf6, - 0x13, 0xcf, 0xef, 0x3e, 0x12, 0x3f, 0x1, 0xbc, 0x6d, 0xb, - 0x6, 0x5d, 0x22, 0x60, 0xc3, 0xa3, 0x29, 0xc1, 0x15, 0xde, - 0x78, 0x43, 0xc6, 0xbf, 0x14, 0xfe, 0x15, 0x6c, 0x5d, 0x57, - 0x4c, 0xbc, 0xd7, 0x34, 0x55, 0xfb, 0xf0, 0x5d, 0x12, 0xd2, - 0xa2, 0xff, 00, 0xb1, 0x27, 0x5f, 0xc0, 0xe4, 0x7d, 0x2b, - 0xeb, 0x1a, 0x82, 0xf2, 0xde, 0x2b, 0x9b, 0x69, 0x12, 0x64, - 0x59, 0x10, 0xa9, 0xc8, 0x61, 0x5a, 0xd2, 0xc9, 0x56, 0x19, - 0xf3, 0xd0, 0xab, 0x24, 0xfe, 0x45, 0x53, 0xc8, 0xe9, 0xd0, - 0x7c, 0xf8, 0x7a, 0x92, 0x8b, 0xfe, 0xb7, 0xee, 0x73, 0xbe, - 00, 0xf8, 0x91, 0xa2, 0x7c, 0x48, 0xd2, 0x8d, 0xe6, 0x91, - 0x73, 0xba, 0x58, 0xf0, 0x2e, 0x2d, 0x24, 0xf9, 0x66, 0xb7, - 0x63, 0xfc, 0x2e, 0xbd, 0xbe, 0xbd, 0xd, 0x75, 0x35, 0xf1, - 0x7, 0xc4, 0x6d, 0x72, 0xff, 00, 0xe1, 0x4f, 0xc4, 0x43, - 0xae, 0x78, 0x66, 0x63, 0x69, 0x74, 0x24, 0xfd, 0xfc, 0x20, - 0xfe, 0xee, 0xe1, 0x1, 0xc9, 0x8d, 0xc7, 0x70, 0x7f, 0x31, - 0xda, 0xbe, 0xae, 0xf8, 0x4f, 0xf1, 0x3b, 0x4d, 0xf8, 0xb7, - 0xe0, 0xcb, 0x5d, 0x7f, 0x4d, 0x47, 0x80, 0x3b, 0x34, 0x53, - 0xda, 0xca, 0x46, 0xf8, 0x25, 0x5e, 0x19, 0xf, 0xaf, 0xa8, - 0x3d, 0xc1, 0x6, 0xbd, 0xc, 0xe, 0x35, 0x62, 0x79, 0xa9, - 0xcb, 0xe2, 0x8e, 0x8c, 0xe8, 0xc0, 0x66, 0x4a, 0xbd, 0x59, - 0x61, 0x6a, 0xe9, 0x52, 0x3f, 0x73, 0x5d, 0xd7, 0xea, 0x8e, - 0xc6, 0x8a, 0x28, 0xaf, 0x54, 0xf7, 0x42, 0x8a, 0x28, 0xa0, - 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0xf, 0x37, - 0xfd, 0xa0, 0x7c, 0x6a, 0x3c, 0x17, 0xf0, 0xd7, 0x51, 0x74, - 0x72, 0x97, 0x97, 0xe3, 0xec, 0x56, 0xfb, 0x4e, 0x8, 0x67, - 0x7, 0x24, 0x7d, 0x17, 0x26, 0xbe, 0x25, 0xd0, 0xb4, 0xb9, - 0x35, 0x8d, 0x56, 0xd2, 0xca, 0x15, 0xdc, 0xf3, 0x48, 0x10, - 0x1, 0x5e, 0xd3, 0xfb, 0x5a, 0xf8, 0xcb, 0xfb, 0x5b, 0xc6, - 0x16, 0x7e, 0x1f, 0x85, 0xf3, 0x6, 0x97, 0x1f, 0x99, 0x28, - 0x7, 0x83, 0x33, 0x8c, 0xfe, 0x8b, 0x8f, 0xfb, 0xe8, 0xd6, - 0x77, 0xec, 0xc3, 0xe1, 0x1, 0xaf, 0x78, 0xd8, 0x5f, 0x4d, - 0x1e, 0xeb, 0x7b, 0x25, 0x2f, 0x93, 0xd3, 0x77, 0x6a, 0xfc, - 0xf7, 0x33, 0x93, 0xc7, 0x63, 0xd6, 0x1e, 0x3b, 0x2d, 0x3f, - 0xcc, 0xfc, 0xef, 0x1e, 0xde, 0x63, 0x9a, 0x2a, 0x11, 0xda, - 0x3a, 0x7f, 0x9f, 0xf5, 0xe4, 0x7d, 0x67, 0xe1, 0x3d, 0x12, - 0x3f, 0xe, 0xf8, 0x72, 0xc3, 0x4f, 0x8d, 0x42, 0x88, 0x22, - 0x55, 0x38, 0xf5, 0xc7, 0x35, 0xaf, 0x45, 0x15, 0xfa, 0x4, - 0x62, 0xa1, 0x15, 0x18, 0xec, 0x8f, 0xd0, 0xa2, 0x94, 0x52, - 0x48, 0x28, 0xa2, 0x8a, 0xa2, 0x82, 0x8a, 0x2b, 0xcd, 0xbf, - 0x68, 0xaf, 0x8d, 0xda, 0x47, 0xec, 0xf1, 0xf0, 0x83, 0xc4, - 0x1e, 0x39, 0xd6, 0xe, 0xe8, 0xf4, 0xf8, 0x71, 0x6d, 0x6e, - 0x3e, 0xf5, 0xc5, 0xc3, 0x7c, 0xb1, 0x44, 0x3e, 0xac, 0x46, - 0x7d, 0x6, 0x4f, 0x6a, 00, 0xe7, 0x3f, 0x69, 0x9f, 0xda, - 0xf3, 0xe1, 0xf7, 0xec, 0xaf, 0xa0, 0x47, 0x79, 0xe2, 0xcb, - 0xe7, 0x9f, 0x55, 0xba, 0x52, 0xd6, 0x3a, 0x25, 0x88, 0xf, - 0x77, 0x73, 0x8e, 0xe0, 0x67, 0xa, 0x99, 0xfe, 0x36, 0x20, - 0x7d, 0x4f, 0x15, 0xf9, 0x5d, 0xf1, 0x87, 0xfe, 0xa, 0xd5, - 0xf1, 0x9b, 0xe2, 0x5, 0xc5, 0xdd, 0xbf, 0x85, 0xe5, 0xb1, - 0xf0, 0x1e, 0x90, 0xec, 0x44, 0x4b, 0xa7, 0xc2, 0x26, 0xbb, - 0x9, 0x9e, 0x37, 0x4d, 0x26, 0x46, 0x71, 0xfd, 0xd5, 0x5a, - 0xf9, 0xb3, 0x5d, 0xd7, 0xfc, 0x7d, 0xfb, 0x57, 0x7c, 0x67, - 0x4b, 0x8b, 0xc9, 0x2e, 0x3c, 0x4b, 0xe3, 0x3f, 0x11, 0xdd, - 0xac, 0x10, 0x44, 0xf, 00, 0x93, 0xf2, 0xc6, 0x83, 0xa2, - 0x46, 0xa3, 0x3c, 0x74, 00, 0x13, 0xea, 0x6b, 0xf4, 0x67, - 0xc1, 0x1f, 0xf0, 0x48, 0xaf, 0x87, 0xff, 00, 0xf, 0x7e, - 0x1c, 0xdf, 0x78, 0x9b, 0xe2, 0xf7, 0x8b, 0x75, 0x1b, 0xeb, - 0x9d, 0x3e, 0xca, 0x4b, 0xeb, 0xe8, 0x74, 0x69, 0x56, 0xda, - 0xd6, 0xd9, 0x11, 0xb, 0xb0, 0xe, 0xca, 0x59, 0xf0, 0x1, - 0xe7, 0xe5, 0xcf, 0xa5, 0x32, 0x6e, 0xde, 0xc7, 0xe7, 0x17, - 0x88, 0x7f, 0x68, 0xbf, 0x8a, 0x7e, 0x2b, 0xb9, 0x92, 0x7d, - 0x5b, 0xe2, 0x37, 0x8a, 0x2f, 0x64, 0x90, 0xe5, 0x83, 0xea, - 0xf3, 0x85, 0x27, 0xfd, 0xd0, 0xc0, 0xf, 0xca, 0xbf, 0x5a, - 0xbf, 0xe0, 0x92, 0x3e, 0xb, 0xd6, 0xed, 0xfe, 0x3, 0xea, - 0x3e, 0x39, 0xf1, 0x6, 0xad, 0xa9, 0x6a, 0xb7, 0x9e, 0x23, - 0xbe, 0x74, 0xb3, 0x17, 0xf7, 0x52, 0x4c, 0x22, 0xb6, 0x80, - 0x94, 0x1b, 0x43, 0x13, 0x8d, 0xd2, 0x79, 0x84, 0x91, 0xd4, - 0x5, 0xaf, 0xc7, 0x4d, 0x1b, 0xc3, 0x7f, 0xf0, 0x9e, 0xfc, - 0x44, 0xb2, 0xd0, 0x7c, 0x39, 0x6f, 0x24, 0x4b, 0xac, 0x6a, - 0x89, 0x67, 0xa7, 0xc1, 0x2b, 0x6f, 0x64, 0x12, 0xca, 0x16, - 0x30, 0xcd, 0x8e, 0x70, 0x18, 0x64, 0xfb, 0x13, 0x5f, 0xd1, - 0xcf, 0x86, 0xb4, 0x4d, 0x3, 0xf6, 0x7b, 0xf8, 0x2d, 0x65, - 0xa6, 0xc6, 0x52, 0xcf, 0xc3, 0xfe, 0x13, 0xd1, 0xc0, 0x67, - 0x3c, 0x1, 0x1c, 0x31, 0xe5, 0xdc, 0xfb, 0x9c, 0x12, 0x7d, - 0xcd, 0xc, 0x48, 0xf8, 0xf, 0xc4, 0x7f, 0xf0, 0x59, 0xa9, - 0xfc, 0x25, 0xe2, 0xcd, 0x6b, 0x42, 0xd4, 0x3e, 0x14, 0xab, - 0xcd, 0xa6, 0x5e, 0xcf, 0x65, 0x24, 0x90, 0x6b, 0x7c, 0x33, - 0x47, 0x23, 0x21, 0x20, 0x18, 0x7d, 0x56, 0xbe, 0xec, 0xfd, - 0x9c, 0x3e, 0x34, 0x47, 0xfb, 0x42, 0x7c, 0x1b, 0xf0, 0xff, - 00, 0x8f, 0x62, 0xd2, 0xdf, 0x46, 0x4d, 0x59, 0x24, 0x61, - 0x64, 0xf2, 0xf9, 0xa6, 0x3d, 0xb2, 0x32, 0x7d, 0xec, 0xc, - 0xe7, 0x6e, 0x7a, 0x77, 0xaf, 0xe7, 0x2f, 0xc6, 0x7a, 0xf9, - 0xf1, 0x5f, 0x8b, 0xf5, 0xdd, 0x6d, 0x86, 0xd6, 0xd4, 0xaf, - 0xe7, 0xbd, 0x23, 0xd0, 0xc9, 0x23, 0x3f, 0xfe, 0xcd, 0x5f, - 0xd1, 0x27, 0xec, 0x91, 0xf0, 0xfe, 0x4f, 0x85, 0xff, 00, - 0xb3, 0x57, 0xc3, 0x9f, 0xd, 0xce, 0x9e, 0x5d, 0xdd, 0xae, - 0x8d, 0x3, 0xdc, 0xaf, 0xa4, 0xd2, 0x2f, 0x99, 0x27, 0xfe, - 0x3c, 0xe6, 0x81, 0xa7, 0x73, 0xd6, 0xc9, 0xc0, 0xc9, 0xe0, - 0x57, 0xce, 0xda, 0xff, 00, 0xed, 0xf, 0xae, 0x43, 0xae, - 0x5f, 0x47, 0xa6, 0xc7, 0x64, 0xda, 0x7a, 0x4a, 0xcb, 0x9, - 0x96, 0x26, 0x2c, 0x54, 0x1c, 0x64, 0x9d, 0xc3, 0xaf, 0x5f, - 0xc6, 0xbd, 0x7b, 0xe2, 0x97, 0x89, 0x47, 0x85, 0xbc, 0x11, - 0xa9, 0x5d, 0xab, 0x6d, 0x9d, 0xd3, 0xc8, 0x87, 0xfd, 0xf7, - 0xe0, 0x7e, 0x5c, 0x9f, 0xc2, 0xbe, 0x40, 0xaf, 0x86, 0xe2, - 0x2c, 0xca, 0xae, 0x1a, 0x70, 0xa3, 0x42, 0x5c, 0xaf, 0x77, - 0x6f, 0xc3, 0xf5, 0x3c, 0x9c, 0x75, 0x79, 0x53, 0x6a, 0x10, - 0x76, 0x3d, 0x5d, 0x3f, 0x69, 0xf, 0x12, 0xaf, 0xde, 0xb3, - 0xd3, 0x9b, 0xfe, 0xd9, 0xb8, 0xff, 00, 0xd9, 0xaa, 0x74, - 0xfd, 0xa5, 0x75, 0xe1, 0xf7, 0xb4, 0xdd, 0x3d, 0xbe, 0x81, - 0xc7, 0xfe, 0xcd, 0x5e, 0x43, 0x45, 0x7c, 0x82, 0xce, 0x73, - 0x5, 0xff, 00, 0x2f, 0x5f, 0xe0, 0x79, 0x9f, 0x5a, 0xad, - 0xfc, 0xc7, 0xb3, 0x47, 0xfb, 0x4c, 0xea, 0x83, 0xef, 0xe8, - 0xb6, 0x8d, 0xfe, 0xec, 0xac, 0x3f, 0xc6, 0xa7, 0x4f, 0xda, - 0x72, 0xef, 0xf8, 0xbc, 0x3f, 0x9, 0xfa, 0x5d, 0x11, 0xff, - 00, 0xb2, 0xd7, 0x89, 0x51, 0x5a, 0x2c, 0xf3, 0x31, 0x5f, - 0xf2, 0xf7, 0xf0, 0x5f, 0xe4, 0x57, 0xd7, 0x2b, 0xff, 00, - 0x31, 0xee, 0xd1, 0x7e, 0xd3, 0x83, 0xfe, 0x5a, 0x78, 0x7f, - 0x1f, 0xee, 0xdd, 0x7f, 0xf6, 0x35, 0x66, 0x3f, 0xda, 0x6e, - 0xc8, 0xfd, 0xfd, 0xa, 0x71, 0xfe, 0xec, 0xea, 0x7f, 0xa5, - 0x78, 0x5, 0x15, 0xaa, 0xe2, 0xc, 0xc5, 0x7f, 0xcb, 0xcf, - 0xc1, 0x7f, 0x91, 0x5f, 0x5d, 0xaf, 0xfc, 0xdf, 0x91, 0xf4, - 0x3c, 0x7f, 0xb4, 0xc6, 0x90, 0x7e, 0xfe, 0x91, 0x7a, 0xbf, - 0xee, 0xb2, 0x1f, 0xeb, 0x5a, 0x56, 0x7f, 0xb4, 0x5f, 0x85, - 0xee, 0x8, 0x13, 0x45, 0x7f, 0x6b, 0xee, 0xf0, 0x86, 0x1f, - 0xf8, 0xeb, 0x1a, 0xf9, 0x9a, 0x8a, 0xd6, 0x3c, 0x47, 0x8f, - 0x8e, 0xed, 0x3f, 0x97, 0xf9, 0x14, 0xb1, 0xf5, 0x97, 0x53, - 0xec, 0x4d, 0x7, 0xe2, 0x67, 0x86, 0x7c, 0x48, 0xeb, 0x1d, - 0x8e, 0xaf, 0x3, 0x4c, 0xdd, 0x22, 0x97, 0x31, 0xb9, 0xfa, - 0x6, 0xc6, 0x7f, 0xa, 0xe9, 0xeb, 0xe1, 0x4a, 0xed, 0x7c, - 0x17, 0xf1, 0x6b, 0x5f, 0xf0, 0x6c, 0xa8, 0x89, 0x72, 0xd7, - 0xd6, 00, 0xfc, 0xd6, 0x97, 0x2c, 0x59, 0x71, 0xfe, 0xc9, - 0xea, 0xbf, 0x87, 0x1e, 0xd5, 0xed, 0xe1, 0x38, 0xa1, 0x36, - 0xa3, 0x8a, 0x85, 0xbc, 0xd7, 0xf9, 0x7f, 0xc1, 0x3a, 0xe9, - 0x66, 0x37, 0x76, 0xa8, 0xbe, 0xe3, 0xeb, 0x6a, 0x2b, 0x13, - 0xc2, 0x1e, 0x2f, 0xd3, 0xfc, 0x6b, 0xa3, 0xa6, 0xa1, 0xa7, - 0xc8, 0x4a, 0x13, 0xb6, 0x48, 0xdb, 0x86, 0x8d, 0xfb, 0xa9, - 0x15, 0xb7, 0x5f, 0x75, 0x4e, 0xa4, 0x6a, 0xc5, 0x4e, 0xe, - 0xe9, 0x9e, 0xc4, 0x64, 0xa4, 0xae, 0xb6, 0xa, 0xc0, 0xf1, - 0x17, 0x8e, 0xb4, 0x2f, 0x9, 0xdc, 0x43, 0x6, 0xab, 0xa8, - 0x25, 0xa4, 0xb3, 0x29, 0x74, 0x56, 0x56, 0x39, 00, 0xe3, - 0x3c, 0x3, 0x5b, 0xf5, 0xf2, 0x87, 0xc6, 0xed, 0x74, 0x6b, - 0x9f, 0x10, 0xaf, 0xc2, 0x36, 0xe8, 0xac, 0xc2, 0xda, 0xa7, - 0xfc, 0x7, 0xef, 0x7f, 0xe3, 0xc5, 0xab, 0xc8, 0xcd, 0xf3, - 0x7, 0x97, 0x61, 0xd5, 0x48, 0x24, 0xe4, 0xdd, 0x95, 0xce, - 0x5c, 0x55, 0x77, 0x42, 0x1c, 0xcb, 0x73, 0xe8, 0x4, 0xf8, - 0xb9, 0xe0, 0xf7, 0xe9, 0xaf, 0x5b, 0xf, 0xf7, 0xb7, 0xf, - 0xe6, 0x2a, 0x74, 0xf8, 0xa1, 0xe1, 0x37, 0xe9, 0xe2, 0xb, - 0x1f, 0xc6, 0x50, 0x2b, 0xe3, 0xca, 0x2b, 0xe3, 0x97, 0x14, - 0xe2, 0x7a, 0xd3, 0x8f, 0xe3, 0xfe, 0x67, 0x97, 0xfd, 0xa3, - 0x53, 0xb2, 0x3e, 0xca, 0x8f, 0xe2, 0x17, 0x86, 0x25, 0xfb, - 0xba, 0xfe, 0x9c, 0x7f, 0xed, 0xe5, 0x3f, 0xc6, 0xad, 0x47, - 0xe3, 0xd, 0xa, 0x6f, 0xb9, 0xac, 0xd8, 0x37, 0xd2, 0xe5, - 0x3f, 0xc6, 0xbe, 0x2b, 0xa2, 0xb5, 0x5c, 0x55, 0x5b, 0xad, - 0x25, 0xf7, 0xb2, 0xbf, 0xb4, 0x67, 0xd6, 0x27, 0xdb, 0x89, - 0xaf, 0x69, 0x92, 0x7d, 0xdd, 0x46, 0xd1, 0xbe, 0x93, 0xaf, - 0xf8, 0xd4, 0xc9, 0xa9, 0x5a, 0x49, 0xf7, 0x2e, 0xa0, 0x6f, - 0xa4, 0x80, 0xff, 00, 0x5a, 0xf8, 0x76, 0x8c, 0x91, 0x5a, - 0x2e, 0x2b, 0x97, 0x5a, 0x3f, 0x8f, 0xfc, 0x2, 0xbf, 0xb4, - 0x9f, 0xf2, 0xfe, 0x27, 0xdd, 0xb, 0x2a, 0x37, 0xdd, 0x75, - 0x3f, 0x43, 0x4e, 0xdc, 0x3d, 0x45, 0x7c, 0x30, 0x25, 0x75, - 0xe8, 0xec, 0x3e, 0x86, 0xa4, 0x4b, 0xeb, 0x98, 0xfe, 0xed, - 0xc4, 0xab, 0xf4, 0x72, 0x2b, 0x45, 0xc5, 0x6b, 0xad, 0x1f, - 0xfc, 0x9b, 0xfe, 0x1, 0x5f, 0xda, 0x5f, 0xdc, 0xfc, 0x7f, - 0xe0, 0x1f, 0x72, 0x51, 0x5f, 0x10, 0xa6, 0xb9, 0xa9, 0x47, - 0xf7, 0x75, 0xb, 0xa5, 0xfa, 0x4c, 0xdf, 0xe3, 0x52, 0xaf, - 0x89, 0xb5, 0x84, 0xfb, 0xba, 0xad, 0xf2, 0xfd, 0x2e, 0x5c, - 0x7f, 0x5a, 0xd1, 0x71, 0x5d, 0x3e, 0xb4, 0x5f, 0xdf, 0xff, - 00, 00, 0x7f, 0xda, 0x4b, 0xf9, 0x7f, 0x13, 0xed, 0x9a, - 0x2b, 0xe2, 0xc4, 0xf1, 0x96, 0xbf, 0x1f, 0xdd, 0xd7, 0x35, - 0x25, 0xfa, 0x5d, 0xc9, 0xfe, 0x35, 0xda, 0x7c, 0x25, 0xf1, - 0x7, 0x88, 0x75, 0xff, 00, 0x1e, 0xe9, 0x76, 0x93, 0x6b, - 0x3a, 0x84, 0xf6, 0xc1, 0xda, 0x59, 0x52, 0x4b, 0x97, 0x65, - 0x2a, 0xaa, 0x4e, 0x8, 0x27, 0xa6, 0x70, 0x3f, 0x1a, 0xe9, - 0xa1, 0xc4, 0xb4, 0xab, 0xd5, 0x8d, 0x25, 0x49, 0xde, 0x4d, - 0x2d, 0xd7, 0x53, 0x48, 0x63, 0xe3, 0x39, 0x28, 0xa8, 0xee, - 0x7d, 0x3f, 0x45, 0x14, 0x57, 0xd9, 0x1e, 0xa8, 0x51, 0x45, - 0x14, 00, 0x51, 0x5c, 0xf7, 0x88, 0xfc, 0x7f, 0xa0, 0x78, - 0x4f, 0x8d, 0x4f, 0x52, 0x86, 0x9, 0x7f, 0xe7, 0x8a, 0xe5, - 0xe4, 0xff, 00, 0xbe, 0x57, 0x26, 0xbc, 0xef, 0x5b, 0xfd, - 0xa5, 0x74, 0xcb, 0x70, 0xcb, 0xa5, 0xe9, 0x97, 0x17, 0x6f, - 0xd9, 0xee, 0x18, 0x44, 0xbf, 0x90, 0xc9, 0xfe, 0x55, 0xe6, - 0xe2, 0x33, 0x2c, 0x26, 0x17, 0x4a, 0xb5, 0x12, 0x7d, 0xb7, - 0x7f, 0x72, 0x39, 0xe7, 0x5e, 0x95, 0x3f, 0x8a, 0x47, 0xb2, - 0xd1, 0x5f, 0x34, 0x5f, 0x7e, 0xd1, 0x9e, 0x26, 0xb8, 0x63, - 0xf6, 0x78, 0x2c, 0x2d, 0x13, 0xb6, 0x22, 0x67, 0x23, 0xf1, - 0x2d, 0x8f, 0xd2, 0xb1, 0xae, 0x3e, 0x37, 0xf8, 0xce, 0x72, - 0x7f, 0xe2, 0x6d, 0xe5, 0x3, 0xda, 0x38, 0x23, 0x18, 0xff, - 00, 0xc7, 0x6b, 0xc5, 0x9f, 0x13, 0x60, 0x63, 0xf0, 0xa9, - 0x3f, 0x97, 0xf9, 0xb4, 0x72, 0x3c, 0xc2, 0x8a, 0xda, 0xec, - 0xfa, 0xbc, 0x8c, 0xd2, 0x79, 0x63, 0xdf, 0xf3, 0x35, 0xf2, - 0x2b, 0x7c, 0x5d, 0xf1, 0x83, 0x1c, 0x9d, 0x76, 0xe4, 0x7d, - 0x2, 0x8f, 0xe9, 0x52, 0x45, 0xf1, 0x8b, 0xc6, 0x31, 0x1c, - 0x8d, 0x72, 0x63, 0xfe, 0xf4, 0x68, 0xdf, 0xcd, 0x6b, 0xf, - 0xf5, 0xa3, 0x9, 0xfc, 0x92, 0xfc, 0x3f, 0xcc, 0x9f, 0xed, - 0x1a, 0x7d, 0x99, 0xf5, 0xc5, 0x15, 0xf2, 0xb5, 0xb7, 0xc7, - 0x9f, 0x18, 0xdb, 0xfd, 0xeb, 0xf8, 0x6e, 0x3f, 0xeb, 0xad, - 0xba, 0x7f, 0x40, 0x2b, 0x7f, 0x4d, 0xfd, 0xa5, 0x75, 0xa8, - 0x58, 0xb, 0xed, 0x32, 0xce, 0xe9, 0x7b, 0xf9, 0x25, 0xa2, - 0x3f, 0xa9, 0x61, 0x5d, 0x54, 0xf8, 0x93, 0x1, 0x3f, 0x8a, - 0xeb, 0xd5, 0x7f, 0x95, 0xcd, 0x16, 0x3e, 0x8b, 0xde, 0xe8, - 0xfa, 0x2a, 0x8a, 0xf2, 0xdd, 0x17, 0xf6, 0x87, 0xf0, 0xd6, - 0xa3, 0xb5, 0x6f, 0x52, 0xeb, 0x4c, 0x90, 0xf5, 0x32, 0x26, - 0xf4, 0xfc, 0xd7, 0x27, 0xf4, 0xaf, 0x45, 0xd2, 0xb5, 0x9b, - 0x1d, 0x72, 0xd5, 0x6e, 0x74, 0xfb, 0xb8, 0x6f, 0x20, 0x6e, - 0x8f, 0xb, 0x86, 0x1f, 0x8f, 0xa5, 0x7b, 0x98, 0x7c, 0x6e, - 0x1f, 0x15, 0xfc, 0x19, 0xa9, 0x7e, 0x7f, 0x76, 0xe7, 0x64, - 0x2a, 0xd3, 0xa9, 0xf0, 0x3b, 0x97, 0x68, 0xa2, 0x8a, 0xed, - 0x35, 0xa, 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa2, 0x80, 0xa, - 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa6, 0xbc, 0x8b, 0x12, 0x96, - 0x76, 0x8, 0xa3, 0xa9, 0x63, 0x81, 0x40, 0xe, 0xa2, 0xb0, - 0xb5, 0xf, 0x1d, 0xf8, 0x77, 0x4b, 0x24, 0x5d, 0x6b, 0x56, - 0x30, 0xb0, 0xea, 0xa6, 0x75, 0x27, 0xf2, 0x7, 0x35, 0x8b, - 0x71, 0xf1, 0xa7, 0xc1, 0xb6, 0xe7, 0x7, 0x5a, 0x47, 0xff, - 00, 0xae, 0x70, 0xc8, 0xff, 00, 0xc9, 0x6b, 0x92, 0x78, - 0xbc, 0x35, 0x3d, 0x27, 0x52, 0x2b, 0xd5, 0xa3, 0x27, 0x56, - 0x9c, 0x77, 0x92, 0xfb, 0xce, 0xde, 0x98, 0x5d, 0xb3, 0xf7, - 0xf, 0xe6, 0x2b, 0x82, 0x3f, 0x1d, 0xfc, 0x18, 0xf, 0xfc, - 0x84, 0xe4, 0x3f, 0xf6, 0xed, 0x2f, 0xff, 00, 0x13, 0x4a, - 0xbf, 0x1d, 0x7c, 0x18, 0xc7, 0xfe, 0x42, 0x8e, 0x3e, 0xb6, - 0xb2, 0xff, 00, 0xf1, 0x35, 0x8f, 0xf6, 0x8e, 0xb, 0xfe, - 0x7f, 0x47, 0xff, 00, 0x2, 0x44, 0xfb, 0x7a, 0x5f, 0xce, - 0xbe, 0xf3, 0xbe, 0xc9, 0xc7, 0x4a, 0x4d, 0xc7, 0xfb, 0xa7, - 0xf4, 0xae, 0x3e, 0xdf, 0xe3, 0xf, 0x83, 0xae, 0x7e, 0xee, - 0xb9, 0x2, 0x7f, 0xd7, 0x45, 0x74, 0xfe, 0x60, 0x56, 0xcd, - 0x8f, 0x8c, 0xb4, 0x1d, 0x4f, 0x1f, 0x65, 0xd6, 0x2c, 0x67, - 0x27, 0xa0, 0x59, 0xd7, 0x3f, 0x96, 0x6b, 0x78, 0x62, 0xb0, - 0xf5, 0x3e, 0xa, 0x89, 0xfa, 0x34, 0x5a, 0xa9, 0x9, 0x6d, - 0x24, 0x6c, 0xd1, 0x4d, 0x47, 0x59, 0x17, 0x2a, 0xc1, 0x87, - 0xa8, 0x39, 0xa7, 0x57, 0x51, 0xa0, 0x51, 0x45, 0x30, 0x31, - 0xf3, 0x4a, 0x9e, 0x98, 0xc8, 0x34, 00, 0xfa, 0x28, 0xa2, - 0x80, 0xa, 0x82, 0xf5, 0xfc, 0xbb, 0x39, 0xdb, 0xd1, 0x9, - 0xfd, 0x2a, 0x7a, 0xa3, 0xad, 0xbf, 0x97, 0xa4, 0x5d, 0xb1, - 0x38, 0xc4, 0x66, 0xa6, 0x4e, 0xc9, 0xb1, 0x3d, 0x13, 0x3e, - 0x1c, 0xf8, 0xdf, 0x37, 0xda, 0x3c, 0x49, 0x28, 0xeb, 0x82, - 0x6b, 0x2f, 0xf6, 0x63, 0xf8, 0x99, 0x27, 0xc3, 0x6f, 0x8d, - 0x16, 0xba, 0x44, 0xf2, 0x95, 0xd1, 0x3c, 0x4a, 0x45, 0xa4, - 0x88, 0x71, 0x84, 0xb8, 0x19, 0xf2, 0x9f, 0xdb, 0xba, 0x9f, - 0xf7, 0x85, 0x49, 0xf1, 0x56, 0x7f, 0x3f, 0xc4, 0xd7, 0x3d, - 0xf0, 0x4d, 0x78, 0x7, 0xc5, 0x7b, 0x89, 0x2c, 0xb4, 0xe1, - 0x75, 0x6e, 0xed, 0x15, 0xcd, 0xbb, 0x9, 0xa2, 0x91, 0x4e, - 0xa, 0xba, 0x9c, 0xa9, 0x1f, 0x88, 0xaf, 0xce, 0x32, 0xfa, - 0xce, 0x38, 0xc9, 0x49, 0x77, 0x67, 0xe3, 0x98, 0xbc, 0x4c, - 0xb0, 0xd9, 0xac, 0x31, 0x11, 0xe9, 0x24, 0xbe, 0x4f, 0x46, - 0x7e, 0xc0, 0x51, 0x5c, 0x1f, 0x80, 0xfe, 0x28, 0xe9, 0x5e, - 0x21, 0xf0, 0x37, 0x87, 0x75, 0x59, 0x2e, 0xcb, 0x49, 0x7d, - 0xa7, 0x5b, 0x5c, 0xb1, 0x2a, 0x72, 0x4b, 0xc4, 0xac, 0x7f, - 0x9d, 0x15, 0xfa, 0x45, 0xcf, 0xd8, 0xee, 0x99, 0xde, 0x51, - 0x45, 0x14, 0xc6, 0x14, 0x51, 0x45, 00, 0x15, 0x53, 0x56, - 0xd4, 0xed, 0xf4, 0x5d, 0x2e, 0xee, 0xfe, 0xea, 0x41, 0x15, - 0xb5, 0xb4, 0x4d, 0x2c, 0x8e, 0x7b, 0x2a, 0x8c, 0x9a, 0xb7, - 0x5e, 0x2b, 0xfb, 0x55, 0x78, 0xc4, 0x68, 0x1f, 0xf, 0x86, - 0x93, 0x13, 0xe2, 0xeb, 0x58, 0x93, 0xca, 0xc0, 0xff, 00, - 0x9e, 0x4b, 0x86, 0x73, 0xff, 00, 0xa0, 0x8f, 0xc6, 0xb9, - 0xb1, 0x35, 0x96, 0x1e, 0x8c, 0xaa, 0xbe, 0x88, 0xe4, 0xc5, - 0xd7, 0x58, 0x5a, 0x13, 0xac, 0xfa, 0x2f, 0xf8, 0x63, 0xe4, - 0xcf, 0x12, 0xeb, 0x93, 0xf8, 0xa7, 0xc4, 0x7a, 0x8e, 0xad, - 0x71, 0x8f, 0x3e, 0xfa, 0xe1, 0xe6, 0x60, 0x3a, 0xc, 0x9e, - 00, 0xf6, 0x3, 0x2, 0xbe, 0xc2, 0xfd, 0x9b, 0x3c, 0x23, - 0xff, 00, 0x8, 0xe7, 0x80, 0xa3, 0xb9, 0x91, 0x36, 0xdc, - 0x5e, 0xb1, 0x90, 0xe4, 0x73, 0xb7, 0xb5, 0x7c, 0x91, 0xe0, - 0x6f, 0xf, 0xc9, 0xe2, 0x6f, 0x14, 0x69, 0xda, 0x7c, 0x6a, - 0x5b, 0xcd, 0x95, 0x41, 0xc7, 0xa6, 0x79, 0xaf, 0xd0, 0x8d, - 0x32, 0xc2, 0x2d, 0x2f, 0x4f, 0xb7, 0xb4, 0x85, 0x42, 0x47, - 0xa, 0x4, 0x50, 0x3d, 0x85, 0x7c, 0x6e, 0x43, 0x45, 0xd6, - 0xaf, 0x3c, 0x4c, 0xfa, 0x7e, 0x6c, 0xf8, 0xfe, 0x1d, 0xa0, - 0xea, 0x4e, 0x78, 0xa9, 0xef, 0xfa, 0xbd, 0xcb, 0x54, 0x51, - 0x45, 0x7d, 0xd9, 0xf7, 0x61, 0x45, 0x14, 0x50, 0x1, 0x5f, - 0x98, 0xbf, 0xf0, 0x5b, 0x2f, 0x1d, 0xdc, 0x5a, 0xf8, 0x77, - 0xe1, 0xaf, 0x83, 0x62, 0x25, 0x6d, 0xaf, 0x6e, 0x6e, 0xb5, - 0x59, 0xf0, 0x48, 0xc9, 0x89, 0x52, 0x34, 0x7, 0xd4, 0x7e, - 0xf9, 0xcf, 0xe1, 0x5f, 0xa7, 0x55, 0xf9, 0xe5, 0xff, 00, - 0x5, 0x88, 0xf8, 0x15, 0xab, 0x78, 0xf7, 0xe1, 0x97, 0x86, - 0x3c, 0x79, 0xa2, 0x59, 0xcd, 0x7f, 0x2f, 0x85, 0xa6, 0x9a, - 0x2b, 0xf8, 0x60, 0x42, 0xcc, 0x96, 0x93, 0x5, 0x26, 0x5c, - 0xe, 0x70, 0x8f, 0x1a, 0xe7, 0xd0, 0x31, 0x3d, 0xa8, 0x13, - 0xd8, 0xf8, 0x57, 0xfe, 0x9, 0xbb, 0xf1, 0x4b, 0xc1, 0xff, - 00, 0x8, 0x7f, 0x6a, 0x4d, 0x1f, 0x5d, 0xf1, 0xb5, 0xec, - 0x1a, 0x5e, 0x92, 0xf6, 0x37, 0x36, 0x91, 0xea, 0x17, 0x23, - 0xf7, 0x56, 0xd3, 0xc8, 0xa0, 0x23, 0xb1, 0xfe, 0x10, 0x40, - 0x65, 0xdd, 0xdb, 0x77, 0x3c, 0x57, 0xe8, 0x87, 0xfc, 0x15, - 0x1f, 0xf6, 0x8d, 0xd2, 0x7c, 0x31, 0xfb, 0x2e, 0x36, 0x8b, - 0xe1, 0xed, 0x62, 0xcf, 0x51, 0xbb, 0xf1, 0xb4, 0xc2, 0xc2, - 0x29, 0x6c, 0xae, 0x16, 0x55, 0xfb, 0x2a, 0xe1, 0xe7, 0x70, - 0x54, 0x91, 0x82, 0x36, 0xa7, 0xfd, 0xb4, 0xaf, 0xc4, 0xea, - 0x37, 0x12, 00, 0xc9, 0xc0, 0xe8, 0x2a, 0xac, 0x45, 0xcf, - 0xb5, 0x7f, 0xe0, 0x94, 0x9f, 0xc, 0xb4, 0xcf, 0x13, 0xfe, - 0xd0, 0x57, 0x3e, 0x35, 0xd7, 0xee, 0x6d, 0xac, 0xf4, 0x4f, - 0x5, 0x59, 0x1b, 0xe3, 0x3d, 0xe4, 0x8b, 0x1c, 0x42, 0xe6, - 0x4c, 0xa4, 0x59, 0x66, 0xc0, 0xe0, 0x79, 0x8d, 0xf5, 0x51, - 0x5e, 0xd9, 0xff, 00, 0x5, 0x2f, 0xff, 00, 0x82, 0x80, - 0xf8, 0x77, 0xc6, 0x7e, 0x11, 0xbb, 0xf8, 0x4f, 0xf0, 0xd7, - 0x53, 0x8f, 0x59, 0xb6, 0xbe, 0x64, 0x3a, 0xd6, 0xbd, 0x65, - 0x29, 0x30, 0x6c, 0x56, 0xd, 0xf6, 0x78, 0x98, 0x7d, 0xfc, - 0x90, 0x37, 0x30, 0xf9, 0x71, 0xc7, 0x39, 0x38, 0xfc, 0xc0, - 0x12, 0xba, 0xc6, 0xd1, 0x87, 0x61, 0x1b, 0x10, 0x59, 0x1, - 0xe0, 0x91, 0xd3, 0x22, 0xbd, 0x33, 0xe0, 0x1f, 0xec, 0xe5, - 0xe3, 0x9f, 0xda, 0x43, 0xc6, 0x50, 0x78, 0x7f, 0xc1, 0xba, - 0x4c, 0x97, 0x44, 0xb7, 0xfa, 0x4e, 0xa3, 0x2a, 0x95, 0xb4, - 0xb3, 0x4e, 0xed, 0x2c, 0x98, 0xc0, 0xf6, 0x1d, 0x4f, 0x60, - 0x68, 0xb, 0xf4, 0x3b, 0xbf, 0xd8, 0x3f, 0xf6, 0x70, 0x9f, - 0xf6, 0x92, 0xf8, 0xff, 00, 0xa3, 0x69, 0x33, 0xc2, 0xe7, - 0xc3, 0x7a, 0x53, 0x2e, 0xa7, 0xac, 0x4e, 0x17, 0x2a, 0x21, - 0x46, 0x5, 0x62, 0xcf, 0x4c, 0xc8, 0xd8, 0x5c, 0x7a, 0x16, - 0x3d, 0xab, 0xfa, 0xd, 0x44, 0x58, 0x91, 0x51, 0x14, 0x2a, - 0xa8, 0xc0, 0x3, 0xa0, 0x15, 0xe2, 0xff, 00, 0xb2, 0x8f, - 0xec, 0xb7, 0xe1, 0xaf, 0xd9, 0x53, 0xe1, 0xa4, 0x3e, 0x1b, - 0xd1, 0x7f, 0xd3, 0x35, 0x3b, 0x82, 0x27, 0xd5, 0x75, 0x67, - 0x5c, 0x49, 0x79, 0x3e, 0x31, 0x9f, 0x64, 0x1d, 0x15, 0x7b, - 0xf, 0x72, 0x4d, 0x7b, 0x43, 0xba, 0xc6, 0x8c, 0xec, 0x42, - 0xaa, 0x8c, 0x92, 0x7b, 0xa, 0x96, 0xcb, 0x4a, 0xc7, 0x81, - 0xfe, 0xd2, 0x9e, 0x23, 0x13, 0x5e, 0xe9, 0x9a, 0x24, 0x6f, - 0x91, 0x8, 0x37, 0x33, 0x1, 0xfd, 0xe3, 0xc2, 0x8f, 0xcb, - 0x77, 0xe7, 0x5e, 0x25, 0x5b, 0xbe, 0x39, 0xd7, 0xcf, 0x8a, - 0x3c, 0x5b, 0xaa, 0x6a, 0x79, 0x26, 0x39, 0xa6, 0x3e, 0x5e, - 0x7f, 0xb8, 0x3e, 0x55, 0xfd, 00, 0xac, 0x2a, 0xfc, 0x4b, - 0x33, 0xc4, 0xfd, 0x6f, 0x17, 0x52, 0xaf, 0x4b, 0xe9, 0xe8, - 0xb4, 0x47, 0xc9, 0x62, 0x2a, 0x7b, 0x5a, 0xb2, 0x90, 0x51, - 0x45, 0x15, 0xe6, 0x18, 0x16, 0xec, 0x74, 0x8b, 0xed, 0x50, - 0x39, 0xb3, 0xb2, 0xb8, 0xbb, 0x9, 0x8d, 0xde, 0x44, 0x4c, - 0xfb, 0x73, 0xd3, 0x38, 0x1c, 0x54, 0xd2, 0x78, 0x6f, 0x57, - 0x88, 0x65, 0xf4, 0xab, 0xd4, 0x1e, 0xad, 0x6c, 0xe3, 0xfa, - 0x57, 0xd2, 0x1f, 00, 0x74, 0xf, 0xec, 0x8f, 0x2, 0x47, - 0x74, 0xe9, 0xb6, 0x6d, 0x42, 0x56, 0x9c, 0x92, 0x39, 0xd8, - 0x3e, 0x55, 0xfd, 0x1, 0x3f, 0x8d, 0x7a, 0x55, 0x7d, 0xd6, - 0x13, 0x86, 0xa3, 0x88, 0xc3, 0xc2, 0xac, 0xea, 0x34, 0xe4, - 0xaf, 0x6b, 0x77, 0x3d, 0x8a, 0x58, 0x5, 0x38, 0x29, 0x39, - 0x5a, 0xe7, 0xc3, 0x12, 0xc1, 0x2c, 0x7, 0x12, 0xc6, 0xf1, - 0x9f, 0x47, 0x52, 0x2a, 0x3a, 0xfb, 0x96, 0xe2, 0xce, 0xde, - 0xed, 0xa, 0x4f, 0x4, 0x73, 0x21, 0xfe, 0x19, 0x10, 0x30, - 0xfd, 0x6b, 0x8c, 0xf1, 0x3f, 0xc1, 0xaf, 0xc, 0xf8, 0x8e, - 0xde, 0x40, 0x96, 0x11, 0xe9, 0xb7, 0x44, 0x1d, 0xb7, 0x16, - 0x6a, 0x10, 0x83, 0xee, 0xa3, 0x83, 0xf9, 0x54, 0xd6, 0xe1, - 0x6a, 0xb1, 0x57, 0xa3, 0x51, 0x3f, 0x26, 0xad, 0xfe, 0x62, - 0x9e, 0x5d, 0x24, 0xbd, 0xd9, 0x5c, 0xf9, 0x36, 0x8a, 0xd4, - 0xf1, 0x3f, 0x87, 0xae, 0x7c, 0x2b, 0xaf, 0x5e, 0x69, 0x57, - 0x78, 0x33, 0x5b, 0x3e, 0xd2, 0xcb, 0xd1, 0x81, 0x19, 0xc, - 0x3e, 0xa0, 0x83, 0x59, 0x75, 0xf1, 0x53, 0x84, 0xa9, 0xc9, - 0xc2, 0x4a, 0xcd, 0x68, 0x79, 0x2d, 0x34, 0xec, 0xc2, 0x8a, - 0x28, 0xa8, 0x11, 0xe9, 0xbf, 00, 0x3c, 0x49, 0x36, 0x93, - 0xe3, 0x68, 0xf4, 0xed, 0xc7, 0xec, 0xba, 0x8a, 0x32, 0x32, - 0x76, 0xe, 0xa0, 0xb2, 0x9f, 0xd0, 0x8f, 0xc6, 0xbe, 0x9e, - 0xaf, 0x92, 0xbe, 0xb, 0xda, 0x3d, 0xdf, 0xc4, 0xad, 0x1b, - 0x68, 0x24, 0x46, 0xcf, 0x23, 0x11, 0xd8, 0x4, 0x6f, 0xfe, - 0xb5, 0x7d, 0x6b, 0x5f, 0xa9, 0xf0, 0xcc, 0xe7, 0x2c, 0x13, - 0x52, 0xd9, 0x49, 0xdb, 0xee, 0x4c, 0xfa, 0x2c, 0xbd, 0xb7, - 0x49, 0xa7, 0xdc, 0xa5, 0xad, 0xea, 0x71, 0xe8, 0xda, 0x3d, - 0xed, 0xfc, 0xa7, 0x11, 0xdb, 0x42, 0xf2, 0x9c, 0xff, 00, - 0xb2, 0x9, 0xaf, 0x89, 0xae, 0xae, 0x64, 0xbd, 0xb9, 0x9a, - 0xe2, 0x56, 0xdd, 0x2c, 0xae, 0x64, 0x76, 0xf5, 0x24, 0xe4, - 0xd7, 0xda, 0x3e, 0x28, 0xf0, 0xf4, 0x3e, 0x2a, 0xd0, 0xee, - 0x74, 0xbb, 0x89, 0xa6, 0x82, 0xb, 0x80, 0x3, 0xbc, 0x4, - 0x6, 0xc0, 0x20, 0xe3, 0x90, 0x7d, 0x2b, 0xcd, 0xa4, 0xfd, - 0x9a, 0xb4, 0x16, 0xfb, 0x9a, 0x9e, 0xa0, 0xbf, 0x52, 0x87, - 0xff, 00, 0x65, 0xa8, 0xcf, 0x72, 0xfc, 0x5e, 0x61, 0x28, - 0x2a, 0x9, 0x72, 0xc6, 0xfd, 0x7a, 0xb1, 0x63, 0x28, 0x55, - 0xac, 0xd7, 0x22, 0xd1, 0x1f, 0x39, 0x51, 0x5f, 0x42, 0x49, - 0xfb, 0x33, 0x69, 0x87, 0xee, 0x6b, 0x57, 0x6b, 0xfe, 0xf4, - 0x6a, 0x6a, 0xb4, 0x9f, 0xb3, 0x1c, 0x7, 0xee, 0x6b, 0xf2, - 0xf, 0xf7, 0xad, 0x81, 0xff, 00, 0xd9, 0xab, 0xe4, 0x9f, - 0xf, 0xe6, 0x2b, 0xec, 0x7e, 0x2b, 0xfc, 0xcf, 0x33, 0xea, - 0x55, 0xfb, 0x7e, 0x27, 0x82, 0x51, 0x5e, 0x9b, 0xf1, 0x17, - 0xe0, 0xd2, 0x78, 0x3, 0x42, 0x1a, 0x8b, 0x6b, 0x3f, 0x6b, - 0x2f, 0x32, 0xc2, 0x90, 0xfd, 0x9f, 0x61, 0x62, 0x72, 0x7a, - 0xee, 0x3d, 00, 0x3d, 0xab, 0xcc, 0xab, 0xc7, 0xc4, 0xe1, - 0x6b, 0x60, 0xea, 0x7b, 0x2a, 0xca, 0xcf, 0xe4, 0xff, 00, - 0x23, 0x96, 0xa5, 0x39, 0x52, 0x97, 0x2c, 0xd6, 0xa1, 0x45, - 0x14, 0x57, 0x21, 0x98, 0x51, 0x45, 0x7a, 0x44, 0x1f, 00, - 0x7c, 0x55, 0x73, 0x6b, 0xd, 0xc4, 0x6b, 0x66, 0x56, 0x54, - 0x59, 0x2, 0x99, 0xc8, 0x20, 0x11, 0x9c, 0x1e, 0x3a, 0xd7, - 0x55, 0xc, 0x2d, 0x7c, 0x4d, 0xfd, 0x8c, 0x1c, 0xad, 0xbd, - 0x8d, 0x21, 0x4e, 0x75, 0x3e, 0x5, 0x73, 0xcd, 0xe8, 0xaf, - 0x46, 0x93, 0xe0, 0xf, 0x8c, 0x13, 0xa5, 0xa5, 0xb3, 0xff, - 00, 0xbb, 0x72, 0xb5, 0x56, 0x5f, 0x81, 0xfe, 0x32, 0x8b, - 0xa6, 0x94, 0x1f, 0xfd, 0xcb, 0x88, 0xff, 00, 0xf8, 0xaa, - 0xe8, 0x79, 0x6e, 0x35, 0x6f, 0x46, 0x5f, 0x73, 0x2f, 0xd8, - 0x55, 0x5f, 0x65, 0xfd, 0xc7, 0x7, 0x5e, 0xd3, 0xfb, 0x34, - 0x69, 0x3e, 0x6e, 0xaf, 0xab, 0xea, 0x4c, 0xbc, 0x43, 0xa, - 0xc0, 0x8d, 0xee, 0xc7, 0x27, 0xf4, 0x51, 0xf9, 0xd7, 0x12, - 0xff, 00, 0x7, 0x3c, 0x64, 0x9d, 0x74, 0x29, 0x8f, 0xfb, - 0xb2, 0x46, 0x7f, 0xf6, 0x6a, 0xf7, 0x9f, 0x82, 0x9e, 0x12, - 0xb9, 0xf0, 0x9f, 0x83, 0x84, 0x77, 0xd0, 0x1b, 0x6b, 0xeb, - 0x89, 0x9e, 0x59, 0x63, 0x6e, 0xab, 0xfc, 0x2a, 0xf, 0xe0, - 0x33, 0xf8, 0xd7, 0xb7, 0x91, 0xe0, 0x2b, 0xac, 0x74, 0x67, - 0x56, 0xd, 0x28, 0xdd, 0xea, 0x9a, 0xf2, 0xfd, 0x4e, 0xbc, - 0x1d, 0x19, 0xfb, 0x64, 0xe4, 0xad, 0x63, 0xbf, 0xa2, 0x8a, - 0xf3, 0x4f, 0x8a, 0xff, 00, 0x17, 0xa0, 0xf0, 0x54, 0x6d, - 0xa7, 0x69, 0xfb, 0x6e, 0x35, 0xa7, 0x5c, 0xf3, 0xca, 0x40, - 0xf, 0x76, 0xf5, 0x3e, 0x83, 0xf3, 0xf7, 0xfd, 0x27, 0x13, - 0x89, 0xa5, 0x84, 0xa4, 0xea, 0xd6, 0x76, 0x48, 0xf7, 0xea, - 0x54, 0x8d, 0x28, 0xf3, 0x49, 0xe8, 0x74, 0xde, 0x33, 0xf8, - 0x83, 0xa3, 0xf8, 0x1a, 0xd3, 0xcc, 0xd4, 0x2e, 0x33, 0x70, - 0xcb, 0x98, 0xad, 0x63, 0xe6, 0x59, 0x3e, 0x83, 0xb0, 0xf7, - 0x3c, 0x57, 0xcf, 0xde, 0x32, 0xf8, 0xe3, 0xaf, 0xf8, 0xa3, - 0x7c, 0x36, 0xaf, 0xfd, 0x91, 0x62, 0x4f, 0xfa, 0xbb, 0x66, - 0x3e, 0x63, 0xf, 0xf6, 0x9f, 0xaf, 0xe5, 0x8a, 0xe1, 0x35, - 0x3d, 0x4e, 0xef, 0x59, 0xbd, 0x96, 0xf2, 0xfa, 0xe2, 0x4b, - 0xab, 0x99, 0x4e, 0x5e, 0x49, 0xe, 0x49, 0xff, 00, 0x3e, - 0x95, 0x56, 0xbf, 0x2f, 0xcc, 0x33, 0xec, 0x46, 0x31, 0xb8, - 0x53, 0x7c, 0x90, 0xec, 0xb7, 0x7e, 0xac, 0xf9, 0xda, 0xf8, - 0xca, 0x95, 0x74, 0x8e, 0x88, 0x57, 0x76, 0x91, 0x8b, 0x33, - 0x16, 0x62, 0x72, 0x49, 0x39, 0x26, 0x92, 0x8a, 0x2b, 0xe6, - 0x4e, 00, 0xa2, 0x8a, 0x96, 0xde, 0xd2, 0x7b, 0xc7, 0xd9, - 0x4, 0x32, 0x4e, 0xdf, 0xdd, 0x8d, 0xb, 0x1f, 0xd2, 0x9a, - 0x4d, 0xbb, 0x20, 0x22, 0xa2, 0xb5, 0x47, 0x84, 0xb5, 0xc2, - 0x32, 0x34, 0x5d, 0x47, 0x1e, 0xbf, 0x64, 0x93, 0xfc, 0x2a, - 0x95, 0xd6, 0x9f, 0x75, 0x62, 0x71, 0x73, 0x6d, 0x35, 0xb9, - 0xf4, 0x96, 0x32, 0xbf, 0xce, 0xae, 0x54, 0xe7, 0x15, 0x79, - 0x45, 0xaf, 0x90, 0xdc, 0x5a, 0xdd, 0x15, 0xe8, 0xa2, 0x8a, - 0xcc, 0x41, 0x57, 0x34, 0xad, 0x66, 0xfb, 0x43, 0xba, 0x5b, - 0x9d, 0x3e, 0xee, 0x6b, 0x39, 0xd4, 0xe7, 0x7c, 0x2e, 0x57, - 0x3f, 0x5f, 0x5f, 0xa1, 0xaa, 0x74, 0x55, 0x46, 0x4e, 0x2f, - 0x9a, 0x2e, 0xcc, 0x13, 0x6b, 0x54, 0x7b, 0xef, 0xc3, 0xef, - 0xda, 0x9, 0x2e, 0xe5, 0x8e, 0xc7, 0xc4, 0xc1, 0x20, 0x73, - 0x85, 0x5b, 0xf8, 0xc6, 0x14, 0x9f, 0xf6, 0xc7, 0x6f, 0xa8, - 0xe3, 0xd8, 0x57, 0xb6, 0x47, 0x22, 0x4d, 0x1a, 0xc9, 0x1b, - 0x7, 0x46, 0x19, 0x56, 0x53, 0x90, 0x47, 0xa8, 0x35, 0xf0, - 0xb5, 0x7a, 0xc7, 0xc1, 0x9f, 0x8b, 0x12, 0x78, 0x76, 0xf2, - 0x1d, 0x17, 0x55, 0x98, 0xbe, 0x93, 0x2b, 0x6d, 0x8a, 0x47, - 0x3f, 0xf1, 0xee, 0xc7, 0xa7, 0x3f, 0xdd, 0x3f, 0xa7, 0xe7, - 0x5f, 0x77, 0x94, 0x67, 0xf2, 0xe6, 0x58, 0x7c, 0x63, 0xba, - 0x7b, 0x4b, 0xfc, 0xff, 00, 0xcf, 0xef, 0x3d, 0x9c, 0x2e, - 0x35, 0xdd, 0x42, 0xaf, 0xde, 0x7d, 0x27, 0x45, 0x20, 0x20, - 0x8c, 0x8e, 0x41, 0xa5, 0xaf, 0xd0, 0xcf, 0x70, 0x28, 0xa2, - 0xaa, 0xea, 0x7a, 0x9d, 0xb6, 0x8d, 0xa7, 0xcf, 0x7b, 0x79, - 0x32, 0xc1, 0x6d, 0x2, 0x17, 0x92, 0x46, 0xe8, 00, 0xa4, - 0xda, 0x8a, 0xbb, 0xd8, 0x4d, 0xdb, 0x56, 0x59, 0x66, 0x8, - 0xa5, 0x98, 0x80, 0x7, 0x24, 0x9e, 0xd5, 0xe6, 0xfe, 0x30, - 0xf8, 0xed, 0xa0, 0x78, 0x6f, 0x7c, 0x36, 0x4d, 0xfd, 0xb1, - 0x7a, 0x38, 0xd9, 0x6e, 0xd8, 0x8d, 0x4f, 0xbb, 0xf4, 0xfc, - 0xb3, 0x5e, 0x45, 0xf1, 0x27, 0xe3, 0x16, 0xa1, 0xe3, 0x29, - 0xe5, 0xb4, 0xb1, 0x79, 0x2c, 0x34, 0x60, 0x70, 0x22, 0x53, - 0x87, 0x98, 0x7a, 0xb9, 0x1d, 0xbf, 0xd9, 0xe9, 0xf5, 0xaf, - 0x3a, 0xaf, 0x80, 0xcc, 0x78, 0x95, 0xa6, 0xe9, 0xe0, 0xd7, - 0xfd, 0xbc, 0xff, 00, 0x45, 0xfe, 0x7f, 0x71, 0xe2, 0xd7, - 0xc7, 0xbb, 0xf2, 0xd2, 0xfb, 0xcf, 0x47, 0xf1, 0x7, 0xc7, - 0xbf, 0x14, 0x6b, 0x3b, 0x92, 0xda, 0x68, 0xb4, 0xa8, 0x4f, - 0xf0, 0xda, 0xaf, 0xcd, 0xff, 00, 0x7d, 0x36, 0x4f, 0xe5, - 0x8a, 0xe1, 0x6f, 0xf5, 0xad, 0x43, 0x54, 0x62, 0xd7, 0x97, - 0xd7, 0x37, 0x64, 0xf7, 0x9a, 0x56, 0x7f, 0xe6, 0x6a, 0x95, - 0x15, 0xf1, 0x75, 0xf1, 0x98, 0x8c, 0x4b, 0xbd, 0x69, 0xb7, - 0xf3, 0xfd, 0xf, 0x26, 0x75, 0x67, 0x53, 0xe2, 0x77, 0xa, - 0x28, 0xa2, 0xb8, 0xcc, 0xc2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, - 0x28, 0xa0, 0xb, 0x76, 0x7a, 0xbd, 0xf6, 0x9c, 0xc1, 0xad, - 0x6f, 0x6e, 0x2d, 0x88, 0xef, 0xc, 0xac, 0x9f, 0xc8, 0xd7, - 0x5b, 0xa2, 0x7c, 0x68, 0xf1, 0x6e, 0x8a, 0x55, 0x57, 0x53, - 0x6b, 0xd8, 0xc7, 0x1e, 0x5d, 0xe2, 0x89, 0x33, 0xf8, 0xfd, - 0xef, 0xd6, 0xb8, 0x7a, 0xdb, 0xf0, 0x4e, 0x96, 0x75, 0xaf, - 0x17, 0x68, 0xf6, 0x41, 0x77, 0x9, 0x6e, 0xa3, 0xc, 0x3f, - 0xd9, 0x7, 0x2d, 0xfa, 0x3, 0x5d, 0xd8, 0x6a, 0xf8, 0x88, - 0x54, 0x8c, 0x68, 0xcd, 0xa6, 0xdd, 0xb4, 0x66, 0xb4, 0xe7, - 0x35, 0x24, 0xa0, 0xec, 0x7d, 0x8d, 0xa5, 0xcb, 0x71, 0x3e, - 0x9b, 0x6b, 0x25, 0xda, 0xaa, 0x5d, 0x3c, 0x4a, 0xd2, 0xaa, - 0xc, 00, 0xc4, 0xc, 0x81, 0xf8, 0xd5, 0x9c, 0x73, 0x9a, - 0x5a, 0x2b, 0xf7, 0x14, 0xac, 0x92, 0x3e, 0xbd, 0x5, 0x14, - 0x51, 0x4c, 0x61, 0x58, 0xfe, 0x2e, 0x97, 0xca, 0xf0, 0xed, - 0xeb, 0x74, 0xf9, 0xd, 0x6c, 0x57, 0x33, 0xf1, 0x12, 0x6f, - 0x27, 0xc2, 0xb7, 0x7d, 0xb2, 0x31, 0x58, 0xd6, 0x7c, 0xb4, - 0xe4, 0xfc, 0x8c, 0xea, 0x3b, 0x41, 0xb3, 0xe1, 0x4f, 0x88, - 0x13, 0x79, 0xde, 0x22, 0xbb, 0x6f, 0xf6, 0x8d, 0x78, 0x7, - 0xc6, 0x8b, 0x8f, 0x2f, 0x47, 0x9b, 0x9f, 0xe1, 0x35, 0xee, - 0x5e, 0x2e, 0x97, 0xcd, 0xd6, 0x6f, 0x1b, 0xfd, 0xb3, 0x5f, - 0x3c, 0x7c, 0x78, 0xb9, 0xf2, 0xb4, 0x6b, 0x9f, 0x68, 0xcf, - 0xf2, 0xaf, 0xcd, 0xb2, 0xc5, 0xcd, 0x5e, 0xfe, 0xa7, 0xe2, - 0x18, 0xbf, 0xde, 0xe3, 0xe9, 0xc7, 0xbc, 0xd7, 0xe6, 0x7e, - 0x94, 0xfc, 0xc, 0xf0, 0x98, 0x5f, 0x82, 0x7f, 0xf, 0x84, - 0x90, 0xb0, 0x90, 0x78, 0x7b, 0x4f, 0xd, 0x91, 0xce, 0x7e, - 0xcd, 0x1e, 0x68, 0xaf, 0x59, 0xf8, 0x75, 0x66, 0x2c, 0xfe, - 0x1f, 0x78, 0x62, 0xdc, 0xc6, 0x10, 0xc5, 0xa5, 0xda, 0xc7, - 0xb7, 0x1d, 0x31, 0x12, 0x8c, 0x51, 0x5f, 0xa6, 0x24, 0x7e, - 0xe0, 0xa3, 0xa1, 0xd1, 0xd1, 0x45, 0x15, 0x65, 0x85, 0x14, - 0x51, 0x40, 0x5, 0x7c, 0x4d, 0xfb, 0x4b, 0xf8, 0xc4, 0xf8, - 0xa3, 0xe2, 0x65, 0xcd, 0xac, 0x6e, 0x1a, 0xd3, 0x49, 0x51, - 0x69, 0x1e, 0x31, 0x8d, 0xfd, 0x5c, 0xe4, 0x7b, 0x9c, 0x7e, - 0x15, 0xf5, 0xdf, 0x8e, 0xfc, 0x51, 0xf, 0x82, 0xfc, 0x21, - 0xaa, 0xeb, 0x33, 0x9f, 0x96, 0xd2, 0x6, 0x75, 0x5c, 0xe3, - 0x73, 0xe3, 0xa, 0xa3, 0xdc, 0x9c, 0x57, 0xe7, 0x9b, 0xcb, - 0x3e, 0xa5, 0x7a, 0xf3, 0x4c, 0xc6, 0x5b, 0x9b, 0x89, 0xb, - 0xbb, 0x1e, 0xac, 0xcc, 0x72, 0x4f, 0xe6, 0x6b, 0xe4, 0x78, - 0x83, 0x13, 0xcb, 0x4e, 0x34, 0x17, 0x5d, 0x5f, 0xa2, 0x3e, - 0x33, 0x88, 0xf1, 0x36, 0x84, 0x30, 0xd1, 0xde, 0x5a, 0xbf, - 0x45, 0xb7, 0xe3, 0xf9, 0x1e, 0xfb, 0xfb, 0x27, 0x78, 0x3f, - 0xed, 0xba, 0xdd, 0xe6, 0xb5, 0x32, 0xe6, 0x3b, 0x65, 0xdb, - 0x1e, 0x47, 0xf1, 0x1a, 0xfa, 0xb6, 0xbc, 0xff, 00, 0xe0, - 0x77, 0x85, 0x7, 0x85, 0x7e, 0x1f, 0xe9, 0xf1, 0x32, 0x6d, - 0x9e, 0x75, 0xf3, 0xa4, 0xfa, 0x9a, 0xf4, 0xa, 0xf5, 0xf2, - 0xac, 0x3f, 0xd5, 0xb0, 0x90, 0x8b, 0xdd, 0xea, 0xfe, 0x67, - 0xd0, 0x65, 0xb8, 0x7f, 0xaa, 0xe1, 0x61, 0xe, 0xbb, 0xbf, - 0x98, 0x51, 0x45, 0x15, 0xeb, 0x9e, 0x98, 0x51, 0x45, 0x14, - 00, 0x53, 0x26, 0x86, 0x3b, 0x98, 0x64, 0x86, 0x68, 0xd6, - 0x58, 0xa4, 0x52, 0xae, 0x8e, 0x32, 0xac, 0xf, 0x4, 0x11, - 0xdc, 0x56, 0x5f, 0x8a, 0xfc, 0x5b, 0xa3, 0x78, 0x1b, 0xc3, - 0xf7, 0xba, 0xe7, 0x88, 0x35, 0x3b, 0x5d, 0x1f, 0x48, 0xb2, - 0x8c, 0xcb, 0x71, 0x7b, 0x79, 0x20, 0x8e, 0x38, 0xd4, 0x77, - 0x24, 0xd7, 0xe7, 0xf7, 0xc6, 0xdf, 0xf8, 0x2c, 0x9f, 0x82, - 0xfc, 0x31, 0x3c, 0xd6, 0x1f, 0xd, 0xbc, 0x39, 0x73, 0xe3, - 0xb, 0x84, 0x3b, 0x7f, 0xb4, 0xb5, 0x16, 0x36, 0x96, 0x9f, - 0x55, 0x5c, 0x19, 0x1f, 0xf1, 0xb, 0x40, 0x1e, 0x85, 0xf1, - 0x93, 0xfe, 0x9, 0x37, 0xf0, 0x6b, 0xe2, 0x76, 0xa3, 0x73, - 0xa9, 0xe8, 0x9f, 0xda, 0x3e, 0x3, 0xd4, 0x6e, 0x1c, 0xc9, - 0x20, 0xd2, 0x1d, 0x5e, 0xd4, 0xb1, 0xeb, 0xfb, 0x97, 0x4, - 0x2f, 0xd1, 0xa, 0x8a, 0xf0, 0xd9, 0xbf, 0xe0, 0x88, 0xb0, - 0xfd, 0xb3, 0x31, 0x7c, 0x58, 0x90, 0x5a, 0x67, 0xa3, 0xe8, - 0xa0, 0xc9, 0x8f, 0xa8, 0x9b, 0x15, 0xe2, 0x1a, 0xa7, 0xfc, - 0x16, 0xf, 0xe3, 0xc5, 0xf4, 0xcc, 0xd6, 0xd0, 0x78, 0x57, - 0x4e, 0x8c, 0xfd, 0xd4, 0x87, 0x4c, 0x76, 0xc7, 0xe2, 0xf2, - 0xb6, 0x6b, 0xed, 0xf, 0xf8, 0x26, 0xc7, 0xed, 0x35, 0xf1, - 0x77, 0xf6, 0xa3, 0x93, 0xc5, 0xba, 0xcf, 0x8e, 0x2e, 0xb4, - 0xb6, 0xf0, 0xde, 0x91, 0xe5, 0x5a, 0x5b, 0x8b, 0x1b, 0x11, - 0xb, 0xcb, 0x74, 0xff, 00, 0x33, 0x65, 0xb2, 0x78, 0x54, - 0x3, 0x81, 0xfd, 0xf1, 0x4f, 0x52, 0x74, 0x65, 0xf, 0x87, - 0x1f, 0xf0, 0x47, 0x3f, 0x84, 0x5e, 0x16, 0xb8, 0x4b, 0x8f, - 0x13, 0xeb, 0x1a, 0xef, 0x8c, 0xa4, 0x52, 0xf, 0x91, 0x2c, - 0xab, 0x67, 0x6e, 0x48, 0xf5, 0x58, 0xfe, 0x7f, 0xfc, 0x7e, - 0xbe, 0xd5, 0xf0, 0x27, 0xc3, 0xef, 0xd, 0xfc, 0x31, 0xf0, - 0xe5, 0xb6, 0x81, 0xe1, 0x4d, 0x12, 0xcb, 0x40, 0xd1, 0xed, - 0x86, 0x23, 0xb4, 0xb1, 0x88, 0x46, 0x83, 0xd4, 0x9c, 0x75, - 0x27, 0xb9, 0x39, 0x26, 0xbc, 0x43, 0xc5, 0x7f, 0xf0, 0x50, - 0xef, 0x80, 0xbe, 0x6, 0xf1, 0x76, 0xaf, 0xe1, 0x8d, 0x7b, - 0xc6, 0xaf, 0xa6, 0x6b, 0x5a, 0x55, 0xd4, 0x96, 0x77, 0x96, - 0xd2, 0xe9, 0x77, 0x67, 0xcb, 0x95, 0x1b, 0x6b, 0xd, 0xc2, - 0x22, 0xa7, 0x91, 0xd4, 0x1c, 0x1a, 0xf5, 0xbf, 0x84, 0xbf, - 0x19, 0xbc, 0x1d, 0xf1, 0xcf, 0xc2, 0xed, 0xe2, 0x2f, 0x3, - 0xeb, 0x51, 0xeb, 0xba, 0x3a, 0xdc, 0x35, 0xab, 0x5c, 0xc7, - 0x1b, 0xc6, 0x4, 0x8a, 0x1, 0x65, 0xc3, 0xa8, 0x3c, 0x6, - 0x1d, 0xbb, 0xd2, 0x19, 0xda, 0xd7, 0x11, 0xf1, 0x93, 0xc4, - 0x43, 0xc3, 0xbe, 0x1, 0xd4, 0x59, 0x5f, 0x6c, 0xf7, 0x4b, - 0xf6, 0x58, 0xb9, 0xe7, 0x2f, 0xc1, 0xfc, 0x97, 0x71, 0xae, - 0xde, 0xbe, 0x76, 0xfd, 0xa4, 0x7c, 0x43, 0xf6, 0xcd, 0x7e, - 0xc3, 0x48, 0x8d, 0xf2, 0x96, 0x91, 0x19, 0x64, 0x3, 0xfb, - 0xef, 0xd3, 0xf2, 00, 0x7e, 0x75, 0xe2, 0xe7, 0x18, 0x9f, - 0xaa, 0xe0, 0xa7, 0x35, 0xbb, 0xd1, 0x7a, 0xbf, 0xea, 0xe7, - 0x2e, 0x2a, 0xa7, 0xb3, 0xa4, 0xdf, 0xc8, 0xf1, 0xda, 0x28, - 0xa2, 0xbf, 0x19, 0x3e, 0x54, 0x2a, 0xe6, 0x8f, 0xa6, 0x49, - 0xac, 0xea, 0xd6, 0x76, 0x10, 0x82, 0x65, 0xb9, 0x99, 0x22, - 0x5c, 0x76, 0xdc, 0x40, 0xcd, 0x53, 0xaf, 0x44, 0xf8, 0x18, - 0x9a, 0x64, 0x3e, 0x33, 0xfb, 0x7e, 0xa9, 0x79, 0x6d, 0x67, - 0x15, 0x9c, 0x4c, 0xf1, 0x1b, 0x89, 0x42, 0x6, 0x90, 0xfc, - 0xa3, 0x19, 0xeb, 0x80, 0x58, 0xfe, 0x55, 0xd7, 0x84, 0xa2, - 0xb1, 0x18, 0x88, 0x52, 0x6e, 0xc9, 0xbd, 0x7d, 0x3a, 0x9a, - 0x52, 0x8f, 0x3c, 0xd4, 0x59, 0xf4, 0xfe, 0x9f, 0x63, 0x16, - 0x99, 0x61, 0x6f, 0x69, 0x2, 0xec, 0x86, 0x8, 0xd6, 0x24, - 0x51, 0xd8, 0x1, 0x81, 0x56, 0x2b, 0x2a, 0x3f, 0x16, 0x68, - 0x93, 0x7d, 0xcd, 0x5e, 0xc5, 0xff, 00, 0xdd, 0xb9, 0x43, - 0xfd, 0x6a, 0x43, 0xe2, 0x4d, 0x25, 0x46, 0x4e, 0xa9, 0x66, - 0x7, 0xaf, 0x9e, 0x9f, 0xe3, 0x5f, 0xb7, 0xc6, 0xa5, 0x24, - 0xac, 0xa4, 0xad, 0xea, 0x7d, 0x72, 0x94, 0x6d, 0xa3, 0x34, - 0x69, 0x9, 0xa, 0x9, 0x27, 00, 0x72, 0x49, 0xae, 0x5b, - 0x55, 0xf8, 0xa5, 0xe1, 0x5d, 0x1a, 0x36, 0x69, 0xf5, 0xbb, - 0x57, 0x23, 0xf8, 0x20, 0x7f, 0x35, 0xbf, 0x25, 0xcd, 0x78, - 0xf7, 0xc4, 0x9f, 0x8f, 0x12, 0x6b, 0xf6, 0xb2, 0xe9, 0x9a, - 0xa, 0x49, 0x69, 0x67, 0x20, 0x29, 0x2d, 0xd4, 0x9c, 0x49, - 0x22, 0x9e, 0xa1, 0x47, 0xf0, 0x8f, 0x7e, 0xbf, 0x4a, 0xf3, - 0x71, 0x99, 0xb6, 0x13, 0x7, 0x6, 0xe5, 0x34, 0xdf, 0x64, - 0xee, 0xcc, 0x2a, 0xe2, 0x69, 0xd2, 0x57, 0x6e, 0xec, 0xe2, - 0x3e, 0x27, 0x78, 0x82, 0x2f, 0x13, 0xf8, 0xe7, 0x55, 0xbf, - 0x80, 0x83, 0x6e, 0xd2, 0x8, 0xe3, 0x61, 0xfc, 0x4a, 0x80, - 0x28, 0x3f, 0x8e, 0x33, 0xf8, 0xd7, 0x2d, 0x45, 0x15, 0xf8, - 0xed, 0x6a, 0xb2, 0xaf, 0x52, 0x55, 0x65, 0xbc, 0x9b, 0x7f, - 0x79, 0xf2, 0xd2, 0x93, 0x9c, 0x9c, 0x9f, 0x50, 0xa2, 0x8a, - 0xe9, 0x3c, 0x7, 0xe0, 0x6b, 0xdf, 0x1e, 0x6b, 0x69, 0x65, - 0x6a, 0xc, 0x70, 0x2f, 0xcd, 0x3d, 0xc1, 0x1f, 0x2c, 0x49, - 0xfe, 0x27, 0xb0, 0xa5, 0x4a, 0x94, 0xeb, 0xcd, 0x53, 0xa6, - 0xae, 0xd8, 0x46, 0x2e, 0x6d, 0x46, 0x3b, 0x9e, 0xab, 0xfb, - 0x36, 0xf8, 0x58, 0xa4, 0x57, 0xfa, 0xfc, 0xc8, 0x41, 0x7f, - 0xf4, 0x6b, 0x72, 0x47, 0x51, 0xc1, 0x72, 0x3f, 0x1c, 0xf, - 0xc0, 0xd7, 0xb9, 0x55, 0x3d, 0x23, 0x4a, 0xb6, 0xd0, 0xf4, - 0xcb, 0x6b, 0xb, 0x38, 0xc4, 0x56, 0xd6, 0xf1, 0x88, 0xd1, - 0x47, 0xa0, 0xfe, 0xb5, 0x72, 0xbf, 0x6a, 0xcb, 0xf0, 0x8b, - 0x3, 0x86, 0x85, 0x5, 0xba, 0xdf, 0xd7, 0xa9, 0xf5, 0x94, - 0x29, 0x7b, 0x1a, 0x6a, 0x1, 0x45, 0x14, 0x57, 0xa2, 0x6e, - 0x14, 0x51, 0x45, 00, 0x7c, 0xf7, 0xfb, 0x4a, 0xeb, 0xa6, - 0x7d, 0x67, 0x4c, 0xd2, 0x11, 0xbe, 0x4b, 0x78, 0x8d, 0xc3, - 0x8f, 0xf6, 0x98, 0xe0, 0x7e, 0x41, 0x4f, 0xe7, 0x5e, 0x31, - 0x5d, 0x3f, 0xc4, 0xcd, 0x77, 0xfe, 0x12, 0x3f, 0x1c, 0xea, - 0xf7, 0x81, 0xb7, 0x45, 0xe7, 0x18, 0xa3, 0x3f, 0xec, 0x27, - 0xca, 0x3f, 0x96, 0x7f, 0x1a, 0xe6, 0x2b, 0xf1, 0x3c, 0xcf, - 0x11, 0xf5, 0x9c, 0x65, 0x4a, 0x8b, 0x6b, 0xe9, 0xe8, 0xb4, - 0x47, 0xc9, 0x62, 0x27, 0xed, 0x2a, 0xca, 0x41, 0x45, 0x14, - 0x57, 0x96, 0x73, 0x9b, 0x3e, 0xd, 0xd0, 0xcf, 0x89, 0x3c, - 0x55, 0xa5, 0xe9, 0xb8, 0xca, 0xdc, 0x4e, 0xaa, 0xff, 00, - 0xee, 0xe, 0x5b, 0xf4, 0x6, 0xbe, 0xd1, 0x55, 0xa, 0xa0, - 0x1, 0x80, 0x6, 00, 0xaf, 0x9a, 0xff, 00, 0x67, 0x4d, - 0x18, 0xdf, 0x78, 0xce, 0x7b, 0xf6, 0x5c, 0xc7, 0x63, 0x6e, - 0xc4, 0x1f, 0xf6, 0xdf, 0xe5, 0x1f, 0xa6, 0xea, 0xfa, 0x56, - 0xbf, 0x50, 0xe1, 0x8a, 0x1e, 0xcf, 0xb, 0x2a, 0xaf, 0x79, - 0x3f, 0xc1, 0x7f, 0xc1, 0xb9, 0xf4, 0x19, 0x7c, 0x2d, 0x4d, - 0xcb, 0xb8, 0x51, 0x45, 0x15, 0xf6, 0x7, 0xaa, 0x14, 0x51, - 0x55, 0xb5, 0x1d, 0x42, 0xd, 0x2a, 0xc2, 0xe2, 0xf6, 0xe5, - 0xc4, 0x76, 0xf6, 0xf1, 0xb4, 0xb2, 0x39, 0xec, 0xa0, 0x64, - 0xd2, 0x6d, 0x45, 0x5d, 0x83, 0x76, 0xd4, 0xe3, 0x3e, 0x2d, - 0x7c, 0x47, 0x4f, 0x1, 0x68, 0xaa, 0xb6, 0xfb, 0x5f, 0x55, - 0xba, 0x5, 0x60, 0x43, 0xce, 0xc1, 0xdd, 0xc8, 0xf4, 0x1d, - 0xbd, 0x4d, 0x7c, 0xab, 0x73, 0x73, 0x2d, 0xe5, 0xc4, 0xb3, - 0xcf, 0x23, 0x4b, 0x34, 0xac, 0x5d, 0xe4, 0x73, 0x92, 0xc4, - 0xf5, 0x26, 0xb6, 0x3c, 0x6d, 0xe2, 0xa9, 0xfc, 0x65, 0xe2, - 0x4b, 0xcd, 0x52, 0x72, 0x42, 0xc8, 0xdb, 0x62, 0x8c, 0xff, - 00, 0xcb, 0x38, 0xc7, 0xdd, 0x5f, 0xcb, 0xf5, 0x26, 0xb0, - 0xab, 0xf1, 0xdc, 0xdf, 0x32, 0x96, 0x61, 0x5d, 0xb4, 0xfd, - 0xc5, 0xb2, 0xfd, 0x7e, 0x67, 0xcb, 0x62, 0x6b, 0xba, 0xf3, - 0xf2, 0x5b, 0x5, 0x14, 0x51, 0x5e, 0x11, 0xc6, 0x15, 0xa7, - 0xe1, 0xdf, 0xe, 0x6a, 0x1e, 0x2a, 0xd5, 0x22, 0xb0, 0xd3, - 0x6d, 0xda, 0x79, 0xdc, 0xf6, 0xfb, 0xa8, 0x3f, 0xbc, 0xc7, - 0xb0, 0xf7, 0xa8, 0x34, 0x7d, 0x22, 0xeb, 0x5e, 0xd4, 0xed, - 0xb4, 0xfb, 0x28, 0x8c, 0xd7, 0x57, 0xe, 0x11, 0x10, 0x7a, - 0xfb, 0xfb, 0xe, 0xb5, 0xf5, 0xc7, 0xc3, 0xff, 00, 0x1, - 0xd9, 0x78, 0xb, 0x45, 0x5b, 0x4b, 0x71, 0xbe, 0xe6, 0x40, - 0x1a, 0xe6, 0xe0, 0xf5, 0x91, 0xf1, 0xfa, 0x1, 0xd8, 0x57, - 0xbf, 0x94, 0xe5, 0x52, 0xcc, 0xaa, 0x5d, 0xe9, 0x5, 0xbb, - 0xfd, 0x17, 0xf5, 0xa1, 0xdb, 0x86, 0xc3, 0x3a, 0xf2, 0xd7, - 0x64, 0x71, 0xde, 0xf, 0xfd, 0x9f, 0x34, 0x6d, 0x26, 0x28, - 0xe6, 0xd6, 0x98, 0xea, 0xd7, 0x9d, 0x4c, 0x79, 0x2b, 0xa, - 0x9f, 0x4c, 0x75, 0x6f, 0xc7, 0xf2, 0xaf, 0x50, 0xb2, 0xd3, - 0xed, 0x74, 0xd8, 0x16, 0x1b, 0x4b, 0x68, 0xad, 0xa2, 0x51, - 0x80, 0x91, 0x20, 0x50, 0x3f, 0x1, 0x56, 0x28, 0xaf, 0xd5, - 0x30, 0xd8, 0x2c, 0x3e, 0x12, 0x3c, 0xb4, 0x60, 0x97, 0xe7, - 0xf7, 0x9f, 0x45, 0x4e, 0x94, 0x29, 0x2b, 0x41, 0x58, 0x2a, - 0x2b, 0x8b, 0x58, 0x6e, 0xe2, 0x68, 0xe7, 0x89, 0x26, 0x8d, - 0x86, 0xa, 0x48, 0xa1, 0x81, 0xfc, 0xd, 0x4b, 0x45, 0x76, - 0x34, 0x9e, 0x8c, 0xd8, 0xf2, 0xef, 0x1a, 0xfc, 0x5, 0xd1, - 0x75, 0xe8, 0x65, 0x9f, 0x49, 0x51, 0xa4, 0xea, 0x7, 0x2c, - 0x2, 0x67, 0xc9, 0x73, 0xe8, 0x57, 0xb7, 0xd4, 0x7e, 0x46, - 0xbe, 0x72, 0xd6, 0x74, 0x6b, 0xcf, 0xf, 0xea, 0x73, 0xd8, - 0x5f, 0xc0, 0xd6, 0xf7, 0x50, 0xb6, 0xd7, 0x46, 0xfe, 0x63, - 0xd4, 0x1f, 0x5a, 0xfb, 0x7a, 0xbc, 0x83, 0xf6, 0x87, 0xf0, - 0x7c, 0x5a, 0x87, 0x87, 0xd3, 0x5e, 0x89, 0x31, 0x77, 0x64, - 0x55, 0x25, 0x61, 0xfc, 0x51, 0x31, 0xc7, 0x3f, 0x42, 0x47, - 0xe6, 0x6b, 0xe2, 0xf3, 0xcc, 0x9a, 0x94, 0xa8, 0xcb, 0x13, - 0x87, 0x8f, 0x2c, 0xa3, 0xab, 0x4b, 0x66, 0xba, 0xfc, 0xcf, - 0x23, 0x19, 0x85, 0x8b, 0x8b, 0xa9, 0x5, 0x66, 0x8f, 0x9c, - 0xe8, 0xa2, 0x8a, 0xfc, 0xd0, 0xf0, 0x42, 0x8a, 0x28, 0xa0, - 0xf, 0xa8, 0x7e, 0x5, 0x78, 0xd2, 0x4f, 0x14, 0x78, 0x54, - 0xd9, 0xdd, 0x3e, 0xfb, 0xcd, 0x34, 0xac, 0x25, 0x89, 0xe5, - 0xe3, 0xc7, 0xc8, 0x4f, 0xbf, 0x4, 0x7e, 0x15, 0xe9, 0x55, - 0xf2, 0xd7, 0xc0, 0x5d, 0x71, 0xf4, 0x9f, 0x88, 0x16, 0xd6, - 0xfb, 0xb1, 0xd, 0xfa, 0x34, 0xe, 0x3b, 0x67, 0x1b, 0x94, - 0xfe, 0x63, 0x1f, 0x8d, 0x7d, 0x4b, 0x5f, 0xb0, 0x64, 0x58, - 0xb7, 0x8b, 0xc1, 0x45, 0xc9, 0xeb, 0x1d, 0x1f, 0xcb, 0x6f, - 0xc0, 0xfa, 0x7c, 0x1d, 0x47, 0x52, 0x92, 0xbe, 0xeb, 0x40, - 0xaf, 0x9c, 0x7e, 0x3f, 0xf8, 0xf1, 0xf5, 0x6d, 0x67, 0xfb, - 0x2, 0xd2, 0x42, 0x2c, 0xac, 0x88, 0x33, 0xed, 0x3c, 0x49, - 0x2f, 0xa7, 0xd1, 0x7f, 0x9e, 0x7d, 0x2b, 0xe8, 0x6d, 0x42, - 0xf1, 0x34, 0xfb, 0xb, 0x9b, 0xa9, 0xe, 0x12, 0x8, 0x9a, - 0x46, 0xfa, 00, 0x4f, 0xf4, 0xaf, 0x88, 0xef, 0xef, 0x24, - 0xd4, 0x6f, 0xae, 0x2e, 0xe6, 0x39, 0x96, 0x79, 0x1a, 0x57, - 0x3e, 0xec, 0x72, 0x7f, 0x9d, 0x79, 0x9c, 0x4d, 0x8b, 0x95, - 0x1a, 0x11, 0xa1, 0x7, 0xf1, 0xef, 0xe8, 0x8e, 0x7c, 0xc2, - 0xab, 0x8c, 0x14, 0x17, 0x52, 0xa, 0x28, 0xa2, 0xbf, 0x32, - 0x3c, 00, 0xa2, 0x8a, 0x96, 0xd2, 0xdd, 0xae, 0xee, 0xa1, - 0x81, 0x8, 0xf, 0x2b, 0xac, 0x60, 0x9e, 0x99, 0x27, 0x14, - 0xd2, 0x6d, 0xd9, 0x1, 0x7f, 0x40, 0xf0, 0xc6, 0xab, 0xe2, - 0x8b, 0xaf, 0xb3, 0xe9, 0x76, 0x33, 0x5e, 0x48, 0x3e, 0xf7, - 0x96, 0xbf, 0x2a, 0xff, 00, 0xbc, 0xdd, 0x7, 0xe3, 0x5e, - 0x8d, 0xa7, 0x7e, 0xcd, 0xfe, 0x20, 0xb9, 0x40, 0xd7, 0x57, - 0xb6, 0x56, 0x79, 0xfe, 0x1d, 0xcd, 0x23, 0xf, 0xc8, 0x63, - 0xf5, 0xaf, 0x7a, 0xf0, 0xb7, 0x86, 0xac, 0xfc, 0x27, 0xa1, - 0xda, 0xe9, 0xb6, 0x51, 0x85, 0x8e, 0x25, 0x1, 0x9b, 0x1c, - 0xc8, 0xdd, 0xd8, 0xfb, 0x93, 0x5a, 0xf5, 0xfa, 0x5e, 0x13, - 0x86, 0x70, 0xf0, 0x82, 0x78, 0x96, 0xe5, 0x2f, 0xb9, 0x7f, - 0x99, 0xef, 0xd2, 0xcb, 0xe0, 0x95, 0xea, 0x6a, 0xcf, 0x2, - 0x5f, 0xd9, 0x8e, 0xeb, 0x1f, 0x36, 0xbf, 0x8, 0x3e, 0xd6, - 0xc4, 0xff, 00, 0xec, 0xd4, 0xd7, 0xfd, 0x98, 0xef, 00, - 0xf9, 0x35, 0xe8, 0x9, 0xff, 00, 0x6a, 0xd9, 0x87, 0xfe, - 0xcd, 0x5e, 0xff, 00, 0x45, 0x7a, 0x5f, 0xea, 0xfe, 0x5d, - 0xff, 00, 0x3e, 0xff, 00, 0x17, 0xfe, 0x67, 0x47, 0xd4, - 0xa8, 0x76, 0xfc, 0x59, 0xf3, 0x8d, 0xd7, 0xec, 0xd7, 0xaf, - 0x44, 0x9, 0x83, 0x51, 0xb0, 0x9f, 0xd9, 0x8b, 0xa1, 0xff, - 00, 0xd0, 0x4d, 0x73, 0x3a, 0xb7, 0xc1, 0x7f, 0x17, 0x69, - 0x21, 0x99, 0xb4, 0xa6, 0xba, 0x41, 0xfc, 0x56, 0x8e, 0x24, - 0xfd, 0x7, 0x3f, 0xa5, 0x7d, 0x69, 0x45, 0x73, 0x54, 0xe1, - 0xac, 0xc, 0xd7, 0xb9, 0x78, 0xfc, 0xff, 00, 0xcc, 0xce, - 0x59, 0x7d, 0x17, 0xb5, 0xd1, 0xf0, 0xe5, 0xee, 0x9d, 0x77, - 0xa6, 0xc9, 0xe5, 0xdd, 0xda, 0xcd, 0x6b, 0x27, 0xf7, 0x66, - 0x8c, 0xa1, 0xfc, 0x8d, 0x7a, 0x5f, 0xec, 0xed, 0xa3, 0xb, - 0xff, 00, 0x1b, 0xcb, 0x78, 0xe3, 0x2b, 0x63, 0x6e, 0xce, - 0xa7, 0xd1, 0x9b, 0xe5, 0x1f, 0xa1, 0x6a, 0xfa, 0x3e, 0xff, - 00, 0x4d, 0xb4, 0xd5, 0x6d, 0xda, 0xb, 0xcb, 0x68, 0xae, - 0xa1, 0x61, 0x83, 0x1c, 0xc8, 0x18, 0x1f, 0xc0, 0xd6, 0x4f, - 0x86, 0xfc, 0xd, 0xa3, 0x78, 0x46, 0xea, 0xf6, 0x7d, 0x26, - 0xd3, 0xec, 0x8d, 0x77, 0xb7, 0xcc, 0x55, 0x62, 0x57, 0xe5, - 0xce, 0x30, 0xf, 0x4e, 0xa7, 0xa5, 0x71, 0x61, 0xb8, 0x71, - 0xe1, 0x71, 0x74, 0xeb, 0x29, 0xa9, 0x45, 0x3b, 0xeb, 0xa3, - 0xf2, 0xfc, 0x4c, 0x69, 0xe0, 0x1d, 0x3a, 0x91, 0x95, 0xee, - 0x91, 0xbf, 0x45, 0x14, 0x57, 0xdc, 0x1e, 0xc0, 0x51, 0x45, - 0x14, 00, 0x57, 0x13, 0xf1, 0x6e, 0xe3, 0xc8, 0xf0, 0xa4, - 0xe3, 0xfb, 0xc0, 0xd7, 0x6d, 0x5e, 0x6b, 0xf1, 0xca, 0xe3, - 0xc9, 0xf0, 0xbb, 0xc, 0xe3, 0x2a, 0xd5, 0xc5, 0x8d, 0x97, - 0x2e, 0x1e, 0x6f, 0xc8, 0xe7, 0xc4, 0x3b, 0x52, 0x93, 0xf2, - 0x3e, 0x20, 0xf1, 0x4, 0xbe, 0x65, 0xfd, 0xd3, 0x7a, 0xb9, - 0xaf, 0x9e, 0xfe, 0x34, 0xc4, 0x75, 0x29, 0x6d, 0xec, 0x14, - 0xe0, 0xdd, 0x4f, 0x1c, 00, 0xff, 00, 0xbc, 0xc1, 0x7f, - 0xad, 0x7b, 0xe6, 0xae, 0xfb, 0xa5, 0x98, 0xfa, 0xb1, 0xaf, - 0x12, 0xf1, 0x1d, 0xa7, 0xf6, 0xd7, 0xc5, 0x2f, 0x6, 0xe9, - 0xa3, 0xfe, 0x5e, 0xb5, 0xdb, 0x18, 0x78, 0xf7, 0x9d, 0x5, - 0x7c, 0x1e, 0x4d, 0x1b, 0xd4, 0x47, 0xe2, 0xf4, 0xd7, 0xb4, - 0xcd, 0x28, 0xaf, 0xef, 0x1f, 0xb2, 0xba, 0x6c, 0x1f, 0x65, - 0xd3, 0xed, 0x61, 0xff, 00, 0x9e, 0x71, 0x2a, 0x7e, 0x40, - 0xa, 0x2a, 0xcd, 0x15, 0xfa, 0x49, 0xfb, 0x80, 0x51, 0x45, - 0x14, 00, 0x51, 0x45, 0x21, 0x21, 0x41, 0x24, 0xe0, 0xe, - 0x49, 0xa0, 0xf, 0x9d, 0x7f, 0x6b, 0xdf, 0x1a, 0x2d, 0xb6, - 0x93, 0xa6, 0x78, 0x5e, 0x16, 0x6, 0x5b, 0xa7, 0xfb, 0x5d, - 0xc0, 0xd, 0xc8, 0x45, 0x38, 0x50, 0x47, 0xbb, 0x64, 0xff, - 00, 0xc0, 0x6b, 0xc3, 0xbe, 0x10, 0xf8, 0x59, 0xbc, 0x59, - 0xe3, 0xad, 0x36, 0xcf, 0x69, 0x68, 0x84, 0x81, 0xdf, 0x3, - 0xb0, 0xe6, 0x9d, 0xf1, 0xa3, 0xc6, 0x63, 0xc7, 0x7f, 0x11, - 0xf5, 0x5d, 0x46, 0x27, 0xdf, 0x67, 0x1b, 0x7d, 0x9a, 0xd8, - 0x83, 0x91, 0xe5, 0xa7, 00, 0x8f, 0x62, 0x77, 0x37, 0xe3, - 0x5e, 0xd3, 0xfb, 0x25, 0xf8, 0x3f, 0xca, 0xb7, 0xbe, 0xd7, - 0x66, 0x8c, 0x65, 0x8f, 0x95, 0x13, 0x11, 0xf9, 0xd7, 0xe7, - 0x55, 0x3f, 0xe1, 0x4f, 0x33, 0x51, 0x5a, 0xc6, 0xff, 00, - 0x82, 0xff, 00, 0x3f, 0xd4, 0xfc, 0xe6, 0x2f, 0xfb, 0x53, - 0x35, 0x72, 0xde, 0x29, 0xfe, 0xb, 0xfc, 0xcf, 0xa3, 0x60, - 0x85, 0x6d, 0xe1, 0x8e, 0x24, 0x18, 0x44, 0x50, 0xa0, 0x7b, - 0xa, 0x92, 0x8a, 0x2b, 0xf4, 0x5d, 0x8f, 0xd1, 0x82, 0x8a, - 0x28, 0xa0, 0x2, 0xb3, 0x3c, 0x4d, 0xe2, 0x4d, 0x33, 0xc1, - 0xde, 0x1e, 0xd4, 0x75, 0xcd, 0x66, 0xf2, 0x2d, 0x3f, 0x4a, - 0xd3, 0xe0, 0x7b, 0x9b, 0xab, 0xa9, 0x9b, 0x6a, 0x45, 0x1a, - 0x8c, 0xb3, 0x13, 0xf4, 0x15, 0xa7, 0x5f, 0x1, 0xff, 00, - 0xc1, 0x62, 0x3e, 0x30, 0xc9, 0xe0, 0xdf, 0x81, 0x1a, 0x3f, - 0x82, 0x2c, 0xa7, 0x31, 0xde, 0x78, 0xae, 0xfb, 0xfd, 0x20, - 0x2b, 0x60, 0xfd, 0x92, 0xc, 0x3b, 0xf, 0xa1, 0x73, 0x10, - 0xfa, 0x3, 0x40, 0x1f, 0x9e, 0x9f, 0xb6, 0x97, 0xed, 0x9b, - 0xe2, 0x4f, 0xda, 0xaf, 0xc7, 0x93, 0xb7, 0x9f, 0x36, 0x9b, - 0xe0, 0x8b, 0x9, 0x5e, 0x3d, 0x2b, 0x47, 0x8e, 0x42, 0x11, - 0x90, 0x37, 0x13, 0xcc, 0x3a, 0x34, 0x8c, 00, 0x3c, 0xfd, - 0xde, 0x83, 0xb9, 0x3a, 0x7f, 0x7, 0xbf, 0xe0, 0x9b, 0x1f, - 0x1c, 0x7e, 0x32, 0x68, 0x56, 0xfa, 0xdd, 0x9e, 0x81, 0x6b, - 0xe1, 0xdd, 0x1e, 0xe6, 0x31, 0x35, 0xbd, 0xd7, 0x88, 0x2e, - 0x7e, 0xcc, 0x66, 0x43, 0xc8, 0x65, 0x8c, 0x6, 0x7c, 0x63, - 0x9c, 0x95, 00, 0xd6, 0x6f, 0xfc, 0x13, 0xbb, 0xe1, 0xbe, - 0x87, 0xf1, 0x4b, 0xf6, 0xb4, 0xf0, 0x66, 0x93, 0xe2, 0x25, - 0x82, 0x7d, 0x32, 0xdc, 0xcd, 0xa8, 0x1b, 0x4b, 0x90, 0xa, - 0x5d, 0x3c, 0x31, 0x97, 0x48, 0xf0, 0x7a, 0xfc, 0xc0, 0x36, - 0x3b, 0x85, 0x35, 0xfb, 0x39, 0xfb, 0x62, 0x7c, 0x66, 0xb7, - 0xf8, 0x5, 0xfb, 0x39, 0x78, 0xc3, 0xc5, 0x2, 0x45, 0x86, - 0xf9, 0x2c, 0xcd, 0x96, 0x9a, 0x83, 0x8d, 0xd7, 0x52, 0x8d, - 0x91, 00, 0x3d, 0x89, 0xdd, 0xf4, 0x53, 0x4c, 0x84, 0xaf, - 0xab, 0x3f, 0x9e, 0x6f, 0x16, 0x78, 0x7d, 0xbc, 0x27, 0xe2, - 0x7d, 0x5b, 0x45, 0x7b, 0xcb, 0x6d, 0x41, 0xf4, 0xeb, 0xa9, - 0x2d, 0x5a, 0xea, 0xcd, 0x8b, 0x43, 0x29, 0x46, 0x2a, 0x59, - 0x9, 00, 0x95, 0x24, 0x70, 0x70, 0x2b, 0xf7, 0xe7, 0xf6, - 0x3, 0xf8, 0x22, 0x3e, 0x5, 0x7e, 0xcc, 0x3e, 0x14, 0xd2, - 0x67, 0x8b, 0xcb, 0xd6, 0x35, 0x38, 0xbf, 0xb6, 0x35, 0x1c, - 0x8f, 0x9b, 0xce, 0x9c, 0x6, 0xda, 0x7f, 0xdd, 0x4d, 0x89, - 0xff, 00, 0x1, 0xaf, 0xc5, 0x9f, 0xd8, 0xf3, 0xe0, 0xb4, - 0xbf, 0xb4, 0xf, 0xed, 0x17, 0xe1, 0xf, 0xa, 0x3a, 0x79, - 0xb6, 0x12, 0x5d, 0xb, 0xdd, 0x49, 0x98, 0x64, 0xb, 0x58, - 0xbf, 0x79, 0x2e, 0x7f, 0xde, 00, 0x27, 0xd5, 0xc5, 0x7e, - 0xd9, 0xfe, 0xd9, 0x7f, 0xb4, 0x8e, 0x8d, 0xfb, 0x30, 0x7c, - 0xf, 0xd5, 0xf5, 0x56, 0xbb, 0x82, 0x1f, 0x11, 0x5d, 0x5b, - 0x3d, 0x9e, 0x83, 0xa7, 0xe4, 0x6f, 0x9a, 0xe0, 0xae, 0xd5, - 0x60, 0xbd, 0x76, 0x26, 0x43, 0x31, 0xec, 0x6, 0x3a, 0x91, - 0x43, 0x5, 0xdc, 0xfc, 0x4a, 0xfd, 0xb3, 0x75, 0xfb, 0x5f, - 0x13, 0x7e, 0xd5, 0x7f, 0x14, 0xf5, 0x1b, 0x26, 0x57, 0xb5, - 0x93, 0x5e, 0xb9, 0x44, 0x74, 0xe8, 0xdb, 0x1b, 0x61, 0x3f, - 0x89, 0x52, 0x6b, 0xf5, 0x7f, 0xfe, 0x9, 0x19, 0xa1, 0x49, - 0xa4, 0xfe, 0xc8, 0x36, 0x77, 0x72, 0x2e, 0xdf, 0xed, 0x3d, - 0x66, 0xf6, 0xe5, 0x33, 0xdd, 0x43, 0x2c, 0x59, 0xfc, 0xe3, - 0x6a, 0xfc, 0x50, 0xd1, 0xf4, 0x9d, 0x57, 0xc7, 0x5e, 0x2a, - 0xb3, 0xd3, 0x6c, 0xd2, 0x4d, 0x43, 0x5a, 0xd5, 0xef, 0x12, - 0x8, 0x97, 0xab, 0xcd, 0x3c, 0xaf, 0x81, 0xf8, 0x96, 0x6a, - 0xfe, 0x91, 0x3e, 0x2, 0xfc, 0x2c, 0xb5, 0xf8, 0x27, 0xf0, - 0x73, 0xc2, 0x3e, 0x8, 0xb4, 0xda, 0x53, 0x46, 0xd3, 0xe3, - 0xb7, 0x92, 0x45, 0x1c, 0x49, 0x2e, 0x37, 0x4a, 0xff, 00, - 0xf0, 0x27, 0x2c, 0x7f, 0x1a, 0x18, 0x2d, 0xee, 0x77, 0x53, - 0xcc, 0x96, 0xd0, 0xc9, 0x34, 0x8c, 0x12, 0x38, 0xd4, 0xb3, - 0x31, 0xe8, 00, 0x19, 0x26, 0xbe, 0x2c, 0xf1, 0x46, 0xb5, - 0x27, 0x88, 0xfc, 0x45, 0xa8, 0xea, 0x52, 0x12, 0x4d, 0xcc, - 0xed, 0x20, 0xcf, 0x65, 0xcf, 0xca, 0x3f, 0x1, 0x81, 0x5f, - 0x4a, 0xfc, 0x73, 0xf1, 0x11, 0xd0, 0x7c, 0x3, 0x75, 0x1c, - 0x6f, 0xb2, 0xe2, 0xf9, 0x85, 0xaa, 0x63, 0xae, 0xf, 0x2f, - 0xff, 00, 0x8e, 0x82, 0x3f, 0x1a, 0xf9, 0x5a, 0xbf, 0x38, - 0xe2, 0x8c, 0x4f, 0x35, 0x48, 0x61, 0x97, 0x4d, 0x5f, 0xcf, - 0x6f, 0xeb, 0xcc, 0xf1, 0x33, 0x1a, 0x97, 0x92, 0xa6, 0xba, - 0x5, 0x14, 0x51, 0x5f, 0xa, 0x79, 0x1, 0x45, 0x14, 0x50, - 0x1, 0x46, 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa2, 0x80, 0xa, - 0x7c, 0x10, 0x49, 0x73, 0x32, 0xc5, 0xc, 0x6f, 0x2c, 0xae, - 0x70, 0xa8, 0x8a, 0x59, 0x89, 0xf6, 0x2, 0xb4, 0x3c, 0x3f, - 0xa9, 0xd9, 0xe9, 0x5a, 0x82, 0xcd, 0x7d, 0xa5, 0xc3, 0xab, - 0x5b, 0xff, 00, 0x14, 0x12, 0xc8, 0xc9, 0xf9, 0x15, 0x3d, - 0x7e, 0xb9, 0xaf, 0xa9, 0xbe, 0x1a, 0x5c, 0xf8, 0x5f, 0x58, - 0xd1, 0x56, 0xff, 00, 0xc3, 0xda, 0x7d, 0xbd, 0x90, 0xce, - 0xc9, 0x63, 0x58, 0x82, 0xc9, 0x1b, 0xe3, 0xee, 0xb1, 0xea, - 0x7e, 0xb9, 0xe6, 0xbd, 0xdc, 0xb3, 0x2c, 0x8e, 0x63, 0x2e, - 0x5f, 0x6a, 0xa2, 0xfb, 0x6b, 0x7f, 0xf2, 0xfc, 0x4e, 0xbc, - 0x3e, 0x1d, 0x57, 0x76, 0xe6, 0xb1, 0xe2, 0xbe, 0x9, 0xf8, - 0xd, 0xad, 0x78, 0x86, 0x54, 0x9b, 0x55, 0x56, 0xd1, 0xec, - 0x3a, 0x9f, 0x30, 0x7e, 0xf9, 0xc7, 0xa0, 0x5e, 0xdf, 0x53, - 0xf9, 0x1a, 0xfa, 0x1f, 0xc3, 0x5e, 0x18, 0xd3, 0xbc, 0x25, - 0xa5, 0xc7, 0x61, 0xa6, 0xc0, 0x20, 0x81, 0x79, 0x27, 0xab, - 0x39, 0xee, 0xcc, 0x7b, 0x9a, 0xd5, 0xa2, 0xbf, 0x4b, 0xc0, - 0x65, 0x58, 0x6c, 0xbd, 0x5e, 0x92, 0xbc, 0xbb, 0xbd, 0xff, - 00, 0xe0, 0x1f, 0x41, 0x47, 0xd, 0x4e, 0x87, 0xc3, 0xbf, - 0x70, 0xa2, 0x8a, 0x2b, 0xd8, 0x3a, 0x82, 0x8a, 0x28, 0xa0, - 0x2, 0xb1, 0x3c, 0x69, 0xac, 0xaf, 0x87, 0xbc, 0x27, 0xaa, - 0xea, 0x5, 0xb6, 0x98, 0x2d, 0xdc, 0xa7, 0xfb, 0xe4, 0x61, - 0x47, 0xe6, 0x45, 0x6d, 0xd7, 0x91, 0xfe, 0xd1, 0xfa, 0xd9, - 0xb2, 0xf0, 0xa5, 0x9e, 0x9c, 0x8d, 0x87, 0xbd, 0xb8, 0xcb, - 0xf, 0x54, 0x41, 0x93, 0xff, 00, 0x8f, 0x15, 0xaf, 0x3f, - 0x30, 0xaf, 0xf5, 0x5c, 0x2d, 0x4a, 0xdd, 0x97, 0xe3, 0xd3, - 0xf1, 0x30, 0xaf, 0x3f, 0x67, 0x4e, 0x52, 0x3e, 0x70, 0x24, - 0x93, 0x93, 0xc9, 0xa2, 0x8a, 0x2b, 0xf0, 0xf3, 0xe4, 0x42, - 0x8a, 0x29, 0x42, 0x96, 0x20, 0x1, 0x92, 0x78, 0x2, 0x80, - 0x3e, 0x93, 0xfd, 0x9c, 0xf4, 0x71, 0x65, 0xe0, 0xcb, 0x8b, - 0xe6, 0x5c, 0x49, 0x7b, 0x72, 0xc4, 0x1f, 0xf6, 0x13, 0xe5, - 0x1f, 0xae, 0xea, 0xf5, 0x7a, 0xc4, 0xf0, 0x5e, 0x88, 0x3c, - 0x39, 0xe1, 0x4d, 0x2f, 0x4e, 00, 0x6, 0x82, 0x5, 0xf, - 0x8e, 0xec, 0x79, 0x63, 0xf9, 0x93, 0x5b, 0x75, 0xfb, 0x8e, - 0x2, 0x87, 0xd5, 0xb0, 0xb4, 0xe9, 0x76, 0x4b, 0xef, 0xeb, - 0xf8, 0x9f, 0x5d, 0x42, 0x1e, 0xce, 0x9c, 0x62, 0x14, 0x51, - 0x45, 0x77, 0x9b, 0x85, 0x79, 0x1f, 0xed, 0x15, 0xe2, 0x86, - 0xd3, 0x3c, 0x35, 0x6d, 0xa4, 0x42, 0xfb, 0x65, 0xd4, 0x1f, - 0x32, 0x1, 0xd7, 0xca, 0x5c, 0x13, 0xf9, 0x9c, 0x7e, 0x46, - 0xbd, 0x72, 0xbe, 0x51, 0xf8, 0xdd, 0xae, 0xb6, 0xb7, 0xf1, - 0xb, 0x50, 0x4d, 0xdb, 0xa1, 0xb3, 0xc5, 0xac, 0x63, 0x3d, - 0x36, 0x8f, 0x9b, 0xff, 00, 0x1e, 0x2d, 0x5f, 0x37, 0x9f, - 0xe2, 0x9e, 0x1b, 0x5, 0x25, 0x1d, 0xe5, 0xa7, 0xf9, 0xfe, - 0x7, 0x6, 0x36, 0xa7, 0x25, 0x16, 0x97, 0x5d, 0xe, 0xa, - 0x8a, 0x28, 0xaf, 0xc8, 0xcf, 0x99, 0xa, 0x28, 0xa9, 0x2d, - 0xe0, 0x7b, 0xab, 0x88, 0xa1, 0x88, 0x6e, 0x92, 0x46, 0x8, - 0xab, 0xea, 0x49, 0xc0, 0x14, 0xd2, 0xbe, 0x88, 0xf, 0x79, - 0xfd, 0x9c, 0xfc, 0x18, 0xb1, 0x5a, 0x5c, 0x78, 0x92, 0xe1, - 0x33, 0x24, 0xa5, 0xa0, 0xb6, 0xc8, 0xe8, 0xa3, 0xef, 0x30, - 0xfa, 0x9e, 0x3f, 0x3, 0xeb, 0x5e, 0xdd, 0x59, 0xbe, 0x1b, - 0xd1, 0x62, 0xf0, 0xee, 0x83, 0x61, 0xa6, 0xc2, 00, 0x4b, - 0x68, 0x56, 0x3c, 0x8e, 0xe4, 0xe, 0x4f, 0xe2, 0x72, 0x7f, - 0x1a, 0xd2, 0xaf, 0xdb, 0xb2, 0xfc, 0x2a, 0xc1, 0x61, 0xa1, - 0x45, 0x6e, 0x96, 0xbe, 0xbd, 0x4f, 0xae, 0xa1, 0x4d, 0x52, - 0xa6, 0xa2, 0x14, 0x51, 0x45, 0x7a, 0x26, 0xe1, 0x45, 0x14, - 0x50, 0x1, 0x59, 0x1e, 0x2e, 0xd3, 0xd7, 0x56, 0xf0, 0xb6, - 0xad, 0x66, 0xe3, 0x2b, 0x35, 0xac, 0x8b, 0xf8, 0xed, 0x38, - 0xfd, 0x6b, 0x5e, 0xaa, 0x6a, 0xf2, 0x88, 0x34, 0x9b, 0xd9, - 0x1b, 0xee, 0xa4, 0xe, 0xc7, 0xf0, 0x53, 0x59, 0xd5, 0x4a, - 0x50, 0x92, 0x7b, 0x59, 0x93, 0x25, 0x78, 0xb4, 0xcf, 0x87, - 0xe8, 0xa2, 0x8a, 0xfc, 0xc, 0xf8, 0xc0, 0xa2, 0x8a, 0x28, - 0x3, 0x7b, 0xc0, 0x57, 0x26, 0xd3, 0xc6, 0xda, 0x14, 0xa0, - 0xe3, 0x17, 0xb0, 0x8f, 0xc0, 0xb8, 0x7, 0xf9, 0xd7, 0xd9, - 0xb5, 0xf1, 0x67, 0x83, 0x62, 0x33, 0x78, 0xbb, 0x44, 0x45, - 0xea, 0xd7, 0xb0, 0x8f, 0xfc, 0x7c, 0x57, 0xda, 0x75, 0xfa, - 0x47, 0xa, 0xb7, 0xec, 0x6a, 0xae, 0x97, 0x5f, 0x91, 0xee, - 0xe5, 0xbf, 0xc, 0x8c, 0x3f, 0x1c, 0x86, 0x6f, 0x5, 0xeb, - 0xa1, 0x33, 0xbb, 0xec, 0x33, 0x63, 0x1f, 0xee, 0x1a, 0xf8, - 0xc2, 0xbe, 0xe6, 0xb9, 0xb7, 0x4b, 0xbb, 0x69, 0x60, 0x90, - 0x6e, 0x8e, 0x54, 0x28, 0xc0, 0xf7, 0x4, 0x60, 0xd7, 0xc5, - 0x9e, 0x25, 0xd0, 0xa7, 0xf0, 0xd6, 0xbd, 0x7d, 0xa6, 0x5c, - 0x29, 0x59, 0x2d, 0xe5, 0x28, 0x9, 0x1f, 0x79, 0x7f, 0x85, - 0xbf, 0x11, 0x83, 0xf8, 0xd7, 0x37, 0x15, 0x52, 0x95, 0xe9, - 0x55, 0xe9, 0xaa, 0x23, 0x32, 0x8b, 0xbc, 0x64, 0x66, 0x51, - 0x45, 0x15, 0xf0, 0x7, 0x8a, 0x14, 0xaa, 0xc5, 0x18, 0x32, - 0x92, 0x18, 0x1c, 0x82, 0x3b, 0x52, 0x51, 0x40, 0x1f, 0x49, - 0xfc, 0x39, 0xf8, 0xe5, 0xa6, 0x6b, 0x16, 0x30, 0x59, 0x6b, - 0x93, 0xae, 0x9f, 0xa9, 0x46, 0xa1, 0xc, 0xf2, 0x9c, 0x45, - 0x37, 0x6c, 0xe7, 0xf8, 0x4f, 0xa8, 0x3f, 0x85, 0x7a, 0xac, - 0x53, 0x47, 0x3c, 0x6b, 0x24, 0x4e, 0xb2, 0x46, 0xc3, 0x21, - 0x90, 0xe4, 0x11, 0xf5, 0xaf, 0x85, 0xeb, 0x63, 0x43, 0xf1, - 0x86, 0xb7, 0xe1, 0xa3, 0xff, 00, 0x12, 0xcd, 0x4e, 0xe6, - 0xd1, 0x7f, 0xe7, 0x9a, 0x3e, 0x50, 0xff, 00, 0xc0, 0x4f, - 0x1f, 0xa5, 0x7d, 0xbe, 0xb, 0x89, 0xaa, 0x52, 0x8a, 0x86, - 0x26, 0x3c, 0xd6, 0xea, 0xb7, 0xff, 00, 0x83, 0xf8, 0x1e, - 0xbd, 0x2c, 0xc2, 0x51, 0x56, 0xa8, 0xae, 0x7d, 0xa7, 0x45, - 0x7c, 0xdf, 0xa0, 0xfe, 0xd1, 0xda, 0xed, 0x8e, 0xd4, 0xd4, - 0xed, 0x2d, 0xf5, 0x38, 0xc7, 0x56, 0x5f, 0xdd, 0x49, 0xf9, - 0x8c, 0x8f, 0xd2, 0xbb, 0xed, 0x13, 0xf6, 0x87, 0xf0, 0xd6, - 0xa4, 0xc1, 0x2f, 0x52, 0xe7, 0x4b, 0x73, 0xfc, 0x52, 0xa6, - 0xf4, 0xfc, 0xd7, 0x27, 0xf3, 0x15, 0xf5, 0x74, 0x33, 0xcc, - 0x5, 0x7f, 0xf9, 0x79, 0xca, 0xfc, 0xf4, 0xff, 00, 0x81, - 0xf8, 0x9e, 0x8c, 0x31, 0x94, 0x67, 0xd6, 0xde, 0xa7, 0xa9, - 0x51, 0x59, 0xba, 0x3f, 0x89, 0x34, 0xaf, 0x10, 0x45, 0xe6, - 0x69, 0xba, 0x85, 0xbd, 0xea, 0xf7, 0xf2, 0x64, 0xc, 0x47, - 0xd4, 0x75, 0x15, 0xa5, 0x5e, 0xe4, 0x65, 0x19, 0xae, 0x68, - 0xbb, 0xa3, 0xb1, 0x34, 0xd5, 0xd0, 0x51, 0x45, 0x15, 0x43, - 0xa, 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa2, 0x80, 0xa, 0xf2, - 0xf, 0xda, 0x1e, 0xeb, 0xca, 0xd0, 0x36, 0xe7, 0xfe, 0x59, - 0x9a, 0xf5, 0xfa, 0xf0, 0x6f, 0xda, 0x5e, 0xf8, 0x47, 0x61, - 0xe5, 0x67, 0x91, 0x1d, 0x79, 0x19, 0xb4, 0xb9, 0x30, 0x75, - 0x1f, 0x91, 0xc1, 0x8e, 0x97, 0x2e, 0x1e, 0x4c, 0xf9, 0x7, - 0x53, 0x6f, 0x95, 0xcf, 0xb9, 0xaf, 0x34, 0xf0, 0x2d, 0x92, - 0xeb, 0x9f, 0xb5, 0x7, 0xc3, 0x3b, 0x26, 0x1b, 0x81, 0xd7, - 0xad, 0xe4, 0xc7, 0xfb, 0x84, 0xbf, 0xfe, 0xcb, 0x5e, 0x8d, - 0xaa, 0x36, 0x22, 0x63, 0xec, 0x6b, 0x94, 0xfd, 0x9b, 0xec, - 0xff, 00, 0xb6, 0x3f, 0x6c, 0xbf, 0x87, 0xf1, 0xe3, 0x70, - 0x86, 0x7b, 0x9b, 0x93, 0xed, 0xb2, 0xda, 0x53, 0x9f, 0xcf, - 0x15, 0xf2, 0xd9, 0x24, 0x7d, 0xf3, 0xf2, 0x3c, 0xb1, 0x7b, - 0x4c, 0xe2, 0x97, 0x95, 0xd9, 0xfa, 0xcf, 0x45, 0x14, 0x57, - 0xe8, 0x7, 0xed, 0x61, 0x45, 0x14, 0x50, 0x1, 0x5c, 0x3f, - 0xc6, 0x8f, 0x18, 0xf, 0x4, 0x7c, 0x37, 0xd6, 0x35, 0x5, - 0x62, 0xb7, 0xf, 0x17, 0xd9, 0xad, 0xf6, 0xf5, 0xf3, 0x1f, - 0xe5, 0x53, 0xf8, 0x64, 0x9f, 0xc2, 0xbb, 0x8a, 0xf9, 0x5f, - 0xf6, 0xbf, 0xf1, 0x87, 0xda, 0xb5, 0x6d, 0x2b, 0xc3, 0x31, - 0x1f, 0x92, 0xd9, 0x3e, 0xd9, 0x39, 0xe7, 0xef, 0x36, 0x42, - 0x8f, 0xcb, 0x27, 0xf1, 0xaf, 0x37, 0x31, 0xc4, 0x7d, 0x5b, - 0xd, 0x39, 0xf5, 0xd9, 0x7a, 0xb3, 0xca, 0xcd, 0x31, 0x3f, - 0x54, 0xc2, 0x4e, 0xa2, 0xdf, 0x65, 0xea, 0xff, 00, 0xab, - 0x9f, 0x3e, 0x58, 0x5a, 0xbd, 0xe5, 0xd4, 0x30, 0x46, 0x37, - 0x3b, 0xb0, 0x50, 0x7, 0xa9, 0xaf, 0xd0, 0x3f, 0x86, 0x9e, - 0x19, 0x8f, 0xc2, 0x7e, 0xc, 0xd3, 0x6c, 0x11, 0x2, 0xb8, - 0x88, 0x34, 0x9e, 0xec, 0x47, 0x35, 0xf2, 0x27, 0xec, 0xf7, - 0xe1, 0x13, 0xe2, 0x9f, 0x1f, 0x5a, 0x97, 0x5c, 0xdb, 0xdb, - 0x7e, 0xf5, 0xcf, 0xd3, 0xa5, 0x7d, 0xc4, 0xa0, 0x28, 00, - 0x70, 0x7, 0x15, 0xf3, 0xdc, 0x3d, 0x87, 0xd2, 0x78, 0x87, - 0xe8, 0xbf, 0x53, 0xc2, 0xe1, 0xcc, 0x37, 0x25, 0x39, 0x57, - 0x7d, 0x74, 0x42, 0xd1, 0x45, 0x15, 0xf6, 0x67, 0xd9, 0x5, - 0x14, 0x51, 0x40, 0x5, 0x7e, 0x55, 0x7f, 0xc1, 0x6d, 0x3c, - 0x2b, 0xa8, 0x36, 0xa3, 0xf0, 0xc7, 0xc4, 0x81, 0x19, 0xb4, - 0xa5, 0x8a, 0xef, 0x4f, 0x67, 0x1d, 0x12, 0x62, 0x52, 0x40, - 0xf, 0xd5, 0x43, 0x7f, 0xdf, 0x26, 0xbf, 0x52, 0xb5, 0x4d, - 0x5e, 0xc7, 0x43, 0xb3, 0x6b, 0xbd, 0x46, 0xf6, 0xde, 0xc2, - 0xd5, 0x48, 0x56, 0x9e, 0xea, 0x55, 0x8d, 0x1, 0x27, 00, - 0x16, 0x62, 0x7, 0x24, 0x81, 0x5e, 0x73, 0xf1, 0xc7, 0xe1, - 0xf, 0x82, 0xff, 00, 0x69, 0xef, 0x86, 0x1a, 0x8f, 0x83, - 0x35, 0xeb, 0x98, 0xee, 0xf4, 0xeb, 0xbd, 0xb2, 0xc5, 0x73, - 0x63, 0x3a, 0x99, 0x6d, 0xa6, 0x5e, 0x52, 0x54, 0x23, 0x3c, - 0x83, 0xdb, 0xa1, 0x4, 0x83, 0xc1, 0xa0, 0x4f, 0x53, 0xf9, - 0xcd, 0xf0, 0xaf, 0x8a, 0xb5, 0x8f, 0x3, 0xf8, 0x8b, 0x4f, - 0xd7, 0xb4, 0xd, 0x46, 0xe3, 0x49, 0xd6, 0x74, 0xf9, 0x44, - 0xf6, 0xb7, 0xb6, 0xaf, 0xb6, 0x48, 0x9c, 0x74, 0x20, 0xfe, - 0x9e, 0xe0, 0x90, 0x6b, 0xd8, 0x7e, 0x39, 0x7e, 0xda, 0xdf, - 0x14, 0xbf, 0x68, 0xbf, 0x1, 0x68, 0xfe, 0x13, 0xf1, 0xce, - 0xa9, 0x69, 0xa9, 0x58, 0x69, 0x97, 0x42, 0xf1, 0x27, 0x86, - 0xd1, 0x60, 0x9a, 0x69, 0x2, 0x32, 0x3, 0x29, 0x5c, 0x2b, - 0x60, 0x33, 0x74, 0x51, 0xc9, 0xaf, 0x44, 0xf8, 0xd9, 0xff, - 00, 0x4, 0xbf, 0xf8, 0xd9, 0xf0, 0xa2, 0xfa, 0xea, 0x5d, - 0x27, 0x44, 0x1e, 0x39, 0xd0, 0x91, 0xd8, 0xc5, 0x7d, 0xa1, - 0xb6, 0xf9, 0x76, 0x67, 0x82, 0xf0, 0x1c, 0x38, 0x6c, 0x76, - 0x50, 0xc3, 0xde, 0xbe, 0x79, 0xb8, 0xf8, 0x25, 0xf1, 0x12, - 0xd2, 0xe4, 0xdb, 0xcd, 0xe0, 0x3f, 0x12, 0xc5, 0x38, 0x38, - 0xf2, 0xdb, 0x48, 0xb8, 0xd, 0x9f, 0xa6, 0xca, 0xa2, 0x35, - 0x3a, 0x5f, 0xd9, 0xdb, 0xf6, 0x95, 0xf1, 0x47, 0xec, 0xc5, - 0xe2, 0xd, 0x5f, 0x5f, 0xf0, 0x7d, 0xa6, 0x96, 0xfa, 0xe5, - 0xfd, 0x9f, 0xd8, 0x56, 0xf7, 0x51, 0xb7, 0x33, 0x1b, 0x68, - 0xcb, 0x6, 0x6f, 0x2c, 0x6e, 0x3, 0x2c, 0x55, 0x73, 0x9c, - 0xfd, 0xd1, 0x5c, 0xdf, 0xc5, 0x9f, 0x8d, 0x1e, 0x35, 0xf8, - 0xe5, 0xe2, 0x63, 0xaf, 0xf8, 0xe3, 0xc4, 0x37, 0x7e, 0x20, - 0xd4, 0x82, 0x94, 0x8d, 0xee, 0x8, 0x9, 0xa, 0x67, 0x3b, - 0x23, 0x45, 0x1, 0x51, 0x7d, 0x94, 0xa, 0xf4, 0xdf, 0x86, - 0x7f, 0xb0, 0x3f, 0xc7, 0x6f, 0x8a, 0x97, 0x31, 0x2e, 0x99, - 0xe0, 0xd, 0x47, 0x4c, 0xb5, 0x7e, 0xb7, 0xba, 0xda, 0xfd, - 0x86, 0x15, 0x1e, 0xa7, 0xcc, 0xc3, 0x1f, 0xc1, 0x4d, 0x7e, - 0x8b, 0xfe, 0xc9, 0xff, 00, 0xf0, 0x4a, 0xf, 0xb, 0xfc, - 0x27, 0xbd, 0xb2, 0xf1, 0x37, 0xc4, 0xbb, 0xb8, 0x3c, 0x65, - 0xe2, 0x6b, 0x79, 0x16, 0x6b, 0x7d, 0x3e, 0x10, 0x46, 0x9d, - 0x6a, 0xe3, 0x90, 0x48, 0x60, 0xc, 0xcc, 0xf, 0x76, 0x1, - 0x78, 0x1f, 0x2f, 0x7a, 0x2, 0xcc, 0xf3, 0xaf, 0xf8, 0x25, - 0x8f, 0xec, 0x3b, 0x79, 0xa4, 0xdd, 0xda, 0xfc, 0x65, 0xf1, - 0xde, 0x9b, 0xf6, 0x79, 0xc, 0x64, 0xf8, 0x73, 0x4d, 0xba, - 0x8c, 0x89, 0x13, 0x3c, 0x1b, 0xb7, 0x53, 0xd3, 0x23, 0x21, - 0x7, 0x5e, 0x4b, 0x7a, 0x57, 0xea, 0x25, 0x22, 0xa8, 0x45, - 0xa, 0xa0, 0x2a, 0x81, 0x80, 00, 0xc0, 0x2, 0xa2, 0xbc, - 0xbb, 0x8e, 0xc6, 0xd2, 0x6b, 0x99, 0x9b, 0x64, 0x30, 0xa1, - 0x91, 0xd8, 0xf6, 00, 0x64, 0xd4, 0xb7, 0x6d, 0x59, 0x7b, - 0x23, 0xe7, 0x5f, 0xda, 0x33, 0xc4, 0x23, 0x50, 0xf1, 0x4d, - 0xae, 0x97, 0x1b, 0xe6, 0x3b, 0x8, 0xb2, 0xe0, 0x1e, 0x3c, - 0xc7, 0xe4, 0xff, 00, 0xe3, 0xa1, 0x7f, 0x3a, 0xf2, 0x4a, - 0xbf, 0xaf, 0x6a, 0xb2, 0x6b, 0xba, 0xd5, 0xf6, 0xa1, 0x29, - 0x26, 0x4b, 0x99, 0x9e, 0x53, 0x9e, 0xd9, 0x39, 0x3, 0xf0, - 0x1c, 0x55, 0xa, 0xfc, 0x3b, 0x1f, 0x89, 0x78, 0xbc, 0x4c, - 0xeb, 0x77, 0x7f, 0x87, 0x4f, 0xc0, 0xf9, 0x1a, 0xd5, 0x3d, - 0xad, 0x47, 0x3e, 0xe1, 0x45, 0x14, 0x57, 0x1, 0x89, 0xdd, - 0x7c, 0x28, 0xf8, 0x72, 0x9f, 0x10, 0xf5, 0x4b, 0xc8, 0xae, - 0x66, 0x96, 0xda, 0xce, 0xda, 0x20, 0xcd, 0x24, 0x20, 0x67, - 0x79, 0x3f, 0x28, 0xe4, 0x63, 0xb3, 0x7e, 0x55, 0xe8, 0xf3, - 0x7e, 0xcc, 0x96, 0x4, 0x1f, 0x27, 0x5c, 0xb9, 0x43, 0xdb, - 0x7c, 0x2a, 0xdf, 0xc8, 0x8a, 0xde, 0xf8, 0x1, 0xe1, 0xd6, - 0xd1, 0xbc, 0xe, 0x2e, 0xe5, 0x5d, 0xb3, 0x6a, 0x32, 0x99, - 0xf9, 0xeb, 0xb0, 0x70, 0xbf, 0xc8, 0x9f, 0xc6, 0xbd, 0x32, - 0xbf, 0x50, 0xcb, 0x32, 0x5c, 0x2c, 0xf0, 0x70, 0x96, 0x22, - 0x9d, 0xe4, 0xf5, 0xeb, 0xd7, 0x6f, 0xc0, 0xfa, 0x1c, 0x3e, - 0x12, 0x9b, 0xa4, 0x9c, 0xd6, 0xac, 0xf9, 0xa7, 0xc5, 0x1f, - 0xb3, 0xd6, 0xb7, 0xa2, 0x59, 0xc9, 0x75, 0xa7, 0xdc, 0xc7, - 0xab, 0xa4, 0x63, 0x2d, 0x14, 0x68, 0x52, 0x5c, 0x7b, 0x2e, - 0x48, 0x3f, 0x9e, 0x6b, 0xca, 0xd9, 0x4a, 0xb1, 0x56, 0x4, - 0x10, 0x70, 0x41, 0xea, 0x2b, 0xee, 0xaa, 0xf9, 0x77, 0xe3, - 0xd7, 0x85, 0xe2, 0xf0, 0xff, 00, 0x8d, 0x3e, 0xd3, 0x6c, - 0x81, 0x20, 0xd4, 0x63, 0xfb, 0x41, 0x51, 0xd0, 0x49, 0x92, - 0x1f, 0x1f, 0xa1, 0xfc, 0x6b, 0xc5, 0xcf, 0x32, 0x5a, 0x58, - 0x3a, 0x4b, 0x11, 0x87, 0xd1, 0x6c, 0xd6, 0xff, 00, 0x33, - 0x93, 0x17, 0x84, 0x8d, 0x28, 0xf3, 0xc3, 0x63, 0xcd, 0xa8, - 0xa2, 0x8a, 0xf8, 0x93, 0xc9, 0xa, 0xf5, 0xdf, 0xd9, 0xbf, - 0x5b, 0x7b, 0x5f, 0x14, 0xde, 0xe9, 0x85, 0xbf, 0x73, 0x77, - 0x6f, 0xe6, 0x5, 0xff, 00, 0x6d, 0xf, 0x1f, 0xa1, 0x6a, - 0xf2, 0x2a, 0xed, 0xbe, 0xc, 0x5d, 0x7d, 0x93, 0xe2, 0x5e, - 0x8a, 0x73, 0x80, 0xee, 0xf1, 0x9f, 0xc5, 0x18, 0xf, 0xd7, - 0x15, 0xea, 0x65, 0x75, 0x5d, 0x1c, 0x6d, 0x29, 0x2e, 0xe9, - 0x7d, 0xfa, 0x1d, 0x18, 0x79, 0x72, 0xd6, 0x8b, 0xf3, 0x3e, - 0xb5, 0xa2, 0x8a, 0x2b, 0xf6, 0xc3, 0xeb, 0x42, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0xbe, 0x61, 0xfd, 0xa0, - 0xb5, 0xef, 0xed, 0x5f, 0x1d, 0x1b, 0x35, 0x6c, 0xc5, 0xa7, - 0xc2, 0xb1, 0x63, 0xfd, 0xb6, 0xf9, 0x9b, 0xf9, 0xa8, 0xfc, - 0x2b, 0xe9, 0xa9, 0xe7, 0x4b, 0x68, 0x24, 0x9a, 0x43, 0xb6, - 0x38, 0xd4, 0xbb, 0x13, 0xd8, 0x1, 0x93, 0x5f, 0x14, 0xf8, - 0x8f, 0x57, 0x6d, 0x7b, 0x5e, 0xd4, 0x35, 0x17, 0xce, 0x6e, - 0xa7, 0x79, 0x70, 0x7b, 0x2, 0x78, 0x1f, 0x96, 0x2b, 0xe3, - 0x38, 0x9f, 0x11, 0xc9, 0x86, 0x85, 0x15, 0xf6, 0x9f, 0xe0, - 0xbf, 0xe0, 0xd8, 0xf2, 0x73, 0x19, 0xda, 0xa, 0x1d, 0xcc, - 0xea, 0x28, 0xa2, 0xbf, 0x32, 0x3c, 00, 0xae, 0x8f, 0xe1, - 0xd6, 0x8c, 0x75, 0xff, 00, 0x1b, 0xe8, 0xd6, 0x7b, 0x77, - 0x23, 0x5c, 0x2b, 0xb8, 0xc7, 0xf0, 0x2f, 0xcc, 0xdf, 0xa0, - 0x35, 0xce, 0x57, 0xb0, 0x7e, 0xcd, 0x9a, 0x3f, 0xda, 0x7c, - 0x49, 0xa9, 0x6a, 0x2c, 0x32, 0xb6, 0xb6, 0xe2, 0x35, 0x3f, - 0xed, 0x39, 0xff, 00, 0x5, 0x3f, 0x9d, 0x7a, 0x59, 0x6d, - 0xf, 0xac, 0xe3, 0x29, 0xd2, 0xee, 0xff, 00, 0x5, 0xab, - 0x37, 0xa1, 0xf, 0x69, 0x56, 0x31, 0x3e, 0x8b, 0xa2, 0x8a, - 0x2b, 0xf6, 0xe3, 0xeb, 0x82, 0x8a, 0x28, 0xa0, 0x8, 0xee, - 0x26, 0x5b, 0x6b, 0x79, 0x65, 0x73, 0x84, 0x8d, 0x4b, 0x13, - 0xec, 0x6, 0x6b, 0xe2, 0x2d, 0x52, 0xf9, 0xf5, 0x3d, 0x4e, - 0xee, 0xf2, 0x43, 0x97, 0xb8, 0x95, 0xe5, 0x6f, 0xab, 0x12, - 0x7f, 0xad, 0x7d, 0x89, 0xe3, 0xa9, 0xda, 0xd7, 0xc1, 0x5a, - 0xf4, 0xa8, 0x70, 0xc9, 0x63, 0x31, 0x7, 0xdf, 0x61, 0xaf, - 0x8c, 0x6b, 0xf3, 0xce, 0x2a, 0xa8, 0xf9, 0xa9, 0x53, 0xf5, - 0x7f, 0x91, 0xe1, 0xe6, 0x52, 0xd6, 0x31, 0xa, 0x28, 0xa2, - 0xbe, 0x8, 0xf1, 0x82, 0xba, 0xbf, 0x85, 0x9a, 0x60, 0xd5, - 0xbe, 0x20, 0xe8, 0x70, 0x30, 0xca, 0x2d, 0xc0, 0x95, 0xbe, - 0x88, 0xb, 0x7f, 0xec, 0xb5, 0xca, 0x57, 0xa2, 0x7c, 0x4, - 0x50, 0x7e, 0x24, 0xd9, 0x13, 0xd4, 0x45, 0x29, 0x1f, 0xf7, - 0xc1, 0xaf, 0x43, 0x2f, 0x82, 0xa9, 0x8b, 0xa5, 0x17, 0xd6, - 0x4b, 0xf3, 0x36, 0xa2, 0xb9, 0xaa, 0xc5, 0x79, 0xa3, 0xea, - 0x7a, 0x28, 0xa2, 0xbf, 0x70, 0x3e, 0xbc, 0x28, 0xa2, 0x8a, - 00, 0x28, 0xa2, 0x8a, 00, 0x2b, 0x95, 0xf8, 0xa3, 0xaa, - 0xd, 0x1f, 0xe1, 0xfe, 0xb9, 0x71, 0x9c, 0x31, 0xb7, 0x68, - 0x97, 0xfd, 0xe7, 0xf9, 0x47, 0xf3, 0xae, 0xaa, 0xbc, 0x67, - 0xf6, 0x92, 0xf1, 0x1a, 0xdb, 0x68, 0xb6, 0x1a, 0x2a, 0x37, - 0xef, 0x6e, 0xa4, 0xf3, 0xe4, 0x1e, 0x88, 0xbd, 0x3f, 0x36, - 0x3f, 0xf8, 0xed, 0x79, 0x99, 0x9d, 0x75, 0x86, 0xc1, 0xd4, - 0xa8, 0xfb, 0x69, 0xea, 0xf4, 0x47, 0x3e, 0x22, 0x7e, 0xce, - 0x94, 0xa4, 0x7c, 0xf5, 0x45, 0x14, 0x57, 0xe2, 0x47, 0xc9, - 0x5, 0x14, 0x51, 0x40, 0x1d, 0x6f, 0xc2, 0x7b, 0x3f, 0xb7, - 0x7c, 0x45, 0xd0, 0xa3, 0xc6, 0x42, 0xdc, 0x9, 0xf, 0xfc, - 0x4, 0x16, 0xfe, 0x95, 0xf5, 0xf5, 0x7c, 0xe3, 0xfb, 0x37, - 0xe8, 0x7f, 0x6c, 0xf1, 0x45, 0xee, 0xa6, 0xcb, 0x94, 0xb2, - 0x83, 0x62, 0x9f, 0xf6, 0xdc, 0xe3, 0xf9, 0x6, 0xfc, 0xeb, - 0xe8, 0xea, 0xfd, 0x4f, 0x86, 0x68, 0xba, 0x78, 0x27, 0x37, - 0xf6, 0x9b, 0x7f, 0x76, 0x87, 0xd1, 0x65, 0xf1, 0xb5, 0x2b, - 0xf7, 0x61, 0x5e, 0x6b, 0xf1, 0x7f, 0xe1, 0x58, 0xf1, 0xbd, - 0xa2, 0xdf, 0xd8, 0x5, 0x8f, 0x58, 0xb7, 0x42, 00, 0x3c, - 0x9, 0xd7, 0xfb, 0xa4, 0xfa, 0xfa, 0x1f, 0xc3, 0xe9, 0xe9, - 0x54, 0x57, 0xd1, 0xe2, 0x70, 0xd4, 0xf1, 0x74, 0x9d, 0x1a, - 0xaa, 0xe9, 0x9d, 0xf5, 0x29, 0xc6, 0xac, 0x5c, 0x65, 0xb1, - 0xf0, 0xdd, 0xed, 0x8d, 0xc6, 0x9b, 0x75, 0x25, 0xb5, 0xd4, - 0x32, 0x5b, 0xdc, 0x46, 0x76, 0xbc, 0x52, 0x2e, 0xd6, 0x53, - 0xee, 0x2a, 0xa, 0xfb, 0x17, 0xc6, 0x3f, 0xf, 0x34, 0x4f, - 0x1c, 0x42, 0xa3, 0x52, 0xb6, 0xfd, 0xfa, 0xc, 0x25, 0xcc, - 0x47, 0x6c, 0x8b, 0xf8, 0xf7, 0x1e, 0xc7, 0x22, 0xbc, 0x3f, - 0xc5, 0x3f, 0xb3, 0xde, 0xbb, 0xa4, 0x34, 0x92, 0xe9, 0x4f, - 0x1e, 0xaf, 0x6a, 0x39, 0xa, 0xe, 0xc9, 0x80, 0xff, 00, - 0x74, 0xf0, 0x7f, 0x3, 0xf8, 0x57, 0xe6, 0x38, 0xee, 0x1f, - 0xc5, 0x61, 0x5b, 0x95, 0x25, 0xcf, 0x1f, 0x2d, 0xfe, 0x6b, - 0xfc, 0x8f, 0x9e, 0xad, 0x82, 0xa9, 0x4f, 0x58, 0xea, 0x8f, - 0x2a, 0xa2, 0xac, 0x5f, 0x69, 0xf7, 0x5a, 0x65, 0xc3, 0x41, - 0x79, 0x6f, 0x2d, 0xac, 0xcb, 0xd6, 0x39, 0x90, 0xab, 0xf, - 0xc0, 0xd5, 0x7a, 0xf9, 0x86, 0x9c, 0x5d, 0x99, 0xe7, 0xec, - 0x14, 0x51, 0x45, 0x20, 0xa, 0x28, 0xa2, 0x80, 0x25, 0xb5, - 0xbb, 0x9e, 0xc6, 0x75, 0x9a, 0xda, 0x69, 0x2d, 0xe6, 0x5e, - 0x56, 0x48, 0x9c, 0xab, 0xf, 0xa1, 0x15, 0xe9, 0x5e, 0x11, - 0xf8, 0xfb, 0xaf, 0x68, 0x6e, 0x91, 0x6a, 0x64, 0x6b, 0x36, - 0x9d, 0xf, 0x98, 0x42, 0xca, 0xbf, 0x46, 0xc7, 0x3f, 0x8e, - 0x7e, 0xb5, 0xe6, 0x14, 0x57, 0x66, 0x1b, 0x19, 0x5f, 0x9, - 0x2e, 0x6a, 0x13, 0x6b, 0xf2, 0xfb, 0xb6, 0x35, 0xa7, 0x56, - 0x74, 0x9d, 0xe0, 0xec, 0x7d, 0x8f, 0xe0, 0xdf, 0x1f, 0xe8, - 0xfe, 0x38, 0xb4, 0xf3, 0x74, 0xeb, 0x8f, 0xdf, 0x28, 0xfd, - 0xe5, 0xb4, 0xbf, 0x2c, 0xa9, 0xf5, 0x1d, 0xc7, 0xb8, 0xe2, - 0xba, 0x4a, 0xf8, 0x7b, 0x4b, 0xd5, 0x2e, 0xf4, 0x5d, 0x42, - 0xb, 0xdb, 0x19, 0xda, 0xde, 0xea, 0x16, 0xdc, 0x92, 0x27, - 0x50, 0x7f, 0xcf, 0x6a, 0xfa, 0xa3, 0xe1, 0x4f, 0xc4, 0x88, - 0xbc, 0x7d, 0xa3, 0x91, 0x36, 0x23, 0xd5, 0x6d, 0x80, 0x17, - 0x31, 0x81, 0x85, 0x6c, 0xf4, 0x75, 0xf6, 0x38, 0xfc, 0xf, - 0xe1, 0x5f, 0xa4, 0xe5, 0x19, 0xdc, 0x71, 0xcf, 0xd8, 0xd6, - 0x56, 0x9f, 0xe0, 0xff, 00, 0xe0, 0xf9, 0x1e, 0xf6, 0x17, - 0x16, 0xab, 0x7b, 0x93, 0xd1, 0xfe, 0x67, 0x73, 0x45, 0x14, - 0x57, 0xd5, 0x9e, 0x90, 0x51, 0x45, 0x14, 00, 0x57, 0xcc, - 0xff, 00, 0xb4, 0xf5, 0xdf, 0xef, 0xd9, 0x33, 0xd1, 0x71, - 0x5f, 0x4c, 0x57, 0xc9, 0xbf, 0xb4, 0xbd, 0xd1, 0x7d, 0x52, - 0x55, 0xcf, 0xf1, 0x1a, 0xf9, 0xdc, 0xf6, 0x56, 0xc1, 0xb5, - 0xdc, 0xf1, 0xb3, 0x69, 0x72, 0xe1, 0x64, 0x7c, 0xdf, 0xac, - 0x36, 0xdb, 0x77, 0x3e, 0xd5, 0x4f, 0xf6, 0x27, 0xb6, 0xfe, - 0xd1, 0xfd, 0xb2, 0xf4, 0xc7, 0x20, 0x37, 0xd9, 0x34, 0xab, - 0xe9, 0xf9, 0xed, 0x95, 0x54, 0xcf, 0xfe, 0x3f, 0x53, 0x78, - 0x81, 0xf6, 0xd9, 0xc8, 0x7f, 0xd9, 0x35, 0x77, 0xfe, 0x9, - 0xe7, 0x69, 0xf6, 0xef, 0xda, 0xbb, 0x5c, 0xb9, 0xea, 0x2d, - 0x3c, 0x3b, 0x3f, 0xe6, 0xd3, 0xc2, 0x3f, 0xa1, 0xaf, 0x27, - 0x23, 0x8e, 0xb7, 0x3f, 0x34, 0xc8, 0x23, 0xcf, 0x9b, 0xa7, - 0xd9, 0x33, 0xf4, 0xee, 0x8a, 0x28, 0xaf, 0xb8, 0x3f, 0x64, - 0xa, 0x28, 0xa2, 0x80, 0x23, 0xb9, 0xb8, 0x8e, 0xd2, 0xde, - 0x59, 0xe5, 0x60, 0x91, 0x44, 0xa5, 0xdd, 0x8f, 0x40, 00, - 0xc9, 0x35, 0xf9, 0xe1, 0xe3, 0xcf, 0x13, 0xc9, 0xe3, 0x3f, - 0x19, 0xea, 0xfa, 0xcb, 0x9c, 0x8b, 0xbb, 0x86, 0x68, 0xfd, - 0xa3, 0x1c, 0x20, 0xff, 00, 0xbe, 0x40, 0xaf, 0xaf, 0x3f, - 0x69, 0x7f, 0x18, 0x9f, 0xa, 0x7c, 0x33, 0xbb, 0x82, 0x17, - 0xdb, 0x77, 0xaa, 0xb7, 0xd8, 0xa3, 0xf5, 0xda, 0xc0, 0x97, - 0x3f, 0xf7, 0xc8, 0x3f, 0x98, 0xaf, 0x8d, 0x7c, 0x3d, 0xa5, - 0x3e, 0xb3, 0xac, 0xd9, 0xd9, 0x46, 0x9, 0x69, 0xa4, 0x54, - 00, 0x7b, 0x9a, 0xf8, 0x7e, 0x20, 0xc4, 0x39, 0x4e, 0x18, - 0x78, 0xf4, 0xd7, 0xe6, 0xf6, 0x3e, 0xb, 0x88, 0x6b, 0xba, - 0xb5, 0xa9, 0xe1, 0x21, 0xd3, 0x57, 0xea, 0xf6, 0xfe, 0xbc, - 0xcf, 0xab, 0x3f, 0x65, 0x6f, 0x8, 0x7f, 0x65, 0x78, 0x5a, - 0x6d, 0x5e, 0x58, 0xf6, 0xcd, 0x76, 0xc5, 0x54, 0x91, 0xfc, - 0x22, 0xbd, 0xd6, 0xb2, 0xbc, 0x2d, 0xa2, 0xc7, 0xe1, 0xef, - 0xf, 0xd8, 0xe9, 0xf1, 0x28, 0x55, 0x82, 0x20, 0xbc, 0xe, - 0xfd, 0xeb, 0x56, 0xbe, 0xab, 0x5, 0x87, 0x58, 0x5c, 0x3c, - 0x29, 0x76, 0x5f, 0x8f, 0x53, 0xec, 0xb0, 0x94, 0x16, 0x1e, - 0x84, 0x69, 0x2e, 0x88, 0x28, 0xa2, 0x8a, 0xee, 0x3a, 0xc2, - 0x8a, 0x28, 0xa0, 0xf, 0xcb, 0xbf, 0xf8, 0x2d, 0x1f, 0xc6, - 0x4b, 0xfb, 0x3b, 0x6f, 0x5, 0xfc, 0x31, 0xb3, 0x73, 0x15, - 0x8d, 0xea, 0x36, 0xb5, 0xa8, 0x60, 0x90, 0x65, 0xda, 0xc6, - 0x38, 0x50, 0xf6, 0x20, 0x1d, 0xed, 0xf5, 0xb, 0xe9, 0x5f, - 0x9b, 0x5f, 0xb, 0x34, 0xfd, 0x7b, 0xc5, 0x3e, 0x3e, 0xf0, - 0xe7, 0x86, 0xb4, 0x3d, 0x52, 0xf3, 0x4f, 0xbc, 0xd5, 0xf5, - 0x8, 0x2c, 0x22, 0x92, 0xda, 0x77, 0x8f, 0x61, 0x92, 0x40, - 0x9b, 0xbe, 0x52, 0x3a, 0x67, 0x3f, 0x85, 0x7e, 0x9a, 0xff, - 00, 0xc1, 0x49, 0xec, 0xfe, 0xd, 0xfe, 0xd2, 0xba, 0x1d, - 0xa6, 0xa7, 0xe1, 0xbf, 0x8a, 0xfe, 0x12, 0xb7, 0xf8, 0x87, - 0xe1, 0x7f, 0x36, 0xd9, 0x74, 0xfb, 0xbd, 0x52, 0x28, 0x56, - 0xee, 0x2d, 0xdf, 0x3c, 0x5, 0x98, 0x80, 0xae, 0xac, 0x9, - 0x5c, 0x9c, 0x64, 0xb0, 0x38, 0xce, 0x47, 0xe5, 0xa7, 0x85, - 0xfc, 0x47, 0xa8, 0x78, 0xb, 0xc5, 0xfa, 0x56, 0xb9, 0xa6, - 0xca, 0xb1, 0xea, 0x9a, 0x3d, 0xec, 0x77, 0x70, 0x48, 0xac, - 0x1d, 0x44, 0x91, 0x38, 0x65, 0xe4, 0x1c, 0x30, 0xca, 0xf6, - 0x38, 0x22, 0xa9, 0x10, 0xf7, 0x3f, 0xa6, 0x8f, 0x9, 0x78, - 0x6a, 0xd7, 0xc1, 0xde, 0x17, 0xd2, 0xb4, 0x2b, 0x22, 0xe6, - 0xd7, 0x4e, 0xb6, 0x8e, 0xd6, 0x36, 0x91, 0x8b, 0x3b, 0x4, - 0x50, 0x37, 0x31, 0x3c, 0x92, 0x71, 0x92, 0x4f, 0x52, 0x6b, - 0x5e, 0xbe, 0x30, 0xf8, 0x1b, 0xff, 00, 0x5, 0x54, 0xf8, - 0x37, 0xf1, 0x2b, 0x43, 0xb4, 0x5f, 0x15, 0xea, 0xa7, 0xc0, - 0x3e, 0x22, 0xd8, 0x5, 0xc5, 0xa6, 0xa6, 0x8c, 0xd6, 0xc5, - 0xf1, 0xc9, 0x8e, 0x75, 0x5, 0x76, 0xfa, 0x6e, 0xda, 0x7d, - 0xab, 0xd9, 0xad, 0x7f, 0x6d, 0x3f, 0x80, 0xf7, 0x87, 0x11, - 0xfc, 0x5b, 0xf0, 0x88, 0x3f, 0xf4, 0xd3, 0x55, 0x89, 0x3f, - 0xf4, 0x22, 0x2a, 0x4b, 0x3d, 0xa6, 0x8a, 0xf3, 0x1d, 0x3f, - 0xf6, 0xa0, 0xf8, 0x3d, 0xab, 0x48, 0x12, 0xcb, 0xe2, 0x97, - 0x83, 0xee, 0x9c, 0xf4, 0x58, 0xb5, 0xcb, 0x66, 0x3f, 0xfa, - 0x1d, 0x77, 0x7a, 0xf, 0x89, 0xb4, 0x8f, 0x14, 0xda, 0x35, - 0xd6, 0x8d, 0xaa, 0xd9, 0x6a, 0xd6, 0xaa, 0xdb, 0xc, 0xd6, - 0x37, 0x9, 0x32, 0x6, 0xc6, 0x70, 0x4a, 0x92, 0x33, 0x82, - 0x3f, 0x3a, 00, 0xd3, 0xaf, 0x36, 0xf8, 0xf9, 0xe2, 0x1f, - 0xec, 0x6f, 0x2, 0x4b, 0x6b, 0x1c, 0x9b, 0x27, 0xd4, 0x24, - 0x10, 00, 0xf, 0x3b, 0x3a, 0xbf, 0xe8, 0x31, 0xff, 00, - 0x2, 0xaf, 0x49, 0xaf, 0x98, 0xff, 00, 0x68, 0x3f, 0x10, - 0x7f, 0x6a, 0xf8, 0xdf, 0xec, 0x28, 0xfb, 0xa0, 0xd3, 0xe2, - 0x11, 0xe0, 0x74, 0xde, 0xdf, 0x33, 0x7f, 0xec, 0xa3, 0xf0, - 0xaf, 0x3, 0x3c, 0xc5, 0x7d, 0x57, 0x3, 0x36, 0xb7, 0x96, - 0x8b, 0xe7, 0xff, 00, 0x2, 0xe7, 0x16, 0x32, 0xa7, 0xb3, - 0xa2, 0xfc, 0xf4, 0x3c, 0xc2, 0x8a, 0x28, 0xaf, 0xc7, 0x8f, - 0x97, 0xa, 0xb7, 0xa4, 0xe9, 0xb3, 0x6b, 0x3a, 0xa5, 0xa5, - 0x8c, 00, 0xb4, 0xd7, 0x32, 0xac, 0x4a, 00, 0xee, 0x4e, - 0x2a, 0xa5, 0x7a, 0x8f, 0xec, 0xf3, 0xa0, 0x1d, 0x4f, 0xc6, - 0xad, 0x7e, 0xe9, 0x98, 0x74, 0xf8, 0x4b, 0xee, 0x23, 0x8f, - 0x31, 0xbe, 0x55, 0x1f, 0x96, 0xe3, 0xf8, 0x57, 0x6e, 0xb, - 0xe, 0xf1, 0x58, 0x98, 0x51, 0x5d, 0x5f, 0xe1, 0xd7, 0xf0, - 0x35, 0xa5, 0xf, 0x69, 0x35, 0xe, 0xe7, 0xd2, 0x3a, 0x75, - 0x8c, 0x7a, 0x66, 0x9f, 0x6d, 0x69, 0x8, 0xdb, 0x14, 0x11, - 0xac, 0x48, 0x3d, 0x80, 0xc0, 0xfe, 0x55, 0x66, 0x8a, 0x2b, - 0xf7, 0x24, 0x94, 0x55, 0x91, 0xf6, 0x9, 0x5b, 0x40, 0xaf, - 0x11, 0xfd, 0xa6, 0xec, 0x43, 0x58, 0x68, 0x57, 0x9d, 0xd2, - 0x59, 0x62, 0x3f, 0xf0, 0x20, 0xf, 0xfe, 0xcb, 0x5e, 0xdd, - 0x5e, 0x4f, 0xfb, 0x48, 0xc3, 0xe6, 0x78, 0x26, 0xce, 0x4c, - 0x7f, 0xab, 0xbe, 0x43, 0xf9, 0xa3, 0x8a, 0xf1, 0xb3, 0xa8, - 0x73, 0xe5, 0xf5, 0x57, 0x95, 0xfe, 0xe7, 0x73, 0x93, 0x16, - 0xaf, 0x42, 0x47, 0xcd, 0x94, 0x51, 0x45, 0x7e, 0x32, 0x7c, - 0xa8, 0x56, 0xc7, 0x83, 0x6f, 0x8e, 0x9b, 0xe2, 0xdd, 0x1a, - 0xe8, 0x1c, 0x79, 0x57, 0x71, 0x31, 0x3e, 0xdb, 0x86, 0x7f, - 0x4a, 0xc7, 0xa7, 0x47, 0x21, 0x86, 0x45, 0x91, 0x7e, 0xf2, - 0x90, 0xc3, 0xf0, 0xad, 0x29, 0xcf, 0xd9, 0xce, 0x33, 0x5d, - 0x1d, 0xc7, 0x17, 0x66, 0x99, 0xf7, 0x4d, 0x15, 0x5b, 0x4c, - 0xb9, 0x17, 0xba, 0x75, 0xad, 0xc0, 0xe9, 0x2c, 0x49, 0x20, - 0xfc, 0x40, 0x35, 0x66, 0xbf, 0x7b, 0x4e, 0xe9, 0x34, 0x7d, - 0x9a, 0xd4, 0x28, 0xa2, 0x8a, 0x63, 0xa, 0x28, 0xa2, 0x80, - 0x38, 0xbf, 0x8c, 0x3a, 0xc8, 0xd1, 0x3e, 0x1e, 0x6a, 0xd2, - 0x6, 0xdb, 0x24, 0xf1, 0xfd, 0x99, 0x30, 0x79, 0x25, 0xce, - 0xe, 0x3f, 0xc, 0x9f, 0xc2, 0xbe, 0x48, 0xaf, 0x75, 0xfd, - 0xa6, 0x35, 0xa3, 0x9d, 0x1f, 0x49, 0x46, 0xf9, 0x7e, 0x7b, - 0x99, 0x14, 0x7f, 0xdf, 0x2b, 0xff, 00, 0xb3, 0x57, 0x85, - 0x57, 0xe5, 0x1c, 0x47, 0x88, 0xf6, 0xd8, 0xde, 0x45, 0xb4, - 0x12, 0x5f, 0xaf, 0xea, 0x7c, 0xde, 0x3e, 0x7c, 0xd5, 0xad, - 0xd8, 0x28, 0xa2, 0x8a, 0xf9, 0x63, 0xce, 0xa, 0xfa, 0x7b, - 0xf6, 0x7d, 0xd0, 0xff, 00, 0xb2, 0xfc, 0x8, 0x2e, 0xd9, - 0x71, 0x2d, 0xfc, 0xcd, 0x2e, 0x48, 0xe7, 0x68, 0xf9, 0x57, - 0xf9, 0x13, 0xf8, 0xd7, 0xcc, 0x71, 0x44, 0xd3, 0x4a, 0x91, - 0xa0, 0x2c, 0xee, 0x42, 0xa8, 0x1d, 0xc9, 0xe9, 0x5f, 0x6b, - 0x78, 0x67, 0x49, 0x5d, 0xb, 0xc3, 0xda, 0x6e, 0x9c, 0xbf, - 0xf2, 0xed, 0x6e, 0x91, 0x1f, 0x72, 0x14, 0x64, 0xfe, 0x75, - 0xf6, 0x9c, 0x2f, 0x43, 0x9f, 0x11, 0x3a, 0xcf, 0xec, 0xaf, - 0xc5, 0xff, 00, 0xc0, 0x3d, 0x5c, 0xbe, 0x17, 0xa8, 0xe5, - 0xd8, 0xd3, 0xa2, 0x8a, 0x2b, 0xf4, 0xc3, 0xe8, 0x2, 0x8a, - 0x28, 0xa0, 0xc, 0x3f, 0x1c, 0xdb, 0xb5, 0xd7, 0x82, 0xf5, - 0xd8, 0x50, 0x65, 0xde, 0xc6, 0x65, 00, 0x7a, 0xec, 0x35, - 0xf1, 0x87, 0x5a, 0xfb, 0xa2, 0x58, 0x96, 0x78, 0x9e, 0x37, - 0x19, 0x47, 0x52, 0xa4, 0x1e, 0xe0, 0xd7, 0xc4, 0xfe, 0x21, - 0xd2, 0x5f, 0x42, 0xd7, 0x75, 0xd, 0x3a, 0x40, 0x77, 0x5b, - 0x4e, 0xf1, 0x73, 0xdc, 0x3, 0xc1, 0xfc, 0x46, 0xd, 0x7e, - 0x7d, 0xc5, 0x54, 0x9d, 0xe9, 0x55, 0xe9, 0xaa, 0xfd, 0x4f, - 0x13, 0x32, 0x8e, 0xb1, 0x91, 0x9f, 0x45, 0x14, 0x57, 0xc0, - 0x1e, 0x28, 0x57, 0x5f, 0xf0, 0x97, 0x55, 0x5d, 0x1f, 0xe2, - 0x1e, 0x8b, 0x33, 0x9c, 0x23, 0xcd, 0xe4, 0x31, 0x3f, 0xed, - 0x82, 0xa3, 0xf5, 0x22, 0xb9, 0xa, 0x74, 0x52, 0xbc, 0x32, - 0xa4, 0x91, 0xb1, 0x57, 0x42, 0x19, 0x58, 0x75, 0x4, 0x74, - 0x35, 0xbd, 0xa, 0xae, 0x85, 0x58, 0x55, 0x5f, 0x65, 0xa7, - 0xf7, 0x15, 0x9, 0x72, 0x49, 0x4b, 0xb1, 0xf7, 0x4d, 0x15, - 0xcb, 0x7c, 0x38, 0xf1, 0xb4, 0x1e, 0x39, 0xf0, 0xcd, 0xbd, - 0xea, 0xb2, 0xad, 0xda, 0xf, 0x2e, 0xe6, 0x10, 0x79, 0x47, - 0x1f, 0xd0, 0xf5, 0x1f, 0x5a, 0xea, 0x6b, 0xf7, 0x3a, 0x35, - 0x61, 0x5e, 0x9c, 0x6a, 0xd3, 0x77, 0x4f, 0x53, 0xec, 0x63, - 0x25, 0x38, 0xa9, 0x47, 0x66, 0x14, 0x51, 0x45, 0x6c, 0x50, - 0x51, 0x45, 0x23, 0x30, 0x45, 0x2c, 0xc4, 0x2a, 0x81, 0x92, - 0x4f, 0x41, 0x40, 0x11, 0xdd, 0x5d, 0x45, 0x63, 0x6d, 0x2d, - 0xc4, 0xf2, 0x2c, 0x50, 0x44, 0x85, 0xdd, 0xd8, 0xe0, 0x2a, - 0x81, 0x92, 0x4d, 0x7c, 0x79, 0xf1, 0x7, 0xc5, 0xaf, 0xe3, - 0x5f, 0x15, 0x5e, 0x6a, 0x64, 0x15, 0x85, 0x8f, 0x97, 0x2, - 0x1f, 0xe1, 0x8d, 0x78, 0x5f, 0xcf, 0xaf, 0xd4, 0x9a, 0xef, - 0xfe, 0x36, 0x7c, 0x58, 0x4d, 0x74, 0xbe, 0x83, 0xa3, 0xcd, - 0xba, 0xc1, 0x1b, 0xfd, 0x22, 0xe5, 0x1b, 0x89, 0x88, 0xfe, - 0x11, 0xfe, 0xc8, 0xf5, 0xee, 0x7d, 0xba, 0xf8, 0xed, 0x7e, - 0x63, 0xc4, 0x39, 0x9c, 0x71, 0x33, 0x58, 0x6a, 0x2e, 0xf1, - 0x8e, 0xef, 0xbb, 0xff, 00, 0x80, 0x7c, 0xf6, 0x3b, 0x10, - 0xaa, 0x3f, 0x67, 0x1d, 0x90, 0x51, 0x45, 0x15, 0xf1, 0xa7, - 0x96, 0x14, 0x51, 0x5d, 0x67, 0xc3, 0x2f, 0x6, 0x3f, 0x8d, - 0xfc, 0x57, 0x6d, 0x66, 0xca, 0xdf, 0x63, 0x8f, 0xf7, 0xd7, - 0x2e, 0x7, 0x44, 0x1d, 0xbf, 0x13, 0x81, 0xf8, 0xfb, 0x56, - 0xd4, 0x68, 0xcf, 0x11, 0x52, 0x34, 0xa9, 0xad, 0x5b, 0xb1, - 0x51, 0x8b, 0x9c, 0x94, 0x56, 0xec, 0xf7, 0xbf, 0x81, 0x7e, - 0x17, 0x6f, 0xe, 0xf8, 0x1e, 0x19, 0xa6, 0x5d, 0xb7, 0x3a, - 0x83, 0x7d, 0xa9, 0x81, 0x1c, 0x85, 0x20, 0x4, 0x1f, 0x90, - 0xcf, 0xe3, 0x5e, 0x89, 0x4d, 0x8e, 0x35, 0x8a, 0x35, 0x44, - 0x50, 0xa8, 0xa0, 0x28, 0x51, 0xd0, 0xa, 0x75, 0x7e, 0xe3, - 0x86, 0xa1, 0x1c, 0x2d, 0x18, 0x51, 0x8e, 0xd1, 0x56, 0x3e, - 0xbe, 0x9c, 0x15, 0x38, 0x28, 0x2e, 0x81, 0x45, 0x14, 0x57, - 0x49, 0xa0, 0x51, 0x45, 0x14, 0x1, 0x53, 0x51, 0xd2, 0x2c, - 0x75, 0x78, 0x4c, 0x37, 0xd6, 0x70, 0x5e, 0x44, 0x7a, 0xa4, - 0xf1, 0x87, 0x1f, 0xad, 0x79, 0xf6, 0xbf, 0xfb, 0x3f, 0xf8, - 0x63, 0x57, 0x2d, 0x25, 0xa2, 0xcf, 0xa5, 0x4a, 0x7f, 0xe7, - 0xdd, 0xf2, 0x99, 0xff, 00, 0x75, 0xb3, 0xfa, 0x11, 0x5e, - 0x99, 0x45, 0x72, 0x57, 0xc1, 0xe1, 0xf1, 0x2a, 0xd5, 0xa0, - 0xa5, 0xfd, 0x77, 0x32, 0x9d, 0x28, 0x54, 0xf8, 0xd5, 0xcf, - 0x9b, 0x3c, 0x45, 0xfb, 0x3a, 0xeb, 0xba, 0x68, 0x69, 0x34, - 0xbb, 0x88, 0x75, 0x58, 0x87, 0x44, 0xff, 00, 0x55, 0x26, - 0x3e, 0x84, 0xe0, 0xfe, 0x75, 0xe6, 0xba, 0xb6, 0x87, 0xa8, - 0x68, 0x37, 0x3f, 0x67, 0xd4, 0x6c, 0xa7, 0xb2, 0x9b, 0xfb, - 0xb3, 0x21, 0x5c, 0xfd, 0x3d, 0x7f, 0xa, 0xfb, 0x76, 0xa9, - 0xea, 0x9a, 0x45, 0x96, 0xb7, 0x68, 0xf6, 0xb7, 0xf6, 0xb1, - 0x5d, 0xdb, 0xb7, 0x58, 0xe5, 0x50, 0xc3, 0xff, 00, 0xad, - 0x5f, 0x2f, 0x8a, 0xe1, 0x8c, 0x3d, 0x4b, 0xbc, 0x3c, 0x9c, - 0x5f, 0x6d, 0xd7, 0xf9, 0x9e, 0x75, 0x4c, 0xbe, 0x12, 0xd6, - 0xe, 0xc7, 0xc4, 0x14, 0x57, 0xa5, 0x7c, 0x60, 0xf8, 0x56, - 0xbe, 0x5, 0xb8, 0x8a, 0xfb, 0x4f, 0x2f, 0x26, 0x93, 0x72, - 0xe5, 0x70, 0xfc, 0x98, 0x5f, 0xa8, 0x5c, 0xf7, 0x4, 0x67, - 0x7, 0xda, 0xbc, 0xd6, 0xbf, 0x3c, 0xc5, 0x61, 0xaa, 0xe0, - 0xea, 0xba, 0x35, 0x55, 0x9a, 0x3c, 0x4a, 0x94, 0xe5, 0x4a, - 0x4e, 0x32, 0xdc, 0x28, 0xa2, 0x8a, 0xe5, 0x33, 0xa, 0xea, - 0x7e, 0x19, 0x78, 0x96, 0x5f, 0xb, 0x78, 0xd3, 0x4d, 0xba, - 0x46, 0x22, 0x19, 0x25, 0x10, 0x4e, 0xb9, 0xe1, 0xa3, 0x62, - 0x1, 0xcf, 0xd3, 0x83, 0xf8, 0x57, 0x2d, 0x4a, 0xac, 0x55, - 0x81, 0x7, 0x4, 0x1c, 0x82, 0x2b, 0x6a, 0x35, 0x65, 0x42, - 0xac, 0x6a, 0xc7, 0x74, 0xee, 0x54, 0x24, 0xe1, 0x25, 0x25, - 0xd0, 0xfb, 0xaa, 0x8a, 0x82, 0xc5, 0xda, 0x5b, 0x2b, 0x77, - 0x6e, 0x19, 0xa3, 0x52, 0x7e, 0xb8, 0xa9, 0xeb, 0xf7, 0x94, - 0xee, 0xae, 0x7d, 0x9a, 0xd4, 0x28, 0xa2, 0x8a, 0x60, 0x21, - 0x38, 0x15, 0xf1, 0xaf, 0xed, 0xf, 0x77, 0xe7, 0x6b, 0xb2, - 0x8f, 0x57, 0x3f, 0xce, 0xbe, 0xc8, 0x94, 0xed, 0x89, 0xcf, - 0xa2, 0x93, 0x5f, 0x10, 0x7c, 0x73, 0xb9, 0xf3, 0xbc, 0x45, - 0x2f, 0xfb, 0xed, 0xfc, 0xeb, 0xe5, 0x78, 0x86, 0x56, 0xc3, - 0xc6, 0x3d, 0xd9, 0xf3, 0xb9, 0xec, 0xb9, 0x70, 0xac, 0xf1, - 0x1f, 0x14, 0xc9, 0xb2, 0xc2, 0x6f, 0xf7, 0x4d, 0x76, 0x9f, - 0xf0, 0x4c, 0x9d, 0x3c, 0x5d, 0x7c, 0x65, 0xf8, 0x91, 0xa9, - 0x11, 0x9f, 0xb3, 0xe9, 0x96, 0xd6, 0xe1, 0xb1, 0xfd, 0xf9, - 0x59, 0x8f, 0xfe, 0x81, 0x5c, 0xf, 0x8d, 0x25, 0xd9, 0xa6, - 0x4d, 0xf4, 0x35, 0xeb, 0xff, 00, 0xf0, 0x4b, 0x2b, 0xd, - 0xf7, 0x3f, 0x15, 0x35, 0x22, 0x3e, 0xfd, 0xcd, 0x95, 0xba, - 0x9f, 0xf7, 0x52, 0x46, 0x3f, 0xfa, 0x10, 0xac, 0x72, 0x38, - 0xe9, 0x73, 0xe1, 0xb8, 0x5e, 0x3c, 0xd9, 0x95, 0x49, 0x76, - 0x47, 0xdf, 0x74, 0x51, 0x45, 0x7d, 0x81, 0xfa, 0xd8, 0x51, - 0x45, 0x66, 0x78, 0x9b, 0x5d, 0x83, 0xc3, 0x1e, 0x1e, 0xd4, - 0x75, 0x6b, 0x93, 0x88, 0x6c, 0xe0, 0x79, 0xd8, 0x67, 0x19, - 0xda, 0x33, 0x8f, 0xa9, 0xe9, 0x4a, 0x4d, 0x45, 0x36, 0xfa, - 0x13, 0x29, 0x28, 0xa7, 0x27, 0xb2, 0x3e, 0x49, 0xfd, 0xaa, - 0xfc, 0x62, 0xda, 0xef, 0xc4, 0x25, 0xd1, 0xe3, 0x72, 0x6d, - 0x34, 0x88, 0x82, 0x15, 0xc8, 0x20, 0xca, 0xe0, 0x33, 0x1f, - 0xcb, 0x68, 0xfc, 0xd, 0x27, 0xec, 0xc1, 0xe1, 0xf, 0xed, - 0xcf, 0x1b, 0xad, 0xfc, 0xd1, 0xee, 0xb7, 0xb2, 0x52, 0xf9, - 0x23, 0x8d, 0xdd, 0xab, 0xc8, 0xf5, 0x6d, 0x52, 0xe3, 0x5e, - 0xd5, 0xef, 0x35, 0x1b, 0xa7, 0x32, 0x5c, 0xdd, 0xcc, 0xd3, - 0x48, 0xc7, 0xd5, 0x8e, 0x6b, 0xec, 0x9f, 0xd9, 0xaf, 0xc2, - 0x3f, 0xf0, 0x8f, 0x78, 0x12, 0x3b, 0xb9, 0x13, 0x6d, 0xc5, - 0xe3, 0x17, 0x39, 0xfe, 0xef, 0x6a, 0xfc, 0xef, 0x8, 0x9e, - 0x63, 0x99, 0x7b, 0x49, 0x6d, 0x7b, 0xfc, 0x96, 0xdf, 0xa1, - 0xf9, 0xd6, 0x5c, 0x9e, 0x63, 0x99, 0x4b, 0x11, 0x2d, 0x93, - 0xbf, 0xf9, 0x1e, 0xbb, 0x45, 0x14, 0x57, 0xe8, 0xa7, 0xe8, - 0xe1, 0x45, 0x79, 0xef, 0xed, 0x1, 0xf1, 0x6a, 0xcb, 0xe0, - 0x67, 0xc1, 0xbf, 0x15, 0xf8, 0xde, 0xf9, 0x94, 0x2e, 0x93, - 0x62, 0xf2, 0xc2, 0x8d, 0xd2, 0x59, 0xc8, 0xdb, 0xa, 0x7f, - 0xc0, 0x9c, 0xa8, 0xfc, 0x6b, 0xf2, 0x66, 0xc3, 0xfe, 0xb, - 0x29, 0xf1, 0xba, 0xdd, 0x97, 0xed, 0x5a, 0x2f, 0x83, 0xae, - 0xd0, 0x75, 0x2, 0xc2, 0xe2, 0x32, 0x7f, 0x11, 0x39, 0xfe, - 0x54, 0xa, 0xf6, 0x3f, 0x6a, 0x2b, 0xc7, 0x7f, 0x6b, 0xaf, - 0x8c, 0xf0, 0x7c, 0x4, 0xfd, 0x9e, 0xbc, 0x63, 0xe2, 0xe7, - 0x90, 0x2d, 0xe4, 0x36, 0x8d, 0x6d, 0x60, 0xb9, 0xc1, 0x7b, - 0xa9, 0x7f, 0x77, 0x10, 0x1f, 0x46, 0x6d, 0xc7, 0xd9, 0x4d, - 0x5f, 0xfd, 0x98, 0xbe, 0x21, 0x78, 0xaf, 0xe2, 0xc7, 0xc1, - 0x1f, 0xc, 0xf8, 0xc3, 0xc6, 0x5a, 0x5d, 0x96, 0x8b, 0xac, - 0x6b, 0x50, 0x7d, 0xb1, 0x6c, 0x6c, 0x43, 0xec, 0x8e, 0x6, - 0x3f, 0xba, 0x27, 0x79, 0x27, 0x2c, 0xb8, 0x6f, 0xf8, 0x10, - 0x15, 0x6f, 0xe3, 0x9f, 0xec, 0xf9, 0xe0, 0xaf, 0xda, 0x37, - 0xc3, 0x16, 0x9e, 0x1e, 0xf1, 0xd5, 0x85, 0xce, 0xa5, 0xa4, - 0xdb, 0x5c, 0x8b, 0xc8, 0xe0, 0xb7, 0xbc, 0x96, 0xdf, 0xf7, - 0xa1, 0x59, 0x43, 0x13, 0x1b, 0x2, 0x70, 0x19, 0xb8, 0x3c, - 0x73, 0x40, 0xcf, 0xe6, 0xc6, 0x59, 0x5e, 0x79, 0x5e, 0x49, - 0x18, 0xbc, 0x8e, 0x4b, 0x33, 0x31, 0xc9, 0x24, 0xf5, 0x26, - 0x9b, 0x5f, 0xba, 0x57, 0x5f, 0xf0, 0x49, 0xbf, 0xd9, 0xda, - 0xe1, 0x8, 0x8f, 0x40, 0xd6, 0x2d, 0x4f, 0xf7, 0xa2, 0xd6, - 0x67, 0x27, 0xff, 00, 0x1e, 0x26, 0xb0, 0x6f, 0x7f, 0xe0, - 0x8f, 0x3f, 0x2, 0x6e, 0x3, 0x79, 0x17, 0x5e, 0x2a, 0xb4, - 0x27, 0xa6, 0xdd, 0x4a, 0x36, 0x3, 0xf3, 0x8a, 0xaa, 0xe4, - 0x72, 0xb3, 0xf1, 0x2e, 0x8a, 0xfd, 0x8a, 0xd4, 0x7f, 0xe0, - 0x8b, 0x1f, 0xc, 0x27, 0x2c, 0x6c, 0xfc, 0x6d, 0xe2, 0xab, - 0x4f, 0x40, 0xff, 00, 0x67, 0x90, 0xf, 0xfc, 0x86, 0xd, - 0x72, 0xf7, 0xdf, 0xf0, 0x44, 0x8d, 0x5, 0xd9, 0xbe, 0xc5, - 0xf1, 0x4b, 0x51, 0x88, 0x76, 0x13, 0xe9, 0x51, 0xbf, 0xf2, - 0x91, 0x68, 0xb8, 0xb9, 0x59, 0xf9, 0x39, 0x8f, 0x6a, 0xfe, - 0x88, 0x7f, 0x62, 0xf, 0x82, 0xb1, 0xfc, 0x7, 0xfd, 0x9a, - 0xbc, 0x1f, 0xe1, 0xd6, 0x89, 0x53, 0x53, 0xb8, 0xb6, 0x1a, - 0x96, 0xa2, 0xc0, 0x60, 0xb5, 0xcc, 0xe0, 0x3b, 0x3, 0xfe, - 0xe8, 0x2a, 0x9f, 0x45, 0x15, 0xf1, 0xe7, 0x83, 0xff, 00, - 0xe0, 0x8b, 0xe9, 0xe1, 0xcf, 0x1e, 0x68, 0x3a, 0xad, 0xff, - 00, 0xc4, 0x68, 0x75, 0x8d, 0x16, 0xc6, 0xfa, 0x1b, 0x9b, - 0xab, 0x6, 0xd2, 0x8c, 0x4f, 0x71, 0x1a, 0x38, 0x63, 0x1e, - 0xef, 0x34, 0x81, 0xbb, 0x18, 0xe9, 0xde, 0xbf, 0x4e, 0x95, - 0x42, 0x28, 0x55, 0x1, 0x54, 0xc, 00, 0x3a, 0x1, 0x49, - 0x94, 0x95, 0x8a, 0x9a, 0xbe, 0xa5, 0x16, 0x8f, 0xa5, 0x5d, - 0xdf, 0x4c, 0x40, 0x8a, 0xda, 0x26, 0x95, 0x89, 0xf4, 0x3, - 0x35, 0xf1, 0x4e, 0xa5, 0xa8, 0x4d, 0xaa, 0xea, 0x17, 0x37, - 0xb7, 0xd, 0xbe, 0x7b, 0x89, 0x1a, 0x57, 0x3e, 0xe4, 0xe4, - 0xd7, 0xd6, 0x7f, 0x14, 0xf4, 0xd, 0x5f, 0xc5, 0x1e, 0x13, - 0x97, 0x4b, 0xd1, 0xcc, 0x2b, 0x2d, 0xc4, 0x8a, 0x25, 0x33, - 0x39, 0x51, 0xe5, 0x8e, 0x48, 0x1c, 0x1e, 0xa4, 0xf, 0xd6, - 0xbc, 0x32, 0x4f, 0xd9, 0xfb, 0xc5, 0xc8, 0x38, 0x82, 0xd2, - 0x4f, 0xf7, 0x6e, 0x7, 0xf5, 0xc5, 0x7c, 0x17, 0x11, 0x51, - 0xc5, 0x62, 0xaa, 0x42, 0x9d, 0x1a, 0x6d, 0xc6, 0x2a, 0xfa, - 0x2e, 0xaf, 0xfc, 0x8f, 0x23, 0x1d, 0x1a, 0x95, 0x24, 0x94, - 0x62, 0xda, 0x47, 0x9b, 0x51, 0x5d, 0xec, 0xdf, 0x3, 0x7c, - 0x67, 0xf, 0xfc, 0xc2, 0x84, 0x9f, 0xee, 0x5c, 0x46, 0x7f, - 0xf6, 0x6a, 0xa5, 0x2f, 0xc2, 0x2f, 0x18, 0x43, 0xf7, 0xb4, - 0x2b, 0x83, 0xfe, 0xe9, 0x56, 0xfe, 0x46, 0xbe, 0x2a, 0x58, - 0xc, 0x5c, 0x77, 0xa5, 0x2f, 0xb9, 0x9e, 0x4b, 0xa3, 0x55, - 0x7d, 0x97, 0xf7, 0x1c, 0x7d, 0x7d, 0x3f, 0xfb, 0x3f, 0xe8, - 0x1f, 0xd9, 0x3e, 0x4, 0x4b, 0xb7, 0x4d, 0xb3, 0x6a, 0x12, - 0xb4, 0xc4, 0x91, 0xce, 0xc1, 0xf2, 0xaf, 0xf2, 0x27, 0xf1, - 0xaf, 0x9, 0xb7, 0xf8, 0x63, 0xe2, 0x79, 0x6f, 0x60, 0xb7, - 0x93, 0x44, 0xbd, 0x84, 0x49, 0x22, 0xa1, 0x91, 0xa1, 0x3b, - 0x57, 0x27, 0x19, 0x27, 0xd0, 0x57, 0xd7, 0x3a, 0x75, 0x8c, - 0x5a, 0x5d, 0x85, 0xb5, 0x9c, 0xb, 0xb6, 0x18, 0x23, 0x58, - 0x90, 0x7a, 00, 0x30, 0x2b, 0xeb, 0x38, 0x6b, 0x5, 0x38, - 0xd7, 0x9d, 0x7a, 0xb1, 0x6b, 0x95, 0x59, 0x5d, 0x5b, 0x57, - 0xff, 00, 0x3, 0xf3, 0x3d, 0x2c, 0x5, 0x26, 0xa6, 0xe7, - 0x25, 0xb1, 0x66, 0x8a, 0x28, 0xaf, 0xd1, 0x4f, 0x74, 0x2b, - 0xcd, 0x7f, 0x68, 0x38, 0xbc, 0xcf, 0x87, 0x53, 0x36, 0x3e, - 0xe5, 0xcc, 0x4d, 0xfa, 0xe3, 0xfa, 0xd7, 0xa5, 0x57, 0x3, - 0xf1, 0xce, 0x2f, 0x37, 0xe1, 0x9e, 0xa8, 0x7f, 0xb8, 0xd1, - 0x37, 0xfe, 0x44, 0x5f, 0xf1, 0xaf, 0x37, 0x32, 0x5c, 0xd8, - 0x2a, 0xcb, 0xfb, 0xaf, 0xf2, 0x39, 0xf1, 0xa, 0xf4, 0xa5, - 0xe8, 0x7c, 0xa5, 0x45, 0x14, 0x57, 0xe2, 0x27, 0xc9, 0x5, - 0x14, 0x51, 0x40, 0x1f, 0x64, 0x7c, 0x3a, 0xba, 0xfb, 0x67, - 0x80, 0xf4, 0x9, 0x49, 0xc9, 0x36, 0x51, 0x3, 0xf5, 0xa, - 0x7, 0xf4, 0xae, 0x8e, 0xb8, 0x4f, 0x82, 0x17, 0x86, 0xf3, - 0xe1, 0xa6, 0x95, 0x93, 0x93, 0x17, 0x99, 0x11, 0xfc, 0x1d, - 0xb1, 0xfa, 0x62, 0xbb, 0xba, 0xfd, 0xd3, 0x5, 0x3f, 0x69, - 0x86, 0xa5, 0x3e, 0xf1, 0x5f, 0x91, 0xf6, 0x14, 0x5f, 0x35, - 0x38, 0xbf, 0x24, 0x14, 0x51, 0x45, 0x76, 0x1a, 0x85, 0x14, - 0x56, 0x7f, 0x88, 0x35, 0x68, 0xf4, 0x1d, 0xe, 0xff, 00, - 0x51, 0x97, 0xee, 0x5a, 0xc2, 0xf2, 0x9f, 0x7c, 0xe, 0x5, - 0x4c, 0xa4, 0xa1, 0x17, 0x29, 0x6c, 0x84, 0xdd, 0x95, 0xd9, - 0xf2, 0xbf, 0xc6, 0xd, 0x78, 0xf8, 0x83, 0xe2, 0x6, 0xa9, - 0x20, 0x6d, 0xd0, 0xdb, 0xbf, 0xd9, 0x63, 0xfa, 0x27, 0x7, - 0xff, 00, 0x1e, 0xdc, 0x7f, 0x1a, 0xe3, 0x2a, 0x4b, 0x89, - 0xde, 0xea, 0x79, 0x66, 0x90, 0xee, 0x92, 0x46, 0x2e, 0xc7, - 0xd4, 0x93, 0x93, 0x51, 0xd7, 0xe1, 0x38, 0x8a, 0xcf, 0x11, - 0x5a, 0x75, 0x65, 0xf6, 0x9b, 0x67, 0xc7, 0x4e, 0x4e, 0x72, - 0x72, 0x7d, 0x42, 0x8a, 0x28, 0xae, 0x72, 0xe, 0xb7, 0xe1, - 0x46, 0x8f, 0xfd, 0xb7, 0xf1, 0x7, 0x46, 0x81, 0x97, 0x7c, - 0x69, 0x37, 0x9e, 0xe3, 0xb6, 0x10, 0x16, 0xfe, 0x60, 0x57, - 0xd7, 0xd5, 0xf3, 0xdf, 0xec, 0xd1, 0xa3, 0xf9, 0xfa, 0xd6, - 0xad, 0xa9, 0xb2, 0xf1, 0x6f, 0xa, 0xc0, 0x87, 0xdd, 0xce, - 0x4f, 0xe8, 0xbf, 0xad, 0x7d, 0x9, 0x5f, 0xaa, 0xf0, 0xd5, - 0xf, 0x67, 0x82, 0xf6, 0x8f, 0x79, 0x36, 0xfe, 0x4b, 0x43, - 0xe8, 0xf0, 0x10, 0xe5, 0xa5, 0xcd, 0xdc, 0x28, 0xa2, 0x8a, - 0xfa, 0xb3, 0xd2, 0xa, 0x28, 0xa2, 0x80, 0xa, 0xf9, 0xdb, - 0xf6, 0x88, 0xf0, 0x69, 0xd3, 0xf5, 0x98, 0x7c, 0x41, 0x6e, - 0x9f, 0xe8, 0xf7, 0x98, 0x8e, 0x7c, 0xf, 0xbb, 0x28, 0x1c, - 0x1f, 0xc4, 0xf, 0xfc, 0x77, 0xde, 0xbe, 0x89, 0xac, 0xdf, - 0x10, 0xe8, 0x36, 0x9e, 0x27, 0xd1, 0xae, 0xb4, 0xcb, 0xd4, - 0xdf, 0x6f, 0x70, 0xbb, 0x5b, 0x1d, 0x54, 0xf5, 0x4, 0x7b, - 0x83, 0xcd, 0x79, 0x59, 0x9e, 0x9, 0x63, 0xf0, 0xd2, 0xa3, - 0xd7, 0x75, 0xeb, 0xfd, 0x68, 0x73, 0x62, 0x28, 0xfb, 0x6a, - 0x6e, 0x3d, 0x4f, 0x89, 0xa8, 0xae, 0x8b, 0xc7, 0x1e, 0x8, - 0xbf, 0xf0, 0x2e, 0xb5, 0x25, 0x95, 0xe2, 0x16, 0x88, 0x92, - 0x60, 0xb8, 0x3, 0xe5, 0x95, 0x3d, 0x47, 0xbf, 0xa8, 0xed, - 0x5c, 0xed, 0x7e, 0x33, 0x56, 0x94, 0xe8, 0xcd, 0xd3, 0xa8, - 0xac, 0xd1, 0xf2, 0xb2, 0x8b, 0x8b, 0xe5, 0x96, 0xe1, 0x45, - 0x14, 0x56, 0x44, 0x9b, 0x7e, 0x12, 0xf1, 0x86, 0xa7, 0xe0, - 0xbd, 0x51, 0x6f, 0xb4, 0xd9, 0xb6, 0x3f, 0xdd, 0x92, 0x36, - 0xe5, 0x25, 0x5f, 0x46, 0x15, 0xf4, 0x1f, 0x85, 0x3e, 0x3e, - 0x78, 0x7b, 0x5d, 0x44, 0x8f, 0x50, 0x66, 0xd1, 0xee, 0xb8, - 0x4, 0x4f, 0xcc, 0x44, 0xfb, 0x38, 0xe9, 0xf8, 0xe2, 0xbe, - 0x61, 0xa2, 0xbd, 0xac, 0x6, 0x6d, 0x89, 0xcb, 0xfd, 0xda, - 0x6e, 0xf1, 0xec, 0xf6, 0xff, 00, 0x80, 0x75, 0x51, 0xc4, - 0xd4, 0xa1, 0xa4, 0x76, 0xec, 0x7d, 0xb7, 0x69, 0xe2, 0xd, - 0x2e, 0xfd, 0x3, 0x5b, 0x6a, 0x36, 0x97, 0xa, 0x46, 0x73, - 0x1c, 0xea, 0xdf, 0xc8, 0xd4, 0xb3, 0x6a, 0xf6, 0x36, 0xeb, - 0xba, 0x5b, 0xdb, 0x78, 0x97, 0xd5, 0xe5, 0x50, 0x3f, 0x9d, - 0x7c, 0x3f, 0x8a, 0x31, 0x5f, 0x46, 0xb8, 0xae, 0x76, 0xd6, - 0x8e, 0xbe, 0xbf, 0xf0, 0xe, 0xff, 00, 0xed, 0x27, 0xfc, - 0xbf, 0x89, 0xf5, 0x9f, 0x88, 0xbe, 0x32, 0xf8, 0x5b, 0xc3, - 0xb1, 0x9c, 0xea, 0x2b, 0x7f, 0x38, 0xe9, 0xd, 0x96, 0x24, - 0x3f, 0x98, 0xe0, 0x7e, 0x26, 0xbc, 0x47, 0xe2, 0x7, 0xc6, - 0xad, 0x5b, 0xc6, 0x4b, 0x25, 0xa5, 0xa8, 0x3a, 0x66, 0x96, - 0xc0, 0xab, 0x43, 0x1b, 0x65, 0xe5, 0x1f, 0xed, 0xb7, 0xa7, - 0xb0, 0xe3, 0xeb, 0x5e, 0x75, 0x45, 0x78, 0x98, 0xdc, 0xf7, - 0x17, 0x8c, 0x8b, 0x85, 0xf9, 0x62, 0xfa, 0x2f, 0xf3, 0x39, - 0x2a, 0xe3, 0x2a, 0xd5, 0x56, 0xd9, 0x5, 0x14, 0x51, 0x5f, - 0x3a, 0x70, 0x85, 0x14, 0x55, 0x8b, 0xd, 0x3e, 0xe7, 0x55, - 0xbc, 0x86, 0xd2, 0xd2, 0x17, 0xb8, 0xb9, 0x95, 0x82, 0xa4, - 0x68, 0x32, 0x58, 0xd3, 0x49, 0xc9, 0xd9, 0x6e, 0x1b, 0x89, - 0x65, 0x65, 0x3e, 0xa3, 0x77, 0xd, 0xad, 0xb4, 0x4d, 0x35, - 0xc4, 0xcc, 0x11, 0x23, 0x41, 0x92, 0xc4, 0xf6, 0xaf, 0xad, - 0x3e, 0x18, 0xf8, 0x6, 0x2f, 00, 0xf8, 0x7d, 0x6d, 0xdb, - 0x64, 0x9a, 0x84, 0xe7, 0xcc, 0xb9, 0x99, 0x7b, 0xb7, 0x65, - 0x1e, 0xc3, 0xfc, 0x4f, 0x7a, 0xc6, 0xf8, 0x4b, 0xf0, 0x9a, - 0x2f, 0x4, 0x5b, 0xfd, 0xbf, 0x50, 0x9, 0x36, 0xb5, 0x2a, - 0xe0, 0x95, 0x39, 0x58, 0x14, 0xff, 00, 0xa, 0xfb, 0xfa, - 0x9f, 0xc3, 0xeb, 0xe9, 0x35, 0xfa, 0x86, 0x47, 0x94, 0x3c, - 0x1a, 0xfa, 0xc5, 0x75, 0xef, 0xbd, 0x97, 0x65, 0xfe, 0x67, - 0xd0, 0xe0, 0xf0, 0xbe, 0xcb, 0xdf, 0x9e, 0xff, 00, 0x90, - 0x51, 0x45, 0x23, 0x30, 0x55, 0x24, 0x9c, 0x1, 0xc9, 0x35, - 0xf5, 0xe7, 0xa8, 0x71, 0xba, 0xef, 0xc5, 0x8d, 0xf, 0xc3, - 0x5e, 0x29, 0xfe, 0xc4, 0xd4, 0x64, 0x7b, 0x77, 0xf2, 0x96, - 0x43, 0x73, 0xb7, 0x31, 0xa9, 0x39, 0xf9, 0x5b, 0x1c, 0x8e, - 0x30, 0x73, 0x8c, 0x73, 0x5d, 0x55, 0x8e, 0xa3, 0x6b, 0xaa, - 0x40, 0xb3, 0xd9, 0xdc, 0xc5, 0x75, 0xb, 0x72, 0x24, 0x85, - 0xc3, 0x29, 0xfc, 0x45, 0x7c, 0x75, 0xe3, 0x8d, 0x78, 0xf8, - 0x9b, 0xc5, 0xba, 0xa6, 0xa5, 0x9c, 0xa4, 0xd3, 0xb7, 0x97, - 0xfe, 0xe0, 0xe1, 0x7f, 0x40, 0x2a, 0x86, 0x93, 0xae, 0x6a, - 0x1a, 0xd, 0xc8, 0xb8, 0xd3, 0xaf, 0x67, 0xb2, 0x97, 0xfb, - 0xd0, 0xb9, 0x5c, 0xfd, 0x7d, 0x7f, 0x1a, 0xfc, 0xf5, 0x71, - 0x3c, 0xa9, 0xd7, 0x9c, 0x67, 0xe, 0x68, 0x5d, 0xda, 0xda, - 0x3b, 0x7e, 0xbf, 0x81, 0xe1, 0xac, 0xc1, 0xa9, 0xb4, 0xd5, - 0xd1, 0xf6, 0xed, 0x15, 0xf3, 0x26, 0x8d, 0xfb, 0x43, 0x78, - 0x9f, 0x4e, 0xda, 0xb7, 0x82, 0xd7, 0x53, 0x8c, 0x75, 0xf3, - 0x63, 0xd8, 0xe7, 0xf1, 0x5c, 0xf, 0xd2, 0xbb, 0x6d, 0x2f, - 0xf6, 0x96, 0xd2, 0xa6, 0x55, 0x1a, 0x86, 0x95, 0x77, 0x6c, - 0xdd, 0xcc, 0xc, 0xb2, 0x2f, 0xeb, 0xb4, 0xd7, 0xd0, 0x51, - 0xcf, 0xf0, 0x15, 0xb7, 0x9f, 0x2b, 0xf3, 0x5f, 0xd2, 0x3b, - 0x61, 0x8d, 0xa3, 0x2e, 0xb6, 0x3d, 0x96, 0x8a, 0xf3, 0xcb, - 0x5f, 0x8f, 0x5e, 0xe, 0xb8, 0xc6, 0xeb, 0xe9, 0xad, 0xcf, - 0xa4, 0xb6, 0xef, 0xfd, 0x1, 0xad, 0x8, 0xbe, 0x31, 0x78, - 0x3a, 0x51, 0xc6, 0xb9, 0x2, 0xff, 00, 0xbc, 0xae, 0x3f, - 0x98, 0xaf, 0x4a, 0x39, 0x86, 0xe, 0x7f, 0xd, 0x58, 0xfd, - 0xe8, 0xe8, 0x55, 0xe9, 0x3d, 0xa4, 0xbe, 0xf3, 0xb3, 0xa2, - 0xb8, 0xa9, 0xfe, 0x32, 0xf8, 0x36, 0x1, 0x93, 0xad, 0xc4, - 0xff, 00, 0xf5, 0xce, 0x37, 0x6f, 0xe4, 0x2b, 0x9b, 0xd7, - 0x7f, 0x68, 0xcd, 0x2, 0xca, 0x16, 0x1a, 0x65, 0xbd, 0xce, - 0xa3, 0x3f, 0xf0, 0xee, 0x5f, 0x2a, 0x3f, 0xc4, 0x9e, 0x7f, - 0x4a, 0x8a, 0x99, 0x9e, 0xa, 0x92, 0xbc, 0xaa, 0xc7, 0xef, - 0xbf, 0xe4, 0x29, 0x62, 0x29, 0x45, 0x5d, 0xc9, 0x16, 0xbf, - 0x68, 0x6d, 0x4a, 0xde, 0xd7, 0xc0, 0x46, 0xd6, 0x42, 0x3e, - 0xd1, 0x75, 0x71, 0x18, 0x89, 0x7b, 0xfc, 0xa7, 0x73, 0x1f, - 0xc8, 0x63, 0xf1, 0xaf, 0x98, 0xeb, 0x7b, 0xc6, 0x3e, 0x35, - 0xd4, 0xfc, 0x71, 0xaa, 0x7d, 0xb7, 0x52, 0x90, 0x12, 0xa3, - 0x6c, 0x50, 0xc6, 0x30, 0x91, 0xaf, 0xa0, 0x1f, 0xd7, 0xad, - 0x60, 0xd7, 0xe5, 0x99, 0xbe, 0x3a, 0x38, 0xfc, 0x53, 0xab, - 0x5, 0xee, 0xa5, 0x64, 0x7c, 0xe6, 0x26, 0xb2, 0xad, 0x53, - 0x99, 0x6c, 0x14, 0x51, 0x45, 0x78, 0xa7, 0x28, 0x55, 0xcd, - 0x1e, 0xc5, 0xb5, 0x3d, 0x5e, 0xca, 0xcd, 0x46, 0x5a, 0xe2, - 0x74, 0x88, 0x1, 0xfe, 0xd3, 0x1, 0xfd, 0x6a, 0x9d, 0x7a, - 0x77, 0xc0, 0x1f, 0xa, 0x9d, 0x73, 0xc6, 0x1f, 0xda, 0x12, - 0xa9, 0x36, 0xda, 0x6a, 0xf9, 0xb9, 0xec, 0x64, 0x3c, 0x20, - 0xfe, 0x67, 0xf0, 0x15, 0xdb, 0x82, 0xc3, 0xcb, 0x15, 0x88, - 0x85, 0x18, 0xf5, 0x7f, 0x87, 0x5f, 0xc0, 0xd6, 0x94, 0x1d, - 0x49, 0xa8, 0xae, 0xa7, 0xd3, 0x68, 0xa1, 0x14, 0x28, 0xe8, - 0x6, 0x29, 0xd4, 0x51, 0x5f, 0xb9, 0x9f, 0x60, 0x14, 0x51, - 0x45, 00, 0x56, 0xd4, 0x5f, 0xcb, 0xb0, 0xb8, 0x6e, 0x98, - 0x43, 0xfc, 0xab, 0xe1, 0x1f, 0x8b, 0xd7, 0x1e, 0x77, 0x88, - 0xe5, 0xef, 0xf3, 0x1f, 0xe7, 0x5f, 0x72, 0xf8, 0x92, 0x5f, - 0x27, 0x43, 0xbc, 0x6e, 0x98, 0x8c, 0xd7, 0xc1, 0x5f, 0x12, - 0xa6, 0xf3, 0xbc, 0x45, 0x3f, 0xb3, 0x1a, 0xf8, 0xce, 0x22, - 0x97, 0xbb, 0x4e, 0x3e, 0x67, 0xc9, 0xf1, 0xc, 0xad, 0x41, - 0x23, 0xc8, 0x3e, 0x20, 0x4b, 0xb3, 0x4a, 0x9b, 0xe8, 0x6b, - 0xe9, 0x1f, 0xf8, 0x25, 0xa6, 0x9e, 0x23, 0xf8, 0x57, 0xe3, - 0x5b, 0xfc, 0x7c, 0xd7, 0x5e, 0x20, 0x64, 0xcf, 0xb2, 0x41, - 0x1f, 0xff, 00, 0x14, 0x6b, 0xe6, 0x1f, 0x89, 0x93, 0x6c, - 0xd2, 0x65, 0xfa, 0x1f, 0xe5, 0x5f, 0x60, 0x7f, 0xc1, 0x32, - 0x6c, 0x3e, 0xcd, 0xfb, 0x35, 0x1b, 0xad, 0xb8, 0x37, 0xba, - 0xe5, 0xec, 0xd9, 0xf5, 00, 0xaa, 0x7f, 0xec, 0x95, 0xd9, - 0x92, 0xc6, 0xd4, 0xcf, 0x99, 0xe1, 0x18, 0xdf, 0x13, 0x5e, - 0x7e, 0x87, 0xd6, 0x74, 0x51, 0x45, 0x7d, 0x39, 0xfa, 0x90, - 0x57, 0x82, 0xfe, 0xd6, 0xde, 0x35, 0x3a, 0x3f, 0x84, 0x6d, - 0x3c, 0x3f, 0x3, 0x62, 0x7d, 0x56, 0x4d, 0xd2, 0xe0, 0xf2, - 0x22, 0x42, 0xf, 0xea, 0xd8, 0x1f, 0x81, 0xaf, 0x7a, 0xaf, - 0x85, 0xbf, 0x68, 0x3f, 0x1a, 0x1f, 0x1a, 0x7c, 0x4b, 0xd4, - 0x1a, 0x29, 0x4, 0x96, 0x5a, 0x79, 0xfb, 0x15, 0xbe, 0xd2, - 0x70, 0x42, 0x9f, 0x98, 0xfe, 0x2d, 0x9f, 0xc8, 0x57, 0x85, - 0x9c, 0xe2, 0x3d, 0x86, 0x15, 0xa5, 0xbc, 0xb4, 0xff, 00, - 0x33, 0xe7, 0xb3, 0xdc, 0x4f, 0xd5, 0xf0, 0x6e, 0x29, 0xeb, - 0x2d, 0x3f, 0xcf, 0xf0, 0x39, 0x5f, 0x2, 0xf8, 0x7e, 0x4f, - 0x12, 0xf8, 0xa3, 0x4f, 0xd3, 0xe3, 0x5d, 0xde, 0x6c, 0xaa, - 0xf, 0xd3, 0x3c, 0xd7, 0xe8, 0x46, 0x95, 0xa7, 0xc7, 0xa5, - 0x69, 0xd6, 0xf6, 0x91, 00, 0xb1, 0xc2, 0x81, 00, 0x1e, - 0xd5, 0xf2, 0xef, 0xec, 0x9d, 0xe0, 0xff, 00, 0xb6, 0x6b, - 0x77, 0x7a, 0xd4, 0xc9, 0x98, 0xed, 0xd3, 0x6c, 0x64, 0x8e, - 0x37, 0x1a, 0xfa, 0xb6, 0xb8, 0xb8, 0x7f, 0xf, 0xc9, 0x46, - 0x55, 0xde, 0xf2, 0xfc, 0x91, 0x87, 0xf, 0xe1, 0xbd, 0x8e, - 0x1b, 0xda, 0x3d, 0xe5, 0xf9, 0x5, 0x14, 0x51, 0x5f, 0x54, - 0x7d, 0x41, 0xf9, 0x87, 0xff, 00, 0x5, 0x9e, 0xf8, 0xdd, - 0x1d, 0xb6, 0x8b, 0xe1, 0x2f, 0x85, 0x76, 0x17, 0x2c, 0x2e, - 0x2e, 0x65, 0xfe, 0xda, 0xd4, 0xe3, 0x46, 0xc0, 0xf2, 0x97, - 0x72, 0x40, 0x8d, 0xeb, 0x96, 0xde, 0xd8, 0xff, 00, 0x61, - 0x4d, 0x7e, 0x72, 0xfe, 0xcf, 0x7f, 0xa, 0xe5, 0xf8, 0xdb, - 0xf1, 0xb3, 0xc1, 0xbe, 0x7, 0x89, 0xfc, 0xb5, 0xd6, 0x75, - 0x8, 0xe0, 0x99, 0xf3, 0x8d, 0xb0, 0x8c, 0xbc, 0xa4, 0x7b, - 0x88, 0xd5, 0xc8, 0xf7, 0xaf, 0x55, 0xff, 00, 0x82, 0x90, - 0x6b, 0xf7, 0x9a, 0xff, 00, 0xed, 0x9f, 0xf1, 0x1c, 0xdd, - 0xc8, 0xce, 0xb6, 0x77, 0x30, 0x59, 0x40, 0xac, 0x73, 0xb2, - 0x34, 0xb7, 0x8c, 00, 0x3d, 0xb2, 0x58, 0xff, 00, 0xc0, - 0x8d, 0x7c, 0xfb, 0xe1, 0x5f, 0x15, 0x6a, 0xfe, 0x7, 0xf1, - 0x1e, 0x9d, 0xaf, 0xe8, 0x3a, 0x84, 0xfa, 0x56, 0xb3, 0xa7, - 0xcc, 0xb7, 0x16, 0xb7, 0x96, 0xcd, 0xb6, 0x48, 0x9c, 0x74, - 0x20, 0xff, 00, 0x9c, 0xf4, 0xaa, 0x33, 0x6f, 0x53, 0xfa, - 0x71, 0x51, 0xa7, 0xf8, 0x4b, 0xc3, 0xc0, 0x7c, 0x96, 0x7a, - 0x5e, 0x99, 0x6b, 0x8f, 0x45, 0x8a, 0x18, 0xd3, 0xf9, 0x5, - 0x5f, 0xd2, 0xbf, 0xe, 0xbe, 0x24, 0x7f, 0xc1, 0x4e, 0x7e, - 0x37, 0x6a, 0x3f, 0x13, 0x7c, 0x4b, 0xa8, 0xf8, 0x57, 0xc6, - 0xd3, 0xe9, 0x9e, 0x1a, 0x9a, 0xfe, 0x66, 0xd3, 0x74, 0xe3, - 0x67, 0x6e, 0xe9, 0xd, 0xbe, 0xe2, 0x23, 0x1f, 0x34, 0x64, - 0xe7, 0x68, 0x4, 0xe4, 0x9e, 0x49, 0xa8, 0x3c, 0x61, 0xff, - 00, 0x5, 0x45, 0xf8, 0xd9, 0xe3, 0xcf, 0x86, 0xda, 0xd7, - 0x83, 0x35, 0x89, 0xf4, 0x49, 0xac, 0xf5, 0x6b, 0x17, 0xb0, - 0xb9, 0xbe, 0x86, 0xc5, 0xa2, 0xba, 0xf2, 0xdd, 0x76, 0xb1, - 0xc, 0xae, 0x14, 0x31, 0x19, 0x19, 0xdb, 0xdc, 0xd7, 0xc8, - 0xb4, 0x92, 0x1b, 0x7d, 0x8f, 0xdf, 0x7f, 0xf8, 0x27, 0x7f, - 0xc4, 0x8f, 0x88, 0xff, 00, 0x18, 0xbe, 0x1, 0x47, 0xe3, - 0x6f, 0x88, 0xfa, 0xc2, 0xea, 0xb7, 0x7a, 0xad, 0xf4, 0xa3, - 0x4f, 0x9, 0x69, 0x1d, 0xb8, 0x8e, 0xda, 0x33, 0xe5, 0xe4, - 0x84, 0x51, 0x92, 0xce, 0xae, 0x72, 0x7b, 0x1, 0x5f, 0x50, - 0xd7, 0xe3, 0xaf, 0xc3, 0xf, 0xf8, 0x2b, 0xf6, 0xa3, 0xf0, - 0xbf, 0xc0, 0xfa, 0x7, 0x85, 0x34, 0xff, 00, 0x84, 0xda, - 0x50, 0xd2, 0xb4, 0x6b, 0x38, 0xac, 0xa0, 0x58, 0x75, 0x69, - 0x23, 0x25, 0x51, 0x40, 0xc9, 0xfd, 0xd1, 0xe4, 0xf2, 0x4f, - 0xb9, 0x35, 0xe8, 0x5a, 0x7f, 0xfc, 0x16, 0xee, 0x16, 0x61, - 0xf6, 0xef, 0x84, 0xb2, 0x46, 0xbd, 0xcd, 0xbe, 0xb8, 0x1f, - 0xf9, 0xc0, 0x28, 0xb1, 0x57, 0x47, 0xea, 0x45, 0x15, 0xf9, - 0xbd, 0x65, 0xff, 00, 0x5, 0xb1, 0xf0, 0x3c, 0x85, 0x7e, - 0xd7, 0xf0, 0xe3, 0xc4, 0x10, 0xe, 0xe6, 0x1b, 0xc8, 0x24, - 0xc7, 0xe7, 0xb6, 0xba, 0xed, 0x3, 0xfe, 0xb, 0x19, 0xf0, - 0x8b, 0x5c, 0xbd, 0xb6, 0xb3, 0x3e, 0x19, 0xf1, 0x84, 0x17, - 0x57, 0x12, 0x2c, 0x51, 0xc6, 0x2d, 0x20, 0x93, 0x73, 0xb1, - 0xc0, 0x51, 0xb6, 0x6e, 0x72, 0x48, 0xed, 0x48, 0x2e, 0x8f, - 0xbc, 0xe8, 0xa8, 0xad, 0xa6, 0x37, 0x16, 0xd1, 0x4a, 0x63, - 0x78, 0x4b, 0xa0, 0x63, 0x1c, 0x98, 0xdc, 0xb9, 0x19, 0xc1, - 0xc7, 0x71, 0x59, 0x1e, 0x36, 0xf1, 0xae, 0x89, 0xf0, 0xe7, - 0xc2, 0x9a, 0x9f, 0x89, 0x7c, 0x47, 0x7f, 0x1e, 0x97, 0xa2, - 0x69, 0xb0, 0x99, 0xee, 0xee, 0xe5, 0x4, 0xac, 0x48, 0x3b, - 0xe0, 0x2, 0x4f, 0x5e, 0x80, 0x50, 0x33, 0x72, 0x8a, 0xf0, - 0x2b, 0xf, 0xdb, 0xdb, 0xf6, 0x7d, 0xd4, 0x63, 0xf, 0x1f, - 0xc5, 0x6f, 0xf, 0xc6, 0xf, 0x6b, 0x89, 0x9a, 0x23, 0xf9, - 0x32, 0x8a, 0xdc, 0xb1, 0xfd, 0xb1, 0x7e, 0x6, 0xea, 0x3f, - 0xea, 0x3e, 0x2d, 0x78, 0x40, 0xff, 00, 0xbf, 0xac, 0x42, - 0x9f, 0xfa, 0x13, 0xa, 00, 0xf6, 0x1a, 0x2b, 0x82, 0xd2, - 0x7e, 0x3e, 0x7c, 0x33, 0xd7, 0xbf, 0xe4, 0x1d, 0xf1, 0xb, - 0xc2, 0xf7, 0xdf, 0xf5, 0xc3, 0x58, 0xb7, 0x7f, 0xe4, 0xf5, - 0xd1, 0xd9, 0x78, 0xd7, 0xc3, 0xda, 0x91, 0x2, 0xd3, 0x5e, - 0xd3, 0x2e, 0x89, 0xe8, 0x21, 0xbc, 0x8d, 0xf3, 0xf9, 0x35, - 00, 0x6d, 0x51, 0x51, 0xa5, 0xc4, 0x52, 0x7d, 0xc9, 0x51, - 0xbf, 0xdd, 0x60, 0x6a, 0x4a, 00, 0x28, 0xa2, 0x8a, 00, - 0x2a, 0xbd, 0xfe, 0x9f, 0x6d, 0xaa, 0x5a, 0x49, 0x6b, 0x79, - 0x6f, 0x1d, 0xd5, 0xb4, 0x98, 0xdf, 0x14, 0xca, 0x19, 0x5b, - 0x9c, 0xf2, 0xf, 0xbd, 0x58, 0xa2, 0x93, 0x49, 0xab, 0x30, - 0x6a, 0xfa, 0x33, 0x96, 0x9b, 0xe1, 0x77, 0x84, 0xe7, 0x1f, - 0x36, 0x81, 0x62, 0x3f, 0xdc, 0x8b, 0x6f, 0xf2, 0xaa, 0x53, - 0x7c, 0x17, 0xf0, 0x6c, 0xfd, 0x74, 0x54, 0x5f, 0xf7, 0x25, - 0x91, 0x7f, 0x93, 0x57, 0x6d, 0x45, 0x72, 0x4b, 0x5, 0x85, - 0x96, 0xf4, 0xa3, 0xf7, 0x23, 0x27, 0x46, 0x9b, 0xde, 0x2b, - 0xee, 0x3c, 0xf6, 0x4f, 0x80, 0xde, 0xc, 0x7e, 0x9a, 0x74, - 0xa9, 0xfe, 0xed, 0xd4, 0x9f, 0xd5, 0xaa, 0xac, 0x9f, 0xb3, - 0xd7, 0x84, 0x9f, 0xee, 0xa5, 0xe4, 0x7f, 0xee, 0xdc, 0x7f, - 0x88, 0xaf, 0x4c, 0xa2, 0xb0, 0x79, 0x66, 0x9, 0xef, 0x46, - 0x3f, 0x72, 0x23, 0xea, 0xf4, 0x7f, 0x95, 0x18, 0x7e, 0xf, - 0xf0, 0x85, 0x97, 0x82, 0x74, 0x93, 0xa7, 0x58, 0x3c, 0xcf, - 0x6f, 0xe6, 0x34, 0xa3, 0xcf, 0x60, 0xc4, 0x13, 0x8c, 0x8c, - 0x80, 0x38, 0xe2, 0xb7, 0x28, 0xa2, 0xbb, 0xe9, 0xd3, 0x8d, - 0x28, 0xa8, 0x41, 0x59, 0x23, 0x68, 0xc5, 0x45, 0x59, 0x6c, - 0x14, 0x51, 0x45, 0x68, 0x50, 0x57, 0x25, 0xf1, 0x4b, 0xc3, - 0xfa, 0x9f, 0x8a, 0x7c, 0x1f, 0x73, 0xa5, 0xe9, 0x46, 0x21, - 0x3c, 0xee, 0x81, 0xcc, 0xce, 0x50, 0x6c, 0x7, 0x27, 0x9c, - 0x1f, 0x41, 0x5d, 0x6d, 0x15, 0x8d, 0x6a, 0x51, 0xaf, 0x4e, - 0x54, 0xa5, 0xb3, 0x56, 0x22, 0x71, 0x53, 0x8b, 0x8b, 0xea, - 0x7c, 0xb5, 0x2f, 0xc0, 0xf, 0x18, 0x47, 0xd2, 0xd6, 0xda, - 0x4f, 0xf7, 0x2e, 0x17, 0xfa, 0xe2, 0xa9, 0xcb, 0xf0, 0x47, - 0xc6, 0x71, 0xff, 00, 0xcc, 0x1f, 0x7f, 0xfb, 0xb3, 0xc7, - 0xff, 00, 0xc5, 0x57, 0xd6, 0x34, 0x57, 0xcb, 0xcb, 0x86, - 0x30, 0x4f, 0x69, 0x49, 0x7c, 0xd7, 0xf9, 0x1e, 0x7b, 0xcb, - 0xe9, 0x77, 0x67, 0xc8, 0x53, 0x7c, 0x25, 0xf1, 0x7c, 0x7, - 0xe6, 0xd0, 0x6e, 0x8f, 0xfb, 0x9b, 0x5b, 0xf9, 0x1a, 0xa3, - 0x3f, 0xc3, 0xef, 0x13, 0x5b, 0xff, 00, 0xac, 0xd0, 0x75, - 0x1, 0xf4, 0xb7, 0x63, 0xfc, 0x85, 0x7d, 0x97, 0x45, 0x61, - 0x2e, 0x16, 0xc3, 0x7d, 0x9a, 0x92, 0xfc, 0x3f, 0xc8, 0x87, - 0x97, 0x43, 0xa4, 0x99, 0xe7, 0xdf, 0x3, 0xbc, 0x37, 0x2f, - 0x87, 0x7c, 0xb, 0xf, 0xda, 0x61, 0x78, 0x2e, 0xee, 0xe5, - 0x79, 0xe4, 0x49, 0x14, 0xab, 0x2f, 0x3b, 0x54, 0x10, 0x7a, - 0x70, 0xa0, 0xfe, 0x35, 0xe8, 0x34, 0x51, 0x5f, 0x59, 0x86, - 0xa1, 0x1c, 0x35, 0x18, 0xd1, 0x8e, 0xd1, 0x56, 0x3d, 0x2a, - 0x70, 0x54, 0xe0, 0xa0, 0xba, 0x5, 0x14, 0x51, 0x5d, 0x26, - 0x81, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x6, 0x57, - 0x88, 0xfc, 0x33, 0xa6, 0xf8, 0xb3, 0x4d, 0x7b, 0x1d, 0x4e, - 0xd9, 0x6e, 0x20, 0x6e, 0x46, 0x78, 0x64, 0x3e, 0xaa, 0x7a, - 0x83, 0x5f, 0x3a, 0xf8, 0xef, 0xe0, 0x66, 0xb1, 0xe1, 0x97, - 0x96, 0xe7, 0x4d, 0x56, 0xd5, 0xb4, 0xd1, 0xc8, 0x31, 0x8c, - 0xcc, 0x83, 0xfd, 0xa5, 0x1d, 0x7e, 0xa3, 0xf2, 0x15, 0xf4, - 0xfd, 0x15, 0xe3, 0xe3, 0xf2, 0xac, 0x3e, 0x60, 0xbf, 0x78, - 0xad, 0x2e, 0xeb, 0x7f, 0xf8, 0x27, 0x2d, 0x6c, 0x34, 0x2b, - 0xfc, 0x5b, 0xf7, 0x3e, 0x15, 0x20, 0xa9, 0x20, 0x8c, 0x11, - 0xc1, 0x7, 0xb5, 0x25, 0x7d, 0x89, 0xe2, 0x7f, 0x86, 0xde, - 0x1e, 0xf1, 0x70, 0x63, 0x7f, 0xa7, 0x47, 0xe7, 0x9f, 0xf9, - 0x78, 0x87, 0xe4, 0x90, 0x7e, 0x23, 0xaf, 0xe3, 0x9a, 0xf3, - 0x2d, 0x6b, 0xf6, 0x66, 0x53, 0xb9, 0xb4, 0x9d, 0x64, 0x8f, - 0x48, 0xaf, 0x23, 0xcf, 0xfe, 0x3c, 0xbf, 0xe1, 0x5f, 0x5, - 0x89, 0xe1, 0xbc, 0x65, 0x17, 0x7a, 0x56, 0x9a, 0xfb, 0x9f, - 0xdc, 0xff, 00, 0xcc, 0xf1, 0xaa, 0x60, 0x2a, 0xc7, 0xe1, - 0xd4, 0xf0, 0x8a, 0x2b, 0xd0, 0x35, 0x3f, 0x81, 0x5e, 0x30, - 0xd3, 0xdc, 0x84, 0xb0, 0x8e, 0xf5, 0x7, 0xf1, 0xdb, 0x4c, - 0xa7, 0xf4, 0x62, 0xf, 0xe9, 0x58, 0x57, 0x3f, 0xe, 0x3c, - 0x53, 0x68, 0x71, 0x26, 0x81, 0x7f, 0xff, 00, 00, 0x81, - 0x9c, 0x7e, 0x99, 0xaf, 0xa, 0xa6, 0x7, 0x15, 0x49, 0xda, - 0x74, 0xa4, 0xbe, 0x4c, 0xe2, 0x74, 0x6a, 0x47, 0x78, 0xb3, - 0x9c, 0xa2, 0xb4, 0xe4, 0xf0, 0xc6, 0xb3, 0x11, 0xc3, 0xe9, - 0x37, 0xca, 0x7d, 0xd, 0xb3, 0xff, 00, 0x85, 0x35, 0x7c, - 0x39, 0xab, 0x31, 0xc0, 0xd2, 0xaf, 0x4f, 0xd2, 0xd9, 0xff, - 00, 0xc2, 0xb9, 0xbd, 0x95, 0x4f, 0xe5, 0x7f, 0x71, 0x1c, - 0xb2, 0xec, 0x67, 0x51, 0x5b, 0xf6, 0xfe, 00, 0xf1, 0x2d, - 0xd1, 0x1e, 0x56, 0x83, 0xa8, 0xb6, 0x7a, 0x13, 0x6c, 0xe0, - 0x7e, 0x64, 0x56, 0xe6, 0x9d, 0xf0, 0x47, 0xc6, 0x3a, 0x83, - 0xa8, 0x3a, 0x5f, 0xd9, 0x50, 0xff, 00, 0x1d, 0xc4, 0xa8, - 0xa0, 0x7e, 0x19, 0x27, 0xf4, 0xae, 0x88, 0x60, 0xb1, 0x35, - 0x3e, 0xa, 0x52, 0x7f, 0x26, 0x5a, 0xa5, 0x52, 0x5b, 0x45, - 0x9c, 0x25, 0x15, 0xee, 0x3a, 0x2f, 0xec, 0xcf, 0x2b, 0x6d, - 0x6d, 0x5b, 0x58, 0x54, 0xf5, 0x8a, 0xce, 0x3c, 0x9f, 0xfb, - 0xe9, 0xbf, 0xc2, 0xbd, 0x2f, 0xc3, 0x1f, 0xa, 0x7c, 0x35, - 0xe1, 0x4d, 0xaf, 0x6b, 0xa7, 0xac, 0xf7, 0x2b, 0xff, 00, - 0x2f, 0x17, 0x5f, 0xbc, 0x7f, 0xc3, 0x3c, 0xf, 0xc0, 0xa, - 0xf7, 0x30, 0xdc, 0x39, 0x8d, 0xac, 0xef, 0x51, 0x28, 0x2f, - 0x3d, 0x5f, 0xdc, 0xbf, 0xe0, 0x1d, 0x94, 0xf0, 0x35, 0x67, - 0xf1, 0x68, 0x7c, 0xfd, 0xe0, 0xbf, 0x83, 0x9a, 0xff, 00, - 0x8c, 0xc, 0x73, 0x18, 0x7f, 0xb3, 0xb4, 0xf6, 0x23, 0x37, - 0x37, 0x20, 0x82, 0x47, 0xaa, 0xaf, 0x56, 0xfd, 0x7, 0xbd, - 0x7d, 0xf, 0xe0, 0x9f, 0x87, 0x3a, 0x37, 0x81, 0x6d, 0xb6, - 0xd8, 0xc1, 0xe6, 0x5d, 0x32, 0xe2, 0x5b, 0xb9, 0x79, 0x91, - 0xff, 00, 0xc0, 0x7b, 0xa, 0xea, 0x68, 0xaf, 0xba, 0xc0, - 0x64, 0xd8, 0x6c, 0x7, 0xbd, 0x15, 0xcd, 0x2e, 0xef, 0xf4, - 0xec, 0x7b, 0x14, 0x30, 0xb4, 0xe8, 0xea, 0xb5, 0x7d, 0xc2, - 0x8a, 0x28, 0xaf, 0x74, 0xec, 0xa, 0xe5, 0x7e, 0x28, 0x6b, - 0xe3, 0xc3, 0x7e, 0x5, 0xd5, 0xae, 0xc3, 0x6d, 0x95, 0xa2, - 0x30, 0xc4, 0x7b, 0xef, 0x7f, 0x94, 0x7e, 0x59, 0xcf, 0xe1, - 0x5d, 0x55, 0x78, 0xc7, 0xed, 0x29, 0x71, 0x76, 0xfa, 0x46, - 0x95, 0x69, 0xd, 0xbc, 0xcf, 0x6d, 0xe6, 0xb4, 0xf3, 0x4a, - 0x88, 0x4a, 0x29, 0x3, 0xa, 0x9, 0xe9, 0xfc, 0x4d, 0xf9, - 0x57, 0x99, 0x99, 0xd7, 0x78, 0x7c, 0x1d, 0x4a, 0x91, 0xde, - 0xda, 0x7c, 0xf4, 0x39, 0xf1, 0x13, 0x70, 0xa5, 0x29, 0x23, - 0xe7, 0xba, 0x28, 0xa2, 0xbf, 0x12, 0x3e, 0x48, 0x28, 0xa2, - 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, - 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0xbb, 0x3f, 0x5, 0x7c, - 0x27, 0xd7, 0xbc, 0x69, 0x2c, 0x4f, 0x15, 0xbb, 0x59, 0x69, - 0xed, 0xc9, 0xbd, 0xb8, 0x5c, 0x2e, 0x3f, 0xd9, 0x1d, 0x5b, - 0xf0, 0xe3, 0xde, 0xb7, 0xa3, 0x42, 0xae, 0x22, 0x6a, 0x9d, - 0x18, 0xb6, 0xfc, 0x8b, 0x84, 0x25, 0x37, 0x68, 0xab, 0xb3, - 0x9c, 0xd0, 0x34, 0x1b, 0xdf, 0x13, 0x6a, 0xd6, 0xfa, 0x76, - 0x9f, 0x17, 0x9d, 0x73, 0x33, 0x60, 0xe, 0xca, 0x3b, 0xb1, - 0x3d, 0x80, 0xf5, 0xaf, 0xae, 0xbc, 0xb, 0xe0, 0xeb, 0x5f, - 0x3, 0xf8, 0x7a, 0xd, 0x3a, 0xdc, 0x6, 0x90, 0xd, 0xf3, - 0xcc, 0x6, 0xc, 0xb2, 0x1e, 0xa7, 0xfa, 0xf, 0x6a, 0x87, - 0xc0, 0xdf, 0xf, 0xb4, 0xbf, 0x1, 0x58, 0x18, 0x2c, 0x50, - 0xc9, 0x71, 0x26, 0x3c, 0xeb, 0xa9, 00, 0xdf, 0x21, 0xfe, - 0x83, 0xd8, 0x57, 0x4f, 0x5f, 0xa9, 0x64, 0xd9, 0x3a, 0xcb, - 0xe3, 0xed, 0x6a, 0xeb, 0x51, 0xfe, 0xb, 0xb7, 0xf9, 0x9f, - 0x43, 0x85, 0xc2, 0xfb, 0x5, 0xcd, 0x2f, 0x88, 0x28, 0xa2, - 0x8a, 0xfa, 0x73, 0xd1, 0xa, 0x28, 0xa2, 0x80, 0x30, 0x7c, - 0x73, 0x37, 0x91, 0xe1, 0x8b, 0xd6, 0xe9, 0xf2, 0xe2, 0xbe, - 0x8, 0xf1, 0xc4, 0xbe, 0x66, 0xbd, 0x72, 0x73, 0xfc, 0x46, - 0xbe, 0xe8, 0xf8, 0x9f, 0x37, 0x93, 0xe1, 0x2b, 0xa3, 0x9a, - 0xf8, 0x2f, 0xc5, 0xd, 0xbf, 0x55, 0xba, 0x6c, 0xff, 00, - 0x11, 0xaf, 0x84, 0xe2, 0x19, 0x7e, 0xfa, 0x9c, 0x4f, 0x88, - 0xe2, 0x49, 0x7b, 0x91, 0x47, 0x8f, 0x7c, 0x59, 0x9f, 0xcb, - 0xd2, 0x64, 0xe7, 0xb1, 0xfe, 0x55, 0xf7, 0x67, 0xfc, 0x13, - 0xa2, 0xc9, 0xad, 0x3f, 0x64, 0xaf, 0x8, 0xbb, 0xc, 0x1b, - 0x89, 0xaf, 0x67, 0xfc, 0xd, 0xd4, 0xa3, 0xfa, 0x57, 0xc0, - 0x5f, 0x19, 0xa6, 0xf2, 0xf4, 0xa9, 0x79, 0xe3, 0x69, 0xaf, - 0xd2, 0x7f, 0xd8, 0xaf, 0x4a, 0x1a, 0x3f, 0xec, 0xaf, 0xf0, - 0xda, 00, 0x41, 0xdf, 0xa5, 0x25, 0xc1, 0xc7, 0xac, 0x8c, - 0xd2, 0x7f, 0xec, 0xd5, 0xed, 0xe5, 0xa, 0xd4, 0x91, 0xe6, - 0xf0, 0x74, 0x7d, 0xda, 0xf3, 0xf3, 0x3d, 0xb2, 0x8a, 0x28, - 0xaf, 0xa0, 0x3f, 0x49, 0x39, 0x5f, 0x8a, 0x1e, 0x30, 0x4f, - 0x2, 0x78, 0x13, 0x56, 0xd6, 0x18, 0xfe, 0xf2, 0x18, 0xb6, - 0xc2, 0x3d, 0x65, 0x6f, 0x95, 0x7, 0xe6, 0x45, 0x7e, 0x7e, - 0xa7, 0x99, 0x77, 0x71, 0x96, 0x26, 0x49, 0xa5, 0x6c, 0xb3, - 0x1e, 0x4b, 0x31, 0x3c, 0x9f, 0xce, 0xbe, 0x93, 0xfd, 0xaf, - 0xfc, 0x64, 0xf, 0xf6, 0x4f, 0x85, 0xa1, 0x3c, 0xff, 00, - 0xc7, 0xf5, 0xc1, 0xf6, 0xe5, 0x50, 0x7f, 0xe8, 0x47, 0xf0, - 0x15, 0xe3, 0xbf, 0x8, 0x3c, 0x2a, 0xde, 0x2d, 0xf1, 0xd6, - 0x9b, 0x69, 0xb4, 0xb4, 0x42, 0x40, 0xf2, 0x7b, 0x28, 0xe6, - 0xbf, 0x3e, 0xce, 0xab, 0x4b, 0x13, 0x8b, 0x8e, 0x1e, 0x1d, - 0x34, 0xf9, 0xb3, 0xf3, 0xbc, 0xe2, 0xa3, 0xc6, 0xe3, 0xe3, - 0x86, 0x86, 0xd1, 0xd3, 0xe6, 0xf7, 0xfd, 0xf, 0xae, 0xfe, - 0x7, 0x78, 0x51, 0x7c, 0x2b, 0xf0, 0xff, 00, 0x4f, 0x8c, - 0xa8, 0x59, 0xe7, 0x5f, 0x36, 0x43, 0x8e, 0xe6, 0xbd, 0x2, - 0xa3, 0xb7, 0x81, 0x2d, 0xa0, 0x8e, 0x14, 0x1b, 0x51, 0x14, - 0x28, 0x3, 0xd0, 0x54, 0x95, 0xf7, 0x54, 0x29, 0x2a, 0x14, - 0xa3, 0x4a, 0x3b, 0x25, 0x63, 0xef, 0xe9, 0x53, 0x54, 0xa1, - 0x18, 0x47, 0x64, 0x14, 0x51, 0x45, 0x6e, 0x6a, 0x7e, 0x70, - 0xff, 00, 0xc1, 0x43, 0xbf, 0xe0, 0x9c, 0x3a, 0xf7, 0xc6, - 0x5f, 0x19, 0x5d, 0x7c, 0x4c, 0xf8, 0x6b, 0xf6, 0x7b, 0x8d, - 0x7a, 0xea, 0x24, 0x1a, 0xae, 0x87, 0x33, 0x88, 0x9a, 0xe9, - 0xd1, 0x42, 0xac, 0xb1, 0x39, 0xf9, 0x77, 0x95, 0x55, 0x52, - 0xad, 0x8c, 0xed, 0x4, 0x1e, 0xb5, 0xf9, 0x9d, 0xe2, 0x4f, - 0xd9, 0xa7, 0xe2, 0xcf, 0x84, 0x2e, 0xe4, 0xb6, 0xd5, 0xfe, - 0x1b, 0x78, 0xaa, 0xce, 0x54, 0xfb, 0xc4, 0xe9, 0x13, 0xba, - 0x7e, 0xe, 0xaa, 0x54, 0xfe, 0x6, 0xbf, 0xa4, 0xfa, 0xe7, - 0xbe, 0x21, 0x78, 0xca, 0xdb, 0xe1, 0xe7, 0x81, 0xb5, 0xef, - 0x13, 0x5e, 0x47, 0x24, 0xd6, 0xfa, 0x55, 0x9c, 0xb7, 0x6d, - 0x14, 0x2a, 0x59, 0xe4, 0xda, 0xa4, 0x84, 0x50, 0x39, 0x2c, - 0xc7, 00, 0x1, 0xdc, 0xd3, 0xb9, 0x2d, 0x5c, 0xfe, 0x63, - 0xef, 0xac, 0x6e, 0x74, 0xcb, 0xb9, 0x6d, 0x6f, 0x2d, 0xe5, - 0xb4, 0xba, 0x85, 0xb6, 0x49, 0x4, 0xe8, 0x51, 0xd1, 0xbd, - 0xa, 0x9e, 0x41, 0xfa, 0xd5, 0x7a, 0xeb, 0x3e, 0x21, 0x5c, - 0x78, 0x93, 0xc5, 0xbe, 0x32, 0xd7, 0x7c, 0x49, 0xae, 0x69, - 0xb7, 0xb0, 0xea, 0x1a, 0xb5, 0xf4, 0xd7, 0xf7, 0x6, 0x68, - 0x1d, 0x70, 0xf2, 0x39, 0x72, 0x39, 0x1d, 0x1, 0x38, 0xaf, - 0xd9, 0xef, 0xf8, 0x27, 0x3f, 0xec, 0xbd, 0xe1, 0xaf, 0x8, - 0x7e, 0xcb, 0x5e, 0x1e, 0xbd, 0xf1, 0x2f, 0x86, 0xf4, 0xcd, - 0x5b, 0x58, 0xf1, 0x29, 0x3a, 0xcc, 0xe7, 0x52, 0xb1, 0x49, - 0x9a, 0x38, 0xe4, 00, 0x42, 0x9f, 0x38, 0x38, 0xc4, 0x6a, - 0xa7, 0x1e, 0xac, 0x69, 0xdc, 0x9b, 0x5c, 0xfc, 0x36, 0xa2, - 0xbf, 0xa4, 0x3d, 0x67, 0xf6, 0x53, 0xf8, 0x37, 0xe2, 0x2, - 0x7f, 0xb4, 0x3e, 0x17, 0xf8, 0x52, 0xe7, 0x3e, 0xba, 0x4c, - 0x23, 0xf9, 0x28, 0xae, 0x53, 0x54, 0xfd, 0x81, 0x7f, 0x67, - 0xbd, 0x5c, 0x62, 0x6f, 0x85, 0x5a, 0xc, 0x5f, 0xf5, 0xeb, - 0x1b, 0xc1, 0xff, 00, 0xa0, 0x30, 0xa5, 0x71, 0xf2, 0x9f, - 0xcf, 0x3d, 0x7d, 0x3f, 0xff, 00, 0x4, 0xe1, 0xf8, 0x2a, - 0x7e, 0x34, 0x7e, 0xd4, 0xfe, 0x18, 0x8e, 0xe2, 0x3, 0x2e, - 0x8f, 0xe1, 0xf6, 0xfe, 0xdc, 0xbe, 0xc8, 0x3b, 0x71, 0x9, - 0x6, 0x25, 0x27, 0xde, 0x53, 0x1f, 0xe0, 0xd, 0x7e, 0xa9, - 0x6a, 0x5f, 0xf0, 0x4c, 0x4f, 0xd9, 0xc3, 0x51, 0x18, 0xff, - 00, 0x84, 00, 0xda, 0xfb, 0xdb, 0x6a, 0x97, 0x69, 0xff, - 00, 0xb5, 0x6b, 0xd0, 0x3e, 00, 0xfe, 0xc8, 0x5f, 0xc, - 0xbf, 0x66, 0x6d, 0x43, 0x59, 0xbd, 0xf0, 0xe, 0x8d, 0x71, - 0xa6, 0xdc, 0xea, 0xd1, 0xc7, 0xd, 0xd3, 0xdc, 0x5e, 0xcb, - 0x72, 0x4a, 0x21, 0x62, 0xa1, 0x7c, 0xc2, 0x76, 0x8c, 0xb1, - 0xce, 0x3a, 0xf1, 0xe9, 0x45, 0xc3, 0x94, 0xf6, 0x7a, 0xfc, - 0xf8, 0xff, 00, 0x82, 0xc6, 0xfc, 0x66, 0x3e, 0x11, 0xf8, - 0x31, 0xa1, 0x7c, 0x3f, 0xb3, 0x98, 0xa5, 0xef, 0x8a, 0x6e, - 0xfc, 0xeb, 0x90, 0xa7, 0x9f, 0xb2, 0x5b, 0x95, 0x62, 0xf, - 0xd6, 0x46, 0x8f, 0xfe, 0xf9, 0x35, 0xfa, 0xf, 0x5f, 0x23, - 0xfe, 0xd6, 0x9f, 0xf0, 0x4f, 0x2d, 0x1b, 0xf6, 0xb2, 0xf1, - 0xd5, 0xaf, 0x8a, 0x35, 0x7f, 0x1c, 0x6b, 0x1a, 0x34, 0xf6, - 0x96, 0x6b, 0x65, 0x6d, 0x65, 0x6f, 0x6f, 0x14, 0x90, 0x44, - 0x80, 0x96, 0x24, 0x3, 0x83, 0x96, 0x66, 0x24, 0xf3, 0xd8, - 0x7a, 0x52, 0x29, 0x9f, 0x83, 0xf4, 0x57, 0xea, 0x9e, 0xa5, - 0xff, 00, 0x4, 0x45, 0xb5, 0x20, 0xfd, 0x83, 0xe2, 0xc4, - 0xca, 0x7b, 0xb, 0x9d, 0x10, 0x1f, 0xd5, 0x66, 0x15, 0xcf, - 0x5d, 0xff, 00, 0xc1, 0x11, 0xbc, 0x42, 0xaa, 0x4d, 0xaf, - 0xc5, 0x6d, 0x32, 0x46, 0xec, 0x26, 0xd1, 0xe4, 0x41, 0xf9, - 0x89, 0x4f, 0xf2, 0xaa, 0xb9, 0x16, 0x67, 0xe6, 0x66, 0x7, - 0xa5, 0x49, 0x14, 0xf2, 0x42, 0x7f, 0x77, 0x23, 0xc7, 0xfe, - 0xeb, 0x11, 0x5f, 0xa2, 0x1a, 0x87, 0xfc, 0x11, 0x57, 0xe2, - 0x44, 0x8, 0x4d, 0x9f, 0x8f, 0x3c, 0x31, 0x74, 0x7b, 0x2c, - 0x91, 0xdc, 0x47, 0xff, 00, 0xb2, 0x1a, 0xe3, 0xf5, 0x4f, - 0xf8, 0x23, 0xd7, 0xc7, 0x5b, 0x32, 0xdf, 0x65, 0xb9, 0xf0, - 0xb5, 0xfa, 0x8e, 0x9e, 0x5e, 0xa4, 0xe8, 0x4f, 0xfd, 0xf5, - 0x10, 0xa2, 0xe1, 0x66, 0x7c, 0x69, 0xa6, 0xf8, 0xcf, 0xc4, - 0x1a, 0x3b, 0x87, 0xb0, 0xd7, 0x75, 0x3b, 0x17, 0x1d, 0x1a, - 0xda, 0xf2, 0x48, 0xcf, 0xe8, 0xc2, 0xba, 0x9d, 0x3f, 0xf6, - 0x87, 0xf8, 0xa7, 0xa5, 0x38, 0x6b, 0x4f, 0x89, 0x1e, 0x2c, - 0x84, 0x8e, 0x9b, 0x75, 0xab, 0x9c, 0xf, 0xc3, 0x7d, 0x7b, - 0xce, 0xa5, 0xff, 00, 0x4, 0xab, 0xfd, 0xa2, 0x74, 0xf0, - 0x4a, 0x78, 0x5b, 0x4f, 0xbd, 0x3, 0xfe, 0x7d, 0x75, 0x68, - 0xe, 0x7f, 0xef, 0xa6, 0x15, 0xc9, 0xea, 0x7f, 0xf0, 0x4e, - 0xbf, 0xda, 0x27, 0x4a, 0x4, 0xbf, 0xc3, 0x2d, 0x46, 0x75, - 0x1d, 0xed, 0xae, 0x2d, 0xe5, 0xfd, 0x16, 0x4c, 0xd0, 0x16, - 0x67, 0x33, 0x61, 0xfb, 0x69, 0x7c, 0x76, 0xd3, 0x48, 0xf2, - 0x3e, 0x2b, 0xf8, 0xa7, 0x8e, 0x82, 0x4d, 0x41, 0xe4, 0x1f, - 0xf8, 0xf6, 0x6b, 0xa1, 0xb4, 0xff, 00, 0x82, 0x86, 0xfe, - 0xd1, 0x56, 0x61, 0x44, 0x7f, 0x14, 0xb5, 0x56, 0x3, 0xfe, - 0x7a, 0xc1, 0x6f, 0x27, 0xfe, 0x85, 0x19, 0xae, 0x67, 0x53, - 0xfd, 0x8d, 0xfe, 0x39, 0x69, 0x19, 0xfb, 0x4f, 0xc2, 0x9f, - 0x15, 0xe0, 0x75, 0x31, 0x69, 0x92, 0x4b, 0xff, 00, 0xa0, - 0x3, 0x5c, 0xdd, 0xd7, 0xec, 0xf7, 0xf1, 0x4a, 0xc7, 0x3f, - 0x68, 0xf8, 0x6f, 0xe2, 0xd8, 0x71, 0xd7, 0x7e, 0x87, 0x72, - 0x3f, 0xf6, 0x4a, 0x3, 0x53, 0xda, 0x2c, 0xbf, 0xe0, 0xa7, - 0x9f, 0xb4, 0x7d, 0x96, 0x3f, 0xe2, 0xbf, 0x17, 00, 0x76, - 0x9f, 0x4a, 0xb4, 0x6c, 0xff, 00, 0xe4, 0x2a, 0xea, 0x34, - 0xff, 00, 0xf8, 0x2b, 0x87, 0xed, 0x5, 0x64, 0x81, 0x65, - 0xd4, 0x3c, 0x3f, 0x7d, 0x8e, 0xf7, 0x1a, 0x4a, 0x82, 0x7f, - 0xef, 0x96, 0x5a, 0xf9, 0x4e, 0xf7, 0xe1, 0xaf, 0x8b, 0xf4, - 0xd0, 0x4d, 0xdf, 0x85, 0x75, 0xbb, 0x50, 0x3a, 0xf9, 0xfa, - 0x74, 0xc9, 0x8f, 0xcd, 0x6b, 0xe, 0xeb, 0x4f, 0xba, 0xb2, - 0x38, 0xb8, 0xb6, 0x9a, 0x3, 0xe9, 0x2c, 0x65, 0x7f, 0x9d, - 0x1, 0x76, 0x7d, 0xe7, 0xa5, 0x7f, 0xc1, 0x66, 0x3e, 0x30, - 0xda, 0x15, 0xfb, 0x6f, 0x87, 0x7c, 0x2b, 0x7e, 0x7, 0x5f, - 0xf4, 0x79, 0xa2, 0xcf, 0xe5, 0x25, 0x75, 0x76, 0x1f, 0xf0, - 0x5b, 0x3f, 0x18, 0xc5, 0x8f, 0xb6, 0xfc, 0x33, 0xd0, 0xee, - 0x3d, 0x7c, 0x8d, 0x42, 0x68, 0xbf, 0x9a, 0xb5, 0x7e, 0x6c, - 0xe4, 0x52, 0xd1, 0x60, 0xbb, 0x3f, 0x53, 0x74, 0xef, 0xf8, - 0x2d, 0xd0, 0x38, 0xfb, 0x7f, 0xc2, 0x82, 0xbe, 0xbf, 0x66, - 0xd6, 0xb3, 0xfc, 0xe1, 0x15, 0xd2, 0xd9, 0xff, 00, 0xc1, - 0x6c, 0xfc, 0x1a, 0xe0, 0x7d, 0xaf, 0xe1, 0xae, 0xbb, 0x11, - 0xef, 0xe4, 0xdf, 0x42, 0xff, 00, 0xcc, 0x2d, 0x7e, 0x46, - 0xd1, 0x45, 0x82, 0xec, 0xfd, 0x8f, 0xb1, 0xff, 00, 0x82, - 0xd2, 0xfc, 0x29, 0x9b, 0x2, 0xe7, 0xc1, 0x9e, 0x2e, 0xb6, - 0xf5, 0x2b, 0x1d, 0xb3, 0x8f, 0xfd, 0x1c, 0x2b, 0xa4, 0xd3, - 0xbf, 0xe0, 0xb0, 0xff, 00, 0x2, 0xef, 0x31, 0xf6, 0x9b, - 0x5f, 0x14, 0xd8, 0x13, 0xff, 00, 0x3d, 0x74, 0xd4, 0x70, - 0x3f, 0xef, 0x89, 0xd, 0x7e, 0x26, 0x51, 0x45, 0x87, 0xcc, - 0xcf, 0xdd, 0xdd, 0x3f, 0xfe, 0xa, 0xad, 0xfb, 0x3a, 0x5f, - 0x85, 0xdd, 0xe2, 0xbb, 0xfb, 0x46, 0x3f, 0xc3, 0x71, 0xa3, - 0xdc, 0x8c, 0x7e, 0x21, 0x8, 0xae, 0xb7, 0x4b, 0xff, 00, - 0x82, 0x89, 0x7e, 0xce, 0xfa, 0xaa, 0x6, 0x4f, 0x89, 0xba, - 0x6d, 0xb9, 0x3f, 0xc3, 0x75, 0xc, 0xd1, 0x1f, 0xd5, 0x2b, - 0xf9, 0xf5, 0xa2, 0x8b, 0x7, 0x31, 0xfd, 0x18, 0x69, 0xdf, - 0xb6, 0x8f, 0xc0, 0x8d, 0x51, 0x41, 0x83, 0xe2, 0xcf, 0x84, - 0xf9, 0xe8, 0x25, 0xd4, 0xe3, 0x88, 0xfe, 0x4e, 0x41, 0xae, - 0xa3, 0x4a, 0xfd, 0xa0, 0xbe, 0x18, 0x6b, 0x60, 0x7d, 0x83, - 0xe2, 0x1f, 0x85, 0xee, 0xf3, 0xff, 00, 0x3c, 0xb5, 0x7b, - 0x73, 0xff, 00, 0xb3, 0xd7, 0xf3, 0x4f, 0x45, 0x2b, 0x7, - 0x31, 0xfd, 0x3c, 0xd9, 0xf8, 0xff, 00, 0xc2, 0xfa, 0x81, - 0xc5, 0xaf, 0x89, 0x34, 0x8b, 0x92, 0x7b, 0x43, 0x7d, 0x13, - 0xff, 00, 0x26, 0xad, 0x58, 0x75, 0x5b, 0x2b, 0x83, 0x88, - 0xaf, 0x2d, 0xe4, 0x3e, 0x89, 0x2a, 0x9f, 0xeb, 0x5f, 0xcb, - 0x86, 0x7, 0xa5, 0x5a, 0xb4, 0xd5, 0x2f, 0x34, 0xf6, 0x6, - 0xd6, 0xee, 0x7b, 0x62, 0x3a, 0x18, 0x65, 0x64, 0xfe, 0x46, - 0x8b, 0xf, 0x98, 0xfe, 0xa3, 0x83, 0x3, 0xd0, 0x83, 0x4b, - 0x5f, 0xcc, 0x86, 0x9f, 0xf1, 0x5b, 0xc6, 0xda, 0x49, 0x6, - 0xc7, 0xc6, 0x3a, 0xfd, 0x91, 0x1d, 0xd, 0xbe, 0xa9, 0x3c, - 0x7f, 0xc9, 0xeb, 0xa8, 0xd2, 0xff, 00, 0x6a, 0x6f, 0x8c, - 0x5a, 0x2c, 0x8a, 0xf6, 0x9f, 0x14, 0x3c, 0x5a, 0x85, 0x7a, - 0x6f, 0xd6, 0x27, 0x90, 0x7e, 0x4c, 0xc4, 0x51, 0x60, 0xe6, - 0x3f, 0xa4, 0x7a, 0x2b, 0xf9, 0xe6, 0xb3, 0xfd, 0xbf, 0x3f, - 0x68, 0x4b, 0x12, 0xbe, 0x5f, 0xc5, 0x5d, 0x71, 0xb6, 0xf4, - 0x12, 0x98, 0xe4, 0x1f, 0xf8, 0xf2, 0x1a, 0xe8, 0xec, 0x7f, - 0xe0, 0xa6, 0x9f, 0xb4, 0x7d, 0x96, 0xd1, 0xff, 00, 0xb, - 0xd, 0xee, 0x15, 0x7b, 0x4f, 0xa6, 0x5a, 0x36, 0x7e, 0xa7, - 0xca, 0xcd, 0x16, 0xe, 0x64, 0x7e, 0xfb, 0x51, 0x5f, 0x86, - 0x76, 0x3f, 0xf0, 0x56, 0xcf, 0xda, 0x12, 0xce, 0x35, 0x57, - 0xd5, 0x34, 0x2b, 0xbc, 0x7f, 0x14, 0xfa, 0x42, 0x64, 0xff, - 00, 0xdf, 0x24, 0x56, 0xdd, 0x97, 0xfc, 0x16, 0x33, 0xe3, - 0xad, 0xb6, 0x4, 0xda, 0x7f, 0x84, 0x2e, 0xfd, 0xe4, 0xd3, - 0x66, 0x53, 0xff, 00, 0x8e, 0xce, 0x28, 0xb0, 0x5d, 0x1f, - 0xb6, 0x34, 0x57, 0xe3, 0xb6, 0x9d, 0xff, 00, 0x5, 0xa8, - 0xf8, 0x9b, 0x2, 0xa8, 0xbd, 0xf0, 0x3f, 0x85, 0xee, 0xdb, - 0xb9, 0x8d, 0xae, 0x22, 0xcf, 0xfe, 0x3e, 0x6b, 0xa5, 0xd3, - 0xff, 00, 0xe0, 0xb7, 0x1a, 0xfc, 0x78, 0xfb, 0x77, 0xc2, - 0xbd, 0x36, 0x7f, 0xfa, 0xf7, 0xd5, 0xe4, 0x8f, 0xf9, 0xc4, - 0xd4, 0x58, 0x77, 0x47, 0xeb, 0x25, 0x15, 0xf9, 0x8b, 0xa5, - 0x7f, 0xc1, 0x6e, 0x34, 0x77, 0x51, 0xfd, 0xa5, 0xf0, 0xae, - 0xfa, 0x16, 0xef, 0xf6, 0x5d, 0x5d, 0x24, 0x1f, 0xf8, 0xf4, - 0x6b, 0x5d, 0xd, 0xaf, 0xfc, 0x16, 0xbf, 0xe1, 0xe3, 0x91, - 0xf6, 0x9f, 0x87, 0xbe, 0x27, 0x88, 0x7a, 0xc5, 0x35, 0xb3, - 0xff, 00, 0x37, 0x5a, 0x2, 0xe8, 0xfd, 0x19, 0xa2, 0xbe, - 0x1, 0xd3, 0x7f, 0xe0, 0xb3, 0xbf, 0x7, 0xae, 0xdc, 0xb, - 0xaf, 0xc, 0x78, 0xc2, 0xc4, 0x7f, 0x79, 0xed, 0xad, 0x9c, - 0x7f, 0xe3, 0xb3, 0x1a, 0xeb, 0x74, 0xef, 0xf8, 0x2b, 0x87, - 0xec, 0xfb, 0x79, 0x8f, 0x3b, 0x50, 0xd7, 0xac, 0x49, 0xff, - 00, 0x9e, 0xfa, 0x4b, 0x9c, 0x7f, 0xdf, 0x24, 0xd2, 0xb, - 0xa3, 0xed, 0x1a, 0x2b, 0xe5, 0x5d, 0x33, 0xfe, 0xa, 0x7d, - 0xfb, 0x39, 0xea, 0x78, 0x1f, 0xf0, 0x9d, 0x3d, 0xa1, 0x3d, - 0xae, 0xb4, 0xcb, 0x94, 0xfd, 0x7c, 0xbc, 0x57, 0x57, 0xa6, - 0xfe, 0xdf, 0x1f, 0xb3, 0xee, 0xa8, 0x7, 0x95, 0xf1, 0x4f, - 0x42, 0x8c, 0x9e, 0xd7, 0x12, 0x3c, 0x47, 0xff, 00, 0x1e, - 0x51, 0x40, 0xcf, 0x7f, 0xa2, 0xbc, 0x9b, 0x4e, 0xfd, 0xad, - 0x7e, 0xb, 0x6a, 0xc4, 0xb, 0x5f, 0x8a, 0x7e, 0x13, 0x90, - 0x9e, 0xcd, 0xab, 0xc2, 0xa7, 0xf5, 0x61, 0x5d, 0x4d, 0x87, - 0xc6, 0x4f, 00, 0xea, 0xb8, 0xfb, 0x17, 0x8d, 0xbc, 0x3b, - 0x77, 0x9e, 0x9e, 0x4e, 0xab, 0x3, 0x67, 0xf2, 0x7a, 00, - 0xec, 0x28, 0xac, 0x9b, 0x7f, 0x17, 0x68, 0x57, 0x78, 0xf2, - 0x35, 0xad, 0x3a, 0x6c, 0xff, 00, 0xcf, 0x3b, 0xa8, 0xdb, - 0xf9, 0x1a, 0xd0, 0x8a, 0xf2, 0x9, 0xff, 00, 0xd5, 0xcf, - 0x1c, 0x9f, 0xee, 0xb8, 0x34, 0x1, 0x35, 0x14, 0x51, 0x40, - 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, - 0x51, 0x40, 0x5, 0x23, 0x28, 0x60, 0x41, 00, 0x83, 0xd4, - 0x1a, 0x5a, 0x28, 0x3, 0x97, 0xd5, 0xbe, 0x19, 0x78, 0x5b, - 0x5b, 0x2c, 0xd7, 0x5a, 0x25, 0xae, 0xf6, 0xeb, 0x24, 0x4b, - 0xe5, 0x31, 0xfc, 0x57, 0x15, 0xc5, 0xea, 0xff, 00, 0xb3, - 0x7e, 0x83, 0x76, 0x4b, 0x58, 0x5e, 0xdd, 0xd8, 0x1e, 0xca, - 0xc4, 0x4a, 0xbf, 0xae, 0xf, 0xeb, 0x5e, 0xb9, 0x45, 0x79, - 0xd5, 0xb2, 0xec, 0x1e, 0x23, 0xf8, 0x94, 0x93, 0xf9, 0x59, - 0xfd, 0xe8, 0xc2, 0x74, 0x29, 0x4f, 0xe2, 0x8a, 0x3e, 0x7b, - 0xbd, 0xfd, 0x99, 0xb5, 0x38, 0xf2, 0x6d, 0x35, 0x9b, 0x59, - 0x87, 0x61, 0x34, 0x4d, 0x1f, 0xf2, 0xdd, 0x58, 0x17, 0xbf, - 0xb3, 0xff, 00, 0x8b, 0xad, 0x9, 0xf2, 0xe0, 0xb5, 0xbb, - 0x3, 0xbc, 0x33, 0x8f, 0xfd, 0x9b, 0x15, 0xf5, 0x1d, 0x15, - 0xe4, 0x54, 0xe1, 0xcc, 0x4, 0xfe, 0x14, 0xd7, 0xa3, 0xff, - 00, 0x3b, 0x9c, 0xb2, 0xc0, 0x51, 0x7b, 0x68, 0x7c, 0x87, - 0x3f, 0xc2, 0x3f, 0x18, 0x5b, 0xe7, 0x76, 0x83, 0x72, 0xc3, - 0xd5, 0xa, 0xb7, 0xf2, 0x35, 0x49, 0xfe, 0x1d, 0x78, 0xa2, - 0x33, 0xcf, 0x87, 0xf5, 0x1f, 0xc2, 0xd9, 0xcf, 0xf4, 0xaf, - 0xb2, 0x68, 0xae, 0x27, 0xc2, 0xd8, 0x6e, 0x95, 0x25, 0xf8, - 0x7f, 0x91, 0x93, 0xcb, 0xa1, 0xd2, 0x4c, 0xf8, 0xd0, 0x7c, - 0x3d, 0xf1, 0x3b, 0x1e, 0x3c, 0x3f, 0xa9, 0x7f, 0xe0, 0x2b, - 0xff, 00, 0x85, 0x5c, 0xb7, 0xf8, 0x53, 0xe2, 0xeb, 0xaf, - 0xb9, 0xa0, 0x5d, 0x8f, 0xfa, 0xe8, 0x2, 0x7f, 0xe8, 0x44, - 0x57, 0xd7, 0xf4, 0x50, 0xb8, 0x5b, 0xf, 0xd6, 0xa4, 0xbf, - 0xf, 0xf2, 0x5, 0x97, 0x43, 0xac, 0x99, 0xf2, 0xe6, 0x9f, - 0xf0, 0x3, 0xc5, 0xb7, 0xa4, 0x79, 0xb0, 0x5b, 0x59, 0x2f, - 0xac, 0xf3, 0x83, 0xfa, 0x2e, 0x6b, 0xa9, 0xd2, 0xbf, 0x66, - 0x59, 0x4b, 0x2b, 0x6a, 0x5a, 0xda, 0x2a, 0xf7, 0x4b, 0x58, - 0x72, 0x7f, 0xef, 0xa6, 0x3f, 0xd2, 0xbd, 0xea, 0x8a, 0xef, - 0xa5, 0xc3, 0xb8, 0xa, 0x7a, 0xca, 0x2e, 0x5e, 0xaf, 0xfc, - 0xac, 0x6d, 0x1c, 0xd, 0x18, 0xee, 0xae, 0x71, 0x5e, 0x1e, - 0xf8, 0x3d, 0xe1, 0x6f, 0xe, 0xec, 0x78, 0xf4, 0xd5, 0xbc, - 0xb8, 0x5e, 0x7c, 0xeb, 0xc3, 0xe6, 0x1c, 0xfa, 0xe0, 0xf0, - 0x3f, 0x1, 0x5d, 0xa0, 0x1, 0x40, 00, 0x60, 0xe, 0x80, - 0x52, 0xd1, 0x5e, 0xfd, 0x1a, 0x14, 0xb0, 0xf1, 0xe5, 0xa5, - 0x15, 0x15, 0xe4, 0x8e, 0xd8, 0xc2, 0x30, 0x56, 0x8a, 0xb0, - 0x51, 0x45, 0x15, 0xb9, 0x61, 0x45, 0x14, 0x50, 0x1, 0x45, - 0x14, 0x50, 0x7, 0x1, 0xf1, 0xa6, 0xef, 0xec, 0xde, 0x11, - 0x7f, 0x73, 0x5f, 0xa, 0x6b, 0x72, 0x79, 0x97, 0x97, 0xc, - 0x7b, 0xb1, 0xaf, 0xb5, 0x7f, 0x68, 0x1b, 0x9f, 0x27, 0xc3, - 0x8, 0x9e, 0xb9, 0x35, 0xf1, 0x1e, 0xa8, 0xfb, 0xa4, 0x94, - 0xfa, 0xb1, 0xaf, 0xce, 0xf3, 0xd9, 0x73, 0x63, 0x23, 0x1e, - 0xc8, 0xfc, 0xfb, 0x89, 0x67, 0xef, 0x24, 0x78, 0x67, 0xc7, - 0x2b, 0x8d, 0x9a, 0x5c, 0xe3, 0xfd, 0x93, 0xfc, 0xab, 0xf5, - 0x97, 0xf6, 0x7f, 0xd2, 0x46, 0x85, 0xf0, 0x37, 0xc0, 0x16, - 0xb, 0x9c, 0x41, 0xa1, 0x59, 0xaf, 0x3e, 0xbe, 0x4a, 0xe6, - 0xbf, 0x22, 0xfe, 0x38, 0x39, 0x9a, 0x23, 0xa, 0xe5, 0x9a, - 0x46, 0x8, 00, 0xea, 0x49, 0xe2, 0xbf, 0x68, 0x3c, 0x33, - 0x62, 0x9a, 0x5f, 0x86, 0xf4, 0xab, 0x38, 0xc6, 0xd4, 0xb7, - 0xb4, 0x8a, 0x25, 0x7, 0xb0, 0x54, 0x3, 0xfa, 0x57, 0xd5, - 0xe5, 0x6a, 0xd4, 0x51, 0x5c, 0x1d, 0x1b, 0x61, 0x27, 0x2e, - 0xf2, 0x66, 0x9d, 0x14, 0x51, 0x5e, 0xc9, 0xf7, 0xe7, 0xe7, - 0xef, 0xc5, 0xdf, 0x13, 0x3f, 0x8b, 0x3e, 0x26, 0xf8, 0x82, - 0xf9, 0xf8, 0xb, 0x72, 0x6d, 0x90, 0x7a, 0x2c, 0x7f, 0x20, - 0xff, 00, 0xd0, 0x49, 0xfc, 0x6b, 0xdc, 0xbf, 0x64, 0xbf, - 0x8, 0xf9, 0x76, 0xd7, 0xda, 0xe4, 0xa9, 0xc9, 0x3e, 0x54, - 0x44, 0xfe, 0xb5, 0xf3, 0x7d, 0xfc, 0x6f, 0xa9, 0xf8, 0xdf, - 0x58, 0x86, 0x31, 0xba, 0x49, 0x35, 0x3b, 0x85, 00, 0x7a, - 0xf9, 0xad, 0x5f, 0x7c, 0x7c, 0x35, 0xf0, 0xd2, 0x78, 0x53, - 0xc1, 0x9a, 0x6d, 0x82, 0xa0, 0x46, 0x58, 0x83, 0x3f, 0xfb, - 0xc4, 0x57, 0xc1, 0x65, 0x94, 0x25, 0x5f, 0x30, 0x95, 0x59, - 0xfd, 0x9b, 0xbf, 0x9b, 0x3f, 0x39, 0xe1, 0xfa, 0x6f, 0x17, - 0x89, 0x9e, 0x2a, 0x7d, 0x2e, 0xfe, 0x6c, 0xea, 0x28, 0xa2, - 0x8a, 0xfb, 0xd3, 0xf4, 0x60, 0xa2, 0x8a, 0x28, 00, 0xa2, - 0x9a, 0xe8, 0x1c, 0x60, 0xe7, 0xd7, 0x83, 0x8a, 0x5c, 0x7b, - 0x9a, 00, 0xaf, 0x73, 0xa6, 0xda, 0x5e, 0x29, 0x17, 0x16, - 0xb0, 0xce, 0xf, 0x69, 0x23, 0xd, 0xfc, 0xc5, 0x4f, 0x1c, - 0x49, 0xc, 0x6b, 0x1c, 0x68, 0xb1, 0xc6, 0x80, 0x2a, 0xaa, - 0x8c, 00, 0x7, 0x40, 0x5, 0x3a, 0x8a, 00, 0x28, 0xa2, - 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, - 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, - 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x46, 0x50, 0xc3, 0x4, - 0x2, 0x3d, 0xd, 0x67, 0x5e, 0x78, 0x6b, 0x48, 0xd4, 0x3f, - 0xe3, 0xeb, 0x4a, 0xb2, 0xb9, 0xff, 00, 0xae, 0xd6, 0xe8, - 0xff, 00, 0xcc, 0x56, 0x95, 0x14, 0x1, 0xc5, 0x6a, 0x9f, - 0x4, 0xfe, 0x1e, 0xeb, 0x60, 0x8d, 0x43, 0xc0, 0xde, 0x1c, - 0xbd, 0xdd, 0xd7, 0xcf, 0xd2, 0xa0, 0x7c, 0xfe, 0x6b, 0x5c, - 0xa6, 0xa7, 0xfb, 0x1f, 0x7c, 0x10, 0xd6, 0x14, 0x8b, 0xbf, - 0x85, 0x5e, 0x13, 0x70, 0x7a, 0xec, 0xd2, 0xa2, 0x4f, 0xfd, - 0x4, 0xa, 0xf6, 0xa, 0x28, 0x3, 0xe7, 0x4d, 0x57, 0xfe, - 0x9, 0xe5, 0xfb, 0x3c, 0x6a, 0xe0, 0x89, 0x7e, 0x18, 0x69, - 0x50, 0xe7, 0xfe, 0x7d, 0x64, 0x9a, 0xf, 0xfd, 0x1, 0xc5, - 0x72, 0xb7, 0x9f, 0xf0, 0x4a, 0xff, 00, 0xd9, 0xbe, 0xe8, - 0xb1, 0x5f, 0x5, 0xdd, 0xdb, 0x13, 0xff, 00, 0x3c, 0x75, - 0xab, 0xce, 0x3f, 0x3, 0x29, 0x15, 0xf5, 0xad, 0x14, 0x1, - 0xf1, 0x76, 0xa3, 0xff, 00, 0x4, 0x8e, 0xfd, 0x9f, 0x6f, - 0x50, 0xac, 0x1a, 0x7e, 0xbf, 0xa7, 0x9f, 0xef, 0x41, 0xab, - 0xbb, 0x1f, 0xfc, 0x7c, 0x35, 0x72, 0xba, 0x97, 0xfc, 0x11, - 0x97, 0xe0, 0xe5, 0xca, 0x9f, 0xb1, 0x78, 0x93, 0xc5, 0xd6, - 0x4d, 0xfe, 0xd5, 0xd5, 0xbc, 0x80, 0x7e, 0x70, 0x8a, 0xfb, - 0xee, 0x8a, 0x5, 0x64, 0x7e, 0x6d, 0xea, 0x1f, 0xf0, 0x44, - 0xdf, 0x5, 0xbc, 0x6d, 0xf6, 0x1f, 0x89, 0x1a, 0xf4, 0x2f, - 0xfc, 0x3f, 0x68, 0xb3, 0x82, 0x40, 0x3f, 0x2d, 0xb5, 0xc8, - 0xea, 0x1f, 0xf0, 0x44, 0x5b, 0x80, 0x18, 0xd8, 0xfc, 0x58, - 0x8c, 0x9f, 0xe1, 0x5b, 0x8d, 0x10, 0x8f, 0xcc, 0x89, 0xbf, - 0xa5, 0x7e, 0xa9, 0x51, 0x4c, 0x2c, 0x8f, 0xc8, 0x5b, 0xff, - 00, 0xf8, 0x22, 0x7f, 0x8e, 0xe2, 0xc, 0x6c, 0xfe, 0x22, - 0xf8, 0x7e, 0xe3, 0xfb, 0xa2, 0x6b, 0x49, 0xe3, 0xcf, 0xe5, - 0xba, 0xb9, 0x1d, 0x43, 0xfe, 0x8, 0xd9, 0xf1, 0xba, 0xd9, - 0x9b, 0xec, 0xba, 0xcf, 0x83, 0xef, 0x10, 0x74, 0xcd, 0xfc, - 0xf1, 0xb1, 0xfc, 0xc, 0x18, 0xfd, 0x6b, 0xf6, 0xa2, 0x8a, - 0x2e, 0x16, 0x47, 0xe1, 0xd5, 0xd7, 0xfc, 0x12, 0x2b, 0xf6, - 0x81, 0xb7, 0x56, 0x29, 0x69, 0xe1, 0xcb, 0x9c, 0x76, 0x8b, - 0x56, 0x19, 0x3f, 0xf7, 0xd2, 0xa, 0xe6, 0x35, 0x1f, 0xf8, - 0x25, 0xef, 0xed, 0x1b, 0x60, 0x5b, 0x6f, 0x81, 0xa2, 0xbc, - 0xb, 0xde, 0xdb, 0x55, 0xb5, 0x39, 0xfa, 0x66, 0x40, 0x6b, - 0xf7, 0xb2, 0x8a, 0x2e, 0x2e, 0x54, 0x7f, 0x3d, 0x77, 0xdf, - 0xf0, 0x4f, 0xdf, 0xda, 0x1b, 0x4f, 0x24, 0x49, 0xf0, 0xb3, - 0x59, 0x7c, 0x77, 0x80, 0xc5, 0x2f, 0xfe, 0x82, 0xe6, 0xb9, - 0x2d, 0x53, 0xf6, 0x4e, 0xf8, 0xd1, 0xa3, 0xbb, 0x25, 0xd7, - 0xc2, 0xdf, 0x16, 0x23, 0x2f, 0x5f, 0x2f, 0x48, 0x9a, 0x4f, - 0xfd, 0x5, 0x4d, 0x7f, 0x48, 0x34, 0x51, 0x70, 0xe5, 0x3f, - 0x99, 0x4d, 0x47, 0xe1, 0xf, 0x8e, 0xf4, 0x76, 0x2b, 0x7d, - 0xe0, 0xaf, 0x11, 0x59, 0xb0, 0xea, 0x27, 0xd2, 0xa7, 0x4c, - 0x7e, 0x69, 0x5c, 0xf5, 0xe6, 0x8d, 0xa8, 0x69, 0xcc, 0x56, - 0xee, 0xc6, 0xe6, 0xd4, 0x8e, 0xa2, 0x68, 0x59, 0x3f, 0x98, - 0xaf, 0xea, 0x2c, 0x80, 0x7a, 0x8a, 0xad, 0x71, 0xa5, 0x59, - 0x5d, 0xff, 00, 0xaf, 0xb3, 0xb7, 0x9b, 0xfe, 0xba, 0x44, - 0xad, 0xfc, 0xc5, 0x17, 0xe, 0x53, 0xf9, 0x70, 0xc8, 0xf5, - 0xa5, 0xaf, 0xe9, 0xe6, 0xeb, 0xe1, 0xf7, 0x85, 0xaf, 0xb3, - 0xf6, 0x9f, 0xd, 0x69, 0x17, 0x19, 0xeb, 0xe6, 0xd8, 0x44, - 0xd9, 0xfc, 0xd6, 0xb9, 0xcd, 0x4f, 0xf6, 0x78, 0xf8, 0x5b, - 0xac, 0xe7, 0xed, 0xdf, 0xe, 0xbc, 0x2d, 0x73, 0x9e, 0xbe, - 0x66, 0x91, 0x1, 0xcf, 0xfe, 0x39, 0x45, 0xc5, 0xca, 0x7f, - 0x35, 0x34, 0x57, 0xf4, 0x53, 0xa8, 0xfe, 0xc4, 0x7f, 0x1, - 0x75, 0x56, 0x2d, 0x3f, 0xc2, 0x7f, 0xb, 0x86, 0x3d, 0x4c, - 0x36, 0xb, 0x17, 0xfe, 0x83, 0x8a, 0xe5, 0xb5, 0x3f, 0xf8, - 0x26, 0xf7, 0xec, 0xeb, 0xaa, 0x67, 0x77, 0xc3, 0x8b, 0x4b, - 0x62, 0x7f, 0xe7, 0xd6, 0xee, 0xe2, 0x2f, 0xe5, 0x25, 0x17, - 0xe, 0x53, 0xf9, 0xff, 00, 0xa2, 0xbf, 0x75, 0x35, 0x5f, - 0xf8, 0x24, 0xf7, 0xec, 0xf1, 0xa8, 0xee, 0x31, 0x78, 0x7f, - 0x56, 0xd3, 0xc9, 0xef, 0x6b, 0xab, 0xcd, 0xc7, 0xe0, 0xe5, - 0xab, 0x91, 0xd4, 0x3f, 0xe0, 0x8d, 0x9f, 0x5, 0x2e, 0x77, - 0x7d, 0x9b, 0x5a, 0xf1, 0x75, 0x91, 0x3d, 0x36, 0xdf, 0x42, - 0xe0, 0x7f, 0xdf, 0x50, 0xd3, 0xb8, 0x72, 0x9f, 0x8b, 0x34, - 0x57, 0xec, 0x35, 0xd7, 0xfc, 0x11, 0x53, 0xe1, 0x9b, 0x83, - 0xf6, 0x7f, 0x1e, 0x78, 0xae, 0x13, 0xdb, 0xcc, 0x5b, 0x67, - 0x3, 0xf2, 0x8c, 0x57, 0x3f, 0xa8, 0x7f, 0xc1, 0x12, 0x7c, - 0x3a, 0xc0, 0xfd, 0x87, 0xe2, 0x8e, 0xa9, 0x19, 0xec, 0x2e, - 0x34, 0xb8, 0xdf, 0xf5, 0xe, 0x28, 0xb8, 0xac, 0xcf, 0xc9, - 0x9a, 0x2b, 0xf4, 0xeb, 0x51, 0xff, 00, 0x82, 0x23, 0x6a, - 0xe1, 0x98, 0xd8, 0x7c, 0x56, 0xb2, 0x65, 0xec, 0xb7, 0x1a, - 0x33, 0x83, 0xf9, 0x89, 0x4f, 0xf2, 0xae, 0x5b, 0x52, 0xff, - 00, 0x82, 0x2b, 0x7c, 0x4a, 0x81, 0x8f, 0xd8, 0x7c, 0x75, - 0xe1, 0x8b, 0xb5, 0x1d, 0x3c, 0xe4, 0xb8, 0x88, 0x9f, 0xc9, - 0x1a, 0x8b, 0x85, 0x99, 0xf9, 0xdd, 0x49, 0x5f, 0x73, 0xea, - 0x7f, 0xf0, 0x47, 0x7f, 0x8e, 0x76, 0x84, 0xfd, 0x92, 0xf7, - 0xc2, 0xb7, 0xeb, 0xfe, 0xce, 0xa3, 0x22, 0x1f, 0xfc, 0x7a, - 0x2a, 0xe3, 0xb5, 0x4f, 0xf8, 0x25, 0x87, 0xed, 0x1b, 0xa7, - 0x48, 0x56, 0x2f, 0x7, 0xd9, 0xea, 00, 0x7f, 0x1d, 0xae, - 0xaf, 0x6d, 0x83, 0xff, 00, 0x7d, 0xba, 0x9a, 0x2e, 0x16, - 0x67, 0xc9, 0x40, 0xed, 0x39, 0x1c, 0x1f, 0x51, 0x5a, 0xda, - 0x77, 0x8b, 0xb5, 0xdd, 0x1d, 0x81, 0xb0, 0xd6, 0xb5, 0x1b, - 0x12, 0x3a, 0x1b, 0x6b, 0xb9, 0x23, 0xc7, 0xe4, 0x45, 0x7b, - 0xe5, 0xdf, 0xfc, 0x13, 0x8f, 0xf6, 0x8e, 0xb3, 0x7d, 0xad, - 0xf0, 0xc2, 0xfe, 0x4f, 0x78, 0x6f, 0x2d, 0x5c, 0x7e, 0x92, - 0xd6, 0xe, 0xa3, 0xfb, 0xc, 0x7c, 0x7e, 0xd2, 0x89, 0x13, - 0xfc, 0x28, 0xf1, 0x23, 0x63, 0xbc, 0x16, 0xbe, 0x70, 0xfc, - 0xd0, 0x9a, 0x3, 0x53, 0x85, 0xb0, 0xf8, 0xf3, 0xf1, 0x2f, - 0x4b, 0x60, 0xd6, 0x9f, 0x10, 0x7c, 0x53, 0x6e, 0x47, 0x4d, - 0x9a, 0xcd, 0xc0, 0xc7, 0xfe, 0x3f, 0x5d, 0x4e, 0x9f, 0xfb, - 0x63, 0xfc, 0x71, 0xd2, 0xd9, 0x4d, 0xbf, 0xc5, 0x5f, 0x15, - 0x64, 0x74, 0xf3, 0x75, 0x29, 0x25, 0x1f, 0x93, 0x13, 0x58, - 0xfa, 0xaf, 0xec, 0xcb, 0xf1, 0x73, 0x44, 0x24, 0x5e, 0xfc, - 0x32, 0xf1, 0x64, 0x4, 0x7a, 0xe8, 0xd7, 0x7, 0xf9, 0x25, - 0x73, 0x1a, 0x9f, 0xc3, 0x3f, 0x18, 0x68, 0x80, 0x9d, 0x47, - 0xc2, 0x7a, 0xe5, 0x80, 0x1d, 0x4d, 0xd6, 0x9b, 0x34, 0x7f, - 0xfa, 0x12, 0x8a, 0x3, 0x53, 0xda, 0x6c, 0x7f, 0xe0, 0xa2, - 0x5f, 0xb4, 0x55, 0x86, 0xd0, 0xbf, 0x13, 0xf5, 0x39, 0x40, - 0xed, 0x3c, 0x16, 0xf2, 0x7f, 0x38, 0xeb, 0xa8, 0xd3, 0xbf, - 0xe0, 0xa9, 0xdf, 0xb4, 0x66, 0x9e, 0x81, 0x4f, 0x8c, 0x6d, - 0x2e, 0xc0, 0xff, 00, 0x9f, 0x8d, 0x22, 0xd5, 0x89, 0xfc, - 0x42, 0x3, 0x5f, 0x28, 0x4f, 0x65, 0x71, 0x6a, 0x71, 0x34, - 0x12, 0xc2, 0x7f, 0xe9, 0xa2, 0x15, 0xfe, 0x75, 0x6, 0x47, - 0xad, 0x1, 0x76, 0x7d, 0xb1, 0x67, 0xff, 00, 0x5, 0x79, - 0xf8, 0xff, 00, 0x6a, 0xa0, 0x49, 0x37, 0x86, 0xae, 0xcf, - 0xf7, 0xa6, 0xd2, 0x70, 0x4f, 0xfd, 0xf2, 0xeb, 0x5b, 0x96, - 0x3f, 0xf0, 0x59, 0x6f, 0x8d, 0x76, 0xe0, 0xb, 0x8d, 0x7, - 0xc1, 0xb7, 0x63, 0xb9, 0x36, 0x37, 0x8, 0x4f, 0xe5, 0x3d, - 0x7c, 0x19, 0x45, 0x16, 0xb, 0xb3, 0xf4, 0x7f, 0x4a, 0xff, - 00, 0x82, 0xd8, 0x78, 0xe6, 0x8, 0xf1, 0xa8, 0xfc, 0x39, - 0xd0, 0x2f, 0x1f, 0xfb, 0xd6, 0xf7, 0x93, 0x40, 0x3f, 0x22, - 0x1e, 0xba, 0x8d, 0x27, 0xfe, 0xb, 0x73, 0x37, 0xfc, 0xc4, - 0xfe, 0x14, 0x47, 0xff, 00, 0x6e, 0x9a, 0xc9, 0xff, 00, - 0xd9, 0xa1, 0xaf, 0xcb, 0x8a, 0x28, 0xb0, 0x5d, 0x9f, 0xad, - 0xfa, 0x5f, 0xfc, 0x16, 0xcf, 0xc2, 0x12, 0x11, 0xfd, 0xa3, - 0xf0, 0xd3, 0x5b, 0xb7, 0x1d, 0xcd, 0xad, 0xf4, 0x32, 0xff, - 00, 0xe8, 0x41, 0x6b, 0xa8, 0xd3, 0x3f, 0xe0, 0xb3, 0xdf, - 0x8, 0xae, 0xdc, 0xb, 0xbf, 0xa, 0xf8, 0xb6, 0xc4, 0x7f, - 0x78, 0xc1, 0x6f, 0x27, 0xf2, 0x96, 0xbf, 0x1a, 0x28, 0xa2, - 0xc1, 0xcc, 0xcf, 0xdc, 0x3b, 0x1f, 0xf8, 0x2b, 0xb7, 0xec, - 0xff, 00, 0x76, 0x47, 0x9d, 0x75, 0xe2, 0x3b, 0x2f, 0x79, - 0xb4, 0x92, 0x7f, 0xf4, 0x6, 0x6a, 0xdc, 0xb3, 0xff, 00, - 0x82, 0xaa, 0x7e, 0xce, 0x57, 0x6c, 0x14, 0xf8, 0xbe, 0xfa, - 0xdf, 0x3d, 0xe6, 0xd1, 0xae, 0x80, 0x1f, 0x94, 0x66, 0xbf, - 0x8, 0x28, 0xa2, 0xc3, 0xe6, 0x3f, 0xa0, 0xd, 0x3f, 0xfe, - 0xa, 0x47, 0xfb, 0x39, 0x6a, 0x2c, 0x15, 0x3e, 0x25, 0x5a, - 0x42, 0x4f, 0xfc, 0xfc, 0x59, 0x5d, 0x44, 0x3f, 0x36, 0x88, - 0xa, 0xea, 0x6c, 0x3f, 0x6d, 0xef, 0x80, 0x9a, 0x88, 0x5f, - 0x27, 0xe2, 0xcf, 0x85, 0x81, 0x6e, 0x82, 0x5d, 0x41, 0x63, - 0x3f, 0x93, 0x62, 0xbf, 0x9d, 0x6a, 0x29, 0x58, 0x39, 0x8f, - 0xe9, 0x53, 0x4e, 0xfd, 0xa2, 0xfe, 0x16, 0x6a, 0xca, 0xd, - 0x9f, 0xc4, 0x6f, 0xb, 0x4e, 0xf, 0x4d, 0xba, 0xc4, 0x1c, - 0xff, 00, 0xe3, 0xf5, 0xd3, 0xd8, 0x78, 0xf3, 0xc3, 0x5a, - 0xa8, 0x6, 0xcb, 0xc4, 0x3a, 0x55, 0xd8, 0x3d, 0xc, 0x17, - 0xb1, 0xbe, 0x7f, 0x26, 0xaf, 0xe6, 0x12, 0x95, 0x58, 0xa9, - 0xc8, 0x24, 0x1f, 0x6a, 0x2c, 0x1c, 0xc7, 0xf5, 0x23, 0xd, - 0xed, 0xbd, 0xc8, 0x6, 0x29, 0xe2, 0x94, 0x1f, 0xee, 0x38, - 0x3f, 0xca, 0xa6, 0xaf, 0xe5, 0xf2, 0xc7, 0xc5, 0x9a, 0xde, - 0x96, 00, 0xb3, 0xd6, 0x75, 0xb, 0x40, 0x3a, 0x79, 0x17, - 0x4e, 0x98, 0xfc, 0x8d, 0x6e, 0x5a, 0xfc, 0x66, 0xf8, 0x83, - 0x63, 0x8f, 0xb3, 0x78, 0xef, 0xc4, 0xd6, 0xf8, 0xe9, 0xe5, - 0x6b, 0x17, 0xb, 0xfc, 0x9e, 0x8b, 0xf, 0x98, 0xfe, 0x99, - 0xe8, 0xaf, 0xe6, 0xd6, 0xc7, 0xf6, 0xa0, 0xf8, 0xc1, 0xa6, - 0xe3, 0xec, 0xff, 00, 0x14, 0x3c, 0x5c, 0x98, 0xe9, 0x9d, - 0x6a, 0xe1, 0xbf, 0x9b, 0x9a, 0xe9, 0xb4, 0xef, 0xdb, 0x9f, - 0xe3, 0xf6, 0x96, 00, 0x83, 0xe2, 0xbf, 0x88, 0xc8, 0x1d, - 0xa6, 0xb9, 0x12, 0xff, 00, 0xe8, 0x60, 0xd1, 0x60, 0xe6, - 0x3f, 0xa2, 0x4a, 0x2b, 0xf0, 0x7, 0x4d, 0xff, 00, 0x82, - 0x94, 0x7e, 0xd1, 0xba, 0x6e, 0x31, 0xf1, 0x1e, 0xe2, 0xe8, - 0xe, 0xd7, 0x36, 0x36, 0xaf, 0xfa, 0xf9, 0x79, 0xae, 0xb7, - 0x4c, 0xff, 00, 0x82, 0xb2, 0x7e, 0xd0, 0xba, 0x78, 0x51, - 0x2e, 0xb5, 0xa3, 0x5f, 0x81, 0xff, 00, 0x3f, 0x3a, 0x4c, - 0x79, 0x3f, 0xf7, 0xce, 0xda, 0x2c, 0x1c, 0xc8, 0xfd, 0xd1, - 0xa2, 0xbf, 0x16, 0x74, 0xdf, 0xf8, 0x2c, 0x9f, 0xc6, 0xbb, - 0x45, 0xb, 0x75, 0xa2, 0x78, 0x46, 0xfb, 0x1d, 0x59, 0xac, - 0xa7, 0x42, 0x7f, 0xef, 0x99, 0xb1, 0xfa, 0x57, 0xeb, 0x5f, - 0xc0, 0x9f, 0x1c, 0x6a, 0x7f, 0x13, 0x3e, 0xc, 0xf8, 0x2b, - 0xc5, 0xba, 0xcd, 0xb4, 0x16, 0x5a, 0xa6, 0xb7, 0xa4, 0xdb, - 0x6a, 0x17, 0x16, 0xf6, 0xc0, 0x88, 0xe3, 0x79, 0x23, 0xe, - 0x55, 0x72, 0x49, 0xc0, 0xcf, 0x73, 0x48, 0x77, 0xb9, 0xdd, - 0xd1, 0x45, 0x14, 0xc, 0x28, 0xa2, 0x8a, 00, 0xf1, 0x4f, - 0xda, 0x4e, 0xe7, 0xcb, 0xd1, 0xa1, 0x4c, 0xff, 00, 0x9, - 0x35, 0xf1, 0xa6, 0xa0, 0xdc, 0x39, 0xf5, 0x26, 0xbe, 0xb3, - 0xfd, 0xa7, 0x6e, 0xb6, 0xc0, 0x89, 0x9e, 0x89, 0x8a, 0xf9, - 0x23, 0x51, 0x6c, 0x46, 0xdf, 0x8d, 0x7e, 0x69, 0x9b, 0x3e, - 0x7c, 0xc2, 0x5e, 0x56, 0x3f, 0x31, 0xe2, 0x59, 0xfe, 0xf4, - 0xf0, 0xdf, 0x1d, 0xc4, 0xda, 0x9f, 0x8e, 0x3c, 0x39, 0x62, - 0x83, 0x73, 0xdc, 0xea, 0xd6, 0xb0, 0x85, 0xf5, 0x2d, 0x2a, - 0xc, 0x7e, 0xb5, 0xfb, 0x56, 00, 00, 0x1, 0xd0, 0x57, - 0xe3, 0x1d, 0x9d, 0xa3, 0xeb, 0x5f, 0xb4, 0x7, 0xc3, 0x8b, - 0x18, 0xcf, 0xcf, 0x2f, 0x89, 0x6c, 0x3f, 0x49, 0xd1, 0x8f, - 0xf2, 0xaf, 0xd9, 0xda, 0xfb, 0x8c, 0xbd, 0x5a, 0x8a, 0x3d, - 0xae, 0x13, 0x8f, 0x2e, 0x5a, 0x9f, 0x76, 0xc2, 0x8a, 0x28, - 0xaf, 0x4c, 0xfb, 0x43, 0xf3, 0xa6, 0xf6, 0x59, 0x3e, 0x1f, - 0x7c, 0x74, 0xd7, 0xac, 0xb5, 0x48, 0xb6, 0xc9, 0x6d, 0xa9, - 0xc9, 0x72, 0x23, 0x27, 0x21, 0x92, 0x43, 0xe6, 0x21, 0xfc, - 0x98, 0x57, 0xd7, 0x5a, 0x47, 0xed, 0x13, 0xe1, 0xdb, 0x8b, - 0x48, 0x7c, 0xd9, 0x15, 0x1f, 0x68, 0xc8, 0xd, 0xd3, 0x8a, - 0xf0, 0x9f, 0xdb, 0xc7, 0xe1, 0x85, 0xed, 0x86, 0xa5, 0xa7, - 0x7c, 0x48, 0xd2, 0xd5, 0x9e, 0x25, 0x44, 0xb1, 0xd4, 0x63, - 0x41, 0xf7, 0x70, 0x4f, 0x97, 0x21, 0xf6, 0xe7, 0x69, 0x3f, - 0xee, 0xd7, 0xce, 0xfe, 0x1f, 0xf1, 0x7c, 0x37, 0xf1, 0x28, - 0xf3, 0x36, 0xc9, 0xdd, 0x49, 0xaf, 0x8a, 0xaf, 0xf5, 0x9c, - 0xb6, 0xac, 0xe5, 0x87, 0xd5, 0x33, 0xf2, 0x6f, 0xaf, 0xd5, - 0xe1, 0xcc, 0x55, 0x5c, 0x2b, 0x8f, 0xb8, 0xdd, 0xd3, 0xf2, - 0x67, 0xe8, 0xc4, 0x3f, 0x1c, 0x7c, 0x33, 0x2f, 0xfc, 0xbd, - 0x1, 0xff, 00, 0x2, 0x15, 0xa1, 0x7, 0xc5, 0x9f, 0xe, - 0x4f, 0xd2, 0xf5, 0x47, 0xe3, 0x5f, 0x9f, 0xb0, 0xea, 0x21, - 0xc6, 0x44, 0xa4, 0x7e, 0x35, 0x65, 0x35, 0x29, 0xd7, 0xee, - 0xdc, 0xb8, 0xfa, 0x35, 0x72, 0x2c, 0xff, 00, 0x15, 0x1f, - 0x8a, 0x8, 0xf6, 0x21, 0xc4, 0xf2, 0x7f, 0x65, 0x1f, 0xa0, - 0xd0, 0xfc, 0x44, 0xd0, 0x26, 0xc6, 0x2f, 0xe3, 0xe7, 0xde, - 0xae, 0x47, 0xe2, 0xfd, 0x1e, 0x50, 0xa, 0xdf, 0xc2, 0x73, - 0xfe, 0xd5, 0x7e, 0x7a, 0x26, 0xb9, 0x7d, 0x18, 0xf9, 0x6f, - 0x25, 0x1f, 0xf0, 0x3a, 0xb5, 0x1f, 0x8b, 0x35, 0x68, 0xbe, - 0xed, 0xfc, 0xdf, 0xf7, 0xd5, 0x6c, 0xb8, 0x8a, 0xaa, 0xf8, - 0xa9, 0xaf, 0xbc, 0xea, 0x8f, 0x12, 0xc7, 0xac, 0xf, 0xd0, - 0xa4, 0xd7, 0xf4, 0xe9, 0x3e, 0xed, 0xe4, 0x27, 0xfe, 0x5, - 0x53, 0xae, 0xa3, 0x6a, 0xdd, 0x2e, 0x22, 0x3f, 0x47, 0x15, - 0xf9, 0xf3, 0x17, 0x8f, 0xf5, 0xd8, 0x47, 0xcb, 0x7f, 0x2f, - 0xe2, 0x6a, 0xf4, 0x3f, 0x15, 0x3c, 0x45, 0xf, 0x4b, 0xe7, - 0x3f, 0x8d, 0x6e, 0xb8, 0x8d, 0x7d, 0xaa, 0x7f, 0x89, 0xd1, - 0x1e, 0x23, 0xa0, 0xf7, 0x8b, 0x3e, 0xfd, 0x59, 0xe3, 0x6e, - 0x92, 0x29, 0xfa, 0x30, 0xa7, 0xee, 0x1e, 0xa2, 0xbe, 0xf, - 0xb7, 0xf8, 0xd9, 0xe2, 0x48, 0x31, 0xfe, 0x92, 0xcd, 0xf5, - 0x35, 0xa3, 0x6f, 0xfb, 0x40, 0xf8, 0x8a, 0x12, 0x33, 0x33, - 0x1c, 0x7a, 0x35, 0x6e, 0xb8, 0x8a, 0x8f, 0x58, 0x33, 0xa2, - 0x3c, 0x41, 0x85, 0x7b, 0xdc, 0xfb, 0x82, 0x8a, 0xf8, 0xd2, - 0xdb, 0xf6, 0x97, 0xd7, 0x62, 0x18, 0x62, 0xed, 0xff, 00, - 0x2, 0xad, 0x3b, 0x6f, 0xda, 0x93, 0x54, 0x4f, 0xbe, 0xae, - 0x7f, 0x1c, 0xd6, 0xeb, 0x3f, 0xc2, 0x3d, 0xee, 0xbe, 0x46, - 0xf1, 0xcf, 0x30, 0x72, 0xfb, 0x47, 0xd7, 0x14, 0x57, 0xcb, - 0x96, 0xff, 00, 0xb5, 0x64, 0xe0, 00, 0xf1, 0x37, 0xe4, - 0x2b, 0x52, 0xd7, 0xf6, 0xab, 0x84, 0xe3, 0xcd, 0x8b, 0xf3, - 0x15, 0xbc, 0x73, 0xbc, 0x13, 0xfb, 0x5f, 0x81, 0xd1, 0x1c, - 0xdb, 0x7, 0x2f, 0xb6, 0x7d, 0x1f, 0x45, 0x78, 0x34, 0x1f, - 0xb5, 0x2e, 0x9a, 0xff, 00, 0x7a, 0x35, 0x15, 0xab, 0x6b, - 0xfb, 0x4a, 0x68, 0x72, 0x91, 0xb8, 0x28, 0xff, 00, 0x81, - 0x62, 0xb7, 0x8e, 0x6d, 0x82, 0x97, 0xfc, 0xbc, 0x47, 0x44, - 0x73, 0xc, 0x34, 0xb6, 0x9a, 0x3d, 0x92, 0x8a, 0xf2, 0xdb, - 0x7f, 0xda, 0x7, 0xc3, 0xf3, 0x11, 0xf3, 0x81, 0xff, 00, - 0x3, 0x15, 0xa7, 0x7, 0xc6, 0xaf, 0xe, 0xcc, 0x33, 0xe7, - 0x81, 0xff, 00, 0x2, 0x15, 0xd1, 0x1c, 0x7e, 0x16, 0x5b, - 0x54, 0x46, 0xcb, 0x15, 0x46, 0x5b, 0x49, 0x1d, 0xfd, 0x15, - 0xc7, 0xc1, 0xf1, 0x53, 0xc3, 0xf3, 0x8e, 0x2e, 0xc0, 0xfa, - 0x91, 0x57, 0xe2, 0xf1, 0xee, 0x89, 0x30, 0x4, 0x5e, 0xa7, - 0xe7, 0x5b, 0xac, 0x45, 0x19, 0x6d, 0x35, 0xf7, 0x9a, 0xaa, - 0xb4, 0xde, 0xd2, 0x47, 0x43, 0x45, 0x64, 0xc7, 0xe2, 0xad, - 0x2a, 0x51, 0xf2, 0xde, 0xc5, 0xff, 00, 0x7d, 0x55, 0x95, - 0xd6, 0xac, 0x1f, 0xa5, 0xdc, 0x27, 0xfe, 0x6, 0x2b, 0x55, - 0x38, 0x3d, 0x99, 0x6a, 0x51, 0x7d, 0x4b, 0xb4, 0x54, 0x9, - 0x7d, 0x6f, 0x27, 0xdd, 0x9e, 0x33, 0xf4, 0x61, 0x52, 0x9, - 0xa3, 0x3d, 0x1d, 0x4f, 0xd0, 0xd5, 0x5d, 0xe, 0xe3, 0xe8, - 0xa4, 0x4, 0x1e, 0x87, 0x34, 0xb4, 0xc6, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0xc7, 0x89, - 0x24, 0xfb, 0xe8, 0xad, 0xfe, 0xf0, 0xcd, 0x3e, 0x8a, 00, - 0xcb, 0xbc, 0xf0, 0xbe, 0x8d, 0xa8, 0x9c, 0xdd, 0xe9, 0x16, - 0x37, 0x47, 0xd6, 0x6b, 0x64, 0x7f, 0xe6, 0x2b, 0x9a, 0xd5, - 0xfe, 0x5, 0xfc, 0x38, 0xd7, 0xc1, 0xfe, 0xd2, 0xf0, 0x17, - 0x86, 0xaf, 0xb3, 0xd7, 0xed, 0x1a, 0x4c, 0xf, 0xfc, 0xd2, - 0xbb, 0x9a, 0x28, 0x3, 0xc7, 0x6f, 0x7f, 0x63, 0x9f, 0x81, - 0x9a, 0x89, 0x26, 0x7f, 0x84, 0x9e, 0xe, 0x24, 0xf7, 0x4d, - 0x1a, 0x4, 0x3f, 0xf8, 0xea, 0x8a, 0xc5, 0xd4, 0x3f, 0x60, - 0xaf, 0xd9, 0xf7, 0x52, 0x42, 0x92, 0xfc, 0x29, 0xf0, 0xfc, - 0x60, 0xf7, 0xb7, 0x85, 0xa1, 0x3f, 0x9a, 0x30, 0xaf, 0x7c, - 0xa2, 0x80, 0x3e, 0x5a, 0xd4, 0xff, 00, 0xe0, 0x99, 0x3f, - 0xb3, 0x96, 0xa4, 0xf, 0xfc, 0x5b, 0xf1, 0x68, 0x4f, 0xf1, - 0x5b, 0x6a, 0x57, 0x49, 0xff, 00, 0xb5, 0x48, 0xae, 0x4b, - 0x52, 0xff, 00, 0x82, 0x47, 0x7e, 0xcf, 0xf7, 0xa0, 0xf9, - 0x16, 0x1a, 0xf5, 0x81, 0xf5, 0x83, 0x56, 0x76, 0xff, 00, - 0xd0, 0xc1, 0xaf, 0xb4, 0xa8, 0xa0, 0x56, 0x3e, 0x1, 0xd5, - 0x7f, 0xe0, 0x8c, 0x9f, 0x8, 0x6e, 0xb2, 0x6c, 0xbc, 0x4d, - 0xe2, 0xcb, 0x3, 0xe8, 0x67, 0x82, 0x50, 0x3f, 0x38, 0xbf, - 0xad, 0x72, 0x9a, 0x9f, 0xfc, 0x11, 0x33, 0xc2, 0x32, 0x3, - 0xfd, 0x9f, 0xf1, 0x2f, 0x5a, 0x80, 0xf6, 0x17, 0x36, 0x10, - 0xc8, 0x3f, 0x42, 0xb5, 0xfa, 0x53, 0x45, 0x1, 0x64, 0x7e, - 0x56, 0x6a, 0x1f, 0xf0, 0x44, 0x4b, 0x92, 0x49, 0xb1, 0xf8, - 0xb7, 0x10, 0x1d, 0x85, 0xc6, 0x84, 0x4f, 0xea, 0x27, 0xac, - 0x2b, 0xcf, 0xf8, 0x22, 0x57, 0x8b, 0xa3, 0x52, 0x6d, 0x7e, - 0x27, 0x68, 0xb3, 0x9e, 0xc2, 0x5d, 0x36, 0x68, 0xf3, 0xf9, - 0x3b, 0x57, 0xeb, 0x85, 0x14, 0xee, 0x16, 0x47, 0xe3, 0x4e, - 0xa7, 0xff, 00, 0x4, 0x60, 0xf8, 0xb5, 0x6e, 0x9, 0xb1, - 0xf1, 0x5f, 0x85, 0x2f, 0x71, 0xd0, 0x3c, 0xb7, 0x11, 0x67, - 0xff, 00, 0x21, 0x1a, 0xe4, 0xf5, 0xf, 0xf8, 0x24, 0x47, - 0xc7, 0xfb, 0x36, 0x22, 0xb, 0x6f, 0xe, 0x5f, 0x1, 0xde, - 0xd, 0x58, 0x2e, 0x7f, 0xef, 0xb4, 0x5a, 0xfd, 0xc2, 0xa2, - 0x8b, 0x8a, 0xc8, 0xfc, 0x14, 0xd5, 0x3f, 0xe0, 0x97, 0x9f, - 0xb4, 0x76, 0x9a, 0x7e, 0x4f, 0x3, 0x45, 0x7d, 0xef, 0x6b, - 0xaa, 0xda, 0x9f, 0xfd, 0xa, 0x41, 0x5c, 0xed, 0xe7, 0xfc, - 0x13, 0xbf, 0xf6, 0x8b, 0xb1, 0xcf, 0x99, 0xf0, 0xb7, 0x54, - 0x7c, 0x7f, 0xcf, 0x1b, 0x8b, 0x69, 0x3f, 0xf4, 0x19, 0x4d, - 0x7f, 0x41, 0xb4, 0x51, 0x70, 0xe5, 0x47, 0xf3, 0xa5, 0xa9, - 0xfe, 0xc5, 0x3f, 0x1d, 0xf4, 0x8c, 0xfd, 0xa7, 0xe1, 0x4f, - 0x89, 0xf8, 0xff, 00, 0x9e, 0x36, 0x2d, 0x2f, 0xfe, 0x81, - 0x9a, 0xe5, 0xf5, 0x1f, 0xd9, 0xd7, 0xe2, 0xa6, 0x90, 0x9, - 0xbd, 0xf8, 0x6d, 0xe2, 0xcb, 0x60, 0x3a, 0x99, 0x34, 0x5b, - 0x91, 0xff, 00, 0xb2, 0x57, 0xf4, 0xab, 0x45, 0x17, 0xe, - 0x53, 0xf9, 0x81, 0xd4, 0xfc, 0x11, 0xe2, 0x3d, 0x10, 0x13, - 0xa8, 0xe8, 0x1a, 0xa5, 0x80, 0x1d, 0x7e, 0xd5, 0x65, 0x24, - 0x78, 0xff, 00, 0xbe, 0x94, 0x56, 0x29, 0xf9, 0x4e, 0xf, - 0x7, 0xd0, 0xd7, 0xf5, 0x25, 0x3d, 0x9c, 0x17, 0x23, 0x13, - 0x41, 0x1c, 0xbf, 0xef, 0xa0, 0x3f, 0xce, 0xb2, 0xb5, 0xf, - 0x3, 0xf8, 0x73, 0x57, 0x4d, 0xb7, 0xde, 0x1f, 0xd2, 0xef, - 0x57, 0xd2, 0xe2, 0xca, 0x39, 0x7, 0xea, 0xb4, 0x5c, 0x39, - 0x4f, 0xe6, 0xa, 0x8a, 0xfe, 0x95, 0xf5, 0x2f, 0xd9, 0xe7, - 0xe1, 0x6e, 0xae, 0x85, 0x2f, 0x7e, 0x1c, 0xf8, 0x56, 0xe5, - 0x4f, 0x50, 0xfa, 0x35, 0xb9, 0xff, 00, 0xd9, 0x2b, 0x99, - 0xbc, 0xfd, 0x8b, 0xfe, 0x4, 0x5f, 0x82, 0x25, 0xf8, 0x49, - 0xe1, 0x1e, 0x7a, 0x98, 0xf4, 0x98, 0xa3, 0x3f, 0x9a, 0x81, - 0x45, 0xc5, 0xca, 0x7f, 0x3a, 0x30, 0xc0, 0xf7, 0x33, 0x47, - 0xc, 0x4a, 0x5e, 0x49, 0x18, 0x22, 0xa8, 0xea, 0x49, 0x38, - 0x2, 0xbf, 0xa7, 0xf, 0x86, 0x5e, 0x1f, 0x1e, 0x14, 0xf8, - 0x6f, 0xe1, 0x5d, 0x10, 0x74, 0xd3, 0xb4, 0xab, 0x5b, 0x4e, - 0x98, 0xfb, 0x91, 0x2a, 0xff, 00, 0x4a, 0xf2, 0x56, 0xfd, - 0x81, 0xbf, 0x67, 0xef, 0x3e, 0x29, 0xe3, 0xf8, 0x5d, 0xa3, - 0x5b, 0xcd, 0x13, 0x89, 0x12, 0x4b, 0x7f, 0x32, 0x32, 0xac, - 0xe, 0x41, 0x1b, 0x5c, 0x77, 0xaf, 0x7e, 00, 0x28, 00, - 0x70, 0x5, 0x5, 0x25, 0x61, 0x68, 0xa2, 0x8a, 0x43, 0xa, - 0x28, 0xa2, 0x80, 0x3e, 0x65, 0xfd, 0xa7, 0xae, 0xf3, 0x74, - 0xc9, 0x9e, 0x80, 0xa, 0xf9, 0x6f, 0x55, 0x6c, 0x40, 0xdf, - 0x4a, 0xfa, 0x2b, 0xf6, 0x96, 0xbb, 0xdf, 0xab, 0xca, 0xb9, - 0xe8, 0xd8, 0xaf, 0x9b, 0xf5, 0xa7, 0xdb, 0x6c, 0xe7, 0xfd, - 0x93, 0x5f, 0x97, 0x63, 0x5f, 0x3e, 0x61, 0x37, 0xe6, 0x7e, - 0x49, 0xc4, 0x93, 0xbd, 0x59, 0x1c, 0x17, 0xc1, 0x6b, 0x21, - 0xad, 0xfe, 0xd7, 0xdf, 0xc, 0x2d, 0x58, 0xf0, 0xba, 0xbf, - 0xda, 0x3f, 0x18, 0xe2, 0x79, 0x7, 0xfe, 0x81, 0x5f, 0xb0, - 0x35, 0xf9, 0x3d, 0xfb, 0x20, 0x69, 0x8b, 0xad, 0xfe, 0xd9, - 0xde, 0x16, 0x2c, 0x37, 0xb, 0x1b, 0x7b, 0xcb, 0xb1, 0xec, - 0x44, 0x25, 0x41, 0xff, 00, 0xc7, 0xeb, 0xf5, 0x86, 0xbf, - 0x44, 0xc1, 0xab, 0x52, 0x47, 0xda, 0x70, 0xdc, 0x39, 0x32, - 0xca, 0x41, 0x45, 0x14, 0x57, 0x69, 0xf4, 0xe5, 0x1d, 0x6b, - 0x45, 0xb1, 0xf1, 0x1e, 0x93, 0x75, 0xa6, 0x6a, 0x56, 0xb1, - 0xde, 0xd8, 0x5d, 0x46, 0x62, 0x9a, 0x9, 0x57, 0x2a, 0xea, - 0x7a, 0x83, 0x5f, 0x9e, 0x3f, 0x1f, 0x3f, 0x63, 0x7d, 0x73, - 0xe1, 0xc6, 0xa7, 0x73, 0xac, 0x78, 0x5c, 0x4b, 0xa8, 0xf8, - 0x71, 0x98, 0xba, 0x94, 0x3b, 0xa5, 0xb5, 0x1f, 0xdd, 0x71, - 0xdc, 0xf, 0xef, 0x7e, 0x78, 0xaf, 0xd1, 0xca, 0x42, 0x3, - 0x2, 0x8, 0xc8, 0x3d, 0x41, 0xae, 0x6a, 0xd4, 0x15, 0x65, - 0xd9, 0x9e, 0x2e, 0x67, 0x94, 0xd0, 0xcd, 0x29, 0xa8, 0xd5, - 0xd1, 0xad, 0x9a, 0xe9, 0xfe, 0x6b, 0xc8, 0xfc, 0x79, 0x4f, - 0xf8, 0x49, 0xb4, 0xae, 0x1e, 0x13, 0x22, 0x8e, 0x3a, 0x73, - 0x52, 0xf, 0x16, 0x6a, 0xb0, 0xff, 00, 0xac, 0xb4, 0x90, - 0x7f, 0xc0, 0x4d, 0x7e, 0xa5, 0x78, 0xa7, 0xe0, 0xb7, 0x84, - 0x3c, 0x5b, 0xbd, 0xaf, 0x34, 0x88, 0xa1, 0x99, 0x8e, 0x4c, - 0xd6, 0xa0, 0x46, 0xc4, 0xfa, 0x9c, 0x70, 0x7f, 0x11, 0x5e, - 0x7f, 0x7f, 0xfb, 0x1e, 0xf8, 0x4a, 0xe9, 0xcb, 0x45, 0x77, - 0x77, 0x8, 0x3d, 0x1, 0x54, 0x6c, 0x7e, 0x82, 0xbc, 0xa, - 0x99, 0x75, 0x5b, 0xfc, 0x29, 0xfe, 0x7, 0xc4, 0xcf, 0x84, - 0x9c, 0x3e, 0x1d, 0x7d, 0x1d, 0xbf, 0x3, 0xf3, 0xe5, 0x7c, - 0x79, 0x75, 0x1f, 0xdf, 0xb7, 0x71, 0xf5, 0x6, 0xa6, 0x4f, - 0x88, 0xc4, 0x70, 0xc8, 0xc3, 0xf0, 0xaf, 0xb9, 0x6e, 0xff, - 00, 0x62, 0x6d, 0x12, 0x40, 0x7c, 0x9d, 0x65, 0xd4, 0xff, - 00, 0xb7, 0x6c, 0xf, 0xfe, 0xcd, 0x58, 0x57, 0x9f, 0xb0, - 0xcc, 0x4e, 0xf, 0x93, 0xac, 0xdb, 0x39, 0xf4, 0x78, 0xa, - 0x8f, 0xeb, 0x5c, 0xaf, 0x2e, 0x9f, 0x5a, 0x5f, 0x8a, 0xff, - 00, 0x33, 0x96, 0x5c, 0x2f, 0x5e, 0x3b, 0x29, 0x7d, 0xeb, - 0xfc, 0xcf, 0x8f, 0xe3, 0xf8, 0x8f, 0x9, 0xeb, 0xb8, 0x55, - 0xa8, 0xfe, 0x22, 0x5b, 0x37, 0xf1, 0xd7, 0xd2, 0x97, 0xff, - 00, 0xb0, 0xbe, 0xa6, 0xa7, 0xf7, 0x33, 0x69, 0xd3, 0x8f, - 0x5d, 0xc5, 0x7f, 0x9a, 0xd7, 0x3f, 0x7f, 0xfb, 0xe, 0x78, - 0x89, 0xf, 0xee, 0xec, 0x6d, 0xa7, 0xf7, 0x8e, 0x64, 0x1f, - 0xcc, 0x8a, 0xe7, 0x96, 0x5f, 0xde, 0x93, 0x39, 0xa5, 0xc3, - 0xf8, 0xa8, 0xec, 0xe5, 0xf7, 0x5c, 0xf1, 0x48, 0xfc, 0x79, - 0x6a, 0xd8, 0xfd, 0xe0, 0xfc, 0x45, 0x59, 0x8f, 0xc6, 0x96, - 0x8d, 0xff, 00, 0x2d, 0x56, 0xbd, 0xe, 0xf3, 0xf6, 0x2d, - 0xf1, 0x44, 0x4c, 0x40, 0xd1, 0x25, 0x6c, 0x77, 0x49, 0x10, - 0xff, 00, 0x26, 0xac, 0x2b, 0xcf, 0xd9, 0x13, 0xc5, 0x96, - 0xec, 0x47, 0xf6, 0x16, 0xa3, 0xc7, 0xfc, 0xf3, 0x89, 0x9b, - 0xf9, 0x56, 0x2f, 0x3, 0x4f, 0xac, 0x24, 0xbe, 0x47, 0x3b, - 0xc9, 0xf1, 0x91, 0xfb, 0x4f, 0xe7, 0x16, 0x60, 0xa7, 0x8a, - 0xed, 0x1f, 0xfe, 0x5a, 0xa7, 0xe7, 0x56, 0x13, 0xc4, 0x56, - 0xcc, 0x3e, 0xfa, 0xfe, 0x75, 0x5e, 0xf7, 0xf6, 0x6c, 0xf1, - 0x2d, 0x96, 0xe2, 0xfa, 0x6e, 0xa7, 0x10, 0x1d, 0xda, 0x16, - 00, 0x7e, 0x95, 0x87, 0x71, 0xf0, 0x6f, 0x5a, 0xb5, 0x62, - 0x18, 0xdc, 0x21, 0x1d, 0x99, 0x6b, 0x9d, 0xe0, 0xa8, 0xf7, - 0x68, 0xe7, 0x78, 0xc, 0x64, 0x7e, 0xda, 0xf9, 0xa3, 0xa9, - 0x5d, 0x66, 0xdd, 0xbf, 0x88, 0x54, 0x83, 0x53, 0x80, 0xff, - 00, 0x10, 0xae, 0x16, 0x4f, 0x86, 0xfa, 0xec, 0x1f, 0x76, - 0x49, 0x4f, 0xd5, 0x6a, 0xbb, 0xf8, 0x43, 0xc4, 0x56, 0xfd, - 0x1d, 0x8f, 0xd4, 0x1a, 0xcf, 0xea, 0x34, 0x9e, 0xd3, 0x32, - 0xfa, 0xbe, 0x35, 0x7f, 0x2b, 0x3d, 0x18, 0x5f, 0x42, 0x7f, - 0x88, 0x53, 0x85, 0xd4, 0x47, 0xa3, 0xd7, 0x98, 0x9d, 0x2b, - 0xc4, 0xb0, 0xff, 00, 0xb, 0x37, 0xe3, 0x4d, 0xdf, 0xe2, - 0x38, 0x3a, 0xc0, 0xc7, 0xf1, 0xa9, 0xfe, 0xcf, 0x8b, 0xda, - 0x62, 0xf6, 0x78, 0xd5, 0xf6, 0x13, 0xf9, 0x9e, 0xa6, 0xb7, - 0x2b, 0xd9, 0xff, 00, 0x5a, 0x91, 0x6e, 0xd8, 0x74, 0x94, - 0xfe, 0x75, 0xe5, 0x3, 0x59, 0xd7, 0xa1, 0xfb, 0xd6, 0x92, - 0x1f, 0xc2, 0x9c, 0x3c, 0x59, 0xaa, 0xc5, 0xf7, 0xed, 0x24, - 0x1f, 0x81, 0xa8, 0x79, 0x6b, 0x7b, 0x34, 0x2e, 0x6c, 0x5c, - 0x77, 0xa4, 0xfe, 0xf3, 0xd6, 0xd3, 0x52, 0xb8, 0x4f, 0xbb, - 0x70, 0xe3, 0xe8, 0xd5, 0x62, 0x3d, 0x7f, 0x50, 0x8f, 0xee, - 0xdd, 0xc8, 0x3f, 0xe0, 0x55, 0xe4, 0xb, 0xe3, 0xbb, 0xb8, - 0xfe, 0xfd, 0xbb, 0x8f, 0xc0, 0xd4, 0xc9, 0xf1, 0xc, 0xaf, - 0xde, 0x8d, 0x87, 0xe7, 0x59, 0xbc, 0xba, 0xa2, 0xda, 0xc3, - 0xfa, 0xd6, 0x26, 0x1b, 0xc2, 0x48, 0xf6, 0x38, 0xbc, 0x63, - 0xac, 0x43, 0x8d, 0x97, 0xb2, 0xc, 0x7b, 0xd5, 0xb8, 0xbe, - 0x22, 0x6b, 0xb0, 0x9e, 0x2f, 0x58, 0xfd, 0x6b, 0xc6, 0x63, - 0xf8, 0x8d, 0x17, 0x7c, 0x8f, 0xc6, 0xac, 0xc7, 0xf1, 0xe, - 0xd8, 0xf5, 0x7a, 0x5f, 0x52, 0xc4, 0x47, 0x6f, 0xcc, 0xb5, - 0x99, 0xd6, 0x8e, 0xfc, 0xcb, 0xef, 0x3d, 0xb2, 0xf, 0x8b, - 0x7e, 0x21, 0x83, 0xa5, 0xd6, 0x7e, 0xb5, 0xa1, 0x6f, 0xf1, - 0xc3, 0xc4, 0x50, 0x11, 0x99, 0xb7, 0x62, 0xbc, 0x36, 0x3f, - 0x1e, 0xda, 0x37, 0xfc, 0xb5, 0x15, 0x66, 0x3f, 0x1a, 0xda, - 0x37, 0xfc, 0xb5, 0x5a, 0x7e, 0xcb, 0x17, 0x1d, 0x9b, 0xfb, - 0xd9, 0xb4, 0x73, 0xba, 0xb1, 0xfb, 0x6d, 0x1e, 0xf9, 0x6f, - 0xfb, 0x43, 0x78, 0x82, 0x10, 0x1, 0x73, 0xf9, 0xd6, 0xa5, - 0xaf, 0xed, 0x2f, 0xac, 0xc5, 0xf7, 0xb2, 0x6b, 0xe7, 0x74, - 0xf1, 0x6d, 0xa3, 0x7f, 0xcb, 0x54, 0xfc, 0xea, 0x74, 0xf1, - 0x25, 0xab, 0xff, 00, 0x1a, 0xfe, 0x75, 0x4a, 0xae, 0x3a, - 0x1b, 0x4e, 0x47, 0x4c, 0x78, 0x86, 0xaa, 0xff, 00, 0x97, - 0xa7, 0xd2, 0xd0, 0x7e, 0xd4, 0xfa, 0x82, 0xe3, 0x7a, 0xb6, - 0x3e, 0x95, 0xab, 0x6b, 0xfb, 0x55, 0xb8, 0xc7, 0x98, 0x9f, - 0x9a, 0xd7, 0xcb, 0x4b, 0xad, 0xdb, 0xb7, 0xf1, 0x8f, 0xce, - 0xa5, 0x5d, 0x56, 0x3, 0xfc, 0x43, 0xf3, 0xab, 0x58, 0xec, - 0x7c, 0x7e, 0xdb, 0x3a, 0xe3, 0xc4, 0x75, 0xff, 00, 0xe7, - 0xe2, 0x3e, 0xb4, 0xb6, 0xfd, 0xaa, 0xad, 0x9c, 0xfc, 0xe8, - 0xa3, 0xfe, 0x3, 0x5a, 0xb6, 0xdf, 0xb4, 0xfe, 0x94, 0xf8, - 0xde, 0x13, 0xf2, 0x22, 0xbe, 0x39, 0x17, 0xf0, 0xb7, 0xf1, - 0xa, 0x78, 0xbb, 0x88, 0xf4, 0x71, 0x5a, 0xac, 0xdb, 0x1f, - 0x1f, 0xb5, 0xf8, 0x1d, 0x91, 0xe2, 0x4a, 0xfd, 0xd3, 0x3e, - 0xd6, 0xb6, 0xfd, 0xa4, 0x34, 0x29, 0xb1, 0xb8, 0xa8, 0xfc, - 0x6b, 0x52, 0xf, 0x8f, 0x5e, 0x1d, 0x94, 0xc, 0xca, 0x6, - 0x7d, 0xd, 0x7c, 0x2e, 0x2e, 0x53, 0xb3, 0xfe, 0xb5, 0x22, - 0xdd, 0x63, 0xa4, 0xa7, 0xf0, 0x35, 0xaa, 0xcf, 0x31, 0xb1, - 0xde, 0xcf, 0xe4, 0x75, 0x47, 0x89, 0x6a, 0xf5, 0x8a, 0x3e, - 0xf5, 0xb7, 0xf8, 0xcb, 0xe1, 0xd9, 0xff, 00, 0xe5, 0xe3, - 0x15, 0xa1, 0x17, 0xc4, 0xed, 0x2, 0x5e, 0x97, 0x80, 0x7d, - 0x6b, 0xf3, 0xf9, 0x2f, 0x65, 0x5f, 0xbb, 0x3b, 0x8f, 0xa3, - 0x54, 0xc9, 0xab, 0xdd, 0xc7, 0xf7, 0x6e, 0xa4, 0x1f, 0xf0, - 0x23, 0x5b, 0xae, 0x20, 0xc4, 0x2d, 0xe0, 0x8e, 0x98, 0xf1, - 0x2c, 0xba, 0xc0, 0xfd, 0x7, 0x8b, 0xc7, 0x3a, 0x2c, 0xdf, - 0x76, 0xf5, 0x3f, 0x1a, 0xb4, 0x9e, 0x28, 0xd2, 0xe4, 0xfb, - 0xb7, 0xb1, 0x9f, 0xc6, 0xbf, 0x3d, 0xa3, 0xf1, 0x2e, 0xa7, - 0x1f, 0xdd, 0xbd, 0x97, 0xfe, 0xfa, 0x35, 0x6a, 0x2f, 0x1b, - 0x6b, 0x30, 0x91, 0xb6, 0xf6, 0x4e, 0x3d, 0x58, 0xd6, 0xcb, - 0x88, 0xa7, 0xd6, 0x9f, 0xe2, 0x74, 0x2e, 0x24, 0x87, 0x58, - 0x1f, 0xa1, 0x11, 0xea, 0xf6, 0x52, 0xfd, 0xdb, 0x98, 0xcf, - 0xfc, 0xa, 0xa6, 0x5b, 0xc8, 0x1b, 0xa4, 0xc8, 0x7e, 0x8c, - 0x2b, 0xf3, 0xfa, 0x1f, 0x89, 0x7a, 0xf4, 0x23, 0x8b, 0xc7, - 0xfc, 0xcd, 0x5e, 0x83, 0xe3, 0x7, 0x88, 0x20, 0xc6, 0x2e, - 0x58, 0xe3, 0xfd, 0xa3, 0x5b, 0xc7, 0x88, 0xa3, 0xd6, 0x9b, - 0x3a, 0x23, 0xc4, 0x58, 0x77, 0xba, 0x67, 0xde, 0xe2, 0x45, - 0x6e, 0x8c, 0xf, 0xd0, 0xd2, 0xe6, 0xbe, 0x18, 0x87, 0xe3, - 0xb7, 0x88, 0x22, 0xc0, 0xf3, 0xf, 0xfd, 0xf4, 0x6b, 0x4e, - 0xdf, 0xf6, 0x8a, 0xd7, 0x21, 0x23, 0x3b, 0x8e, 0x3f, 0xda, - 0x35, 0xba, 0xe2, 0x1a, 0x1d, 0x62, 0xce, 0x88, 0xe7, 0xf8, - 0x47, 0xbb, 0x3e, 0xd5, 0xa2, 0xbe, 0x3e, 0x83, 0xf6, 0x9c, - 0xd5, 0xd0, 0x8d, 0xe1, 0xb1, 0xfe, 0xf1, 0xad, 0x5b, 0x5f, - 0xda, 0x9a, 0xed, 0x71, 0xbd, 0xf, 0x15, 0xbc, 0x73, 0xec, - 0x23, 0xde, 0xeb, 0xe4, 0x74, 0x47, 0x3a, 0xc1, 0xcb, 0xed, - 0x1f, 0x56, 0x51, 0x5f, 0x33, 0xdb, 0x7e, 0xd5, 0x44, 0x91, - 0xe6, 0x20, 0x1f, 0x51, 0x5a, 0xd6, 0xff, 00, 0xb5, 0x35, - 0x91, 0x3, 0x7a, 0xa7, 0xe4, 0x6b, 0xa2, 0x39, 0xd6, 0xa, - 0x5f, 0x6c, 0xe8, 0x8e, 0x69, 0x84, 0x96, 0xd3, 0x47, 0xd0, - 0x54, 0x57, 0x88, 0xdb, 0x7e, 0xd3, 0x5a, 0x4c, 0xa4, 0x6f, - 0x11, 0x8f, 0xc4, 0xd6, 0x9c, 0x1f, 0xb4, 0x56, 0x83, 0x26, - 0x32, 0xf1, 0xe7, 0xd9, 0xeb, 0x78, 0xe6, 0xb8, 0x39, 0x6d, - 0x51, 0x1b, 0xac, 0x76, 0x1e, 0x5b, 0x4d, 0x1e, 0xb7, 0x45, - 0x79, 0xbd, 0xbf, 0xc7, 0x4f, 0xf, 0xcf, 0xff, 00, 0x2d, - 0x94, 0x7f, 0xc0, 0xeb, 0x46, 0x1f, 0x8b, 0xfe, 0x1e, 0x9b, - 0x3, 0xed, 0x40, 0x1f, 0xad, 0x74, 0x47, 0x1b, 0x86, 0x96, - 0xd5, 0x17, 0xde, 0x6c, 0xb1, 0x14, 0x5e, 0xd2, 0x47, 0x6f, - 0x45, 0x72, 0xf0, 0x7c, 0x49, 0xd0, 0x67, 0xe9, 0x7a, 0x83, - 0xea, 0x6a, 0xdc, 0x7e, 0x36, 0xd1, 0x65, 0xfb, 0xb7, 0xf1, - 0x9f, 0xc6, 0xb6, 0x55, 0xe9, 0x3d, 0xa4, 0xbe, 0xf2, 0xd5, - 0x58, 0x3d, 0xa4, 0x8d, 0xda, 0x2b, 0x32, 0x3f, 0x12, 0x69, - 0x92, 0xfd, 0xdb, 0xd8, 0xbf, 0xef, 0xaa, 0x9d, 0x35, 0x7b, - 0x29, 0x3e, 0xed, 0xd4, 0x47, 0xfe, 0x4, 0x2b, 0x45, 0x38, - 0xbd, 0x99, 0x7c, 0xd1, 0xee, 0x5c, 0xa2, 0xa1, 0x5b, 0xb8, - 0x1f, 0xee, 0xca, 0x87, 0xfe, 0x4, 0x2a, 0x41, 0x22, 0x37, - 0x46, 0x53, 0xf4, 0x35, 0x57, 0x45, 0xe, 0xa2, 0x93, 0x39, - 0xa5, 0xa6, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, - 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, - 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, - 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, - 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, - 0x1, 0x45, 0x14, 0x50, 0x1, 0x48, 0x78, 0x14, 0xb4, 0xc9, - 0x5b, 0x64, 0x4e, 0xde, 0x80, 0x9a, 00, 0xf8, 0xdb, 0xf6, - 0x85, 0xba, 0xf3, 0x75, 0xd9, 0x87, 0xfb, 0x67, 0xf9, 0xd7, - 0x80, 0x78, 0x89, 0xf6, 0x59, 0x4d, 0xfe, 0xe9, 0xaf, 0x68, - 0xf8, 0xe1, 0x73, 0xe6, 0xf8, 0x82, 0x50, 0x4f, 0xf1, 0x93, - 0xfa, 0xd7, 0x84, 0x78, 0xc6, 0xf0, 0x41, 0xa7, 0x4c, 0x72, - 0x7, 0xca, 0x6b, 0xf2, 0xb7, 0xfb, 0xcc, 0x6c, 0xdf, 0x99, - 0xf8, 0xb7, 0x10, 0xce, 0xf5, 0x66, 0x6f, 0x7f, 0xc1, 0x3d, - 0xac, 0x1b, 0x50, 0xfd, 0xab, 0x75, 0x8b, 0xbd, 0xb9, 0x8e, - 0xcb, 0xc3, 0xf7, 0x4, 0x9f, 0x46, 0x79, 0xa1, 0x51, 0xfa, - 0x66, 0xbf, 0x4f, 0x2b, 0xf3, 0x97, 0xfe, 0x9, 0x81, 0x68, - 0x6f, 0xfe, 0x2d, 0x7c, 0x4d, 0xd5, 0xa, 0x9d, 0xb6, 0xfa, - 0x75, 0xa5, 0xb0, 0x6c, 0x71, 0x99, 0x25, 0x91, 0x88, 0xcf, - 0xfd, 0xb3, 0x15, 0xfa, 0x35, 0x5f, 0xa5, 0xe1, 0xd5, 0xa9, - 0xa3, 0xf5, 0xc, 0x9e, 0x1e, 0xcf, 0x1, 0x4a, 0x3e, 0x48, - 0x28, 0xa2, 0x8a, 0xe9, 0x3d, 0x90, 0xa2, 0x8a, 0x28, 00, - 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, - 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa8, 0xe4, 0x82, 0x29, - 0x46, 0x1e, 0x34, 0x71, 0xe8, 0xca, 0xd, 0x49, 0x45, 00, - 0x50, 0x9f, 0x41, 0xd3, 0x2e, 0x46, 0x26, 0xd3, 0xad, 0x25, - 0x1e, 0x8f, 0x2, 0x9f, 0xe6, 0x2b, 0x3e, 0xe3, 0xc0, 0x1e, - 0x19, 0xbb, 0xff, 00, 0x5b, 0xa0, 0x69, 0xad, 0xff, 00, - 0x6e, 0xa8, 0x3f, 0x90, 0xad, 0xfa, 0x2a, 0x1c, 0x20, 0xf7, - 0x46, 0x6e, 0x9c, 0x25, 0xbc, 0x51, 0xc5, 0xdd, 0xfc, 0x19, - 0xf0, 0x55, 0xe9, 0xcc, 0x9e, 0x1e, 0xb4, 0x1f, 0xf5, 0xcc, - 0x14, 0xfe, 0x44, 0x56, 0x45, 0xdf, 0xec, 0xe9, 0xe0, 0x4b, - 0xbc, 0xff, 00, 0xc4, 0xa0, 0xc3, 0x9f, 0xf9, 0xe7, 0x33, - 0x71, 0xf9, 0x93, 0x5e, 0x97, 0x45, 0x62, 0xf0, 0xd4, 0x65, - 0xbc, 0x17, 0xdc, 0x63, 0x2c, 0x26, 0x1e, 0x5b, 0xd3, 0x5f, - 0x72, 0x3c, 0x66, 0xef, 0xf6, 0x51, 0xf0, 0x4d, 0xce, 0x76, - 0x8b, 0xc8, 0x73, 0xfd, 0xd9, 0x10, 0xff, 00, 0x35, 0xac, - 0x9b, 0xaf, 0xd8, 0xeb, 0xc2, 0x93, 0x3, 0xe5, 0xdf, 0x5d, - 0xc6, 0x7f, 0xda, 0x54, 0x6f, 0xe8, 0x2b, 0xdf, 0x28, 0xac, - 0x9e, 0xb, 0xe, 0xfe, 0xc2, 0x30, 0x79, 0x76, 0x11, 0xff, - 00, 0xcb, 0xb4, 0x7c, 0xd5, 0x79, 0xfb, 0x13, 0xe8, 0xd2, - 0xff, 00, 0xa9, 0xd6, 0x9d, 0x7d, 0x9e, 0xd8, 0x1f, 0xfd, - 0x9a, 0xb0, 0xaf, 0x7f, 0x61, 0xa4, 0x6c, 0xf9, 0x1a, 0xbd, - 0xb3, 0xff, 00, 0xd7, 0x48, 0x4a, 0xff, 00, 0x8d, 0x7d, - 0x65, 0x45, 0x66, 0xf2, 0xfc, 0x3b, 0xfb, 0x3f, 0x8b, 0x32, - 0x79, 0x56, 0x11, 0xfd, 0x9f, 0xc5, 0xff, 00, 0x99, 0xf1, - 0x6d, 0xef, 0xec, 0x2f, 0xa9, 0xe0, 0x98, 0xee, 0x34, 0xe9, - 0x7d, 0x83, 0x11, 0xfc, 0xd6, 0xb9, 0xeb, 0xdf, 0xd8, 0x7f, - 0xc4, 0x28, 0xe, 0xcb, 0xb, 0x79, 0x7f, 0xdc, 0x99, 0x3f, - 0xa9, 0x15, 0xf7, 0x9d, 0x15, 0x9b, 0xcb, 0x68, 0xf4, 0x6d, - 0x7c, 0xcc, 0x25, 0x93, 0x61, 0x9e, 0xd7, 0x5f, 0x33, 0xf3, - 0xb6, 0xf3, 0xf6, 0x2d, 0xf1, 0x4c, 0x4a, 0x48, 0xd0, 0xe4, - 0x3f, 0xf5, 0xce, 0x44, 0x6f, 0xe4, 0xd5, 0x87, 0x7d, 0xfb, - 0x22, 0x78, 0xae, 0xd7, 0x27, 0xfb, 0xb, 0x50, 0xff, 00, - 0x80, 0x46, 0xcd, 0xfc, 0xab, 0xf4, 0xba, 0x8a, 0x8f, 0xec, - 0xc8, 0xf4, 0x9b, 0xfc, 0xe, 0x79, 0x64, 0x54, 0x1e, 0xd2, - 0x7f, 0x87, 0xf9, 0x1f, 0x96, 0x37, 0xbf, 0xb3, 0x77, 0x88, - 0xec, 0x98, 0xac, 0x9a, 0x6e, 0xa5, 0xb, 0x7a, 0x34, 0x2c, - 0x3f, 0xa5, 0x62, 0xdd, 0x7c, 0x18, 0xd6, 0xad, 0x1b, 0x69, - 0x17, 0x31, 0x91, 0xd9, 0x97, 0x15, 0xfa, 0xd1, 0x51, 0xbd, - 0xbc, 0x52, 0xe7, 0x7c, 0x48, 0xf9, 0xfe, 0xf2, 0x83, 0x50, - 0xf2, 0xd9, 0x74, 0xa9, 0xf8, 0x7f, 0xc1, 0x39, 0x65, 0xc3, - 0xb4, 0xa5, 0xf6, 0x97, 0xfe, 0x3, 0xff, 00, 0x4, 0xfc, - 0x8c, 0x97, 0xe1, 0xa6, 0xb9, 0x7, 0xdd, 0x92, 0x5f, 0xc5, - 0x4d, 0x57, 0x7f, 0x6, 0xf8, 0x86, 0xe, 0x8e, 0xdc, 0x7a, - 0x82, 0x2b, 0xf5, 0xae, 0x7f, 0xb, 0xe8, 0xd7, 0x24, 0x99, - 0xb4, 0x9b, 0x19, 0x49, 0xea, 0x5e, 0xdd, 0xf, 0xf4, 0xac, - 0xd9, 0xbe, 0x19, 0xf8, 0x4e, 0xe0, 0x93, 0x27, 0x87, 0x74, - 0xd2, 0x4f, 0x53, 0xf6, 0x65, 0x1f, 0xd2, 0xb3, 0x79, 0x75, - 0x6e, 0x93, 0x5f, 0x71, 0xc7, 0x3e, 0x18, 0xa6, 0xff, 00, - 0x97, 0xee, 0x3f, 0x28, 0xe, 0x8f, 0xe2, 0x38, 0x3d, 0x4f, - 0xe2, 0x69, 0x9f, 0xf1, 0x51, 0xc1, 0xd6, 0x26, 0x6f, 0xc6, - 0xbf, 0x54, 0x67, 0xf8, 0x29, 0xe0, 0x8b, 0x90, 0x43, 0xf8, - 0x76, 0xd0, 0x67, 0xba, 0xee, 0x5f, 0xe4, 0x6b, 0x1e, 0xef, - 0xf6, 0x6e, 0xf0, 0xd, 0xd0, 0xe3, 0x48, 0x68, 0x4f, 0xac, - 0x73, 0xbf, 0xf5, 0x26, 0xb2, 0x79, 0x75, 0x7f, 0xee, 0xbf, - 0xeb, 0xd0, 0xe4, 0x9f, 0xa, 0x45, 0xed, 0x18, 0xfd, 0xef, - 0xfc, 0x8f, 0xcc, 0x7f, 0xed, 0x6d, 0x7a, 0x1f, 0xbd, 0x6c, - 0xe6, 0x94, 0x78, 0xa7, 0x56, 0x8b, 0xef, 0xda, 0xc9, 0xff, - 00, 0x7c, 0x9a, 0xfd, 0x1f, 0xbc, 0xfd, 0x93, 0xbc, 0xf, - 0x73, 0xfe, 0xad, 0x2f, 0x20, 0xff, 00, 0x76, 0x45, 0x3f, - 0xcd, 0x6b, 0x12, 0xf7, 0xf6, 0x35, 0xf0, 0xbc, 0xf9, 0xf2, - 0x35, 0xb, 0x98, 0xbf, 0xdf, 0x8d, 0x5b, 0xf9, 0x62, 0xb1, - 0x96, 0x5f, 0x5b, 0xf9, 0x13, 0x38, 0xe5, 0xc2, 0x8d, 0x6d, - 0x1f, 0xba, 0x47, 0xe7, 0xf0, 0xf1, 0xcd, 0xe4, 0x63, 0xe7, - 0xb7, 0x71, 0xf5, 0x6, 0xa6, 0x4f, 0x88, 0x4e, 0xbf, 0x7a, - 0x32, 0x3f, 0x3a, 0xfb, 0x82, 0xef, 0xf6, 0x24, 0xd3, 0x64, - 0x3f, 0xb9, 0xd6, 0x94, 0xf, 0xf6, 0xed, 0x7f, 0xfb, 0x2a, - 0xc5, 0xbd, 0xfd, 0x86, 0x4b, 0x67, 0xc9, 0xd5, 0xac, 0xe4, - 0xf4, 0xf3, 0x22, 0x65, 0xff, 00, 0x1a, 0xc1, 0xe0, 0x2a, - 0x75, 0xa3, 0xf8, 0xaf, 0xf3, 0x39, 0x65, 0xc3, 0x15, 0x56, - 0xd1, 0x97, 0xde, 0xbf, 0xcc, 0xf9, 0x6, 0x3f, 0x88, 0xa9, - 0xfc, 0x40, 0x8a, 0xb5, 0x1f, 0xc4, 0x4b, 0x73, 0xd5, 0xb1, - 0xf8, 0xd7, 0xd2, 0xb7, 0xbf, 0xb0, 0xae, 0xaa, 0x1, 0xf2, - 0xa7, 0xd3, 0x26, 0xff, 00, 0x81, 0x11, 0xfc, 0xd6, 0xb9, - 0xfb, 0xef, 0xd8, 0x77, 0xc4, 0x71, 0x3, 0xb2, 0xc2, 0xd6, - 0x6f, 0xfa, 0xe7, 0x32, 0xff, 00, 0x52, 0x2b, 0x9, 0x60, - 0x7b, 0xd2, 0x67, 0x3c, 0xb8, 0x7b, 0x13, 0x1d, 0x9c, 0xfe, - 0xeb, 0x9e, 0x27, 0x1f, 0x8f, 0xad, 0x5b, 0x1f, 0xbc, 0xc5, - 0x59, 0x4f, 0x1b, 0x5a, 0xb7, 0xfc, 0xb5, 0x5f, 0xc6, 0xbd, - 0xe, 0xff, 00, 0xf6, 0x31, 0xf1, 0x4d, 0xbe, 0x4f, 0xf6, - 0x1c, 0x8c, 0x3d, 0x63, 0x60, 0xdf, 0xc8, 0xd7, 0x3f, 0x7b, - 0xfb, 0x28, 0xf8, 0x9a, 0xd4, 0x9c, 0xe8, 0x5a, 0x8a, 0xfb, - 0xac, 0xe, 0x7f, 0xa5, 0x61, 0x2c, 0x15, 0x35, 0xbc, 0x1a, - 0xf9, 0x1c, 0xd2, 0xc9, 0xb1, 0x70, 0xfb, 0x6f, 0xe7, 0x16, - 0x62, 0x27, 0x8b, 0xed, 0x5b, 0xfe, 0x5a, 0xa7, 0xe7, 0x53, - 0xa7, 0x89, 0xad, 0x9f, 0xa4, 0x89, 0xf9, 0xd5, 0x7b, 0xcf, - 0xd9, 0xd7, 0xc4, 0x36, 0x79, 0x2f, 0xa7, 0xea, 0x11, 0x1, - 0xfd, 0xe8, 0x58, 0x7f, 0x4a, 0xc6, 0xb8, 0xf8, 0x3b, 0xac, - 0xdb, 0x67, 0xfe, 0x3e, 0x13, 0x1f, 0xde, 0x43, 0x58, 0x3c, - 0x1d, 0xf, 0x34, 0x60, 0xf2, 0xfc, 0x64, 0x7e, 0xda, 0xf9, - 0xa3, 0xa8, 0x5d, 0x7a, 0xdd, 0xbf, 0x8d, 0x7f, 0x3a, 0x95, - 0x75, 0x78, 0xf, 0xf1, 0xa, 0xe1, 0x24, 0xf8, 0x6f, 0xad, - 0xc3, 0x9d, 0xb2, 0xc9, 0xf8, 0xa1, 0xaa, 0xef, 0xe0, 0xfd, - 0x7e, 0xe, 0x92, 0x31, 0xfc, 0xd, 0x47, 0xd4, 0xa8, 0xbd, - 0xa4, 0x67, 0xf5, 0x5c, 0x6a, 0xeb, 0x16, 0x7a, 0x38, 0xd4, - 0xa1, 0x6f, 0xe2, 0x14, 0xe1, 0x7d, 0x9, 0xfe, 0x31, 0x5e, - 0x62, 0xda, 0x47, 0x88, 0xa0, 0xe8, 0x49, 0xfc, 0x4d, 0x34, - 0xff, 00, 0xc2, 0x43, 0x7, 0x58, 0xd9, 0xbf, 0x1a, 0x87, - 0x97, 0xc7, 0xa4, 0x89, 0xf6, 0x58, 0xe5, 0xf6, 0x13, 0xf9, - 0x9e, 0xa6, 0x2e, 0xa3, 0x3f, 0xc4, 0x29, 0xc2, 0xe1, 0x4f, - 0x47, 0xfd, 0x6b, 0xca, 0x7f, 0xb5, 0xb5, 0xd8, 0x7e, 0xf5, - 0xb4, 0x87, 0xf0, 0xa7, 0xf, 0x14, 0xea, 0xb1, 0x7d, 0xeb, - 0x69, 0x3f, 0xef, 0x9a, 0x97, 0x97, 0x3e, 0x92, 0x44, 0xff, - 00, 0xb5, 0xc7, 0x7a, 0x47, 0xab, 0x8b, 0x93, 0xda, 0x53, - 0xf9, 0xd4, 0x89, 0x7d, 0x32, 0xfd, 0xd9, 0xd8, 0x7f, 0xc0, - 0xab, 0xc9, 0xd7, 0xc7, 0x17, 0x91, 0xfd, 0xfb, 0x77, 0x1f, - 0x81, 0xa9, 0x93, 0xe2, 0x13, 0xaf, 0xde, 0x8d, 0x85, 0x64, - 0xf2, 0xd9, 0xf4, 0xb0, 0x7b, 0x7c, 0x44, 0x77, 0xa7, 0x23, - 0xd6, 0x53, 0x58, 0xbd, 0x4f, 0xbb, 0x75, 0x28, 0xff, 00, - 0x81, 0x1a, 0xb1, 0x1f, 0x89, 0xb5, 0x38, 0xbe, 0xed, 0xe4, - 0xa3, 0xfe, 0x4, 0x6b, 0xc9, 0xa3, 0xf8, 0x88, 0x9d, 0xc3, - 0xf, 0xc6, 0xac, 0xc7, 0xf1, 0xa, 0x3, 0xfc, 0x44, 0x54, - 0x7f, 0x67, 0xd6, 0x5b, 0x21, 0xac, 0xc2, 0xac, 0x77, 0x52, - 0x5f, 0x79, 0xeb, 0x71, 0xf8, 0xe3, 0x5a, 0x8b, 0xa5, 0xf4, - 0x9f, 0xf7, 0xd5, 0x5c, 0x83, 0xe2, 0x6e, 0xbd, 0x6, 0x31, - 0x74, 0xc7, 0xea, 0x4d, 0x79, 0x14, 0x7e, 0x3e, 0xb6, 0x6e, - 0xaf, 0x8a, 0xb3, 0x1f, 0x8d, 0xad, 0x5b, 0xfe, 0x5a, 0x8a, - 0x5f, 0x55, 0xc4, 0x47, 0x6b, 0xfd, 0xec, 0xd5, 0x66, 0xf3, - 0x8f, 0xdb, 0x92, 0x3d, 0x8e, 0x1f, 0x8c, 0x3e, 0x20, 0x8b, - 0x1f, 0xe9, 0x4, 0xe3, 0xdc, 0xd6, 0x8d, 0xbf, 0xc7, 0x7d, - 0x7a, 0x1c, 0x7c, 0xe4, 0xff, 00, 0xc0, 0x8d, 0x78, 0x9a, - 0x78, 0xbe, 0xd5, 0xbf, 0xe5, 0xaa, 0xfe, 0x75, 0x3a, 0x78, - 0x9e, 0xd9, 0xff, 00, 0xe5, 0xa2, 0xfe, 0x74, 0x72, 0xe2, - 0xe1, 0xb3, 0x7f, 0x7b, 0x3a, 0x23, 0x9e, 0x54, 0x5f, 0xf2, - 0xf5, 0x9e, 0xef, 0x6f, 0xfb, 0x45, 0x6b, 0x71, 0x63, 0x73, - 0x31, 0xff, 00, 0x81, 0x1a, 0xd6, 0xb6, 0xfd, 0xa6, 0xf5, - 0x48, 0xb1, 0xb8, 0x39, 0xff, 00, 0x81, 0x57, 0xcf, 0x29, - 0xaf, 0xdb, 0xb7, 0xf1, 0xaf, 0xe7, 0x52, 0xae, 0xb1, 0x3, - 0x7f, 0x10, 0xfc, 0xea, 0xd6, 0x23, 0x1b, 0xd, 0xa6, 0xce, - 0xb8, 0x71, 0x5, 0x65, 0xb5, 0x53, 0xe9, 0x4b, 0x6f, 0xda, - 0x92, 0xec, 0x7f, 0xac, 0xdd, 0x5a, 0xd6, 0xdf, 0xb5, 0x42, - 0xf1, 0xbd, 0x41, 0xfa, 0x8a, 0xf9, 0x65, 0x75, 0x38, 0x4f, - 0xf1, 0xf, 0xce, 0x9e, 0x2f, 0xa1, 0x6f, 0xe2, 0x15, 0xa2, - 0xcc, 0x71, 0xf1, 0xfb, 0x6c, 0xeb, 0x8f, 0x11, 0x62, 0x3f, - 0x9d, 0x1f, 0x5b, 0xdb, 0x7e, 0xd4, 0x56, 0x6f, 0x8f, 0x30, - 0x20, 0xfc, 0x2b, 0x56, 0xf, 0xda, 0x63, 0x49, 0x93, 0x19, - 0xf2, 0xfe, 0xb9, 0x22, 0xbe, 0x35, 0x17, 0x31, 0x1f, 0xe2, - 0x14, 0xf1, 0x3a, 0x1e, 0x8f, 0xfa, 0xd6, 0xcb, 0x38, 0xc7, - 0x47, 0xed, 0x7e, 0x7, 0x5c, 0x78, 0x8f, 0x11, 0xe4, 0xcf, - 0xb6, 0xad, 0xff, 00, 0x68, 0x6d, 0xe, 0x5c, 0x6e, 0x78, - 0xc7, 0xfc, 0xa, 0xb4, 0xa0, 0xf8, 0xe7, 0xe1, 0xf9, 0xb1, - 0x89, 0x57, 0xfe, 0xfa, 0xaf, 0x85, 0x44, 0xe3, 0xb3, 0xfe, - 0xb4, 0xf5, 0xba, 0x91, 0x7a, 0x4a, 0xc3, 0xe8, 0xd5, 0xb2, - 0xcf, 0x71, 0x8b, 0x74, 0x8e, 0xa8, 0xf1, 0x25, 0x5e, 0xb1, - 0x3e, 0xf8, 0xb7, 0xf8, 0xb9, 0xa0, 0x4c, 0x1, 0xfb, 0x48, - 0x1f, 0x8d, 0x5d, 0x8b, 0xe2, 0x4e, 0x83, 0x37, 0xdd, 0xbc, - 0x5a, 0xfc, 0xff, 00, 0x5d, 0x46, 0xe5, 0x7a, 0x5c, 0x3f, - 0xfd, 0xf5, 0x53, 0xc7, 0xae, 0xea, 0x11, 0xfd, 0xdb, 0xb9, - 0x7, 0xd1, 0xab, 0x75, 0xc4, 0x35, 0xd6, 0xf0, 0x47, 0x44, - 0x78, 0x91, 0xf5, 0x81, 0xfa, 0xd, 0x1f, 0x8d, 0x74, 0x69, - 0x7a, 0x5f, 0x46, 0x3e, 0xa6, 0xac, 0xc7, 0xe2, 0x5d, 0x32, - 0x5f, 0xbb, 0x7b, 0x11, 0xfc, 0x6b, 0xf3, 0xe5, 0x3c, 0x5b, - 0xab, 0x47, 0x8c, 0x5e, 0xcb, 0xff, 00, 0x7d, 0x55, 0xb8, - 0x7c, 0x7f, 0xad, 0xc3, 0xf7, 0x6f, 0x5f, 0xf1, 0x35, 0xb2, - 0xe2, 0x29, 0x7d, 0xaa, 0x7f, 0x89, 0xd1, 0x1e, 0x24, 0xa6, - 0xf7, 0x89, 0xfa, 0x6, 0x9a, 0xb5, 0x9b, 0xfd, 0xdb, 0xa8, - 0x8f, 0xfc, 0x8, 0x54, 0xa9, 0x79, 0x3, 0xfd, 0xd9, 0x91, - 0xbe, 0x8c, 0x2b, 0xe0, 0x48, 0x7e, 0x29, 0xeb, 0xf1, 0x1f, - 0xf8, 0xfb, 0x73, 0xf8, 0xd6, 0x84, 0x1f, 0x1a, 0x7c, 0x41, - 0x7, 0xfc, 0xb7, 0x27, 0xf1, 0xad, 0xe3, 0xc4, 0x50, 0xeb, - 0x4d, 0xfe, 0x7, 0x44, 0x78, 0x87, 0xe, 0xf7, 0x4c, 0xfb, - 0xbc, 0x3a, 0x9e, 0x8c, 0xf, 0xe3, 0x4b, 0x90, 0x7b, 0xd7, - 0xc3, 0xf6, 0xff, 00, 0x1f, 0x35, 0xc8, 0xb1, 0xba, 0x47, - 0x6f, 0xf8, 0x15, 0x6a, 0x5b, 0xfe, 0xd2, 0x1a, 0xc4, 0x3d, - 0x4b, 0xff, 00, 0xdf, 0x55, 0xd1, 0x1e, 0x21, 0xc3, 0xbd, - 0xe2, 0xd1, 0xd1, 0x1c, 0xfb, 0x8, 0xfa, 0x9f, 0x66, 0xd1, - 0x5f, 0x22, 0xdb, 0x7e, 0xd3, 0xba, 0x8a, 0xe3, 0xcc, 0x32, - 0x1f, 0x6c, 0xd6, 0xad, 0xbf, 0xed, 0x4d, 0x38, 0xc6, 0xe0, - 0xdf, 0x8e, 0x2b, 0x68, 0xe7, 0xd8, 0x37, 0xbb, 0x6b, 0xe4, - 0x6f, 0x1c, 0xe7, 0x7, 0x2f, 0xb4, 0x7d, 0x4b, 0x45, 0x7c, - 0xdf, 0x6b, 0xfb, 0x52, 0x46, 0x71, 0xe6, 0x7e, 0xa2, 0xb5, - 0x2d, 0xff, 00, 0x69, 0xfb, 0x17, 0xc0, 0x65, 0x5f, 0xa9, - 0xad, 0xe3, 0x9d, 0x60, 0xa5, 0xf6, 0xce, 0x88, 0xe6, 0x78, - 0x59, 0x6d, 0x33, 0xdf, 0x28, 0xaf, 0x18, 0xb7, 0xfd, 0xa4, - 0x74, 0x87, 0xc6, 0xf3, 0x18, 0xff, 00, 0x81, 0x56, 0x9d, - 0xbf, 0xed, 0x3, 0xa1, 0xcd, 0x8e, 0x57, 0xfe, 0xfb, 0xae, - 0x88, 0xe6, 0x78, 0x39, 0x6d, 0x51, 0x1b, 0xac, 0x6e, 0x1e, - 0x5b, 0x4d, 0x1e, 0xa9, 0x45, 0x79, 0xec, 0x1f, 0x1a, 0xf4, - 0x9, 0x40, 0xcc, 0xa0, 0x7f, 0xc0, 0x85, 0x5f, 0x83, 0xe2, - 0xc6, 0x83, 0x39, 0xe2, 0xe3, 0x1f, 0x88, 0xae, 0x85, 0x8c, - 0xc3, 0xcb, 0x69, 0xa3, 0x55, 0x88, 0xa4, 0xf6, 0x92, 0x3b, - 0x3a, 0x2b, 0x9a, 0x8f, 0xe2, 0x16, 0x87, 0x27, 0xfc, 0xbe, - 0x28, 0xfc, 0x6a, 0xdc, 0x5e, 0x32, 0xd2, 0x26, 0x3f, 0x2d, - 0xec, 0x7f, 0x9d, 0x6c, 0xab, 0x52, 0x7b, 0x49, 0x1a, 0x2a, - 0x90, 0x7d, 0x4d, 0xaa, 0x2b, 0x39, 0x3c, 0x41, 0xa7, 0x3f, - 0x4b, 0xc8, 0xbf, 0xef, 0xaa, 0x9d, 0x35, 0x4b, 0x49, 0x3e, - 0xed, 0xcc, 0x67, 0xfe, 0x4, 0x2a, 0xd4, 0xe2, 0xf6, 0x65, - 0x73, 0x27, 0xd4, 0xb5, 0x55, 0xb5, 0x27, 0xf2, 0xac, 0x2e, - 0x1b, 0xd1, 0x9, 0xfd, 0x2a, 0x41, 0x73, 0xb, 0x74, 0x95, - 0xf, 0xfc, 0x8, 0x56, 0x4f, 0x8b, 0xb5, 0x58, 0x34, 0xef, - 0xf, 0x5e, 0xcd, 0x24, 0xaa, 0x2, 0xc6, 0x7f, 0x88, 0x52, - 0x9c, 0x92, 0x8b, 0x62, 0x94, 0x92, 0x8b, 0x67, 0xc3, 0xff, - 00, 0x18, 0xef, 0x47, 0xf6, 0xe4, 0xc4, 0x9f, 0xe2, 0x3f, - 0xce, 0xbe, 0x6a, 0xf8, 0x9d, 0xe2, 0x25, 0x8a, 0xdd, 0xe2, - 0x57, 0xc1, 0xc1, 0xef, 0x5e, 0xa7, 0xf1, 0xaf, 0xc6, 0xf0, - 0x7f, 0x69, 0x5c, 0x4a, 0xae, 0x32, 0x58, 0xe0, 0x66, 0xbe, - 0x67, 0xbe, 0x87, 0x53, 0xf8, 0x83, 0xe2, 0x5b, 0x1d, 0x13, - 0x4b, 0x89, 0xee, 0x75, 0x2d, 0x4a, 0xe1, 0x6d, 0xad, 0xe2, - 0x5e, 0x4b, 0x33, 0x1c, 0xa, 0xf8, 0x3c, 0xbf, 0xc, 0xe5, - 0x39, 0x56, 0x7d, 0x5b, 0xb1, 0xf8, 0x9d, 0x78, 0x4b, 0x33, - 0xcc, 0xb9, 0x21, 0xf0, 0xa6, 0x7e, 0x80, 0x7f, 0xc1, 0x2d, - 0xbc, 0x19, 0x36, 0x97, 0xf0, 0xa3, 0xc5, 0x3e, 0x28, 0xb8, - 0x8c, 0xab, 0x6b, 0xda, 0xb6, 0xd8, 0x58, 0xff, 00, 0x14, - 0x30, 0x26, 0xc0, 0x7f, 0xef, 0xb6, 0x93, 0xf2, 0xaf, 0xb5, - 0x6b, 0x88, 0xf8, 0x27, 0xf0, 0xda, 0xdf, 0xe1, 0xf, 0xc2, - 0x9f, 0xc, 0xf8, 0x42, 0xdc, 0xab, 0x8d, 0x2e, 0xcd, 0x22, - 0x92, 0x45, 0x18, 0xf3, 0x25, 0x3f, 0x34, 0x8d, 0xf8, 0xb1, - 0x63, 0x5d, 0xbd, 0x7d, 0xec, 0x23, 0xcb, 0x14, 0x8f, 0xda, - 0x68, 0xc3, 0xd9, 0x53, 0x8c, 0x3b, 0x20, 0xa2, 0x8a, 0x2a, - 0xcd, 0x82, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0xa3, 0x92, - 0xde, 0x29, 0x86, 0x24, 0x89, 0x1c, 0x7f, 0xb4, 0xa0, 0xd4, - 0x94, 0x51, 0xb8, 0x19, 0x97, 0x3e, 0x19, 0xd1, 0xef, 0x41, - 0x17, 0x1a, 0x55, 0x94, 0xc0, 0xf6, 0x92, 0xdd, 0xf, 0xf3, - 0x15, 0x97, 0x75, 0xf0, 0xcb, 0xc2, 0x77, 0x83, 0x12, 0xf8, - 0x7b, 0x4f, 0x3f, 0xee, 0xc0, 0xab, 0xfc, 0xb1, 0x5d, 0x3d, - 0x15, 0x9b, 0xa7, 0x9, 0x6f, 0x14, 0x64, 0xe9, 0x53, 0x97, - 0xc5, 0x14, 0xfe, 0x47, 0x5, 0x75, 0xf0, 0x2b, 0xc0, 0xd7, - 0x9f, 0x7f, 0x40, 0x85, 0x7f, 0xdc, 0x91, 0xd7, 0xf9, 0x35, - 0x64, 0xdc, 0x7e, 0xcd, 0x1e, 0x2, 0xb8, 0x24, 0xff, 00, - 0x65, 0xcb, 0x1e, 0x7b, 0x24, 0xed, 0xfd, 0x73, 0x5e, 0xa7, - 0x45, 0x62, 0xf0, 0xb4, 0x1e, 0xf0, 0x5f, 0x71, 0x83, 0xc1, - 0xe1, 0xa5, 0xbd, 0x35, 0xf7, 0x23, 0xc5, 0xae, 0x7f, 0x64, - 0xbf, 0x3, 0x5c, 0x64, 0xa8, 0xbe, 0x8b, 0x3d, 0x2, 0xca, - 0xa4, 0xf, 0xcd, 0x6b, 0x16, 0xeb, 0xf6, 0x32, 0xf0, 0xb4, - 0xa1, 0xbc, 0xad, 0x46, 0xee, 0x33, 0xdb, 0x72, 0x29, 0xff, - 00, 0xa, 0xfa, 0xe, 0x8a, 0xcd, 0xe0, 0x70, 0xef, 0xec, - 0x19, 0x3c, 0xbb, 0x8, 0xff, 00, 0xe5, 0xda, 0x3e, 0x61, - 0xbb, 0xfd, 0x88, 0xb4, 0xe7, 0x53, 0xe4, 0xeb, 0x99, 0x3d, - 0x83, 0xdb, 0x60, 0x7f, 0xe8, 0x55, 0xcf, 0xdf, 0x7e, 0xc3, - 0x77, 0x27, 0xfd, 0x46, 0xa5, 0x63, 0x2f, 0xfb, 0xe1, 0x97, - 0xff, 00, 0x65, 0x35, 0xf5, 0xf5, 0x15, 0x93, 0xcb, 0xb0, - 0xef, 0x64, 0xd7, 0xcd, 0x98, 0xbc, 0xab, 0x8, 0xfe, 0xcd, - 0xbe, 0x6c, 0xf8, 0x92, 0xf7, 0xf6, 0x18, 0xd6, 0xb9, 0xf2, - 0xdb, 0x4e, 0x97, 0xfd, 0xd9, 0x48, 0xfe, 0x6a, 0x2b, 0x6, - 0xfb, 0xf6, 0x1e, 0xf1, 0x2c, 0x64, 0xec, 0xd3, 0xad, 0xa6, - 0xf7, 0x4b, 0x84, 0xfe, 0xa4, 0x57, 0xdf, 0x34, 0x54, 0x3c, - 0xb2, 0x8f, 0x46, 0xfe, 0xf3, 0x7, 0x93, 0x61, 0x9f, 0x57, - 0xf7, 0xff, 00, 0xc0, 0x3f, 0x39, 0xaf, 0x7f, 0x63, 0x1f, - 0x15, 0xdb, 0x92, 0x3f, 0xb0, 0x65, 0x6f, 0xfa, 0xe7, 0x22, - 0xb7, 0xf2, 0x26, 0xb0, 0x2f, 0x7f, 0x65, 0xf, 0x14, 0x5a, - 0x12, 0xe, 0x83, 0xa8, 0xae, 0x3f, 0xbb, 0x13, 0x37, 0xf2, - 0x15, 0xfa, 0x71, 0x45, 0x43, 0xcb, 0x23, 0xd2, 0x6c, 0xc2, - 0x59, 0x15, 0x7, 0xb4, 0x9f, 0xe1, 0xfe, 0x47, 0xe5, 0x3d, - 0xef, 0xec, 0xfd, 0xad, 0xd9, 0x13, 0xe6, 0x59, 0x5e, 0xc3, - 0xfe, 0xfa, 0x11, 0xfc, 0xc5, 0x64, 0x4f, 0xf0, 0x8f, 0x56, - 0xb7, 0x24, 0x3, 0x32, 0xff, 00, 0xbc, 0x2b, 0xf5, 0xb8, - 0xa8, 0x3d, 0x40, 0x35, 0xc, 0x96, 0x16, 0xd3, 0xc, 0x49, - 0x6f, 0x14, 0x83, 0xfd, 0xa4, 0x6, 0xb3, 0x79, 0x6c, 0xfa, - 0x54, 0xfc, 0x3f, 0xe0, 0x9c, 0x92, 0xe1, 0xda, 0x72, 0xfb, - 0x4b, 0xff, 00, 0x1, 0xff, 00, 0x82, 0x7e, 0x45, 0xc9, - 0xf0, 0xeb, 0x5a, 0x83, 0xa4, 0x8f, 0xf8, 0xa9, 0xaa, 0xcf, - 0xe1, 0x1d, 0x7e, 0x1e, 0x8f, 0xf9, 0xe4, 0x57, 0xeb, 0x7c, - 0xfe, 0x15, 0xd1, 0x6e, 0xbf, 0xd7, 0x69, 0x16, 0x32, 0xff, - 00, 0xbf, 0x6c, 0x87, 0xfa, 0x56, 0x65, 0xcf, 0xc3, 0xf, - 0x9, 0x5d, 0xff, 00, 0xad, 0xf0, 0xee, 0x9c, 0x7d, 0xc5, - 0xba, 0xaf, 0xf2, 0xa8, 0x79, 0x75, 0x6e, 0x93, 0x4f, 0xe4, - 0x72, 0x4f, 0x86, 0x29, 0xbd, 0xb9, 0x7e, 0xe3, 0xf2, 0x7c, - 0xe9, 0x3e, 0x22, 0x83, 0xa7, 0x3f, 0xf0, 0x23, 0x4d, 0xff, - 00, 0x8a, 0x8a, 0x1f, 0xf9, 0x66, 0x5b, 0x1e, 0xf5, 0xfa, - 0x9b, 0x75, 0xf0, 0x2b, 0xc0, 0xb7, 0x79, 0xdf, 0xe1, 0xeb, - 0x75, 0xcf, 0xfc, 0xf3, 0x77, 0x5f, 0xe4, 0x6b, 0x26, 0xe7, - 0xf6, 0x67, 0xf0, 0x5, 0xc0, 0x23, 0xfb, 0x2a, 0x48, 0xb3, - 0xdd, 0x27, 0x6f, 0xeb, 0x9a, 0xc9, 0xe5, 0xf5, 0xff, 00, - 0xba, 0xff, 00, 0xaf, 0x43, 0x8e, 0x7c, 0x29, 0x17, 0xf6, - 0x63, 0xf7, 0xbf, 0xf2, 0x3f, 0x32, 0x3f, 0xb5, 0xb5, 0xc8, - 0x4f, 0xcd, 0x6e, 0xe7, 0xf0, 0xcd, 0x28, 0xf1, 0x46, 0xab, - 0x17, 0xdf, 0xb7, 0x7f, 0xfb, 0xe6, 0xbf, 0x48, 0x2e, 0xff, - 00, 0x64, 0xbf, 0x2, 0xdc, 0x8f, 0x91, 0x2f, 0x61, 0xff, - 00, 0x76, 0x55, 0x3f, 0xcd, 0x6b, 0x1e, 0xf3, 0xf6, 0x33, - 0xf0, 0xa4, 0xc3, 0xf7, 0x1a, 0x85, 0xe4, 0x47, 0xfd, 0xb5, - 0x56, 0xff, 00, 0xa, 0xc9, 0xe0, 0x2b, 0x7f, 0x22, 0x67, - 0x24, 0xb8, 0x51, 0xad, 0xa1, 0xf7, 0x48, 0xfc, 0xfa, 0x5f, - 0x1c, 0x5d, 0xc7, 0xf7, 0xe1, 0x61, 0xff, 00, 0x1, 0x35, - 0x32, 0x7c, 0x41, 0x71, 0xf7, 0x90, 0x8f, 0xce, 0xbe, 0xe2, - 0xbd, 0xfd, 0x88, 0x74, 0xc9, 0x3f, 0xe3, 0xdf, 0x5b, 0xc0, - 0xff, 00, 0xa6, 0x96, 0xdf, 0xe0, 0xd5, 0x81, 0x79, 0xfb, - 0xc, 0x4e, 0xcc, 0x7c, 0x9d, 0x52, 0xc5, 0xd7, 0xb6, 0xf5, - 0x65, 0x3f, 0xfa, 0x9, 0xac, 0x1e, 0x2, 0xa7, 0x5a, 0x5f, - 0x91, 0xcb, 0x2e, 0x17, 0xab, 0x1d, 0xa3, 0x2f, 0xbd, 0x7f, - 0x99, 0xf2, 0x24, 0x7f, 0x11, 0x13, 0xbe, 0x6a, 0xd4, 0x7f, - 0x10, 0xa0, 0x38, 0xcb, 0x11, 0x5f, 0x4a, 0x5d, 0xfe, 0xc2, - 0xfa, 0xcf, 0x3e, 0x5b, 0xe9, 0xb2, 0xe, 0xd8, 0x90, 0x8f, - 0xe6, 0xb5, 0x83, 0x79, 0xfb, 0xe, 0xf8, 0x99, 0x41, 0x29, - 0xa7, 0xdb, 0x49, 0xfe, 0xe5, 0xc2, 0xf, 0xeb, 0x58, 0x3c, - 0xf, 0x7a, 0x4c, 0xe6, 0x97, 0xe, 0xe2, 0x23, 0xb7, 0x3f, - 0xdd, 0x73, 0xc4, 0xa3, 0xf1, 0xed, 0xb3, 0x7f, 0xcb, 0x4f, - 0xd2, 0xac, 0xc7, 0xe3, 0x7b, 0x66, 0xff, 00, 0x96, 0xa2, - 0xbd, 0x16, 0xf7, 0xf6, 0x2e, 0xf1, 0x64, 0xa, 0xcd, 0xfd, - 0x83, 0x23, 0x1, 0xff, 00, 0x3c, 0xe5, 0x56, 0xfd, 0x3, - 0x57, 0x3f, 0x7d, 0xfb, 0x28, 0x78, 0xa6, 0xd0, 0x16, 0x7d, - 0x3, 0x51, 0x50, 0x3b, 0xac, 0x4c, 0x7f, 0xa5, 0x60, 0xf0, - 0x54, 0xd6, 0xf0, 0x6b, 0xe4, 0x73, 0xcb, 0x25, 0xc5, 0xc3, - 0xed, 0xc9, 0x7a, 0xa6, 0x61, 0x27, 0x8c, 0x2d, 0x5b, 0xfe, - 0x5a, 0xad, 0x58, 0x4f, 0x14, 0x5b, 0x3f, 0xfc, 0xb4, 0x5f, - 0xce, 0xaa, 0x5f, 0x7e, 0xcf, 0xda, 0xe5, 0x8e, 0x7c, 0xdb, - 0x1b, 0xf8, 0xf, 0xfb, 0x71, 0xb0, 0xfe, 0x62, 0xb2, 0x27, - 0xf8, 0x47, 0xaa, 0xdb, 0xe7, 0x99, 0xd7, 0xea, 0xb5, 0x83, - 0xc2, 0x50, 0xf4, 0x39, 0xde, 0x5f, 0x8b, 0x8f, 0xfc, 0xbc, - 0x5f, 0x34, 0x75, 0x2b, 0xaf, 0xdb, 0xb7, 0xf1, 0x8f, 0xce, - 0xa5, 0x5d, 0x62, 0x16, 0xee, 0x2b, 0x83, 0x93, 0xe1, 0xd6, - 0xb3, 0xf, 0xdd, 0x95, 0xc7, 0xd5, 0x6a, 0xbb, 0xf8, 0x3f, - 0x5e, 0x83, 0xa4, 0x9f, 0xce, 0xb3, 0xfa, 0x95, 0x17, 0xb4, - 0x88, 0xfa, 0xae, 0x35, 0x6d, 0x28, 0xb3, 0xd2, 0x6, 0xa9, - 0x9, 0xfe, 0x2a, 0x78, 0xbf, 0x84, 0xff, 00, 0x10, 0xaf, - 0x2f, 0x3a, 0x37, 0x88, 0x61, 0xe8, 0x73, 0xff, 00, 0x2, - 0xa6, 0x95, 0xf1, 0xc, 0x3d, 0x50, 0x9f, 0xa3, 0x54, 0xbc, - 0xbe, 0x1d, 0x24, 0x4f, 0xb1, 0xc7, 0x2f, 0xb2, 0x9f, 0xcc, - 0xf5, 0x51, 0x77, 0x11, 0xfe, 0x2a, 0x70, 0x9e, 0x33, 0xfc, - 0x55, 0xe5, 0x3, 0x52, 0xd7, 0xa1, 0xfb, 0xd0, 0x39, 0xa7, - 0x7f, 0xc2, 0x4d, 0xaa, 0xc5, 0xf7, 0xe0, 0x93, 0xfe, 0xf9, - 0xa9, 0x79, 0x77, 0x69, 0x12, 0xd6, 0x32, 0x3b, 0xd2, 0x3d, - 0x58, 0x4c, 0xbd, 0x9a, 0x9e, 0xb3, 0x11, 0xd2, 0x43, 0xf9, - 0xd7, 0x94, 0x2f, 0x8d, 0x6f, 0x53, 0xef, 0x42, 0xff, 00, - 0x8a, 0x9a, 0x95, 0x3e, 0x20, 0x4a, 0xbf, 0x79, 0x18, 0x7e, - 0x6, 0xb3, 0x79, 0x6c, 0xfa, 0x32, 0x7d, 0xae, 0x22, 0x3b, - 0xd2, 0x67, 0xaa, 0xad, 0xd4, 0x8b, 0xd2, 0x56, 0x1f, 0x8d, - 0x4c, 0x9a, 0xa5, 0xda, 0x7d, 0xdb, 0x89, 0x7, 0xd1, 0xab, - 0xcb, 0x23, 0xf8, 0x88, 0xbd, 0xc1, 0x15, 0x66, 0x3f, 0x88, - 0x50, 0x9e, 0xac, 0x6b, 0x37, 0x97, 0x55, 0x5d, 0x3, 0xeb, - 0xb5, 0x23, 0xbc, 0x64, 0x8f, 0x51, 0x8f, 0xc4, 0x3a, 0x8c, - 0x47, 0x2b, 0x75, 0x27, 0xfd, 0xf4, 0x6a, 0xdc, 0x5e, 0x33, - 0xd6, 0x22, 0xfb, 0xb7, 0x8e, 0x3f, 0x1a, 0xf2, 0xd8, 0xfc, - 0x7d, 0x6e, 0x7f, 0x8c, 0xd4, 0xeb, 0xe3, 0xab, 0x6c, 0x64, - 0xcb, 0x8a, 0xcf, 0xea, 0x35, 0xa3, 0xb2, 0x34, 0x59, 0xa4, - 0xa3, 0xd6, 0x4b, 0xef, 0x3d, 0x56, 0x1f, 0x88, 0x9a, 0xe4, - 0x3d, 0x2e, 0xd8, 0xfd, 0x4d, 0x5e, 0x8f, 0xe2, 0xe6, 0xbd, - 0x7, 0xfc, 0xbc, 0xd7, 0x8b, 0x5c, 0x7c, 0x42, 0xb4, 0x88, - 0x1f, 0xde, 0xd6, 0x16, 0xa7, 0xf1, 0x4e, 0xde, 0x30, 0x76, - 0x36, 0xe3, 0x5d, 0x14, 0xf0, 0x78, 0xa7, 0xb3, 0x6b, 0xe6, - 0xcd, 0x16, 0x73, 0x5f, 0x6a, 0x6e, 0x4c, 0xfa, 0x2f, 0xfe, - 0x17, 0xe6, 0xb1, 0x62, 0x32, 0xd3, 0xee, 0x23, 0xde, 0xb8, - 0x5f, 0x88, 0x3f, 0xb4, 0xad, 0xfd, 0xed, 0x94, 0xd0, 0xbd, - 0xe3, 0x7c, 0xc3, 0x5, 0x1, 0xe2, 0xbe, 0x7b, 0xd6, 0x7e, - 0x22, 0xde, 0x5f, 0x16, 0x58, 0x89, 0x55, 0x35, 0x99, 0xe1, - 0xdf, 0xb, 0xf8, 0x87, 0xe2, 0x26, 0xbb, 0x6f, 0xa5, 0xe8, - 0xd6, 0x17, 0x3a, 0xae, 0xa3, 0x70, 0xdb, 0x63, 0x82, 0x4, - 0x2c, 0x4f, 0xf8, 0x1, 0xea, 0x78, 0x15, 0xed, 0xd0, 0xc0, - 0xd4, 0x4a, 0xd5, 0x66, 0xdf, 0x95, 0xcd, 0xe3, 0x8b, 0xcc, - 0x71, 0x5e, 0xe5, 0x49, 0xf2, 0xc5, 0xf4, 0xea, 0xc8, 0x7c, - 0x53, 0xe2, 0xcb, 0x9f, 0x10, 0x5d, 0x33, 0xb3, 0x33, 0x64, - 0xf0, 0x7, 0x7a, 0xfb, 0xf3, 0xf6, 0x15, 0xfd, 0x91, 0x66, - 0xf0, 0x1a, 0x45, 0xf1, 0xf, 0xc6, 0x76, 0x5e, 0x5f, 0x88, - 0xee, 0x13, 0x3a, 0x5d, 0x94, 0x87, 0x26, 0xce, 0x26, 0x5e, - 0x64, 0x71, 0xda, 0x46, 0x7, 0xa7, 0xf0, 0x8f, 0x73, 0xc6, - 0xcf, 0xec, 0xb3, 0xfb, 0xb, 0xe9, 0xff, 00, 0xc, 0x65, - 0xb7, 0xf1, 0x37, 0x8d, 0xd2, 0xdf, 0x57, 0xf1, 0x3a, 0x10, - 0xf6, 0xd6, 0x6a, 0x7c, 0xcb, 0x7b, 0x2e, 0x3a, 0x9c, 0x8c, - 0x3c, 0x9e, 0xfd, 0x7, 0x6c, 0xf5, 0xaf, 0xae, 0xab, 0xe9, - 0xf0, 0xf8, 0x75, 0x4, 0x9b, 0x5e, 0x88, 0xfd, 0xf, 0x26, - 0xca, 0x56, 0x12, 0x2a, 0xa5, 0x45, 0x67, 0xd1, 0x7f, 0x9f, - 0x98, 0x51, 0x45, 0x15, 0xe8, 0x1f, 0x58, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x21, 00, 0xf5, 0xa8, 0xa5, 0xb3, 0xb7, - 0x9b, 0xfd, 0x64, 0x11, 0xc9, 0xfe, 0xf2, 0x3, 0x45, 0x14, - 0xad, 0x71, 0x5a, 0xe5, 0x19, 0xfc, 0x2d, 0xa3, 0x5c, 0x92, - 0x66, 0xd2, 0x2c, 0x65, 0x27, 0xbb, 0xdb, 0x21, 0xfe, 0x95, - 0x9b, 0x71, 0xf0, 0xcf, 0xc2, 0x77, 0x44, 0x99, 0x7c, 0x3b, - 0xa6, 0xb1, 0x3f, 0xf4, 0xec, 0xa3, 0xf9, 0xa, 0x28, 0xa8, - 0x74, 0xe0, 0xf7, 0x8a, 0x33, 0x74, 0xa9, 0xcb, 0x78, 0xaf, - 0xb8, 0xc7, 0xbb, 0xf8, 0x13, 0xe0, 0x5b, 0xdc, 0xef, 0xf0, - 0xfd, 0xba, 0x93, 0xde, 0x36, 0x65, 0xfe, 0x46, 0xb1, 0xee, - 0xff, 00, 0x66, 0x4f, 0x1, 0x5d, 0x74, 0xd3, 0xa5, 0x87, - 0xfe, 0xb9, 0xcc, 0x7f, 0xae, 0x68, 0xa2, 0xb1, 0x78, 0x5a, - 0xf, 0x78, 0x2f, 0xb8, 0xc2, 0x58, 0x3c, 0x34, 0xb7, 0xa6, - 0xbe, 0xe4, 0x63, 0x5d, 0x7e, 0xc8, 0xbe, 0xa, 0x9f, 0xee, - 0x49, 0x7d, 0x17, 0xb0, 0x74, 0x3f, 0xfb, 0x2d, 0x64, 0x5d, - 0x7e, 0xc6, 0x1e, 0x19, 0x97, 0x3e, 0x4e, 0xa9, 0x77, 0x17, - 0xfb, 0xd1, 0xab, 0x7f, 0x85, 0x14, 0x56, 0x6f, 0x3, 0x86, - 0x7f, 0x60, 0xc5, 0xe5, 0xd8, 0x47, 0xff, 00, 0x2e, 0xd1, - 0x8b, 0x7b, 0xfb, 0x10, 0x69, 0xd2, 0x3, 0xe4, 0x6b, 0xdc, - 0xf6, 0x12, 0x5a, 0xff, 00, 0x83, 0x56, 0xd, 0xf7, 0xec, - 0x31, 0x71, 0x83, 0xf6, 0x7d, 0x5a, 0xca, 0x53, 0xd8, 0x49, - 0x1b, 0x2f, 0xf4, 0x34, 0x51, 0x59, 0xbc, 0xbb, 0xe, 0xf6, - 0x56, 0xf9, 0xb3, 0x27, 0x95, 0x61, 0x1f, 0xd9, 0xb7, 0xcd, - 0x98, 0x17, 0xdf, 0xb0, 0xce, 0xb8, 0xa0, 0xf9, 0x6d, 0xa7, - 0x4f, 0xec, 0xb2, 0x63, 0xf9, 0xa8, 0xae, 0x7e, 0xff, 00, - 0xf6, 0x24, 0xf1, 0x44, 0x59, 0xd9, 0xa5, 0xc1, 0x37, 0xbc, - 0x73, 0x47, 0xfd, 0x5a, 0x8a, 0x2b, 0x29, 0x65, 0xb4, 0xba, - 0x37, 0xf7, 0xff, 00, 0xc0, 0x39, 0xe5, 0x93, 0x61, 0xba, - 0x37, 0xf7, 0xff, 00, 0xc0, 0x30, 0x2f, 0x3f, 0x63, 0x6f, - 0x16, 0x43, 0xff, 00, 0x32, 0xfc, 0xed, 0xff, 00, 0x5c, - 0xd9, 0x5b, 0xf9, 0x1a, 0xc1, 0xbf, 0xfd, 0x94, 0x3c, 0x55, - 0x6d, 0x90, 0x7c, 0x3f, 0xa9, 0x8f, 0x75, 0x85, 0x98, 0x7e, - 0x82, 0x8a, 0x2b, 0x86, 0xa6, 0x16, 0x34, 0xf6, 0x93, 0xfe, - 0xbe, 0x47, 0x97, 0x5f, 0x2c, 0xa3, 0x4d, 0x68, 0xdf, 0xe1, - 0xfe, 0x46, 0xb, 0x7e, 0xcc, 0x1e, 0x23, 0xb9, 0x9f, 0xcb, - 0x5d, 0x1e, 0xfc, 0xbe, 0x7a, 0x1b, 0x77, 0x3f, 0xd2, 0xb4, - 0x34, 0xff, 00, 0xd8, 0x8f, 0xc7, 0x7a, 0xc4, 0xaa, 0xb0, - 0xe8, 0x57, 0x10, 0x8c, 0xfd, 0xfb, 0x8c, 0x44, 0xb8, 0xf5, - 0xf9, 0x88, 0xa2, 0x8a, 0x58, 0x7a, 0x4e, 0xa4, 0xac, 0xe4, - 0xff, 00, 0xf, 0xf2, 0x38, 0x68, 0x65, 0x54, 0x31, 0x4e, - 0xd3, 0x6d, 0x7a, 0x5b, 0xfc, 0x8f, 0x62, 0xf8, 0x79, 0xff, - 00, 0x4, 0xdc, 0x88, 0x3a, 0x5c, 0x78, 0xc3, 0x5c, 0x8, - 0xa0, 0x83, 0xf6, 0x3d, 0x34, 0x6e, 0x63, 0xec, 0x64, 0x61, - 0x81, 0xf8, 0x3, 0xf5, 0xaf, 0xae, 0x3e, 0x1d, 0xfc, 0x27, - 0xf0, 0xaf, 0xc2, 0xad, 0x29, 0x6c, 0x3c, 0x33, 0xa3, 0xdb, - 0xe9, 0xc9, 0x8c, 0x3c, 0xca, 0xbb, 0xa6, 0x97, 0xdd, 0xdc, - 0xf2, 0x68, 0xa2, 0xbe, 0x82, 0x14, 0x61, 0x4f, 0x6d, 0xcf, - 0xac, 0xc1, 0xe5, 0x98, 0x5c, 0xe, 0xb4, 0x61, 0xaf, 0x77, - 0xab, 0xfb, 0xff, 00, 0xc8, 0xeb, 0xa8, 0xa2, 0x8a, 0xd8, - 0xf5, 0x42, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0xf, - 0xff, 0xd9, 0}; - -static const char data_runtime_shtml[] = { - /* /runtime.shtml */ - 0x2f, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x20, 0x6f, 0x6e, 0x4c, 0x6f, 0x61, 0x64, - 0x3d, 0x22, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x73, - 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x28, - 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x6c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x68, 0x72, 0x65, 0x66, 0x3d, - 0x27, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x73, - 0x68, 0x74, 0x6d, 0x6c, 0x27, 0x26, 0x71, 0x75, 0x6f, 0x74, - 0x3b, 0x2c, 0x32, 0x30, 0x30, 0x30, 0x29, 0x22, 0x3e, 0xd, - 0xa, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, - 0x65, 0x3d, 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x3e, - 0xd, 0xa, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, - 0x22, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, - 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x53, - 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x72, 0x75, 0x6e, - 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x52, 0x75, 0x6e, 0x20, 0x54, 0x69, 0x6d, 0x65, - 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, - 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x73, - 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x54, 0x43, 0x50, 0x20, 0x53, 0x74, 0x61, 0x74, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, - 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61, 0x3e, - 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, - 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, - 0x66, 0x72, 0x65, 0x65, 0x72, 0x74, 0x6f, 0x73, 0x2e, 0x6f, - 0x72, 0x67, 0x2f, 0x22, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, - 0x54, 0x4f, 0x53, 0x20, 0x48, 0x6f, 0x6d, 0x65, 0x70, 0x61, - 0x67, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6f, 0x2e, 0x73, 0x68, - 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x49, 0x4f, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x6c, 0x6f, 0x67, 0x6f, 0x2e, 0x6a, 0x70, 0x67, 0x22, 0x3e, - 0x33, 0x37, 0x4b, 0x20, 0x6a, 0x70, 0x67, 0x3c, 0x2f, 0x61, - 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, - 0xd, 0xa, 0x3c, 0x68, 0x72, 0x3e, 0xd, 0xa, 0x3c, 0x62, - 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x32, - 0x3e, 0x52, 0x75, 0x6e, 0x2d, 0x74, 0x69, 0x6d, 0x65, 0x20, - 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, - 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0xd, 0xa, 0x50, 0x61, 0x67, - 0x65, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x72, 0x65, 0x66, - 0x72, 0x65, 0x73, 0x68, 0x20, 0x65, 0x76, 0x65, 0x72, 0x79, - 0x20, 0x32, 0x20, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, - 0x2e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x6e, - 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x63, 0x6f, - 0x75, 0x72, 0x69, 0x65, 0x72, 0x22, 0x3e, 0x3c, 0x70, 0x72, - 0x65, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x41, 0x62, - 0x73, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x25, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x3c, 0x62, - 0x72, 0x3e, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x3c, 0x62, 0x72, 0x3e, 0xd, 0xa, 0x25, 0x21, - 0x20, 0x72, 0x75, 0x6e, 0x2d, 0x74, 0x69, 0x6d, 0x65, 0xd, - 0xa, 0x3c, 0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, - 0x6f, 0x6e, 0x74, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, - 0x6e, 0x74, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, - 0x79, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, - 0x3e, 0xd, 0xa, 0xd, 0xa, 0}; - -static const char data_stats_shtml[] = { - /* /stats.shtml */ - 0x2f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x6e, - 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, - 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x61, 0x20, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, - 0x61, 0x73, 0x6b, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x52, 0x75, 0x6e, - 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, 0x74, 0x61, 0x74, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x43, 0x50, - 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, - 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, - 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, 0x65, 0x65, 0x72, - 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x22, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x20, 0x48, - 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, - 0x6a, 0x70, 0x67, 0x22, 0x3e, 0x33, 0x37, 0x4b, 0x20, 0x6a, - 0x70, 0x67, 0x3c, 0x2f, 0x61, 0x3e, 0xd, 0xa, 0x3c, 0x62, - 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x72, - 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, - 0xd, 0xa, 0x3c, 0x68, 0x32, 0x3e, 0x4e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, - 0x74, 0x69, 0x63, 0x73, 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0xd, - 0xa, 0x3c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x77, 0x69, - 0x64, 0x74, 0x68, 0x3d, 0x22, 0x33, 0x30, 0x30, 0x22, 0x20, - 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x3d, 0x22, 0x30, 0x22, - 0x3e, 0xd, 0xa, 0x3c, 0x74, 0x72, 0x3e, 0x3c, 0x74, 0x64, - 0x20, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x3d, 0x22, 0x6c, 0x65, - 0x66, 0x74, 0x22, 0x3e, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, - 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x63, 0x6f, 0x75, 0x72, - 0x69, 0x65, 0x72, 0x22, 0x3e, 0x3c, 0x70, 0x72, 0x65, 0x3e, - 0xd, 0xa, 0x49, 0x50, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, - 0x74, 0x73, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, - 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, 0xd, 0xa, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x64, 0x65, - 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x44, 0x72, 0x6f, 0x70, - 0x70, 0x65, 0x64, 0xd, 0xa, 0x49, 0x50, 0x20, 0x65, 0x72, - 0x72, 0x6f, 0x72, 0x73, 0x20, 0x20, 0x20, 0x20, 0x49, 0x50, - 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, 0x6c, 0x65, 0x6e, 0x67, - 0x74, 0x68, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x49, 0x50, 0x20, - 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x2c, 0x20, 0x68, 0x69, - 0x67, 0x68, 0x20, 0x62, 0x79, 0x74, 0x65, 0xd, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x49, 0x50, 0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, - 0x68, 0x2c, 0x20, 0x6c, 0x6f, 0x77, 0x20, 0x62, 0x79, 0x74, - 0x65, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x49, 0x50, 0x20, 0x66, - 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0xd, 0xa, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, - 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0xd, 0xa, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x57, 0x72, 0x6f, 0x6e, 0x67, 0x20, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0xd, 0xa, 0x49, - 0x43, 0x4d, 0x50, 0x9, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, - 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x72, 0x65, 0x63, - 0x65, 0x69, 0x76, 0x65, 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x73, 0x65, - 0x6e, 0x74, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, - 0x6b, 0x65, 0x74, 0x73, 0x20, 0x64, 0x72, 0x6f, 0x70, 0x70, - 0x65, 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x54, 0x79, 0x70, - 0x65, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0xd, 0xa, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, - 0x6d, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0xd, 0xa, - 0x54, 0x43, 0x50, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, - 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0xd, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, 0xd, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x64, - 0x72, 0x6f, 0x70, 0x70, 0x65, 0x64, 0xd, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x20, - 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0xd, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x44, 0x61, 0x74, 0x61, 0x20, 0x70, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x73, 0x20, 0x77, 0x69, 0x74, 0x68, 0x6f, 0x75, - 0x74, 0x20, 0x41, 0x43, 0x4b, 0x73, 0xd, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x52, 0x65, 0x73, 0x65, 0x74, 0x73, 0xd, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x52, 0x65, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, - 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x61, 0xd, 0xa, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x53, 0x79, 0x6e, 0x20, 0x74, 0x6f, 0x20, - 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x64, 0x20, 0x70, 0x6f, 0x72, - 0x74, 0xd, 0xa, 0x55, 0x44, 0x50, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x73, 0x20, 0x64, 0x72, 0x6f, 0x70, 0x70, 0x65, - 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x73, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, - 0x65, 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, - 0x6b, 0x65, 0x74, 0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, 0xd, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x73, 0x20, 0x63, 0x68, 0x6b, 0x65, 0x72, 0x72, 0xd, 0xa, - 0x9, 0x20, 0x20, 0x20, 0x20, 0x20, 0x4e, 0x6f, 0x20, 0x63, - 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, - 0x61, 0x76, 0x61, 0x6c, 0x69, 0x61, 0x62, 0x6c, 0x65, 0xd, - 0xa, 0x3c, 0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, - 0x6f, 0x6e, 0x74, 0x3e, 0x3c, 0x2f, 0x74, 0x64, 0x3e, 0x3c, - 0x74, 0x64, 0x3e, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, - 0x61, 0x63, 0x65, 0x3d, 0x22, 0x63, 0x6f, 0x75, 0x72, 0x69, - 0x65, 0x72, 0x22, 0x3e, 0x3c, 0x70, 0x72, 0x65, 0x3e, 0x25, - 0x21, 0x20, 0x6e, 0x65, 0x74, 0x2d, 0x73, 0x74, 0x61, 0x74, - 0x73, 0xd, 0xa, 0x3c, 0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, - 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0x3c, 0x2f, 0x74, 0x64, - 0x3e, 0x3c, 0x2f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x3e, 0xd, - 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xd, 0xa, - 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xd, 0xa, 0x3c, - 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, 0xa, 0}; - -static const char data_tcp_shtml[] = { - /* /tcp.shtml */ - 0x2f, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x6e, - 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, - 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x61, 0x20, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, - 0x61, 0x73, 0x6b, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x52, 0x75, 0x6e, - 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, 0x74, 0x61, 0x74, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x43, 0x50, - 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, - 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, - 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, 0x65, 0x65, 0x72, - 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x22, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x20, 0x48, - 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, - 0x6a, 0x70, 0x67, 0x22, 0x3e, 0x33, 0x37, 0x4b, 0x20, 0x6a, - 0x70, 0x67, 0x3c, 0x2f, 0x61, 0x3e, 0xd, 0xa, 0x3c, 0x62, - 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x72, - 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0xd, 0xa, 0x3c, - 0x68, 0x32, 0x3e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, - 0x20, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0xd, 0xa, 0x3c, - 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x74, 0x61, 0x62, 0x6c, 0x65, - 0x3e, 0xd, 0xa, 0x3c, 0x74, 0x72, 0x3e, 0x3c, 0x74, 0x68, - 0x3e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x3c, 0x2f, 0x74, 0x68, - 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x52, 0x65, 0x6d, 0x6f, 0x74, - 0x65, 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, - 0x53, 0x74, 0x61, 0x74, 0x65, 0x3c, 0x2f, 0x74, 0x68, 0x3e, - 0x3c, 0x74, 0x68, 0x3e, 0x52, 0x65, 0x74, 0x72, 0x61, 0x6e, - 0x73, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x3c, - 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x54, 0x69, - 0x6d, 0x65, 0x72, 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, - 0x68, 0x3e, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x3c, 0x2f, 0x74, - 0x68, 0x3e, 0x3c, 0x2f, 0x74, 0x72, 0x3e, 0xd, 0xa, 0x25, - 0x21, 0x20, 0x74, 0x63, 0x70, 0x2d, 0x63, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0xd, 0xa, 0x3c, - 0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, - 0x74, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, - 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, - 0xd, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, - 0xa, 0xd, 0xa, 0}; - -const struct httpd_fsdata_file file_404_html[] = {{NULL, data_404_html, data_404_html + 10, sizeof(data_404_html) - 10}}; - -const struct httpd_fsdata_file file_index_html[] = {{file_404_html, data_index_html, data_index_html + 12, sizeof(data_index_html) - 12}}; - -const struct httpd_fsdata_file file_index_shtml[] = {{file_index_html, data_index_shtml, data_index_shtml + 13, sizeof(data_index_shtml) - 13}}; - -const struct httpd_fsdata_file file_io_shtml[] = {{file_index_shtml, data_io_shtml, data_io_shtml + 10, sizeof(data_io_shtml) - 10}}; - -const struct httpd_fsdata_file file_logo_jpg[] = {{file_io_shtml, data_logo_jpg, data_logo_jpg + 10, sizeof(data_logo_jpg) - 10}}; - -const struct httpd_fsdata_file file_runtime_shtml[] = {{file_logo_jpg, data_runtime_shtml, data_runtime_shtml + 15, sizeof(data_runtime_shtml) - 15}}; - -const struct httpd_fsdata_file file_stats_shtml[] = {{file_runtime_shtml, data_stats_shtml, data_stats_shtml + 13, sizeof(data_stats_shtml) - 13}}; - -const struct httpd_fsdata_file file_tcp_shtml[] = {{file_stats_shtml, data_tcp_shtml, data_tcp_shtml + 11, sizeof(data_tcp_shtml) - 11}}; - -#define HTTPD_FS_ROOT file_tcp_shtml - -#define HTTPD_FS_NUMFILES 8 diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/WebServer/makefsdata b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/WebServer/makefsdata deleted file mode 100644 index a953cdd76..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/WebServer/makefsdata +++ /dev/null @@ -1,79 +0,0 @@ -#!/usr/bin/perl - -open(OUTPUT, "> httpd-fsdata.c"); - -chdir("httpd-fs"); - -opendir(DIR, "."); -@files = grep { !/^\./ && !/(CVS|~)/ } readdir(DIR); -closedir(DIR); - -foreach $file (@files) { - - if(-d $file && $file !~ /^\./) { - print "Processing directory $file\n"; - opendir(DIR, $file); - @newfiles = grep { !/^\./ && !/(CVS|~)/ } readdir(DIR); - closedir(DIR); - printf "Adding files @newfiles\n"; - @files = (@files, map { $_ = "$file/$_" } @newfiles); - next; - } -} - -foreach $file (@files) { - if(-f $file) { - - print "Adding file $file\n"; - - open(FILE, $file) || die "Could not open file $file\n"; - binmode FILE; - - $file =~ s-^-/-; - $fvar = $file; - $fvar =~ s-/-_-g; - $fvar =~ s-\.-_-g; - # for AVR, add PROGMEM here - print(OUTPUT "static const char data".$fvar."[] = {\n"); - print(OUTPUT "\t/* $file */\n\t"); - for($j = 0; $j < length($file); $j++) { - printf(OUTPUT "%#02x, ", unpack("C", substr($file, $j, 1))); - } - printf(OUTPUT "0,\n"); - - - $i = 0; - while(read(FILE, $data, 1)) { - if($i == 0) { - print(OUTPUT "\t"); - } - printf(OUTPUT "%#02x, ", unpack("C", $data)); - $i++; - if($i == 10) { - print(OUTPUT "\n"); - $i = 0; - } - } - print(OUTPUT "0};\n\n"); - close(FILE); - push(@fvars, $fvar); - push(@pfiles, $file); - } -} - -for($i = 0; $i < @fvars; $i++) { - $file = $pfiles[$i]; - $fvar = $fvars[$i]; - - if($i == 0) { - $prevfile = "NULL"; - } else { - $prevfile = "file" . $fvars[$i - 1]; - } - print(OUTPUT "const struct httpd_fsdata_file file".$fvar."[] = {{$prevfile, data$fvar, "); - print(OUTPUT "data$fvar + ". (length($file) + 1) .", "); - print(OUTPUT "sizeof(data$fvar) - ". (length($file) + 1) ."}};\n\n"); -} - -print(OUTPUT "#define HTTPD_FS_ROOT file$fvars[$i - 1]\n\n"); -print(OUTPUT "#define HTTPD_FS_NUMFILES $i\n"); diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/WebServer/uip-conf.h b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/WebServer/uip-conf.h deleted file mode 100644 index 004bbb59a..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/WebServer/uip-conf.h +++ /dev/null @@ -1,161 +0,0 @@ -/** - * \addtogroup uipopt - * @{ - */ - -/** - * \name Project-specific configuration options - * @{ - * - * uIP has a number of configuration options that can be overridden - * for each project. These are kept in a project-specific uip-conf.h - * file and all configuration names have the prefix UIP_CONF. - */ - -/* - * Copyright (c) 2006, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: uip-conf.h,v 1.6 2006/06/12 08:00:31 adam Exp $ - */ - -/** - * \file - * An example uIP configuration file - * \author - * Adam Dunkels - */ - -#ifndef __UIP_CONF_H__ -#define __UIP_CONF_H__ - -#define UIP_CONF_EXTERNAL_BUFFER -#define UIP_CONF_PROCESS_HTTPD_FORMS 1 - -/** - * 8 bit datatype - * - * This typedef defines the 8-bit type used throughout uIP. - * - * \hideinitializer - */ -typedef unsigned char u8_t; - -/** - * 16 bit datatype - * - * This typedef defines the 16-bit type used throughout uIP. - * - * \hideinitializer - */ -typedef unsigned short u16_t; - -typedef unsigned long u32_t; - -/** - * Statistics datatype - * - * This typedef defines the dataype used for keeping statistics in - * uIP. - * - * \hideinitializer - */ -typedef unsigned short uip_stats_t; - -/** - * Maximum number of TCP connections. - * - * \hideinitializer - */ -#define UIP_CONF_MAX_CONNECTIONS 40 - -/** - * Maximum number of listening TCP ports. - * - * \hideinitializer - */ -#define UIP_CONF_MAX_LISTENPORTS 40 - -/** - * uIP buffer size. - * - * \hideinitializer - */ -#define UIP_CONF_BUFFER_SIZE 1480 - -/** - * CPU byte order. - * - * \hideinitializer - */ -#define UIP_CONF_BYTE_ORDER LITTLE_ENDIAN - -/** - * Logging on or off - * - * \hideinitializer - */ -#define UIP_CONF_LOGGING 0 - -/** - * UDP support on or off - * - * \hideinitializer - */ -#define UIP_CONF_UDP 0 - -/** - * UDP checksums on or off - * - * \hideinitializer - */ -#define UIP_CONF_UDP_CHECKSUMS 1 - -/** - * uIP statistics on or off - * - * \hideinitializer - */ -#define UIP_CONF_STATISTICS 1 - -/* Here we include the header file for the application(s) we use in - our project. */ -/*#include "smtp.h"*/ -/*#include "hello-world.h"*/ -/*#include "telnetd.h"*/ -#include "webserver.h" -/*#include "dhcpc.h"*/ -/*#include "resolv.h"*/ -/*#include "webclient.h"*/ - -#define CCIF -#endif /* __UIP_CONF_H__ */ - -/** @} */ -/** @} */ diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/WebServer/webserver.h b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/WebServer/webserver.h deleted file mode 100644 index 5267f0587..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/WebServer/webserver.h +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright (c) 2002, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials provided - * with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: webserver.h,v 1.2 2006/06/11 21:46:38 adam Exp $ - * - */ -#ifndef __WEBSERVER_H__ -#define __WEBSERVER_H__ - -#include "apps/httpd/httpd.h" - -typedef struct httpd_state uip_tcp_appstate_t; -/* UIP_APPCALL: the name of the application function. This function - must return void and take no arguments (i.e., C type "void - appfunc(void)"). */ -#define UIP_APPCALL httpd_appcall - - -#endif /* __WEBSERVER_H__ */ diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/main-blinky.c b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/main-blinky.c deleted file mode 100644 index 22fbd0ea9..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/main-blinky.c +++ /dev/null @@ -1,366 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* - * main-blinky.c is included when the "Blinky" build configuration is used. - * main-full.c is included when the "Full" build configuration is used. - * - * main-blinky.c (this file) defines a very simple demo that creates two tasks, - * one queue, and one timer. It also demonstrates how Cortex-M3 interrupts can - * interact with FreeRTOS tasks/timers. - * - * This simple demo project runs on the SmartFusion A2F-EVAL-KIT evaluation - * board, which is populated with an A2F200M3F SmartFusion mixed signal FPGA. - * The A2F200M3F incorporates a Cortex-M3 microcontroller. - * - * The idle hook function: - * The idle hook function demonstrates how to query the amount of FreeRTOS heap - * space that is remaining (see vApplicationIdleHook() defined in this file). - * - * The main() Function: - * main() creates one software timer, one queue, and two tasks. It then starts - * the scheduler. - * - * The Queue Send Task: - * The queue send task is implemented by the prvQueueSendTask() function in - * this file. prvQueueSendTask() sits in a loop that causes it to repeatedly - * block for 200 milliseconds, before sending the value 100 to the queue that - * was created within main(). Once the value is sent, the task loops back - * around to block for another 200 milliseconds. - * - * The Queue Receive Task: - * The queue receive task is implemented by the prvQueueReceiveTask() function - * in this file. prvQueueReceiveTask() sits in a loop that causes it to - * repeatedly attempt to read data from the queue that was created within - * main(). When data is received, the task checks the value of the data, and - * if the value equals the expected 100, toggles the green LED. The 'block - * time' parameter passed to the queue receive function specifies that the task - * should be held in the Blocked state indefinitely to wait for data to be - * available on the queue. The queue receive task will only leave the Blocked - * state when the queue send task writes to the queue. As the queue send task - * writes to the queue every 200 milliseconds, the queue receive task leaves - * the Blocked state every 200 milliseconds, and therefore toggles the LED - * every 200 milliseconds. - * - * The LED Software Timer and the Button Interrupt: - * The user button SW1 is configured to generate an interrupt each time it is - * pressed. The interrupt service routine switches an LED on, and resets the - * LED software timer. The LED timer has a 5000 millisecond (5 second) period, - * and uses a callback function that is defined to just turn the LED off again. - * Therefore, pressing the user button will turn the LED on, and the LED will - * remain on until a full five seconds pass without the button being pressed. - */ - -/* Kernel includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "queue.h" -#include "timers.h" - -/* Microsemi drivers/libraries. */ -#include "mss_gpio.h" -#include "mss_watchdog.h" - - -/* Priorities at which the tasks are created. */ -#define mainQUEUE_RECEIVE_TASK_PRIORITY ( tskIDLE_PRIORITY + 2 ) -#define mainQUEUE_SEND_TASK_PRIORITY ( tskIDLE_PRIORITY + 1 ) - -/* The rate at which data is sent to the queue, specified in milliseconds, and -converted to ticks using the portTICK_PERIOD_MS constant. */ -#define mainQUEUE_SEND_FREQUENCY_MS ( 200 / portTICK_PERIOD_MS ) - -/* The number of items the queue can hold. This is 1 as the receive task -will remove items as they are added, meaning the send task should always find -the queue empty. */ -#define mainQUEUE_LENGTH ( 1 ) - -/* The LED toggle by the queue receive task. */ -#define mainTASK_CONTROLLED_LED 0x01UL - -/* The LED turned on by the button interrupt, and turned off by the LED timer. */ -#define mainTIMER_CONTROLLED_LED 0x02UL - -/*-----------------------------------------------------------*/ - -/* - * Setup the NVIC, LED outputs, and button inputs. - */ -static void prvSetupHardware( void ); - -/* - * The tasks as described in the comments at the top of this file. - */ -static void prvQueueReceiveTask( void *pvParameters ); -static void prvQueueSendTask( void *pvParameters ); - -/* - * The LED timer callback function. This does nothing but switch off the - * LED defined by the mainTIMER_CONTROLLED_LED constant. - */ -static void vLEDTimerCallback( TimerHandle_t xTimer ); - -/*-----------------------------------------------------------*/ - -/* The queue used by both tasks. */ -static QueueHandle_t xQueue = NULL; - -/* The LED software timer. This uses vLEDTimerCallback() as its callback -function. */ -static TimerHandle_t xLEDTimer = NULL; - -/* Maintains the current LED output state. */ -static volatile unsigned long ulGPIOState = 0UL; - -/*-----------------------------------------------------------*/ - -int main(void) -{ - /* Configure the NVIC, LED outputs and button inputs. */ - prvSetupHardware(); - - /* Create the queue. */ - xQueue = xQueueCreate( mainQUEUE_LENGTH, sizeof( unsigned long ) ); - - if( xQueue != NULL ) - { - /* Start the two tasks as described in the comments at the top of this - file. */ - xTaskCreate( prvQueueReceiveTask, "Rx", configMINIMAL_STACK_SIZE, NULL, mainQUEUE_RECEIVE_TASK_PRIORITY, NULL ); - xTaskCreate( prvQueueSendTask, "TX", configMINIMAL_STACK_SIZE, NULL, mainQUEUE_SEND_TASK_PRIORITY, NULL ); - - /* Create the software timer that is responsible for turning off the LED - if the button is not pushed within 5000ms, as described at the top of - this file. */ - xLEDTimer = xTimerCreate( "LEDTimer", /* A text name, purely to help debugging. */ - ( 5000 / portTICK_PERIOD_MS ), /* The timer period, in this case 5000ms (5s). */ - pdFALSE, /* This is a one-shot timer, so xAutoReload is set to pdFALSE. */ - ( void * ) 0, /* The ID is not used, so can be set to anything. */ - vLEDTimerCallback /* The callback function that switches the LED off. */ - ); - - /* Start the tasks and timer running. */ - vTaskStartScheduler(); - } - - /* If all is well, the scheduler will now be running, and the following line - will never be reached. If the following line does execute, then there was - insufficient FreeRTOS heap memory available for the idle and/or timer tasks - to be created. See the memory management section on the FreeRTOS web site - for more details. */ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -static void vLEDTimerCallback( TimerHandle_t xTimer ) -{ - /* The timer has expired - so no button pushes have occurred in the last - five seconds - turn the LED off. NOTE - accessing the LED port should use - a critical section because it is accessed from multiple tasks, and the - button interrupt - in this trivial case, for simplicity, the critical - section is omitted. */ - ulGPIOState |= mainTIMER_CONTROLLED_LED; - MSS_GPIO_set_outputs( ulGPIOState ); -} -/*-----------------------------------------------------------*/ - -/* The ISR executed when the user button is pushed. */ -void GPIO8_IRQHandler( void ) -{ -portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE; - - /* The button was pushed, so ensure the LED is on before resetting the - LED timer. The LED timer will turn the LED off if the button is not - pushed within 5000ms. */ - ulGPIOState &= ~mainTIMER_CONTROLLED_LED; - MSS_GPIO_set_outputs( ulGPIOState ); - - /* This interrupt safe FreeRTOS function can be called from this interrupt - because the interrupt priority is below the - configMAX_SYSCALL_INTERRUPT_PRIORITY setting in FreeRTOSConfig.h. */ - xTimerResetFromISR( xLEDTimer, &xHigherPriorityTaskWoken ); - - /* Clear the interrupt before leaving. */ - MSS_GPIO_clear_irq( MSS_GPIO_8 ); - - /* If calling xTimerResetFromISR() caused a task (in this case the timer - service/daemon task) to unblock, and the unblocked task has a priority - higher than or equal to the task that was interrupted, then - xHigherPriorityTaskWoken will now be set to pdTRUE, and calling - portEND_SWITCHING_ISR() will ensure the unblocked task runs next. */ - portEND_SWITCHING_ISR( xHigherPriorityTaskWoken ); -} -/*-----------------------------------------------------------*/ - -static void prvQueueSendTask( void *pvParameters ) -{ -TickType_t xNextWakeTime; -const unsigned long ulValueToSend = 100UL; - - /* Initialise xNextWakeTime - this only needs to be done once. */ - xNextWakeTime = xTaskGetTickCount(); - - for( ;; ) - { - /* Place this task in the blocked state until it is time to run again. - The block time is specified in ticks, the constant used converts ticks - to ms. While in the Blocked state this task will not consume any CPU - time. */ - vTaskDelayUntil( &xNextWakeTime, mainQUEUE_SEND_FREQUENCY_MS ); - - /* Send to the queue - causing the queue receive task to unblock and - toggle an LED. 0 is used as the block time so the sending operation - will not block - it shouldn't need to block as the queue should always - be empty at this point in the code. */ - xQueueSend( xQueue, &ulValueToSend, 0 ); - } -} -/*-----------------------------------------------------------*/ - -static void prvQueueReceiveTask( void *pvParameters ) -{ -unsigned long ulReceivedValue; - - for( ;; ) - { - /* Wait until something arrives in the queue - this task will block - indefinitely provided INCLUDE_vTaskSuspend is set to 1 in - FreeRTOSConfig.h. */ - xQueueReceive( xQueue, &ulReceivedValue, portMAX_DELAY ); - - /* To get here something must have been received from the queue, but - is it the expected value? If it is, toggle the green LED. */ - if( ulReceivedValue == 100UL ) - { - /* NOTE - accessing the LED port should use a critical section - because it is accessed from multiple tasks, and the button interrupt - - in this trivial case, for simplicity, the critical section is - omitted. */ - if( ( ulGPIOState & mainTASK_CONTROLLED_LED ) != 0 ) - { - ulGPIOState &= ~mainTASK_CONTROLLED_LED; - } - else - { - ulGPIOState |= mainTASK_CONTROLLED_LED; - } - MSS_GPIO_set_outputs( ulGPIOState ); - } - } -} -/*-----------------------------------------------------------*/ - -static void prvSetupHardware( void ) -{ - SystemCoreClockUpdate(); - - /* Disable the Watch Dog Timer */ - MSS_WD_disable( ); - - /* Initialise the GPIO */ - MSS_GPIO_init(); - - /* Set up GPIO for the LEDs. */ - MSS_GPIO_config( MSS_GPIO_0 , MSS_GPIO_OUTPUT_MODE ); - MSS_GPIO_config( MSS_GPIO_1 , MSS_GPIO_OUTPUT_MODE ); - MSS_GPIO_config( MSS_GPIO_2 , MSS_GPIO_OUTPUT_MODE ); - MSS_GPIO_config( MSS_GPIO_3 , MSS_GPIO_OUTPUT_MODE ); - MSS_GPIO_config( MSS_GPIO_4 , MSS_GPIO_OUTPUT_MODE ); - MSS_GPIO_config( MSS_GPIO_5 , MSS_GPIO_OUTPUT_MODE ); - MSS_GPIO_config( MSS_GPIO_6 , MSS_GPIO_OUTPUT_MODE ); - MSS_GPIO_config( MSS_GPIO_7 , MSS_GPIO_OUTPUT_MODE ); - - /* All LEDs start off. */ - ulGPIOState = 0xffffffffUL; - MSS_GPIO_set_outputs( ulGPIOState ); - - /* Setup the GPIO and the NVIC for the switch used in this simple demo. */ - NVIC_SetPriority( GPIO8_IRQn, configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY ); - NVIC_EnableIRQ( GPIO8_IRQn ); - MSS_GPIO_config( MSS_GPIO_8, MSS_GPIO_INPUT_MODE | MSS_GPIO_IRQ_EDGE_NEGATIVE ); - MSS_GPIO_enable_irq( MSS_GPIO_8 ); -} -/*-----------------------------------------------------------*/ - -void vApplicationMallocFailedHook( void ) -{ - /* Called if a call to pvPortMalloc() fails because there is insufficient - free memory available in the FreeRTOS heap. pvPortMalloc() is called - internally by FreeRTOS API functions that create tasks, queues, software - timers, and semaphores. The size of the FreeRTOS heap is set by the - configTOTAL_HEAP_SIZE configuration constant in FreeRTOSConfig.h. */ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -void vApplicationStackOverflowHook( TaskHandle_t pxTask, char *pcTaskName ) -{ - ( void ) pcTaskName; - ( void ) pxTask; - - /* Run time stack overflow checking is performed if - configconfigCHECK_FOR_STACK_OVERFLOW is defined to 1 or 2. This hook - function is called if a stack overflow is detected. */ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -void vApplicationIdleHook( void ) -{ -volatile size_t xFreeHeapSpace; - - /* This function is called on each cycle of the idle task. In this case it - does nothing useful, other than report the amout of FreeRTOS heap that - remains unallocated. */ - xFreeHeapSpace = xPortGetFreeHeapSize(); - - if( xFreeHeapSpace > 100 ) - { - /* By now, the kernel has allocated everything it is going to, so - if there is a lot of heap remaining unallocated then - the value of configTOTAL_HEAP_SIZE in FreeRTOSConfig.h can be - reduced accordingly. */ - } -} -/*-----------------------------------------------------------*/ - -void vMainConfigureTimerForRunTimeStats( void ) -{ - /* This function is not used by the Blinky build configuration, but needs - to be defined as the Blinky and Full build configurations share a - FreeRTOSConfig.h header file. */ -} -/*-----------------------------------------------------------*/ - -unsigned long ulGetRunTimeCounterValue( void ) -{ - /* This function is not used by the Blinky build configuration, but needs - to be defined as the Blinky and Full build configurations share a - FreeRTOSConfig.h header file. */ - return 0UL; -} - diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/main-full.c b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/main-full.c deleted file mode 100644 index b5abfb55b..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/main-full.c +++ /dev/null @@ -1,623 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* - * main-blinky.c is included when the "Blinky" build configuration is used. - * main-full.c is included when the "Full" build configuration is used. - * - * main-full.c (this file) defines a comprehensive demo that creates many - * tasks, queues, semaphores and timers. It also demonstrates how Cortex-M3 - * interrupts can interact with FreeRTOS tasks/timers, and implements a simple - * and small interactive web server. - * - * This project runs on the SmartFusion A2F-EVAL-KIT evaluation board, which - * is populated with an A2F200M3F SmartFusion mixed signal FPGA. The A2F200M3F - * incorporates a Cortex-M3 microcontroller. - * - * The main() Function: - * main() creates two demo specific software timers, one demo specific queue, - * and three demo specific tasks. It then creates a whole host of 'standard - * demo' tasks/queues/semaphores, before starting the scheduler. The demo - * specific tasks and timers are described in the comments here. The standard - * demo tasks are described on the FreeRTOS.org web site. - * - * The standard demo tasks provide no specific functionality. They are - * included to both test the FreeRTOS port, and provide examples of how the - * various FreeRTOS API functions can be used. - * - * The Demo Specific Queue Send Task: - * The queue send task is implemented by the prvQueueSendTask() function in - * this file. prvQueueSendTask() sits in a loop that causes it to repeatedly - * block for 200 milliseconds, before sending the value 100 to the queue that - * was created within main(). Once the value is sent, the task loops back - * around to block for another 200 milliseconds. - * - * The Demo Specific Queue Receive Task: - * The queue receive task is implemented by the prvQueueReceiveTask() function - * in this file. prvQueueReceiveTask() sits in a loop that causes it to - * repeatedly attempt to read data from the queue that was created within - * main(). When data is received, the task checks the value of the data, and - * if the value equals the expected 100, toggles the green LED. The 'block - * time' parameter passed to the queue receive function specifies that the task - * should be held in the Blocked state indefinitely to wait for data to be - * available on the queue. The queue receive task will only leave the Blocked - * state when the queue send task writes to the queue. As the queue send task - * writes to the queue every 200 milliseconds, the queue receive task leaves - * the Blocked state every 200 milliseconds, and therefore toggles the LED - * every 200 milliseconds. - * - * The Demo Specific OLED Task: - * The OLED task is a very simple task that just scrolls a message across the - * OLED. Ideally this would be done in a timer, but the OLED driver accesses - * the I2C which is time consuming. - * - * The Demo Specific LED Software Timer and the Button Interrupt: - * The user button SW1 is configured to generate an interrupt each time it is - * pressed. The interrupt service routine switches an LED on, and resets the - * LED software timer. The LED timer has a 5000 millisecond (5 second) period, - * and uses a callback function that is defined to just turn the LED off again. - * Therefore, pressing the user button will turn the LED on, and the LED will - * remain on until a full five seconds pass without the button being pressed. - * - * The Demo Specific "Check" Callback Function: - * This is called each time the 'check' timer expires. The check timer - * callback function inspects all the standard demo tasks to see if they are - * all executing as expected. The check timer is initially configured to - * expire every three seconds, but will shorted this to every 500ms if an error - * is ever discovered. The check timer callback toggles the LED defined by - * the mainCHECK_LED definition each time it executes. Therefore, if LED - * mainCHECK_LED is toggling every three seconds, then no error have been found. - * If LED mainCHECK_LED is toggling every 500ms, then at least one errors has - * been found. The task in which the error was discovered is displayed at the - * bottom of the "task stats" page that is served by the embedded web server. - * - * The Demo Specific Idle Hook Function: - * The idle hook function demonstrates how to query the amount of FreeRTOS heap - * space that is remaining (see vApplicationIdleHook() defined in this file). - * - * The Web Server Task: - * The IP address used by the SmartFusion target is configured by the - * definitions configIP_ADDR0 to configIP_ADDR3, which are located in the - * FreeRTOSConfig.h header file. See the documentation page for this example - * on the http://www.FreeRTOS.org web site for further connection information. - */ - -/* Kernel includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "queue.h" -#include "timers.h" - -/* Microsemi drivers/libraries includes. */ -#include "mss_gpio.h" -#include "mss_watchdog.h" -#include "mss_timer.h" -#include "mss_ace.h" -#include "oled.h" - -/* Common demo includes. */ -#include "partest.h" -#include "flash.h" -#include "BlockQ.h" -#include "death.h" -#include "blocktim.h" -#include "semtest.h" -#include "GenQTest.h" -#include "QPeek.h" -#include "recmutex.h" -#include "TimerDemo.h" - -/* Priorities at which the tasks are created. */ -#define mainQUEUE_RECEIVE_TASK_PRIORITY ( tskIDLE_PRIORITY + 2 ) -#define mainQUEUE_SEND_TASK_PRIORITY ( tskIDLE_PRIORITY + 1 ) - -/* The rate at which data is sent to the queue, specified in milliseconds, and -converted to ticks using the portTICK_PERIOD_MS constant. */ -#define mainQUEUE_SEND_FREQUENCY_MS ( 200 / portTICK_PERIOD_MS ) - -/* The number of items the queue can hold. This is 1 as the receive task -will remove items as they are added, meaning the send task should always find -the queue empty. */ -#define mainQUEUE_LENGTH ( 1 ) - -/* The LED toggled by the check timer callback function. */ -#define mainCHECK_LED 0x07UL - -/* The LED turned on by the button interrupt, and turned off by the LED timer. */ -#define mainTIMER_CONTROLLED_LED 0x06UL - -/* The LED toggle by the queue receive task. */ -#define mainTASK_CONTROLLED_LED 0x05UL - -/* Constant used by the standard timer test functions. */ -#define mainTIMER_TEST_PERIOD ( 50 ) - -/* Priorities used by the various different tasks. */ -#define mainCHECK_TASK_PRIORITY ( configMAX_PRIORITIES - 1 ) -#define mainQUEUE_POLL_PRIORITY ( tskIDLE_PRIORITY + 1 ) -#define mainSEM_TEST_PRIORITY ( tskIDLE_PRIORITY + 1 ) -#define mainBLOCK_Q_PRIORITY ( tskIDLE_PRIORITY + 2 ) -#define mainCREATOR_TASK_PRIORITY ( tskIDLE_PRIORITY + 3 ) -#define mainFLASH_TASK_PRIORITY ( tskIDLE_PRIORITY + 1 ) -#define mainuIP_TASK_PRIORITY ( tskIDLE_PRIORITY + 2 ) -#define mainOLED_TASK_PRIORITY ( tskIDLE_PRIORITY + 1 ) -#define mainINTEGER_TASK_PRIORITY ( tskIDLE_PRIORITY ) -#define mainGEN_QUEUE_TASK_PRIORITY ( tskIDLE_PRIORITY ) - -/* The WEB server uses string handling functions, which in turn use a bit more -stack than most of the other tasks. */ -#define mainuIP_STACK_SIZE ( configMINIMAL_STACK_SIZE * 3 ) - -/* The period at which the check timer will expire, in ms, provided no errors -have been reported by any of the standard demo tasks. */ -#define mainCHECK_TIMER_PERIOD_MS ( 3000UL / portTICK_PERIOD_MS ) - -/* The period at which the OLED timer will expire. Each time it expires, it's -callback function updates the OLED text. */ -#define mainOLED_PERIOD_MS ( 75UL / portTICK_PERIOD_MS ) - -/* The period at which the check timer will expire, in ms, if an error has been -reported in one of the standard demo tasks. */ -#define mainERROR_CHECK_TIMER_PERIOD_MS ( 500UL / portTICK_PERIOD_MS ) - -/* The LED will remain on until the button has not been pushed for a full -5000ms. */ -#define mainLED_TIMER_PERIOD_MS ( 5000UL / portTICK_PERIOD_MS ) - -/* A zero block time. */ -#define mainDONT_BLOCK ( 0UL ) -/*-----------------------------------------------------------*/ - -/* - * Setup the NVIC, LED outputs, and button inputs. - */ -static void prvSetupHardware( void ); - -/* - * The tasks as described in the comments at the top of this file. - */ -static void prvQueueReceiveTask( void *pvParameters ); -static void prvQueueSendTask( void *pvParameters ); - -/* - * The LED timer callback function. This does nothing but switch the red LED - * off. - */ -static void prvLEDTimerCallback( TimerHandle_t xTimer ); - -/* - * The check timer callback function, as described at the top of this file. - */ -static void prvCheckTimerCallback( TimerHandle_t xTimer ); - -/* - * This is not a 'standard' partest function, so the prototype is not in - * partest.h, and is instead included here. - */ -void vParTestSetLEDFromISR( unsigned portBASE_TYPE uxLED, signed portBASE_TYPE xValue ); - -/* - * Contains the implementation of the WEB server. - */ -extern void vuIP_Task( void *pvParameters ); - -/* - * A very simply task that does nothing but scroll the OLED display. Ideally - * this would be done within a timer, but it accesses the I2C port which is - * time consuming. - */ -static void prvOLEDTask( void * pvParameters); - -/*-----------------------------------------------------------*/ - -/* The queue used by both application specific demo tasks defined in this file. */ -static QueueHandle_t xQueue = NULL; - -/* The LED software timer. This uses prvLEDTimerCallback() as it's callback -function. */ -static TimerHandle_t xLEDTimer = NULL; - -/* The check timer. This uses prvCheckTimerCallback() as it's callback -function. */ -static TimerHandle_t xCheckTimer = NULL; - -/* The status message that is displayed at the bottom of the "task stats" web -page, which is served by the uIP task. This will report any errors picked up -by the check timer callback. */ -static const char *pcStatusMessage = NULL; - -/*-----------------------------------------------------------*/ - -int main(void) -{ - /* Configure the NVIC, LED outputs and button inputs. */ - prvSetupHardware(); - - /* Create the queue. */ - xQueue = xQueueCreate( mainQUEUE_LENGTH, sizeof( unsigned long ) ); - - if( xQueue != NULL ) - { - /* Start the three application specific demo tasks, as described in the - comments at the top of this file. */ - xTaskCreate( prvQueueReceiveTask, "Rx", configMINIMAL_STACK_SIZE, NULL, mainQUEUE_RECEIVE_TASK_PRIORITY, NULL ); - xTaskCreate( prvQueueSendTask, "TX", configMINIMAL_STACK_SIZE, NULL, mainQUEUE_SEND_TASK_PRIORITY, NULL ); - xTaskCreate( prvOLEDTask, "OLED", configMINIMAL_STACK_SIZE, NULL, mainOLED_TASK_PRIORITY, NULL ); - - /* Create the software timer that is responsible for turning off the LED - if the button is not pushed within 5000ms, as described at the top of - this file. */ - xLEDTimer = xTimerCreate( "LEDTimer", /* A text name, purely to help debugging. */ - ( mainLED_TIMER_PERIOD_MS ), /* The timer period, in this case 5000ms (5s). */ - pdFALSE, /* This is a one-shot timer, so xAutoReload is set to pdFALSE. */ - ( void * ) 0, /* The ID is not used, so can be set to anything. */ - prvLEDTimerCallback /* The callback function that switches the LED off. */ - ); - - /* Create the software timer that performs the 'check' functionality, - as described at the top of this file. */ - xCheckTimer = xTimerCreate( "CheckTimer", /* A text name, purely to help debugging. */ - ( mainCHECK_TIMER_PERIOD_MS ), /* The timer period, in this case 3000ms (3s). */ - pdTRUE, /* This is an auto-reload timer, so xAutoReload is set to pdTRUE. */ - ( void * ) 0, /* The ID is not used, so can be set to anything. */ - prvCheckTimerCallback /* The callback function that inspects the status of all the other tasks. */ - ); - - /* Create a lot of 'standard demo' tasks. */ - vStartBlockingQueueTasks( mainBLOCK_Q_PRIORITY ); - vCreateBlockTimeTasks(); - vStartSemaphoreTasks( mainSEM_TEST_PRIORITY ); - vStartGenericQueueTasks( mainGEN_QUEUE_TASK_PRIORITY ); - vStartLEDFlashTasks( mainFLASH_TASK_PRIORITY ); - vStartQueuePeekTasks(); - vStartRecursiveMutexTasks(); - vStartTimerDemoTask( mainTIMER_TEST_PERIOD ); - - /* Create the web server task. */ - xTaskCreate( vuIP_Task, "uIP", mainuIP_STACK_SIZE, NULL, mainuIP_TASK_PRIORITY, NULL ); - - /* The suicide tasks must be created last, as they need to know how many - tasks were running prior to their creation in order to ascertain whether - or not the correct/expected number of tasks are running at any given - time. */ - vCreateSuicidalTasks( mainCREATOR_TASK_PRIORITY ); - - /* Start the tasks and timer running. */ - vTaskStartScheduler(); - } - - /* If all is well, the scheduler will now be running, and the following line - will never be reached. If the following line does execute, then there was - insufficient FreeRTOS heap memory available for the idle and/or timer tasks - to be created. See the memory management section on the FreeRTOS web site - for more details. */ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -static void prvCheckTimerCallback( TimerHandle_t xTimer ) -{ - /* Check the standard demo tasks are running without error. Latch the - latest reported error in the pcStatusMessage character pointer. */ - if( xAreGenericQueueTasksStillRunning() != pdTRUE ) - { - pcStatusMessage = "Error: GenQueue"; - } - - if( xAreQueuePeekTasksStillRunning() != pdTRUE ) - { - pcStatusMessage = "Error: QueuePeek\r\n"; - } - - if( xAreBlockingQueuesStillRunning() != pdTRUE ) - { - pcStatusMessage = "Error: BlockQueue\r\n"; - } - - if( xAreBlockTimeTestTasksStillRunning() != pdTRUE ) - { - pcStatusMessage = "Error: BlockTime\r\n"; - } - - if( xAreSemaphoreTasksStillRunning() != pdTRUE ) - { - pcStatusMessage = "Error: SemTest\r\n"; - } - - if( xIsCreateTaskStillRunning() != pdTRUE ) - { - pcStatusMessage = "Error: Death\r\n"; - } - - if( xAreRecursiveMutexTasksStillRunning() != pdTRUE ) - { - pcStatusMessage = "Error: RecMutex\r\n"; - } - - if( xAreTimerDemoTasksStillRunning( ( mainCHECK_TIMER_PERIOD_MS ) ) != pdTRUE ) - { - pcStatusMessage = "Error: TimerDemo"; - } - - /* Toggle the check LED to give an indication of the system status. If - the LED toggles every mainCHECK_TIMER_PERIOD_MS milliseconds then - everything is ok. A faster toggle indicates an error. */ - vParTestToggleLED( mainCHECK_LED ); - - /* Have any errors been latch in pcStatusMessage? If so, shorten the - period of the check timer to mainERROR_CHECK_TIMER_PERIOD_MS milliseconds. - This will result in an increase in the rate at which mainCHECK_LED - toggles. */ - if( pcStatusMessage != NULL ) - { - /* This call to xTimerChangePeriod() uses a zero block time. Functions - called from inside of a timer callback function must *never* attempt - to block. */ - xTimerChangePeriod( xCheckTimer, ( mainERROR_CHECK_TIMER_PERIOD_MS ), mainDONT_BLOCK ); - } -} -/*-----------------------------------------------------------*/ - -static void prvLEDTimerCallback( TimerHandle_t xTimer ) -{ - /* The timer has expired - so no button pushes have occurred in the last - five seconds - turn the LED off. */ - vParTestSetLED( mainTIMER_CONTROLLED_LED, pdFALSE ); -} -/*-----------------------------------------------------------*/ - -/* The ISR executed when the user button is pushed. */ -void GPIO8_IRQHandler( void ) -{ -portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE; - - /* The button was pushed, so ensure the LED is on before resetting the - LED timer. The LED timer will turn the LED off if the button is not - pushed within 5000ms. */ - vParTestSetLEDFromISR( mainTIMER_CONTROLLED_LED, pdTRUE ); - - /* This interrupt safe FreeRTOS function can be called from this interrupt - because the interrupt priority is below the - configMAX_SYSCALL_INTERRUPT_PRIORITY setting in FreeRTOSConfig.h. */ - xTimerResetFromISR( xLEDTimer, &xHigherPriorityTaskWoken ); - - /* Clear the interrupt before leaving. */ - MSS_GPIO_clear_irq( MSS_GPIO_8 ); - - /* If calling xTimerResetFromISR() caused a task (in this case the timer - service/daemon task) to unblock, and the unblocked task has a priority - higher than or equal to the task that was interrupted, then - xHigherPriorityTaskWoken will now be set to pdTRUE, and calling - portEND_SWITCHING_ISR() will ensure the unblocked task runs next. */ - portEND_SWITCHING_ISR( xHigherPriorityTaskWoken ); -} -/*-----------------------------------------------------------*/ - -static void prvQueueSendTask( void *pvParameters ) -{ -TickType_t xNextWakeTime; -const unsigned long ulValueToSend = 100UL; - - /* The timer command queue will have been filled when the timer test tasks - were created in main() (this is part of the test they perform). Therefore, - while the check timer can be created in main(), it cannot be started from - main(). Once the scheduler has started, the timer service task will drain - the command queue, and now the check timer can be started successfully. */ - xTimerStart( xCheckTimer, portMAX_DELAY ); - - /* Initialise xNextWakeTime - this only needs to be done once. */ - xNextWakeTime = xTaskGetTickCount(); - - for( ;; ) - { - /* Place this task in the blocked state until it is time to run again. - The block time is specified in ticks, the constant used converts ticks - to ms. While in the Blocked state this task will not consume any CPU - time. */ - vTaskDelayUntil( &xNextWakeTime, mainQUEUE_SEND_FREQUENCY_MS ); - - /* Send to the queue - causing the queue receive task to unblock and - toggle an LED. 0 is used as the block time so the sending operation - will not block - it shouldn't need to block as the queue should always - be empty at this point in the code. */ - xQueueSend( xQueue, &ulValueToSend, mainDONT_BLOCK ); - } -} -/*-----------------------------------------------------------*/ - -static void prvQueueReceiveTask( void *pvParameters ) -{ -unsigned long ulReceivedValue; - - for( ;; ) - { - /* Wait until something arrives in the queue - this task will block - indefinitely provided INCLUDE_vTaskSuspend is set to 1 in - FreeRTOSConfig.h. */ - xQueueReceive( xQueue, &ulReceivedValue, portMAX_DELAY ); - - /* To get here something must have been received from the queue, but - is it the expected value? If it is, toggle the LED. */ - if( ulReceivedValue == 100UL ) - { - vParTestToggleLED( mainTASK_CONTROLLED_LED ); - } - } -} -/*-----------------------------------------------------------*/ - -static void prvOLEDTask( void * pvParameters) -{ -static struct oled_data xOLEDData; -static unsigned char ucOffset1 = 0, ucOffset2 = 5; -static TickType_t xLastScrollTime = 0UL; - - /* Initialise the display. */ - OLED_init(); - - /* Initialise the parts of the oled_data structure that do not change. */ - xOLEDData.line1 = FIRST_LINE; - xOLEDData.string1 = " www.FreeRTOS.org"; - xOLEDData.line2 = SECOND_LINE; - xOLEDData.string2 = " www.FreeRTOS.org"; - xOLEDData.contrast_val = OLED_CONTRAST_VAL; - xOLEDData.on_off = OLED_HORIZ_SCROLL_OFF; - xOLEDData.column_scrool_per_step = OLED_HORIZ_SCROLL_STEP; - xOLEDData.start_page = OLED_START_PAGE; - xOLEDData.time_intrval_btw_scroll_step = OLED_HORIZ_SCROLL_TINVL; - xOLEDData.end_page = OLED_END_PAGE; - - - /* Initialise the last scroll time. This only needs to be done once, - because from this point on it will get automatically updated in the - xTaskDelayUntil() API function. */ - xLastScrollTime = xTaskGetTickCount(); - - for( ;; ) - { - /* Wait until it is time to update the OLED again. */ - vTaskDelayUntil( &xLastScrollTime, mainOLED_PERIOD_MS ); - - xOLEDData.char_offset1 = ucOffset1++; - xOLEDData.char_offset2 = ucOffset2++; - - OLED_write_data( &xOLEDData, BOTH_LINES ); - } -} -/*-----------------------------------------------------------*/ - -static void prvSetupHardware( void ) -{ - SystemCoreClockUpdate(); - - /* Disable the Watch Dog Timer */ - MSS_WD_disable( ); - - /* Configure the GPIO for the LEDs. */ - vParTestInitialise(); - - /* ACE Initialization */ - ACE_init(); - - /* Setup the GPIO and the NVIC for the switch used in this simple demo. */ - NVIC_SetPriority( GPIO8_IRQn, configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY ); - NVIC_EnableIRQ( GPIO8_IRQn ); - MSS_GPIO_config( MSS_GPIO_8, MSS_GPIO_INPUT_MODE | MSS_GPIO_IRQ_EDGE_NEGATIVE ); - MSS_GPIO_enable_irq( MSS_GPIO_8 ); -} -/*-----------------------------------------------------------*/ - -void vApplicationMallocFailedHook( void ) -{ - /* Called if a call to pvPortMalloc() fails because there is insufficient - free memory available in the FreeRTOS heap. pvPortMalloc() is called - internally by FreeRTOS API functions that create tasks, queues, software - timers, and semaphores. The size of the FreeRTOS heap is set by the - configTOTAL_HEAP_SIZE configuration constant in FreeRTOSConfig.h. */ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -void vApplicationStackOverflowHook( TaskHandle_t pxTask, char *pcTaskName ) -{ - ( void ) pcTaskName; - ( void ) pxTask; - - /* Run time stack overflow checking is performed if - configconfigCHECK_FOR_STACK_OVERFLOW is defined to 1 or 2. This hook - function is called if a stack overflow is detected. */ - taskDISABLE_INTERRUPTS(); - for( ;; ); -} -/*-----------------------------------------------------------*/ - -void vApplicationIdleHook( void ) -{ -volatile size_t xFreeStackSpace; - - /* This function is called on each cycle of the idle task. In this case it - does nothing useful, other than report the amount of FreeRTOS heap that - remains unallocated. */ - xFreeStackSpace = xPortGetFreeHeapSize(); - - if( xFreeStackSpace > 100 ) - { - /* By now, the kernel has allocated everything it is going to, so - if there is a lot of heap remaining unallocated then - the value of configTOTAL_HEAP_SIZE in FreeRTOSConfig.h can be - reduced accordingly. */ - } -} -/*-----------------------------------------------------------*/ - -char *pcGetTaskStatusMessage( void ) -{ - /* Not bothered about a critical section here although technically because - of the task priorities the pointer could change it will be atomic if not - near atomic and its not critical. */ - if( pcStatusMessage == NULL ) - { - return "All tasks running without error"; - } - else - { - return ( char * ) pcStatusMessage; - } -} -/*-----------------------------------------------------------*/ - -void vMainConfigureTimerForRunTimeStats( void ) -{ -const unsigned long ulMax32BitValue = 0xffffffffUL; - - MSS_TIM64_init( MSS_TIMER_PERIODIC_MODE ); - MSS_TIM64_load_immediate( ulMax32BitValue, ulMax32BitValue ); - MSS_TIM64_start(); -} -/*-----------------------------------------------------------*/ - -unsigned long ulGetRunTimeCounterValue( void ) -{ -unsigned long long ullCurrentValue; -const unsigned long long ulMax64BitValue = 0xffffffffffffffffULL; -unsigned long *pulHighWord, *pulLowWord; - - pulHighWord = ( unsigned long * ) &ullCurrentValue; - pulLowWord = pulHighWord++; - - MSS_TIM64_get_current_value( ( uint32_t * ) pulHighWord, ( uint32_t * ) pulLowWord ); - - /* Convert the down count into an upcount. */ - ullCurrentValue = ulMax64BitValue - ullCurrentValue; - - /* Scale to a 32bit number of suitable frequency. */ - ullCurrentValue >>= 13; - - /* Just return 32 bits. */ - return ( unsigned long ) ullCurrentValue; -} - diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/printf-stdarg.c b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/printf-stdarg.c deleted file mode 100644 index 46713639c..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/printf-stdarg.c +++ /dev/null @@ -1,293 +0,0 @@ -/* - Copyright 2001, 2002 Georges Menie (www.menie.org) - stdarg version contributed by Christian Ettinger - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU Lesser General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -*/ - -/* - putchar is the only external dependency for this file, - if you have a working putchar, leave it commented out. - If not, uncomment the define below and - replace outbyte(c) by your own function call. - -*/ - -#define putchar(c) c - -#include - -static void printchar(char **str, int c) -{ - //extern int putchar(int c); - - if (str) { - **str = (char)c; - ++(*str); - } - else - { - (void)putchar(c); - } -} - -#define PAD_RIGHT 1 -#define PAD_ZERO 2 - -static int prints(char **out, const char *string, int width, int pad) -{ - register int pc = 0, padchar = ' '; - - if (width > 0) { - register int len = 0; - register const char *ptr; - for (ptr = string; *ptr; ++ptr) ++len; - if (len >= width) width = 0; - else width -= len; - if (pad & PAD_ZERO) padchar = '0'; - } - if (!(pad & PAD_RIGHT)) { - for ( ; width > 0; --width) { - printchar (out, padchar); - ++pc; - } - } - for ( ; *string ; ++string) { - printchar (out, *string); - ++pc; - } - for ( ; width > 0; --width) { - printchar (out, padchar); - ++pc; - } - - return pc; -} - -/* the following should be enough for 32 bit int */ -#define PRINT_BUF_LEN 12 - -static int printi(char **out, int i, int b, int sg, int width, int pad, int letbase) -{ - char print_buf[PRINT_BUF_LEN]; - register char *s; - register int t, neg = 0, pc = 0; - register unsigned int u = (unsigned int)i; - - if (i == 0) { - print_buf[0] = '0'; - print_buf[1] = '\0'; - return prints (out, print_buf, width, pad); - } - - if (sg && b == 10 && i < 0) { - neg = 1; - u = (unsigned int)-i; - } - - s = print_buf + PRINT_BUF_LEN-1; - *s = '\0'; - - while (u) { - t = (unsigned int)u % b; - if( t >= 10 ) - t += letbase - '0' - 10; - *--s = (char)(t + '0'); - u /= b; - } - - if (neg) { - if( width && (pad & PAD_ZERO) ) { - printchar (out, '-'); - ++pc; - --width; - } - else { - *--s = '-'; - } - } - - return pc + prints (out, s, width, pad); -} - -static int print( char **out, const char *format, va_list args ) -{ - register int width, pad; - register int pc = 0; - char scr[2]; - - for (; *format != 0; ++format) { - if (*format == '%') { - ++format; - width = pad = 0; - if (*format == '\0') break; - if (*format == '%') goto out; - if (*format == '-') { - ++format; - pad = PAD_RIGHT; - } - while (*format == '0') { - ++format; - pad |= PAD_ZERO; - } - for ( ; *format >= '0' && *format <= '9'; ++format) { - width *= 10; - width += *format - '0'; - } - if( *format == 's' ) { - register char *s = (char *)va_arg( args, int ); - pc += prints (out, s?s:"(null)", width, pad); - continue; - } - if( *format == 'd' ) { - pc += printi (out, va_arg( args, int ), 10, 1, width, pad, 'a'); - continue; - } - if( *format == 'x' ) { - pc += printi (out, va_arg( args, int ), 16, 0, width, pad, 'a'); - continue; - } - if( *format == 'X' ) { - pc += printi (out, va_arg( args, int ), 16, 0, width, pad, 'A'); - continue; - } - if( *format == 'u' ) { - pc += printi (out, va_arg( args, int ), 10, 0, width, pad, 'a'); - continue; - } - if( *format == 'c' ) { - /* char are converted to int then pushed on the stack */ - scr[0] = (char)va_arg( args, int ); - scr[1] = '\0'; - pc += prints (out, scr, width, pad); - continue; - } - } - else { - out: - printchar (out, *format); - ++pc; - } - } - if (out) **out = '\0'; - va_end( args ); - return pc; -} - -int printf(const char *format, ...) -{ - va_list args; - - va_start( args, format ); - return print( 0, format, args ); -} - -int sprintf(char *out, const char *format, ...) -{ - va_list args; - - va_start( args, format ); - return print( &out, format, args ); -} - - -int snprintf( char *buf, unsigned int count, const char *format, ... ) -{ - va_list args; - - ( void ) count; - - va_start( args, format ); - return print( &buf, format, args ); -} - - -#ifdef TEST_PRINTF -int main(void) -{ - char *ptr = "Hello world!"; - char *np = 0; - int i = 5; - unsigned int bs = sizeof(int)*8; - int mi; - char buf[80]; - - mi = (1 << (bs-1)) + 1; - printf("%s\n", ptr); - printf("printf test\n"); - printf("%s is null pointer\n", np); - printf("%d = 5\n", i); - printf("%d = - max int\n", mi); - printf("char %c = 'a'\n", 'a'); - printf("hex %x = ff\n", 0xff); - printf("hex %02x = 00\n", 0); - printf("signed %d = unsigned %u = hex %x\n", -3, -3, -3); - printf("%d %s(s)%", 0, "message"); - printf("\n"); - printf("%d %s(s) with %%\n", 0, "message"); - sprintf(buf, "justif: \"%-10s\"\n", "left"); printf("%s", buf); - sprintf(buf, "justif: \"%10s\"\n", "right"); printf("%s", buf); - sprintf(buf, " 3: %04d zero padded\n", 3); printf("%s", buf); - sprintf(buf, " 3: %-4d left justif.\n", 3); printf("%s", buf); - sprintf(buf, " 3: %4d right justif.\n", 3); printf("%s", buf); - sprintf(buf, "-3: %04d zero padded\n", -3); printf("%s", buf); - sprintf(buf, "-3: %-4d left justif.\n", -3); printf("%s", buf); - sprintf(buf, "-3: %4d right justif.\n", -3); printf("%s", buf); - - return 0; -} - -/* - * if you compile this file with - * gcc -Wall $(YOUR_C_OPTIONS) -DTEST_PRINTF -c printf.c - * you will get a normal warning: - * printf.c:214: warning: spurious trailing `%' in format - * this line is testing an invalid % at the end of the format string. - * - * this should display (on 32bit int machine) : - * - * Hello world! - * printf test - * (null) is null pointer - * 5 = 5 - * -2147483647 = - max int - * char a = 'a' - * hex ff = ff - * hex 00 = 00 - * signed -3 = unsigned 4294967293 = hex fffffffd - * 0 message(s) - * 0 message(s) with % - * justif: "left " - * justif: " right" - * 3: 0003 zero padded - * 3: 3 left justif. - * 3: 3 right justif. - * -3: -003 zero padded - * -3: -3 left justif. - * -3: -3 right justif. - */ - -#endif - - -/* To keep linker happy. */ -int __write( int i, char* c, int n) -{ - (void)i; - (void)n; - (void)c; - return 0; -} - diff --git a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/uIP_Task.c b/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/uIP_Task.c deleted file mode 100644 index ac95dc997..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_IAR_and_Keil/uIP_Task.c +++ /dev/null @@ -1,412 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* Standard includes. */ -#include - -/* Scheduler includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "queue.h" -#include "timers.h" - -/* uip includes. */ -#include "net/uip.h" -#include "net/uip_arp.h" -#include "apps/httpd/httpd.h" -#include "sys/timer.h" -#include "net/clock-arch.h" - -/* Demo includes. */ -#include "ParTest.h" - -/* Hardware driver includes. */ -#include "mss_ethernet_mac_regs.h" -#include "mss_ethernet_mac.h" - -/* The buffer used by the uIP stack to both receive and send. In this case, -because the Ethernet driver has been modified to be zero copy - the uip_buf -variable is just a pointer to an Ethernet buffer, and not a buffer in its own -right. */ -extern unsigned char *uip_buf; - -/* The ARP timer and the periodic timer share a callback function, so the -respective timer IDs are used to determine which timer actually expired. These -constants are assigned to the timer IDs. */ -#define uipARP_TIMER 0 -#define uipPERIODIC_TIMER 1 - -/* The length of the queue used to send events from timers or the Ethernet -driver to the uIP stack. */ -#define uipEVENT_QUEUE_LENGTH 10 - -/* A block time of zero simply means "don't block". */ -#define uipDONT_BLOCK 0UL - -/* How long to wait before attempting to connect the MAC again. */ -#define uipINIT_WAIT ( 100 / portTICK_PERIOD_MS ) - -/* Shortcut to the header within the Rx buffer. */ -#define xHeader ((struct uip_eth_hdr *) &uip_buf[ 0 ]) - -/* Standard constant. */ -#define uipTOTAL_FRAME_HEADER_SIZE 54 - -/*-----------------------------------------------------------*/ - -/* - * Setup the MAC address in the MAC itself, and in the uIP stack. - */ -static void prvSetMACAddress( void ); - -/* - * Perform any uIP initialisation required to ready the stack for http - * processing. - */ -static void prvInitialise_uIP( void ); - -/* - * Handles Ethernet interrupt events. - */ -static void prvEMACEventListener( unsigned long ulISREvents ); - -/* - * The callback function that is assigned to both the periodic timer and the - * ARP timer. - */ -static void prvUIPTimerCallback( TimerHandle_t xTimer ); - -/* - * Initialise the MAC hardware. - */ -static void prvInitEmac( void ); - -/* - * Write data to the Ethener. Note that this actually writes data twice for the - * to get around delayed ack issues when communicating with a non real-time - * peer (for example, a Windows machine). - */ -void vEMACWrite( void ); - -/* - * Port functions required by the uIP stack. - */ -clock_time_t clock_time( void ); - -/*-----------------------------------------------------------*/ - -/* The queue used to send TCP/IP events to the uIP stack. */ -QueueHandle_t xEMACEventQueue = NULL; - -/*-----------------------------------------------------------*/ - -clock_time_t clock_time( void ) -{ - return xTaskGetTickCount(); -} -/*-----------------------------------------------------------*/ - -void vuIP_Task( void *pvParameters ) -{ -portBASE_TYPE i; -unsigned long ulNewEvent = 0UL, ulUIP_Events = 0UL; -long lPacketLength; - - /* Just to prevent compiler warnings about the unused parameter. */ - ( void ) pvParameters; - - /* Initialise the uIP stack, configuring for web server usage. */ - prvInitialise_uIP(); - - /* Initialise the MAC and PHY. */ - prvInitEmac(); - - for( ;; ) - { - /* Is there received data ready to be processed? */ - lPacketLength = MSS_MAC_rx_packet(); - - /* Statements to be executed if data has been received on the Ethernet. */ - if( ( lPacketLength > 0 ) && ( uip_buf != NULL ) ) - { - uip_len = ( u16_t ) lPacketLength; - - /* Standard uIP loop taken from the uIP manual. */ - if( xHeader->type == htons( UIP_ETHTYPE_IP ) ) - { - uip_arp_ipin(); - uip_input(); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - uip_arp_out(); - vEMACWrite(); - } - } - else if( xHeader->type == htons( UIP_ETHTYPE_ARP ) ) - { - uip_arp_arpin(); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - vEMACWrite(); - } - } - } - else - { - /* Clear the RX event latched in ulUIP_Events - if one was latched. */ - ulUIP_Events &= ~uipETHERNET_RX_EVENT; - } - - /* Statements to be executed if the TCP/IP period timer has expired. */ - if( ( ulUIP_Events & uipPERIODIC_TIMER_EVENT ) != 0UL ) - { - ulUIP_Events &= ~uipPERIODIC_TIMER_EVENT; - - if( uip_buf != NULL ) - { - for( i = 0; i < UIP_CONNS; i++ ) - { - uip_periodic( i ); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - uip_arp_out(); - vEMACWrite(); - } - } - } - } - - /* Statements to be executed if the ARP timer has expired. */ - if( ( ulUIP_Events & uipARP_TIMER_EVENT ) != 0 ) - { - ulUIP_Events &= ~uipARP_TIMER_EVENT; - uip_arp_timer(); - } - - /* If all latched events have been cleared - block until another event - occurs. */ - if( ulUIP_Events == pdFALSE ) - { - xQueueReceive( xEMACEventQueue, &ulNewEvent, portMAX_DELAY ); - ulUIP_Events |= ulNewEvent; - } - } -} -/*-----------------------------------------------------------*/ - -static void prvSetMACAddress( void ) -{ -struct uip_eth_addr xAddr; - - /* Configure the MAC address in the uIP stack. */ - xAddr.addr[ 0 ] = configMAC_ADDR0; - xAddr.addr[ 1 ] = configMAC_ADDR1; - xAddr.addr[ 2 ] = configMAC_ADDR2; - xAddr.addr[ 3 ] = configMAC_ADDR3; - xAddr.addr[ 4 ] = configMAC_ADDR4; - xAddr.addr[ 5 ] = configMAC_ADDR5; - uip_setethaddr( xAddr ); -} -/*-----------------------------------------------------------*/ - -static void prvInitialise_uIP( void ) -{ -uip_ipaddr_t xIPAddr; -TimerHandle_t xARPTimer, xPeriodicTimer; - - uip_init(); - uip_ipaddr( &xIPAddr, configIP_ADDR0, configIP_ADDR1, configIP_ADDR2, configIP_ADDR3 ); - uip_sethostaddr( &xIPAddr ); - uip_ipaddr( &xIPAddr, configNET_MASK0, configNET_MASK1, configNET_MASK2, configNET_MASK3 ); - uip_setnetmask( &xIPAddr ); - prvSetMACAddress(); - httpd_init(); - - /* Create the queue used to sent TCP/IP events to the uIP stack. */ - xEMACEventQueue = xQueueCreate( uipEVENT_QUEUE_LENGTH, sizeof( unsigned long ) ); - - /* Create and start the uIP timers. */ - xARPTimer = xTimerCreate( "ARPTimer", /* Just a name that is helpful for debugging, not used by the kernel. */ - ( 10000UL / portTICK_PERIOD_MS ), /* Timer period. */ - pdTRUE, /* Autor-reload. */ - ( void * ) uipARP_TIMER, - prvUIPTimerCallback - ); - - xPeriodicTimer = xTimerCreate( "PeriodicTimer", - ( 500UL / portTICK_PERIOD_MS ), - pdTRUE, /* Autor-reload. */ - ( void * ) uipPERIODIC_TIMER, - prvUIPTimerCallback - ); - - /* Sanity check that the timers were indeed created. */ - configASSERT( xARPTimer ); - configASSERT( xPeriodicTimer ); - - /* These commands will block indefinitely until they succeed, so there is - no point in checking their return values. */ - xTimerStart( xARPTimer, portMAX_DELAY ); - xTimerStart( xPeriodicTimer, portMAX_DELAY ); -} -/*-----------------------------------------------------------*/ - -static void prvEMACEventListener( unsigned long ulISREvents ) -{ -long lHigherPriorityTaskWoken = pdFALSE; -const unsigned long ulRxEvent = uipETHERNET_RX_EVENT; - - /* Sanity check that the event queue was indeed created. */ - configASSERT( xEMACEventQueue ); - - if( ( ulISREvents & MSS_MAC_EVENT_PACKET_SEND ) != 0UL ) - { - /* An Ethernet Tx event has occurred. */ - MSS_MAC_FreeTxBuffers(); - } - - if( ( ulISREvents & MSS_MAC_EVENT_PACKET_RECEIVED ) != 0UL ) - { - /* An Ethernet Rx event has occurred. */ - xQueueSendFromISR( xEMACEventQueue, &ulRxEvent, &lHigherPriorityTaskWoken ); - } - - portEND_SWITCHING_ISR( lHigherPriorityTaskWoken ); -} -/*-----------------------------------------------------------*/ - -static void prvInitEmac( void ) -{ -const unsigned char ucPHYAddress = 1; - - /* Initialise the MAC and PHY hardware. */ - MSS_MAC_init( ucPHYAddress ); - - /* Register the event listener. The Ethernet interrupt handler will call - this listener whenever an Rx or a Tx interrupt occurs. */ - MSS_MAC_set_callback( ( MSS_MAC_callback_t ) prvEMACEventListener ); - - /* Setup the EMAC and the NVIC for MAC interrupts. */ - NVIC_SetPriority( EthernetMAC_IRQn, configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY ); - NVIC_EnableIRQ( EthernetMAC_IRQn ); -} -/*-----------------------------------------------------------*/ - -void vEMACWrite( void ) -{ -const long lMaxAttempts = 10; -long lAttempt; -const TickType_t xShortDelay = ( 5 / portTICK_PERIOD_MS ); - - /* Try to send data to the Ethernet. Keep trying for a while if data cannot - be sent immediately. Note that this will actually cause the data to be sent - twice to get around delayed ACK problems when communicating with non real- - time TCP/IP stacks (such as a Windows machine). */ - for( lAttempt = 0; lAttempt < lMaxAttempts; lAttempt++ ) - { - if( MSS_MAC_tx_packet( uip_len ) != 0 ) - { - break; - } - else - { - vTaskDelay( xShortDelay ); - } - } -} -/*-----------------------------------------------------------*/ - -static void prvUIPTimerCallback( TimerHandle_t xTimer ) -{ -static const unsigned long ulARPTimerExpired = uipARP_TIMER_EVENT; -static const unsigned long ulPeriodicTimerExpired = uipPERIODIC_TIMER_EVENT; - - /* This is a time callback, so calls to xQueueSend() must not attempt to - block. As this callback is assigned to both the ARP and Periodic timers, the - first thing to do is ascertain which timer it was that actually expired. */ - switch( ( int ) pvTimerGetTimerID( xTimer ) ) - { - case uipARP_TIMER : xQueueSend( xEMACEventQueue, &ulARPTimerExpired, uipDONT_BLOCK ); - break; - - case uipPERIODIC_TIMER : xQueueSend( xEMACEventQueue, &ulPeriodicTimerExpired, uipDONT_BLOCK ); - break; - - default : /* Should not get here. */ - break; - } -} -/*-----------------------------------------------------------*/ - -void vApplicationProcessFormInput( char *pcInputString ) -{ -char *c; - - /* Only interested in processing form input if this is the IO page. */ - c = strstr( pcInputString, "io.shtml" ); - - if( c ) - { - /* Is there a command in the string? */ - c = strstr( pcInputString, "?" ); - if( c ) - { - /* Turn the LED's on or off in accordance with the check box status. */ - if( strstr( c, "LED0=1" ) != NULL ) - { - /* Turn the LEDs on. */ - vParTestSetLED( 3, 1 ); - vParTestSetLED( 4, 1 ); - } - else - { - /* Turn the LEDs off. */ - vParTestSetLED( 3, 0 ); - vParTestSetLED( 4, 0 ); - } - } - else - { - /* Commands to turn LEDs off are not always explicit. */ - vParTestSetLED( 3, 0 ); - vParTestSetLED( 4, 0 ); - } - } -} -/*-----------------------------------------------------------*/ diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/.cproject b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/.cproject deleted file mode 100644 index 07e7c98f1..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/.cproject +++ /dev/null @@ -1,1271 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/.project b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/.project deleted file mode 100644 index cf07b3fb8..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/.project +++ /dev/null @@ -1,85 +0,0 @@ - - - RTOSDemo - - - - - - org.eclipse.cdt.managedbuilder.core.genmakebuilder - clean,full,incremental, - - - ?children? - ?name?=outputEntries\|?children?=?name?=entry\\\\\\\|\\\|?name?=entry\\\\\\\|\\\|\|| - - - ?name? - - - - org.eclipse.cdt.make.core.append_environment - true - - - org.eclipse.cdt.make.core.autoBuildTarget - all - - - org.eclipse.cdt.make.core.buildArguments - - - - org.eclipse.cdt.make.core.buildCommand - make - - - org.eclipse.cdt.make.core.buildLocation - ${workspace_loc:/RTOSDemo/Debug} - - - org.eclipse.cdt.make.core.cleanBuildTarget - clean - - - org.eclipse.cdt.make.core.contents - org.eclipse.cdt.make.core.activeConfigSettings - - - org.eclipse.cdt.make.core.enableAutoBuild - true - - - org.eclipse.cdt.make.core.enableCleanBuild - true - - - org.eclipse.cdt.make.core.enableFullBuild - true - - - org.eclipse.cdt.make.core.fullBuildTarget - all - - - org.eclipse.cdt.make.core.stopOnError - true - - - org.eclipse.cdt.make.core.useDefaultBuildCmd - true - - - - - org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder - - - - - - org.eclipse.cdt.core.cnature - org.eclipse.cdt.managedbuilder.core.managedBuildNature - org.eclipse.cdt.managedbuilder.core.ScannerConfigNature - - diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/.settings/org.eclipse.ltk.core.refactoring.prefs b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/.settings/org.eclipse.ltk.core.refactoring.prefs deleted file mode 100644 index c1e59b5eb..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/.settings/org.eclipse.ltk.core.refactoring.prefs +++ /dev/null @@ -1,3 +0,0 @@ -#Sun Apr 03 18:36:27 BST 2011 -eclipse.preferences.version=1 -org.eclipse.ltk.core.refactoring.enable.project.refactoring.history=false diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/CreateProjectDirectoryStructure.bat b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/CreateProjectDirectoryStructure.bat deleted file mode 100644 index 14eb3a922..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/CreateProjectDirectoryStructure.bat +++ /dev/null @@ -1,84 +0,0 @@ -REM This file should be executed from the command line prior to the first -REM build. It will be necessary to refresh the Eclipse project once the -REM .bat file has been executed (normally just press F5 to refresh). - -REM Copies all the required files from their location within the standard -REM FreeRTOS directory structure to under the Eclipse project directory. -REM This permits the Eclipse project to be used in 'managed' mode and without -REM having to setup any linked resources. - -REM Have the files already been copied? -IF EXIST FreeRTOS_Source Goto END - - REM Create the required directory structure. - MD FreeRTOS_Source - MD FreeRTOS_Source\include - MD FreeRTOS_Source\portable\GCC - MD FreeRTOS_Source\portable\GCC\ARM_CM3 - MD FreeRTOS_Source\portable\MemMang - MD FreeTCPIP - MD FreeTCPIP\http_Common - MD FreeTCPIP\apps - MD FreeTCPIP\apps\httpd - MD FreeTCPIP\net - MD FreeTCPIP\sys - MD Common_Demo_Tasks - MD Common_Demo_Tasks\include - - REM Copy the core kernel files. - copy ..\..\Source\tasks.c FreeRTOS_Source - copy ..\..\Source\queue.c FreeRTOS_Source - copy ..\..\Source\list.c FreeRTOS_Source - copy ..\..\Source\timers.c FreeRTOS_Source - - REM Copy the common header files - copy ..\..\Source\include\*.* FreeRTOS_Source\include - - REM Copy the portable layer files - copy ..\..\Source\portable\GCC\ARM_CM3\*.* FreeRTOS_Source\portable\GCC\ARM_CM3 - - REM Copy the basic memory allocation files - copy ..\..\Source\portable\MemMang\heap_2.c FreeRTOS_Source\portable\MemMang - - REM Copy the core FreeTCPIP (based on uIP) files - copy ..\Common\ethernet\FreeTCPIP\psock.c FreeTCPIP - copy ..\Common\ethernet\FreeTCPIP\timer.c FreeTCPIP - copy ..\Common\ethernet\FreeTCPIP\uip.c FreeTCPIP - copy ..\Common\ethernet\FreeTCPIP\uip_arp.c FreeTCPIP - - REM Copy the FreeTCPIP (based on uIP) header files - copy ..\Common\ethernet\FreeTCPIP\apps\httpd\*.h FreeTCPIP\apps\httpd - copy ..\Common\ethernet\FreeTCPIP\net\*.h FreeTCPIP\net - copy ..\Common\ethernet\FreeTCPIP\sys\*.h FreeTCPIP\sys - - REM Copy the core HTTPD files - copy ..\Common\ethernet\FreeTCPIP\apps\httpd\http-strings.c FreeTCPIP\http_Common - copy ..\Common\ethernet\FreeTCPIP\apps\httpd\httpd-fs.c FreeTCPIP\http_Common - copy ..\Common\ethernet\FreeTCPIP\apps\httpd\httpd.c FreeTCPIP\http_Common - - REM Copy the common demo files used by this demo - copy ..\Common\Minimal\TimerDemo.c Common_Demo_Tasks - copy ..\Common\Minimal\BlockQ.c Common_Demo_Tasks - copy ..\Common\Minimal\blocktim.c Common_Demo_Tasks - copy ..\Common\Minimal\death.c Common_Demo_Tasks - copy ..\Common\Minimal\dynamic.c Common_Demo_Tasks - copy ..\Common\Minimal\flash.c Common_Demo_Tasks - copy ..\Common\Minimal\GenQTest.c Common_Demo_Tasks - copy ..\Common\Minimal\QPeek.c Common_Demo_Tasks - copy ..\Common\Minimal\recmutex.c Common_Demo_Tasks - copy ..\Common\Minimal\semtest.c Common_Demo_Tasks - - REM Copy the common demo header files - copy ..\Common\include\TimerDemo.h Common_Demo_Tasks\include - copy ..\Common\include\BlockQ.h Common_Demo_Tasks\include - copy ..\Common\include\blocktim.h Common_Demo_Tasks\include - copy ..\Common\include\death.h Common_Demo_Tasks\include - copy ..\Common\include\dynamic.h Common_Demo_Tasks\include - copy ..\Common\include\flash.h Common_Demo_Tasks\include - copy ..\Common\include\GenQTest.h Common_Demo_Tasks\include - copy ..\Common\include\QPeek.h Common_Demo_Tasks\include - copy ..\Common\include\recmutex.h Common_Demo_Tasks\include - copy ..\Common\include\semtest.h Common_Demo_Tasks\include - copy ..\Common\include\partest.h Common_Demo_Tasks\include - -: END diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/FreeRTOSConfig.h b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/FreeRTOSConfig.h deleted file mode 100644 index e11cc6662..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/FreeRTOSConfig.h +++ /dev/null @@ -1,155 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - - -/* - * The following #error directive is to remind users that a batch file must be - * executed prior to this project being built. The batch file *cannot* be - * executed from within the IDE! Once it has been executed, re-open or refresh - * the Eclipse project and remove the #error line below. - */ -#error Ensure CreateProjectDirectoryStructure.bat has been executed before building. See comment immediately above. - - -#ifndef FREERTOS_CONFIG_H -#define FREERTOS_CONFIG_H - -#include -#include - -/*----------------------------------------------------------- - * Application specific definitions. - * - * These definitions should be adjusted for your particular hardware and - * application requirements. - * - * THESE PARAMETERS ARE DESCRIBED WITHIN THE 'CONFIGURATION' SECTION OF THE - * FreeRTOS API DOCUMENTATION AVAILABLE ON THE FreeRTOS.org WEB SITE. - * - * See http://www.freertos.org/a00110.html - *----------------------------------------------------------*/ - -extern uint32_t SystemFrequency; - -#define configUSE_PREEMPTION 1 -#define configUSE_IDLE_HOOK 1 -#define configUSE_TICK_HOOK 0 -#define configCPU_CLOCK_HZ ( SystemFrequency ) -#define configTICK_RATE_HZ ( ( TickType_t ) 1000 ) -#define configMAX_PRIORITIES ( 5 ) -#define configMINIMAL_STACK_SIZE ( ( unsigned short ) 90 ) -#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 30 * 1024 ) ) -#define configMAX_TASK_NAME_LEN ( 10 ) -#define configUSE_TRACE_FACILITY 1 -#define configUSE_16_BIT_TICKS 0 -#define configIDLE_SHOULD_YIELD 1 -#define configUSE_MUTEXES 1 -#define configQUEUE_REGISTRY_SIZE 0 -#define configGENERATE_RUN_TIME_STATS 1 -#define configCHECK_FOR_STACK_OVERFLOW 2 -#define configUSE_RECURSIVE_MUTEXES 1 -#define configUSE_MALLOC_FAILED_HOOK 1 -#define configUSE_APPLICATION_TASK_TAG 0 -#define configUSE_COUNTING_SEMAPHORES 0 - -/* Co-routine definitions. */ -#define configUSE_CO_ROUTINES 0 -#define configMAX_CO_ROUTINE_PRIORITIES ( 2 ) - -/* Software timer definitions. */ -#define configUSE_TIMERS 1 -#define configTIMER_TASK_PRIORITY ( 2 ) -#define configTIMER_QUEUE_LENGTH 10 -#define configTIMER_TASK_STACK_DEPTH ( configMINIMAL_STACK_SIZE * 2 ) - -/* Set the following definitions to 1 to include the API function, or zero -to exclude the API function. */ -#define INCLUDE_vTaskPrioritySet 1 -#define INCLUDE_uxTaskPriorityGet 1 -#define INCLUDE_vTaskDelete 1 -#define INCLUDE_vTaskCleanUpResources 1 -#define INCLUDE_vTaskSuspend 1 -#define INCLUDE_vTaskDelayUntil 1 -#define INCLUDE_vTaskDelay 1 - -/* This demo makes use of one or more example stats formatting functions. These -format the raw data provided by the uxTaskGetSystemState() function in to human -readable ASCII form. See the notes in the implementation of vTaskList() within -FreeRTOS/Source/tasks.c for limitations. */ -#define configUSE_STATS_FORMATTING_FUNCTIONS 1 - -void vMainConfigureTimerForRunTimeStats( void ); -unsigned long ulGetRunTimeCounterValue( void ); -#define portCONFIGURE_TIMER_FOR_RUN_TIME_STATS() vMainConfigureTimerForRunTimeStats() -#define portGET_RUN_TIME_COUNTER_VALUE() ulGetRunTimeCounterValue() - -/* Use the system definition, if there is one */ -#ifdef __NVIC_PRIO_BITS - #define configPRIO_BITS __NVIC_PRIO_BITS -#else - #define configPRIO_BITS 5 /* 31 priority levels */ -#endif - -#define configLIBRARY_LOWEST_INTERRUPT_PRIORITY 0x1f -#define configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY 5 - -/* The lowest priority. */ -#define configKERNEL_INTERRUPT_PRIORITY ( configLIBRARY_LOWEST_INTERRUPT_PRIORITY << (8 - configPRIO_BITS) ) -/* Priority 5, or 160 as only the top three bits are implemented. */ -/* !!!! configMAX_SYSCALL_INTERRUPT_PRIORITY must not be set to zero !!!! -See http://www.FreeRTOS.org/RTOS-Cortex-M3-M4.html. */ -#define configMAX_SYSCALL_INTERRUPT_PRIORITY ( configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY << (8 - configPRIO_BITS) ) - -#define configASSERT( x ) if( ( x ) == 0 ) { taskDISABLE_INTERRUPTS(); for( ;; ); } - -#define vPortSVCHandler SVC_Handler -#define xPortPendSVHandler PendSV_Handler -#define vPortSVCHandler SVC_Handler -#define xPortSysTickHandler SysTick_Handler - -/* MAC address configuration. */ -#define configMAC_ADDR0 0x00 -#define configMAC_ADDR1 0x12 -#define configMAC_ADDR2 0x13 -#define configMAC_ADDR3 0x10 -#define configMAC_ADDR4 0x15 -#define configMAC_ADDR5 0x11 - -/* IP address configuration. */ -#define configIP_ADDR0 192 -#define configIP_ADDR1 168 -#define configIP_ADDR2 0 -#define configIP_ADDR3 200 - -/* Netmask configuration. */ -#define configNET_MASK0 255 -#define configNET_MASK1 255 -#define configNET_MASK2 255 -#define configNET_MASK3 0 - -#endif /* FREERTOS_CONFIG_H */ - diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/CMSIS/a2fxxxm3.h b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/CMSIS/a2fxxxm3.h deleted file mode 100644 index ab389e05d..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/CMSIS/a2fxxxm3.h +++ /dev/null @@ -1,1102 +0,0 @@ -/******************************************************************************* - * (c) Copyright 2009 Actel Corporation. All rights reserved. - * - * SmartFusion A2FxxxM3 Cortex Microcontroller Software Interface - Peripheral - * Access Layer. - * - * This file describes the interrupt assignment and peripheral registers for - * the SmartFusion A2FxxxM3 familly of devices. - * - * SVN $Revision: 2331 $ - * SVN $Date: 2010-02-26 12:02:06 +0000 (Fri, 26 Feb 2010) $ - */ -#ifndef __A2FXXXM3_H__ -#define __A2FXXXM3_H__ - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * ========================================================================== - * ---------- Interrupt Number Definition ----------------------------------- - * ========================================================================== - */ - -typedef enum IRQn -{ -/****** Cortex-M3 Processor Exceptions Numbers *********************************************************/ - NonMaskableInt_IRQn = -14, /*!< 2 Non Maskable Interrupt */ - HardFault_IRQn = -13, /*!< 2 Hard Fault Interrupt */ - MemoryManagement_IRQn = -12, /*!< 4 Cortex-M3 Memory Management Interrupt */ - BusFault_IRQn = -11, /*!< 5 Cortex-M3 Bus Fault Interrupt */ - UsageFault_IRQn = -10, /*!< 6 Cortex-M3 Usage Fault Interrupt */ - SVCall_IRQn = -5, /*!< 11 Cortex-M3 SV Call Interrupt */ - DebugMonitor_IRQn = -4, /*!< 12 Cortex-M3 Debug Monitor Interrupt */ - PendSV_IRQn = -2, /*!< 14 Cortex-M3 Pend SV Interrupt */ - SysTick_IRQn = -1, /*!< 15 Cortex-M3 System Tick Interrupt */ - -/****** SmartFusion specific Interrupt Numbers *********************************************************/ - WdogWakeup_IRQn = 0, /*!< WatchDog wakeup interrupt */ - BrownOut_1_5V_IRQn = 1, /*!< Supply dropped below 1.5V */ - BrownOut_3_3V_IRQn = 2, /*!< Supply dropped below 1.5V */ - RTC_Match_IRQn = 3, /*!< RTC match interrupt */ - RTCIF_Pub_IRQn = 4, /*!< RTC interface push button interrupt */ - EthernetMAC_IRQn = 5, /*!< Ethernet MAC interrupt */ - IAP_IRQn = 6, /*!< In Application Programming (IAP) interrupt */ - ENVM0_IRQn = 7, /*!< eNVM0 operation completion interrupt */ - ENVM1_IRQn = 8, /*!< eNVM1 operation completion interrupt */ - DMA_IRQn = 9, /*!< Peripheral DMA interrupt */ - UART0_IRQn = 10, /*!< UART0 interrupt */ - UART1_IRQn = 11, /*!< UART1 interrupt */ - SPI0_IRQn = 12, /*!< SPI0 interrupt */ - SPI1_IRQn = 13, /*!< SP1 interrupt */ - I2C0_IRQn = 14, /*!< I2C0 interrupt */ - I2C0_SMBAlert_IRQn = 15, /*!< I2C0 SMBus Alert interrupt */ - I2C0_SMBus_IRQn = 16, /*!< I2C0 SMBus Suspend interrupt */ - I2C1_IRQn = 17, /*!< I2C1 interrupt */ - I2C1_SMBAlert_IRQn = 18, /*!< I2C1 SMBus Alert interrupt */ - I2C1_SMBus_IRQn = 19, /*!< I2C1 SMBus Suspend interrupt */ - Timer1_IRQn = 20, /*!< Timer1 interrupt */ - Timer2_IRQn = 21, /*!< Timer2 interrupt */ - PLL_Lock_IRQn = 22, /*!< PLL lock interrupt */ - PLL_LockLost_IRQn = 23, /*!< PLL loss of lock interrupt */ - CommError_IRQn = 24, /*!< Communications Matrix error interrupt */ - Fabric_IRQn = 31, /*!< FPGA fabric interrupt */ - GPIO0_IRQn = 32, /*!< GPIO 0 interrupt */ - GPIO1_IRQn = 33, /*!< GPIO 1 interrupt */ - GPIO2_IRQn = 34, /*!< GPIO 2 interrupt */ - GPIO3_IRQn = 35, /*!< GPIO 3 interrupt */ - GPIO4_IRQn = 36, /*!< GPIO 4 interrupt */ - GPIO5_IRQn = 37, /*!< GPIO 5 interrupt */ - GPIO6_IRQn = 38, /*!< GPIO 6 interrupt */ - GPIO7_IRQn = 39, /*!< GPIO 7 interrupt */ - GPIO8_IRQn = 40, /*!< GPIO 8 interrupt */ - GPIO9_IRQn = 41, /*!< GPIO 9 interrupt */ - GPIO10_IRQn = 42, /*!< GPIO 10 interrupt */ - GPIO11_IRQn = 43, /*!< GPIO 11 interrupt */ - GPIO12_IRQn = 44, /*!< GPIO 12 interrupt */ - GPIO13_IRQn = 45, /*!< GPIO 13 interrupt */ - GPIO14_IRQn = 46, /*!< GPIO 14 interrupt */ - GPIO15_IRQn = 47, /*!< GPIO 15 interrupt */ - GPIO16_IRQn = 48, /*!< GPIO 16 interrupt */ - GPIO17_IRQn = 49, /*!< GPIO 17 interrupt */ - GPIO18_IRQn = 50, /*!< GPIO 18 interrupt */ - GPIO19_IRQn = 51, /*!< GPIO 19 interrupt */ - GPIO20_IRQn = 52, /*!< GPIO 20 interrupt */ - GPIO21_IRQn = 53, /*!< GPIO 21 interrupt */ - GPIO22_IRQn = 54, /*!< GPIO 22 interrupt */ - GPIO23_IRQn = 55, /*!< GPIO 23 interrupt */ - GPIO24_IRQn = 56, /*!< GPIO 24 interrupt */ - GPIO25_IRQn = 57, /*!< GPIO 25 interrupt */ - GPIO26_IRQn = 58, /*!< GPIO 26 interrupt */ - GPIO27_IRQn = 59, /*!< GPIO 27 interrupt */ - GPIO28_IRQn = 60, /*!< GPIO 28 interrupt */ - GPIO29_IRQn = 61, /*!< GPIO 29 interrupt */ - GPIO30_IRQn = 62, /*!< GPIO 30 interrupt */ - GPIO31_IRQn = 63, /*!< GPIO 31 interrupt */ - ACE_PC0_Flag0_IRQn = 64, /*!< ACE SSE program counter 0 flag 0 interrupt */ - ACE_PC0_Flag1_IRQn = 65, /*!< ACE SSE program counter 0 flag 1 interrupt */ - ACE_PC0_Flag2_IRQn = 66, /*!< ACE SSE program counter 0 flag 2 interrupt */ - ACE_PC0_Flag3_IRQn = 67, /*!< ACE SSE program counter 0 flag 3 interrupt */ - ACE_PC1_Flag0_IRQn = 68, /*!< ACE SSE program counter 1 flag 0 interrupt */ - ACE_PC1_Flag1_IRQn = 69, /*!< ACE SSE program counter 1 flag 1 interrupt */ - ACE_PC1_Flag2_IRQn = 70, /*!< ACE SSE program counter 1 flag 2 interrupt */ - ACE_PC1_Flag3_IRQn = 71, /*!< ACE SSE program counter 1 flag 3 interrupt */ - ACE_PC2_Flag0_IRQn = 72, /*!< ACE SSE program counter 2 flag 0 interrupt */ - ACE_PC2_Flag1_IRQn = 73, /*!< ACE SSE program counter 2 flag 1 interrupt */ - ACE_PC2_Flag2_IRQn = 74, /*!< ACE SSE program counter 2 flag 2 interrupt */ - ACE_PC2_Flag3_IRQn = 75, /*!< ACE SSE program counter 2 flag 3 interrupt */ - ACE_ADC0_DataValid_IRQn = 76, /*!< ACE ADC0 data valid interrupt */ - ACE_ADC1_DataValid_IRQn = 77, /*!< ACE ADC1 data valid interrupt */ - ACE_ADC2_DataValid_IRQn = 78, /*!< ACE ADC2 data valid interrupt */ - ACE_ADC0_CalDone_IRQn = 79, /*!< ACE ADC0 calibration done interrupt */ - ACE_ADC1_CalDone_IRQn = 80, /*!< ACE ADC1 calibration done interrupt */ - ACE_ADC2_CalDone_IRQn = 81, /*!< ACE ADC2 calibration done interrupt */ - ACE_ADC0_CalStart_IRQn = 82, /*!< ACE ADC0 calibration start interrupt */ - ACE_ADC1_CalStart_IRQn = 83, /*!< ACE ADC1 calibration start interrupt */ - ACE_ADC2_CalStart_IRQn = 84, /*!< ACE ADC2 calibration start interrupt */ - ACE_Comp0_Fall_IRQn = 85, /*!< ACE comparator 0 falling under reference interrupt */ - ACE_Comp1_Fall_IRQn = 86, /*!< ACE comparator 1 falling under reference interrupt */ - ACE_Comp2_Fall_IRQn = 87, /*!< ACE comparator 2 falling under reference interrupt */ - ACE_Comp3_Fall_IRQn = 88, /*!< ACE comparator 3 falling under reference interrupt */ - ACE_Comp4_Fall_IRQn = 89, /*!< ACE comparator 4 falling under reference interrupt */ - ACE_Comp5_Fall_IRQn = 90, /*!< ACE comparator 5 falling under reference interrupt */ - ACE_Comp6_Fall_IRQn = 91, /*!< ACE comparator 6 falling under reference interrupt */ - ACE_Comp7_Fall_IRQn = 92, /*!< ACE comparator 7 falling under reference interrupt */ - ACE_Comp8_Fall_IRQn = 93, /*!< ACE comparator 8 falling under reference interrupt */ - ACE_Comp9_Fall_IRQn = 94, /*!< ACE comparator 9 falling under reference interrupt */ - ACE_Comp10_Fall_IRQn = 95, /*!< ACE comparator 10 falling under reference interrupt */ - ACE_Comp11_Fall_IRQn = 96, /*!< ACE comparator 11 falling under reference interrupt */ - ACE_Comp0_Rise_IRQn = 97, /*!< ACE comparator 0 rising over reference interrupt */ - ACE_Comp1_Rise_IRQn = 98, /*!< ACE comparator 1 rising over reference interrupt */ - ACE_Comp2_Rise_IRQn = 99, /*!< ACE comparator 2 rising over reference interrupt */ - ACE_Comp3_Rise_IRQn = 100, /*!< ACE comparator 3 rising over reference interrupt */ - ACE_Comp4_Rise_IRQn = 101, /*!< ACE comparator 4 rising over reference interrupt */ - ACE_Comp5_Rise_IRQn = 102, /*!< ACE comparator 5 rising over reference interrupt */ - ACE_Comp6_Rise_IRQn = 103, /*!< ACE comparator 6 rising over reference interrupt */ - ACE_Comp7_Rise_IRQn = 104, /*!< ACE comparator 7 rising over reference interrupt */ - ACE_Comp8_Rise_IRQn = 105, /*!< ACE comparator 8 rising over reference interrupt */ - ACE_Comp9_Rise_IRQn = 106, /*!< ACE comparator 9 rising over reference interrupt */ - ACE_Comp10_Rise_IRQn = 107, /*!< ACE comparator 10 rising over reference interrupt */ - ACE_Comp11_Rise_IRQn = 108, /*!< ACE comparator 11 rising over reference interrupt */ - ACE_ADC0_FifoFull_IRQn = 109, /*!< ACE ADC0 FIFO full interrupt */ - ACE_ADC0_FifoAFull_IRQn = 110, /*!< ACE ADC0 FIFO almost full interrupt */ - ACE_ADC0_FifoEmpty_IRQn = 111, /*!< ACE ADC0 FIFO empty interrupt */ - ACE_ADC1_FifoFull_IRQn = 112, /*!< ACE ADC1 FIFO full interrupt */ - ACE_ADC1_FifoAFull_IRQn = 113, /*!< ACE ADC1 FIFO almost full interrupt */ - ACE_ADC1_FifoEmpty_IRQn = 114, /*!< ACE ADC1 FIFO empty interrupt */ - ACE_ADC2_FifoFull_IRQn = 115, /*!< ACE ADC2 FIFO full interrupt */ - ACE_ADC2_FifoAFull_IRQn = 116, /*!< ACE ADC2 FIFO almost full interrupt */ - ACE_ADC2_FifoEmpty_IRQn = 117, /*!< ACE ADC2 FIFO empty interrupt */ - ACE_PPE_Flag0_IRQn = 118, /*!< ACE post processing engine flag 0 interrupt */ - ACE_PPE_Flag1_IRQn = 119, /*!< ACE post processing engine flag 1 interrupt */ - ACE_PPE_Flag2_IRQn = 120, /*!< ACE post processing engine flag 2 interrupt */ - ACE_PPE_Flag3_IRQn = 121, /*!< ACE post processing engine flag 3 interrupt */ - ACE_PPE_Flag4_IRQn = 122, /*!< ACE post processing engine flag 4 interrupt */ - ACE_PPE_Flag5_IRQn = 123, /*!< ACE post processing engine flag 5 interrupt */ - ACE_PPE_Flag6_IRQn = 124, /*!< ACE post processing engine flag 6 interrupt */ - ACE_PPE_Flag7_IRQn = 125, /*!< ACE post processing engine flag 7 interrupt */ - ACE_PPE_Flag8_IRQn = 126, /*!< ACE post processing engine flag 8 interrupt */ - ACE_PPE_Flag9_IRQn = 127, /*!< ACE post processing engine flag 9 interrupt */ - ACE_PPE_Flag10_IRQn = 128, /*!< ACE post processing engine flag 10 interrupt */ - ACE_PPE_Flag11_IRQn = 129, /*!< ACE post processing engine flag 11 interrupt */ - ACE_PPE_Flag12_IRQn = 130, /*!< ACE post processing engine flag 12 interrupt */ - ACE_PPE_Flag13_IRQn = 131, /*!< ACE post processing engine flag 13 interrupt */ - ACE_PPE_Flag14_IRQn = 132, /*!< ACE post processing engine flag 14 interrupt */ - ACE_PPE_Flag15_IRQn = 133, /*!< ACE post processing engine flag 15 interrupt */ - ACE_PPE_Flag16_IRQn = 134, /*!< ACE post processing engine flag 16 interrupt */ - ACE_PPE_Flag17_IRQn = 135, /*!< ACE post processing engine flag 17 interrupt */ - ACE_PPE_Flag18_IRQn = 136, /*!< ACE post processing engine flag 18 interrupt */ - ACE_PPE_Flag19_IRQn = 137, /*!< ACE post processing engine flag 19 interrupt */ - ACE_PPE_Flag20_IRQn = 138, /*!< ACE post processing engine flag 20 interrupt */ - ACE_PPE_Flag21_IRQn = 139, /*!< ACE post processing engine flag 21 interrupt */ - ACE_PPE_Flag22_IRQn = 140, /*!< ACE post processing engine flag 22 interrupt */ - ACE_PPE_Flag23_IRQn = 141, /*!< ACE post processing engine flag 23 interrupt */ - ACE_PPE_Flag24_IRQn = 142, /*!< ACE post processing engine flag 24 interrupt */ - ACE_PPE_Flag25_IRQn = 143, /*!< ACE post processing engine flag 25 interrupt */ - ACE_PPE_Flag26_IRQn = 144, /*!< ACE post processing engine flag 26 interrupt */ - ACE_PPE_Flag27_IRQn = 145, /*!< ACE post processing engine flag 27 interrupt */ - ACE_PPE_Flag28_IRQn = 146, /*!< ACE post processing engine flag 28 interrupt */ - ACE_PPE_Flag29_IRQn = 147, /*!< ACE post processing engine flag 29 interrupt */ - ACE_PPE_Flag30_IRQn = 148, /*!< ACE post processing engine flag 30 interrupt */ - ACE_PPE_Flag31_IRQn = 149 /*!< ACE post processing engine flag 31 interrupt */ -} IRQn_Type; - - -/* - * ========================================================================== - * ----------- Processor and Core Peripheral Section ------------------------ - * ========================================================================== - */ - -/* Configuration of the Cortex-M3 Processor and Core Peripherals */ -#define __MPU_PRESENT 1 /*!< SmartFusion includes a MPU */ -#define __NVIC_PRIO_BITS 5 /*!< SmartFusion uses 5 Bits for the Priority Levels */ -#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ - - -#include "core_cm3.h" /* Cortex-M3 processor and core peripherals */ -#include "system_a2fxxxm3.h" /* SmartFusion System */ - -/******************************************************************************/ -/* Device Specific Peripheral registers structures */ -/******************************************************************************/ -#if defined ( __CC_ARM ) - /* Enable anonymous unions when building using Keil-MDK */ - #pragma anon_unions -#endif -/*----------------------------------------------------------------------------*/ -/*----------------------------------- UART -----------------------------------*/ -/*----------------------------------------------------------------------------*/ -typedef struct -{ - union - { - __I uint8_t RBR; - __O uint8_t THR; - __IO uint8_t DLR; - uint32_t RESERVED0; - }; - - union - { - __IO uint8_t DMR; - __IO uint8_t IER; - uint32_t RESERVED1; - }; - - union - { - __IO uint8_t IIR; - __IO uint8_t FCR; - uint32_t RESERVED2; - }; - - __IO uint8_t LCR; - uint8_t RESERVED3; - uint16_t RESERVED4; - __IO uint8_t MCR; - uint8_t RESERVED5; - uint16_t RESERVED6; - __I uint8_t LSR; - uint8_t RESERVED7; - uint16_t RESERVED8; - __I uint8_t MSR; - uint8_t RESERVED9; - uint16_t RESERVED10; - __IO uint8_t SR; - uint8_t RESERVED11; - uint16_t RESERVED12; -} UART_TypeDef; - -/*------------------------------------------------------------------------------ - * - */ -typedef struct -{ - uint32_t RESERVED0[32]; - - __IO uint32_t IER_ERBFI; - __IO uint32_t IER_ETBEI; - __IO uint32_t IER_ELSI; - __IO uint32_t IER_EDSSI; - - uint32_t RESERVED1[28]; - - __IO uint32_t FCR_ENABLE; - __IO uint32_t FCR_CLEAR_RX_FIFO; - __IO uint32_t FCR_CLEAR_TX_FIFO; - __IO uint32_t FCR_RXRDY_TXRDYN_EN; - __IO uint32_t FCR_RESERVED0; - __IO uint32_t FCR_RESERVED1; - __IO uint32_t FCR_RX_TRIG0; - __IO uint32_t FCR_RX_TRIG1; - - uint32_t RESERVED2[24]; - - __IO uint32_t LCR_WLS0; - __IO uint32_t LCR_WLS1; - __IO uint32_t LCR_STB; - __IO uint32_t LCR_PEN; - __IO uint32_t LCR_EPS; - __IO uint32_t LCR_SP; - __IO uint32_t LCR_SB; - __IO uint32_t LCR_DLAB; - - uint32_t RESERVED3[24]; - - __IO uint32_t MCR_DTR; - __IO uint32_t MCR_RTS; - __IO uint32_t MCR_OUT1; - __IO uint32_t MCR_OUT2; - __IO uint32_t MCR_LOOP; - - uint32_t RESERVED4[27]; - - __I uint32_t LSR_DR; - __I uint32_t LSR_OE; - __I uint32_t LSR_PE; - __I uint32_t LSR_FE; - __I uint32_t LSR_BI; - __I uint32_t LSR_THRE; - __I uint32_t LSR_TEMT; - __I uint32_t LSR_FIER; - - uint32_t RESERVED5[24]; - - __I uint32_t MSR_DCTS; - __I uint32_t MSR_DDSR; - __I uint32_t MSR_TERI; - __I uint32_t MSR_DDCD; - __I uint32_t MSR_CTS; - __I uint32_t MSR_DSR; - __I uint32_t MSR_RI; - __I uint32_t MSR_DCD; - -} UART_BitBand_TypeDef; - -/*----------------------------------------------------------------------------*/ -/*----------------------------------- I2C ------------------------------------*/ -/*----------------------------------------------------------------------------*/ -typedef struct -{ - __IO uint8_t CTRL; - uint8_t RESERVED0; - uint16_t RESERVED1; - uint8_t STATUS; - uint8_t RESERVED2; - uint16_t RESERVED3; - __IO uint8_t DATA; - uint8_t RESERVED4; - uint16_t RESERVED5; - __IO uint8_t ADDR; - uint8_t RESERVED6; - uint16_t RESERVED7; - __IO uint8_t SMBUS; - uint8_t RESERVED8; - uint16_t RESERVED9; - __IO uint8_t FREQ; - uint8_t RESERVED10; - uint16_t RESERVED11; - __IO uint8_t GLITCHREG; - uint8_t RESERVED12; - uint16_t RESERVED13; -} I2C_TypeDef; - -/*------------------------------------------------------------------------------ - * - */ -typedef struct -{ - uint32_t CTRL_CR0; - uint32_t CTRL_CR1; - uint32_t CTRL_AA; - uint32_t CTRL_SI; - uint32_t CTRL_STO; - uint32_t CTRL_STA; - uint32_t CTRL_ENS1; - uint32_t CTRL_CR2; - uint32_t RESERVED0[56]; - uint32_t DATA_DIR; - uint32_t RESERVED1[31]; - uint32_t ADDR_GC; -} I2C_BitBand_TypeDef; - -/*----------------------------------------------------------------------------*/ -/*----------------------------------- SPI ------------------------------------*/ -/*----------------------------------------------------------------------------*/ -typedef struct -{ - __IO uint32_t CONTROL; - __IO uint32_t TXRXDF_SIZE; - __I uint32_t STATUS; - __O uint32_t INT_CLEAR; - __I uint32_t RX_DATA; - __O uint32_t TX_DATA; - __IO uint32_t CLK_GEN; - __IO uint32_t SLAVE_SELECT; - __I uint32_t MIS; - __I uint32_t RIS; -} SPI_TypeDef; - -typedef struct -{ - __IO uint32_t CTRL_ENABLE; - __IO uint32_t CTRL_MASTER; - __IO uint32_t CTRL_MODE[2]; - __IO uint32_t CTRL_RX_INT_EN; - __IO uint32_t CTRL_TX_INT_EN; - __IO uint32_t CTRL_RX_OVERFLOW_INT_EN; - __IO uint32_t CTRL_TX_UNDERRUN_INT_EN; - __IO uint32_t CTRL_TXRXDFCOUNT[16]; - __IO uint32_t CTRL_SPO; - __IO uint32_t CTRL_SPH; - __IO uint32_t CTRL_RESERVED[6]; - - __IO uint32_t TXRXDF_SIZE[32]; - - __I uint32_t STATUS_TX_DONE; - __I uint32_t STATUS_RX_RDY; - __I uint32_t STATUS_RX_CH_OV; - __I uint32_t STATUS_TX_CH_UV; - __I uint32_t STATUS_RX_FIFO_FULL; - __I uint32_t STATUS_RX_FIFO_FULL_NEXT; - __I uint32_t STATUS_RX_FIFO_EMPTY; - __I uint32_t STATUS_RX_FIFO_EMPTY_NEXT; - __I uint32_t STATUS_TX_FIFO_FULL; - __I uint32_t STATUS_TX_FIFO_FULL_NEXT; - __I uint32_t STATUS_TX_FIFO_EMPTY; - __I uint32_t STATUS_TX_FIFO_EMPTY_NEXT; - __I uint32_t STATUS_RESERVED[20]; - - __O uint32_t INT_CLEAR_TX_DONE; - __O uint32_t INT_CLEAR_RX_RDY; - __O uint32_t INT_CLEAR_RX_OVER; - __O uint32_t INT_CLEAR_TX_UNDER; - __O uint32_t INT_CLEAR[28]; - - __I uint32_t RX_DATA[32]; - __O uint32_t TX_DATA[32]; - __IO uint32_t CLK_GEN[32]; - __IO uint32_t SLAVE_SELECT[32]; - __I uint32_t MIS_TX_DONE; - __I uint32_t MIS_RX_RDY; - __I uint32_t MIS_RX_OVER; - __I uint32_t MIS_TX_UNDER; - __I uint32_t MIS[28]; - __I uint32_t RIS[32]; -} SPI_BitBand_TypeDef; - -/*----------------------------------------------------------------------------*/ -/*----------------------------------- GPIO -----------------------------------*/ -/*----------------------------------------------------------------------------*/ -typedef struct -{ - __IO uint32_t GPIO_0_CFG; - __IO uint32_t GPIO_1_CFG; - __IO uint32_t GPIO_2_CFG; - __IO uint32_t GPIO_3_CFG; - __IO uint32_t GPIO_4_CFG; - __IO uint32_t GPIO_5_CFG; - __IO uint32_t GPIO_6_CFG; - __IO uint32_t GPIO_7_CFG; - __IO uint32_t GPIO_8_CFG; - __IO uint32_t GPIO_9_CFG; - __IO uint32_t GPIO_10_CFG; - __IO uint32_t GPIO_11_CFG; - __IO uint32_t GPIO_12_CFG; - __IO uint32_t GPIO_13_CFG; - __IO uint32_t GPIO_14_CFG; - __IO uint32_t GPIO_15_CFG; - __IO uint32_t GPIO_16_CFG; - __IO uint32_t GPIO_17_CFG; - __IO uint32_t GPIO_18_CFG; - __IO uint32_t GPIO_19_CFG; - __IO uint32_t GPIO_20_CFG; - __IO uint32_t GPIO_21_CFG; - __IO uint32_t GPIO_22_CFG; - __IO uint32_t GPIO_23_CFG; - __IO uint32_t GPIO_24_CFG; - __IO uint32_t GPIO_25_CFG; - __IO uint32_t GPIO_26_CFG; - __IO uint32_t GPIO_27_CFG; - __IO uint32_t GPIO_28_CFG; - __IO uint32_t GPIO_29_CFG; - __IO uint32_t GPIO_30_CFG; - __IO uint32_t GPIO_31_CFG; - __IO uint32_t GPIO_IRQ; - __I uint32_t GPIO_IN; - __IO uint32_t GPIO_OUT; -} GPIO_TypeDef; - -typedef struct -{ - __IO uint32_t GPIO_0_CFG[32]; - __IO uint32_t GPIO_1_CFG[32]; - __IO uint32_t GPIO_2_CFG[32]; - __IO uint32_t GPIO_3_CFG[32]; - __IO uint32_t GPIO_4_CFG[32]; - __IO uint32_t GPIO_5_CFG[32]; - __IO uint32_t GPIO_6_CFG[32]; - __IO uint32_t GPIO_7_CFG[32]; - __IO uint32_t GPIO_8_CFG[32]; - __IO uint32_t GPIO_9_CFG[32]; - __IO uint32_t GPIO_10_CFG[32]; - __IO uint32_t GPIO_11_CFG[32]; - __IO uint32_t GPIO_12_CFG[32]; - __IO uint32_t GPIO_13_CFG[32]; - __IO uint32_t GPIO_14_CFG[32]; - __IO uint32_t GPIO_15_CFG[32]; - __IO uint32_t GPIO_16_CFG[32]; - __IO uint32_t GPIO_17_CFG[32]; - __IO uint32_t GPIO_18_CFG[32]; - __IO uint32_t GPIO_19_CFG[32]; - __IO uint32_t GPIO_20_CFG[32]; - __IO uint32_t GPIO_21_CFG[32]; - __IO uint32_t GPIO_22_CFG[32]; - __IO uint32_t GPIO_23_CFG[32]; - __IO uint32_t GPIO_24_CFG[32]; - __IO uint32_t GPIO_25_CFG[32]; - __IO uint32_t GPIO_26_CFG[32]; - __IO uint32_t GPIO_27_CFG[32]; - __IO uint32_t GPIO_28_CFG[32]; - __IO uint32_t GPIO_29_CFG[32]; - __IO uint32_t GPIO_30_CFG[32]; - __IO uint32_t GPIO_31_CFG[32]; - __IO uint32_t GPIO_IRQ[32]; - __I uint32_t GPIO_IN[32]; - __IO uint32_t GPIO_OUT[32]; -} GPIO_BitBand_TypeDef; - - -/*----------------------------------------------------------------------------*/ -/*----------------------------------- RTC ------------------------------------*/ -/*----------------------------------------------------------------------------*/ -typedef struct -{ - __IO uint32_t COUNTER0_REG; - __IO uint32_t COUNTER1_REG; - __IO uint32_t COUNTER2_REG; - __IO uint32_t COUNTER3_REG; - __IO uint32_t COUNTER4_REG; - - __IO uint32_t RESERVED0[3]; - - __IO uint32_t MATCHREG0_REG; - __IO uint32_t MATCHREG1_REG; - __IO uint32_t MATCHREG2_REG; - __IO uint32_t MATCHREG3_REG; - __IO uint32_t MATCHREG4_REG; - - __IO uint32_t RESERVED1[3]; - - __IO uint32_t MATCHBITS0_REG; - __IO uint32_t MATCHBITS1_REG; - __IO uint32_t MATCHBITS2_REG; - __IO uint32_t MATCHBITS3_REG; - __IO uint32_t MATCHBITS4_REG; - - __IO uint32_t RESERVED2[3]; - - __IO uint32_t CTRL_STAT_REG; -} RTC_TypeDef; - -/*----------------------------------------------------------------------------*/ -/*---------------------------------- Timer -----------------------------------*/ -/*----------------------------------------------------------------------------*/ -typedef struct -{ - __I uint32_t TIM1_VAL; - __IO uint32_t TIM1_LOADVAL; - __IO uint32_t TIM1_BGLOADVAL; - __IO uint32_t TIM1_CTRL; - __IO uint32_t TIM1_RIS; - __I uint32_t TIM1_MIS; - - __I uint32_t TIM2_VAL; - __IO uint32_t TIM2_LOADVAL; - __IO uint32_t TIM2_BGLOADVAL; - __IO uint32_t TIM2_CTRL; - __IO uint32_t TIM2_RIS; - __I uint32_t TIM2_MIS; - - __I uint32_t TIM64_VAL_U; - __I uint32_t TIM64_VAL_L; - __IO uint32_t TIM64_LOADVAL_U; - __IO uint32_t TIM64_LOADVAL_L; - __IO uint32_t TIM64_BGLOADVAL_U; - __IO uint32_t TIM64_BGLOADVAL_L; - __IO uint32_t TIM64_CTRL; - __IO uint32_t TIM64_RIS; - __I uint32_t TIM64_MIS; - __IO uint32_t TIM64_MODE; -} TIMER_TypeDef; - -/*------------------------------------------------------------------------------ - * Timer bit band - */ -typedef struct -{ - __I uint32_t TIM1_VALUE_BIT[32]; - __IO uint32_t TIM1_LOADVAL[32]; - __IO uint32_t TIM1_BGLOADVAL[32]; - - __IO uint32_t TIM1ENABLE; - __IO uint32_t TIM1MODE; - __IO uint32_t TIM1INTEN; - __IO uint32_t TIM1_CTRL_RESERVED[29]; - __IO uint32_t TIM1_RIS[32]; - __I uint32_t TIM1_MIS[32]; - - __I uint32_t TIM2_VALUE[32]; - __IO uint32_t TIM2_LOADVAL[32]; - __IO uint32_t TIM2_BGLOADVAL[32]; - - __IO uint32_t TIM2ENABLE; - __IO uint32_t TIM2MODE; - __IO uint32_t TIM2INTEN; - __IO uint32_t TIM2_CTRL[29]; - __IO uint32_t TIM2_RIS[32]; - __I uint32_t TIM2_MIS[32]; - - __I uint32_t TIM64VALUEU[32]; - __I uint32_t TIM64VALUEL[32]; - __IO uint32_t TIM64LOADVALUEU[32]; - __IO uint32_t TIM64LOADVALUEL[32]; - __IO uint32_t TIM64BGLOADVALUEU[32]; - __IO uint32_t TIM64BGLOADVALUEL[32]; - __IO uint32_t TIM64ENABLE; - __IO uint32_t TIM64MODE; - __IO uint32_t TIM64INTEN; - __IO uint32_t TIM64_CTRL[29]; - __IO uint32_t TIM64_RIS[32]; - __I uint32_t TIM64_MIS[32]; - __IO uint32_t TIM64_MODE[32]; -} TIMER_BitBand_TypeDef; - -/*----------------------------------------------------------------------------*/ -/*--------------------------------- Watchdog ---------------------------------*/ -/*----------------------------------------------------------------------------*/ -typedef struct -{ - __I uint32_t WDOGVALUE; - __IO uint32_t WDOGLOAD; - __IO uint32_t WDOGMVRP; - __O uint32_t WDOGREFRESH; - __IO uint32_t WDOGENABLE; - __IO uint32_t WDOGCONTROL; - __I uint32_t WDOGSTATUS; - __IO uint32_t WDOGRIS; - __I uint32_t WDOGMIS; -} WATCHDOG_TypeDef; - -/*----------------------------------------------------------------------------*/ -/*----------------------------- Real Time Clock ------------------------------*/ -/*----------------------------------------------------------------------------*/ - -/*----------------------------------------------------------------------------*/ -/*----------------------------- Peripherals DMA ------------------------------*/ -/*----------------------------------------------------------------------------*/ -typedef struct -{ - __IO uint32_t CRTL; - __IO uint32_t STATUS; - __IO uint32_t BUFFER_A_SRC_ADDR; - __IO uint32_t BUFFER_A_DEST_ADDR; - __IO uint32_t BUFFER_A_TRANSFER_COUNT; - __IO uint32_t BUFFER_B_SRC_ADDR; - __IO uint32_t BUFFER_B_DEST_ADDR; - __IO uint32_t BUFFER_B_TRANSFER_COUNT; -} PDMA_Channel_TypeDef; - -typedef struct -{ - __IO uint32_t RATIO_HIGH_LOW; - __IO uint32_t BUFFER_STATUS; - uint32_t RESERVED[6]; - PDMA_Channel_TypeDef CHANNEL[8]; -} PDMA_TypeDef; - -/*----------------------------------------------------------------------------*/ -/*------------------------------ Ethernet MAC --------------------------------*/ -/*----------------------------------------------------------------------------*/ -typedef struct -{ - __IO uint32_t CSR0; - uint32_t RESERVED0; - __IO uint32_t CSR1; - uint32_t RESERVED1; - __IO uint32_t CSR2; - uint32_t RESERVED2; - __IO uint32_t CSR3; - uint32_t RESERVED3; - __IO uint32_t CSR4; - uint32_t RESERVED4; - __IO uint32_t CSR5; - uint32_t RESERVED5; - __IO uint32_t CSR6; - uint32_t RESERVED6; - __IO uint32_t CSR7; - uint32_t RESERVED7; - __IO uint32_t CSR8; - uint32_t RESERVED8; - __IO uint32_t CSR9; - uint32_t RESERVED9; - uint32_t RESERVED10; - uint32_t RESERVED11; - __IO uint32_t CSR11; -} MAC_TypeDef; - -/*----------------------------------------------------------------------------*/ -/*---------------------- Analog Conversion Engine (ACE) ----------------------*/ -/*----------------------------------------------------------------------------*/ -/* Analog quad configuration */ -typedef struct -{ - __IO uint8_t b0; - uint8_t reserved0_0; - uint16_t reserved0_1; - __IO uint8_t b1; - uint8_t reserved1_0; - uint16_t reserved1_1; - __IO uint8_t b2; - uint8_t reserved2_0; - uint16_t reserved2_1; - __IO uint8_t b3; - uint8_t reserved3_0; - uint16_t reserved3_1; - __IO uint8_t b4; - uint8_t reserved4_0; - uint16_t reserved4_1; - __IO uint8_t b5; - uint8_t reserved5_0; - uint16_t reserved5_1; - __IO uint8_t b6; - uint8_t reserved6_0; - uint16_t reserved6_1; - __IO uint8_t b7; - uint8_t reserved7_0; - uint16_t reserved7_1; - __IO uint8_t b8; - uint8_t reserved8_0; - uint16_t reserved8_1; - __IO uint8_t b9; - uint8_t reserved9_0; - uint16_t reserved9_1; - __IO uint8_t b10; - uint8_t reserved10_0; - uint16_t reserved10_1; - __IO uint8_t b11; - uint8_t reserved11_0; - uint16_t reserved11_1; -} AQ_config_t; - -/* ACE memory map layout */ -typedef struct -{ - __O uint32_t NOP; - __IO uint32_t SSE_TS_CTRL; - __IO uint32_t ADC_SYNC_CONV; - __IO uint32_t ANA_COMM_CTRL; - __IO uint32_t DAC_SYNC_CTRL; - __IO uint32_t PDMA_REQUEST; - uint32_t RESERVED0[10]; - __O uint32_t PC0_LO; - __O uint32_t PC0_HI; - __IO uint32_t PC0_CTRL; - __IO uint32_t PC0_DLY; - __IO uint32_t ADC0_CONV_CTRL; - __IO uint32_t ADC0_STC; - __IO uint32_t ADC0_TVC; - __IO uint32_t ADC0_MISC_CTRL; - __IO uint32_t DAC0_CTRL; - __IO uint32_t DAC0_BYTE0; - __IO uint32_t DAC0_BYTE1; - __IO uint32_t DAC0_BYTE2; - __IO uint32_t LC0; - __O uint32_t LC0_JMP_LO; - __O uint32_t LC0_JMP_HI; - __O uint32_t PC0_FLAGS; - __O uint32_t PC1_LO; - __O uint32_t PC1_HI; - __IO uint32_t PC1_CTRL; - __IO uint32_t PC1_DLY; - __IO uint32_t ADC1_CONV_CTRL; - __IO uint32_t ADC1_STC; - __IO uint32_t ADC1_TVC; - __IO uint32_t ADC1_MISC_CTRL; - __IO uint32_t DAC1_CTRL; - __IO uint32_t DAC1_BYTE0; - __IO uint32_t DAC1_BYTE1; - __IO uint32_t DAC1_BYTE2; - __IO uint32_t LC1; - __O uint32_t LC1_JMP_LO; - __O uint32_t LC1_JMP_HI; - __O uint32_t PC1_FLAGS; - __O uint32_t PC2_LO; - __O uint32_t PC2_HI; - __IO uint32_t PC2_CTRL; - __IO uint32_t PC2_DLY; - __IO uint32_t ADC2_CONV_CTRL; - __IO uint32_t ADC2_STC; - __IO uint32_t ADC2_TVC; - __IO uint32_t ADC2_MISC_CTRL; - __IO uint32_t DAC2_CTRL; - __IO uint32_t DAC2_BYTE0; - __IO uint32_t DAC2_BYTE1; - __IO uint32_t DAC2_BYTE2; - __IO uint32_t LC2; - __O uint32_t LC2_JMP_LO; - __O uint32_t LC2_JMP_HI; - __O uint32_t PC2_FLAGS; - uint32_t RESERVED1; - uint32_t RESERVED2; - __IO uint32_t SSE_RAM_LO_IDATA; - __IO uint32_t SSE_RAM_HI_IDATA; - uint32_t RESERVED3[61]; - AQ_config_t ACB_DATA[6]; - uint32_t RESERVED4[59]; - __IO uint32_t SSE_PC0; - __IO uint32_t SSE_PC1; - __IO uint32_t SSE_PC2; - uint32_t RESERVED5[57]; - __IO uint32_t SSE_DAC0_BYTES01; - __IO uint32_t SSE_DAC1_BYTES01; - __IO uint32_t SSE_DAC2_BYTES01; - uint32_t RESERVED6[61]; - __O uint32_t SSE_ADC0_RESULTS; - __O uint32_t SSE_ADC1_RESULTS; - __O uint32_t SSE_ADC2_RESULTS; - uint32_t RESERVED7[61]; - __O uint32_t SSE_PDMA_DATAIN; - uint32_t RESERVED8[63]; - __IO uint32_t SSE_RAM_DATA[512]; - __I uint32_t ADC0_STATUS; - __I uint32_t ADC1_STATUS; - __I uint32_t ADC2_STATUS; - __I uint32_t COMPARATOR_STATUS; - uint32_t RESERVED9[124]; - __IO uint32_t SSE_IRQ_EN; - __I uint32_t SSE_IRQ; - __O uint32_t SSE_IRQ_CLR; - __IO uint32_t COMP_IRQ_EN; - __I uint32_t COMP_IRQ; - __O uint32_t COMP_IRQ_CLR; - __IO uint32_t PPE_FIFO_IRQ_EN; - __I uint32_t PPE_FIFO_IRQ; - __O uint32_t PPE_FIFO_IRQ_CLR; - __IO uint32_t PPE_FLAGS0_IRQ_EN; - __I uint32_t PPE_FLAGS0_IRQ; - __O uint32_t PPE_FLAGS0_IRQ_CLR; - __IO uint32_t PPE_FLAGS1_IRQ_EN; - __I uint32_t PPE_FLAGS1_IRQ; - __O uint32_t PPE_FLAGS1_IRQ_CLR; - __IO uint32_t PPE_FLAGS2_IRQ_EN; - __I uint32_t PPE_FLAGS2_IRQ; - __O uint32_t PPE_FLAGS2_IRQ_CLR; - __IO uint32_t PPE_FLAGS3_IRQ_EN; - __I uint32_t PPE_FLAGS3_IRQ; - __O uint32_t PPE_FLAGS3_IRQ_CLR; - __IO uint32_t PPE_SFFLAGS_IRQ_EN; - __I uint32_t PPE_SFFLAGS_IRQ; - __O uint32_t PPE_SFFLAGS_IRQ_CLR; - __IO uint32_t FPGA_FLAGS_SEL; - uint32_t RESERVED10[39]; - __IO uint32_t PPE_PDMA_CTRL; - __I uint32_t PDMA_STATUS; - __IO uint32_t PPE_PDMA_DATAOUT; - uint32_t RESERVED11[61]; - __I uint32_t PPE_NOP; - __IO uint32_t PPE_CTRL; - __IO uint32_t PPE_PC_ETC; - __IO uint32_t PPE_SF; - __IO uint32_t PPE_SCRATCH; - uint32_t RESERVED12; - __IO uint32_t ALU_CTRL; - __I uint32_t ALU_STATUS; - __IO uint32_t ALU_A; - uint32_t RESERVED50; - __IO uint32_t ALU_B; - uint32_t RESERVED53; - __IO uint32_t ALU_C; - uint32_t RESERVED51; - __IO uint32_t ALU_D; - uint32_t RESERVED52; - __IO uint32_t ALU_E; - uint32_t RESERVED54; - __IO uint32_t PPE_FPTR; - uint32_t RESERVED55; - __IO uint32_t PPE_FLAGS0; - __IO uint32_t PPE_FLAGS1; - __IO uint32_t PPE_FLAGS2; - __IO uint32_t PPE_FLAGS3; - __IO uint32_t PPE_SFFLAGS; - uint32_t RESERVED13[11]; - __IO uint32_t ADC0_FIFO_CTRL; - __I uint32_t ADC0_FIFO_STATUS; - __IO uint32_t ADC0_FIFO_DATA; - __IO uint32_t ADC1_FIFO_CTRL; - __I uint32_t ADC1_FIFO_STATUS; - __IO uint32_t ADC1_FIFO_DATA; - __IO uint32_t ADC2_FIFO_CTRL; - __I uint32_t ADC2_FIFO_STATUS; - __IO uint32_t ADC2_FIFO_DATA; - uint32_t RESERVED14[19]; - __I uint32_t ADC0_FIFO_DATA_PEEK; - __I uint32_t ADC0_FIFO_DATA0; - __I uint32_t ADC0_FIFO_DATA1; - __I uint32_t ADC0_FIFO_DATA2; - __I uint32_t ADC0_FIFO_DATA3; - __I uint32_t ADC1_FIFO_DATA_PEEK; - __I uint32_t ADC1_FIFO_DATA0; - __I uint32_t ADC1_FIFO_DATA1; - __I uint32_t ADC1_FIFO_DATA2; - __I uint32_t ADC1_FIFO_DATA3; - __I uint32_t ADC2_FIFO_DATA_PEEK; - __I uint32_t ADC2_FIFO_DATA0; - __I uint32_t ADC2_FIFO_DATA1; - __I uint32_t ADC2_FIFO_DATA2; - __I uint32_t ADC2_FIFO_DATA3; - uint32_t RESERVED15[177]; - __IO uint32_t PPE_RAM_DATA[512]; -} ACE_TypeDef; - -/*----------------------------------------------------------------------------*/ -/*------------------------ In Application Programming ------------------------*/ -/*----------------------------------------------------------------------------*/ -typedef struct -{ - __IO uint32_t IAP_IR; - __IO uint32_t IAP_DR2; - __IO uint32_t IAP_DR3; - __IO uint32_t IAP_DR5; - __IO uint32_t IAP_DR26; - __IO uint32_t IAP_DR32; - __IO uint32_t IAP_DR; - __IO uint32_t IAP_DR_LENGTH; - __IO uint32_t IAP_TAP_NEW_STATE; - __IO uint32_t IAP_TAP_CONTROL; - __I uint32_t IAP_STATUS; -} IAP_TypeDef; - -/*----------------------------------------------------------------------------*/ -/*---------------------- eNVM Special Function Registers ---------------------*/ -/*----------------------------------------------------------------------------*/ -typedef struct -{ - __IO uint32_t STATUS; - __IO uint32_t CONTROL; - __IO uint32_t ENABLE; - uint32_t RESERVED0; - __IO uint32_t CONFIG_0; - __IO uint32_t CONFIG_1; - __IO uint32_t PAGE_STATUS_0; - __IO uint32_t PAGE_STATUS_1; - __IO uint32_t SEGMENT; - __IO uint32_t ENVM_SELECT; -} NVM_TypeDef; - -/*----------------------------------------------------------------------------*/ -/*---------------------- eNVM Special Function Registers ---------------------*/ -/*----------------------------------------------------------------------------*/ -typedef struct -{ - __IO uint32_t MSSIRQ_EN0; - __IO uint32_t MSSIRQ_EN1; - __IO uint32_t MSSIRQ_EN2; - __IO uint32_t MSSIRQ_EN3; - __IO uint32_t MSSIRQ_EN4; - __IO uint32_t MSSIRQ_EN5; - __IO uint32_t MSSIRQ_EN6; - __IO uint32_t MSSIRQ_EN7; - __I uint32_t MSSIRQ_SRC0; - __I uint32_t MSSIRQ_SRC1; - __I uint32_t MSSIRQ_SRC2; - __I uint32_t MSSIRQ_SRC3; - __I uint32_t MSSIRQ_SRC4; - __I uint32_t MSSIRQ_SRC5; - __I uint32_t MSSIRQ_SRC6; - __I uint32_t MSSIRQ_SRC7; - __IO uint32_t FIIC_MR; -} MSS_IRQ_CTRL_TypeDef; - -/*----------------------------------------------------------------------------*/ -/*------------------------------ System Registers ----------------------------*/ -/*----------------------------------------------------------------------------*/ -typedef struct -{ - __IO uint32_t ESRAM_CR; - __IO uint32_t ENVM_CR; - __IO uint32_t ENVM_REMAP_SYS_CR; - __IO uint32_t ENVM_REMAP_FAB_CR; - __IO uint32_t FAB_PROT_SIZE_CR; - __IO uint32_t FAB_PROT_BASE_CR; - __IO uint32_t AHB_MATRIX_CR; - __IO uint32_t MSS_SR; - __IO uint32_t CLR_MSS_SR; - __IO uint32_t EFROM_CR; - __IO uint32_t IAP_CR; - __IO uint32_t SOFT_IRQ_CR; - __IO uint32_t SOFT_RST_CR; - __IO uint32_t DEVICE_SR; - __IO uint32_t SYSTICK_CR; - __IO uint32_t EMC_MUX_CR; - __IO uint32_t EMC_CS_0_CR; - __IO uint32_t EMC_CS_1_CR; - __IO uint32_t MSS_CLK_CR; - __IO uint32_t MSS_CCC_DIV_CR; - __IO uint32_t MSS_CCC_MUX_CR; - __IO uint32_t MSS_CCC_PLL_CR; - __IO uint32_t MSS_CCC_DLY_CR; - __IO uint32_t MSS_CCC_SR; - __IO uint32_t MSS_RCOSC_CR; - __IO uint32_t VRPSM_CR; - __IO uint32_t RESERVED; - __IO uint32_t FAB_IF_CR; - __IO uint32_t FAB_APB_HIWORD_DR; - __IO uint32_t LOOPBACK_CR; - __IO uint32_t MSS_IO_BANK_CR; - __IO uint32_t GPIN_SOURCE_CR; - __IO uint32_t TEST_SR; - __IO uint32_t RED_REP_ADDR0; - __I uint32_t RED_REP_LOW_LOCS0; - __I uint32_t RED_REP_HIGH_LOCS0; - __IO uint32_t RED_REP_ADDR1; - __I uint32_t RED_REP_LOW_LOCS1; - __I uint32_t RED_REP_HIGH_LOCS1; - __IO uint32_t FABRIC_CR; - uint32_t RESERVED1[24]; - __IO uint32_t IOMUX_CR[83]; -} SYSREG_TypeDef; - -#define SYSREG_ENVM_SOFTRESET_MASK (uint32_t)0x00000001 -#define SYSREG_ESRAM0_SOFTRESET_MASK (uint32_t)0x00000002 -#define SYSREG_ESRAM1_SOFTRESET_MASK (uint32_t)0x00000004 -#define SYSREG_EMC_SOFTRESET_MASK (uint32_t)0x00000008 -#define SYSREG_MAC_SOFTRESET_MASK (uint32_t)0x00000010 -#define SYSREG_PDMA_SOFTRESET_MASK (uint32_t)0x00000020 -#define SYSREG_TIMER_SOFTRESET_MASK (uint32_t)0x00000040 -#define SYSREG_UART0_SOFTRESET_MASK (uint32_t)0x00000080 -#define SYSREG_UART1_SOFTRESET_MASK (uint32_t)0x00000100 -#define SYSREG_SPI0_SOFTRESET_MASK (uint32_t)0x00000200 -#define SYSREG_SPI1_SOFTRESET_MASK (uint32_t)0x00000400 -#define SYSREG_I2C0_SOFTRESET_MASK (uint32_t)0x00000800 -#define SYSREG_I2C1_SOFTRESET_MASK (uint32_t)0x00001000 -#define SYSREG_ACE_SOFTRESET_MASK (uint32_t)0x00002000 -#define SYSREG_GPIO_SOFTRESET_MASK (uint32_t)0x00004000 -#define SYSREG_IAP_SOFTRESET_MASK (uint32_t)0x00008000 -#define SYSREG_EXT_SOFTRESET_MASK (uint32_t)0x00010000 -#define SYSREG_FPGA_SOFTRESET_MASK (uint32_t)0x00020000 -#define SYSREG_F2M_RESET_ENABLE_MASK (uint32_t)0x00040000 -#define SYSREG_PADRESET_ENABLE_MASK (uint32_t)0x00080000 - -/******************************************************************************/ -/* Peripheral memory map */ -/******************************************************************************/ -#define UART0_BASE 0x40000000U -#define SPI0_BASE 0x40001000U -#define I2C0_BASE 0x40002000U -#define MAC_BASE 0x40003000U -#define PDMA_BASE 0x40004000U -#define TIMER_BASE 0x40005000U -#define WATCHDOG_BASE 0x40006000U -#define H2F_IRQ_CTRL_BASE 0x40007000U -#define UART1_BASE 0x40010000U -#define SPI1_BASE 0x40011000U -#define I2C1_BASE 0x40012000U -#define GPIO_BASE 0x40013000U -#define RTC_BASE 0x40014100U -#define FROM_BASE 0x40015000U -#define IAP_BASE 0x40016000U -#define ACE_BASE 0x40020000U -#define FPGA_FABRIC_RAM_BASE 0x40040000U -#define FPGA_FABRIC_BASE 0x40050000U -#define ENVM_BASE 0x60000000U -#define ENVM_REGS_BASE 0x60100000U -#define SYSREG_BASE 0xE0042000U - -/******************************************************************************/ -/* bitband address calcualtion macro */ -/******************************************************************************/ -#define BITBAND_ADDRESS(X) ((X & 0xF0000000U) + 0x02000000U + ((X & 0xFFFFFU) << 5)) - -/******************************************************************************/ -/* Peripheral declaration */ -/******************************************************************************/ -#define UART0 ((UART_TypeDef *) UART0_BASE) -#define UART0_BITBAND ((UART_BitBand_TypeDef *) BITBAND_ADDRESS(UART0_BASE)) -#define SPI0 ((SPI_TypeDef *) SPI0_BASE) -#define SPI0_BITBAND ((SPI_BitBand_TypeDef *) BITBAND_ADDRESS(SPI0_BASE)) -#define I2C0 ((I2C_TypeDef *) I2C0_BASE) -#define I2C0_BITBAND ((I2C_BitBand_TypeDef *) BITBAND_ADDRESS(I2C0_BASE)) -#define MAC ((MAC_TypeDef *) MAC_BASE) -#define PDMA ((PDMA_TypeDef *) PDMA_BASE) -#define TIMER ((TIMER_TypeDef *) TIMER_BASE) -#define TIMER_BITBAND ((TIMER_BitBand_TypeDef *) BITBAND_ADDRESS(TIMER_BASE)) -#define WATCHDOG ((WATCHDOG_TypeDef *) WATCHDOG_BASE) -#define MSS_IRQ_CTRL ((MSS_IRQ_CTRL_TypeDef *) H2F_IRQ_CTRL_BASE) -#define UART1 ((UART_TypeDef *) UART1_BASE) -#define UART1_BITBAND ((UART_BitBand_TypeDef *) BITBAND_ADDRESS(UART1_BASE)) -#define SPI1 ((SPI_TypeDef *) SPI1_BASE) -#define SPI1_BITBAND ((SPI_BitBand_TypeDef *) BITBAND_ADDRESS(SPI1_BASE)) -#define I2C1 ((I2C_TypeDef *) I2C1_BASE) -#define I2C1_BITBAND ((I2C_BitBand_TypeDef *) BITBAND_ADDRESS(I2C1_BASE)) -#define GPIO ((GPIO_TypeDef *) GPIO_BASE) -#define GPIO_BITBAND ((GPIO_BitBand_TypeDef *) BITBAND_ADDRESS(GPIO_BASE)) -#define RTC ((RTC_TypeDef *) RTC_BASE) -#define FROM ((void *) FROM_BASE) -#define IAP ((IAP_TypeDef *) IAP_BASE) -#define ACE ((ACE_TypeDef *) ACE_BASE) -#define FPGA_FABRIC_RAM ((void *) FPGA_FABRIC_RAM_BASE) -#define FPGA_FABRIC ((void *) FPGA_FABRIC_BASE) -#define ENVM ((void *) ENVM_BASE) -#define ENVM_REGS ((NVM_TypeDef *) ENVM_REGS_BASE) -#define SYSREG ((SYSREG_TypeDef *) SYSREG_BASE) - -#ifdef __cplusplus -} -#endif - -#endif /* __A2FXXXM3_H__ */ - diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/CMSIS/core_cm3.c b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/CMSIS/core_cm3.c deleted file mode 100644 index 0e8c3c43c..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/CMSIS/core_cm3.c +++ /dev/null @@ -1,784 +0,0 @@ -/**************************************************************************//** - * @file core_cm3.c - * @brief CMSIS Cortex-M3 Core Peripheral Access Layer Source File - * @version V1.30 - * @date 30. October 2009 - * - * @note - * Copyright (C) 2009 ARM Limited. All rights reserved. - * - * @par - * ARM Limited (ARM) is supplying this software for use with Cortex-M - * processor based microcontrollers. This file can be freely distributed - * within development tools that are supporting such ARM based processors. - * - * @par - * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED - * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. - * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR - * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. - * - ******************************************************************************/ - -#include - -/* define compiler specific symbols */ -#if defined ( __CC_ARM ) - #define __ASM __asm /*!< asm keyword for ARM Compiler */ - #define __INLINE __inline /*!< inline keyword for ARM Compiler */ - -#elif defined ( __ICCARM__ ) - #define __ASM __asm /*!< asm keyword for IAR Compiler */ - #define __INLINE inline /*!< inline keyword for IAR Compiler. Only avaiable in High optimization mode! */ - -#elif defined ( __GNUC__ ) - #define __ASM __asm /*!< asm keyword for GNU Compiler */ - #define __INLINE inline /*!< inline keyword for GNU Compiler */ - -#elif defined ( __TASKING__ ) - #define __ASM __asm /*!< asm keyword for TASKING Compiler */ - #define __INLINE inline /*!< inline keyword for TASKING Compiler */ - -#endif - - -/* ################### Compiler specific Intrinsics ########################### */ - -#if defined ( __CC_ARM ) /*------------------RealView Compiler -----------------*/ -/* ARM armcc specific functions */ - -/** - * @brief Return the Process Stack Pointer - * - * @return ProcessStackPointer - * - * Return the actual process stack pointer - */ -__ASM uint32_t __get_PSP(void) -{ - mrs r0, psp - bx lr -} - -/** - * @brief Set the Process Stack Pointer - * - * @param topOfProcStack Process Stack Pointer - * - * Assign the value ProcessStackPointer to the MSP - * (process stack pointer) Cortex processor register - */ -__ASM void __set_PSP(uint32_t topOfProcStack) -{ - msr psp, r0 - bx lr -} - -/** - * @brief Return the Main Stack Pointer - * - * @return Main Stack Pointer - * - * Return the current value of the MSP (main stack pointer) - * Cortex processor register - */ -__ASM uint32_t __get_MSP(void) -{ - mrs r0, msp - bx lr -} - -/** - * @brief Set the Main Stack Pointer - * - * @param topOfMainStack Main Stack Pointer - * - * Assign the value mainStackPointer to the MSP - * (main stack pointer) Cortex processor register - */ -__ASM void __set_MSP(uint32_t mainStackPointer) -{ - msr msp, r0 - bx lr -} - -/** - * @brief Reverse byte order in unsigned short value - * - * @param value value to reverse - * @return reversed value - * - * Reverse byte order in unsigned short value - */ -__ASM uint32_t __REV16(uint16_t value) -{ - rev16 r0, r0 - bx lr -} - -/** - * @brief Reverse byte order in signed short value with sign extension to integer - * - * @param value value to reverse - * @return reversed value - * - * Reverse byte order in signed short value with sign extension to integer - */ -__ASM int32_t __REVSH(int16_t value) -{ - revsh r0, r0 - bx lr -} - - -#if (__ARMCC_VERSION < 400000) - -/** - * @brief Remove the exclusive lock created by ldrex - * - * Removes the exclusive lock which is created by ldrex. - */ -__ASM void __CLREX(void) -{ - clrex -} - -/** - * @brief Return the Base Priority value - * - * @return BasePriority - * - * Return the content of the base priority register - */ -__ASM uint32_t __get_BASEPRI(void) -{ - mrs r0, basepri - bx lr -} - -/** - * @brief Set the Base Priority value - * - * @param basePri BasePriority - * - * Set the base priority register - */ -__ASM void __set_BASEPRI(uint32_t basePri) -{ - msr basepri, r0 - bx lr -} - -/** - * @brief Return the Priority Mask value - * - * @return PriMask - * - * Return state of the priority mask bit from the priority mask register - */ -__ASM uint32_t __get_PRIMASK(void) -{ - mrs r0, primask - bx lr -} - -/** - * @brief Set the Priority Mask value - * - * @param priMask PriMask - * - * Set the priority mask bit in the priority mask register - */ -__ASM void __set_PRIMASK(uint32_t priMask) -{ - msr primask, r0 - bx lr -} - -/** - * @brief Return the Fault Mask value - * - * @return FaultMask - * - * Return the content of the fault mask register - */ -__ASM uint32_t __get_FAULTMASK(void) -{ - mrs r0, faultmask - bx lr -} - -/** - * @brief Set the Fault Mask value - * - * @param faultMask faultMask value - * - * Set the fault mask register - */ -__ASM void __set_FAULTMASK(uint32_t faultMask) -{ - msr faultmask, r0 - bx lr -} - -/** - * @brief Return the Control Register value - * - * @return Control value - * - * Return the content of the control register - */ -__ASM uint32_t __get_CONTROL(void) -{ - mrs r0, control - bx lr -} - -/** - * @brief Set the Control Register value - * - * @param control Control value - * - * Set the control register - */ -__ASM void __set_CONTROL(uint32_t control) -{ - msr control, r0 - bx lr -} - -#endif /* __ARMCC_VERSION */ - - - -#elif (defined (__ICCARM__)) /*------------------ ICC Compiler -------------------*/ -/* IAR iccarm specific functions */ -#pragma diag_suppress=Pe940 - -/** - * @brief Return the Process Stack Pointer - * - * @return ProcessStackPointer - * - * Return the actual process stack pointer - */ -uint32_t __get_PSP(void) -{ - __ASM("mrs r0, psp"); - __ASM("bx lr"); -} - -/** - * @brief Set the Process Stack Pointer - * - * @param topOfProcStack Process Stack Pointer - * - * Assign the value ProcessStackPointer to the MSP - * (process stack pointer) Cortex processor register - */ -void __set_PSP(uint32_t topOfProcStack) -{ - __ASM("msr psp, r0"); - __ASM("bx lr"); -} - -/** - * @brief Return the Main Stack Pointer - * - * @return Main Stack Pointer - * - * Return the current value of the MSP (main stack pointer) - * Cortex processor register - */ -uint32_t __get_MSP(void) -{ - __ASM("mrs r0, msp"); - __ASM("bx lr"); -} - -/** - * @brief Set the Main Stack Pointer - * - * @param topOfMainStack Main Stack Pointer - * - * Assign the value mainStackPointer to the MSP - * (main stack pointer) Cortex processor register - */ -void __set_MSP(uint32_t topOfMainStack) -{ - __ASM("msr msp, r0"); - __ASM("bx lr"); -} - -/** - * @brief Reverse byte order in unsigned short value - * - * @param value value to reverse - * @return reversed value - * - * Reverse byte order in unsigned short value - */ -uint32_t __REV16(uint16_t value) -{ - __ASM("rev16 r0, r0"); - __ASM("bx lr"); -} - -/** - * @brief Reverse bit order of value - * - * @param value value to reverse - * @return reversed value - * - * Reverse bit order of value - */ -uint32_t __RBIT(uint32_t value) -{ - __ASM("rbit r0, r0"); - __ASM("bx lr"); -} - -/** - * @brief LDR Exclusive (8 bit) - * - * @param *addr address pointer - * @return value of (*address) - * - * Exclusive LDR command for 8 bit values) - */ -uint8_t __LDREXB(uint8_t *addr) -{ - __ASM("ldrexb r0, [r0]"); - __ASM("bx lr"); -} - -/** - * @brief LDR Exclusive (16 bit) - * - * @param *addr address pointer - * @return value of (*address) - * - * Exclusive LDR command for 16 bit values - */ -uint16_t __LDREXH(uint16_t *addr) -{ - __ASM("ldrexh r0, [r0]"); - __ASM("bx lr"); -} - -/** - * @brief LDR Exclusive (32 bit) - * - * @param *addr address pointer - * @return value of (*address) - * - * Exclusive LDR command for 32 bit values - */ -uint32_t __LDREXW(uint32_t *addr) -{ - __ASM("ldrex r0, [r0]"); - __ASM("bx lr"); -} - -/** - * @brief STR Exclusive (8 bit) - * - * @param value value to store - * @param *addr address pointer - * @return successful / failed - * - * Exclusive STR command for 8 bit values - */ -uint32_t __STREXB(uint8_t value, uint8_t *addr) -{ - __ASM("strexb r0, r0, [r1]"); - __ASM("bx lr"); -} - -/** - * @brief STR Exclusive (16 bit) - * - * @param value value to store - * @param *addr address pointer - * @return successful / failed - * - * Exclusive STR command for 16 bit values - */ -uint32_t __STREXH(uint16_t value, uint16_t *addr) -{ - __ASM("strexh r0, r0, [r1]"); - __ASM("bx lr"); -} - -/** - * @brief STR Exclusive (32 bit) - * - * @param value value to store - * @param *addr address pointer - * @return successful / failed - * - * Exclusive STR command for 32 bit values - */ -uint32_t __STREXW(uint32_t value, uint32_t *addr) -{ - __ASM("strex r0, r0, [r1]"); - __ASM("bx lr"); -} - -#pragma diag_default=Pe940 - - -#elif (defined (__GNUC__)) /*------------------ GNU Compiler ---------------------*/ -/* GNU gcc specific functions */ - -/** - * @brief Return the Process Stack Pointer - * - * @return ProcessStackPointer - * - * Return the actual process stack pointer - */ -uint32_t __get_PSP(void) __attribute__( ( naked ) ); -uint32_t __get_PSP(void) -{ - uint32_t result=0; - - __ASM volatile ("MRS %0, psp\n\t" - "MOV r0, %0 \n\t" - "BX lr \n\t" : "=r" (result) ); - return(result); -} - -/** - * @brief Set the Process Stack Pointer - * - * @param topOfProcStack Process Stack Pointer - * - * Assign the value ProcessStackPointer to the MSP - * (process stack pointer) Cortex processor register - */ -void __set_PSP(uint32_t topOfProcStack) __attribute__( ( naked ) ); -void __set_PSP(uint32_t topOfProcStack) -{ - __ASM volatile ("MSR psp, %0\n\t" - "BX lr \n\t" : : "r" (topOfProcStack) ); -} - -/** - * @brief Return the Main Stack Pointer - * - * @return Main Stack Pointer - * - * Return the current value of the MSP (main stack pointer) - * Cortex processor register - */ -uint32_t __get_MSP(void) __attribute__( ( naked ) ); -uint32_t __get_MSP(void) -{ - uint32_t result=0; - - __ASM volatile ("MRS %0, msp\n\t" - "MOV r0, %0 \n\t" - "BX lr \n\t" : "=r" (result) ); - return(result); -} - -/** - * @brief Set the Main Stack Pointer - * - * @param topOfMainStack Main Stack Pointer - * - * Assign the value mainStackPointer to the MSP - * (main stack pointer) Cortex processor register - */ -void __set_MSP(uint32_t topOfMainStack) __attribute__( ( naked ) ); -void __set_MSP(uint32_t topOfMainStack) -{ - __ASM volatile ("MSR msp, %0\n\t" - "BX lr \n\t" : : "r" (topOfMainStack) ); -} - -/** - * @brief Return the Base Priority value - * - * @return BasePriority - * - * Return the content of the base priority register - */ -uint32_t __get_BASEPRI(void) -{ - uint32_t result=0; - - __ASM volatile ("MRS %0, basepri_max" : "=r" (result) ); - return(result); -} - -/** - * @brief Set the Base Priority value - * - * @param basePri BasePriority - * - * Set the base priority register - */ -void __set_BASEPRI(uint32_t value) -{ - __ASM volatile ("MSR basepri, %0" : : "r" (value) ); -} - -/** - * @brief Return the Priority Mask value - * - * @return PriMask - * - * Return state of the priority mask bit from the priority mask register - */ -uint32_t __get_PRIMASK(void) -{ - uint32_t result=0; - - __ASM volatile ("MRS %0, primask" : "=r" (result) ); - return(result); -} - -/** - * @brief Set the Priority Mask value - * - * @param priMask PriMask - * - * Set the priority mask bit in the priority mask register - */ -void __set_PRIMASK(uint32_t priMask) -{ - __ASM volatile ("MSR primask, %0" : : "r" (priMask) ); -} - -/** - * @brief Return the Fault Mask value - * - * @return FaultMask - * - * Return the content of the fault mask register - */ -uint32_t __get_FAULTMASK(void) -{ - uint32_t result=0; - - __ASM volatile ("MRS %0, faultmask" : "=r" (result) ); - return(result); -} - -/** - * @brief Set the Fault Mask value - * - * @param faultMask faultMask value - * - * Set the fault mask register - */ -void __set_FAULTMASK(uint32_t faultMask) -{ - __ASM volatile ("MSR faultmask, %0" : : "r" (faultMask) ); -} - -/** - * @brief Return the Control Register value -* -* @return Control value - * - * Return the content of the control register - */ -uint32_t __get_CONTROL(void) -{ - uint32_t result=0; - - __ASM volatile ("MRS %0, control" : "=r" (result) ); - return(result); -} - -/** - * @brief Set the Control Register value - * - * @param control Control value - * - * Set the control register - */ -void __set_CONTROL(uint32_t control) -{ - __ASM volatile ("MSR control, %0" : : "r" (control) ); -} - - -/** - * @brief Reverse byte order in integer value - * - * @param value value to reverse - * @return reversed value - * - * Reverse byte order in integer value - */ -uint32_t __REV(uint32_t value) -{ - uint32_t result=0; - - __ASM volatile ("rev %0, %1" : "=r" (result) : "r" (value) ); - return(result); -} - -/** - * @brief Reverse byte order in unsigned short value - * - * @param value value to reverse - * @return reversed value - * - * Reverse byte order in unsigned short value - */ -uint32_t __REV16(uint16_t value) -{ - uint32_t result=0; - - __ASM volatile ("rev16 %0, %1" : "=r" (result) : "r" (value) ); - return(result); -} - -/** - * @brief Reverse byte order in signed short value with sign extension to integer - * - * @param value value to reverse - * @return reversed value - * - * Reverse byte order in signed short value with sign extension to integer - */ -int32_t __REVSH(int16_t value) -{ - uint32_t result=0; - - __ASM volatile ("revsh %0, %1" : "=r" (result) : "r" (value) ); - return(result); -} - -/** - * @brief Reverse bit order of value - * - * @param value value to reverse - * @return reversed value - * - * Reverse bit order of value - */ -uint32_t __RBIT(uint32_t value) -{ - uint32_t result=0; - - __ASM volatile ("rbit %0, %1" : "=r" (result) : "r" (value) ); - return(result); -} - -/** - * @brief LDR Exclusive (8 bit) - * - * @param *addr address pointer - * @return value of (*address) - * - * Exclusive LDR command for 8 bit value - */ -uint8_t __LDREXB(uint8_t *addr) -{ - uint8_t result=0; - - __ASM volatile ("ldrexb %0, [%1]" : "=r" (result) : "r" (addr) ); - return(result); -} - -/** - * @brief LDR Exclusive (16 bit) - * - * @param *addr address pointer - * @return value of (*address) - * - * Exclusive LDR command for 16 bit values - */ -uint16_t __LDREXH(uint16_t *addr) -{ - uint16_t result=0; - - __ASM volatile ("ldrexh %0, [%1]" : "=r" (result) : "r" (addr) ); - return(result); -} - -/** - * @brief LDR Exclusive (32 bit) - * - * @param *addr address pointer - * @return value of (*address) - * - * Exclusive LDR command for 32 bit values - */ -uint32_t __LDREXW(uint32_t *addr) -{ - uint32_t result=0; - - __ASM volatile ("ldrex %0, [%1]" : "=r" (result) : "r" (addr) ); - return(result); -} - -/** - * @brief STR Exclusive (8 bit) - * - * @param value value to store - * @param *addr address pointer - * @return successful / failed - * - * Exclusive STR command for 8 bit values - */ -uint32_t __STREXB(uint8_t value, uint8_t *addr) -{ - uint32_t result=0; - - __ASM volatile ("strexb %0, %2, [%1]" : "=&r" (result) : "r" (addr), "r" (value) ); - return(result); -} - -/** - * @brief STR Exclusive (16 bit) - * - * @param value value to store - * @param *addr address pointer - * @return successful / failed - * - * Exclusive STR command for 16 bit values - */ -uint32_t __STREXH(uint16_t value, uint16_t *addr) -{ - uint32_t result=0; - - __ASM volatile ("strexh %0, %2, [%1]" : "=&r" (result) : "r" (addr), "r" (value) ); - return(result); -} - -/** - * @brief STR Exclusive (32 bit) - * - * @param value value to store - * @param *addr address pointer - * @return successful / failed - * - * Exclusive STR command for 32 bit values - */ -uint32_t __STREXW(uint32_t value, uint32_t *addr) -{ - uint32_t result=0; - - __ASM volatile ("strex %0, %2, [%1]" : "=r" (result) : "r" (addr), "r" (value) ); - return(result); -} - - -#elif (defined (__TASKING__)) /*------------------ TASKING Compiler ---------------------*/ -/* TASKING carm specific functions */ - -/* - * The CMSIS functions have been implemented as intrinsics in the compiler. - * Please use "carm -?i" to get an up to date list of all instrinsics, - * Including the CMSIS ones. - */ - -#endif diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/CMSIS/core_cm3.h b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/CMSIS/core_cm3.h deleted file mode 100644 index e0565d7d4..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/CMSIS/core_cm3.h +++ /dev/null @@ -1,1818 +0,0 @@ -/**************************************************************************//** - * @file core_cm3.h - * @brief CMSIS Cortex-M3 Core Peripheral Access Layer Header File - * @version V1.30 - * @date 30. October 2009 - * - * @note - * Copyright (C) 2009 ARM Limited. All rights reserved. - * - * @par - * ARM Limited (ARM) is supplying this software for use with Cortex-M - * processor based microcontrollers. This file can be freely distributed - * within development tools that are supporting such ARM based processors. - * - * @par - * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED - * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. - * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR - * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. - * - ******************************************************************************/ - -#ifndef __CM3_CORE_H__ -#define __CM3_CORE_H__ - -/** @addtogroup CMSIS_CM3_core_LintCinfiguration CMSIS CM3 Core Lint Configuration - * - * List of Lint messages which will be suppressed and not shown: - * - Error 10: \n - * register uint32_t __regBasePri __asm("basepri"); \n - * Error 10: Expecting ';' - * . - * - Error 530: \n - * return(__regBasePri); \n - * Warning 530: Symbol '__regBasePri' (line 264) not initialized - * . - * - Error 550: \n - * __regBasePri = (basePri & 0x1ff); \n - * Warning 550: Symbol '__regBasePri' (line 271) not accessed - * . - * - Error 754: \n - * uint32_t RESERVED0[24]; \n - * Info 754: local structure member '' (line 109, file ./cm3_core.h) not referenced - * . - * - Error 750: \n - * #define __CM3_CORE_H__ \n - * Info 750: local macro '__CM3_CORE_H__' (line 43, file./cm3_core.h) not referenced - * . - * - Error 528: \n - * static __INLINE void NVIC_DisableIRQ(uint32_t IRQn) \n - * Warning 528: Symbol 'NVIC_DisableIRQ(unsigned int)' (line 419, file ./cm3_core.h) not referenced - * . - * - Error 751: \n - * } InterruptType_Type; \n - * Info 751: local typedef 'InterruptType_Type' (line 170, file ./cm3_core.h) not referenced - * . - * Note: To re-enable a Message, insert a space before 'lint' * - * - */ - -/*lint -save */ -/*lint -e10 */ -/*lint -e530 */ -/*lint -e550 */ -/*lint -e754 */ -/*lint -e750 */ -/*lint -e528 */ -/*lint -e751 */ - - -/** @addtogroup CMSIS_CM3_core_definitions CM3 Core Definitions - This file defines all structures and symbols for CMSIS core: - - CMSIS version number - - Cortex-M core registers and bitfields - - Cortex-M core peripheral base address - @{ - */ - -#ifdef __cplusplus - extern "C" { -#endif - -#define __CM3_CMSIS_VERSION_MAIN (0x01) /*!< [31:16] CMSIS HAL main version */ -#define __CM3_CMSIS_VERSION_SUB (0x30) /*!< [15:0] CMSIS HAL sub version */ -#define __CM3_CMSIS_VERSION ((__CM3_CMSIS_VERSION_MAIN << 16) | __CM3_CMSIS_VERSION_SUB) /*!< CMSIS HAL version number */ - -#define __CORTEX_M (0x03) /*!< Cortex core */ - -#include /* Include standard types */ - -#if defined (__ICCARM__) - #include /* IAR Intrinsics */ -#endif - - -#ifndef __NVIC_PRIO_BITS - #define __NVIC_PRIO_BITS 4 /*!< standard definition for NVIC Priority Bits */ -#endif - - - - -/** - * IO definitions - * - * define access restrictions to peripheral registers - */ - -#ifdef __cplusplus - #define __I volatile /*!< defines 'read only' permissions */ -#else - #define __I volatile const /*!< defines 'read only' permissions */ -#endif -#define __O volatile /*!< defines 'write only' permissions */ -#define __IO volatile /*!< defines 'read / write' permissions */ - - - -/******************************************************************************* - * Register Abstraction - ******************************************************************************/ -/** @addtogroup CMSIS_CM3_core_register CMSIS CM3 Core Register - @{ -*/ - - -/** @addtogroup CMSIS_CM3_NVIC CMSIS CM3 NVIC - memory mapped structure for Nested Vectored Interrupt Controller (NVIC) - @{ - */ -typedef struct -{ - __IO uint32_t ISER[8]; /*!< Offset: 0x000 Interrupt Set Enable Register */ - uint32_t RESERVED0[24]; - __IO uint32_t ICER[8]; /*!< Offset: 0x080 Interrupt Clear Enable Register */ - uint32_t RSERVED1[24]; - __IO uint32_t ISPR[8]; /*!< Offset: 0x100 Interrupt Set Pending Register */ - uint32_t RESERVED2[24]; - __IO uint32_t ICPR[8]; /*!< Offset: 0x180 Interrupt Clear Pending Register */ - uint32_t RESERVED3[24]; - __IO uint32_t IABR[8]; /*!< Offset: 0x200 Interrupt Active bit Register */ - uint32_t RESERVED4[56]; - __IO uint8_t IP[240]; /*!< Offset: 0x300 Interrupt Priority Register (8Bit wide) */ - uint32_t RESERVED5[644]; - __O uint32_t STIR; /*!< Offset: 0xE00 Software Trigger Interrupt Register */ -} NVIC_Type; -/*@}*/ /* end of group CMSIS_CM3_NVIC */ - - -/** @addtogroup CMSIS_CM3_SCB CMSIS CM3 SCB - memory mapped structure for System Control Block (SCB) - @{ - */ -typedef struct -{ - __I uint32_t CPUID; /*!< Offset: 0x00 CPU ID Base Register */ - __IO uint32_t ICSR; /*!< Offset: 0x04 Interrupt Control State Register */ - __IO uint32_t VTOR; /*!< Offset: 0x08 Vector Table Offset Register */ - __IO uint32_t AIRCR; /*!< Offset: 0x0C Application Interrupt / Reset Control Register */ - __IO uint32_t SCR; /*!< Offset: 0x10 System Control Register */ - __IO uint32_t CCR; /*!< Offset: 0x14 Configuration Control Register */ - __IO uint8_t SHP[12]; /*!< Offset: 0x18 System Handlers Priority Registers (4-7, 8-11, 12-15) */ - __IO uint32_t SHCSR; /*!< Offset: 0x24 System Handler Control and State Register */ - __IO uint32_t CFSR; /*!< Offset: 0x28 Configurable Fault Status Register */ - __IO uint32_t HFSR; /*!< Offset: 0x2C Hard Fault Status Register */ - __IO uint32_t DFSR; /*!< Offset: 0x30 Debug Fault Status Register */ - __IO uint32_t MMFAR; /*!< Offset: 0x34 Mem Manage Address Register */ - __IO uint32_t BFAR; /*!< Offset: 0x38 Bus Fault Address Register */ - __IO uint32_t AFSR; /*!< Offset: 0x3C Auxiliary Fault Status Register */ - __I uint32_t PFR[2]; /*!< Offset: 0x40 Processor Feature Register */ - __I uint32_t DFR; /*!< Offset: 0x48 Debug Feature Register */ - __I uint32_t ADR; /*!< Offset: 0x4C Auxiliary Feature Register */ - __I uint32_t MMFR[4]; /*!< Offset: 0x50 Memory Model Feature Register */ - __I uint32_t ISAR[5]; /*!< Offset: 0x60 ISA Feature Register */ -} SCB_Type; - -/* SCB CPUID Register Definitions */ -#define SCB_CPUID_IMPLEMENTER_Pos 24 /*!< SCB CPUID: IMPLEMENTER Position */ -#define SCB_CPUID_IMPLEMENTER_Msk (0xFFul << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */ - -#define SCB_CPUID_VARIANT_Pos 20 /*!< SCB CPUID: VARIANT Position */ -#define SCB_CPUID_VARIANT_Msk (0xFul << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */ - -#define SCB_CPUID_PARTNO_Pos 4 /*!< SCB CPUID: PARTNO Position */ -#define SCB_CPUID_PARTNO_Msk (0xFFFul << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */ - -#define SCB_CPUID_REVISION_Pos 0 /*!< SCB CPUID: REVISION Position */ -#define SCB_CPUID_REVISION_Msk (0xFul << SCB_CPUID_REVISION_Pos) /*!< SCB CPUID: REVISION Mask */ - -/* SCB Interrupt Control State Register Definitions */ -#define SCB_ICSR_NMIPENDSET_Pos 31 /*!< SCB ICSR: NMIPENDSET Position */ -#define SCB_ICSR_NMIPENDSET_Msk (1ul << SCB_ICSR_NMIPENDSET_Pos) /*!< SCB ICSR: NMIPENDSET Mask */ - -#define SCB_ICSR_PENDSVSET_Pos 28 /*!< SCB ICSR: PENDSVSET Position */ -#define SCB_ICSR_PENDSVSET_Msk (1ul << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */ - -#define SCB_ICSR_PENDSVCLR_Pos 27 /*!< SCB ICSR: PENDSVCLR Position */ -#define SCB_ICSR_PENDSVCLR_Msk (1ul << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */ - -#define SCB_ICSR_PENDSTSET_Pos 26 /*!< SCB ICSR: PENDSTSET Position */ -#define SCB_ICSR_PENDSTSET_Msk (1ul << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */ - -#define SCB_ICSR_PENDSTCLR_Pos 25 /*!< SCB ICSR: PENDSTCLR Position */ -#define SCB_ICSR_PENDSTCLR_Msk (1ul << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */ - -#define SCB_ICSR_ISRPREEMPT_Pos 23 /*!< SCB ICSR: ISRPREEMPT Position */ -#define SCB_ICSR_ISRPREEMPT_Msk (1ul << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */ - -#define SCB_ICSR_ISRPENDING_Pos 22 /*!< SCB ICSR: ISRPENDING Position */ -#define SCB_ICSR_ISRPENDING_Msk (1ul << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */ - -#define SCB_ICSR_VECTPENDING_Pos 12 /*!< SCB ICSR: VECTPENDING Position */ -#define SCB_ICSR_VECTPENDING_Msk (0x1FFul << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */ - -#define SCB_ICSR_RETTOBASE_Pos 11 /*!< SCB ICSR: RETTOBASE Position */ -#define SCB_ICSR_RETTOBASE_Msk (1ul << SCB_ICSR_RETTOBASE_Pos) /*!< SCB ICSR: RETTOBASE Mask */ - -#define SCB_ICSR_VECTACTIVE_Pos 0 /*!< SCB ICSR: VECTACTIVE Position */ -#define SCB_ICSR_VECTACTIVE_Msk (0x1FFul << SCB_ICSR_VECTACTIVE_Pos) /*!< SCB ICSR: VECTACTIVE Mask */ - -/* SCB Interrupt Control State Register Definitions */ -#define SCB_VTOR_TBLBASE_Pos 29 /*!< SCB VTOR: TBLBASE Position */ -#define SCB_VTOR_TBLBASE_Msk (0x1FFul << SCB_VTOR_TBLBASE_Pos) /*!< SCB VTOR: TBLBASE Mask */ - -#define SCB_VTOR_TBLOFF_Pos 7 /*!< SCB VTOR: TBLOFF Position */ -#define SCB_VTOR_TBLOFF_Msk (0x3FFFFFul << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF Mask */ - -/* SCB Application Interrupt and Reset Control Register Definitions */ -#define SCB_AIRCR_VECTKEY_Pos 16 /*!< SCB AIRCR: VECTKEY Position */ -#define SCB_AIRCR_VECTKEY_Msk (0xFFFFul << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */ - -#define SCB_AIRCR_VECTKEYSTAT_Pos 16 /*!< SCB AIRCR: VECTKEYSTAT Position */ -#define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFul << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */ - -#define SCB_AIRCR_ENDIANESS_Pos 15 /*!< SCB AIRCR: ENDIANESS Position */ -#define SCB_AIRCR_ENDIANESS_Msk (1ul << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */ - -#define SCB_AIRCR_PRIGROUP_Pos 8 /*!< SCB AIRCR: PRIGROUP Position */ -#define SCB_AIRCR_PRIGROUP_Msk (7ul << SCB_AIRCR_PRIGROUP_Pos) /*!< SCB AIRCR: PRIGROUP Mask */ - -#define SCB_AIRCR_SYSRESETREQ_Pos 2 /*!< SCB AIRCR: SYSRESETREQ Position */ -#define SCB_AIRCR_SYSRESETREQ_Msk (1ul << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */ - -#define SCB_AIRCR_VECTCLRACTIVE_Pos 1 /*!< SCB AIRCR: VECTCLRACTIVE Position */ -#define SCB_AIRCR_VECTCLRACTIVE_Msk (1ul << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */ - -#define SCB_AIRCR_VECTRESET_Pos 0 /*!< SCB AIRCR: VECTRESET Position */ -#define SCB_AIRCR_VECTRESET_Msk (1ul << SCB_AIRCR_VECTRESET_Pos) /*!< SCB AIRCR: VECTRESET Mask */ - -/* SCB System Control Register Definitions */ -#define SCB_SCR_SEVONPEND_Pos 4 /*!< SCB SCR: SEVONPEND Position */ -#define SCB_SCR_SEVONPEND_Msk (1ul << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */ - -#define SCB_SCR_SLEEPDEEP_Pos 2 /*!< SCB SCR: SLEEPDEEP Position */ -#define SCB_SCR_SLEEPDEEP_Msk (1ul << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */ - -#define SCB_SCR_SLEEPONEXIT_Pos 1 /*!< SCB SCR: SLEEPONEXIT Position */ -#define SCB_SCR_SLEEPONEXIT_Msk (1ul << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */ - -/* SCB Configuration Control Register Definitions */ -#define SCB_CCR_STKALIGN_Pos 9 /*!< SCB CCR: STKALIGN Position */ -#define SCB_CCR_STKALIGN_Msk (1ul << SCB_CCR_STKALIGN_Pos) /*!< SCB CCR: STKALIGN Mask */ - -#define SCB_CCR_BFHFNMIGN_Pos 8 /*!< SCB CCR: BFHFNMIGN Position */ -#define SCB_CCR_BFHFNMIGN_Msk (1ul << SCB_CCR_BFHFNMIGN_Pos) /*!< SCB CCR: BFHFNMIGN Mask */ - -#define SCB_CCR_DIV_0_TRP_Pos 4 /*!< SCB CCR: DIV_0_TRP Position */ -#define SCB_CCR_DIV_0_TRP_Msk (1ul << SCB_CCR_DIV_0_TRP_Pos) /*!< SCB CCR: DIV_0_TRP Mask */ - -#define SCB_CCR_UNALIGN_TRP_Pos 3 /*!< SCB CCR: UNALIGN_TRP Position */ -#define SCB_CCR_UNALIGN_TRP_Msk (1ul << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */ - -#define SCB_CCR_USERSETMPEND_Pos 1 /*!< SCB CCR: USERSETMPEND Position */ -#define SCB_CCR_USERSETMPEND_Msk (1ul << SCB_CCR_USERSETMPEND_Pos) /*!< SCB CCR: USERSETMPEND Mask */ - -#define SCB_CCR_NONBASETHRDENA_Pos 0 /*!< SCB CCR: NONBASETHRDENA Position */ -#define SCB_CCR_NONBASETHRDENA_Msk (1ul << SCB_CCR_NONBASETHRDENA_Pos) /*!< SCB CCR: NONBASETHRDENA Mask */ - -/* SCB System Handler Control and State Register Definitions */ -#define SCB_SHCSR_USGFAULTENA_Pos 18 /*!< SCB SHCSR: USGFAULTENA Position */ -#define SCB_SHCSR_USGFAULTENA_Msk (1ul << SCB_SHCSR_USGFAULTENA_Pos) /*!< SCB SHCSR: USGFAULTENA Mask */ - -#define SCB_SHCSR_BUSFAULTENA_Pos 17 /*!< SCB SHCSR: BUSFAULTENA Position */ -#define SCB_SHCSR_BUSFAULTENA_Msk (1ul << SCB_SHCSR_BUSFAULTENA_Pos) /*!< SCB SHCSR: BUSFAULTENA Mask */ - -#define SCB_SHCSR_MEMFAULTENA_Pos 16 /*!< SCB SHCSR: MEMFAULTENA Position */ -#define SCB_SHCSR_MEMFAULTENA_Msk (1ul << SCB_SHCSR_MEMFAULTENA_Pos) /*!< SCB SHCSR: MEMFAULTENA Mask */ - -#define SCB_SHCSR_SVCALLPENDED_Pos 15 /*!< SCB SHCSR: SVCALLPENDED Position */ -#define SCB_SHCSR_SVCALLPENDED_Msk (1ul << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ - -#define SCB_SHCSR_BUSFAULTPENDED_Pos 14 /*!< SCB SHCSR: BUSFAULTPENDED Position */ -#define SCB_SHCSR_BUSFAULTPENDED_Msk (1ul << SCB_SHCSR_BUSFAULTPENDED_Pos) /*!< SCB SHCSR: BUSFAULTPENDED Mask */ - -#define SCB_SHCSR_MEMFAULTPENDED_Pos 13 /*!< SCB SHCSR: MEMFAULTPENDED Position */ -#define SCB_SHCSR_MEMFAULTPENDED_Msk (1ul << SCB_SHCSR_MEMFAULTPENDED_Pos) /*!< SCB SHCSR: MEMFAULTPENDED Mask */ - -#define SCB_SHCSR_USGFAULTPENDED_Pos 12 /*!< SCB SHCSR: USGFAULTPENDED Position */ -#define SCB_SHCSR_USGFAULTPENDED_Msk (1ul << SCB_SHCSR_USGFAULTPENDED_Pos) /*!< SCB SHCSR: USGFAULTPENDED Mask */ - -#define SCB_SHCSR_SYSTICKACT_Pos 11 /*!< SCB SHCSR: SYSTICKACT Position */ -#define SCB_SHCSR_SYSTICKACT_Msk (1ul << SCB_SHCSR_SYSTICKACT_Pos) /*!< SCB SHCSR: SYSTICKACT Mask */ - -#define SCB_SHCSR_PENDSVACT_Pos 10 /*!< SCB SHCSR: PENDSVACT Position */ -#define SCB_SHCSR_PENDSVACT_Msk (1ul << SCB_SHCSR_PENDSVACT_Pos) /*!< SCB SHCSR: PENDSVACT Mask */ - -#define SCB_SHCSR_MONITORACT_Pos 8 /*!< SCB SHCSR: MONITORACT Position */ -#define SCB_SHCSR_MONITORACT_Msk (1ul << SCB_SHCSR_MONITORACT_Pos) /*!< SCB SHCSR: MONITORACT Mask */ - -#define SCB_SHCSR_SVCALLACT_Pos 7 /*!< SCB SHCSR: SVCALLACT Position */ -#define SCB_SHCSR_SVCALLACT_Msk (1ul << SCB_SHCSR_SVCALLACT_Pos) /*!< SCB SHCSR: SVCALLACT Mask */ - -#define SCB_SHCSR_USGFAULTACT_Pos 3 /*!< SCB SHCSR: USGFAULTACT Position */ -#define SCB_SHCSR_USGFAULTACT_Msk (1ul << SCB_SHCSR_USGFAULTACT_Pos) /*!< SCB SHCSR: USGFAULTACT Mask */ - -#define SCB_SHCSR_BUSFAULTACT_Pos 1 /*!< SCB SHCSR: BUSFAULTACT Position */ -#define SCB_SHCSR_BUSFAULTACT_Msk (1ul << SCB_SHCSR_BUSFAULTACT_Pos) /*!< SCB SHCSR: BUSFAULTACT Mask */ - -#define SCB_SHCSR_MEMFAULTACT_Pos 0 /*!< SCB SHCSR: MEMFAULTACT Position */ -#define SCB_SHCSR_MEMFAULTACT_Msk (1ul << SCB_SHCSR_MEMFAULTACT_Pos) /*!< SCB SHCSR: MEMFAULTACT Mask */ - -/* SCB Configurable Fault Status Registers Definitions */ -#define SCB_CFSR_USGFAULTSR_Pos 16 /*!< SCB CFSR: Usage Fault Status Register Position */ -#define SCB_CFSR_USGFAULTSR_Msk (0xFFFFul << SCB_CFSR_USGFAULTSR_Pos) /*!< SCB CFSR: Usage Fault Status Register Mask */ - -#define SCB_CFSR_BUSFAULTSR_Pos 8 /*!< SCB CFSR: Bus Fault Status Register Position */ -#define SCB_CFSR_BUSFAULTSR_Msk (0xFFul << SCB_CFSR_BUSFAULTSR_Pos) /*!< SCB CFSR: Bus Fault Status Register Mask */ - -#define SCB_CFSR_MEMFAULTSR_Pos 0 /*!< SCB CFSR: Memory Manage Fault Status Register Position */ -#define SCB_CFSR_MEMFAULTSR_Msk (0xFFul << SCB_CFSR_MEMFAULTSR_Pos) /*!< SCB CFSR: Memory Manage Fault Status Register Mask */ - -/* SCB Hard Fault Status Registers Definitions */ -#define SCB_HFSR_DEBUGEVT_Pos 31 /*!< SCB HFSR: DEBUGEVT Position */ -#define SCB_HFSR_DEBUGEVT_Msk (1ul << SCB_HFSR_DEBUGEVT_Pos) /*!< SCB HFSR: DEBUGEVT Mask */ - -#define SCB_HFSR_FORCED_Pos 30 /*!< SCB HFSR: FORCED Position */ -#define SCB_HFSR_FORCED_Msk (1ul << SCB_HFSR_FORCED_Pos) /*!< SCB HFSR: FORCED Mask */ - -#define SCB_HFSR_VECTTBL_Pos 1 /*!< SCB HFSR: VECTTBL Position */ -#define SCB_HFSR_VECTTBL_Msk (1ul << SCB_HFSR_VECTTBL_Pos) /*!< SCB HFSR: VECTTBL Mask */ - -/* SCB Debug Fault Status Register Definitions */ -#define SCB_DFSR_EXTERNAL_Pos 4 /*!< SCB DFSR: EXTERNAL Position */ -#define SCB_DFSR_EXTERNAL_Msk (1ul << SCB_DFSR_EXTERNAL_Pos) /*!< SCB DFSR: EXTERNAL Mask */ - -#define SCB_DFSR_VCATCH_Pos 3 /*!< SCB DFSR: VCATCH Position */ -#define SCB_DFSR_VCATCH_Msk (1ul << SCB_DFSR_VCATCH_Pos) /*!< SCB DFSR: VCATCH Mask */ - -#define SCB_DFSR_DWTTRAP_Pos 2 /*!< SCB DFSR: DWTTRAP Position */ -#define SCB_DFSR_DWTTRAP_Msk (1ul << SCB_DFSR_DWTTRAP_Pos) /*!< SCB DFSR: DWTTRAP Mask */ - -#define SCB_DFSR_BKPT_Pos 1 /*!< SCB DFSR: BKPT Position */ -#define SCB_DFSR_BKPT_Msk (1ul << SCB_DFSR_BKPT_Pos) /*!< SCB DFSR: BKPT Mask */ - -#define SCB_DFSR_HALTED_Pos 0 /*!< SCB DFSR: HALTED Position */ -#define SCB_DFSR_HALTED_Msk (1ul << SCB_DFSR_HALTED_Pos) /*!< SCB DFSR: HALTED Mask */ -/*@}*/ /* end of group CMSIS_CM3_SCB */ - - -/** @addtogroup CMSIS_CM3_SysTick CMSIS CM3 SysTick - memory mapped structure for SysTick - @{ - */ -typedef struct -{ - __IO uint32_t CTRL; /*!< Offset: 0x00 SysTick Control and Status Register */ - __IO uint32_t LOAD; /*!< Offset: 0x04 SysTick Reload Value Register */ - __IO uint32_t VAL; /*!< Offset: 0x08 SysTick Current Value Register */ - __I uint32_t CALIB; /*!< Offset: 0x0C SysTick Calibration Register */ -} SysTick_Type; - -/* SysTick Control / Status Register Definitions */ -#define SysTick_CTRL_COUNTFLAG_Pos 16 /*!< SysTick CTRL: COUNTFLAG Position */ -#define SysTick_CTRL_COUNTFLAG_Msk (1ul << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */ - -#define SysTick_CTRL_CLKSOURCE_Pos 2 /*!< SysTick CTRL: CLKSOURCE Position */ -#define SysTick_CTRL_CLKSOURCE_Msk (1ul << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */ - -#define SysTick_CTRL_TICKINT_Pos 1 /*!< SysTick CTRL: TICKINT Position */ -#define SysTick_CTRL_TICKINT_Msk (1ul << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */ - -#define SysTick_CTRL_ENABLE_Pos 0 /*!< SysTick CTRL: ENABLE Position */ -#define SysTick_CTRL_ENABLE_Msk (1ul << SysTick_CTRL_ENABLE_Pos) /*!< SysTick CTRL: ENABLE Mask */ - -/* SysTick Reload Register Definitions */ -#define SysTick_LOAD_RELOAD_Pos 0 /*!< SysTick LOAD: RELOAD Position */ -#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFul << SysTick_LOAD_RELOAD_Pos) /*!< SysTick LOAD: RELOAD Mask */ - -/* SysTick Current Register Definitions */ -#define SysTick_VAL_CURRENT_Pos 0 /*!< SysTick VAL: CURRENT Position */ -#define SysTick_VAL_CURRENT_Msk (0xFFFFFFul << SysTick_VAL_CURRENT_Pos) /*!< SysTick VAL: CURRENT Mask */ - -/* SysTick Calibration Register Definitions */ -#define SysTick_CALIB_NOREF_Pos 31 /*!< SysTick CALIB: NOREF Position */ -#define SysTick_CALIB_NOREF_Msk (1ul << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */ - -#define SysTick_CALIB_SKEW_Pos 30 /*!< SysTick CALIB: SKEW Position */ -#define SysTick_CALIB_SKEW_Msk (1ul << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */ - -#define SysTick_CALIB_TENMS_Pos 0 /*!< SysTick CALIB: TENMS Position */ -#define SysTick_CALIB_TENMS_Msk (0xFFFFFFul << SysTick_VAL_CURRENT_Pos) /*!< SysTick CALIB: TENMS Mask */ -/*@}*/ /* end of group CMSIS_CM3_SysTick */ - - -/** @addtogroup CMSIS_CM3_ITM CMSIS CM3 ITM - memory mapped structure for Instrumentation Trace Macrocell (ITM) - @{ - */ -typedef struct -{ - __O union - { - __O uint8_t u8; /*!< Offset: ITM Stimulus Port 8-bit */ - __O uint16_t u16; /*!< Offset: ITM Stimulus Port 16-bit */ - __O uint32_t u32; /*!< Offset: ITM Stimulus Port 32-bit */ - } PORT [32]; /*!< Offset: 0x00 ITM Stimulus Port Registers */ - uint32_t RESERVED0[864]; - __IO uint32_t TER; /*!< Offset: ITM Trace Enable Register */ - uint32_t RESERVED1[15]; - __IO uint32_t TPR; /*!< Offset: ITM Trace Privilege Register */ - uint32_t RESERVED2[15]; - __IO uint32_t TCR; /*!< Offset: ITM Trace Control Register */ - uint32_t RESERVED3[29]; - __IO uint32_t IWR; /*!< Offset: ITM Integration Write Register */ - __IO uint32_t IRR; /*!< Offset: ITM Integration Read Register */ - __IO uint32_t IMCR; /*!< Offset: ITM Integration Mode Control Register */ - uint32_t RESERVED4[43]; - __IO uint32_t LAR; /*!< Offset: ITM Lock Access Register */ - __IO uint32_t LSR; /*!< Offset: ITM Lock Status Register */ - uint32_t RESERVED5[6]; - __I uint32_t PID4; /*!< Offset: ITM Peripheral Identification Register #4 */ - __I uint32_t PID5; /*!< Offset: ITM Peripheral Identification Register #5 */ - __I uint32_t PID6; /*!< Offset: ITM Peripheral Identification Register #6 */ - __I uint32_t PID7; /*!< Offset: ITM Peripheral Identification Register #7 */ - __I uint32_t PID0; /*!< Offset: ITM Peripheral Identification Register #0 */ - __I uint32_t PID1; /*!< Offset: ITM Peripheral Identification Register #1 */ - __I uint32_t PID2; /*!< Offset: ITM Peripheral Identification Register #2 */ - __I uint32_t PID3; /*!< Offset: ITM Peripheral Identification Register #3 */ - __I uint32_t CID0; /*!< Offset: ITM Component Identification Register #0 */ - __I uint32_t CID1; /*!< Offset: ITM Component Identification Register #1 */ - __I uint32_t CID2; /*!< Offset: ITM Component Identification Register #2 */ - __I uint32_t CID3; /*!< Offset: ITM Component Identification Register #3 */ -} ITM_Type; - -/* ITM Trace Privilege Register Definitions */ -#define ITM_TPR_PRIVMASK_Pos 0 /*!< ITM TPR: PRIVMASK Position */ -#define ITM_TPR_PRIVMASK_Msk (0xFul << ITM_TPR_PRIVMASK_Pos) /*!< ITM TPR: PRIVMASK Mask */ - -/* ITM Trace Control Register Definitions */ -#define ITM_TCR_BUSY_Pos 23 /*!< ITM TCR: BUSY Position */ -#define ITM_TCR_BUSY_Msk (1ul << ITM_TCR_BUSY_Pos) /*!< ITM TCR: BUSY Mask */ - -#define ITM_TCR_ATBID_Pos 16 /*!< ITM TCR: ATBID Position */ -#define ITM_TCR_ATBID_Msk (0x7Ful << ITM_TCR_ATBID_Pos) /*!< ITM TCR: ATBID Mask */ - -#define ITM_TCR_TSPrescale_Pos 8 /*!< ITM TCR: TSPrescale Position */ -#define ITM_TCR_TSPrescale_Msk (3ul << ITM_TCR_TSPrescale_Pos) /*!< ITM TCR: TSPrescale Mask */ - -#define ITM_TCR_SWOENA_Pos 4 /*!< ITM TCR: SWOENA Position */ -#define ITM_TCR_SWOENA_Msk (1ul << ITM_TCR_SWOENA_Pos) /*!< ITM TCR: SWOENA Mask */ - -#define ITM_TCR_DWTENA_Pos 3 /*!< ITM TCR: DWTENA Position */ -#define ITM_TCR_DWTENA_Msk (1ul << ITM_TCR_DWTENA_Pos) /*!< ITM TCR: DWTENA Mask */ - -#define ITM_TCR_SYNCENA_Pos 2 /*!< ITM TCR: SYNCENA Position */ -#define ITM_TCR_SYNCENA_Msk (1ul << ITM_TCR_SYNCENA_Pos) /*!< ITM TCR: SYNCENA Mask */ - -#define ITM_TCR_TSENA_Pos 1 /*!< ITM TCR: TSENA Position */ -#define ITM_TCR_TSENA_Msk (1ul << ITM_TCR_TSENA_Pos) /*!< ITM TCR: TSENA Mask */ - -#define ITM_TCR_ITMENA_Pos 0 /*!< ITM TCR: ITM Enable bit Position */ -#define ITM_TCR_ITMENA_Msk (1ul << ITM_TCR_ITMENA_Pos) /*!< ITM TCR: ITM Enable bit Mask */ - -/* ITM Integration Write Register Definitions */ -#define ITM_IWR_ATVALIDM_Pos 0 /*!< ITM IWR: ATVALIDM Position */ -#define ITM_IWR_ATVALIDM_Msk (1ul << ITM_IWR_ATVALIDM_Pos) /*!< ITM IWR: ATVALIDM Mask */ - -/* ITM Integration Read Register Definitions */ -#define ITM_IRR_ATREADYM_Pos 0 /*!< ITM IRR: ATREADYM Position */ -#define ITM_IRR_ATREADYM_Msk (1ul << ITM_IRR_ATREADYM_Pos) /*!< ITM IRR: ATREADYM Mask */ - -/* ITM Integration Mode Control Register Definitions */ -#define ITM_IMCR_INTEGRATION_Pos 0 /*!< ITM IMCR: INTEGRATION Position */ -#define ITM_IMCR_INTEGRATION_Msk (1ul << ITM_IMCR_INTEGRATION_Pos) /*!< ITM IMCR: INTEGRATION Mask */ - -/* ITM Lock Status Register Definitions */ -#define ITM_LSR_ByteAcc_Pos 2 /*!< ITM LSR: ByteAcc Position */ -#define ITM_LSR_ByteAcc_Msk (1ul << ITM_LSR_ByteAcc_Pos) /*!< ITM LSR: ByteAcc Mask */ - -#define ITM_LSR_Access_Pos 1 /*!< ITM LSR: Access Position */ -#define ITM_LSR_Access_Msk (1ul << ITM_LSR_Access_Pos) /*!< ITM LSR: Access Mask */ - -#define ITM_LSR_Present_Pos 0 /*!< ITM LSR: Present Position */ -#define ITM_LSR_Present_Msk (1ul << ITM_LSR_Present_Pos) /*!< ITM LSR: Present Mask */ -/*@}*/ /* end of group CMSIS_CM3_ITM */ - - -/** @addtogroup CMSIS_CM3_InterruptType CMSIS CM3 Interrupt Type - memory mapped structure for Interrupt Type - @{ - */ -typedef struct -{ - uint32_t RESERVED0; - __I uint32_t ICTR; /*!< Offset: 0x04 Interrupt Control Type Register */ -#if ((defined __CM3_REV) && (__CM3_REV >= 0x200)) - __IO uint32_t ACTLR; /*!< Offset: 0x08 Auxiliary Control Register */ -#else - uint32_t RESERVED1; -#endif -} InterruptType_Type; - -/* Interrupt Controller Type Register Definitions */ -#define InterruptType_ICTR_INTLINESNUM_Pos 0 /*!< InterruptType ICTR: INTLINESNUM Position */ -#define InterruptType_ICTR_INTLINESNUM_Msk (0x1Ful << InterruptType_ICTR_INTLINESNUM_Pos) /*!< InterruptType ICTR: INTLINESNUM Mask */ - -/* Auxiliary Control Register Definitions */ -#define InterruptType_ACTLR_DISFOLD_Pos 2 /*!< InterruptType ACTLR: DISFOLD Position */ -#define InterruptType_ACTLR_DISFOLD_Msk (1ul << InterruptType_ACTLR_DISFOLD_Pos) /*!< InterruptType ACTLR: DISFOLD Mask */ - -#define InterruptType_ACTLR_DISDEFWBUF_Pos 1 /*!< InterruptType ACTLR: DISDEFWBUF Position */ -#define InterruptType_ACTLR_DISDEFWBUF_Msk (1ul << InterruptType_ACTLR_DISDEFWBUF_Pos) /*!< InterruptType ACTLR: DISDEFWBUF Mask */ - -#define InterruptType_ACTLR_DISMCYCINT_Pos 0 /*!< InterruptType ACTLR: DISMCYCINT Position */ -#define InterruptType_ACTLR_DISMCYCINT_Msk (1ul << InterruptType_ACTLR_DISMCYCINT_Pos) /*!< InterruptType ACTLR: DISMCYCINT Mask */ -/*@}*/ /* end of group CMSIS_CM3_InterruptType */ - - -#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1) -/** @addtogroup CMSIS_CM3_MPU CMSIS CM3 MPU - memory mapped structure for Memory Protection Unit (MPU) - @{ - */ -typedef struct -{ - __I uint32_t TYPE; /*!< Offset: 0x00 MPU Type Register */ - __IO uint32_t CTRL; /*!< Offset: 0x04 MPU Control Register */ - __IO uint32_t RNR; /*!< Offset: 0x08 MPU Region RNRber Register */ - __IO uint32_t RBAR; /*!< Offset: 0x0C MPU Region Base Address Register */ - __IO uint32_t RASR; /*!< Offset: 0x10 MPU Region Attribute and Size Register */ - __IO uint32_t RBAR_A1; /*!< Offset: 0x14 MPU Alias 1 Region Base Address Register */ - __IO uint32_t RASR_A1; /*!< Offset: 0x18 MPU Alias 1 Region Attribute and Size Register */ - __IO uint32_t RBAR_A2; /*!< Offset: 0x1C MPU Alias 2 Region Base Address Register */ - __IO uint32_t RASR_A2; /*!< Offset: 0x20 MPU Alias 2 Region Attribute and Size Register */ - __IO uint32_t RBAR_A3; /*!< Offset: 0x24 MPU Alias 3 Region Base Address Register */ - __IO uint32_t RASR_A3; /*!< Offset: 0x28 MPU Alias 3 Region Attribute and Size Register */ -} MPU_Type; - -/* MPU Type Register */ -#define MPU_TYPE_IREGION_Pos 16 /*!< MPU TYPE: IREGION Position */ -#define MPU_TYPE_IREGION_Msk (0xFFul << MPU_TYPE_IREGION_Pos) /*!< MPU TYPE: IREGION Mask */ - -#define MPU_TYPE_DREGION_Pos 8 /*!< MPU TYPE: DREGION Position */ -#define MPU_TYPE_DREGION_Msk (0xFFul << MPU_TYPE_DREGION_Pos) /*!< MPU TYPE: DREGION Mask */ - -#define MPU_TYPE_SEPARATE_Pos 0 /*!< MPU TYPE: SEPARATE Position */ -#define MPU_TYPE_SEPARATE_Msk (1ul << MPU_TYPE_SEPARATE_Pos) /*!< MPU TYPE: SEPARATE Mask */ - -/* MPU Control Register */ -#define MPU_CTRL_PRIVDEFENA_Pos 2 /*!< MPU CTRL: PRIVDEFENA Position */ -#define MPU_CTRL_PRIVDEFENA_Msk (1ul << MPU_CTRL_PRIVDEFENA_Pos) /*!< MPU CTRL: PRIVDEFENA Mask */ - -#define MPU_CTRL_HFNMIENA_Pos 1 /*!< MPU CTRL: HFNMIENA Position */ -#define MPU_CTRL_HFNMIENA_Msk (1ul << MPU_CTRL_HFNMIENA_Pos) /*!< MPU CTRL: HFNMIENA Mask */ - -#define MPU_CTRL_ENABLE_Pos 0 /*!< MPU CTRL: ENABLE Position */ -#define MPU_CTRL_ENABLE_Msk (1ul << MPU_CTRL_ENABLE_Pos) /*!< MPU CTRL: ENABLE Mask */ - -/* MPU Region Number Register */ -#define MPU_RNR_REGION_Pos 0 /*!< MPU RNR: REGION Position */ -#define MPU_RNR_REGION_Msk (0xFFul << MPU_RNR_REGION_Pos) /*!< MPU RNR: REGION Mask */ - -/* MPU Region Base Address Register */ -#define MPU_RBAR_ADDR_Pos 5 /*!< MPU RBAR: ADDR Position */ -#define MPU_RBAR_ADDR_Msk (0x7FFFFFFul << MPU_RBAR_ADDR_Pos) /*!< MPU RBAR: ADDR Mask */ - -#define MPU_RBAR_VALID_Pos 4 /*!< MPU RBAR: VALID Position */ -#define MPU_RBAR_VALID_Msk (1ul << MPU_RBAR_VALID_Pos) /*!< MPU RBAR: VALID Mask */ - -#define MPU_RBAR_REGION_Pos 0 /*!< MPU RBAR: REGION Position */ -#define MPU_RBAR_REGION_Msk (0xFul << MPU_RBAR_REGION_Pos) /*!< MPU RBAR: REGION Mask */ - -/* MPU Region Attribute and Size Register */ -#define MPU_RASR_XN_Pos 28 /*!< MPU RASR: XN Position */ -#define MPU_RASR_XN_Msk (1ul << MPU_RASR_XN_Pos) /*!< MPU RASR: XN Mask */ - -#define MPU_RASR_AP_Pos 24 /*!< MPU RASR: AP Position */ -#define MPU_RASR_AP_Msk (7ul << MPU_RASR_AP_Pos) /*!< MPU RASR: AP Mask */ - -#define MPU_RASR_TEX_Pos 19 /*!< MPU RASR: TEX Position */ -#define MPU_RASR_TEX_Msk (7ul << MPU_RASR_TEX_Pos) /*!< MPU RASR: TEX Mask */ - -#define MPU_RASR_S_Pos 18 /*!< MPU RASR: Shareable bit Position */ -#define MPU_RASR_S_Msk (1ul << MPU_RASR_S_Pos) /*!< MPU RASR: Shareable bit Mask */ - -#define MPU_RASR_C_Pos 17 /*!< MPU RASR: Cacheable bit Position */ -#define MPU_RASR_C_Msk (1ul << MPU_RASR_C_Pos) /*!< MPU RASR: Cacheable bit Mask */ - -#define MPU_RASR_B_Pos 16 /*!< MPU RASR: Bufferable bit Position */ -#define MPU_RASR_B_Msk (1ul << MPU_RASR_B_Pos) /*!< MPU RASR: Bufferable bit Mask */ - -#define MPU_RASR_SRD_Pos 8 /*!< MPU RASR: Sub-Region Disable Position */ -#define MPU_RASR_SRD_Msk (0xFFul << MPU_RASR_SRD_Pos) /*!< MPU RASR: Sub-Region Disable Mask */ - -#define MPU_RASR_SIZE_Pos 1 /*!< MPU RASR: Region Size Field Position */ -#define MPU_RASR_SIZE_Msk (0x1Ful << MPU_RASR_SIZE_Pos) /*!< MPU RASR: Region Size Field Mask */ - -#define MPU_RASR_ENA_Pos 0 /*!< MPU RASR: Region enable bit Position */ -#define MPU_RASR_ENA_Msk (0x1Ful << MPU_RASR_ENA_Pos) /*!< MPU RASR: Region enable bit Disable Mask */ - -/*@}*/ /* end of group CMSIS_CM3_MPU */ -#endif - - -/** @addtogroup CMSIS_CM3_CoreDebug CMSIS CM3 Core Debug - memory mapped structure for Core Debug Register - @{ - */ -typedef struct -{ - __IO uint32_t DHCSR; /*!< Offset: 0x00 Debug Halting Control and Status Register */ - __O uint32_t DCRSR; /*!< Offset: 0x04 Debug Core Register Selector Register */ - __IO uint32_t DCRDR; /*!< Offset: 0x08 Debug Core Register Data Register */ - __IO uint32_t DEMCR; /*!< Offset: 0x0C Debug Exception and Monitor Control Register */ -} CoreDebug_Type; - -/* Debug Halting Control and Status Register */ -#define CoreDebug_DHCSR_DBGKEY_Pos 16 /*!< CoreDebug DHCSR: DBGKEY Position */ -#define CoreDebug_DHCSR_DBGKEY_Msk (0xFFFFul << CoreDebug_DHCSR_DBGKEY_Pos) /*!< CoreDebug DHCSR: DBGKEY Mask */ - -#define CoreDebug_DHCSR_S_RESET_ST_Pos 25 /*!< CoreDebug DHCSR: S_RESET_ST Position */ -#define CoreDebug_DHCSR_S_RESET_ST_Msk (1ul << CoreDebug_DHCSR_S_RESET_ST_Pos) /*!< CoreDebug DHCSR: S_RESET_ST Mask */ - -#define CoreDebug_DHCSR_S_RETIRE_ST_Pos 24 /*!< CoreDebug DHCSR: S_RETIRE_ST Position */ -#define CoreDebug_DHCSR_S_RETIRE_ST_Msk (1ul << CoreDebug_DHCSR_S_RETIRE_ST_Pos) /*!< CoreDebug DHCSR: S_RETIRE_ST Mask */ - -#define CoreDebug_DHCSR_S_LOCKUP_Pos 19 /*!< CoreDebug DHCSR: S_LOCKUP Position */ -#define CoreDebug_DHCSR_S_LOCKUP_Msk (1ul << CoreDebug_DHCSR_S_LOCKUP_Pos) /*!< CoreDebug DHCSR: S_LOCKUP Mask */ - -#define CoreDebug_DHCSR_S_SLEEP_Pos 18 /*!< CoreDebug DHCSR: S_SLEEP Position */ -#define CoreDebug_DHCSR_S_SLEEP_Msk (1ul << CoreDebug_DHCSR_S_SLEEP_Pos) /*!< CoreDebug DHCSR: S_SLEEP Mask */ - -#define CoreDebug_DHCSR_S_HALT_Pos 17 /*!< CoreDebug DHCSR: S_HALT Position */ -#define CoreDebug_DHCSR_S_HALT_Msk (1ul << CoreDebug_DHCSR_S_HALT_Pos) /*!< CoreDebug DHCSR: S_HALT Mask */ - -#define CoreDebug_DHCSR_S_REGRDY_Pos 16 /*!< CoreDebug DHCSR: S_REGRDY Position */ -#define CoreDebug_DHCSR_S_REGRDY_Msk (1ul << CoreDebug_DHCSR_S_REGRDY_Pos) /*!< CoreDebug DHCSR: S_REGRDY Mask */ - -#define CoreDebug_DHCSR_C_SNAPSTALL_Pos 5 /*!< CoreDebug DHCSR: C_SNAPSTALL Position */ -#define CoreDebug_DHCSR_C_SNAPSTALL_Msk (1ul << CoreDebug_DHCSR_C_SNAPSTALL_Pos) /*!< CoreDebug DHCSR: C_SNAPSTALL Mask */ - -#define CoreDebug_DHCSR_C_MASKINTS_Pos 3 /*!< CoreDebug DHCSR: C_MASKINTS Position */ -#define CoreDebug_DHCSR_C_MASKINTS_Msk (1ul << CoreDebug_DHCSR_C_MASKINTS_Pos) /*!< CoreDebug DHCSR: C_MASKINTS Mask */ - -#define CoreDebug_DHCSR_C_STEP_Pos 2 /*!< CoreDebug DHCSR: C_STEP Position */ -#define CoreDebug_DHCSR_C_STEP_Msk (1ul << CoreDebug_DHCSR_C_STEP_Pos) /*!< CoreDebug DHCSR: C_STEP Mask */ - -#define CoreDebug_DHCSR_C_HALT_Pos 1 /*!< CoreDebug DHCSR: C_HALT Position */ -#define CoreDebug_DHCSR_C_HALT_Msk (1ul << CoreDebug_DHCSR_C_HALT_Pos) /*!< CoreDebug DHCSR: C_HALT Mask */ - -#define CoreDebug_DHCSR_C_DEBUGEN_Pos 0 /*!< CoreDebug DHCSR: C_DEBUGEN Position */ -#define CoreDebug_DHCSR_C_DEBUGEN_Msk (1ul << CoreDebug_DHCSR_C_DEBUGEN_Pos) /*!< CoreDebug DHCSR: C_DEBUGEN Mask */ - -/* Debug Core Register Selector Register */ -#define CoreDebug_DCRSR_REGWnR_Pos 16 /*!< CoreDebug DCRSR: REGWnR Position */ -#define CoreDebug_DCRSR_REGWnR_Msk (1ul << CoreDebug_DCRSR_REGWnR_Pos) /*!< CoreDebug DCRSR: REGWnR Mask */ - -#define CoreDebug_DCRSR_REGSEL_Pos 0 /*!< CoreDebug DCRSR: REGSEL Position */ -#define CoreDebug_DCRSR_REGSEL_Msk (0x1Ful << CoreDebug_DCRSR_REGSEL_Pos) /*!< CoreDebug DCRSR: REGSEL Mask */ - -/* Debug Exception and Monitor Control Register */ -#define CoreDebug_DEMCR_TRCENA_Pos 24 /*!< CoreDebug DEMCR: TRCENA Position */ -#define CoreDebug_DEMCR_TRCENA_Msk (1ul << CoreDebug_DEMCR_TRCENA_Pos) /*!< CoreDebug DEMCR: TRCENA Mask */ - -#define CoreDebug_DEMCR_MON_REQ_Pos 19 /*!< CoreDebug DEMCR: MON_REQ Position */ -#define CoreDebug_DEMCR_MON_REQ_Msk (1ul << CoreDebug_DEMCR_MON_REQ_Pos) /*!< CoreDebug DEMCR: MON_REQ Mask */ - -#define CoreDebug_DEMCR_MON_STEP_Pos 18 /*!< CoreDebug DEMCR: MON_STEP Position */ -#define CoreDebug_DEMCR_MON_STEP_Msk (1ul << CoreDebug_DEMCR_MON_STEP_Pos) /*!< CoreDebug DEMCR: MON_STEP Mask */ - -#define CoreDebug_DEMCR_MON_PEND_Pos 17 /*!< CoreDebug DEMCR: MON_PEND Position */ -#define CoreDebug_DEMCR_MON_PEND_Msk (1ul << CoreDebug_DEMCR_MON_PEND_Pos) /*!< CoreDebug DEMCR: MON_PEND Mask */ - -#define CoreDebug_DEMCR_MON_EN_Pos 16 /*!< CoreDebug DEMCR: MON_EN Position */ -#define CoreDebug_DEMCR_MON_EN_Msk (1ul << CoreDebug_DEMCR_MON_EN_Pos) /*!< CoreDebug DEMCR: MON_EN Mask */ - -#define CoreDebug_DEMCR_VC_HARDERR_Pos 10 /*!< CoreDebug DEMCR: VC_HARDERR Position */ -#define CoreDebug_DEMCR_VC_HARDERR_Msk (1ul << CoreDebug_DEMCR_VC_HARDERR_Pos) /*!< CoreDebug DEMCR: VC_HARDERR Mask */ - -#define CoreDebug_DEMCR_VC_INTERR_Pos 9 /*!< CoreDebug DEMCR: VC_INTERR Position */ -#define CoreDebug_DEMCR_VC_INTERR_Msk (1ul << CoreDebug_DEMCR_VC_INTERR_Pos) /*!< CoreDebug DEMCR: VC_INTERR Mask */ - -#define CoreDebug_DEMCR_VC_BUSERR_Pos 8 /*!< CoreDebug DEMCR: VC_BUSERR Position */ -#define CoreDebug_DEMCR_VC_BUSERR_Msk (1ul << CoreDebug_DEMCR_VC_BUSERR_Pos) /*!< CoreDebug DEMCR: VC_BUSERR Mask */ - -#define CoreDebug_DEMCR_VC_STATERR_Pos 7 /*!< CoreDebug DEMCR: VC_STATERR Position */ -#define CoreDebug_DEMCR_VC_STATERR_Msk (1ul << CoreDebug_DEMCR_VC_STATERR_Pos) /*!< CoreDebug DEMCR: VC_STATERR Mask */ - -#define CoreDebug_DEMCR_VC_CHKERR_Pos 6 /*!< CoreDebug DEMCR: VC_CHKERR Position */ -#define CoreDebug_DEMCR_VC_CHKERR_Msk (1ul << CoreDebug_DEMCR_VC_CHKERR_Pos) /*!< CoreDebug DEMCR: VC_CHKERR Mask */ - -#define CoreDebug_DEMCR_VC_NOCPERR_Pos 5 /*!< CoreDebug DEMCR: VC_NOCPERR Position */ -#define CoreDebug_DEMCR_VC_NOCPERR_Msk (1ul << CoreDebug_DEMCR_VC_NOCPERR_Pos) /*!< CoreDebug DEMCR: VC_NOCPERR Mask */ - -#define CoreDebug_DEMCR_VC_MMERR_Pos 4 /*!< CoreDebug DEMCR: VC_MMERR Position */ -#define CoreDebug_DEMCR_VC_MMERR_Msk (1ul << CoreDebug_DEMCR_VC_MMERR_Pos) /*!< CoreDebug DEMCR: VC_MMERR Mask */ - -#define CoreDebug_DEMCR_VC_CORERESET_Pos 0 /*!< CoreDebug DEMCR: VC_CORERESET Position */ -#define CoreDebug_DEMCR_VC_CORERESET_Msk (1ul << CoreDebug_DEMCR_VC_CORERESET_Pos) /*!< CoreDebug DEMCR: VC_CORERESET Mask */ -/*@}*/ /* end of group CMSIS_CM3_CoreDebug */ - - -/* Memory mapping of Cortex-M3 Hardware */ -#define SCS_BASE (0xE000E000) /*!< System Control Space Base Address */ -#define ITM_BASE (0xE0000000) /*!< ITM Base Address */ -#define CoreDebug_BASE (0xE000EDF0) /*!< Core Debug Base Address */ -#define SysTick_BASE (SCS_BASE + 0x0010) /*!< SysTick Base Address */ -#define NVIC_BASE (SCS_BASE + 0x0100) /*!< NVIC Base Address */ -#define SCB_BASE (SCS_BASE + 0x0D00) /*!< System Control Block Base Address */ - -#define InterruptType ((InterruptType_Type *) SCS_BASE) /*!< Interrupt Type Register */ -#define SCB ((SCB_Type *) SCB_BASE) /*!< SCB configuration struct */ -#define SysTick ((SysTick_Type *) SysTick_BASE) /*!< SysTick configuration struct */ -#define NVIC ((NVIC_Type *) NVIC_BASE) /*!< NVIC configuration struct */ -#define ITM ((ITM_Type *) ITM_BASE) /*!< ITM configuration struct */ -#define CoreDebug ((CoreDebug_Type *) CoreDebug_BASE) /*!< Core Debug configuration struct */ - -#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1) - #define MPU_BASE (SCS_BASE + 0x0D90) /*!< Memory Protection Unit */ - #define MPU ((MPU_Type*) MPU_BASE) /*!< Memory Protection Unit */ -#endif - -/*@}*/ /* end of group CMSIS_CM3_core_register */ - - -/******************************************************************************* - * Hardware Abstraction Layer - ******************************************************************************/ - -#if defined ( __CC_ARM ) - #define __ASM __asm /*!< asm keyword for ARM Compiler */ - #define __INLINE __inline /*!< inline keyword for ARM Compiler */ - -#elif defined ( __ICCARM__ ) - #define __ASM __asm /*!< asm keyword for IAR Compiler */ - #define __INLINE inline /*!< inline keyword for IAR Compiler. Only avaiable in High optimization mode! */ - -#elif defined ( __GNUC__ ) - #define __ASM __asm /*!< asm keyword for GNU Compiler */ - #define __INLINE inline /*!< inline keyword for GNU Compiler */ - -#elif defined ( __TASKING__ ) - #define __ASM __asm /*!< asm keyword for TASKING Compiler */ - #define __INLINE inline /*!< inline keyword for TASKING Compiler */ - -#endif - - -/* ################### Compiler specific Intrinsics ########################### */ - -#if defined ( __CC_ARM ) /*------------------RealView Compiler -----------------*/ -/* ARM armcc specific functions */ - -#define __enable_fault_irq __enable_fiq -#define __disable_fault_irq __disable_fiq - -#define __NOP __nop -#define __WFI __wfi -#define __WFE __wfe -#define __SEV __sev -#define __ISB() __isb(0) -#define __DSB() __dsb(0) -#define __DMB() __dmb(0) -#define __REV __rev -#define __RBIT __rbit -#define __LDREXB(ptr) ((unsigned char ) __ldrex(ptr)) -#define __LDREXH(ptr) ((unsigned short) __ldrex(ptr)) -#define __LDREXW(ptr) ((unsigned int ) __ldrex(ptr)) -#define __STREXB(value, ptr) __strex(value, ptr) -#define __STREXH(value, ptr) __strex(value, ptr) -#define __STREXW(value, ptr) __strex(value, ptr) - - -/* intrinsic unsigned long long __ldrexd(volatile void *ptr) */ -/* intrinsic int __strexd(unsigned long long val, volatile void *ptr) */ -/* intrinsic void __enable_irq(); */ -/* intrinsic void __disable_irq(); */ - - -/** - * @brief Return the Process Stack Pointer - * - * @return ProcessStackPointer - * - * Return the actual process stack pointer - */ -extern uint32_t __get_PSP(void); - -/** - * @brief Set the Process Stack Pointer - * - * @param topOfProcStack Process Stack Pointer - * - * Assign the value ProcessStackPointer to the MSP - * (process stack pointer) Cortex processor register - */ -extern void __set_PSP(uint32_t topOfProcStack); - -/** - * @brief Return the Main Stack Pointer - * - * @return Main Stack Pointer - * - * Return the current value of the MSP (main stack pointer) - * Cortex processor register - */ -extern uint32_t __get_MSP(void); - -/** - * @brief Set the Main Stack Pointer - * - * @param topOfMainStack Main Stack Pointer - * - * Assign the value mainStackPointer to the MSP - * (main stack pointer) Cortex processor register - */ -extern void __set_MSP(uint32_t topOfMainStack); - -/** - * @brief Reverse byte order in unsigned short value - * - * @param value value to reverse - * @return reversed value - * - * Reverse byte order in unsigned short value - */ -extern uint32_t __REV16(uint16_t value); - -/** - * @brief Reverse byte order in signed short value with sign extension to integer - * - * @param value value to reverse - * @return reversed value - * - * Reverse byte order in signed short value with sign extension to integer - */ -extern int32_t __REVSH(int16_t value); - - -#if (__ARMCC_VERSION < 400000) - -/** - * @brief Remove the exclusive lock created by ldrex - * - * Removes the exclusive lock which is created by ldrex. - */ -extern void __CLREX(void); - -/** - * @brief Return the Base Priority value - * - * @return BasePriority - * - * Return the content of the base priority register - */ -extern uint32_t __get_BASEPRI(void); - -/** - * @brief Set the Base Priority value - * - * @param basePri BasePriority - * - * Set the base priority register - */ -extern void __set_BASEPRI(uint32_t basePri); - -/** - * @brief Return the Priority Mask value - * - * @return PriMask - * - * Return state of the priority mask bit from the priority mask register - */ -extern uint32_t __get_PRIMASK(void); - -/** - * @brief Set the Priority Mask value - * - * @param priMask PriMask - * - * Set the priority mask bit in the priority mask register - */ -extern void __set_PRIMASK(uint32_t priMask); - -/** - * @brief Return the Fault Mask value - * - * @return FaultMask - * - * Return the content of the fault mask register - */ -extern uint32_t __get_FAULTMASK(void); - -/** - * @brief Set the Fault Mask value - * - * @param faultMask faultMask value - * - * Set the fault mask register - */ -extern void __set_FAULTMASK(uint32_t faultMask); - -/** - * @brief Return the Control Register value - * - * @return Control value - * - * Return the content of the control register - */ -extern uint32_t __get_CONTROL(void); - -/** - * @brief Set the Control Register value - * - * @param control Control value - * - * Set the control register - */ -extern void __set_CONTROL(uint32_t control); - -#else /* (__ARMCC_VERSION >= 400000) */ - -/** - * @brief Remove the exclusive lock created by ldrex - * - * Removes the exclusive lock which is created by ldrex. - */ -#define __CLREX __clrex - -/** - * @brief Return the Base Priority value - * - * @return BasePriority - * - * Return the content of the base priority register - */ -static __INLINE uint32_t __get_BASEPRI(void) -{ - register uint32_t __regBasePri __ASM("basepri"); - return(__regBasePri); -} - -/** - * @brief Set the Base Priority value - * - * @param basePri BasePriority - * - * Set the base priority register - */ -static __INLINE void __set_BASEPRI(uint32_t basePri) -{ - register uint32_t __regBasePri __ASM("basepri"); - __regBasePri = (basePri & 0xff); -} - -/** - * @brief Return the Priority Mask value - * - * @return PriMask - * - * Return state of the priority mask bit from the priority mask register - */ -static __INLINE uint32_t __get_PRIMASK(void) -{ - register uint32_t __regPriMask __ASM("primask"); - return(__regPriMask); -} - -/** - * @brief Set the Priority Mask value - * - * @param priMask PriMask - * - * Set the priority mask bit in the priority mask register - */ -static __INLINE void __set_PRIMASK(uint32_t priMask) -{ - register uint32_t __regPriMask __ASM("primask"); - __regPriMask = (priMask); -} - -/** - * @brief Return the Fault Mask value - * - * @return FaultMask - * - * Return the content of the fault mask register - */ -static __INLINE uint32_t __get_FAULTMASK(void) -{ - register uint32_t __regFaultMask __ASM("faultmask"); - return(__regFaultMask); -} - -/** - * @brief Set the Fault Mask value - * - * @param faultMask faultMask value - * - * Set the fault mask register - */ -static __INLINE void __set_FAULTMASK(uint32_t faultMask) -{ - register uint32_t __regFaultMask __ASM("faultmask"); - __regFaultMask = (faultMask & 1); -} - -/** - * @brief Return the Control Register value - * - * @return Control value - * - * Return the content of the control register - */ -static __INLINE uint32_t __get_CONTROL(void) -{ - register uint32_t __regControl __ASM("control"); - return(__regControl); -} - -/** - * @brief Set the Control Register value - * - * @param control Control value - * - * Set the control register - */ -static __INLINE void __set_CONTROL(uint32_t control) -{ - register uint32_t __regControl __ASM("control"); - __regControl = control; -} - -#endif /* __ARMCC_VERSION */ - - - -#elif (defined (__ICCARM__)) /*------------------ ICC Compiler -------------------*/ -/* IAR iccarm specific functions */ - -#define __enable_irq __enable_interrupt /*!< global Interrupt enable */ -#define __disable_irq __disable_interrupt /*!< global Interrupt disable */ - -static __INLINE void __enable_fault_irq() { __ASM ("cpsie f"); } -static __INLINE void __disable_fault_irq() { __ASM ("cpsid f"); } - -#define __NOP __no_operation /*!< no operation intrinsic in IAR Compiler */ -static __INLINE void __WFI() { __ASM ("wfi"); } -static __INLINE void __WFE() { __ASM ("wfe"); } -static __INLINE void __SEV() { __ASM ("sev"); } -static __INLINE void __CLREX() { __ASM ("clrex"); } - -/* intrinsic void __ISB(void) */ -/* intrinsic void __DSB(void) */ -/* intrinsic void __DMB(void) */ -/* intrinsic void __set_PRIMASK(); */ -/* intrinsic void __get_PRIMASK(); */ -/* intrinsic void __set_FAULTMASK(); */ -/* intrinsic void __get_FAULTMASK(); */ -/* intrinsic uint32_t __REV(uint32_t value); */ -/* intrinsic uint32_t __REVSH(uint32_t value); */ -/* intrinsic unsigned long __STREX(unsigned long, unsigned long); */ -/* intrinsic unsigned long __LDREX(unsigned long *); */ - - -/** - * @brief Return the Process Stack Pointer - * - * @return ProcessStackPointer - * - * Return the actual process stack pointer - */ -extern uint32_t __get_PSP(void); - -/** - * @brief Set the Process Stack Pointer - * - * @param topOfProcStack Process Stack Pointer - * - * Assign the value ProcessStackPointer to the MSP - * (process stack pointer) Cortex processor register - */ -extern void __set_PSP(uint32_t topOfProcStack); - -/** - * @brief Return the Main Stack Pointer - * - * @return Main Stack Pointer - * - * Return the current value of the MSP (main stack pointer) - * Cortex processor register - */ -extern uint32_t __get_MSP(void); - -/** - * @brief Set the Main Stack Pointer - * - * @param topOfMainStack Main Stack Pointer - * - * Assign the value mainStackPointer to the MSP - * (main stack pointer) Cortex processor register - */ -extern void __set_MSP(uint32_t topOfMainStack); - -/** - * @brief Reverse byte order in unsigned short value - * - * @param value value to reverse - * @return reversed value - * - * Reverse byte order in unsigned short value - */ -extern uint32_t __REV16(uint16_t value); - -/** - * @brief Reverse bit order of value - * - * @param value value to reverse - * @return reversed value - * - * Reverse bit order of value - */ -extern uint32_t __RBIT(uint32_t value); - -/** - * @brief LDR Exclusive (8 bit) - * - * @param *addr address pointer - * @return value of (*address) - * - * Exclusive LDR command for 8 bit values) - */ -extern uint8_t __LDREXB(uint8_t *addr); - -/** - * @brief LDR Exclusive (16 bit) - * - * @param *addr address pointer - * @return value of (*address) - * - * Exclusive LDR command for 16 bit values - */ -extern uint16_t __LDREXH(uint16_t *addr); - -/** - * @brief LDR Exclusive (32 bit) - * - * @param *addr address pointer - * @return value of (*address) - * - * Exclusive LDR command for 32 bit values - */ -extern uint32_t __LDREXW(uint32_t *addr); - -/** - * @brief STR Exclusive (8 bit) - * - * @param value value to store - * @param *addr address pointer - * @return successful / failed - * - * Exclusive STR command for 8 bit values - */ -extern uint32_t __STREXB(uint8_t value, uint8_t *addr); - -/** - * @brief STR Exclusive (16 bit) - * - * @param value value to store - * @param *addr address pointer - * @return successful / failed - * - * Exclusive STR command for 16 bit values - */ -extern uint32_t __STREXH(uint16_t value, uint16_t *addr); - -/** - * @brief STR Exclusive (32 bit) - * - * @param value value to store - * @param *addr address pointer - * @return successful / failed - * - * Exclusive STR command for 32 bit values - */ -extern uint32_t __STREXW(uint32_t value, uint32_t *addr); - - - -#elif (defined (__GNUC__)) /*------------------ GNU Compiler ---------------------*/ -/* GNU gcc specific functions */ - -static __INLINE void __enable_irq(void) { __ASM volatile ("cpsie i"); } -static __INLINE void __disable_irq(void) { __ASM volatile ("cpsid i"); } - -static __INLINE void __enable_fault_irq(void) { __ASM volatile ("cpsie f"); } -static __INLINE void __disable_fault_irq(void) { __ASM volatile ("cpsid f"); } - -static __INLINE void __NOP(void) { __ASM volatile ("nop"); } -static __INLINE void __WFI(void) { __ASM volatile ("wfi"); } -static __INLINE void __WFE(void) { __ASM volatile ("wfe"); } -static __INLINE void __SEV(void) { __ASM volatile ("sev"); } -static __INLINE void __ISB(void) { __ASM volatile ("isb"); } -static __INLINE void __DSB(void) { __ASM volatile ("dsb"); } -static __INLINE void __DMB(void) { __ASM volatile ("dmb"); } -static __INLINE void __CLREX(void) { __ASM volatile ("clrex"); } - - -/** - * @brief Return the Process Stack Pointer - * - * @return ProcessStackPointer - * - * Return the actual process stack pointer - */ -extern uint32_t __get_PSP(void); - -/** - * @brief Set the Process Stack Pointer - * - * @param topOfProcStack Process Stack Pointer - * - * Assign the value ProcessStackPointer to the MSP - * (process stack pointer) Cortex processor register - */ -extern void __set_PSP(uint32_t topOfProcStack); - -/** - * @brief Return the Main Stack Pointer - * - * @return Main Stack Pointer - * - * Return the current value of the MSP (main stack pointer) - * Cortex processor register - */ -extern uint32_t __get_MSP(void); - -/** - * @brief Set the Main Stack Pointer - * - * @param topOfMainStack Main Stack Pointer - * - * Assign the value mainStackPointer to the MSP - * (main stack pointer) Cortex processor register - */ -extern void __set_MSP(uint32_t topOfMainStack); - -/** - * @brief Return the Base Priority value - * - * @return BasePriority - * - * Return the content of the base priority register - */ -extern uint32_t __get_BASEPRI(void); - -/** - * @brief Set the Base Priority value - * - * @param basePri BasePriority - * - * Set the base priority register - */ -extern void __set_BASEPRI(uint32_t basePri); - -/** - * @brief Return the Priority Mask value - * - * @return PriMask - * - * Return state of the priority mask bit from the priority mask register - */ -extern uint32_t __get_PRIMASK(void); - -/** - * @brief Set the Priority Mask value - * - * @param priMask PriMask - * - * Set the priority mask bit in the priority mask register - */ -extern void __set_PRIMASK(uint32_t priMask); - -/** - * @brief Return the Fault Mask value - * - * @return FaultMask - * - * Return the content of the fault mask register - */ -extern uint32_t __get_FAULTMASK(void); - -/** - * @brief Set the Fault Mask value - * - * @param faultMask faultMask value - * - * Set the fault mask register - */ -extern void __set_FAULTMASK(uint32_t faultMask); - -/** - * @brief Return the Control Register value -* -* @return Control value - * - * Return the content of the control register - */ -extern uint32_t __get_CONTROL(void); - -/** - * @brief Set the Control Register value - * - * @param control Control value - * - * Set the control register - */ -extern void __set_CONTROL(uint32_t control); - -/** - * @brief Reverse byte order in integer value - * - * @param value value to reverse - * @return reversed value - * - * Reverse byte order in integer value - */ -extern uint32_t __REV(uint32_t value); - -/** - * @brief Reverse byte order in unsigned short value - * - * @param value value to reverse - * @return reversed value - * - * Reverse byte order in unsigned short value - */ -extern uint32_t __REV16(uint16_t value); - -/** - * @brief Reverse byte order in signed short value with sign extension to integer - * - * @param value value to reverse - * @return reversed value - * - * Reverse byte order in signed short value with sign extension to integer - */ -extern int32_t __REVSH(int16_t value); - -/** - * @brief Reverse bit order of value - * - * @param value value to reverse - * @return reversed value - * - * Reverse bit order of value - */ -extern uint32_t __RBIT(uint32_t value); - -/** - * @brief LDR Exclusive (8 bit) - * - * @param *addr address pointer - * @return value of (*address) - * - * Exclusive LDR command for 8 bit value - */ -extern uint8_t __LDREXB(uint8_t *addr); - -/** - * @brief LDR Exclusive (16 bit) - * - * @param *addr address pointer - * @return value of (*address) - * - * Exclusive LDR command for 16 bit values - */ -extern uint16_t __LDREXH(uint16_t *addr); - -/** - * @brief LDR Exclusive (32 bit) - * - * @param *addr address pointer - * @return value of (*address) - * - * Exclusive LDR command for 32 bit values - */ -extern uint32_t __LDREXW(uint32_t *addr); - -/** - * @brief STR Exclusive (8 bit) - * - * @param value value to store - * @param *addr address pointer - * @return successful / failed - * - * Exclusive STR command for 8 bit values - */ -extern uint32_t __STREXB(uint8_t value, uint8_t *addr); - -/** - * @brief STR Exclusive (16 bit) - * - * @param value value to store - * @param *addr address pointer - * @return successful / failed - * - * Exclusive STR command for 16 bit values - */ -extern uint32_t __STREXH(uint16_t value, uint16_t *addr); - -/** - * @brief STR Exclusive (32 bit) - * - * @param value value to store - * @param *addr address pointer - * @return successful / failed - * - * Exclusive STR command for 32 bit values - */ -extern uint32_t __STREXW(uint32_t value, uint32_t *addr); - - -#elif (defined (__TASKING__)) /*------------------ TASKING Compiler ---------------------*/ -/* TASKING carm specific functions */ - -/* - * The CMSIS functions have been implemented as intrinsics in the compiler. - * Please use "carm -?i" to get an up to date list of all instrinsics, - * Including the CMSIS ones. - */ - -#endif - - -/** @addtogroup CMSIS_CM3_Core_FunctionInterface CMSIS CM3 Core Function Interface - Core Function Interface containing: - - Core NVIC Functions - - Core SysTick Functions - - Core Reset Functions -*/ -/*@{*/ - -/* ########################## NVIC functions #################################### */ - -/** - * @brief Set the Priority Grouping in NVIC Interrupt Controller - * - * @param PriorityGroup is priority grouping field - * - * Set the priority grouping field using the required unlock sequence. - * The parameter priority_grouping is assigned to the field - * SCB->AIRCR [10:8] PRIGROUP field. Only values from 0..7 are used. - * In case of a conflict between priority grouping and available - * priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set. - */ -static __INLINE void NVIC_SetPriorityGrouping(uint32_t PriorityGroup) -{ - uint32_t reg_value; - uint32_t PriorityGroupTmp = (PriorityGroup & 0x07); /* only values 0..7 are used */ - - reg_value = SCB->AIRCR; /* read old register configuration */ - reg_value &= ~(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk); /* clear bits to change */ - reg_value = (reg_value | - (0x5FA << SCB_AIRCR_VECTKEY_Pos) | - (PriorityGroupTmp << 8)); /* Insert write key and priorty group */ - SCB->AIRCR = reg_value; -} - -/** - * @brief Get the Priority Grouping from NVIC Interrupt Controller - * - * @return priority grouping field - * - * Get the priority grouping from NVIC Interrupt Controller. - * priority grouping is SCB->AIRCR [10:8] PRIGROUP field. - */ -static __INLINE uint32_t NVIC_GetPriorityGrouping(void) -{ - return ((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos); /* read priority grouping field */ -} - -/** - * @brief Enable Interrupt in NVIC Interrupt Controller - * - * @param IRQn The positive number of the external interrupt to enable - * - * Enable a device specific interupt in the NVIC interrupt controller. - * The interrupt number cannot be a negative value. - */ -static __INLINE void NVIC_EnableIRQ(IRQn_Type IRQn) -{ - NVIC->ISER[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F)); /* enable interrupt */ -} - -/** - * @brief Disable the interrupt line for external interrupt specified - * - * @param IRQn The positive number of the external interrupt to disable - * - * Disable a device specific interupt in the NVIC interrupt controller. - * The interrupt number cannot be a negative value. - */ -static __INLINE void NVIC_DisableIRQ(IRQn_Type IRQn) -{ - NVIC->ICER[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F)); /* disable interrupt */ -} - -/** - * @brief Read the interrupt pending bit for a device specific interrupt source - * - * @param IRQn The number of the device specifc interrupt - * @return 1 = interrupt pending, 0 = interrupt not pending - * - * Read the pending register in NVIC and return 1 if its status is pending, - * otherwise it returns 0 - */ -static __INLINE uint32_t NVIC_GetPendingIRQ(IRQn_Type IRQn) -{ - return((uint32_t) ((NVIC->ISPR[(uint32_t)(IRQn) >> 5] & (1 << ((uint32_t)(IRQn) & 0x1F)))?1:0)); /* Return 1 if pending else 0 */ -} - -/** - * @brief Set the pending bit for an external interrupt - * - * @param IRQn The number of the interrupt for set pending - * - * Set the pending bit for the specified interrupt. - * The interrupt number cannot be a negative value. - */ -static __INLINE void NVIC_SetPendingIRQ(IRQn_Type IRQn) -{ - NVIC->ISPR[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F)); /* set interrupt pending */ -} - -/** - * @brief Clear the pending bit for an external interrupt - * - * @param IRQn The number of the interrupt for clear pending - * - * Clear the pending bit for the specified interrupt. - * The interrupt number cannot be a negative value. - */ -static __INLINE void NVIC_ClearPendingIRQ(IRQn_Type IRQn) -{ - NVIC->ICPR[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F)); /* Clear pending interrupt */ -} - -/** - * @brief Read the active bit for an external interrupt - * - * @param IRQn The number of the interrupt for read active bit - * @return 1 = interrupt active, 0 = interrupt not active - * - * Read the active register in NVIC and returns 1 if its status is active, - * otherwise it returns 0. - */ -static __INLINE uint32_t NVIC_GetActive(IRQn_Type IRQn) -{ - return((uint32_t)((NVIC->IABR[(uint32_t)(IRQn) >> 5] & (1 << ((uint32_t)(IRQn) & 0x1F)))?1:0)); /* Return 1 if active else 0 */ -} - -/** - * @brief Set the priority for an interrupt - * - * @param IRQn The number of the interrupt for set priority - * @param priority The priority to set - * - * Set the priority for the specified interrupt. The interrupt - * number can be positive to specify an external (device specific) - * interrupt, or negative to specify an internal (core) interrupt. - * - * Note: The priority cannot be set for every core interrupt. - */ -static __INLINE void NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) -{ - if(IRQn < 0) { - SCB->SHP[((uint32_t)(IRQn) & 0xF)-4] = ((priority << (8 - __NVIC_PRIO_BITS)) & 0xff); } /* set Priority for Cortex-M3 System Interrupts */ - else { - NVIC->IP[(uint32_t)(IRQn)] = ((priority << (8 - __NVIC_PRIO_BITS)) & 0xff); } /* set Priority for device specific Interrupts */ -} - -/** - * @brief Read the priority for an interrupt - * - * @param IRQn The number of the interrupt for get priority - * @return The priority for the interrupt - * - * Read the priority for the specified interrupt. The interrupt - * number can be positive to specify an external (device specific) - * interrupt, or negative to specify an internal (core) interrupt. - * - * The returned priority value is automatically aligned to the implemented - * priority bits of the microcontroller. - * - * Note: The priority cannot be set for every core interrupt. - */ -static __INLINE uint32_t NVIC_GetPriority(IRQn_Type IRQn) -{ - - if(IRQn < 0) { - return((uint32_t)(SCB->SHP[((uint32_t)(IRQn) & 0xF)-4] >> (8 - __NVIC_PRIO_BITS))); } /* get priority for Cortex-M3 system interrupts */ - else { - return((uint32_t)(NVIC->IP[(uint32_t)(IRQn)] >> (8 - __NVIC_PRIO_BITS))); } /* get priority for device specific interrupts */ -} - - -/** - * @brief Encode the priority for an interrupt - * - * @param PriorityGroup The used priority group - * @param PreemptPriority The preemptive priority value (starting from 0) - * @param SubPriority The sub priority value (starting from 0) - * @return The encoded priority for the interrupt - * - * Encode the priority for an interrupt with the given priority group, - * preemptive priority value and sub priority value. - * In case of a conflict between priority grouping and available - * priority bits (__NVIC_PRIO_BITS) the samllest possible priority group is set. - * - * The returned priority value can be used for NVIC_SetPriority(...) function - */ -static __INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) -{ - uint32_t PriorityGroupTmp = (PriorityGroup & 0x07); /* only values 0..7 are used */ - uint32_t PreemptPriorityBits; - uint32_t SubPriorityBits; - - PreemptPriorityBits = ((7 - PriorityGroupTmp) > __NVIC_PRIO_BITS) ? __NVIC_PRIO_BITS : 7 - PriorityGroupTmp; - SubPriorityBits = ((PriorityGroupTmp + __NVIC_PRIO_BITS) < 7) ? 0 : PriorityGroupTmp - 7 + __NVIC_PRIO_BITS; - - return ( - ((PreemptPriority & ((1 << (PreemptPriorityBits)) - 1)) << SubPriorityBits) | - ((SubPriority & ((1 << (SubPriorityBits )) - 1))) - ); -} - - -/** - * @brief Decode the priority of an interrupt - * - * @param Priority The priority for the interrupt - * @param PriorityGroup The used priority group - * @param pPreemptPriority The preemptive priority value (starting from 0) - * @param pSubPriority The sub priority value (starting from 0) - * - * Decode an interrupt priority value with the given priority group to - * preemptive priority value and sub priority value. - * In case of a conflict between priority grouping and available - * priority bits (__NVIC_PRIO_BITS) the samllest possible priority group is set. - * - * The priority value can be retrieved with NVIC_GetPriority(...) function - */ -static __INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* pPreemptPriority, uint32_t* pSubPriority) -{ - uint32_t PriorityGroupTmp = (PriorityGroup & 0x07); /* only values 0..7 are used */ - uint32_t PreemptPriorityBits; - uint32_t SubPriorityBits; - - PreemptPriorityBits = ((7 - PriorityGroupTmp) > __NVIC_PRIO_BITS) ? __NVIC_PRIO_BITS : 7 - PriorityGroupTmp; - SubPriorityBits = ((PriorityGroupTmp + __NVIC_PRIO_BITS) < 7) ? 0 : PriorityGroupTmp - 7 + __NVIC_PRIO_BITS; - - *pPreemptPriority = (Priority >> SubPriorityBits) & ((1 << (PreemptPriorityBits)) - 1); - *pSubPriority = (Priority ) & ((1 << (SubPriorityBits )) - 1); -} - - - -/* ################################## SysTick function ############################################ */ - -#if (!defined (__Vendor_SysTickConfig)) || (__Vendor_SysTickConfig == 0) - -/** - * @brief Initialize and start the SysTick counter and its interrupt. - * - * @param ticks number of ticks between two interrupts - * @return 1 = failed, 0 = successful - * - * Initialise the system tick timer and its interrupt and start the - * system tick timer / counter in free running mode to generate - * periodical interrupts. - */ -static __INLINE uint32_t SysTick_Config(uint32_t ticks) -{ - if (ticks > SysTick_LOAD_RELOAD_Msk) return (1); /* Reload value impossible */ - - SysTick->LOAD = (ticks & SysTick_LOAD_RELOAD_Msk) - 1; /* set reload register */ - NVIC_SetPriority (SysTick_IRQn, (1<<__NVIC_PRIO_BITS) - 1); /* set Priority for Cortex-M0 System Interrupts */ - SysTick->VAL = 0; /* Load the SysTick Counter Value */ - SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | - SysTick_CTRL_TICKINT_Msk | - SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ - return (0); /* Function successful */ -} - -#endif - - - - -/* ################################## Reset function ############################################ */ - -/** - * @brief Initiate a system reset request. - * - * Initiate a system reset request to reset the MCU - */ -static __INLINE void NVIC_SystemReset(void) -{ - SCB->AIRCR = ((0x5FA << SCB_AIRCR_VECTKEY_Pos) | - (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) | - SCB_AIRCR_SYSRESETREQ_Msk); /* Keep priority group unchanged */ - __DSB(); /* Ensure completion of memory access */ - while(1); /* wait until reset */ -} - -/*@}*/ /* end of group CMSIS_CM3_Core_FunctionInterface */ - - - -/* ##################################### Debug In/Output function ########################################### */ - -/** @addtogroup CMSIS_CM3_CoreDebugInterface CMSIS CM3 Core Debug Interface - Core Debug Interface containing: - - Core Debug Receive / Transmit Functions - - Core Debug Defines - - Core Debug Variables -*/ -/*@{*/ - -extern volatile int ITM_RxBuffer; /*!< variable to receive characters */ -#define ITM_RXBUFFER_EMPTY 0x5AA55AA5 /*!< value identifying ITM_RxBuffer is ready for next character */ - - -/** - * @brief Outputs a character via the ITM channel 0 - * - * @param ch character to output - * @return character to output - * - * The function outputs a character via the ITM channel 0. - * The function returns when no debugger is connected that has booked the output. - * It is blocking when a debugger is connected, but the previous character send is not transmitted. - */ -static __INLINE uint32_t ITM_SendChar (uint32_t ch) -{ - if ((CoreDebug->DEMCR & CoreDebug_DEMCR_TRCENA_Msk) && /* Trace enabled */ - (ITM->TCR & ITM_TCR_ITMENA_Msk) && /* ITM enabled */ - (ITM->TER & (1ul << 0) ) ) /* ITM Port #0 enabled */ - { - while (ITM->PORT[0].u32 == 0); - ITM->PORT[0].u8 = (uint8_t) ch; - } - return (ch); -} - - -/** - * @brief Inputs a character via variable ITM_RxBuffer - * - * @return received character, -1 = no character received - * - * The function inputs a character via variable ITM_RxBuffer. - * The function returns when no debugger is connected that has booked the output. - * It is blocking when a debugger is connected, but the previous character send is not transmitted. - */ -static __INLINE int ITM_ReceiveChar (void) { - int ch = -1; /* no character available */ - - if (ITM_RxBuffer != ITM_RXBUFFER_EMPTY) { - ch = ITM_RxBuffer; - ITM_RxBuffer = ITM_RXBUFFER_EMPTY; /* ready for next character */ - } - - return (ch); -} - - -/** - * @brief Check if a character via variable ITM_RxBuffer is available - * - * @return 1 = character available, 0 = no character available - * - * The function checks variable ITM_RxBuffer whether a character is available or not. - * The function returns '1' if a character is available and '0' if no character is available. - */ -static __INLINE int ITM_CheckChar (void) { - - if (ITM_RxBuffer == ITM_RXBUFFER_EMPTY) { - return (0); /* no character available */ - } else { - return (1); /* character available */ - } -} - -/*@}*/ /* end of group CMSIS_CM3_core_DebugInterface */ - - -#ifdef __cplusplus -} -#endif - -/*@}*/ /* end of group CMSIS_CM3_core_definitions */ - -#endif /* __CM3_CORE_H__ */ - -/*lint -restore */ diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/CMSIS/mss_assert.h b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/CMSIS/mss_assert.h deleted file mode 100644 index 4725d2132..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/CMSIS/mss_assert.h +++ /dev/null @@ -1,48 +0,0 @@ -/******************************************************************************* - * (c) Copyright 2009 Actel Corporation. All rights reserved. - * - * Assertion implementation. - * - * This file provides the implementation of the ASSERT macro. This file can be - * modified to cater for project specific requirements regarding the way - * assertions are handled. - * - * SVN $Revision: 1676 $ - * SVN $Date: 2009-12-02 16:47:03 +0000 (Wed, 02 Dec 2009) $ - */ -#ifndef __MSS_ASSERT_H_ -#define __MSS_ASSERT_H_ - -#include - -#if defined ( __GNUC__ ) - -#if defined(NDEBUG) - -#define ASSERT(CHECK) - -#else /* NDEBUG */ -/* - * SoftConsole assertion handling - */ -#define ASSERT(CHECK) \ - do { \ - if (!(CHECK)) \ - { \ - __asm volatile ("BKPT\n\t"); \ - } \ - } while (0); - -#endif /* NDEBUG */ - -#else -/* - * IAR Embedded Workbench or Keil assertion handling. - * Call C library assert function which should result in error message - * displayed in debugger. - */ -#define ASSERT(X) assert(X) - -#endif - -#endif /* __MSS_ASSERT_H_ */ diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/CMSIS/startup_gcc/debug-in-actel-smartfusion-envm.ld b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/CMSIS/startup_gcc/debug-in-actel-smartfusion-envm.ld deleted file mode 100644 index 1d33683f3..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/CMSIS/startup_gcc/debug-in-actel-smartfusion-envm.ld +++ /dev/null @@ -1,184 +0,0 @@ -/******************************************************************************* - * (c) Copyright 2009 Actel Corporation. All rights reserved. - * - * SmartFusion/Cortex-M3 linker script for creating a SoftConsole downloadable - * debug image executing in SmartFusion internal eNVM. - * - * SVN $Revision: 1677 $ - * SVN $Date: 2009-12-02 16:57:29 +0000 (Wed, 02 Dec 2009) $ - */ - -OUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm", - "elf32-littlearm") -GROUP(-lc -lgcc -lm) -OUTPUT_ARCH(arm) -ENTRY(Reset_Handler) -SEARCH_DIR(.) -__DYNAMIC = 0; - -/******************************************************************************* - * Start of board customization. - *******************************************************************************/ -MEMORY -{ - /* - * WARNING: The words "SOFTCONSOLE", "FLASH", and "USE", the colon ":", and - * the name of the type of flash memory are all in a specific order. - * Please do not modify that comment line, in order to ensure - * debugging of your application will use the flash memory correctly. - */ - - /* SOFTCONSOLE FLASH USE: actel-smartfusion-envm */ - rom (rx) : ORIGIN = 0x60000000, LENGTH = 256k - - /* SmartFusion internal eNVM mirrored to 0x00000000 */ - romMirror (rx) : ORIGIN = 0x00000000, LENGTH = 256k - - /* SmartFusion internal eSRAM */ - ram (rwx) : ORIGIN = 0x20000000, LENGTH = 64k -} - -RAM_START_ADDRESS = 0x20000000; /* Must be the same value MEMORY region ram ORIGIN above. */ -RAM_SIZE = 64k; /* Must be the same value MEMORY region ram LENGTH above. */ -MAIN_STACK_SIZE = 8k; /* Cortex main stack size. */ -PROCESS_STACK_SIZE = 4k; /* Cortex process stack size (only available with OS extensions).*/ - -/******************************************************************************* - * End of board customization. - *******************************************************************************/ - -PROVIDE (__main_stack_start = RAM_START_ADDRESS + RAM_SIZE); -PROVIDE (__process_stack_start = __main_stack_start - MAIN_STACK_SIZE); -PROVIDE (_estack = __main_stack_start); -PROVIDE (__mirrored_nvm = 1); /* Indicate to startup code that NVM is mirrored to VMA address and no text copy is required. */ - -SECTIONS -{ - .init : - { - *(.isr_vector) - *sys_boot.o(.text) - . = ALIGN(0x4); - } >romMirror AT>rom - - .text : - { - CREATE_OBJECT_SYMBOLS - __text_load = LOADADDR(.text); - __text_start = .; - - *(.text .text.* .gnu.linkonce.t.*) - *(.plt) - *(.gnu.warning) - *(.glue_7t) *(.glue_7) *(.vfp11_veneer) - - . = ALIGN(0x4); - /* These are for running static constructors and destructors under ELF. */ - KEEP (*crtbegin.o(.ctors)) - KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors)) - KEEP (*(SORT(.ctors.*))) - KEEP (*crtend.o(.ctors)) - KEEP (*crtbegin.o(.dtors)) - KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors)) - KEEP (*(SORT(.dtors.*))) - KEEP (*crtend.o(.dtors)) - - *(.rodata .rodata.* .gnu.linkonce.r.*) - - *(.ARM.extab* .gnu.linkonce.armextab.*) - *(.gcc_except_table) - *(.eh_frame_hdr) - *(.eh_frame) - - KEEP (*(.init)) - KEEP (*(.fini)) - - PROVIDE_HIDDEN (__preinit_array_start = .); - KEEP (*(.preinit_array)) - PROVIDE_HIDDEN (__preinit_array_end = .); - PROVIDE_HIDDEN (__init_array_start = .); - KEEP (*(SORT(.init_array.*))) - KEEP (*(.init_array)) - PROVIDE_HIDDEN (__init_array_end = .); - PROVIDE_HIDDEN (__fini_array_start = .); - KEEP (*(.fini_array)) - KEEP (*(SORT(.fini_array.*))) - PROVIDE_HIDDEN (__fini_array_end = .); - } >romMirror AT>rom - - /* .ARM.exidx is sorted, so has to go in its own output section. */ - __exidx_start = .; - .ARM.exidx : - { - *(.ARM.exidx* .gnu.linkonce.armexidx.*) - } >ram AT>rom - __exidx_end = .; - _etext = .; - - .data : - { - __data_load = LOADADDR(.data); - _sidata = LOADADDR (.data); - __data_start = .; - _sdata = .; - KEEP(*(.jcr)) - *(.got.plt) *(.got) - *(.shdata) - *(.data .data.* .gnu.linkonce.d.*) - . = ALIGN (4); - _edata = .; - } >ram AT>rom - - .bss : - { - __bss_start__ = . ; - _sbss = .; - *(.shbss) - *(.bss .bss.* .gnu.linkonce.b.*) - *(COMMON) - . = ALIGN (8); - __bss_end__ = .; - _end = .; - __end = _end; - _ebss = .; - PROVIDE(end = .); - } >ram AT>rom - - .stab 0 (NOLOAD) : - { - *(.stab) - } - - .stabstr 0 (NOLOAD) : - { - *(.stabstr) - } - /* DWARF debug sections. - Symbols in the DWARF debugging sections are relative to the beginning - of the section so we begin them at 0. */ - /* DWARF 1 */ - .debug 0 : { *(.debug) } - .line 0 : { *(.line) } - /* GNU DWARF 1 extensions */ - .debug_srcinfo 0 : { *(.debug_srcinfo) } - .debug_sfnames 0 : { *(.debug_sfnames) } - /* DWARF 1.1 and DWARF 2 */ - .debug_aranges 0 : { *(.debug_aranges) } - .debug_pubnames 0 : { *(.debug_pubnames) } - /* DWARF 2 */ - .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } - .debug_abbrev 0 : { *(.debug_abbrev) } - .debug_line 0 : { *(.debug_line) } - .debug_frame 0 : { *(.debug_frame) } - .debug_str 0 : { *(.debug_str) } - .debug_loc 0 : { *(.debug_loc) } - .debug_macinfo 0 : { *(.debug_macinfo) } - /* SGI/MIPS DWARF 2 extensions */ - .debug_weaknames 0 : { *(.debug_weaknames) } - .debug_funcnames 0 : { *(.debug_funcnames) } - .debug_typenames 0 : { *(.debug_typenames) } - .debug_varnames 0 : { *(.debug_varnames) } - .note.gnu.arm.ident 0 : { KEEP (*(.note.gnu.arm.ident)) } - .ARM.attributes 0 : { KEEP (*(.ARM.attributes)) } - /DISCARD/ : { *(.note.GNU-stack) } -} diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/CMSIS/startup_gcc/debug-in-actel-smartfusion-esram.ld b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/CMSIS/startup_gcc/debug-in-actel-smartfusion-esram.ld deleted file mode 100644 index 85e416044..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/CMSIS/startup_gcc/debug-in-actel-smartfusion-esram.ld +++ /dev/null @@ -1,177 +0,0 @@ -/******************************************************************************* - * (c) Copyright 2009 Actel Corporation. All rights reserved. - * - * SmartFusion/Cortex-M3 linker script for creating a SoftConsole downloadable - * debug image executing in SmartFusion internal eSRAM. - * - * SVN $Revision: 1677 $ - * SVN $Date: 2009-12-02 16:57:29 +0000 (Wed, 02 Dec 2009) $ - */ - - OUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm", - "elf32-littlearm") -GROUP(-lc -lgcc -lm) -OUTPUT_ARCH(arm) -ENTRY(Reset_Handler) -SEARCH_DIR(.) -__DYNAMIC = 0; - -/******************************************************************************* - * Start of board customization. - *******************************************************************************/ -MEMORY -{ - /* SmartFusion internal eSRAM */ - ram (rwx) : ORIGIN = 0x20000000, LENGTH = 64k -} - -RAM_START_ADDRESS = 0x20000000; /* Must be the same value MEMORY region ram ORIGIN above. */ -RAM_SIZE = 64k; /* Must be the same value MEMORY region ram LENGTH above. */ -MAIN_STACK_SIZE = 8k; /* Cortex main stack size. */ -PROCESS_STACK_SIZE = 4k; /* Cortex process stack size (only available with OS extensions).*/ - -/******************************************************************************* - * End of board customization. - *******************************************************************************/ - -PROVIDE (__main_stack_start = RAM_START_ADDRESS + RAM_SIZE); -PROVIDE (__process_stack_start = __main_stack_start - MAIN_STACK_SIZE); -PROVIDE (_estack = __main_stack_start); -PROVIDE (__mirrored_nvm = 0); /* Indicate to startup code that NVM is not mirrored to VMA address .text copy is required. */ - -SECTIONS -{ - .text : - { - CREATE_OBJECT_SYMBOLS - __text_load = LOADADDR(.text); - __text_start = .; - *(.isr_vector) - *(.text .text.* .gnu.linkonce.t.*) - *(.plt) - *(.gnu.warning) - *(.glue_7t) *(.glue_7) *(.vfp11_veneer) - - . = ALIGN(0x4); - /* These are for running static constructors and destructors under ELF. */ - KEEP (*crtbegin.o(.ctors)) - KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors)) - KEEP (*(SORT(.ctors.*))) - KEEP (*crtend.o(.ctors)) - KEEP (*crtbegin.o(.dtors)) - KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors)) - KEEP (*(SORT(.dtors.*))) - KEEP (*crtend.o(.dtors)) - - *(.rodata .rodata.* .gnu.linkonce.r.*) - - *(.ARM.extab* .gnu.linkonce.armextab.*) - *(.gcc_except_table) - *(.eh_frame_hdr) - *(.eh_frame) - - KEEP (*(.init)) - KEEP (*(.fini)) - - PROVIDE_HIDDEN (__preinit_array_start = .); - KEEP (*(.preinit_array)) - PROVIDE_HIDDEN (__preinit_array_end = .); - PROVIDE_HIDDEN (__init_array_start = .); - KEEP (*(SORT(.init_array.*))) - KEEP (*(.init_array)) - PROVIDE_HIDDEN (__init_array_end = .); - PROVIDE_HIDDEN (__fini_array_start = .); - KEEP (*(.fini_array)) - KEEP (*(SORT(.fini_array.*))) - PROVIDE_HIDDEN (__fini_array_end = .); - } >ram - /* .ARM.exidx is sorted, so has to go in its own output section. */ - __exidx_start = .; - .ARM.exidx : - { - *(.ARM.exidx* .gnu.linkonce.armexidx.*) - } >ram - __exidx_end = .; - _etext = .; - PROVIDE(__text_end = .); - - .data : - { - __data_load = LOADADDR (.data); - _sidata = LOADADDR (.data); - __data_start = .; - _sdata = .; - KEEP(*(.jcr)) - *(.got.plt) *(.got) - *(.shdata) - *(.data .data.* .gnu.linkonce.d.*) - . = ALIGN (4); - _edata = .; - } >ram - - .bss : - { - __bss_start__ = . ; - _sbss = .; - *(.shbss) - *(.bss .bss.* .gnu.linkonce.b.*) - *(COMMON) - . = ALIGN (8); - __bss_end__ = .; - _end = .; - __end = _end; - _ebss = .; - PROVIDE(end = .); - } >ram - - /* - * The .stack section is only specified here in order for the linker to generate - * an error if the ram is full. - */ - .stack : - { - . = ALIGN(4); - . += PROCESS_STACK_SIZE; - . = ALIGN(4); - . += MAIN_STACK_SIZE; - . = ALIGN(4); - } >ram - - .stab 0 (NOLOAD) : - { - *(.stab) - } - - .stabstr 0 (NOLOAD) : - { - *(.stabstr) - } - /* DWARF debug sections. - Symbols in the DWARF debugging sections are relative to the beginning - of the section so we begin them at 0. */ - /* DWARF 1 */ - .debug 0 : { *(.debug) } - .line 0 : { *(.line) } - /* GNU DWARF 1 extensions */ - .debug_srcinfo 0 : { *(.debug_srcinfo) } - .debug_sfnames 0 : { *(.debug_sfnames) } - /* DWARF 1.1 and DWARF 2 */ - .debug_aranges 0 : { *(.debug_aranges) } - .debug_pubnames 0 : { *(.debug_pubnames) } - /* DWARF 2 */ - .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } - .debug_abbrev 0 : { *(.debug_abbrev) } - .debug_line 0 : { *(.debug_line) } - .debug_frame 0 : { *(.debug_frame) } - .debug_str 0 : { *(.debug_str) } - .debug_loc 0 : { *(.debug_loc) } - .debug_macinfo 0 : { *(.debug_macinfo) } - /* SGI/MIPS DWARF 2 extensions */ - .debug_weaknames 0 : { *(.debug_weaknames) } - .debug_funcnames 0 : { *(.debug_funcnames) } - .debug_typenames 0 : { *(.debug_typenames) } - .debug_varnames 0 : { *(.debug_varnames) } - .note.gnu.arm.ident 0 : { KEEP (*(.note.gnu.arm.ident)) } - .ARM.attributes 0 : { KEEP (*(.ARM.attributes)) } - /DISCARD/ : { *(.note.GNU-stack) *(.isr_vector) } -} diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/CMSIS/startup_gcc/debug-in-external-ram.ld b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/CMSIS/startup_gcc/debug-in-external-ram.ld deleted file mode 100644 index b2d614d31..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/CMSIS/startup_gcc/debug-in-external-ram.ld +++ /dev/null @@ -1,185 +0,0 @@ -/******************************************************************************* - * (c) Copyright 2009 Actel Corporation. All rights reserved. - * - * SmartFusion/Cortex-M3 linker script for creating a SoftConsole downloadable - * debug image executing in SmartFusion development board external RAM. - * - * SVN $Revision: 2014 $ - * SVN $Date: 2010-01-20 10:37:26 +0000 (Wed, 20 Jan 2010) $ - */ - -OUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm", - "elf32-littlearm") -GROUP(-lc -lgcc -lm) -OUTPUT_ARCH(arm) -ENTRY(Reset_Handler) -SEARCH_DIR(.) -__DYNAMIC = 0; - -/******************************************************************************* - * Start of board customization. - *******************************************************************************/ -MEMORY -{ - /* SmartFusion internal eSRAM */ - esram (rwx) : ORIGIN = 0x20000000, LENGTH = 64k - - /* SmartFusion development board external RAM */ - external_ram (rwx) : ORIGIN = 0x70000000, LENGTH = 2M -} - -RAM_START_ADDRESS = 0x70000000; /* Must be the same value MEMORY region ram ORIGIN above. */ -RAM_SIZE = 64k; /* Must be the same value MEMORY region ram LENGTH above. */ -MAIN_STACK_SIZE = 8k; /* Cortex main stack size. */ -PROCESS_STACK_SIZE = 4k; /* Cortex process stack size (only available with OS extensions).*/ - -/******************************************************************************* - * End of board customization. - *******************************************************************************/ - -PROVIDE (__main_stack_start = RAM_START_ADDRESS + RAM_SIZE); -PROVIDE (__process_stack_start = __main_stack_start - MAIN_STACK_SIZE); -PROVIDE (_estack = __main_stack_start); -PROVIDE (__mirrored_nvm = 0); /* Indicate to startup code that NVM is not mirrored to VMA address .text copy is required. */ - -SECTIONS -{ - .init : - { - *(.isr_vector) - . = ALIGN(0x4); - } >esram - - .text : - { - CREATE_OBJECT_SYMBOLS - __text_load = LOADADDR(.text); - __text_start = .; - *(.text .text.* .gnu.linkonce.t.*) - *(.plt) - *(.gnu.warning) - *(.glue_7t) *(.glue_7) *(.vfp11_veneer) - - . = ALIGN(0x4); - /* These are for running static constructors and destructors under ELF. */ - KEEP (*crtbegin.o(.ctors)) - KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors)) - KEEP (*(SORT(.ctors.*))) - KEEP (*crtend.o(.ctors)) - KEEP (*crtbegin.o(.dtors)) - KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors)) - KEEP (*(SORT(.dtors.*))) - KEEP (*crtend.o(.dtors)) - - *(.rodata .rodata.* .gnu.linkonce.r.*) - - *(.ARM.extab* .gnu.linkonce.armextab.*) - *(.gcc_except_table) - *(.eh_frame_hdr) - *(.eh_frame) - - KEEP (*(.init)) - KEEP (*(.fini)) - - PROVIDE_HIDDEN (__preinit_array_start = .); - KEEP (*(.preinit_array)) - PROVIDE_HIDDEN (__preinit_array_end = .); - PROVIDE_HIDDEN (__init_array_start = .); - KEEP (*(SORT(.init_array.*))) - KEEP (*(.init_array)) - PROVIDE_HIDDEN (__init_array_end = .); - PROVIDE_HIDDEN (__fini_array_start = .); - KEEP (*(.fini_array)) - KEEP (*(SORT(.fini_array.*))) - PROVIDE_HIDDEN (__fini_array_end = .); - } >external_ram - /* .ARM.exidx is sorted, so has to go in its own output section. */ - __exidx_start = .; - .ARM.exidx : - { - *(.ARM.exidx* .gnu.linkonce.armexidx.*) - } >external_ram - __exidx_end = .; - _etext = .; - PROVIDE(__text_end = .); - - .data : - { - __data_load = LOADADDR (.data); - _sidata = LOADADDR (.data); - __data_start = .; - _sdata = .; - KEEP(*(.jcr)) - *(.got.plt) *(.got) - *(.shdata) - *(.data .data.* .gnu.linkonce.d.*) - . = ALIGN (4); - _edata = .; - } >external_ram - - .bss : - { - __bss_start__ = . ; - _sbss = .; - *(.shbss) - *(.bss .bss.* .gnu.linkonce.b.*) - *(COMMON) - . = ALIGN (8); - __bss_end__ = .; - _end = .; - __end = _end; - _ebss = .; - PROVIDE(end = .); - } >external_ram - - /* - * The .stack section is only specified here in order for the linker to generate - * an error if the esram is full. - */ - .stack : - { - . = ALIGN(4); - . += PROCESS_STACK_SIZE; - . = ALIGN(4); - . += MAIN_STACK_SIZE; - . = ALIGN(4); - } >external_ram - - .stab 0 (NOLOAD) : - { - *(.stab) - } - - .stabstr 0 (NOLOAD) : - { - *(.stabstr) - } - /* DWARF debug sections. - Symbols in the DWARF debugging sections are relative to the beginning - of the section so we begin them at 0. */ - /* DWARF 1 */ - .debug 0 : { *(.debug) } - .line 0 : { *(.line) } - /* GNU DWARF 1 extensions */ - .debug_srcinfo 0 : { *(.debug_srcinfo) } - .debug_sfnames 0 : { *(.debug_sfnames) } - /* DWARF 1.1 and DWARF 2 */ - .debug_aranges 0 : { *(.debug_aranges) } - .debug_pubnames 0 : { *(.debug_pubnames) } - /* DWARF 2 */ - .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } - .debug_abbrev 0 : { *(.debug_abbrev) } - .debug_line 0 : { *(.debug_line) } - .debug_frame 0 : { *(.debug_frame) } - .debug_str 0 : { *(.debug_str) } - .debug_loc 0 : { *(.debug_loc) } - .debug_macinfo 0 : { *(.debug_macinfo) } - /* SGI/MIPS DWARF 2 extensions */ - .debug_weaknames 0 : { *(.debug_weaknames) } - .debug_funcnames 0 : { *(.debug_funcnames) } - .debug_typenames 0 : { *(.debug_typenames) } - .debug_varnames 0 : { *(.debug_varnames) } - .note.gnu.arm.ident 0 : { KEEP (*(.note.gnu.arm.ident)) } - .ARM.attributes 0 : { KEEP (*(.ARM.attributes)) } - /DISCARD/ : { *(.note.GNU-stack) *(.isr_vector) } -} diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/CMSIS/startup_gcc/newlib_stubs.c b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/CMSIS/startup_gcc/newlib_stubs.c deleted file mode 100644 index 3b42429f1..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/CMSIS/startup_gcc/newlib_stubs.c +++ /dev/null @@ -1,247 +0,0 @@ -/******************************************************************************* - * (c) Copyright 2009 Actel Corporation. All rights reserved. - * - * Stubs for Newlib system calls. - * - * SVN $Revision: 2020 $ - * SVN $Date: 2010-01-20 14:51:50 +0000 (Wed, 20 Jan 2010) $ - */ -#include -#include -#include -#include -#include -#undef errno -extern int errno; - -/*============================================================================== - * Redirection of standard output to a SmartFusion MSS UART. - *------------------------------------------------------------------------------ - * A default implementation for the redirection of the output of printf() to a - * UART is provided as the bottom of this file. This redirection is enabled by - * adding the symbol/define ACTEL_STDIO_THRU_UART to your project and - * specifying the baud rate using the ACTEL_STDIO_BAUD_RATE define. - */ -#ifdef ACTEL_STDIO_THRU_UART -#include "../../drivers/mss_uart/mss_uart.h" - -#ifndef ACTEL_STDIO_BAUD_RATE -#define ACTEL_STDIO_BAUD_RATE MSS_UART_57600_BAUD -#endif - -/*------------------------------------------------------------------------------ - * Global flag used to indicate if the UART driver needs to be initialized. - */ -static int g_stdio_uart_init_done = 0; - -#endif /* ACTEL_STDIO_THRU_UART */ - -/*============================================================================== - * Environment variables. - * A pointer to a list of environment variables and their values. For a minimal - * environment, this empty list is adequate: - */ -char *__env[1] = { 0 }; -char **environ = __env; - -/*============================================================================== - * Close a file. - */ -int _close(int file) -{ - return -1; -} - -/*============================================================================== - * Transfer control to a new process. - */ -int _execve(char *name, char **argv, char **env) -{ - errno = ENOMEM; - return -1; -} - -/*============================================================================== - * Exit a program without cleaning up files. - */ -void _exit( int code ) -{ - /* Should we force a system reset? */ - while( 1 ) - { - ; - } -} - -/*============================================================================== - * Create a new process. - */ -int _fork(void) -{ - errno = EAGAIN; - return -1; -} - -/*============================================================================== - * Status of an open file. - */ -int _fstat(int file, struct stat *st) -{ - st->st_mode = S_IFCHR; - return 0; -} - -/*============================================================================== - * Process-ID - */ -int _getpid(void) -{ - return 1; -} - -/*============================================================================== - * Query whether output stream is a terminal. - */ -int _isatty(int file) -{ - return 1; -} - -/*============================================================================== - * Send a signal. - */ -int _kill(int pid, int sig) -{ - errno = EINVAL; - return -1; -} - -/*============================================================================== - * Establish a new name for an existing file. - */ -int _link(char *old, char *new) -{ - errno = EMLINK; - return -1; -} - -/*============================================================================== - * Set position in a file. - */ -int _lseek(int file, int ptr, int dir) -{ - return 0; -} - -/*============================================================================== - * Open a file. - */ -int _open(const char *name, int flags, int mode) -{ - return -1; -} - -/*============================================================================== - * Read from a file. - */ -int _read(int file, char *ptr, int len) -{ - return 0; -} - -/*============================================================================== - * Increase program data space. As malloc and related functions depend on this, - * it is useful to have a working implementation. The following suffices for a - * standalone system; it exploits the symbol _end automatically defined by the - * GNU linker. - */ -caddr_t _sbrk(int incr) -{ - extern char _end; /* Defined by the linker */ - static char *heap_end; - char *prev_heap_end; - char * stack_ptr; - - if (heap_end == 0) - { - heap_end = &_end; - } - - prev_heap_end = heap_end; - asm volatile ("MRS %0, msp" : "=r" (stack_ptr) ); - if (heap_end + incr > stack_ptr) - { - write (1, "Heap and stack collision\n", 25); - abort (); - } - - heap_end += incr; - return (caddr_t) prev_heap_end; -} - -/*============================================================================== - * Status of a file (by name). - */ -int _stat(char *file, struct stat *st) -{ - st->st_mode = S_IFCHR; - return 0; -} - -/*============================================================================== - * Timing information for current process. - */ -int _times(struct tms *buf) -{ - return -1; -} - -/*============================================================================== - * Remove a file's directory entry. - */ -int _unlink(char *name) -{ - errno = ENOENT; - return -1; -} - -/*============================================================================== - * Wait for a child process. - */ -int _wait(int *status) -{ - errno = ECHILD; - return -1; -} - -/*============================================================================== - * Write to a file. libc subroutines will use this system routine for output to - * all files, including stdout—so if you need to generate any output, for - * example to a serial port for debugging, you should make your minimal write - * capable of doing this. - */ -int _write_r( void * reent, int file, char * ptr, int len ) -{ -#ifdef ACTEL_STDIO_THRU_UART - /*-------------------------------------------------------------------------- - * Initialize the UART driver if it is the first time this function is - * called. - */ - if ( !g_stdio_uart_init_done ) - { - MSS_UART_init( &g_mss_uart0, ACTEL_STDIO_BAUD_RATE, (MSS_UART_DATA_8_BITS | MSS_UART_NO_PARITY)); - g_stdio_uart_init_done = 1; - } - - /*-------------------------------------------------------------------------- - * Output text to the UART. - */ - MSS_UART_polled_tx( &g_mss_uart0, (uint8_t *)ptr, len ); - - return len; -#else /* ACTEL_STDIO_THRU_UART */ - return 0; -#endif /* ACTEL_STDIO_THRU_UART */ -} - - diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/CMSIS/startup_gcc/production-execute-in-place.ld b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/CMSIS/startup_gcc/production-execute-in-place.ld deleted file mode 100644 index cfaddb615..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/CMSIS/startup_gcc/production-execute-in-place.ld +++ /dev/null @@ -1,172 +0,0 @@ -/******************************************************************************* - * (c) Copyright 2009 Actel Corporation. All rights reserved. - * - * SmartFusion/Cortex-M3 linker script creating an executable image for use in - * the Libero flow for executing code in place in internal eNVM. - * - * SVN $Revision: 1766 $ - * SVN $Date: 2009-12-11 16:33:35 +0000 (Fri, 11 Dec 2009) $ - */ -OUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm", - "elf32-littlearm") -GROUP(-lc -lgcc -lm) -OUTPUT_ARCH(arm) -ENTRY(Reset_Handler) -SEARCH_DIR(.) -__DYNAMIC = 0; - -/******************************************************************************* - * Start of board customization. - *******************************************************************************/ -MEMORY -{ - /* SmartFusion internal eNVM */ - rom (rx) : ORIGIN = 0, LENGTH = 256k - - /* SmartFusion internal eSRAM */ - ram (rwx) : ORIGIN = 0x20000000, LENGTH = 64k -} - -RAM_START_ADDRESS = 0x20000000; /* Must be the same value as MEMORY region ram ORIGIN above. */ -RAM_SIZE = 64k; /* Must be the same value as MEMORY region ram LENGTH above. */ -MAIN_STACK_SIZE = 8k; /* Cortex main stack size. */ -PROCESS_STACK_SIZE = 4k; /* Cortex process stack size (only available with OS extensions).*/ - -/******************************************************************************* - * End of board customization. - *******************************************************************************/ - -PROVIDE (__main_stack_start = RAM_START_ADDRESS + RAM_SIZE); -PROVIDE (__process_stack_start = __main_stack_start - MAIN_STACK_SIZE); -PROVIDE (_estack = __main_stack_start); -PROVIDE (__mirrored_nvm = 0); /* Indicate to startup code that NVM is not mirrored to VMA address .text copy is required. */ - -SECTIONS -{ - .reset : - { - *(.isr_vector) - *sys_boot.o(.text) - . = ALIGN(0x4); - } >rom - - .text : - { - CREATE_OBJECT_SYMBOLS - __text_load = LOADADDR(.text); - __text_start = .; - - *(.text .text.* .gnu.linkonce.t.*) - *(.plt) - *(.gnu.warning) - *(.glue_7t) *(.glue_7) *(.vfp11_veneer) - - . = ALIGN(0x4); - /* These are for running static constructors and destructors under ELF. */ - KEEP (*crtbegin.o(.ctors)) - KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors)) - KEEP (*(SORT(.ctors.*))) - KEEP (*crtend.o(.ctors)) - KEEP (*crtbegin.o(.dtors)) - KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors)) - KEEP (*(SORT(.dtors.*))) - KEEP (*crtend.o(.dtors)) - - *(.rodata .rodata.* .gnu.linkonce.r.*) - - *(.ARM.extab* .gnu.linkonce.armextab.*) - *(.gcc_except_table) - *(.eh_frame_hdr) - *(.eh_frame) - - KEEP (*(.init)) - KEEP (*(.fini)) - - PROVIDE_HIDDEN (__preinit_array_start = .); - KEEP (*(.preinit_array)) - PROVIDE_HIDDEN (__preinit_array_end = .); - PROVIDE_HIDDEN (__init_array_start = .); - KEEP (*(SORT(.init_array.*))) - KEEP (*(.init_array)) - PROVIDE_HIDDEN (__init_array_end = .); - PROVIDE_HIDDEN (__fini_array_start = .); - KEEP (*(.fini_array)) - KEEP (*(SORT(.fini_array.*))) - PROVIDE_HIDDEN (__fini_array_end = .); - } >rom - /* .ARM.exidx is sorted, so has to go in its own output section. */ - __exidx_start = .; - .ARM.exidx : - { - *(.ARM.exidx* .gnu.linkonce.armexidx.*) - } >rom - __exidx_end = .; - _etext = .; - - .data : - { - __data_load = LOADADDR(.data); - _sidata = LOADADDR (.data); - __data_start = .; - _sdata = .; - KEEP(*(.jcr)) - *(.got.plt) *(.got) - *(.shdata) - *(.data .data.* .gnu.linkonce.d.*) - . = ALIGN (4); - _edata = .; - } >ram AT>rom - - .bss : - { - __bss_start__ = . ; - _sbss = .; - *(.shbss) - *(.bss .bss.* .gnu.linkonce.b.*) - *(COMMON) - . = ALIGN (8); - __bss_end__ = .; - _end = .; - __end = _end; - _ebss = .; - PROVIDE(end = .); - } >ram AT>rom - - .stab 0 (NOLOAD) : - { - *(.stab) - } - - .stabstr 0 (NOLOAD) : - { - *(.stabstr) - } - /* DWARF debug sections. - Symbols in the DWARF debugging sections are relative to the beginning - of the section so we begin them at 0. */ - /* DWARF 1 */ - .debug 0 : { *(.debug) } - .line 0 : { *(.line) } - /* GNU DWARF 1 extensions */ - .debug_srcinfo 0 : { *(.debug_srcinfo) } - .debug_sfnames 0 : { *(.debug_sfnames) } - /* DWARF 1.1 and DWARF 2 */ - .debug_aranges 0 : { *(.debug_aranges) } - .debug_pubnames 0 : { *(.debug_pubnames) } - /* DWARF 2 */ - .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } - .debug_abbrev 0 : { *(.debug_abbrev) } - .debug_line 0 : { *(.debug_line) } - .debug_frame 0 : { *(.debug_frame) } - .debug_str 0 : { *(.debug_str) } - .debug_loc 0 : { *(.debug_loc) } - .debug_macinfo 0 : { *(.debug_macinfo) } - /* SGI/MIPS DWARF 2 extensions */ - .debug_weaknames 0 : { *(.debug_weaknames) } - .debug_funcnames 0 : { *(.debug_funcnames) } - .debug_typenames 0 : { *(.debug_typenames) } - .debug_varnames 0 : { *(.debug_varnames) } - .note.gnu.arm.ident 0 : { KEEP (*(.note.gnu.arm.ident)) } - .ARM.attributes 0 : { KEEP (*(.ARM.attributes)) } - /DISCARD/ : { *(.note.GNU-stack) } -} diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/CMSIS/startup_gcc/production-relocate-executable.ld b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/CMSIS/startup_gcc/production-relocate-executable.ld deleted file mode 100644 index 21e613c92..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/CMSIS/startup_gcc/production-relocate-executable.ld +++ /dev/null @@ -1,176 +0,0 @@ -/******************************************************************************* - * (c) Copyright 2009 Actel Corporation. All rights reserved. - * - * SmartFusion/Cortex-M3 linker script creating an executable image for use in - * the Libero flow for relocating executable from internal eNVM to external RAM - * before starting execution. - * - * SVN $Revision: 1766 $ - * SVN $Date: 2009-12-11 16:33:35 +0000 (Fri, 11 Dec 2009) $ - */ -OUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm", - "elf32-littlearm") -GROUP(-lc -lgcc -lm) -OUTPUT_ARCH(arm) -ENTRY(Reset_Handler) -SEARCH_DIR(.) -__DYNAMIC = 0; - -/******************************************************************************* - * Start of board customization. - *******************************************************************************/ -MEMORY -{ - /* SmartFusion internal eNVM */ - rom (rx) : ORIGIN = 0, LENGTH = 256k - - /* SmartFusion internal eSRAM */ - esram (rwx) : ORIGIN = 0x20000000, LENGTH = 64k - - /* SmartFusion development board external RAM */ - external_ram (rwx) : ORIGIN = 0x70000000, LENGTH = 2M -} - -RAM_START_ADDRESS = 0x20000000; /* Must be the same value as MEMORY region esram ORIGIN above. */ -RAM_SIZE = 64k; /* Must be the same value as MEMORY region esram LENGTH above. */ -MAIN_STACK_SIZE = 8k; /* Cortex main stack size. */ -PROCESS_STACK_SIZE = 4k; /* Cortex process stack size (only available with OS extensions).*/ - -/******************************************************************************* - * End of board customization. - *******************************************************************************/ - -PROVIDE (__main_stack_start = RAM_START_ADDRESS + RAM_SIZE); -PROVIDE (__process_stack_start = __main_stack_start - MAIN_STACK_SIZE); -PROVIDE (_estack = __main_stack_start); -PROVIDE (__mirrored_nvm = 0); /* Indicate to startup code that NVM is not mirrored to VMA address .text copy is required. */ - -SECTIONS -{ - .reset : - { - *(.isr_vector) -/* *sys_boot.o(.text)*/ - . = ALIGN(0x4); - } >rom - - .text : - { - CREATE_OBJECT_SYMBOLS - __text_load = LOADADDR(.text); - __text_start = .; - - *(.text .text.* .gnu.linkonce.t.*) - *(.plt) - *(.gnu.warning) - *(.glue_7t) *(.glue_7) *(.vfp11_veneer) - - . = ALIGN(0x4); - /* These are for running static constructors and destructors under ELF. */ - KEEP (*crtbegin.o(.ctors)) - KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors)) - KEEP (*(SORT(.ctors.*))) - KEEP (*crtend.o(.ctors)) - KEEP (*crtbegin.o(.dtors)) - KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors)) - KEEP (*(SORT(.dtors.*))) - KEEP (*crtend.o(.dtors)) - - *(.rodata .rodata.* .gnu.linkonce.r.*) - - *(.ARM.extab* .gnu.linkonce.armextab.*) - *(.gcc_except_table) - *(.eh_frame_hdr) - *(.eh_frame) - - KEEP (*(.init)) - KEEP (*(.fini)) - - PROVIDE_HIDDEN (__preinit_array_start = .); - KEEP (*(.preinit_array)) - PROVIDE_HIDDEN (__preinit_array_end = .); - PROVIDE_HIDDEN (__init_array_start = .); - KEEP (*(SORT(.init_array.*))) - KEEP (*(.init_array)) - PROVIDE_HIDDEN (__init_array_end = .); - PROVIDE_HIDDEN (__fini_array_start = .); - KEEP (*(.fini_array)) - KEEP (*(SORT(.fini_array.*))) - PROVIDE_HIDDEN (__fini_array_end = .); - } >external_ram AT>rom - /* .ARM.exidx is sorted, so has to go in its own output section. */ - __exidx_start = .; - .ARM.exidx : - { - *(.ARM.exidx* .gnu.linkonce.armexidx.*) - } >external_ram AT>rom - __exidx_end = .; - _etext = .; - - .data : - { - __data_load = LOADADDR(.data); - _sidata = LOADADDR (.data); - __data_start = .; - _sdata = .; - KEEP(*(.jcr)) - *(.got.plt) *(.got) - *(.shdata) - *(.data .data.* .gnu.linkonce.d.*) - . = ALIGN (4); - _edata = .; - } >esram AT>rom - - .bss : - { - __bss_start__ = . ; - _sbss = .; - *(.shbss) - *(.bss .bss.* .gnu.linkonce.b.*) - *(COMMON) - . = ALIGN (8); - __bss_end__ = .; - _end = .; - __end = _end; - _ebss = .; - PROVIDE(end = .); - } >esram AT>rom - - .stab 0 (NOLOAD) : - { - *(.stab) - } - - .stabstr 0 (NOLOAD) : - { - *(.stabstr) - } - /* DWARF debug sections. - Symbols in the DWARF debugging sections are relative to the beginning - of the section so we begin them at 0. */ - /* DWARF 1 */ - .debug 0 : { *(.debug) } - .line 0 : { *(.line) } - /* GNU DWARF 1 extensions */ - .debug_srcinfo 0 : { *(.debug_srcinfo) } - .debug_sfnames 0 : { *(.debug_sfnames) } - /* DWARF 1.1 and DWARF 2 */ - .debug_aranges 0 : { *(.debug_aranges) } - .debug_pubnames 0 : { *(.debug_pubnames) } - /* DWARF 2 */ - .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } - .debug_abbrev 0 : { *(.debug_abbrev) } - .debug_line 0 : { *(.debug_line) } - .debug_frame 0 : { *(.debug_frame) } - .debug_str 0 : { *(.debug_str) } - .debug_loc 0 : { *(.debug_loc) } - .debug_macinfo 0 : { *(.debug_macinfo) } - /* SGI/MIPS DWARF 2 extensions */ - .debug_weaknames 0 : { *(.debug_weaknames) } - .debug_funcnames 0 : { *(.debug_funcnames) } - .debug_typenames 0 : { *(.debug_typenames) } - .debug_varnames 0 : { *(.debug_varnames) } - .note.gnu.arm.ident 0 : { KEEP (*(.note.gnu.arm.ident)) } - .ARM.attributes 0 : { KEEP (*(.ARM.attributes)) } - /DISCARD/ : { *(.note.GNU-stack) } -} diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/CMSIS/startup_gcc/startup_a2fxxxm3.s b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/CMSIS/startup_gcc/startup_a2fxxxm3.s deleted file mode 100644 index e9e87adca..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/CMSIS/startup_gcc/startup_a2fxxxm3.s +++ /dev/null @@ -1,1504 +0,0 @@ -/******************************************************************************* - * (c) Copyright 2009 Actel Corporation. All rights reserved. - * - * SmartFusion A2FXXXM3 vector table and startup code. - * - * SVN $Revision: 2068 $ - * SVN $Date: 2010-01-27 17:27:41 +0000 (Wed, 27 Jan 2010) $ - */ - - .syntax unified - .cpu cortex-m3 - .thumb - - -/*============================================================================== - * Vector table - */ - .global g_pfnVectors - .section .isr_vector,"a",%progbits - .type g_pfnVectors, %object - .size g_pfnVectors, .-g_pfnVectors - -g_pfnVectors: - .word _estack - .word Reset_Handler - .word NMI_Handler - .word HardFault_Handler - .word MemManage_Handler - .word BusFault_Handler - .word UsageFault_Handler - .word 0 - .word 0 - .word 0 - .word 0 - .word SVC_Handler - .word DebugMon_Handler - .word 0 - .word PendSV_Handler - .word SysTick_Handler - .word WdogWakeup_IRQHandler - .word BrownOut_1_5V_IRQHandler - .word BrownOut_3_3V_IRQHandler - .word RTC_Match_IRQHandler - .word RTCIF_Pub_IRQHandler - .word EthernetMAC_IRQHandler - .word IAP_IRQHandler - .word ENVM0_IRQHandler - .word ENVM1_IRQHandler - .word DMA_IRQHandler - .word UART0_IRQHandler - .word UART1_IRQHandler - .word SPI0_IRQHandler - .word SPI1_IRQHandler - .word I2C0_IRQHandler - .word I2C0_SMBAlert_IRQHandler - .word I2C0_SMBus_IRQHandler - .word I2C1_IRQHandler - .word I2C1_SMBAlert_IRQHandler - .word I2C1_SMBus_IRQHandler - .word Timer1_IRQHandler - .word Timer2_IRQHandler - .word PLL_Lock_IRQHandler - .word PLL_LockLost_IRQHandler - .word CommError_IRQHandler - .word 0 - .word 0 - .word 0 - .word 0 - .word 0 - .word 0 - .word Fabric_IRQHandler - .word GPIO0_IRQHandler - .word GPIO1_IRQHandler - .word GPIO2_IRQHandler - .word GPIO3_IRQHandler - .word GPIO4_IRQHandler - .word GPIO5_IRQHandler - .word GPIO6_IRQHandler - .word GPIO7_IRQHandler - .word GPIO8_IRQHandler - .word GPIO9_IRQHandler - .word GPIO10_IRQHandler - .word GPIO11_IRQHandler - .word GPIO12_IRQHandler - .word GPIO13_IRQHandler - .word GPIO14_IRQHandler - .word GPIO15_IRQHandler - .word GPIO16_IRQHandler - .word GPIO17_IRQHandler - .word GPIO18_IRQHandler - .word GPIO19_IRQHandler - .word GPIO20_IRQHandler - .word GPIO21_IRQHandler - .word GPIO22_IRQHandler - .word GPIO23_IRQHandler - .word GPIO24_IRQHandler - .word GPIO25_IRQHandler - .word GPIO26_IRQHandler - .word GPIO27_IRQHandler - .word GPIO28_IRQHandler - .word GPIO29_IRQHandler - .word GPIO30_IRQHandler - .word GPIO31_IRQHandler - .word ACE_PC0_Flag0_IRQHandler - .word ACE_PC0_Flag1_IRQHandler - .word ACE_PC0_Flag2_IRQHandler - .word ACE_PC0_Flag3_IRQHandler - .word ACE_PC1_Flag0_IRQHandler - .word ACE_PC1_Flag1_IRQHandler - .word ACE_PC1_Flag2_IRQHandler - .word ACE_PC1_Flag3_IRQHandler - .word ACE_PC2_Flag0_IRQHandler - .word ACE_PC2_Flag1_IRQHandler - .word ACE_PC2_Flag2_IRQHandler - .word ACE_PC2_Flag3_IRQHandler - .word ACE_ADC0_DataValid_IRQHandler - .word ACE_ADC1_DataValid_IRQHandler - .word ACE_ADC2_DataValid_IRQHandler - .word ACE_ADC0_CalDone_IRQHandler - .word ACE_ADC1_CalDone_IRQHandler - .word ACE_ADC2_CalDone_IRQHandler - .word ACE_ADC0_CalStart_IRQHandler - .word ACE_ADC1_CalStart_IRQHandler - .word ACE_ADC2_CalStart_IRQHandler - .word ACE_Comp0_Fall_IRQHandler - .word ACE_Comp1_Fall_IRQHandler - .word ACE_Comp2_Fall_IRQHandler - .word ACE_Comp3_Fall_IRQHandler - .word ACE_Comp4_Fall_IRQHandler - .word ACE_Comp5_Fall_IRQHandler - .word ACE_Comp6_Fall_IRQHandler - .word ACE_Comp7_Fall_IRQHandler - .word ACE_Comp8_Fall_IRQHandler - .word ACE_Comp9_Fall_IRQHandler - .word ACE_Comp10_Fall_IRQHandler - .word ACE_Comp11_Fall_IRQHandler - .word ACE_Comp0_Rise_IRQHandler - .word ACE_Comp1_Rise_IRQHandler - .word ACE_Comp2_Rise_IRQHandler - .word ACE_Comp3_Rise_IRQHandler - .word ACE_Comp4_Rise_IRQHandler - .word ACE_Comp5_Rise_IRQHandler - .word ACE_Comp6_Rise_IRQHandler - .word ACE_Comp7_Rise_IRQHandler - .word ACE_Comp8_Rise_IRQHandler - .word ACE_Comp9_Rise_IRQHandler - .word ACE_Comp10_Rise_IRQHandler - .word ACE_Comp11_Rise_IRQHandler - .word ACE_ADC0_FifoFull_IRQHandler - .word ACE_ADC0_FifoAFull_IRQHandler - .word ACE_ADC0_FifoEmpty_IRQHandler - .word ACE_ADC1_FifoFull_IRQHandler - .word ACE_ADC1_FifoAFull_IRQHandler - .word ACE_ADC1_FifoEmpty_IRQHandler - .word ACE_ADC2_FifoFull_IRQHandler - .word ACE_ADC2_FifoAFull_IRQHandler - .word ACE_ADC2_FifoEmpty_IRQHandler - .word ACE_PPE_Flag0_IRQHandler - .word ACE_PPE_Flag1_IRQHandler - .word ACE_PPE_Flag2_IRQHandler - .word ACE_PPE_Flag3_IRQHandler - .word ACE_PPE_Flag4_IRQHandler - .word ACE_PPE_Flag5_IRQHandler - .word ACE_PPE_Flag6_IRQHandler - .word ACE_PPE_Flag7_IRQHandler - .word ACE_PPE_Flag8_IRQHandler - .word ACE_PPE_Flag9_IRQHandler - .word ACE_PPE_Flag10_IRQHandler - .word ACE_PPE_Flag11_IRQHandler - .word ACE_PPE_Flag12_IRQHandler - .word ACE_PPE_Flag13_IRQHandler - .word ACE_PPE_Flag14_IRQHandler - .word ACE_PPE_Flag15_IRQHandler - .word ACE_PPE_Flag16_IRQHandler - .word ACE_PPE_Flag17_IRQHandler - .word ACE_PPE_Flag18_IRQHandler - .word ACE_PPE_Flag19_IRQHandler - .word ACE_PPE_Flag20_IRQHandler - .word ACE_PPE_Flag21_IRQHandler - .word ACE_PPE_Flag22_IRQHandler - .word ACE_PPE_Flag23_IRQHandler - .word ACE_PPE_Flag24_IRQHandler - .word ACE_PPE_Flag25_IRQHandler - .word ACE_PPE_Flag26_IRQHandler - .word ACE_PPE_Flag27_IRQHandler - .word ACE_PPE_Flag28_IRQHandler - .word ACE_PPE_Flag29_IRQHandler - .word ACE_PPE_Flag30_IRQHandler - .word ACE_PPE_Flag31_IRQHandler - - -/*============================================================================== - * Reset_Handler - */ - .global Reset_Handler - .type Reset_Handler, %function -Reset_Handler: -_start: -/*------------------------------------------------------------------------------ - * Call CMSIS system init function. - * This is not actually required for SmartFusioon as all low initialisations are - * done as part of the system boot. - */ -; ldr r0, =SystemInit -; blx r0 - -/*------------------------------------------------------------------------------ - * Check if the executable is built for NVM LMA mirrored to VMA address. - * This is done for debugging executables running out of eNVM with SoftConsole. - * The .text section should not be copied in this case since both the LMA and - * VMA point at the eNVM despite the LMA and VMa having different values. - */ - ldr r0, =__mirrored_nvm - cmp r0, #0 - bne copy_data - -/*------------------------------------------------------------------------------ - * Copy code section. - */ - ldr r0, =__text_load - ldr r1, =__text_start - ldr r2, =_etext - cmp r0, r1 - beq copy_data -copy_code_loop: - cmp r1, r2 - itt ne - ldrne r3, [r0], #4 - strne r3, [r1], #4 - bne copy_code_loop - -/*------------------------------------------------------------------------------ - * Copy data section. - */ -copy_data: - ldr r0, =__data_load - ldr r1, =__data_start - ldr r2, =_edata - cmp r0, r1 - beq clear_bss -copy_data_loop: - cmp r1, r2 - itt ne - ldrne r3, [r0], #4 - strne r3, [r1], #4 - bne copy_data_loop - -/*------------------------------------------------------------------------------ - * Clear .bss - */ -clear_bss: - ldr r0, =0 - ldr r1, =__bss_start__ - ldr r2, =__bss_end__ -clear_bss_loop: - cmp r1, r2 - it ne - strne r0, [r1], #4 - bne clear_bss_loop - -/*------------------------------------------------------------------------------ - * Call global constructors - */ -call_glob_ctor: - ldr r0, =__libc_init_array - add lr, pc, #3 - bx r0 - -/*------------------------------------------------------------------------------ - * branch to main. - */ -branch_to_main: - mov r0, #0 /* no arguments */ - mov r1, #0 /* no argv either */ - ldr pc, =main - -ExitLoop: - B ExitLoop - -/*============================================================================== - * NMI_Handler - */ - .weak NMI_Handler - .type NMI_Handler, %function -NMI_Handler: - B . - -/*============================================================================== - * HardFault_Handler - */ - .weak HardFault_Handler - .type HardFault_Handler, %function -HardFault_Handler: - B . - -/*============================================================================== - * MemManage_Handler - */ - .weak MemManage_Handler - .type MemManage_Handler, %function -MemManage_Handler: - B . - -/*============================================================================== - * BusFault_Handler - */ - .weak BusFault_Handler - .type BusFault_Handler, %function -BusFault_Handler: - B . - -/*============================================================================== - * UsageFault_Handler - */ - .weak UsageFault_Handler - .type UsageFault_Handler, %function -UsageFault_Handler: - B . - -/*============================================================================== - * SVC_Handler - */ - .weak SVC_Handler - .type SVC_Handler, %function -SVC_Handler: - B . - -/*============================================================================== - * DebugMon_Handler - */ - .weak DebugMon_Handler - .type DebugMon_Handler, %function -DebugMon_Handler: - B . - -/*============================================================================== - * PendSV_Handler - */ - .weak PendSV_Handler - .type PendSV_Handler, %function -PendSV_Handler: - B . - -/*============================================================================== - * SysTick_Handler - */ - .weak SysTick_Handler - .type SysTick_Handler, %function -SysTick_Handler: - B . - -/*============================================================================== - * WdogWakeup_IRQHandler - */ - .weak WdogWakeup_IRQHandler - .type WdogWakeup_IRQHandler, %function -WdogWakeup_IRQHandler: - B . - -/*============================================================================== - * BrownOut_1_5V_IRQHandler - */ - .weak BrownOut_1_5V_IRQHandler - .type BrownOut_1_5V_IRQHandler, %function -BrownOut_1_5V_IRQHandler: - B . - -/*============================================================================== - * BrownOut_3_3V_IRQHandler - */ - .weak BrownOut_3_3V_IRQHandler - .type BrownOut_3_3V_IRQHandler, %function -BrownOut_3_3V_IRQHandler: - B . - -/*============================================================================== - * RTC_Match_IRQHandler - */ - .weak RTC_Match_IRQHandler - .type RTC_Match_IRQHandler, %function -RTC_Match_IRQHandler: - B . - -/*============================================================================== - * RTCIF_Pub_IRQHandler - */ - .weak RTCIF_Pub_IRQHandler - .type RTCIF_Pub_IRQHandler, %function -RTCIF_Pub_IRQHandler: - B . - -/*============================================================================== - * EthernetMAC_IRQHandler - */ - .weak EthernetMAC_IRQHandler - .type EthernetMAC_IRQHandler, %function -EthernetMAC_IRQHandler: - B . - -/*============================================================================== - * IAP_IRQHandler - */ - .weak IAP_IRQHandler - .type IAP_IRQHandler, %function -IAP_IRQHandler: - B . - -/*============================================================================== - * ENVM0_IRQHandler - */ - .weak ENVM0_IRQHandler - .type ENVM0_IRQHandler, %function -ENVM0_IRQHandler: - B . - -/*============================================================================== - * ENVM1_IRQHandler - */ - .weak ENVM1_IRQHandler - .type ENVM1_IRQHandler, %function -ENVM1_IRQHandler: - B . - -/*============================================================================== - * DMA_IRQHandler - */ - .weak DMA_IRQHandler - .type DMA_IRQHandler, %function -DMA_IRQHandler: - B . - -/*============================================================================== - * UART0_IRQHandler - */ - .weak UART0_IRQHandler - .type UART0_IRQHandler, %function -UART0_IRQHandler: - B . - -/*============================================================================== - * UART1_IRQHandler - */ - .weak UART1_IRQHandler - .type UART1_IRQHandler, %function -UART1_IRQHandler: - B . - -/*============================================================================== - * SPI0_IRQHandler - */ - .weak SPI0_IRQHandler - .type SPI0_IRQHandler, %function -SPI0_IRQHandler: - B . - -/*============================================================================== - * SPI1_IRQHandler - */ - .weak SPI1_IRQHandler - .type SPI1_IRQHandler, %function -SPI1_IRQHandler: - B . - -/*============================================================================== - * I2C0_IRQHandler - */ - .weak I2C0_IRQHandler - .type I2C0_IRQHandler, %function -I2C0_IRQHandler: - B . - -/*============================================================================== - * I2C0_SMBAlert_IRQHandler - */ - .weak I2C0_SMBAlert_IRQHandler - .type I2C0_SMBAlert_IRQHandler, %function -I2C0_SMBAlert_IRQHandler: - B . - -/*============================================================================== - * I2C0_SMBus_IRQHandler - */ - .weak I2C0_SMBus_IRQHandler - .type I2C0_SMBus_IRQHandler, %function -I2C0_SMBus_IRQHandler: - B . - -/*============================================================================== - * I2C1_IRQHandler - */ - .weak I2C1_IRQHandler - .type I2C1_IRQHandler, %function -I2C1_IRQHandler: - B . - -/*============================================================================== - * I2C1_SMBAlert_IRQHandler - */ - .weak I2C1_SMBAlert_IRQHandler - .type I2C1_SMBAlert_IRQHandler, %function -I2C1_SMBAlert_IRQHandler: - B . - -/*============================================================================== - * I2C1_SMBus_IRQHandler - */ - .weak I2C1_SMBus_IRQHandler - .type I2C1_SMBus_IRQHandler, %function -I2C1_SMBus_IRQHandler: - B . - -/*============================================================================== - * Timer1_IRQHandler - */ - .weak Timer1_IRQHandler - .type Timer1_IRQHandler, %function -Timer1_IRQHandler: - B . - -/*============================================================================== - * Timer2_IRQHandler - */ - .weak Timer2_IRQHandler - .type Timer2_IRQHandler, %function -Timer2_IRQHandler: - B . - -/*============================================================================== - * PLL_Lock_IRQHandler - */ - .weak PLL_Lock_IRQHandler - .type PLL_Lock_IRQHandler, %function -PLL_Lock_IRQHandler: - B . - -/*============================================================================== - * PLL_LockLost_IRQHandler - */ - .weak PLL_LockLost_IRQHandler - .type PLL_LockLost_IRQHandler, %function -PLL_LockLost_IRQHandler: - B . - -/*============================================================================== - * CommError_IRQHandler - */ - .weak CommError_IRQHandler - .type CommError_IRQHandler, %function -CommError_IRQHandler: - B . - -/*============================================================================== - * Fabric_IRQHandler - */ - .weak Fabric_IRQHandler - .type Fabric_IRQHandler, %function -Fabric_IRQHandler: - B . - -/*============================================================================== - * GPIO0_IRQHandler - */ - .weak GPIO0_IRQHandler - .type GPIO0_IRQHandler, %function -GPIO0_IRQHandler: - B . - -/*============================================================================== - * GPIO1_IRQHandler - */ - .weak GPIO1_IRQHandler - .type GPIO1_IRQHandler, %function -GPIO1_IRQHandler: - B . - -/*============================================================================== - * GPIO2_IRQHandler - */ - .weak GPIO2_IRQHandler - .type GPIO2_IRQHandler, %function -GPIO2_IRQHandler: - B . - -/*============================================================================== - * GPIO3_IRQHandler - */ - .weak GPIO3_IRQHandler - .type GPIO3_IRQHandler, %function -GPIO3_IRQHandler: - B . - -/*============================================================================== - * GPIO4_IRQHandler - */ - .weak GPIO4_IRQHandler - .type GPIO4_IRQHandler, %function -GPIO4_IRQHandler: - B . - -/*============================================================================== - * GPIO5_IRQHandler - */ - .weak GPIO5_IRQHandler - .type GPIO5_IRQHandler, %function -GPIO5_IRQHandler: - B . - -/*============================================================================== - * GPIO6_IRQHandler - */ - .weak GPIO6_IRQHandler - .type GPIO6_IRQHandler, %function -GPIO6_IRQHandler: - B . - -/*============================================================================== - * GPIO7_IRQHandler - */ - .weak GPIO7_IRQHandler - .type GPIO7_IRQHandler, %function -GPIO7_IRQHandler: - B . - -/*============================================================================== - * GPIO8_IRQHandler - */ - .weak GPIO8_IRQHandler - .type GPIO8_IRQHandler, %function -GPIO8_IRQHandler: - B . - -/*============================================================================== - * GPIO9_IRQHandler - */ - .weak GPIO9_IRQHandler - .type GPIO9_IRQHandler, %function -GPIO9_IRQHandler: - B . - -/*============================================================================== - * GPIO10_IRQHandler - */ - .weak GPIO10_IRQHandler - .type GPIO10_IRQHandler, %function -GPIO10_IRQHandler: - B . - -/*============================================================================== - * GPIO11_IRQHandler - */ - .weak GPIO11_IRQHandler - .type GPIO11_IRQHandler, %function -GPIO11_IRQHandler: - B . - -/*============================================================================== - * GPIO12_IRQHandler - */ - .weak GPIO12_IRQHandler - .type GPIO12_IRQHandler, %function -GPIO12_IRQHandler: - B . - -/*============================================================================== - * GPIO13_IRQHandler - */ - .weak GPIO13_IRQHandler - .type GPIO13_IRQHandler, %function -GPIO13_IRQHandler: - B . - -/*============================================================================== - * GPIO14_IRQHandler - */ - .weak GPIO14_IRQHandler - .type GPIO14_IRQHandler, %function -GPIO14_IRQHandler: - B . - -/*============================================================================== - * GPIO15_IRQHandler - */ - .weak GPIO15_IRQHandler - .type GPIO15_IRQHandler, %function -GPIO15_IRQHandler: - B . - -/*============================================================================== - * GPIO16_IRQHandler - */ - .weak GPIO16_IRQHandler - .type GPIO16_IRQHandler, %function -GPIO16_IRQHandler: - B . - -/*============================================================================== - * GPIO17_IRQHandler - */ - .weak GPIO17_IRQHandler - .type GPIO17_IRQHandler, %function -GPIO17_IRQHandler: - B . - -/*============================================================================== - * GPIO18_IRQHandler - */ - .weak GPIO18_IRQHandler - .type GPIO18_IRQHandler, %function -GPIO18_IRQHandler: - B . - -/*============================================================================== - * GPIO19_IRQHandler - */ - .weak GPIO19_IRQHandler - .type GPIO19_IRQHandler, %function -GPIO19_IRQHandler: - B . - -/*============================================================================== - * GPIO20_IRQHandler - */ - .weak GPIO20_IRQHandler - .type GPIO20_IRQHandler, %function -GPIO20_IRQHandler: - B . - -/*============================================================================== - * GPIO21_IRQHandler - */ - .weak GPIO21_IRQHandler - .type GPIO21_IRQHandler, %function -GPIO21_IRQHandler: - B . - -/*============================================================================== - * GPIO22_IRQHandler - */ - .weak GPIO22_IRQHandler - .type GPIO22_IRQHandler, %function -GPIO22_IRQHandler: - B . - -/*============================================================================== - * GPIO23_IRQHandler - */ - .weak GPIO23_IRQHandler - .type GPIO23_IRQHandler, %function -GPIO23_IRQHandler: - B . - -/*============================================================================== - * GPIO24_IRQHandler - */ - .weak GPIO24_IRQHandler - .type GPIO24_IRQHandler, %function -GPIO24_IRQHandler: - B . - -/*============================================================================== - * GPIO25_IRQHandler - */ - .weak GPIO25_IRQHandler - .type GPIO25_IRQHandler, %function -GPIO25_IRQHandler: - B . - -/*============================================================================== - * GPIO26_IRQHandler - */ - .weak GPIO26_IRQHandler - .type GPIO26_IRQHandler, %function -GPIO26_IRQHandler: - B . - -/*============================================================================== - * GPIO27_IRQHandler - */ - .weak GPIO27_IRQHandler - .type GPIO27_IRQHandler, %function -GPIO27_IRQHandler: - B . - -/*============================================================================== - * GPIO28_IRQHandler - */ - .weak GPIO28_IRQHandler - .type GPIO28_IRQHandler, %function -GPIO28_IRQHandler: - B . - -/*============================================================================== - * GPIO29_IRQHandler - */ - .weak GPIO29_IRQHandler - .type GPIO29_IRQHandler, %function -GPIO29_IRQHandler: - B . - -/*============================================================================== - * GPIO30_IRQHandler - */ - .weak GPIO30_IRQHandler - .type GPIO30_IRQHandler, %function -GPIO30_IRQHandler: - B . - -/*============================================================================== - * GPIO31_IRQHandler - */ - .weak GPIO31_IRQHandler - .type GPIO31_IRQHandler, %function -GPIO31_IRQHandler: - B . - -/*============================================================================== - * ACE_PC0_Flag0_IRQHandler - */ - .weak ACE_PC0_Flag0_IRQHandler - .type ACE_PC0_Flag0_IRQHandler, %function -ACE_PC0_Flag0_IRQHandler: - B . - -/*============================================================================== - * ACE_PC0_Flag1_IRQHandler - */ - .weak ACE_PC0_Flag1_IRQHandler - .type ACE_PC0_Flag1_IRQHandler, %function -ACE_PC0_Flag1_IRQHandler: - B . - -/*============================================================================== - * ACE_PC0_Flag2_IRQHandler - */ - .weak ACE_PC0_Flag2_IRQHandler - .type ACE_PC0_Flag2_IRQHandler, %function -ACE_PC0_Flag2_IRQHandler: - B . - -/*============================================================================== - * ACE_PC0_Flag3_IRQHandler - */ - .weak ACE_PC0_Flag3_IRQHandler - .type ACE_PC0_Flag3_IRQHandler, %function -ACE_PC0_Flag3_IRQHandler: - B . - -/*============================================================================== - * ACE_PC1_Flag0_IRQHandler - */ - .weak ACE_PC1_Flag0_IRQHandler - .type ACE_PC1_Flag0_IRQHandler, %function -ACE_PC1_Flag0_IRQHandler: - B . - -/*============================================================================== - * ACE_PC1_Flag1_IRQHandler - */ - .weak ACE_PC1_Flag1_IRQHandler - .type ACE_PC1_Flag1_IRQHandler, %function -ACE_PC1_Flag1_IRQHandler: - B . - -/*============================================================================== - * ACE_PC1_Flag2_IRQHandler - */ - .weak ACE_PC1_Flag2_IRQHandler - .type ACE_PC1_Flag2_IRQHandler, %function -ACE_PC1_Flag2_IRQHandler: - B . - -/*============================================================================== - * ACE_PC1_Flag3_IRQHandler - */ - .weak ACE_PC1_Flag3_IRQHandler - .type ACE_PC1_Flag3_IRQHandler, %function -ACE_PC1_Flag3_IRQHandler: - B . - -/*============================================================================== - * ACE_PC2_Flag0_IRQHandler - */ - .weak ACE_PC2_Flag0_IRQHandler - .type ACE_PC2_Flag0_IRQHandler, %function -ACE_PC2_Flag0_IRQHandler: - B . - -/*============================================================================== - * ACE_PC2_Flag1_IRQHandler - */ - .weak ACE_PC2_Flag1_IRQHandler - .type ACE_PC2_Flag1_IRQHandler, %function -ACE_PC2_Flag1_IRQHandler: - B . - -/*============================================================================== - * ACE_PC2_Flag2_IRQHandler - */ - .weak ACE_PC2_Flag2_IRQHandler - .type ACE_PC2_Flag2_IRQHandler, %function -ACE_PC2_Flag2_IRQHandler: - B . - -/*============================================================================== - * ACE_PC2_Flag3_IRQHandler - */ - .weak ACE_PC2_Flag3_IRQHandler - .type ACE_PC2_Flag3_IRQHandler, %function -ACE_PC2_Flag3_IRQHandler: - B . - -/*============================================================================== - * ACE_ADC0_DataValid_IRQHandler - */ - .weak ACE_ADC0_DataValid_IRQHandler - .type ACE_ADC0_DataValid_IRQHandler, %function -ACE_ADC0_DataValid_IRQHandler: - B . - -/*============================================================================== - * ACE_ADC1_DataValid_IRQHandler - */ - .weak ACE_ADC1_DataValid_IRQHandler - .type ACE_ADC1_DataValid_IRQHandler, %function -ACE_ADC1_DataValid_IRQHandler: - B . - -/*============================================================================== - * ACE_ADC2_DataValid_IRQHandler - */ - .weak ACE_ADC2_DataValid_IRQHandler - .type ACE_ADC2_DataValid_IRQHandler, %function -ACE_ADC2_DataValid_IRQHandler: - B . - -/*============================================================================== - * ACE_ADC0_CalDone_IRQHandler - */ - .weak ACE_ADC0_CalDone_IRQHandler - .type ACE_ADC0_CalDone_IRQHandler, %function -ACE_ADC0_CalDone_IRQHandler: - B . - -/*============================================================================== - * ACE_ADC1_CalDone_IRQHandler - */ - .weak ACE_ADC1_CalDone_IRQHandler - .type ACE_ADC1_CalDone_IRQHandler, %function -ACE_ADC1_CalDone_IRQHandler: - B . - -/*============================================================================== - * ACE_ADC2_CalDone_IRQHandler - */ - .weak ACE_ADC2_CalDone_IRQHandler - .type ACE_ADC2_CalDone_IRQHandler, %function -ACE_ADC2_CalDone_IRQHandler: - B . - -/*============================================================================== - * ACE_ADC0_CalStart_IRQHandler - */ - .weak ACE_ADC0_CalStart_IRQHandler - .type ACE_ADC0_CalStart_IRQHandler, %function -ACE_ADC0_CalStart_IRQHandler: - B . - -/*============================================================================== - * ACE_ADC1_CalStart_IRQHandler - */ - .weak ACE_ADC1_CalStart_IRQHandler - .type ACE_ADC1_CalStart_IRQHandler, %function -ACE_ADC1_CalStart_IRQHandler: - B . - -/*============================================================================== - * ACE_ADC2_CalStart_IRQHandler - */ - .weak ACE_ADC2_CalStart_IRQHandler - .type ACE_ADC2_CalStart_IRQHandler, %function -ACE_ADC2_CalStart_IRQHandler: - B . - -/*============================================================================== - * ACE_Comp0_Fall_IRQHandler - */ - .weak ACE_Comp0_Fall_IRQHandler - .type ACE_Comp0_Fall_IRQHandler, %function -ACE_Comp0_Fall_IRQHandler: - B . - -/*============================================================================== - * ACE_Comp1_Fall_IRQHandler - */ - .weak ACE_Comp1_Fall_IRQHandler - .type ACE_Comp1_Fall_IRQHandler, %function -ACE_Comp1_Fall_IRQHandler: - B . - -/*============================================================================== - * ACE_Comp2_Fall_IRQHandler - */ - .weak ACE_Comp2_Fall_IRQHandler - .type ACE_Comp2_Fall_IRQHandler, %function -ACE_Comp2_Fall_IRQHandler: - B . - -/*============================================================================== - * ACE_Comp3_Fall_IRQHandler - */ - .weak ACE_Comp3_Fall_IRQHandler - .type ACE_Comp3_Fall_IRQHandler, %function -ACE_Comp3_Fall_IRQHandler: - B . - -/*============================================================================== - * ACE_Comp4_Fall_IRQHandler - */ - .weak ACE_Comp4_Fall_IRQHandler - .type ACE_Comp4_Fall_IRQHandler, %function -ACE_Comp4_Fall_IRQHandler: - B . - -/*============================================================================== - * ACE_Comp5_Fall_IRQHandler - */ - .weak ACE_Comp5_Fall_IRQHandler - .type ACE_Comp5_Fall_IRQHandler, %function -ACE_Comp5_Fall_IRQHandler: - B . - -/*============================================================================== - * ACE_Comp6_Fall_IRQHandler - */ - .weak ACE_Comp6_Fall_IRQHandler - .type ACE_Comp6_Fall_IRQHandler, %function -ACE_Comp6_Fall_IRQHandler: - B . - -/*============================================================================== - * ACE_Comp7_Fall_IRQHandler - */ - .weak ACE_Comp7_Fall_IRQHandler - .type ACE_Comp7_Fall_IRQHandler, %function -ACE_Comp7_Fall_IRQHandler: - B . - -/*============================================================================== - * ACE_Comp8_Fall_IRQHandler - */ - .weak ACE_Comp8_Fall_IRQHandler - .type ACE_Comp8_Fall_IRQHandler, %function -ACE_Comp8_Fall_IRQHandler: - B . - -/*============================================================================== - * ACE_Comp9_Fall_IRQHandler - */ - .weak ACE_Comp9_Fall_IRQHandler - .type ACE_Comp9_Fall_IRQHandler, %function -ACE_Comp9_Fall_IRQHandler: - B . - -/*============================================================================== - * ACE_Comp10_Fall_IRQHandler - */ - .weak ACE_Comp10_Fall_IRQHandler - .type ACE_Comp10_Fall_IRQHandler, %function -ACE_Comp10_Fall_IRQHandler: - B . - -/*============================================================================== - * ACE_Comp11_Fall_IRQHandler - */ - .weak ACE_Comp11_Fall_IRQHandler - .type ACE_Comp11_Fall_IRQHandler, %function -ACE_Comp11_Fall_IRQHandler: - B . - -/*============================================================================== - * ACE_Comp0_Rise_IRQHandler - */ - .weak ACE_Comp0_Rise_IRQHandler - .type ACE_Comp0_Rise_IRQHandler, %function -ACE_Comp0_Rise_IRQHandler: - B . - -/*============================================================================== - * ACE_Comp1_Rise_IRQHandler - */ - .weak ACE_Comp1_Rise_IRQHandler - .type ACE_Comp1_Rise_IRQHandler, %function -ACE_Comp1_Rise_IRQHandler: - B . - -/*============================================================================== - * ACE_Comp2_Rise_IRQHandler - */ - .weak ACE_Comp2_Rise_IRQHandler - .type ACE_Comp2_Rise_IRQHandler, %function -ACE_Comp2_Rise_IRQHandler: - B . - -/*============================================================================== - * ACE_Comp3_Rise_IRQHandler - */ - .weak ACE_Comp3_Rise_IRQHandler - .type ACE_Comp3_Rise_IRQHandler, %function -ACE_Comp3_Rise_IRQHandler: - B . - -/*============================================================================== - * ACE_Comp4_Rise_IRQHandler - */ - .weak ACE_Comp4_Rise_IRQHandler - .type ACE_Comp4_Rise_IRQHandler, %function -ACE_Comp4_Rise_IRQHandler: - B . - -/*============================================================================== - * ACE_Comp5_Rise_IRQHandler - */ - .weak ACE_Comp5_Rise_IRQHandler - .type ACE_Comp5_Rise_IRQHandler, %function -ACE_Comp5_Rise_IRQHandler: - B . - -/*============================================================================== - * ACE_Comp6_Rise_IRQHandler - */ - .weak ACE_Comp6_Rise_IRQHandler - .type ACE_Comp6_Rise_IRQHandler, %function -ACE_Comp6_Rise_IRQHandler: - B . - -/*============================================================================== - * ACE_Comp7_Rise_IRQHandler - */ - .weak ACE_Comp7_Rise_IRQHandler - .type ACE_Comp7_Rise_IRQHandler, %function -ACE_Comp7_Rise_IRQHandler: - B . - -/*============================================================================== - * ACE_Comp8_Rise_IRQHandler - */ - .weak ACE_Comp8_Rise_IRQHandler - .type ACE_Comp8_Rise_IRQHandler, %function -ACE_Comp8_Rise_IRQHandler: - B . - -/*============================================================================== - * ACE_Comp9_Rise_IRQHandler - */ - .weak ACE_Comp9_Rise_IRQHandler - .type ACE_Comp9_Rise_IRQHandler, %function -ACE_Comp9_Rise_IRQHandler: - B . - -/*============================================================================== - * ACE_Comp10_Rise_IRQHandler - */ - .weak ACE_Comp10_Rise_IRQHandler - .type ACE_Comp10_Rise_IRQHandler, %function -ACE_Comp10_Rise_IRQHandler: - B . - -/*============================================================================== - * ACE_Comp11_Rise_IRQHandler - */ - .weak ACE_Comp11_Rise_IRQHandler - .type ACE_Comp11_Rise_IRQHandler, %function -ACE_Comp11_Rise_IRQHandler: - B . - -/*============================================================================== - * ACE_ADC0_FifoFull_IRQHandler - */ - .weak ACE_ADC0_FifoFull_IRQHandler - .type ACE_ADC0_FifoFull_IRQHandler, %function -ACE_ADC0_FifoFull_IRQHandler: - B . - -/*============================================================================== - * ACE_ADC0_FifoAFull_IRQHandler - */ - .weak ACE_ADC0_FifoAFull_IRQHandler - .type ACE_ADC0_FifoAFull_IRQHandler, %function -ACE_ADC0_FifoAFull_IRQHandler: - B . - -/*============================================================================== - * ACE_ADC0_FifoEmpty_IRQHandler - */ - .weak ACE_ADC0_FifoEmpty_IRQHandler - .type ACE_ADC0_FifoEmpty_IRQHandler, %function -ACE_ADC0_FifoEmpty_IRQHandler: - B . - -/*============================================================================== - * ACE_ADC1_FifoFull_IRQHandler - */ - .weak ACE_ADC1_FifoFull_IRQHandler - .type ACE_ADC1_FifoFull_IRQHandler, %function -ACE_ADC1_FifoFull_IRQHandler: - B . - -/*============================================================================== - * ACE_ADC1_FifoAFull_IRQHandler - */ - .weak ACE_ADC1_FifoAFull_IRQHandler - .type ACE_ADC1_FifoAFull_IRQHandler, %function -ACE_ADC1_FifoAFull_IRQHandler: - B . - -/*============================================================================== - * ACE_ADC1_FifoEmpty_IRQHandler - */ - .weak ACE_ADC1_FifoEmpty_IRQHandler - .type ACE_ADC1_FifoEmpty_IRQHandler, %function -ACE_ADC1_FifoEmpty_IRQHandler: - B . - -/*============================================================================== - * ACE_ADC2_FifoFull_IRQHandler - */ - .weak ACE_ADC2_FifoFull_IRQHandler - .type ACE_ADC2_FifoFull_IRQHandler, %function -ACE_ADC2_FifoFull_IRQHandler: - B . - -/*============================================================================== - * ACE_ADC2_FifoAFull_IRQHandler - */ - .weak ACE_ADC2_FifoAFull_IRQHandler - .type ACE_ADC2_FifoAFull_IRQHandler, %function -ACE_ADC2_FifoAFull_IRQHandler: - B . - -/*============================================================================== - * ACE_ADC2_FifoEmpty_IRQHandler - */ - .weak ACE_ADC2_FifoEmpty_IRQHandler - .type ACE_ADC2_FifoEmpty_IRQHandler, %function -ACE_ADC2_FifoEmpty_IRQHandler: - B . - -/*============================================================================== - * ACE_PPE_Flag0_IRQHandler - */ - .weak ACE_PPE_Flag0_IRQHandler - .type ACE_PPE_Flag0_IRQHandler, %function -ACE_PPE_Flag0_IRQHandler: - B . - -/*============================================================================== - * ACE_PPE_Flag1_IRQHandler - */ - .weak ACE_PPE_Flag1_IRQHandler - .type ACE_PPE_Flag1_IRQHandler, %function -ACE_PPE_Flag1_IRQHandler: - B . - -/*============================================================================== - * ACE_PPE_Flag2_IRQHandler - */ - .weak ACE_PPE_Flag2_IRQHandler - .type ACE_PPE_Flag2_IRQHandler, %function -ACE_PPE_Flag2_IRQHandler: - B . - -/*============================================================================== - * ACE_PPE_Flag3_IRQHandler - */ - .weak ACE_PPE_Flag3_IRQHandler - .type ACE_PPE_Flag3_IRQHandler, %function -ACE_PPE_Flag3_IRQHandler: - B . - -/*============================================================================== - * ACE_PPE_Flag4_IRQHandler - */ - .weak ACE_PPE_Flag4_IRQHandler - .type ACE_PPE_Flag4_IRQHandler, %function -ACE_PPE_Flag4_IRQHandler: - B . - -/*============================================================================== - * ACE_PPE_Flag5_IRQHandler - */ - .weak ACE_PPE_Flag5_IRQHandler - .type ACE_PPE_Flag5_IRQHandler, %function -ACE_PPE_Flag5_IRQHandler: - B . - -/*============================================================================== - * ACE_PPE_Flag6_IRQHandler - */ - .weak ACE_PPE_Flag6_IRQHandler - .type ACE_PPE_Flag6_IRQHandler, %function -ACE_PPE_Flag6_IRQHandler: - B . - -/*============================================================================== - * ACE_PPE_Flag7_IRQHandler - */ - .weak ACE_PPE_Flag7_IRQHandler - .type ACE_PPE_Flag7_IRQHandler, %function -ACE_PPE_Flag7_IRQHandler: - B . - -/*============================================================================== - * ACE_PPE_Flag8_IRQHandler - */ - .weak ACE_PPE_Flag8_IRQHandler - .type ACE_PPE_Flag8_IRQHandler, %function -ACE_PPE_Flag8_IRQHandler: - B . - -/*============================================================================== - * ACE_PPE_Flag9_IRQHandler - */ - .weak ACE_PPE_Flag9_IRQHandler - .type ACE_PPE_Flag9_IRQHandler, %function -ACE_PPE_Flag9_IRQHandler: - B . - -/*============================================================================== - * ACE_PPE_Flag10_IRQHandler - */ - .weak ACE_PPE_Flag10_IRQHandler - .type ACE_PPE_Flag10_IRQHandler, %function -ACE_PPE_Flag10_IRQHandler: - B . - -/*============================================================================== - * ACE_PPE_Flag11_IRQHandler - */ - .weak ACE_PPE_Flag11_IRQHandler - .type ACE_PPE_Flag11_IRQHandler, %function -ACE_PPE_Flag11_IRQHandler: - B . - -/*============================================================================== - * ACE_PPE_Flag12_IRQHandler - */ - .weak ACE_PPE_Flag12_IRQHandler - .type ACE_PPE_Flag12_IRQHandler, %function -ACE_PPE_Flag12_IRQHandler: - B . - -/*============================================================================== - * ACE_PPE_Flag13_IRQHandler - */ - .weak ACE_PPE_Flag13_IRQHandler - .type ACE_PPE_Flag13_IRQHandler, %function -ACE_PPE_Flag13_IRQHandler: - B . - -/*============================================================================== - * ACE_PPE_Flag14_IRQHandler - */ - .weak ACE_PPE_Flag14_IRQHandler - .type ACE_PPE_Flag14_IRQHandler, %function -ACE_PPE_Flag14_IRQHandler: - B . - -/*============================================================================== - * ACE_PPE_Flag15_IRQHandler - */ - .weak ACE_PPE_Flag15_IRQHandler - .type ACE_PPE_Flag15_IRQHandler, %function -ACE_PPE_Flag15_IRQHandler: - B . - -/*============================================================================== - * ACE_PPE_Flag16_IRQHandler - */ - .weak ACE_PPE_Flag16_IRQHandler - .type ACE_PPE_Flag16_IRQHandler, %function -ACE_PPE_Flag16_IRQHandler: - B . - -/*============================================================================== - * ACE_PPE_Flag17_IRQHandler - */ - .weak ACE_PPE_Flag17_IRQHandler - .type ACE_PPE_Flag17_IRQHandler, %function -ACE_PPE_Flag17_IRQHandler: - B . - -/*============================================================================== - * ACE_PPE_Flag18_IRQHandler - */ - .weak ACE_PPE_Flag18_IRQHandler - .type ACE_PPE_Flag18_IRQHandler, %function -ACE_PPE_Flag18_IRQHandler: - B . - -/*============================================================================== - * ACE_PPE_Flag19_IRQHandler - */ - .weak ACE_PPE_Flag19_IRQHandler - .type ACE_PPE_Flag19_IRQHandler, %function -ACE_PPE_Flag19_IRQHandler: - B . - -/*============================================================================== - * ACE_PPE_Flag20_IRQHandler - */ - .weak ACE_PPE_Flag20_IRQHandler - .type ACE_PPE_Flag20_IRQHandler, %function -ACE_PPE_Flag20_IRQHandler: - B . - -/*============================================================================== - * ACE_PPE_Flag21_IRQHandler - */ - .weak ACE_PPE_Flag21_IRQHandler - .type ACE_PPE_Flag21_IRQHandler, %function -ACE_PPE_Flag21_IRQHandler: - B . - -/*============================================================================== - * ACE_PPE_Flag22_IRQHandler - */ - .weak ACE_PPE_Flag22_IRQHandler - .type ACE_PPE_Flag22_IRQHandler, %function -ACE_PPE_Flag22_IRQHandler: - B . - -/*============================================================================== - * ACE_PPE_Flag23_IRQHandler - */ - .weak ACE_PPE_Flag23_IRQHandler - .type ACE_PPE_Flag23_IRQHandler, %function -ACE_PPE_Flag23_IRQHandler: - B . - -/*============================================================================== - * ACE_PPE_Flag24_IRQHandler - */ - .weak ACE_PPE_Flag24_IRQHandler - .type ACE_PPE_Flag24_IRQHandler, %function -ACE_PPE_Flag24_IRQHandler: - B . - -/*============================================================================== - * ACE_PPE_Flag25_IRQHandler - */ - .weak ACE_PPE_Flag25_IRQHandler - .type ACE_PPE_Flag25_IRQHandler, %function -ACE_PPE_Flag25_IRQHandler: - B . - -/*============================================================================== - * ACE_PPE_Flag26_IRQHandler - */ - .weak ACE_PPE_Flag26_IRQHandler - .type ACE_PPE_Flag26_IRQHandler, %function -ACE_PPE_Flag26_IRQHandler: - B . - -/*============================================================================== - * ACE_PPE_Flag27_IRQHandler - */ - .weak ACE_PPE_Flag27_IRQHandler - .type ACE_PPE_Flag27_IRQHandler, %function -ACE_PPE_Flag27_IRQHandler: - B . - -/*============================================================================== - * ACE_PPE_Flag28_IRQHandler - */ - .weak ACE_PPE_Flag28_IRQHandler - .type ACE_PPE_Flag28_IRQHandler, %function -ACE_PPE_Flag28_IRQHandler: - B . - -/*============================================================================== - * ACE_PPE_Flag29_IRQHandler - */ - .weak ACE_PPE_Flag29_IRQHandler - .type ACE_PPE_Flag29_IRQHandler, %function -ACE_PPE_Flag29_IRQHandler: - B . - -/*============================================================================== - * ACE_PPE_Flag30_IRQHandler - */ - .weak ACE_PPE_Flag30_IRQHandler - .type ACE_PPE_Flag30_IRQHandler, %function -ACE_PPE_Flag30_IRQHandler: - B . - -/*============================================================================== - * ACE_PPE_Flag31_IRQHandler - */ - .weak ACE_PPE_Flag31_IRQHandler - .type ACE_PPE_Flag31_IRQHandler, %function -ACE_PPE_Flag31_IRQHandler: - B . - -.end diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/CMSIS/system_a2fxxxm3.c b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/CMSIS/system_a2fxxxm3.c deleted file mode 100644 index 1b3798f3e..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/CMSIS/system_a2fxxxm3.c +++ /dev/null @@ -1,199 +0,0 @@ -/******************************************************************************* - * (c) Copyright 2009 Actel Corporation. All rights reserved. - * - * SmartFusion A2FxxxM3 CMSIS system initialization. - * - * SVN $Revision: 2069 $ - * SVN $Date: 2010-01-28 00:23:48 +0000 (Thu, 28 Jan 2010) $ - */ -#include "a2fxxxm3.h" -#include "mss_assert.h" - -/* System frequency (FCLK) coming out of reset is 25MHz. */ -#define RESET_SYSCLCK_FREQ 25000000uL - -/* - * SmartFusion Microcontroller Subsystem FLCK frequency. - * The value of SMARTFUSION_FCLK_FREQ is used to report the system's clock - * frequency in system's which either do not use the Actel System Boot or - * a version of the Actel System Boot older than 1.3.1. In eitehr of these cases - * SMARTFUSION_FCLK_FREQ should be defined in the projects settings to reflect - * the FCLK frequency selected in the Libero MSS configurator. - * Systems using the Actel System Boot version 1.3.1 or later do not require this - * define since the system's frequency is retrieved from eNVM spare pages where - * the MSS Configurator stored the frequency selected during hardware design/configuration. - */ -#ifdef SMARTFUSION_FCLK_FREQ -#define SMARTFUSION_FCLK_FREQ_DEFINED 1 -#else -#define SMARTFUSION_FCLK_FREQ_DEFINED 0 -#define SMARTFUSION_FCLK_FREQ RESET_SYSCLCK_FREQ -#endif - -/* Divider values for APB0, APB1 and ACE clocks. */ -#define RESET_PCLK0_DIV 4uL -#define RESET_PCLK1_DIV 4uL -#define RESET_ACE_DIV 4uL -#define RESET_FPGA_CLK_DIV 4uL - -/* System register clock control mask and shift for PCLK dividers. */ -#define PCLK_DIV_MASK 0x00000003uL -#define PCLK0_DIV_SHIFT 2uL -#define PCLK1_DIV_SHIFT 4uL -#define ACE_DIV_SHIFT 6uL - -/* System register MSS_CCC_DIV_CR mask and shift for GLB (FPGA fabric clock). */ -#define OBDIV_SHIFT 8uL -#define OBDIV_MASK 0x0000001FuL -#define OBDIVHALF_SHIFT 13uL -#define OBDIVHALF_MASK 0x00000001uL - -/* - * Actel system boot version defines used to extract the system clock from eNVM - * spare pages. - * These defines allow detecting the presence of Actel system boot in eNVM spare - * pages and the version of that system boot executable and associated - * configuration data. - */ -#define SYSBOOT_KEY_ADDR (uint32_t *)0x6008081C -#define SYSBOOT_KEY_VALUE 0x4C544341uL -#define SYSBOOT_VERSION_ADDR (uint32_t *)0x60080840 -#define SYSBOOT_1_3_FCLK_ADDR (uint32_t *)0x6008162C -#define SYSBOOT_2_x_FCLK_ADDR (uint32_t *)0x60081EAC - -/* - * The system boot version is stored in the least significant 24 bits of a word. - * The FCLK is stored in eNVM from version 1.3.1 of the system boot. We expect - * that the major version number of the system boot version will change if the - * system boot configuration data layout needs to change. - */ -#define SYSBOOT_VERSION_MASK 0x00FFFFFFuL -#define MIN_SYSBOOT_VERSION 0x00010301uL -#define SYSBOOT_VERSION_2_X 0x00020000uL -#define MAX_SYSBOOT_VERSION 0x00030000uL - -/* Standard CMSIS global variables. */ -uint32_t SystemFrequency = SMARTFUSION_FCLK_FREQ; /*!< System Clock Frequency (Core Clock) */ -uint32_t SystemCoreClock = SMARTFUSION_FCLK_FREQ; /*!< System Clock Frequency (Core Clock) */ - -/* SmartFusion specific clocks. */ -uint32_t g_FrequencyPCLK0 = (SMARTFUSION_FCLK_FREQ / RESET_PCLK0_DIV); /*!< Clock frequency of APB bus 0. */ -uint32_t g_FrequencyPCLK1 = (SMARTFUSION_FCLK_FREQ / RESET_PCLK1_DIV); /*!< Clock frequency of APB bus 1. */ -uint32_t g_FrequencyACE = (SMARTFUSION_FCLK_FREQ / RESET_ACE_DIV); /*!< Clock frequency of Analog Compute Engine. */ -uint32_t g_FrequencyFPGA = (SMARTFUSION_FCLK_FREQ / RESET_FPGA_CLK_DIV); /*!< Clock frequecny of FPGA fabric */ - -/* Local functions */ -static uint32_t GetSystemClock( void ); - -/***************************************************************************//** - * See system_a2fm3fxxx.h for details. - */ -void SystemInit(void) -{ -} - -/***************************************************************************//** - * - */ -void SystemCoreClockUpdate (void) -{ - uint32_t PclkDiv0; - uint32_t PclkDiv1; - uint32_t AceDiv; - uint32_t FabDiv; - - const uint32_t pclk_div_lut[4] = { 1uL, 2uL, 4uL, 1uL }; - - /* Read PCLK dividers from system registers. Multiply the value read from - * system register by two to get actual divider value. */ - PclkDiv0 = pclk_div_lut[((SYSREG->MSS_CLK_CR >> PCLK0_DIV_SHIFT) & PCLK_DIV_MASK)]; - PclkDiv1 = pclk_div_lut[((SYSREG->MSS_CLK_CR >> PCLK1_DIV_SHIFT) & PCLK_DIV_MASK)]; - AceDiv = pclk_div_lut[((SYSREG->MSS_CLK_CR >> ACE_DIV_SHIFT) & PCLK_DIV_MASK)]; - { - /* Compute the FPGA fabric frequency divider. */ - uint32_t obdiv; - uint32_t obdivhalf; - - obdiv = (SYSREG->MSS_CCC_DIV_CR >> OBDIV_SHIFT) & OBDIV_MASK; - obdivhalf = (SYSREG->MSS_CCC_DIV_CR >> OBDIVHALF_SHIFT) & OBDIVHALF_MASK; - FabDiv = obdiv + 1uL; - if ( obdivhalf != 0uL ) - { - FabDiv = FabDiv * 2uL; - } - } - - /* Retrieve FCLK from eNVM spare pages if Actel system boot programmed as part of the system. */ - - /* Read system clock from eNVM spare pages. */ - SystemCoreClock = GetSystemClock(); - g_FrequencyPCLK0 = SystemCoreClock / PclkDiv0; - g_FrequencyPCLK1 = SystemCoreClock / PclkDiv1; - g_FrequencyACE = SystemCoreClock / AceDiv; - g_FrequencyFPGA = SystemCoreClock / FabDiv; - - /* Keep SystemFrequency as well as SystemCoreClock for legacy reasons. */ - SystemFrequency = SystemCoreClock; -} - -/***************************************************************************//** - * Retrieve the system clock frequency from eNVM spare page if available. - * Returns the frequency defined through SMARTFUSION_FCLK_FREQ if FCLK cannot be - * retrieved from eNVM spare pages. - * The FCLK frequency value selected in the MSS Configurator software tool is - * stored in eNVM spare pages as part of the Actel system boot configuration data. - */ -uint32_t GetSystemClock( void ) -{ - uint32_t fclk = 0uL; - - uint32_t * p_sysboot_key = SYSBOOT_KEY_ADDR; - - if ( SYSBOOT_KEY_VALUE == *p_sysboot_key ) - { - /* Actel system boot programmed, check if it has the FCLK value stored. */ - uint32_t *p_sysboot_version = SYSBOOT_VERSION_ADDR; - uint32_t sysboot_version = *p_sysboot_version; - - sysboot_version &= SYSBOOT_VERSION_MASK; - - if ( sysboot_version >= MIN_SYSBOOT_VERSION ) - { - /* Handle change of eNVM location of FCLK between 1.3.x and 2.x.x versions of the system boot. */ - if ( sysboot_version < SYSBOOT_VERSION_2_X ) - { - /* Read FCLK value from MSS configurator generated configuration - * data stored in eNVM spare pages as part of system boot version 1.3.x - * configuration tables. */ - uint32_t *p_fclk = SYSBOOT_1_3_FCLK_ADDR; - fclk = *p_fclk; - } - else if ( sysboot_version < MAX_SYSBOOT_VERSION ) - { - /* Read FCLK value from MSS configurator generated configuration - * data stored in eNVM spare pages as part of system boot version 2.x.x - * configuration tables. */ - uint32_t *p_fclk = SYSBOOT_2_x_FCLK_ADDR; - fclk = *p_fclk; - } - else - { - fclk = 0uL; - } - } - } - - if ( 0uL == fclk ) - { - /* - * Could not retrieve FCLK from system boot configuration data. Fall back - * to using SMARTFUSION_FCLK_FREQ which must then be defined as part of - * project settings. - */ - ASSERT( SMARTFUSION_FCLK_FREQ_DEFINED ); - fclk = SMARTFUSION_FCLK_FREQ; - } - - return fclk; -} - diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/CMSIS/system_a2fxxxm3.h b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/CMSIS/system_a2fxxxm3.h deleted file mode 100644 index 6ae0ad5b7..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/CMSIS/system_a2fxxxm3.h +++ /dev/null @@ -1,49 +0,0 @@ -/******************************************************************************* - * (c) Copyright 2009 Actel Corporation. All rights reserved. - * - * SmartFusion A2FxxxM3 CMSIS system initialization. - * - * SVN $Revision: 2064 $ - * SVN $Date: 2010-01-27 15:05:58 +0000 (Wed, 27 Jan 2010) $ - */ - -#ifndef __SYSTEM_A2FM3FXX_H__ -#define __SYSTEM_A2FM3FXX_H__ - -#ifdef __cplusplus -extern "C" { -#endif - -/* Standard CMSIS global variables. */ -extern uint32_t SystemFrequency; /*!< System Clock Frequency (Core Clock) */ -extern uint32_t SystemCoreClock; /*!< System Clock Frequency (Core Clock) */ - -/* SmartFusion specific clocks. */ -extern uint32_t g_FrequencyPCLK0; /*!< Clock frequency of APB bus 0. */ -extern uint32_t g_FrequencyPCLK1; /*!< Clock frequency of APB bus 1. */ -extern uint32_t g_FrequencyACE; /*!< Clock frequency of Analog Compute Engine. */ -extern uint32_t g_FrequencyFPGA; /*!< Clock frequecny of FPGA fabric */ - -/***************************************************************************//** - * The SystemInit() is a standard CMSIS function called during system startup. - * It is meant to perform low level hardware setup such as configuring PLLs. In - * the case of SmartFusion these hardware setup operations are performed by the - * chip boot which executed before the application started. Therefore this - * function does not need to perform any hardware setup. - */ -void SystemInit(void); - -/***************************************************************************//** - * The SystemCoreClockUpdate() is a standard CMSIS function which can be called - * by the application in order to ensure that the SystemCoreClock global - * variable contains the up to date Cortex-M3 core frequency. Calling this - * function also updates the global variables containing the frequencies of the - * APB busses connecting the peripherals and the ACE frequency. - */ -void SystemCoreClockUpdate(void); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/I2C/i2c.c b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/I2C/i2c.c deleted file mode 100644 index 595e71844..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/I2C/i2c.c +++ /dev/null @@ -1,835 +0,0 @@ -/******************************************************************************* - * (c) Copyright 2007-2008 Actel Corporation. All rights reserved. - * - * SmartFusion microcontroller subsystem I2C bare metal software driver - * implementation. - * - * SVN $Revision: 2152 $ - * SVN $Date: 2010-02-11 14:44:11 +0000 (Thu, 11 Feb 2010) $ - */ - - -#include "i2c.h" -#include "../../CMSIS/mss_assert.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/*------------------------------------------------------------------------------ - * I2C transaction direction. - */ -#define WRITE_DIR 0 -#define READ_DIR 1 - -/* -- TRANSACTIONS TYPES -- */ -#define NO_TRANSACTION 0 -#define MASTER_WRITE_TRANSACTION 1 -#define MASTER_READ_TRANSACTION 2 -#define MASTER_RANDOM_READ_TRANSACTION 3 -#define WRITE_SLAVE_TRANSACTION 4 -#define READ_SLAVE_TRANSACTION 5 -#define RANDOM_READ_SLAVE_TRANSACTION 6 - - -/* -- SMBUS H/W STATES -- */ -/* -- MASTER STATES -- */ -#define ST_START 0x08 /* start condition sent */ -#define ST_RESTART 0x10 /* repeated start */ -#define ST_SLAW_ACK 0x18 /* SLA+W sent, ack received */ -#define ST_SLAW_NACK 0x20 /* SLA+W sent, nack received */ -#define ST_TX_DATA_ACK 0x28 /* Data sent, ACK'ed */ -#define ST_TX_DATA_NACK 0x30 /* Data sent, NACK'ed */ -#define ST_LOST_ARB 0x38 /* Master lost arbitration */ -#define ST_SLAR_ACK 0x40 /* SLA+R sent, ACK'ed */ -#define ST_SLAR_NACK 0x48 /* SLA+R sent, NACK'ed */ -#define ST_RX_DATA_ACK 0x50 /* Data received, ACK sent */ -#define ST_RX_DATA_NACK 0x58 /* Data received, NACK sent */ - -/* -- SLAVE STATES -- */ -#define ST_SLAVE_SLAW 0x60 /* SLA+W received */ -#define ST_SLAVE_SLAR_ACK 0xA8 /* SLA+R received, ACK returned */ -#define ST_SLV_LA 0x68 /* Slave lost arbitration */ -#define ST_GCA 0x70 /* GCA received */ -#define ST_GCA_LA 0x78 /* GCA lost arbitration */ -#define ST_RDATA 0x80 /* Data received */ -#define ST_SLA_NACK 0x88 /* Slave addressed, NACK returned */ -#define ST_GCA_ACK 0x90 /* Previously addresses with GCA, data ACKed */ -#define ST_GCA_NACK 0x98 /* GCA addressed, NACK returned */ -#define ST_RSTOP 0xA0 /* Stop received */ -#define ST_REPEAT 0xA0 /* Repeated start received */ -#define ST_SLAR_ACKS 0xA8 /* Slave read received, ACKed */ -#define ST_SLARW_LA 0xB0 /* Arbitration lost */ -#define ST_RACK 0xB8 /* Byte sent, ACK received */ -#define ST_SLAVE_RNACK 0xC0 /* Byte sent, NACK received */ -#define ST_FINAL 0xC8 /* Final byte sent, ACK received */ -#define ST_BERR 0x00 /* Error on the bus */ -#define ST_SLV_RST 0xD8 /* Slave reset state */ - -/*------------------------------------------------------------------------------ - * - */ -static uint32_t disable_interrupts( void ); -static void restore_interrupts( uint32_t primask ); -static void mss_i2c_isr( mss_i2c_instance_t * this_i2c ); - -/*------------------------------------------------------------------------------ - * - *------------------------------------------------------------------------------ - * - */ -mss_i2c_instance_t g_mss_i2c0; -mss_i2c_instance_t g_mss_i2c1; - -/*------------------------------------------------------------------------------ - * MSS_I2C_init() - * See "mss_i2c.h" for details of how to use this function. - */ -void MSS_I2C_init -( - mss_i2c_instance_t * this_i2c, - uint8_t ser_address, - mss_i2c_clock_divider_t ser_clock_speed -) -{ - uint_fast16_t clock_speed = ser_clock_speed; - - ASSERT( (this_i2c == &g_mss_i2c0) || (this_i2c == &g_mss_i2c1) ); - - if ( this_i2c == &g_mss_i2c0 ) - { - this_i2c->irqn = I2C0_IRQn; - this_i2c->hw_reg = I2C0; - this_i2c->hw_reg_bit = I2C0_BITBAND; - - /* reset I2C0 */ - SYSREG->SOFT_RST_CR |= SYSREG_I2C0_SOFTRESET_MASK; - /* Clear any previously pended I2C0 interrupt */ - NVIC_ClearPendingIRQ( I2C0_IRQn ); - /* Take I2C0 out of reset. */ - SYSREG->SOFT_RST_CR &= ~SYSREG_I2C0_SOFTRESET_MASK; - } - else - { - this_i2c->irqn = I2C1_IRQn; - this_i2c->hw_reg = I2C1; - this_i2c->hw_reg_bit = I2C1_BITBAND; - - /* reset I2C1 */ - SYSREG->SOFT_RST_CR |= SYSREG_I2C1_SOFTRESET_MASK; - /* Clear any previously pended I2C1 interrupt */ - NVIC_ClearPendingIRQ( I2C1_IRQn ); - /* Take I2C1 out of reset. */ - SYSREG->SOFT_RST_CR &= ~SYSREG_I2C1_SOFTRESET_MASK; - } - - this_i2c->transaction = NO_TRANSACTION; - - this_i2c->ser_address = ser_address; - - this_i2c->tx_buffer = 0; - this_i2c->tx_size = 0; - this_i2c->tx_idx = 0; - - this_i2c->rx_buffer = 0; - this_i2c->rx_size = 0; - this_i2c->rx_idx = 0; - - this_i2c->status = MSS_I2C_SUCCESS; - - this_i2c->random_read_addr = 0; - - this_i2c->slave_write_handler = 0; - this_i2c->slave_mem_offset_length = 0; - - this_i2c->hw_reg_bit->CTRL_ENS1 = 0x01; /* set enable bit */ - this_i2c->hw_reg_bit->CTRL_CR2 = (clock_speed >> 2) & 0x01; - this_i2c->hw_reg_bit->CTRL_CR1 = (clock_speed >> 1) & 0x01; - this_i2c->hw_reg_bit->CTRL_CR0 = clock_speed & 0x01; - this_i2c->hw_reg->ADDR = this_i2c->ser_address; - - /* The interrupt can cause a context switch, so ensure its priority is - between configKERNEL_INTERRUPT_PRIORITY and configMAX_SYSCALL_INTERRUPT_PRIORITY. */ - NVIC_SetPriority( this_i2c->irqn, configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY ); - - vSemaphoreCreateBinary( ( this_i2c->xI2CCompleteSemaphore ) ); - xSemaphoreTake( ( this_i2c->xI2CCompleteSemaphore ), 0 ); - configASSERT( ( this_i2c->xI2CCompleteSemaphore ) ); -} - -/*------------------------------------------------------------------------------ - * MSS_I2C_set_slave_mem_offset_length() - * See "mss_i2c.h" for details of how to use this function. - */ -void MSS_I2C_set_slave_mem_offset_length -( - mss_i2c_instance_t * this_i2c, - uint8_t offset_length -) -{ - ASSERT( (this_i2c == &g_mss_i2c0) || (this_i2c == &g_mss_i2c1) ); - - this_i2c->slave_mem_offset_length = offset_length; -} - -/*------------------------------------------------------------------------------ - * MSS_I2C_register_write_handler() - * See "mss_i2c.h" for details of how to use this function. - */ -void MSS_I2C_register_write_handler -( - mss_i2c_instance_t * this_i2c, - mss_i2c_slave_wr_handler_t handler -) -{ - ASSERT( (this_i2c == &g_mss_i2c0) || (this_i2c == &g_mss_i2c1) ); - - this_i2c->slave_write_handler = handler; -} - -/*------------------------------------------------------------------------------ - * MSS_I2C_write() - * See "mss_i2c.h" for details of how to use this function. - */ -void MSS_I2C_write -( - mss_i2c_instance_t * this_i2c, - uint8_t serial_addr, - const uint8_t * write_buffer, - uint16_t write_size, - uint8_t options -) -{ - volatile uint8_t stat_ctrl; - uint8_t serial_interrupt; - - uint32_t primask; - - ASSERT( (this_i2c == &g_mss_i2c0) || (this_i2c == &g_mss_i2c1) ); - configASSERT( ( this_i2c->xI2CCompleteSemaphore ) ); - - primask = disable_interrupts(); - - this_i2c->transaction = MASTER_WRITE_TRANSACTION; - - this_i2c->target_addr = serial_addr; - this_i2c->dir = WRITE_DIR; - this_i2c->tx_buffer = write_buffer; - this_i2c->tx_size = write_size; - this_i2c->tx_idx = 0; - - this_i2c->status = MSS_I2C_IN_PROGRESS; - this_i2c->options = options; - - /* Clear interrupts if required (depends on repeated starts).*/ - serial_interrupt = this_i2c->hw_reg_bit->CTRL_SI; - this_i2c->hw_reg_bit->CTRL_STA = 0x01; - - if ( serial_interrupt != 0 ) - { - this_i2c->hw_reg_bit->CTRL_SI = 0x00; - NVIC_ClearPendingIRQ( this_i2c->irqn ); - } - - stat_ctrl = this_i2c->hw_reg->STATUS; - - NVIC_EnableIRQ( this_i2c->irqn ); - - restore_interrupts( primask ); -} - -/*------------------------------------------------------------------------------ - * MSS_I2C_read() - * See "mss_i2c.h" for details of how to use this function. - */ -void MSS_I2C_read -( - mss_i2c_instance_t * this_i2c, - uint8_t serial_addr, - uint8_t * read_buffer, - uint16_t read_size, - uint8_t options -) -{ - uint32_t primask; - - ASSERT( (this_i2c == &g_mss_i2c0) || (this_i2c == &g_mss_i2c1) ); - - if ( read_size > 0 ) - { - volatile uint8_t stat_ctrl; - uint8_t serial_interrupt; - - primask = disable_interrupts(); - - this_i2c->transaction = MASTER_READ_TRANSACTION; - - this_i2c->target_addr = serial_addr; - this_i2c->dir = READ_DIR; - this_i2c->rx_buffer = read_buffer; - this_i2c->rx_size = read_size; - this_i2c->rx_idx = 0; - - this_i2c->status = MSS_I2C_IN_PROGRESS; - - this_i2c->options = options; - - /* Clear interrupts if required (depends on repeated starts).*/ - serial_interrupt = this_i2c->hw_reg_bit->CTRL_SI; - this_i2c->hw_reg_bit->CTRL_STA = 0x01; - - if ( serial_interrupt != 0 ) - { - this_i2c->hw_reg_bit->CTRL_SI = 0x00; - NVIC_ClearPendingIRQ( this_i2c->irqn ); - } - - stat_ctrl = this_i2c->hw_reg->STATUS; - - NVIC_EnableIRQ( this_i2c->irqn ); - - restore_interrupts( primask ); - } -} - -/*------------------------------------------------------------------------------ - * MSS_I2C_write_read() - * See "mss_i2c.h" for details of how to use this function. - */ -void MSS_I2C_write_read -( - mss_i2c_instance_t * this_i2c, - uint8_t serial_addr, - const uint8_t * addr_offset, - uint16_t offset_size, - uint8_t * read_buffer, - uint16_t read_size, - uint8_t options -) -{ - volatile uint8_t stat_ctrl; - uint8_t serial_interrupt; - uint32_t primask; - - ASSERT( (this_i2c == &g_mss_i2c0) || (this_i2c == &g_mss_i2c1) ); - - primask = disable_interrupts(); - - this_i2c->transaction = MASTER_RANDOM_READ_TRANSACTION; - this_i2c->target_addr = serial_addr; - this_i2c->dir = WRITE_DIR; - this_i2c->tx_buffer = addr_offset; - this_i2c->tx_size = offset_size; - this_i2c->tx_idx = 0; - - this_i2c->rx_buffer = read_buffer; - this_i2c->rx_size = read_size; - this_i2c->rx_idx = 0; - - this_i2c->status = MSS_I2C_IN_PROGRESS; - this_i2c->options = options; - - /* Clear interrupts if required (depends on repeated starts).*/ - serial_interrupt = this_i2c->hw_reg_bit->CTRL_SI; - this_i2c->hw_reg_bit->CTRL_STA = 0x01; - - if ( serial_interrupt != 0 ) - { - this_i2c->hw_reg_bit->CTRL_SI = 0x00; - NVIC_ClearPendingIRQ( this_i2c->irqn ); - } - - stat_ctrl = this_i2c->hw_reg->STATUS; - - NVIC_EnableIRQ( this_i2c->irqn ); - - restore_interrupts( primask ); -} - -/*------------------------------------------------------------------------------ - * MSS_I2C_set_slave_rx_buffer() - * See "mss_i2c.h" for details of how to use this function. - */ -void MSS_I2C_set_slave_rx_buffer -( - mss_i2c_instance_t * this_i2c, - uint8_t * rx_buffer, - uint16_t rx_size -) -{ - uint32_t primask; - - ASSERT( (this_i2c == &g_mss_i2c0) || (this_i2c == &g_mss_i2c1) ); - - primask = disable_interrupts(); - - this_i2c->rx_buffer = rx_buffer; - this_i2c->rx_size = rx_size; - this_i2c->rx_idx = 0; - - restore_interrupts( primask ); -} - - -/*------------------------------------------------------------------------------ - * MSS_I2C_get_status() - * See "mss_i2c.h" for details of how to use this function. - */ -mss_i2c_status_t MSS_I2C_get_status -( - mss_i2c_instance_t * this_i2c -) -{ - ASSERT( (this_i2c == &g_mss_i2c0) || (this_i2c == &g_mss_i2c1) ); - - return this_i2c->status; -} - -/*------------------------------------------------------------------------------ - * MSS_I2C_set_slave_tx_buffer() - * See "mss_i2c.h" for details of how to use this function. - */ -void MSS_I2C_set_slave_tx_buffer -( - mss_i2c_instance_t * this_i2c, - uint8_t * tx_buffer, - uint16_t tx_size -) -{ - uint32_t primask; - - ASSERT( (this_i2c == &g_mss_i2c0) || (this_i2c == &g_mss_i2c1) ); - - primask = disable_interrupts(); - - this_i2c->tx_buffer = tx_buffer; - this_i2c->tx_size = tx_size; - this_i2c->tx_idx = 0; - - restore_interrupts( primask ); - - /* Set the assert acknowledge bit. */ - this_i2c->hw_reg_bit->CTRL_AA = 0x01; -} - -/*------------------------------------------------------------------------------ - * MSS_I2C_enable_slave_rx() - * See "mss_i2c.h" for details of how to use this function. - */ -void MSS_I2C_enable_slave_rx -( - mss_i2c_instance_t * this_i2c -) -{ - ASSERT( (this_i2c == &g_mss_i2c0) || (this_i2c == &g_mss_i2c1) ); - - /* Set the assert acknowledge bit. */ - this_i2c->hw_reg_bit->CTRL_AA = 0x01; - /* accept GC addressing. */ - this_i2c->hw_reg_bit->ADDR_GC = 0x01; - - NVIC_EnableIRQ( this_i2c->irqn ); -} - -/*------------------------------------------------------------------------------ - * MSS_I2C_wait_complete() - * See "mss_i2c.h" for details of how to use this function. - */ -mss_i2c_status_t MSS_I2C_wait_complete -( - mss_i2c_instance_t * this_i2c -) -{ - ASSERT( (this_i2c == &g_mss_i2c0) || (this_i2c == &g_mss_i2c1) ); - -#ifdef USE_OLD_I2C_POLLING_CODE - while ( this_i2c->status == MSS_I2C_IN_PROGRESS ) - { - /* Wait for transaction to compltete.*/ - ; - } -#else - configASSERT( ( this_i2c->xI2CCompleteSemaphore ) ); - if( xTaskGetSchedulerState() == taskSCHEDULER_NOT_STARTED ) - { - while ( this_i2c->status == MSS_I2C_IN_PROGRESS ) - { - /* Wait for transaction to compltete.*/ - ; - } - } - else - { - xSemaphoreTake( this_i2c->xI2CCompleteSemaphore, portMAX_DELAY ); - } -#endif - - return this_i2c->status; -} - -/*------------------------------------------------------------------------------ - * MSS I2C interrupt service routine. - *------------------------------------------------------------------------------ - * Parameters: - * - * mss_i2c_instance_t * this_i2c: - * Pointer to the mss_i2c_instance_t data structure holding all data related to - * the MSS I2C instance that generated the interrupt. - */ -static void mss_i2c_isr -( - mss_i2c_instance_t * this_i2c - ) -{ - volatile uint8_t status; - uint8_t data; - uint8_t hold_bus; - uint8_t clear_irq = 1; - long lHigherPriorityTaskWoken = pdFALSE; - configASSERT( ( this_i2c->xI2CCompleteSemaphore ) ); - - ASSERT( (this_i2c == &g_mss_i2c0) || (this_i2c == &g_mss_i2c1) ); - - status = this_i2c->hw_reg->STATUS; - - switch( status ) - { - /************** MASTER TRANSMITTER / RECEIVER *******************/ - - case ST_START: /* start has been xmt'd */ - case ST_RESTART: /* repeated start has been xmt'd */ - this_i2c->hw_reg_bit->CTRL_STA = 0x0; - this_i2c->hw_reg->DATA = this_i2c->target_addr; - this_i2c->hw_reg_bit->DATA_DIR = this_i2c->dir; - - this_i2c->tx_idx = 0; - this_i2c->rx_idx = 0; - break; - - case ST_LOST_ARB: - /* Set start bit. Let's keep trying! Don't give up! */ - this_i2c->hw_reg_bit->CTRL_STA = 0x01; - break; - - /******************* MASTER TRANSMITTER *************************/ - case ST_SLAW_ACK: - /* call address has been xmt'd with ACK, time to send data byte and increment index. */ - if ( this_i2c->tx_idx < this_i2c->tx_size ) - { - /* load data byte */ - this_i2c->hw_reg->DATA = this_i2c->tx_buffer[this_i2c->tx_idx++]; - } - else - { - NVIC_DisableIRQ( this_i2c->irqn ); - } - break; - - case ST_SLAW_NACK: -#if 0 - /* SLA+W has been transmitted; not ACK has been received - let's stop. */ - this_i2c->hw_reg_bit->CTRL_STO = 0x01; - this_i2c->status = MSS_I2C_FAILED; -#endif - /* call address has been xmt'd with ACK, time to send data byte and increment index. */ - if ( this_i2c->tx_idx < this_i2c->tx_size ) - { - /* load data byte */ - this_i2c->hw_reg->DATA = this_i2c->tx_buffer[this_i2c->tx_idx++]; - } - else - { - NVIC_DisableIRQ( this_i2c->irqn ); - } - break; - - case ST_TX_DATA_ACK: - /* data byte has been xmt'd with ACK, time to send stop bit or repeated start. */ - if (this_i2c->tx_idx < this_i2c->tx_size) - { - this_i2c->hw_reg->DATA = this_i2c->tx_buffer[this_i2c->tx_idx++]; - } - else if ( this_i2c->transaction == MASTER_RANDOM_READ_TRANSACTION ) - { - /* We are finished sending the address offset part of a random read transaction. - * It is is time to send a restart in order to change direction. */ - this_i2c->dir = READ_DIR; - this_i2c->hw_reg_bit->CTRL_STA = 0x01; - } - else /* done sending. let's stop */ - { - hold_bus = this_i2c->options & MSS_I2C_HOLD_BUS; - if ( hold_bus == 0 ) - { - this_i2c->hw_reg_bit->CTRL_STO = 0x01; /*xmt stop condition */ - } - else - { - NVIC_DisableIRQ( this_i2c->irqn ); - clear_irq = 0; - } - this_i2c->status = MSS_I2C_SUCCESS; - xSemaphoreGiveFromISR( this_i2c->xI2CCompleteSemaphore, &lHigherPriorityTaskWoken ); - } - break; - - case ST_TX_DATA_NACK: -#if 0 - /* data byte SENT, ACK to be received - * In fact, this means we've received a NACK (This may not be - * obvious, but if we've rec'd an ACK then we would be in state - * 0x28!) hence, let's send a stop bit - */ - this_i2c->hw_reg_bit->CTRL_STO = 0x01; - this_i2c->status = MSS_I2C_FAILED; -#endif - /* data byte has been xmt'd with ACK, time to send stop bit or repeated start. */ - if (this_i2c->tx_idx < this_i2c->tx_size) - { - this_i2c->hw_reg->DATA = this_i2c->tx_buffer[this_i2c->tx_idx++]; - } - else if ( this_i2c->transaction == MASTER_RANDOM_READ_TRANSACTION ) - { - /* We are finished sending the address offset part of a random read transaction. - * It is is time to send a restart in order to change direction. */ - this_i2c->dir = READ_DIR; - this_i2c->hw_reg_bit->CTRL_STA = 0x01; - } - else /* done sending. let's stop */ - { - hold_bus = this_i2c->options & MSS_I2C_HOLD_BUS; - if ( hold_bus == 0 ) - { - this_i2c->hw_reg_bit->CTRL_STO = 0x01; /*xmt stop condition */ - } - else - { - NVIC_DisableIRQ( this_i2c->irqn ); - clear_irq = 0; - } - this_i2c->status = MSS_I2C_SUCCESS; - xSemaphoreGiveFromISR( this_i2c->xI2CCompleteSemaphore, &lHigherPriorityTaskWoken ); - } - break; - - /********************* MASTER (or slave?) RECEIVER *************************/ - - /* STATUS codes 08H, 10H, 38H are all covered in MTX mode */ - case ST_SLAR_ACK: /* SLA+R tx'ed. */ - /* Let's make sure we ACK the first data byte received (set AA bit in CTRL) unless - * the next byte is the last byte of the read transaction. - */ - if( this_i2c->rx_size > 1 ) - { - this_i2c->hw_reg_bit->CTRL_AA = 0x01; - } - else - { - this_i2c->hw_reg_bit->CTRL_AA = 0x00; - } - break; - - case ST_SLAR_NACK: /* SLA+R tx'ed; let's release the bus (send a stop condition) */ - this_i2c->hw_reg_bit->CTRL_STO = 0x01; - this_i2c->status = MSS_I2C_FAILED; - xSemaphoreGiveFromISR( this_i2c->xI2CCompleteSemaphore, &lHigherPriorityTaskWoken ); - break; - - case ST_RX_DATA_ACK: /* Data byte received, ACK returned */ - /* First, get the data */ - this_i2c->rx_buffer[this_i2c->rx_idx++] = this_i2c->hw_reg->DATA; - - if( this_i2c->rx_idx >= this_i2c->rx_size - 1) - { - /* If we're at the second last byte, let's set AA to 0 so - * we return a NACK at the last byte. */ - this_i2c->hw_reg_bit->CTRL_AA = 0x00; - } - break; - - case ST_RX_DATA_NACK: /* Data byte received, NACK returned */ - /* Get the data, then send a stop condition */ - this_i2c->rx_buffer[this_i2c->rx_idx++] = this_i2c->hw_reg->DATA; - - hold_bus = this_i2c->options & MSS_I2C_HOLD_BUS; - if ( hold_bus == 0 ) - { - this_i2c->hw_reg_bit->CTRL_STO = 0x01; /*xmt stop condition */ - } - else - { - NVIC_DisableIRQ( this_i2c->irqn ); - clear_irq = 0; - } - - this_i2c->status = MSS_I2C_SUCCESS; -// xSemaphoreGiveFromISR( this_i2c->xI2CCompleteSemaphore, &lHigherPriorityTaskWoken ); - break; - - /******************** SLAVE RECEIVER **************************/ - case ST_GCA_NACK: /* NACK after, GCA addressing */ - case ST_SLA_NACK: /* Get Data, but also re-enable AA (assert ack) bit for future transmissions */ - if ( this_i2c->rx_buffer != 0 ) - { - this_i2c->rx_buffer[this_i2c->rx_idx] = this_i2c->hw_reg->DATA; - } - this_i2c->hw_reg_bit->CTRL_AA = 0x01; - break; - - case ST_SLAVE_SLAW: /* SLA+W received, ACK returned */ - this_i2c->transaction = WRITE_SLAVE_TRANSACTION; - this_i2c->rx_idx = 0; - this_i2c->random_read_addr = 0; -#ifndef INCLUDE_SLA_IN_RX_PAYLOAD - /* Only break from this case if the slave address must NOT be included at the - * beginning of the received write data. */ - break; -#endif - case ST_GCA_ACK: /* DATA received; ACK sent after GCA */ - case ST_RDATA: /* DATA received; must clear DATA register */ - if (this_i2c->rx_idx >= this_i2c->rx_size - 2) - { - this_i2c->hw_reg_bit->CTRL_AA = 0x00; /* send a NACK when done (next reception) */ - } - data = this_i2c->hw_reg->DATA; - this_i2c->rx_buffer[this_i2c->rx_idx++] = data; - this_i2c->random_read_addr = (this_i2c->random_read_addr << 8) + data; - - break; - - case ST_RSTOP: - /* STOP or repeated START occured. */ - /* We cannot be sure if the transaction has actually completed as - * this hardware state reports that either a STOP or repeated START - * condition has occured. We assume that this is a repeated START - * if the transaction was a write from the master to this point.*/ - if ( this_i2c->transaction == WRITE_SLAVE_TRANSACTION ) - { - if ( this_i2c->rx_idx == this_i2c->slave_mem_offset_length ) - { - this_i2c->transaction = RANDOM_READ_SLAVE_TRANSACTION; - this_i2c->tx_idx = this_i2c->random_read_addr; - } - else - { - /* Call the slave's write transaction handler if it exists. */ - if ( this_i2c->slave_write_handler != 0 ) - { - mss_i2c_slave_handler_ret_t h_ret; - h_ret = this_i2c->slave_write_handler( this_i2c->rx_buffer, (uint16_t)this_i2c->rx_idx ); - if ( MSS_I2C_REENABLE_SLAVE_RX == h_ret ) - { - this_i2c->hw_reg_bit->CTRL_AA = 0x01; - } - else - { - this_i2c->hw_reg_bit->CTRL_AA = 0x00; - } - } - } - } - /* Mark any previous master write transaction as complete. */ - this_i2c->status = MSS_I2C_SUCCESS; -// xSemaphoreGiveFromISR( this_i2c->xI2CCompleteSemaphore, &lHigherPriorityTaskWoken ); - break; - - case ST_SLV_RST: /* SMBUS ONLY: timeout state. must clear interrupt */ - case ST_SLV_LA: /* Arbitr. lost (SLA rec'd) */ - case ST_GCA: /* General call address received, ACK returned */ - case ST_GCA_LA: /* Arbitr. lost (GCA rec'd) */ - /* do nothing */ - break; - - /****************** SLAVE TRANSMITTER **************************/ - case ST_SLAVE_SLAR_ACK: /* SLA+R received, ACK returned */ - case ST_SLARW_LA: /* Arbitration lost, and: */ - case ST_RACK: /* Data tx'ed, ACK received */ - if ( status == ST_SLAVE_SLAR_ACK ) - { - this_i2c->transaction = READ_SLAVE_TRANSACTION; - this_i2c->random_read_addr = 0; - } - /* Load the data, and determine if it is the last one */ - this_i2c->hw_reg->DATA = this_i2c->tx_buffer[this_i2c->tx_idx++]; - if (this_i2c->tx_idx >= this_i2c->tx_size - 1) /* last byte? */ - { - this_i2c->hw_reg_bit->CTRL_AA = 0x00; - /* Next read transaction will result in slave's transmit buffer - * being sent from the first byte. */ - this_i2c->tx_idx = 0; - } - break; - - case ST_SLAVE_RNACK: /* Data byte has been transmitted; not-ACK has been received. */ - /* We assume that the transaction will be stopped by the master. - * Reset tx_idx so that a subsequent read will result in the slave's - * transmit buffer being sent from the first byte. */ - this_i2c->tx_idx = 0; - break; - - case ST_FINAL: /* Last Data byte tx'ed, ACK recieved */ - default: - /* do nothing */ - break; - } - - if ( clear_irq ) - { - /* clear interrupt. */ - this_i2c->hw_reg_bit->CTRL_SI = 0x00; - } - - /* Read the status register to ensure the last I2C registers write took place - * in a system built around a bus making use of posted writes. */ - status = this_i2c->hw_reg->STATUS; - - portEND_SWITCHING_ISR( lHigherPriorityTaskWoken ); -} - -/*------------------------------------------------------------------------------ - * - */ -uint32_t disable_interrupts( void ) -{ - uint32_t primask; - primask = __get_PRIMASK(); - return primask; -} - -/*------------------------------------------------------------------------------ - * - */ -void restore_interrupts( uint32_t primask ) -{ - __set_PRIMASK( primask ); -} - -/*------------------------------------------------------------------------------ - * - */ -#if defined(__GNUC__) -__attribute__((__interrupt__)) void I2C0_IRQHandler( void ) -#else -void I2C0_IRQHandler( void ) -#endif -{ - mss_i2c_isr( &g_mss_i2c0 ); - NVIC_ClearPendingIRQ( I2C0_IRQn ); -} - -/*------------------------------------------------------------------------------ - * - */ -#if defined(__GNUC__) -__attribute__((__interrupt__)) void I2C1_IRQHandler( void ) -#else -void I2C1_IRQHandler( void ) -#endif -{ - mss_i2c_isr( &g_mss_i2c1 ); - NVIC_ClearPendingIRQ( I2C1_IRQn ); -} - -#ifdef __cplusplus -} -#endif diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/I2C/i2c.h b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/I2C/i2c.h deleted file mode 100644 index 6c80cf343..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/I2C/i2c.h +++ /dev/null @@ -1,783 +0,0 @@ -/******************************************************************************* - * (c) Copyright 2007-2008 Actel Corporation. All rights reserved. - * - * SmartFusion microcontroller subsystem I2C bare metal software driver public - * API. - * - * SVN $Revision: 2150 $ - * SVN $Date: 2010-02-11 14:39:24 +0000 (Thu, 11 Feb 2010) $ - */ -/*=========================================================================*//** - @mainpage SmartFusion MSS I2C Bare Metal Driver. - - @section intro_sec Introduction - The SmartFusion™ microcontroller subsystem (MSS) includes two I2C peripherals - for serial communication. This driver provides a set of functions for - controlling the MSS I2Cs as part of a bare metal system where no operating - system is available. These drivers can be adapted for use as part of an - operating system, but the implementation of the adaptation layer between this - driver and the operating system's driver model is outside the scope of this - driver. - - @section hw_dependencies Hardware Flow Dependencies - The configuration of all features of the MSS I2Cs is covered by this driver - with the exception of the SmartFusion IOMUX configuration. SmartFusion allows - multiple non-concurrent uses of some external pins through IOMUX configuration. - This feature allows optimization of external pin usage by assigning external - pins for use by either the microcontroller subsystem or the FPGA fabric. The - MSS I2Cs serial signals are routed through IOMUXes to the SmartFusion device - external pins. These IOMUXes are automatically configured correctly by the MSS - configurator tool in the hardware flow when the MSS I2Cs are enabled in that - tool. You must ensure that the MSS I2Cs are enabled by the MSS configurator - tool in the hardware flow; otherwise the serial inputs and outputs will not be - connected to the chip's external pins. For more information on IOMUX, refer to - the IOMUX section of the SmartFusion Datasheet. - The base address, register addresses and interrupt number assignment for the - MSS I2C blocks are defined as constants in the SmartFusion CMSIS-PAL. You must - ensure that the SmartFusion CMSIS-PAL is either included in the software tool - chain used to build your project or is included in your project. - - @section theory_op Theory of Operation - The MSS I2C driver functions are grouped into the following categories: - • Initialization and configuration functions - • Interrupt control - • I2C master operations – functions to handle write, read and write-read transactions - • I2C slave operations – functions to handle write, read and write-read transactions - - Initialization and Configuration - The MSS I2C driver is initialized through a call to the MSS_I2C_init() - function. This function takes the MSS I2C's configuration as parameters. The - MSS_I2C_init() function must be called before any other MSS I2C driver - functions can be called. The first parameter of the MSS_I2C_init() function - is a pointer to one of two global data structures used by the driver to - store state information for each MSS I2C. A pointer to these data structures - is also used as first parameter to any of the driver functions to identify - which MSS I2C will be used by the called function. The names of these two - data structures are g_mss_i2c0 and g_mss_i2c1. Therefore any call to an MSS - I2C driver function should be of the form MSS_I2C_function_name( &g_mss_i2c0, ... ) - or MSS_I2C_function_name( &g_mss_i2c1, ... ). - The MSS_I2C_init() function call for each MSS I2C also takes the I2C serial - address assigned to the MSS I2C and the serial clock divider to be used to - generate its I2C clock as configuration parameters. - - Interrupt Control - The MSS I2C driver is interrupt driven and it enables and disables the - generation of interrupts by MSS I2C at various times when it is operating. - The driver automatically handles MSS I2C interrupts internally, including - enabling disabling and clearing MSS I2C interrupts in the Cortex-M3 - interrupt controller when required. - The function MSS_I2C_register_write_handler() is used to register a write - handler function with the MSS I2C driver that it will call on completion of - an I2C write transaction by the MSS I2C slave. It is your responsibility to - create and register the implementation of this handler function that will - process or trigger the processing of the received data. - Transaction Types - The MSS I2C driver is designed to handle three types of I2C transaction: - • Write transactions - • Read transactions - • Write-read transactions - - Write transaction - The master I2C device initiates a write transaction by sending a START bit - as soon as the bus becomes free. The START bit is followed by the 7-bit - serial address of the target slave device followed by the read/write bit - indicating the direction of the transaction. The slave acknowledges receipt - of it’s address with an acknowledge bit. The master sends data one byte at - a time to the slave, which must acknowledge receipt of each byte for the - next byte to be sent. The master sends a STOP bit to complete the transaction. - The slave can abort the transaction by replying with a non-acknowledge bit - instead of an acknowledge. - The application programmer can choose not to send a STOP bit at the end of - the transaction causing the next transaction to begin with a repeated START bit. - - Read transaction - The master I2C device initiates a read transaction by sending a START bit - as soon as the bus becomes free. The START bit is followed by the 7-bit - serial address of the target slave device followed by the read/write bit - indicating the direction of the transaction. The slave acknowledges receipt - of it’s slave address with an acknowledge bit. The slave sends data one byte - at a time to the master, which must acknowledge receipt of each byte for the - next byte to be sent. The master sends a non-acknowledge bit following the - last byte it wishes to read followed by a STOP bit. - The application programmer can choose not to send a STOP bit at the end of - the transaction causing the next transaction to begin with a repeated START bit. - - Write-read transaction - The write-read transaction is a combination of a write transaction - immediately followed by a read transaction. There is no STOP bit between - the write and read phases of a write-read transaction. A repeated START - bit is sent between the write and read phases. - The write-read transaction is typically used to send a command or offset - in the write transaction specifying the logical data to be transferred - during the read phase. - The application programmer can choose not to send a STOP bit at the end of - the transaction causing the next transaction to begin with a repeated START bit. - - Master Operations - The application can use the MSS_I2C_write(), MSS_I2C_read() and MSS_I2C_write_read() - functions to initiate an I2C bus transaction. The application can then wait - for the transaction to complete using the MSS_I2C_wait_complete() function - or poll the status of the I2C transaction using the MSS_I2C_get_status() - function until it returns a value different from MSS_I2C_IN_PROGRESS. - - Slave Operations - The configuration of the MSS I2C driver to operate as an I2C slave requires - the use of the following functions: - • MSS_I2C_set_slave_tx_buffer() - • MSS_I2C_set_slave_rx_buffer() - • MSS_I2C_set_slave_mem_offset_length() - • MSS_I2C_register_write_handler() - • MSS_I2C_enable_slave_rx() - Use of all functions is not required if the slave I2C does not need to support - all types of I2C read transactions. The subsequent sections list the functions - that must be used to support each transaction type. - - Responding to read transactions - The following functions are used to configure the MSS I2C driver to respond - to I2C read transactions: - • MSS_I2C_set_slave_tx_buffer() - • MSS_I2C_enable_slave_rx() - The function MSS_I2C_set_slave_tx_buffer() specifies the data buffer that - will be transmitted when the I2C slave is the target of an I2C read - transaction. It is then up to the application to manage the content of that - buffer to control the data that will be transmitted to the I2C master as a - result of the read transaction. - The function MSS_I2C_enable_slave_rx() enables the MSS I2C hardware instance - to respond to I2C transactions. It must be called after the MSS I2C driver - has been configured to respond to the required transaction types. - - Responding to write transactions - The following functions are used to configure the MSS I2C driver to respond - to I2C write transactions: - • MSS_I2C_set_slave_rx_buffer() - • MSS_I2C_register_write_handler() - • MSS_I2C_enable_slave_rx() - The function MSS_I2C_set_slave_rx_buffer() specifies the data buffer that - will be used to store the data received by the I2C slave when it is the - target an I2C write transaction. - The function MSS_I2C_register_write_handler() specifies the handler function - that must be called on completion of the I2C write transaction. It is this - handler function that will process or trigger the processing of the received - data. - The function MSS_I2C_enable_slave_rx() enables the MSS I2C hardware instance - to respond to I2C transactions. It must be called after the MSS I2C driver - has been configured to respond to the required transaction types. - - Responding to write-read transactions - The following functions are used to configure the MSS I2C driver to respond - to write-read transactions: - • MSS_I2C_set_slave_tx_buffer() - • MSS_I2C_set_slave_rx_buffer() - • MSS_I2C_set_slave_mem_offset_length() - • MSS_I2C_enable_slave_rx() - The function MSS_I2C_set_slave_mem_offset_length() specifies the number of - bytes expected by the I2C slave during the write phase of the write-read - transaction. - The function MSS_I2C_set_slave_tx_buffer() specifies the data that will be - transmitted to the I2C master during the read phase of the write-read - transaction. The value received by the I2C slave during the write phase of - the transaction will be used as an index into the transmit buffer specified - by this function to decide which part of the transmit buffer will be - transmitted to the I2C master as part of the read phase of the write-read - transaction. - The function MSS_I2C_set_slave_rx_buffer() specifies the data buffer that - will be used to store the data received by the I2C slave during the write - phase of the write-read transaction. This buffer must be at least large - enough to accommodate the number of bytes specified through the - MSS_I2C_set_slave_mem_offset_length() function. - The function MSS_I2C_enable_slave_rx() enables the MSS I2C hardware - instance to respond to I2C transactions. It must be called after the MSS - I2C driver has been configured to respond to the required transaction types. - *//*=========================================================================*/ -#ifndef I2C_H_ -#define I2C_H_ - -#include "../../CMSIS/a2fxxxm3.h" - -/* FreeRTOS includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "semphr.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/*-------------------------------------------------------------------------*//** - The mss_i2c_clock_divider_t type is used to specify the divider to be applied - to the MSS I2C BCLK signal in order to generate the I2C clock. - */ -typedef enum mss_i2c_clock_divider { - MSS_I2C_PCLK_DIV_256 = 0, - MSS_I2C_PCLK_DIV_224, - MSS_I2C_PCLK_DIV_192, - MSS_I2C_PCLK_DIV_160, - MSS_I2C_PCLK_DIV_960, - MSS_I2C_PCLK_DIV_120, - MSS_I2C_PCLK_DIV_60, - MSS_I2C_BCLK_DIV_8 -} mss_i2c_clock_divider_t; - -/*-------------------------------------------------------------------------*//** - The MSS_I2C_RELEASE_BUS constant is used to specify the options parameter to - functions MSS_I2C_read(), MSS_I2C_write() and MSS_I2C_write_read() to indicate - that a STOP bit must be generated at the end of the I2C transaction to release - the bus. - */ -#define MSS_I2C_RELEASE_BUS 0x00 - -/*-------------------------------------------------------------------------*//** - The MSS_I2C_HOLD_BUS constant is used to specify the options parameter to - functions MSS_I2C_read(), MSS_I2C_write() and MSS_I2C_write_read() to indicate - that a STOP bit must not be generated at the end of the I2C transaction in - order to retain the bus ownership. This will cause the next transaction to - begin with a repeated START bit and no STOP bit between the transactions. - */ -#define MSS_I2C_HOLD_BUS 0x01 - -/*-------------------------------------------------------------------------*//** - The mss_i2c_status_t type is used to report the status of I2C transactions. - */ -typedef enum mss_i2c_status -{ - MSS_I2C_SUCCESS = 0, - MSS_I2C_IN_PROGRESS, - MSS_I2C_FAILED -} mss_i2c_status_t; - -/*-------------------------------------------------------------------------*//** - The mss_i2c_slave_handler_ret_t type is used by slave write handler functions - to indicate whether the received data buffer should be released or not. - */ -typedef enum mss_i2c_slave_handler_ret { - MSS_I2C_REENABLE_SLAVE_RX = 0, - MSS_I2C_PAUSE_SLAVE_RX = 1 -} mss_i2c_slave_handler_ret_t; - -/*-------------------------------------------------------------------------*//** - Slave write handler functions prototype. - ------------------------------------------------------------------------------ - This defines the function prototype that must be followed by MSS I2C slave - write handler functions. These functions are registered with the MSS I2C driver - through the MSS_I2C_register_write_handler() function. - - Declaring and Implementing Slave Write Handler Functions: - Slave write handler functions should follow the following prototype: - mss_i2c_slave_handler_ret_t write_handler( uint8_t * data, uint16_t size ); - - The data parameter is a pointer to a buffer (received data buffer) holding - the data written to the MSS I2C slave. - The size parameter is the number of bytes held in the received data buffer. - Handler functions must return one of the following values: - • MSS_I2C_REENABLE_SLAVE_RX - • MSS_I2C_PAUSE_SLAVE_RX. - If the handler function returns MSS_I2C_REENABLE_SLAVE_RX, the driver will - release the received data buffer and allow further I2C write transactions to - the MSS I2C slave to take place. - If the handler function returns MSS_I2C_PAUSE_SLAVE_RX, the MSS I2C slave - will respond to subsequent write requests with a non-acknowledge bit (NACK), - until the received data buffer content has been processed by some other part - of the software application. - A call to MSS_I2C_enable_slave_rx() is required at some point after - returning MSS_I2C_PAUSE_SLAVE_RX in order to release the received data - buffer so it can be used to store data received by subsequent I2C write - transactions. - */ -typedef mss_i2c_slave_handler_ret_t (*mss_i2c_slave_wr_handler_t)( uint8_t *, uint16_t ); - -/*-------------------------------------------------------------------------*//** - mss_i2c_instance_t - ------------------------------------------------------------------------------ - There is one instance of this structure for each of the microcontroller - subsystem's I2Cs. Instances of this structure are used to identify a specific - I2C. A pointer to an instance of the mss_i2c_instance_t structure is passed as - the first parameter to MSS I2C driver functions to identify which I2C should - perform the requested operation. - */ -typedef struct mss_i2c_instance -{ - uint_fast8_t ser_address; - /* Transmit related info:*/ - uint_fast8_t target_addr; - - /* Current transaction type (WRITE, READ, RANDOM_READ)*/ - uint8_t transaction; - - uint_fast16_t random_read_addr; - - uint8_t options; - - /* I2C hardware instance identification */ - IRQn_Type irqn; - I2C_TypeDef * hw_reg; - I2C_BitBand_TypeDef * hw_reg_bit; - - /* TX INFO: */ - const uint8_t * tx_buffer; - uint_fast16_t tx_size; - uint_fast16_t tx_idx; - uint_fast8_t dir; - - /* RX INFO: */ - uint8_t * rx_buffer; - uint_fast16_t rx_size; - uint_fast16_t rx_idx; - - /* status variable: */ - volatile mss_i2c_status_t status; - - /* Slave data: */ - uint_fast8_t slave_mem_offset_length; - mss_i2c_slave_wr_handler_t slave_write_handler; - - /* Used to get access to and wait for completion of an I2C transaction. */ - SemaphoreHandle_t xI2CCompleteSemaphore; - -} mss_i2c_instance_t; - -/*-------------------------------------------------------------------------*//** - This instance of mss_i2c_instance_t holds all data related to the operations - performed by MSS I2C 0. A pointer to g_mss_i2c0 is passed as the first - parameter to MSS I2C driver functions to indicate that MSS I2C 0 should - perform the requested operation. - */ -extern mss_i2c_instance_t g_mss_i2c0; - -/*-------------------------------------------------------------------------*//** - This instance of mss_i2c_instance_t holds all data related to the operations - performed by MSS I2C 1. A pointer to g_mss_i2c1 is passed as the first - parameter to MSS I2C driver functions to indicate that MSS I2C 1 should - perform the requested operation. - */ -extern mss_i2c_instance_t g_mss_i2c1; - -/*-------------------------------------------------------------------------*//** - MSS I2C initialisation routine. - ------------------------------------------------------------------------------ - The MSS_I2C_init() function initializes and configures hardware and data - structures of one of the SmartFusion MSS I2Cs. - ------------------------------------------------------------------------------ - @param this_i2c: - The this_i2c parameter is a pointer to an mss_i2c_instance_t structure - identifying the MSS I2C hardware block to be initialized. There are two such - data structures, g_mss_i2c0 and g_mss_i2c1, associated with MSS I2C 0 and - MSS I2C 1 respectively. This parameter must point to either the g_mss_i2c0 - or g_mss_i2c1 global data structure defined within the I2C driver. - - @param ser_address: - This parameter sets the I2C serial address being initialized. It is the I2C - bus address to which the MSS I2C instance will respond. Any 8 bit address is - allowed. - - @param ser_clock_speed: - This parameter sets the I2C serial clock frequency. It selects the divider - that will be used to generate the serial clock from the APB clock. It can be - one of the following: - • MSS_I2C_PCLK_DIV_256 - • MSS_I2C_PCLK_DIV_224 - • MSS_I2C_PCLK_DIV_192 - • MSS_I2C_PCLK_DIV_160 - • MSS_I2C_PCLK_DIV_960 - • MSS_I2C_PCLK_DIV_120 - • MSS_I2C_PCLK_DIV_60 - • MSS_I2C_BCLK_DIV_8 - */ -void MSS_I2C_init -( - mss_i2c_instance_t * this_i2c, - uint8_t ser_address, - mss_i2c_clock_divider_t ser_clock_speed -); - -/******************************************************************************* - ******************************************************************************* - * - * Master specific functions - * - * The following functions are only used within an I2C master's implementation. - */ - -/*-------------------------------------------------------------------------*//** - I2C master write function. - ------------------------------------------------------------------------------ - This function initiates an I2C master write transaction. This function returns - immediately after initiating the transaction. The content of the write buffer - passed as parameter should not be modified until the write transaction - completes. It also means that the memory allocated for the write buffer should - not be freed or go out of scope before the write completes. You can check for - the write transaction completion using the MSS_I2C_status() function. - ------------------------------------------------------------------------------ - @param this_i2c: - The this_i2c parameter is a pointer to an mss_i2c_instance_t structure - identifying the MSS I2C hardware block that will perform the requested - function. There are two such data structures, g_mss_i2c0 and g_mss_i2c1, - associated with MSS I2C 0 and MSS I2C 1 respectively. This parameter must - point to either the g_mss_i2c0 or g_mss_i2c1 global data structure defined - within the I2C driver. - - @param serial_addr: - This parameter specifies the serial address of the target I2C device. - - @param write_buffer: - This parameter is a pointer to a buffer holding the data to be written to - the target I2C device. - Care must be taken not to release the memory used by this buffer before the - write transaction completes. For example, it is not appropriate to return - from a function allocating this buffer as an array variable before the write - transaction completes as this would result in the buffer's memory being - de-allocated from the stack when the function returns. This memory could - then be subsequently reused and modified causing unexpected data to be - written to the target I2C device. - - @param write_size: - Number of bytes held in the write_buffer to be written to the target I2C - device. - - @param options: - The options parameter is used to indicate if the I2C bus should be released - on completion of the write transaction. Using the MSS_I2C_RELEASE_BUS - constant for the options parameter causes a STOP bit to be generated at the - end of the write transaction causing the bus to be released for other I2C - devices to use. Using the MSS_I2C_HOLD_BUS constant as options parameter - prevents a STOP bit from being generated at the end of the write - transaction, preventing other I2C devices from initiating a bus transaction. - */ -void MSS_I2C_write -( - mss_i2c_instance_t * this_i2c, - uint8_t serial_addr, - const uint8_t * write_buffer, - uint16_t write_size, - uint8_t options -); - -/*-------------------------------------------------------------------------*//** - I2C master read. - ------------------------------------------------------------------------------ - This function initiates an I2C master read transaction. This function returns - immediately after initiating the transaction. - The content of the read buffer passed as parameter should not be modified - until the read transaction completes. It also means that the memory allocated - for the read buffer should not be freed or go out of scope before the read - completes. You can check for the read transaction completion using the - MSS_I2C_status() function. - ------------------------------------------------------------------------------ - @param this_i2c: - The this_i2c parameter is a pointer to an mss_i2c_instance_t structure - identifying the MSS I2C hardware block that will perform the requested - function. There are two such data structures, g_mss_i2c0 and g_mss_i2c1, - associated with MSS I2C 0 and MSS I2C 1 respectively. This parameter must - point to either the g_mss_i2c0 or g_mss_i2c1 global data structure defined - within the I2C driver. - - @param serial_addr: - This parameter specifies the serial address of the target I2C device. - - @param read_buffer - Pointer to a buffer where the data received from the target device will be - stored. - Care must be taken not to release the memory used by this buffer before the - read transaction completes. For example, it is not appropriate to return - from a function allocating this buffer as an array variable before the read - transaction completes as this would result in the buffer's memory being - de-allocated from the stack when the function returns. This memory could - then be subsequently reallocated resulting in the read transaction - corrupting the newly allocated memory. - - @param read_size: - This parameter is the number of bytes to read from the target device. This - size must not exceed the size of the read_buffer buffer. - - @param options: - The options parameter is used to indicate if the I2C bus should be released - on completion of the read transaction. Using the MSS_I2C_RELEASE_BUS - constant for the options parameter causes a STOP bit to be generated at the - end of the read transaction causing the bus to be released for other I2C - devices to use. Using the MSS_I2C_HOLD_BUS constant as options parameter - prevents a STOP bit from being generated at the end of the read transaction, - preventing other I2C devices from initiating a bus transaction. - */ -void MSS_I2C_read -( - mss_i2c_instance_t * this_i2c, - uint8_t serial_addr, - uint8_t * read_buffer, - uint16_t read_size, - uint8_t options -); - -/*-------------------------------------------------------------------------*//** - I2C master write-read - ------------------------------------------------------------------------------ - This function initiates an I2C write-read transaction where data is first - written to the target device before issuing a restart condition and changing - the direction of the I2C transaction in order to read from the target device. - ------------------------------------------------------------------------------ - @param this_i2c: - The this_i2c parameter is a pointer to an mss_i2c_instance_t structure - identifying the MSS I2C hardware block that will perform the requested - function. There are two such data structures, g_mss_i2c0 and g_mss_i2c1, - associated with MSS I2C 0 and MSS I2C 1 respectively. This parameter must - point to either the g_mss_i2c0 or g_mss_i2c1 global data structure defined - within the I2C driver. - - @param serial_addr: - This parameter specifies the serial address of the target I2C device. - - @param addr_offset: - This parameter is a pointer to the buffer containing the data that will be - sent to the slave during the write phase of the write-read transaction. This - data is typically used to specify an address offset specifying to the I2C - slave device what data it must return during the read phase of the - write-read transaction. - - @param offset_size: - This parameter specifies the number of offset bytes to be written during the - write phase of the write-read transaction. This is typically the size of the - buffer pointed to by the addr_offset parameter. - - @param read_buffer: - This parameter is a pointer to the buffer where the data read from the I2C - slave will be stored. - - @param read_size: - This parameter specifies the number of bytes to read from the target I2C - slave device. This size must not exceed the size of the buffer pointed to by - the read_buffer parameter. - - @param options: - The options parameter is used to indicate if the I2C bus should be released - on completion of the write-read transaction. Using the MSS_I2C_RELEASE_BUS - constant for the options parameter causes a STOP bit to be generated at the - end of the write-read transaction causing the bus to be released for other - I2C devices to use. Using the MSS_I2C_HOLD_BUS constant as options parameter - prevents a STOP bit from being generated at the end of the write-read - transaction, preventing other I2C devices from initiating a bus transaction. - */ -void MSS_I2C_write_read -( - mss_i2c_instance_t * this_i2c, - uint8_t serial_addr, - const uint8_t * addr_offset, - uint16_t offset_size, - uint8_t * read_buffer, - uint16_t read_size, - uint8_t options -); - -/*-------------------------------------------------------------------------*//** - I2C status - ------------------------------------------------------------------------------ - This function indicates the current state of a MSS I2C instance. - ------------------------------------------------------------------------------ - @param this_i2c: - The this_i2c parameter is a pointer to an mss_i2c_instance_t structure - identifying the MSS I2C hardware block that will perform the requested - function. There are two such data structures, g_mss_i2c0 and g_mss_i2c1, - associated with MSS I2C 0 and MSS I2C 1 respectively. This parameter must - point to either the g_mss_i2c0 or g_mss_i2c1 global data structure defined - within the I2C driver. - ------------------------------------------------------------------------------ - @return - The return value indicates the current state of a MSS I2C instance or the - outcome of the previous transaction if no transaction is in progress. - Possible return values are: - SUCCESS - The last I2C transaction has completed successfully. - IN_PROGRESS - There is an I2C transaction in progress. - FAILED - The last I2C transaction failed. - - */ -mss_i2c_status_t MSS_I2C_get_status -( - mss_i2c_instance_t * this_i2c -); - -/*-------------------------------------------------------------------------*//** - Wait for I2C transaction completion. - ------------------------------------------------------------------------------ - This function waits for the current I2C transaction to complete. The return - value indicates whether the last I2C transaction was successful, or is still - in progress, or failed. - ------------------------------------------------------------------------------ - @param this_i2c: - The this_i2c parameter is a pointer to an mss_i2c_instance_t structure - identifying the MSS I2C hardware block that will perform the requested - function. There are two such data structures, g_mss_i2c0 and g_mss_i2c1, - associated with MSS I2C 0 and MSS I2C 1 respectively. This parameter must - point to either the g_mss_i2c0 or g_mss_i2c1 global data structure defined - within the I2C driver. - ------------------------------------------------------------------------------ - @return - The return value indicates the outcome of the last I2C transaction. It can - be one of the following: - MSS_I2C_SUCCESS - The last I2C transaction has completed successfully. - MSS_I2C_IN_PROGRESS - The current I2C transaction is still in progress. - MSS_I2C_FAILED - The last I2C transaction failed. - */ -mss_i2c_status_t MSS_I2C_wait_complete -( - mss_i2c_instance_t * this_i2c -); - - -/******************************************************************************* - ******************************************************************************* - * - * Slave specific functions - * - * The following functions are only used within the implementation of an I2C - * slave device. - */ - -/*-------------------------------------------------------------------------*//** - I2C slave transmit buffer configuration. - ------------------------------------------------------------------------------ - This function specifies the memory buffer holding the data that will be sent - to the I2C master when this MSS I2C instance is the target of an I2C read or - write-read transaction. - ------------------------------------------------------------------------------ - @param this_i2c: - The this_i2c parameter is a pointer to an mss_i2c_instance_t structure - identifying the MSS I2C hardware block that will perform the requested - function. There are two such data structures, g_mss_i2c0 and g_mss_i2c1, - associated with MSS I2C 0 and MSS I2C 1 respectively. This parameter must - point to either the g_mss_i2c0 or g_mss_i2c1 global data structure defined - within the I2C driver. - - @param tx_buffer: - This parameter is a pointer to the memory buffer holding the data to be - returned to the I2C master when this MSS I2C instance is the target of an - I2C read or write-read transaction. - - @param tx_size: - Size of the transmit buffer pointed to by the tx_buffer parameter. - */ -void MSS_I2C_set_slave_tx_buffer -( - mss_i2c_instance_t * this_i2c, - uint8_t * tx_buffer, - uint16_t tx_size -); - -/*-------------------------------------------------------------------------*//** - I2C slave receive buffer configuration. - ------------------------------------------------------------------------------ - This function specifies the memory buffer that will be used by the MSS I2C - instance to receive data when it is a slave. This buffer is the memory where - data will be stored when the MSS I2C is the target of an I2C master write - transaction (i.e. when it is the slave). - ------------------------------------------------------------------------------ - @param this_i2c: - The this_i2c parameter is a pointer to an mss_i2c_instance_t structure - identifying the MSS I2C hardware block that will perform the requested - function. There are two such data structures, g_mss_i2c0 and g_mss_i2c1, - associated with MSS I2C 0 and MSS I2C 1 respectively. This parameter must - point to either the g_mss_i2c0 or g_mss_i2c1 global data structure defined - within the I2C driver. - - @param rx_buffer: - This parameter is a pointer to the memory buffer allocated by the caller - software to be used as a slave receive buffer. - - @param rx_size: - Size of the slave receive buffer. This is the amount of memory that is - allocated to the buffer pointed to by rx_buffer. - Note: This buffer size will indirectly specify the maximum I2C write - transaction length this MSS I2C instance can be the target of. This - is because this MSS I2C instance will respond to further received - bytes with a non-acknowledge bit (NACK) as soon as its receive - buffer is full. This will cause the write transaction to fail. - */ -void MSS_I2C_set_slave_rx_buffer -( - mss_i2c_instance_t * this_i2c, - uint8_t * rx_buffer, - uint16_t rx_size -); - -/*-------------------------------------------------------------------------*//** - I2C slave memory offset length configuration. - ------------------------------------------------------------------------------ - This function is used as part of the configuration of a MSS I2C instance for - operation as a slave supporting write-read transactions. It specifies the - number of bytes expected as part of the write phase of a write-read - transaction. The bytes received during the write phase of a write-read - transaction will be interpreted as an offset into the slave’s transmit buffer. - This allows random access into the I2C slave transmit buffer from a remote - I2C master. - ------------------------------------------------------------------------------ - @param this_i2c: - The this_i2c parameter is a pointer to an mss_i2c_instance_t structure - identifying the MSS I2C hardware block that will perform the requested - function. There are two such data structures, g_mss_i2c0 and g_mss_i2c1, - associated with MSS I2C 0 and MSS I2C 1 respectively. This parameter must - point to either the g_mss_i2c0 or g_mss_i2c1 global data structure defined - within the I2C driver. - - @param offset_length: - The offset_length parameter configures the number of bytes to be interpreted - by the MSS I2C slave as a memory offset value during the write phase of - write-read transactions. - */ -void MSS_I2C_set_slave_mem_offset_length -( - mss_i2c_instance_t * this_i2c, - uint8_t offset_length -); - -/*-------------------------------------------------------------------------*//** - I2C write handler registration. - ------------------------------------------------------------------------------ - Register the function that will be called to process the data written to this - MSS I2C instance when it is the slave in an I2C write transaction. - Note: The write handler is not called as a result of a write-read transaction. - The write data of a write read transaction is interpreted as an offset - into the slave’s transmit buffer and handled by the driver. - ------------------------------------------------------------------------------ - @param this_i2c: - The this_i2c parameter is a pointer to an mss_i2c_instance_t structure - identifying the MSS I2C hardware block that will perform the requested - function. There are two such data structures, g_mss_i2c0 and g_mss_i2c1, - associated with MSS I2C 0 and MSS I2C 1 respectively. This parameter must - point to either the g_mss_i2c0 or g_mss_i2c1 global data structure defined - within the I2C driver. - - @param handler: - Pointer to the function that will process the I2C write request. - */ -void MSS_I2C_register_write_handler -( - mss_i2c_instance_t * this_i2c, - mss_i2c_slave_wr_handler_t handler -); - -/*-------------------------------------------------------------------------*//** - I2C slave receive enable. - ------------------------------------------------------------------------------ - Enables the MSS I2C instance identified through the this_i2c parameter to - receive data when it is the target of an I2C write or write-read transaction. - ------------------------------------------------------------------------------ - @param this_i2c: - The this_i2c parameter is a pointer to an mss_i2c_instance_t structure - identifying the MSS I2C hardware block that will perform the requested - function. There are two such data structures, g_mss_i2c0 and g_mss_i2c1, - associated with MSS I2C 0 and MSS I2C 1 respectively. This parameter must - point to either the g_mss_i2c0 or g_mss_i2c1 global data structure defined - within the I2C driver. - */ -void MSS_I2C_enable_slave_rx -( - mss_i2c_instance_t * this_i2c -); - -#ifdef __cplusplus -} -#endif - -#endif /*MSS_I2C_H_*/ diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/OLED/oled.c b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/OLED/oled.c deleted file mode 100644 index faa199d9a..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/OLED/oled.c +++ /dev/null @@ -1,536 +0,0 @@ -/***************************************************************************** - * (c) Copyright 2009 Actel Corporation. All rights reserved. - * - * Author : Actel Application Team - * Rev : 1.0.0.0 - * Description: Device driver for the on-board OLED for SmartFusion KITS - * Implementation of sample basic driver for OLED display found on Actel - * SmartFusion development boards. - * This code is intended as an example of using the SmartFusion I2C driver. - *****************************************************************************/ - - #include "oled.h" -#include "../bsp_config.h" - -/***************************************************************************//** - Command definitions for the SSD300 controller inside the OLED display module. - */ -#define CMD_DISPLAY_OFF_SET 0xD3 -#define CMD_PANEL_ON 0xAF -#define CMD_PANEL_OFF 0xAE -#define CMD_DC_DC 0xAD -#define CMD_DC_DC_DEFAULT_ON 0x8B -#define CMD_DC_DC_OFF 0x8A -#define CMD_DISPLAY_ALL_ON 0xA5 -#define CMD_DISPLAY_ALL_OFF 0xA4 -#define CMD_DISPLAY_NON_INV 0xA6 -#define CMD_DISPLAY_INV 0xA7 -#define CMD_ARECOL_LPM 0xD8 -#define CMD_ARECOL_MONO 0x00 -#define CMD_ARECOL_COLOR 0x30 -#define CMD_LPM_ON 0x05 -#define CMD_LPM_OFF 0x00 -#define CMD_CONTRAST 0x81 -#define CMD_MIRROR_HORI_ON 0xC8 -#define CMD_MIRROR_HORI_OFF 0xC0 -#define CMD_MIRROR_VERT_ON 0xA1 -#define CMD_MIRROR_VERT_OFF 0xA0 -#define CMD_HORI_SCRL 0x26 -#define CMD_HORI_SCRL_ON 0x2F -#define CMD_HORI_SCRL_OFF 0x2E -#define CMD_MUX_RATIO 0xA8 -#define CMD_MUX_RATIO_31 0x23 - -#define CMD_PAGE_0 0xB0 -#define CMD_PAGE_1 0xB1 -#define CMD_PAGE_2 0xB2 -#define CMD_PAGE_3 0xB3 -#define CMD_PAGE_4 0xB4 -#define CMD_PAGE_5 0xB5 - -#define CMD_LOW_NIB_COL 0x00 -#define CMD_HIGH_NIB_COL 0x10 - -#define CMD_START_LINE 0x50 -#define CONTRAST_DEFAULT 0xFF -#define CONTRAST_25_PERC 0x40 -#define CONTRAST_100_PERC 0xFF -#define CONTRAST_0_PERC 0x00 -#define SCROLL_1_COLUMN 0x01 -#define SCROLL_2_COLUMN 0x02 -#define SCROLL_3_COLUMN 0x03 -#define SCROLL_4_COLUMN 0x04 -#define SCROLL_PAGE_0 0x00 -#define SCROLL_PAGE_1 0x01 -#define SCROLL_PAGE_2 0x02 -#define SCROLL_PAGE_3 0x03 -#define SCROLL_PAGE_4 0x04 -#define SCROLL_PAGE_5 0x05 -#define SCROLL_12_FRAMES 0x00 -#define SCROLL_64_FRAMES 0x01 -#define SCROLL_128_FRAMES 0x02 -#define SCROLL_256_FRAMES 0x03 -#define SCROLL_PER_STEP 0x01 -#define PAGE0_COLOR_BAG 0x92 -#define PAGE1_COLOR_BAG 0x93 - -/***************************************************************************//** - OLED display I2C communication protocol control byte values. Used to indicate - whether the byte following the control byte is to be interpreted by the OLED - display as a command or data byte. - */ -#define OLED_COMMAND_CODE 0x80 -#define OLED_DATA_CODE 0xC0 - -/***************************************************************************//** - I2C serial address of OLED display. - */ -#define OLED_SLAVE_ADDRESS 0x78 - -/***************************************************************************//** - Bitmaps of the character set. - Each character is 5 pixels wide and 7 pixels high. - The table is indexed on ASCII character codes. - */ -#define CHARACTER_WIDTH 5 - -const unsigned char oled_ascii_character_set[255][CHARACTER_WIDTH] = -{ - {0x00, 0x00, 0x00, 0x00, 0x00}, - {0x00, 0x00, 0x00, 0x00, 0x00}, - {0x00, 0x00, 0x00, 0x00, 0x00}, - {0x00, 0x00, 0x00, 0x00, 0x00}, - {0x00, 0x00, 0x00, 0x00, 0x00}, - {0x00, 0x00, 0x00, 0x00, 0x00}, - {0x00, 0x00, 0x00, 0x00, 0x00}, - {0x00, 0x00, 0x00, 0x00, 0x00}, - {0x00, 0x00, 0x00, 0x00, 0x00}, - {0x00, 0x00, 0x00, 0x00, 0x00}, - {0x00, 0x00, 0x00, 0x00, 0x00}, - {0x00, 0x00, 0x00, 0x00, 0x00}, - {0x00, 0x00, 0x00, 0x00, 0x00}, - {0x00, 0x00, 0x00, 0x00, 0x00}, - {0x00, 0x00, 0x00, 0x00, 0x00}, - {0x00, 0x00, 0x00, 0x00, 0x00}, - {0x00, 0x00, 0x00, 0x00, 0x00}, - {0x00, 0x00, 0x00, 0x00, 0x00}, - {0x00, 0x00, 0x00, 0x00, 0x00}, - {0x00, 0x00, 0x00, 0x00, 0x00}, - {0x00, 0x00, 0x00, 0x00, 0x00}, - {0x00, 0x00, 0x00, 0x00, 0x00}, - {0x00, 0x00, 0x00, 0x00, 0x00}, - {0x00, 0x00, 0x00, 0x00, 0x00}, - {0x00, 0x00, 0x00, 0x00, 0x00}, - {0x00, 0x00, 0x00, 0x00, 0x00}, - {0x00, 0x00, 0x00, 0x00, 0x00}, - {0x00, 0x00, 0x00, 0x00, 0x00}, - {0x00, 0x00, 0x00, 0x00, 0x00}, - {0x00, 0x00, 0x00, 0x00, 0x00}, - {0x00, 0x00, 0x00, 0x00, 0x00}, - {0x00, 0x00, 0x00, 0x00, 0x00}, - {0x00, 0x00, 0x00, 0x00, 0x00}, - - {0x00, 0x00, 0x5F, 0x00, 0x00}, - {0x00, 0x07, 0x00, 0x07, 0x00}, - {0x14, 0x7F, 0x14, 0x7F, 0x14}, - {0x24, 0x2A, 0x7F, 0x2A, 0x12}, - {0x23, 0x13, 0x08, 0x64, 0x62}, - {0x36, 0x49, 0x55, 0x22, 0x50}, - {0x00, 0x05, 0x03, 0x00, 0x00}, - {0x00, 0x1C, 0x22, 0x41, 0x00}, - {0x00, 0x41, 0x22, 0x1C, 0x00}, - {0x14, 0x08, 0x3E, 0x08, 0x14}, - {0x08, 0x08, 0x3E, 0x08, 0x08}, - {0x00, 0x50, 0x30, 0x00, 0x00}, - {0x08, 0x08, 0x08, 0x08, 0x08}, - {0x00, 0x60, 0x60, 0x00, 0x00}, - {0x20, 0x10, 0x08, 0x04, 0x02}, - {0x3E, 0x51, 0x49, 0x45, 0x3E}, - {0x00, 0x42, 0x7F, 0x40, 0x00}, - {0x42, 0x61, 0x51, 0x49, 0x46}, - {0x21, 0x41, 0x45, 0x4B, 0x31}, - {0x18, 0x14, 0x12, 0x7F, 0x10}, - {0x27, 0x45, 0x45, 0x45, 0x39}, - {0x3C, 0x4A, 0x49, 0x49, 0x30}, - {0x01, 0x71, 0x09, 0x05, 0x03}, - {0x36, 0x49, 0x49, 0x49, 0x36}, - {0x06, 0x49, 0x49, 0x29, 0x1E}, - {0x00, 0x36, 0x36, 0x00, 0x00}, - {0x00, 0x56, 0x36, 0x00, 0x00}, - {0x08, 0x14, 0x22, 0x41, 0x00}, - {0x14, 0x14, 0x14, 0x14, 0x14}, - {0x00, 0x41, 0x22, 0x14, 0x08}, - {0x02, 0x01, 0x51, 0x09, 0x06}, - {0x32, 0x49, 0x79, 0x41, 0x3E}, - {0x7E, 0x11, 0x11, 0x11, 0x7E}, - {0x7F, 0x49, 0x49, 0x49, 0x36}, - {0x3E, 0x41, 0x41, 0x41, 0x22}, - {0x7F, 0x41, 0x41, 0x22, 0x1C}, - {0x7F, 0x49, 0x49, 0x49, 0x41}, - {0x7F, 0x09, 0x09, 0x09, 0x01}, - {0x3E, 0x41, 0x49, 0x49, 0x7A}, - {0x7F, 0x08, 0x08, 0x08, 0x7F}, - {0x00, 0x41, 0x7F, 0x41, 0x00}, - {0x20, 0x40, 0x41, 0x3F, 0x01}, - {0x7F, 0x08, 0x14, 0x22, 0x41}, - {0x3F, 0x40, 0x40, 0x40, 0x40}, - {0x7F, 0x02, 0x0C, 0x02, 0x7F}, - {0x7F, 0x04, 0x08, 0x10, 0x7F}, - {0x3E, 0x41, 0x41, 0x41, 0x3E}, - {0x7F, 0x09, 0x09, 0x09, 0x06}, - {0x3E, 0x41, 0x51, 0x21, 0x5E}, - {0x7F, 0x09, 0x19, 0x29, 0x46}, - {0x46, 0x49, 0x49, 0x49, 0x31}, - {0x01, 0x01, 0x7F, 0x01, 0x01}, - {0x3F, 0x40, 0x40, 0x40, 0x3F}, - {0x1F, 0x20, 0x40, 0x20, 0x1F}, - {0x3F, 0x40, 0x38, 0x40, 0x3F}, - {0x63, 0x14, 0x08, 0x14, 0x63}, - {0x07, 0x08, 0x70, 0x08, 0x07}, - {0x61, 0x51, 0x49, 0x45, 0x43}, - {0x00, 0x7F, 0x41, 0x41, 0x00}, - {0x02, 0x04, 0x08, 0x10, 0x20}, - {0x00, 0x41, 0x41, 0x7F, 0x00}, - {0x04, 0x02, 0x01, 0x02, 0x04}, - {0x40, 0x40, 0x40, 0x40, 0x40}, - {0x00, 0x01, 0x02, 0x04, 0x00}, - {0x20, 0x54, 0x54, 0x54, 0x78}, - {0x7F, 0x48, 0x44, 0x44, 0x38}, - {0x38, 0x44, 0x44, 0x44, 0x20}, - {0x30, 0x48, 0x48, 0x50, 0x7F}, - {0x38, 0x54, 0x54, 0x54, 0x18}, - {0x10, 0x7E, 0x11, 0x01, 0x02}, - {0x0C, 0x52, 0x52, 0x52, 0x3E}, - {0x7F, 0x08, 0x04, 0x04, 0x78}, - {0x00, 0x44, 0x7D, 0x40, 0x00}, - {0x20, 0x40, 0x44, 0x3D, 0x00}, - {0x7F, 0x10, 0x28, 0x44, 0x00}, - {0x00, 0x41, 0x7F, 0x40, 0x00}, - {0x7C, 0x04, 0x18, 0x04, 0x78}, - {0x7C, 0x08, 0x04, 0x04, 0x78}, - {0x38, 0x44, 0x44, 0x44, 0x38}, - {0x7C, 0x14, 0x14, 0x14, 0x08}, - {0x08, 0x14, 0x14, 0x18, 0x7C}, - {0x7C, 0x08, 0x04, 0x04, 0x08}, - {0x48, 0x54, 0x54, 0x54, 0x20}, - {0x04, 0x3F, 0x44, 0x40, 0x20}, - {0x3C, 0x40, 0x40, 0x20, 0x7C}, - {0x1C, 0x20, 0x40, 0x20, 0x1C}, - {0x3C, 0x40, 0x30, 0x40, 0x3C}, - {0x44, 0x28, 0x10, 0x28, 0x44}, - {0x0C, 0x50, 0x50, 0x50, 0x3C}, - {0x44, 0x64, 0x54, 0x4C, 0x44}, - - {0x00, 0x00, 0x00, 0x00, 0x00}, - {0x00, 0x00, 0x00, 0x00, 0x00}, - {0x00, 0x00, 0x00, 0x00, 0x00}, - - {0x07, 0x05, 0x07, 0x00, 0x00}, - {0x12, 0x19, 0x16, 0x00, 0x00}, - {0x00, 0x00, 0x00, 0x00, 0x00} - -}; - -#define FIRST_CHARACTER 0 - -/***************************************************************************//** - The g_p_oled_i2c global variable is only used inside the OLED driver. It - identifies the MSS I2C block used to communicate with the OLED display. - */ -static mss_i2c_instance_t * g_p_oled_i2c = OLED_I2C_INSTANCE; - -/***************************************************************************//** - The OLED_set_cursor function sets the cursor position. - - @param line - The line parameter specifies the line at which to set the cursor. It can - take the values: - - FIRST_LINE - - SECOND_LINE - - @param char_offset - The char_offset paraemter specifies the character offset on a line where to - set the cursor location. It can be set to FIRST_CHARACTER to set the cursor - at the start of a line. - */ -void OLED_set_cursor -( - uint8_t line, - uint8_t char_offset -); -/***************************************************************************//** - The OLED_write_string function displays the input string to the OLED panel. - - @param string - The string parameter is a pointer to the zero-terminated to display on the - OLED. - */ -void OLED_write_string( const char *string); - -/***************************************************************************//** - The OLED_write_char function displays a single character to the display. - - @param data_char - The data_char parameter is the ASCII code of the character to display. -*/ -void OLED_write_char( const uint8_t data_char ); -/***************************************************************************//** - OLED_init() - See "oled.h" for details of how to use this function. - */ -void OLED_init(void ) -{ - uint8_t oled_init_sequence1[] = - { - OLED_COMMAND_CODE, CMD_DISPLAY_NON_INV, - OLED_COMMAND_CODE, CMD_DISPLAY_ALL_OFF, - OLED_COMMAND_CODE, CMD_MIRROR_HORI_ON, - OLED_COMMAND_CODE, CMD_MIRROR_VERT_OFF, - OLED_COMMAND_CODE, CMD_HORI_SCRL_OFF, - OLED_COMMAND_CODE, CMD_CONTRAST, - OLED_COMMAND_CODE, CONTRAST_DEFAULT, - OLED_COMMAND_CODE, CMD_ARECOL_LPM, - OLED_COMMAND_CODE, CMD_ARECOL_MONO^CMD_LPM_OFF - }; - - uint8_t oled_init_sequence2[] = - { - OLED_COMMAND_CODE, CMD_START_LINE, - OLED_COMMAND_CODE, CMD_PANEL_ON - }; - - MSS_I2C_init( g_p_oled_i2c, OLED_SLAVE_ADDRESS, MSS_I2C_PCLK_DIV_60 ); - - MSS_I2C_write( g_p_oled_i2c, OLED_SLAVE_ADDRESS, oled_init_sequence1, sizeof(oled_init_sequence1), MSS_I2C_RELEASE_BUS ); - MSS_I2C_wait_complete( g_p_oled_i2c ); - - OLED_clear_display(BOTH_LINES); - - MSS_I2C_write( g_p_oled_i2c, OLED_SLAVE_ADDRESS, oled_init_sequence2, sizeof(oled_init_sequence2), MSS_I2C_RELEASE_BUS ); - MSS_I2C_wait_complete( g_p_oled_i2c ); - - OLED_set_cursor( FIRST_LINE, FIRST_CHARACTER ); -} - -/***************************************************************************//** - OLED_clear_display() - See "oled.h" for details of how to use this function. - */ -void OLED_clear_display( oled_no_of_line LINES ) -{ - uint8_t i, j,start_line = 0,end_line = 0; - uint8_t clear_8_columns[] = - { - OLED_DATA_CODE, 0x00, - OLED_DATA_CODE, 0x00, - OLED_DATA_CODE, 0x00, - OLED_DATA_CODE, 0x00, - OLED_DATA_CODE, 0x00, - OLED_DATA_CODE, 0x00, - OLED_DATA_CODE, 0x00, - OLED_DATA_CODE, 0x00 - }; - - switch(LINES) - { - case FIRST_LINE: - { - start_line = FIRST_LINE; - end_line = FIRST_LINE; - } - - case SECOND_LINE: - { - start_line = SECOND_LINE; - end_line = SECOND_LINE; - } - - case BOTH_LINES: - { - start_line = FIRST_LINE; - end_line = SECOND_LINE; - } - - } - - for( j = start_line; j <= end_line; ++j ) - { - OLED_set_cursor( j, FIRST_CHARACTER ); - for( i = 0; i < 13; ++i ) - { - MSS_I2C_write( g_p_oled_i2c, OLED_SLAVE_ADDRESS, clear_8_columns, sizeof(clear_8_columns), MSS_I2C_RELEASE_BUS ); - MSS_I2C_wait_complete( g_p_oled_i2c ); - } - } -} - -/***************************************************************************//** - OLED_set_cursor() - See definition of OLED_set_cursor() for details of how to use this function. - */ -void OLED_set_cursor -( - uint8_t line, - uint8_t char_offset -) -{ - uint8_t command_sequence[] = - { - OLED_COMMAND_CODE, CMD_LOW_NIB_COL, - OLED_COMMAND_CODE, CMD_HIGH_NIB_COL, - OLED_COMMAND_CODE, CMD_PAGE_0 - }; - uint8_t low_nib, high_nib; - - ++char_offset; - char_offset *= CHARACTER_WIDTH; - low_nib = 0x0F & char_offset; - high_nib = (0xF0 & char_offset) >> 4; - line += 2; - - command_sequence[1] |= low_nib; - command_sequence[3] |= high_nib; - command_sequence[5] |= line; - MSS_I2C_write( g_p_oled_i2c, OLED_SLAVE_ADDRESS, command_sequence, sizeof(command_sequence), MSS_I2C_RELEASE_BUS ); - MSS_I2C_wait_complete( g_p_oled_i2c ); -} - -/***************************************************************************//** - OLED_write_string() - See definition of OLED_write_string for details of how to use this function. - */ -void OLED_write_string -( - const char *string -) -{ - while (*string != 0) - { - OLED_write_char( *string ); - ++string; - } -} - -/***************************************************************************//** - OLED_write_char() - See definition of OLED_write_char() for details of how to use this function. - */ -void OLED_write_char -( - const uint8_t data_char -) -{ - uint8_t txbuff[10]; - uint8_t i; - - for ( i = 0; i < CHARACTER_WIDTH; ++i ) - { - txbuff[i * 2] = OLED_DATA_CODE; - txbuff[(i * 2) + 1] = oled_ascii_character_set[data_char][i]; - } - MSS_I2C_write( g_p_oled_i2c, OLED_SLAVE_ADDRESS, txbuff, sizeof(txbuff), MSS_I2C_RELEASE_BUS ); - MSS_I2C_wait_complete( g_p_oled_i2c ); -} - -/***************************************************************************//** - OLED_horizontal_scroll() - See "oled.h" for details of how to use this function. - */ -void OLED_horizontal_scroll(struct oled_data * horiz_scroll) -{ - uint8_t horiz_scroll_on_off[] = - { - OLED_COMMAND_CODE, CMD_HORI_SCRL_OFF, - }; - - uint8_t horiz_scroll_setup_data[] = - { - OLED_COMMAND_CODE, CMD_HORI_SCRL, - OLED_COMMAND_CODE, SCROLL_PER_STEP, - OLED_COMMAND_CODE, SCROLL_PAGE_0, - OLED_COMMAND_CODE, SCROLL_12_FRAMES, - OLED_COMMAND_CODE, SCROLL_PAGE_1, - }; - MSS_I2C_write( g_p_oled_i2c, OLED_SLAVE_ADDRESS, horiz_scroll_on_off, sizeof(horiz_scroll_on_off), MSS_I2C_RELEASE_BUS ); - MSS_I2C_wait_complete( g_p_oled_i2c ); - - if(horiz_scroll->on_off == 1) - { - horiz_scroll_setup_data[3] = horiz_scroll->column_scrool_per_step; - horiz_scroll_setup_data[5] = horiz_scroll->start_page; - horiz_scroll_setup_data[7] = horiz_scroll->time_intrval_btw_scroll_step; - horiz_scroll_setup_data[9] = horiz_scroll->end_page; - MSS_I2C_write( g_p_oled_i2c, OLED_SLAVE_ADDRESS, horiz_scroll_setup_data, sizeof(horiz_scroll_setup_data), MSS_I2C_RELEASE_BUS ); - MSS_I2C_wait_complete( g_p_oled_i2c ); - - horiz_scroll_on_off[1] = CMD_HORI_SCRL_ON; - MSS_I2C_write( g_p_oled_i2c, OLED_SLAVE_ADDRESS, horiz_scroll_on_off, sizeof(horiz_scroll_on_off), MSS_I2C_RELEASE_BUS ); - MSS_I2C_wait_complete( g_p_oled_i2c ); - } -} - -/***************************************************************************//** - OLED_contrast() - See "oled.h" for details of how to use this function. - */ -void OLED_contrast(uint8_t color_contrast) -{ - uint8_t oled_contrast[] = - { - OLED_COMMAND_CODE, CMD_CONTRAST, - OLED_COMMAND_CODE, CONTRAST_DEFAULT, - }; - - oled_contrast[3] = color_contrast; - MSS_I2C_write( g_p_oled_i2c, OLED_SLAVE_ADDRESS, oled_contrast, sizeof(oled_contrast), MSS_I2C_RELEASE_BUS ); - MSS_I2C_wait_complete( g_p_oled_i2c ); - -} - -/***************************************************************************//** - OLED_write_data() - See "oled.h" for details of how to use this function. - */ -void OLED_write_data(struct oled_data* data, oled_no_of_line LINES) -{ - uint8_t line; - uint8_t char_offset; - char *string; - - switch(LINES) - { - - case FIRST_LINE: - { - OLED_clear_display(FIRST_LINE); - line = data->line1; - char_offset = data->char_offset1; - string = data->string1; - } - - case SECOND_LINE: - { - OLED_clear_display(SECOND_LINE); - line = data->line2; - char_offset = data->char_offset2; - string = data->string2; - } - - case BOTH_LINES: - { - OLED_clear_display(BOTH_LINES); - line = data->line1; - char_offset = data->char_offset1; - string = data->string1; - OLED_set_cursor(line,char_offset); - OLED_write_string(string); - line = data->line2; - char_offset = data->char_offset2; - string = data->string2; - } - - OLED_set_cursor(line,char_offset); - OLED_write_string(string); - OLED_contrast(data->contrast_val); - } -} diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/OLED/oled.h b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/OLED/oled.h deleted file mode 100644 index 17ab4a71c..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/OLED/oled.h +++ /dev/null @@ -1,210 +0,0 @@ -/***************************************************************************** - * (c) Copyright 2009 Actel Corporation. All rights reserved. - * - * Author : Actel Application Team - * Rev : 1.0.0.0 - * Description: Device driver for the on-board OLED for SmartFusion KITS - * API of sample basic driver for OLED display found on Actel SmartFusion - * development boards. - * This code is intended as an example of using the SmartFusion I2C driver. - * - */ -#ifndef OLED_H_ -#define OLED_H_ - -#include "i2c.h" - -#define OLED_HORIZ_SCROLL_ON 0x01 -#define OLED_HORIZ_SCROLL_OFF 0x00 -#define OLED_HORIZ_SCROLL_STEP 0x08 -#define OLED_CONTRAST_VAL 0xFF -#define OLED_START_PAGE 0x01 -#define OLED_HORIZ_SCROLL_TINVL 0x00 -#define OLED_END_PAGE 0x05 -/*-------------------------------------------------------------------------*/ -/* The oled_no_of_line type represents number of lines to be written on OLED. - FIRST LINE : The OLED cursor is set to line number 1 and only 1 line is - printed on OLED - SECOND_LINE : The OLED cursor is set to line number 2 and only 1 line is - printed on OLED - BOTH_LINES : The OLED cursor is set to line number 1 and line 1 and line 2 - are printed on OLED -*/ -typedef enum { - FIRST_LINE = 0, - SECOND_LINE, - BOTH_LINES -} oled_no_of_line; - -/*-------------------------------------------------------------------------*//** - oled_data - ------------------------------------------------------------------------------ - There is one instance of this structure for OLED data. Instances of this - structure is used to provide the data to OLED. A pointer to an instance of - the oled_data structure is passed as the parameter OLED driver functions. - */ -struct oled_data -{ - /* Represents line number, where String 1 has to be printed */ - uint8_t line1; - /* Represents character offset within the line1, from where String 1 has to be - * printed */ - uint8_t char_offset1; - /* Represents line number, where String 2 has to be printed */ - uint8_t line2; - /* Represents character offset within the line2, from where String 2 has to be - * printed */ - uint8_t char_offset2; - /* String 1 holds the data to be displayed on line 1 of OLED, It has to be - * less that 49 characters*/ - char *string1; - /* String 1 holds the data to be displayed on line 2 of OLED, It has to be - * less that 49 characters*/ - char *string2; - /* Holds the contrast value to be set for String 1 and String 2 */ - uint8_t contrast_val; - /* Represents ON or OFF for horizontal scrolling */ - uint8_t on_off; - /* Represents number of coumns scrolls per step for horizontal scroll*/ - unsigned char column_scrool_per_step; - /* Represents start page for horizontal scroll*/ - unsigned char start_page; - /* Represents time interval for horizontal scroll*/ - unsigned char time_intrval_btw_scroll_step; - /* Represents end page for horizontal scroll*/ - unsigned char end_page; - -}; -/***************************************************************************//** - The following defines can be used as parameter to the OLED_set_cursor() - function. - */ - -/***************************************************************************//** - The OLED_init function initializes the OLED display. - */ -void vOLEDInit( void ); -void OLED_init( void ); - -/***************************************************************************//** - This function(OLED_clear_display) clears the content of the display RAM - based on the LINES input. - ------------------------------------------------------------------------------ - @param oled_no_of_line: - The oled_no_of_line parameter enum that holds Number of lines. - If FIRST_LINE is passed as parameter to this function thnen, this functions - clears only First line that is 0 - If SECOND_LINE is passed as parameter to this function thnen, this functions - clears only Second line that is 1 - If BOTH_LINE is passed as parameter to this function thnen, this functions - clears entire OLED display. - */ -void OLED_clear_display( oled_no_of_line LINES ); - -/*-------------------------------------------------------------------------*//** - OLED Write data. - ------------------------------------------------------------------------------ - This function (OLED_write_data ) writes the data to OLED basedon the - parameters passed to this function. - ------------------------------------------------------------------------------ - @param data: - The data parameter is a pointer to an oled_data structure, that holds - different fields of data to be required for OLED (see the oled_data structure - definition). - - @param oled_no_of_line: - The oled_no_of_line parameter enum that holds Number of lines. - If FIRST_LINE is passed as parameter to this function thnen, this functions - wtites string 1 at FIRST LINE - If SECOND_LINE is passed as parameter to this function thnen, this functions - wtites string 1 at SECOND LINE - If BOTH_LINE is passed as parameter to this function thnen, this functions - wtites string 1 and string 2 at FIRST LINE and SECOND LINE respectively. -Example: - @code -#include "drivers/mss_watchdog/mss_watchdog.h" -#include "oled.h" -#define FIRST_CHARACTER 0 - -int main() -{ - - char *string1="SmartFusion"; - char *string2="INNOVATIVE "; - struct oled_data write_data; - - write_data.line1 = FIRST_LINE; - write_data.char_offset1 = FIRST_CHARACTER; - write_data.string1 = string1; - write_data.line2 = SECOND_LINE; - write_data.char_offset2 = FIRST_CHARACTER; - write_data.string2 = string2; - write_data.contrast_val = 0x01; - - MSS_WD_disable(); - OLED_init(); - OLED_write_data(&write_data,BOTH_LINES); - return 0; -} - @endcode - */ - -void OLED_write_data(struct oled_data * data, oled_no_of_line flag); - -/*-------------------------------------------------------------------------*//** - OLED Horizontal scrolling. - ------------------------------------------------------------------------------ - This function (OLED_horizontal_scroll ) enbles the Horizontal scrolling. - ------------------------------------------------------------------------------ - @param data: - The horiz_scroll parameter is a pointer to an oled_data structure, that holds - different fields of data to be required for OLED (see the oled_data structure - definition). -Example: - @code - -int main() -{ - - char *string1="SmartFusion"; - char *string2="INNOVATIVE "; - struct oled_data write_data; - - write_data.line1 = FIRST_LINE; - write_data.char_offset1 = FIRST_CHARACTER; - write_data.string1 = string1; - write_data.line2 = SECOND_LINE; - write_data.char_offset2 = FIRST_CHARACTER; - write_data.string2 = string2; - write_data.contrast_val = 0x01; - write_data.on_off = 0x01; - write_data.column_scrool_per_step = 0x08; - write_data.start_page = 0x01; - write_data.time_intrval_btw_scroll_step = 0x00; - write_data.end_page = 0x05; - - MSS_WD_disable(); - OLED_init(); - OLED_write_data(&write_data,BOTH_LINES); - OLED_horizontal_scroll(&write_data); - return 0; -} - @endcode - */ - -void OLED_horizontal_scroll(struct oled_data * horiz_scroll); - -/***************************************************************************//** - This function(OLED_contrast) sets ths conrtast to the data displayed on the - OLED. - ------------------------------------------------------------------------------ - @param color_contrast: - The color_contrast parameter that holds contrast value. - The color_contrast values should be in the range of 1 to 256. - */ -void OLED_contrast(uint8_t color_contrast); - -#endif - - - diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/bsp_config.h b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/bsp_config.h deleted file mode 100644 index 79f456e1a..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/bsp_config.h +++ /dev/null @@ -1,28 +0,0 @@ -/***************************************************************************** - * (c) Copyright 2009 Actel Corporation. All rights reserved. - * - * - * - * Author : Actel Application Team - * Rev : 1.0.0.0 - * Description: Configuration for the ON-BOARD peripherals for SmartFusion KITS. - * - *******************************************************************************/ -#ifndef BSP_CONFIG_H_ -#define BSP_CONFIG_H_ - -#include "i2c.h" -/* Configuration for OLED */ -#define OLED_I2C_INSTANCE &g_mss_i2c0 - -/* Configuration for the SPI Flash */ -#define SPI_FLASH_ON_SF_DEV_KIT 0 -#define SPI_FLASH_ON_SF_EVAL_KIT 1 - -#define USE_DMA_FOR_SPI_FLASH 1 -#define SPI_FLASH_DMA_CHANNEL 0 - -#endif - - - diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_ace/ace_convert.c b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_ace/ace_convert.c deleted file mode 100644 index dbe1205ba..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_ace/ace_convert.c +++ /dev/null @@ -1,831 +0,0 @@ -/******************************************************************************* - * (c) Copyright 2009 Actel Corporation. All rights reserved. - * - * SVN $Revision: 2905 $ - * SVN $Date: 2010-08-20 14:03:28 +0100 (Fri, 20 Aug 2010) $ - */ -#include "mss_ace.h" -#include "mss_ace_configurator.h" -#include "../../CMSIS/a2fxxxm3.h" -#include "../../CMSIS/mss_assert.h" -#include "../../drivers_config/mss_ace/ace_handles.h" -#include "../../drivers_config/mss_ace/ace_config.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/*-------------------------------------------------------------------------*//** - * - */ -extern ace_channel_desc_t g_ace_channel_desc_table[ACE_NB_OF_INPUT_CHANNELS]; -extern ace_adc_config_t g_ace_adc_config[ACE_NB_OF_ADC]; -extern const uint32_t g_ace_current_resistors[ACE_NB_OF_CURRENT_MONITORS]; - -/*-------------------------------------------------------------------------*//** - * - */ -static uint16_t convert_mV_to_ppe_value -( - ace_channel_handle_t channel_handle, - uint32_t voltage -); - -/*-------------------------------------------------------------------------*//** - * - */ -void ace_init_convert(void); - -/*-------------------------------------------------------------------------*//** - * - */ -#define VOLTAGE_CHANNEL 0u -#define CURRENT_CHANNEL 1u -#define TEMPERATURE_CHANNEL 2u -#define INVALID_CHANNEL 0xFFu - -static const uint8_t channel_type_lut[] = -{ - VOLTAGE_CHANNEL, /* ADC0_1P5V = 0 */ - VOLTAGE_CHANNEL, /* ABPS0 = 1 */ - VOLTAGE_CHANNEL, /* ABPS1 = 2 */ - CURRENT_CHANNEL, /* CM0 = 3 */ - TEMPERATURE_CHANNEL, /* TM0 = 4 */ - VOLTAGE_CHANNEL, /* ABPS2 = 5 */ - VOLTAGE_CHANNEL, /* ABPS3 = 6 */ - CURRENT_CHANNEL, /* CM1 = 7 */ - TEMPERATURE_CHANNEL, /* TM1 = 8 */ - VOLTAGE_CHANNEL, /* ADC0 = 9 */ - VOLTAGE_CHANNEL, /* ADC1 = 10 */ - VOLTAGE_CHANNEL, /* ADC2 = 11 */ - VOLTAGE_CHANNEL, /* ADC3 = 12 */ - INVALID_CHANNEL, - INVALID_CHANNEL, - VOLTAGE_CHANNEL, /* SDD0_IN = 15 */ - - VOLTAGE_CHANNEL, /* ADC1_1P5V = 16 */ - VOLTAGE_CHANNEL, /* ABPS4 = 17 */ - VOLTAGE_CHANNEL, /* ABPS5 = 18 */ - CURRENT_CHANNEL, /* CM2 = 19 */ - TEMPERATURE_CHANNEL, /* TM2 = 20 */ - VOLTAGE_CHANNEL, /* ABPS6 = 21 */ - VOLTAGE_CHANNEL, /* ABPS7 = 22 */ - CURRENT_CHANNEL, /* CM3 = 23 */ - TEMPERATURE_CHANNEL, /* TM3 = 24 */ - VOLTAGE_CHANNEL, /* ADC4 = 25 */ - VOLTAGE_CHANNEL, /* ADC5 = 26 */ - VOLTAGE_CHANNEL, /* ADC6 = 27 */ - VOLTAGE_CHANNEL, /* ADC7 = 28 */ - INVALID_CHANNEL, - INVALID_CHANNEL, - VOLTAGE_CHANNEL, /* SDD1_IN = 31 */ - - VOLTAGE_CHANNEL, /* ADC2_1P5V = 32 */ - VOLTAGE_CHANNEL, /* ABPS8 = 33 */ - VOLTAGE_CHANNEL, /* ABPS9 = 34 */ - CURRENT_CHANNEL, /* CM4 = 35 */ - TEMPERATURE_CHANNEL, /* TM4 = 36 */ - VOLTAGE_CHANNEL, /* ABPS10 = 37 */ - VOLTAGE_CHANNEL, /* ABPS11 = 38 */ - CURRENT_CHANNEL, /* CM5 = 39 */ - TEMPERATURE_CHANNEL, /* TM5 = 40 */ - VOLTAGE_CHANNEL, /* ADC8 = 41 */ - VOLTAGE_CHANNEL, /* ADC9 = 42 */ - VOLTAGE_CHANNEL, /* ADC10 = 43 */ - VOLTAGE_CHANNEL, /* ADC11 = 44 */ - INVALID_CHANNEL, - INVALID_CHANNEL, - VOLTAGE_CHANNEL /* SDD2_IN = 47 */ -}; - -static const uint8_t channel_quad_lut[] = -{ - 0xFFu, /* ADC0_1P5V = 0 */ - 0u, /* ABPS0 = 1 */ - 0u, /* ABPS1 = 2 */ - 0u, /* CM0 = 3 */ - 0u, /* TM0 = 4 */ - 1u, /* ABPS2 = 5 */ - 1u, /* ABPS3 = 6 */ - 1u, /* CM1 = 7 */ - 1u, /* TM1 = 8 */ - 0xFFu, /* ADC0 = 9 */ - 0xFFu, /* ADC1 = 10 */ - 0xFFu, /* ADC2 = 11 */ - 0xFFu, /* ADC3 = 12 */ - INVALID_CHANNEL, - INVALID_CHANNEL, - 0xFFu, /* SDD0_IN = 15 */ - - 0xFFu, /* ADC1_1P5V = 16 */ - 2u, /* ABPS4 = 17 */ - 2u, /* ABPS5 = 18 */ - 2u, /* CM2 = 19 */ - 2u, /* TM2 = 20 */ - 3u, /* ABPS6 = 21 */ - 3u, /* ABPS7 = 22 */ - 3u, /* CM3 = 23 */ - 3u, /* TM3 = 24 */ - 0xFFu, /* ADC4 = 25 */ - 0xFFu, /* ADC5 = 26 */ - 0xFFu, /* ADC6 = 27 */ - 0xFFu, /* ADC7 = 28 */ - INVALID_CHANNEL, - INVALID_CHANNEL, - 0xFFu, /* SDD1_IN = 31 */ - - 0xFFu, /* ADC2_1P5V = 32 */ - 4u, /* ABPS8 = 33 */ - 4u, /* ABPS9 = 34 */ - 4u, /* CM4 = 35 */ - 4u, /* TM4 = 36 */ - 5u, /* ABPS10 = 37 */ - 5u, /* ABPS11 = 38 */ - 5u, /* CM5 = 39 */ - 5u, /* TM5 = 40 */ - 0xFFu, /* ADC8 = 41 */ - 0xFFu, /* ADC9 = 42 */ - 0xFFu, /* ADC10 = 43 */ - 0xFFu, /* ADC11 = 44 */ - INVALID_CHANNEL, - INVALID_CHANNEL, - 0xFFu /* SDD2_IN = 47 */ -}; - -/*-------------------------------------------------------------------------*//** - * - */ -#define NON_ABPS_CHANNEL 0xFFu -#define MAX_NB_OF_APBS 12u - -/*-------------------------------------------------------------------------*//** - * Lookup of the quad to which an ABPS belongs - */ -static const uint8_t abps_channel_lut[] = -{ - NON_ABPS_CHANNEL, /* ADC0_1P5V = 0 */ - 0u, /* ABPS0 = 1 */ - 0u, /* ABPS1 = 2 */ - NON_ABPS_CHANNEL, /* CM0 = 3 */ - NON_ABPS_CHANNEL, /* TM0 = 4 */ - 1u, /* ABPS2 = 5 */ - 1u, /* ABPS3 = 6 */ - NON_ABPS_CHANNEL, /* CM1 = 7 */ - NON_ABPS_CHANNEL, /* TM1 = 8 */ - NON_ABPS_CHANNEL, /* ADC0 = 9 */ - NON_ABPS_CHANNEL, /* ADC1 = 10 */ - NON_ABPS_CHANNEL, /* ADC2 = 11 */ - NON_ABPS_CHANNEL, /* ADC3 = 12 */ - INVALID_CHANNEL, - INVALID_CHANNEL, - NON_ABPS_CHANNEL, /* SDD0_IN = 15 */ - - NON_ABPS_CHANNEL, /* ADC1_1P5V = 16 */ - 2u, /* ABPS4 = 17 */ - 2u, /* ABPS5 = 18 */ - NON_ABPS_CHANNEL, /* CM2 = 19 */ - NON_ABPS_CHANNEL, /* TM2 = 20 */ - 3u, /* ABPS6 = 21 */ - 3u, /* ABPS7 = 22 */ - NON_ABPS_CHANNEL, /* CM3 = 23 */ - NON_ABPS_CHANNEL, /* TM3 = 24 */ - NON_ABPS_CHANNEL, /* ADC4 = 25 */ - NON_ABPS_CHANNEL, /* ADC5 = 26 */ - NON_ABPS_CHANNEL, /* ADC6 = 27 */ - NON_ABPS_CHANNEL, /* ADC7 = 28 */ - INVALID_CHANNEL, - INVALID_CHANNEL, - NON_ABPS_CHANNEL, /* SDD1_IN = 31 */ - - NON_ABPS_CHANNEL, /* ADC2_1P5V = 32 */ - 4u, /* ABPS8 = 33 */ - 4u, /* ABPS9 = 34 */ - NON_ABPS_CHANNEL, /* CM4 = 35 */ - NON_ABPS_CHANNEL, /* TM4 = 36 */ - 5u, /* ABPS10 = 37 */ - 5u, /* ABPS11 = 38 */ - NON_ABPS_CHANNEL, /* CM5 = 39 */ - NON_ABPS_CHANNEL, /* TM5 = 40 */ - NON_ABPS_CHANNEL, /* ADC8 = 41 */ - NON_ABPS_CHANNEL, /* ADC9 = 42 */ - NON_ABPS_CHANNEL, /* ADC10 = 43 */ - NON_ABPS_CHANNEL, /* ADC11 = 44 */ - INVALID_CHANNEL, - INVALID_CHANNEL, - NON_ABPS_CHANNEL /* SDD2_IN = 47 */ -}; - -static const uint8_t abps_idx_lut[] = -{ - NON_ABPS_CHANNEL, /* ADC0_1P5V = 0 */ - 0u, /* ABPS0 = 1 */ - 1u, /* ABPS1 = 2 */ - NON_ABPS_CHANNEL, /* CM0 = 3 */ - NON_ABPS_CHANNEL, /* TM0 = 4 */ - 2u, /* ABPS2 = 5 */ - 3u, /* ABPS3 = 6 */ - NON_ABPS_CHANNEL, /* CM1 = 7 */ - NON_ABPS_CHANNEL, /* TM1 = 8 */ - NON_ABPS_CHANNEL, /* ADC0 = 9 */ - NON_ABPS_CHANNEL, /* ADC1 = 10 */ - NON_ABPS_CHANNEL, /* ADC2 = 11 */ - NON_ABPS_CHANNEL, /* ADC3 = 12 */ - INVALID_CHANNEL, - INVALID_CHANNEL, - NON_ABPS_CHANNEL, /* SDD0_IN = 15 */ - - NON_ABPS_CHANNEL, /* ADC1_1P5V = 16 */ - 4u, /* ABPS4 = 17 */ - 5u, /* ABPS5 = 18 */ - NON_ABPS_CHANNEL, /* CM2 = 19 */ - NON_ABPS_CHANNEL, /* TM2 = 20 */ - 6u, /* ABPS6 = 21 */ - 7u, /* ABPS7 = 22 */ - NON_ABPS_CHANNEL, /* CM3 = 23 */ - NON_ABPS_CHANNEL, /* TM3 = 24 */ - NON_ABPS_CHANNEL, /* ADC4 = 25 */ - NON_ABPS_CHANNEL, /* ADC5 = 26 */ - NON_ABPS_CHANNEL, /* ADC6 = 27 */ - NON_ABPS_CHANNEL, /* ADC7 = 28 */ - INVALID_CHANNEL, - INVALID_CHANNEL, - NON_ABPS_CHANNEL, /* SDD1_IN = 31 */ - - NON_ABPS_CHANNEL, /* ADC2_1P5V = 32 */ - 8u, /* ABPS8 = 33 */ - 9u, /* ABPS9 = 34 */ - NON_ABPS_CHANNEL, /* CM4 = 35 */ - NON_ABPS_CHANNEL, /* TM4 = 36 */ - 10u, /* ABPS10 = 37 */ - 11u, /* ABPS11 = 38 */ - NON_ABPS_CHANNEL, /* CM5 = 39 */ - NON_ABPS_CHANNEL, /* TM5 = 40 */ - NON_ABPS_CHANNEL, /* ADC8 = 41 */ - NON_ABPS_CHANNEL, /* ADC9 = 42 */ - NON_ABPS_CHANNEL, /* ADC10 = 43 */ - NON_ABPS_CHANNEL, /* ADC11 = 44 */ - INVALID_CHANNEL, - INVALID_CHANNEL, - NON_ABPS_CHANNEL /* SDD2_IN = 47 */ -}; - -/*-------------------------------------------------------------------------*//** - * - */ -static const int8_t apbs_gain_lut[] = -{ - 12, - 8, - 4, - 2 -}; - -static const int16_t apbs_range[] = -{ - 15360, - 10240, - 5120, - 2560 -}; - -static uint8_t g_gdec_lut[MAX_NB_OF_APBS]; -static channel_type_t channel_type_lut_h[ACE_NB_OF_INPUT_CHANNELS]; - - -/*-------------------------------------------------------------------------*//** - * - */ -channel_type_t -ACE_get_channel_type -( - ace_channel_handle_t channel_handle -) -{ - channel_type_t channel_type = VOLTAGE; - - ASSERT(channel_handle < ACE_NB_OF_INPUT_CHANNELS); - - if((int32_t)channel_handle < ACE_NB_OF_INPUT_CHANNELS) - { - channel_type = channel_type_lut_h[channel_handle]; - } - else - { - channel_type = VOLTAGE; - } - - return channel_type; -} - -/*-------------------------------------------------------------------------*//** - * - */ -uint32_t ACE_convert_adc_input_to_mV -( - ace_channel_handle_t channel_handle, - uint16_t sample_value -) -{ - uint32_t voltage; - adc_channel_id_t channel_id; - uint8_t adc_id; - - channel_id = g_ace_channel_desc_table[channel_handle].signal_id; - adc_id = (uint8_t)channel_id >> 4u; - voltage = ( g_ace_adc_config[adc_id].va_ref * (uint32_t)sample_value ) / g_ace_adc_config[adc_id].adc_resolution; - - return voltage; -} - -/*-------------------------------------------------------------------------*//** - * - */ -#define PPE_SAMPLES_RESOLUTION 4095u - -/*-------------------------------------------------------------------------*//** - * - */ -void ace_init_convert(void) -{ - uint8_t abps_idx; - int32_t channel; - uint32_t saved_pc2_ctrl; - - /* Pause the SSE PC2 while accesses to ACB from APB3 are taking place. */ - saved_pc2_ctrl = ACE->PC2_CTRL; - ACE->PC2_CTRL = 0u; - - /* Populate the g_gdec_lut look-up table. */ - for(abps_idx = 0u; abps_idx < MAX_NB_OF_APBS; ++abps_idx) - { - uint8_t quad_id; - uint8_t acb_config_byte; - uint32_t channel_is_abps2; - - quad_id = abps_idx / 2u; - acb_config_byte = ACE->ACB_DATA[quad_id].b8; - channel_is_abps2 = abps_idx & 0x01uL; - if(channel_is_abps2) - { - /* ABPS2 */ - g_gdec_lut[abps_idx] = (acb_config_byte >> 5u) & 0x03u; - } - else - { - /* ABPS1 */ - g_gdec_lut[abps_idx] = (acb_config_byte >> 1u) & 0x03u; - } - } - - /* Populate the channel_type_lut_h look-up table. */ - for(channel = 0; channel < ACE_NB_OF_INPUT_CHANNELS; ++channel) - { - uint8_t quad_id; - uint8_t acb_config_byte; - adc_channel_id_t channel_id; - channel_type_t channel_type; - - channel_id = g_ace_channel_desc_table[channel].signal_id; - quad_id = channel_quad_lut[channel_id]; - - switch (channel_type_lut[channel_id]) - { - case VOLTAGE_CHANNEL: - channel_type = VOLTAGE; - break; - - case CURRENT_CHANNEL: - ASSERT( quad_id != 0xFFu ); - acb_config_byte = ACE->ACB_DATA[quad_id].b9; - if ( acb_config_byte & 0x01u ) - { - channel_type = VOLTAGE; - } - else - { - channel_type = CURRENT; - } - break; - - case TEMPERATURE_CHANNEL: - ASSERT( quad_id != 0xFFu ); - acb_config_byte = ACE->ACB_DATA[quad_id].b10; - if ( acb_config_byte & 0x01u ) - { - channel_type = VOLTAGE; - } - else - { - channel_type = TEMPERATURE; - } - break; - - default: - ASSERT(0); - channel_type = VOLTAGE; - break; - } - - channel_type_lut_h[channel] = channel_type; - } - - /* Restore SSE PC2 operations. */ - ACE->PC2_CTRL = saved_pc2_ctrl; -} - -/*-------------------------------------------------------------------------*//** - * - */ -int32_t ACE_convert_to_mV -( - ace_channel_handle_t channel_handle, - uint16_t sample_value -) -{ - uint32_t adc_voltage; - int32_t voltage; - adc_channel_id_t channel_id; - uint8_t adc_id; - uint8_t apbs_idx; - - channel_id = g_ace_channel_desc_table[channel_handle].signal_id; - adc_id = (uint8_t)channel_id >> 4u; - adc_voltage = ( g_ace_adc_config[adc_id].va_ref * (uint32_t)sample_value ) / PPE_SAMPLES_RESOLUTION; - voltage = (int32_t)adc_voltage; - - apbs_idx = abps_idx_lut[channel_id]; - if ( abps_channel_lut[channel_id] != NON_ABPS_CHANNEL ) - { - uint8_t gdec; - gdec = g_gdec_lut[apbs_idx]; - voltage = (voltage * apbs_gain_lut[gdec]) - apbs_range[gdec]; - } - return voltage; -} - -/*-------------------------------------------------------------------------*//** - * - */ -uint32_t ACE_convert_to_mA -( - ace_channel_handle_t channel_handle, - uint16_t sample_value -) -{ - uint32_t current = 0u; - - ASSERT(channel_handle < ACE_NB_OF_INPUT_CHANNELS); - - if((int32_t)channel_handle < ACE_NB_OF_INPUT_CHANNELS) - { - adc_channel_id_t channel_id; - uint8_t current_monitor_idx; - - channel_id = g_ace_channel_desc_table[channel_handle].signal_id; - ASSERT(channel_id < sizeof(channel_type_lut)); - if(CURRENT_CHANNEL == channel_type_lut[channel_id]) - { - uint32_t resistor; - uint32_t voltage; - - /* Compute index into g_ace_current_resistors[] from the current - * channel number. This uses bit 2, 4 and 5 of the channel number - * to derive the index as follows: - * channel name : channel number : index - * CM0 : 0x03 : 0 - * CM1 : 0x07 : 1 - * CM2 : 0x13 : 2 - * CM3 : 0x17 : 3 - * CM4 : 0x23 : 4 - * CM5 : 0x27 : 5 - */ - current_monitor_idx - = (((uint8_t)channel_id & 0x04u) >> 2u) + (((uint8_t)channel_id & 0x30u) >> 3u); - - if(current_monitor_idx < (uint8_t)ACE_NB_OF_CURRENT_MONITORS) - { - /* Retrieve the current sensing external resistor value from - * the ACE configuration data generated by the ACE configurator. */ - resistor = g_ace_current_resistors[current_monitor_idx]; - - /* Compute mA current value taking into account the amplication - * factor of 50 used within the current monitor hardware. */ - voltage = ACE_convert_adc_input_to_mV(channel_handle, sample_value); - current = (voltage * (1000u / 50u)) / resistor; -; - } - } - } - - return current; -} - -/*-------------------------------------------------------------------------*//** - * - */ -uint32_t ACE_convert_to_Kelvin -( - ace_channel_handle_t channel_handle, - uint16_t sample_value -) -{ - uint32_t temperature; - uint32_t voltage; - - voltage = ACE_convert_adc_input_to_mV( channel_handle, sample_value ); - - /* Tk = (V * 10^3) / 2.5 */ - temperature = (voltage * 10u) / 25u; - - return temperature; -} - -/*-------------------------------------------------------------------------*//** - * - */ -int32_t ACE_convert_to_Celsius -( - ace_channel_handle_t channel_handle, - uint16_t sample_value -) -{ - int32_t temperature; - int32_t voltage; - - voltage = (int32_t)ACE_convert_adc_input_to_mV( channel_handle, sample_value ); - - /* Tk = (V * 10^3) / 2.5 */ - /* Tc = Tk - 273.15 */ - temperature = (voltage * 4) - 2731; - - return temperature; -} - -/*-------------------------------------------------------------------------*//** - * - */ -int32_t ACE_convert_to_Fahrenheit -( - ace_channel_handle_t channel_handle, - uint16_t sample_value -) -{ - int32_t temperature; - - temperature = (int32_t)ACE_convert_to_Kelvin( channel_handle, sample_value ); - - /* F = (K * 9/5) - 459.67 */ - temperature = ((temperature * 9) / 5) - 459; - - return temperature; -} - -/*-------------------------------------------------------------------------*//** - * - */ -const uint8_t * ACE_get_channel_name -( - ace_channel_handle_t channel_handle -) -{ - const uint8_t * p_channel_name = 0; - - if ( channel_handle < NB_OF_ACE_CHANNEL_HANDLES) - { - p_channel_name = g_ace_channel_desc_table[channel_handle].p_sz_channel_name; - } - - return p_channel_name; -} - -/*-------------------------------------------------------------------------*//** - * - */ -uint16_t ACE_convert_mV_to_adc_value -( - ace_channel_handle_t channel_handle, - uint32_t voltage -) -{ - uint16_t sample_value; - adc_channel_id_t channel_id; - uint8_t adc_id; - - channel_id = g_ace_channel_desc_table[channel_handle].signal_id; - adc_id = (uint8_t)channel_id >> 4u; - - if (voltage > g_ace_adc_config[adc_id].va_ref) - { - sample_value = g_ace_adc_config[adc_id].adc_resolution - 1u; - } - else - { - sample_value = (uint16_t)((voltage * (g_ace_adc_config[adc_id].adc_resolution - 1)) / g_ace_adc_config[adc_id].va_ref); - } - - return sample_value; -} - -/*-------------------------------------------------------------------------*//** - * - */ -static uint16_t convert_mV_to_ppe_value -( - ace_channel_handle_t channel_handle, - uint32_t voltage -) -{ - uint16_t sample_value; - adc_channel_id_t channel_id; - uint8_t adc_id; - - channel_id = g_ace_channel_desc_table[channel_handle].signal_id; - adc_id = (uint8_t)channel_id >> 4u; - - if (voltage > g_ace_adc_config[adc_id].va_ref) - { - sample_value = PPE_SAMPLES_RESOLUTION; - } - else - { - sample_value = (uint16_t)((voltage * PPE_SAMPLES_RESOLUTION) / g_ace_adc_config[adc_id].va_ref); - } - - return sample_value; -} - -#define MAX_PPE_SAMPLE_VALUE 0x0FFFu - -/*-------------------------------------------------------------------------*//** - * - */ -uint16_t ACE_convert_from_mV -( - ace_channel_handle_t channel_handle, - int32_t voltage -) -{ - uint16_t sample_value; - adc_channel_id_t channel_id; - uint8_t adc_id; - uint32_t adc_voltage; - - channel_id = g_ace_channel_desc_table[channel_handle].signal_id; - adc_id = (uint8_t)channel_id >> 4u; - - if ( abps_channel_lut[channel_id] == NON_ABPS_CHANNEL ) - { - if (voltage > 0) - { - adc_voltage = (uint32_t)voltage; - } - else - { - adc_voltage = 0u; - } - } - else - { - uint8_t apbs_idx; - uint8_t gdec; - - apbs_idx = abps_idx_lut[channel_id]; - gdec = g_gdec_lut[apbs_idx]; - voltage = voltage + apbs_range[gdec]; - if (voltage > 0) - { - adc_voltage = (uint32_t)voltage; - adc_voltage = adc_voltage / (uint8_t)apbs_gain_lut[gdec]; - } - else - { - adc_voltage = 0; - } - } - - sample_value = (uint16_t)((adc_voltage * PPE_SAMPLES_RESOLUTION) / g_ace_adc_config[adc_id].va_ref); - - if (sample_value > MAX_PPE_SAMPLE_VALUE) - { - sample_value = MAX_PPE_SAMPLE_VALUE; - } - return sample_value; -} - -/*-------------------------------------------------------------------------*//** - * - */ -uint16_t ACE_convert_from_mA -( - ace_channel_handle_t channel_handle, - uint32_t current -) -{ - uint16_t sample_value; - uint32_t voltage; - uint32_t resistor = 1u; - - voltage = current * 50u * resistor; - sample_value = convert_mV_to_ppe_value( channel_handle, voltage ); - - if (sample_value > MAX_PPE_SAMPLE_VALUE) - { - sample_value = MAX_PPE_SAMPLE_VALUE; - } - return sample_value; -} - -/*-------------------------------------------------------------------------*//** - * - */ -uint16_t ACE_convert_from_Kelvin -( - ace_channel_handle_t channel_handle, - uint32_t temperature -) -{ - uint16_t sample_value; - uint32_t voltage; - - voltage = (temperature * 25u) / 10u; - sample_value = convert_mV_to_ppe_value( channel_handle, voltage ); - - if (sample_value > MAX_PPE_SAMPLE_VALUE) - { - sample_value = MAX_PPE_SAMPLE_VALUE; - } - return sample_value; -} - -/*-------------------------------------------------------------------------*//** - * - */ -uint16_t ACE_convert_from_Celsius -( - ace_channel_handle_t channel_handle, - int32_t temperature -) -{ - uint16_t sample_value; - uint32_t voltage; - - temperature = temperature + 2731; - voltage = (uint32_t)temperature / 4u; - sample_value = convert_mV_to_ppe_value( channel_handle, voltage ); - - if (sample_value > MAX_PPE_SAMPLE_VALUE) - { - sample_value = MAX_PPE_SAMPLE_VALUE; - } - return sample_value; -} - -/*-------------------------------------------------------------------------*//** - * - */ -uint16_t ACE_convert_from_Fahrenheit -( - ace_channel_handle_t channel_handle, - int32_t temperature -) -{ - uint16_t sample_value; - uint32_t kelvin; - - temperature = temperature + 459; - kelvin = (uint32_t)temperature; - kelvin = (kelvin * 5u) / 9u; - - sample_value = ACE_convert_from_Kelvin( channel_handle, kelvin ); - - if (sample_value > MAX_PPE_SAMPLE_VALUE) - { - sample_value = MAX_PPE_SAMPLE_VALUE; - } - return sample_value; -} - -/*-------------------------------------------------------------------------*//** - * - */ -uint16_t ACE_translate_pdma_value -( - uint32_t pdma_value, - adc_channel_id_t * channel_id -) -{ - uint16_t ppe_value; - - ppe_value = (pdma_value >> 8u) & 0xFFFFu; - if ( channel_id != 0 ) - { - *channel_id = (adc_channel_id_t)((pdma_value >> 24u) & 0xFFu); - } - - return ppe_value; -} - -#ifdef __cplusplus -} -#endif - diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_ace/envm_layout.h b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_ace/envm_layout.h deleted file mode 100644 index 0081310d7..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_ace/envm_layout.h +++ /dev/null @@ -1,37 +0,0 @@ -/******************************************************************************* - * (c) Copyright 2009 Actel Corporation. All rights reserved. - * - * This file contains the addresses and size of the various blocks of data - * stored in eNVM. - * - * SVN $Revision: 1113 $ - * SVN $Date: 2009-07-01 11:11:29 +0100 (Wed, 01 Jul 2009) $ - */ -#ifndef ENVM_LAYOUT_HEADER -#define ENVM_LAYOUT_HEADER - -#ifdef __cplusplus -extern "C" { -#endif - -/*============================================================================== - * Address of the manufacturing test data. - */ -#define MTD_ADDRESS 0x60080010 - -/*============================================================================== - * MSS configuration location. - */ -#define MSS_CONFIG_ADDRESS 0x60081618 - -/*============================================================================== - * Analog configuration location and size. - */ -#define ANALOG_CONFIG_ADDRESS 0x60081600 -#define ANALOG_CONFIG_BYTE_SIZE 24 - -#ifdef __cplusplus -} -#endif - -#endif /* ENVM_LAYOUT_HEADER */ diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_ace/mss_ace.c b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_ace/mss_ace.c deleted file mode 100644 index ebd1e8dde..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_ace/mss_ace.c +++ /dev/null @@ -1,746 +0,0 @@ -/******************************************************************************* - * (c) Copyright 2009 Actel Corporation. All rights reserved. - * - * SVN $Revision: 2905 $ - * SVN $Date: 2010-08-20 14:03:28 +0100 (Fri, 20 Aug 2010) $ - */ - -#include "mss_ace.h" -#include "mtd_data.h" -#include "envm_layout.h" -#include "mss_ace_configurator.h" -#include "../../CMSIS/a2fxxxm3.h" -#include "../../CMSIS/mss_assert.h" -#include "../../drivers_config/mss_ace/ace_config.h" -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#define START_ADC_CONVERSION 0x80uL - - -/**/ -void ace_init_flags( void ); -void ace_init_convert(void); - -/*-------------------------------------------------------------------------*//** - See "mss_ace.h" for details of how to use this function. - */ -void ACE_init( void ) -{ - /* Initialize driver's internal data. */ - #if (ACE_NB_OF_PPE_FLAGS > 0) - ace_init_flags(); - #endif - - /* Initialize the data structures used by conversion functions. */ - ace_init_convert(); -} - -/*-------------------------------------------------------------------------*//** - See "mss_ace.h" for details of how to use this function. - */ -void ACE_start_adc -( - adc_channel_id_t channel_id -) -{ - ACE->ADC0_CONV_CTRL = (uint32_t)channel_id | START_ADC_CONVERSION; -} - -/*-------------------------------------------------------------------------*//** - See "mss_ace.h" for details of how to use this function. - */ -#define ADC_DATAVALID_MASK 0x00001000uL -#define ADC_RESULT_MASK 0x00000FFFuL - -static const uint32_t volatile * const adc_status_reg_lut[NB_OF_ANALOG_MODULES] = -{ - &ACE->ADC0_STATUS, - &ACE->ADC1_STATUS, - &ACE->ADC2_STATUS -}; - -uint16_t ACE_get_adc_result -( - uint8_t adc_id -) -{ - uint16_t result = 0u; - uint32_t data_valid; - - ASSERT( adc_id < NB_OF_ANALOG_MODULES ); - - if ( adc_id < (uint8_t)NB_OF_ANALOG_MODULES ) - { - do { - data_valid = *adc_status_reg_lut[adc_id] & ADC_DATAVALID_MASK; - } while ( !data_valid ); - - result = (uint16_t)(*adc_status_reg_lut[adc_id] & ADC_RESULT_MASK); - } - return result; -} - -/*============================================================================== - =========== Sigma Delta Digital to Analog Converters (SDD) Control ============ - =============================================================================*/ - -#define SDD_ENABLE_MASK 0x20uL -#define SDD_REG_SEL_MASK 0x40uL - -#define DAC0_SYNC_EN_MASK 0x10uL -#define DAC1_SYNC_EN_MASK 0x20uL -#define DAC2_SYNC_EN_MASK 0x40uL - -#define DAC0_SYNC_UPDATE 0x01uL -#define DAC1_SYNC_UPDATE 0x02uL -#define DAC2_SYNC_UPDATE 0x04uL - -/*-------------------------------------------------------------------------*//** - * - */ -static volatile uint32_t * const dac_ctrl_reg_lut[NB_OF_ANALOG_MODULES] = -{ - &ACE->DAC0_CTRL, - &ACE->DAC1_CTRL, - &ACE->DAC1_CTRL -}; - -static const uint32_t dac_enable_masks_lut[NB_OF_ANALOG_MODULES] = -{ - DAC0_SYNC_EN_MASK, - DAC1_SYNC_EN_MASK, - DAC2_SYNC_EN_MASK -}; - -static volatile uint32_t * const dac_byte01_reg_lut[NB_OF_ANALOG_MODULES] = -{ - &ACE->SSE_DAC0_BYTES01, - &ACE->SSE_DAC1_BYTES01, - &ACE->SSE_DAC2_BYTES01, -}; - -static volatile uint32_t * const dac_byte2_reg_lut[NB_OF_ANALOG_MODULES] = -{ - &ACE->DAC0_BYTE2, - &ACE->DAC1_BYTE2, - &ACE->DAC2_BYTE2 -}; - -/*------------------------------------------------------------------------------ - * Pointer to the manufacturing test data containing trimming information - * generated during manufacturing. - */ -static const mtd_data_t * const p_mtd_data = (mtd_data_t *)MTD_ADDRESS; - -/*-------------------------------------------------------------------------*//** - See "mss_ace.h" for details of how to use this function. - */ -#define OBD_MODE_MASK (uint8_t)0x01 -#define OBD_CHOPPING_MASK (uint8_t)0x02 - -void ACE_configure_sdd -( - sdd_id_t sdd_id, - sdd_resolution_t resolution, - uint8_t mode, - sdd_update_method_t sync_update -) -{ - ASSERT( sdd_id < NB_OF_SDD ); - - if ( sdd_id < NB_OF_SDD ) - { - const uint8_t sdd_2_quad_lut[NB_OF_SDD] = {0u, 2u, 4u}; - uint8_t quad_id; - uint8_t obd_mode_idx = 1u; - uint8_t chopping_mode_idx = 0u; - uint32_t saved_pc2_ctrl; - - quad_id = sdd_2_quad_lut[sdd_id]; - - /* Pause the SSE PC2 while accesses to ACB from APB3 are taking place. */ - saved_pc2_ctrl = ACE->PC2_CTRL; - ACE->PC2_CTRL = 0u; - - /* Select between voltage/current and RTZ modes.*/ - ACE->ACB_DATA[quad_id].b6 = mode; - - /* Load manufacturing generated trim value. */ - if ( (mode & OBD_MODE_MASK) > 0u ) - { - obd_mode_idx = 0u; - } - if ( (mode & OBD_CHOPPING_MASK) > 0u ) - { - chopping_mode_idx = 1u; - } - ACE->ACB_DATA[quad_id].b4 - = p_mtd_data->odb_trimming[sdd_id][obd_mode_idx][chopping_mode_idx]; - - /* Restore SSE PC2 operations since no ACB accesses should take place - * beyond this point. */ - ACE->PC2_CTRL = saved_pc2_ctrl; - - /* Set SDD resolution. */ - *dac_ctrl_reg_lut[sdd_id] = (uint32_t)resolution; - - /* Update SDD value through SSE_DACn_BYTES01. */ - *dac_ctrl_reg_lut[sdd_id] |= SDD_REG_SEL_MASK; - - /* Synchronous or individual SDD update. */ - if ( INDIVIDUAL_UPDATE == sync_update ) - { - ACE->DAC_SYNC_CTRL &= ~dac_enable_masks_lut[sdd_id]; - } - else - { - ACE->DAC_SYNC_CTRL |= dac_enable_masks_lut[sdd_id]; - } - } -} - -/*-------------------------------------------------------------------------*//** - See "mss_ace.h" for details of how to use this function. - */ -void ACE_enable_sdd -( - sdd_id_t sdd_id -) -{ - ASSERT( sdd_id < NB_OF_SDD ); - - if ( sdd_id < NB_OF_SDD ) - { - *dac_ctrl_reg_lut[sdd_id] |= SDD_ENABLE_MASK; - } -} - -/*-------------------------------------------------------------------------*//** - See "mss_ace.h" for details of how to use this function. - */ -void ACE_disable_sdd -( - sdd_id_t sdd_id -) -{ - ASSERT( sdd_id < NB_OF_SDD ); - - if ( sdd_id < NB_OF_SDD ) - { - *dac_ctrl_reg_lut[sdd_id] &= ~SDD_ENABLE_MASK; - } -} - -/*-------------------------------------------------------------------------*//** - See "mss_ace.h" for details of how to use this function. - */ -void ACE_set_sdd_value -( - sdd_id_t sdd_id, - uint32_t sdd_value -) -{ - ASSERT( sdd_id < NB_OF_SDD ); - - if ( sdd_id < NB_OF_SDD ) - { - *dac_byte2_reg_lut[sdd_id] = sdd_value >> 16; - *dac_byte01_reg_lut[sdd_id] = sdd_value; - } -} - -/*-------------------------------------------------------------------------*//** - See "mss_ace.h" for details of how to use this function. - */ -void ACE_set_sdd_value_sync -( - uint32_t sdd0_value, - uint32_t sdd1_value, - uint32_t sdd2_value -) -{ - uint32_t dac_sync_ctrl; - - dac_sync_ctrl = ACE->DAC_SYNC_CTRL; - - if ( SDD_NO_UPDATE != sdd0_value ) - { - ACE->DAC0_BYTE2 = sdd0_value >> 16; - ACE->SSE_DAC0_BYTES01 = sdd0_value; - dac_sync_ctrl |= DAC0_SYNC_UPDATE; - } - - if ( SDD_NO_UPDATE != sdd1_value ) - { - ACE->DAC1_BYTE2 = sdd1_value >> 16; - ACE->SSE_DAC1_BYTES01 = sdd1_value; - dac_sync_ctrl |= DAC1_SYNC_UPDATE; - } - - if ( SDD_NO_UPDATE != sdd2_value ) - { - ACE->DAC2_BYTE2 = sdd2_value >> 16; - ACE->DAC2_BYTE1 = sdd2_value >> 8; - ACE->SSE_DAC2_BYTES01 = sdd2_value; - dac_sync_ctrl |= DAC2_SYNC_UPDATE; - } - - ACE->DAC_SYNC_CTRL = dac_sync_ctrl; -} - -/*============================================================================== - ============================ Comparators Control ============================== - =============================================================================*/ - - /* - * SDD Analog switch mask. ACB byte 10. - * 0: TMB comparator reference voltage is an ADC direct input - * 1: TMB comparator reference voltage is one of the SDD outputs as - * selected by DAC_MUXSEL[1:0] - */ -#define B10_COMP_VREF_SW_MASK 0x20u - -/* - * Comparator reference voltage multiplexer. - * Used to select which SDD output will be used as reference voltage for TMB - * comparator. These bits are only meaningful when COMP_VREF_SW is set to 1. - */ -#define B11_DAC_MUXSEL_MASK 0x03u - -/* - * Number of bits to shift a value of type comp_hysteresis_t to get the - * hysteresis to program into ACB b9 or b10. - */ -#define HYSTERESIS_SHIFT 6u - -/* - * Mask of hysteresis bits within ACB b9 or b10. - */ -#define HYSTERESIS_MASK 0xC0u - -/* - * Mask of the comparator enable bit within ACB b9 and b10. - */ -#define COMPARATOR_ENABLE_MASK 0x10u - -/* - * Comparator ID to Signal Conditioning Block (SCB) lookup table. - * USe to find which SCB a comparator belongs to. - */ -const uint8_t comp_id_2_scb_lut[NB_OF_COMPARATORS] = -{ - 0u, /* CMP0 */ - 0u, /* CMP1 */ - 1u, /* CMP2 */ - 1u, /* CMP3 */ - 2u, /* CMP4 */ - 2u, /* CMP5 */ - 3u, /* CMP6 */ - 3u, /* CMP7 */ - 4u, /* CMP8 */ - 4u, /* CMP9 */ - 5u, /* CMP10 */ - 5u /* CMP11 */ -}; - -/*-------------------------------------------------------------------------*//** - * This function is requred to configure comparators included in temperature - * monitor blocks. - */ -void ACE_set_comp_reference -( - comparator_id_t comp_id, - comp_reference_t reference -) -{ - uint8_t scb_id; - uint32_t odd; - - odd = (uint32_t)comp_id & 0x01uL; - - ASSERT( comp_id < NB_OF_COMPARATORS ); - ASSERT( reference < NB_OF_COMP_REF ); - ASSERT( odd ); /* Only Temperature block comparators have configurable reference input. */ - - if ( (comp_id < NB_OF_COMPARATORS) && (reference < NB_OF_COMP_REF) && (odd) ) - { - uint32_t saved_pc2_ctrl; - - scb_id = comp_id_2_scb_lut[comp_id]; - - /* Pause the SSE PC2 while accesses to ACB from APB3 are taking place. */ - saved_pc2_ctrl = ACE->PC2_CTRL; - ACE->PC2_CTRL = 0u; - - if ( ADC_IN_COMP_REF == reference ) - { - ACE->ACB_DATA[scb_id].b10 &= (uint8_t)~B10_COMP_VREF_SW_MASK; - ACE->ACB_DATA[scb_id].b11 &= (uint8_t)~B11_DAC_MUXSEL_MASK; - } - else - { - ACE->ACB_DATA[scb_id].b10 &= (uint8_t)~B10_COMP_VREF_SW_MASK; - ACE->ACB_DATA[scb_id].b11 = (ACE->ACB_DATA[scb_id].b11 & (uint8_t)~B11_DAC_MUXSEL_MASK) + (uint8_t)reference; - } - - /* Restore SSE PC2 operations since no ACB accesses should take place - * beyond this point. */ - ACE->PC2_CTRL = saved_pc2_ctrl; - } -} - -/*-------------------------------------------------------------------------*//** - * Set analog block comparators hysteresis. - */ -void ACE_set_comp_hysteresis -( - comparator_id_t comp_id, - comp_hysteresis_t hysteresis -) -{ - uint8_t scb_id; - - ASSERT( comp_id < NB_OF_COMPARATORS ); - ASSERT( hysteresis < NB_OF_HYSTERESIS ); - - if ( (comp_id < NB_OF_COMPARATORS) && (hysteresis < NB_OF_HYSTERESIS) ) - { - uint32_t odd; - uint32_t saved_pc2_ctrl; - - scb_id = comp_id_2_scb_lut[comp_id]; - odd = (uint32_t)comp_id & 0x01uL; - - /* Pause the SSE PC2 while accesses to ACB from APB3 are taking place. */ - saved_pc2_ctrl = ACE->PC2_CTRL; - ACE->PC2_CTRL = 0u; - - if ( odd ) - { - /* Temperature monitor block comparator. */ - ACE->ACB_DATA[scb_id].b10 = (ACE->ACB_DATA[scb_id].b10 & HYSTERESIS_MASK) | (uint8_t)((uint8_t)hysteresis << HYSTERESIS_SHIFT); - } - else - { - /* Current monitor block comparator. */ - ACE->ACB_DATA[scb_id].b9 = (ACE->ACB_DATA[scb_id].b9 & HYSTERESIS_MASK) | (uint8_t)((uint8_t)hysteresis << HYSTERESIS_SHIFT); - } - - /* Restore SSE PC2 operations since no ACB accesses should take place - * beyond this point. */ - ACE->PC2_CTRL = saved_pc2_ctrl; - } -} - -/*-------------------------------------------------------------------------*//** - - */ -void ACE_enable_comp -( - comparator_id_t comp_id -) -{ - uint8_t scb_id; - - ASSERT( comp_id < NB_OF_COMPARATORS ); - - if ( comp_id < NB_OF_COMPARATORS ) - { - uint32_t odd; - uint32_t saved_pc2_ctrl; - - scb_id = comp_id_2_scb_lut[comp_id]; - odd = (uint32_t)comp_id & 0x01uL; - - /* Pause the SSE PC2 while accesses to ACB from APB3 are taking place. */ - saved_pc2_ctrl = ACE->PC2_CTRL; - ACE->PC2_CTRL = 0u; - - if ( odd ) - { - /* Temperature monitor block comparator. */ - ACE->ACB_DATA[scb_id].b10 |= COMPARATOR_ENABLE_MASK; - } - else - { - /* Current monitor block comparator. */ - ACE->ACB_DATA[scb_id].b9 |= COMPARATOR_ENABLE_MASK; - } - - /* Restore SSE PC2 operations since no ACB accesses should take place - * beyond this point. */ - ACE->PC2_CTRL = saved_pc2_ctrl; - } -} - -/*-------------------------------------------------------------------------*//** - * - */ -void ACE_disable_comp -( - comparator_id_t comp_id -) -{ - uint8_t scb_id; - - ASSERT( comp_id < NB_OF_COMPARATORS ); - - if ( comp_id < NB_OF_COMPARATORS ) - { - uint32_t odd; - uint32_t saved_pc2_ctrl; - - scb_id = comp_id_2_scb_lut[comp_id]; - odd = (uint32_t)comp_id & 0x01uL; - - /* Pause the SSE PC2 while accesses to ACB from APB3 are taking place. */ - saved_pc2_ctrl = ACE->PC2_CTRL; - ACE->PC2_CTRL = 0u; - - if ( odd ) - { - /* Temperature monitor block comparator. */ - ACE->ACB_DATA[scb_id].b10 &= (uint8_t)~COMPARATOR_ENABLE_MASK; - } - else - { - /* Current monitor block comparator. */ - ACE->ACB_DATA[scb_id].b9 &= (uint8_t)~COMPARATOR_ENABLE_MASK; - } - - /* Restore SSE PC2 operations since no ACB accesses should take place - * beyond this point. */ - ACE->PC2_CTRL = saved_pc2_ctrl; - } -} - -/* - * Bit mask of comparator 0 rise interrupt bit. - * Shift this value left by the value of the comparator ID to obtain the bit - * mask used enable/disable/clear rise interrupts from that comparator. - */ -#define FIRST_RISE_IRQ_MASK 0x00000800uL - -/* - * Bit mask of comparator 0 fall interrupt bit. - * Shift this value left by the value of the comparator ID to obtain the bit - * mask used enable/disable/clear fall interrupts from that comparator. - */ -#define FIRST_FALL_IRQ_MASK 0x00000001uL - -/*-------------------------------------------------------------------------*//** - See "mss_ace.h" for details of how to use this function. - */ -void ACE_enable_comp_rise_irq -( - comparator_id_t comp_id -) -{ - ASSERT( comp_id < NB_OF_COMPARATORS ); - - ACE->COMP_IRQ_EN |= (FIRST_RISE_IRQ_MASK << (uint32_t)comp_id); -} - -/*-------------------------------------------------------------------------*//** - See "mss_ace.h" for details of how to use this function. - */ -void ACE_disable_comp_rise_irq -( - comparator_id_t comp_id -) -{ - ASSERT( comp_id < NB_OF_COMPARATORS ); - - ACE->COMP_IRQ_EN &= ~(FIRST_RISE_IRQ_MASK << (uint32_t)comp_id); -} - -/*-------------------------------------------------------------------------*//** - See "mss_ace.h" for details of how to use this function. - */ -void ACE_clear_comp_rise_irq -( - comparator_id_t comp_id -) -{ - ASSERT( comp_id < NB_OF_COMPARATORS ); - - ACE->COMP_IRQ_CLR |= (FIRST_RISE_IRQ_MASK << (uint32_t)comp_id); -} - -/*-------------------------------------------------------------------------*//** - See "mss_ace.h" for details of how to use this function. - */ -void ACE_enable_comp_fall_irq -( - comparator_id_t comp_id -) -{ - ASSERT( comp_id < NB_OF_COMPARATORS ); - - ACE->COMP_IRQ_EN |= (FIRST_FALL_IRQ_MASK << (uint32_t)comp_id); -} - -/*-------------------------------------------------------------------------*//** - See "mss_ace.h" for details of how to use this function. - */ -void ACE_disable_comp_fall_irq -( - comparator_id_t comp_id -) -{ - ASSERT( comp_id < NB_OF_COMPARATORS ); - - ACE->COMP_IRQ_EN &= ~(FIRST_FALL_IRQ_MASK << (uint32_t)comp_id); -} - -/*-------------------------------------------------------------------------*//** - See "mss_ace.h" for details of how to use this function. - */ -void ACE_clear_comp_fall_irq -( - comparator_id_t comp_id -) -{ - ASSERT( comp_id < NB_OF_COMPARATORS ); - - ACE->COMP_IRQ_CLR |= (FIRST_FALL_IRQ_MASK << (uint32_t)comp_id); -} - -/*-------------------------------------------------------------------------*//** - * Returns the raw analog quad comparator status. - */ -uint32_t ACE_get_comp_status( void ) -{ - return ACE->COMP_IRQ; -} - -/*============================================================================== - ============ Reading Samples from post processing engine (PPE) ================ - =============================================================================*/ -extern ace_channel_desc_t g_ace_channel_desc_table[ACE_NB_OF_INPUT_CHANNELS]; - -/*-------------------------------------------------------------------------*//** - See "mss_ace.h" for details of how to use this function. - */ -uint32_t -ACE_get_channel_count -( - void -) -{ - return (uint32_t)ACE_NB_OF_INPUT_CHANNELS; -} - -/*-------------------------------------------------------------------------*//** - See "mss_ace.h" for details of how to use this function. - */ -ace_channel_handle_t -ACE_get_first_channel -( - void -) -{ - ace_channel_handle_t channel_handle; - - channel_handle = (ace_channel_handle_t)0; - - return channel_handle; -} - -/*-------------------------------------------------------------------------*//** - See "mss_ace.h" for details of how to use this function. - */ -ace_channel_handle_t -ACE_get_next_channel -( - ace_channel_handle_t channel_handle -) -{ - ++channel_handle; - - if ( channel_handle >= NB_OF_ACE_CHANNEL_HANDLES ) - { - channel_handle = (ace_channel_handle_t)0; - } - - return channel_handle; -} - -/*-------------------------------------------------------------------------*//** - See "mss_ace.h" for details of how to use this function. - */ -ace_channel_handle_t -ACE_get_channel_handle -( - const uint8_t * p_sz_channel_name -) -{ - uint16_t channel_idx; - ace_channel_handle_t channel_handle = INVALID_CHANNEL_HANDLE; - - for ( channel_idx = 0u; channel_idx < (uint16_t)ACE_NB_OF_INPUT_CHANNELS; ++channel_idx ) - { - if ( g_ace_channel_desc_table[channel_idx].p_sz_channel_name != 0 ) - { - int32_t diff; - diff = strncmp( (const char*)p_sz_channel_name, (const char*)g_ace_channel_desc_table[channel_idx].p_sz_channel_name, MAX_CHANNEL_NAME_LENGTH ); - if ( 0 == diff ) - { - /* channel name found. */ - channel_handle = (ace_channel_handle_t)channel_idx; - break; - } - } - } - return channel_handle; -} - -/*-------------------------------------------------------------------------*//** - See "mss_ace.h" for details of how to use this function. - */ -ace_channel_handle_t -ACE_get_input_channel_handle -( - adc_channel_id_t channel_id -) -{ - uint16_t channel_idx; - ace_channel_handle_t channel_handle = INVALID_CHANNEL_HANDLE; - - for ( channel_idx = 0u; channel_idx < (uint16_t)ACE_NB_OF_INPUT_CHANNELS; ++channel_idx ) - { - if ( g_ace_channel_desc_table[channel_idx].signal_id == channel_id ) - { - /* channel ID found. */ - channel_handle = (ace_channel_handle_t)channel_idx; - break; - } - } - return channel_handle; -} - -/*-------------------------------------------------------------------------*//** - See "mss_ace.h" for details of how to use this function. - */ -uint16_t -ACE_get_ppe_sample -( - ace_channel_handle_t channel_handle -) -{ - uint16_t sample; - uint16_t ppe_offset; - - ppe_offset = g_ace_channel_desc_table[channel_handle].signal_ppe_offset; - sample = (uint16_t)(ACE->PPE_RAM_DATA[ppe_offset] >> 16u); - - return sample; -} - -#ifdef __cplusplus -} -#endif diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_ace/mss_ace.h b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_ace/mss_ace.h deleted file mode 100644 index 2acc01b1e..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_ace/mss_ace.h +++ /dev/null @@ -1,2816 +0,0 @@ -/******************************************************************************* - * (c) Copyright 2009 Actel Corporation. All rights reserved. - * - * SmartFusion ACE driver public API. - * - * SVN $Revision: 2884 $ - * SVN $Date: 2010-08-13 16:16:59 +0100 (Fri, 13 Aug 2010) $ - */ - -/*=========================================================================*//** - @mainpage SmartFusion Analog Compute Engine driver public API. - - @section intro_sec Introduction - The SmartFusion™ microcontroller subsystem (MSS) includes the Analog Compute - Engine (ACE) which provides access to the analog capabilities of SmartFusion - from the Cortex™-M3 microcontroller. This driver provides a set of functions - for controlling the MSS ACE as part of a bare metal system where no operating - system is available. These drivers can be adapted for use as part of an - operating system, but the implementation of the adaptation layer between this - driver and the operating system's driver model is outside the scope of this - driver. The ACE includes: - • A Sample Sequencing Engine (SSE) controlling the operations of up to - three analog to digital converters (ADC) - • A Post Processing Engine (PPE) processing the analog inputs samples - generated as a result of the SSE operations - • An interface for controlling Sigma Delta DACs (SDD) - • An interface for controlling high speed comparators - - The Sample Sequencing Engine controls the sampling of the various analog - inputs based on a predefined sampling sequence without requiring intervention - from the Cortex-M3. The sampling sequence is defined using the ACE Configurator - provided as part of the MSS Configurator software tool. - Available analog inputs are: - • Active bipolar prescaler inputs (ABPS) allowing to measure voltages within - four possible ranges: - o -15V to +15V - o -10V to +10V - o -5V to +5V - o -2.5V to +2.5V - • Current inputs - • Temperature inputs - • Direct ADC inputs allowing to measure a voltage between zero volts and - the ADC’s reference voltage (VAREF) - Please refer to the Analog Front End section of the SmartFusion datasheet for - further details about analog inputs. - - The Post Processing Engine can perform the following operations on the analog - input samples generated as a result of the SSE operations: - • Calibration adjustment - • Averaging - • Threshold detection - • DMA transfer of most recent sample result to RAM or FPGA fabric - The result of analog input sampling is read from the PPE rather than directly - from the ADC. This ensures more accurate sample results thought the factory - calibration adjustment performed by the PPE. - The PPE can be set to generate interrupts when specific threshold values are - reached on analog inputs through the ACE Configurator software tool. These - thresholds can also be dynamically adjusted through the ACE driver. - - The ACE provides an interface to the Sigma Delta DACs included within the - Analog Front End (AFE). This interface allows control of the DAC’s output - value. Dynamic configuration of the DAC is also possible. - - The ACE provides an interface to the high speed comparators included within - the Analog Front End. This interface allows dynamic configuration of the - comparators and controlling interrupts based on the comparators’ state. - - @section theory_op Theory of Operation - The configuration of the ACE is set though the use of the ACE Configurator - included in the SmartFusion MSS Configurator software tool provided as part of - the Libero Integrated Design Environment tool suite. The ACE Configurator - offers an easy to use graphical method of selecting the configuration of the - following ACE characteristics: - • Analog input channels configuration - • ADC configuration - • Analog input channels sampling sequence - • Filtering applied to analog input samples - • Threshold flags configuration including hysteresis or state filtering properties - • Selection of post processing results transferred though DMA - • Sigma Delta DACs configuration - • Analog comparators configuration - The selected configuration hardware settings, SSE microcode and PPE microcode - are stored in the SmartFusion eNVM. This configuration data is used by the - system boot to configure the ACE after the system come out of reset and before - control is passed to the application. This results in the ACE being fully - operational by the time the application starts executing. - The ACE Configurator also generates a set of C files containing information - about the ACE’s configuration. These C files must be copied into the - drivers_config/mss_ace folder of you r software project for consumption by the - ACE driver. The ACE driver uses the content of these configuration files to - interact with the configured ACE hardware. - - The ACE driver functions are grouped into the following categories: - • Initialization - • Reading analog input channels values and properties - • Post Processing Engine flags - • Conversion functions between sample value and real world units - • Sample Sequencing Engine control - • Sample Sequencing Engine Interrupts Control - • Comparators control - • Sigma Delta Digital to Analog Converters (SDD) control - • Direct analog block configuration and usage - - - Initialization - The ACE driver is initialized through a call to the ACE_init() function. The - ACE_init() function must be called before any other ACE driver functions can - be called. It initializes the ACE’s internal data. - - - Reading analog input channels values and properties - The ACE driver allows retrieving the most recent post processed sample value - for each analog input. It also allows retrieving the name of the analog input - channel assigned in the ACE Configurator and whether the input channel samples - a voltage, current or temperature. - Each individual analog input channel is identified using a channel handle which - is passed as parameter to the ACE input channel driver functions. The channel - handles are design specific. The list of channel handles is generated by the - ACE Configurator based on the names given to the input signals. The channel - handles can be found in the drivers_config\mss_ace\ace_handles.h file. The - channel handle can be obtained from the channel name using the ACE_get_channel_handle() - function. It is also possible to iterate through all the channels using the - ACE_get_first_channel() and ACE_get_next_channel() functions. - - Reading analog input samples from the post processing engine is done the following function: - • uint16_t ACE_get_ppe_sample( ace_channel_handle_t channel_handle ) - - Information about an input channel can be retrieved using the following functions: - • const uint8_t * ACE_get_channel_name( ace_channel_handle_t channel_handle ) - • channel_type_t ACE_get_channel_type( ace_channel_handle_t channel_handle ) - - - Post Processing Engine flags - The SmartFusion ACE Post Processing Engine (PPE) provides the ability to monitor - the state of analog input channels and detect when certain threshold values are - crossed. Flags are raised by the PPE when these thresholds are crossed. Interrupts - can optionally be generated when flags are raised. - The flags are defined using the ACE Configurator software tool. The flag’s name, - threshold value and hysteresis settings are specified in the ACE Configurator. - The ACE Configurator generates microcode based on the selected configuration which - is executed at system run time by the PPE. The PPE microcode is loaded into the - ACE at chip boot time by the Actel provided system boot code. No ACE driver - intervention is required to load up the PPE microcode. - The ACE driver allows: - • Retrieving the current state of the post processing engine flags - • Assigning a handler function to individual flag assertions - • Assigning a handler function to flags generated based on the value of a - specific channel - • Controlling flag interrupts - • Dynamically modify a flag’s threshold value - • Dynamically modify a flag’s hysteresis - - Each individual flag is identified using a flag handle which is passed as parameter - to the ACE driver functions controlling the flags. The flag handles are design - specific. They are defined in the drivers_config\mss_ace\ace_handles.h file which - is generated by the ACE Configurator based on the names selected for the signal - and flag names. A flag handle can be obtained from the driver using the name of - the flag entered in the ACE Configurator software when the flag was created. A - flag handle can also be obtained using the functions ACE_get_channel_first_flag() - and ACE_get_channel_next_flag() when iterating through the flags associated with - an analog input channel. The functions available for retrieving flag handles are: - • ace_flag_handle_t ACE_get_flag_handle (const uint8_t *p_sz_full_flag_name) - • ace_flag_handle_t ACE_get_channel_first_flag (ace_channel_handle_t channel_handle, uint16_t *iterator) - • ace_flag_handle_t ACE_get_channel_next_flag (ace_channel_handle_t channel_handle, uint16_t *iterator) - - The current status of a flag can be polled using the following function: - • int32_t ACE_get_flag_status (ace_flag_handle_t flag_handle) - - Interrupt handlers can be registered with the ACE driver to handle individual - flags. These interrupt handlers will be called by the ACE driver when a specific - flag is raised. The flag interrupt control functions are: - • void ACE_register_flag_isr (ace_flag_handle_t flag_handle, flag_isr_t flag_isr) - • void ACE_enable_flag_irq (ace_flag_handle_t flag_handle) - • void ACE_disable_flag_irq (ace_flag_handle_t flag_handle) - • void ACE_clear_flag_irq (ace_flag_handle_t flag_handle) - - Interrupt handlers can be registered with the ACE driver to handle all flags - associated with one specific analog input channel. These interrupt handlers will - be called by the ACE driver when one of the flags, generated based on the state of - the specified analog input channel, is raised. The channel flag interrupt control - functions are: - • void ACE_register_channel_flags_isr (ace_channel_handle_t channel_handle, channel_flag_isr_t channel_flag_isr) - • void ACE_enable_channel_flags_irq (ace_channel_handle_t channel_handle) - • void ACE_disable_channel_flags_irq (ace_channel_handle_t channel_handle) - • void ACE_clear_channel_flags_irq (ace_channel_handle_t channel_handle) - - A single global interrupt handler can be registered with the ACE driver. The global - flag interrupt handler function will be called by the ACE driver when any of the - interrupt enabled flag is raised. The handle of the flag causing the interrupt and - the handle of the associated analog input channel is passed as parameter to the - registered global flag handler. - • void ACE_register_global_flags_isr (global_flag_isr_t global_flag_isr) - - The configuration of a flag can be dynamically modified using the following functions: - • void ACE_set_flag_threshold (ace_flag_handle_t flag_handle, uint16_t new_threshold) - • void ACE_set_flag_hysteresis (ace_flag_handle_t flag_handle, uint16_t adc_hysteresis) - • void ACE_set_channel_hysteresis (ace_channel_handle_t channel_handle, uint16_t adc_hysteresis) - • void ACE_set_flag_assertion( ace_flag_handle_t flag_handle, uint16_t assertion_value ) - • void ACE_set_flag_deassertion( ace_flag_handle_t flag_handle, uint16_t assertion_value ) - - Information about a flag can be retrieved using the following functions once - the flag handle is known: - • const uint8_t * ACE_get_flag_name (ace_flag_handle_t flag_handle) - • ace_channel_handle_t ACE_get_flag_channel (ace_flag_handle_t flag_handle) - - - Conversion to and from real world units - The ACE driver provides a set of conversion functions to convert sample values - read from the post processing engine into real world units: - • millivolts - • milliamps - • Degrees Kelvin - • Degrees Celsius - • Degrees Fahrenheit - Conversion functions are also available to convert from real world units into - PPE sample values. These functions are typically used for dynamically adjusting - flags threshold values. - - - Sample Sequencing Engine control - The ACE driver provides a set of functions for dynamically controlling the - Sample Sequencing Engine. These functions are only required for managing multiple - sampling sequences. The use of these functions is not required for most applications - since the SSE is already configured and running by the time the application starts. - - - Sample Sequencing Engine Interrupts Control - The ACE driver provides a set of functions for managing interrupts generated by - the Sample Sequencing Engine. These functions allow enabling, disabling and clearing - interrupt defined as part of the sampling sequence. These functions also allow - controlling interrupts generated by the ADCs. - - - Comparators control - The ACE driver provides a set of functions for managing interrupts generated based - on the change of state of the high speed comparators. Functions are also provided - to dynamically modify the comparators configuration. - - - Sigma Delta Digital to Analog Converters (SDD) control - The ACE driver provides functions for controlling the output value of the Sigma - Delta DACs (SDD). Functions are also provided for dynamically adjusting the - configuration of the SDDs. - - *//*=========================================================================*/ -#ifndef __MSS_ACE_H_ -#define __MSS_ACE_H_ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#include "ace_handles.h" - -/*-------------------------------------------------------------------------*//** - Analog to Digital Converter channel IDs. - This enumeration is used to identify the ADC's analog inputs. It caters for up - to three ADCs/Analog Modules as can be found on the larger parts of the - SmartFusion family. The channel ID numbering is designed to allow easy - extraction of the ADC number and also the individual ADC input number by simple - shifting and masking. This enumeration is used as parameter to the - ACE_get_input_channel_handle() function retrieving the channel handle associated - with a specific analog input signal. - */ -typedef enum -{ - ADC0_1P5V = 0, /*!< Analog Module 0, 1.5V/GND */ - ABPS0 = 1, /*!< Analog Module 0, Quad0 Active Bipolar Pre-Scaler input 1 */ - ABPS1 = 2, /*!< Analog Module 0, Quad0 Active Bipolar Pre-Scaler input 2 */ - CM0 = 3, /*!< Analog Module 0, Quad0 Current Monitor Block */ - TM0 = 4, /*!< Analog Module 0, Quad0 Temperature Monitor Block */ - ABPS2 = 5, /*!< Analog Module 0, Quad1 Active Bipolar Pre-Scaler input 1 */ - ABPS3 = 6, /*!< Analog Module 0, Quad1 Active Bipolar Pre-Scaler input 2 */ - CM1 = 7, /*!< Analog Module 0, Quad1 Current Monitor Block */ - TM1 = 8, /*!< Analog Module 0, Quad1 Temperature Monitor Block */ - ADC0 = 9, /*!< Analog Module 0 Direct Input 0 */ - ADC1 = 10, /*!< Analog Module 0 Direct Input 1 */ - ADC2 = 11, /*!< Analog Module 0 Direct Input 2 */ - ADC3 = 12, /*!< Analog Module 0 Direct Input 3 */ - SDD0_IN = 15, /*!< Analog Module 0 Sigma-Delta DAC output */ - - ADC1_1P5V = 16, /*!< Analog Module 1, 1.5V/GND */ - ABPS4 = 17, /*!< Analog Module 1, Quad0 Active Bipolar Pre-Scaler input 1 */ - ABPS5 = 18, /*!< Analog Module 1, Quad0 Active Bipolar Pre-Scaler input 2 */ - CM2 = 19, /*!< Analog Module 1, Quad0 Current Monitor Block */ - TM2 = 20, /*!< Analog Module 1, Quad0 Temperature Monitor Block */ - ABPS6 = 21, /*!< Analog Module 1, Quad1 Active Bipolar Pre-Scaler input 1 */ - ABPS7 = 22, /*!< Analog Module 1, Quad1 Active Bipolar Pre-Scaler input 2 */ - CM3 = 23, /*!< Analog Module 1, Quad1 Current Monitor Block */ - TM3 = 24, /*!< Analog Module 1, Quad1 Temperature Monitor Block */ - ADC4 = 25, /*!< Analog Module 1 Direct Input 0 */ - ADC5 = 26, /*!< Analog Module 1 Direct Input 1 */ - ADC6 = 27, /*!< Analog Module 1 Direct Input 2 */ - ADC7 = 28, /*!< Analog Module 1 Direct Input 3 */ - SDD1_IN = 31, /*!< Analog Module 1 Sigma-Delta DAC output */ - - ADC2_1P5V = 32, /*!< Analog Module 2, 1.5V/GND */ - ABPS8 = 33, /*!< Analog Module 2, Quad0 Active Bipolar Pre-Scaler input 1 */ - ABPS9 = 34, /*!< Analog Module 2, Quad0 Active Bipolar Pre-Scaler input 2 */ - CM4 = 35, /*!< Analog Module 2, Quad0 Current Monitor Block */ - TM4 = 36, /*!< Analog Module 2, Quad0 Temperature Monitor Block */ - ABPS10 = 37, /*!< Analog Module 2, Quad1 Active Bipolar Pre-Scaler input 1 */ - ABPS11 = 38, /*!< Analog Module 2, Quad1 Active Bipolar Pre-Scaler input 2 */ - CM5 = 39, /*!< Analog Module 2, Quad1 Current Monitor Block */ - TM5 = 40, /*!< Analog Module 2, Quad1 Temperature Monitor Block */ - ADC8 = 41, /*!< Analog Module 2 Direct Input 0 */ - ADC9 = 42, /*!< Analog Module 2 Direct Input 1 */ - ADC10 = 43, /*!< Analog Module 2 Direct Input 2 */ - ADC11 = 44, /*!< Analog Module 2 Direct Input 3 */ - SDD2_IN = 47, /*!< Analog Module 2 Sigma-Delta DAC output */ - INVALID_CHANNEL = 255 /*!< Used to indicate errors */ -} adc_channel_id_t; - - -/*-------------------------------------------------------------------------*//** - The ACE_init() function initializes the SmartFusion MSS ACE driver. It - initializes the ACE driver’s internal data structures. The ACE_init() function - must be called before any other MSS ACE driver functions can be called. - */ -void ACE_init( void ); - - -/*============================================================================== - ============== Direct Analog Block Configuration and Usage ==================== - =============================================================================*/ - -/*=========================================================================*//** - @defgroup group1 Direct Analog Block Configuration and Usage - These functions are intended for using the SmartFusion analog block hardware - without relying on the Sampling Sequence Engine or Post Processing engine. - @{ - *//*=========================================================================*/ - -/*-------------------------------------------------------------------------*//** - The ACE_start_adc() function initiates the sampling of the analog input - channel identified by the channel_id parameter. This function is provided for - test purposes. It must not be used while the Sample Sequencing Engine is - running. - - @param channel_id - The channel_id parameter identifies the analog input channel to sample. - - @return - This function does not return a value. - */ -void ACE_start_adc -( - adc_channel_id_t channel_id -); - -/*-------------------------------------------------------------------------*//** - The ACE_get_adc_result () function reads the result of the last input channel - sampling performed by the ADC identified as parameter. - - @param adc_id - The adc_id parameter identifies which of the possible three ADC to read the - sample result from. - - @return - The ACE_start_adc_sync() function returns the ADC result from the ADC - specified as parameter. - */ -uint16_t ACE_get_adc_result -( - uint8_t adc_id -); - -/** @} */ - -/*============================================================================== - =========== Sigma Delta Digital to Analog Converters (SDD) Control ============ - =============================================================================*/ -/*=========================================================================*//** - @defgroup group2 Sigma Delta Digital to Analog Converters (SDD) Control - The following functions are used to control the Sigma Delta DACs included - within the SmartFusion analog block. - @{ - *//*=========================================================================*/ - -/*-------------------------------------------------------------------------*//** - The sdd_id_t enumeration is used to identify the Sigma Delta DACs to the SDD - control functions, ACE_configure_sdd(), ACE_enable_sdd(), ACE_disable_sdd() - and ACE_set_sdd_value(). There is one SDD per analog module. - */ -typedef enum -{ - SDD0_OUT = 0, /*!< Analog Module 0 Sigma Delta DAC */ - SDD1_OUT = 1, /*!< Analog Module 1 Sigma Delta DAC */ - SDD2_OUT = 2, /*!< Analog Module 2 Sigma Delta DAC */ - NB_OF_SDD = 3 -} sdd_id_t; - -/*-------------------------------------------------------------------------*//** - The sdd_resolution_t enumeration is used as a parameter to the - ACE_configure_sdd() function to specify DAC resolution of the Sigma Delta DAC. - */ -typedef enum -{ - SDD_8_BITS = 0, - SDD_16_BITS = 4, - SDD_24_BITS = 8 -} sdd_resolution_t; - -/*-------------------------------------------------------------------------*//** - These constant definitions are used as an argument to the ACE_configure_sdd() - function to specify operating mode of the Sigma Delta DAC. - */ -#define SDD_CURRENT_MODE 1 -#define SDD_VOLTAGE_MODE 0 -#define SDD_RETURN_TO_ZERO 0 -#define SDD_NON_RTZ 2 - -/*-------------------------------------------------------------------------*//** - The sdd_update_method_t enumeration is used as a parameter to the - ACE_configure_sdd() function to specify individual or synchronous updating of - the Sigma Delta DACs. - */ -typedef enum -{ - INDIVIDUAL_UPDATE = 0, - SYNC_UPDATE = 1 -} sdd_update_method_t; - -/*-------------------------------------------------------------------------*//** - The ACE_configure_sdd() function is used to configure the operating mode of - the Sigma Delta DAC (SDD) specified as parameter. It allows selecting whether the - SDD will output a voltage or a current. A current between 0 and 256uA is - generated in current mode. A voltage between 0 and 2.56V is generated in - voltage mode. - This function also allows selecting whether Return To Zero (RTZ) mode is - enabled or not. Enabling Return To Zero mode improves linearity of the SDD - output at the detriment of accuracy. This mode should be used if linearity is - more important than accuracy. - A call to this function is not required if relying on the configuration - selected in the ACE configurator being loaded after reset by the system boot. - - @param sdd_id - The sdd_id parameter specifies which Sigma Delta DAC is configured by this - function. Allowed values are: - - SDD0_OUT - - SDD1_OUT - - SDD2_OUT - - @param resolution - The resolution parameter specifies the desired resolution of the Sigma Delta DAC. - Allowed values are: - - SDD_8_BITS - - SDD_16_BITS - - SDD_24_BITS - - @param mode - The mode parameter specifies the operating mode of the Sigma Delta DAC. It - specifies whether a current or voltage should be generated and whether - Return to Zero mode should be used. It is a logical OR of the following - defines: - - SDD_CURRENT_MODE - - SDD_VOLTAGE_MODE - - SDD_RETURN_TO_ZERO - - SDD_NON_RTZ - - @param sync_update - The sync_update parameter specifies whether the SDD output will be updated - individually though a call to ACE_set_sdd_value() or synchronously with one - or more other SDD outputs via a call to ACE_set_sdd_value_sync(). - - Example - @code - ACE_configure_sdd - ( - SDD1_OUT, - SDD_24_BITS, - SDD_VOLTAGE_MODE | SDD_RETURN_TO_ZERO, - INDIVIDUAL_UPDATE - ); - @endcode - */ -void ACE_configure_sdd -( - sdd_id_t sdd_id, - sdd_resolution_t resolution, - uint8_t mode, - sdd_update_method_t sync_update -); - -/*-------------------------------------------------------------------------*//** - The ACE_enable_sdd() function is used to enable a Sigma Delta DAC. - - @param sdd_id - The sdd_id parameter specifies the Sigma Delta DAC to enable. - */ -void ACE_enable_sdd -( - sdd_id_t sdd_id -); - -/*-------------------------------------------------------------------------*//** - The ACE_disable_sdd() function is used to disable a Sigma Delta DAC. - - @param sdd_id - The sdd_id parameter specifies the Sigma Delta DAC to disable. - */ -void ACE_disable_sdd -( - sdd_id_t sdd_id -); - -/*-------------------------------------------------------------------------*//** - The ACE_set_sdd_value() function is used to set the value of the output of - a Sigma Delta DAC. It uses the ACE's phase accumulator to generate the one bit - input bit stream into the SDD which will in turn define the voltage or - current generated at the SDD output. - The SDD output is proportional to the sdd_value passed to this function taking - the SDD resolution into account. A maximum voltage of 2.56V or a maximum - current of 256uA will be generated when the sdd_value is set the maximum value - allowed by the SDD resolution - - @param sdd_id - The sdd_id parameter specifies which Sigma Delta DAC is being set. - - @param sdd_value - The sdd_value parameter specifies the value of the Sigma Delta DAC output. - It is a fraction of SDD resolution. The voltage/current value generated from - the sdd_value paramenter can be determined using the following equation where - sdd_resolution is the resolution of the SDD as set through function - ACE_configure_sdd() and sdd_rangSDD configuration: - sdd_output = (sdd_value / sdd_resolution) * sdd_range - */ -void ACE_set_sdd_value -( - sdd_id_t sdd_id, - uint32_t sdd_value -); - - -/*-------------------------------------------------------------------------*//** - This constant definition is used as an argument to the ACE_set_sdd_value_sync() - function to specify that the output value of SDD0, or SDD1, or SDD2 should not - be modified. - */ -#define SDD_NO_UPDATE 0xFFFFFFFF - -/*-------------------------------------------------------------------------*//** - The ACE_set_sdd_value_sync() function is used to synchronize the update of - multiple Sigma Delta DAC outputs. - - @param sdd0_value - The sdd0_value parameter specifies the value that will be used to set the - output of SDD0. - The define SDD_NO_UPDATE can be used to specify that the output value of - SDD0 should not be modified. - - @param sdd1_value - The sdd1_value parameter specifies the value that will be used to set the - output of SDD1. - The define SDD_NO_UPDATE can be used to specify that the output value of - SDD1 should not be modified. - - @param sdd2_value - The sdd2_value parameter specifies the value that will be used to set the - output of SDD2. - The define SDD_NO_UPDATE can be used to specify that the output value of - SDD2 should not be modified. - - For example the code below will change the output value of SDD0 and SDD2 so - that the voltage/current generate by SDD0 and ADD2 will change at the same - time. This function call will not affect the output value of SDD1. - @code - uint32_t sdd0_value = 0x1234; - uint32_t sdd2_value = 0x5678; - ACE_set_sdd_value_sync( sdd0_value, SDD_NO_UPDATE, sdd2_value ); - @endcode - */ - -void ACE_set_sdd_value_sync -( - uint32_t sdd0_value, - uint32_t sdd1_value, - uint32_t sdd2_value -); - -/** @} */ - -/*============================================================================== - ============ Reading Samples from post processing engine (PPE) ================ - =============================================================================*/ -/*=========================================================================*//** - @defgroup group9 Reading Analog Input Channels Values and Properties - The following functions are used to access analog input channels properties - and sampled values. - @{ - *//*=========================================================================*/ - -/*-------------------------------------------------------------------------*//** - This constant returned by the ACE_get_flag_channel(), ACE_get_channel_handle() - and ACE_get_input_channel_handle() functions when the driver can’t find a - valid handle for the ADC input channel. - */ -#define INVALID_CHANNEL_HANDLE NB_OF_ACE_CHANNEL_HANDLES - -/*-------------------------------------------------------------------------*//** - The ACE_get_channel_handle() function returns the channel handle associated - with an analog input channel name. The retrieved channel handle will be - subsequently used as parameter to function ACE_get_ppe_sample() used to read - the most recent post processed sample for the analog input identified through - the channel/service name passed as argument to this function. - - @param p_sz_channel_name - The p_sz_channel_name parameter is a zero-terminated string containing the - name of the channel/service as entered in the ACE configurator. - - @return - This function returns a channel handle. This channel handle is required as - parameter to function ACE_get_ppe_sample(). - It will return INVALID_CHANNEL_HANDLE if the channel/service name is not - recognized. - - @code - uint16_t adc_result; - ace_channel_handle_t at0; - at0 = ACE_get_channel_handle("VoltageMonitorAT0"); - adc_result = ACE_get_ppe_sample( at0 ); - @endcode - */ -ace_channel_handle_t -ACE_get_channel_handle -( - const uint8_t * p_sz_channel_name -); - -/*-------------------------------------------------------------------------*//** - The ACE_get_input_channel_handle() function returns the channel handle for - the hardware analog input channel specified as parameter. - - @param channel_id - The channel_id parameter identifies a hardware analog input of the ACE. - - @return - This function returns a channel handle. This channel handle is required as - parameter to other ACE driver functions dealing with analog inputs. - It will return INVALID_CHANNEL_HANDLE if the channel ID passed as parameter - is invalid. - */ -ace_channel_handle_t -ACE_get_input_channel_handle -( - adc_channel_id_t channel_id -); - -/*-------------------------------------------------------------------------*//** - The ACE_get_ppe_sample() function is used to read the most recent post - processed sample for the analog input channel associated with the channel - handle passed as parameter. - - @param channel_handle - The channel_handle parameter identifies the analog input channel for which - this function will return the most recent ADC conversion result adjusted for - calibration and user provided coefficients as provided through the ACE - configurator. The available channel handle values can be found in the - ace_handles.h file located in the ./drivers_config/mss_ace subdirectory. The - channel handle value can also be retrieved through a call to - ACE_get_channel_handle() when the name of the channel is known, or by - iterating though all analog input channel using the ACE_get_first_channel() - and ACE_get_next_channel(). - - @return - This function returns a 16 bit value representing the adjusted value of the - ADC conversion result for the analog input channel identified by the channel - handle passed as parameter. The return value is actually a 12, 10 or 8 bits - number depending on the configuration of the ADC. - - @code - uint16_t adc_result; - ace_channel_handle_t at0; - at0 = ACE_get_channel_handle("VoltageMonitorAT0"); - adc_result = ACE_get_ppe_sample( at0 ); - @endcode - */ -uint16_t -ACE_get_ppe_sample -( - ace_channel_handle_t channel_handle -); - -/*-------------------------------------------------------------------------*//** - The ACE_get_channel_name() function provides the name of the channel - associated with the channel handle passed as parameter. The channel name is - the name used in the ACE configurator software tool when adding a service to - the ACE. - - @param channel_handle - The channel_handle parameter identifies the analog input channel for which - we want to retrieve the channel name. The available channel handle values can - be found in the ace_handles.h file located in the ./drivers_config/mss_ace - subdirectory. The channel handle value can also be retrieved through a call - to ACE_get_channel_handle() when the name of the channel is known, or by - iterating though all analog input channel using the ACE_get_first_channel() - and ACE_get_next_channel(). - - @return - This function returns a pointer to a zero-terminated string containing the - name of the channel. It returns 0 if the channel handle passed as parameter - is not recognized. - */ -const uint8_t * ACE_get_channel_name -( - ace_channel_handle_t channel_handle -); - -/*-------------------------------------------------------------------------*//** - The channel_type_t enumeration is used to identify the type of quantity - measured by an analog input channel. It is typically used to figure out the - type of conversion that must be applied to the ADC value generated from - sampling a channel in order to yield real world units such millivolts, - milliamps or degrees. - */ -typedef enum -{ - VOLTAGE, - CURRENT, - TEMPERATURE -} channel_type_t; - -/*-------------------------------------------------------------------------*//** - The ACE_get_channel_type() function returns the type of input channel of the - analog input channel identified by the channel handle passed as parameter. - This function allows determining whether the quantity measured through the ADC - is a voltage, current or temperature. - - @param channel_handle - The channel_handle parameter identifies one of the analog input channels - monitored by the ACE. The available channel handle values can be found in the - ace_handles.h file located in the .\drivers_config\mss_ace subdirectory. The - channel handle value can also be retrieved through a call to - ACE_get_channel_handle() when the name of the channel is known, or by - iterating though all analog input channel using the ACE_get_first_channel() - and ACE_get_next_channel(). - - @return - This function returns one of the following values to report the type of - quantity measure throught the channel: - - VOLTAGE - - CURRENT - - TEMPERATURE - */ -channel_type_t -ACE_get_channel_type -( - ace_channel_handle_t channel_handle -); - -/*-------------------------------------------------------------------------*//** - The ACE_get_channel_count() function returns the total number of configured - analog input channels. It is the number of channels available for use as - opposed to the theorical number of physical channels supported by the device. - - @return - The ACE_get_channel_count() function returns the total number of input - channels that were configured in the ACE configurator. - The ACE_get_channel_count() function returns 0 if no input channels were - configured. - - @code - uint32_t inc; - uint32_t nb_of_channels; - ace_channel_handle_t current_channel; - - nb_of_channels = ACE_get_channel_count(); - current_channel = ACE_get_first_channel(); - - for (inc = 0; inc < nb_of_channels; ++inc) - { - adc_result = ACE_get_ppe_sample( current_channel ); - display_value( current_channel, adc_result ); - current_channel = ACE_get_next_channel( current_channel ); - } - @endcode - */ -uint32_t -ACE_get_channel_count -( - void -); - -/*-------------------------------------------------------------------------*//** - The ACE_get_first_channel() function returns the channel handle of one of the - channel controlled by the ACE. This function is used to start iterating though - the list of analog input channels handled by the ACE. - - @return - The ACE_get_first_channel() function returns the first channel handle found - in the ACE driver's internal channel handles list or INVALID_CHANNEL_HANDLE - if there are no channels defined in the ACE configuration. - - @code - uint32_t inc; - uint32_t nb_of_channels; - ace_channel_handle_t current_channel; - - nb_of_channels = ACE_get_channel_count(); - current_channel = ACE_get_first_channel(); - - for (inc = 0; inc < nb_of_channels; ++inc) - { - adc_result = ACE_get_ppe_sample( current_channel ); - display_value( current_channel, adc_result ); - current_channel = ACE_get_next_channel( current_channel ); - } - @endcode - */ -ace_channel_handle_t -ACE_get_first_channel -( - void -); - -/*-------------------------------------------------------------------------*//** - The ACE_get_next_channel() returns the channel handle of the channel following - the one passed as parameter. This function is used to iterate through the list - of analog input channels handled by the ACE. - - @param channel_handle - The channel_handle parameter identifies from which channel the driver should - look in its channel handle list to return the next channel handle. The - channel_handle parameter would typically be the channel handle returned by a - call to ACE_get_first_channel() or a previous call to ACE_get_next_channel(). - Note: - The first call to ACE_get_next_channel() would typically use the - channel_handle returned by a previous call to ACE_get_first_channel(). The - second and subsequent calls to ACE_get_next_channel() would typically use - the channel_handle returned by a previous call to ACE_get_next_channel(). - - @return - The ACE_get_next_channel() function returns the channel handle of the channel - following the one passed as parameter or INVALID_CHANNEL_HANDLE if the end of - the channels list has been reached. - - @code - uint32_t inc; - uint32_t nb_of_channels; - ace_channel_handle_t current_channel; - - nb_of_channels = ACE_get_channel_count(); - current_channel = ACE_get_first_channel(); - - for (inc = 0; inc < nb_of_channels; ++inc) - { - adc_result = ACE_get_ppe_sample( current_channel ); - display_value( current_channel, adc_result ); - current_channel = ACE_get_next_channel( current_channel ); - } - @endcode - */ -ace_channel_handle_t -ACE_get_next_channel -( - ace_channel_handle_t channel_handle -); - - /** @} */ - -/*============================================================================== - =============================== SSE Control ================================== - =============================================================================*/ -/*=========================================================================*//** - @defgroup group3 Sample Sequencing Engine Control - Sample Sequencing Engine control. - @{ - *//*=========================================================================*/ - -/*-------------------------------------------------------------------------*//** - The Sample Sequencing Engine control functions use a parameter of this type as - a handle to identify the Sample Sequencing Engine (SSE) sequences configured - using the ACE configurator. The ACE_get_sse_seq_handle() function retrieves the - handle of the SSE sequence identified by the sequence name passed as parameter. - Note: The ACE configurator generates ACE driver configuration files into the - .\drivers_config\mss_ace folder of the firmware project. These files - contain the details of the SSE sequence handles for your ACE configuration. - The ACE driver automatically includes these files when the - .\drivers_config\mss_ace folder is present in the firmware project. - */ -typedef uint16_t sse_sequence_handle_t; - -/*-------------------------------------------------------------------------*//** - This constant is returned by the ACE_get_sse_seq_handle() function when the - driver can’t find a valid handle for the Sample Sequencing Engine (SSE) sequence. -*/ -#define INVALID_SSE_SEQ_HANDLE 0xFFFFu - -/*-------------------------------------------------------------------------*//** - The ACE_get_sse_seq_handle() function retrieves the handle of the Sample - Sequencing Engine sequence identified by the sequence name passed as parameter. - The sequence handler can then be used as parameter to other SSE sequence control - functions to identify the sequence to control. - - @param p_sz_sequence_name - The p_sz_sequence_name parameter is a pointer to a zero-terminated string - containing the name of the sampling sequence for which we want to retrieve - the handle. - - @return - The ACE_get_sse_seq_handle() function returns the handle used to identify - the sequence passed as parameter with other ACE driver sampling sequence - control functions. It returns INVALID_SSE_SEQ_HANDLE if the sequence name - passed as parameter is not recognized. - - @code - sse_sequence_handle_t sse_seq_handle; - sse_seq_handle = ACE_get_sse_seq_handle("ProcedureA"); - if ( sse_seq_handle != INVALID_SSE_SEQ_HANDLE ) - { - ACE_load_sse( sse_seq_handle ); - ACE_start_sse( sse_seq_handle ); - } - @endcode - */ -sse_sequence_handle_t -ACE_get_sse_seq_handle -( - const uint8_t * p_sz_sequence_name -); - -/*-------------------------------------------------------------------------*//** - The ACE_load_sse() function loads the ACE Sample Sequencing Engine (SSE) RAM - with the microcode implementing the sampling sequence identified by the SSE - sequence handler passed as parameter. - - @param sequence - The sequence parameter is the SSE sequence handler identifying the sampling - sequence to load into the ACE SSE. The value for this handler is retrieved - through a call to function ACE_get_sse_seq_handle(). - */ -void ACE_load_sse -( - sse_sequence_handle_t sequence -); - -/*-------------------------------------------------------------------------*//** - The ACE_start_sse() function causes the Sampling Sequence Engine (SSE) to start - executing the sequence identified by the sequence handler passed as parameter. - It causes the initiailization part of the sampling sequence to be executed - before the loop part of the sequence is started. - You must ensure that the sampling sequence has been loaded into the ACE's SSE - before calling this function. - - @param sequence - The sequence parameter is the SSE sequence handler identifying the sampling - sequence to load into the ACE SSE. The value for this handler is retrieved - through a call to function ACE_get_sse_seq_handle(). - */ -void ACE_start_sse -( - sse_sequence_handle_t sequence -); - -/*-------------------------------------------------------------------------*//** - The ACE_restart_sse() function restarts the loop part of the sampling sequence - loaded into the ACE's Sampling Sequence Engine (SSE). The sampling sequence - will be restarted from the beginning of the sequence but omiting the - intialization phase of the sequence. - This function would typically be called after stopping the sampling sequence - using the ACE_stop_see() function or with non-repeating sequences. - - @param sequence - The sequence parameter is the SSE sequence handler identifying the sampling - sequence to load into the ACE SSE. The value for this handler is retrieved - through a call to function ACE_get_sse_seq_handle(). - */ -void ACE_restart_sse -( - sse_sequence_handle_t sequence -); - -/*-------------------------------------------------------------------------*//** - The ACE_stop_sse() function stops execution of the Sample Sequencing Engine - (SSE) sequence indentified by the sequence handle passed as parameter. - - @param sequence - The sequence parameter is the SSE sequence handle identifying the sampling - sequence to load into the ACE SSE. The value for this handler is retrieved - through a call to function ACE_get_sse_seq_handle(). - */ -void ACE_stop_sse -( - sse_sequence_handle_t sequence -); - -/*-------------------------------------------------------------------------*//** - The ACE_resume_sse() function causes the Sampling Sequencing Engine (SSE) - sampling sequence identified by the sequence handle passed as parameter to - resume execution. This function is typically used to restart execution of - a sequence at the point where it was stopped through a call to ACE_stop_sse(). - - @param sequence - The sequence parameter is the SSE sequence handler identifying the sampling - sequence to load into the ACE SSE. The value for this handler is retrieved - through a call to function ACE_get_sse_seq_handle(). - */ -void ACE_resume_sse -( - sse_sequence_handle_t sequence -); - -/*-------------------------------------------------------------------------*//** - The ACE_clear_sample_pipeline() function clears the ACE hardware of samples - being processed. It clear the various stages involved in the production of - post processed samples within the ACE hardware. It is intended for use when - switching between sampling sequences and using peripheral DMA. It avoids - receiving stale samples generated as a result of a previous sampling sequence. - - The example below shows how this function can be used to ensure that no sample - generated as a result of sampling sequence sequence_a will be generated once - sampling sequence_b is started. Please note that it is important to stop the - SSE using function ACE_stop_sse() before calling ACE_clear_sample_pipeline() - to ensure sequence_a is not restarted after the sample pipeline is cleared. - @code - ACE_stop_sse(sequence_a); - ACE_clear_sample_pipeline(); - ACE_start_sse(sequence_b); - @endcode - - The example below shows how to ensure that the first sample read through PDMA - will be from the first channel in the sampling sequence. - @code - ACE_stop_sse(sequence_a); - ACE_clear_sample_pipeline(); - ACE_restart_sse(sequence_a); - PDMA_start - ( - PDMA_CHANNEL_0, - PDMA_ACE_PPE_DATAOUT, - (uint32_t)g_samples_buffer[g_pdma_buffer_idx], - SAMPLES_BUFFER_SIZE - ); - @endcode - */ -void ACE_clear_sample_pipeline(void); - -/** @} */ -/*============================================================================== - ======================== SSE Interrupts Control =============================== - =============================================================================*/ -/*=========================================================================*//** - @defgroup group4 Sample Sequencing Engine Interrupts Control - The following functions are used to control interrupts generated from the - ACE's Sample Sequencing Engine. These interrupts would typically be used to - detect when valid data is available from the ADCs controlled by the SSE or to - detect the complete or partial completion of the sampling sequence through the - insertion of SSE program counter general purpose interrupt assertion as part - of the sequence. - @{ - *//*=========================================================================*/ - -/*-------------------------------------------------------------------------*//** - The sse_irq_id_t enumeration is used to identify the Sample Sequencing Engine - (SSE) interrupt sources to the SSE interrupt control functions. - */ -typedef enum -{ - PC0_FLAG0 = 0, - PC0_FLAG1 = 1, - PC0_FLAG2 = 2, - PC0_FLAG3 = 3, - PC1_FLAG0 = 4, - PC1_FLAG1 = 5, - PC1_FLAG2 = 6, - PC1_FLAG3 = 7, - PC2_FLAG0 = 8, - PC2_FLAG1 = 9, - PC2_FLAG2 = 10, - PC2_FLAG3 = 11, - ADC0_DATAVALID = 12, - ADC1_DATAVALID = 13, - ADC2_DATAVALID = 14, - ADC0_CALIBRATION_COMPLETE = 15, - ADC1_CALIBRATION_COMPLETE = 16, - ADC2_CALIBRATION_COMPLETE = 17, - ADC0_CALIBRATION_START = 18, - ADC1_CALIBRATION_START = 19, - ADC2_CALIBRATION_START = 20, - NB_OF_SSE_FLAG_IRQS = 21 -} sse_irq_id_t; - -/*-------------------------------------------------------------------------*//** - The ACE_enable_sse_irq() function enables the Sample Sequencing Engine (SSE) - interrupt source specified as parameter to generate interrupts. - - @param sse_irq_id - The sse_irq_id parameter identifies the SSE interrupt source controlled by - this function. - */ -void ACE_enable_sse_irq -( - sse_irq_id_t sse_irq_id -); - -/*-------------------------------------------------------------------------*//** - The ACE_disable_sse_irq() function disables the Sample Sequencing Engine - (SSE) interrupt source specified as parameter from generating interrupts. - - @param sse_irq_id - The sse_irq_id parameter identifies the SSE interrupt source controlled by - this function. - */ -void ACE_disable_sse_irq -( - sse_irq_id_t sse_irq_id -); - -/*-------------------------------------------------------------------------*//** - The ACE_clear_sse_irq() function clears the Sampling Sequencing Engine (SSE) - interrupt specified as parameter. - - @param sse_irq_id - The sse_irq_id parameter identifies the SSE interrupt source controlled by - this function. - */ -void ACE_clear_sse_irq -( - sse_irq_id_t sse_irq_id -); - -/** @} */ -/*============================================================================== - ============================ Comparators Control ============================== - =============================================================================*/ -/*=========================================================================*//** - @defgroup group5 Comparators Control - The following functions are used to control the analog comparators included - in the SmartFusion analog block. - The comparator configuration functions can be used to directly configure the - comparators. Their use is only required when the ACE is not configured using - the ACE configurator software tool. - The comparator interrupt control functions are used regardless of the way the - ACE was configured to enable, disable and clear interrupts generated when the - positive input of a comparator rises above or falls below the negative input. - @{ - *//*=========================================================================*/ - -/*-------------------------------------------------------------------------*//** - The comparator_id_t enumeration is used by the comparator control functions - to identify the analog comparators included in the SmartFusion analog block. - */ -typedef enum -{ - CMP0 = 0, /*!< Analog module 0, Quad 0, CMB comparator */ - CMP1 = 1, /*!< Analog module 0, Quad 0, TMB comparator */ - CMP2 = 2, /*!< Analog module 0, Quad 1, CMB comparator */ - CMP3 = 3, /*!< Analog module 0, Quad 1, TMB comparator */ - CMP4 = 4, /*!< Analog module 1, Quad 0, CMB comparator */ - CMP5 = 5, /*!< Analog module 1, Quad 0, TMB comparator */ - CMP6 = 6, /*!< Analog module 1, Quad 1, CMB comparator */ - CMP7 = 7, /*!< Analog module 1, Quad 1, TMB comparator */ - CMP8 = 8, /*!< Analog module 2, Quad 0, CMB comparator */ - CMP9 = 9, /*!< Analog module 2, Quad 0, TMB comparator */ - CMP10 = 10, /*!< Analog module 2, Quad 1, CMB comparator */ - CMP11 = 11, /*!< Analog module 2, Quad 1, TMB comparator */ - NB_OF_COMPARATORS = 12 -} comparator_id_t; - -/*-------------------------------------------------------------------------*//** - The comp_hysteresis_t enumeration is used by the ACE_set_comp_hysteresis() - function to set the hysteresis of the analog comparators included in the - SmartFusion analog block. This enumeration provides the allowed values of the - hysteresis parameter of the ACE_set_comp_hysteresis() function. - */ -typedef enum -{ - NO_HYSTERESIS = 0, - HYSTERESIS_10_MV = 1, - HYSTERESIS_30_MV = 2, - HYSTERESIS_100_MV = 3, - NB_OF_HYSTERESIS = 4 -} comp_hysteresis_t ; - -/*-------------------------------------------------------------------------*//** - The comp_reference_t enumeration is used by the ACE_set_comp_reference() - function to select the reference input of the odd numbered analog comparators - included in the SmartFusion analog block. This enumeration provides the allowed - values of the reference parameter of the ACE_set_comp_reference () function. - */ -typedef enum -{ - SDD0_COMP_REF = 0, - SDD1_COMP_REF = 1, - SDD2_COMP_REF = 2, - ADC_IN_COMP_REF = 3, - NB_OF_COMP_REF = 4 -} comp_reference_t; - -/*-------------------------------------------------------------------------*//** - The ACE_set_comp_reference() function is used to select the reference input - of a temperature monitor block comparator. The reference input of a temperature - monitor can be an ADC direct input or one of the SDD's output. - - @param comp_id - The comp_id parameter specifies the comparator for which to select the - reference input. Since only temperature monitor block comparators have a - selectable reference input, allowed values are: - - CMP1 - - CMP3 - - CMP5 - - CMP7 - - CMP9 - - CMP11 - - @param reference - The reference parameter specify the signal that will be used as reference - by the comparator. Allowed values are: - - SDD0_COMP_REF - - SDD1_COMP_REF - - SDD2_COMP_REF - - ADC_IN_COMP_REF - */ -void ACE_set_comp_reference -( - comparator_id_t comp_id, - comp_reference_t reference -); - -/*-------------------------------------------------------------------------*//** - The ACE_set_comp_hysteresis() function is used to set the hysteresis of a - comparator. There are four possible hystereris settings: no hysteresis, - +/-10mV, +/-30mV or +/-100mV. - - @param comp_id - The comp_id parameter specifies the comparator for which this function will - set the hyteresis. - - @param hysteresis - The hysteresis parameter specifies the hysteresis that will be applied to - the comparator's input. Allowed values are: - - NO_HYSTERESIS - - HYSTERESIS_10_MV - - HYSTERESIS_30_MV - - HYSTERESIS_100_MV - - */ -void ACE_set_comp_hysteresis -( - comparator_id_t comp_id, - comp_hysteresis_t hysteresis -); - -/*-------------------------------------------------------------------------*//** - The ACE_enable_comp() function is used to enable the comparator specified as - parameter. - - @param comp_id - The comp_id parameter specifies which comparator will be enabled by a call - to this function. - */ -void ACE_enable_comp -( - comparator_id_t comp_id -); - -/*-------------------------------------------------------------------------*//** - The ACE_disable_comp() function is used to disable the comparator specified as - parameter. - - @param comp_id - The comp_id parameter specifies which comparator will be disabled by a call - to this function. - */ -void ACE_disable_comp -( - comparator_id_t comp_id -); - -/*-------------------------------------------------------------------------*//** - The ACE_enable_comp_rise_irq() function is used to enable interrupts to be - generated when the positive input of the comparator specified as parameter - rises above the negative input of the comparator. - The function prototypes for the comparator rise interrupt service routines are: - - void ACE_Comp0_Rise_IRQHandler( void ); - - void ACE_Comp1_Rise_IRQHandler( void ); - - void ACE_Comp2_Rise_IRQHandler( void ); - - void ACE_Comp3_Rise_IRQHandler( void ); - - void ACE_Comp4_Rise_IRQHandler( void ); - - void ACE_Comp5_Rise_IRQHandler( void ); - - void ACE_Comp6_Rise_IRQHandler( void ); - - void ACE_Comp7_Rise_IRQHandler( void ); - - void ACE_Comp8_Rise_IRQHandler( void ); - - void ACE_Comp9_Rise_IRQHandler( void ); - - void ACE_Comp10_Rise_IRQHandler( void ); - - void ACE_Comp11_Rise_IRQHandler( void ); - - @param comp_id - The comp_id parameter specifies which comparator will be enabled to generate - rising interrupts. - */ -void ACE_enable_comp_rise_irq -( - comparator_id_t comp_id -); - -/*-------------------------------------------------------------------------*//** - The ACE_disable_comp_rise_irq() function is used to disable interrupts from - being generated when the positive input of the comparator specified as parameter - rises above the negative input of the comparator. - - @param comp_id - The comp_id parameter specifies which comparator will be disabled from - generating rising interrupts. - */ -void ACE_disable_comp_rise_irq -( - comparator_id_t comp_id -); - -/*-------------------------------------------------------------------------*//** - The ACE_clear_comp_rise_irq() function is used to clear rise interrupts. This - function is typically called as part of the rise interrupt service routine. - - @param comp_id - The comp_id parameter specifies the comparator for which to clear the rise - interrupt. - - Example: - @code - void ACE_Comp1_Rise_IRQHandler( void ) - { - process_rise_irq(); - ACE_clear_comp_rise_irq( CMP1 ); - NVIC_ClearPendingIRQ( ACE_Comp1_Rise_IRQn ); - } - @endcode - */ -void ACE_clear_comp_rise_irq -( - comparator_id_t comp_id -); - -/*-------------------------------------------------------------------------*//** - The ACE_enable_comp_fall_irq() function is used to enable interrupts to be - generated when the positive input of the comparator specified as parameter - falls below the negative input of the comparator. - The function prototypes for the comparator fall interrupt service routines are: - - void ACE_Comp0_Fall_IRQHandler( void ); - - void ACE_Comp1_Fall_IRQHandler( void ); - - void ACE_Comp2_Fall_IRQHandler( void ); - - void ACE_Comp3_Fall_IRQHandler( void ); - - void ACE_Comp4_Fall_IRQHandler( void ); - - void ACE_Comp5_Fall_IRQHandler( void ); - - void ACE_Comp6_Fall_IRQHandler( void ); - - void ACE_Comp7_Fall_IRQHandler( void ); - - void ACE_Comp8_Fall_IRQHandler( void ); - - void ACE_Comp9_Fall_IRQHandler( void ); - - void ACE_Comp10_Fall_IRQHandler( void ); - - void ACE_Comp11_Fall_IRQHandler( void ); - - @param comp_id - The comp_id parameter specifies which comparator will be enabled to generate - fall interrupts. - */ -void ACE_enable_comp_fall_irq -( - comparator_id_t comp_id -); - -/*-------------------------------------------------------------------------*//** - The ACE_disable_comp_fall_irq() function is used to disable interrupts from - being generated when the positive input of the comparator specified as parameter - falls below the negative input of the comparator. - - @param comp_id - The comp_id parameter specifies which comparator will be disabled from - generating fall interrupts. - */ -void ACE_disable_comp_fall_irq -( - comparator_id_t comp_id -); - -/*-------------------------------------------------------------------------*//** - The ACE_clear_comp_fall_irq() function is used to clear fall interrupts. This - function is typically called as part of the fall interrupt service routine. - - @param comp_id - The comp_id parameter specifies the comparator for which to clear the fall - interrupt. - - Example: - @code - void ACE_Comp1_Fall_IRQHandler( void ) - { - process_fall_irq(); - ACE_clear_comp_fall_irq( CMP1 ); - NVIC_ClearPendingIRQ( ACE_Comp1_Fall_IRQn ); - } - @endcode - */ -void ACE_clear_comp_fall_irq -( - comparator_id_t comp_id -); - -/*-------------------------------------------------------------------------*//** - The ACE_get_comp_status() function returns the current comparator interrupt - status. It returns a 32 bit value indicating which comparators experienced a - fall and/or rise event. These status bits can be cleared using the - ACE_clear_comp_rise_irq() and ACE_clear_comp_fall_irq() functions. - - @return - The return value is a 32 bit numnber where bits 0 to 11 indicate which - comparator experienced a fall event and bits 21 to 23 indicate which - comparator experienced a rise event. - */ -uint32_t ACE_get_comp_status( void ); - -/** @} */ - -/*============================================================================== - ========================== Controlling Thresholds ============================= - =============================================================================*/ -/*=========================================================================*//** - @defgroup group8 Controlling Flags Thresholds - The following functions are used to dynamically control Post Processing Engine - (PPE) flags threshholds. - @{ - *//*=========================================================================*/ - -/*-------------------------------------------------------------------------*//** - The ACE_is_hysteresis_flag() function indicates if an hysteresis is applied - to the analog input sample value when determining the state of the flag - identified as parameter. - - @param flag_handle - The flag_handle parameter identifies one of the flags generated based on the - value of an analog input channel. The available flag handle values can be - found in the ace_handles.h file located in the .\drivers_config\mss_ace - subdirectory. The flag handle value can also be retrieved through a call to - ACE_get_flag_handle() when the name of the flag is known, or by iterating - though all flags associated with an analog input channel using the - ACE_get_channel_first_flag() and ACE_get_channel_next_flag(). - - @return - This function returns the value one if a hysteresis is applied to the channel - sample values as part of determining the state of the flag identified as - parameter. It returns zero if no hysteresis is applied. - */ -uint32_t ACE_is_hysteresis_flag -( - ace_flag_handle_t flag_handle -); - -/*-------------------------------------------------------------------------*//** - The ACE_is_under_flag() function indicates whether a flag is triggered when the - monitored analog input falls below the flag's threshold level or above the - flag's threshold level. - - @param flag_handle - The flag_handle parameter identifies one of the flags generated based on the - value of an analog input channel. The available flag handle values can be - found in the ace_handles.h file located in the .\drivers_config\mss_ace - subdirectory. The flag handle value can also be retrieved through a call to - ACE_get_flag_handle() when the name of the flag is known, or by iterating - though all flags associated with an analog input channel using the - ACE_get_channel_first_flag() and ACE_get_channel_next_flag(). - - @return - This function returns the value one if the flag identified as parameter - triggers as a result of the monitored input falling below the flag's - threshold value. - It returns zero if the flag triggers as a result of the monitored input - exceeding the flag's threshold value. - */ -uint32_t ACE_is_under_flag -( - ace_flag_handle_t flag_handle -); - -/*-------------------------------------------------------------------------*//** - The ACE_set_flag_threshold() function is used to adjust the threshold for a - specific post processing engine generated flag. The flag is identified through - the name selected in the ACE configurator software tool. - This function will set a new flag’s threshold value while preserving the - hysteresis specified at configuration time or through a call to - ACE_set_flag_hysteresis(). For example, requesting a 1 volt threshold for an - over flag configured with a 100 millivolts hysteresis will result in the flag - being asserted when the voltage reaches 1.1 volts and deasserted when the - voltage falls below 0.9 volt. - - @param flag_handle - The flag_handle parameter identifies one of the flags generated based on the - value of an analog input channel. The available flag handle values can be - found in the ace_handles.h file located in the ./drivers_config/mss_ace - subdirectory. The flag handle value can also be retrieved through a call to - ACE_get_flag_handle() when the name of the flag is known, or by iterating - though all flags associated with an analog input channel using the - ACE_get_channel_first_flag() and ACE_get_channel_next_flag(). - - @param new_threshold - The new_threshold parameter specifies the new threshold level that must be - reached in order for the flag to be raised. The value of this parameter is - the sample value resulting from a post processing engine conversion of the - desired analog input threshold level. - - Example: - The function below sets the threshold of the flag specified as parameter to - 1 volt. - @code - void set_threshold_to_1V - ( - ace_flag_handle_t flag_handle - ) - { - uint16_t new_threshold; - ace_channel_handle_t channel_handle; - - channel_handle = ACE_get_flag_channel(flag_handle); - new_threshold = ACE_convert_from_mV(channel_handle, 1000); - ACE_set_flag_threshold(flag_handle, new_threshold); - } - @endcode - */ -void ACE_set_flag_threshold -( - ace_flag_handle_t flag_handle, - uint16_t new_threshold -); - -/*-------------------------------------------------------------------------*//** - The ACE_set_flag_hysteresis() function modifies the hysteresis applied to the - analog input channel sample values used to generate the flag specified as - parameter. - - @param flag_handle - The flag_handle parameter identifies one of the flags generated based on the - value of an analog input channel. The available flag handle values can be - found in the ace_handles.h file located in the .\drivers_config\mss_ace - subdirectory. The flag handle value can also be retrieved through a call to - ACE_get_flag_handle() when the name of the flag is known, or by iterating - though all flags associated with an analog input channel using the - ACE_get_channel_first_flag() and ACE_get_channel_next_flag(). - - @param adc_hysteresis - The adc_hysteresis parameter is the value to add and subtract to the - threshold value to obtain the hysteresis high and low limits triggering flag - assertion and deassertion. The adc_hysteresis parameter is a PPE conversion - result offset. - - Example - The example below demonstrates the use of the ACE_set_flag_hysteresis() - function to set a 100mV hysteresis on the OVER_1V flag of the VoltageMonitor - input channel. VoltageMonitor and OVER_1V are names selected in the ACE - configurator for one of the analog inputs and one of the flags associated - with that input. - The method used to compute the adc_hysteresis value will work for all - input types including ABPS inputs where zero Volts is not equivalent to a - PPE sample value of zero. - - @code - ace_channel_handle_t channel_handle; - ace_flag_handle_t flag_handle; - uint16_t adc_hysteresis; - uint16_t upper_limit; - uint16_t lower_limit; - - channel_handle = VoltageMonitor; - flag_handle = VoltageMonitor_OVER_1V; - - upper_limit = ACE_convert_from_mV(channel_handle, 100); - lower_limit = ACE_convert_from_mV(channel_handle, 0); - - if (upper_limit > lower_limit) - { - adc_hysteresis = upper_limit - lower_limit; - } - else - { - adc_hysteresis = lower_limit - upper_limit; - } - - ACE_set_flag_hysteresis(flag_handle, adc_hysteresis); - @endcode - */ -void -ACE_set_flag_hysteresis -( - ace_flag_handle_t flag_handle, - uint16_t adc_hysteresis -); - -/*-------------------------------------------------------------------------*//** - The ACE_set_flag_assertion() function sets the PPE sample value that must be - reached in order for the flag specified as parameter to become asserted. It is - used in conjunction with the ACE_set_flag_deassertion() function as an - alternative to the ACE_set_flag_threshold() and ACE_set_flag_hysteresis() - functions to set the hysteresis window of an hysteresis flag. - The ACE_set_flag_assertion() and ACE_set_flag_deassertion() functions are - intended to be used where the threshold value is not centered within the - hysteresis window. They allow specifying the actual threshold values at which - the flag will be asserted and deasserted. - - @param flag_handle - The flag_handle parameter identifies one of the flags generated based on the - value of an analog input channel. The available flag handle values can be - found in the ace_handles.h file located in the .\drivers_config\mss_ace - subdirectory. The flag handle value can also be retrieved through a call to - ACE_get_flag_handle() when the name of the flag is known, or by iterating - though all flags associated with an analog input channel using the - ACE_get_channel_first_flag() and ACE_get_channel_next_flag(). - - @param assertion_value - The assertion_value parameter is the Post Processing Engine sample value that - must be reached for the flag, identified through the flag_handle parameter, - to become asserted. The PPE sample value is always a 12 bits sample value - regardless of the configuration of the ADC used to sample the input channel. - */ -void ACE_set_flag_assertion -( - ace_flag_handle_t flag_handle, - uint16_t assertion_value -); - -/*-------------------------------------------------------------------------*//** - The ACE_set_flag_deassertion() function sets the PPE sample value that must be - reached in order for the flag specified as parameter to become deasserted. It - is used in conjunction with the ACE_set_flag_assertion() function as an - alternative to the ACE_set_flag_threshold() and ACE_set_flag_hysteresis() - functions to set the hysteresis window of an hysteresis flag. - The ACE_set_flag_assertion() and ACE_set_flag_deassertion() functions are - intended to be used where the threshold value is not centered within the - hysteresis window. They allow specifying the actual threshold values at which - the flag will be asserted and deasserted. - - @param flag_handle - The flag_handle parameter identifies one of the flags generated based on the - value of an analog input channel. The available flag handle values can be - found in the ace_handles.h file located in the .\drivers_config\mss_ace - subdirectory. The flag handle value can also be retrieved through a call to - ACE_get_flag_handle() when the name of the flag is known, or by iterating - though all flags associated with an analog input channel using the - ACE_get_channel_first_flag() and ACE_get_channel_next_flag(). - - @param assertion_value - The assertion_value parameter is the Post Processing Engine sample value - that must be reached for the flag, identified through the flag_handle - parameter, to become de-asserted. The PPE sample value is always a 12 bits - sample value regardless of the configuration of the ADC used to sample the - input channel. - */ -void ACE_set_flag_deassertion -( - ace_flag_handle_t flag_handle, - uint16_t assertion_value -); - -/*-------------------------------------------------------------------------*//** - The ACE_set_channel_hysteresis() function sets the hysteresis applied to - analog input channel sample values when generating flags. It sets the - hysteresis for all flags generated based on the value of the analog input - channel identified by the channel handle passed as first parameter. - - @param channel_handle - The channel_handle parameter identifies one of the analog input channels - monitored by the ACE. The available channel handle values can be found in - the ace_handles.h file located in the .\drivers_config\mss_ace subdirectory. - The channel handle value can also be retrieved through a call to - ACE_get_channel_handle() when the name of the channel is known, or by - iterating though all analog input channel using the ACE_get_first_channel() - and ACE_get_next_channel(). - - @param adc_hysteresis - The adc_hysteresis parameter is the value to add and subtract to the - threshold value to obtain the hysteresis high and low limits triggering flag - assertion and deassertion. The adc_hysteresis parameter is a PPE conversion - result offset. - */ -void -ACE_set_channel_hysteresis -( - ace_channel_handle_t channel_handle, - uint16_t adc_hysteresis -); - - -/** @} */ -/*-------------------------------------------------------------------------*//** - * - */ - -/*============================================================================== - ================================== Flags ====================================== - =============================================================================*/ -/*=========================================================================*//** - @defgroup group6 Post Processing Engine Flags - The following functions are used to control interrupts generated by the ACE's - Post Processing Engine (PPE) when monitored inputs rise above or fall below - thresholds specified in the ACE configurator software tool. - @{ - *//*=========================================================================*/ - - /*-------------------------------------------------------------------------*//** - These constant definitions are the return values of the ACE_get_flag_status() - function. They specify the status of the Post Processing Engine (PPE) flag. - */ -#define UNKNOWN_FLAG (int32_t)(-1) -#define FLAG_ASSERTED (int32_t)1 -#define FLAG_NOT_ASSERTED (int32_t)0 - -/*-------------------------------------------------------------------------*//** - This constant is returned by the ACE_get_flag_handle function when the driver - can’t find a valid handle for the Post Processing Engine (PPE) flag. - */ -#define INVALID_FLAG_HANDLE NB_OF_ACE_FLAG_HANDLES - -/*-------------------------------------------------------------------------*//** - The ACE_get_flag_handle() function returns the handle of the flag identified - by the flag name passed as parameter. The flag handle obtained through this - function is then used as parameter to other flag control functions to identify - which flag is to be controlled by the called function. - - @param p_sz_full_flag_name - The p_sz_full_flag_name parameter is a pointer to a zero-terminated string - holding the name of the flag as specified in the ACE configurator. The full - name of a flag contains both the name of the monitored input channel and the - name of the flag generated based the level of that input separated by ":". - For example, the full name for the flag called "CriticalOver" raised when - the input channel called "MainSupply" reaches a critical level would be - named "MainSupply:CriticalOver". - - @return - The ACE_get_flag_handle() returns the flag handle associated with the flag - name passed as parameter. It returns INVALID_FLAG_HANDLE when the flag name - is invalid and not recognized by the ACE driver. - */ -ace_flag_handle_t -ACE_get_flag_handle -( - const uint8_t * p_sz_full_flag_name -); - -/*-------------------------------------------------------------------------*//** - The ACE_get_flag_status() function returns the current status of the flag - specified as parameter. The flag is identified through the name specified in - the ACE configurator when the flag was created. - - @param flag_handle - The flag_handle parameter identifies one of the flags generated based on the - value of an analog input channel. The available flag handle values can be - found in the ace_handles.h file located in the .\drivers_config\mss_ace - subdirectory. The flag handle value can also be retrieved through a call to - ACE_get_flag_handle() when the name of the flag is known, or by iterating - though all flags associated with an analog input channel using the - ACE_get_channel_first_flag() and ACE_get_channel_next_flag(). - - @return - The ACE_get_flag_status() function returns one of the following values - depending on the current status of the flag: - - FLAG_ASSERTED if the flag is raised/asserted. - - FLAG_NOT_ASSERTED if the flag is not asserted. - - UNKNOWN_FLAG if the flag name is not recognized by the driver. -*/ -int32_t -ACE_get_flag_status -( - ace_flag_handle_t flag_handle -); - -/*-------------------------------------------------------------------------*//** - The ACE_enable_channel_flags_irq() function enables all flags generated based - on the value of the analog input channel passed as parameter to generate - interrupts. Flags used to detect that thresholds are crossed by the value - sampled on the analog input channel identified as parameter are enabled to - generate interrupts by this function. It enables flag interrupts both at the - ACE PEE flag and Cortex-M3 interrupt controller levels. - - @param channel_handle - The channel_handle parameter identifies one of the analog input channels - monitored by the ACE. The available channel handle values can be found in the - ace_handles.h file located in the ./drivers_config/mss_ace subdirectory. The - channel handle value can also be retrieved through a call to - ACE_get_channel_handle() when the name of the channel is known, or by - iterating though all analog input channel using the ACE_get_first_channel() - and ACE_get_next_channel(). - */ -void ACE_enable_channel_flags_irq -( - ace_channel_handle_t channel_handle -); - -/*-------------------------------------------------------------------------*//** - The ACE_disable_channel_flags_irq() function disables all flags generated - based on the value of the analog input channel passed as parameter to generate - interrupts. Flags used to detect that thresholds are crossed by the value - sampled on the analog input channel identified as parameter are disabled from - generating interrupts by this function. The interrupt is only disabled at the - ACE PPE flag level in order to avoid disabling other cahnnel's flag interrupts - which may happen to use the same ACE threshold interrupt line. - - @param channel_handle - The channel_handle parameter identifies one of the analog input channels - monitored by the ACE. The available channel handle values can be found in the - ace_handles.h file located in the ./drivers_config/mss_ace subdirectory. The - channel handle value can also be retrieved through a call to - ACE_get_channel_handle() when the name of the channel is known, or by - iterating though all analog input channel using the ACE_get_first_channel() - and ACE_get_next_channel(). - */ -void ACE_disable_channel_flags_irq -( - ace_channel_handle_t channel_handle -); - -/*-------------------------------------------------------------------------*//** - The ACE_clear_channel_flags_irq() function clears all interrupts generated by - flags associated with the analog input channel passed as parameter. Interrupt - generated by flags used to detect that thresholds are crossed by the value - sampled on the analog input channel identified as parameter are cleared by - this function. This function would typically be used before enabling the flag - interrupts in order to ignore past events. - - @param channel_handle - The channel_handle parameter identifies one of the analog input channels - monitored by the ACE. The available channel handle values can be found in the - ace_handles.h file located in the ./drivers_config/mss_ace subdirectory. The - channel handle value can also be retrieved through a call to - ACE_get_channel_handle() when the name of the channel is known, or by - iterating though all analog input channel using the ACE_get_first_channel() - and ACE_get_next_channel(). - */ -void ACE_clear_channel_flags_irq -( - ace_channel_handle_t channel_handle -); - -/*-------------------------------------------------------------------------*//** - The ACE_enable_flag_irq() function enables the ACE post processing engine (PPE) - generated flags specified as parameter to interrupt the Cortex-M3 processor. - It enables flag interrupts both at the ACE PPE flag and Cortex-M3 interrupt - controller levels. - - @param flag_handle - The flag_handle parameter identifies one of the flags generated based on the - value of an analog input channel. The available flag handle values can be - found in the ace_handles.h file located in the .\drivers_config\mss_ace - subdirectory. The flag handle value can also be retrieved through a call to - ACE_get_flag_handle() when the name of the flag is known, or by iterating - though all flags associated with an analog input channel using the - ACE_get_channel_first_flag() and ACE_get_channel_next_flag(). - */ -void ACE_enable_flag_irq -( - ace_flag_handle_t flag_handle -); - -/*-------------------------------------------------------------------------*//** - The ACE_disable_flag_irq() function disables ACE post processing engine (PPE) - generated flags from interrupting the Cortex-M3. The interrupt is only - disabled at the ACE PPE flag level in order to avoid disabling other flags - interrupts which may happen to use the same ACE threshold interrupt line. - - @param flag_handle - The flag_handle parameter identifies one of the flags generated based on the - value of an analog input channel. The available flag handle values can be - found in the ace_handles.h file located in the .\drivers_config\mss_ace - subdirectory. The flag handle value can also be retrieved through a call to - ACE_get_flag_handle() when the name of the flag is known, or by iterating - though all flags associated with an analog input channel using the - ACE_get_channel_first_flag() and ACE_get_channel_next_flag(). - */ -void ACE_disable_flag_irq -( - ace_flag_handle_t flag_handle -); - -/*-------------------------------------------------------------------------*//** - The ACE_clear_flag_irq() function clears the interrupt for the flag specified - as parameter. This function would typically be used before enabling the flag - interrupt in order to ignore past events. - - @param flag_handle - The flag_handle parameter identifies one of the flags generated based on the - value of an analog input channel. The available flag handle values can be - found in the ace_handles.h file located in the .\drivers_config\mss_ace - subdirectory. The flag handle value can also be retrieved through a call to - ACE_get_flag_handle() when the name of the flag is known, or by iterating - though all flags associated with an analog input channel using the - ACE_get_channel_first_flag() and ACE_get_channel_next_flag(). - */ -void ACE_clear_flag_irq -( - ace_flag_handle_t flag_handle -); - -/*-------------------------------------------------------------------------*//** - The ACE_get_flag_name() function returns the name of the flag identified by - the flag handle passed as parameter. - - @param flag_handle - The flag_handle parameter identifies one of the flags generated based on the - value of an analog input channel. The available flag handle values can be - found in the ace_handles.h file located in the .\drivers_config\mss_ace - subdirectory. The flag handle value can also be retrieved through a call to - ACE_get_flag_handle() when the name of the flag is known, or by iterating - though all flags associated with an analog input channel using the - ACE_get_channel_first_flag() and ACE_get_channel_next_flag(). - - @return - The ACE_get_flag_name() function returns a pointer to a zero-terminated - string containing the name of the flag identified by the flag handle passed - as parameter. It returns 0 if the flag handle passed as parameter is invalid. - */ -const uint8_t * -ACE_get_flag_name -( - ace_flag_handle_t flag_handle -); - -/*-------------------------------------------------------------------------*//** - The ACE_get_flag_channel() function returns the handle of the channel - monitored in order to generate the flag identified by the flag handle passed - as parameter. - - @param flag_handle - The flag_handle parameter identifies one of the flags generated based on the - value of an analog input channel. The available flag handle values can be - found in the ace_handles.h file located in the .\drivers_config\mss_ace - subdirectory. The flag handle value can also be retrieved through a call to - ACE_get_flag_handle() when the name of the flag is known, or by iterating - though all flags associated with an analog input channel using the - ACE_get_channel_first_flag() and ACE_get_channel_next_flag(). - - @return - The ACE_get_flag_channel() function returns a channel handle identifying the - analog input channel monitored by the flag passed as parameter. - */ -ace_channel_handle_t -ACE_get_flag_channel -( - ace_flag_handle_t flag_handle -); - -/*-------------------------------------------------------------------------*//** - The ACE_get_channel_flag_count() function returns the total number of flags - associated with the input channel specified by the channel_handle parameter. - It indicates how many flags are generated based on the value of the specified - analog input channel. - - @param channel_handle - The channel_handle parameter identifies one of the analog input channels - monitored by the ACE. The available channel handle values can be found in - the ace_handles.h file located in the .\drivers_config\mss_ace subdirectory. - The channel handle value can also be retrieved through a call to - ACE_get_channel_handle() when the name of the channel is known, or by - iterating though all analog input channel using the ACE_get_first_channel() - and ACE_get_next_channel(). - - @return - The ACE_get_channel_flag_count() function returns the total number of flags - that are generated based on the value of the specified analog input channel. - The ACE_get_channel_flag_count() function returns 0 if no input channels were - configured. - - Example - @code - uint32_t inc; - uint32_t nb_of_flags; - uint16_t flag_iterator; - ace_flag_handle_t current_flag; - ace_channel_handle_t channel_handle; - - nb_of_flags = ACE_get_channel_flag_count(channel_handle); - current_flag = ACE_get_channel_first_flag(channel_handle, &flag_iterator); - - for (inc = 0; inc < nb_of_flags; ++inc) - { - current_flag = ACE_get_channel_next_flag(channel_handle, &flag_iterator); - display_flag_properties(current_flag); - } - @endcode - */ -uint32_t -ACE_get_channel_flag_count -( - ace_channel_handle_t channel_handle -); - -/*-------------------------------------------------------------------------*//** - The ACE_get_channel_first_flag() function retrieves the handle of the first - flag associated with the analog input channel identified by the channel handle - passed as parameter. It also initialises the value of the iterator variable - pointed to by the second function parameter. The iterator can be used - subsequently as a parameter to the ACE_get_channel_next_flag() function to - iterate through all flags associated with the analog input channel. - - @param channel_handle - The channel_handle parameter identifies one of the analog input channels - monitored by the ACE. The available channel handle values can be found in the - ace_handles.h file located in the ./drivers_config/mss_ace subdirectory. - The channel handle value can also be retrieved through a call to - ACE_get_channel_handle() when the name of the channel is known, or by - iterating though all analog input channel using the ACE_get_first_channel() - and ACE_get_next_channel(). - - @param iterator - The iterator parameter is a pointer to a uint16_t iterator variable. The - value of the iterator variable will be set by the ACE_get_channel_first_flag() - functions so that it can be used in subsequent calls to - ACE_get_channel_next_flag() to keep track of the current location in the - list of flags associated with the analog input channel. - - @return - The ACE_get_channel_first_flag() function returns a flag handle identifying - one of the flags generated based on the value of the analog input channel - identified by the channel_handle parameter. It returns INVALID_FLAG_HANDLE - if no flags are generated based on the analog input channel input or if the - channel handle is invalid. - - Example - @code - uint32_t inc; - uint32_t nb_of_flags; - uint16_t flag_iterator; - ace_flag_handle_t current_flag; - ace_channel_handle_t channel_handle; - - nb_of_flags = ACE_get_channel_flag_count(channel_handle); - current_flag = ACE_get_channel_first_flag(channel_handle, &flag_iterator); - - for (inc = 0; inc < nb_of_flags; ++inc) - { - current_flag = ACE_get_channel_next_flag(channel_handle, &flag_iterator); - display_flag_properties(current_flag); - } - @endcode - */ -ace_flag_handle_t -ACE_get_channel_first_flag -( - ace_channel_handle_t channel_handle, - uint16_t * iterator -); - -/*-------------------------------------------------------------------------*//** - The ACE_get_channel_next_flag() function retrieves the handle of a flag - associated with the analog input channel identified by the channel handle - passed as parameter. The retrieved flag handle is the next one in the driver's - internal flag list based on the iterator parameter. - - @param channel_handle - The channel_handle parameter identifies one of the analog input channels - monitored by the ACE. The available channel handle values can be found in the - ace_handles.h file located in the .\drivers_config\mss_ace subdirectory. - The channel handle value can also be retrieved through a call to - ACE_get_channel_handle() when the name of the channel is known, or by - iterating though all analog input channel using the ACE_get_first_channel() - and ACE_get_next_channel(). - - @param iterator - The iterator parameter is a pointer to a uint16_t iterator variable. The value - of the iterator variable will be set by the ACE_get_channel_first_flag() - functions so that it can be used in subsequent calls to - ACE_get_channel_next_flag() to keep track of the current location in the list - of flags associated with the analog input channel. - - Example - @code - uint32_t inc; - uint32_t nb_of_flags; - uint16_t flag_iterator; - ace_flag_handle_t current_flag; - ace_channel_handle_t channel_handle; - - nb_of_flags = ACE_get_channel_flag_count(channel_handle); - current_flag = ACE_get_channel_first_flag(channel_handle, &flag_iterator); - - for (inc = 0; inc < nb_of_flags; ++inc) - { - current_flag = ACE_get_channel_next_flag(channel_handle, &flag_iterator); - display_flag_properties(current_flag); - } - @endcode - */ -ace_flag_handle_t -ACE_get_channel_next_flag -( - ace_channel_handle_t channel_handle, - uint16_t * iterator -); - -/*-------------------------------------------------------------------------*//** - This defines the function prototype that must be followed by MSS ACE Post - Processing Engine (PPE) flag handler functions. These functions are registered - with the ACE driver and associated with a particular flag through the - ACE_register_flag_isr() function. The ACE driver will call the flag handler - function when the associated flag is raised. - - Declaring and Implementing PPE Flag Handler Functions - PPE flag handler functions should follow the following prototype: - void my_flag_handler ( ace_flag_handle_t flag_handle ); - The actual name of the PPE flag handler is unimportant. You can use any name of - your choice for the PPE flag handler. - The flag_handle parameter passes the handle of the raised flag to the flag - handler function. - */ -typedef void (*flag_isr_t)( ace_flag_handle_t flag_handle ); - -/*-------------------------------------------------------------------------*//** - The ACE_register_flag_isr() function is used to register a handler function - with the ACE driver. The registered function will be called by the ACE driver - when the associated flag is raised by the ACE post processing engine. - - @param flag_handle - The flag_handle parameter identifies one of the flags generated based on the - value of an analog input channel. The available flag handle values can be - found in the ace_handles.h file located in the .\drivers_config\mss_ace - subdirectory. The flag handle value can also be retrieved through a call to - ACE_get_flag_handle() when the name of the flag is known, or by iterating - though all flags associated with an analog input channel using the - ACE_get_channel_first_flag() and ACE_get_channel_next_flag(). - - @param flag_isr - The flag_isr parameter is a pointer to a flag handler function with the - following prototype: - void handler_function_name(ace_flag_handle_t flag_handle) - The flag handler function is called by the ACE driver as part of the relevant - post processing engine flag interrupt service routine. It does not need to - handle flag interrupt clearing as this is done by the ACE driver. - - - @code - void my_critical_handler( void ); - - void system_init( void ) - { - ace_flag_handle_t flag_handle; - - flag_handle = ACE_get_flag_handle( "MainSupply:CriticalLevel" ); - ACE_register_flag_isr( flag_handle, my_critical_handler ); - ACE_enable_flag_irq( flag_handle ); - } - - void my_critical_handler( ace_flag_handle_t flag_handle ) - { - panic( flag_handle ); - } - - @endcode - */ -void ACE_register_flag_isr -( - ace_flag_handle_t flag_handle, - flag_isr_t flag_isr -); - -/*-------------------------------------------------------------------------*//** - This defines the function prototype that must be followed by MSS ACE Post - Processing Engine (PPE) channel flag handler functions. These functions are - registered with the ACE driver and associated with a particular ADC input - channel through the ACE_register_channel_flags_isr() function. The ACE driver - will call the channel flags handler function when one of the flags for the - associated ADC input channel is raised. - - Declaring and Implementing PPE Channel Flag Handler Functions - PPE channel flag handler functions should follow the following prototype: - void my_channel_flag_handler ( ace_flag_handle_t flag_handle ); - The actual name of the PPE channel flag handler is unimportant. You can use - any name of your choice for the PPE channel flag handler. The flag_handle - parameter passes the handle of the raised flag to the channel flag handler - function. - */ -typedef void (*channel_flag_isr_t)( ace_flag_handle_t flag_handle ); - -/*-------------------------------------------------------------------------*//** - The ACE_register_channel_flags_isr() function is used to register a flag - interrupt handler function with the ACE driver. The registered interrupt - handler will be called by the ACE driver when one of the flag generated based - on the value of the analog input channel identified by the channel handle - passed as parameter is asserted. - - @param channel_handle - The channel_handle parameter identifies one of the analog input channels - monitored by the ACE. The available channel handle values can be found in the - ace_handles.h file located in the ./drivers_config/mss_ace subdirectory. The - channel handle value can also be retrieved through a call to - ACE_get_channel_handle() when the name of the channel is known, or by - iterating though all analog input channel using the ACE_get_first_channel() - and ACE_get_next_channel(). - - @param channel_flag_isr - The channel_flag_isr parameter is pointer to a function taking a flag handle - as parameter. - void handler_function_name(ace_flag_handle_t flag_handle) - The flag handler function is called by the ACE driver as part of the relevant - post processing engine flag interrupt service routine. It does not need to - handle flag interrupt clearing as this is done by the ACE driver. - - Example - The example below demonstrates the use of the ACE_register_channel_flags_isr() - function in a system where the ACE is configured to have an analog input - channels named "MainSupply" with one flag named "Critical" generated based - on the value of "MainSupply" channel. The names "MainSupply" and "Critical" - were user selected in the ACE configurator. - @code - void main_supply_handler (ace_flag_handle_t flag_handle); - - void system_init(void) - { - ACE_register_channel_flag_isr(MainSupply, main_supply_handler); - ACE_enable_channel_flags_irq(MainSupply); - } - - void main_supply_handler (ace_flag_handle_t flag_handle) - { - if (MainSupply_Critical == flag_handle) - { - panic(flag_handle); - } - } - - @endcode -*/ -void ACE_register_channel_flags_isr -( - ace_channel_handle_t channel_handle, - channel_flag_isr_t channel_flag_isr -); - -/*-------------------------------------------------------------------------*//** - This defines the function prototype that must be followed by MSS ACE Post - Processing Engine (PPE) global flag handler functions. These functions are - registered with the ACE driver through the ACE_register_global_flags_isr() - function. The ACE driver will call the global flags handler function when any - flag for any ADC input channel is raised. - - Declaring and Implementing Global Flag Handler Functions - PPE global flag handler functions should follow the following prototype: - void my_global_flag_handler( - ace_flag_handle_t flag_handle, - ace_channel_handle_t channel_handle - ); - The actual name of the PPE global flag handler is unimportant. You can use any - name of your choice for the PPE global flag handler. The flag_handle parameter - passes the handle of the raised flag to the global flag handler function. The - channel_handle parameter passes the handle of the channel for which the flag - was raised to the global flag handler function. - - */ -typedef void (*global_flag_isr_t)( ace_flag_handle_t flag_handle, ace_channel_handle_t channel_handle ); - -/*-------------------------------------------------------------------------*//** - The ACE_register_global_flags_isr() function is used to register a global - flag handler function with the ACE driver. The registered global handler will - be called when any flag interrupt is generated. - - @param global_flag_isr - The global_flag_isr parameter is a pointer to a function taking a flag - handle and channel handle as parameter. - */ -void ACE_register_global_flags_isr -( - global_flag_isr_t global_flag_isr -); - -/** @} */ - -/*=========================================================================*//** - @defgroup group11 Conversion Functions - The following functions are used to convert an ADC sample value to a real - world unit. - @{ - *//*=========================================================================*/ - -/*-------------------------------------------------------------------------*//** - The ACE_convert_adc_input_to_mV() function converts an ADC sample value into - the value in millivolts of the voltage seen at ADC input. It does not account - for prescaling taking place before the ADC hardware input. - - @param channel_handle - The channel_handle parameter identifies one of the analog input channels - monitored by the ACE. The available channel handle values can be found in the - ace_handles.h file located in the ./drivers_config/mss_ace subdirectory. The - channel handle value can also be retrieved through a call to - ACE_get_channel_handle() when the name of the channel is known, or by - iterating though all analog input channel using the ACE_get_first_channel() - and ACE_get_next_channel(). - - @param sample_value - The sample_value parameter is the result of an analog to digital conversion. - - @return - The ACE_convert_adc_input_to_mV() returns the number of millivolts derived - from the ADC sample value passed as parameter. - */ -uint32_t ACE_convert_adc_input_to_mV -( - ace_channel_handle_t channel_handle, - uint16_t sample_value -); - -/*-------------------------------------------------------------------------*//** - The ACE_convert_to_mV() function converts a PPE sample value into milli-Volts. - It handles prescaling adjusments based on ACE configuration for ABPS inputs. - - @param channel_handle - The channel_handle parameter identifies one of the analog input channels - monitored by the ACE. The available channel handle values can be found in the - ace_handles.h file located in the ./drivers_config/mss_ace subdirectory. The - channel handle value can also be retrieved through a call to - ACE_get_channel_handle() when the name of the channel is known, or by - iterating though all analog input channel using the ACE_get_first_channel() - and ACE_get_next_channel(). - - @param sample_value - The sample_value parameter is the result of an analog to digital conversion. - - @return - The ACE_convert_to_mV() returns the number of millivolts derived from the - PPE sample value passed as parameter. The returned value can be either - positive or negative since prescaling is accounted for in the conversion. - */ -int32_t ACE_convert_to_mV -( - ace_channel_handle_t channel_handle, - uint16_t sample_value -); - -/*-------------------------------------------------------------------------*//** - The ACE_convert_to_mA() function converts a PPE sample value into milli-Amps. - The result of the conversion is only meaningful if the PPE sample value - results from the conversion of a current monitor input. - - @param channel_handle - The channel_handle parameter identifies one of the analog input channels - monitored by the ACE. The available channel handle values can be found in the - ace_handles.h file located in the ./drivers_config/mss_ace subdirectory. The - channel handle value can also be retrieved through a call to - ACE_get_channel_handle() when the name of the channel is known, or by - iterating though all analog input channel using the ACE_get_first_channel() - and ACE_get_next_channel(). - - @param sample_value - The sample_value parameter is the result of an analog to digital conversion - of the voltage generated by a current monitor analog block. - - @return - The ACE_convert_to_mA() returns the number of milliamps derived from the - PPE sample value passed as parameter. - */ -uint32_t ACE_convert_to_mA -( - ace_channel_handle_t channel_handle, - uint16_t sample_value -); - -/*-------------------------------------------------------------------------*//** - The ACE_convert_to_Kelvin() function converts a PPE sample value into degrees - Kelvin. The result of the conversion is only meaningful if the PPE sample value - results from the conversion of a temperature monitor input. - - @param channel_handle - The channel_handle parameter identifies one of the analog input channels - monitored by the ACE. The available channel handle values can be found in the - ace_handles.h file located in the ./drivers_config/mss_ace subdirectory. The - channel handle value can also be retrieved through a call to - ACE_get_channel_handle() when the name of the channel is known, or by - iterating though all analog input channel using the ACE_get_first_channel() - and ACE_get_next_channel(). - - @param sample_value - The sample_value parameter is the result of an analog to digital conversion - of the voltage generated by a temperature monitor analog block. - - @return - The ACE_convert_to_Kelvin() returns the number of degrees Kelvin derived - from the PPE sample value passed as parameter. - */ -uint32_t ACE_convert_to_Kelvin -( - ace_channel_handle_t channel_handle, - uint16_t sample_value -); - -/*-------------------------------------------------------------------------*//** - The ACE_convert_to_Celsius() function converts a PPE sample value into tenths - of degrees Celsius. The result of the conversion is only meaningful if the PPE - sample value results from the conversion of a temperature monitor input. - - @param channel_handle - The channel_handle parameter identifies one of the analog input channels - monitored by the ACE. The available channel handle values can be found in the - ace_handles.h file located in the ./drivers_config/mss_ace subdirectory. The - channel handle value can also be retrieved through a call to - ACE_get_channel_handle() when the name of the channel is known, or by - iterating though all analog input channel using the ACE_get_first_channel() - and ACE_get_next_channel(). - - @param sample_value - The sample_value parameter is the result of an analog to digital conversion - of the voltage generated by a temperature monitor analog block. - - @return - The ACE_convert_to_Celsius() returns the number of tenths of degrees Celsius - derived from the PPE sample value passed as parameter. - */ -int32_t ACE_convert_to_Celsius -( - ace_channel_handle_t channel_handle, - uint16_t sample_value -); - -/*-------------------------------------------------------------------------*//** - The ACE_convert_to_Fahrenheit() function converts a PPE sample value into - degrees Fahrenheit. The result of the conversion is only meaningful if the PPE - sample value results from the conversion of a temperature monitor input. - - @param channel_handle - The channel_handle parameter identifies one of the analog input channels - monitored by the ACE. The available channel handle values can be found in the - ace_handles.h file located in the ./drivers_config/mss_ace subdirectory. The - channel handle value can also be retrieved through a call to - ACE_get_channel_handle() when the name of the channel is known, or by - iterating though all analog input channel using the ACE_get_first_channel() - and ACE_get_next_channel(). - - @param sample_value - The sample_value parameter is the result of an analog to digital conversion - of the voltage generated by a temperature monitor analog block. - - @return - The ACE_convert_to_Fahrenheit() returns the number of degrees Fahrenheit - derived from the PPE sample value passed as parameter. - */ -int32_t ACE_convert_to_Fahrenheit -( - ace_channel_handle_t channel_handle, - uint16_t sample_value -); - -/*-------------------------------------------------------------------------*//** - The ACE_convert_mV_to_adc_value() function converts a voltage value given in - milli-Volts into the ADC sample value that would result from sampling this - voltage value on the analog input channel specified as parameter. - This function is intended for use when directly controlling the ADC, not when - using samples read from the PPE. It does not account for prescaling taking - place before the ADC hardware input. - - @param channel_handle - The channel_handle parameter identifies one of the analog input channels - monitored by the ACE. The available channel handle values can be found in the - ace_handles.h file located in the ./drivers_config/mss_ace subdirectory. The - channel handle value can also be retrieved through a call to - ACE_get_channel_handle() when the name of the channel is known, or by - iterating though all analog input channel using the ACE_get_first_channel() - and ACE_get_next_channel(). - - @param voltage - The voltage parameter is the milli-Volts voltage value for which we want this - function to return the associated ADC sample result value. - - @return - The ACE_convert_mV_to_adc_value() returns the ADC sample value that would be - produced if the analog input channel identified by channel_handle was set to - the voltage value passed as second parameter. - */ -uint16_t ACE_convert_mV_to_adc_value -( - ace_channel_handle_t channel_handle, - uint32_t voltage -); - -/*-------------------------------------------------------------------------*//** - The ACE_convert_from_mV() function converts a voltage value given in - milli-Volts into the PPE sample value that would result from sampling this - voltage value on the analog input channel specified as parameter. - This function handles prescaling adjusments based on ACE configuration for - ABPS inputs. - - @param channel_handle - The channel_handle parameter identifies one of the analog input channels - monitored by the ACE. The available channel handle values can be found in the - ace_handles.h file located in the ./drivers_config/mss_ace subdirectory. The - channel handle value can also be retrieved through a call to - ACE_get_channel_handle() when the name of the channel is known, or by - iterating though all analog input channel using the ACE_get_first_channel() - and ACE_get_next_channel(). - - @param voltage - The voltage parameter is the milli-Volts voltage value for which we want this - function to return the associated PPE sample result value. - - @return - The ACE_convert_from_mV() returns the PPE sample value that would be produced - if the analog input channel identified by channel_handle was set to the - voltage value passed as second parameter. - */ -uint16_t ACE_convert_from_mV -( - ace_channel_handle_t channel_handle, - int32_t voltage -); - -/*-------------------------------------------------------------------------*//** - The ACE_convert_from_mA() function converts a current value given in - milli-Amps into the PPE sample value that would result from sampling this - current value on the analog input channel specified as parameter. - The result of the conversion is only meaningful if the analog input channel - specified as parameter is configured as a current monitoring channel. - - @param channel_handle - The channel_handle parameter identifies one of the analog input channels - monitored by the ACE. The available channel handle values can be found in the - ace_handles.h file located in the ./drivers_config/mss_ace subdirectory. The - channel handle value can also be retrieved through a call to - ACE_get_channel_handle() when the name of the channel is known, or by - iterating though all analog input channel using the ACE_get_first_channel() - and ACE_get_next_channel(). - - @param current - The current parameter is the milli-Amps current value for which we want this - function to return the associated PPE sample result value. - - @return - The ACE_convert_from_mA() returns the PPE sample value that would be produced - if the analog input channel identified by channel_handle was set to the - current value passed as second parameter. - */ -uint16_t ACE_convert_from_mA -( - ace_channel_handle_t channel_handle, - uint32_t current -); - -/*-------------------------------------------------------------------------*//** - The ACE_convert_from_Kelvin() function converts a temperature value given in - degrees Kelvin into the PPE sample value that would result from sampling this - temperature value on the analog input channel specified as parameter. - The result of the conversion is only meaningful if the analog input channel - specified as parameter is configured as a temperature monitoring channel. - - @param channel_handle - The channel_handle parameter identifies one of the analog input channels - monitored by the ACE. The available channel handle values can be found in the - ace_handles.h file located in the ./drivers_config/mss_ace subdirectory. The - channel handle value can also be retrieved through a call to - ACE_get_channel_handle() when the name of the channel is known, or by - iterating though all analog input channel using the ACE_get_first_channel() - and ACE_get_next_channel(). - - @param temperature - The temperature parameter is the degrees Kelvin temperature value for which - we want this function to return the associated PPE sample result value. - - @return - The ACE_convert_from_Kelvin() returns the PPE sample value that would be - produced if the analog input channel identified by channel_handle was set to - the temperature value passed as second parameter. - */ -uint16_t ACE_convert_from_Kelvin -( - ace_channel_handle_t channel_handle, - uint32_t temperature -); - -/*-------------------------------------------------------------------------*//** - The ACE_convert_from_Celsius() function converts a temperature value given in - degrees Celsius into the PPE sample value that would result from sampling this - temperature value on the analog input channel specified as parameter. - The result of the conversion is only meaningful if the analog input channel - specified as parameter is configured as a temperature monitoring channel. - - @param channel_handle - The channel_handle parameter identifies one of the analog input channels - monitored by the ACE. The available channel handle values can be found in the - ace_handles.h file located in the ./drivers_config/mss_ace subdirectory. The - channel handle value can also be retrieved through a call to - ACE_get_channel_handle() when the name of the channel is known, or by - iterating though all analog input channel using the ACE_get_first_channel() - and ACE_get_next_channel(). - - @param temperature - The temperature parameter is the degrees Celsius temperature value for which - we want this function to return the associated PPE sample result value. - - @return - The ACE_convert_from_Celsius() returns the PPE sample value that would be - produced if the analog input channel identified by channel_handle was set to - the temperature value passed as second parameter. - */ -uint16_t ACE_convert_from_Celsius -( - ace_channel_handle_t channel_handle, - int32_t temperature -); - -/*-------------------------------------------------------------------------*//** - The ACE_convert_from_Fahrenheit() function converts a temperature value given - in degrees Fahrenheit into the PPE sample value that would result from sampling - this temperature value on the analog input channel specified as parameter. - The result of the conversion is only meaningful if the analog input channel - specified as parameter is configured as a temperature monitoring channel. - - @param channel_handle - The channel_handle parameter identifies one of the analog input channels - monitored by the ACE. The available channel handle values can be found in the - ace_handles.h file located in the ./drivers_config/mss_ace subdirectory. The - channel handle value can also be retrieved through a call to - ACE_get_channel_handle() when the name of the channel is known, or by - iterating though all analog input channel using the ACE_get_first_channel() - and ACE_get_next_channel(). - - @param temperature - The temperature parameter is the degrees Fahrenheit temperature value for - which we want this function to return the associated PPE sample result value. - - @return - The ACE_convert_from_Fahrenheit() returns the PPE sample value that would be - produced if the analog input channel identified by channel_handle was set to - the temperature value passed as second parameter. - */ -uint16_t ACE_convert_from_Fahrenheit -( - ace_channel_handle_t channel_handle, - int32_t temperature -); - -/*-------------------------------------------------------------------------*//** - The ACE_translate_pdma_value() function translates PDMA sampling values, - received from the ACE via PDMA transfers, into input channel ID and PPE - sample value. - The PDMA sampling values are generated by the ACE as a result of selecting - "Send result to DMA" in the ACE configurator analog input configuration. The - PDMA sampling values can be either raw ADC values, filtered values or the - result of a linear transformation. - The PDMA sampling values are obtained by configuring the PDMA controller to - transfer data from the ACE into a memory buffer. The ACE_translate_pdma_value() - function is used to interpret the content of that memory buffer. - - Please note that the translation of PDMA data containing raw ADC values from - ABPS inputs will result in sample values with an unexpected polarity. - The returned sample value will have the opposite polarity to the actual analog - value seen on the ABPS input. This is due to the internal characteristics of - the analog front end that are normally hidden by the PPE processing of ADC raw - samples. The translation of raw ADC values from analog inputs other than ABPS - inputs will result in correct sample values. - - @param pdma_value - The pdma_value parameter is a 32-bit value received from the ACE through a - peripheral DMA transfer. - - @param channel_id - The channel_id parameter is a pointer to an ADC channel ID variable. It is - used to return the ID of the ADC channel from which the PPE sample value - was generated from. This parameter can be set to zero if retrieving the - channel ID is not required. - - @return - The ACE_translate_pdma_value() returns the PPE sample value extracted from - the PDMA sampling value. - - Example: - @code - uint16_t ppe_value; - uint16_t pdma_value; - adc_channel_id_t channel_id; - ace_channel_handle_t channel_handle; - - pdma_value = get_next_pdma_ace_sample(); - ppe_value = ACE_translate_pdma_value(pdma_value, &channel_id); - channel_handle = ACE_get_input_channel_handle(channel_id); - if (channel_handle != INVALID_CHANNEL_HANDLE) - { - display_value(channel_handle, ppe_value); - } - @endcode - - */ -uint16_t ACE_translate_pdma_value -( - uint32_t pdma_value, - adc_channel_id_t * channel_id -); - -/** @} */ - -/*=========================================================================*//** - @defgroup group12 Dynamic Linear Transform Control Functions - The following functions are used to dynamically adjust the linear transform - applied to analog input samples by the post processing engine: - - ACE_get_default_m_factor() - - ACE_get_default_c_offset() - - ACE_set_linear_transform() - The post processing engine performs a linear transform on analog input samples - obtained from the sample sequencing engine. The main purpose of this linear - transform is to apply part specific factory calibration to the analog samples - in order to achieve high accuracy. A second user specified linear transform - can also be optionally applied to the analog samples. This second linear - transform can be used to adjust for board level calibration or application - specific tuning. The functions described in this section apply to the user - defined transform. Factory calibration will not be affected by the use of the - ACE_set_linear_transform() function. - Note: - The post processing engine actually only performs one single linear - transform on analog samples. This transform takes into account factory - calibration and the user defined transform. The applied y = m.x + c - transform uses an m factor equal to m1.m2.mext and c offset equal to - (m2.c1.mext) + (c2.mext) where m1 and c1 are the factory calibration factor - and offset; m2 and c2 are the user defined transform factor and offset; and - mext is a factory calibration factor depending on the reference voltage - used by the ADC generating the sample. - @{ - *//*=========================================================================*/ - - -/*------------------------------------------------------------------------*//** - The ACE_get_default_m_factor() function retrieves the default value of the m - factor of the user defined linear transform applied by the post processing - engine to analog samples. The user defined linear transform m factor default - value is selected in the ACE configurator tool. - - @param channel_handle - The channel_handle parameter identifies one of the analog input channels - monitored by the ACE. The available channel handle values can be found in - the ace_handles.h file located in the .\drivers_config\mss_ace - subdirectory. The channel handle value can also be retrieved through a call - to ACE_get_channel_handle() when the name of the channel is known, or by - iterating though all analog input channel using the ACE_get_first_channel() - and ACE_get_next_channel(). - - @return - The ACE_get_default_m_factor() function returns the user transform m factor - default value. It is a signed 16-bit number representing a factor in the - range -2 to +1.99993896484375. The value of the m factor is obtained by - multiplying the return value’s absolute value by 2-14. - */ -int16_t ACE_get_default_m_factor -( - ace_channel_handle_t channel_handle -); - -/*------------------------------------------------------------------------*//** - The ACE_get_default_c_offset() function retrieves the default value of the c - offset of the user defined linear transform applied by the post processing - engine to analog samples. The user defined linear transform c offset default - value is selected in the ACE configurator tool. - - @param channel_handle - The channel_handle parameter identifies one of the analog input channels - monitored by the ACE. The available channel handle values can be found in - the ace_handles.h file located in the .\drivers_config\mss_ace - subdirectory. The channel handle value can also be retrieved through a call - to ACE_get_channel_handle() when the name of the channel is known, or by - iterating though all analog input channel using the ACE_get_first_channel() - and ACE_get_next_channel(). - - @return - The ACE_get_default_c_offset() function returns the user linear transform’s - c offset default value. It is a signed 16-bit number representing a factor - in the range -2 to +1.99993896484375. The value of the c offset is obtained - by multiplying the return value’s absolute value by 2-14. - */ -int16_t ACE_get_default_c_offset -( - ace_channel_handle_t channel_handle -); - -/*------------------------------------------------------------------------*//** - The ACE_set_linear_transform() function allows adjusting the user defined - linear transform applied to analog input samples by the post processing - engine. The linear transform is of the form y = m.x + b where the m factor - and c offset are in the range -2 to +1.99993896484375. - - @param channel_handle - The channel_handle parameter identifies one of the analog input channels - monitored by the ACE. The available channel handle values can be found in - the ace_handles.h file located in the .\drivers_config\mss_ace - subdirectory. The channel handle value can also be retrieved through a call - to ACE_get_channel_handle() when the name of the channel is known, or by - iterating though all analog input channel using the ACE_get_first_channel() - and ACE_get_next_channel(). - - @param m2 - The m2 parameter specifies the user defined transform’s m factor. It is a - signed 16-bit number representing a factor in the range -2 to - +1.99993896484375. The value of the m2 factor is obtained by multiplying the - parameter’s absolute value by 2^-14. For example, a value of 0x7000 - represents a 1.75 factor and a value of 0xE000 represents a -0.5 factor. - - @param c2 - The c2 parameter specifies the user defined transform’s c offset. It is a - signed 16-bit number representing an offset in the range -2 to - +1.99993896484375. The value of the c2 offset is obtained by multiplying the - parameter’s absolute value by 2^-14. For example, a value of 0x1000 represents - a 0.25 offset and a value of 0xB000 represents a -1.25 offset. - - @code - void reset_to_default(ace_channel_handle_t channel_handle) - { - int16_t m; - int16_t c; - - m = ACE_get_default_m_factor(channel_handle); - c = ACE_get_default_c_offset(channel_handle); - ACE_set_linear_transform(channel_handle, m, c); - } - @endcode - */ -void ACE_set_linear_transform -( - ace_channel_handle_t channel_handle, - int16_t m2, - int16_t c2 -); - -/** @} */ - -#ifdef __cplusplus -} -#endif - -#endif /* __MSS_ACE_H_ */ diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_ace/mss_ace_configurator.h b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_ace/mss_ace_configurator.h deleted file mode 100644 index 2621f5375..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_ace/mss_ace_configurator.h +++ /dev/null @@ -1,622 +0,0 @@ -/******************************************************************************* - * (c) Copyright 2009 Actel Corporation. All rights reserved. - * - * SVN $Revision: 2841 $ - * SVN $Date: 2010-07-20 18:10:00 +0100 (Tue, 20 Jul 2010) $ - */ - -/*=========================================================================*//** - @mainpage ACE Configurator data provided to ACE Driver. - - @section intro_sec Introduction - This file contains the definition of data structures used by the ACE - Configurator software tool for sharing information about the ACE configuration - with the ACE driver. It also contains the API for accessor functions used by - the ACE driver to extract relevant information from these data structures. - *//*=========================================================================*/ -#ifndef __MSS_ACE_CONFIGURATOR_H_ -#define __MSS_ACE_CONFIGURATOR_H_ - -#include "mss_ace.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/*-------------------------------------------------------------------------*//** - Post Processing Engine (PPE) flags IDs. - */ -typedef enum -{ - PPE_FLAGS0_0 = 0, - PPE_FLAGS0_1 = 1, - PPE_FLAGS0_2 = 2, - PPE_FLAGS0_3 = 3, - PPE_FLAGS0_4 = 4, - PPE_FLAGS0_5 = 5, - PPE_FLAGS0_6 = 6, - PPE_FLAGS0_7 = 7, - PPE_FLAGS0_8 = 8, - PPE_FLAGS0_9 = 9, - PPE_FLAGS0_10 = 10, - PPE_FLAGS0_11 = 11, - PPE_FLAGS0_12 = 12, - PPE_FLAGS0_13 = 13, - PPE_FLAGS0_14 = 14, - PPE_FLAGS0_15 = 15, - PPE_FLAGS0_16 = 16, - PPE_FLAGS0_17 = 17, - PPE_FLAGS0_18 = 18, - PPE_FLAGS0_19 = 19, - PPE_FLAGS0_20 = 20, - PPE_FLAGS0_21 = 21, - PPE_FLAGS0_22 = 22, - PPE_FLAGS0_23 = 23, - PPE_FLAGS0_24 = 24, - PPE_FLAGS0_25 = 25, - PPE_FLAGS0_26 = 26, - PPE_FLAGS0_27 = 27, - PPE_FLAGS0_28 = 28, - PPE_FLAGS0_29 = 29, - PPE_FLAGS0_30 = 30, - PPE_FLAGS0_31 = 31, - PPE_FLAGS1_0 = 32, - PPE_FLAGS1_1 = 33, - PPE_FLAGS1_2 = 34, - PPE_FLAGS1_3 = 35, - PPE_FLAGS1_4 = 36, - PPE_FLAGS1_5 = 37, - PPE_FLAGS1_6 = 38, - PPE_FLAGS1_7 = 39, - PPE_FLAGS1_8 = 40, - PPE_FLAGS1_9 = 41, - PPE_FLAGS1_10 = 42, - PPE_FLAGS1_11 = 43, - PPE_FLAGS1_12 = 44, - PPE_FLAGS1_13 = 45, - PPE_FLAGS1_14 = 46, - PPE_FLAGS1_15 = 47, - PPE_FLAGS1_16 = 48, - PPE_FLAGS1_17 = 49, - PPE_FLAGS1_18 = 50, - PPE_FLAGS1_19 = 51, - PPE_FLAGS1_20 = 52, - PPE_FLAGS1_21 = 53, - PPE_FLAGS1_22 = 54, - PPE_FLAGS1_23 = 55, - PPE_FLAGS1_24 = 56, - PPE_FLAGS1_25 = 57, - PPE_FLAGS1_26 = 58, - PPE_FLAGS1_27 = 59, - PPE_FLAGS1_28 = 60, - PPE_FLAGS1_29 = 61, - PPE_FLAGS1_30 = 62, - PPE_FLAGS1_31 = 63, - PPE_FLAGS2_0 = 64, - PPE_FLAGS2_1 = 65, - PPE_FLAGS2_2 = 66, - PPE_FLAGS2_3 = 67, - PPE_FLAGS2_4 = 68, - PPE_FLAGS2_5 = 69, - PPE_FLAGS2_6 = 70, - PPE_FLAGS2_7 = 71, - PPE_FLAGS2_8 = 72, - PPE_FLAGS2_9 = 73, - PPE_FLAGS2_10 = 74, - PPE_FLAGS2_11 = 75, - PPE_FLAGS2_12 = 76, - PPE_FLAGS2_13 = 77, - PPE_FLAGS2_14 = 78, - PPE_FLAGS2_15 = 79, - PPE_FLAGS2_16 = 80, - PPE_FLAGS2_17 = 81, - PPE_FLAGS2_18 = 82, - PPE_FLAGS2_19 = 83, - PPE_FLAGS2_20 = 84, - PPE_FLAGS2_21 = 85, - PPE_FLAGS2_22 = 86, - PPE_FLAGS2_23 = 87, - PPE_FLAGS2_24 = 88, - PPE_FLAGS2_25 = 89, - PPE_FLAGS2_26 = 90, - PPE_FLAGS2_27 = 91, - PPE_FLAGS2_28 = 92, - PPE_FLAGS2_29 = 93, - PPE_FLAGS2_30 = 94, - PPE_FLAGS2_31 = 95, - PPE_FLAGS3_0 = 96, - PPE_FLAGS3_1 = 97, - PPE_FLAGS3_2 = 98, - PPE_FLAGS3_3 = 99, - PPE_FLAGS3_4 = 100, - PPE_FLAGS3_5 = 101, - PPE_FLAGS3_6 = 102, - PPE_FLAGS3_7 = 103, - PPE_FLAGS3_8 = 104, - PPE_FLAGS3_9 = 105, - PPE_FLAGS3_10 = 106, - PPE_FLAGS3_11 = 107, - PPE_FLAGS3_12 = 108, - PPE_FLAGS3_13 = 109, - PPE_FLAGS3_14 = 110, - PPE_FLAGS3_15 = 111, - PPE_FLAGS3_16 = 112, - PPE_FLAGS3_17 = 113, - PPE_FLAGS3_18 = 114, - PPE_FLAGS3_19 = 115, - PPE_FLAGS3_20 = 116, - PPE_FLAGS3_21 = 117, - PPE_FLAGS3_22 = 118, - PPE_FLAGS3_23 = 119, - PPE_FLAGS3_24 = 120, - PPE_FLAGS3_25 = 121, - PPE_FLAGS3_26 = 122, - PPE_FLAGS3_27 = 123, - PPE_FLAGS3_28 = 124, - PPE_FLAGS3_29 = 125, - PPE_FLAGS3_30 = 126, - PPE_FLAGS3_31 = 127, - PPE_SFFLAGS_0 = 128, - PPE_SFFLAGS_1 = 129, - PPE_SFFLAGS_2 = 130, - PPE_SFFLAGS_3 = 131, - PPE_SFFLAGS_4 = 132, - PPE_SFFLAGS_5 = 133, - PPE_SFFLAGS_6 = 134, - PPE_SFFLAGS_7 = 135, - PPE_SFFLAGS_8 = 136, - PPE_SFFLAGS_9 = 137, - PPE_SFFLAGS_10 = 138, - PPE_SFFLAGS_11 = 139, - PPE_SFFLAGS_12 = 140, - PPE_SFFLAGS_13 = 141, - PPE_SFFLAGS_14 = 142, - PPE_SFFLAGS_15 = 143, - PPE_SFFLAGS_16 = 144, - PPE_SFFLAGS_17 = 145, - PPE_SFFLAGS_18 = 146, - PPE_SFFLAGS_19 = 147, - PPE_SFFLAGS_20 = 148, - PPE_SFFLAGS_21 = 149, - PPE_SFFLAGS_22 = 150, - PPE_SFFLAGS_23 = 151, - PPE_SFFLAGS_24 = 152, - PPE_SFFLAGS_25 = 153, - PPE_SFFLAGS_26 = 154, - PPE_SFFLAGS_27 = 155, - PPE_SFFLAGS_28 = 156, - PPE_SFFLAGS_29 = 157, - PPE_SFFLAGS_30 = 158, - PPE_SFFLAGS_31 = 159, - NB_OF_PPE_FLAGS = 160 -} ppe_flag_id_t; - -/*-------------------------------------------------------------------------*//** - Flag types. - The following defines are used to indicate the type of flag selected in the - ACE configurator. - */ -/** - A flag configured as BASIC_THRESHOLD_OVER will be asserted when the value of - the input channel exceeds the value of the flag threshold. The flag will be - de-asserted once the value of the input channel falls back under the threshold - value. No hysteresis or state filtering is applied to the flag. - */ -#define BASIC_THRESHOLD_OVER 0u - -/** - A flag configured as BASIC_THRESHOLD_UNDER will be asserted when the value of - the input channel falls under the value of the flag threshold. The flag will be - de-asserted once the value of the input channel exceeds the threshold value. - No hysteresis or state filtering is applied to the flag. - */ -#define BASIC_THRESHOLD_UNDER 1u - -/** - A flag configured as STATE_FILTERED_OVER will be asserted when n consecutive - samples of the analog input are seen to exceed the value of the flag threshold, - where n is the number selected in the "assert samples" option of the ACE - configuration softwaretool flag's configuration. - The flag will be de-asserted once m consecutive samples as seen below the flag - threshold value, where m is the number selected in the "deassert samples" - option of the flag's configuration user interface. - */ -#define STATE_FILTERED_OVER 2u - -/** - A flag configured as STATE_FILTERED_UNDER will be asserted when n consecutive - samples of the analog input are seen below the value of the flag threshold, - where n is the number selected in the "assert samples" option of the ACE - configuration softwaretool flag's configuration. - The flag will be de-asserted once m consecutive samples as seen to exceed the - flag threshold value, where m is the number selected in the "deassert samples" - option of the flag's configuration user interface. - */ -#define STATE_FILTERED_UNDER 3u - -/** - A flag configured as DUAL_HYSTERESIS_OVER will be asserted when the value - of the input channel exceeds the threshold value plus the hysteresis value. - The flag will be deasserted when the value of the input channel falls under the - threshold value minus the hysteresis value. - */ -#define DUAL_HYSTERESIS_OVER 4u - -/** - A flag configured as DUAL_HYSTERESIS_UNDER will be asserted when the value - of the input channel falls under the threshold value minus the hysteresis value. - The flag will be deasserted when the value of the input channel exceeds the - threshold value plus the hysteresis value. - */ -#define DUAL_HYSTERESIS_UNDER 5u - -/** - A flag configured as IPMI_HYSTERESIS_OVER will be asserted when the value - of the input channel exceeds the threshold value. The flag will be deasserted - when the value of the input channel falls under the threshold value minus the - hysteresis value. - */ -#define IPMI_HYSTERESIS_OVER 6u - -/** - A flag configured as IPMI_HYSTERESIS_UNDER will be asserted when the value - of the input channel falls under the threshold value. The flag will be - deasserted when the value of the input channel exceeds the threshold value - plus the hysteresis value. - */ -#define IPMI_HYSTERESIS_UNDER 7u - -/*-------------------------------------------------------------------------*//** - State filtered flag configuration. - */ -typedef struct __state_filtering_cfg -{ - /** - Number of consecutive samples required for flag assertion. - */ - uint8_t assert_samples; - - /** - Number of consecutive samples required for flag deassertion. - */ - uint8_t deassert_samples; -} state_filtering_cfg_t; - -/*-------------------------------------------------------------------------*//** - Post Processing Engine generated flag descriptor. - */ -typedef struct -{ - /** - Pointer to a zero-terminated string identifying the flag described by this - structure. This unique flag name is the name selected in the ACE configurator - software tool when creating a flag. - The flag unique name contains both the name of the monitored input channel - and the name of the flag generated based the level of that input separated - by ":". For example, the unique name for the flag called "CriticalOver" - raised when the input channel called "MainSupply" reaches a critical level - would be named "MainSupply:CriticalOver". - */ - const uint8_t * p_sz_flag_name; - - /** - The flag_id element identifies which PPE hardware flag will be asserted - when the flag conditions are found to be met by the Post Processing Engine. - This flag_id is typically used by the ACE driver to determine which ACE - register is used to enable, disable and clear interrupts on the associated - flag. - */ - ppe_flag_id_t flag_id; - - /** - The flag_type element specifies the type of the described flag. It is - specified using one of the following: - - BASIC_THRESHOLD_OVER - - BASIC_THRESHOLD_UNDER - - STATE_FILTERED_OVER - - STATE_FILTERED_UNDER - - DUAL_HYSTERESIS_OVER - - DUAL_HYSTERESIS_UNDER - - IPMI_HYSTERESIS_OVER - - IPMI_HYSTERESIS_UNDER - */ - uint8_t flag_type; - - /** - PPE RAM offset of flag threshold level. - This is the 32-bit word offset within the Post Processing Engine RAM where - the threshold associated with this flag is stored. This is used to allow - the ACE driver dynamically modifying the threshold beyond which a flag is - asserted. - In the case of hysteresis flags, threshold_ppe_offset indicates the - start location of two consecutive PPE RAM words containing the ADC value - of the hysteresis low limit followed by the ADC value for the high - hysteresis limit. - */ - uint16_t threshold_ppe_offset; - - /** - The default_threshold element specifies the value of the flag's threshold - selected in the ACE Configurator. It is the ADC value for which the flag - would be raised if hysteresis was not applied. - */ - uint16_t default_threshold; - - /** - The flag_properties takes a different meaning depending whether the flag is - an hysteresis flag or a state filtered flag. - - Hysteresis flags: - The flag_properties element specifies the ADC value to be applied as - hysteresis to the threshold value that was selected in the ACE Configurator. - A non-zero value indicates that an hysteresis must be applied and that - threshold_ppe_offset refers to the first of the two ADC values defining - the hysteresis applied to the input signal. - - State filtered flags: - The flag_properties element specifies the number of consecutive samples that - must be over or under the threshold value for the flag state to change. - */ - uint16_t flag_properties; - - /** - The channel_handle element specifies the monitored analog input channel. - It can be used as parameter to a call to function ACE_get_ppe_sample() in - order to read the current value of the analog input channel which caused - the flag described by this structure to be raised. - */ - ace_channel_handle_t channel_handle; - -} ppe_flag_desc_t; - -/*-------------------------------------------------------------------------*//** - The ace_procedure_desc_t structure is used as a procedure descriptor. It - contains all information required by the ACE driver to use and manage an ACE - procedure that was created using the ACE Configurator software tool. - */ -typedef struct -{ - /** - Pointer to a zero-terminated string identifying an ACE procedure. - This procedure name is the one selected when created procedures using the - ACE Configurator software tool. - */ - const uint8_t * p_sz_proc_name; - - /** - Sample Sequencing Engine procedure loop start program counter value. - */ - uint16_t sse_loop_pc; - - /** - Sample Sequencing Engine microcode offset. - This is the 16-bit instruction offset from which the SSE microcode for the - procedure must be loaded at into the ACE SSE RAM. - This is also the value that must be writtent into one of the ACE's SSE program - counter registers in order to start the procedure after having loaded its - microcode into SSE RAM. The actual program counter register written depends - on the analog module used by the procedure. It is determined by the value - of this structure's sse_pc_id element. - */ - uint16_t sse_load_offset; - - /** - Sample Sequencing Engine microcode length. - This is the number of 16-bit SSE instructions that must be loaded into - SSE RAM in order to load the procedure into the ACE. - */ - uint16_t sse_ucode_length; - - /** - Pointer to ucode. - */ - const uint16_t * sse_ucode; - - /** - SSE program counter ID. - This value identifies whether the procedure is used to control analog - module 0, 1 or 2. It is used to know which SSE program counter should - be set when starting the procedure. - */ - uint8_t sse_pc_id; -} ace_procedure_desc_t; - -/*-------------------------------------------------------------------------*//** - The ace_channel_desc_t structure is used as an analog input channel - descriptor. It contains the name of a channel as selected in the ACE - Configurator software tool and the identifier used to identify the ADC channel - to which the analog input signal is connected. - */ -typedef struct -{ - /** - Analog input signal name as selected in the ACE Configurator software tool. - */ - const uint8_t * p_sz_channel_name; - - /** - Analog block input channel connected to the input signal. - */ - adc_channel_id_t signal_id; - - /** - Offset into Post Processing Engine RAM where the result of post processing - on sample for the signal will be stored. - */ - uint16_t signal_ppe_offset; - - /** - Number of PPE generated flags associated with the analog input channel - described by this structure. The nb_of_flags specifies the number of items - found in the p_flags_array array. - */ - uint16_t nb_of_flags; - - /** - The p_flags_array element is a pointer to an array of indexes into the - g_ppe_flags_desc_table flag descriptors table. The array it points to - lists the flags generated base don the value of the analog input channel - described by this structure. - */ - const uint16_t * p_flags_array; - -} ace_channel_desc_t; - -/*-------------------------------------------------------------------------*//** - struct ace_config_desc_t - The ace_config_descr_t structure is used to provide information about the - configuration of the ACE and analog block. A single instance of this structure - is intended to be used to inform the ACE driver of the ACE configuration - seleted using the ACE Configurator software tool and programmed into the ACE - hardware at system boot time. - */ -typedef struct -{ - /*-------------------------------------------------------------------------- - * Procedures information - */ - /** - Procedure descriptors table location. - This is a pointer to an array of procedure descriptors. - @see nb_of_procedures - */ - ace_procedure_desc_t * proc_descr_table; - - /** - Total number of available procedures. This indicates the number of elements - of the procedure descriptor array. - @see proc_descr_table - */ - uint16_t nb_of_procedures; - - /** - Number of procedures loaded into the ACE hardware at system boot time. - @see boot_loaded_proc_idx_list - */ - uint16_t nb_boot_loaded_proc; - /** - Pointer to list of procedures loaded into the ACE hardware at system boot - time. That list contains the indexes into the procedure descriptors array - of the procedures loaded into the ACE hardware. - @see nb_boot_loaded_proc - */ - uint16_t * boot_loaded_proc_idx_list; - - /*-------------------------------------------------------------------------- - * Analog to Digital Converter signals - */ - /** - Total number of configured analog input signals. - This is the number of analog input signals that were added to the ACE - configuration using the ACE Configurator software tool. It is also the - number of elements in the signal descriptor table pointed to by this - structure's signals_descr_table field. - @see signals_descr_table - */ - uint16_t nb_of_signals; - - /** - Signal descriptors table location. - This is a pointer to an array of signal descriptors describing every - configured analog input signals. - @see nb_of_signals - */ - ace_channel_desc_t * signals_descr_table; - - /*-------------------------------------------------------------------------- - * One Bit DACs - */ - /** - One Bit DAC (OBD) names as specified in ACE configurator software tool. - This array is indexed on the analog block number. i.e. sz_obd_names[0] - contains the name used to identify the OBD contained in analog module 0. - A value of 0 in this array indicates that no name was assigned to the - associated OBD. - */ - const uint8_t * sz_obd_names[3]; - - /*-------------------------------------------------------------------------- - * PPE generated flags - */ - /** - Flag descriptors array location. - This is a pointer to an array of ppe_flag_desc_t structures describing the - properties of each of the flags generated by the Post Processing Engine. - The size of that array is specified by the nb_of_flags element of this - structure. - */ - ppe_flag_desc_t * flags_descr_table; - - /** - Number of flags used in the ACE Configurator generated configuration. - */ - uint8_t nb_of_flags; - - /*-------------------------------------------------------------------------- - * Analog comparators - */ - /** - * - */ -} ace_config_desc_t; - - -/*-------------------------------------------------------------------------*//** - The ace_adc_config_t data structure is used by the ACE configurator to inform - the ACE driver of an analog to digital converter's configuration. - */ -typedef struct -{ - /** - ADC resolution. Values can be 256, 1024 or 4096 depending whether the ADC - is configured for 8, 10 or 12 bits. - */ - uint16_t adc_resolution; - - /** - VA_REF value in milli-Volts. This should be set to 2560 if internal VAREF - is used. - */ - uint16_t va_ref; - -} ace_adc_config_t; - -/*-------------------------------------------------------------------------*//** - The ppe_transforms_desc_t data structure is used by the ACE configurator to - inform the ACE driver of the location of the "m" factor and "c" offset used - by the PPE to perform a linear transform of the form y = m*x + c. This linear - transform is used to apply calibration to the ADC samples. It can also include - a user defined linear transform specified by the user using the ACE - configurator. The factor and offset of the user defined transform is included - in the default_m2 and default_c2 items. - */ -typedef struct -{ - /** - Offset into Post Processing Engine RAM where the linear transform m factor - is stored. - */ - uint16_t m_ppe_offset; - - /** - Offset into Post Processing Engine RAM where the linear transform c offset - is stored. - */ - uint16_t c_ppe_offset; - - /** - Default value of the user defined linear transform m2 factor. - */ - int16_t default_m2; - - /** - Default value of the user defined linear transform c2 offset. - */ - int16_t default_c2; -} ppe_transforms_desc_t; - -#ifdef __cplusplus -} -#endif - -#endif /* __MSS_ACE_CONFIGURATOR_H_ */ diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_ace/mtd_data.h b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_ace/mtd_data.h deleted file mode 100644 index 431f28f78..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_ace/mtd_data.h +++ /dev/null @@ -1,104 +0,0 @@ -/******************************************************************************* - * (c) Copyright 2008 Actel Corporation. All rights reserved. - * - * Manufacturing Test Data data structures. - * This header files specified the layout of the various data structures used - * to store manaufacturing test data within eNVM. - * - * SVN $Revision: 700 $ - * SVN $Date: 2009-03-13 13:22:03 +0000 (Fri, 13 Mar 2009) $ - */ -#ifndef MTD_DATA_H -#define MTD_DATA_H - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * Analog block specifications - */ -#define NB_OF_QUADS 6 -#define NB_OF_ABPS_PER_QUAD 2 -#define TOTAL_NB_OF_ABPS (NB_OF_QUADS * NB_OF_ABPS_PER_QUAD) -#define NB_OF_ABPS_RANGES 4 -#define NB_OF_ANALOG_MODULES 3 -#define NB_OF_OBD_MODES 2 -#define NB_OF_QUADS_PER_MODULE 2 -#define NB_OF_CHOPPING_OPTIONS 2 -#define NB_OF_DIRECT_INPUTS_PER_ADC 4 - -#define NB_OF_ADC_CHANNELS 13 - -/*------------------------------------------------------------------------------ - * mtd_global_settings_t - *------------------------------------------------------------------------------ - * This typedef specifies the layout of the data structure holding the - * manufacturing test data global settings. - */ -typedef struct __mtd_global_settings_t -{ - uint16_t crc16; - uint8_t serial[6]; - uint32_t revision; - uint16_t sram_repair[8]; - uint16_t varef_m; - uint16_t spare; - uint8_t big_dec; - uint8_t reserved0; - uint16_t reserved1; -} mtd_global_settings_t; - -/*------------------------------------------------------------------------------ - * mtd_abps_trim_t - *------------------------------------------------------------------------------ - * The following data structure is used to store ABPS trimming information. - */ -typedef struct __mtd_abps_trim_t -{ - uint8_t dacdec; - uint8_t negtrim_per4_per3b_gtdec; -} mtd_abps_trim_t; - - -/*------------------------------------------------------------------------------ - * mtd_calibration_mc_t - *------------------------------------------------------------------------------ - * The following data structure is used to store M and C calibration - * coefficients. - */ -typedef struct __mtd_calibration_mc_t -{ - uint16_t m; - uint16_t c; -} mtd_calibration_mc_t; - - -/*------------------------------------------------------------------------------ - * mtd_data_t - *------------------------------------------------------------------------------ - * The following data structure is used to hold the full set of manufacturing - * test data. - */ -typedef struct __mtd_data_t -{ - mtd_global_settings_t global_settings; - mtd_abps_trim_t abps_trimming[NB_OF_QUADS][NB_OF_ABPS_PER_QUAD][NB_OF_ABPS_RANGES]; - uint8_t odb_trimming[NB_OF_ANALOG_MODULES][NB_OF_OBD_MODES][NB_OF_CHOPPING_OPTIONS]; - mtd_calibration_mc_t abps_calibration[NB_OF_QUADS][NB_OF_ABPS_PER_QUAD][NB_OF_ABPS_RANGES]; - mtd_calibration_mc_t obd_calibration[NB_OF_ANALOG_MODULES][NB_OF_OBD_MODES][NB_OF_CHOPPING_OPTIONS]; - mtd_calibration_mc_t cm_calibration[NB_OF_QUADS]; - mtd_calibration_mc_t tm_calibration[NB_OF_QUADS]; - mtd_calibration_mc_t quads_direct_input_cal[NB_OF_QUADS][2]; - mtd_calibration_mc_t adc_direct_input_cal[NB_OF_ANALOG_MODULES][NB_OF_DIRECT_INPUTS_PER_ADC]; - uint16_t comparators_offsets[NB_OF_QUADS]; - uint32_t ccc_delays_cal; -} mtd_data_t; - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_ethernet_mac/crc32.c b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_ethernet_mac/crc32.c deleted file mode 100644 index fc17e5298..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_ethernet_mac/crc32.c +++ /dev/null @@ -1,103 +0,0 @@ -/***************************************************************************//** - * @file - * crc32 source file. - * - * CRC-32-IEEE 802.3 - * x^32 + x^26 + x^23 + x^22 + x^16 + x^12 + x^11 + x^10 + x^8 + x^7 + x^5 + - * x^4 + x^2 + x + 1 - * - * (c) Copyright 2007 Actel Corporation - * - * SVN $Revision: 2369 $ - * SVN $Date: 2010-03-01 18:31:45 +0000 (Mon, 01 Mar 2010) $ - ******************************************************************************/ - - #ifdef __cplusplus -extern "C" { -#endif - -#include "crc32.h" - -static const uint32_t crc32_table[] = { - 0x00000000UL, 0x77073096UL, 0xee0e612cUL, 0x990951baUL, 0x076dc419UL, 0x706af48fUL, - 0xe963a535UL, 0x9e6495a3UL, 0x0edb8832UL, 0x79dcb8a4UL, 0xe0d5e91eUL, 0x97d2d988UL, - 0x09b64c2bUL, 0x7eb17cbdUL, 0xe7b82d07UL, 0x90bf1d91UL, 0x1db71064UL, 0x6ab020f2UL, - 0xf3b97148UL, 0x84be41deUL, 0x1adad47dUL, 0x6ddde4ebUL, 0xf4d4b551UL, 0x83d385c7UL, - 0x136c9856UL, 0x646ba8c0UL, 0xfd62f97aUL, 0x8a65c9ecUL, 0x14015c4fUL, 0x63066cd9UL, - 0xfa0f3d63UL, 0x8d080df5UL, 0x3b6e20c8UL, 0x4c69105eUL, 0xd56041e4UL, 0xa2677172UL, - 0x3c03e4d1UL, 0x4b04d447UL, 0xd20d85fdUL, 0xa50ab56bUL, 0x35b5a8faUL, 0x42b2986cUL, - 0xdbbbc9d6UL, 0xacbcf940UL, 0x32d86ce3UL, 0x45df5c75UL, 0xdcd60dcfUL, 0xabd13d59UL, - 0x26d930acUL, 0x51de003aUL, 0xc8d75180UL, 0xbfd06116UL, 0x21b4f4b5UL, 0x56b3c423UL, - 0xcfba9599UL, 0xb8bda50fUL, 0x2802b89eUL, 0x5f058808UL, 0xc60cd9b2UL, 0xb10be924UL, - 0x2f6f7c87UL, 0x58684c11UL, 0xc1611dabUL, 0xb6662d3dUL, 0x76dc4190UL, 0x01db7106UL, - 0x98d220bcUL, 0xefd5102aUL, 0x71b18589UL, 0x06b6b51fUL, 0x9fbfe4a5UL, 0xe8b8d433UL, - 0x7807c9a2UL, 0x0f00f934UL, 0x9609a88eUL, 0xe10e9818UL, 0x7f6a0dbbUL, 0x086d3d2dUL, - 0x91646c97UL, 0xe6635c01UL, 0x6b6b51f4UL, 0x1c6c6162UL, 0x856530d8UL, 0xf262004eUL, - 0x6c0695edUL, 0x1b01a57bUL, 0x8208f4c1UL, 0xf50fc457UL, 0x65b0d9c6UL, 0x12b7e950UL, - 0x8bbeb8eaUL, 0xfcb9887cUL, 0x62dd1ddfUL, 0x15da2d49UL, 0x8cd37cf3UL, 0xfbd44c65UL, - 0x4db26158UL, 0x3ab551ceUL, 0xa3bc0074UL, 0xd4bb30e2UL, 0x4adfa541UL, 0x3dd895d7UL, - 0xa4d1c46dUL, 0xd3d6f4fbUL, 0x4369e96aUL, 0x346ed9fcUL, 0xad678846UL, 0xda60b8d0UL, - 0x44042d73UL, 0x33031de5UL, 0xaa0a4c5fUL, 0xdd0d7cc9UL, 0x5005713cUL, 0x270241aaUL, - 0xbe0b1010UL, 0xc90c2086UL, 0x5768b525UL, 0x206f85b3UL, 0xb966d409UL, 0xce61e49fUL, - 0x5edef90eUL, 0x29d9c998UL, 0xb0d09822UL, 0xc7d7a8b4UL, 0x59b33d17UL, 0x2eb40d81UL, - 0xb7bd5c3bUL, 0xc0ba6cadUL, 0xedb88320UL, 0x9abfb3b6UL, 0x03b6e20cUL, 0x74b1d29aUL, - 0xead54739UL, 0x9dd277afUL, 0x04db2615UL, 0x73dc1683UL, 0xe3630b12UL, 0x94643b84UL, - 0x0d6d6a3eUL, 0x7a6a5aa8UL, 0xe40ecf0bUL, 0x9309ff9dUL, 0x0a00ae27UL, 0x7d079eb1UL, - 0xf00f9344UL, 0x8708a3d2UL, 0x1e01f268UL, 0x6906c2feUL, 0xf762575dUL, 0x806567cbUL, - 0x196c3671UL, 0x6e6b06e7UL, 0xfed41b76UL, 0x89d32be0UL, 0x10da7a5aUL, 0x67dd4accUL, - 0xf9b9df6fUL, 0x8ebeeff9UL, 0x17b7be43UL, 0x60b08ed5UL, 0xd6d6a3e8UL, 0xa1d1937eUL, - 0x38d8c2c4UL, 0x4fdff252UL, 0xd1bb67f1UL, 0xa6bc5767UL, 0x3fb506ddUL, 0x48b2364bUL, - 0xd80d2bdaUL, 0xaf0a1b4cUL, 0x36034af6UL, 0x41047a60UL, 0xdf60efc3UL, 0xa867df55UL, - 0x316e8eefUL, 0x4669be79UL, 0xcb61b38cUL, 0xbc66831aUL, 0x256fd2a0UL, 0x5268e236UL, - 0xcc0c7795UL, 0xbb0b4703UL, 0x220216b9UL, 0x5505262fUL, 0xc5ba3bbeUL, 0xb2bd0b28UL, - 0x2bb45a92UL, 0x5cb36a04UL, 0xc2d7ffa7UL, 0xb5d0cf31UL, 0x2cd99e8bUL, 0x5bdeae1dUL, - 0x9b64c2b0UL, 0xec63f226UL, 0x756aa39cUL, 0x026d930aUL, 0x9c0906a9UL, 0xeb0e363fUL, - 0x72076785UL, 0x05005713UL, 0x95bf4a82UL, 0xe2b87a14UL, 0x7bb12baeUL, 0x0cb61b38UL, - 0x92d28e9bUL, 0xe5d5be0dUL, 0x7cdcefb7UL, 0x0bdbdf21UL, 0x86d3d2d4UL, 0xf1d4e242UL, - 0x68ddb3f8UL, 0x1fda836eUL, 0x81be16cdUL, 0xf6b9265bUL, 0x6fb077e1UL, 0x18b74777UL, - 0x88085ae6UL, 0xff0f6a70UL, 0x66063bcaUL, 0x11010b5cUL, 0x8f659effUL, 0xf862ae69UL, - 0x616bffd3UL, 0x166ccf45UL, 0xa00ae278UL, 0xd70dd2eeUL, 0x4e048354UL, 0x3903b3c2UL, - 0xa7672661UL, 0xd06016f7UL, 0x4969474dUL, 0x3e6e77dbUL, 0xaed16a4aUL, 0xd9d65adcUL, - 0x40df0b66UL, 0x37d83bf0UL, 0xa9bcae53UL, 0xdebb9ec5UL, 0x47b2cf7fUL, 0x30b5ffe9UL, - 0xbdbdf21cUL, 0xcabac28aUL, 0x53b39330UL, 0x24b4a3a6UL, 0xbad03605UL, 0xcdd70693UL, - 0x54de5729UL, 0x23d967bfUL, 0xb3667a2eUL, 0xc4614ab8UL, 0x5d681b02UL, 0x2a6f2b94UL, - 0xb40bbe37UL, 0xc30c8ea1UL, 0x5a05df1bUL, 0x2d02ef8dUL -}; - -/** - * Calculates 32 bits CRC value of given data. - */ -uint32_t -mss_mac_crc32 -( - uint32_t value, - const uint8_t *data, - uint32_t data_length -) -{ - uint32_t a; - - for(a=0; a> 8); - } - - return value; -} - -/** - * Calculates 32 bits CRC value of given data, using standart Ethernet CRC - * function. - */ -uint32_t -mss_ethernet_crc -( - const uint8_t *data, - uint32_t data_length -) -{ - return mss_mac_crc32( 0xffffffffUL, data, data_length ); -} - -#ifdef __cplusplus -} -#endif diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_ethernet_mac/crc32.h b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_ethernet_mac/crc32.h deleted file mode 100644 index ce500a6f2..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_ethernet_mac/crc32.h +++ /dev/null @@ -1,46 +0,0 @@ -/***************************************************************************//** - * @file - * crc32 header file. - * - * (c) Copyright 2007 Actel Corporation - * - * SVN $Revision: 2369 $ - * SVN $Date: 2010-03-01 18:31:45 +0000 (Mon, 01 Mar 2010) $ - ******************************************************************************/ - -#ifndef __MSS_ETHERNET_MAC_CRC32_H -#define __MSS_ETHERNET_MAC_CRC32_H 1 - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * Calculates 32 bits CRC value of given data. - */ -uint32_t -mss_mac_crc32 -( - uint32_t value, - const uint8_t *data, - uint32_t data_length -); - -/** - * Calculates 32 bits CRC value of given data, using standart Ethernet CRC - * function. - */ -uint32_t -mss_ethernet_crc -( - const uint8_t *data, - uint32_t data_length -); - -#ifdef __cplusplus -} -#endif - -#endif /* __MSS_ETHERNET_MAC_CRC32_H */ diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_ethernet_mac/mss_ethernet_mac.c b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_ethernet_mac/mss_ethernet_mac.c deleted file mode 100644 index 4e92171a9..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_ethernet_mac/mss_ethernet_mac.c +++ /dev/null @@ -1,1575 +0,0 @@ -/***************************************************************************//** - * @file - * SmartFusion MSS Ethernet MAC driver implementation. - * - * (c) Copyright 2007 Actel Corporation - * - * SVN $Revision: 2369 $ - * SVN $Date: 2010-03-01 18:31:45 +0000 (Mon, 01 Mar 2010) $ - * - ******************************************************************************/ - -/* - * - * - * NOTE: This driver has been modified specifically for use with the* uIP stack. - * It is no longer a generic driver. - * - * - */ - -#ifdef __cplusplus -extern "C" { -#endif - -#include "FreeRTOS.h" -#include "task.h" - -#include "crc32.h" - -#include "mss_ethernet_mac.h" -#include "mss_ethernet_mac_regs.h" -#include "mss_ethernet_mac_desc.h" -#include "mss_ethernet_mac_conf.h" -#include "../../CMSIS/mss_assert.h" - -#include "phy.h" - -/**************************** INTERNAL DEFINES ********************************/ - -#define MAC_CHECK(CHECK,ERRNO) \ - {if(!(CHECK)){g_mss_mac.last_error=(ERRNO); configASSERT((CHECK));}} - -/* - * Flags - */ -#define FLAG_MAC_INIT_DONE 1u -#define FLAG_PERFECT_FILTERING 2u -#define FLAG_CRC_DISABLE 4u -#define FLAG_EXCEED_LIMIT 8u - -/* - * Return types - */ -#define MAC_OK 0 -#define MAC_FAIL (-1) -#define MAC_WRONG_PARAMETER (-2) -#define MAC_TOO_BIG_PACKET (-3) -#define MAC_BUFFER_IS_FULL (-4) -#define MAC_NOT_ENOUGH_SPACE (-5) -#define MAC_TIME_OUT (-6) -#define MAC_TOO_SMALL_PACKET (-7) - -/* Allocating this many buffers will always ensure there is one free as, even -though TX_RING_SIZE is set to two, the two Tx descriptors will only ever point -to the same buffer. */ -#define macNUM_BUFFERS RX_RING_SIZE + TX_RING_SIZE -#define macBUFFER_SIZE 1488 - -/***************************************************************/ -MAC_instance_t g_mss_mac; - -/**************************** INTERNAL DATA ***********************************/ -#define ERROR_MESSAGE_COUNT 8 -#define MAX_ERROR_MESSAGE_WIDTH 40 -static const int8_t unknown_error[] = "Unknown error"; -static const int8_t ErrorMessages[][MAX_ERROR_MESSAGE_WIDTH] = { - "No error occured", - "Method failed", - "Wrong parameter pased to function", - "Frame is too long", - "Not enough space in buffer", - "Not enough space in buffer", - "Timed out", - "Frame is too small" -}; - -/* - * Null variables - */ -static uint8_t* NULL_buffer; -static MSS_MAC_callback_t NULL_callback; - -/* Declare the uip_buf as a pointer, rather than the traditional array, as this -is a zero copy driver. uip_buf just gets set to whichever buffer is being -processed. */ -unsigned char *uip_buf = NULL; - -/**************************** INTERNAL FUNCTIONS ******************************/ - -static int32_t MAC_dismiss_bad_frames( void ); -static int32_t MAC_send_setup_frame( void ); - -static int32_t MAC_stop_transmission( void ); -static void MAC_start_transmission( void ); -static int32_t MAC_stop_receiving( void ); -static void MAC_start_receiving( void ); - -static void MAC_set_time_out( uint32_t time_out ); -static uint32_t MAC_get_time_out( void ); - -static void MAC_memset(uint8_t *s, uint8_t c, uint32_t n); -static void MAC_memcpy(uint8_t *dest, const uint8_t *src, uint32_t n); -static void MAC_memset_All(MAC_instance_t *s, uint32_t c); - -static unsigned char *MAC_obtain_buffer( void ); -static void MAC_release_buffer( unsigned char *pcBufferToRelease ); - -#if( TX_RING_SIZE != 2 ) - #error This uIP Ethernet driver required TX_RING_SIZE to be set to 2 -#endif - -/* Buffers that will dynamically be allocated to/from the Tx and Rx descriptors. -The union is used for alignment only. */ -static union xMAC_BUFFERS -{ - unsigned long ulAlignmentVariable; /* For alignment only, not used anywhere. */ - unsigned char ucBuffer[ macNUM_BUFFERS ][ macBUFFER_SIZE ]; -} xMACBuffers; - -/* Each array position indicates whether or not the buffer of the same index -is currently allocated to a descriptor (pdTRUE) or is free for use (pdFALSE). */ -static unsigned char ucMACBufferInUse[ macNUM_BUFFERS ] = { 0 }; - -/***************************************************************************//** - * Initializes the Ethernet Controller. - * This function will prepare the Ethernet Controller for first time use in a - * given hardware/software configuration. This function should be called before - * any other Ethernet API functions are called. - * - * Initialization of registers - config registers, enable Tx/Rx interrupts, - * enable Tx/Rx, initialize MAC addr, init PHY, autonegotiation, MAC address - * filter table (unicats/multicast)/hash init - */ -void -MSS_MAC_init -( - uint8_t phy_address -) -{ - const uint8_t mac_address[6] = { DEFAULT_MAC_ADDRESS }; - int32_t a; - - /* To start with all buffers are free. */ - for( a = 0; a < macNUM_BUFFERS; a++ ) - { - ucMACBufferInUse[ a ] = pdFALSE; - } - - /* Try to reset chip */ - MAC_BITBAND->CSR0_SWR = 1u; - - do - { - vTaskDelay( 10 ); - } while ( 1u == MAC_BITBAND->CSR0_SWR ); - - /* Check reset values of some registers to constrol - * base address validity */ - configASSERT( MAC->CSR0 == 0xFE000000uL ); - configASSERT( MAC->CSR5 == 0xF0000000uL ); - configASSERT( MAC->CSR6 == 0x32000040uL ); - - /* Instance setup */ - MAC_memset_All( &g_mss_mac, 0u ); - - g_mss_mac.base_address = MAC_BASE; - g_mss_mac.phy_address = phy_address; - - for( a=0; aCSR0_DBO = DESCRIPTOR_BYTE_ORDERING_MODE; - MAC->CSR0 = (MAC->CSR0 & ~CSR0_PBL_MASK) | ((uint32_t)PROGRAMMABLE_BURST_LENGTH << CSR0_PBL_SHIFT); - MAC_BITBAND->CSR0_BLE = BUFFER_BYTE_ORDERING_MODE; - MAC_BITBAND->CSR0_BAR = (uint32_t)BUS_ARBITRATION_SCHEME; - - /* Fixed settings */ - /* No space between descriptors */ - MAC->CSR0 = MAC->CSR0 &~ CSR0_DSL_MASK; - /* General-purpose timer works in continuous mode */ - MAC_BITBAND->CSR11_CON = 1u; - /* Start general-purpose */ - MAC->CSR11 = (MAC->CSR11 & ~CSR11_TIM_MASK) | (0x0000FFFFuL << CSR11_TIM_SHIFT); - - /* Ensure promiscous mode is off (it should be by default anyway). */ - MAC_BITBAND->CSR6_PR = 0; - - /* Perfect filter. */ - MAC_BITBAND->CSR6_HP = 1; - - /* Pass multcast. */ - MAC_BITBAND->CSR6_PM = 1; - - /* Set descriptors */ - MAC->CSR3 = (uint32_t)&(g_mss_mac.rx_descriptors[0].descriptor_0); - MAC->CSR4 = (uint32_t)&(g_mss_mac.tx_descriptors[0].descriptor_0); - - /* enable normal interrupts */ - MAC_BITBAND->CSR7_NIE = 1u; - - /* Set default MAC address and reset mac filters */ - MAC_memcpy( g_mss_mac.mac_address, mac_address, 6u ); - MSS_MAC_set_mac_address((uint8_t *)mac_address); - - /* Detect PHY */ - if( g_mss_mac.phy_address > MSS_PHY_ADDRESS_MAX ) - { - PHY_probe(); - configASSERT( g_mss_mac.phy_address <= MSS_PHY_ADDRESS_MAX ); - } - - /* Reset PHY */ - PHY_reset(); - - /* Configure chip according to PHY status */ - MSS_MAC_auto_setup_link(); - - /* Ensure uip_buf starts by pointing somewhere. */ - uip_buf = MAC_obtain_buffer(); -} - - -/***************************************************************************//** - * Sets the configuration of the Ethernet Controller. - * After the EthernetInit function has been called, this API function can be - * used to configure the various features of the Ethernet Controller. - * - * @param instance Pointer to a MAC_instance_t structure - * @param config The logical OR of the following values: - * - #MSS_MAC_CFG_RECEIVE_ALL - * - #MSS_MAC_CFG_TRANSMIT_THRESHOLD_MODE - * - #MSS_MSS_MAC_CFG_STORE_AND_FORWARD - * - #MAC_CFG_THRESHOLD_CONTROL_[00,01,10,11] - * - #MSS_MAC_CFG_FULL_DUPLEX_MODE - * - #MSS_MAC_CFG_PASS_ALL_MULTICAST - * - #MSS_MAC_CFG_PROMISCUOUS_MODE - * - #MSS_MAC_CFG_PASS_BAD_FRAMES - * @see MAC_get_configuration() - */ -void -MSS_MAC_configure -( - uint32_t configuration -) -{ - int32_t ret; - - ret = MAC_stop_transmission(); - configASSERT( ret == MAC_OK ); - - ret = MAC_stop_receiving(); - configASSERT( ret == MAC_OK ); - - MAC_BITBAND->CSR6_RA = (uint32_t)(((configuration & MSS_MAC_CFG_RECEIVE_ALL) != 0u) ? 1u : 0u ); - MAC_BITBAND->CSR6_TTM = (((configuration & MSS_MAC_CFG_TRANSMIT_THRESHOLD_MODE) != 0u) ? 1u : 0u ); - MAC_BITBAND->CSR6_SF = (uint32_t)(((configuration & MSS_MAC_CFG_STORE_AND_FORWARD) != 0u) ? 1u : 0u ); - - switch( configuration & MSS_MAC_CFG_THRESHOLD_CONTROL_11 ) { - case MSS_MAC_CFG_THRESHOLD_CONTROL_00: - MAC->CSR6 = MAC->CSR6 & ~CSR6_TR_MASK; - break; - case MSS_MAC_CFG_THRESHOLD_CONTROL_01: - MAC->CSR6 = (MAC->CSR6 & ~CSR6_TR_MASK) | ((uint32_t)1 << CSR6_TR_SHIFT ); - break; - case MSS_MAC_CFG_THRESHOLD_CONTROL_10: - MAC->CSR6 = (MAC->CSR6 & ~CSR6_TR_MASK) | ((uint32_t)2 << CSR6_TR_SHIFT ); - break; - case MSS_MAC_CFG_THRESHOLD_CONTROL_11: - MAC->CSR6 = (MAC->CSR6 & ~CSR6_TR_MASK) | ((uint32_t)3 << CSR6_TR_SHIFT ); - break; - default: - break; - } - MAC_BITBAND->CSR6_FD = (uint32_t)(((configuration & MSS_MAC_CFG_FULL_DUPLEX_MODE) != 0u) ? 1u : 0u ); - MAC_BITBAND->CSR6_PM = (uint32_t)(((configuration & MSS_MAC_CFG_PASS_ALL_MULTICAST) != 0u) ? 1u : 0u ); - MAC_BITBAND->CSR6_PR = (uint32_t)(((configuration & MSS_MAC_CFG_PROMISCUOUS_MODE) != 0u) ? 1u : 0u ); - MAC_BITBAND->CSR6_PB = (uint32_t)(((configuration & MSS_MAC_CFG_PASS_BAD_FRAMES) != 0u) ? 1u : 0u ); - PHY_set_link_type( (uint8_t) - ((((configuration & MSS_MAC_CFG_TRANSMIT_THRESHOLD_MODE) != 0u) ? MSS_MAC_LINK_STATUS_100MB : 0u ) | - (((configuration & MSS_MAC_CFG_FULL_DUPLEX_MODE) != 0u) ? MSS_MAC_LINK_STATUS_FDX : 0u )) ); - - MSS_MAC_auto_setup_link(); -} - - -/***************************************************************************//** - * Returns the configuration of the Ethernet Controller. - * - * @param instance Pointer to a MAC_instance_t structure - * @return The logical OR of the following values: - * - #MSS_MAC_CFG_RECEIVE_ALL - * - #MSS_MAC_CFG_TRANSMIT_THRESHOLD_MODE - * - #MSS_MAC_CFG_STORE_AND_FORWARD - * - #MAC_CFG_THRESHOLD_CONTROL_[00,01,10,11] - * - #MSS_MAC_CFG_FULL_DUPLEX_MODE - * - #MSS_MAC_CFG_PASS_ALL_MULTICAST - * - #MSS_MAC_CFG_PROMISCUOUS_MODE - * - #MSS_MAC_CFG_INVERSE_FILTERING - * - #MSS_MAC_CFG_PASS_BAD_FRAMES - * - #MSS_MAC_CFG_HASH_ONLY_FILTERING_MODE - * - #MSS_MAC_CFG_HASH_PERFECT_RECEIVE_FILTERING_MODE - * @see MAC_configure() - */ -int32_t -MSS_MAC_get_configuration( void ) -{ - uint32_t configuration; - - configuration = 0u; - if( MAC_BITBAND->CSR6_RA != 0u ) { - configuration |= MSS_MAC_CFG_RECEIVE_ALL; - } - - if( MAC_BITBAND->CSR6_TTM != 0u ) { - configuration |= MSS_MAC_CFG_TRANSMIT_THRESHOLD_MODE; - } - - if( MAC_BITBAND->CSR6_SF != 0u ) { - configuration |= MSS_MAC_CFG_STORE_AND_FORWARD; - } - - switch( (MAC->CSR6 & CSR6_TR_MASK) >> CSR6_TR_SHIFT ) { - case 1: configuration |= MSS_MAC_CFG_THRESHOLD_CONTROL_01; break; - case 2: configuration |= MSS_MAC_CFG_THRESHOLD_CONTROL_10; break; - case 3: configuration |= MSS_MAC_CFG_THRESHOLD_CONTROL_11; break; - default: break; - } - if( MAC_BITBAND->CSR6_FD != 0u ) { - configuration |= MSS_MAC_CFG_FULL_DUPLEX_MODE; - } - - if( MAC_BITBAND->CSR6_PM != 0u ) { - configuration |= MSS_MAC_CFG_PASS_ALL_MULTICAST; - } - - if( MAC_BITBAND->CSR6_PR != 0u ) { - configuration |= MSS_MAC_CFG_PROMISCUOUS_MODE; - } - - if( MAC_BITBAND->CSR6_IF != 0u ) { - configuration |= MSS_MAC_CFG_INVERSE_FILTERING; - } - - if( MAC_BITBAND->CSR6_PB != 0u ) { - configuration |= MSS_MAC_CFG_PASS_BAD_FRAMES; - } - - if( MAC_BITBAND->CSR6_HO != 0u ) { - configuration |= MSS_MAC_CFG_HASH_ONLY_FILTERING_MODE; - } - - if( MAC_BITBAND->CSR6_HP != 0u ) { - configuration |= MSS_MAC_CFG_HASH_PERFECT_RECEIVE_FILTERING_MODE; - } - - return (int32_t)configuration; -} - - -/***************************************************************************//** - Sends a packet from the uIP stack to the Ethernet Controller. - The MSS_MAC_tx_packet() function is used to send a packet to the MSS Ethernet - MAC. This function writes uip_len bytes of the packet contained in uip_buf into - the transmit FIFO and then activates the transmitter for this packet. If space - is available in the FIFO, the function will return once pac_len bytes of the - packet have been placed into the FIFO and the transmitter has been started. - This function will not wait for the transmission to complete. - - @return - The function returns zero if a timeout occurs otherwise it returns size of the packet. - - @see MAC_rx_packet() - */ - -int32_t -MSS_MAC_tx_packet -( - unsigned short usLength -) -{ - uint32_t desc; - unsigned long ulDescriptor; - int32_t error = MAC_OK; - - configASSERT( uip_buf != NULL_buffer ); - - configASSERT( usLength >= 12 ); - - if( (g_mss_mac.flags & FLAG_EXCEED_LIMIT) == 0u ) - { - configASSERT( usLength <= MSS_MAX_PACKET_SIZE ); - } - - taskENTER_CRITICAL(); - { - /* Check both Tx descriptors are free, meaning the double send has completed. */ - if( ( ( (g_mss_mac.tx_descriptors[ 0 ].descriptor_0) & TDES0_OWN) == TDES0_OWN ) || ( ( (g_mss_mac.tx_descriptors[ 1 ].descriptor_0) & TDES0_OWN) == TDES0_OWN ) ) - { - error = MAC_BUFFER_IS_FULL; - } - } - taskEXIT_CRITICAL(); - - configASSERT( ( g_mss_mac.tx_desc_index == 0 ) ); - - if( error == MAC_OK ) - { - /* Ensure nothing is going to get sent until both descriptors are ready. - This is done to prevent a Tx end occurring prior to the second descriptor - being ready. */ - MAC_BITBAND->CSR6_ST = 0u; - - /* Assumed TX_RING_SIZE == 2. A #error directive checks this is the - case. */ - taskENTER_CRITICAL(); - { - for( ulDescriptor = 0; ulDescriptor < TX_RING_SIZE; ulDescriptor++ ) - { - g_mss_mac.tx_descriptors[ g_mss_mac.tx_desc_index ].descriptor_1 = 0u; - - if( (g_mss_mac.flags & FLAG_CRC_DISABLE) != 0u ) { - g_mss_mac.tx_descriptors[ g_mss_mac.tx_desc_index ].descriptor_1 |= TDES1_AC; - } - - /* Every buffer can hold a full frame so they are always first and last - descriptor */ - g_mss_mac.tx_descriptors[ g_mss_mac.tx_desc_index ].descriptor_1 |= TDES1_LS | TDES1_FS; - - /* set data size */ - g_mss_mac.tx_descriptors[ g_mss_mac.tx_desc_index ].descriptor_1 |= usLength; - - /* reset end of ring */ - g_mss_mac.tx_descriptors[TX_RING_SIZE-1].descriptor_1 |= TDES1_TER; - - if( usLength > MSS_TX_BUFF_SIZE ) /* FLAG_EXCEED_LIMIT */ - { - usLength = (uint16_t)MSS_TX_BUFF_SIZE; - } - - /* The data buffer is assigned to the Tx descriptor. */ - g_mss_mac.tx_descriptors[ g_mss_mac.tx_desc_index ].buffer_1 = ( unsigned long ) uip_buf; - - /* update counters */ - desc = g_mss_mac.tx_descriptors[ g_mss_mac.tx_desc_index ].descriptor_0; - if( (desc & TDES0_LO) != 0u ) { - g_mss_mac.statistics.tx_loss_of_carrier++; - } - if( (desc & TDES0_NC) != 0u ) { - g_mss_mac.statistics.tx_no_carrier++; - } - if( (desc & TDES0_LC) != 0u ) { - g_mss_mac.statistics.tx_late_collision++; - } - if( (desc & TDES0_EC) != 0u ) { - g_mss_mac.statistics.tx_excessive_collision++; - } - if( (desc & TDES0_UF) != 0u ) { - g_mss_mac.statistics.tx_underflow_error++; - } - g_mss_mac.statistics.tx_collision_count += - (desc >> TDES0_CC_OFFSET) & TDES0_CC_MASK; - - /* Give ownership of descriptor to the MAC */ - g_mss_mac.tx_descriptors[ g_mss_mac.tx_desc_index ].descriptor_0 = TDES0_OWN; - - g_mss_mac.tx_desc_index = (g_mss_mac.tx_desc_index + 1u) % (uint32_t)TX_RING_SIZE; - } - } - taskEXIT_CRITICAL(); - } - - if (error == MAC_OK) - { - error = (int32_t)usLength; - - /* Start sending now both descriptors are set up. This is done to - prevent a Tx end occurring prior to the second descriptor being - ready. */ - MAC_BITBAND->CSR6_ST = 1u; - MAC->CSR1 = 1u; - - /* The buffer pointed to by uip_buf is now assigned to a Tx descriptor. - Find anothere free buffer for uip_buf. */ - uip_buf = MAC_obtain_buffer(); - } - else - { - error = 0; - } - return ( error ); -} - - -/***************************************************************************//** - * Returns available packet size. - * - * @param instance Pointer to a MAC_instance_t structure - * @return size of packet, bigger than 0, if a packet is available. - * If not, returns 0. - * @see MAC_rx_packet() - */ -int32_t -MSS_MAC_rx_pckt_size -( - void -) -{ - int32_t retval; - MAC_dismiss_bad_frames(); - - if( (g_mss_mac.rx_descriptors[ g_mss_mac.rx_desc_index ].descriptor_0 & RDES0_OWN) != 0u ) - { - /* Current descriptor is empty */ - retval = 0; - } - else - { - uint32_t frame_length; - frame_length = ( g_mss_mac.rx_descriptors[ g_mss_mac.rx_desc_index ].descriptor_0 >> RDES0_FL_OFFSET ) & RDES0_FL_MASK; - retval = (int32_t)( frame_length ); - } - return retval; -} - - -/***************************************************************************//** - * Receives a packet from the Ethernet Controller into the uIP stack. - * This function reads a packet from the receive FIFO of the controller and - * places it into uip_buf. - - * @return Size of packet if packet fits in uip_buf. - * 0 if there is no received packet. - * @see MAC_rx_pckt_size() - * @see MAC_tx_packet() - */ -int32_t -MSS_MAC_rx_packet -( - void -) -{ - uint16_t frame_length=0u; - - MAC_dismiss_bad_frames(); - - if( (g_mss_mac.rx_descriptors[ g_mss_mac.rx_desc_index ].descriptor_0 & RDES0_OWN) == 0u ) - { - frame_length = ( ( - g_mss_mac.rx_descriptors[ g_mss_mac.rx_desc_index ].descriptor_0 >> - RDES0_FL_OFFSET ) & RDES0_FL_MASK ); - - /* strip crc */ - frame_length -= 4u; - - if( frame_length > macBUFFER_SIZE ) { - return MAC_NOT_ENOUGH_SPACE; - } - - /* uip_buf is about to point to the buffer that contains the received - data, mark the buffer that uip_buf is currently pointing to as free - again. */ - MAC_release_buffer( uip_buf ); - uip_buf = ( unsigned char * ) g_mss_mac.rx_descriptors[ g_mss_mac.rx_desc_index ].buffer_1; - - /* The buffer the Rx descriptor was pointing to is now in use by the - uIP stack - allocate a new buffer to the Rx descriptor. */ - g_mss_mac.rx_descriptors[ g_mss_mac.rx_desc_index ].buffer_1 = ( unsigned long ) MAC_obtain_buffer(); - - MSS_MAC_prepare_rx_descriptor(); - } - return ((int32_t)frame_length); -} - - -/***************************************************************************//** - * Receives a packet from the Ethernet Controller. - * This function reads a packet from the receive FIFO of the controller and - * sets the address of pacData to the received data. - * If time_out parameter is zero the function will return - * immediately (after the copy operation if data is available. Otherwise the function - * will keep trying to read till time_out expires or data is read, if MSS_MAC_BLOCKING - * value is given as time_out, function will wait for the reception to complete. - * - * @param pacData The pointer to the packet data. - * @param time_out Time out value in milli seconds for receiving. - * if value is #MSS_MAC_BLOCKING, there will be no time out. - * if value is #MSS_MAC_NONBLOCKING, function will return immediately - * if there is no packet waiting. - * Otherwise value must be greater than 0 and smaller than - * 0x01000000. - * @return Size of packet if packet fits in pacData. - * 0 if there is no received packet. - * @see MAC_rx_pckt_size() - * @see MAC_tx_packet() - */ -int32_t -MSS_MAC_rx_packet_ptrset -( - uint8_t **pacData, - uint32_t time_out -) -{ - uint16_t frame_length = 0u; - int8_t exit = 0; - - configASSERT( (time_out == MSS_MAC_BLOCKING) || - (time_out == MSS_MAC_NONBLOCKING) || - ((time_out >= 1) && (time_out <= 0x01000000UL)) ); - - MAC_dismiss_bad_frames(); - - /* wait for a packet */ - if( time_out != MSS_MAC_BLOCKING ) { - if( time_out == MSS_MAC_NONBLOCKING ) { - MAC_set_time_out( 0u ); - } else { - MAC_set_time_out( time_out ); - } - } - - while( ((g_mss_mac.rx_descriptors[ g_mss_mac.rx_desc_index ].descriptor_0 & - RDES0_OWN) != 0u) && (exit == 0) ) - { - if( time_out != MSS_MAC_BLOCKING ) - { - if( MAC_get_time_out() == 0u ) { - exit = 1; - } - } - } - - if(exit == 0) - { - frame_length = ( ( - g_mss_mac.rx_descriptors[ g_mss_mac.rx_desc_index ].descriptor_0 >> - RDES0_FL_OFFSET ) & RDES0_FL_MASK ); - - /* strip crc */ - frame_length -= 4u; - - /* Here we are setting the buffer 'pacData' address to the address - RX descriptor address. After this is called, the following function - must be called 'MAC_prepare_rx_descriptor' - to prepare the current rx descriptor for receiving the next packet. - */ - *pacData = (uint8_t *)g_mss_mac.rx_descriptors[ g_mss_mac.rx_desc_index ].buffer_1 ; - - } - return ((int32_t)frame_length); -} - -/***************************************************************************//** - * Returns the status of connection. - * - * @return the logical OR of the following values: - * #MSS_MAC_LINK_STATUS_LINK - Link up/down - * #MSS_MAC_LINK_STATUS_100MB - Connection is 100Mb/10Mb - * #MSS_MAC_LINK_STATUS_FDX - Connection is full/half duplex - * @see MAC_auto_setup_link() - */ -int32_t -MSS_MAC_link_status -( - void -) -{ - uint32_t link; - - link = PHY_link_status(); - if( link == MSS_MAC_LINK_STATUS_LINK ) { - link |= PHY_link_type(); - } - - return ((int32_t)link); -} - - -/***************************************************************************//** - * Setups the link between PHY and MAC and returns the status of connection. - * - * @return the logical OR of the following values: - * #MSS_MAC_LINK_STATUS_LINK - Link up/down - * #MSS_MAC_LINK_STATUS_100MB - Connection is 100Mb/10Mb - * #MSS_MAC_LINK_STATUS_FDX - Connection is full/half duplex - * @see MAC_link_status() - */ -int32_t -MSS_MAC_auto_setup_link -( - void -) -{ - int32_t link; - - PHY_auto_negotiate(); - - link = MSS_MAC_link_status(); - - if( (link & MSS_MAC_LINK_STATUS_LINK) != 0u ) { - int32_t ret; - ret = MAC_stop_transmission(); - MAC_CHECK( ret == MAC_OK, ret ); - - ret = MAC_stop_receiving(); - MAC_CHECK( ret == MAC_OK, ret ); - MAC_BITBAND->CSR6_TTM = (uint32_t)((((uint32_t)link & MSS_MAC_LINK_STATUS_100MB) != 0u) ? 1u : 0u ); - MAC_BITBAND->CSR6_FD = (uint32_t)((((uint32_t)link & MSS_MAC_LINK_STATUS_FDX) != 0u) ? 1u : 1u ); - MAC_start_transmission(); - MAC_start_receiving(); - } - - return link; -} - - -/***************************************************************************//** - * Sets mac address. New address must be unicast. - * - * @param new_address Pointer to a MAC_instance_t structure - * @see MAC_get_mac_address() - */ -void -MSS_MAC_set_mac_address -( - const uint8_t *new_address -) -{ - /* Check if the new address is unicast */ - configASSERT( (new_address[0]&1) == 0 ); - - MAC_memcpy( g_mss_mac.mac_address, new_address, 6u ); - - if((g_mss_mac.flags & FLAG_PERFECT_FILTERING) != 0u ) { - int32_t a; - /* set unused filters to the new mac address */ - for( a=14*6; a>=0; a-=6 ) { - if( (g_mss_mac.mac_filter_data[a] & 1u) != 0u ) { - /* Filters with multicast addresses are used */ - a = -1; - } else { - MAC_memcpy( &(g_mss_mac.mac_filter_data[a]), - g_mss_mac.mac_address, 6u ); - } - } - } - - MAC_send_setup_frame(); -} - - -/***************************************************************************//** - * Returns mac address. - * - * @param address Pointer to receive the MAC address - * @see MAC_set_mac_address() - */ -void -MSS_MAC_get_mac_address -( - uint8_t *address -) -{ - MAC_memcpy( address, g_mss_mac.mac_address, 6u ); -} - - -/***************************************************************************//** - * Sets mac address filters. Addresses must be multicast. - * - * @param filter_count number of addresses - * @param filters Pointer to addresses to be filtered - */ -void -MSS_MAC_set_mac_filters -( - uint16_t filter_count, - const uint8_t *filters -) -{ - configASSERT( (filter_count==0) || (filters != NULL_buffer) ); - /* Check if the mac addresses is multicast */ - { - int32_t a; - for( a = 0u; a < filter_count; a++ ) { - configASSERT( (filters[a*6]&1) == 1 ); - } - } - - if( filter_count <= 15 ){ - int32_t a; - g_mss_mac.flags |= FLAG_PERFECT_FILTERING; - - /* copy new filters */ - MAC_memcpy( g_mss_mac.mac_filter_data, filters, (uint32_t)(filter_count*6)); - - /* set unused filters to our mac address */ - for( a=filter_count; a<15; a++ ) { - MAC_memcpy( &(g_mss_mac.mac_filter_data[a*6]), - g_mss_mac.mac_address, 6 ); - } - } else { - int32_t a,b; - uint32_t hash; - - g_mss_mac.flags &= ~FLAG_PERFECT_FILTERING; - - /* reset hash table */ - MAC_memset( g_mss_mac.mac_filter_data, 0u, 64u ); - - for( a=0, b=0; aCSR5; - - if( (intr_status & CSR5_NIS_MASK) != 0u ) { - if( (intr_status & CSR5_TI_MASK) != 0u ) { /* Transmit */ - g_mss_mac.statistics.tx_interrupts++; - events |= MSS_MAC_EVENT_PACKET_SEND; - } - - if( (intr_status & CSR5_RI_MASK) != 0u ) { /* Receive */ - g_mss_mac.statistics.rx_interrupts++; - events |= MSS_MAC_EVENT_PACKET_RECEIVED; - } - } - - /* Clear interrupts */ - MAC->CSR5 = CSR5_INT_BITS; - - if( (events != 0u) && (g_mss_mac.listener != NULL_callback) ) { - g_mss_mac.listener( events ); - } -} - - -/***************************************************************************//** - * Sets MAC event listener. - * Sets the given event listener function to be triggered inside MAC_isr(). - * Assigning NULL pointer as the listener function will disable it. - * - * @param instance Pointer to a MAC_instance_t structure - * @param listener function pointer to a MAC_callback_t function - * @return #MAC_OK if everything is OK - * #MAC_WRONG_PARAMETER if instance is null or hasn't been - * initialized. - * @see MAC_isr() - */ -void -MSS_MAC_set_callback -( - MSS_MAC_callback_t listener -) -{ - /* disable tx and rx interrupts */ - MAC_BITBAND->CSR7_RIE = 0u; - MAC_BITBAND->CSR7_TIE = 0u; - - g_mss_mac.listener = listener; - - if( listener != NULL_callback ) { - /* enable tx and rx interrupts */ - MAC_BITBAND->CSR7_RIE = 1u; - MAC_BITBAND->CSR7_TIE = 1u; - } -} - - -/***************************************************************************//** - * Returns description of last error. - * - * @param instance Pointer to a MAC_instance_t structure - * @return A string describing the error. This string must not be - * modified by the application. - * #MAC_WRONG_PARAMETER if instance is null or hasn't been - * initialized. - */ -const int8_t* -MSS_MAC_last_error -( - void -) -{ - int8_t error_msg_nb; - const int8_t* returnvalue; - - error_msg_nb = -(g_mss_mac.last_error); - if( error_msg_nb >= ERROR_MESSAGE_COUNT ) { - returnvalue = unknown_error; - } else { - returnvalue = ErrorMessages[error_msg_nb]; - } - return returnvalue; -} - - -/***************************************************************************//** - * Returns statistics counter of stat_id identifier. - * - * @param instance Pointer to a MAC_instance_t structure - * @param stat_id Identifier of statistics counter. - * @return Statistics counter of stat_id identifier. - * On error returns 0. - */ -uint32_t -MSS_MAC_get_statistics -( - mss_mac_statistics_id_t stat_id -) -{ - uint32_t returnval = 0u; - - switch( stat_id ) { - case MSS_MAC_RX_INTERRUPTS: - returnval = g_mss_mac.statistics.rx_interrupts; - break; - case MSS_MAC_RX_FILTERING_FAIL: - returnval = g_mss_mac.statistics.rx_filtering_fail; - break; - case MSS_MAC_RX_DESCRIPTOR_ERROR: - returnval = g_mss_mac.statistics.rx_descriptor_error; - break; - case MSS_MAC_RX_RUNT_FRAME: - returnval = g_mss_mac.statistics.rx_runt_frame; - break; - case MSS_MAC_RX_NOT_FIRST: - returnval = g_mss_mac.statistics.rx_not_first; - break; - case MSS_MAC_RX_NOT_LAST: - returnval = g_mss_mac.statistics.rx_not_last; - break; - case MSS_MAC_RX_FRAME_TOO_LONG: - returnval = g_mss_mac.statistics.rx_frame_too_long; - break; - case MSS_MAC_RX_COLLISION_SEEN: - returnval = g_mss_mac.statistics.rx_collision_seen; - break; - case MSS_MAC_RX_CRC_ERROR: - returnval = g_mss_mac.statistics.rx_crc_error; - break; - case MSS_MAC_RX_FIFO_OVERFLOW: - returnval = g_mss_mac.statistics.rx_fifo_overflow; - break; - case MSS_MAC_RX_MISSED_FRAME: - returnval = g_mss_mac.statistics.rx_missed_frame; - break; - case MSS_MAC_TX_INTERRUPTS: - returnval = g_mss_mac.statistics.tx_interrupts; - break; - case MSS_MAC_TX_LOSS_OF_CARRIER: - returnval = g_mss_mac.statistics.tx_loss_of_carrier; - break; - case MSS_MAC_TX_NO_CARRIER: - returnval = g_mss_mac.statistics.tx_no_carrier; - break; - case MSS_MAC_TX_LATE_COLLISION: - returnval = g_mss_mac.statistics.tx_late_collision; - break; - case MSS_MAC_TX_EXCESSIVE_COLLISION: - returnval = g_mss_mac.statistics.tx_excessive_collision; - break; - case MSS_MAC_TX_COLLISION_COUNT: - returnval = g_mss_mac.statistics.tx_collision_count; - break; - case MSS_MAC_TX_UNDERFLOW_ERROR: - returnval = g_mss_mac.statistics.tx_underflow_error; - break; - default: - break; - } - - return returnval; -} - - -/**************************** INTERNAL FUNCTIONS ******************************/ - - -/***************************************************************************//** - * Prepares current rx descriptor for receiving. - */ -void -MSS_MAC_prepare_rx_descriptor -( - void -) -{ - uint32_t desc; - - /* update counters */ - desc = g_mss_mac.rx_descriptors[ g_mss_mac.rx_desc_index ].descriptor_0; - if( (desc & RDES0_FF) != 0u ) { - g_mss_mac.statistics.rx_filtering_fail++; - } - if( (desc & RDES0_DE) != 0u ) { - g_mss_mac.statistics.rx_descriptor_error++; - } - if( (desc & RDES0_RF) != 0u ) { - g_mss_mac.statistics.rx_runt_frame++; - } - if( (desc & RDES0_FS) == 0u ) { - g_mss_mac.statistics.rx_not_first++; - } - if( (desc & RDES0_LS) == 0u ) { - g_mss_mac.statistics.rx_not_last++; - } - if( (desc & RDES0_TL) != 0u ) { - g_mss_mac.statistics.rx_frame_too_long++; - } - if( (desc & RDES0_CS) != 0u ) { - g_mss_mac.statistics.rx_collision_seen++; - } - if( (desc & RDES0_CE) != 0u ) { - g_mss_mac.statistics.rx_crc_error++; - } - - desc = MAC->CSR8; - g_mss_mac.statistics.rx_fifo_overflow += - (desc & (CSR8_OCO_MASK|CSR8_FOC_MASK)) >> CSR8_FOC_SHIFT; - g_mss_mac.statistics.rx_missed_frame += - (desc & (CSR8_MFO_MASK|CSR8_MFC_MASK)); - - /* Give ownership of descriptor to the MAC */ - g_mss_mac.rx_descriptors[ g_mss_mac.rx_desc_index ].descriptor_0 = RDES0_OWN; - g_mss_mac.rx_desc_index = (g_mss_mac.rx_desc_index + 1u) % RX_RING_SIZE; - - /* Start receive */ - MAC_start_receiving(); -} - - -/***************************************************************************//** - * Prepares a setup frame and sends it to MAC. - * This function is blocking. - * @return #MAC_OK if everything is ok. - * #MAC_TIME_OUT if timed out before packet send. - */ -static int32_t -MAC_send_setup_frame -( - void -) -{ - volatile MAC_descriptor_t descriptor; - uint8_t frame_data[192]; - uint8_t *data; - int32_t a,b,c,d; - int32_t ret; - - /* prepare descriptor */ - descriptor.descriptor_0 = TDES0_OWN; - descriptor.descriptor_1 = TDES1_SET | TDES1_TER | - (sizeof(frame_data) << TDES1_TBS1_OFFSET); - - if( (g_mss_mac.flags & FLAG_PERFECT_FILTERING) == 0u ) { - descriptor.descriptor_1 |= TDES1_FT0; - } - - descriptor.buffer_1 = (uint32_t)frame_data; - descriptor.buffer_2 = 0u; - - /* prepare frame */ - if( (g_mss_mac.flags & FLAG_PERFECT_FILTERING) != 0u ) { - b = 0; - d = 12; - c = 90; - } else { - b = 156; - d = 0; - c = 64; - } - - data = g_mss_mac.mac_address; - frame_data[b] = data[0]; - frame_data[b+1] = data[1]; - frame_data[b+4] = data[2]; - frame_data[b+5] = data[3]; - frame_data[b+8] = data[4]; - frame_data[b+9] = data[5]; - - data = g_mss_mac.mac_filter_data; - for( a = 0; a < c; ) { - frame_data[d] = data[a++]; - frame_data[d+1] = data[a++]; - frame_data[d+4] = data[a++]; - frame_data[d+5] = data[a++]; - frame_data[d+8] = data[a++]; - frame_data[d+9] = data[a++]; - d += 12; - } - - /* Stop transmission */ - ret = MAC_stop_transmission(); - configASSERT( ret == MAC_OK ); - - ret = MAC_stop_receiving(); - configASSERT( ret == MAC_OK ); - - /* Set descriptor */ - MAC->CSR4 = (uint32_t)&descriptor; - - /* Start transmission */ - MAC_start_transmission(); - - /* Wait until transmission over */ - ret = MAC_OK; - MAC_set_time_out( (uint32_t)SETUP_FRAME_TIME_OUT ); - - while( (((MAC->CSR5 & CSR5_TS_MASK) >> CSR5_TS_SHIFT) != - CSR5_TS_SUSPENDED) && (MAC_OK == ret) ) - { - /* transmit poll demand */ - MAC->CSR1 = 1u; - if( MAC_get_time_out() == 0u ) { - ret = MAC_TIME_OUT; - } - } - - MAC_CHECK( MAC_stop_transmission() == MAC_OK, MAC_FAIL ); - - /* Set tx descriptor */ - MAC->CSR4 = (uint32_t)g_mss_mac.tx_descriptors; - - /* Start receiving and transmission */ - MAC_start_receiving(); - MAC_start_transmission(); - - return ret; -} - - -/***************************************************************************//** - * Stops transmission. - * Function will wait until transmit operation enters stop state. - * - * @return #MAC_OK if everything is ok. - * #MAC_TIME_OUT if timed out. - */ -static int32_t -MAC_stop_transmission -( - void -) -{ - int32_t retval = MAC_OK; - MAC_set_time_out( (uint16_t)STATE_CHANGE_TIME_OUT ); - - while( (((MAC->CSR5 & CSR5_TS_MASK) >> CSR5_TS_SHIFT) != - CSR5_TS_STOPPED) && (retval == MAC_OK) ) - { - MAC_BITBAND->CSR6_ST = 0u; - if( MAC_get_time_out() == 0u ) { - retval = MAC_TIME_OUT; - } - } - return retval; -} - - -/***************************************************************************//** - * Starts transmission. - */ -static void -MAC_start_transmission -( - void -) -{ - MAC_BITBAND->CSR6_ST = 1u; -} - - -/***************************************************************************//** - * Stops transmission. - * Function will wait until transmit operation enters stop state. - * - * @return #MAC_OK if everything is ok. - * #MAC_TIME_OUT if timed out. - */ -static int32_t -MAC_stop_receiving -( - void -) -{ - int32_t retval = MAC_OK; - MAC_set_time_out( (uint16_t)STATE_CHANGE_TIME_OUT ); - - while( (((MAC->CSR5 & CSR5_RS_MASK) >> CSR5_RS_SHIFT) != CSR5_RS_STOPPED) - && (retval == MAC_OK) ) - { - MAC_BITBAND->CSR6_SR = 0u; - if( MAC_get_time_out() == 0u ) { - retval = MAC_TIME_OUT; - } - } - - return retval; -} - - -/***************************************************************************//** - * Starts transmission. - */ -static void -MAC_start_receiving -( - void -) -{ - MAC_BITBAND->CSR6_SR = 1u; -} - - -/***************************************************************************//** - * Dismisses bad frames. - * - * @return dismissed frame count. - */ -static int32_t -MAC_dismiss_bad_frames -( - void -) -{ - int32_t dc = 0; - int8_t cont = 1; - - if( MAC_BITBAND->CSR6_PB != 0u ) { - /* User wants bad frames too, don't dismiss anything */ - cont = 0; - } - - while( ( (g_mss_mac.rx_descriptors[ g_mss_mac.rx_desc_index ].descriptor_0 & - RDES0_OWN) == 0u) && (cont == 1) ) /* Host owns this descriptor */ - { - /* check error summary */ - if( (g_mss_mac.rx_descriptors[ g_mss_mac.rx_desc_index ].descriptor_0 & - (RDES0_ES | RDES0_LS | RDES0_FS)) != (RDES0_LS | RDES0_FS) ) - { - MSS_MAC_prepare_rx_descriptor(); - dc++; - } - else - { - cont = 0; - } - } - - return dc; -} - -/***************************************************************************//** - * Sets time out value. - * #MAC_get_time_out must be called frequently to make time out value updated. - * Because of user may not be using ISR, we can not update time out in ISR. - * - * @time_out time out value in milli seconds. - * Must be smaller than 0x01000000. - */ -static void -MAC_set_time_out -( - uint32_t time_out -) -{ - g_mss_mac.time_out_value = (time_out * 122u) / 10u; - - g_mss_mac.last_timer_value = (uint16_t)( MAC->CSR11 & CSR11_TIM_MASK ); -} - -/***************************************************************************//** - * Returns time out value. - * - * @return timer out value in milli seconds. - */ -static uint32_t -MAC_get_time_out -( - void -) -{ - uint32_t timer; - uint32_t time = 0u; - - timer = ( MAC->CSR11 & CSR11_TIM_MASK ); - - if( timer > g_mss_mac.last_timer_value ) { - time = 0x0000ffffUL; - } - time += g_mss_mac.last_timer_value - timer; - - if( MAC_BITBAND->CSR6_TTM == 0u ) { - time *= 10u; - } - if( g_mss_mac.time_out_value <= time ){ - g_mss_mac.time_out_value = 0u; - } else { - g_mss_mac.time_out_value -= time; - } - - g_mss_mac.last_timer_value = (uint16_t)timer; - - return ((g_mss_mac.time_out_value * 10u) / 122u); -} - -/***************************************************************************//** - * Fills the first n bytes of the memory area pointed to by s with the constant - * byte c. - */ -static void MAC_memset(uint8_t *s, uint8_t c, uint32_t n) -{ - uint8_t *sb = s; - - while( n > 0u ) { - n--; - sb[n] = c; - } -} - -/***************************************************************************//** - * Fills all fields of MAC_instance_t with c. - * - * @return a pointer to the given MAC_instance_t s. - */ -static void MAC_memset_All(MAC_instance_t *s, uint32_t c) -{ - int32_t count; - s->base_address = (addr_t)c; - s->flags = (uint8_t)c; - s->last_error = (int8_t)c; - s->last_timer_value = (uint16_t)c; - s->listener = NULL_callback; - MAC_memset( s->mac_address, (uint8_t)c, 6u ); - MAC_memset( s->mac_filter_data, (uint8_t)c, 90u ); - s->phy_address = (uint8_t)c; - s->rx_desc_index =c; - for(count = 0; countrx_descriptors[count].buffer_1 = c; - s->rx_descriptors[count].buffer_2 = c; - s->rx_descriptors[count].descriptor_0 = c; - s->rx_descriptors[count].descriptor_1 = c; - } - s->statistics.rx_collision_seen =c; - s->statistics.rx_crc_error = c; - s->statistics.rx_descriptor_error = c; - s->statistics.rx_fifo_overflow = c; - s->statistics.rx_filtering_fail = c; - s->statistics.rx_frame_too_long = c; - s->statistics.rx_interrupts = c; - s->statistics.rx_missed_frame = c; - s->statistics.rx_not_first = c; - s->statistics.rx_not_last = c; - s->statistics.rx_runt_frame = c; - s->statistics.tx_collision_count = c; - s->statistics.tx_excessive_collision = c; - s->statistics.tx_interrupts = c; - s->statistics.tx_late_collision = c; - s->statistics.tx_loss_of_carrier = c; - s->statistics.tx_no_carrier = c; - s->statistics.tx_underflow_error = c; - s->time_out_value = c; - s->tx_desc_index = c; - for(count = 0; count < TX_RING_SIZE ;count++) - { - s->tx_descriptors[count].buffer_1 = c; - s->tx_descriptors[count].buffer_2 = c; - s->tx_descriptors[count].descriptor_0 = c; - s->tx_descriptors[count].descriptor_1 = c; - } -} - -/***************************************************************************//** - * Copies n bytes from memory area src to memory area dest. - * The memory areas should not overlap. - * - * @return a pointer to the memory area dest. - */ -static void MAC_memcpy(uint8_t *dest, const uint8_t *src, uint32_t n) -{ - uint8_t *d = dest; - - while( n > 0u ) { - n--; - d[n] = src[n]; - } -} - -/***************************************************************************//** - * Tx has completed, mark the buffers that were assigned to the Tx descriptors - * as free again. - * - */ -void MSS_MAC_FreeTxBuffers( void ) -{ - /* Check the buffers have not already been freed in the first of the - two Tx interrupts - which could potentially happen if the second Tx completed - during the interrupt for the first Tx. */ - if( g_mss_mac.tx_descriptors[ 0 ].buffer_1 != ( uint32_t ) NULL ) - { - if( ( ( (g_mss_mac.tx_descriptors[ 0 ].descriptor_0) & TDES0_OWN) == 0 ) && ( ( (g_mss_mac.tx_descriptors[ 1 ].descriptor_0) & TDES0_OWN) == 0 ) ) - { - configASSERT( g_mss_mac.tx_descriptors[ 0 ].buffer_1 == g_mss_mac.tx_descriptors[ 1 ].buffer_1 ); - MAC_release_buffer( ( unsigned char * ) g_mss_mac.tx_descriptors[ 0 ].buffer_1 ); - - /* Just to mark the fact that the buffer has already been released. */ - g_mss_mac.tx_descriptors[ 0 ].buffer_1 = ( uint32_t ) NULL; - } - } -} - -/***************************************************************************//** - * Look through the array of buffers until one is found that is free for use - - * that is, not currently assigned to an Rx or a Tx descriptor. Mark the buffer - * as in use, then return its address. - * - * @return a pointer to a free buffer. - */ -unsigned char *MAC_obtain_buffer( void ) -{ -long lIndex, lAttempt = 0, lDescriptor, lBufferIsInUse; -unsigned char *pcReturn = NULL; -unsigned char *pcBufferAddress; - - /* Find and return the address of a buffer that is not being used. Mark - the buffer as now in use. */ - while( ( lAttempt <= 1 ) && ( pcReturn == NULL ) ) - { - for( lIndex = 0; lIndex < macNUM_BUFFERS; lIndex++ ) - { - if( ucMACBufferInUse[ lIndex ] == pdFALSE ) - { - pcReturn = &( xMACBuffers.ucBuffer[ lIndex ][ 0 ] ); - ucMACBufferInUse[ lIndex ] = pdTRUE; - break; - } - } - - if( pcReturn == NULL ) - { - /* Did not find a buffer. That should not really happen, but could if - an interrupt was missed. See if any buffers are marked as in use, but - are not actually in use. */ - for( lIndex = 0; lIndex < macNUM_BUFFERS; lIndex++ ) - { - pcBufferAddress = &( xMACBuffers.ucBuffer[ lIndex ][ 0 ] ); - lBufferIsInUse = pdFALSE; - - /* Is the buffer used by an Rx descriptor? */ - for( lDescriptor = 0; lDescriptor < RX_RING_SIZE; lDescriptor++ ) - { - if( g_mss_mac.rx_descriptors[ lDescriptor ].buffer_1 == ( uint32_t ) pcBufferAddress ) - { - /* The buffer is in use by an Rx descriptor. */ - lBufferIsInUse = pdTRUE; - break; - } - } - - if( lBufferIsInUse != pdTRUE ) - { - /* Is the buffer used by an Tx descriptor? */ - for( lDescriptor = 0; lDescriptor < TX_RING_SIZE; lDescriptor++ ) - { - if( g_mss_mac.tx_descriptors[ lDescriptor ].buffer_1 == ( uint32_t ) pcBufferAddress ) - { - /* The buffer is in use by an Tx descriptor. */ - lBufferIsInUse = pdTRUE; - break; - } - } - } - - /* If the buffer was not found to be in use by either a Tx or an - Rx descriptor, but the buffer is marked as in use, then mark the - buffer to be in it's correct state of "not in use". */ - if( ( lBufferIsInUse == pdFALSE ) && ( ucMACBufferInUse[ lIndex ] == pdTRUE ) ) - { - ucMACBufferInUse[ lIndex ] = pdFALSE; - } - } - } - - /* If any buffer states were changed it might be that a buffer can now - be obtained. Try again, but only one more time. */ - lAttempt++; - } - - configASSERT( pcReturn ); - return pcReturn; -} - -/***************************************************************************//** - * Return a buffer to the list of free buffers, it was in use, but is not now. - * - */ -void MAC_release_buffer( unsigned char *pucBufferToRelease ) -{ -long lIndex; - - /* uip_buf is going to point to a different buffer - first ensure the buffer - it is currently pointing to is marked as being free again. */ - for( lIndex = 0; lIndex < macNUM_BUFFERS; lIndex++ ) - { - if( pucBufferToRelease == &( xMACBuffers.ucBuffer[ lIndex ][ 0 ] ) ) - { - /* This is the buffer in use, mark it as being free. */ - ucMACBufferInUse[ lIndex ] = pdFALSE; - break; - } - } - - configASSERT( lIndex < macNUM_BUFFERS ); -} - - - -#ifdef __cplusplus -} -#endif - -/******************************** END OF FILE *********************************/ - diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_ethernet_mac/mss_ethernet_mac.h b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_ethernet_mac/mss_ethernet_mac.h deleted file mode 100644 index 9482bb762..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_ethernet_mac/mss_ethernet_mac.h +++ /dev/null @@ -1,573 +0,0 @@ -/***************************************************************************//** - * @file - * SmartFusion MSS Ethernet MAC header file. - * - * (c) Copyright 2007 Actel Corporation - * - * SVN $Revision: 2364 $ - * SVN $Date: 2010-03-01 17:58:41 +0000 (Mon, 01 Mar 2010) $ - * - *******************************************************************************/ - -#ifndef __MSS_ETHERNET_MAC_H -#define __MSS_ETHERNET_MAC_H 1 - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/******************************** DEFINES *************************************/ - -/******************************************************************************* - * Configure values. - */ -/** - * Receive all. - * When set, all incoming frames are received, regardless of their destination address. - * An address check is performed, and the result of the check is written into the receive - * descriptor. - */ -#define MSS_MAC_CFG_RECEIVE_ALL 0x00000001u - -/** - * Transmit threshold mode. - * 1 - Transmit FIFO threshold set for 100 Mbps mode - * 0 - Transmit FIFO threshold set for 10 Mbps mode - * This bit can be changed only when a transmit process is in a stopped state. - */ -#define MSS_MAC_CFG_TRANSMIT_THRESHOLD_MODE 0x00000002u - -/** - * Store and forward. - * When set, the transmission starts after a full packet is written into the transmit - * FIFO, regardless of the current FIFO threshold level. - * This bit can be changed only when the transmit process is in the stopped state. - */ -#define MSS_MAC_CFG_STORE_AND_FORWARD 0x00000004u - -/** - * Threshold control bits. - * These bits, together with TTM, SF, and PS, control the threshold level for the - * transmit FIFO. - */ -#define MSS_MAC_CFG_THRESHOLD_CONTROL_00 0x00000000u -#define MSS_MAC_CFG_THRESHOLD_CONTROL_01 0x00000008u -#define MSS_MAC_CFG_THRESHOLD_CONTROL_10 0x00000010u -#define MSS_MAC_CFG_THRESHOLD_CONTROL_11 0x00000018u - -/** - * Full-duplex mode. - * 0 - Half-duplex mode
- * 1 - Forcing full-duplex mode
- * Changing of this bit is allowed only when both the transmitter and receiver processes - * are in the stopped state. - */ -#define MSS_MAC_CFG_FULL_DUPLEX_MODE 0x00000020u - -/** - * Pass all multicast. - * When set, all frames with multicast destination addresses will be received, regardless - * of the address check result. - */ -#define MSS_MAC_CFG_PASS_ALL_MULTICAST 0x00000040u - -/** - * Promiscuous mode. - * When set, all frames will be received regardless of the address check result. An - * address check is not performed. - */ -#define MSS_MAC_CFG_PROMISCUOUS_MODE 0x00000080u - -/** - * Inverse filtering (read-only). - * If this bit is set when working in a perfect filtering mode, the receiver performs an - * inverse filtering during the address check process. - * The 'filtering type' bits of the setup frame determine the state of this bit. - */ -#define MSS_MAC_CFG_INVERSE_FILTERING 0x00000100u - -/** - * Pass bad frames. - * When set, Core10/100 transfers all frames into the data buffers, regardless of the - * receive errors. This allows the runt frames, collided fragments, and truncated frames - * to be received. - */ -#define MSS_MAC_CFG_PASS_BAD_FRAMES 0x00000200u - -/** - * Hash-only filtering mode (read-only). - * When set, Core10/100 performs an imperfect filtering over both the multicast and - * physical addresses. - * The 'filtering type' bits of the setup frame determine the state of this bit. - */ -#define MSS_MAC_CFG_HASH_ONLY_FILTERING_MODE 0x00000400u - -/** - * Hash/perfect receive filtering mode (read-only). - * 0 - Perfect filtering of the incoming frames is performed according to the physical - * addresses specified in a setup frame.
- * 1 - Imperfect filtering over the frames with the multicast addresses is performed - * according to the hash table specified in a setup frame.
- * A physical address check is performed according to the CSR6.2 (HO, hash-only) bit. - * When both the HO and HP bits are set, an imperfect filtering is performed on all of - * the addresses. - * The 'filtering type' bits of the setup frame determine the state of this bit. - */ -#define MSS_MAC_CFG_HASH_PERFECT_RECEIVE_FILTERING_MODE 0x00000800u - - -/******************************************************************************* - * Link status values. - */ -#define MSS_MAC_LINK_STATUS_LINK 0x0001u /**< Link up/down */ -#define MSS_MAC_LINK_STATUS_100MB 0x0002u /**< Connection is 100Mb/10Mb */ -#define MSS_MAC_LINK_STATUS_FDX 0x0004u /**< Connection is full/half duplex */ - - -/** - * Size of the max packet that can be received/transmited. - */ -#define MSS_MAX_PACKET_SIZE 1514uL - -/** - * Size of a receive/transmit buffer. - * Buffer size must be enough big to hold a full frame and must be multiple of - * four. For rx buffer +4 bytes allocated for crc values. These bytes doesn't - * copied to the user buffer. - */ -#define MSS_TX_BUFF_SIZE ((MSS_MAX_PACKET_SIZE + 3u) & (~(uint32_t)3)) -#define MSS_RX_BUFF_SIZE ((MSS_MAX_PACKET_SIZE + 7u) & (~(uint32_t)3)) - -/******************************************************************************* - * Time out values. - */ -#define MSS_MAC_NONBLOCKING 0u -#define MSS_MAC_BLOCKING 0xFFFFFFFFUL - -/***************************************************************************//** - * MAC events. - */ -#define MSS_MAC_EVENT_PACKET_SEND 1u -#define MSS_MAC_EVENT_PACKET_RECEIVED 2u - -/***************************************************************************//** - * PHY addresses. - */ -#define MSS_PHY_ADDRESS_MIN 0u -#define MSS_PHY_ADDRESS_MAX 31u -#define MSS_PHY_ADDRESS_AUTO_DETECT 255u - -/***************************************************************************//** - * Listener function type defines the function prototype that might be followed - * by MAC_isr which is triggered with each receive and transmit related interrupts. - * Listener functions should follow the following prototype: - * void MAC_Listener( uint32_t events ); - * The parameter is used to inform the listener function about the triggering event - * or events. Events input to the system are: - * #define MSS_MAC_EVENT_PACKET_SEND 1 - * #define MSS_MAC_EVENT_PACKET_RECEIVED 2 - * Listener function should be defined by the application using this driver if - * needed. This function may be assigned to the driver using MAC_set_callback - * routine and may be un assigned again by using the same routine with a NULL pointer - * as the event listener function. It is recommended to use this property for interrupt - * triggered systems and it is not recommended for polling mechanisms. - */ -typedef void (*MSS_MAC_callback_t)(uint32_t events); - -/***************************************************************************//** - * Statistics counter identifiers are used with MAC_get_statistics routine to - * receive the count of the requested errors/interrupts occurrences. - * - * MSS_MAC_RX_INTERRUPTS - * Used to receive the number of receive interrupts occurred. - * - * MSS_MAC_RX_FILTERING_FAIL - * Used to receive the number of received frames which did not pass the - * address recognition process. - * - * MSS_MAC_RX_DESCRIPTOR_ERROR - * Used to receive the number of occurrences of; no receive buffer was - * available when trying to store the received data. - * - * MSS_MAC_RX_RUNT_FRAME - * Used to receive the number of occurrences of; the frame is damaged by a - * collision or by a premature termination before the end of a collision - * window. - * - * MSS_MAC_RX_NOT_FIRST - * Used to receive the number of occurrences of; start of the frame is not - * the first descriptor of a frame. - * - * MSS_MAC_RX_NOT_LAST - * Used to receive the number of occurrences of; end of the frame is not - * the first descriptor of a frame. - * - * MSS_MAC_RX_FRAME_TOO_LONG - * Used to receive the number of occurrences of; a current frame is longer - * than maximum size of 1,518 bytes, as specified by 802.3. - * - * MSS_MAC_RX_COLLISION_SEEN - * Used to receive the number of occurrences of; a late collision was seen - * (collision after 64 bytes following SFD). - * - * MSS_MAC_RX_CRC_ERROR - * Used to receive the number of occurrences of; a CRC error has occurred - * in the received frame. - * - * MSS_MAC_RX_FIFO_OVERFLOW - * Used to receive the number of frames not accepted due to the receive - * FIFO overflow. - * - * MSS_MAC_RX_MISSED_FRAME - * Used to receive the number of frames not accepted due to the - * unavailability of the receive descriptor. - * - * MSS_MAC_TX_INTERRUPTS - * Used to receive the number of transmit interrupts occurred. - * - * MSS_MAC_TX_LOSS_OF_CARRIER - * Used to receive the number of occurrences of; a loss of the carrier - * during a transmission. - * - * MSS_MAC_TX_NO_CARRIER - * Used to receive the number of occurrences of; the carrier was not asserted - * by an external transceiver during the transmission. - * - * MSS_MAC_TX_LATE_COLLISION - * Used to receive the number of occurrences of; a collision was detected - * after transmitting 64 bytes. - * - * MSS_MAC_TX_EXCESSIVE_COLLISION - * Used to receive the number of occurrences of; the transmission was aborted - * after 16 retries. - * - * MSS_MAC_TX_COLLISION_COUNT - * Used to receive the number of collisions occurred. - * - * MSS_MAC_TX_UNDERFLOW_ERROR - * Used to receive the number of occurrences of; the FIFO was empty during - * the frame transmission. - */ -typedef enum { - MSS_MAC_RX_INTERRUPTS, - MSS_MAC_RX_FILTERING_FAIL, - MSS_MAC_RX_DESCRIPTOR_ERROR, - MSS_MAC_RX_RUNT_FRAME, - MSS_MAC_RX_NOT_FIRST, - MSS_MAC_RX_NOT_LAST, - MSS_MAC_RX_FRAME_TOO_LONG, - MSS_MAC_RX_COLLISION_SEEN, - MSS_MAC_RX_CRC_ERROR, - MSS_MAC_RX_FIFO_OVERFLOW, - MSS_MAC_RX_MISSED_FRAME, - - MSS_MAC_TX_INTERRUPTS, - MSS_MAC_TX_LOSS_OF_CARRIER, - MSS_MAC_TX_NO_CARRIER, - MSS_MAC_TX_LATE_COLLISION, - MSS_MAC_TX_EXCESSIVE_COLLISION, - MSS_MAC_TX_COLLISION_COUNT, - MSS_MAC_TX_UNDERFLOW_ERROR -} mss_mac_statistics_id_t; - -/******************************* FUNCTIONS ************************************/ - -/***************************************************************************//** - * Initializes an Ethernet MAC controller and data structures. - * This function will prepare the Ethernet Controller for first time use in a - * given hardware/software configuration. This function should be called before - * any other Ethernet API functions are called. - * - * Initialization of registers - config registers, enable Tx/Rx interrupts, - * enable Tx/Rx, initialize MAC addr, init PHY, autonegotiation, MAC address - * filter table (unicast/multicast)/hash init - * - */ -void -MSS_MAC_init -( - uint8_t phy_address -); - - -/***************************************************************************//** - * Sets the configuration of the Ethernet Controller. - * After the MAC_init function has been called, this API function can be - * used to configure the various features of the Ethernet Controller. - * - * @param configuration The logical OR of the following values: - * - #MSS_MAC_CFG_RECEIVE_ALL - * - #MSS_MAC_CFG_TRANSMIT_THRESHOLD_MODE - * - #MSS_MAC_CFG_STORE_AND_FORWARD - * - #MSS_MAC_CFG_THRESHOLD_CONTROL_[00,01,10,11] - * - #MSS_MAC_CFG_FULL_DUPLEX_MODE - * - #MSS_MAC_CFG_PASS_ALL_MULTICAST - * - #MSS_MAC_CFG_PROMISCUOUS_MODE - * - #MSS_MAC_CFG_PASS_BAD_FRAMES - * @see MAC_get_configuration() - */ -void -MSS_MAC_configure -( - uint32_t configuration -); - - -/***************************************************************************//** - * Returns the configuration of the Ethernet Controller. - * After the MAC_init function has been called, this API function can be used to - * get the configuration of the Ethernet Controller. - * - * @return The logical OR of the following values: - * - #MSS_MAC_CFG_RECEIVE_ALL - * - #MSS_MAC_CFG_TRANSMIT_THRESHOLD_MODE - * - #MSS_MAC_CFG_STORE_AND_FORWARD - * - #MSS_MAC_CFG_THRESHOLD_CONTROL_[00,01,10,11] - * - #MSS_MAC_CFG_FULL_DUPLEX_MODE - * - #MSS_MAC_CFG_PASS_ALL_MULTICAST - * - #MSS_MAC_CFG_PROMISCUOUS_MODE - * - #MSS_MAC_CFG_INVERSE_FILTERING - * - #MSS_MAC_CFG_PASS_BAD_FRAMES - * - #MSS_MAC_CFG_HASH_ONLY_FILTERING_MODE - * - #MSS_MAC_CFG_HASH_PERFECT_RECEIVE_FILTERING_MODE - * @see MAC_configure() - */ -int32_t -MSS_MAC_get_configuration -( - void -); - - -/***************************************************************************//** - Sends a packet from the uIP stack to the Ethernet Controller. - The MSS_MAC_tx_packet() function is used to send a packet to the MSS Ethernet - MAC. This function writes uip_len bytes of the packet contained in uip_buf into - the transmit FIFO and then activates the transmitter for this packet. If space - is available in the FIFO, the function will return once pac_len bytes of the - packet have been placed into the FIFO and the transmitter has been started. - This function will not wait for the transmission to complete. - - @return - The function returns zero if a timeout occurs otherwise it returns size of the packet. - - @see MAC_rx_packet() - */ - -int32_t -MSS_MAC_tx_packet -( - unsigned short usLength -); - -/***************************************************************************//** - * Returns available packet's size. - * - * @return Size of packet, bigger than 0, if a packet is available, - * if not, returns 0. - * @see MAC_rx_packet() - */ -int32_t -MSS_MAC_rx_pckt_size -( - void -); - - - -/***************************************************************************//** - * Prepares the RX descriptor for receiving packets. - * - * @return void - * @see MAC_rx_packet() - */ -void -MSS_MAC_prepare_rx_descriptor -( - void -); - -/***************************************************************************//** - * Receives a packet from the Ethernet Controller into the uIP stack. - * This function reads a packet from the receive FIFO of the controller and - * places it into uip_buf. - - * @return Size of packet if packet fits in uip_buf. - * 0 if there is no received packet. - * @see MAC_rx_pckt_size() - * @see MAC_tx_packet() - */ -int32_t -MSS_MAC_rx_packet -( - void -); - - -/***************************************************************************//** - Receives a packet from the Ethernet Controller. - The MSS_MAC_rx_packet_ptrset() function is very similar to the MSS_MAC_rx_packet() - function, in that it receives data from the MSS Ethernet MAC. The difference - is that it sets pacData to point to the memory buffer where the MSS Ethernet - MAC copied the received packet instead of copying the received packet into a - buffer provided by the application. After this function is called and data is - used by the user application or copied to another buffer, the - MSS_MAC_prepare_rx_descriptor() function must be called to free up the receive - memory buffer used by the MSS Ethernet MAC - - @param pacData - The pacData parameter is a pointer to a memory buffer pointer. The uint8_t - pointer pointed to by the pacData parameter will contain the address of the - memory buffer containing the received packet after this function returns. The - value of pacData is only valid if the return value is larger than zero, - indicating that a packet was received. - - @param time_out - The time_out parameter is the timeout value for the transmission in milliseconds. - The time_out parameter value can be one of the following values: - • Unsigned integer greater than 0 and less than 0x01000000 - • MSS_MAC_BLOCKING – there will be no timeout. - • MSS_MAC_NONBLOCKING – the function will return immediately if no packets - have been received. - - @return - The function returns the size of the packet if the packet fits in pacData. - Returns zero if there is no received packet. - - @see MAC_rx_pckt_size() - @see MAC_tx_packet() - */ -int32_t -MSS_MAC_rx_packet_ptrset -( - uint8_t **pacData, - uint32_t time_out -); - -/***************************************************************************//** - * Returns the status of connection by reading it from the PHY. - * - * @return the logical OR of the following values: - * #MSS_MAC_LINK_STATUS_LINK - Link up/down - * #MSS_MAC_LINK_STATUS_100MB - Connection is 100Mb/10Mb - * #MSS_MAC_LINK_STATUS_FDX - Connection is full/half duplex - * @see MAC_auto_setup_link() - */ -int32_t -MSS_MAC_link_status -( - void -); - - -/***************************************************************************//** - * Setups the link between PHY and MAC and returns the status of connection. - * - * @return the logical OR of the following values: - * #MSS_MAC_LINK_STATUS_LINK - Link up/down - * #MSS_MAC_LINK_STATUS_100MB - Connection is 100Mb/10Mb - * #MSS_MAC_LINK_STATUS_FDX - Connection is full/half duplex - * @see MAC_link_status() - */ -int32_t -MSS_MAC_auto_setup_link -( - void -); - - -/***************************************************************************//** - * Sets mac address. - * - * @param new_address Pointer to then new address value (6 bytes of data) - * @see MAC_get_mac_address() - */ -void -MSS_MAC_set_mac_address -( - const uint8_t *new_address -); - - -/***************************************************************************//** - * Returns mac address. - * - * @param address Pointer to the parameter to receive the MAC address. - * @see MAC_set_mac_address() - */ -void -MSS_MAC_get_mac_address -( - uint8_t *address -); - - -/***************************************************************************//** - * Sets mac address filters. - * If less than 15 addresses are subscribed, system works on perfect filtering mode - * else system works in hash table mode - * - * @param filter_count number of addresses - * @param filters Pointer to addresses to be filtered - */ -void -MSS_MAC_set_mac_filters -( - uint16_t filter_count, - const uint8_t *filters -); - -/***************************************************************************//** - * Sets MAC event listener. - * Sets the given event listener function to be triggered inside MAC_isr(). - * Assigning NULL pointer as the listener function will disable it. - * - * @param listener function pointer to a MSS_MAC_callback_t function - * @see MAC_isr() - */ -void -MSS_MAC_set_callback -( - MSS_MAC_callback_t listener -); - - -/***************************************************************************//** - * Returns description of latest error happened. - * - * @return A string describing the error. This string must not be - * modified by the application. - */ -const int8_t* -MSS_MAC_last_error -( - void -); - - -/***************************************************************************//** - * Returns statistics counter of stat_id identifier. - * - * @param stat_id Identifier of statistics counter. - * @return Statistics counter of stat_id identifier. - * On error returns 0. - */ -uint32_t -MSS_MAC_get_statistics -( - mss_mac_statistics_id_t stat_id -); - -/* - * The double Tx has completed. Hand back the Tx buffer to the control of - * the MAC hardware. - */ -void MSS_MAC_FreeTxBuffers( void ); -#ifdef __cplusplus -} -#endif - -#endif /* __MSS_ETHERNET_MAC_H */ - diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_ethernet_mac/mss_ethernet_mac_conf.h b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_ethernet_mac/mss_ethernet_mac_conf.h deleted file mode 100644 index ac144b36b..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_ethernet_mac/mss_ethernet_mac_conf.h +++ /dev/null @@ -1,43 +0,0 @@ -/***************************************************************************//** - * @file - * SmartFusion MSS Ethenet MAC configuration header file. - * - * (c) Copyright 2007 Actel Corporation - * - * SVN $Revision: 2299 $ - * SVN $Date: 2010-02-24 21:21:12 +0000 (Wed, 24 Feb 2010) $ - *******************************************************************************/ -#ifndef __MSS_ETHERNET_MAC_CONF_H -#define __MSS_ETHERNET_MAC_CONF_H 1 - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * Default MAC address - */ -#define DEFAULT_MAC_ADDRESS configMAC_ADDR0, configMAC_ADDR1, configMAC_ADDR2, configMAC_ADDR3, configMAC_ADDR4, configMAC_ADDR5 -#define BROADCAST_MAC_ADDRESS 0xFFu,0xFFu,0xFFu,0xFFu,0xFFu,0xFFu - -/** - * Descriptor byte ordering mode. - * 1 - Big-endian mode used for data descriptors
- * 0 - Little-endian mode used for data descriptors
- */ -#define DESCRIPTOR_BYTE_ORDERING_MODE LITTLEENDIAN - -/** - * Big/little endian. - * Selects the byte-ordering mode used by the data buffers. - * 1 - Big-endian mode used for the data buffers - * 0 - Little-endian mode used for the data buffers - */ -#define BUFFER_BYTE_ORDERING_MODE LITTLEENDIAN - -#ifdef __cplusplus -} -#endif - -#endif /* __MSS_ETHERNET_MAC_CONF_H */ - diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_ethernet_mac/mss_ethernet_mac_desc.h b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_ethernet_mac/mss_ethernet_mac_desc.h deleted file mode 100644 index dc697f11a..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_ethernet_mac/mss_ethernet_mac_desc.h +++ /dev/null @@ -1,346 +0,0 @@ -/***************************************************************************//** - * @file - * SmartFusion MSS Ethernet MAC internal defines header file. - * - * (c) Copyright 2007 Actel Corporation - * - * SVN $Revision: 2299 $ - * SVN $Date: 2010-02-24 21:21:12 +0000 (Wed, 24 Feb 2010) $ - *******************************************************************************/ -#ifndef __MSS_ETHERNET_MAC_DESC_H -#define __MSS_ETHERNET_MAC_DESC_H 1 - -#ifdef __cplusplus -extern "C" { -#endif - -/******************************************************************************* - * Receive descriptor bits - */ - -/***************************************************************************//** - * Ownership bit. - * 1 - Core10/100 owns the descriptor.
- * 0 - The host owns the descriptor.
- * Core10/100 will clear this bit when it completes a current frame reception or - * when the data buffers associated with a given descriptor are already full. - */ -#define RDES0_OWN 0x80000000UL - -/***************************************************************************//** - * Filtering fail. - * When set, indicates that a received frame did not pass the address recognition process. - * This bit is valid only for the last descriptor of the frame (RDES0.8 set), when the CSR6.30 (receive all) bit - * is set and the frame is at least 64 bytes long. - */ -#define RDES0_FF 0x40000000UL - -/***************************************************************************//** - * Frame length. - * Indicates the length, in bytes, of the data transferred into a host memory for a given frame - * This bit is valid only when RDES0.8 (last descriptor) is set and RDES0.14 (descriptor error) is cleared. - */ -#define RDES0_FL_MASK 0x00003FFFUL -#define RDES0_FL_OFFSET 16 - -/***************************************************************************//** - * Error summary. - * This bit is a logical OR of the following bits: - * RDES0.1 - CRC error - * RDES0.6 - Collision seen - * RDES0.7 - Frame too long - * RDES0.11 - Runt frame - * RDES0.14 - Descriptor error - * This bit is valid only when RDES0.8 (last descriptor) is set. - */ -#define RDES0_ES 0x00008000UL - -/***************************************************************************//** - * Descriptor error. - * Set by Core10/100 when no receive buffer was available when trying to store the received data. - * This bit is valid only when RDES0.8 (last descriptor) is set. - */ -#define RDES0_DE 0x00004000UL - -/***************************************************************************//** - * Runt frame. - * When set, indicates that the frame is damaged by a collision or by a premature termination before the end - * of a collision window. - * This bit is valid only when RDES0.8 (last descriptor) is set. - */ -#define RDES0_RF 0x00000800UL - -/***************************************************************************//** - * Multicast frame. - * When set, indicates that the frame has a multicast address. - * This bit is valid only when RDES0.8 (last descriptor) is set. - */ -#define RDES0_MF 0x00000400UL - -/***************************************************************************//** - * First descriptor. - * When set, indicates that this is the first descriptor of a frame. - */ -#define RDES0_FS 0x00000200UL - -/***************************************************************************//** - * Last descriptor. - * When set, indicates that this is the last descriptor of a frame. - */ -#define RDES0_LS 0x00000100UL - -/***************************************************************************//** - * Frame too long. - * When set, indicates that a current frame is longer than maximum size of 1,518 bytes, as specified by 802.3. - * TL (frame too long) in the receive descriptor has been set when the received frame is longer than - * 1,518 bytes. This flag is valid in all receive descriptors when multiple descriptors are used for one frame. - */ -#define RDES0_TL 0x00000080UL - -/***************************************************************************//** - * Collision seen. - * When set, indicates that a late collision was seen (collision after 64 bytes following SFD). - * This bit is valid only when RDES0.8 (last descriptor) is set. - */ -#define RDES0_CS 0x00000040UL - -/***************************************************************************//** - * Frame type. - * When set, indicates that the frame has a length field larger than 1,500 (Ethernet-type frame). When - * cleared, indicates an 802.3-type frame. - * This bit is valid only when RDES0.8 (last descriptor) is set. - * Additionally, FT is invalid for runt frames shorter than 14 bytes. - */ -#define RDES0_FT 0x00000020UL - -/***************************************************************************//** - * Report on MII error. - * When set, indicates that an error has been detected by a physical layer chip connected through the MII - * interface. - * This bit is valid only when RDES0.8 (last descriptor) is set. - */ -#define RDES0_RE 0x00000008UL - -/***************************************************************************//** - * Dribbling bit. - * When set, indicates that the frame was not byte-aligned. - * This bit is valid only when RDES0.8 (last descriptor) is set. - */ -#define RDES0_DB 0x00000004UL - -/***************************************************************************//** - * CRC error. - * When set, indicates that a CRC error has occurred in the received frame. - * This bit is valid only when RDES0.8 (last descriptor) is set. - * Additionally, CE is not valid when the received frame is a runt frame. - */ -#define RDES0_CE 0x00000002UL - -/***************************************************************************//** - * This bit is reset for frames with a legal length. - */ -#define RDES0_ZERO 0x00000001UL - -/***************************************************************************//** - * Receive end of ring. - * When set, indicates that this is the last descriptor in the receive descriptor ring. Core10/100 returns to the - * first descriptor in the ring, as specified by CSR3 (start of receive list address). - */ -#define RDES1_RER 0x02000000UL - -/***************************************************************************//** - * Second address chained. - * When set, indicates that the second buffer's address points to the next descriptor and not to the data buffer. - * Note that RER takes precedence over RCH. - */ -#define RDES1_RCH 0x01000000UL - -/***************************************************************************//** - * Buffer 2 size. - * Indicates the size, in bytes, of memory space used by the second data buffer. This number must be a - * multiple of four. If it is 0, Core10/100 ignores the second data buffer and fetches the next data descriptor. - * This number is valid only when RDES1.24 (second address chained) is cleared. - */ -#define RDES1_RBS2_MASK 0x7FF -#define RDES1_RBS2_OFFSET 11 - -/***************************************************************************//** - * Buffer 1 size - * Indicates the size, in bytes, of memory space used by the first data buffer. This number must be a multiple of - * four. If it is 0, Core10/100 ignores the first data buffer and uses the second data buffer. - */ -#define RDES1_RBS1_MASK 0x7FF -#define RDES1_RBS1_OFFSET 0 - - -/******************************************************************************* - * Transmit descriptor bits - */ - -/***************************************************************************//** - * Ownership bit. - * 1 - Core10/100 owns the descriptor. - * 0 - The host owns the descriptor. - * Core10/100 will clear this bit when it completes a current frame transmission or when the data buffers - * associated with a given descriptor are empty. - */ -#define TDES0_OWN 0x80000000uL - -/***************************************************************************//** - * Error summary. - * This bit is a logical OR of the following bits: - * TDES0.1 - Underflow error - * TDES0.8 - Excessive collision error - * TDES0.9 - Late collision - * TDES0.10 - No carrier - * TDES0.11 - Loss of carrier - * This bit is valid only when TDES1.30 (last descriptor) is set. - */ -#define TDES0_ES ((uint32_t)1 << 15) - -/***************************************************************************//** - * Loss of carrier. - * When set, indicates a loss of the carrier during a transmission. - * This bit is valid only when TDES1.30 (last descriptor) is set. - */ -#define TDES0_LO ((uint32_t)1 << 11) - -/***************************************************************************//** - * No carrier. - * When set, indicates that the carrier was not asserted by an external transceiver during the transmission. - * This bit is valid only when TDES1.30 (last descriptor) is set. - */ -#define TDES0_NC ((uint32_t)1 << 10) - -/***************************************************************************//** - * Late collision. - * When set, indicates that a collision was detected after transmitting 64 bytes. - * This bit is not valid when TDES0.1 (underflow error) is set. - * This bit is valid only when TDES1.30 (last descriptor) is set. - */ -#define TDES0_LC ((uint32_t)1 << 9) - -/***************************************************************************//** - * Excessive collisions. - * When set, indicates that the transmission was aborted after 16 retries. - * This bit is valid only when TDES1.30 (last descriptor) is set. - */ -#define TDES0_EC ((uint32_t)1 << 8) - -/***************************************************************************//** - * Collision count. - * This field indicates the number of collisions that occurred before the end of a frame transmission. - * This value is not valid when TDES0.8 (excessive collisions bit) is set. - * This bit is valid only when TDES1.30 (last descriptor) is set. - */ -#define TDES0_CC_MASK 0xFu -#define TDES0_CC_OFFSET 3u - -/***************************************************************************//** - * Underflow error. - * When set, indicates that the FIFO was empty during the frame transmission. - * This bit is valid only when TDES1.30 (last descriptor) is set. - */ -#define TDES0_UF ((uint32_t)1 << 1) - -/***************************************************************************//** - * Deferred. - * When set, indicates that the frame was deferred before transmission. Deferring occurs if the carrier is detected - * when the transmission is ready to start. - * This bit is valid only when TDES1.30 (last descriptor) is set. - */ -#define TDES0_DE (1) - -/***************************************************************************//** - * Interrupt on completion. - * Setting this flag instructs Core10/100 to set CSR5.0 (transmit interrupt) immediately after processing a - * current frame. - * This bit is valid when TDES1.30 (last descriptor) is set or for a setup packet. - */ -#define TDES1_IC ((uint32_t)1 << 31) - -/***************************************************************************//** - * Last descriptor. - * When set, indicates the last descriptor of the frame. - */ -#define TDES1_LS ((uint32_t)1 << 30) - -/***************************************************************************//** - * First descriptor. - * When set, indicates the first descriptor of the frame. - */ -#define TDES1_FS ((uint32_t)1 << 29) - -/***************************************************************************//** - * Filtering type. - * This bit, together with TDES0.22 (FT0), controls a current filtering mode. - * This bit is valid only for the setup frames. - */ -#define TDES1_FT1 ((uint32_t)1 << 28) - -/***************************************************************************//** - * Setup packet. - * When set, indicates that this is a setup frame descriptor. - */ -#define TDES1_SET ((uint32_t)1 << 27) - -/***************************************************************************//** - * Add CRC disable. - * When set, Core10/100 does not append the CRC value at the end of the frame. The exception is when the - * frame is shorter than 64 bytes and automatic byte padding is enabled. In that case, the CRC field is added, - * despite the state of the AC flag. - */ -#define TDES1_AC ((uint32_t)1 << 26) - -/***************************************************************************//** - * Transmit end of ring. - * When set, indicates the last descriptor in the descriptor ring. - */ -#define TDES1_TER ((uint32_t)1 << 25) - -/***************************************************************************//** - * Second address chained. - * When set, indicates that the second descriptor's address points to the next descriptor and not to the data - * buffer. - * This bit is valid only when TDES1.25 (transmit end of ring) is reset. - */ -#define TDES1_TCH ((uint32_t)1 << 24) - -/***************************************************************************//** - * Disabled padding. - * When set, automatic byte padding is disabled. Core10/100 normally appends the PAD field after the INFO - * field when the size of an actual frame is less than 64 bytes. After padding bytes, the CRC field is also - * inserted, despite the state of the AC flag. When DPD is set, no padding bytes are appended. - */ -#define TDES1_DPD ((uint32_t)1 << 23) - -/***************************************************************************//** - * Filtering type. - * This bit, together with TDES0.28 (FT1), controls the current filtering mode. - * This bit is valid only when the TDES1.27 (SET) bit is set. - */ -#define TDES1_FT0 ((uint32_t)1 << 22) - -/***************************************************************************//** - * Buffer 2 size. - * Indicates the size, in bytes, of memory space used by the second data buffer. If it is zero, Core10/100 ignores - * the second data buffer and fetches the next data descriptor. - * This bit is valid only when TDES1.24 (second address chained) is cleared. - */ -#define TDES1_TBS2_MASK 0x7FF -#define TDES1_TBS2_OFFSET 11u - -/***************************************************************************//** - * Buffer 1 size. - * Indicates the size, in bytes, of memory space used by the first data buffer. If it is 0, Core10/100 ignores the - * first data buffer and uses the second data buffer. - */ -#define TDES1_TBS1_MASK 0x7FF -#define TDES1_TBS1_OFFSET 0u - -#ifdef __cplusplus -} -#endif - -#endif /* __MSS_ETHERNET_MAC_DESC_H */ - diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_ethernet_mac/mss_ethernet_mac_regs.h b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_ethernet_mac/mss_ethernet_mac_regs.h deleted file mode 100644 index 0a8578f97..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_ethernet_mac/mss_ethernet_mac_regs.h +++ /dev/null @@ -1,1205 +0,0 @@ -/***************************************************************************//** - * @file - * SmartFusion MSS Ethernet MAC registers. - * - * (c) Copyright 2007 Actel Corporation - * - * IP core registers definitions. This file contains the definitions required - * for accessing the IP core through the hardware abstraction layer (HAL). - * This file was automatically generated, using "get_header.exe" version 0.4.0, - * from the IP-XACT description for: - * - * - * SVN $Revision: 2364 $ - * SVN $Date: 2010-03-01 17:58:41 +0000 (Mon, 01 Mar 2010) $ - * - *******************************************************************************/ -#ifndef MSS_ETHERNET_MAC_REGISTERS_H_ -#define MSS_ETHERNET_MAC_REGISTERS_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include "../../CMSIS/a2fxxxm3.h" -#include "mss_ethernet_mac.h" -#include "mss_ethernet_mac_user_cfg.h" - -typedef uint32_t addr_t; - - -/***************************************************************************//** - * Descriptor structure - */ -#include "pack_struct_start.h" -typedef struct { - volatile uint32_t descriptor_0; - volatile uint32_t descriptor_1; - volatile uint32_t buffer_1; - volatile uint32_t buffer_2; -} MAC_descriptor_t -#include "pack_struct_end.h" - - -/***************************************************************************//** - * There should be one instance of this structure for each instance of - * the MAC in your system. MSS_MAC_init routine initializes this structure. - * It is used to identify the various MACs in your system and an initilized - * MAC instance's structure should be passed as first parameter to MAC functions - * to identify which MAC should perform the requested operation. - * Software using the MAC driver should only need to create one single - * instance of this data structure for each MAC hardware instance in - * the system. Using MAC_get_configuration routine, latest status of the driver - * may be read by receiving its flags field, similarly MAC_configure routine lets - * you modify some of these flags. - */ -#include "net/pack_struct_start.h" -typedef struct { - addr_t base_address; /**< Register base address of the driver*/ - uint8_t flags; /**< Configuration of the driver*/ - int8_t last_error; /**< Index of last error happened inside the driver*/ - uint8_t mac_address[6]; /**< MAC address of the drived instance*/ - uint8_t mac_filter_data[90]; /**< MAC filter data, 15 addresses to be used for - received data filtering*/ - uint16_t last_timer_value; /**< Last read value of timer */ - uint32_t time_out_value; /**< Time out value */ - MSS_MAC_callback_t listener; /**< Pointer to the call-back function to be triggered - when a package is received*/ - - /* transmit related info: */ - uint32_t tx_desc_index; /**< index of the transmit descriptor getting used*/ - MAC_descriptor_t tx_descriptors[TX_RING_SIZE];/**< array of transmit descriptors*/ - - /* receive related info: */ - uint32_t rx_desc_index; /**< index of the receive descriptor getting used*/ - MAC_descriptor_t rx_descriptors[RX_RING_SIZE];/**< array of receive descriptors*/ - - uint8_t phy_address; /**< MII address of the connected PHY*/ - - #include "pack_struct_start.h" - struct { - uint32_t rx_interrupts; /**< Number of receive interrupts occurred.*/ - uint32_t rx_filtering_fail; /**< Number of received frames which did not pass - the address recognition process.*/ - uint32_t rx_descriptor_error; /**< Number of occurrences of; no receive buffer was - available when trying to store the received data.*/ - uint32_t rx_runt_frame; /**< Number of occurrences of; the frame is damaged by - a collision or by a premature termination before - the end of a collision window.*/ - uint32_t rx_not_first; /**< Number of occurrences of; start of the frame is - not the first descriptor of a frame.*/ - uint32_t rx_not_last; /**< Number of occurrences of; end of the frame is not - the first descriptor of a frame.*/ - uint32_t rx_frame_too_long; /**< Number of occurrences of; a current frame is - longer than maximum size of 1,518 bytes, as specified - by 802.3.*/ - uint32_t rx_collision_seen; /**< Number of occurrences of; a late collision was seen - (collision after 64 bytes following SFD).*/ - uint32_t rx_crc_error; /**< Number of occurrences of; a CRC error has occurred - in the received frame.*/ - uint32_t rx_fifo_overflow; /**< Number of frames not accepted due to the receive - FIFO overflow.*/ - uint32_t rx_missed_frame; /**< Number of frames not accepted due to the - unavailability of the receive descriptor.*/ - - uint32_t tx_interrupts; /**< Number of transmit interrupts occurred.*/ - uint32_t tx_loss_of_carrier; /**< Number of occurrences of; a loss of the carrier - during a transmission.*/ - uint32_t tx_no_carrier; /**< Number of occurrences of; the carrier was not asserted - by an external transceiver during the transmission.*/ - uint32_t tx_late_collision; /**< Number of occurrences of; a collision was detected - after transmitting 64 bytes.*/ - uint32_t tx_excessive_collision;/**< Number of occurrences of; the transmission was - aborted after 16 retries.*/ - uint32_t tx_collision_count; /**< Number of collisions occurred.*/ - uint32_t tx_underflow_error; /**< Number of occurrences of; the FIFO was empty during - the frame transmission.*/ - } statistics - #include "pack_struct_end.h" -} MAC_instance_t -#include "net/pack_struct_end.h" - - -/*------------------------------------------------------------------------------ - * - */ -typedef struct -{ - uint32_t CSR0_SWR; - uint32_t CSR0_BAR; - uint32_t CSR0_DSL[5]; - uint32_t CSR0_BLE; - uint32_t CSR0_PBL[6]; - uint32_t CSR0_RESERVED0[3]; - uint32_t CSR0_TAP[3]; - uint32_t CSR0_DBO; - uint32_t CSR0_RESERVED1[11]; - - uint32_t MAC_CSR_RESERVED0[32]; - - uint32_t CSR1[32]; - - uint32_t MAC_CSR_RESERVED1[32]; - - uint32_t CSR2[32]; - - uint32_t MAC_CSR_RESERVED2[32]; - - uint32_t CSR3[32]; - - uint32_t MAC_CSR_RESERVED3[32]; - - uint32_t CSR4[32]; - - uint32_t MAC_CSR_RESERVED4[32]; - - uint32_t CSR5_TI; - uint32_t CSR5_TPS; - uint32_t CSR5_TU; - uint32_t CSR5_RESERVED0[2]; - uint32_t CSR5_UNF; - uint32_t CSR5_RI; - uint32_t CSR5_RU; - uint32_t CSR5_RPS; - uint32_t CSR5_RESERVED1; - uint32_t CSR5_ETI; - uint32_t CSR5_GTE; - uint32_t CSR5_RESERVED2[2]; - uint32_t CSR5_ERI; - uint32_t CSR5_AIS; - uint32_t CSR5_NIS; - uint32_t CSR5_RS[3]; - uint32_t CSR5_TS[3]; - uint32_t CSR5_RESERVED3[9]; - - uint32_t MAC_CSR_RESERVED5[32]; - - uint32_t CSR6_HP; - uint32_t CSR6_SR; - uint32_t CSR6_HO; - uint32_t CSR6_PB; - uint32_t CSR6_IF; - uint32_t CSR6_RESERVED0; - uint32_t CSR6_PR; - uint32_t CSR6_PM; - uint32_t CSR6_RESERVED1; - uint32_t CSR6_FD; - uint32_t CSR6_RESERVED2[3]; - uint32_t CSR6_ST; - uint32_t CSR6_TR[2]; - uint32_t CSR6_RESERVED3[5]; - uint32_t CSR6_SF; - uint32_t CSR6_TTM; - uint32_t CSR6_RESERVED4[7]; - uint32_t CSR6_RA; - uint32_t CSR6_RESERVED5; - - uint32_t MAC_CSR_RESERVED6[32]; - - uint32_t CSR7_TIE; - uint32_t CSR7_TSE; - uint32_t CSR7_TUE; - uint32_t CSR7_RESERVED0[2]; - uint32_t CSR7_UNE; - uint32_t CSR7_RIE; - uint32_t CSR7_RUE; - uint32_t CSR7_RSE; - uint32_t CSR7_RESERVED1; - uint32_t CSR7_ETE; - uint32_t CSR7_GTE; - uint32_t CSR7_RESERVED2[2]; - uint32_t CSR7_ERE; - uint32_t CSR7_AIE; - uint32_t CSR7_NIE; - uint32_t CSR7[15]; - - uint32_t MAC_CSR_RESERVED7[32]; - - uint32_t CSR8[32]; - - uint32_t MAC_CSR_RESERVED8[32]; - - uint32_t CSR9_SCS; - uint32_t CSR9_SCLK; - uint32_t CSR9_SDI; - uint32_t CSR9_SDO; - uint32_t CSR9_RESERVED0[12]; - uint32_t CSR9_MDC; - uint32_t CSR9_MDO; - uint32_t CSR9_MDEN; - uint32_t CSR9_MDI; - uint32_t CSR9_RESERVED1[12]; - - uint32_t MAC_CSR_RESERVED9[32]; - - uint32_t CSR10[32]; - - uint32_t MAC_CSR_RESERVED10[32]; - - uint32_t CSR11_TIM[16]; - uint32_t CSR11_CON; - uint32_t CSR11_NRP[3]; - uint32_t CSR11_RT[4]; - uint32_t CSR11_NTP[3]; - uint32_t CSR11_TT[4]; - uint32_t CSR11_CS; -} MAC_BitBand_TypeDef; - -#define MAC_BITBAND ((MAC_BitBand_TypeDef *) BITBAND_ADDRESS(MAC_BASE)) - -/******************************************************************************* - * CSR0 register: - *------------------------------------------------------------------------------ - * CSR0 - Bus Mode Register - */ -#define CSR0_REG_OFFSET 0x00 - -/*------------------------------------------------------------------------------ - * CSR0_DBO: - * DBO field of register CSR0. - *------------------------------------------------------------------------------ - * Descriptor byte ordering mode - */ -#define CSR0_DBO_OFFSET 0x00 -#define CSR0_DBO_MASK 0x00100000UL -#define CSR0_DBO_SHIFT 20 - -/* - * Allowed values for CSR0_DBO: - *------------------------------------------------------------------------------ - * LITTLEENDIAN: Little endian mode used for data descriptors - * BIGENDIAN: Big endian mode used for data descriptors - */ -#define LITTLEENDIAN 0u -#define BIGENDIAN 1u - -/*------------------------------------------------------------------------------ - * CSR0_TAP: - * TAP field of register CSR0. - *------------------------------------------------------------------------------ - * Transmit automatic polling - */ -#define CSR0_TAP_OFFSET 0x00 -#define CSR0_TAP_MASK 0x000E0000UL -#define CSR0_TAP_SHIFT 17 - -/* - * Allowed values for CSR0_TAP: - *------------------------------------------------------------------------------ - * TAP_DISABLED: TAP disabled - * TAP_819US: TAP 819/81.9us - * TAP_2450US: TAP 2450/245us - * TAP_5730US: TAP 5730/573us - * TAP_51_2US: TAP 51.2/5.12us - * TAP_102_4US: TAP 102.4/10.24us - * TAP_153_6US: TAP 156.6/15.26us - * TAP_358_4US: TAP 358.4/35.84us - */ -#define TAP_DISABLED 0x0 -#define TAP_819US 0x1 -#define TAP_2450US 0x2 -#define TAP_5730US 0x3 -#define TAP_51_2US 0x4 -#define TAP_102_4US 0x5 -#define TAP_153_6US 0x6 -#define TAP_358_4US 0x7 - -/*------------------------------------------------------------------------------ - * CSR0_PBL: - * PBL field of register CSR0. - *------------------------------------------------------------------------------ - * Programmable burst length - */ -#define CSR0_PBL_OFFSET 0x00 -#define CSR0_PBL_MASK 0x00003F00uL -#define CSR0_PBL_SHIFT 8 - -/*------------------------------------------------------------------------------ - * CSR0_BLE: - * BLE field of register CSR0. - *------------------------------------------------------------------------------ - * Big/little endian - */ -#define CSR0_BLE_OFFSET 0x00 -#define CSR0_BLE_MASK 0x00000080uL -#define CSR0_BLE_SHIFT 7 - -/*------------------------------------------------------------------------------ - * CSR0_DSL: - * DSL field of register CSR0. - *------------------------------------------------------------------------------ - * Descriptor skip length - */ -#define CSR0_DSL_OFFSET 0x00 -#define CSR0_DSL_MASK 0x0000007CuL -#define CSR0_DSL_SHIFT 2 - -/*------------------------------------------------------------------------------ - * CSR0_BAR: - * BAR field of register CSR0. - *------------------------------------------------------------------------------ - * Bus arbitration scheme - */ -#define CSR0_BAR_OFFSET 0x00 -#define CSR0_BAR_MASK 0x00000002uL -#define CSR0_BAR_SHIFT 1 - -/*------------------------------------------------------------------------------ - * CSR0_SWR: - * SWR field of register CSR0. - *------------------------------------------------------------------------------ - * Software reset - */ -#define CSR0_SWR_OFFSET 0x00 -#define CSR0_SWR_MASK 0x00000001uL -#define CSR0_SWR_SHIFT 0 - -/******************************************************************************* - * CSR1 register: - *------------------------------------------------------------------------------ - * CSR1 - Transmit Poll Demand Register - */ -#define CSR1_REG_OFFSET 0x08 - -/*------------------------------------------------------------------------------ - * CSR1_TPD3: - * TPD3 field of register CSR1. - *------------------------------------------------------------------------------ - * TPD(31..24) - */ -#define CSR1_TPD3_OFFSET 0x08 -#define CSR1_TPD3_MASK 0xFF000000uL -#define CSR1_TPD3_SHIFT 24 - -/*------------------------------------------------------------------------------ - * CSR1_TPD2: - * TPD2 field of register CSR1. - *------------------------------------------------------------------------------ - * TPD(23..16) - */ -#define CSR1_TPD2_OFFSET 0x08 -#define CSR1_TPD2_MASK 0x00FF0000uL -#define CSR1_TPD2_SHIFT 16 - -/*------------------------------------------------------------------------------ - * CSR1_TPD1: - * TPD1 field of register CSR1. - *------------------------------------------------------------------------------ - * TPD(15..8) - */ -#define CSR1_TPD1_OFFSET 0x08 -#define CSR1_TPD1_MASK 0x0000FF00uL -#define CSR1_TPD1_SHIFT 8 - -/*------------------------------------------------------------------------------ - * CSR1_TPD0: - * TPD0 field of register CSR1. - *------------------------------------------------------------------------------ - * TPD(7..0) - */ -#define CSR1_TPD0_OFFSET 0x08 -#define CSR1_TPD0_MASK 0x000000FFuL -#define CSR1_TPD0_SHIFT 0 - -/******************************************************************************* - * CSR2 register: - *------------------------------------------------------------------------------ - * CSR2 - Receive Poll Demand Register - */ -#define CSR2_REG_OFFSET 0x10 - -/*------------------------------------------------------------------------------ - * CSR2_RPD3: - * RPD3 field of register CSR2. - *------------------------------------------------------------------------------ - * RPD(31..24) - */ -#define CSR2_RPD3_OFFSET 0x10 -#define CSR2_RPD3_MASK 0xFF000000uL -#define CSR2_RPD3_SHIFT 24 - -/*------------------------------------------------------------------------------ - * CSR2_RPD2: - * RPD2 field of register CSR2. - *------------------------------------------------------------------------------ - * RPD(23..16) - */ -#define CSR2_RPD2_OFFSET 0x10 -#define CSR2_RPD2_MASK 0x00FF0000uL -#define CSR2_RPD2_SHIFT 16 - -/*------------------------------------------------------------------------------ - * CSR2_RPD1: - * RPD1 field of register CSR2. - *------------------------------------------------------------------------------ - * RPD(15..8) - */ -#define CSR2_RPD1_OFFSET 0x10 -#define CSR2_RPD1_MASK 0x0000FF00uL -#define CSR2_RPD1_SHIFT 8 - -/*------------------------------------------------------------------------------ - * CSR2_RPD0: - * RPD0 field of register CSR2. - *------------------------------------------------------------------------------ - * RPD(7..0) - */ -#define CSR2_RPD0_OFFSET 0x10 -#define CSR2_RPD0_MASK 0x000000FFuL -#define CSR2_RPD0_SHIFT 0 - -/******************************************************************************* - * CSR3 register: - *------------------------------------------------------------------------------ - * CSR3 - Receive Descriptor List Base Address Register - */ -#define CSR3_REG_OFFSET 0x18 - -/*------------------------------------------------------------------------------ - * CSR3_RLA3: - * RLA3 field of register CSR3. - *------------------------------------------------------------------------------ - * RLA(31..24) - */ -#define CSR3_RLA3_OFFSET 0x18 -#define CSR3_RLA3_MASK 0xFF000000uL -#define CSR3_RLA3_SHIFT 24 - -/*------------------------------------------------------------------------------ - * CSR3_RLA2: - * RLA2 field of register CSR3. - *------------------------------------------------------------------------------ - * RLA(23..16) - */ -#define CSR3_RLA2_OFFSET 0x18 -#define CSR3_RLA2_MASK 0x00FF0000uL -#define CSR3_RLA2_SHIFT 16 - -/*------------------------------------------------------------------------------ - * CSR3_RLA1: - * RLA1 field of register CSR3. - *------------------------------------------------------------------------------ - * RLA(15..8) - */ -#define CSR3_RLA1_OFFSET 0x18 -#define CSR3_RLA1_MASK 0x0000FF00uL -#define CSR3_RLA1_SHIFT 8 - -/*------------------------------------------------------------------------------ - * CSR3_RLA0: - * RLA0 field of register CSR3. - *------------------------------------------------------------------------------ - * RLA(7..0) - */ -#define CSR3_RLA0_OFFSET 0x18 -#define CSR3_RLA0_MASK 0x000000FFuL -#define CSR3_RLA0_SHIFT 0 - -/******************************************************************************* - * CSR4 register: - *------------------------------------------------------------------------------ - * CSR4 - Transmit Descriptor List Base Address Register - */ -#define CSR4_REG_OFFSET 0x20 - -/*------------------------------------------------------------------------------ - * CSR4_TLA3: - * TLA3 field of register CSR4. - *------------------------------------------------------------------------------ - * TLA(31..24) - */ -#define CSR4_TLA3_OFFSET 0x20 -#define CSR4_TLA3_MASK 0xFF000000uL -#define CSR4_TLA3_SHIFT 24 - -/*------------------------------------------------------------------------------ - * CSR4_TLA2: - * TLA2 field of register CSR4. - *------------------------------------------------------------------------------ - * TLA(23..16) - */ -#define CSR4_TLA2_OFFSET 0x20 -#define CSR4_TLA2_MASK 0x00FF0000uL -#define CSR4_TLA2_SHIFT 16 - -/*------------------------------------------------------------------------------ - * CSR4_TLA1: - * TLA1 field of register CSR4. - *------------------------------------------------------------------------------ - * TLA(15..8) - */ -#define CSR4_TLA1_OFFSET 0x20 -#define CSR4_TLA1_MASK 0x0000FF00uL -#define CSR4_TLA1_SHIFT 8 - -/*------------------------------------------------------------------------------ - * CSR4_TLA0: - * TLA0 field of register CSR4. - *------------------------------------------------------------------------------ - * TLA(7..0) - */ -#define CSR4_TLA0_OFFSET 0x20 -#define CSR4_TLA0_MASK 0x000000FFuL -#define CSR4_TLA0_SHIFT 0 - -/******************************************************************************* - * CSR5 register: - *------------------------------------------------------------------------------ - * CSR5 - Status Register - */ -#define CSR5_REG_OFFSET 0x28 -#define CSR5_INT_BITS (CSR5_NIS_MASK | CSR5_AIS_MASK | CSR5_ERI_MASK | \ - CSR5_GTE_MASK | CSR5_ETI_MASK | CSR5_RPS_MASK | CSR5_RU_MASK | \ - CSR5_RI_MASK | CSR5_UNF_MASK | CSR5_TU_MASK | CSR5_TPS_MASK | CSR5_TI_MASK) - -/*------------------------------------------------------------------------------ - * CSR5_TS: - * TS field of register CSR5. - *------------------------------------------------------------------------------ - * Transmit process state - */ -#define CSR5_TS_OFFSET 0x28 -#define CSR5_TS_MASK 0x00700000uL -#define CSR5_TS_SHIFT 20 - -/** 000 - Stopped; RESET or STOP TRANSMIT command issued. */ -#define CSR5_TS_STOPPED 0u -/** 001 - Running, fetching the transmit descriptor. */ -#define CSR5_TS_RUNNING_FD 1u -/** 010 - Running, waiting for end of transmission. */ -#define CSR5_TS_RUNNING_WT 2u -/** 011 - Running, transferring data buffer from host memory to FIFO. */ -#define CSR5_TS_RUNNING_TD 3u -/** 101 - Running, setup packet. */ -#define CSR5_TS_RUNNING_SP 5u -/** 110 - Suspended; FIFO underflow or unavailable descriptor. */ -#define CSR5_TS_SUSPENDED 6u -/** 111 - Running, closing transmit descriptor. */ -#define CSR5_TS_RUNNING_CD 7u - -/*------------------------------------------------------------------------------ - * CSR5_RS: - * RS field of register CSR5. - *------------------------------------------------------------------------------ - * Receive process state - */ -#define CSR5_RS_OFFSET 0x28 -#define CSR5_RS_MASK 0x00060000uL -#define CSR5_RS_SHIFT 17 - -/** 000 - Stopped; RESET or STOP RECEIVE command issued. */ -#define CSR5_RS_STOPPED 0u -/** 001 - Running, fetching the receive descriptor. */ -#define CSR5_RS_RUNNING_FD 1u -/** 010 - Running, waiting for the end-of-receive packet before prefetch of the - *next descriptor. */ -#define CSR5_RS_RUNNING_WR 2u -/** 011 - Running, waiting for the receive packet. */ -#define CSR5_RS_RUNNING_RB 3u -/** 100 - Suspended, unavailable receive buffer. */ -#define CSR5_RS_SUSPENDED 4u -/** 101 - Running, closing the receive descriptor. */ -#define CSR5_RS_RUNNING_CD 5u -/** 111 - Running, transferring data from FIFO to host memory. */ -#define CSR5_RS_RUNNING_TD 7u - -/*------------------------------------------------------------------------------ - * CSR5_NIS: - * NIS field of register CSR5. - *------------------------------------------------------------------------------ - * Normal interrupt summary - */ -#define CSR5_NIS_OFFSET 0x28 -#define CSR5_NIS_MASK 0x00010000uL -#define CSR5_NIS_SHIFT 16 - -/*------------------------------------------------------------------------------ - * CSR5_AIS: - * AIS field of register CSR5. - *------------------------------------------------------------------------------ - * Abnormal interrupt summary - */ -#define CSR5_AIS_OFFSET 0x28 -#define CSR5_AIS_MASK 0x00008000UL -#define CSR5_AIS_SHIFT 15 - -/*------------------------------------------------------------------------------ - * CSR5_ERI: - * ERI field of register CSR5. - *------------------------------------------------------------------------------ - * Early receive interrupt - */ -#define CSR5_ERI_OFFSET 0x28 -#define CSR5_ERI_MASK 0x00004000UL -#define CSR5_ERI_SHIFT 14 - -/*------------------------------------------------------------------------------ - * CSR5_GTE: - * GTE field of register CSR5. - *------------------------------------------------------------------------------ - * General-purpose timer expiration - */ -#define CSR5_GTE_OFFSET 0x28 -#define CSR5_GTE_MASK 0x00000800UL -#define CSR5_GTE_SHIFT 11 - -/*------------------------------------------------------------------------------ - * CSR5_ETI: - * ETI field of register CSR5. - *------------------------------------------------------------------------------ - * Early transmit interrupt - */ -#define CSR5_ETI_OFFSET 0x28 -#define CSR5_ETI_MASK 0x00000400UL -#define CSR5_ETI_SHIFT 10 - -/*------------------------------------------------------------------------------ - * CSR5_RPS: - * RPS field of register CSR5. - *------------------------------------------------------------------------------ - * Receive process stopped - */ -#define CSR5_RPS_OFFSET 0x28 -#define CSR5_RPS_MASK 0x00000100UL -#define CSR5_RPS_SHIFT 8 - -/*------------------------------------------------------------------------------ - * CSR5_RU: - * RU field of register CSR5. - *------------------------------------------------------------------------------ - * Receive buffer unavailable - */ -#define CSR5_RU_OFFSET 0x28 -#define CSR5_RU_MASK 0x00000080UL -#define CSR5_RU_SHIFT 7 - -/*------------------------------------------------------------------------------ - * CSR5_RI: - * RI field of register CSR5. - *------------------------------------------------------------------------------ - * Receive interrupt - */ -#define CSR5_RI_OFFSET 0x28 -#define CSR5_RI_MASK 0x00000040UL -#define CSR5_RI_SHIFT 6 - -/*------------------------------------------------------------------------------ - * CSR5_UNF: - * UNF field of register CSR5. - *------------------------------------------------------------------------------ - * Transmit underflow - */ -#define CSR5_UNF_OFFSET 0x28 -#define CSR5_UNF_MASK 0x00000020UL -#define CSR5_UNF_SHIFT 5 - -/*------------------------------------------------------------------------------ - * CSR5_TU: - * TU field of register CSR5. - *------------------------------------------------------------------------------ - * Transmit buffer unavailable - */ -#define CSR5_TU_OFFSET 0x28 -#define CSR5_TU_MASK 0x00000004UL -#define CSR5_TU_SHIFT 2 - -/*------------------------------------------------------------------------------ - * CSR5_TPS: - * TPS field of register CSR5. - *------------------------------------------------------------------------------ - * Transmit process stopped - */ -#define CSR5_TPS_OFFSET 0x28 -#define CSR5_TPS_MASK 0x00000002UL -#define CSR5_TPS_SHIFT 1 - -/*------------------------------------------------------------------------------ - * CSR5_TI: - * TI field of register CSR5. - *------------------------------------------------------------------------------ - * Transmit interrupt - */ -#define CSR5_TI_OFFSET 0x28 -#define CSR5_TI_MASK 0x00000001UL -#define CSR5_TI_SHIFT 0 - -/******************************************************************************* - * CSR6 register: - *------------------------------------------------------------------------------ - * CSR6 - Operation Mode Register - */ -#define CSR6_REG_OFFSET 0x30 - -/*------------------------------------------------------------------------------ - * CSR6_RA: - * RA field of register CSR6. - *------------------------------------------------------------------------------ - * Receive all - */ -#define CSR6_RA_OFFSET 0x30 -#define CSR6_RA_MASK 0x40000000UL -#define CSR6_RA_SHIFT 30 - -/*------------------------------------------------------------------------------ - * CSR6_TTM: - * TTM field of register CSR6. - *------------------------------------------------------------------------------ - * Transmit threshold mode - */ -#define CSR6_TTM_OFFSET 0x30 -#define CSR6_TTM_MASK 0x00400000UL -#define CSR6_TTM_SHIFT 22 - -/*------------------------------------------------------------------------------ - * CSR6_SF: - * SF field of register CSR6. - *------------------------------------------------------------------------------ - * Store and forward - */ -#define CSR6_SF_OFFSET 0x30 -#define CSR6_SF_MASK 0x00200000UL -#define CSR6_SF_SHIFT 21 - -/*------------------------------------------------------------------------------ - * CSR6_TR: - * TR field of register CSR6. - *------------------------------------------------------------------------------ - * Threshold control bits - */ -#define CSR6_TR_OFFSET 0x30 -#define CSR6_TR_MASK 0x0000C000UL -#define CSR6_TR_SHIFT 14 - -/*------------------------------------------------------------------------------ - * CSR6_ST: - * ST field of register CSR6. - *------------------------------------------------------------------------------ - * Start/stop transmit command - */ -#define CSR6_ST_OFFSET 0x30 -#define CSR6_ST_MASK 0x00002000UL -#define CSR6_ST_SHIFT 13 - -/*------------------------------------------------------------------------------ - * CSR6_FD: - * FD field of register CSR6. - *------------------------------------------------------------------------------ - * Full-duplex mode - */ -#define CSR6_FD_OFFSET 0x30 -#define CSR6_FD_MASK 0x00000200UL -#define CSR6_FD_SHIFT 9 - -/*------------------------------------------------------------------------------ - * CSR6_PM: - * PM field of register CSR6. - *------------------------------------------------------------------------------ - * Pass all multicast - */ -#define CSR6_PM_OFFSET 0x30 -#define CSR6_PM_MASK 0x00000080UL -#define CSR6_PM_SHIFT 7 - -/*------------------------------------------------------------------------------ - * CSR6_PR: - * PR field of register CSR6. - *------------------------------------------------------------------------------ - * Promiscuous mode - */ -#define CSR6_PR_OFFSET 0x30 -#define CSR6_PR_MASK 0x00000040UL -#define CSR6_PR_SHIFT 6 - -/*------------------------------------------------------------------------------ - * CSR6_IF: - * IF field of register CSR6. - *------------------------------------------------------------------------------ - * Inverse filtering - */ -#define CSR6_IF_OFFSET 0x30 -#define CSR6_IF_MASK 0x00000010UL -#define CSR6_IF_SHIFT 4 - -/*------------------------------------------------------------------------------ - * CSR6_PB: - * PB field of register CSR6. - *------------------------------------------------------------------------------ - * Pass bad frames - */ -#define CSR6_PB_OFFSET 0x30 -#define CSR6_PB_MASK 0x00000008UL -#define CSR6_PB_SHIFT 3 - -/*------------------------------------------------------------------------------ - * CSR6_HO: - * HO field of register CSR6. - *------------------------------------------------------------------------------ - * Hash-only filtering mode - */ -#define CSR6_HO_OFFSET 0x30 -#define CSR6_HO_MASK 0x00000004UL -#define CSR6_HO_SHIFT 2 - -/*------------------------------------------------------------------------------ - * CSR6_SR: - * SR field of register CSR6. - *------------------------------------------------------------------------------ - * Start/stop receive command - */ -#define CSR6_SR_OFFSET 0x30 -#define CSR6_SR_MASK 0x00000002UL -#define CSR6_SR_SHIFT 1 - -/*------------------------------------------------------------------------------ - * CSR6_HP: - * HP field of register CSR6. - *------------------------------------------------------------------------------ - * Hash/perfect receive filtering mode - */ -#define CSR6_HP_OFFSET 0x30 -#define CSR6_HP_MASK 0x00000001UL -#define CSR6_HP_SHIFT 0 - -/******************************************************************************* - * CSR7 register: - *------------------------------------------------------------------------------ - * CSR7 - Interrupt Enable Register - */ -#define CSR7_REG_OFFSET 0x38 - -/*------------------------------------------------------------------------------ - * CSR7_NIE: - * NIE field of register CSR7. - *------------------------------------------------------------------------------ - * Normal interrupt summary enable - */ -#define CSR7_NIE_OFFSET 0x38 -#define CSR7_NIE_MASK 0x00010000UL -#define CSR7_NIE_SHIFT 16 - -/*------------------------------------------------------------------------------ - * CSR7_AIE: - * AIE field of register CSR7. - *------------------------------------------------------------------------------ - * Abnormal interrupt summary enable - */ -#define CSR7_AIE_OFFSET 0x38 -#define CSR7_AIE_MASK 0x00008000UL -#define CSR7_AIE_SHIFT 15 - -/*------------------------------------------------------------------------------ - * CSR7_ERE: - * ERE field of register CSR7. - *------------------------------------------------------------------------------ - * Early receive interrupt enable - */ -#define CSR7_ERE_OFFSET 0x38 -#define CSR7_ERE_MASK 0x00004000UL -#define CSR7_ERE_SHIFT 14 - -/*------------------------------------------------------------------------------ - * CSR7_GTE: - * GTE field of register CSR7. - *------------------------------------------------------------------------------ - * General-purpose timer overflow enable - */ -#define CSR7_GTE_OFFSET 0x38 -#define CSR7_GTE_MASK 0x00000800UL -#define CSR7_GTE_SHIFT 11 - -/*------------------------------------------------------------------------------ - * CSR7_ETE: - * ETE field of register CSR7. - *------------------------------------------------------------------------------ - * Early transmit interrupt enable - */ -#define CSR7_ETE_OFFSET 0x38 -#define CSR7_ETE_MASK 0x00000400UL -#define CSR7_ETE_SHIFT 10 - -/*------------------------------------------------------------------------------ - * CSR7_RSE: - * RSE field of register CSR7. - *------------------------------------------------------------------------------ - * Receive stopped enable - */ -#define CSR7_RSE_OFFSET 0x38 -#define CSR7_RSE_MASK 0x00000100UL -#define CSR7_RSE_SHIFT 8 - -/*------------------------------------------------------------------------------ - * CSR7_RUE: - * RUE field of register CSR7. - *------------------------------------------------------------------------------ - * Receive buffer unavailable enable - */ -#define CSR7_RUE_OFFSET 0x38 -#define CSR7_RUE_MASK 0x00000080UL -#define CSR7_RUE_SHIFT 7 - -/*------------------------------------------------------------------------------ - * CSR7_RIE: - * RIE field of register CSR7. - *------------------------------------------------------------------------------ - * Receive interrupt enable - */ -#define CSR7_RIE_OFFSET 0x38 -#define CSR7_RIE_MASK 0x00000040UL -#define CSR7_RIE_SHIFT 6 - -/*------------------------------------------------------------------------------ - * CSR7_UNE: - * UNE field of register CSR7. - *------------------------------------------------------------------------------ - * Underflow interrupt enable - */ -#define CSR7_UNE_OFFSET 0x38 -#define CSR7_UNE_MASK 0x00000020UL -#define CSR7_UNE_SHIFT 5 - -/*------------------------------------------------------------------------------ - * CSR7_TUE: - * TUE field of register CSR7. - *------------------------------------------------------------------------------ - * Transmit buffer unavailable enable - */ -#define CSR7_TUE_OFFSET 0x38 -#define CSR7_TUE_MASK 0x00000004UL -#define CSR7_TUE_SHIFT 2 - -/*------------------------------------------------------------------------------ - * CSR7_TSE: - * TSE field of register CSR7. - *------------------------------------------------------------------------------ - * Transmit stopped enable - */ -#define CSR7_TSE_OFFSET 0x38 -#define CSR7_TSE_MASK 0x00000002UL -#define CSR7_TSE_SHIFT 1 - -/*------------------------------------------------------------------------------ - * CSR7_TIE: - * TIE field of register CSR7. - *------------------------------------------------------------------------------ - * Transmit interrupt enable - */ -#define CSR7_TIE_OFFSET 0x38 -#define CSR7_TIE_MASK 0x00000001UL -#define CSR7_TIE_SHIFT 0 - -/******************************************************************************* - * CSR8 register: - *------------------------------------------------------------------------------ - * CSR8 - Missed Frames and Overflow Counter Register - */ -#define CSR8_REG_OFFSET 0x40 - -/*------------------------------------------------------------------------------ - * CSR8_OCO: - * OCO field of register CSR8. - *------------------------------------------------------------------------------ - * Overflow counter overflow - */ -#define CSR8_OCO_OFFSET 0x40 -#define CSR8_OCO_MASK 0x10000000UL -#define CSR8_OCO_SHIFT 28 - -/*------------------------------------------------------------------------------ - * CSR8_FOC: - * FOC field of register CSR8. - *------------------------------------------------------------------------------ - * FIFO overflow counter - */ -#define CSR8_FOC_OFFSET 0x40 -#define CSR8_FOC_MASK 0x0FFE0000UL -#define CSR8_FOC_SHIFT 17 - -/*------------------------------------------------------------------------------ - * CSR8_MFO: - * MFO field of register CSR8. - *------------------------------------------------------------------------------ - * Missed frame overflow - */ -#define CSR8_MFO_OFFSET 0x40 -#define CSR8_MFO_MASK 0x00010000UL -#define CSR8_MFO_SHIFT 16 - -/*------------------------------------------------------------------------------ - * CSR8_MFC: - * MFC field of register CSR8. - *------------------------------------------------------------------------------ - * Missed frame counter - */ -#define CSR8_MFC_OFFSET 0x40 -#define CSR8_MFC_MASK 0x0000FFFFUL -#define CSR8_MFC_SHIFT 0 - -/******************************************************************************* - * CSR9 register: - *------------------------------------------------------------------------------ - * CSR9 - MII Management and Serial ROM Interface Register - */ -#define CSR9_REG_OFFSET 0x48 - -/*------------------------------------------------------------------------------ - * CSR9_MDI: - * MDI field of register CSR9. - *------------------------------------------------------------------------------ - * MII management data in signal - */ -#define CSR9_MDI_OFFSET 0x48 -#define CSR9_MDI_MASK 0x00080000UL -#define CSR9_MDI_SHIFT 19 - -/*------------------------------------------------------------------------------ - * CSR9_MII: - * MII field of register CSR9. - *------------------------------------------------------------------------------ - * MII management operation mode - */ -#define CSR9_MII_OFFSET 0x48 -#define CSR9_MII_MASK 0x00040000UL -#define CSR9_MII_SHIFT 18 - -/*------------------------------------------------------------------------------ - * CSR9_MDO: - * MDO field of register CSR9. - *------------------------------------------------------------------------------ - * MII management write data - */ -#define CSR9_MDO_OFFSET 0x48 -#define CSR9_MDO_MASK 0x00020000UL -#define CSR9_MDO_SHIFT 17 - -/*------------------------------------------------------------------------------ - * CSR9_MDC: - * MDC field of register CSR9. - *------------------------------------------------------------------------------ - * MII management clock - */ -#define CSR9_MDC_OFFSET 0x48 -#define CSR9_MDC_MASK 0x00010000UL -#define CSR9_MDC_SHIFT 16 - -/*------------------------------------------------------------------------------ - * CSR9_SDO: - * SDO field of register CSR9. - *------------------------------------------------------------------------------ - * Serial ROM data output - */ -#define CSR9_SDO_OFFSET 0x48 -#define CSR9_SDO_MASK 0x00000008UL -#define CSR9_SDO_SHIFT 3 - -/*------------------------------------------------------------------------------ - * CSR9_SDI: - * SDI field of register CSR9. - *------------------------------------------------------------------------------ - * Serial ROM data input - */ -#define CSR9_SDI_OFFSET 0x48 -#define CSR9_SDI_MASK 0x00000004UL -#define CSR9_SDI_SHIFT 2 - -/*------------------------------------------------------------------------------ - * CSR9_SCLK: - * SCLK field of register CSR9. - *------------------------------------------------------------------------------ - * Serial ROM clock - */ -#define CSR9_SCLK_OFFSET 0x48 -#define CSR9_SCLK_MASK 0x00000002UL -#define CSR9_SCLK_SHIFT 1 - -/*------------------------------------------------------------------------------ - * CSR9_SCS: - * SCS field of register CSR9. - *------------------------------------------------------------------------------ - * Serial ROM chip select - */ -#define CSR9_SCS_OFFSET 0x48 -#define CSR9_SCS_MASK 0x00000001UL -#define CSR9_SCS_SHIFT 0 - -/******************************************************************************* - * CSR11 register: - *------------------------------------------------------------------------------ - * CSR11 - General-Purpose Timer and Interrupt Mitigation Control Register - */ -#define CSR11_REG_OFFSET 0x58 - -/*------------------------------------------------------------------------------ - * CSR11_CS: - * CS field of register CSR11. - *------------------------------------------------------------------------------ - * Cycle size - */ -#define CSR11_CS_OFFSET 0x58 -#define CSR11_CS_MASK 0x80000000UL -#define CSR11_CS_SHIFT 31 - -/*------------------------------------------------------------------------------ - * CSR11_TT: - * TT field of register CSR11. - *------------------------------------------------------------------------------ - * Transmit timer - */ -#define CSR11_TT_OFFSET 0x58 -#define CSR11_TT_MASK 0x78000000UL -#define CSR11_TT_SHIFT 27 - -/*------------------------------------------------------------------------------ - * CSR11_NTP: - * NTP field of register CSR11. - *------------------------------------------------------------------------------ - * Number of transmit packets - */ -#define CSR11_NTP_OFFSET 0x58 -#define CSR11_NTP_MASK 0x07000000UL -#define CSR11_NTP_SHIFT 24 - -/*------------------------------------------------------------------------------ - * CSR11_RT: - * RT field of register CSR11. - *------------------------------------------------------------------------------ - * Receive timer - */ -#define CSR11_RT_OFFSET 0x58 -#define CSR11_RT_MASK 0x00F00000UL -#define CSR11_RT_SHIFT 20 - -/*------------------------------------------------------------------------------ - * CSR11_NRP: - * NRP field of register CSR11. - *------------------------------------------------------------------------------ - * Number of receive packets - */ -#define CSR11_NRP_OFFSET 0x58 -#define CSR11_NRP_MASK 0x000E0000UL -#define CSR11_NRP_SHIFT 17 - -/*------------------------------------------------------------------------------ - * CSR11_CON: - * CON field of register CSR11. - *------------------------------------------------------------------------------ - * Continuous mode - */ -#define CSR11_CON_OFFSET 0x58 -#define CSR11_CON_MASK 0x00010000UL -#define CSR11_CON_SHIFT 16 - -/*------------------------------------------------------------------------------ - * CSR11_TIM: - * TIM field of register CSR11. - *------------------------------------------------------------------------------ - * Timer value - */ -#define CSR11_TIM_OFFSET 0x58 -#define CSR11_TIM_MASK 0x0000FFFFUL -#define CSR11_TIM_SHIFT 0 - -#ifdef __cplusplus -} -#endif - -#endif /* MSS_ETHERNET_MAC_REGISTERS_H_*/ diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_ethernet_mac/mss_ethernet_mac_user_cfg.h b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_ethernet_mac/mss_ethernet_mac_user_cfg.h deleted file mode 100644 index 8711243f4..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_ethernet_mac/mss_ethernet_mac_user_cfg.h +++ /dev/null @@ -1,26 +0,0 @@ -/******************************************************************************* - * (c) Copyright 2007 Actel Corporation. All rights reserved. - * - * Actel:Firmware:MSS_Ethernet_MAC_Driver:2.0.103 configuration. - * - */ - - -#ifndef ACTEL__FIRMWARE__MSS_ETHERNET_MAC_DRIVER__2_0_103_CONFIGURATION_HEADER -#define ACTEL__FIRMWARE__MSS_ETHERNET_MAC_DRIVER__2_0_103_CONFIGURATION_HEADER - - -#define CORE_VENDOR "Actel" -#define CORE_LIBRARY "Firmware" -#define CORE_NAME "MSS_Ethernet_MAC_Driver" -#define CORE_VERSION "2.0.103" - -#define BUS_ARBITRATION_SCHEME 0 -#define PROGRAMMABLE_BURST_LENGTH 0 -#define RX_RING_SIZE 5 -#define SETUP_FRAME_TIME_OUT 10000 -#define STATE_CHANGE_TIME_OUT 10000 -#define TX_RING_SIZE 2 - -#endif // ACTEL__FIRMWARE__MSS_ETHERNET_MAC_DRIVER__2_0_103_CONFIGURATION_HEADER - diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_ethernet_mac/phy.c b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_ethernet_mac/phy.c deleted file mode 100644 index e0433bace..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_ethernet_mac/phy.c +++ /dev/null @@ -1,390 +0,0 @@ -/***************************************************************************//** - * PHY access methods for DP83848C. - * The implementation in this file is specific to the DP83848C, - * If a different PHY support is required the PHY specific registers must - * be updated. - * (c) Copyright 2007 Actel Corporation - * - * SVN $Revision: 2324 $ - * SVN $Date: 2010-02-26 10:47:36 +0000 (Fri, 26 Feb 2010) $ - * - ******************************************************************************/ - -#ifdef __cplusplus -extern "C" { -#endif - - -#include "mss_ethernet_mac.h" -#include "mss_ethernet_mac_regs.h" - -#include "phy.h" - -#include "FreeRTOS.h" -#include "task.h" - -extern MAC_instance_t g_mss_mac; - -/***************************** MDIO FUNCTIONS *********************************/ - -/* Defines ********************************************************************/ -#define MDIO_START 0x00004000UL -#define MDIO_READ 0x00002000UL -#define MDIO_WRITE 0x00001002UL -#define MDIO_ADDR_OFFSET 7UL -#define MDIO_ADDR_MASK 0x00000f80UL -#define MDIO_REG_ADDR_OFFSET 2UL -#define MDIO_REG_ADDR_MASK 0x0000007cUL -#define PREAMBLECOUNT 32UL -#define ONEMICROSECOND 20UL - -typedef enum { - MDIO_CMD_READ, - MDIO_CMD_WRITE -}mdio_cmd_t; - - - -/***************************************************************************//** - * Set clock high or low. - */ -static void -MDIO_management_clock -( - int32_t clock -) -{ - int32_t volatile a; - - MAC_BITBAND->CSR9_MDC = (uint32_t)clock; - - /* delay for 1us */ - for( a = 0; a < ONEMICROSECOND; a++ ){} -} - - -/***************************************************************************//** - * Send read or write command to PHY. - */ -static void -MDIO_send_cmd -( - uint8_t regad, - mdio_cmd_t mdio_cmd -) -{ - int32_t i; - uint16_t mask, data; - - /* enable MII output */ - MAC_BITBAND->CSR9_MDEN = 1; - - /* send 32 1's preamble */ - MAC_BITBAND->CSR9_MDO = 1; - for (i = 0; i < PREAMBLECOUNT; i++) { - MDIO_management_clock( 0 ); - MDIO_management_clock( 1 ); - } - - /* calculate data bits */ - data = MDIO_START | - (( mdio_cmd == MDIO_CMD_READ ) ? MDIO_READ : MDIO_WRITE ) | - ((g_mss_mac.phy_address << MDIO_ADDR_OFFSET) & MDIO_ADDR_MASK) | - ((regad << MDIO_REG_ADDR_OFFSET) & MDIO_REG_ADDR_MASK); - - /* sent out */ - for( mask = 0x00008000L; mask>0; mask >>= 1 ) - { - if ((mask == 0x2) && (mdio_cmd == MDIO_CMD_READ)) { - /* enable MII input */ - MAC_BITBAND->CSR9_MDEN = 0; - } - - MDIO_management_clock( 0 ); - - /* prepare MDO */ - MAC_BITBAND->CSR9_MDO = (uint32_t)((mask & data) != 0 ? 1UL : 0UL); - - MDIO_management_clock( 1 ); - } -} - - -/***************************************************************************//** - * Reads a PHY register. - */ -static uint16_t -MDIO_read -( - uint8_t regad -) -{ - uint16_t mask; - uint16_t data; - - MDIO_send_cmd( regad, MDIO_CMD_READ); - - /* read data */ - data = 0; - for( mask = 0x00008000L; mask>0; mask >>= 1 ) - { - MDIO_management_clock( 0 ); - - /* read MDI */ - if(MAC_BITBAND-> CSR9_MDI != 0){ - data |= mask; - } - - MDIO_management_clock( 1 ); - } - - MDIO_management_clock( 0 ); - - return data; -} - - -/***************************************************************************//** - * Writes to a PHY register. - */ -static void -MDIO_write -( - uint8_t regad, - uint16_t data -) -{ - uint16_t mask; - - MDIO_send_cmd(regad, MDIO_CMD_WRITE); - - /* write data */ - for( mask = 0x00008000L; mask>0; mask >>= 1 ) - { - MDIO_management_clock( 0 ); - - /* prepare MDO */ - MAC_BITBAND->CSR9_MDO = (uint32_t)((mask & data) != 0 ? 1UL : 0UL); - - MDIO_management_clock( 1 ); - } - - MDIO_management_clock( 0 ); -} - - -/****************************** PHY FUNCTIONS *********************************/ - -/* Defines ********************************************************************/ - -/* Base registers */ -#define PHYREG_MIIMCR 0x00 /**< MII Management Control Register */ -#define MIIMCR_RESET (1<<15) -#define MIIMCR_LOOPBACK (1<<14) -#define MIIMCR_SPEED_SELECT (1<<13) -#define MIIMCR_ENABLE_AUTONEGOTIATION (1<<12) -#define MIIMCR_RESTART_AUTONEGOTIATION (1<<9) -#define MIIMCR_DUPLEX_MODE (1<<8) -#define MIIMCR_COLLISION_TEST (1<<7) - -#define PHYREG_MIIMSR 0x01 /**< MII Management Status Register */ -#define MIIMSR_ANC (1<<5) /**< Auto-Negotiation Completed. */ -#define MIIMSR_LINK (1<<2) /**< Link is established. */ - -#define PHYREG_PHYID1R 0x02 /**< PHY Identifier 1 Register */ -#define PHYREG_PHYID2R 0x03 /**< PHY Identifier 2 Register */ - -#define PHYREG_ANAR 0x04 /**< Auto-Negotiation Advertisement Register */ -#define ANAR_100FD (1<<8) -#define ANAR_100HD (1<<7) -#define ANAR_10FD (1<<6) -#define ANAR_10HD (1<<5) - -#define PHYREG_ANLPAR 0x05 /**< Auto-Negotiation Link Partner Ability Register */ -#define PHYREG_ANER 0x06 /**< Auto-Negotiation Expansion Register */ -#define PHYREG_NPAR 0x07 /**< Next Page Advertisement Register */ -/* 0x08- 0x0F Reserved */ -#define PHYREG_MFR 0x10 /**< Miscellaneous Features Register */ -#define PHYREG_ICSR 0x11 /**< Interrupt Control/Status Register */ - -#define PHYREG_DR 0x12 /**< Diagnostic Register */ -#define DR_DPLX (1<<11) -#define DR_DATA_RATE (1<<10) - -#define PHYREG_PMLR 0x13 /**< Power Management & Loopback Register */ -/* 0x14 Reserved */ -#define PHYREG_MCR 0x15 /**< Mode Control Register */ -#define MCR_LED_SEL (1<<9) -/* 0x16 Reserved */ -#define PHYREG_DCR 0x17 /**< Disconnect Counter */ -#define PHYREG_RECR 0x18 /**< Receive Error Counter */ -/* 0x19-0x1F Reserved */ - -/***************************************************************************//** - * Probe used PHY. - * - * return PHY address. If PHY don't fount, returns 255. - */ -uint8_t PHY_probe( void ) -{ - uint8_t phy; - uint8_t phy_found; - uint16_t reg; - - phy_found = 0; - for (phy = MSS_PHY_ADDRESS_MIN; phy <= MSS_PHY_ADDRESS_MAX; phy++) { - g_mss_mac.phy_address = phy; - - reg = MDIO_read( PHYREG_PHYID1R ); - - if ((reg != 0x0000ffffUL) && (reg != 0x00000000UL)) { - phy_found = 1; - phy = MSS_PHY_ADDRESS_MAX + 1; - } - } - - if( phy_found == 0 ) { - g_mss_mac.phy_address = MSS_PHY_ADDRESS_AUTO_DETECT; - } - return g_mss_mac.phy_address; -} - - -/***************************************************************************//** - * Resets the PHY. - */ -void PHY_reset( void ) -{ - MDIO_write( PHYREG_MIIMCR, MIIMCR_RESET ); - MDIO_write( PHYREG_MIIMCR, - MIIMCR_ENABLE_AUTONEGOTIATION | - MIIMCR_RESTART_AUTONEGOTIATION | - MIIMCR_COLLISION_TEST ); -} - - -/***************************************************************************//** - * Restarts PHY auto-negotiation and wait until it's over. - */ -void PHY_auto_negotiate( void ) -{ - uint16_t reg; - - reg = MDIO_read( PHYREG_MIIMCR ); - MDIO_write( PHYREG_MIIMCR, - (uint16_t)( MIIMCR_ENABLE_AUTONEGOTIATION | - MIIMCR_RESTART_AUTONEGOTIATION | - reg) ); - - for( ;; ) { - reg = MDIO_read( PHYREG_MIIMSR ); - if( (reg & MIIMSR_ANC) != 0 ) { - break; - } else { - vTaskDelay( 200 ); - } - } -} - - -/***************************************************************************//** - * Returns link status. - * - * @return #MAC_LINK_STATUS_LINK if link is up. - */ -uint8_t PHY_link_status( void ) -{ - uint8_t retval = 0; - if(( MDIO_read( PHYREG_MIIMSR ) & MIIMSR_LINK ) != 0 ){ - retval = MSS_MAC_LINK_STATUS_LINK; - } - return retval; -} - - -/***************************************************************************//** - * Returns link type. - * - * @return the logical OR of the following values: - * #MAC_LINK_STATUS_100MB - Connection is 100Mb - * #MAC_LINK_STATUS_FDX - Connection is full duplex - */ -uint8_t PHY_link_type( void ) -{ - uint16_t diagnostic; - uint8_t type = 0; - - diagnostic = MDIO_read( PHYREG_DR ); - - if( (diagnostic & DR_DPLX) != 0 ) { - type = MSS_MAC_LINK_STATUS_FDX; - } - - if( (diagnostic & DR_DATA_RATE) != 0 ) { - type |= MSS_MAC_LINK_STATUS_100MB; - } - - return type; -} - - -/***************************************************************************//** - * Sets link type. - */ -void -PHY_set_link_type -( - uint8_t type -) -{ - uint16_t reg; - - reg = MDIO_read( PHYREG_ANAR ); - reg |= ANAR_100FD | ANAR_100HD | ANAR_10FD | ANAR_10HD; - - if( (type & MSS_MAC_LINK_STATUS_100MB) == 0 ) { - reg &= ~(ANAR_100FD | ANAR_100HD); - } - - if( (type & MSS_MAC_LINK_STATUS_FDX) == 0 ) { - reg &= ~(ANAR_100FD | ANAR_10FD); - } - - MDIO_write( PHYREG_ANAR, reg ); -} - - -/***************************************************************************//** - * Puts the Phy in Loopback mode - */ -uint16_t -PHY_set_loopback -( - uint8_t enable -) -{ - - uint16_t reg = 0; - - - reg = MDIO_read( PHYREG_MIIMCR ); - // If set to one we need to set the LOCAL Phy loopback - if(enable == 1) - reg |= MIIMCR_LOOPBACK; - else // else we want to clear the bit.. - reg ^= MIIMCR_LOOPBACK; - - - MDIO_write( PHYREG_MIIMCR,reg ); - reg = MDIO_read( PHYREG_MIIMCR ); - - return reg; - -} - -#ifdef __cplusplus -} -#endif - -/******************************** END OF FILE *********************************/ - diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_ethernet_mac/phy.h b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_ethernet_mac/phy.h deleted file mode 100644 index e61daaed2..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_ethernet_mac/phy.h +++ /dev/null @@ -1,78 +0,0 @@ -/***************************************************************************//** - * PHY access methods. - * - * (c) Copyright 2007 Actel Corporation - * - * SVN $Revision: 2293 $ - * SVN $Date: 2010-02-24 13:52:02 +0000 (Wed, 24 Feb 2010) $ - * - ******************************************************************************/ - -#ifndef __MSS_ETHERNET_MAC_PHY_H -#define __MSS_ETHERNET_MAC_PHY_H 1 - -#ifdef __cplusplus -extern "C" { -#endif - -/***************************************************************************//** - * Resets the PHY. - */ -void PHY_reset( void ); - - -/***************************************************************************//** - * Restarts PHY auto-negotiation and wait until it's over. - */ -void PHY_auto_negotiate( void ); - - -/***************************************************************************//** - * Probe used PHY. - * - * return PHY address. If PHY don't fount, returns 255. - */ -uint8_t PHY_probe( void ); - - -/***************************************************************************//** - * Returns link status. - * - * @return #MAC_LINK_STATUS_LINK if link is up. - */ -uint8_t PHY_link_status( void ); - - -/***************************************************************************//** - * Returns link type. - * - * @return the logical OR of the following values: - * #MAC_LINK_STATUS_100MB - Connection is 100Mb - * #MAC_LINK_STATUS_FDX - Connection is full duplex - */ -uint8_t PHY_link_type( void ); - - -/***************************************************************************//** - * Sets link type. - */ -void -PHY_set_link_type -( - uint8_t type -); - -/***************************************************************************//** - * Sets/Clears the phy loop back mode, based on the enable value - */ -uint16_t -PHY_set_loopback -( - uint8_t enable -); - -#ifdef __cplusplus -} -#endif - -#endif /*__MSS_ETHERNET_MAC_PHY_H*/ diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_gpio/mss_gpio.c b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_gpio/mss_gpio.c deleted file mode 100644 index e3be9aaa0..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_gpio/mss_gpio.c +++ /dev/null @@ -1,283 +0,0 @@ -/******************************************************************************* - * (c) Copyright 2008 Actel Corporation. All rights reserved. - * - * SmartFusion microcontroller subsystem GPIO bare metal driver implementation. - * - * SVN $Revision: 1753 $ - * SVN $Date: 2009-12-11 15:12:18 +0000 (Fri, 11 Dec 2009) $ - */ -#include "mss_gpio.h" -#include "../../CMSIS/mss_assert.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/*-------------------------------------------------------------------------*//** -* -*/ -#define GPIO_INT_ENABLE_MASK (uint32_t)0x00000008UL -#define OUTPUT_BUFFER_ENABLE_MASK 0x00000004UL - -#define NB_OF_GPIO (uint32_t)32 - -/*-------------------------------------------------------------------------*//** - * Lookup table of GPIO configuration registers address indexed on GPIO ID. - */ -static uint32_t volatile * const g_config_reg_lut[NB_OF_GPIO] = -{ - &(GPIO->GPIO_0_CFG), - &(GPIO->GPIO_1_CFG), - &(GPIO->GPIO_2_CFG), - &(GPIO->GPIO_3_CFG), - &(GPIO->GPIO_4_CFG), - &(GPIO->GPIO_5_CFG), - &(GPIO->GPIO_6_CFG), - &(GPIO->GPIO_7_CFG), - &(GPIO->GPIO_8_CFG), - &(GPIO->GPIO_9_CFG), - &(GPIO->GPIO_10_CFG), - &(GPIO->GPIO_11_CFG), - &(GPIO->GPIO_12_CFG), - &(GPIO->GPIO_13_CFG), - &(GPIO->GPIO_14_CFG), - &(GPIO->GPIO_15_CFG), - &(GPIO->GPIO_16_CFG), - &(GPIO->GPIO_17_CFG), - &(GPIO->GPIO_18_CFG), - &(GPIO->GPIO_19_CFG), - &(GPIO->GPIO_20_CFG), - &(GPIO->GPIO_21_CFG), - &(GPIO->GPIO_22_CFG), - &(GPIO->GPIO_23_CFG), - &(GPIO->GPIO_24_CFG), - &(GPIO->GPIO_25_CFG), - &(GPIO->GPIO_26_CFG), - &(GPIO->GPIO_27_CFG), - &(GPIO->GPIO_28_CFG), - &(GPIO->GPIO_29_CFG), - &(GPIO->GPIO_30_CFG), - &(GPIO->GPIO_31_CFG) -}; - -/*-------------------------------------------------------------------------*//** - * Lookup table of Cortex-M3 GPIO interrupt number indexed on GPIO ID. - */ -static const IRQn_Type g_gpio_irqn_lut[NB_OF_GPIO] = -{ - GPIO0_IRQn, - GPIO1_IRQn, - GPIO2_IRQn, - GPIO3_IRQn, - GPIO4_IRQn, - GPIO5_IRQn, - GPIO6_IRQn, - GPIO7_IRQn, - GPIO8_IRQn, - GPIO9_IRQn, - GPIO10_IRQn, - GPIO11_IRQn, - GPIO12_IRQn, - GPIO13_IRQn, - GPIO14_IRQn, - GPIO15_IRQn, - GPIO16_IRQn, - GPIO17_IRQn, - GPIO18_IRQn, - GPIO19_IRQn, - GPIO20_IRQn, - GPIO21_IRQn, - GPIO22_IRQn, - GPIO23_IRQn, - GPIO24_IRQn, - GPIO25_IRQn, - GPIO26_IRQn, - GPIO27_IRQn, - GPIO28_IRQn, - GPIO29_IRQn, - GPIO30_IRQn, - GPIO31_IRQn -}; - -/*-------------------------------------------------------------------------*//** - * MSS_GPIO_init - * See "mss_gpio.h" for details of how to use this function. - */ -void MSS_GPIO_init( void ) -{ - uint32_t i; - - /* reset MSS GPIO hardware */ - SYSREG->SOFT_RST_CR |= SYSREG_GPIO_SOFTRESET_MASK; - /* Clear any previously pended MSS GPIO interrupt */ - for ( i = 0U; i < NB_OF_GPIO; ++i ) - { - NVIC_ClearPendingIRQ( g_gpio_irqn_lut[i] ); - } - /* Take MSS GPIO hardware out of reset. */ - SYSREG->SOFT_RST_CR &= ~SYSREG_GPIO_SOFTRESET_MASK; -} - -/*-------------------------------------------------------------------------*//** - * MSS_GPIO_config - * See "mss_gpio.h" for details of how to use this function. - */ -void MSS_GPIO_config -( - mss_gpio_id_t port_id, - uint32_t config -) -{ - uint32_t gpio_idx = (uint32_t)port_id; - - ASSERT( gpio_idx < NB_OF_GPIO ); - - if ( gpio_idx < NB_OF_GPIO ) - { - *(g_config_reg_lut[gpio_idx]) = config; - } -} - -/*-------------------------------------------------------------------------*//** - * MSS_GPIO_set_output - * See "mss_gpio.h" for details of how to use this function. - */ -void MSS_GPIO_set_output -( - mss_gpio_id_t port_id, - uint8_t value -) -{ - uint32_t gpio_idx = (uint32_t)port_id; - - ASSERT( gpio_idx < NB_OF_GPIO ); - - if ( gpio_idx < NB_OF_GPIO ) - { - GPIO_BITBAND->GPIO_OUT[gpio_idx] = (uint32_t)value; - } -} - -/*-------------------------------------------------------------------------*//** - * MSS_GPIO_drive_inout - * See "mss_gpio.h" for details of how to use this function. - */ -void MSS_GPIO_drive_inout -( - mss_gpio_id_t port_id, - mss_gpio_inout_state_t inout_state -) -{ - uint32_t outputs_state; - uint32_t config; - uint32_t gpio_idx = (uint32_t)port_id; - - ASSERT( gpio_idx < NB_OF_GPIO ); - - if ( gpio_idx < NB_OF_GPIO ) - { - switch( inout_state ) - { - case MSS_GPIO_DRIVE_HIGH: - /* Set output high */ - outputs_state = GPIO->GPIO_OUT; - outputs_state |= (uint32_t)1 << gpio_idx; - GPIO->GPIO_OUT = outputs_state; - /* Enable output buffer */ - config = *(g_config_reg_lut[gpio_idx]); - config |= OUTPUT_BUFFER_ENABLE_MASK; - *(g_config_reg_lut[gpio_idx]) = config; - break; - - case MSS_GPIO_DRIVE_LOW: - /* Set output low */ - outputs_state = GPIO->GPIO_OUT; - outputs_state &= ~((uint32_t)((uint32_t)1 << gpio_idx)); - GPIO->GPIO_OUT = outputs_state; - /* Enable output buffer */ - config = *(g_config_reg_lut[gpio_idx]); - config |= OUTPUT_BUFFER_ENABLE_MASK; - *(g_config_reg_lut[gpio_idx]) = config; - break; - - case MSS_GPIO_HIGH_Z: - /* Disable output buffer */ - config = *(g_config_reg_lut[gpio_idx]); - config &= ~OUTPUT_BUFFER_ENABLE_MASK; - *(g_config_reg_lut[gpio_idx]) = config; - break; - - default: - ASSERT(0); - break; - } - } -} - -/*-------------------------------------------------------------------------*//** - * MSS_GPIO_enable_irq - * See "mss_gpio.h" for details of how to use this function. - */ -void MSS_GPIO_enable_irq -( - mss_gpio_id_t port_id -) -{ - uint32_t cfg_value; - uint32_t gpio_idx = (uint32_t)port_id; - - ASSERT( gpio_idx < NB_OF_GPIO ); - - if ( gpio_idx < NB_OF_GPIO ) - { - cfg_value = *(g_config_reg_lut[gpio_idx]); - *(g_config_reg_lut[gpio_idx]) = (cfg_value | GPIO_INT_ENABLE_MASK); - NVIC_EnableIRQ( g_gpio_irqn_lut[gpio_idx] ); - } -} - -/*-------------------------------------------------------------------------*//** - * MSS_GPIO_disable_irq - * See "mss_gpio.h" for details of how to use this function. - */ -void MSS_GPIO_disable_irq -( - mss_gpio_id_t port_id -) -{ - uint32_t cfg_value; - uint32_t gpio_idx = (uint32_t)port_id; - - ASSERT( gpio_idx < NB_OF_GPIO ); - - if ( gpio_idx < NB_OF_GPIO ) - { - cfg_value = *(g_config_reg_lut[gpio_idx]); - *(g_config_reg_lut[gpio_idx]) = (cfg_value & ~GPIO_INT_ENABLE_MASK); - } -} - -/*-------------------------------------------------------------------------*//** - * MSS_GPIO_clear_irq - * See "mss_gpio.h" for details of how to use this function. - */ -void MSS_GPIO_clear_irq -( - mss_gpio_id_t port_id -) -{ - uint32_t gpio_idx = (uint32_t)port_id; - - ASSERT( gpio_idx < NB_OF_GPIO ); - - if ( gpio_idx < NB_OF_GPIO ) - { - GPIO->GPIO_IRQ = ((uint32_t)1) << gpio_idx; - NVIC_ClearPendingIRQ( g_gpio_irqn_lut[gpio_idx] ); - } -} - -#ifdef __cplusplus -} -#endif - diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_gpio/mss_gpio.h b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_gpio/mss_gpio.h deleted file mode 100644 index 60220f128..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_gpio/mss_gpio.h +++ /dev/null @@ -1,488 +0,0 @@ -/******************************************************************************* - * (c) Copyright 2008 Actel Corporation. All rights reserved. - * - * SmartFusion Microcontroller Subsystem GPIO bare metal software driver public - * API. - * - * SVN $Revision: 1751 $ - * SVN $Date: 2009-12-11 15:05:48 +0000 (Fri, 11 Dec 2009) $ - */ - -/*=========================================================================*//** - @mainpage SmartFusion MSS GPIO Bare Metal Driver. - - @section intro_sec Introduction - The SmartFusion Microcontroller Subsystem (MSS) includes a block of 32 general - purpose input/outputs (GPIO). - This software driver provides a set of functions for controlling the MSS GPIO - block as part of a bare metal system where no operating system is available. - This driver can be adapted for use as part of an operating system but the - implementation of the adaptation layer between this driver and the operating - system's driver model is outside the scope of this driver. - - @section hw_dependencies Hardware Flow Dependencies - The configuration of all features of the MSS GPIOs is covered by this driver - with the exception of the SmartFusion IOMUX configuration. SmartFusion allows - multiple non-concurrent use of some external pins through IOMUX configuration. - This feature allows optimizing external pin usage by assigning external pins - for usage by either the microcontroller subsystem or the FPGA fabric. - The MSS GPIO ports 0 to 15 are always connected to external pins but GPIO ports - 16 to 31 are routed through IOMUX to the SmartFusion device external pins. - These IOMUX are configured using the MSS Configurator tool. - Make sure the MSS GPIOs 16 to 31 are enabled in the MSS Configurator tool if - you wish to use them - - @section theory_op Theory of Operation - The MSS GPIO driver uses the SmartFusion "Cortex Microcontroler Software - Interface Standard - Peripheral Access Layer" (CMSIS-PAL) to access MSS hardware - registers. You must ensure that the SmartFusion CMSIS-PAL is either included - in the software toolchain used to build your project or is included in your - project. The most up-to-date SmartFusion CMSIS-PAL files can be obtained using - the Actel Firmware Catalog. - - The MSS GPIO driver functions are grouped into the following categories: - - Initiliazation - - Configuration - - Reading and setting GPIO state - - Interrupt control - - The MSS GPIO driver is initialized through a call to the GPIO_init() function. - The GPIO_init() function must be called before any other GPIO driver functions - can be called. - - Each GPIO port is individually configured through a call to the - MSS_GPIO_config() function. Configuration includes deciding if a GPIO port - will be used as an input, an output or both. GPIO ports configured as inputs can be - further configured to generate interrupts based on the input's state. - Interrupts can be level or edge sensitive. - - The state of the GPIO ports can be read and set using the following functions: - - MSS_GPIO_get_inputs() - - MSS_GPIO_get_outputs() - - MSS_GPIO_set_outputs() - - MSS_GPIO_set_output() - - MSS_GPIO_drive_inout() - - Interrupts generated by GPIO ports configured as inputs are controlled using - the following functions: - - MSS_GPIO_enable_irq() - - MSS_GPIO_disable_irq() - - MSS_GPIO_clear_irq() - - *//*=========================================================================*/ -#ifndef MSS_GPIO_H_ -#define MSS_GPIO_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include "../../CMSIS/a2fxxxm3.h" - -/*-------------------------------------------------------------------------*//** - The mss_gpio_id_t enumeration is used to identify GPIOs as part of the - parameter to functions: - - MSS_GPIO_config(), - - MSS_GPIO_drive_inout(), - - MSS_GPIO_enable_irq(), - - MSS_GPIO_disable_irq(), - - MSS_GPIO_clear_irq() - */ -typedef enum __mss_gpio_id_t -{ - MSS_GPIO_0 = 0, - MSS_GPIO_1 = 1, - MSS_GPIO_2 = 2, - MSS_GPIO_3 = 3, - MSS_GPIO_4 = 4, - MSS_GPIO_5 = 5, - MSS_GPIO_6 = 6, - MSS_GPIO_7 = 7, - MSS_GPIO_8 = 8, - MSS_GPIO_9 = 9, - MSS_GPIO_10 = 10, - MSS_GPIO_11 = 11, - MSS_GPIO_12 = 12, - MSS_GPIO_13 = 13, - MSS_GPIO_14 = 14, - MSS_GPIO_15 = 15, - MSS_GPIO_16 = 16, - MSS_GPIO_17 = 17, - MSS_GPIO_18 = 18, - MSS_GPIO_19 = 19, - MSS_GPIO_20 = 20, - MSS_GPIO_21 = 21, - MSS_GPIO_22 = 22, - MSS_GPIO_23 = 23, - MSS_GPIO_24 = 24, - MSS_GPIO_25 = 25, - MSS_GPIO_26 = 26, - MSS_GPIO_27 = 27, - MSS_GPIO_28 = 28, - MSS_GPIO_29 = 29, - MSS_GPIO_30 = 30, - MSS_GPIO_31 = 31 -} mss_gpio_id_t; - -/*-------------------------------------------------------------------------*//** - GPIO ports definitions used to identify GPIOs as part of the parameter to - function MSS_GPIO_set_outputs(). - These definitions can also be used to identity GPIO through logical - operations on the return value of function MSS_GPIO_get_inputs(). - */ -#define MSS_GPIO_0_MASK 0x00000001UL -#define MSS_GPIO_1_MASK 0x00000002UL -#define MSS_GPIO_2_MASK 0x00000004UL -#define MSS_GPIO_3_MASK 0x00000008UL -#define MSS_GPIO_4_MASK 0x00000010UL -#define MSS_GPIO_5_MASK 0x00000020UL -#define MSS_GPIO_6_MASK 0x00000040UL -#define MSS_GPIO_7_MASK 0x00000080UL -#define MSS_GPIO_8_MASK 0x00000100UL -#define MSS_GPIO_9_MASK 0x00000200UL -#define MSS_GPIO_10_MASK 0x00000400UL -#define MSS_GPIO_11_MASK 0x00000800UL -#define MSS_GPIO_12_MASK 0x00001000UL -#define MSS_GPIO_13_MASK 0x00002000UL -#define MSS_GPIO_14_MASK 0x00004000UL -#define MSS_GPIO_15_MASK 0x00008000UL -#define MSS_GPIO_16_MASK 0x00010000UL -#define MSS_GPIO_17_MASK 0x00020000UL -#define MSS_GPIO_18_MASK 0x00040000UL -#define MSS_GPIO_19_MASK 0x00080000UL -#define MSS_GPIO_20_MASK 0x00100000UL -#define MSS_GPIO_21_MASK 0x00200000UL -#define MSS_GPIO_22_MASK 0x00400000UL -#define MSS_GPIO_23_MASK 0x00800000UL -#define MSS_GPIO_24_MASK 0x01000000UL -#define MSS_GPIO_25_MASK 0x02000000UL -#define MSS_GPIO_26_MASK 0x04000000UL -#define MSS_GPIO_27_MASK 0x08000000UL -#define MSS_GPIO_28_MASK 0x10000000UL -#define MSS_GPIO_29_MASK 0x20000000UL -#define MSS_GPIO_30_MASK 0x40000000UL -#define MSS_GPIO_31_MASK 0x80000000UL - -/*-------------------------------------------------------------------------*//** - * GPIO modes - */ -#define MSS_GPIO_INPUT_MODE 0x0000000002UL -#define MSS_GPIO_OUTPUT_MODE 0x0000000005UL -#define MSS_GPIO_INOUT_MODE 0x0000000003UL - -/*-------------------------------------------------------------------------*//** - * Possible GPIO inputs interrupt configurations. - */ -#define MSS_GPIO_IRQ_LEVEL_HIGH 0x0000000000UL -#define MSS_GPIO_IRQ_LEVEL_LOW 0x0000000020UL -#define MSS_GPIO_IRQ_EDGE_POSITIVE 0x0000000040UL -#define MSS_GPIO_IRQ_EDGE_NEGATIVE 0x0000000060UL -#define MSS_GPIO_IRQ_EDGE_BOTH 0x0000000080UL - -/*-------------------------------------------------------------------------*//** - * Possible states for GPIO configured as INOUT. - */ -typedef enum mss_gpio_inout_state -{ - MSS_GPIO_DRIVE_LOW = 0, - MSS_GPIO_DRIVE_HIGH, - MSS_GPIO_HIGH_Z -} mss_gpio_inout_state_t; - -/*-------------------------------------------------------------------------*//** - The MSS_GPIO_init() function initializes the SmartFusion MSS GPIO block. It - resets the MSS GPIO hardware block and it also clears any pending MSS GPIO - interrupts in the Cortex-M3 interrupt controller. - - @return - none. - */ -void MSS_GPIO_init( void ); - -/*-------------------------------------------------------------------------*//** - The MSS_GPIO_config() function is used to configure an individual - GPIO port. - - @param port_id - The port_id parameter identifies the GPIO port to be configured. - An enumeration item of the form MSS_GPIO_n where n is the number of the GPIO - port is used to identify the GPIO port. For example MSS_GPIO_0 identifies - the first GPIO port and MSS_GPIO_31 the last one. - - @param config - The config parameter specifies the configuration to be applied to the GPIO - port identified by the port_id parameter. It is a logical OR of the required - I/O mode and the required interrupt mode. The interrupt mode is not relevant - if the GPIO is configured as an output only. - These I/O mode constants are allowed: - - MSS_GPIO_INPUT_MODE - - MSS_GPIO_OUTPUT_MODE - - MSS_GPIO_INOUT_MODE - These interrupt mode constants are allowed: - - MSS_GPIO_IRQ_LEVEL_HIGH - - MSS_GPIO_IRQ_LEVEL_LOW - - MSS_GPIO_IRQ_EDGE_POSITIVE - - MSS_GPIO_IRQ_EDGE_NEGATIVE - - MSS_GPIO_IRQ_EDGE_BOTH - - @return - none. - - Example: - The following call will configure GPIO 4 as an input generating interrupts on - a low to high transition of the input: - @code - MSS_GPIO_config( MSS_GPIO_4, MSS_GPIO_INPUT_MODE | MSS_GPIO_IRQ_EDGE_POSITIVE ); - @endcode - */ -void MSS_GPIO_config -( - mss_gpio_id_t port_id, - uint32_t config -); - -/*-------------------------------------------------------------------------*//** - The MSS_GPIO_set_outputs() function is used to set the state of all GPIO - ports configured as outputs. - - @param value - The value parameter specifies the state of the GPIO ports configured as - outputs. It is a bit mask of the form (MSS_GPIO_n_MASK | MSS_GPIO_m_MASK) where n - and m are numbers identifying GPIOs. - For example (MSS_GPIO_0_MASK | MSS_GPIO_1_MASK | MSS_GPIO_2_MASK ) specifies - that the first, second and third GPIOs' must be set high and all other - outputs set low. - The driver provides 32 mask constants, MSS_GPIO_0_MASK to MSS_GPIO_31_MASK - inclusive, for this purpose. - - @return - none. - - Example 1: - Set GPIOs outputs 0 and 8 high and all other GPIO outputs low. - @code - MSS_GPIO_set_outputs( MSS_GPIO_0_MASK | MSS_GPIO_8_MASK ); - @endcode - - Example 2: - Set GPIOs outputs 2 and 4 low without affecting other GPIO outputs. - @code - uint32_t gpio_outputs; - gpio_outputs = MSS_GPIO_get_outputs(); - gpio_outputs &= ~( MSS_GPIO_2_MASK | MSS_GPIO_4_MASK ); - MSS_GPIO_set_outputs( gpio_outputs ); - @endcode - - @see MSS_GPIO_get_outputs() - */ -static __INLINE void -MSS_GPIO_set_outputs -( - uint32_t value -) -{ - GPIO->GPIO_OUT = value; -} - -/*-------------------------------------------------------------------------*//** - The MSS_GPIO_set_output() function is used to set the state of a single GPIO - port configured as output. - - @param port_id - The port_id parameter identifies the GPIO port that is to have its output set. - An enumeration item of the form MSS_GPIO_n where n is the number of the GPIO - port is used to identify the GPIO port. For example MSS_GPIO_0 identifies the - first GPIO port and MSS_GPIO_31 the last one. - - @param value - The value parameter specifies the desired state for the GPIO output. A value - of 0 will set the output low and a value of 1 will set the output high. - - @return - none. - */ -void MSS_GPIO_set_output -( - mss_gpio_id_t port_id, - uint8_t value -); - -/*-------------------------------------------------------------------------*//** - The MSS_GPIO_get_inputs() function is used to read the current state of all - GPIO ports confgured as inputs. - - @return - This function returns a 32 bit unsigned integer where each bit represents - the state of a GPIO input. The least significant bit represents the state of - GPIO input 0 and the most significant bit the state of GPIO input 31. - - Example: - Read and assign the current state of the GPIO outputs to a variable. - @code - uint32_t gpio_inputs; - gpio_inputs = MSS_GPIO_get_inputs(); - @endcode - */ -static __INLINE uint32_t -MSS_GPIO_get_inputs( void ) -{ - return GPIO->GPIO_IN; -} - -/*-------------------------------------------------------------------------*//** - The MSS_GPIO_get_outputs() function is used to read the current state of all - GPIO ports confgured as outputs. - - @return - This function returns a 32 bit unsigned integer where each bit represents - the state of a GPIO output. The least significant bit represents the state - of GPIO output 0 and the most significant bit the state of GPIO output 31. - - Example: - Read and assign the current state of the GPIO outputs to a variable. - @code - uint32_t gpio_outputs; - gpio_outputs = MSS_GPIO_get_outputs(); - @endcode - */ -static __INLINE uint32_t -MSS_GPIO_get_outputs( void ) -{ - return GPIO->GPIO_OUT; -} - -/*-------------------------------------------------------------------------*//** - The MSS_GPIO_drive_inout() function is used to set the output state of a single - GPIO port configured as an INOUT. An INOUT GPIO can be in one of three states: - - high - - low - - high impedance - An INOUT output would typically be used where several devices can drive the - state of a shared signal line. The high and low states are equivalent to the - high and low states of a GPIO configured as output. The high impedance state - is used to prevent the GPIO from driving its output state onto the signal line, - while at the same time allowing the input state of the GPIO to be read - - @param port_id - The port_id parameter identifies the GPIO port for which you want to change - the output state. - An enumeration item of the form MSS_GPIO_n where n is the number of the GPIO - port is used to identify the GPIO port. For example MSS_GPIO_0 identifies - the first GPIO port and MSS_GPIO_31 the last one. - - @param inout_state - The inout_state parameter specifies the state of the GPIO port identified by - the port_id parameter. Allowed values of type mss_gpio_inout_state_t are: - - MSS_GPIO_DRIVE_HIGH - - MSS_GPIO_DRIVE_LOW - - MSS_GPIO_HIGH_Z (high impedance) - - @return - none. - - Example: - The call to MSS_GPIO_drive_inout() below will set the GPIO 7 output to the - high impedance state. - @code - MSS_GPIO_drive_inout( MSS_GPIO_7, MSS_GPIO_HIGH_Z ); - @endcode - */ -void MSS_GPIO_drive_inout -( - mss_gpio_id_t port_id, - mss_gpio_inout_state_t inout_state -); - -/*-------------------------------------------------------------------------*//** - The MSS_GPIO_enable_irq() function is used to enable interrupt generation - for the specified GPIO input. Interrupts are generated based on the state of - the GPIO input and the interrupt mode configured for it by MSS_GPIO_config(). - - @param port_id - The port_id parameter identifies the GPIO port for which you want to enable - interrupt generation. - An enumeration item of the form MSS_GPIO_n where n is the number of the GPIO - port is used to identify the GPIO port. For example MSS_GPIO_0 identifies the - first GPIO port and MSS_GPIO_31 the last one. - - @return - none. - - Example: - The call to MSS_GPIO_enable_irq() below will allow GPIO 8 to generate - interrupts. - @code - MSS_GPIO_enable_irq( MSS_GPIO_8 ); - @endcode - */ -void MSS_GPIO_enable_irq -( - mss_gpio_id_t port_id -); - -/*-------------------------------------------------------------------------*//** - The MSS_GPIO_disable_irq() function is used to disable interrupt generation - for the specified GPIO input. - - @param port_id - The port_id parameter identifies the GPIO port for which you want to disable - interrupt generation. - An enumeration item of the form MSS_GPIO_n where n is the number of the GPIO - port is used to identify the GPIO port. For example MSS_GPIO_0 identifies the - first GPIO port and MSS_GPIO_31 the last one. - - @return - none. - - Example: - The call to MSS_GPIO_disable_irq() below will prevent GPIO 8 from generating - interrupts. - @code - MSS_GPIO_disable_irq( MSS_GPIO_8 ); - @endcode - */ -void MSS_GPIO_disable_irq -( - mss_gpio_id_t port_id -); - -/*-------------------------------------------------------------------------*//** - The MSS_GPIO_clear_irq() function is used to clear a pending interrupt from - the specified GPIO input. - Note: The MSS_GPIO_clear_irq() function must be called as part of any GPIO - interrupt service routine (ISR) in order to prevent the same interrupt event - retriggering a call to the GPIO ISR. The function also clears the interrupt - in the Cortex-M3 interrupt controller through a call to NVIC_ClearPendingIRQ(). - - @param port_id - The port_id parameter identifies the GPIO input for which you want to clear the - interrupt. - An enumeration item of the form MSS_GPIO_n where n is the number of the GPIO - port is used to identify the GPIO port. For example MSS_GPIO_0 identifies the - first GPIO port and MSS_GPIO_31 the last one. - - @return - none. - - Example: - The example below demonstrates the use of the MSS_GPIO_clear_irq() function - as part of the GPIO 9 interrupt service routine. - @code - void GPIO9_IRQHandler( void ) - { - do_interrupt_processing(); - - MSS_GPIO_clear_irq( MSS_GPIO_9 ); - } - @endcode - */ -void MSS_GPIO_clear_irq -( - mss_gpio_id_t port_id -); - -#ifdef __cplusplus -} -#endif - -#endif /* MSS_GPIO_H_ */ diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_timer/mss_timer.h b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_timer/mss_timer.h deleted file mode 100644 index d83519d54..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_timer/mss_timer.h +++ /dev/null @@ -1,598 +0,0 @@ -/******************************************************************************* - * (c) Copyright 2009 Actel Corporation. All rights reserved. - * - * SmartFusion microcontroller subsystem (MSS) timer driver API. - * - * SVN $Revision: 2661 $ - * SVN $Date: 2010-04-19 17:14:26 +0100 (Mon, 19 Apr 2010) $ - */ -/*=========================================================================*//** - @mainpage SmartFusion MSS Timer Bare Metal Driver. - - @section intro_sec Introduction - The SmartFusion Microcontroller Subsystem (MSS) includes a timer hardware - block which can be used as two independent 32-bits timers or as a single - 64-bits timer in periodic or one-shot mode. - - This driver provides a set of functions for controlling the MSS timer as part - of a bare metal system where no operating system is available. These drivers - can be adapted for use as part of an operating system but the implementation - of the adaptation layer between this driver and the operating system's driver - model is outside the scope of this driver. - - @section theory_op Theory of Operation - The MSS Timer driver uses the SmartFusion "Cortex Microcontroler Software - Interface Standard - Peripheral Access Layer" (CMSIS-PAL) to access hadware - registers. You must ensure that the SmartFusion CMSIS-PAL is either included - in the software toolchain used to build your project or is included in your - project. The most up-to-date SmartFusion CMSIS-PAL files can be obtained using - the Actel Firmware Catalog. - The SmartFusion MSS Timer can be used in one of two mutually exclusive modes; - either as a single 64-bits timer or as two independent 32-bits timers. The MSS - Timer can be used in either periodic mode or one-shot mode. A timer configured - for periodic mode operations will generate an interrupt and reload its - down-counter when it reaches 0. The timer will then continue decrementing from - its reload value without waiting for the interrupt to be cleared. A timer - configured for one-shot mode will only generate an interrupt once when its - down-counter reaches 0. It must be explitcitly reloaded to start decrementing - again. - - The MSS Timer driver functions are grouped into the following categories: - - Initialization and Configuration - - Timer control - - Interrupt control - - The MSS Timer driver provides three initialization functions: - - MSS_TIM1_init() - - MSS_TIM2_init() - - MSS_TIM64_init() - The MSS Timer driver is initialized through calls to these functions and at - least one of them must be called before any other MSS Timer driver functions - can be called. - You should only use the MSS_TIM1_init() and MSS_TIM2_init() functions if you - intend to use the timer in 32-bits mode. Use the MSS_TIM64_init() function is - you intend to use the MSS Timer as a single 64-bits timer. The initialization - functions take a single parameter specifying the operating mode of the timer - being initialized. - - Once initialized a timer can be controlled using the following functions: - - MSS_TIM1_load_immediate() - - MSS_TIM1_load_background() - - MSS_TIM1_get_current_value() - - MSS_TIM1_start() - - MSS_TIM1_stop() - - MSS_TIM2_load_immediate() - - MSS_TIM2_load_background() - - MSS_TIM2_get_current_value() - - MSS_TIM2_start() - - MSS_TIM2_stop() - - MSS_TIM64_load_immediate() - - MSS_TIM64_load_background() - - MSS_TIM64_get_current_value() - - MSS_TIM64_start() - - MSS_TIM64_stop() - - Timer interrupts are controlled using the following functions: - - MSS_TIM1_enable_irq() - - MSS_TIM1_disable_irq() - - MSS_TIM1_clear_irq() - - MSS_TIM2_enable_irq() - - MSS_TIM2_disable_irq() - - MSS_TIM2_clear_irq() - - MSS_TIM64_enable_irq() - - MSS_TIM64_disable_irq() - - MSS_TIM64_clear_irq() - - The function prototypes for the timer interrupt handlers are: - - void Timer1_IRQHandler( void ) - - void Timer2_IRQHandler( void ) - Entries for these interrupt handlers are provided in the SmartFusion CMSIS-PAL - vector table. To add a Timer 1 interrupt handler, you must implement a - Timer1_IRQHandler( ) function as part of your application code. To add a - Timer 2 interrupt handler, you must implement a Timer2_IRQHandler( ) function - as part of your application code. When using the MSS Timer as a 64-bit timer, - you must implement a Timer1_IRQHandler( ) function as part of your - application code. The Timer 2 interrupt is not used when the MSS Timer is - configured as a 64-bit timer. - - *//*=========================================================================*/ -#ifndef MSS_TIMER_H_ -#define MSS_TIMER_H_ - - -#include "../../CMSIS/a2fxxxm3.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/*-------------------------------------------------------------------------*//** - * Timer mode selection. This enumeration is used to select between the two - * possible timer modes of operation: periodic and one-shot mode. It is used as - * an argument to the MSS_TIM1_init(), MSS_TIM2_init() and MSS_TIM64_init() - * functions. - * MSS_TIMER_PERIODIC_MODE: - * In periodic mode the timer generates interrupts at constant intervals. On - * reaching zero, the timer's counter is reloaded with a value held in a - * register and begins counting down again. - * MSS_TIMER_ONE_SHOT_MODE: - * The timer generates a single interrupt in this mode. On reaching zero, the - * timer's counter halts until reprogrammed by the user. - */ -typedef enum __mss_timer_mode_t -{ - MSS_TIMER_PERIODIC_MODE = 0, - MSS_TIMER_ONE_SHOT_MODE = 1 -} mss_timer_mode_t; - -/*-------------------------------------------------------------------------*//** - The MSS_TIM1_init() function initializes the SmartFusion MSS Timer block for - use as a 32-bit timer and selects the operating mode for Timer 1. This function - takes the MSS Timer block out of reset in case this hasn’t been done already, - stops Timer 1, disables its interrupt and sets the Timer 1 operating mode. - Please note that the SmartFusion MSS Timer block cannot be used both as a - 64-bit and 32-bit timer. Calling MSS_TIM1_init() will overwrite any previous - configuration of the MSS Timer as a 64-bit timer. - - - @param mode - The mode parameter specifies whether the timer will operate in periodic or - one-shot mode. Allowed values for this parameter are: - - MSS_TIMER_PERIODIC_MODE - - MSS_TIMER_ONE_SHOT_MODE - */ -static __INLINE void MSS_TIM1_init( mss_timer_mode_t mode ) -{ - NVIC_DisableIRQ( Timer1_IRQn ); /* Disable timer 1 irq in the Cortex-M3 NVIC */ - - SYSREG->SOFT_RST_CR &= ~SYSREG_TIMER_SOFTRESET_MASK; /* Take timer block out of reset */ - - TIMER->TIM64_MODE = 0U; /* switch to 32 bits mode */ - - TIMER_BITBAND->TIM1ENABLE = 0U; /* disable timer */ - TIMER_BITBAND->TIM1INTEN = 0U; /* disable interrupt */ - TIMER_BITBAND->TIM1MODE = (uint32_t)mode; /* set mode (continuous/one-shot) */ - - TIMER->TIM1_RIS = 1U; /* clear timer 1 interrupt */ - NVIC_ClearPendingIRQ( Timer1_IRQn ); /* clear timer 1 interrupt within NVIC */ -} - -/*-------------------------------------------------------------------------*//** - The MSS_TIM1_start() function enables Timer 1 and starts its down-counter - decrementing from the load_value specified in previous calls to the - MSS_TIM1_load_immediate() or MSS_TIM1_load_background() functions. - */ -static __INLINE void MSS_TIM1_start( void ) -{ - TIMER_BITBAND->TIM1ENABLE = 1U; /* enable timer */ -} - -/*-------------------------------------------------------------------------*//** - The MSS_TIM1_stop() function disables Timer 1 and stops its down-counter - decrementing. - */ -static __INLINE void MSS_TIM1_stop( void ) -{ - TIMER_BITBAND->TIM1ENABLE = 0U; /* disable timer */ -} - -/*-------------------------------------------------------------------------*//** - The MSS_TIM1_get_current_value() returns the current value of the Timer 1 - down-counter. - - @return - This function returns the 32-bits current value of the Timer 1 down-counter. - */ -static __INLINE uint32_t MSS_TIM1_get_current_value( void ) -{ - return TIMER->TIM1_VAL; -} - -/*-------------------------------------------------------------------------*//** - The MSS_TIM1_load_immediate() function loads the value passed by the - load_value parameter into the Timer 1 down-counter. The counter will decrement - immediately from this value once Timer 1 is enabled. The MSS Timer will - generate an interrupt when the counter reaches zero if Timer 1 interrupts are - enabled. This function is intended to be used when Timer 1 is configured for - one-shot mode to time a single delay. - - @param load_value - The load_value parameter specifies the value from which the Timer 1 down-counter - will start decrementing from. - */ -static __INLINE void MSS_TIM1_load_immediate( uint32_t load_value ) -{ - TIMER->TIM1_LOADVAL = load_value; -} - -/*-------------------------------------------------------------------------*//** - The MSS_TIM1_load_background() function is used to specify the value that will - be reloaded into the Timer 1 down-counter the next time the counter reaches - zero. This function is typically used when Timer 1 is configured for periodic - mode operation to select or change the delay period between the interrupts - generated by Timer 1. - - @param load_value - The load_value parameter specifies the value that will be loaded into the - Timer 1 down-counter the next time the down-counter reaches zero. The Timer - 1 down-counter will start decrementing from this value after the current - count expires. - */ -static __INLINE void MSS_TIM1_load_background( uint32_t load_value ) -{ - TIMER->TIM1_BGLOADVAL = load_value; -} - -/*-------------------------------------------------------------------------*//** - The MSS_TIM1_enable_irq() function is used to enable interrupt generation for - Timer 1. This function also enables the interrupt in the Cortex-M3 interrupt - controller. The Timer1_IRQHandler() function will be called when a Timer 1 - interrupt occurs. - Note: Note: A Timer1_IRQHandler() default implementation is defined, with - weak linkage, in the SmartFusion CMSIS-PAL. You must provide your own - implementation of the Timer1_IRQHandler() function, that will override the - default implementation, to suit your application. - - */ -static __INLINE void MSS_TIM1_enable_irq( void ) -{ - TIMER_BITBAND->TIM1INTEN = 1U; - NVIC_EnableIRQ( Timer1_IRQn ); -} - -/*-------------------------------------------------------------------------*//** - The MSS_TIM1_disable_irq() function is used to disable interrupt generation - for Timer 1. This function also disables the interrupt in the Cortex-M3 - interrupt controller. - */ -static __INLINE void MSS_TIM1_disable_irq( void ) -{ - TIMER_BITBAND->TIM1INTEN = 0U; - NVIC_DisableIRQ( Timer1_IRQn ); -} - -/*-------------------------------------------------------------------------*//** - The MSS_TIM1_clear_irq() function is used to clear a pending interrupt from - Timer 1. This function also clears the interrupt in the Cortex-M3 interrupt - controller. - Note: You must call the MSS_TIM1_clear_irq() function as part of your - implementation of the Timer1_IRQHandler() Timer 1 interrupt service routine - (ISR) in order to prevent the same interrupt event retriggering a call to the - ISR. - - */ -static __INLINE void MSS_TIM1_clear_irq( void ) -{ - TIMER->TIM1_RIS = 1U; - NVIC_ClearPendingIRQ( Timer1_IRQn ); -} - -/*-------------------------------------------------------------------------*//** - The MSS_TIM2_init() function initializes the SmartFusion MSS Timer block for - use as a 32-bit timer and selects the operating mode for Timer 2. This function - takes the MSS Timer block out of reset in case this hasn’t been done already, - stops Timer 2, disables its interrupt and sets the Timer 2 operating mode. - Note: Please note that the SmartFusion MSS Timer block cannot be used both as - a 64-bit and 32-bit timer. Calling MSS_TIM2_init() will overwrite any previous - configuration of the MSS Timer as a 64-bit timer. - - @param mode - The mode parameter specifies whether the timer will operate in periodic or - one-shot mode. Allowed values for this parameter are: - - MSS_TIMER_PERIODIC_MODE - - MSS_TIMER_ONE_SHOT_MODE - */ -static __INLINE void MSS_TIM2_init( mss_timer_mode_t mode ) -{ - NVIC_DisableIRQ( Timer2_IRQn ); /* Disable timer 2 irq in the Cortex-M3 NVIC */ - - SYSREG->SOFT_RST_CR &= ~SYSREG_TIMER_SOFTRESET_MASK; /* Take timer block out of reset */ - - TIMER->TIM64_MODE = 0U; /* switch to 32 bits mode */ - - TIMER_BITBAND->TIM2ENABLE = 0U; /* disable timer */ - TIMER_BITBAND->TIM2INTEN = 0U; /* disable interrupt */ - TIMER_BITBAND->TIM2MODE = (uint32_t)mode; /* set mode (continuous/one-shot) */ - - TIMER->TIM2_RIS = 1U; /* clear timer 2 interrupt */ - NVIC_ClearPendingIRQ( Timer2_IRQn ); /* clear timer 2 interrupt within NVIC */ -} - -/*-------------------------------------------------------------------------*//** - The MSS_TIM2_start() function enables Timer 2 and starts its down-counter - decrementing from the load_value specified in previous calls to the - MSS_TIM2_load_immediate() or MSS_TIM2_load_background() functions. - */ -static __INLINE void MSS_TIM2_start( void ) -{ - TIMER_BITBAND->TIM2ENABLE = 1U; /* enable timer */ -} - -/*-------------------------------------------------------------------------*//** - The MSS_TIM2_stop() function disables Timer 2 and stops its down-counter - decrementing. - */ -static __INLINE void MSS_TIM2_stop( void ) -{ - TIMER_BITBAND->TIM2ENABLE = 0U; /* disable timer */ -} - -/*-------------------------------------------------------------------------*//** - The MSS_TIM2_get_current_value() returns the current value of the Timer 2 - down-counter. - */ -static __INLINE uint32_t MSS_TIM2_get_current_value( void ) -{ - return TIMER->TIM2_VAL; -} - -/*-------------------------------------------------------------------------*//** - The MSS_TIM2_load_immediate() function loads the value passed by the - load_value parameter into the Timer 2 down-counter. The counter will decrement - immediately from this value once Timer 2 is enabled. The MSS Timer will - generate an interrupt when the counter reaches zero if Timer 2 interrupts are - enabled. This function is intended to be used when Timer 2 is configured for - one-shot mode to time a single delay. - - @param load_value - The load_value parameter specifies the value from which the Timer 2 - down-counter will start decrementing. - */ -static __INLINE void MSS_TIM2_load_immediate( uint32_t load_value ) -{ - TIMER->TIM2_LOADVAL = load_value; -} - -/*-------------------------------------------------------------------------*//** - The MSS_TIM2_load_background() function is used to specify the value that will - be reloaded into the Timer 2 down-counter the next time the counter reaches - zero. This function is typically used when Timer 2 is configured for periodic - mode operation to select or change the delay period between the interrupts - generated by Timer 2. - - @param load_value - The load_value parameter specifies the value that will be loaded into the - Timer 2 down-counter the next time the down-counter reaches zero. The Timer - 2 down-counter will start decrementing from this value after the current - count expires. - */ -static __INLINE void MSS_TIM2_load_background( uint32_t load_value ) -{ - TIMER->TIM2_BGLOADVAL = load_value; -} - -/*-------------------------------------------------------------------------*//** - The MSS_TIM2_enable_irq() function is used to enable interrupt generation for - Timer 2. This function also enables the interrupt in the Cortex-M3 interrupt - controller. The Timer2_IRQHandler() function will be called when a Timer 2 - interrupt occurs. - Note: A Timer2_IRQHandler() default implementation is defined, with weak - linkage, in the SmartFusion CMSIS-PAL. You must provide your own implementation - of the Timer2_IRQHandler() function, that will override the default - implementation, to suit your application. - */ -static __INLINE void MSS_TIM2_enable_irq( void ) -{ - TIMER_BITBAND->TIM2INTEN = 1U; - NVIC_EnableIRQ( Timer2_IRQn ); -} - -/*-------------------------------------------------------------------------*//** - The MSS_TIM2_disable_irq() function is used to disable interrupt generation - for Timer 2. This function also disables the interrupt in the Cortex-M3 - interrupt controller. - */ -static __INLINE void MSS_TIM2_disable_irq( void ) -{ - TIMER_BITBAND->TIM2INTEN = 0U; - NVIC_DisableIRQ( Timer2_IRQn ); -} - -/*-------------------------------------------------------------------------*//** - The MSS_TIM2_clear_irq() function is used to clear a pending interrupt from - Timer 2. This function also clears the interrupt in the Cortex-M3 interrupt - controller. - Note: You must call the MSS_TIM2_clear_irq() function as part of your - implementation of the Timer2_IRQHandler() Timer 2 interrupt service routine - (ISR) in order to prevent the same interrupt event retriggering a call to the - ISR. - */ -static __INLINE void MSS_TIM2_clear_irq( void ) -{ - TIMER->TIM2_RIS = 1U; - NVIC_ClearPendingIRQ( Timer2_IRQn ); -} - -/*-------------------------------------------------------------------------*//** - The MSS_TIM64_init() function initializes the SmartFusion MSS Timer block for - use as a single 64-bit timer and selects the operating mode of the timer. This - function takes the MSS Timer block out of reset in case this hasn’t been done - already, stops the timer, disables its interrupts and sets the timer's - operating mode. - Note: Please note that the SmartFusion MSS Timer block cannot be used both as - a 64-bit and 32-bit timer. Calling MSS_TIM64_init() will overwrite any previous - configuration of the MSS Timer as a 32-bit timer. - - @param mode - The mode parameter specifies whether the timer will operate in periodic or - one-shot mode. Allowed values for this parameter are: - - MSS_TIMER_PERIODIC_MODE - - MSS_TIMER_ONE_SHOT_MODE - */ -static __INLINE void MSS_TIM64_init( mss_timer_mode_t mode ) -{ - NVIC_DisableIRQ( Timer1_IRQn ); /* disable timer 1 interrupt within NVIC */ - NVIC_DisableIRQ( Timer2_IRQn ); /* disable timer 2 interrupt within NVIC */ - - SYSREG->SOFT_RST_CR &= ~SYSREG_TIMER_SOFTRESET_MASK; /* Take timer block out of reset */ - - TIMER->TIM64_MODE = 1U; /* switch to 64 bits mode */ - - TIMER_BITBAND->TIM64ENABLE = 0U; /* disable timer */ - TIMER_BITBAND->TIM64INTEN = 0U; /* disable interrupt */ - TIMER_BITBAND->TIM64MODE = (uint32_t)mode; /* set mode (continuous/one-shot) */ - - TIMER->TIM1_RIS = 1U; /* clear timer 1 interrupt */ - TIMER->TIM2_RIS = 1U; /* clear timer 2 interrupt */ - NVIC_ClearPendingIRQ( Timer1_IRQn ); /* clear timer 1 interrupt within NVIC */ - NVIC_ClearPendingIRQ( Timer2_IRQn ); /* clear timer 2 interrupt within NVIC */ -} - -/*-------------------------------------------------------------------------*//** - The MSS_TIM64_start() function enables the 64-bit timer and starts its - down-counter decrementing from the load_value specified in previous calls to - the MSS_TIM64_load_immediate() or MSS_TIM64_load_background() functions. - */ -static __INLINE void MSS_TIM64_start( void ) -{ - TIMER_BITBAND->TIM64ENABLE = 1U; /* enable timer */ -} - -/*-------------------------------------------------------------------------*//** - The MSS_TIM64_stop() function disables the 64-bit timer and stops its - down-counter decrementing. - */ -static __INLINE void MSS_TIM64_stop( void ) -{ - TIMER_BITBAND->TIM64ENABLE = 0U; /* disable timer */ -} - -/*-------------------------------------------------------------------------*//** - The MSS_TIM64_get_current_value() is used to read the current value of the - 64-bit timer down-counter. - - @param load_value_u - The load_value_u parameter is a pointer to a 32-bit variable where the upper - 32 bits of the current value of the 64-bit timer down-counter will be copied. - - @param load_value_l - The load_value_l parameter is a pointer to a 32-bit variable where the lower - 32 bits of the current value of the 64-bit timer down-counter will be copied. - - Example: - @code - uint32_t current_value_u = 0; - uint32_t current_value_l = 0; - MSS_TIM64_get_current_value( ¤t_value_u, ¤t_value_l ); - @endcode - */ -static __INLINE void MSS_TIM64_get_current_value -( - uint32_t * load_value_u, - uint32_t * load_value_l -) -{ - *load_value_l = TIMER->TIM64_VAL_L; - *load_value_u = TIMER->TIM64_VAL_U; -} - -/*-------------------------------------------------------------------------*//** - The MSS_TIM64_load_immediate() function loads the values passed by the - load_value_u and load_value_l parameters into the 64-bit timer down-counter. - The counter will decrement immediately from the concatenated 64-bit value once - the 64-bit timer is enabled. The MSS Timer will generate an interrupt when the - counter reaches zero if 64-bit timer interrupts are enabled. This function is - intended to be used when the 64-bit timer is configured for one-shot mode to - time a single delay. - - @param load_value_u - The load_value_u parameter specifies the upper 32 bits of the 64-bit timer - load value from which the 64-bit timer down-counter will start decrementing. - - @param load_value_l - The load_value_l parameter specifies the lower 32 bits of the 64-bit timer - load value from which the 64-bit timer down-counter will start decrementing. - */ -static __INLINE void MSS_TIM64_load_immediate -( - uint32_t load_value_u, - uint32_t load_value_l -) -{ - TIMER->TIM64_LOADVAL_U = load_value_u; - TIMER->TIM64_LOADVAL_L = load_value_l; -} - -/*-------------------------------------------------------------------------*//** - The MSS_TIM64_load_background() function is used to specify the 64-bit value - that will be reloaded into the 64-bit timer down-counter the next time the - counter reaches zero. This function is typically used when the 64-bit timer is - configured for periodic mode operation to select or change the delay period - between the interrupts generated by the 64-bit timer. - - @param load_value_u - The load_value_u parameter specifies the upper 32 bits of the 64-bit timer - load value. The concatenated 64-bit value formed from load_value_u and - load_value_l will be loaded into the 64-bit timer down-counter the next - time the down-counter reaches zero. The 64-bit timer down-counter will start - decrementing from the concatenated 64-bit value after the current count - expires. - - @param load_value_l - The load_value_l parameter specifies the lower 32 bits of the 64-bit timer - load value. The concatenated 64-bit value formed from load_value_u and - load_value_l will be loaded into the 64-bit timer down-counter the next time - the down-counter reaches zero. The 64-bit timer down-counter will start - decrementing from the concatenated 64-bit value after the current count - expires. - - */ -static __INLINE void MSS_TIM64_load_background -( - uint32_t load_value_u, - uint32_t load_value_l -) -{ - TIMER->TIM64_BGLOADVAL_U = load_value_u; - TIMER->TIM64_BGLOADVAL_L = load_value_l; -} - -/*-------------------------------------------------------------------------*//** - The MSS_TIM64_enable_irq() function is used to enable interrupt generation for - the 64-bit timer. This function also enables the interrupt in the Cortex-M3 - interrupt controller. The Timer1_IRQHandler() function will be called when a - 64-bit timer interrupt occurs. - Note: A Timer1_IRQHandler() default implementation is defined, with weak - linkage, in the SmartFusion CMSIS-PAL. You must provide your own - implementation of the Timer1_IRQHandler() function, that will override the - default implementation, to suit your application. - Note: The MSS_TIM64_enable_irq() function enables and uses Timer 1 interrupts - for the 64-bit timer. Timer 2 interrupts remain disabled. - */ -static __INLINE void MSS_TIM64_enable_irq( void ) -{ - TIMER_BITBAND->TIM64INTEN = 1U; - NVIC_EnableIRQ( Timer1_IRQn ); -} - -/*-------------------------------------------------------------------------*//** - The MSS_TIM64_disable_irq() function is used to disable interrupt generation - for the 64-bit timer. This function also disables the interrupt in the - Cortex-M3 interrupt controller. - */ -static __INLINE void MSS_TIM64_disable_irq( void ) -{ - TIMER_BITBAND->TIM64INTEN = 0U; - NVIC_DisableIRQ( Timer1_IRQn ); -} - -/*-------------------------------------------------------------------------*//** - The MSS_TIM64_clear_irq() function is used to clear a pending interrupt from - the 64-bit timer. This function also clears the interrupt in the Cortex-M3 - interrupt controller. - Note: You must call the MSS_TIM64_clear_irq() function as part of your - implementation of the Timer1_IRQHandler() 64-bit timer interrupt service - routine (ISR) in order to prevent the same interrupt event retriggering a - call to the ISR. - */ -static __INLINE void MSS_TIM64_clear_irq( void ) -{ - TIMER->TIM64_RIS = 1U; - NVIC_ClearPendingIRQ( Timer1_IRQn ); -} - -#ifdef __cplusplus -} -#endif - -#endif /*MSS_TIMER_H_*/ diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_watchdog/mss_watchdog.h b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_watchdog/mss_watchdog.h deleted file mode 100644 index 337a91bb1..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers/mss_watchdog/mss_watchdog.h +++ /dev/null @@ -1,427 +0,0 @@ -/******************************************************************************* - * (c) Copyright 2009 Actel Corporation. All rights reserved. - * - * SmartFusion Microcontroller Subsystem (MSS) Watchdog bare metal software - * driver. - * - * SVN $Revision: 1888 $ - * SVN $Date: 2009-12-18 10:58:42 +0000 (Fri, 18 Dec 2009) $ - */ -/*=========================================================================*//** - @section intro_sec Introduction - The SmartFusion microcontroller subsystem (MSS) includes a watchdog timer used - to detect system lockups. - This driver provides a set of functions for controlling the MSS watchdog as - part of a bare metal system where no operating system is available. These - drivers can be adapted for use as part of an operating system but the - implementation of the adaptation layer between this driver and the operating - system's driver model is outside the scope of this driver. - - @section hw_dependencies Hardware Flow Dependencies - The configuration of all features of the MSS watchdog is covered by this - driver. There are no dependencies on the hardware flow for configuring the - SmartFusion MSS watchdog timer. - - @section theory_op Theory of Operation - The watchdog driver uses the SmartFusion "Cortex Microcontroler Software - Interface Standard - Peripheral Access Layer" (CMSIS-PAL) to access hadware - registers. You must ensure that the SmartFusion CMSIS-PAL is either included - in the software toolchain used to build your project or is included in your - project. The most up-to-date SmartFusion CMSIS-PAL files can be obtained using - the Actel Firmware Catalog. - - The watchdog driver functions are grouped into the following categories: - - Initialization and cnfiguration - - Reading the watchdog timer current value and status - - Refreshing the watchdog timer value - - Time-out and wake-up interrupts control - - The watchdog driver is initialized and configured through a call to the - MSS_WD_init() function. The parameters passed to MSS_WD_init() function - specify the watchdog timer configuration. The configuration parameters include - the value that will be reloaded into the watchdog timer down counter every - time the watchdog is refreshed. Also included as part of the configuration - parameters is the optional allowed refresh window. The allowed refresh window - specifies the maximum allowed current value of the watchdog timer at the time - of the watchdog is relaoded. Attempting to reload the watchdog timer when its - value is larger than the allowed refresh window will cause a reset or - interrupt depending on the watchdog configuration. The allowed refresh window - can be disabled by specifying an allowed refesh window equal or higher than - the watchdog reload value. - The MSS_WD_init() function must be called before any other watchdog driver - functions can be called with the exception of the MSS_WD_disable() function. - - The watchdog timer can be disabled using the MSS_WD_disable() function. Once - disabled, the watchdog timer can only be reenabled by a power-on reset. - - The watchdog timer current value can be read using the MSS_WD_current_value() - function. The watchdog status can be read using the MSS_WD_status() function. - These functions are typically required when using the watchdog configured with - an allowed refresh window to check if a watchdog reload is currently allowed. - - The watchdog timer value is reloaded using the MSS_WD_reload() function. The - value reloaded into the watchdog timer down counter is the value specified as - parameter to the MSS_WD_init() function. - - The watchdog timer can generate interrupts instead of resetting the system - when its down-counter timer expires. These time-out interrupts are controlled - using the following functions: - - MSS_WD_enable_timeout_irq - - MSS_WD_disable_timeout_irq - - MSS_WD_clear_timeout_irq - - The watchdog timer is external to the Cortex-M3 processor core and operates - even when the Cortex-M3 is in sleep mode. A wakeup interrupt can be generated - by the watchdog timer to wakeup the Cortext-M3 when the watchdog timer value - reaches the allowed refresh window while the Cortex-M3 is in sleep mode. The - watchdog driver provides the following functions to control wakeup interrupts: - - MSS_WD_enable_wakeup_irq - - MSS_WD_disable_wakeup_irq - - MSS_WD_clear_wakeup_irq - - *//*=========================================================================*/ - -#ifndef MSS_WATCHDOG_H_ -#define MSS_WATCHDOG_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include "../../CMSIS/a2fxxxm3.h" - -/***************************************************************************//** - * The MSS_WDOG_RESET_ON_TIMEOUT_MODE macro is one of the possible values for the - * mode parameter of the WD_init() function. It is used to specify that a reset - * should occur when the watchdog down counter times out. - */ -#define MSS_WDOG_RESET_ON_TIMEOUT_MODE (uint32_t)0x00000000U - -/***************************************************************************//** - * The MSS_WDOG_INTERRUPT_ON_TIMEOUT_MODE macro is one of the possible values for - * the mode parameter of function the WD_init() function. It is used to specify - * that a time out interrupt should occur when the watchdog down counter expires. - */ -#define MSS_WDOG_INTERRUPT_ON_TIMEOUT_MODE (uint32_t)0x00000004U - -/***************************************************************************//** - * The MSS_WDOG_NO_WINDOW macro can be used as the value for the reload_window - * parameter of the WD_init() function. It is used to specify that no forbidden - * window will exist for the reload of the watchdog down counter. - */ -#define MSS_WDOG_NO_WINDOW (uint32_t)0xFFFFFFFFU - -/***************************************************************************//** - * The MSS_WDOG_CTRL_MODE_BIT_MASK macro is a bit mask specifying the bit used to - * set the watchdog's operating mode within the wathcdog's WDOGCONTROL register. - */ -#define MSS_WDOG_CTRL_MODE_BIT_MASK (uint32_t)0x00000004U - -/***************************************************************************//** - * The MSS_WDOG_TIMEOUT_IRQ_ENABLE_BIT_MASK macro is a bit mask specifying the bit - * used to enable the time out interrupt within the watchdog's WDOGCONTROL - * register. - */ -#define MSS_WDOG_TIMEOUT_IRQ_ENABLE_BIT_MASK (uint32_t)0x00000001U - -/***************************************************************************//** - The MSS_WDOG_WAKEUP_IRQ_ENABLE_BIT_MASK macro is a bit mask specifying the bit - used to enable the wake up interrupt within the watchdog's WDOGCONTROL - register. - */ -#define MSS_WDOG_WAKEUP_IRQ_ENABLE_BIT_MASK (uint32_t)0x00000002U - -/***************************************************************************//** - The MSS_WDOG_TIMEOUT_IRQ_CLEAR_BIT_MASK macro is a bit mask specifying the bit - used to clear the time out interrupt within the watchdog's WDOGRIS register. - */ -#define MSS_WDOG_TIMEOUT_IRQ_CLEAR_BIT_MASK (uint32_t)0x00000001U - -/***************************************************************************//** - The MSS_WDOG_WAKEUP_IRQ_CLEAR_BIT_MASK macro is a bit mask specifying the bit - used to clear the wake up interrupt within the watchdog's WDOGRIS register. - */ -#define MSS_WDOG_WAKEUP_IRQ_CLEAR_BIT_MASK (uint32_t)0x00000002U - -/***************************************************************************//** - The MSS_WDOG_REFRESH_KEY macro holds the magic value which will cause a reload - of the watchdog's down counter when written to the watchdog's WDOGREFRESH - register. - */ -#define MSS_WDOG_REFRESH_KEY (uint32_t)0xAC15DE42U - -/***************************************************************************//** - The MSS_WDOG_DISABLE_KEY macro holds the magic value which will disable the - watchdog if written to the watchdog's WDOGENABLE register. - */ -#define MSS_WDOG_DISABLE_KEY (uint32_t)0x4C6E55FAU - -/***************************************************************************//** - The MSS_WD_init() function initializes and configures the watchdog timer. - - @param load_value - The load_value parameter specifies the value that will be loaded into the - watchdog's down counter when the reload command is issued through a call to - MSS_WD_reload(). - - @param reload_window - The reload_window parameter specifies the time window during which a reload - of the watchdog counter is allowed. A reload of the watchdog counter should - only be performed when the watchdog counter value is below the value of the - reload_window. Reloading the watchdog down counter value before it has - reached the reload_window will result in an interrupt or reset depending on - the watchdog's mode. - The reload window can be disabled by using WDOG_NO_WINDOW for this parameter. - - @param mode - The mode parameter specifies the watchdog's operating mode. It can be either - MSS_WDOG_RESET_ON_TIMEOUT_MODE or MSS_WDOG_INTERRUPT_ON_TIMEOUT_MODE. - MSS_WDOG_RESET_ON_TIMEOUT_MODE: a reset will occur if the watchdog timer - expires. - MSS_WDOG_INTERRUPT_ON_TIMEOUT_MODE: an NMI interrupt will occur if the - watchdog timer expires. - - @return - This function does not return a value. - */ -static __INLINE void MSS_WD_init -( - uint32_t load_value, - uint32_t reload_window, - uint32_t mode -) -{ - /* Disable interrupts. */ - WATCHDOG->WDOGCONTROL &= ~(MSS_WDOG_TIMEOUT_IRQ_ENABLE_BIT_MASK | MSS_WDOG_WAKEUP_IRQ_CLEAR_BIT_MASK); - - /* Clear any existing interrupts. */ - WATCHDOG->WDOGRIS = MSS_WDOG_TIMEOUT_IRQ_CLEAR_BIT_MASK | MSS_WDOG_WAKEUP_IRQ_CLEAR_BIT_MASK; - - /* Configure watchdog with new configuration passed as parameter. */ - WATCHDOG->WDOGMVRP = MSS_WDOG_NO_WINDOW; - WATCHDOG->WDOGLOAD = load_value; - WATCHDOG->WDOGCONTROL = (WATCHDOG->WDOGCONTROL & ~MSS_WDOG_CTRL_MODE_BIT_MASK) | (mode & MSS_WDOG_CTRL_MODE_BIT_MASK); - - /* Reload watchdog with new load value. */ - WATCHDOG->WDOGREFRESH = MSS_WDOG_REFRESH_KEY; - - /* Set allowed window. */ - WATCHDOG->WDOGMVRP = reload_window; -} - -/***************************************************************************//** - The MSS_WD_reload() function causes the watchdog to reload its down counter timer - with the load value configured through the call to WD_init(). This function - must be called regularly to avoid a system reset. - - @return - This function does not return a value. - */ -static __INLINE void MSS_WD_reload( void ) -{ - WATCHDOG->WDOGREFRESH = MSS_WDOG_REFRESH_KEY; -} - -/***************************************************************************//** - The MSS_WD_disable() function disables the watchdog. - Please note that the watchdog can only be reenabled as a result of a power-on - reset. - - @return - This function does not return a value. - */ -static __INLINE void MSS_WD_disable( void ) -{ - WATCHDOG->WDOGENABLE = MSS_WDOG_DISABLE_KEY; -} - -/***************************************************************************//** - The MSS_WD_current_value() function returns the current value of the watchdog's - down counter. - - @return - This function returns the current value of the watchdog down counter. - */ -static __INLINE uint32_t MSS_WD_current_value( void ) -{ - return WATCHDOG->WDOGVALUE; -} - -/***************************************************************************//** - The MSS_WD_status() function returns the status of the watchdog. - - @return - The MSS_WD_status() function returns the status of the watchdog. A value of - 0 indicates that watchdog counter has reached the forbidden window and that - a reload should not be done. A value of 1 indicates that the watchdog counter - is within the permitted window and that a reload is allowed. - */ -static __INLINE uint32_t MSS_WD_status( void ) -{ - return WATCHDOG->WDOGSTATUS; -} - -/***************************************************************************//** - The MSS_WD_enable_timeout_irq() function enables the watchdog’s time out - interrupt which is connected to the Cortex-M3 NMI interrupt. - The NMI_Handler() function will be called when a watchdog time out occurs. You - must provide the implementation of the NMI_Handler() function to suit your - application. - - @return - This function does not return a value. - - Example: - @code - #include "mss_watchdog.h" - int main( void ) - { - MSS_WD_init( 0x10000000, MSS_WDOG_NO_WINDOW, MSS_WDOG_INTERRUPT_ON_TIMEOUT_MODE ); - MSS_WD_enable_timeout_irq(); - for (;;) - { - main_task(); - } - } - - void NMI_Handler( void ) - { - process_timeout(); - MSS_WD_clear_timeout_irq(); - } - @endcode - */ -static __INLINE void MSS_WD_enable_timeout_irq( void ) -{ - WATCHDOG->WDOGCONTROL |= MSS_WDOG_TIMEOUT_IRQ_ENABLE_BIT_MASK; -} - -/***************************************************************************//** - The WD_disable_timeout_irq() function disables the generation of the NMI - interrupt when the watchdog times out. - - @return - This function does not return a value. - */ -static __INLINE void MSS_WD_disable_timeout_irq( void ) -{ - WATCHDOG->WDOGCONTROL &= ~MSS_WDOG_TIMEOUT_IRQ_ENABLE_BIT_MASK; -} - -/***************************************************************************//** - The MSS_WD_enable_wakeup_irq() function enables the SmartFusion wakeup - interrupt. The WdogWakeup_IRQHandler() function will be called when a wake up - interrupt occurs. You must provide the implementation of the WdogWakeup_IRQHandler() - function to suit your application. - - @return - This function does not return a value. - - Example: - @code - #include "mss_watchdog.h" - int main( void ) - { - MSS_WD_init( 0x10000000, MSS_WDOG_NO_WINDOW, MSS_WDOG_INTERRUPT_ON_TIMEOUT_MODE ); - MSS_WD_enable_wakeup_irq(); - for (;;) - { - main_task(); - cortex_sleep(); - } - } - - void WdogWakeup_IRQHandler( void ) - { - process_wakeup(); - MSS_WD_clear_wakeup_irq(); - } - @endcode - */ -static __INLINE void MSS_WD_enable_wakeup_irq( void ) -{ - WATCHDOG->WDOGCONTROL |= MSS_WDOG_WAKEUP_IRQ_ENABLE_BIT_MASK; - NVIC_EnableIRQ( WdogWakeup_IRQn ); -} - -/***************************************************************************//** - The MSS_WD_disable_wakeup_irq() function disables the SmartFusion wakeup - interrupt. - - @return - This function does not return a value. - */ -static __INLINE void MSS_WD_disable_wakeup_irq( void ) -{ - WATCHDOG->WDOGCONTROL &= ~MSS_WDOG_WAKEUP_IRQ_ENABLE_BIT_MASK; -} - -/***************************************************************************//** - The MSS_WD_clear_timeout_irq() function clears the watchdog’s time out - interrupt which is connected to the Cortex-M3 NMI interrupt. - Calling MSS_WD_clear_timeout_irq() results in clearing the Cortex-M3 NMI interrupt. - Note: The MSS_WD_clear_timeout_irq() function must be called as part of the - timeout interrupt service routine (ISR) in order to prevent the same interrupt - event retriggering a call to the wakeup ISR. - - @return - The example below demonstrates the use of the MSS_WD_clear_timeout_irq() - function as part of the NMI interrupt service routine. - - Example: - @code - void NMI_Handler( void ) - { - process_timeout(); - MSS_WD_clear_timeout_irq(); - } - @endcode - */ -static __INLINE void MSS_WD_clear_timeout_irq( void ) -{ - WATCHDOG->WDOGRIS = MSS_WDOG_TIMEOUT_IRQ_CLEAR_BIT_MASK; - /* - * Perform a second write to ensure that the first write completed before - * returning from this function. This is to account for posted writes across - * the AHB matrix. The second write ensures that the first write has - * completed and that the interrupt line has been de-asserted by the time - * the function returns. Omitting the second write may result in a delay - * in the de-assertion of the interrupt line going to the Cortex-M3 and a - * retriggering of the interrupt. - */ - WATCHDOG->WDOGRIS = MSS_WDOG_TIMEOUT_IRQ_CLEAR_BIT_MASK; -} - -/***************************************************************************//** - The MSS_WD_clear_wakeup_irq() function clears the wakeup interrupt. - Note: The MSS_WD_clear_wakeup_irq() function must be called as part of the - wakeup interrupt service routine (ISR) in order to prevent the same interrupt - event retriggering a call to the wakeup ISR. This function also clears the - interrupt in the Cortex-M3 interrupt controller through a call to - NVIC_ClearPendingIRQ(). - - @return - This function does not return a value. - - Example: - The example below demonstrates the use of the MSS_WD_clear_wakeup_irq() function - as part of the wakeup interrupt service routine. - @code - void WdogWakeup_IRQHandler( void ) - { - do_interrupt_processing(); - - MSS_WD_clear_wakeup_irq(); - } - @endcode -*/ -static __INLINE void MSS_WD_clear_wakeup_irq( void ) -{ - WATCHDOG->WDOGRIS = MSS_WDOG_WAKEUP_IRQ_CLEAR_BIT_MASK; - NVIC_ClearPendingIRQ( WdogWakeup_IRQn ); -} -#ifdef __cplusplus -} -#endif - -#endif /* MSS_WATCHDOG_H_ */ diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers_config/mss_ace/ace_config.c b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers_config/mss_ace/ace_config.c deleted file mode 100644 index acd270690..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers_config/mss_ace/ace_config.c +++ /dev/null @@ -1,157 +0,0 @@ -/***************************************************************************** -* (c) Copyright Actel Corporation. All rights reserved. -* -*ACE configuration .c file -*Created by Actel MSS_ACE Configurator Fri Dec 17 12:12:19 2010 -* -*/ - -#include "../../drivers/mss_ace/mss_ace_configurator.h" -#include "ace_config.h" -#include "ace_handles.h" - -#include - - -/*----------------------------------------------------------------------------- -*AB Configuration -*---------------------------------------------------------------------------*/ -ace_adc_config_t g_ace_adc_config[ACE_NB_OF_ADC] = -{ - { - 4096, /* uint16_t adc_resolution */ - 2560 /* uint16_t va_ref */ - }, - { - 4096, /* uint16_t adc_resolution */ - 2560 /* uint16_t va_ref */ - }, - { - 4096, /* uint16_t adc_resolution */ - 2560 /* uint16_t va_ref */ - } -}; - -/*----------------------------------------------------------------------------- -*Current Monitor Resistor Values -*---------------------------------------------------------------------------*/ -const uint32_t g_ace_current_resistors[ACE_NB_OF_CURRENT_MONITORS] = -{ - 100000, /*CM0 ( USED AS CURRENT MONITOR ) */ - 1, /*CM1 ( NOT USED AS CURRENT MONITOR ) */ - 1, /*CM2 ( NOT USED AS CURRENT MONITOR ) */ - 1, /*CM3 ( NOT USED AS CURRENT MONITOR ) */ - 1 /*CM4 ( NOT USED AS CURRENT MONITOR ) */ -}; - -/*----------------------------------------------------------------------------- -*Analog Channels -*---------------------------------------------------------------------------*/ -/* Names*/ -const uint8_t g_ace_channel_0_name[] = "CurrentMonitor_0"; -const uint8_t g_ace_channel_1_name[] = "VoltageMonitor_0"; -const uint8_t g_ace_channel_2_name[] = "TemperatureMonitor_0"; - -/* Number of Flags per Channel*/ -#define CHANNEL_0_NB_OF_FLAGS 0 -#define CHANNEL_1_NB_OF_FLAGS 0 -#define CHANNEL_2_NB_OF_FLAGS 0 - -/* Input Channel to Flag Array Association*/ - -/* Channel Table*/ -ace_channel_desc_t g_ace_channel_desc_table[ACE_NB_OF_INPUT_CHANNELS] = -{ - { - g_ace_channel_0_name, /* const uint8_t * p_sz_channel_name */ - CM0, /* adc_channel_id_t signal_id; */ - 14, /* uint16_t signal_ppe_offset */ - CHANNEL_0_NB_OF_FLAGS, /* uint16_t nb_of_flags */ - 0 /* uint16_t * p_flags_array */ - }, - { - g_ace_channel_1_name, /* const uint8_t * p_sz_channel_name */ - TM0, /* adc_channel_id_t signal_id; */ - 23, /* uint16_t signal_ppe_offset */ - CHANNEL_1_NB_OF_FLAGS, /* uint16_t nb_of_flags */ - 0 /* uint16_t * p_flags_array */ - }, - { - g_ace_channel_2_name, /* const uint8_t * p_sz_channel_name */ - TM1, /* adc_channel_id_t signal_id; */ - 32, /* uint16_t signal_ppe_offset */ - CHANNEL_2_NB_OF_FLAGS, /* uint16_t nb_of_flags */ - 0 /* uint16_t * p_flags_array */ - } -}; - -/*----------------------------------------------------------------------------- -*Threshold Flags -*---------------------------------------------------------------------------*/ -/* Flag Names*/ -/* Flag Table*/ -#if ACE_NB_OF_PPE_FLAGS != 0 - ppe_flag_desc_t g_ppe_flags_desc_table[ACE_NB_OF_PPE_FLAGS] = - { - }; -#endif - -/*----------------------------------------------------------------------------- -*Sequencer Procedures -*---------------------------------------------------------------------------*/ -/* Procedure Name and Microcode*/ -const uint8_t g_ace_sse_proc_0_name[] = "ADC0_MAIN"; -const uint16_t g_ace_sse_proc_0_sequence[] = -{ - 0x1705, 0x1601, 0x155c, 0x14c4, - 0x0000, 0x152d, 0x8a0c, 0x1309, - 0x0000, 0x14c3, 0x0000, 0x8a04, - 0x152d, 0x970c, 0x132f, 0x0000, - 0x14c8, 0x0000, 0x9704, 0x1301, - 0x0000, 0x1002 -}; - -const uint8_t g_ace_sse_proc_1_name[] = "ADC1_MAIN"; -const uint16_t g_ace_sse_proc_1_sequence[] = -{ - 0x2705, 0x2601, 0x2200 -}; - -const uint8_t g_ace_sse_proc_2_name[] = "ADC2_MAIN"; -const uint16_t g_ace_sse_proc_2_sequence[] = -{ - 0x3705, 0x3601, 0x3200 -}; - - - -/* Procedure Table*/ -ace_procedure_desc_t g_sse_sequences_desc_table[ACE_NB_OF_SSE_PROCEDURES] = -{ - { - g_ace_sse_proc_0_name, /* const uint8_t * p_sz_proc_name */ - 2, /* uint16_t sse_loop_pc */ - 0, /* uint16_t sse_load_offset */ - sizeof(g_ace_sse_proc_0_sequence) / sizeof(uint16_t), /* uint16_t sse_ucode_length */ - g_ace_sse_proc_0_sequence, /* const uint16_t * sse_ucode */ - 0 /* uint8_t sse_pc_id */ - }, - { - g_ace_sse_proc_1_name, /* const uint8_t * p_sz_proc_name */ - 24, /* uint16_t sse_loop_pc */ - 22, /* uint16_t sse_load_offset */ - sizeof(g_ace_sse_proc_1_sequence) / sizeof(uint16_t), /* uint16_t sse_ucode_length */ - g_ace_sse_proc_1_sequence, /* const uint16_t * sse_ucode */ - 1 /* uint8_t sse_pc_id */ - }, - { - g_ace_sse_proc_2_name, /* const uint8_t * p_sz_proc_name */ - 27, /* uint16_t sse_loop_pc */ - 25, /* uint16_t sse_load_offset */ - sizeof(g_ace_sse_proc_2_sequence) / sizeof(uint16_t), /* uint16_t sse_ucode_length */ - g_ace_sse_proc_2_sequence, /* const uint16_t * sse_ucode */ - 2 /* uint8_t sse_pc_id */ - } -}; - - diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers_config/mss_ace/ace_config.h b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers_config/mss_ace/ace_config.h deleted file mode 100644 index 8f8c584d8..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers_config/mss_ace/ace_config.h +++ /dev/null @@ -1,37 +0,0 @@ -/***************************************************************************** -* (c) Copyright Actel Corporation. All rights reserved. -* -*ACE configuration .h file -*Created by Actel MSS_ACE Configurator Fri Dec 17 12:12:19 2010 -* -*/ - -#ifndef ACE_CONFIG_H -#define ACE_CONFIG_H - - -/*----------------------------------------------------------------------------- -*COMMON VALUES -*---------------------------------------------------------------------------*/ - -/*----------------------------------------------------------------------------- -*AB VALUES -*---------------------------------------------------------------------------*/ -#define ACE_NB_OF_ADC 3 -#define ACE_NB_OF_CURRENT_MONITORS 5 -#define MAX_CHANNEL_NAME_LENGTH 20 -#define ACE_NB_OF_INPUT_CHANNELS 3 - -/*----------------------------------------------------------------------------- -*SSE VALUES -*---------------------------------------------------------------------------*/ -#define ACE_NB_OF_SSE_PROCEDURES 3 -#define MAX_PROCEDURE_NAME_LENGTH 9 - -/*----------------------------------------------------------------------------- -*PPE VALUES -*---------------------------------------------------------------------------*/ -#define ACE_NB_OF_PPE_FLAGS 0 -#define MAX_FLAG_NAME_LENGTH 0 - -#endif diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers_config/mss_ace/ace_handles.h b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers_config/mss_ace/ace_handles.h deleted file mode 100644 index 86782c013..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/MicroSemi_Code/drivers_config/mss_ace/ace_handles.h +++ /dev/null @@ -1,41 +0,0 @@ -/***************************************************************************** -* (c) Copyright Actel Corporation. All rights reserved. -* -*ACE configuration .h file -*Created by Actel MSS_ACE Configurator Fri Dec 17 12:12:19 2010 -* -*/ - -#ifndef ACE_HANDLES_H -#define ACE_HANDLES_H - - -/*----------------------------------------------------------------------------- -*Analog input channel handles -*---------------------------------------------------------------------------*/ -typedef enum { - CurrentMonitor_0 = 0, - VoltageMonitor_0, - TemperatureMonitor_0, - NB_OF_ACE_CHANNEL_HANDLES -} ace_channel_handle_t; - -/*----------------------------------------------------------------------------- -*Flag Handles -*---------------------------------------------------------------------------*/ -typedef enum { - NB_OF_ACE_FLAG_HANDLES = 0 -} ace_flag_handle_t; - -/*----------------------------------------------------------------------------- -*Procedure Handles -*---------------------------------------------------------------------------*/ -typedef enum { - ADC0_MAIN = 0, - ADC1_MAIN, - ADC2_MAIN, - NB_OF_ACE_PROCEDURE_HANDLES -} ace_procedure_handle_t; - - -#endif diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/ParTest.c b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/ParTest.c deleted file mode 100644 index 56ac19b10..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/ParTest.c +++ /dev/null @@ -1,154 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/*----------------------------------------------------------- - * Simple parallel port IO routines. - *-----------------------------------------------------------*/ - -/* Kernel includes. */ -#include "FreeRTOS.h" -#include "task.h" - -/* Library includes. */ -#include "mss_gpio.h" - -#define partstMAX_LEDS 8 - -static volatile unsigned long ulGPIOState = 0UL; - -/*-----------------------------------------------------------*/ - -void vParTestInitialise( void ) -{ -long x; - - /* Initialise the GPIO */ - MSS_GPIO_init(); - - /* Set up GPIO for the LEDs. */ - for( x = 0; x < partstMAX_LEDS; x++ ) - { - MSS_GPIO_config( ( mss_gpio_id_t ) x , MSS_GPIO_OUTPUT_MODE ); - } - - /* All LEDs start off. */ - ulGPIOState = 0xffffffffUL; - MSS_GPIO_set_outputs( ulGPIOState ); -} -/*-----------------------------------------------------------*/ - -void vParTestSetLED( unsigned portBASE_TYPE uxLED, signed portBASE_TYPE xValue ) -{ - if( uxLED < partstMAX_LEDS ) - { - /* A critical section is used as the LEDs are also accessed from an - interrupt. */ - taskENTER_CRITICAL(); - { - if( xValue == pdTRUE ) - { - ulGPIOState &= ~( 1UL << uxLED ); - } - else - { - ulGPIOState |= ( 1UL << uxLED ); - } - - MSS_GPIO_set_outputs( ulGPIOState ); - } - taskEXIT_CRITICAL(); - } -} -/*-----------------------------------------------------------*/ - -void vParTestSetLEDFromISR( unsigned portBASE_TYPE uxLED, signed portBASE_TYPE xValue ) -{ -unsigned portBASE_TYPE uxInterruptFlags; - - uxInterruptFlags = portSET_INTERRUPT_MASK_FROM_ISR(); - { - if( uxLED < partstMAX_LEDS ) - { - if( xValue == pdTRUE ) - { - ulGPIOState &= ~( 1UL << uxLED ); - } - else - { - ulGPIOState |= ( 1UL << uxLED ); - } - - MSS_GPIO_set_outputs( ulGPIOState ); - } - } - portCLEAR_INTERRUPT_MASK_FROM_ISR( uxInterruptFlags ); -} -/*-----------------------------------------------------------*/ - -void vParTestToggleLED( unsigned portBASE_TYPE uxLED ) -{ - if( uxLED < partstMAX_LEDS ) - { - /* A critical section is used as the LEDs are also accessed from an - interrupt. */ - taskENTER_CRITICAL(); - { - if( ( ulGPIOState & ( 1UL << uxLED ) ) != 0UL ) - { - ulGPIOState &= ~( 1UL << uxLED ); - } - else - { - ulGPIOState |= ( 1UL << uxLED ); - } - - MSS_GPIO_set_outputs( ulGPIOState ); - } - taskEXIT_CRITICAL(); - } -} -/*-----------------------------------------------------------*/ - -long lParTestGetLEDState( unsigned long ulLED ) -{ -long lReturn = pdFALSE; - - if( ulLED < partstMAX_LEDS ) - { - taskENTER_CRITICAL(); - { - if( ( ulGPIOState & ( 1UL << ulLED ) ) == 0UL ) - { - lReturn = pdTRUE; - } - } - taskEXIT_CRITICAL(); - } - - return lReturn; -} -/*-----------------------------------------------------------*/ diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/ReadMe.txt b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/ReadMe.txt new file mode 100644 index 000000000..12c70d213 --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/ReadMe.txt @@ -0,0 +1 @@ +The third party uIP TCP/IP stack and the demo project that used to be in this directory was removed in FreeRTOS version V10.4.3 due to security vulnerabilities identified in uIP. In a future version this demo may be replaced by a version which does not use TCP/IP or uses FreeRTOS’s own TCP/IP stack in place of the original third party stack. \ No newline at end of file diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/WebServer/httpd-cgi.c b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/WebServer/httpd-cgi.c deleted file mode 100644 index 494396e4f..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/WebServer/httpd-cgi.c +++ /dev/null @@ -1,269 +0,0 @@ -/** - * \addtogroup httpd - * @{ - */ - -/** - * \file - * Web server script interface - * \author - * Adam Dunkels - * - */ - -/* - * Copyright (c) 2001-2006, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: httpd-cgi.c,v 1.2 2006/06/11 21:46:37 adam Exp $ - * - */ -#include "net/uip.h" -#include "net/psock.h" -#include "apps/httpd/httpd.h" -#include "apps/httpd/httpd-cgi.h" -#include "apps/httpd/httpd-fs.h" -#include "mss_ace.h" - -#include -#include - -#include "FreeRTOS.h" -#include "task.h" - -HTTPD_CGI_CALL( file, "file-stats", file_stats ); -HTTPD_CGI_CALL( tcp, "tcp-connections", tcp_stats ); -HTTPD_CGI_CALL( net, "net-stats", net_stats ); -HTTPD_CGI_CALL( rtos, "rtos-stats", rtos_stats ); -HTTPD_CGI_CALL( run, "run-time", run_time ); -HTTPD_CGI_CALL( io, "led-io", led_io ); - -static const struct httpd_cgi_call *calls[] = { &file, &tcp, &net, &rtos, &run, &io, NULL }; - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( nullfunction ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - ( void ) PT_YIELD_FLAG; - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -httpd_cgifunction httpd_cgi( char *name ) -{ - const struct httpd_cgi_call **f; - - /* Find the matching name in the table, return the function. */ - for( f = calls; *f != NULL; ++f ) - { - if( strncmp((*f)->name, name, strlen((*f)->name)) == 0 ) - { - return( *f )->function; - } - } - - return nullfunction; -} - -/*---------------------------------------------------------------------------*/ -static unsigned short generate_file_stats( void *arg ) -{ - char *f = ( char * ) arg; - return sprintf( ( char * ) uip_appdata, "%5u", httpd_fs_count(f) ); -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( file_stats ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - - ( void ) PT_YIELD_FLAG; - - PSOCK_GENERATOR_SEND( &s->sout, generate_file_stats, strchr(ptr, ' ') + 1 ); - - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -static const char closed[] = /* "CLOSED",*/ { 0x43, 0x4c, 0x4f, 0x53, 0x45, 0x44, 0 }; -static const char syn_rcvd[] = /* "SYN-RCVD",*/ { 0x53, 0x59, 0x4e, 0x2d, 0x52, 0x43, 0x56, 0x44, 0 }; -static const char syn_sent[] = /* "SYN-SENT",*/ { 0x53, 0x59, 0x4e, 0x2d, 0x53, 0x45, 0x4e, 0x54, 0 }; -static const char established[] = /* "ESTABLISHED",*/ { 0x45, 0x53, 0x54, 0x41, 0x42, 0x4c, 0x49, 0x53, 0x48, 0x45, 0x44, 0 }; -static const char fin_wait_1[] = /* "FIN-WAIT-1",*/ { 0x46, 0x49, 0x4e, 0x2d, 0x57, 0x41, 0x49, 0x54, 0x2d, 0x31, 0 }; -static const char fin_wait_2[] = /* "FIN-WAIT-2",*/ { 0x46, 0x49, 0x4e, 0x2d, 0x57, 0x41, 0x49, 0x54, 0x2d, 0x32, 0 }; -static const char closing[] = /* "CLOSING",*/ { 0x43, 0x4c, 0x4f, 0x53, 0x49, 0x4e, 0x47, 0 }; -static const char time_wait[] = /* "TIME-WAIT,"*/ { 0x54, 0x49, 0x4d, 0x45, 0x2d, 0x57, 0x41, 0x49, 0x54, 0 }; -static const char last_ack[] = /* "LAST-ACK"*/ { 0x4c, 0x41, 0x53, 0x54, 0x2d, 0x41, 0x43, 0x4b, 0 }; - -static const char *states[] = { closed, syn_rcvd, syn_sent, established, fin_wait_1, fin_wait_2, closing, time_wait, last_ack }; - -static unsigned short generate_tcp_stats( void *arg ) -{ - struct uip_conn *conn; - struct httpd_state *s = ( struct httpd_state * ) arg; - - conn = &uip_conns[s->count]; - return sprintf( ( char * ) uip_appdata, - "
\r\n", htons(conn->lport), - htons(conn->ripaddr.u16[0]) >> 8, htons(conn->ripaddr.u16[0]) & 0xff, htons(conn->ripaddr.u16[1]) >> 8, - htons(conn->ripaddr.u16[1]) & 0xff, htons(conn->rport), states[conn->tcpstateflags & UIP_TS_MASK], conn->nrtx, conn->timer, - (uip_outstanding(conn)) ? '*' : ' ', (uip_stopped(conn)) ? '!' : ' ' ); -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( tcp_stats ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - ( void ) PT_YIELD_FLAG; - for( s->count = 0; s->count < UIP_CONNS; ++s->count ) - { - if( (uip_conns[s->count].tcpstateflags & UIP_TS_MASK) != UIP_CLOSED ) - { - PSOCK_GENERATOR_SEND( &s->sout, generate_tcp_stats, s ); - } - } - - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -static unsigned short generate_net_stats( void *arg ) -{ - struct httpd_state *s = ( struct httpd_state * ) arg; - return sprintf( ( char * ) uip_appdata, "%5u\n", (( uip_stats_t * ) &uip_stat)[s->count] ); -} - -static PT_THREAD( net_stats ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - ( void ) PT_YIELD_FLAG; -#if UIP_STATISTICS - for( s->count = 0; s->count < sizeof(uip_stat) / sizeof(uip_stats_t); ++s->count ) - { - PSOCK_GENERATOR_SEND( &s->sout, generate_net_stats, s ); - } - -#endif /* UIP_STATISTICS */ - - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -extern void vTaskList( char *pcWriteBuffer ); -extern char *pcGetTaskStatusMessage( void ); -static char cCountBuf[128]; -long lRefreshCount = 0; -static unsigned short generate_rtos_stats( void *arg ) -{ - ( void ) arg; - lRefreshCount++; - sprintf( cCountBuf, "


Refresh count = %d


%s", ( int ) lRefreshCount, pcGetTaskStatusMessage() ); - vTaskList( ( char * ) uip_appdata ); - strcat( uip_appdata, cCountBuf ); - - return strlen( uip_appdata ); -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( rtos_stats ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - ( void ) PT_YIELD_FLAG; - PSOCK_GENERATOR_SEND( &s->sout, generate_rtos_stats, NULL ); - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -char *pcStatus; -unsigned long ulString; - -static unsigned short generate_io_state( void *arg ) -{ - extern long lParTestGetLEDState( unsigned long ulLED ); - unsigned short usRawVoltage; - const ace_channel_handle_t xVoltageChannel = ( ace_channel_handle_t ) 0; - - ( void ) arg; - - /* Are the dynamically setable LEDs currently on or off? */ - if( lParTestGetLEDState( 3 ) ) - { - pcStatus = "checked"; - } - else - { - pcStatus = ""; - } - - usRawVoltage = ( unsigned short ) ACE_get_ppe_sample( xVoltageChannel ); - sprintf( uip_appdata, "LED

Raw voltage input is %d", pcStatus, usRawVoltage ); - - return strlen( uip_appdata ); -} - -/*---------------------------------------------------------------------------*/ -extern void vTaskGetRunTimeStats( char *pcWriteBuffer ); -extern unsigned short usMaxJitter; -static unsigned short generate_runtime_stats( void *arg ) -{ - ( void ) arg; - lRefreshCount++; - sprintf( cCountBuf, "


Refresh count = %d", ( int ) lRefreshCount ); - - vTaskGetRunTimeStats( ( char * ) uip_appdata ); - strcat( uip_appdata, cCountBuf ); - - return strlen( uip_appdata ); -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( run_time ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - ( void ) PT_YIELD_FLAG; - PSOCK_GENERATOR_SEND( &s->sout, generate_runtime_stats, NULL ); - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( led_io ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - ( void ) PT_YIELD_FLAG; - PSOCK_GENERATOR_SEND( &s->sout, generate_io_state, NULL ); - PSOCK_END( &s->sout ); -} - -/** @} */ diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/WebServer/httpd-fs/404.html b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/WebServer/httpd-fs/404.html deleted file mode 100644 index 43e7f4cad..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/WebServer/httpd-fs/404.html +++ /dev/null @@ -1,8 +0,0 @@ - - -

-

404 - file not found

-

Go here instead.

-
- - \ No newline at end of file diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/WebServer/httpd-fs/index.html b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/WebServer/httpd-fs/index.html deleted file mode 100644 index 4937dc69a..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/WebServer/httpd-fs/index.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Loading index.shtml. Click here if not automatically redirected. - - - - - diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/WebServer/httpd-fs/index.shtml b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/WebServer/httpd-fs/index.shtml deleted file mode 100644 index 882d085ce..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/WebServer/httpd-fs/index.shtml +++ /dev/null @@ -1,20 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS Homepage | IO | 37K jpg -

-


-

-

Task statistics

-Page will refresh every 2 seconds.

-

Task          State  Priority  Stack	#
************************************************
-%! rtos-stats -
-
- - - diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/WebServer/httpd-fs/io.shtml b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/WebServer/httpd-fs/io.shtml deleted file mode 100644 index 819e2d39b..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/WebServer/httpd-fs/io.shtml +++ /dev/null @@ -1,28 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS Homepage | IO | 37K jpg -

-


-LED and LCD IO
- -

- -Use the check box to turn on or off LED 4, then click "Update IO". - - -

-
-%! led-io -

- - -

- - - - diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/WebServer/httpd-fs/runtime.shtml b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/WebServer/httpd-fs/runtime.shtml deleted file mode 100644 index 3464fd471..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/WebServer/httpd-fs/runtime.shtml +++ /dev/null @@ -1,20 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS Homepage | IO | 37K jpg -

-


-

-

Run-time statistics

-Page will refresh every 2 seconds.

-

Task            Abs Time      % Time
****************************************
-%! run-time -
-
- - - diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/WebServer/httpd-fs/stats.shtml b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/WebServer/httpd-fs/stats.shtml deleted file mode 100644 index f54118606..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/WebServer/httpd-fs/stats.shtml +++ /dev/null @@ -1,47 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS Homepage | IO | 37K jpg -

-


-

-

Network statistics

-
LocalRemoteStateRetransmissionsTimerFlags
%d%u.%u.%u.%u:%u%s%u%u%c %c
-
-IP           Packets received
-             Packets sent
-             Forwaded
-             Dropped
-IP errors    IP version/header length
-             IP length, high byte
-             IP length, low byte
-             IP fragments
-             Header checksum
-             Wrong protocol
-ICMP	     Packets received
-             Packets sent
-             Packets dropped
-             Type errors
-             Checksum errors
-TCP          Packets received
-             Packets sent
-             Packets dropped
-             Checksum errors
-             Data packets without ACKs
-             Resets
-             Retransmissionsa
-             Syn to closed port
-UDP          Packets dropped
-             Packets received
-             Packets sent
-             Packets chkerr
-	     No connection avaliable
-
%! net-stats
-
- - - diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/WebServer/httpd-fs/tcp.shtml b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/WebServer/httpd-fs/tcp.shtml deleted file mode 100644 index 23dcdcae3..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/WebServer/httpd-fs/tcp.shtml +++ /dev/null @@ -1,21 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS Homepage | IO | 37K jpg -

-


-
-

Network connections

-

- - -%! tcp-connections - - - - - diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/WebServer/httpd-fsdata.c b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/WebServer/httpd-fsdata.c deleted file mode 100644 index 47823d100..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/WebServer/httpd-fsdata.c +++ /dev/null @@ -1,3871 +0,0 @@ -static const char data_404_html[] = { - /* /404.html */ - 0x2f, 0x34, 0x30, 0x34, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, 0xa, 0x20, 0x20, - 0x3c, 0x62, 0x6f, 0x64, 0x79, 0x20, 0x62, 0x67, 0x63, 0x6f, - 0x6c, 0x6f, 0x72, 0x3d, 0x22, 0x77, 0x68, 0x69, 0x74, 0x65, - 0x22, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x63, - 0x65, 0x6e, 0x74, 0x65, 0x72, 0x3e, 0xd, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x3c, 0x68, 0x31, 0x3e, 0x34, 0x30, - 0x34, 0x20, 0x2d, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x6e, - 0x6f, 0x74, 0x20, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x3c, 0x2f, - 0x68, 0x31, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x3c, 0x68, 0x33, 0x3e, 0x47, 0x6f, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x2f, 0x22, 0x3e, - 0x68, 0x65, 0x72, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x69, - 0x6e, 0x73, 0x74, 0x65, 0x61, 0x64, 0x2e, 0x3c, 0x2f, 0x68, - 0x33, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x2f, - 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x3e, 0xd, 0xa, 0x20, - 0x20, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xd, 0xa, - 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0}; - -static const char data_index_html[] = { - /* /index.html */ - 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x20, 0x6f, 0x6e, 0x4c, 0x6f, 0x61, 0x64, - 0x3d, 0x22, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x73, - 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x28, - 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x6c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x68, 0x72, 0x65, 0x66, 0x3d, - 0x27, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, - 0x6d, 0x6c, 0x27, 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x2c, - 0x31, 0x30, 0x30, 0x29, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x66, - 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, - 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xd, 0xa, 0x4c, - 0x6f, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x69, 0x6e, 0x64, - 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x2e, 0x20, - 0x20, 0x43, 0x6c, 0x69, 0x63, 0x6b, 0x20, 0x3c, 0x61, 0x20, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x68, - 0x65, 0x72, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x69, 0x66, - 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x61, 0x75, 0x74, 0x6f, 0x6d, - 0x61, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x6c, 0x79, 0x20, 0x72, - 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x65, 0x64, 0x2e, - 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xd, - 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xd, 0xa, - 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xd, 0xa, 0x3c, - 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, 0xa, 0xd, 0xa, -0}; - -static const char data_index_shtml[] = { - /* /index.shtml */ - 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x20, 0x6f, 0x6e, 0x4c, 0x6f, 0x61, 0x64, - 0x3d, 0x22, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x73, - 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x28, - 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x6c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x68, 0x72, 0x65, 0x66, 0x3d, - 0x27, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, - 0x6d, 0x6c, 0x27, 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x2c, - 0x32, 0x30, 0x30, 0x30, 0x29, 0x22, 0x3e, 0xd, 0xa, 0x3c, - 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, - 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xd, 0xa, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x53, 0x74, 0x61, - 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x72, 0x75, 0x6e, 0x74, 0x69, - 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x52, 0x75, 0x6e, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, - 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, - 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x54, 0x43, 0x50, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, - 0x6c, 0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, - 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, - 0x65, 0x65, 0x72, 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, - 0x2f, 0x22, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x20, 0x48, 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, - 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, - 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, - 0x66, 0x3d, 0x22, 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, - 0x6c, 0x22, 0x3e, 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0x20, - 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, - 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x6c, 0x6f, - 0x67, 0x6f, 0x2e, 0x6a, 0x70, 0x67, 0x22, 0x3e, 0x33, 0x37, - 0x4b, 0x20, 0x6a, 0x70, 0x67, 0x3c, 0x2f, 0x61, 0x3e, 0xd, - 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, - 0x3c, 0x68, 0x72, 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, - 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x32, 0x3e, 0x54, - 0x61, 0x73, 0x6b, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, - 0x74, 0x69, 0x63, 0x73, 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0xd, - 0xa, 0x50, 0x61, 0x67, 0x65, 0x20, 0x77, 0x69, 0x6c, 0x6c, - 0x20, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x20, 0x65, - 0x76, 0x65, 0x72, 0x79, 0x20, 0x32, 0x20, 0x73, 0x65, 0x63, - 0x6f, 0x6e, 0x64, 0x73, 0x2e, 0x3c, 0x70, 0x3e, 0xd, 0xa, - 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, - 0x3d, 0x22, 0x63, 0x6f, 0x75, 0x72, 0x69, 0x65, 0x72, 0x22, - 0x3e, 0x3c, 0x70, 0x72, 0x65, 0x3e, 0x54, 0x61, 0x73, 0x6b, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x53, 0x74, 0x61, 0x74, 0x65, 0x20, 0x20, 0x50, 0x72, 0x69, - 0x6f, 0x72, 0x69, 0x74, 0x79, 0x20, 0x20, 0x53, 0x74, 0x61, - 0x63, 0x6b, 0x9, 0x23, 0x3c, 0x62, 0x72, 0x3e, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x3c, 0x62, 0x72, 0x3e, - 0xd, 0xa, 0x25, 0x21, 0x20, 0x72, 0x74, 0x6f, 0x73, 0x2d, - 0x73, 0x74, 0x61, 0x74, 0x73, 0xd, 0xa, 0x3c, 0x2f, 0x70, - 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, - 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xd, - 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xd, 0xa, - 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, 0xa, 0xd, - 0xa, 0}; - -static const char data_io_shtml[] = { - /* /io.shtml */ - 0x2f, 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x6e, - 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, - 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x61, 0x20, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, - 0x61, 0x73, 0x6b, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x52, 0x75, 0x6e, - 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, 0x74, 0x61, 0x74, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x43, 0x50, - 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, - 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, - 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, 0x65, 0x65, 0x72, - 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x22, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x20, 0x48, - 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, - 0x6a, 0x70, 0x67, 0x22, 0x3e, 0x33, 0x37, 0x4b, 0x20, 0x6a, - 0x70, 0x67, 0x3c, 0x2f, 0x61, 0x3e, 0xd, 0xa, 0x3c, 0x62, - 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x72, - 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x3e, 0x4c, 0x45, 0x44, 0x20, - 0x61, 0x6e, 0x64, 0x20, 0x4c, 0x43, 0x44, 0x20, 0x49, 0x4f, - 0x3c, 0x2f, 0x62, 0x3e, 0x3c, 0x62, 0x72, 0x3e, 0xd, 0xa, - 0xd, 0xa, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0xd, 0xa, 0x55, - 0x73, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x68, 0x65, - 0x63, 0x6b, 0x20, 0x62, 0x6f, 0x78, 0x20, 0x74, 0x6f, 0x20, - 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6f, 0x6e, 0x20, 0x6f, 0x72, - 0x20, 0x6f, 0x66, 0x66, 0x20, 0x4c, 0x45, 0x44, 0x20, 0x34, - 0x2c, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x20, 0x63, 0x6c, 0x69, - 0x63, 0x6b, 0x20, 0x22, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x20, 0x49, 0x4f, 0x22, 0x2e, 0xd, 0xa, 0xd, 0xa, 0xd, - 0xa, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x72, - 0x6d, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x22, 0x61, 0x46, - 0x6f, 0x72, 0x6d, 0x22, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x3d, 0x22, 0x2f, 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, - 0x6d, 0x6c, 0x22, 0x20, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, - 0x3d, 0x22, 0x67, 0x65, 0x74, 0x22, 0x3e, 0xd, 0xa, 0x25, - 0x21, 0x20, 0x6c, 0x65, 0x64, 0x2d, 0x69, 0x6f, 0xd, 0xa, - 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x69, 0x6e, 0x70, 0x75, - 0x74, 0x20, 0x74, 0x79, 0x70, 0x65, 0x3d, 0x22, 0x73, 0x75, - 0x62, 0x6d, 0x69, 0x74, 0x22, 0x20, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x3d, 0x22, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, - 0x49, 0x4f, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, - 0x72, 0x6d, 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, - 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, - 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, - 0xd, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, - 0xa, 0xd, 0xa, 0}; - -static const char data_logo_jpg[] = { - /* /logo.jpg */ - 0x2f, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, 0x6a, 0x70, 0x67, 0, - 0xff, 0xd8, 0xff, 0xe0, 00, 0x10, 0x4a, 0x46, 0x49, 0x46, - 00, 0x1, 0x1, 00, 00, 0x1, 00, 0x1, 00, 00, - 0xff, 0xdb, 00, 0x43, 00, 0x3, 0x2, 0x2, 0x3, 0x2, - 0x2, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x3, 0x4, 0x5, - 0x8, 0x5, 0x5, 0x4, 0x4, 0x5, 0xa, 0x7, 0x7, 0x6, - 0x8, 0xc, 0xa, 0xc, 0xc, 0xb, 0xa, 0xb, 0xb, 0xd, - 0xe, 0x12, 0x10, 0xd, 0xe, 0x11, 0xe, 0xb, 0xb, 0x10, - 0x16, 0x10, 0x11, 0x13, 0x14, 0x15, 0x15, 0x15, 0xc, 0xf, - 0x17, 0x18, 0x16, 0x14, 0x18, 0x12, 0x14, 0x15, 0x14, 0xff, - 0xdb, 00, 0x43, 0x1, 0x3, 0x4, 0x4, 0x5, 0x4, 0x5, - 0x9, 0x5, 0x5, 0x9, 0x14, 0xd, 0xb, 0xd, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0xff, 0xc0, - 00, 0x11, 0x8, 0x1, 0x8, 0x2, 0xc2, 0x3, 0x1, 0x22, - 00, 0x2, 0x11, 0x1, 0x3, 0x11, 0x1, 0xff, 0xc4, 00, - 0x1f, 00, 00, 0x1, 0x5, 0x1, 0x1, 0x1, 0x1, 0x1, - 0x1, 00, 00, 00, 00, 00, 00, 00, 00, 0x1, - 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb, - 0xff, 0xc4, 00, 0xb5, 0x10, 00, 0x2, 0x1, 0x3, 0x3, - 0x2, 0x4, 0x3, 0x5, 0x5, 0x4, 0x4, 00, 00, 0x1, - 0x7d, 0x1, 0x2, 0x3, 00, 0x4, 0x11, 0x5, 0x12, 0x21, - 0x31, 0x41, 0x6, 0x13, 0x51, 0x61, 0x7, 0x22, 0x71, 0x14, - 0x32, 0x81, 0x91, 0xa1, 0x8, 0x23, 0x42, 0xb1, 0xc1, 0x15, - 0x52, 0xd1, 0xf0, 0x24, 0x33, 0x62, 0x72, 0x82, 0x9, 0xa, - 0x16, 0x17, 0x18, 0x19, 0x1a, 0x25, 0x26, 0x27, 0x28, 0x29, - 0x2a, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x43, 0x44, - 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x53, 0x54, 0x55, 0x56, - 0x57, 0x58, 0x59, 0x5a, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, - 0x69, 0x6a, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, - 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x92, 0x93, - 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0xa2, 0xa3, 0xa4, - 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xb2, 0xb3, 0xb4, 0xb5, - 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, - 0xc7, 0xc8, 0xc9, 0xca, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, - 0xd8, 0xd9, 0xda, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, - 0xe8, 0xe9, 0xea, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, - 0xf8, 0xf9, 0xfa, 0xff, 0xc4, 00, 0x1f, 0x1, 00, 0x3, - 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 00, - 00, 00, 00, 00, 00, 0x1, 0x2, 0x3, 0x4, 0x5, - 0x6, 0x7, 0x8, 0x9, 0xa, 0xb, 0xff, 0xc4, 00, 0xb5, - 0x11, 00, 0x2, 0x1, 0x2, 0x4, 0x4, 0x3, 0x4, 0x7, - 0x5, 0x4, 0x4, 00, 0x1, 0x2, 0x77, 00, 0x1, 0x2, - 0x3, 0x11, 0x4, 0x5, 0x21, 0x31, 0x6, 0x12, 0x41, 0x51, - 0x7, 0x61, 0x71, 0x13, 0x22, 0x32, 0x81, 0x8, 0x14, 0x42, - 0x91, 0xa1, 0xb1, 0xc1, 0x9, 0x23, 0x33, 0x52, 0xf0, 0x15, - 0x62, 0x72, 0xd1, 0xa, 0x16, 0x24, 0x34, 0xe1, 0x25, 0xf1, - 0x17, 0x18, 0x19, 0x1a, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x35, - 0x36, 0x37, 0x38, 0x39, 0x3a, 0x43, 0x44, 0x45, 0x46, 0x47, - 0x48, 0x49, 0x4a, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, - 0x5a, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x73, - 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x82, 0x83, 0x84, - 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x92, 0x93, 0x94, 0x95, - 0x96, 0x97, 0x98, 0x99, 0x9a, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, - 0xa7, 0xa8, 0xa9, 0xaa, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, - 0xb8, 0xb9, 0xba, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, - 0xc9, 0xca, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, - 0xda, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, - 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xff, - 0xda, 00, 0xc, 0x3, 0x1, 00, 0x2, 0x11, 0x3, 0x11, - 00, 0x3f, 00, 0xfd, 0x53, 0xa2, 0x8a, 0x28, 00, 0xa2, - 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, - 00, 0xaa, 0xf7, 0xfa, 0x85, 0xb6, 0x95, 0x67, 0x2d, 0xd5, - 0xe4, 0xf1, 0xdb, 0x5b, 0x44, 0xa5, 0x9e, 0x59, 0x58, 0x2a, - 0xa8, 0x1e, 0xf5, 0xc6, 0x7c, 0x4e, 0xf8, 0xb3, 0xa6, 0xfc, - 0x39, 0xb4, 0x48, 0xb0, 0xb7, 0xda, 0xd5, 0xc6, 0x5, 0xb6, - 0x9e, 0x8d, 0x86, 0x72, 0x4e, 0x37, 0x37, 0xf7, 0x57, 0xf9, - 0xf6, 0xaa, 0x16, 0x5f, 0xd, 0x9f, 0xc6, 0xd0, 0xc5, 0xa9, - 0xf8, 0xc6, 0xe1, 0xef, 0xa6, 0x99, 0x3, 0xa6, 0x9e, 0x84, - 0xad, 0xbd, 0xb6, 0x7b, 0x2a, 0xf7, 0x3e, 0xe7, 0x9a, 0xe0, - 0xa9, 0x89, 0xbc, 0xdd, 0x1a, 0xb, 0x9a, 0x6b, 0x7e, 0xcb, - 0xd5, 0xfe, 0x9b, 0x9c, 0xb2, 0xaf, 0x79, 0x3a, 0x74, 0xb5, - 0x92, 0xdf, 0xb2, 0xf5, 0xff, 00, 0x23, 0x93, 0xf1, 0xa7, - 0xed, 0x5f, 0xa1, 0x69, 0x1b, 0xa1, 0xd0, 0x2d, 0x64, 0xd6, - 0x2e, 0x1, 0xc7, 0x9b, 0x26, 0x62, 0x84, 0x7d, 0xf, 0x53, - 0xf9, 0x57, 0x91, 0x6b, 0x5f, 0xb5, 0xf, 0x8e, 0x35, 0x49, - 0x9, 0xb7, 0xba, 0xb7, 0xd3, 0x23, 0xec, 0x96, 0xd0, 0x29, - 0xfd, 0x5b, 0x26, 0xbe, 0x92, 0x7f, 0x81, 0x1e, 0xb, 0x7f, - 0xf9, 0x84, 0x46, 0x3e, 0x95, 0xb, 0xfe, 0xcf, 0xfe, 0xa, - 0x93, 0xae, 0x96, 0xa3, 0xe8, 0x6b, 0xc2, 0xaf, 0x84, 0xcd, - 0xab, 0xbb, 0xba, 0xa9, 0x2e, 0xc9, 0xb5, 0xfa, 0x5c, 0xf0, - 0xb1, 0x18, 0x4c, 0xce, 0xbb, 0xd2, 0xb2, 0x8a, 0xec, 0xb4, - 0xff, 00, 0x82, 0x7c, 0x91, 0x3f, 0xc6, 0xf, 0x19, 0x5c, - 0x48, 0x5d, 0xfc, 0x45, 0x7e, 0x58, 0xf5, 0xc4, 0xb8, 0x1f, - 0x90, 0xa7, 0x27, 0xc6, 0x5f, 0x1a, 0x46, 0xca, 0x57, 0xc4, - 0x57, 0xc0, 0xaf, 0x23, 0xf7, 0x99, 0xfe, 0x95, 0xf5, 0x73, - 0xfe, 0xce, 0x9e, 0x9, 0x7f, 0xf9, 0x87, 0x15, 0xfa, 0x35, - 0x43, 0x27, 0xec, 0xd7, 0xe0, 0xa7, 0xe9, 0x67, 0x2a, 0xfd, - 0x1e, 0xbc, 0xcf, 0xec, 0x7c, 0xc5, 0x3b, 0xa9, 0xff, 00, - 0xe4, 0xcc, 0xf3, 0x3f, 0xb1, 0xf3, 0x1d, 0xd5, 0x6f, 0xc5, - 0x9f, 0x31, 0x2f, 0xc7, 0x9f, 0x1e, 0x29, 0xcf, 0xfc, 0x24, - 0x77, 0x47, 0xea, 0x10, 0xff, 00, 0x4a, 0x9e, 0x2f, 0xda, - 0x17, 0xc7, 0xd1, 0xc, 0xf, 0x10, 0xcc, 0x7b, 0xfc, 0xd0, - 0xc6, 0x7f, 0x9a, 0xd7, 0xd1, 0xed, 0xfb, 0x31, 0xf8, 0x34, - 0xe7, 0x10, 0xce, 0x7, 0xfb, 0xff, 00, 0xfd, 0x6a, 0x81, - 0xff, 00, 0x65, 0xcf, 0x8, 0x37, 0x4f, 0xb4, 0x83, 0xfe, - 0xf0, 0xa7, 0xfd, 0x99, 0x9a, 0xad, 0xaa, 0x7f, 0xe4, 0xcc, - 0x3f, 0xb2, 0xf3, 0x45, 0xb5, 0x6f, 0xc5, 0x9f, 0x3d, 0xff, - 00, 0xc3, 0x46, 0x7c, 0x40, 0xff, 00, 0xa0, 0xfb, 0xff, - 00, 0xe0, 0x3c, 0x5f, 0xfc, 0x4d, 0x48, 0xbf, 0xb4, 0x8f, - 0x8f, 0xd4, 0xe7, 0xfb, 0x6f, 0x3e, 0xc6, 0xda, 0x2f, 0xfe, - 0x26, 0xbd, 0xe9, 0xff, 00, 0x65, 0x6f, 0x9, 0xb6, 0x71, - 0x25, 0xd0, 0xff, 00, 0x81, 0xa, 0x85, 0xff, 00, 0x64, - 0xff, 00, 0xb, 0x30, 0xe2, 0xe6, 0xed, 0x4f, 0xd4, 0x51, - 0xfd, 0x9d, 0x9b, 0x2f, 0xb6, 0xff, 00, 0xf0, 0x26, 0x1f, - 0xd9, 0xd9, 0xb2, 0xda, 0xb7, 0xfe, 0x4c, 0xcf, 0x11, 0x5f, - 0xda, 0x63, 0xc7, 0xca, 0x79, 0xd5, 0xa3, 0x6f, 0x63, 0x6b, - 0x1f, 0xf8, 0x54, 0xcb, 0xfb, 0x50, 0x78, 0xf1, 0x40, 0x1f, - 0x6f, 0xb6, 0x3e, 0xe6, 0xd5, 0x2b, 0xd8, 0x5b, 0xf6, 0x49, - 0xf0, 0xd1, 0xe9, 0x7f, 0x76, 0xbe, 0xdc, 0x54, 0xf, 0xfb, - 0x22, 0xe8, 0x24, 0x7c, 0xba, 0xa5, 0xd0, 0x3f, 0xee, 0x8a, - 0x5f, 0x52, 0xce, 0x17, 0xda, 0x7f, 0xf8, 0x17, 0xfc, 0x10, - 0xfa, 0x8e, 0x70, 0xbf, 0xe5, 0xef, 0xfe, 0x4c, 0x79, 0x7a, - 0xfe, 0xd5, 0x9e, 0x38, 0x4, 0x66, 0x4d, 0x3d, 0xb1, 0xd8, - 0xda, 0xf5, 0xfd, 0x6a, 0x55, 0xfd, 0xac, 0x7c, 0x6a, 0xbd, - 0x53, 0x4c, 0x6f, 0xad, 0xb3, 0x7f, 0xf1, 0x55, 0xe8, 0xcf, - 0xfb, 0x21, 0x68, 0xe7, 0xee, 0xea, 0xd7, 0x3, 0xea, 0xa2, - 0xa0, 0x7f, 0xd9, 0x3, 0x4e, 0x39, 0xdb, 0xac, 0x4c, 0x3e, - 0xa8, 0x29, 0xfd, 0x5b, 0x39, 0x5f, 0x69, 0xff, 00, 0xe0, - 0x48, 0x3e, 0xa9, 0x9d, 0x2f, 0xf9, 0x79, 0xf8, 0x9c, 0x18, - 0xfd, 0xad, 0x3c, 0x67, 0xff, 00, 0x3c, 0x74, 0xbf, 0xfc, - 0x7, 0x6f, 0xfe, 0x2e, 0x9e, 0x3f, 0x6b, 0x6f, 0x18, 0x77, - 0xb6, 0xd2, 0xcf, 0xfd, 0xb0, 0x7f, 0xfe, 0x2e, 0xbb, 0x37, - 0xfd, 0x8f, 0xac, 0xff, 00, 0x87, 0x5a, 0x93, 0xf1, 0x41, - 0x50, 0xbf, 0xec, 0x7b, 0x11, 0xfb, 0xba, 0xe3, 0xf, 0xac, - 0x74, 0x7b, 0x1c, 0xe9, 0x75, 0x7f, 0x7a, 0x17, 0xd5, 0xf3, - 0xb5, 0xf6, 0xff, 00, 0x14, 0x72, 0xc9, 0xfb, 0x5d, 0x78, - 0xb1, 0x4f, 0xcd, 0x63, 0xa5, 0xb0, 0xf4, 0xf2, 0x9c, 0x7f, - 0xec, 0xd5, 0x62, 0x2f, 0xda, 0xff, 00, 0xc4, 0x8a, 0xb8, - 0x7d, 0x27, 0x4d, 0x73, 0xea, 0x3, 0x8f, 0xfd, 0x9a, 0xb6, - 0x9f, 0xf6, 0x3d, 0x71, 0x8d, 0x9a, 0xd8, 0x3f, 0x58, 0xea, - 0x17, 0xfd, 0x8f, 0xee, 0x81, 0x3b, 0x75, 0x98, 0xcf, 0xa6, - 0x52, 0xa7, 0x93, 0x3a, 0x5f, 0xcd, 0xf7, 0xa0, 0xf6, 0x79, - 0xe2, 0xfb, 0x5f, 0x91, 0x4d, 0x7f, 0x6c, 0x4d, 0x6c, 0x1, - 0xbb, 0x42, 0xb0, 0x27, 0xb9, 0xe, 0xe3, 0x35, 0x3a, 0x7e, - 0xd8, 0xda, 0x98, 0x3f, 0x37, 0x87, 0x6d, 0x8, 0xf6, 0xb8, - 0x61, 0xfd, 0x29, 0xad, 0xfb, 0x21, 0x6a, 0x40, 0x71, 0xaa, - 0xc2, 0x4f, 0xa6, 0xda, 0x85, 0xff, 00, 0x64, 0x4d, 0x60, - 0x1f, 0x97, 0x53, 0x80, 0xfe, 0x14, 0xef, 0x9d, 0xae, 0xff, - 00, 0x80, 0x7f, 0xc2, 0xe2, 0xeb, 0xf9, 0x17, 0x7, 0xed, - 0x8f, 0x7b, 0xdf, 0xc3, 0x56, 0xdf, 0x85, 0xd3, 0x7f, 0xf1, - 0x35, 0x22, 0xfe, 0xd8, 0xf7, 0x3c, 0x6e, 0xf0, 0xd4, 0x3e, - 0xf8, 0xba, 0x3f, 0xfc, 0x4d, 0x64, 0x37, 0xec, 0x8f, 0xaf, - 0x1, 0xf2, 0xdf, 0xdb, 0x93, 0xe8, 0x6a, 0x16, 0xfd, 0x92, - 0xfc, 0x48, 0xf, 0xcb, 0x75, 0x6c, 0x47, 0xae, 0xea, 0x4e, - 0xae, 0x74, 0xbf, 0x9b, 0xee, 0x42, 0xe7, 0xcf, 0x17, 0xfc, - 0x32, 0x3a, 0x45, 0xfd, 0xb1, 0xf9, 0xf9, 0xbc, 0x32, 0x31, - 0xed, 0x77, 0xff, 00, 0xd8, 0xd4, 0xf1, 0xfe, 0xd8, 0xf6, - 0xd8, 0x3b, 0xfc, 0x37, 0x26, 0x7b, 0x6d, 0xba, 0x1f, 0xfc, - 0x4d, 0x71, 0x6f, 0xfb, 0x29, 0x78, 0xa9, 0x46, 0x43, 0xdb, - 0x93, 0xe9, 0xbc, 0x54, 0x2f, 0xfb, 0x2c, 0x78, 0xb5, 0x71, - 0x81, 0x9, 0xfa, 0x38, 0xa5, 0xf5, 0x9c, 0xe5, 0x74, 0x97, - 0xfe, 0x2, 0xbf, 0xc8, 0x7e, 0xdf, 0x3b, 0x5f, 0x67, 0xf0, - 0x47, 0xa2, 0x45, 0xfb, 0x62, 0xe9, 0x45, 0x7, 0x99, 0xe1, - 0xeb, 0xb0, 0xfe, 0x8b, 0x3a, 0x11, 0xfc, 0xaa, 0xc2, 0x7e, - 0xd8, 0x3a, 0x1, 0xc6, 0xfd, 0xf, 0x50, 0x5f, 0x5c, 0x3a, - 0x1f, 0xeb, 0x5e, 0x58, 0xff, 00, 0xb2, 0xff, 00, 0x8c, - 0x57, 0x38, 0x82, 0x26, 0xc7, 0xfb, 0x62, 0xa2, 0x6f, 0xd9, - 0x97, 0xc6, 0x63, 0x18, 0xb4, 0x43, 0xf4, 0x71, 0x4f, 0xeb, - 0xb9, 0xc2, 0xfb, 0x2f, 0xff, 00, 0x1, 0xff, 00, 0x80, - 0x1f, 0x5a, 0xce, 0x97, 0xd8, 0xfc, 0x11, 0xeb, 0xa3, 0xf6, - 0xbe, 0xf0, 0xd7, 0x7d, 0x23, 0x53, 0x1f, 0xf7, 0xef, 0xff, - 00, 0x8a, 0xa7, 0xaf, 0xed, 0x79, 0xe1, 0x72, 0x39, 0xd2, - 0xf5, 0x31, 0xff, 00, 0x1, 0x4f, 0xfe, 0x2a, 0xbc, 0x61, - 0xff, 00, 0x66, 0xcf, 0x1a, 0xa6, 0x71, 0xa7, 0x86, 0xc7, - 0xa3, 0x8a, 0x85, 0xff, 00, 0x67, 0x5f, 0x1b, 0xa0, 0xcf, - 0xf6, 0x53, 0x1f, 0xa3, 0xa, 0x3f, 0xb4, 0x33, 0x65, 0xf6, - 0x5f, 0xfe, 0x3, 0xff, 00, 00, 0x5f, 0x5e, 0xce, 0x56, - 0xf4, 0xff, 00, 0x3, 0xdc, 0x47, 0xed, 0x71, 0xe1, 0x42, - 0x46, 0x74, 0xfd, 0x4c, 0xf, 0xf7, 0x13, 0xff, 00, 0x8a, - 0xa9, 0xe3, 0xfd, 0xac, 0xfc, 0x1e, 0xc4, 0xee, 0xb6, 0xd4, - 0x90, 0x7f, 0xd7, 0x15, 0x3f, 0xfb, 0x35, 0x78, 0x3, 0x7e, - 0xcf, 0xfe, 0x36, 0x52, 0x47, 0xf6, 0x3c, 0x9f, 0x81, 0x15, - 0xb, 0xfc, 0x9, 0xf1, 0xa2, 0xc, 0xff, 00, 0x63, 0x4c, - 0x7e, 0x98, 0xa5, 0xfd, 0xa7, 0x9a, 0x2d, 0xe2, 0xff, 00, - 0xf0, 0x16, 0x1f, 0xda, 0x39, 0xba, 0xde, 0x9f, 0xe0, 0x7d, - 0x19, 0x1f, 0xed, 0x59, 0xe0, 0x97, 0x5c, 0xb7, 0xf6, 0x8a, - 0x1f, 0x43, 0x6c, 0xf, 0xfe, 0xcd, 0x53, 0xaf, 0xed, 0x4b, - 0xe0, 0x43, 0x8c, 0xdc, 0x5e, 0x8f, 0xad, 0xab, 0x71, 0x5f, - 0x33, 0xb7, 0xc1, 0x2f, 0x19, 0x29, 0xff, 00, 0x90, 0x2d, - 0xc7, 0xe5, 0x50, 0x37, 0xc1, 0xcf, 0x18, 0x20, 0xc9, 0xd1, - 0x2e, 0x71, 0xec, 0xb5, 0x5f, 0xda, 0xf9, 0x92, 0xde, 0x1f, - 0xf9, 0x2b, 0xf, 0xed, 0x5c, 0xd5, 0x6f, 0x4b, 0xf0, 0x7f, - 0xe6, 0x7d, 0x48, 0x3f, 0x69, 0xff, 00, 0x1, 0x1f, 0xf9, - 0x7f, 0xba, 0x1f, 0xf6, 0xe8, 0xff, 00, 0xe1, 0x4e, 0x1f, - 0xb4, 0xe7, 0x80, 0x4f, 0xfc, 0xc4, 0x6e, 0x7, 0xd6, 0xd1, - 0xff, 00, 0xc2, 0xbe, 0x54, 0x7f, 0x84, 0xde, 0x2d, 0x8f, - 0xae, 0x87, 0x77, 0xf8, 0x25, 0x40, 0xdf, 0xc, 0xfc, 0x50, - 0xa0, 0x93, 0xa3, 0x5d, 0xf1, 0xff, 00, 0x4c, 0xcd, 0x27, - 0x9d, 0x66, 0xb, 0xec, 0x2f, 0xfc, 0x5, 0xff, 00, 0x98, - 0xbf, 0xb6, 0x33, 0x35, 0xbd, 0x2f, 0xc1, 0xff, 00, 0x99, - 0xf5, 0xa8, 0xfd, 0xa5, 0xfc, 0x2, 0x46, 0x7f, 0xb5, 0x26, - 0x1f, 0x5b, 0x57, 0xff, 00, 0xa, 0x9d, 0x3f, 0x68, 0xdf, - 00, 0xb9, 0xc7, 0xf6, 0xd1, 0x5f, 0x76, 0xb7, 0x93, 0xff, - 00, 0x89, 0xaf, 0x8f, 0x9b, 0xe1, 0xe7, 0x89, 0x13, 0x19, - 0xd2, 0x2e, 0xc6, 0x7f, 0xe9, 0x99, 0xa8, 0xdb, 0xc0, 0xbe, - 0x20, 0x4c, 0xe7, 0x4a, 0xbb, 0x18, 0xeb, 0xfb, 0xb3, 0x4b, - 0xfb, 0x73, 0x1c, 0xb7, 0x82, 0xfb, 0x9f, 0xf9, 0x87, 0xf6, - 0xd6, 0x60, 0xb7, 0xa5, 0xf8, 0x3f, 0xf3, 0x3e, 0xcc, 0x8f, - 0xf6, 0x84, 0xf0, 0xc, 0x99, 0xff, 00, 0x89, 0xfc, 0x6b, - 0x8f, 0xef, 0x43, 0x20, 0xff, 00, 0xd9, 0x6a, 0x75, 0xf8, - 0xf1, 0xe0, 0x26, 0x50, 0x47, 0x88, 0xed, 0xb9, 0xf5, 0x57, - 0x1f, 0xd2, 0xbe, 0x27, 0x6f, 0x7, 0x6b, 0x8b, 0xd7, 0x4c, - 0xba, 0x1f, 0xf6, 0xcc, 0xd4, 0x6d, 0xe1, 0x6d, 0x65, 0x9, - 0x7, 0x4e, 0xba, 0x18, 0xff, 00, 0xa6, 0x66, 0x9f, 0xf6, - 0xfe, 0x2d, 0x6f, 0x5, 0xf7, 0x3f, 0xf3, 0x1f, 0xf6, 0xee, - 0x35, 0x6f, 0x47, 0xf0, 0x67, 0xdc, 0x23, 0xe3, 0x87, 0x81, - 0xf, 0xfc, 0xcc, 0xd6, 0x5f, 0x99, 0xff, 00, 0xa, 0x92, - 0x3f, 0x8d, 0x3e, 0x7, 0x90, 0x90, 0xbe, 0x26, 0xb0, 0xe3, - 0xd6, 0x4c, 0x7f, 0x4a, 0xf8, 0x54, 0xe8, 0x1a, 0xa2, 0x8c, - 0x9b, 0x1b, 0x80, 0x3f, 0xeb, 0x99, 0xa6, 0x1d, 0x1b, 0x51, - 0x5e, 0xb6, 0x93, 0x8f, 0xf8, 0x1, 0xa7, 0xfe, 0xb0, 0xe2, - 0x7f, 0x92, 0x3f, 0x8f, 0xf9, 0x87, 0xf6, 0xfe, 0x2f, 0xad, - 0x1f, 0xcc, 0xfb, 0xc9, 0x7e, 0x2f, 0x78, 0x2d, 0x86, 0x47, - 0x89, 0x74, 0xec, 0x7f, 0xd7, 0x61, 0x53, 0x47, 0xf1, 0x4f, - 0xc2, 0x12, 0x90, 0x17, 0xc4, 0x7a, 0x71, 0x27, 0xa7, 0xfa, - 0x42, 0xd7, 0xc0, 0xa7, 0x4b, 0xbe, 0x1d, 0x6d, 0xa5, 0x1f, - 0xf0, 0x3, 0x4d, 0x3a, 0x7d, 0xe2, 0xf5, 0xb7, 0x97, 0xfe, - 0xf8, 0x34, 0x7f, 0xac, 0x55, 0xfa, 0xc2, 0x3f, 0x88, 0xff, - 00, 0xd6, 0x1c, 0x42, 0xde, 0x8f, 0xe6, 0x7e, 0x82, 0xc3, - 0xf1, 0xb, 0xc3, 0x17, 0xd, 0xb6, 0x3f, 0x10, 0x69, 0xac, - 0x7a, 0xe3, 0xed, 0x28, 0x3f, 0xad, 0x5a, 0x4f, 0x17, 0xe8, - 0x52, 0x2e, 0x53, 0x59, 0xb0, 0x61, 0xea, 0x2e, 0x50, 0xff, - 00, 0x5a, 0xfc, 0xee, 0x36, 0xb7, 0x23, 0xac, 0x2e, 0x3f, - 0xe0, 0x26, 0x9a, 0x61, 0x98, 0x7f, 0xcb, 0x36, 0xfc, 0xaa, - 0xd7, 0x12, 0x54, 0xeb, 0x4d, 0x7d, 0xe5, 0x2e, 0x23, 0xab, - 0xd6, 0x8f, 0xe3, 0xff, 00, 00, 0xfd, 0x1c, 0x1a, 0xee, - 0x9a, 0x71, 0x8d, 0x42, 0xd4, 0xe7, 0xfe, 0x9b, 0x2f, 0xf8, - 0xd3, 0x86, 0xb3, 0xa7, 0x9e, 0x97, 0xd6, 0xc7, 0xfe, 0xdb, - 0x2f, 0xf8, 0xd7, 0xe7, 0x6, 0xc9, 0x47, 0xf0, 0x37, 0xe5, - 0x47, 0xef, 0x57, 0xb3, 0xa, 0xd3, 0xfd, 0x64, 0x97, 0xfc, - 0xfa, 0x5f, 0x7f, 0xfc, 0x1, 0xff, 00, 0xac, 0x92, 0xff, - 00, 0x9f, 0x3f, 0x8f, 0xfc, 0x3, 0xf4, 0x84, 0x6a, 0xb6, - 0x47, 0xa5, 0xe4, 0x7, 0xe9, 0x2a, 0xff, 00, 0x8d, 0x38, - 0x6a, 0x16, 0xad, 0x8c, 0x5c, 0xc2, 0x73, 0xe9, 0x20, 0xaf, - 0xcd, 0xc1, 0x24, 0xc3, 0xa1, 0x61, 0xf9, 0xd3, 0x85, 0xcd, - 0xc2, 0xf4, 0x77, 0x18, 0xff, 00, 0x68, 0xd3, 0x5c, 0x48, - 0xff, 00, 0xe7, 0xd7, 0xe3, 0xff, 00, 00, 0x7f, 0xeb, - 0x2f, 0x7a, 0x5f, 0x8f, 0xfc, 0x3, 0xf4, 0x95, 0x67, 0x8d, - 0xce, 0x16, 0x44, 0x63, 0xe8, 0x18, 0x1a, 0x7e, 0x47, 0xad, - 0x7e, 0x6d, 0xae, 0xa7, 0x7a, 0x87, 0x2b, 0x73, 0x32, 0x9f, - 0x51, 0x21, 0x1f, 0xd6, 0xa4, 0x1a, 0xe6, 0xa2, 0xbd, 0x2f, - 0x6e, 0x47, 0xd2, 0x66, 0xff, 00, 0x1a, 0xa5, 0xc4, 0x9d, - 0xe9, 0x7e, 0x3f, 0xf0, 0xa, 0xff, 00, 0x59, 0x63, 0xff, - 00, 0x3e, 0xbf, 0x1f, 0xf8, 0x7, 0xe9, 0x6, 0x45, 0x19, - 0xaf, 0xce, 0x31, 0xe2, 0x4d, 0x58, 0xc, 0xd, 0x4a, 0xf0, - 0xf, 0x69, 0xdf, 0xfc, 0x69, 0xc3, 0xc5, 0x3a, 0xc8, 0x3c, - 0x6a, 0x97, 0xc0, 0xff, 00, 0xd7, 0xc3, 0xff, 00, 0x8d, - 0x5f, 0xfa, 0xc7, 0x1f, 0xf9, 0xf5, 0xf8, 0xff, 00, 0xc0, - 0x1f, 0xfa, 0xcb, 0x4f, 0xfe, 0x7d, 0x3f, 0xbf, 0xfe, 0x1, - 0xfa, 0x35, 0x9a, 0x5a, 0xfc, 0xe8, 0x5f, 0x18, 0xeb, 0xb1, - 0xe4, 0x2e, 0xb1, 0x7e, 0xb9, 0xeb, 0x8b, 0x97, 0xe7, 0xf5, - 0xa9, 0x53, 0xc7, 0x7e, 0x22, 0x89, 0x76, 0xae, 0xb9, 0xa9, - 0x28, 0xf4, 0x17, 0x6f, 0xfe, 0x34, 0x7f, 0xac, 0x71, 0xff, - 00, 0x9f, 0x5f, 0x8f, 0xfc, 0x2, 0x97, 0x12, 0xd2, 0xeb, - 0x4d, 0xfd, 0xe7, 0xe8, 0x95, 0x15, 0xf9, 0xe8, 0x9f, 0x12, - 0xbc, 0x55, 0x19, 0x5, 0x7c, 0x43, 0xaa, 0x2, 0x3a, 0x7f, - 0xa5, 0xbf, 0xf8, 0xd4, 0xf1, 0xfc, 0x57, 0xf1, 0x84, 0x59, - 0xdb, 0xe2, 0x5d, 0x50, 0x67, 0xfe, 0x9e, 0x9f, 0xfc, 0x6a, - 0xd7, 0x11, 0xd3, 0xeb, 0x4d, 0xfd, 0xe8, 0xb5, 0xc4, 0x94, - 0x3a, 0xc1, 0xfe, 0x7, 0xe8, 0x25, 0x15, 0xf0, 00, 0xf8, - 0xc3, 0xe3, 0x40, 0x38, 0xf1, 0x3e, 0xa9, 0xff, 00, 0x81, - 0xd, 0x4f, 0x1f, 0x19, 0xbc, 0x6c, 0xe, 0x7f, 0xe1, 0x26, - 0xd4, 0x7f, 0xef, 0xf1, 0xaa, 0xff, 00, 0x58, 0xa8, 0xff, - 00, 0xcf, 0xb7, 0xf8, 0xf, 0xfd, 0x64, 0xc3, 0xff, 00, - 0x23, 0xfc, 0xf, 0xbf, 0x28, 0xaf, 0x82, 0x57, 0xe3, 0x8f, - 0x8e, 0x54, 0xe4, 0x78, 0x92, 0xf8, 0xfd, 0x5c, 0x7f, 0x85, - 0x4a, 0x9f, 0x1e, 0x3c, 0x74, 0x99, 0xc7, 0x88, 0xae, 0xcf, - 0xd7, 0x7, 0xfa, 0x53, 0xff, 00, 0x58, 0xa8, 0x7f, 0xcf, - 0xb9, 0x7e, 0x1f, 0xe6, 0x5a, 0xe2, 0x3c, 0x2f, 0xf2, 0xbf, - 0xc3, 0xfc, 0xcf, 0xbc, 0x68, 0xaf, 0x86, 0x23, 0xfd, 0xa1, - 0xfc, 0x7b, 0x18, 0x51, 0xfd, 0xbd, 0x23, 0x6d, 0xfe, 0xf4, - 0x48, 0x73, 0xf5, 0xe2, 0xac, 0xc7, 0xfb, 0x4a, 0xf8, 0xf6, - 0x37, 0xdd, 0xfd, 0xae, 0x8d, 0xec, 0xd6, 0xd1, 0x91, 0xfc, - 0xaa, 0xd7, 0x10, 0xe1, 0xba, 0xc2, 0x5f, 0x87, 0xf9, 0x96, - 0xb8, 0x8b, 0x9, 0xd9, 0xfd, 0xcb, 0xfc, 0xcf, 0xb7, 0xa8, - 0xaf, 0x8a, 0x17, 0xf6, 0x9f, 0xf1, 0xe8, 0x1c, 0xea, 0x36, - 0xed, 0xf5, 0xb4, 0x4f, 0xf0, 0xa7, 0x8f, 0xda, 0x8b, 0xc7, - 0x7f, 0xf3, 0xfb, 0x69, 0xff, 00, 0x80, 0xab, 0x57, 0xfe, - 0xb0, 0x61, 0x7b, 0x4b, 0xee, 0x5f, 0xe6, 0x57, 0xfa, 0xc3, - 0x83, 0xf3, 0xfb, 0xbf, 0xe0, 0x9f, 0x6a, 0x51, 0x5f, 0x17, - 0xaf, 0xed, 0x4f, 0xe3, 0x90, 0x46, 0x6e, 0x2c, 0xdb, 0xd8, - 0xdb, 0xa, 0x9e, 0x2f, 0xda, 0xb7, 0xc6, 0xb1, 0xb1, 0x2c, - 0x74, 0xf9, 0x6, 0x3a, 0x35, 0xb9, 0xfe, 0x86, 0x9f, 0xfa, - 0xc1, 0x84, 0xed, 0x2f, 0xbb, 0xfe, 0x9, 0x4b, 0x88, 0x30, - 0x5d, 0xdf, 0xdc, 0x7d, 0x93, 0x45, 0x7c, 0x7e, 0xbf, 0xb5, - 0xbf, 0x8b, 0x82, 0x80, 0x6d, 0x34, 0xb6, 0x3e, 0xbe, 0x4b, - 0xff, 00, 0xf1, 0x55, 0x3a, 0x7e, 0xd7, 0x9e, 0x29, 0xc, - 0xb, 0x69, 0xba, 0x5b, 0xe, 0xe3, 0x63, 0x8f, 0xfd, 0x9a, - 0xad, 0x67, 0xd8, 0x3f, 0x3f, 0xb8, 0xb5, 0x9f, 0x60, 0x7f, - 0x99, 0xfd, 0xc7, 0xd7, 0x34, 0x57, 0xc9, 0xab, 0xfb, 0x60, - 0xf8, 0x88, 0x67, 0x76, 0x8d, 0xa6, 0x1f, 0xa1, 0x90, 0x7f, - 0xec, 0xd4, 0xf1, 0xfb, 0x61, 0xeb, 0xdd, 0xf4, 0x3d, 0x37, - 0xfe, 0xfa, 0x93, 0xfc, 0x6a, 0xbf, 0xb7, 0x70, 0x5f, 0xcc, - 0xfe, 0xe6, 0x57, 0xf6, 0xee, 0x7, 0xf9, 0x9f, 0xdc, 0xcf, - 0xab, 0xe8, 0xaf, 0x94, 0xd7, 0xf6, 0xc4, 0xd6, 0xf8, 0xce, - 0x85, 0xa7, 0x9f, 0xa4, 0x8f, 0xfe, 0x35, 0x22, 0xfe, 0xd8, - 0x9a, 0xb6, 0x79, 0xd0, 0x2c, 0x88, 0xf6, 0x99, 0xe9, 0xff, - 00, 0x6e, 0x60, 0xbf, 0x99, 0xfd, 0xcc, 0x7f, 0xdb, 0x98, - 0x1f, 0xe7, 0xfc, 0x19, 0xf5, 0x45, 0x15, 0xf2, 0xf4, 0x7f, - 0xb6, 0x35, 0xe8, 0x5f, 0x9f, 0xc3, 0x76, 0xe5, 0xbd, 0x56, - 0xe9, 0x80, 0xff, 00, 0xd0, 0x6a, 0x65, 0xfd, 0xb2, 0x26, - 0xe3, 0x3e, 0x18, 0x8f, 0xdf, 0x17, 0x87, 0xff, 00, 0x88, - 0xaa, 0x59, 0xde, 0x7, 0xf9, 0xff, 00, 0x7, 0xfe, 0x45, - 0x2c, 0xeb, 0x2, 0xff, 00, 0xe5, 0xe7, 0xe0, 0xff, 00, - 0xc8, 0xfa, 0x6e, 0x8a, 0xf9, 0xba, 0x3f, 0xdb, 0x22, 0xc, - 0xfc, 0xfe, 0x17, 0x90, 0xf, 0xf6, 0x6f, 0x47, 0xff, 00, - 0x11, 0x5b, 0xda, 0x47, 0xed, 0x6f, 0xe1, 0x6b, 0xb8, 0xd7, - 0xed, 0xf6, 0x37, 0xf6, 0x12, 0x13, 0x82, 0x15, 0x56, 0x55, - 0x3, 0xd7, 0x20, 0x83, 0xfa, 0x56, 0xb0, 0xcd, 0xf0, 0x33, - 0x76, 0x55, 0x3f, 0x35, 0xf9, 0xa3, 0x58, 0x66, 0xd8, 0x29, - 0xbb, 0x2a, 0x8b, 0xf1, 0x5f, 0x99, 0xee, 0x74, 0x57, 0x31, - 0xe1, 0xaf, 0x89, 0x9e, 0x17, 0xf1, 0x7b, 0x4, 0xd2, 0x75, - 0xbb, 0x4b, 0xb9, 0x8f, 0x3e, 0x4e, 0xfd, 0xb2, 0x7f, 0xdf, - 0x2d, 0x83, 0xfa, 0x57, 0x4f, 0x5e, 0xac, 0x2a, 0x42, 0xa2, - 0xe6, 0x83, 0xba, 0xf2, 0x3d, 0x48, 0x4e, 0x15, 0x17, 0x34, - 0x1d, 0xd7, 0x90, 0x51, 0x45, 0x15, 0x65, 0x85, 0x14, 0x51, - 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, - 0x14, 0x51, 0x40, 0x5, 0x70, 0x7f, 0x18, 0x7e, 0x28, 0xdb, - 0x7c, 0x2f, 0xf0, 0xc3, 0xdd, 0xfe, 0xee, 0x7d, 0x4e, 0x73, - 0xe5, 0xda, 0x5a, 0xbb, 0x63, 0x7b, 0x77, 0x62, 0x3a, 0xed, - 0x1d, 0x4f, 0xe0, 0x3b, 0xd7, 0x75, 0x24, 0x8b, 0x12, 0x33, - 0xbb, 0x5, 0x45, 0x4, 0x96, 0x3d, 00, 0xaf, 0x82, 0x7e, - 0x32, 0x7c, 0x40, 0x7f, 0x88, 0xde, 0x3a, 0xbd, 0xbf, 0x57, - 0x26, 0xc2, 0x13, 0xf6, 0x7b, 0x34, 0xcf, 0x2, 0x35, 0x3d, - 0x7f, 0xe0, 0x47, 0x27, 0xf1, 0xaf, 0x17, 0x35, 0xc6, 0xbc, - 0x1d, 0xf, 0x73, 0xe2, 0x96, 0x8b, 0xfc, 0xcf, 0xf, 0x37, - 0xc7, 0xfd, 0x46, 0x87, 0xb9, 0xf1, 0xcb, 0x45, 0xfe, 0x7f, - 0x23, 0xa3, 0xf8, 0x39, 0xa7, 0xea, 0x1f, 0x13, 0x7e, 0x2a, - 0xc5, 0xa9, 0x6a, 0x92, 0xbd, 0xe3, 0xac, 0x86, 0xe2, 0x79, - 0x24, 0x39, 0xfa, 0xf, 0x61, 0xe8, 0x2b, 0xed, 0x40, 0x2, - 0x80, 0x7, 00, 0x57, 0x83, 0xfe, 0xca, 0x7e, 0x10, 0xfe, - 0xcc, 0xf0, 0xd5, 0xce, 0xb1, 0x34, 0x78, 0x9a, 0xe9, 0xf6, - 0xa1, 0x23, 0xf8, 0x45, 0x7b, 0xcd, 0x63, 0x92, 0x50, 0x74, - 0xb0, 0xbe, 0xd2, 0x5b, 0xcd, 0xdf, 0xfc, 0x83, 0x27, 0xa0, - 0xe9, 0x61, 0x54, 0xa7, 0xf1, 0x4b, 0x56, 0x14, 0x51, 0x45, - 0x7d, 0x1, 0xee, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x84, - 0x64, 0x70, 0x71, 0xef, 0x40, 0x18, 0x1c, 0x92, 0x7e, 0xb4, - 00, 0xb4, 0x53, 0x2, 0xed, 0x39, 0xde, 0x48, 0xf4, 0x3d, - 0x29, 0xc0, 0x83, 0xd0, 0xe6, 0x80, 0x16, 0x8a, 0x28, 0xa0, - 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, - 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, - 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, - 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x93, 0x2, 0x96, - 0x8a, 00, 0x4c, 0xf, 0x4a, 0x4d, 0x8a, 0x7b, 0xf, 0xca, - 0x9d, 0x45, 00, 0x37, 0xca, 0x43, 0xfc, 0xb, 0xf9, 0x53, - 0x4c, 0x11, 0x1e, 0xb1, 0xa7, 0xfd, 0xf2, 0x2a, 0x4a, 0x29, - 0x58, 0x8, 0xbe, 0xcb, 0xf, 0xfc, 0xf1, 0x8f, 0xfe, 0xf9, - 0x14, 0xd3, 0x65, 0x6e, 0x7a, 0xc1, 0x17, 0xfd, 0xf0, 0x2a, - 0x7a, 0x28, 0xb2, 0x15, 0x91, 0x59, 0xb4, 0xeb, 0x46, 0xeb, - 0x6b, 0x9, 0xfa, 0xc6, 0x29, 0x87, 0x47, 0xb1, 0x6e, 0xb6, - 0x70, 0x1f, 0xac, 0x63, 0xfc, 0x2a, 0xe5, 0x14, 0xb9, 0x63, - 0xd8, 0x2c, 0xbb, 0x19, 0xe7, 0x40, 0xd3, 0x1b, 0xad, 0x85, - 0xb1, 0xff, 00, 0xb6, 0x4b, 0xfe, 0x14, 0xc6, 0xf0, 0xce, - 0x92, 0xdd, 0x74, 0xdb, 0x53, 0xff, 00, 0x6c, 0x85, 0x69, - 0xd1, 0x4b, 0xd9, 0xc3, 0xb2, 0x17, 0x2c, 0x7b, 0x19, 0x7, - 0xc2, 0x3a, 0x2b, 0x75, 0xd2, 0xed, 0x4f, 0xfd, 0xb2, 0x15, - 0x1b, 0x78, 0x2b, 0x41, 0x73, 0x93, 0xa4, 0x59, 0x93, 0xef, - 0xa, 0xd6, 0xdd, 0x15, 0x3e, 0xca, 0x9b, 0xfb, 0x2b, 0xee, - 0x17, 0x24, 0x3b, 0x1c, 0xf3, 0x7c, 0x3f, 0xf0, 0xe3, 0x75, - 0xd1, 0xed, 0x3f, 0xef, 0xd0, 0xa8, 0x9b, 0xe1, 0xaf, 0x86, - 0x1f, 0xae, 0x8b, 0x69, 0xff, 00, 0x7e, 0xc5, 0x74, 0xd4, - 0x54, 0xfd, 0x5e, 0x8b, 0xfb, 0xb, 0xee, 0x44, 0xfb, 0x2a, - 0x6f, 0xec, 0xaf, 0xb8, 0xe4, 0xdf, 0xe1, 0x5f, 0x85, 0x5f, - 0x39, 0xd1, 0x6d, 0xb9, 0xff, 00, 0x60, 0x54, 0x2d, 0xf0, - 0x87, 0xc2, 0x4f, 0xd7, 0x45, 0xb7, 0xff, 00, 0xbe, 0x6b, - 0xb2, 0xa2, 0xa3, 0xea, 0xb4, 0x1f, 0xd8, 0x5f, 0x72, 0x17, - 0xb0, 0xa5, 0xfc, 0xab, 0xee, 0x38, 0x76, 0xf8, 0x2f, 0xe0, - 0xf7, 0xeb, 0xa3, 0x41, 0xf9, 0x54, 0x2f, 0xf0, 0x2f, 0xc1, - 0x8f, 0xff, 00, 0x30, 0x78, 0xc7, 0xd2, 0xbb, 0xea, 0x2a, - 0x5e, 0xb, 0xc, 0xf7, 0xa6, 0xbe, 0xe4, 0x4f, 0xd5, 0xa8, - 0xbf, 0xb0, 0xbe, 0xe3, 0xce, 0x9f, 0xe0, 0x17, 0x83, 0x1f, - 0xfe, 0x61, 0x6a, 0x3e, 0x86, 0xa0, 0x7f, 0xd9, 0xe3, 0xc1, - 0x8f, 0xff, 00, 0x2e, 0x4, 0x7d, 0xd, 0x7a, 0x65, 0x15, - 0xf, 0x1, 0x84, 0x7f, 0xf2, 0xe9, 0x7d, 0xc8, 0x9f, 0xaa, - 0x50, 0x7f, 0x61, 0x7d, 0xc7, 0x96, 0xbf, 0xec, 0xe1, 0xe0, - 0xd7, 0xff, 00, 0x97, 0x37, 0x1f, 0xf0, 0x2a, 0x81, 0xff, - 00, 0x66, 0x7f, 0x7, 0x37, 0xfc, 0xb0, 0x94, 0x7d, 0x1a, - 0xbd, 0x66, 0x8a, 0x9f, 0xec, 0xdc, 0x1b, 0xff, 00, 0x97, - 0x4b, 0xee, 0x23, 0xea, 0x58, 0x67, 0xff, 00, 0x2e, 0xd7, - 0xdc, 0x79, 0x3, 0xfe, 0xcb, 0xfe, 0xf, 0x7f, 0xe0, 0xb8, - 0x5f, 0xa3, 0xd4, 0xd, 0xfb, 0x2c, 0x78, 0x4c, 0xf4, 0x7b, - 0x81, 0xf8, 0x8a, 0xf6, 0x6a, 0x2a, 0x1e, 0x57, 0x82, 0x7f, - 0xf2, 0xe9, 0x12, 0xf0, 0x18, 0x57, 0xff, 00, 0x2e, 0xd7, - 0xdc, 0x78, 0x9b, 0xfe, 0xca, 0x7e, 0x16, 0x6e, 0x97, 0x17, - 0x23, 0xf1, 0x15, 0xb, 0xfe, 0xc9, 0xbe, 0x1b, 0x6f, 0xbb, - 0x79, 0x72, 0x3f, 0x2a, 0xf7, 0x2a, 0x2a, 0x7f, 0xb2, 0x70, - 0x3f, 0xf3, 0xe9, 0x12, 0xf2, 0xec, 0x23, 0xff, 00, 0x97, - 0x68, 0xf0, 0x76, 0xfd, 0x92, 0x74, 0x3, 0xd3, 0x50, 0xb9, - 0x1f, 0x80, 0xa8, 0x5b, 0xf6, 0x45, 0xd1, 0xf, 0x4d, 0x52, - 0xe0, 0x7f, 0xc0, 0x45, 0x7b, 0xf5, 0x15, 0x3f, 0xd9, 0x18, - 0x1f, 0xf9, 0xf7, 0xf9, 0x90, 0xf2, 0xbc, 0x1b, 0xff, 00, - 0x97, 0x68, 0xf9, 0xe9, 0xff, 00, 0x64, 0x2d, 0x2c, 0xfd, - 0xdd, 0x62, 0x7f, 0xc5, 0x5, 0x40, 0xff, 00, 0xb2, 0x5, - 0x97, 0xf0, 0xeb, 0x12, 0x7e, 0x28, 0x2b, 0xe8, 0xca, 0x2a, - 0x3f, 0xb1, 0xb0, 0x3f, 0xf3, 0xef, 0xf1, 0x7f, 0xe6, 0x4b, - 0xca, 0x70, 0x4f, 0xfe, 0x5d, 0xa3, 0xe6, 0xd6, 0xfd, 0x90, - 0x21, 0xfe, 0x1d, 0x65, 0xbf, 0x14, 0xa8, 0x5f, 0xf6, 0x40, - 0x3f, 0xc3, 0xac, 0x7e, 0x69, 0x5f, 0x4c, 0x51, 0x53, 0xfd, - 0x89, 0x81, 0xfe, 0x4f, 0xc5, 0x91, 0xfd, 0x91, 0x82, 0xff, - 00, 0x9f, 0x67, 0xcc, 0xf, 0xfb, 0x20, 0x4f, 0xfc, 0x3a, - 0xba, 0xfe, 0x2b, 0x50, 0xbf, 0xec, 0x83, 0x7e, 0x3e, 0xee, - 0xaf, 0x11, 0xfa, 0xad, 0x7d, 0x4b, 0x45, 0x4f, 0xf6, 0x1e, - 0x7, 0xf9, 0x5f, 0xde, 0xc9, 0x79, 0x36, 0x5, 0xfd, 0x83, - 0xe5, 0x37, 0xfd, 0x91, 0x35, 0x51, 0xd3, 0x53, 0x84, 0xfe, - 0x15, 0x3, 0xfe, 0xc9, 0x1a, 0xd8, 0xe9, 0x7d, 0xb, 0x57, - 0xd6, 0x74, 0x54, 0xbc, 0x87, 0x5, 0xd9, 0xfd, 0xec, 0x87, - 0x92, 0x60, 0x7f, 0x93, 0xf1, 0x3e, 0x46, 0x7f, 0xd9, 0x33, - 0xc4, 0x23, 0xa5, 0xd4, 0x7, 0xf1, 0xa8, 0x1f, 0xf6, 0x51, - 0xf1, 0x28, 0xfb, 0xb2, 0xc2, 0x7f, 0x1a, 0xfb, 0x2, 0x8a, - 0x8f, 0xec, 0xc, 0x1f, 0x9f, 0xde, 0x4f, 0xf6, 0x16, 0xb, - 0xf9, 0x7f, 0x13, 0xe3, 0x87, 0xfd, 0x95, 0x7c, 0x54, 0x3e, - 0xe9, 0x85, 0xbf, 0xe0, 0x42, 0xa1, 0x7f, 0xd9, 0x6f, 0xc5, - 0xeb, 0xd2, 0x38, 0x8f, 0xd1, 0xc5, 0x7d, 0x9b, 0x45, 0x4f, - 0xfa, 0xbf, 0x84, 0xee, 0xfe, 0xff, 00, 0xf8, 0x4, 0xff, - 00, 0x60, 0xe0, 0xbb, 0x3f, 0xbc, 0xf8, 0xad, 0xff, 00, - 0x66, 0x3f, 0x18, 0xaf, 0x4b, 0x64, 0x3f, 0xf0, 0x31, 0x50, - 0xbf, 0xec, 0xd7, 0xe3, 0x35, 0xff, 00, 0x97, 0x20, 0x7f, - 0xe0, 0x42, 0xbe, 0xda, 0xa2, 0xa7, 0xfd, 0x5e, 0xc3, 0x7f, - 0x34, 0xbf, 0xf, 0xf2, 0x23, 0xfd, 0x5f, 0xc1, 0xf9, 0xfd, - 0xe7, 0xc3, 0xcd, 0xfb, 0x39, 0xf8, 0xd1, 0x7f, 0xe6, 0x1a, - 0x4f, 0xfc, 0x8, 0x54, 0x2f, 0xfb, 0x3d, 0xf8, 0xd1, 0x7f, - 0xe6, 0x14, 0xe7, 0xf1, 0x15, 0xf7, 0x3d, 0x15, 0x3f, 0xea, - 0xee, 0x1f, 0xf9, 0xe5, 0xf8, 0x7f, 0x91, 0x3f, 0xea, 0xf6, - 0x13, 0xcf, 0xef, 0x3e, 0x12, 0x3f, 0x1, 0xbc, 0x6d, 0xb, - 0x6, 0x5d, 0x22, 0x60, 0xc3, 0xa3, 0x29, 0xc1, 0x15, 0xde, - 0x78, 0x43, 0xc6, 0xbf, 0x14, 0xfe, 0x15, 0x6c, 0x5d, 0x57, - 0x4c, 0xbc, 0xd7, 0x34, 0x55, 0xfb, 0xf0, 0x5d, 0x12, 0xd2, - 0xa2, 0xff, 00, 0xb1, 0x27, 0x5f, 0xc0, 0xe4, 0x7d, 0x2b, - 0xeb, 0x1a, 0x82, 0xf2, 0xde, 0x2b, 0x9b, 0x69, 0x12, 0x64, - 0x59, 0x10, 0xa9, 0xc8, 0x61, 0x5a, 0xd2, 0xc9, 0x56, 0x19, - 0xf3, 0xd0, 0xab, 0x24, 0xfe, 0x45, 0x53, 0xc8, 0xe9, 0xd0, - 0x7c, 0xf8, 0x7a, 0x92, 0x8b, 0xfe, 0xb7, 0xee, 0x73, 0xbe, - 00, 0xf8, 0x91, 0xa2, 0x7c, 0x48, 0xd2, 0x8d, 0xe6, 0x91, - 0x73, 0xba, 0x58, 0xf0, 0x2e, 0x2d, 0x24, 0xf9, 0x66, 0xb7, - 0x63, 0xfc, 0x2e, 0xbd, 0xbe, 0xbd, 0xd, 0x75, 0x35, 0xf1, - 0x7, 0xc4, 0x6d, 0x72, 0xff, 00, 0xe1, 0x4f, 0xc4, 0x43, - 0xae, 0x78, 0x66, 0x63, 0x69, 0x74, 0x24, 0xfd, 0xfc, 0x20, - 0xfe, 0xee, 0xe1, 0x1, 0xc9, 0x8d, 0xc7, 0x70, 0x7f, 0x31, - 0xda, 0xbe, 0xae, 0xf8, 0x4f, 0xf1, 0x3b, 0x4d, 0xf8, 0xb7, - 0xe0, 0xcb, 0x5d, 0x7f, 0x4d, 0x47, 0x80, 0x3b, 0x34, 0x53, - 0xda, 0xca, 0x46, 0xf8, 0x25, 0x5e, 0x19, 0xf, 0xaf, 0xa8, - 0x3d, 0xc1, 0x6, 0xbd, 0xc, 0xe, 0x35, 0x62, 0x79, 0xa9, - 0xcb, 0xe2, 0x8e, 0x8c, 0xe8, 0xc0, 0x66, 0x4a, 0xbd, 0x59, - 0x61, 0x6a, 0xe9, 0x52, 0x3f, 0x73, 0x5d, 0xd7, 0xea, 0x8e, - 0xc6, 0x8a, 0x28, 0xaf, 0x54, 0xf7, 0x42, 0x8a, 0x28, 0xa0, - 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0xf, 0x37, - 0xfd, 0xa0, 0x7c, 0x6a, 0x3c, 0x17, 0xf0, 0xd7, 0x51, 0x74, - 0x72, 0x97, 0x97, 0xe3, 0xec, 0x56, 0xfb, 0x4e, 0x8, 0x67, - 0x7, 0x24, 0x7d, 0x17, 0x26, 0xbe, 0x25, 0xd0, 0xb4, 0xb9, - 0x35, 0x8d, 0x56, 0xd2, 0xca, 0x15, 0xdc, 0xf3, 0x48, 0x10, - 0x1, 0x5e, 0xd3, 0xfb, 0x5a, 0xf8, 0xcb, 0xfb, 0x5b, 0xc6, - 0x16, 0x7e, 0x1f, 0x85, 0xf3, 0x6, 0x97, 0x1f, 0x99, 0x28, - 0x7, 0x83, 0x33, 0x8c, 0xfe, 0x8b, 0x8f, 0xfb, 0xe8, 0xd6, - 0x77, 0xec, 0xc3, 0xe1, 0x1, 0xaf, 0x78, 0xd8, 0x5f, 0x4d, - 0x1e, 0xeb, 0x7b, 0x25, 0x2f, 0x93, 0xd3, 0x77, 0x6a, 0xfc, - 0xf7, 0x33, 0x93, 0xc7, 0x63, 0xd6, 0x1e, 0x3b, 0x2d, 0x3f, - 0xcc, 0xfc, 0xef, 0x1e, 0xde, 0x63, 0x9a, 0x2a, 0x11, 0xda, - 0x3a, 0x7f, 0x9f, 0xf5, 0xe4, 0x7d, 0x67, 0xe1, 0x3d, 0x12, - 0x3f, 0xe, 0xf8, 0x72, 0xc3, 0x4f, 0x8d, 0x42, 0x88, 0x22, - 0x55, 0x38, 0xf5, 0xc7, 0x35, 0xaf, 0x45, 0x15, 0xfa, 0x4, - 0x62, 0xa1, 0x15, 0x18, 0xec, 0x8f, 0xd0, 0xa2, 0x94, 0x52, - 0x48, 0x28, 0xa2, 0x8a, 0xa2, 0x82, 0x8a, 0x2b, 0xcd, 0xbf, - 0x68, 0xaf, 0x8d, 0xda, 0x47, 0xec, 0xf1, 0xf0, 0x83, 0xc4, - 0x1e, 0x39, 0xd6, 0xe, 0xe8, 0xf4, 0xf8, 0x71, 0x6d, 0x6e, - 0x3e, 0xf5, 0xc5, 0xc3, 0x7c, 0xb1, 0x44, 0x3e, 0xac, 0x46, - 0x7d, 0x6, 0x4f, 0x6a, 00, 0xe7, 0x3f, 0x69, 0x9f, 0xda, - 0xf3, 0xe1, 0xf7, 0xec, 0xaf, 0xa0, 0x47, 0x79, 0xe2, 0xcb, - 0xe7, 0x9f, 0x55, 0xba, 0x52, 0xd6, 0x3a, 0x25, 0x88, 0xf, - 0x77, 0x73, 0x8e, 0xe0, 0x67, 0xa, 0x99, 0xfe, 0x36, 0x20, - 0x7d, 0x4f, 0x15, 0xf9, 0x5d, 0xf1, 0x87, 0xfe, 0xa, 0xd5, - 0xf1, 0x9b, 0xe2, 0x5, 0xc5, 0xdd, 0xbf, 0x85, 0xe5, 0xb1, - 0xf0, 0x1e, 0x90, 0xec, 0x44, 0x4b, 0xa7, 0xc2, 0x26, 0xbb, - 0x9, 0x9e, 0x37, 0x4d, 0x26, 0x46, 0x71, 0xfd, 0xd5, 0x5a, - 0xf9, 0xb3, 0x5d, 0xd7, 0xfc, 0x7d, 0xfb, 0x57, 0x7c, 0x67, - 0x4b, 0x8b, 0xc9, 0x2e, 0x3c, 0x4b, 0xe3, 0x3f, 0x11, 0xdd, - 0xac, 0x10, 0x44, 0xf, 00, 0x93, 0xf2, 0xc6, 0x83, 0xa2, - 0x46, 0xa3, 0x3c, 0x74, 00, 0x13, 0xea, 0x6b, 0xf4, 0x67, - 0xc1, 0x1f, 0xf0, 0x48, 0xaf, 0x87, 0xff, 00, 0xf, 0x7e, - 0x1c, 0xdf, 0x78, 0x9b, 0xe2, 0xf7, 0x8b, 0x75, 0x1b, 0xeb, - 0x9d, 0x3e, 0xca, 0x4b, 0xeb, 0xe8, 0x74, 0x69, 0x56, 0xda, - 0xd6, 0xd9, 0x11, 0xb, 0xb0, 0xe, 0xca, 0x59, 0xf0, 0x1, - 0xe7, 0xe5, 0xcf, 0xa5, 0x32, 0x6e, 0xde, 0xc7, 0xe7, 0x17, - 0x88, 0x7f, 0x68, 0xbf, 0x8a, 0x7e, 0x2b, 0xb9, 0x92, 0x7d, - 0x5b, 0xe2, 0x37, 0x8a, 0x2f, 0x64, 0x90, 0xe5, 0x83, 0xea, - 0xf3, 0x85, 0x27, 0xfd, 0xd0, 0xc0, 0xf, 0xca, 0xbf, 0x5a, - 0xbf, 0xe0, 0x92, 0x3e, 0xb, 0xd6, 0xed, 0xfe, 0x3, 0xea, - 0x3e, 0x39, 0xf1, 0x6, 0xad, 0xa9, 0x6a, 0xb7, 0x9e, 0x23, - 0xbe, 0x74, 0xb3, 0x17, 0xf7, 0x52, 0x4c, 0x22, 0xb6, 0x80, - 0x94, 0x1b, 0x43, 0x13, 0x8d, 0xd2, 0x79, 0x84, 0x91, 0xd4, - 0x5, 0xaf, 0xc7, 0x4d, 0x1b, 0xc3, 0x7f, 0xf0, 0x9e, 0xfc, - 0x44, 0xb2, 0xd0, 0x7c, 0x39, 0x6f, 0x24, 0x4b, 0xac, 0x6a, - 0x89, 0x67, 0xa7, 0xc1, 0x2b, 0x6f, 0x64, 0x12, 0xca, 0x16, - 0x30, 0xcd, 0x8e, 0x70, 0x18, 0x64, 0xfb, 0x13, 0x5f, 0xd1, - 0xcf, 0x86, 0xb4, 0x4d, 0x3, 0xf6, 0x7b, 0xf8, 0x2d, 0x65, - 0xa6, 0xc6, 0x52, 0xcf, 0xc3, 0xfe, 0x13, 0xd1, 0xc0, 0x67, - 0x3c, 0x1, 0x1c, 0x31, 0xe5, 0xdc, 0xfb, 0x9c, 0x12, 0x7d, - 0xcd, 0xc, 0x48, 0xf8, 0xf, 0xc4, 0x7f, 0xf0, 0x59, 0xa9, - 0xfc, 0x25, 0xe2, 0xcd, 0x6b, 0x42, 0xd4, 0x3e, 0x14, 0xab, - 0xcd, 0xa6, 0x5e, 0xcf, 0x65, 0x24, 0x90, 0x6b, 0x7c, 0x33, - 0x47, 0x23, 0x21, 0x20, 0x18, 0x7d, 0x56, 0xbe, 0xec, 0xfd, - 0x9c, 0x3e, 0x34, 0x47, 0xfb, 0x42, 0x7c, 0x1b, 0xf0, 0xff, - 00, 0x8f, 0x62, 0xd2, 0xdf, 0x46, 0x4d, 0x59, 0x24, 0x61, - 0x64, 0xf2, 0xf9, 0xa6, 0x3d, 0xb2, 0x32, 0x7d, 0xec, 0xc, - 0xe7, 0x6e, 0x7a, 0x77, 0xaf, 0xe7, 0x2f, 0xc6, 0x7a, 0xf9, - 0xf1, 0x5f, 0x8b, 0xf5, 0xdd, 0x6d, 0x86, 0xd6, 0xd4, 0xaf, - 0xe7, 0xbd, 0x23, 0xd0, 0xc9, 0x23, 0x3f, 0xfe, 0xcd, 0x5f, - 0xd1, 0x27, 0xec, 0x91, 0xf0, 0xfe, 0x4f, 0x85, 0xff, 00, - 0xb3, 0x57, 0xc3, 0x9f, 0xd, 0xce, 0x9e, 0x5d, 0xdd, 0xae, - 0x8d, 0x3, 0xdc, 0xaf, 0xa4, 0xd2, 0x2f, 0x99, 0x27, 0xfe, - 0x3c, 0xe6, 0x81, 0xa7, 0x73, 0xd6, 0xc9, 0xc0, 0xc9, 0xe0, - 0x57, 0xce, 0xda, 0xff, 00, 0xed, 0xf, 0xae, 0x43, 0xae, - 0x5f, 0x47, 0xa6, 0xc7, 0x64, 0xda, 0x7a, 0x4a, 0xcb, 0x9, - 0x96, 0x26, 0x2c, 0x54, 0x1c, 0x64, 0x9d, 0xc3, 0xaf, 0x5f, - 0xc6, 0xbd, 0x7b, 0xe2, 0x97, 0x89, 0x47, 0x85, 0xbc, 0x11, - 0xa9, 0x5d, 0xab, 0x6d, 0x9d, 0xd3, 0xc8, 0x87, 0xfd, 0xf7, - 0xe0, 0x7e, 0x5c, 0x9f, 0xc2, 0xbe, 0x40, 0xaf, 0x86, 0xe2, - 0x2c, 0xca, 0xae, 0x1a, 0x70, 0xa3, 0x42, 0x5c, 0xaf, 0x77, - 0x6f, 0xc3, 0xf5, 0x3c, 0x9c, 0x75, 0x79, 0x53, 0x6a, 0x10, - 0x76, 0x3d, 0x5d, 0x3f, 0x69, 0xf, 0x12, 0xaf, 0xde, 0xb3, - 0xd3, 0x9b, 0xfe, 0xd9, 0xb8, 0xff, 00, 0xd9, 0xaa, 0x74, - 0xfd, 0xa5, 0x75, 0xe1, 0xf7, 0xb4, 0xdd, 0x3d, 0xbe, 0x81, - 0xc7, 0xfe, 0xcd, 0x5e, 0x43, 0x45, 0x7c, 0x82, 0xce, 0x73, - 0x5, 0xff, 00, 0x2f, 0x5f, 0xe0, 0x79, 0x9f, 0x5a, 0xad, - 0xfc, 0xc7, 0xb3, 0x47, 0xfb, 0x4c, 0xea, 0x83, 0xef, 0xe8, - 0xb6, 0x8d, 0xfe, 0xec, 0xac, 0x3f, 0xc6, 0xa7, 0x4f, 0xda, - 0x72, 0xef, 0xf8, 0xbc, 0x3f, 0x9, 0xfa, 0x5d, 0x11, 0xff, - 00, 0xb2, 0xd7, 0x89, 0x51, 0x5a, 0x2c, 0xf3, 0x31, 0x5f, - 0xf2, 0xf7, 0xf0, 0x5f, 0xe4, 0x57, 0xd7, 0x2b, 0xff, 00, - 0x31, 0xee, 0xd1, 0x7e, 0xd3, 0x83, 0xfe, 0x5a, 0x78, 0x7f, - 0x1f, 0xee, 0xdd, 0x7f, 0xf6, 0x35, 0x66, 0x3f, 0xda, 0x6e, - 0xc8, 0xfd, 0xfd, 0xa, 0x71, 0xfe, 0xec, 0xea, 0x7f, 0xa5, - 0x78, 0x5, 0x15, 0xaa, 0xe2, 0xc, 0xc5, 0x7f, 0xcb, 0xcf, - 0xc1, 0x7f, 0x91, 0x5f, 0x5d, 0xaf, 0xfc, 0xdf, 0x91, 0xf4, - 0x3c, 0x7f, 0xb4, 0xc6, 0x90, 0x7e, 0xfe, 0x91, 0x7a, 0xbf, - 0xee, 0xb2, 0x1f, 0xeb, 0x5a, 0x56, 0x7f, 0xb4, 0x5f, 0x85, - 0xee, 0x8, 0x13, 0x45, 0x7f, 0x6b, 0xee, 0xf0, 0x86, 0x1f, - 0xf8, 0xeb, 0x1a, 0xf9, 0x9a, 0x8a, 0xd6, 0x3c, 0x47, 0x8f, - 0x8e, 0xed, 0x3f, 0x97, 0xf9, 0x14, 0xb1, 0xf5, 0x97, 0x53, - 0xec, 0x4d, 0x7, 0xe2, 0x67, 0x86, 0x7c, 0x48, 0xeb, 0x1d, - 0x8e, 0xaf, 0x3, 0x4c, 0xdd, 0x22, 0x97, 0x31, 0xb9, 0xfa, - 0x6, 0xc6, 0x7f, 0xa, 0xe9, 0xeb, 0xe1, 0x4a, 0xed, 0x7c, - 0x17, 0xf1, 0x6b, 0x5f, 0xf0, 0x6c, 0xa8, 0x89, 0x72, 0xd7, - 0xd6, 00, 0xfc, 0xd6, 0x97, 0x2c, 0x59, 0x71, 0xfe, 0xc9, - 0xea, 0xbf, 0x87, 0x1e, 0xd5, 0xed, 0xe1, 0x38, 0xa1, 0x36, - 0xa3, 0x8a, 0x85, 0xbc, 0xd7, 0xf9, 0x7f, 0xc1, 0x3a, 0xe9, - 0x66, 0x37, 0x76, 0xa8, 0xbe, 0xe3, 0xeb, 0x6a, 0x2b, 0x13, - 0xc2, 0x1e, 0x2f, 0xd3, 0xfc, 0x6b, 0xa3, 0xa6, 0xa1, 0xa7, - 0xc8, 0x4a, 0x13, 0xb6, 0x48, 0xdb, 0x86, 0x8d, 0xfb, 0xa9, - 0x15, 0xb7, 0x5f, 0x75, 0x4e, 0xa4, 0x6a, 0xc5, 0x4e, 0xe, - 0xe9, 0x9e, 0xc4, 0x64, 0xa4, 0xae, 0xb6, 0xa, 0xc0, 0xf1, - 0x17, 0x8e, 0xb4, 0x2f, 0x9, 0xdc, 0x43, 0x6, 0xab, 0xa8, - 0x25, 0xa4, 0xb3, 0x29, 0x74, 0x56, 0x56, 0x39, 00, 0xe3, - 0x3c, 0x3, 0x5b, 0xf5, 0xf2, 0x87, 0xc6, 0xed, 0x74, 0x6b, - 0x9f, 0x10, 0xaf, 0xc2, 0x36, 0xe8, 0xac, 0xc2, 0xda, 0xa7, - 0xfc, 0x7, 0xef, 0x7f, 0xe3, 0xc5, 0xab, 0xc8, 0xcd, 0xf3, - 0x7, 0x97, 0x61, 0xd5, 0x48, 0x24, 0xe4, 0xdd, 0x95, 0xce, - 0x5c, 0x55, 0x77, 0x42, 0x1c, 0xcb, 0x73, 0xe8, 0x4, 0xf8, - 0xb9, 0xe0, 0xf7, 0xe9, 0xaf, 0x5b, 0xf, 0xf7, 0xb7, 0xf, - 0xe6, 0x2a, 0x74, 0xf8, 0xa1, 0xe1, 0x37, 0xe9, 0xe2, 0xb, - 0x1f, 0xc6, 0x50, 0x2b, 0xe3, 0xca, 0x2b, 0xe3, 0x97, 0x14, - 0xe2, 0x7a, 0xd3, 0x8f, 0xe3, 0xfe, 0x67, 0x97, 0xfd, 0xa3, - 0x53, 0xb2, 0x3e, 0xca, 0x8f, 0xe2, 0x17, 0x86, 0x25, 0xfb, - 0xba, 0xfe, 0x9c, 0x7f, 0xed, 0xe5, 0x3f, 0xc6, 0xad, 0x47, - 0xe3, 0xd, 0xa, 0x6f, 0xb9, 0xac, 0xd8, 0x37, 0xd2, 0xe5, - 0x3f, 0xc6, 0xbe, 0x2b, 0xa2, 0xb5, 0x5c, 0x55, 0x5b, 0xad, - 0x25, 0xf7, 0xb2, 0xbf, 0xb4, 0x67, 0xd6, 0x27, 0xdb, 0x89, - 0xaf, 0x69, 0x92, 0x7d, 0xdd, 0x46, 0xd1, 0xbe, 0x93, 0xaf, - 0xf8, 0xd4, 0xc9, 0xa9, 0x5a, 0x49, 0xf7, 0x2e, 0xa0, 0x6f, - 0xa4, 0x80, 0xff, 00, 0x5a, 0xf8, 0x76, 0x8c, 0x91, 0x5a, - 0x2e, 0x2b, 0x97, 0x5a, 0x3f, 0x8f, 0xfc, 0x2, 0xbf, 0xb4, - 0x9f, 0xf2, 0xfe, 0x27, 0xdd, 0xb, 0x2a, 0x37, 0xdd, 0x75, - 0x3f, 0x43, 0x4e, 0xdc, 0x3d, 0x45, 0x7c, 0x30, 0x25, 0x75, - 0xe8, 0xec, 0x3e, 0x86, 0xa4, 0x4b, 0xeb, 0x98, 0xfe, 0xed, - 0xc4, 0xab, 0xf4, 0x72, 0x2b, 0x45, 0xc5, 0x6b, 0xad, 0x1f, - 0xfc, 0x9b, 0xfe, 0x1, 0x5f, 0xda, 0x5f, 0xdc, 0xfc, 0x7f, - 0xe0, 0x1f, 0x72, 0x51, 0x5f, 0x10, 0xa6, 0xb9, 0xa9, 0x47, - 0xf7, 0x75, 0xb, 0xa5, 0xfa, 0x4c, 0xdf, 0xe3, 0x52, 0xaf, - 0x89, 0xb5, 0x84, 0xfb, 0xba, 0xad, 0xf2, 0xfd, 0x2e, 0x5c, - 0x7f, 0x5a, 0xd1, 0x71, 0x5d, 0x3e, 0xb4, 0x5f, 0xdf, 0xff, - 00, 00, 0x7f, 0xda, 0x4b, 0xf9, 0x7f, 0x13, 0xed, 0x9a, - 0x2b, 0xe2, 0xc4, 0xf1, 0x96, 0xbf, 0x1f, 0xdd, 0xd7, 0x35, - 0x25, 0xfa, 0x5d, 0xc9, 0xfe, 0x35, 0xda, 0x7c, 0x25, 0xf1, - 0x7, 0x88, 0x75, 0xff, 00, 0x1e, 0xe9, 0x76, 0x93, 0x6b, - 0x3a, 0x84, 0xf6, 0xc1, 0xda, 0x59, 0x52, 0x4b, 0x97, 0x65, - 0x2a, 0xaa, 0x4e, 0x8, 0x27, 0xa6, 0x70, 0x3f, 0x1a, 0xe9, - 0xa1, 0xc4, 0xb4, 0xab, 0xd5, 0x8d, 0x25, 0x49, 0xde, 0x4d, - 0x2d, 0xd7, 0x53, 0x48, 0x63, 0xe3, 0x39, 0x28, 0xa8, 0xee, - 0x7d, 0x3f, 0x45, 0x14, 0x57, 0xd9, 0x1e, 0xa8, 0x51, 0x45, - 0x14, 00, 0x51, 0x5c, 0xf7, 0x88, 0xfc, 0x7f, 0xa0, 0x78, - 0x4f, 0x8d, 0x4f, 0x52, 0x86, 0x9, 0x7f, 0xe7, 0x8a, 0xe5, - 0xe4, 0xff, 00, 0xbe, 0x57, 0x26, 0xbc, 0xef, 0x5b, 0xfd, - 0xa5, 0x74, 0xcb, 0x70, 0xcb, 0xa5, 0xe9, 0x97, 0x17, 0x6f, - 0xd9, 0xee, 0x18, 0x44, 0xbf, 0x90, 0xc9, 0xfe, 0x55, 0xe6, - 0xe2, 0x33, 0x2c, 0x26, 0x17, 0x4a, 0xb5, 0x12, 0x7d, 0xb7, - 0x7f, 0x72, 0x39, 0xe7, 0x5e, 0x95, 0x3f, 0x8a, 0x47, 0xb2, - 0xd1, 0x5f, 0x34, 0x5f, 0x7e, 0xd1, 0x9e, 0x26, 0xb8, 0x63, - 0xf6, 0x78, 0x2c, 0x2d, 0x13, 0xb6, 0x22, 0x67, 0x23, 0xf1, - 0x2d, 0x8f, 0xd2, 0xb1, 0xae, 0x3e, 0x37, 0xf8, 0xce, 0x72, - 0x7f, 0xe2, 0x6d, 0xe5, 0x3, 0xda, 0x38, 0x23, 0x18, 0xff, - 00, 0xc7, 0x6b, 0xc5, 0x9f, 0x13, 0x60, 0x63, 0xf0, 0xa9, - 0x3f, 0x97, 0xf9, 0xb4, 0x72, 0x3c, 0xc2, 0x8a, 0xda, 0xec, - 0xfa, 0xbc, 0x8c, 0xd2, 0x79, 0x63, 0xdf, 0xf3, 0x35, 0xf2, - 0x2b, 0x7c, 0x5d, 0xf1, 0x83, 0x1c, 0x9d, 0x76, 0xe4, 0x7d, - 0x2, 0x8f, 0xe9, 0x52, 0x45, 0xf1, 0x8b, 0xc6, 0x31, 0x1c, - 0x8d, 0x72, 0x63, 0xfe, 0xf4, 0x68, 0xdf, 0xcd, 0x6b, 0xf, - 0xf5, 0xa3, 0x9, 0xfc, 0x92, 0xfc, 0x3f, 0xcc, 0x9f, 0xed, - 0x1a, 0x7d, 0x99, 0xf5, 0xc5, 0x15, 0xf2, 0xb5, 0xb7, 0xc7, - 0x9f, 0x18, 0xdb, 0xfd, 0xeb, 0xf8, 0x6e, 0x3f, 0xeb, 0xad, - 0xba, 0x7f, 0x40, 0x2b, 0x7f, 0x4d, 0xfd, 0xa5, 0x75, 0xa8, - 0x58, 0xb, 0xed, 0x32, 0xce, 0xe9, 0x7b, 0xf9, 0x25, 0xa2, - 0x3f, 0xa9, 0x61, 0x5d, 0x54, 0xf8, 0x93, 0x1, 0x3f, 0x8a, - 0xeb, 0xd5, 0x7f, 0x95, 0xcd, 0x16, 0x3e, 0x8b, 0xde, 0xe8, - 0xfa, 0x2a, 0x8a, 0xf2, 0xdd, 0x17, 0xf6, 0x87, 0xf0, 0xd6, - 0xa3, 0xb5, 0x6f, 0x52, 0xeb, 0x4c, 0x90, 0xf5, 0x32, 0x26, - 0xf4, 0xfc, 0xd7, 0x27, 0xf4, 0xaf, 0x45, 0xd2, 0xb5, 0x9b, - 0x1d, 0x72, 0xd5, 0x6e, 0x74, 0xfb, 0xb8, 0x6f, 0x20, 0x6e, - 0x8f, 0xb, 0x86, 0x1f, 0x8f, 0xa5, 0x7b, 0x98, 0x7c, 0x6e, - 0x1f, 0x15, 0xfc, 0x19, 0xa9, 0x7e, 0x7f, 0x76, 0xe7, 0x64, - 0x2a, 0xd3, 0xa9, 0xf0, 0x3b, 0x97, 0x68, 0xa2, 0x8a, 0xed, - 0x35, 0xa, 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa2, 0x80, 0xa, - 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa6, 0xbc, 0x8b, 0x12, 0x96, - 0x76, 0x8, 0xa3, 0xa9, 0x63, 0x81, 0x40, 0xe, 0xa2, 0xb0, - 0xb5, 0xf, 0x1d, 0xf8, 0x77, 0x4b, 0x24, 0x5d, 0x6b, 0x56, - 0x30, 0xb0, 0xea, 0xa6, 0x75, 0x27, 0xf2, 0x7, 0x35, 0x8b, - 0x71, 0xf1, 0xa7, 0xc1, 0xb6, 0xe7, 0x7, 0x5a, 0x47, 0xff, - 00, 0xae, 0x70, 0xc8, 0xff, 00, 0xc9, 0x6b, 0x92, 0x78, - 0xbc, 0x35, 0x3d, 0x27, 0x52, 0x2b, 0xd5, 0xa3, 0x27, 0x56, - 0x9c, 0x77, 0x92, 0xfb, 0xce, 0xde, 0x98, 0x5d, 0xb3, 0xf7, - 0xf, 0xe6, 0x2b, 0x82, 0x3f, 0x1d, 0xfc, 0x18, 0xf, 0xfc, - 0x84, 0xe4, 0x3f, 0xf6, 0xed, 0x2f, 0xff, 00, 0x13, 0x4a, - 0xbf, 0x1d, 0x7c, 0x18, 0xc7, 0xfe, 0x42, 0x8e, 0x3e, 0xb6, - 0xb2, 0xff, 00, 0xf1, 0x35, 0x8f, 0xf6, 0x8e, 0xb, 0xfe, - 0x7f, 0x47, 0xff, 00, 0x2, 0x44, 0xfb, 0x7a, 0x5f, 0xce, - 0xbe, 0xf3, 0xbe, 0xc9, 0xc7, 0x4a, 0x4d, 0xc7, 0xfb, 0xa7, - 0xf4, 0xae, 0x3e, 0xdf, 0xe3, 0xf, 0x83, 0xae, 0x7e, 0xee, - 0xb9, 0x2, 0x7f, 0xd7, 0x45, 0x74, 0xfe, 0x60, 0x56, 0xcd, - 0x8f, 0x8c, 0xb4, 0x1d, 0x4f, 0x1f, 0x65, 0xd6, 0x2c, 0x67, - 0x27, 0xa0, 0x59, 0xd7, 0x3f, 0x96, 0x6b, 0x78, 0x62, 0xb0, - 0xf5, 0x3e, 0xa, 0x89, 0xfa, 0x34, 0x5a, 0xa9, 0x9, 0x6d, - 0x24, 0x6c, 0xd1, 0x4d, 0x47, 0x59, 0x17, 0x2a, 0xc1, 0x87, - 0xa8, 0x39, 0xa7, 0x57, 0x51, 0xa0, 0x51, 0x45, 0x30, 0x31, - 0xf3, 0x4a, 0x9e, 0x98, 0xc8, 0x34, 00, 0xfa, 0x28, 0xa2, - 0x80, 0xa, 0x82, 0xf5, 0xfc, 0xbb, 0x39, 0xdb, 0xd1, 0x9, - 0xfd, 0x2a, 0x7a, 0xa3, 0xad, 0xbf, 0x97, 0xa4, 0x5d, 0xb1, - 0x38, 0xc4, 0x66, 0xa6, 0x4e, 0xc9, 0xb1, 0x3d, 0x13, 0x3e, - 0x1c, 0xf8, 0xdf, 0x37, 0xda, 0x3c, 0x49, 0x28, 0xeb, 0x82, - 0x6b, 0x2f, 0xf6, 0x63, 0xf8, 0x99, 0x27, 0xc3, 0x6f, 0x8d, - 0x16, 0xba, 0x44, 0xf2, 0x95, 0xd1, 0x3c, 0x4a, 0x45, 0xa4, - 0x88, 0x71, 0x84, 0xb8, 0x19, 0xf2, 0x9f, 0xdb, 0xba, 0x9f, - 0xf7, 0x85, 0x49, 0xf1, 0x56, 0x7f, 0x3f, 0xc4, 0xd7, 0x3d, - 0xf0, 0x4d, 0x78, 0x7, 0xc5, 0x7b, 0x89, 0x2c, 0xb4, 0xe1, - 0x75, 0x6e, 0xed, 0x15, 0xcd, 0xbb, 0x9, 0xa2, 0x91, 0x4e, - 0xa, 0xba, 0x9c, 0xa9, 0x1f, 0x88, 0xaf, 0xce, 0x32, 0xfa, - 0xce, 0x38, 0xc9, 0x49, 0x77, 0x67, 0xe3, 0x98, 0xbc, 0x4c, - 0xb0, 0xd9, 0xac, 0x31, 0x11, 0xe9, 0x24, 0xbe, 0x4f, 0x46, - 0x7e, 0xc0, 0x51, 0x5c, 0x1f, 0x80, 0xfe, 0x28, 0xe9, 0x5e, - 0x21, 0xf0, 0x37, 0x87, 0x75, 0x59, 0x2e, 0xcb, 0x49, 0x7d, - 0xa7, 0x5b, 0x5c, 0xb1, 0x2a, 0x72, 0x4b, 0xc4, 0xac, 0x7f, - 0x9d, 0x15, 0xfa, 0x45, 0xcf, 0xd8, 0xee, 0x99, 0xde, 0x51, - 0x45, 0x14, 0xc6, 0x14, 0x51, 0x45, 00, 0x15, 0x53, 0x56, - 0xd4, 0xed, 0xf4, 0x5d, 0x2e, 0xee, 0xfe, 0xea, 0x41, 0x15, - 0xb5, 0xb4, 0x4d, 0x2c, 0x8e, 0x7b, 0x2a, 0x8c, 0x9a, 0xb7, - 0x5e, 0x2b, 0xfb, 0x55, 0x78, 0xc4, 0x68, 0x1f, 0xf, 0x86, - 0x93, 0x13, 0xe2, 0xeb, 0x58, 0x93, 0xca, 0xc0, 0xff, 00, - 0x9e, 0x4b, 0x86, 0x73, 0xff, 00, 0xa0, 0x8f, 0xc6, 0xb9, - 0xb1, 0x35, 0x96, 0x1e, 0x8c, 0xaa, 0xbe, 0x88, 0xe4, 0xc5, - 0xd7, 0x58, 0x5a, 0x13, 0xac, 0xfa, 0x2f, 0xf8, 0x63, 0xe4, - 0xcf, 0x12, 0xeb, 0x93, 0xf8, 0xa7, 0xc4, 0x7a, 0x8e, 0xad, - 0x71, 0x8f, 0x3e, 0xfa, 0xe1, 0xe6, 0x60, 0x3a, 0xc, 0x9e, - 00, 0xf6, 0x3, 0x2, 0xbe, 0xc2, 0xfd, 0x9b, 0x3c, 0x23, - 0xff, 00, 0x8, 0xe7, 0x80, 0xa3, 0xb9, 0x91, 0x36, 0xdc, - 0x5e, 0xb1, 0x90, 0xe4, 0x73, 0xb7, 0xb5, 0x7c, 0x91, 0xe0, - 0x6f, 0xf, 0xc9, 0xe2, 0x6f, 0x14, 0x69, 0xda, 0x7c, 0x6a, - 0x5b, 0xcd, 0x95, 0x41, 0xc7, 0xa6, 0x79, 0xaf, 0xd0, 0x8d, - 0x32, 0xc2, 0x2d, 0x2f, 0x4f, 0xb7, 0xb4, 0x85, 0x42, 0x47, - 0xa, 0x4, 0x50, 0x3d, 0x85, 0x7c, 0x6e, 0x43, 0x45, 0xd6, - 0xaf, 0x3c, 0x4c, 0xfa, 0x7e, 0x6c, 0xf8, 0xfe, 0x1d, 0xa0, - 0xea, 0x4e, 0x78, 0xa9, 0xef, 0xfa, 0xbd, 0xcb, 0x54, 0x51, - 0x45, 0x7d, 0xd9, 0xf7, 0x61, 0x45, 0x14, 0x50, 0x1, 0x5f, - 0x98, 0xbf, 0xf0, 0x5b, 0x2f, 0x1d, 0xdc, 0x5a, 0xf8, 0x77, - 0xe1, 0xaf, 0x83, 0x62, 0x25, 0x6d, 0xaf, 0x6e, 0x6e, 0xb5, - 0x59, 0xf0, 0x48, 0xc9, 0x89, 0x52, 0x34, 0x7, 0xd4, 0x7e, - 0xf9, 0xcf, 0xe1, 0x5f, 0xa7, 0x55, 0xf9, 0xe5, 0xff, 00, - 0x5, 0x88, 0xf8, 0x15, 0xab, 0x78, 0xf7, 0xe1, 0x97, 0x86, - 0x3c, 0x79, 0xa2, 0x59, 0xcd, 0x7f, 0x2f, 0x85, 0xa6, 0x9a, - 0x2b, 0xf8, 0x60, 0x42, 0xcc, 0x96, 0x93, 0x5, 0x26, 0x5c, - 0xe, 0x70, 0x8f, 0x1a, 0xe7, 0xd0, 0x31, 0x3d, 0xa8, 0x13, - 0xd8, 0xf8, 0x57, 0xfe, 0x9, 0xbb, 0xf1, 0x4b, 0xc1, 0xff, - 00, 0x8, 0x7f, 0x6a, 0x4d, 0x1f, 0x5d, 0xf1, 0xb5, 0xec, - 0x1a, 0x5e, 0x92, 0xf6, 0x37, 0x36, 0x91, 0xea, 0x17, 0x23, - 0xf7, 0x56, 0xd3, 0xc8, 0xa0, 0x23, 0xb1, 0xfe, 0x10, 0x40, - 0x65, 0xdd, 0xdb, 0x77, 0x3c, 0x57, 0xe8, 0x87, 0xfc, 0x15, - 0x1f, 0xf6, 0x8d, 0xd2, 0x7c, 0x31, 0xfb, 0x2e, 0x36, 0x8b, - 0xe1, 0xed, 0x62, 0xcf, 0x51, 0xbb, 0xf1, 0xb4, 0xc2, 0xc2, - 0x29, 0x6c, 0xae, 0x16, 0x55, 0xfb, 0x2a, 0xe1, 0xe7, 0x70, - 0x54, 0x91, 0x82, 0x36, 0xa7, 0xfd, 0xb4, 0xaf, 0xc4, 0xea, - 0x37, 0x12, 00, 0xc9, 0xc0, 0xe8, 0x2a, 0xac, 0x45, 0xcf, - 0xb5, 0x7f, 0xe0, 0x94, 0x9f, 0xc, 0xb4, 0xcf, 0x13, 0xfe, - 0xd0, 0x57, 0x3e, 0x35, 0xd7, 0xee, 0x6d, 0xac, 0xf4, 0x4f, - 0x5, 0x59, 0x1b, 0xe3, 0x3d, 0xe4, 0x8b, 0x1c, 0x42, 0xe6, - 0x4c, 0xa4, 0x59, 0x66, 0xc0, 0xe0, 0x79, 0x8d, 0xf5, 0x51, - 0x5e, 0xd9, 0xff, 00, 0x5, 0x2f, 0xff, 00, 0x82, 0x80, - 0xf8, 0x77, 0xc6, 0x7e, 0x11, 0xbb, 0xf8, 0x4f, 0xf0, 0xd7, - 0x53, 0x8f, 0x59, 0xb6, 0xbe, 0x64, 0x3a, 0xd6, 0xbd, 0x65, - 0x29, 0x30, 0x6c, 0x56, 0xd, 0xf6, 0x78, 0x98, 0x7d, 0xfc, - 0x90, 0x37, 0x30, 0xf9, 0x71, 0xc7, 0x39, 0x38, 0xfc, 0xc0, - 0x12, 0xba, 0xc6, 0xd1, 0x87, 0x61, 0x1b, 0x10, 0x59, 0x1, - 0xe0, 0x91, 0xd3, 0x22, 0xbd, 0x33, 0xe0, 0x1f, 0xec, 0xe5, - 0xe3, 0x9f, 0xda, 0x43, 0xc6, 0x50, 0x78, 0x7f, 0xc1, 0xba, - 0x4c, 0x97, 0x44, 0xb7, 0xfa, 0x4e, 0xa3, 0x2a, 0x95, 0xb4, - 0xb3, 0x4e, 0xed, 0x2c, 0x98, 0xc0, 0xf6, 0x1d, 0x4f, 0x60, - 0x68, 0xb, 0xf4, 0x3b, 0xbf, 0xd8, 0x3f, 0xf6, 0x70, 0x9f, - 0xf6, 0x92, 0xf8, 0xff, 00, 0xa3, 0x69, 0x33, 0xc2, 0xe7, - 0xc3, 0x7a, 0x53, 0x2e, 0xa7, 0xac, 0x4e, 0x17, 0x2a, 0x21, - 0x46, 0x5, 0x62, 0xcf, 0x4c, 0xc8, 0xd8, 0x5c, 0x7a, 0x16, - 0x3d, 0xab, 0xfa, 0xd, 0x44, 0x58, 0x91, 0x51, 0x14, 0x2a, - 0xa8, 0xc0, 0x3, 0xa0, 0x15, 0xe2, 0xff, 00, 0xb2, 0x8f, - 0xec, 0xb7, 0xe1, 0xaf, 0xd9, 0x53, 0xe1, 0xa4, 0x3e, 0x1b, - 0xd1, 0x7f, 0xd3, 0x35, 0x3b, 0x82, 0x27, 0xd5, 0x75, 0x67, - 0x5c, 0x49, 0x79, 0x3e, 0x31, 0x9f, 0x64, 0x1d, 0x15, 0x7b, - 0xf, 0x72, 0x4d, 0x7b, 0x43, 0xba, 0xc6, 0x8c, 0xec, 0x42, - 0xaa, 0x8c, 0x92, 0x7b, 0xa, 0x96, 0xcb, 0x4a, 0xc7, 0x81, - 0xfe, 0xd2, 0x9e, 0x23, 0x13, 0x5e, 0xe9, 0x9a, 0x24, 0x6f, - 0x91, 0x8, 0x37, 0x33, 0x1, 0xfd, 0xe3, 0xc2, 0x8f, 0xcb, - 0x77, 0xe7, 0x5e, 0x25, 0x5b, 0xbe, 0x39, 0xd7, 0xcf, 0x8a, - 0x3c, 0x5b, 0xaa, 0x6a, 0x79, 0x26, 0x39, 0xa6, 0x3e, 0x5e, - 0x7f, 0xb8, 0x3e, 0x55, 0xfd, 00, 0xac, 0x2a, 0xfc, 0x4b, - 0x33, 0xc4, 0xfd, 0x6f, 0x17, 0x52, 0xaf, 0x4b, 0xe9, 0xe8, - 0xb4, 0x47, 0xc9, 0x62, 0x2a, 0x7b, 0x5a, 0xb2, 0x90, 0x51, - 0x45, 0x15, 0xe6, 0x18, 0x16, 0xec, 0x74, 0x8b, 0xed, 0x50, - 0x39, 0xb3, 0xb2, 0xb8, 0xbb, 0x9, 0x8d, 0xde, 0x44, 0x4c, - 0xfb, 0x73, 0xd3, 0x38, 0x1c, 0x54, 0xd2, 0x78, 0x6f, 0x57, - 0x88, 0x65, 0xf4, 0xab, 0xd4, 0x1e, 0xad, 0x6c, 0xe3, 0xfa, - 0x57, 0xd2, 0x1f, 00, 0x74, 0xf, 0xec, 0x8f, 0x2, 0x47, - 0x74, 0xe9, 0xb6, 0x6d, 0x42, 0x56, 0x9c, 0x92, 0x39, 0xd8, - 0x3e, 0x55, 0xfd, 0x1, 0x3f, 0x8d, 0x7a, 0x55, 0x7d, 0xd6, - 0x13, 0x86, 0xa3, 0x88, 0xc3, 0xc2, 0xac, 0xea, 0x34, 0xe4, - 0xaf, 0x6b, 0x77, 0x3d, 0x8a, 0x58, 0x5, 0x38, 0x29, 0x39, - 0x5a, 0xe7, 0xc3, 0x12, 0xc1, 0x2c, 0x7, 0x12, 0xc6, 0xf1, - 0x9f, 0x47, 0x52, 0x2a, 0x3a, 0xfb, 0x96, 0xe2, 0xce, 0xde, - 0xed, 0xa, 0x4f, 0x4, 0x73, 0x21, 0xfe, 0x19, 0x10, 0x30, - 0xfd, 0x6b, 0x8c, 0xf1, 0x3f, 0xc1, 0xaf, 0xc, 0xf8, 0x8e, - 0xde, 0x40, 0x96, 0x11, 0xe9, 0xb7, 0x44, 0x1d, 0xb7, 0x16, - 0x6a, 0x10, 0x83, 0xee, 0xa3, 0x83, 0xf9, 0x54, 0xd6, 0xe1, - 0x6a, 0xb1, 0x57, 0xa3, 0x51, 0x3f, 0x26, 0xad, 0xfe, 0x62, - 0x9e, 0x5d, 0x24, 0xbd, 0xd9, 0x5c, 0xf9, 0x36, 0x8a, 0xd4, - 0xf1, 0x3f, 0x87, 0xae, 0x7c, 0x2b, 0xaf, 0x5e, 0x69, 0x57, - 0x78, 0x33, 0x5b, 0x3e, 0xd2, 0xcb, 0xd1, 0x81, 0x19, 0xc, - 0x3e, 0xa0, 0x83, 0x59, 0x75, 0xf1, 0x53, 0x84, 0xa9, 0xc9, - 0xc2, 0x4a, 0xcd, 0x68, 0x79, 0x2d, 0x34, 0xec, 0xc2, 0x8a, - 0x28, 0xa8, 0x11, 0xe9, 0xbf, 00, 0x3c, 0x49, 0x36, 0x93, - 0xe3, 0x68, 0xf4, 0xed, 0xc7, 0xec, 0xba, 0x8a, 0x32, 0x32, - 0x76, 0xe, 0xa0, 0xb2, 0x9f, 0xd0, 0x8f, 0xc6, 0xbe, 0x9e, - 0xaf, 0x92, 0xbe, 0xb, 0xda, 0x3d, 0xdf, 0xc4, 0xad, 0x1b, - 0x68, 0x24, 0x46, 0xcf, 0x23, 0x11, 0xd8, 0x4, 0x6f, 0xfe, - 0xb5, 0x7d, 0x6b, 0x5f, 0xa9, 0xf0, 0xcc, 0xe7, 0x2c, 0x13, - 0x52, 0xd9, 0x49, 0xdb, 0xee, 0x4c, 0xfa, 0x2c, 0xbd, 0xb7, - 0x49, 0xa7, 0xdc, 0xa5, 0xad, 0xea, 0x71, 0xe8, 0xda, 0x3d, - 0xed, 0xfc, 0xa7, 0x11, 0xdb, 0x42, 0xf2, 0x9c, 0xff, 00, - 0xb2, 0x9, 0xaf, 0x89, 0xae, 0xae, 0x64, 0xbd, 0xb9, 0x9a, - 0xe2, 0x56, 0xdd, 0x2c, 0xae, 0x64, 0x76, 0xf5, 0x24, 0xe4, - 0xd7, 0xda, 0x3e, 0x28, 0xf0, 0xf4, 0x3e, 0x2a, 0xd0, 0xee, - 0x74, 0xbb, 0x89, 0xa6, 0x82, 0xb, 0x80, 0x3, 0xbc, 0x4, - 0x6, 0xc0, 0x20, 0xe3, 0x90, 0x7d, 0x2b, 0xcd, 0xa4, 0xfd, - 0x9a, 0xb4, 0x16, 0xfb, 0x9a, 0x9e, 0xa0, 0xbf, 0x52, 0x87, - 0xff, 00, 0x65, 0xa8, 0xcf, 0x72, 0xfc, 0x5e, 0x61, 0x28, - 0x2a, 0x9, 0x72, 0xc6, 0xfd, 0x7a, 0xb1, 0x63, 0x28, 0x55, - 0xac, 0xd7, 0x22, 0xd1, 0x1f, 0x39, 0x51, 0x5f, 0x42, 0x49, - 0xfb, 0x33, 0x69, 0x87, 0xee, 0x6b, 0x57, 0x6b, 0xfe, 0xf4, - 0x6a, 0x6a, 0xb4, 0x9f, 0xb3, 0x1c, 0x7, 0xee, 0x6b, 0xf2, - 0xf, 0xf7, 0xad, 0x81, 0xff, 00, 0xd9, 0xab, 0xe4, 0x9f, - 0xf, 0xe6, 0x2b, 0xec, 0x7e, 0x2b, 0xfc, 0xcf, 0x33, 0xea, - 0x55, 0xfb, 0x7e, 0x27, 0x82, 0x51, 0x5e, 0x9b, 0xf1, 0x17, - 0xe0, 0xd2, 0x78, 0x3, 0x42, 0x1a, 0x8b, 0x6b, 0x3f, 0x6b, - 0x2f, 0x32, 0xc2, 0x90, 0xfd, 0x9f, 0x61, 0x62, 0x72, 0x7a, - 0xee, 0x3d, 00, 0x3d, 0xab, 0xcc, 0xab, 0xc7, 0xc4, 0xe1, - 0x6b, 0x60, 0xea, 0x7b, 0x2a, 0xca, 0xcf, 0xe4, 0xff, 00, - 0x23, 0x96, 0xa5, 0x39, 0x52, 0x97, 0x2c, 0xd6, 0xa1, 0x45, - 0x14, 0x57, 0x21, 0x98, 0x51, 0x45, 0x7a, 0x44, 0x1f, 00, - 0x7c, 0x55, 0x73, 0x6b, 0xd, 0xc4, 0x6b, 0x66, 0x56, 0x54, - 0x59, 0x2, 0x99, 0xc8, 0x20, 0x11, 0x9c, 0x1e, 0x3a, 0xd7, - 0x55, 0xc, 0x2d, 0x7c, 0x4d, 0xfd, 0x8c, 0x1c, 0xad, 0xbd, - 0x8d, 0x21, 0x4e, 0x75, 0x3e, 0x5, 0x73, 0xcd, 0xe8, 0xaf, - 0x46, 0x93, 0xe0, 0xf, 0x8c, 0x13, 0xa5, 0xa5, 0xb3, 0xff, - 00, 0xbb, 0x72, 0xb5, 0x56, 0x5f, 0x81, 0xfe, 0x32, 0x8b, - 0xa6, 0x94, 0x1f, 0xfd, 0xcb, 0x88, 0xff, 00, 0xf8, 0xaa, - 0xe8, 0x79, 0x6e, 0x35, 0x6f, 0x46, 0x5f, 0x73, 0x2f, 0xd8, - 0x55, 0x5f, 0x65, 0xfd, 0xc7, 0x7, 0x5e, 0xd3, 0xfb, 0x34, - 0x69, 0x3e, 0x6e, 0xaf, 0xab, 0xea, 0x4c, 0xbc, 0x43, 0xa, - 0xc0, 0x8d, 0xee, 0xc7, 0x27, 0xf4, 0x51, 0xf9, 0xd7, 0x12, - 0xff, 00, 0x7, 0x3c, 0x64, 0x9d, 0x74, 0x29, 0x8f, 0xfb, - 0xb2, 0x46, 0x7f, 0xf6, 0x6a, 0xf7, 0x9f, 0x82, 0x9e, 0x12, - 0xb9, 0xf0, 0x9f, 0x83, 0x84, 0x77, 0xd0, 0x1b, 0x6b, 0xeb, - 0x89, 0x9e, 0x59, 0x63, 0x6e, 0xab, 0xfc, 0x2a, 0xf, 0xe0, - 0x33, 0xf8, 0xd7, 0xb7, 0x91, 0xe0, 0x2b, 0xac, 0x74, 0x67, - 0x56, 0xd, 0x28, 0xdd, 0xea, 0x9a, 0xf2, 0xfd, 0x4e, 0xbc, - 0x1d, 0x19, 0xfb, 0x64, 0xe4, 0xad, 0x63, 0xbf, 0xa2, 0x8a, - 0xf3, 0x4f, 0x8a, 0xff, 00, 0x17, 0xa0, 0xf0, 0x54, 0x6d, - 0xa7, 0x69, 0xfb, 0x6e, 0x35, 0xa7, 0x5c, 0xf3, 0xca, 0x40, - 0xf, 0x76, 0xf5, 0x3e, 0x83, 0xf3, 0xf7, 0xfd, 0x27, 0x13, - 0x89, 0xa5, 0x84, 0xa4, 0xea, 0xd6, 0x76, 0x48, 0xf7, 0xea, - 0x54, 0x8d, 0x28, 0xf3, 0x49, 0xe8, 0x74, 0xde, 0x33, 0xf8, - 0x83, 0xa3, 0xf8, 0x1a, 0xd3, 0xcc, 0xd4, 0x2e, 0x33, 0x70, - 0xcb, 0x98, 0xad, 0x63, 0xe6, 0x59, 0x3e, 0x83, 0xb0, 0xf7, - 0x3c, 0x57, 0xcf, 0xde, 0x32, 0xf8, 0xe3, 0xaf, 0xf8, 0xa3, - 0x7c, 0x36, 0xaf, 0xfd, 0x91, 0x62, 0x4f, 0xfa, 0xbb, 0x66, - 0x3e, 0x63, 0xf, 0xf6, 0x9f, 0xaf, 0xe5, 0x8a, 0xe1, 0x35, - 0x3d, 0x4e, 0xef, 0x59, 0xbd, 0x96, 0xf2, 0xfa, 0xe2, 0x4b, - 0xab, 0x99, 0x4e, 0x5e, 0x49, 0xe, 0x49, 0xff, 00, 0x3e, - 0x95, 0x56, 0xbf, 0x2f, 0xcc, 0x33, 0xec, 0x46, 0x31, 0xb8, - 0x53, 0x7c, 0x90, 0xec, 0xb7, 0x7e, 0xac, 0xf9, 0xda, 0xf8, - 0xca, 0x95, 0x74, 0x8e, 0x88, 0x57, 0x76, 0x91, 0x8b, 0x33, - 0x16, 0x62, 0x72, 0x49, 0x39, 0x26, 0x92, 0x8a, 0x2b, 0xe6, - 0x4e, 00, 0xa2, 0x8a, 0x96, 0xde, 0xd2, 0x7b, 0xc7, 0xd9, - 0x4, 0x32, 0x4e, 0xdf, 0xdd, 0x8d, 0xb, 0x1f, 0xd2, 0x9a, - 0x4d, 0xbb, 0x20, 0x22, 0xa2, 0xb5, 0x47, 0x84, 0xb5, 0xc2, - 0x32, 0x34, 0x5d, 0x47, 0x1e, 0xbf, 0x64, 0x93, 0xfc, 0x2a, - 0x95, 0xd6, 0x9f, 0x75, 0x62, 0x71, 0x73, 0x6d, 0x35, 0xb9, - 0xf4, 0x96, 0x32, 0xbf, 0xce, 0xae, 0x54, 0xe7, 0x15, 0x79, - 0x45, 0xaf, 0x90, 0xdc, 0x5a, 0xdd, 0x15, 0xe8, 0xa2, 0x8a, - 0xcc, 0x41, 0x57, 0x34, 0xad, 0x66, 0xfb, 0x43, 0xba, 0x5b, - 0x9d, 0x3e, 0xee, 0x6b, 0x39, 0xd4, 0xe7, 0x7c, 0x2e, 0x57, - 0x3f, 0x5f, 0x5f, 0xa1, 0xaa, 0x74, 0x55, 0x46, 0x4e, 0x2f, - 0x9a, 0x2e, 0xcc, 0x13, 0x6b, 0x54, 0x7b, 0xef, 0xc3, 0xef, - 0xda, 0x9, 0x2e, 0xe5, 0x8e, 0xc7, 0xc4, 0xc1, 0x20, 0x73, - 0x85, 0x5b, 0xf8, 0xc6, 0x14, 0x9f, 0xf6, 0xc7, 0x6f, 0xa8, - 0xe3, 0xd8, 0x57, 0xb6, 0x47, 0x22, 0x4d, 0x1a, 0xc9, 0x1b, - 0x7, 0x46, 0x19, 0x56, 0x53, 0x90, 0x47, 0xa8, 0x35, 0xf0, - 0xb5, 0x7a, 0xc7, 0xc1, 0x9f, 0x8b, 0x12, 0x78, 0x76, 0xf2, - 0x1d, 0x17, 0x55, 0x98, 0xbe, 0x93, 0x2b, 0x6d, 0x8a, 0x47, - 0x3f, 0xf1, 0xee, 0xc7, 0xa7, 0x3f, 0xdd, 0x3f, 0xa7, 0xe7, - 0x5f, 0x77, 0x94, 0x67, 0xf2, 0xe6, 0x58, 0x7c, 0x63, 0xba, - 0x7b, 0x4b, 0xfc, 0xff, 00, 0xcf, 0xef, 0x3d, 0x9c, 0x2e, - 0x35, 0xdd, 0x42, 0xaf, 0xde, 0x7d, 0x27, 0x45, 0x20, 0x20, - 0x8c, 0x8e, 0x41, 0xa5, 0xaf, 0xd0, 0xcf, 0x70, 0x28, 0xa2, - 0xaa, 0xea, 0x7a, 0x9d, 0xb6, 0x8d, 0xa7, 0xcf, 0x7b, 0x79, - 0x32, 0xc1, 0x6d, 0x2, 0x17, 0x92, 0x46, 0xe8, 00, 0xa4, - 0xda, 0x8a, 0xbb, 0xd8, 0x4d, 0xdb, 0x56, 0x59, 0x66, 0x8, - 0xa5, 0x98, 0x80, 0x7, 0x24, 0x9e, 0xd5, 0xe6, 0xfe, 0x30, - 0xf8, 0xed, 0xa0, 0x78, 0x6f, 0x7c, 0x36, 0x4d, 0xfd, 0xb1, - 0x7a, 0x38, 0xd9, 0x6e, 0xd8, 0x8d, 0x4f, 0xbb, 0xf4, 0xfc, - 0xb3, 0x5e, 0x45, 0xf1, 0x27, 0xe3, 0x16, 0xa1, 0xe3, 0x29, - 0xe5, 0xb4, 0xb1, 0x79, 0x2c, 0x34, 0x60, 0x70, 0x22, 0x53, - 0x87, 0x98, 0x7a, 0xb9, 0x1d, 0xbf, 0xd9, 0xe9, 0xf5, 0xaf, - 0x3a, 0xaf, 0x80, 0xcc, 0x78, 0x95, 0xa6, 0xe9, 0xe0, 0xd7, - 0xfd, 0xbc, 0xff, 00, 0x45, 0xfe, 0x7f, 0x71, 0xe2, 0xd7, - 0xc7, 0xbb, 0xf2, 0xd2, 0xfb, 0xcf, 0x47, 0xf1, 0x7, 0xc7, - 0xbf, 0x14, 0x6b, 0x3b, 0x92, 0xda, 0x68, 0xb4, 0xa8, 0x4f, - 0xf0, 0xda, 0xaf, 0xcd, 0xff, 00, 0x7d, 0x36, 0x4f, 0xe5, - 0x8a, 0xe1, 0x6f, 0xf5, 0xad, 0x43, 0x54, 0x62, 0xd7, 0x97, - 0xd7, 0x37, 0x64, 0xf7, 0x9a, 0x56, 0x7f, 0xe6, 0x6a, 0x95, - 0x15, 0xf1, 0x75, 0xf1, 0x98, 0x8c, 0x4b, 0xbd, 0x69, 0xb7, - 0xf3, 0xfd, 0xf, 0x26, 0x75, 0x67, 0x53, 0xe2, 0x77, 0xa, - 0x28, 0xa2, 0xb8, 0xcc, 0xc2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, - 0x28, 0xa0, 0xb, 0x76, 0x7a, 0xbd, 0xf6, 0x9c, 0xc1, 0xad, - 0x6f, 0x6e, 0x2d, 0x88, 0xef, 0xc, 0xac, 0x9f, 0xc8, 0xd7, - 0x5b, 0xa2, 0x7c, 0x68, 0xf1, 0x6e, 0x8a, 0x55, 0x57, 0x53, - 0x6b, 0xd8, 0xc7, 0x1e, 0x5d, 0xe2, 0x89, 0x33, 0xf8, 0xfd, - 0xef, 0xd6, 0xb8, 0x7a, 0xdb, 0xf0, 0x4e, 0x96, 0x75, 0xaf, - 0x17, 0x68, 0xf6, 0x41, 0x77, 0x9, 0x6e, 0xa3, 0xc, 0x3f, - 0xd9, 0x7, 0x2d, 0xfa, 0x3, 0x5d, 0xd8, 0x6a, 0xf8, 0x88, - 0x54, 0x8c, 0x68, 0xcd, 0xa6, 0xdd, 0xb4, 0x66, 0xb4, 0xe7, - 0x35, 0x24, 0xa0, 0xec, 0x7d, 0x8d, 0xa5, 0xcb, 0x71, 0x3e, - 0x9b, 0x6b, 0x25, 0xda, 0xaa, 0x5d, 0x3c, 0x4a, 0xd2, 0xaa, - 0xc, 00, 0xc4, 0xc, 0x81, 0xf8, 0xd5, 0x9c, 0x73, 0x9a, - 0x5a, 0x2b, 0xf7, 0x14, 0xac, 0x92, 0x3e, 0xbd, 0x5, 0x14, - 0x51, 0x4c, 0x61, 0x58, 0xfe, 0x2e, 0x97, 0xca, 0xf0, 0xed, - 0xeb, 0x74, 0xf9, 0xd, 0x6c, 0x57, 0x33, 0xf1, 0x12, 0x6f, - 0x27, 0xc2, 0xb7, 0x7d, 0xb2, 0x31, 0x58, 0xd6, 0x7c, 0xb4, - 0xe4, 0xfc, 0x8c, 0xea, 0x3b, 0x41, 0xb3, 0xe1, 0x4f, 0x88, - 0x13, 0x79, 0xde, 0x22, 0xbb, 0x6f, 0xf6, 0x8d, 0x78, 0x7, - 0xc6, 0x8b, 0x8f, 0x2f, 0x47, 0x9b, 0x9f, 0xe1, 0x35, 0xee, - 0x5e, 0x2e, 0x97, 0xcd, 0xd6, 0x6f, 0x1b, 0xfd, 0xb3, 0x5f, - 0x3c, 0x7c, 0x78, 0xb9, 0xf2, 0xb4, 0x6b, 0x9f, 0x68, 0xcf, - 0xf2, 0xaf, 0xcd, 0xb2, 0xc5, 0xcd, 0x5e, 0xfe, 0xa7, 0xe2, - 0x18, 0xbf, 0xde, 0xe3, 0xe9, 0xc7, 0xbc, 0xd7, 0xe6, 0x7e, - 0x94, 0xfc, 0xc, 0xf0, 0x98, 0x5f, 0x82, 0x7f, 0xf, 0x84, - 0x90, 0xb0, 0x90, 0x78, 0x7b, 0x4f, 0xd, 0x91, 0xce, 0x7e, - 0xcd, 0x1e, 0x68, 0xaf, 0x59, 0xf8, 0x75, 0x66, 0x2c, 0xfe, - 0x1f, 0x78, 0x62, 0xdc, 0xc6, 0x10, 0xc5, 0xa5, 0xda, 0xc7, - 0xb7, 0x1d, 0x31, 0x12, 0x8c, 0x51, 0x5f, 0xa6, 0x24, 0x7e, - 0xe0, 0xa3, 0xa1, 0xd1, 0xd1, 0x45, 0x15, 0x65, 0x85, 0x14, - 0x51, 0x40, 0x5, 0x7c, 0x4d, 0xfb, 0x4b, 0xf8, 0xc4, 0xf8, - 0xa3, 0xe2, 0x65, 0xcd, 0xac, 0x6e, 0x1a, 0xd3, 0x49, 0x51, - 0x69, 0x1e, 0x31, 0x8d, 0xfd, 0x5c, 0xe4, 0x7b, 0x9c, 0x7e, - 0x15, 0xf5, 0xdf, 0x8e, 0xfc, 0x51, 0xf, 0x82, 0xfc, 0x21, - 0xaa, 0xeb, 0x33, 0x9f, 0x96, 0xd2, 0x6, 0x75, 0x5c, 0xe3, - 0x73, 0xe3, 0xa, 0xa3, 0xdc, 0x9c, 0x57, 0xe7, 0x9b, 0xcb, - 0x3e, 0xa5, 0x7a, 0xf3, 0x4c, 0xc6, 0x5b, 0x9b, 0x89, 0xb, - 0xbb, 0x1e, 0xac, 0xcc, 0x72, 0x4f, 0xe6, 0x6b, 0xe4, 0x78, - 0x83, 0x13, 0xcb, 0x4e, 0x34, 0x17, 0x5d, 0x5f, 0xa2, 0x3e, - 0x33, 0x88, 0xf1, 0x36, 0x84, 0x30, 0xd1, 0xde, 0x5a, 0xbf, - 0x45, 0xb7, 0xe3, 0xf9, 0x1e, 0xfb, 0xfb, 0x27, 0x78, 0x3f, - 0xed, 0xba, 0xdd, 0xe6, 0xb5, 0x32, 0xe6, 0x3b, 0x65, 0xdb, - 0x1e, 0x47, 0xf1, 0x1a, 0xfa, 0xb6, 0xbc, 0xff, 00, 0xe0, - 0x77, 0x85, 0x7, 0x85, 0x7e, 0x1f, 0xe9, 0xf1, 0x32, 0x6d, - 0x9e, 0x75, 0xf3, 0xa4, 0xfa, 0x9a, 0xf4, 0xa, 0xf5, 0xf2, - 0xac, 0x3f, 0xd5, 0xb0, 0x90, 0x8b, 0xdd, 0xea, 0xfe, 0x67, - 0xd0, 0x65, 0xb8, 0x7f, 0xaa, 0xe1, 0x61, 0xe, 0xbb, 0xbf, - 0x98, 0x51, 0x45, 0x15, 0xeb, 0x9e, 0x98, 0x51, 0x45, 0x14, - 00, 0x53, 0x26, 0x86, 0x3b, 0x98, 0x64, 0x86, 0x68, 0xd6, - 0x58, 0xa4, 0x52, 0xae, 0x8e, 0x32, 0xac, 0xf, 0x4, 0x11, - 0xdc, 0x56, 0x5f, 0x8a, 0xfc, 0x5b, 0xa3, 0x78, 0x1b, 0xc3, - 0xf7, 0xba, 0xe7, 0x88, 0x35, 0x3b, 0x5d, 0x1f, 0x48, 0xb2, - 0x8c, 0xcb, 0x71, 0x7b, 0x79, 0x20, 0x8e, 0x38, 0xd4, 0x77, - 0x24, 0xd7, 0xe7, 0xf7, 0xc6, 0xdf, 0xf8, 0x2c, 0x9f, 0x82, - 0xfc, 0x31, 0x3c, 0xd6, 0x1f, 0xd, 0xbc, 0x39, 0x73, 0xe3, - 0xb, 0x84, 0x3b, 0x7f, 0xb4, 0xb5, 0x16, 0x36, 0x96, 0x9f, - 0x55, 0x5c, 0x19, 0x1f, 0xf1, 0xb, 0x40, 0x1e, 0x85, 0xf1, - 0x93, 0xfe, 0x9, 0x37, 0xf0, 0x6b, 0xe2, 0x76, 0xa3, 0x73, - 0xa9, 0xe8, 0x9f, 0xda, 0x3e, 0x3, 0xd4, 0x6e, 0x1c, 0xc9, - 0x20, 0xd2, 0x1d, 0x5e, 0xd4, 0xb1, 0xeb, 0xfb, 0x97, 0x4, - 0x2f, 0xd1, 0xa, 0x8a, 0xf0, 0xd9, 0xbf, 0xe0, 0x88, 0xb0, - 0xfd, 0xb3, 0x31, 0x7c, 0x58, 0x90, 0x5a, 0x67, 0xa3, 0xe8, - 0xa0, 0xc9, 0x8f, 0xa8, 0x9b, 0x15, 0xe2, 0x1a, 0xa7, 0xfc, - 0x16, 0xf, 0xe3, 0xc5, 0xf4, 0xcc, 0xd6, 0xd0, 0x78, 0x57, - 0x4e, 0x8c, 0xfd, 0xd4, 0x87, 0x4c, 0x76, 0xc7, 0xe2, 0xf2, - 0xb6, 0x6b, 0xed, 0xf, 0xf8, 0x26, 0xc7, 0xed, 0x35, 0xf1, - 0x77, 0xf6, 0xa3, 0x93, 0xc5, 0xba, 0xcf, 0x8e, 0x2e, 0xb4, - 0xb6, 0xf0, 0xde, 0x91, 0xe5, 0x5a, 0x5b, 0x8b, 0x1b, 0x11, - 0xb, 0xcb, 0x74, 0xff, 00, 0x33, 0x65, 0xb2, 0x78, 0x54, - 0x3, 0x81, 0xfd, 0xf1, 0x4f, 0x52, 0x74, 0x65, 0xf, 0x87, - 0x1f, 0xf0, 0x47, 0x3f, 0x84, 0x5e, 0x16, 0xb8, 0x4b, 0x8f, - 0x13, 0xeb, 0x1a, 0xef, 0x8c, 0xa4, 0x52, 0xf, 0x91, 0x2c, - 0xab, 0x67, 0x6e, 0x48, 0xf5, 0x58, 0xfe, 0x7f, 0xfc, 0x7e, - 0xbe, 0xd5, 0xf0, 0x27, 0xc3, 0xef, 0xd, 0xfc, 0x31, 0xf0, - 0xe5, 0xb6, 0x81, 0xe1, 0x4d, 0x12, 0xcb, 0x40, 0xd1, 0xed, - 0x86, 0x23, 0xb4, 0xb1, 0x88, 0x46, 0x83, 0xd4, 0x9c, 0x75, - 0x27, 0xb9, 0x39, 0x26, 0xbc, 0x43, 0xc5, 0x7f, 0xf0, 0x50, - 0xef, 0x80, 0xbe, 0x6, 0xf1, 0x76, 0xaf, 0xe1, 0x8d, 0x7b, - 0xc6, 0xaf, 0xa6, 0x6b, 0x5a, 0x55, 0xd4, 0x96, 0x77, 0x96, - 0xd2, 0xe9, 0x77, 0x67, 0xcb, 0x95, 0x1b, 0x6b, 0xd, 0xc2, - 0x22, 0xa7, 0x91, 0xd4, 0x1c, 0x1a, 0xf5, 0xbf, 0x84, 0xbf, - 0x19, 0xbc, 0x1d, 0xf1, 0xcf, 0xc2, 0xed, 0xe2, 0x2f, 0x3, - 0xeb, 0x51, 0xeb, 0xba, 0x3a, 0xdc, 0x35, 0xab, 0x5c, 0xc7, - 0x1b, 0xc6, 0x4, 0x8a, 0x1, 0x65, 0xc3, 0xa8, 0x3c, 0x6, - 0x1d, 0xbb, 0xd2, 0x19, 0xda, 0xd7, 0x11, 0xf1, 0x93, 0xc4, - 0x43, 0xc3, 0xbe, 0x1, 0xd4, 0x59, 0x5f, 0x6c, 0xf7, 0x4b, - 0xf6, 0x58, 0xb9, 0xe7, 0x2f, 0xc1, 0xfc, 0x97, 0x71, 0xae, - 0xde, 0xbe, 0x76, 0xfd, 0xa4, 0x7c, 0x43, 0xf6, 0xcd, 0x7e, - 0xc3, 0x48, 0x8d, 0xf2, 0x96, 0x91, 0x19, 0x64, 0x3, 0xfb, - 0xef, 0xd3, 0xf2, 00, 0x7e, 0x75, 0xe2, 0xe7, 0x18, 0x9f, - 0xaa, 0xe0, 0xa7, 0x35, 0xbb, 0xd1, 0x7a, 0xbf, 0xea, 0xe7, - 0x2e, 0x2a, 0xa7, 0xb3, 0xa4, 0xdf, 0xc8, 0xf1, 0xda, 0x28, - 0xa2, 0xbf, 0x19, 0x3e, 0x54, 0x2a, 0xe6, 0x8f, 0xa6, 0x49, - 0xac, 0xea, 0xd6, 0x76, 0x10, 0x82, 0x65, 0xb9, 0x99, 0x22, - 0x5c, 0x76, 0xdc, 0x40, 0xcd, 0x53, 0xaf, 0x44, 0xf8, 0x18, - 0x9a, 0x64, 0x3e, 0x33, 0xfb, 0x7e, 0xa9, 0x79, 0x6d, 0x67, - 0x15, 0x9c, 0x4c, 0xf1, 0x1b, 0x89, 0x42, 0x6, 0x90, 0xfc, - 0xa3, 0x19, 0xeb, 0x80, 0x58, 0xfe, 0x55, 0xd7, 0x84, 0xa2, - 0xb1, 0x18, 0x88, 0x52, 0x6e, 0xc9, 0xbd, 0x7d, 0x3a, 0x9a, - 0x52, 0x8f, 0x3c, 0xd4, 0x59, 0xf4, 0xfe, 0x9f, 0x63, 0x16, - 0x99, 0x61, 0x6f, 0x69, 0x2, 0xec, 0x86, 0x8, 0xd6, 0x24, - 0x51, 0xd8, 0x1, 0x81, 0x56, 0x2b, 0x2a, 0x3f, 0x16, 0x68, - 0x93, 0x7d, 0xcd, 0x5e, 0xc5, 0xff, 00, 0xdd, 0xb9, 0x43, - 0xfd, 0x6a, 0x43, 0xe2, 0x4d, 0x25, 0x46, 0x4e, 0xa9, 0x66, - 0x7, 0xaf, 0x9e, 0x9f, 0xe3, 0x5f, 0xb7, 0xc6, 0xa5, 0x24, - 0xac, 0xa4, 0xad, 0xea, 0x7d, 0x72, 0x94, 0x6d, 0xa3, 0x34, - 0x69, 0x9, 0xa, 0x9, 0x27, 00, 0x72, 0x49, 0xae, 0x5b, - 0x55, 0xf8, 0xa5, 0xe1, 0x5d, 0x1a, 0x36, 0x69, 0xf5, 0xbb, - 0x57, 0x23, 0xf8, 0x20, 0x7f, 0x35, 0xbf, 0x25, 0xcd, 0x78, - 0xf7, 0xc4, 0x9f, 0x8f, 0x12, 0x6b, 0xf6, 0xb2, 0xe9, 0x9a, - 0xa, 0x49, 0x69, 0x67, 0x20, 0x29, 0x2d, 0xd4, 0x9c, 0x49, - 0x22, 0x9e, 0xa1, 0x47, 0xf0, 0x8f, 0x7e, 0xbf, 0x4a, 0xf3, - 0x71, 0x99, 0xb6, 0x13, 0x7, 0x6, 0xe5, 0x34, 0xdf, 0x64, - 0xee, 0xcc, 0x2a, 0xe2, 0x69, 0xd2, 0x57, 0x6e, 0xec, 0xe2, - 0x3e, 0x27, 0x78, 0x82, 0x2f, 0x13, 0xf8, 0xe7, 0x55, 0xbf, - 0x80, 0x83, 0x6e, 0xd2, 0x8, 0xe3, 0x61, 0xfc, 0x4a, 0x80, - 0x28, 0x3f, 0x8e, 0x33, 0xf8, 0xd7, 0x2d, 0x45, 0x15, 0xf8, - 0xed, 0x6a, 0xb2, 0xaf, 0x52, 0x55, 0x65, 0xbc, 0x9b, 0x7f, - 0x79, 0xf2, 0xd2, 0x93, 0x9c, 0x9c, 0x9f, 0x50, 0xa2, 0x8a, - 0xe9, 0x3c, 0x7, 0xe0, 0x6b, 0xdf, 0x1e, 0x6b, 0x69, 0x65, - 0x6a, 0xc, 0x70, 0x2f, 0xcd, 0x3d, 0xc1, 0x1f, 0x2c, 0x49, - 0xfe, 0x27, 0xb0, 0xa5, 0x4a, 0x94, 0xeb, 0xcd, 0x53, 0xa6, - 0xae, 0xd8, 0x46, 0x2e, 0x6d, 0x46, 0x3b, 0x9e, 0xab, 0xfb, - 0x36, 0xf8, 0x58, 0xa4, 0x57, 0xfa, 0xfc, 0xc8, 0x41, 0x7f, - 0xf4, 0x6b, 0x72, 0x47, 0x51, 0xc1, 0x72, 0x3f, 0x1c, 0xf, - 0xc0, 0xd7, 0xb9, 0x55, 0x3d, 0x23, 0x4a, 0xb6, 0xd0, 0xf4, - 0xcb, 0x6b, 0xb, 0x38, 0xc4, 0x56, 0xd6, 0xf1, 0x88, 0xd1, - 0x47, 0xa0, 0xfe, 0xb5, 0x72, 0xbf, 0x6a, 0xcb, 0xf0, 0x8b, - 0x3, 0x86, 0x85, 0x5, 0xba, 0xdf, 0xd7, 0xa9, 0xf5, 0x94, - 0x29, 0x7b, 0x1a, 0x6a, 0x1, 0x45, 0x14, 0x57, 0xa2, 0x6e, - 0x14, 0x51, 0x45, 00, 0x7c, 0xf7, 0xfb, 0x4a, 0xeb, 0xa6, - 0x7d, 0x67, 0x4c, 0xd2, 0x11, 0xbe, 0x4b, 0x78, 0x8d, 0xc3, - 0x8f, 0xf6, 0x98, 0xe0, 0x7e, 0x41, 0x4f, 0xe7, 0x5e, 0x31, - 0x5d, 0x3f, 0xc4, 0xcd, 0x77, 0xfe, 0x12, 0x3f, 0x1c, 0xea, - 0xf7, 0x81, 0xb7, 0x45, 0xe7, 0x18, 0xa3, 0x3f, 0xec, 0x27, - 0xca, 0x3f, 0x96, 0x7f, 0x1a, 0xe6, 0x2b, 0xf1, 0x3c, 0xcf, - 0x11, 0xf5, 0x9c, 0x65, 0x4a, 0x8b, 0x6b, 0xe9, 0xe8, 0xb4, - 0x47, 0xc9, 0x62, 0x27, 0xed, 0x2a, 0xca, 0x41, 0x45, 0x14, - 0x57, 0x96, 0x73, 0x9b, 0x3e, 0xd, 0xd0, 0xcf, 0x89, 0x3c, - 0x55, 0xa5, 0xe9, 0xb8, 0xca, 0xdc, 0x4e, 0xaa, 0xff, 00, - 0xee, 0xe, 0x5b, 0xf4, 0x6, 0xbe, 0xd1, 0x55, 0xa, 0xa0, - 0x1, 0x80, 0x6, 00, 0xaf, 0x9a, 0xff, 00, 0x67, 0x4d, - 0x18, 0xdf, 0x78, 0xce, 0x7b, 0xf6, 0x5c, 0xc7, 0x63, 0x6e, - 0xc4, 0x1f, 0xf6, 0xdf, 0xe5, 0x1f, 0xa6, 0xea, 0xfa, 0x56, - 0xbf, 0x50, 0xe1, 0x8a, 0x1e, 0xcf, 0xb, 0x2a, 0xaf, 0x79, - 0x3f, 0xc1, 0x7f, 0xc1, 0xb9, 0xf4, 0x19, 0x7c, 0x2d, 0x4d, - 0xcb, 0xb8, 0x51, 0x45, 0x15, 0xf6, 0x7, 0xaa, 0x14, 0x51, - 0x55, 0xb5, 0x1d, 0x42, 0xd, 0x2a, 0xc2, 0xe2, 0xf6, 0xe5, - 0xc4, 0x76, 0xf6, 0xf1, 0xb4, 0xb2, 0x39, 0xec, 0xa0, 0x64, - 0xd2, 0x6d, 0x45, 0x5d, 0x83, 0x76, 0xd4, 0xe3, 0x3e, 0x2d, - 0x7c, 0x47, 0x4f, 0x1, 0x68, 0xaa, 0xb6, 0xfb, 0x5f, 0x55, - 0xba, 0x5, 0x60, 0x43, 0xce, 0xc1, 0xdd, 0xc8, 0xf4, 0x1d, - 0xbd, 0x4d, 0x7c, 0xab, 0x73, 0x73, 0x2d, 0xe5, 0xc4, 0xb3, - 0xcf, 0x23, 0x4b, 0x34, 0xac, 0x5d, 0xe4, 0x73, 0x92, 0xc4, - 0xf5, 0x26, 0xb6, 0x3c, 0x6d, 0xe2, 0xa9, 0xfc, 0x65, 0xe2, - 0x4b, 0xcd, 0x52, 0x72, 0x42, 0xc8, 0xdb, 0x62, 0x8c, 0xff, - 00, 0xcb, 0x38, 0xc7, 0xdd, 0x5f, 0xcb, 0xf5, 0x26, 0xb0, - 0xab, 0xf1, 0xdc, 0xdf, 0x32, 0x96, 0x61, 0x5d, 0xb4, 0xfd, - 0xc5, 0xb2, 0xfd, 0x7e, 0x67, 0xcb, 0x62, 0x6b, 0xba, 0xf3, - 0xf2, 0x5b, 0x5, 0x14, 0x51, 0x5e, 0x11, 0xc6, 0x15, 0xa7, - 0xe1, 0xdf, 0xe, 0x6a, 0x1e, 0x2a, 0xd5, 0x22, 0xb0, 0xd3, - 0x6d, 0xda, 0x79, 0xdc, 0xf6, 0xfb, 0xa8, 0x3f, 0xbc, 0xc7, - 0xb0, 0xf7, 0xa8, 0x34, 0x7d, 0x22, 0xeb, 0x5e, 0xd4, 0xed, - 0xb4, 0xfb, 0x28, 0x8c, 0xd7, 0x57, 0xe, 0x11, 0x10, 0x7a, - 0xfb, 0xfb, 0xe, 0xb5, 0xf5, 0xc7, 0xc3, 0xff, 00, 0x1, - 0xd9, 0x78, 0xb, 0x45, 0x5b, 0x4b, 0x71, 0xbe, 0xe6, 0x40, - 0x1a, 0xe6, 0xe0, 0xf5, 0x91, 0xf1, 0xfa, 0x1, 0xd8, 0x57, - 0xbf, 0x94, 0xe5, 0x52, 0xcc, 0xaa, 0x5d, 0xe9, 0x5, 0xbb, - 0xfd, 0x17, 0xf5, 0xa1, 0xdb, 0x86, 0xc3, 0x3a, 0xf2, 0xd7, - 0x64, 0x71, 0xde, 0xf, 0xfd, 0x9f, 0x34, 0x6d, 0x26, 0x28, - 0xe6, 0xd6, 0x98, 0xea, 0xd7, 0x9d, 0x4c, 0x79, 0x2b, 0xa, - 0x9f, 0x4c, 0x75, 0x6f, 0xc7, 0xf2, 0xaf, 0x50, 0xb2, 0xd3, - 0xed, 0x74, 0xd8, 0x16, 0x1b, 0x4b, 0x68, 0xad, 0xa2, 0x51, - 0x80, 0x91, 0x20, 0x50, 0x3f, 0x1, 0x56, 0x28, 0xaf, 0xd5, - 0x30, 0xd8, 0x2c, 0x3e, 0x12, 0x3c, 0xb4, 0x60, 0x97, 0xe7, - 0xf7, 0x9f, 0x45, 0x4e, 0x94, 0x29, 0x2b, 0x41, 0x58, 0x2a, - 0x2b, 0x8b, 0x58, 0x6e, 0xe2, 0x68, 0xe7, 0x89, 0x26, 0x8d, - 0x86, 0xa, 0x48, 0xa1, 0x81, 0xfc, 0xd, 0x4b, 0x45, 0x76, - 0x34, 0x9e, 0x8c, 0xd8, 0xf2, 0xef, 0x1a, 0xfc, 0x5, 0xd1, - 0x75, 0xe8, 0x65, 0x9f, 0x49, 0x51, 0xa4, 0xea, 0x7, 0x2c, - 0x2, 0x67, 0xc9, 0x73, 0xe8, 0x57, 0xb7, 0xd4, 0x7e, 0x46, - 0xbe, 0x72, 0xd6, 0x74, 0x6b, 0xcf, 0xf, 0xea, 0x73, 0xd8, - 0x5f, 0xc0, 0xd6, 0xf7, 0x50, 0xb6, 0xd7, 0x46, 0xfe, 0x63, - 0xd4, 0x1f, 0x5a, 0xfb, 0x7a, 0xbc, 0x83, 0xf6, 0x87, 0xf0, - 0x7c, 0x5a, 0x87, 0x87, 0xd3, 0x5e, 0x89, 0x31, 0x77, 0x64, - 0x55, 0x25, 0x61, 0xfc, 0x51, 0x31, 0xc7, 0x3f, 0x42, 0x47, - 0xe6, 0x6b, 0xe2, 0xf3, 0xcc, 0x9a, 0x94, 0xa8, 0xcb, 0x13, - 0x87, 0x8f, 0x2c, 0xa3, 0xab, 0x4b, 0x66, 0xba, 0xfc, 0xcf, - 0x23, 0x19, 0x85, 0x8b, 0x8b, 0xa9, 0x5, 0x66, 0x8f, 0x9c, - 0xe8, 0xa2, 0x8a, 0xfc, 0xd0, 0xf0, 0x42, 0x8a, 0x28, 0xa0, - 0xf, 0xa8, 0x7e, 0x5, 0x78, 0xd2, 0x4f, 0x14, 0x78, 0x54, - 0xd9, 0xdd, 0x3e, 0xfb, 0xcd, 0x34, 0xac, 0x25, 0x89, 0xe5, - 0xe3, 0xc7, 0xc8, 0x4f, 0xbf, 0x4, 0x7e, 0x15, 0xe9, 0x55, - 0xf2, 0xd7, 0xc0, 0x5d, 0x71, 0xf4, 0x9f, 0x88, 0x16, 0xd6, - 0xfb, 0xb1, 0xd, 0xfa, 0x34, 0xe, 0x3b, 0x67, 0x1b, 0x94, - 0xfe, 0x63, 0x1f, 0x8d, 0x7d, 0x4b, 0x5f, 0xb0, 0x64, 0x58, - 0xb7, 0x8b, 0xc1, 0x45, 0xc9, 0xeb, 0x1d, 0x1f, 0xcb, 0x6f, - 0xc0, 0xfa, 0x7c, 0x1d, 0x47, 0x52, 0x92, 0xbe, 0xeb, 0x40, - 0xaf, 0x9c, 0x7e, 0x3f, 0xf8, 0xf1, 0xf5, 0x6d, 0x67, 0xfb, - 0x2, 0xd2, 0x42, 0x2c, 0xac, 0x88, 0x33, 0xed, 0x3c, 0x49, - 0x2f, 0xa7, 0xd1, 0x7f, 0x9e, 0x7d, 0x2b, 0xe8, 0x6d, 0x42, - 0xf1, 0x34, 0xfb, 0xb, 0x9b, 0xa9, 0xe, 0x12, 0x8, 0x9a, - 0x46, 0xfa, 00, 0x4f, 0xf4, 0xaf, 0x88, 0xef, 0xef, 0x24, - 0xd4, 0x6f, 0xae, 0x2e, 0xe6, 0x39, 0x96, 0x79, 0x1a, 0x57, - 0x3e, 0xec, 0x72, 0x7f, 0x9d, 0x79, 0x9c, 0x4d, 0x8b, 0x95, - 0x1a, 0x11, 0xa1, 0x7, 0xf1, 0xef, 0xe8, 0x8e, 0x7c, 0xc2, - 0xab, 0x8c, 0x14, 0x17, 0x52, 0xa, 0x28, 0xa2, 0xbf, 0x32, - 0x3c, 00, 0xa2, 0x8a, 0x96, 0xd2, 0xdd, 0xae, 0xee, 0xa1, - 0x81, 0x8, 0xf, 0x2b, 0xac, 0x60, 0x9e, 0x99, 0x27, 0x14, - 0xd2, 0x6d, 0xd9, 0x1, 0x7f, 0x40, 0xf0, 0xc6, 0xab, 0xe2, - 0x8b, 0xaf, 0xb3, 0xe9, 0x76, 0x33, 0x5e, 0x48, 0x3e, 0xf7, - 0x96, 0xbf, 0x2a, 0xff, 00, 0xbc, 0xdd, 0x7, 0xe3, 0x5e, - 0x8d, 0xa7, 0x7e, 0xcd, 0xfe, 0x20, 0xb9, 0x40, 0xd7, 0x57, - 0xb6, 0x56, 0x79, 0xfe, 0x1d, 0xcd, 0x23, 0xf, 0xc8, 0x63, - 0xf5, 0xaf, 0x7a, 0xf0, 0xb7, 0x86, 0xac, 0xfc, 0x27, 0xa1, - 0xda, 0xe9, 0xb6, 0x51, 0x85, 0x8e, 0x25, 0x1, 0x9b, 0x1c, - 0xc8, 0xdd, 0xd8, 0xfb, 0x93, 0x5a, 0xf5, 0xfa, 0x5e, 0x13, - 0x86, 0x70, 0xf0, 0x82, 0x78, 0x96, 0xe5, 0x2f, 0xb9, 0x7f, - 0x99, 0xef, 0xd2, 0xcb, 0xe0, 0x95, 0xea, 0x6a, 0xcf, 0x2, - 0x5f, 0xd9, 0x8e, 0xeb, 0x1f, 0x36, 0xbf, 0x8, 0x3e, 0xd6, - 0xc4, 0xff, 00, 0xec, 0xd4, 0xd7, 0xfd, 0x98, 0xef, 00, - 0xf9, 0x35, 0xe8, 0x9, 0xff, 00, 0x6a, 0xd9, 0x87, 0xfe, - 0xcd, 0x5e, 0xff, 00, 0x45, 0x7a, 0x5f, 0xea, 0xfe, 0x5d, - 0xff, 00, 0x3e, 0xff, 00, 0x17, 0xfe, 0x67, 0x47, 0xd4, - 0xa8, 0x76, 0xfc, 0x59, 0xf3, 0x8d, 0xd7, 0xec, 0xd7, 0xaf, - 0x44, 0x9, 0x83, 0x51, 0xb0, 0x9f, 0xd9, 0x8b, 0xa1, 0xff, - 00, 0xd0, 0x4d, 0x73, 0x3a, 0xb7, 0xc1, 0x7f, 0x17, 0x69, - 0x21, 0x99, 0xb4, 0xa6, 0xba, 0x41, 0xfc, 0x56, 0x8e, 0x24, - 0xfd, 0x7, 0x3f, 0xa5, 0x7d, 0x69, 0x45, 0x73, 0x54, 0xe1, - 0xac, 0xc, 0xd7, 0xb9, 0x78, 0xfc, 0xff, 00, 0xcc, 0xce, - 0x59, 0x7d, 0x17, 0xb5, 0xd1, 0xf0, 0xe5, 0xee, 0x9d, 0x77, - 0xa6, 0xc9, 0xe5, 0xdd, 0xda, 0xcd, 0x6b, 0x27, 0xf7, 0x66, - 0x8c, 0xa1, 0xfc, 0x8d, 0x7a, 0x5f, 0xec, 0xed, 0xa3, 0xb, - 0xff, 00, 0x1b, 0xcb, 0x78, 0xe3, 0x2b, 0x63, 0x6e, 0xce, - 0xa7, 0xd1, 0x9b, 0xe5, 0x1f, 0xa1, 0x6a, 0xfa, 0x3e, 0xff, - 00, 0x4d, 0xb4, 0xd5, 0x6d, 0xda, 0xb, 0xcb, 0x68, 0xae, - 0xa1, 0x61, 0x83, 0x1c, 0xc8, 0x18, 0x1f, 0xc0, 0xd6, 0x4f, - 0x86, 0xfc, 0xd, 0xa3, 0x78, 0x46, 0xea, 0xf6, 0x7d, 0x26, - 0xd3, 0xec, 0x8d, 0x77, 0xb7, 0xcc, 0x55, 0x62, 0x57, 0xe5, - 0xce, 0x30, 0xf, 0x4e, 0xa7, 0xa5, 0x71, 0x61, 0xb8, 0x71, - 0xe1, 0x71, 0x74, 0xeb, 0x29, 0xa9, 0x45, 0x3b, 0xeb, 0xa3, - 0xf2, 0xfc, 0x4c, 0x69, 0xe0, 0x1d, 0x3a, 0x91, 0x95, 0xee, - 0x91, 0xbf, 0x45, 0x14, 0x57, 0xdc, 0x1e, 0xc0, 0x51, 0x45, - 0x14, 00, 0x57, 0x13, 0xf1, 0x6e, 0xe3, 0xc8, 0xf0, 0xa4, - 0xe3, 0xfb, 0xc0, 0xd7, 0x6d, 0x5e, 0x6b, 0xf1, 0xca, 0xe3, - 0xc9, 0xf0, 0xbb, 0xc, 0xe3, 0x2a, 0xd5, 0xc5, 0x8d, 0x97, - 0x2e, 0x1e, 0x6f, 0xc8, 0xe7, 0xc4, 0x3b, 0x52, 0x93, 0xf2, - 0x3e, 0x20, 0xf1, 0x4, 0xbe, 0x65, 0xfd, 0xd3, 0x7a, 0xb9, - 0xaf, 0x9e, 0xfe, 0x34, 0xc4, 0x75, 0x29, 0x6d, 0xec, 0x14, - 0xe0, 0xdd, 0x4f, 0x1c, 00, 0xff, 00, 0xbc, 0xc1, 0x7f, - 0xad, 0x7b, 0xe6, 0xae, 0xfb, 0xa5, 0x98, 0xfa, 0xb1, 0xaf, - 0x12, 0xf1, 0x1d, 0xa7, 0xf6, 0xd7, 0xc5, 0x2f, 0x6, 0xe9, - 0xa3, 0xfe, 0x5e, 0xb5, 0xdb, 0x18, 0x78, 0xf7, 0x9d, 0x5, - 0x7c, 0x1e, 0x4d, 0x1b, 0xd4, 0x47, 0xe2, 0xf4, 0xd7, 0xb4, - 0xcd, 0x28, 0xaf, 0xef, 0x1f, 0xb2, 0xba, 0x6c, 0x1f, 0x65, - 0xd3, 0xed, 0x61, 0xff, 00, 0x9e, 0x71, 0x2a, 0x7e, 0x40, - 0xa, 0x2a, 0xcd, 0x15, 0xfa, 0x49, 0xfb, 0x80, 0x51, 0x45, - 0x14, 00, 0x51, 0x45, 0x21, 0x21, 0x41, 0x24, 0xe0, 0xe, - 0x49, 0xa0, 0xf, 0x9d, 0x7f, 0x6b, 0xdf, 0x1a, 0x2d, 0xb6, - 0x93, 0xa6, 0x78, 0x5e, 0x16, 0x6, 0x5b, 0xa7, 0xfb, 0x5d, - 0xc0, 0xd, 0xc8, 0x45, 0x38, 0x50, 0x47, 0xbb, 0x64, 0xff, - 00, 0xc0, 0x6b, 0xc3, 0xbe, 0x10, 0xf8, 0x59, 0xbc, 0x59, - 0xe3, 0xad, 0x36, 0xcf, 0x69, 0x68, 0x84, 0x81, 0xdf, 0x3, - 0xb0, 0xe6, 0x9d, 0xf1, 0xa3, 0xc6, 0x63, 0xc7, 0x7f, 0x11, - 0xf5, 0x5d, 0x46, 0x27, 0xdf, 0x67, 0x1b, 0x7d, 0x9a, 0xd8, - 0x83, 0x91, 0xe5, 0xa7, 00, 0x8f, 0x62, 0x77, 0x37, 0xe3, - 0x5e, 0xd3, 0xfb, 0x25, 0xf8, 0x3f, 0xca, 0xb7, 0xbe, 0xd7, - 0x66, 0x8c, 0x65, 0x8f, 0x95, 0x13, 0x11, 0xf9, 0xd7, 0xe7, - 0x55, 0x3f, 0xe1, 0x4f, 0x33, 0x51, 0x5a, 0xc6, 0xff, 00, - 0x82, 0xff, 00, 0x3f, 0xd4, 0xfc, 0xe6, 0x2f, 0xfb, 0x53, - 0x35, 0x72, 0xde, 0x29, 0xfe, 0xb, 0xfc, 0xcf, 0xa3, 0x60, - 0x85, 0x6d, 0xe1, 0x8e, 0x24, 0x18, 0x44, 0x50, 0xa0, 0x7b, - 0xa, 0x92, 0x8a, 0x2b, 0xf4, 0x5d, 0x8f, 0xd1, 0x82, 0x8a, - 0x28, 0xa0, 0x2, 0xb3, 0x3c, 0x4d, 0xe2, 0x4d, 0x33, 0xc1, - 0xde, 0x1e, 0xd4, 0x75, 0xcd, 0x66, 0xf2, 0x2d, 0x3f, 0x4a, - 0xd3, 0xe0, 0x7b, 0x9b, 0xab, 0xa9, 0x9b, 0x6a, 0x45, 0x1a, - 0x8c, 0xb3, 0x13, 0xf4, 0x15, 0xa7, 0x5f, 0x1, 0xff, 00, - 0xc1, 0x62, 0x3e, 0x30, 0xc9, 0xe0, 0xdf, 0x81, 0x1a, 0x3f, - 0x82, 0x2c, 0xa7, 0x31, 0xde, 0x78, 0xae, 0xfb, 0xfd, 0x20, - 0x2b, 0x60, 0xfd, 0x92, 0xc, 0x3b, 0xf, 0xa1, 0x73, 0x10, - 0xfa, 0x3, 0x40, 0x1f, 0x9e, 0x9f, 0xb6, 0x97, 0xed, 0x9b, - 0xe2, 0x4f, 0xda, 0xaf, 0xc7, 0x93, 0xb7, 0x9f, 0x36, 0x9b, - 0xe0, 0x8b, 0x9, 0x5e, 0x3d, 0x2b, 0x47, 0x8e, 0x42, 0x11, - 0x90, 0x37, 0x13, 0xcc, 0x3a, 0x34, 0x8c, 00, 0x3c, 0xfd, - 0xde, 0x83, 0xb9, 0x3a, 0x7f, 0x7, 0xbf, 0xe0, 0x9b, 0x1f, - 0x1c, 0x7e, 0x32, 0x68, 0x56, 0xfa, 0xdd, 0x9e, 0x81, 0x6b, - 0xe1, 0xdd, 0x1e, 0xe6, 0x31, 0x35, 0xbd, 0xd7, 0x88, 0x2e, - 0x7e, 0xcc, 0x66, 0x43, 0xc8, 0x65, 0x8c, 0x6, 0x7c, 0x63, - 0x9c, 0x95, 00, 0xd6, 0x6f, 0xfc, 0x13, 0xbb, 0xe1, 0xbe, - 0x87, 0xf1, 0x4b, 0xf6, 0xb4, 0xf0, 0x66, 0x93, 0xe2, 0x25, - 0x82, 0x7d, 0x32, 0xdc, 0xcd, 0xa8, 0x1b, 0x4b, 0x90, 0xa, - 0x5d, 0x3c, 0x31, 0x97, 0x48, 0xf0, 0x7a, 0xfc, 0xc0, 0x36, - 0x3b, 0x85, 0x35, 0xfb, 0x39, 0xfb, 0x62, 0x7c, 0x66, 0xb7, - 0xf8, 0x5, 0xfb, 0x39, 0x78, 0xc3, 0xc5, 0x2, 0x45, 0x86, - 0xf9, 0x2c, 0xcd, 0x96, 0x9a, 0x83, 0x8d, 0xd7, 0x52, 0x8d, - 0x91, 00, 0x3d, 0x89, 0xdd, 0xf4, 0x53, 0x4c, 0x84, 0xaf, - 0xab, 0x3f, 0x9e, 0x6f, 0x16, 0x78, 0x7d, 0xbc, 0x27, 0xe2, - 0x7d, 0x5b, 0x45, 0x7b, 0xcb, 0x6d, 0x41, 0xf4, 0xeb, 0xa9, - 0x2d, 0x5a, 0xea, 0xcd, 0x8b, 0x43, 0x29, 0x46, 0x2a, 0x59, - 0x9, 00, 0x95, 0x24, 0x70, 0x70, 0x2b, 0xf7, 0xe7, 0xf6, - 0x3, 0xf8, 0x22, 0x3e, 0x5, 0x7e, 0xcc, 0x3e, 0x14, 0xd2, - 0x67, 0x8b, 0xcb, 0xd6, 0x35, 0x38, 0xbf, 0xb6, 0x35, 0x1c, - 0x8f, 0x9b, 0xce, 0x9c, 0x6, 0xda, 0x7f, 0xdd, 0x4d, 0x89, - 0xff, 00, 0x1, 0xaf, 0xc5, 0x9f, 0xd8, 0xf3, 0xe0, 0xb4, - 0xbf, 0xb4, 0xf, 0xed, 0x17, 0xe1, 0xf, 0xa, 0x3a, 0x79, - 0xb6, 0x12, 0x5d, 0xb, 0xdd, 0x49, 0x98, 0x64, 0xb, 0x58, - 0xbf, 0x79, 0x2e, 0x7f, 0xde, 00, 0x27, 0xd5, 0xc5, 0x7e, - 0xd9, 0xfe, 0xd9, 0x7f, 0xb4, 0x8e, 0x8d, 0xfb, 0x30, 0x7c, - 0xf, 0xd5, 0xf5, 0x56, 0xbb, 0x82, 0x1f, 0x11, 0x5d, 0x5b, - 0x3d, 0x9e, 0x83, 0xa7, 0xe4, 0x6f, 0x9a, 0xe0, 0xae, 0xd5, - 0x60, 0xbd, 0x76, 0x26, 0x43, 0x31, 0xec, 0x6, 0x3a, 0x91, - 0x43, 0x5, 0xdc, 0xfc, 0x4a, 0xfd, 0xb3, 0x75, 0xfb, 0x5f, - 0x13, 0x7e, 0xd5, 0x7f, 0x14, 0xf5, 0x1b, 0x26, 0x57, 0xb5, - 0x93, 0x5e, 0xb9, 0x44, 0x74, 0xe8, 0xdb, 0x1b, 0x61, 0x3f, - 0x89, 0x52, 0x6b, 0xf5, 0x7f, 0xfe, 0x9, 0x19, 0xa1, 0x49, - 0xa4, 0xfe, 0xc8, 0x36, 0x77, 0x72, 0x2e, 0xdf, 0xed, 0x3d, - 0x66, 0xf6, 0xe5, 0x33, 0xdd, 0x43, 0x2c, 0x59, 0xfc, 0xe3, - 0x6a, 0xfc, 0x50, 0xd1, 0xf4, 0x9d, 0x57, 0xc7, 0x5e, 0x2a, - 0xb3, 0xd3, 0x6c, 0xd2, 0x4d, 0x43, 0x5a, 0xd5, 0xef, 0x12, - 0x8, 0x97, 0xab, 0xcd, 0x3c, 0xaf, 0x81, 0xf8, 0x96, 0x6a, - 0xfe, 0x91, 0x3e, 0x2, 0xfc, 0x2c, 0xb5, 0xf8, 0x27, 0xf0, - 0x73, 0xc2, 0x3e, 0x8, 0xb4, 0xda, 0x53, 0x46, 0xd3, 0xe3, - 0xb7, 0x92, 0x45, 0x1c, 0x49, 0x2e, 0x37, 0x4a, 0xff, 00, - 0xf0, 0x27, 0x2c, 0x7f, 0x1a, 0x18, 0x2d, 0xee, 0x77, 0x53, - 0xcc, 0x96, 0xd0, 0xc9, 0x34, 0x8c, 0x12, 0x38, 0xd4, 0xb3, - 0x31, 0xe8, 00, 0x19, 0x26, 0xbe, 0x2c, 0xf1, 0x46, 0xb5, - 0x27, 0x88, 0xfc, 0x45, 0xa8, 0xea, 0x52, 0x12, 0x4d, 0xcc, - 0xed, 0x20, 0xcf, 0x65, 0xcf, 0xca, 0x3f, 0x1, 0x81, 0x5f, - 0x4a, 0xfc, 0x73, 0xf1, 0x11, 0xd0, 0x7c, 0x3, 0x75, 0x1c, - 0x6f, 0xb2, 0xe2, 0xf9, 0x85, 0xaa, 0x63, 0xae, 0xf, 0x2f, - 0xff, 00, 0x8e, 0x82, 0x3f, 0x1a, 0xf9, 0x5a, 0xbf, 0x38, - 0xe2, 0x8c, 0x4f, 0x35, 0x48, 0x61, 0x97, 0x4d, 0x5f, 0xcf, - 0x6f, 0xeb, 0xcc, 0xf1, 0x33, 0x1a, 0x97, 0x92, 0xa6, 0xba, - 0x5, 0x14, 0x51, 0x5f, 0xa, 0x79, 0x1, 0x45, 0x14, 0x50, - 0x1, 0x46, 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa2, 0x80, 0xa, - 0x7c, 0x10, 0x49, 0x73, 0x32, 0xc5, 0xc, 0x6f, 0x2c, 0xae, - 0x70, 0xa8, 0x8a, 0x59, 0x89, 0xf6, 0x2, 0xb4, 0x3c, 0x3f, - 0xa9, 0xd9, 0xe9, 0x5a, 0x82, 0xcd, 0x7d, 0xa5, 0xc3, 0xab, - 0x5b, 0xff, 00, 0x14, 0x12, 0xc8, 0xc9, 0xf9, 0x15, 0x3d, - 0x7e, 0xb9, 0xaf, 0xa9, 0xbe, 0x1a, 0x5c, 0xf8, 0x5f, 0x58, - 0xd1, 0x56, 0xff, 00, 0xc3, 0xda, 0x7d, 0xbd, 0x90, 0xce, - 0xc9, 0x63, 0x58, 0x82, 0xc9, 0x1b, 0xe3, 0xee, 0xb1, 0xea, - 0x7e, 0xb9, 0xe6, 0xbd, 0xdc, 0xb3, 0x2c, 0x8e, 0x63, 0x2e, - 0x5f, 0x6a, 0xa2, 0xfb, 0x6b, 0x7f, 0xf2, 0xfc, 0x4e, 0xbc, - 0x3e, 0x1d, 0x57, 0x76, 0xe6, 0xb1, 0xe2, 0xbe, 0x9, 0xf8, - 0xd, 0xad, 0x78, 0x86, 0x54, 0x9b, 0x55, 0x56, 0xd1, 0xec, - 0x3a, 0x9f, 0x30, 0x7e, 0xf9, 0xc7, 0xa0, 0x5e, 0xdf, 0x53, - 0xf9, 0x1a, 0xfa, 0x1f, 0xc3, 0x5e, 0x18, 0xd3, 0xbc, 0x25, - 0xa5, 0xc7, 0x61, 0xa6, 0xc0, 0x20, 0x81, 0x79, 0x27, 0xab, - 0x39, 0xee, 0xcc, 0x7b, 0x9a, 0xd5, 0xa2, 0xbf, 0x4b, 0xc0, - 0x65, 0x58, 0x6c, 0xbd, 0x5e, 0x92, 0xbc, 0xbb, 0xbd, 0xff, - 00, 0xe0, 0x1f, 0x41, 0x47, 0xd, 0x4e, 0x87, 0xc3, 0xbf, - 0x70, 0xa2, 0x8a, 0x2b, 0xd8, 0x3a, 0x82, 0x8a, 0x28, 0xa0, - 0x2, 0xb1, 0x3c, 0x69, 0xac, 0xaf, 0x87, 0xbc, 0x27, 0xaa, - 0xea, 0x5, 0xb6, 0x98, 0x2d, 0xdc, 0xa7, 0xfb, 0xe4, 0x61, - 0x47, 0xe6, 0x45, 0x6d, 0xd7, 0x91, 0xfe, 0xd1, 0xfa, 0xd9, - 0xb2, 0xf0, 0xa5, 0x9e, 0x9c, 0x8d, 0x87, 0xbd, 0xb8, 0xcb, - 0xf, 0x54, 0x41, 0x93, 0xff, 00, 0x8f, 0x15, 0xaf, 0x3f, - 0x30, 0xaf, 0xf5, 0x5c, 0x2d, 0x4a, 0xdd, 0x97, 0xe3, 0xd3, - 0xf1, 0x30, 0xaf, 0x3f, 0x67, 0x4e, 0x52, 0x3e, 0x70, 0x24, - 0x93, 0x93, 0xc9, 0xa2, 0x8a, 0x2b, 0xf0, 0xf3, 0xe4, 0x42, - 0x8a, 0x29, 0x42, 0x96, 0x20, 0x1, 0x92, 0x78, 0x2, 0x80, - 0x3e, 0x93, 0xfd, 0x9c, 0xf4, 0x71, 0x65, 0xe0, 0xcb, 0x8b, - 0xe6, 0x5c, 0x49, 0x7b, 0x72, 0xc4, 0x1f, 0xf6, 0x13, 0xe5, - 0x1f, 0xae, 0xea, 0xf5, 0x7a, 0xc4, 0xf0, 0x5e, 0x88, 0x3c, - 0x39, 0xe1, 0x4d, 0x2f, 0x4e, 00, 0x6, 0x82, 0x5, 0xf, - 0x8e, 0xec, 0x79, 0x63, 0xf9, 0x93, 0x5b, 0x75, 0xfb, 0x8e, - 0x2, 0x87, 0xd5, 0xb0, 0xb4, 0xe9, 0x76, 0x4b, 0xef, 0xeb, - 0xf8, 0x9f, 0x5d, 0x42, 0x1e, 0xce, 0x9c, 0x62, 0x14, 0x51, - 0x45, 0x77, 0x9b, 0x85, 0x79, 0x1f, 0xed, 0x15, 0xe2, 0x86, - 0xd3, 0x3c, 0x35, 0x6d, 0xa4, 0x42, 0xfb, 0x65, 0xd4, 0x1f, - 0x32, 0x1, 0xd7, 0xca, 0x5c, 0x13, 0xf9, 0x9c, 0x7e, 0x46, - 0xbd, 0x72, 0xbe, 0x51, 0xf8, 0xdd, 0xae, 0xb6, 0xb7, 0xf1, - 0xb, 0x50, 0x4d, 0xdb, 0xa1, 0xb3, 0xc5, 0xac, 0x63, 0x3d, - 0x36, 0x8f, 0x9b, 0xff, 00, 0x1e, 0x2d, 0x5f, 0x37, 0x9f, - 0xe2, 0x9e, 0x1b, 0x5, 0x25, 0x1d, 0xe5, 0xa7, 0xf9, 0xfe, - 0x7, 0x6, 0x36, 0xa7, 0x25, 0x16, 0x97, 0x5d, 0xe, 0xa, - 0x8a, 0x28, 0xaf, 0xc8, 0xcf, 0x99, 0xa, 0x28, 0xa9, 0x2d, - 0xe0, 0x7b, 0xab, 0x88, 0xa1, 0x88, 0x6e, 0x92, 0x46, 0x8, - 0xab, 0xea, 0x49, 0xc0, 0x14, 0xd2, 0xbe, 0x88, 0xf, 0x79, - 0xfd, 0x9c, 0xfc, 0x18, 0xb1, 0x5a, 0x5c, 0x78, 0x92, 0xe1, - 0x33, 0x24, 0xa5, 0xa0, 0xb6, 0xc8, 0xe8, 0xa3, 0xef, 0x30, - 0xfa, 0x9e, 0x3f, 0x3, 0xeb, 0x5e, 0xdd, 0x59, 0xbe, 0x1b, - 0xd1, 0x62, 0xf0, 0xee, 0x83, 0x61, 0xa6, 0xc2, 00, 0x4b, - 0x68, 0x56, 0x3c, 0x8e, 0xe4, 0xe, 0x4f, 0xe2, 0x72, 0x7f, - 0x1a, 0xd2, 0xaf, 0xdb, 0xb2, 0xfc, 0x2a, 0xc1, 0x61, 0xa1, - 0x45, 0x6e, 0x96, 0xbe, 0xbd, 0x4f, 0xae, 0xa1, 0x4d, 0x52, - 0xa6, 0xa2, 0x14, 0x51, 0x45, 0x7a, 0x26, 0xe1, 0x45, 0x14, - 0x50, 0x1, 0x59, 0x1e, 0x2e, 0xd3, 0xd7, 0x56, 0xf0, 0xb6, - 0xad, 0x66, 0xe3, 0x2b, 0x35, 0xac, 0x8b, 0xf8, 0xed, 0x38, - 0xfd, 0x6b, 0x5e, 0xaa, 0x6a, 0xf2, 0x88, 0x34, 0x9b, 0xd9, - 0x1b, 0xee, 0xa4, 0xe, 0xc7, 0xf0, 0x53, 0x59, 0xd5, 0x4a, - 0x50, 0x92, 0x7b, 0x59, 0x93, 0x25, 0x78, 0xb4, 0xcf, 0x87, - 0xe8, 0xa2, 0x8a, 0xfc, 0xc, 0xf8, 0xc0, 0xa2, 0x8a, 0x28, - 0x3, 0x7b, 0xc0, 0x57, 0x26, 0xd3, 0xc6, 0xda, 0x14, 0xa0, - 0xe3, 0x17, 0xb0, 0x8f, 0xc0, 0xb8, 0x7, 0xf9, 0xd7, 0xd9, - 0xb5, 0xf1, 0x67, 0x83, 0x62, 0x33, 0x78, 0xbb, 0x44, 0x45, - 0xea, 0xd7, 0xb0, 0x8f, 0xfc, 0x7c, 0x57, 0xda, 0x75, 0xfa, - 0x47, 0xa, 0xb7, 0xec, 0x6a, 0xae, 0x97, 0x5f, 0x91, 0xee, - 0xe5, 0xbf, 0xc, 0x8c, 0x3f, 0x1c, 0x86, 0x6f, 0x5, 0xeb, - 0xa1, 0x33, 0xbb, 0xec, 0x33, 0x63, 0x1f, 0xee, 0x1a, 0xf8, - 0xc2, 0xbe, 0xe6, 0xb9, 0xb7, 0x4b, 0xbb, 0x69, 0x60, 0x90, - 0x6e, 0x8e, 0x54, 0x28, 0xc0, 0xf7, 0x4, 0x60, 0xd7, 0xc5, - 0x9e, 0x25, 0xd0, 0xa7, 0xf0, 0xd6, 0xbd, 0x7d, 0xa6, 0x5c, - 0x29, 0x59, 0x2d, 0xe5, 0x28, 0x9, 0x1f, 0x79, 0x7f, 0x85, - 0xbf, 0x11, 0x83, 0xf8, 0xd7, 0x37, 0x15, 0x52, 0x95, 0xe9, - 0x55, 0xe9, 0xaa, 0x23, 0x32, 0x8b, 0xbc, 0x64, 0x66, 0x51, - 0x45, 0x15, 0xf0, 0x7, 0x8a, 0x14, 0xaa, 0xc5, 0x18, 0x32, - 0x92, 0x18, 0x1c, 0x82, 0x3b, 0x52, 0x51, 0x40, 0x1f, 0x49, - 0xfc, 0x39, 0xf8, 0xe5, 0xa6, 0x6b, 0x16, 0x30, 0x59, 0x6b, - 0x93, 0xae, 0x9f, 0xa9, 0x46, 0xa1, 0xc, 0xf2, 0x9c, 0x45, - 0x37, 0x6c, 0xe7, 0xf8, 0x4f, 0xa8, 0x3f, 0x85, 0x7a, 0xac, - 0x53, 0x47, 0x3c, 0x6b, 0x24, 0x4e, 0xb2, 0x46, 0xc3, 0x21, - 0x90, 0xe4, 0x11, 0xf5, 0xaf, 0x85, 0xeb, 0x63, 0x43, 0xf1, - 0x86, 0xb7, 0xe1, 0xa3, 0xff, 00, 0x12, 0xcd, 0x4e, 0xe6, - 0xd1, 0x7f, 0xe7, 0x9a, 0x3e, 0x50, 0xff, 00, 0xc0, 0x4f, - 0x1f, 0xa5, 0x7d, 0xbe, 0xb, 0x89, 0xaa, 0x52, 0x8a, 0x86, - 0x26, 0x3c, 0xd6, 0xea, 0xb7, 0xff, 00, 0x83, 0xf8, 0x1e, - 0xbd, 0x2c, 0xc2, 0x51, 0x56, 0xa8, 0xae, 0x7d, 0xa7, 0x45, - 0x7c, 0xdf, 0xa0, 0xfe, 0xd1, 0xda, 0xed, 0x8e, 0xd4, 0xd4, - 0xed, 0x2d, 0xf5, 0x38, 0xc7, 0x56, 0x5f, 0xdd, 0x49, 0xf9, - 0x8c, 0x8f, 0xd2, 0xbb, 0xed, 0x13, 0xf6, 0x87, 0xf0, 0xd6, - 0xa4, 0xc1, 0x2f, 0x52, 0xe7, 0x4b, 0x73, 0xfc, 0x52, 0xa6, - 0xf4, 0xfc, 0xd7, 0x27, 0xf3, 0x15, 0xf5, 0x74, 0x33, 0xcc, - 0x5, 0x7f, 0xf9, 0x79, 0xca, 0xfc, 0xf4, 0xff, 00, 0x81, - 0xf8, 0x9e, 0x8c, 0x31, 0x94, 0x67, 0xd6, 0xde, 0xa7, 0xa9, - 0x51, 0x59, 0xba, 0x3f, 0x89, 0x34, 0xaf, 0x10, 0x45, 0xe6, - 0x69, 0xba, 0x85, 0xbd, 0xea, 0xf7, 0xf2, 0x64, 0xc, 0x47, - 0xd4, 0x75, 0x15, 0xa5, 0x5e, 0xe4, 0x65, 0x19, 0xae, 0x68, - 0xbb, 0xa3, 0xb1, 0x34, 0xd5, 0xd0, 0x51, 0x45, 0x15, 0x43, - 0xa, 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa2, 0x80, 0xa, 0xf2, - 0xf, 0xda, 0x1e, 0xeb, 0xca, 0xd0, 0x36, 0xe7, 0xfe, 0x59, - 0x9a, 0xf5, 0xfa, 0xf0, 0x6f, 0xda, 0x5e, 0xf8, 0x47, 0x61, - 0xe5, 0x67, 0x91, 0x1d, 0x79, 0x19, 0xb4, 0xb9, 0x30, 0x75, - 0x1f, 0x91, 0xc1, 0x8e, 0x97, 0x2e, 0x1e, 0x4c, 0xf9, 0x7, - 0x53, 0x6f, 0x95, 0xcf, 0xb9, 0xaf, 0x34, 0xf0, 0x2d, 0x92, - 0xeb, 0x9f, 0xb5, 0x7, 0xc3, 0x3b, 0x26, 0x1b, 0x81, 0xd7, - 0xad, 0xe4, 0xc7, 0xfb, 0x84, 0xbf, 0xfe, 0xcb, 0x5e, 0x8d, - 0xaa, 0x36, 0x22, 0x63, 0xec, 0x6b, 0x94, 0xfd, 0x9b, 0xec, - 0xff, 00, 0xb6, 0x3f, 0x6c, 0xbf, 0x87, 0xf1, 0xe3, 0x70, - 0x86, 0x7b, 0x9b, 0x93, 0xed, 0xb2, 0xda, 0x53, 0x9f, 0xcf, - 0x15, 0xf2, 0xd9, 0x24, 0x7d, 0xf3, 0xf2, 0x3c, 0xb1, 0x7b, - 0x4c, 0xe2, 0x97, 0x95, 0xd9, 0xfa, 0xcf, 0x45, 0x14, 0x57, - 0xe8, 0x7, 0xed, 0x61, 0x45, 0x14, 0x50, 0x1, 0x5c, 0x3f, - 0xc6, 0x8f, 0x18, 0xf, 0x4, 0x7c, 0x37, 0xd6, 0x35, 0x5, - 0x62, 0xb7, 0xf, 0x17, 0xd9, 0xad, 0xf6, 0xf5, 0xf3, 0x1f, - 0xe5, 0x53, 0xf8, 0x64, 0x9f, 0xc2, 0xbb, 0x8a, 0xf9, 0x5f, - 0xf6, 0xbf, 0xf1, 0x87, 0xda, 0xb5, 0x6d, 0x2b, 0xc3, 0x31, - 0x1f, 0x92, 0xd9, 0x3e, 0xd9, 0x39, 0xe7, 0xef, 0x36, 0x42, - 0x8f, 0xcb, 0x27, 0xf1, 0xaf, 0x37, 0x31, 0xc4, 0x7d, 0x5b, - 0xd, 0x39, 0xf5, 0xd9, 0x7a, 0xb3, 0xca, 0xcd, 0x31, 0x3f, - 0x54, 0xc2, 0x4e, 0xa2, 0xdf, 0x65, 0xea, 0xff, 00, 0xab, - 0x9f, 0x3e, 0x58, 0x5a, 0xbd, 0xe5, 0xd4, 0x30, 0x46, 0x37, - 0x3b, 0xb0, 0x50, 0x7, 0xa9, 0xaf, 0xd0, 0x3f, 0x86, 0x9e, - 0x19, 0x8f, 0xc2, 0x7e, 0xc, 0xd3, 0x6c, 0x11, 0x2, 0xb8, - 0x88, 0x34, 0x9e, 0xec, 0x47, 0x35, 0xf2, 0x27, 0xec, 0xf7, - 0xe1, 0x13, 0xe2, 0x9f, 0x1f, 0x5a, 0x97, 0x5c, 0xdb, 0xdb, - 0x7e, 0xf5, 0xcf, 0xd3, 0xa5, 0x7d, 0xc4, 0xa0, 0x28, 00, - 0x70, 0x7, 0x15, 0xf3, 0xdc, 0x3d, 0x87, 0xd2, 0x78, 0x87, - 0xe8, 0xbf, 0x53, 0xc2, 0xe1, 0xcc, 0x37, 0x25, 0x39, 0x57, - 0x7d, 0x74, 0x42, 0xd1, 0x45, 0x15, 0xf6, 0x67, 0xd9, 0x5, - 0x14, 0x51, 0x40, 0x5, 0x7e, 0x55, 0x7f, 0xc1, 0x6d, 0x3c, - 0x2b, 0xa8, 0x36, 0xa3, 0xf0, 0xc7, 0xc4, 0x81, 0x19, 0xb4, - 0xa5, 0x8a, 0xef, 0x4f, 0x67, 0x1d, 0x12, 0x62, 0x52, 0x40, - 0xf, 0xd5, 0x43, 0x7f, 0xdf, 0x26, 0xbf, 0x52, 0xb5, 0x4d, - 0x5e, 0xc7, 0x43, 0xb3, 0x6b, 0xbd, 0x46, 0xf6, 0xde, 0xc2, - 0xd5, 0x48, 0x56, 0x9e, 0xea, 0x55, 0x8d, 0x1, 0x27, 00, - 0x16, 0x62, 0x7, 0x24, 0x81, 0x5e, 0x73, 0xf1, 0xc7, 0xe1, - 0xf, 0x82, 0xff, 00, 0x69, 0xef, 0x86, 0x1a, 0x8f, 0x83, - 0x35, 0xeb, 0x98, 0xee, 0xf4, 0xeb, 0xbd, 0xb2, 0xc5, 0x73, - 0x63, 0x3a, 0x99, 0x6d, 0xa6, 0x5e, 0x52, 0x54, 0x23, 0x3c, - 0x83, 0xdb, 0xa1, 0x4, 0x83, 0xc1, 0xa0, 0x4f, 0x53, 0xf9, - 0xcd, 0xf0, 0xaf, 0x8a, 0xb5, 0x8f, 0x3, 0xf8, 0x8b, 0x4f, - 0xd7, 0xb4, 0xd, 0x46, 0xe3, 0x49, 0xd6, 0x74, 0xf9, 0x44, - 0xf6, 0xb7, 0xb6, 0xaf, 0xb6, 0x48, 0x9c, 0x74, 0x20, 0xfe, - 0x9e, 0xe0, 0x90, 0x6b, 0xd8, 0x7e, 0x39, 0x7e, 0xda, 0xdf, - 0x14, 0xbf, 0x68, 0xbf, 0x1, 0x68, 0xfe, 0x13, 0xf1, 0xce, - 0xa9, 0x69, 0xa9, 0x58, 0x69, 0x97, 0x42, 0xf1, 0x27, 0x86, - 0xd1, 0x60, 0x9a, 0x69, 0x2, 0x32, 0x3, 0x29, 0x5c, 0x2b, - 0x60, 0x33, 0x74, 0x51, 0xc9, 0xaf, 0x44, 0xf8, 0xd9, 0xff, - 00, 0x4, 0xbf, 0xf8, 0xd9, 0xf0, 0xa2, 0xfa, 0xea, 0x5d, - 0x27, 0x44, 0x1e, 0x39, 0xd0, 0x91, 0xd8, 0xc5, 0x7d, 0xa1, - 0xb6, 0xf9, 0x76, 0x67, 0x82, 0xf0, 0x1c, 0x38, 0x6c, 0x76, - 0x50, 0xc3, 0xde, 0xbe, 0x79, 0xb8, 0xf8, 0x25, 0xf1, 0x12, - 0xd2, 0xe4, 0xdb, 0xcd, 0xe0, 0x3f, 0x12, 0xc5, 0x38, 0x38, - 0xf2, 0xdb, 0x48, 0xb8, 0xd, 0x9f, 0xa6, 0xca, 0xa2, 0x35, - 0x3a, 0x5f, 0xd9, 0xdb, 0xf6, 0x95, 0xf1, 0x47, 0xec, 0xc5, - 0xe2, 0xd, 0x5f, 0x5f, 0xf0, 0x7d, 0xa6, 0x96, 0xfa, 0xe5, - 0xfd, 0x9f, 0xd8, 0x56, 0xf7, 0x51, 0xb7, 0x33, 0x1b, 0x68, - 0xcb, 0x6, 0x6f, 0x2c, 0x6e, 0x3, 0x2c, 0x55, 0x73, 0x9c, - 0xfd, 0xd1, 0x5c, 0xdf, 0xc5, 0x9f, 0x8d, 0x1e, 0x35, 0xf8, - 0xe5, 0xe2, 0x63, 0xaf, 0xf8, 0xe3, 0xc4, 0x37, 0x7e, 0x20, - 0xd4, 0x82, 0x94, 0x8d, 0xee, 0x8, 0x9, 0xa, 0x67, 0x3b, - 0x23, 0x45, 0x1, 0x51, 0x7d, 0x94, 0xa, 0xf4, 0xdf, 0x86, - 0x7f, 0xb0, 0x3f, 0xc7, 0x6f, 0x8a, 0x97, 0x31, 0x2e, 0x99, - 0xe0, 0xd, 0x47, 0x4c, 0xb5, 0x7e, 0xb7, 0xba, 0xda, 0xfd, - 0x86, 0x15, 0x1e, 0xa7, 0xcc, 0xc3, 0x1f, 0xc1, 0x4d, 0x7e, - 0x8b, 0xfe, 0xc9, 0xff, 00, 0xf0, 0x4a, 0xf, 0xb, 0xfc, - 0x27, 0xbd, 0xb2, 0xf1, 0x37, 0xc4, 0xbb, 0xb8, 0x3c, 0x65, - 0xe2, 0x6b, 0x79, 0x16, 0x6b, 0x7d, 0x3e, 0x10, 0x46, 0x9d, - 0x6a, 0xe3, 0x90, 0x48, 0x60, 0xc, 0xcc, 0xf, 0x76, 0x1, - 0x78, 0x1f, 0x2f, 0x7a, 0x2, 0xcc, 0xf3, 0xaf, 0xf8, 0x25, - 0x8f, 0xec, 0x3b, 0x79, 0xa4, 0xdd, 0xda, 0xfc, 0x65, 0xf1, - 0xde, 0x9b, 0xf6, 0x79, 0xc, 0x64, 0xf8, 0x73, 0x4d, 0xba, - 0x8c, 0x89, 0x13, 0x3c, 0x1b, 0xb7, 0x53, 0xd3, 0x23, 0x21, - 0x7, 0x5e, 0x4b, 0x7a, 0x57, 0xea, 0x25, 0x22, 0xa8, 0x45, - 0xa, 0xa0, 0x2a, 0x81, 0x80, 00, 0xc0, 0x2, 0xa2, 0xbc, - 0xbb, 0x8e, 0xc6, 0xd2, 0x6b, 0x99, 0x9b, 0x64, 0x30, 0xa1, - 0x91, 0xd8, 0xf6, 00, 0x64, 0xd4, 0xb7, 0x6d, 0x59, 0x7b, - 0x23, 0xe7, 0x5f, 0xda, 0x33, 0xc4, 0x23, 0x50, 0xf1, 0x4d, - 0xae, 0x97, 0x1b, 0xe6, 0x3b, 0x8, 0xb2, 0xe0, 0x1e, 0x3c, - 0xc7, 0xe4, 0xff, 00, 0xe3, 0xa1, 0x7f, 0x3a, 0xf2, 0x4a, - 0xbf, 0xaf, 0x6a, 0xb2, 0x6b, 0xba, 0xd5, 0xf6, 0xa1, 0x29, - 0x26, 0x4b, 0x99, 0x9e, 0x53, 0x9e, 0xd9, 0x39, 0x3, 0xf0, - 0x1c, 0x55, 0xa, 0xfc, 0x3b, 0x1f, 0x89, 0x78, 0xbc, 0x4c, - 0xeb, 0x77, 0x7f, 0x87, 0x4f, 0xc0, 0xf9, 0x1a, 0xd5, 0x3d, - 0xad, 0x47, 0x3e, 0xe1, 0x45, 0x14, 0x57, 0x1, 0x89, 0xdd, - 0x7c, 0x28, 0xf8, 0x72, 0x9f, 0x10, 0xf5, 0x4b, 0xc8, 0xae, - 0x66, 0x96, 0xda, 0xce, 0xda, 0x20, 0xcd, 0x24, 0x20, 0x67, - 0x79, 0x3f, 0x28, 0xe4, 0x63, 0xb3, 0x7e, 0x55, 0xe8, 0xf3, - 0x7e, 0xcc, 0x96, 0x4, 0x1f, 0x27, 0x5c, 0xb9, 0x43, 0xdb, - 0x7c, 0x2a, 0xdf, 0xc8, 0x8a, 0xde, 0xf8, 0x1, 0xe1, 0xd6, - 0xd1, 0xbc, 0xe, 0x2e, 0xe5, 0x5d, 0xb3, 0x6a, 0x32, 0x99, - 0xf9, 0xeb, 0xb0, 0x70, 0xbf, 0xc8, 0x9f, 0xc6, 0xbd, 0x32, - 0xbf, 0x50, 0xcb, 0x32, 0x5c, 0x2c, 0xf0, 0x70, 0x96, 0x22, - 0x9d, 0xe4, 0xf5, 0xeb, 0xd7, 0x6f, 0xc0, 0xfa, 0x1c, 0x3e, - 0x12, 0x9b, 0xa4, 0x9c, 0xd6, 0xac, 0xf9, 0xa7, 0xc5, 0x1f, - 0xb3, 0xd6, 0xb7, 0xa2, 0x59, 0xc9, 0x75, 0xa7, 0xdc, 0xc7, - 0xab, 0xa4, 0x63, 0x2d, 0x14, 0x68, 0x52, 0x5c, 0x7b, 0x2e, - 0x48, 0x3f, 0x9e, 0x6b, 0xca, 0xd9, 0x4a, 0xb1, 0x56, 0x4, - 0x10, 0x70, 0x41, 0xea, 0x2b, 0xee, 0xaa, 0xf9, 0x77, 0xe3, - 0xd7, 0x85, 0xe2, 0xf0, 0xff, 00, 0x8d, 0x3e, 0xd3, 0x6c, - 0x81, 0x20, 0xd4, 0x63, 0xfb, 0x41, 0x51, 0xd0, 0x49, 0x92, - 0x1f, 0x1f, 0xa1, 0xfc, 0x6b, 0xc5, 0xcf, 0x32, 0x5a, 0x58, - 0x3a, 0x4b, 0x11, 0x87, 0xd1, 0x6c, 0xd6, 0xff, 00, 0x33, - 0x93, 0x17, 0x84, 0x8d, 0x28, 0xf3, 0xc3, 0x63, 0xcd, 0xa8, - 0xa2, 0x8a, 0xf8, 0x93, 0xc9, 0xa, 0xf5, 0xdf, 0xd9, 0xbf, - 0x5b, 0x7b, 0x5f, 0x14, 0xde, 0xe9, 0x85, 0xbf, 0x73, 0x77, - 0x6f, 0xe6, 0x5, 0xff, 00, 0x6d, 0xf, 0x1f, 0xa1, 0x6a, - 0xf2, 0x2a, 0xed, 0xbe, 0xc, 0x5d, 0x7d, 0x93, 0xe2, 0x5e, - 0x8a, 0x73, 0x80, 0xee, 0xf1, 0x9f, 0xc5, 0x18, 0xf, 0xd7, - 0x15, 0xea, 0x65, 0x75, 0x5d, 0x1c, 0x6d, 0x29, 0x2e, 0xe9, - 0x7d, 0xfa, 0x1d, 0x18, 0x79, 0x72, 0xd6, 0x8b, 0xf3, 0x3e, - 0xb5, 0xa2, 0x8a, 0x2b, 0xf6, 0xc3, 0xeb, 0x42, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0xbe, 0x61, 0xfd, 0xa0, - 0xb5, 0xef, 0xed, 0x5f, 0x1d, 0x1b, 0x35, 0x6c, 0xc5, 0xa7, - 0xc2, 0xb1, 0x63, 0xfd, 0xb6, 0xf9, 0x9b, 0xf9, 0xa8, 0xfc, - 0x2b, 0xe9, 0xa9, 0xe7, 0x4b, 0x68, 0x24, 0x9a, 0x43, 0xb6, - 0x38, 0xd4, 0xbb, 0x13, 0xd8, 0x1, 0x93, 0x5f, 0x14, 0xf8, - 0x8f, 0x57, 0x6d, 0x7b, 0x5e, 0xd4, 0x35, 0x17, 0xce, 0x6e, - 0xa7, 0x79, 0x70, 0x7b, 0x2, 0x78, 0x1f, 0x96, 0x2b, 0xe3, - 0x38, 0x9f, 0x11, 0xc9, 0x86, 0x85, 0x15, 0xf6, 0x9f, 0xe0, - 0xbf, 0xe0, 0xd8, 0xf2, 0x73, 0x19, 0xda, 0xa, 0x1d, 0xcc, - 0xea, 0x28, 0xa2, 0xbf, 0x32, 0x3c, 00, 0xae, 0x8f, 0xe1, - 0xd6, 0x8c, 0x75, 0xff, 00, 0x1b, 0xe8, 0xd6, 0x7b, 0x77, - 0x23, 0x5c, 0x2b, 0xb8, 0xc7, 0xf0, 0x2f, 0xcc, 0xdf, 0xa0, - 0x35, 0xce, 0x57, 0xb0, 0x7e, 0xcd, 0x9a, 0x3f, 0xda, 0x7c, - 0x49, 0xa9, 0x6a, 0x2c, 0x32, 0xb6, 0xb6, 0xe2, 0x35, 0x3f, - 0xed, 0x39, 0xff, 00, 0x5, 0x3f, 0x9d, 0x7a, 0x59, 0x6d, - 0xf, 0xac, 0xe3, 0x29, 0xd2, 0xee, 0xff, 00, 0x5, 0xab, - 0x37, 0xa1, 0xf, 0x69, 0x56, 0x31, 0x3e, 0x8b, 0xa2, 0x8a, - 0x2b, 0xf6, 0xe3, 0xeb, 0x82, 0x8a, 0x28, 0xa0, 0x8, 0xee, - 0x26, 0x5b, 0x6b, 0x79, 0x65, 0x73, 0x84, 0x8d, 0x4b, 0x13, - 0xec, 0x6, 0x6b, 0xe2, 0x2d, 0x52, 0xf9, 0xf5, 0x3d, 0x4e, - 0xee, 0xf2, 0x43, 0x97, 0xb8, 0x95, 0xe5, 0x6f, 0xab, 0x12, - 0x7f, 0xad, 0x7d, 0x89, 0xe3, 0xa9, 0xda, 0xd7, 0xc1, 0x5a, - 0xf4, 0xa8, 0x70, 0xc9, 0x63, 0x31, 0x7, 0xdf, 0x61, 0xaf, - 0x8c, 0x6b, 0xf3, 0xce, 0x2a, 0xa8, 0xf9, 0xa9, 0x53, 0xf5, - 0x7f, 0x91, 0xe1, 0xe6, 0x52, 0xd6, 0x31, 0xa, 0x28, 0xa2, - 0xbe, 0x8, 0xf1, 0x82, 0xba, 0xbf, 0x85, 0x9a, 0x60, 0xd5, - 0xbe, 0x20, 0xe8, 0x70, 0x30, 0xca, 0x2d, 0xc0, 0x95, 0xbe, - 0x88, 0xb, 0x7f, 0xec, 0xb5, 0xca, 0x57, 0xa2, 0x7c, 0x4, - 0x50, 0x7e, 0x24, 0xd9, 0x13, 0xd4, 0x45, 0x29, 0x1f, 0xf7, - 0xc1, 0xaf, 0x43, 0x2f, 0x82, 0xa9, 0x8b, 0xa5, 0x17, 0xd6, - 0x4b, 0xf3, 0x36, 0xa2, 0xb9, 0xaa, 0xc5, 0x79, 0xa3, 0xea, - 0x7a, 0x28, 0xa2, 0xbf, 0x70, 0x3e, 0xbc, 0x28, 0xa2, 0x8a, - 00, 0x28, 0xa2, 0x8a, 00, 0x2b, 0x95, 0xf8, 0xa3, 0xaa, - 0xd, 0x1f, 0xe1, 0xfe, 0xb9, 0x71, 0x9c, 0x31, 0xb7, 0x68, - 0x97, 0xfd, 0xe7, 0xf9, 0x47, 0xf3, 0xae, 0xaa, 0xbc, 0x67, - 0xf6, 0x92, 0xf1, 0x1a, 0xdb, 0x68, 0xb6, 0x1a, 0x2a, 0x37, - 0xef, 0x6e, 0xa4, 0xf3, 0xe4, 0x1e, 0x88, 0xbd, 0x3f, 0x36, - 0x3f, 0xf8, 0xed, 0x79, 0x99, 0x9d, 0x75, 0x86, 0xc1, 0xd4, - 0xa8, 0xfb, 0x69, 0xea, 0xf4, 0x47, 0x3e, 0x22, 0x7e, 0xce, - 0x94, 0xa4, 0x7c, 0xf5, 0x45, 0x14, 0x57, 0xe2, 0x47, 0xc9, - 0x5, 0x14, 0x51, 0x40, 0x1d, 0x6f, 0xc2, 0x7b, 0x3f, 0xb7, - 0x7c, 0x45, 0xd0, 0xa3, 0xc6, 0x42, 0xdc, 0x9, 0xf, 0xfc, - 0x4, 0x16, 0xfe, 0x95, 0xf5, 0xf5, 0x7c, 0xe3, 0xfb, 0x37, - 0xe8, 0x7f, 0x6c, 0xf1, 0x45, 0xee, 0xa6, 0xcb, 0x94, 0xb2, - 0x83, 0x62, 0x9f, 0xf6, 0xdc, 0xe3, 0xf9, 0x6, 0xfc, 0xeb, - 0xe8, 0xea, 0xfd, 0x4f, 0x86, 0x68, 0xba, 0x78, 0x27, 0x37, - 0xf6, 0x9b, 0x7f, 0x76, 0x87, 0xd1, 0x65, 0xf1, 0xb5, 0x2b, - 0xf7, 0x61, 0x5e, 0x6b, 0xf1, 0x7f, 0xe1, 0x58, 0xf1, 0xbd, - 0xa2, 0xdf, 0xd8, 0x5, 0x8f, 0x58, 0xb7, 0x42, 00, 0x3c, - 0x9, 0xd7, 0xfb, 0xa4, 0xfa, 0xfa, 0x1f, 0xc3, 0xe9, 0xe9, - 0x54, 0x57, 0xd1, 0xe2, 0x70, 0xd4, 0xf1, 0x74, 0x9d, 0x1a, - 0xaa, 0xe9, 0x9d, 0xf5, 0x29, 0xc6, 0xac, 0x5c, 0x65, 0xb1, - 0xf0, 0xdd, 0xed, 0x8d, 0xc6, 0x9b, 0x75, 0x25, 0xb5, 0xd4, - 0x32, 0x5b, 0xdc, 0x46, 0x76, 0xbc, 0x52, 0x2e, 0xd6, 0x53, - 0xee, 0x2a, 0xa, 0xfb, 0x17, 0xc6, 0x3f, 0xf, 0x34, 0x4f, - 0x1c, 0x42, 0xa3, 0x52, 0xb6, 0xfd, 0xfa, 0xc, 0x25, 0xcc, - 0x47, 0x6c, 0x8b, 0xf8, 0xf7, 0x1e, 0xc7, 0x22, 0xbc, 0x3f, - 0xc5, 0x3f, 0xb3, 0xde, 0xbb, 0xa4, 0x34, 0x92, 0xe9, 0x4f, - 0x1e, 0xaf, 0x6a, 0x39, 0xa, 0xe, 0xc9, 0x80, 0xff, 00, - 0x74, 0xf0, 0x7f, 0x3, 0xf8, 0x57, 0xe6, 0x38, 0xee, 0x1f, - 0xc5, 0x61, 0x5b, 0x95, 0x25, 0xcf, 0x1f, 0x2d, 0xfe, 0x6b, - 0xfc, 0x8f, 0x9e, 0xad, 0x82, 0xa9, 0x4f, 0x58, 0xea, 0x8f, - 0x2a, 0xa2, 0xac, 0x5f, 0x69, 0xf7, 0x5a, 0x65, 0xc3, 0x41, - 0x79, 0x6f, 0x2d, 0xac, 0xcb, 0xd6, 0x39, 0x90, 0xab, 0xf, - 0xc0, 0xd5, 0x7a, 0xf9, 0x86, 0x9c, 0x5d, 0x99, 0xe7, 0xec, - 0x14, 0x51, 0x45, 0x20, 0xa, 0x28, 0xa2, 0x80, 0x25, 0xb5, - 0xbb, 0x9e, 0xc6, 0x75, 0x9a, 0xda, 0x69, 0x2d, 0xe6, 0x5e, - 0x56, 0x48, 0x9c, 0xab, 0xf, 0xa1, 0x15, 0xe9, 0x5e, 0x11, - 0xf8, 0xfb, 0xaf, 0x68, 0x6e, 0x91, 0x6a, 0x64, 0x6b, 0x36, - 0x9d, 0xf, 0x98, 0x42, 0xca, 0xbf, 0x46, 0xc7, 0x3f, 0x8e, - 0x7e, 0xb5, 0xe6, 0x14, 0x57, 0x66, 0x1b, 0x19, 0x5f, 0x9, - 0x2e, 0x6a, 0x13, 0x6b, 0xf2, 0xfb, 0xb6, 0x35, 0xa7, 0x56, - 0x74, 0x9d, 0xe0, 0xec, 0x7d, 0x8f, 0xe0, 0xdf, 0x1f, 0xe8, - 0xfe, 0x38, 0xb4, 0xf3, 0x74, 0xeb, 0x8f, 0xdf, 0x28, 0xfd, - 0xe5, 0xb4, 0xbf, 0x2c, 0xa9, 0xf5, 0x1d, 0xc7, 0xb8, 0xe2, - 0xba, 0x4a, 0xf8, 0x7b, 0x4b, 0xd5, 0x2e, 0xf4, 0x5d, 0x42, - 0xb, 0xdb, 0x19, 0xda, 0xde, 0xea, 0x16, 0xdc, 0x92, 0x27, - 0x50, 0x7f, 0xcf, 0x6a, 0xfa, 0xa3, 0xe1, 0x4f, 0xc4, 0x88, - 0xbc, 0x7d, 0xa3, 0x91, 0x36, 0x23, 0xd5, 0x6d, 0x80, 0x17, - 0x31, 0x81, 0x85, 0x6c, 0xf4, 0x75, 0xf6, 0x38, 0xfc, 0xf, - 0xe1, 0x5f, 0xa4, 0xe5, 0x19, 0xdc, 0x71, 0xcf, 0xd8, 0xd6, - 0x56, 0x9f, 0xe0, 0xff, 00, 0xe0, 0xf9, 0x1e, 0xf6, 0x17, - 0x16, 0xab, 0x7b, 0x93, 0xd1, 0xfe, 0x67, 0x73, 0x45, 0x14, - 0x57, 0xd5, 0x9e, 0x90, 0x51, 0x45, 0x14, 00, 0x57, 0xcc, - 0xff, 00, 0xb4, 0xf5, 0xdf, 0xef, 0xd9, 0x33, 0xd1, 0x71, - 0x5f, 0x4c, 0x57, 0xc9, 0xbf, 0xb4, 0xbd, 0xd1, 0x7d, 0x52, - 0x55, 0xcf, 0xf1, 0x1a, 0xf9, 0xdc, 0xf6, 0x56, 0xc1, 0xb5, - 0xdc, 0xf1, 0xb3, 0x69, 0x72, 0xe1, 0x64, 0x7c, 0xdf, 0xac, - 0x36, 0xdb, 0x77, 0x3e, 0xd5, 0x4f, 0xf6, 0x27, 0xb6, 0xfe, - 0xd1, 0xfd, 0xb2, 0xf4, 0xc7, 0x20, 0x37, 0xd9, 0x34, 0xab, - 0xe9, 0xf9, 0xed, 0x95, 0x54, 0xcf, 0xfe, 0x3f, 0x53, 0x78, - 0x81, 0xf6, 0xd9, 0xc8, 0x7f, 0xd9, 0x35, 0x77, 0xfe, 0x9, - 0xe7, 0x69, 0xf6, 0xef, 0xda, 0xbb, 0x5c, 0xb9, 0xea, 0x2d, - 0x3c, 0x3b, 0x3f, 0xe6, 0xd3, 0xc2, 0x3f, 0xa1, 0xaf, 0x27, - 0x23, 0x8e, 0xb7, 0x3f, 0x34, 0xc8, 0x23, 0xcf, 0x9b, 0xa7, - 0xd9, 0x33, 0xf4, 0xee, 0x8a, 0x28, 0xaf, 0xb8, 0x3f, 0x64, - 0xa, 0x28, 0xa2, 0x80, 0x23, 0xb9, 0xb8, 0x8e, 0xd2, 0xde, - 0x59, 0xe5, 0x60, 0x91, 0x44, 0xa5, 0xdd, 0x8f, 0x40, 00, - 0xc9, 0x35, 0xf9, 0xe1, 0xe3, 0xcf, 0x13, 0xc9, 0xe3, 0x3f, - 0x19, 0xea, 0xfa, 0xcb, 0x9c, 0x8b, 0xbb, 0x86, 0x68, 0xfd, - 0xa3, 0x1c, 0x20, 0xff, 00, 0xbe, 0x40, 0xaf, 0xaf, 0x3f, - 0x69, 0x7f, 0x18, 0x9f, 0xa, 0x7c, 0x33, 0xbb, 0x82, 0x17, - 0xdb, 0x77, 0xaa, 0xb7, 0xd8, 0xa3, 0xf5, 0xda, 0xc0, 0x97, - 0x3f, 0xf7, 0xc8, 0x3f, 0x98, 0xaf, 0x8d, 0x7c, 0x3d, 0xa5, - 0x3e, 0xb3, 0xac, 0xd9, 0xd9, 0x46, 0x9, 0x69, 0xa4, 0x54, - 00, 0x7b, 0x9a, 0xf8, 0x7e, 0x20, 0xc4, 0x39, 0x4e, 0x18, - 0x78, 0xf4, 0xd7, 0xe6, 0xf6, 0x3e, 0xb, 0x88, 0x6b, 0xba, - 0xb5, 0xa9, 0xe1, 0x21, 0xd3, 0x57, 0xea, 0xf6, 0xfe, 0xbc, - 0xcf, 0xab, 0x3f, 0x65, 0x6f, 0x8, 0x7f, 0x65, 0x78, 0x5a, - 0x6d, 0x5e, 0x58, 0xf6, 0xcd, 0x76, 0xc5, 0x54, 0x91, 0xfc, - 0x22, 0xbd, 0xd6, 0xb2, 0xbc, 0x2d, 0xa2, 0xc7, 0xe1, 0xef, - 0xf, 0xd8, 0xe9, 0xf1, 0x28, 0x55, 0x82, 0x20, 0xbc, 0xe, - 0xfd, 0xeb, 0x56, 0xbe, 0xab, 0x5, 0x87, 0x58, 0x5c, 0x3c, - 0x29, 0x76, 0x5f, 0x8f, 0x53, 0xec, 0xb0, 0x94, 0x16, 0x1e, - 0x84, 0x69, 0x2e, 0x88, 0x28, 0xa2, 0x8a, 0xee, 0x3a, 0xc2, - 0x8a, 0x28, 0xa0, 0xf, 0xcb, 0xbf, 0xf8, 0x2d, 0x1f, 0xc6, - 0x4b, 0xfb, 0x3b, 0x6f, 0x5, 0xfc, 0x31, 0xb3, 0x73, 0x15, - 0x8d, 0xea, 0x36, 0xb5, 0xa8, 0x60, 0x90, 0x65, 0xda, 0xc6, - 0x38, 0x50, 0xf6, 0x20, 0x1d, 0xed, 0xf5, 0xb, 0xe9, 0x5f, - 0x9b, 0x5f, 0xb, 0x34, 0xfd, 0x7b, 0xc5, 0x3e, 0x3e, 0xf0, - 0xe7, 0x86, 0xb4, 0x3d, 0x52, 0xf3, 0x4f, 0xbc, 0xd5, 0xf5, - 0x8, 0x2c, 0x22, 0x92, 0xda, 0x77, 0x8f, 0x61, 0x92, 0x40, - 0x9b, 0xbe, 0x52, 0x3a, 0x67, 0x3f, 0x85, 0x7e, 0x9a, 0xff, - 00, 0xc1, 0x49, 0xec, 0xfe, 0xd, 0xfe, 0xd2, 0xba, 0x1d, - 0xa6, 0xa7, 0xe1, 0xbf, 0x8a, 0xfe, 0x12, 0xb7, 0xf8, 0x87, - 0xe1, 0x7f, 0x36, 0xd9, 0x74, 0xfb, 0xbd, 0x52, 0x28, 0x56, - 0xee, 0x2d, 0xdf, 0x3c, 0x5, 0x98, 0x80, 0xae, 0xac, 0x9, - 0x5c, 0x9c, 0x64, 0xb0, 0x38, 0xce, 0x47, 0xe5, 0xa7, 0x85, - 0xfc, 0x47, 0xa8, 0x78, 0xb, 0xc5, 0xfa, 0x56, 0xb9, 0xa6, - 0xca, 0xb1, 0xea, 0x9a, 0x3d, 0xec, 0x77, 0x70, 0x48, 0xac, - 0x1d, 0x44, 0x91, 0x38, 0x65, 0xe4, 0x1c, 0x30, 0xca, 0xf6, - 0x38, 0x22, 0xa9, 0x10, 0xf7, 0x3f, 0xa6, 0x8f, 0x9, 0x78, - 0x6a, 0xd7, 0xc1, 0xde, 0x17, 0xd2, 0xb4, 0x2b, 0x22, 0xe6, - 0xd7, 0x4e, 0xb6, 0x8e, 0xd6, 0x36, 0x91, 0x8b, 0x3b, 0x4, - 0x50, 0x37, 0x31, 0x3c, 0x92, 0x71, 0x92, 0x4f, 0x52, 0x6b, - 0x5e, 0xbe, 0x30, 0xf8, 0x1b, 0xff, 00, 0x5, 0x54, 0xf8, - 0x37, 0xf1, 0x2b, 0x43, 0xb4, 0x5f, 0x15, 0xea, 0xa7, 0xc0, - 0x3e, 0x22, 0xd8, 0x5, 0xc5, 0xa6, 0xa6, 0x8c, 0xd6, 0xc5, - 0xf1, 0xc9, 0x8e, 0x75, 0x5, 0x76, 0xfa, 0x6e, 0xda, 0x7d, - 0xab, 0xd9, 0xad, 0x7f, 0x6d, 0x3f, 0x80, 0xf7, 0x87, 0x11, - 0xfc, 0x5b, 0xf0, 0x88, 0x3f, 0xf4, 0xd3, 0x55, 0x89, 0x3f, - 0xf4, 0x22, 0x2a, 0x4b, 0x3d, 0xa6, 0x8a, 0xf3, 0x1d, 0x3f, - 0xf6, 0xa0, 0xf8, 0x3d, 0xab, 0x48, 0x12, 0xcb, 0xe2, 0x97, - 0x83, 0xee, 0x9c, 0xf4, 0x58, 0xb5, 0xcb, 0x66, 0x3f, 0xfa, - 0x1d, 0x77, 0x7a, 0xf, 0x89, 0xb4, 0x8f, 0x14, 0xda, 0x35, - 0xd6, 0x8d, 0xaa, 0xd9, 0x6a, 0xd6, 0xaa, 0xdb, 0xc, 0xd6, - 0x37, 0x9, 0x32, 0x6, 0xc6, 0x70, 0x4a, 0x92, 0x33, 0x82, - 0x3f, 0x3a, 00, 0xd3, 0xaf, 0x36, 0xf8, 0xf9, 0xe2, 0x1f, - 0xec, 0x6f, 0x2, 0x4b, 0x6b, 0x1c, 0x9b, 0x27, 0xd4, 0x24, - 0x10, 00, 0xf, 0x3b, 0x3a, 0xbf, 0xe8, 0x31, 0xff, 00, - 0x2, 0xaf, 0x49, 0xaf, 0x98, 0xff, 00, 0x68, 0x3f, 0x10, - 0x7f, 0x6a, 0xf8, 0xdf, 0xec, 0x28, 0xfb, 0xa0, 0xd3, 0xe2, - 0x11, 0xe0, 0x74, 0xde, 0xdf, 0x33, 0x7f, 0xec, 0xa3, 0xf0, - 0xaf, 0x3, 0x3c, 0xc5, 0x7d, 0x57, 0x3, 0x36, 0xb7, 0x96, - 0x8b, 0xe7, 0xff, 00, 0x2, 0xe7, 0x16, 0x32, 0xa7, 0xb3, - 0xa2, 0xfc, 0xf4, 0x3c, 0xc2, 0x8a, 0x28, 0xaf, 0xc7, 0x8f, - 0x97, 0xa, 0xb7, 0xa4, 0xe9, 0xb3, 0x6b, 0x3a, 0xa5, 0xa5, - 0x8c, 00, 0xb4, 0xd7, 0x32, 0xac, 0x4a, 00, 0xee, 0x4e, - 0x2a, 0xa5, 0x7a, 0x8f, 0xec, 0xf3, 0xa0, 0x1d, 0x4f, 0xc6, - 0xad, 0x7e, 0xe9, 0x98, 0x74, 0xf8, 0x4b, 0xee, 0x23, 0x8f, - 0x31, 0xbe, 0x55, 0x1f, 0x96, 0xe3, 0xf8, 0x57, 0x6e, 0xb, - 0xe, 0xf1, 0x58, 0x98, 0x51, 0x5d, 0x5f, 0xe1, 0xd7, 0xf0, - 0x35, 0xa5, 0xf, 0x69, 0x35, 0xe, 0xe7, 0xd2, 0x3a, 0x75, - 0x8c, 0x7a, 0x66, 0x9f, 0x6d, 0x69, 0x8, 0xdb, 0x14, 0x11, - 0xac, 0x48, 0x3d, 0x80, 0xc0, 0xfe, 0x55, 0x66, 0x8a, 0x2b, - 0xf7, 0x24, 0x94, 0x55, 0x91, 0xf6, 0x9, 0x5b, 0x40, 0xaf, - 0x11, 0xfd, 0xa6, 0xec, 0x43, 0x58, 0x68, 0x57, 0x9d, 0xd2, - 0x59, 0x62, 0x3f, 0xf0, 0x20, 0xf, 0xfe, 0xcb, 0x5e, 0xdd, - 0x5e, 0x4f, 0xfb, 0x48, 0xc3, 0xe6, 0x78, 0x26, 0xce, 0x4c, - 0x7f, 0xab, 0xbe, 0x43, 0xf9, 0xa3, 0x8a, 0xf1, 0xb3, 0xa8, - 0x73, 0xe5, 0xf5, 0x57, 0x95, 0xfe, 0xe7, 0x73, 0x93, 0x16, - 0xaf, 0x42, 0x47, 0xcd, 0x94, 0x51, 0x45, 0x7e, 0x32, 0x7c, - 0xa8, 0x56, 0xc7, 0x83, 0x6f, 0x8e, 0x9b, 0xe2, 0xdd, 0x1a, - 0xe8, 0x1c, 0x79, 0x57, 0x71, 0x31, 0x3e, 0xdb, 0x86, 0x7f, - 0x4a, 0xc7, 0xa7, 0x47, 0x21, 0x86, 0x45, 0x91, 0x7e, 0xf2, - 0x90, 0xc3, 0xf0, 0xad, 0x29, 0xcf, 0xd9, 0xce, 0x33, 0x5d, - 0x1d, 0xc7, 0x17, 0x66, 0x99, 0xf7, 0x4d, 0x15, 0x5b, 0x4c, - 0xb9, 0x17, 0xba, 0x75, 0xad, 0xc0, 0xe9, 0x2c, 0x49, 0x20, - 0xfc, 0x40, 0x35, 0x66, 0xbf, 0x7b, 0x4e, 0xe9, 0x34, 0x7d, - 0x9a, 0xd4, 0x28, 0xa2, 0x8a, 0x63, 0xa, 0x28, 0xa2, 0x80, - 0x38, 0xbf, 0x8c, 0x3a, 0xc8, 0xd1, 0x3e, 0x1e, 0x6a, 0xd2, - 0x6, 0xdb, 0x24, 0xf1, 0xfd, 0x99, 0x30, 0x79, 0x25, 0xce, - 0xe, 0x3f, 0xc, 0x9f, 0xc2, 0xbe, 0x48, 0xaf, 0x75, 0xfd, - 0xa6, 0x35, 0xa3, 0x9d, 0x1f, 0x49, 0x46, 0xf9, 0x7e, 0x7b, - 0x99, 0x14, 0x7f, 0xdf, 0x2b, 0xff, 00, 0xb3, 0x57, 0x85, - 0x57, 0xe5, 0x1c, 0x47, 0x88, 0xf6, 0xd8, 0xde, 0x45, 0xb4, - 0x12, 0x5f, 0xaf, 0xea, 0x7c, 0xde, 0x3e, 0x7c, 0xd5, 0xad, - 0xd8, 0x28, 0xa2, 0x8a, 0xf9, 0x63, 0xce, 0xa, 0xfa, 0x7b, - 0xf6, 0x7d, 0xd0, 0xff, 00, 0xb2, 0xfc, 0x8, 0x2e, 0xd9, - 0x71, 0x2d, 0xfc, 0xcd, 0x2e, 0x48, 0xe7, 0x68, 0xf9, 0x57, - 0xf9, 0x13, 0xf8, 0xd7, 0xcc, 0x71, 0x44, 0xd3, 0x4a, 0x91, - 0xa0, 0x2c, 0xee, 0x42, 0xa8, 0x1d, 0xc9, 0xe9, 0x5f, 0x6b, - 0x78, 0x67, 0x49, 0x5d, 0xb, 0xc3, 0xda, 0x6e, 0x9c, 0xbf, - 0xf2, 0xed, 0x6e, 0x91, 0x1f, 0x72, 0x14, 0x64, 0xfe, 0x75, - 0xf6, 0x9c, 0x2f, 0x43, 0x9f, 0x11, 0x3a, 0xcf, 0xec, 0xaf, - 0xc5, 0xff, 00, 0xc0, 0x3d, 0x5c, 0xbe, 0x17, 0xa8, 0xe5, - 0xd8, 0xd3, 0xa2, 0x8a, 0x2b, 0xf4, 0xc3, 0xe8, 0x2, 0x8a, - 0x28, 0xa0, 0xc, 0x3f, 0x1c, 0xdb, 0xb5, 0xd7, 0x82, 0xf5, - 0xd8, 0x50, 0x65, 0xde, 0xc6, 0x65, 00, 0x7a, 0xec, 0x35, - 0xf1, 0x87, 0x5a, 0xfb, 0xa2, 0x58, 0x96, 0x78, 0x9e, 0x37, - 0x19, 0x47, 0x52, 0xa4, 0x1e, 0xe0, 0xd7, 0xc4, 0xfe, 0x21, - 0xd2, 0x5f, 0x42, 0xd7, 0x75, 0xd, 0x3a, 0x40, 0x77, 0x5b, - 0x4e, 0xf1, 0x73, 0xdc, 0x3, 0xc1, 0xfc, 0x46, 0xd, 0x7e, - 0x7d, 0xc5, 0x54, 0x9d, 0xe9, 0x55, 0xe9, 0xaa, 0xfd, 0x4f, - 0x13, 0x32, 0x8e, 0xb1, 0x91, 0x9f, 0x45, 0x14, 0x57, 0xc0, - 0x1e, 0x28, 0x57, 0x5f, 0xf0, 0x97, 0x55, 0x5d, 0x1f, 0xe2, - 0x1e, 0x8b, 0x33, 0x9c, 0x23, 0xcd, 0xe4, 0x31, 0x3f, 0xed, - 0x82, 0xa3, 0xf5, 0x22, 0xb9, 0xa, 0x74, 0x52, 0xbc, 0x32, - 0xa4, 0x91, 0xb1, 0x57, 0x42, 0x19, 0x58, 0x75, 0x4, 0x74, - 0x35, 0xbd, 0xa, 0xae, 0x85, 0x58, 0x55, 0x5f, 0x65, 0xa7, - 0xf7, 0x15, 0x9, 0x72, 0x49, 0x4b, 0xb1, 0xf7, 0x4d, 0x15, - 0xcb, 0x7c, 0x38, 0xf1, 0xb4, 0x1e, 0x39, 0xf0, 0xcd, 0xbd, - 0xea, 0xb2, 0xad, 0xda, 0xf, 0x2e, 0xe6, 0x10, 0x79, 0x47, - 0x1f, 0xd0, 0xf5, 0x1f, 0x5a, 0xea, 0x6b, 0xf7, 0x3a, 0x35, - 0x61, 0x5e, 0x9c, 0x6a, 0xd3, 0x77, 0x4f, 0x53, 0xec, 0x63, - 0x25, 0x38, 0xa9, 0x47, 0x66, 0x14, 0x51, 0x45, 0x6c, 0x50, - 0x51, 0x45, 0x23, 0x30, 0x45, 0x2c, 0xc4, 0x2a, 0x81, 0x92, - 0x4f, 0x41, 0x40, 0x11, 0xdd, 0x5d, 0x45, 0x63, 0x6d, 0x2d, - 0xc4, 0xf2, 0x2c, 0x50, 0x44, 0x85, 0xdd, 0xd8, 0xe0, 0x2a, - 0x81, 0x92, 0x4d, 0x7c, 0x79, 0xf1, 0x7, 0xc5, 0xaf, 0xe3, - 0x5f, 0x15, 0x5e, 0x6a, 0x64, 0x15, 0x85, 0x8f, 0x97, 0x2, - 0x1f, 0xe1, 0x8d, 0x78, 0x5f, 0xcf, 0xaf, 0xd4, 0x9a, 0xef, - 0xfe, 0x36, 0x7c, 0x58, 0x4d, 0x74, 0xbe, 0x83, 0xa3, 0xcd, - 0xba, 0xc1, 0x1b, 0xfd, 0x22, 0xe5, 0x1b, 0x89, 0x88, 0xfe, - 0x11, 0xfe, 0xc8, 0xf5, 0xee, 0x7d, 0xba, 0xf8, 0xed, 0x7e, - 0x63, 0xc4, 0x39, 0x9c, 0x71, 0x33, 0x58, 0x6a, 0x2e, 0xf1, - 0x8e, 0xef, 0xbb, 0xff, 00, 0x80, 0x7c, 0xf6, 0x3b, 0x10, - 0xaa, 0x3f, 0x67, 0x1d, 0x90, 0x51, 0x45, 0x15, 0xf1, 0xa7, - 0x96, 0x14, 0x51, 0x5d, 0x67, 0xc3, 0x2f, 0x6, 0x3f, 0x8d, - 0xfc, 0x57, 0x6d, 0x66, 0xca, 0xdf, 0x63, 0x8f, 0xf7, 0xd7, - 0x2e, 0x7, 0x44, 0x1d, 0xbf, 0x13, 0x81, 0xf8, 0xfb, 0x56, - 0xd4, 0x68, 0xcf, 0x11, 0x52, 0x34, 0xa9, 0xad, 0x5b, 0xb1, - 0x51, 0x8b, 0x9c, 0x94, 0x56, 0xec, 0xf7, 0xbf, 0x81, 0x7e, - 0x17, 0x6f, 0xe, 0xf8, 0x1e, 0x19, 0xa6, 0x5d, 0xb7, 0x3a, - 0x83, 0x7d, 0xa9, 0x81, 0x1c, 0x85, 0x20, 0x4, 0x1f, 0x90, - 0xcf, 0xe3, 0x5e, 0x89, 0x4d, 0x8e, 0x35, 0x8a, 0x35, 0x44, - 0x50, 0xa8, 0xa0, 0x28, 0x51, 0xd0, 0xa, 0x75, 0x7e, 0xe3, - 0x86, 0xa1, 0x1c, 0x2d, 0x18, 0x51, 0x8e, 0xd1, 0x56, 0x3e, - 0xbe, 0x9c, 0x15, 0x38, 0x28, 0x2e, 0x81, 0x45, 0x14, 0x57, - 0x49, 0xa0, 0x51, 0x45, 0x14, 0x1, 0x53, 0x51, 0xd2, 0x2c, - 0x75, 0x78, 0x4c, 0x37, 0xd6, 0x70, 0x5e, 0x44, 0x7a, 0xa4, - 0xf1, 0x87, 0x1f, 0xad, 0x79, 0xf6, 0xbf, 0xfb, 0x3f, 0xf8, - 0x63, 0x57, 0x2d, 0x25, 0xa2, 0xcf, 0xa5, 0x4a, 0x7f, 0xe7, - 0xdd, 0xf2, 0x99, 0xff, 00, 0x75, 0xb3, 0xfa, 0x11, 0x5e, - 0x99, 0x45, 0x72, 0x57, 0xc1, 0xe1, 0xf1, 0x2a, 0xd5, 0xa0, - 0xa5, 0xfd, 0x77, 0x32, 0x9d, 0x28, 0x54, 0xf8, 0xd5, 0xcf, - 0x9b, 0x3c, 0x45, 0xfb, 0x3a, 0xeb, 0xba, 0x68, 0x69, 0x34, - 0xbb, 0x88, 0x75, 0x58, 0x87, 0x44, 0xff, 00, 0x55, 0x26, - 0x3e, 0x84, 0xe0, 0xfe, 0x75, 0xe6, 0xba, 0xb6, 0x87, 0xa8, - 0x68, 0x37, 0x3f, 0x67, 0xd4, 0x6c, 0xa7, 0xb2, 0x9b, 0xfb, - 0xb3, 0x21, 0x5c, 0xfd, 0x3d, 0x7f, 0xa, 0xfb, 0x76, 0xa9, - 0xea, 0x9a, 0x45, 0x96, 0xb7, 0x68, 0xf6, 0xb7, 0xf6, 0xb1, - 0x5d, 0xdb, 0xb7, 0x58, 0xe5, 0x50, 0xc3, 0xff, 00, 0xad, - 0x5f, 0x2f, 0x8a, 0xe1, 0x8c, 0x3d, 0x4b, 0xbc, 0x3c, 0x9c, - 0x5f, 0x6d, 0xd7, 0xf9, 0x9e, 0x75, 0x4c, 0xbe, 0x12, 0xd6, - 0xe, 0xc7, 0xc4, 0x14, 0x57, 0xa5, 0x7c, 0x60, 0xf8, 0x56, - 0xbe, 0x5, 0xb8, 0x8a, 0xfb, 0x4f, 0x2f, 0x26, 0x93, 0x72, - 0xe5, 0x70, 0xfc, 0x98, 0x5f, 0xa8, 0x5c, 0xf7, 0x4, 0x67, - 0x7, 0xda, 0xbc, 0xd6, 0xbf, 0x3c, 0xc5, 0x61, 0xaa, 0xe0, - 0xea, 0xba, 0x35, 0x55, 0x9a, 0x3c, 0x4a, 0x94, 0xe5, 0x4a, - 0x4e, 0x32, 0xdc, 0x28, 0xa2, 0x8a, 0xe5, 0x33, 0xa, 0xea, - 0x7e, 0x19, 0x78, 0x96, 0x5f, 0xb, 0x78, 0xd3, 0x4d, 0xba, - 0x46, 0x22, 0x19, 0x25, 0x10, 0x4e, 0xb9, 0xe1, 0xa3, 0x62, - 0x1, 0xcf, 0xd3, 0x83, 0xf8, 0x57, 0x2d, 0x4a, 0xac, 0x55, - 0x81, 0x7, 0x4, 0x1c, 0x82, 0x2b, 0x6a, 0x35, 0x65, 0x42, - 0xac, 0x6a, 0xc7, 0x74, 0xee, 0x54, 0x24, 0xe1, 0x25, 0x25, - 0xd0, 0xfb, 0xaa, 0x8a, 0x82, 0xc5, 0xda, 0x5b, 0x2b, 0x77, - 0x6e, 0x19, 0xa3, 0x52, 0x7e, 0xb8, 0xa9, 0xeb, 0xf7, 0x94, - 0xee, 0xae, 0x7d, 0x9a, 0xd4, 0x28, 0xa2, 0x8a, 0x60, 0x21, - 0x38, 0x15, 0xf1, 0xaf, 0xed, 0xf, 0x77, 0xe7, 0x6b, 0xb2, - 0x8f, 0x57, 0x3f, 0xce, 0xbe, 0xc8, 0x94, 0xed, 0x89, 0xcf, - 0xa2, 0x93, 0x5f, 0x10, 0x7c, 0x73, 0xb9, 0xf3, 0xbc, 0x45, - 0x2f, 0xfb, 0xed, 0xfc, 0xeb, 0xe5, 0x78, 0x86, 0x56, 0xc3, - 0xc6, 0x3d, 0xd9, 0xf3, 0xb9, 0xec, 0xb9, 0x70, 0xac, 0xf1, - 0x1f, 0x14, 0xc9, 0xb2, 0xc2, 0x6f, 0xf7, 0x4d, 0x76, 0x9f, - 0xf0, 0x4c, 0x9d, 0x3c, 0x5d, 0x7c, 0x65, 0xf8, 0x91, 0xa9, - 0x11, 0x9f, 0xb3, 0xe9, 0x96, 0xd6, 0xe1, 0xb1, 0xfd, 0xf9, - 0x59, 0x8f, 0xfe, 0x81, 0x5c, 0xf, 0x8d, 0x25, 0xd9, 0xa6, - 0x4d, 0xf4, 0x35, 0xeb, 0xff, 00, 0xf0, 0x4b, 0x2b, 0xd, - 0xf7, 0x3f, 0x15, 0x35, 0x22, 0x3e, 0xfd, 0xcd, 0x95, 0xba, - 0x9f, 0xf7, 0x52, 0x46, 0x3f, 0xfa, 0x10, 0xac, 0x72, 0x38, - 0xe9, 0x73, 0xe1, 0xb8, 0x5e, 0x3c, 0xd9, 0x95, 0x49, 0x76, - 0x47, 0xdf, 0x74, 0x51, 0x45, 0x7d, 0x81, 0xfa, 0xd8, 0x51, - 0x45, 0x66, 0x78, 0x9b, 0x5d, 0x83, 0xc3, 0x1e, 0x1e, 0xd4, - 0x75, 0x6b, 0x93, 0x88, 0x6c, 0xe0, 0x79, 0xd8, 0x67, 0x19, - 0xda, 0x33, 0x8f, 0xa9, 0xe9, 0x4a, 0x4d, 0x45, 0x36, 0xfa, - 0x13, 0x29, 0x28, 0xa7, 0x27, 0xb2, 0x3e, 0x49, 0xfd, 0xaa, - 0xfc, 0x62, 0xda, 0xef, 0xc4, 0x25, 0xd1, 0xe3, 0x72, 0x6d, - 0x34, 0x88, 0x82, 0x15, 0xc8, 0x20, 0xca, 0xe0, 0x33, 0x1f, - 0xcb, 0x68, 0xfc, 0xd, 0x27, 0xec, 0xc1, 0xe1, 0xf, 0xed, - 0xcf, 0x1b, 0xad, 0xfc, 0xd1, 0xee, 0xb7, 0xb2, 0x52, 0xf9, - 0x23, 0x8d, 0xdd, 0xab, 0xc8, 0xf5, 0x6d, 0x52, 0xe3, 0x5e, - 0xd5, 0xef, 0x35, 0x1b, 0xa7, 0x32, 0x5c, 0xdd, 0xcc, 0xd3, - 0x48, 0xc7, 0xd5, 0x8e, 0x6b, 0xec, 0x9f, 0xd9, 0xaf, 0xc2, - 0x3f, 0xf0, 0x8f, 0x78, 0x12, 0x3b, 0xb9, 0x13, 0x6d, 0xc5, - 0xe3, 0x17, 0x39, 0xfe, 0xef, 0x6a, 0xfc, 0xef, 0x8, 0x9e, - 0x63, 0x99, 0x7b, 0x49, 0x6d, 0x7b, 0xfc, 0x96, 0xdf, 0xa1, - 0xf9, 0xd6, 0x5c, 0x9e, 0x63, 0x99, 0x4b, 0x11, 0x2d, 0x93, - 0xbf, 0xf9, 0x1e, 0xbb, 0x45, 0x14, 0x57, 0xe8, 0xa7, 0xe8, - 0xe1, 0x45, 0x79, 0xef, 0xed, 0x1, 0xf1, 0x6a, 0xcb, 0xe0, - 0x67, 0xc1, 0xbf, 0x15, 0xf8, 0xde, 0xf9, 0x94, 0x2e, 0x93, - 0x62, 0xf2, 0xc2, 0x8d, 0xd2, 0x59, 0xc8, 0xdb, 0xa, 0x7f, - 0xc0, 0x9c, 0xa8, 0xfc, 0x6b, 0xf2, 0x66, 0xc3, 0xfe, 0xb, - 0x29, 0xf1, 0xba, 0xdd, 0x97, 0xed, 0x5a, 0x2f, 0x83, 0xae, - 0xd0, 0x75, 0x2, 0xc2, 0xe2, 0x32, 0x7f, 0x11, 0x39, 0xfe, - 0x54, 0xa, 0xf6, 0x3f, 0x6a, 0x2b, 0xc7, 0x7f, 0x6b, 0xaf, - 0x8c, 0xf0, 0x7c, 0x4, 0xfd, 0x9e, 0xbc, 0x63, 0xe2, 0xe7, - 0x90, 0x2d, 0xe4, 0x36, 0x8d, 0x6d, 0x60, 0xb9, 0xc1, 0x7b, - 0xa9, 0x7f, 0x77, 0x10, 0x1f, 0x46, 0x6d, 0xc7, 0xd9, 0x4d, - 0x5f, 0xfd, 0x98, 0xbe, 0x21, 0x78, 0xaf, 0xe2, 0xc7, 0xc1, - 0x1f, 0xc, 0xf8, 0xc3, 0xc6, 0x5a, 0x5d, 0x96, 0x8b, 0xac, - 0x6b, 0x50, 0x7d, 0xb1, 0x6c, 0x6c, 0x43, 0xec, 0x8e, 0x6, - 0x3f, 0xba, 0x27, 0x79, 0x27, 0x2c, 0xb8, 0x6f, 0xf8, 0x10, - 0x15, 0x6f, 0xe3, 0x9f, 0xec, 0xf9, 0xe0, 0xaf, 0xda, 0x37, - 0xc3, 0x16, 0x9e, 0x1e, 0xf1, 0xd5, 0x85, 0xce, 0xa5, 0xa4, - 0xdb, 0x5c, 0x8b, 0xc8, 0xe0, 0xb7, 0xbc, 0x96, 0xdf, 0xf7, - 0xa1, 0x59, 0x43, 0x13, 0x1b, 0x2, 0x70, 0x19, 0xb8, 0x3c, - 0x73, 0x40, 0xcf, 0xe6, 0xc6, 0x59, 0x5e, 0x79, 0x5e, 0x49, - 0x18, 0xbc, 0x8e, 0x4b, 0x33, 0x31, 0xc9, 0x24, 0xf5, 0x26, - 0x9b, 0x5f, 0xba, 0x57, 0x5f, 0xf0, 0x49, 0xbf, 0xd9, 0xda, - 0xe1, 0x8, 0x8f, 0x40, 0xd6, 0x2d, 0x4f, 0xf7, 0xa2, 0xd6, - 0x67, 0x27, 0xff, 00, 0x1e, 0x26, 0xb0, 0x6f, 0x7f, 0xe0, - 0x8f, 0x3f, 0x2, 0x6e, 0x3, 0x79, 0x17, 0x5e, 0x2a, 0xb4, - 0x27, 0xa6, 0xdd, 0x4a, 0x36, 0x3, 0xf3, 0x8a, 0xaa, 0xe4, - 0x72, 0xb3, 0xf1, 0x2e, 0x8a, 0xfd, 0x8a, 0xd4, 0x7f, 0xe0, - 0x8b, 0x1f, 0xc, 0x27, 0x2c, 0x6c, 0xfc, 0x6d, 0xe2, 0xab, - 0x4f, 0x40, 0xff, 00, 0x67, 0x90, 0xf, 0xfc, 0x86, 0xd, - 0x72, 0xf7, 0xdf, 0xf0, 0x44, 0x8d, 0x5, 0xd9, 0xbe, 0xc5, - 0xf1, 0x4b, 0x51, 0x88, 0x76, 0x13, 0xe9, 0x51, 0xbf, 0xf2, - 0x91, 0x68, 0xb8, 0xb9, 0x59, 0xf9, 0x39, 0x8f, 0x6a, 0xfe, - 0x88, 0x7f, 0x62, 0xf, 0x82, 0xb1, 0xfc, 0x7, 0xfd, 0x9a, - 0xbc, 0x1f, 0xe1, 0xd6, 0x89, 0x53, 0x53, 0xb8, 0xb6, 0x1a, - 0x96, 0xa2, 0xc0, 0x60, 0xb5, 0xcc, 0xe0, 0x3b, 0x3, 0xfe, - 0xe8, 0x2a, 0x9f, 0x45, 0x15, 0xf1, 0xe7, 0x83, 0xff, 00, - 0xe0, 0x8b, 0xe9, 0xe1, 0xcf, 0x1e, 0x68, 0x3a, 0xad, 0xff, - 00, 0xc4, 0x68, 0x75, 0x8d, 0x16, 0xc6, 0xfa, 0x1b, 0x9b, - 0xab, 0x6, 0xd2, 0x8c, 0x4f, 0x71, 0x1a, 0x38, 0x63, 0x1e, - 0xef, 0x34, 0x81, 0xbb, 0x18, 0xe9, 0xde, 0xbf, 0x4e, 0x95, - 0x42, 0x28, 0x55, 0x1, 0x54, 0xc, 00, 0x3a, 0x1, 0x49, - 0x94, 0x95, 0x8a, 0x9a, 0xbe, 0xa5, 0x16, 0x8f, 0xa5, 0x5d, - 0xdf, 0x4c, 0x40, 0x8a, 0xda, 0x26, 0x95, 0x89, 0xf4, 0x3, - 0x35, 0xf1, 0x4e, 0xa5, 0xa8, 0x4d, 0xaa, 0xea, 0x17, 0x37, - 0xb7, 0xd, 0xbe, 0x7b, 0x89, 0x1a, 0x57, 0x3e, 0xe4, 0xe4, - 0xd7, 0xd6, 0x7f, 0x14, 0xf4, 0xd, 0x5f, 0xc5, 0x1e, 0x13, - 0x97, 0x4b, 0xd1, 0xcc, 0x2b, 0x2d, 0xc4, 0x8a, 0x25, 0x33, - 0x39, 0x51, 0xe5, 0x8e, 0x48, 0x1c, 0x1e, 0xa4, 0xf, 0xd6, - 0xbc, 0x32, 0x4f, 0xd9, 0xfb, 0xc5, 0xc8, 0x38, 0x82, 0xd2, - 0x4f, 0xf7, 0x6e, 0x7, 0xf5, 0xc5, 0x7c, 0x17, 0x11, 0x51, - 0xc5, 0x62, 0xaa, 0x42, 0x9d, 0x1a, 0x6d, 0xc6, 0x2a, 0xfa, - 0x2e, 0xaf, 0xfc, 0x8f, 0x23, 0x1d, 0x1a, 0x95, 0x24, 0x94, - 0x62, 0xda, 0x47, 0x9b, 0x51, 0x5d, 0xec, 0xdf, 0x3, 0x7c, - 0x67, 0xf, 0xfc, 0xc2, 0x84, 0x9f, 0xee, 0x5c, 0x46, 0x7f, - 0xf6, 0x6a, 0xa5, 0x2f, 0xc2, 0x2f, 0x18, 0x43, 0xf7, 0xb4, - 0x2b, 0x83, 0xfe, 0xe9, 0x56, 0xfe, 0x46, 0xbe, 0x2a, 0x58, - 0xc, 0x5c, 0x77, 0xa5, 0x2f, 0xb9, 0x9e, 0x4b, 0xa3, 0x55, - 0x7d, 0x97, 0xf7, 0x1c, 0x7d, 0x7d, 0x3f, 0xfb, 0x3f, 0xe8, - 0x1f, 0xd9, 0x3e, 0x4, 0x4b, 0xb7, 0x4d, 0xb3, 0x6a, 0x12, - 0xb4, 0xc4, 0x91, 0xce, 0xc1, 0xf2, 0xaf, 0xf2, 0x27, 0xf1, - 0xaf, 0x9, 0xb7, 0xf8, 0x63, 0xe2, 0x79, 0x6f, 0x60, 0xb7, - 0x93, 0x44, 0xbd, 0x84, 0x49, 0x22, 0xa1, 0x91, 0xa1, 0x3b, - 0x57, 0x27, 0x19, 0x27, 0xd0, 0x57, 0xd7, 0x3a, 0x75, 0x8c, - 0x5a, 0x5d, 0x85, 0xb5, 0x9c, 0xb, 0xb6, 0x18, 0x23, 0x58, - 0x90, 0x7a, 00, 0x30, 0x2b, 0xeb, 0x38, 0x6b, 0x5, 0x38, - 0xd7, 0x9d, 0x7a, 0xb1, 0x6b, 0x95, 0x59, 0x5d, 0x5b, 0x57, - 0xff, 00, 0x3, 0xf3, 0x3d, 0x2c, 0x5, 0x26, 0xa6, 0xe7, - 0x25, 0xb1, 0x66, 0x8a, 0x28, 0xaf, 0xd1, 0x4f, 0x74, 0x2b, - 0xcd, 0x7f, 0x68, 0x38, 0xbc, 0xcf, 0x87, 0x53, 0x36, 0x3e, - 0xe5, 0xcc, 0x4d, 0xfa, 0xe3, 0xfa, 0xd7, 0xa5, 0x57, 0x3, - 0xf1, 0xce, 0x2f, 0x37, 0xe1, 0x9e, 0xa8, 0x7f, 0xb8, 0xd1, - 0x37, 0xfe, 0x44, 0x5f, 0xf1, 0xaf, 0x37, 0x32, 0x5c, 0xd8, - 0x2a, 0xcb, 0xfb, 0xaf, 0xf2, 0x39, 0xf1, 0xa, 0xf4, 0xa5, - 0xe8, 0x7c, 0xa5, 0x45, 0x14, 0x57, 0xe2, 0x27, 0xc9, 0x5, - 0x14, 0x51, 0x40, 0x1f, 0x64, 0x7c, 0x3a, 0xba, 0xfb, 0x67, - 0x80, 0xf4, 0x9, 0x49, 0xc9, 0x36, 0x51, 0x3, 0xf5, 0xa, - 0x7, 0xf4, 0xae, 0x8e, 0xb8, 0x4f, 0x82, 0x17, 0x86, 0xf3, - 0xe1, 0xa6, 0x95, 0x93, 0x93, 0x17, 0x99, 0x11, 0xfc, 0x1d, - 0xb1, 0xfa, 0x62, 0xbb, 0xba, 0xfd, 0xd3, 0x5, 0x3f, 0x69, - 0x86, 0xa5, 0x3e, 0xf1, 0x5f, 0x91, 0xf6, 0x14, 0x5f, 0x35, - 0x38, 0xbf, 0x24, 0x14, 0x51, 0x45, 0x76, 0x1a, 0x85, 0x14, - 0x56, 0x7f, 0x88, 0x35, 0x68, 0xf4, 0x1d, 0xe, 0xff, 00, - 0x51, 0x97, 0xee, 0x5a, 0xc2, 0xf2, 0x9f, 0x7c, 0xe, 0x5, - 0x4c, 0xa4, 0xa1, 0x17, 0x29, 0x6c, 0x84, 0xdd, 0x95, 0xd9, - 0xf2, 0xbf, 0xc6, 0xd, 0x78, 0xf8, 0x83, 0xe2, 0x6, 0xa9, - 0x20, 0x6d, 0xd0, 0xdb, 0xbf, 0xd9, 0x63, 0xfa, 0x27, 0x7, - 0xff, 00, 0x1e, 0xdc, 0x7f, 0x1a, 0xe3, 0x2a, 0x4b, 0x89, - 0xde, 0xea, 0x79, 0x66, 0x90, 0xee, 0x92, 0x46, 0x2e, 0xc7, - 0xd4, 0x93, 0x93, 0x51, 0xd7, 0xe1, 0x38, 0x8a, 0xcf, 0x11, - 0x5a, 0x75, 0x65, 0xf6, 0x9b, 0x67, 0xc7, 0x4e, 0x4e, 0x72, - 0x72, 0x7d, 0x42, 0x8a, 0x28, 0xae, 0x72, 0xe, 0xb7, 0xe1, - 0x46, 0x8f, 0xfd, 0xb7, 0xf1, 0x7, 0x46, 0x81, 0x97, 0x7c, - 0x69, 0x37, 0x9e, 0xe3, 0xb6, 0x10, 0x16, 0xfe, 0x60, 0x57, - 0xd7, 0xd5, 0xf3, 0xdf, 0xec, 0xd1, 0xa3, 0xf9, 0xfa, 0xd6, - 0xad, 0xa9, 0xb2, 0xf1, 0x6f, 0xa, 0xc0, 0x87, 0xdd, 0xce, - 0x4f, 0xe8, 0xbf, 0xad, 0x7d, 0x9, 0x5f, 0xaa, 0xf0, 0xd5, - 0xf, 0x67, 0x82, 0xf6, 0x8f, 0x79, 0x36, 0xfe, 0x4b, 0x43, - 0xe8, 0xf0, 0x10, 0xe5, 0xa5, 0xcd, 0xdc, 0x28, 0xa2, 0x8a, - 0xfa, 0xb3, 0xd2, 0xa, 0x28, 0xa2, 0x80, 0xa, 0xf9, 0xdb, - 0xf6, 0x88, 0xf0, 0x69, 0xd3, 0xf5, 0x98, 0x7c, 0x41, 0x6e, - 0x9f, 0xe8, 0xf7, 0x98, 0x8e, 0x7c, 0xf, 0xbb, 0x28, 0x1c, - 0x1f, 0xc4, 0xf, 0xfc, 0x77, 0xde, 0xbe, 0x89, 0xac, 0xdf, - 0x10, 0xe8, 0x36, 0x9e, 0x27, 0xd1, 0xae, 0xb4, 0xcb, 0xd4, - 0xdf, 0x6f, 0x70, 0xbb, 0x5b, 0x1d, 0x54, 0xf5, 0x4, 0x7b, - 0x83, 0xcd, 0x79, 0x59, 0x9e, 0x9, 0x63, 0xf0, 0xd2, 0xa3, - 0xd7, 0x75, 0xeb, 0xfd, 0x68, 0x73, 0x62, 0x28, 0xfb, 0x6a, - 0x6e, 0x3d, 0x4f, 0x89, 0xa8, 0xae, 0x8b, 0xc7, 0x1e, 0x8, - 0xbf, 0xf0, 0x2e, 0xb5, 0x25, 0x95, 0xe2, 0x16, 0x88, 0x92, - 0x60, 0xb8, 0x3, 0xe5, 0x95, 0x3d, 0x47, 0xbf, 0xa8, 0xed, - 0x5c, 0xed, 0x7e, 0x33, 0x56, 0x94, 0xe8, 0xcd, 0xd3, 0xa8, - 0xac, 0xd1, 0xf2, 0xb2, 0x8b, 0x8b, 0xe5, 0x96, 0xe1, 0x45, - 0x14, 0x56, 0x44, 0x9b, 0x7e, 0x12, 0xf1, 0x86, 0xa7, 0xe0, - 0xbd, 0x51, 0x6f, 0xb4, 0xd9, 0xb6, 0x3f, 0xdd, 0x92, 0x36, - 0xe5, 0x25, 0x5f, 0x46, 0x15, 0xf4, 0x1f, 0x85, 0x3e, 0x3e, - 0x78, 0x7b, 0x5d, 0x44, 0x8f, 0x50, 0x66, 0xd1, 0xee, 0xb8, - 0x4, 0x4f, 0xcc, 0x44, 0xfb, 0x38, 0xe9, 0xf8, 0xe2, 0xbe, - 0x61, 0xa2, 0xbd, 0xac, 0x6, 0x6d, 0x89, 0xcb, 0xfd, 0xda, - 0x6e, 0xf1, 0xec, 0xf6, 0xff, 00, 0x80, 0x75, 0x51, 0xc4, - 0xd4, 0xa1, 0xa4, 0x76, 0xec, 0x7d, 0xb7, 0x69, 0xe2, 0xd, - 0x2e, 0xfd, 0x3, 0x5b, 0x6a, 0x36, 0x97, 0xa, 0x46, 0x73, - 0x1c, 0xea, 0xdf, 0xc8, 0xd4, 0xb3, 0x6a, 0xf6, 0x36, 0xeb, - 0xba, 0x5b, 0xdb, 0x78, 0x97, 0xd5, 0xe5, 0x50, 0x3f, 0x9d, - 0x7c, 0x3f, 0x8a, 0x31, 0x5f, 0x46, 0xb8, 0xae, 0x76, 0xd6, - 0x8e, 0xbe, 0xbf, 0xf0, 0xe, 0xff, 00, 0xed, 0x27, 0xfc, - 0xbf, 0x89, 0xf5, 0x9f, 0x88, 0xbe, 0x32, 0xf8, 0x5b, 0xc3, - 0xb1, 0x9c, 0xea, 0x2b, 0x7f, 0x38, 0xe9, 0xd, 0x96, 0x24, - 0x3f, 0x98, 0xe0, 0x7e, 0x26, 0xbc, 0x47, 0xe2, 0x7, 0xc6, - 0xad, 0x5b, 0xc6, 0x4b, 0x25, 0xa5, 0xa8, 0x3a, 0x66, 0x96, - 0xc0, 0xab, 0x43, 0x1b, 0x65, 0xe5, 0x1f, 0xed, 0xb7, 0xa7, - 0xb0, 0xe3, 0xeb, 0x5e, 0x75, 0x45, 0x78, 0x98, 0xdc, 0xf7, - 0x17, 0x8c, 0x8b, 0x85, 0xf9, 0x62, 0xfa, 0x2f, 0xf3, 0x39, - 0x2a, 0xe3, 0x2a, 0xd5, 0x56, 0xd9, 0x5, 0x14, 0x51, 0x5f, - 0x3a, 0x70, 0x85, 0x14, 0x55, 0x8b, 0xd, 0x3e, 0xe7, 0x55, - 0xbc, 0x86, 0xd2, 0xd2, 0x17, 0xb8, 0xb9, 0x95, 0x82, 0xa4, - 0x68, 0x32, 0x58, 0xd3, 0x49, 0xc9, 0xd9, 0x6e, 0x1b, 0x89, - 0x65, 0x65, 0x3e, 0xa3, 0x77, 0xd, 0xad, 0xb4, 0x4d, 0x35, - 0xc4, 0xcc, 0x11, 0x23, 0x41, 0x92, 0xc4, 0xf6, 0xaf, 0xad, - 0x3e, 0x18, 0xf8, 0x6, 0x2f, 00, 0xf8, 0x7d, 0x6d, 0xdb, - 0x64, 0x9a, 0x84, 0xe7, 0xcc, 0xb9, 0x99, 0x7b, 0xb7, 0x65, - 0x1e, 0xc3, 0xfc, 0x4f, 0x7a, 0xc6, 0xf8, 0x4b, 0xf0, 0x9a, - 0x2f, 0x4, 0x5b, 0xfd, 0xbf, 0x50, 0x9, 0x36, 0xb5, 0x2a, - 0xe0, 0x95, 0x39, 0x58, 0x14, 0xff, 00, 0xa, 0xfb, 0xfa, - 0x9f, 0xc3, 0xeb, 0xe9, 0x35, 0xfa, 0x86, 0x47, 0x94, 0x3c, - 0x1a, 0xfa, 0xc5, 0x75, 0xef, 0xbd, 0x97, 0x65, 0xfe, 0x67, - 0xd0, 0xe0, 0xf0, 0xbe, 0xcb, 0xdf, 0x9e, 0xff, 00, 0x90, - 0x51, 0x45, 0x23, 0x30, 0x55, 0x24, 0x9c, 0x1, 0xc9, 0x35, - 0xf5, 0xe7, 0xa8, 0x71, 0xba, 0xef, 0xc5, 0x8d, 0xf, 0xc3, - 0x5e, 0x29, 0xfe, 0xc4, 0xd4, 0x64, 0x7b, 0x77, 0xf2, 0x96, - 0x43, 0x73, 0xb7, 0x31, 0xa9, 0x39, 0xf9, 0x5b, 0x1c, 0x8e, - 0x30, 0x73, 0x8c, 0x73, 0x5d, 0x55, 0x8e, 0xa3, 0x6b, 0xaa, - 0x40, 0xb3, 0xd9, 0xdc, 0xc5, 0x75, 0xb, 0x72, 0x24, 0x85, - 0xc3, 0x29, 0xfc, 0x45, 0x7c, 0x75, 0xe3, 0x8d, 0x78, 0xf8, - 0x9b, 0xc5, 0xba, 0xa6, 0xa5, 0x9c, 0xa4, 0xd3, 0xb7, 0x97, - 0xfe, 0xe0, 0xe1, 0x7f, 0x40, 0x2a, 0x86, 0x93, 0xae, 0x6a, - 0x1a, 0xd, 0xc8, 0xb8, 0xd3, 0xaf, 0x67, 0xb2, 0x97, 0xfb, - 0xd0, 0xb9, 0x5c, 0xfd, 0x7d, 0x7f, 0x1a, 0xfc, 0xf5, 0x71, - 0x3c, 0xa9, 0xd7, 0x9c, 0x67, 0xe, 0x68, 0x5d, 0xda, 0xda, - 0x3b, 0x7e, 0xbf, 0x81, 0xe1, 0xac, 0xc1, 0xa9, 0xb4, 0xd5, - 0xd1, 0xf6, 0xed, 0x15, 0xf3, 0x26, 0x8d, 0xfb, 0x43, 0x78, - 0x9f, 0x4e, 0xda, 0xb7, 0x82, 0xd7, 0x53, 0x8c, 0x75, 0xf3, - 0x63, 0xd8, 0xe7, 0xf1, 0x5c, 0xf, 0xd2, 0xbb, 0x6d, 0x2f, - 0xf6, 0x96, 0xd2, 0xa6, 0x55, 0x1a, 0x86, 0x95, 0x77, 0x6c, - 0xdd, 0xcc, 0xc, 0xb2, 0x2f, 0xeb, 0xb4, 0xd7, 0xd0, 0x51, - 0xcf, 0xf0, 0x15, 0xb7, 0x9f, 0x2b, 0xf3, 0x5f, 0xd2, 0x3b, - 0x61, 0x8d, 0xa3, 0x2e, 0xb6, 0x3d, 0x96, 0x8a, 0xf3, 0xcb, - 0x5f, 0x8f, 0x5e, 0xe, 0xb8, 0xc6, 0xeb, 0xe9, 0xad, 0xcf, - 0xa4, 0xb6, 0xef, 0xfd, 0x1, 0xad, 0x8, 0xbe, 0x31, 0x78, - 0x3a, 0x51, 0xc6, 0xb9, 0x2, 0xff, 00, 0xbc, 0xae, 0x3f, - 0x98, 0xaf, 0x4a, 0x39, 0x86, 0xe, 0x7f, 0xd, 0x58, 0xfd, - 0xe8, 0xe8, 0x55, 0xe9, 0x3d, 0xa4, 0xbe, 0xf3, 0xb3, 0xa2, - 0xb8, 0xa9, 0xfe, 0x32, 0xf8, 0x36, 0x1, 0x93, 0xad, 0xc4, - 0xff, 00, 0xf5, 0xce, 0x37, 0x6f, 0xe4, 0x2b, 0x9b, 0xd7, - 0x7f, 0x68, 0xcd, 0x2, 0xca, 0x16, 0x1a, 0x65, 0xbd, 0xce, - 0xa3, 0x3f, 0xf0, 0xee, 0x5f, 0x2a, 0x3f, 0xc4, 0x9e, 0x7f, - 0x4a, 0x8a, 0x99, 0x9e, 0xa, 0x92, 0xbc, 0xaa, 0xc7, 0xef, - 0xbf, 0xe4, 0x29, 0x62, 0x29, 0x45, 0x5d, 0xc9, 0x16, 0xbf, - 0x68, 0x6d, 0x4a, 0xde, 0xd7, 0xc0, 0x46, 0xd6, 0x42, 0x3e, - 0xd1, 0x75, 0x71, 0x18, 0x89, 0x7b, 0xfc, 0xa7, 0x73, 0x1f, - 0xc8, 0x63, 0xf1, 0xaf, 0x98, 0xeb, 0x7b, 0xc6, 0x3e, 0x35, - 0xd4, 0xfc, 0x71, 0xaa, 0x7d, 0xb7, 0x52, 0x90, 0x12, 0xa3, - 0x6c, 0x50, 0xc6, 0x30, 0x91, 0xaf, 0xa0, 0x1f, 0xd7, 0xad, - 0x60, 0xd7, 0xe5, 0x99, 0xbe, 0x3a, 0x38, 0xfc, 0x53, 0xab, - 0x5, 0xee, 0xa5, 0x64, 0x7c, 0xe6, 0x26, 0xb2, 0xad, 0x53, - 0x99, 0x6c, 0x14, 0x51, 0x45, 0x78, 0xa7, 0x28, 0x55, 0xcd, - 0x1e, 0xc5, 0xb5, 0x3d, 0x5e, 0xca, 0xcd, 0x46, 0x5a, 0xe2, - 0x74, 0x88, 0x1, 0xfe, 0xd3, 0x1, 0xfd, 0x6a, 0x9d, 0x7a, - 0x77, 0xc0, 0x1f, 0xa, 0x9d, 0x73, 0xc6, 0x1f, 0xda, 0x12, - 0xa9, 0x36, 0xda, 0x6a, 0xf9, 0xb9, 0xec, 0x64, 0x3c, 0x20, - 0xfe, 0x67, 0xf0, 0x15, 0xdb, 0x82, 0xc3, 0xcb, 0x15, 0x88, - 0x85, 0x18, 0xf5, 0x7f, 0x87, 0x5f, 0xc0, 0xd6, 0x94, 0x1d, - 0x49, 0xa8, 0xae, 0xa7, 0xd3, 0x68, 0xa1, 0x14, 0x28, 0xe8, - 0x6, 0x29, 0xd4, 0x51, 0x5f, 0xb9, 0x9f, 0x60, 0x14, 0x51, - 0x45, 00, 0x56, 0xd4, 0x5f, 0xcb, 0xb0, 0xb8, 0x6e, 0x98, - 0x43, 0xfc, 0xab, 0xe1, 0x1f, 0x8b, 0xd7, 0x1e, 0x77, 0x88, - 0xe5, 0xef, 0xf3, 0x1f, 0xe7, 0x5f, 0x72, 0xf8, 0x92, 0x5f, - 0x27, 0x43, 0xbc, 0x6e, 0x98, 0x8c, 0xd7, 0xc1, 0x5f, 0x12, - 0xa6, 0xf3, 0xbc, 0x45, 0x3f, 0xb3, 0x1a, 0xf8, 0xce, 0x22, - 0x97, 0xbb, 0x4e, 0x3e, 0x67, 0xc9, 0xf1, 0xc, 0xad, 0x41, - 0x23, 0xc8, 0x3e, 0x20, 0x4b, 0xb3, 0x4a, 0x9b, 0xe8, 0x6b, - 0xe9, 0x1f, 0xf8, 0x25, 0xa6, 0x9e, 0x23, 0xf8, 0x57, 0xe3, - 0x5b, 0xfc, 0x7c, 0xd7, 0x5e, 0x20, 0x64, 0xcf, 0xb2, 0x41, - 0x1f, 0xff, 00, 0x14, 0x6b, 0xe6, 0x1f, 0x89, 0x93, 0x6c, - 0xd2, 0x65, 0xfa, 0x1f, 0xe5, 0x5f, 0x60, 0x7f, 0xc1, 0x32, - 0x6c, 0x3e, 0xcd, 0xfb, 0x35, 0x1b, 0xad, 0xb8, 0x37, 0xba, - 0xe5, 0xec, 0xd9, 0xf5, 00, 0xaa, 0x7f, 0xec, 0x95, 0xd9, - 0x92, 0xc6, 0xd4, 0xcf, 0x99, 0xe1, 0x18, 0xdf, 0x13, 0x5e, - 0x7e, 0x87, 0xd6, 0x74, 0x51, 0x45, 0x7d, 0x39, 0xfa, 0x90, - 0x57, 0x82, 0xfe, 0xd6, 0xde, 0x35, 0x3a, 0x3f, 0x84, 0x6d, - 0x3c, 0x3f, 0x3, 0x62, 0x7d, 0x56, 0x4d, 0xd2, 0xe0, 0xf2, - 0x22, 0x42, 0xf, 0xea, 0xd8, 0x1f, 0x81, 0xaf, 0x7a, 0xaf, - 0x85, 0xbf, 0x68, 0x3f, 0x1a, 0x1f, 0x1a, 0x7c, 0x4b, 0xd4, - 0x1a, 0x29, 0x4, 0x96, 0x5a, 0x79, 0xfb, 0x15, 0xbe, 0xd2, - 0x70, 0x42, 0x9f, 0x98, 0xfe, 0x2d, 0x9f, 0xc8, 0x57, 0x85, - 0x9c, 0xe2, 0x3d, 0x86, 0x15, 0xa5, 0xbc, 0xb4, 0xff, 00, - 0x33, 0xe7, 0xb3, 0xdc, 0x4f, 0xd5, 0xf0, 0x6e, 0x29, 0xeb, - 0x2d, 0x3f, 0xcf, 0xf0, 0x39, 0x5f, 0x2, 0xf8, 0x7e, 0x4f, - 0x12, 0xf8, 0xa3, 0x4f, 0xd3, 0xe3, 0x5d, 0xde, 0x6c, 0xaa, - 0xf, 0xd3, 0x3c, 0xd7, 0xe8, 0x46, 0x95, 0xa7, 0xc7, 0xa5, - 0x69, 0xd6, 0xf6, 0x91, 00, 0xb1, 0xc2, 0x81, 00, 0x1e, - 0xd5, 0xf2, 0xef, 0xec, 0x9d, 0xe0, 0xff, 00, 0xb6, 0x6b, - 0x77, 0x7a, 0xd4, 0xc9, 0x98, 0xed, 0xd3, 0x6c, 0x64, 0x8e, - 0x37, 0x1a, 0xfa, 0xb6, 0xb8, 0xb8, 0x7f, 0xf, 0xc9, 0x46, - 0x55, 0xde, 0xf2, 0xfc, 0x91, 0x87, 0xf, 0xe1, 0xbd, 0x8e, - 0x1b, 0xda, 0x3d, 0xe5, 0xf9, 0x5, 0x14, 0x51, 0x5f, 0x54, - 0x7d, 0x41, 0xf9, 0x87, 0xff, 00, 0x5, 0x9e, 0xf8, 0xdd, - 0x1d, 0xb6, 0x8b, 0xe1, 0x2f, 0x85, 0x76, 0x17, 0x2c, 0x2e, - 0x2e, 0x65, 0xfe, 0xda, 0xd4, 0xe3, 0x46, 0xc0, 0xf2, 0x97, - 0x72, 0x40, 0x8d, 0xeb, 0x96, 0xde, 0xd8, 0xff, 00, 0x61, - 0x4d, 0x7e, 0x72, 0xfe, 0xcf, 0x7f, 0xa, 0xe5, 0xf8, 0xdb, - 0xf1, 0xb3, 0xc1, 0xbe, 0x7, 0x89, 0xfc, 0xb5, 0xd6, 0x75, - 0x8, 0xe0, 0x99, 0xf3, 0x8d, 0xb0, 0x8c, 0xbc, 0xa4, 0x7b, - 0x88, 0xd5, 0xc8, 0xf7, 0xaf, 0x55, 0xff, 00, 0x82, 0x90, - 0x6b, 0xf7, 0x9a, 0xff, 00, 0xed, 0x9f, 0xf1, 0x1c, 0xdd, - 0xc8, 0xce, 0xb6, 0x77, 0x30, 0x59, 0x40, 0xac, 0x73, 0xb2, - 0x34, 0xb7, 0x8c, 00, 0x3d, 0xb2, 0x58, 0xff, 00, 0xc0, - 0x8d, 0x7c, 0xfb, 0xe1, 0x5f, 0x15, 0x6a, 0xfe, 0x7, 0xf1, - 0x1e, 0x9d, 0xaf, 0xe8, 0x3a, 0x84, 0xfa, 0x56, 0xb3, 0xa7, - 0xcc, 0xb7, 0x16, 0xb7, 0x96, 0xcd, 0xb6, 0x48, 0x9c, 0x74, - 0x20, 0xff, 00, 0x9c, 0xf4, 0xaa, 0x33, 0x6f, 0x53, 0xfa, - 0x71, 0x51, 0xa7, 0xf8, 0x4b, 0xc3, 0xc0, 0x7c, 0x96, 0x7a, - 0x5e, 0x99, 0x6b, 0x8f, 0x45, 0x8a, 0x18, 0xd3, 0xf9, 0x5, - 0x5f, 0xd2, 0xbf, 0xe, 0xbe, 0x24, 0x7f, 0xc1, 0x4e, 0x7e, - 0x37, 0x6a, 0x3f, 0x13, 0x7c, 0x4b, 0xa8, 0xf8, 0x57, 0xc6, - 0xd3, 0xe9, 0x9e, 0x1a, 0x9a, 0xfe, 0x66, 0xd3, 0x74, 0xe3, - 0x67, 0x6e, 0xe9, 0xd, 0xbe, 0xe2, 0x23, 0x1f, 0x34, 0x64, - 0xe7, 0x68, 0x4, 0xe4, 0x9e, 0x49, 0xa8, 0x3c, 0x61, 0xff, - 00, 0x5, 0x45, 0xf8, 0xd9, 0xe3, 0xcf, 0x86, 0xda, 0xd7, - 0x83, 0x35, 0x89, 0xf4, 0x49, 0xac, 0xf5, 0x6b, 0x17, 0xb0, - 0xb9, 0xbe, 0x86, 0xc5, 0xa2, 0xba, 0xf2, 0xdd, 0x76, 0xb1, - 0xc, 0xae, 0x14, 0x31, 0x19, 0x19, 0xdb, 0xdc, 0xd7, 0xc8, - 0xb4, 0x92, 0x1b, 0x7d, 0x8f, 0xdf, 0x7f, 0xf8, 0x27, 0x7f, - 0xc4, 0x8f, 0x88, 0xff, 00, 0x18, 0xbe, 0x1, 0x47, 0xe3, - 0x6f, 0x88, 0xfa, 0xc2, 0xea, 0xb7, 0x7a, 0xad, 0xf4, 0xa3, - 0x4f, 0x9, 0x69, 0x1d, 0xb8, 0x8e, 0xda, 0x33, 0xe5, 0xe4, - 0x84, 0x51, 0x92, 0xce, 0xae, 0x72, 0x7b, 0x1, 0x5f, 0x50, - 0xd7, 0xe3, 0xaf, 0xc3, 0xf, 0xf8, 0x2b, 0xf6, 0xa3, 0xf0, - 0xbf, 0xc0, 0xfa, 0x7, 0x85, 0x34, 0xff, 00, 0x84, 0xda, - 0x50, 0xd2, 0xb4, 0x6b, 0x38, 0xac, 0xa0, 0x58, 0x75, 0x69, - 0x23, 0x25, 0x51, 0x40, 0xc9, 0xfd, 0xd1, 0xe4, 0xf2, 0x4f, - 0xb9, 0x35, 0xe8, 0x5a, 0x7f, 0xfc, 0x16, 0xee, 0x16, 0x61, - 0xf6, 0xef, 0x84, 0xb2, 0x46, 0xbd, 0xcd, 0xbe, 0xb8, 0x1f, - 0xf9, 0xc0, 0x28, 0xb1, 0x57, 0x47, 0xea, 0x45, 0x15, 0xf9, - 0xbd, 0x65, 0xff, 00, 0x5, 0xb1, 0xf0, 0x3c, 0x85, 0x7e, - 0xd7, 0xf0, 0xe3, 0xc4, 0x10, 0xe, 0xe6, 0x1b, 0xc8, 0x24, - 0xc7, 0xe7, 0xb6, 0xba, 0xed, 0x3, 0xfe, 0xb, 0x19, 0xf0, - 0x8b, 0x5c, 0xbd, 0xb6, 0xb3, 0x3e, 0x19, 0xf1, 0x84, 0x17, - 0x57, 0x12, 0x2c, 0x51, 0xc6, 0x2d, 0x20, 0x93, 0x73, 0xb1, - 0xc0, 0x51, 0xb6, 0x6e, 0x72, 0x48, 0xed, 0x48, 0x2e, 0x8f, - 0xbc, 0xe8, 0xa8, 0xad, 0xa6, 0x37, 0x16, 0xd1, 0x4a, 0x63, - 0x78, 0x4b, 0xa0, 0x63, 0x1c, 0x98, 0xdc, 0xb9, 0x19, 0xc1, - 0xc7, 0x71, 0x59, 0x1e, 0x36, 0xf1, 0xae, 0x89, 0xf0, 0xe7, - 0xc2, 0x9a, 0x9f, 0x89, 0x7c, 0x47, 0x7f, 0x1e, 0x97, 0xa2, - 0x69, 0xb0, 0x99, 0xee, 0xee, 0xe5, 0x4, 0xac, 0x48, 0x3b, - 0xe0, 0x2, 0x4f, 0x5e, 0x80, 0x50, 0x33, 0x72, 0x8a, 0xf0, - 0x2b, 0xf, 0xdb, 0xdb, 0xf6, 0x7d, 0xd4, 0x63, 0xf, 0x1f, - 0xc5, 0x6f, 0xf, 0xc6, 0xf, 0x6b, 0x89, 0x9a, 0x23, 0xf9, - 0x32, 0x8a, 0xdc, 0xb1, 0xfd, 0xb1, 0x7e, 0x6, 0xea, 0x3f, - 0xea, 0x3e, 0x2d, 0x78, 0x40, 0xff, 00, 0xbf, 0xac, 0x42, - 0x9f, 0xfa, 0x13, 0xa, 00, 0xf6, 0x1a, 0x2b, 0x82, 0xd2, - 0x7e, 0x3e, 0x7c, 0x33, 0xd7, 0xbf, 0xe4, 0x1d, 0xf1, 0xb, - 0xc2, 0xf7, 0xdf, 0xf5, 0xc3, 0x58, 0xb7, 0x7f, 0xe4, 0xf5, - 0xd1, 0xd9, 0x78, 0xd7, 0xc3, 0xda, 0x91, 0x2, 0xd3, 0x5e, - 0xd3, 0x2e, 0x89, 0xe8, 0x21, 0xbc, 0x8d, 0xf3, 0xf9, 0x35, - 00, 0x6d, 0x51, 0x51, 0xa5, 0xc4, 0x52, 0x7d, 0xc9, 0x51, - 0xbf, 0xdd, 0x60, 0x6a, 0x4a, 00, 0x28, 0xa2, 0x8a, 00, - 0x2a, 0xbd, 0xfe, 0x9f, 0x6d, 0xaa, 0x5a, 0x49, 0x6b, 0x79, - 0x6f, 0x1d, 0xd5, 0xb4, 0x98, 0xdf, 0x14, 0xca, 0x19, 0x5b, - 0x9c, 0xf2, 0xf, 0xbd, 0x58, 0xa2, 0x93, 0x49, 0xab, 0x30, - 0x6a, 0xfa, 0x33, 0x96, 0x9b, 0xe1, 0x77, 0x84, 0xe7, 0x1f, - 0x36, 0x81, 0x62, 0x3f, 0xdc, 0x8b, 0x6f, 0xf2, 0xaa, 0x53, - 0x7c, 0x17, 0xf0, 0x6c, 0xfd, 0x74, 0x54, 0x5f, 0xf7, 0x25, - 0x91, 0x7f, 0x93, 0x57, 0x6d, 0x45, 0x72, 0x4b, 0x5, 0x85, - 0x96, 0xf4, 0xa3, 0xf7, 0x23, 0x27, 0x46, 0x9b, 0xde, 0x2b, - 0xee, 0x3c, 0xf6, 0x4f, 0x80, 0xde, 0xc, 0x7e, 0x9a, 0x74, - 0xa9, 0xfe, 0xed, 0xd4, 0x9f, 0xd5, 0xaa, 0xac, 0x9f, 0xb3, - 0xd7, 0x84, 0x9f, 0xee, 0xa5, 0xe4, 0x7f, 0xee, 0xdc, 0x7f, - 0x88, 0xaf, 0x4c, 0xa2, 0xb0, 0x79, 0x66, 0x9, 0xef, 0x46, - 0x3f, 0x72, 0x23, 0xea, 0xf4, 0x7f, 0x95, 0x18, 0x7e, 0xf, - 0xf0, 0x85, 0x97, 0x82, 0x74, 0x93, 0xa7, 0x58, 0x3c, 0xcf, - 0x6f, 0xe6, 0x34, 0xa3, 0xcf, 0x60, 0xc4, 0x13, 0x8c, 0x8c, - 0x80, 0x38, 0xe2, 0xb7, 0x28, 0xa2, 0xbb, 0xe9, 0xd3, 0x8d, - 0x28, 0xa8, 0x41, 0x59, 0x23, 0x68, 0xc5, 0x45, 0x59, 0x6c, - 0x14, 0x51, 0x45, 0x68, 0x50, 0x57, 0x25, 0xf1, 0x4b, 0xc3, - 0xfa, 0x9f, 0x8a, 0x7c, 0x1f, 0x73, 0xa5, 0xe9, 0x46, 0x21, - 0x3c, 0xee, 0x81, 0xcc, 0xce, 0x50, 0x6c, 0x7, 0x27, 0x9c, - 0x1f, 0x41, 0x5d, 0x6d, 0x15, 0x8d, 0x6a, 0x51, 0xaf, 0x4e, - 0x54, 0xa5, 0xb3, 0x56, 0x22, 0x71, 0x53, 0x8b, 0x8b, 0xea, - 0x7c, 0xb5, 0x2f, 0xc0, 0xf, 0x18, 0x47, 0xd2, 0xd6, 0xda, - 0x4f, 0xf7, 0x2e, 0x17, 0xfa, 0xe2, 0xa9, 0xcb, 0xf0, 0x47, - 0xc6, 0x71, 0xff, 00, 0xcc, 0x1f, 0x7f, 0xfb, 0xb3, 0xc7, - 0xff, 00, 0xc5, 0x57, 0xd6, 0x34, 0x57, 0xcb, 0xcb, 0x86, - 0x30, 0x4f, 0x69, 0x49, 0x7c, 0xd7, 0xf9, 0x1e, 0x7b, 0xcb, - 0xe9, 0x77, 0x67, 0xc8, 0x53, 0x7c, 0x25, 0xf1, 0x7c, 0x7, - 0xe6, 0xd0, 0x6e, 0x8f, 0xfb, 0x9b, 0x5b, 0xf9, 0x1a, 0xa3, - 0x3f, 0xc3, 0xef, 0x13, 0x5b, 0xff, 00, 0xac, 0xd0, 0x75, - 0x1, 0xf4, 0xb7, 0x63, 0xfc, 0x85, 0x7d, 0x97, 0x45, 0x61, - 0x2e, 0x16, 0xc3, 0x7d, 0x9a, 0x92, 0xfc, 0x3f, 0xc8, 0x87, - 0x97, 0x43, 0xa4, 0x99, 0xe7, 0xdf, 0x3, 0xbc, 0x37, 0x2f, - 0x87, 0x7c, 0xb, 0xf, 0xda, 0x61, 0x78, 0x2e, 0xee, 0xe5, - 0x79, 0xe4, 0x49, 0x14, 0xab, 0x2f, 0x3b, 0x54, 0x10, 0x7a, - 0x70, 0xa0, 0xfe, 0x35, 0xe8, 0x34, 0x51, 0x5f, 0x59, 0x86, - 0xa1, 0x1c, 0x35, 0x18, 0xd1, 0x8e, 0xd1, 0x56, 0x3d, 0x2a, - 0x70, 0x54, 0xe0, 0xa0, 0xba, 0x5, 0x14, 0x51, 0x5d, 0x26, - 0x81, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x6, 0x57, - 0x88, 0xfc, 0x33, 0xa6, 0xf8, 0xb3, 0x4d, 0x7b, 0x1d, 0x4e, - 0xd9, 0x6e, 0x20, 0x6e, 0x46, 0x78, 0x64, 0x3e, 0xaa, 0x7a, - 0x83, 0x5f, 0x3a, 0xf8, 0xef, 0xe0, 0x66, 0xb1, 0xe1, 0x97, - 0x96, 0xe7, 0x4d, 0x56, 0xd5, 0xb4, 0xd1, 0xc8, 0x31, 0x8c, - 0xcc, 0x83, 0xfd, 0xa5, 0x1d, 0x7e, 0xa3, 0xf2, 0x15, 0xf4, - 0xfd, 0x15, 0xe3, 0xe3, 0xf2, 0xac, 0x3e, 0x60, 0xbf, 0x78, - 0xad, 0x2e, 0xeb, 0x7f, 0xf8, 0x27, 0x2d, 0x6c, 0x34, 0x2b, - 0xfc, 0x5b, 0xf7, 0x3e, 0x15, 0x20, 0xa9, 0x20, 0x8c, 0x11, - 0xc1, 0x7, 0xb5, 0x25, 0x7d, 0x89, 0xe2, 0x7f, 0x86, 0xde, - 0x1e, 0xf1, 0x70, 0x63, 0x7f, 0xa7, 0x47, 0xe7, 0x9f, 0xf9, - 0x78, 0x87, 0xe4, 0x90, 0x7e, 0x23, 0xaf, 0xe3, 0x9a, 0xf3, - 0x2d, 0x6b, 0xf6, 0x66, 0x53, 0xb9, 0xb4, 0x9d, 0x64, 0x8f, - 0x48, 0xaf, 0x23, 0xcf, 0xfe, 0x3c, 0xbf, 0xe1, 0x5f, 0x5, - 0x89, 0xe1, 0xbc, 0x65, 0x17, 0x7a, 0x56, 0x9a, 0xfb, 0x9f, - 0xdc, 0xff, 00, 0xcc, 0xf1, 0xaa, 0x60, 0x2a, 0xc7, 0xe1, - 0xd4, 0xf0, 0x8a, 0x2b, 0xd0, 0x35, 0x3f, 0x81, 0x5e, 0x30, - 0xd3, 0xdc, 0x84, 0xb0, 0x8e, 0xf5, 0x7, 0xf1, 0xdb, 0x4c, - 0xa7, 0xf4, 0x62, 0xf, 0xe9, 0x58, 0x57, 0x3f, 0xe, 0x3c, - 0x53, 0x68, 0x71, 0x26, 0x81, 0x7f, 0xff, 00, 00, 0x81, - 0x9c, 0x7e, 0x99, 0xaf, 0xa, 0xa6, 0x7, 0x15, 0x49, 0xda, - 0x74, 0xa4, 0xbe, 0x4c, 0xe2, 0x74, 0x6a, 0x47, 0x78, 0xb3, - 0x9c, 0xa2, 0xb4, 0xe4, 0xf0, 0xc6, 0xb3, 0x11, 0xc3, 0xe9, - 0x37, 0xca, 0x7d, 0xd, 0xb3, 0xff, 00, 0x85, 0x35, 0x7c, - 0x39, 0xab, 0x31, 0xc0, 0xd2, 0xaf, 0x4f, 0xd2, 0xd9, 0xff, - 00, 0xc2, 0xb9, 0xbd, 0x95, 0x4f, 0xe5, 0x7f, 0x71, 0x1c, - 0xb2, 0xec, 0x67, 0x51, 0x5b, 0xf6, 0xfe, 00, 0xf1, 0x2d, - 0xd1, 0x1e, 0x56, 0x83, 0xa8, 0xb6, 0x7a, 0x13, 0x6c, 0xe0, - 0x7e, 0x64, 0x56, 0xe6, 0x9d, 0xf0, 0x47, 0xc6, 0x3a, 0x83, - 0xa8, 0x3a, 0x5f, 0xd9, 0x50, 0xff, 00, 0x1d, 0xc4, 0xa8, - 0xa0, 0x7e, 0x19, 0x27, 0xf4, 0xae, 0x88, 0x60, 0xb1, 0x35, - 0x3e, 0xa, 0x52, 0x7f, 0x26, 0x5a, 0xa5, 0x52, 0x5b, 0x45, - 0x9c, 0x25, 0x15, 0xee, 0x3a, 0x2f, 0xec, 0xcf, 0x2b, 0x6d, - 0x6d, 0x5b, 0x58, 0x54, 0xf5, 0x8a, 0xce, 0x3c, 0x9f, 0xfb, - 0xe9, 0xbf, 0xc2, 0xbd, 0x2f, 0xc3, 0x1f, 0xa, 0x7c, 0x35, - 0xe1, 0x4d, 0xaf, 0x6b, 0xa7, 0xac, 0xf7, 0x2b, 0xff, 00, - 0x2f, 0x17, 0x5f, 0xbc, 0x7f, 0xc3, 0x3c, 0xf, 0xc0, 0xa, - 0xf7, 0x30, 0xdc, 0x39, 0x8d, 0xac, 0xef, 0x51, 0x28, 0x2f, - 0x3d, 0x5f, 0xdc, 0xbf, 0xe0, 0x1d, 0x94, 0xf0, 0x35, 0x67, - 0xf1, 0x68, 0x7c, 0xfd, 0xe0, 0xbf, 0x83, 0x9a, 0xff, 00, - 0x8c, 0xc, 0x73, 0x18, 0x7f, 0xb3, 0xb4, 0xf6, 0x23, 0x37, - 0x37, 0x20, 0x82, 0x47, 0xaa, 0xaf, 0x56, 0xfd, 0x7, 0xbd, - 0x7d, 0xf, 0xe0, 0x9f, 0x87, 0x3a, 0x37, 0x81, 0x6d, 0xb6, - 0xd8, 0xc1, 0xe6, 0x5d, 0x32, 0xe2, 0x5b, 0xb9, 0x79, 0x91, - 0xff, 00, 0xc0, 0x7b, 0xa, 0xea, 0x68, 0xaf, 0xba, 0xc0, - 0x64, 0xd8, 0x6c, 0x7, 0xbd, 0x15, 0xcd, 0x2e, 0xef, 0xf4, - 0xec, 0x7b, 0x14, 0x30, 0xb4, 0xe8, 0xea, 0xb5, 0x7d, 0xc2, - 0x8a, 0x28, 0xaf, 0x74, 0xec, 0xa, 0xe5, 0x7e, 0x28, 0x6b, - 0xe3, 0xc3, 0x7e, 0x5, 0xd5, 0xae, 0xc3, 0x6d, 0x95, 0xa2, - 0x30, 0xc4, 0x7b, 0xef, 0x7f, 0x94, 0x7e, 0x59, 0xcf, 0xe1, - 0x5d, 0x55, 0x78, 0xc7, 0xed, 0x29, 0x71, 0x76, 0xfa, 0x46, - 0x95, 0x69, 0xd, 0xbc, 0xcf, 0x6d, 0xe6, 0xb4, 0xf3, 0x4a, - 0x88, 0x4a, 0x29, 0x3, 0xa, 0x9, 0xe9, 0xfc, 0x4d, 0xf9, - 0x57, 0x99, 0x99, 0xd7, 0x78, 0x7c, 0x1d, 0x4a, 0x91, 0xde, - 0xda, 0x7c, 0xf4, 0x39, 0xf1, 0x13, 0x70, 0xa5, 0x29, 0x23, - 0xe7, 0xba, 0x28, 0xa2, 0xbf, 0x12, 0x3e, 0x48, 0x28, 0xa2, - 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, - 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0xbb, 0x3f, 0x5, 0x7c, - 0x27, 0xd7, 0xbc, 0x69, 0x2c, 0x4f, 0x15, 0xbb, 0x59, 0x69, - 0xed, 0xc9, 0xbd, 0xb8, 0x5c, 0x2e, 0x3f, 0xd9, 0x1d, 0x5b, - 0xf0, 0xe3, 0xde, 0xb7, 0xa3, 0x42, 0xae, 0x22, 0x6a, 0x9d, - 0x18, 0xb6, 0xfc, 0x8b, 0x84, 0x25, 0x37, 0x68, 0xab, 0xb3, - 0x9c, 0xd0, 0x34, 0x1b, 0xdf, 0x13, 0x6a, 0xd6, 0xfa, 0x76, - 0x9f, 0x17, 0x9d, 0x73, 0x33, 0x60, 0xe, 0xca, 0x3b, 0xb1, - 0x3d, 0x80, 0xf5, 0xaf, 0xae, 0xbc, 0xb, 0xe0, 0xeb, 0x5f, - 0x3, 0xf8, 0x7a, 0xd, 0x3a, 0xdc, 0x6, 0x90, 0xd, 0xf3, - 0xcc, 0x6, 0xc, 0xb2, 0x1e, 0xa7, 0xfa, 0xf, 0x6a, 0x87, - 0xc0, 0xdf, 0xf, 0xb4, 0xbf, 0x1, 0x58, 0x18, 0x2c, 0x50, - 0xc9, 0x71, 0x26, 0x3c, 0xeb, 0xa9, 00, 0xdf, 0x21, 0xfe, - 0x83, 0xd8, 0x57, 0x4f, 0x5f, 0xa9, 0x64, 0xd9, 0x3a, 0xcb, - 0xe3, 0xed, 0x6a, 0xeb, 0x51, 0xfe, 0xb, 0xb7, 0xf9, 0x9f, - 0x43, 0x85, 0xc2, 0xfb, 0x5, 0xcd, 0x2f, 0x88, 0x28, 0xa2, - 0x8a, 0xfa, 0x73, 0xd1, 0xa, 0x28, 0xa2, 0x80, 0x30, 0x7c, - 0x73, 0x37, 0x91, 0xe1, 0x8b, 0xd6, 0xe9, 0xf2, 0xe2, 0xbe, - 0x8, 0xf1, 0xc4, 0xbe, 0x66, 0xbd, 0x72, 0x73, 0xfc, 0x46, - 0xbe, 0xe8, 0xf8, 0x9f, 0x37, 0x93, 0xe1, 0x2b, 0xa3, 0x9a, - 0xf8, 0x2f, 0xc5, 0xd, 0xbf, 0x55, 0xba, 0x6c, 0xff, 00, - 0x11, 0xaf, 0x84, 0xe2, 0x19, 0x7e, 0xfa, 0x9c, 0x4f, 0x88, - 0xe2, 0x49, 0x7b, 0x91, 0x47, 0x8f, 0x7c, 0x59, 0x9f, 0xcb, - 0xd2, 0x64, 0xe7, 0xb1, 0xfe, 0x55, 0xf7, 0x67, 0xfc, 0x13, - 0xa2, 0xc9, 0xad, 0x3f, 0x64, 0xaf, 0x8, 0xbb, 0xc, 0x1b, - 0x89, 0xaf, 0x67, 0xfc, 0xd, 0xd4, 0xa3, 0xfa, 0x57, 0xc0, - 0x5f, 0x19, 0xa6, 0xf2, 0xf4, 0xa9, 0x79, 0xe3, 0x69, 0xaf, - 0xd2, 0x7f, 0xd8, 0xaf, 0x4a, 0x1a, 0x3f, 0xec, 0xaf, 0xf0, - 0xda, 00, 0x41, 0xdf, 0xa5, 0x25, 0xc1, 0xc7, 0xac, 0x8c, - 0xd2, 0x7f, 0xec, 0xd5, 0xed, 0xe5, 0xa, 0xd4, 0x91, 0xe6, - 0xf0, 0x74, 0x7d, 0xda, 0xf3, 0xf3, 0x3d, 0xb2, 0x8a, 0x28, - 0xaf, 0xa0, 0x3f, 0x49, 0x39, 0x5f, 0x8a, 0x1e, 0x30, 0x4f, - 0x2, 0x78, 0x13, 0x56, 0xd6, 0x18, 0xfe, 0xf2, 0x18, 0xb6, - 0xc2, 0x3d, 0x65, 0x6f, 0x95, 0x7, 0xe6, 0x45, 0x7e, 0x7e, - 0xa7, 0x99, 0x77, 0x71, 0x96, 0x26, 0x49, 0xa5, 0x6c, 0xb3, - 0x1e, 0x4b, 0x31, 0x3c, 0x9f, 0xce, 0xbe, 0x93, 0xfd, 0xaf, - 0xfc, 0x64, 0xf, 0xf6, 0x4f, 0x85, 0xa1, 0x3c, 0xff, 00, - 0xc7, 0xf5, 0xc1, 0xf6, 0xe5, 0x50, 0x7f, 0xe8, 0x47, 0xf0, - 0x15, 0xe3, 0xbf, 0x8, 0x3c, 0x2a, 0xde, 0x2d, 0xf1, 0xd6, - 0x9b, 0x69, 0xb4, 0xb4, 0x42, 0x40, 0xf2, 0x7b, 0x28, 0xe6, - 0xbf, 0x3e, 0xce, 0xab, 0x4b, 0x13, 0x8b, 0x8e, 0x1e, 0x1d, - 0x34, 0xf9, 0xb3, 0xf3, 0xbc, 0xe2, 0xa3, 0xc6, 0xe3, 0xe3, - 0x86, 0x86, 0xd1, 0xd3, 0xe6, 0xf7, 0xfd, 0xf, 0xae, 0xfe, - 0x7, 0x78, 0x51, 0x7c, 0x2b, 0xf0, 0xff, 00, 0x4f, 0x8c, - 0xa8, 0x59, 0xe7, 0x5f, 0x36, 0x43, 0x8e, 0xe6, 0xbd, 0x2, - 0xa3, 0xb7, 0x81, 0x2d, 0xa0, 0x8e, 0x14, 0x1b, 0x51, 0x14, - 0x28, 0x3, 0xd0, 0x54, 0x95, 0xf7, 0x54, 0x29, 0x2a, 0x14, - 0xa3, 0x4a, 0x3b, 0x25, 0x63, 0xef, 0xe9, 0x53, 0x54, 0xa1, - 0x18, 0x47, 0x64, 0x14, 0x51, 0x45, 0x6e, 0x6a, 0x7e, 0x70, - 0xff, 00, 0xc1, 0x43, 0xbf, 0xe0, 0x9c, 0x3a, 0xf7, 0xc6, - 0x5f, 0x19, 0x5d, 0x7c, 0x4c, 0xf8, 0x6b, 0xf6, 0x7b, 0x8d, - 0x7a, 0xea, 0x24, 0x1a, 0xae, 0x87, 0x33, 0x88, 0x9a, 0xe9, - 0xd1, 0x42, 0xac, 0xb1, 0x39, 0xf9, 0x77, 0x95, 0x55, 0x52, - 0xad, 0x8c, 0xed, 0x4, 0x1e, 0xb5, 0xf9, 0x9d, 0xe2, 0x4f, - 0xd9, 0xa7, 0xe2, 0xcf, 0x84, 0x2e, 0xe4, 0xb6, 0xd5, 0xfe, - 0x1b, 0x78, 0xaa, 0xce, 0x54, 0xfb, 0xc4, 0xe9, 0x13, 0xba, - 0x7e, 0xe, 0xaa, 0x54, 0xfe, 0x6, 0xbf, 0xa4, 0xfa, 0xe7, - 0xbe, 0x21, 0x78, 0xca, 0xdb, 0xe1, 0xe7, 0x81, 0xb5, 0xef, - 0x13, 0x5e, 0x47, 0x24, 0xd6, 0xfa, 0x55, 0x9c, 0xb7, 0x6d, - 0x14, 0x2a, 0x59, 0xe4, 0xda, 0xa4, 0x84, 0x50, 0x39, 0x2c, - 0xc7, 00, 0x1, 0xdc, 0xd3, 0xb9, 0x2d, 0x5c, 0xfe, 0x63, - 0xef, 0xac, 0x6e, 0x74, 0xcb, 0xb9, 0x6d, 0x6f, 0x2d, 0xe5, - 0xb4, 0xba, 0x85, 0xb6, 0x49, 0x4, 0xe8, 0x51, 0xd1, 0xbd, - 0xa, 0x9e, 0x41, 0xfa, 0xd5, 0x7a, 0xeb, 0x3e, 0x21, 0x5c, - 0x78, 0x93, 0xc5, 0xbe, 0x32, 0xd7, 0x7c, 0x49, 0xae, 0x69, - 0xb7, 0xb0, 0xea, 0x1a, 0xb5, 0xf4, 0xd7, 0xf7, 0x6, 0x68, - 0x1d, 0x70, 0xf2, 0x39, 0x72, 0x39, 0x1d, 0x1, 0x38, 0xaf, - 0xd9, 0xef, 0xf8, 0x27, 0x3f, 0xec, 0xbd, 0xe1, 0xaf, 0x8, - 0x7e, 0xcb, 0x5e, 0x1e, 0xbd, 0xf1, 0x2f, 0x86, 0xf4, 0xcd, - 0x5b, 0x58, 0xf1, 0x29, 0x3a, 0xcc, 0xe7, 0x52, 0xb1, 0x49, - 0x9a, 0x38, 0xe4, 00, 0x42, 0x9f, 0x38, 0x38, 0xc4, 0x6a, - 0xa7, 0x1e, 0xac, 0x69, 0xdc, 0x9b, 0x5c, 0xfc, 0x36, 0xa2, - 0xbf, 0xa4, 0x3d, 0x67, 0xf6, 0x53, 0xf8, 0x37, 0xe2, 0x2, - 0x7f, 0xb4, 0x3e, 0x17, 0xf8, 0x52, 0xe7, 0x3e, 0xba, 0x4c, - 0x23, 0xf9, 0x28, 0xae, 0x53, 0x54, 0xfd, 0x81, 0x7f, 0x67, - 0xbd, 0x5c, 0x62, 0x6f, 0x85, 0x5a, 0xc, 0x5f, 0xf5, 0xeb, - 0x1b, 0xc1, 0xff, 00, 0xa0, 0x30, 0xa5, 0x71, 0xf2, 0x9f, - 0xcf, 0x3d, 0x7d, 0x3f, 0xff, 00, 0x4, 0xe1, 0xf8, 0x2a, - 0x7e, 0x34, 0x7e, 0xd4, 0xfe, 0x18, 0x8e, 0xe2, 0x3, 0x2e, - 0x8f, 0xe1, 0xf6, 0xfe, 0xdc, 0xbe, 0xc8, 0x3b, 0x71, 0x9, - 0x6, 0x25, 0x27, 0xde, 0x53, 0x1f, 0xe0, 0xd, 0x7e, 0xa9, - 0x6a, 0x5f, 0xf0, 0x4c, 0x4f, 0xd9, 0xc3, 0x51, 0x18, 0xff, - 00, 0x84, 00, 0xda, 0xfb, 0xdb, 0x6a, 0x97, 0x69, 0xff, - 00, 0xb5, 0x6b, 0xd0, 0x3e, 00, 0xfe, 0xc8, 0x5f, 0xc, - 0xbf, 0x66, 0x6d, 0x43, 0x59, 0xbd, 0xf0, 0xe, 0x8d, 0x71, - 0xa6, 0xdc, 0xea, 0xd1, 0xc7, 0xd, 0xd3, 0xdc, 0x5e, 0xcb, - 0x72, 0x4a, 0x21, 0x62, 0xa1, 0x7c, 0xc2, 0x76, 0x8c, 0xb1, - 0xce, 0x3a, 0xf1, 0xe9, 0x45, 0xc3, 0x94, 0xf6, 0x7a, 0xfc, - 0xf8, 0xff, 00, 0x82, 0xc6, 0xfc, 0x66, 0x3e, 0x11, 0xf8, - 0x31, 0xa1, 0x7c, 0x3f, 0xb3, 0x98, 0xa5, 0xef, 0x8a, 0x6e, - 0xfc, 0xeb, 0x90, 0xa7, 0x9f, 0xb2, 0x5b, 0x95, 0x62, 0xf, - 0xd6, 0x46, 0x8f, 0xfe, 0xf9, 0x35, 0xfa, 0xf, 0x5f, 0x23, - 0xfe, 0xd6, 0x9f, 0xf0, 0x4f, 0x2d, 0x1b, 0xf6, 0xb2, 0xf1, - 0xd5, 0xaf, 0x8a, 0x35, 0x7f, 0x1c, 0x6b, 0x1a, 0x34, 0xf6, - 0x96, 0x6b, 0x65, 0x6d, 0x65, 0x6f, 0x6f, 0x14, 0x90, 0x44, - 0x80, 0x96, 0x24, 0x3, 0x83, 0x96, 0x66, 0x24, 0xf3, 0xd8, - 0x7a, 0x52, 0x29, 0x9f, 0x83, 0xf4, 0x57, 0xea, 0x9e, 0xa5, - 0xff, 00, 0x4, 0x45, 0xb5, 0x20, 0xfd, 0x83, 0xe2, 0xc4, - 0xca, 0x7b, 0xb, 0x9d, 0x10, 0x1f, 0xd5, 0x66, 0x15, 0xcf, - 0x5d, 0xff, 00, 0xc1, 0x11, 0xbc, 0x42, 0xaa, 0x4d, 0xaf, - 0xc5, 0x6d, 0x32, 0x46, 0xec, 0x26, 0xd1, 0xe4, 0x41, 0xf9, - 0x89, 0x4f, 0xf2, 0xaa, 0xb9, 0x16, 0x67, 0xe6, 0x66, 0x7, - 0xa5, 0x49, 0x14, 0xf2, 0x42, 0x7f, 0x77, 0x23, 0xc7, 0xfe, - 0xeb, 0x11, 0x5f, 0xa2, 0x1a, 0x87, 0xfc, 0x11, 0x57, 0xe2, - 0x44, 0x8, 0x4d, 0x9f, 0x8f, 0x3c, 0x31, 0x74, 0x7b, 0x2c, - 0x91, 0xdc, 0x47, 0xff, 00, 0xb2, 0x1a, 0xe3, 0xf5, 0x4f, - 0xf8, 0x23, 0xd7, 0xc7, 0x5b, 0x32, 0xdf, 0x65, 0xb9, 0xf0, - 0xb5, 0xfa, 0x8e, 0x9e, 0x5e, 0xa4, 0xe8, 0x4f, 0xfd, 0xf5, - 0x10, 0xa2, 0xe1, 0x66, 0x7c, 0x69, 0xa6, 0xf8, 0xcf, 0xc4, - 0x1a, 0x3b, 0x87, 0xb0, 0xd7, 0x75, 0x3b, 0x17, 0x1d, 0x1a, - 0xda, 0xf2, 0x48, 0xcf, 0xe8, 0xc2, 0xba, 0x9d, 0x3f, 0xf6, - 0x87, 0xf8, 0xa7, 0xa5, 0x38, 0x6b, 0x4f, 0x89, 0x1e, 0x2c, - 0x84, 0x8e, 0x9b, 0x75, 0xab, 0x9c, 0xf, 0xc3, 0x7d, 0x7b, - 0xce, 0xa5, 0xff, 00, 0x4, 0xab, 0xfd, 0xa2, 0x74, 0xf0, - 0x4a, 0x78, 0x5b, 0x4f, 0xbd, 0x3, 0xfe, 0x7d, 0x75, 0x68, - 0xe, 0x7f, 0xef, 0xa6, 0x15, 0xc9, 0xea, 0x7f, 0xf0, 0x4e, - 0xbf, 0xda, 0x27, 0x4a, 0x4, 0xbf, 0xc3, 0x2d, 0x46, 0x75, - 0x1d, 0xed, 0xae, 0x2d, 0xe5, 0xfd, 0x16, 0x4c, 0xd0, 0x16, - 0x67, 0x33, 0x61, 0xfb, 0x69, 0x7c, 0x76, 0xd3, 0x48, 0xf2, - 0x3e, 0x2b, 0xf8, 0xa7, 0x8e, 0x82, 0x4d, 0x41, 0xe4, 0x1f, - 0xf8, 0xf6, 0x6b, 0xa1, 0xb4, 0xff, 00, 0x82, 0x86, 0xfe, - 0xd1, 0x56, 0x61, 0x44, 0x7f, 0x14, 0xb5, 0x56, 0x3, 0xfe, - 0x7a, 0xc1, 0x6f, 0x27, 0xfe, 0x85, 0x19, 0xae, 0x67, 0x53, - 0xfd, 0x8d, 0xfe, 0x39, 0x69, 0x19, 0xfb, 0x4f, 0xc2, 0x9f, - 0x15, 0xe0, 0x75, 0x31, 0x69, 0x92, 0x4b, 0xff, 00, 0xa0, - 0x3, 0x5c, 0xdd, 0xd7, 0xec, 0xf7, 0xf1, 0x4a, 0xc7, 0x3f, - 0x68, 0xf8, 0x6f, 0xe2, 0xd8, 0x71, 0xd7, 0x7e, 0x87, 0x72, - 0x3f, 0xf6, 0x4a, 0x3, 0x53, 0xda, 0x2c, 0xbf, 0xe0, 0xa7, - 0x9f, 0xb4, 0x7d, 0x96, 0x3f, 0xe2, 0xbf, 0x17, 00, 0x76, - 0x9f, 0x4a, 0xb4, 0x6c, 0xff, 00, 0xe4, 0x2a, 0xea, 0x34, - 0xff, 00, 0xf8, 0x2b, 0x87, 0xed, 0x5, 0x64, 0x81, 0x65, - 0xd4, 0x3c, 0x3f, 0x7d, 0x8e, 0xf7, 0x1a, 0x4a, 0x82, 0x7f, - 0xef, 0x96, 0x5a, 0xf9, 0x4e, 0xf7, 0xe1, 0xaf, 0x8b, 0xf4, - 0xd0, 0x4d, 0xdf, 0x85, 0x75, 0xbb, 0x50, 0x3a, 0xf9, 0xfa, - 0x74, 0xc9, 0x8f, 0xcd, 0x6b, 0xe, 0xeb, 0x4f, 0xba, 0xb2, - 0x38, 0xb8, 0xb6, 0x9a, 0x3, 0xe9, 0x2c, 0x65, 0x7f, 0x9d, - 0x1, 0x76, 0x7d, 0xe7, 0xa5, 0x7f, 0xc1, 0x66, 0x3e, 0x30, - 0xda, 0x15, 0xfb, 0x6f, 0x87, 0x7c, 0x2b, 0x7e, 0x7, 0x5f, - 0xf4, 0x79, 0xa2, 0xcf, 0xe5, 0x25, 0x75, 0x76, 0x1f, 0xf0, - 0x5b, 0x3f, 0x18, 0xc5, 0x8f, 0xb6, 0xfc, 0x33, 0xd0, 0xee, - 0x3d, 0x7c, 0x8d, 0x42, 0x68, 0xbf, 0x9a, 0xb5, 0x7e, 0x6c, - 0xe4, 0x52, 0xd1, 0x60, 0xbb, 0x3f, 0x53, 0x74, 0xef, 0xf8, - 0x2d, 0xd0, 0x38, 0xfb, 0x7f, 0xc2, 0x82, 0xbe, 0xbf, 0x66, - 0xd6, 0xb3, 0xfc, 0xe1, 0x15, 0xd2, 0xd9, 0xff, 00, 0xc1, - 0x6c, 0xfc, 0x1a, 0xe0, 0x7d, 0xaf, 0xe1, 0xae, 0xbb, 0x11, - 0xef, 0xe4, 0xdf, 0x42, 0xff, 00, 0xcc, 0x2d, 0x7e, 0x46, - 0xd1, 0x45, 0x82, 0xec, 0xfd, 0x8f, 0xb1, 0xff, 00, 0x82, - 0xd2, 0xfc, 0x29, 0x9b, 0x2, 0xe7, 0xc1, 0x9e, 0x2e, 0xb6, - 0xf5, 0x2b, 0x1d, 0xb3, 0x8f, 0xfd, 0x1c, 0x2b, 0xa4, 0xd3, - 0xbf, 0xe0, 0xb0, 0xff, 00, 0x2, 0xef, 0x31, 0xf6, 0x9b, - 0x5f, 0x14, 0xd8, 0x13, 0xff, 00, 0x3d, 0x74, 0xd4, 0x70, - 0x3f, 0xef, 0x89, 0xd, 0x7e, 0x26, 0x51, 0x45, 0x87, 0xcc, - 0xcf, 0xdd, 0xdd, 0x3f, 0xfe, 0xa, 0xad, 0xfb, 0x3a, 0x5f, - 0x85, 0xdd, 0xe2, 0xbb, 0xfb, 0x46, 0x3f, 0xc3, 0x71, 0xa3, - 0xdc, 0x8c, 0x7e, 0x21, 0x8, 0xae, 0xb7, 0x4b, 0xff, 00, - 0x82, 0x89, 0x7e, 0xce, 0xfa, 0xaa, 0x6, 0x4f, 0x89, 0xba, - 0x6d, 0xb9, 0x3f, 0xc3, 0x75, 0xc, 0xd1, 0x1f, 0xd5, 0x2b, - 0xf9, 0xf5, 0xa2, 0x8b, 0x7, 0x31, 0xfd, 0x18, 0x69, 0xdf, - 0xb6, 0x8f, 0xc0, 0x8d, 0x51, 0x41, 0x83, 0xe2, 0xcf, 0x84, - 0xf9, 0xe8, 0x25, 0xd4, 0xe3, 0x88, 0xfe, 0x4e, 0x41, 0xae, - 0xa3, 0x4a, 0xfd, 0xa0, 0xbe, 0x18, 0x6b, 0x60, 0x7d, 0x83, - 0xe2, 0x1f, 0x85, 0xee, 0xf3, 0xff, 00, 0x3c, 0xb5, 0x7b, - 0x73, 0xff, 00, 0xb3, 0xd7, 0xf3, 0x4f, 0x45, 0x2b, 0x7, - 0x31, 0xfd, 0x3c, 0xd9, 0xf8, 0xff, 00, 0xc2, 0xfa, 0x81, - 0xc5, 0xaf, 0x89, 0x34, 0x8b, 0x92, 0x7b, 0x43, 0x7d, 0x13, - 0xff, 00, 0x26, 0xad, 0x58, 0x75, 0x5b, 0x2b, 0x83, 0x88, - 0xaf, 0x2d, 0xe4, 0x3e, 0x89, 0x2a, 0x9f, 0xeb, 0x5f, 0xcb, - 0x86, 0x7, 0xa5, 0x5a, 0xb4, 0xd5, 0x2f, 0x34, 0xf6, 0x6, - 0xd6, 0xee, 0x7b, 0x62, 0x3a, 0x18, 0x65, 0x64, 0xfe, 0x46, - 0x8b, 0xf, 0x98, 0xfe, 0xa3, 0x83, 0x3, 0xd0, 0x83, 0x4b, - 0x5f, 0xcc, 0x86, 0x9f, 0xf1, 0x5b, 0xc6, 0xda, 0x49, 0x6, - 0xc7, 0xc6, 0x3a, 0xfd, 0x91, 0x1d, 0xd, 0xbe, 0xa9, 0x3c, - 0x7f, 0xc9, 0xeb, 0xa8, 0xd2, 0xff, 00, 0x6a, 0x6f, 0x8c, - 0x5a, 0x2c, 0x8a, 0xf6, 0x9f, 0x14, 0x3c, 0x5a, 0x85, 0x7a, - 0x6f, 0xd6, 0x27, 0x90, 0x7e, 0x4c, 0xc4, 0x51, 0x60, 0xe6, - 0x3f, 0xa4, 0x7a, 0x2b, 0xf9, 0xe6, 0xb3, 0xfd, 0xbf, 0x3f, - 0x68, 0x4b, 0x12, 0xbe, 0x5f, 0xc5, 0x5d, 0x71, 0xb6, 0xf4, - 0x12, 0x98, 0xe4, 0x1f, 0xf8, 0xf2, 0x1a, 0xe8, 0xec, 0x7f, - 0xe0, 0xa6, 0x9f, 0xb4, 0x7d, 0x96, 0xd1, 0xff, 00, 0xb, - 0xd, 0xee, 0x15, 0x7b, 0x4f, 0xa6, 0x5a, 0x36, 0x7e, 0xa7, - 0xca, 0xcd, 0x16, 0xe, 0x64, 0x7e, 0xfb, 0x51, 0x5f, 0x86, - 0x76, 0x3f, 0xf0, 0x56, 0xcf, 0xda, 0x12, 0xce, 0x35, 0x57, - 0xd5, 0x34, 0x2b, 0xbc, 0x7f, 0x14, 0xfa, 0x42, 0x64, 0xff, - 00, 0xdf, 0x24, 0x56, 0xdd, 0x97, 0xfc, 0x16, 0x33, 0xe3, - 0xad, 0xb6, 0x4, 0xda, 0x7f, 0x84, 0x2e, 0xfd, 0xe4, 0xd3, - 0x66, 0x53, 0xff, 00, 0x8e, 0xce, 0x28, 0xb0, 0x5d, 0x1f, - 0xb6, 0x34, 0x57, 0xe3, 0xb6, 0x9d, 0xff, 00, 0x5, 0xa8, - 0xf8, 0x9b, 0x2, 0xa8, 0xbd, 0xf0, 0x3f, 0x85, 0xee, 0xdb, - 0xb9, 0x8d, 0xae, 0x22, 0xcf, 0xfe, 0x3e, 0x6b, 0xa5, 0xd3, - 0xff, 00, 0xe0, 0xb7, 0x1a, 0xfc, 0x78, 0xfb, 0x77, 0xc2, - 0xbd, 0x36, 0x7f, 0xfa, 0xf7, 0xd5, 0xe4, 0x8f, 0xf9, 0xc4, - 0xd4, 0x58, 0x77, 0x47, 0xeb, 0x25, 0x15, 0xf9, 0x8b, 0xa5, - 0x7f, 0xc1, 0x6e, 0x34, 0x77, 0x51, 0xfd, 0xa5, 0xf0, 0xae, - 0xfa, 0x16, 0xef, 0xf6, 0x5d, 0x5d, 0x24, 0x1f, 0xf8, 0xf4, - 0x6b, 0x5d, 0xd, 0xaf, 0xfc, 0x16, 0xbf, 0xe1, 0xe3, 0x91, - 0xf6, 0x9f, 0x87, 0xbe, 0x27, 0x88, 0x7a, 0xc5, 0x35, 0xb3, - 0xff, 00, 0x37, 0x5a, 0x2, 0xe8, 0xfd, 0x19, 0xa2, 0xbe, - 0x1, 0xd3, 0x7f, 0xe0, 0xb3, 0xbf, 0x7, 0xae, 0xdc, 0xb, - 0xaf, 0xc, 0x78, 0xc2, 0xc4, 0x7f, 0x79, 0xed, 0xad, 0x9c, - 0x7f, 0xe3, 0xb3, 0x1a, 0xeb, 0x74, 0xef, 0xf8, 0x2b, 0x87, - 0xec, 0xfb, 0x79, 0x8f, 0x3b, 0x50, 0xd7, 0xac, 0x49, 0xff, - 00, 0x9e, 0xfa, 0x4b, 0x9c, 0x7f, 0xdf, 0x24, 0xd2, 0xb, - 0xa3, 0xed, 0x1a, 0x2b, 0xe5, 0x5d, 0x33, 0xfe, 0xa, 0x7d, - 0xfb, 0x39, 0xea, 0x78, 0x1f, 0xf0, 0x9d, 0x3d, 0xa1, 0x3d, - 0xae, 0xb4, 0xcb, 0x94, 0xfd, 0x7c, 0xbc, 0x57, 0x57, 0xa6, - 0xfe, 0xdf, 0x1f, 0xb3, 0xee, 0xa8, 0x7, 0x95, 0xf1, 0x4f, - 0x42, 0x8c, 0x9e, 0xd7, 0x12, 0x3c, 0x47, 0xff, 00, 0x1e, - 0x51, 0x40, 0xcf, 0x7f, 0xa2, 0xbc, 0x9b, 0x4e, 0xfd, 0xad, - 0x7e, 0xb, 0x6a, 0xc4, 0xb, 0x5f, 0x8a, 0x7e, 0x13, 0x90, - 0x9e, 0xcd, 0xab, 0xc2, 0xa7, 0xf5, 0x61, 0x5d, 0x4d, 0x87, - 0xc6, 0x4f, 00, 0xea, 0xb8, 0xfb, 0x17, 0x8d, 0xbc, 0x3b, - 0x77, 0x9e, 0x9e, 0x4e, 0xab, 0x3, 0x67, 0xf2, 0x7a, 00, - 0xec, 0x28, 0xac, 0x9b, 0x7f, 0x17, 0x68, 0x57, 0x78, 0xf2, - 0x35, 0xad, 0x3a, 0x6c, 0xff, 00, 0xcf, 0x3b, 0xa8, 0xdb, - 0xf9, 0x1a, 0xd0, 0x8a, 0xf2, 0x9, 0xff, 00, 0xd5, 0xcf, - 0x1c, 0x9f, 0xee, 0xb8, 0x34, 0x1, 0x35, 0x14, 0x51, 0x40, - 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, - 0x51, 0x40, 0x5, 0x23, 0x28, 0x60, 0x41, 00, 0x83, 0xd4, - 0x1a, 0x5a, 0x28, 0x3, 0x97, 0xd5, 0xbe, 0x19, 0x78, 0x5b, - 0x5b, 0x2c, 0xd7, 0x5a, 0x25, 0xae, 0xf6, 0xeb, 0x24, 0x4b, - 0xe5, 0x31, 0xfc, 0x57, 0x15, 0xc5, 0xea, 0xff, 00, 0xb3, - 0x7e, 0x83, 0x76, 0x4b, 0x58, 0x5e, 0xdd, 0xd8, 0x1e, 0xca, - 0xc4, 0x4a, 0xbf, 0xae, 0xf, 0xeb, 0x5e, 0xb9, 0x45, 0x79, - 0xd5, 0xb2, 0xec, 0x1e, 0x23, 0xf8, 0x94, 0x93, 0xf9, 0x59, - 0xfd, 0xe8, 0xc2, 0x74, 0x29, 0x4f, 0xe2, 0x8a, 0x3e, 0x7b, - 0xbd, 0xfd, 0x99, 0xb5, 0x38, 0xf2, 0x6d, 0x35, 0x9b, 0x59, - 0x87, 0x61, 0x34, 0x4d, 0x1f, 0xf2, 0xdd, 0x58, 0x17, 0xbf, - 0xb3, 0xff, 00, 0x8b, 0xad, 0x9, 0xf2, 0xe0, 0xb5, 0xbb, - 0x3, 0xbc, 0x33, 0x8f, 0xfd, 0x9b, 0x15, 0xf5, 0x1d, 0x15, - 0xe4, 0x54, 0xe1, 0xcc, 0x4, 0xfe, 0x14, 0xd7, 0xa3, 0xff, - 00, 0x3b, 0x9c, 0xb2, 0xc0, 0x51, 0x7b, 0x68, 0x7c, 0x87, - 0x3f, 0xc2, 0x3f, 0x18, 0x5b, 0xe7, 0x76, 0x83, 0x72, 0xc3, - 0xd5, 0xa, 0xb7, 0xf2, 0x35, 0x49, 0xfe, 0x1d, 0x78, 0xa2, - 0x33, 0xcf, 0x87, 0xf5, 0x1f, 0xc2, 0xd9, 0xcf, 0xf4, 0xaf, - 0xb2, 0x68, 0xae, 0x27, 0xc2, 0xd8, 0x6e, 0x95, 0x25, 0xf8, - 0x7f, 0x91, 0x93, 0xcb, 0xa1, 0xd2, 0x4c, 0xf8, 0xd0, 0x7c, - 0x3d, 0xf1, 0x3b, 0x1e, 0x3c, 0x3f, 0xa9, 0x7f, 0xe0, 0x2b, - 0xff, 00, 0x85, 0x5c, 0xb7, 0xf8, 0x53, 0xe2, 0xeb, 0xaf, - 0xb9, 0xa0, 0x5d, 0x8f, 0xfa, 0xe8, 0x2, 0x7f, 0xe8, 0x44, - 0x57, 0xd7, 0xf4, 0x50, 0xb8, 0x5b, 0xf, 0xd6, 0xa4, 0xbf, - 0xf, 0xf2, 0x5, 0x97, 0x43, 0xac, 0x99, 0xf2, 0xe6, 0x9f, - 0xf0, 0x3, 0xc5, 0xb7, 0xa4, 0x79, 0xb0, 0x5b, 0x59, 0x2f, - 0xac, 0xf3, 0x83, 0xfa, 0x2e, 0x6b, 0xa9, 0xd2, 0xbf, 0x66, - 0x59, 0x4b, 0x2b, 0x6a, 0x5a, 0xda, 0x2a, 0xf7, 0x4b, 0x58, - 0x72, 0x7f, 0xef, 0xa6, 0x3f, 0xd2, 0xbd, 0xea, 0x8a, 0xef, - 0xa5, 0xc3, 0xb8, 0xa, 0x7a, 0xca, 0x2e, 0x5e, 0xaf, 0xfc, - 0xac, 0x6d, 0x1c, 0xd, 0x18, 0xee, 0xae, 0x71, 0x5e, 0x1e, - 0xf8, 0x3d, 0xe1, 0x6f, 0xe, 0xec, 0x78, 0xf4, 0xd5, 0xbc, - 0xb8, 0x5e, 0x7c, 0xeb, 0xc3, 0xe6, 0x1c, 0xfa, 0xe0, 0xf0, - 0x3f, 0x1, 0x5d, 0xa0, 0x1, 0x40, 00, 0x60, 0xe, 0x80, - 0x52, 0xd1, 0x5e, 0xfd, 0x1a, 0x14, 0xb0, 0xf1, 0xe5, 0xa5, - 0x15, 0x15, 0xe4, 0x8e, 0xd8, 0xc2, 0x30, 0x56, 0x8a, 0xb0, - 0x51, 0x45, 0x15, 0xb9, 0x61, 0x45, 0x14, 0x50, 0x1, 0x45, - 0x14, 0x50, 0x7, 0x1, 0xf1, 0xa6, 0xef, 0xec, 0xde, 0x11, - 0x7f, 0x73, 0x5f, 0xa, 0x6b, 0x72, 0x79, 0x97, 0x97, 0xc, - 0x7b, 0xb1, 0xaf, 0xb5, 0x7f, 0x68, 0x1b, 0x9f, 0x27, 0xc3, - 0x8, 0x9e, 0xb9, 0x35, 0xf1, 0x1e, 0xa8, 0xfb, 0xa4, 0x94, - 0xfa, 0xb1, 0xaf, 0xce, 0xf3, 0xd9, 0x73, 0x63, 0x23, 0x1e, - 0xc8, 0xfc, 0xfb, 0x89, 0x67, 0xef, 0x24, 0x78, 0x67, 0xc7, - 0x2b, 0x8d, 0x9a, 0x5c, 0xe3, 0xfd, 0x93, 0xfc, 0xab, 0xf5, - 0x97, 0xf6, 0x7f, 0xd2, 0x46, 0x85, 0xf0, 0x37, 0xc0, 0x16, - 0xb, 0x9c, 0x41, 0xa1, 0x59, 0xaf, 0x3e, 0xbe, 0x4a, 0xe6, - 0xbf, 0x22, 0xfe, 0x38, 0x39, 0x9a, 0x23, 0xa, 0xe5, 0x9a, - 0x46, 0x8, 00, 0xea, 0x49, 0xe2, 0xbf, 0x68, 0x3c, 0x33, - 0x62, 0x9a, 0x5f, 0x86, 0xf4, 0xab, 0x38, 0xc6, 0xd4, 0xb7, - 0xb4, 0x8a, 0x25, 0x7, 0xb0, 0x54, 0x3, 0xfa, 0x57, 0xd5, - 0xe5, 0x6a, 0xd4, 0x51, 0x5c, 0x1d, 0x1b, 0x61, 0x27, 0x2e, - 0xf2, 0x66, 0x9d, 0x14, 0x51, 0x5e, 0xc9, 0xf7, 0xe7, 0xe7, - 0xef, 0xc5, 0xdf, 0x13, 0x3f, 0x8b, 0x3e, 0x26, 0xf8, 0x82, - 0xf9, 0xf8, 0xb, 0x72, 0x6d, 0x90, 0x7a, 0x2c, 0x7f, 0x20, - 0xff, 00, 0xd0, 0x49, 0xfc, 0x6b, 0xdc, 0xbf, 0x64, 0xbf, - 0x8, 0xf9, 0x76, 0xd7, 0xda, 0xe4, 0xa9, 0xc9, 0x3e, 0x54, - 0x44, 0xfe, 0xb5, 0xf3, 0x7d, 0xfc, 0x6f, 0xa9, 0xf8, 0xdf, - 0x58, 0x86, 0x31, 0xba, 0x49, 0x35, 0x3b, 0x85, 00, 0x7a, - 0xf9, 0xad, 0x5f, 0x7c, 0x7c, 0x35, 0xf0, 0xd2, 0x78, 0x53, - 0xc1, 0x9a, 0x6d, 0x82, 0xa0, 0x46, 0x58, 0x83, 0x3f, 0xfb, - 0xc4, 0x57, 0xc1, 0x65, 0x94, 0x25, 0x5f, 0x30, 0x95, 0x59, - 0xfd, 0x9b, 0xbf, 0x9b, 0x3f, 0x39, 0xe1, 0xfa, 0x6f, 0x17, - 0x89, 0x9e, 0x2a, 0x7d, 0x2e, 0xfe, 0x6c, 0xea, 0x28, 0xa2, - 0x8a, 0xfb, 0xd3, 0xf4, 0x60, 0xa2, 0x8a, 0x28, 00, 0xa2, - 0x9a, 0xe8, 0x1c, 0x60, 0xe7, 0xd7, 0x83, 0x8a, 0x5c, 0x7b, - 0x9a, 00, 0xaf, 0x73, 0xa6, 0xda, 0x5e, 0x29, 0x17, 0x16, - 0xb0, 0xce, 0xf, 0x69, 0x23, 0xd, 0xfc, 0xc5, 0x4f, 0x1c, - 0x49, 0xc, 0x6b, 0x1c, 0x68, 0xb1, 0xc6, 0x80, 0x2a, 0xaa, - 0x8c, 00, 0x7, 0x40, 0x5, 0x3a, 0x8a, 00, 0x28, 0xa2, - 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, - 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, - 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x46, 0x50, 0xc3, 0x4, - 0x2, 0x3d, 0xd, 0x67, 0x5e, 0x78, 0x6b, 0x48, 0xd4, 0x3f, - 0xe3, 0xeb, 0x4a, 0xb2, 0xb9, 0xff, 00, 0xae, 0xd6, 0xe8, - 0xff, 00, 0xcc, 0x56, 0x95, 0x14, 0x1, 0xc5, 0x6a, 0x9f, - 0x4, 0xfe, 0x1e, 0xeb, 0x60, 0x8d, 0x43, 0xc0, 0xde, 0x1c, - 0xbd, 0xdd, 0xd7, 0xcf, 0xd2, 0xa0, 0x7c, 0xfe, 0x6b, 0x5c, - 0xa6, 0xa7, 0xfb, 0x1f, 0x7c, 0x10, 0xd6, 0x14, 0x8b, 0xbf, - 0x85, 0x5e, 0x13, 0x70, 0x7a, 0xec, 0xd2, 0xa2, 0x4f, 0xfd, - 0x4, 0xa, 0xf6, 0xa, 0x28, 0x3, 0xe7, 0x4d, 0x57, 0xfe, - 0x9, 0xe5, 0xfb, 0x3c, 0x6a, 0xe0, 0x89, 0x7e, 0x18, 0x69, - 0x50, 0xe7, 0xfe, 0x7d, 0x64, 0x9a, 0xf, 0xfd, 0x1, 0xc5, - 0x72, 0xb7, 0x9f, 0xf0, 0x4a, 0xff, 00, 0xd9, 0xbe, 0xe8, - 0xb1, 0x5f, 0x5, 0xdd, 0xdb, 0x13, 0xff, 00, 0x3c, 0x75, - 0xab, 0xce, 0x3f, 0x3, 0x29, 0x15, 0xf5, 0xad, 0x14, 0x1, - 0xf1, 0x76, 0xa3, 0xff, 00, 0x4, 0x8e, 0xfd, 0x9f, 0x6f, - 0x50, 0xac, 0x1a, 0x7e, 0xbf, 0xa7, 0x9f, 0xef, 0x41, 0xab, - 0xbb, 0x1f, 0xfc, 0x7c, 0x35, 0x72, 0xba, 0x97, 0xfc, 0x11, - 0x97, 0xe0, 0xe5, 0xca, 0x9f, 0xb1, 0x78, 0x93, 0xc5, 0xd6, - 0x4d, 0xfe, 0xd5, 0xd5, 0xbc, 0x80, 0x7e, 0x70, 0x8a, 0xfb, - 0xee, 0x8a, 0x5, 0x64, 0x7e, 0x6d, 0xea, 0x1f, 0xf0, 0x44, - 0xdf, 0x5, 0xbc, 0x6d, 0xf6, 0x1f, 0x89, 0x1a, 0xf4, 0x2f, - 0xfc, 0x3f, 0x68, 0xb3, 0x82, 0x40, 0x3f, 0x2d, 0xb5, 0xc8, - 0xea, 0x1f, 0xf0, 0x44, 0x5b, 0x80, 0x18, 0xd8, 0xfc, 0x58, - 0x8c, 0x9f, 0xe1, 0x5b, 0x8d, 0x10, 0x8f, 0xcc, 0x89, 0xbf, - 0xa5, 0x7e, 0xa9, 0x51, 0x4c, 0x2c, 0x8f, 0xc8, 0x5b, 0xff, - 00, 0xf8, 0x22, 0x7f, 0x8e, 0xe2, 0xc, 0x6c, 0xfe, 0x22, - 0xf8, 0x7e, 0xe3, 0xfb, 0xa2, 0x6b, 0x49, 0xe3, 0xcf, 0xe5, - 0xba, 0xb9, 0x1d, 0x43, 0xfe, 0x8, 0xd9, 0xf1, 0xba, 0xd9, - 0x9b, 0xec, 0xba, 0xcf, 0x83, 0xef, 0x10, 0x74, 0xcd, 0xfc, - 0xf1, 0xb1, 0xfc, 0xc, 0x18, 0xfd, 0x6b, 0xf6, 0xa2, 0x8a, - 0x2e, 0x16, 0x47, 0xe1, 0xd5, 0xd7, 0xfc, 0x12, 0x2b, 0xf6, - 0x81, 0xb7, 0x56, 0x29, 0x69, 0xe1, 0xcb, 0x9c, 0x76, 0x8b, - 0x56, 0x19, 0x3f, 0xf7, 0xd2, 0xa, 0xe6, 0x35, 0x1f, 0xf8, - 0x25, 0xef, 0xed, 0x1b, 0x60, 0x5b, 0x6f, 0x81, 0xa2, 0xbc, - 0xb, 0xde, 0xdb, 0x55, 0xb5, 0x39, 0xfa, 0x66, 0x40, 0x6b, - 0xf7, 0xb2, 0x8a, 0x2e, 0x2e, 0x54, 0x7f, 0x3d, 0x77, 0xdf, - 0xf0, 0x4f, 0xdf, 0xda, 0x1b, 0x4f, 0x24, 0x49, 0xf0, 0xb3, - 0x59, 0x7c, 0x77, 0x80, 0xc5, 0x2f, 0xfe, 0x82, 0xe6, 0xb9, - 0x2d, 0x53, 0xf6, 0x4e, 0xf8, 0xd1, 0xa3, 0xbb, 0x25, 0xd7, - 0xc2, 0xdf, 0x16, 0x23, 0x2f, 0x5f, 0x2f, 0x48, 0x9a, 0x4f, - 0xfd, 0x5, 0x4d, 0x7f, 0x48, 0x34, 0x51, 0x70, 0xe5, 0x3f, - 0x99, 0x4d, 0x47, 0xe1, 0xf, 0x8e, 0xf4, 0x76, 0x2b, 0x7d, - 0xe0, 0xaf, 0x11, 0x59, 0xb0, 0xea, 0x27, 0xd2, 0xa7, 0x4c, - 0x7e, 0x69, 0x5c, 0xf5, 0xe6, 0x8d, 0xa8, 0x69, 0xcc, 0x56, - 0xee, 0xc6, 0xe6, 0xd4, 0x8e, 0xa2, 0x68, 0x59, 0x3f, 0x98, - 0xaf, 0xea, 0x2c, 0x80, 0x7a, 0x8a, 0xad, 0x71, 0xa5, 0x59, - 0x5d, 0xff, 00, 0xaf, 0xb3, 0xb7, 0x9b, 0xfe, 0xba, 0x44, - 0xad, 0xfc, 0xc5, 0x17, 0xe, 0x53, 0xf9, 0x70, 0xc8, 0xf5, - 0xa5, 0xaf, 0xe9, 0xe6, 0xeb, 0xe1, 0xf7, 0x85, 0xaf, 0xb3, - 0xf6, 0x9f, 0xd, 0x69, 0x17, 0x19, 0xeb, 0xe6, 0xd8, 0x44, - 0xd9, 0xfc, 0xd6, 0xb9, 0xcd, 0x4f, 0xf6, 0x78, 0xf8, 0x5b, - 0xac, 0xe7, 0xed, 0xdf, 0xe, 0xbc, 0x2d, 0x73, 0x9e, 0xbe, - 0x66, 0x91, 0x1, 0xcf, 0xfe, 0x39, 0x45, 0xc5, 0xca, 0x7f, - 0x35, 0x34, 0x57, 0xf4, 0x53, 0xa8, 0xfe, 0xc4, 0x7f, 0x1, - 0x75, 0x56, 0x2d, 0x3f, 0xc2, 0x7f, 0xb, 0x86, 0x3d, 0x4c, - 0x36, 0xb, 0x17, 0xfe, 0x83, 0x8a, 0xe5, 0xb5, 0x3f, 0xf8, - 0x26, 0xf7, 0xec, 0xeb, 0xaa, 0x67, 0x77, 0xc3, 0x8b, 0x4b, - 0x62, 0x7f, 0xe7, 0xd6, 0xee, 0xe2, 0x2f, 0xe5, 0x25, 0x17, - 0xe, 0x53, 0xf9, 0xff, 00, 0xa2, 0xbf, 0x75, 0x35, 0x5f, - 0xf8, 0x24, 0xf7, 0xec, 0xf1, 0xa8, 0xee, 0x31, 0x78, 0x7f, - 0x56, 0xd3, 0xc9, 0xef, 0x6b, 0xab, 0xcd, 0xc7, 0xe0, 0xe5, - 0xab, 0x91, 0xd4, 0x3f, 0xe0, 0x8d, 0x9f, 0x5, 0x2e, 0x77, - 0x7d, 0x9b, 0x5a, 0xf1, 0x75, 0x91, 0x3d, 0x36, 0xdf, 0x42, - 0xe0, 0x7f, 0xdf, 0x50, 0xd3, 0xb8, 0x72, 0x9f, 0x8b, 0x34, - 0x57, 0xec, 0x35, 0xd7, 0xfc, 0x11, 0x53, 0xe1, 0x9b, 0x83, - 0xf6, 0x7f, 0x1e, 0x78, 0xae, 0x13, 0xdb, 0xcc, 0x5b, 0x67, - 0x3, 0xf2, 0x8c, 0x57, 0x3f, 0xa8, 0x7f, 0xc1, 0x12, 0x7c, - 0x3a, 0xc0, 0xfd, 0x87, 0xe2, 0x8e, 0xa9, 0x19, 0xec, 0x2e, - 0x34, 0xb8, 0xdf, 0xf5, 0xe, 0x28, 0xb8, 0xac, 0xcf, 0xc9, - 0x9a, 0x2b, 0xf4, 0xeb, 0x51, 0xff, 00, 0x82, 0x23, 0x6a, - 0xe1, 0x98, 0xd8, 0x7c, 0x56, 0xb2, 0x65, 0xec, 0xb7, 0x1a, - 0x33, 0x83, 0xf9, 0x89, 0x4f, 0xf2, 0xae, 0x5b, 0x52, 0xff, - 00, 0x82, 0x2b, 0x7c, 0x4a, 0x81, 0x8f, 0xd8, 0x7c, 0x75, - 0xe1, 0x8b, 0xb5, 0x1d, 0x3c, 0xe4, 0xb8, 0x88, 0x9f, 0xc9, - 0x1a, 0x8b, 0x85, 0x99, 0xf9, 0xdd, 0x49, 0x5f, 0x73, 0xea, - 0x7f, 0xf0, 0x47, 0x7f, 0x8e, 0x76, 0x84, 0xfd, 0x92, 0xf7, - 0xc2, 0xb7, 0xeb, 0xfe, 0xce, 0xa3, 0x22, 0x1f, 0xfc, 0x7a, - 0x2a, 0xe3, 0xb5, 0x4f, 0xf8, 0x25, 0x87, 0xed, 0x1b, 0xa7, - 0x48, 0x56, 0x2f, 0x7, 0xd9, 0xea, 00, 0x7f, 0x1d, 0xae, - 0xaf, 0x6d, 0x83, 0xff, 00, 0x7d, 0xba, 0x9a, 0x2e, 0x16, - 0x67, 0xc9, 0x40, 0xed, 0x39, 0x1c, 0x1f, 0x51, 0x5a, 0xda, - 0x77, 0x8b, 0xb5, 0xdd, 0x1d, 0x81, 0xb0, 0xd6, 0xb5, 0x1b, - 0x12, 0x3a, 0x1b, 0x6b, 0xb9, 0x23, 0xc7, 0xe4, 0x45, 0x7b, - 0xe5, 0xdf, 0xfc, 0x13, 0x8f, 0xf6, 0x8e, 0xb3, 0x7d, 0xad, - 0xf0, 0xc2, 0xfe, 0x4f, 0x78, 0x6f, 0x2d, 0x5c, 0x7e, 0x92, - 0xd6, 0xe, 0xa3, 0xfb, 0xc, 0x7c, 0x7e, 0xd2, 0x89, 0x13, - 0xfc, 0x28, 0xf1, 0x23, 0x63, 0xbc, 0x16, 0xbe, 0x70, 0xfc, - 0xd0, 0x9a, 0x3, 0x53, 0x85, 0xb0, 0xf8, 0xf3, 0xf1, 0x2f, - 0x4b, 0x60, 0xd6, 0x9f, 0x10, 0x7c, 0x53, 0x6e, 0x47, 0x4d, - 0x9a, 0xcd, 0xc0, 0xc7, 0xfe, 0x3f, 0x5d, 0x4e, 0x9f, 0xfb, - 0x63, 0xfc, 0x71, 0xd2, 0xd9, 0x4d, 0xbf, 0xc5, 0x5f, 0x15, - 0x64, 0x74, 0xf3, 0x75, 0x29, 0x25, 0x1f, 0x93, 0x13, 0x58, - 0xfa, 0xaf, 0xec, 0xcb, 0xf1, 0x73, 0x44, 0x24, 0x5e, 0xfc, - 0x32, 0xf1, 0x64, 0x4, 0x7a, 0xe8, 0xd7, 0x7, 0xf9, 0x25, - 0x73, 0x1a, 0x9f, 0xc3, 0x3f, 0x18, 0x68, 0x80, 0x9d, 0x47, - 0xc2, 0x7a, 0xe5, 0x80, 0x1d, 0x4d, 0xd6, 0x9b, 0x34, 0x7f, - 0xfa, 0x12, 0x8a, 0x3, 0x53, 0xda, 0x6c, 0x7f, 0xe0, 0xa2, - 0x5f, 0xb4, 0x55, 0x86, 0xd0, 0xbf, 0x13, 0xf5, 0x39, 0x40, - 0xed, 0x3c, 0x16, 0xf2, 0x7f, 0x38, 0xeb, 0xa8, 0xd3, 0xbf, - 0xe0, 0xa9, 0xdf, 0xb4, 0x66, 0x9e, 0x81, 0x4f, 0x8c, 0x6d, - 0x2e, 0xc0, 0xff, 00, 0x9f, 0x8d, 0x22, 0xd5, 0x89, 0xfc, - 0x42, 0x3, 0x5f, 0x28, 0x4f, 0x65, 0x71, 0x6a, 0x71, 0x34, - 0x12, 0xc2, 0x7f, 0xe9, 0xa2, 0x15, 0xfe, 0x75, 0x6, 0x47, - 0xad, 0x1, 0x76, 0x7d, 0xb1, 0x67, 0xff, 00, 0x5, 0x79, - 0xf8, 0xff, 00, 0x6a, 0xa0, 0x49, 0x37, 0x86, 0xae, 0xcf, - 0xf7, 0xa6, 0xd2, 0x70, 0x4f, 0xfd, 0xf2, 0xeb, 0x5b, 0x96, - 0x3f, 0xf0, 0x59, 0x6f, 0x8d, 0x76, 0xe0, 0xb, 0x8d, 0x7, - 0xc1, 0xb7, 0x63, 0xb9, 0x36, 0x37, 0x8, 0x4f, 0xe5, 0x3d, - 0x7c, 0x19, 0x45, 0x16, 0xb, 0xb3, 0xf4, 0x7f, 0x4a, 0xff, - 00, 0x82, 0xd8, 0x78, 0xe6, 0x8, 0xf1, 0xa8, 0xfc, 0x39, - 0xd0, 0x2f, 0x1f, 0xfb, 0xd6, 0xf7, 0x93, 0x40, 0x3f, 0x22, - 0x1e, 0xba, 0x8d, 0x27, 0xfe, 0xb, 0x73, 0x37, 0xfc, 0xc4, - 0xfe, 0x14, 0x47, 0xff, 00, 0x6e, 0x9a, 0xc9, 0xff, 00, - 0xd9, 0xa1, 0xaf, 0xcb, 0x8a, 0x28, 0xb0, 0x5d, 0x9f, 0xad, - 0xfa, 0x5f, 0xfc, 0x16, 0xcf, 0xc2, 0x12, 0x11, 0xfd, 0xa3, - 0xf0, 0xd3, 0x5b, 0xb7, 0x1d, 0xcd, 0xad, 0xf4, 0x32, 0xff, - 00, 0xe8, 0x41, 0x6b, 0xa8, 0xd3, 0x3f, 0xe0, 0xb3, 0xdf, - 0x8, 0xae, 0xdc, 0xb, 0xbf, 0xa, 0xf8, 0xb6, 0xc4, 0x7f, - 0x78, 0xc1, 0x6f, 0x27, 0xf2, 0x96, 0xbf, 0x1a, 0x28, 0xa2, - 0xc1, 0xcc, 0xcf, 0xdc, 0x3b, 0x1f, 0xf8, 0x2b, 0xb7, 0xec, - 0xff, 00, 0x76, 0x47, 0x9d, 0x75, 0xe2, 0x3b, 0x2f, 0x79, - 0xb4, 0x92, 0x7f, 0xf4, 0x6, 0x6a, 0xdc, 0xb3, 0xff, 00, - 0x82, 0xaa, 0x7e, 0xce, 0x57, 0x6c, 0x14, 0xf8, 0xbe, 0xfa, - 0xdf, 0x3d, 0xe6, 0xd1, 0xae, 0x80, 0x1f, 0x94, 0x66, 0xbf, - 0x8, 0x28, 0xa2, 0xc3, 0xe6, 0x3f, 0xa0, 0xd, 0x3f, 0xfe, - 0xa, 0x47, 0xfb, 0x39, 0x6a, 0x2c, 0x15, 0x3e, 0x25, 0x5a, - 0x42, 0x4f, 0xfc, 0xfc, 0x59, 0x5d, 0x44, 0x3f, 0x36, 0x88, - 0xa, 0xea, 0x6c, 0x3f, 0x6d, 0xef, 0x80, 0x9a, 0x88, 0x5f, - 0x27, 0xe2, 0xcf, 0x85, 0x81, 0x6e, 0x82, 0x5d, 0x41, 0x63, - 0x3f, 0x93, 0x62, 0xbf, 0x9d, 0x6a, 0x29, 0x58, 0x39, 0x8f, - 0xe9, 0x53, 0x4e, 0xfd, 0xa2, 0xfe, 0x16, 0x6a, 0xca, 0xd, - 0x9f, 0xc4, 0x6f, 0xb, 0x4e, 0xf, 0x4d, 0xba, 0xc4, 0x1c, - 0xff, 00, 0xe3, 0xf5, 0xd3, 0xd8, 0x78, 0xf3, 0xc3, 0x5a, - 0xa8, 0x6, 0xcb, 0xc4, 0x3a, 0x55, 0xd8, 0x3d, 0xc, 0x17, - 0xb1, 0xbe, 0x7f, 0x26, 0xaf, 0xe6, 0x12, 0x95, 0x58, 0xa9, - 0xc8, 0x24, 0x1f, 0x6a, 0x2c, 0x1c, 0xc7, 0xf5, 0x23, 0xd, - 0xed, 0xbd, 0xc8, 0x6, 0x29, 0xe2, 0x94, 0x1f, 0xee, 0x38, - 0x3f, 0xca, 0xa6, 0xaf, 0xe5, 0xf2, 0xc7, 0xc5, 0x9a, 0xde, - 0x96, 00, 0xb3, 0xd6, 0x75, 0xb, 0x40, 0x3a, 0x79, 0x17, - 0x4e, 0x98, 0xfc, 0x8d, 0x6e, 0x5a, 0xfc, 0x66, 0xf8, 0x83, - 0x63, 0x8f, 0xb3, 0x78, 0xef, 0xc4, 0xd6, 0xf8, 0xe9, 0xe5, - 0x6b, 0x17, 0xb, 0xfc, 0x9e, 0x8b, 0xf, 0x98, 0xfe, 0x99, - 0xe8, 0xaf, 0xe6, 0xd6, 0xc7, 0xf6, 0xa0, 0xf8, 0xc1, 0xa6, - 0xe3, 0xec, 0xff, 00, 0x14, 0x3c, 0x5c, 0x98, 0xe9, 0x9d, - 0x6a, 0xe1, 0xbf, 0x9b, 0x9a, 0xe9, 0xb4, 0xef, 0xdb, 0x9f, - 0xe3, 0xf6, 0x96, 00, 0x83, 0xe2, 0xbf, 0x88, 0xc8, 0x1d, - 0xa6, 0xb9, 0x12, 0xff, 00, 0xe8, 0x60, 0xd1, 0x60, 0xe6, - 0x3f, 0xa2, 0x4a, 0x2b, 0xf0, 0x7, 0x4d, 0xff, 00, 0x82, - 0x94, 0x7e, 0xd1, 0xba, 0x6e, 0x31, 0xf1, 0x1e, 0xe2, 0xe8, - 0xe, 0xd7, 0x36, 0x36, 0xaf, 0xfa, 0xf9, 0x79, 0xae, 0xb7, - 0x4c, 0xff, 00, 0x82, 0xb2, 0x7e, 0xd0, 0xba, 0x78, 0x51, - 0x2e, 0xb5, 0xa3, 0x5f, 0x81, 0xff, 00, 0x3f, 0x3a, 0x4c, - 0x79, 0x3f, 0xf7, 0xce, 0xda, 0x2c, 0x1c, 0xc8, 0xfd, 0xd1, - 0xa2, 0xbf, 0x16, 0x74, 0xdf, 0xf8, 0x2c, 0x9f, 0xc6, 0xbb, - 0x45, 0xb, 0x75, 0xa2, 0x78, 0x46, 0xfb, 0x1d, 0x59, 0xac, - 0xa7, 0x42, 0x7f, 0xef, 0x99, 0xb1, 0xfa, 0x57, 0xeb, 0x5f, - 0xc0, 0x9f, 0x1c, 0x6a, 0x7f, 0x13, 0x3e, 0xc, 0xf8, 0x2b, - 0xc5, 0xba, 0xcd, 0xb4, 0x16, 0x5a, 0xa6, 0xb7, 0xa4, 0xdb, - 0x6a, 0x17, 0x16, 0xf6, 0xc0, 0x88, 0xe3, 0x79, 0x23, 0xe, - 0x55, 0x72, 0x49, 0xc0, 0xcf, 0x73, 0x48, 0x77, 0xb9, 0xdd, - 0xd1, 0x45, 0x14, 0xc, 0x28, 0xa2, 0x8a, 00, 0xf1, 0x4f, - 0xda, 0x4e, 0xe7, 0xcb, 0xd1, 0xa1, 0x4c, 0xff, 00, 0x9, - 0x35, 0xf1, 0xa6, 0xa0, 0xdc, 0x39, 0xf5, 0x26, 0xbe, 0xb3, - 0xfd, 0xa7, 0x6e, 0xb6, 0xc0, 0x89, 0x9e, 0x89, 0x8a, 0xf9, - 0x23, 0x51, 0x6c, 0x46, 0xdf, 0x8d, 0x7e, 0x69, 0x9b, 0x3e, - 0x7c, 0xc2, 0x5e, 0x56, 0x3f, 0x31, 0xe2, 0x59, 0xfe, 0xf4, - 0xf0, 0xdf, 0x1d, 0xc4, 0xda, 0x9f, 0x8e, 0x3c, 0x39, 0x62, - 0x83, 0x73, 0xdc, 0xea, 0xd6, 0xb0, 0x85, 0xf5, 0x2d, 0x2a, - 0xc, 0x7e, 0xb5, 0xfb, 0x56, 00, 00, 0x1, 0xd0, 0x57, - 0xe3, 0x1d, 0x9d, 0xa3, 0xeb, 0x5f, 0xb4, 0x7, 0xc3, 0x8b, - 0x18, 0xcf, 0xcf, 0x2f, 0x89, 0x6c, 0x3f, 0x49, 0xd1, 0x8f, - 0xf2, 0xaf, 0xd9, 0xda, 0xfb, 0x8c, 0xbd, 0x5a, 0x8a, 0x3d, - 0xae, 0x13, 0x8f, 0x2e, 0x5a, 0x9f, 0x76, 0xc2, 0x8a, 0x28, - 0xaf, 0x4c, 0xfb, 0x43, 0xf3, 0xa6, 0xf6, 0x59, 0x3e, 0x1f, - 0x7c, 0x74, 0xd7, 0xac, 0xb5, 0x48, 0xb6, 0xc9, 0x6d, 0xa9, - 0xc9, 0x72, 0x23, 0x27, 0x21, 0x92, 0x43, 0xe6, 0x21, 0xfc, - 0x98, 0x57, 0xd7, 0x5a, 0x47, 0xed, 0x13, 0xe1, 0xdb, 0x8b, - 0x48, 0x7c, 0xd9, 0x15, 0x1f, 0x68, 0xc8, 0xd, 0xd3, 0x8a, - 0xf0, 0x9f, 0xdb, 0xc7, 0xe1, 0x85, 0xed, 0x86, 0xa5, 0xa7, - 0x7c, 0x48, 0xd2, 0xd5, 0x9e, 0x25, 0x44, 0xb1, 0xd4, 0x63, - 0x41, 0xf7, 0x70, 0x4f, 0x97, 0x21, 0xf6, 0xe7, 0x69, 0x3f, - 0xee, 0xd7, 0xce, 0xfe, 0x1f, 0xf1, 0x7c, 0x37, 0xf1, 0x28, - 0xf3, 0x36, 0xc9, 0xdd, 0x49, 0xaf, 0x8a, 0xaf, 0xf5, 0x9c, - 0xb6, 0xac, 0xe5, 0x87, 0xd5, 0x33, 0xf2, 0x6f, 0xaf, 0xd5, - 0xe1, 0xcc, 0x55, 0x5c, 0x2b, 0x8f, 0xb8, 0xdd, 0xd3, 0xf2, - 0x67, 0xe8, 0xc4, 0x3f, 0x1c, 0x7c, 0x33, 0x2f, 0xfc, 0xbd, - 0x1, 0xff, 00, 0x2, 0x15, 0xa1, 0x7, 0xc5, 0x9f, 0xe, - 0x4f, 0xd2, 0xf5, 0x47, 0xe3, 0x5f, 0x9f, 0xb0, 0xea, 0x21, - 0xc6, 0x44, 0xa4, 0x7e, 0x35, 0x65, 0x35, 0x29, 0xd7, 0xee, - 0xdc, 0xb8, 0xfa, 0x35, 0x72, 0x2c, 0xff, 00, 0x15, 0x1f, - 0x8a, 0x8, 0xf6, 0x21, 0xc4, 0xf2, 0x7f, 0x65, 0x1f, 0xa0, - 0xd0, 0xfc, 0x44, 0xd0, 0x26, 0xc6, 0x2f, 0xe3, 0xe7, 0xde, - 0xae, 0x47, 0xe2, 0xfd, 0x1e, 0x50, 0xa, 0xdf, 0xc2, 0x73, - 0xfe, 0xd5, 0x7e, 0x7a, 0x26, 0xb9, 0x7d, 0x18, 0xf9, 0x6f, - 0x25, 0x1f, 0xf0, 0x3a, 0xb5, 0x1f, 0x8b, 0x35, 0x68, 0xbe, - 0xed, 0xfc, 0xdf, 0xf7, 0xd5, 0x6c, 0xb8, 0x8a, 0xaa, 0xf8, - 0xa9, 0xaf, 0xbc, 0xea, 0x8f, 0x12, 0xc7, 0xac, 0xf, 0xd0, - 0xa4, 0xd7, 0xf4, 0xe9, 0x3e, 0xed, 0xe4, 0x27, 0xfe, 0x5, - 0x53, 0xae, 0xa3, 0x6a, 0xdd, 0x2e, 0x22, 0x3f, 0x47, 0x15, - 0xf9, 0xf3, 0x17, 0x8f, 0xf5, 0xd8, 0x47, 0xcb, 0x7f, 0x2f, - 0xe2, 0x6a, 0xf4, 0x3f, 0x15, 0x3c, 0x45, 0xf, 0x4b, 0xe7, - 0x3f, 0x8d, 0x6e, 0xb8, 0x8d, 0x7d, 0xaa, 0x7f, 0x89, 0xd1, - 0x1e, 0x23, 0xa0, 0xf7, 0x8b, 0x3e, 0xfd, 0x59, 0xe3, 0x6e, - 0x92, 0x29, 0xfa, 0x30, 0xa7, 0xee, 0x1e, 0xa2, 0xbe, 0xf, - 0xb7, 0xf8, 0xd9, 0xe2, 0x48, 0x31, 0xfe, 0x92, 0xcd, 0xf5, - 0x35, 0xa3, 0x6f, 0xfb, 0x40, 0xf8, 0x8a, 0x12, 0x33, 0x33, - 0x1c, 0x7a, 0x35, 0x6e, 0xb8, 0x8a, 0x8f, 0x58, 0x33, 0xa2, - 0x3c, 0x41, 0x85, 0x7b, 0xdc, 0xfb, 0x82, 0x8a, 0xf8, 0xd2, - 0xdb, 0xf6, 0x97, 0xd7, 0x62, 0x18, 0x62, 0xed, 0xff, 00, - 0x2, 0xad, 0x3b, 0x6f, 0xda, 0x93, 0x54, 0x4f, 0xbe, 0xae, - 0x7f, 0x1c, 0xd6, 0xeb, 0x3f, 0xc2, 0x3d, 0xee, 0xbe, 0x46, - 0xf1, 0xcf, 0x30, 0x72, 0xfb, 0x47, 0xd7, 0x14, 0x57, 0xcb, - 0x96, 0xff, 00, 0xb5, 0x64, 0xe0, 00, 0xf1, 0x37, 0xe4, - 0x2b, 0x52, 0xd7, 0xf6, 0xab, 0x84, 0xe3, 0xcd, 0x8b, 0xf3, - 0x15, 0xbc, 0x73, 0xbc, 0x13, 0xfb, 0x5f, 0x81, 0xd1, 0x1c, - 0xdb, 0x7, 0x2f, 0xb6, 0x7d, 0x1f, 0x45, 0x78, 0x34, 0x1f, - 0xb5, 0x2e, 0x9a, 0xff, 00, 0x7a, 0x35, 0x15, 0xab, 0x6b, - 0xfb, 0x4a, 0x68, 0x72, 0x91, 0xb8, 0x28, 0xff, 00, 0x81, - 0x62, 0xb7, 0x8e, 0x6d, 0x82, 0x97, 0xfc, 0xbc, 0x47, 0x44, - 0x73, 0xc, 0x34, 0xb6, 0x9a, 0x3d, 0x92, 0x8a, 0xf2, 0xdb, - 0x7f, 0xda, 0x7, 0xc3, 0xf3, 0x11, 0xf3, 0x81, 0xff, 00, - 0x3, 0x15, 0xa7, 0x7, 0xc6, 0xaf, 0xe, 0xcc, 0x33, 0xe7, - 0x81, 0xff, 00, 0x2, 0x15, 0xd1, 0x1c, 0x7e, 0x16, 0x5b, - 0x54, 0x46, 0xcb, 0x15, 0x46, 0x5b, 0x49, 0x1d, 0xfd, 0x15, - 0xc7, 0xc1, 0xf1, 0x53, 0xc3, 0xf3, 0x8e, 0x2e, 0xc0, 0xfa, - 0x91, 0x57, 0xe2, 0xf1, 0xee, 0x89, 0x30, 0x4, 0x5e, 0xa7, - 0xe7, 0x5b, 0xac, 0x45, 0x19, 0x6d, 0x35, 0xf7, 0x9a, 0xaa, - 0xb4, 0xde, 0xd2, 0x47, 0x43, 0x45, 0x64, 0xc7, 0xe2, 0xad, - 0x2a, 0x51, 0xf2, 0xde, 0xc5, 0xff, 00, 0x7d, 0x55, 0x95, - 0xd6, 0xac, 0x1f, 0xa5, 0xdc, 0x27, 0xfe, 0x6, 0x2b, 0x55, - 0x38, 0x3d, 0x99, 0x6a, 0x51, 0x7d, 0x4b, 0xb4, 0x54, 0x9, - 0x7d, 0x6f, 0x27, 0xdd, 0x9e, 0x33, 0xf4, 0x61, 0x52, 0x9, - 0xa3, 0x3d, 0x1d, 0x4f, 0xd0, 0xd5, 0x5d, 0xe, 0xe3, 0xe8, - 0xa4, 0x4, 0x1e, 0x87, 0x34, 0xb4, 0xc6, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0xc7, 0x89, - 0x24, 0xfb, 0xe8, 0xad, 0xfe, 0xf0, 0xcd, 0x3e, 0x8a, 00, - 0xcb, 0xbc, 0xf0, 0xbe, 0x8d, 0xa8, 0x9c, 0xdd, 0xe9, 0x16, - 0x37, 0x47, 0xd6, 0x6b, 0x64, 0x7f, 0xe6, 0x2b, 0x9a, 0xd5, - 0xfe, 0x5, 0xfc, 0x38, 0xd7, 0xc1, 0xfe, 0xd2, 0xf0, 0x17, - 0x86, 0xaf, 0xb3, 0xd7, 0xed, 0x1a, 0x4c, 0xf, 0xfc, 0xd2, - 0xbb, 0x9a, 0x28, 0x3, 0xc7, 0x6f, 0x7f, 0x63, 0x9f, 0x81, - 0x9a, 0x89, 0x26, 0x7f, 0x84, 0x9e, 0xe, 0x24, 0xf7, 0x4d, - 0x1a, 0x4, 0x3f, 0xf8, 0xea, 0x8a, 0xc5, 0xd4, 0x3f, 0x60, - 0xaf, 0xd9, 0xf7, 0x52, 0x42, 0x92, 0xfc, 0x29, 0xf0, 0xfc, - 0x60, 0xf7, 0xb7, 0x85, 0xa1, 0x3f, 0x9a, 0x30, 0xaf, 0x7c, - 0xa2, 0x80, 0x3e, 0x5a, 0xd4, 0xff, 00, 0xe0, 0x99, 0x3f, - 0xb3, 0x96, 0xa4, 0xf, 0xfc, 0x5b, 0xf1, 0x68, 0x4f, 0xf1, - 0x5b, 0x6a, 0x57, 0x49, 0xff, 00, 0xb5, 0x48, 0xae, 0x4b, - 0x52, 0xff, 00, 0x82, 0x47, 0x7e, 0xcf, 0xf7, 0xa0, 0xf9, - 0x16, 0x1a, 0xf5, 0x81, 0xf5, 0x83, 0x56, 0x76, 0xff, 00, - 0xd0, 0xc1, 0xaf, 0xb4, 0xa8, 0xa0, 0x56, 0x3e, 0x1, 0xd5, - 0x7f, 0xe0, 0x8c, 0x9f, 0x8, 0x6e, 0xb2, 0x6c, 0xbc, 0x4d, - 0xe2, 0xcb, 0x3, 0xe8, 0x67, 0x82, 0x50, 0x3f, 0x38, 0xbf, - 0xad, 0x72, 0x9a, 0x9f, 0xfc, 0x11, 0x33, 0xc2, 0x32, 0x3, - 0xfd, 0x9f, 0xf1, 0x2f, 0x5a, 0x80, 0xf6, 0x17, 0x36, 0x10, - 0xc8, 0x3f, 0x42, 0xb5, 0xfa, 0x53, 0x45, 0x1, 0x64, 0x7e, - 0x56, 0x6a, 0x1f, 0xf0, 0x44, 0x4b, 0x92, 0x49, 0xb1, 0xf8, - 0xb7, 0x10, 0x1d, 0x85, 0xc6, 0x84, 0x4f, 0xea, 0x27, 0xac, - 0x2b, 0xcf, 0xf8, 0x22, 0x57, 0x8b, 0xa3, 0x52, 0x6d, 0x7e, - 0x27, 0x68, 0xb3, 0x9e, 0xc2, 0x5d, 0x36, 0x68, 0xf3, 0xf9, - 0x3b, 0x57, 0xeb, 0x85, 0x14, 0xee, 0x16, 0x47, 0xe3, 0x4e, - 0xa7, 0xff, 00, 0x4, 0x60, 0xf8, 0xb5, 0x6e, 0x9, 0xb1, - 0xf1, 0x5f, 0x85, 0x2f, 0x71, 0xd0, 0x3c, 0xb7, 0x11, 0x67, - 0xff, 00, 0x21, 0x1a, 0xe4, 0xf5, 0xf, 0xf8, 0x24, 0x47, - 0xc7, 0xfb, 0x36, 0x22, 0xb, 0x6f, 0xe, 0x5f, 0x1, 0xde, - 0xd, 0x58, 0x2e, 0x7f, 0xef, 0xb4, 0x5a, 0xfd, 0xc2, 0xa2, - 0x8b, 0x8a, 0xc8, 0xfc, 0x14, 0xd5, 0x3f, 0xe0, 0x97, 0x9f, - 0xb4, 0x76, 0x9a, 0x7e, 0x4f, 0x3, 0x45, 0x7d, 0xef, 0x6b, - 0xaa, 0xda, 0x9f, 0xfd, 0xa, 0x41, 0x5c, 0xed, 0xe7, 0xfc, - 0x13, 0xbf, 0xf6, 0x8b, 0xb1, 0xcf, 0x99, 0xf0, 0xb7, 0x54, - 0x7c, 0x7f, 0xcf, 0x1b, 0x8b, 0x69, 0x3f, 0xf4, 0x19, 0x4d, - 0x7f, 0x41, 0xb4, 0x51, 0x70, 0xe5, 0x47, 0xf3, 0xa5, 0xa9, - 0xfe, 0xc5, 0x3f, 0x1d, 0xf4, 0x8c, 0xfd, 0xa7, 0xe1, 0x4f, - 0x89, 0xf8, 0xff, 00, 0x9e, 0x36, 0x2d, 0x2f, 0xfe, 0x81, - 0x9a, 0xe5, 0xf5, 0x1f, 0xd9, 0xd7, 0xe2, 0xa6, 0x90, 0x9, - 0xbd, 0xf8, 0x6d, 0xe2, 0xcb, 0x60, 0x3a, 0x99, 0x34, 0x5b, - 0x91, 0xff, 00, 0xb2, 0x57, 0xf4, 0xab, 0x45, 0x17, 0xe, - 0x53, 0xf9, 0x81, 0xd4, 0xfc, 0x11, 0xe2, 0x3d, 0x10, 0x13, - 0xa8, 0xe8, 0x1a, 0xa5, 0x80, 0x1d, 0x7e, 0xd5, 0x65, 0x24, - 0x78, 0xff, 00, 0xbe, 0x94, 0x56, 0x29, 0xf9, 0x4e, 0xf, - 0x7, 0xd0, 0xd7, 0xf5, 0x25, 0x3d, 0x9c, 0x17, 0x23, 0x13, - 0x41, 0x1c, 0xbf, 0xef, 0xa0, 0x3f, 0xce, 0xb2, 0xb5, 0xf, - 0x3, 0xf8, 0x73, 0x57, 0x4d, 0xb7, 0xde, 0x1f, 0xd2, 0xef, - 0x57, 0xd2, 0xe2, 0xca, 0x39, 0x7, 0xea, 0xb4, 0x5c, 0x39, - 0x4f, 0xe6, 0xa, 0x8a, 0xfe, 0x95, 0xf5, 0x2f, 0xd9, 0xe7, - 0xe1, 0x6e, 0xae, 0x85, 0x2f, 0x7e, 0x1c, 0xf8, 0x56, 0xe5, - 0x4f, 0x50, 0xfa, 0x35, 0xb9, 0xff, 00, 0xd9, 0x2b, 0x99, - 0xbc, 0xfd, 0x8b, 0xfe, 0x4, 0x5f, 0x82, 0x25, 0xf8, 0x49, - 0xe1, 0x1e, 0x7a, 0x98, 0xf4, 0x98, 0xa3, 0x3f, 0x9a, 0x81, - 0x45, 0xc5, 0xca, 0x7f, 0x3a, 0x30, 0xc0, 0xf7, 0x33, 0x47, - 0xc, 0x4a, 0x5e, 0x49, 0x18, 0x22, 0xa8, 0xea, 0x49, 0x38, - 0x2, 0xbf, 0xa7, 0xf, 0x86, 0x5e, 0x1f, 0x1e, 0x14, 0xf8, - 0x6f, 0xe1, 0x5d, 0x10, 0x74, 0xd3, 0xb4, 0xab, 0x5b, 0x4e, - 0x98, 0xfb, 0x91, 0x2a, 0xff, 00, 0x4a, 0xf2, 0x56, 0xfd, - 0x81, 0xbf, 0x67, 0xef, 0x3e, 0x29, 0xe3, 0xf8, 0x5d, 0xa3, - 0x5b, 0xcd, 0x13, 0x89, 0x12, 0x4b, 0x7f, 0x32, 0x32, 0xac, - 0xe, 0x41, 0x1b, 0x5c, 0x77, 0xaf, 0x7e, 00, 0x28, 00, - 0x70, 0x5, 0x5, 0x25, 0x61, 0x68, 0xa2, 0x8a, 0x43, 0xa, - 0x28, 0xa2, 0x80, 0x3e, 0x65, 0xfd, 0xa7, 0xae, 0xf3, 0x74, - 0xc9, 0x9e, 0x80, 0xa, 0xf9, 0x6f, 0x55, 0x6c, 0x40, 0xdf, - 0x4a, 0xfa, 0x2b, 0xf6, 0x96, 0xbb, 0xdf, 0xab, 0xca, 0xb9, - 0xe8, 0xd8, 0xaf, 0x9b, 0xf5, 0xa7, 0xdb, 0x6c, 0xe7, 0xfd, - 0x93, 0x5f, 0x97, 0x63, 0x5f, 0x3e, 0x61, 0x37, 0xe6, 0x7e, - 0x49, 0xc4, 0x93, 0xbd, 0x59, 0x1c, 0x17, 0xc1, 0x6b, 0x21, - 0xad, 0xfe, 0xd7, 0xdf, 0xc, 0x2d, 0x58, 0xf0, 0xba, 0xbf, - 0xda, 0x3f, 0x18, 0xe2, 0x79, 0x7, 0xfe, 0x81, 0x5f, 0xb0, - 0x35, 0xf9, 0x3d, 0xfb, 0x20, 0x69, 0x8b, 0xad, 0xfe, 0xd9, - 0xde, 0x16, 0x2c, 0x37, 0xb, 0x1b, 0x7b, 0xcb, 0xb1, 0xec, - 0x44, 0x25, 0x41, 0xff, 00, 0xc7, 0xeb, 0xf5, 0x86, 0xbf, - 0x44, 0xc1, 0xab, 0x52, 0x47, 0xda, 0x70, 0xdc, 0x39, 0x32, - 0xca, 0x41, 0x45, 0x14, 0x57, 0x69, 0xf4, 0xe5, 0x1d, 0x6b, - 0x45, 0xb1, 0xf1, 0x1e, 0x93, 0x75, 0xa6, 0x6a, 0x56, 0xb1, - 0xde, 0xd8, 0x5d, 0x46, 0x62, 0x9a, 0x9, 0x57, 0x2a, 0xea, - 0x7a, 0x83, 0x5f, 0x9e, 0x3f, 0x1f, 0x3f, 0x63, 0x7d, 0x73, - 0xe1, 0xc6, 0xa7, 0x73, 0xac, 0x78, 0x5c, 0x4b, 0xa8, 0xf8, - 0x71, 0x98, 0xba, 0x94, 0x3b, 0xa5, 0xb5, 0x1f, 0xdd, 0x71, - 0xdc, 0xf, 0xef, 0x7e, 0x78, 0xaf, 0xd1, 0xca, 0x42, 0x3, - 0x2, 0x8, 0xc8, 0x3d, 0x41, 0xae, 0x6a, 0xd4, 0x15, 0x65, - 0xd9, 0x9e, 0x2e, 0x67, 0x94, 0xd0, 0xcd, 0x29, 0xa8, 0xd5, - 0xd1, 0xad, 0x9a, 0xe9, 0xfe, 0x6b, 0xc8, 0xfc, 0x79, 0x4f, - 0xf8, 0x49, 0xb4, 0xae, 0x1e, 0x13, 0x22, 0x8e, 0x3a, 0x73, - 0x52, 0xf, 0x16, 0x6a, 0xb0, 0xff, 00, 0xac, 0xb4, 0x90, - 0x7f, 0xc0, 0x4d, 0x7e, 0xa5, 0x78, 0xa7, 0xe0, 0xb7, 0x84, - 0x3c, 0x5b, 0xbd, 0xaf, 0x34, 0x88, 0xa1, 0x99, 0x8e, 0x4c, - 0xd6, 0xa0, 0x46, 0xc4, 0xfa, 0x9c, 0x70, 0x7f, 0x11, 0x5e, - 0x7f, 0x7f, 0xfb, 0x1e, 0xf8, 0x4a, 0xe9, 0xcb, 0x45, 0x77, - 0x77, 0x8, 0x3d, 0x1, 0x54, 0x6c, 0x7e, 0x82, 0xbc, 0xa, - 0x99, 0x75, 0x5b, 0xfc, 0x29, 0xfe, 0x7, 0xc4, 0xcf, 0x84, - 0x9c, 0x3e, 0x1d, 0x7d, 0x1d, 0xbf, 0x3, 0xf3, 0xe5, 0x7c, - 0x79, 0x75, 0x1f, 0xdf, 0xb7, 0x71, 0xf5, 0x6, 0xa6, 0x4f, - 0x88, 0xc4, 0x70, 0xc8, 0xc3, 0xf0, 0xaf, 0xb9, 0x6e, 0xff, - 00, 0x62, 0x6d, 0x12, 0x40, 0x7c, 0x9d, 0x65, 0xd4, 0xff, - 00, 0xb7, 0x6c, 0xf, 0xfe, 0xcd, 0x58, 0x57, 0x9f, 0xb0, - 0xcc, 0x4e, 0xf, 0x93, 0xac, 0xdb, 0x39, 0xf4, 0x78, 0xa, - 0x8f, 0xeb, 0x5c, 0xaf, 0x2e, 0x9f, 0x5a, 0x5f, 0x8a, 0xff, - 00, 0x33, 0x96, 0x5c, 0x2f, 0x5e, 0x3b, 0x29, 0x7d, 0xeb, - 0xfc, 0xcf, 0x8f, 0xe3, 0xf8, 0x8f, 0x9, 0xeb, 0xb8, 0x55, - 0xa8, 0xfe, 0x22, 0x5b, 0x37, 0xf1, 0xd7, 0xd2, 0x97, 0xff, - 00, 0xb0, 0xbe, 0xa6, 0xa7, 0xf7, 0x33, 0x69, 0xd3, 0x8f, - 0x5d, 0xc5, 0x7f, 0x9a, 0xd7, 0x3f, 0x7f, 0xfb, 0xe, 0x78, - 0x89, 0xf, 0xee, 0xec, 0x6d, 0xa7, 0xf7, 0x8e, 0x64, 0x1f, - 0xcc, 0x8a, 0xe7, 0x96, 0x5f, 0xde, 0x93, 0x39, 0xa5, 0xc3, - 0xf8, 0xa8, 0xec, 0xe5, 0xf7, 0x5c, 0xf1, 0x48, 0xfc, 0x79, - 0x6a, 0xd8, 0xfd, 0xe0, 0xfc, 0x45, 0x59, 0x8f, 0xc6, 0x96, - 0x8d, 0xff, 00, 0x2d, 0x56, 0xbd, 0xe, 0xf3, 0xf6, 0x2d, - 0xf1, 0x44, 0x4c, 0x40, 0xd1, 0x25, 0x6c, 0x77, 0x49, 0x10, - 0xff, 00, 0x26, 0xac, 0x2b, 0xcf, 0xd9, 0x13, 0xc5, 0x96, - 0xec, 0x47, 0xf6, 0x16, 0xa3, 0xc7, 0xfc, 0xf3, 0x89, 0x9b, - 0xf9, 0x56, 0x2f, 0x3, 0x4f, 0xac, 0x24, 0xbe, 0x47, 0x3b, - 0xc9, 0xf1, 0x91, 0xfb, 0x4f, 0xe7, 0x16, 0x60, 0xa7, 0x8a, - 0xed, 0x1f, 0xfe, 0x5a, 0xa7, 0xe7, 0x56, 0x13, 0xc4, 0x56, - 0xcc, 0x3e, 0xfa, 0xfe, 0x75, 0x5e, 0xf7, 0xf6, 0x6c, 0xf1, - 0x2d, 0x96, 0xe2, 0xfa, 0x6e, 0xa7, 0x10, 0x1d, 0xda, 0x16, - 00, 0x7e, 0x95, 0x87, 0x71, 0xf0, 0x6f, 0x5a, 0xb5, 0x62, - 0x18, 0xdc, 0x21, 0x1d, 0x99, 0x6b, 0x9d, 0xe0, 0xa8, 0xf7, - 0x68, 0xe7, 0x78, 0xc, 0x64, 0x7e, 0xda, 0xf9, 0xa3, 0xa9, - 0x5d, 0x66, 0xdd, 0xbf, 0x88, 0x54, 0x83, 0x53, 0x80, 0xff, - 00, 0x10, 0xae, 0x16, 0x4f, 0x86, 0xfa, 0xec, 0x1f, 0x76, - 0x49, 0x4f, 0xd5, 0x6a, 0xbb, 0xf8, 0x43, 0xc4, 0x56, 0xfd, - 0x1d, 0x8f, 0xd4, 0x1a, 0xcf, 0xea, 0x34, 0x9e, 0xd3, 0x32, - 0xfa, 0xbe, 0x35, 0x7f, 0x2b, 0x3d, 0x18, 0x5f, 0x42, 0x7f, - 0x88, 0x53, 0x85, 0xd4, 0x47, 0xa3, 0xd7, 0x98, 0x9d, 0x2b, - 0xc4, 0xb0, 0xff, 00, 0xb, 0x37, 0xe3, 0x4d, 0xdf, 0xe2, - 0x38, 0x3a, 0xc0, 0xc7, 0xf1, 0xa9, 0xfe, 0xcf, 0x8b, 0xda, - 0x62, 0xf6, 0x78, 0xd5, 0xf6, 0x13, 0xf9, 0x9e, 0xa6, 0xb7, - 0x2b, 0xd9, 0xff, 00, 0x5a, 0x91, 0x6e, 0xd8, 0x74, 0x94, - 0xfe, 0x75, 0xe5, 0x3, 0x59, 0xd7, 0xa1, 0xfb, 0xd6, 0x92, - 0x1f, 0xc2, 0x9c, 0x3c, 0x59, 0xaa, 0xc5, 0xf7, 0xed, 0x24, - 0x1f, 0x81, 0xa8, 0x79, 0x6b, 0x7b, 0x34, 0x2e, 0x6c, 0x5c, - 0x77, 0xa4, 0xfe, 0xf3, 0xd6, 0xd3, 0x52, 0xb8, 0x4f, 0xbb, - 0x70, 0xe3, 0xe8, 0xd5, 0x62, 0x3d, 0x7f, 0x50, 0x8f, 0xee, - 0xdd, 0xc8, 0x3f, 0xe0, 0x55, 0xe4, 0xb, 0xe3, 0xbb, 0xb8, - 0xfe, 0xfd, 0xbb, 0x8f, 0xc0, 0xd4, 0xc9, 0xf1, 0xc, 0xaf, - 0xde, 0x8d, 0x87, 0xe7, 0x59, 0xbc, 0xba, 0xa2, 0xda, 0xc3, - 0xfa, 0xd6, 0x26, 0x1b, 0xc2, 0x48, 0xf6, 0x38, 0xbc, 0x63, - 0xac, 0x43, 0x8d, 0x97, 0xb2, 0xc, 0x7b, 0xd5, 0xb8, 0xbe, - 0x22, 0x6b, 0xb0, 0x9e, 0x2f, 0x58, 0xfd, 0x6b, 0xc6, 0x63, - 0xf8, 0x8d, 0x17, 0x7c, 0x8f, 0xc6, 0xac, 0xc7, 0xf1, 0xe, - 0xd8, 0xf5, 0x7a, 0x5f, 0x52, 0xc4, 0x47, 0x6f, 0xcc, 0xb5, - 0x99, 0xd6, 0x8e, 0xfc, 0xcb, 0xef, 0x3d, 0xb2, 0xf, 0x8b, - 0x7e, 0x21, 0x83, 0xa5, 0xd6, 0x7e, 0xb5, 0xa1, 0x6f, 0xf1, - 0xc3, 0xc4, 0x50, 0x11, 0x99, 0xb7, 0x62, 0xbc, 0x36, 0x3f, - 0x1e, 0xda, 0x37, 0xfc, 0xb5, 0x15, 0x66, 0x3f, 0x1a, 0xda, - 0x37, 0xfc, 0xb5, 0x5a, 0x7e, 0xcb, 0x17, 0x1d, 0x9b, 0xfb, - 0xd9, 0xb4, 0x73, 0xba, 0xb1, 0xfb, 0x6d, 0x1e, 0xf9, 0x6f, - 0xfb, 0x43, 0x78, 0x82, 0x10, 0x1, 0x73, 0xf9, 0xd6, 0xa5, - 0xaf, 0xed, 0x2f, 0xac, 0xc5, 0xf7, 0xb2, 0x6b, 0xe7, 0x74, - 0xf1, 0x6d, 0xa3, 0x7f, 0xcb, 0x54, 0xfc, 0xea, 0x74, 0xf1, - 0x25, 0xab, 0xff, 00, 0x1a, 0xfe, 0x75, 0x4a, 0xae, 0x3a, - 0x1b, 0x4e, 0x47, 0x4c, 0x78, 0x86, 0xaa, 0xff, 00, 0x97, - 0xa7, 0xd2, 0xd0, 0x7e, 0xd4, 0xfa, 0x82, 0xe3, 0x7a, 0xb6, - 0x3e, 0x95, 0xab, 0x6b, 0xfb, 0x55, 0xb8, 0xc7, 0x98, 0x9f, - 0x9a, 0xd7, 0xcb, 0x4b, 0xad, 0xdb, 0xb7, 0xf1, 0x8f, 0xce, - 0xa5, 0x5d, 0x56, 0x3, 0xfc, 0x43, 0xf3, 0xab, 0x58, 0xec, - 0x7c, 0x7e, 0xdb, 0x3a, 0xe3, 0xc4, 0x75, 0xff, 00, 0xe7, - 0xe2, 0x3e, 0xb4, 0xb6, 0xfd, 0xaa, 0xad, 0x9c, 0xfc, 0xe8, - 0xa3, 0xfe, 0x3, 0x5a, 0xb6, 0xdf, 0xb4, 0xfe, 0x94, 0xf8, - 0xde, 0x13, 0xf2, 0x22, 0xbe, 0x39, 0x17, 0xf0, 0xb7, 0xf1, - 0xa, 0x78, 0xbb, 0x88, 0xf4, 0x71, 0x5a, 0xac, 0xdb, 0x1f, - 0x1f, 0xb5, 0xf8, 0x1d, 0x91, 0xe2, 0x4a, 0xfd, 0xd3, 0x3e, - 0xd6, 0xb6, 0xfd, 0xa4, 0x34, 0x29, 0xb1, 0xb8, 0xa8, 0xfc, - 0x6b, 0x52, 0xf, 0x8f, 0x5e, 0x1d, 0x94, 0xc, 0xca, 0x6, - 0x7d, 0xd, 0x7c, 0x2e, 0x2e, 0x53, 0xb3, 0xfe, 0xb5, 0x22, - 0xdd, 0x63, 0xa4, 0xa7, 0xf0, 0x35, 0xaa, 0xcf, 0x31, 0xb1, - 0xde, 0xcf, 0xe4, 0x75, 0x47, 0x89, 0x6a, 0xf5, 0x8a, 0x3e, - 0xf5, 0xb7, 0xf8, 0xcb, 0xe1, 0xd9, 0xff, 00, 0xe5, 0xe3, - 0x15, 0xa1, 0x17, 0xc4, 0xed, 0x2, 0x5e, 0x97, 0x80, 0x7d, - 0x6b, 0xf3, 0xf9, 0x2f, 0x65, 0x5f, 0xbb, 0x3b, 0x8f, 0xa3, - 0x54, 0xc9, 0xab, 0xdd, 0xc7, 0xf7, 0x6e, 0xa4, 0x1f, 0xf0, - 0x23, 0x5b, 0xae, 0x20, 0xc4, 0x2d, 0xe0, 0x8e, 0x98, 0xf1, - 0x2c, 0xba, 0xc0, 0xfd, 0x7, 0x8b, 0xc7, 0x3a, 0x2c, 0xdf, - 0x76, 0xf5, 0x3f, 0x1a, 0xb4, 0x9e, 0x28, 0xd2, 0xe4, 0xfb, - 0xb7, 0xb1, 0x9f, 0xc6, 0xbf, 0x3d, 0xa3, 0xf1, 0x2e, 0xa7, - 0x1f, 0xdd, 0xbd, 0x97, 0xfe, 0xfa, 0x35, 0x6a, 0x2f, 0x1b, - 0x6b, 0x30, 0x91, 0xb6, 0xf6, 0x4e, 0x3d, 0x58, 0xd6, 0xcb, - 0x88, 0xa7, 0xd6, 0x9f, 0xe2, 0x74, 0x2e, 0x24, 0x87, 0x58, - 0x1f, 0xa1, 0x11, 0xea, 0xf6, 0x52, 0xfd, 0xdb, 0x98, 0xcf, - 0xfc, 0xa, 0xa6, 0x5b, 0xc8, 0x1b, 0xa4, 0xc8, 0x7e, 0x8c, - 0x2b, 0xf3, 0xfa, 0x1f, 0x89, 0x7a, 0xf4, 0x23, 0x8b, 0xc7, - 0xfc, 0xcd, 0x5e, 0x83, 0xe3, 0x7, 0x88, 0x20, 0xc6, 0x2e, - 0x58, 0xe3, 0xfd, 0xa3, 0x5b, 0xc7, 0x88, 0xa3, 0xd6, 0x9b, - 0x3a, 0x23, 0xc4, 0x58, 0x77, 0xba, 0x67, 0xde, 0xe2, 0x45, - 0x6e, 0x8c, 0xf, 0xd0, 0xd2, 0xe6, 0xbe, 0x18, 0x87, 0xe3, - 0xb7, 0x88, 0x22, 0xc0, 0xf3, 0xf, 0xfd, 0xf4, 0x6b, 0x4e, - 0xdf, 0xf6, 0x8a, 0xd7, 0x21, 0x23, 0x3b, 0x8e, 0x3f, 0xda, - 0x35, 0xba, 0xe2, 0x1a, 0x1d, 0x62, 0xce, 0x88, 0xe7, 0xf8, - 0x47, 0xbb, 0x3e, 0xd5, 0xa2, 0xbe, 0x3e, 0x83, 0xf6, 0x9c, - 0xd5, 0xd0, 0x8d, 0xe1, 0xb1, 0xfe, 0xf1, 0xad, 0x5b, 0x5f, - 0xda, 0x9a, 0xed, 0x71, 0xbd, 0xf, 0x15, 0xbc, 0x73, 0xec, - 0x23, 0xde, 0xeb, 0xe4, 0x74, 0x47, 0x3a, 0xc1, 0xcb, 0xed, - 0x1f, 0x56, 0x51, 0x5f, 0x33, 0xdb, 0x7e, 0xd5, 0x44, 0x91, - 0xe6, 0x20, 0x1f, 0x51, 0x5a, 0xd6, 0xff, 00, 0xb5, 0x35, - 0x91, 0x3, 0x7a, 0xa7, 0xe4, 0x6b, 0xa2, 0x39, 0xd6, 0xa, - 0x5f, 0x6c, 0xe8, 0x8e, 0x69, 0x84, 0x96, 0xd3, 0x47, 0xd0, - 0x54, 0x57, 0x88, 0xdb, 0x7e, 0xd3, 0x5a, 0x4c, 0xa4, 0x6f, - 0x11, 0x8f, 0xc4, 0xd6, 0x9c, 0x1f, 0xb4, 0x56, 0x83, 0x26, - 0x32, 0xf1, 0xe7, 0xd9, 0xeb, 0x78, 0xe6, 0xb8, 0x39, 0x6d, - 0x51, 0x1b, 0xac, 0x76, 0x1e, 0x5b, 0x4d, 0x1e, 0xb7, 0x45, - 0x79, 0xbd, 0xbf, 0xc7, 0x4f, 0xf, 0xcf, 0xff, 00, 0x2d, - 0x94, 0x7f, 0xc0, 0xeb, 0x46, 0x1f, 0x8b, 0xfe, 0x1e, 0x9b, - 0x3, 0xed, 0x40, 0x1f, 0xad, 0x74, 0x47, 0x1b, 0x86, 0x96, - 0xd5, 0x17, 0xde, 0x6c, 0xb1, 0x14, 0x5e, 0xd2, 0x47, 0x6f, - 0x45, 0x72, 0xf0, 0x7c, 0x49, 0xd0, 0x67, 0xe9, 0x7a, 0x83, - 0xea, 0x6a, 0xdc, 0x7e, 0x36, 0xd1, 0x65, 0xfb, 0xb7, 0xf1, - 0x9f, 0xc6, 0xb6, 0x55, 0xe9, 0x3d, 0xa4, 0xbe, 0xf2, 0xd5, - 0x58, 0x3d, 0xa4, 0x8d, 0xda, 0x2b, 0x32, 0x3f, 0x12, 0x69, - 0x92, 0xfd, 0xdb, 0xd8, 0xbf, 0xef, 0xaa, 0x9d, 0x35, 0x7b, - 0x29, 0x3e, 0xed, 0xd4, 0x47, 0xfe, 0x4, 0x2b, 0x45, 0x38, - 0xbd, 0x99, 0x7c, 0xd1, 0xee, 0x5c, 0xa2, 0xa1, 0x5b, 0xb8, - 0x1f, 0xee, 0xca, 0x87, 0xfe, 0x4, 0x2a, 0x41, 0x22, 0x37, - 0x46, 0x53, 0xf4, 0x35, 0x57, 0x45, 0xe, 0xa2, 0x93, 0x39, - 0xa5, 0xa6, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, - 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, - 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, - 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, - 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, - 0x1, 0x45, 0x14, 0x50, 0x1, 0x48, 0x78, 0x14, 0xb4, 0xc9, - 0x5b, 0x64, 0x4e, 0xde, 0x80, 0x9a, 00, 0xf8, 0xdb, 0xf6, - 0x85, 0xba, 0xf3, 0x75, 0xd9, 0x87, 0xfb, 0x67, 0xf9, 0xd7, - 0x80, 0x78, 0x89, 0xf6, 0x59, 0x4d, 0xfe, 0xe9, 0xaf, 0x68, - 0xf8, 0xe1, 0x73, 0xe6, 0xf8, 0x82, 0x50, 0x4f, 0xf1, 0x93, - 0xfa, 0xd7, 0x84, 0x78, 0xc6, 0xf0, 0x41, 0xa7, 0x4c, 0x72, - 0x7, 0xca, 0x6b, 0xf2, 0xb7, 0xfb, 0xcc, 0x6c, 0xdf, 0x99, - 0xf8, 0xb7, 0x10, 0xce, 0xf5, 0x66, 0x6f, 0x7f, 0xc1, 0x3d, - 0xac, 0x1b, 0x50, 0xfd, 0xab, 0x75, 0x8b, 0xbd, 0xb9, 0x8e, - 0xcb, 0xc3, 0xf7, 0x4, 0x9f, 0x46, 0x79, 0xa1, 0x51, 0xfa, - 0x66, 0xbf, 0x4f, 0x2b, 0xf3, 0x97, 0xfe, 0x9, 0x81, 0x68, - 0x6f, 0xfe, 0x2d, 0x7c, 0x4d, 0xd5, 0xa, 0x9d, 0xb6, 0xfa, - 0x75, 0xa5, 0xb0, 0x6c, 0x71, 0x99, 0x25, 0x91, 0x88, 0xcf, - 0xfd, 0xb3, 0x15, 0xfa, 0x35, 0x5f, 0xa5, 0xe1, 0xd5, 0xa9, - 0xa3, 0xf5, 0xc, 0x9e, 0x1e, 0xcf, 0x1, 0x4a, 0x3e, 0x48, - 0x28, 0xa2, 0x8a, 0xe9, 0x3d, 0x90, 0xa2, 0x8a, 0x28, 00, - 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, - 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa8, 0xe4, 0x82, 0x29, - 0x46, 0x1e, 0x34, 0x71, 0xe8, 0xca, 0xd, 0x49, 0x45, 00, - 0x50, 0x9f, 0x41, 0xd3, 0x2e, 0x46, 0x26, 0xd3, 0xad, 0x25, - 0x1e, 0x8f, 0x2, 0x9f, 0xe6, 0x2b, 0x3e, 0xe3, 0xc0, 0x1e, - 0x19, 0xbb, 0xff, 00, 0x5b, 0xa0, 0x69, 0xad, 0xff, 00, - 0x6e, 0xa8, 0x3f, 0x90, 0xad, 0xfa, 0x2a, 0x1c, 0x20, 0xf7, - 0x46, 0x6e, 0x9c, 0x25, 0xbc, 0x51, 0xc5, 0xdd, 0xfc, 0x19, - 0xf0, 0x55, 0xe9, 0xcc, 0x9e, 0x1e, 0xb4, 0x1f, 0xf5, 0xcc, - 0x14, 0xfe, 0x44, 0x56, 0x45, 0xdf, 0xec, 0xe9, 0xe0, 0x4b, - 0xbc, 0xff, 00, 0xc4, 0xa0, 0xc3, 0x9f, 0xf9, 0xe7, 0x33, - 0x71, 0xf9, 0x93, 0x5e, 0x97, 0x45, 0x62, 0xf0, 0xd4, 0x65, - 0xbc, 0x17, 0xdc, 0x63, 0x2c, 0x26, 0x1e, 0x5b, 0xd3, 0x5f, - 0x72, 0x3c, 0x66, 0xef, 0xf6, 0x51, 0xf0, 0x4d, 0xce, 0x76, - 0x8b, 0xc8, 0x73, 0xfd, 0xd9, 0x10, 0xff, 00, 0x35, 0xac, - 0x9b, 0xaf, 0xd8, 0xeb, 0xc2, 0x93, 0x3, 0xe5, 0xdf, 0x5d, - 0xc6, 0x7f, 0xda, 0x54, 0x6f, 0xe8, 0x2b, 0xdf, 0x28, 0xac, - 0x9e, 0xb, 0xe, 0xfe, 0xc2, 0x30, 0x79, 0x76, 0x11, 0xff, - 00, 0xcb, 0xb4, 0x7c, 0xd5, 0x79, 0xfb, 0x13, 0xe8, 0xd2, - 0xff, 00, 0xa9, 0xd6, 0x9d, 0x7d, 0x9e, 0xd8, 0x1f, 0xfd, - 0x9a, 0xb0, 0xaf, 0x7f, 0x61, 0xa4, 0x6c, 0xf9, 0x1a, 0xbd, - 0xb3, 0xff, 00, 0xd7, 0x48, 0x4a, 0xff, 00, 0x8d, 0x7d, - 0x65, 0x45, 0x66, 0xf2, 0xfc, 0x3b, 0xfb, 0x3f, 0x8b, 0x32, - 0x79, 0x56, 0x11, 0xfd, 0x9f, 0xc5, 0xff, 00, 0x99, 0xf1, - 0x6d, 0xef, 0xec, 0x2f, 0xa9, 0xe0, 0x98, 0xee, 0x34, 0xe9, - 0x7d, 0x83, 0x11, 0xfc, 0xd6, 0xb9, 0xeb, 0xdf, 0xd8, 0x7f, - 0xc4, 0x28, 0xe, 0xcb, 0xb, 0x79, 0x7f, 0xdc, 0x99, 0x3f, - 0xa9, 0x15, 0xf7, 0x9d, 0x15, 0x9b, 0xcb, 0x68, 0xf4, 0x6d, - 0x7c, 0xcc, 0x25, 0x93, 0x61, 0x9e, 0xd7, 0x5f, 0x33, 0xf3, - 0xb6, 0xf3, 0xf6, 0x2d, 0xf1, 0x4c, 0x4a, 0x48, 0xd0, 0xe4, - 0x3f, 0xf5, 0xce, 0x44, 0x6f, 0xe4, 0xd5, 0x87, 0x7d, 0xfb, - 0x22, 0x78, 0xae, 0xd7, 0x27, 0xfb, 0xb, 0x50, 0xff, 00, - 0x80, 0x46, 0xcd, 0xfc, 0xab, 0xf4, 0xba, 0x8a, 0x8f, 0xec, - 0xc8, 0xf4, 0x9b, 0xfc, 0xe, 0x79, 0x64, 0x54, 0x1e, 0xd2, - 0x7f, 0x87, 0xf9, 0x1f, 0x96, 0x37, 0xbf, 0xb3, 0x77, 0x88, - 0xec, 0x98, 0xac, 0x9a, 0x6e, 0xa5, 0xb, 0x7a, 0x34, 0x2c, - 0x3f, 0xa5, 0x62, 0xdd, 0x7c, 0x18, 0xd6, 0xad, 0x1b, 0x69, - 0x17, 0x31, 0x91, 0xd9, 0x97, 0x15, 0xfa, 0xd1, 0x51, 0xbd, - 0xbc, 0x52, 0xe7, 0x7c, 0x48, 0xf9, 0xfe, 0xf2, 0x83, 0x50, - 0xf2, 0xd9, 0x74, 0xa9, 0xf8, 0x7f, 0xc1, 0x39, 0x65, 0xc3, - 0xb4, 0xa5, 0xf6, 0x97, 0xfe, 0x3, 0xff, 00, 0x4, 0xfc, - 0x8c, 0x97, 0xe1, 0xa6, 0xb9, 0x7, 0xdd, 0x92, 0x5f, 0xc5, - 0x4d, 0x57, 0x7f, 0x6, 0xf8, 0x86, 0xe, 0x8e, 0xdc, 0x7a, - 0x82, 0x2b, 0xf5, 0xae, 0x7f, 0xb, 0xe8, 0xd7, 0x24, 0x99, - 0xb4, 0x9b, 0x19, 0x49, 0xea, 0x5e, 0xdd, 0xf, 0xf4, 0xac, - 0xd9, 0xbe, 0x19, 0xf8, 0x4e, 0xe0, 0x93, 0x27, 0x87, 0x74, - 0xd2, 0x4f, 0x53, 0xf6, 0x65, 0x1f, 0xd2, 0xb3, 0x79, 0x75, - 0x6e, 0x93, 0x5f, 0x71, 0xc7, 0x3e, 0x18, 0xa6, 0xff, 00, - 0x97, 0xee, 0x3f, 0x28, 0xe, 0x8f, 0xe2, 0x38, 0x3d, 0x4f, - 0xe2, 0x69, 0x9f, 0xf1, 0x51, 0xc1, 0xd6, 0x26, 0x6f, 0xc6, - 0xbf, 0x54, 0x67, 0xf8, 0x29, 0xe0, 0x8b, 0x90, 0x43, 0xf8, - 0x76, 0xd0, 0x67, 0xba, 0xee, 0x5f, 0xe4, 0x6b, 0x1e, 0xef, - 0xf6, 0x6e, 0xf0, 0xd, 0xd0, 0xe3, 0x48, 0x68, 0x4f, 0xac, - 0x73, 0xbf, 0xf5, 0x26, 0xb2, 0x79, 0x75, 0x7f, 0xee, 0xbf, - 0xeb, 0xd0, 0xe4, 0x9f, 0xa, 0x45, 0xed, 0x18, 0xfd, 0xef, - 0xfc, 0x8f, 0xcc, 0x7f, 0xed, 0x6d, 0x7a, 0x1f, 0xbd, 0x6c, - 0xe6, 0x94, 0x78, 0xa7, 0x56, 0x8b, 0xef, 0xda, 0xc9, 0xff, - 00, 0x7c, 0x9a, 0xfd, 0x1f, 0xbc, 0xfd, 0x93, 0xbc, 0xf, - 0x73, 0xfe, 0xad, 0x2f, 0x20, 0xff, 00, 0x76, 0x45, 0x3f, - 0xcd, 0x6b, 0x12, 0xf7, 0xf6, 0x35, 0xf0, 0xbc, 0xf9, 0xf2, - 0x35, 0xb, 0x98, 0xbf, 0xdf, 0x8d, 0x5b, 0xf9, 0x62, 0xb1, - 0x96, 0x5f, 0x5b, 0xf9, 0x13, 0x38, 0xe5, 0xc2, 0x8d, 0x6d, - 0x1f, 0xba, 0x47, 0xe7, 0xf0, 0xf1, 0xcd, 0xe4, 0x63, 0xe7, - 0xb7, 0x71, 0xf5, 0x6, 0xa6, 0x4f, 0x88, 0x4e, 0xbf, 0x7a, - 0x32, 0x3f, 0x3a, 0xfb, 0x82, 0xef, 0xf6, 0x24, 0xd3, 0x64, - 0x3f, 0xb9, 0xd6, 0x94, 0xf, 0xf6, 0xed, 0x7f, 0xfb, 0x2a, - 0xc5, 0xbd, 0xfd, 0x86, 0x4b, 0x67, 0xc9, 0xd5, 0xac, 0xe4, - 0xf4, 0xf3, 0x22, 0x65, 0xff, 00, 0x1a, 0xc1, 0xe0, 0x2a, - 0x75, 0xa3, 0xf8, 0xaf, 0xf3, 0x39, 0x65, 0xc3, 0x15, 0x56, - 0xd1, 0x97, 0xde, 0xbf, 0xcc, 0xf9, 0x6, 0x3f, 0x88, 0xa9, - 0xfc, 0x40, 0x8a, 0xb5, 0x1f, 0xc4, 0x4b, 0x73, 0xd5, 0xb1, - 0xf8, 0xd7, 0xd2, 0xb7, 0xbf, 0xb0, 0xae, 0xaa, 0x1, 0xf2, - 0xa7, 0xd3, 0x26, 0xff, 00, 0x81, 0x11, 0xfc, 0xd6, 0xb9, - 0xfb, 0xef, 0xd8, 0x77, 0xc4, 0x71, 0x3, 0xb2, 0xc2, 0xd6, - 0x6f, 0xfa, 0xe7, 0x32, 0xff, 00, 0x52, 0x2b, 0x9, 0x60, - 0x7b, 0xd2, 0x67, 0x3c, 0xb8, 0x7b, 0x13, 0x1d, 0x9c, 0xfe, - 0xeb, 0x9e, 0x27, 0x1f, 0x8f, 0xad, 0x5b, 0x1f, 0xbc, 0xc5, - 0x59, 0x4f, 0x1b, 0x5a, 0xb7, 0xfc, 0xb5, 0x5f, 0xc6, 0xbd, - 0xe, 0xff, 00, 0xf6, 0x31, 0xf1, 0x4d, 0xbe, 0x4f, 0xf6, - 0x1c, 0x8c, 0x3d, 0x63, 0x60, 0xdf, 0xc8, 0xd7, 0x3f, 0x7b, - 0xfb, 0x28, 0xf8, 0x9a, 0xd4, 0x9c, 0xe8, 0x5a, 0x8a, 0xfb, - 0xac, 0xe, 0x7f, 0xa5, 0x61, 0x2c, 0x15, 0x35, 0xbc, 0x1a, - 0xf9, 0x1c, 0xd2, 0xc9, 0xb1, 0x70, 0xfb, 0x6f, 0xe7, 0x16, - 0x62, 0x27, 0x8b, 0xed, 0x5b, 0xfe, 0x5a, 0xa7, 0xe7, 0x53, - 0xa7, 0x89, 0xad, 0x9f, 0xa4, 0x89, 0xf9, 0xd5, 0x7b, 0xcf, - 0xd9, 0xd7, 0xc4, 0x36, 0x79, 0x2f, 0xa7, 0xea, 0x11, 0x1, - 0xfd, 0xe8, 0x58, 0x7f, 0x4a, 0xc6, 0xb8, 0xf8, 0x3b, 0xac, - 0xdb, 0x67, 0xfe, 0x3e, 0x13, 0x1f, 0xde, 0x43, 0x58, 0x3c, - 0x1d, 0xf, 0x34, 0x60, 0xf2, 0xfc, 0x64, 0x7e, 0xda, 0xf9, - 0xa3, 0xa8, 0x5d, 0x7a, 0xdd, 0xbf, 0x8d, 0x7f, 0x3a, 0x95, - 0x75, 0x78, 0xf, 0xf1, 0xa, 0xe1, 0x24, 0xf8, 0x6f, 0xad, - 0xc3, 0x9d, 0xb2, 0xc9, 0xf8, 0xa1, 0xaa, 0xef, 0xe0, 0xfd, - 0x7e, 0xe, 0x92, 0x31, 0xfc, 0xd, 0x47, 0xd4, 0xa8, 0xbd, - 0xa4, 0x67, 0xf5, 0x5c, 0x6a, 0xeb, 0x16, 0x7a, 0x38, 0xd4, - 0xa1, 0x6f, 0xe2, 0x14, 0xe1, 0x7d, 0x9, 0xfe, 0x31, 0x5e, - 0x62, 0xda, 0x47, 0x88, 0xa0, 0xe8, 0x49, 0xfc, 0x4d, 0x34, - 0xff, 00, 0xc2, 0x43, 0x7, 0x58, 0xd9, 0xbf, 0x1a, 0x87, - 0x97, 0xc7, 0xa4, 0x89, 0xf6, 0x58, 0xe5, 0xf6, 0x13, 0xf9, - 0x9e, 0xa6, 0x2e, 0xa3, 0x3f, 0xc4, 0x29, 0xc2, 0xe1, 0x4f, - 0x47, 0xfd, 0x6b, 0xca, 0x7f, 0xb5, 0xb5, 0xd8, 0x7e, 0xf5, - 0xb4, 0x87, 0xf0, 0xa7, 0xf, 0x14, 0xea, 0xb1, 0x7d, 0xeb, - 0x69, 0x3f, 0xef, 0x9a, 0x97, 0x97, 0x3e, 0x92, 0x44, 0xff, - 00, 0xb5, 0xc7, 0x7a, 0x47, 0xab, 0x8b, 0x93, 0xda, 0x53, - 0xf9, 0xd4, 0x89, 0x7d, 0x32, 0xfd, 0xd9, 0xd8, 0x7f, 0xc0, - 0xab, 0xc9, 0xd7, 0xc7, 0x17, 0x91, 0xfd, 0xfb, 0x77, 0x1f, - 0x81, 0xa9, 0x93, 0xe2, 0x13, 0xaf, 0xde, 0x8d, 0x85, 0x64, - 0xf2, 0xd9, 0xf4, 0xb0, 0x7b, 0x7c, 0x44, 0x77, 0xa7, 0x23, - 0xd6, 0x53, 0x58, 0xbd, 0x4f, 0xbb, 0x75, 0x28, 0xff, 00, - 0x81, 0x1a, 0xb1, 0x1f, 0x89, 0xb5, 0x38, 0xbe, 0xed, 0xe4, - 0xa3, 0xfe, 0x4, 0x6b, 0xc9, 0xa3, 0xf8, 0x88, 0x9d, 0xc3, - 0xf, 0xc6, 0xac, 0xc7, 0xf1, 0xa, 0x3, 0xfc, 0x44, 0x54, - 0x7f, 0x67, 0xd6, 0x5b, 0x21, 0xac, 0xc2, 0xac, 0x77, 0x52, - 0x5f, 0x79, 0xeb, 0x71, 0xf8, 0xe3, 0x5a, 0x8b, 0xa5, 0xf4, - 0x9f, 0xf7, 0xd5, 0x5c, 0x83, 0xe2, 0x6e, 0xbd, 0x6, 0x31, - 0x74, 0xc7, 0xea, 0x4d, 0x79, 0x14, 0x7e, 0x3e, 0xb6, 0x6e, - 0xaf, 0x8a, 0xb3, 0x1f, 0x8d, 0xad, 0x5b, 0xfe, 0x5a, 0x8a, - 0x5f, 0x55, 0xc4, 0x47, 0x6b, 0xfd, 0xec, 0xd5, 0x66, 0xf3, - 0x8f, 0xdb, 0x92, 0x3d, 0x8e, 0x1f, 0x8c, 0x3e, 0x20, 0x8b, - 0x1f, 0xe9, 0x4, 0xe3, 0xdc, 0xd6, 0x8d, 0xbf, 0xc7, 0x7d, - 0x7a, 0x1c, 0x7c, 0xe4, 0xff, 00, 0xc0, 0x8d, 0x78, 0x9a, - 0x78, 0xbe, 0xd5, 0xbf, 0xe5, 0xaa, 0xfe, 0x75, 0x3a, 0x78, - 0x9e, 0xd9, 0xff, 00, 0xe5, 0xa2, 0xfe, 0x74, 0x72, 0xe2, - 0xe1, 0xb3, 0x7f, 0x7b, 0x3a, 0x23, 0x9e, 0x54, 0x5f, 0xf2, - 0xf5, 0x9e, 0xef, 0x6f, 0xfb, 0x45, 0x6b, 0x71, 0x63, 0x73, - 0x31, 0xff, 00, 0x81, 0x1a, 0xd6, 0xb6, 0xfd, 0xa6, 0xf5, - 0x48, 0xb1, 0xb8, 0x39, 0xff, 00, 0x81, 0x57, 0xcf, 0x29, - 0xaf, 0xdb, 0xb7, 0xf1, 0xaf, 0xe7, 0x52, 0xae, 0xb1, 0x3, - 0x7f, 0x10, 0xfc, 0xea, 0xd6, 0x23, 0x1b, 0xd, 0xa6, 0xce, - 0xb8, 0x71, 0x5, 0x65, 0xb5, 0x53, 0xe9, 0x4b, 0x6f, 0xda, - 0x92, 0xec, 0x7f, 0xac, 0xdd, 0x5a, 0xd6, 0xdf, 0xb5, 0x42, - 0xf1, 0xbd, 0x41, 0xfa, 0x8a, 0xf9, 0x65, 0x75, 0x38, 0x4f, - 0xf1, 0xf, 0xce, 0x9e, 0x2f, 0xa1, 0x6f, 0xe2, 0x15, 0xa2, - 0xcc, 0x71, 0xf1, 0xfb, 0x6c, 0xeb, 0x8f, 0x11, 0x62, 0x3f, - 0x9d, 0x1f, 0x5b, 0xdb, 0x7e, 0xd4, 0x56, 0x6f, 0x8f, 0x30, - 0x20, 0xfc, 0x2b, 0x56, 0xf, 0xda, 0x63, 0x49, 0x93, 0x19, - 0xf2, 0xfe, 0xb9, 0x22, 0xbe, 0x35, 0x17, 0x31, 0x1f, 0xe2, - 0x14, 0xf1, 0x3a, 0x1e, 0x8f, 0xfa, 0xd6, 0xcb, 0x38, 0xc7, - 0x47, 0xed, 0x7e, 0x7, 0x5c, 0x78, 0x8f, 0x11, 0xe4, 0xcf, - 0xb6, 0xad, 0xff, 00, 0x68, 0x6d, 0xe, 0x5c, 0x6e, 0x78, - 0xc7, 0xfc, 0xa, 0xb4, 0xa0, 0xf8, 0xe7, 0xe1, 0xf9, 0xb1, - 0x89, 0x57, 0xfe, 0xfa, 0xaf, 0x85, 0x44, 0xe3, 0xb3, 0xfe, - 0xb4, 0xf5, 0xba, 0x91, 0x7a, 0x4a, 0xc3, 0xe8, 0xd5, 0xb2, - 0xcf, 0x71, 0x8b, 0x74, 0x8e, 0xa8, 0xf1, 0x25, 0x5e, 0xb1, - 0x3e, 0xf8, 0xb7, 0xf8, 0xb9, 0xa0, 0x4c, 0x1, 0xfb, 0x48, - 0x1f, 0x8d, 0x5d, 0x8b, 0xe2, 0x4e, 0x83, 0x37, 0xdd, 0xbc, - 0x5a, 0xfc, 0xff, 00, 0x5d, 0x46, 0xe5, 0x7a, 0x5c, 0x3f, - 0xfd, 0xf5, 0x53, 0xc7, 0xae, 0xea, 0x11, 0xfd, 0xdb, 0xb9, - 0x7, 0xd1, 0xab, 0x75, 0xc4, 0x35, 0xd6, 0xf0, 0x47, 0x44, - 0x78, 0x91, 0xf5, 0x81, 0xfa, 0xd, 0x1f, 0x8d, 0x74, 0x69, - 0x7a, 0x5f, 0x46, 0x3e, 0xa6, 0xac, 0xc7, 0xe2, 0x5d, 0x32, - 0x5f, 0xbb, 0x7b, 0x11, 0xfc, 0x6b, 0xf3, 0xe5, 0x3c, 0x5b, - 0xab, 0x47, 0x8c, 0x5e, 0xcb, 0xff, 00, 0x7d, 0x55, 0xb8, - 0x7c, 0x7f, 0xad, 0xc3, 0xf7, 0x6f, 0x5f, 0xf1, 0x35, 0xb2, - 0xe2, 0x29, 0x7d, 0xaa, 0x7f, 0x89, 0xd1, 0x1e, 0x24, 0xa6, - 0xf7, 0x89, 0xfa, 0x6, 0x9a, 0xb5, 0x9b, 0xfd, 0xdb, 0xa8, - 0x8f, 0xfc, 0x8, 0x54, 0xa9, 0x79, 0x3, 0xfd, 0xd9, 0x91, - 0xbe, 0x8c, 0x2b, 0xe0, 0x48, 0x7e, 0x29, 0xeb, 0xf1, 0x1f, - 0xf8, 0xfb, 0x73, 0xf8, 0xd6, 0x84, 0x1f, 0x1a, 0x7c, 0x41, - 0x7, 0xfc, 0xb7, 0x27, 0xf1, 0xad, 0xe3, 0xc4, 0x50, 0xeb, - 0x4d, 0xfe, 0x7, 0x44, 0x78, 0x87, 0xe, 0xf7, 0x4c, 0xfb, - 0xbc, 0x3a, 0x9e, 0x8c, 0xf, 0xe3, 0x4b, 0x90, 0x7b, 0xd7, - 0xc3, 0xf6, 0xff, 00, 0x1f, 0x35, 0xc8, 0xb1, 0xba, 0x47, - 0x6f, 0xf8, 0x15, 0x6a, 0x5b, 0xfe, 0xd2, 0x1a, 0xc4, 0x3d, - 0x4b, 0xff, 00, 0xdf, 0x55, 0xd1, 0x1e, 0x21, 0xc3, 0xbd, - 0xe2, 0xd1, 0xd1, 0x1c, 0xfb, 0x8, 0xfa, 0x9f, 0x66, 0xd1, - 0x5f, 0x22, 0xdb, 0x7e, 0xd3, 0xba, 0x8a, 0xe3, 0xcc, 0x32, - 0x1f, 0x6c, 0xd6, 0xad, 0xbf, 0xed, 0x4d, 0x38, 0xc6, 0xe0, - 0xdf, 0x8e, 0x2b, 0x68, 0xe7, 0xd8, 0x37, 0xbb, 0x6b, 0xe4, - 0x6f, 0x1c, 0xe7, 0x7, 0x2f, 0xb4, 0x7d, 0x4b, 0x45, 0x7c, - 0xdf, 0x6b, 0xfb, 0x52, 0x46, 0x71, 0xe6, 0x7e, 0xa2, 0xb5, - 0x2d, 0xff, 00, 0x69, 0xfb, 0x17, 0xc0, 0x65, 0x5f, 0xa9, - 0xad, 0xe3, 0x9d, 0x60, 0xa5, 0xf6, 0xce, 0x88, 0xe6, 0x78, - 0x59, 0x6d, 0x33, 0xdf, 0x28, 0xaf, 0x18, 0xb7, 0xfd, 0xa4, - 0x74, 0x87, 0xc6, 0xf3, 0x18, 0xff, 00, 0x81, 0x56, 0x9d, - 0xbf, 0xed, 0x3, 0xa1, 0xcd, 0x8e, 0x57, 0xfe, 0xfb, 0xae, - 0x88, 0xe6, 0x78, 0x39, 0x6d, 0x51, 0x1b, 0xac, 0x6e, 0x1e, - 0x5b, 0x4d, 0x1e, 0xa9, 0x45, 0x79, 0xec, 0x1f, 0x1a, 0xf4, - 0x9, 0x40, 0xcc, 0xa0, 0x7f, 0xc0, 0x85, 0x5f, 0x83, 0xe2, - 0xc6, 0x83, 0x39, 0xe2, 0xe3, 0x1f, 0x88, 0xae, 0x85, 0x8c, - 0xc3, 0xcb, 0x69, 0xa3, 0x55, 0x88, 0xa4, 0xf6, 0x92, 0x3b, - 0x3a, 0x2b, 0x9a, 0x8f, 0xe2, 0x16, 0x87, 0x27, 0xfc, 0xbe, - 0x28, 0xfc, 0x6a, 0xdc, 0x5e, 0x32, 0xd2, 0x26, 0x3f, 0x2d, - 0xec, 0x7f, 0x9d, 0x6c, 0xab, 0x52, 0x7b, 0x49, 0x1a, 0x2a, - 0x90, 0x7d, 0x4d, 0xaa, 0x2b, 0x39, 0x3c, 0x41, 0xa7, 0x3f, - 0x4b, 0xc8, 0xbf, 0xef, 0xaa, 0x9d, 0x35, 0x4b, 0x49, 0x3e, - 0xed, 0xcc, 0x67, 0xfe, 0x4, 0x2a, 0xd4, 0xe2, 0xf6, 0x65, - 0x73, 0x27, 0xd4, 0xb5, 0x55, 0xb5, 0x27, 0xf2, 0xac, 0x2e, - 0x1b, 0xd1, 0x9, 0xfd, 0x2a, 0x41, 0x73, 0xb, 0x74, 0x95, - 0xf, 0xfc, 0x8, 0x56, 0x4f, 0x8b, 0xb5, 0x58, 0x34, 0xef, - 0xf, 0x5e, 0xcd, 0x24, 0xaa, 0x2, 0xc6, 0x7f, 0x88, 0x52, - 0x9c, 0x92, 0x8b, 0x62, 0x94, 0x92, 0x8b, 0x67, 0xc3, 0xff, - 00, 0x18, 0xef, 0x47, 0xf6, 0xe4, 0xc4, 0x9f, 0xe2, 0x3f, - 0xce, 0xbe, 0x6a, 0xf8, 0x9d, 0xe2, 0x25, 0x8a, 0xdd, 0xe2, - 0x57, 0xc1, 0xc1, 0xef, 0x5e, 0xa7, 0xf1, 0xaf, 0xc6, 0xf0, - 0x7f, 0x69, 0x5c, 0x4a, 0xae, 0x32, 0x58, 0xe0, 0x66, 0xbe, - 0x67, 0xbe, 0x87, 0x53, 0xf8, 0x83, 0xe2, 0x5b, 0x1d, 0x13, - 0x4b, 0x89, 0xee, 0x75, 0x2d, 0x4a, 0xe1, 0x6d, 0xad, 0xe2, - 0x5e, 0x4b, 0x33, 0x1c, 0xa, 0xf8, 0x3c, 0xbf, 0xc, 0xe5, - 0x39, 0x56, 0x7d, 0x5b, 0xb1, 0xf8, 0x9d, 0x78, 0x4b, 0x33, - 0xcc, 0xb9, 0x21, 0xf0, 0xa6, 0x7e, 0x80, 0x7f, 0xc1, 0x2d, - 0xbc, 0x19, 0x36, 0x97, 0xf0, 0xa3, 0xc5, 0x3e, 0x28, 0xb8, - 0x8c, 0xab, 0x6b, 0xda, 0xb6, 0xd8, 0x58, 0xff, 00, 0x14, - 0x30, 0x26, 0xc0, 0x7f, 0xef, 0xb6, 0x93, 0xf2, 0xaf, 0xb5, - 0x6b, 0x88, 0xf8, 0x27, 0xf0, 0xda, 0xdf, 0xe1, 0xf, 0xc2, - 0x9f, 0xc, 0xf8, 0x42, 0xdc, 0xab, 0x8d, 0x2e, 0xcd, 0x22, - 0x92, 0x45, 0x18, 0xf3, 0x25, 0x3f, 0x34, 0x8d, 0xf8, 0xb1, - 0x63, 0x5d, 0xbd, 0x7d, 0xec, 0x23, 0xcb, 0x14, 0x8f, 0xda, - 0x68, 0xc3, 0xd9, 0x53, 0x8c, 0x3b, 0x20, 0xa2, 0x8a, 0x2a, - 0xcd, 0x82, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0xa3, 0x92, - 0xde, 0x29, 0x86, 0x24, 0x89, 0x1c, 0x7f, 0xb4, 0xa0, 0xd4, - 0x94, 0x51, 0xb8, 0x19, 0x97, 0x3e, 0x19, 0xd1, 0xef, 0x41, - 0x17, 0x1a, 0x55, 0x94, 0xc0, 0xf6, 0x92, 0xdd, 0xf, 0xf3, - 0x15, 0x97, 0x75, 0xf0, 0xcb, 0xc2, 0x77, 0x83, 0x12, 0xf8, - 0x7b, 0x4f, 0x3f, 0xee, 0xc0, 0xab, 0xfc, 0xb1, 0x5d, 0x3d, - 0x15, 0x9b, 0xa7, 0x9, 0x6f, 0x14, 0x64, 0xe9, 0x53, 0x97, - 0xc5, 0x14, 0xfe, 0x47, 0x5, 0x75, 0xf0, 0x2b, 0xc0, 0xd7, - 0x9f, 0x7f, 0x40, 0x85, 0x7f, 0xdc, 0x91, 0xd7, 0xf9, 0x35, - 0x64, 0xdc, 0x7e, 0xcd, 0x1e, 0x2, 0xb8, 0x24, 0xff, 00, - 0x65, 0xcb, 0x1e, 0x7b, 0x24, 0xed, 0xfd, 0x73, 0x5e, 0xa7, - 0x45, 0x62, 0xf0, 0xb4, 0x1e, 0xf0, 0x5f, 0x71, 0x83, 0xc1, - 0xe1, 0xa5, 0xbd, 0x35, 0xf7, 0x23, 0xc5, 0xae, 0x7f, 0x64, - 0xbf, 0x3, 0x5c, 0x64, 0xa8, 0xbe, 0x8b, 0x3d, 0x2, 0xca, - 0xa4, 0xf, 0xcd, 0x6b, 0x16, 0xeb, 0xf6, 0x32, 0xf0, 0xb4, - 0xa1, 0xbc, 0xad, 0x46, 0xee, 0x33, 0xdb, 0x72, 0x29, 0xff, - 00, 0xa, 0xfa, 0xe, 0x8a, 0xcd, 0xe0, 0x70, 0xef, 0xec, - 0x19, 0x3c, 0xbb, 0x8, 0xff, 00, 0xe5, 0xda, 0x3e, 0x61, - 0xbb, 0xfd, 0x88, 0xb4, 0xe7, 0x53, 0xe4, 0xeb, 0x99, 0x3d, - 0x83, 0xdb, 0x60, 0x7f, 0xe8, 0x55, 0xcf, 0xdf, 0x7e, 0xc3, - 0x77, 0x27, 0xfd, 0x46, 0xa5, 0x63, 0x2f, 0xfb, 0xe1, 0x97, - 0xff, 00, 0x65, 0x35, 0xf5, 0xf5, 0x15, 0x93, 0xcb, 0xb0, - 0xef, 0x64, 0xd7, 0xcd, 0x98, 0xbc, 0xab, 0x8, 0xfe, 0xcd, - 0xbe, 0x6c, 0xf8, 0x92, 0xf7, 0xf6, 0x18, 0xd6, 0xb9, 0xf2, - 0xdb, 0x4e, 0x97, 0xfd, 0xd9, 0x48, 0xfe, 0x6a, 0x2b, 0x6, - 0xfb, 0xf6, 0x1e, 0xf1, 0x2c, 0x64, 0xec, 0xd3, 0xad, 0xa6, - 0xf7, 0x4b, 0x84, 0xfe, 0xa4, 0x57, 0xdf, 0x34, 0x54, 0x3c, - 0xb2, 0x8f, 0x46, 0xfe, 0xf3, 0x7, 0x93, 0x61, 0x9f, 0x57, - 0xf7, 0xff, 00, 0xc0, 0x3f, 0x39, 0xaf, 0x7f, 0x63, 0x1f, - 0x15, 0xdb, 0x92, 0x3f, 0xb0, 0x65, 0x6f, 0xfa, 0xe7, 0x22, - 0xb7, 0xf2, 0x26, 0xb0, 0x2f, 0x7f, 0x65, 0xf, 0x14, 0x5a, - 0x12, 0xe, 0x83, 0xa8, 0xae, 0x3f, 0xbb, 0x13, 0x37, 0xf2, - 0x15, 0xfa, 0x71, 0x45, 0x43, 0xcb, 0x23, 0xd2, 0x6c, 0xc2, - 0x59, 0x15, 0x7, 0xb4, 0x9f, 0xe1, 0xfe, 0x47, 0xe5, 0x3d, - 0xef, 0xec, 0xfd, 0xad, 0xd9, 0x13, 0xe6, 0x59, 0x5e, 0xc3, - 0xfe, 0xfa, 0x11, 0xfc, 0xc5, 0x64, 0x4f, 0xf0, 0x8f, 0x56, - 0xb7, 0x24, 0x3, 0x32, 0xff, 00, 0xbc, 0x2b, 0xf5, 0xb8, - 0xa8, 0x3d, 0x40, 0x35, 0xc, 0x96, 0x16, 0xd3, 0xc, 0x49, - 0x6f, 0x14, 0x83, 0xfd, 0xa4, 0x6, 0xb3, 0x79, 0x6c, 0xfa, - 0x54, 0xfc, 0x3f, 0xe0, 0x9c, 0x92, 0xe1, 0xda, 0x72, 0xfb, - 0x4b, 0xff, 00, 0x1, 0xff, 00, 0x82, 0x7e, 0x45, 0xc9, - 0xf0, 0xeb, 0x5a, 0x83, 0xa4, 0x8f, 0xf8, 0xa9, 0xaa, 0xcf, - 0xe1, 0x1d, 0x7e, 0x1e, 0x8f, 0xf9, 0xe4, 0x57, 0xeb, 0x7c, - 0xfe, 0x15, 0xd1, 0x6e, 0xbf, 0xd7, 0x69, 0x16, 0x32, 0xff, - 00, 0xbf, 0x6c, 0x87, 0xfa, 0x56, 0x65, 0xcf, 0xc3, 0xf, - 0x9, 0x5d, 0xff, 00, 0xad, 0xf0, 0xee, 0x9c, 0x7d, 0xc5, - 0xba, 0xaf, 0xf2, 0xa8, 0x79, 0x75, 0x6e, 0x93, 0x4f, 0xe4, - 0x72, 0x4f, 0x86, 0x29, 0xbd, 0xb9, 0x7e, 0xe3, 0xf2, 0x7c, - 0xe9, 0x3e, 0x22, 0x83, 0xa7, 0x3f, 0xf0, 0x23, 0x4d, 0xff, - 00, 0x8a, 0x8a, 0x1f, 0xf9, 0x66, 0x5b, 0x1e, 0xf5, 0xfa, - 0x9b, 0x75, 0xf0, 0x2b, 0xc0, 0xb7, 0x79, 0xdf, 0xe1, 0xeb, - 0x75, 0xcf, 0xfc, 0xf3, 0x77, 0x5f, 0xe4, 0x6b, 0x26, 0xe7, - 0xf6, 0x67, 0xf0, 0x5, 0xc0, 0x23, 0xfb, 0x2a, 0x48, 0xb3, - 0xdd, 0x27, 0x6f, 0xeb, 0x9a, 0xc9, 0xe5, 0xf5, 0xff, 00, - 0xba, 0xff, 00, 0xaf, 0x43, 0x8e, 0x7c, 0x29, 0x17, 0xf6, - 0x63, 0xf7, 0xbf, 0xf2, 0x3f, 0x32, 0x3f, 0xb5, 0xb5, 0xc8, - 0x4f, 0xcd, 0x6e, 0xe7, 0xf0, 0xcd, 0x28, 0xf1, 0x46, 0xab, - 0x17, 0xdf, 0xb7, 0x7f, 0xfb, 0xe6, 0xbf, 0x48, 0x2e, 0xff, - 00, 0x64, 0xbf, 0x2, 0xdc, 0x8f, 0x91, 0x2f, 0x61, 0xff, - 00, 0x76, 0x55, 0x3f, 0xcd, 0x6b, 0x1e, 0xf3, 0xf6, 0x33, - 0xf0, 0xa4, 0xc3, 0xf7, 0x1a, 0x85, 0xe4, 0x47, 0xfd, 0xb5, - 0x56, 0xff, 00, 0xa, 0xc9, 0xe0, 0x2b, 0x7f, 0x22, 0x67, - 0x24, 0xb8, 0x51, 0xad, 0xa1, 0xf7, 0x48, 0xfc, 0xfa, 0x5f, - 0x1c, 0x5d, 0xc7, 0xf7, 0xe1, 0x61, 0xff, 00, 0x1, 0x35, - 0x32, 0x7c, 0x41, 0x71, 0xf7, 0x90, 0x8f, 0xce, 0xbe, 0xe2, - 0xbd, 0xfd, 0x88, 0x74, 0xc9, 0x3f, 0xe3, 0xdf, 0x5b, 0xc0, - 0xff, 00, 0xa6, 0x96, 0xdf, 0xe0, 0xd5, 0x81, 0x79, 0xfb, - 0xc, 0x4e, 0xcc, 0x7c, 0x9d, 0x52, 0xc5, 0xd7, 0xb6, 0xf5, - 0x65, 0x3f, 0xfa, 0x9, 0xac, 0x1e, 0x2, 0xa7, 0x5a, 0x5f, - 0x91, 0xcb, 0x2e, 0x17, 0xab, 0x1d, 0xa3, 0x2f, 0xbd, 0x7f, - 0x99, 0xf2, 0x24, 0x7f, 0x11, 0x13, 0xbe, 0x6a, 0xd4, 0x7f, - 0x10, 0xa0, 0x38, 0xcb, 0x11, 0x5f, 0x4a, 0x5d, 0xfe, 0xc2, - 0xfa, 0xcf, 0x3e, 0x5b, 0xe9, 0xb2, 0xe, 0xd8, 0x90, 0x8f, - 0xe6, 0xb5, 0x83, 0x79, 0xfb, 0xe, 0xf8, 0x99, 0x41, 0x29, - 0xa7, 0xdb, 0x49, 0xfe, 0xe5, 0xc2, 0xf, 0xeb, 0x58, 0x3c, - 0xf, 0x7a, 0x4c, 0xe6, 0x97, 0xe, 0xe2, 0x23, 0xb7, 0x3f, - 0xdd, 0x73, 0xc4, 0xa3, 0xf1, 0xed, 0xb3, 0x7f, 0xcb, 0x4f, - 0xd2, 0xac, 0xc7, 0xe3, 0x7b, 0x66, 0xff, 00, 0x96, 0xa2, - 0xbd, 0x16, 0xf7, 0xf6, 0x2e, 0xf1, 0x64, 0xa, 0xcd, 0xfd, - 0x83, 0x23, 0x1, 0xff, 00, 0x3c, 0xe5, 0x56, 0xfd, 0x3, - 0x57, 0x3f, 0x7d, 0xfb, 0x28, 0x78, 0xa6, 0xd0, 0x16, 0x7d, - 0x3, 0x51, 0x50, 0x3b, 0xac, 0x4c, 0x7f, 0xa5, 0x60, 0xf0, - 0x54, 0xd6, 0xf0, 0x6b, 0xe4, 0x73, 0xcb, 0x25, 0xc5, 0xc3, - 0xed, 0xc9, 0x7a, 0xa6, 0x61, 0x27, 0x8c, 0x2d, 0x5b, 0xfe, - 0x5a, 0xad, 0x58, 0x4f, 0x14, 0x5b, 0x3f, 0xfc, 0xb4, 0x5f, - 0xce, 0xaa, 0x5f, 0x7e, 0xcf, 0xda, 0xe5, 0x8e, 0x7c, 0xdb, - 0x1b, 0xf8, 0xf, 0xfb, 0x71, 0xb0, 0xfe, 0x62, 0xb2, 0x27, - 0xf8, 0x47, 0xaa, 0xdb, 0xe7, 0x99, 0xd7, 0xea, 0xb5, 0x83, - 0xc2, 0x50, 0xf4, 0x39, 0xde, 0x5f, 0x8b, 0x8f, 0xfc, 0xbc, - 0x5f, 0x34, 0x75, 0x2b, 0xaf, 0xdb, 0xb7, 0xf1, 0x8f, 0xce, - 0xa5, 0x5d, 0x62, 0x16, 0xee, 0x2b, 0x83, 0x93, 0xe1, 0xd6, - 0xb3, 0xf, 0xdd, 0x95, 0xc7, 0xd5, 0x6a, 0xbb, 0xf8, 0x3f, - 0x5e, 0x83, 0xa4, 0x9f, 0xce, 0xb3, 0xfa, 0x95, 0x17, 0xb4, - 0x88, 0xfa, 0xae, 0x35, 0x6d, 0x28, 0xb3, 0xd2, 0x6, 0xa9, - 0x9, 0xfe, 0x2a, 0x78, 0xbf, 0x84, 0xff, 00, 0x10, 0xaf, - 0x2f, 0x3a, 0x37, 0x88, 0x61, 0xe8, 0x73, 0xff, 00, 0x2, - 0xa6, 0x95, 0xf1, 0xc, 0x3d, 0x50, 0x9f, 0xa3, 0x54, 0xbc, - 0xbe, 0x1d, 0x24, 0x4f, 0xb1, 0xc7, 0x2f, 0xb2, 0x9f, 0xcc, - 0xf5, 0x51, 0x77, 0x11, 0xfe, 0x2a, 0x70, 0x9e, 0x33, 0xfc, - 0x55, 0xe5, 0x3, 0x52, 0xd7, 0xa1, 0xfb, 0xd0, 0x39, 0xa7, - 0x7f, 0xc2, 0x4d, 0xaa, 0xc5, 0xf7, 0xe0, 0x93, 0xfe, 0xf9, - 0xa9, 0x79, 0x77, 0x69, 0x12, 0xd6, 0x32, 0x3b, 0xd2, 0x3d, - 0x58, 0x4c, 0xbd, 0x9a, 0x9e, 0xb3, 0x11, 0xd2, 0x43, 0xf9, - 0xd7, 0x94, 0x2f, 0x8d, 0x6f, 0x53, 0xef, 0x42, 0xff, 00, - 0x8a, 0x9a, 0x95, 0x3e, 0x20, 0x4a, 0xbf, 0x79, 0x18, 0x7e, - 0x6, 0xb3, 0x79, 0x6c, 0xfa, 0x32, 0x7d, 0xae, 0x22, 0x3b, - 0xd2, 0x67, 0xaa, 0xad, 0xd4, 0x8b, 0xd2, 0x56, 0x1f, 0x8d, - 0x4c, 0x9a, 0xa5, 0xda, 0x7d, 0xdb, 0x89, 0x7, 0xd1, 0xab, - 0xcb, 0x23, 0xf8, 0x88, 0xbd, 0xc1, 0x15, 0x66, 0x3f, 0x88, - 0x50, 0x9e, 0xac, 0x6b, 0x37, 0x97, 0x55, 0x5d, 0x3, 0xeb, - 0xb5, 0x23, 0xbc, 0x64, 0x8f, 0x51, 0x8f, 0xc4, 0x3a, 0x8c, - 0x47, 0x2b, 0x75, 0x27, 0xfd, 0xf4, 0x6a, 0xdc, 0x5e, 0x33, - 0xd6, 0x22, 0xfb, 0xb7, 0x8e, 0x3f, 0x1a, 0xf2, 0xd8, 0xfc, - 0x7d, 0x6e, 0x7f, 0x8c, 0xd4, 0xeb, 0xe3, 0xab, 0x6c, 0x64, - 0xcb, 0x8a, 0xcf, 0xea, 0x35, 0xa3, 0xb2, 0x34, 0x59, 0xa4, - 0xa3, 0xd6, 0x4b, 0xef, 0x3d, 0x56, 0x1f, 0x88, 0x9a, 0xe4, - 0x3d, 0x2e, 0xd8, 0xfd, 0x4d, 0x5e, 0x8f, 0xe2, 0xe6, 0xbd, - 0x7, 0xfc, 0xbc, 0xd7, 0x8b, 0x5c, 0x7c, 0x42, 0xb4, 0x88, - 0x1f, 0xde, 0xd6, 0x16, 0xa7, 0xf1, 0x4e, 0xde, 0x30, 0x76, - 0x36, 0xe3, 0x5d, 0x14, 0xf0, 0x78, 0xa7, 0xb3, 0x6b, 0xe6, - 0xcd, 0x16, 0x73, 0x5f, 0x6a, 0x6e, 0x4c, 0xfa, 0x2f, 0xfe, - 0x17, 0xe6, 0xb1, 0x62, 0x32, 0xd3, 0xee, 0x23, 0xde, 0xb8, - 0x5f, 0x88, 0x3f, 0xb4, 0xad, 0xfd, 0xed, 0x94, 0xd0, 0xbd, - 0xe3, 0x7c, 0xc3, 0x5, 0x1, 0xe2, 0xbe, 0x7b, 0xd6, 0x7e, - 0x22, 0xde, 0x5f, 0x16, 0x58, 0x89, 0x55, 0x35, 0x99, 0xe1, - 0xdf, 0xb, 0xf8, 0x87, 0xe2, 0x26, 0xbb, 0x6f, 0xa5, 0xe8, - 0xd6, 0x17, 0x3a, 0xae, 0xa3, 0x70, 0xdb, 0x63, 0x82, 0x4, - 0x2c, 0x4f, 0xf8, 0x1, 0xea, 0x78, 0x15, 0xed, 0xd0, 0xc0, - 0xd4, 0x4a, 0xd5, 0x66, 0xdf, 0x95, 0xcd, 0xe3, 0x8b, 0xcc, - 0x71, 0x5e, 0xe5, 0x49, 0xf2, 0xc5, 0xf4, 0xea, 0xc8, 0x7c, - 0x53, 0xe2, 0xcb, 0x9f, 0x10, 0x5d, 0x33, 0xb3, 0x33, 0x64, - 0xf0, 0x7, 0x7a, 0xfb, 0xf3, 0xf6, 0x15, 0xfd, 0x91, 0x66, - 0xf0, 0x1a, 0x45, 0xf1, 0xf, 0xc6, 0x76, 0x5e, 0x5f, 0x88, - 0xee, 0x13, 0x3a, 0x5d, 0x94, 0x87, 0x26, 0xce, 0x26, 0x5e, - 0x64, 0x71, 0xda, 0x46, 0x7, 0xa7, 0xf0, 0x8f, 0x73, 0xc6, - 0xcf, 0xec, 0xb3, 0xfb, 0xb, 0xe9, 0xff, 00, 0xc, 0x65, - 0xb7, 0xf1, 0x37, 0x8d, 0xd2, 0xdf, 0x57, 0xf1, 0x3a, 0x10, - 0xf6, 0xd6, 0x6a, 0x7c, 0xcb, 0x7b, 0x2e, 0x3a, 0x9c, 0x8c, - 0x3c, 0x9e, 0xfd, 0x7, 0x6c, 0xf5, 0xaf, 0xae, 0xab, 0xe9, - 0xf0, 0xf8, 0x75, 0x4, 0x9b, 0x5e, 0x88, 0xfd, 0xf, 0x26, - 0xca, 0x56, 0x12, 0x2a, 0xa5, 0x45, 0x67, 0xd1, 0x7f, 0x9f, - 0x98, 0x51, 0x45, 0x15, 0xe8, 0x1f, 0x58, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x21, 00, 0xf5, 0xa8, 0xa5, 0xb3, 0xb7, - 0x9b, 0xfd, 0x64, 0x11, 0xc9, 0xfe, 0xf2, 0x3, 0x45, 0x14, - 0xad, 0x71, 0x5a, 0xe5, 0x19, 0xfc, 0x2d, 0xa3, 0x5c, 0x92, - 0x66, 0xd2, 0x2c, 0x65, 0x27, 0xbb, 0xdb, 0x21, 0xfe, 0x95, - 0x9b, 0x71, 0xf0, 0xcf, 0xc2, 0x77, 0x44, 0x99, 0x7c, 0x3b, - 0xa6, 0xb1, 0x3f, 0xf4, 0xec, 0xa3, 0xf9, 0xa, 0x28, 0xa8, - 0x74, 0xe0, 0xf7, 0x8a, 0x33, 0x74, 0xa9, 0xcb, 0x78, 0xaf, - 0xb8, 0xc7, 0xbb, 0xf8, 0x13, 0xe0, 0x5b, 0xdc, 0xef, 0xf0, - 0xfd, 0xba, 0x93, 0xde, 0x36, 0x65, 0xfe, 0x46, 0xb1, 0xee, - 0xff, 00, 0x66, 0x4f, 0x1, 0x5d, 0x74, 0xd3, 0xa5, 0x87, - 0xfe, 0xb9, 0xcc, 0x7f, 0xae, 0x68, 0xa2, 0xb1, 0x78, 0x5a, - 0xf, 0x78, 0x2f, 0xb8, 0xc2, 0x58, 0x3c, 0x34, 0xb7, 0xa6, - 0xbe, 0xe4, 0x63, 0x5d, 0x7e, 0xc8, 0xbe, 0xa, 0x9f, 0xee, - 0x49, 0x7d, 0x17, 0xb0, 0x74, 0x3f, 0xfb, 0x2d, 0x64, 0x5d, - 0x7e, 0xc6, 0x1e, 0x19, 0x97, 0x3e, 0x4e, 0xa9, 0x77, 0x17, - 0xfb, 0xd1, 0xab, 0x7f, 0x85, 0x14, 0x56, 0x6f, 0x3, 0x86, - 0x7f, 0x60, 0xc5, 0xe5, 0xd8, 0x47, 0xff, 00, 0x2e, 0xd1, - 0x8b, 0x7b, 0xfb, 0x10, 0x69, 0xd2, 0x3, 0xe4, 0x6b, 0xdc, - 0xf6, 0x12, 0x5a, 0xff, 00, 0x83, 0x56, 0xd, 0xf7, 0xec, - 0x31, 0x71, 0x83, 0xf6, 0x7d, 0x5a, 0xca, 0x53, 0xd8, 0x49, - 0x1b, 0x2f, 0xf4, 0x34, 0x51, 0x59, 0xbc, 0xbb, 0xe, 0xf6, - 0x56, 0xf9, 0xb3, 0x27, 0x95, 0x61, 0x1f, 0xd9, 0xb7, 0xcd, - 0x98, 0x17, 0xdf, 0xb0, 0xce, 0xb8, 0xa0, 0xf9, 0x6d, 0xa7, - 0x4f, 0xec, 0xb2, 0x63, 0xf9, 0xa8, 0xae, 0x7e, 0xff, 00, - 0xf6, 0x24, 0xf1, 0x44, 0x59, 0xd9, 0xa5, 0xc1, 0x37, 0xbc, - 0x73, 0x47, 0xfd, 0x5a, 0x8a, 0x2b, 0x29, 0x65, 0xb4, 0xba, - 0x37, 0xf7, 0xff, 00, 0xc0, 0x39, 0xe5, 0x93, 0x61, 0xba, - 0x37, 0xf7, 0xff, 00, 0xc0, 0x30, 0x2f, 0x3f, 0x63, 0x6f, - 0x16, 0x43, 0xff, 00, 0x32, 0xfc, 0xed, 0xff, 00, 0x5c, - 0xd9, 0x5b, 0xf9, 0x1a, 0xc1, 0xbf, 0xfd, 0x94, 0x3c, 0x55, - 0x6d, 0x90, 0x7c, 0x3f, 0xa9, 0x8f, 0x75, 0x85, 0x98, 0x7e, - 0x82, 0x8a, 0x2b, 0x86, 0xa6, 0x16, 0x34, 0xf6, 0x93, 0xfe, - 0xbe, 0x47, 0x97, 0x5f, 0x2c, 0xa3, 0x4d, 0x68, 0xdf, 0xe1, - 0xfe, 0x46, 0xb, 0x7e, 0xcc, 0x1e, 0x23, 0xb9, 0x9f, 0xcb, - 0x5d, 0x1e, 0xfc, 0xbe, 0x7a, 0x1b, 0x77, 0x3f, 0xd2, 0xb4, - 0x34, 0xff, 00, 0xd8, 0x8f, 0xc7, 0x7a, 0xc4, 0xaa, 0xb0, - 0xe8, 0x57, 0x10, 0x8c, 0xfd, 0xfb, 0x8c, 0x44, 0xb8, 0xf5, - 0xf9, 0x88, 0xa2, 0x8a, 0x58, 0x7a, 0x4e, 0xa4, 0xac, 0xe4, - 0xff, 00, 0xf, 0xf2, 0x38, 0x68, 0x65, 0x54, 0x31, 0x4e, - 0xd3, 0x6d, 0x7a, 0x5b, 0xfc, 0x8f, 0x62, 0xf8, 0x79, 0xff, - 00, 0x4, 0xdc, 0x88, 0x3a, 0x5c, 0x78, 0xc3, 0x5c, 0x8, - 0xa0, 0x83, 0xf6, 0x3d, 0x34, 0x6e, 0x63, 0xec, 0x64, 0x61, - 0x81, 0xf8, 0x3, 0xf5, 0xaf, 0xae, 0x3e, 0x1d, 0xfc, 0x27, - 0xf0, 0xaf, 0xc2, 0xad, 0x29, 0x6c, 0x3c, 0x33, 0xa3, 0xdb, - 0xe9, 0xc9, 0x8c, 0x3c, 0xca, 0xbb, 0xa6, 0x97, 0xdd, 0xdc, - 0xf2, 0x68, 0xa2, 0xbe, 0x82, 0x14, 0x61, 0x4f, 0x6d, 0xcf, - 0xac, 0xc1, 0xe5, 0x98, 0x5c, 0xe, 0xb4, 0x61, 0xaf, 0x77, - 0xab, 0xfb, 0xff, 00, 0xc8, 0xeb, 0xa8, 0xa2, 0x8a, 0xd8, - 0xf5, 0x42, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0xf, - 0xff, 0xd9, 0}; - -static const char data_runtime_shtml[] = { - /* /runtime.shtml */ - 0x2f, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x20, 0x6f, 0x6e, 0x4c, 0x6f, 0x61, 0x64, - 0x3d, 0x22, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x73, - 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x28, - 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x6c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x68, 0x72, 0x65, 0x66, 0x3d, - 0x27, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x73, - 0x68, 0x74, 0x6d, 0x6c, 0x27, 0x26, 0x71, 0x75, 0x6f, 0x74, - 0x3b, 0x2c, 0x32, 0x30, 0x30, 0x30, 0x29, 0x22, 0x3e, 0xd, - 0xa, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, - 0x65, 0x3d, 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x3e, - 0xd, 0xa, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, - 0x22, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, - 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x53, - 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x72, 0x75, 0x6e, - 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x52, 0x75, 0x6e, 0x20, 0x54, 0x69, 0x6d, 0x65, - 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, - 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x73, - 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x54, 0x43, 0x50, 0x20, 0x53, 0x74, 0x61, 0x74, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, - 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61, 0x3e, - 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, - 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, - 0x66, 0x72, 0x65, 0x65, 0x72, 0x74, 0x6f, 0x73, 0x2e, 0x6f, - 0x72, 0x67, 0x2f, 0x22, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, - 0x54, 0x4f, 0x53, 0x20, 0x48, 0x6f, 0x6d, 0x65, 0x70, 0x61, - 0x67, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6f, 0x2e, 0x73, 0x68, - 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x49, 0x4f, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x6c, 0x6f, 0x67, 0x6f, 0x2e, 0x6a, 0x70, 0x67, 0x22, 0x3e, - 0x33, 0x37, 0x4b, 0x20, 0x6a, 0x70, 0x67, 0x3c, 0x2f, 0x61, - 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, - 0xd, 0xa, 0x3c, 0x68, 0x72, 0x3e, 0xd, 0xa, 0x3c, 0x62, - 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x32, - 0x3e, 0x52, 0x75, 0x6e, 0x2d, 0x74, 0x69, 0x6d, 0x65, 0x20, - 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, - 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0xd, 0xa, 0x50, 0x61, 0x67, - 0x65, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x72, 0x65, 0x66, - 0x72, 0x65, 0x73, 0x68, 0x20, 0x65, 0x76, 0x65, 0x72, 0x79, - 0x20, 0x32, 0x20, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, - 0x2e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x6e, - 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x63, 0x6f, - 0x75, 0x72, 0x69, 0x65, 0x72, 0x22, 0x3e, 0x3c, 0x70, 0x72, - 0x65, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x41, 0x62, - 0x73, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x25, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x3c, 0x62, - 0x72, 0x3e, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x3c, 0x62, 0x72, 0x3e, 0xd, 0xa, 0x25, 0x21, - 0x20, 0x72, 0x75, 0x6e, 0x2d, 0x74, 0x69, 0x6d, 0x65, 0xd, - 0xa, 0x3c, 0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, - 0x6f, 0x6e, 0x74, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, - 0x6e, 0x74, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, - 0x79, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, - 0x3e, 0xd, 0xa, 0xd, 0xa, 0}; - -static const char data_stats_shtml[] = { - /* /stats.shtml */ - 0x2f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x6e, - 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, - 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x61, 0x20, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, - 0x61, 0x73, 0x6b, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x52, 0x75, 0x6e, - 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, 0x74, 0x61, 0x74, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x43, 0x50, - 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, - 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, - 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, 0x65, 0x65, 0x72, - 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x22, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x20, 0x48, - 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, - 0x6a, 0x70, 0x67, 0x22, 0x3e, 0x33, 0x37, 0x4b, 0x20, 0x6a, - 0x70, 0x67, 0x3c, 0x2f, 0x61, 0x3e, 0xd, 0xa, 0x3c, 0x62, - 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x72, - 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, - 0xd, 0xa, 0x3c, 0x68, 0x32, 0x3e, 0x4e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, - 0x74, 0x69, 0x63, 0x73, 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0xd, - 0xa, 0x3c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x77, 0x69, - 0x64, 0x74, 0x68, 0x3d, 0x22, 0x33, 0x30, 0x30, 0x22, 0x20, - 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x3d, 0x22, 0x30, 0x22, - 0x3e, 0xd, 0xa, 0x3c, 0x74, 0x72, 0x3e, 0x3c, 0x74, 0x64, - 0x20, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x3d, 0x22, 0x6c, 0x65, - 0x66, 0x74, 0x22, 0x3e, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, - 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x63, 0x6f, 0x75, 0x72, - 0x69, 0x65, 0x72, 0x22, 0x3e, 0x3c, 0x70, 0x72, 0x65, 0x3e, - 0xd, 0xa, 0x49, 0x50, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, - 0x74, 0x73, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, - 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, 0xd, 0xa, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x64, 0x65, - 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x44, 0x72, 0x6f, 0x70, - 0x70, 0x65, 0x64, 0xd, 0xa, 0x49, 0x50, 0x20, 0x65, 0x72, - 0x72, 0x6f, 0x72, 0x73, 0x20, 0x20, 0x20, 0x20, 0x49, 0x50, - 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, 0x6c, 0x65, 0x6e, 0x67, - 0x74, 0x68, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x49, 0x50, 0x20, - 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x2c, 0x20, 0x68, 0x69, - 0x67, 0x68, 0x20, 0x62, 0x79, 0x74, 0x65, 0xd, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x49, 0x50, 0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, - 0x68, 0x2c, 0x20, 0x6c, 0x6f, 0x77, 0x20, 0x62, 0x79, 0x74, - 0x65, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x49, 0x50, 0x20, 0x66, - 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0xd, 0xa, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, - 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0xd, 0xa, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x57, 0x72, 0x6f, 0x6e, 0x67, 0x20, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0xd, 0xa, 0x49, - 0x43, 0x4d, 0x50, 0x9, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, - 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x72, 0x65, 0x63, - 0x65, 0x69, 0x76, 0x65, 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x73, 0x65, - 0x6e, 0x74, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, - 0x6b, 0x65, 0x74, 0x73, 0x20, 0x64, 0x72, 0x6f, 0x70, 0x70, - 0x65, 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x54, 0x79, 0x70, - 0x65, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0xd, 0xa, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, - 0x6d, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0xd, 0xa, - 0x54, 0x43, 0x50, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, - 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0xd, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, 0xd, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x64, - 0x72, 0x6f, 0x70, 0x70, 0x65, 0x64, 0xd, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x20, - 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0xd, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x44, 0x61, 0x74, 0x61, 0x20, 0x70, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x73, 0x20, 0x77, 0x69, 0x74, 0x68, 0x6f, 0x75, - 0x74, 0x20, 0x41, 0x43, 0x4b, 0x73, 0xd, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x52, 0x65, 0x73, 0x65, 0x74, 0x73, 0xd, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x52, 0x65, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, - 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x61, 0xd, 0xa, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x53, 0x79, 0x6e, 0x20, 0x74, 0x6f, 0x20, - 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x64, 0x20, 0x70, 0x6f, 0x72, - 0x74, 0xd, 0xa, 0x55, 0x44, 0x50, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x73, 0x20, 0x64, 0x72, 0x6f, 0x70, 0x70, 0x65, - 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x73, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, - 0x65, 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, - 0x6b, 0x65, 0x74, 0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, 0xd, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x73, 0x20, 0x63, 0x68, 0x6b, 0x65, 0x72, 0x72, 0xd, 0xa, - 0x9, 0x20, 0x20, 0x20, 0x20, 0x20, 0x4e, 0x6f, 0x20, 0x63, - 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, - 0x61, 0x76, 0x61, 0x6c, 0x69, 0x61, 0x62, 0x6c, 0x65, 0xd, - 0xa, 0x3c, 0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, - 0x6f, 0x6e, 0x74, 0x3e, 0x3c, 0x2f, 0x74, 0x64, 0x3e, 0x3c, - 0x74, 0x64, 0x3e, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, - 0x61, 0x63, 0x65, 0x3d, 0x22, 0x63, 0x6f, 0x75, 0x72, 0x69, - 0x65, 0x72, 0x22, 0x3e, 0x3c, 0x70, 0x72, 0x65, 0x3e, 0x25, - 0x21, 0x20, 0x6e, 0x65, 0x74, 0x2d, 0x73, 0x74, 0x61, 0x74, - 0x73, 0xd, 0xa, 0x3c, 0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, - 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0x3c, 0x2f, 0x74, 0x64, - 0x3e, 0x3c, 0x2f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x3e, 0xd, - 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xd, 0xa, - 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xd, 0xa, 0x3c, - 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, 0xa, 0}; - -static const char data_tcp_shtml[] = { - /* /tcp.shtml */ - 0x2f, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x6e, - 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, - 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x61, 0x20, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, - 0x61, 0x73, 0x6b, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x52, 0x75, 0x6e, - 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, 0x74, 0x61, 0x74, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x43, 0x50, - 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, - 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, - 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, 0x65, 0x65, 0x72, - 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x22, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x20, 0x48, - 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, - 0x6a, 0x70, 0x67, 0x22, 0x3e, 0x33, 0x37, 0x4b, 0x20, 0x6a, - 0x70, 0x67, 0x3c, 0x2f, 0x61, 0x3e, 0xd, 0xa, 0x3c, 0x62, - 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x72, - 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0xd, 0xa, 0x3c, - 0x68, 0x32, 0x3e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, - 0x20, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0xd, 0xa, 0x3c, - 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x74, 0x61, 0x62, 0x6c, 0x65, - 0x3e, 0xd, 0xa, 0x3c, 0x74, 0x72, 0x3e, 0x3c, 0x74, 0x68, - 0x3e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x3c, 0x2f, 0x74, 0x68, - 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x52, 0x65, 0x6d, 0x6f, 0x74, - 0x65, 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, - 0x53, 0x74, 0x61, 0x74, 0x65, 0x3c, 0x2f, 0x74, 0x68, 0x3e, - 0x3c, 0x74, 0x68, 0x3e, 0x52, 0x65, 0x74, 0x72, 0x61, 0x6e, - 0x73, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x3c, - 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x54, 0x69, - 0x6d, 0x65, 0x72, 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, - 0x68, 0x3e, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x3c, 0x2f, 0x74, - 0x68, 0x3e, 0x3c, 0x2f, 0x74, 0x72, 0x3e, 0xd, 0xa, 0x25, - 0x21, 0x20, 0x74, 0x63, 0x70, 0x2d, 0x63, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0xd, 0xa, 0x3c, - 0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, - 0x74, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, - 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, - 0xd, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, - 0xa, 0xd, 0xa, 0}; - -const struct httpd_fsdata_file file_404_html[] = {{NULL, data_404_html, data_404_html + 10, sizeof(data_404_html) - 10}}; - -const struct httpd_fsdata_file file_index_html[] = {{file_404_html, data_index_html, data_index_html + 12, sizeof(data_index_html) - 12}}; - -const struct httpd_fsdata_file file_index_shtml[] = {{file_index_html, data_index_shtml, data_index_shtml + 13, sizeof(data_index_shtml) - 13}}; - -const struct httpd_fsdata_file file_io_shtml[] = {{file_index_shtml, data_io_shtml, data_io_shtml + 10, sizeof(data_io_shtml) - 10}}; - -const struct httpd_fsdata_file file_logo_jpg[] = {{file_io_shtml, data_logo_jpg, data_logo_jpg + 10, sizeof(data_logo_jpg) - 10}}; - -const struct httpd_fsdata_file file_runtime_shtml[] = {{file_logo_jpg, data_runtime_shtml, data_runtime_shtml + 15, sizeof(data_runtime_shtml) - 15}}; - -const struct httpd_fsdata_file file_stats_shtml[] = {{file_runtime_shtml, data_stats_shtml, data_stats_shtml + 13, sizeof(data_stats_shtml) - 13}}; - -const struct httpd_fsdata_file file_tcp_shtml[] = {{file_stats_shtml, data_tcp_shtml, data_tcp_shtml + 11, sizeof(data_tcp_shtml) - 11}}; - -#define HTTPD_FS_ROOT file_tcp_shtml - -#define HTTPD_FS_NUMFILES 8 diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/WebServer/makefsdata b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/WebServer/makefsdata deleted file mode 100644 index a953cdd76..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/WebServer/makefsdata +++ /dev/null @@ -1,79 +0,0 @@ -#!/usr/bin/perl - -open(OUTPUT, "> httpd-fsdata.c"); - -chdir("httpd-fs"); - -opendir(DIR, "."); -@files = grep { !/^\./ && !/(CVS|~)/ } readdir(DIR); -closedir(DIR); - -foreach $file (@files) { - - if(-d $file && $file !~ /^\./) { - print "Processing directory $file\n"; - opendir(DIR, $file); - @newfiles = grep { !/^\./ && !/(CVS|~)/ } readdir(DIR); - closedir(DIR); - printf "Adding files @newfiles\n"; - @files = (@files, map { $_ = "$file/$_" } @newfiles); - next; - } -} - -foreach $file (@files) { - if(-f $file) { - - print "Adding file $file\n"; - - open(FILE, $file) || die "Could not open file $file\n"; - binmode FILE; - - $file =~ s-^-/-; - $fvar = $file; - $fvar =~ s-/-_-g; - $fvar =~ s-\.-_-g; - # for AVR, add PROGMEM here - print(OUTPUT "static const char data".$fvar."[] = {\n"); - print(OUTPUT "\t/* $file */\n\t"); - for($j = 0; $j < length($file); $j++) { - printf(OUTPUT "%#02x, ", unpack("C", substr($file, $j, 1))); - } - printf(OUTPUT "0,\n"); - - - $i = 0; - while(read(FILE, $data, 1)) { - if($i == 0) { - print(OUTPUT "\t"); - } - printf(OUTPUT "%#02x, ", unpack("C", $data)); - $i++; - if($i == 10) { - print(OUTPUT "\n"); - $i = 0; - } - } - print(OUTPUT "0};\n\n"); - close(FILE); - push(@fvars, $fvar); - push(@pfiles, $file); - } -} - -for($i = 0; $i < @fvars; $i++) { - $file = $pfiles[$i]; - $fvar = $fvars[$i]; - - if($i == 0) { - $prevfile = "NULL"; - } else { - $prevfile = "file" . $fvars[$i - 1]; - } - print(OUTPUT "const struct httpd_fsdata_file file".$fvar."[] = {{$prevfile, data$fvar, "); - print(OUTPUT "data$fvar + ". (length($file) + 1) .", "); - print(OUTPUT "sizeof(data$fvar) - ". (length($file) + 1) ."}};\n\n"); -} - -print(OUTPUT "#define HTTPD_FS_ROOT file$fvars[$i - 1]\n\n"); -print(OUTPUT "#define HTTPD_FS_NUMFILES $i\n"); diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/WebServer/uip-conf.h b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/WebServer/uip-conf.h deleted file mode 100644 index 004bbb59a..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/WebServer/uip-conf.h +++ /dev/null @@ -1,161 +0,0 @@ -/** - * \addtogroup uipopt - * @{ - */ - -/** - * \name Project-specific configuration options - * @{ - * - * uIP has a number of configuration options that can be overridden - * for each project. These are kept in a project-specific uip-conf.h - * file and all configuration names have the prefix UIP_CONF. - */ - -/* - * Copyright (c) 2006, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: uip-conf.h,v 1.6 2006/06/12 08:00:31 adam Exp $ - */ - -/** - * \file - * An example uIP configuration file - * \author - * Adam Dunkels - */ - -#ifndef __UIP_CONF_H__ -#define __UIP_CONF_H__ - -#define UIP_CONF_EXTERNAL_BUFFER -#define UIP_CONF_PROCESS_HTTPD_FORMS 1 - -/** - * 8 bit datatype - * - * This typedef defines the 8-bit type used throughout uIP. - * - * \hideinitializer - */ -typedef unsigned char u8_t; - -/** - * 16 bit datatype - * - * This typedef defines the 16-bit type used throughout uIP. - * - * \hideinitializer - */ -typedef unsigned short u16_t; - -typedef unsigned long u32_t; - -/** - * Statistics datatype - * - * This typedef defines the dataype used for keeping statistics in - * uIP. - * - * \hideinitializer - */ -typedef unsigned short uip_stats_t; - -/** - * Maximum number of TCP connections. - * - * \hideinitializer - */ -#define UIP_CONF_MAX_CONNECTIONS 40 - -/** - * Maximum number of listening TCP ports. - * - * \hideinitializer - */ -#define UIP_CONF_MAX_LISTENPORTS 40 - -/** - * uIP buffer size. - * - * \hideinitializer - */ -#define UIP_CONF_BUFFER_SIZE 1480 - -/** - * CPU byte order. - * - * \hideinitializer - */ -#define UIP_CONF_BYTE_ORDER LITTLE_ENDIAN - -/** - * Logging on or off - * - * \hideinitializer - */ -#define UIP_CONF_LOGGING 0 - -/** - * UDP support on or off - * - * \hideinitializer - */ -#define UIP_CONF_UDP 0 - -/** - * UDP checksums on or off - * - * \hideinitializer - */ -#define UIP_CONF_UDP_CHECKSUMS 1 - -/** - * uIP statistics on or off - * - * \hideinitializer - */ -#define UIP_CONF_STATISTICS 1 - -/* Here we include the header file for the application(s) we use in - our project. */ -/*#include "smtp.h"*/ -/*#include "hello-world.h"*/ -/*#include "telnetd.h"*/ -#include "webserver.h" -/*#include "dhcpc.h"*/ -/*#include "resolv.h"*/ -/*#include "webclient.h"*/ - -#define CCIF -#endif /* __UIP_CONF_H__ */ - -/** @} */ -/** @} */ diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/WebServer/webserver.h b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/WebServer/webserver.h deleted file mode 100644 index 5267f0587..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/WebServer/webserver.h +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright (c) 2002, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials provided - * with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: webserver.h,v 1.2 2006/06/11 21:46:38 adam Exp $ - * - */ -#ifndef __WEBSERVER_H__ -#define __WEBSERVER_H__ - -#include "apps/httpd/httpd.h" - -typedef struct httpd_state uip_tcp_appstate_t; -/* UIP_APPCALL: the name of the application function. This function - must return void and take no arguments (i.e., C type "void - appfunc(void)"). */ -#define UIP_APPCALL httpd_appcall - - -#endif /* __WEBSERVER_H__ */ diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/main-blinky.c b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/main-blinky.c deleted file mode 100644 index da9f56764..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/main-blinky.c +++ /dev/null @@ -1,366 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* - * main-blinky.c is included when the "Blinky" build configuration is used. - * main-full.c is included when the "Full" build configuration is used. - * - * main-blinky.c (this file) defines a very simple demo that creates two tasks, - * one queue, and one timer. It also demonstrates how Cortex-M3 interrupts can - * interact with FreeRTOS tasks/timers. - * - * This simple demo project runs on the SmartFusion A2F-EVAL-KIT evaluation - * board, which is populated with an A2F200M3F SmartFusion mixed signal FPGA. - * The A2F200M3F incorporates a Cortex-M3 microcontroller. - * - * The idle hook function: - * The idle hook function demonstrates how to query the amount of FreeRTOS heap - * space that is remaining (see vApplicationIdleHook() defined in this file). - * - * The main() Function: - * main() creates one software timer, one queue, and two tasks. It then starts - * the scheduler. - * - * The Queue Send Task: - * The queue send task is implemented by the prvQueueSendTask() function in - * this file. prvQueueSendTask() sits in a loop that causes it to repeatedly - * block for 200 milliseconds, before sending the value 100 to the queue that - * was created within main(). Once the value is sent, the task loops back - * around to block for another 200 milliseconds. - * - * The Queue Receive Task: - * The queue receive task is implemented by the prvQueueReceiveTask() function - * in this file. prvQueueReceiveTask() sits in a loop that causes it to - * repeatedly attempt to read data from the queue that was created within - * main(). When data is received, the task checks the value of the data, and - * if the value equals the expected 100, toggles the green LED. The 'block - * time' parameter passed to the queue receive function specifies that the task - * should be held in the Blocked state indefinitely to wait for data to be - * available on the queue. The queue receive task will only leave the Blocked - * state when the queue send task writes to the queue. As the queue send task - * writes to the queue every 200 milliseconds, the queue receive task leaves - * the Blocked state every 200 milliseconds, and therefore toggles the LED - * every 200 milliseconds. - * - * The LED Software Timer and the Button Interrupt: - * The user button SW1 is configured to generate an interrupt each time it is - * pressed. The interrupt service routine switches an LED on, and resets the - * LED software timer. The LED timer has a 5000 millisecond (5 second) period, - * and uses a callback function that is defined to just turn the LED off again. - * Therefore, pressing the user button will turn the LED on, and the LED will - * remain on until a full five seconds pass without the button being pressed. - */ - -/* Kernel includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "queue.h" -#include "timers.h" - -/* Microsemi drivers/libraries. */ -#include "mss_gpio.h" -#include "mss_watchdog.h" - - -/* Priorities at which the tasks are created. */ -#define mainQUEUE_RECEIVE_TASK_PRIORITY ( tskIDLE_PRIORITY + 2 ) -#define mainQUEUE_SEND_TASK_PRIORITY ( tskIDLE_PRIORITY + 1 ) - -/* The rate at which data is sent to the queue, specified in milliseconds, and -converted to ticks using the portTICK_PERIOD_MS constant. */ -#define mainQUEUE_SEND_FREQUENCY_MS ( 200 / portTICK_PERIOD_MS ) - -/* The number of items the queue can hold. This is 1 as the receive task -will remove items as they are added, meaning the send task should always find -the queue empty. */ -#define mainQUEUE_LENGTH ( 1 ) - -/* The LED toggle by the queue receive task. */ -#define mainTASK_CONTROLLED_LED 0x01UL - -/* The LED turned on by the button interrupt, and turned off by the LED timer. */ -#define mainTIMER_CONTROLLED_LED 0x02UL - -/*-----------------------------------------------------------*/ - -/* - * Setup the NVIC, LED outputs, and button inputs. - */ -static void prvSetupHardware( void ); - -/* - * The tasks as described in the comments at the top of this file. - */ -static void prvQueueReceiveTask( void *pvParameters ); -static void prvQueueSendTask( void *pvParameters ); - -/* - * The LED timer callback function. This does nothing but switch off the - * LED defined by the mainTIMER_CONTROLLED_LED constant. - */ -static void vLEDTimerCallback( TimerHandle_t xTimer ); - -/*-----------------------------------------------------------*/ - -/* The queue used by both tasks. */ -static QueueHandle_t xQueue = NULL; - -/* The LED software timer. This uses vLEDTimerCallback() as its callback -function. */ -static TimerHandle_t xLEDTimer = NULL; - -/* Maintains the current LED output state. */ -static volatile unsigned long ulGPIOState = 0UL; - -/*-----------------------------------------------------------*/ - -int main(void) -{ - /* Configure the NVIC, LED outputs and button inputs. */ - prvSetupHardware(); - - /* Create the queue. */ - xQueue = xQueueCreate( mainQUEUE_LENGTH, sizeof( unsigned long ) ); - - if( xQueue != NULL ) - { - /* Start the two tasks as described in the comments at the top of this - file. */ - xTaskCreate( prvQueueReceiveTask, "Rx", configMINIMAL_STACK_SIZE, NULL, mainQUEUE_RECEIVE_TASK_PRIORITY, NULL ); - xTaskCreate( prvQueueSendTask, "TX", configMINIMAL_STACK_SIZE, NULL, mainQUEUE_SEND_TASK_PRIORITY, NULL ); - - /* Create the software timer that is responsible for turning off the LED - if the button is not pushed within 5000ms, as described at the top of - this file. */ - xLEDTimer = xTimerCreate( "LEDTimer", /* A text name, purely to help debugging. */ - ( 5000 / portTICK_PERIOD_MS ),/* The timer period, in this case 5000ms (5s). */ - pdFALSE, /* This is a one-shot timer, so xAutoReload is set to pdFALSE. */ - ( void * ) 0, /* The ID is not used, so can be set to anything. */ - vLEDTimerCallback /* The callback function that switches the LED off. */ - ); - - /* Start the tasks and timer running. */ - vTaskStartScheduler(); - } - - /* If all is well, the scheduler will now be running, and the following line - will never be reached. If the following line does execute, then there was - insufficient FreeRTOS heap memory available for the idle and/or timer tasks - to be created. See the memory management section on the FreeRTOS web site - for more details. */ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -static void vLEDTimerCallback( TimerHandle_t xTimer ) -{ - /* The timer has expired - so no button pushes have occurred in the last - five seconds - turn the LED off. NOTE - accessing the LED port should use - a critical section because it is accessed from multiple tasks, and the - button interrupt - in this trivial case, for simplicity, the critical - section is omitted. */ - ulGPIOState |= mainTIMER_CONTROLLED_LED; - MSS_GPIO_set_outputs( ulGPIOState ); -} -/*-----------------------------------------------------------*/ - -/* The ISR executed when the user button is pushed. */ -void GPIO8_IRQHandler( void ) -{ -portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE; - - /* The button was pushed, so ensure the LED is on before resetting the - LED timer. The LED timer will turn the LED off if the button is not - pushed within 5000ms. */ - ulGPIOState &= ~mainTIMER_CONTROLLED_LED; - MSS_GPIO_set_outputs( ulGPIOState ); - - /* This interrupt safe FreeRTOS function can be called from this interrupt - because the interrupt priority is below the - configMAX_SYSCALL_INTERRUPT_PRIORITY setting in FreeRTOSConfig.h. */ - xTimerResetFromISR( xLEDTimer, &xHigherPriorityTaskWoken ); - - /* Clear the interrupt before leaving. */ - MSS_GPIO_clear_irq( MSS_GPIO_8 ); - - /* If calling xTimerResetFromISR() caused a task (in this case the timer - service/daemon task) to unblock, and the unblocked task has a priority - higher than or equal to the task that was interrupted, then - xHigherPriorityTaskWoken will now be set to pdTRUE, and calling - portEND_SWITCHING_ISR() will ensure the unblocked task runs next. */ - portEND_SWITCHING_ISR( xHigherPriorityTaskWoken ); -} -/*-----------------------------------------------------------*/ - -static void prvQueueSendTask( void *pvParameters ) -{ -TickType_t xNextWakeTime; -const unsigned long ulValueToSend = 100UL; - - /* Initialise xNextWakeTime - this only needs to be done once. */ - xNextWakeTime = xTaskGetTickCount(); - - for( ;; ) - { - /* Place this task in the blocked state until it is time to run again. - The block time is specified in ticks, the constant used converts ticks - to ms. While in the Blocked state this task will not consume any CPU - time. */ - vTaskDelayUntil( &xNextWakeTime, mainQUEUE_SEND_FREQUENCY_MS ); - - /* Send to the queue - causing the queue receive task to unblock and - toggle an LED. 0 is used as the block time so the sending operation - will not block - it shouldn't need to block as the queue should always - be empty at this point in the code. */ - xQueueSend( xQueue, &ulValueToSend, 0 ); - } -} -/*-----------------------------------------------------------*/ - -static void prvQueueReceiveTask( void *pvParameters ) -{ -unsigned long ulReceivedValue; - - for( ;; ) - { - /* Wait until something arrives in the queue - this task will block - indefinitely provided INCLUDE_vTaskSuspend is set to 1 in - FreeRTOSConfig.h. */ - xQueueReceive( xQueue, &ulReceivedValue, portMAX_DELAY ); - - /* To get here something must have been received from the queue, but - is it the expected value? If it is, toggle the green LED. */ - if( ulReceivedValue == 100UL ) - { - /* NOTE - accessing the LED port should use a critical section - because it is accessed from multiple tasks, and the button interrupt - - in this trivial case, for simplicity, the critical section is - omitted. */ - if( ( ulGPIOState & mainTASK_CONTROLLED_LED ) != 0 ) - { - ulGPIOState &= ~mainTASK_CONTROLLED_LED; - } - else - { - ulGPIOState |= mainTASK_CONTROLLED_LED; - } - MSS_GPIO_set_outputs( ulGPIOState ); - } - } -} -/*-----------------------------------------------------------*/ - -static void prvSetupHardware( void ) -{ - SystemCoreClockUpdate(); - - /* Disable the Watch Dog Timer */ - MSS_WD_disable( ); - - /* Initialise the GPIO */ - MSS_GPIO_init(); - - /* Set up GPIO for the LEDs. */ - MSS_GPIO_config( MSS_GPIO_0 , MSS_GPIO_OUTPUT_MODE ); - MSS_GPIO_config( MSS_GPIO_1 , MSS_GPIO_OUTPUT_MODE ); - MSS_GPIO_config( MSS_GPIO_2 , MSS_GPIO_OUTPUT_MODE ); - MSS_GPIO_config( MSS_GPIO_3 , MSS_GPIO_OUTPUT_MODE ); - MSS_GPIO_config( MSS_GPIO_4 , MSS_GPIO_OUTPUT_MODE ); - MSS_GPIO_config( MSS_GPIO_5 , MSS_GPIO_OUTPUT_MODE ); - MSS_GPIO_config( MSS_GPIO_6 , MSS_GPIO_OUTPUT_MODE ); - MSS_GPIO_config( MSS_GPIO_7 , MSS_GPIO_OUTPUT_MODE ); - - /* All LEDs start off. */ - ulGPIOState = 0xffffffffUL; - MSS_GPIO_set_outputs( ulGPIOState ); - - /* Setup the GPIO and the NVIC for the switch used in this simple demo. */ - NVIC_SetPriority( GPIO8_IRQn, configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY ); - NVIC_EnableIRQ( GPIO8_IRQn ); - MSS_GPIO_config( MSS_GPIO_8, MSS_GPIO_INPUT_MODE | MSS_GPIO_IRQ_EDGE_NEGATIVE ); - MSS_GPIO_enable_irq( MSS_GPIO_8 ); -} -/*-----------------------------------------------------------*/ - -void vApplicationMallocFailedHook( void ) -{ - /* Called if a call to pvPortMalloc() fails because there is insufficient - free memory available in the FreeRTOS heap. pvPortMalloc() is called - internally by FreeRTOS API functions that create tasks, queues, software - timers, and semaphores. The size of the FreeRTOS heap is set by the - configTOTAL_HEAP_SIZE configuration constant in FreeRTOSConfig.h. */ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -void vApplicationStackOverflowHook( TaskHandle_t pxTask, char *pcTaskName ) -{ - ( void ) pcTaskName; - ( void ) pxTask; - - /* Run time stack overflow checking is performed if - configconfigCHECK_FOR_STACK_OVERFLOW is defined to 1 or 2. This hook - function is called if a stack overflow is detected. */ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -void vApplicationIdleHook( void ) -{ -volatile size_t xFreeHeapSpace; - - /* This function is called on each cycle of the idle task. In this case it - does nothing useful, other than report the amout of FreeRTOS heap that - remains unallocated. */ - xFreeHeapSpace = xPortGetFreeHeapSize(); - - if( xFreeHeapSpace > 100 ) - { - /* By now, the kernel has allocated everything it is going to, so - if there is a lot of heap remaining unallocated then - the value of configTOTAL_HEAP_SIZE in FreeRTOSConfig.h can be - reduced accordingly. */ - } -} -/*-----------------------------------------------------------*/ - -void vMainConfigureTimerForRunTimeStats( void ) -{ - /* This function is not used by the Blinky build configuration, but needs - to be defined as the Blinky and Full build configurations share a - FreeRTOSConfig.h header file. */ -} -/*-----------------------------------------------------------*/ - -unsigned long ulGetRunTimeCounterValue( void ) -{ - /* This function is not used by the Blinky build configuration, but needs - to be defined as the Blinky and Full build configurations share a - FreeRTOSConfig.h header file. */ - return 0UL; -} - diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/main-full.c b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/main-full.c deleted file mode 100644 index 2f8507d20..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/main-full.c +++ /dev/null @@ -1,623 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* - * main-blinky.c is included when the "Blinky" build configuration is used. - * main-full.c is included when the "Full" build configuration is used. - * - * main-full.c (this file) defines a comprehensive demo that creates many - * tasks, queues, semaphores and timers. It also demonstrates how Cortex-M3 - * interrupts can interact with FreeRTOS tasks/timers, and implements a simple - * and small interactive web server. - * - * This project runs on the SmartFusion A2F-EVAL-KIT evaluation board, which - * is populated with an A2F200M3F SmartFusion mixed signal FPGA. The A2F200M3F - * incorporates a Cortex-M3 microcontroller. - * - * The main() Function: - * main() creates two demo specific software timers, one demo specific queue, - * and three demo specific tasks. It then creates a whole host of 'standard - * demo' tasks/queues/semaphores, before starting the scheduler. The demo - * specific tasks and timers are described in the comments here. The standard - * demo tasks are described on the FreeRTOS.org web site. - * - * The standard demo tasks provide no specific functionality. They are - * included to both test the FreeRTOS port, and provide examples of how the - * various FreeRTOS API functions can be used. - * - * The Demo Specific Queue Send Task: - * The queue send task is implemented by the prvQueueSendTask() function in - * this file. prvQueueSendTask() sits in a loop that causes it to repeatedly - * block for 200 milliseconds, before sending the value 100 to the queue that - * was created within main(). Once the value is sent, the task loops back - * around to block for another 200 milliseconds. - * - * The Demo Specific Queue Receive Task: - * The queue receive task is implemented by the prvQueueReceiveTask() function - * in this file. prvQueueReceiveTask() sits in a loop that causes it to - * repeatedly attempt to read data from the queue that was created within - * main(). When data is received, the task checks the value of the data, and - * if the value equals the expected 100, toggles the green LED. The 'block - * time' parameter passed to the queue receive function specifies that the task - * should be held in the Blocked state indefinitely to wait for data to be - * available on the queue. The queue receive task will only leave the Blocked - * state when the queue send task writes to the queue. As the queue send task - * writes to the queue every 200 milliseconds, the queue receive task leaves - * the Blocked state every 200 milliseconds, and therefore toggles the LED - * every 200 milliseconds. - * - * The Demo Specific OLED Task: - * The OLED task is a very simple task that just scrolls a message across the - * OLED. Ideally this would be done in a timer, but the OLED driver accesses - * the I2C which is time consuming. - * - * The Demo Specific LED Software Timer and the Button Interrupt: - * The user button SW1 is configured to generate an interrupt each time it is - * pressed. The interrupt service routine switches an LED on, and resets the - * LED software timer. The LED timer has a 5000 millisecond (5 second) period, - * and uses a callback function that is defined to just turn the LED off again. - * Therefore, pressing the user button will turn the LED on, and the LED will - * remain on until a full five seconds pass without the button being pressed. - * - * The Demo Specific "Check" Callback Function: - * This is called each time the 'check' timer expires. The check timer - * callback function inspects all the standard demo tasks to see if they are - * all executing as expected. The check timer is initially configured to - * expire every three seconds, but will shorted this to every 500ms if an error - * is ever discovered. The check timer callback toggles the LED defined by - * the mainCHECK_LED definition each time it executes. Therefore, if LED - * mainCHECK_LED is toggling every three seconds, then no error have been found. - * If LED mainCHECK_LED is toggling every 500ms, then at least one errors has - * been found. The task in which the error was discovered is displayed at the - * bottom of the "task stats" page that is served by the embedded web server. - * - * The Demo Specific Idle Hook Function: - * The idle hook function demonstrates how to query the amount of FreeRTOS heap - * space that is remaining (see vApplicationIdleHook() defined in this file). - * - * The Web Server Task: - * The IP address used by the SmartFusion target is configured by the - * definitions configIP_ADDR0 to configIP_ADDR3, which are located in the - * FreeRTOSConfig.h header file. See the documentation page for this example - * on the http://www.FreeRTOS.org web site for further connection information. - */ - -/* Kernel includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "queue.h" -#include "timers.h" - -/* Microsemi drivers/libraries includes. */ -#include "mss_gpio.h" -#include "mss_watchdog.h" -#include "mss_timer.h" -#include "mss_ace.h" -#include "oled.h" - -/* Common demo includes. */ -#include "partest.h" -#include "flash.h" -#include "BlockQ.h" -#include "death.h" -#include "blocktim.h" -#include "semtest.h" -#include "GenQTest.h" -#include "QPeek.h" -#include "recmutex.h" -#include "TimerDemo.h" - -/* Priorities at which the tasks are created. */ -#define mainQUEUE_RECEIVE_TASK_PRIORITY ( tskIDLE_PRIORITY + 2 ) -#define mainQUEUE_SEND_TASK_PRIORITY ( tskIDLE_PRIORITY + 1 ) - -/* The rate at which data is sent to the queue, specified in milliseconds, and -converted to ticks using the portTICK_PERIOD_MS constant. */ -#define mainQUEUE_SEND_FREQUENCY_MS ( 200 / portTICK_PERIOD_MS ) - -/* The number of items the queue can hold. This is 1 as the receive task -will remove items as they are added, meaning the send task should always find -the queue empty. */ -#define mainQUEUE_LENGTH ( 1 ) - -/* The LED toggled by the check timer callback function. */ -#define mainCHECK_LED 0x07UL - -/* The LED turned on by the button interrupt, and turned off by the LED timer. */ -#define mainTIMER_CONTROLLED_LED 0x06UL - -/* The LED toggle by the queue receive task. */ -#define mainTASK_CONTROLLED_LED 0x05UL - -/* Constant used by the standard timer test functions. */ -#define mainTIMER_TEST_PERIOD ( 50 ) - -/* Priorities used by the various different tasks. */ -#define mainCHECK_TASK_PRIORITY ( configMAX_PRIORITIES - 1 ) -#define mainQUEUE_POLL_PRIORITY ( tskIDLE_PRIORITY + 1 ) -#define mainSEM_TEST_PRIORITY ( tskIDLE_PRIORITY + 1 ) -#define mainBLOCK_Q_PRIORITY ( tskIDLE_PRIORITY + 2 ) -#define mainCREATOR_TASK_PRIORITY ( tskIDLE_PRIORITY + 3 ) -#define mainFLASH_TASK_PRIORITY ( tskIDLE_PRIORITY + 1 ) -#define mainuIP_TASK_PRIORITY ( tskIDLE_PRIORITY + 2 ) -#define mainOLED_TASK_PRIORITY ( tskIDLE_PRIORITY + 1 ) -#define mainINTEGER_TASK_PRIORITY ( tskIDLE_PRIORITY ) -#define mainGEN_QUEUE_TASK_PRIORITY ( tskIDLE_PRIORITY ) - -/* The WEB server uses string handling functions, which in turn use a bit more -stack than most of the other tasks. */ -#define mainuIP_STACK_SIZE ( configMINIMAL_STACK_SIZE * 3 ) - -/* The period at which the check timer will expire, in ms, provided no errors -have been reported by any of the standard demo tasks. */ -#define mainCHECK_TIMER_PERIOD_MS ( 3000UL / portTICK_PERIOD_MS ) - -/* The period at which the OLED timer will expire. Each time it expires, it's -callback function updates the OLED text. */ -#define mainOLED_PERIOD_MS ( 75UL / portTICK_PERIOD_MS ) - -/* The period at which the check timer will expire, in ms, if an error has been -reported in one of the standard demo tasks. */ -#define mainERROR_CHECK_TIMER_PERIOD_MS ( 500UL / portTICK_PERIOD_MS ) - -/* The LED will remain on until the button has not been pushed for a full -5000ms. */ -#define mainLED_TIMER_PERIOD_MS ( 5000UL / portTICK_PERIOD_MS ) - -/* A zero block time. */ -#define mainDONT_BLOCK ( 0UL ) -/*-----------------------------------------------------------*/ - -/* - * Setup the NVIC, LED outputs, and button inputs. - */ -static void prvSetupHardware( void ); - -/* - * The tasks as described in the comments at the top of this file. - */ -static void prvQueueReceiveTask( void *pvParameters ); -static void prvQueueSendTask( void *pvParameters ); - -/* - * The LED timer callback function. This does nothing but switch the red LED - * off. - */ -static void prvLEDTimerCallback( TimerHandle_t xTimer ); - -/* - * The check timer callback function, as described at the top of this file. - */ -static void prvCheckTimerCallback( TimerHandle_t xTimer ); - -/* - * This is not a 'standard' partest function, so the prototype is not in - * partest.h, and is instead included here. - */ -void vParTestSetLEDFromISR( unsigned portBASE_TYPE uxLED, signed portBASE_TYPE xValue ); - -/* - * Contains the implementation of the WEB server. - */ -extern void vuIP_Task( void *pvParameters ); - -/* - * A very simply task that does nothing but scroll the OLED display. Ideally - * this would be done within a timer, but it accesses the I2C port which is - * time consuming. - */ -static void prvOLEDTask( void * pvParameters); - -/*-----------------------------------------------------------*/ - -/* The queue used by both application specific demo tasks defined in this file. */ -static QueueHandle_t xQueue = NULL; - -/* The LED software timer. This uses prvLEDTimerCallback() as it's callback -function. */ -static TimerHandle_t xLEDTimer = NULL; - -/* The check timer. This uses prvCheckTimerCallback() as it's callback -function. */ -static TimerHandle_t xCheckTimer = NULL; - -/* The status message that is displayed at the bottom of the "task stats" web -page, which is served by the uIP task. This will report any errors picked up -by the check timer callback. */ -static const char *pcStatusMessage = NULL; - -/*-----------------------------------------------------------*/ - -int main(void) -{ - /* Configure the NVIC, LED outputs and button inputs. */ - prvSetupHardware(); - - /* Create the queue. */ - xQueue = xQueueCreate( mainQUEUE_LENGTH, sizeof( unsigned long ) ); - - if( xQueue != NULL ) - { - /* Start the three application specific demo tasks, as described in the - comments at the top of this file. */ - xTaskCreate( prvQueueReceiveTask, "Rx", configMINIMAL_STACK_SIZE, NULL, mainQUEUE_RECEIVE_TASK_PRIORITY, NULL ); - xTaskCreate( prvQueueSendTask, "TX", configMINIMAL_STACK_SIZE, NULL, mainQUEUE_SEND_TASK_PRIORITY, NULL ); - xTaskCreate( prvOLEDTask, "OLED", configMINIMAL_STACK_SIZE, NULL, mainOLED_TASK_PRIORITY, NULL ); - - /* Create the software timer that is responsible for turning off the LED - if the button is not pushed within 5000ms, as described at the top of - this file. */ - xLEDTimer = xTimerCreate( "LEDTimer", /* A text name, purely to help debugging. */ - ( mainLED_TIMER_PERIOD_MS ), /* The timer period, in this case 5000ms (5s). */ - pdFALSE, /* This is a one-shot timer, so xAutoReload is set to pdFALSE. */ - ( void * ) 0, /* The ID is not used, so can be set to anything. */ - prvLEDTimerCallback /* The callback function that switches the LED off. */ - ); - - /* Create the software timer that performs the 'check' functionality, - as described at the top of this file. */ - xCheckTimer = xTimerCreate( "CheckTimer", /* A text name, purely to help debugging. */ - ( mainCHECK_TIMER_PERIOD_MS ), /* The timer period, in this case 3000ms (3s). */ - pdTRUE, /* This is an auto-reload timer, so xAutoReload is set to pdTRUE. */ - ( void * ) 0, /* The ID is not used, so can be set to anything. */ - prvCheckTimerCallback /* The callback function that inspects the status of all the other tasks. */ - ); - - /* Create a lot of 'standard demo' tasks. */ - vStartBlockingQueueTasks( mainBLOCK_Q_PRIORITY ); - vCreateBlockTimeTasks(); - vStartSemaphoreTasks( mainSEM_TEST_PRIORITY ); - vStartGenericQueueTasks( mainGEN_QUEUE_TASK_PRIORITY ); - vStartLEDFlashTasks( mainFLASH_TASK_PRIORITY ); - vStartQueuePeekTasks(); - vStartRecursiveMutexTasks(); - vStartTimerDemoTask( mainTIMER_TEST_PERIOD ); - - /* Create the web server task. */ - xTaskCreate( vuIP_Task, "uIP", mainuIP_STACK_SIZE, NULL, mainuIP_TASK_PRIORITY, NULL ); - - /* The suicide tasks must be created last, as they need to know how many - tasks were running prior to their creation in order to ascertain whether - or not the correct/expected number of tasks are running at any given - time. */ - vCreateSuicidalTasks( mainCREATOR_TASK_PRIORITY ); - - /* Start the tasks and timer running. */ - vTaskStartScheduler(); - } - - /* If all is well, the scheduler will now be running, and the following line - will never be reached. If the following line does execute, then there was - insufficient FreeRTOS heap memory available for the idle and/or timer tasks - to be created. See the memory management section on the FreeRTOS web site - for more details. */ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -static void prvCheckTimerCallback( TimerHandle_t xTimer ) -{ - /* Check the standard demo tasks are running without error. Latch the - latest reported error in the pcStatusMessage character pointer. */ - if( xAreGenericQueueTasksStillRunning() != pdTRUE ) - { - pcStatusMessage = "Error: GenQueue"; - } - - if( xAreQueuePeekTasksStillRunning() != pdTRUE ) - { - pcStatusMessage = "Error: QueuePeek\r\n"; - } - - if( xAreBlockingQueuesStillRunning() != pdTRUE ) - { - pcStatusMessage = "Error: BlockQueue\r\n"; - } - - if( xAreBlockTimeTestTasksStillRunning() != pdTRUE ) - { - pcStatusMessage = "Error: BlockTime\r\n"; - } - - if( xAreSemaphoreTasksStillRunning() != pdTRUE ) - { - pcStatusMessage = "Error: SemTest\r\n"; - } - - if( xIsCreateTaskStillRunning() != pdTRUE ) - { - pcStatusMessage = "Error: Death\r\n"; - } - - if( xAreRecursiveMutexTasksStillRunning() != pdTRUE ) - { - pcStatusMessage = "Error: RecMutex\r\n"; - } - - if( xAreTimerDemoTasksStillRunning( ( mainCHECK_TIMER_PERIOD_MS ) ) != pdTRUE ) - { - pcStatusMessage = "Error: TimerDemo"; - } - - /* Toggle the check LED to give an indication of the system status. If - the LED toggles every mainCHECK_TIMER_PERIOD_MS milliseconds then - everything is ok. A faster toggle indicates an error. */ - vParTestToggleLED( mainCHECK_LED ); - - /* Have any errors been latch in pcStatusMessage? If so, shorten the - period of the check timer to mainERROR_CHECK_TIMER_PERIOD_MS milliseconds. - This will result in an increase in the rate at which mainCHECK_LED - toggles. */ - if( pcStatusMessage != NULL ) - { - /* This call to xTimerChangePeriod() uses a zero block time. Functions - called from inside of a timer callback function must *never* attempt - to block. */ - xTimerChangePeriod( xCheckTimer, ( mainERROR_CHECK_TIMER_PERIOD_MS ), mainDONT_BLOCK ); - } -} -/*-----------------------------------------------------------*/ - -static void prvLEDTimerCallback( TimerHandle_t xTimer ) -{ - /* The timer has expired - so no button pushes have occurred in the last - five seconds - turn the LED off. */ - vParTestSetLED( mainTIMER_CONTROLLED_LED, pdFALSE ); -} -/*-----------------------------------------------------------*/ - -/* The ISR executed when the user button is pushed. */ -void GPIO8_IRQHandler( void ) -{ -portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE; - - /* The button was pushed, so ensure the LED is on before resetting the - LED timer. The LED timer will turn the LED off if the button is not - pushed within 5000ms. */ - vParTestSetLEDFromISR( mainTIMER_CONTROLLED_LED, pdTRUE ); - - /* This interrupt safe FreeRTOS function can be called from this interrupt - because the interrupt priority is below the - configMAX_SYSCALL_INTERRUPT_PRIORITY setting in FreeRTOSConfig.h. */ - xTimerResetFromISR( xLEDTimer, &xHigherPriorityTaskWoken ); - - /* Clear the interrupt before leaving. */ - MSS_GPIO_clear_irq( MSS_GPIO_8 ); - - /* If calling xTimerResetFromISR() caused a task (in this case the timer - service/daemon task) to unblock, and the unblocked task has a priority - higher than or equal to the task that was interrupted, then - xHigherPriorityTaskWoken will now be set to pdTRUE, and calling - portEND_SWITCHING_ISR() will ensure the unblocked task runs next. */ - portEND_SWITCHING_ISR( xHigherPriorityTaskWoken ); -} -/*-----------------------------------------------------------*/ - -static void prvQueueSendTask( void *pvParameters ) -{ -TickType_t xNextWakeTime; -const unsigned long ulValueToSend = 100UL; - - /* The timer command queue will have been filled when the timer test tasks - were created in main() (this is part of the test they perform). Therefore, - while the check timer can be created in main(), it cannot be started from - main(). Once the scheduler has started, the timer service task will drain - the command queue, and now the check timer can be started successfully. */ - xTimerStart( xCheckTimer, portMAX_DELAY ); - - /* Initialise xNextWakeTime - this only needs to be done once. */ - xNextWakeTime = xTaskGetTickCount(); - - for( ;; ) - { - /* Place this task in the blocked state until it is time to run again. - The block time is specified in ticks, the constant used converts ticks - to ms. While in the Blocked state this task will not consume any CPU - time. */ - vTaskDelayUntil( &xNextWakeTime, mainQUEUE_SEND_FREQUENCY_MS ); - - /* Send to the queue - causing the queue receive task to unblock and - toggle an LED. 0 is used as the block time so the sending operation - will not block - it shouldn't need to block as the queue should always - be empty at this point in the code. */ - xQueueSend( xQueue, &ulValueToSend, mainDONT_BLOCK ); - } -} -/*-----------------------------------------------------------*/ - -static void prvQueueReceiveTask( void *pvParameters ) -{ -unsigned long ulReceivedValue; - - for( ;; ) - { - /* Wait until something arrives in the queue - this task will block - indefinitely provided INCLUDE_vTaskSuspend is set to 1 in - FreeRTOSConfig.h. */ - xQueueReceive( xQueue, &ulReceivedValue, portMAX_DELAY ); - - /* To get here something must have been received from the queue, but - is it the expected value? If it is, toggle the LED. */ - if( ulReceivedValue == 100UL ) - { - vParTestToggleLED( mainTASK_CONTROLLED_LED ); - } - } -} -/*-----------------------------------------------------------*/ - -static void prvOLEDTask( void * pvParameters) -{ -static struct oled_data xOLEDData; -static unsigned char ucOffset1 = 0, ucOffset2 = 5; -static TickType_t xLastScrollTime = 0UL; - - /* Initialise the display. */ - OLED_init(); - - /* Initialise the parts of the oled_data structure that do not change. */ - xOLEDData.line1 = FIRST_LINE; - xOLEDData.string1 = " www.FreeRTOS.org"; - xOLEDData.line2 = SECOND_LINE; - xOLEDData.string2 = " www.FreeRTOS.org"; - xOLEDData.contrast_val = OLED_CONTRAST_VAL; - xOLEDData.on_off = OLED_HORIZ_SCROLL_OFF; - xOLEDData.column_scrool_per_step = OLED_HORIZ_SCROLL_STEP; - xOLEDData.start_page = OLED_START_PAGE; - xOLEDData.time_intrval_btw_scroll_step = OLED_HORIZ_SCROLL_TINVL; - xOLEDData.end_page = OLED_END_PAGE; - - - /* Initialise the last scroll time. This only needs to be done once, - because from this point on it will get automatically updated in the - xTaskDelayUntil() API function. */ - xLastScrollTime = xTaskGetTickCount(); - - for( ;; ) - { - /* Wait until it is time to update the OLED again. */ - vTaskDelayUntil( &xLastScrollTime, mainOLED_PERIOD_MS ); - - xOLEDData.char_offset1 = ucOffset1++; - xOLEDData.char_offset2 = ucOffset2++; - - OLED_write_data( &xOLEDData, BOTH_LINES ); - } -} -/*-----------------------------------------------------------*/ - -static void prvSetupHardware( void ) -{ - SystemCoreClockUpdate(); - - /* Disable the Watch Dog Timer */ - MSS_WD_disable( ); - - /* Configure the GPIO for the LEDs. */ - vParTestInitialise(); - - /* ACE Initialization */ - ACE_init(); - - /* Setup the GPIO and the NVIC for the switch used in this simple demo. */ - NVIC_SetPriority( GPIO8_IRQn, configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY ); - NVIC_EnableIRQ( GPIO8_IRQn ); - MSS_GPIO_config( MSS_GPIO_8, MSS_GPIO_INPUT_MODE | MSS_GPIO_IRQ_EDGE_NEGATIVE ); - MSS_GPIO_enable_irq( MSS_GPIO_8 ); -} -/*-----------------------------------------------------------*/ - -void vApplicationMallocFailedHook( void ) -{ - /* Called if a call to pvPortMalloc() fails because there is insufficient - free memory available in the FreeRTOS heap. pvPortMalloc() is called - internally by FreeRTOS API functions that create tasks, queues, software - timers, and semaphores. The size of the FreeRTOS heap is set by the - configTOTAL_HEAP_SIZE configuration constant in FreeRTOSConfig.h. */ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -void vApplicationStackOverflowHook( TaskHandle_t pxTask, char *pcTaskName ) -{ - ( void ) pcTaskName; - ( void ) pxTask; - - /* Run time stack overflow checking is performed if - configconfigCHECK_FOR_STACK_OVERFLOW is defined to 1 or 2. This hook - function is called if a stack overflow is detected. */ - taskDISABLE_INTERRUPTS(); - for( ;; ); -} -/*-----------------------------------------------------------*/ - -void vApplicationIdleHook( void ) -{ -volatile size_t xFreeStackSpace; - - /* This function is called on each cycle of the idle task. In this case it - does nothing useful, other than report the amount of FreeRTOS heap that - remains unallocated. */ - xFreeStackSpace = xPortGetFreeHeapSize(); - - if( xFreeStackSpace > 100 ) - { - /* By now, the kernel has allocated everything it is going to, so - if there is a lot of heap remaining unallocated then - the value of configTOTAL_HEAP_SIZE in FreeRTOSConfig.h can be - reduced accordingly. */ - } -} -/*-----------------------------------------------------------*/ - -char *pcGetTaskStatusMessage( void ) -{ - /* Not bothered about a critical section here although technically because - of the task priorities the pointer could change it will be atomic if not - near atomic and its not critical. */ - if( pcStatusMessage == NULL ) - { - return "All tasks running without error"; - } - else - { - return ( char * ) pcStatusMessage; - } -} -/*-----------------------------------------------------------*/ - -void vMainConfigureTimerForRunTimeStats( void ) -{ -const unsigned long ulMax32BitValue = 0xffffffffUL; - - MSS_TIM64_init( MSS_TIMER_PERIODIC_MODE ); - MSS_TIM64_load_immediate( ulMax32BitValue, ulMax32BitValue ); - MSS_TIM64_start(); -} -/*-----------------------------------------------------------*/ - -unsigned long ulGetRunTimeCounterValue( void ) -{ -unsigned long long ullCurrentValue; -const unsigned long long ulMax64BitValue = 0xffffffffffffffffULL; -unsigned long *pulHighWord, *pulLowWord; - - pulHighWord = ( unsigned long * ) &ullCurrentValue; - pulLowWord = pulHighWord++; - - MSS_TIM64_get_current_value( ( uint32_t * ) pulHighWord, ( uint32_t * ) pulLowWord ); - - /* Convert the down count into an upcount. */ - ullCurrentValue = ulMax64BitValue - ullCurrentValue; - - /* Scale to a 32bit number of suitable frequency. */ - ullCurrentValue >>= 13; - - /* Just return 32 bits. */ - return ( unsigned long ) ullCurrentValue; -} - diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/printf-stdarg.c b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/printf-stdarg.c deleted file mode 100644 index b5ac41be7..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/printf-stdarg.c +++ /dev/null @@ -1,293 +0,0 @@ -/* - Copyright 2001, 2002 Georges Menie (www.menie.org) - stdarg version contributed by Christian Ettinger - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU Lesser General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -*/ - -/* - putchar is the only external dependency for this file, - if you have a working putchar, leave it commented out. - If not, uncomment the define below and - replace outbyte(c) by your own function call. - -*/ - -#define putchar(c) c - -#include - -static void printchar(char **str, int c) -{ - //extern int putchar(int c); - - if (str) { - **str = (char)c; - ++(*str); - } - else - { - (void)putchar(c); - } -} - -#define PAD_RIGHT 1 -#define PAD_ZERO 2 - -static int prints(char **out, const char *string, int width, int pad) -{ - register int pc = 0, padchar = ' '; - - if (width > 0) { - register int len = 0; - register const char *ptr; - for (ptr = string; *ptr; ++ptr) ++len; - if (len >= width) width = 0; - else width -= len; - if (pad & PAD_ZERO) padchar = '0'; - } - if (!(pad & PAD_RIGHT)) { - for ( ; width > 0; --width) { - printchar (out, padchar); - ++pc; - } - } - for ( ; *string ; ++string) { - printchar (out, *string); - ++pc; - } - for ( ; width > 0; --width) { - printchar (out, padchar); - ++pc; - } - - return pc; -} - -/* the following should be enough for 32 bit int */ -#define PRINT_BUF_LEN 12 - -static int printi(char **out, int i, int b, int sg, int width, int pad, int letbase) -{ - char print_buf[PRINT_BUF_LEN]; - register char *s; - register int t, neg = 0, pc = 0; - register unsigned int u = (unsigned int)i; - - if (i == 0) { - print_buf[0] = '0'; - print_buf[1] = '\0'; - return prints (out, print_buf, width, pad); - } - - if (sg && b == 10 && i < 0) { - neg = 1; - u = (unsigned int)-i; - } - - s = print_buf + PRINT_BUF_LEN-1; - *s = '\0'; - - while (u) { - t = (unsigned int)u % b; - if( t >= 10 ) - t += letbase - '0' - 10; - *--s = (char)(t + '0'); - u /= b; - } - - if (neg) { - if( width && (pad & PAD_ZERO) ) { - printchar (out, '-'); - ++pc; - --width; - } - else { - *--s = '-'; - } - } - - return pc + prints (out, s, width, pad); -} - -static int print( char **out, const char *format, va_list args ) -{ - register int width, pad; - register int pc = 0; - char scr[2]; - - for (; *format != 0; ++format) { - if (*format == '%') { - ++format; - width = pad = 0; - if (*format == '\0') break; - if (*format == '%') goto out; - if (*format == '-') { - ++format; - pad = PAD_RIGHT; - } - while (*format == '0') { - ++format; - pad |= PAD_ZERO; - } - for ( ; *format >= '0' && *format <= '9'; ++format) { - width *= 10; - width += *format - '0'; - } - if( *format == 's' ) { - register char *s = (char *)va_arg( args, int ); - pc += prints (out, s?s:"(null)", width, pad); - continue; - } - if( *format == 'd' ) { - pc += printi (out, va_arg( args, int ), 10, 1, width, pad, 'a'); - continue; - } - if( *format == 'x' ) { - pc += printi (out, va_arg( args, int ), 16, 0, width, pad, 'a'); - continue; - } - if( *format == 'X' ) { - pc += printi (out, va_arg( args, int ), 16, 0, width, pad, 'A'); - continue; - } - if( *format == 'u' ) { - pc += printi (out, va_arg( args, int ), 10, 0, width, pad, 'a'); - continue; - } - if( *format == 'c' ) { - /* char are converted to int then pushed on the stack */ - scr[0] = (char)va_arg( args, int ); - scr[1] = '\0'; - pc += prints (out, scr, width, pad); - continue; - } - } - else { - out: - printchar (out, *format); - ++pc; - } - } - if (out) **out = '\0'; - va_end( args ); - return pc; -} - -int printf(const char *format, ...) -{ - va_list args; - - va_start( args, format ); - return print( 0, format, args ); -} - -int sprintf(char *out, const char *format, ...) -{ - va_list args; - - va_start( args, format ); - return print( &out, format, args ); -} - - -int snprintf( char *buf, unsigned int count, const char *format, ... ) -{ - va_list args; - - ( void ) count; - - va_start( args, format ); - return print( &buf, format, args ); -} - - -#ifdef TEST_PRINTF -int main(void) -{ - char *ptr = "Hello world!"; - char *np = 0; - int i = 5; - unsigned int bs = sizeof(int)*8; - int mi; - char buf[80]; - - mi = (1 << (bs-1)) + 1; - printf("%s\n", ptr); - printf("printf test\n"); - printf("%s is null pointer\n", np); - printf("%d = 5\n", i); - printf("%d = - max int\n", mi); - printf("char %c = 'a'\n", 'a'); - printf("hex %x = ff\n", 0xff); - printf("hex %02x = 00\n", 0); - printf("signed %d = unsigned %u = hex %x\n", -3, -3, -3); - printf("%d %s(s)%", 0, "message"); - printf("\n"); - printf("%d %s(s) with %%\n", 0, "message"); - sprintf(buf, "justif: \"%-10s\"\n", "left"); printf("%s", buf); - sprintf(buf, "justif: \"%10s\"\n", "right"); printf("%s", buf); - sprintf(buf, " 3: %04d zero padded\n", 3); printf("%s", buf); - sprintf(buf, " 3: %-4d left justif.\n", 3); printf("%s", buf); - sprintf(buf, " 3: %4d right justif.\n", 3); printf("%s", buf); - sprintf(buf, "-3: %04d zero padded\n", -3); printf("%s", buf); - sprintf(buf, "-3: %-4d left justif.\n", -3); printf("%s", buf); - sprintf(buf, "-3: %4d right justif.\n", -3); printf("%s", buf); - - return 0; -} - -/* - * if you compile this file with - * gcc -Wall $(YOUR_C_OPTIONS) -DTEST_PRINTF -c printf.c - * you will get a normal warning: - * printf.c:214: warning: spurious trailing `%' in format - * this line is testing an invalid % at the end of the format string. - * - * this should display (on 32bit int machine) : - * - * Hello world! - * printf test - * (null) is null pointer - * 5 = 5 - * -2147483647 = - max int - * char a = 'a' - * hex ff = ff - * hex 00 = 00 - * signed -3 = unsigned 4294967293 = hex fffffffd - * 0 message(s) - * 0 message(s) with % - * justif: "left " - * justif: " right" - * 3: 0003 zero padded - * 3: 3 left justif. - * 3: 3 right justif. - * -3: -003 zero padded - * -3: -3 left justif. - * -3: -3 right justif. - */ - -#endif - - -/* To keep linker happy. */ -int write( int i, char* c, int n) -{ - (void)i; - (void)n; - (void)c; - return 0; -} - diff --git a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/uIP_Task.c b/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/uIP_Task.c deleted file mode 100644 index fdd2d27d0..000000000 --- a/FreeRTOS/Demo/CORTEX_A2F200_SoftConsole/uIP_Task.c +++ /dev/null @@ -1,412 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* Standard includes. */ -#include - -/* Scheduler includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "queue.h" -#include "timers.h" - -/* uip includes. */ -#include "net/uip.h" -#include "net/uip_arp.h" -#include "apps/httpd/httpd.h" -#include "sys/timer.h" -#include "net/clock-arch.h" - -/* Demo includes. */ -#include "ParTest.h" - -/* Hardware driver includes. */ -#include "mss_ethernet_mac_regs.h" -#include "mss_ethernet_mac.h" - -/* The buffer used by the uIP stack to both receive and send. In this case, -because the Ethernet driver has been modified to be zero copy - the uip_buf -variable is just a pointer to an Ethernet buffer, and not a buffer in its own -right. */ -extern unsigned char *uip_buf; - -/* The ARP timer and the periodic timer share a callback function, so the -respective timer IDs are used to determine which timer actually expired. These -constants are assigned to the timer IDs. */ -#define uipARP_TIMER 0 -#define uipPERIODIC_TIMER 1 - -/* The length of the queue used to send events from timers or the Ethernet -driver to the uIP stack. */ -#define uipEVENT_QUEUE_LENGTH 10 - -/* A block time of zero simply means "don't block". */ -#define uipDONT_BLOCK 0UL - -/* How long to wait before attempting to connect the MAC again. */ -#define uipINIT_WAIT ( 100 / portTICK_PERIOD_MS ) - -/* Shortcut to the header within the Rx buffer. */ -#define xHeader ((struct uip_eth_hdr *) &uip_buf[ 0 ]) - -/* Standard constant. */ -#define uipTOTAL_FRAME_HEADER_SIZE 54 - -/*-----------------------------------------------------------*/ - -/* - * Setup the MAC address in the MAC itself, and in the uIP stack. - */ -static void prvSetMACAddress( void ); - -/* - * Perform any uIP initialisation required to ready the stack for http - * processing. - */ -static void prvInitialise_uIP( void ); - -/* - * Handles Ethernet interrupt events. - */ -static void prvEMACEventListener( unsigned long ulISREvents ); - -/* - * The callback function that is assigned to both the periodic timer and the - * ARP timer. - */ -static void prvUIPTimerCallback( TimerHandle_t xTimer ); - -/* - * Initialise the MAC hardware. - */ -static void prvInitEmac( void ); - -/* - * Write data to the Ethener. Note that this actually writes data twice for the - * to get around delayed ack issues when communicating with a non real-time - * peer (for example, a Windows machine). - */ -void vEMACWrite( void ); - -/* - * Port functions required by the uIP stack. - */ -clock_time_t clock_time( void ); - -/*-----------------------------------------------------------*/ - -/* The queue used to send TCP/IP events to the uIP stack. */ -QueueHandle_t xEMACEventQueue = NULL; - -/*-----------------------------------------------------------*/ - -clock_time_t clock_time( void ) -{ - return xTaskGetTickCount(); -} -/*-----------------------------------------------------------*/ - -void vuIP_Task( void *pvParameters ) -{ -portBASE_TYPE i; -unsigned long ulNewEvent = 0UL, ulUIP_Events = 0UL; -long lPacketLength; - - /* Just to prevent compiler warnings about the unused parameter. */ - ( void ) pvParameters; - - /* Initialise the uIP stack, configuring for web server usage. */ - prvInitialise_uIP(); - - /* Initialise the MAC and PHY. */ - prvInitEmac(); - - for( ;; ) - { - /* Is there received data ready to be processed? */ - lPacketLength = MSS_MAC_rx_packet(); - - /* Statements to be executed if data has been received on the Ethernet. */ - if( ( lPacketLength > 0 ) && ( uip_buf != NULL ) ) - { - uip_len = ( u16_t ) lPacketLength; - - /* Standard uIP loop taken from the uIP manual. */ - if( xHeader->type == htons( UIP_ETHTYPE_IP ) ) - { - uip_arp_ipin(); - uip_input(); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - uip_arp_out(); - vEMACWrite(); - } - } - else if( xHeader->type == htons( UIP_ETHTYPE_ARP ) ) - { - uip_arp_arpin(); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - vEMACWrite(); - } - } - } - else - { - /* Clear the RX event latched in ulUIP_Events - if one was latched. */ - ulUIP_Events &= ~uipETHERNET_RX_EVENT; - } - - /* Statements to be executed if the TCP/IP period timer has expired. */ - if( ( ulUIP_Events & uipPERIODIC_TIMER_EVENT ) != 0UL ) - { - ulUIP_Events &= ~uipPERIODIC_TIMER_EVENT; - - if( uip_buf != NULL ) - { - for( i = 0; i < UIP_CONNS; i++ ) - { - uip_periodic( i ); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - uip_arp_out(); - vEMACWrite(); - } - } - } - } - - /* Statements to be executed if the ARP timer has expired. */ - if( ( ulUIP_Events & uipARP_TIMER_EVENT ) != 0 ) - { - ulUIP_Events &= ~uipARP_TIMER_EVENT; - uip_arp_timer(); - } - - /* If all latched events have been cleared - block until another event - occurs. */ - if( ulUIP_Events == pdFALSE ) - { - xQueueReceive( xEMACEventQueue, &ulNewEvent, portMAX_DELAY ); - ulUIP_Events |= ulNewEvent; - } - } -} -/*-----------------------------------------------------------*/ - -static void prvSetMACAddress( void ) -{ -struct uip_eth_addr xAddr; - - /* Configure the MAC address in the uIP stack. */ - xAddr.addr[ 0 ] = configMAC_ADDR0; - xAddr.addr[ 1 ] = configMAC_ADDR1; - xAddr.addr[ 2 ] = configMAC_ADDR2; - xAddr.addr[ 3 ] = configMAC_ADDR3; - xAddr.addr[ 4 ] = configMAC_ADDR4; - xAddr.addr[ 5 ] = configMAC_ADDR5; - uip_setethaddr( xAddr ); -} -/*-----------------------------------------------------------*/ - -static void prvInitialise_uIP( void ) -{ -uip_ipaddr_t xIPAddr; -TimerHandle_t xARPTimer, xPeriodicTimer; - - uip_init(); - uip_ipaddr( &xIPAddr, configIP_ADDR0, configIP_ADDR1, configIP_ADDR2, configIP_ADDR3 ); - uip_sethostaddr( &xIPAddr ); - uip_ipaddr( &xIPAddr, configNET_MASK0, configNET_MASK1, configNET_MASK2, configNET_MASK3 ); - uip_setnetmask( &xIPAddr ); - prvSetMACAddress(); - httpd_init(); - - /* Create the queue used to sent TCP/IP events to the uIP stack. */ - xEMACEventQueue = xQueueCreate( uipEVENT_QUEUE_LENGTH, sizeof( unsigned long ) ); - - /* Create and start the uIP timers. */ - xARPTimer = xTimerCreate( "ARPTimer", /* Just a name that is helpful for debugging, not used by the kernel. */ - ( 10000UL / portTICK_PERIOD_MS ), /* Timer period. */ - pdTRUE, /* Autor-reload. */ - ( void * ) uipARP_TIMER, - prvUIPTimerCallback - ); - - xPeriodicTimer = xTimerCreate( "PeriodicTimer", - ( 500UL / portTICK_PERIOD_MS ), - pdTRUE, /* Autor-reload. */ - ( void * ) uipPERIODIC_TIMER, - prvUIPTimerCallback - ); - - /* Sanity check that the timers were indeed created. */ - configASSERT( xARPTimer ); - configASSERT( xPeriodicTimer ); - - /* These commands will block indefinitely until they succeed, so there is - no point in checking their return values. */ - xTimerStart( xARPTimer, portMAX_DELAY ); - xTimerStart( xPeriodicTimer, portMAX_DELAY ); -} -/*-----------------------------------------------------------*/ - -static void prvEMACEventListener( unsigned long ulISREvents ) -{ -long lHigherPriorityTaskWoken = pdFALSE; -const unsigned long ulRxEvent = uipETHERNET_RX_EVENT; - - /* Sanity check that the event queue was indeed created. */ - configASSERT( xEMACEventQueue ); - - if( ( ulISREvents & MSS_MAC_EVENT_PACKET_SEND ) != 0UL ) - { - /* An Ethernet Tx event has occurred. */ - MSS_MAC_FreeTxBuffers(); - } - - if( ( ulISREvents & MSS_MAC_EVENT_PACKET_RECEIVED ) != 0UL ) - { - /* An Ethernet Rx event has occurred. */ - xQueueSendFromISR( xEMACEventQueue, &ulRxEvent, &lHigherPriorityTaskWoken ); - } - - portEND_SWITCHING_ISR( lHigherPriorityTaskWoken ); -} -/*-----------------------------------------------------------*/ - -static void prvInitEmac( void ) -{ -const unsigned char ucPHYAddress = 1; - - /* Initialise the MAC and PHY hardware. */ - MSS_MAC_init( ucPHYAddress ); - - /* Register the event listener. The Ethernet interrupt handler will call - this listener whenever an Rx or a Tx interrupt occurs. */ - MSS_MAC_set_callback( ( MSS_MAC_callback_t ) prvEMACEventListener ); - - /* Setup the EMAC and the NVIC for MAC interrupts. */ - NVIC_SetPriority( EthernetMAC_IRQn, configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY ); - NVIC_EnableIRQ( EthernetMAC_IRQn ); -} -/*-----------------------------------------------------------*/ - -void vEMACWrite( void ) -{ -const long lMaxAttempts = 10; -long lAttempt; -const TickType_t xShortDelay = ( 5 / portTICK_PERIOD_MS ); - - /* Try to send data to the Ethernet. Keep trying for a while if data cannot - be sent immediately. Note that this will actually cause the data to be sent - twice to get around delayed ACK problems when communicating with non real- - time TCP/IP stacks (such as a Windows machine). */ - for( lAttempt = 0; lAttempt < lMaxAttempts; lAttempt++ ) - { - if( MSS_MAC_tx_packet( uip_len ) != 0 ) - { - break; - } - else - { - vTaskDelay( xShortDelay ); - } - } -} -/*-----------------------------------------------------------*/ - -static void prvUIPTimerCallback( TimerHandle_t xTimer ) -{ -static const unsigned long ulARPTimerExpired = uipARP_TIMER_EVENT; -static const unsigned long ulPeriodicTimerExpired = uipPERIODIC_TIMER_EVENT; - - /* This is a time callback, so calls to xQueueSend() must not attempt to - block. As this callback is assigned to both the ARP and Periodic timers, the - first thing to do is ascertain which timer it was that actually expired. */ - switch( ( int ) pvTimerGetTimerID( xTimer ) ) - { - case uipARP_TIMER : xQueueSend( xEMACEventQueue, &ulARPTimerExpired, uipDONT_BLOCK ); - break; - - case uipPERIODIC_TIMER : xQueueSend( xEMACEventQueue, &ulPeriodicTimerExpired, uipDONT_BLOCK ); - break; - - default : /* Should not get here. */ - break; - } -} -/*-----------------------------------------------------------*/ - -void vApplicationProcessFormInput( char *pcInputString ) -{ -char *c; - - /* Only interested in processing form input if this is the IO page. */ - c = strstr( pcInputString, "io.shtml" ); - - if( c ) - { - /* Is there a command in the string? */ - c = strstr( pcInputString, "?" ); - if( c ) - { - /* Turn the LED's on or off in accordance with the check box status. */ - if( strstr( c, "LED0=1" ) != NULL ) - { - /* Turn the LEDs on. */ - vParTestSetLED( 3, 1 ); - vParTestSetLED( 4, 1 ); - } - else - { - /* Turn the LEDs off. */ - vParTestSetLED( 3, 0 ); - vParTestSetLED( 4, 0 ); - } - } - else - { - /* Commands to turn LEDs off are not always explicit. */ - vParTestSetLED( 3, 0 ); - vParTestSetLED( 4, 0 ); - } - } -} -/*-----------------------------------------------------------*/ diff --git a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/FreeRTOSConfig.h b/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/FreeRTOSConfig.h deleted file mode 100644 index 53cc52fc2..000000000 --- a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/FreeRTOSConfig.h +++ /dev/null @@ -1,163 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - - -#ifndef FREERTOS_CONFIG_H -#define FREERTOS_CONFIG_H - -/*----------------------------------------------------------- - * Application specific definitions. - * - * These definitions should be adjusted for your particular hardware and - * application requirements. - * - * THESE PARAMETERS ARE DESCRIBED WITHIN THE 'CONFIGURATION' SECTION OF THE - * FreeRTOS API DOCUMENTATION AVAILABLE ON THE FreeRTOS.org WEB SITE. - * - * See http://www.freertos.org/a00110.html - *----------------------------------------------------------*/ - -#define configUSE_PREEMPTION 1 -#define configUSE_IDLE_HOOK 1 -#define configUSE_TICK_HOOK 1 -#define configCPU_CLOCK_HZ ( 96000000UL ) -#define configTICK_RATE_HZ ( ( TickType_t ) 1000 ) -#define configMAX_PRIORITIES ( 5 ) -#define configMINIMAL_STACK_SIZE ( ( unsigned short ) 90 ) -#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 30 * 1024 ) ) -#define configMAX_TASK_NAME_LEN ( 10 ) -#define configUSE_TRACE_FACILITY 1 -#define configUSE_16_BIT_TICKS 0 -#define configIDLE_SHOULD_YIELD 1 -#define configUSE_MUTEXES 1 -#define configQUEUE_REGISTRY_SIZE 8 -#define configCHECK_FOR_STACK_OVERFLOW 2 -#define configUSE_RECURSIVE_MUTEXES 1 -#define configUSE_MALLOC_FAILED_HOOK 1 -#define configUSE_APPLICATION_TASK_TAG 0 -#define configUSE_COUNTING_SEMAPHORES 1 - -/* Co-routine definitions. */ -#define configUSE_CO_ROUTINES 0 -#define configMAX_CO_ROUTINE_PRIORITIES ( 2 ) - -/* Software timer definitions. */ -#define configUSE_TIMERS 1 -#define configTIMER_TASK_PRIORITY ( 2 ) -#define configTIMER_QUEUE_LENGTH 10 -#define configTIMER_TASK_STACK_DEPTH ( configMINIMAL_STACK_SIZE * 2 ) - -/* Set the following definitions to 1 to include the API function, or zero -to exclude the API function. */ -#define INCLUDE_vTaskPrioritySet 1 -#define INCLUDE_uxTaskPriorityGet 1 -#define INCLUDE_vTaskDelete 1 -#define INCLUDE_vTaskCleanUpResources 1 -#define INCLUDE_vTaskSuspend 1 -#define INCLUDE_vTaskDelayUntil 1 -#define INCLUDE_vTaskDelay 1 - -/* This demo makes use of one or more example stats formatting functions. These -format the raw data provided by the uxTaskGetSystemState() function in to human -readable ASCII form. See the notes in the implementation of vTaskList() within -FreeRTOS/Source/tasks.c for limitations. */ -#define configUSE_STATS_FORMATTING_FUNCTIONS 1 - -/* Run time stats gathering definitions. */ -#ifdef __ICCARM__ - /* The #ifdef just prevents this C specific syntax from being included in - assembly files. */ - void vMainConfigureTimerForRunTimeStats( void ); - unsigned long ulMainGetRunTimeCounterValue( void ); -#endif -#define configGENERATE_RUN_TIME_STATS 1 -#define portCONFIGURE_TIMER_FOR_RUN_TIME_STATS() vMainConfigureTimerForRunTimeStats() -#define portGET_RUN_TIME_COUNTER_VALUE() ulMainGetRunTimeCounterValue() - -/* Cortex-M specific definitions. */ -#ifdef __NVIC_PRIO_BITS - /* __BVIC_PRIO_BITS will be specified when CMSIS is being used. */ - #define configPRIO_BITS __NVIC_PRIO_BITS -#else - #define configPRIO_BITS 4 /* 15 priority levels */ -#endif - -/* The lowest interrupt priority that can be used in a call to a "set priority" -function. */ -#define configLIBRARY_LOWEST_INTERRUPT_PRIORITY 0xf - -/* The highest interrupt priority that can be used by any interrupt service -routine that makes calls to interrupt safe FreeRTOS API functions. DO NOT CALL -INTERRUPT SAFE FREERTOS API FUNCTIONS FROM ANY INTERRUPT THAT HAS A HIGHER -PRIORITY THAN THIS! (higher priorities are lower numeric values. */ -#define configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY 5 - -/* Interrupt priorities used by the kernel port layer itself. These are generic -to all Cortex-M ports, and do not rely on any particular library functions. */ -#define configKERNEL_INTERRUPT_PRIORITY ( configLIBRARY_LOWEST_INTERRUPT_PRIORITY << (8 - configPRIO_BITS) ) -/* !!!! configMAX_SYSCALL_INTERRUPT_PRIORITY must not be set to zero !!!! -See http://www.FreeRTOS.org/RTOS-Cortex-M3-M4.html. */ -#define configMAX_SYSCALL_INTERRUPT_PRIORITY ( configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY << (8 - configPRIO_BITS) ) - -/* Normal assert() semantics without relying on the provision of an assert.h -header file. */ -#define configASSERT( x ) if( ( x ) == 0 ) { taskDISABLE_INTERRUPTS(); for( ;; ); } - -/* Definitions that map the FreeRTOS port interrupt handlers to their CMSIS -standard names. */ -#define vPortSVCHandler SVC_Handler -#define xPortPendSVHandler PendSV_Handler -#define xPortSysTickHandler SysTick_Handler - -/****************************************************************************** - * Network configuration constants follow from here. - *****************************************************************************/ - -/* MAC address configuration. */ -#define configMAC_ADDR0 0x00 -#define configMAC_ADDR1 0x12 -#define configMAC_ADDR2 0x13 -#define configMAC_ADDR3 0x10 -#define configMAC_ADDR4 0x15 -#define configMAC_ADDR5 0x11 - -/* IP address configuration. */ -#define configIP_ADDR0 192 -#define configIP_ADDR1 168 -#define configIP_ADDR2 0 -#define configIP_ADDR3 200 - -/* Netmask configuration. */ -#define configNET_MASK0 255 -#define configNET_MASK1 255 -#define configNET_MASK2 255 -#define configNET_MASK3 0 - -#define configPHY_ADDRESS 1 - -#endif /* FREERTOS_CONFIG_H */ - diff --git a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/common/512KB_Pflash.icf b/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/common/512KB_Pflash.icf deleted file mode 100644 index b8a5c84af..000000000 --- a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/common/512KB_Pflash.icf +++ /dev/null @@ -1,48 +0,0 @@ -/*###ICF### Section handled by ICF editor, don't touch! ****/ -/*-Editor annotation file-*/ -/* IcfEditorFile="$TOOLKIT_DIR$\config\ide\IcfEditor\cortex_v1_0.xml" */ -/*-Specials-*/ -define symbol __ICFEDIT_intvec_start__ = 0x00000000; -/*-Memory Regions-*/ -define symbol __ICFEDIT_region_ROM_start__ = 0x00000000; -define symbol __ICFEDIT_region_ROM_end__ = 0x00080000; -define symbol __ICFEDIT_region_RAM_start__ = 0x1FFF0410; -define symbol __ICFEDIT_region_RAM_end__ = 0x20000000; -/*-Sizes-*/ -define symbol __ICFEDIT_size_cstack__ = 0x1000; -define symbol __ICFEDIT_size_heap__ = 0x200; -/**** End of ICF editor section. ###ICF###*/ - -define symbol __region_RAM2_start__ = 0x20000000; -define symbol __region_RAM2_end__ = 0x20010000; - -define exported symbol __VECTOR_TABLE = 0x00000000; -define exported symbol __VECTOR_RAM = 0x1fff0000; - -define exported symbol __BOOT_STACK_ADDRESS = __region_RAM2_end__ - 8; //0x2000FFF8; - -define symbol __code_start__ = 0x00000410; - -define memory mem with size = 4G; -define region ROM_region = mem:[from __ICFEDIT_region_ROM_start__ to __ICFEDIT_region_ROM_end__]; -define region RAM_region = mem:[from __ICFEDIT_region_RAM_start__ to __ICFEDIT_region_RAM_end__] | mem:[from __region_RAM2_start__ to __region_RAM2_end__]; - -define block CSTACK with alignment = 8, size = __ICFEDIT_size_cstack__ { }; -define block HEAP with alignment = 8, size = __ICFEDIT_size_heap__ { }; - -initialize manually { readwrite }; -initialize manually { section .data}; -initialize manually { section .textrw }; -do not initialize { section .noinit }; - -define block CodeRelocate { section .textrw_init }; -define block CodeRelocateRam { section .textrw }; - -place at address mem:__ICFEDIT_intvec_start__ { readonly section .intvec }; -place at address mem:__code_start__ { readonly section .noinit }; - -place in ROM_region { readonly, block CodeRelocate}; - -place in RAM_region { readwrite, block CodeRelocateRam, - block CSTACK, block HEAP }; - \ No newline at end of file diff --git a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/common/assert.h b/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/common/assert.h deleted file mode 100644 index afcca5ee8..000000000 --- a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/common/assert.h +++ /dev/null @@ -1,25 +0,0 @@ -/* - * File: assert.h - * Purpose: Provide macro for software assertions - * - * Notes: assert_failed() defined in assert.c - */ - -#ifndef _ASSERT_H_ -#define _ASSERT_H_ - -/********************************************************************/ - -void assert_failed(char *, int); - -#ifdef DEBUG_PRINT -#define ASSERT(expr) \ - if (!(expr)) \ - assert_failed(__FILE__, __LINE__) -#else -#define ASSERT(expr) -#endif - -/********************************************************************/ -#endif /* _ASSERT_H_ */ - diff --git a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/common/common.h b/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/common/common.h deleted file mode 100644 index c4265cc83..000000000 --- a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/common/common.h +++ /dev/null @@ -1,76 +0,0 @@ -/* - * File: common.h - * Purpose: File to be included by all project files - * - * Notes: - */ - -#ifndef _COMMON_H_ -#define _COMMON_H_ - -/********************************************************************/ - -/* - * Debug prints ON (#define) or OFF (#undef) - */ -#define DEBUG -#define DEBUG_PRINT - -/* - * Include the generic CPU header file - */ -#include "arm_cm4.h" - -/* - * Include the platform specific header file - */ -#if (defined(TWR_K40X256)) - #include "k40_tower.h" -#elif (defined(TWR_K53N512)) - #include "k53_tower.h" -#elif (defined(TWR_K60N512)) - #include "k60_tower.h" -#else - #error "No valid platform defined" -#endif - -/* - * Include the cpu specific header file - */ -#if (defined(CPU_MK40N512VMD100)) - #include -#elif (defined(CPU_MK53N512VMD100)) - #include -#elif (defined(CPU_MK60N512VMD100)) - #include -#else - #error "No valid CPU defined" -#endif - - -/* - * Include any toolchain specfic header files - */ -#if (defined(CW)) - #include "cw.h" -#elif (defined(IAR)) - #include "iar.h" -#else -#warning "No toolchain specific header included" -#endif - -/* - * Include common utilities - */ -#include "assert.h" -#include "io.h" -#include "startup.h" -#include "stdlib.h" - -#if (defined(IAR)) - #include "intrinsics.h" -#endif - -/********************************************************************/ - -#endif /* _COMMON_H_ */ diff --git a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/common/iar.h b/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/common/iar.h deleted file mode 100644 index 884915657..000000000 --- a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/common/iar.h +++ /dev/null @@ -1,16 +0,0 @@ -/* - * File: iar.h - * Purpose: Define constants used by IAR toolchain - * - * Notes: - * - */ - -#ifndef _IAR_H_ -#define _IAR_H_ - -/********************************************************************/ - -/********************************************************************/ - -#endif /* _IAR_H_ */ diff --git a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/common/io.h b/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/common/io.h deleted file mode 100644 index 7b95595d5..000000000 --- a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/common/io.h +++ /dev/null @@ -1,29 +0,0 @@ -/* - * File: io.h - * Purpose: Serial Input/Output routines - * - */ - -#ifndef _IO_H -#define _IO_H - -/********************************************************************/ - -char -in_char(void); - -void -out_char(char); - -int -char_present(void); - -int -printf(const char *, ... ); - -int -sprintf(char *, const char *, ... ); - -/********************************************************************/ - -#endif diff --git a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/common/queue.h b/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/common/queue.h deleted file mode 100644 index b8d53e905..000000000 --- a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/common/queue.h +++ /dev/null @@ -1,53 +0,0 @@ -/* - * File: queue.h - * Purpose: Implement a first in, first out linked list - * - * Notes: - */ - -#ifndef _QUEUE_H_ -#define _QUEUE_H_ - -/********************************************************************/ - -/* - * Individual queue node - */ -typedef struct NODE -{ - struct NODE *next; -} QNODE; - -/* - * Queue Struture - linked list of qentry items - */ -typedef struct -{ - QNODE *head; - QNODE *tail; -} QUEUE; - -/* - * Functions provided by queue.c - */ -void -queue_init(QUEUE *); - -int -queue_isempty(QUEUE *); - -void -queue_add(QUEUE *, QNODE *); - -QNODE* -queue_remove(QUEUE *); - -QNODE* -queue_peek(QUEUE *); - -void -queue_move(QUEUE *, QUEUE *); - -/********************************************************************/ - -#endif /* _QUEUE_H_ */ diff --git a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/common/startup.c b/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/common/startup.c deleted file mode 100644 index 0e1ba1f2c..000000000 --- a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/common/startup.c +++ /dev/null @@ -1,93 +0,0 @@ -/* - * File: startup.c - * Purpose: Generic Kinetis startup code - * - * Notes: - */ - -#include "common.h" - -#if (defined(IAR)) - #pragma section = ".data" - #pragma section = ".data_init" - #pragma section = ".bss" - #pragma section = "CodeRelocate" - #pragma section = "CodeRelocateRam" -#endif - -/********************************************************************/ -void -common_startup(void) -{ - -#if (defined(CW)) - extern char __START_BSS[]; - extern char __END_BSS[]; - extern uint32 __DATA_ROM[]; - extern uint32 __DATA_RAM[]; - extern char __DATA_END[]; -#endif - - /* Declare a counter we'll use in all of the copy loops */ - uint32 n; - - /* Declare pointers for various data sections. These pointers - * are initialized using values pulled in from the linker file - */ - uint8 * data_ram, * data_rom, * data_rom_end; - uint8 * bss_start, * bss_end; - - - /* Get the addresses for the .data section (initialized data section) */ - #if (defined(CW)) - data_ram = (uint8 *)__DATA_RAM; - data_rom = (uint8 *)__DATA_ROM; - data_rom_end = (uint8 *)__DATA_END; /* This is actually a RAM address in CodeWarrior */ - n = data_rom_end - data_ram; - #elif (defined(IAR)) - data_ram = __section_begin(".data"); - data_rom = __section_begin(".data_init"); - data_rom_end = __section_end(".data_init"); - n = data_rom_end - data_rom; - #endif - - /* Copy initialized data from ROM to RAM */ - while (n--) - *data_ram++ = *data_rom++; - - - /* Get the addresses for the .bss section (zero-initialized data) */ - #if (defined(CW)) - bss_start = (uint8 *)__START_BSS; - bss_end = (uint8 *)__END_BSS; - #elif (defined(IAR)) - bss_start = __section_begin(".bss"); - bss_end = __section_end(".bss"); - #endif - - - - - /* Clear the zero-initialized data section */ - n = bss_end - bss_start; - while(n--) - *bss_start++ = 0; - - /* Get addresses for any code sections that need to be copied from ROM to RAM. - * The IAR tools have a predefined keyword that can be used to mark individual - * functions for execution from RAM. Add "__ramfunc" before the return type in - * the function prototype for any routines you need to execute from RAM instead - * of ROM. ex: __ramfunc void foo(void); - */ - #if (defined(IAR)) - uint8* code_relocate_ram = __section_begin("CodeRelocateRam"); - uint8* code_relocate = __section_begin("CodeRelocate"); - uint8* code_relocate_end = __section_end("CodeRelocate"); - - /* Copy functions from ROM to RAM */ - n = code_relocate_end - code_relocate; - while (n--) - *code_relocate_ram++ = *code_relocate++; - #endif -} -/********************************************************************/ diff --git a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/common/startup.h b/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/common/startup.h deleted file mode 100644 index 8fc5bfae7..000000000 --- a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/common/startup.h +++ /dev/null @@ -1,17 +0,0 @@ -/* - * File: startup.h - * Purpose: Determine cause of Reset and which processor is running - * - * Notes: - */ - -#ifndef _STARTUP_H_ -#define _STARTUP_H_ - -/********************************************************************/ - -void common_startup(void); - -/********************************************************************/ - -#endif /* _STARTUP_H_ */ diff --git a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/cpu/arm_cm4.c b/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/cpu/arm_cm4.c deleted file mode 100644 index cda275572..000000000 --- a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/cpu/arm_cm4.c +++ /dev/null @@ -1,156 +0,0 @@ -/* - * File: arm_cm4.c - * Purpose: Generic high-level routines for ARM Cortex M4 processors - * - * Notes: - */ - -#include "common.h" - -/***********************************************************************/ -/* - * Configures the ARM system control register for STOP (deep sleep) mode - * and then executes the WFI instruction to enter the mode. - * - * Parameters: - * none - * - * Note: Might want to change this later to allow for passing in a parameter - * to optionally set the sleep on exit bit. - */ - -void stop (void) -{ - /* Set the SLEEPDEEP bit to enable deep sleep mode (STOP) */ - SCB_SCR |= SCB_SCR_SLEEPDEEP_MASK; - - /* WFI instruction will start entry into STOP mode */ - asm("WFI"); -} -/***********************************************************************/ -/* - * Configures the ARM system control register for WAIT (sleep) mode - * and then executes the WFI instruction to enter the mode. - * - * Parameters: - * none - * - * Note: Might want to change this later to allow for passing in a parameter - * to optionally set the sleep on exit bit. - */ - -void wait (void) -{ - /* Clear the SLEEPDEEP bit to make sure we go into WAIT (sleep) mode instead - * of deep sleep. - */ - SCB_SCR &= ~SCB_SCR_SLEEPDEEP_MASK; - - /* WFI instruction will start entry into WAIT mode */ - asm("WFI"); -} -/***********************************************************************/ -/* - * Change the value of the vector table offset register to the specified value. - * - * Parameters: - * vtor new value to write to the VTOR - */ - -void write_vtor (int vtor) -{ - /* Write the VTOR with the new value */ - SCB_VTOR = vtor; -} -/***********************************************************************/ -/* - * Initialize the NVIC to enable the specified IRQ. - * - * NOTE: The function only initializes the NVIC to enable a single IRQ. - * Interrupts will also need to be enabled in the ARM core. This can be - * done using the EnableInterrupts macro. - * - * Parameters: - * irq irq number to be enabled (the irq number NOT the vector number) - */ - -void enable_irq (int irq) -{ - int div; - - /* Determine which of the NVICISERs corresponds to the irq */ - div = irq/32; - - switch (div) - { - case 0x0: - NVICICPR0 = 1 << (irq%32); - NVICISER0 = 1 << (irq%32); - break; - case 0x1: - NVICICPR1 = 1 << (irq%32); - NVICISER1 = 1 << (irq%32); - break; - case 0x2: - NVICICPR2 = 1 << (irq%32); - NVICISER2 = 1 << (irq%32); - break; - } -} -/***********************************************************************/ -/* - * Initialize the NVIC to disable the specified IRQ. - * - * NOTE: The function only initializes the NVIC to disable a single IRQ. - * If you want to disable all interrupts, then use the DisableInterrupts - * macro instead. - * - * Parameters: - * irq irq number to be disabled (the irq number NOT the vector number) - */ - -void disable_irq (int irq) -{ - int div; - - /* Determine which of the NVICICERs corresponds to the irq */ - div = irq/32; - - switch (div) - { - case 0x0: - NVICICER0 = 1 << (irq%32); - break; - case 0x1: - NVICICER1 = 1 << (irq%32); - break; - case 0x2: - NVICICER2 = 1 << (irq%32); - break; - } -} -/***********************************************************************/ -/* - * Initialize the NVIC to set specified IRQ priority. - * - * NOTE: The function only initializes the NVIC to set a single IRQ priority. - * Interrupts will also need to be enabled in the ARM core. This can be - * done using the EnableInterrupts macro. - * - * Parameters: - * irq irq number to be enabled (the irq number NOT the vector number) - * prio irq priority. 0-15 levels. 0 max priority - */ - -void set_irq_priority (int irq, int prio) -{ - /*irq priority pointer*/ - uint8 *prio_reg; - - /* Determine which of the NVICIPx corresponds to the irq */ - prio_reg = (uint8 *)(((uint32)&NVICIP0) + irq); - /* Assign priority to IRQ */ - *prio_reg = ( (prio&0xF) << (8 - ARM_INTERRUPT_LEVEL_BITS) ); -} -/***********************************************************************/ - diff --git a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/cpu/arm_cm4.h b/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/cpu/arm_cm4.h deleted file mode 100644 index 84ad25eb1..000000000 --- a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/cpu/arm_cm4.h +++ /dev/null @@ -1,87 +0,0 @@ -/* - * File: arm_cm4.h - * Purpose: Definitions common to all ARM Cortex M4 processors - * - * Notes: - */ - -#ifndef _CPU_ARM_CM4_H -#define _CPU_ARM_CM4_H - -#include "common.h" - -/*ARM Cortex M4 implementation for interrupt priority shift*/ -#define ARM_INTERRUPT_LEVEL_BITS 4 - -/***********************************************************************/ -// function prototypes for arm_cm4.c -void stop (void); -void wait (void); -void write_vtor (int); -void enable_irq (int); -void disable_irq (int); -void set_irq_priority (int, int); - -/***********************************************************************/ - /*!< Macro to enable all interrupts. */ -#define EnableInterrupts asm(" CPSIE i"); - - /*!< Macro to disable all interrupts. */ -#define DisableInterrupts asm(" CPSID i"); -/***********************************************************************/ - - -/* - * Misc. Defines - */ -#ifdef FALSE -#undef FALSE -#endif -#define FALSE (0) - -#ifdef TRUE -#undef TRUE -#endif -#define TRUE (1) - -#ifdef NULL -#undef NULL -#endif -#define NULL (0) - -#ifdef ON -#undef ON -#endif -#define ON (1) - -#ifdef OFF -#undef OFF -#endif -#define OFF (0) - -/***********************************************************************/ -/* - * The basic data types - */ -typedef unsigned char uint8; /* 8 bits */ -typedef unsigned short int uint16; /* 16 bits */ -typedef unsigned long int uint32; /* 32 bits */ - -typedef char int8; /* 8 bits */ -typedef short int int16; /* 16 bits */ -typedef int int32; /* 32 bits */ - -typedef volatile int8 vint8; /* 8 bits */ -typedef volatile int16 vint16; /* 16 bits */ -typedef volatile int32 vint32; /* 32 bits */ - -typedef volatile uint8 vuint8; /* 8 bits */ -typedef volatile uint16 vuint16; /* 16 bits */ -typedef volatile uint32 vuint32; /* 32 bits */ - -// function prototype for main function -void main(void); - -/***********************************************************************/ -#endif /* _CPU_ARM_CM4_H */ - diff --git a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/cpu/crt0.s b/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/cpu/crt0.s deleted file mode 100644 index bc2ec885c..000000000 --- a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/cpu/crt0.s +++ /dev/null @@ -1,36 +0,0 @@ -/* - * File: crt0.s - * Purpose: Lowest level routines for Kinetis. - * - * Notes: - * - */ - -; AREA Crt0, CODE, READONLY ; name this block of code - - - - SECTION .noinit : CODE - EXPORT __startup -__startup - - MOV r0,#0 ; Initialize the GPRs - MOV r1,#0 - MOV r2,#0 - MOV r3,#0 - MOV r4,#0 - MOV r5,#0 - MOV r6,#0 - MOV r7,#0 - MOV r8,#0 - MOV r9,#0 - MOV r10,#0 - MOV r11,#0 - MOV r12,#0 - import start - BL start ; call the C code -__done - B __done - - - END diff --git a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/cpu/dma_channels.h b/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/cpu/dma_channels.h deleted file mode 100644 index 19f4fccd1..000000000 --- a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/cpu/dma_channels.h +++ /dev/null @@ -1,121 +0,0 @@ -/* - * File: dma_channels.h - * Purpose: DMA request macros for use on Kinetis processors. - * This file gives default DMA channel assignments - * for all of the possible Kinetis module DMA requests. - * - * - * Notes: There are more DMA requests than DMA channels, so - * care should be taken to make sure that DMA channel - * assignments are unique for the modules that are - * being used at any time. - */ - -#ifndef _DMA_CHANNELS_H -#define _DMA_CHANNELS_H - -/********************************************************************/ -/* NOTE: There are more DMA requests than DMA channels, so - * care should be taken to make sure that DMA channel - * assignments are unique for the modules that are - * being used at any time. - * - * It is recommended that you read the appropriate DMAMUX_CHCFGn - * register before updating it to verify it is 0x0. If the - * DMAMUX_CHCFGn register is not zero, then that indicates the - * selected DMA channel might already be in use by another peripheral - * (a more specific test would be to look for DMAMUX_CHCFGn[ENBL] set). - * The module's DMA configuration routine can return an error - * when this situation is detected. - */ - - -/* Default DMA channel assignments and module request macros */ - -/* UARTs */ -#define DMA_UART0RX_CH 0 -#define DMA_UART0TX_CH 1 - -#define DMA_UART1RX_CH 2 -#define DMA_UART1TX_CH 3 - -#define DMA_UART2RX_CH 10 -#define DMA_UART2TX_CH 11 - -#define DMA_UART3RX_CH 12 -#define DMA_UART3TX_CH 13 - -#define DMA_UART4RX_CH 6 -#define DMA_UART4TX_CH 7 - -#define DMA_UART5RX_CH 8 -#define DMA_UART5TX_CH 9 - -/* SSI/SAI */ -#define DMA_SSI0RX_CH 4 -#define DMA_SSI0TX_CH 5 - -/* DSPIs */ -#define DMA_DSPI0RX_CH 6 -#define DMA_DSPI0TX_CH 7 - -#define DMA_DSPI1RX_CH 8 -#define DMA_DSPI1TX_CH 9 - -#define DMA_DSPI2RX_CH 14 -#define DMA_DSPI2TX_CH 15 - -/* I2Cs */ -#define DMA_I2C0_CH 7 -#define DMA_I2C1_CH 2 - -/* FTMs */ -#define DMA_FTM0CH0_CH 5 -#define DMA_FTM0CH1_CH 6 -#define DMA_FTM0CH2_CH 3 -#define DMA_FTM0CH3_CH 4 -#define DMA_FTM0CH4_CH 12 -#define DMA_FTM0CH5_CH 13 -#define DMA_FTM0CH6_CH 14 -#define DMA_FTM0CH7_CH 15 - -#define DMA_FTM1CH0_CH 10 -#define DMA_FTM1CH1_CH 11 - -#define DMA_FTM2CH0_CH 0 -#define DMA_FTM2CH1_CH 1 - -/* Ethernet timers */ -#define DMA_ENETTMR0_CH 4 -#define DMA_ENETTMR1_CH 8 -#define DMA_ENETTMR2_CH 0 -#define DMA_ENETTMR3_CH 15 - -/* ADCs */ -#define DMA_ADC0_CH 12 -#define DMA_ADC1_CH 3 - -/* HSCMPs */ -#define DMA_HSCMP0_CH 13 -#define DMA_HSCMP1_CH 2 -#define DMA_HSCMP2_CH 9 - -/* 12-bit DAC */ -#define DMA_12bDAC0_CH 14 - -/* CMT */ -#define DMA_CMT_CH 5 - -/* PDB */ -#define DMA_PDB_CH 10 - -/* GPIO Ports */ -#define DMA_GPIOPORTA_CH 15 -#define DMA_GPIOPORTB_CH 0 -#define DMA_GPIOPORTC_CH 1 -#define DMA_GPIOPORTD_CH 11 -#define DMA_GPIOPORTE_CH 8 - -/********************************************************************/ - -#endif /* _DMA_CHANNELS_H */ diff --git a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/cpu/k60_tower.h b/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/cpu/k60_tower.h deleted file mode 100644 index 84e39e43b..000000000 --- a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/cpu/k60_tower.h +++ /dev/null @@ -1,57 +0,0 @@ -/* - * File: k60_tower.h - * Purpose: Definitions for the Kinetis K60 tower card - * - * Notes: - */ - -#ifndef __K60_TOWER_H__ -#define __K60_TOWER_H__ - -#include "mcg.h" - -/********************************************************************/ - -/* Global defines to use for all boards */ -#define DEBUG_PRINT - - - -/* Defines specific to the K60 tower board */ - - -/* Define for the CPU on the K60 board */ -#define CPU_MK60N512VMD100 - -/* - * System Bus Clock Info - */ -#define K60_CLK 1 -#define REF_CLK XTAL8 /* value isn't used, but we still need something defined */ -#define CORE_CLK_MHZ PLL96 /* 96MHz is only freq tested for a clock input*/ - -/* - * Serial Port Info - */ - -/* - * Select the serial port that is being used below. Only one of the - * options should be uncommented at any time. - */ -//#define SERIAL_CARD // use this option for serial port on TWR-SER -#define OSJTAG // use this option for serial port over the OS-JTAG circuit - -#if (defined(SERIAL_CARD)) - #define TERM_PORT UART3_BASE_PTR - #define TERMINAL_BAUD 115200 - #undef HW_FLOW_CONTROL -#elif (defined(OSJTAG)) - #define TERM_PORT UART5_BASE_PTR - #define TERMINAL_BAUD 115200 - #undef HW_FLOW_CONTROL -#else - #error "No valid serial port defined" -#endif - - -#endif /* __K60_TOWER_H__ */ diff --git a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/cpu/regfile.h b/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/cpu/regfile.h deleted file mode 100644 index cbbba8589..000000000 --- a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/cpu/regfile.h +++ /dev/null @@ -1,69 +0,0 @@ -/********************************************************************************/ -/* FILENAME RegisterFile.h */ -/* The current release of the documentation and header files does not include - * the system register file or the VBAT register file. This header file - * adds support for accessing both register files. - * - * Once the manual is updated to include the register files, this file - * will become obsolete. - */ -/********************************************************************************/ - -/* Register File - Peripheral instance base addresses */ -/* Peripheral System Register File base pointer */ -#define RFSYS_DATA_BASE_PTR ((RFDATA_MemMapPtr)0x40041000u) -/* Peripheral VBAT Register File base pointer */ -#define RFVBAT_DATA_BASE_PTR ((RFDATA_MemMapPtr)0x4003E000u) - - typedef struct RFDATA_MemMap { - uint32_t RFDATA [32]; /*!< Register file n, array offset: 0x0, array step: 0x4 */ - - -} volatile *RFDATA_MemMapPtr; - -/* ---------------------------------------------------------------------------- - -- Register file - Register accessor macros - ---------------------------------------------------------------------------- */ - -/* Register file - Register accessors */ -#define RFSYS_DATA_REG(base,index) ((base)->RFDATA[index]) -#define RFVBAT_DATA_REG(base,index) ((base)->RFDATA[index]) - -#define RFSYS_DATA0 RFSYS_DATA_REG(RFSYS_DATA_BASE_PTR,0 ) -#define RFSYS_DATA1 RFSYS_DATA_REG(RFSYS_DATA_BASE_PTR,1 ) -#define RFSYS_DATA2 RFSYS_DATA_REG(RFSYS_DATA_BASE_PTR,2 ) -#define RFSYS_DATA3 RFSYS_DATA_REG(RFSYS_DATA_BASE_PTR,3 ) -#define RFSYS_DATA4 RFSYS_DATA_REG(RFSYS_DATA_BASE_PTR,4 ) -#define RFSYS_DATA5 RFSYS_DATA_REG(RFSYS_DATA_BASE_PTR,5 ) -#define RFSYS_DATA6 RFSYS_DATA_REG(RFSYS_DATA_BASE_PTR,6 ) -#define RFSYS_DATA7 RFSYS_DATA_REG(RFSYS_DATA_BASE_PTR,7 ) - -#define RFVBAT_DATA0 RFVBAT_DATA_REG(RFVBAT_DATA_BASE_PTR,0 ) -#define RFVBAT_DATA1 RFVBAT_DATA_REG(RFVBAT_DATA_BASE_PTR,1 ) -#define RFVBAT_DATA2 RFVBAT_DATA_REG(RFVBAT_DATA_BASE_PTR,2 ) -#define RFVBAT_DATA3 RFVBAT_DATA_REG(RFVBAT_DATA_BASE_PTR,3 ) -#define RFVBAT_DATA4 RFVBAT_DATA_REG(RFVBAT_DATA_BASE_PTR,4 ) -#define RFVBAT_DATA5 RFVBAT_DATA_REG(RFVBAT_DATA_BASE_PTR,5 ) -#define RFVBAT_DATA6 RFVBAT_DATA_REG(RFVBAT_DATA_BASE_PTR,6 ) -#define RFVBAT_DATA7 RFVBAT_DATA_REG(RFVBAT_DATA_BASE_PTR,7 ) - - -/* LL Bit Fields */ -#define RF_DATA_LL_MASK 0x000000FFu -#define RF_DATA_LL_SHIFT 0 -#define RF_DATA_LL(x) (((x)<> 24)+ 1); - - /* For debugging purposes, enable the trace clock and/or FB_CLK so that - * we'll be able to monitor clocks and know the PLL is at the frequency - * that we expect. - */ - trace_clk_init(); - fb_clk_init(); - - /* Enable the pins for the selected UART */ - if (TERM_PORT == UART0_BASE_PTR) - { - /* Enable the UART0_TXD function on PTD6 */ - PORTD_PCR6 = PORT_PCR_MUX(0x3); // UART is alt3 function for this pin - - /* Enable the UART0_RXD function on PTD7 */ - PORTD_PCR7 = PORT_PCR_MUX(0x3); // UART is alt3 function for this pin - } - - if (TERM_PORT == UART1_BASE_PTR) - { - /* Enable the UART1_TXD function on PTC4 */ - PORTC_PCR4 = PORT_PCR_MUX(0x3); // UART is alt3 function for this pin - - /* Enable the UART1_RXD function on PTC3 */ - PORTC_PCR3 = PORT_PCR_MUX(0x3); // UART is alt3 function for this pin - } - - if (TERM_PORT == UART2_BASE_PTR) - { - /* Enable the UART2_TXD function on PTD3 */ - PORTD_PCR3 = PORT_PCR_MUX(0x3); // UART is alt3 function for this pin - - /* Enable the UART2_RXD function on PTD2 */ - PORTD_PCR2 = PORT_PCR_MUX(0x3); // UART is alt3 function for this pin - } - - if (TERM_PORT == UART3_BASE_PTR) - { - /* Enable the UART3_TXD function on PTC17 */ - PORTC_PCR17 = PORT_PCR_MUX(0x3); // UART is alt3 function for this pin - - /* Enable the UART3_RXD function on PTC16 */ - PORTC_PCR16 = PORT_PCR_MUX(0x3); // UART is alt3 function for this pin - } - if (TERM_PORT == UART4_BASE_PTR) - { - /* Enable the UART3_TXD function on PTC17 */ - PORTE_PCR24 = PORT_PCR_MUX(0x3); // UART is alt3 function for this pin - - /* Enable the UART3_RXD function on PTC16 */ - PORTE_PCR25 = PORT_PCR_MUX(0x3); // UART is alt3 function for this pin - } - if (TERM_PORT == UART5_BASE_PTR) - { - /* Enable the UART3_TXD function on PTC17 */ - PORTE_PCR8 = PORT_PCR_MUX(0x3); // UART is alt3 function for this pin - - /* Enable the UART3_RXD function on PTC16 */ - PORTE_PCR9 = PORT_PCR_MUX(0x3); // UART is alt3 function for this pin - } - /* UART0 and UART1 are clocked from the core clock, but all other UARTs are - * clocked from the peripheral clock. So we have to determine which clock - * to send to the uart_init function. - */ - if ((TERM_PORT == UART0_BASE_PTR) | (TERM_PORT == UART1_BASE_PTR)) - uart_init (TERM_PORT, core_clk_khz, TERMINAL_BAUD); - else - uart_init (TERM_PORT, periph_clk_khz, TERMINAL_BAUD); -} -/********************************************************************/ -void trace_clk_init(void) -{ - /* Set the trace clock to the core clock frequency */ - SIM_SOPT2 |= SIM_SOPT2_TRACECLKSEL_MASK; - - /* Enable the TRACE_CLKOUT pin function on PTA6 (alt7 function) */ - PORTA_PCR6 = ( PORT_PCR_MUX(0x7)); -} -/********************************************************************/ -void fb_clk_init(void) -{ - /* Enable the clock to the FlexBus module */ - SIM_SCGC7 |= SIM_SCGC7_FLEXBUS_MASK; - - /* Enable the FB_CLKOUT function on PTC3 (alt5 function) */ - PORTC_PCR3 = ( PORT_PCR_MUX(0x5)); -} -/********************************************************************/ diff --git a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/cpu/sysinit.h b/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/cpu/sysinit.h deleted file mode 100644 index f88b3171d..000000000 --- a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/cpu/sysinit.h +++ /dev/null @@ -1,17 +0,0 @@ -/* - * File: sysinit.h - * Purpose: Kinetis Configuration - * Initializes processor to a default state - * - * Notes: - * - */ - -/********************************************************************/ - -// function prototypes -void sysinit (void); -void trace_clk_init(void); -void fb_clk_init(void); -void enable_abort_button(void); -/********************************************************************/ diff --git a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/cpu/vectors.c b/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/cpu/vectors.c deleted file mode 100644 index 2312305df..000000000 --- a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/cpu/vectors.c +++ /dev/null @@ -1,306 +0,0 @@ -/****************************************************************************** -* File: vectors.c -* -* Purpose: Configure interrupt vector table for Kinetis. -******************************************************************************/ - -#include "vectors.h" -#include "common.h" - -/****************************************************************************** -* Vector Table -******************************************************************************/ -typedef void (*vector_entry)(void); - -#if defined(IAR) - #pragma location = ".intvec" - const vector_entry __vector_table[] = //@ ".intvec" = -#elif defined(CW) - #pragma define_section vectortable ".vectortable" ".vectortable" ".vectortable" far_abs R - #define VECTOR __declspec(vectortable) - const VECTOR vector_entry __vector_table[] = //@ ".intvec" = -#endif - -{ - VECTOR_000, /* Initial SP */ - VECTOR_001, /* Initial PC */ - VECTOR_002, - VECTOR_003, - VECTOR_004, - VECTOR_005, - VECTOR_006, - VECTOR_007, - VECTOR_008, - VECTOR_009, - VECTOR_010, - VECTOR_011, - VECTOR_012, - VECTOR_013, - VECTOR_014, - VECTOR_015, - - VECTOR_016, - VECTOR_017, - VECTOR_018, - VECTOR_019, - VECTOR_020, - VECTOR_021, - VECTOR_022, - VECTOR_023, - VECTOR_024, - VECTOR_025, - VECTOR_026, - VECTOR_027, - VECTOR_028, - VECTOR_029, - VECTOR_030, - VECTOR_031, - VECTOR_032, - VECTOR_033, - VECTOR_034, - VECTOR_035, - VECTOR_036, - VECTOR_037, - VECTOR_038, - VECTOR_039, - VECTOR_040, - VECTOR_041, - VECTOR_042, - VECTOR_043, - VECTOR_044, - VECTOR_045, - VECTOR_046, - VECTOR_047, - VECTOR_048, - VECTOR_049, - VECTOR_050, - VECTOR_051, - VECTOR_052, - VECTOR_053, - VECTOR_054, - VECTOR_055, - VECTOR_056, - VECTOR_057, - VECTOR_058, - VECTOR_059, - VECTOR_060, - VECTOR_061, - VECTOR_062, - VECTOR_063, - VECTOR_064, - VECTOR_065, - VECTOR_066, - VECTOR_067, - VECTOR_068, - VECTOR_069, - VECTOR_070, - VECTOR_071, - VECTOR_072, - VECTOR_073, - VECTOR_074, - VECTOR_075, - VECTOR_076, - VECTOR_077, - VECTOR_078, - VECTOR_079, - VECTOR_080, - VECTOR_081, - VECTOR_082, - VECTOR_083, - VECTOR_084, - VECTOR_085, - VECTOR_086, - VECTOR_087, - VECTOR_088, - VECTOR_089, - VECTOR_090, - VECTOR_091, - VECTOR_092, - VECTOR_093, - VECTOR_094, - VECTOR_095, - VECTOR_096, - VECTOR_097, - VECTOR_098, - VECTOR_099, - VECTOR_100, - VECTOR_101, - VECTOR_102, - VECTOR_103, - VECTOR_104, - VECTOR_105, - VECTOR_106, - VECTOR_107, - VECTOR_108, - VECTOR_109, - VECTOR_110, - VECTOR_111, - VECTOR_112, - VECTOR_113, - VECTOR_114, - VECTOR_115, - VECTOR_116, - VECTOR_117, - VECTOR_118, - VECTOR_119, - VECTOR_120, - VECTOR_121, - VECTOR_122, - VECTOR_123, - VECTOR_124, - VECTOR_125, - VECTOR_126, - VECTOR_127, - VECTOR_128, - VECTOR_129, - VECTOR_130, - VECTOR_131, - VECTOR_132, - VECTOR_133, - VECTOR_134, - VECTOR_135, - VECTOR_136, - VECTOR_137, - VECTOR_138, - VECTOR_139, - VECTOR_140, - VECTOR_141, - VECTOR_142, - VECTOR_143, - VECTOR_144, - VECTOR_145, - VECTOR_146, - VECTOR_147, - VECTOR_148, - VECTOR_149, - VECTOR_150, - VECTOR_151, - VECTOR_152, - VECTOR_153, - VECTOR_154, - VECTOR_155, - VECTOR_156, - VECTOR_157, - VECTOR_158, - VECTOR_159, - VECTOR_160, - VECTOR_161, - VECTOR_162, - VECTOR_163, - VECTOR_164, - VECTOR_165, - VECTOR_166, - VECTOR_167, - VECTOR_168, - VECTOR_169, - VECTOR_170, - VECTOR_171, - VECTOR_172, - VECTOR_173, - VECTOR_174, - VECTOR_175, - VECTOR_176, - VECTOR_177, - VECTOR_178, - VECTOR_179, - VECTOR_180, - VECTOR_181, - VECTOR_182, - VECTOR_183, - VECTOR_184, - VECTOR_185, - VECTOR_186, - VECTOR_187, - VECTOR_188, - VECTOR_189, - VECTOR_190, - VECTOR_191, - VECTOR_192, - VECTOR_193, - VECTOR_194, - VECTOR_195, - VECTOR_196, - VECTOR_197, - VECTOR_198, - VECTOR_199, - VECTOR_200, - VECTOR_201, - VECTOR_202, - VECTOR_203, - VECTOR_204, - VECTOR_205, - VECTOR_206, - VECTOR_207, - VECTOR_208, - VECTOR_209, - VECTOR_210, - VECTOR_211, - VECTOR_212, - VECTOR_213, - VECTOR_214, - VECTOR_215, - VECTOR_216, - VECTOR_217, - VECTOR_218, - VECTOR_219, - VECTOR_220, - VECTOR_221, - VECTOR_222, - VECTOR_223, - VECTOR_224, - VECTOR_225, - VECTOR_226, - VECTOR_227, - VECTOR_228, - VECTOR_229, - VECTOR_230, - VECTOR_231, - VECTOR_232, - VECTOR_233, - VECTOR_234, - VECTOR_235, - VECTOR_236, - VECTOR_237, - VECTOR_238, - VECTOR_239, - VECTOR_240, - VECTOR_241, - VECTOR_242, - VECTOR_243, - VECTOR_244, - VECTOR_245, - VECTOR_246, - VECTOR_247, - VECTOR_248, - VECTOR_249, - VECTOR_250, - VECTOR_251, - VECTOR_252, - VECTOR_253, - VECTOR_254, - VECTOR_255, - CONFIG_1, - CONFIG_2, - CONFIG_3, - CONFIG_4, - -}; -// VECTOR_TABLE end -/****************************************************************************** -* default_isr(void) -* -* Default ISR definition. -* -* In: n/a -* Out: n/a -******************************************************************************/ -//#if (defined(CW)) -//__declspec(interrupt) -//#endif - -void default_isr(void) -{ - for( ;; ); -} -/******************************************************************************/ -/* End of "vectors.c" */ diff --git a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/cpu/vectors.h b/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/cpu/vectors.h deleted file mode 100644 index f32c75f9f..000000000 --- a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/cpu/vectors.h +++ /dev/null @@ -1,304 +0,0 @@ -/****************************************************************************** -* File: vectors.h -* -* Purpose: Provide custom interrupt service routines for Kinetis. -* -* NOTE: This vector table is a superset table, so interrupt sources might be -* listed that are not available on the specific Kinetis device you are -* using. -******************************************************************************/ - -#ifndef __VECTORS_H -#define __VECTORS_H 1 - -/* The kernel interrupts - in their CMSIS form. */ -extern void SVC_Handler( void ); -extern void PendSV_Handler( void ); -extern void SysTick_Handler( void ); - -/* The button interrupt. */ -extern void vPort_E_ISRHandler( void ); - -/* Ethernet interrupt handlers. */ -void vEMAC_TxISRHandler( void ); -void vEMAC_RxISRHandler( void ); -void vEMAC_ErrorISRHandler( void ); - -// function prototype for default_isr in vectors.c -void default_isr(void); -void abort_isr(void); - -void hard_fault_handler_c(unsigned int * hardfault_args); - -/* Interrupt Vector Table Function Pointers */ -typedef void pointer(void); - -extern void __startup(void); - -extern unsigned long __BOOT_STACK_ADDRESS[]; -extern void __iar_program_start(void); - // Address Vector IRQ Source module Source description -#define VECTOR_000 (pointer*)__BOOT_STACK_ADDRESS // ARM core Initial Supervisor SP -#define VECTOR_001 __startup // 0x0000_0004 1 - ARM core Initial Program Counter -#define VECTOR_002 default_isr // 0x0000_0008 2 - ARM core Non-maskable Interrupt (NMI) -#define VECTOR_003 default_isr // 0x0000_000C 3 - ARM core Hard Fault -#define VECTOR_004 default_isr // 0x0000_0010 4 - -#define VECTOR_005 default_isr // 0x0000_0014 5 - ARM core Bus Fault -#define VECTOR_006 default_isr // 0x0000_0018 6 - ARM core Usage Fault -#define VECTOR_007 default_isr // 0x0000_001C 7 - -#define VECTOR_008 default_isr // 0x0000_0020 8 - -#define VECTOR_009 default_isr // 0x0000_0024 9 - -#define VECTOR_010 default_isr // 0x0000_0028 10 - -#define VECTOR_011 SVC_Handler // 0x0000_002C 11 - ARM core Supervisor call (SVCall) -#define VECTOR_012 default_isr // 0x0000_0030 12 - ARM core Debug Monitor -#define VECTOR_013 default_isr // 0x0000_0034 13 - -#define VECTOR_014 PendSV_Handler // 0x0000_0038 14 - ARM core Pendable request for system service (PendableSrvReq) -#define VECTOR_015 SysTick_Handler // 0x0000_003C 15 - ARM core System tick timer (SysTick) -#define VECTOR_016 default_isr // 0x0000_0040 16 0 DMA DMA Channel 0 transfer complete -#define VECTOR_017 default_isr // 0x0000_0044 17 1 DMA DMA Channel 1 transfer complete -#define VECTOR_018 default_isr // 0x0000_0048 18 2 DMA DMA Channel 2 transfer complete -#define VECTOR_019 default_isr // 0x0000_004C 19 3 DMA DMA Channel 3 transfer complete -#define VECTOR_020 default_isr // 0x0000_0050 20 4 DMA DMA Channel 4 transfer complete -#define VECTOR_021 default_isr // 0x0000_0054 21 5 DMA DMA Channel 5 transfer complete -#define VECTOR_022 default_isr // 0x0000_0058 22 6 DMA DMA Channel 6 transfer complete -#define VECTOR_023 default_isr // 0x0000_005C 23 7 DMA DMA Channel 7 transfer complete -#define VECTOR_024 default_isr // 0x0000_0060 24 8 DMA DMA Channel 8 transfer complete -#define VECTOR_025 default_isr // 0x0000_0064 25 9 DMA DMA Channel 9 transfer complete -#define VECTOR_026 default_isr // 0x0000_0068 26 10 DMA DMA Channel 10 transfer complete -#define VECTOR_027 default_isr // 0x0000_006C 27 11 DMA DMA Channel 11 transfer complete -#define VECTOR_028 default_isr // 0x0000_0070 28 12 DMA DMA Channel 12 transfer complete -#define VECTOR_029 default_isr // 0x0000_0074 29 13 DMA DMA Channel 13 transfer complete -#define VECTOR_030 default_isr // 0x0000_0078 30 14 DMA DMA Channel 14 transfer complete -#define VECTOR_031 default_isr // 0x0000_007C 31 15 DMA DMA Channel 15 transfer complete -#define VECTOR_032 default_isr // 0x0000_0080 32 16 DMA DMA Error Interrupt Channels 0-15 -#define VECTOR_033 default_isr // 0x0000_0084 33 17 MCM Normal interrupt -#define VECTOR_034 default_isr // 0x0000_0088 34 18 Flash memory Command Complete -#define VECTOR_035 default_isr // 0x0000_008C 35 19 Flash memory Read Collision -#define VECTOR_036 default_isr // 0x0000_0090 36 20 Mode Controller Low Voltage Detect,Low Voltage Warning, Low Leakage Wakeup -#define VECTOR_037 default_isr // 0x0000_0094 37 21 LLWU -#define VECTOR_038 default_isr // 0x0000_0098 38 22 WDOG -#define VECTOR_039 default_isr // 0x0000_009C 39 23 RNGB -#define VECTOR_040 default_isr // 0x0000_00A0 40 24 I2C0 -#define VECTOR_041 default_isr // 0x0000_00A4 41 25 I2C1 -#define VECTOR_042 default_isr // 0x0000_00A8 42 26 SPI0 Single interrupt vector for all sources -#define VECTOR_043 default_isr // 0x0000_00AC 43 27 SPI1 Single interrupt vector for all sources -#define VECTOR_044 default_isr // 0x0000_00B0 44 28 SPI2 Single interrupt vector for all sources -#define VECTOR_045 default_isr // 0x0000_00B4 45 29 CAN0 OR'ed Message buffer (0-15) -#define VECTOR_046 default_isr // 0x0000_00B8 46 30 CAN0 Bus Off -#define VECTOR_047 default_isr // 0x0000_00BC 47 31 CAN0 Error -#define VECTOR_048 default_isr // 0x0000_00C0 48 32 CAN0 Transmit Warning -#define VECTOR_049 default_isr // 0x0000_00C4 49 33 CAN0 Receive Warning -#define VECTOR_050 default_isr // 0x0000_00C8 50 34 CAN0 Wake Up -#define VECTOR_051 default_isr // 0x0000_00CC 51 35 CAN0 Individual Matching Elements Update (IMEU) -#define VECTOR_052 default_isr // 0x0000_00D0 52 36 CAN0 Lost receive -#define VECTOR_053 default_isr // 0x0000_00D4 53 37 CAN1 OR'ed Message buffer (0-15) -#define VECTOR_054 default_isr // 0x0000_00D8 54 38 CAN1 Bus off -#define VECTOR_055 default_isr // 0x0000_00DC 55 39 CAN1 Error -#define VECTOR_056 default_isr // 0x0000_00E0 56 40 CAN1 Transmit Warning -#define VECTOR_057 default_isr // 0x0000_00E4 57 41 CAN1 Receive Warning -#define VECTOR_058 default_isr // 0x0000_00E8 58 42 CAN1 Wake Up -#define VECTOR_059 default_isr // 0x0000_00EC 59 43 CAN1 Individual Matching Elements Update (IMEU) -#define VECTOR_060 default_isr // 0x0000_00F0 60 44 CAN1 Lost receive -#define VECTOR_061 default_isr // 0x0000_00F4 61 45 UART0 Single interrupt vector for UART status sources -#define VECTOR_062 default_isr // 0x0000_00F8 62 46 UART0 Single interrupt vector for UART error sources -#define VECTOR_063 default_isr // 0x0000_00FC 63 47 UART1 Single interrupt vector for UART status sources -#define VECTOR_064 default_isr // 0x0000_0100 64 48 UART1 Single interrupt vector for UART error sources -#define VECTOR_065 default_isr // 0x0000_0104 65 49 UART2 Single interrupt vector for UART status sources -#define VECTOR_066 default_isr // 0x0000_0108 66 50 UART2 Single interrupt vector for UART error sources -#define VECTOR_067 default_isr // 0x0000_010C 67 51 UART3 Single interrupt vector for UART status sources -#define VECTOR_068 default_isr // 0x0000_0110 68 52 UART3 Single interrupt vector for UART error sources -#define VECTOR_069 default_isr // 0x0000_0114 69 53 UART4 Single interrupt vector for UART status sources -#define VECTOR_070 default_isr // 0x0000_0118 70 54 UART4 Single interrupt vector for UART error sources -#define VECTOR_071 default_isr // 0x0000_011C 71 55 UART5 Single interrupt vector for UART status sources -#define VECTOR_072 default_isr // 0x0000_0120 72 56 UART5 Single interrupt vector for UART error sources -#define VECTOR_073 default_isr // 0x0000_0124 73 57 ADC0 -#define VECTOR_074 default_isr // 0x0000_0128 74 58 ADC1 -#define VECTOR_075 default_isr // 0x0000_012C 75 59 CMP0 High-speed comparator -#define VECTOR_076 default_isr // 0x0000_0130 76 60 CMP1 -#define VECTOR_077 default_isr // 0x0000_0134 77 61 CMP2 -#define VECTOR_078 default_isr // 0x0000_0138 78 62 FTM0 Single interrupt vector for all sources -#define VECTOR_079 default_isr // 0x0000_013C 79 63 FTM1 Single interrupt vector for all sources -#define VECTOR_080 default_isr // 0x0000_0140 80 64 FTM2 Single interrupt vector for all sources -#define VECTOR_081 default_isr // 0x0000_0144 81 65 CMT -#define VECTOR_082 default_isr // 0x0000_0148 82 66 RTC Timer interrupt -#define VECTOR_083 default_isr // 0x0000_014C 83 67 -#define VECTOR_084 default_isr // 0x0000_0150 84 68 PIT Channel 0 -#define VECTOR_085 default_isr // 0x0000_0154 85 69 PIT Channel 1 -#define VECTOR_086 default_isr // 0x0000_0158 86 70 PIT Channel 2 -#define VECTOR_087 default_isr // 0x0000_015C 87 71 PIT Channel 3 -#define VECTOR_088 default_isr // 0x0000_0160 88 72 PDB -#define VECTOR_089 default_isr // 0x0000_0164 89 73 USB OTG -#define VECTOR_090 default_isr // 0x0000_0168 90 74 USB Charger Detect -#define VECTOR_091 default_isr // 0x0000_016C 91 75 ENET IEEE 1588 Timer interrupt -#define VECTOR_092 vEMAC_TxISRHandler // 0x0000_0170 92 76 ENET Transmit interrupt -#define VECTOR_093 vEMAC_RxISRHandler // 0x0000_0174 93 77 ENET Receive interrupt -#define VECTOR_094 vEMAC_ErrorISRHandler // 0x0000_0178 94 78 ENET Error and miscellaneous interrupt -#define VECTOR_095 default_isr // 0x0000_017C 95 79 I2S -#define VECTOR_096 default_isr // 0x0000_0180 96 80 SDHC -#define VECTOR_097 default_isr // 0x0000_0184 97 81 DAC0 -#define VECTOR_098 default_isr // 0x0000_0188 98 82 DAC1 -#define VECTOR_099 default_isr // 0x0000_018C 99 83 TSI Single interrupt vector for all sources -#define VECTOR_100 default_isr // 0x0000_0190 100 84 MCG -#define VECTOR_101 default_isr // 0x0000_0194 101 85 Low Power Timer -#define VECTOR_102 default_isr // 0x0000_0198 102 86 Segment LCD Single interrupt vector for all sources -#define VECTOR_103 default_isr // 0x0000_019C 103 87 Port control module Pin Detect (Port A) -#define VECTOR_104 default_isr // 0x0000_01A0 104 88 Port control module Pin Detect (Port B) -#define VECTOR_105 default_isr // 0x0000_01A4 105 89 Port control module Pin Detect (Port C) -#define VECTOR_106 default_isr // 0x0000_01A8 106 90 Port control module Pin Detect (Port D) -#define VECTOR_107 vPort_E_ISRHandler // 0x0000_01AC 107 91 Port control module Pin Detect (Port E) -#define VECTOR_108 default_isr // 0x0000_01B0 108 92 -#define VECTOR_109 default_isr // 0x0000_01B4 109 93 -#define VECTOR_110 default_isr // 0x0000_01B8 110 94 -#define VECTOR_111 default_isr // 0x0000_01BC 111 95 -#define VECTOR_112 default_isr // 0x0000_01C0 112 96 -#define VECTOR_113 default_isr // 0x0000_01C4 113 97 -#define VECTOR_114 default_isr // 0x0000_01C8 114 98 -#define VECTOR_115 default_isr // 0x0000_01CC 115 99 -#define VECTOR_116 default_isr // 0x0000_01D0 116 100 -#define VECTOR_117 default_isr // 0x0000_01D4 117 101 -#define VECTOR_118 default_isr // 0x0000_01D8 118 102 -#define VECTOR_119 default_isr // 0x0000_01DC 119 103 -#define VECTOR_120 default_isr // -#define VECTOR_121 default_isr // -#define VECTOR_122 default_isr // -#define VECTOR_123 default_isr // -#define VECTOR_124 default_isr // -#define VECTOR_125 default_isr // -#define VECTOR_126 default_isr // -#define VECTOR_127 default_isr // -#define VECTOR_128 default_isr // -#define VECTOR_129 default_isr // -#define VECTOR_130 default_isr // -#define VECTOR_131 default_isr // -#define VECTOR_132 default_isr // -#define VECTOR_133 default_isr // -#define VECTOR_134 default_isr // -#define VECTOR_135 default_isr // -#define VECTOR_136 default_isr // -#define VECTOR_137 default_isr // -#define VECTOR_138 default_isr // -#define VECTOR_139 default_isr // -#define VECTOR_140 default_isr // -#define VECTOR_141 default_isr // -#define VECTOR_142 default_isr // -#define VECTOR_143 default_isr // -#define VECTOR_144 default_isr // -#define VECTOR_145 default_isr // -#define VECTOR_146 default_isr // -#define VECTOR_147 default_isr // -#define VECTOR_148 default_isr // -#define VECTOR_149 default_isr // -#define VECTOR_150 default_isr // -#define VECTOR_151 default_isr // -#define VECTOR_152 default_isr // -#define VECTOR_153 default_isr // -#define VECTOR_154 default_isr // -#define VECTOR_155 default_isr // -#define VECTOR_156 default_isr // -#define VECTOR_157 default_isr // -#define VECTOR_158 default_isr // -#define VECTOR_159 default_isr // -#define VECTOR_160 default_isr // -#define VECTOR_161 default_isr // -#define VECTOR_162 default_isr // -#define VECTOR_163 default_isr // -#define VECTOR_164 default_isr // -#define VECTOR_165 default_isr // -#define VECTOR_166 default_isr // -#define VECTOR_167 default_isr // -#define VECTOR_168 default_isr // -#define VECTOR_169 default_isr // -#define VECTOR_170 default_isr // -#define VECTOR_171 default_isr // -#define VECTOR_172 default_isr // -#define VECTOR_173 default_isr // -#define VECTOR_174 default_isr // -#define VECTOR_175 default_isr // -#define VECTOR_176 default_isr // -#define VECTOR_177 default_isr // -#define VECTOR_178 default_isr // -#define VECTOR_179 default_isr // -#define VECTOR_180 default_isr // -#define VECTOR_181 default_isr // -#define VECTOR_182 default_isr // -#define VECTOR_183 default_isr // -#define VECTOR_184 default_isr // -#define VECTOR_185 default_isr // -#define VECTOR_186 default_isr // -#define VECTOR_187 default_isr // -#define VECTOR_188 default_isr // -#define VECTOR_189 default_isr // -#define VECTOR_190 default_isr // -#define VECTOR_191 default_isr // -#define VECTOR_192 default_isr // -#define VECTOR_193 default_isr // -#define VECTOR_194 default_isr // -#define VECTOR_195 default_isr // -#define VECTOR_196 default_isr // -#define VECTOR_197 default_isr // -#define VECTOR_198 default_isr // -#define VECTOR_199 default_isr // -#define VECTOR_200 default_isr // -#define VECTOR_201 default_isr // -#define VECTOR_202 default_isr // -#define VECTOR_203 default_isr // -#define VECTOR_204 default_isr // -#define VECTOR_205 default_isr // -#define VECTOR_206 default_isr // -#define VECTOR_207 default_isr // -#define VECTOR_208 default_isr // -#define VECTOR_209 default_isr // -#define VECTOR_210 default_isr // -#define VECTOR_211 default_isr // -#define VECTOR_212 default_isr // -#define VECTOR_213 default_isr // -#define VECTOR_214 default_isr // -#define VECTOR_215 default_isr // -#define VECTOR_216 default_isr // -#define VECTOR_217 default_isr // -#define VECTOR_218 default_isr // -#define VECTOR_219 default_isr // -#define VECTOR_220 default_isr // -#define VECTOR_221 default_isr // -#define VECTOR_222 default_isr // -#define VECTOR_223 default_isr // -#define VECTOR_224 default_isr // -#define VECTOR_225 default_isr // -#define VECTOR_226 default_isr // -#define VECTOR_227 default_isr // -#define VECTOR_228 default_isr // -#define VECTOR_229 default_isr // -#define VECTOR_230 default_isr // -#define VECTOR_231 default_isr // -#define VECTOR_232 default_isr // -#define VECTOR_233 default_isr // -#define VECTOR_234 default_isr // -#define VECTOR_235 default_isr // -#define VECTOR_236 default_isr // -#define VECTOR_237 default_isr // -#define VECTOR_238 default_isr // -#define VECTOR_239 default_isr // -#define VECTOR_240 default_isr // -#define VECTOR_241 default_isr // -#define VECTOR_242 default_isr // -#define VECTOR_243 default_isr // -#define VECTOR_244 default_isr // -#define VECTOR_245 default_isr // -#define VECTOR_246 default_isr // -#define VECTOR_247 default_isr // -#define VECTOR_248 default_isr // -#define VECTOR_249 default_isr // -#define VECTOR_250 default_isr // -#define VECTOR_251 default_isr // -#define VECTOR_252 default_isr // -#define VECTOR_253 default_isr // -#define VECTOR_254 default_isr // -#define VECTOR_255 default_isr // -#define CONFIG_1 (pointer*)0xffffffff -#define CONFIG_2 (pointer*)0xffffffff -#define CONFIG_3 (pointer*)0xffffffff -#define CONFIG_4 (pointer*)0xfffffffe - -#endif /*__VECTORS_H*/ - -/* End of "vectors.h" */ diff --git a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/drivers/enet/enet.c b/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/drivers/enet/enet.c deleted file mode 100644 index 50b585920..000000000 --- a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/drivers/enet/enet.c +++ /dev/null @@ -1,243 +0,0 @@ -/* - * File: enet.c - * Purpose: Driver for the ENET controller - * - * Notes: - */ - -#include "common.h" -#include "enet.h" -#include "nbuf.h" -#include "eth.h" - - -/********************************************************************/ -/* Initialize the MIB counters - * - * Parameters: - * ch FEC channel - */ -void -enet_mib_init(int ch) -{ -//To do -} -/********************************************************************/ -/* Display the MIB counters - * - * Parameters: - * ch FEC channel - */ -void -enet_mib_dump(int ch) -{ -//To do -} -/********************************************************************/ -/* - * Set the duplex on the selected FEC controller - * - * Parameters: - * ch FEC channel - * duplex enet_MII_FULL_DUPLEX or enet_MII_HALF_DUPLEX - */ -void -enet_duplex (int ch, ENET_DUPLEX duplex) -{ - switch (duplex) - { - case MII_HDX: - ENET_RCR/*(ch)*/ |= ENET_RCR_DRT_MASK; - ENET_TCR/*(ch)*/ &= (uint32_t)~ENET_TCR_FDEN_MASK; - break; - case MII_FDX: - default: - ENET_RCR/*(ch)*/ &= ~ENET_RCR_DRT_MASK; - ENET_TCR/*(ch)*/ |= ENET_TCR_FDEN_MASK; - break; - } -} - -/********************************************************************/ -/* - * Generate the hash table settings for the given address - * - * Parameters: - * addr 48-bit (6 byte) Address to generate the hash for - * - * Return Value: - * The 6 most significant bits of the 32-bit CRC result - */ -uint8_t -enet_hash_address(const uint8_t* addr) -{ - uint32_t crc; - uint8_t byte; - int i, j; - - crc = 0xFFFFFFFF; - for(i=0; i<6; ++i) - { - byte = addr[i]; - for(j=0; j<8; ++j) - { - if((byte & 0x01)^(crc & 0x01)) - { - crc >>= 1; - crc = crc ^ 0xEDB88320; - } - else - crc >>= 1; - byte >>= 1; - } - } - return (uint8_t)(crc >> 26); -} -/********************************************************************/ -/* - * Set the Physical (Hardware) Address and the Individual Address - * Hash in the selected FEC - * - * Parameters: - * ch FEC channel - * pa Physical (Hardware) Address for the selected FEC - */ -void -enet_set_address (int ch, const uint8_t *pa) -{ - uint8_t crc; - - /* - * Set the Physical Address - */ - ENET_PALR/*(ch)*/ = (uint32_t)((pa[0]<<24) | (pa[1]<<16) | (pa[2]<<8) | pa[3]); - ENET_PAUR/*(ch)*/ = (uint32_t)((pa[4]<<24) | (pa[5]<<16)); - - /* - * Calculate and set the hash for given Physical Address - * in the Individual Address Hash registers - */ - crc = enet_hash_address(pa); - if(crc >= 32) - ENET_IAUR/*(ch)*/ |= (uint32_t)(1 << (crc - 32)); - else - ENET_IALR/*(ch)*/ |= (uint32_t)(1 << crc); -} -/********************************************************************/ -/* - * Reset the selected FEC controller - * - * Parameters: - * ch FEC channel - */ -void -enet_reset (int ch) -{ - int i; - - /* Set the Reset bit and clear the Enable bit */ - ENET_ECR/*(ch)*/ = ENET_ECR_RESET_MASK; - - /* Wait at least 8 clock cycles */ - for (i=0; i<10; ++i) - asm( "NOP" ); -} -/********************************************************************/ -/* - * Initialize the selected FEC - * - * Parameters: - * config: ENET parameters - * - * - */ -void -enet_init (ENET_CONFIG *config) -{ - /* Clear the Individual and Group Address Hash registers */ - ENET_IALR/*(ch)*/ = 0; - ENET_IAUR/*(ch)*/ = 0; - ENET_GALR/*(ch)*/ = 0; - ENET_GAUR/*(ch)*/ = 0; - - /* Set the Physical Address for the selected FEC */ - enet_set_address(config->ch, config->mac); - - /* Mask all FEC interrupts */ - ENET_EIMR/*(ch)*/ = 0;//FSL:ENET_EIMR_MASK_ALL_MASK; - - /* Clear all FEC interrupt events */ - ENET_EIR/*(ch)*/ = 0xFFFFFFFF;//FSL:ENET_EIR_CLEAR_ALL_MASK; - - /* Initialize the Receive Control Register */ - ENET_RCR/*(ch)*/ = 0 - | ENET_RCR_MAX_FL(ETH_MAX_FRM) - | ENET_RCR_MII_MODE_MASK /*always*/ - | ENET_RCR_CRCFWD_MASK; /*no CRC pad required*/ - - if ( config->interface == mac_rmii ) - { - ENET_RCR/*(ch)*/ |= ENET_RCR_RMII_MODE_MASK; - - /*only set speed in RMII mode*/ - if( config->speed == MII_10BASET ) - { - ENET_RCR/*(ch)*/ |= ENET_RCR_RMII_10T_MASK; - } - }/*no need to configure MAC MII interface*/ - - ENET_TCR/*(ch)*/ = 0; - - /* Set the duplex */ - enet_duplex(config->ch, config->duplex); - - if (config->prom) - { - ENET_RCR/*(ch)*/ |= ENET_RCR_PROM_MASK; - } - -#ifdef ENHANCED_BD - ENET_ECR/*(ch)*/ = ENET_ECR_EN1588_MASK; -#else - ENET_ECR/*(ch)*/ = 0;//clear register -#endif - - if(config->loopback == INTERNAL_LOOPBACK) - { - /*seems like RMII internal loopback works, even if it's not supported*/ - ENET_RCR/*(0)*/ |= ENET_RCR_LOOP_MASK; - } -} -/********************************************************************/ -void -enet_start (int ch) -{ - // Enable FEC - ENET_ECR/*(ch)*/ |= ENET_ECR_ETHEREN_MASK; -} - -/********************************************************************/ -int -enet_wait_for_frame_receive(int ch, int timeout) -{ - int i, return_val = 1; - - for (i=0; i < timeout; i++) - { - if (ENET_EIR/*(ch)*/ & ENET_EIR_RXF_MASK) - { - ENET_EIR/*(ch)*/ = ENET_EIR_RXF_MASK; - break; - } - } - - if(i == timeout) - { - return_val = 0; - } - return return_val; -} -/********************************************************************/ - - - diff --git a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/drivers/enet/enet.h b/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/drivers/enet/enet.h deleted file mode 100644 index c0e76ee44..000000000 --- a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/drivers/enet/enet.h +++ /dev/null @@ -1,95 +0,0 @@ -/* - * File: enet.h - * Purpose: Driver for the ENET controller - * - * Notes: - */ - -#ifndef _ENET_H_ -#define _ENET_H_ - -#include "nbuf.h" - -/********INTERFACE**********/ -typedef enum { - mac_mii, - mac_rmii, -} ENET_INTERFACE; -/********AUTONEG**********/ -typedef enum { - autoneg_on, - autoneg_off -} ENET_AUTONEG; -/********SPEED**********/ -typedef enum { - MII_10BASET, - MII_100BASET -} ENET_SPEED; -/********DUPLEX**********/ -/* MII Duplex Settings */ -typedef enum { - MII_HDX, /*!< half-duplex */ - MII_FDX /*!< full-duplex */ -} ENET_DUPLEX; -/********LOOPBACK**********/ -typedef enum { - INTERNAL_LOOPBACK, - EXTERNAL_LOOPBACK, - NO_LOOPBACK -} ENET_LOOPBACK; -/********EXTERNAL**********/ -typedef enum { - EXTERNAL_NONE, - EXTERNAL_YES -} ENET_EXTERNAL_CONN; - -/* - * FEC Configuration Parameters - */ -typedef struct -{ - uint8_t ch; /* FEC channel */ - ENET_INTERFACE interface; /* Transceiver mode */ - ENET_AUTONEG neg; /* FEC autoneg */ - ENET_SPEED speed; /* Ethernet Speed */ - ENET_DUPLEX duplex; /* Ethernet Duplex */ - ENET_LOOPBACK loopback; /* Loopback Mode */ - ENET_EXTERNAL_CONN external; /* outside test? */ - uint8_t prom; /* Promiscuous Mode? */ - uint8_t mac[6]; /* Ethernet Address */ -} ENET_CONFIG; - -void -enet_mib_init(int); - -void -enet_mib_dump(int); - -void -enet_reg_dump(int); - -void -enet_duplex (int, ENET_DUPLEX); - -uint8_t -enet_hash_address(const uint8_t*); - -void -enet_set_address (int, const uint8_t*); - -void -enet_reset (int); - -void -enet_init (ENET_CONFIG *config); - -void -enet_start (int ch); - -int -enet_wait_for_frame_receive(int,int); - - -/********************************************************************/ - -#endif /* _ENET_H_ */ diff --git a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/drivers/enet/eth.h b/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/drivers/enet/eth.h deleted file mode 100644 index ea942be7f..000000000 --- a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/drivers/enet/eth.h +++ /dev/null @@ -1,58 +0,0 @@ -/*! - * \file eth.h - * \brief Definitinos for Ethernet Frames - * \version $Revision: 1.1 $ - * \author Michael Norman - */ - -#ifndef _ETH_H -#define _ETH_H - -/*b06862*/ -#include "common.h" - -/*******************************************************************/ - -/* Ethernet standard lengths in bytes*/ -#define ETH_ADDR_LEN (6) -#define ETH_TYPE_LEN (2) -#define ETH_CRC_LEN (4) -#define ETH_MAX_DATA (1500) -#define ETH_MIN_DATA (46) -#define ETH_HDR_LEN (ETH_ADDR_LEN * 2 + ETH_TYPE_LEN) - -/* Defined Ethernet Frame Types */ -#define ETH_FRM_IP (0x0800) -#define ETH_FRM_ARP (0x0806) -#define ETH_FRM_RARP (0x8035) -#define ETH_FRM_TEST (0xA5A5) - -/* Maximum and Minimum Ethernet Frame Sizes */ -#define ETH_MAX_FRM (ETH_HDR_LEN + ETH_MAX_DATA + ETH_CRC_LEN) -#define ETH_MIN_FRM (ETH_HDR_LEN + ETH_MIN_DATA + ETH_CRC_LEN) -#define ETH_MTU (ETH_HDR_LEN + ETH_MAX_DATA) - -/* Ethernet Addresses */ -typedef uint8_t ETH_ADDR[ETH_ADDR_LEN]; - -/* 16-bit Ethernet Frame Type, ie. Protocol */ -typedef uint16_t ETH_FRM_TYPE; - -/* Ethernet Frame Header definition */ -typedef struct -{ - ETH_ADDR dest; - ETH_ADDR src; - ETH_FRM_TYPE type; -} ETH_HDR; - -/* Ethernet Frame definition */ -typedef struct -{ - ETH_HDR head; - uint8_t* data; -} ETH_FRAME; - -/*******************************************************************/ - -#endif /* _ETH_H */ diff --git a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/drivers/enet/eth_phy.c b/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/drivers/enet/eth_phy.c deleted file mode 100644 index 87e6db87c..000000000 --- a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/drivers/enet/eth_phy.c +++ /dev/null @@ -1,406 +0,0 @@ -/*! - * \file eth_phy.c - * \brief Ethernet Physical Layer Interface Driver - * \version $Revision: 1.3 $ - * \author Michael Norman - * - * This is a generic driver for all Ethernet PHYs with the basic MII registers - */ - -#include "common.h" -#include "eth_phy.h" -#include "mii.h" - -/* Variable to save off auto-negotiate settings */ -int eth_phy_anar = 0 - | PHY_ANAR_100BTX_FDX - | PHY_ANAR_100BTX - | PHY_ANAR_10BT_FDX - | PHY_ANAR_10BT; - -int -eth_phy_reset(int ch, int phy_addr) -{ -#if MII_CHECK_TIMEOUT - int timeout; -#endif - int settings; - - /* Reset the PHY */ - if (mii_write(ch, phy_addr, PHY_BMCR, PHY_BMCR_RESET)) - return 1; - /* Wait for reset to complete */ -#if MII_CHECK_TIMEOUT - for (timeout = 0; timeout < MII_LINK_TIMEOUT; ++timeout) -#endif - while(1) - { - /* Read back the contents of the CTRL register and verify - * that RESET is not set - this is a sanity check to ensure - * that we are talking to the PHY correctly. RESET should - * always be cleared. */ - if (!(mii_read(ch, phy_addr, PHY_BMCR, &settings)) && !(settings & PHY_BMCR_RESET)) - break;/*FSL: ready*/ - } -#if MII_CHECK_TIMEOUT - if (timeout == MII_LINK_TIMEOUT || (settings & PHY_BMCR_RESET)) - return 1; - else -#endif - return 0; -} - -/********************************************************************/ -/*! - * \brief Enable the Ethernet PHY in auto-negotiate mode - * \param phy_addr Address of the PHY - * \param speed Desired speed (MII_10BASE_T or MII_100BASE_TX) - * \param duplex Desired duplex (MII_FDX or MII_HDX) - * \return 0 if successful; non-zero otherwise - */ -int -eth_phy_autoneg(int ch, int phy_addr, ENET_SPEED speed, ENET_DUPLEX duplex) -{ - int timeout, settings; - - /* Reset the PHY */ - eth_phy_reset(ch, phy_addr); - - /* Set the Auto-Negotiation Advertisement Register */ - if (speed == MII_10BASET) - { - settings = (duplex == MII_FDX) - ? PHY_ANAR_10BT_FDX | PHY_ANAR_10BT - : PHY_ANAR_10BT; - } - else /* (speed == MII_100BASET) */ - { - settings = (duplex == MII_FDX) - ? PHY_ANAR_100BTX_FDX | - PHY_ANAR_100BTX | - PHY_ANAR_10BT_FDX | - PHY_ANAR_10BT - : PHY_ANAR_10BT_FDX | - PHY_ANAR_10BT; - } - - /* Save off the settings we just advertised */ - eth_phy_anar = settings; - - if (mii_write(ch, phy_addr, PHY_ANAR, settings)) - return 1; - - /* Enable Auto-Negotiation */ - if (mii_write(ch, phy_addr, PHY_BMCR, PHY_BMCR_AN_ENABLE | PHY_BMCR_AN_RESTART)) - return 1; - - /* Wait for auto-negotiation to complete */ - for (timeout = 0; timeout < MII_LINK_TIMEOUT; ++timeout) - { - if (mii_read(ch, phy_addr, PHY_BMSR, &settings)) - return 1; - if (settings & PHY_BMSR_AN_COMPLETE) - break; - } - /* Read the BMSR one last time */ - if (mii_read(ch, phy_addr, PHY_BMSR, &settings)) - return 1; - if (timeout == MII_LINK_TIMEOUT || !(settings & PHY_BMSR_LINK)) - return 1; - else - return 0; -} -/********************************************************************/ -/*! - * \brief Enable the Ethernet PHY in manual mode - * \param phy_addr Address of the PHY - * \param speed Desired speed (MII_10BASE_T or MII_100BASE_TX) - * \param duplex Desired duplex (MII_FDX or MII_HDX) - * \param loop Put PHY in loopback mode? - * \return 0 if successful; non-zero otherwise - */ -int -eth_phy_manual(int ch, int phy_addr, ENET_SPEED speed, ENET_DUPLEX duplex, int loop) -{ - int timeout; - int settings = 0; - - /* Reset the PHY */ - /* Reset the PHY */ - eth_phy_reset(ch, phy_addr); - - if (loop) - settings |= PHY_BMCR_LOOP; - if (duplex == MII_FDX) - settings |= PHY_BMCR_FDX; - if (speed == MII_100BASET) - settings |= PHY_BMCR_SPEED; - - if (mii_write(ch, phy_addr, PHY_BMCR, settings)) - return 1; - - /* Wait for link */ - for (timeout = 0; timeout < MII_LINK_TIMEOUT; ++timeout) - { - if (mii_read(ch, phy_addr, PHY_BMSR, &settings)) - return 1; - if (settings & PHY_BMSR_LINK) - break; - } - -#if MII_CHECK_TIMEOUT - if (timeout == MII_LINK_TIMEOUT || !(settings & PHY_BMSR_LINK)) - return 1; - else -#endif - return 0; -} -/********************************************************************/ -/*! - * \brief Get the auto-negotiated speed - * \param phy_addr Address of the PHY - * \param speed Pointer where speed data is stored - * \return 0 if successful; non-zero otherwise - */ -int -eth_phy_get_speed(int ch, int phy_addr, int *speed) -{ -#if MII_CHECK_TIMEOUT - int timeout; -#endif - int settings = 0; - - /* Get Link Partner settings */ -#if MII_CHECK_TIMEOUT - for (timeout = 0; timeout < MII_TIMEOUT; ++timeout) -#endif - while(1) - { - if (mii_read(ch, phy_addr, PHY_ANLPAR, &settings)) - return 1; - else - break; - } -#if MII_CHECK_TIMEOUT - if (timeout == MII_TIMEOUT) - return 1; -#endif - - settings &= eth_phy_anar; - if (settings & PHY_ANLPAR_100BT4 || - settings & PHY_ANLPAR_100BTX_FDX || - settings & PHY_ANLPAR_100BTX) - *speed = MII_100BASET; - else - *speed = MII_10BASET; - - return 0; -} -/********************************************************************/ -/*! - * \brief Get the auto-negotiated duplex - * \param phy_addr Address of the PHY - * \param speed Pointer where speed data is stored - * \return 0 if successful; non-zero otherwise - */ -int -eth_phy_get_duplex(int ch, int phy_addr, int *speed) -{ -#if MII_CHECK_TIMEOUT - int timeout; -#endif - int settings = 0; - - /* Get Link Partner settings */ -#if MII_CHECK_TIMEOUT - for (timeout = 0; timeout < MII_TIMEOUT; ++timeout) -#endif - while(1) - { - if (mii_read(ch, phy_addr, PHY_ANLPAR, &settings)) - return 1; - else - break; - } -#if MII_CHECK_TIMEOUT - if (timeout == MII_TIMEOUT) - return 1; -#endif - - settings &= eth_phy_anar; - if (settings & PHY_ANLPAR_100BTX_FDX || - settings & PHY_ANLPAR_10BTX_FDX) - *speed = MII_FDX; - else - *speed = MII_HDX; - - return 0; -} - - -/********************************************************************/ -/*! - * \brief Get the manual speed - * \param phy_addr Address of the PHY - * \param speed Pointer where speed data is stored - * \return 0 if successful; non-zero otherwise - */ -int -eth_phy_get_manual_speed(int ch, int phy_addr, int *speed) -{ -#if MII_CHECK_TIMEOUT - int timeout; -#endif - int settings = 0; - - /* Get Link Partner settings */ -#if MII_CHECK_TIMEOUT - for (timeout = 0; timeout < MII_TIMEOUT; ++timeout) -#endif - while(1) - { -#ifdef TWR_K60N512 - if (mii_read(ch, phy_addr, PHY_PHYCTRL2, &settings))//Micrel -#else - if (mii_read(ch, phy_addr, PHY_PHYSTS, &settings))//National Semiconductors -#endif - return 1; - else - break; - } -#if MII_CHECK_TIMEOUT - if (timeout == MII_TIMEOUT) - return 1; -#endif - -#ifdef TWR_K60N512 - /*FSL: obtain speed/duplex*/ - settings = (settings & PHY_PHYCTRL2_OP_MOD_MASK)>>PHY_PHYCTRL2_OP_MOD_SHIFT; - - if (settings == PHY_PHYCTRL2_MODE_OP_MOD_10MBPS_HD || - settings == PHY_PHYCTRL2_MODE_OP_MOD_10MBPS_FD) - *speed = MII_10BASET; - else - *speed = MII_100BASET; -#else - if (settings & PHY_PHYSTS_SPEEDSTATUS) - *speed = MII_10BASET; - else - *speed = MII_100BASET; -#endif - - return 0; -} -/********************************************************************/ -/*! - * \brief Get the manual duplex - * \param phy_addr Address of the PHY - * \param duplex Pointer where duplex data is stored - * \return 0 if successful; non-zero otherwise - */ -int -eth_phy_get_manual_duplex(int ch, int phy_addr, int *duplex) -{ -#if MII_CHECK_TIMEOUT - int timeout; -#endif - int settings = 0; - - /* Get Link Partner settings */ -#if MII_CHECK_TIMEOUT - for (timeout = 0; timeout < MII_TIMEOUT; ++timeout) -#endif - while(1) - { -#ifdef TWR_K60N512 - if (mii_read(ch, phy_addr, PHY_PHYCTRL2, &settings))//Micrel -#else - if (mii_read(ch, phy_addr, PHY_PHYSTS, &settings))//National Semiconductors -#endif - return 1; - else - break; - } -#if MII_CHECK_TIMEOUT - if (timeout == MII_TIMEOUT) - return 1; -#endif - -#ifdef TWR_K60N512 - /*FSL: obtain speed/duplex*/ - settings = (settings & PHY_PHYCTRL2_OP_MOD_MASK)>>PHY_PHYCTRL2_OP_MOD_SHIFT; - - if (settings == PHY_PHYCTRL2_MODE_OP_MOD_10MBPS_HD || - settings == PHY_PHYCTRL2_MODE_OP_MOD_100MBPS_HD) - *duplex = MII_HDX; - else - *duplex = MII_FDX; -#else - if (settings & PHY_PHYSTS_DUPLEXSTATUS) - *duplex = MII_FDX; - else - *duplex = MII_HDX; -#endif - - return 0; -} - -/********************************************************************/ -/*! - * \brief Get the manual speed - * \param phy_addr Address of the PHY - * \param loop set if loopback is needed - * \return 0 if successful; non-zero otherwise - */ -int -eth_phy_set_remote_loopback(int ch, int phy_addr, int loop) -{ -#if MII_CHECK_TIMEOUT - int timeout; -#endif - int settings = 0; - - /* Get Link Partner settings */ -#if MII_CHECK_TIMEOUT - for (timeout = 0; timeout < MII_TIMEOUT; ++timeout) -#endif - while(1) - { - if (mii_read(ch, phy_addr, PHY_PHYCTRL1, &settings)) - return 1; - else - break; - } -#if MII_CHECK_TIMEOUT - if (timeout == MII_TIMEOUT) - return 1; -#endif - /*set remote loopback flag*/ - if(loop) - settings |= PHY_PHYCTRL1_REMOTE_LOOP; /*set bit*/ - else - settings &= ~PHY_PHYCTRL1_REMOTE_LOOP; /*clear bit*/ - - if (mii_write(ch, phy_addr, PHY_PHYCTRL1, settings)) - return 1; - - return 0; -} - -/********************************************************************/ -/*! - * \brief Print all the MII registers (0x00-0x1F) - * \param phy_addr Address of the PHY - */ -int -eth_phy_reg_dump(int ch, int phy_addr) -{ - int j, settings; - - for (j = 0; j < 32; j++) - { - mii_read(ch, phy_addr, j, &settings); - } - - return 0; -} diff --git a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/drivers/enet/eth_phy.h b/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/drivers/enet/eth_phy.h deleted file mode 100644 index 27330c235..000000000 --- a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/drivers/enet/eth_phy.h +++ /dev/null @@ -1,175 +0,0 @@ -/*! - * \file eth.h - * \brief Definitions for Ethernet Physical Layer Interface - * \version $Revision: 1.3 $ - * \author Michael Norman - * \modif b06862 - */ - -#ifndef _ETH_PHY_H -#define _ETH_PHY_H - - -#include "enet.h" - -/*******************************************************************/ - -int -eth_phy_reset(int ch, int phy_addr); - -int -eth_phy_autoneg(int ch, int phy_addr, ENET_SPEED speed, ENET_DUPLEX duplex); - -int -eth_phy_manual(int ch, int phy_addr, ENET_SPEED speed, ENET_DUPLEX duplex, int loop); - -int -eth_phy_get_speed(int, int, int*); - -int -eth_phy_get_duplex(int, int, int*); - -int -eth_phy_get_manual_speed(int, int, int*); - -int -eth_phy_get_manual_duplex(int, int, int*); - -int -eth_phy_set_remote_loopback(int, int, int); - -int -eth_phy_reg_dump(int, int); - -/*******************************************************************/ - -/* MII Register Addresses */ -#define PHY_BMCR (0x00) -#define PHY_BMSR (0x01) -#define PHY_PHYIDR1 (0x02) -#define PHY_PHYIDR2 (0x03) -#define PHY_ANAR (0x04) -#define PHY_ANLPAR (0x05) -#define PHY_ANLPARNP (0x05) -#define PHY_ANER (0x06) -#define PHY_ANNPTR (0x07) -#define PHY_PHYSTS (0x10) -#define PHY_MICR (0x11) -#define PHY_MISR (0x12) -#define PHY_PAGESEL (0x13) - -/*TSI-EVB definition: National Semiconductor*/ -#define PHY_PHYCR2 (0x1C) - -/*TWR definition: Micrel*/ -#define PHY_PHYCTRL1 (0x1E) -#define PHY_PHYCTRL2 (0x1F) - -/* Bit definitions and macros for PHY_BMCR */ -#define PHY_BMCR_RESET (0x8000) -#define PHY_BMCR_LOOP (0x4000) -#define PHY_BMCR_SPEED (0x2000) -#define PHY_BMCR_AN_ENABLE (0x1000) -#define PHY_BMCR_POWERDOWN (0x0800) -#define PHY_BMCR_ISOLATE (0x0400) -#define PHY_BMCR_AN_RESTART (0x0200) -#define PHY_BMCR_FDX (0x0100) -#define PHY_BMCR_COL_TEST (0x0080) - -/* Bit definitions and macros for PHY_BMSR */ -#define PHY_BMSR_100BT4 (0x8000) -#define PHY_BMSR_100BTX_FDX (0x4000) -#define PHY_BMSR_100BTX (0x2000) -#define PHY_BMSR_10BT_FDX (0x1000) -#define PHY_BMSR_10BT (0x0800) -#define PHY_BMSR_NO_PREAMBLE (0x0040) -#define PHY_BMSR_AN_COMPLETE (0x0020) -#define PHY_BMSR_REMOTE_FAULT (0x0010) -#define PHY_BMSR_AN_ABILITY (0x0008) -#define PHY_BMSR_LINK (0x0004) -#define PHY_BMSR_JABBER (0x0002) -#define PHY_BMSR_EXTENDED (0x0001) - -/* Bit definitions and macros for PHY_ANAR */ -#define PHY_ANAR_NEXT_PAGE (0x8001) -#define PHY_ANAR_REM_FAULT (0x2001) -#define PHY_ANAR_PAUSE (0x0401) -#define PHY_ANAR_100BT4 (0x0201) -#define PHY_ANAR_100BTX_FDX (0x0101) -#define PHY_ANAR_100BTX (0x0081) -#define PHY_ANAR_10BT_FDX (0x0041) -#define PHY_ANAR_10BT (0x0021) -#define PHY_ANAR_802_3 (0x0001) - -/* Bit definitions and macros for PHY_ANLPAR */ -#define PHY_ANLPAR_NEXT_PAGE (0x8000) -#define PHY_ANLPAR_ACK (0x4000) -#define PHY_ANLPAR_REM_FAULT (0x2000) -#define PHY_ANLPAR_PAUSE (0x0400) -#define PHY_ANLPAR_100BT4 (0x0200) -#define PHY_ANLPAR_100BTX_FDX (0x0100) -#define PHY_ANLPAR_100BTX (0x0080) -#define PHY_ANLPAR_10BTX_FDX (0x0040) -#define PHY_ANLPAR_10BT (0x0020) - - -/* Bit definitions of PHY_PHYSTS: National */ -#define PHY_PHYSTS_MDIXMODE (0x4000) -#define PHY_PHYSTS_RX_ERR_LATCH (0x2000) -#define PHY_PHYSTS_POL_STATUS (0x1000) -#define PHY_PHYSTS_FALSECARRSENSLAT (0x0800) -#define PHY_PHYSTS_SIGNALDETECT (0x0400) -#define PHY_PHYSTS_PAGERECEIVED (0x0100) -#define PHY_PHYSTS_MIIINTERRUPT (0x0080) -#define PHY_PHYSTS_REMOTEFAULT (0x0040) -#define PHY_PHYSTS_JABBERDETECT (0x0020) -#define PHY_PHYSTS_AUTONEGCOMPLETE (0x0010) -#define PHY_PHYSTS_LOOPBACKSTATUS (0x0008) -#define PHY_PHYSTS_DUPLEXSTATUS (0x0004) -#define PHY_PHYSTS_SPEEDSTATUS (0x0002) -#define PHY_PHYSTS_LINKSTATUS (0x0001) - - -/* Bit definitions of PHY_PHYCR2 */ -#define PHY_PHYCR2_SYNC_ENET_EN (0x2000) -#define PHY_PHYCR2_CLK_OUT_RXCLK (0x1000) -#define PHY_PHYCR2_BC_WRITE (0x0800) -#define PHY_PHYCR2_PHYTER_COMP (0x0400) -#define PHY_PHYCR2_SOFT_RESET (0x0200) -#define PHY_PHYCR2_CLK_OUT_DIS (0x0001) - -/* Bit definition and macros for PHY_PHYCTRL1 */ -#define PHY_PHYCTRL1_LED_MASK (0xC000) -#define PHY_PHYCTRL1_POLARITY (0x2000) -#define PHY_PHYCTRL1_MDX_STATE (0x0800) -#define PHY_PHYCTRL1_REMOTE_LOOP (0x0080) - -/* Bit definition and macros for PHY_PHYCTRL2 */ -#define PHY_PHYCTRL2_HP_MDIX (0x8000) -#define PHY_PHYCTRL2_MDIX_SELECT (0x4000) -#define PHY_PHYCTRL2_PAIRSWAP_DIS (0x2000) -#define PHY_PHYCTRL2_ENERGY_DET (0x1000) -#define PHY_PHYCTRL2_FORCE_LINK (0x0800) -#define PHY_PHYCTRL2_POWER_SAVING (0x0400) -#define PHY_PHYCTRL2_INT_LEVEL (0x0200) -#define PHY_PHYCTRL2_EN_JABBER (0x0100) -#define PHY_PHYCTRL2_AUTONEG_CMPLT (0x0080) -#define PHY_PHYCTRL2_ENABLE_PAUSE (0x0040) -#define PHY_PHYCTRL2_PHY_ISOLATE (0x0020) -#define PHY_PHYCTRL2_OP_MOD_MASK (0x001C) -#define PHY_PHYCTRL2_EN_SQE_TEST (0x0002) -#define PHY_PHYCTRL2_DATA_SCRAM_DIS (0x0001) - - -/* Bit definitions of PHY_PHYCTRL2_OP_MOD_MASK */ -#define PHY_PHYCTRL2_OP_MOD_SHIFT 2 -#define PHY_PHYCTRL2_MODE_OP_MOD_STILL_NEG 0 -#define PHY_PHYCTRL2_MODE_OP_MOD_10MBPS_HD 1 -#define PHY_PHYCTRL2_MODE_OP_MOD_100MBPS_HD 2 -#define PHY_PHYCTRL2_MODE_OP_MOD_10MBPS_FD 5 -#define PHY_PHYCTRL2_MODE_OP_MOD_100MBPS_FD 6 - - -/*******************************************************************/ - -#endif /* _ETH_PHY_H */ diff --git a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/drivers/enet/mii.c b/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/drivers/enet/mii.c deleted file mode 100644 index 8de8dae21..000000000 --- a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/drivers/enet/mii.c +++ /dev/null @@ -1,130 +0,0 @@ -/*! - * \file mii.c - * \brief Media Independent Interface (MII) driver - * \version $Revision: 1.2 $ - * \author Michael Norman - * - * \warning This driver assumes that FEC0 is used for all MII management - * communications. For dual PHYs, etc. Insure that FEC0_MDC and - * FEC0_MDIO are connected to the PHY's MDC and MDIO. - */ - -#include "common.h" -#include "mii.h" - -/********************************************************************/ -/* - * \brief Initialize the MII interface controller - * \param System Clock Frequency (in MHz) - * \warning The system clock in this case is the clock that drives - * the FEC logic. This may be different from the speed at which - * the CPU is operating. - * - * Initialize the MII clock (EMDC) frequency. The desired MII clock is 2.5MHz: - * - * MII Speed Setting = System_Clock / (2.5MHz * 2) - * (plus 1 to round up) - */ -void -mii_init(int ch, int sys_clk_mhz) -{ - ENET_MSCR/*(ch)*/ = 0 -#ifdef TSIEVB/*TSI EVB requires a longer hold time than default 10 ns*/ - | ENET_MSCR_HOLDTIME(2) -#endif - | ENET_MSCR_MII_SPEED((2*sys_clk_mhz/5)+1) - ; -} -/********************************************************************/ -/*! - * \brief Write a value to a PHY's MII register. - * - * \param phy_addr Address of the PHY - * \param reg_addr Address of the register in the PHY - * \param data Data to be written to the PHY register - * \return 0 if write is successful; 1 if write times out - * - * mii_write() polls for the FEC's MII interrupt event (which should - * be masked from the interrupt handler) and clears it. If after a - * suitable amount of time the event isn't triggered, a non-zero value - * is returned. - */ -int -mii_write(int ch, int phy_addr, int reg_addr, int data) -{ - int timeout; - - /* Clear the MII interrupt bit */ - ENET_EIR/*(ch)*/ = ENET_EIR_MII_MASK; - - /* Initiatate the MII Management write */ - ENET_MMFR/*(ch)*/ = 0 - | ENET_MMFR_ST(0x01) - | ENET_MMFR_OP(0x01) - | ENET_MMFR_PA(phy_addr) - | ENET_MMFR_RA(reg_addr) - | ENET_MMFR_TA(0x02) - | ENET_MMFR_DATA(data); - - /* Poll for the MII interrupt (interrupt should be masked) */ - for (timeout = 0; timeout < MII_TIMEOUT; timeout++) - { - if (ENET_EIR/*(ch)*/ & ENET_EIR_MII_MASK) - break; - } - - if(timeout == MII_TIMEOUT) - return 1; - - /* Clear the MII interrupt bit */ - ENET_EIR/*(ch)*/ = ENET_EIR_MII_MASK; - - return 0; -} -/********************************************************************/ -/*! - * \brief Read a value from a PHY's MII register. - * \param phy_addr Address of the PHY - * \param reg_addr Address of the register in the PHY - * \param data Pointer to location were read data will be stored - * \return 0 if write is successful; 1 if write times out - * - * mii_read() polls for the FEC's MII interrupt event (which should - * be masked from the interrupt handler) and clears it. If after a - * suitable amount of time the event isn't triggered, a non-zero value - * is returned. - */ -int -mii_read(int ch, int phy_addr, int reg_addr, int *data) -{ - int timeout; - - /* Clear the MII interrupt bit */ - ENET_EIR/*(ch)*/ = ENET_EIR_MII_MASK; - - /* Initiatate the MII Management read */ - ENET_MMFR/*(ch)*/ = 0 - | ENET_MMFR_ST(0x01) - | ENET_MMFR_OP(0x2) - | ENET_MMFR_PA(phy_addr) - | ENET_MMFR_RA(reg_addr) - | ENET_MMFR_TA(0x02); - - /* Poll for the MII interrupt (interrupt should be masked) */ - for (timeout = 0; timeout < MII_TIMEOUT; timeout++) - { - if (ENET_EIR/*(ch)*/ & ENET_EIR_MII_MASK) - break; - } - - if(timeout == MII_TIMEOUT) - return 1; - - /* Clear the MII interrupt bit */ - ENET_EIR/*(ch)*/ = ENET_EIR_MII_MASK; - - *data = ENET_MMFR/*(ch)*/ & 0x0000FFFF; - - return 0; -} -/********************************************************************/ diff --git a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/drivers/enet/mii.h b/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/drivers/enet/mii.h deleted file mode 100644 index 8c94d95f7..000000000 --- a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/drivers/enet/mii.h +++ /dev/null @@ -1,30 +0,0 @@ -/*! - * \file mii.h - * \brief Media Independent Interface (MII) driver - * \version $Revision: 1.2 $ - * \author Michael Norman - * - * \warning - * - */ - -#ifndef _MII_H_ -#define _MII_H_ - -/*******************************************************************/ - -#define MII_TIMEOUT 0x1FFFF -#define MII_LINK_TIMEOUT 0x1FFFF - -void -mii_init(int, int); - -int -mii_write(int, int, int, int); - -int -mii_read(int, int, int, int*); - -/*******************************************************************/ - -#endif /* _MII_H_ */ diff --git a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/drivers/enet/nbuf.h b/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/drivers/enet/nbuf.h deleted file mode 100644 index 5e2c98515..000000000 --- a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/drivers/enet/nbuf.h +++ /dev/null @@ -1,233 +0,0 @@ -// ---------------------------------------------------------------------- -// File: nbuf.h -// Purpose: Definitions for Network Buffer Allocation. -// -// Notes: -// -// ---------------------------------------------------------------------- - -#ifndef _NBUF_H_ -#define _NBUF_H_ - -// Define number of MACs -#define NUM_CHANNELS 1/*b06862*/ - -// Choose Enhanced Buffer Descriptor or Legacy -#define ENHANCED_BD - -//b06862: define Endianess for Little Endian architectures like ARM. -//Motorola/Freescale uses Big Endian or Register-Endianess -#define NBUF_LITTLE_ENDIAN - -// Transmit packet directly or copy to dedicated buffers. If packets -// are not alligned dedicated Tx buffers can be used -//#define USE_DEDICATED_TX_BUFFERS - -// Buffer sizes in bytes (must be divisible by 16) -#define RX_BUFFER_SIZE 256 -#define TX_BUFFER_SIZE 256 - -// Number of Receive and Transmit Buffers and Buffer Descriptors -#define NUM_RXBDS 20//10 -#define NUM_TXBDS 20//10 - -// Buffer Descriptor Format -#ifdef ENHANCED_BD - typedef struct - { - uint16_t status; /* control and status */ - uint16_t length; /* transfer length */ - uint8_t *data; /* buffer address */ - uint32_t ebd_status; - uint16_t length_proto_type; - uint16_t payload_checksum; - uint32_t bdu; - uint32_t timestamp; - uint32_t reserverd_word1; - uint32_t reserverd_word2; - } NBUF; -#else - typedef struct - { - uint16_t status; /* control and status */ - uint16_t length; /* transfer length */ - uint8_t *data; /* buffer address */ - } NBUF; -#endif /* ENHANCED_BD */ - -// ---------------------------------------------------------------------- -// Function Declarations -// ---------------------------------------------------------------------- -void -nbuf_alloc(int ch); - -void -nbuf_init(int); - -void -nbuf_start_rx(int); - -void -nbuf_flush(int); - -//NM - return value -void -enet_get_received_packet(int, NBUF *); - -//NM - return value -void -enet_fill_txbds(int, NBUF *); - -void -enet_transmit_packet(int,NBUF *); - -#ifdef NBUF_LITTLE_ENDIAN - -//For Freescale ARM Architecture - -// ---------------------------------------------------------------------- -// TX Buffer Descriptor Bit Definitions -// ---------------------------------------------------------------------- -#define TX_BD_R 0x0080 -#define TX_BD_TO1 0x0040 -#define TX_BD_W 0x0020 -#define TX_BD_TO2 0x0010 -#define TX_BD_L 0x0008 -#define TX_BD_TC 0x0004 -#define TX_BD_ABC 0x0002 - -// ---------------------------------------------------------------------- -// TX Enhanced BD Bit Definitions -// ---------------------------------------------------------------------- -#define TX_BD_INT 0x00000040 -#define TX_BD_TS 0x00000020 -#define TX_BD_PINS 0x00000010 -#define TX_BD_IINS 0x00000008 -#define TX_BD_TXE 0x00800000 -#define TX_BD_UE 0x00200000 -#define TX_BD_EE 0x00100000 -#define TX_BD_FE 0x00080000 -#define TX_BD_LCE 0x00040000 -#define TX_BD_OE 0x00020000 -#define TX_BD_TSE 0x00010000 - -#define TX_BD_BDU 0x00000080 - -// ---------------------------------------------------------------------- -// RX Buffer Descriptor Bit Definitions -// ---------------------------------------------------------------------- - -// Offset 0 flags - status: Big Endian -#define RX_BD_E 0x0080 -#define RX_BD_R01 0x0040 -#define RX_BD_W 0x0020 -#define RX_BD_R02 0x0010 -#define RX_BD_L 0x0008 -#define RX_BD_M 0x0001 -#define RX_BD_BC 0x8000 -#define RX_BD_MC 0x4000 -#define RX_BD_LG 0x2000 -#define RX_BD_NO 0x1000 -#define RX_BD_CR 0x0400 -#define RX_BD_OV 0x0200 -#define RX_BD_TR 0x0100 - -// ---------------------------------------------------------------------- -// RX Enhanced BD Bit Definitions -// ---------------------------------------------------------------------- -#define RX_BD_ME 0x00000080 -#define RX_BD_PE 0x00000004 -#define RX_BD_CE 0x00000002 -#define RX_BD_UC 0x00000001 - -#define RX_BD_INT 0x00008000 - -#define RX_BD_ICE 0x20000000 -#define RX_BD_PCR 0x10000000 -#define RX_BD_VLAN 0x04000000 -#define RX_BD_IPV6 0x02000000 -#define RX_BD_FRAG 0x01000000 - -#define RX_BD_BDU 0x00000080 - -#else - -//For Freescale ColdFire Architecture -// ---------------------------------------------------------------------- -// TX Buffer Descriptor Bit Definitions -// ---------------------------------------------------------------------- -#define TX_BD_R 0x8000 -#define TX_BD_TO1 0x4000 -#define TX_BD_W 0x2000 -#define TX_BD_TO2 0x1000 -#define TX_BD_L 0x0800 -#define TX_BD_TC 0x0400 -#define TX_BD_ABC 0x0200 - -// ---------------------------------------------------------------------- -// TX Enhanced BD Bit Definitions -// ---------------------------------------------------------------------- -#define TX_BD_INT 0x40000000 -#define TX_BD_TS 0x20000000 -#define TX_BD_PINS 0x10000000 -#define TX_BD_IINS 0x08000000 -#define TX_BD_TXE 0x00008000 -#define TX_BD_UE 0x00002000 -#define TX_BD_EE 0x00001000 -#define TX_BD_FE 0x00000800 -#define TX_BD_LCE 0x00000400 -#define TX_BD_OE 0x00000200 -#define TX_BD_TSE 0x00000100 - -#define TX_BD_BDU 0x80000000 - -// ---------------------------------------------------------------------- -// RX Buffer Descriptor Bit Definitions -// ---------------------------------------------------------------------- - -// Offset 0 flags - status -#define RX_BD_E 0x8000 -#define RX_BD_R01 0x4000 -#define RX_BD_W 0x2000 -#define RX_BD_R02 0x1000 -#define RX_BD_L 0x0800 -#define RX_BD_M 0x0100 -#define RX_BD_BC 0x0080 -#define RX_BD_MC 0x0040 -#define RX_BD_LG 0x0020 -#define RX_BD_NO 0x0010 -#define RX_BD_CR 0x0004 -#define RX_BD_OV 0x0002 -#define RX_BD_TR 0x0001 - -// ---------------------------------------------------------------------- -// RX Enhanced BD Bit Definitions -// ---------------------------------------------------------------------- -#define RX_BD_ME 0x80000000 -#define RX_BD_PE 0x04000000 -#define RX_BD_CE 0x02000000 -#define RX_BD_UC 0x01000000 -#define RX_BD_INT 0x00800000 -#define RX_BD_ICE 0x00000020 -#define RX_BD_PCR 0x00000010 -#define RX_BD_VLAN 0x00000004 -#define RX_BD_IPV6 0x00000002 -#define RX_BD_FRAG 0x00000001 - -#define RX_BD_BDU 0x80000000 - - -#endif - -// ---------------------------------------------------------------------- -// Defines for word offsets of various fields of RX Enhanced BDs -// ---------------------------------------------------------------------- -//#define RX_EBD_HEADER_LENGTH_OFFSET 12 -//#define RX_EBD_PROTOCOL_TYPE_OFFSET 12 -//#define RX_EBD_PAYLOAD_CHKSM_OFFSET 14 -//#define RX_EBD_BDU_OFFSET 16 -//#define RX_EBD_TIMESTAMP_MSB_OFFSET 20 -//#define RX_EBD_TIMESTAMP_LSB_OFFSET 22 - - -#endif /* _NBUF_H_ */ diff --git a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/drivers/mcg/mcg.c b/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/drivers/mcg/mcg.c deleted file mode 100644 index bceea3322..000000000 --- a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/drivers/mcg/mcg.c +++ /dev/null @@ -1,244 +0,0 @@ -/* - * File: mcg.c - * Purpose: Driver for enabling the PLL in 1 of 4 options - * - * Notes: - * Assumes the MCG mode is in the default FEI mode out of reset - * One of 4 clocking oprions can be selected. - * One of 16 crystal values can be used - */ - -#include "common.h" -#include "mcg.h" - -extern int core_clk_khz; -extern int core_clk_mhz; -extern int periph_clk_khz; - -unsigned char pll_init(unsigned char clk_option, unsigned char crystal_val) -{ - unsigned char pll_freq; - - if (clk_option > 3) {return 0;} //return 0 if one of the available options is not selected - if (crystal_val > 15) {return 1;} // return 1 if one of the available crystal options is not available -//This assumes that the MCG is in default FEI mode out of reset. - -// First move to FBE mode -#if (defined(K60_CLK) || defined(K53_CLK) || defined(ASB817)) - MCG_C2 = 0; -#else -// Enable external oscillator, RANGE=2, HGO=1, EREFS=1, LP=0, IRCS=0 - MCG_C2 = MCG_C2_RANGE(2) | MCG_C2_HGO_MASK | MCG_C2_EREFS_MASK; -#endif - -// after initialization of oscillator release latched state of oscillator and GPIO - SIM_SCGC4 |= SIM_SCGC4_LLWU_MASK; - LLWU_CS |= LLWU_CS_ACKISO_MASK; - -// Select external oscilator and Reference Divider and clear IREFS to start ext osc -// CLKS=2, FRDIV=3, IREFS=0, IRCLKEN=0, IREFSTEN=0 - MCG_C1 = MCG_C1_CLKS(2) | MCG_C1_FRDIV(3); - - /* if we aren't using an osc input we don't need to wait for the osc to init */ -#if (!defined(K60_CLK) && !defined(K53_CLK) && !defined(ASB817)) - while (!(MCG_S & MCG_S_OSCINIT_MASK)){}; // wait for oscillator to initialize -#endif - - while (MCG_S & MCG_S_IREFST_MASK){}; // wait for Reference clock Status bit to clear - - while (((MCG_S & MCG_S_CLKST_MASK) >> MCG_S_CLKST_SHIFT) != 0x2){}; // Wait for clock status bits to show clock source is ext ref clk - -// Now in FBE - -#if (defined(K60_CLK) || defined(K53_CLK)) - MCG_C5 = MCG_C5_PRDIV(0x18); -#else -// Configure PLL Ref Divider, PLLCLKEN=0, PLLSTEN=0, PRDIV=5 -// The crystal frequency is used to select the PRDIV value. Only even frequency crystals are supported -// that will produce a 2MHz reference clock to the PLL. - MCG_C5 = MCG_C5_PRDIV(crystal_val); // Set PLL ref divider to match the crystal used -#endif - - // Ensure MCG_C6 is at the reset default of 0. LOLIE disabled, PLL disabled, clk monitor disabled, PLL VCO divider is clear - MCG_C6 = 0x0; -// Select the PLL VCO divider and system clock dividers depending on clocking option - switch (clk_option) { - case 0: - // Set system options dividers - //MCG=PLL, core = MCG, bus = MCG, FlexBus = MCG, Flash clock= MCG/2 - set_sys_dividers(0,0,0,1); - // Set the VCO divider and enable the PLL for 50MHz, LOLIE=0, PLLS=1, CME=0, VDIV=1 - MCG_C6 = MCG_C6_PLLS_MASK | MCG_C6_VDIV(1); //VDIV = 1 (x25) - pll_freq = 50; - break; - case 1: - // Set system options dividers - //MCG=PLL, core = MCG, bus = MCG/2, FlexBus = MCG/2, Flash clock= MCG/4 - set_sys_dividers(0,1,1,3); - // Set the VCO divider and enable the PLL for 100MHz, LOLIE=0, PLLS=1, CME=0, VDIV=26 - MCG_C6 = MCG_C6_PLLS_MASK | MCG_C6_VDIV(26); //VDIV = 26 (x50) - pll_freq = 100; - break; - case 2: - // Set system options dividers - //MCG=PLL, core = MCG, bus = MCG/2, FlexBus = MCG/2, Flash clock= MCG/4 - set_sys_dividers(0,1,1,3); - // Set the VCO divider and enable the PLL for 96MHz, LOLIE=0, PLLS=1, CME=0, VDIV=24 - MCG_C6 = MCG_C6_PLLS_MASK | MCG_C6_VDIV(24); //VDIV = 24 (x48) - pll_freq = 96; - break; - case 3: - // Set system options dividers - //MCG=PLL, core = MCG, bus = MCG, FlexBus = MCG, Flash clock= MCG/2 - set_sys_dividers(0,0,0,1); - // Set the VCO divider and enable the PLL for 48MHz, LOLIE=0, PLLS=1, CME=0, VDIV=0 - MCG_C6 = MCG_C6_PLLS_MASK; //VDIV = 0 (x24) - pll_freq = 48; - break; - } - while (!(MCG_S & MCG_S_PLLST_MASK)){}; // wait for PLL status bit to set - - while (!(MCG_S & MCG_S_LOCK_MASK)){}; // Wait for LOCK bit to set - -// Now running PBE Mode - -// Transition into PEE by setting CLKS to 0 -// CLKS=0, FRDIV=3, IREFS=0, IRCLKEN=0, IREFSTEN=0 - MCG_C1 &= ~MCG_C1_CLKS_MASK; - -// Wait for clock status bits to update - while (((MCG_S & MCG_S_CLKST_MASK) >> MCG_S_CLKST_SHIFT) != 0x3){}; - -// Now running PEE Mode - -return pll_freq; -} //pll_init - - - /* - * This routine must be placed in RAM. It is a workaround for errata e2448. - * Flash prefetch must be disabled when the flash clock divider is changed. - * This cannot be performed while executing out of flash. - * There must be a short delay after the clock dividers are changed before prefetch - * can be re-enabled. - */ -#if (defined(IAR)) - __ramfunc void set_sys_dividers(uint32 outdiv1, uint32 outdiv2, uint32 outdiv3, uint32 outdiv4) -#elif (defined(CW)) -__relocate_code__ -void set_sys_dividers(uint32 outdiv1, uint32 outdiv2, uint32 outdiv3, uint32 outdiv4) -#endif -{ - uint32 temp_reg; - uint8 i; - - temp_reg = FMC_PFAPR; // store present value of FMC_PFAPR - - // set M0PFD through M7PFD to 1 to disable prefetch - FMC_PFAPR |= FMC_PFAPR_M7PFD_MASK | FMC_PFAPR_M6PFD_MASK | FMC_PFAPR_M5PFD_MASK - | FMC_PFAPR_M4PFD_MASK | FMC_PFAPR_M3PFD_MASK | FMC_PFAPR_M2PFD_MASK - | FMC_PFAPR_M1PFD_MASK | FMC_PFAPR_M0PFD_MASK; - - // set clock dividers to desired value - SIM_CLKDIV1 = SIM_CLKDIV1_OUTDIV1(outdiv1) | SIM_CLKDIV1_OUTDIV2(outdiv2) - | SIM_CLKDIV1_OUTDIV3(outdiv3) | SIM_CLKDIV1_OUTDIV4(outdiv4); - - // wait for dividers to change - for (i = 0 ; i < outdiv4 ; i++) - {} - - FMC_PFAPR = temp_reg; // re-store original value of FMC_PFAPR - - return; -} // set_sys_dividers - - -/********************************************************************/ -void mcg_pee_2_blpi(void) -{ - uint8 temp_reg; - // Transition from PEE to BLPI: PEE -> PBE -> FBE -> FBI -> BLPI - - // Step 1: PEE -> PBE - MCG_C1 |= MCG_C1_CLKS(2); // System clock from external reference OSC, not PLL. - while (((MCG_S & MCG_S_CLKST_MASK) >> MCG_S_CLKST_SHIFT) != 0x2){}; // Wait for clock status to update. - - // Step 2: PBE -> FBE - MCG_C6 &= ~MCG_C6_PLLS_MASK; // Clear PLLS to select FLL, still running system from ext OSC. - while (MCG_S & MCG_S_PLLST_MASK){}; // Wait for PLL status flag to reflect FLL selected. - - // Step 3: FBE -> FBI - MCG_C2 &= ~MCG_C2_LP_MASK; // FLL remains active in bypassed modes. - MCG_C2 |= MCG_C2_IRCS_MASK; // Select fast (1MHz) internal reference - temp_reg = MCG_C1; - temp_reg &= ~(MCG_C1_CLKS_MASK | MCG_C1_IREFS_MASK); - temp_reg |= (MCG_C1_CLKS(1) | MCG_C1_IREFS_MASK); // Select internal reference (fast IREF clock @ 1MHz) as MCG clock source. - MCG_C1 = temp_reg; - - while (MCG_S & MCG_S_IREFST_MASK){}; // Wait for Reference Status bit to update. - while (((MCG_S & MCG_S_CLKST_MASK) >> MCG_S_CLKST_SHIFT) != 0x1){}; // Wait for clock status bits to update - - // Step 4: FBI -> BLPI - MCG_C1 |= MCG_C1_IREFSTEN_MASK; // Keep internal reference clock running in STOP modes. - MCG_C2 |= MCG_C2_LP_MASK; // FLL remains disabled in bypassed modes. - while (!(MCG_S & MCG_S_IREFST_MASK)){}; // Wait for Reference Status bit to update. - while (((MCG_S & MCG_S_CLKST_MASK) >> MCG_S_CLKST_SHIFT) != 0x1){}; // Wait for clock status bits to update. - -} // end MCG PEE to BLPI -/********************************************************************/ -void mcg_blpi_2_pee(void) -{ - uint8 temp_reg; - // Transition from BLPI to PEE: BLPI -> FBI -> FEI -> FBE -> PBE -> PEE - - // Step 1: BLPI -> FBI - MCG_C2 &= ~MCG_C2_LP_MASK; // FLL remains active in bypassed modes. - while (!(MCG_S & MCG_S_IREFST_MASK)){}; // Wait for Reference Status bit to update. - while (((MCG_S & MCG_S_CLKST_MASK) >> MCG_S_CLKST_SHIFT) != 0x1){}; // Wait for clock status bits to update - - // Step 2: FBI -> FEI - MCG_C2 &= ~MCG_C2_LP_MASK; // FLL remains active in bypassed modes. - temp_reg = MCG_C2; // assign temporary variable of MCG_C2 contents - temp_reg &= ~MCG_C2_RANGE_MASK; // set RANGE field location to zero - temp_reg |= (0x2 << 0x4); // OR in new values - MCG_C2 = temp_reg; // store new value in MCG_C2 - MCG_C4 = 0x0E; // Low-range DCO output (~10MHz bus). FCTRIM=%0111. - MCG_C1 = 0x04; // Select internal clock as MCG source, FRDIV=%000, internal reference selected. - - while (!(MCG_S & MCG_S_IREFST_MASK)){}; // Wait for Reference Status bit to update - while (((MCG_S & MCG_S_CLKST_MASK) >> MCG_S_CLKST_SHIFT) != 0x0){}; // Wait for clock status bits to update - - // Handle FEI to PEE transitions using standard clock initialization routine. - core_clk_mhz = pll_init(CORE_CLK_MHZ, REF_CLK); - - /* Use the value obtained from the pll_init function to define variables - * for the core clock in kHz and also the peripheral clock. These - * variables can be used by other functions that need awareness of the - * system frequency. - */ - core_clk_khz = core_clk_mhz * 1000; - periph_clk_khz = core_clk_khz / (((SIM_CLKDIV1 & SIM_CLKDIV1_OUTDIV2_MASK) >> 24)+ 1); -} // end MCG BLPI to PEE -/********************************************************************/ - -void mcg_pbe_2_pee(void) -{ - MCG_C1 &= ~MCG_C1_CLKS_MASK; // select PLL as MCG_OUT - // Wait for clock status bits to update - while (((MCG_S & MCG_S_CLKST_MASK) >> MCG_S_CLKST_SHIFT) != 0x3){}; - - switch (CORE_CLK_MHZ) { - case PLL50: - core_clk_khz = 50000; - break; - case PLL100: - core_clk_khz = 100000; - break; - case PLL96: - core_clk_khz = 96000; - break; - case PLL48: - core_clk_khz = 48000; - break; - } -} diff --git a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/drivers/mcg/mcg.h b/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/drivers/mcg/mcg.h deleted file mode 100644 index b214bffc2..000000000 --- a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/drivers/mcg/mcg.h +++ /dev/null @@ -1,61 +0,0 @@ -/* - * File: pll_init.h - * Purpose: pll_driver specific declarations - * - * Notes: - */ -#ifndef __MCG_H__ -#define __MCG_H__ -/********************************************************************/ - -/* For some reason CW needs to have cw.h explicitly included here for - * the code relocation of set_sys_dividers() to work correctly even - * though common.h should pull in cw.h. - */ -#if (defined(CW)) - #include "cw.h" -#endif - -unsigned char pll_init(unsigned char, unsigned char); - -void mcg_pee_2_blpi(void); -void mcg_blpi_2_pee(void); -void mcg_pbe_2_pee(void); - -#if (defined(IAR)) - __ramfunc void set_sys_dividers(uint32 outdiv1, uint32 outdiv2, uint32 outdiv3, uint32 outdiv4); -#elif (defined(CW)) - __relocate_code__ - void set_sys_dividers(uint32 outdiv1, uint32 outdiv2, uint32 outdiv3, uint32 outdiv4); -#endif - -enum clk_option -{ - PLL50, - PLL100, - PLL96, - PLL48 -}; - -enum crystal_val -{ - XTAL2, - XTAL4, - XTAL6, - XTAL8, - XTAL10, - XTAL12, - XTAL14, - XTAL16, - XTAL18, - XTAL20, - XTAL22, - XTAL24, - XTAL26, - XTAL28, - XTAL30, - XTAL32 -}; - -/********************************************************************/ -#endif /* __MCG_H__ */ diff --git a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/drivers/uart/uart.c b/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/drivers/uart/uart.c deleted file mode 100644 index c3eb9d704..000000000 --- a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/drivers/uart/uart.c +++ /dev/null @@ -1,129 +0,0 @@ -/* - * File: uart.c - * Purpose: Provide common UART routines for serial IO - * - * Notes: - * - */ - -#include "common.h" -#include "uart.h" - -/********************************************************************/ -/* - * Initialize the UART for 8N1 operation, interrupts disabled, and - * no hardware flow-control - * - * NOTE: Since the UARTs are pinned out in multiple locations on most - * Kinetis devices, this driver does not enable UART pin functions. - * The desired pins should be enabled before calling this init function. - * - * Parameters: - * uartch UART channel to initialize - * sysclk UART module Clock in kHz(used to calculate baud) - * baud UART baud rate - */ -void uart_init (UART_MemMapPtr uartch, int sysclk, int baud) -{ - register uint16 sbr, brfa; - uint8 temp; - - /* Enable the clock to the selected UART */ - if(uartch == UART0_BASE_PTR) - SIM_SCGC4 |= SIM_SCGC4_UART0_MASK; - else - if (uartch == UART1_BASE_PTR) - SIM_SCGC4 |= SIM_SCGC4_UART1_MASK; - else - if (uartch == UART2_BASE_PTR) - SIM_SCGC4 |= SIM_SCGC4_UART2_MASK; - else - if(uartch == UART3_BASE_PTR) - SIM_SCGC4 |= SIM_SCGC4_UART3_MASK; - else - if(uartch == UART4_BASE_PTR) - SIM_SCGC1 |= SIM_SCGC1_UART4_MASK; - else - SIM_SCGC1 |= SIM_SCGC1_UART5_MASK; - - /* Make sure that the transmitter and receiver are disabled while we - * change settings. - */ - UART_C2_REG(uartch) &= ~(UART_C2_TE_MASK - | UART_C2_RE_MASK ); - - /* Configure the UART for 8-bit mode, no parity */ - UART_C1_REG(uartch) = 0; /* We need all default settings, so entire register is cleared */ - - /* Calculate baud settings */ - sbr = (uint16)((sysclk*1000)/(baud * 16)); - - /* Save off the current value of the UARTx_BDH except for the SBR field */ - temp = UART_BDH_REG(uartch) & ~(UART_BDH_SBR(0x1F)); - - UART_BDH_REG(uartch) = temp | UART_BDH_SBR(((sbr & 0x1F00) >> 8)); - UART_BDL_REG(uartch) = (uint8)(sbr & UART_BDL_SBR_MASK); - - /* Determine if a fractional divider is needed to get closer to the baud rate */ - brfa = (((sysclk*32000)/(baud * 16)) - (sbr * 32)); - - /* Save off the current value of the UARTx_C4 register except for the BRFA field */ - temp = UART_C4_REG(uartch) & ~(UART_C4_BRFA(0x1F)); - - UART_C4_REG(uartch) = temp | UART_C4_BRFA(brfa); - - /* Enable receiver and transmitter */ - UART_C2_REG(uartch) |= (UART_C2_TE_MASK - | UART_C2_RE_MASK ); -} -/********************************************************************/ -/* - * Wait for a character to be received on the specified UART - * - * Parameters: - * channel UART channel to read from - * - * Return Values: - * the received character - */ -char uart_getchar (UART_MemMapPtr channel) -{ - /* Wait until character has been received */ - while (!(UART_S1_REG(channel) & UART_S1_RDRF_MASK)); - - /* Return the 8-bit data from the receiver */ - return UART_D_REG(channel); -} -/********************************************************************/ -/* - * Wait for space in the UART Tx FIFO and then send a character - * - * Parameters: - * channel UART channel to send to - * ch character to send - */ -void uart_putchar (UART_MemMapPtr channel, char ch) -{ - /* Wait until space is available in the FIFO */ - while(!(UART_S1_REG(channel) & UART_S1_TDRE_MASK)); - - /* Send the character */ - UART_D_REG(channel) = (uint8)ch; - } -/********************************************************************/ -/* - * Check to see if a character has been received - * - * Parameters: - * channel UART channel to check for a character - * - * Return values: - * 0 No character received - * 1 Character has been received - */ -int uart_getchar_present (UART_MemMapPtr channel) -{ - return (UART_S1_REG(channel) & UART_S1_RDRF_MASK); -} -/********************************************************************/ - diff --git a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/drivers/uart/uart.h b/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/drivers/uart/uart.h deleted file mode 100644 index 3ac90093a..000000000 --- a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/drivers/uart/uart.h +++ /dev/null @@ -1,20 +0,0 @@ -/* - * File: uart.h - * Purpose: Provide common ColdFire UART routines for polled serial IO - * - * Notes: - */ - -#ifndef __UART_H__ -#define __UART_H__ - -/********************************************************************/ - -void uart_init (UART_MemMapPtr, int, int); -char uart_getchar (UART_MemMapPtr); -void uart_putchar (UART_MemMapPtr, char); -int uart_getchar_present (UART_MemMapPtr); - -/********************************************************************/ - -#endif /* __UART_H__ */ diff --git a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/drivers/wdog/wdog.c b/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/drivers/wdog/wdog.c deleted file mode 100644 index 2a63ff7ac..000000000 --- a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/drivers/wdog/wdog.c +++ /dev/null @@ -1,59 +0,0 @@ -/* - * File: wdog.c - * Purpose: Provide common watchdog module routines - * - * Notes: Need to add more functionality. Right now it - * is just a disable routine since we know almost - * all projects will need that. - * - */ - -#include "common.h" -#include "wdog.h" - -/********************************************************************/ -/* - * Watchdog timer disable routine - * - * Parameters: - * none - */ -void wdog_disable(void) -{ - /* First unlock the watchdog so that we can write to registers */ - wdog_unlock(); - - /* Clear the WDOGEN bit to disable the watchdog */ - WDOG_STCTRLH &= ~WDOG_STCTRLH_WDOGEN_MASK; -} -/********************************************************************/ -/* - * Watchdog timer unlock routine. Writing 0xC520 followed by 0xD928 - * will unlock the write once registers in the WDOG so they are writable - * within the WCT period. - * - * Parameters: - * none - */ -void wdog_unlock(void) -{ - /* NOTE: DO NOT SINGLE STEP THROUGH THIS FUNCTION!!! */ - /* There are timing requirements for the execution of the unlock. If - * you single step through the code you will cause the CPU to reset. - */ - - /* This sequence must execute within 20 clock cycles, so disable - * interrupts will keep the code atomic and ensure the timing. - */ - DisableInterrupts; - - /* Write 0xC520 to the unlock register */ - WDOG_UNLOCK = 0xC520; - - /* Followed by 0xD928 to complete the unlock */ - WDOG_UNLOCK = 0xD928; - - /* Re-enable interrupts now that we are done */ - EnableInterrupts; -} -/********************************************************************/ diff --git a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/drivers/wdog/wdog.h b/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/drivers/wdog/wdog.h deleted file mode 100644 index 943229a39..000000000 --- a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/drivers/wdog/wdog.h +++ /dev/null @@ -1,18 +0,0 @@ -/* - * File: wdog.h - * Purpose: Provide common watchdog module routines - * - * Notes: - */ - -#ifndef __WDOG_H__ -#define __WDOG_H__ - -/********************************************************************/ - -// function prototypes -void wdog_disable(void); -void wdog_unlock(void); - -/********************************************************************/ -#endif /* __WDOG_H__ */ diff --git a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/ParTest.c b/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/ParTest.c deleted file mode 100644 index 1d6d6f359..000000000 --- a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/ParTest.c +++ /dev/null @@ -1,111 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/*----------------------------------------------------------- - * Simple GPIO (parallel port) IO routines. - *-----------------------------------------------------------*/ - -/* Kernel includes. */ -#include "FreeRTOS.h" -#include "task.h" - -/* Standard demo include. */ -#include "partest.h" - -/* Freescale includes. */ -#include "common.h" - -/* Only the LEDs on one of the two seven segment displays are used. */ -#define partstMAX_LEDS 4 - -/* The bits used to control the LEDs on the TWR-K60N512. */ -const unsigned long ulLEDs[ partstMAX_LEDS ] = { ( 1UL << 10UL ), ( 1UL << 29UL ), ( 1UL << 28UL ), ( 1UL << 11UL ) }; - -/*-----------------------------------------------------------*/ - -void vParTestInitialise( void ) -{ - /* Set PTA10, PTA11, PTA28, and PTA29 (connected to LED's) for GPIO - functionality. */ - PORTA_PCR10 = ( 0 | PORT_PCR_MUX( 1 ) ); - PORTA_PCR11 = ( 0 | PORT_PCR_MUX( 1 ) ); - PORTA_PCR28 = ( 0 | PORT_PCR_MUX( 1 ) ); - PORTA_PCR29 = ( 0 | PORT_PCR_MUX( 1 ) ); - - /* Change PTA10, PTA11, PTA28, PTA29 to outputs. */ - GPIOA_PDDR=GPIO_PDDR_PDD( ulLEDs[ 0 ] | ulLEDs[ 1 ] | ulLEDs[ 2 ] | ulLEDs[ 3 ] ); - - /* Start with LEDs off. */ - GPIOA_PTOR = ~0U; -} -/*-----------------------------------------------------------*/ - -void vParTestSetLED( unsigned long ulLED, signed portBASE_TYPE xValue ) -{ - if( ulLED < partstMAX_LEDS ) - { - if( xValue == pdTRUE ) - { - GPIOA_PCOR = ulLEDs[ ulLED ]; - } - else - { - GPIOA_PSOR = ulLEDs[ ulLED ]; - } - } -} -/*-----------------------------------------------------------*/ - -void vParTestToggleLED( unsigned long ulLED ) -{ - if( ulLED < partstMAX_LEDS ) - { - GPIOA_PTOR = ulLEDs[ ulLED ]; - } -} -/*-----------------------------------------------------------*/ - -long lParTestGetLEDState( unsigned long ulLED ) -{ -long lReturn = pdFALSE; - - if( ulLED < partstMAX_LEDS ) - { - lReturn = GPIOA_PDOR & ulLEDs[ ulLED ]; - - if( lReturn == 0 ) - { - lReturn = pdTRUE; - } - else - { - lReturn = pdFALSE; - } - } - - return lReturn; -} diff --git a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/RTOSDemo.ewd b/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/RTOSDemo.ewd deleted file mode 100644 index 999e00c69..000000000 --- a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/RTOSDemo.ewd +++ /dev/null @@ -1,1785 +0,0 @@ - - - - 2 - - Full - - ARM - - 1 - - C-SPY - 2 - - 22 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ARMSIM_ID - 2 - - 1 - 1 - 1 - - - - - - - - ANGEL_ID - 2 - - 0 - 1 - 1 - - - - - - - - - - - - GDBSERVER_ID - 2 - - 0 - 1 - 1 - - - - - - - - - - - IARROM_ID - 2 - - 1 - 1 - 1 - - - - - - - - - JLINK_ID - 2 - - 13 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - LMIFTDI_ID - 2 - - 2 - 1 - 1 - - - - - - - - - - MACRAIGOR_ID - 2 - - 3 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - PEMICRO_ID - 2 - - 0 - 1 - 1 - - - - - - - - - - - - - - - - - RDI_ID - 2 - - 2 - 1 - 1 - - - - - - - - - - - - - - - - STLINK_ID - 2 - - 2 - 1 - 1 - - - - - - - - - - - THIRDPARTY_ID - 2 - - 0 - 1 - 1 - - - - - - - - XDS100_ID - 2 - - 0 - 1 - 1 - - - - - - - $TOOLKIT_DIR$\plugins\rtos\CMX\CmxArmPlugin.ENU.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\CMX\CmxTinyArmPlugin.ENU.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\MQX\MQXRtosPlugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\OpenRTOS\OpenRTOSPlugin.ewplugin - 1 - - - $TOOLKIT_DIR$\plugins\rtos\PowerPac\PowerPacRTOS.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\Quadros\Quadros_EWB6_Plugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\SafeRTOS\SafeRTOSPlugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXArmPlugin.ENU.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-286-KA-CSpy.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-KA-CSpy.ewplugin - 0 - - - $EW_DIR$\common\plugins\CodeCoverage\CodeCoverage.ENU.ewplugin - 1 - - - $EW_DIR$\common\plugins\FreeRTOS\FreeRTOSPlugin.ewplugin - 0 - - - $EW_DIR$\common\plugins\OpenRTOS\OpenRTOSPlugin.ewplugin - 0 - - - $EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin - 0 - - - $EW_DIR$\common\plugins\Stack\Stack.ENU.ewplugin - 1 - - - $EW_DIR$\common\plugins\SymList\SymList.ENU.ewplugin - 1 - - - - - Blinky - - ARM - - 1 - - C-SPY - 2 - - 22 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ARMSIM_ID - 2 - - 1 - 1 - 1 - - - - - - - - ANGEL_ID - 2 - - 0 - 1 - 1 - - - - - - - - - - - - GDBSERVER_ID - 2 - - 0 - 1 - 1 - - - - - - - - - - - IARROM_ID - 2 - - 1 - 1 - 1 - - - - - - - - - JLINK_ID - 2 - - 13 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - LMIFTDI_ID - 2 - - 2 - 1 - 1 - - - - - - - - - - MACRAIGOR_ID - 2 - - 3 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - PEMICRO_ID - 2 - - 0 - 1 - 1 - - - - - - - - - - - - - - - - - RDI_ID - 2 - - 2 - 1 - 1 - - - - - - - - - - - - - - - - STLINK_ID - 2 - - 2 - 1 - 1 - - - - - - - - - - - THIRDPARTY_ID - 2 - - 0 - 1 - 1 - - - - - - - - XDS100_ID - 2 - - 0 - 1 - 1 - - - - - - - $TOOLKIT_DIR$\plugins\rtos\CMX\CmxArmPlugin.ENU.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\CMX\CmxTinyArmPlugin.ENU.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\MQX\MQXRtosPlugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\OpenRTOS\OpenRTOSPlugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\PowerPac\PowerPacRTOS.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\Quadros\Quadros_EWB6_Plugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\SafeRTOS\SafeRTOSPlugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXArmPlugin.ENU.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-286-KA-CSpy.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-KA-CSpy.ewplugin - 0 - - - $EW_DIR$\common\plugins\CodeCoverage\CodeCoverage.ENU.ewplugin - 1 - - - $EW_DIR$\common\plugins\FreeRTOS\FreeRTOSPlugin.ewplugin - 0 - - - $EW_DIR$\common\plugins\OpenRTOS\OpenRTOSPlugin.ewplugin - 0 - - - $EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin - 0 - - - $EW_DIR$\common\plugins\Stack\Stack.ENU.ewplugin - 1 - - - $EW_DIR$\common\plugins\SymList\SymList.ENU.ewplugin - 1 - - - - - - diff --git a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/RTOSDemo.ewp b/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/RTOSDemo.ewp deleted file mode 100644 index 009a00273..000000000 --- a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/RTOSDemo.ewp +++ /dev/null @@ -1,2016 +0,0 @@ - - - - 2 - - Full - - ARM - - 1 - - General - 3 - - 21 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ICCARM - 2 - - 28 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - AARM - 2 - - 8 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - OBJCOPY - 0 - - 1 - 1 - 1 - - - - - - - - - CUSTOM - 3 - - - - - - - BICOMP - 0 - - - - BUILDACTION - 1 - - - - - - - ILINK - 0 - - 13 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - IARCHIVE - 0 - - 0 - 1 - 1 - - - - - - - BILINK - 0 - - - - - Blinky - - ARM - - 1 - - General - 3 - - 21 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ICCARM - 2 - - 28 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - AARM - 2 - - 8 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - OBJCOPY - 0 - - 1 - 1 - 1 - - - - - - - - - CUSTOM - 3 - - - - - - - BICOMP - 0 - - - - BUILDACTION - 1 - - - - - - - ILINK - 0 - - 13 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - IARCHIVE - 0 - - 0 - 1 - 1 - - - - - - - BILINK - 0 - - - - - Common_Demo_Files - - Blinky - - - $PROJ_DIR$\..\Common\Minimal\BlockQ.c - - - $PROJ_DIR$\..\Common\Minimal\blocktim.c - - - $PROJ_DIR$\..\Common\Minimal\countsem.c - - - $PROJ_DIR$\..\Common\Minimal\death.c - - - $PROJ_DIR$\..\Common\Minimal\dynamic.c - - - $PROJ_DIR$\..\Common\Minimal\GenQTest.c - - - $PROJ_DIR$\..\Common\Minimal\PollQ.c - - - $PROJ_DIR$\..\Common\Minimal\QPeek.c - - - $PROJ_DIR$\..\Common\Minimal\recmutex.c - - - $PROJ_DIR$\..\Common\Minimal\semtest.c - - - $PROJ_DIR$\..\Common\Minimal\TimerDemo.c - - - - FreeRTOS_Source - - portable - - $PROJ_DIR$\..\..\Source\portable\MemMang\heap_2.c - - - $PROJ_DIR$\..\..\Source\portable\IAR\ARM_CM3\port.c - - - $PROJ_DIR$\..\..\Source\portable\IAR\ARM_CM3\portasm.s - - - - $PROJ_DIR$\..\..\Source\list.c - - - $PROJ_DIR$\..\..\Source\queue.c - - - $PROJ_DIR$\..\..\Source\tasks.c - - - $PROJ_DIR$\..\..\Source\timers.c - - - - Freescale_Code - - common - - $PROJ_DIR$\Freescale_Code\common\startup.c - - - - cpu - - $PROJ_DIR$\Freescale_Code\cpu\arm_cm4.c - - - $PROJ_DIR$\Freescale_Code\cpu\crt0.s - - - $PROJ_DIR$\Freescale_Code\cpu\start.c - - - $PROJ_DIR$\Freescale_Code\cpu\sysinit.c - - - $PROJ_DIR$\Freescale_Code\cpu\vectors.c - - - - drivers - - enet - - Blinky - - - $PROJ_DIR$\Freescale_Code\drivers\enet\enet.c - - - $PROJ_DIR$\Freescale_Code\drivers\enet\eth_phy.c - - - $PROJ_DIR$\Freescale_Code\drivers\enet\mii.c - - - - mcg - - $PROJ_DIR$\Freescale_Code\drivers\mcg\mcg.c - - - - uart - - $PROJ_DIR$\Freescale_Code\drivers\uart\uart.c - - - - wdog - - $PROJ_DIR$\Freescale_Code\drivers\wdog\wdog.c - - - - - - FreeTCPIP (based on uIP) - - Blinky - - - webserver - - Common - - $PROJ_DIR$\..\Common\ethernet\FreeTCPIP\apps\httpd\http-strings.c - - - $PROJ_DIR$\..\Common\ethernet\FreeTCPIP\apps\httpd\httpd-fs.c - - - $PROJ_DIR$\..\Common\ethernet\FreeTCPIP\apps\httpd\httpd.c - - - - Port specific - - $PROJ_DIR$\webserver\EMAC.c - - - $PROJ_DIR$\webserver\httpd-cgi.c - - - - - $PROJ_DIR$\..\Common\ethernet\FreeTCPIP\psock.c - - - $PROJ_DIR$\..\Common\ethernet\FreeTCPIP\timer.c - - - $PROJ_DIR$\..\Common\ethernet\FreeTCPIP\uip.c - - - $PROJ_DIR$\..\Common\ethernet\FreeTCPIP\uip_arp.c - - - - $PROJ_DIR$\FreeRTOSConfig.h - - - $PROJ_DIR$\main-full.c - - Blinky - - - - $PROJ_DIR$\main_blinky.c - - Full - - - - $PROJ_DIR$\ParTest.c - - Blinky - - - - $PROJ_DIR$\uIP_Task.c - - Blinky - - - - - diff --git a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/RTOSDemo.eww b/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/RTOSDemo.eww deleted file mode 100644 index bbb1d0840..000000000 --- a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/RTOSDemo.eww +++ /dev/null @@ -1,50 +0,0 @@ - - - - - $WS_DIR$\RTOSDemo.ewp - - - - All - - gpio_k40_tower - FLASH_128KB_PFLASH - - - gpio_k40_tower - FLASH_64KB_PFLASH_64KB_DFLASH - - - gpio_k40_tower - RAM_128KB - - - RTOSDemo - FLASH_128KB_PFLASH - - - RTOSDemo - FLASH_64KB_PFLASH_64KB_DFLASH - - - RTOSDemo - RAM_128KB - - - gpio_k53_tower - FLASH_128KB_PFLASH - - - gpio_k53_tower - FLASH_64KB_PFLASH_64KB_DFLASH - - - gpio_k53_tower - RAM_128KB - - - - - - diff --git a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/ReadMe.txt b/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/ReadMe.txt new file mode 100644 index 000000000..12c70d213 --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/ReadMe.txt @@ -0,0 +1 @@ +The third party uIP TCP/IP stack and the demo project that used to be in this directory was removed in FreeRTOS version V10.4.3 due to security vulnerabilities identified in uIP. In a future version this demo may be replaced by a version which does not use TCP/IP or uses FreeRTOS’s own TCP/IP stack in place of the original third party stack. \ No newline at end of file diff --git a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/main-full.c b/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/main-full.c deleted file mode 100644 index f6d840b7e..000000000 --- a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/main-full.c +++ /dev/null @@ -1,629 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* - * main-blinky.c is included when the "Blinky" build configuration is used. - * main-full.c is included when the "Full" build configuration is used. - * - * main-full.c (this file) defines a comprehensive demo that creates many - * tasks, queues, semaphores and timers. It also demonstrates how Cortex-M3 - * interrupts can interact with FreeRTOS tasks/timers, a simple web server, and - * run time statistics gathering functionality. ***IF YOU ARE LOOKING FOR A - * SIMPLER STARTING POINT THEN USE THE "BLINKY" BUILD CONFIGURATION FIRST.*** - * - * If the Ethernet functionality is excluded, then this demo will run 'stand - * alone' (without the rest of the tower system) on the TWR-K60N512 tower - * module. If the Ethernet functionality is included, then the full Freescale - * K60 tower kit, including both the TWR-K60N512 and TWR-SER modules, is - * required (as the Ethernet connector is on the TWR-SER). The TWR-K60N512 is - * populated with a K60N512 Cortex-M4 microcontroller. - * - * The main() Function: - * main() creates four demo specific software timers, and one demo specific - * task (the web server task). It also creates a whole host of 'standard - * demo' tasks/queues/semaphores/timers, before starting the scheduler. The - * demo specific tasks and timers are described in the comments here. The - * standard demo tasks are described on the FreeRTOS.org web site. - * - * The standard demo tasks provide no specific functionality. They are - * included to both test the FreeRTOS port, and provide examples of how the - * various FreeRTOS API functions can be used. - * - * This demo creates 37 persistent tasks, then dynamically creates and destroys - * another two tasks as the demo executes. - * - * - * The Demo Specific "LED" Timers and Callback Function: - * Two very simple LED timers are created. All they do is toggle an LED each - * when the timer callback function is executed. The two timers share a - * callback function, so the callback function parameter is used to determine - * which timer actually expired, and therefore, which LED to toggle. Both - * timers use a different frequency, one toggles the blue LED and the other the - * green LED. - * - * The LED/Button Software Timer and the Button Interrupt: - * The user button SW2 is configured to generate an interrupt each time it is - * pressed. The interrupt service routine switches the orange/yellow LED on, - * and resets the LED software timer. The LED timer has a 5000 millisecond (5 - * second) period, and uses a callback function that is defined to just turn the - * LED off again. Therefore, pressing the user button will turn the LED on, and - * the LED will remain on until a full five seconds pass without the button - * being pressed. - * - * The Demo Specific "Check" Timer and Callback Function: - * The check timer period is initially set to three seconds. The check timer - * callback function checks that all the standard demo tasks are not only still - * executing, but are executing without reporting any errors. If the check - * timer discovers that a task has either stalled, or reported an error, then it - * changes its own period from the initial three seconds, to just 200ms. The - * check timer callback function also toggles the orange/red LED each time it is - * called. This provides a visual indication of the system status: If the LED - * toggles every three seconds, then no issues have been discovered. If the LED - * toggles every 200ms, then an issue has been discovered with at least one - * task. The last reported issue is latched into the pcStatusMessage variable, - * and displayed at the bottom of the "task stats" web page served by the - * embedded web server task. - * - * The web server task: - * The web server task implements a simple embedded web server that includes - * CGI scripting. Pages are provided that allow task statistics, network - * statistics and run time statistics to be viewed. In addition, an IO page is - * served that allows the orange/yellow LED to be turned on and off. Finally, - * a page is included that serves a large jpg file. See the documentation page - * for this demo on the http://www.FreeRTOS.org web site for web server - * configuration and usage instructions. - * - * The Demo Specific Idle Hook Function: - * The idle hook function demonstrates how to query the amount of FreeRTOS heap - * space that is remaining (see vApplicationIdleHook() defined in this file). - * - * The Demo Specific Tick Hook Function: - * The tick hook function is used to test the interrupt safe software timer - * functionality. - * - */ - -/* Kernel includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "queue.h" -#include "timers.h" - -/* Freescale includes. */ -#include "common.h" - -/* Common demo includes. */ -#include "partest.h" -#include "flash.h" -#include "BlockQ.h" -#include "death.h" -#include "blocktim.h" -#include "semtest.h" -#include "GenQTest.h" -#include "QPeek.h" -#include "recmutex.h" -#include "TimerDemo.h" -#include "PollQ.h" -#include "countsem.h" -#include "dynamic.h" - -/* The LED toggled by the check timer callback function. */ -#define mainCHECK_LED 3UL - -/* The LED turned on by the button interrupt, and turned off by the LED timer. */ -#define mainTIMER_CONTROLLED_LED 2UL - -/* The LEDs toggled by the two simple flash LED timers. */ -#define mainLED0 0UL -#define mainLED1 1UL - -/* Constant used by the standard timer test functions. */ -#define mainTIMER_TEST_PERIOD ( 50 ) - -/* Priorities used by the various different standard demo tasks. */ -#define mainQUEUE_POLL_PRIORITY ( tskIDLE_PRIORITY + 1 ) -#define mainSEM_TEST_PRIORITY ( tskIDLE_PRIORITY + 1 ) -#define mainBLOCK_Q_PRIORITY ( tskIDLE_PRIORITY + 2 ) -#define mainCREATOR_TASK_PRIORITY ( tskIDLE_PRIORITY + 3 ) -#define mainGEN_QUEUE_TASK_PRIORITY ( tskIDLE_PRIORITY ) -#define mainuIP_TASK_PRIORITY ( tskIDLE_PRIORITY + 2 ) - -/* The WEB server uses string handling functions, which in turn use a bit more -stack than most of the other tasks. */ -#define mainuIP_STACK_SIZE ( configMINIMAL_STACK_SIZE * 3 ) - -/* The period at which the check timer will expire, in ms, provided no errors -have been reported by any of the standard demo tasks. ms are converted to the -equivalent in ticks using the portTICK_PERIOD_MS constant. */ -#define mainCHECK_TIMER_PERIOD_MS ( 3000UL / portTICK_PERIOD_MS ) - -/* The period at which the check timer will expire, in ms, if an error has been -reported in one of the standard demo tasks. ms are converted to the equivalent -in ticks using the portTICK_PERIOD_MS constant. */ -#define mainERROR_CHECK_TIMER_PERIOD_MS ( 200UL / portTICK_PERIOD_MS ) - -/* The LED that is turned on by pressing SW2 remains on until the button has not -been pushed for a full 5000ms. */ -#define mainBUTTON_LED_TIMER_PERIOD_MS ( 5000UL / portTICK_PERIOD_MS ) - -/* The period at which the two simple LED flash timers will execute their -callback functions. */ -#define mainLED1_TIMER_PERIOD_MS ( 200UL / portTICK_PERIOD_MS ) -#define mainLED2_TIMER_PERIOD_MS ( 600UL / portTICK_PERIOD_MS ) - -/* A block time of zero simply means "don't block". */ -#define mainDONT_BLOCK ( 0UL ) - -/* The vector used by the GPIO port E. Button SW2 is configured to generate -an interrupt on this port. */ -#define mainGPIO_E_VECTOR ( 91 ) - -/*-----------------------------------------------------------*/ - -/* - * Setup the NVIC, LED outputs, and button inputs. - */ -static void prvSetupHardware( void ); - -/* - * Creates the timers that are specific to this demo - namely, the check timer - * the button LED timer, and the two simple LED flash timers. - */ -static void prvCreateDemoSpecificTimers( void ); - -/* - * The LED/button timer callback function. This does nothing but switch an LED - * off. - */ -static void prvButtonLEDTimerCallback( TimerHandle_t xTimer ); - -/* - * The callback function used by both simple LED flash timers. Both timers use - * the same callback, so the function parameter is used to determine which LED - * should be flashed (effectively to determine which timer has expired). - */ -static void prvLEDTimerCallback( TimerHandle_t xTimer ); - -/* - * The check timer callback function, as described at the top of this file. - */ -static void prvCheckTimerCallback( TimerHandle_t xTimer ); - -/* - * Contains the implementation of the web server. - */ -extern void vuIP_Task( void *pvParameters ); - -/*-----------------------------------------------------------*/ - -/* The LED/Button software timer. This uses prvButtonLEDTimerCallback() as it's -callback function. */ -static TimerHandle_t xLEDButtonTimer = NULL; - -/* The check timer. This uses prvCheckTimerCallback() as its callback -function. */ -static TimerHandle_t xCheckTimer = NULL; - -/* LED timers - these simply flash LEDs, each using a different frequency. Both -use the same prvLEDTimerCallback() callback function. */ -static TimerHandle_t xLED1Timer = NULL, xLED2Timer = NULL; - -/* If an error is detected in a standard demo task, then pcStatusMessage will -be set to point to a string that identifies the offending task. This is just -to make debugging easier. */ -static const char *pcStatusMessage = NULL; - -/* Used in the run time stats calculations. */ -static unsigned long ulClocksPer10thOfAMilliSecond = 0UL; - -/*-----------------------------------------------------------*/ - -void main( void ) -{ - /* Configure the NVIC, LED outputs and button inputs. */ - prvSetupHardware(); - - /* Create the timers that are specific to this demo - other timers are - created as part of the standard demo within vStartTimerDemoTask. */ - prvCreateDemoSpecificTimers(); - - /* Create a lot of 'standard demo' tasks. Nearly 40 tasks are created in - this demo. For a much simpler demo, select the 'blinky' build - configuration. */ - vStartBlockingQueueTasks( mainBLOCK_Q_PRIORITY ); - vCreateBlockTimeTasks(); - vStartSemaphoreTasks( mainSEM_TEST_PRIORITY ); - vStartGenericQueueTasks( mainGEN_QUEUE_TASK_PRIORITY ); - vStartQueuePeekTasks(); - vStartRecursiveMutexTasks(); - vStartTimerDemoTask( mainTIMER_TEST_PERIOD ); - vStartPolledQueueTasks( mainQUEUE_POLL_PRIORITY ); - vStartCountingSemaphoreTasks(); - vStartDynamicPriorityTasks(); - - /* The web server task. */ - xTaskCreate( vuIP_Task, "uIP", mainuIP_STACK_SIZE, NULL, mainuIP_TASK_PRIORITY, NULL ); - - /* The suicide tasks must be created last, as they need to know how many - tasks were running prior to their creation in order to ascertain whether - or not the correct/expected number of tasks are running at any given - time. */ - vCreateSuicidalTasks( mainCREATOR_TASK_PRIORITY ); - - /* Start the tasks and timers running. */ - vTaskStartScheduler(); - - /* If all is well, the scheduler will now be running, and the following line - will never be reached. If the following line does execute, then there was - insufficient FreeRTOS heap memory available for the idle and/or timer tasks - to be created. See the memory management section on the FreeRTOS web site - for more details. */ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -static void prvCheckTimerCallback( TimerHandle_t xTimer ) -{ -static long lChangedTimerPeriodAlready = pdFALSE; - - /* Check the standard demo tasks are running without error. Latch the - latest reported error in the pcStatusMessage character pointer. The latched - string can be viewed using the embedded web server - it is displayed at - the bottom of the served "task stats" page. */ - if( xAreGenericQueueTasksStillRunning() != pdTRUE ) - { - pcStatusMessage = "Error: GenQueue"; - } - - if( xAreQueuePeekTasksStillRunning() != pdTRUE ) - { - pcStatusMessage = "Error: QueuePeek\n"; - } - - if( xAreBlockingQueuesStillRunning() != pdTRUE ) - { - pcStatusMessage = "Error: BlockQueue\n"; - } - - if( xAreBlockTimeTestTasksStillRunning() != pdTRUE ) - { - pcStatusMessage = "Error: BlockTime\n"; - } - - if( xAreSemaphoreTasksStillRunning() != pdTRUE ) - { - pcStatusMessage = "Error: SemTest\n"; - } - - if( xIsCreateTaskStillRunning() != pdTRUE ) - { - pcStatusMessage = "Error: Death\n"; - } - - if( xAreRecursiveMutexTasksStillRunning() != pdTRUE ) - { - pcStatusMessage = "Error: RecMutex\n"; - } - - if( xAreTimerDemoTasksStillRunning( ( mainCHECK_TIMER_PERIOD_MS ) ) != pdTRUE ) - { - pcStatusMessage = "Error: TimerDemo\n"; - } - - if( xArePollingQueuesStillRunning() != pdTRUE ) - { - pcStatusMessage = "Error: PollQueue\n"; - } - - if( xAreCountingSemaphoreTasksStillRunning() != pdTRUE ) - { - pcStatusMessage = "Error: CountSem\n"; - } - - if( xAreDynamicPriorityTasksStillRunning() != pdTRUE ) - { - pcStatusMessage = "Error: DynamicPriority\n"; - } - - /* Toggle the check LED to give an indication of the system status. If - the LED toggles every mainCHECK_TIMER_PERIOD_MS milliseconds then - everything is ok. A faster toggle indicates an error. */ - vParTestToggleLED( mainCHECK_LED ); - - /* Have any errors been latch in pcStatusMessage? If so, shorten the - period of the check timer to mainERROR_CHECK_TIMER_PERIOD_MS milliseconds. - This will result in an increase in the rate at which mainCHECK_LED - toggles. */ - if( pcStatusMessage != NULL ) - { - if( lChangedTimerPeriodAlready == pdFALSE ) - { - lChangedTimerPeriodAlready = pdTRUE; - - /* This call to xTimerChangePeriod() uses a zero block time. - Functions called from inside of a timer callback function must - *never* attempt to block. */ - xTimerChangePeriod( xCheckTimer, ( mainERROR_CHECK_TIMER_PERIOD_MS ), mainDONT_BLOCK ); - } - } -} -/*-----------------------------------------------------------*/ - -static void prvButtonLEDTimerCallback( TimerHandle_t xTimer ) -{ - /* The timer has expired - so no button pushes have occurred in the last - five seconds - turn the LED off. */ - vParTestSetLED( mainTIMER_CONTROLLED_LED, pdFALSE ); -} -/*-----------------------------------------------------------*/ - -static void prvLEDTimerCallback( TimerHandle_t xTimer ) -{ -unsigned long ulLED; - - /* This callback is shared by two timers, so the parameter is used to - determine which LED to toggle. The LED number is stored in the ID of the - timer. */ - ulLED = ( unsigned long ) pvTimerGetTimerID( xTimer ); - vParTestToggleLED( ulLED ); -} -/*-----------------------------------------------------------*/ - -/* The ISR executed when the user button is pushed. */ -void vPort_E_ISRHandler( void ) -{ -portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE; - - /* The button was pushed, so ensure the LED is on before resetting the - LED timer. The LED timer will turn the LED off if the button is not - pushed within 5000ms. */ - vParTestSetLED( mainTIMER_CONTROLLED_LED, pdTRUE ); - - /* This interrupt safe FreeRTOS function can be called from this interrupt - because the interrupt priority is equal to or below the - configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY setting in FreeRTOSConfig.h. */ - xTimerResetFromISR( xLEDButtonTimer, &xHigherPriorityTaskWoken ); - - /* Clear the interrupt before leaving. */ - PORTE_ISFR = 0xFFFFFFFFUL; - - /* If calling xTimerResetFromISR() caused a task (in this case the timer - service/daemon task) to unblock, and the unblocked task has a priority - higher than or equal to the task that was interrupted, then - xHigherPriorityTaskWoken will now be set to pdTRUE, and calling - portEND_SWITCHING_ISR() will ensure the unblocked task runs next. */ - portEND_SWITCHING_ISR( xHigherPriorityTaskWoken ); -} -/*-----------------------------------------------------------*/ - -static void prvSetupHardware( void ) -{ - /* Enable the interrupt on SW1. */ - taskDISABLE_INTERRUPTS(); - PORTE_PCR26 = PORT_PCR_MUX( 1 ) | PORT_PCR_IRQC( 0xA ) | PORT_PCR_PE_MASK | PORT_PCR_PS_MASK; - enable_irq( mainGPIO_E_VECTOR ); - - /* The interrupt calls an interrupt safe API function - so its priority must - be equal to or lower than configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY. */ - set_irq_priority( mainGPIO_E_VECTOR, configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY ); - - /* Configure the LED outputs. */ - vParTestInitialise(); -} -/*-----------------------------------------------------------*/ - -static void prvCreateDemoSpecificTimers( void ) -{ - /* This function creates the timers, but does not start them. This is - because the standard demo timer test is started from main(), after this - function is called. The standard demo timer test will deliberately fill the - timer command queue - and will fail the test if the command queue already - holds start commands for the timers created here. Instead, the timers - created in this function are started from the idle task, at which time, the - timer service/daemon task will be running, and will have drained the timer - command queue. */ - - /* Create the software timer that is responsible for turning off the LED - if the button is not pushed within 5000ms, as described at the top of - this file. */ - xLEDButtonTimer = xTimerCreate( "ButtonLEDTimer", /* A text name, purely to help debugging. */ - ( mainBUTTON_LED_TIMER_PERIOD_MS ), /* The timer period, in this case 5000ms (5s). */ - pdFALSE, /* This is a one-shot timer, so xAutoReload is set to pdFALSE. */ - ( void * ) 0, /* The ID is not used, so can be set to anything. */ - prvButtonLEDTimerCallback /* The callback function that switches the LED off. */ - ); - - /* Create the software timer that performs the 'check' functionality, - as described at the top of this file. */ - xCheckTimer = xTimerCreate( "CheckTimer", /* A text name, purely to help debugging. */ - ( mainCHECK_TIMER_PERIOD_MS ), /* The timer period, in this case 3000ms (3s). */ - pdTRUE, /* This is an auto-reload timer, so xAutoReload is set to pdTRUE. */ - ( void * ) 0, /* The ID is not used, so can be set to anything. */ - prvCheckTimerCallback /* The callback function that inspects the status of all the other tasks. */ - ); - - /* Create the software timers used to simply flash LEDs. These two timers - share a callback function, so the callback parameter is used to pass in the - LED that should be toggled. */ - xLED1Timer = xTimerCreate( "LED1Timer", /* A text name, purely to help debugging. */ - ( mainLED1_TIMER_PERIOD_MS ), /* The timer period, in this case 3000ms (3s). */ - pdTRUE, /* This is an auto-reload timer, so xAutoReload is set to pdTRUE. */ - ( void * ) mainLED0, /* The ID is used to pass in the number of the LED to be toggled. */ - prvLEDTimerCallback /* The callback function simply toggles the LED specified by its parameter. */ - ); - - xLED2Timer = xTimerCreate( "LED2Timer", /* A text name, purely to help debugging. */ - ( mainLED2_TIMER_PERIOD_MS ), /* The timer period, in this case 3000ms (3s). */ - pdTRUE, /* This is an auto-reload timer, so xAutoReload is set to pdTRUE. */ - ( void * ) mainLED1, /* The ID is used to pass in the number of the LED to be toggled. */ - prvLEDTimerCallback /* The callback function simply toggles the LED specified by its parameter. */ - ); -} -/*-----------------------------------------------------------*/ - -void vApplicationMallocFailedHook( void ) -{ - /* Called if a call to pvPortMalloc() fails because there is insufficient - free memory available in the FreeRTOS heap. pvPortMalloc() is called - internally by FreeRTOS API functions that create tasks, queues, software - timers, and semaphores. The size of the FreeRTOS heap is set by the - configTOTAL_HEAP_SIZE configuration constant in FreeRTOSConfig.h. */ - taskDISABLE_INTERRUPTS(); - for( ;; ); -} -/*-----------------------------------------------------------*/ - -void vApplicationStackOverflowHook( TaskHandle_t pxTask, char *pcTaskName ) -{ - ( void ) pcTaskName; - ( void ) pxTask; - - /* Run time stack overflow checking is performed if - configCHECK_FOR_STACK_OVERFLOW is defined to 1 or 2. This hook - function is called if a stack overflow is detected. */ - taskDISABLE_INTERRUPTS(); - for( ;; ); -} -/*-----------------------------------------------------------*/ - -void vApplicationIdleHook( void ) -{ -static long lPrintedOut = pdFALSE; -volatile size_t xFreeHeapSpace; - - if( lPrintedOut == pdFALSE ) - { - lPrintedOut = pdTRUE; - - /* The timer command queue will have been filled when the timer test - tasks were created in main() (this is part of the test they perform). - Therefore, while the check and LED timers can be created in main(), they - cannot be started from main(). Once the scheduler has started, the timer - service task will drain the command queue, and now the check and LED - timers can be started successfully. Normally the idle task must not - call a function that could cause it to block in case there are no tasks - that are able to run. In this case, however, it is ok as posting to the - timer command queue guarantees that at least the timer service/daemon - task will be able to execute. */ - xTimerStart( xCheckTimer, portMAX_DELAY ); - xTimerStart( xLED1Timer, portMAX_DELAY ); - xTimerStart( xLED2Timer, portMAX_DELAY ); - - xFreeHeapSpace = xPortGetFreeHeapSize(); - - if( xFreeHeapSpace > 100 ) - { - /* By now, the kernel has allocated everything it is going to, so - if there is a lot of heap remaining unallocated then - the value of configTOTAL_HEAP_SIZE in FreeRTOSConfig.h can be - reduced accordingly. */ - } - } -} -/*-----------------------------------------------------------*/ - -void vApplicationTickHook( void ) -{ - /* Call the periodic timer test, which tests the timer API functions that - can be called from an ISR. */ - vTimerPeriodicISRTests(); -} -/*-----------------------------------------------------------*/ - -char *pcGetTaskStatusMessage( void ) -{ - /* A simple GET function used by a CGI script so it can display the - execution status at the bottom of the task stats web page served by the - embedded web server. */ - if( pcStatusMessage == NULL ) - { - return "All tasks running without error"; - } - else - { - return ( char * ) pcStatusMessage; - } -} -/*-----------------------------------------------------------*/ - -void vMainConfigureTimerForRunTimeStats( void ) -{ - /* How many clocks are there per tenth of a millisecond? */ - ulClocksPer10thOfAMilliSecond = configCPU_CLOCK_HZ / 10000UL; -} -/*-----------------------------------------------------------*/ - -unsigned long ulMainGetRunTimeCounterValue( void ) -{ -unsigned long ulSysTickCounts, ulTickCount, ulReturn; -const unsigned long ulSysTickReloadValue = ( configCPU_CLOCK_HZ / configTICK_RATE_HZ ) - 1UL; -volatile unsigned long * const pulCurrentSysTickCount = ( ( volatile unsigned long *) 0xe000e018 ); -volatile unsigned long * const pulInterruptCTRLState = ( ( volatile unsigned long *) 0xe000ed04 ); -const unsigned long ulSysTickPendingBit = 0x04000000UL; - - /* NOTE: There are potentially race conditions here. However, it is used - anyway to keep the examples simple, and to avoid reliance on a separate - timer peripheral. */ - - - /* The SysTick is a down counter. How many clocks have passed since it was - last reloaded? */ - ulSysTickCounts = ulSysTickReloadValue - *pulCurrentSysTickCount; - - /* How many times has it overflowed? */ - ulTickCount = xTaskGetTickCountFromISR(); - - /* This is called from the context switch, so will be called from a - critical section. xTaskGetTickCountFromISR() contains its own critical - section, and the ISR safe critical sections are not designed to nest, - so reset the critical section. */ - portSET_INTERRUPT_MASK_FROM_ISR(); - - /* Is there a SysTick interrupt pending? */ - if( ( *pulInterruptCTRLState & ulSysTickPendingBit ) != 0UL ) - { - /* There is a SysTick interrupt pending, so the SysTick has overflowed - but the tick count not yet incremented. */ - ulTickCount++; - - /* Read the SysTick again, as the overflow might have occurred since - it was read last. */ - ulSysTickCounts = ulSysTickReloadValue - *pulCurrentSysTickCount; - } - - /* Convert the tick count into tenths of a millisecond. THIS ASSUMES - configTICK_RATE_HZ is 1000! */ - ulReturn = ( ulTickCount * 10UL ) ; - - /* Add on the number of tenths of a millisecond that have passed since the - tick count last got updated. */ - ulReturn += ( ulSysTickCounts / ulClocksPer10thOfAMilliSecond ); - - return ulReturn; -} -/*-----------------------------------------------------------*/ - diff --git a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/main_blinky.c b/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/main_blinky.c deleted file mode 100644 index 902a52155..000000000 --- a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/main_blinky.c +++ /dev/null @@ -1,363 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* - * main-blinky.c is included when the "Blinky" build configuration is used. - * main-full.c is included when the "Full" build configuration is used. - * - * main-blinky.c (this file) defines a very simple demo that creates two tasks, - * one queue, and one timer. It also demonstrates how Cortex-M3 interrupts can - * interact with FreeRTOS tasks/timers. - * - * This simple demo project runs 'stand alone' (without the rest of the tower - * system) on the TWR-K60N512 tower module, which is populated with a K60N512 - * Cortex-M4 microcontroller. - * - * The idle hook function: - * The idle hook function demonstrates how to query the amount of FreeRTOS heap - * space that is remaining (see vApplicationIdleHook() defined in this file). - * - * The main() Function: - * main() creates one software timer, one queue, and two tasks. It then starts - * the scheduler. - * - * The Queue Send Task: - * The queue send task is implemented by the prvQueueSendTask() function in - * this file. prvQueueSendTask() sits in a loop that causes it to repeatedly - * block for 200 milliseconds, before sending the value 100 to the queue that - * was created within main(). Once the value is sent, the task loops back - * around to block for another 200 milliseconds. - * - * The Queue Receive Task: - * The queue receive task is implemented by the prvQueueReceiveTask() function - * in this file. prvQueueReceiveTask() sits in a loop that causes it to - * repeatedly attempt to read data from the queue that was created within - * main(). When data is received, the task checks the value of the data, and - * if the value equals the expected 100, toggles the blue LED. The 'block - * time' parameter passed to the queue receive function specifies that the task - * should be held in the Blocked state indefinitely to wait for data to be - * available on the queue. The queue receive task will only leave the Blocked - * state when the queue send task writes to the queue. As the queue send task - * writes to the queue every 200 milliseconds, the queue receive task leaves the - * Blocked state every 200 milliseconds, and therefore toggles the blue LED - * every 200 milliseconds. - * - * The LED Software Timer and the Button Interrupt: - * The user button SW2 is configured to generate an interrupt each time it is - * pressed. The interrupt service routine switches the green LED on, and - * resets the LED software timer. The LED timer has a 5000 millisecond (5 - * second) period, and uses a callback function that is defined to just turn the - * LED off again. Therefore, pressing the user button will turn the LED on, and - * the LED will remain on until a full five seconds pass without the button - * being pressed. - */ - -/* Kernel includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "queue.h" -#include "timers.h" - -/* Freescale includes. */ -#include "common.h" - -/* Priorities at which the tasks are created. */ -#define mainQUEUE_RECEIVE_TASK_PRIORITY ( tskIDLE_PRIORITY + 2 ) -#define mainQUEUE_SEND_TASK_PRIORITY ( tskIDLE_PRIORITY + 1 ) - -/* The rate at which data is sent to the queue, specified in milliseconds, and -converted to ticks using the portTICK_PERIOD_MS constant. */ -#define mainQUEUE_SEND_FREQUENCY_MS ( 200 / portTICK_PERIOD_MS ) - -/* The LED will remain on until the button has not been pushed for a full -5000ms. */ -#define mainBUTTON_LED_TIMER_PERIOD_MS ( 5000UL / portTICK_PERIOD_MS ) - -/* The number of items the queue can hold. This is 1 as the receive task -will remove items as they are added, meaning the send task should always find -the queue empty. */ -#define mainQUEUE_LENGTH ( 1 ) - -/* The LED toggle by the queue receive task (blue). */ -#define mainTASK_CONTROLLED_LED ( 1UL << 10UL ) - -/* The LED turned on by the button interrupt, and turned off by the LED timer -(green). */ -#define mainTIMER_CONTROLLED_LED ( 1UL << 29UL ) - -/* The vector used by the GPIO port E. Button SW2 is configured to generate -an interrupt on this port. */ -#define mainGPIO_E_VECTOR ( 91 ) - -/* A block time of zero simply means "don't block". */ -#define mainDONT_BLOCK ( 0UL ) - -/*-----------------------------------------------------------*/ - -/* - * Setup the NVIC, LED outputs, and button inputs. - */ -static void prvSetupHardware( void ); - -/* - * The tasks as described in the comments at the top of this file. - */ -static void prvQueueReceiveTask( void *pvParameters ); -static void prvQueueSendTask( void *pvParameters ); - -/* - * The LED timer callback function. This does nothing but switch off the - * LED defined by the mainTIMER_CONTROLLED_LED constant. - */ -static void prvButtonLEDTimerCallback( TimerHandle_t xTimer ); - -/*-----------------------------------------------------------*/ - -/* The queue used by both tasks. */ -static QueueHandle_t xQueue = NULL; - -/* The LED software timer. This uses prvButtonLEDTimerCallback() as its callback -function. */ -static TimerHandle_t xButtonLEDTimer = NULL; - -/*-----------------------------------------------------------*/ - -void main( void ) -{ - /* Configure the NVIC, LED outputs and button inputs. */ - prvSetupHardware(); - - /* Create the queue. */ - xQueue = xQueueCreate( mainQUEUE_LENGTH, sizeof( unsigned long ) ); - - if( xQueue != NULL ) - { - /* Start the two tasks as described in the comments at the top of this - file. */ - xTaskCreate( prvQueueReceiveTask, "Rx", configMINIMAL_STACK_SIZE, NULL, mainQUEUE_RECEIVE_TASK_PRIORITY, NULL ); - xTaskCreate( prvQueueSendTask, "TX", configMINIMAL_STACK_SIZE, NULL, mainQUEUE_SEND_TASK_PRIORITY, NULL ); - - /* Create the software timer that is responsible for turning off the LED - if the button is not pushed within 5000ms, as described at the top of - this file. */ - xButtonLEDTimer = xTimerCreate( "ButtonLEDTimer", /* A text name, purely to help debugging. */ - mainBUTTON_LED_TIMER_PERIOD_MS, /* The timer period, in this case 5000ms (5s). */ - pdFALSE, /* This is a one-shot timer, so xAutoReload is set to pdFALSE. */ - ( void * ) 0, /* The ID is not used, so can be set to anything. */ - prvButtonLEDTimerCallback /* The callback function that switches the LED off. */ - ); - - /* Start the tasks and timer running. */ - vTaskStartScheduler(); - } - - /* If all is well, the scheduler will now be running, and the following line - will never be reached. If the following line does execute, then there was - insufficient FreeRTOS heap memory available for the idle and/or timer tasks - to be created. See the memory management section on the FreeRTOS web site - for more details. */ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -static void prvButtonLEDTimerCallback( TimerHandle_t xTimer ) -{ - /* The timer has expired - so no button pushes have occurred in the last - five seconds - turn the LED off. */ - GPIOA_PSOR = mainTIMER_CONTROLLED_LED; -} -/*-----------------------------------------------------------*/ - -/* The ISR executed when the user button is pushed. */ -void vPort_E_ISRHandler( void ) -{ -portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE; - - /* The button was pushed, so ensure the LED is on before resetting the - LED timer. The LED timer will turn the LED off if the button is not - pushed within 5000ms. */ - GPIOA_PCOR = mainTIMER_CONTROLLED_LED; - - /* This interrupt safe FreeRTOS function can be called from this interrupt - because the interrupt priority is below the - configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY setting in FreeRTOSConfig.h. */ - xTimerResetFromISR( xButtonLEDTimer, &xHigherPriorityTaskWoken ); - - /* Clear the interrupt before leaving. */ - PORTE_ISFR = 0xFFFFFFFFUL; - - /* If calling xTimerResetFromISR() caused a task (in this case the timer - service/daemon task) to unblock, and the unblocked task has a priority - higher than or equal to the task that was interrupted, then - xHigherPriorityTaskWoken will now be set to pdTRUE, and calling - portEND_SWITCHING_ISR() will ensure the unblocked task runs next. */ - portEND_SWITCHING_ISR( xHigherPriorityTaskWoken ); -} -/*-----------------------------------------------------------*/ - -static void prvQueueSendTask( void *pvParameters ) -{ -TickType_t xNextWakeTime; -const unsigned long ulValueToSend = 100UL; - - /* Initialise xNextWakeTime - this only needs to be done once. */ - xNextWakeTime = xTaskGetTickCount(); - - for( ;; ) - { - /* Place this task in the blocked state until it is time to run again. - The block time is specified in ticks, the constant used converts ticks - to ms. While in the Blocked state this task will not consume any CPU - time. */ - vTaskDelayUntil( &xNextWakeTime, mainQUEUE_SEND_FREQUENCY_MS ); - - /* Send to the queue - causing the queue receive task to unblock and - toggle an LED. 0 is used as the block time so the sending operation - will not block - it shouldn't need to block as the queue should always - be empty at this point in the code. */ - xQueueSend( xQueue, &ulValueToSend, mainDONT_BLOCK ); - } -} -/*-----------------------------------------------------------*/ - -static void prvQueueReceiveTask( void *pvParameters ) -{ -unsigned long ulReceivedValue; - - for( ;; ) - { - /* Wait until something arrives in the queue - this task will block - indefinitely provided INCLUDE_vTaskSuspend is set to 1 in - FreeRTOSConfig.h. */ - xQueueReceive( xQueue, &ulReceivedValue, portMAX_DELAY ); - - /* To get here something must have been received from the queue, but - is it the expected value? If it is, toggle the LED. */ - if( ulReceivedValue == 100UL ) - { - GPIOA_PTOR = mainTASK_CONTROLLED_LED; - } - } -} -/*-----------------------------------------------------------*/ - -static void prvSetupHardware( void ) -{ - /* Enable the interrupt on SW1. */ - PORTE_PCR26 = PORT_PCR_MUX( 1 ) | PORT_PCR_IRQC( 0xA ) | PORT_PCR_PE_MASK | PORT_PCR_PS_MASK; - enable_irq( mainGPIO_E_VECTOR ); - - /* The interrupt calls an interrupt safe API function - so its priority must - be equal to or lower than configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY. */ - set_irq_priority( mainGPIO_E_VECTOR, configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY ); - - /* Set PTA10, PTA11, PTA28, and PTA29 (connected to LED's) for GPIO - functionality. */ - PORTA_PCR10 = ( 0 | PORT_PCR_MUX( 1 ) ); - PORTA_PCR11 = ( 0 | PORT_PCR_MUX( 1 ) ); - PORTA_PCR28 = ( 0 | PORT_PCR_MUX( 1 ) ); - PORTA_PCR29 = ( 0 | PORT_PCR_MUX( 1 ) ); - - /* Change PTA10, PTA29 to outputs. */ - GPIOA_PDDR=GPIO_PDDR_PDD( mainTASK_CONTROLLED_LED | mainTIMER_CONTROLLED_LED ); - - /* Start with LEDs off. */ - GPIOA_PTOR = ~0U; -} -/*-----------------------------------------------------------*/ - -void vApplicationMallocFailedHook( void ) -{ - /* Called if a call to pvPortMalloc() fails because there is insufficient - free memory available in the FreeRTOS heap. pvPortMalloc() is called - internally by FreeRTOS API functions that create tasks, queues, software - timers, and semaphores. The size of the FreeRTOS heap is set by the - configTOTAL_HEAP_SIZE configuration constant in FreeRTOSConfig.h. */ - taskDISABLE_INTERRUPTS(); - for( ;; ); -} -/*-----------------------------------------------------------*/ - -void vApplicationStackOverflowHook( TaskHandle_t pxTask, char *pcTaskName ) -{ - ( void ) pcTaskName; - ( void ) pxTask; - - /* Run time stack overflow checking is performed if - configCHECK_FOR_STACK_OVERFLOW is defined to 1 or 2. This hook - function is called if a stack overflow is detected. */ - taskDISABLE_INTERRUPTS(); - for( ;; ); -} -/*-----------------------------------------------------------*/ - -void vApplicationIdleHook( void ) -{ -volatile size_t xFreeHeapSpace; - - /* This function is called on each cycle of the idle task. In this case it - does nothing useful, other than report the amount of FreeRTOS heap that - remains unallocated. */ - xFreeHeapSpace = xPortGetFreeHeapSize(); - - if( xFreeHeapSpace > 100 ) - { - /* By now, the kernel has allocated everything it is going to, so - if there is a lot of heap remaining unallocated then - the value of configTOTAL_HEAP_SIZE in FreeRTOSConfig.h can be - reduced accordingly. */ - } -} -/*-----------------------------------------------------------*/ - -/* The Blinky build configuration does not include Ethernet functionality, -however, the Full and Blinky build configurations share a vectors.h header file. -Therefore, dummy Ethernet interrupt handers need to be defined to keep the -linker happy. */ -void vEMAC_TxISRHandler( void ) {} -void vEMAC_RxISRHandler( void ){} -void vEMAC_ErrorISRHandler( void ) {} - -/* The Blinky build configuration does not include run time stats gathering, -however, the Full and Blinky build configurations share a FreeRTOSConfig.h -file. Therefore, dummy run time stats functions need to be defined to keep the -linker happy. */ -void vMainConfigureTimerForRunTimeStats( void ) {} -unsigned long ulMainGetRunTimeCounterValue( void ) { return 0UL; } - -/* A tick hook is used by the "Full" build configuration. The Full and blinky -build configurations share a FreeRTOSConfig.h header file, so this simple build -configuration also has to define a tick hook - even though it does not actually -use it for anything. */ -void vApplicationTickHook( void ) {} - - - - - - - diff --git a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/uIP_Task.c b/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/uIP_Task.c deleted file mode 100644 index d9f8f10fa..000000000 --- a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/uIP_Task.c +++ /dev/null @@ -1,319 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* Standard includes. */ -#include - -/* Scheduler includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "queue.h" -#include "timers.h" - -/* uip includes. */ -#include "net/uip.h" -#include "net/uip_arp.h" -#include "apps/httpd/httpd.h" -#include "sys/timer.h" -#include "net/clock-arch.h" -#include "emac.h" - -/* Demo includes. */ -#include "ParTest.h" - -/* The buffer used by the uIP stack to both receive and send. In this case, -because the Ethernet driver is implemented to be zero copy - the uip_buf -variable is just a pointer to an Ethernet buffer, and not a buffer in its own -right. */ -extern unsigned char *uip_buf; - -/* The ARP timer and the periodic timer share a callback function, so the -respective timer IDs are used to determine which timer actually expired. These -constants are assigned to the timer IDs. */ -#define uipARP_TIMER 0 -#define uipPERIODIC_TIMER 1 - -/* The length of the queue used to send events from timers or the Ethernet -driver to the uIP stack. */ -#define uipEVENT_QUEUE_LENGTH 10 - -/* A block time of zero simply means "don't block". */ -#define uipDONT_BLOCK 0UL - -/* Shortcut to the header within the Rx buffer. */ -#define xHeader ((struct uip_eth_hdr *) &uip_buf[ 0 ]) - -/*-----------------------------------------------------------*/ - -/* - * Setup the MAC address in the MAC itself, and in the uIP stack. - */ -static void prvSetMACAddress( void ); - -/* - * Perform any uIP initialisation required to ready the stack for http - * processing. - */ -static void prvInitialise_uIP( void ); - -/* - * The callback function that is assigned to both the periodic timer and the - * ARP timer. - */ -static void prvUIPTimerCallback( TimerHandle_t xTimer ); - -/* - * Port functions required by the uIP stack. - */ -clock_time_t clock_time( void ); - -/*-----------------------------------------------------------*/ - -/* The queue used to send TCP/IP events to the uIP stack. */ -QueueHandle_t xEMACEventQueue = NULL; - -/*-----------------------------------------------------------*/ - -clock_time_t clock_time( void ) -{ - return xTaskGetTickCount(); -} -/*-----------------------------------------------------------*/ - -void vuIP_Task( void *pvParameters ) -{ -long i; -unsigned long ulNewEvent = 0UL, ulUIP_Events = 0UL; -unsigned short usPacketLength; - - /* Just to prevent compiler warnings about the unused parameter. */ - ( void ) pvParameters; - - /* Initialise the uIP stack, configuring for web server usage. */ - prvInitialise_uIP(); - - /* Initialise the MAC and PHY. */ - vEMACInit(); - - for( ;; ) - { - /* Is there received data ready to be processed? */ - usPacketLength = usEMACRead(); - - /* Statements to be executed if data has been received on the Ethernet. */ - if( ( usPacketLength > 0U ) && ( uip_buf != NULL ) ) - { - uip_len = usPacketLength; - - if( xHeader->type == htons( UIP_ETHTYPE_IP ) ) - { - uip_arp_ipin(); - uip_input(); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - uip_arp_out(); - vEMACWrite(); - } - } - else if( xHeader->type == htons( UIP_ETHTYPE_ARP ) ) - { - uip_arp_arpin(); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - vEMACWrite(); - } - } - } - else - { - /* Clear the RX event latched in ulUIP_Events - if one was latched. */ - ulUIP_Events &= ~uipETHERNET_RX_EVENT; - } - - /* Statements to be executed if the TCP/IP period timer has expired. */ - if( ( ulUIP_Events & uipPERIODIC_TIMER_EVENT ) != 0UL ) - { - ulUIP_Events &= ~uipPERIODIC_TIMER_EVENT; - - if( uip_buf != NULL ) - { - for( i = 0; i < UIP_CONNS; i++ ) - { - uip_periodic( i ); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - uip_arp_out(); - vEMACWrite(); - } - } - } - } - - /* Statements to be executed if the ARP timer has expired. */ - if( ( ulUIP_Events & uipARP_TIMER_EVENT ) != 0 ) - { - ulUIP_Events &= ~uipARP_TIMER_EVENT; - uip_arp_timer(); - } - - /* If all latched events have been cleared - block until another event - occurs. */ - if( ulUIP_Events == pdFALSE ) - { - xQueueReceive( xEMACEventQueue, &ulNewEvent, portMAX_DELAY ); - ulUIP_Events |= ulNewEvent; - } - } -} -/*-----------------------------------------------------------*/ - -static void prvSetMACAddress( void ) -{ -struct uip_eth_addr xAddr; - - /* Configure the MAC address in the uIP stack. */ - xAddr.addr[ 0 ] = configMAC_ADDR0; - xAddr.addr[ 1 ] = configMAC_ADDR1; - xAddr.addr[ 2 ] = configMAC_ADDR2; - xAddr.addr[ 3 ] = configMAC_ADDR3; - xAddr.addr[ 4 ] = configMAC_ADDR4; - xAddr.addr[ 5 ] = configMAC_ADDR5; - uip_setethaddr( xAddr ); -} -/*-----------------------------------------------------------*/ - -static void prvInitialise_uIP( void ) -{ -uip_ipaddr_t xIPAddr; -TimerHandle_t xARPTimer, xPeriodicTimer; - - uip_init(); - uip_ipaddr( &xIPAddr, configIP_ADDR0, configIP_ADDR1, configIP_ADDR2, configIP_ADDR3 ); - uip_sethostaddr( &xIPAddr ); - uip_ipaddr( &xIPAddr, configNET_MASK0, configNET_MASK1, configNET_MASK2, configNET_MASK3 ); - uip_setnetmask( &xIPAddr ); - prvSetMACAddress(); - httpd_init(); - - /* Create the queue used to sent TCP/IP events to the uIP stack. */ - xEMACEventQueue = xQueueCreate( uipEVENT_QUEUE_LENGTH, sizeof( unsigned long ) ); - - /* Create and start the uIP timers. */ - xARPTimer = xTimerCreate( "ARPTimer", /* Just a name that is helpful for debugging, not used by the kernel. */ - ( 10000UL / portTICK_PERIOD_MS ), /* Timer period. */ - pdTRUE, /* Autor-reload. */ - ( void * ) uipARP_TIMER, - prvUIPTimerCallback - ); - - xPeriodicTimer = xTimerCreate( "PeriodicTimer", - ( 500UL / portTICK_PERIOD_MS ), - pdTRUE, /* Autor-reload. */ - ( void * ) uipPERIODIC_TIMER, - prvUIPTimerCallback - ); - - /* Sanity check that the timers were indeed created. */ - configASSERT( xARPTimer ); - configASSERT( xPeriodicTimer ); - configASSERT( xEMACEventQueue ); - - /* These commands will block indefinitely until they succeed, so there is - no point in checking their return values. */ - xTimerStart( xARPTimer, portMAX_DELAY ); - xTimerStart( xPeriodicTimer, portMAX_DELAY ); -} -/*-----------------------------------------------------------*/ - -static void prvUIPTimerCallback( TimerHandle_t xTimer ) -{ -static const unsigned long ulARPTimerExpired = uipARP_TIMER_EVENT; -static const unsigned long ulPeriodicTimerExpired = uipPERIODIC_TIMER_EVENT; - - /* This is a time callback, so calls to xQueueSend() must not attempt to - block. As this callback is assigned to both the ARP and Periodic timers, the - first thing to do is ascertain which timer it was that actually expired. */ - switch( ( int ) pvTimerGetTimerID( xTimer ) ) - { - case uipARP_TIMER : xQueueSend( xEMACEventQueue, &ulARPTimerExpired, uipDONT_BLOCK ); - break; - - case uipPERIODIC_TIMER : xQueueSend( xEMACEventQueue, &ulPeriodicTimerExpired, uipDONT_BLOCK ); - break; - - default : /* Should not get here. */ - break; - } -} -/*-----------------------------------------------------------*/ - -void vApplicationProcessFormInput( char *pcInputString ) -{ -char *c; -const unsigned long ulYellowLED = 2UL; - - /* Only interested in processing form input if this is the IO page. */ - c = strstr( pcInputString, "io.shtml" ); - - if( c ) - { - /* Is there a command in the string? */ - c = strstr( pcInputString, "?" ); - if( c ) - { - /* Turn the LEDs on or off in accordance with the check box status. */ - if( strstr( c, "LED0=1" ) != NULL ) - { - /* Turn the LEDs on. */ - vParTestSetLED( ulYellowLED, pdTRUE ); - } - else - { - /* Turn the LEDs off. */ - vParTestSetLED( ulYellowLED, pdFALSE ); - } - } - else - { - /* Some browsers will only imply that a check box is off. */ - vParTestSetLED( ulYellowLED, pdFALSE ); - } - } -} -/*-----------------------------------------------------------*/ diff --git a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/webserver/EMAC.c b/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/webserver/EMAC.c deleted file mode 100644 index a70989499..000000000 --- a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/webserver/EMAC.c +++ /dev/null @@ -1,542 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* Freescale includes. */ -#include "common.h" -#include "eth_phy.h" -#include "enet.h" -#include "mii.h" - -/* FreeRTOS includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "queue.h" - -/* uIP includes. */ -#include "net/uip.h" - -/* The time to wait between attempts to obtain a free buffer. */ -#define emacBUFFER_WAIT_DELAY_ms ( 3 / portTICK_PERIOD_MS ) - -/* The number of times emacBUFFER_WAIT_DELAY_ms should be waited before giving -up on attempting to obtain a free buffer all together. */ -#define emacBUFFER_WAIT_ATTEMPTS ( 30 ) - -/* The number of Rx descriptors. */ -#define emacNUM_RX_DESCRIPTORS 8 - -/* The number of Tx descriptors. When using uIP there is not point in having -more than two. */ -#define emacNUM_TX_BUFFERS 2 - -/* The total number of EMAC buffers to allocate. */ -#define emacNUM_BUFFERS ( emacNUM_RX_DESCRIPTORS + emacNUM_TX_BUFFERS ) - -/* The time to wait for the Tx descriptor to become free. */ -#define emacTX_WAIT_DELAY_ms ( 10 / portTICK_PERIOD_MS ) - -/* The total number of times to wait emacTX_WAIT_DELAY_ms for the Tx descriptor to -become free. */ -#define emacTX_WAIT_ATTEMPTS ( 50 ) - -/* Constants used for set up and initialisation. */ -#define emacTX_INTERRUPT_NO ( 76 ) -#define emacRX_INTERRUPT_NO ( 77 ) -#define emacERROR_INTERRUPT_NO ( 78 ) -#define emacLINK_DELAY ( 500 / portTICK_PERIOD_MS ) -#define emacPHY_STATUS ( 0x1F ) -#define emacPHY_DUPLEX_STATUS ( 4 << 2 ) -#define emacPHY_SPEED_STATUS ( 1 << 2 ) - -/*-----------------------------------------------------------*/ - -/* - * Initialise both the Rx and Tx descriptors. - */ -static void prvInitialiseDescriptors( void ); - -/* - * Return a pointer to a free buffer within xEthernetBuffers. - */ -static unsigned char *prvGetNextBuffer( void ); - -/* - * Return a buffer to the list of free buffers. - */ -static void prvReturnBuffer( unsigned char *pucBuffer ); - -/* - * Examine the status of the next Rx descriptor to see if it contains new data. - */ -static unsigned short prvCheckRxStatus( void ); - -/* - * Something has gone wrong with the descriptor usage. Reset all the buffers - * and descriptors. - */ -static void prvResetEverything( void ); - -/*-----------------------------------------------------------*/ - -/* The buffers and descriptors themselves. */ -#pragma data_alignment=16 -volatile NBUF xRxDescriptors[ emacNUM_RX_DESCRIPTORS ]; - -#pragma data_alignment=16 -volatile NBUF xTxDescriptors[ emacNUM_TX_BUFFERS ]; - -#pragma data_alignment=16 -char xEthernetBuffers[ emacNUM_BUFFERS ][ UIP_BUFSIZE ]; - -/* Used to indicate which buffers are free and which are in use. If an index -contains 0 then the corresponding buffer in xEthernetBuffers is free, otherwise -the buffer is in use or about to be used. */ -static unsigned char ucBufferInUse[ emacNUM_BUFFERS ]; - -/* Points to the Rx descriptor currently in use. */ -static volatile NBUF *pxCurrentRxDesc = NULL; - -/* pxCurrentRxDesc points to descriptor within the xRxDescriptors array that -has an index defined by ulRxDescriptorIndex. */ -static unsigned long ulRxDescriptorIndex = 0UL; - -/* The buffer used by the uIP stack to both receive and send. This points to -one of the Ethernet buffers when its actually in use. */ -unsigned char *uip_buf = NULL; - -/*-----------------------------------------------------------*/ - -void vEMACInit( void ) -{ -int iData; -extern int periph_clk_khz; -const unsigned char ucMACAddress[] = -{ - configMAC_ADDR0, configMAC_ADDR1, configMAC_ADDR2, configMAC_ADDR3, configMAC_ADDR4, configMAC_ADDR5 -}; - - /* Enable the ENET clock. */ - SIM_SCGC2 |= SIM_SCGC2_ENET_MASK; - - /* Allow concurrent access to MPU controller to avoid bus errors. */ - MPU_CESR = 0; - - prvInitialiseDescriptors(); - - /* Reset and enable. */ - ENET_ECR = ENET_ECR_RESET_MASK; - - /* Wait at least 8 clock cycles */ - vTaskDelay( 2 ); - - /* Start the MII interface*/ - mii_init( 0, periph_clk_khz / 1000L ); - - /* Configure the transmit interrupt. */ - set_irq_priority( emacTX_INTERRUPT_NO, configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY ); - enable_irq( emacTX_INTERRUPT_NO ); - - /* Configure the receive interrupt. */ - set_irq_priority( emacRX_INTERRUPT_NO, configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY ); - enable_irq( emacRX_INTERRUPT_NO ); - - /* Configure the error interrupt. */ - set_irq_priority( emacERROR_INTERRUPT_NO, configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY ); - enable_irq( emacERROR_INTERRUPT_NO ); - - /* Configure the pins to the PHY - RMII mode used. */ - PORTB_PCR0 = PORT_PCR_MUX( 4 ); /* RMII0_MDIO / MII0_MDIO. */ - PORTB_PCR1 = PORT_PCR_MUX( 4 ); /* RMII0_MDC / MII0_MDC */ - PORTA_PCR14 = PORT_PCR_MUX( 4 ); /* RMII0_CRS_DV / MII0_RXDV */ - PORTA_PCR12 = PORT_PCR_MUX( 4 ); /* RMII0_RXD1 / MII0_RXD1 */ - PORTA_PCR13 = PORT_PCR_MUX( 4 ); /* RMII0_RXD0/MII0_RXD0 */ - PORTA_PCR15 = PORT_PCR_MUX( 4 ); /* RMII0_TXEN/MII0_TXEN */ - PORTA_PCR16 = PORT_PCR_MUX( 4 ); /* RMII0_TXD0/MII0_TXD0 */ - PORTA_PCR17 = PORT_PCR_MUX( 4 ); /* RMII0_TXD1/MII0_TXD1 */ - - /* Is there communication with the PHY? */ - do - { - vTaskDelay( emacLINK_DELAY ); - iData = 0xFFFF; - mii_read( 0, configPHY_ADDRESS, PHY_PHYIDR1, &iData ); - - } while( iData == 0xFFFF ); - - /* Start to auto negotiate. */ - mii_write( 0, configPHY_ADDRESS, PHY_BMCR, ( PHY_BMCR_AN_RESTART | PHY_BMCR_AN_ENABLE ) ); - - /* Wait for auto negotiate to complete. */ - do - { - vTaskDelay( emacLINK_DELAY ); - mii_read( 0, configPHY_ADDRESS, PHY_BMSR, &iData ); - - } while( !( iData & PHY_BMSR_AN_COMPLETE ) ); - - /* A link has been established. What was negotiated? */ - iData = 0; - mii_read( 0, configPHY_ADDRESS, emacPHY_STATUS, &iData ); - - /* Clear the Individual and Group Address Hash registers */ - ENET_IALR = 0; - ENET_IAUR = 0; - ENET_GALR = 0; - ENET_GAUR = 0; - - /* Set the Physical Address for the selected ENET */ - enet_set_address( 0, ucMACAddress ); - - ENET_RCR = ENET_RCR_MAX_FL( UIP_BUFSIZE ) | ENET_RCR_MII_MODE_MASK | ENET_RCR_CRCFWD_MASK | ENET_RCR_RMII_MODE_MASK; - - /* Clear the control registers. */ - ENET_TCR = 0; - - if( iData & emacPHY_DUPLEX_STATUS ) - { - /* Full duplex */ - ENET_RCR &= ( unsigned long )~ENET_RCR_DRT_MASK; - ENET_TCR |= ENET_TCR_FDEN_MASK; - } - else - { - /* Half duplex */ - ENET_RCR |= ENET_RCR_DRT_MASK; - ENET_TCR &= (unsigned long)~ENET_TCR_FDEN_MASK; - } - - if( iData & emacPHY_SPEED_STATUS ) - { - /* 10Mbps */ - ENET_RCR |= ENET_RCR_RMII_10T_MASK; - } - - ENET_ECR = ENET_ECR_EN1588_MASK; - - /* Store and forward checksum. */ - ENET_TFWR = ENET_TFWR_STRFWD_MASK; - - /* Set Rx Buffer Size */ - ENET_MRBR = ( unsigned short ) UIP_BUFSIZE; - - /* Point to the start of the circular Rx buffer descriptor queue */ - ENET_RDSR = ( unsigned long ) &( xRxDescriptors[ 0 ] ); - - /* Point to the start of the circular Tx buffer descriptor queue */ - ENET_TDSR = ( unsigned long ) &( xTxDescriptors[ 0 ] ); - - /* Clear all ENET interrupt events */ - ENET_EIR = ( unsigned long ) -1; - - /* Enable interrupts. */ - ENET_EIMR = 0 - /*rx irqs*/ - | ENET_EIMR_RXF_MASK/* only for complete frame, not partial buffer descriptor | ENET_EIMR_RXB_MASK*/ - /*xmit irqs*/ - | ENET_EIMR_TXF_MASK/* only for complete frame, not partial buffer descriptor | ENET_EIMR_TXB_MASK*/ - /*enet irqs*/ - | ENET_EIMR_UN_MASK | ENET_EIMR_RL_MASK | ENET_EIMR_LC_MASK | ENET_EIMR_BABT_MASK | ENET_EIMR_BABR_MASK | ENET_EIMR_EBERR_MASK - ; - - /* Enable the MAC itself. */ - ENET_ECR |= ENET_ECR_ETHEREN_MASK; - - /* Indicate that there have been empty receive buffers produced */ - ENET_RDAR = ENET_RDAR_RDAR_MASK; -} -/*-----------------------------------------------------------*/ - -static void prvInitialiseDescriptors( void ) -{ -volatile NBUF *pxDescriptor; -long x; - - for( x = 0; x < emacNUM_BUFFERS; x++ ) - { - /* Ensure none of the buffers are shown as in use at the start. */ - ucBufferInUse[ x ] = pdFALSE; - } - - /* Initialise the Rx descriptors. */ - for( x = 0; x < emacNUM_RX_DESCRIPTORS; x++ ) - { - pxDescriptor = &( xRxDescriptors[ x ] ); - pxDescriptor->data = ( uint8_t* ) &( xEthernetBuffers[ x ][ 0 ] ); - pxDescriptor->data = ( uint8_t* ) __REV( ( unsigned long ) pxDescriptor->data ); - pxDescriptor->length = 0; - pxDescriptor->status = RX_BD_E; - pxDescriptor->bdu = 0; - pxDescriptor->ebd_status = RX_BD_INT; - - /* Mark this buffer as in use. */ - ucBufferInUse[ x ] = pdTRUE; - } - - /* The last descriptor points back to the start. */ - pxDescriptor->status |= RX_BD_W; - - /* Initialise the Tx descriptors. */ - for( x = 0; x < emacNUM_TX_BUFFERS; x++ ) - { - pxDescriptor = &( xTxDescriptors[ x ] ); - - /* A buffer is not allocated to the Tx descriptor until a send is - actually required. */ - pxDescriptor->data = NULL; - pxDescriptor->length = 0; - pxDescriptor->status = TX_BD_TC; - pxDescriptor->ebd_status = TX_BD_INT; - } - - /* The last descriptor points back to the start. */ - pxDescriptor->status |= TX_BD_W; - - /* Use the first Rx descriptor to start with. */ - ulRxDescriptorIndex = 0UL; - pxCurrentRxDesc = &( xRxDescriptors[ 0 ] ); -} -/*-----------------------------------------------------------*/ - -void vEMACWrite( void ) -{ -long x; - - /* Wait until the second transmission of the last packet has completed. */ - for( x = 0; x < emacTX_WAIT_ATTEMPTS; x++ ) - { - if( ( xTxDescriptors[ 1 ].status & TX_BD_R ) != 0 ) - { - /* Descriptor is still active. */ - vTaskDelay( emacTX_WAIT_DELAY_ms ); - } - else - { - break; - } - } - - /* Is the descriptor free after waiting for it? */ - if( ( xTxDescriptors[ 1 ].status & TX_BD_R ) != 0 ) - { - /* Something has gone wrong. */ - prvResetEverything(); - } - - /* Setup both descriptors to transmit the frame. */ - xTxDescriptors[ 0 ].data = ( uint8_t * ) __REV( ( unsigned long ) uip_buf ); - xTxDescriptors[ 0 ].length = __REVSH( uip_len ); - xTxDescriptors[ 1 ].data = ( uint8_t * ) __REV( ( unsigned long ) uip_buf ); - xTxDescriptors[ 1 ].length = __REVSH( uip_len ); - - /* uip_buf is being sent by the Tx descriptor. Allocate a new buffer - for use by the stack. */ - uip_buf = prvGetNextBuffer(); - - /* Clear previous settings and go. */ - xTxDescriptors[ 0 ].status |= ( TX_BD_R | TX_BD_L ); - xTxDescriptors[ 1 ].status |= ( TX_BD_R | TX_BD_L ); - - /* Start the Tx. */ - ENET_TDAR = ENET_TDAR_TDAR_MASK; -} -/*-----------------------------------------------------------*/ - -static unsigned char *prvGetNextBuffer( void ) -{ -long x; -unsigned char *pucReturn = NULL; -unsigned long ulAttempts = 0; - - while( pucReturn == NULL ) - { - /* Look through the buffers to find one that is not in use by - anything else. */ - for( x = 0; x < emacNUM_BUFFERS; x++ ) - { - if( ucBufferInUse[ x ] == pdFALSE ) - { - ucBufferInUse[ x ] = pdTRUE; - pucReturn = ( unsigned char * ) &( xEthernetBuffers[ x ][ 0 ] ); - break; - } - } - - /* Was a buffer found? */ - if( pucReturn == NULL ) - { - ulAttempts++; - - if( ulAttempts >= emacBUFFER_WAIT_ATTEMPTS ) - { - break; - } - - /* Wait then look again. */ - vTaskDelay( emacBUFFER_WAIT_DELAY_ms ); - } - } - - return pucReturn; -} -/*-----------------------------------------------------------*/ - -static void prvResetEverything( void ) -{ - /* Temporary code just to see if this gets called. This function has not - been implemented. */ - portDISABLE_INTERRUPTS(); - for( ;; ); -} -/*-----------------------------------------------------------*/ - -unsigned short usEMACRead( void ) -{ -unsigned short usBytesReceived; - - usBytesReceived = prvCheckRxStatus(); - usBytesReceived = __REVSH( usBytesReceived ); - - if( usBytesReceived > 0 ) - { - /* Mark the pxDescriptor buffer as free as uip_buf is going to be set to - the buffer that contains the received data. */ - prvReturnBuffer( uip_buf ); - - /* Point uip_buf to the data about to be processed. */ - uip_buf = ( void * ) pxCurrentRxDesc->data; - uip_buf = ( void * ) __REV( ( unsigned long ) uip_buf ); - - /* Allocate a new buffer to the descriptor, as uip_buf is now using it's - old descriptor. */ - pxCurrentRxDesc->data = ( uint8_t * ) prvGetNextBuffer(); - pxCurrentRxDesc->data = ( uint8_t* ) __REV( ( unsigned long ) pxCurrentRxDesc->data ); - - /* Prepare the descriptor to go again. */ - pxCurrentRxDesc->status |= RX_BD_E; - - /* Move onto the next buffer in the ring. */ - ulRxDescriptorIndex++; - if( ulRxDescriptorIndex >= emacNUM_RX_DESCRIPTORS ) - { - ulRxDescriptorIndex = 0UL; - } - pxCurrentRxDesc = &( xRxDescriptors[ ulRxDescriptorIndex ] ); - - /* Restart Ethernet if it has stopped */ - ENET_RDAR = ENET_RDAR_RDAR_MASK; - } - - return usBytesReceived; -} -/*-----------------------------------------------------------*/ - -static void prvReturnBuffer( unsigned char *pucBuffer ) -{ -unsigned long ul; - - /* Return a buffer to the pool of free buffers. */ - for( ul = 0; ul < emacNUM_BUFFERS; ul++ ) - { - if( &( xEthernetBuffers[ ul ][ 0 ] ) == ( void * ) pucBuffer ) - { - ucBufferInUse[ ul ] = pdFALSE; - break; - } - } -} -/*-----------------------------------------------------------*/ - -static unsigned short prvCheckRxStatus( void ) -{ -unsigned long usReturn = 0; - - if( ( pxCurrentRxDesc->status & RX_BD_E ) != 0 ) - { - /* Current descriptor is still active. */ - } - else - { - /* The descriptor contains a frame. Because of the size of the buffers - the frame should always be complete. */ - usReturn = pxCurrentRxDesc->length; - } - - return usReturn; -} -/*-----------------------------------------------------------*/ - -void vEMAC_TxISRHandler( void ) -{ - /* Clear the interrupt. */ - ENET_EIR = ENET_EIR_TXF_MASK; - - /* Check the buffers have not already been freed in the first of the - two Tx interrupts - which could potentially happen if the second Tx completed - during the interrupt for the first Tx. */ - if( xTxDescriptors[ 0 ].data != NULL ) - { - if( ( ( xTxDescriptors[ 0 ].status & TX_BD_R ) == 0 ) && ( ( xTxDescriptors[ 0 ].status & TX_BD_R ) == 0 ) ) - { - configASSERT( xTxDescriptors[ 0 ].data == xTxDescriptors[ 1 ].data ); - - xTxDescriptors[ 0 ].data = ( uint8_t* ) __REV( ( unsigned long ) xTxDescriptors[ 0 ].data ); - prvReturnBuffer( xTxDescriptors[ 0 ].data ); - - /* Just to mark the fact that the buffer has already been released. */ - xTxDescriptors[ 0 ].data = NULL; - } - } -} -/*-----------------------------------------------------------*/ - -void vEMAC_RxISRHandler( void ) -{ -const unsigned long ulRxEvent = uipETHERNET_RX_EVENT; -long lHigherPriorityTaskWoken = pdFALSE; -extern QueueHandle_t xEMACEventQueue; - - /* Clear the interrupt. */ - ENET_EIR = ENET_EIR_RXF_MASK; - - /* An Ethernet Rx event has occurred. */ - xQueueSendFromISR( xEMACEventQueue, &ulRxEvent, &lHigherPriorityTaskWoken ); - portEND_SWITCHING_ISR( lHigherPriorityTaskWoken ); -} -/*-----------------------------------------------------------*/ - -void vEMAC_ErrorISRHandler( void ) -{ - /* Clear the interrupt. */ - ENET_EIR = ENET_EIR & ENET_EIMR; - - /* Attempt recovery. Not very sophisticated. */ - prvInitialiseDescriptors(); - ENET_RDAR = ENET_RDAR_RDAR_MASK; -} -/*-----------------------------------------------------------*/ - - diff --git a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/webserver/EMAC.h b/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/webserver/EMAC.h deleted file mode 100644 index f78122ef8..000000000 --- a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/webserver/EMAC.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -#ifndef FR_EMAC_H -#define FR_EMAC_H - -/* - * Configure all the ethernet components (MAC, DMA, PHY) ready for communication. - */ -void vEMACInit( void ); - -/* - * Check the Rx status, and return the number of bytes received if any. - */ -unsigned short usEMACRead( void ); - -/* - * Send uip_len bytes from uip_buf to the Tx descriptors and initiate a Tx. - */ -void vEMACWrite( void ); - -#endif /* FR_EMAC_H */ \ No newline at end of file diff --git a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/webserver/httpd-cgi.c b/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/webserver/httpd-cgi.c deleted file mode 100644 index 7048d8364..000000000 --- a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/webserver/httpd-cgi.c +++ /dev/null @@ -1,263 +0,0 @@ -/** - * \addtogroup httpd - * @{ - */ - -/** - * \file - * Web server script interface - * \author - * Adam Dunkels - * - */ - -/* - * Copyright (c) 2001-2006, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: httpd-cgi.c,v 1.2 2006/06/11 21:46:37 adam Exp $ - * - */ -#include "net/uip.h" -#include "net/psock.h" -#include "apps/httpd/httpd.h" -#include "apps/httpd/httpd-cgi.h" -#include "apps/httpd/httpd-fs.h" - -#include -#include - -#include "FreeRTOS.h" -#include "task.h" - -HTTPD_CGI_CALL( file, "file-stats", file_stats ); -HTTPD_CGI_CALL( tcp, "tcp-connections", tcp_stats ); -HTTPD_CGI_CALL( net, "net-stats", net_stats ); -HTTPD_CGI_CALL( rtos, "rtos-stats", rtos_stats ); -HTTPD_CGI_CALL( run, "run-time", run_time ); -HTTPD_CGI_CALL( io, "led-io", led_io ); - -static const struct httpd_cgi_call *calls[] = { &file, &tcp, &net, &rtos, &run, &io, NULL }; - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( nullfunction ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - ( void ) PT_YIELD_FLAG; - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -httpd_cgifunction httpd_cgi( char *name ) -{ - const struct httpd_cgi_call **f; - - /* Find the matching name in the table, return the function. */ - for( f = calls; *f != NULL; ++f ) - { - if( strncmp((*f)->name, name, strlen((*f)->name)) == 0 ) - { - return( *f )->function; - } - } - - return nullfunction; -} - -/*---------------------------------------------------------------------------*/ -static unsigned short generate_file_stats( void *arg ) -{ - char *f = ( char * ) arg; - return sprintf( ( char * ) uip_appdata, "%5u", httpd_fs_count(f) ); -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( file_stats ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - - ( void ) PT_YIELD_FLAG; - - PSOCK_GENERATOR_SEND( &s->sout, generate_file_stats, strchr(ptr, ' ') + 1 ); - - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -static const char closed[] = /* "CLOSED",*/ { 0x43, 0x4c, 0x4f, 0x53, 0x45, 0x44, 0 }; -static const char syn_rcvd[] = /* "SYN-RCVD",*/ { 0x53, 0x59, 0x4e, 0x2d, 0x52, 0x43, 0x56, 0x44, 0 }; -static const char syn_sent[] = /* "SYN-SENT",*/ { 0x53, 0x59, 0x4e, 0x2d, 0x53, 0x45, 0x4e, 0x54, 0 }; -static const char established[] = /* "ESTABLISHED",*/ { 0x45, 0x53, 0x54, 0x41, 0x42, 0x4c, 0x49, 0x53, 0x48, 0x45, 0x44, 0 }; -static const char fin_wait_1[] = /* "FIN-WAIT-1",*/ { 0x46, 0x49, 0x4e, 0x2d, 0x57, 0x41, 0x49, 0x54, 0x2d, 0x31, 0 }; -static const char fin_wait_2[] = /* "FIN-WAIT-2",*/ { 0x46, 0x49, 0x4e, 0x2d, 0x57, 0x41, 0x49, 0x54, 0x2d, 0x32, 0 }; -static const char closing[] = /* "CLOSING",*/ { 0x43, 0x4c, 0x4f, 0x53, 0x49, 0x4e, 0x47, 0 }; -static const char time_wait[] = /* "TIME-WAIT,"*/ { 0x54, 0x49, 0x4d, 0x45, 0x2d, 0x57, 0x41, 0x49, 0x54, 0 }; -static const char last_ack[] = /* "LAST-ACK"*/ { 0x4c, 0x41, 0x53, 0x54, 0x2d, 0x41, 0x43, 0x4b, 0 }; - -static const char *states[] = { closed, syn_rcvd, syn_sent, established, fin_wait_1, fin_wait_2, closing, time_wait, last_ack }; - -static unsigned short generate_tcp_stats( void *arg ) -{ - struct uip_conn *conn; - struct httpd_state *s = ( struct httpd_state * ) arg; - - conn = &uip_conns[s->count]; - return sprintf( ( char * ) uip_appdata, - "\r\n", htons(conn->lport), - htons(conn->ripaddr.u16[0]) >> 8, htons(conn->ripaddr.u16[0]) & 0xff, htons(conn->ripaddr.u16[1]) >> 8, - htons(conn->ripaddr.u16[1]) & 0xff, htons(conn->rport), states[conn->tcpstateflags & UIP_TS_MASK], conn->nrtx, conn->timer, - (uip_outstanding(conn)) ? '*' : ' ', (uip_stopped(conn)) ? '!' : ' ' ); -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( tcp_stats ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - ( void ) PT_YIELD_FLAG; - for( s->count = 0; s->count < UIP_CONNS; ++s->count ) - { - if( (uip_conns[s->count].tcpstateflags & UIP_TS_MASK) != UIP_CLOSED ) - { - PSOCK_GENERATOR_SEND( &s->sout, generate_tcp_stats, s ); - } - } - - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -static unsigned short generate_net_stats( void *arg ) -{ - struct httpd_state *s = ( struct httpd_state * ) arg; - return sprintf( ( char * ) uip_appdata, "%5u\n", (( uip_stats_t * ) &uip_stat)[s->count] ); -} - -static PT_THREAD( net_stats ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - ( void ) PT_YIELD_FLAG; -#if UIP_STATISTICS - for( s->count = 0; s->count < sizeof(uip_stat) / sizeof(uip_stats_t); ++s->count ) - { - PSOCK_GENERATOR_SEND( &s->sout, generate_net_stats, s ); - } - -#endif /* UIP_STATISTICS */ - - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -extern void vTaskList( char *pcWriteBuffer ); -extern char *pcGetTaskStatusMessage( void ); -static char cCountBuf[128]; -long lRefreshCount = 0; -static unsigned short generate_rtos_stats( void *arg ) -{ - ( void ) arg; - lRefreshCount++; - sprintf( cCountBuf, "


Refresh count = %d


%s", ( int ) lRefreshCount, pcGetTaskStatusMessage() ); - vTaskList( ( char * ) uip_appdata ); - strcat( uip_appdata, cCountBuf ); - - return strlen( uip_appdata ); -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( rtos_stats ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - ( void ) PT_YIELD_FLAG; - PSOCK_GENERATOR_SEND( &s->sout, generate_rtos_stats, NULL ); - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -char *pcStatus; -unsigned long ulString; - -static unsigned short generate_io_state( void *arg ) -{ - extern long lParTestGetLEDState( unsigned long ulLED ); - ( void ) arg; - const unsigned long ulYellowLED = 2UL; - - /* Are the dynamically setable LEDs currently on or off? */ - if( lParTestGetLEDState( ulYellowLED ) == pdTRUE ) - { - pcStatus = "checked"; - } - else - { - pcStatus = ""; - } - - sprintf( uip_appdata, "LED

", pcStatus ); - - return strlen( uip_appdata ); -} - -/*---------------------------------------------------------------------------*/ -extern void vTaskGetRunTimeStats( char *pcWriteBuffer ); -static unsigned short generate_runtime_stats( void *arg ) -{ - ( void ) arg; - lRefreshCount++; - sprintf( cCountBuf, "


Refresh count = %d", ( int ) lRefreshCount ); - vTaskGetRunTimeStats( ( char * ) uip_appdata ); - strcat( uip_appdata, cCountBuf ); - - return strlen( uip_appdata ); -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( run_time ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - ( void ) PT_YIELD_FLAG; - PSOCK_GENERATOR_SEND( &s->sout, generate_runtime_stats, NULL ); - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( led_io ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - ( void ) PT_YIELD_FLAG; - PSOCK_GENERATOR_SEND( &s->sout, generate_io_state, NULL ); - PSOCK_END( &s->sout ); -} - -/** @} */ diff --git a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/webserver/httpd-fs/404.html b/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/webserver/httpd-fs/404.html deleted file mode 100644 index 43e7f4cad..000000000 --- a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/webserver/httpd-fs/404.html +++ /dev/null @@ -1,8 +0,0 @@ - - -

-

404 - file not found

-

Go here instead.

-
- - \ No newline at end of file diff --git a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/webserver/httpd-fs/index.html b/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/webserver/httpd-fs/index.html deleted file mode 100644 index 4937dc69a..000000000 --- a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/webserver/httpd-fs/index.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Loading index.shtml. Click here if not automatically redirected. - - - - - diff --git a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/webserver/httpd-fs/index.shtml b/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/webserver/httpd-fs/index.shtml deleted file mode 100644 index 882d085ce..000000000 --- a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/webserver/httpd-fs/index.shtml +++ /dev/null @@ -1,20 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS Homepage | IO | 37K jpg -

-


-

-

Task statistics

-Page will refresh every 2 seconds.

-

Task          State  Priority  Stack	#
************************************************
-%! rtos-stats -
-
- - - diff --git a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/webserver/httpd-fs/io.shtml b/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/webserver/httpd-fs/io.shtml deleted file mode 100644 index 7fd1c051c..000000000 --- a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/webserver/httpd-fs/io.shtml +++ /dev/null @@ -1,29 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS Homepage | IO | 37K jpg -

-


-LED and LCD IO
- -

- -The check box and "Update IO" button can also be used to turn the yellow LED on and off. - - - -

-
-%! led-io -

- - -

- - - - diff --git a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/webserver/httpd-fs/runtime.shtml b/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/webserver/httpd-fs/runtime.shtml deleted file mode 100644 index 3464fd471..000000000 --- a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/webserver/httpd-fs/runtime.shtml +++ /dev/null @@ -1,20 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS Homepage | IO | 37K jpg -

-


-

-

Run-time statistics

-Page will refresh every 2 seconds.

-

Task            Abs Time      % Time
****************************************
-%! run-time -
-
- - - diff --git a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/webserver/httpd-fs/stats.shtml b/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/webserver/httpd-fs/stats.shtml deleted file mode 100644 index f54118606..000000000 --- a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/webserver/httpd-fs/stats.shtml +++ /dev/null @@ -1,47 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS Homepage | IO | 37K jpg -

-


-

-

Network statistics

-
LocalRemoteStateRetransmissionsTimerFlags
%d%u.%u.%u.%u:%u%s%u%u%c %c
-
-IP           Packets received
-             Packets sent
-             Forwaded
-             Dropped
-IP errors    IP version/header length
-             IP length, high byte
-             IP length, low byte
-             IP fragments
-             Header checksum
-             Wrong protocol
-ICMP	     Packets received
-             Packets sent
-             Packets dropped
-             Type errors
-             Checksum errors
-TCP          Packets received
-             Packets sent
-             Packets dropped
-             Checksum errors
-             Data packets without ACKs
-             Resets
-             Retransmissionsa
-             Syn to closed port
-UDP          Packets dropped
-             Packets received
-             Packets sent
-             Packets chkerr
-	     No connection avaliable
-
%! net-stats
-
- - - diff --git a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/webserver/httpd-fs/tcp.shtml b/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/webserver/httpd-fs/tcp.shtml deleted file mode 100644 index 23dcdcae3..000000000 --- a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/webserver/httpd-fs/tcp.shtml +++ /dev/null @@ -1,21 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS Homepage | IO | 37K jpg -

-


-
-

Network connections

-

- - -%! tcp-connections - - - - - diff --git a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/webserver/httpd-fsdata.c b/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/webserver/httpd-fsdata.c deleted file mode 100644 index 13d7f8afb..000000000 --- a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/webserver/httpd-fsdata.c +++ /dev/null @@ -1,3873 +0,0 @@ -static const char data_404_html[] = { - /* /404.html */ - 0x2f, 0x34, 0x30, 0x34, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, 0xa, 0x20, 0x20, - 0x3c, 0x62, 0x6f, 0x64, 0x79, 0x20, 0x62, 0x67, 0x63, 0x6f, - 0x6c, 0x6f, 0x72, 0x3d, 0x22, 0x77, 0x68, 0x69, 0x74, 0x65, - 0x22, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x63, - 0x65, 0x6e, 0x74, 0x65, 0x72, 0x3e, 0xd, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x3c, 0x68, 0x31, 0x3e, 0x34, 0x30, - 0x34, 0x20, 0x2d, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x6e, - 0x6f, 0x74, 0x20, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x3c, 0x2f, - 0x68, 0x31, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x3c, 0x68, 0x33, 0x3e, 0x47, 0x6f, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x2f, 0x22, 0x3e, - 0x68, 0x65, 0x72, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x69, - 0x6e, 0x73, 0x74, 0x65, 0x61, 0x64, 0x2e, 0x3c, 0x2f, 0x68, - 0x33, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x2f, - 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x3e, 0xd, 0xa, 0x20, - 0x20, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xd, 0xa, - 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0}; - -static const char data_index_html[] = { - /* /index.html */ - 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x20, 0x6f, 0x6e, 0x4c, 0x6f, 0x61, 0x64, - 0x3d, 0x22, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x73, - 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x28, - 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x6c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x68, 0x72, 0x65, 0x66, 0x3d, - 0x27, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, - 0x6d, 0x6c, 0x27, 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x2c, - 0x31, 0x30, 0x30, 0x29, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x66, - 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, - 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xd, 0xa, 0x4c, - 0x6f, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x69, 0x6e, 0x64, - 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x2e, 0x20, - 0x20, 0x43, 0x6c, 0x69, 0x63, 0x6b, 0x20, 0x3c, 0x61, 0x20, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x68, - 0x65, 0x72, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x69, 0x66, - 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x61, 0x75, 0x74, 0x6f, 0x6d, - 0x61, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x6c, 0x79, 0x20, 0x72, - 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x65, 0x64, 0x2e, - 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xd, - 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xd, 0xa, - 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xd, 0xa, 0x3c, - 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, 0xa, 0xd, 0xa, -0}; - -static const char data_index_shtml[] = { - /* /index.shtml */ - 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x20, 0x6f, 0x6e, 0x4c, 0x6f, 0x61, 0x64, - 0x3d, 0x22, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x73, - 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x28, - 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x6c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x68, 0x72, 0x65, 0x66, 0x3d, - 0x27, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, - 0x6d, 0x6c, 0x27, 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x2c, - 0x32, 0x30, 0x30, 0x30, 0x29, 0x22, 0x3e, 0xd, 0xa, 0x3c, - 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, - 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xd, 0xa, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x53, 0x74, 0x61, - 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x72, 0x75, 0x6e, 0x74, 0x69, - 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x52, 0x75, 0x6e, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, - 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, - 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x54, 0x43, 0x50, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, - 0x6c, 0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, - 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, - 0x65, 0x65, 0x72, 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, - 0x2f, 0x22, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x20, 0x48, 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, - 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, - 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, - 0x66, 0x3d, 0x22, 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, - 0x6c, 0x22, 0x3e, 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0x20, - 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, - 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x6c, 0x6f, - 0x67, 0x6f, 0x2e, 0x6a, 0x70, 0x67, 0x22, 0x3e, 0x33, 0x37, - 0x4b, 0x20, 0x6a, 0x70, 0x67, 0x3c, 0x2f, 0x61, 0x3e, 0xd, - 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, - 0x3c, 0x68, 0x72, 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, - 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x32, 0x3e, 0x54, - 0x61, 0x73, 0x6b, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, - 0x74, 0x69, 0x63, 0x73, 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0xd, - 0xa, 0x50, 0x61, 0x67, 0x65, 0x20, 0x77, 0x69, 0x6c, 0x6c, - 0x20, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x20, 0x65, - 0x76, 0x65, 0x72, 0x79, 0x20, 0x32, 0x20, 0x73, 0x65, 0x63, - 0x6f, 0x6e, 0x64, 0x73, 0x2e, 0x3c, 0x70, 0x3e, 0xd, 0xa, - 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, - 0x3d, 0x22, 0x63, 0x6f, 0x75, 0x72, 0x69, 0x65, 0x72, 0x22, - 0x3e, 0x3c, 0x70, 0x72, 0x65, 0x3e, 0x54, 0x61, 0x73, 0x6b, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x53, 0x74, 0x61, 0x74, 0x65, 0x20, 0x20, 0x50, 0x72, 0x69, - 0x6f, 0x72, 0x69, 0x74, 0x79, 0x20, 0x20, 0x53, 0x74, 0x61, - 0x63, 0x6b, 0x9, 0x23, 0x3c, 0x62, 0x72, 0x3e, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x3c, 0x62, 0x72, 0x3e, - 0xd, 0xa, 0x25, 0x21, 0x20, 0x72, 0x74, 0x6f, 0x73, 0x2d, - 0x73, 0x74, 0x61, 0x74, 0x73, 0xd, 0xa, 0x3c, 0x2f, 0x70, - 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, - 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xd, - 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xd, 0xa, - 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, 0xa, 0xd, - 0xa, 0}; - -static const char data_io_shtml[] = { - /* /io.shtml */ - 0x2f, 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x6e, - 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, - 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x61, 0x20, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, - 0x61, 0x73, 0x6b, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x52, 0x75, 0x6e, - 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, 0x74, 0x61, 0x74, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x43, 0x50, - 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, - 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, - 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, 0x65, 0x65, 0x72, - 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x22, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x20, 0x48, - 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, - 0x6a, 0x70, 0x67, 0x22, 0x3e, 0x33, 0x37, 0x4b, 0x20, 0x6a, - 0x70, 0x67, 0x3c, 0x2f, 0x61, 0x3e, 0xd, 0xa, 0x3c, 0x62, - 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x72, - 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x3e, 0x4c, 0x45, 0x44, 0x20, - 0x61, 0x6e, 0x64, 0x20, 0x4c, 0x43, 0x44, 0x20, 0x49, 0x4f, - 0x3c, 0x2f, 0x62, 0x3e, 0x3c, 0x62, 0x72, 0x3e, 0xd, 0xa, - 0xd, 0xa, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0xd, 0xa, 0x54, - 0x68, 0x65, 0x20, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x20, 0x62, - 0x6f, 0x78, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x22, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x20, 0x49, 0x4f, 0x22, 0x20, 0x62, - 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x20, 0x63, 0x61, 0x6e, 0x20, - 0x61, 0x6c, 0x73, 0x6f, 0x20, 0x62, 0x65, 0x20, 0x75, 0x73, - 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x74, 0x75, 0x72, 0x6e, - 0x20, 0x74, 0x68, 0x65, 0x20, 0x79, 0x65, 0x6c, 0x6c, 0x6f, - 0x77, 0x20, 0x4c, 0x45, 0x44, 0x20, 0x6f, 0x6e, 0x20, 0x61, - 0x6e, 0x64, 0x20, 0x6f, 0x66, 0x66, 0x2e, 0xd, 0xa, 0xd, - 0xa, 0xd, 0xa, 0xd, 0xa, 0x3c, 0x70, 0x3e, 0xd, 0xa, - 0x3c, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x6e, 0x61, 0x6d, 0x65, - 0x3d, 0x22, 0x61, 0x46, 0x6f, 0x72, 0x6d, 0x22, 0x20, 0x61, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3d, 0x22, 0x2f, 0x69, 0x6f, - 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x20, 0x6d, 0x65, - 0x74, 0x68, 0x6f, 0x64, 0x3d, 0x22, 0x67, 0x65, 0x74, 0x22, - 0x3e, 0xd, 0xa, 0x25, 0x21, 0x20, 0x6c, 0x65, 0x64, 0x2d, - 0x69, 0x6f, 0xd, 0xa, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, - 0x69, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x74, 0x79, 0x70, 0x65, - 0x3d, 0x22, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x22, 0x20, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3d, 0x22, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x20, 0x49, 0x4f, 0x22, 0x3e, 0xd, 0xa, - 0x3c, 0x2f, 0x66, 0x6f, 0x72, 0x6d, 0x3e, 0xd, 0xa, 0x3c, - 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x2f, - 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x62, - 0x6f, 0x64, 0x79, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x68, 0x74, - 0x6d, 0x6c, 0x3e, 0xd, 0xa, 0xd, 0xa, 0}; - -static const char data_logo_jpg[] = { - /* /logo.jpg */ - 0x2f, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, 0x6a, 0x70, 0x67, 0, - 0xff, 0xd8, 0xff, 0xe0, 00, 0x10, 0x4a, 0x46, 0x49, 0x46, - 00, 0x1, 0x1, 00, 00, 0x1, 00, 0x1, 00, 00, - 0xff, 0xdb, 00, 0x43, 00, 0x3, 0x2, 0x2, 0x3, 0x2, - 0x2, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x3, 0x4, 0x5, - 0x8, 0x5, 0x5, 0x4, 0x4, 0x5, 0xa, 0x7, 0x7, 0x6, - 0x8, 0xc, 0xa, 0xc, 0xc, 0xb, 0xa, 0xb, 0xb, 0xd, - 0xe, 0x12, 0x10, 0xd, 0xe, 0x11, 0xe, 0xb, 0xb, 0x10, - 0x16, 0x10, 0x11, 0x13, 0x14, 0x15, 0x15, 0x15, 0xc, 0xf, - 0x17, 0x18, 0x16, 0x14, 0x18, 0x12, 0x14, 0x15, 0x14, 0xff, - 0xdb, 00, 0x43, 0x1, 0x3, 0x4, 0x4, 0x5, 0x4, 0x5, - 0x9, 0x5, 0x5, 0x9, 0x14, 0xd, 0xb, 0xd, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0xff, 0xc0, - 00, 0x11, 0x8, 0x1, 0x8, 0x2, 0xc2, 0x3, 0x1, 0x22, - 00, 0x2, 0x11, 0x1, 0x3, 0x11, 0x1, 0xff, 0xc4, 00, - 0x1f, 00, 00, 0x1, 0x5, 0x1, 0x1, 0x1, 0x1, 0x1, - 0x1, 00, 00, 00, 00, 00, 00, 00, 00, 0x1, - 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb, - 0xff, 0xc4, 00, 0xb5, 0x10, 00, 0x2, 0x1, 0x3, 0x3, - 0x2, 0x4, 0x3, 0x5, 0x5, 0x4, 0x4, 00, 00, 0x1, - 0x7d, 0x1, 0x2, 0x3, 00, 0x4, 0x11, 0x5, 0x12, 0x21, - 0x31, 0x41, 0x6, 0x13, 0x51, 0x61, 0x7, 0x22, 0x71, 0x14, - 0x32, 0x81, 0x91, 0xa1, 0x8, 0x23, 0x42, 0xb1, 0xc1, 0x15, - 0x52, 0xd1, 0xf0, 0x24, 0x33, 0x62, 0x72, 0x82, 0x9, 0xa, - 0x16, 0x17, 0x18, 0x19, 0x1a, 0x25, 0x26, 0x27, 0x28, 0x29, - 0x2a, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x43, 0x44, - 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x53, 0x54, 0x55, 0x56, - 0x57, 0x58, 0x59, 0x5a, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, - 0x69, 0x6a, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, - 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x92, 0x93, - 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0xa2, 0xa3, 0xa4, - 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xb2, 0xb3, 0xb4, 0xb5, - 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, - 0xc7, 0xc8, 0xc9, 0xca, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, - 0xd8, 0xd9, 0xda, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, - 0xe8, 0xe9, 0xea, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, - 0xf8, 0xf9, 0xfa, 0xff, 0xc4, 00, 0x1f, 0x1, 00, 0x3, - 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 00, - 00, 00, 00, 00, 00, 0x1, 0x2, 0x3, 0x4, 0x5, - 0x6, 0x7, 0x8, 0x9, 0xa, 0xb, 0xff, 0xc4, 00, 0xb5, - 0x11, 00, 0x2, 0x1, 0x2, 0x4, 0x4, 0x3, 0x4, 0x7, - 0x5, 0x4, 0x4, 00, 0x1, 0x2, 0x77, 00, 0x1, 0x2, - 0x3, 0x11, 0x4, 0x5, 0x21, 0x31, 0x6, 0x12, 0x41, 0x51, - 0x7, 0x61, 0x71, 0x13, 0x22, 0x32, 0x81, 0x8, 0x14, 0x42, - 0x91, 0xa1, 0xb1, 0xc1, 0x9, 0x23, 0x33, 0x52, 0xf0, 0x15, - 0x62, 0x72, 0xd1, 0xa, 0x16, 0x24, 0x34, 0xe1, 0x25, 0xf1, - 0x17, 0x18, 0x19, 0x1a, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x35, - 0x36, 0x37, 0x38, 0x39, 0x3a, 0x43, 0x44, 0x45, 0x46, 0x47, - 0x48, 0x49, 0x4a, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, - 0x5a, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x73, - 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x82, 0x83, 0x84, - 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x92, 0x93, 0x94, 0x95, - 0x96, 0x97, 0x98, 0x99, 0x9a, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, - 0xa7, 0xa8, 0xa9, 0xaa, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, - 0xb8, 0xb9, 0xba, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, - 0xc9, 0xca, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, - 0xda, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, - 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xff, - 0xda, 00, 0xc, 0x3, 0x1, 00, 0x2, 0x11, 0x3, 0x11, - 00, 0x3f, 00, 0xfd, 0x53, 0xa2, 0x8a, 0x28, 00, 0xa2, - 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, - 00, 0xaa, 0xf7, 0xfa, 0x85, 0xb6, 0x95, 0x67, 0x2d, 0xd5, - 0xe4, 0xf1, 0xdb, 0x5b, 0x44, 0xa5, 0x9e, 0x59, 0x58, 0x2a, - 0xa8, 0x1e, 0xf5, 0xc6, 0x7c, 0x4e, 0xf8, 0xb3, 0xa6, 0xfc, - 0x39, 0xb4, 0x48, 0xb0, 0xb7, 0xda, 0xd5, 0xc6, 0x5, 0xb6, - 0x9e, 0x8d, 0x86, 0x72, 0x4e, 0x37, 0x37, 0xf7, 0x57, 0xf9, - 0xf6, 0xaa, 0x16, 0x5f, 0xd, 0x9f, 0xc6, 0xd0, 0xc5, 0xa9, - 0xf8, 0xc6, 0xe1, 0xef, 0xa6, 0x99, 0x3, 0xa6, 0x9e, 0x84, - 0xad, 0xbd, 0xb6, 0x7b, 0x2a, 0xf7, 0x3e, 0xe7, 0x9a, 0xe0, - 0xa9, 0x89, 0xbc, 0xdd, 0x1a, 0xb, 0x9a, 0x6b, 0x7e, 0xcb, - 0xd5, 0xfe, 0x9b, 0x9c, 0xb2, 0xaf, 0x79, 0x3a, 0x74, 0xb5, - 0x92, 0xdf, 0xb2, 0xf5, 0xff, 00, 0x23, 0x93, 0xf1, 0xa7, - 0xed, 0x5f, 0xa1, 0x69, 0x1b, 0xa1, 0xd0, 0x2d, 0x64, 0xd6, - 0x2e, 0x1, 0xc7, 0x9b, 0x26, 0x62, 0x84, 0x7d, 0xf, 0x53, - 0xf9, 0x57, 0x91, 0x6b, 0x5f, 0xb5, 0xf, 0x8e, 0x35, 0x49, - 0x9, 0xb7, 0xba, 0xb7, 0xd3, 0x23, 0xec, 0x96, 0xd0, 0x29, - 0xfd, 0x5b, 0x26, 0xbe, 0x92, 0x7f, 0x81, 0x1e, 0xb, 0x7f, - 0xf9, 0x84, 0x46, 0x3e, 0x95, 0xb, 0xfe, 0xcf, 0xfe, 0xa, - 0x93, 0xae, 0x96, 0xa3, 0xe8, 0x6b, 0xc2, 0xaf, 0x84, 0xcd, - 0xab, 0xbb, 0xba, 0xa9, 0x2e, 0xc9, 0xb5, 0xfa, 0x5c, 0xf0, - 0xb1, 0x18, 0x4c, 0xce, 0xbb, 0xd2, 0xb2, 0x8a, 0xec, 0xb4, - 0xff, 00, 0x82, 0x7c, 0x91, 0x3f, 0xc6, 0xf, 0x19, 0x5c, - 0x48, 0x5d, 0xfc, 0x45, 0x7e, 0x58, 0xf5, 0xc4, 0xb8, 0x1f, - 0x90, 0xa7, 0x27, 0xc6, 0x5f, 0x1a, 0x46, 0xca, 0x57, 0xc4, - 0x57, 0xc0, 0xaf, 0x23, 0xf7, 0x99, 0xfe, 0x95, 0xf5, 0x73, - 0xfe, 0xce, 0x9e, 0x9, 0x7f, 0xf9, 0x87, 0x15, 0xfa, 0x35, - 0x43, 0x27, 0xec, 0xd7, 0xe0, 0xa7, 0xe9, 0x67, 0x2a, 0xfd, - 0x1e, 0xbc, 0xcf, 0xec, 0x7c, 0xc5, 0x3b, 0xa9, 0xff, 00, - 0xe4, 0xcc, 0xf3, 0x3f, 0xb1, 0xf3, 0x1d, 0xd5, 0x6f, 0xc5, - 0x9f, 0x31, 0x2f, 0xc7, 0x9f, 0x1e, 0x29, 0xcf, 0xfc, 0x24, - 0x77, 0x47, 0xea, 0x10, 0xff, 00, 0x4a, 0x9e, 0x2f, 0xda, - 0x17, 0xc7, 0xd1, 0xc, 0xf, 0x10, 0xcc, 0x7b, 0xfc, 0xd0, - 0xc6, 0x7f, 0x9a, 0xd7, 0xd1, 0xed, 0xfb, 0x31, 0xf8, 0x34, - 0xe7, 0x10, 0xce, 0x7, 0xfb, 0xff, 00, 0xfd, 0x6a, 0x81, - 0xff, 00, 0x65, 0xcf, 0x8, 0x37, 0x4f, 0xb4, 0x83, 0xfe, - 0xf0, 0xa7, 0xfd, 0x99, 0x9a, 0xad, 0xaa, 0x7f, 0xe4, 0xcc, - 0x3f, 0xb2, 0xf3, 0x45, 0xb5, 0x6f, 0xc5, 0x9f, 0x3d, 0xff, - 00, 0xc3, 0x46, 0x7c, 0x40, 0xff, 00, 0xa0, 0xfb, 0xff, - 00, 0xe0, 0x3c, 0x5f, 0xfc, 0x4d, 0x48, 0xbf, 0xb4, 0x8f, - 0x8f, 0xd4, 0xe7, 0xfb, 0x6f, 0x3e, 0xc6, 0xda, 0x2f, 0xfe, - 0x26, 0xbd, 0xe9, 0xff, 00, 0x65, 0x6f, 0x9, 0xb6, 0x71, - 0x25, 0xd0, 0xff, 00, 0x81, 0xa, 0x85, 0xff, 00, 0x64, - 0xff, 00, 0xb, 0x30, 0xe2, 0xe6, 0xed, 0x4f, 0xd4, 0x51, - 0xfd, 0x9d, 0x9b, 0x2f, 0xb6, 0xff, 00, 0xf0, 0x26, 0x1f, - 0xd9, 0xd9, 0xb2, 0xda, 0xb7, 0xfe, 0x4c, 0xcf, 0x11, 0x5f, - 0xda, 0x63, 0xc7, 0xca, 0x79, 0xd5, 0xa3, 0x6f, 0x63, 0x6b, - 0x1f, 0xf8, 0x54, 0xcb, 0xfb, 0x50, 0x78, 0xf1, 0x40, 0x1f, - 0x6f, 0xb6, 0x3e, 0xe6, 0xd5, 0x2b, 0xd8, 0x5b, 0xf6, 0x49, - 0xf0, 0xd1, 0xe9, 0x7f, 0x76, 0xbe, 0xdc, 0x54, 0xf, 0xfb, - 0x22, 0xe8, 0x24, 0x7c, 0xba, 0xa5, 0xd0, 0x3f, 0xee, 0x8a, - 0x5f, 0x52, 0xce, 0x17, 0xda, 0x7f, 0xf8, 0x17, 0xfc, 0x10, - 0xfa, 0x8e, 0x70, 0xbf, 0xe5, 0xef, 0xfe, 0x4c, 0x79, 0x7a, - 0xfe, 0xd5, 0x9e, 0x38, 0x4, 0x66, 0x4d, 0x3d, 0xb1, 0xd8, - 0xda, 0xf5, 0xfd, 0x6a, 0x55, 0xfd, 0xac, 0x7c, 0x6a, 0xbd, - 0x53, 0x4c, 0x6f, 0xad, 0xb3, 0x7f, 0xf1, 0x55, 0xe8, 0xcf, - 0xfb, 0x21, 0x68, 0xe7, 0xee, 0xea, 0xd7, 0x3, 0xea, 0xa2, - 0xa0, 0x7f, 0xd9, 0x3, 0x4e, 0x39, 0xdb, 0xac, 0x4c, 0x3e, - 0xa8, 0x29, 0xfd, 0x5b, 0x39, 0x5f, 0x69, 0xff, 00, 0xe0, - 0x48, 0x3e, 0xa9, 0x9d, 0x2f, 0xf9, 0x79, 0xf8, 0x9c, 0x18, - 0xfd, 0xad, 0x3c, 0x67, 0xff, 00, 0x3c, 0x74, 0xbf, 0xfc, - 0x7, 0x6f, 0xfe, 0x2e, 0x9e, 0x3f, 0x6b, 0x6f, 0x18, 0x77, - 0xb6, 0xd2, 0xcf, 0xfd, 0xb0, 0x7f, 0xfe, 0x2e, 0xbb, 0x37, - 0xfd, 0x8f, 0xac, 0xff, 00, 0x87, 0x5a, 0x93, 0xf1, 0x41, - 0x50, 0xbf, 0xec, 0x7b, 0x11, 0xfb, 0xba, 0xe3, 0xf, 0xac, - 0x74, 0x7b, 0x1c, 0xe9, 0x75, 0x7f, 0x7a, 0x17, 0xd5, 0xf3, - 0xb5, 0xf6, 0xff, 00, 0x14, 0x72, 0xc9, 0xfb, 0x5d, 0x78, - 0xb1, 0x4f, 0xcd, 0x63, 0xa5, 0xb0, 0xf4, 0xf2, 0x9c, 0x7f, - 0xec, 0xd5, 0x62, 0x2f, 0xda, 0xff, 00, 0xc4, 0x8a, 0xb8, - 0x7d, 0x27, 0x4d, 0x73, 0xea, 0x3, 0x8f, 0xfd, 0x9a, 0xb6, - 0x9f, 0xf6, 0x3d, 0x71, 0x8d, 0x9a, 0xd8, 0x3f, 0x58, 0xea, - 0x17, 0xfd, 0x8f, 0xee, 0x81, 0x3b, 0x75, 0x98, 0xcf, 0xa6, - 0x52, 0xa7, 0x93, 0x3a, 0x5f, 0xcd, 0xf7, 0xa0, 0xf6, 0x79, - 0xe2, 0xfb, 0x5f, 0x91, 0x4d, 0x7f, 0x6c, 0x4d, 0x6c, 0x1, - 0xbb, 0x42, 0xb0, 0x27, 0xb9, 0xe, 0xe3, 0x35, 0x3a, 0x7e, - 0xd8, 0xda, 0x98, 0x3f, 0x37, 0x87, 0x6d, 0x8, 0xf6, 0xb8, - 0x61, 0xfd, 0x29, 0xad, 0xfb, 0x21, 0x6a, 0x40, 0x71, 0xaa, - 0xc2, 0x4f, 0xa6, 0xda, 0x85, 0xff, 00, 0x64, 0x4d, 0x60, - 0x1f, 0x97, 0x53, 0x80, 0xfe, 0x14, 0xef, 0x9d, 0xae, 0xff, - 00, 0x80, 0x7f, 0xc2, 0xe2, 0xeb, 0xf9, 0x17, 0x7, 0xed, - 0x8f, 0x7b, 0xdf, 0xc3, 0x56, 0xdf, 0x85, 0xd3, 0x7f, 0xf1, - 0x35, 0x22, 0xfe, 0xd8, 0xf7, 0x3c, 0x6e, 0xf0, 0xd4, 0x3e, - 0xf8, 0xba, 0x3f, 0xfc, 0x4d, 0x64, 0x37, 0xec, 0x8f, 0xaf, - 0x1, 0xf2, 0xdf, 0xdb, 0x93, 0xe8, 0x6a, 0x16, 0xfd, 0x92, - 0xfc, 0x48, 0xf, 0xcb, 0x75, 0x6c, 0x47, 0xae, 0xea, 0x4e, - 0xae, 0x74, 0xbf, 0x9b, 0xee, 0x42, 0xe7, 0xcf, 0x17, 0xfc, - 0x32, 0x3a, 0x45, 0xfd, 0xb1, 0xf9, 0xf9, 0xbc, 0x32, 0x31, - 0xed, 0x77, 0xff, 00, 0xd8, 0xd4, 0xf1, 0xfe, 0xd8, 0xf6, - 0xd8, 0x3b, 0xfc, 0x37, 0x26, 0x7b, 0x6d, 0xba, 0x1f, 0xfc, - 0x4d, 0x71, 0x6f, 0xfb, 0x29, 0x78, 0xa9, 0x46, 0x43, 0xdb, - 0x93, 0xe9, 0xbc, 0x54, 0x2f, 0xfb, 0x2c, 0x78, 0xb5, 0x71, - 0x81, 0x9, 0xfa, 0x38, 0xa5, 0xf5, 0x9c, 0xe5, 0x74, 0x97, - 0xfe, 0x2, 0xbf, 0xc8, 0x7e, 0xdf, 0x3b, 0x5f, 0x67, 0xf0, - 0x47, 0xa2, 0x45, 0xfb, 0x62, 0xe9, 0x45, 0x7, 0x99, 0xe1, - 0xeb, 0xb0, 0xfe, 0x8b, 0x3a, 0x11, 0xfc, 0xaa, 0xc2, 0x7e, - 0xd8, 0x3a, 0x1, 0xc6, 0xfd, 0xf, 0x50, 0x5f, 0x5c, 0x3a, - 0x1f, 0xeb, 0x5e, 0x58, 0xff, 00, 0xb2, 0xff, 00, 0x8c, - 0x57, 0x38, 0x82, 0x26, 0xc7, 0xfb, 0x62, 0xa2, 0x6f, 0xd9, - 0x97, 0xc6, 0x63, 0x18, 0xb4, 0x43, 0xf4, 0x71, 0x4f, 0xeb, - 0xb9, 0xc2, 0xfb, 0x2f, 0xff, 00, 0x1, 0xff, 00, 0x80, - 0x1f, 0x5a, 0xce, 0x97, 0xd8, 0xfc, 0x11, 0xeb, 0xa3, 0xf6, - 0xbe, 0xf0, 0xd7, 0x7d, 0x23, 0x53, 0x1f, 0xf7, 0xef, 0xff, - 00, 0x8a, 0xa7, 0xaf, 0xed, 0x79, 0xe1, 0x72, 0x39, 0xd2, - 0xf5, 0x31, 0xff, 00, 0x1, 0x4f, 0xfe, 0x2a, 0xbc, 0x61, - 0xff, 00, 0x66, 0xcf, 0x1a, 0xa6, 0x71, 0xa7, 0x86, 0xc7, - 0xa3, 0x8a, 0x85, 0xff, 00, 0x67, 0x5f, 0x1b, 0xa0, 0xcf, - 0xf6, 0x53, 0x1f, 0xa3, 0xa, 0x3f, 0xb4, 0x33, 0x65, 0xf6, - 0x5f, 0xfe, 0x3, 0xff, 00, 00, 0x5f, 0x5e, 0xce, 0x56, - 0xf4, 0xff, 00, 0x3, 0xdc, 0x47, 0xed, 0x71, 0xe1, 0x42, - 0x46, 0x74, 0xfd, 0x4c, 0xf, 0xf7, 0x13, 0xff, 00, 0x8a, - 0xa9, 0xe3, 0xfd, 0xac, 0xfc, 0x1e, 0xc4, 0xee, 0xb6, 0xd4, - 0x90, 0x7f, 0xd7, 0x15, 0x3f, 0xfb, 0x35, 0x78, 0x3, 0x7e, - 0xcf, 0xfe, 0x36, 0x52, 0x47, 0xf6, 0x3c, 0x9f, 0x81, 0x15, - 0xb, 0xfc, 0x9, 0xf1, 0xa2, 0xc, 0xff, 00, 0x63, 0x4c, - 0x7e, 0x98, 0xa5, 0xfd, 0xa7, 0x9a, 0x2d, 0xe2, 0xff, 00, - 0xf0, 0x16, 0x1f, 0xda, 0x39, 0xba, 0xde, 0x9f, 0xe0, 0x7d, - 0x19, 0x1f, 0xed, 0x59, 0xe0, 0x97, 0x5c, 0xb7, 0xf6, 0x8a, - 0x1f, 0x43, 0x6c, 0xf, 0xfe, 0xcd, 0x53, 0xaf, 0xed, 0x4b, - 0xe0, 0x43, 0x8c, 0xdc, 0x5e, 0x8f, 0xad, 0xab, 0x71, 0x5f, - 0x33, 0xb7, 0xc1, 0x2f, 0x19, 0x29, 0xff, 00, 0x90, 0x2d, - 0xc7, 0xe5, 0x50, 0x37, 0xc1, 0xcf, 0x18, 0x20, 0xc9, 0xd1, - 0x2e, 0x71, 0xec, 0xb5, 0x5f, 0xda, 0xf9, 0x92, 0xde, 0x1f, - 0xf9, 0x2b, 0xf, 0xed, 0x5c, 0xd5, 0x6f, 0x4b, 0xf0, 0x7f, - 0xe6, 0x7d, 0x48, 0x3f, 0x69, 0xff, 00, 0x1, 0x1f, 0xf9, - 0x7f, 0xba, 0x1f, 0xf6, 0xe8, 0xff, 00, 0xe1, 0x4e, 0x1f, - 0xb4, 0xe7, 0x80, 0x4f, 0xfc, 0xc4, 0x6e, 0x7, 0xd6, 0xd1, - 0xff, 00, 0xc2, 0xbe, 0x54, 0x7f, 0x84, 0xde, 0x2d, 0x8f, - 0xae, 0x87, 0x77, 0xf8, 0x25, 0x40, 0xdf, 0xc, 0xfc, 0x50, - 0xa0, 0x93, 0xa3, 0x5d, 0xf1, 0xff, 00, 0x4c, 0xcd, 0x27, - 0x9d, 0x66, 0xb, 0xec, 0x2f, 0xfc, 0x5, 0xff, 00, 0x98, - 0xbf, 0xb6, 0x33, 0x35, 0xbd, 0x2f, 0xc1, 0xff, 00, 0x99, - 0xf5, 0xa8, 0xfd, 0xa5, 0xfc, 0x2, 0x46, 0x7f, 0xb5, 0x26, - 0x1f, 0x5b, 0x57, 0xff, 00, 0xa, 0x9d, 0x3f, 0x68, 0xdf, - 00, 0xb9, 0xc7, 0xf6, 0xd1, 0x5f, 0x76, 0xb7, 0x93, 0xff, - 00, 0x89, 0xaf, 0x8f, 0x9b, 0xe1, 0xe7, 0x89, 0x13, 0x19, - 0xd2, 0x2e, 0xc6, 0x7f, 0xe9, 0x99, 0xa8, 0xdb, 0xc0, 0xbe, - 0x20, 0x4c, 0xe7, 0x4a, 0xbb, 0x18, 0xeb, 0xfb, 0xb3, 0x4b, - 0xfb, 0x73, 0x1c, 0xb7, 0x82, 0xfb, 0x9f, 0xf9, 0x87, 0xf6, - 0xd6, 0x60, 0xb7, 0xa5, 0xf8, 0x3f, 0xf3, 0x3e, 0xcc, 0x8f, - 0xf6, 0x84, 0xf0, 0xc, 0x99, 0xff, 00, 0x89, 0xfc, 0x6b, - 0x8f, 0xef, 0x43, 0x20, 0xff, 00, 0xd9, 0x6a, 0x75, 0xf8, - 0xf1, 0xe0, 0x26, 0x50, 0x47, 0x88, 0xed, 0xb9, 0xf5, 0x57, - 0x1f, 0xd2, 0xbe, 0x27, 0x6f, 0x7, 0x6b, 0x8b, 0xd7, 0x4c, - 0xba, 0x1f, 0xf6, 0xcc, 0xd4, 0x6d, 0xe1, 0x6d, 0x65, 0x9, - 0x7, 0x4e, 0xba, 0x18, 0xff, 00, 0xa6, 0x66, 0x9f, 0xf6, - 0xfe, 0x2d, 0x6f, 0x5, 0xf7, 0x3f, 0xf3, 0x1f, 0xf6, 0xee, - 0x35, 0x6f, 0x47, 0xf0, 0x67, 0xdc, 0x23, 0xe3, 0x87, 0x81, - 0xf, 0xfc, 0xcc, 0xd6, 0x5f, 0x99, 0xff, 00, 0xa, 0x92, - 0x3f, 0x8d, 0x3e, 0x7, 0x90, 0x90, 0xbe, 0x26, 0xb0, 0xe3, - 0xd6, 0x4c, 0x7f, 0x4a, 0xf8, 0x54, 0xe8, 0x1a, 0xa2, 0x8c, - 0x9b, 0x1b, 0x80, 0x3f, 0xeb, 0x99, 0xa6, 0x1d, 0x1b, 0x51, - 0x5e, 0xb6, 0x93, 0x8f, 0xf8, 0x1, 0xa7, 0xfe, 0xb0, 0xe2, - 0x7f, 0x92, 0x3f, 0x8f, 0xf9, 0x87, 0xf6, 0xfe, 0x2f, 0xad, - 0x1f, 0xcc, 0xfb, 0xc9, 0x7e, 0x2f, 0x78, 0x2d, 0x86, 0x47, - 0x89, 0x74, 0xec, 0x7f, 0xd7, 0x61, 0x53, 0x47, 0xf1, 0x4f, - 0xc2, 0x12, 0x90, 0x17, 0xc4, 0x7a, 0x71, 0x27, 0xa7, 0xfa, - 0x42, 0xd7, 0xc0, 0xa7, 0x4b, 0xbe, 0x1d, 0x6d, 0xa5, 0x1f, - 0xf0, 0x3, 0x4d, 0x3a, 0x7d, 0xe2, 0xf5, 0xb7, 0x97, 0xfe, - 0xf8, 0x34, 0x7f, 0xac, 0x55, 0xfa, 0xc2, 0x3f, 0x88, 0xff, - 00, 0xd6, 0x1c, 0x42, 0xde, 0x8f, 0xe6, 0x7e, 0x82, 0xc3, - 0xf1, 0xb, 0xc3, 0x17, 0xd, 0xb6, 0x3f, 0x10, 0x69, 0xac, - 0x7a, 0xe3, 0xed, 0x28, 0x3f, 0xad, 0x5a, 0x4f, 0x17, 0xe8, - 0x52, 0x2e, 0x53, 0x59, 0xb0, 0x61, 0xea, 0x2e, 0x50, 0xff, - 00, 0x5a, 0xfc, 0xee, 0x36, 0xb7, 0x23, 0xac, 0x2e, 0x3f, - 0xe0, 0x26, 0x9a, 0x61, 0x98, 0x7f, 0xcb, 0x36, 0xfc, 0xaa, - 0xd7, 0x12, 0x54, 0xeb, 0x4d, 0x7d, 0xe5, 0x2e, 0x23, 0xab, - 0xd6, 0x8f, 0xe3, 0xff, 00, 00, 0xfd, 0x1c, 0x1a, 0xee, - 0x9a, 0x71, 0x8d, 0x42, 0xd4, 0xe7, 0xfe, 0x9b, 0x2f, 0xf8, - 0xd3, 0x86, 0xb3, 0xa7, 0x9e, 0x97, 0xd6, 0xc7, 0xfe, 0xdb, - 0x2f, 0xf8, 0xd7, 0xe7, 0x6, 0xc9, 0x47, 0xf0, 0x37, 0xe5, - 0x47, 0xef, 0x57, 0xb3, 0xa, 0xd3, 0xfd, 0x64, 0x97, 0xfc, - 0xfa, 0x5f, 0x7f, 0xfc, 0x1, 0xff, 00, 0xac, 0x92, 0xff, - 00, 0x9f, 0x3f, 0x8f, 0xfc, 0x3, 0xf4, 0x84, 0x6a, 0xb6, - 0x47, 0xa5, 0xe4, 0x7, 0xe9, 0x2a, 0xff, 00, 0x8d, 0x38, - 0x6a, 0x16, 0xad, 0x8c, 0x5c, 0xc2, 0x73, 0xe9, 0x20, 0xaf, - 0xcd, 0xc1, 0x24, 0xc3, 0xa1, 0x61, 0xf9, 0xd3, 0x85, 0xcd, - 0xc2, 0xf4, 0x77, 0x18, 0xff, 00, 0x68, 0xd3, 0x5c, 0x48, - 0xff, 00, 0xe7, 0xd7, 0xe3, 0xff, 00, 00, 0x7f, 0xeb, - 0x2f, 0x7a, 0x5f, 0x8f, 0xfc, 0x3, 0xf4, 0x95, 0x67, 0x8d, - 0xce, 0x16, 0x44, 0x63, 0xe8, 0x18, 0x1a, 0x7e, 0x47, 0xad, - 0x7e, 0x6d, 0xae, 0xa7, 0x7a, 0x87, 0x2b, 0x73, 0x32, 0x9f, - 0x51, 0x21, 0x1f, 0xd6, 0xa4, 0x1a, 0xe6, 0xa2, 0xbd, 0x2f, - 0x6e, 0x47, 0xd2, 0x66, 0xff, 00, 0x1a, 0xa5, 0xc4, 0x9d, - 0xe9, 0x7e, 0x3f, 0xf0, 0xa, 0xff, 00, 0x59, 0x63, 0xff, - 00, 0x3e, 0xbf, 0x1f, 0xf8, 0x7, 0xe9, 0x6, 0x45, 0x19, - 0xaf, 0xce, 0x31, 0xe2, 0x4d, 0x58, 0xc, 0xd, 0x4a, 0xf0, - 0xf, 0x69, 0xdf, 0xfc, 0x69, 0xc3, 0xc5, 0x3a, 0xc8, 0x3c, - 0x6a, 0x97, 0xc0, 0xff, 00, 0xd7, 0xc3, 0xff, 00, 0x8d, - 0x5f, 0xfa, 0xc7, 0x1f, 0xf9, 0xf5, 0xf8, 0xff, 00, 0xc0, - 0x1f, 0xfa, 0xcb, 0x4f, 0xfe, 0x7d, 0x3f, 0xbf, 0xfe, 0x1, - 0xfa, 0x35, 0x9a, 0x5a, 0xfc, 0xe8, 0x5f, 0x18, 0xeb, 0xb1, - 0xe4, 0x2e, 0xb1, 0x7e, 0xb9, 0xeb, 0x8b, 0x97, 0xe7, 0xf5, - 0xa9, 0x53, 0xc7, 0x7e, 0x22, 0x89, 0x76, 0xae, 0xb9, 0xa9, - 0x28, 0xf4, 0x17, 0x6f, 0xfe, 0x34, 0x7f, 0xac, 0x71, 0xff, - 00, 0x9f, 0x5f, 0x8f, 0xfc, 0x2, 0x97, 0x12, 0xd2, 0xeb, - 0x4d, 0xfd, 0xe7, 0xe8, 0x95, 0x15, 0xf9, 0xe8, 0x9f, 0x12, - 0xbc, 0x55, 0x19, 0x5, 0x7c, 0x43, 0xaa, 0x2, 0x3a, 0x7f, - 0xa5, 0xbf, 0xf8, 0xd4, 0xf1, 0xfc, 0x57, 0xf1, 0x84, 0x59, - 0xdb, 0xe2, 0x5d, 0x50, 0x67, 0xfe, 0x9e, 0x9f, 0xfc, 0x6a, - 0xd7, 0x11, 0xd3, 0xeb, 0x4d, 0xfd, 0xe8, 0xb5, 0xc4, 0x94, - 0x3a, 0xc1, 0xfe, 0x7, 0xe8, 0x25, 0x15, 0xf0, 00, 0xf8, - 0xc3, 0xe3, 0x40, 0x38, 0xf1, 0x3e, 0xa9, 0xff, 00, 0x81, - 0xd, 0x4f, 0x1f, 0x19, 0xbc, 0x6c, 0xe, 0x7f, 0xe1, 0x26, - 0xd4, 0x7f, 0xef, 0xf1, 0xaa, 0xff, 00, 0x58, 0xa8, 0xff, - 00, 0xcf, 0xb7, 0xf8, 0xf, 0xfd, 0x64, 0xc3, 0xff, 00, - 0x23, 0xfc, 0xf, 0xbf, 0x28, 0xaf, 0x82, 0x57, 0xe3, 0x8f, - 0x8e, 0x54, 0xe4, 0x78, 0x92, 0xf8, 0xfd, 0x5c, 0x7f, 0x85, - 0x4a, 0x9f, 0x1e, 0x3c, 0x74, 0x99, 0xc7, 0x88, 0xae, 0xcf, - 0xd7, 0x7, 0xfa, 0x53, 0xff, 00, 0x58, 0xa8, 0x7f, 0xcf, - 0xb9, 0x7e, 0x1f, 0xe6, 0x5a, 0xe2, 0x3c, 0x2f, 0xf2, 0xbf, - 0xc3, 0xfc, 0xcf, 0xbc, 0x68, 0xaf, 0x86, 0x23, 0xfd, 0xa1, - 0xfc, 0x7b, 0x18, 0x51, 0xfd, 0xbd, 0x23, 0x6d, 0xfe, 0xf4, - 0x48, 0x73, 0xf5, 0xe2, 0xac, 0xc7, 0xfb, 0x4a, 0xf8, 0xf6, - 0x37, 0xdd, 0xfd, 0xae, 0x8d, 0xec, 0xd6, 0xd1, 0x91, 0xfc, - 0xaa, 0xd7, 0x10, 0xe1, 0xba, 0xc2, 0x5f, 0x87, 0xf9, 0x96, - 0xb8, 0x8b, 0x9, 0xd9, 0xfd, 0xcb, 0xfc, 0xcf, 0xb7, 0xa8, - 0xaf, 0x8a, 0x17, 0xf6, 0x9f, 0xf1, 0xe8, 0x1c, 0xea, 0x36, - 0xed, 0xf5, 0xb4, 0x4f, 0xf0, 0xa7, 0x8f, 0xda, 0x8b, 0xc7, - 0x7f, 0xf3, 0xfb, 0x69, 0xff, 00, 0x80, 0xab, 0x57, 0xfe, - 0xb0, 0x61, 0x7b, 0x4b, 0xee, 0x5f, 0xe6, 0x57, 0xfa, 0xc3, - 0x83, 0xf3, 0xfb, 0xbf, 0xe0, 0x9f, 0x6a, 0x51, 0x5f, 0x17, - 0xaf, 0xed, 0x4f, 0xe3, 0x90, 0x46, 0x6e, 0x2c, 0xdb, 0xd8, - 0xdb, 0xa, 0x9e, 0x2f, 0xda, 0xb7, 0xc6, 0xb1, 0xb1, 0x2c, - 0x74, 0xf9, 0x6, 0x3a, 0x35, 0xb9, 0xfe, 0x86, 0x9f, 0xfa, - 0xc1, 0x84, 0xed, 0x2f, 0xbb, 0xfe, 0x9, 0x4b, 0x88, 0x30, - 0x5d, 0xdf, 0xdc, 0x7d, 0x93, 0x45, 0x7c, 0x7e, 0xbf, 0xb5, - 0xbf, 0x8b, 0x82, 0x80, 0x6d, 0x34, 0xb6, 0x3e, 0xbe, 0x4b, - 0xff, 00, 0xf1, 0x55, 0x3a, 0x7e, 0xd7, 0x9e, 0x29, 0xc, - 0xb, 0x69, 0xba, 0x5b, 0xe, 0xe3, 0x63, 0x8f, 0xfd, 0x9a, - 0xad, 0x67, 0xd8, 0x3f, 0x3f, 0xb8, 0xb5, 0x9f, 0x60, 0x7f, - 0x99, 0xfd, 0xc7, 0xd7, 0x34, 0x57, 0xc9, 0xab, 0xfb, 0x60, - 0xf8, 0x88, 0x67, 0x76, 0x8d, 0xa6, 0x1f, 0xa1, 0x90, 0x7f, - 0xec, 0xd4, 0xf1, 0xfb, 0x61, 0xeb, 0xdd, 0xf4, 0x3d, 0x37, - 0xfe, 0xfa, 0x93, 0xfc, 0x6a, 0xbf, 0xb7, 0x70, 0x5f, 0xcc, - 0xfe, 0xe6, 0x57, 0xf6, 0xee, 0x7, 0xf9, 0x9f, 0xdc, 0xcf, - 0xab, 0xe8, 0xaf, 0x94, 0xd7, 0xf6, 0xc4, 0xd6, 0xf8, 0xce, - 0x85, 0xa7, 0x9f, 0xa4, 0x8f, 0xfe, 0x35, 0x22, 0xfe, 0xd8, - 0x9a, 0xb6, 0x79, 0xd0, 0x2c, 0x88, 0xf6, 0x99, 0xe9, 0xff, - 00, 0x6e, 0x60, 0xbf, 0x99, 0xfd, 0xcc, 0x7f, 0xdb, 0x98, - 0x1f, 0xe7, 0xfc, 0x19, 0xf5, 0x45, 0x15, 0xf2, 0xf4, 0x7f, - 0xb6, 0x35, 0xe8, 0x5f, 0x9f, 0xc3, 0x76, 0xe5, 0xbd, 0x56, - 0xe9, 0x80, 0xff, 00, 0xd0, 0x6a, 0x65, 0xfd, 0xb2, 0x26, - 0xe3, 0x3e, 0x18, 0x8f, 0xdf, 0x17, 0x87, 0xff, 00, 0x88, - 0xaa, 0x59, 0xde, 0x7, 0xf9, 0xff, 00, 0x7, 0xfe, 0x45, - 0x2c, 0xeb, 0x2, 0xff, 00, 0xe5, 0xe7, 0xe0, 0xff, 00, - 0xc8, 0xfa, 0x6e, 0x8a, 0xf9, 0xba, 0x3f, 0xdb, 0x22, 0xc, - 0xfc, 0xfe, 0x17, 0x90, 0xf, 0xf6, 0x6f, 0x47, 0xff, 00, - 0x11, 0x5b, 0xda, 0x47, 0xed, 0x6f, 0xe1, 0x6b, 0xb8, 0xd7, - 0xed, 0xf6, 0x37, 0xf6, 0x12, 0x13, 0x82, 0x15, 0x56, 0x55, - 0x3, 0xd7, 0x20, 0x83, 0xfa, 0x56, 0xb0, 0xcd, 0xf0, 0x33, - 0x76, 0x55, 0x3f, 0x35, 0xf9, 0xa3, 0x58, 0x66, 0xd8, 0x29, - 0xbb, 0x2a, 0x8b, 0xf1, 0x5f, 0x99, 0xee, 0x74, 0x57, 0x31, - 0xe1, 0xaf, 0x89, 0x9e, 0x17, 0xf1, 0x7b, 0x4, 0xd2, 0x75, - 0xbb, 0x4b, 0xb9, 0x8f, 0x3e, 0x4e, 0xfd, 0xb2, 0x7f, 0xdf, - 0x2d, 0x83, 0xfa, 0x57, 0x4f, 0x5e, 0xac, 0x2a, 0x42, 0xa2, - 0xe6, 0x83, 0xba, 0xf2, 0x3d, 0x48, 0x4e, 0x15, 0x17, 0x34, - 0x1d, 0xd7, 0x90, 0x51, 0x45, 0x15, 0x65, 0x85, 0x14, 0x51, - 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, - 0x14, 0x51, 0x40, 0x5, 0x70, 0x7f, 0x18, 0x7e, 0x28, 0xdb, - 0x7c, 0x2f, 0xf0, 0xc3, 0xdd, 0xfe, 0xee, 0x7d, 0x4e, 0x73, - 0xe5, 0xda, 0x5a, 0xbb, 0x63, 0x7b, 0x77, 0x62, 0x3a, 0xed, - 0x1d, 0x4f, 0xe0, 0x3b, 0xd7, 0x75, 0x24, 0x8b, 0x12, 0x33, - 0xbb, 0x5, 0x45, 0x4, 0x96, 0x3d, 00, 0xaf, 0x82, 0x7e, - 0x32, 0x7c, 0x40, 0x7f, 0x88, 0xde, 0x3a, 0xbd, 0xbf, 0x57, - 0x26, 0xc2, 0x13, 0xf6, 0x7b, 0x34, 0xcf, 0x2, 0x35, 0x3d, - 0x7f, 0xe0, 0x47, 0x27, 0xf1, 0xaf, 0x17, 0x35, 0xc6, 0xbc, - 0x1d, 0xf, 0x73, 0xe2, 0x96, 0x8b, 0xfc, 0xcf, 0xf, 0x37, - 0xc7, 0xfd, 0x46, 0x87, 0xb9, 0xf1, 0xcb, 0x45, 0xfe, 0x7f, - 0x23, 0xa3, 0xf8, 0x39, 0xa7, 0xea, 0x1f, 0x13, 0x7e, 0x2a, - 0xc5, 0xa9, 0x6a, 0x92, 0xbd, 0xe3, 0xac, 0x86, 0xe2, 0x79, - 0x24, 0x39, 0xfa, 0xf, 0x61, 0xe8, 0x2b, 0xed, 0x40, 0x2, - 0x80, 0x7, 00, 0x57, 0x83, 0xfe, 0xca, 0x7e, 0x10, 0xfe, - 0xcc, 0xf0, 0xd5, 0xce, 0xb1, 0x34, 0x78, 0x9a, 0xe9, 0xf6, - 0xa1, 0x23, 0xf8, 0x45, 0x7b, 0xcd, 0x63, 0x92, 0x50, 0x74, - 0xb0, 0xbe, 0xd2, 0x5b, 0xcd, 0xdf, 0xfc, 0x83, 0x27, 0xa0, - 0xe9, 0x61, 0x54, 0xa7, 0xf1, 0x4b, 0x56, 0x14, 0x51, 0x45, - 0x7d, 0x1, 0xee, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x84, - 0x64, 0x70, 0x71, 0xef, 0x40, 0x18, 0x1c, 0x92, 0x7e, 0xb4, - 00, 0xb4, 0x53, 0x2, 0xed, 0x39, 0xde, 0x48, 0xf4, 0x3d, - 0x29, 0xc0, 0x83, 0xd0, 0xe6, 0x80, 0x16, 0x8a, 0x28, 0xa0, - 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, - 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, - 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, - 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x93, 0x2, 0x96, - 0x8a, 00, 0x4c, 0xf, 0x4a, 0x4d, 0x8a, 0x7b, 0xf, 0xca, - 0x9d, 0x45, 00, 0x37, 0xca, 0x43, 0xfc, 0xb, 0xf9, 0x53, - 0x4c, 0x11, 0x1e, 0xb1, 0xa7, 0xfd, 0xf2, 0x2a, 0x4a, 0x29, - 0x58, 0x8, 0xbe, 0xcb, 0xf, 0xfc, 0xf1, 0x8f, 0xfe, 0xf9, - 0x14, 0xd3, 0x65, 0x6e, 0x7a, 0xc1, 0x17, 0xfd, 0xf0, 0x2a, - 0x7a, 0x28, 0xb2, 0x15, 0x91, 0x59, 0xb4, 0xeb, 0x46, 0xeb, - 0x6b, 0x9, 0xfa, 0xc6, 0x29, 0x87, 0x47, 0xb1, 0x6e, 0xb6, - 0x70, 0x1f, 0xac, 0x63, 0xfc, 0x2a, 0xe5, 0x14, 0xb9, 0x63, - 0xd8, 0x2c, 0xbb, 0x19, 0xe7, 0x40, 0xd3, 0x1b, 0xad, 0x85, - 0xb1, 0xff, 00, 0xb6, 0x4b, 0xfe, 0x14, 0xc6, 0xf0, 0xce, - 0x92, 0xdd, 0x74, 0xdb, 0x53, 0xff, 00, 0x6c, 0x85, 0x69, - 0xd1, 0x4b, 0xd9, 0xc3, 0xb2, 0x17, 0x2c, 0x7b, 0x19, 0x7, - 0xc2, 0x3a, 0x2b, 0x75, 0xd2, 0xed, 0x4f, 0xfd, 0xb2, 0x15, - 0x1b, 0x78, 0x2b, 0x41, 0x73, 0x93, 0xa4, 0x59, 0x93, 0xef, - 0xa, 0xd6, 0xdd, 0x15, 0x3e, 0xca, 0x9b, 0xfb, 0x2b, 0xee, - 0x17, 0x24, 0x3b, 0x1c, 0xf3, 0x7c, 0x3f, 0xf0, 0xe3, 0x75, - 0xd1, 0xed, 0x3f, 0xef, 0xd0, 0xa8, 0x9b, 0xe1, 0xaf, 0x86, - 0x1f, 0xae, 0x8b, 0x69, 0xff, 00, 0x7e, 0xc5, 0x74, 0xd4, - 0x54, 0xfd, 0x5e, 0x8b, 0xfb, 0xb, 0xee, 0x44, 0xfb, 0x2a, - 0x6f, 0xec, 0xaf, 0xb8, 0xe4, 0xdf, 0xe1, 0x5f, 0x85, 0x5f, - 0x39, 0xd1, 0x6d, 0xb9, 0xff, 00, 0x60, 0x54, 0x2d, 0xf0, - 0x87, 0xc2, 0x4f, 0xd7, 0x45, 0xb7, 0xff, 00, 0xbe, 0x6b, - 0xb2, 0xa2, 0xa3, 0xea, 0xb4, 0x1f, 0xd8, 0x5f, 0x72, 0x17, - 0xb0, 0xa5, 0xfc, 0xab, 0xee, 0x38, 0x76, 0xf8, 0x2f, 0xe0, - 0xf7, 0xeb, 0xa3, 0x41, 0xf9, 0x54, 0x2f, 0xf0, 0x2f, 0xc1, - 0x8f, 0xff, 00, 0x30, 0x78, 0xc7, 0xd2, 0xbb, 0xea, 0x2a, - 0x5e, 0xb, 0xc, 0xf7, 0xa6, 0xbe, 0xe4, 0x4f, 0xd5, 0xa8, - 0xbf, 0xb0, 0xbe, 0xe3, 0xce, 0x9f, 0xe0, 0x17, 0x83, 0x1f, - 0xfe, 0x61, 0x6a, 0x3e, 0x86, 0xa0, 0x7f, 0xd9, 0xe3, 0xc1, - 0x8f, 0xff, 00, 0x2e, 0x4, 0x7d, 0xd, 0x7a, 0x65, 0x15, - 0xf, 0x1, 0x84, 0x7f, 0xf2, 0xe9, 0x7d, 0xc8, 0x9f, 0xaa, - 0x50, 0x7f, 0x61, 0x7d, 0xc7, 0x96, 0xbf, 0xec, 0xe1, 0xe0, - 0xd7, 0xff, 00, 0x97, 0x37, 0x1f, 0xf0, 0x2a, 0x81, 0xff, - 00, 0x66, 0x7f, 0x7, 0x37, 0xfc, 0xb0, 0x94, 0x7d, 0x1a, - 0xbd, 0x66, 0x8a, 0x9f, 0xec, 0xdc, 0x1b, 0xff, 00, 0x97, - 0x4b, 0xee, 0x23, 0xea, 0x58, 0x67, 0xff, 00, 0x2e, 0xd7, - 0xdc, 0x79, 0x3, 0xfe, 0xcb, 0xfe, 0xf, 0x7f, 0xe0, 0xb8, - 0x5f, 0xa3, 0xd4, 0xd, 0xfb, 0x2c, 0x78, 0x4c, 0xf4, 0x7b, - 0x81, 0xf8, 0x8a, 0xf6, 0x6a, 0x2a, 0x1e, 0x57, 0x82, 0x7f, - 0xf2, 0xe9, 0x12, 0xf0, 0x18, 0x57, 0xff, 00, 0x2e, 0xd7, - 0xdc, 0x78, 0x9b, 0xfe, 0xca, 0x7e, 0x16, 0x6e, 0x97, 0x17, - 0x23, 0xf1, 0x15, 0xb, 0xfe, 0xc9, 0xbe, 0x1b, 0x6f, 0xbb, - 0x79, 0x72, 0x3f, 0x2a, 0xf7, 0x2a, 0x2a, 0x7f, 0xb2, 0x70, - 0x3f, 0xf3, 0xe9, 0x12, 0xf2, 0xec, 0x23, 0xff, 00, 0x97, - 0x68, 0xf0, 0x76, 0xfd, 0x92, 0x74, 0x3, 0xd3, 0x50, 0xb9, - 0x1f, 0x80, 0xa8, 0x5b, 0xf6, 0x45, 0xd1, 0xf, 0x4d, 0x52, - 0xe0, 0x7f, 0xc0, 0x45, 0x7b, 0xf5, 0x15, 0x3f, 0xd9, 0x18, - 0x1f, 0xf9, 0xf7, 0xf9, 0x90, 0xf2, 0xbc, 0x1b, 0xff, 00, - 0x97, 0x68, 0xf9, 0xe9, 0xff, 00, 0x64, 0x2d, 0x2c, 0xfd, - 0xdd, 0x62, 0x7f, 0xc5, 0x5, 0x40, 0xff, 00, 0xb2, 0x5, - 0x97, 0xf0, 0xeb, 0x12, 0x7e, 0x28, 0x2b, 0xe8, 0xca, 0x2a, - 0x3f, 0xb1, 0xb0, 0x3f, 0xf3, 0xef, 0xf1, 0x7f, 0xe6, 0x4b, - 0xca, 0x70, 0x4f, 0xfe, 0x5d, 0xa3, 0xe6, 0xd6, 0xfd, 0x90, - 0x21, 0xfe, 0x1d, 0x65, 0xbf, 0x14, 0xa8, 0x5f, 0xf6, 0x40, - 0x3f, 0xc3, 0xac, 0x7e, 0x69, 0x5f, 0x4c, 0x51, 0x53, 0xfd, - 0x89, 0x81, 0xfe, 0x4f, 0xc5, 0x91, 0xfd, 0x91, 0x82, 0xff, - 00, 0x9f, 0x67, 0xcc, 0xf, 0xfb, 0x20, 0x4f, 0xfc, 0x3a, - 0xba, 0xfe, 0x2b, 0x50, 0xbf, 0xec, 0x83, 0x7e, 0x3e, 0xee, - 0xaf, 0x11, 0xfa, 0xad, 0x7d, 0x4b, 0x45, 0x4f, 0xf6, 0x1e, - 0x7, 0xf9, 0x5f, 0xde, 0xc9, 0x79, 0x36, 0x5, 0xfd, 0x83, - 0xe5, 0x37, 0xfd, 0x91, 0x35, 0x51, 0xd3, 0x53, 0x84, 0xfe, - 0x15, 0x3, 0xfe, 0xc9, 0x1a, 0xd8, 0xe9, 0x7d, 0xb, 0x57, - 0xd6, 0x74, 0x54, 0xbc, 0x87, 0x5, 0xd9, 0xfd, 0xec, 0x87, - 0x92, 0x60, 0x7f, 0x93, 0xf1, 0x3e, 0x46, 0x7f, 0xd9, 0x33, - 0xc4, 0x23, 0xa5, 0xd4, 0x7, 0xf1, 0xa8, 0x1f, 0xf6, 0x51, - 0xf1, 0x28, 0xfb, 0xb2, 0xc2, 0x7f, 0x1a, 0xfb, 0x2, 0x8a, - 0x8f, 0xec, 0xc, 0x1f, 0x9f, 0xde, 0x4f, 0xf6, 0x16, 0xb, - 0xf9, 0x7f, 0x13, 0xe3, 0x87, 0xfd, 0x95, 0x7c, 0x54, 0x3e, - 0xe9, 0x85, 0xbf, 0xe0, 0x42, 0xa1, 0x7f, 0xd9, 0x6f, 0xc5, - 0xeb, 0xd2, 0x38, 0x8f, 0xd1, 0xc5, 0x7d, 0x9b, 0x45, 0x4f, - 0xfa, 0xbf, 0x84, 0xee, 0xfe, 0xff, 00, 0xf8, 0x4, 0xff, - 00, 0x60, 0xe0, 0xbb, 0x3f, 0xbc, 0xf8, 0xad, 0xff, 00, - 0x66, 0x3f, 0x18, 0xaf, 0x4b, 0x64, 0x3f, 0xf0, 0x31, 0x50, - 0xbf, 0xec, 0xd7, 0xe3, 0x35, 0xff, 00, 0x97, 0x20, 0x7f, - 0xe0, 0x42, 0xbe, 0xda, 0xa2, 0xa7, 0xfd, 0x5e, 0xc3, 0x7f, - 0x34, 0xbf, 0xf, 0xf2, 0x23, 0xfd, 0x5f, 0xc1, 0xf9, 0xfd, - 0xe7, 0xc3, 0xcd, 0xfb, 0x39, 0xf8, 0xd1, 0x7f, 0xe6, 0x1a, - 0x4f, 0xfc, 0x8, 0x54, 0x2f, 0xfb, 0x3d, 0xf8, 0xd1, 0x7f, - 0xe6, 0x14, 0xe7, 0xf1, 0x15, 0xf7, 0x3d, 0x15, 0x3f, 0xea, - 0xee, 0x1f, 0xf9, 0xe5, 0xf8, 0x7f, 0x91, 0x3f, 0xea, 0xf6, - 0x13, 0xcf, 0xef, 0x3e, 0x12, 0x3f, 0x1, 0xbc, 0x6d, 0xb, - 0x6, 0x5d, 0x22, 0x60, 0xc3, 0xa3, 0x29, 0xc1, 0x15, 0xde, - 0x78, 0x43, 0xc6, 0xbf, 0x14, 0xfe, 0x15, 0x6c, 0x5d, 0x57, - 0x4c, 0xbc, 0xd7, 0x34, 0x55, 0xfb, 0xf0, 0x5d, 0x12, 0xd2, - 0xa2, 0xff, 00, 0xb1, 0x27, 0x5f, 0xc0, 0xe4, 0x7d, 0x2b, - 0xeb, 0x1a, 0x82, 0xf2, 0xde, 0x2b, 0x9b, 0x69, 0x12, 0x64, - 0x59, 0x10, 0xa9, 0xc8, 0x61, 0x5a, 0xd2, 0xc9, 0x56, 0x19, - 0xf3, 0xd0, 0xab, 0x24, 0xfe, 0x45, 0x53, 0xc8, 0xe9, 0xd0, - 0x7c, 0xf8, 0x7a, 0x92, 0x8b, 0xfe, 0xb7, 0xee, 0x73, 0xbe, - 00, 0xf8, 0x91, 0xa2, 0x7c, 0x48, 0xd2, 0x8d, 0xe6, 0x91, - 0x73, 0xba, 0x58, 0xf0, 0x2e, 0x2d, 0x24, 0xf9, 0x66, 0xb7, - 0x63, 0xfc, 0x2e, 0xbd, 0xbe, 0xbd, 0xd, 0x75, 0x35, 0xf1, - 0x7, 0xc4, 0x6d, 0x72, 0xff, 00, 0xe1, 0x4f, 0xc4, 0x43, - 0xae, 0x78, 0x66, 0x63, 0x69, 0x74, 0x24, 0xfd, 0xfc, 0x20, - 0xfe, 0xee, 0xe1, 0x1, 0xc9, 0x8d, 0xc7, 0x70, 0x7f, 0x31, - 0xda, 0xbe, 0xae, 0xf8, 0x4f, 0xf1, 0x3b, 0x4d, 0xf8, 0xb7, - 0xe0, 0xcb, 0x5d, 0x7f, 0x4d, 0x47, 0x80, 0x3b, 0x34, 0x53, - 0xda, 0xca, 0x46, 0xf8, 0x25, 0x5e, 0x19, 0xf, 0xaf, 0xa8, - 0x3d, 0xc1, 0x6, 0xbd, 0xc, 0xe, 0x35, 0x62, 0x79, 0xa9, - 0xcb, 0xe2, 0x8e, 0x8c, 0xe8, 0xc0, 0x66, 0x4a, 0xbd, 0x59, - 0x61, 0x6a, 0xe9, 0x52, 0x3f, 0x73, 0x5d, 0xd7, 0xea, 0x8e, - 0xc6, 0x8a, 0x28, 0xaf, 0x54, 0xf7, 0x42, 0x8a, 0x28, 0xa0, - 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0xf, 0x37, - 0xfd, 0xa0, 0x7c, 0x6a, 0x3c, 0x17, 0xf0, 0xd7, 0x51, 0x74, - 0x72, 0x97, 0x97, 0xe3, 0xec, 0x56, 0xfb, 0x4e, 0x8, 0x67, - 0x7, 0x24, 0x7d, 0x17, 0x26, 0xbe, 0x25, 0xd0, 0xb4, 0xb9, - 0x35, 0x8d, 0x56, 0xd2, 0xca, 0x15, 0xdc, 0xf3, 0x48, 0x10, - 0x1, 0x5e, 0xd3, 0xfb, 0x5a, 0xf8, 0xcb, 0xfb, 0x5b, 0xc6, - 0x16, 0x7e, 0x1f, 0x85, 0xf3, 0x6, 0x97, 0x1f, 0x99, 0x28, - 0x7, 0x83, 0x33, 0x8c, 0xfe, 0x8b, 0x8f, 0xfb, 0xe8, 0xd6, - 0x77, 0xec, 0xc3, 0xe1, 0x1, 0xaf, 0x78, 0xd8, 0x5f, 0x4d, - 0x1e, 0xeb, 0x7b, 0x25, 0x2f, 0x93, 0xd3, 0x77, 0x6a, 0xfc, - 0xf7, 0x33, 0x93, 0xc7, 0x63, 0xd6, 0x1e, 0x3b, 0x2d, 0x3f, - 0xcc, 0xfc, 0xef, 0x1e, 0xde, 0x63, 0x9a, 0x2a, 0x11, 0xda, - 0x3a, 0x7f, 0x9f, 0xf5, 0xe4, 0x7d, 0x67, 0xe1, 0x3d, 0x12, - 0x3f, 0xe, 0xf8, 0x72, 0xc3, 0x4f, 0x8d, 0x42, 0x88, 0x22, - 0x55, 0x38, 0xf5, 0xc7, 0x35, 0xaf, 0x45, 0x15, 0xfa, 0x4, - 0x62, 0xa1, 0x15, 0x18, 0xec, 0x8f, 0xd0, 0xa2, 0x94, 0x52, - 0x48, 0x28, 0xa2, 0x8a, 0xa2, 0x82, 0x8a, 0x2b, 0xcd, 0xbf, - 0x68, 0xaf, 0x8d, 0xda, 0x47, 0xec, 0xf1, 0xf0, 0x83, 0xc4, - 0x1e, 0x39, 0xd6, 0xe, 0xe8, 0xf4, 0xf8, 0x71, 0x6d, 0x6e, - 0x3e, 0xf5, 0xc5, 0xc3, 0x7c, 0xb1, 0x44, 0x3e, 0xac, 0x46, - 0x7d, 0x6, 0x4f, 0x6a, 00, 0xe7, 0x3f, 0x69, 0x9f, 0xda, - 0xf3, 0xe1, 0xf7, 0xec, 0xaf, 0xa0, 0x47, 0x79, 0xe2, 0xcb, - 0xe7, 0x9f, 0x55, 0xba, 0x52, 0xd6, 0x3a, 0x25, 0x88, 0xf, - 0x77, 0x73, 0x8e, 0xe0, 0x67, 0xa, 0x99, 0xfe, 0x36, 0x20, - 0x7d, 0x4f, 0x15, 0xf9, 0x5d, 0xf1, 0x87, 0xfe, 0xa, 0xd5, - 0xf1, 0x9b, 0xe2, 0x5, 0xc5, 0xdd, 0xbf, 0x85, 0xe5, 0xb1, - 0xf0, 0x1e, 0x90, 0xec, 0x44, 0x4b, 0xa7, 0xc2, 0x26, 0xbb, - 0x9, 0x9e, 0x37, 0x4d, 0x26, 0x46, 0x71, 0xfd, 0xd5, 0x5a, - 0xf9, 0xb3, 0x5d, 0xd7, 0xfc, 0x7d, 0xfb, 0x57, 0x7c, 0x67, - 0x4b, 0x8b, 0xc9, 0x2e, 0x3c, 0x4b, 0xe3, 0x3f, 0x11, 0xdd, - 0xac, 0x10, 0x44, 0xf, 00, 0x93, 0xf2, 0xc6, 0x83, 0xa2, - 0x46, 0xa3, 0x3c, 0x74, 00, 0x13, 0xea, 0x6b, 0xf4, 0x67, - 0xc1, 0x1f, 0xf0, 0x48, 0xaf, 0x87, 0xff, 00, 0xf, 0x7e, - 0x1c, 0xdf, 0x78, 0x9b, 0xe2, 0xf7, 0x8b, 0x75, 0x1b, 0xeb, - 0x9d, 0x3e, 0xca, 0x4b, 0xeb, 0xe8, 0x74, 0x69, 0x56, 0xda, - 0xd6, 0xd9, 0x11, 0xb, 0xb0, 0xe, 0xca, 0x59, 0xf0, 0x1, - 0xe7, 0xe5, 0xcf, 0xa5, 0x32, 0x6e, 0xde, 0xc7, 0xe7, 0x17, - 0x88, 0x7f, 0x68, 0xbf, 0x8a, 0x7e, 0x2b, 0xb9, 0x92, 0x7d, - 0x5b, 0xe2, 0x37, 0x8a, 0x2f, 0x64, 0x90, 0xe5, 0x83, 0xea, - 0xf3, 0x85, 0x27, 0xfd, 0xd0, 0xc0, 0xf, 0xca, 0xbf, 0x5a, - 0xbf, 0xe0, 0x92, 0x3e, 0xb, 0xd6, 0xed, 0xfe, 0x3, 0xea, - 0x3e, 0x39, 0xf1, 0x6, 0xad, 0xa9, 0x6a, 0xb7, 0x9e, 0x23, - 0xbe, 0x74, 0xb3, 0x17, 0xf7, 0x52, 0x4c, 0x22, 0xb6, 0x80, - 0x94, 0x1b, 0x43, 0x13, 0x8d, 0xd2, 0x79, 0x84, 0x91, 0xd4, - 0x5, 0xaf, 0xc7, 0x4d, 0x1b, 0xc3, 0x7f, 0xf0, 0x9e, 0xfc, - 0x44, 0xb2, 0xd0, 0x7c, 0x39, 0x6f, 0x24, 0x4b, 0xac, 0x6a, - 0x89, 0x67, 0xa7, 0xc1, 0x2b, 0x6f, 0x64, 0x12, 0xca, 0x16, - 0x30, 0xcd, 0x8e, 0x70, 0x18, 0x64, 0xfb, 0x13, 0x5f, 0xd1, - 0xcf, 0x86, 0xb4, 0x4d, 0x3, 0xf6, 0x7b, 0xf8, 0x2d, 0x65, - 0xa6, 0xc6, 0x52, 0xcf, 0xc3, 0xfe, 0x13, 0xd1, 0xc0, 0x67, - 0x3c, 0x1, 0x1c, 0x31, 0xe5, 0xdc, 0xfb, 0x9c, 0x12, 0x7d, - 0xcd, 0xc, 0x48, 0xf8, 0xf, 0xc4, 0x7f, 0xf0, 0x59, 0xa9, - 0xfc, 0x25, 0xe2, 0xcd, 0x6b, 0x42, 0xd4, 0x3e, 0x14, 0xab, - 0xcd, 0xa6, 0x5e, 0xcf, 0x65, 0x24, 0x90, 0x6b, 0x7c, 0x33, - 0x47, 0x23, 0x21, 0x20, 0x18, 0x7d, 0x56, 0xbe, 0xec, 0xfd, - 0x9c, 0x3e, 0x34, 0x47, 0xfb, 0x42, 0x7c, 0x1b, 0xf0, 0xff, - 00, 0x8f, 0x62, 0xd2, 0xdf, 0x46, 0x4d, 0x59, 0x24, 0x61, - 0x64, 0xf2, 0xf9, 0xa6, 0x3d, 0xb2, 0x32, 0x7d, 0xec, 0xc, - 0xe7, 0x6e, 0x7a, 0x77, 0xaf, 0xe7, 0x2f, 0xc6, 0x7a, 0xf9, - 0xf1, 0x5f, 0x8b, 0xf5, 0xdd, 0x6d, 0x86, 0xd6, 0xd4, 0xaf, - 0xe7, 0xbd, 0x23, 0xd0, 0xc9, 0x23, 0x3f, 0xfe, 0xcd, 0x5f, - 0xd1, 0x27, 0xec, 0x91, 0xf0, 0xfe, 0x4f, 0x85, 0xff, 00, - 0xb3, 0x57, 0xc3, 0x9f, 0xd, 0xce, 0x9e, 0x5d, 0xdd, 0xae, - 0x8d, 0x3, 0xdc, 0xaf, 0xa4, 0xd2, 0x2f, 0x99, 0x27, 0xfe, - 0x3c, 0xe6, 0x81, 0xa7, 0x73, 0xd6, 0xc9, 0xc0, 0xc9, 0xe0, - 0x57, 0xce, 0xda, 0xff, 00, 0xed, 0xf, 0xae, 0x43, 0xae, - 0x5f, 0x47, 0xa6, 0xc7, 0x64, 0xda, 0x7a, 0x4a, 0xcb, 0x9, - 0x96, 0x26, 0x2c, 0x54, 0x1c, 0x64, 0x9d, 0xc3, 0xaf, 0x5f, - 0xc6, 0xbd, 0x7b, 0xe2, 0x97, 0x89, 0x47, 0x85, 0xbc, 0x11, - 0xa9, 0x5d, 0xab, 0x6d, 0x9d, 0xd3, 0xc8, 0x87, 0xfd, 0xf7, - 0xe0, 0x7e, 0x5c, 0x9f, 0xc2, 0xbe, 0x40, 0xaf, 0x86, 0xe2, - 0x2c, 0xca, 0xae, 0x1a, 0x70, 0xa3, 0x42, 0x5c, 0xaf, 0x77, - 0x6f, 0xc3, 0xf5, 0x3c, 0x9c, 0x75, 0x79, 0x53, 0x6a, 0x10, - 0x76, 0x3d, 0x5d, 0x3f, 0x69, 0xf, 0x12, 0xaf, 0xde, 0xb3, - 0xd3, 0x9b, 0xfe, 0xd9, 0xb8, 0xff, 00, 0xd9, 0xaa, 0x74, - 0xfd, 0xa5, 0x75, 0xe1, 0xf7, 0xb4, 0xdd, 0x3d, 0xbe, 0x81, - 0xc7, 0xfe, 0xcd, 0x5e, 0x43, 0x45, 0x7c, 0x82, 0xce, 0x73, - 0x5, 0xff, 00, 0x2f, 0x5f, 0xe0, 0x79, 0x9f, 0x5a, 0xad, - 0xfc, 0xc7, 0xb3, 0x47, 0xfb, 0x4c, 0xea, 0x83, 0xef, 0xe8, - 0xb6, 0x8d, 0xfe, 0xec, 0xac, 0x3f, 0xc6, 0xa7, 0x4f, 0xda, - 0x72, 0xef, 0xf8, 0xbc, 0x3f, 0x9, 0xfa, 0x5d, 0x11, 0xff, - 00, 0xb2, 0xd7, 0x89, 0x51, 0x5a, 0x2c, 0xf3, 0x31, 0x5f, - 0xf2, 0xf7, 0xf0, 0x5f, 0xe4, 0x57, 0xd7, 0x2b, 0xff, 00, - 0x31, 0xee, 0xd1, 0x7e, 0xd3, 0x83, 0xfe, 0x5a, 0x78, 0x7f, - 0x1f, 0xee, 0xdd, 0x7f, 0xf6, 0x35, 0x66, 0x3f, 0xda, 0x6e, - 0xc8, 0xfd, 0xfd, 0xa, 0x71, 0xfe, 0xec, 0xea, 0x7f, 0xa5, - 0x78, 0x5, 0x15, 0xaa, 0xe2, 0xc, 0xc5, 0x7f, 0xcb, 0xcf, - 0xc1, 0x7f, 0x91, 0x5f, 0x5d, 0xaf, 0xfc, 0xdf, 0x91, 0xf4, - 0x3c, 0x7f, 0xb4, 0xc6, 0x90, 0x7e, 0xfe, 0x91, 0x7a, 0xbf, - 0xee, 0xb2, 0x1f, 0xeb, 0x5a, 0x56, 0x7f, 0xb4, 0x5f, 0x85, - 0xee, 0x8, 0x13, 0x45, 0x7f, 0x6b, 0xee, 0xf0, 0x86, 0x1f, - 0xf8, 0xeb, 0x1a, 0xf9, 0x9a, 0x8a, 0xd6, 0x3c, 0x47, 0x8f, - 0x8e, 0xed, 0x3f, 0x97, 0xf9, 0x14, 0xb1, 0xf5, 0x97, 0x53, - 0xec, 0x4d, 0x7, 0xe2, 0x67, 0x86, 0x7c, 0x48, 0xeb, 0x1d, - 0x8e, 0xaf, 0x3, 0x4c, 0xdd, 0x22, 0x97, 0x31, 0xb9, 0xfa, - 0x6, 0xc6, 0x7f, 0xa, 0xe9, 0xeb, 0xe1, 0x4a, 0xed, 0x7c, - 0x17, 0xf1, 0x6b, 0x5f, 0xf0, 0x6c, 0xa8, 0x89, 0x72, 0xd7, - 0xd6, 00, 0xfc, 0xd6, 0x97, 0x2c, 0x59, 0x71, 0xfe, 0xc9, - 0xea, 0xbf, 0x87, 0x1e, 0xd5, 0xed, 0xe1, 0x38, 0xa1, 0x36, - 0xa3, 0x8a, 0x85, 0xbc, 0xd7, 0xf9, 0x7f, 0xc1, 0x3a, 0xe9, - 0x66, 0x37, 0x76, 0xa8, 0xbe, 0xe3, 0xeb, 0x6a, 0x2b, 0x13, - 0xc2, 0x1e, 0x2f, 0xd3, 0xfc, 0x6b, 0xa3, 0xa6, 0xa1, 0xa7, - 0xc8, 0x4a, 0x13, 0xb6, 0x48, 0xdb, 0x86, 0x8d, 0xfb, 0xa9, - 0x15, 0xb7, 0x5f, 0x75, 0x4e, 0xa4, 0x6a, 0xc5, 0x4e, 0xe, - 0xe9, 0x9e, 0xc4, 0x64, 0xa4, 0xae, 0xb6, 0xa, 0xc0, 0xf1, - 0x17, 0x8e, 0xb4, 0x2f, 0x9, 0xdc, 0x43, 0x6, 0xab, 0xa8, - 0x25, 0xa4, 0xb3, 0x29, 0x74, 0x56, 0x56, 0x39, 00, 0xe3, - 0x3c, 0x3, 0x5b, 0xf5, 0xf2, 0x87, 0xc6, 0xed, 0x74, 0x6b, - 0x9f, 0x10, 0xaf, 0xc2, 0x36, 0xe8, 0xac, 0xc2, 0xda, 0xa7, - 0xfc, 0x7, 0xef, 0x7f, 0xe3, 0xc5, 0xab, 0xc8, 0xcd, 0xf3, - 0x7, 0x97, 0x61, 0xd5, 0x48, 0x24, 0xe4, 0xdd, 0x95, 0xce, - 0x5c, 0x55, 0x77, 0x42, 0x1c, 0xcb, 0x73, 0xe8, 0x4, 0xf8, - 0xb9, 0xe0, 0xf7, 0xe9, 0xaf, 0x5b, 0xf, 0xf7, 0xb7, 0xf, - 0xe6, 0x2a, 0x74, 0xf8, 0xa1, 0xe1, 0x37, 0xe9, 0xe2, 0xb, - 0x1f, 0xc6, 0x50, 0x2b, 0xe3, 0xca, 0x2b, 0xe3, 0x97, 0x14, - 0xe2, 0x7a, 0xd3, 0x8f, 0xe3, 0xfe, 0x67, 0x97, 0xfd, 0xa3, - 0x53, 0xb2, 0x3e, 0xca, 0x8f, 0xe2, 0x17, 0x86, 0x25, 0xfb, - 0xba, 0xfe, 0x9c, 0x7f, 0xed, 0xe5, 0x3f, 0xc6, 0xad, 0x47, - 0xe3, 0xd, 0xa, 0x6f, 0xb9, 0xac, 0xd8, 0x37, 0xd2, 0xe5, - 0x3f, 0xc6, 0xbe, 0x2b, 0xa2, 0xb5, 0x5c, 0x55, 0x5b, 0xad, - 0x25, 0xf7, 0xb2, 0xbf, 0xb4, 0x67, 0xd6, 0x27, 0xdb, 0x89, - 0xaf, 0x69, 0x92, 0x7d, 0xdd, 0x46, 0xd1, 0xbe, 0x93, 0xaf, - 0xf8, 0xd4, 0xc9, 0xa9, 0x5a, 0x49, 0xf7, 0x2e, 0xa0, 0x6f, - 0xa4, 0x80, 0xff, 00, 0x5a, 0xf8, 0x76, 0x8c, 0x91, 0x5a, - 0x2e, 0x2b, 0x97, 0x5a, 0x3f, 0x8f, 0xfc, 0x2, 0xbf, 0xb4, - 0x9f, 0xf2, 0xfe, 0x27, 0xdd, 0xb, 0x2a, 0x37, 0xdd, 0x75, - 0x3f, 0x43, 0x4e, 0xdc, 0x3d, 0x45, 0x7c, 0x30, 0x25, 0x75, - 0xe8, 0xec, 0x3e, 0x86, 0xa4, 0x4b, 0xeb, 0x98, 0xfe, 0xed, - 0xc4, 0xab, 0xf4, 0x72, 0x2b, 0x45, 0xc5, 0x6b, 0xad, 0x1f, - 0xfc, 0x9b, 0xfe, 0x1, 0x5f, 0xda, 0x5f, 0xdc, 0xfc, 0x7f, - 0xe0, 0x1f, 0x72, 0x51, 0x5f, 0x10, 0xa6, 0xb9, 0xa9, 0x47, - 0xf7, 0x75, 0xb, 0xa5, 0xfa, 0x4c, 0xdf, 0xe3, 0x52, 0xaf, - 0x89, 0xb5, 0x84, 0xfb, 0xba, 0xad, 0xf2, 0xfd, 0x2e, 0x5c, - 0x7f, 0x5a, 0xd1, 0x71, 0x5d, 0x3e, 0xb4, 0x5f, 0xdf, 0xff, - 00, 00, 0x7f, 0xda, 0x4b, 0xf9, 0x7f, 0x13, 0xed, 0x9a, - 0x2b, 0xe2, 0xc4, 0xf1, 0x96, 0xbf, 0x1f, 0xdd, 0xd7, 0x35, - 0x25, 0xfa, 0x5d, 0xc9, 0xfe, 0x35, 0xda, 0x7c, 0x25, 0xf1, - 0x7, 0x88, 0x75, 0xff, 00, 0x1e, 0xe9, 0x76, 0x93, 0x6b, - 0x3a, 0x84, 0xf6, 0xc1, 0xda, 0x59, 0x52, 0x4b, 0x97, 0x65, - 0x2a, 0xaa, 0x4e, 0x8, 0x27, 0xa6, 0x70, 0x3f, 0x1a, 0xe9, - 0xa1, 0xc4, 0xb4, 0xab, 0xd5, 0x8d, 0x25, 0x49, 0xde, 0x4d, - 0x2d, 0xd7, 0x53, 0x48, 0x63, 0xe3, 0x39, 0x28, 0xa8, 0xee, - 0x7d, 0x3f, 0x45, 0x14, 0x57, 0xd9, 0x1e, 0xa8, 0x51, 0x45, - 0x14, 00, 0x51, 0x5c, 0xf7, 0x88, 0xfc, 0x7f, 0xa0, 0x78, - 0x4f, 0x8d, 0x4f, 0x52, 0x86, 0x9, 0x7f, 0xe7, 0x8a, 0xe5, - 0xe4, 0xff, 00, 0xbe, 0x57, 0x26, 0xbc, 0xef, 0x5b, 0xfd, - 0xa5, 0x74, 0xcb, 0x70, 0xcb, 0xa5, 0xe9, 0x97, 0x17, 0x6f, - 0xd9, 0xee, 0x18, 0x44, 0xbf, 0x90, 0xc9, 0xfe, 0x55, 0xe6, - 0xe2, 0x33, 0x2c, 0x26, 0x17, 0x4a, 0xb5, 0x12, 0x7d, 0xb7, - 0x7f, 0x72, 0x39, 0xe7, 0x5e, 0x95, 0x3f, 0x8a, 0x47, 0xb2, - 0xd1, 0x5f, 0x34, 0x5f, 0x7e, 0xd1, 0x9e, 0x26, 0xb8, 0x63, - 0xf6, 0x78, 0x2c, 0x2d, 0x13, 0xb6, 0x22, 0x67, 0x23, 0xf1, - 0x2d, 0x8f, 0xd2, 0xb1, 0xae, 0x3e, 0x37, 0xf8, 0xce, 0x72, - 0x7f, 0xe2, 0x6d, 0xe5, 0x3, 0xda, 0x38, 0x23, 0x18, 0xff, - 00, 0xc7, 0x6b, 0xc5, 0x9f, 0x13, 0x60, 0x63, 0xf0, 0xa9, - 0x3f, 0x97, 0xf9, 0xb4, 0x72, 0x3c, 0xc2, 0x8a, 0xda, 0xec, - 0xfa, 0xbc, 0x8c, 0xd2, 0x79, 0x63, 0xdf, 0xf3, 0x35, 0xf2, - 0x2b, 0x7c, 0x5d, 0xf1, 0x83, 0x1c, 0x9d, 0x76, 0xe4, 0x7d, - 0x2, 0x8f, 0xe9, 0x52, 0x45, 0xf1, 0x8b, 0xc6, 0x31, 0x1c, - 0x8d, 0x72, 0x63, 0xfe, 0xf4, 0x68, 0xdf, 0xcd, 0x6b, 0xf, - 0xf5, 0xa3, 0x9, 0xfc, 0x92, 0xfc, 0x3f, 0xcc, 0x9f, 0xed, - 0x1a, 0x7d, 0x99, 0xf5, 0xc5, 0x15, 0xf2, 0xb5, 0xb7, 0xc7, - 0x9f, 0x18, 0xdb, 0xfd, 0xeb, 0xf8, 0x6e, 0x3f, 0xeb, 0xad, - 0xba, 0x7f, 0x40, 0x2b, 0x7f, 0x4d, 0xfd, 0xa5, 0x75, 0xa8, - 0x58, 0xb, 0xed, 0x32, 0xce, 0xe9, 0x7b, 0xf9, 0x25, 0xa2, - 0x3f, 0xa9, 0x61, 0x5d, 0x54, 0xf8, 0x93, 0x1, 0x3f, 0x8a, - 0xeb, 0xd5, 0x7f, 0x95, 0xcd, 0x16, 0x3e, 0x8b, 0xde, 0xe8, - 0xfa, 0x2a, 0x8a, 0xf2, 0xdd, 0x17, 0xf6, 0x87, 0xf0, 0xd6, - 0xa3, 0xb5, 0x6f, 0x52, 0xeb, 0x4c, 0x90, 0xf5, 0x32, 0x26, - 0xf4, 0xfc, 0xd7, 0x27, 0xf4, 0xaf, 0x45, 0xd2, 0xb5, 0x9b, - 0x1d, 0x72, 0xd5, 0x6e, 0x74, 0xfb, 0xb8, 0x6f, 0x20, 0x6e, - 0x8f, 0xb, 0x86, 0x1f, 0x8f, 0xa5, 0x7b, 0x98, 0x7c, 0x6e, - 0x1f, 0x15, 0xfc, 0x19, 0xa9, 0x7e, 0x7f, 0x76, 0xe7, 0x64, - 0x2a, 0xd3, 0xa9, 0xf0, 0x3b, 0x97, 0x68, 0xa2, 0x8a, 0xed, - 0x35, 0xa, 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa2, 0x80, 0xa, - 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa6, 0xbc, 0x8b, 0x12, 0x96, - 0x76, 0x8, 0xa3, 0xa9, 0x63, 0x81, 0x40, 0xe, 0xa2, 0xb0, - 0xb5, 0xf, 0x1d, 0xf8, 0x77, 0x4b, 0x24, 0x5d, 0x6b, 0x56, - 0x30, 0xb0, 0xea, 0xa6, 0x75, 0x27, 0xf2, 0x7, 0x35, 0x8b, - 0x71, 0xf1, 0xa7, 0xc1, 0xb6, 0xe7, 0x7, 0x5a, 0x47, 0xff, - 00, 0xae, 0x70, 0xc8, 0xff, 00, 0xc9, 0x6b, 0x92, 0x78, - 0xbc, 0x35, 0x3d, 0x27, 0x52, 0x2b, 0xd5, 0xa3, 0x27, 0x56, - 0x9c, 0x77, 0x92, 0xfb, 0xce, 0xde, 0x98, 0x5d, 0xb3, 0xf7, - 0xf, 0xe6, 0x2b, 0x82, 0x3f, 0x1d, 0xfc, 0x18, 0xf, 0xfc, - 0x84, 0xe4, 0x3f, 0xf6, 0xed, 0x2f, 0xff, 00, 0x13, 0x4a, - 0xbf, 0x1d, 0x7c, 0x18, 0xc7, 0xfe, 0x42, 0x8e, 0x3e, 0xb6, - 0xb2, 0xff, 00, 0xf1, 0x35, 0x8f, 0xf6, 0x8e, 0xb, 0xfe, - 0x7f, 0x47, 0xff, 00, 0x2, 0x44, 0xfb, 0x7a, 0x5f, 0xce, - 0xbe, 0xf3, 0xbe, 0xc9, 0xc7, 0x4a, 0x4d, 0xc7, 0xfb, 0xa7, - 0xf4, 0xae, 0x3e, 0xdf, 0xe3, 0xf, 0x83, 0xae, 0x7e, 0xee, - 0xb9, 0x2, 0x7f, 0xd7, 0x45, 0x74, 0xfe, 0x60, 0x56, 0xcd, - 0x8f, 0x8c, 0xb4, 0x1d, 0x4f, 0x1f, 0x65, 0xd6, 0x2c, 0x67, - 0x27, 0xa0, 0x59, 0xd7, 0x3f, 0x96, 0x6b, 0x78, 0x62, 0xb0, - 0xf5, 0x3e, 0xa, 0x89, 0xfa, 0x34, 0x5a, 0xa9, 0x9, 0x6d, - 0x24, 0x6c, 0xd1, 0x4d, 0x47, 0x59, 0x17, 0x2a, 0xc1, 0x87, - 0xa8, 0x39, 0xa7, 0x57, 0x51, 0xa0, 0x51, 0x45, 0x30, 0x31, - 0xf3, 0x4a, 0x9e, 0x98, 0xc8, 0x34, 00, 0xfa, 0x28, 0xa2, - 0x80, 0xa, 0x82, 0xf5, 0xfc, 0xbb, 0x39, 0xdb, 0xd1, 0x9, - 0xfd, 0x2a, 0x7a, 0xa3, 0xad, 0xbf, 0x97, 0xa4, 0x5d, 0xb1, - 0x38, 0xc4, 0x66, 0xa6, 0x4e, 0xc9, 0xb1, 0x3d, 0x13, 0x3e, - 0x1c, 0xf8, 0xdf, 0x37, 0xda, 0x3c, 0x49, 0x28, 0xeb, 0x82, - 0x6b, 0x2f, 0xf6, 0x63, 0xf8, 0x99, 0x27, 0xc3, 0x6f, 0x8d, - 0x16, 0xba, 0x44, 0xf2, 0x95, 0xd1, 0x3c, 0x4a, 0x45, 0xa4, - 0x88, 0x71, 0x84, 0xb8, 0x19, 0xf2, 0x9f, 0xdb, 0xba, 0x9f, - 0xf7, 0x85, 0x49, 0xf1, 0x56, 0x7f, 0x3f, 0xc4, 0xd7, 0x3d, - 0xf0, 0x4d, 0x78, 0x7, 0xc5, 0x7b, 0x89, 0x2c, 0xb4, 0xe1, - 0x75, 0x6e, 0xed, 0x15, 0xcd, 0xbb, 0x9, 0xa2, 0x91, 0x4e, - 0xa, 0xba, 0x9c, 0xa9, 0x1f, 0x88, 0xaf, 0xce, 0x32, 0xfa, - 0xce, 0x38, 0xc9, 0x49, 0x77, 0x67, 0xe3, 0x98, 0xbc, 0x4c, - 0xb0, 0xd9, 0xac, 0x31, 0x11, 0xe9, 0x24, 0xbe, 0x4f, 0x46, - 0x7e, 0xc0, 0x51, 0x5c, 0x1f, 0x80, 0xfe, 0x28, 0xe9, 0x5e, - 0x21, 0xf0, 0x37, 0x87, 0x75, 0x59, 0x2e, 0xcb, 0x49, 0x7d, - 0xa7, 0x5b, 0x5c, 0xb1, 0x2a, 0x72, 0x4b, 0xc4, 0xac, 0x7f, - 0x9d, 0x15, 0xfa, 0x45, 0xcf, 0xd8, 0xee, 0x99, 0xde, 0x51, - 0x45, 0x14, 0xc6, 0x14, 0x51, 0x45, 00, 0x15, 0x53, 0x56, - 0xd4, 0xed, 0xf4, 0x5d, 0x2e, 0xee, 0xfe, 0xea, 0x41, 0x15, - 0xb5, 0xb4, 0x4d, 0x2c, 0x8e, 0x7b, 0x2a, 0x8c, 0x9a, 0xb7, - 0x5e, 0x2b, 0xfb, 0x55, 0x78, 0xc4, 0x68, 0x1f, 0xf, 0x86, - 0x93, 0x13, 0xe2, 0xeb, 0x58, 0x93, 0xca, 0xc0, 0xff, 00, - 0x9e, 0x4b, 0x86, 0x73, 0xff, 00, 0xa0, 0x8f, 0xc6, 0xb9, - 0xb1, 0x35, 0x96, 0x1e, 0x8c, 0xaa, 0xbe, 0x88, 0xe4, 0xc5, - 0xd7, 0x58, 0x5a, 0x13, 0xac, 0xfa, 0x2f, 0xf8, 0x63, 0xe4, - 0xcf, 0x12, 0xeb, 0x93, 0xf8, 0xa7, 0xc4, 0x7a, 0x8e, 0xad, - 0x71, 0x8f, 0x3e, 0xfa, 0xe1, 0xe6, 0x60, 0x3a, 0xc, 0x9e, - 00, 0xf6, 0x3, 0x2, 0xbe, 0xc2, 0xfd, 0x9b, 0x3c, 0x23, - 0xff, 00, 0x8, 0xe7, 0x80, 0xa3, 0xb9, 0x91, 0x36, 0xdc, - 0x5e, 0xb1, 0x90, 0xe4, 0x73, 0xb7, 0xb5, 0x7c, 0x91, 0xe0, - 0x6f, 0xf, 0xc9, 0xe2, 0x6f, 0x14, 0x69, 0xda, 0x7c, 0x6a, - 0x5b, 0xcd, 0x95, 0x41, 0xc7, 0xa6, 0x79, 0xaf, 0xd0, 0x8d, - 0x32, 0xc2, 0x2d, 0x2f, 0x4f, 0xb7, 0xb4, 0x85, 0x42, 0x47, - 0xa, 0x4, 0x50, 0x3d, 0x85, 0x7c, 0x6e, 0x43, 0x45, 0xd6, - 0xaf, 0x3c, 0x4c, 0xfa, 0x7e, 0x6c, 0xf8, 0xfe, 0x1d, 0xa0, - 0xea, 0x4e, 0x78, 0xa9, 0xef, 0xfa, 0xbd, 0xcb, 0x54, 0x51, - 0x45, 0x7d, 0xd9, 0xf7, 0x61, 0x45, 0x14, 0x50, 0x1, 0x5f, - 0x98, 0xbf, 0xf0, 0x5b, 0x2f, 0x1d, 0xdc, 0x5a, 0xf8, 0x77, - 0xe1, 0xaf, 0x83, 0x62, 0x25, 0x6d, 0xaf, 0x6e, 0x6e, 0xb5, - 0x59, 0xf0, 0x48, 0xc9, 0x89, 0x52, 0x34, 0x7, 0xd4, 0x7e, - 0xf9, 0xcf, 0xe1, 0x5f, 0xa7, 0x55, 0xf9, 0xe5, 0xff, 00, - 0x5, 0x88, 0xf8, 0x15, 0xab, 0x78, 0xf7, 0xe1, 0x97, 0x86, - 0x3c, 0x79, 0xa2, 0x59, 0xcd, 0x7f, 0x2f, 0x85, 0xa6, 0x9a, - 0x2b, 0xf8, 0x60, 0x42, 0xcc, 0x96, 0x93, 0x5, 0x26, 0x5c, - 0xe, 0x70, 0x8f, 0x1a, 0xe7, 0xd0, 0x31, 0x3d, 0xa8, 0x13, - 0xd8, 0xf8, 0x57, 0xfe, 0x9, 0xbb, 0xf1, 0x4b, 0xc1, 0xff, - 00, 0x8, 0x7f, 0x6a, 0x4d, 0x1f, 0x5d, 0xf1, 0xb5, 0xec, - 0x1a, 0x5e, 0x92, 0xf6, 0x37, 0x36, 0x91, 0xea, 0x17, 0x23, - 0xf7, 0x56, 0xd3, 0xc8, 0xa0, 0x23, 0xb1, 0xfe, 0x10, 0x40, - 0x65, 0xdd, 0xdb, 0x77, 0x3c, 0x57, 0xe8, 0x87, 0xfc, 0x15, - 0x1f, 0xf6, 0x8d, 0xd2, 0x7c, 0x31, 0xfb, 0x2e, 0x36, 0x8b, - 0xe1, 0xed, 0x62, 0xcf, 0x51, 0xbb, 0xf1, 0xb4, 0xc2, 0xc2, - 0x29, 0x6c, 0xae, 0x16, 0x55, 0xfb, 0x2a, 0xe1, 0xe7, 0x70, - 0x54, 0x91, 0x82, 0x36, 0xa7, 0xfd, 0xb4, 0xaf, 0xc4, 0xea, - 0x37, 0x12, 00, 0xc9, 0xc0, 0xe8, 0x2a, 0xac, 0x45, 0xcf, - 0xb5, 0x7f, 0xe0, 0x94, 0x9f, 0xc, 0xb4, 0xcf, 0x13, 0xfe, - 0xd0, 0x57, 0x3e, 0x35, 0xd7, 0xee, 0x6d, 0xac, 0xf4, 0x4f, - 0x5, 0x59, 0x1b, 0xe3, 0x3d, 0xe4, 0x8b, 0x1c, 0x42, 0xe6, - 0x4c, 0xa4, 0x59, 0x66, 0xc0, 0xe0, 0x79, 0x8d, 0xf5, 0x51, - 0x5e, 0xd9, 0xff, 00, 0x5, 0x2f, 0xff, 00, 0x82, 0x80, - 0xf8, 0x77, 0xc6, 0x7e, 0x11, 0xbb, 0xf8, 0x4f, 0xf0, 0xd7, - 0x53, 0x8f, 0x59, 0xb6, 0xbe, 0x64, 0x3a, 0xd6, 0xbd, 0x65, - 0x29, 0x30, 0x6c, 0x56, 0xd, 0xf6, 0x78, 0x98, 0x7d, 0xfc, - 0x90, 0x37, 0x30, 0xf9, 0x71, 0xc7, 0x39, 0x38, 0xfc, 0xc0, - 0x12, 0xba, 0xc6, 0xd1, 0x87, 0x61, 0x1b, 0x10, 0x59, 0x1, - 0xe0, 0x91, 0xd3, 0x22, 0xbd, 0x33, 0xe0, 0x1f, 0xec, 0xe5, - 0xe3, 0x9f, 0xda, 0x43, 0xc6, 0x50, 0x78, 0x7f, 0xc1, 0xba, - 0x4c, 0x97, 0x44, 0xb7, 0xfa, 0x4e, 0xa3, 0x2a, 0x95, 0xb4, - 0xb3, 0x4e, 0xed, 0x2c, 0x98, 0xc0, 0xf6, 0x1d, 0x4f, 0x60, - 0x68, 0xb, 0xf4, 0x3b, 0xbf, 0xd8, 0x3f, 0xf6, 0x70, 0x9f, - 0xf6, 0x92, 0xf8, 0xff, 00, 0xa3, 0x69, 0x33, 0xc2, 0xe7, - 0xc3, 0x7a, 0x53, 0x2e, 0xa7, 0xac, 0x4e, 0x17, 0x2a, 0x21, - 0x46, 0x5, 0x62, 0xcf, 0x4c, 0xc8, 0xd8, 0x5c, 0x7a, 0x16, - 0x3d, 0xab, 0xfa, 0xd, 0x44, 0x58, 0x91, 0x51, 0x14, 0x2a, - 0xa8, 0xc0, 0x3, 0xa0, 0x15, 0xe2, 0xff, 00, 0xb2, 0x8f, - 0xec, 0xb7, 0xe1, 0xaf, 0xd9, 0x53, 0xe1, 0xa4, 0x3e, 0x1b, - 0xd1, 0x7f, 0xd3, 0x35, 0x3b, 0x82, 0x27, 0xd5, 0x75, 0x67, - 0x5c, 0x49, 0x79, 0x3e, 0x31, 0x9f, 0x64, 0x1d, 0x15, 0x7b, - 0xf, 0x72, 0x4d, 0x7b, 0x43, 0xba, 0xc6, 0x8c, 0xec, 0x42, - 0xaa, 0x8c, 0x92, 0x7b, 0xa, 0x96, 0xcb, 0x4a, 0xc7, 0x81, - 0xfe, 0xd2, 0x9e, 0x23, 0x13, 0x5e, 0xe9, 0x9a, 0x24, 0x6f, - 0x91, 0x8, 0x37, 0x33, 0x1, 0xfd, 0xe3, 0xc2, 0x8f, 0xcb, - 0x77, 0xe7, 0x5e, 0x25, 0x5b, 0xbe, 0x39, 0xd7, 0xcf, 0x8a, - 0x3c, 0x5b, 0xaa, 0x6a, 0x79, 0x26, 0x39, 0xa6, 0x3e, 0x5e, - 0x7f, 0xb8, 0x3e, 0x55, 0xfd, 00, 0xac, 0x2a, 0xfc, 0x4b, - 0x33, 0xc4, 0xfd, 0x6f, 0x17, 0x52, 0xaf, 0x4b, 0xe9, 0xe8, - 0xb4, 0x47, 0xc9, 0x62, 0x2a, 0x7b, 0x5a, 0xb2, 0x90, 0x51, - 0x45, 0x15, 0xe6, 0x18, 0x16, 0xec, 0x74, 0x8b, 0xed, 0x50, - 0x39, 0xb3, 0xb2, 0xb8, 0xbb, 0x9, 0x8d, 0xde, 0x44, 0x4c, - 0xfb, 0x73, 0xd3, 0x38, 0x1c, 0x54, 0xd2, 0x78, 0x6f, 0x57, - 0x88, 0x65, 0xf4, 0xab, 0xd4, 0x1e, 0xad, 0x6c, 0xe3, 0xfa, - 0x57, 0xd2, 0x1f, 00, 0x74, 0xf, 0xec, 0x8f, 0x2, 0x47, - 0x74, 0xe9, 0xb6, 0x6d, 0x42, 0x56, 0x9c, 0x92, 0x39, 0xd8, - 0x3e, 0x55, 0xfd, 0x1, 0x3f, 0x8d, 0x7a, 0x55, 0x7d, 0xd6, - 0x13, 0x86, 0xa3, 0x88, 0xc3, 0xc2, 0xac, 0xea, 0x34, 0xe4, - 0xaf, 0x6b, 0x77, 0x3d, 0x8a, 0x58, 0x5, 0x38, 0x29, 0x39, - 0x5a, 0xe7, 0xc3, 0x12, 0xc1, 0x2c, 0x7, 0x12, 0xc6, 0xf1, - 0x9f, 0x47, 0x52, 0x2a, 0x3a, 0xfb, 0x96, 0xe2, 0xce, 0xde, - 0xed, 0xa, 0x4f, 0x4, 0x73, 0x21, 0xfe, 0x19, 0x10, 0x30, - 0xfd, 0x6b, 0x8c, 0xf1, 0x3f, 0xc1, 0xaf, 0xc, 0xf8, 0x8e, - 0xde, 0x40, 0x96, 0x11, 0xe9, 0xb7, 0x44, 0x1d, 0xb7, 0x16, - 0x6a, 0x10, 0x83, 0xee, 0xa3, 0x83, 0xf9, 0x54, 0xd6, 0xe1, - 0x6a, 0xb1, 0x57, 0xa3, 0x51, 0x3f, 0x26, 0xad, 0xfe, 0x62, - 0x9e, 0x5d, 0x24, 0xbd, 0xd9, 0x5c, 0xf9, 0x36, 0x8a, 0xd4, - 0xf1, 0x3f, 0x87, 0xae, 0x7c, 0x2b, 0xaf, 0x5e, 0x69, 0x57, - 0x78, 0x33, 0x5b, 0x3e, 0xd2, 0xcb, 0xd1, 0x81, 0x19, 0xc, - 0x3e, 0xa0, 0x83, 0x59, 0x75, 0xf1, 0x53, 0x84, 0xa9, 0xc9, - 0xc2, 0x4a, 0xcd, 0x68, 0x79, 0x2d, 0x34, 0xec, 0xc2, 0x8a, - 0x28, 0xa8, 0x11, 0xe9, 0xbf, 00, 0x3c, 0x49, 0x36, 0x93, - 0xe3, 0x68, 0xf4, 0xed, 0xc7, 0xec, 0xba, 0x8a, 0x32, 0x32, - 0x76, 0xe, 0xa0, 0xb2, 0x9f, 0xd0, 0x8f, 0xc6, 0xbe, 0x9e, - 0xaf, 0x92, 0xbe, 0xb, 0xda, 0x3d, 0xdf, 0xc4, 0xad, 0x1b, - 0x68, 0x24, 0x46, 0xcf, 0x23, 0x11, 0xd8, 0x4, 0x6f, 0xfe, - 0xb5, 0x7d, 0x6b, 0x5f, 0xa9, 0xf0, 0xcc, 0xe7, 0x2c, 0x13, - 0x52, 0xd9, 0x49, 0xdb, 0xee, 0x4c, 0xfa, 0x2c, 0xbd, 0xb7, - 0x49, 0xa7, 0xdc, 0xa5, 0xad, 0xea, 0x71, 0xe8, 0xda, 0x3d, - 0xed, 0xfc, 0xa7, 0x11, 0xdb, 0x42, 0xf2, 0x9c, 0xff, 00, - 0xb2, 0x9, 0xaf, 0x89, 0xae, 0xae, 0x64, 0xbd, 0xb9, 0x9a, - 0xe2, 0x56, 0xdd, 0x2c, 0xae, 0x64, 0x76, 0xf5, 0x24, 0xe4, - 0xd7, 0xda, 0x3e, 0x28, 0xf0, 0xf4, 0x3e, 0x2a, 0xd0, 0xee, - 0x74, 0xbb, 0x89, 0xa6, 0x82, 0xb, 0x80, 0x3, 0xbc, 0x4, - 0x6, 0xc0, 0x20, 0xe3, 0x90, 0x7d, 0x2b, 0xcd, 0xa4, 0xfd, - 0x9a, 0xb4, 0x16, 0xfb, 0x9a, 0x9e, 0xa0, 0xbf, 0x52, 0x87, - 0xff, 00, 0x65, 0xa8, 0xcf, 0x72, 0xfc, 0x5e, 0x61, 0x28, - 0x2a, 0x9, 0x72, 0xc6, 0xfd, 0x7a, 0xb1, 0x63, 0x28, 0x55, - 0xac, 0xd7, 0x22, 0xd1, 0x1f, 0x39, 0x51, 0x5f, 0x42, 0x49, - 0xfb, 0x33, 0x69, 0x87, 0xee, 0x6b, 0x57, 0x6b, 0xfe, 0xf4, - 0x6a, 0x6a, 0xb4, 0x9f, 0xb3, 0x1c, 0x7, 0xee, 0x6b, 0xf2, - 0xf, 0xf7, 0xad, 0x81, 0xff, 00, 0xd9, 0xab, 0xe4, 0x9f, - 0xf, 0xe6, 0x2b, 0xec, 0x7e, 0x2b, 0xfc, 0xcf, 0x33, 0xea, - 0x55, 0xfb, 0x7e, 0x27, 0x82, 0x51, 0x5e, 0x9b, 0xf1, 0x17, - 0xe0, 0xd2, 0x78, 0x3, 0x42, 0x1a, 0x8b, 0x6b, 0x3f, 0x6b, - 0x2f, 0x32, 0xc2, 0x90, 0xfd, 0x9f, 0x61, 0x62, 0x72, 0x7a, - 0xee, 0x3d, 00, 0x3d, 0xab, 0xcc, 0xab, 0xc7, 0xc4, 0xe1, - 0x6b, 0x60, 0xea, 0x7b, 0x2a, 0xca, 0xcf, 0xe4, 0xff, 00, - 0x23, 0x96, 0xa5, 0x39, 0x52, 0x97, 0x2c, 0xd6, 0xa1, 0x45, - 0x14, 0x57, 0x21, 0x98, 0x51, 0x45, 0x7a, 0x44, 0x1f, 00, - 0x7c, 0x55, 0x73, 0x6b, 0xd, 0xc4, 0x6b, 0x66, 0x56, 0x54, - 0x59, 0x2, 0x99, 0xc8, 0x20, 0x11, 0x9c, 0x1e, 0x3a, 0xd7, - 0x55, 0xc, 0x2d, 0x7c, 0x4d, 0xfd, 0x8c, 0x1c, 0xad, 0xbd, - 0x8d, 0x21, 0x4e, 0x75, 0x3e, 0x5, 0x73, 0xcd, 0xe8, 0xaf, - 0x46, 0x93, 0xe0, 0xf, 0x8c, 0x13, 0xa5, 0xa5, 0xb3, 0xff, - 00, 0xbb, 0x72, 0xb5, 0x56, 0x5f, 0x81, 0xfe, 0x32, 0x8b, - 0xa6, 0x94, 0x1f, 0xfd, 0xcb, 0x88, 0xff, 00, 0xf8, 0xaa, - 0xe8, 0x79, 0x6e, 0x35, 0x6f, 0x46, 0x5f, 0x73, 0x2f, 0xd8, - 0x55, 0x5f, 0x65, 0xfd, 0xc7, 0x7, 0x5e, 0xd3, 0xfb, 0x34, - 0x69, 0x3e, 0x6e, 0xaf, 0xab, 0xea, 0x4c, 0xbc, 0x43, 0xa, - 0xc0, 0x8d, 0xee, 0xc7, 0x27, 0xf4, 0x51, 0xf9, 0xd7, 0x12, - 0xff, 00, 0x7, 0x3c, 0x64, 0x9d, 0x74, 0x29, 0x8f, 0xfb, - 0xb2, 0x46, 0x7f, 0xf6, 0x6a, 0xf7, 0x9f, 0x82, 0x9e, 0x12, - 0xb9, 0xf0, 0x9f, 0x83, 0x84, 0x77, 0xd0, 0x1b, 0x6b, 0xeb, - 0x89, 0x9e, 0x59, 0x63, 0x6e, 0xab, 0xfc, 0x2a, 0xf, 0xe0, - 0x33, 0xf8, 0xd7, 0xb7, 0x91, 0xe0, 0x2b, 0xac, 0x74, 0x67, - 0x56, 0xd, 0x28, 0xdd, 0xea, 0x9a, 0xf2, 0xfd, 0x4e, 0xbc, - 0x1d, 0x19, 0xfb, 0x64, 0xe4, 0xad, 0x63, 0xbf, 0xa2, 0x8a, - 0xf3, 0x4f, 0x8a, 0xff, 00, 0x17, 0xa0, 0xf0, 0x54, 0x6d, - 0xa7, 0x69, 0xfb, 0x6e, 0x35, 0xa7, 0x5c, 0xf3, 0xca, 0x40, - 0xf, 0x76, 0xf5, 0x3e, 0x83, 0xf3, 0xf7, 0xfd, 0x27, 0x13, - 0x89, 0xa5, 0x84, 0xa4, 0xea, 0xd6, 0x76, 0x48, 0xf7, 0xea, - 0x54, 0x8d, 0x28, 0xf3, 0x49, 0xe8, 0x74, 0xde, 0x33, 0xf8, - 0x83, 0xa3, 0xf8, 0x1a, 0xd3, 0xcc, 0xd4, 0x2e, 0x33, 0x70, - 0xcb, 0x98, 0xad, 0x63, 0xe6, 0x59, 0x3e, 0x83, 0xb0, 0xf7, - 0x3c, 0x57, 0xcf, 0xde, 0x32, 0xf8, 0xe3, 0xaf, 0xf8, 0xa3, - 0x7c, 0x36, 0xaf, 0xfd, 0x91, 0x62, 0x4f, 0xfa, 0xbb, 0x66, - 0x3e, 0x63, 0xf, 0xf6, 0x9f, 0xaf, 0xe5, 0x8a, 0xe1, 0x35, - 0x3d, 0x4e, 0xef, 0x59, 0xbd, 0x96, 0xf2, 0xfa, 0xe2, 0x4b, - 0xab, 0x99, 0x4e, 0x5e, 0x49, 0xe, 0x49, 0xff, 00, 0x3e, - 0x95, 0x56, 0xbf, 0x2f, 0xcc, 0x33, 0xec, 0x46, 0x31, 0xb8, - 0x53, 0x7c, 0x90, 0xec, 0xb7, 0x7e, 0xac, 0xf9, 0xda, 0xf8, - 0xca, 0x95, 0x74, 0x8e, 0x88, 0x57, 0x76, 0x91, 0x8b, 0x33, - 0x16, 0x62, 0x72, 0x49, 0x39, 0x26, 0x92, 0x8a, 0x2b, 0xe6, - 0x4e, 00, 0xa2, 0x8a, 0x96, 0xde, 0xd2, 0x7b, 0xc7, 0xd9, - 0x4, 0x32, 0x4e, 0xdf, 0xdd, 0x8d, 0xb, 0x1f, 0xd2, 0x9a, - 0x4d, 0xbb, 0x20, 0x22, 0xa2, 0xb5, 0x47, 0x84, 0xb5, 0xc2, - 0x32, 0x34, 0x5d, 0x47, 0x1e, 0xbf, 0x64, 0x93, 0xfc, 0x2a, - 0x95, 0xd6, 0x9f, 0x75, 0x62, 0x71, 0x73, 0x6d, 0x35, 0xb9, - 0xf4, 0x96, 0x32, 0xbf, 0xce, 0xae, 0x54, 0xe7, 0x15, 0x79, - 0x45, 0xaf, 0x90, 0xdc, 0x5a, 0xdd, 0x15, 0xe8, 0xa2, 0x8a, - 0xcc, 0x41, 0x57, 0x34, 0xad, 0x66, 0xfb, 0x43, 0xba, 0x5b, - 0x9d, 0x3e, 0xee, 0x6b, 0x39, 0xd4, 0xe7, 0x7c, 0x2e, 0x57, - 0x3f, 0x5f, 0x5f, 0xa1, 0xaa, 0x74, 0x55, 0x46, 0x4e, 0x2f, - 0x9a, 0x2e, 0xcc, 0x13, 0x6b, 0x54, 0x7b, 0xef, 0xc3, 0xef, - 0xda, 0x9, 0x2e, 0xe5, 0x8e, 0xc7, 0xc4, 0xc1, 0x20, 0x73, - 0x85, 0x5b, 0xf8, 0xc6, 0x14, 0x9f, 0xf6, 0xc7, 0x6f, 0xa8, - 0xe3, 0xd8, 0x57, 0xb6, 0x47, 0x22, 0x4d, 0x1a, 0xc9, 0x1b, - 0x7, 0x46, 0x19, 0x56, 0x53, 0x90, 0x47, 0xa8, 0x35, 0xf0, - 0xb5, 0x7a, 0xc7, 0xc1, 0x9f, 0x8b, 0x12, 0x78, 0x76, 0xf2, - 0x1d, 0x17, 0x55, 0x98, 0xbe, 0x93, 0x2b, 0x6d, 0x8a, 0x47, - 0x3f, 0xf1, 0xee, 0xc7, 0xa7, 0x3f, 0xdd, 0x3f, 0xa7, 0xe7, - 0x5f, 0x77, 0x94, 0x67, 0xf2, 0xe6, 0x58, 0x7c, 0x63, 0xba, - 0x7b, 0x4b, 0xfc, 0xff, 00, 0xcf, 0xef, 0x3d, 0x9c, 0x2e, - 0x35, 0xdd, 0x42, 0xaf, 0xde, 0x7d, 0x27, 0x45, 0x20, 0x20, - 0x8c, 0x8e, 0x41, 0xa5, 0xaf, 0xd0, 0xcf, 0x70, 0x28, 0xa2, - 0xaa, 0xea, 0x7a, 0x9d, 0xb6, 0x8d, 0xa7, 0xcf, 0x7b, 0x79, - 0x32, 0xc1, 0x6d, 0x2, 0x17, 0x92, 0x46, 0xe8, 00, 0xa4, - 0xda, 0x8a, 0xbb, 0xd8, 0x4d, 0xdb, 0x56, 0x59, 0x66, 0x8, - 0xa5, 0x98, 0x80, 0x7, 0x24, 0x9e, 0xd5, 0xe6, 0xfe, 0x30, - 0xf8, 0xed, 0xa0, 0x78, 0x6f, 0x7c, 0x36, 0x4d, 0xfd, 0xb1, - 0x7a, 0x38, 0xd9, 0x6e, 0xd8, 0x8d, 0x4f, 0xbb, 0xf4, 0xfc, - 0xb3, 0x5e, 0x45, 0xf1, 0x27, 0xe3, 0x16, 0xa1, 0xe3, 0x29, - 0xe5, 0xb4, 0xb1, 0x79, 0x2c, 0x34, 0x60, 0x70, 0x22, 0x53, - 0x87, 0x98, 0x7a, 0xb9, 0x1d, 0xbf, 0xd9, 0xe9, 0xf5, 0xaf, - 0x3a, 0xaf, 0x80, 0xcc, 0x78, 0x95, 0xa6, 0xe9, 0xe0, 0xd7, - 0xfd, 0xbc, 0xff, 00, 0x45, 0xfe, 0x7f, 0x71, 0xe2, 0xd7, - 0xc7, 0xbb, 0xf2, 0xd2, 0xfb, 0xcf, 0x47, 0xf1, 0x7, 0xc7, - 0xbf, 0x14, 0x6b, 0x3b, 0x92, 0xda, 0x68, 0xb4, 0xa8, 0x4f, - 0xf0, 0xda, 0xaf, 0xcd, 0xff, 00, 0x7d, 0x36, 0x4f, 0xe5, - 0x8a, 0xe1, 0x6f, 0xf5, 0xad, 0x43, 0x54, 0x62, 0xd7, 0x97, - 0xd7, 0x37, 0x64, 0xf7, 0x9a, 0x56, 0x7f, 0xe6, 0x6a, 0x95, - 0x15, 0xf1, 0x75, 0xf1, 0x98, 0x8c, 0x4b, 0xbd, 0x69, 0xb7, - 0xf3, 0xfd, 0xf, 0x26, 0x75, 0x67, 0x53, 0xe2, 0x77, 0xa, - 0x28, 0xa2, 0xb8, 0xcc, 0xc2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, - 0x28, 0xa0, 0xb, 0x76, 0x7a, 0xbd, 0xf6, 0x9c, 0xc1, 0xad, - 0x6f, 0x6e, 0x2d, 0x88, 0xef, 0xc, 0xac, 0x9f, 0xc8, 0xd7, - 0x5b, 0xa2, 0x7c, 0x68, 0xf1, 0x6e, 0x8a, 0x55, 0x57, 0x53, - 0x6b, 0xd8, 0xc7, 0x1e, 0x5d, 0xe2, 0x89, 0x33, 0xf8, 0xfd, - 0xef, 0xd6, 0xb8, 0x7a, 0xdb, 0xf0, 0x4e, 0x96, 0x75, 0xaf, - 0x17, 0x68, 0xf6, 0x41, 0x77, 0x9, 0x6e, 0xa3, 0xc, 0x3f, - 0xd9, 0x7, 0x2d, 0xfa, 0x3, 0x5d, 0xd8, 0x6a, 0xf8, 0x88, - 0x54, 0x8c, 0x68, 0xcd, 0xa6, 0xdd, 0xb4, 0x66, 0xb4, 0xe7, - 0x35, 0x24, 0xa0, 0xec, 0x7d, 0x8d, 0xa5, 0xcb, 0x71, 0x3e, - 0x9b, 0x6b, 0x25, 0xda, 0xaa, 0x5d, 0x3c, 0x4a, 0xd2, 0xaa, - 0xc, 00, 0xc4, 0xc, 0x81, 0xf8, 0xd5, 0x9c, 0x73, 0x9a, - 0x5a, 0x2b, 0xf7, 0x14, 0xac, 0x92, 0x3e, 0xbd, 0x5, 0x14, - 0x51, 0x4c, 0x61, 0x58, 0xfe, 0x2e, 0x97, 0xca, 0xf0, 0xed, - 0xeb, 0x74, 0xf9, 0xd, 0x6c, 0x57, 0x33, 0xf1, 0x12, 0x6f, - 0x27, 0xc2, 0xb7, 0x7d, 0xb2, 0x31, 0x58, 0xd6, 0x7c, 0xb4, - 0xe4, 0xfc, 0x8c, 0xea, 0x3b, 0x41, 0xb3, 0xe1, 0x4f, 0x88, - 0x13, 0x79, 0xde, 0x22, 0xbb, 0x6f, 0xf6, 0x8d, 0x78, 0x7, - 0xc6, 0x8b, 0x8f, 0x2f, 0x47, 0x9b, 0x9f, 0xe1, 0x35, 0xee, - 0x5e, 0x2e, 0x97, 0xcd, 0xd6, 0x6f, 0x1b, 0xfd, 0xb3, 0x5f, - 0x3c, 0x7c, 0x78, 0xb9, 0xf2, 0xb4, 0x6b, 0x9f, 0x68, 0xcf, - 0xf2, 0xaf, 0xcd, 0xb2, 0xc5, 0xcd, 0x5e, 0xfe, 0xa7, 0xe2, - 0x18, 0xbf, 0xde, 0xe3, 0xe9, 0xc7, 0xbc, 0xd7, 0xe6, 0x7e, - 0x94, 0xfc, 0xc, 0xf0, 0x98, 0x5f, 0x82, 0x7f, 0xf, 0x84, - 0x90, 0xb0, 0x90, 0x78, 0x7b, 0x4f, 0xd, 0x91, 0xce, 0x7e, - 0xcd, 0x1e, 0x68, 0xaf, 0x59, 0xf8, 0x75, 0x66, 0x2c, 0xfe, - 0x1f, 0x78, 0x62, 0xdc, 0xc6, 0x10, 0xc5, 0xa5, 0xda, 0xc7, - 0xb7, 0x1d, 0x31, 0x12, 0x8c, 0x51, 0x5f, 0xa6, 0x24, 0x7e, - 0xe0, 0xa3, 0xa1, 0xd1, 0xd1, 0x45, 0x15, 0x65, 0x85, 0x14, - 0x51, 0x40, 0x5, 0x7c, 0x4d, 0xfb, 0x4b, 0xf8, 0xc4, 0xf8, - 0xa3, 0xe2, 0x65, 0xcd, 0xac, 0x6e, 0x1a, 0xd3, 0x49, 0x51, - 0x69, 0x1e, 0x31, 0x8d, 0xfd, 0x5c, 0xe4, 0x7b, 0x9c, 0x7e, - 0x15, 0xf5, 0xdf, 0x8e, 0xfc, 0x51, 0xf, 0x82, 0xfc, 0x21, - 0xaa, 0xeb, 0x33, 0x9f, 0x96, 0xd2, 0x6, 0x75, 0x5c, 0xe3, - 0x73, 0xe3, 0xa, 0xa3, 0xdc, 0x9c, 0x57, 0xe7, 0x9b, 0xcb, - 0x3e, 0xa5, 0x7a, 0xf3, 0x4c, 0xc6, 0x5b, 0x9b, 0x89, 0xb, - 0xbb, 0x1e, 0xac, 0xcc, 0x72, 0x4f, 0xe6, 0x6b, 0xe4, 0x78, - 0x83, 0x13, 0xcb, 0x4e, 0x34, 0x17, 0x5d, 0x5f, 0xa2, 0x3e, - 0x33, 0x88, 0xf1, 0x36, 0x84, 0x30, 0xd1, 0xde, 0x5a, 0xbf, - 0x45, 0xb7, 0xe3, 0xf9, 0x1e, 0xfb, 0xfb, 0x27, 0x78, 0x3f, - 0xed, 0xba, 0xdd, 0xe6, 0xb5, 0x32, 0xe6, 0x3b, 0x65, 0xdb, - 0x1e, 0x47, 0xf1, 0x1a, 0xfa, 0xb6, 0xbc, 0xff, 00, 0xe0, - 0x77, 0x85, 0x7, 0x85, 0x7e, 0x1f, 0xe9, 0xf1, 0x32, 0x6d, - 0x9e, 0x75, 0xf3, 0xa4, 0xfa, 0x9a, 0xf4, 0xa, 0xf5, 0xf2, - 0xac, 0x3f, 0xd5, 0xb0, 0x90, 0x8b, 0xdd, 0xea, 0xfe, 0x67, - 0xd0, 0x65, 0xb8, 0x7f, 0xaa, 0xe1, 0x61, 0xe, 0xbb, 0xbf, - 0x98, 0x51, 0x45, 0x15, 0xeb, 0x9e, 0x98, 0x51, 0x45, 0x14, - 00, 0x53, 0x26, 0x86, 0x3b, 0x98, 0x64, 0x86, 0x68, 0xd6, - 0x58, 0xa4, 0x52, 0xae, 0x8e, 0x32, 0xac, 0xf, 0x4, 0x11, - 0xdc, 0x56, 0x5f, 0x8a, 0xfc, 0x5b, 0xa3, 0x78, 0x1b, 0xc3, - 0xf7, 0xba, 0xe7, 0x88, 0x35, 0x3b, 0x5d, 0x1f, 0x48, 0xb2, - 0x8c, 0xcb, 0x71, 0x7b, 0x79, 0x20, 0x8e, 0x38, 0xd4, 0x77, - 0x24, 0xd7, 0xe7, 0xf7, 0xc6, 0xdf, 0xf8, 0x2c, 0x9f, 0x82, - 0xfc, 0x31, 0x3c, 0xd6, 0x1f, 0xd, 0xbc, 0x39, 0x73, 0xe3, - 0xb, 0x84, 0x3b, 0x7f, 0xb4, 0xb5, 0x16, 0x36, 0x96, 0x9f, - 0x55, 0x5c, 0x19, 0x1f, 0xf1, 0xb, 0x40, 0x1e, 0x85, 0xf1, - 0x93, 0xfe, 0x9, 0x37, 0xf0, 0x6b, 0xe2, 0x76, 0xa3, 0x73, - 0xa9, 0xe8, 0x9f, 0xda, 0x3e, 0x3, 0xd4, 0x6e, 0x1c, 0xc9, - 0x20, 0xd2, 0x1d, 0x5e, 0xd4, 0xb1, 0xeb, 0xfb, 0x97, 0x4, - 0x2f, 0xd1, 0xa, 0x8a, 0xf0, 0xd9, 0xbf, 0xe0, 0x88, 0xb0, - 0xfd, 0xb3, 0x31, 0x7c, 0x58, 0x90, 0x5a, 0x67, 0xa3, 0xe8, - 0xa0, 0xc9, 0x8f, 0xa8, 0x9b, 0x15, 0xe2, 0x1a, 0xa7, 0xfc, - 0x16, 0xf, 0xe3, 0xc5, 0xf4, 0xcc, 0xd6, 0xd0, 0x78, 0x57, - 0x4e, 0x8c, 0xfd, 0xd4, 0x87, 0x4c, 0x76, 0xc7, 0xe2, 0xf2, - 0xb6, 0x6b, 0xed, 0xf, 0xf8, 0x26, 0xc7, 0xed, 0x35, 0xf1, - 0x77, 0xf6, 0xa3, 0x93, 0xc5, 0xba, 0xcf, 0x8e, 0x2e, 0xb4, - 0xb6, 0xf0, 0xde, 0x91, 0xe5, 0x5a, 0x5b, 0x8b, 0x1b, 0x11, - 0xb, 0xcb, 0x74, 0xff, 00, 0x33, 0x65, 0xb2, 0x78, 0x54, - 0x3, 0x81, 0xfd, 0xf1, 0x4f, 0x52, 0x74, 0x65, 0xf, 0x87, - 0x1f, 0xf0, 0x47, 0x3f, 0x84, 0x5e, 0x16, 0xb8, 0x4b, 0x8f, - 0x13, 0xeb, 0x1a, 0xef, 0x8c, 0xa4, 0x52, 0xf, 0x91, 0x2c, - 0xab, 0x67, 0x6e, 0x48, 0xf5, 0x58, 0xfe, 0x7f, 0xfc, 0x7e, - 0xbe, 0xd5, 0xf0, 0x27, 0xc3, 0xef, 0xd, 0xfc, 0x31, 0xf0, - 0xe5, 0xb6, 0x81, 0xe1, 0x4d, 0x12, 0xcb, 0x40, 0xd1, 0xed, - 0x86, 0x23, 0xb4, 0xb1, 0x88, 0x46, 0x83, 0xd4, 0x9c, 0x75, - 0x27, 0xb9, 0x39, 0x26, 0xbc, 0x43, 0xc5, 0x7f, 0xf0, 0x50, - 0xef, 0x80, 0xbe, 0x6, 0xf1, 0x76, 0xaf, 0xe1, 0x8d, 0x7b, - 0xc6, 0xaf, 0xa6, 0x6b, 0x5a, 0x55, 0xd4, 0x96, 0x77, 0x96, - 0xd2, 0xe9, 0x77, 0x67, 0xcb, 0x95, 0x1b, 0x6b, 0xd, 0xc2, - 0x22, 0xa7, 0x91, 0xd4, 0x1c, 0x1a, 0xf5, 0xbf, 0x84, 0xbf, - 0x19, 0xbc, 0x1d, 0xf1, 0xcf, 0xc2, 0xed, 0xe2, 0x2f, 0x3, - 0xeb, 0x51, 0xeb, 0xba, 0x3a, 0xdc, 0x35, 0xab, 0x5c, 0xc7, - 0x1b, 0xc6, 0x4, 0x8a, 0x1, 0x65, 0xc3, 0xa8, 0x3c, 0x6, - 0x1d, 0xbb, 0xd2, 0x19, 0xda, 0xd7, 0x11, 0xf1, 0x93, 0xc4, - 0x43, 0xc3, 0xbe, 0x1, 0xd4, 0x59, 0x5f, 0x6c, 0xf7, 0x4b, - 0xf6, 0x58, 0xb9, 0xe7, 0x2f, 0xc1, 0xfc, 0x97, 0x71, 0xae, - 0xde, 0xbe, 0x76, 0xfd, 0xa4, 0x7c, 0x43, 0xf6, 0xcd, 0x7e, - 0xc3, 0x48, 0x8d, 0xf2, 0x96, 0x91, 0x19, 0x64, 0x3, 0xfb, - 0xef, 0xd3, 0xf2, 00, 0x7e, 0x75, 0xe2, 0xe7, 0x18, 0x9f, - 0xaa, 0xe0, 0xa7, 0x35, 0xbb, 0xd1, 0x7a, 0xbf, 0xea, 0xe7, - 0x2e, 0x2a, 0xa7, 0xb3, 0xa4, 0xdf, 0xc8, 0xf1, 0xda, 0x28, - 0xa2, 0xbf, 0x19, 0x3e, 0x54, 0x2a, 0xe6, 0x8f, 0xa6, 0x49, - 0xac, 0xea, 0xd6, 0x76, 0x10, 0x82, 0x65, 0xb9, 0x99, 0x22, - 0x5c, 0x76, 0xdc, 0x40, 0xcd, 0x53, 0xaf, 0x44, 0xf8, 0x18, - 0x9a, 0x64, 0x3e, 0x33, 0xfb, 0x7e, 0xa9, 0x79, 0x6d, 0x67, - 0x15, 0x9c, 0x4c, 0xf1, 0x1b, 0x89, 0x42, 0x6, 0x90, 0xfc, - 0xa3, 0x19, 0xeb, 0x80, 0x58, 0xfe, 0x55, 0xd7, 0x84, 0xa2, - 0xb1, 0x18, 0x88, 0x52, 0x6e, 0xc9, 0xbd, 0x7d, 0x3a, 0x9a, - 0x52, 0x8f, 0x3c, 0xd4, 0x59, 0xf4, 0xfe, 0x9f, 0x63, 0x16, - 0x99, 0x61, 0x6f, 0x69, 0x2, 0xec, 0x86, 0x8, 0xd6, 0x24, - 0x51, 0xd8, 0x1, 0x81, 0x56, 0x2b, 0x2a, 0x3f, 0x16, 0x68, - 0x93, 0x7d, 0xcd, 0x5e, 0xc5, 0xff, 00, 0xdd, 0xb9, 0x43, - 0xfd, 0x6a, 0x43, 0xe2, 0x4d, 0x25, 0x46, 0x4e, 0xa9, 0x66, - 0x7, 0xaf, 0x9e, 0x9f, 0xe3, 0x5f, 0xb7, 0xc6, 0xa5, 0x24, - 0xac, 0xa4, 0xad, 0xea, 0x7d, 0x72, 0x94, 0x6d, 0xa3, 0x34, - 0x69, 0x9, 0xa, 0x9, 0x27, 00, 0x72, 0x49, 0xae, 0x5b, - 0x55, 0xf8, 0xa5, 0xe1, 0x5d, 0x1a, 0x36, 0x69, 0xf5, 0xbb, - 0x57, 0x23, 0xf8, 0x20, 0x7f, 0x35, 0xbf, 0x25, 0xcd, 0x78, - 0xf7, 0xc4, 0x9f, 0x8f, 0x12, 0x6b, 0xf6, 0xb2, 0xe9, 0x9a, - 0xa, 0x49, 0x69, 0x67, 0x20, 0x29, 0x2d, 0xd4, 0x9c, 0x49, - 0x22, 0x9e, 0xa1, 0x47, 0xf0, 0x8f, 0x7e, 0xbf, 0x4a, 0xf3, - 0x71, 0x99, 0xb6, 0x13, 0x7, 0x6, 0xe5, 0x34, 0xdf, 0x64, - 0xee, 0xcc, 0x2a, 0xe2, 0x69, 0xd2, 0x57, 0x6e, 0xec, 0xe2, - 0x3e, 0x27, 0x78, 0x82, 0x2f, 0x13, 0xf8, 0xe7, 0x55, 0xbf, - 0x80, 0x83, 0x6e, 0xd2, 0x8, 0xe3, 0x61, 0xfc, 0x4a, 0x80, - 0x28, 0x3f, 0x8e, 0x33, 0xf8, 0xd7, 0x2d, 0x45, 0x15, 0xf8, - 0xed, 0x6a, 0xb2, 0xaf, 0x52, 0x55, 0x65, 0xbc, 0x9b, 0x7f, - 0x79, 0xf2, 0xd2, 0x93, 0x9c, 0x9c, 0x9f, 0x50, 0xa2, 0x8a, - 0xe9, 0x3c, 0x7, 0xe0, 0x6b, 0xdf, 0x1e, 0x6b, 0x69, 0x65, - 0x6a, 0xc, 0x70, 0x2f, 0xcd, 0x3d, 0xc1, 0x1f, 0x2c, 0x49, - 0xfe, 0x27, 0xb0, 0xa5, 0x4a, 0x94, 0xeb, 0xcd, 0x53, 0xa6, - 0xae, 0xd8, 0x46, 0x2e, 0x6d, 0x46, 0x3b, 0x9e, 0xab, 0xfb, - 0x36, 0xf8, 0x58, 0xa4, 0x57, 0xfa, 0xfc, 0xc8, 0x41, 0x7f, - 0xf4, 0x6b, 0x72, 0x47, 0x51, 0xc1, 0x72, 0x3f, 0x1c, 0xf, - 0xc0, 0xd7, 0xb9, 0x55, 0x3d, 0x23, 0x4a, 0xb6, 0xd0, 0xf4, - 0xcb, 0x6b, 0xb, 0x38, 0xc4, 0x56, 0xd6, 0xf1, 0x88, 0xd1, - 0x47, 0xa0, 0xfe, 0xb5, 0x72, 0xbf, 0x6a, 0xcb, 0xf0, 0x8b, - 0x3, 0x86, 0x85, 0x5, 0xba, 0xdf, 0xd7, 0xa9, 0xf5, 0x94, - 0x29, 0x7b, 0x1a, 0x6a, 0x1, 0x45, 0x14, 0x57, 0xa2, 0x6e, - 0x14, 0x51, 0x45, 00, 0x7c, 0xf7, 0xfb, 0x4a, 0xeb, 0xa6, - 0x7d, 0x67, 0x4c, 0xd2, 0x11, 0xbe, 0x4b, 0x78, 0x8d, 0xc3, - 0x8f, 0xf6, 0x98, 0xe0, 0x7e, 0x41, 0x4f, 0xe7, 0x5e, 0x31, - 0x5d, 0x3f, 0xc4, 0xcd, 0x77, 0xfe, 0x12, 0x3f, 0x1c, 0xea, - 0xf7, 0x81, 0xb7, 0x45, 0xe7, 0x18, 0xa3, 0x3f, 0xec, 0x27, - 0xca, 0x3f, 0x96, 0x7f, 0x1a, 0xe6, 0x2b, 0xf1, 0x3c, 0xcf, - 0x11, 0xf5, 0x9c, 0x65, 0x4a, 0x8b, 0x6b, 0xe9, 0xe8, 0xb4, - 0x47, 0xc9, 0x62, 0x27, 0xed, 0x2a, 0xca, 0x41, 0x45, 0x14, - 0x57, 0x96, 0x73, 0x9b, 0x3e, 0xd, 0xd0, 0xcf, 0x89, 0x3c, - 0x55, 0xa5, 0xe9, 0xb8, 0xca, 0xdc, 0x4e, 0xaa, 0xff, 00, - 0xee, 0xe, 0x5b, 0xf4, 0x6, 0xbe, 0xd1, 0x55, 0xa, 0xa0, - 0x1, 0x80, 0x6, 00, 0xaf, 0x9a, 0xff, 00, 0x67, 0x4d, - 0x18, 0xdf, 0x78, 0xce, 0x7b, 0xf6, 0x5c, 0xc7, 0x63, 0x6e, - 0xc4, 0x1f, 0xf6, 0xdf, 0xe5, 0x1f, 0xa6, 0xea, 0xfa, 0x56, - 0xbf, 0x50, 0xe1, 0x8a, 0x1e, 0xcf, 0xb, 0x2a, 0xaf, 0x79, - 0x3f, 0xc1, 0x7f, 0xc1, 0xb9, 0xf4, 0x19, 0x7c, 0x2d, 0x4d, - 0xcb, 0xb8, 0x51, 0x45, 0x15, 0xf6, 0x7, 0xaa, 0x14, 0x51, - 0x55, 0xb5, 0x1d, 0x42, 0xd, 0x2a, 0xc2, 0xe2, 0xf6, 0xe5, - 0xc4, 0x76, 0xf6, 0xf1, 0xb4, 0xb2, 0x39, 0xec, 0xa0, 0x64, - 0xd2, 0x6d, 0x45, 0x5d, 0x83, 0x76, 0xd4, 0xe3, 0x3e, 0x2d, - 0x7c, 0x47, 0x4f, 0x1, 0x68, 0xaa, 0xb6, 0xfb, 0x5f, 0x55, - 0xba, 0x5, 0x60, 0x43, 0xce, 0xc1, 0xdd, 0xc8, 0xf4, 0x1d, - 0xbd, 0x4d, 0x7c, 0xab, 0x73, 0x73, 0x2d, 0xe5, 0xc4, 0xb3, - 0xcf, 0x23, 0x4b, 0x34, 0xac, 0x5d, 0xe4, 0x73, 0x92, 0xc4, - 0xf5, 0x26, 0xb6, 0x3c, 0x6d, 0xe2, 0xa9, 0xfc, 0x65, 0xe2, - 0x4b, 0xcd, 0x52, 0x72, 0x42, 0xc8, 0xdb, 0x62, 0x8c, 0xff, - 00, 0xcb, 0x38, 0xc7, 0xdd, 0x5f, 0xcb, 0xf5, 0x26, 0xb0, - 0xab, 0xf1, 0xdc, 0xdf, 0x32, 0x96, 0x61, 0x5d, 0xb4, 0xfd, - 0xc5, 0xb2, 0xfd, 0x7e, 0x67, 0xcb, 0x62, 0x6b, 0xba, 0xf3, - 0xf2, 0x5b, 0x5, 0x14, 0x51, 0x5e, 0x11, 0xc6, 0x15, 0xa7, - 0xe1, 0xdf, 0xe, 0x6a, 0x1e, 0x2a, 0xd5, 0x22, 0xb0, 0xd3, - 0x6d, 0xda, 0x79, 0xdc, 0xf6, 0xfb, 0xa8, 0x3f, 0xbc, 0xc7, - 0xb0, 0xf7, 0xa8, 0x34, 0x7d, 0x22, 0xeb, 0x5e, 0xd4, 0xed, - 0xb4, 0xfb, 0x28, 0x8c, 0xd7, 0x57, 0xe, 0x11, 0x10, 0x7a, - 0xfb, 0xfb, 0xe, 0xb5, 0xf5, 0xc7, 0xc3, 0xff, 00, 0x1, - 0xd9, 0x78, 0xb, 0x45, 0x5b, 0x4b, 0x71, 0xbe, 0xe6, 0x40, - 0x1a, 0xe6, 0xe0, 0xf5, 0x91, 0xf1, 0xfa, 0x1, 0xd8, 0x57, - 0xbf, 0x94, 0xe5, 0x52, 0xcc, 0xaa, 0x5d, 0xe9, 0x5, 0xbb, - 0xfd, 0x17, 0xf5, 0xa1, 0xdb, 0x86, 0xc3, 0x3a, 0xf2, 0xd7, - 0x64, 0x71, 0xde, 0xf, 0xfd, 0x9f, 0x34, 0x6d, 0x26, 0x28, - 0xe6, 0xd6, 0x98, 0xea, 0xd7, 0x9d, 0x4c, 0x79, 0x2b, 0xa, - 0x9f, 0x4c, 0x75, 0x6f, 0xc7, 0xf2, 0xaf, 0x50, 0xb2, 0xd3, - 0xed, 0x74, 0xd8, 0x16, 0x1b, 0x4b, 0x68, 0xad, 0xa2, 0x51, - 0x80, 0x91, 0x20, 0x50, 0x3f, 0x1, 0x56, 0x28, 0xaf, 0xd5, - 0x30, 0xd8, 0x2c, 0x3e, 0x12, 0x3c, 0xb4, 0x60, 0x97, 0xe7, - 0xf7, 0x9f, 0x45, 0x4e, 0x94, 0x29, 0x2b, 0x41, 0x58, 0x2a, - 0x2b, 0x8b, 0x58, 0x6e, 0xe2, 0x68, 0xe7, 0x89, 0x26, 0x8d, - 0x86, 0xa, 0x48, 0xa1, 0x81, 0xfc, 0xd, 0x4b, 0x45, 0x76, - 0x34, 0x9e, 0x8c, 0xd8, 0xf2, 0xef, 0x1a, 0xfc, 0x5, 0xd1, - 0x75, 0xe8, 0x65, 0x9f, 0x49, 0x51, 0xa4, 0xea, 0x7, 0x2c, - 0x2, 0x67, 0xc9, 0x73, 0xe8, 0x57, 0xb7, 0xd4, 0x7e, 0x46, - 0xbe, 0x72, 0xd6, 0x74, 0x6b, 0xcf, 0xf, 0xea, 0x73, 0xd8, - 0x5f, 0xc0, 0xd6, 0xf7, 0x50, 0xb6, 0xd7, 0x46, 0xfe, 0x63, - 0xd4, 0x1f, 0x5a, 0xfb, 0x7a, 0xbc, 0x83, 0xf6, 0x87, 0xf0, - 0x7c, 0x5a, 0x87, 0x87, 0xd3, 0x5e, 0x89, 0x31, 0x77, 0x64, - 0x55, 0x25, 0x61, 0xfc, 0x51, 0x31, 0xc7, 0x3f, 0x42, 0x47, - 0xe6, 0x6b, 0xe2, 0xf3, 0xcc, 0x9a, 0x94, 0xa8, 0xcb, 0x13, - 0x87, 0x8f, 0x2c, 0xa3, 0xab, 0x4b, 0x66, 0xba, 0xfc, 0xcf, - 0x23, 0x19, 0x85, 0x8b, 0x8b, 0xa9, 0x5, 0x66, 0x8f, 0x9c, - 0xe8, 0xa2, 0x8a, 0xfc, 0xd0, 0xf0, 0x42, 0x8a, 0x28, 0xa0, - 0xf, 0xa8, 0x7e, 0x5, 0x78, 0xd2, 0x4f, 0x14, 0x78, 0x54, - 0xd9, 0xdd, 0x3e, 0xfb, 0xcd, 0x34, 0xac, 0x25, 0x89, 0xe5, - 0xe3, 0xc7, 0xc8, 0x4f, 0xbf, 0x4, 0x7e, 0x15, 0xe9, 0x55, - 0xf2, 0xd7, 0xc0, 0x5d, 0x71, 0xf4, 0x9f, 0x88, 0x16, 0xd6, - 0xfb, 0xb1, 0xd, 0xfa, 0x34, 0xe, 0x3b, 0x67, 0x1b, 0x94, - 0xfe, 0x63, 0x1f, 0x8d, 0x7d, 0x4b, 0x5f, 0xb0, 0x64, 0x58, - 0xb7, 0x8b, 0xc1, 0x45, 0xc9, 0xeb, 0x1d, 0x1f, 0xcb, 0x6f, - 0xc0, 0xfa, 0x7c, 0x1d, 0x47, 0x52, 0x92, 0xbe, 0xeb, 0x40, - 0xaf, 0x9c, 0x7e, 0x3f, 0xf8, 0xf1, 0xf5, 0x6d, 0x67, 0xfb, - 0x2, 0xd2, 0x42, 0x2c, 0xac, 0x88, 0x33, 0xed, 0x3c, 0x49, - 0x2f, 0xa7, 0xd1, 0x7f, 0x9e, 0x7d, 0x2b, 0xe8, 0x6d, 0x42, - 0xf1, 0x34, 0xfb, 0xb, 0x9b, 0xa9, 0xe, 0x12, 0x8, 0x9a, - 0x46, 0xfa, 00, 0x4f, 0xf4, 0xaf, 0x88, 0xef, 0xef, 0x24, - 0xd4, 0x6f, 0xae, 0x2e, 0xe6, 0x39, 0x96, 0x79, 0x1a, 0x57, - 0x3e, 0xec, 0x72, 0x7f, 0x9d, 0x79, 0x9c, 0x4d, 0x8b, 0x95, - 0x1a, 0x11, 0xa1, 0x7, 0xf1, 0xef, 0xe8, 0x8e, 0x7c, 0xc2, - 0xab, 0x8c, 0x14, 0x17, 0x52, 0xa, 0x28, 0xa2, 0xbf, 0x32, - 0x3c, 00, 0xa2, 0x8a, 0x96, 0xd2, 0xdd, 0xae, 0xee, 0xa1, - 0x81, 0x8, 0xf, 0x2b, 0xac, 0x60, 0x9e, 0x99, 0x27, 0x14, - 0xd2, 0x6d, 0xd9, 0x1, 0x7f, 0x40, 0xf0, 0xc6, 0xab, 0xe2, - 0x8b, 0xaf, 0xb3, 0xe9, 0x76, 0x33, 0x5e, 0x48, 0x3e, 0xf7, - 0x96, 0xbf, 0x2a, 0xff, 00, 0xbc, 0xdd, 0x7, 0xe3, 0x5e, - 0x8d, 0xa7, 0x7e, 0xcd, 0xfe, 0x20, 0xb9, 0x40, 0xd7, 0x57, - 0xb6, 0x56, 0x79, 0xfe, 0x1d, 0xcd, 0x23, 0xf, 0xc8, 0x63, - 0xf5, 0xaf, 0x7a, 0xf0, 0xb7, 0x86, 0xac, 0xfc, 0x27, 0xa1, - 0xda, 0xe9, 0xb6, 0x51, 0x85, 0x8e, 0x25, 0x1, 0x9b, 0x1c, - 0xc8, 0xdd, 0xd8, 0xfb, 0x93, 0x5a, 0xf5, 0xfa, 0x5e, 0x13, - 0x86, 0x70, 0xf0, 0x82, 0x78, 0x96, 0xe5, 0x2f, 0xb9, 0x7f, - 0x99, 0xef, 0xd2, 0xcb, 0xe0, 0x95, 0xea, 0x6a, 0xcf, 0x2, - 0x5f, 0xd9, 0x8e, 0xeb, 0x1f, 0x36, 0xbf, 0x8, 0x3e, 0xd6, - 0xc4, 0xff, 00, 0xec, 0xd4, 0xd7, 0xfd, 0x98, 0xef, 00, - 0xf9, 0x35, 0xe8, 0x9, 0xff, 00, 0x6a, 0xd9, 0x87, 0xfe, - 0xcd, 0x5e, 0xff, 00, 0x45, 0x7a, 0x5f, 0xea, 0xfe, 0x5d, - 0xff, 00, 0x3e, 0xff, 00, 0x17, 0xfe, 0x67, 0x47, 0xd4, - 0xa8, 0x76, 0xfc, 0x59, 0xf3, 0x8d, 0xd7, 0xec, 0xd7, 0xaf, - 0x44, 0x9, 0x83, 0x51, 0xb0, 0x9f, 0xd9, 0x8b, 0xa1, 0xff, - 00, 0xd0, 0x4d, 0x73, 0x3a, 0xb7, 0xc1, 0x7f, 0x17, 0x69, - 0x21, 0x99, 0xb4, 0xa6, 0xba, 0x41, 0xfc, 0x56, 0x8e, 0x24, - 0xfd, 0x7, 0x3f, 0xa5, 0x7d, 0x69, 0x45, 0x73, 0x54, 0xe1, - 0xac, 0xc, 0xd7, 0xb9, 0x78, 0xfc, 0xff, 00, 0xcc, 0xce, - 0x59, 0x7d, 0x17, 0xb5, 0xd1, 0xf0, 0xe5, 0xee, 0x9d, 0x77, - 0xa6, 0xc9, 0xe5, 0xdd, 0xda, 0xcd, 0x6b, 0x27, 0xf7, 0x66, - 0x8c, 0xa1, 0xfc, 0x8d, 0x7a, 0x5f, 0xec, 0xed, 0xa3, 0xb, - 0xff, 00, 0x1b, 0xcb, 0x78, 0xe3, 0x2b, 0x63, 0x6e, 0xce, - 0xa7, 0xd1, 0x9b, 0xe5, 0x1f, 0xa1, 0x6a, 0xfa, 0x3e, 0xff, - 00, 0x4d, 0xb4, 0xd5, 0x6d, 0xda, 0xb, 0xcb, 0x68, 0xae, - 0xa1, 0x61, 0x83, 0x1c, 0xc8, 0x18, 0x1f, 0xc0, 0xd6, 0x4f, - 0x86, 0xfc, 0xd, 0xa3, 0x78, 0x46, 0xea, 0xf6, 0x7d, 0x26, - 0xd3, 0xec, 0x8d, 0x77, 0xb7, 0xcc, 0x55, 0x62, 0x57, 0xe5, - 0xce, 0x30, 0xf, 0x4e, 0xa7, 0xa5, 0x71, 0x61, 0xb8, 0x71, - 0xe1, 0x71, 0x74, 0xeb, 0x29, 0xa9, 0x45, 0x3b, 0xeb, 0xa3, - 0xf2, 0xfc, 0x4c, 0x69, 0xe0, 0x1d, 0x3a, 0x91, 0x95, 0xee, - 0x91, 0xbf, 0x45, 0x14, 0x57, 0xdc, 0x1e, 0xc0, 0x51, 0x45, - 0x14, 00, 0x57, 0x13, 0xf1, 0x6e, 0xe3, 0xc8, 0xf0, 0xa4, - 0xe3, 0xfb, 0xc0, 0xd7, 0x6d, 0x5e, 0x6b, 0xf1, 0xca, 0xe3, - 0xc9, 0xf0, 0xbb, 0xc, 0xe3, 0x2a, 0xd5, 0xc5, 0x8d, 0x97, - 0x2e, 0x1e, 0x6f, 0xc8, 0xe7, 0xc4, 0x3b, 0x52, 0x93, 0xf2, - 0x3e, 0x20, 0xf1, 0x4, 0xbe, 0x65, 0xfd, 0xd3, 0x7a, 0xb9, - 0xaf, 0x9e, 0xfe, 0x34, 0xc4, 0x75, 0x29, 0x6d, 0xec, 0x14, - 0xe0, 0xdd, 0x4f, 0x1c, 00, 0xff, 00, 0xbc, 0xc1, 0x7f, - 0xad, 0x7b, 0xe6, 0xae, 0xfb, 0xa5, 0x98, 0xfa, 0xb1, 0xaf, - 0x12, 0xf1, 0x1d, 0xa7, 0xf6, 0xd7, 0xc5, 0x2f, 0x6, 0xe9, - 0xa3, 0xfe, 0x5e, 0xb5, 0xdb, 0x18, 0x78, 0xf7, 0x9d, 0x5, - 0x7c, 0x1e, 0x4d, 0x1b, 0xd4, 0x47, 0xe2, 0xf4, 0xd7, 0xb4, - 0xcd, 0x28, 0xaf, 0xef, 0x1f, 0xb2, 0xba, 0x6c, 0x1f, 0x65, - 0xd3, 0xed, 0x61, 0xff, 00, 0x9e, 0x71, 0x2a, 0x7e, 0x40, - 0xa, 0x2a, 0xcd, 0x15, 0xfa, 0x49, 0xfb, 0x80, 0x51, 0x45, - 0x14, 00, 0x51, 0x45, 0x21, 0x21, 0x41, 0x24, 0xe0, 0xe, - 0x49, 0xa0, 0xf, 0x9d, 0x7f, 0x6b, 0xdf, 0x1a, 0x2d, 0xb6, - 0x93, 0xa6, 0x78, 0x5e, 0x16, 0x6, 0x5b, 0xa7, 0xfb, 0x5d, - 0xc0, 0xd, 0xc8, 0x45, 0x38, 0x50, 0x47, 0xbb, 0x64, 0xff, - 00, 0xc0, 0x6b, 0xc3, 0xbe, 0x10, 0xf8, 0x59, 0xbc, 0x59, - 0xe3, 0xad, 0x36, 0xcf, 0x69, 0x68, 0x84, 0x81, 0xdf, 0x3, - 0xb0, 0xe6, 0x9d, 0xf1, 0xa3, 0xc6, 0x63, 0xc7, 0x7f, 0x11, - 0xf5, 0x5d, 0x46, 0x27, 0xdf, 0x67, 0x1b, 0x7d, 0x9a, 0xd8, - 0x83, 0x91, 0xe5, 0xa7, 00, 0x8f, 0x62, 0x77, 0x37, 0xe3, - 0x5e, 0xd3, 0xfb, 0x25, 0xf8, 0x3f, 0xca, 0xb7, 0xbe, 0xd7, - 0x66, 0x8c, 0x65, 0x8f, 0x95, 0x13, 0x11, 0xf9, 0xd7, 0xe7, - 0x55, 0x3f, 0xe1, 0x4f, 0x33, 0x51, 0x5a, 0xc6, 0xff, 00, - 0x82, 0xff, 00, 0x3f, 0xd4, 0xfc, 0xe6, 0x2f, 0xfb, 0x53, - 0x35, 0x72, 0xde, 0x29, 0xfe, 0xb, 0xfc, 0xcf, 0xa3, 0x60, - 0x85, 0x6d, 0xe1, 0x8e, 0x24, 0x18, 0x44, 0x50, 0xa0, 0x7b, - 0xa, 0x92, 0x8a, 0x2b, 0xf4, 0x5d, 0x8f, 0xd1, 0x82, 0x8a, - 0x28, 0xa0, 0x2, 0xb3, 0x3c, 0x4d, 0xe2, 0x4d, 0x33, 0xc1, - 0xde, 0x1e, 0xd4, 0x75, 0xcd, 0x66, 0xf2, 0x2d, 0x3f, 0x4a, - 0xd3, 0xe0, 0x7b, 0x9b, 0xab, 0xa9, 0x9b, 0x6a, 0x45, 0x1a, - 0x8c, 0xb3, 0x13, 0xf4, 0x15, 0xa7, 0x5f, 0x1, 0xff, 00, - 0xc1, 0x62, 0x3e, 0x30, 0xc9, 0xe0, 0xdf, 0x81, 0x1a, 0x3f, - 0x82, 0x2c, 0xa7, 0x31, 0xde, 0x78, 0xae, 0xfb, 0xfd, 0x20, - 0x2b, 0x60, 0xfd, 0x92, 0xc, 0x3b, 0xf, 0xa1, 0x73, 0x10, - 0xfa, 0x3, 0x40, 0x1f, 0x9e, 0x9f, 0xb6, 0x97, 0xed, 0x9b, - 0xe2, 0x4f, 0xda, 0xaf, 0xc7, 0x93, 0xb7, 0x9f, 0x36, 0x9b, - 0xe0, 0x8b, 0x9, 0x5e, 0x3d, 0x2b, 0x47, 0x8e, 0x42, 0x11, - 0x90, 0x37, 0x13, 0xcc, 0x3a, 0x34, 0x8c, 00, 0x3c, 0xfd, - 0xde, 0x83, 0xb9, 0x3a, 0x7f, 0x7, 0xbf, 0xe0, 0x9b, 0x1f, - 0x1c, 0x7e, 0x32, 0x68, 0x56, 0xfa, 0xdd, 0x9e, 0x81, 0x6b, - 0xe1, 0xdd, 0x1e, 0xe6, 0x31, 0x35, 0xbd, 0xd7, 0x88, 0x2e, - 0x7e, 0xcc, 0x66, 0x43, 0xc8, 0x65, 0x8c, 0x6, 0x7c, 0x63, - 0x9c, 0x95, 00, 0xd6, 0x6f, 0xfc, 0x13, 0xbb, 0xe1, 0xbe, - 0x87, 0xf1, 0x4b, 0xf6, 0xb4, 0xf0, 0x66, 0x93, 0xe2, 0x25, - 0x82, 0x7d, 0x32, 0xdc, 0xcd, 0xa8, 0x1b, 0x4b, 0x90, 0xa, - 0x5d, 0x3c, 0x31, 0x97, 0x48, 0xf0, 0x7a, 0xfc, 0xc0, 0x36, - 0x3b, 0x85, 0x35, 0xfb, 0x39, 0xfb, 0x62, 0x7c, 0x66, 0xb7, - 0xf8, 0x5, 0xfb, 0x39, 0x78, 0xc3, 0xc5, 0x2, 0x45, 0x86, - 0xf9, 0x2c, 0xcd, 0x96, 0x9a, 0x83, 0x8d, 0xd7, 0x52, 0x8d, - 0x91, 00, 0x3d, 0x89, 0xdd, 0xf4, 0x53, 0x4c, 0x84, 0xaf, - 0xab, 0x3f, 0x9e, 0x6f, 0x16, 0x78, 0x7d, 0xbc, 0x27, 0xe2, - 0x7d, 0x5b, 0x45, 0x7b, 0xcb, 0x6d, 0x41, 0xf4, 0xeb, 0xa9, - 0x2d, 0x5a, 0xea, 0xcd, 0x8b, 0x43, 0x29, 0x46, 0x2a, 0x59, - 0x9, 00, 0x95, 0x24, 0x70, 0x70, 0x2b, 0xf7, 0xe7, 0xf6, - 0x3, 0xf8, 0x22, 0x3e, 0x5, 0x7e, 0xcc, 0x3e, 0x14, 0xd2, - 0x67, 0x8b, 0xcb, 0xd6, 0x35, 0x38, 0xbf, 0xb6, 0x35, 0x1c, - 0x8f, 0x9b, 0xce, 0x9c, 0x6, 0xda, 0x7f, 0xdd, 0x4d, 0x89, - 0xff, 00, 0x1, 0xaf, 0xc5, 0x9f, 0xd8, 0xf3, 0xe0, 0xb4, - 0xbf, 0xb4, 0xf, 0xed, 0x17, 0xe1, 0xf, 0xa, 0x3a, 0x79, - 0xb6, 0x12, 0x5d, 0xb, 0xdd, 0x49, 0x98, 0x64, 0xb, 0x58, - 0xbf, 0x79, 0x2e, 0x7f, 0xde, 00, 0x27, 0xd5, 0xc5, 0x7e, - 0xd9, 0xfe, 0xd9, 0x7f, 0xb4, 0x8e, 0x8d, 0xfb, 0x30, 0x7c, - 0xf, 0xd5, 0xf5, 0x56, 0xbb, 0x82, 0x1f, 0x11, 0x5d, 0x5b, - 0x3d, 0x9e, 0x83, 0xa7, 0xe4, 0x6f, 0x9a, 0xe0, 0xae, 0xd5, - 0x60, 0xbd, 0x76, 0x26, 0x43, 0x31, 0xec, 0x6, 0x3a, 0x91, - 0x43, 0x5, 0xdc, 0xfc, 0x4a, 0xfd, 0xb3, 0x75, 0xfb, 0x5f, - 0x13, 0x7e, 0xd5, 0x7f, 0x14, 0xf5, 0x1b, 0x26, 0x57, 0xb5, - 0x93, 0x5e, 0xb9, 0x44, 0x74, 0xe8, 0xdb, 0x1b, 0x61, 0x3f, - 0x89, 0x52, 0x6b, 0xf5, 0x7f, 0xfe, 0x9, 0x19, 0xa1, 0x49, - 0xa4, 0xfe, 0xc8, 0x36, 0x77, 0x72, 0x2e, 0xdf, 0xed, 0x3d, - 0x66, 0xf6, 0xe5, 0x33, 0xdd, 0x43, 0x2c, 0x59, 0xfc, 0xe3, - 0x6a, 0xfc, 0x50, 0xd1, 0xf4, 0x9d, 0x57, 0xc7, 0x5e, 0x2a, - 0xb3, 0xd3, 0x6c, 0xd2, 0x4d, 0x43, 0x5a, 0xd5, 0xef, 0x12, - 0x8, 0x97, 0xab, 0xcd, 0x3c, 0xaf, 0x81, 0xf8, 0x96, 0x6a, - 0xfe, 0x91, 0x3e, 0x2, 0xfc, 0x2c, 0xb5, 0xf8, 0x27, 0xf0, - 0x73, 0xc2, 0x3e, 0x8, 0xb4, 0xda, 0x53, 0x46, 0xd3, 0xe3, - 0xb7, 0x92, 0x45, 0x1c, 0x49, 0x2e, 0x37, 0x4a, 0xff, 00, - 0xf0, 0x27, 0x2c, 0x7f, 0x1a, 0x18, 0x2d, 0xee, 0x77, 0x53, - 0xcc, 0x96, 0xd0, 0xc9, 0x34, 0x8c, 0x12, 0x38, 0xd4, 0xb3, - 0x31, 0xe8, 00, 0x19, 0x26, 0xbe, 0x2c, 0xf1, 0x46, 0xb5, - 0x27, 0x88, 0xfc, 0x45, 0xa8, 0xea, 0x52, 0x12, 0x4d, 0xcc, - 0xed, 0x20, 0xcf, 0x65, 0xcf, 0xca, 0x3f, 0x1, 0x81, 0x5f, - 0x4a, 0xfc, 0x73, 0xf1, 0x11, 0xd0, 0x7c, 0x3, 0x75, 0x1c, - 0x6f, 0xb2, 0xe2, 0xf9, 0x85, 0xaa, 0x63, 0xae, 0xf, 0x2f, - 0xff, 00, 0x8e, 0x82, 0x3f, 0x1a, 0xf9, 0x5a, 0xbf, 0x38, - 0xe2, 0x8c, 0x4f, 0x35, 0x48, 0x61, 0x97, 0x4d, 0x5f, 0xcf, - 0x6f, 0xeb, 0xcc, 0xf1, 0x33, 0x1a, 0x97, 0x92, 0xa6, 0xba, - 0x5, 0x14, 0x51, 0x5f, 0xa, 0x79, 0x1, 0x45, 0x14, 0x50, - 0x1, 0x46, 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa2, 0x80, 0xa, - 0x7c, 0x10, 0x49, 0x73, 0x32, 0xc5, 0xc, 0x6f, 0x2c, 0xae, - 0x70, 0xa8, 0x8a, 0x59, 0x89, 0xf6, 0x2, 0xb4, 0x3c, 0x3f, - 0xa9, 0xd9, 0xe9, 0x5a, 0x82, 0xcd, 0x7d, 0xa5, 0xc3, 0xab, - 0x5b, 0xff, 00, 0x14, 0x12, 0xc8, 0xc9, 0xf9, 0x15, 0x3d, - 0x7e, 0xb9, 0xaf, 0xa9, 0xbe, 0x1a, 0x5c, 0xf8, 0x5f, 0x58, - 0xd1, 0x56, 0xff, 00, 0xc3, 0xda, 0x7d, 0xbd, 0x90, 0xce, - 0xc9, 0x63, 0x58, 0x82, 0xc9, 0x1b, 0xe3, 0xee, 0xb1, 0xea, - 0x7e, 0xb9, 0xe6, 0xbd, 0xdc, 0xb3, 0x2c, 0x8e, 0x63, 0x2e, - 0x5f, 0x6a, 0xa2, 0xfb, 0x6b, 0x7f, 0xf2, 0xfc, 0x4e, 0xbc, - 0x3e, 0x1d, 0x57, 0x76, 0xe6, 0xb1, 0xe2, 0xbe, 0x9, 0xf8, - 0xd, 0xad, 0x78, 0x86, 0x54, 0x9b, 0x55, 0x56, 0xd1, 0xec, - 0x3a, 0x9f, 0x30, 0x7e, 0xf9, 0xc7, 0xa0, 0x5e, 0xdf, 0x53, - 0xf9, 0x1a, 0xfa, 0x1f, 0xc3, 0x5e, 0x18, 0xd3, 0xbc, 0x25, - 0xa5, 0xc7, 0x61, 0xa6, 0xc0, 0x20, 0x81, 0x79, 0x27, 0xab, - 0x39, 0xee, 0xcc, 0x7b, 0x9a, 0xd5, 0xa2, 0xbf, 0x4b, 0xc0, - 0x65, 0x58, 0x6c, 0xbd, 0x5e, 0x92, 0xbc, 0xbb, 0xbd, 0xff, - 00, 0xe0, 0x1f, 0x41, 0x47, 0xd, 0x4e, 0x87, 0xc3, 0xbf, - 0x70, 0xa2, 0x8a, 0x2b, 0xd8, 0x3a, 0x82, 0x8a, 0x28, 0xa0, - 0x2, 0xb1, 0x3c, 0x69, 0xac, 0xaf, 0x87, 0xbc, 0x27, 0xaa, - 0xea, 0x5, 0xb6, 0x98, 0x2d, 0xdc, 0xa7, 0xfb, 0xe4, 0x61, - 0x47, 0xe6, 0x45, 0x6d, 0xd7, 0x91, 0xfe, 0xd1, 0xfa, 0xd9, - 0xb2, 0xf0, 0xa5, 0x9e, 0x9c, 0x8d, 0x87, 0xbd, 0xb8, 0xcb, - 0xf, 0x54, 0x41, 0x93, 0xff, 00, 0x8f, 0x15, 0xaf, 0x3f, - 0x30, 0xaf, 0xf5, 0x5c, 0x2d, 0x4a, 0xdd, 0x97, 0xe3, 0xd3, - 0xf1, 0x30, 0xaf, 0x3f, 0x67, 0x4e, 0x52, 0x3e, 0x70, 0x24, - 0x93, 0x93, 0xc9, 0xa2, 0x8a, 0x2b, 0xf0, 0xf3, 0xe4, 0x42, - 0x8a, 0x29, 0x42, 0x96, 0x20, 0x1, 0x92, 0x78, 0x2, 0x80, - 0x3e, 0x93, 0xfd, 0x9c, 0xf4, 0x71, 0x65, 0xe0, 0xcb, 0x8b, - 0xe6, 0x5c, 0x49, 0x7b, 0x72, 0xc4, 0x1f, 0xf6, 0x13, 0xe5, - 0x1f, 0xae, 0xea, 0xf5, 0x7a, 0xc4, 0xf0, 0x5e, 0x88, 0x3c, - 0x39, 0xe1, 0x4d, 0x2f, 0x4e, 00, 0x6, 0x82, 0x5, 0xf, - 0x8e, 0xec, 0x79, 0x63, 0xf9, 0x93, 0x5b, 0x75, 0xfb, 0x8e, - 0x2, 0x87, 0xd5, 0xb0, 0xb4, 0xe9, 0x76, 0x4b, 0xef, 0xeb, - 0xf8, 0x9f, 0x5d, 0x42, 0x1e, 0xce, 0x9c, 0x62, 0x14, 0x51, - 0x45, 0x77, 0x9b, 0x85, 0x79, 0x1f, 0xed, 0x15, 0xe2, 0x86, - 0xd3, 0x3c, 0x35, 0x6d, 0xa4, 0x42, 0xfb, 0x65, 0xd4, 0x1f, - 0x32, 0x1, 0xd7, 0xca, 0x5c, 0x13, 0xf9, 0x9c, 0x7e, 0x46, - 0xbd, 0x72, 0xbe, 0x51, 0xf8, 0xdd, 0xae, 0xb6, 0xb7, 0xf1, - 0xb, 0x50, 0x4d, 0xdb, 0xa1, 0xb3, 0xc5, 0xac, 0x63, 0x3d, - 0x36, 0x8f, 0x9b, 0xff, 00, 0x1e, 0x2d, 0x5f, 0x37, 0x9f, - 0xe2, 0x9e, 0x1b, 0x5, 0x25, 0x1d, 0xe5, 0xa7, 0xf9, 0xfe, - 0x7, 0x6, 0x36, 0xa7, 0x25, 0x16, 0x97, 0x5d, 0xe, 0xa, - 0x8a, 0x28, 0xaf, 0xc8, 0xcf, 0x99, 0xa, 0x28, 0xa9, 0x2d, - 0xe0, 0x7b, 0xab, 0x88, 0xa1, 0x88, 0x6e, 0x92, 0x46, 0x8, - 0xab, 0xea, 0x49, 0xc0, 0x14, 0xd2, 0xbe, 0x88, 0xf, 0x79, - 0xfd, 0x9c, 0xfc, 0x18, 0xb1, 0x5a, 0x5c, 0x78, 0x92, 0xe1, - 0x33, 0x24, 0xa5, 0xa0, 0xb6, 0xc8, 0xe8, 0xa3, 0xef, 0x30, - 0xfa, 0x9e, 0x3f, 0x3, 0xeb, 0x5e, 0xdd, 0x59, 0xbe, 0x1b, - 0xd1, 0x62, 0xf0, 0xee, 0x83, 0x61, 0xa6, 0xc2, 00, 0x4b, - 0x68, 0x56, 0x3c, 0x8e, 0xe4, 0xe, 0x4f, 0xe2, 0x72, 0x7f, - 0x1a, 0xd2, 0xaf, 0xdb, 0xb2, 0xfc, 0x2a, 0xc1, 0x61, 0xa1, - 0x45, 0x6e, 0x96, 0xbe, 0xbd, 0x4f, 0xae, 0xa1, 0x4d, 0x52, - 0xa6, 0xa2, 0x14, 0x51, 0x45, 0x7a, 0x26, 0xe1, 0x45, 0x14, - 0x50, 0x1, 0x59, 0x1e, 0x2e, 0xd3, 0xd7, 0x56, 0xf0, 0xb6, - 0xad, 0x66, 0xe3, 0x2b, 0x35, 0xac, 0x8b, 0xf8, 0xed, 0x38, - 0xfd, 0x6b, 0x5e, 0xaa, 0x6a, 0xf2, 0x88, 0x34, 0x9b, 0xd9, - 0x1b, 0xee, 0xa4, 0xe, 0xc7, 0xf0, 0x53, 0x59, 0xd5, 0x4a, - 0x50, 0x92, 0x7b, 0x59, 0x93, 0x25, 0x78, 0xb4, 0xcf, 0x87, - 0xe8, 0xa2, 0x8a, 0xfc, 0xc, 0xf8, 0xc0, 0xa2, 0x8a, 0x28, - 0x3, 0x7b, 0xc0, 0x57, 0x26, 0xd3, 0xc6, 0xda, 0x14, 0xa0, - 0xe3, 0x17, 0xb0, 0x8f, 0xc0, 0xb8, 0x7, 0xf9, 0xd7, 0xd9, - 0xb5, 0xf1, 0x67, 0x83, 0x62, 0x33, 0x78, 0xbb, 0x44, 0x45, - 0xea, 0xd7, 0xb0, 0x8f, 0xfc, 0x7c, 0x57, 0xda, 0x75, 0xfa, - 0x47, 0xa, 0xb7, 0xec, 0x6a, 0xae, 0x97, 0x5f, 0x91, 0xee, - 0xe5, 0xbf, 0xc, 0x8c, 0x3f, 0x1c, 0x86, 0x6f, 0x5, 0xeb, - 0xa1, 0x33, 0xbb, 0xec, 0x33, 0x63, 0x1f, 0xee, 0x1a, 0xf8, - 0xc2, 0xbe, 0xe6, 0xb9, 0xb7, 0x4b, 0xbb, 0x69, 0x60, 0x90, - 0x6e, 0x8e, 0x54, 0x28, 0xc0, 0xf7, 0x4, 0x60, 0xd7, 0xc5, - 0x9e, 0x25, 0xd0, 0xa7, 0xf0, 0xd6, 0xbd, 0x7d, 0xa6, 0x5c, - 0x29, 0x59, 0x2d, 0xe5, 0x28, 0x9, 0x1f, 0x79, 0x7f, 0x85, - 0xbf, 0x11, 0x83, 0xf8, 0xd7, 0x37, 0x15, 0x52, 0x95, 0xe9, - 0x55, 0xe9, 0xaa, 0x23, 0x32, 0x8b, 0xbc, 0x64, 0x66, 0x51, - 0x45, 0x15, 0xf0, 0x7, 0x8a, 0x14, 0xaa, 0xc5, 0x18, 0x32, - 0x92, 0x18, 0x1c, 0x82, 0x3b, 0x52, 0x51, 0x40, 0x1f, 0x49, - 0xfc, 0x39, 0xf8, 0xe5, 0xa6, 0x6b, 0x16, 0x30, 0x59, 0x6b, - 0x93, 0xae, 0x9f, 0xa9, 0x46, 0xa1, 0xc, 0xf2, 0x9c, 0x45, - 0x37, 0x6c, 0xe7, 0xf8, 0x4f, 0xa8, 0x3f, 0x85, 0x7a, 0xac, - 0x53, 0x47, 0x3c, 0x6b, 0x24, 0x4e, 0xb2, 0x46, 0xc3, 0x21, - 0x90, 0xe4, 0x11, 0xf5, 0xaf, 0x85, 0xeb, 0x63, 0x43, 0xf1, - 0x86, 0xb7, 0xe1, 0xa3, 0xff, 00, 0x12, 0xcd, 0x4e, 0xe6, - 0xd1, 0x7f, 0xe7, 0x9a, 0x3e, 0x50, 0xff, 00, 0xc0, 0x4f, - 0x1f, 0xa5, 0x7d, 0xbe, 0xb, 0x89, 0xaa, 0x52, 0x8a, 0x86, - 0x26, 0x3c, 0xd6, 0xea, 0xb7, 0xff, 00, 0x83, 0xf8, 0x1e, - 0xbd, 0x2c, 0xc2, 0x51, 0x56, 0xa8, 0xae, 0x7d, 0xa7, 0x45, - 0x7c, 0xdf, 0xa0, 0xfe, 0xd1, 0xda, 0xed, 0x8e, 0xd4, 0xd4, - 0xed, 0x2d, 0xf5, 0x38, 0xc7, 0x56, 0x5f, 0xdd, 0x49, 0xf9, - 0x8c, 0x8f, 0xd2, 0xbb, 0xed, 0x13, 0xf6, 0x87, 0xf0, 0xd6, - 0xa4, 0xc1, 0x2f, 0x52, 0xe7, 0x4b, 0x73, 0xfc, 0x52, 0xa6, - 0xf4, 0xfc, 0xd7, 0x27, 0xf3, 0x15, 0xf5, 0x74, 0x33, 0xcc, - 0x5, 0x7f, 0xf9, 0x79, 0xca, 0xfc, 0xf4, 0xff, 00, 0x81, - 0xf8, 0x9e, 0x8c, 0x31, 0x94, 0x67, 0xd6, 0xde, 0xa7, 0xa9, - 0x51, 0x59, 0xba, 0x3f, 0x89, 0x34, 0xaf, 0x10, 0x45, 0xe6, - 0x69, 0xba, 0x85, 0xbd, 0xea, 0xf7, 0xf2, 0x64, 0xc, 0x47, - 0xd4, 0x75, 0x15, 0xa5, 0x5e, 0xe4, 0x65, 0x19, 0xae, 0x68, - 0xbb, 0xa3, 0xb1, 0x34, 0xd5, 0xd0, 0x51, 0x45, 0x15, 0x43, - 0xa, 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa2, 0x80, 0xa, 0xf2, - 0xf, 0xda, 0x1e, 0xeb, 0xca, 0xd0, 0x36, 0xe7, 0xfe, 0x59, - 0x9a, 0xf5, 0xfa, 0xf0, 0x6f, 0xda, 0x5e, 0xf8, 0x47, 0x61, - 0xe5, 0x67, 0x91, 0x1d, 0x79, 0x19, 0xb4, 0xb9, 0x30, 0x75, - 0x1f, 0x91, 0xc1, 0x8e, 0x97, 0x2e, 0x1e, 0x4c, 0xf9, 0x7, - 0x53, 0x6f, 0x95, 0xcf, 0xb9, 0xaf, 0x34, 0xf0, 0x2d, 0x92, - 0xeb, 0x9f, 0xb5, 0x7, 0xc3, 0x3b, 0x26, 0x1b, 0x81, 0xd7, - 0xad, 0xe4, 0xc7, 0xfb, 0x84, 0xbf, 0xfe, 0xcb, 0x5e, 0x8d, - 0xaa, 0x36, 0x22, 0x63, 0xec, 0x6b, 0x94, 0xfd, 0x9b, 0xec, - 0xff, 00, 0xb6, 0x3f, 0x6c, 0xbf, 0x87, 0xf1, 0xe3, 0x70, - 0x86, 0x7b, 0x9b, 0x93, 0xed, 0xb2, 0xda, 0x53, 0x9f, 0xcf, - 0x15, 0xf2, 0xd9, 0x24, 0x7d, 0xf3, 0xf2, 0x3c, 0xb1, 0x7b, - 0x4c, 0xe2, 0x97, 0x95, 0xd9, 0xfa, 0xcf, 0x45, 0x14, 0x57, - 0xe8, 0x7, 0xed, 0x61, 0x45, 0x14, 0x50, 0x1, 0x5c, 0x3f, - 0xc6, 0x8f, 0x18, 0xf, 0x4, 0x7c, 0x37, 0xd6, 0x35, 0x5, - 0x62, 0xb7, 0xf, 0x17, 0xd9, 0xad, 0xf6, 0xf5, 0xf3, 0x1f, - 0xe5, 0x53, 0xf8, 0x64, 0x9f, 0xc2, 0xbb, 0x8a, 0xf9, 0x5f, - 0xf6, 0xbf, 0xf1, 0x87, 0xda, 0xb5, 0x6d, 0x2b, 0xc3, 0x31, - 0x1f, 0x92, 0xd9, 0x3e, 0xd9, 0x39, 0xe7, 0xef, 0x36, 0x42, - 0x8f, 0xcb, 0x27, 0xf1, 0xaf, 0x37, 0x31, 0xc4, 0x7d, 0x5b, - 0xd, 0x39, 0xf5, 0xd9, 0x7a, 0xb3, 0xca, 0xcd, 0x31, 0x3f, - 0x54, 0xc2, 0x4e, 0xa2, 0xdf, 0x65, 0xea, 0xff, 00, 0xab, - 0x9f, 0x3e, 0x58, 0x5a, 0xbd, 0xe5, 0xd4, 0x30, 0x46, 0x37, - 0x3b, 0xb0, 0x50, 0x7, 0xa9, 0xaf, 0xd0, 0x3f, 0x86, 0x9e, - 0x19, 0x8f, 0xc2, 0x7e, 0xc, 0xd3, 0x6c, 0x11, 0x2, 0xb8, - 0x88, 0x34, 0x9e, 0xec, 0x47, 0x35, 0xf2, 0x27, 0xec, 0xf7, - 0xe1, 0x13, 0xe2, 0x9f, 0x1f, 0x5a, 0x97, 0x5c, 0xdb, 0xdb, - 0x7e, 0xf5, 0xcf, 0xd3, 0xa5, 0x7d, 0xc4, 0xa0, 0x28, 00, - 0x70, 0x7, 0x15, 0xf3, 0xdc, 0x3d, 0x87, 0xd2, 0x78, 0x87, - 0xe8, 0xbf, 0x53, 0xc2, 0xe1, 0xcc, 0x37, 0x25, 0x39, 0x57, - 0x7d, 0x74, 0x42, 0xd1, 0x45, 0x15, 0xf6, 0x67, 0xd9, 0x5, - 0x14, 0x51, 0x40, 0x5, 0x7e, 0x55, 0x7f, 0xc1, 0x6d, 0x3c, - 0x2b, 0xa8, 0x36, 0xa3, 0xf0, 0xc7, 0xc4, 0x81, 0x19, 0xb4, - 0xa5, 0x8a, 0xef, 0x4f, 0x67, 0x1d, 0x12, 0x62, 0x52, 0x40, - 0xf, 0xd5, 0x43, 0x7f, 0xdf, 0x26, 0xbf, 0x52, 0xb5, 0x4d, - 0x5e, 0xc7, 0x43, 0xb3, 0x6b, 0xbd, 0x46, 0xf6, 0xde, 0xc2, - 0xd5, 0x48, 0x56, 0x9e, 0xea, 0x55, 0x8d, 0x1, 0x27, 00, - 0x16, 0x62, 0x7, 0x24, 0x81, 0x5e, 0x73, 0xf1, 0xc7, 0xe1, - 0xf, 0x82, 0xff, 00, 0x69, 0xef, 0x86, 0x1a, 0x8f, 0x83, - 0x35, 0xeb, 0x98, 0xee, 0xf4, 0xeb, 0xbd, 0xb2, 0xc5, 0x73, - 0x63, 0x3a, 0x99, 0x6d, 0xa6, 0x5e, 0x52, 0x54, 0x23, 0x3c, - 0x83, 0xdb, 0xa1, 0x4, 0x83, 0xc1, 0xa0, 0x4f, 0x53, 0xf9, - 0xcd, 0xf0, 0xaf, 0x8a, 0xb5, 0x8f, 0x3, 0xf8, 0x8b, 0x4f, - 0xd7, 0xb4, 0xd, 0x46, 0xe3, 0x49, 0xd6, 0x74, 0xf9, 0x44, - 0xf6, 0xb7, 0xb6, 0xaf, 0xb6, 0x48, 0x9c, 0x74, 0x20, 0xfe, - 0x9e, 0xe0, 0x90, 0x6b, 0xd8, 0x7e, 0x39, 0x7e, 0xda, 0xdf, - 0x14, 0xbf, 0x68, 0xbf, 0x1, 0x68, 0xfe, 0x13, 0xf1, 0xce, - 0xa9, 0x69, 0xa9, 0x58, 0x69, 0x97, 0x42, 0xf1, 0x27, 0x86, - 0xd1, 0x60, 0x9a, 0x69, 0x2, 0x32, 0x3, 0x29, 0x5c, 0x2b, - 0x60, 0x33, 0x74, 0x51, 0xc9, 0xaf, 0x44, 0xf8, 0xd9, 0xff, - 00, 0x4, 0xbf, 0xf8, 0xd9, 0xf0, 0xa2, 0xfa, 0xea, 0x5d, - 0x27, 0x44, 0x1e, 0x39, 0xd0, 0x91, 0xd8, 0xc5, 0x7d, 0xa1, - 0xb6, 0xf9, 0x76, 0x67, 0x82, 0xf0, 0x1c, 0x38, 0x6c, 0x76, - 0x50, 0xc3, 0xde, 0xbe, 0x79, 0xb8, 0xf8, 0x25, 0xf1, 0x12, - 0xd2, 0xe4, 0xdb, 0xcd, 0xe0, 0x3f, 0x12, 0xc5, 0x38, 0x38, - 0xf2, 0xdb, 0x48, 0xb8, 0xd, 0x9f, 0xa6, 0xca, 0xa2, 0x35, - 0x3a, 0x5f, 0xd9, 0xdb, 0xf6, 0x95, 0xf1, 0x47, 0xec, 0xc5, - 0xe2, 0xd, 0x5f, 0x5f, 0xf0, 0x7d, 0xa6, 0x96, 0xfa, 0xe5, - 0xfd, 0x9f, 0xd8, 0x56, 0xf7, 0x51, 0xb7, 0x33, 0x1b, 0x68, - 0xcb, 0x6, 0x6f, 0x2c, 0x6e, 0x3, 0x2c, 0x55, 0x73, 0x9c, - 0xfd, 0xd1, 0x5c, 0xdf, 0xc5, 0x9f, 0x8d, 0x1e, 0x35, 0xf8, - 0xe5, 0xe2, 0x63, 0xaf, 0xf8, 0xe3, 0xc4, 0x37, 0x7e, 0x20, - 0xd4, 0x82, 0x94, 0x8d, 0xee, 0x8, 0x9, 0xa, 0x67, 0x3b, - 0x23, 0x45, 0x1, 0x51, 0x7d, 0x94, 0xa, 0xf4, 0xdf, 0x86, - 0x7f, 0xb0, 0x3f, 0xc7, 0x6f, 0x8a, 0x97, 0x31, 0x2e, 0x99, - 0xe0, 0xd, 0x47, 0x4c, 0xb5, 0x7e, 0xb7, 0xba, 0xda, 0xfd, - 0x86, 0x15, 0x1e, 0xa7, 0xcc, 0xc3, 0x1f, 0xc1, 0x4d, 0x7e, - 0x8b, 0xfe, 0xc9, 0xff, 00, 0xf0, 0x4a, 0xf, 0xb, 0xfc, - 0x27, 0xbd, 0xb2, 0xf1, 0x37, 0xc4, 0xbb, 0xb8, 0x3c, 0x65, - 0xe2, 0x6b, 0x79, 0x16, 0x6b, 0x7d, 0x3e, 0x10, 0x46, 0x9d, - 0x6a, 0xe3, 0x90, 0x48, 0x60, 0xc, 0xcc, 0xf, 0x76, 0x1, - 0x78, 0x1f, 0x2f, 0x7a, 0x2, 0xcc, 0xf3, 0xaf, 0xf8, 0x25, - 0x8f, 0xec, 0x3b, 0x79, 0xa4, 0xdd, 0xda, 0xfc, 0x65, 0xf1, - 0xde, 0x9b, 0xf6, 0x79, 0xc, 0x64, 0xf8, 0x73, 0x4d, 0xba, - 0x8c, 0x89, 0x13, 0x3c, 0x1b, 0xb7, 0x53, 0xd3, 0x23, 0x21, - 0x7, 0x5e, 0x4b, 0x7a, 0x57, 0xea, 0x25, 0x22, 0xa8, 0x45, - 0xa, 0xa0, 0x2a, 0x81, 0x80, 00, 0xc0, 0x2, 0xa2, 0xbc, - 0xbb, 0x8e, 0xc6, 0xd2, 0x6b, 0x99, 0x9b, 0x64, 0x30, 0xa1, - 0x91, 0xd8, 0xf6, 00, 0x64, 0xd4, 0xb7, 0x6d, 0x59, 0x7b, - 0x23, 0xe7, 0x5f, 0xda, 0x33, 0xc4, 0x23, 0x50, 0xf1, 0x4d, - 0xae, 0x97, 0x1b, 0xe6, 0x3b, 0x8, 0xb2, 0xe0, 0x1e, 0x3c, - 0xc7, 0xe4, 0xff, 00, 0xe3, 0xa1, 0x7f, 0x3a, 0xf2, 0x4a, - 0xbf, 0xaf, 0x6a, 0xb2, 0x6b, 0xba, 0xd5, 0xf6, 0xa1, 0x29, - 0x26, 0x4b, 0x99, 0x9e, 0x53, 0x9e, 0xd9, 0x39, 0x3, 0xf0, - 0x1c, 0x55, 0xa, 0xfc, 0x3b, 0x1f, 0x89, 0x78, 0xbc, 0x4c, - 0xeb, 0x77, 0x7f, 0x87, 0x4f, 0xc0, 0xf9, 0x1a, 0xd5, 0x3d, - 0xad, 0x47, 0x3e, 0xe1, 0x45, 0x14, 0x57, 0x1, 0x89, 0xdd, - 0x7c, 0x28, 0xf8, 0x72, 0x9f, 0x10, 0xf5, 0x4b, 0xc8, 0xae, - 0x66, 0x96, 0xda, 0xce, 0xda, 0x20, 0xcd, 0x24, 0x20, 0x67, - 0x79, 0x3f, 0x28, 0xe4, 0x63, 0xb3, 0x7e, 0x55, 0xe8, 0xf3, - 0x7e, 0xcc, 0x96, 0x4, 0x1f, 0x27, 0x5c, 0xb9, 0x43, 0xdb, - 0x7c, 0x2a, 0xdf, 0xc8, 0x8a, 0xde, 0xf8, 0x1, 0xe1, 0xd6, - 0xd1, 0xbc, 0xe, 0x2e, 0xe5, 0x5d, 0xb3, 0x6a, 0x32, 0x99, - 0xf9, 0xeb, 0xb0, 0x70, 0xbf, 0xc8, 0x9f, 0xc6, 0xbd, 0x32, - 0xbf, 0x50, 0xcb, 0x32, 0x5c, 0x2c, 0xf0, 0x70, 0x96, 0x22, - 0x9d, 0xe4, 0xf5, 0xeb, 0xd7, 0x6f, 0xc0, 0xfa, 0x1c, 0x3e, - 0x12, 0x9b, 0xa4, 0x9c, 0xd6, 0xac, 0xf9, 0xa7, 0xc5, 0x1f, - 0xb3, 0xd6, 0xb7, 0xa2, 0x59, 0xc9, 0x75, 0xa7, 0xdc, 0xc7, - 0xab, 0xa4, 0x63, 0x2d, 0x14, 0x68, 0x52, 0x5c, 0x7b, 0x2e, - 0x48, 0x3f, 0x9e, 0x6b, 0xca, 0xd9, 0x4a, 0xb1, 0x56, 0x4, - 0x10, 0x70, 0x41, 0xea, 0x2b, 0xee, 0xaa, 0xf9, 0x77, 0xe3, - 0xd7, 0x85, 0xe2, 0xf0, 0xff, 00, 0x8d, 0x3e, 0xd3, 0x6c, - 0x81, 0x20, 0xd4, 0x63, 0xfb, 0x41, 0x51, 0xd0, 0x49, 0x92, - 0x1f, 0x1f, 0xa1, 0xfc, 0x6b, 0xc5, 0xcf, 0x32, 0x5a, 0x58, - 0x3a, 0x4b, 0x11, 0x87, 0xd1, 0x6c, 0xd6, 0xff, 00, 0x33, - 0x93, 0x17, 0x84, 0x8d, 0x28, 0xf3, 0xc3, 0x63, 0xcd, 0xa8, - 0xa2, 0x8a, 0xf8, 0x93, 0xc9, 0xa, 0xf5, 0xdf, 0xd9, 0xbf, - 0x5b, 0x7b, 0x5f, 0x14, 0xde, 0xe9, 0x85, 0xbf, 0x73, 0x77, - 0x6f, 0xe6, 0x5, 0xff, 00, 0x6d, 0xf, 0x1f, 0xa1, 0x6a, - 0xf2, 0x2a, 0xed, 0xbe, 0xc, 0x5d, 0x7d, 0x93, 0xe2, 0x5e, - 0x8a, 0x73, 0x80, 0xee, 0xf1, 0x9f, 0xc5, 0x18, 0xf, 0xd7, - 0x15, 0xea, 0x65, 0x75, 0x5d, 0x1c, 0x6d, 0x29, 0x2e, 0xe9, - 0x7d, 0xfa, 0x1d, 0x18, 0x79, 0x72, 0xd6, 0x8b, 0xf3, 0x3e, - 0xb5, 0xa2, 0x8a, 0x2b, 0xf6, 0xc3, 0xeb, 0x42, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0xbe, 0x61, 0xfd, 0xa0, - 0xb5, 0xef, 0xed, 0x5f, 0x1d, 0x1b, 0x35, 0x6c, 0xc5, 0xa7, - 0xc2, 0xb1, 0x63, 0xfd, 0xb6, 0xf9, 0x9b, 0xf9, 0xa8, 0xfc, - 0x2b, 0xe9, 0xa9, 0xe7, 0x4b, 0x68, 0x24, 0x9a, 0x43, 0xb6, - 0x38, 0xd4, 0xbb, 0x13, 0xd8, 0x1, 0x93, 0x5f, 0x14, 0xf8, - 0x8f, 0x57, 0x6d, 0x7b, 0x5e, 0xd4, 0x35, 0x17, 0xce, 0x6e, - 0xa7, 0x79, 0x70, 0x7b, 0x2, 0x78, 0x1f, 0x96, 0x2b, 0xe3, - 0x38, 0x9f, 0x11, 0xc9, 0x86, 0x85, 0x15, 0xf6, 0x9f, 0xe0, - 0xbf, 0xe0, 0xd8, 0xf2, 0x73, 0x19, 0xda, 0xa, 0x1d, 0xcc, - 0xea, 0x28, 0xa2, 0xbf, 0x32, 0x3c, 00, 0xae, 0x8f, 0xe1, - 0xd6, 0x8c, 0x75, 0xff, 00, 0x1b, 0xe8, 0xd6, 0x7b, 0x77, - 0x23, 0x5c, 0x2b, 0xb8, 0xc7, 0xf0, 0x2f, 0xcc, 0xdf, 0xa0, - 0x35, 0xce, 0x57, 0xb0, 0x7e, 0xcd, 0x9a, 0x3f, 0xda, 0x7c, - 0x49, 0xa9, 0x6a, 0x2c, 0x32, 0xb6, 0xb6, 0xe2, 0x35, 0x3f, - 0xed, 0x39, 0xff, 00, 0x5, 0x3f, 0x9d, 0x7a, 0x59, 0x6d, - 0xf, 0xac, 0xe3, 0x29, 0xd2, 0xee, 0xff, 00, 0x5, 0xab, - 0x37, 0xa1, 0xf, 0x69, 0x56, 0x31, 0x3e, 0x8b, 0xa2, 0x8a, - 0x2b, 0xf6, 0xe3, 0xeb, 0x82, 0x8a, 0x28, 0xa0, 0x8, 0xee, - 0x26, 0x5b, 0x6b, 0x79, 0x65, 0x73, 0x84, 0x8d, 0x4b, 0x13, - 0xec, 0x6, 0x6b, 0xe2, 0x2d, 0x52, 0xf9, 0xf5, 0x3d, 0x4e, - 0xee, 0xf2, 0x43, 0x97, 0xb8, 0x95, 0xe5, 0x6f, 0xab, 0x12, - 0x7f, 0xad, 0x7d, 0x89, 0xe3, 0xa9, 0xda, 0xd7, 0xc1, 0x5a, - 0xf4, 0xa8, 0x70, 0xc9, 0x63, 0x31, 0x7, 0xdf, 0x61, 0xaf, - 0x8c, 0x6b, 0xf3, 0xce, 0x2a, 0xa8, 0xf9, 0xa9, 0x53, 0xf5, - 0x7f, 0x91, 0xe1, 0xe6, 0x52, 0xd6, 0x31, 0xa, 0x28, 0xa2, - 0xbe, 0x8, 0xf1, 0x82, 0xba, 0xbf, 0x85, 0x9a, 0x60, 0xd5, - 0xbe, 0x20, 0xe8, 0x70, 0x30, 0xca, 0x2d, 0xc0, 0x95, 0xbe, - 0x88, 0xb, 0x7f, 0xec, 0xb5, 0xca, 0x57, 0xa2, 0x7c, 0x4, - 0x50, 0x7e, 0x24, 0xd9, 0x13, 0xd4, 0x45, 0x29, 0x1f, 0xf7, - 0xc1, 0xaf, 0x43, 0x2f, 0x82, 0xa9, 0x8b, 0xa5, 0x17, 0xd6, - 0x4b, 0xf3, 0x36, 0xa2, 0xb9, 0xaa, 0xc5, 0x79, 0xa3, 0xea, - 0x7a, 0x28, 0xa2, 0xbf, 0x70, 0x3e, 0xbc, 0x28, 0xa2, 0x8a, - 00, 0x28, 0xa2, 0x8a, 00, 0x2b, 0x95, 0xf8, 0xa3, 0xaa, - 0xd, 0x1f, 0xe1, 0xfe, 0xb9, 0x71, 0x9c, 0x31, 0xb7, 0x68, - 0x97, 0xfd, 0xe7, 0xf9, 0x47, 0xf3, 0xae, 0xaa, 0xbc, 0x67, - 0xf6, 0x92, 0xf1, 0x1a, 0xdb, 0x68, 0xb6, 0x1a, 0x2a, 0x37, - 0xef, 0x6e, 0xa4, 0xf3, 0xe4, 0x1e, 0x88, 0xbd, 0x3f, 0x36, - 0x3f, 0xf8, 0xed, 0x79, 0x99, 0x9d, 0x75, 0x86, 0xc1, 0xd4, - 0xa8, 0xfb, 0x69, 0xea, 0xf4, 0x47, 0x3e, 0x22, 0x7e, 0xce, - 0x94, 0xa4, 0x7c, 0xf5, 0x45, 0x14, 0x57, 0xe2, 0x47, 0xc9, - 0x5, 0x14, 0x51, 0x40, 0x1d, 0x6f, 0xc2, 0x7b, 0x3f, 0xb7, - 0x7c, 0x45, 0xd0, 0xa3, 0xc6, 0x42, 0xdc, 0x9, 0xf, 0xfc, - 0x4, 0x16, 0xfe, 0x95, 0xf5, 0xf5, 0x7c, 0xe3, 0xfb, 0x37, - 0xe8, 0x7f, 0x6c, 0xf1, 0x45, 0xee, 0xa6, 0xcb, 0x94, 0xb2, - 0x83, 0x62, 0x9f, 0xf6, 0xdc, 0xe3, 0xf9, 0x6, 0xfc, 0xeb, - 0xe8, 0xea, 0xfd, 0x4f, 0x86, 0x68, 0xba, 0x78, 0x27, 0x37, - 0xf6, 0x9b, 0x7f, 0x76, 0x87, 0xd1, 0x65, 0xf1, 0xb5, 0x2b, - 0xf7, 0x61, 0x5e, 0x6b, 0xf1, 0x7f, 0xe1, 0x58, 0xf1, 0xbd, - 0xa2, 0xdf, 0xd8, 0x5, 0x8f, 0x58, 0xb7, 0x42, 00, 0x3c, - 0x9, 0xd7, 0xfb, 0xa4, 0xfa, 0xfa, 0x1f, 0xc3, 0xe9, 0xe9, - 0x54, 0x57, 0xd1, 0xe2, 0x70, 0xd4, 0xf1, 0x74, 0x9d, 0x1a, - 0xaa, 0xe9, 0x9d, 0xf5, 0x29, 0xc6, 0xac, 0x5c, 0x65, 0xb1, - 0xf0, 0xdd, 0xed, 0x8d, 0xc6, 0x9b, 0x75, 0x25, 0xb5, 0xd4, - 0x32, 0x5b, 0xdc, 0x46, 0x76, 0xbc, 0x52, 0x2e, 0xd6, 0x53, - 0xee, 0x2a, 0xa, 0xfb, 0x17, 0xc6, 0x3f, 0xf, 0x34, 0x4f, - 0x1c, 0x42, 0xa3, 0x52, 0xb6, 0xfd, 0xfa, 0xc, 0x25, 0xcc, - 0x47, 0x6c, 0x8b, 0xf8, 0xf7, 0x1e, 0xc7, 0x22, 0xbc, 0x3f, - 0xc5, 0x3f, 0xb3, 0xde, 0xbb, 0xa4, 0x34, 0x92, 0xe9, 0x4f, - 0x1e, 0xaf, 0x6a, 0x39, 0xa, 0xe, 0xc9, 0x80, 0xff, 00, - 0x74, 0xf0, 0x7f, 0x3, 0xf8, 0x57, 0xe6, 0x38, 0xee, 0x1f, - 0xc5, 0x61, 0x5b, 0x95, 0x25, 0xcf, 0x1f, 0x2d, 0xfe, 0x6b, - 0xfc, 0x8f, 0x9e, 0xad, 0x82, 0xa9, 0x4f, 0x58, 0xea, 0x8f, - 0x2a, 0xa2, 0xac, 0x5f, 0x69, 0xf7, 0x5a, 0x65, 0xc3, 0x41, - 0x79, 0x6f, 0x2d, 0xac, 0xcb, 0xd6, 0x39, 0x90, 0xab, 0xf, - 0xc0, 0xd5, 0x7a, 0xf9, 0x86, 0x9c, 0x5d, 0x99, 0xe7, 0xec, - 0x14, 0x51, 0x45, 0x20, 0xa, 0x28, 0xa2, 0x80, 0x25, 0xb5, - 0xbb, 0x9e, 0xc6, 0x75, 0x9a, 0xda, 0x69, 0x2d, 0xe6, 0x5e, - 0x56, 0x48, 0x9c, 0xab, 0xf, 0xa1, 0x15, 0xe9, 0x5e, 0x11, - 0xf8, 0xfb, 0xaf, 0x68, 0x6e, 0x91, 0x6a, 0x64, 0x6b, 0x36, - 0x9d, 0xf, 0x98, 0x42, 0xca, 0xbf, 0x46, 0xc7, 0x3f, 0x8e, - 0x7e, 0xb5, 0xe6, 0x14, 0x57, 0x66, 0x1b, 0x19, 0x5f, 0x9, - 0x2e, 0x6a, 0x13, 0x6b, 0xf2, 0xfb, 0xb6, 0x35, 0xa7, 0x56, - 0x74, 0x9d, 0xe0, 0xec, 0x7d, 0x8f, 0xe0, 0xdf, 0x1f, 0xe8, - 0xfe, 0x38, 0xb4, 0xf3, 0x74, 0xeb, 0x8f, 0xdf, 0x28, 0xfd, - 0xe5, 0xb4, 0xbf, 0x2c, 0xa9, 0xf5, 0x1d, 0xc7, 0xb8, 0xe2, - 0xba, 0x4a, 0xf8, 0x7b, 0x4b, 0xd5, 0x2e, 0xf4, 0x5d, 0x42, - 0xb, 0xdb, 0x19, 0xda, 0xde, 0xea, 0x16, 0xdc, 0x92, 0x27, - 0x50, 0x7f, 0xcf, 0x6a, 0xfa, 0xa3, 0xe1, 0x4f, 0xc4, 0x88, - 0xbc, 0x7d, 0xa3, 0x91, 0x36, 0x23, 0xd5, 0x6d, 0x80, 0x17, - 0x31, 0x81, 0x85, 0x6c, 0xf4, 0x75, 0xf6, 0x38, 0xfc, 0xf, - 0xe1, 0x5f, 0xa4, 0xe5, 0x19, 0xdc, 0x71, 0xcf, 0xd8, 0xd6, - 0x56, 0x9f, 0xe0, 0xff, 00, 0xe0, 0xf9, 0x1e, 0xf6, 0x17, - 0x16, 0xab, 0x7b, 0x93, 0xd1, 0xfe, 0x67, 0x73, 0x45, 0x14, - 0x57, 0xd5, 0x9e, 0x90, 0x51, 0x45, 0x14, 00, 0x57, 0xcc, - 0xff, 00, 0xb4, 0xf5, 0xdf, 0xef, 0xd9, 0x33, 0xd1, 0x71, - 0x5f, 0x4c, 0x57, 0xc9, 0xbf, 0xb4, 0xbd, 0xd1, 0x7d, 0x52, - 0x55, 0xcf, 0xf1, 0x1a, 0xf9, 0xdc, 0xf6, 0x56, 0xc1, 0xb5, - 0xdc, 0xf1, 0xb3, 0x69, 0x72, 0xe1, 0x64, 0x7c, 0xdf, 0xac, - 0x36, 0xdb, 0x77, 0x3e, 0xd5, 0x4f, 0xf6, 0x27, 0xb6, 0xfe, - 0xd1, 0xfd, 0xb2, 0xf4, 0xc7, 0x20, 0x37, 0xd9, 0x34, 0xab, - 0xe9, 0xf9, 0xed, 0x95, 0x54, 0xcf, 0xfe, 0x3f, 0x53, 0x78, - 0x81, 0xf6, 0xd9, 0xc8, 0x7f, 0xd9, 0x35, 0x77, 0xfe, 0x9, - 0xe7, 0x69, 0xf6, 0xef, 0xda, 0xbb, 0x5c, 0xb9, 0xea, 0x2d, - 0x3c, 0x3b, 0x3f, 0xe6, 0xd3, 0xc2, 0x3f, 0xa1, 0xaf, 0x27, - 0x23, 0x8e, 0xb7, 0x3f, 0x34, 0xc8, 0x23, 0xcf, 0x9b, 0xa7, - 0xd9, 0x33, 0xf4, 0xee, 0x8a, 0x28, 0xaf, 0xb8, 0x3f, 0x64, - 0xa, 0x28, 0xa2, 0x80, 0x23, 0xb9, 0xb8, 0x8e, 0xd2, 0xde, - 0x59, 0xe5, 0x60, 0x91, 0x44, 0xa5, 0xdd, 0x8f, 0x40, 00, - 0xc9, 0x35, 0xf9, 0xe1, 0xe3, 0xcf, 0x13, 0xc9, 0xe3, 0x3f, - 0x19, 0xea, 0xfa, 0xcb, 0x9c, 0x8b, 0xbb, 0x86, 0x68, 0xfd, - 0xa3, 0x1c, 0x20, 0xff, 00, 0xbe, 0x40, 0xaf, 0xaf, 0x3f, - 0x69, 0x7f, 0x18, 0x9f, 0xa, 0x7c, 0x33, 0xbb, 0x82, 0x17, - 0xdb, 0x77, 0xaa, 0xb7, 0xd8, 0xa3, 0xf5, 0xda, 0xc0, 0x97, - 0x3f, 0xf7, 0xc8, 0x3f, 0x98, 0xaf, 0x8d, 0x7c, 0x3d, 0xa5, - 0x3e, 0xb3, 0xac, 0xd9, 0xd9, 0x46, 0x9, 0x69, 0xa4, 0x54, - 00, 0x7b, 0x9a, 0xf8, 0x7e, 0x20, 0xc4, 0x39, 0x4e, 0x18, - 0x78, 0xf4, 0xd7, 0xe6, 0xf6, 0x3e, 0xb, 0x88, 0x6b, 0xba, - 0xb5, 0xa9, 0xe1, 0x21, 0xd3, 0x57, 0xea, 0xf6, 0xfe, 0xbc, - 0xcf, 0xab, 0x3f, 0x65, 0x6f, 0x8, 0x7f, 0x65, 0x78, 0x5a, - 0x6d, 0x5e, 0x58, 0xf6, 0xcd, 0x76, 0xc5, 0x54, 0x91, 0xfc, - 0x22, 0xbd, 0xd6, 0xb2, 0xbc, 0x2d, 0xa2, 0xc7, 0xe1, 0xef, - 0xf, 0xd8, 0xe9, 0xf1, 0x28, 0x55, 0x82, 0x20, 0xbc, 0xe, - 0xfd, 0xeb, 0x56, 0xbe, 0xab, 0x5, 0x87, 0x58, 0x5c, 0x3c, - 0x29, 0x76, 0x5f, 0x8f, 0x53, 0xec, 0xb0, 0x94, 0x16, 0x1e, - 0x84, 0x69, 0x2e, 0x88, 0x28, 0xa2, 0x8a, 0xee, 0x3a, 0xc2, - 0x8a, 0x28, 0xa0, 0xf, 0xcb, 0xbf, 0xf8, 0x2d, 0x1f, 0xc6, - 0x4b, 0xfb, 0x3b, 0x6f, 0x5, 0xfc, 0x31, 0xb3, 0x73, 0x15, - 0x8d, 0xea, 0x36, 0xb5, 0xa8, 0x60, 0x90, 0x65, 0xda, 0xc6, - 0x38, 0x50, 0xf6, 0x20, 0x1d, 0xed, 0xf5, 0xb, 0xe9, 0x5f, - 0x9b, 0x5f, 0xb, 0x34, 0xfd, 0x7b, 0xc5, 0x3e, 0x3e, 0xf0, - 0xe7, 0x86, 0xb4, 0x3d, 0x52, 0xf3, 0x4f, 0xbc, 0xd5, 0xf5, - 0x8, 0x2c, 0x22, 0x92, 0xda, 0x77, 0x8f, 0x61, 0x92, 0x40, - 0x9b, 0xbe, 0x52, 0x3a, 0x67, 0x3f, 0x85, 0x7e, 0x9a, 0xff, - 00, 0xc1, 0x49, 0xec, 0xfe, 0xd, 0xfe, 0xd2, 0xba, 0x1d, - 0xa6, 0xa7, 0xe1, 0xbf, 0x8a, 0xfe, 0x12, 0xb7, 0xf8, 0x87, - 0xe1, 0x7f, 0x36, 0xd9, 0x74, 0xfb, 0xbd, 0x52, 0x28, 0x56, - 0xee, 0x2d, 0xdf, 0x3c, 0x5, 0x98, 0x80, 0xae, 0xac, 0x9, - 0x5c, 0x9c, 0x64, 0xb0, 0x38, 0xce, 0x47, 0xe5, 0xa7, 0x85, - 0xfc, 0x47, 0xa8, 0x78, 0xb, 0xc5, 0xfa, 0x56, 0xb9, 0xa6, - 0xca, 0xb1, 0xea, 0x9a, 0x3d, 0xec, 0x77, 0x70, 0x48, 0xac, - 0x1d, 0x44, 0x91, 0x38, 0x65, 0xe4, 0x1c, 0x30, 0xca, 0xf6, - 0x38, 0x22, 0xa9, 0x10, 0xf7, 0x3f, 0xa6, 0x8f, 0x9, 0x78, - 0x6a, 0xd7, 0xc1, 0xde, 0x17, 0xd2, 0xb4, 0x2b, 0x22, 0xe6, - 0xd7, 0x4e, 0xb6, 0x8e, 0xd6, 0x36, 0x91, 0x8b, 0x3b, 0x4, - 0x50, 0x37, 0x31, 0x3c, 0x92, 0x71, 0x92, 0x4f, 0x52, 0x6b, - 0x5e, 0xbe, 0x30, 0xf8, 0x1b, 0xff, 00, 0x5, 0x54, 0xf8, - 0x37, 0xf1, 0x2b, 0x43, 0xb4, 0x5f, 0x15, 0xea, 0xa7, 0xc0, - 0x3e, 0x22, 0xd8, 0x5, 0xc5, 0xa6, 0xa6, 0x8c, 0xd6, 0xc5, - 0xf1, 0xc9, 0x8e, 0x75, 0x5, 0x76, 0xfa, 0x6e, 0xda, 0x7d, - 0xab, 0xd9, 0xad, 0x7f, 0x6d, 0x3f, 0x80, 0xf7, 0x87, 0x11, - 0xfc, 0x5b, 0xf0, 0x88, 0x3f, 0xf4, 0xd3, 0x55, 0x89, 0x3f, - 0xf4, 0x22, 0x2a, 0x4b, 0x3d, 0xa6, 0x8a, 0xf3, 0x1d, 0x3f, - 0xf6, 0xa0, 0xf8, 0x3d, 0xab, 0x48, 0x12, 0xcb, 0xe2, 0x97, - 0x83, 0xee, 0x9c, 0xf4, 0x58, 0xb5, 0xcb, 0x66, 0x3f, 0xfa, - 0x1d, 0x77, 0x7a, 0xf, 0x89, 0xb4, 0x8f, 0x14, 0xda, 0x35, - 0xd6, 0x8d, 0xaa, 0xd9, 0x6a, 0xd6, 0xaa, 0xdb, 0xc, 0xd6, - 0x37, 0x9, 0x32, 0x6, 0xc6, 0x70, 0x4a, 0x92, 0x33, 0x82, - 0x3f, 0x3a, 00, 0xd3, 0xaf, 0x36, 0xf8, 0xf9, 0xe2, 0x1f, - 0xec, 0x6f, 0x2, 0x4b, 0x6b, 0x1c, 0x9b, 0x27, 0xd4, 0x24, - 0x10, 00, 0xf, 0x3b, 0x3a, 0xbf, 0xe8, 0x31, 0xff, 00, - 0x2, 0xaf, 0x49, 0xaf, 0x98, 0xff, 00, 0x68, 0x3f, 0x10, - 0x7f, 0x6a, 0xf8, 0xdf, 0xec, 0x28, 0xfb, 0xa0, 0xd3, 0xe2, - 0x11, 0xe0, 0x74, 0xde, 0xdf, 0x33, 0x7f, 0xec, 0xa3, 0xf0, - 0xaf, 0x3, 0x3c, 0xc5, 0x7d, 0x57, 0x3, 0x36, 0xb7, 0x96, - 0x8b, 0xe7, 0xff, 00, 0x2, 0xe7, 0x16, 0x32, 0xa7, 0xb3, - 0xa2, 0xfc, 0xf4, 0x3c, 0xc2, 0x8a, 0x28, 0xaf, 0xc7, 0x8f, - 0x97, 0xa, 0xb7, 0xa4, 0xe9, 0xb3, 0x6b, 0x3a, 0xa5, 0xa5, - 0x8c, 00, 0xb4, 0xd7, 0x32, 0xac, 0x4a, 00, 0xee, 0x4e, - 0x2a, 0xa5, 0x7a, 0x8f, 0xec, 0xf3, 0xa0, 0x1d, 0x4f, 0xc6, - 0xad, 0x7e, 0xe9, 0x98, 0x74, 0xf8, 0x4b, 0xee, 0x23, 0x8f, - 0x31, 0xbe, 0x55, 0x1f, 0x96, 0xe3, 0xf8, 0x57, 0x6e, 0xb, - 0xe, 0xf1, 0x58, 0x98, 0x51, 0x5d, 0x5f, 0xe1, 0xd7, 0xf0, - 0x35, 0xa5, 0xf, 0x69, 0x35, 0xe, 0xe7, 0xd2, 0x3a, 0x75, - 0x8c, 0x7a, 0x66, 0x9f, 0x6d, 0x69, 0x8, 0xdb, 0x14, 0x11, - 0xac, 0x48, 0x3d, 0x80, 0xc0, 0xfe, 0x55, 0x66, 0x8a, 0x2b, - 0xf7, 0x24, 0x94, 0x55, 0x91, 0xf6, 0x9, 0x5b, 0x40, 0xaf, - 0x11, 0xfd, 0xa6, 0xec, 0x43, 0x58, 0x68, 0x57, 0x9d, 0xd2, - 0x59, 0x62, 0x3f, 0xf0, 0x20, 0xf, 0xfe, 0xcb, 0x5e, 0xdd, - 0x5e, 0x4f, 0xfb, 0x48, 0xc3, 0xe6, 0x78, 0x26, 0xce, 0x4c, - 0x7f, 0xab, 0xbe, 0x43, 0xf9, 0xa3, 0x8a, 0xf1, 0xb3, 0xa8, - 0x73, 0xe5, 0xf5, 0x57, 0x95, 0xfe, 0xe7, 0x73, 0x93, 0x16, - 0xaf, 0x42, 0x47, 0xcd, 0x94, 0x51, 0x45, 0x7e, 0x32, 0x7c, - 0xa8, 0x56, 0xc7, 0x83, 0x6f, 0x8e, 0x9b, 0xe2, 0xdd, 0x1a, - 0xe8, 0x1c, 0x79, 0x57, 0x71, 0x31, 0x3e, 0xdb, 0x86, 0x7f, - 0x4a, 0xc7, 0xa7, 0x47, 0x21, 0x86, 0x45, 0x91, 0x7e, 0xf2, - 0x90, 0xc3, 0xf0, 0xad, 0x29, 0xcf, 0xd9, 0xce, 0x33, 0x5d, - 0x1d, 0xc7, 0x17, 0x66, 0x99, 0xf7, 0x4d, 0x15, 0x5b, 0x4c, - 0xb9, 0x17, 0xba, 0x75, 0xad, 0xc0, 0xe9, 0x2c, 0x49, 0x20, - 0xfc, 0x40, 0x35, 0x66, 0xbf, 0x7b, 0x4e, 0xe9, 0x34, 0x7d, - 0x9a, 0xd4, 0x28, 0xa2, 0x8a, 0x63, 0xa, 0x28, 0xa2, 0x80, - 0x38, 0xbf, 0x8c, 0x3a, 0xc8, 0xd1, 0x3e, 0x1e, 0x6a, 0xd2, - 0x6, 0xdb, 0x24, 0xf1, 0xfd, 0x99, 0x30, 0x79, 0x25, 0xce, - 0xe, 0x3f, 0xc, 0x9f, 0xc2, 0xbe, 0x48, 0xaf, 0x75, 0xfd, - 0xa6, 0x35, 0xa3, 0x9d, 0x1f, 0x49, 0x46, 0xf9, 0x7e, 0x7b, - 0x99, 0x14, 0x7f, 0xdf, 0x2b, 0xff, 00, 0xb3, 0x57, 0x85, - 0x57, 0xe5, 0x1c, 0x47, 0x88, 0xf6, 0xd8, 0xde, 0x45, 0xb4, - 0x12, 0x5f, 0xaf, 0xea, 0x7c, 0xde, 0x3e, 0x7c, 0xd5, 0xad, - 0xd8, 0x28, 0xa2, 0x8a, 0xf9, 0x63, 0xce, 0xa, 0xfa, 0x7b, - 0xf6, 0x7d, 0xd0, 0xff, 00, 0xb2, 0xfc, 0x8, 0x2e, 0xd9, - 0x71, 0x2d, 0xfc, 0xcd, 0x2e, 0x48, 0xe7, 0x68, 0xf9, 0x57, - 0xf9, 0x13, 0xf8, 0xd7, 0xcc, 0x71, 0x44, 0xd3, 0x4a, 0x91, - 0xa0, 0x2c, 0xee, 0x42, 0xa8, 0x1d, 0xc9, 0xe9, 0x5f, 0x6b, - 0x78, 0x67, 0x49, 0x5d, 0xb, 0xc3, 0xda, 0x6e, 0x9c, 0xbf, - 0xf2, 0xed, 0x6e, 0x91, 0x1f, 0x72, 0x14, 0x64, 0xfe, 0x75, - 0xf6, 0x9c, 0x2f, 0x43, 0x9f, 0x11, 0x3a, 0xcf, 0xec, 0xaf, - 0xc5, 0xff, 00, 0xc0, 0x3d, 0x5c, 0xbe, 0x17, 0xa8, 0xe5, - 0xd8, 0xd3, 0xa2, 0x8a, 0x2b, 0xf4, 0xc3, 0xe8, 0x2, 0x8a, - 0x28, 0xa0, 0xc, 0x3f, 0x1c, 0xdb, 0xb5, 0xd7, 0x82, 0xf5, - 0xd8, 0x50, 0x65, 0xde, 0xc6, 0x65, 00, 0x7a, 0xec, 0x35, - 0xf1, 0x87, 0x5a, 0xfb, 0xa2, 0x58, 0x96, 0x78, 0x9e, 0x37, - 0x19, 0x47, 0x52, 0xa4, 0x1e, 0xe0, 0xd7, 0xc4, 0xfe, 0x21, - 0xd2, 0x5f, 0x42, 0xd7, 0x75, 0xd, 0x3a, 0x40, 0x77, 0x5b, - 0x4e, 0xf1, 0x73, 0xdc, 0x3, 0xc1, 0xfc, 0x46, 0xd, 0x7e, - 0x7d, 0xc5, 0x54, 0x9d, 0xe9, 0x55, 0xe9, 0xaa, 0xfd, 0x4f, - 0x13, 0x32, 0x8e, 0xb1, 0x91, 0x9f, 0x45, 0x14, 0x57, 0xc0, - 0x1e, 0x28, 0x57, 0x5f, 0xf0, 0x97, 0x55, 0x5d, 0x1f, 0xe2, - 0x1e, 0x8b, 0x33, 0x9c, 0x23, 0xcd, 0xe4, 0x31, 0x3f, 0xed, - 0x82, 0xa3, 0xf5, 0x22, 0xb9, 0xa, 0x74, 0x52, 0xbc, 0x32, - 0xa4, 0x91, 0xb1, 0x57, 0x42, 0x19, 0x58, 0x75, 0x4, 0x74, - 0x35, 0xbd, 0xa, 0xae, 0x85, 0x58, 0x55, 0x5f, 0x65, 0xa7, - 0xf7, 0x15, 0x9, 0x72, 0x49, 0x4b, 0xb1, 0xf7, 0x4d, 0x15, - 0xcb, 0x7c, 0x38, 0xf1, 0xb4, 0x1e, 0x39, 0xf0, 0xcd, 0xbd, - 0xea, 0xb2, 0xad, 0xda, 0xf, 0x2e, 0xe6, 0x10, 0x79, 0x47, - 0x1f, 0xd0, 0xf5, 0x1f, 0x5a, 0xea, 0x6b, 0xf7, 0x3a, 0x35, - 0x61, 0x5e, 0x9c, 0x6a, 0xd3, 0x77, 0x4f, 0x53, 0xec, 0x63, - 0x25, 0x38, 0xa9, 0x47, 0x66, 0x14, 0x51, 0x45, 0x6c, 0x50, - 0x51, 0x45, 0x23, 0x30, 0x45, 0x2c, 0xc4, 0x2a, 0x81, 0x92, - 0x4f, 0x41, 0x40, 0x11, 0xdd, 0x5d, 0x45, 0x63, 0x6d, 0x2d, - 0xc4, 0xf2, 0x2c, 0x50, 0x44, 0x85, 0xdd, 0xd8, 0xe0, 0x2a, - 0x81, 0x92, 0x4d, 0x7c, 0x79, 0xf1, 0x7, 0xc5, 0xaf, 0xe3, - 0x5f, 0x15, 0x5e, 0x6a, 0x64, 0x15, 0x85, 0x8f, 0x97, 0x2, - 0x1f, 0xe1, 0x8d, 0x78, 0x5f, 0xcf, 0xaf, 0xd4, 0x9a, 0xef, - 0xfe, 0x36, 0x7c, 0x58, 0x4d, 0x74, 0xbe, 0x83, 0xa3, 0xcd, - 0xba, 0xc1, 0x1b, 0xfd, 0x22, 0xe5, 0x1b, 0x89, 0x88, 0xfe, - 0x11, 0xfe, 0xc8, 0xf5, 0xee, 0x7d, 0xba, 0xf8, 0xed, 0x7e, - 0x63, 0xc4, 0x39, 0x9c, 0x71, 0x33, 0x58, 0x6a, 0x2e, 0xf1, - 0x8e, 0xef, 0xbb, 0xff, 00, 0x80, 0x7c, 0xf6, 0x3b, 0x10, - 0xaa, 0x3f, 0x67, 0x1d, 0x90, 0x51, 0x45, 0x15, 0xf1, 0xa7, - 0x96, 0x14, 0x51, 0x5d, 0x67, 0xc3, 0x2f, 0x6, 0x3f, 0x8d, - 0xfc, 0x57, 0x6d, 0x66, 0xca, 0xdf, 0x63, 0x8f, 0xf7, 0xd7, - 0x2e, 0x7, 0x44, 0x1d, 0xbf, 0x13, 0x81, 0xf8, 0xfb, 0x56, - 0xd4, 0x68, 0xcf, 0x11, 0x52, 0x34, 0xa9, 0xad, 0x5b, 0xb1, - 0x51, 0x8b, 0x9c, 0x94, 0x56, 0xec, 0xf7, 0xbf, 0x81, 0x7e, - 0x17, 0x6f, 0xe, 0xf8, 0x1e, 0x19, 0xa6, 0x5d, 0xb7, 0x3a, - 0x83, 0x7d, 0xa9, 0x81, 0x1c, 0x85, 0x20, 0x4, 0x1f, 0x90, - 0xcf, 0xe3, 0x5e, 0x89, 0x4d, 0x8e, 0x35, 0x8a, 0x35, 0x44, - 0x50, 0xa8, 0xa0, 0x28, 0x51, 0xd0, 0xa, 0x75, 0x7e, 0xe3, - 0x86, 0xa1, 0x1c, 0x2d, 0x18, 0x51, 0x8e, 0xd1, 0x56, 0x3e, - 0xbe, 0x9c, 0x15, 0x38, 0x28, 0x2e, 0x81, 0x45, 0x14, 0x57, - 0x49, 0xa0, 0x51, 0x45, 0x14, 0x1, 0x53, 0x51, 0xd2, 0x2c, - 0x75, 0x78, 0x4c, 0x37, 0xd6, 0x70, 0x5e, 0x44, 0x7a, 0xa4, - 0xf1, 0x87, 0x1f, 0xad, 0x79, 0xf6, 0xbf, 0xfb, 0x3f, 0xf8, - 0x63, 0x57, 0x2d, 0x25, 0xa2, 0xcf, 0xa5, 0x4a, 0x7f, 0xe7, - 0xdd, 0xf2, 0x99, 0xff, 00, 0x75, 0xb3, 0xfa, 0x11, 0x5e, - 0x99, 0x45, 0x72, 0x57, 0xc1, 0xe1, 0xf1, 0x2a, 0xd5, 0xa0, - 0xa5, 0xfd, 0x77, 0x32, 0x9d, 0x28, 0x54, 0xf8, 0xd5, 0xcf, - 0x9b, 0x3c, 0x45, 0xfb, 0x3a, 0xeb, 0xba, 0x68, 0x69, 0x34, - 0xbb, 0x88, 0x75, 0x58, 0x87, 0x44, 0xff, 00, 0x55, 0x26, - 0x3e, 0x84, 0xe0, 0xfe, 0x75, 0xe6, 0xba, 0xb6, 0x87, 0xa8, - 0x68, 0x37, 0x3f, 0x67, 0xd4, 0x6c, 0xa7, 0xb2, 0x9b, 0xfb, - 0xb3, 0x21, 0x5c, 0xfd, 0x3d, 0x7f, 0xa, 0xfb, 0x76, 0xa9, - 0xea, 0x9a, 0x45, 0x96, 0xb7, 0x68, 0xf6, 0xb7, 0xf6, 0xb1, - 0x5d, 0xdb, 0xb7, 0x58, 0xe5, 0x50, 0xc3, 0xff, 00, 0xad, - 0x5f, 0x2f, 0x8a, 0xe1, 0x8c, 0x3d, 0x4b, 0xbc, 0x3c, 0x9c, - 0x5f, 0x6d, 0xd7, 0xf9, 0x9e, 0x75, 0x4c, 0xbe, 0x12, 0xd6, - 0xe, 0xc7, 0xc4, 0x14, 0x57, 0xa5, 0x7c, 0x60, 0xf8, 0x56, - 0xbe, 0x5, 0xb8, 0x8a, 0xfb, 0x4f, 0x2f, 0x26, 0x93, 0x72, - 0xe5, 0x70, 0xfc, 0x98, 0x5f, 0xa8, 0x5c, 0xf7, 0x4, 0x67, - 0x7, 0xda, 0xbc, 0xd6, 0xbf, 0x3c, 0xc5, 0x61, 0xaa, 0xe0, - 0xea, 0xba, 0x35, 0x55, 0x9a, 0x3c, 0x4a, 0x94, 0xe5, 0x4a, - 0x4e, 0x32, 0xdc, 0x28, 0xa2, 0x8a, 0xe5, 0x33, 0xa, 0xea, - 0x7e, 0x19, 0x78, 0x96, 0x5f, 0xb, 0x78, 0xd3, 0x4d, 0xba, - 0x46, 0x22, 0x19, 0x25, 0x10, 0x4e, 0xb9, 0xe1, 0xa3, 0x62, - 0x1, 0xcf, 0xd3, 0x83, 0xf8, 0x57, 0x2d, 0x4a, 0xac, 0x55, - 0x81, 0x7, 0x4, 0x1c, 0x82, 0x2b, 0x6a, 0x35, 0x65, 0x42, - 0xac, 0x6a, 0xc7, 0x74, 0xee, 0x54, 0x24, 0xe1, 0x25, 0x25, - 0xd0, 0xfb, 0xaa, 0x8a, 0x82, 0xc5, 0xda, 0x5b, 0x2b, 0x77, - 0x6e, 0x19, 0xa3, 0x52, 0x7e, 0xb8, 0xa9, 0xeb, 0xf7, 0x94, - 0xee, 0xae, 0x7d, 0x9a, 0xd4, 0x28, 0xa2, 0x8a, 0x60, 0x21, - 0x38, 0x15, 0xf1, 0xaf, 0xed, 0xf, 0x77, 0xe7, 0x6b, 0xb2, - 0x8f, 0x57, 0x3f, 0xce, 0xbe, 0xc8, 0x94, 0xed, 0x89, 0xcf, - 0xa2, 0x93, 0x5f, 0x10, 0x7c, 0x73, 0xb9, 0xf3, 0xbc, 0x45, - 0x2f, 0xfb, 0xed, 0xfc, 0xeb, 0xe5, 0x78, 0x86, 0x56, 0xc3, - 0xc6, 0x3d, 0xd9, 0xf3, 0xb9, 0xec, 0xb9, 0x70, 0xac, 0xf1, - 0x1f, 0x14, 0xc9, 0xb2, 0xc2, 0x6f, 0xf7, 0x4d, 0x76, 0x9f, - 0xf0, 0x4c, 0x9d, 0x3c, 0x5d, 0x7c, 0x65, 0xf8, 0x91, 0xa9, - 0x11, 0x9f, 0xb3, 0xe9, 0x96, 0xd6, 0xe1, 0xb1, 0xfd, 0xf9, - 0x59, 0x8f, 0xfe, 0x81, 0x5c, 0xf, 0x8d, 0x25, 0xd9, 0xa6, - 0x4d, 0xf4, 0x35, 0xeb, 0xff, 00, 0xf0, 0x4b, 0x2b, 0xd, - 0xf7, 0x3f, 0x15, 0x35, 0x22, 0x3e, 0xfd, 0xcd, 0x95, 0xba, - 0x9f, 0xf7, 0x52, 0x46, 0x3f, 0xfa, 0x10, 0xac, 0x72, 0x38, - 0xe9, 0x73, 0xe1, 0xb8, 0x5e, 0x3c, 0xd9, 0x95, 0x49, 0x76, - 0x47, 0xdf, 0x74, 0x51, 0x45, 0x7d, 0x81, 0xfa, 0xd8, 0x51, - 0x45, 0x66, 0x78, 0x9b, 0x5d, 0x83, 0xc3, 0x1e, 0x1e, 0xd4, - 0x75, 0x6b, 0x93, 0x88, 0x6c, 0xe0, 0x79, 0xd8, 0x67, 0x19, - 0xda, 0x33, 0x8f, 0xa9, 0xe9, 0x4a, 0x4d, 0x45, 0x36, 0xfa, - 0x13, 0x29, 0x28, 0xa7, 0x27, 0xb2, 0x3e, 0x49, 0xfd, 0xaa, - 0xfc, 0x62, 0xda, 0xef, 0xc4, 0x25, 0xd1, 0xe3, 0x72, 0x6d, - 0x34, 0x88, 0x82, 0x15, 0xc8, 0x20, 0xca, 0xe0, 0x33, 0x1f, - 0xcb, 0x68, 0xfc, 0xd, 0x27, 0xec, 0xc1, 0xe1, 0xf, 0xed, - 0xcf, 0x1b, 0xad, 0xfc, 0xd1, 0xee, 0xb7, 0xb2, 0x52, 0xf9, - 0x23, 0x8d, 0xdd, 0xab, 0xc8, 0xf5, 0x6d, 0x52, 0xe3, 0x5e, - 0xd5, 0xef, 0x35, 0x1b, 0xa7, 0x32, 0x5c, 0xdd, 0xcc, 0xd3, - 0x48, 0xc7, 0xd5, 0x8e, 0x6b, 0xec, 0x9f, 0xd9, 0xaf, 0xc2, - 0x3f, 0xf0, 0x8f, 0x78, 0x12, 0x3b, 0xb9, 0x13, 0x6d, 0xc5, - 0xe3, 0x17, 0x39, 0xfe, 0xef, 0x6a, 0xfc, 0xef, 0x8, 0x9e, - 0x63, 0x99, 0x7b, 0x49, 0x6d, 0x7b, 0xfc, 0x96, 0xdf, 0xa1, - 0xf9, 0xd6, 0x5c, 0x9e, 0x63, 0x99, 0x4b, 0x11, 0x2d, 0x93, - 0xbf, 0xf9, 0x1e, 0xbb, 0x45, 0x14, 0x57, 0xe8, 0xa7, 0xe8, - 0xe1, 0x45, 0x79, 0xef, 0xed, 0x1, 0xf1, 0x6a, 0xcb, 0xe0, - 0x67, 0xc1, 0xbf, 0x15, 0xf8, 0xde, 0xf9, 0x94, 0x2e, 0x93, - 0x62, 0xf2, 0xc2, 0x8d, 0xd2, 0x59, 0xc8, 0xdb, 0xa, 0x7f, - 0xc0, 0x9c, 0xa8, 0xfc, 0x6b, 0xf2, 0x66, 0xc3, 0xfe, 0xb, - 0x29, 0xf1, 0xba, 0xdd, 0x97, 0xed, 0x5a, 0x2f, 0x83, 0xae, - 0xd0, 0x75, 0x2, 0xc2, 0xe2, 0x32, 0x7f, 0x11, 0x39, 0xfe, - 0x54, 0xa, 0xf6, 0x3f, 0x6a, 0x2b, 0xc7, 0x7f, 0x6b, 0xaf, - 0x8c, 0xf0, 0x7c, 0x4, 0xfd, 0x9e, 0xbc, 0x63, 0xe2, 0xe7, - 0x90, 0x2d, 0xe4, 0x36, 0x8d, 0x6d, 0x60, 0xb9, 0xc1, 0x7b, - 0xa9, 0x7f, 0x77, 0x10, 0x1f, 0x46, 0x6d, 0xc7, 0xd9, 0x4d, - 0x5f, 0xfd, 0x98, 0xbe, 0x21, 0x78, 0xaf, 0xe2, 0xc7, 0xc1, - 0x1f, 0xc, 0xf8, 0xc3, 0xc6, 0x5a, 0x5d, 0x96, 0x8b, 0xac, - 0x6b, 0x50, 0x7d, 0xb1, 0x6c, 0x6c, 0x43, 0xec, 0x8e, 0x6, - 0x3f, 0xba, 0x27, 0x79, 0x27, 0x2c, 0xb8, 0x6f, 0xf8, 0x10, - 0x15, 0x6f, 0xe3, 0x9f, 0xec, 0xf9, 0xe0, 0xaf, 0xda, 0x37, - 0xc3, 0x16, 0x9e, 0x1e, 0xf1, 0xd5, 0x85, 0xce, 0xa5, 0xa4, - 0xdb, 0x5c, 0x8b, 0xc8, 0xe0, 0xb7, 0xbc, 0x96, 0xdf, 0xf7, - 0xa1, 0x59, 0x43, 0x13, 0x1b, 0x2, 0x70, 0x19, 0xb8, 0x3c, - 0x73, 0x40, 0xcf, 0xe6, 0xc6, 0x59, 0x5e, 0x79, 0x5e, 0x49, - 0x18, 0xbc, 0x8e, 0x4b, 0x33, 0x31, 0xc9, 0x24, 0xf5, 0x26, - 0x9b, 0x5f, 0xba, 0x57, 0x5f, 0xf0, 0x49, 0xbf, 0xd9, 0xda, - 0xe1, 0x8, 0x8f, 0x40, 0xd6, 0x2d, 0x4f, 0xf7, 0xa2, 0xd6, - 0x67, 0x27, 0xff, 00, 0x1e, 0x26, 0xb0, 0x6f, 0x7f, 0xe0, - 0x8f, 0x3f, 0x2, 0x6e, 0x3, 0x79, 0x17, 0x5e, 0x2a, 0xb4, - 0x27, 0xa6, 0xdd, 0x4a, 0x36, 0x3, 0xf3, 0x8a, 0xaa, 0xe4, - 0x72, 0xb3, 0xf1, 0x2e, 0x8a, 0xfd, 0x8a, 0xd4, 0x7f, 0xe0, - 0x8b, 0x1f, 0xc, 0x27, 0x2c, 0x6c, 0xfc, 0x6d, 0xe2, 0xab, - 0x4f, 0x40, 0xff, 00, 0x67, 0x90, 0xf, 0xfc, 0x86, 0xd, - 0x72, 0xf7, 0xdf, 0xf0, 0x44, 0x8d, 0x5, 0xd9, 0xbe, 0xc5, - 0xf1, 0x4b, 0x51, 0x88, 0x76, 0x13, 0xe9, 0x51, 0xbf, 0xf2, - 0x91, 0x68, 0xb8, 0xb9, 0x59, 0xf9, 0x39, 0x8f, 0x6a, 0xfe, - 0x88, 0x7f, 0x62, 0xf, 0x82, 0xb1, 0xfc, 0x7, 0xfd, 0x9a, - 0xbc, 0x1f, 0xe1, 0xd6, 0x89, 0x53, 0x53, 0xb8, 0xb6, 0x1a, - 0x96, 0xa2, 0xc0, 0x60, 0xb5, 0xcc, 0xe0, 0x3b, 0x3, 0xfe, - 0xe8, 0x2a, 0x9f, 0x45, 0x15, 0xf1, 0xe7, 0x83, 0xff, 00, - 0xe0, 0x8b, 0xe9, 0xe1, 0xcf, 0x1e, 0x68, 0x3a, 0xad, 0xff, - 00, 0xc4, 0x68, 0x75, 0x8d, 0x16, 0xc6, 0xfa, 0x1b, 0x9b, - 0xab, 0x6, 0xd2, 0x8c, 0x4f, 0x71, 0x1a, 0x38, 0x63, 0x1e, - 0xef, 0x34, 0x81, 0xbb, 0x18, 0xe9, 0xde, 0xbf, 0x4e, 0x95, - 0x42, 0x28, 0x55, 0x1, 0x54, 0xc, 00, 0x3a, 0x1, 0x49, - 0x94, 0x95, 0x8a, 0x9a, 0xbe, 0xa5, 0x16, 0x8f, 0xa5, 0x5d, - 0xdf, 0x4c, 0x40, 0x8a, 0xda, 0x26, 0x95, 0x89, 0xf4, 0x3, - 0x35, 0xf1, 0x4e, 0xa5, 0xa8, 0x4d, 0xaa, 0xea, 0x17, 0x37, - 0xb7, 0xd, 0xbe, 0x7b, 0x89, 0x1a, 0x57, 0x3e, 0xe4, 0xe4, - 0xd7, 0xd6, 0x7f, 0x14, 0xf4, 0xd, 0x5f, 0xc5, 0x1e, 0x13, - 0x97, 0x4b, 0xd1, 0xcc, 0x2b, 0x2d, 0xc4, 0x8a, 0x25, 0x33, - 0x39, 0x51, 0xe5, 0x8e, 0x48, 0x1c, 0x1e, 0xa4, 0xf, 0xd6, - 0xbc, 0x32, 0x4f, 0xd9, 0xfb, 0xc5, 0xc8, 0x38, 0x82, 0xd2, - 0x4f, 0xf7, 0x6e, 0x7, 0xf5, 0xc5, 0x7c, 0x17, 0x11, 0x51, - 0xc5, 0x62, 0xaa, 0x42, 0x9d, 0x1a, 0x6d, 0xc6, 0x2a, 0xfa, - 0x2e, 0xaf, 0xfc, 0x8f, 0x23, 0x1d, 0x1a, 0x95, 0x24, 0x94, - 0x62, 0xda, 0x47, 0x9b, 0x51, 0x5d, 0xec, 0xdf, 0x3, 0x7c, - 0x67, 0xf, 0xfc, 0xc2, 0x84, 0x9f, 0xee, 0x5c, 0x46, 0x7f, - 0xf6, 0x6a, 0xa5, 0x2f, 0xc2, 0x2f, 0x18, 0x43, 0xf7, 0xb4, - 0x2b, 0x83, 0xfe, 0xe9, 0x56, 0xfe, 0x46, 0xbe, 0x2a, 0x58, - 0xc, 0x5c, 0x77, 0xa5, 0x2f, 0xb9, 0x9e, 0x4b, 0xa3, 0x55, - 0x7d, 0x97, 0xf7, 0x1c, 0x7d, 0x7d, 0x3f, 0xfb, 0x3f, 0xe8, - 0x1f, 0xd9, 0x3e, 0x4, 0x4b, 0xb7, 0x4d, 0xb3, 0x6a, 0x12, - 0xb4, 0xc4, 0x91, 0xce, 0xc1, 0xf2, 0xaf, 0xf2, 0x27, 0xf1, - 0xaf, 0x9, 0xb7, 0xf8, 0x63, 0xe2, 0x79, 0x6f, 0x60, 0xb7, - 0x93, 0x44, 0xbd, 0x84, 0x49, 0x22, 0xa1, 0x91, 0xa1, 0x3b, - 0x57, 0x27, 0x19, 0x27, 0xd0, 0x57, 0xd7, 0x3a, 0x75, 0x8c, - 0x5a, 0x5d, 0x85, 0xb5, 0x9c, 0xb, 0xb6, 0x18, 0x23, 0x58, - 0x90, 0x7a, 00, 0x30, 0x2b, 0xeb, 0x38, 0x6b, 0x5, 0x38, - 0xd7, 0x9d, 0x7a, 0xb1, 0x6b, 0x95, 0x59, 0x5d, 0x5b, 0x57, - 0xff, 00, 0x3, 0xf3, 0x3d, 0x2c, 0x5, 0x26, 0xa6, 0xe7, - 0x25, 0xb1, 0x66, 0x8a, 0x28, 0xaf, 0xd1, 0x4f, 0x74, 0x2b, - 0xcd, 0x7f, 0x68, 0x38, 0xbc, 0xcf, 0x87, 0x53, 0x36, 0x3e, - 0xe5, 0xcc, 0x4d, 0xfa, 0xe3, 0xfa, 0xd7, 0xa5, 0x57, 0x3, - 0xf1, 0xce, 0x2f, 0x37, 0xe1, 0x9e, 0xa8, 0x7f, 0xb8, 0xd1, - 0x37, 0xfe, 0x44, 0x5f, 0xf1, 0xaf, 0x37, 0x32, 0x5c, 0xd8, - 0x2a, 0xcb, 0xfb, 0xaf, 0xf2, 0x39, 0xf1, 0xa, 0xf4, 0xa5, - 0xe8, 0x7c, 0xa5, 0x45, 0x14, 0x57, 0xe2, 0x27, 0xc9, 0x5, - 0x14, 0x51, 0x40, 0x1f, 0x64, 0x7c, 0x3a, 0xba, 0xfb, 0x67, - 0x80, 0xf4, 0x9, 0x49, 0xc9, 0x36, 0x51, 0x3, 0xf5, 0xa, - 0x7, 0xf4, 0xae, 0x8e, 0xb8, 0x4f, 0x82, 0x17, 0x86, 0xf3, - 0xe1, 0xa6, 0x95, 0x93, 0x93, 0x17, 0x99, 0x11, 0xfc, 0x1d, - 0xb1, 0xfa, 0x62, 0xbb, 0xba, 0xfd, 0xd3, 0x5, 0x3f, 0x69, - 0x86, 0xa5, 0x3e, 0xf1, 0x5f, 0x91, 0xf6, 0x14, 0x5f, 0x35, - 0x38, 0xbf, 0x24, 0x14, 0x51, 0x45, 0x76, 0x1a, 0x85, 0x14, - 0x56, 0x7f, 0x88, 0x35, 0x68, 0xf4, 0x1d, 0xe, 0xff, 00, - 0x51, 0x97, 0xee, 0x5a, 0xc2, 0xf2, 0x9f, 0x7c, 0xe, 0x5, - 0x4c, 0xa4, 0xa1, 0x17, 0x29, 0x6c, 0x84, 0xdd, 0x95, 0xd9, - 0xf2, 0xbf, 0xc6, 0xd, 0x78, 0xf8, 0x83, 0xe2, 0x6, 0xa9, - 0x20, 0x6d, 0xd0, 0xdb, 0xbf, 0xd9, 0x63, 0xfa, 0x27, 0x7, - 0xff, 00, 0x1e, 0xdc, 0x7f, 0x1a, 0xe3, 0x2a, 0x4b, 0x89, - 0xde, 0xea, 0x79, 0x66, 0x90, 0xee, 0x92, 0x46, 0x2e, 0xc7, - 0xd4, 0x93, 0x93, 0x51, 0xd7, 0xe1, 0x38, 0x8a, 0xcf, 0x11, - 0x5a, 0x75, 0x65, 0xf6, 0x9b, 0x67, 0xc7, 0x4e, 0x4e, 0x72, - 0x72, 0x7d, 0x42, 0x8a, 0x28, 0xae, 0x72, 0xe, 0xb7, 0xe1, - 0x46, 0x8f, 0xfd, 0xb7, 0xf1, 0x7, 0x46, 0x81, 0x97, 0x7c, - 0x69, 0x37, 0x9e, 0xe3, 0xb6, 0x10, 0x16, 0xfe, 0x60, 0x57, - 0xd7, 0xd5, 0xf3, 0xdf, 0xec, 0xd1, 0xa3, 0xf9, 0xfa, 0xd6, - 0xad, 0xa9, 0xb2, 0xf1, 0x6f, 0xa, 0xc0, 0x87, 0xdd, 0xce, - 0x4f, 0xe8, 0xbf, 0xad, 0x7d, 0x9, 0x5f, 0xaa, 0xf0, 0xd5, - 0xf, 0x67, 0x82, 0xf6, 0x8f, 0x79, 0x36, 0xfe, 0x4b, 0x43, - 0xe8, 0xf0, 0x10, 0xe5, 0xa5, 0xcd, 0xdc, 0x28, 0xa2, 0x8a, - 0xfa, 0xb3, 0xd2, 0xa, 0x28, 0xa2, 0x80, 0xa, 0xf9, 0xdb, - 0xf6, 0x88, 0xf0, 0x69, 0xd3, 0xf5, 0x98, 0x7c, 0x41, 0x6e, - 0x9f, 0xe8, 0xf7, 0x98, 0x8e, 0x7c, 0xf, 0xbb, 0x28, 0x1c, - 0x1f, 0xc4, 0xf, 0xfc, 0x77, 0xde, 0xbe, 0x89, 0xac, 0xdf, - 0x10, 0xe8, 0x36, 0x9e, 0x27, 0xd1, 0xae, 0xb4, 0xcb, 0xd4, - 0xdf, 0x6f, 0x70, 0xbb, 0x5b, 0x1d, 0x54, 0xf5, 0x4, 0x7b, - 0x83, 0xcd, 0x79, 0x59, 0x9e, 0x9, 0x63, 0xf0, 0xd2, 0xa3, - 0xd7, 0x75, 0xeb, 0xfd, 0x68, 0x73, 0x62, 0x28, 0xfb, 0x6a, - 0x6e, 0x3d, 0x4f, 0x89, 0xa8, 0xae, 0x8b, 0xc7, 0x1e, 0x8, - 0xbf, 0xf0, 0x2e, 0xb5, 0x25, 0x95, 0xe2, 0x16, 0x88, 0x92, - 0x60, 0xb8, 0x3, 0xe5, 0x95, 0x3d, 0x47, 0xbf, 0xa8, 0xed, - 0x5c, 0xed, 0x7e, 0x33, 0x56, 0x94, 0xe8, 0xcd, 0xd3, 0xa8, - 0xac, 0xd1, 0xf2, 0xb2, 0x8b, 0x8b, 0xe5, 0x96, 0xe1, 0x45, - 0x14, 0x56, 0x44, 0x9b, 0x7e, 0x12, 0xf1, 0x86, 0xa7, 0xe0, - 0xbd, 0x51, 0x6f, 0xb4, 0xd9, 0xb6, 0x3f, 0xdd, 0x92, 0x36, - 0xe5, 0x25, 0x5f, 0x46, 0x15, 0xf4, 0x1f, 0x85, 0x3e, 0x3e, - 0x78, 0x7b, 0x5d, 0x44, 0x8f, 0x50, 0x66, 0xd1, 0xee, 0xb8, - 0x4, 0x4f, 0xcc, 0x44, 0xfb, 0x38, 0xe9, 0xf8, 0xe2, 0xbe, - 0x61, 0xa2, 0xbd, 0xac, 0x6, 0x6d, 0x89, 0xcb, 0xfd, 0xda, - 0x6e, 0xf1, 0xec, 0xf6, 0xff, 00, 0x80, 0x75, 0x51, 0xc4, - 0xd4, 0xa1, 0xa4, 0x76, 0xec, 0x7d, 0xb7, 0x69, 0xe2, 0xd, - 0x2e, 0xfd, 0x3, 0x5b, 0x6a, 0x36, 0x97, 0xa, 0x46, 0x73, - 0x1c, 0xea, 0xdf, 0xc8, 0xd4, 0xb3, 0x6a, 0xf6, 0x36, 0xeb, - 0xba, 0x5b, 0xdb, 0x78, 0x97, 0xd5, 0xe5, 0x50, 0x3f, 0x9d, - 0x7c, 0x3f, 0x8a, 0x31, 0x5f, 0x46, 0xb8, 0xae, 0x76, 0xd6, - 0x8e, 0xbe, 0xbf, 0xf0, 0xe, 0xff, 00, 0xed, 0x27, 0xfc, - 0xbf, 0x89, 0xf5, 0x9f, 0x88, 0xbe, 0x32, 0xf8, 0x5b, 0xc3, - 0xb1, 0x9c, 0xea, 0x2b, 0x7f, 0x38, 0xe9, 0xd, 0x96, 0x24, - 0x3f, 0x98, 0xe0, 0x7e, 0x26, 0xbc, 0x47, 0xe2, 0x7, 0xc6, - 0xad, 0x5b, 0xc6, 0x4b, 0x25, 0xa5, 0xa8, 0x3a, 0x66, 0x96, - 0xc0, 0xab, 0x43, 0x1b, 0x65, 0xe5, 0x1f, 0xed, 0xb7, 0xa7, - 0xb0, 0xe3, 0xeb, 0x5e, 0x75, 0x45, 0x78, 0x98, 0xdc, 0xf7, - 0x17, 0x8c, 0x8b, 0x85, 0xf9, 0x62, 0xfa, 0x2f, 0xf3, 0x39, - 0x2a, 0xe3, 0x2a, 0xd5, 0x56, 0xd9, 0x5, 0x14, 0x51, 0x5f, - 0x3a, 0x70, 0x85, 0x14, 0x55, 0x8b, 0xd, 0x3e, 0xe7, 0x55, - 0xbc, 0x86, 0xd2, 0xd2, 0x17, 0xb8, 0xb9, 0x95, 0x82, 0xa4, - 0x68, 0x32, 0x58, 0xd3, 0x49, 0xc9, 0xd9, 0x6e, 0x1b, 0x89, - 0x65, 0x65, 0x3e, 0xa3, 0x77, 0xd, 0xad, 0xb4, 0x4d, 0x35, - 0xc4, 0xcc, 0x11, 0x23, 0x41, 0x92, 0xc4, 0xf6, 0xaf, 0xad, - 0x3e, 0x18, 0xf8, 0x6, 0x2f, 00, 0xf8, 0x7d, 0x6d, 0xdb, - 0x64, 0x9a, 0x84, 0xe7, 0xcc, 0xb9, 0x99, 0x7b, 0xb7, 0x65, - 0x1e, 0xc3, 0xfc, 0x4f, 0x7a, 0xc6, 0xf8, 0x4b, 0xf0, 0x9a, - 0x2f, 0x4, 0x5b, 0xfd, 0xbf, 0x50, 0x9, 0x36, 0xb5, 0x2a, - 0xe0, 0x95, 0x39, 0x58, 0x14, 0xff, 00, 0xa, 0xfb, 0xfa, - 0x9f, 0xc3, 0xeb, 0xe9, 0x35, 0xfa, 0x86, 0x47, 0x94, 0x3c, - 0x1a, 0xfa, 0xc5, 0x75, 0xef, 0xbd, 0x97, 0x65, 0xfe, 0x67, - 0xd0, 0xe0, 0xf0, 0xbe, 0xcb, 0xdf, 0x9e, 0xff, 00, 0x90, - 0x51, 0x45, 0x23, 0x30, 0x55, 0x24, 0x9c, 0x1, 0xc9, 0x35, - 0xf5, 0xe7, 0xa8, 0x71, 0xba, 0xef, 0xc5, 0x8d, 0xf, 0xc3, - 0x5e, 0x29, 0xfe, 0xc4, 0xd4, 0x64, 0x7b, 0x77, 0xf2, 0x96, - 0x43, 0x73, 0xb7, 0x31, 0xa9, 0x39, 0xf9, 0x5b, 0x1c, 0x8e, - 0x30, 0x73, 0x8c, 0x73, 0x5d, 0x55, 0x8e, 0xa3, 0x6b, 0xaa, - 0x40, 0xb3, 0xd9, 0xdc, 0xc5, 0x75, 0xb, 0x72, 0x24, 0x85, - 0xc3, 0x29, 0xfc, 0x45, 0x7c, 0x75, 0xe3, 0x8d, 0x78, 0xf8, - 0x9b, 0xc5, 0xba, 0xa6, 0xa5, 0x9c, 0xa4, 0xd3, 0xb7, 0x97, - 0xfe, 0xe0, 0xe1, 0x7f, 0x40, 0x2a, 0x86, 0x93, 0xae, 0x6a, - 0x1a, 0xd, 0xc8, 0xb8, 0xd3, 0xaf, 0x67, 0xb2, 0x97, 0xfb, - 0xd0, 0xb9, 0x5c, 0xfd, 0x7d, 0x7f, 0x1a, 0xfc, 0xf5, 0x71, - 0x3c, 0xa9, 0xd7, 0x9c, 0x67, 0xe, 0x68, 0x5d, 0xda, 0xda, - 0x3b, 0x7e, 0xbf, 0x81, 0xe1, 0xac, 0xc1, 0xa9, 0xb4, 0xd5, - 0xd1, 0xf6, 0xed, 0x15, 0xf3, 0x26, 0x8d, 0xfb, 0x43, 0x78, - 0x9f, 0x4e, 0xda, 0xb7, 0x82, 0xd7, 0x53, 0x8c, 0x75, 0xf3, - 0x63, 0xd8, 0xe7, 0xf1, 0x5c, 0xf, 0xd2, 0xbb, 0x6d, 0x2f, - 0xf6, 0x96, 0xd2, 0xa6, 0x55, 0x1a, 0x86, 0x95, 0x77, 0x6c, - 0xdd, 0xcc, 0xc, 0xb2, 0x2f, 0xeb, 0xb4, 0xd7, 0xd0, 0x51, - 0xcf, 0xf0, 0x15, 0xb7, 0x9f, 0x2b, 0xf3, 0x5f, 0xd2, 0x3b, - 0x61, 0x8d, 0xa3, 0x2e, 0xb6, 0x3d, 0x96, 0x8a, 0xf3, 0xcb, - 0x5f, 0x8f, 0x5e, 0xe, 0xb8, 0xc6, 0xeb, 0xe9, 0xad, 0xcf, - 0xa4, 0xb6, 0xef, 0xfd, 0x1, 0xad, 0x8, 0xbe, 0x31, 0x78, - 0x3a, 0x51, 0xc6, 0xb9, 0x2, 0xff, 00, 0xbc, 0xae, 0x3f, - 0x98, 0xaf, 0x4a, 0x39, 0x86, 0xe, 0x7f, 0xd, 0x58, 0xfd, - 0xe8, 0xe8, 0x55, 0xe9, 0x3d, 0xa4, 0xbe, 0xf3, 0xb3, 0xa2, - 0xb8, 0xa9, 0xfe, 0x32, 0xf8, 0x36, 0x1, 0x93, 0xad, 0xc4, - 0xff, 00, 0xf5, 0xce, 0x37, 0x6f, 0xe4, 0x2b, 0x9b, 0xd7, - 0x7f, 0x68, 0xcd, 0x2, 0xca, 0x16, 0x1a, 0x65, 0xbd, 0xce, - 0xa3, 0x3f, 0xf0, 0xee, 0x5f, 0x2a, 0x3f, 0xc4, 0x9e, 0x7f, - 0x4a, 0x8a, 0x99, 0x9e, 0xa, 0x92, 0xbc, 0xaa, 0xc7, 0xef, - 0xbf, 0xe4, 0x29, 0x62, 0x29, 0x45, 0x5d, 0xc9, 0x16, 0xbf, - 0x68, 0x6d, 0x4a, 0xde, 0xd7, 0xc0, 0x46, 0xd6, 0x42, 0x3e, - 0xd1, 0x75, 0x71, 0x18, 0x89, 0x7b, 0xfc, 0xa7, 0x73, 0x1f, - 0xc8, 0x63, 0xf1, 0xaf, 0x98, 0xeb, 0x7b, 0xc6, 0x3e, 0x35, - 0xd4, 0xfc, 0x71, 0xaa, 0x7d, 0xb7, 0x52, 0x90, 0x12, 0xa3, - 0x6c, 0x50, 0xc6, 0x30, 0x91, 0xaf, 0xa0, 0x1f, 0xd7, 0xad, - 0x60, 0xd7, 0xe5, 0x99, 0xbe, 0x3a, 0x38, 0xfc, 0x53, 0xab, - 0x5, 0xee, 0xa5, 0x64, 0x7c, 0xe6, 0x26, 0xb2, 0xad, 0x53, - 0x99, 0x6c, 0x14, 0x51, 0x45, 0x78, 0xa7, 0x28, 0x55, 0xcd, - 0x1e, 0xc5, 0xb5, 0x3d, 0x5e, 0xca, 0xcd, 0x46, 0x5a, 0xe2, - 0x74, 0x88, 0x1, 0xfe, 0xd3, 0x1, 0xfd, 0x6a, 0x9d, 0x7a, - 0x77, 0xc0, 0x1f, 0xa, 0x9d, 0x73, 0xc6, 0x1f, 0xda, 0x12, - 0xa9, 0x36, 0xda, 0x6a, 0xf9, 0xb9, 0xec, 0x64, 0x3c, 0x20, - 0xfe, 0x67, 0xf0, 0x15, 0xdb, 0x82, 0xc3, 0xcb, 0x15, 0x88, - 0x85, 0x18, 0xf5, 0x7f, 0x87, 0x5f, 0xc0, 0xd6, 0x94, 0x1d, - 0x49, 0xa8, 0xae, 0xa7, 0xd3, 0x68, 0xa1, 0x14, 0x28, 0xe8, - 0x6, 0x29, 0xd4, 0x51, 0x5f, 0xb9, 0x9f, 0x60, 0x14, 0x51, - 0x45, 00, 0x56, 0xd4, 0x5f, 0xcb, 0xb0, 0xb8, 0x6e, 0x98, - 0x43, 0xfc, 0xab, 0xe1, 0x1f, 0x8b, 0xd7, 0x1e, 0x77, 0x88, - 0xe5, 0xef, 0xf3, 0x1f, 0xe7, 0x5f, 0x72, 0xf8, 0x92, 0x5f, - 0x27, 0x43, 0xbc, 0x6e, 0x98, 0x8c, 0xd7, 0xc1, 0x5f, 0x12, - 0xa6, 0xf3, 0xbc, 0x45, 0x3f, 0xb3, 0x1a, 0xf8, 0xce, 0x22, - 0x97, 0xbb, 0x4e, 0x3e, 0x67, 0xc9, 0xf1, 0xc, 0xad, 0x41, - 0x23, 0xc8, 0x3e, 0x20, 0x4b, 0xb3, 0x4a, 0x9b, 0xe8, 0x6b, - 0xe9, 0x1f, 0xf8, 0x25, 0xa6, 0x9e, 0x23, 0xf8, 0x57, 0xe3, - 0x5b, 0xfc, 0x7c, 0xd7, 0x5e, 0x20, 0x64, 0xcf, 0xb2, 0x41, - 0x1f, 0xff, 00, 0x14, 0x6b, 0xe6, 0x1f, 0x89, 0x93, 0x6c, - 0xd2, 0x65, 0xfa, 0x1f, 0xe5, 0x5f, 0x60, 0x7f, 0xc1, 0x32, - 0x6c, 0x3e, 0xcd, 0xfb, 0x35, 0x1b, 0xad, 0xb8, 0x37, 0xba, - 0xe5, 0xec, 0xd9, 0xf5, 00, 0xaa, 0x7f, 0xec, 0x95, 0xd9, - 0x92, 0xc6, 0xd4, 0xcf, 0x99, 0xe1, 0x18, 0xdf, 0x13, 0x5e, - 0x7e, 0x87, 0xd6, 0x74, 0x51, 0x45, 0x7d, 0x39, 0xfa, 0x90, - 0x57, 0x82, 0xfe, 0xd6, 0xde, 0x35, 0x3a, 0x3f, 0x84, 0x6d, - 0x3c, 0x3f, 0x3, 0x62, 0x7d, 0x56, 0x4d, 0xd2, 0xe0, 0xf2, - 0x22, 0x42, 0xf, 0xea, 0xd8, 0x1f, 0x81, 0xaf, 0x7a, 0xaf, - 0x85, 0xbf, 0x68, 0x3f, 0x1a, 0x1f, 0x1a, 0x7c, 0x4b, 0xd4, - 0x1a, 0x29, 0x4, 0x96, 0x5a, 0x79, 0xfb, 0x15, 0xbe, 0xd2, - 0x70, 0x42, 0x9f, 0x98, 0xfe, 0x2d, 0x9f, 0xc8, 0x57, 0x85, - 0x9c, 0xe2, 0x3d, 0x86, 0x15, 0xa5, 0xbc, 0xb4, 0xff, 00, - 0x33, 0xe7, 0xb3, 0xdc, 0x4f, 0xd5, 0xf0, 0x6e, 0x29, 0xeb, - 0x2d, 0x3f, 0xcf, 0xf0, 0x39, 0x5f, 0x2, 0xf8, 0x7e, 0x4f, - 0x12, 0xf8, 0xa3, 0x4f, 0xd3, 0xe3, 0x5d, 0xde, 0x6c, 0xaa, - 0xf, 0xd3, 0x3c, 0xd7, 0xe8, 0x46, 0x95, 0xa7, 0xc7, 0xa5, - 0x69, 0xd6, 0xf6, 0x91, 00, 0xb1, 0xc2, 0x81, 00, 0x1e, - 0xd5, 0xf2, 0xef, 0xec, 0x9d, 0xe0, 0xff, 00, 0xb6, 0x6b, - 0x77, 0x7a, 0xd4, 0xc9, 0x98, 0xed, 0xd3, 0x6c, 0x64, 0x8e, - 0x37, 0x1a, 0xfa, 0xb6, 0xb8, 0xb8, 0x7f, 0xf, 0xc9, 0x46, - 0x55, 0xde, 0xf2, 0xfc, 0x91, 0x87, 0xf, 0xe1, 0xbd, 0x8e, - 0x1b, 0xda, 0x3d, 0xe5, 0xf9, 0x5, 0x14, 0x51, 0x5f, 0x54, - 0x7d, 0x41, 0xf9, 0x87, 0xff, 00, 0x5, 0x9e, 0xf8, 0xdd, - 0x1d, 0xb6, 0x8b, 0xe1, 0x2f, 0x85, 0x76, 0x17, 0x2c, 0x2e, - 0x2e, 0x65, 0xfe, 0xda, 0xd4, 0xe3, 0x46, 0xc0, 0xf2, 0x97, - 0x72, 0x40, 0x8d, 0xeb, 0x96, 0xde, 0xd8, 0xff, 00, 0x61, - 0x4d, 0x7e, 0x72, 0xfe, 0xcf, 0x7f, 0xa, 0xe5, 0xf8, 0xdb, - 0xf1, 0xb3, 0xc1, 0xbe, 0x7, 0x89, 0xfc, 0xb5, 0xd6, 0x75, - 0x8, 0xe0, 0x99, 0xf3, 0x8d, 0xb0, 0x8c, 0xbc, 0xa4, 0x7b, - 0x88, 0xd5, 0xc8, 0xf7, 0xaf, 0x55, 0xff, 00, 0x82, 0x90, - 0x6b, 0xf7, 0x9a, 0xff, 00, 0xed, 0x9f, 0xf1, 0x1c, 0xdd, - 0xc8, 0xce, 0xb6, 0x77, 0x30, 0x59, 0x40, 0xac, 0x73, 0xb2, - 0x34, 0xb7, 0x8c, 00, 0x3d, 0xb2, 0x58, 0xff, 00, 0xc0, - 0x8d, 0x7c, 0xfb, 0xe1, 0x5f, 0x15, 0x6a, 0xfe, 0x7, 0xf1, - 0x1e, 0x9d, 0xaf, 0xe8, 0x3a, 0x84, 0xfa, 0x56, 0xb3, 0xa7, - 0xcc, 0xb7, 0x16, 0xb7, 0x96, 0xcd, 0xb6, 0x48, 0x9c, 0x74, - 0x20, 0xff, 00, 0x9c, 0xf4, 0xaa, 0x33, 0x6f, 0x53, 0xfa, - 0x71, 0x51, 0xa7, 0xf8, 0x4b, 0xc3, 0xc0, 0x7c, 0x96, 0x7a, - 0x5e, 0x99, 0x6b, 0x8f, 0x45, 0x8a, 0x18, 0xd3, 0xf9, 0x5, - 0x5f, 0xd2, 0xbf, 0xe, 0xbe, 0x24, 0x7f, 0xc1, 0x4e, 0x7e, - 0x37, 0x6a, 0x3f, 0x13, 0x7c, 0x4b, 0xa8, 0xf8, 0x57, 0xc6, - 0xd3, 0xe9, 0x9e, 0x1a, 0x9a, 0xfe, 0x66, 0xd3, 0x74, 0xe3, - 0x67, 0x6e, 0xe9, 0xd, 0xbe, 0xe2, 0x23, 0x1f, 0x34, 0x64, - 0xe7, 0x68, 0x4, 0xe4, 0x9e, 0x49, 0xa8, 0x3c, 0x61, 0xff, - 00, 0x5, 0x45, 0xf8, 0xd9, 0xe3, 0xcf, 0x86, 0xda, 0xd7, - 0x83, 0x35, 0x89, 0xf4, 0x49, 0xac, 0xf5, 0x6b, 0x17, 0xb0, - 0xb9, 0xbe, 0x86, 0xc5, 0xa2, 0xba, 0xf2, 0xdd, 0x76, 0xb1, - 0xc, 0xae, 0x14, 0x31, 0x19, 0x19, 0xdb, 0xdc, 0xd7, 0xc8, - 0xb4, 0x92, 0x1b, 0x7d, 0x8f, 0xdf, 0x7f, 0xf8, 0x27, 0x7f, - 0xc4, 0x8f, 0x88, 0xff, 00, 0x18, 0xbe, 0x1, 0x47, 0xe3, - 0x6f, 0x88, 0xfa, 0xc2, 0xea, 0xb7, 0x7a, 0xad, 0xf4, 0xa3, - 0x4f, 0x9, 0x69, 0x1d, 0xb8, 0x8e, 0xda, 0x33, 0xe5, 0xe4, - 0x84, 0x51, 0x92, 0xce, 0xae, 0x72, 0x7b, 0x1, 0x5f, 0x50, - 0xd7, 0xe3, 0xaf, 0xc3, 0xf, 0xf8, 0x2b, 0xf6, 0xa3, 0xf0, - 0xbf, 0xc0, 0xfa, 0x7, 0x85, 0x34, 0xff, 00, 0x84, 0xda, - 0x50, 0xd2, 0xb4, 0x6b, 0x38, 0xac, 0xa0, 0x58, 0x75, 0x69, - 0x23, 0x25, 0x51, 0x40, 0xc9, 0xfd, 0xd1, 0xe4, 0xf2, 0x4f, - 0xb9, 0x35, 0xe8, 0x5a, 0x7f, 0xfc, 0x16, 0xee, 0x16, 0x61, - 0xf6, 0xef, 0x84, 0xb2, 0x46, 0xbd, 0xcd, 0xbe, 0xb8, 0x1f, - 0xf9, 0xc0, 0x28, 0xb1, 0x57, 0x47, 0xea, 0x45, 0x15, 0xf9, - 0xbd, 0x65, 0xff, 00, 0x5, 0xb1, 0xf0, 0x3c, 0x85, 0x7e, - 0xd7, 0xf0, 0xe3, 0xc4, 0x10, 0xe, 0xe6, 0x1b, 0xc8, 0x24, - 0xc7, 0xe7, 0xb6, 0xba, 0xed, 0x3, 0xfe, 0xb, 0x19, 0xf0, - 0x8b, 0x5c, 0xbd, 0xb6, 0xb3, 0x3e, 0x19, 0xf1, 0x84, 0x17, - 0x57, 0x12, 0x2c, 0x51, 0xc6, 0x2d, 0x20, 0x93, 0x73, 0xb1, - 0xc0, 0x51, 0xb6, 0x6e, 0x72, 0x48, 0xed, 0x48, 0x2e, 0x8f, - 0xbc, 0xe8, 0xa8, 0xad, 0xa6, 0x37, 0x16, 0xd1, 0x4a, 0x63, - 0x78, 0x4b, 0xa0, 0x63, 0x1c, 0x98, 0xdc, 0xb9, 0x19, 0xc1, - 0xc7, 0x71, 0x59, 0x1e, 0x36, 0xf1, 0xae, 0x89, 0xf0, 0xe7, - 0xc2, 0x9a, 0x9f, 0x89, 0x7c, 0x47, 0x7f, 0x1e, 0x97, 0xa2, - 0x69, 0xb0, 0x99, 0xee, 0xee, 0xe5, 0x4, 0xac, 0x48, 0x3b, - 0xe0, 0x2, 0x4f, 0x5e, 0x80, 0x50, 0x33, 0x72, 0x8a, 0xf0, - 0x2b, 0xf, 0xdb, 0xdb, 0xf6, 0x7d, 0xd4, 0x63, 0xf, 0x1f, - 0xc5, 0x6f, 0xf, 0xc6, 0xf, 0x6b, 0x89, 0x9a, 0x23, 0xf9, - 0x32, 0x8a, 0xdc, 0xb1, 0xfd, 0xb1, 0x7e, 0x6, 0xea, 0x3f, - 0xea, 0x3e, 0x2d, 0x78, 0x40, 0xff, 00, 0xbf, 0xac, 0x42, - 0x9f, 0xfa, 0x13, 0xa, 00, 0xf6, 0x1a, 0x2b, 0x82, 0xd2, - 0x7e, 0x3e, 0x7c, 0x33, 0xd7, 0xbf, 0xe4, 0x1d, 0xf1, 0xb, - 0xc2, 0xf7, 0xdf, 0xf5, 0xc3, 0x58, 0xb7, 0x7f, 0xe4, 0xf5, - 0xd1, 0xd9, 0x78, 0xd7, 0xc3, 0xda, 0x91, 0x2, 0xd3, 0x5e, - 0xd3, 0x2e, 0x89, 0xe8, 0x21, 0xbc, 0x8d, 0xf3, 0xf9, 0x35, - 00, 0x6d, 0x51, 0x51, 0xa5, 0xc4, 0x52, 0x7d, 0xc9, 0x51, - 0xbf, 0xdd, 0x60, 0x6a, 0x4a, 00, 0x28, 0xa2, 0x8a, 00, - 0x2a, 0xbd, 0xfe, 0x9f, 0x6d, 0xaa, 0x5a, 0x49, 0x6b, 0x79, - 0x6f, 0x1d, 0xd5, 0xb4, 0x98, 0xdf, 0x14, 0xca, 0x19, 0x5b, - 0x9c, 0xf2, 0xf, 0xbd, 0x58, 0xa2, 0x93, 0x49, 0xab, 0x30, - 0x6a, 0xfa, 0x33, 0x96, 0x9b, 0xe1, 0x77, 0x84, 0xe7, 0x1f, - 0x36, 0x81, 0x62, 0x3f, 0xdc, 0x8b, 0x6f, 0xf2, 0xaa, 0x53, - 0x7c, 0x17, 0xf0, 0x6c, 0xfd, 0x74, 0x54, 0x5f, 0xf7, 0x25, - 0x91, 0x7f, 0x93, 0x57, 0x6d, 0x45, 0x72, 0x4b, 0x5, 0x85, - 0x96, 0xf4, 0xa3, 0xf7, 0x23, 0x27, 0x46, 0x9b, 0xde, 0x2b, - 0xee, 0x3c, 0xf6, 0x4f, 0x80, 0xde, 0xc, 0x7e, 0x9a, 0x74, - 0xa9, 0xfe, 0xed, 0xd4, 0x9f, 0xd5, 0xaa, 0xac, 0x9f, 0xb3, - 0xd7, 0x84, 0x9f, 0xee, 0xa5, 0xe4, 0x7f, 0xee, 0xdc, 0x7f, - 0x88, 0xaf, 0x4c, 0xa2, 0xb0, 0x79, 0x66, 0x9, 0xef, 0x46, - 0x3f, 0x72, 0x23, 0xea, 0xf4, 0x7f, 0x95, 0x18, 0x7e, 0xf, - 0xf0, 0x85, 0x97, 0x82, 0x74, 0x93, 0xa7, 0x58, 0x3c, 0xcf, - 0x6f, 0xe6, 0x34, 0xa3, 0xcf, 0x60, 0xc4, 0x13, 0x8c, 0x8c, - 0x80, 0x38, 0xe2, 0xb7, 0x28, 0xa2, 0xbb, 0xe9, 0xd3, 0x8d, - 0x28, 0xa8, 0x41, 0x59, 0x23, 0x68, 0xc5, 0x45, 0x59, 0x6c, - 0x14, 0x51, 0x45, 0x68, 0x50, 0x57, 0x25, 0xf1, 0x4b, 0xc3, - 0xfa, 0x9f, 0x8a, 0x7c, 0x1f, 0x73, 0xa5, 0xe9, 0x46, 0x21, - 0x3c, 0xee, 0x81, 0xcc, 0xce, 0x50, 0x6c, 0x7, 0x27, 0x9c, - 0x1f, 0x41, 0x5d, 0x6d, 0x15, 0x8d, 0x6a, 0x51, 0xaf, 0x4e, - 0x54, 0xa5, 0xb3, 0x56, 0x22, 0x71, 0x53, 0x8b, 0x8b, 0xea, - 0x7c, 0xb5, 0x2f, 0xc0, 0xf, 0x18, 0x47, 0xd2, 0xd6, 0xda, - 0x4f, 0xf7, 0x2e, 0x17, 0xfa, 0xe2, 0xa9, 0xcb, 0xf0, 0x47, - 0xc6, 0x71, 0xff, 00, 0xcc, 0x1f, 0x7f, 0xfb, 0xb3, 0xc7, - 0xff, 00, 0xc5, 0x57, 0xd6, 0x34, 0x57, 0xcb, 0xcb, 0x86, - 0x30, 0x4f, 0x69, 0x49, 0x7c, 0xd7, 0xf9, 0x1e, 0x7b, 0xcb, - 0xe9, 0x77, 0x67, 0xc8, 0x53, 0x7c, 0x25, 0xf1, 0x7c, 0x7, - 0xe6, 0xd0, 0x6e, 0x8f, 0xfb, 0x9b, 0x5b, 0xf9, 0x1a, 0xa3, - 0x3f, 0xc3, 0xef, 0x13, 0x5b, 0xff, 00, 0xac, 0xd0, 0x75, - 0x1, 0xf4, 0xb7, 0x63, 0xfc, 0x85, 0x7d, 0x97, 0x45, 0x61, - 0x2e, 0x16, 0xc3, 0x7d, 0x9a, 0x92, 0xfc, 0x3f, 0xc8, 0x87, - 0x97, 0x43, 0xa4, 0x99, 0xe7, 0xdf, 0x3, 0xbc, 0x37, 0x2f, - 0x87, 0x7c, 0xb, 0xf, 0xda, 0x61, 0x78, 0x2e, 0xee, 0xe5, - 0x79, 0xe4, 0x49, 0x14, 0xab, 0x2f, 0x3b, 0x54, 0x10, 0x7a, - 0x70, 0xa0, 0xfe, 0x35, 0xe8, 0x34, 0x51, 0x5f, 0x59, 0x86, - 0xa1, 0x1c, 0x35, 0x18, 0xd1, 0x8e, 0xd1, 0x56, 0x3d, 0x2a, - 0x70, 0x54, 0xe0, 0xa0, 0xba, 0x5, 0x14, 0x51, 0x5d, 0x26, - 0x81, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x6, 0x57, - 0x88, 0xfc, 0x33, 0xa6, 0xf8, 0xb3, 0x4d, 0x7b, 0x1d, 0x4e, - 0xd9, 0x6e, 0x20, 0x6e, 0x46, 0x78, 0x64, 0x3e, 0xaa, 0x7a, - 0x83, 0x5f, 0x3a, 0xf8, 0xef, 0xe0, 0x66, 0xb1, 0xe1, 0x97, - 0x96, 0xe7, 0x4d, 0x56, 0xd5, 0xb4, 0xd1, 0xc8, 0x31, 0x8c, - 0xcc, 0x83, 0xfd, 0xa5, 0x1d, 0x7e, 0xa3, 0xf2, 0x15, 0xf4, - 0xfd, 0x15, 0xe3, 0xe3, 0xf2, 0xac, 0x3e, 0x60, 0xbf, 0x78, - 0xad, 0x2e, 0xeb, 0x7f, 0xf8, 0x27, 0x2d, 0x6c, 0x34, 0x2b, - 0xfc, 0x5b, 0xf7, 0x3e, 0x15, 0x20, 0xa9, 0x20, 0x8c, 0x11, - 0xc1, 0x7, 0xb5, 0x25, 0x7d, 0x89, 0xe2, 0x7f, 0x86, 0xde, - 0x1e, 0xf1, 0x70, 0x63, 0x7f, 0xa7, 0x47, 0xe7, 0x9f, 0xf9, - 0x78, 0x87, 0xe4, 0x90, 0x7e, 0x23, 0xaf, 0xe3, 0x9a, 0xf3, - 0x2d, 0x6b, 0xf6, 0x66, 0x53, 0xb9, 0xb4, 0x9d, 0x64, 0x8f, - 0x48, 0xaf, 0x23, 0xcf, 0xfe, 0x3c, 0xbf, 0xe1, 0x5f, 0x5, - 0x89, 0xe1, 0xbc, 0x65, 0x17, 0x7a, 0x56, 0x9a, 0xfb, 0x9f, - 0xdc, 0xff, 00, 0xcc, 0xf1, 0xaa, 0x60, 0x2a, 0xc7, 0xe1, - 0xd4, 0xf0, 0x8a, 0x2b, 0xd0, 0x35, 0x3f, 0x81, 0x5e, 0x30, - 0xd3, 0xdc, 0x84, 0xb0, 0x8e, 0xf5, 0x7, 0xf1, 0xdb, 0x4c, - 0xa7, 0xf4, 0x62, 0xf, 0xe9, 0x58, 0x57, 0x3f, 0xe, 0x3c, - 0x53, 0x68, 0x71, 0x26, 0x81, 0x7f, 0xff, 00, 00, 0x81, - 0x9c, 0x7e, 0x99, 0xaf, 0xa, 0xa6, 0x7, 0x15, 0x49, 0xda, - 0x74, 0xa4, 0xbe, 0x4c, 0xe2, 0x74, 0x6a, 0x47, 0x78, 0xb3, - 0x9c, 0xa2, 0xb4, 0xe4, 0xf0, 0xc6, 0xb3, 0x11, 0xc3, 0xe9, - 0x37, 0xca, 0x7d, 0xd, 0xb3, 0xff, 00, 0x85, 0x35, 0x7c, - 0x39, 0xab, 0x31, 0xc0, 0xd2, 0xaf, 0x4f, 0xd2, 0xd9, 0xff, - 00, 0xc2, 0xb9, 0xbd, 0x95, 0x4f, 0xe5, 0x7f, 0x71, 0x1c, - 0xb2, 0xec, 0x67, 0x51, 0x5b, 0xf6, 0xfe, 00, 0xf1, 0x2d, - 0xd1, 0x1e, 0x56, 0x83, 0xa8, 0xb6, 0x7a, 0x13, 0x6c, 0xe0, - 0x7e, 0x64, 0x56, 0xe6, 0x9d, 0xf0, 0x47, 0xc6, 0x3a, 0x83, - 0xa8, 0x3a, 0x5f, 0xd9, 0x50, 0xff, 00, 0x1d, 0xc4, 0xa8, - 0xa0, 0x7e, 0x19, 0x27, 0xf4, 0xae, 0x88, 0x60, 0xb1, 0x35, - 0x3e, 0xa, 0x52, 0x7f, 0x26, 0x5a, 0xa5, 0x52, 0x5b, 0x45, - 0x9c, 0x25, 0x15, 0xee, 0x3a, 0x2f, 0xec, 0xcf, 0x2b, 0x6d, - 0x6d, 0x5b, 0x58, 0x54, 0xf5, 0x8a, 0xce, 0x3c, 0x9f, 0xfb, - 0xe9, 0xbf, 0xc2, 0xbd, 0x2f, 0xc3, 0x1f, 0xa, 0x7c, 0x35, - 0xe1, 0x4d, 0xaf, 0x6b, 0xa7, 0xac, 0xf7, 0x2b, 0xff, 00, - 0x2f, 0x17, 0x5f, 0xbc, 0x7f, 0xc3, 0x3c, 0xf, 0xc0, 0xa, - 0xf7, 0x30, 0xdc, 0x39, 0x8d, 0xac, 0xef, 0x51, 0x28, 0x2f, - 0x3d, 0x5f, 0xdc, 0xbf, 0xe0, 0x1d, 0x94, 0xf0, 0x35, 0x67, - 0xf1, 0x68, 0x7c, 0xfd, 0xe0, 0xbf, 0x83, 0x9a, 0xff, 00, - 0x8c, 0xc, 0x73, 0x18, 0x7f, 0xb3, 0xb4, 0xf6, 0x23, 0x37, - 0x37, 0x20, 0x82, 0x47, 0xaa, 0xaf, 0x56, 0xfd, 0x7, 0xbd, - 0x7d, 0xf, 0xe0, 0x9f, 0x87, 0x3a, 0x37, 0x81, 0x6d, 0xb6, - 0xd8, 0xc1, 0xe6, 0x5d, 0x32, 0xe2, 0x5b, 0xb9, 0x79, 0x91, - 0xff, 00, 0xc0, 0x7b, 0xa, 0xea, 0x68, 0xaf, 0xba, 0xc0, - 0x64, 0xd8, 0x6c, 0x7, 0xbd, 0x15, 0xcd, 0x2e, 0xef, 0xf4, - 0xec, 0x7b, 0x14, 0x30, 0xb4, 0xe8, 0xea, 0xb5, 0x7d, 0xc2, - 0x8a, 0x28, 0xaf, 0x74, 0xec, 0xa, 0xe5, 0x7e, 0x28, 0x6b, - 0xe3, 0xc3, 0x7e, 0x5, 0xd5, 0xae, 0xc3, 0x6d, 0x95, 0xa2, - 0x30, 0xc4, 0x7b, 0xef, 0x7f, 0x94, 0x7e, 0x59, 0xcf, 0xe1, - 0x5d, 0x55, 0x78, 0xc7, 0xed, 0x29, 0x71, 0x76, 0xfa, 0x46, - 0x95, 0x69, 0xd, 0xbc, 0xcf, 0x6d, 0xe6, 0xb4, 0xf3, 0x4a, - 0x88, 0x4a, 0x29, 0x3, 0xa, 0x9, 0xe9, 0xfc, 0x4d, 0xf9, - 0x57, 0x99, 0x99, 0xd7, 0x78, 0x7c, 0x1d, 0x4a, 0x91, 0xde, - 0xda, 0x7c, 0xf4, 0x39, 0xf1, 0x13, 0x70, 0xa5, 0x29, 0x23, - 0xe7, 0xba, 0x28, 0xa2, 0xbf, 0x12, 0x3e, 0x48, 0x28, 0xa2, - 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, - 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0xbb, 0x3f, 0x5, 0x7c, - 0x27, 0xd7, 0xbc, 0x69, 0x2c, 0x4f, 0x15, 0xbb, 0x59, 0x69, - 0xed, 0xc9, 0xbd, 0xb8, 0x5c, 0x2e, 0x3f, 0xd9, 0x1d, 0x5b, - 0xf0, 0xe3, 0xde, 0xb7, 0xa3, 0x42, 0xae, 0x22, 0x6a, 0x9d, - 0x18, 0xb6, 0xfc, 0x8b, 0x84, 0x25, 0x37, 0x68, 0xab, 0xb3, - 0x9c, 0xd0, 0x34, 0x1b, 0xdf, 0x13, 0x6a, 0xd6, 0xfa, 0x76, - 0x9f, 0x17, 0x9d, 0x73, 0x33, 0x60, 0xe, 0xca, 0x3b, 0xb1, - 0x3d, 0x80, 0xf5, 0xaf, 0xae, 0xbc, 0xb, 0xe0, 0xeb, 0x5f, - 0x3, 0xf8, 0x7a, 0xd, 0x3a, 0xdc, 0x6, 0x90, 0xd, 0xf3, - 0xcc, 0x6, 0xc, 0xb2, 0x1e, 0xa7, 0xfa, 0xf, 0x6a, 0x87, - 0xc0, 0xdf, 0xf, 0xb4, 0xbf, 0x1, 0x58, 0x18, 0x2c, 0x50, - 0xc9, 0x71, 0x26, 0x3c, 0xeb, 0xa9, 00, 0xdf, 0x21, 0xfe, - 0x83, 0xd8, 0x57, 0x4f, 0x5f, 0xa9, 0x64, 0xd9, 0x3a, 0xcb, - 0xe3, 0xed, 0x6a, 0xeb, 0x51, 0xfe, 0xb, 0xb7, 0xf9, 0x9f, - 0x43, 0x85, 0xc2, 0xfb, 0x5, 0xcd, 0x2f, 0x88, 0x28, 0xa2, - 0x8a, 0xfa, 0x73, 0xd1, 0xa, 0x28, 0xa2, 0x80, 0x30, 0x7c, - 0x73, 0x37, 0x91, 0xe1, 0x8b, 0xd6, 0xe9, 0xf2, 0xe2, 0xbe, - 0x8, 0xf1, 0xc4, 0xbe, 0x66, 0xbd, 0x72, 0x73, 0xfc, 0x46, - 0xbe, 0xe8, 0xf8, 0x9f, 0x37, 0x93, 0xe1, 0x2b, 0xa3, 0x9a, - 0xf8, 0x2f, 0xc5, 0xd, 0xbf, 0x55, 0xba, 0x6c, 0xff, 00, - 0x11, 0xaf, 0x84, 0xe2, 0x19, 0x7e, 0xfa, 0x9c, 0x4f, 0x88, - 0xe2, 0x49, 0x7b, 0x91, 0x47, 0x8f, 0x7c, 0x59, 0x9f, 0xcb, - 0xd2, 0x64, 0xe7, 0xb1, 0xfe, 0x55, 0xf7, 0x67, 0xfc, 0x13, - 0xa2, 0xc9, 0xad, 0x3f, 0x64, 0xaf, 0x8, 0xbb, 0xc, 0x1b, - 0x89, 0xaf, 0x67, 0xfc, 0xd, 0xd4, 0xa3, 0xfa, 0x57, 0xc0, - 0x5f, 0x19, 0xa6, 0xf2, 0xf4, 0xa9, 0x79, 0xe3, 0x69, 0xaf, - 0xd2, 0x7f, 0xd8, 0xaf, 0x4a, 0x1a, 0x3f, 0xec, 0xaf, 0xf0, - 0xda, 00, 0x41, 0xdf, 0xa5, 0x25, 0xc1, 0xc7, 0xac, 0x8c, - 0xd2, 0x7f, 0xec, 0xd5, 0xed, 0xe5, 0xa, 0xd4, 0x91, 0xe6, - 0xf0, 0x74, 0x7d, 0xda, 0xf3, 0xf3, 0x3d, 0xb2, 0x8a, 0x28, - 0xaf, 0xa0, 0x3f, 0x49, 0x39, 0x5f, 0x8a, 0x1e, 0x30, 0x4f, - 0x2, 0x78, 0x13, 0x56, 0xd6, 0x18, 0xfe, 0xf2, 0x18, 0xb6, - 0xc2, 0x3d, 0x65, 0x6f, 0x95, 0x7, 0xe6, 0x45, 0x7e, 0x7e, - 0xa7, 0x99, 0x77, 0x71, 0x96, 0x26, 0x49, 0xa5, 0x6c, 0xb3, - 0x1e, 0x4b, 0x31, 0x3c, 0x9f, 0xce, 0xbe, 0x93, 0xfd, 0xaf, - 0xfc, 0x64, 0xf, 0xf6, 0x4f, 0x85, 0xa1, 0x3c, 0xff, 00, - 0xc7, 0xf5, 0xc1, 0xf6, 0xe5, 0x50, 0x7f, 0xe8, 0x47, 0xf0, - 0x15, 0xe3, 0xbf, 0x8, 0x3c, 0x2a, 0xde, 0x2d, 0xf1, 0xd6, - 0x9b, 0x69, 0xb4, 0xb4, 0x42, 0x40, 0xf2, 0x7b, 0x28, 0xe6, - 0xbf, 0x3e, 0xce, 0xab, 0x4b, 0x13, 0x8b, 0x8e, 0x1e, 0x1d, - 0x34, 0xf9, 0xb3, 0xf3, 0xbc, 0xe2, 0xa3, 0xc6, 0xe3, 0xe3, - 0x86, 0x86, 0xd1, 0xd3, 0xe6, 0xf7, 0xfd, 0xf, 0xae, 0xfe, - 0x7, 0x78, 0x51, 0x7c, 0x2b, 0xf0, 0xff, 00, 0x4f, 0x8c, - 0xa8, 0x59, 0xe7, 0x5f, 0x36, 0x43, 0x8e, 0xe6, 0xbd, 0x2, - 0xa3, 0xb7, 0x81, 0x2d, 0xa0, 0x8e, 0x14, 0x1b, 0x51, 0x14, - 0x28, 0x3, 0xd0, 0x54, 0x95, 0xf7, 0x54, 0x29, 0x2a, 0x14, - 0xa3, 0x4a, 0x3b, 0x25, 0x63, 0xef, 0xe9, 0x53, 0x54, 0xa1, - 0x18, 0x47, 0x64, 0x14, 0x51, 0x45, 0x6e, 0x6a, 0x7e, 0x70, - 0xff, 00, 0xc1, 0x43, 0xbf, 0xe0, 0x9c, 0x3a, 0xf7, 0xc6, - 0x5f, 0x19, 0x5d, 0x7c, 0x4c, 0xf8, 0x6b, 0xf6, 0x7b, 0x8d, - 0x7a, 0xea, 0x24, 0x1a, 0xae, 0x87, 0x33, 0x88, 0x9a, 0xe9, - 0xd1, 0x42, 0xac, 0xb1, 0x39, 0xf9, 0x77, 0x95, 0x55, 0x52, - 0xad, 0x8c, 0xed, 0x4, 0x1e, 0xb5, 0xf9, 0x9d, 0xe2, 0x4f, - 0xd9, 0xa7, 0xe2, 0xcf, 0x84, 0x2e, 0xe4, 0xb6, 0xd5, 0xfe, - 0x1b, 0x78, 0xaa, 0xce, 0x54, 0xfb, 0xc4, 0xe9, 0x13, 0xba, - 0x7e, 0xe, 0xaa, 0x54, 0xfe, 0x6, 0xbf, 0xa4, 0xfa, 0xe7, - 0xbe, 0x21, 0x78, 0xca, 0xdb, 0xe1, 0xe7, 0x81, 0xb5, 0xef, - 0x13, 0x5e, 0x47, 0x24, 0xd6, 0xfa, 0x55, 0x9c, 0xb7, 0x6d, - 0x14, 0x2a, 0x59, 0xe4, 0xda, 0xa4, 0x84, 0x50, 0x39, 0x2c, - 0xc7, 00, 0x1, 0xdc, 0xd3, 0xb9, 0x2d, 0x5c, 0xfe, 0x63, - 0xef, 0xac, 0x6e, 0x74, 0xcb, 0xb9, 0x6d, 0x6f, 0x2d, 0xe5, - 0xb4, 0xba, 0x85, 0xb6, 0x49, 0x4, 0xe8, 0x51, 0xd1, 0xbd, - 0xa, 0x9e, 0x41, 0xfa, 0xd5, 0x7a, 0xeb, 0x3e, 0x21, 0x5c, - 0x78, 0x93, 0xc5, 0xbe, 0x32, 0xd7, 0x7c, 0x49, 0xae, 0x69, - 0xb7, 0xb0, 0xea, 0x1a, 0xb5, 0xf4, 0xd7, 0xf7, 0x6, 0x68, - 0x1d, 0x70, 0xf2, 0x39, 0x72, 0x39, 0x1d, 0x1, 0x38, 0xaf, - 0xd9, 0xef, 0xf8, 0x27, 0x3f, 0xec, 0xbd, 0xe1, 0xaf, 0x8, - 0x7e, 0xcb, 0x5e, 0x1e, 0xbd, 0xf1, 0x2f, 0x86, 0xf4, 0xcd, - 0x5b, 0x58, 0xf1, 0x29, 0x3a, 0xcc, 0xe7, 0x52, 0xb1, 0x49, - 0x9a, 0x38, 0xe4, 00, 0x42, 0x9f, 0x38, 0x38, 0xc4, 0x6a, - 0xa7, 0x1e, 0xac, 0x69, 0xdc, 0x9b, 0x5c, 0xfc, 0x36, 0xa2, - 0xbf, 0xa4, 0x3d, 0x67, 0xf6, 0x53, 0xf8, 0x37, 0xe2, 0x2, - 0x7f, 0xb4, 0x3e, 0x17, 0xf8, 0x52, 0xe7, 0x3e, 0xba, 0x4c, - 0x23, 0xf9, 0x28, 0xae, 0x53, 0x54, 0xfd, 0x81, 0x7f, 0x67, - 0xbd, 0x5c, 0x62, 0x6f, 0x85, 0x5a, 0xc, 0x5f, 0xf5, 0xeb, - 0x1b, 0xc1, 0xff, 00, 0xa0, 0x30, 0xa5, 0x71, 0xf2, 0x9f, - 0xcf, 0x3d, 0x7d, 0x3f, 0xff, 00, 0x4, 0xe1, 0xf8, 0x2a, - 0x7e, 0x34, 0x7e, 0xd4, 0xfe, 0x18, 0x8e, 0xe2, 0x3, 0x2e, - 0x8f, 0xe1, 0xf6, 0xfe, 0xdc, 0xbe, 0xc8, 0x3b, 0x71, 0x9, - 0x6, 0x25, 0x27, 0xde, 0x53, 0x1f, 0xe0, 0xd, 0x7e, 0xa9, - 0x6a, 0x5f, 0xf0, 0x4c, 0x4f, 0xd9, 0xc3, 0x51, 0x18, 0xff, - 00, 0x84, 00, 0xda, 0xfb, 0xdb, 0x6a, 0x97, 0x69, 0xff, - 00, 0xb5, 0x6b, 0xd0, 0x3e, 00, 0xfe, 0xc8, 0x5f, 0xc, - 0xbf, 0x66, 0x6d, 0x43, 0x59, 0xbd, 0xf0, 0xe, 0x8d, 0x71, - 0xa6, 0xdc, 0xea, 0xd1, 0xc7, 0xd, 0xd3, 0xdc, 0x5e, 0xcb, - 0x72, 0x4a, 0x21, 0x62, 0xa1, 0x7c, 0xc2, 0x76, 0x8c, 0xb1, - 0xce, 0x3a, 0xf1, 0xe9, 0x45, 0xc3, 0x94, 0xf6, 0x7a, 0xfc, - 0xf8, 0xff, 00, 0x82, 0xc6, 0xfc, 0x66, 0x3e, 0x11, 0xf8, - 0x31, 0xa1, 0x7c, 0x3f, 0xb3, 0x98, 0xa5, 0xef, 0x8a, 0x6e, - 0xfc, 0xeb, 0x90, 0xa7, 0x9f, 0xb2, 0x5b, 0x95, 0x62, 0xf, - 0xd6, 0x46, 0x8f, 0xfe, 0xf9, 0x35, 0xfa, 0xf, 0x5f, 0x23, - 0xfe, 0xd6, 0x9f, 0xf0, 0x4f, 0x2d, 0x1b, 0xf6, 0xb2, 0xf1, - 0xd5, 0xaf, 0x8a, 0x35, 0x7f, 0x1c, 0x6b, 0x1a, 0x34, 0xf6, - 0x96, 0x6b, 0x65, 0x6d, 0x65, 0x6f, 0x6f, 0x14, 0x90, 0x44, - 0x80, 0x96, 0x24, 0x3, 0x83, 0x96, 0x66, 0x24, 0xf3, 0xd8, - 0x7a, 0x52, 0x29, 0x9f, 0x83, 0xf4, 0x57, 0xea, 0x9e, 0xa5, - 0xff, 00, 0x4, 0x45, 0xb5, 0x20, 0xfd, 0x83, 0xe2, 0xc4, - 0xca, 0x7b, 0xb, 0x9d, 0x10, 0x1f, 0xd5, 0x66, 0x15, 0xcf, - 0x5d, 0xff, 00, 0xc1, 0x11, 0xbc, 0x42, 0xaa, 0x4d, 0xaf, - 0xc5, 0x6d, 0x32, 0x46, 0xec, 0x26, 0xd1, 0xe4, 0x41, 0xf9, - 0x89, 0x4f, 0xf2, 0xaa, 0xb9, 0x16, 0x67, 0xe6, 0x66, 0x7, - 0xa5, 0x49, 0x14, 0xf2, 0x42, 0x7f, 0x77, 0x23, 0xc7, 0xfe, - 0xeb, 0x11, 0x5f, 0xa2, 0x1a, 0x87, 0xfc, 0x11, 0x57, 0xe2, - 0x44, 0x8, 0x4d, 0x9f, 0x8f, 0x3c, 0x31, 0x74, 0x7b, 0x2c, - 0x91, 0xdc, 0x47, 0xff, 00, 0xb2, 0x1a, 0xe3, 0xf5, 0x4f, - 0xf8, 0x23, 0xd7, 0xc7, 0x5b, 0x32, 0xdf, 0x65, 0xb9, 0xf0, - 0xb5, 0xfa, 0x8e, 0x9e, 0x5e, 0xa4, 0xe8, 0x4f, 0xfd, 0xf5, - 0x10, 0xa2, 0xe1, 0x66, 0x7c, 0x69, 0xa6, 0xf8, 0xcf, 0xc4, - 0x1a, 0x3b, 0x87, 0xb0, 0xd7, 0x75, 0x3b, 0x17, 0x1d, 0x1a, - 0xda, 0xf2, 0x48, 0xcf, 0xe8, 0xc2, 0xba, 0x9d, 0x3f, 0xf6, - 0x87, 0xf8, 0xa7, 0xa5, 0x38, 0x6b, 0x4f, 0x89, 0x1e, 0x2c, - 0x84, 0x8e, 0x9b, 0x75, 0xab, 0x9c, 0xf, 0xc3, 0x7d, 0x7b, - 0xce, 0xa5, 0xff, 00, 0x4, 0xab, 0xfd, 0xa2, 0x74, 0xf0, - 0x4a, 0x78, 0x5b, 0x4f, 0xbd, 0x3, 0xfe, 0x7d, 0x75, 0x68, - 0xe, 0x7f, 0xef, 0xa6, 0x15, 0xc9, 0xea, 0x7f, 0xf0, 0x4e, - 0xbf, 0xda, 0x27, 0x4a, 0x4, 0xbf, 0xc3, 0x2d, 0x46, 0x75, - 0x1d, 0xed, 0xae, 0x2d, 0xe5, 0xfd, 0x16, 0x4c, 0xd0, 0x16, - 0x67, 0x33, 0x61, 0xfb, 0x69, 0x7c, 0x76, 0xd3, 0x48, 0xf2, - 0x3e, 0x2b, 0xf8, 0xa7, 0x8e, 0x82, 0x4d, 0x41, 0xe4, 0x1f, - 0xf8, 0xf6, 0x6b, 0xa1, 0xb4, 0xff, 00, 0x82, 0x86, 0xfe, - 0xd1, 0x56, 0x61, 0x44, 0x7f, 0x14, 0xb5, 0x56, 0x3, 0xfe, - 0x7a, 0xc1, 0x6f, 0x27, 0xfe, 0x85, 0x19, 0xae, 0x67, 0x53, - 0xfd, 0x8d, 0xfe, 0x39, 0x69, 0x19, 0xfb, 0x4f, 0xc2, 0x9f, - 0x15, 0xe0, 0x75, 0x31, 0x69, 0x92, 0x4b, 0xff, 00, 0xa0, - 0x3, 0x5c, 0xdd, 0xd7, 0xec, 0xf7, 0xf1, 0x4a, 0xc7, 0x3f, - 0x68, 0xf8, 0x6f, 0xe2, 0xd8, 0x71, 0xd7, 0x7e, 0x87, 0x72, - 0x3f, 0xf6, 0x4a, 0x3, 0x53, 0xda, 0x2c, 0xbf, 0xe0, 0xa7, - 0x9f, 0xb4, 0x7d, 0x96, 0x3f, 0xe2, 0xbf, 0x17, 00, 0x76, - 0x9f, 0x4a, 0xb4, 0x6c, 0xff, 00, 0xe4, 0x2a, 0xea, 0x34, - 0xff, 00, 0xf8, 0x2b, 0x87, 0xed, 0x5, 0x64, 0x81, 0x65, - 0xd4, 0x3c, 0x3f, 0x7d, 0x8e, 0xf7, 0x1a, 0x4a, 0x82, 0x7f, - 0xef, 0x96, 0x5a, 0xf9, 0x4e, 0xf7, 0xe1, 0xaf, 0x8b, 0xf4, - 0xd0, 0x4d, 0xdf, 0x85, 0x75, 0xbb, 0x50, 0x3a, 0xf9, 0xfa, - 0x74, 0xc9, 0x8f, 0xcd, 0x6b, 0xe, 0xeb, 0x4f, 0xba, 0xb2, - 0x38, 0xb8, 0xb6, 0x9a, 0x3, 0xe9, 0x2c, 0x65, 0x7f, 0x9d, - 0x1, 0x76, 0x7d, 0xe7, 0xa5, 0x7f, 0xc1, 0x66, 0x3e, 0x30, - 0xda, 0x15, 0xfb, 0x6f, 0x87, 0x7c, 0x2b, 0x7e, 0x7, 0x5f, - 0xf4, 0x79, 0xa2, 0xcf, 0xe5, 0x25, 0x75, 0x76, 0x1f, 0xf0, - 0x5b, 0x3f, 0x18, 0xc5, 0x8f, 0xb6, 0xfc, 0x33, 0xd0, 0xee, - 0x3d, 0x7c, 0x8d, 0x42, 0x68, 0xbf, 0x9a, 0xb5, 0x7e, 0x6c, - 0xe4, 0x52, 0xd1, 0x60, 0xbb, 0x3f, 0x53, 0x74, 0xef, 0xf8, - 0x2d, 0xd0, 0x38, 0xfb, 0x7f, 0xc2, 0x82, 0xbe, 0xbf, 0x66, - 0xd6, 0xb3, 0xfc, 0xe1, 0x15, 0xd2, 0xd9, 0xff, 00, 0xc1, - 0x6c, 0xfc, 0x1a, 0xe0, 0x7d, 0xaf, 0xe1, 0xae, 0xbb, 0x11, - 0xef, 0xe4, 0xdf, 0x42, 0xff, 00, 0xcc, 0x2d, 0x7e, 0x46, - 0xd1, 0x45, 0x82, 0xec, 0xfd, 0x8f, 0xb1, 0xff, 00, 0x82, - 0xd2, 0xfc, 0x29, 0x9b, 0x2, 0xe7, 0xc1, 0x9e, 0x2e, 0xb6, - 0xf5, 0x2b, 0x1d, 0xb3, 0x8f, 0xfd, 0x1c, 0x2b, 0xa4, 0xd3, - 0xbf, 0xe0, 0xb0, 0xff, 00, 0x2, 0xef, 0x31, 0xf6, 0x9b, - 0x5f, 0x14, 0xd8, 0x13, 0xff, 00, 0x3d, 0x74, 0xd4, 0x70, - 0x3f, 0xef, 0x89, 0xd, 0x7e, 0x26, 0x51, 0x45, 0x87, 0xcc, - 0xcf, 0xdd, 0xdd, 0x3f, 0xfe, 0xa, 0xad, 0xfb, 0x3a, 0x5f, - 0x85, 0xdd, 0xe2, 0xbb, 0xfb, 0x46, 0x3f, 0xc3, 0x71, 0xa3, - 0xdc, 0x8c, 0x7e, 0x21, 0x8, 0xae, 0xb7, 0x4b, 0xff, 00, - 0x82, 0x89, 0x7e, 0xce, 0xfa, 0xaa, 0x6, 0x4f, 0x89, 0xba, - 0x6d, 0xb9, 0x3f, 0xc3, 0x75, 0xc, 0xd1, 0x1f, 0xd5, 0x2b, - 0xf9, 0xf5, 0xa2, 0x8b, 0x7, 0x31, 0xfd, 0x18, 0x69, 0xdf, - 0xb6, 0x8f, 0xc0, 0x8d, 0x51, 0x41, 0x83, 0xe2, 0xcf, 0x84, - 0xf9, 0xe8, 0x25, 0xd4, 0xe3, 0x88, 0xfe, 0x4e, 0x41, 0xae, - 0xa3, 0x4a, 0xfd, 0xa0, 0xbe, 0x18, 0x6b, 0x60, 0x7d, 0x83, - 0xe2, 0x1f, 0x85, 0xee, 0xf3, 0xff, 00, 0x3c, 0xb5, 0x7b, - 0x73, 0xff, 00, 0xb3, 0xd7, 0xf3, 0x4f, 0x45, 0x2b, 0x7, - 0x31, 0xfd, 0x3c, 0xd9, 0xf8, 0xff, 00, 0xc2, 0xfa, 0x81, - 0xc5, 0xaf, 0x89, 0x34, 0x8b, 0x92, 0x7b, 0x43, 0x7d, 0x13, - 0xff, 00, 0x26, 0xad, 0x58, 0x75, 0x5b, 0x2b, 0x83, 0x88, - 0xaf, 0x2d, 0xe4, 0x3e, 0x89, 0x2a, 0x9f, 0xeb, 0x5f, 0xcb, - 0x86, 0x7, 0xa5, 0x5a, 0xb4, 0xd5, 0x2f, 0x34, 0xf6, 0x6, - 0xd6, 0xee, 0x7b, 0x62, 0x3a, 0x18, 0x65, 0x64, 0xfe, 0x46, - 0x8b, 0xf, 0x98, 0xfe, 0xa3, 0x83, 0x3, 0xd0, 0x83, 0x4b, - 0x5f, 0xcc, 0x86, 0x9f, 0xf1, 0x5b, 0xc6, 0xda, 0x49, 0x6, - 0xc7, 0xc6, 0x3a, 0xfd, 0x91, 0x1d, 0xd, 0xbe, 0xa9, 0x3c, - 0x7f, 0xc9, 0xeb, 0xa8, 0xd2, 0xff, 00, 0x6a, 0x6f, 0x8c, - 0x5a, 0x2c, 0x8a, 0xf6, 0x9f, 0x14, 0x3c, 0x5a, 0x85, 0x7a, - 0x6f, 0xd6, 0x27, 0x90, 0x7e, 0x4c, 0xc4, 0x51, 0x60, 0xe6, - 0x3f, 0xa4, 0x7a, 0x2b, 0xf9, 0xe6, 0xb3, 0xfd, 0xbf, 0x3f, - 0x68, 0x4b, 0x12, 0xbe, 0x5f, 0xc5, 0x5d, 0x71, 0xb6, 0xf4, - 0x12, 0x98, 0xe4, 0x1f, 0xf8, 0xf2, 0x1a, 0xe8, 0xec, 0x7f, - 0xe0, 0xa6, 0x9f, 0xb4, 0x7d, 0x96, 0xd1, 0xff, 00, 0xb, - 0xd, 0xee, 0x15, 0x7b, 0x4f, 0xa6, 0x5a, 0x36, 0x7e, 0xa7, - 0xca, 0xcd, 0x16, 0xe, 0x64, 0x7e, 0xfb, 0x51, 0x5f, 0x86, - 0x76, 0x3f, 0xf0, 0x56, 0xcf, 0xda, 0x12, 0xce, 0x35, 0x57, - 0xd5, 0x34, 0x2b, 0xbc, 0x7f, 0x14, 0xfa, 0x42, 0x64, 0xff, - 00, 0xdf, 0x24, 0x56, 0xdd, 0x97, 0xfc, 0x16, 0x33, 0xe3, - 0xad, 0xb6, 0x4, 0xda, 0x7f, 0x84, 0x2e, 0xfd, 0xe4, 0xd3, - 0x66, 0x53, 0xff, 00, 0x8e, 0xce, 0x28, 0xb0, 0x5d, 0x1f, - 0xb6, 0x34, 0x57, 0xe3, 0xb6, 0x9d, 0xff, 00, 0x5, 0xa8, - 0xf8, 0x9b, 0x2, 0xa8, 0xbd, 0xf0, 0x3f, 0x85, 0xee, 0xdb, - 0xb9, 0x8d, 0xae, 0x22, 0xcf, 0xfe, 0x3e, 0x6b, 0xa5, 0xd3, - 0xff, 00, 0xe0, 0xb7, 0x1a, 0xfc, 0x78, 0xfb, 0x77, 0xc2, - 0xbd, 0x36, 0x7f, 0xfa, 0xf7, 0xd5, 0xe4, 0x8f, 0xf9, 0xc4, - 0xd4, 0x58, 0x77, 0x47, 0xeb, 0x25, 0x15, 0xf9, 0x8b, 0xa5, - 0x7f, 0xc1, 0x6e, 0x34, 0x77, 0x51, 0xfd, 0xa5, 0xf0, 0xae, - 0xfa, 0x16, 0xef, 0xf6, 0x5d, 0x5d, 0x24, 0x1f, 0xf8, 0xf4, - 0x6b, 0x5d, 0xd, 0xaf, 0xfc, 0x16, 0xbf, 0xe1, 0xe3, 0x91, - 0xf6, 0x9f, 0x87, 0xbe, 0x27, 0x88, 0x7a, 0xc5, 0x35, 0xb3, - 0xff, 00, 0x37, 0x5a, 0x2, 0xe8, 0xfd, 0x19, 0xa2, 0xbe, - 0x1, 0xd3, 0x7f, 0xe0, 0xb3, 0xbf, 0x7, 0xae, 0xdc, 0xb, - 0xaf, 0xc, 0x78, 0xc2, 0xc4, 0x7f, 0x79, 0xed, 0xad, 0x9c, - 0x7f, 0xe3, 0xb3, 0x1a, 0xeb, 0x74, 0xef, 0xf8, 0x2b, 0x87, - 0xec, 0xfb, 0x79, 0x8f, 0x3b, 0x50, 0xd7, 0xac, 0x49, 0xff, - 00, 0x9e, 0xfa, 0x4b, 0x9c, 0x7f, 0xdf, 0x24, 0xd2, 0xb, - 0xa3, 0xed, 0x1a, 0x2b, 0xe5, 0x5d, 0x33, 0xfe, 0xa, 0x7d, - 0xfb, 0x39, 0xea, 0x78, 0x1f, 0xf0, 0x9d, 0x3d, 0xa1, 0x3d, - 0xae, 0xb4, 0xcb, 0x94, 0xfd, 0x7c, 0xbc, 0x57, 0x57, 0xa6, - 0xfe, 0xdf, 0x1f, 0xb3, 0xee, 0xa8, 0x7, 0x95, 0xf1, 0x4f, - 0x42, 0x8c, 0x9e, 0xd7, 0x12, 0x3c, 0x47, 0xff, 00, 0x1e, - 0x51, 0x40, 0xcf, 0x7f, 0xa2, 0xbc, 0x9b, 0x4e, 0xfd, 0xad, - 0x7e, 0xb, 0x6a, 0xc4, 0xb, 0x5f, 0x8a, 0x7e, 0x13, 0x90, - 0x9e, 0xcd, 0xab, 0xc2, 0xa7, 0xf5, 0x61, 0x5d, 0x4d, 0x87, - 0xc6, 0x4f, 00, 0xea, 0xb8, 0xfb, 0x17, 0x8d, 0xbc, 0x3b, - 0x77, 0x9e, 0x9e, 0x4e, 0xab, 0x3, 0x67, 0xf2, 0x7a, 00, - 0xec, 0x28, 0xac, 0x9b, 0x7f, 0x17, 0x68, 0x57, 0x78, 0xf2, - 0x35, 0xad, 0x3a, 0x6c, 0xff, 00, 0xcf, 0x3b, 0xa8, 0xdb, - 0xf9, 0x1a, 0xd0, 0x8a, 0xf2, 0x9, 0xff, 00, 0xd5, 0xcf, - 0x1c, 0x9f, 0xee, 0xb8, 0x34, 0x1, 0x35, 0x14, 0x51, 0x40, - 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, - 0x51, 0x40, 0x5, 0x23, 0x28, 0x60, 0x41, 00, 0x83, 0xd4, - 0x1a, 0x5a, 0x28, 0x3, 0x97, 0xd5, 0xbe, 0x19, 0x78, 0x5b, - 0x5b, 0x2c, 0xd7, 0x5a, 0x25, 0xae, 0xf6, 0xeb, 0x24, 0x4b, - 0xe5, 0x31, 0xfc, 0x57, 0x15, 0xc5, 0xea, 0xff, 00, 0xb3, - 0x7e, 0x83, 0x76, 0x4b, 0x58, 0x5e, 0xdd, 0xd8, 0x1e, 0xca, - 0xc4, 0x4a, 0xbf, 0xae, 0xf, 0xeb, 0x5e, 0xb9, 0x45, 0x79, - 0xd5, 0xb2, 0xec, 0x1e, 0x23, 0xf8, 0x94, 0x93, 0xf9, 0x59, - 0xfd, 0xe8, 0xc2, 0x74, 0x29, 0x4f, 0xe2, 0x8a, 0x3e, 0x7b, - 0xbd, 0xfd, 0x99, 0xb5, 0x38, 0xf2, 0x6d, 0x35, 0x9b, 0x59, - 0x87, 0x61, 0x34, 0x4d, 0x1f, 0xf2, 0xdd, 0x58, 0x17, 0xbf, - 0xb3, 0xff, 00, 0x8b, 0xad, 0x9, 0xf2, 0xe0, 0xb5, 0xbb, - 0x3, 0xbc, 0x33, 0x8f, 0xfd, 0x9b, 0x15, 0xf5, 0x1d, 0x15, - 0xe4, 0x54, 0xe1, 0xcc, 0x4, 0xfe, 0x14, 0xd7, 0xa3, 0xff, - 00, 0x3b, 0x9c, 0xb2, 0xc0, 0x51, 0x7b, 0x68, 0x7c, 0x87, - 0x3f, 0xc2, 0x3f, 0x18, 0x5b, 0xe7, 0x76, 0x83, 0x72, 0xc3, - 0xd5, 0xa, 0xb7, 0xf2, 0x35, 0x49, 0xfe, 0x1d, 0x78, 0xa2, - 0x33, 0xcf, 0x87, 0xf5, 0x1f, 0xc2, 0xd9, 0xcf, 0xf4, 0xaf, - 0xb2, 0x68, 0xae, 0x27, 0xc2, 0xd8, 0x6e, 0x95, 0x25, 0xf8, - 0x7f, 0x91, 0x93, 0xcb, 0xa1, 0xd2, 0x4c, 0xf8, 0xd0, 0x7c, - 0x3d, 0xf1, 0x3b, 0x1e, 0x3c, 0x3f, 0xa9, 0x7f, 0xe0, 0x2b, - 0xff, 00, 0x85, 0x5c, 0xb7, 0xf8, 0x53, 0xe2, 0xeb, 0xaf, - 0xb9, 0xa0, 0x5d, 0x8f, 0xfa, 0xe8, 0x2, 0x7f, 0xe8, 0x44, - 0x57, 0xd7, 0xf4, 0x50, 0xb8, 0x5b, 0xf, 0xd6, 0xa4, 0xbf, - 0xf, 0xf2, 0x5, 0x97, 0x43, 0xac, 0x99, 0xf2, 0xe6, 0x9f, - 0xf0, 0x3, 0xc5, 0xb7, 0xa4, 0x79, 0xb0, 0x5b, 0x59, 0x2f, - 0xac, 0xf3, 0x83, 0xfa, 0x2e, 0x6b, 0xa9, 0xd2, 0xbf, 0x66, - 0x59, 0x4b, 0x2b, 0x6a, 0x5a, 0xda, 0x2a, 0xf7, 0x4b, 0x58, - 0x72, 0x7f, 0xef, 0xa6, 0x3f, 0xd2, 0xbd, 0xea, 0x8a, 0xef, - 0xa5, 0xc3, 0xb8, 0xa, 0x7a, 0xca, 0x2e, 0x5e, 0xaf, 0xfc, - 0xac, 0x6d, 0x1c, 0xd, 0x18, 0xee, 0xae, 0x71, 0x5e, 0x1e, - 0xf8, 0x3d, 0xe1, 0x6f, 0xe, 0xec, 0x78, 0xf4, 0xd5, 0xbc, - 0xb8, 0x5e, 0x7c, 0xeb, 0xc3, 0xe6, 0x1c, 0xfa, 0xe0, 0xf0, - 0x3f, 0x1, 0x5d, 0xa0, 0x1, 0x40, 00, 0x60, 0xe, 0x80, - 0x52, 0xd1, 0x5e, 0xfd, 0x1a, 0x14, 0xb0, 0xf1, 0xe5, 0xa5, - 0x15, 0x15, 0xe4, 0x8e, 0xd8, 0xc2, 0x30, 0x56, 0x8a, 0xb0, - 0x51, 0x45, 0x15, 0xb9, 0x61, 0x45, 0x14, 0x50, 0x1, 0x45, - 0x14, 0x50, 0x7, 0x1, 0xf1, 0xa6, 0xef, 0xec, 0xde, 0x11, - 0x7f, 0x73, 0x5f, 0xa, 0x6b, 0x72, 0x79, 0x97, 0x97, 0xc, - 0x7b, 0xb1, 0xaf, 0xb5, 0x7f, 0x68, 0x1b, 0x9f, 0x27, 0xc3, - 0x8, 0x9e, 0xb9, 0x35, 0xf1, 0x1e, 0xa8, 0xfb, 0xa4, 0x94, - 0xfa, 0xb1, 0xaf, 0xce, 0xf3, 0xd9, 0x73, 0x63, 0x23, 0x1e, - 0xc8, 0xfc, 0xfb, 0x89, 0x67, 0xef, 0x24, 0x78, 0x67, 0xc7, - 0x2b, 0x8d, 0x9a, 0x5c, 0xe3, 0xfd, 0x93, 0xfc, 0xab, 0xf5, - 0x97, 0xf6, 0x7f, 0xd2, 0x46, 0x85, 0xf0, 0x37, 0xc0, 0x16, - 0xb, 0x9c, 0x41, 0xa1, 0x59, 0xaf, 0x3e, 0xbe, 0x4a, 0xe6, - 0xbf, 0x22, 0xfe, 0x38, 0x39, 0x9a, 0x23, 0xa, 0xe5, 0x9a, - 0x46, 0x8, 00, 0xea, 0x49, 0xe2, 0xbf, 0x68, 0x3c, 0x33, - 0x62, 0x9a, 0x5f, 0x86, 0xf4, 0xab, 0x38, 0xc6, 0xd4, 0xb7, - 0xb4, 0x8a, 0x25, 0x7, 0xb0, 0x54, 0x3, 0xfa, 0x57, 0xd5, - 0xe5, 0x6a, 0xd4, 0x51, 0x5c, 0x1d, 0x1b, 0x61, 0x27, 0x2e, - 0xf2, 0x66, 0x9d, 0x14, 0x51, 0x5e, 0xc9, 0xf7, 0xe7, 0xe7, - 0xef, 0xc5, 0xdf, 0x13, 0x3f, 0x8b, 0x3e, 0x26, 0xf8, 0x82, - 0xf9, 0xf8, 0xb, 0x72, 0x6d, 0x90, 0x7a, 0x2c, 0x7f, 0x20, - 0xff, 00, 0xd0, 0x49, 0xfc, 0x6b, 0xdc, 0xbf, 0x64, 0xbf, - 0x8, 0xf9, 0x76, 0xd7, 0xda, 0xe4, 0xa9, 0xc9, 0x3e, 0x54, - 0x44, 0xfe, 0xb5, 0xf3, 0x7d, 0xfc, 0x6f, 0xa9, 0xf8, 0xdf, - 0x58, 0x86, 0x31, 0xba, 0x49, 0x35, 0x3b, 0x85, 00, 0x7a, - 0xf9, 0xad, 0x5f, 0x7c, 0x7c, 0x35, 0xf0, 0xd2, 0x78, 0x53, - 0xc1, 0x9a, 0x6d, 0x82, 0xa0, 0x46, 0x58, 0x83, 0x3f, 0xfb, - 0xc4, 0x57, 0xc1, 0x65, 0x94, 0x25, 0x5f, 0x30, 0x95, 0x59, - 0xfd, 0x9b, 0xbf, 0x9b, 0x3f, 0x39, 0xe1, 0xfa, 0x6f, 0x17, - 0x89, 0x9e, 0x2a, 0x7d, 0x2e, 0xfe, 0x6c, 0xea, 0x28, 0xa2, - 0x8a, 0xfb, 0xd3, 0xf4, 0x60, 0xa2, 0x8a, 0x28, 00, 0xa2, - 0x9a, 0xe8, 0x1c, 0x60, 0xe7, 0xd7, 0x83, 0x8a, 0x5c, 0x7b, - 0x9a, 00, 0xaf, 0x73, 0xa6, 0xda, 0x5e, 0x29, 0x17, 0x16, - 0xb0, 0xce, 0xf, 0x69, 0x23, 0xd, 0xfc, 0xc5, 0x4f, 0x1c, - 0x49, 0xc, 0x6b, 0x1c, 0x68, 0xb1, 0xc6, 0x80, 0x2a, 0xaa, - 0x8c, 00, 0x7, 0x40, 0x5, 0x3a, 0x8a, 00, 0x28, 0xa2, - 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, - 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, - 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x46, 0x50, 0xc3, 0x4, - 0x2, 0x3d, 0xd, 0x67, 0x5e, 0x78, 0x6b, 0x48, 0xd4, 0x3f, - 0xe3, 0xeb, 0x4a, 0xb2, 0xb9, 0xff, 00, 0xae, 0xd6, 0xe8, - 0xff, 00, 0xcc, 0x56, 0x95, 0x14, 0x1, 0xc5, 0x6a, 0x9f, - 0x4, 0xfe, 0x1e, 0xeb, 0x60, 0x8d, 0x43, 0xc0, 0xde, 0x1c, - 0xbd, 0xdd, 0xd7, 0xcf, 0xd2, 0xa0, 0x7c, 0xfe, 0x6b, 0x5c, - 0xa6, 0xa7, 0xfb, 0x1f, 0x7c, 0x10, 0xd6, 0x14, 0x8b, 0xbf, - 0x85, 0x5e, 0x13, 0x70, 0x7a, 0xec, 0xd2, 0xa2, 0x4f, 0xfd, - 0x4, 0xa, 0xf6, 0xa, 0x28, 0x3, 0xe7, 0x4d, 0x57, 0xfe, - 0x9, 0xe5, 0xfb, 0x3c, 0x6a, 0xe0, 0x89, 0x7e, 0x18, 0x69, - 0x50, 0xe7, 0xfe, 0x7d, 0x64, 0x9a, 0xf, 0xfd, 0x1, 0xc5, - 0x72, 0xb7, 0x9f, 0xf0, 0x4a, 0xff, 00, 0xd9, 0xbe, 0xe8, - 0xb1, 0x5f, 0x5, 0xdd, 0xdb, 0x13, 0xff, 00, 0x3c, 0x75, - 0xab, 0xce, 0x3f, 0x3, 0x29, 0x15, 0xf5, 0xad, 0x14, 0x1, - 0xf1, 0x76, 0xa3, 0xff, 00, 0x4, 0x8e, 0xfd, 0x9f, 0x6f, - 0x50, 0xac, 0x1a, 0x7e, 0xbf, 0xa7, 0x9f, 0xef, 0x41, 0xab, - 0xbb, 0x1f, 0xfc, 0x7c, 0x35, 0x72, 0xba, 0x97, 0xfc, 0x11, - 0x97, 0xe0, 0xe5, 0xca, 0x9f, 0xb1, 0x78, 0x93, 0xc5, 0xd6, - 0x4d, 0xfe, 0xd5, 0xd5, 0xbc, 0x80, 0x7e, 0x70, 0x8a, 0xfb, - 0xee, 0x8a, 0x5, 0x64, 0x7e, 0x6d, 0xea, 0x1f, 0xf0, 0x44, - 0xdf, 0x5, 0xbc, 0x6d, 0xf6, 0x1f, 0x89, 0x1a, 0xf4, 0x2f, - 0xfc, 0x3f, 0x68, 0xb3, 0x82, 0x40, 0x3f, 0x2d, 0xb5, 0xc8, - 0xea, 0x1f, 0xf0, 0x44, 0x5b, 0x80, 0x18, 0xd8, 0xfc, 0x58, - 0x8c, 0x9f, 0xe1, 0x5b, 0x8d, 0x10, 0x8f, 0xcc, 0x89, 0xbf, - 0xa5, 0x7e, 0xa9, 0x51, 0x4c, 0x2c, 0x8f, 0xc8, 0x5b, 0xff, - 00, 0xf8, 0x22, 0x7f, 0x8e, 0xe2, 0xc, 0x6c, 0xfe, 0x22, - 0xf8, 0x7e, 0xe3, 0xfb, 0xa2, 0x6b, 0x49, 0xe3, 0xcf, 0xe5, - 0xba, 0xb9, 0x1d, 0x43, 0xfe, 0x8, 0xd9, 0xf1, 0xba, 0xd9, - 0x9b, 0xec, 0xba, 0xcf, 0x83, 0xef, 0x10, 0x74, 0xcd, 0xfc, - 0xf1, 0xb1, 0xfc, 0xc, 0x18, 0xfd, 0x6b, 0xf6, 0xa2, 0x8a, - 0x2e, 0x16, 0x47, 0xe1, 0xd5, 0xd7, 0xfc, 0x12, 0x2b, 0xf6, - 0x81, 0xb7, 0x56, 0x29, 0x69, 0xe1, 0xcb, 0x9c, 0x76, 0x8b, - 0x56, 0x19, 0x3f, 0xf7, 0xd2, 0xa, 0xe6, 0x35, 0x1f, 0xf8, - 0x25, 0xef, 0xed, 0x1b, 0x60, 0x5b, 0x6f, 0x81, 0xa2, 0xbc, - 0xb, 0xde, 0xdb, 0x55, 0xb5, 0x39, 0xfa, 0x66, 0x40, 0x6b, - 0xf7, 0xb2, 0x8a, 0x2e, 0x2e, 0x54, 0x7f, 0x3d, 0x77, 0xdf, - 0xf0, 0x4f, 0xdf, 0xda, 0x1b, 0x4f, 0x24, 0x49, 0xf0, 0xb3, - 0x59, 0x7c, 0x77, 0x80, 0xc5, 0x2f, 0xfe, 0x82, 0xe6, 0xb9, - 0x2d, 0x53, 0xf6, 0x4e, 0xf8, 0xd1, 0xa3, 0xbb, 0x25, 0xd7, - 0xc2, 0xdf, 0x16, 0x23, 0x2f, 0x5f, 0x2f, 0x48, 0x9a, 0x4f, - 0xfd, 0x5, 0x4d, 0x7f, 0x48, 0x34, 0x51, 0x70, 0xe5, 0x3f, - 0x99, 0x4d, 0x47, 0xe1, 0xf, 0x8e, 0xf4, 0x76, 0x2b, 0x7d, - 0xe0, 0xaf, 0x11, 0x59, 0xb0, 0xea, 0x27, 0xd2, 0xa7, 0x4c, - 0x7e, 0x69, 0x5c, 0xf5, 0xe6, 0x8d, 0xa8, 0x69, 0xcc, 0x56, - 0xee, 0xc6, 0xe6, 0xd4, 0x8e, 0xa2, 0x68, 0x59, 0x3f, 0x98, - 0xaf, 0xea, 0x2c, 0x80, 0x7a, 0x8a, 0xad, 0x71, 0xa5, 0x59, - 0x5d, 0xff, 00, 0xaf, 0xb3, 0xb7, 0x9b, 0xfe, 0xba, 0x44, - 0xad, 0xfc, 0xc5, 0x17, 0xe, 0x53, 0xf9, 0x70, 0xc8, 0xf5, - 0xa5, 0xaf, 0xe9, 0xe6, 0xeb, 0xe1, 0xf7, 0x85, 0xaf, 0xb3, - 0xf6, 0x9f, 0xd, 0x69, 0x17, 0x19, 0xeb, 0xe6, 0xd8, 0x44, - 0xd9, 0xfc, 0xd6, 0xb9, 0xcd, 0x4f, 0xf6, 0x78, 0xf8, 0x5b, - 0xac, 0xe7, 0xed, 0xdf, 0xe, 0xbc, 0x2d, 0x73, 0x9e, 0xbe, - 0x66, 0x91, 0x1, 0xcf, 0xfe, 0x39, 0x45, 0xc5, 0xca, 0x7f, - 0x35, 0x34, 0x57, 0xf4, 0x53, 0xa8, 0xfe, 0xc4, 0x7f, 0x1, - 0x75, 0x56, 0x2d, 0x3f, 0xc2, 0x7f, 0xb, 0x86, 0x3d, 0x4c, - 0x36, 0xb, 0x17, 0xfe, 0x83, 0x8a, 0xe5, 0xb5, 0x3f, 0xf8, - 0x26, 0xf7, 0xec, 0xeb, 0xaa, 0x67, 0x77, 0xc3, 0x8b, 0x4b, - 0x62, 0x7f, 0xe7, 0xd6, 0xee, 0xe2, 0x2f, 0xe5, 0x25, 0x17, - 0xe, 0x53, 0xf9, 0xff, 00, 0xa2, 0xbf, 0x75, 0x35, 0x5f, - 0xf8, 0x24, 0xf7, 0xec, 0xf1, 0xa8, 0xee, 0x31, 0x78, 0x7f, - 0x56, 0xd3, 0xc9, 0xef, 0x6b, 0xab, 0xcd, 0xc7, 0xe0, 0xe5, - 0xab, 0x91, 0xd4, 0x3f, 0xe0, 0x8d, 0x9f, 0x5, 0x2e, 0x77, - 0x7d, 0x9b, 0x5a, 0xf1, 0x75, 0x91, 0x3d, 0x36, 0xdf, 0x42, - 0xe0, 0x7f, 0xdf, 0x50, 0xd3, 0xb8, 0x72, 0x9f, 0x8b, 0x34, - 0x57, 0xec, 0x35, 0xd7, 0xfc, 0x11, 0x53, 0xe1, 0x9b, 0x83, - 0xf6, 0x7f, 0x1e, 0x78, 0xae, 0x13, 0xdb, 0xcc, 0x5b, 0x67, - 0x3, 0xf2, 0x8c, 0x57, 0x3f, 0xa8, 0x7f, 0xc1, 0x12, 0x7c, - 0x3a, 0xc0, 0xfd, 0x87, 0xe2, 0x8e, 0xa9, 0x19, 0xec, 0x2e, - 0x34, 0xb8, 0xdf, 0xf5, 0xe, 0x28, 0xb8, 0xac, 0xcf, 0xc9, - 0x9a, 0x2b, 0xf4, 0xeb, 0x51, 0xff, 00, 0x82, 0x23, 0x6a, - 0xe1, 0x98, 0xd8, 0x7c, 0x56, 0xb2, 0x65, 0xec, 0xb7, 0x1a, - 0x33, 0x83, 0xf9, 0x89, 0x4f, 0xf2, 0xae, 0x5b, 0x52, 0xff, - 00, 0x82, 0x2b, 0x7c, 0x4a, 0x81, 0x8f, 0xd8, 0x7c, 0x75, - 0xe1, 0x8b, 0xb5, 0x1d, 0x3c, 0xe4, 0xb8, 0x88, 0x9f, 0xc9, - 0x1a, 0x8b, 0x85, 0x99, 0xf9, 0xdd, 0x49, 0x5f, 0x73, 0xea, - 0x7f, 0xf0, 0x47, 0x7f, 0x8e, 0x76, 0x84, 0xfd, 0x92, 0xf7, - 0xc2, 0xb7, 0xeb, 0xfe, 0xce, 0xa3, 0x22, 0x1f, 0xfc, 0x7a, - 0x2a, 0xe3, 0xb5, 0x4f, 0xf8, 0x25, 0x87, 0xed, 0x1b, 0xa7, - 0x48, 0x56, 0x2f, 0x7, 0xd9, 0xea, 00, 0x7f, 0x1d, 0xae, - 0xaf, 0x6d, 0x83, 0xff, 00, 0x7d, 0xba, 0x9a, 0x2e, 0x16, - 0x67, 0xc9, 0x40, 0xed, 0x39, 0x1c, 0x1f, 0x51, 0x5a, 0xda, - 0x77, 0x8b, 0xb5, 0xdd, 0x1d, 0x81, 0xb0, 0xd6, 0xb5, 0x1b, - 0x12, 0x3a, 0x1b, 0x6b, 0xb9, 0x23, 0xc7, 0xe4, 0x45, 0x7b, - 0xe5, 0xdf, 0xfc, 0x13, 0x8f, 0xf6, 0x8e, 0xb3, 0x7d, 0xad, - 0xf0, 0xc2, 0xfe, 0x4f, 0x78, 0x6f, 0x2d, 0x5c, 0x7e, 0x92, - 0xd6, 0xe, 0xa3, 0xfb, 0xc, 0x7c, 0x7e, 0xd2, 0x89, 0x13, - 0xfc, 0x28, 0xf1, 0x23, 0x63, 0xbc, 0x16, 0xbe, 0x70, 0xfc, - 0xd0, 0x9a, 0x3, 0x53, 0x85, 0xb0, 0xf8, 0xf3, 0xf1, 0x2f, - 0x4b, 0x60, 0xd6, 0x9f, 0x10, 0x7c, 0x53, 0x6e, 0x47, 0x4d, - 0x9a, 0xcd, 0xc0, 0xc7, 0xfe, 0x3f, 0x5d, 0x4e, 0x9f, 0xfb, - 0x63, 0xfc, 0x71, 0xd2, 0xd9, 0x4d, 0xbf, 0xc5, 0x5f, 0x15, - 0x64, 0x74, 0xf3, 0x75, 0x29, 0x25, 0x1f, 0x93, 0x13, 0x58, - 0xfa, 0xaf, 0xec, 0xcb, 0xf1, 0x73, 0x44, 0x24, 0x5e, 0xfc, - 0x32, 0xf1, 0x64, 0x4, 0x7a, 0xe8, 0xd7, 0x7, 0xf9, 0x25, - 0x73, 0x1a, 0x9f, 0xc3, 0x3f, 0x18, 0x68, 0x80, 0x9d, 0x47, - 0xc2, 0x7a, 0xe5, 0x80, 0x1d, 0x4d, 0xd6, 0x9b, 0x34, 0x7f, - 0xfa, 0x12, 0x8a, 0x3, 0x53, 0xda, 0x6c, 0x7f, 0xe0, 0xa2, - 0x5f, 0xb4, 0x55, 0x86, 0xd0, 0xbf, 0x13, 0xf5, 0x39, 0x40, - 0xed, 0x3c, 0x16, 0xf2, 0x7f, 0x38, 0xeb, 0xa8, 0xd3, 0xbf, - 0xe0, 0xa9, 0xdf, 0xb4, 0x66, 0x9e, 0x81, 0x4f, 0x8c, 0x6d, - 0x2e, 0xc0, 0xff, 00, 0x9f, 0x8d, 0x22, 0xd5, 0x89, 0xfc, - 0x42, 0x3, 0x5f, 0x28, 0x4f, 0x65, 0x71, 0x6a, 0x71, 0x34, - 0x12, 0xc2, 0x7f, 0xe9, 0xa2, 0x15, 0xfe, 0x75, 0x6, 0x47, - 0xad, 0x1, 0x76, 0x7d, 0xb1, 0x67, 0xff, 00, 0x5, 0x79, - 0xf8, 0xff, 00, 0x6a, 0xa0, 0x49, 0x37, 0x86, 0xae, 0xcf, - 0xf7, 0xa6, 0xd2, 0x70, 0x4f, 0xfd, 0xf2, 0xeb, 0x5b, 0x96, - 0x3f, 0xf0, 0x59, 0x6f, 0x8d, 0x76, 0xe0, 0xb, 0x8d, 0x7, - 0xc1, 0xb7, 0x63, 0xb9, 0x36, 0x37, 0x8, 0x4f, 0xe5, 0x3d, - 0x7c, 0x19, 0x45, 0x16, 0xb, 0xb3, 0xf4, 0x7f, 0x4a, 0xff, - 00, 0x82, 0xd8, 0x78, 0xe6, 0x8, 0xf1, 0xa8, 0xfc, 0x39, - 0xd0, 0x2f, 0x1f, 0xfb, 0xd6, 0xf7, 0x93, 0x40, 0x3f, 0x22, - 0x1e, 0xba, 0x8d, 0x27, 0xfe, 0xb, 0x73, 0x37, 0xfc, 0xc4, - 0xfe, 0x14, 0x47, 0xff, 00, 0x6e, 0x9a, 0xc9, 0xff, 00, - 0xd9, 0xa1, 0xaf, 0xcb, 0x8a, 0x28, 0xb0, 0x5d, 0x9f, 0xad, - 0xfa, 0x5f, 0xfc, 0x16, 0xcf, 0xc2, 0x12, 0x11, 0xfd, 0xa3, - 0xf0, 0xd3, 0x5b, 0xb7, 0x1d, 0xcd, 0xad, 0xf4, 0x32, 0xff, - 00, 0xe8, 0x41, 0x6b, 0xa8, 0xd3, 0x3f, 0xe0, 0xb3, 0xdf, - 0x8, 0xae, 0xdc, 0xb, 0xbf, 0xa, 0xf8, 0xb6, 0xc4, 0x7f, - 0x78, 0xc1, 0x6f, 0x27, 0xf2, 0x96, 0xbf, 0x1a, 0x28, 0xa2, - 0xc1, 0xcc, 0xcf, 0xdc, 0x3b, 0x1f, 0xf8, 0x2b, 0xb7, 0xec, - 0xff, 00, 0x76, 0x47, 0x9d, 0x75, 0xe2, 0x3b, 0x2f, 0x79, - 0xb4, 0x92, 0x7f, 0xf4, 0x6, 0x6a, 0xdc, 0xb3, 0xff, 00, - 0x82, 0xaa, 0x7e, 0xce, 0x57, 0x6c, 0x14, 0xf8, 0xbe, 0xfa, - 0xdf, 0x3d, 0xe6, 0xd1, 0xae, 0x80, 0x1f, 0x94, 0x66, 0xbf, - 0x8, 0x28, 0xa2, 0xc3, 0xe6, 0x3f, 0xa0, 0xd, 0x3f, 0xfe, - 0xa, 0x47, 0xfb, 0x39, 0x6a, 0x2c, 0x15, 0x3e, 0x25, 0x5a, - 0x42, 0x4f, 0xfc, 0xfc, 0x59, 0x5d, 0x44, 0x3f, 0x36, 0x88, - 0xa, 0xea, 0x6c, 0x3f, 0x6d, 0xef, 0x80, 0x9a, 0x88, 0x5f, - 0x27, 0xe2, 0xcf, 0x85, 0x81, 0x6e, 0x82, 0x5d, 0x41, 0x63, - 0x3f, 0x93, 0x62, 0xbf, 0x9d, 0x6a, 0x29, 0x58, 0x39, 0x8f, - 0xe9, 0x53, 0x4e, 0xfd, 0xa2, 0xfe, 0x16, 0x6a, 0xca, 0xd, - 0x9f, 0xc4, 0x6f, 0xb, 0x4e, 0xf, 0x4d, 0xba, 0xc4, 0x1c, - 0xff, 00, 0xe3, 0xf5, 0xd3, 0xd8, 0x78, 0xf3, 0xc3, 0x5a, - 0xa8, 0x6, 0xcb, 0xc4, 0x3a, 0x55, 0xd8, 0x3d, 0xc, 0x17, - 0xb1, 0xbe, 0x7f, 0x26, 0xaf, 0xe6, 0x12, 0x95, 0x58, 0xa9, - 0xc8, 0x24, 0x1f, 0x6a, 0x2c, 0x1c, 0xc7, 0xf5, 0x23, 0xd, - 0xed, 0xbd, 0xc8, 0x6, 0x29, 0xe2, 0x94, 0x1f, 0xee, 0x38, - 0x3f, 0xca, 0xa6, 0xaf, 0xe5, 0xf2, 0xc7, 0xc5, 0x9a, 0xde, - 0x96, 00, 0xb3, 0xd6, 0x75, 0xb, 0x40, 0x3a, 0x79, 0x17, - 0x4e, 0x98, 0xfc, 0x8d, 0x6e, 0x5a, 0xfc, 0x66, 0xf8, 0x83, - 0x63, 0x8f, 0xb3, 0x78, 0xef, 0xc4, 0xd6, 0xf8, 0xe9, 0xe5, - 0x6b, 0x17, 0xb, 0xfc, 0x9e, 0x8b, 0xf, 0x98, 0xfe, 0x99, - 0xe8, 0xaf, 0xe6, 0xd6, 0xc7, 0xf6, 0xa0, 0xf8, 0xc1, 0xa6, - 0xe3, 0xec, 0xff, 00, 0x14, 0x3c, 0x5c, 0x98, 0xe9, 0x9d, - 0x6a, 0xe1, 0xbf, 0x9b, 0x9a, 0xe9, 0xb4, 0xef, 0xdb, 0x9f, - 0xe3, 0xf6, 0x96, 00, 0x83, 0xe2, 0xbf, 0x88, 0xc8, 0x1d, - 0xa6, 0xb9, 0x12, 0xff, 00, 0xe8, 0x60, 0xd1, 0x60, 0xe6, - 0x3f, 0xa2, 0x4a, 0x2b, 0xf0, 0x7, 0x4d, 0xff, 00, 0x82, - 0x94, 0x7e, 0xd1, 0xba, 0x6e, 0x31, 0xf1, 0x1e, 0xe2, 0xe8, - 0xe, 0xd7, 0x36, 0x36, 0xaf, 0xfa, 0xf9, 0x79, 0xae, 0xb7, - 0x4c, 0xff, 00, 0x82, 0xb2, 0x7e, 0xd0, 0xba, 0x78, 0x51, - 0x2e, 0xb5, 0xa3, 0x5f, 0x81, 0xff, 00, 0x3f, 0x3a, 0x4c, - 0x79, 0x3f, 0xf7, 0xce, 0xda, 0x2c, 0x1c, 0xc8, 0xfd, 0xd1, - 0xa2, 0xbf, 0x16, 0x74, 0xdf, 0xf8, 0x2c, 0x9f, 0xc6, 0xbb, - 0x45, 0xb, 0x75, 0xa2, 0x78, 0x46, 0xfb, 0x1d, 0x59, 0xac, - 0xa7, 0x42, 0x7f, 0xef, 0x99, 0xb1, 0xfa, 0x57, 0xeb, 0x5f, - 0xc0, 0x9f, 0x1c, 0x6a, 0x7f, 0x13, 0x3e, 0xc, 0xf8, 0x2b, - 0xc5, 0xba, 0xcd, 0xb4, 0x16, 0x5a, 0xa6, 0xb7, 0xa4, 0xdb, - 0x6a, 0x17, 0x16, 0xf6, 0xc0, 0x88, 0xe3, 0x79, 0x23, 0xe, - 0x55, 0x72, 0x49, 0xc0, 0xcf, 0x73, 0x48, 0x77, 0xb9, 0xdd, - 0xd1, 0x45, 0x14, 0xc, 0x28, 0xa2, 0x8a, 00, 0xf1, 0x4f, - 0xda, 0x4e, 0xe7, 0xcb, 0xd1, 0xa1, 0x4c, 0xff, 00, 0x9, - 0x35, 0xf1, 0xa6, 0xa0, 0xdc, 0x39, 0xf5, 0x26, 0xbe, 0xb3, - 0xfd, 0xa7, 0x6e, 0xb6, 0xc0, 0x89, 0x9e, 0x89, 0x8a, 0xf9, - 0x23, 0x51, 0x6c, 0x46, 0xdf, 0x8d, 0x7e, 0x69, 0x9b, 0x3e, - 0x7c, 0xc2, 0x5e, 0x56, 0x3f, 0x31, 0xe2, 0x59, 0xfe, 0xf4, - 0xf0, 0xdf, 0x1d, 0xc4, 0xda, 0x9f, 0x8e, 0x3c, 0x39, 0x62, - 0x83, 0x73, 0xdc, 0xea, 0xd6, 0xb0, 0x85, 0xf5, 0x2d, 0x2a, - 0xc, 0x7e, 0xb5, 0xfb, 0x56, 00, 00, 0x1, 0xd0, 0x57, - 0xe3, 0x1d, 0x9d, 0xa3, 0xeb, 0x5f, 0xb4, 0x7, 0xc3, 0x8b, - 0x18, 0xcf, 0xcf, 0x2f, 0x89, 0x6c, 0x3f, 0x49, 0xd1, 0x8f, - 0xf2, 0xaf, 0xd9, 0xda, 0xfb, 0x8c, 0xbd, 0x5a, 0x8a, 0x3d, - 0xae, 0x13, 0x8f, 0x2e, 0x5a, 0x9f, 0x76, 0xc2, 0x8a, 0x28, - 0xaf, 0x4c, 0xfb, 0x43, 0xf3, 0xa6, 0xf6, 0x59, 0x3e, 0x1f, - 0x7c, 0x74, 0xd7, 0xac, 0xb5, 0x48, 0xb6, 0xc9, 0x6d, 0xa9, - 0xc9, 0x72, 0x23, 0x27, 0x21, 0x92, 0x43, 0xe6, 0x21, 0xfc, - 0x98, 0x57, 0xd7, 0x5a, 0x47, 0xed, 0x13, 0xe1, 0xdb, 0x8b, - 0x48, 0x7c, 0xd9, 0x15, 0x1f, 0x68, 0xc8, 0xd, 0xd3, 0x8a, - 0xf0, 0x9f, 0xdb, 0xc7, 0xe1, 0x85, 0xed, 0x86, 0xa5, 0xa7, - 0x7c, 0x48, 0xd2, 0xd5, 0x9e, 0x25, 0x44, 0xb1, 0xd4, 0x63, - 0x41, 0xf7, 0x70, 0x4f, 0x97, 0x21, 0xf6, 0xe7, 0x69, 0x3f, - 0xee, 0xd7, 0xce, 0xfe, 0x1f, 0xf1, 0x7c, 0x37, 0xf1, 0x28, - 0xf3, 0x36, 0xc9, 0xdd, 0x49, 0xaf, 0x8a, 0xaf, 0xf5, 0x9c, - 0xb6, 0xac, 0xe5, 0x87, 0xd5, 0x33, 0xf2, 0x6f, 0xaf, 0xd5, - 0xe1, 0xcc, 0x55, 0x5c, 0x2b, 0x8f, 0xb8, 0xdd, 0xd3, 0xf2, - 0x67, 0xe8, 0xc4, 0x3f, 0x1c, 0x7c, 0x33, 0x2f, 0xfc, 0xbd, - 0x1, 0xff, 00, 0x2, 0x15, 0xa1, 0x7, 0xc5, 0x9f, 0xe, - 0x4f, 0xd2, 0xf5, 0x47, 0xe3, 0x5f, 0x9f, 0xb0, 0xea, 0x21, - 0xc6, 0x44, 0xa4, 0x7e, 0x35, 0x65, 0x35, 0x29, 0xd7, 0xee, - 0xdc, 0xb8, 0xfa, 0x35, 0x72, 0x2c, 0xff, 00, 0x15, 0x1f, - 0x8a, 0x8, 0xf6, 0x21, 0xc4, 0xf2, 0x7f, 0x65, 0x1f, 0xa0, - 0xd0, 0xfc, 0x44, 0xd0, 0x26, 0xc6, 0x2f, 0xe3, 0xe7, 0xde, - 0xae, 0x47, 0xe2, 0xfd, 0x1e, 0x50, 0xa, 0xdf, 0xc2, 0x73, - 0xfe, 0xd5, 0x7e, 0x7a, 0x26, 0xb9, 0x7d, 0x18, 0xf9, 0x6f, - 0x25, 0x1f, 0xf0, 0x3a, 0xb5, 0x1f, 0x8b, 0x35, 0x68, 0xbe, - 0xed, 0xfc, 0xdf, 0xf7, 0xd5, 0x6c, 0xb8, 0x8a, 0xaa, 0xf8, - 0xa9, 0xaf, 0xbc, 0xea, 0x8f, 0x12, 0xc7, 0xac, 0xf, 0xd0, - 0xa4, 0xd7, 0xf4, 0xe9, 0x3e, 0xed, 0xe4, 0x27, 0xfe, 0x5, - 0x53, 0xae, 0xa3, 0x6a, 0xdd, 0x2e, 0x22, 0x3f, 0x47, 0x15, - 0xf9, 0xf3, 0x17, 0x8f, 0xf5, 0xd8, 0x47, 0xcb, 0x7f, 0x2f, - 0xe2, 0x6a, 0xf4, 0x3f, 0x15, 0x3c, 0x45, 0xf, 0x4b, 0xe7, - 0x3f, 0x8d, 0x6e, 0xb8, 0x8d, 0x7d, 0xaa, 0x7f, 0x89, 0xd1, - 0x1e, 0x23, 0xa0, 0xf7, 0x8b, 0x3e, 0xfd, 0x59, 0xe3, 0x6e, - 0x92, 0x29, 0xfa, 0x30, 0xa7, 0xee, 0x1e, 0xa2, 0xbe, 0xf, - 0xb7, 0xf8, 0xd9, 0xe2, 0x48, 0x31, 0xfe, 0x92, 0xcd, 0xf5, - 0x35, 0xa3, 0x6f, 0xfb, 0x40, 0xf8, 0x8a, 0x12, 0x33, 0x33, - 0x1c, 0x7a, 0x35, 0x6e, 0xb8, 0x8a, 0x8f, 0x58, 0x33, 0xa2, - 0x3c, 0x41, 0x85, 0x7b, 0xdc, 0xfb, 0x82, 0x8a, 0xf8, 0xd2, - 0xdb, 0xf6, 0x97, 0xd7, 0x62, 0x18, 0x62, 0xed, 0xff, 00, - 0x2, 0xad, 0x3b, 0x6f, 0xda, 0x93, 0x54, 0x4f, 0xbe, 0xae, - 0x7f, 0x1c, 0xd6, 0xeb, 0x3f, 0xc2, 0x3d, 0xee, 0xbe, 0x46, - 0xf1, 0xcf, 0x30, 0x72, 0xfb, 0x47, 0xd7, 0x14, 0x57, 0xcb, - 0x96, 0xff, 00, 0xb5, 0x64, 0xe0, 00, 0xf1, 0x37, 0xe4, - 0x2b, 0x52, 0xd7, 0xf6, 0xab, 0x84, 0xe3, 0xcd, 0x8b, 0xf3, - 0x15, 0xbc, 0x73, 0xbc, 0x13, 0xfb, 0x5f, 0x81, 0xd1, 0x1c, - 0xdb, 0x7, 0x2f, 0xb6, 0x7d, 0x1f, 0x45, 0x78, 0x34, 0x1f, - 0xb5, 0x2e, 0x9a, 0xff, 00, 0x7a, 0x35, 0x15, 0xab, 0x6b, - 0xfb, 0x4a, 0x68, 0x72, 0x91, 0xb8, 0x28, 0xff, 00, 0x81, - 0x62, 0xb7, 0x8e, 0x6d, 0x82, 0x97, 0xfc, 0xbc, 0x47, 0x44, - 0x73, 0xc, 0x34, 0xb6, 0x9a, 0x3d, 0x92, 0x8a, 0xf2, 0xdb, - 0x7f, 0xda, 0x7, 0xc3, 0xf3, 0x11, 0xf3, 0x81, 0xff, 00, - 0x3, 0x15, 0xa7, 0x7, 0xc6, 0xaf, 0xe, 0xcc, 0x33, 0xe7, - 0x81, 0xff, 00, 0x2, 0x15, 0xd1, 0x1c, 0x7e, 0x16, 0x5b, - 0x54, 0x46, 0xcb, 0x15, 0x46, 0x5b, 0x49, 0x1d, 0xfd, 0x15, - 0xc7, 0xc1, 0xf1, 0x53, 0xc3, 0xf3, 0x8e, 0x2e, 0xc0, 0xfa, - 0x91, 0x57, 0xe2, 0xf1, 0xee, 0x89, 0x30, 0x4, 0x5e, 0xa7, - 0xe7, 0x5b, 0xac, 0x45, 0x19, 0x6d, 0x35, 0xf7, 0x9a, 0xaa, - 0xb4, 0xde, 0xd2, 0x47, 0x43, 0x45, 0x64, 0xc7, 0xe2, 0xad, - 0x2a, 0x51, 0xf2, 0xde, 0xc5, 0xff, 00, 0x7d, 0x55, 0x95, - 0xd6, 0xac, 0x1f, 0xa5, 0xdc, 0x27, 0xfe, 0x6, 0x2b, 0x55, - 0x38, 0x3d, 0x99, 0x6a, 0x51, 0x7d, 0x4b, 0xb4, 0x54, 0x9, - 0x7d, 0x6f, 0x27, 0xdd, 0x9e, 0x33, 0xf4, 0x61, 0x52, 0x9, - 0xa3, 0x3d, 0x1d, 0x4f, 0xd0, 0xd5, 0x5d, 0xe, 0xe3, 0xe8, - 0xa4, 0x4, 0x1e, 0x87, 0x34, 0xb4, 0xc6, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0xc7, 0x89, - 0x24, 0xfb, 0xe8, 0xad, 0xfe, 0xf0, 0xcd, 0x3e, 0x8a, 00, - 0xcb, 0xbc, 0xf0, 0xbe, 0x8d, 0xa8, 0x9c, 0xdd, 0xe9, 0x16, - 0x37, 0x47, 0xd6, 0x6b, 0x64, 0x7f, 0xe6, 0x2b, 0x9a, 0xd5, - 0xfe, 0x5, 0xfc, 0x38, 0xd7, 0xc1, 0xfe, 0xd2, 0xf0, 0x17, - 0x86, 0xaf, 0xb3, 0xd7, 0xed, 0x1a, 0x4c, 0xf, 0xfc, 0xd2, - 0xbb, 0x9a, 0x28, 0x3, 0xc7, 0x6f, 0x7f, 0x63, 0x9f, 0x81, - 0x9a, 0x89, 0x26, 0x7f, 0x84, 0x9e, 0xe, 0x24, 0xf7, 0x4d, - 0x1a, 0x4, 0x3f, 0xf8, 0xea, 0x8a, 0xc5, 0xd4, 0x3f, 0x60, - 0xaf, 0xd9, 0xf7, 0x52, 0x42, 0x92, 0xfc, 0x29, 0xf0, 0xfc, - 0x60, 0xf7, 0xb7, 0x85, 0xa1, 0x3f, 0x9a, 0x30, 0xaf, 0x7c, - 0xa2, 0x80, 0x3e, 0x5a, 0xd4, 0xff, 00, 0xe0, 0x99, 0x3f, - 0xb3, 0x96, 0xa4, 0xf, 0xfc, 0x5b, 0xf1, 0x68, 0x4f, 0xf1, - 0x5b, 0x6a, 0x57, 0x49, 0xff, 00, 0xb5, 0x48, 0xae, 0x4b, - 0x52, 0xff, 00, 0x82, 0x47, 0x7e, 0xcf, 0xf7, 0xa0, 0xf9, - 0x16, 0x1a, 0xf5, 0x81, 0xf5, 0x83, 0x56, 0x76, 0xff, 00, - 0xd0, 0xc1, 0xaf, 0xb4, 0xa8, 0xa0, 0x56, 0x3e, 0x1, 0xd5, - 0x7f, 0xe0, 0x8c, 0x9f, 0x8, 0x6e, 0xb2, 0x6c, 0xbc, 0x4d, - 0xe2, 0xcb, 0x3, 0xe8, 0x67, 0x82, 0x50, 0x3f, 0x38, 0xbf, - 0xad, 0x72, 0x9a, 0x9f, 0xfc, 0x11, 0x33, 0xc2, 0x32, 0x3, - 0xfd, 0x9f, 0xf1, 0x2f, 0x5a, 0x80, 0xf6, 0x17, 0x36, 0x10, - 0xc8, 0x3f, 0x42, 0xb5, 0xfa, 0x53, 0x45, 0x1, 0x64, 0x7e, - 0x56, 0x6a, 0x1f, 0xf0, 0x44, 0x4b, 0x92, 0x49, 0xb1, 0xf8, - 0xb7, 0x10, 0x1d, 0x85, 0xc6, 0x84, 0x4f, 0xea, 0x27, 0xac, - 0x2b, 0xcf, 0xf8, 0x22, 0x57, 0x8b, 0xa3, 0x52, 0x6d, 0x7e, - 0x27, 0x68, 0xb3, 0x9e, 0xc2, 0x5d, 0x36, 0x68, 0xf3, 0xf9, - 0x3b, 0x57, 0xeb, 0x85, 0x14, 0xee, 0x16, 0x47, 0xe3, 0x4e, - 0xa7, 0xff, 00, 0x4, 0x60, 0xf8, 0xb5, 0x6e, 0x9, 0xb1, - 0xf1, 0x5f, 0x85, 0x2f, 0x71, 0xd0, 0x3c, 0xb7, 0x11, 0x67, - 0xff, 00, 0x21, 0x1a, 0xe4, 0xf5, 0xf, 0xf8, 0x24, 0x47, - 0xc7, 0xfb, 0x36, 0x22, 0xb, 0x6f, 0xe, 0x5f, 0x1, 0xde, - 0xd, 0x58, 0x2e, 0x7f, 0xef, 0xb4, 0x5a, 0xfd, 0xc2, 0xa2, - 0x8b, 0x8a, 0xc8, 0xfc, 0x14, 0xd5, 0x3f, 0xe0, 0x97, 0x9f, - 0xb4, 0x76, 0x9a, 0x7e, 0x4f, 0x3, 0x45, 0x7d, 0xef, 0x6b, - 0xaa, 0xda, 0x9f, 0xfd, 0xa, 0x41, 0x5c, 0xed, 0xe7, 0xfc, - 0x13, 0xbf, 0xf6, 0x8b, 0xb1, 0xcf, 0x99, 0xf0, 0xb7, 0x54, - 0x7c, 0x7f, 0xcf, 0x1b, 0x8b, 0x69, 0x3f, 0xf4, 0x19, 0x4d, - 0x7f, 0x41, 0xb4, 0x51, 0x70, 0xe5, 0x47, 0xf3, 0xa5, 0xa9, - 0xfe, 0xc5, 0x3f, 0x1d, 0xf4, 0x8c, 0xfd, 0xa7, 0xe1, 0x4f, - 0x89, 0xf8, 0xff, 00, 0x9e, 0x36, 0x2d, 0x2f, 0xfe, 0x81, - 0x9a, 0xe5, 0xf5, 0x1f, 0xd9, 0xd7, 0xe2, 0xa6, 0x90, 0x9, - 0xbd, 0xf8, 0x6d, 0xe2, 0xcb, 0x60, 0x3a, 0x99, 0x34, 0x5b, - 0x91, 0xff, 00, 0xb2, 0x57, 0xf4, 0xab, 0x45, 0x17, 0xe, - 0x53, 0xf9, 0x81, 0xd4, 0xfc, 0x11, 0xe2, 0x3d, 0x10, 0x13, - 0xa8, 0xe8, 0x1a, 0xa5, 0x80, 0x1d, 0x7e, 0xd5, 0x65, 0x24, - 0x78, 0xff, 00, 0xbe, 0x94, 0x56, 0x29, 0xf9, 0x4e, 0xf, - 0x7, 0xd0, 0xd7, 0xf5, 0x25, 0x3d, 0x9c, 0x17, 0x23, 0x13, - 0x41, 0x1c, 0xbf, 0xef, 0xa0, 0x3f, 0xce, 0xb2, 0xb5, 0xf, - 0x3, 0xf8, 0x73, 0x57, 0x4d, 0xb7, 0xde, 0x1f, 0xd2, 0xef, - 0x57, 0xd2, 0xe2, 0xca, 0x39, 0x7, 0xea, 0xb4, 0x5c, 0x39, - 0x4f, 0xe6, 0xa, 0x8a, 0xfe, 0x95, 0xf5, 0x2f, 0xd9, 0xe7, - 0xe1, 0x6e, 0xae, 0x85, 0x2f, 0x7e, 0x1c, 0xf8, 0x56, 0xe5, - 0x4f, 0x50, 0xfa, 0x35, 0xb9, 0xff, 00, 0xd9, 0x2b, 0x99, - 0xbc, 0xfd, 0x8b, 0xfe, 0x4, 0x5f, 0x82, 0x25, 0xf8, 0x49, - 0xe1, 0x1e, 0x7a, 0x98, 0xf4, 0x98, 0xa3, 0x3f, 0x9a, 0x81, - 0x45, 0xc5, 0xca, 0x7f, 0x3a, 0x30, 0xc0, 0xf7, 0x33, 0x47, - 0xc, 0x4a, 0x5e, 0x49, 0x18, 0x22, 0xa8, 0xea, 0x49, 0x38, - 0x2, 0xbf, 0xa7, 0xf, 0x86, 0x5e, 0x1f, 0x1e, 0x14, 0xf8, - 0x6f, 0xe1, 0x5d, 0x10, 0x74, 0xd3, 0xb4, 0xab, 0x5b, 0x4e, - 0x98, 0xfb, 0x91, 0x2a, 0xff, 00, 0x4a, 0xf2, 0x56, 0xfd, - 0x81, 0xbf, 0x67, 0xef, 0x3e, 0x29, 0xe3, 0xf8, 0x5d, 0xa3, - 0x5b, 0xcd, 0x13, 0x89, 0x12, 0x4b, 0x7f, 0x32, 0x32, 0xac, - 0xe, 0x41, 0x1b, 0x5c, 0x77, 0xaf, 0x7e, 00, 0x28, 00, - 0x70, 0x5, 0x5, 0x25, 0x61, 0x68, 0xa2, 0x8a, 0x43, 0xa, - 0x28, 0xa2, 0x80, 0x3e, 0x65, 0xfd, 0xa7, 0xae, 0xf3, 0x74, - 0xc9, 0x9e, 0x80, 0xa, 0xf9, 0x6f, 0x55, 0x6c, 0x40, 0xdf, - 0x4a, 0xfa, 0x2b, 0xf6, 0x96, 0xbb, 0xdf, 0xab, 0xca, 0xb9, - 0xe8, 0xd8, 0xaf, 0x9b, 0xf5, 0xa7, 0xdb, 0x6c, 0xe7, 0xfd, - 0x93, 0x5f, 0x97, 0x63, 0x5f, 0x3e, 0x61, 0x37, 0xe6, 0x7e, - 0x49, 0xc4, 0x93, 0xbd, 0x59, 0x1c, 0x17, 0xc1, 0x6b, 0x21, - 0xad, 0xfe, 0xd7, 0xdf, 0xc, 0x2d, 0x58, 0xf0, 0xba, 0xbf, - 0xda, 0x3f, 0x18, 0xe2, 0x79, 0x7, 0xfe, 0x81, 0x5f, 0xb0, - 0x35, 0xf9, 0x3d, 0xfb, 0x20, 0x69, 0x8b, 0xad, 0xfe, 0xd9, - 0xde, 0x16, 0x2c, 0x37, 0xb, 0x1b, 0x7b, 0xcb, 0xb1, 0xec, - 0x44, 0x25, 0x41, 0xff, 00, 0xc7, 0xeb, 0xf5, 0x86, 0xbf, - 0x44, 0xc1, 0xab, 0x52, 0x47, 0xda, 0x70, 0xdc, 0x39, 0x32, - 0xca, 0x41, 0x45, 0x14, 0x57, 0x69, 0xf4, 0xe5, 0x1d, 0x6b, - 0x45, 0xb1, 0xf1, 0x1e, 0x93, 0x75, 0xa6, 0x6a, 0x56, 0xb1, - 0xde, 0xd8, 0x5d, 0x46, 0x62, 0x9a, 0x9, 0x57, 0x2a, 0xea, - 0x7a, 0x83, 0x5f, 0x9e, 0x3f, 0x1f, 0x3f, 0x63, 0x7d, 0x73, - 0xe1, 0xc6, 0xa7, 0x73, 0xac, 0x78, 0x5c, 0x4b, 0xa8, 0xf8, - 0x71, 0x98, 0xba, 0x94, 0x3b, 0xa5, 0xb5, 0x1f, 0xdd, 0x71, - 0xdc, 0xf, 0xef, 0x7e, 0x78, 0xaf, 0xd1, 0xca, 0x42, 0x3, - 0x2, 0x8, 0xc8, 0x3d, 0x41, 0xae, 0x6a, 0xd4, 0x15, 0x65, - 0xd9, 0x9e, 0x2e, 0x67, 0x94, 0xd0, 0xcd, 0x29, 0xa8, 0xd5, - 0xd1, 0xad, 0x9a, 0xe9, 0xfe, 0x6b, 0xc8, 0xfc, 0x79, 0x4f, - 0xf8, 0x49, 0xb4, 0xae, 0x1e, 0x13, 0x22, 0x8e, 0x3a, 0x73, - 0x52, 0xf, 0x16, 0x6a, 0xb0, 0xff, 00, 0xac, 0xb4, 0x90, - 0x7f, 0xc0, 0x4d, 0x7e, 0xa5, 0x78, 0xa7, 0xe0, 0xb7, 0x84, - 0x3c, 0x5b, 0xbd, 0xaf, 0x34, 0x88, 0xa1, 0x99, 0x8e, 0x4c, - 0xd6, 0xa0, 0x46, 0xc4, 0xfa, 0x9c, 0x70, 0x7f, 0x11, 0x5e, - 0x7f, 0x7f, 0xfb, 0x1e, 0xf8, 0x4a, 0xe9, 0xcb, 0x45, 0x77, - 0x77, 0x8, 0x3d, 0x1, 0x54, 0x6c, 0x7e, 0x82, 0xbc, 0xa, - 0x99, 0x75, 0x5b, 0xfc, 0x29, 0xfe, 0x7, 0xc4, 0xcf, 0x84, - 0x9c, 0x3e, 0x1d, 0x7d, 0x1d, 0xbf, 0x3, 0xf3, 0xe5, 0x7c, - 0x79, 0x75, 0x1f, 0xdf, 0xb7, 0x71, 0xf5, 0x6, 0xa6, 0x4f, - 0x88, 0xc4, 0x70, 0xc8, 0xc3, 0xf0, 0xaf, 0xb9, 0x6e, 0xff, - 00, 0x62, 0x6d, 0x12, 0x40, 0x7c, 0x9d, 0x65, 0xd4, 0xff, - 00, 0xb7, 0x6c, 0xf, 0xfe, 0xcd, 0x58, 0x57, 0x9f, 0xb0, - 0xcc, 0x4e, 0xf, 0x93, 0xac, 0xdb, 0x39, 0xf4, 0x78, 0xa, - 0x8f, 0xeb, 0x5c, 0xaf, 0x2e, 0x9f, 0x5a, 0x5f, 0x8a, 0xff, - 00, 0x33, 0x96, 0x5c, 0x2f, 0x5e, 0x3b, 0x29, 0x7d, 0xeb, - 0xfc, 0xcf, 0x8f, 0xe3, 0xf8, 0x8f, 0x9, 0xeb, 0xb8, 0x55, - 0xa8, 0xfe, 0x22, 0x5b, 0x37, 0xf1, 0xd7, 0xd2, 0x97, 0xff, - 00, 0xb0, 0xbe, 0xa6, 0xa7, 0xf7, 0x33, 0x69, 0xd3, 0x8f, - 0x5d, 0xc5, 0x7f, 0x9a, 0xd7, 0x3f, 0x7f, 0xfb, 0xe, 0x78, - 0x89, 0xf, 0xee, 0xec, 0x6d, 0xa7, 0xf7, 0x8e, 0x64, 0x1f, - 0xcc, 0x8a, 0xe7, 0x96, 0x5f, 0xde, 0x93, 0x39, 0xa5, 0xc3, - 0xf8, 0xa8, 0xec, 0xe5, 0xf7, 0x5c, 0xf1, 0x48, 0xfc, 0x79, - 0x6a, 0xd8, 0xfd, 0xe0, 0xfc, 0x45, 0x59, 0x8f, 0xc6, 0x96, - 0x8d, 0xff, 00, 0x2d, 0x56, 0xbd, 0xe, 0xf3, 0xf6, 0x2d, - 0xf1, 0x44, 0x4c, 0x40, 0xd1, 0x25, 0x6c, 0x77, 0x49, 0x10, - 0xff, 00, 0x26, 0xac, 0x2b, 0xcf, 0xd9, 0x13, 0xc5, 0x96, - 0xec, 0x47, 0xf6, 0x16, 0xa3, 0xc7, 0xfc, 0xf3, 0x89, 0x9b, - 0xf9, 0x56, 0x2f, 0x3, 0x4f, 0xac, 0x24, 0xbe, 0x47, 0x3b, - 0xc9, 0xf1, 0x91, 0xfb, 0x4f, 0xe7, 0x16, 0x60, 0xa7, 0x8a, - 0xed, 0x1f, 0xfe, 0x5a, 0xa7, 0xe7, 0x56, 0x13, 0xc4, 0x56, - 0xcc, 0x3e, 0xfa, 0xfe, 0x75, 0x5e, 0xf7, 0xf6, 0x6c, 0xf1, - 0x2d, 0x96, 0xe2, 0xfa, 0x6e, 0xa7, 0x10, 0x1d, 0xda, 0x16, - 00, 0x7e, 0x95, 0x87, 0x71, 0xf0, 0x6f, 0x5a, 0xb5, 0x62, - 0x18, 0xdc, 0x21, 0x1d, 0x99, 0x6b, 0x9d, 0xe0, 0xa8, 0xf7, - 0x68, 0xe7, 0x78, 0xc, 0x64, 0x7e, 0xda, 0xf9, 0xa3, 0xa9, - 0x5d, 0x66, 0xdd, 0xbf, 0x88, 0x54, 0x83, 0x53, 0x80, 0xff, - 00, 0x10, 0xae, 0x16, 0x4f, 0x86, 0xfa, 0xec, 0x1f, 0x76, - 0x49, 0x4f, 0xd5, 0x6a, 0xbb, 0xf8, 0x43, 0xc4, 0x56, 0xfd, - 0x1d, 0x8f, 0xd4, 0x1a, 0xcf, 0xea, 0x34, 0x9e, 0xd3, 0x32, - 0xfa, 0xbe, 0x35, 0x7f, 0x2b, 0x3d, 0x18, 0x5f, 0x42, 0x7f, - 0x88, 0x53, 0x85, 0xd4, 0x47, 0xa3, 0xd7, 0x98, 0x9d, 0x2b, - 0xc4, 0xb0, 0xff, 00, 0xb, 0x37, 0xe3, 0x4d, 0xdf, 0xe2, - 0x38, 0x3a, 0xc0, 0xc7, 0xf1, 0xa9, 0xfe, 0xcf, 0x8b, 0xda, - 0x62, 0xf6, 0x78, 0xd5, 0xf6, 0x13, 0xf9, 0x9e, 0xa6, 0xb7, - 0x2b, 0xd9, 0xff, 00, 0x5a, 0x91, 0x6e, 0xd8, 0x74, 0x94, - 0xfe, 0x75, 0xe5, 0x3, 0x59, 0xd7, 0xa1, 0xfb, 0xd6, 0x92, - 0x1f, 0xc2, 0x9c, 0x3c, 0x59, 0xaa, 0xc5, 0xf7, 0xed, 0x24, - 0x1f, 0x81, 0xa8, 0x79, 0x6b, 0x7b, 0x34, 0x2e, 0x6c, 0x5c, - 0x77, 0xa4, 0xfe, 0xf3, 0xd6, 0xd3, 0x52, 0xb8, 0x4f, 0xbb, - 0x70, 0xe3, 0xe8, 0xd5, 0x62, 0x3d, 0x7f, 0x50, 0x8f, 0xee, - 0xdd, 0xc8, 0x3f, 0xe0, 0x55, 0xe4, 0xb, 0xe3, 0xbb, 0xb8, - 0xfe, 0xfd, 0xbb, 0x8f, 0xc0, 0xd4, 0xc9, 0xf1, 0xc, 0xaf, - 0xde, 0x8d, 0x87, 0xe7, 0x59, 0xbc, 0xba, 0xa2, 0xda, 0xc3, - 0xfa, 0xd6, 0x26, 0x1b, 0xc2, 0x48, 0xf6, 0x38, 0xbc, 0x63, - 0xac, 0x43, 0x8d, 0x97, 0xb2, 0xc, 0x7b, 0xd5, 0xb8, 0xbe, - 0x22, 0x6b, 0xb0, 0x9e, 0x2f, 0x58, 0xfd, 0x6b, 0xc6, 0x63, - 0xf8, 0x8d, 0x17, 0x7c, 0x8f, 0xc6, 0xac, 0xc7, 0xf1, 0xe, - 0xd8, 0xf5, 0x7a, 0x5f, 0x52, 0xc4, 0x47, 0x6f, 0xcc, 0xb5, - 0x99, 0xd6, 0x8e, 0xfc, 0xcb, 0xef, 0x3d, 0xb2, 0xf, 0x8b, - 0x7e, 0x21, 0x83, 0xa5, 0xd6, 0x7e, 0xb5, 0xa1, 0x6f, 0xf1, - 0xc3, 0xc4, 0x50, 0x11, 0x99, 0xb7, 0x62, 0xbc, 0x36, 0x3f, - 0x1e, 0xda, 0x37, 0xfc, 0xb5, 0x15, 0x66, 0x3f, 0x1a, 0xda, - 0x37, 0xfc, 0xb5, 0x5a, 0x7e, 0xcb, 0x17, 0x1d, 0x9b, 0xfb, - 0xd9, 0xb4, 0x73, 0xba, 0xb1, 0xfb, 0x6d, 0x1e, 0xf9, 0x6f, - 0xfb, 0x43, 0x78, 0x82, 0x10, 0x1, 0x73, 0xf9, 0xd6, 0xa5, - 0xaf, 0xed, 0x2f, 0xac, 0xc5, 0xf7, 0xb2, 0x6b, 0xe7, 0x74, - 0xf1, 0x6d, 0xa3, 0x7f, 0xcb, 0x54, 0xfc, 0xea, 0x74, 0xf1, - 0x25, 0xab, 0xff, 00, 0x1a, 0xfe, 0x75, 0x4a, 0xae, 0x3a, - 0x1b, 0x4e, 0x47, 0x4c, 0x78, 0x86, 0xaa, 0xff, 00, 0x97, - 0xa7, 0xd2, 0xd0, 0x7e, 0xd4, 0xfa, 0x82, 0xe3, 0x7a, 0xb6, - 0x3e, 0x95, 0xab, 0x6b, 0xfb, 0x55, 0xb8, 0xc7, 0x98, 0x9f, - 0x9a, 0xd7, 0xcb, 0x4b, 0xad, 0xdb, 0xb7, 0xf1, 0x8f, 0xce, - 0xa5, 0x5d, 0x56, 0x3, 0xfc, 0x43, 0xf3, 0xab, 0x58, 0xec, - 0x7c, 0x7e, 0xdb, 0x3a, 0xe3, 0xc4, 0x75, 0xff, 00, 0xe7, - 0xe2, 0x3e, 0xb4, 0xb6, 0xfd, 0xaa, 0xad, 0x9c, 0xfc, 0xe8, - 0xa3, 0xfe, 0x3, 0x5a, 0xb6, 0xdf, 0xb4, 0xfe, 0x94, 0xf8, - 0xde, 0x13, 0xf2, 0x22, 0xbe, 0x39, 0x17, 0xf0, 0xb7, 0xf1, - 0xa, 0x78, 0xbb, 0x88, 0xf4, 0x71, 0x5a, 0xac, 0xdb, 0x1f, - 0x1f, 0xb5, 0xf8, 0x1d, 0x91, 0xe2, 0x4a, 0xfd, 0xd3, 0x3e, - 0xd6, 0xb6, 0xfd, 0xa4, 0x34, 0x29, 0xb1, 0xb8, 0xa8, 0xfc, - 0x6b, 0x52, 0xf, 0x8f, 0x5e, 0x1d, 0x94, 0xc, 0xca, 0x6, - 0x7d, 0xd, 0x7c, 0x2e, 0x2e, 0x53, 0xb3, 0xfe, 0xb5, 0x22, - 0xdd, 0x63, 0xa4, 0xa7, 0xf0, 0x35, 0xaa, 0xcf, 0x31, 0xb1, - 0xde, 0xcf, 0xe4, 0x75, 0x47, 0x89, 0x6a, 0xf5, 0x8a, 0x3e, - 0xf5, 0xb7, 0xf8, 0xcb, 0xe1, 0xd9, 0xff, 00, 0xe5, 0xe3, - 0x15, 0xa1, 0x17, 0xc4, 0xed, 0x2, 0x5e, 0x97, 0x80, 0x7d, - 0x6b, 0xf3, 0xf9, 0x2f, 0x65, 0x5f, 0xbb, 0x3b, 0x8f, 0xa3, - 0x54, 0xc9, 0xab, 0xdd, 0xc7, 0xf7, 0x6e, 0xa4, 0x1f, 0xf0, - 0x23, 0x5b, 0xae, 0x20, 0xc4, 0x2d, 0xe0, 0x8e, 0x98, 0xf1, - 0x2c, 0xba, 0xc0, 0xfd, 0x7, 0x8b, 0xc7, 0x3a, 0x2c, 0xdf, - 0x76, 0xf5, 0x3f, 0x1a, 0xb4, 0x9e, 0x28, 0xd2, 0xe4, 0xfb, - 0xb7, 0xb1, 0x9f, 0xc6, 0xbf, 0x3d, 0xa3, 0xf1, 0x2e, 0xa7, - 0x1f, 0xdd, 0xbd, 0x97, 0xfe, 0xfa, 0x35, 0x6a, 0x2f, 0x1b, - 0x6b, 0x30, 0x91, 0xb6, 0xf6, 0x4e, 0x3d, 0x58, 0xd6, 0xcb, - 0x88, 0xa7, 0xd6, 0x9f, 0xe2, 0x74, 0x2e, 0x24, 0x87, 0x58, - 0x1f, 0xa1, 0x11, 0xea, 0xf6, 0x52, 0xfd, 0xdb, 0x98, 0xcf, - 0xfc, 0xa, 0xa6, 0x5b, 0xc8, 0x1b, 0xa4, 0xc8, 0x7e, 0x8c, - 0x2b, 0xf3, 0xfa, 0x1f, 0x89, 0x7a, 0xf4, 0x23, 0x8b, 0xc7, - 0xfc, 0xcd, 0x5e, 0x83, 0xe3, 0x7, 0x88, 0x20, 0xc6, 0x2e, - 0x58, 0xe3, 0xfd, 0xa3, 0x5b, 0xc7, 0x88, 0xa3, 0xd6, 0x9b, - 0x3a, 0x23, 0xc4, 0x58, 0x77, 0xba, 0x67, 0xde, 0xe2, 0x45, - 0x6e, 0x8c, 0xf, 0xd0, 0xd2, 0xe6, 0xbe, 0x18, 0x87, 0xe3, - 0xb7, 0x88, 0x22, 0xc0, 0xf3, 0xf, 0xfd, 0xf4, 0x6b, 0x4e, - 0xdf, 0xf6, 0x8a, 0xd7, 0x21, 0x23, 0x3b, 0x8e, 0x3f, 0xda, - 0x35, 0xba, 0xe2, 0x1a, 0x1d, 0x62, 0xce, 0x88, 0xe7, 0xf8, - 0x47, 0xbb, 0x3e, 0xd5, 0xa2, 0xbe, 0x3e, 0x83, 0xf6, 0x9c, - 0xd5, 0xd0, 0x8d, 0xe1, 0xb1, 0xfe, 0xf1, 0xad, 0x5b, 0x5f, - 0xda, 0x9a, 0xed, 0x71, 0xbd, 0xf, 0x15, 0xbc, 0x73, 0xec, - 0x23, 0xde, 0xeb, 0xe4, 0x74, 0x47, 0x3a, 0xc1, 0xcb, 0xed, - 0x1f, 0x56, 0x51, 0x5f, 0x33, 0xdb, 0x7e, 0xd5, 0x44, 0x91, - 0xe6, 0x20, 0x1f, 0x51, 0x5a, 0xd6, 0xff, 00, 0xb5, 0x35, - 0x91, 0x3, 0x7a, 0xa7, 0xe4, 0x6b, 0xa2, 0x39, 0xd6, 0xa, - 0x5f, 0x6c, 0xe8, 0x8e, 0x69, 0x84, 0x96, 0xd3, 0x47, 0xd0, - 0x54, 0x57, 0x88, 0xdb, 0x7e, 0xd3, 0x5a, 0x4c, 0xa4, 0x6f, - 0x11, 0x8f, 0xc4, 0xd6, 0x9c, 0x1f, 0xb4, 0x56, 0x83, 0x26, - 0x32, 0xf1, 0xe7, 0xd9, 0xeb, 0x78, 0xe6, 0xb8, 0x39, 0x6d, - 0x51, 0x1b, 0xac, 0x76, 0x1e, 0x5b, 0x4d, 0x1e, 0xb7, 0x45, - 0x79, 0xbd, 0xbf, 0xc7, 0x4f, 0xf, 0xcf, 0xff, 00, 0x2d, - 0x94, 0x7f, 0xc0, 0xeb, 0x46, 0x1f, 0x8b, 0xfe, 0x1e, 0x9b, - 0x3, 0xed, 0x40, 0x1f, 0xad, 0x74, 0x47, 0x1b, 0x86, 0x96, - 0xd5, 0x17, 0xde, 0x6c, 0xb1, 0x14, 0x5e, 0xd2, 0x47, 0x6f, - 0x45, 0x72, 0xf0, 0x7c, 0x49, 0xd0, 0x67, 0xe9, 0x7a, 0x83, - 0xea, 0x6a, 0xdc, 0x7e, 0x36, 0xd1, 0x65, 0xfb, 0xb7, 0xf1, - 0x9f, 0xc6, 0xb6, 0x55, 0xe9, 0x3d, 0xa4, 0xbe, 0xf2, 0xd5, - 0x58, 0x3d, 0xa4, 0x8d, 0xda, 0x2b, 0x32, 0x3f, 0x12, 0x69, - 0x92, 0xfd, 0xdb, 0xd8, 0xbf, 0xef, 0xaa, 0x9d, 0x35, 0x7b, - 0x29, 0x3e, 0xed, 0xd4, 0x47, 0xfe, 0x4, 0x2b, 0x45, 0x38, - 0xbd, 0x99, 0x7c, 0xd1, 0xee, 0x5c, 0xa2, 0xa1, 0x5b, 0xb8, - 0x1f, 0xee, 0xca, 0x87, 0xfe, 0x4, 0x2a, 0x41, 0x22, 0x37, - 0x46, 0x53, 0xf4, 0x35, 0x57, 0x45, 0xe, 0xa2, 0x93, 0x39, - 0xa5, 0xa6, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, - 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, - 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, - 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, - 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, - 0x1, 0x45, 0x14, 0x50, 0x1, 0x48, 0x78, 0x14, 0xb4, 0xc9, - 0x5b, 0x64, 0x4e, 0xde, 0x80, 0x9a, 00, 0xf8, 0xdb, 0xf6, - 0x85, 0xba, 0xf3, 0x75, 0xd9, 0x87, 0xfb, 0x67, 0xf9, 0xd7, - 0x80, 0x78, 0x89, 0xf6, 0x59, 0x4d, 0xfe, 0xe9, 0xaf, 0x68, - 0xf8, 0xe1, 0x73, 0xe6, 0xf8, 0x82, 0x50, 0x4f, 0xf1, 0x93, - 0xfa, 0xd7, 0x84, 0x78, 0xc6, 0xf0, 0x41, 0xa7, 0x4c, 0x72, - 0x7, 0xca, 0x6b, 0xf2, 0xb7, 0xfb, 0xcc, 0x6c, 0xdf, 0x99, - 0xf8, 0xb7, 0x10, 0xce, 0xf5, 0x66, 0x6f, 0x7f, 0xc1, 0x3d, - 0xac, 0x1b, 0x50, 0xfd, 0xab, 0x75, 0x8b, 0xbd, 0xb9, 0x8e, - 0xcb, 0xc3, 0xf7, 0x4, 0x9f, 0x46, 0x79, 0xa1, 0x51, 0xfa, - 0x66, 0xbf, 0x4f, 0x2b, 0xf3, 0x97, 0xfe, 0x9, 0x81, 0x68, - 0x6f, 0xfe, 0x2d, 0x7c, 0x4d, 0xd5, 0xa, 0x9d, 0xb6, 0xfa, - 0x75, 0xa5, 0xb0, 0x6c, 0x71, 0x99, 0x25, 0x91, 0x88, 0xcf, - 0xfd, 0xb3, 0x15, 0xfa, 0x35, 0x5f, 0xa5, 0xe1, 0xd5, 0xa9, - 0xa3, 0xf5, 0xc, 0x9e, 0x1e, 0xcf, 0x1, 0x4a, 0x3e, 0x48, - 0x28, 0xa2, 0x8a, 0xe9, 0x3d, 0x90, 0xa2, 0x8a, 0x28, 00, - 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, - 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa8, 0xe4, 0x82, 0x29, - 0x46, 0x1e, 0x34, 0x71, 0xe8, 0xca, 0xd, 0x49, 0x45, 00, - 0x50, 0x9f, 0x41, 0xd3, 0x2e, 0x46, 0x26, 0xd3, 0xad, 0x25, - 0x1e, 0x8f, 0x2, 0x9f, 0xe6, 0x2b, 0x3e, 0xe3, 0xc0, 0x1e, - 0x19, 0xbb, 0xff, 00, 0x5b, 0xa0, 0x69, 0xad, 0xff, 00, - 0x6e, 0xa8, 0x3f, 0x90, 0xad, 0xfa, 0x2a, 0x1c, 0x20, 0xf7, - 0x46, 0x6e, 0x9c, 0x25, 0xbc, 0x51, 0xc5, 0xdd, 0xfc, 0x19, - 0xf0, 0x55, 0xe9, 0xcc, 0x9e, 0x1e, 0xb4, 0x1f, 0xf5, 0xcc, - 0x14, 0xfe, 0x44, 0x56, 0x45, 0xdf, 0xec, 0xe9, 0xe0, 0x4b, - 0xbc, 0xff, 00, 0xc4, 0xa0, 0xc3, 0x9f, 0xf9, 0xe7, 0x33, - 0x71, 0xf9, 0x93, 0x5e, 0x97, 0x45, 0x62, 0xf0, 0xd4, 0x65, - 0xbc, 0x17, 0xdc, 0x63, 0x2c, 0x26, 0x1e, 0x5b, 0xd3, 0x5f, - 0x72, 0x3c, 0x66, 0xef, 0xf6, 0x51, 0xf0, 0x4d, 0xce, 0x76, - 0x8b, 0xc8, 0x73, 0xfd, 0xd9, 0x10, 0xff, 00, 0x35, 0xac, - 0x9b, 0xaf, 0xd8, 0xeb, 0xc2, 0x93, 0x3, 0xe5, 0xdf, 0x5d, - 0xc6, 0x7f, 0xda, 0x54, 0x6f, 0xe8, 0x2b, 0xdf, 0x28, 0xac, - 0x9e, 0xb, 0xe, 0xfe, 0xc2, 0x30, 0x79, 0x76, 0x11, 0xff, - 00, 0xcb, 0xb4, 0x7c, 0xd5, 0x79, 0xfb, 0x13, 0xe8, 0xd2, - 0xff, 00, 0xa9, 0xd6, 0x9d, 0x7d, 0x9e, 0xd8, 0x1f, 0xfd, - 0x9a, 0xb0, 0xaf, 0x7f, 0x61, 0xa4, 0x6c, 0xf9, 0x1a, 0xbd, - 0xb3, 0xff, 00, 0xd7, 0x48, 0x4a, 0xff, 00, 0x8d, 0x7d, - 0x65, 0x45, 0x66, 0xf2, 0xfc, 0x3b, 0xfb, 0x3f, 0x8b, 0x32, - 0x79, 0x56, 0x11, 0xfd, 0x9f, 0xc5, 0xff, 00, 0x99, 0xf1, - 0x6d, 0xef, 0xec, 0x2f, 0xa9, 0xe0, 0x98, 0xee, 0x34, 0xe9, - 0x7d, 0x83, 0x11, 0xfc, 0xd6, 0xb9, 0xeb, 0xdf, 0xd8, 0x7f, - 0xc4, 0x28, 0xe, 0xcb, 0xb, 0x79, 0x7f, 0xdc, 0x99, 0x3f, - 0xa9, 0x15, 0xf7, 0x9d, 0x15, 0x9b, 0xcb, 0x68, 0xf4, 0x6d, - 0x7c, 0xcc, 0x25, 0x93, 0x61, 0x9e, 0xd7, 0x5f, 0x33, 0xf3, - 0xb6, 0xf3, 0xf6, 0x2d, 0xf1, 0x4c, 0x4a, 0x48, 0xd0, 0xe4, - 0x3f, 0xf5, 0xce, 0x44, 0x6f, 0xe4, 0xd5, 0x87, 0x7d, 0xfb, - 0x22, 0x78, 0xae, 0xd7, 0x27, 0xfb, 0xb, 0x50, 0xff, 00, - 0x80, 0x46, 0xcd, 0xfc, 0xab, 0xf4, 0xba, 0x8a, 0x8f, 0xec, - 0xc8, 0xf4, 0x9b, 0xfc, 0xe, 0x79, 0x64, 0x54, 0x1e, 0xd2, - 0x7f, 0x87, 0xf9, 0x1f, 0x96, 0x37, 0xbf, 0xb3, 0x77, 0x88, - 0xec, 0x98, 0xac, 0x9a, 0x6e, 0xa5, 0xb, 0x7a, 0x34, 0x2c, - 0x3f, 0xa5, 0x62, 0xdd, 0x7c, 0x18, 0xd6, 0xad, 0x1b, 0x69, - 0x17, 0x31, 0x91, 0xd9, 0x97, 0x15, 0xfa, 0xd1, 0x51, 0xbd, - 0xbc, 0x52, 0xe7, 0x7c, 0x48, 0xf9, 0xfe, 0xf2, 0x83, 0x50, - 0xf2, 0xd9, 0x74, 0xa9, 0xf8, 0x7f, 0xc1, 0x39, 0x65, 0xc3, - 0xb4, 0xa5, 0xf6, 0x97, 0xfe, 0x3, 0xff, 00, 0x4, 0xfc, - 0x8c, 0x97, 0xe1, 0xa6, 0xb9, 0x7, 0xdd, 0x92, 0x5f, 0xc5, - 0x4d, 0x57, 0x7f, 0x6, 0xf8, 0x86, 0xe, 0x8e, 0xdc, 0x7a, - 0x82, 0x2b, 0xf5, 0xae, 0x7f, 0xb, 0xe8, 0xd7, 0x24, 0x99, - 0xb4, 0x9b, 0x19, 0x49, 0xea, 0x5e, 0xdd, 0xf, 0xf4, 0xac, - 0xd9, 0xbe, 0x19, 0xf8, 0x4e, 0xe0, 0x93, 0x27, 0x87, 0x74, - 0xd2, 0x4f, 0x53, 0xf6, 0x65, 0x1f, 0xd2, 0xb3, 0x79, 0x75, - 0x6e, 0x93, 0x5f, 0x71, 0xc7, 0x3e, 0x18, 0xa6, 0xff, 00, - 0x97, 0xee, 0x3f, 0x28, 0xe, 0x8f, 0xe2, 0x38, 0x3d, 0x4f, - 0xe2, 0x69, 0x9f, 0xf1, 0x51, 0xc1, 0xd6, 0x26, 0x6f, 0xc6, - 0xbf, 0x54, 0x67, 0xf8, 0x29, 0xe0, 0x8b, 0x90, 0x43, 0xf8, - 0x76, 0xd0, 0x67, 0xba, 0xee, 0x5f, 0xe4, 0x6b, 0x1e, 0xef, - 0xf6, 0x6e, 0xf0, 0xd, 0xd0, 0xe3, 0x48, 0x68, 0x4f, 0xac, - 0x73, 0xbf, 0xf5, 0x26, 0xb2, 0x79, 0x75, 0x7f, 0xee, 0xbf, - 0xeb, 0xd0, 0xe4, 0x9f, 0xa, 0x45, 0xed, 0x18, 0xfd, 0xef, - 0xfc, 0x8f, 0xcc, 0x7f, 0xed, 0x6d, 0x7a, 0x1f, 0xbd, 0x6c, - 0xe6, 0x94, 0x78, 0xa7, 0x56, 0x8b, 0xef, 0xda, 0xc9, 0xff, - 00, 0x7c, 0x9a, 0xfd, 0x1f, 0xbc, 0xfd, 0x93, 0xbc, 0xf, - 0x73, 0xfe, 0xad, 0x2f, 0x20, 0xff, 00, 0x76, 0x45, 0x3f, - 0xcd, 0x6b, 0x12, 0xf7, 0xf6, 0x35, 0xf0, 0xbc, 0xf9, 0xf2, - 0x35, 0xb, 0x98, 0xbf, 0xdf, 0x8d, 0x5b, 0xf9, 0x62, 0xb1, - 0x96, 0x5f, 0x5b, 0xf9, 0x13, 0x38, 0xe5, 0xc2, 0x8d, 0x6d, - 0x1f, 0xba, 0x47, 0xe7, 0xf0, 0xf1, 0xcd, 0xe4, 0x63, 0xe7, - 0xb7, 0x71, 0xf5, 0x6, 0xa6, 0x4f, 0x88, 0x4e, 0xbf, 0x7a, - 0x32, 0x3f, 0x3a, 0xfb, 0x82, 0xef, 0xf6, 0x24, 0xd3, 0x64, - 0x3f, 0xb9, 0xd6, 0x94, 0xf, 0xf6, 0xed, 0x7f, 0xfb, 0x2a, - 0xc5, 0xbd, 0xfd, 0x86, 0x4b, 0x67, 0xc9, 0xd5, 0xac, 0xe4, - 0xf4, 0xf3, 0x22, 0x65, 0xff, 00, 0x1a, 0xc1, 0xe0, 0x2a, - 0x75, 0xa3, 0xf8, 0xaf, 0xf3, 0x39, 0x65, 0xc3, 0x15, 0x56, - 0xd1, 0x97, 0xde, 0xbf, 0xcc, 0xf9, 0x6, 0x3f, 0x88, 0xa9, - 0xfc, 0x40, 0x8a, 0xb5, 0x1f, 0xc4, 0x4b, 0x73, 0xd5, 0xb1, - 0xf8, 0xd7, 0xd2, 0xb7, 0xbf, 0xb0, 0xae, 0xaa, 0x1, 0xf2, - 0xa7, 0xd3, 0x26, 0xff, 00, 0x81, 0x11, 0xfc, 0xd6, 0xb9, - 0xfb, 0xef, 0xd8, 0x77, 0xc4, 0x71, 0x3, 0xb2, 0xc2, 0xd6, - 0x6f, 0xfa, 0xe7, 0x32, 0xff, 00, 0x52, 0x2b, 0x9, 0x60, - 0x7b, 0xd2, 0x67, 0x3c, 0xb8, 0x7b, 0x13, 0x1d, 0x9c, 0xfe, - 0xeb, 0x9e, 0x27, 0x1f, 0x8f, 0xad, 0x5b, 0x1f, 0xbc, 0xc5, - 0x59, 0x4f, 0x1b, 0x5a, 0xb7, 0xfc, 0xb5, 0x5f, 0xc6, 0xbd, - 0xe, 0xff, 00, 0xf6, 0x31, 0xf1, 0x4d, 0xbe, 0x4f, 0xf6, - 0x1c, 0x8c, 0x3d, 0x63, 0x60, 0xdf, 0xc8, 0xd7, 0x3f, 0x7b, - 0xfb, 0x28, 0xf8, 0x9a, 0xd4, 0x9c, 0xe8, 0x5a, 0x8a, 0xfb, - 0xac, 0xe, 0x7f, 0xa5, 0x61, 0x2c, 0x15, 0x35, 0xbc, 0x1a, - 0xf9, 0x1c, 0xd2, 0xc9, 0xb1, 0x70, 0xfb, 0x6f, 0xe7, 0x16, - 0x62, 0x27, 0x8b, 0xed, 0x5b, 0xfe, 0x5a, 0xa7, 0xe7, 0x53, - 0xa7, 0x89, 0xad, 0x9f, 0xa4, 0x89, 0xf9, 0xd5, 0x7b, 0xcf, - 0xd9, 0xd7, 0xc4, 0x36, 0x79, 0x2f, 0xa7, 0xea, 0x11, 0x1, - 0xfd, 0xe8, 0x58, 0x7f, 0x4a, 0xc6, 0xb8, 0xf8, 0x3b, 0xac, - 0xdb, 0x67, 0xfe, 0x3e, 0x13, 0x1f, 0xde, 0x43, 0x58, 0x3c, - 0x1d, 0xf, 0x34, 0x60, 0xf2, 0xfc, 0x64, 0x7e, 0xda, 0xf9, - 0xa3, 0xa8, 0x5d, 0x7a, 0xdd, 0xbf, 0x8d, 0x7f, 0x3a, 0x95, - 0x75, 0x78, 0xf, 0xf1, 0xa, 0xe1, 0x24, 0xf8, 0x6f, 0xad, - 0xc3, 0x9d, 0xb2, 0xc9, 0xf8, 0xa1, 0xaa, 0xef, 0xe0, 0xfd, - 0x7e, 0xe, 0x92, 0x31, 0xfc, 0xd, 0x47, 0xd4, 0xa8, 0xbd, - 0xa4, 0x67, 0xf5, 0x5c, 0x6a, 0xeb, 0x16, 0x7a, 0x38, 0xd4, - 0xa1, 0x6f, 0xe2, 0x14, 0xe1, 0x7d, 0x9, 0xfe, 0x31, 0x5e, - 0x62, 0xda, 0x47, 0x88, 0xa0, 0xe8, 0x49, 0xfc, 0x4d, 0x34, - 0xff, 00, 0xc2, 0x43, 0x7, 0x58, 0xd9, 0xbf, 0x1a, 0x87, - 0x97, 0xc7, 0xa4, 0x89, 0xf6, 0x58, 0xe5, 0xf6, 0x13, 0xf9, - 0x9e, 0xa6, 0x2e, 0xa3, 0x3f, 0xc4, 0x29, 0xc2, 0xe1, 0x4f, - 0x47, 0xfd, 0x6b, 0xca, 0x7f, 0xb5, 0xb5, 0xd8, 0x7e, 0xf5, - 0xb4, 0x87, 0xf0, 0xa7, 0xf, 0x14, 0xea, 0xb1, 0x7d, 0xeb, - 0x69, 0x3f, 0xef, 0x9a, 0x97, 0x97, 0x3e, 0x92, 0x44, 0xff, - 00, 0xb5, 0xc7, 0x7a, 0x47, 0xab, 0x8b, 0x93, 0xda, 0x53, - 0xf9, 0xd4, 0x89, 0x7d, 0x32, 0xfd, 0xd9, 0xd8, 0x7f, 0xc0, - 0xab, 0xc9, 0xd7, 0xc7, 0x17, 0x91, 0xfd, 0xfb, 0x77, 0x1f, - 0x81, 0xa9, 0x93, 0xe2, 0x13, 0xaf, 0xde, 0x8d, 0x85, 0x64, - 0xf2, 0xd9, 0xf4, 0xb0, 0x7b, 0x7c, 0x44, 0x77, 0xa7, 0x23, - 0xd6, 0x53, 0x58, 0xbd, 0x4f, 0xbb, 0x75, 0x28, 0xff, 00, - 0x81, 0x1a, 0xb1, 0x1f, 0x89, 0xb5, 0x38, 0xbe, 0xed, 0xe4, - 0xa3, 0xfe, 0x4, 0x6b, 0xc9, 0xa3, 0xf8, 0x88, 0x9d, 0xc3, - 0xf, 0xc6, 0xac, 0xc7, 0xf1, 0xa, 0x3, 0xfc, 0x44, 0x54, - 0x7f, 0x67, 0xd6, 0x5b, 0x21, 0xac, 0xc2, 0xac, 0x77, 0x52, - 0x5f, 0x79, 0xeb, 0x71, 0xf8, 0xe3, 0x5a, 0x8b, 0xa5, 0xf4, - 0x9f, 0xf7, 0xd5, 0x5c, 0x83, 0xe2, 0x6e, 0xbd, 0x6, 0x31, - 0x74, 0xc7, 0xea, 0x4d, 0x79, 0x14, 0x7e, 0x3e, 0xb6, 0x6e, - 0xaf, 0x8a, 0xb3, 0x1f, 0x8d, 0xad, 0x5b, 0xfe, 0x5a, 0x8a, - 0x5f, 0x55, 0xc4, 0x47, 0x6b, 0xfd, 0xec, 0xd5, 0x66, 0xf3, - 0x8f, 0xdb, 0x92, 0x3d, 0x8e, 0x1f, 0x8c, 0x3e, 0x20, 0x8b, - 0x1f, 0xe9, 0x4, 0xe3, 0xdc, 0xd6, 0x8d, 0xbf, 0xc7, 0x7d, - 0x7a, 0x1c, 0x7c, 0xe4, 0xff, 00, 0xc0, 0x8d, 0x78, 0x9a, - 0x78, 0xbe, 0xd5, 0xbf, 0xe5, 0xaa, 0xfe, 0x75, 0x3a, 0x78, - 0x9e, 0xd9, 0xff, 00, 0xe5, 0xa2, 0xfe, 0x74, 0x72, 0xe2, - 0xe1, 0xb3, 0x7f, 0x7b, 0x3a, 0x23, 0x9e, 0x54, 0x5f, 0xf2, - 0xf5, 0x9e, 0xef, 0x6f, 0xfb, 0x45, 0x6b, 0x71, 0x63, 0x73, - 0x31, 0xff, 00, 0x81, 0x1a, 0xd6, 0xb6, 0xfd, 0xa6, 0xf5, - 0x48, 0xb1, 0xb8, 0x39, 0xff, 00, 0x81, 0x57, 0xcf, 0x29, - 0xaf, 0xdb, 0xb7, 0xf1, 0xaf, 0xe7, 0x52, 0xae, 0xb1, 0x3, - 0x7f, 0x10, 0xfc, 0xea, 0xd6, 0x23, 0x1b, 0xd, 0xa6, 0xce, - 0xb8, 0x71, 0x5, 0x65, 0xb5, 0x53, 0xe9, 0x4b, 0x6f, 0xda, - 0x92, 0xec, 0x7f, 0xac, 0xdd, 0x5a, 0xd6, 0xdf, 0xb5, 0x42, - 0xf1, 0xbd, 0x41, 0xfa, 0x8a, 0xf9, 0x65, 0x75, 0x38, 0x4f, - 0xf1, 0xf, 0xce, 0x9e, 0x2f, 0xa1, 0x6f, 0xe2, 0x15, 0xa2, - 0xcc, 0x71, 0xf1, 0xfb, 0x6c, 0xeb, 0x8f, 0x11, 0x62, 0x3f, - 0x9d, 0x1f, 0x5b, 0xdb, 0x7e, 0xd4, 0x56, 0x6f, 0x8f, 0x30, - 0x20, 0xfc, 0x2b, 0x56, 0xf, 0xda, 0x63, 0x49, 0x93, 0x19, - 0xf2, 0xfe, 0xb9, 0x22, 0xbe, 0x35, 0x17, 0x31, 0x1f, 0xe2, - 0x14, 0xf1, 0x3a, 0x1e, 0x8f, 0xfa, 0xd6, 0xcb, 0x38, 0xc7, - 0x47, 0xed, 0x7e, 0x7, 0x5c, 0x78, 0x8f, 0x11, 0xe4, 0xcf, - 0xb6, 0xad, 0xff, 00, 0x68, 0x6d, 0xe, 0x5c, 0x6e, 0x78, - 0xc7, 0xfc, 0xa, 0xb4, 0xa0, 0xf8, 0xe7, 0xe1, 0xf9, 0xb1, - 0x89, 0x57, 0xfe, 0xfa, 0xaf, 0x85, 0x44, 0xe3, 0xb3, 0xfe, - 0xb4, 0xf5, 0xba, 0x91, 0x7a, 0x4a, 0xc3, 0xe8, 0xd5, 0xb2, - 0xcf, 0x71, 0x8b, 0x74, 0x8e, 0xa8, 0xf1, 0x25, 0x5e, 0xb1, - 0x3e, 0xf8, 0xb7, 0xf8, 0xb9, 0xa0, 0x4c, 0x1, 0xfb, 0x48, - 0x1f, 0x8d, 0x5d, 0x8b, 0xe2, 0x4e, 0x83, 0x37, 0xdd, 0xbc, - 0x5a, 0xfc, 0xff, 00, 0x5d, 0x46, 0xe5, 0x7a, 0x5c, 0x3f, - 0xfd, 0xf5, 0x53, 0xc7, 0xae, 0xea, 0x11, 0xfd, 0xdb, 0xb9, - 0x7, 0xd1, 0xab, 0x75, 0xc4, 0x35, 0xd6, 0xf0, 0x47, 0x44, - 0x78, 0x91, 0xf5, 0x81, 0xfa, 0xd, 0x1f, 0x8d, 0x74, 0x69, - 0x7a, 0x5f, 0x46, 0x3e, 0xa6, 0xac, 0xc7, 0xe2, 0x5d, 0x32, - 0x5f, 0xbb, 0x7b, 0x11, 0xfc, 0x6b, 0xf3, 0xe5, 0x3c, 0x5b, - 0xab, 0x47, 0x8c, 0x5e, 0xcb, 0xff, 00, 0x7d, 0x55, 0xb8, - 0x7c, 0x7f, 0xad, 0xc3, 0xf7, 0x6f, 0x5f, 0xf1, 0x35, 0xb2, - 0xe2, 0x29, 0x7d, 0xaa, 0x7f, 0x89, 0xd1, 0x1e, 0x24, 0xa6, - 0xf7, 0x89, 0xfa, 0x6, 0x9a, 0xb5, 0x9b, 0xfd, 0xdb, 0xa8, - 0x8f, 0xfc, 0x8, 0x54, 0xa9, 0x79, 0x3, 0xfd, 0xd9, 0x91, - 0xbe, 0x8c, 0x2b, 0xe0, 0x48, 0x7e, 0x29, 0xeb, 0xf1, 0x1f, - 0xf8, 0xfb, 0x73, 0xf8, 0xd6, 0x84, 0x1f, 0x1a, 0x7c, 0x41, - 0x7, 0xfc, 0xb7, 0x27, 0xf1, 0xad, 0xe3, 0xc4, 0x50, 0xeb, - 0x4d, 0xfe, 0x7, 0x44, 0x78, 0x87, 0xe, 0xf7, 0x4c, 0xfb, - 0xbc, 0x3a, 0x9e, 0x8c, 0xf, 0xe3, 0x4b, 0x90, 0x7b, 0xd7, - 0xc3, 0xf6, 0xff, 00, 0x1f, 0x35, 0xc8, 0xb1, 0xba, 0x47, - 0x6f, 0xf8, 0x15, 0x6a, 0x5b, 0xfe, 0xd2, 0x1a, 0xc4, 0x3d, - 0x4b, 0xff, 00, 0xdf, 0x55, 0xd1, 0x1e, 0x21, 0xc3, 0xbd, - 0xe2, 0xd1, 0xd1, 0x1c, 0xfb, 0x8, 0xfa, 0x9f, 0x66, 0xd1, - 0x5f, 0x22, 0xdb, 0x7e, 0xd3, 0xba, 0x8a, 0xe3, 0xcc, 0x32, - 0x1f, 0x6c, 0xd6, 0xad, 0xbf, 0xed, 0x4d, 0x38, 0xc6, 0xe0, - 0xdf, 0x8e, 0x2b, 0x68, 0xe7, 0xd8, 0x37, 0xbb, 0x6b, 0xe4, - 0x6f, 0x1c, 0xe7, 0x7, 0x2f, 0xb4, 0x7d, 0x4b, 0x45, 0x7c, - 0xdf, 0x6b, 0xfb, 0x52, 0x46, 0x71, 0xe6, 0x7e, 0xa2, 0xb5, - 0x2d, 0xff, 00, 0x69, 0xfb, 0x17, 0xc0, 0x65, 0x5f, 0xa9, - 0xad, 0xe3, 0x9d, 0x60, 0xa5, 0xf6, 0xce, 0x88, 0xe6, 0x78, - 0x59, 0x6d, 0x33, 0xdf, 0x28, 0xaf, 0x18, 0xb7, 0xfd, 0xa4, - 0x74, 0x87, 0xc6, 0xf3, 0x18, 0xff, 00, 0x81, 0x56, 0x9d, - 0xbf, 0xed, 0x3, 0xa1, 0xcd, 0x8e, 0x57, 0xfe, 0xfb, 0xae, - 0x88, 0xe6, 0x78, 0x39, 0x6d, 0x51, 0x1b, 0xac, 0x6e, 0x1e, - 0x5b, 0x4d, 0x1e, 0xa9, 0x45, 0x79, 0xec, 0x1f, 0x1a, 0xf4, - 0x9, 0x40, 0xcc, 0xa0, 0x7f, 0xc0, 0x85, 0x5f, 0x83, 0xe2, - 0xc6, 0x83, 0x39, 0xe2, 0xe3, 0x1f, 0x88, 0xae, 0x85, 0x8c, - 0xc3, 0xcb, 0x69, 0xa3, 0x55, 0x88, 0xa4, 0xf6, 0x92, 0x3b, - 0x3a, 0x2b, 0x9a, 0x8f, 0xe2, 0x16, 0x87, 0x27, 0xfc, 0xbe, - 0x28, 0xfc, 0x6a, 0xdc, 0x5e, 0x32, 0xd2, 0x26, 0x3f, 0x2d, - 0xec, 0x7f, 0x9d, 0x6c, 0xab, 0x52, 0x7b, 0x49, 0x1a, 0x2a, - 0x90, 0x7d, 0x4d, 0xaa, 0x2b, 0x39, 0x3c, 0x41, 0xa7, 0x3f, - 0x4b, 0xc8, 0xbf, 0xef, 0xaa, 0x9d, 0x35, 0x4b, 0x49, 0x3e, - 0xed, 0xcc, 0x67, 0xfe, 0x4, 0x2a, 0xd4, 0xe2, 0xf6, 0x65, - 0x73, 0x27, 0xd4, 0xb5, 0x55, 0xb5, 0x27, 0xf2, 0xac, 0x2e, - 0x1b, 0xd1, 0x9, 0xfd, 0x2a, 0x41, 0x73, 0xb, 0x74, 0x95, - 0xf, 0xfc, 0x8, 0x56, 0x4f, 0x8b, 0xb5, 0x58, 0x34, 0xef, - 0xf, 0x5e, 0xcd, 0x24, 0xaa, 0x2, 0xc6, 0x7f, 0x88, 0x52, - 0x9c, 0x92, 0x8b, 0x62, 0x94, 0x92, 0x8b, 0x67, 0xc3, 0xff, - 00, 0x18, 0xef, 0x47, 0xf6, 0xe4, 0xc4, 0x9f, 0xe2, 0x3f, - 0xce, 0xbe, 0x6a, 0xf8, 0x9d, 0xe2, 0x25, 0x8a, 0xdd, 0xe2, - 0x57, 0xc1, 0xc1, 0xef, 0x5e, 0xa7, 0xf1, 0xaf, 0xc6, 0xf0, - 0x7f, 0x69, 0x5c, 0x4a, 0xae, 0x32, 0x58, 0xe0, 0x66, 0xbe, - 0x67, 0xbe, 0x87, 0x53, 0xf8, 0x83, 0xe2, 0x5b, 0x1d, 0x13, - 0x4b, 0x89, 0xee, 0x75, 0x2d, 0x4a, 0xe1, 0x6d, 0xad, 0xe2, - 0x5e, 0x4b, 0x33, 0x1c, 0xa, 0xf8, 0x3c, 0xbf, 0xc, 0xe5, - 0x39, 0x56, 0x7d, 0x5b, 0xb1, 0xf8, 0x9d, 0x78, 0x4b, 0x33, - 0xcc, 0xb9, 0x21, 0xf0, 0xa6, 0x7e, 0x80, 0x7f, 0xc1, 0x2d, - 0xbc, 0x19, 0x36, 0x97, 0xf0, 0xa3, 0xc5, 0x3e, 0x28, 0xb8, - 0x8c, 0xab, 0x6b, 0xda, 0xb6, 0xd8, 0x58, 0xff, 00, 0x14, - 0x30, 0x26, 0xc0, 0x7f, 0xef, 0xb6, 0x93, 0xf2, 0xaf, 0xb5, - 0x6b, 0x88, 0xf8, 0x27, 0xf0, 0xda, 0xdf, 0xe1, 0xf, 0xc2, - 0x9f, 0xc, 0xf8, 0x42, 0xdc, 0xab, 0x8d, 0x2e, 0xcd, 0x22, - 0x92, 0x45, 0x18, 0xf3, 0x25, 0x3f, 0x34, 0x8d, 0xf8, 0xb1, - 0x63, 0x5d, 0xbd, 0x7d, 0xec, 0x23, 0xcb, 0x14, 0x8f, 0xda, - 0x68, 0xc3, 0xd9, 0x53, 0x8c, 0x3b, 0x20, 0xa2, 0x8a, 0x2a, - 0xcd, 0x82, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0xa3, 0x92, - 0xde, 0x29, 0x86, 0x24, 0x89, 0x1c, 0x7f, 0xb4, 0xa0, 0xd4, - 0x94, 0x51, 0xb8, 0x19, 0x97, 0x3e, 0x19, 0xd1, 0xef, 0x41, - 0x17, 0x1a, 0x55, 0x94, 0xc0, 0xf6, 0x92, 0xdd, 0xf, 0xf3, - 0x15, 0x97, 0x75, 0xf0, 0xcb, 0xc2, 0x77, 0x83, 0x12, 0xf8, - 0x7b, 0x4f, 0x3f, 0xee, 0xc0, 0xab, 0xfc, 0xb1, 0x5d, 0x3d, - 0x15, 0x9b, 0xa7, 0x9, 0x6f, 0x14, 0x64, 0xe9, 0x53, 0x97, - 0xc5, 0x14, 0xfe, 0x47, 0x5, 0x75, 0xf0, 0x2b, 0xc0, 0xd7, - 0x9f, 0x7f, 0x40, 0x85, 0x7f, 0xdc, 0x91, 0xd7, 0xf9, 0x35, - 0x64, 0xdc, 0x7e, 0xcd, 0x1e, 0x2, 0xb8, 0x24, 0xff, 00, - 0x65, 0xcb, 0x1e, 0x7b, 0x24, 0xed, 0xfd, 0x73, 0x5e, 0xa7, - 0x45, 0x62, 0xf0, 0xb4, 0x1e, 0xf0, 0x5f, 0x71, 0x83, 0xc1, - 0xe1, 0xa5, 0xbd, 0x35, 0xf7, 0x23, 0xc5, 0xae, 0x7f, 0x64, - 0xbf, 0x3, 0x5c, 0x64, 0xa8, 0xbe, 0x8b, 0x3d, 0x2, 0xca, - 0xa4, 0xf, 0xcd, 0x6b, 0x16, 0xeb, 0xf6, 0x32, 0xf0, 0xb4, - 0xa1, 0xbc, 0xad, 0x46, 0xee, 0x33, 0xdb, 0x72, 0x29, 0xff, - 00, 0xa, 0xfa, 0xe, 0x8a, 0xcd, 0xe0, 0x70, 0xef, 0xec, - 0x19, 0x3c, 0xbb, 0x8, 0xff, 00, 0xe5, 0xda, 0x3e, 0x61, - 0xbb, 0xfd, 0x88, 0xb4, 0xe7, 0x53, 0xe4, 0xeb, 0x99, 0x3d, - 0x83, 0xdb, 0x60, 0x7f, 0xe8, 0x55, 0xcf, 0xdf, 0x7e, 0xc3, - 0x77, 0x27, 0xfd, 0x46, 0xa5, 0x63, 0x2f, 0xfb, 0xe1, 0x97, - 0xff, 00, 0x65, 0x35, 0xf5, 0xf5, 0x15, 0x93, 0xcb, 0xb0, - 0xef, 0x64, 0xd7, 0xcd, 0x98, 0xbc, 0xab, 0x8, 0xfe, 0xcd, - 0xbe, 0x6c, 0xf8, 0x92, 0xf7, 0xf6, 0x18, 0xd6, 0xb9, 0xf2, - 0xdb, 0x4e, 0x97, 0xfd, 0xd9, 0x48, 0xfe, 0x6a, 0x2b, 0x6, - 0xfb, 0xf6, 0x1e, 0xf1, 0x2c, 0x64, 0xec, 0xd3, 0xad, 0xa6, - 0xf7, 0x4b, 0x84, 0xfe, 0xa4, 0x57, 0xdf, 0x34, 0x54, 0x3c, - 0xb2, 0x8f, 0x46, 0xfe, 0xf3, 0x7, 0x93, 0x61, 0x9f, 0x57, - 0xf7, 0xff, 00, 0xc0, 0x3f, 0x39, 0xaf, 0x7f, 0x63, 0x1f, - 0x15, 0xdb, 0x92, 0x3f, 0xb0, 0x65, 0x6f, 0xfa, 0xe7, 0x22, - 0xb7, 0xf2, 0x26, 0xb0, 0x2f, 0x7f, 0x65, 0xf, 0x14, 0x5a, - 0x12, 0xe, 0x83, 0xa8, 0xae, 0x3f, 0xbb, 0x13, 0x37, 0xf2, - 0x15, 0xfa, 0x71, 0x45, 0x43, 0xcb, 0x23, 0xd2, 0x6c, 0xc2, - 0x59, 0x15, 0x7, 0xb4, 0x9f, 0xe1, 0xfe, 0x47, 0xe5, 0x3d, - 0xef, 0xec, 0xfd, 0xad, 0xd9, 0x13, 0xe6, 0x59, 0x5e, 0xc3, - 0xfe, 0xfa, 0x11, 0xfc, 0xc5, 0x64, 0x4f, 0xf0, 0x8f, 0x56, - 0xb7, 0x24, 0x3, 0x32, 0xff, 00, 0xbc, 0x2b, 0xf5, 0xb8, - 0xa8, 0x3d, 0x40, 0x35, 0xc, 0x96, 0x16, 0xd3, 0xc, 0x49, - 0x6f, 0x14, 0x83, 0xfd, 0xa4, 0x6, 0xb3, 0x79, 0x6c, 0xfa, - 0x54, 0xfc, 0x3f, 0xe0, 0x9c, 0x92, 0xe1, 0xda, 0x72, 0xfb, - 0x4b, 0xff, 00, 0x1, 0xff, 00, 0x82, 0x7e, 0x45, 0xc9, - 0xf0, 0xeb, 0x5a, 0x83, 0xa4, 0x8f, 0xf8, 0xa9, 0xaa, 0xcf, - 0xe1, 0x1d, 0x7e, 0x1e, 0x8f, 0xf9, 0xe4, 0x57, 0xeb, 0x7c, - 0xfe, 0x15, 0xd1, 0x6e, 0xbf, 0xd7, 0x69, 0x16, 0x32, 0xff, - 00, 0xbf, 0x6c, 0x87, 0xfa, 0x56, 0x65, 0xcf, 0xc3, 0xf, - 0x9, 0x5d, 0xff, 00, 0xad, 0xf0, 0xee, 0x9c, 0x7d, 0xc5, - 0xba, 0xaf, 0xf2, 0xa8, 0x79, 0x75, 0x6e, 0x93, 0x4f, 0xe4, - 0x72, 0x4f, 0x86, 0x29, 0xbd, 0xb9, 0x7e, 0xe3, 0xf2, 0x7c, - 0xe9, 0x3e, 0x22, 0x83, 0xa7, 0x3f, 0xf0, 0x23, 0x4d, 0xff, - 00, 0x8a, 0x8a, 0x1f, 0xf9, 0x66, 0x5b, 0x1e, 0xf5, 0xfa, - 0x9b, 0x75, 0xf0, 0x2b, 0xc0, 0xb7, 0x79, 0xdf, 0xe1, 0xeb, - 0x75, 0xcf, 0xfc, 0xf3, 0x77, 0x5f, 0xe4, 0x6b, 0x26, 0xe7, - 0xf6, 0x67, 0xf0, 0x5, 0xc0, 0x23, 0xfb, 0x2a, 0x48, 0xb3, - 0xdd, 0x27, 0x6f, 0xeb, 0x9a, 0xc9, 0xe5, 0xf5, 0xff, 00, - 0xba, 0xff, 00, 0xaf, 0x43, 0x8e, 0x7c, 0x29, 0x17, 0xf6, - 0x63, 0xf7, 0xbf, 0xf2, 0x3f, 0x32, 0x3f, 0xb5, 0xb5, 0xc8, - 0x4f, 0xcd, 0x6e, 0xe7, 0xf0, 0xcd, 0x28, 0xf1, 0x46, 0xab, - 0x17, 0xdf, 0xb7, 0x7f, 0xfb, 0xe6, 0xbf, 0x48, 0x2e, 0xff, - 00, 0x64, 0xbf, 0x2, 0xdc, 0x8f, 0x91, 0x2f, 0x61, 0xff, - 00, 0x76, 0x55, 0x3f, 0xcd, 0x6b, 0x1e, 0xf3, 0xf6, 0x33, - 0xf0, 0xa4, 0xc3, 0xf7, 0x1a, 0x85, 0xe4, 0x47, 0xfd, 0xb5, - 0x56, 0xff, 00, 0xa, 0xc9, 0xe0, 0x2b, 0x7f, 0x22, 0x67, - 0x24, 0xb8, 0x51, 0xad, 0xa1, 0xf7, 0x48, 0xfc, 0xfa, 0x5f, - 0x1c, 0x5d, 0xc7, 0xf7, 0xe1, 0x61, 0xff, 00, 0x1, 0x35, - 0x32, 0x7c, 0x41, 0x71, 0xf7, 0x90, 0x8f, 0xce, 0xbe, 0xe2, - 0xbd, 0xfd, 0x88, 0x74, 0xc9, 0x3f, 0xe3, 0xdf, 0x5b, 0xc0, - 0xff, 00, 0xa6, 0x96, 0xdf, 0xe0, 0xd5, 0x81, 0x79, 0xfb, - 0xc, 0x4e, 0xcc, 0x7c, 0x9d, 0x52, 0xc5, 0xd7, 0xb6, 0xf5, - 0x65, 0x3f, 0xfa, 0x9, 0xac, 0x1e, 0x2, 0xa7, 0x5a, 0x5f, - 0x91, 0xcb, 0x2e, 0x17, 0xab, 0x1d, 0xa3, 0x2f, 0xbd, 0x7f, - 0x99, 0xf2, 0x24, 0x7f, 0x11, 0x13, 0xbe, 0x6a, 0xd4, 0x7f, - 0x10, 0xa0, 0x38, 0xcb, 0x11, 0x5f, 0x4a, 0x5d, 0xfe, 0xc2, - 0xfa, 0xcf, 0x3e, 0x5b, 0xe9, 0xb2, 0xe, 0xd8, 0x90, 0x8f, - 0xe6, 0xb5, 0x83, 0x79, 0xfb, 0xe, 0xf8, 0x99, 0x41, 0x29, - 0xa7, 0xdb, 0x49, 0xfe, 0xe5, 0xc2, 0xf, 0xeb, 0x58, 0x3c, - 0xf, 0x7a, 0x4c, 0xe6, 0x97, 0xe, 0xe2, 0x23, 0xb7, 0x3f, - 0xdd, 0x73, 0xc4, 0xa3, 0xf1, 0xed, 0xb3, 0x7f, 0xcb, 0x4f, - 0xd2, 0xac, 0xc7, 0xe3, 0x7b, 0x66, 0xff, 00, 0x96, 0xa2, - 0xbd, 0x16, 0xf7, 0xf6, 0x2e, 0xf1, 0x64, 0xa, 0xcd, 0xfd, - 0x83, 0x23, 0x1, 0xff, 00, 0x3c, 0xe5, 0x56, 0xfd, 0x3, - 0x57, 0x3f, 0x7d, 0xfb, 0x28, 0x78, 0xa6, 0xd0, 0x16, 0x7d, - 0x3, 0x51, 0x50, 0x3b, 0xac, 0x4c, 0x7f, 0xa5, 0x60, 0xf0, - 0x54, 0xd6, 0xf0, 0x6b, 0xe4, 0x73, 0xcb, 0x25, 0xc5, 0xc3, - 0xed, 0xc9, 0x7a, 0xa6, 0x61, 0x27, 0x8c, 0x2d, 0x5b, 0xfe, - 0x5a, 0xad, 0x58, 0x4f, 0x14, 0x5b, 0x3f, 0xfc, 0xb4, 0x5f, - 0xce, 0xaa, 0x5f, 0x7e, 0xcf, 0xda, 0xe5, 0x8e, 0x7c, 0xdb, - 0x1b, 0xf8, 0xf, 0xfb, 0x71, 0xb0, 0xfe, 0x62, 0xb2, 0x27, - 0xf8, 0x47, 0xaa, 0xdb, 0xe7, 0x99, 0xd7, 0xea, 0xb5, 0x83, - 0xc2, 0x50, 0xf4, 0x39, 0xde, 0x5f, 0x8b, 0x8f, 0xfc, 0xbc, - 0x5f, 0x34, 0x75, 0x2b, 0xaf, 0xdb, 0xb7, 0xf1, 0x8f, 0xce, - 0xa5, 0x5d, 0x62, 0x16, 0xee, 0x2b, 0x83, 0x93, 0xe1, 0xd6, - 0xb3, 0xf, 0xdd, 0x95, 0xc7, 0xd5, 0x6a, 0xbb, 0xf8, 0x3f, - 0x5e, 0x83, 0xa4, 0x9f, 0xce, 0xb3, 0xfa, 0x95, 0x17, 0xb4, - 0x88, 0xfa, 0xae, 0x35, 0x6d, 0x28, 0xb3, 0xd2, 0x6, 0xa9, - 0x9, 0xfe, 0x2a, 0x78, 0xbf, 0x84, 0xff, 00, 0x10, 0xaf, - 0x2f, 0x3a, 0x37, 0x88, 0x61, 0xe8, 0x73, 0xff, 00, 0x2, - 0xa6, 0x95, 0xf1, 0xc, 0x3d, 0x50, 0x9f, 0xa3, 0x54, 0xbc, - 0xbe, 0x1d, 0x24, 0x4f, 0xb1, 0xc7, 0x2f, 0xb2, 0x9f, 0xcc, - 0xf5, 0x51, 0x77, 0x11, 0xfe, 0x2a, 0x70, 0x9e, 0x33, 0xfc, - 0x55, 0xe5, 0x3, 0x52, 0xd7, 0xa1, 0xfb, 0xd0, 0x39, 0xa7, - 0x7f, 0xc2, 0x4d, 0xaa, 0xc5, 0xf7, 0xe0, 0x93, 0xfe, 0xf9, - 0xa9, 0x79, 0x77, 0x69, 0x12, 0xd6, 0x32, 0x3b, 0xd2, 0x3d, - 0x58, 0x4c, 0xbd, 0x9a, 0x9e, 0xb3, 0x11, 0xd2, 0x43, 0xf9, - 0xd7, 0x94, 0x2f, 0x8d, 0x6f, 0x53, 0xef, 0x42, 0xff, 00, - 0x8a, 0x9a, 0x95, 0x3e, 0x20, 0x4a, 0xbf, 0x79, 0x18, 0x7e, - 0x6, 0xb3, 0x79, 0x6c, 0xfa, 0x32, 0x7d, 0xae, 0x22, 0x3b, - 0xd2, 0x67, 0xaa, 0xad, 0xd4, 0x8b, 0xd2, 0x56, 0x1f, 0x8d, - 0x4c, 0x9a, 0xa5, 0xda, 0x7d, 0xdb, 0x89, 0x7, 0xd1, 0xab, - 0xcb, 0x23, 0xf8, 0x88, 0xbd, 0xc1, 0x15, 0x66, 0x3f, 0x88, - 0x50, 0x9e, 0xac, 0x6b, 0x37, 0x97, 0x55, 0x5d, 0x3, 0xeb, - 0xb5, 0x23, 0xbc, 0x64, 0x8f, 0x51, 0x8f, 0xc4, 0x3a, 0x8c, - 0x47, 0x2b, 0x75, 0x27, 0xfd, 0xf4, 0x6a, 0xdc, 0x5e, 0x33, - 0xd6, 0x22, 0xfb, 0xb7, 0x8e, 0x3f, 0x1a, 0xf2, 0xd8, 0xfc, - 0x7d, 0x6e, 0x7f, 0x8c, 0xd4, 0xeb, 0xe3, 0xab, 0x6c, 0x64, - 0xcb, 0x8a, 0xcf, 0xea, 0x35, 0xa3, 0xb2, 0x34, 0x59, 0xa4, - 0xa3, 0xd6, 0x4b, 0xef, 0x3d, 0x56, 0x1f, 0x88, 0x9a, 0xe4, - 0x3d, 0x2e, 0xd8, 0xfd, 0x4d, 0x5e, 0x8f, 0xe2, 0xe6, 0xbd, - 0x7, 0xfc, 0xbc, 0xd7, 0x8b, 0x5c, 0x7c, 0x42, 0xb4, 0x88, - 0x1f, 0xde, 0xd6, 0x16, 0xa7, 0xf1, 0x4e, 0xde, 0x30, 0x76, - 0x36, 0xe3, 0x5d, 0x14, 0xf0, 0x78, 0xa7, 0xb3, 0x6b, 0xe6, - 0xcd, 0x16, 0x73, 0x5f, 0x6a, 0x6e, 0x4c, 0xfa, 0x2f, 0xfe, - 0x17, 0xe6, 0xb1, 0x62, 0x32, 0xd3, 0xee, 0x23, 0xde, 0xb8, - 0x5f, 0x88, 0x3f, 0xb4, 0xad, 0xfd, 0xed, 0x94, 0xd0, 0xbd, - 0xe3, 0x7c, 0xc3, 0x5, 0x1, 0xe2, 0xbe, 0x7b, 0xd6, 0x7e, - 0x22, 0xde, 0x5f, 0x16, 0x58, 0x89, 0x55, 0x35, 0x99, 0xe1, - 0xdf, 0xb, 0xf8, 0x87, 0xe2, 0x26, 0xbb, 0x6f, 0xa5, 0xe8, - 0xd6, 0x17, 0x3a, 0xae, 0xa3, 0x70, 0xdb, 0x63, 0x82, 0x4, - 0x2c, 0x4f, 0xf8, 0x1, 0xea, 0x78, 0x15, 0xed, 0xd0, 0xc0, - 0xd4, 0x4a, 0xd5, 0x66, 0xdf, 0x95, 0xcd, 0xe3, 0x8b, 0xcc, - 0x71, 0x5e, 0xe5, 0x49, 0xf2, 0xc5, 0xf4, 0xea, 0xc8, 0x7c, - 0x53, 0xe2, 0xcb, 0x9f, 0x10, 0x5d, 0x33, 0xb3, 0x33, 0x64, - 0xf0, 0x7, 0x7a, 0xfb, 0xf3, 0xf6, 0x15, 0xfd, 0x91, 0x66, - 0xf0, 0x1a, 0x45, 0xf1, 0xf, 0xc6, 0x76, 0x5e, 0x5f, 0x88, - 0xee, 0x13, 0x3a, 0x5d, 0x94, 0x87, 0x26, 0xce, 0x26, 0x5e, - 0x64, 0x71, 0xda, 0x46, 0x7, 0xa7, 0xf0, 0x8f, 0x73, 0xc6, - 0xcf, 0xec, 0xb3, 0xfb, 0xb, 0xe9, 0xff, 00, 0xc, 0x65, - 0xb7, 0xf1, 0x37, 0x8d, 0xd2, 0xdf, 0x57, 0xf1, 0x3a, 0x10, - 0xf6, 0xd6, 0x6a, 0x7c, 0xcb, 0x7b, 0x2e, 0x3a, 0x9c, 0x8c, - 0x3c, 0x9e, 0xfd, 0x7, 0x6c, 0xf5, 0xaf, 0xae, 0xab, 0xe9, - 0xf0, 0xf8, 0x75, 0x4, 0x9b, 0x5e, 0x88, 0xfd, 0xf, 0x26, - 0xca, 0x56, 0x12, 0x2a, 0xa5, 0x45, 0x67, 0xd1, 0x7f, 0x9f, - 0x98, 0x51, 0x45, 0x15, 0xe8, 0x1f, 0x58, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x21, 00, 0xf5, 0xa8, 0xa5, 0xb3, 0xb7, - 0x9b, 0xfd, 0x64, 0x11, 0xc9, 0xfe, 0xf2, 0x3, 0x45, 0x14, - 0xad, 0x71, 0x5a, 0xe5, 0x19, 0xfc, 0x2d, 0xa3, 0x5c, 0x92, - 0x66, 0xd2, 0x2c, 0x65, 0x27, 0xbb, 0xdb, 0x21, 0xfe, 0x95, - 0x9b, 0x71, 0xf0, 0xcf, 0xc2, 0x77, 0x44, 0x99, 0x7c, 0x3b, - 0xa6, 0xb1, 0x3f, 0xf4, 0xec, 0xa3, 0xf9, 0xa, 0x28, 0xa8, - 0x74, 0xe0, 0xf7, 0x8a, 0x33, 0x74, 0xa9, 0xcb, 0x78, 0xaf, - 0xb8, 0xc7, 0xbb, 0xf8, 0x13, 0xe0, 0x5b, 0xdc, 0xef, 0xf0, - 0xfd, 0xba, 0x93, 0xde, 0x36, 0x65, 0xfe, 0x46, 0xb1, 0xee, - 0xff, 00, 0x66, 0x4f, 0x1, 0x5d, 0x74, 0xd3, 0xa5, 0x87, - 0xfe, 0xb9, 0xcc, 0x7f, 0xae, 0x68, 0xa2, 0xb1, 0x78, 0x5a, - 0xf, 0x78, 0x2f, 0xb8, 0xc2, 0x58, 0x3c, 0x34, 0xb7, 0xa6, - 0xbe, 0xe4, 0x63, 0x5d, 0x7e, 0xc8, 0xbe, 0xa, 0x9f, 0xee, - 0x49, 0x7d, 0x17, 0xb0, 0x74, 0x3f, 0xfb, 0x2d, 0x64, 0x5d, - 0x7e, 0xc6, 0x1e, 0x19, 0x97, 0x3e, 0x4e, 0xa9, 0x77, 0x17, - 0xfb, 0xd1, 0xab, 0x7f, 0x85, 0x14, 0x56, 0x6f, 0x3, 0x86, - 0x7f, 0x60, 0xc5, 0xe5, 0xd8, 0x47, 0xff, 00, 0x2e, 0xd1, - 0x8b, 0x7b, 0xfb, 0x10, 0x69, 0xd2, 0x3, 0xe4, 0x6b, 0xdc, - 0xf6, 0x12, 0x5a, 0xff, 00, 0x83, 0x56, 0xd, 0xf7, 0xec, - 0x31, 0x71, 0x83, 0xf6, 0x7d, 0x5a, 0xca, 0x53, 0xd8, 0x49, - 0x1b, 0x2f, 0xf4, 0x34, 0x51, 0x59, 0xbc, 0xbb, 0xe, 0xf6, - 0x56, 0xf9, 0xb3, 0x27, 0x95, 0x61, 0x1f, 0xd9, 0xb7, 0xcd, - 0x98, 0x17, 0xdf, 0xb0, 0xce, 0xb8, 0xa0, 0xf9, 0x6d, 0xa7, - 0x4f, 0xec, 0xb2, 0x63, 0xf9, 0xa8, 0xae, 0x7e, 0xff, 00, - 0xf6, 0x24, 0xf1, 0x44, 0x59, 0xd9, 0xa5, 0xc1, 0x37, 0xbc, - 0x73, 0x47, 0xfd, 0x5a, 0x8a, 0x2b, 0x29, 0x65, 0xb4, 0xba, - 0x37, 0xf7, 0xff, 00, 0xc0, 0x39, 0xe5, 0x93, 0x61, 0xba, - 0x37, 0xf7, 0xff, 00, 0xc0, 0x30, 0x2f, 0x3f, 0x63, 0x6f, - 0x16, 0x43, 0xff, 00, 0x32, 0xfc, 0xed, 0xff, 00, 0x5c, - 0xd9, 0x5b, 0xf9, 0x1a, 0xc1, 0xbf, 0xfd, 0x94, 0x3c, 0x55, - 0x6d, 0x90, 0x7c, 0x3f, 0xa9, 0x8f, 0x75, 0x85, 0x98, 0x7e, - 0x82, 0x8a, 0x2b, 0x86, 0xa6, 0x16, 0x34, 0xf6, 0x93, 0xfe, - 0xbe, 0x47, 0x97, 0x5f, 0x2c, 0xa3, 0x4d, 0x68, 0xdf, 0xe1, - 0xfe, 0x46, 0xb, 0x7e, 0xcc, 0x1e, 0x23, 0xb9, 0x9f, 0xcb, - 0x5d, 0x1e, 0xfc, 0xbe, 0x7a, 0x1b, 0x77, 0x3f, 0xd2, 0xb4, - 0x34, 0xff, 00, 0xd8, 0x8f, 0xc7, 0x7a, 0xc4, 0xaa, 0xb0, - 0xe8, 0x57, 0x10, 0x8c, 0xfd, 0xfb, 0x8c, 0x44, 0xb8, 0xf5, - 0xf9, 0x88, 0xa2, 0x8a, 0x58, 0x7a, 0x4e, 0xa4, 0xac, 0xe4, - 0xff, 00, 0xf, 0xf2, 0x38, 0x68, 0x65, 0x54, 0x31, 0x4e, - 0xd3, 0x6d, 0x7a, 0x5b, 0xfc, 0x8f, 0x62, 0xf8, 0x79, 0xff, - 00, 0x4, 0xdc, 0x88, 0x3a, 0x5c, 0x78, 0xc3, 0x5c, 0x8, - 0xa0, 0x83, 0xf6, 0x3d, 0x34, 0x6e, 0x63, 0xec, 0x64, 0x61, - 0x81, 0xf8, 0x3, 0xf5, 0xaf, 0xae, 0x3e, 0x1d, 0xfc, 0x27, - 0xf0, 0xaf, 0xc2, 0xad, 0x29, 0x6c, 0x3c, 0x33, 0xa3, 0xdb, - 0xe9, 0xc9, 0x8c, 0x3c, 0xca, 0xbb, 0xa6, 0x97, 0xdd, 0xdc, - 0xf2, 0x68, 0xa2, 0xbe, 0x82, 0x14, 0x61, 0x4f, 0x6d, 0xcf, - 0xac, 0xc1, 0xe5, 0x98, 0x5c, 0xe, 0xb4, 0x61, 0xaf, 0x77, - 0xab, 0xfb, 0xff, 00, 0xc8, 0xeb, 0xa8, 0xa2, 0x8a, 0xd8, - 0xf5, 0x42, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0xf, - 0xff, 0xd9, 0}; - -static const char data_runtime_shtml[] = { - /* /runtime.shtml */ - 0x2f, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x20, 0x6f, 0x6e, 0x4c, 0x6f, 0x61, 0x64, - 0x3d, 0x22, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x73, - 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x28, - 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x6c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x68, 0x72, 0x65, 0x66, 0x3d, - 0x27, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x73, - 0x68, 0x74, 0x6d, 0x6c, 0x27, 0x26, 0x71, 0x75, 0x6f, 0x74, - 0x3b, 0x2c, 0x32, 0x30, 0x30, 0x30, 0x29, 0x22, 0x3e, 0xd, - 0xa, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, - 0x65, 0x3d, 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x3e, - 0xd, 0xa, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, - 0x22, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, - 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x53, - 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x72, 0x75, 0x6e, - 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x52, 0x75, 0x6e, 0x20, 0x54, 0x69, 0x6d, 0x65, - 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, - 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x73, - 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x54, 0x43, 0x50, 0x20, 0x53, 0x74, 0x61, 0x74, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, - 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61, 0x3e, - 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, - 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, - 0x66, 0x72, 0x65, 0x65, 0x72, 0x74, 0x6f, 0x73, 0x2e, 0x6f, - 0x72, 0x67, 0x2f, 0x22, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, - 0x54, 0x4f, 0x53, 0x20, 0x48, 0x6f, 0x6d, 0x65, 0x70, 0x61, - 0x67, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6f, 0x2e, 0x73, 0x68, - 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x49, 0x4f, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x6c, 0x6f, 0x67, 0x6f, 0x2e, 0x6a, 0x70, 0x67, 0x22, 0x3e, - 0x33, 0x37, 0x4b, 0x20, 0x6a, 0x70, 0x67, 0x3c, 0x2f, 0x61, - 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, - 0xd, 0xa, 0x3c, 0x68, 0x72, 0x3e, 0xd, 0xa, 0x3c, 0x62, - 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x32, - 0x3e, 0x52, 0x75, 0x6e, 0x2d, 0x74, 0x69, 0x6d, 0x65, 0x20, - 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, - 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0xd, 0xa, 0x50, 0x61, 0x67, - 0x65, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x72, 0x65, 0x66, - 0x72, 0x65, 0x73, 0x68, 0x20, 0x65, 0x76, 0x65, 0x72, 0x79, - 0x20, 0x32, 0x20, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, - 0x2e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x6e, - 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x63, 0x6f, - 0x75, 0x72, 0x69, 0x65, 0x72, 0x22, 0x3e, 0x3c, 0x70, 0x72, - 0x65, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x41, 0x62, - 0x73, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x25, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x3c, 0x62, - 0x72, 0x3e, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x3c, 0x62, 0x72, 0x3e, 0xd, 0xa, 0x25, 0x21, - 0x20, 0x72, 0x75, 0x6e, 0x2d, 0x74, 0x69, 0x6d, 0x65, 0xd, - 0xa, 0x3c, 0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, - 0x6f, 0x6e, 0x74, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, - 0x6e, 0x74, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, - 0x79, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, - 0x3e, 0xd, 0xa, 0xd, 0xa, 0}; - -static const char data_stats_shtml[] = { - /* /stats.shtml */ - 0x2f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x6e, - 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, - 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x61, 0x20, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, - 0x61, 0x73, 0x6b, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x52, 0x75, 0x6e, - 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, 0x74, 0x61, 0x74, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x43, 0x50, - 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, - 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, - 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, 0x65, 0x65, 0x72, - 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x22, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x20, 0x48, - 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, - 0x6a, 0x70, 0x67, 0x22, 0x3e, 0x33, 0x37, 0x4b, 0x20, 0x6a, - 0x70, 0x67, 0x3c, 0x2f, 0x61, 0x3e, 0xd, 0xa, 0x3c, 0x62, - 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x72, - 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, - 0xd, 0xa, 0x3c, 0x68, 0x32, 0x3e, 0x4e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, - 0x74, 0x69, 0x63, 0x73, 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0xd, - 0xa, 0x3c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x77, 0x69, - 0x64, 0x74, 0x68, 0x3d, 0x22, 0x33, 0x30, 0x30, 0x22, 0x20, - 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x3d, 0x22, 0x30, 0x22, - 0x3e, 0xd, 0xa, 0x3c, 0x74, 0x72, 0x3e, 0x3c, 0x74, 0x64, - 0x20, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x3d, 0x22, 0x6c, 0x65, - 0x66, 0x74, 0x22, 0x3e, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, - 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x63, 0x6f, 0x75, 0x72, - 0x69, 0x65, 0x72, 0x22, 0x3e, 0x3c, 0x70, 0x72, 0x65, 0x3e, - 0xd, 0xa, 0x49, 0x50, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, - 0x74, 0x73, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, - 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, 0xd, 0xa, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x64, 0x65, - 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x44, 0x72, 0x6f, 0x70, - 0x70, 0x65, 0x64, 0xd, 0xa, 0x49, 0x50, 0x20, 0x65, 0x72, - 0x72, 0x6f, 0x72, 0x73, 0x20, 0x20, 0x20, 0x20, 0x49, 0x50, - 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, 0x6c, 0x65, 0x6e, 0x67, - 0x74, 0x68, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x49, 0x50, 0x20, - 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x2c, 0x20, 0x68, 0x69, - 0x67, 0x68, 0x20, 0x62, 0x79, 0x74, 0x65, 0xd, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x49, 0x50, 0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, - 0x68, 0x2c, 0x20, 0x6c, 0x6f, 0x77, 0x20, 0x62, 0x79, 0x74, - 0x65, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x49, 0x50, 0x20, 0x66, - 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0xd, 0xa, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, - 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0xd, 0xa, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x57, 0x72, 0x6f, 0x6e, 0x67, 0x20, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0xd, 0xa, 0x49, - 0x43, 0x4d, 0x50, 0x9, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, - 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x72, 0x65, 0x63, - 0x65, 0x69, 0x76, 0x65, 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x73, 0x65, - 0x6e, 0x74, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, - 0x6b, 0x65, 0x74, 0x73, 0x20, 0x64, 0x72, 0x6f, 0x70, 0x70, - 0x65, 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x54, 0x79, 0x70, - 0x65, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0xd, 0xa, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, - 0x6d, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0xd, 0xa, - 0x54, 0x43, 0x50, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, - 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0xd, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, 0xd, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x64, - 0x72, 0x6f, 0x70, 0x70, 0x65, 0x64, 0xd, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x20, - 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0xd, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x44, 0x61, 0x74, 0x61, 0x20, 0x70, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x73, 0x20, 0x77, 0x69, 0x74, 0x68, 0x6f, 0x75, - 0x74, 0x20, 0x41, 0x43, 0x4b, 0x73, 0xd, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x52, 0x65, 0x73, 0x65, 0x74, 0x73, 0xd, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x52, 0x65, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, - 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x61, 0xd, 0xa, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x53, 0x79, 0x6e, 0x20, 0x74, 0x6f, 0x20, - 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x64, 0x20, 0x70, 0x6f, 0x72, - 0x74, 0xd, 0xa, 0x55, 0x44, 0x50, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x73, 0x20, 0x64, 0x72, 0x6f, 0x70, 0x70, 0x65, - 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x73, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, - 0x65, 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, - 0x6b, 0x65, 0x74, 0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, 0xd, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x73, 0x20, 0x63, 0x68, 0x6b, 0x65, 0x72, 0x72, 0xd, 0xa, - 0x9, 0x20, 0x20, 0x20, 0x20, 0x20, 0x4e, 0x6f, 0x20, 0x63, - 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, - 0x61, 0x76, 0x61, 0x6c, 0x69, 0x61, 0x62, 0x6c, 0x65, 0xd, - 0xa, 0x3c, 0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, - 0x6f, 0x6e, 0x74, 0x3e, 0x3c, 0x2f, 0x74, 0x64, 0x3e, 0x3c, - 0x74, 0x64, 0x3e, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, - 0x61, 0x63, 0x65, 0x3d, 0x22, 0x63, 0x6f, 0x75, 0x72, 0x69, - 0x65, 0x72, 0x22, 0x3e, 0x3c, 0x70, 0x72, 0x65, 0x3e, 0x25, - 0x21, 0x20, 0x6e, 0x65, 0x74, 0x2d, 0x73, 0x74, 0x61, 0x74, - 0x73, 0xd, 0xa, 0x3c, 0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, - 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0x3c, 0x2f, 0x74, 0x64, - 0x3e, 0x3c, 0x2f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x3e, 0xd, - 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xd, 0xa, - 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xd, 0xa, 0x3c, - 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, 0xa, 0}; - -static const char data_tcp_shtml[] = { - /* /tcp.shtml */ - 0x2f, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x6e, - 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, - 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x61, 0x20, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, - 0x61, 0x73, 0x6b, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x52, 0x75, 0x6e, - 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, 0x74, 0x61, 0x74, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x43, 0x50, - 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, - 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, - 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, 0x65, 0x65, 0x72, - 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x22, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x20, 0x48, - 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, - 0x6a, 0x70, 0x67, 0x22, 0x3e, 0x33, 0x37, 0x4b, 0x20, 0x6a, - 0x70, 0x67, 0x3c, 0x2f, 0x61, 0x3e, 0xd, 0xa, 0x3c, 0x62, - 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x72, - 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0xd, 0xa, 0x3c, - 0x68, 0x32, 0x3e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, - 0x20, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0xd, 0xa, 0x3c, - 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x74, 0x61, 0x62, 0x6c, 0x65, - 0x3e, 0xd, 0xa, 0x3c, 0x74, 0x72, 0x3e, 0x3c, 0x74, 0x68, - 0x3e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x3c, 0x2f, 0x74, 0x68, - 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x52, 0x65, 0x6d, 0x6f, 0x74, - 0x65, 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, - 0x53, 0x74, 0x61, 0x74, 0x65, 0x3c, 0x2f, 0x74, 0x68, 0x3e, - 0x3c, 0x74, 0x68, 0x3e, 0x52, 0x65, 0x74, 0x72, 0x61, 0x6e, - 0x73, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x3c, - 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x54, 0x69, - 0x6d, 0x65, 0x72, 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, - 0x68, 0x3e, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x3c, 0x2f, 0x74, - 0x68, 0x3e, 0x3c, 0x2f, 0x74, 0x72, 0x3e, 0xd, 0xa, 0x25, - 0x21, 0x20, 0x74, 0x63, 0x70, 0x2d, 0x63, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0xd, 0xa, 0x3c, - 0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, - 0x74, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, - 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, - 0xd, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, - 0xa, 0xd, 0xa, 0}; - -const struct httpd_fsdata_file file_404_html[] = {{NULL, data_404_html, data_404_html + 10, sizeof(data_404_html) - 10}}; - -const struct httpd_fsdata_file file_index_html[] = {{file_404_html, data_index_html, data_index_html + 12, sizeof(data_index_html) - 12}}; - -const struct httpd_fsdata_file file_index_shtml[] = {{file_index_html, data_index_shtml, data_index_shtml + 13, sizeof(data_index_shtml) - 13}}; - -const struct httpd_fsdata_file file_io_shtml[] = {{file_index_shtml, data_io_shtml, data_io_shtml + 10, sizeof(data_io_shtml) - 10}}; - -const struct httpd_fsdata_file file_logo_jpg[] = {{file_io_shtml, data_logo_jpg, data_logo_jpg + 10, sizeof(data_logo_jpg) - 10}}; - -const struct httpd_fsdata_file file_runtime_shtml[] = {{file_logo_jpg, data_runtime_shtml, data_runtime_shtml + 15, sizeof(data_runtime_shtml) - 15}}; - -const struct httpd_fsdata_file file_stats_shtml[] = {{file_runtime_shtml, data_stats_shtml, data_stats_shtml + 13, sizeof(data_stats_shtml) - 13}}; - -const struct httpd_fsdata_file file_tcp_shtml[] = {{file_stats_shtml, data_tcp_shtml, data_tcp_shtml + 11, sizeof(data_tcp_shtml) - 11}}; - -#define HTTPD_FS_ROOT file_tcp_shtml - -#define HTTPD_FS_NUMFILES 8 diff --git a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/webserver/makefsdata b/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/webserver/makefsdata deleted file mode 100644 index a953cdd76..000000000 --- a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/webserver/makefsdata +++ /dev/null @@ -1,79 +0,0 @@ -#!/usr/bin/perl - -open(OUTPUT, "> httpd-fsdata.c"); - -chdir("httpd-fs"); - -opendir(DIR, "."); -@files = grep { !/^\./ && !/(CVS|~)/ } readdir(DIR); -closedir(DIR); - -foreach $file (@files) { - - if(-d $file && $file !~ /^\./) { - print "Processing directory $file\n"; - opendir(DIR, $file); - @newfiles = grep { !/^\./ && !/(CVS|~)/ } readdir(DIR); - closedir(DIR); - printf "Adding files @newfiles\n"; - @files = (@files, map { $_ = "$file/$_" } @newfiles); - next; - } -} - -foreach $file (@files) { - if(-f $file) { - - print "Adding file $file\n"; - - open(FILE, $file) || die "Could not open file $file\n"; - binmode FILE; - - $file =~ s-^-/-; - $fvar = $file; - $fvar =~ s-/-_-g; - $fvar =~ s-\.-_-g; - # for AVR, add PROGMEM here - print(OUTPUT "static const char data".$fvar."[] = {\n"); - print(OUTPUT "\t/* $file */\n\t"); - for($j = 0; $j < length($file); $j++) { - printf(OUTPUT "%#02x, ", unpack("C", substr($file, $j, 1))); - } - printf(OUTPUT "0,\n"); - - - $i = 0; - while(read(FILE, $data, 1)) { - if($i == 0) { - print(OUTPUT "\t"); - } - printf(OUTPUT "%#02x, ", unpack("C", $data)); - $i++; - if($i == 10) { - print(OUTPUT "\n"); - $i = 0; - } - } - print(OUTPUT "0};\n\n"); - close(FILE); - push(@fvars, $fvar); - push(@pfiles, $file); - } -} - -for($i = 0; $i < @fvars; $i++) { - $file = $pfiles[$i]; - $fvar = $fvars[$i]; - - if($i == 0) { - $prevfile = "NULL"; - } else { - $prevfile = "file" . $fvars[$i - 1]; - } - print(OUTPUT "const struct httpd_fsdata_file file".$fvar."[] = {{$prevfile, data$fvar, "); - print(OUTPUT "data$fvar + ". (length($file) + 1) .", "); - print(OUTPUT "sizeof(data$fvar) - ". (length($file) + 1) ."}};\n\n"); -} - -print(OUTPUT "#define HTTPD_FS_ROOT file$fvars[$i - 1]\n\n"); -print(OUTPUT "#define HTTPD_FS_NUMFILES $i\n"); diff --git a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/webserver/uip-conf.h b/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/webserver/uip-conf.h deleted file mode 100644 index e5597d232..000000000 --- a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/webserver/uip-conf.h +++ /dev/null @@ -1,167 +0,0 @@ -/** - * \addtogroup uipopt - * @{ - */ - -/** - * \name Project-specific configuration options - * @{ - * - * uIP has a number of configuration options that can be overridden - * for each project. These are kept in a project-specific uip-conf.h - * file and all configuration names have the prefix UIP_CONF. - */ - -/* - * Copyright (c) 2006, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: uip-conf.h,v 1.6 2006/06/12 08:00:31 adam Exp $ - */ - -/** - * \file - * An example uIP configuration file - * \author - * Adam Dunkels - */ - -#ifndef __UIP_CONF_H__ -#define __UIP_CONF_H__ - -#define UIP_CONF_EXTERNAL_BUFFER -#define UIP_CONF_PROCESS_HTTPD_FORMS 1 - -/** - * 8 bit datatype - * - * This typedef defines the 8-bit type used throughout uIP. - * - * \hideinitializer - */ -typedef unsigned char u8_t; - -/** - * 16 bit datatype - * - * This typedef defines the 16-bit type used throughout uIP. - * - * \hideinitializer - */ -typedef unsigned short u16_t; - -typedef unsigned long u32_t; - -/** - * Statistics datatype - * - * This typedef defines the dataype used for keeping statistics in - * uIP. - * - * \hideinitializer - */ -typedef unsigned short uip_stats_t; - -/** - * Maximum number of TCP connections. - * - * \hideinitializer - */ -#define UIP_CONF_MAX_CONNECTIONS 40 - -/** - * Maximum number of listening TCP ports. - * - * \hideinitializer - */ -#define UIP_CONF_MAX_LISTENPORTS 40 - -/** - * uIP buffer size. - * - * \hideinitializer - */ -#define UIP_CONF_BUFFER_SIZE 1480 - -/** - * CPU byte order. - * - * \hideinitializer - */ -#if __LITTLE_ENDIAN__ == 1 - #define UIP_CONF_BYTE_ORDER UIP_LITTLE_ENDIAN -#else - #define UIP_CONF_BYTE_ORDER UIP_BIG_ENDIAN -#endif - -/** - * Logging on or off - * - * \hideinitializer - */ -#define UIP_CONF_LOGGING 0 - -/** - * UDP support on or off - * - * \hideinitializer - */ -#define UIP_CONF_UDP 0 - -/** - * UDP checksums on or off - * - * \hideinitializer - */ -#define UIP_CONF_UDP_CHECKSUMS 1 - -/** - * uIP statistics on or off - * - * \hideinitializer - */ -#define UIP_CONF_STATISTICS 1 - -/* Here we include the header file for the application(s) we use in - our project. */ -/*#include "smtp.h"*/ -/*#include "hello-world.h"*/ -/*#include "telnetd.h"*/ -#include "webserver.h" -/*#include "dhcpc.h"*/ -/*#include "resolv.h"*/ -/*#include "webclient.h"*/ - -#define CCIF -#define CC_REGISTER_ARG - -#endif /* __UIP_CONF_H__ */ - -/** @} */ -/** @} */ diff --git a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/webserver/webserver.h b/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/webserver/webserver.h deleted file mode 100644 index 5267f0587..000000000 --- a/FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/webserver/webserver.h +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright (c) 2002, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials provided - * with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: webserver.h,v 1.2 2006/06/11 21:46:38 adam Exp $ - * - */ -#ifndef __WEBSERVER_H__ -#define __WEBSERVER_H__ - -#include "apps/httpd/httpd.h" - -typedef struct httpd_state uip_tcp_appstate_t; -/* UIP_APPCALL: the name of the application function. This function - must return void and take no arguments (i.e., C type "void - appfunc(void)"). */ -#define UIP_APPCALL httpd_appcall - - -#endif /* __WEBSERVER_H__ */ diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/FreeRTOSConfig.h b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/FreeRTOSConfig.h deleted file mode 100644 index d22bbe1d9..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/FreeRTOSConfig.h +++ /dev/null @@ -1,115 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -#ifndef FREERTOS_CONFIG_H -#define FREERTOS_CONFIG_H - -/*----------------------------------------------------------- - * Application specific definitions. - * - * These definitions should be adjusted for your particular hardware and - * application requirements. - * - * THESE PARAMETERS ARE DESCRIBED WITHIN THE 'CONFIGURATION' SECTION OF THE - * FreeRTOS API DOCUMENTATION AVAILABLE ON THE FreeRTOS.org WEB SITE. - * - * See http://www.freertos.org/a00110.html - *----------------------------------------------------------*/ - -#define configUSE_PREEMPTION 1 -#define configUSE_IDLE_HOOK 0 -#define configUSE_TICK_HOOK 1 -#define configCPU_CLOCK_HZ ( ( unsigned long ) 50000000 ) -#define configTICK_RATE_HZ ( ( TickType_t ) 1000 ) -#define configMINIMAL_STACK_SIZE ( ( unsigned short ) 70 ) -#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 50 * 1024 ) ) -#define configMAX_TASK_NAME_LEN ( 12 ) -#define configUSE_TRACE_FACILITY 1 -#define configUSE_16_BIT_TICKS 0 -#define configIDLE_SHOULD_YIELD 0 -#define configUSE_CO_ROUTINES 0 -#define configUSE_MUTEXES 1 -#define configUSE_RECURSIVE_MUTEXES 1 -#define configCHECK_FOR_STACK_OVERFLOW 2 -#define configUSE_QUEUE_SETS 1 -#define configUSE_COUNTING_SEMAPHORES 1 - -#define configMAX_PRIORITIES ( 5UL ) -#define configMAX_CO_ROUTINE_PRIORITIES ( 2 ) -#define configQUEUE_REGISTRY_SIZE 10 -#define configSUPPORT_STATIC_ALLOCATION 1 - -/* Timer related defines. */ -#define configUSE_TIMERS 1 -#define configTIMER_TASK_PRIORITY 2 -#define configTIMER_QUEUE_LENGTH 20 -#define configTIMER_TASK_STACK_DEPTH ( configMINIMAL_STACK_SIZE * 2 ) - -/* Set the following definitions to 1 to include the API function, or zero -to exclude the API function. */ - -#define INCLUDE_vTaskPrioritySet 1 -#define INCLUDE_uxTaskPriorityGet 1 -#define INCLUDE_vTaskDelete 1 -#define INCLUDE_vTaskCleanUpResources 0 -#define INCLUDE_vTaskSuspend 1 -#define INCLUDE_vTaskDelayUntil 1 -#define INCLUDE_vTaskDelay 1 -#define INCLUDE_uxTaskGetStackHighWaterMark 1 -#define INCLUDE_xTaskGetSchedulerState 1 -#define INCLUDE_xTimerGetTimerDaemonTaskHandle 1 -#define INCLUDE_xTaskGetIdleTaskHandle 1 -#define INCLUDE_xSemaphoreGetMutexHolder 1 -#define INCLUDE_eTaskGetState 1 -#define INCLUDE_xTimerPendFunctionCall 1 - -/* This demo makes use of one or more example stats formatting functions. These -format the raw data provided by the uxTaskGetSystemState() function in to human -readable ASCII form. See the notes in the implementation of vTaskList() within -FreeRTOS/Source/tasks.c for limitations. */ -#define configUSE_STATS_FORMATTING_FUNCTIONS 1 - -#define configKERNEL_INTERRUPT_PRIORITY ( 7 << 5 ) /* Priority 7, or 255 as only the top three bits are implemented. This is the lowest priority. */ -/* !!!! configMAX_SYSCALL_INTERRUPT_PRIORITY must not be set to zero !!!! -See http://www.FreeRTOS.org/RTOS-Cortex-M3-M4.html. */ -#define configMAX_SYSCALL_INTERRUPT_PRIORITY ( 5 << 5 ) /* Priority 5, or 160 as only the top three bits are implemented. */ - -/* Use the Cortex-M3 optimised task selection rather than the generic C code -version. */ -#define configUSE_PORT_OPTIMISED_TASK_SELECTION 1 - -/* The test that checks the trigger level on stream buffers requires an -allowable margin of error on slower processors (slower than the Win32 -machine on which the test is developed). */ -#define configSTREAM_BUFFER_TRIGGER_LEVEL_TEST_MARGIN 4 - -#ifdef __ICCARM__ - void vAssertCalled( const char *pcFile, unsigned long ulLine ); - #define configASSERT( x ) if( ( x ) == 0 ) vAssertCalled( __FILE__, __LINE__ ); -#endif - -#endif /* FREERTOS_CONFIG_H */ diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/IntQueueTimer.c b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/IntQueueTimer.c deleted file mode 100644 index e75116215..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/IntQueueTimer.c +++ /dev/null @@ -1,95 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* Scheduler includes. */ -#include "FreeRTOS.h" - -/* Demo includes. */ -#include "IntQueueTimer.h" -#include "IntQueue.h" - -/* Library includes. */ -#include "hw_ints.h" -#include "hw_memmap.h" -#include "hw_types.h" -#include "interrupt.h" -#include "sysctl.h" -#include "lmi_timer.h" - -#define tmrTIMER_2_FREQUENCY ( 2000UL ) -#define tmrTIMER_3_FREQUENCY ( 2001UL ) - -void vInitialiseTimerForIntQueueTest( void ) -{ -unsigned long ulFrequency; - - /* Timer 2 and 3 are utilised for this test. */ - SysCtlPeripheralEnable( SYSCTL_PERIPH_TIMER2 ); - SysCtlPeripheralEnable( SYSCTL_PERIPH_TIMER3 ); - TimerConfigure( TIMER2_BASE, TIMER_CFG_32_BIT_PER ); - TimerConfigure( TIMER3_BASE, TIMER_CFG_32_BIT_PER ); - - /* Set the timer interrupts to be above the kernel. The interrupts are - assigned different priorities so they nest with each other. */ - IntPrioritySet( INT_TIMER2A, configMAX_SYSCALL_INTERRUPT_PRIORITY + ( 1 << 5 ) ); /* Shift left 5 as only the top 3 bits are implemented. */ - IntPrioritySet( INT_TIMER3A, configMAX_SYSCALL_INTERRUPT_PRIORITY ); - - /* Ensure interrupts do not start until the scheduler is running. */ - portDISABLE_INTERRUPTS(); - - /* The rate at which the timers will interrupt. */ - ulFrequency = configCPU_CLOCK_HZ / tmrTIMER_2_FREQUENCY; - TimerLoadSet( TIMER2_BASE, TIMER_A, ulFrequency ); - IntEnable( INT_TIMER2A ); - TimerIntEnable( TIMER2_BASE, TIMER_TIMA_TIMEOUT ); - - /* The rate at which the timers will interrupt. */ - ulFrequency = configCPU_CLOCK_HZ / tmrTIMER_3_FREQUENCY; - TimerLoadSet( TIMER3_BASE, TIMER_A, ulFrequency ); - IntEnable( INT_TIMER3A ); - TimerIntEnable( TIMER3_BASE, TIMER_TIMA_TIMEOUT ); - - /* Enable both timers. */ - TimerEnable( TIMER2_BASE, TIMER_A ); - TimerEnable( TIMER3_BASE, TIMER_A ); -} -/*-----------------------------------------------------------*/ - -void vT2InterruptHandler( void ) -{ - TimerIntClear( TIMER2_BASE, TIMER_TIMA_TIMEOUT ); - portEND_SWITCHING_ISR( xFirstTimerHandler() ); -} -/*-----------------------------------------------------------*/ - -void vT3InterruptHandler( void ) -{ - TimerIntClear( TIMER3_BASE, TIMER_TIMA_TIMEOUT ); - portEND_SWITCHING_ISR( xSecondTimerHandler() ); -} - - diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/IntQueueTimer.h b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/IntQueueTimer.h deleted file mode 100644 index a13dac500..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/IntQueueTimer.h +++ /dev/null @@ -1,36 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -#ifndef INT_QUEUE_TIMER_H -#define INT_QUEUE_TIMER_H - -void vInitialiseTimerForIntQueueTest( void ); -portBASE_TYPE xTimer0Handler( void ); -portBASE_TYPE xTimer1Handler( void ); - -#endif - diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/LM3Sxxxx.icf b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/LM3Sxxxx.icf deleted file mode 100644 index 575329d1f..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/LM3Sxxxx.icf +++ /dev/null @@ -1,58 +0,0 @@ -//***************************************************************************** -// -// enet_lwip.icf - Linker configuration file for enet_lwip. -// -// Copyright (c) 2007 Luminary Micro, Inc. All rights reserved. -// Luminary Micro Confidential - For Use Under NDA Only -// -//***************************************************************************** - -// -// Define a memory region that covers the entire 4 GB addressible space of the -// processor. -// -define memory mem with size = 4G; - -// -// Define a region for the on-chip flash. -// -define region FLASH = mem:[from 0x00000000 to 0x0003ffff]; - -// -// Define a region for the on-chip SRAM. -// -define region SRAM = mem:[from 0x20000000 to 0x2000ffff]; - -// -// Define a block for the heap. The size should be set to something other -// than zero if things in the C library that require the heap are used. -// -define block HEAP with alignment = 8, size = 0x00000000 { }; - -// -// Indicate that the read/write values should be initialized by copying from -// flash. -// -initialize by copy { readwrite }; - -// -// Initicate that the noinit values should be left alone. This includes the -// stack, which if initialized will destroy the return address from the -// initialization code, causing the processor to branch to zero and fault. -// -do not initialize { section .noinit }; - -// -// Place the interrupt vectors at the start of flash. -// -place at start of FLASH { readonly section .intvec }; - -// -// Place the remainder of the read-only items into flash. -// -place in FLASH { readonly }; - -// -// Place all read/write items into SRAM. -// -place in SRAM { readwrite, block HEAP }; diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/ParTest/ParTest.c b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/ParTest/ParTest.c deleted file mode 100644 index 5c697cfe0..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/ParTest/ParTest.c +++ /dev/null @@ -1,75 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/*----------------------------------------------------------- - * Simple parallel port IO routines. - *-----------------------------------------------------------*/ - -/* -*/ - -/* Scheduler includes. */ -#include "FreeRTOS.h" -#include "task.h" - -/* Demo includes. */ -#include "partest.h" - -/* Library includes. */ -#include "hw_types.h" -#include "gpio.h" -#include "hw_memmap.h" - - -/*-----------------------------------------------------------*/ - -void vParTestInitialise( void ) -{ - GPIODirModeSet( GPIO_PORTF_BASE, GPIO_PIN_0, GPIO_DIR_MODE_OUT ); - GPIOPadConfigSet( GPIO_PORTF_BASE, GPIO_PIN_0, GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_STD ); - GPIOPinWrite( GPIO_PORTF_BASE, GPIO_PIN_0, 0 ); -} -/*-----------------------------------------------------------*/ - -void vParTestSetLED( unsigned portBASE_TYPE uxLED, signed portBASE_TYPE xValue ) -{ - /* There is only one LED. */ - ( void ) uxLED; - - GPIOPinWrite( GPIO_PORTF_BASE, GPIO_PIN_0, xValue ); -} -/*-----------------------------------------------------------*/ - -unsigned portBASE_TYPE uxParTestGetLED( unsigned portBASE_TYPE uxLED ) -{ - /* There is only one LED. */ - ( void ) uxLED; - - return GPIOPinRead( GPIO_PORTF_BASE, GPIO_PIN_0 ); -} - - diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/RTOSDemo.Opt b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/RTOSDemo.Opt deleted file mode 100644 index 89e6a0a82..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/RTOSDemo.Opt +++ /dev/null @@ -1,77 +0,0 @@ -### uVision2 Project, (C) Keil Software -### Do not modify ! - - cExt (*.c) - aExt (*.s*; *.src; *.a*) - oExt (*.obj) - lExt (*.lib) - tExt (*.txt; *.h; *.inc) - pExt (*.plm) - CppX (*.cpp) - DaveTm { 0,0,0,0,0,0,0,0 } - -Target (FreeRTOS_Demo), 0x0004 // Tools: 'ARM-ADS' -GRPOPT 1,(Demo_Source),1,0,0 -GRPOPT 2,(Libraries),0,0,0 -GRPOPT 3,(RTOS_Source),0,0,0 -GRPOPT 4,(uIP_Source),0,0,0 - -OPTFFF 1,1,1,0,0,0,0,0,<..\Common\Minimal\BlockQ.c> -OPTFFF 1,2,1,0,0,0,0,0,<..\Common\Minimal\blocktim.c> -OPTFFF 1,3,1,0,0,0,0,0,<..\Common\Minimal\death.c> -OPTFFF 1,4,1,0,0,0,0,0,<..\Common\Minimal\integer.c> -OPTFFF 1,5,1,553648128,0,67,67,0,<.\main.c> -OPTFFF 1,6,1,0,0,0,0,0,<.\ParTest\ParTest.c> -OPTFFF 1,7,1,0,0,0,0,0,<..\Common\Minimal\PollQ.c> -OPTFFF 1,8,1,0,0,0,0,0,<..\Common\Minimal\semtest.c> -OPTFFF 1,9,2,0,0,0,0,0,<.\startup_rvmdk.S> -OPTFFF 1,10,1,0,0,0,0,0,<.\timertest.c> -OPTFFF 1,11,5,822083584,0,0,0,0,<.\FreeRTOSConfig.h> -OPTFFF 1,12,1,0,0,0,0,0,<..\Common\Minimal\GenQTest.c> -OPTFFF 1,13,1,1,0,0,0,0,<..\Common\Minimal\QPeek.c> -OPTFFF 1,14,1,0,0,0,0,0,<.\IntQueueTimer.c> -OPTFFF 1,15,1,0,0,0,0,0,<..\Common\Minimal\IntQueue.c> -OPTFFF 1,16,1,0,0,0,0,0,<..\Common\Minimal\recmutex.c> -OPTFFF 2,17,1,0,0,0,0,0,<.\rit128x96x4.c> -OPTFFF 2,18,1,0,0,0,0,0,<.\osram128x64x4.c> -OPTFFF 2,19,4,0,0,0,0,0,<..\Common\drivers\LuminaryMicro\Keil\driverlib.lib> -OPTFFF 2,20,1,0,0,0,0,0,<.\formike128x128x16.c> -OPTFFF 2,21,4,0,0,0,0,0,<..\Common\drivers\LuminaryMicro\Keil\grlib.lib> -OPTFFF 3,22,1,0,0,0,0,0,<..\..\Source\tasks.c> -OPTFFF 3,23,1,0,0,0,0,0,<..\..\Source\list.c> -OPTFFF 3,24,1,0,0,0,0,0,<..\..\Source\queue.c> -OPTFFF 3,25,1,0,0,0,0,0,<..\..\Source\portable\RVDS\ARM_CM3\port.c> -OPTFFF 3,26,1,0,0,0,0,0,<..\..\Source\portable\MemMang\heap_2.c> -OPTFFF 4,27,1,0,0,0,0,0,<.\webserver\uIP_Task.c> -OPTFFF 4,28,1,0,0,0,0,0,<.\webserver\emac.c> -OPTFFF 4,29,1,0,0,0,0,0,<.\webserver\httpd.c> -OPTFFF 4,30,1,0,0,0,0,0,<.\webserver\httpd-cgi.c> -OPTFFF 4,31,1,0,0,0,0,0,<.\webserver\httpd-fs.c> -OPTFFF 4,32,1,0,0,0,0,0,<.\webserver\http-strings.c> -OPTFFF 4,33,1,0,0,0,0,0,<..\Common\ethernet\uIP\uip-1.0\uip\uip_arp.c> -OPTFFF 4,34,1,0,0,0,0,0,<..\Common\ethernet\uIP\uip-1.0\uip\psock.c> -OPTFFF 4,35,1,0,0,0,0,0,<..\Common\ethernet\uIP\uip-1.0\uip\timer.c> -OPTFFF 4,36,1,0,0,0,0,0,<..\Common\ethernet\uIP\uip-1.0\uip\uip.c> - - -TARGOPT 1, (FreeRTOS_Demo) - ADSCLK=8000000 - OPTTT 0,1,1,0 - OPTHX 1,65535,0,0,0 - OPTLX 79,66,8,<.\rvmdk\> - OPTOX 16 - OPTLT 1,1,1,0,1,1,0,1,0,0,0,0 - OPTXL 1,1,1,1,1,1,1,0,0 - OPTFL 1,0,1 - OPTAX 0 - OPTDL (SARMCM3.DLL)()(DLM.DLL)(-pLM3S8962)(SARMCM3.DLL)()(TLM.DLL)(-pLM3S8962) - OPTDBG 48126,4,()()()()()()()()()() (BIN\lmidk-agdi.dll)()()() - OPTKEY 0,(DLGTARM)((1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(110=-1,-1,-1,-1,0)(100=-1,-1,-1,-1,0)(101=-1,-1,-1,-1,0)(102=-1,-1,-1,-1,0)(103=-1,-1,-1,-1,0)(104=-1,-1,-1,-1,0)(105=-1,-1,-1,-1,0)(106=-1,-1,-1,-1,0)(161=-1,-1,-1,-1,0)(162=-1,-1,-1,-1,0)(163=-1,-1,-1,-1,0)(164=-1,-1,-1,-1,0)(150=-1,-1,-1,-1,0)(151=-1,-1,-1,-1,0)(1011=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0)(1013=-1,-1,-1,-1,0)(171=-1,-1,-1,-1,0)(172=-1,-1,-1,-1,0)(173=-1,-1,-1,-1,0)(1014=-1,-1,-1,-1,0)(1016=-1,-1,-1,-1,0)(136=-1,-1,-1,-1,0)) - OPTKEY 0,(ARMDBGFLAGS)() - OPTKEY 0,(lmidk-agdi)(-U -O4622 -S3 -FO29) - OPTKEY 0,(DLGUARM)(ĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚČp¶{Öäö) - OPTDF 0x80 - OPTLE <> - OPTLC <> -EndOpt - diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/RTOSDemo.Uv2 b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/RTOSDemo.Uv2 deleted file mode 100644 index ebcc32fed..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/RTOSDemo.Uv2 +++ /dev/null @@ -1,139 +0,0 @@ -### uVision2 Project, (C) Keil Software -### Do not modify ! - -Target (FreeRTOS_Demo), 0x0004 // Tools: 'ARM-ADS' - -Group (Demo_Source) -Group (Libraries) -Group (RTOS_Source) -Group (uIP_Source) - -File 1,1,<..\Common\Minimal\BlockQ.c> -File 1,1,<..\Common\Minimal\blocktim.c> -File 1,1,<..\Common\Minimal\death.c> -File 1,1,<..\Common\Minimal\integer.c> -File 1,1,<.\main.c> -File 1,1,<.\ParTest\ParTest.c> -File 1,1,<..\Common\Minimal\PollQ.c> -File 1,1,<..\Common\Minimal\semtest.c> -File 1,2,<.\startup_rvmdk.S> -File 1,1,<.\timertest.c> -File 1,5,<.\FreeRTOSConfig.h> -File 1,1,<..\Common\Minimal\GenQTest.c> -File 1,1,<..\Common\Minimal\QPeek.c> -File 1,1,<.\IntQueueTimer.c> -File 1,1,<..\Common\Minimal\IntQueue.c> -File 1,1,<..\Common\Minimal\recmutex.c> -File 1,1,<..\Common\Minimal\QueueSet.c> -File 2,1,<.\rit128x96x4.c> -File 2,1,<.\osram128x64x4.c> -File 2,4,<..\Common\drivers\LuminaryMicro\Keil\driverlib.lib> -File 2,1,<.\formike128x128x16.c> -File 2,4,<..\Common\drivers\LuminaryMicro\Keil\grlib.lib> -File 3,1,<..\..\Source\tasks.c> -File 3,1,<..\..\Source\list.c> -File 3,1,<..\..\Source\queue.c> -File 3,1,<..\..\Source\portable\RVDS\ARM_CM3\port.c> -File 3,1,<..\..\Source\portable\MemMang\heap_2.c> -File 4,1,<.\webserver\uIP_Task.c> -File 4,1,<.\webserver\emac.c> -File 4,1,<.\webserver\httpd.c> -File 4,1,<.\webserver\httpd-cgi.c> -File 4,1,<.\webserver\httpd-fs.c> -File 4,1,<.\webserver\http-strings.c> -File 4,1,<..\Common\ethernet\uIP\uip-1.0\uip\uip_arp.c> -File 4,1,<..\Common\ethernet\uIP\uip-1.0\uip\psock.c> -File 4,1,<..\Common\ethernet\uIP\uip-1.0\uip\timer.c> -File 4,1,<..\Common\ethernet\uIP\uip-1.0\uip\uip.c> - - -Options 1,0,0 // Target 'FreeRTOS_Demo' - Device (LM3S8962) - Vendor (Luminary Micro) - Cpu (IRAM(0x20000000-0x2000FFFF) IROM(0-0x3FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3")) - FlashUt () - StupF ("STARTUP\Luminary\Startup.s" ("Luminary Startup Code")) - FlashDR (UL2CM3(-UU0101L5E -O14 -S0 -C0 -N00("ARM Cortex-M3") -D00(1BA00477) -L00(4) -FO7 -FD20000000 -FC800 -FN1 -FF0LM3S_256 -FS00 -FL040000)) - DevID (4285) - Rgf (LM3Sxxx.H) - Mem () - C () - A () - RL () - OH () - DBC_IFX () - DBC_CMS () - DBC_AMS () - DBC_LMS () - UseEnv=0 - EnvBin () - EnvInc () - EnvLib () - EnvReg (˙Luminary\) - OrgReg (˙Luminary\) - TgStat=16 - OutDir (.\rvmdk\) - OutName (RTOSDemo) - GenApp=1 - GenLib=0 - GenHex=0 - Debug=1 - Browse=1 - LstDir (.\rvmdk\) - HexSel=1 - MG32K=0 - TGMORE=0 - RunUsr 0 1 - RunUsr 1 0 <> - BrunUsr 0 0 <> - BrunUsr 1 0 <> - CrunUsr 0 0 <> - CrunUsr 1 0 <> - SVCSID <> - GLFLAGS=1790 - ADSFLGA { 16,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 } - ACPUTYP ("Cortex-M3") - RVDEV () - ADSTFLGA { 0,12,0,2,99,0,0,66,0,0,0,0,0,0,0,0,0,0,0,0 } - OCMADSOCM { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 } - OCMADSIRAM { 0,0,0,0,32,0,0,1,0 } - OCMADSIROM { 1,0,0,0,0,0,0,4,0 } - OCMADSXRAM { 0,0,0,0,0,0,0,0,0 } - OCR_RVCT { 1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,4,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,0,0,1,0,0,0,0,0,0,0,0,0,0 } - RV_STAVEC () - ADSCCFLG { 5,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 } - ADSCMISC (--diag_suppress 191,550,513,167,177,144) - ADSCDEFN (RVDS_ARMCM3_LM3S102, "PACK_STRUCT_END=","ALIGN_STRUCT_END=") - ADSCUDEF () - ADSCINCD (.;.\..\Common\drivers\LuminaryMicro;..\..\Source\portable\RVDS\ARM_CM3;..\..\Source\include;..\Common\include;..\Common\ethernet\uIP\uip-1.0\uip;.\webserver) - ADSASFLG { 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 } - ADSAMISC () - ADSADEFN () - ADSAUDEF () - ADSAINCD () - PropFld { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 } - IncBld=1 - AlwaysBuild=0 - GenAsm=0 - AsmAsm=0 - PublicsOnly=0 - StopCode=3 - CustArgs () - LibMods () - ADSLDFG { 17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 } - ADSLDTA (0x00000000) - ADSLDDA (0x20000000) - ADSLDSC () - ADSLDIB () - ADSLDIC () - ADSLDMC (--entry Reset_Handler) - ADSLDIF () - ADSLDDW () - OPTDL (SARMCM3.DLL)()(DLM.DLL)(-pLM3S8962)(SARMCM3.DLL)()(TLM.DLL)(-pLM3S8962) - OPTDBG 48126,4,()()()()()()()()()() (BIN\lmidk-agdi.dll)()()() - FLASH1 { 1,0,0,0,1,0,0,0,3,16,0,0,0,0,0,0,0,0,0,0 } - FLASH2 (BIN\lmidk-agdi.dll) - FLASH3 ("" ()) - FLASH4 () -EndOpt - diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/RTOSDemo.ewd b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/RTOSDemo.ewd deleted file mode 100644 index b0b79cfd9..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/RTOSDemo.ewd +++ /dev/null @@ -1,1493 +0,0 @@ - - - 3 - - Debug - - ARM - - 1 - - C-SPY - 2 - - 32 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ARMSIM_ID - 2 - - 1 - 1 - 1 - - - - - - - - CADI_ID - 2 - - 0 - 1 - 1 - - - - - - - - - CMSISDAP_ID - 2 - - 4 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - GDBSERVER_ID - 2 - - 0 - 1 - 1 - - - - - - - - - - - IJET_ID - 2 - - 8 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - JLINK_ID - 2 - - 16 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - LMIFTDI_ID - 2 - - 2 - 1 - 1 - - - - - - - - - - NULINK_ID - 2 - - 0 - 1 - 1 - - - - - - - PEMICRO_ID - 2 - - 3 - 1 - 1 - - - - - - - - STLINK_ID - 2 - - 6 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - THIRDPARTY_ID - 2 - - 0 - 1 - 1 - - - - - - - - TIFET_ID - 2 - - 1 - 1 - 1 - - - - - - - - - - - - - - - - - - - XDS100_ID - 2 - - 8 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - $TOOLKIT_DIR$\plugins\rtos\AWS\AWS.ENU.ewplugin - 1 - - - $TOOLKIT_DIR$\plugins\rtos\CMX\CmxArmPlugin.ENU.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\CMX\CmxTinyArmPlugin.ENU.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\FreeRtos\FreeRtosArmPlugin.ENU.ewplugin - 1 - - - $TOOLKIT_DIR$\plugins\rtos\HWRTOSplugin\HWRTOSplugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\Mbed\MbedArmPlugin.ENU.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\Mbed\MbedArmPlugin2.ENU.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\OpenRTOS\OpenRTOSPlugin.ewplugin - 1 - - - $TOOLKIT_DIR$\plugins\rtos\RemedyRtosViewer\RemedyRtosViewer.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\SafeRTOS\SafeRTOSPlugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\SMX\smxAwareIarArm8.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\SMX\smxAwareIarArm8BE.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXArmPlugin.ENU.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\TI-RTOS\tirtosplugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-286-KA-CSpy.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-KA-CSpy.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\uCOS-III\uCOS-III-KA-CSpy.ewplugin - 0 - - - $EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin - 0 - - - $EW_DIR$\common\plugins\TargetAccessServer\TargetAccessServer.ENU.ewplugin - 0 - - - $EW_DIR$\common\plugins\uCProbe\uCProbePlugin.ENU.ewplugin - 0 - - - - diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/RTOSDemo.ewp b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/RTOSDemo.ewp deleted file mode 100644 index f0fa8d5c8..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/RTOSDemo.ewp +++ /dev/null @@ -1,1212 +0,0 @@ - - - 3 - - Debug - - ARM - - 1 - - General - 3 - - 31 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ICCARM - 2 - - 35 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - AARM - 2 - - 10 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - OBJCOPY - 0 - - 1 - 1 - 1 - - - - - - - - - CUSTOM - 3 - - - - 0 - - - - BICOMP - 0 - - - - BUILDACTION - 1 - - - - - - - ILINK - 0 - - 23 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - IARCHIVE - 0 - - 0 - 1 - 1 - - - - - - - BILINK - 0 - - - - - Demo files - - $PROJ_DIR$\..\Common\Minimal\BlockQ.c - - - $PROJ_DIR$\..\Common\Minimal\blocktim.c - - - $PROJ_DIR$\..\Common\Minimal\death.c - - - $PROJ_DIR$\..\Common\Minimal\EventGroupsDemo.c - - - $PROJ_DIR$\..\Common\Minimal\flash.c - - - $PROJ_DIR$\..\Common\Minimal\GenQTest.c - - - $PROJ_DIR$\..\Common\Minimal\integer.c - - - $PROJ_DIR$\..\Common\Minimal\IntQueue.c - - - $PROJ_DIR$\IntQueueTimer.c - - - $PROJ_DIR$\main.c - - - $PROJ_DIR$\..\Common\Minimal\MessageBufferDemo.c - - - $PROJ_DIR$\ParTest\ParTest.c - - - $PROJ_DIR$\..\Common\Minimal\PollQ.c - - - $PROJ_DIR$\..\Common\Minimal\QPeek.c - - - $PROJ_DIR$\..\Common\Minimal\QueueSet.c - - - $PROJ_DIR$\..\Common\Minimal\recmutex.c - - - $PROJ_DIR$\..\Common\Minimal\semtest.c - - - $PROJ_DIR$\..\Common\Minimal\StreamBufferDemo.c - - - $PROJ_DIR$\timertest.c - - - - Library files - - $PROJ_DIR$\..\Common\drivers\LuminaryMicro\IAR\driverlib.a - - - $PROJ_DIR$\formike128x128x16.c - - - $PROJ_DIR$\..\Common\drivers\LuminaryMicro\IAR\grlib.a - - - $PROJ_DIR$\osram128x64x4.c - - - $PROJ_DIR$\rit128x96x4.c - - - - Scheduler files - - $PROJ_DIR$\..\..\Source\croutine.c - - - $PROJ_DIR$\..\..\Source\event_groups.c - - - $PROJ_DIR$\..\..\Source\portable\MemMang\heap_4.c - - - $PROJ_DIR$\..\..\Source\list.c - - - $PROJ_DIR$\..\..\Source\portable\IAR\ARM_CM3\port.c - - - $PROJ_DIR$\..\..\Source\portable\IAR\ARM_CM3\portasm.s - - - $PROJ_DIR$\..\..\Source\queue.c - - - $PROJ_DIR$\..\..\Source\stream_buffer.c - - - $PROJ_DIR$\..\..\Source\tasks.c - - - $PROJ_DIR$\..\..\Source\timers.c - - - - System files - - $PROJ_DIR$\startup_ewarm.c - - - - uIP files - - $PROJ_DIR$\webserver\emac.c - - - $PROJ_DIR$\webserver\http-strings.c - - - $PROJ_DIR$\webserver\httpd-cgi.c - - - $PROJ_DIR$\webserver\httpd-fs.c - - - $PROJ_DIR$\webserver\httpd.c - - - $PROJ_DIR$\..\Common\ethernet\uIP\uip-1.0\uip\psock.c - - - $PROJ_DIR$\..\Common\ethernet\uIP\uip-1.0\uip\timer.c - - - $PROJ_DIR$\..\Common\ethernet\uIP\uip-1.0\uip\uip.c - - - $PROJ_DIR$\..\Common\ethernet\uIP\uip-1.0\uip\uip_arp.c - - - $PROJ_DIR$\webserver\uIP_Task.c - - - diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/RTOSDemo.eww b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/RTOSDemo.eww deleted file mode 100644 index 239a9381e..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/RTOSDemo.eww +++ /dev/null @@ -1,10 +0,0 @@ - - - - - $WS_DIR$\RTOSDemo.ewp - - - - - diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/RTOSDemo.uvproj b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/RTOSDemo.uvproj deleted file mode 100644 index 373965409..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/RTOSDemo.uvproj +++ /dev/null @@ -1,648 +0,0 @@ - - - - 1.1 - -
### uVision Project, (C) Keil Software
- - - - FreeRTOS_Demo - 0x4 - ARM-ADS - 5060750::V5.06 update 6 (build 750)::ARMCC - 0 - - - LM3S8962 - Luminary Micro - IRAM(0x20000000-0x2000FFFF) IROM(0-0x3FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") - - "STARTUP\Luminary\Startup.s" ("Luminary Startup Code") - UL2CM3(-UU0101L5E -O14 -S0 -C0 -N00("ARM Cortex-M3") -D00(1BA00477) -L00(4) -FO7 -FD20000000 -FC800 -FN1 -FF0LM3S_256 -FS00 -FL040000) - 4285 - LM3Sxxx.H - - - - - - - - - - - 0 - 0 - - - - Luminary\ - Luminary\ - - 0 - 0 - 0 - 0 - 1 - - .\rvmdk\ - RTOSDemo - 1 - 0 - 0 - 1 - 1 - .\rvmdk\ - 1 - 0 - 0 - - 0 - 0 - - - 0 - 0 - 0 - 0 - - - 0 - 0 - - - 0 - 0 - 0 - 0 - - - 1 - 0 - fromelf --bin --output .\rvmdk\RTOSDemo.bin .\rvmdk\RTOSDemo.axf - - 0 - 0 - 0 - 0 - - 0 - - - - 0 - 0 - 0 - 0 - 0 - 1 - 0 - 0 - 0 - 0 - 3 - - - 1 - - - SARMCM3.DLL - - DLM.DLL - -pLM3S8962 - SARMCM3.DLL - - TLM.DLL - -pLM3S8962 - - - - 1 - 0 - 0 - 0 - 16 - - - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 0 - 1 - - - 0 - 1 - 1 - 1 - 1 - 1 - 0 - 1 - 0 - 1 - - 0 - 2 - - - - - - - - - - - - - - BIN\lmidk-agdi.dll - - - - - 1 - 0 - 0 - 1 - 1 - 4099 - - 1 - BIN\lmidk-agdi.dll - "" () - - - - - 0 - - - - 0 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 0 - 1 - 1 - 0 - 0 - 0 - 0 - 0 - 1 - 0 - 0 - 0 - 1 - 1 - 0 - 0 - 0 - 0 - 0 - "Cortex-M3" - - 0 - 0 - 0 - 1 - 1 - 0 - 0 - 0 - 0 - 0 - 8 - 0 - 0 - 0 - 0 - 3 - 3 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 1 - 0 - 0 - 0 - 0 - 1 - 0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x20000000 - 0x10000 - - - 1 - 0x0 - 0x40000 - - - 0 - 0x0 - 0x0 - - - 1 - 0x0 - 0x0 - - - 1 - 0x0 - 0x0 - - - 1 - 0x0 - 0x0 - - - 1 - 0x0 - 0x40000 - - - 1 - 0x0 - 0x0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x20000000 - 0x10000 - - - 0 - 0x0 - 0x0 - - - - - - 1 - 1 - 0 - 0 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 1 - 1 - 1 - 1 - 0 - 0 - 0 - - --diag_suppress 191,550,513,167,177,144 - RVDS_ARMCM3_LM3S102, "PACK_STRUCT_END=","ALIGN_STRUCT_END=" - - .;.\..\Common\drivers\LuminaryMicro;..\..\Source\portable\RVDS\ARM_CM3;..\..\Source\include;..\Common\include;..\Common\ethernet\uIP\uip-1.0\uip;.\webserver - - - - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - - - - - - - 1 - 0 - 0 - 0 - 1 - 0 - 0x00000000 - 0x20000000 - - - - - --entry Reset_Handler - - - - - - - - Demo_Source - - - blocktim.c - 1 - ..\Common\Minimal\blocktim.c - - - death.c - 1 - ..\Common\Minimal\death.c - - - main.c - 1 - .\main.c - - - ParTest.c - 1 - .\ParTest\ParTest.c - - - PollQ.c - 1 - ..\Common\Minimal\PollQ.c - - - semtest.c - 1 - ..\Common\Minimal\semtest.c - - - startup_rvmdk.S - 2 - .\startup_rvmdk.S - - - timertest.c - 1 - .\timertest.c - - - FreeRTOSConfig.h - 5 - .\FreeRTOSConfig.h - - - GenQTest.c - 1 - ..\Common\Minimal\GenQTest.c - - - QPeek.c - 1 - ..\Common\Minimal\QPeek.c - - - IntQueueTimer.c - 1 - .\IntQueueTimer.c - - - IntQueue.c - 1 - ..\Common\Minimal\IntQueue.c - - - recmutex.c - 1 - ..\Common\Minimal\recmutex.c - - - QueueSet.c - 1 - ..\Common\Minimal\QueueSet.c - - - EventGroupsDemo.c - 1 - ..\Common\Minimal\EventGroupsDemo.c - - - MessageBufferDemo.c - 1 - ..\Common\Minimal\MessageBufferDemo.c - - - StreamBufferDemo.c - 1 - ..\Common\Minimal\StreamBufferDemo.c - - - - - Libraries - - - rit128x96x4.c - 1 - .\rit128x96x4.c - - - osram128x64x4.c - 1 - .\osram128x64x4.c - - - driverlib.lib - 4 - ..\Common\drivers\LuminaryMicro\Keil\driverlib.lib - - - formike128x128x16.c - 1 - .\formike128x128x16.c - - - grlib.lib - 4 - ..\Common\drivers\LuminaryMicro\Keil\grlib.lib - - - - - RTOS_Source - - - tasks.c - 1 - ..\..\Source\tasks.c - - - list.c - 1 - ..\..\Source\list.c - - - queue.c - 1 - ..\..\Source\queue.c - - - port.c - 1 - ..\..\Source\portable\RVDS\ARM_CM3\port.c - - - timers.c - 1 - ..\..\Source\timers.c - - - event_groups.c - 1 - ..\..\Source\event_groups.c - - - heap_2.c - 1 - ..\..\Source\portable\MemMang\heap_2.c - - - stream_buffer.c - 1 - ..\..\Source\stream_buffer.c - - - - - uIP_Source - - - uIP_Task.c - 1 - .\webserver\uIP_Task.c - - - emac.c - 1 - .\webserver\emac.c - - - httpd.c - 1 - .\webserver\httpd.c - - - httpd-cgi.c - 1 - .\webserver\httpd-cgi.c - - - httpd-fs.c - 1 - .\webserver\httpd-fs.c - - - http-strings.c - 1 - .\webserver\http-strings.c - - - uip_arp.c - 1 - ..\Common\ethernet\uIP\uip-1.0\uip\uip_arp.c - - - psock.c - 1 - ..\Common\ethernet\uIP\uip-1.0\uip\psock.c - - - timer.c - 1 - ..\Common\ethernet\uIP\uip-1.0\uip\timer.c - - - uip.c - 1 - ..\Common\ethernet\uIP\uip-1.0\uip\uip.c - - - - - - - -
diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/ReadMe.txt b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/ReadMe.txt new file mode 100644 index 000000000..12c70d213 --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/ReadMe.txt @@ -0,0 +1 @@ +The third party uIP TCP/IP stack and the demo project that used to be in this directory was removed in FreeRTOS version V10.4.3 due to security vulnerabilities identified in uIP. In a future version this demo may be replaced by a version which does not use TCP/IP or uses FreeRTOS’s own TCP/IP stack in place of the original third party stack. \ No newline at end of file diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/bitmap.h b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/bitmap.h deleted file mode 100644 index 29f813fd1..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/bitmap.h +++ /dev/null @@ -1,336 +0,0 @@ -#ifndef BITMAP_H -#define BITMAP_H - -#define bmpBITMAP_HEIGHT 50 -#define bmpBITMAP_WIDTH 128 - -const unsigned char pucBasicBitmap[] = -{ -0x00, 0x0a, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, -0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, -0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, -0xaa, 0xaa, 0xaa, 0x00, 0x0a, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, -0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, -0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, -0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xa0, 0x0a, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, -0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, -0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, -0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xaa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfa, 0xaa, -0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, -0x00, 0x8f, 0xff, 0xff, 0xf8, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x88, 0x88, 0x88, -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0x88, 0x77, 0x77, 0x78, 0x8f, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x88, 0x77, 0x77, 0x88, 0x8f, 0xff, 0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, -0xff, 0xff, 0xf0, 0x00, 0x00, 0x8f, 0x00, 0xff, 0x87, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x78, 0xff, 0xff, -0xf7, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x78, 0xff, 0xff, 0xff, 0x87, 0x77, 0x77, 0x77, 0x77, 0x77, -0x77, 0x77, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x7f, 0xff, 0xff, 0xfa, 0xaa, -0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0x70, 0x00, 0x00, 0x8f, 0x00, 0xff, 0x87, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, -0x77, 0x77, 0xff, 0xff, 0xf7, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x78, 0xff, 0xff, 0xf8, 0x77, 0x77, -0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x78, 0xff, 0xff, 0xff, 0xff, 0x87, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x8f, -0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0x70, 0x08, 0x00, 0x8f, 0x00, 0xff, 0x87, 0x77, 0x77, 0x77, -0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x8f, 0xff, 0xf7, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x78, 0xff, -0xff, 0x87, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x8f, 0xff, 0xff, 0xf8, 0x77, 0x77, 0x77, 0x77, 0x77, -0x77, 0x77, 0x77, 0x8f, 0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0x00, 0x0f, 0x00, 0x8f, 0x00, 0xff, -0x87, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x78, 0xff, 0xf7, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, -0x77, 0x77, 0x78, 0xff, 0xf8, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x78, 0xff, 0xff, 0xf8, 0x77, -0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x8f, 0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0x70, 0x07, -0x00, 0x70, 0x00, 0xff, 0x87, 0x77, 0x77, 0x77, 0xff, 0xff, 0xf8, 0x77, 0x77, 0x77, 0x77, 0xff, 0xff, 0xff, 0xff, 0xff, -0x77, 0x77, 0x77, 0x7f, 0xff, 0xff, 0xff, 0xff, 0x87, 0x77, 0x77, 0x77, 0x78, 0xff, 0xff, 0xf8, 0x77, 0x77, 0x77, 0x77, -0xff, 0xff, 0x87, 0x77, 0x77, 0x77, 0x8f, 0xff, 0xff, 0xff, 0x88, 0x8f, 0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, -0xff, 0xff, 0x80, 0x00, 0x00, 0x00, 0x07, 0xff, 0x87, 0x77, 0x77, 0x77, 0xff, 0xff, 0xff, 0x87, 0x77, 0x77, 0x77, 0xff, -0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x7f, 0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x77, 0xff, 0xff, 0xff, 0xff, -0x87, 0x77, 0x77, 0x77, 0xff, 0xff, 0x77, 0x77, 0x77, 0x77, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfa, 0xaa, -0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0xf7, 0x00, 0x00, 0x00, 0x0f, 0xff, 0x87, 0x77, 0x77, 0x77, 0xff, 0xff, 0xff, 0xf8, -0x77, 0x77, 0x77, 0xff, 0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x7f, 0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x77, -0xff, 0xff, 0xff, 0xff, 0xf7, 0x77, 0x77, 0x77, 0x8f, 0xff, 0x77, 0x77, 0x77, 0x77, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0xff, 0x70, 0x00, 0x00, 0xff, 0xff, 0x87, 0x77, 0x77, 0x77, -0xff, 0xff, 0xff, 0xf8, 0x77, 0x77, 0x77, 0xff, 0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x7f, 0xff, 0xff, 0xff, 0xff, -0x77, 0x77, 0x77, 0x78, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x77, 0x77, 0x77, 0x8f, 0xff, 0x77, 0x77, 0x77, 0x77, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0x87, 0x77, 0x77, 0x77, 0xff, 0xff, 0xff, 0xf7, 0x77, 0x77, 0x78, 0xff, 0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x7f, -0xff, 0xff, 0xff, 0xf8, 0x77, 0x77, 0x77, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0x77, 0x77, 0x78, 0xff, 0x87, 0x77, -0x77, 0x77, 0x78, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0x88, 0xff, 0xff, 0xff, 0x87, 0x77, 0x77, 0x77, 0xff, 0xff, 0xf8, 0x87, 0x77, 0x77, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, -0x77, 0x77, 0x77, 0x7f, 0xff, 0xff, 0xff, 0xf8, 0x77, 0x77, 0x77, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0x77, 0x77, -0x78, 0xff, 0x87, 0x77, 0x77, 0x77, 0x77, 0x77, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, -0xff, 0xff, 0xff, 0x80, 0x00, 0x8f, 0x8f, 0xff, 0x87, 0x77, 0x77, 0x77, 0x88, 0x88, 0x77, 0x77, 0x77, 0x77, 0x8f, 0xff, -0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x7f, 0xff, 0xff, 0xff, 0xf8, 0x77, 0x77, 0x77, 0x8f, 0xff, 0xff, 0xff, 0xff, -0xff, 0x87, 0x77, 0x77, 0x78, 0xff, 0xf7, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x88, 0xff, 0xff, 0xff, 0xff, 0xfa, 0xaa, -0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0xf7, 0x00, 0x00, 0x8f, 0x07, 0xff, 0x87, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, -0x77, 0x77, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x7f, 0xff, 0xff, 0xff, 0xf8, 0x77, 0x77, 0x77, 0x8f, -0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0x77, 0x77, 0x78, 0xff, 0xf8, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x8f, 0xff, -0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0x70, 0x07, 0x00, 0x8f, 0x00, 0xff, 0x87, 0x77, 0x77, 0x77, -0x77, 0x77, 0x77, 0x77, 0x88, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x7f, 0xff, 0xff, 0xff, 0xf8, -0x77, 0x77, 0x77, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0x77, 0x77, 0x78, 0xff, 0xff, 0xf8, 0x77, 0x77, 0x77, 0x77, -0x77, 0x77, 0x77, 0x8f, 0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0x70, 0x0f, 0x00, 0x8f, 0x00, 0xff, -0x87, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x7f, -0xff, 0xff, 0xff, 0xf8, 0x77, 0x77, 0x77, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0x77, 0x77, 0x78, 0xff, 0xff, 0xff, -0x87, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x78, 0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0x00, 0x0f, -0x00, 0x8f, 0x00, 0xff, 0x87, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x78, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0x77, 0x77, 0x77, 0x7f, 0xff, 0xff, 0xff, 0xf8, 0x77, 0x77, 0x77, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0x77, 0x77, -0x78, 0xff, 0xff, 0xff, 0xff, 0x88, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, -0xff, 0xff, 0x70, 0x08, 0x00, 0x88, 0x00, 0xff, 0x87, 0x77, 0x77, 0x77, 0x88, 0x88, 0x77, 0x77, 0x77, 0x78, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x7f, 0xff, 0xff, 0xff, 0xf8, 0x77, 0x77, 0x77, 0x8f, 0xff, 0xff, 0xff, 0xff, -0xff, 0x87, 0x77, 0x77, 0x78, 0xff, 0xff, 0xff, 0xff, 0xff, 0x88, 0x77, 0x77, 0x77, 0x77, 0x77, 0xff, 0xff, 0xfa, 0xaa, -0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0x70, 0x00, 0x00, 0x70, 0x07, 0xff, 0x87, 0x77, 0x77, 0x77, 0xff, 0xff, 0x77, 0x77, -0x77, 0x77, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x7f, 0xff, 0xff, 0xff, 0xf8, 0x77, 0x77, 0x77, 0x7f, -0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0x77, 0x77, 0x78, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x77, 0x77, 0x77, 0x77, -0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x7f, 0xff, 0x87, 0x77, 0x77, 0x77, -0xff, 0xff, 0xf7, 0x77, 0x77, 0x77, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x7f, 0xff, 0xff, 0xff, 0xff, -0x77, 0x77, 0x77, 0x78, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x77, 0x77, 0x77, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0x87, 0x77, 0x77, 0x77, 0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0xff, 0xff, -0x87, 0x77, 0x77, 0x77, 0xff, 0xff, 0xf8, 0x77, 0x77, 0x77, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x7f, -0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x77, 0xff, 0xff, 0xff, 0xff, 0xf7, 0x77, 0x77, 0x77, 0x8f, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0x87, 0x77, 0x77, 0x77, 0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0x87, 0x88, -0x88, 0x8f, 0xff, 0xff, 0x87, 0x77, 0x77, 0x77, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, -0x77, 0x77, 0x77, 0x7f, 0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x77, 0xff, 0xff, 0xff, 0xff, 0x87, 0x77, 0x77, 0x77, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0x77, 0x77, 0x77, 0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, -0xff, 0xff, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff, 0x87, 0x77, 0x77, 0x77, 0xff, 0xff, 0xff, 0x87, 0x77, 0x77, 0x7f, 0xff, -0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x7f, 0xff, 0xff, 0xff, 0xff, 0x87, 0x77, 0x77, 0x77, 0x8f, 0xff, 0xff, 0xff, -0x77, 0x77, 0x77, 0x77, 0xff, 0xff, 0xf7, 0x88, 0xff, 0xff, 0xff, 0xff, 0x87, 0x77, 0x77, 0x77, 0xff, 0xff, 0xfa, 0xaa, -0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0xff, 0xff, 0xff, 0xff, 0x87, 0x77, 0x77, 0x77, 0xff, 0xff, 0xff, 0xf7, -0x77, 0x77, 0x78, 0xff, 0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x77, 0x77, 0x77, -0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x78, 0xff, 0xff, 0x87, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x78, -0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0xf7, 0x00, 0x88, 0x88, 0x88, 0xff, 0x87, 0x77, 0x77, 0x77, -0xff, 0xff, 0xff, 0xf8, 0x77, 0x77, 0x77, 0xff, 0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x7f, 0xff, 0xff, 0xff, 0xff, -0xff, 0x87, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x8f, 0xff, 0xff, 0x87, 0x77, 0x77, 0x77, 0x77, 0x77, -0x77, 0x77, 0x77, 0x7f, 0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0x70, 0x00, 0x00, 0x00, 0x00, 0xff, -0x87, 0x77, 0x77, 0x77, 0xff, 0xff, 0xff, 0xf8, 0x77, 0x77, 0x77, 0x8f, 0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x7f, -0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x78, 0xff, 0xff, 0xff, 0x87, 0x77, -0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0xff, 0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0x70, 0x00, -0x00, 0x00, 0x00, 0xff, 0x87, 0x77, 0x77, 0x77, 0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x7f, 0xff, 0xff, 0xff, 0xff, -0x77, 0x77, 0x77, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x8f, 0xff, -0xff, 0xff, 0x87, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x8f, 0xff, 0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, -0xff, 0xff, 0x70, 0x00, 0x00, 0x00, 0x07, 0xff, 0x88, 0x88, 0x88, 0x88, 0xff, 0xff, 0xff, 0xff, 0x88, 0x88, 0x88, 0x88, -0xff, 0xff, 0xff, 0xff, 0x88, 0x88, 0x88, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x87, 0x77, 0x77, 0x77, -0x88, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x88, 0x77, 0x77, 0x77, 0x77, 0x88, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xfa, 0xaa, -0xaa, 0xaf, 0xff, 0xff, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, 0x00, 0x0f, 0x70, 0x08, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, 0x00, 0x07, 0x70, 0x07, -0x88, 0x88, 0x88, 0xff, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xfa, 0xaa, -0xaa, 0xaf, 0xff, 0xff, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, 0xf7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x70, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0x70, 0x08, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0x70, 0x08, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfa, 0xaa, -0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaa, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, -0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, -0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, -0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x0a, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, -0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, -0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, -0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xa0, 0x00, 0xaa, 0xaa, 0xaa, -0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, -0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, -0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x00, -0x00 }; - -const unsigned char pucGrLibBitmap[] = -{ - IMAGE_FMT_4BPP_COMP, - 124, 0, - 49, 0, - - 15, - 0x00, 0x00, 0x00, - 0x00, 0x0c, 0x00, - 0x20, 0x44, 0x20, - 0x00, 0x75, 0x00, - 0x69, 0x69, 0x69, - 0x00, 0xc2, 0x00, - 0x00, 0xd2, 0x00, - 0x38, 0xb6, 0x38, - 0x00, 0xea, 0x00, - 0x00, 0xf2, 0x00, - 0xaa, 0xb2, 0xaa, - 0x65, 0xff, 0x65, - 0x69, 0xff, 0x69, - 0x6d, 0xff, 0x6d, - 0x71, 0xff, 0x71, - 0xff, 0xff, 0xff, - - 0x03, 0x21, 0x33, 0x53, 0x33, 0x33, 0x33, 0xe9, 0xd4, 0xf8, 0xa7, 0x5f, - 0x17, 0x07, 0x06, 0x35, 0x33, 0x12, 0x03, 0x23, 0x96, 0x68, 0x88, 0x88, - 0x88, 0xe9, 0xd4, 0xf8, 0xa7, 0x5f, 0x17, 0x07, 0x06, 0x86, 0x69, 0x32, - 0x03, 0x29, 0x66, 0x65, 0x66, 0x66, 0x66, 0xe9, 0xd4, 0xf8, 0xa7, 0x5f, - 0x17, 0x07, 0x06, 0x56, 0x66, 0x92, 0x07, 0x78, 0x63, 0x11, 0x11, 0x11, - 0xe9, 0xd4, 0xa7, 0xf0, 0x5f, 0x17, 0x07, 0x07, 0x11, 0x36, 0x87, 0x78, - 0x0f, 0x63, 0x00, 0x00, 0x00, 0xe9, 0xd4, 0xa7, 0x5f, 0xe0, 0x17, 0x07, - 0x07, 0x00, 0x36, 0x87, 0x78, 0x63, 0xfe, 0x07, 0x07, 0x77, 0x2f, 0x07, - 0x07, 0x02, 0x36, 0x1e, 0x87, 0x78, 0x63, 0x07, 0x07, 0x77, 0x2f, 0x00, - 0x10, 0x01, 0x22, 0x20, 0x07, 0x00, 0x00, 0x22, 0x21, 0x84, 0x03, 0x36, - 0x87, 0x78, 0x63, 0x02, 0x02, 0xaa, 0x01, 0xa2, 0x22, 0x20, 0x02, 0x77, - 0x77, 0x77, 0xe9, 0x3a, 0x22, 0x22, 0x7a, 0xa4, 0x71, 0x20, 0x0a, 0x27, - 0xb8, 0x29, 0x72, 0xb2, 0x9e, 0x93, 0x36, 0x87, 0x78, 0x40, 0x63, 0x62, - 0x2a, 0xff, 0xf2, 0xaa, 0x40, 0x07, 0x08, 0xad, 0xdd, 0xdd, 0xdd, 0xe9, - 0xd7, 0x72, 0x00, 0x40, 0x00, 0xa6, 0xdd, 0xda, 0x70, 0x00, 0x00, 0x02, - 0x00, 0x77, 0xdd, 0xdc, 0xcc, 0xcd, 0xde, 0xc7, 0x20, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x27, 0xde, 0xdc, 0x08, 0xcc, 0xcc, 0xdd, 0xea, 0x99, - 0x36, 0x87, 0x78, 0x40, 0x63, 0x69, 0x02, 0xaf, 0xaa, 0xf2, 0x2f, 0xa0, - 0x04, 0x02, 0xdb, 0xbb, 0xbb, 0xbb, 0xe9, 0xbc, 0xe7, 0x10, 0x20, 0x00, - 0x07, 0xa5, 0xbb, 0xbd, 0x70, 0x00, 0x10, 0x00, 0x27, 0xec, 0x3b, 0xcd, - 0xd7, 0x00, 0x00, 0x80, 0x9f, 0xbd, 0x20, 0x00, 0x00, 0x36, 0x87, 0x78, - 0x40, 0x63, 0x69, 0x02, 0xfa, 0x2a, 0xf2, 0x2f, 0xa0, 0x31, 0x02, 0xdb, - 0x43, 0x31, 0x42, 0x00, 0x07, 0xa7, 0x0a, 0x70, 0x00, 0x02, 0xdd, 0x41, - 0xcc, 0x21, 0xce, 0x04, 0x70, 0x00, 0x00, 0x02, 0x7d, 0x39, 0xbc, 0xcb, - 0x00, 0xbb, 0xbd, 0x20, 0x00, 0x00, 0x36, 0x87, 0x78, 0x20, 0x63, 0x00, - 0x69, 0xfa, 0x0a, 0xf2, 0x2f, 0xa0, 0x01, 0x02, 0xdb, 0xbb, 0xbb, 0xdd, - 0xdd, 0xdc, 0x11, 0x08, 0xe7, 0x00, 0x07, 0xad, 0xbb, 0xcd, 0xdd, 0xda, - 0x09, 0x70, 0x00, 0x2d, 0xcb, 0x41, 0xcc, 0xdd, 0xd1, 0x04, 0xe7, 0x00, - 0x00, 0x07, 0xeb, 0x51, 0xdc, 0xcd, 0x00, 0xdd, 0xdd, 0x20, 0x00, 0x00, - 0x36, 0x87, 0x78, 0x00, 0x63, 0x00, 0x00, 0x00, 0x02, 0xfa, 0x2a, 0xf2, - 0x00, 0xaf, 0xa0, 0x02, 0xdb, 0xbb, 0xbd, 0x72, 0x22, 0x00, 0x77, 0xdc, - 0xbb, 0xbb, 0xc7, 0x20, 0x07, 0x77, 0x04, 0x77, 0x77, 0xcb, 0xbb, 0xbc, - 0xd1, 0x20, 0x01, 0x28, 0x7d, 0xbb, 0x42, 0x27, 0x41, 0xcd, 0x20, 0x00, - 0x40, 0x27, 0x51, 0x72, 0x22, 0x22, 0x27, 0x7c, 0x20, 0x00, 0x00, 0x00, - 0x36, 0x87, 0x78, 0x63, 0x00, 0x00, 0x00, 0x00, 0x02, 0xaf, 0xaa, 0xfa, - 0xff, 0x20, 0x02, 0x10, 0xdb, 0xbb, 0xbe, 0x61, 0x2d, 0xbb, 0xbb, 0xcc, - 0xa8, 0x29, 0x00, 0x89, 0xbd, 0xc3, 0xeb, 0xbb, 0xbb, 0x00, 0xd7, 0x10, - 0x00, 0x00, 0x2c, 0xcb, 0xbb, 0xbd, 0x58, 0x70, 0x12, 0xc7, 0x13, 0x29, - 0x36, 0x87, 0x78, 0x40, 0x63, 0xa9, 0x00, 0xaf, 0xff, 0xff, 0xfa, 0x20, - 0x08, 0x02, 0xdb, 0xbb, 0xbd, 0x39, 0x07, 0xdb, 0xbb, 0x72, 0xcc, 0x03, - 0x8c, 0x82, 0xbd, 0x70, 0x84, 0xbc, 0x03, 0xd2, 0x00, 0x2d, 0xbb, 0xbb, - 0xd7, 0x19, 0x01, 0x02, 0x00, 0x00, 0x36, 0x87, 0x78, 0x63, 0xa2, 0x0a, - 0x10, 0xaf, 0xff, 0xa2, 0x0a, 0xbd, 0x20, 0x00, 0x00, 0x0c, 0x07, 0xdb, - 0xbb, 0xc7, 0xc9, 0x8e, 0x00, 0x2c, 0x40, 0xcb, 0xc4, 0x00, 0x7c, 0xbb, - 0xbb, 0xe7, 0x00, 0x06, 0x2d, 0xbb, 0xbb, 0xc7, 0x10, 0x92, 0x31, 0x36, - 0x10, 0x87, 0x78, 0x63, 0xab, 0x22, 0x22, 0x00, 0x00, 0x00, 0x02, 0xdb, - 0xbb, 0xbd, 0x20, 0x00, 0x00, 0x07, 0x18, 0xcb, 0xbb, 0xd7, 0x0a, 0x8d, - 0x00, 0x2d, 0xbb, 0x23, 0xbb, 0xc7, 0x82, 0x00, 0x2e, 0xbb, 0x39, 0x91, - 0x20, 0xbd, 0x72, 0x8b, 0x00, 0x00, 0x36, 0x87, 0x78, 0x48, 0x63, 0x33, - 0x02, 0x20, 0xe1, 0xdb, 0xbb, 0xbd, 0x01, 0x20, 0x00, 0x02, 0x7d, 0xbb, - 0xbb, 0xe2, 0x6b, 0x94, 0x8b, 0x00, 0x00, 0x81, 0xd7, 0x82, 0x00, 0x2d, - 0x00, 0xbb, 0xbb, 0xc7, 0x20, 0x2c, 0xcb, 0xbb, 0xbb, 0x10, 0xdd, 0x77, - 0x22, 0x7b, 0x36, 0x87, 0x78, 0x63, 0x80, 0x32, 0x02, 0xaa, 0xf2, 0x22, - 0x20, 0x02, 0xdb, 0x00, 0xbb, 0xbc, 0x77, 0x77, 0x77, 0xdb, 0xbb, 0xce, - 0x42, 0x71, 0x63, 0xdb, 0xbb, 0xbd, 0x20, 0x19, 0x7d, 0x10, 0xbb, 0xbb, - 0xd2, 0x82, 0x00, 0x27, 0xcb, 0xbb, 0x00, 0xc7, 0x20, 0x07, 0xeb, 0xbb, - 0xbb, 0xbb, 0xcd, 0x21, 0xd7, 0x72, 0x72, 0x36, 0x87, 0x78, 0x63, 0x32, - 0x01, 0x4f, 0xff, 0xf2, 0xaf, 0xa0, 0x02, 0xdb, 0x41, 0x03, 0xdd, 0xdc, - 0xbb, 0xbc, 0xd7, 0x20, 0x22, 0x89, 0x42, 0xbd, 0xba, 0x7d, 0xbb, 0xbb, - 0xd2, 0x82, 0x00, 0x02, 0x27, 0xcb, 0xbb, 0xcc, 0x20, 0x02, 0x89, 0xbb, - 0x08, 0xbb, 0xbc, 0xdd, 0x72, 0x31, 0x36, 0x87, 0x78, 0x40, 0x63, 0x31, - 0x02, 0xaf, 0xaa, 0xf2, 0x2f, 0xa0, 0x21, 0x02, 0xdb, 0x3a, 0xbb, 0xbb, - 0xc7, 0x20, 0x31, 0x88, 0x59, 0xdb, 0xbb, 0xbd, 0xb2, 0x7d, 0xbb, 0xbb, - 0x40, 0xd2, 0x7b, 0x27, 0xcb, 0xbb, 0xcc, 0x20, 0x00, 0x00, 0x27, 0xec, - 0xbb, 0xbb, 0xbb, 0xbb, 0xbc, 0xe7, 0x84, 0x29, 0x36, 0x87, 0x78, 0x63, - 0x31, 0x02, 0xfa, 0x02, 0x0a, 0xf2, 0x2f, 0xa0, 0x02, 0xdb, 0x42, 0xbb, - 0x31, 0xbb, 0xc7, 0x39, 0x5a, 0xdb, 0xbb, 0xbd, 0xb2, 0x08, 0x7d, 0xbb, - 0xbb, 0xd2, 0x7b, 0x27, 0xcb, 0xbb, 0x00, 0xcc, 0x20, 0x00, 0x02, 0x77, - 0xed, 0xcb, 0xbb, 0x00, 0xbb, 0xbb, 0xbd, 0x71, 0x00, 0x00, 0x36, 0x87, - 0x20, 0x78, 0x63, 0x31, 0x02, 0xfa, 0x0a, 0xf2, 0x2f, 0x00, 0xa0, 0x02, - 0xdb, 0xbb, 0xbb, 0xcd, 0xdd, 0xcb, 0x18, 0xbb, 0xbc, 0xe2, 0x69, 0x59, - 0xdb, 0xbb, 0xbd, 0x42, 0x20, 0x19, 0x7d, 0xbb, 0xbb, 0xd2, 0x7b, 0x27, - 0x10, 0xcb, 0xbb, 0xcb, 0x79, 0x02, 0x27, 0x7d, 0xdc, 0x00, 0xbb, 0xbb, - 0xbb, 0xe2, 0x00, 0x00, 0x36, 0x87, 0x20, 0x78, 0x63, 0x31, 0x02, 0xfa, - 0x2a, 0xf2, 0xaf, 0x00, 0xa0, 0x02, 0xdb, 0xbb, 0xbd, 0x72, 0x27, 0x4c, - 0x1d, 0xbb, 0xbb, 0xd7, 0x69, 0x59, 0x89, 0x20, 0x19, 0x42, 0x7d, 0x7e, - 0x2c, 0xbb, 0xbb, 0xc7, 0x7a, 0x00, 0x10, 0x22, 0x7c, 0xcb, 0x63, 0x36, - 0x87, 0x78, 0x63, 0x80, 0x31, 0x02, 0xaf, 0xfa, 0xff, 0xff, 0x20, 0x02, - 0x00, 0xdb, 0xbb, 0xbd, 0x20, 0x00, 0x2c, 0xcb, 0xbb, 0x28, 0xcb, 0x20, - 0x61, 0x00, 0x8c, 0x00, 0x00, 0x2d, 0x12, 0xbb, 0xbb, 0xd7, 0x82, 0x00, - 0x2e, 0xbe, 0x00, 0x21, 0x02, 0x7c, 0x63, 0x36, 0x87, 0x78, 0x63, 0x32, - 0x00, 0x2f, 0xff, 0xff, 0xfa, 0x00, 0x02, 0xdb, 0xbb, 0x00, 0xbd, 0x20, - 0x00, 0x07, 0xdb, 0xbb, 0xbe, 0x20, 0xc2, 0x62, 0x8c, 0x00, 0x00, 0x2c, - 0xcb, 0xc4, 0x00, 0x0c, 0x7d, 0xbb, 0xbb, 0xe7, 0x3a, 0x19, 0x2d, 0xbb, - 0x00, 0xbb, 0xc7, 0x00, 0x00, 0x36, 0x87, 0x78, 0x63, 0x80, 0x3a, 0x02, - 0xaa, 0xaa, 0x40, 0x00, 0x02, 0xdb, 0x00, 0xbb, 0xbd, 0x20, 0x00, 0x02, - 0xcc, 0xbb, 0xbd, 0x63, 0x70, 0x63, 0x8b, 0x00, 0x00, 0x07, 0x49, 0x7a, - 0x98, 0x09, 0xbb, 0xd2, 0x3a, 0x19, 0x2d, 0xbb, 0xbb, 0x01, 0xd7, 0x00, - 0x00, 0x36, 0x87, 0x78, 0x63, 0x3a, 0x14, 0xaa, 0x22, 0x20, 0x0b, 0xbd, - 0xc9, 0x7d, 0xbb, 0x30, 0xbb, 0xd2, 0x61, 0x8e, 0x00, 0x02, 0xeb, 0xbb, - 0x20, 0xbb, 0xd7, 0x79, 0x27, 0xcb, 0xbb, 0xbd, 0x70, 0x24, 0x00, 0x02, - 0x6a, 0x00, 0x7d, 0x6b, 0x36, 0x87, 0x24, 0x78, 0x63, 0x39, 0x02, 0xff, - 0x62, 0x02, 0xdb, 0x21, 0xbb, 0xbd, 0x21, 0x2e, 0xbb, 0xbb, 0xe7, 0x61, - 0x80, 0x8e, 0x00, 0x02, 0x7d, 0xbb, 0xbb, 0xbd, 0x72, 0x00, 0x22, 0x27, - 0xcc, 0xbb, 0xbb, 0xcd, 0x20, 0x00, 0x08, 0x07, 0xe7, 0x72, 0x22, 0xa3, - 0xe2, 0x00, 0x00, 0x00, 0x36, 0x87, 0x78, 0x63, 0x00, 0x00, 0x00, 0x02, - 0x20, 0xaf, 0xa0, 0xd2, 0xdb, 0xbb, 0xbd, 0x20, 0x00, 0x03, 0x00, 0x2b, - 0xcb, 0xbb, 0xc7, 0x10, 0x8f, 0x11, 0x01, 0x2d, 0xcb, 0xbb, 0xbb, 0xdd, - 0xb7, 0xcd, 0xd1, 0x00, 0xe7, 0x00, 0x00, 0x07, 0xdc, 0xdd, 0xcb, 0x7b, - 0x00, 0xdd, 0xcb, 0xbb, 0xbc, 0x72, 0x00, 0x00, 0x36, 0x10, 0x87, 0x78, - 0x63, 0x01, 0x00, 0x2a, 0xfa, 0x42, 0x01, 0x22, 0x20, 0x02, 0xdb, 0xbb, - 0xbd, 0x20, 0x01, 0xb0, 0xcc, 0x00, 0x8d, 0xb9, 0xec, 0xbb, 0xbb, 0xbb, - 0x00, 0xcc, 0xcb, 0xbb, 0xbb, 0xbe, 0x71, 0x00, 0x00, 0x05, 0x27, 0xcb, - 0xbb, 0xcc, 0xcc, 0x81, 0xce, 0x29, 0x08, 0x36, 0x87, 0x78, 0x63, 0x02, - 0xaa, 0xff, 0xff, 0x02, 0xff, 0xa0, 0x02, 0xdb, 0xbb, 0xbd, 0x61, 0x02, - 0x0e, 0xeb, 0xbb, 0xbd, 0x70, 0x5a, 0x8c, 0x09, 0x27, 0x00, 0xec, 0xbb, - 0xbb, 0xbb, 0xbb, 0xbb, 0xbd, 0xd7, 0x54, 0x10, 0xa1, 0xcb, 0xa4, 0xd2, - 0x31, 0x36, 0x87, 0x20, 0x78, 0x63, 0x01, 0x02, 0xff, 0xff, 0xff, 0xff, - 0x02, 0xa0, 0x07, 0xad, 0xdd, 0xda, 0x20, 0x99, 0xde, 0x1c, 0xdd, 0xde, - 0xc2, 0x21, 0x8d, 0x0a, 0x7c, 0xed, 0x04, 0xcc, 0xcc, 0xcc, 0xde, 0xd7, - 0x92, 0x2c, 0xed, 0x40, 0xdc, 0xa7, 0x36, 0x87, 0x78, 0x63, 0x00, 0x02, - 0x00, 0x22, 0x02, 0xaa, 0xaa, 0xaa, 0xaa, 0x20, 0x02, 0x1b, 0x77, 0x77, - 0x77, 0x5a, 0xc9, 0x72, 0x21, 0x8e, 0x88, 0xaa, 0x27, 0x77, 0x7b, 0x9d, - 0x12, 0x27, 0x77, 0x20, 0x77, 0xb7, 0x3d, 0x36, 0x87, 0x78, 0x63, 0x00, - 0x3e, 0x02, 0xaa, 0x43, 0x22, 0xc6, 0x87, 0x3e, 0x12, 0x21, 0x22, 0x22, - 0x06, 0x01, 0x22, 0x22, 0x21, 0x04, 0x00, 0x36, 0x87, 0x78, 0x63, 0x00, - 0x02, 0xfa, 0x22, 0x3f, 0xaa, 0x20, 0x26, 0xc6, 0x87, 0x3f, 0x07, 0x07, - 0x00, 0x36, 0x87, 0x78, 0x63, 0x00, 0x02, 0xfa, 0x02, 0x7e, 0xff, 0x07, - 0x07, 0x77, 0x2f, 0x07, 0x06, 0x36, 0x00, 0x87, 0x78, 0x63, 0x00, 0x02, - 0xff, 0xaa, 0xfa, 0x07, 0x44, 0x44, 0x44, 0x20, 0x02, 0xd9, 0xc1, 0xd4, - 0xf0, 0xa7, 0x5f, 0x17, 0x04, 0x42, 0x00, 0x00, 0x36, 0x00, 0x87, 0x78, - 0x63, 0x00, 0x02, 0xff, 0xff, 0xff, 0x9f, 0xe9, 0xa0, 0x0a, 0xc4, 0x94, - 0xa7, 0x5f, 0x17, 0x80, 0x04, 0xfa, 0x20, 0x00, 0x36, 0x87, 0x78, 0x63, - 0x13, 0x00, 0x00, 0xaf, 0x03, 0xa0, 0x0a, 0x07, 0xbf, 0xe0, 0x77, 0x2f, - 0x07, 0xfa, 0x20, 0x00, 0x36, 0x87, 0x00, 0x78, 0x63, 0x00, 0x00, 0x02, - 0xaa, 0xfa, 0xaa, 0x0f, 0xaa, 0xaa, 0x20, 0x02, 0xd9, 0xc1, 0xd4, 0xa7, - 0xe0, 0x5f, 0x17, 0x05, 0x00, 0x00, 0x36, 0x87, 0x78, 0x03, 0x63, 0x00, - 0x00, 0x00, 0x02, 0xff, 0xd9, 0xc1, 0xfc, 0xd4, 0xa7, 0x5f, 0x17, 0x07, - 0x03, 0x36, 0x87, 0x23, 0x78, 0x63, 0x01, 0x02, 0x44, 0x20, 0x07, 0x07, - 0xf0, 0x77, 0x2f, 0x07, 0x05, 0x36, 0x87, 0x78, 0x63, 0xfe, 0x07, 0x07, - 0x77, 0x2f, 0x07, 0x07, 0x02, 0x36, 0x1f, 0x87, 0x78, 0x63, 0x07, 0x07, - 0x77, 0x2f, 0x07, 0xc0, 0x07, 0x02, 0x36, 0x87, 0x78, 0x63, 0x11, 0x11, - 0x7f, 0x11, 0xe9, 0xd4, 0xa7, 0x5f, 0x17, 0x07, 0x07, 0x00, 0x11, 0x36, - 0x87, 0x29, 0x66, 0x55, 0x55, 0x55, 0xfe, 0xe9, 0xd4, 0xa7, 0x5f, 0x17, - 0x07, 0x07, 0x55, 0x00, 0x66, 0x92, 0x23, 0x96, 0x68, 0x88, 0x88, 0x88, - 0xfe, 0xe9, 0xd4, 0xa7, 0x5f, 0x17, 0x07, 0x06, 0x86, 0x01, 0x69, 0x32, - 0x21, 0x33, 0x55, 0x55, 0x55, 0xe9, 0xfc, 0xd4, 0xa7, 0x5f, 0x17, 0x07, - 0x07, 0x55, 0x33, 0x00, 0x12, -}; - - -#endif diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/formike128x128x16.c b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/formike128x128x16.c deleted file mode 100644 index 188099a49..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/formike128x128x16.c +++ /dev/null @@ -1,902 +0,0 @@ -//***************************************************************************** -// -// formike128x128x16.c - Display driver for the Formike Electronic -// KWH015C04-F01 CSTN panel with an ST7637 controller. -// -// Copyright (c) 2008 Luminary Micro, Inc. All rights reserved. -// -// Software License Agreement -// -// Luminary Micro, Inc. (LMI) is supplying this software for use solely and -// exclusively on LMI's microcontroller products. -// -// The software is owned by LMI and/or its suppliers, and is protected under -// applicable copyright laws. All rights are reserved. You may not combine -// this software with "viral" open-source software in order to form a larger -// program. Any use in violation of the foregoing restrictions may subject -// the user to criminal sanctions under applicable laws, as well as to civil -// liability for the breach of the terms and conditions of this license. -// -// THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED -// OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. -// LMI SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR -// CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. -// -// This is part of revision 2523 of the Stellaris Peripheral Driver Library. -// -//***************************************************************************** - -//***************************************************************************** -// -//! \addtogroup ek_lm3s3748_api -//! @{ -// -//***************************************************************************** - -#include "hw_gpio.h" -#include "hw_memmap.h" -#include "hw_types.h" -#include "gpio.h" -#include "sysctl.h" -#include "rom.h" -#include "grlib.h" -#include "formike128x128x16.h" -#include - -//***************************************************************************** -// -// Defines for the pins that are used to communicate with the ST7637. -// -//***************************************************************************** -#define LCD_A0_BASE GPIO_PORTB_BASE -#define LCD_A0_PIN GPIO_PIN_2 -#define LCD_WR_BASE GPIO_PORTC_BASE -#define LCD_WR_PIN GPIO_PIN_4 -#define LCD_RD_BASE GPIO_PORTC_BASE -#define LCD_RD_PIN GPIO_PIN_5 -#define LCD_BL_BASE GPIO_PORTF_BASE -#define LCD_BL_PIN GPIO_PIN_1 -#define LCD_DATA_BASE GPIO_PORTG_BASE - -//***************************************************************************** -// -// Translates a 24-bit RGB color to a display driver-specific color. -// -// \param c is the 24-bit RGB color. The least-significant byte is the blue -// channel, the next byte is the green channel, and the third byte is the red -// channel. -// -// This macro translates a 24-bit RGB color into a value that can be written -// into the display's frame buffer in order to reproduce that color, or the -// closest possible approximation of that color. -// -// \return Returns the display-driver specific color. -// -//***************************************************************************** -#define DPYCOLORTRANSLATE(c) ((((c) & 0x00ff0000) >> 19) | \ - ((((c) & 0x0000ff00) >> 5) & 0x000007e0) | \ - ((((c) & 0x000000ff) << 8) & 0x0000f800)) - -//***************************************************************************** -// -// Writes a data word to the ST7637. -// -//***************************************************************************** -static void -WriteData(unsigned char ucData) -{ - // - // Write the data to the data bus. - // - HWREG(LCD_DATA_BASE + GPIO_O_DATA + (0xff << 2)) = ucData; - - // - // Assert the write enable signal. - // - HWREG(LCD_WR_BASE + GPIO_O_DATA + (LCD_WR_PIN << 2)) = 0; - - // - // Deassert the write enable signal. - // - HWREG(LCD_WR_BASE + GPIO_O_DATA + (LCD_WR_PIN << 2)) = LCD_WR_PIN; -} - -//***************************************************************************** -// -// Writes a command to the ST7637. -// -//***************************************************************************** -static void -WriteCommand(unsigned char ucData) -{ - // - // Write the command to the data bus. - // - HWREG(LCD_DATA_BASE + GPIO_O_DATA + (0xff << 2)) = ucData; - - // - // Set the A0 signal low, indicating a command. - // - HWREG(LCD_A0_BASE + GPIO_O_DATA + (LCD_A0_PIN << 2)) = 0; - - // - // Assert the write enable signal. - // - HWREG(LCD_WR_BASE + GPIO_O_DATA + (LCD_WR_PIN << 2)) = 0; - - // - // Deassert the write enable signal. - // - HWREG(LCD_WR_BASE + GPIO_O_DATA + (LCD_WR_PIN << 2)) = LCD_WR_PIN; - - // - // Set the A0 signal high, indicating that following writes are data. - // - HWREG(LCD_A0_BASE + GPIO_O_DATA + (LCD_A0_PIN << 2)) = LCD_A0_PIN; -} - -//***************************************************************************** -// -//! Initializes the display driver. -//! -//! This function initializes the ST7637 display controller on the panel, -//! preparing it to display data. -//! -//! \return None. -// -//***************************************************************************** -void -Formike128x128x16Init(void) -{ - unsigned long ulClockMS, ulCount; - - // - // Get the value to pass to SysCtlDelay() in order to delay for 1 ms. - // - ulClockMS = SysCtlClockGet() / (3 * 1000); - - // - // Enable the GPIO peripherals used to interface to the ST7637. - // - SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB); - SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOC); - SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF); - SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOG); - - // - // Configure the pins that connect to the LCD as GPIO outputs. - // - GPIOPinTypeGPIOOutput(LCD_A0_BASE, LCD_A0_PIN); - GPIOPinTypeGPIOOutput(LCD_WR_BASE, LCD_WR_PIN); - GPIOPinTypeGPIOOutput(LCD_RD_BASE, LCD_RD_PIN); - GPIOPinTypeGPIOOutput(LCD_BL_BASE, LCD_BL_PIN); - GPIOPinTypeGPIOOutput(LCD_DATA_BASE, 0xff); - - // - // Set the LCD control pins to their default values. - // - GPIOPinWrite(LCD_A0_BASE, LCD_A0_PIN, LCD_A0_PIN); - GPIOPinWrite(LCD_WR_BASE, LCD_WR_PIN | LCD_RD_PIN, - LCD_WR_PIN | LCD_RD_PIN); - GPIOPinWrite(LCD_BL_BASE, LCD_BL_PIN, 0); - GPIOPinWrite(LCD_DATA_BASE, 0xff, 0x00); - - // - // Perform a software reset of the ST7637. - // - WriteCommand(0x01); - - // - // Delay for 120ms. - // - SysCtlDelay(ulClockMS * 120); - - // - // Disable auto-load of mask rom data. - // - WriteCommand(0xD7); - WriteData(0xBF); - - // - // Set the OTP control mode to read. - // - WriteCommand(0xE0); - WriteData(0x00); - - // - // Delay for 10ms. - // - SysCtlDelay(ulClockMS * 10); - - // - // Start the OTP read. - // - WriteCommand(0xE3); - - // - // Delay for 20ms. - // - SysCtlDelay(ulClockMS * 20); - - // - // Cancel the OTP read (it should have finished by now). - // - WriteCommand(0xE1); - - // - // Turn off the display. - // - WriteCommand(0x28); - - // - // Exit sleep mode. - // - WriteCommand(0x11); - - // - // Delay for 50ms. - // - SysCtlDelay(ulClockMS * 50); - - // - // Program the LCD supply voltage V0 to 14V. - // - WriteCommand(0xC0); - WriteData(0x04); - WriteData(0x01); - - // - // Select an LCD bias voltage ratio of 1/12. - // - WriteCommand(0xC3); - WriteData(0x00); - - // - // Enable the x8 booster circuit. - // - WriteCommand(0xC4); - WriteData(0x07); - - // - // Invert the column scan direction for the panel. - // - WriteCommand(0xB7); - WriteData(0xC0); - - // - // Select 16bpp, 5-6-5 data input mode. - // - WriteCommand(0x3A); - WriteData(0x05); - - // - // Select the memory scanning direction. The scanning mode does not matter - // for this driver since the row/column selects will constrain the writes - // to the desired area of the display. - // - WriteCommand(0x36); - WriteData(0x00); - - // - // Turn on the display. - // - WriteCommand(0x29); - - // - // Clear the contents of the display buffer. - // - WriteCommand(0x2A); - WriteData(0x00); - WriteData(0x7F); - WriteCommand(0x2B); - WriteData(0x01); - WriteData(0x80); - WriteCommand(0x2c); - for(ulCount = 0; ulCount < (128 * 128); ulCount++) - { - WriteData(0x00); - WriteData(0x00); - } - - // - // Enable normal operation of the LCD. - // - WriteCommand(0x13); -} - -//***************************************************************************** -// -//! Turns on the backlight. -//! -//! This function turns on the backlight on the display. -//! -//! \return None. -// -//***************************************************************************** -void -Formike128x128x16BacklightOn(void) -{ - // - // Assert the signal that turns on the backlight. - // - HWREG(LCD_BL_BASE + GPIO_O_DATA + (LCD_BL_PIN << 2)) = LCD_BL_PIN; -} - -//***************************************************************************** -// -//! Turns off the backlight. -//! -//! This function turns off the backlight on the display. -//! -//! \return None. -// -//***************************************************************************** -void -Formike128x128x16BacklightOff(void) -{ - // - // Deassert the signal that turns on the backlight. - // - HWREG(LCD_BL_BASE + GPIO_O_DATA + (LCD_BL_PIN << 2)) = 0; -} - -//***************************************************************************** -// -//! Draws a pixel on the screen. -//! -//! \param pvDisplayData is a pointer to the driver-specific data for this -//! display driver. -//! \param lX is the X coordinate of the pixel. -//! \param lY is the Y coordinate of the pixel. -//! \param ulValue is the color of the pixel. -//! -//! This function sets the given pixel to a particular color. The coordinates -//! of the pixel are assumed to be within the extents of the display. -//! -//! \return None. -// -//***************************************************************************** -static void -Formike128x128x16PixelDraw(void *pvDisplayData, long lX, long lY, - unsigned long ulValue) -{ - // - // Set the X address of the display cursor. - // - WriteCommand(0x2a); - WriteData(lX); - WriteData(lX); - - // - // Set the Y address of the display cursor. - // - WriteCommand(0x2b); - WriteData(lY + 1); - WriteData(lY + 1); - - // - // Write the pixel value. - // - WriteCommand(0x2c); - WriteData(ulValue >> 8); - WriteData(ulValue); -} - -//***************************************************************************** -// -//! Draws a horizontal sequence of pixels on the screen. -//! -//! \param pvDisplayData is a pointer to the driver-specific data for this -//! display driver. -//! \param lX is the X coordinate of the first pixel. -//! \param lY is the Y coordinate of the first pixel. -//! \param lX0 is sub-pixel offset within the pixel data, which is valid for 1 -//! or 4 bit per pixel formats. -//! \param lCount is the number of pixels to draw. -//! \param lBPP is the number of bits per pixel; must be 1, 4, or 8. -//! \param pucData is a pointer to the pixel data. For 1 and 4 bit per pixel -//! formats, the most significant bit(s) represent the left-most pixel. -//! \param pucPalette is a pointer to the palette used to draw the pixels. -//! -//! This function draws a horizontal sequence of pixels on the screen, using -//! the supplied palette. For 1 bit per pixel format, the palette contains -//! pre-translated colors; for 4 and 8 bit per pixel formats, the palette -//! contains 24-bit RGB values that must be translated before being written to -//! the display. -//! -//! \return None. -// -//***************************************************************************** -static void -Formike128x128x16PixelDrawMultiple(void *pvDisplayData, long lX, long lY, - long lX0, long lCount, long lBPP, - const unsigned char *pucData, - const unsigned char *pucPalette) -{ - unsigned long ulByte; - - // - // Set the extent of the line along the X axis. - // - WriteCommand(0x2a); - WriteData(lX); - WriteData(lX + lCount - 1); - - // - // Set the Y address of the display cursor. - // - WriteCommand(0x2b); - WriteData(lY + 1); - WriteData(lY + 1); - - // - // Write the data RAM write command. - // - WriteCommand(0x2c); - - // - // Determine how to interpret the pixel data based on the number of bits - // per pixel. - // - switch(lBPP) - { - // - // The pixel data is in 1 bit per pixel format. - // - case 1: - { - // - // Loop while there are more pixels to draw. - // - while(lCount) - { - // - // Get the next byte of image data. - // - ulByte = *pucData++; - - // - // Loop through the pixels in this byte of image data. - // - for(; (lX0 < 8) && lCount; lX0++, lCount--) - { - // - // Draw this pixel in the appropriate color. - // - lBPP = ((unsigned long *)pucPalette)[(ulByte >> - (7 - lX0)) & 1]; - WriteData(lBPP >> 8); - WriteData(lBPP); - } - - // - // Start at the beginning of the next byte of image data. - // - lX0 = 0; - } - - // - // The image data has been drawn. - // - break; - } - - // - // The pixel data is in 4 bit per pixel format. - // - case 4: - { - // - // Loop while there are more pixels to draw. "Duff's device" is - // used to jump into the middle of the loop if the first nibble of - // the pixel data should not be used. Duff's device makes use of - // the fact that a case statement is legal anywhere within a - // sub-block of a switch statement. See - // http://en.wikipedia.org/wiki/Duff's_device for detailed - // information about Duff's device. - // - switch(lX0 & 1) - { - case 0: - while(lCount) - { - // - // Get the upper nibble of the next byte of pixel data - // and extract the corresponding entry from the - // palette. - // - ulByte = (*pucData >> 4) * 3; - ulByte = (*(unsigned long *)(pucPalette + ulByte) & - 0x00ffffff); - - // - // Translate this palette entry and write it to the - // screen. - // - ulByte = DPYCOLORTRANSLATE(ulByte); - WriteData(ulByte >> 8); - WriteData(ulByte); - - // - // Decrement the count of pixels to draw. - // - lCount--; - - // - // See if there is another pixel to draw. - // - if(lCount) - { - case 1: - // - // Get the lower nibble of the next byte of pixel - // data and extract the corresponding entry from - // the palette. - // - ulByte = (*pucData++ & 15) * 3; - ulByte = (*(unsigned long *)(pucPalette + ulByte) & - 0x00ffffff); - - // - // Translate this palette entry and write it to the - // screen. - // - ulByte = DPYCOLORTRANSLATE(ulByte); - WriteData(ulByte >> 8); - WriteData(ulByte); - - // - // Decrement the count of pixels to draw. - // - lCount--; - } - } - } - - // - // The image data has been drawn. - // - break; - } - - // - // The pixel data is in 8 bit per pixel format. - // - case 8: - { - // - // Loop while there are more pixels to draw. - // - while(lCount--) - { - // - // Get the next byte of pixel data and extract the - // corresponding entry from the palette. - // - ulByte = *pucData++ * 3; - ulByte = *(unsigned long *)(pucPalette + ulByte) & 0x00ffffff; - - // - // Translate this palette entry and write it to the screen. - // - ulByte = DPYCOLORTRANSLATE(ulByte); - WriteData(ulByte >> 8); - WriteData(ulByte); - } - - // - // The image data has been drawn. - // - break; - } - } -} - -//***************************************************************************** -// -//! Flushes any cached drawing operations. -//! -//! \param pvDisplayData is a pointer to the driver-specific data for this -//! display driver. -//! -//! This functions flushes any cached drawing operations to the display. This -//! is useful when a local frame buffer is used for drawing operations, and the -//! flush would copy the local frame buffer to the display. For the ST7637 -//! driver, the flush is a no operation. -//! -//! \return None. -// -//***************************************************************************** -static void -Formike128x128x16Flush(void *pvDisplayData) -{ - // - // There is nothing to be done. - // -} - -//***************************************************************************** -// -//! Draws a horizontal line. -//! -//! \param pvDisplayData is a pointer to the driver-specific data for this -//! display driver. -//! \param lX1 is the X coordinate of the start of the line. -//! \param lX2 is the X coordinate of the end of the line. -//! \param lY is the Y coordinate of the line. -//! \param ulValue is the color of the line. -//! -//! This function draws a horizontal line on the display. The coordinates of -//! the line are assumed to be within the extents of the display. -//! -//! \return None. -// -//***************************************************************************** -static void -Formike128x128x16LineDrawH(void *pvDisplayData, long lX1, long lX2, long lY, - unsigned long ulValue) -{ - // - // Set the extent of the line along the X axis. - // - WriteCommand(0x2a); - WriteData(lX1); - WriteData(lX2); - - // - // Set the Y address of the display cursor. - // - WriteCommand(0x2b); - WriteData(lY + 1); - WriteData(lY + 1); - - // - // Write the data RAM write command. - // - WriteCommand(0x2c); - - // - // Loop through the pixels of this horizontal line. - // - while(lX1++ <= lX2) - { - // - // Write the pixel value. - // - WriteData(ulValue >> 8); - WriteData(ulValue); - } -} - -//***************************************************************************** -// -//! Draws a vertical line. -//! -//! \param pvDisplayData is a pointer to the driver-specific data for this -//! display driver. -//! \param lX is the X coordinate of the line. -//! \param lY1 is the Y coordinate of the start of the line. -//! \param lY2 is the Y coordinate of the end of the line. -//! \param ulValue is the color of the line. -//! -//! This function draws a vertical line on the display. The coordinates of the -//! line are assumed to be within the extents of the display. -//! -//! \return None. -// -//***************************************************************************** -static void -Formike128x128x16LineDrawV(void *pvDisplayData, long lX, long lY1, long lY2, - unsigned long ulValue) -{ - // - // Set the X address of the display cursor. - // - WriteCommand(0x2a); - WriteData(lX); - WriteData(lX); - - // - // Set the extent of the line along the Y axis. - // - WriteCommand(0x2b); - WriteData(lY1 + 1); - WriteData(lY2 + 1); - - // - // Write the data RAM write command. - // - WriteCommand(0x2c); - - // - // Loop through the pixels of this vertical line. - // - while(lY1++ <= lY2) - { - // - // Write the pixel value. - // - WriteData(ulValue >> 8); - WriteData(ulValue); - } -} - -//***************************************************************************** -// -//! Fills a rectangle. -//! -//! \param pvDisplayData is a pointer to the driver-specific data for this -//! display driver. -//! \param pRect is a pointer to the structure describing the rectangle. -//! \param ulValue is the color of the rectangle. -//! -//! This function fills a rectangle on the display. The coordinates of the -//! rectangle are assumed to be within the extents of the display, and the -//! rectangle specification is fully inclusive (i.e. both sXMin and sXMax are -//! drawn, along with sYMin and sYMax). -//! -//! \return None. -// -//***************************************************************************** -static void -Formike128x128x16RectFill(void *pvDisplayData, const tRectangle *pRect, - unsigned long ulValue) -{ - long lCount; - - // - // Set the extent of the rectangle along the X axis. - // - WriteCommand(0x2a); - WriteData(pRect->sXMin); - WriteData(pRect->sXMax); - - // - // Set the extent of the rectangle along the Y axis. - // - WriteCommand(0x2b); - WriteData(pRect->sYMin + 1); - WriteData(pRect->sYMax + 1); - - // - // Write the data RAM write command. - // - WriteCommand(0x2c); - - // - // Loop through the pixels in this rectangle. - // - for(lCount = ((pRect->sXMax - pRect->sXMin + 1) * - (pRect->sYMax - pRect->sYMin + 1)); lCount > 0; lCount--) - { - // - // Write the pixel value. - // - WriteData(ulValue >> 8); - WriteData(ulValue); - } -} - -//***************************************************************************** -// -//! Translates a 24-bit RGB color to a display driver-specific color. -//! -//! \param pvDisplayData is a pointer to the driver-specific data for this -//! display driver. -//! \param ulValue is the 24-bit RGB color. The least-significant byte is the -//! blue channel, the next byte is the green channel, and the third byte is the -//! red channel. -//! -//! This function translates a 24-bit RGB color into a value that can be -//! written into the display's frame buffer in order to reproduce that color, -//! or the closest possible approximation of that color. -//! -//! \return Returns the display-driver specific color. -// -//***************************************************************************** -static unsigned long -Formike128x128x16ColorTranslate(void *pvDisplayData, unsigned long ulValue) -{ - // - // Translate from a 24-bit RGB color to a 5-6-5 RGB color. - // - return(DPYCOLORTRANSLATE(ulValue)); -} - -//***************************************************************************** -// -//! The display structure that describes the driver for the Formike Electronic -//! KWH015C04-F01 CSTN panel with an ST7637 controller. -// -//***************************************************************************** -const tDisplay g_sFormike128x128x16 = -{ - sizeof(tDisplay), - 0, - 128, - 128, - Formike128x128x16PixelDraw, - Formike128x128x16PixelDrawMultiple, - Formike128x128x16LineDrawH, - Formike128x128x16LineDrawV, - Formike128x128x16RectFill, - Formike128x128x16ColorTranslate, - Formike128x128x16Flush -}; - -//***************************************************************************** -// -// Close the Doxygen group. -//! @} -// -//***************************************************************************** - - - - - - - - - - - - - - - - -/* FreeRTOS.org demo wrappers. These are required so the prototypes for the -functions are the same as for the display drivers used by other evaluation -kits. */ - -static tContext sContext; - -void vFormike128x128x16Clear( void ) -{ -const tRectangle xRectangle = { 0, 0, 127, 127 }; - - GrContextForegroundSet( &sContext, ClrBlack ); - GrRectFill( &sContext, &xRectangle ); - GrContextForegroundSet(&sContext, ClrWhite); -} -/*-----------------------------------------------------------*/ - -void vFormike128x128x16StringDraw( const char *pcString, unsigned long lX, unsigned long lY, unsigned char ucColor ) -{ - GrContextForegroundSet(&sContext, ClrWhite); - GrStringDraw( &sContext, pcString, strlen( pcString ), lX, lY, false ); -} -/*-----------------------------------------------------------*/ - -void vFormike128x128x16Init( unsigned long ul ) -{ -tRectangle rectScreen; - - ( void ) ul; - - Formike128x128x16Init(); - Formike128x128x16BacklightOn(); - GrContextInit(&sContext, &g_sFormike128x128x16); - GrContextFontSet(&sContext, &g_sFontCmss12); - rectScreen.sXMin = 0; - - /* Fill the screen with a black rectangle. */ - rectScreen.sYMin = 0; - rectScreen.sXMax = g_sFormike128x128x16.usWidth - 1; - rectScreen.sYMax = g_sFormike128x128x16.usHeight - 1; - GrContextForegroundSet(&sContext, ClrBlack); - GrRectFill(&sContext, &rectScreen); -} -/*-----------------------------------------------------------*/ - -void vFormike128x128x16ImageDraw( const unsigned char *pucImage, unsigned long ulX, unsigned long ulY, unsigned long ulWidth, unsigned long ulHeight ) -{ - GrImageDraw( &sContext, pucImage, ( long ) ulX, ( long ) ulY); - -} - - - - diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/formike128x128x16.h b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/formike128x128x16.h deleted file mode 100644 index feaec758f..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/formike128x128x16.h +++ /dev/null @@ -1,51 +0,0 @@ -//***************************************************************************** -// -// formike128x128x16.h - Prototypes for the Formike Electronic KWH015C04-F01 -// display driver. -// -// Copyright (c) 2008 Luminary Micro, Inc. All rights reserved. -// -// Software License Agreement -// -// Luminary Micro, Inc. (LMI) is supplying this software for use solely and -// exclusively on LMI's microcontroller products. -// -// The software is owned by LMI and/or its suppliers, and is protected under -// applicable copyright laws. All rights are reserved. You may not combine -// this software with "viral" open-source software in order to form a larger -// program. Any use in violation of the foregoing restrictions may subject -// the user to criminal sanctions under applicable laws, as well as to civil -// liability for the breach of the terms and conditions of this license. -// -// THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED -// OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. -// LMI SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR -// CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. -// -// This is part of revision 2523 of the Stellaris Peripheral Driver Library. -// -//***************************************************************************** - -#ifndef __FORMIKE128X128X16_H__ -#define __FORMIKE128X128X16_H__ - -//***************************************************************************** -// -// Prototypes for the globals exported by this driver. -// -//***************************************************************************** -extern void Formike128x128x16Init(void); -extern void Formike128x128x16BacklightOn(void); -extern void Formike128x128x16BacklightOff(void); -extern const tDisplay g_sFormike128x128x16; - -/* FreeRTOS.org demo wrappers. These are required so the prototypes for the -functions are the same as for the display drivers used by other evaluation -kits. */ -void vFormike128x128x16Clear( void ); -void vFormike128x128x16StringDraw( const char *pcString, unsigned long lX, unsigned long lY, unsigned char ucColor ); -void vFormike128x128x16Init( unsigned long ul ); -void vFormike128x128x16ImageDraw( const unsigned char *pucImage, unsigned long ulX, unsigned long ulY, unsigned long ulWidth, unsigned long ulHeight ); - -#endif // __FORMIKE128X128X16_H__ diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/lcd_message.h b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/lcd_message.h deleted file mode 100644 index adfc18b8a..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/lcd_message.h +++ /dev/null @@ -1,9 +0,0 @@ -#ifndef LCD_MESSAGE_H -#define LCD_MESSAGE_H - -typedef struct -{ - signed char *pcMessage; -} xOLEDMessage; - -#endif /* LCD_MESSAGE_H */ diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/main.c b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/main.c deleted file mode 100644 index 22335c473..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/main.c +++ /dev/null @@ -1,532 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - - -/* - * Creates all the demo application tasks, then starts the scheduler. The WEB - * documentation provides more details of the standard demo application tasks. - * In addition to the standard demo tasks, the following tasks and tests are - * defined and/or created within this file: - * - * "Fast Interrupt Test" - A high frequency periodic interrupt is generated - * using a free running timer to demonstrate the use of the - * configKERNEL_INTERRUPT_PRIORITY configuration constant. The interrupt - * service routine measures the number of processor clocks that occur between - * each interrupt - and in so doing measures the jitter in the interrupt timing. - * The maximum measured jitter time is latched in the ulMaxJitter variable, and - * displayed on the OLED display by the 'OLED' task as described below. The - * fast interrupt is configured and handled in the timertest.c source file. - * - * "OLED" task - the OLED task is a 'gatekeeper' task. It is the only task that - * is permitted to access the display directly. Other tasks wishing to write a - * message to the OLED send the message on a queue to the OLED task instead of - * accessing the OLED themselves. The OLED task just blocks on the queue waiting - * for messages - waking and displaying the messages as they arrive. - * - * "Check" hook - This only executes every five seconds from the tick hook. - * Its main function is to check that all the standard demo tasks are still - * operational. Should any unexpected behaviour within a demo task be discovered - * the tick hook will write an error to the OLED (via the OLED task). If all the - * demo tasks are executing with their expected behaviour then the check task - * writes PASS to the OLED (again via the OLED task), as described above. - * - * "uIP" task - This is the task that handles the uIP stack. All TCP/IP - * processing is performed in this task. - * - * Use the following command to execute in QEMU from the IAR IDE: - * qemu-system-arm -machine lm3s6965evb -s -S -kernel [pat_to]\RTOSDemo.out - * and set IAR connect GDB server to "localhost,1234" in project debug options. - */ - -/************************************************************************* - * Please ensure to read http://www.freertos.org/portlm3sx965.html - * which provides information on configuring and running this demo for the - * various Luminary Micro EKs. - *************************************************************************/ - -/* Set the following option to 1 to include the WEB server in the build. By -default the WEB server is excluded to keep the compiled code size under the 32K -limit imposed by the KickStart version of the IAR compiler. The graphics -libraries take up a lot of ROM space, hence including the graphics libraries -and the TCP/IP stack together cannot be accommodated with the 32K size limit. */ -#define mainINCLUDE_WEB_SERVER 0 - - -/* Standard includes. */ -#include -#include - -/* Scheduler includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "queue.h" -#include "semphr.h" - -/* Hardware library includes. */ -#include "hw_memmap.h" -#include "hw_types.h" -#include "hw_sysctl.h" -#include "hw_uart.h" -#include "sysctl.h" -#include "gpio.h" -#include "grlib.h" -#include "rit128x96x4.h" -#include "osram128x64x4.h" -#include "formike128x128x16.h" -#include "uart.h" - -/* Demo app includes. */ -#include "death.h" -#include "blocktim.h" -#include "flash.h" -#include "partest.h" -#include "semtest.h" -#include "PollQ.h" -#include "lcd_message.h" -#include "bitmap.h" -#include "GenQTest.h" -#include "QPeek.h" -#include "recmutex.h" -#include "IntQueue.h" -#include "QueueSet.h" -#include "EventGroupsDemo.h" -#include "MessageBufferDemo.h" -#include "StreamBufferDemo.h" - -/*-----------------------------------------------------------*/ - -/* The time between cycles of the 'check' functionality (defined within the -tick hook. */ -#define mainCHECK_DELAY ( ( TickType_t ) 5000 / portTICK_PERIOD_MS ) - -/* Size of the stack allocated to the uIP task. */ -#define mainBASIC_WEB_STACK_SIZE ( configMINIMAL_STACK_SIZE * 3 ) - -/* The OLED task uses the sprintf function so requires a little more stack too. */ -#define mainOLED_TASK_STACK_SIZE ( configMINIMAL_STACK_SIZE + 50 ) - -/* Task priorities. */ -#define mainQUEUE_POLL_PRIORITY ( tskIDLE_PRIORITY + 2 ) -#define mainCHECK_TASK_PRIORITY ( tskIDLE_PRIORITY + 3 ) -#define mainSEM_TEST_PRIORITY ( tskIDLE_PRIORITY + 1 ) -#define mainCREATOR_TASK_PRIORITY ( tskIDLE_PRIORITY + 3 ) -#define mainGEN_QUEUE_TASK_PRIORITY ( tskIDLE_PRIORITY ) - -/* The maximum number of message that can be waiting for display at any one -time. */ -#define mainOLED_QUEUE_SIZE ( 3 ) - -/* Dimensions the buffer into which the jitter time is written. */ -#define mainMAX_MSG_LEN 25 - -/* The period of the system clock in nano seconds. This is used to calculate -the jitter time in nano seconds. */ -#define mainNS_PER_CLOCK ( ( unsigned long ) ( ( 1.0 / ( double ) configCPU_CLOCK_HZ ) * 1000000000.0 ) ) - -/* Constants used when writing strings to the display. */ -#define mainCHARACTER_HEIGHT ( 9 ) -#define mainMAX_ROWS_128 ( mainCHARACTER_HEIGHT * 14 ) -#define mainMAX_ROWS_96 ( mainCHARACTER_HEIGHT * 10 ) -#define mainMAX_ROWS_64 ( mainCHARACTER_HEIGHT * 7 ) -#define mainFULL_SCALE ( 15 ) -#define ulSSI_FREQUENCY ( 3500000UL ) - -/*-----------------------------------------------------------*/ - -/* - * The task that handles the uIP stack. All TCP/IP processing is performed in - * this task. - */ -extern void vuIP_Task( void *pvParameters ); - -/* - * The display is written two by more than one task so is controlled by a - * 'gatekeeper' task. This is the only task that is actually permitted to - * access the display directly. Other tasks wanting to display a message send - * the message to the gatekeeper. - */ -static void vOLEDTask( void *pvParameters ); - -/* - * Configure the hardware for the demo. - */ -static void prvSetupHardware( void ); - -/* - * Configures the high frequency timers - those used to measure the timing - * jitter while the real time kernel is executing. - */ -extern void vSetupHighFrequencyTimer( void ); - -/* - * Hook functions that can get called by the kernel. - */ -void vApplicationStackOverflowHook( TaskHandle_t pxTask, char *pcTaskName ); -void vApplicationTickHook( void ); - -static void prvPrintString( const char * pcString ); - -/*-----------------------------------------------------------*/ - -/* The queue used to send messages to the OLED task. */ -QueueHandle_t xOLEDQueue; - -/* The welcome text. */ -const char * const pcWelcomeMessage = " www.FreeRTOS.org"; - -/*-----------------------------------------------------------*/ - - -/************************************************************************* - * Please ensure to read http://www.freertos.org/portlm3sx965.html - * which provides information on configuring and running this demo for the - * various Luminary Micro EKs. - *************************************************************************/ -int main( void ) -{ - prvSetupHardware(); - - /* Create the queue used by the OLED task. Messages for display on the OLED - are received via this queue. */ - xOLEDQueue = xQueueCreate( mainOLED_QUEUE_SIZE, sizeof( xOLEDMessage ) ); - - /* Start the standard demo tasks. */ - vStartGenericQueueTasks( mainGEN_QUEUE_TASK_PRIORITY ); - vStartInterruptQueueTasks(); - vStartRecursiveMutexTasks(); - vCreateBlockTimeTasks(); - vStartSemaphoreTasks( mainSEM_TEST_PRIORITY ); - vStartPolledQueueTasks( mainQUEUE_POLL_PRIORITY ); - vStartQueuePeekTasks(); - vStartQueueSetTasks(); - vStartEventGroupTasks(); - vStartMessageBufferTasks( configMINIMAL_STACK_SIZE ); - vStartStreamBufferTasks(); - - /* Exclude some tasks if using the kickstart version to ensure we stay within - the 32K code size limit. */ - #if mainINCLUDE_WEB_SERVER != 0 - { - /* Create the uIP task if running on a processor that includes a MAC and - PHY. */ - if( SysCtlPeripheralPresent( SYSCTL_PERIPH_ETH ) ) - { - xTaskCreate( vuIP_Task, "uIP", mainBASIC_WEB_STACK_SIZE, NULL, mainCHECK_TASK_PRIORITY - 1, NULL ); - } - } - #endif - - /* Start the tasks defined within this file/specific to this demo. */ - xTaskCreate( vOLEDTask, "OLED", mainOLED_TASK_STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL ); - - /* The suicide tasks must be created last as they need to know how many - tasks were running prior to their creation in order to ascertain whether - or not the correct/expected number of tasks are running at any given time. */ - vCreateSuicidalTasks( mainCREATOR_TASK_PRIORITY ); - - /* Uncomment the following line to configure the high frequency interrupt - used to measure the interrupt jitter time. - vSetupHighFrequencyTimer(); */ - - /* Start the scheduler. */ - vTaskStartScheduler(); - - /* Will only get here if there was insufficient memory to create the idle - task. */ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -void prvSetupHardware( void ) -{ - /* If running on Rev A2 silicon, turn the LDO voltage up to 2.75V. This is - a workaround to allow the PLL to operate reliably. */ - if( DEVICE_IS_REVA2 ) - { - SysCtlLDOSet( SYSCTL_LDO_2_75V ); - } - - /* Set the clocking to run from the PLL at 50 MHz */ - SysCtlClockSet( SYSCTL_SYSDIV_4 | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN | SYSCTL_XTAL_8MHZ ); - - /* Enable Port F for Ethernet LEDs - LED0 Bit 3 Output - LED1 Bit 2 Output */ - SysCtlPeripheralEnable( SYSCTL_PERIPH_GPIOF ); - GPIODirModeSet( GPIO_PORTF_BASE, (GPIO_PIN_2 | GPIO_PIN_3), GPIO_DIR_MODE_HW ); - GPIOPadConfigSet( GPIO_PORTF_BASE, (GPIO_PIN_2 | GPIO_PIN_3 ), GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_STD ); - - vParTestInitialise(); - - /* Initialise the UART - QEMU usage does not seem to require this - initialisation. */ - SysCtlPeripheralEnable( SYSCTL_PERIPH_UART0 ); - UARTEnable( UART0_BASE ); -} -/*-----------------------------------------------------------*/ - -void vApplicationTickHook( void ) -{ -static xOLEDMessage xMessage = { "PASS" }; -static unsigned long ulTicksSinceLastDisplay = 0; -portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE; - - /* Called from every tick interrupt. Have enough ticks passed to make it - time to perform our health status check again? */ - ulTicksSinceLastDisplay++; - if( ulTicksSinceLastDisplay >= mainCHECK_DELAY ) - { - ulTicksSinceLastDisplay = 0; - - /* Has an error been found in any task? */ - if( xAreStreamBufferTasksStillRunning() != pdTRUE ) - { - xMessage.pcMessage = "ERROR IN STRM"; - } - else if( xAreMessageBufferTasksStillRunning() != pdTRUE ) - { - xMessage.pcMessage = "ERROR IN MSG"; - } - if( xAreGenericQueueTasksStillRunning() != pdTRUE ) - { - xMessage.pcMessage = "ERROR IN GEN Q"; - } - else if( xIsCreateTaskStillRunning() != pdTRUE ) - { - xMessage.pcMessage = "ERROR IN CREATE"; - } - else if( xAreIntQueueTasksStillRunning() != pdTRUE ) - { - xMessage.pcMessage = "ERROR IN INT QUEUE"; - } - else if( xAreBlockTimeTestTasksStillRunning() != pdTRUE ) - { - xMessage.pcMessage = "ERROR IN BLOCK TIME"; - } - else if( xAreSemaphoreTasksStillRunning() != pdTRUE ) - { - xMessage.pcMessage = "ERROR IN SEMAPHORE"; - } - else if( xArePollingQueuesStillRunning() != pdTRUE ) - { - xMessage.pcMessage = "ERROR IN POLL Q"; - } - else if( xAreQueuePeekTasksStillRunning() != pdTRUE ) - { - xMessage.pcMessage = "ERROR IN PEEK Q"; - } - else if( xAreRecursiveMutexTasksStillRunning() != pdTRUE ) - { - xMessage.pcMessage = "ERROR IN REC MUTEX"; - } - else if( xAreQueueSetTasksStillRunning() != pdPASS ) - { - xMessage.pcMessage = "ERROR IN Q SET"; - } - else if( xAreEventGroupTasksStillRunning() != pdTRUE ) - { - xMessage.pcMessage = "ERROR IN EVNT GRP"; - } - - /* Send the message to the OLED gatekeeper for display. */ - xHigherPriorityTaskWoken = pdFALSE; - xQueueSendFromISR( xOLEDQueue, &xMessage, &xHigherPriorityTaskWoken ); - } - - /* Write to a queue that is in use as part of the queue set demo to - demonstrate using queue sets from an ISR. */ - vQueueSetAccessQueueSetFromISR(); - - /* Call the event group ISR tests. */ - vPeriodicEventGroupsProcessing(); -} -/*-----------------------------------------------------------*/ - -static void prvPrintString( const char * pcString ) -{ - while( *pcString != 0x00 ) - { - UARTCharPut( UART0_BASE, *pcString ); - pcString++; - } -} -/*-----------------------------------------------------------*/ - -void vOLEDTask( void *pvParameters ) -{ -xOLEDMessage xMessage; -unsigned long ulY, ulMaxY; -static char cMessage[ mainMAX_MSG_LEN ]; -extern volatile unsigned long ulMaxJitter; -const unsigned char *pucImage; - -/* Functions to access the OLED. The one used depends on the dev kit -being used. */ -void ( *vOLEDInit )( unsigned long ) = NULL; -void ( *vOLEDStringDraw )( const char *, unsigned long, unsigned long, unsigned char ) = NULL; -void ( *vOLEDImageDraw )( const unsigned char *, unsigned long, unsigned long, unsigned long, unsigned long ) = NULL; -void ( *vOLEDClear )( void ) = NULL; - - /* Map the OLED access functions to the driver functions that are appropriate - for the evaluation kit being used. */ - switch( HWREG( SYSCTL_DID1 ) & SYSCTL_DID1_PRTNO_MASK ) - { - case SYSCTL_DID1_PRTNO_6965 : - case SYSCTL_DID1_PRTNO_2965 : vOLEDInit = OSRAM128x64x4Init; - vOLEDStringDraw = OSRAM128x64x4StringDraw; - vOLEDImageDraw = OSRAM128x64x4ImageDraw; - vOLEDClear = OSRAM128x64x4Clear; - ulMaxY = mainMAX_ROWS_64; - pucImage = pucBasicBitmap; - break; - - case SYSCTL_DID1_PRTNO_1968 : - case SYSCTL_DID1_PRTNO_8962 : vOLEDInit = RIT128x96x4Init; - vOLEDStringDraw = RIT128x96x4StringDraw; - vOLEDImageDraw = RIT128x96x4ImageDraw; - vOLEDClear = RIT128x96x4Clear; - ulMaxY = mainMAX_ROWS_96; - pucImage = pucBasicBitmap; - break; - - default : vOLEDInit = vFormike128x128x16Init; - vOLEDStringDraw = vFormike128x128x16StringDraw; - vOLEDImageDraw = vFormike128x128x16ImageDraw; - vOLEDClear = vFormike128x128x16Clear; - ulMaxY = mainMAX_ROWS_128; - pucImage = pucGrLibBitmap; - break; - - } - - ulY = ulMaxY; - - /* Initialise the OLED and display a startup message. */ - vOLEDInit( ulSSI_FREQUENCY ); - vOLEDStringDraw( "POWERED BY FreeRTOS", 0, 0, mainFULL_SCALE ); - vOLEDImageDraw( pucImage, 0, mainCHARACTER_HEIGHT + 1, bmpBITMAP_WIDTH, bmpBITMAP_HEIGHT ); - - for( ;; ) - { - /* Wait for a message to arrive that requires displaying. */ - xQueueReceive( xOLEDQueue, &xMessage, portMAX_DELAY ); - - /* Write the message on the next available row. */ - ulY += mainCHARACTER_HEIGHT; - if( ulY >= ulMaxY ) - { - ulY = mainCHARACTER_HEIGHT; - vOLEDClear(); - vOLEDStringDraw( pcWelcomeMessage, 0, 0, mainFULL_SCALE ); - } - - /* Display the message along with the maximum jitter time from the - high priority time test. */ - sprintf( cMessage, "%s [%uns]", xMessage.pcMessage, ulMaxJitter * mainNS_PER_CLOCK ); - vOLEDStringDraw( cMessage, 0, ulY, mainFULL_SCALE ); - prvPrintString( cMessage ); - } -} -/*-----------------------------------------------------------*/ - -volatile char *pcOverflowedTask = NULL; -void vApplicationStackOverflowHook( TaskHandle_t pxTask, char *pcTaskName ) -{ - ( void ) pxTask; - pcOverflowedTask = pcTaskName; - - for( ;; ); -} -/*-----------------------------------------------------------*/ - -void vAssertCalled( const char *pcFile, unsigned long ulLine ) -{ -volatile unsigned long ulSetTo1InDebuggerToExit = 0; - - taskENTER_CRITICAL(); - { - while( ulSetTo1InDebuggerToExit == 0 ) - { - /* Nothing to do here. Set the loop variable to a non zero value in - the debugger to step out of this function to the point that caused - the assertion. */ - ( void ) pcFile; - ( void ) ulLine; - } - } - taskEXIT_CRITICAL(); -} - -/* configUSE_STATIC_ALLOCATION is set to 1, so the application must provide an -implementation of vApplicationGetIdleTaskMemory() to provide the memory that is -used by the Idle task. */ -void vApplicationGetIdleTaskMemory( StaticTask_t **ppxIdleTaskTCBBuffer, StackType_t **ppxIdleTaskStackBuffer, uint32_t *pulIdleTaskStackSize ) -{ -/* If the buffers to be provided to the Idle task are declared inside this -function then they must be declared static - otherwise they will be allocated on -the stack and so not exists after this function exits. */ -static StaticTask_t xIdleTaskTCB; -static StackType_t uxIdleTaskStack[ configMINIMAL_STACK_SIZE ]; - - /* Pass out a pointer to the StaticTask_t structure in which the Idle task's - state will be stored. */ - *ppxIdleTaskTCBBuffer = &xIdleTaskTCB; - - /* Pass out the array that will be used as the Idle task's stack. */ - *ppxIdleTaskStackBuffer = uxIdleTaskStack; - - /* Pass out the size of the array pointed to by *ppxIdleTaskStackBuffer. - Note that, as the array is necessarily of type StackType_t, - configMINIMAL_STACK_SIZE is specified in words, not bytes. */ - *pulIdleTaskStackSize = configMINIMAL_STACK_SIZE; -} -/*-----------------------------------------------------------*/ - -/* configUSE_STATIC_ALLOCATION and configUSE_TIMERS are both set to 1, so the -application must provide an implementation of vApplicationGetTimerTaskMemory() -to provide the memory that is used by the Timer service task. */ -void vApplicationGetTimerTaskMemory( StaticTask_t **ppxTimerTaskTCBBuffer, StackType_t **ppxTimerTaskStackBuffer, uint32_t *pulTimerTaskStackSize ) -{ -/* If the buffers to be provided to the Timer task are declared inside this -function then they must be declared static - otherwise they will be allocated on -the stack and so not exists after this function exits. */ -static StaticTask_t xTimerTaskTCB; -static StackType_t uxTimerTaskStack[ configTIMER_TASK_STACK_DEPTH ]; - - /* Pass out a pointer to the StaticTask_t structure in which the Timer - task's state will be stored. */ - *ppxTimerTaskTCBBuffer = &xTimerTaskTCB; - - /* Pass out the array that will be used as the Timer task's stack. */ - *ppxTimerTaskStackBuffer = uxTimerTaskStack; - - /* Pass out the size of the array pointed to by *ppxTimerTaskStackBuffer. - Note that, as the array is necessarily of type StackType_t, - configMINIMAL_STACK_SIZE is specified in words, not bytes. */ - *pulTimerTaskStackSize = configTIMER_TASK_STACK_DEPTH; -} - diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/osram128x64x4.c b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/osram128x64x4.c deleted file mode 100644 index 3353a82e6..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/osram128x64x4.c +++ /dev/null @@ -1,933 +0,0 @@ -//***************************************************************************** -// -// osram128x64x4.c - Driver for the OSRAM 128x64x4 graphical OLED display. -// -// Copyright (c) 2006-2007 Luminary Micro, Inc. All rights reserved. -// -// Software License Agreement -// -// Luminary Micro, Inc. (LMI) is supplying this software for use solely and -// exclusively on LMI's microcontroller products. -// -// The software is owned by LMI and/or its suppliers, and is protected under -// applicable copyright laws. All rights are reserved. Any use in violation -// of the foregoing restrictions may subject the user to criminal sanctions -// under applicable laws, as well as to civil liability for the breach of the -// terms and conditions of this license. -// -// THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED -// OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. -// LMI SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR -// CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. -// -// This is part of revision 1408 of the Stellaris Peripheral Driver Library. -// -//***************************************************************************** - -//***************************************************************************** -// -//! \addtogroup ek_lm3sx965_api -//! @{ -// -//***************************************************************************** - -#include "hw_ssi.h" -#include "hw_memmap.h" -#include "hw_sysctl.h" -#include "hw_types.h" -#include "debug.h" -#include "gpio.h" -#include "ssi.h" -#include "sysctl.h" -#include "osram128x64x4.h" - -//***************************************************************************** -// -// Flag to indicate if SSI port is enabled for OSRAM usage. -// -//***************************************************************************** -static volatile tBoolean g_bSSIEnabled = false; - -//***************************************************************************** -// -// Define the OSRAM 128x64x4 Remap Setting(s). This will be used in -// several places in the code to switch between vertical and horizontal -// address incrementing. -// -// The Remap Command (0xA0) takes one 8-bit parameter. The parameter is -// defined as follows. -// -// Bit 7: Reserved -// Bit 6: Disable(0)/Enable(1) COM Split Odd Even -// When enabled, the COM signals are split Odd on one side, even on -// the other. Otherwise, they are split 0-39 on one side, 40-79 on -// the other. -// Bit 5: Reserved -// Bit 4: Disable(0)/Enable(1) COM Remap -// When Enabled, ROW 0-79 map to COM 79-0 (i.e. reverse row order) -// Bit 3: Reserved -// Bit 2: Horizontal(0)/Vertical(1) Address Increment -// When set, data RAM address will increment along the column rather -// than along the row. -// Bit 1: Disable(0)/Enable(1) Nibble Remap -// When enabled, the upper and lower nibbles in the DATA bus for access -// to the data RAM are swapped. -// Bit 0: Disable(0)/Enable(1) Column Address Remap -// When enabled, DATA RAM columns 0-63 are remapped to Segment Columns -// 127-0. -// -//***************************************************************************** -#define OSRAM_INIT_REMAP 0x52 -#define OSRAM_INIT_OFFSET 0x4C -static const unsigned char g_pucOSRAM128x64x4VerticalInc[] = { 0xA0, 0x56 }; -static const unsigned char g_pucOSRAM128x64x4HorizontalInc[] = { 0xA0, 0x52 }; - -//***************************************************************************** -// -// A 5x7 font (in a 6x8 cell, where the sixth column is omitted from this -// table) for displaying text on the OLED display. The data is organized as -// bytes from the left column to the right column, with each byte containing -// the top row in the LSB and the bottom row in the MSB. -// -// Note: This is the same font data that is used in the EK-LM3S811 -// osram96x16x1 driver. The single bit-per-pixel is expaned in the StringDraw -// function to the appropriate four bit-per-pixel gray scale format. -// -//***************************************************************************** -static const unsigned char g_pucFont[96][5] = -{ - { 0x00, 0x00, 0x00, 0x00, 0x00 }, // " " - { 0x00, 0x00, 0x4f, 0x00, 0x00 }, // ! - { 0x00, 0x07, 0x00, 0x07, 0x00 }, // " - { 0x14, 0x7f, 0x14, 0x7f, 0x14 }, // # - { 0x24, 0x2a, 0x7f, 0x2a, 0x12 }, // $ - { 0x23, 0x13, 0x08, 0x64, 0x62 }, // % - { 0x36, 0x49, 0x55, 0x22, 0x50 }, // & - { 0x00, 0x05, 0x03, 0x00, 0x00 }, // ' - { 0x00, 0x1c, 0x22, 0x41, 0x00 }, // ( - { 0x00, 0x41, 0x22, 0x1c, 0x00 }, // ) - { 0x14, 0x08, 0x3e, 0x08, 0x14 }, // * - { 0x08, 0x08, 0x3e, 0x08, 0x08 }, // + - { 0x00, 0x50, 0x30, 0x00, 0x00 }, // , - { 0x08, 0x08, 0x08, 0x08, 0x08 }, // - - { 0x00, 0x60, 0x60, 0x00, 0x00 }, // . - { 0x20, 0x10, 0x08, 0x04, 0x02 }, // / - { 0x3e, 0x51, 0x49, 0x45, 0x3e }, // 0 - { 0x00, 0x42, 0x7f, 0x40, 0x00 }, // 1 - { 0x42, 0x61, 0x51, 0x49, 0x46 }, // 2 - { 0x21, 0x41, 0x45, 0x4b, 0x31 }, // 3 - { 0x18, 0x14, 0x12, 0x7f, 0x10 }, // 4 - { 0x27, 0x45, 0x45, 0x45, 0x39 }, // 5 - { 0x3c, 0x4a, 0x49, 0x49, 0x30 }, // 6 - { 0x01, 0x71, 0x09, 0x05, 0x03 }, // 7 - { 0x36, 0x49, 0x49, 0x49, 0x36 }, // 8 - { 0x06, 0x49, 0x49, 0x29, 0x1e }, // 9 - { 0x00, 0x36, 0x36, 0x00, 0x00 }, // : - { 0x00, 0x56, 0x36, 0x00, 0x00 }, // ; - { 0x08, 0x14, 0x22, 0x41, 0x00 }, // < - { 0x14, 0x14, 0x14, 0x14, 0x14 }, // = - { 0x00, 0x41, 0x22, 0x14, 0x08 }, // > - { 0x02, 0x01, 0x51, 0x09, 0x06 }, // ? - { 0x32, 0x49, 0x79, 0x41, 0x3e }, // @ - { 0x7e, 0x11, 0x11, 0x11, 0x7e }, // A - { 0x7f, 0x49, 0x49, 0x49, 0x36 }, // B - { 0x3e, 0x41, 0x41, 0x41, 0x22 }, // C - { 0x7f, 0x41, 0x41, 0x22, 0x1c }, // D - { 0x7f, 0x49, 0x49, 0x49, 0x41 }, // E - { 0x7f, 0x09, 0x09, 0x09, 0x01 }, // F - { 0x3e, 0x41, 0x49, 0x49, 0x7a }, // G - { 0x7f, 0x08, 0x08, 0x08, 0x7f }, // H - { 0x00, 0x41, 0x7f, 0x41, 0x00 }, // I - { 0x20, 0x40, 0x41, 0x3f, 0x01 }, // J - { 0x7f, 0x08, 0x14, 0x22, 0x41 }, // K - { 0x7f, 0x40, 0x40, 0x40, 0x40 }, // L - { 0x7f, 0x02, 0x0c, 0x02, 0x7f }, // M - { 0x7f, 0x04, 0x08, 0x10, 0x7f }, // N - { 0x3e, 0x41, 0x41, 0x41, 0x3e }, // O - { 0x7f, 0x09, 0x09, 0x09, 0x06 }, // P - { 0x3e, 0x41, 0x51, 0x21, 0x5e }, // Q - { 0x7f, 0x09, 0x19, 0x29, 0x46 }, // R - { 0x46, 0x49, 0x49, 0x49, 0x31 }, // S - { 0x01, 0x01, 0x7f, 0x01, 0x01 }, // T - { 0x3f, 0x40, 0x40, 0x40, 0x3f }, // U - { 0x1f, 0x20, 0x40, 0x20, 0x1f }, // V - { 0x3f, 0x40, 0x38, 0x40, 0x3f }, // W - { 0x63, 0x14, 0x08, 0x14, 0x63 }, // X - { 0x07, 0x08, 0x70, 0x08, 0x07 }, // Y - { 0x61, 0x51, 0x49, 0x45, 0x43 }, // Z - { 0x00, 0x7f, 0x41, 0x41, 0x00 }, // [ - { 0x02, 0x04, 0x08, 0x10, 0x20 }, // "\" - { 0x00, 0x41, 0x41, 0x7f, 0x00 }, // ] - { 0x04, 0x02, 0x01, 0x02, 0x04 }, // ^ - { 0x40, 0x40, 0x40, 0x40, 0x40 }, // _ - { 0x00, 0x01, 0x02, 0x04, 0x00 }, // ` - { 0x20, 0x54, 0x54, 0x54, 0x78 }, // a - { 0x7f, 0x48, 0x44, 0x44, 0x38 }, // b - { 0x38, 0x44, 0x44, 0x44, 0x20 }, // c - { 0x38, 0x44, 0x44, 0x48, 0x7f }, // d - { 0x38, 0x54, 0x54, 0x54, 0x18 }, // e - { 0x08, 0x7e, 0x09, 0x01, 0x02 }, // f - { 0x0c, 0x52, 0x52, 0x52, 0x3e }, // g - { 0x7f, 0x08, 0x04, 0x04, 0x78 }, // h - { 0x00, 0x44, 0x7d, 0x40, 0x00 }, // i - { 0x20, 0x40, 0x44, 0x3d, 0x00 }, // j - { 0x7f, 0x10, 0x28, 0x44, 0x00 }, // k - { 0x00, 0x41, 0x7f, 0x40, 0x00 }, // l - { 0x7c, 0x04, 0x18, 0x04, 0x78 }, // m - { 0x7c, 0x08, 0x04, 0x04, 0x78 }, // n - { 0x38, 0x44, 0x44, 0x44, 0x38 }, // o - { 0x7c, 0x14, 0x14, 0x14, 0x08 }, // p - { 0x08, 0x14, 0x14, 0x18, 0x7c }, // q - { 0x7c, 0x08, 0x04, 0x04, 0x08 }, // r - { 0x48, 0x54, 0x54, 0x54, 0x20 }, // s - { 0x04, 0x3f, 0x44, 0x40, 0x20 }, // t - { 0x3c, 0x40, 0x40, 0x20, 0x7c }, // u - { 0x1c, 0x20, 0x40, 0x20, 0x1c }, // v - { 0x3c, 0x40, 0x30, 0x40, 0x3c }, // w - { 0x44, 0x28, 0x10, 0x28, 0x44 }, // x - { 0x0c, 0x50, 0x50, 0x50, 0x3c }, // y - { 0x44, 0x64, 0x54, 0x4c, 0x44 }, // z - { 0x00, 0x08, 0x36, 0x41, 0x00 }, // { - { 0x00, 0x00, 0x7f, 0x00, 0x00 }, // | - { 0x00, 0x41, 0x36, 0x08, 0x00 }, // } - { 0x02, 0x01, 0x02, 0x04, 0x02 }, // ~ - { 0x02, 0x01, 0x02, 0x04, 0x02 }, // ~ -}; - -//***************************************************************************** -// -// The sequence of commands used to initialize the SSD0303 controller. Each -// command is described as follows: there is a byte specifying the number of -// bytes in the command sequence, followed by that many bytes of command data. -// Note: This initialization sequence is derived from OSRAM App Note AN018. -// -//***************************************************************************** -static const unsigned char g_pucOSRAM128x64x4Init[] = -{ - // - // Column Address - // - 4, 0x15, 0, 63, 0xe3, - - // - // Row Address - // - 4, 0x75, 0, 63, 0xe3, - - // - // Contrast Control - // - 3, 0x81, 50, 0xe3, - - // - // Half Current Range - // - 2, 0x85, 0xe3, - - // - // Display Re-map - // - 3, 0xA0, OSRAM_INIT_REMAP, 0xe3, - - // - // Display Start Line - // - 3, 0xA1, 0, 0xe3, - - // - // Display Offset - // - 3, 0xA2, OSRAM_INIT_OFFSET, 0xe3, - - // - // Display Mode Normal - // - 2, 0xA4, 0xe3, - - // - // Multiplex Ratio - // - 3, 0xA8, 63, 0xe3, - - // - // Phase Length - // - 3, 0xB1, 0x22, 0xe3, - - // - // Row Period - // - 3, 0xB2, 70, 0xe3, - - // - // Display Clock Divide - // - 3, 0xB3, 0xF1, 0xe3, - - // - // VSL - // - 3, 0xBF, 0x0D, 0xe3, - - // - // VCOMH - // - 3, 0xBE, 0x02, 0xe3, - - // - // VP - // - 3, 0xBC, 0x10, 0xe3, - - // - // Gamma - // - 10, 0xB8, 0x01, 0x11, 0x22, 0x32, 0x43, 0x54, 0x65, 0x76, 0xe3, - - // - // Set DC-DC - 3, 0xAD, 0x03, 0xe3, - - // - // Display ON/OFF - // - 2, 0xAF, 0xe3, -}; - -//***************************************************************************** -// -//! \internal -//! -//! Write a sequence of command bytes to the SSD0323 controller. -//! -//! The data is written in a polled fashion; this function will not return -//! until the entire byte sequence has been written to the controller. -//! -//! \return None. -// -//***************************************************************************** -static void -OSRAMWriteCommand(const unsigned char *pucBuffer, unsigned long ulCount) -{ - unsigned long ulTemp; - - // - // Return iff SSI port is not enabled for OSRAM. - // - if(!g_bSSIEnabled) - { - return; - } - - // - // Clear the command/control bit to enable command mode. - // - GPIOPinWrite(GPIO_PORTC_BASE, GPIO_PIN_7, 0); - - // - // Loop while there are more bytes left to be transferred. - // - while(ulCount != 0) - { - // - // Write the next byte to the controller. - // - SSIDataPut(SSI0_BASE, *pucBuffer++); - - // - // Dummy read to drain the fifo and time the GPIO signal. - // - SSIDataGet(SSI0_BASE, &ulTemp); - - // - // Decrement the BYTE counter. - // - ulCount--; - } -} - -//***************************************************************************** -// -//! \internal -//! -//! Write a sequence of data bytes to the SSD0323 controller. -//! -//! The data is written in a polled fashion; this function will not return -//! until the entire byte sequence has been written to the controller. -//! -//! \return None. -// -//***************************************************************************** -static void -OSRAMWriteData(const unsigned char *pucBuffer, unsigned long ulCount) -{ - unsigned long ulTemp; - - // - // Return iff SSI port is not enabled for OSRAM. - // - if(!g_bSSIEnabled) - { - return; - } - - // - // Set the command/control bit to enable data mode. - // - GPIOPinWrite(GPIO_PORTC_BASE, GPIO_PIN_7, GPIO_PIN_7); - - // - // Loop while there are more bytes left to be transferred. - // - while(ulCount != 0) - { - // - // Write the next byte to the controller. - // - SSIDataPut(SSI0_BASE, *pucBuffer++); - - // - // Dummy read to drain the fifo and time the GPIO signal. - // - SSIDataGet(SSI0_BASE, &ulTemp); - - // - // Decrement the BYTE counter. - // - ulCount--; - } -} - -//***************************************************************************** -// -//! Clears the OLED display. -//! -//! This function will clear the display RAM. All pixels in the display will -//! be turned off. -//! -//! This function is contained in osram128x64x4.c, with -//! osram128x64x4.h containing the API definition for use by -//! applications. -//! -//! \return None. -// -//***************************************************************************** -void -OSRAM128x64x4Clear(void) -{ - static const unsigned char pucCommand1[] = { 0x15, 0, 63 }; - static const unsigned char pucCommand2[] = { 0x75, 0, 79 }; - unsigned long ulRow, ulColumn; - static unsigned char pucZeroBuffer[8] = { 0, 0, 0, 0, 0, 0, 0, 0}; - - // - // Set the window to fill the entire display. - // - OSRAMWriteCommand(pucCommand1, sizeof(pucCommand1)); - OSRAMWriteCommand(pucCommand2, sizeof(pucCommand2)); - OSRAMWriteCommand(g_pucOSRAM128x64x4VerticalInc, - sizeof(g_pucOSRAM128x64x4VerticalInc)); - - // - // In vertical address increment mode, loop through each column, filling - // each row with 0. - // - for(ulColumn = 0; ulColumn < (128/2); ulColumn++) - { - // - // 8 rows (bytes) per row of text. - // - for(ulRow = 0; ulRow < 80; ulRow += 8) - { - OSRAMWriteData(pucZeroBuffer, sizeof(pucZeroBuffer)); - } - } -} - -//***************************************************************************** -// -//! Displays a string on the OLED display. -//! -//! \param pcStr is a pointer to the string to display. -//! \param ulX is the horizontal position to display the string, specified in -//! columns from the left edge of the display. -//! \param ulY is the vertical position to display the string, specified in -//! rows from the top edge of the display. -//! \param ucLevel is the 4-bit grey scale value to be used for displayed text. -//! -//! This function will draw a string on the display. Only the ASCII characters -//! between 32 (space) and 126 (tilde) are supported; other characters will -//! result in random data being draw on the display (based on whatever appears -//! before/after the font in memory). The font is mono-spaced, so characters -//! such as "i" and "l" have more white space around them than characters such -//! as "m" or "w". -//! -//! If the drawing of the string reaches the right edge of the display, no more -//! characters will be drawn. Therefore, special care is not required to avoid -//! supplying a string that is "too long" to display. -//! -//! This function is contained in osram128x64x4.c, with -//! osram128x64x4.h containing the API definition for use by -//! applications. -//! -//! \note Because the OLED display packs 2 pixels of data in a single byte, the -//! parameter \e ulX must be an even column number (e.g. 0, 2, 4, etc). -//! -//! \return None. -// -//***************************************************************************** -void -OSRAM128x64x4StringDraw(const char *pcStr, unsigned long ulX, - unsigned long ulY, unsigned char ucLevel) -{ - static unsigned char pucBuffer[8]; - unsigned long ulIdx1, ulIdx2; - unsigned char ucTemp; - - // - // Check the arguments. - // - ASSERT(ulX < 128); - ASSERT((ulX & 1) == 0); - ASSERT(ulY < 64); - ASSERT(ucLevel < 16); - - // - // Setup a window starting at the specified column and row, ending - // at the right edge of the display and 8 rows down (single character row). - // - pucBuffer[0] = 0x15; - pucBuffer[1] = ulX / 2; - pucBuffer[2] = 63; - OSRAMWriteCommand(pucBuffer, 3); - pucBuffer[0] = 0x75; - pucBuffer[1] = ulY; - pucBuffer[2] = ulY + 7; - OSRAMWriteCommand(pucBuffer, 3); - OSRAMWriteCommand(g_pucOSRAM128x64x4VerticalInc, - sizeof(g_pucOSRAM128x64x4VerticalInc)); - - // - // Loop while there are more characters in the string. - // - while(*pcStr != 0) - { - // - // Get a working copy of the current character and convert to an - // index into the character bit-map array. - // - ucTemp = *pcStr; - ucTemp &= 0x7F; - if(ucTemp < ' ') - { - ucTemp = ' '; - } - else - { - ucTemp -= ' '; - } - - // - // Build and display the character buffer. - // - for(ulIdx1 = 0; ulIdx1 < 3; ulIdx1++) - { - // - // Convert two columns of 1-bit font data into a single data - // byte column of 4-bit font data. - // - for(ulIdx2 = 0; ulIdx2 < 8; ulIdx2++) - { - pucBuffer[ulIdx2] = 0; - if(g_pucFont[ucTemp][ulIdx1*2] & (1 << ulIdx2)) - { - pucBuffer[ulIdx2] = ((ucLevel << 4) & 0xf0); - } - if((ulIdx1 < 2) && - (g_pucFont[ucTemp][ulIdx1*2+1] & (1 << ulIdx2))) - { - pucBuffer[ulIdx2] |= ((ucLevel << 0) & 0x0f); - } - } - - // - // If there is room, dump the single data byte column to the - // display. Otherwise, bail out. - // - if(ulX < 126) - { - OSRAMWriteData(pucBuffer, 8); - ulX += 2; - } - else - { - return; - } - } - - // - // Advance to the next character. - // - pcStr++; - } -} - -//***************************************************************************** -// -//! Displays an image on the OLED display. -//! -//! \param pucImage is a pointer to the image data. -//! \param ulX is the horizontal position to display this image, specified in -//! columns from the left edge of the display. -//! \param ulY is the vertical position to display this image, specified in -//! rows from the top of the display. -//! \param ulWidth is the width of the image, specified in columns. -//! \param ulHeight is the height of the image, specified in rows. -//! -//! This function will display a bitmap graphic on the display. Because of the -//! format of the display RAM, the starting column (/e ulX) and the number of -//! columns (/e ulWidth) must be an integer multiple of two. -//! -//! The image data is organized with the first row of image data appearing left -//! to right, followed immediately by the second row of image data. Each byte -//! contains the data for two columns in the current row, with the leftmost -//! column being contained in bits 7:4 and the rightmost column being contained -//! in bits 3:0. -//! -//! For example, an image six columns wide and seven scan lines tall would -//! be arranged as follows (showing how the twenty one bytes of the image would -//! appear on the display): -//! -//! \verbatim -//! +-------------------+-------------------+-------------------+ -//! | Byte 0 | Byte 1 | Byte 2 | -//! +---------+---------+---------+---------+---------+---------+ -//! | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | -//! +---------+---------+---------+---------+---------+---------+ -//! | Byte 3 | Byte 4 | Byte 5 | -//! +---------+---------+---------+---------+---------+---------+ -//! | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | -//! +---------+---------+---------+---------+---------+---------+ -//! | Byte 6 | Byte 7 | Byte 8 | -//! +---------+---------+---------+---------+---------+---------+ -//! | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | -//! +---------+---------+---------+---------+---------+---------+ -//! | Byte 9 | Byte 10 | Byte 11 | -//! +---------+---------+---------+---------+---------+---------+ -//! | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | -//! +---------+---------+---------+---------+---------+---------+ -//! | Byte 12 | Byte 13 | Byte 14 | -//! +---------+---------+---------+--3------+---------+---------+ -//! | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | -//! +---------+---------+---------+---------+---------+---------+ -//! | Byte 15 | Byte 16 | Byte 17 | -//! +---------+---------+---------+---------+---------+---------+ -//! | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | -//! +---------+---------+---------+---------+---------+---------+ -//! | Byte 18 | Byte 19 | Byte 20 | -//! +---------+---------+---------+---------+---------+---------+ -//! | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | -//! +---------+---------+---------+---------+---------+---------+ -//! \endverbatim -//! -//! This function is contained in osram128x64x4.c, with -//! osram128x64x4.h containing the API definition for use by` -//! applications. -//! -//! \return None. -// -//***************************************************************************** -void -OSRAM128x64x4ImageDraw(const unsigned char *pucImage, unsigned long ulX, - unsigned long ulY, unsigned long ulWidth, - unsigned long ulHeight) -{ - static unsigned char pucBuffer[8]; - - // - // Check the arguments. - // - ASSERT(ulX < 128); - ASSERT((ulX & 1) == 0); - ASSERT(ulY < 64); - ASSERT((ulX + ulWidth) <= 128); - ASSERT((ulY + ulHeight) <= 64); - ASSERT((ulWidth & 1) == 0); - - // - // Setup a window starting at the specified column and row, and ending - // at the column + width and row+height. - // - pucBuffer[0] = 0x15; - pucBuffer[1] = ulX / 2; - pucBuffer[2] = (ulX + ulWidth - 2) / 2; - OSRAMWriteCommand(pucBuffer, 3); - pucBuffer[0] = 0x75; - pucBuffer[1] = ulY; - pucBuffer[2] = ulY + ulHeight - 1; - OSRAMWriteCommand(pucBuffer, 3); - OSRAMWriteCommand(g_pucOSRAM128x64x4HorizontalInc, - sizeof(g_pucOSRAM128x64x4HorizontalInc)); - - // - // Loop while there are more rows to display. - // - while(ulHeight--) - { - // - // Write this row of image data. - // - OSRAMWriteData(pucImage, (ulWidth / 2)); - - // - // Advance to the next row of the image. - // - pucImage += (ulWidth / 2); - } -} - -//***************************************************************************** -// -//! Enable the SSI component of the OLED display driver. -//! -//! \param ulFrequency specifies the SSI Clock Frequency to be used. -//! -//! This function initializes the SSI interface to the OLED display. -//! -//! This function is contained in osram128x64x4.c, with -//! osram128x64x4.h containing the API definition for use by -//! applications. -//! -//! \return None. -// -//***************************************************************************** -void -OSRAM128x64x4Enable(unsigned long ulFrequency) -{ - unsigned long ulTemp; - - // - // Disable the SSI port. - // - SSIDisable(SSI0_BASE); - - // - // Configure the SSI0 port for master mode. - // - SSIConfig(SSI0_BASE, SSI_FRF_MOTO_MODE_2, SSI_MODE_MASTER, ulFrequency, 8); - - // - // (Re)Enable SSI control of the FSS pin. - // - GPIOPinTypeSSI(GPIO_PORTA_BASE, GPIO_PIN_3); - GPIOPadConfigSet(GPIO_PORTA_BASE, GPIO_PIN_3, GPIO_STRENGTH_8MA, - GPIO_PIN_TYPE_STD_WPU); - - // - // Enable the SSI port. - // - SSIEnable(SSI0_BASE); - - // - // Drain the receive fifo. - // - while(SSIDataNonBlockingGet(SSI0_BASE, &ulTemp) != 0) - { - } - - // - // Indicate that the OSRAM driver can use the SSI Port. - // - g_bSSIEnabled = true; -} - -//***************************************************************************** -// -//! Enable the SSI component of the OLED display driver. -//! -//! \param ulFrequency specifies the SSI Clock Frequency to be used. -//! -//! This function initializes the SSI interface to the OLED display. -//! -//! This function is contained in osram128x64x4.c, with -//! osram128x64x4.h containing the API definition for use by -//! applications. -//! -//! \return None. -// -//***************************************************************************** -void -OSRAM128x64x4Disable(void) -{ - unsigned long ulTemp; - - // - // Indicate that the OSRAM driver can no longer use the SSI Port. - // - g_bSSIEnabled = false; - - // - // Drain the receive fifo. - // - while(SSIDataNonBlockingGet(SSI0_BASE, &ulTemp) != 0) - { - } - - // - // Disable the SSI port. - // - SSIDisable(SSI0_BASE); - - // - // Disable SSI control of the FSS pin. - // - GPIODirModeSet(GPIO_PORTA_BASE, GPIO_PIN_3, GPIO_DIR_MODE_OUT); - GPIOPadConfigSet(GPIO_PORTA_BASE, GPIO_PIN_3, GPIO_STRENGTH_8MA, - GPIO_PIN_TYPE_STD_WPU); - GPIOPinWrite(GPIO_PORTA_BASE, GPIO_PIN_3, GPIO_PIN_3); - -} - -//***************************************************************************** -// -//! Initialize the OLED display. -//! -//! \param ulFrequency specifies the SSI Clock Frequency to be used. -//! -//! This function initializes the SSI interface to the OLED display and -//! configures the SSD0323 controller on the panel. -//! -//! This function is contained in osram128x64x4.c, with -//! osram128x64x4.h containing the API definition for use by -//! applications. -//! -//! \return None. -// -//***************************************************************************** -void -OSRAM128x64x4Init(unsigned long ulFrequency) -{ - unsigned long ulIdx; - - // - // Enable the SSI0 and GPIO port blocks as they are needed by this driver. - // - SysCtlPeripheralEnable(SYSCTL_PERIPH_SSI0); - SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA); - SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOC); - - // - // Configure the SSI0CLK and SSIOTX pins for SSI operation. - // - GPIOPinTypeSSI(GPIO_PORTA_BASE, GPIO_PIN_2 | GPIO_PIN_3 | GPIO_PIN_5); - GPIOPadConfigSet(GPIO_PORTA_BASE, GPIO_PIN_2, GPIO_STRENGTH_8MA, - GPIO_PIN_TYPE_STD_WPU); - GPIOPadConfigSet(GPIO_PORTA_BASE, GPIO_PIN_3, GPIO_STRENGTH_8MA, - GPIO_PIN_TYPE_STD_WPU); - GPIOPadConfigSet(GPIO_PORTA_BASE, GPIO_PIN_5, GPIO_STRENGTH_8MA, - GPIO_PIN_TYPE_STD_WPU); - - // - // Configure the PC7 pin as a D/Cn signal for OLED device. - // - GPIODirModeSet(GPIO_PORTC_BASE, GPIO_PIN_7, GPIO_DIR_MODE_OUT); - GPIOPadConfigSet(GPIO_PORTC_BASE, GPIO_PIN_7, GPIO_STRENGTH_8MA, - GPIO_PIN_TYPE_STD); - GPIOPinWrite(GPIO_PORTC_BASE, GPIO_PIN_7, GPIO_PIN_7); - - // - // Configure and enable the SSI0 port for master mode. - // - OSRAM128x64x4Enable(ulFrequency); - - // - // Clear the frame buffer. - // - OSRAM128x64x4Clear(); - - // - // Initialize the SSD0323 controller. Loop through the initialization - // sequence array, sending each command "string" to the controller. - // - for(ulIdx = 0; ulIdx < sizeof(g_pucOSRAM128x64x4Init); - ulIdx += g_pucOSRAM128x64x4Init[ulIdx] + 1) - { - // - // Send this command. - // - OSRAMWriteCommand(g_pucOSRAM128x64x4Init + ulIdx + 1, - g_pucOSRAM128x64x4Init[ulIdx] - 1); - } -} - -//***************************************************************************** -// -//! Turns on the OLED display. -//! -//! This function will turn on the OLED display, causing it to display the -//! contents of its internal frame buffer. -//! -//! This function is contained in osram128x64x4.c, with -//! osram128x64x4.h containing the API definition for use by -//! applications. -//! -//! \return None. -// -//***************************************************************************** -void -OSRAM128x64x4DisplayOn(void) -{ - unsigned long ulIdx; - - // - // Initialize the SSD0323 controller. Loop through the initialization - // sequence array, sending each command "string" to the controller. - // - for(ulIdx = 0; ulIdx < sizeof(g_pucOSRAM128x64x4Init); - ulIdx += g_pucOSRAM128x64x4Init[ulIdx] + 1) - { - // - // Send this command. - // - OSRAMWriteCommand(g_pucOSRAM128x64x4Init + ulIdx + 1, - g_pucOSRAM128x64x4Init[ulIdx] - 1); - } -} - -//***************************************************************************** -// -//! Turns off the OLED display. -//! -//! This function will turn off the OLED display. This will stop the scanning -//! of the panel and turn off the on-chip DC-DC converter, preventing damage to -//! the panel due to burn-in (it has similar characters to a CRT in this -//! respect). -//! -//! This function is contained in osram128x64x4.c, with -//! osram128x64x4.h containing the API definition for use by -//! applications. -//! -//! \return None. -// -//***************************************************************************** -void -OSRAM128x64x4DisplayOff(void) -{ - static const unsigned char pucCommand1[] = - { - 0xAE, 0xAD, 0x02 - }; - - // - // Turn off the DC-DC converter and the display. - // - OSRAMWriteCommand(pucCommand1, sizeof(pucCommand1)); -} - -//***************************************************************************** -// -// Close the Doxygen group. -//! @} -// -//***************************************************************************** diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/osram128x64x4.h b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/osram128x64x4.h deleted file mode 100644 index 2ba7cb956..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/osram128x64x4.h +++ /dev/null @@ -1,63 +0,0 @@ -//***************************************************************************** -// -// osram128x64x4.h - Prototypes for the driver for the OSRAM 128x64x4 graphical -// OLED display. -// -// Copyright (c) 2006-2007 Luminary Micro, Inc. All rights reserved. -// -// Software License Agreement -// -// Luminary Micro, Inc. (LMI) is supplying this software for use solely and -// exclusively on LMI's microcontroller products. -// -// The software is owned by LMI and/or its suppliers, and is protected under -// applicable copyright laws. All rights are reserved. Any use in violation -// of the foregoing restrictions may subject the user to criminal sanctions -// under applicable laws, as well as to civil liability for the breach of the -// terms and conditions of this license. -// -// THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED -// OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. -// LMI SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR -// CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. -// -// This is part of revision 1408 of the Stellaris Peripheral Driver Library. -// -//***************************************************************************** - -#ifndef __OSRAM128X64X4_H__ -#define __OSRAM128X64X4_H__ - -//***************************************************************************** -// -// Prototypes for the driver APIs. -// -//***************************************************************************** -extern void OSRAM128x64x4Clear(void); -extern void OSRAM128x64x4StringDraw(const char *pcStr, - unsigned long ulX, - unsigned long ulY, - unsigned char ucLevel); -extern void OSRAM128x64x4ImageDraw(const unsigned char *pucImage, - unsigned long ulX, - unsigned long ulY, - unsigned long ulWidth, - unsigned long ulHeight); -extern void OSRAM128x64x4Init(unsigned long ulFrequency); -extern void OSRAM128x64x4Enable(unsigned long ulFrequency); -extern void OSRAM128x64x4Disable(void); -extern void OSRAM128x64x4DisplayOn(void); -extern void OSRAM128x64x4DisplayOff(void); - -//***************************************************************************** -// -// The following macro(s) map old names for the OSRAM functions to the new -// names. In new code, the new names should be used in favor of the old names. -// -//***************************************************************************** -#ifndef DEPRECATED -#define OSRAM128x64x1InitSSI OSRAM128x64x4Enable -#endif - -#endif // __OSRAM128X64X4_H__ diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/rit128x96x4.c b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/rit128x96x4.c deleted file mode 100644 index cff38d557..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/rit128x96x4.c +++ /dev/null @@ -1,981 +0,0 @@ -//***************************************************************************** -// -// rit128x96x4.c - Driver for the RIT 128x96x4 graphical OLED display. -// -// Copyright (c) 2007 Luminary Micro, Inc. All rights reserved. -// -// Software License Agreement -// -// Luminary Micro, Inc. (LMI) is supplying this software for use solely and -// exclusively on LMI's microcontroller products. -// -// The software is owned by LMI and/or its suppliers, and is protected under -// applicable copyright laws. All rights are reserved. Any use in violation -// of the foregoing restrictions may subject the user to criminal sanctions -// under applicable laws, as well as to civil liability for the breach of the -// terms and conditions of this license. -// -// THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED -// OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. -// LMI SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR -// CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. -// -// This is part of revision 1504-conf of the Stellaris Peripheral Driver Library. -// -//***************************************************************************** - -//***************************************************************************** -// -//! \addtogroup ek_lm3sLM3S8962_api -//! @{ -// -//***************************************************************************** - -#include "hw_ssi.h" -#include "hw_memmap.h" -#include "hw_sysctl.h" -#include "hw_types.h" -#include "debug.h" -#include "gpio.h" -#include "ssi.h" -#include "sysctl.h" -#include "rit128x96x4.h" - -//***************************************************************************** -// -// Macros that define the peripheral, port, and pin used for the OLEDDC -// panel control signal. -// -//***************************************************************************** - -unsigned long ulGPIOId = 0, ulGPIOBase = 0, ulOLEDDC_PIN = 0, ulOLEDEN_PIN = 0; - -#define LM3S8962_SYSCTL_PERIPH_GPIO_OLEDDC SYSCTL_PERIPH_GPIOA -#define LM3S8962_GPIO_OLEDDC_BASE GPIO_PORTA_BASE -#define LM3S8962_GPIO_OLEDDC_PIN GPIO_PIN_6 -#define LM3S8962_GPIO_OLEDEN_PIN GPIO_PIN_7 - -#define LM3S1968_SYSCTL_PERIPH_GPIO_OLEDDC SYSCTL_PERIPH_GPIOH -#define LM3S1968_GPIO_OLEDDC_BASE GPIO_PORTH_BASE -#define LM3S1968_GPIO_OLEDDC_PIN GPIO_PIN_2 -#define LM3S1968_GPIO_OLEDEN_PIN GPIO_PIN_3 - - -//***************************************************************************** -// -// Flag to indicate if SSI port is enabled for display usage. -// -//***************************************************************************** -static volatile tBoolean g_bSSIEnabled = false; - -//***************************************************************************** -// -// Buffer for storing sequences of command and data for the display. -// -//***************************************************************************** -static unsigned char g_pucBuffer[8]; - -//***************************************************************************** -// -// Define the SSD1329 128x96x4 Remap Setting(s). This will be used in -// several places in the code to switch between vertical and horizontal -// address incrementing. Note that the controller support 128 rows while -// the RIT display only uses 96. -// -// The Remap Command (0xA0) takes one 8-bit parameter. The parameter is -// defined as follows. -// -// Bit 7: Reserved -// Bit 6: Disable(0)/Enable(1) COM Split Odd Even -// When enabled, the COM signals are split Odd on one side, even on -// the other. Otherwise, they are split 0-63 on one side, 64-127 on -// the other. -// Bit 5: Reserved -// Bit 4: Disable(0)/Enable(1) COM Remap -// When Enabled, ROW 0-127 map to COM 127-0 (i.e. reverse row order) -// Bit 3: Reserved -// Bit 2: Horizontal(0)/Vertical(1) Address Increment -// When set, data RAM address will increment along the column rather -// than along the row. -// Bit 1: Disable(0)/Enable(1) Nibble Remap -// When enabled, the upper and lower nibbles in the DATA bus for access -// to the data RAM are swapped. -// Bit 0: Disable(0)/Enable(1) Column Address Remap -// When enabled, DATA RAM columns 0-63 are remapped to Segment Columns -// 127-0. -// -//***************************************************************************** -#define RIT_INIT_REMAP 0x52 // app note says 0x51 -#define RIT_INIT_OFFSET 0x00 -static const unsigned char g_pucRIT128x96x4VerticalInc[] = { 0xA0, 0x56 }; -static const unsigned char g_pucRIT128x96x4HorizontalInc[] = { 0xA0, 0x52 }; - -//***************************************************************************** -// -// A 5x7 font (in a 6x8 cell, where the sixth column is omitted from this -// table) for displaying text on the OLED display. The data is organized as -// bytes from the left column to the right column, with each byte containing -// the top row in the LSB and the bottom row in the MSB. -// -// Note: This is the same font data that is used in the EK-LM3S811 -// osram96x16x1 driver. The single bit-per-pixel is expaned in the StringDraw -// function to the appropriate four bit-per-pixel gray scale format. -// -//***************************************************************************** -static const unsigned char g_pucFont[96][5] = -{ - { 0x00, 0x00, 0x00, 0x00, 0x00 }, // " " - { 0x00, 0x00, 0x4f, 0x00, 0x00 }, // ! - { 0x00, 0x07, 0x00, 0x07, 0x00 }, // " - { 0x14, 0x7f, 0x14, 0x7f, 0x14 }, // # - { 0x24, 0x2a, 0x7f, 0x2a, 0x12 }, // $ - { 0x23, 0x13, 0x08, 0x64, 0x62 }, // % - { 0x36, 0x49, 0x55, 0x22, 0x50 }, // & - { 0x00, 0x05, 0x03, 0x00, 0x00 }, // ' - { 0x00, 0x1c, 0x22, 0x41, 0x00 }, // ( - { 0x00, 0x41, 0x22, 0x1c, 0x00 }, // ) - { 0x14, 0x08, 0x3e, 0x08, 0x14 }, // * - { 0x08, 0x08, 0x3e, 0x08, 0x08 }, // + - { 0x00, 0x50, 0x30, 0x00, 0x00 }, // , - { 0x08, 0x08, 0x08, 0x08, 0x08 }, // - - { 0x00, 0x60, 0x60, 0x00, 0x00 }, // . - { 0x20, 0x10, 0x08, 0x04, 0x02 }, // / - { 0x3e, 0x51, 0x49, 0x45, 0x3e }, // 0 - { 0x00, 0x42, 0x7f, 0x40, 0x00 }, // 1 - { 0x42, 0x61, 0x51, 0x49, 0x46 }, // 2 - { 0x21, 0x41, 0x45, 0x4b, 0x31 }, // 3 - { 0x18, 0x14, 0x12, 0x7f, 0x10 }, // 4 - { 0x27, 0x45, 0x45, 0x45, 0x39 }, // 5 - { 0x3c, 0x4a, 0x49, 0x49, 0x30 }, // 6 - { 0x01, 0x71, 0x09, 0x05, 0x03 }, // 7 - { 0x36, 0x49, 0x49, 0x49, 0x36 }, // 8 - { 0x06, 0x49, 0x49, 0x29, 0x1e }, // 9 - { 0x00, 0x36, 0x36, 0x00, 0x00 }, // : - { 0x00, 0x56, 0x36, 0x00, 0x00 }, // ; - { 0x08, 0x14, 0x22, 0x41, 0x00 }, // < - { 0x14, 0x14, 0x14, 0x14, 0x14 }, // = - { 0x00, 0x41, 0x22, 0x14, 0x08 }, // > - { 0x02, 0x01, 0x51, 0x09, 0x06 }, // ? - { 0x32, 0x49, 0x79, 0x41, 0x3e }, // @ - { 0x7e, 0x11, 0x11, 0x11, 0x7e }, // A - { 0x7f, 0x49, 0x49, 0x49, 0x36 }, // B - { 0x3e, 0x41, 0x41, 0x41, 0x22 }, // C - { 0x7f, 0x41, 0x41, 0x22, 0x1c }, // D - { 0x7f, 0x49, 0x49, 0x49, 0x41 }, // E - { 0x7f, 0x09, 0x09, 0x09, 0x01 }, // F - { 0x3e, 0x41, 0x49, 0x49, 0x7a }, // G - { 0x7f, 0x08, 0x08, 0x08, 0x7f }, // H - { 0x00, 0x41, 0x7f, 0x41, 0x00 }, // I - { 0x20, 0x40, 0x41, 0x3f, 0x01 }, // J - { 0x7f, 0x08, 0x14, 0x22, 0x41 }, // K - { 0x7f, 0x40, 0x40, 0x40, 0x40 }, // L - { 0x7f, 0x02, 0x0c, 0x02, 0x7f }, // M - { 0x7f, 0x04, 0x08, 0x10, 0x7f }, // N - { 0x3e, 0x41, 0x41, 0x41, 0x3e }, // O - { 0x7f, 0x09, 0x09, 0x09, 0x06 }, // P - { 0x3e, 0x41, 0x51, 0x21, 0x5e }, // Q - { 0x7f, 0x09, 0x19, 0x29, 0x46 }, // R - { 0x46, 0x49, 0x49, 0x49, 0x31 }, // S - { 0x01, 0x01, 0x7f, 0x01, 0x01 }, // T - { 0x3f, 0x40, 0x40, 0x40, 0x3f }, // U - { 0x1f, 0x20, 0x40, 0x20, 0x1f }, // V - { 0x3f, 0x40, 0x38, 0x40, 0x3f }, // W - { 0x63, 0x14, 0x08, 0x14, 0x63 }, // X - { 0x07, 0x08, 0x70, 0x08, 0x07 }, // Y - { 0x61, 0x51, 0x49, 0x45, 0x43 }, // Z - { 0x00, 0x7f, 0x41, 0x41, 0x00 }, // [ - { 0x02, 0x04, 0x08, 0x10, 0x20 }, // "\" - { 0x00, 0x41, 0x41, 0x7f, 0x00 }, // ] - { 0x04, 0x02, 0x01, 0x02, 0x04 }, // ^ - { 0x40, 0x40, 0x40, 0x40, 0x40 }, // _ - { 0x00, 0x01, 0x02, 0x04, 0x00 }, // ` - { 0x20, 0x54, 0x54, 0x54, 0x78 }, // a - { 0x7f, 0x48, 0x44, 0x44, 0x38 }, // b - { 0x38, 0x44, 0x44, 0x44, 0x20 }, // c - { 0x38, 0x44, 0x44, 0x48, 0x7f }, // d - { 0x38, 0x54, 0x54, 0x54, 0x18 }, // e - { 0x08, 0x7e, 0x09, 0x01, 0x02 }, // f - { 0x0c, 0x52, 0x52, 0x52, 0x3e }, // g - { 0x7f, 0x08, 0x04, 0x04, 0x78 }, // h - { 0x00, 0x44, 0x7d, 0x40, 0x00 }, // i - { 0x20, 0x40, 0x44, 0x3d, 0x00 }, // j - { 0x7f, 0x10, 0x28, 0x44, 0x00 }, // k - { 0x00, 0x41, 0x7f, 0x40, 0x00 }, // l - { 0x7c, 0x04, 0x18, 0x04, 0x78 }, // m - { 0x7c, 0x08, 0x04, 0x04, 0x78 }, // n - { 0x38, 0x44, 0x44, 0x44, 0x38 }, // o - { 0x7c, 0x14, 0x14, 0x14, 0x08 }, // p - { 0x08, 0x14, 0x14, 0x18, 0x7c }, // q - { 0x7c, 0x08, 0x04, 0x04, 0x08 }, // r - { 0x48, 0x54, 0x54, 0x54, 0x20 }, // s - { 0x04, 0x3f, 0x44, 0x40, 0x20 }, // t - { 0x3c, 0x40, 0x40, 0x20, 0x7c }, // u - { 0x1c, 0x20, 0x40, 0x20, 0x1c }, // v - { 0x3c, 0x40, 0x30, 0x40, 0x3c }, // w - { 0x44, 0x28, 0x10, 0x28, 0x44 }, // x - { 0x0c, 0x50, 0x50, 0x50, 0x3c }, // y - { 0x44, 0x64, 0x54, 0x4c, 0x44 }, // z - { 0x00, 0x08, 0x36, 0x41, 0x00 }, // { - { 0x00, 0x00, 0x7f, 0x00, 0x00 }, // | - { 0x00, 0x41, 0x36, 0x08, 0x00 }, // } - { 0x02, 0x01, 0x02, 0x04, 0x02 }, // ~ - { 0x02, 0x01, 0x02, 0x04, 0x02 }, // ~ -}; - -//***************************************************************************** -// -// The sequence of commands used to initialize the SSD1329 controller. Each -// command is described as follows: there is a byte specifying the number of -// bytes in the command sequence, followed by that many bytes of command data. -// Note: This initialization sequence is derived from RIT App Note for -// the P14201. Values used are from the RIT app note, except where noted. -// -//***************************************************************************** -static const unsigned char g_pucRIT128x96x4Init[] = -{ - // - // Unlock commands - // - 3, 0xFD, 0x12, 0xe3, - - // - // Display off - // - 2, 0xAE, 0xe3, - - // - // Icon off - // - 3, 0x94, 0, 0xe3, - - // - // Multiplex ratio - // - 3, 0xA8, 95, 0xe3, - - // - // Contrast - // - 3, 0x81, 0xb7, 0xe3, - - // - // Pre-charge current - // - 3, 0x82, 0x3f, 0xe3, - - // - // Display Re-map - // - 3, 0xA0, RIT_INIT_REMAP, 0xe3, - - // - // Display Start Line - // - 3, 0xA1, 0, 0xe3, - - // - // Display Offset - // - 3, 0xA2, RIT_INIT_OFFSET, 0xe3, - - // - // Display Mode Normal - // - 2, 0xA4, 0xe3, - - // - // Phase Length - // - 3, 0xB1, 0x11, 0xe3, - - // - // Frame frequency - // - 3, 0xB2, 0x23, 0xe3, - - // - // Front Clock Divider - // - 3, 0xB3, 0xe2, 0xe3, - - // - // Set gray scale table. App note uses default command: - // 2, 0xB7, 0xe3 - // This gray scale attempts some gamma correction to reduce the - // the brightness of the low levels. - // - 17, 0xB8, 1, 2, 3, 4, 5, 6, 8, 10, 12, 14, 16, 19, 22, 26, 30, 0xe3, - - // - // Second pre-charge period. App note uses value 0x04. - // - 3, 0xBB, 0x01, 0xe3, - - // - // Pre-charge voltage - // - 3, 0xBC, 0x3f, 0xe3, - - // - // Display ON - // - 2, 0xAF, 0xe3, -}; - -//***************************************************************************** -// -//! \internal -//! -//! Write a sequence of command bytes to the SSD1329 controller. -//! -//! The data is written in a polled fashion; this function will not return -//! until the entire byte sequence has been written to the controller. -//! -//! \return None. -// -//***************************************************************************** -static void -RITWriteCommand(const unsigned char *pucBuffer, unsigned long ulCount) -{ - unsigned long ulTemp; - - // - // Return if SSI port is not enabled for RIT display. - // - if(!g_bSSIEnabled) - { - return; - } - - // - // Clear the command/control bit to enable command mode. - // - GPIOPinWrite(ulGPIOBase, ulOLEDDC_PIN, 0); - - // - // Loop while there are more bytes left to be transferred. - // - while(ulCount != 0) - { - // - // Write the next byte to the controller. - // - SSIDataPut(SSI0_BASE, *pucBuffer++); - - // - // Dummy read to drain the fifo and time the GPIO signal. - // - SSIDataGet(SSI0_BASE, &ulTemp); - - // - // Decrement the BYTE counter. - // - ulCount--; - } -} - -//***************************************************************************** -// -//! \internal -//! -//! Write a sequence of data bytes to the SSD1329 controller. -//! -//! The data is written in a polled fashion; this function will not return -//! until the entire byte sequence has been written to the controller. -//! -//! \return None. -// -//***************************************************************************** -static void -RITWriteData(const unsigned char *pucBuffer, unsigned long ulCount) -{ - unsigned long ulTemp; - - // - // Return if SSI port is not enabled for RIT display. - // - if(!g_bSSIEnabled) - { - return; - } - - // - // Set the command/control bit to enable data mode. - // - GPIOPinWrite(ulGPIOBase, ulOLEDDC_PIN, ulOLEDDC_PIN); - - // - // Loop while there are more bytes left to be transferred. - // - while(ulCount != 0) - { - // - // Write the next byte to the controller. - // - SSIDataPut(SSI0_BASE, *pucBuffer++); - - // - // Dummy read to drain the fifo and time the GPIO signal. - // - SSIDataGet(SSI0_BASE, &ulTemp); - - // - // Decrement the BYTE counter. - // - ulCount--; - } -} - -//***************************************************************************** -// -//! Clears the OLED display. -//! -//! This function will clear the display RAM. All pixels in the display will -//! be turned off. -//! -//! This function is contained in rit128x96x4.c, with -//! rit128x96x4.h containing the API definition for use by -//! applications. -//! -//! \return None. -// -//***************************************************************************** -void -RIT128x96x4Clear(void) -{ - static const unsigned char pucCommand1[] = { 0x15, 0, 63 }; - static const unsigned char pucCommand2[] = { 0x75, 0, 127 }; - unsigned long ulRow, ulColumn; - - // - // Clear out the buffer used for sending bytes to the display. - *(unsigned long *)&g_pucBuffer[0] = 0; - *(unsigned long *)&g_pucBuffer[4] = 0; - - // - // Set the window to fill the entire display. - // - RITWriteCommand(pucCommand1, sizeof(pucCommand1)); - RITWriteCommand(pucCommand2, sizeof(pucCommand2)); - RITWriteCommand(g_pucRIT128x96x4HorizontalInc, - sizeof(g_pucRIT128x96x4HorizontalInc)); - - // - // Loop through the rows - // - for(ulRow = 0; ulRow < 96; ulRow++) - { - // - // Loop through the columns. Each byte is two pixels, - // and the buffer hold 8 bytes, so 16 pixels are cleared - // at a time. - // - for(ulColumn = 0; ulColumn < 128; ulColumn += 8 * 2) - { - // - // Write 8 clearing bytes to the display, which will - // clear 16 pixels across. - // - RITWriteData(g_pucBuffer, sizeof(g_pucBuffer)); - } - } -} - -//***************************************************************************** -// -//! Displays a string on the OLED display. -//! -//! \param pcStr is a pointer to the string to display. -//! \param ulX is the horizontal position to display the string, specified in -//! columns from the left edge of the display. -//! \param ulY is the vertical position to display the string, specified in -//! rows from the top edge of the display. -//! \param ucLevel is the 4-bit grey scale value to be used for displayed text. -//! -//! This function will draw a string on the display. Only the ASCII characters -//! between 32 (space) and 126 (tilde) are supported; other characters will -//! result in random data being draw on the display (based on whatever appears -//! before/after the font in memory). The font is mono-spaced, so characters -//! such as "i" and "l" have more white space around them than characters such -//! as "m" or "w". -//! -//! If the drawing of the string reaches the right edge of the display, no more -//! characters will be drawn. Therefore, special care is not required to avoid -//! supplying a string that is "too long" to display. -//! -//! This function is contained in rit128x96x4.c, with -//! rit128x96x4.h containing the API definition for use by -//! applications. -//! -//! \note Because the OLED display packs 2 pixels of data in a single byte, the -//! parameter \e ulX must be an even column number (e.g. 0, 2, 4, etc). -//! -//! \return None. -// -//***************************************************************************** -void -RIT128x96x4StringDraw(const char *pcStr, unsigned long ulX, - unsigned long ulY, unsigned char ucLevel) -{ - unsigned long ulIdx1, ulIdx2; - unsigned char ucTemp; - - // - // Check the arguments. - // - ASSERT(ulX < 128); - ASSERT((ulX & 1) == 0); - ASSERT(ulY < 96); - ASSERT(ucLevel < 16); - - // - // Setup a window starting at the specified column and row, ending - // at the right edge of the display and 8 rows down (single character row). - // - g_pucBuffer[0] = 0x15; - g_pucBuffer[1] = ulX / 2; - g_pucBuffer[2] = 63; - RITWriteCommand(g_pucBuffer, 3); - g_pucBuffer[0] = 0x75; - g_pucBuffer[1] = ulY; - g_pucBuffer[2] = ulY + 7; - RITWriteCommand(g_pucBuffer, 3); - RITWriteCommand(g_pucRIT128x96x4VerticalInc, - sizeof(g_pucRIT128x96x4VerticalInc)); - - // - // Loop while there are more characters in the string. - // - while(*pcStr != 0) - { - // - // Get a working copy of the current character and convert to an - // index into the character bit-map array. - // - ucTemp = *pcStr; - ucTemp &= 0x7F; - if(ucTemp < ' ') - { - ucTemp = ' '; - } - else - { - ucTemp -= ' '; - } - - // - // Build and display the character buffer. - // - for(ulIdx1 = 0; ulIdx1 < 3; ulIdx1++) - { - // - // Convert two columns of 1-bit font data into a single data - // byte column of 4-bit font data. - // - for(ulIdx2 = 0; ulIdx2 < 8; ulIdx2++) - { - g_pucBuffer[ulIdx2] = 0; - if(g_pucFont[ucTemp][ulIdx1*2] & (1 << ulIdx2)) - { - g_pucBuffer[ulIdx2] = ((ucLevel << 4) & 0xf0); - } - if((ulIdx1 < 2) && - (g_pucFont[ucTemp][ulIdx1*2+1] & (1 << ulIdx2))) - { - g_pucBuffer[ulIdx2] |= ((ucLevel << 0) & 0x0f); - } - } - - // - // If there is room, dump the single data byte column to the - // display. Otherwise, bail out. - // - if(ulX < 126) - { - RITWriteData(g_pucBuffer, 8); - ulX += 2; - } - else - { - return; - } - } - - // - // Advance to the next character. - // - pcStr++; - } -} - -//***************************************************************************** -// -//! Displays an image on the OLED display. -//! -//! \param pucImage is a pointer to the image data. -//! \param ulX is the horizontal position to display this image, specified in -//! columns from the left edge of the display. -//! \param ulY is the vertical position to display this image, specified in -//! rows from the top of the display. -//! \param ulWidth is the width of the image, specified in columns. -//! \param ulHeight is the height of the image, specified in rows. -//! -//! This function will display a bitmap graphic on the display. Because of the -//! format of the display RAM, the starting column (\e ulX) and the number of -//! columns (\e ulWidth) must be an integer multiple of two. -//! -//! The image data is organized with the first row of image data appearing left -//! to right, followed immediately by the second row of image data. Each byte -//! contains the data for two columns in the current row, with the leftmost -//! column being contained in bits 7:4 and the rightmost column being contained -//! in bits 3:0. -//! -//! For example, an image six columns wide and seven scan lines tall would -//! be arranged as follows (showing how the twenty one bytes of the image would -//! appear on the display): -//! -//! \verbatim -//! +-------------------+-------------------+-------------------+ -//! | Byte 0 | Byte 1 | Byte 2 | -//! +---------+---------+---------+---------+---------+---------+ -//! | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | -//! +---------+---------+---------+---------+---------+---------+ -//! | Byte 3 | Byte 4 | Byte 5 | -//! +---------+---------+---------+---------+---------+---------+ -//! | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | -//! +---------+---------+---------+---------+---------+---------+ -//! | Byte 6 | Byte 7 | Byte 8 | -//! +---------+---------+---------+---------+---------+---------+ -//! | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | -//! +---------+---------+---------+---------+---------+---------+ -//! | Byte 9 | Byte 10 | Byte 11 | -//! +---------+---------+---------+---------+---------+---------+ -//! | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | -//! +---------+---------+---------+---------+---------+---------+ -//! | Byte 12 | Byte 13 | Byte 14 | -//! +---------+---------+---------+---------+---------+---------+ -//! | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | -//! +---------+---------+---------+---------+---------+---------+ -//! | Byte 15 | Byte 16 | Byte 17 | -//! +---------+---------+---------+---------+---------+---------+ -//! | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | -//! +---------+---------+---------+---------+---------+---------+ -//! | Byte 18 | Byte 19 | Byte 20 | -//! +---------+---------+---------+---------+---------+---------+ -//! | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | -//! +---------+---------+---------+---------+---------+---------+ -//! \endverbatim -//! -//! This function is contained in rit128x96x4.c, with -//! rit128x96x4.h containing the API definition for use by -//! applications. -//! -//! \return None. -// -//***************************************************************************** -void -RIT128x96x4ImageDraw(const unsigned char *pucImage, unsigned long ulX, - unsigned long ulY, unsigned long ulWidth, - unsigned long ulHeight) -{ - // - // Check the arguments. - // - ASSERT(ulX < 128); - ASSERT((ulX & 1) == 0); - ASSERT(ulY < 96); - ASSERT((ulX + ulWidth) <= 128); - ASSERT((ulY + ulHeight) <= 96); - ASSERT((ulWidth & 1) == 0); - - // - // Setup a window starting at the specified column and row, and ending - // at the column + width and row+height. - // - g_pucBuffer[0] = 0x15; - g_pucBuffer[1] = ulX / 2; - g_pucBuffer[2] = (ulX + ulWidth - 2) / 2; - RITWriteCommand(g_pucBuffer, 3); - g_pucBuffer[0] = 0x75; - g_pucBuffer[1] = ulY; - g_pucBuffer[2] = ulY + ulHeight - 1; - RITWriteCommand(g_pucBuffer, 3); - RITWriteCommand(g_pucRIT128x96x4HorizontalInc, - sizeof(g_pucRIT128x96x4HorizontalInc)); - - // - // Loop while there are more rows to display. - // - while(ulHeight--) - { - // - // Write this row of image data. - // - RITWriteData(pucImage, (ulWidth / 2)); - - // - // Advance to the next row of the image. - // - pucImage += (ulWidth / 2); - } -} - -//***************************************************************************** -// -//! Enable the SSI component of the OLED display driver. -//! -//! \param ulFrequency specifies the SSI Clock Frequency to be used. -//! -//! This function initializes the SSI interface to the OLED display. -//! -//! This function is contained in rit128x96x4.c, with -//! rit128x96x4.h containing the API definition for use by -//! applications. -//! -//! \return None. -// -//***************************************************************************** -void -RIT128x96x4Enable(unsigned long ulFrequency) -{ - unsigned long ulTemp; - - // - // Disable the SSI port. - // - SSIDisable(SSI0_BASE); - - // - // Configure the SSI0 port for master mode. - // - SSIConfig(SSI0_BASE, SSI_FRF_MOTO_MODE_2, SSI_MODE_MASTER, ulFrequency, 8); - - // - // (Re)Enable SSI control of the FSS pin. - // - GPIOPinTypeSSI(GPIO_PORTA_BASE, GPIO_PIN_3); - GPIOPadConfigSet(GPIO_PORTA_BASE, GPIO_PIN_3, GPIO_STRENGTH_8MA, - GPIO_PIN_TYPE_STD_WPU); - - // - // Enable the SSI port. - // - SSIEnable(SSI0_BASE); - - // - // Drain the receive fifo. - // - while(SSIDataNonBlockingGet(SSI0_BASE, &ulTemp) != 0) - { - } - - // - // Indicate that the RIT driver can use the SSI Port. - // - g_bSSIEnabled = true; -} - -//***************************************************************************** -// -//! Enable the SSI component of the OLED display driver. -//! -//! This function initializes the SSI interface to the OLED display. -//! -//! This function is contained in rit128x96x4.c, with -//! rit128x96x4.h containing the API definition for use by -//! applications. -//! -//! \return None. -// -//***************************************************************************** -void -RIT128x96x4Disable(void) -{ - unsigned long ulTemp; - - // - // Indicate that the RIT driver can no longer use the SSI Port. - // - g_bSSIEnabled = false; - - // - // Drain the receive fifo. - // - while(SSIDataNonBlockingGet(SSI0_BASE, &ulTemp) != 0) - { - } - - // - // Disable the SSI port. - // - SSIDisable(SSI0_BASE); - - // - // Disable SSI control of the FSS pin. - // - GPIOPinTypeGPIOOutput(GPIO_PORTA_BASE, GPIO_PIN_3); - GPIOPadConfigSet(GPIO_PORTA_BASE, GPIO_PIN_3, GPIO_STRENGTH_8MA, - GPIO_PIN_TYPE_STD_WPU); - GPIOPinWrite(GPIO_PORTA_BASE, GPIO_PIN_3, GPIO_PIN_3); -} - -//***************************************************************************** -// -//! Initialize the OLED display. -//! -//! \param ulFrequency specifies the SSI Clock Frequency to be used. -//! -//! This function initializes the SSI interface to the OLED display and -//! configures the SSD1329 controller on the panel. -//! -//! This function is contained in rit128x96x4.c, with -//! rit128x96x4.h containing the API definition for use by -//! applications. -//! -//! \return None. -// -//***************************************************************************** -void -RIT128x96x4Init(unsigned long ulFrequency) -{ - unsigned long ulIdx; - - - /* Determine which board is being used. */ - if( SysCtlPeripheralPresent( SYSCTL_PERIPH_ETH ) ) - { - /* Ethernet is present, we must be using the LM3S8962 EK. */ - ulGPIOId = LM3S8962_SYSCTL_PERIPH_GPIO_OLEDDC; - ulGPIOBase = LM3S8962_GPIO_OLEDDC_BASE; - ulOLEDDC_PIN = GPIO_PIN_6; - ulOLEDEN_PIN = GPIO_PIN_7; - } - else - { - /* Ethernet is not present, we must be using the LM3S1968 EK. */ - ulGPIOId = LM3S1968_SYSCTL_PERIPH_GPIO_OLEDDC; - ulGPIOBase = LM3S1968_GPIO_OLEDDC_BASE; - ulOLEDDC_PIN = GPIO_PIN_2; - ulOLEDEN_PIN = GPIO_PIN_3; - } - - // - // Enable the SSI0 and GPIO port blocks as they are needed by this driver. - // - SysCtlPeripheralEnable(SYSCTL_PERIPH_SSI0); - SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA); - SysCtlPeripheralEnable(ulGPIOId); - - // - // Configure the SSI0CLK and SSIOTX pins for SSI operation. - // - GPIOPinTypeSSI(GPIO_PORTA_BASE, GPIO_PIN_2 | GPIO_PIN_3 | GPIO_PIN_5); - GPIOPadConfigSet(GPIO_PORTA_BASE, GPIO_PIN_2 | GPIO_PIN_3 | GPIO_PIN_5, - GPIO_STRENGTH_8MA, GPIO_PIN_TYPE_STD_WPU); - - // - // Configure the GPIO port pin used as a D/Cn signal for OLED device, - // and the port pin used to enable power to the OLED panel. - // - GPIOPinTypeGPIOOutput(ulGPIOBase, ulOLEDDC_PIN | ulOLEDEN_PIN); - GPIOPadConfigSet(ulGPIOBase, ulOLEDDC_PIN | ulOLEDEN_PIN, - GPIO_STRENGTH_8MA, GPIO_PIN_TYPE_STD); - GPIOPinWrite(ulGPIOBase, ulOLEDDC_PIN | ulOLEDEN_PIN, - ulOLEDDC_PIN | ulOLEDEN_PIN); - - // - // Configure and enable the SSI0 port for master mode. - // - RIT128x96x4Enable(ulFrequency); - - // - // Clear the frame buffer. - // - RIT128x96x4Clear(); - - // - // Initialize the SSD1329 controller. Loop through the initialization - // sequence array, sending each command "string" to the controller. - // - for(ulIdx = 0; ulIdx < sizeof(g_pucRIT128x96x4Init); - ulIdx += g_pucRIT128x96x4Init[ulIdx] + 1) - { - // - // Send this command. - // - RITWriteCommand(g_pucRIT128x96x4Init + ulIdx + 1, - g_pucRIT128x96x4Init[ulIdx] - 1); - } -} - -//***************************************************************************** -// -//! Turns on the OLED display. -//! -//! This function will turn on the OLED display, causing it to display the -//! contents of its internal frame buffer. -//! -//! This function is contained in rit128x96x4.c, with -//! rit128x96x4.h containing the API definition for use by -//! applications. -//! -//! \return None. -// -//***************************************************************************** -void -RIT128x96x4DisplayOn(void) -{ - unsigned long ulIdx; - - // - // Initialize the SSD1329 controller. Loop through the initialization - // sequence array, sending each command "string" to the controller. - // - for(ulIdx = 0; ulIdx < sizeof(g_pucRIT128x96x4Init); - ulIdx += g_pucRIT128x96x4Init[ulIdx] + 1) - { - // - // Send this command. - // - RITWriteCommand(g_pucRIT128x96x4Init + ulIdx + 1, - g_pucRIT128x96x4Init[ulIdx] - 1); - } -} - -//***************************************************************************** -// -//! Turns off the OLED display. -//! -//! This function will turn off the OLED display. This will stop the scanning -//! of the panel and turn off the on-chip DC-DC converter, preventing damage to -//! the panel due to burn-in (it has similar characters to a CRT in this -//! respect). -//! -//! This function is contained in rit128x96x4.c, with -//! rit128x96x4.h containing the API definition for use by -//! applications. -//! -//! \return None. -// -//***************************************************************************** -void -RIT128x96x4DisplayOff(void) -{ - static const unsigned char pucCommand1[] = - { - 0xAE, 0xe3 - }; - - // - // Put the display to sleep. - // - RITWriteCommand(pucCommand1, sizeof(pucCommand1)); -} - -//***************************************************************************** -// -// Close the Doxygen group. -//! @} -// -//***************************************************************************** diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/settings/RTOSDemo.cspy.bat b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/settings/RTOSDemo.cspy.bat deleted file mode 100644 index 9d325f6a3..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/settings/RTOSDemo.cspy.bat +++ /dev/null @@ -1,24 +0,0 @@ -@REM This batch file has been generated by the IAR Embedded Workbench -@REM C-SPY Debugger, as an aid to preparing a command line for running -@REM the cspybat command line utility using the appropriate settings. -@REM -@REM Note that this file is generated every time a new debug session -@REM is initialized, so you may want to move or rename the file before -@REM making changes. -@REM -@REM You can launch cspybat by typing the name of this batch file followed -@REM by the name of the debug file (usually an ELF/DWARF or UBROF file). -@REM -@REM Read about available command line parameters in the C-SPY Debugging -@REM Guide. Hints about additional command line parameters that may be -@REM useful in specific cases: -@REM --download_only Downloads a code image without starting a debug -@REM session afterwards. -@REM --silent Omits the sign-on message. -@REM --timeout Limits the maximum allowed execution time. -@REM - - -"C:\devtools\IAR Systems\Embedded Workbench 6.5\common\bin\cspybat" "C:\devtools\IAR Systems\Embedded Workbench 6.5\arm\bin\armproc.dll" "C:\devtools\IAR Systems\Embedded Workbench 6.5\arm\bin\armlmiftdi.dll" %1 --plugin "C:\devtools\IAR Systems\Embedded Workbench 6.5\arm\bin\armbat.dll" --flash_loader "C:\devtools\IAR Systems\Embedded Workbench 6.5\arm\config\flashloader\TexasInstruments\FlashLM3Sx8xx.board" --backend -B "--endian=little" "--cpu=Cortex-M3" "--fpu=None" "-p" "C:\devtools\IAR Systems\Embedded Workbench 6.5\arm\CONFIG\debugger\TexasInstruments\LM3S6965.ddf" "--drv_verify_download" "--semihosting=none" "--device=LM3S6965" "--lmiftdi_speed=500" - - diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/settings/RTOSDemo.dbgdt b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/settings/RTOSDemo.dbgdt deleted file mode 100644 index 373cdbf9d..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/settings/RTOSDemo.dbgdt +++ /dev/null @@ -1,1604 +0,0 @@ - - - - - - - 3 - 0 - 0 - - - 20 - 1622 - - - 20 - 1006 - 268 - 67 - - 3 - 0 - 0 - - - Debug-Log - - - Breakpoints - - - - - - - 148 - 27 - 27 - 27 - - - - - 2 - 0 - 0 - - - 1 - 0 - - Disassembly - _I0 - - - 500 - 20 - - - 0 - 0 - - - - - - - - - - 2 - 0 - 0 - - - 100 - 100 - 100 - 100 - - - - 3 - 0 - 0 - - - 200 - 100 - 100 - 100 - 100 - 100 - 100 - 100 - 150 - - - 300 - 100 - 100 - 100 - 100 - 100 - 100 - - - - 3 - 0 - 0 - - - Debug-Log - - - Build - - - - - - - - - - TabID-21213-12021 - Workspace - Workspace - - - RTOSDemo - RTOSDemo/Demo files - RTOSDemo/Scheduler files - RTOSDemo/System files - RTOSDemo/uIP files - - - - - 0 - - - - - TabID-21977-24465 - Disassembly - Disassembly - - - - 0 - - - - - TabID-19886-24505 - Queues - QUEUEVIEW - - - - 0 - - - - - TabID-3889-27875 - Debug Log - Debug-Log - - - - 0 - - - - - - TextEditor - $WS_DIR$\main.c - 0 - 0 - 0 - 0 - 0 - 240 - 10549 - 10549 - - 0 - - TextEditor - $WS_DIR$\..\..\Source\list.c - 0 - 0 - 0 - 0 - 0 - 109 - 6001 - 6001 - - - TextEditor - $WS_DIR$\FreeRTOSConfig.h - 0 - 0 - 0 - 0 - 0 - 65 - 5070 - 5070 - - - TextEditor - $WS_DIR$\..\..\Source\queue.c - 0 - 0 - 0 - 0 - 0 - 2129 - 66681 - 66681 - - - TextEditor - $WS_DIR$\..\Common\Minimal\GenQTest.c - 0 - 0 - 0 - 0 - 0 - 149 - 8126 - 8126 - - - TextEditor - $WS_DIR$\..\Common\Minimal\semtest.c - 0 - 0 - 0 - 0 - 0 - 225 - 10789 - 10789 - - - TextEditor - $WS_DIR$\..\..\Source\timers.c - 0 - 0 - 0 - 0 - 0 - 59 - 3992 - 4022 - - - TextEditor - $WS_DIR$\..\Common\Minimal\EventGroupsDemo.c - 0 - 0 - 0 - 0 - 0 - 272 - 12088 - 12088 - - - TextEditor - $WS_DIR$\..\Common\Minimal\integer.c - 0 - 0 - 0 - 0 - 0 - 122 - 6361 - 6361 - - - 0 - - - 1000000 - 1000000 - - - 1 - - - - - - - iaridepm.enu1 - - - debuggergui.enu1 - - - - - - - - - - - - - -2 - -2 - 542 - 238 - -2 - -2 - 240 - 200 - 142857 - 203666 - 142857 - 553971 - - - - - - - - - - - -2 - -2 - 542 - 198 - -2 - -2 - 200 - 200 - 119048 - 203666 - 119048 - 553971 - - - - - - - - - - - -2 - -2 - 198 - 1682 - -2 - -2 - 1684 - 200 - 1002381 - 203666 - 119048 - 203666 - - - - - - - - - 196 - -2 - 396 - 1682 - -2 - 196 - 1684 - 200 - 1002381 - 203666 - 119048 - 203666 - - - - - - - - - - - - - 34048 - 34049 - 34050 - 34051 - 34052 - 34053 - 34054 - 34055 - 34056 - 34057 - 34058 - 34059 - 34060 - 34061 - 34062 - 34063 - 34064 - 34065 - 34066 - 34067 - 34068 - 34069 - 34070 - 34071 - 34072 - 34073 - 34074 - 34075 - 34076 - 34077 - 34078 - 34079 - 34080 - 34081 - 34082 - 34083 - 34084 - 34085 - 34086 - 34087 - 34088 - 34089 - 34090 - 34091 - 34092 - 34093 - 34094 - 34095 - 34096 - 34097 - 34098 - 34099 - 34100 - 34101 - 34102 - 34103 - 34104 - 34105 - 34106 - 34107 - 34108 - 34109 - 34110 - 34111 - 34112 - 34113 - 34114 - 34115 - - - - - 34000 - 34001 - 0 - - - - - 34390 - 34323 - 34398 - 34400 - 34397 - 34320 - 34321 - 34324 - 0 - - - - - 57600 - 57601 - 57603 - 33024 - 0 - 57607 - 0 - 57635 - 57634 - 57637 - 0 - 57643 - 57644 - 0 - 33090 - 33057 - 57636 - 57640 - 57641 - 33026 - 33065 - 33063 - 33064 - 33053 - 33054 - 0 - 33035 - 33036 - 34399 - 0 - 33055 - 33056 - 33094 - 0 - - - - 14 - 23 - - - 1 - 1 - 0 - 0 - 1 - 1 - 1 - 5E000000110000DA000002000000108600002200000005B00000020000000F810000010000001BB000000100000004B000000200000001B00000010000001A860000020000000E81000001000000058100000100000055860000010000001AB00000010000001186000010000000468100001C000000608600000100000000B00000010000000886000001000000 - - - 30001AB000001BB00000FFFFFFFF1CB000001DB0000000DA0000838600005886000004DC00007784000007840000808C000044D500007486000000DC000001DC000002DC000003DC000016B0000017B000000C84000033840000788400001184000008800000098000000A8000000B8000000C800000158000000A81000001E80000439200001E920000289200002992000024960000259600001F96000000B0000001B0000007DE000008DE00003787000008D6000006D6000004B0000005B00000 - 4500028600001000000013860000260000000484000073000000578600001800000059920000250000000481000043000000768600003000000010860000240000008486000031000000318400007A00000023920000000000000A8600002C00000020810000520000000F8100004A0000001D920000120000000C81000047000000008D00001F000000078600001F00000009810000450000000684000075000000048600001C000000018600000F000000568600002A00000003840000720000009A86000016000000259200001A000000008400006E00000044920000230000000E840000770000003084000079000000098600002B0000001F920000200000005E8600002C0000001F810000510000000E810000490000001A860000290000002D920000220000000B810000460000008E86000032000000068600001E000000D18400001B000000038600001100000014860000270000000584000074000000698600002F000000008600000E0000002396000089000000058100004400000011860000250000000284000071000000558600000700000046810000590000001084000078000000328400007B0000000E860000170000000B8600002D000000608600002E000000088600002A00000035E100006B00000002E100005E0000005D8600002B0000000A840000760000000D81000048000000C386000003000000A18600003300000016860000320000002C92000021000000C08600000B000000058600001D000000 - - - 0 - 0A0000000A0000006E0000006E000000 - 0000000054050000700D000067050000 - 4096 - 0 - 0 - 32767 - 0 - - - 1 - - - 34048 - 00000000220000003801000018010000 - 00000000C1040000700D000054050000 - 32768 - 0 - 0 - 32767 - 0 - - - 0 - - - 300 - 100 - 100 - 100 - 100 - 100 - 100 - - - 34049 - 00000000220000003801000018010000 - 0000000030040000700D000054050000 - 32768 - 0 - 0 - 32767 - 0 - - - 0 - - - 200 - 100 - 100 - 100 - 100 - 100 - 100 - 100 - 150 - - - 34053 - 00000000220000001A010000E0010000 - 00000000000000001A010000BE010000 - 16384 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34054 - 00000000220000003801000004010000 - 000000000000000038010000E2000000 - 32768 - 0 - 0 - 32767 - 0 - - - 0 - - - 4294967295 - 1E010000580000003802000040050000 - 1E010000410000003802000029050000 - 4096 - 0 - 0 - 32767 - 0 - - - 0 - - - 34055 - 00000000220000003801000004010000 - 04000000E80400006C0D00003A050000 - 32768 - 0 - 0 - 32767 - 0 - - - 0 - - - 34058 - 00000000220000003801000004010000 - 040000006C0400002414000005050000 - 4096 - 0 - 0 - 32767 - 0 - - - 0 - - - 34066 - 00000000220000003801000004010000 - 00000000E4040000700D000054050000 - 4096 - 0 - 0 - 32767 - 0 - - - 1 - - - 34069 - 00000000220000003801000004010000 - 04000000E80400006C0D00003A050000 - 4096 - 0 - 0 - 32767 - 0 - - - 0 - - - 34070 - 00000000220000003801000004010000 - 04000000E80400006C0D00003A050000 - 4096 - 0 - 0 - 32767 - 0 - - - 0 - - - 34071 - 00000000220000003801000004010000 - 04000000E80400006C0D00003A050000 - 4096 - 0 - 0 - 32767 - 0 - - - 0 - - - 34091 - 00000000220000003801000004010000 - 04000000E80400006C0D00003A050000 - 4096 - 0 - 0 - 32767 - 0 - - - 0 - - - 34103 - 00000000220000003801000004010000 - 04000000E80400006C0D00003A050000 - 4096 - 0 - 0 - 32767 - 0 - - - 0 - - - 34056 - 0000000022000000AF020000DC000000 - 0000000000000000AF020000BA000000 - 32768 - 0 - 0 - 32767 - 0 - - - 0 - - - 34057 - 00000000220000001A010000E0010000 - 00000000320000001A0100007F020000 - 4096 - 0 - 0 - 32767 - 0 - - - 1 - - - - Frame - _I0 - - - 3500 - 20 - - - - 34059 - 0000000022000000CE010000DC000000 - 040000007D06000024140000EE060000 - 32768 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34084 - 00000000220000003801000004010000 - 040000007D06000024140000EE060000 - 4096 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34060 - 00000000220000003801000004010000 - 000000000000000038010000E2000000 - 8192 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34061 - 00000000220000003801000004010000 - 000000000000000038010000E2000000 - 32768 - 0 - 0 - 32767 - 0 - - - 0 - - - 34062 - 00000000220000003801000004010000 - 000000000000000038010000E2000000 - 32768 - 0 - 0 - 32767 - 0 - - - 0 - - - 34063 - 00000000220000003801000004010000 - 000000000000000038010000E2000000 - 32768 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34064 - 00000000220000003801000004010000 - 000000000000000038010000E2000000 - 32768 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34065 - 00000000220000001A010000E0010000 - 00000000000000001A010000BE010000 - 16384 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34067 - 00000000220000001A010000E0010000 - 800A000032000000700D0000CC040000 - 16384 - 0 - 0 - 32767 - 0 - - - 1 - - - - Disassembly - _I0 - - - 500 - 20 - - - 1 - 1 - - - 34068 - 00000000220000001A010000E0010000 - 00000000000000001A010000BE010000 - 16384 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34072 - 00000000220000003801000004010000 - 000000000000000038010000E2000000 - 8192 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34073 - 00000000220000003801000004010000 - 000000000000000038010000E2000000 - 8192 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34074 - 00000000220000003801000004010000 - 000000000000000038010000E2000000 - 32768 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34075 - 00000000220000003801000004010000 - 000000000000000038010000E2000000 - 32768 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34076 - 00000000220000001A010000E0010000 - 00000000000000001A010000BE010000 - 16384 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34077 - 00000000220000001A010000E0010000 - 00000000000000001A010000BE010000 - 16384 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34078 - 00000000220000001A010000E0010000 - 00000000000000001A010000BE010000 - 16384 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34079 - 00000000220000003801000018010000 - 040000003406000024140000F8060000 - 32768 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34080 - 00000000220000003801000018010000 - 040000003406000024140000F8060000 - 4096 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34081 - 00000000220000003801000018010000 - 040000003406000024140000F8060000 - 4096 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34082 - 00000000220000003801000018010000 - 040000003406000024140000F8060000 - 4096 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34083 - 00000000220000003801000004010000 - 000000000000000038010000E2000000 - 32768 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34085 - 00000000220000001A010000E0010000 - 00000000000000001A010000BE010000 - 16384 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34086 - 0B000000CF020000250100008D040000 - 00000000830200001A010000CC040000 - 16384 - 0 - 0 - 32767 - 0 - - - 1 - - - - Access - Name - Value - - - 180 - 180 - 180 - - - 0 - - - 34087 - 00000000220000001A010000E0010000 - 00000000000000001A010000BE010000 - 16384 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34088 - 00000000220000001A010000E0010000 - 00000000000000001A010000BE010000 - 16384 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34089 - 00000000220000001A010000E0010000 - 00000000000000001A010000BE010000 - 16384 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34090 - 00000000220000001A010000E0010000 - 00000000000000001A010000BE010000 - 16384 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34092 - 00000000220000003801000004010000 - 000000000000000038010000E2000000 - 8192 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34093 - 00000000220000003801000004010000 - 000000000000000038010000E2000000 - 8192 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34094 - 00000000220000001A010000E0010000 - 22010000660000003402000014040000 - 4096 - 0 - 0 - 32767 - 0 - - - 0 - - - 34112 - 00000000220000001A010000E0010000 - 1E010000550000003802000029050000 - 4096 - 0 - 0 - 32767 - 0 - - - 0 - - - 34095 - 00000000220000001A010000E0010000 - 00000000000000001A010000BE010000 - 4096 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34096 - 00000000220000001A010000E0010000 - 00000000000000001A010000BE010000 - 4096 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34097 - 00000000220000001A010000E0010000 - 00000000000000001A010000BE010000 - 16384 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34098 - 00000000220000001A010000E0010000 - 00000000000000001A010000BE010000 - 16384 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34099 - 00000000220000003801000004010000 - 000000000000000038010000E2000000 - 8192 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34100 - 00000000220000001A010000E0010000 - 00000000000000001A010000BE010000 - 16384 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34101 - 0000000022000000CE01000018010000 - 0000000000000000CE010000F6000000 - 16384 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34102 - 0000000022000000CE01000018010000 - 0000000000000000CE010000F6000000 - 32768 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34104 - 00000000220000003801000004010000 - 000000000000000038010000E2000000 - 32768 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34105 - 00000000220000003801000004010000 - 000000000000000038010000E2000000 - 32768 - 0 - 0 - 32767 - 0 - - - 0 - - - 34106 - 00000000220000003801000004010000 - 000000000000000038010000E2000000 - 32768 - 0 - 0 - 32767 - 0 - - - 0 - - - 34107 - 00000000220000003801000004010000 - 000000000000000038010000E2000000 - 32768 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34108 - 00000000220000001A010000E0010000 - 00000000000000001A010000BE010000 - 16384 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34109 - 00000000220000001A010000E0010000 - 00000000000000001A010000BE010000 - 16384 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34110 - 00000000220000001A010000E0010000 - 00000000000000001A010000BE010000 - 16384 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34111 - 00000000220000001A010000E0010000 - 00000000000000001A010000BE010000 - 16384 - 0 - 0 - 32767 - 0 - - - 0 - - - - 000000004B000000000000000040000000000000FFFFFFFFFFFFFFFF000000000000000004000000040000000000000002000000040000000100000000000000000000003F85000000000000000000000000000000000000010000003F850000010000003F850000000000000040000000000000FFFFFFFFFFFFFFFF000000000000000004000000040000000000000002000000040000000100000000000000000000003E85000000000000000000000000000000000000010000003E850000010000003E850000000000000040000000000000FFFFFFFFFFFFFFFF000000000000000004000000040000000000000002000000040000000100000000000000000000003D85000000000000000000000000000000000000010000003D850000010000003D850000000000000040000000000000FFFFFFFFFFFFFFFF000000000000000004000000040000000000000002000000040000000100000000000000000000003C85000000000000000000000000000000000000010000003C850000010000003C850000000000000040000000000000FFFFFFFFFFFFFFFF00000000000000000400000004000000000000000200000004000000010000000000000000000000358500000000000000000000000000000000000001000000358500000100000035850000000000000040000000000000FFFFFFFFFFFFFFFF00000000000000000400000004000000000000000200000004000000010000000000000000000000348500000000000000000000000000000000000001000000348500000100000034850000000000000020000000000000FFFFFFFFFFFFFFFF00000000000000000400000004000000000000000100000004000000010000000000000000000000338500000000000000000000000000000000000001000000338500000100000033850000000000000040000000000000FFFFFFFFFFFFFFFF00000000000000000400000004000000000000000200000004000000010000000000000000000000318500000000000000000000000000000000000001000000318500000100000031850000000000000010000000000000FFFFFFFFFFFFFFFF00000000000000000400000004000000000000000200000004000000010000000000000000000000308500000000000000000000000000000000000001000000308500000100000030850000000000000010000000000000FFFFFFFFFFFFFFFF000000000000000004000000040000000000000002000000040000000100000000000000000000002F85000000000000000000000000000000000000010000002F850000010000002F850000000000000010000000000000FFFFFFFFFFFFFFFF38020000410000003C02000029050000000000000200000004000000010000000000000000000000FFFFFFFF0100000040850000FFFF02000B004354616262656450616E6500100000000000001E0100005800000038020000400500001E010000410000003802000029050000000000004010004601000000FFFEFF0957006F0072006B0073007000610063006500000000004085000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFF4085000001000000FFFFFFFF40850000000000000040000000000000FFFFFFFFFFFFFFFF000000000000000004000000040000000000000002000000040000000100000000000000000000002A85000000000000000000000000000000000000010000002A850000010000002A850000000000000040000000000000FFFFFFFFFFFFFFFF00000000000000000400000004000000000000000200000004000000010000000000000000000000298500000000000000000000000000000000000001000000298500000100000029850000000000000040000000000000FFFFFFFFFFFFFFFF00000000000000000400000004000000000000000200000004000000010000000000000000000000288500000000000000000000000000000000000001000000288500000100000028850000000000000040000000000000FFFFFFFFFFFFFFFF00000000000000000400000004000000000000000200000004000000010000000000000000000000278500000000000000000000000000000000000001000000278500000100000027850000000000000040000000000000FFFFFFFFFFFFFFFF00000000000000000400000004000000000000000200000004000000010000000000000000000000258500000000000000000000000000000000000001000000258500000100000025850000000000000080000000000000FFFFFFFFFFFFFFFF0000000018060000281400001C060000000000000100000004000000010000000000000000000000FFFFFFFF040000001F8500002085000021850000228500000180008000000000000000000000330600002814000029070000000000001C0600002814000012070000000000004080004604000000FFFEFF084D0065006D006F007200790020003100000000001F85000001000000FFFFFFFFFFFFFFFFFFFEFF084D0065006D006F007200790020003200000000002085000001000000FFFFFFFFFFFFFFFFFFFEFF084D0065006D006F007200790020003300000000002185000001000000FFFFFFFFFFFFFFFFFFFEFF084D0065006D006F007200790020003400000000002285000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFF1F85000001000000FFFFFFFF1F850000000000000040000000000000FFFFFFFFFFFFFFFF000000000000000004000000040000000000000002000000040000000100000000000000000000001E85000000000000000000000000000000000000010000001E850000010000001E850000000000000040000000000000FFFFFFFFFFFFFFFF000000000000000004000000040000000000000002000000040000000100000000000000000000001D85000000000000000000000000000000000000010000001D850000010000001D850000000000000040000000000000FFFFFFFFFFFFFFFF000000000000000004000000040000000000000002000000040000000100000000000000000000001C85000000000000000000000000000000000000010000001C850000010000001C850000000000000020000000000000FFFFFFFFFFFFFFFF00000000000000000400000004000000000000000100000004000000010000000000000000000000198500000000000000000000000000000000000001000000198500000100000019850000000000000040000000000000FFFFFFFFFFFFFFFF00000000000000000400000004000000000000000200000004000000010000000000000000000000148500000000000000000000000000000000000001000000148500000100000014850000000000000040000001000000FFFFFFFFFFFFFFFF7C0A000032000000800A0000CC0400000100000002000010040000000100000041FCFFFFC9000000138500000000000000000000000000000000000001000000138500000100000013850000000000000040000000000000FFFFFFFFFFFFFFFF00000000000000000400000004000000000000000200000004000000010000000000000000000000118500000000000000000000000000000000000001000000118500000100000011850000000000000080000000000000FFFFFFFFFFFFFFFF000000000000000004000000040000000000000001000000040000000100000000000000000000000E85000000000000000000000000000000000000010000000E850000010000000E850000000000000080000000000000FFFFFFFFFFFFFFFF000000000000000004000000040000000000000001000000040000000100000000000000000000000D85000000000000000000000000000000000000010000000D850000010000000D850000000000000020000000000000FFFFFFFFFFFFFFFF000000000000000004000000040000000000000001000000040000000100000000000000000000000C85000000000000000000000000000000000000010000000C850000010000000C850000000000000010000001000000FFFFFFFFFFFFFFFF1A010000320000001E010000CC04000001000000020000100400000001000000000000000000000000000000000000000000000001000000098500002685000001000000000000000100000001000000FFFFFFFF000000007F0200001A0100008302000001000000010000100400000000000000A6FFFFFF4900000000000000000000000000000002000000098500002685000001000000268500000100000009850000000000000080000000000000FFFFFFFFFFFFFFFF00000000000000000400000004000000000000000100000004000000010000000000000000000000088500000000000000000000000000000000000001000000088500000100000008850000000000000080000001000000FFFFFFFFFFFFFFFF00000000CC040000700D0000D00400000100000001000010040000000100000033FEFFFFFFFFFFFFFFFFFFFF0700000007850000128500001585000016850000178500002B850000378500000180008000000100000000000000E7040000700D00006B05000000000000D0040000700D000054050000000000004080005607000000FFFEFF054200750069006C006400000000000785000001000000FFFFFFFFFFFFFFFFFFFEFF094400650062007500670020004C006F006700010000001285000001000000FFFFFFFFFFFFFFFFFFFEFF0C4400650063006C00610072006100740069006F006E007300000000001585000001000000FFFFFFFFFFFFFFFFFFFEFF0A5200650066006500720065006E00630065007300000000001685000001000000FFFFFFFFFFFFFFFFFFFEFF0D460069006E006400200069006E002000460069006C0065007300000000001785000001000000FFFFFFFFFFFFFFFFFFFEFF1541006D0062006900670075006F0075007300200044006500660069006E006900740069006F006E007300000000002B85000001000000FFFFFFFFFFFFFFFFFFFEFF0B54006F006F006C0020004F0075007400700075007400000000003785000001000000FFFFFFFFFFFFFFFF01000000000000000000000000000000000000000000000001000000FFFFFFFF0785000001000000FFFFFFFF07850000000000000080000000000000FFFFFFFFFFFFFFFF00000000000000000400000004000000000000000100000004000000010000000000000000000000068500000000000000000000000000000000000001000000068500000100000006850000000000000040000000000000FFFFFFFFFFFFFFFF00000000000000000400000004000000000000000200000004000000010000000000000000000000058500000000000000000000000000000000000001000000058500000100000005850000000000000080000000000000FFFFFFFFFFFFFFFF000000002C040000700D00003004000000000000010000000400000001000000A8FEFFFF44000000018500000000000000000000000000000000000001000000018500000100000001850000000000000080000000000000FFFFFFFFFFFFFFFF00000000BD040000700D0000C104000000000000010000000400000001000000D5FCFFFF7A000000008500000000000000000000000000000000000001000000008500000100000000850000000000000080000000000000FFFFFFFFFFFFFFFF0000000085040000700D000089040000000000000100000004000000010000009BFEFFFF36010000418500000000000000000000000000000000000001000000418500000100000041850000000000000080000000000000FFFFFFFFFFFFFFFF00000000000000000400000004000000000000000100000004000000010000000000000000000000438500000000000000000000000000000000000001000000438500000100000043850000000000000080000000000000FFFFFFFFFFFFFFFF00000000000000000400000004000000000000000100000004000000010000000000000000000000428500000000000000000000000000000000000001000000428500000100000042850000000000000000000000000000 - - - CMSIS-Pack - 00200000010000000200FFFF01001100434D4643546F6F6C426172427574746F6ED0840000000004001D000000FFFEFF0000000000000000000000000001000000010000000180D1840000000000001B000000FFFEFF00000000000000000000000000010000000100000000000000FFFEFF0A43004D005300490053002D005000610063006B002F000000 - - - 34050 - 0A0000000A0000006E0000006E000000 - 0004000000000000450400001A000000 - 8192 - 0 - 0 - 47 - 0 - - - 1 - - - Debug - 00200000010000000800FFFF01001100434D4643546F6F6C426172427574746F6E56860000000004002A000000FFFEFF0000000000000000000000000001000000010000000180138600000000040026000000FFFEFF00000000000000000000000000010000000100000001805E860000000004002C000000FFFEFF000000000000000000000000000100000001000000018060860000000004002E000000FFFEFF00000000000000000000000000010000000100000001805D860000000004002B000000FFFEFF0000000000000000000000000001000000010000000180108600000000040024000000FFFEFF0000000000000000000000000001000000010000000180118600000000000025000000FFFEFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E148600000000040027000000FFFEFF205200650073006500740020007400680065002000640065006200750067006700650064002000700072006F006700720061006D000A00520065007300650074000000000000000000000000000100000001000000000000000000000001000000020009800000000000000400FFFFFFFFFFFEFF000000000000000000000000000100000001000000000000000000000001000000000009801986000000000000FFFFFFFFFFFEFF000100000000000000000000000100000001000000000000000000000001000000000000000000FFFEFF0544006500620075006700C6000000 - - - 34051 - 0A0000000A0000006E0000006E000000 - 1A03000000000000F60300001A000000 - 8192 - 0 - 0 - 198 - 0 - - - 1 - - - Main - 00200000010000002100FFFF01001100434D4643546F6F6C426172427574746F6E00E10000000000005C000000FFFEFF000000000000000000000000000100000001000000018001E10000000000005D000000FFFEFF000000000000000000000000000100000001000000018003E10000000000005F000000FFFEFF0000000000000000000000000001000000010000000180008100000000000040000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF000000000000000000000000000100000001000000018007E100000000000062000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF000000000000000000000000000100000001000000018023E100000000040064000000FFFEFF000000000000000000000000000100000001000000018022E100000000040063000000FFFEFF000000000000000000000000000100000001000000018025E100000000000066000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF00000000000000000000000000010000000100000001802BE100000000040069000000FFFEFF00000000000000000000000000010000000100000001802CE10000000004006A000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6E4281000000000000FFFFFFFFFFFEFF0001000000000000000100000000000000010000007800000002002050FFFFFFFFFFFEFF0096000000000000000200FFFEFF095400490043004B005F0048004F004F004B00FFFEFF1975006C0049006E007400650072007200750070007400540072006900670067006500720043006F0075006E0074006500720000000000000000000180218100000000040053000000FFFEFF000000000000000000000000000100000001000000018024E100000000000065000000FFFEFF000000000000000000000000000100000001000000018028E100000000040067000000FFFEFF000000000000000000000000000100000001000000018029E100000000000068000000FFFEFF0000000000000000000000000001000000010000000180028100000000000042000000FFFEFF0000000000000000000000000001000000010000000180298100000000000057000000FFFEFF0000000000000000000000000001000000010000000180278100000000000055000000FFFEFF0000000000000000000000000001000000010000000180288100000000000056000000FFFEFF00000000000000000000000000010000000100000001801D810000000000004F000000FFFEFF00000000000000000000000000010000000100000001801E8100000000040050000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF00000000000000000000000000010000000100000001800B8100000000000046000000FFFEFF00000000000000000000000000010000000100000001800C8100000000000047000000FFFEFF00000000000000000000000000010000000100000001805F860000000000005B000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF00000000000000000000000000010000000100000001801F8100000000000051000000FFFEFF0000000000000000000000000001000000010000000180208100000000000052000000FFFEFF0000000000000000000000000001000000010000000180468100000000020059000000FFFEFF00000000000000000000000000010000000100000000000000FFFEFF044D00610069006E00FF020000 - - - 34052 - 0A0000000A0000006E0000006E000000 - 0000000000000000150300001A000000 - 8192 - 0 - 0 - 767 - 0 - - - 1 - - - - Base Priority - Handle - Name - Priority - Run Count - Stack End - Stack Ptr - Stack Size - Stack Start - State - - - 65 - 125 - 100 - 65 - 75 - 125 - 125 - 75 - 125 - 100 - - - - 34113 - 00000000220000003801000004010000 - 0000000089040000700D000054050000 - 32768 - 0 - 0 - 32767 - 0 - - - 0 - - - 34114 - 000000001700000022010000C8000000 - 000000000000000022010000B1000000 - 32768 - 0 - 0 - 32767 - 0 - - - 0 - - - 34115 - 000000001700000080020000A8000000 - 00000000000000008002000091000000 - 32768 - 0 - 0 - 32767 - 0 - - - 0 - - - - diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/settings/RTOSDemo.dni b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/settings/RTOSDemo.dni deleted file mode 100644 index 3899c2345..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/settings/RTOSDemo.dni +++ /dev/null @@ -1,61 +0,0 @@ -[CodeCoverage] -Enabled=_ 0 -[DisAssemblyWindow] -NumStates=_ 1 -State 1=_ 1 -[Profiling] -Enabled=0 -[StackPlugin] -Enabled=1 -OverflowWarningsEnabled=1 -WarningThreshold=90 -SpWarningsEnabled=1 -WarnHow=0 -UseTrigger=1 -TriggerName=main -LimitSize=0 -ByteLimit=50 -[Stack] -FillEnabled=0 -OverflowWarningsEnabled=1 -WarningThreshold=90 -SpWarningsEnabled=1 -WarnLogOnly=1 -UseTrigger=1 -TriggerName=main -LimitSize=0 -ByteLimit=50 -[LMIFTDIDriver] -LMI_ResetMode=0x00000000 -[DebugChecksum] -Checksum=-658913587 -[Exceptions] -StopOnUncaught=_ 0 -StopOnThrow=_ 0 -[CallStack] -ShowArgs=0 -[Disassembly] -MixedMode=1 -[CallStackLog] -Enabled=0 -[Log file] -LoggingEnabled=_ 0 -LogFile=_ "" -Category=_ 0 -[TermIOLog] -LoggingEnabled=_ 0 -LogFile=_ "" -[DriverProfiling] -Enabled=0 -Mode=0 -Graph=0 -Symbiont=0 -Exclusions= -[Disassemble mode] -mode=1 -[Breakpoints] -Bp0=_ "STD_CODE" "{$PROJ_DIR$\main.c}.495.3" 1 0 0 0 "" 0 "" -Count=1 -[Aliases] -Count=0 -SuppressDialog=0 diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/settings/RTOSDemo.wsdt b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/settings/RTOSDemo.wsdt deleted file mode 100644 index 1f60c71cb..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/settings/RTOSDemo.wsdt +++ /dev/null @@ -1,666 +0,0 @@ - - - - - - - - - - 241 - 27 - 27 - 27 - - - - 482 - 68 - 826 - - - 19 - 1007 - 268 - 67 - - - - 20 - 1622 - - - - - - - TabID-18883-22024 - Workspace - Workspace - - - RTOSDemo - - - - - 0 - - - - - TabID-29040-7360 - Find in Files - Find-in-Files - - - - TabID-19024-10413 - Build - Build - - - - TabID-19202-19100 - Debug Log - Debug-Log - - - - 1 - - - - - - TextEditor - $WS_DIR$\main.c - 0 - 0 - 0 - 0 - 0 - 61 - 10549 - 10549 - - 0 - - 0 - - - 1000000 - 1000000 - - - 1 - - - - - - - iaridepm.enu1 - - - - - - - - - - - - - - - - -2 - -2 - 719 - 315 - -2 - -2 - 200 - 200 - 119048 - 203666 - 188690 - 734216 - - - - - - - - - - - - - - - - -2 - -2 - 219 - 1682 - -2 - -2 - 1684 - 221 - 1002381 - 225051 - 119048 - 203666 - - - - - - - - - - - - - 34048 - 34049 - 34050 - 34051 - 34052 - 34053 - 34054 - 34055 - 34056 - 34057 - 34058 - 34059 - 34060 - 34061 - 34062 - 34063 - 34064 - 34065 - 34066 - 34067 - 34068 - - - - - 34000 - 34001 - 0 - - - - - 57600 - 57601 - 57603 - 33024 - 0 - 57607 - 0 - 57635 - 57634 - 57637 - 0 - 57643 - 57644 - 0 - 33090 - 33057 - 57636 - 57640 - 57641 - 33026 - 33065 - 33063 - 33064 - 33053 - 33054 - 0 - 33035 - 33036 - 34399 - 0 - 33038 - 33039 - 0 - - - - 26 - 3389 - 2 - - 0 - -1 - - - - 210 - 30 - 30 - 30 - - - - - 14 - 23 - - - 1 - 1 - 0 - 0 - 1 - 1 - 1 - 20000000120000DA000001000000108600000100000005B00000010000000F810000010000001BB0000001000000148100000100000004B000000100000001B00000010000001A860000010000000E8100001E000000058100000100000055860000010000001AB000000100000011860000010000004681000001000000608600000100000000B00000010000000886000001000000 - - - 30000D8400000F84000008840000FFFFFFFF54840000328100001C81000009840000D484000020F1000010F0000000F0000020F0000030F0000060F0000000880000018800000288000003880000048800000588000008800000098000000A8000000B8000000C800000158000000A81000001E80000D6840000D7840000D8840000D9840000DA840000DB840000DC840000DD840000DE840000DF840000E0840000E1840000E2840000EA840000248100000C840000338400007884000011840000 - 1A000484000047000000158100001C0000000481000016000000268100002700000007E100003200000004E100003000000001E100002D0000000D8000000E00000009810000180000000684000049000000178100001E000000148100001B0000000081000010000000308400004C0000000E8400004A00000003E100002F00000000E100002C0000000B8100001900000041E100003C000000168100001D000000058100001700000005E1000031000000518400004D00000035E100003E00000002E100002E0000000D8100001B000000 - - - 0 - 0A0000000A0000006E0000006E000000 - 0000000058050000700D00006B050000 - 4096 - 0 - 0 - 32767 - 0 - - - 1 - - - 4294967295 - 00000000490000001A01000042040000 - 00000000320000001A0100002C040000 - 4096 - 0 - 0 - 32767 - 0 - - - 1 - - - 34050 - 00000000220000003801000004010000 - 04000000BB0400006C0D00003A050000 - 32768 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34051 - 00000000220000003801000004010000 - 04000000480400006C0D00003E050000 - 4096 - 0 - 0 - 32767 - 0 - - - 1 - - - 21 - 3825 - 1020 - 255 - 2 - C:\Users\ribarry\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\CORTEX_LM3Sxxxx_IAR_Keil\BuildLog.log - 0 - -1 - - - 34053 - 00000000220000003801000004010000 - 04000000EA050000FC0E0000DF070000 - 4096 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34056 - 00000000220000003801000004010000 - 04000000BB0400006C0D00003A050000 - 4096 - 0 - 0 - 32767 - 0 - - - 0 - - - 34057 - 00000000220000003801000004010000 - 04000000480400006C0D00003E050000 - 4096 - 0 - 0 - 32767 - 0 - - - 1 - - - 1198 - 171 - 2054 - 2 - - 0 - -1 - - - 34058 - 00000000220000003801000004010000 - 0400000048040000FC0900003E050000 - 4096 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34059 - 00000000220000003801000004010000 - 0400000048040000FC0900003E050000 - 4096 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34060 - 00000000220000003801000004010000 - 0400000048040000FC0900003E050000 - 4096 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34062 - 00000000220000003801000004010000 - 0400000048040000FC0900003E050000 - 4096 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34052 - 0000000022000000AF020000DC000000 - 0000000000000000AF020000BA000000 - 32768 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34054 - 00000000220000003801000004010000 - 000000000000000038010000E2000000 - 32768 - 0 - 1 - 32767 - 0 - - - 0 - - - - 34055 - 00000000220000003801000004010000 - 000000000000000038010000E2000000 - 32768 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34061 - 00000000220000001A010000E0010000 - 0400000066000000160100009D050000 - 4096 - 0 - 0 - 32767 - 0 - - - 0 - - - 2147483647 - 1 - - - 34063 - 00000000220000001A010000E0010000 - 00000000460000001A0100002C040000 - 4096 - 0 - 0 - 32767 - 0 - - - 1 - - - 000000000C000000000000000010000001000000FFFFFFFFFFFFFFFF1A010000320000001E0100002C040000010000000200001004000000010000000000000000000000FFFFFFFF010000000F850000FFFF02000B004354616262656450616E65001000000100000000000000490000001A0100004204000000000000320000001A0100002C040000000000004010005601000000FFFEFF0957006F0072006B0073007000610063006500010000000F85000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFF0F85000001000000FFFFFFFF0F850000000000000080000000000000FFFFFFFFFFFFFFFF00000000000000000400000004000000000000000100000004000000010000000000000000000000078500000000000000000000000000000000000001000000078500000100000007850000000000000080000000000000FFFFFFFFFFFFFFFF00000000000000000400000004000000000000000100000004000000010000000000000000000000048500000000000000000000000000000000000001000000048500000100000004850000000000000080000001000000FFFFFFFFFFFFFFFF000000002C040000700D00003004000001000000010000100400000001000000AAFDFFFF45000000FFFFFFFF0600000003850000098500000A8500000B8500000C8500000E850000018000800000010000000000000046040000000A00006E0500000000000030040000700D000058050000000000004080005606000000FFFEFF054200750069006C006400010000000385000001000000FFFFFFFFFFFFFFFFFFFEFF0C4400650063006C00610072006100740069006F006E007300010000000985000001000000FFFFFFFFFFFFFFFFFFFEFF0A5200650066006500720065006E00630065007300000000000A85000001000000FFFFFFFFFFFFFFFFFFFEFF0D460069006E006400200069006E002000460069006C0065007300000000000B85000001000000FFFFFFFFFFFFFFFFFFFEFF1541006D0062006900670075006F0075007300200044006500660069006E006900740069006F006E007300000000000C85000001000000FFFFFFFFFFFFFFFFFFFEFF0B54006F006F006C0020004F0075007400700075007400000000000E85000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFF0385000001000000FFFFFFFF03850000000000000080000000000000FFFFFFFFFFFFFFFF00000000000000000400000004000000000000000100000004000000010000000000000000000000138500000000000000000000000000000000000001000000138500000100000013850000000000000080000000000000FFFFFFFFFFFFFFFF00000000000000000400000004000000000000000100000004000000010000000000000000000000128500000000000000000000000000000000000001000000128500000100000012850000000000000000000000000000 - - - CMSIS-Pack - 00200000010000000200FFFF01001100434D4643546F6F6C426172427574746F6ED0840000000004000C000000FFFEFF0000000000000000000000000001000000010000000180D1840000000000000C000000FFFEFF00000000000000000000000000010000000100000000000000FFFEFF0A43004D005300490053002D005000610063006B002F000000 - - - 34048 - 0A0000000A0000006E0000006E000000 - 0303000000000000480300001A000000 - 8192 - 0 - 0 - 47 - 0 - - - 1 - - - Main - 00200000010000002000FFFF01001100434D4643546F6F6C426172427574746F6E00E10000000000002F000000FFFEFF000000000000000000000000000100000001000000018001E100000000000030000000FFFEFF000000000000000000000000000100000001000000018003E100000000040032000000FFFEFF0000000000000000000000000001000000010000000180008100000000000013000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF000000000000000000000000000100000001000000018007E100000000040035000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF000000000000000000000000000100000001000000018023E100000000040037000000FFFEFF000000000000000000000000000100000001000000018022E100000000040036000000FFFEFF000000000000000000000000000100000001000000018025E100000000040039000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF00000000000000000000000000010000000100000001802BE10000000004003C000000FFFEFF00000000000000000000000000010000000100000001802CE10000000004003D000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6E4281000000000400FFFFFFFFFFFEFF0001000000000000000100000000000000010000007800000002002050FFFFFFFFFFFEFF0096000000000000000600FFFEFF09510055004500550045005F00520045004700FFFEFF0A78004F004C004500440051007500650075006500FFFEFF107000720076005300650074007500700048006100720064007700610072006500FFFEFF0C76005000720069006E00740053007400720069006E006700FFFEFF0F69006E0069007400690061006C0069007300650073007400610063006B00FFFEFF0963006800650063006B007400610073006B000000000000000000000000000000000000000000000000000180218100000000040026000000FFFEFF000000000000000000000000000100000001000000018024E100000000040038000000FFFEFF000000000000000000000000000100000001000000018028E10000000004003A000000FFFEFF000000000000000000000000000100000001000000018029E10000000004003B000000FFFEFF0000000000000000000000000001000000010000000180028100000000040015000000FFFEFF000000000000000000000000000100000001000000018029810000000004002A000000FFFEFF0000000000000000000000000001000000010000000180278100000000040028000000FFFEFF0000000000000000000000000001000000010000000180288100000000040029000000FFFEFF00000000000000000000000000010000000100000001801D8100000000000022000000FFFEFF00000000000000000000000000010000000100000001801E8100000000040023000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF00000000000000000000000000010000000100000001800B8100000000040019000000FFFEFF00000000000000000000000000010000000100000001800C810000000000001A000000FFFEFF00000000000000000000000000010000000100000001805F860000000000002E000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF00000000000000000000000000010000000100000001800E810000000000001C000000FFFEFF00000000000000000000000000010000000100000001800F810000000000001D000000FFFEFF00000000000000000000000000010000000100000000000000FFFEFF044D00610069006E00E8020000 - - - 34049 - 0A0000000A0000006E0000006E000000 - 0000000000000000FE0200001A000000 - 8192 - 0 - 0 - 744 - 0 - - - 1 - - - 34064 - 00000000220000003801000004010000 - 000000000000000038010000E2000000 - 32768 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34065 - 00000000220000003801000004010000 - 000000000000000038010000E2000000 - 32768 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34066 - 000000001700000022010000C8000000 - 000000000000000022010000B1000000 - 32768 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34067 - 000000001700000080020000A8000000 - 00000000000000008002000091000000 - 32768 - 0 - 0 - 32767 - 0 - - - 0 - - - - - 57600 - 57601 - 57603 - 33024 - 0 - 57607 - 0 - 57635 - 57634 - 57637 - 0 - 57643 - 57644 - 0 - 33090 - 33057 - 57636 - 57640 - 57641 - 33026 - 33065 - 33063 - 33064 - 33053 - 33054 - 0 - 33035 - 33036 - 34399 - 0 - 33038 - 33039 - 0 - - - - Main - 00200000010000002000FFFF01001100434D4643546F6F6C426172427574746F6E00E10000000000002C000000FFFEFF000000000000000000000000000100000001000000018001E10000000000002D000000FFFEFF000000000000000000000000000100000001000000018003E10000000004002F000000FFFEFF0000000000000000000000000001000000010000000180008100000000000010000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF000000000000000000000000000100000001000000018007E100000000040032000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF000000000000000000000000000100000001000000018023E100000000040034000000FFFEFF000000000000000000000000000100000001000000018022E100000000040033000000FFFEFF000000000000000000000000000100000001000000018025E100000000040036000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF00000000000000000000000000010000000100000001802BE100000000040039000000FFFEFF00000000000000000000000000010000000100000001802CE10000000004003A000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF000000000000000000000000000100000001000000FFFF01000D005061737465436F6D626F426F784281000000000400FFFFFFFFFFFEFF0001000000000000000100000000000000010000007800000002002050FFFFFFFFFFFEFF00960000000000000000000180218100000000040023000000FFFEFF000000000000000000000000000100000001000000018024E100000000040035000000FFFEFF000000000000000000000000000100000001000000018028E100000000040037000000FFFEFF000000000000000000000000000100000001000000018029E100000000040038000000FFFEFF0000000000000000000000000001000000010000000180028100000000040012000000FFFEFF0000000000000000000000000001000000010000000180298100000000040027000000FFFEFF0000000000000000000000000001000000010000000180278100000000040025000000FFFEFF0000000000000000000000000001000000010000000180288100000000040026000000FFFEFF00000000000000000000000000010000000100000001801D810000000004001F000000FFFEFF00000000000000000000000000010000000100000001801E8100000000040020000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF00000000000000000000000000010000000100000001800B8100000000040016000000FFFEFF00000000000000000000000000010000000100000001800C8100000000040017000000FFFEFF00000000000000000000000000010000000100000001805F860000000004002B000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF00000000000000000000000000010000000100000001800E8100000000040019000000FFFEFF00000000000000000000000000010000000100000001800F810000000004001A000000FFFEFF00000000000000000000000000010000000100000000000000FFFEFF044D00610069006E00E8020000 - - - 34068 - 0A0000000A0000006E0000006E000000 - 0000000000000000FE0200001A000000 - 8192 - 0 - 0 - 744 - 0 - - - 1 - - - - - 010000000300000001000000000000000000000001000000010000000200000000000000010000000100000000000000280000002800000000000000 - - - - diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/startup_ewarm.c b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/startup_ewarm.c deleted file mode 100644 index dfb51d9ff..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/startup_ewarm.c +++ /dev/null @@ -1,219 +0,0 @@ -//***************************************************************************** -// -// startup_ewarm.c - Boot code for Stellaris. -// -// Copyright (c) 2006-2007 Luminary Micro, Inc. All rights reserved. -// -// Software License Agreement -// -// Luminary Micro, Inc. (LMI) is supplying this software for use solely and -// exclusively on LMI's microcontroller products. -// -// The software is owned by LMI and/or its suppliers, and is protected under -// applicable copyright laws. All rights are reserved. Any use in violation -// of the foregoing restrictions may subject the user to criminal sanctions -// under applicable laws, as well as to civil liability for the breach of the -// terms and conditions of this license. -// -// THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED -// OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. -// LMI SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR -// CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. -// -// This is part of revision 100 of the Stellaris Ethernet -// Applications Library. -// -//***************************************************************************** - -//***************************************************************************** -// -// Enable the IAR extensions for this source file. -// -//***************************************************************************** -#pragma language=extended - -//***************************************************************************** -// -// Forward declaration of the default fault handlers. -// -//***************************************************************************** -static void NmiSR(void); -static void FaultISR(void); -static void IntDefaultHandler(void); - -//***************************************************************************** -// -// External declaration for the interrupt handler used by the application. -// -//***************************************************************************** - - -//***************************************************************************** -// -// The entry point for the application. -// -//***************************************************************************** -extern void __iar_program_start(void); -extern void xPortPendSVHandler(void); -extern void xPortSysTickHandler(void); -extern void vPortSVCHandler(void); -extern void vT2InterruptHandler( void ); -extern void vT3InterruptHandler( void ); -extern void vEMAC_ISR( void ); -extern void Timer0IntHandler( void ); - -//***************************************************************************** -// -// Reserve space for the system stack. -// -//***************************************************************************** -#ifndef STACK_SIZE -#define STACK_SIZE 120 -#endif -static unsigned long pulStack[STACK_SIZE] @ ".noinit"; - -//***************************************************************************** -// -// A union that describes the entries of the vector table. The union is needed -// since the first entry is the stack pointer and the remainder are function -// pointers. -// -//***************************************************************************** -typedef union -{ - void (*pfnHandler)(void); - unsigned long ulPtr; -} -uVectorEntry; - -//***************************************************************************** -// -// The minimal vector table for a Cortex-M3. Note that the proper constructs -// must be placed on this to ensure that it ends up at physical address -// 0x0000.0000. -// -//***************************************************************************** -__root const uVectorEntry __vector_table[] @ ".intvec" = -{ - { .ulPtr = (unsigned long)pulStack + sizeof(pulStack) }, - // The initial stack pointer - __iar_program_start, // The reset handler - NmiSR, // The NMI handler - FaultISR, // The hard fault handler - IntDefaultHandler, // The MPU fault handler - IntDefaultHandler, // The bus fault handler - IntDefaultHandler, // The usage fault handler - 0, // Reserved - 0, // Reserved - 0, // Reserved - 0, // Reserved - vPortSVCHandler, // SVCall handler - IntDefaultHandler, // Debug monitor handler - 0, // Reserved - xPortPendSVHandler, // The PendSV handler - xPortSysTickHandler, // The SysTick handler - IntDefaultHandler, // GPIO Port A - IntDefaultHandler, // GPIO Port B - IntDefaultHandler, // GPIO Port C - IntDefaultHandler, // GPIO Port D - IntDefaultHandler, // GPIO Port E - IntDefaultHandler, // UART0 Rx and Tx - IntDefaultHandler, // UART1 Rx and Tx - IntDefaultHandler, // SSI Rx and Tx - IntDefaultHandler, // I2C Master and Slave - IntDefaultHandler, // PWM Fault - IntDefaultHandler, // PWM Generator 0 - IntDefaultHandler, // PWM Generator 1 - IntDefaultHandler, // PWM Generator 2 - IntDefaultHandler, // Quadrature Encoder - IntDefaultHandler, // ADC Sequence 0 - IntDefaultHandler, // ADC Sequence 1 - IntDefaultHandler, // ADC Sequence 2 - IntDefaultHandler, // ADC Sequence 3 - IntDefaultHandler, // Watchdog timer - Timer0IntHandler, // Timer 0 subtimer A - IntDefaultHandler, // Timer 0 subtimer B - IntDefaultHandler, // Timer 1 subtimer A - IntDefaultHandler, // Timer 1 subtimer B - vT2InterruptHandler, // Timer 2 subtimer A - IntDefaultHandler, // Timer 2 subtimer B - IntDefaultHandler, // Analog Comparator 0 - IntDefaultHandler, // Analog Comparator 1 - IntDefaultHandler, // Analog Comparator 2 - IntDefaultHandler, // System Control (PLL, OSC, BO) - IntDefaultHandler, // FLASH Control - IntDefaultHandler, // GPIO Port F - IntDefaultHandler, // GPIO Port G - IntDefaultHandler, // GPIO Port H - IntDefaultHandler, // UART2 Rx and Tx - IntDefaultHandler, // SSI1 Rx and Tx - vT3InterruptHandler, // Timer 3 subtimer A - IntDefaultHandler, // Timer 3 subtimer B - IntDefaultHandler, // I2C1 Master and Slave - IntDefaultHandler, // Quadrature Encoder 1 - IntDefaultHandler, // CAN0 - IntDefaultHandler, // CAN1 - IntDefaultHandler, // CAN2 - vEMAC_ISR, // Ethernet - IntDefaultHandler, // Hibernate - IntDefaultHandler, // USB0 - IntDefaultHandler, // PWM Generator 3 - IntDefaultHandler, // uDMA Software Transfer - IntDefaultHandler // uDMA Error -}; - - -//***************************************************************************** -// -// This is the code that gets called when the processor receives a NMI. This -// simply enters an infinite loop, preserving the system state for examination -// by a debugger. -// -//***************************************************************************** -static void -NmiSR(void) -{ - // - // Enter an infinite loop. - // - while(1) - { - } -} - -//***************************************************************************** -// -// This is the code that gets called when the processor receives a fault -// interrupt. This simply enters an infinite loop, preserving the system state -// for examination by a debugger. -// -//***************************************************************************** -static void -FaultISR(void) -{ - // - // Enter an infinite loop. - // - while(1) - { - } -} - -//***************************************************************************** -// -// This is the code that gets called when the processor receives an unexpected -// interrupt. This simply enters an infinite loop, preserving the system state -// for examination by a debugger. -// -//***************************************************************************** -static void -IntDefaultHandler(void) -{ - // - // Go into an infinite loop. - // - while(1) - { - } -} diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/startup_rvmdk.S b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/startup_rvmdk.S deleted file mode 100644 index b7077b164..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/startup_rvmdk.S +++ /dev/null @@ -1,251 +0,0 @@ -; <<< Use Configuration Wizard in Context Menu >>> -;****************************************************************************** -; -; startup_rvmdk.S - Startup code for use with Keil's uVision. -; -; Copyright (c) 2007 Luminary Micro, Inc. All rights reserved. -; -; Software License Agreement -; -; Luminary Micro, Inc. (LMI) is supplying this software for use solely and -; exclusively on LMI's microcontroller products. -; -; The software is owned by LMI and/or its suppliers, and is protected under -; applicable copyright laws. All rights are reserved. Any use in violation -; of the foregoing restrictions may subject the user to criminal sanctions -; under applicable laws, as well as to civil liability for the breach of the -; terms and conditions of this license. -; -; THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED -; OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF -; MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. -; LMI SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR -; CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. -; -; This is part of revision 1408 of the Stellaris Peripheral Driver Library. -; -;****************************************************************************** - -;****************************************************************************** -; -; Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> -; -;****************************************************************************** -Stack EQU 0x00000800 - -;****************************************************************************** -; -; Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> -; -;****************************************************************************** -Heap EQU 0x00000000 - -;****************************************************************************** -; -; Allocate space for the stack. -; -;****************************************************************************** - AREA STACK, NOINIT, READWRITE, ALIGN=3 -StackMem - SPACE Stack -__initial_sp - -;****************************************************************************** -; -; Allocate space for the heap. -; -;****************************************************************************** - AREA HEAP, NOINIT, READWRITE, ALIGN=3 -__heap_base -HeapMem - SPACE Heap -__heap_limit - -;****************************************************************************** -; -; Indicate that the code in this file preserves 8-byte alignment of the stack. -; -;****************************************************************************** - PRESERVE8 - -;****************************************************************************** -; -; Place code into the reset code section. -; -;****************************************************************************** - AREA RESET, CODE, READONLY - THUMB - -;****************************************************************************** -; -; The vector table. -; -;****************************************************************************** - EXPORT __Vectors -__Vectors - DCD StackMem + Stack ; Top of Stack - DCD Reset_Handler ; Reset Handler - DCD NmiSR ; NMI Handler - DCD FaultISR ; Hard Fault Handler - DCD IntDefaultHandler ; MPU Fault Handler - DCD IntDefaultHandler ; Bus Fault Handler - DCD IntDefaultHandler ; Usage Fault Handler - DCD 0 ; Reserved - DCD 0 ; Reserved - DCD 0 ; Reserved - DCD 0 ; Reserved - EXTERN vPortSVCHandler - DCD vPortSVCHandler ; SVCall Handler - DCD IntDefaultHandler ; Debug Monitor Handler - DCD 0 ; Reserved - EXTERN xPortPendSVHandler - DCD xPortPendSVHandler ; PendSV Handler - EXTERN xPortSysTickHandler - DCD xPortSysTickHandler ; SysTick Handler - DCD IntDefaultHandler ; GPIO Port A - DCD IntDefaultHandler ; GPIO Port B - DCD IntDefaultHandler ; GPIO Port C - DCD IntDefaultHandler ; GPIO Port D - DCD IntDefaultHandler ; GPIO Port E - DCD IntDefaultHandler ; UART0 - DCD IntDefaultHandler ; UART1 - DCD IntDefaultHandler ; SSI - DCD IntDefaultHandler ; I2C - DCD IntDefaultHandler ; PWM Fault - DCD IntDefaultHandler ; PWM Generator 0 - DCD IntDefaultHandler ; PWM Generator 1 - DCD IntDefaultHandler ; PWM Generator 2 - DCD IntDefaultHandler ; Quadrature Encoder - DCD IntDefaultHandler ; ADC Sequence 0 - DCD IntDefaultHandler ; ADC Sequence 1 - DCD IntDefaultHandler ; ADC Sequence 2 - DCD IntDefaultHandler ; ADC Sequence 3 - DCD IntDefaultHandler ; Watchdog - EXTERN Timer0IntHandler - DCD Timer0IntHandler ; Timer 0A - DCD IntDefaultHandler ; Timer 0B - DCD IntDefaultHandler ; Timer 1A - DCD IntDefaultHandler ; Timer 1B - EXTERN vT2InterruptHandler - DCD vT2InterruptHandler ; Timer 2A - DCD IntDefaultHandler ; Timer 2B - DCD IntDefaultHandler ; Comp 0 - DCD IntDefaultHandler ; Comp 1 - DCD IntDefaultHandler ; Comp 2 - DCD IntDefaultHandler ; System Control - DCD IntDefaultHandler ; Flash Control - DCD IntDefaultHandler ; GPIO Port F - DCD IntDefaultHandler ; GPIO Port G - DCD IntDefaultHandler ; GPIO Port H - DCD IntDefaultHandler ; UART2 Rx and Tx - DCD IntDefaultHandler ; SSI1 Rx and Tx - EXTERN vT3InterruptHandler - DCD vT3InterruptHandler ; Timer 3 subtimer A - DCD IntDefaultHandler ; Timer 3 subtimer B - DCD IntDefaultHandler ; I2C1 Master and Slave - DCD IntDefaultHandler ; Quadrature Encoder 1 - DCD IntDefaultHandler ; CAN0 - DCD IntDefaultHandler ; CAN1 - DCD 0 ; Reserved - EXTERN vEMAC_ISR - DCD vEMAC_ISR ; Ethernet - DCD IntDefaultHandler ; Hibernate - -;****************************************************************************** -; -; This is the code that gets called when the processor first starts execution -; following a reset event. -; -;****************************************************************************** - EXPORT Reset_Handler -Reset_Handler - ; - ; Call the C library enty point that handles startup. This will copy - ; the .data section initializers from flash to SRAM and zero fill the - ; .bss section. It will then call __rt_entry, which will be either the - ; C library version or the one supplied here depending on the - ; configured startup type. - ; - IMPORT __main - B __main - -;****************************************************************************** -; -; This is the code that gets called when the processor receives a NMI. This -; simply enters an infinite loop, preserving the system state for examination -; by a debugger. -; -;****************************************************************************** -NmiSR - B NmiSR - -;****************************************************************************** -; -; This is the code that gets called when the processor receives a fault -; interrupt. This simply enters an infinite loop, preserving the system state -; for examination by a debugger. -; -;****************************************************************************** -FaultISR - B FaultISR - -;****************************************************************************** -; -; This is the code that gets called when the processor receives an unexpected -; interrupt. This simply enters an infinite loop, preserving the system state -; for examination by a debugger. -; -;****************************************************************************** -IntDefaultHandler - B IntDefaultHandler - -;****************************************************************************** -; -; Make sure the end of this section is aligned. -; -;****************************************************************************** - ALIGN - -;****************************************************************************** -; -; Some code in the normal code section for initializing the heap and stack. -; -;****************************************************************************** - AREA |.text|, CODE, READONLY - -;****************************************************************************** -; -; The function expected of the C library startup code for defining the stack -; and heap memory locations. For the C library version of the startup code, -; provide this function so that the C library initialization code can find out -; the location of the stack and heap. -; -;****************************************************************************** - IF :DEF: __MICROLIB - EXPORT __initial_sp - EXPORT __heap_base - EXPORT __heap_limit - ELSE - IMPORT __use_two_region_memory - EXPORT __user_initial_stackheap -__user_initial_stackheap - LDR R0, =HeapMem - LDR R1, =(StackMem + Stack) - LDR R2, =(HeapMem + Heap) - LDR R3, =StackMem - BX LR - ENDIF - -;****************************************************************************** -; -; Make sure the end of this section is aligned. -; -;****************************************************************************** - ALIGN - -;****************************************************************************** -; -; Tell the assembler that we're done. -; -;****************************************************************************** - END diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/timertest.c b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/timertest.c deleted file mode 100644 index cbe03f5de..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/timertest.c +++ /dev/null @@ -1,132 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* High speed timer test as described in main.c. */ - -/* Scheduler includes. */ -#include "FreeRTOS.h" - -/* Library includes. */ -#include "hw_ints.h" -#include "hw_memmap.h" -#include "hw_types.h" -#include "interrupt.h" -#include "sysctl.h" -#include "lmi_timer.h" -#include "hw_timer.h" - -/* The set frequency of the interrupt. Deviations from this are measured as -the jitter. */ -#define timerINTERRUPT_FREQUENCY ( 20000UL ) - -/* The expected time between each of the timer interrupts - if the jitter was -zero. */ -#define timerEXPECTED_DIFFERENCE_VALUE ( configCPU_CLOCK_HZ / timerINTERRUPT_FREQUENCY ) - -/* The highest available interrupt priority. */ -#define timerHIGHEST_PRIORITY ( 0 ) - -/* Misc defines. */ -#define timerMAX_32BIT_VALUE ( 0xffffffffUL ) -#define timerTIMER_1_COUNT_VALUE ( * ( ( volatile unsigned long * ) ( ( unsigned long ) TIMER1_BASE + 0x48UL ) ) ) - -/*-----------------------------------------------------------*/ - -/* Interrupt handler in which the jitter is measured. */ -void Timer0IntHandler( void ); - -/* Stores the value of the maximum recorded jitter between interrupts. */ -volatile unsigned long ulMaxJitter = 0; - -/*-----------------------------------------------------------*/ - -void vSetupHighFrequencyTimer( void ) -{ -unsigned long ulFrequency; - - /* Timer zero is used to generate the interrupts, and timer 1 is used - to measure the jitter. */ - SysCtlPeripheralEnable( SYSCTL_PERIPH_TIMER0 ); - SysCtlPeripheralEnable( SYSCTL_PERIPH_TIMER1 ); - TimerConfigure( TIMER0_BASE, TIMER_CFG_32_BIT_PER ); - TimerConfigure( TIMER1_BASE, TIMER_CFG_32_BIT_PER ); - - /* Set the timer interrupt to be above the kernel - highest. */ - IntPrioritySet( INT_TIMER0A, timerHIGHEST_PRIORITY ); - - /* Just used to measure time. */ - TimerLoadSet(TIMER1_BASE, TIMER_A, timerMAX_32BIT_VALUE ); - - /* Ensure interrupts do not start until the scheduler is running. */ - portDISABLE_INTERRUPTS(); - - /* The rate at which the timer will interrupt. */ - ulFrequency = configCPU_CLOCK_HZ / timerINTERRUPT_FREQUENCY; - TimerLoadSet( TIMER0_BASE, TIMER_A, ulFrequency ); - IntEnable( INT_TIMER0A ); - TimerIntEnable( TIMER0_BASE, TIMER_TIMA_TIMEOUT ); - - /* Enable both timers. */ - TimerEnable( TIMER0_BASE, TIMER_A ); - TimerEnable( TIMER1_BASE, TIMER_A ); -} -/*-----------------------------------------------------------*/ - -void Timer0IntHandler( void ) -{ -unsigned long ulDifference; -volatile unsigned long ulCurrentCount; -static unsigned long ulMaxDifference = 0, ulLastCount = 0; - - /* We use the timer 1 counter value to measure the clock cycles between - the timer 0 interrupts. */ - ulCurrentCount = timerTIMER_1_COUNT_VALUE; - - TimerIntClear( TIMER0_BASE, TIMER_TIMA_TIMEOUT ); - - if( ulCurrentCount < ulLastCount ) - { - /* How many times has timer 1 counted since the last interrupt? */ - ulDifference = ulLastCount - ulCurrentCount; - - /* Is this the largest difference we have measured yet? */ - if( ulDifference > ulMaxDifference ) - { - ulMaxDifference = ulDifference; - ulMaxJitter = ulMaxDifference - timerEXPECTED_DIFFERENCE_VALUE; - } - } - - ulLastCount = ulCurrentCount; -} - - - - - - - diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/Makefile.webserver b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/Makefile.webserver deleted file mode 100644 index f38c47a72..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/Makefile.webserver +++ /dev/null @@ -1 +0,0 @@ -APP_SOURCES += httpd.c http-strings.c httpd-fs.c httpd-cgi.c diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/clock-arch.h b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/clock-arch.h deleted file mode 100644 index cde657b62..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/clock-arch.h +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright (c) 2006, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: clock-arch.h,v 1.2 2006/06/12 08:00:31 adam Exp $ - */ - -#ifndef __CLOCK_ARCH_H__ -#define __CLOCK_ARCH_H__ - -#include "FreeRTOS.h" - -typedef unsigned long clock_time_t; -#define CLOCK_CONF_SECOND configTICK_RATE_HZ - -#endif /* __CLOCK_ARCH_H__ */ diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/emac.c b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/emac.c deleted file mode 100644 index 82b780477..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/emac.c +++ /dev/null @@ -1,280 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* Kernel includes. */ -#include "FreeRTOS.h" -#include "semphr.h" -#include "task.h" - -/* Demo includes. */ -#include "emac.h" - -/* uIP includes. */ -#include "uip.h" - -/* Hardware library includes. */ -#include "hw_types.h" -#include "hw_memmap.h" -#include "hw_ints.h" -#include "hw_ethernet.h" -#include "ethernet.h" -#include "interrupt.h" - -#define emacNUM_RX_BUFFERS 5 -#define emacFRAM_SIZE_BYTES 2 -#define macNEGOTIATE_DELAY 2000 -#define macWAIT_SEND_TIME ( 10 ) - -/* The task that handles the MAC peripheral. This is created at a high -priority and is effectively a deferred interrupt handler. The peripheral -handling is deferred to a task to prevent the entire FIFO having to be read -from within an ISR. */ -void vMACHandleTask( void *pvParameters ); - -/*-----------------------------------------------------------*/ - -/* The semaphore used to wake the uIP task when data arrives. */ -SemaphoreHandle_t xEMACSemaphore = NULL; - -/* The semaphore used to wake the interrupt handler task. The peripheral -is processed at the task level to prevent the need to read the entire FIFO from -within the ISR itself. */ -SemaphoreHandle_t xMACInterruptSemaphore = NULL; - -/* The buffer used by the uIP stack. In this case the pointer is used to -point to one of the Rx buffers. */ -unsigned char *uip_buf; - -/* Buffers into which Rx data is placed. */ -static union -{ - unsigned long ulJustForAlignment; - unsigned char ucRxBuffers[ emacNUM_RX_BUFFERS ][ UIP_BUFSIZE + ( 4 * emacFRAM_SIZE_BYTES ) ]; -} uxRxBuffers; - -/* The length of the data within each of the Rx buffers. */ -static unsigned long ulRxLength[ emacNUM_RX_BUFFERS ]; - -/* Used to keep a track of the number of bytes to transmit. */ -static unsigned long ulNextTxSpace; - -/*-----------------------------------------------------------*/ - -portBASE_TYPE vInitEMAC( void ) -{ -unsigned long ulTemp; -portBASE_TYPE xReturn; - - /* Ensure all interrupts are disabled. */ - EthernetIntDisable( ETH_BASE, ( ETH_INT_PHY | ETH_INT_MDIO | ETH_INT_RXER | ETH_INT_RXOF | ETH_INT_TX | ETH_INT_TXER | ETH_INT_RX)); - - /* Clear any interrupts that were already pending. */ - ulTemp = EthernetIntStatus( ETH_BASE, pdFALSE ); - EthernetIntClear( ETH_BASE, ulTemp ); - - /* Initialise the MAC and connect. */ - EthernetInit( ETH_BASE ); - EthernetConfigSet( ETH_BASE, ( ETH_CFG_TX_DPLXEN | ETH_CFG_TX_CRCEN | ETH_CFG_TX_PADEN ) ); - EthernetEnable( ETH_BASE ); - - /* Mark each Rx buffer as empty. */ - for( ulTemp = 0; ulTemp < emacNUM_RX_BUFFERS; ulTemp++ ) - { - ulRxLength[ ulTemp ] = 0; - } - - /* Create the queue and task used to defer the MAC processing to the - task level. */ - vSemaphoreCreateBinary( xMACInterruptSemaphore ); - xSemaphoreTake( xMACInterruptSemaphore, 0 ); - xReturn = xTaskCreate( vMACHandleTask, "MAC", configMINIMAL_STACK_SIZE, NULL, configMAX_PRIORITIES - 1, NULL ); - vTaskDelay( macNEGOTIATE_DELAY ); - - /* We are only interested in Rx interrupts. */ - IntPrioritySet( INT_ETH, configKERNEL_INTERRUPT_PRIORITY ); - IntEnable( INT_ETH ); - EthernetIntEnable(ETH_BASE, ETH_INT_RX); - - return xReturn; -} -/*-----------------------------------------------------------*/ - -unsigned int uiGetEMACRxData( unsigned char *ucBuffer ) -{ -static unsigned long ulNextRxBuffer = 0; -unsigned int iLen; - - iLen = ulRxLength[ ulNextRxBuffer ]; - - if( iLen != 0 ) - { - /* Leave room for the size at the start of the buffer. */ - uip_buf = &( uxRxBuffers.ucRxBuffers[ ulNextRxBuffer ][ 2 ] ); - - ulRxLength[ ulNextRxBuffer ] = 0; - - ulNextRxBuffer++; - if( ulNextRxBuffer >= emacNUM_RX_BUFFERS ) - { - ulNextRxBuffer = 0; - } - } - - return iLen; -} -/*-----------------------------------------------------------*/ - -void vInitialiseSend( void ) -{ - /* Set the index to the first byte to send - skipping over the size - bytes. */ - ulNextTxSpace = 2; -} -/*-----------------------------------------------------------*/ - -void vIncrementTxLength( unsigned long ulLength ) -{ - ulNextTxSpace += ulLength; -} -/*-----------------------------------------------------------*/ - -void vSendBufferToMAC( void ) -{ -unsigned long *pulSource; -unsigned short * pus; -unsigned long ulNextWord; - - /* Locate the data to be send. */ - pus = ( unsigned short * ) uip_buf; - - /* Add in the size of the data. */ - pus--; - *pus = ulNextTxSpace; - - /* Wait for data to be sent if there is no space immediately. */ - while( !EthernetSpaceAvail( ETH_BASE ) ) - { - vTaskDelay( macWAIT_SEND_TIME ); - } - - pulSource = ( unsigned long * ) pus; - - for( ulNextWord = 0; ulNextWord < ulNextTxSpace; ulNextWord += sizeof( unsigned long ) ) - { - HWREG(ETH_BASE + MAC_O_DATA) = *pulSource; - pulSource++; - } - - /* Go. */ - HWREG( ETH_BASE + MAC_O_TR ) = MAC_TR_NEWTX; -} -/*-----------------------------------------------------------*/ - -void vEMAC_ISR( void ) -{ -portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE; -unsigned long ulTemp; - - /* Clear the interrupt. */ - ulTemp = EthernetIntStatus( ETH_BASE, pdFALSE ); - EthernetIntClear( ETH_BASE, ulTemp ); - - /* Was it an Rx interrupt? */ - if( ulTemp & ETH_INT_RX ) - { - xSemaphoreGiveFromISR( xMACInterruptSemaphore, &xHigherPriorityTaskWoken ); - EthernetIntDisable( ETH_BASE, ETH_INT_RX ); - } - - /* Switch to the uIP task. */ - portEND_SWITCHING_ISR( xHigherPriorityTaskWoken ); -} -/*-----------------------------------------------------------*/ - -void vMACHandleTask( void *pvParameters ) -{ -unsigned long i, ulInt; -unsigned long ulLength; -unsigned long *pulBuffer; -static unsigned long ulNextRxBuffer = 0; - - for( ;; ) - { - /* Wait for something to do. */ - xSemaphoreTake( xMACInterruptSemaphore, portMAX_DELAY ); - - while( ( ulInt = ( EthernetIntStatus( ETH_BASE, pdFALSE ) & ETH_INT_RX ) ) != 0 ) - { - ulLength = HWREG( ETH_BASE + MAC_O_DATA ); - - /* Leave room at the start of the buffer for the size. */ - pulBuffer = ( unsigned long * ) &( uxRxBuffers.ucRxBuffers[ ulNextRxBuffer ][ 2 ] ); - *pulBuffer = ( ulLength >> 16 ); - - /* Get the size of the data. */ - pulBuffer = ( unsigned long * ) &( uxRxBuffers.ucRxBuffers[ ulNextRxBuffer ][ 4 ] ); - ulLength &= 0xFFFF; - - if( ulLength > 4 ) - { - ulLength -= 4; - - if( ulLength >= UIP_BUFSIZE ) - { - /* The data won't fit in our buffer. Ensure we don't - try to write into the buffer. */ - ulLength = 0; - } - - /* Read out the data into our buffer. */ - for( i = 0; i < ulLength; i += sizeof( unsigned long ) ) - { - *pulBuffer = HWREG( ETH_BASE + MAC_O_DATA ); - pulBuffer++; - } - - /* Store the length of the data into the separate array. */ - ulRxLength[ ulNextRxBuffer ] = ulLength; - - /* Use the next buffer the next time through. */ - ulNextRxBuffer++; - if( ulNextRxBuffer >= emacNUM_RX_BUFFERS ) - { - ulNextRxBuffer = 0; - } - - /* Ensure the uIP task is not blocked as data has arrived. */ - xSemaphoreGive( xEMACSemaphore ); - } - } - - EthernetIntEnable( ETH_BASE, ETH_INT_RX ); - - ( void ) ulInt; - } -} - diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/emac.h b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/emac.h deleted file mode 100644 index a49b59828..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/emac.h +++ /dev/null @@ -1,322 +0,0 @@ -/*---------------------------------------------------------------------------- - * LPC2378 Ethernet Definitions - *---------------------------------------------------------------------------- - * Name: EMAC.H - * Purpose: Philips LPC2378 EMAC hardware definitions - *---------------------------------------------------------------------------- - * Copyright (c) 2006 KEIL - An ARM Company. All rights reserved. - *---------------------------------------------------------------------------*/ -#ifndef __EMAC_H -#define __EMAC_H - -/* MAC address definition. The MAC address must be unique on the network. */ -#define emacETHADDR0 0 -#define emacETHADDR1 0xbd -#define emacETHADDR2 0x33 -#define emacETHADDR3 0x02 -#define emacETHADDR4 0x64 -#define emacETHADDR5 0x24 - - -/* EMAC Memory Buffer configuration for 16K Ethernet RAM. */ -#define NUM_RX_FRAG 4 /* Num.of RX Fragments 4*1536= 6.0kB */ -#define NUM_TX_FRAG 2 /* Num.of TX Fragments 2*1536= 3.0kB */ -#define ETH_FRAG_SIZE 1536 /* Packet Fragment size 1536 Bytes */ - -#define ETH_MAX_FLEN 1536 /* Max. Ethernet Frame Size */ - -/* EMAC variables located in 16K Ethernet SRAM */ -#define RX_DESC_BASE 0x7FE00000 -#define RX_STAT_BASE (RX_DESC_BASE + NUM_RX_FRAG*8) -#define TX_DESC_BASE (RX_STAT_BASE + NUM_RX_FRAG*8) -#define TX_STAT_BASE (TX_DESC_BASE + NUM_TX_FRAG*8) -#define RX_BUF_BASE (TX_STAT_BASE + NUM_TX_FRAG*4) -#define TX_BUF_BASE (RX_BUF_BASE + NUM_RX_FRAG*ETH_FRAG_SIZE) - -/* RX and TX descriptor and status definitions. */ -#define RX_DESC_PACKET(i) (*(unsigned int *)(RX_DESC_BASE + 8*i)) -#define RX_DESC_CTRL(i) (*(unsigned int *)(RX_DESC_BASE+4 + 8*i)) -#define RX_STAT_INFO(i) (*(unsigned int *)(RX_STAT_BASE + 8*i)) -#define RX_STAT_HASHCRC(i) (*(unsigned int *)(RX_STAT_BASE+4 + 8*i)) -#define TX_DESC_PACKET(i) (*(unsigned int *)(TX_DESC_BASE + 8*i)) -#define TX_DESC_CTRL(i) (*(unsigned int *)(TX_DESC_BASE+4 + 8*i)) -#define TX_STAT_INFO(i) (*(unsigned int *)(TX_STAT_BASE + 4*i)) -#define RX_BUF(i) (RX_BUF_BASE + ETH_FRAG_SIZE*i) -#define TX_BUF(i) (TX_BUF_BASE + ETH_FRAG_SIZE*i) - -/* MAC Configuration Register 1 */ -#define MAC1_REC_EN 0x00000001 /* Receive Enable */ -#define MAC1_PASS_ALL 0x00000002 /* Pass All Receive Frames */ -#define MAC1_RX_FLOWC 0x00000004 /* RX Flow Control */ -#define MAC1_TX_FLOWC 0x00000008 /* TX Flow Control */ -#define MAC1_LOOPB 0x00000010 /* Loop Back Mode */ -#define MAC1_RES_TX 0x00000100 /* Reset TX Logic */ -#define MAC1_RES_MCS_TX 0x00000200 /* Reset MAC TX Control Sublayer */ -#define MAC1_RES_RX 0x00000400 /* Reset RX Logic */ -#define MAC1_RES_MCS_RX 0x00000800 /* Reset MAC RX Control Sublayer */ -#define MAC1_SIM_RES 0x00004000 /* Simulation Reset */ -#define MAC1_SOFT_RES 0x00008000 /* Soft Reset MAC */ - -/* MAC Configuration Register 2 */ -#define MAC2_FULL_DUP 0x00000001 /* Full Duplex Mode */ -#define MAC2_FRM_LEN_CHK 0x00000002 /* Frame Length Checking */ -#define MAC2_HUGE_FRM_EN 0x00000004 /* Huge Frame Enable */ -#define MAC2_DLY_CRC 0x00000008 /* Delayed CRC Mode */ -#define MAC2_CRC_EN 0x00000010 /* Append CRC to every Frame */ -#define MAC2_PAD_EN 0x00000020 /* Pad all Short Frames */ -#define MAC2_VLAN_PAD_EN 0x00000040 /* VLAN Pad Enable */ -#define MAC2_ADET_PAD_EN 0x00000080 /* Auto Detect Pad Enable */ -#define MAC2_PPREAM_ENF 0x00000100 /* Pure Preamble Enforcement */ -#define MAC2_LPREAM_ENF 0x00000200 /* Long Preamble Enforcement */ -#undef MAC2_NO_BACKOFF /* Remove compiler warning. */ -#define MAC2_NO_BACKOFF 0x00001000 /* No Backoff Algorithm */ -#define MAC2_BACK_PRESSURE 0x00002000 /* Backoff Presurre / No Backoff */ -#define MAC2_EXCESS_DEF 0x00004000 /* Excess Defer */ - -/* Back-to-Back Inter-Packet-Gap Register */ -#define IPGT_FULL_DUP 0x00000015 /* Recommended value for Full Duplex */ -#define IPGT_HALF_DUP 0x00000012 /* Recommended value for Half Duplex */ - -/* Non Back-to-Back Inter-Packet-Gap Register */ -#define IPGR_DEF 0x00000012 /* Recommended value */ - -/* Collision Window/Retry Register */ -#define CLRT_DEF 0x0000370F /* Default value */ - -/* PHY Support Register */ -#undef SUPP_SPEED /* Remove compiler warning. */ -#define SUPP_SPEED 0x00000100 /* Reduced MII Logic Current Speed */ -#define SUPP_RES_RMII 0x00000800 /* Reset Reduced MII Logic */ - -/* Test Register */ -#define TEST_SHCUT_PQUANTA 0x00000001 /* Shortcut Pause Quanta */ -#define TEST_TST_PAUSE 0x00000002 /* Test Pause */ -#define TEST_TST_BACKP 0x00000004 /* Test Back Pressure */ - -/* MII Management Configuration Register */ -#define MCFG_SCAN_INC 0x00000001 /* Scan Increment PHY Address */ -#define MCFG_SUPP_PREAM 0x00000002 /* Suppress Preamble */ -#define MCFG_CLK_SEL 0x0000001C /* Clock Select Mask */ -#define MCFG_RES_MII 0x00008000 /* Reset MII Management Hardware */ - -/* MII Management Command Register */ -#undef MCMD_READ /* Remove compiler warning. */ -#define MCMD_READ 0x00000001 /* MII Read */ -#undef MCMD_SCAN /* Remove compiler warning. */ -#define MCMD_SCAN 0x00000002 /* MII Scan continuously */ - -#define MII_WR_TOUT 0x00050000 /* MII Write timeout count */ -#define MII_RD_TOUT 0x00050000 /* MII Read timeout count */ - -/* MII Management Address Register */ -#define MADR_REG_ADR 0x0000001F /* MII Register Address Mask */ -#define MADR_PHY_ADR 0x00001F00 /* PHY Address Mask */ - -/* MII Management Indicators Register */ -#undef MIND_BUSY /* Remove compiler warning. */ -#define MIND_BUSY 0x00000001 /* MII is Busy */ -#define MIND_SCAN 0x00000002 /* MII Scanning in Progress */ -#define MIND_NOT_VAL 0x00000004 /* MII Read Data not valid */ -#define MIND_MII_LINK_FAIL 0x00000008 /* MII Link Failed */ - -/* Command Register */ -#define CR_RX_EN 0x00000001 /* Enable Receive */ -#define CR_TX_EN 0x00000002 /* Enable Transmit */ -#define CR_REG_RES 0x00000008 /* Reset Host Registers */ -#define CR_TX_RES 0x00000010 /* Reset Transmit Datapath */ -#define CR_RX_RES 0x00000020 /* Reset Receive Datapath */ -#define CR_PASS_RUNT_FRM 0x00000040 /* Pass Runt Frames */ -#define CR_PASS_RX_FILT 0x00000080 /* Pass RX Filter */ -#define CR_TX_FLOW_CTRL 0x00000100 /* TX Flow Control */ -#define CR_RMII 0x00000200 /* Reduced MII Interface */ -#define CR_FULL_DUP 0x00000400 /* Full Duplex */ - -/* Status Register */ -#define SR_RX_EN 0x00000001 /* Enable Receive */ -#define SR_TX_EN 0x00000002 /* Enable Transmit */ - -/* Transmit Status Vector 0 Register */ -#define TSV0_CRC_ERR 0x00000001 /* CRC error */ -#define TSV0_LEN_CHKERR 0x00000002 /* Length Check Error */ -#define TSV0_LEN_OUTRNG 0x00000004 /* Length Out of Range */ -#define TSV0_DONE 0x00000008 /* Tramsmission Completed */ -#define TSV0_MCAST 0x00000010 /* Multicast Destination */ -#define TSV0_BCAST 0x00000020 /* Broadcast Destination */ -#define TSV0_PKT_DEFER 0x00000040 /* Packet Deferred */ -#define TSV0_EXC_DEFER 0x00000080 /* Excessive Packet Deferral */ -#define TSV0_EXC_COLL 0x00000100 /* Excessive Collision */ -#define TSV0_LATE_COLL 0x00000200 /* Late Collision Occured */ -#define TSV0_GIANT 0x00000400 /* Giant Frame */ -#define TSV0_UNDERRUN 0x00000800 /* Buffer Underrun */ -#define TSV0_BYTES 0x0FFFF000 /* Total Bytes Transferred */ -#define TSV0_CTRL_FRAME 0x10000000 /* Control Frame */ -#define TSV0_PAUSE 0x20000000 /* Pause Frame */ -#define TSV0_BACK_PRESS 0x40000000 /* Backpressure Method Applied */ -#define TSV0_VLAN 0x80000000 /* VLAN Frame */ - -/* Transmit Status Vector 1 Register */ -#define TSV1_BYTE_CNT 0x0000FFFF /* Transmit Byte Count */ -#define TSV1_COLL_CNT 0x000F0000 /* Transmit Collision Count */ - -/* Receive Status Vector Register */ -#define RSV_BYTE_CNT 0x0000FFFF /* Receive Byte Count */ -#define RSV_PKT_IGNORED 0x00010000 /* Packet Previously Ignored */ -#define RSV_RXDV_SEEN 0x00020000 /* RXDV Event Previously Seen */ -#define RSV_CARR_SEEN 0x00040000 /* Carrier Event Previously Seen */ -#define RSV_REC_CODEV 0x00080000 /* Receive Code Violation */ -#define RSV_CRC_ERR 0x00100000 /* CRC Error */ -#define RSV_LEN_CHKERR 0x00200000 /* Length Check Error */ -#define RSV_LEN_OUTRNG 0x00400000 /* Length Out of Range */ -#define RSV_REC_OK 0x00800000 /* Frame Received OK */ -#define RSV_MCAST 0x01000000 /* Multicast Frame */ -#define RSV_BCAST 0x02000000 /* Broadcast Frame */ -#define RSV_DRIB_NIBB 0x04000000 /* Dribble Nibble */ -#define RSV_CTRL_FRAME 0x08000000 /* Control Frame */ -#define RSV_PAUSE 0x10000000 /* Pause Frame */ -#define RSV_UNSUPP_OPC 0x20000000 /* Unsupported Opcode */ -#define RSV_VLAN 0x40000000 /* VLAN Frame */ - -/* Flow Control Counter Register */ -#define FCC_MIRR_CNT 0x0000FFFF /* Mirror Counter */ -#define FCC_PAUSE_TIM 0xFFFF0000 /* Pause Timer */ - -/* Flow Control Status Register */ -#define FCS_MIRR_CNT 0x0000FFFF /* Mirror Counter Current */ - -/* Receive Filter Control Register */ -#define RFC_UCAST_EN 0x00000001 /* Accept Unicast Frames Enable */ -#define RFC_BCAST_EN 0x00000002 /* Accept Broadcast Frames Enable */ -#define RFC_MCAST_EN 0x00000004 /* Accept Multicast Frames Enable */ -#define RFC_UCAST_HASH_EN 0x00000008 /* Accept Unicast Hash Filter Frames */ -#define RFC_MCAST_HASH_EN 0x00000010 /* Accept Multicast Hash Filter Fram.*/ -#define RFC_PERFECT_EN 0x00000020 /* Accept Perfect Match Enable */ -#define RFC_MAGP_WOL_EN 0x00001000 /* Magic Packet Filter WoL Enable */ -#define RFC_PFILT_WOL_EN 0x00002000 /* Perfect Filter WoL Enable */ - -/* Receive Filter WoL Status/Clear Registers */ -#define WOL_UCAST 0x00000001 /* Unicast Frame caused WoL */ -#define WOL_BCAST 0x00000002 /* Broadcast Frame caused WoL */ -#define WOL_MCAST 0x00000004 /* Multicast Frame caused WoL */ -#define WOL_UCAST_HASH 0x00000008 /* Unicast Hash Filter Frame WoL */ -#define WOL_MCAST_HASH 0x00000010 /* Multicast Hash Filter Frame WoL */ -#define WOL_PERFECT 0x00000020 /* Perfect Filter WoL */ -#define WOL_RX_FILTER 0x00000080 /* RX Filter caused WoL */ -#define WOL_MAG_PACKET 0x00000100 /* Magic Packet Filter caused WoL */ - -/* Interrupt Status/Enable/Clear/Set Registers */ -#define INT_RX_OVERRUN 0x00000001 /* Overrun Error in RX Queue */ -#define INT_RX_ERR 0x00000002 /* Receive Error */ -#define INT_RX_FIN 0x00000004 /* RX Finished Process Descriptors */ -#define INT_RX_DONE 0x00000008 /* Receive Done */ -#define INT_TX_UNDERRUN 0x00000010 /* Transmit Underrun */ -#define INT_TX_ERR 0x00000020 /* Transmit Error */ -#define INT_TX_FIN 0x00000040 /* TX Finished Process Descriptors */ -#define INT_TX_DONE 0x00000080 /* Transmit Done */ -#define INT_SOFT_INT 0x00001000 /* Software Triggered Interrupt */ -#define INT_WAKEUP 0x00002000 /* Wakeup Event Interrupt */ - -/* Power Down Register */ -#define PD_POWER_DOWN 0x80000000 /* Power Down MAC */ - -/* RX Descriptor Control Word */ -#define RCTRL_SIZE 0x000007FF /* Buffer size mask */ -#define RCTRL_INT 0x80000000 /* Generate RxDone Interrupt */ - -/* RX Status Hash CRC Word */ -#define RHASH_SA 0x000001FF /* Hash CRC for Source Address */ -#define RHASH_DA 0x001FF000 /* Hash CRC for Destination Address */ - -/* RX Status Information Word */ -#define RINFO_SIZE 0x000007FF /* Data size in bytes */ -#define RINFO_CTRL_FRAME 0x00040000 /* Control Frame */ -#define RINFO_VLAN 0x00080000 /* VLAN Frame */ -#define RINFO_FAIL_FILT 0x00100000 /* RX Filter Failed */ -#define RINFO_MCAST 0x00200000 /* Multicast Frame */ -#define RINFO_BCAST 0x00400000 /* Broadcast Frame */ -#define RINFO_CRC_ERR 0x00800000 /* CRC Error in Frame */ -#define RINFO_SYM_ERR 0x01000000 /* Symbol Error from PHY */ -#define RINFO_LEN_ERR 0x02000000 /* Length Error */ -#define RINFO_RANGE_ERR 0x04000000 /* Range Error (exceeded max. size) */ -#define RINFO_ALIGN_ERR 0x08000000 /* Alignment Error */ -#define RINFO_OVERRUN 0x10000000 /* Receive overrun */ -#define RINFO_NO_DESCR 0x20000000 /* No new Descriptor available */ -#define RINFO_LAST_FLAG 0x40000000 /* Last Fragment in Frame */ -#define RINFO_ERR 0x80000000 /* Error Occured (OR of all errors) */ - -#define RINFO_ERR_MASK (RINFO_FAIL_FILT | RINFO_CRC_ERR | RINFO_SYM_ERR | \ - RINFO_LEN_ERR | RINFO_ALIGN_ERR | RINFO_OVERRUN) - -/* TX Descriptor Control Word */ -#define TCTRL_SIZE 0x000007FF /* Size of data buffer in bytes */ -#define TCTRL_OVERRIDE 0x04000000 /* Override Default MAC Registers */ -#define TCTRL_HUGE 0x08000000 /* Enable Huge Frame */ -#define TCTRL_PAD 0x10000000 /* Pad short Frames to 64 bytes */ -#define TCTRL_CRC 0x20000000 /* Append a hardware CRC to Frame */ -#define TCTRL_LAST 0x40000000 /* Last Descriptor for TX Frame */ -#define TCTRL_INT 0x80000000 /* Generate TxDone Interrupt */ - -/* TX Status Information Word */ -#define TINFO_COL_CNT 0x01E00000 /* Collision Count */ -#define TINFO_DEFER 0x02000000 /* Packet Deferred (not an error) */ -#define TINFO_EXCESS_DEF 0x04000000 /* Excessive Deferral */ -#define TINFO_EXCESS_COL 0x08000000 /* Excessive Collision */ -#define TINFO_LATE_COL 0x10000000 /* Late Collision Occured */ -#define TINFO_UNDERRUN 0x20000000 /* Transmit Underrun */ -#define TINFO_NO_DESCR 0x40000000 /* No new Descriptor available */ -#define TINFO_ERR 0x80000000 /* Error Occured (OR of all errors) */ - -/* DP83848C PHY Registers */ -#define PHY_REG_BMCR 0x00 /* Basic Mode Control Register */ -#define PHY_REG_BMSR 0x01 /* Basic Mode Status Register */ -#define PHY_REG_IDR1 0x02 /* PHY Identifier 1 */ -#define PHY_REG_IDR2 0x03 /* PHY Identifier 2 */ -#define PHY_REG_ANAR 0x04 /* Auto-Negotiation Advertisement */ -#define PHY_REG_ANLPAR 0x05 /* Auto-Neg. Link Partner Abitily */ -#define PHY_REG_ANER 0x06 /* Auto-Neg. Expansion Register */ -#define PHY_REG_ANNPTR 0x07 /* Auto-Neg. Next Page TX */ - -/* PHY Extended Registers */ -#define PHY_REG_STS 0x10 /* Status Register */ -#define PHY_REG_MICR 0x11 /* MII Interrupt Control Register */ -#define PHY_REG_MISR 0x12 /* MII Interrupt Status Register */ -#define PHY_REG_FCSCR 0x14 /* False Carrier Sense Counter */ -#define PHY_REG_RECR 0x15 /* Receive Error Counter */ -#define PHY_REG_PCSR 0x16 /* PCS Sublayer Config. and Status */ -#define PHY_REG_RBR 0x17 /* RMII and Bypass Register */ -#define PHY_REG_LEDCR 0x18 /* LED Direct Control Register */ -#define PHY_REG_PHYCR 0x19 /* PHY Control Register */ -#define PHY_REG_10BTSCR 0x1A /* 10Base-T Status/Control Register */ -#define PHY_REG_CDCTRL1 0x1B /* CD Test Control and BIST Extens. */ -#define PHY_REG_EDCR 0x1D /* Energy Detect Control Register */ - -#define PHY_FULLD_100M 0x2100 /* Full Duplex 100Mbit */ -#define PHY_HALFD_100M 0x2000 /* Half Duplex 100Mbit */ -#define PHY_FULLD_10M 0x0100 /* Full Duplex 10Mbit */ -#define PHY_HALFD_10M 0x0000 /* Half Duplex 10MBit */ -#define PHY_AUTO_NEG 0x3000 /* Select Auto Negotiation */ - -#define DP83848C_DEF_ADR 0x0100 /* Default PHY device address */ -#define DP83848C_ID 0x20005C90 /* PHY Identifier */ - -// prototypes -portBASE_TYPE vInitEMAC(void); -unsigned short ReadFrameBE_EMAC(void); -void vIncrementTxLength(unsigned long ulLength); -void CopyFromFrame_EMAC(void *Dest, unsigned short Size); -void DummyReadFrame_EMAC(unsigned short Size); -unsigned short StartReadFrame(void); -void EndReadFrame(void); -unsigned int CheckFrameReceived(void); -void vInitialiseSend(void); -unsigned int Rdy4Tx(void); -void vSendBufferToMAC(void); -void vEMACWaitForInput( void ); -unsigned int uiGetEMACRxData( unsigned char *ucBuffer ); - - -#endif - -/*---------------------------------------------------------------------------- - * end of file - *---------------------------------------------------------------------------*/ - diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/http-strings b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/http-strings deleted file mode 100644 index 0d3c30cdd..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/http-strings +++ /dev/null @@ -1,35 +0,0 @@ -http_http "http://" -http_200 "200 " -http_301 "301 " -http_302 "302 " -http_get "GET " -http_10 "HTTP/1.0" -http_11 "HTTP/1.1" -http_content_type "content-type: " -http_texthtml "text/html" -http_location "location: " -http_host "host: " -http_crnl "\r\n" -http_index_html "/index.html" -http_404_html "/404.html" -http_referer "Referer:" -http_header_200 "HTTP/1.0 200 OK\r\nServer: uIP/1.0 http://www.sics.se/~adam/uip/\r\nConnection: close\r\n" -http_header_404 "HTTP/1.0 404 Not found\r\nServer: uIP/1.0 http://www.sics.se/~adam/uip/\r\nConnection: close\r\n" -http_content_type_plain "Content-type: text/plain\r\n\r\n" -http_content_type_html "Content-type: text/html\r\n\r\n" -http_content_type_css "Content-type: text/css\r\n\r\n" -http_content_type_text "Content-type: text/text\r\n\r\n" -http_content_type_png "Content-type: image/png\r\n\r\n" -http_content_type_gif "Content-type: image/gif\r\n\r\n" -http_content_type_jpg "Content-type: image/jpeg\r\n\r\n" -http_content_type_binary "Content-type: application/octet-stream\r\n\r\n" -http_html ".html" -http_shtml ".shtml" -http_htm ".htm" -http_css ".css" -http_png ".png" -http_gif ".gif" -http_jpg ".jpg" -http_text ".txt" -http_txt ".txt" - diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/http-strings.c b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/http-strings.c deleted file mode 100644 index ef7a41c7d..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/http-strings.c +++ /dev/null @@ -1,102 +0,0 @@ -const char http_http[8] = -/* "http://" */ -{0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, }; -const char http_200[5] = -/* "200 " */ -{0x32, 0x30, 0x30, 0x20, }; -const char http_301[5] = -/* "301 " */ -{0x33, 0x30, 0x31, 0x20, }; -const char http_302[5] = -/* "302 " */ -{0x33, 0x30, 0x32, 0x20, }; -const char http_get[5] = -/* "GET " */ -{0x47, 0x45, 0x54, 0x20, }; -const char http_10[9] = -/* "HTTP/1.0" */ -{0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30, }; -const char http_11[9] = -/* "HTTP/1.1" */ -{0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x31, }; -const char http_content_type[15] = -/* "content-type: " */ -{0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, }; -const char http_texthtml[10] = -/* "text/html" */ -{0x74, 0x65, 0x78, 0x74, 0x2f, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_location[11] = -/* "location: " */ -{0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, }; -const char http_host[7] = -/* "host: " */ -{0x68, 0x6f, 0x73, 0x74, 0x3a, 0x20, }; -const char http_crnl[3] = -/* "\r\n" */ -{0xd, 0xa, }; -const char http_index_html[12] = -/* "/index.html" */ -{0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_404_html[10] = -/* "/404.html" */ -{0x2f, 0x34, 0x30, 0x34, 0x2e, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_referer[9] = -/* "Referer:" */ -{0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x72, 0x3a, }; -const char http_header_200[84] = -/* "HTTP/1.0 200 OK\r\nServer: uIP/1.0 http://www.sics.se/~adam/uip/\r\nConnection: close\r\n" */ -{0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x32, 0x30, 0x30, 0x20, 0x4f, 0x4b, 0xd, 0xa, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x3a, 0x20, 0x75, 0x49, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x73, 0x69, 0x63, 0x73, 0x2e, 0x73, 0x65, 0x2f, 0x7e, 0x61, 0x64, 0x61, 0x6d, 0x2f, 0x75, 0x69, 0x70, 0x2f, 0xd, 0xa, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0xd, 0xa, }; -const char http_header_404[91] = -/* "HTTP/1.0 404 Not found\r\nServer: uIP/1.0 http://www.sics.se/~adam/uip/\r\nConnection: close\r\n" */ -{0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x34, 0x30, 0x34, 0x20, 0x4e, 0x6f, 0x74, 0x20, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0xd, 0xa, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x3a, 0x20, 0x75, 0x49, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x73, 0x69, 0x63, 0x73, 0x2e, 0x73, 0x65, 0x2f, 0x7e, 0x61, 0x64, 0x61, 0x6d, 0x2f, 0x75, 0x69, 0x70, 0x2f, 0xd, 0xa, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0xd, 0xa, }; -const char http_content_type_plain[29] = -/* "Content-type: text/plain\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_html[28] = -/* "Content-type: text/html\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_css [27] = -/* "Content-type: text/css\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x63, 0x73, 0x73, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_text[28] = -/* "Content-type: text/text\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x74, 0x65, 0x78, 0x74, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_png [28] = -/* "Content-type: image/png\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x70, 0x6e, 0x67, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_gif [28] = -/* "Content-type: image/gif\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x67, 0x69, 0x66, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_jpg [29] = -/* "Content-type: image/jpeg\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x6a, 0x70, 0x65, 0x67, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_binary[43] = -/* "Content-type: application/octet-stream\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x6f, 0x63, 0x74, 0x65, 0x74, 0x2d, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0xd, 0xa, 0xd, 0xa, }; -const char http_html[6] = -/* ".html" */ -{0x2e, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_shtml[7] = -/* ".shtml" */ -{0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_htm[5] = -/* ".htm" */ -{0x2e, 0x68, 0x74, 0x6d, }; -const char http_css[5] = -/* ".css" */ -{0x2e, 0x63, 0x73, 0x73, }; -const char http_png[5] = -/* ".png" */ -{0x2e, 0x70, 0x6e, 0x67, }; -const char http_gif[5] = -/* ".gif" */ -{0x2e, 0x67, 0x69, 0x66, }; -const char http_jpg[5] = -/* ".jpg" */ -{0x2e, 0x6a, 0x70, 0x67, }; -const char http_text[5] = -/* ".txt" */ -{0x2e, 0x74, 0x78, 0x74, }; -const char http_txt[5] = -/* ".txt" */ -{0x2e, 0x74, 0x78, 0x74, }; diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/http-strings.h b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/http-strings.h deleted file mode 100644 index acbe7e17f..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/http-strings.h +++ /dev/null @@ -1,34 +0,0 @@ -extern const char http_http[8]; -extern const char http_200[5]; -extern const char http_301[5]; -extern const char http_302[5]; -extern const char http_get[5]; -extern const char http_10[9]; -extern const char http_11[9]; -extern const char http_content_type[15]; -extern const char http_texthtml[10]; -extern const char http_location[11]; -extern const char http_host[7]; -extern const char http_crnl[3]; -extern const char http_index_html[12]; -extern const char http_404_html[10]; -extern const char http_referer[9]; -extern const char http_header_200[84]; -extern const char http_header_404[91]; -extern const char http_content_type_plain[29]; -extern const char http_content_type_html[28]; -extern const char http_content_type_css [27]; -extern const char http_content_type_text[28]; -extern const char http_content_type_png [28]; -extern const char http_content_type_gif [28]; -extern const char http_content_type_jpg [29]; -extern const char http_content_type_binary[43]; -extern const char http_html[6]; -extern const char http_shtml[7]; -extern const char http_htm[5]; -extern const char http_css[5]; -extern const char http_png[5]; -extern const char http_gif[5]; -extern const char http_jpg[5]; -extern const char http_text[5]; -extern const char http_txt[5]; diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/httpd-cgi.c b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/httpd-cgi.c deleted file mode 100644 index 76e1c3d2b..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/httpd-cgi.c +++ /dev/null @@ -1,269 +0,0 @@ -/** - * \addtogroup httpd - * @{ - */ - -/** - * \file - * Web server script interface - * \author - * Adam Dunkels - * - */ - -/* - * Copyright (c) 2001-2006, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: httpd-cgi.c,v 1.2 2006/06/11 21:46:37 adam Exp $ - * - */ - -#include "uip.h" -#include "psock.h" -#include "httpd.h" -#include "httpd-cgi.h" -#include "httpd-fs.h" - -#include -#include - -HTTPD_CGI_CALL(file, "file-stats", file_stats); -HTTPD_CGI_CALL(tcp, "tcp-connections", tcp_stats); -HTTPD_CGI_CALL(net, "net-stats", net_stats); -HTTPD_CGI_CALL(rtos, "rtos-stats", rtos_stats ); -HTTPD_CGI_CALL(io, "led-io", led_io ); - - -static const struct httpd_cgi_call * calls[] = { &file, &tcp, &net, &rtos, &io, NULL }; - -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(nullfunction(struct httpd_state *s, char *ptr)) -{ - PSOCK_BEGIN(&s->sout); - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -httpd_cgifunction -httpd_cgi(char *name) -{ - const struct httpd_cgi_call **f; - - /* Find the matching name in the table, return the function. */ - for(f = calls; *f != NULL; ++f) { - if(strncmp((*f)->name, name, strlen((*f)->name)) == 0) { - return (*f)->function; - } - } - return nullfunction; -} -/*---------------------------------------------------------------------------*/ -static unsigned short -generate_file_stats(void *arg) -{ - char *f = (char *)arg; - return snprintf((char *)uip_appdata, UIP_APPDATA_SIZE, "%5u", httpd_fs_count(f)); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(file_stats(struct httpd_state *s, char *ptr)) -{ - PSOCK_BEGIN(&s->sout); - - PSOCK_GENERATOR_SEND(&s->sout, generate_file_stats, strchr(ptr, ' ') + 1); - - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -static const char closed[] = /* "CLOSED",*/ -{0x43, 0x4c, 0x4f, 0x53, 0x45, 0x44, 0}; -static const char syn_rcvd[] = /* "SYN-RCVD",*/ -{0x53, 0x59, 0x4e, 0x2d, 0x52, 0x43, 0x56, - 0x44, 0}; -static const char syn_sent[] = /* "SYN-SENT",*/ -{0x53, 0x59, 0x4e, 0x2d, 0x53, 0x45, 0x4e, - 0x54, 0}; -static const char established[] = /* "ESTABLISHED",*/ -{0x45, 0x53, 0x54, 0x41, 0x42, 0x4c, 0x49, 0x53, 0x48, - 0x45, 0x44, 0}; -static const char fin_wait_1[] = /* "FIN-WAIT-1",*/ -{0x46, 0x49, 0x4e, 0x2d, 0x57, 0x41, 0x49, - 0x54, 0x2d, 0x31, 0}; -static const char fin_wait_2[] = /* "FIN-WAIT-2",*/ -{0x46, 0x49, 0x4e, 0x2d, 0x57, 0x41, 0x49, - 0x54, 0x2d, 0x32, 0}; -static const char closing[] = /* "CLOSING",*/ -{0x43, 0x4c, 0x4f, 0x53, 0x49, - 0x4e, 0x47, 0}; -static const char time_wait[] = /* "TIME-WAIT,"*/ -{0x54, 0x49, 0x4d, 0x45, 0x2d, 0x57, 0x41, - 0x49, 0x54, 0}; -static const char last_ack[] = /* "LAST-ACK"*/ -{0x4c, 0x41, 0x53, 0x54, 0x2d, 0x41, 0x43, - 0x4b, 0}; - -static const char *states[] = { - closed, - syn_rcvd, - syn_sent, - established, - fin_wait_1, - fin_wait_2, - closing, - time_wait, - last_ack}; - - -static unsigned short -generate_tcp_stats(void *arg) -{ - struct uip_conn *conn; - struct httpd_state *s = (struct httpd_state *)arg; - - conn = &uip_conns[s->count]; - return snprintf((char *)uip_appdata, UIP_APPDATA_SIZE, - "
\r\n", - htons(conn->lport), - htons(conn->ripaddr[0]) >> 8, - htons(conn->ripaddr[0]) & 0xff, - htons(conn->ripaddr[1]) >> 8, - htons(conn->ripaddr[1]) & 0xff, - htons(conn->rport), - states[conn->tcpstateflags & UIP_TS_MASK], - conn->nrtx, - conn->timer, - (uip_outstanding(conn))? '*':' ', - (uip_stopped(conn))? '!':' '); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(tcp_stats(struct httpd_state *s, char *ptr)) -{ - - PSOCK_BEGIN(&s->sout); - - for(s->count = 0; s->count < UIP_CONNS; ++s->count) { - if((uip_conns[s->count].tcpstateflags & UIP_TS_MASK) != UIP_CLOSED) { - PSOCK_GENERATOR_SEND(&s->sout, generate_tcp_stats, s); - } - } - - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -static unsigned short -generate_net_stats(void *arg) -{ - struct httpd_state *s = (struct httpd_state *)arg; - return snprintf((char *)uip_appdata, UIP_APPDATA_SIZE, - "%5u\n", ((uip_stats_t *)&uip_stat)[s->count]); -} - -static -PT_THREAD(net_stats(struct httpd_state *s, char *ptr)) -{ - PSOCK_BEGIN(&s->sout); - -#if UIP_STATISTICS - - for(s->count = 0; s->count < sizeof(uip_stat) / sizeof(uip_stats_t); - ++s->count) { - PSOCK_GENERATOR_SEND(&s->sout, generate_net_stats, s); - } - -#endif /* UIP_STATISTICS */ - - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ - -extern void vTaskList( char *pcWriteBuffer ); -static char cCountBuf[ 32 ]; -long lRefreshCount = 0; -static unsigned short -generate_rtos_stats(void *arg) -{ - lRefreshCount++; - sprintf( cCountBuf, "


Refresh count = %d", lRefreshCount ); - vTaskList( ( char * ) uip_appdata ); - strcat( uip_appdata, cCountBuf ); - - return strlen( uip_appdata ); -} -/*---------------------------------------------------------------------------*/ - - -static -PT_THREAD(rtos_stats(struct httpd_state *s, char *ptr)) -{ - PSOCK_BEGIN(&s->sout); - PSOCK_GENERATOR_SEND(&s->sout, generate_rtos_stats, NULL); - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ - -char *pcStatus; -extern unsigned long uxParTestGetLED( unsigned long uxLED ); - -static unsigned short generate_io_state( void *arg ) -{ - if( uxParTestGetLED( 0 ) ) - { - pcStatus = "checked"; - } - else - { - pcStatus = ""; - } - - sprintf( uip_appdata, - "LED"\ - "

"\ - "", - pcStatus ); - - return strlen( uip_appdata ); -} -/*---------------------------------------------------------------------------*/ - -static PT_THREAD(led_io(struct httpd_state *s, char *ptr)) -{ - PSOCK_BEGIN(&s->sout); - PSOCK_GENERATOR_SEND(&s->sout, generate_io_state, NULL); - PSOCK_END(&s->sout); -} - -/** @} */ - - - - - - diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/httpd-cgi.h b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/httpd-cgi.h deleted file mode 100644 index 7ae928321..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/httpd-cgi.h +++ /dev/null @@ -1,84 +0,0 @@ -/** - * \addtogroup httpd - * @{ - */ - -/** - * \file - * Web server script interface header file - * \author - * Adam Dunkels - * - */ - - - -/* - * Copyright (c) 2001, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: httpd-cgi.h,v 1.2 2006/06/11 21:46:38 adam Exp $ - * - */ - -#ifndef __HTTPD_CGI_H__ -#define __HTTPD_CGI_H__ - -#include "psock.h" -#include "httpd.h" - -typedef PT_THREAD((* httpd_cgifunction)(struct httpd_state *, char *)); - -httpd_cgifunction httpd_cgi(char *name); - -struct httpd_cgi_call { - const char *name; - const httpd_cgifunction function; -}; - -/** - * \brief HTTPD CGI function declaration - * \param name The C variable name of the function - * \param str The string name of the function, used in the script file - * \param function A pointer to the function that implements it - * - * This macro is used for declaring a HTTPD CGI - * function. This function is then added to the list of - * HTTPD CGI functions with the httpd_cgi_add() function. - * - * \hideinitializer - */ -#define HTTPD_CGI_CALL(name, str, function) \ -static PT_THREAD(function(struct httpd_state *, char *)); \ -static const struct httpd_cgi_call name = {str, function} - -void httpd_cgi_init(void); -#endif /* __HTTPD_CGI_H__ */ - -/** @} */ diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/httpd-fs.c b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/httpd-fs.c deleted file mode 100644 index dc4aef011..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/httpd-fs.c +++ /dev/null @@ -1,132 +0,0 @@ -/* - * Copyright (c) 2001, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - * $Id: httpd-fs.c,v 1.1 2006/06/07 09:13:08 adam Exp $ - */ - -#include "httpd.h" -#include "httpd-fs.h" -#include "httpd-fsdata.h" - -#ifndef NULL -#define NULL 0 -#endif /* NULL */ - -#include "httpd-fsdata.c" - -#if HTTPD_FS_STATISTICS -static u16_t count[HTTPD_FS_NUMFILES]; -#endif /* HTTPD_FS_STATISTICS */ - -/*-----------------------------------------------------------------------------------*/ -static u8_t -httpd_fs_strcmp(const char *str1, const char *str2) -{ - u8_t i; - i = 0; - loop: - - if(str2[i] == 0 || - str1[i] == '\r' || - str1[i] == '\n') { - return 0; - } - - if(str1[i] != str2[i]) { - return 1; - } - - - ++i; - goto loop; -} -/*-----------------------------------------------------------------------------------*/ -int -httpd_fs_open(const char *name, struct httpd_fs_file *file) -{ -#if HTTPD_FS_STATISTICS - u16_t i = 0; -#endif /* HTTPD_FS_STATISTICS */ - struct httpd_fsdata_file_noconst *f; - - for(f = (struct httpd_fsdata_file_noconst *)HTTPD_FS_ROOT; - f != NULL; - f = (struct httpd_fsdata_file_noconst *)f->next) { - - if(httpd_fs_strcmp(name, f->name) == 0) { - file->data = f->data; - file->len = f->len; -#if HTTPD_FS_STATISTICS - ++count[i]; -#endif /* HTTPD_FS_STATISTICS */ - return 1; - } -#if HTTPD_FS_STATISTICS - ++i; -#endif /* HTTPD_FS_STATISTICS */ - - } - return 0; -} -/*-----------------------------------------------------------------------------------*/ -void -httpd_fs_init(void) -{ -#if HTTPD_FS_STATISTICS - u16_t i; - for(i = 0; i < HTTPD_FS_NUMFILES; i++) { - count[i] = 0; - } -#endif /* HTTPD_FS_STATISTICS */ -} -/*-----------------------------------------------------------------------------------*/ -#if HTTPD_FS_STATISTICS -u16_t httpd_fs_count -(char *name) -{ - struct httpd_fsdata_file_noconst *f; - u16_t i; - - i = 0; - for(f = (struct httpd_fsdata_file_noconst *)HTTPD_FS_ROOT; - f != NULL; - f = (struct httpd_fsdata_file_noconst *)f->next) { - - if(httpd_fs_strcmp(name, f->name) == 0) { - return count[i]; - } - ++i; - } - return 0; -} -#endif /* HTTPD_FS_STATISTICS */ -/*-----------------------------------------------------------------------------------*/ diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/httpd-fs.h b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/httpd-fs.h deleted file mode 100644 index b594eea56..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/httpd-fs.h +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright (c) 2001, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - * $Id: httpd-fs.h,v 1.1 2006/06/07 09:13:08 adam Exp $ - */ -#ifndef __HTTPD_FS_H__ -#define __HTTPD_FS_H__ - -#define HTTPD_FS_STATISTICS 1 - -struct httpd_fs_file { - char *data; - int len; -}; - -/* file must be allocated by caller and will be filled in - by the function. */ -int httpd_fs_open(const char *name, struct httpd_fs_file *file); - -#ifdef HTTPD_FS_STATISTICS -#if HTTPD_FS_STATISTICS == 1 -u16_t httpd_fs_count(char *name); -#endif /* HTTPD_FS_STATISTICS */ -#endif /* HTTPD_FS_STATISTICS */ - -void httpd_fs_init(void); - -#endif /* __HTTPD_FS_H__ */ diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/httpd-fs/404.html b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/httpd-fs/404.html deleted file mode 100644 index 43e7f4cad..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/httpd-fs/404.html +++ /dev/null @@ -1,8 +0,0 @@ - - -

-

404 - file not found

-

Go here instead.

-
- - \ No newline at end of file diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/httpd-fs/index.html b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/httpd-fs/index.html deleted file mode 100644 index 1d3bbeee1..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/httpd-fs/index.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Loading index.shtml. Click here if not automatically redirected. - - - - - diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/httpd-fs/index.shtml b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/httpd-fs/index.shtml deleted file mode 100644 index 1923ea762..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/httpd-fs/index.shtml +++ /dev/null @@ -1,20 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -RTOS Stats | TCP Stats | Connections | FreeRTOS.org Homepage | IO -

-


-

-

Task statistics

-Page will refresh every 2 seconds.

-

Task          State  Priority  Stack	#
************************************************
-%! rtos-stats -
-
- - - diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/httpd-fs/io.shtml b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/httpd-fs/io.shtml deleted file mode 100644 index 07554bb71..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/httpd-fs/io.shtml +++ /dev/null @@ -1,28 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -RTOS Stats | TCP Stats | Connections | FreeRTOS.org Homepage | IO -

-


-LED and LCD IO
- -

- -Use the check box to turn on or off the LED, enter text to display on the OLED display, then click "Update IO". - - -

-
-%! led-io -

- - -

- - - - diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/httpd-fs/stats.shtml b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/httpd-fs/stats.shtml deleted file mode 100644 index d762f40d8..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/httpd-fs/stats.shtml +++ /dev/null @@ -1,41 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -RTOS Stats | TCP Stats | Connections | FreeRTOS.org Homepage | IO -

-


-

-

Network statistics

-
LocalRemoteStateRetransmissionsTimerFlags
%d%u.%u.%u.%u:%u%s%u%u%c %c
-
-IP           Packets dropped
-             Packets received
-             Packets sent
-IP errors    IP version/header length
-             IP length, high byte
-             IP length, low byte
-             IP fragments
-             Header checksum
-             Wrong protocol
-ICMP	     Packets dropped
-             Packets received
-             Packets sent
-             Type errors
-TCP          Packets dropped
-             Packets received
-             Packets sent
-             Checksum errors
-             Data packets without ACKs
-             Resets
-             Retransmissions
-	     No connection avaliable
-	     Connection attempts to closed ports
-
%! net-stats
-
- - - diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/httpd-fs/tcp.shtml b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/httpd-fs/tcp.shtml deleted file mode 100644 index 654d61f21..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/httpd-fs/tcp.shtml +++ /dev/null @@ -1,21 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -RTOS Stats | TCP Stats | Connections | FreeRTOS.org Homepage | IO -

-


-
-

Network connections

-

- - -%! tcp-connections - - - - - diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/httpd-fsdata.c b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/httpd-fsdata.c deleted file mode 100644 index a7fcfab5a..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/httpd-fsdata.c +++ /dev/null @@ -1,470 +0,0 @@ -static const unsigned char data_404_html[] = { - /* /404.html */ - 0x2f, 0x34, 0x30, 0x34, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, 0xa, 0x20, 0x20, - 0x3c, 0x62, 0x6f, 0x64, 0x79, 0x20, 0x62, 0x67, 0x63, 0x6f, - 0x6c, 0x6f, 0x72, 0x3d, 0x22, 0x77, 0x68, 0x69, 0x74, 0x65, - 0x22, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x63, - 0x65, 0x6e, 0x74, 0x65, 0x72, 0x3e, 0xd, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x3c, 0x68, 0x31, 0x3e, 0x34, 0x30, - 0x34, 0x20, 0x2d, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x6e, - 0x6f, 0x74, 0x20, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x3c, 0x2f, - 0x68, 0x31, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x3c, 0x68, 0x33, 0x3e, 0x47, 0x6f, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x2f, 0x22, 0x3e, - 0x68, 0x65, 0x72, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x69, - 0x6e, 0x73, 0x74, 0x65, 0x61, 0x64, 0x2e, 0x3c, 0x2f, 0x68, - 0x33, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x2f, - 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x3e, 0xd, 0xa, 0x20, - 0x20, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xd, 0xa, - 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0}; - -static const unsigned char data_index_html[] = { - /* /index.html */ - 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x20, 0x6f, 0x6e, 0x4c, 0x6f, 0x61, 0x64, - 0x3d, 0x22, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x73, - 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x28, - 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x6c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x68, 0x72, 0x65, 0x66, 0x3d, - 0x27, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, - 0x6d, 0x6c, 0x27, 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x2c, - 0x31, 0x30, 0x30, 0x29, 0x22, 0x62, 0x67, 0x63, 0x6f, 0x6c, - 0x6f, 0x72, 0x3d, 0x22, 0x23, 0x43, 0x43, 0x43, 0x43, 0x66, - 0x66, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x6e, 0x74, - 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, 0x69, - 0x61, 0x6c, 0x22, 0x3e, 0xd, 0xa, 0x4c, 0x6f, 0x61, 0x64, - 0x69, 0x6e, 0x67, 0x20, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x2e, 0x20, 0x20, 0x43, 0x6c, - 0x69, 0x63, 0x6b, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, - 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, - 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x68, 0x65, 0x72, 0x65, - 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x69, 0x66, 0x20, 0x6e, 0x6f, - 0x74, 0x20, 0x61, 0x75, 0x74, 0x6f, 0x6d, 0x61, 0x74, 0x69, - 0x63, 0x61, 0x6c, 0x6c, 0x79, 0x20, 0x72, 0x65, 0x64, 0x69, - 0x72, 0x65, 0x63, 0x74, 0x65, 0x64, 0x2e, 0xd, 0xa, 0x3c, - 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xd, 0xa, 0x3c, 0x2f, - 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x62, - 0x6f, 0x64, 0x79, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x68, 0x74, - 0x6d, 0x6c, 0x3e, 0xd, 0xa, 0xd, 0xa, 0}; - -static const unsigned char data_index_shtml[] = { - /* /index.shtml */ - 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x20, 0x6f, 0x6e, 0x4c, 0x6f, 0x61, 0x64, - 0x3d, 0x22, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x73, - 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x28, - 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x6c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x68, 0x72, 0x65, 0x66, 0x3d, - 0x27, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, - 0x6d, 0x6c, 0x27, 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x2c, - 0x32, 0x30, 0x30, 0x30, 0x29, 0x22, 0x62, 0x67, 0x63, 0x6f, - 0x6c, 0x6f, 0x72, 0x3d, 0x22, 0x23, 0x43, 0x43, 0x43, 0x43, - 0x66, 0x66, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x6e, - 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, - 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x61, 0x20, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x52, - 0x54, 0x4f, 0x53, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, - 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x43, 0x50, 0x20, 0x53, - 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, 0x63, 0x70, - 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x43, 0x6f, - 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, - 0x77, 0x77, 0x2e, 0x66, 0x72, 0x65, 0x65, 0x72, 0x74, 0x6f, - 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x22, 0x3e, 0x46, 0x72, - 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, 0x72, 0x67, - 0x20, 0x48, 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0xd, 0xa, - 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, - 0x68, 0x72, 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, - 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x32, 0x3e, 0x54, 0x61, - 0x73, 0x6b, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, - 0x69, 0x63, 0x73, 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0xd, 0xa, - 0x50, 0x61, 0x67, 0x65, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, - 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x20, 0x65, 0x76, - 0x65, 0x72, 0x79, 0x20, 0x32, 0x20, 0x73, 0x65, 0x63, 0x6f, - 0x6e, 0x64, 0x73, 0x2e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, - 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, - 0x22, 0x63, 0x6f, 0x75, 0x72, 0x69, 0x65, 0x72, 0x22, 0x3e, - 0x3c, 0x70, 0x72, 0x65, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x53, - 0x74, 0x61, 0x74, 0x65, 0x20, 0x20, 0x50, 0x72, 0x69, 0x6f, - 0x72, 0x69, 0x74, 0x79, 0x20, 0x20, 0x53, 0x74, 0x61, 0x63, - 0x6b, 0x9, 0x23, 0x3c, 0x62, 0x72, 0x3e, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x3c, 0x62, 0x72, 0x3e, 0xd, - 0xa, 0x25, 0x21, 0x20, 0x72, 0x74, 0x6f, 0x73, 0x2d, 0x73, - 0x74, 0x61, 0x74, 0x73, 0xd, 0xa, 0x3c, 0x2f, 0x70, 0x72, - 0x65, 0x3e, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xd, - 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xd, 0xa, - 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xd, 0xa, 0x3c, - 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, 0xa, 0xd, 0xa, -0}; - -static const unsigned char data_io_shtml[] = { - /* /io.shtml */ - 0x2f, 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x20, 0x62, 0x67, 0x63, 0x6f, 0x6c, 0x6f, - 0x72, 0x3d, 0x22, 0x23, 0x43, 0x43, 0x43, 0x43, 0x66, 0x66, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, - 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, 0x69, 0x61, - 0x6c, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x52, 0x54, 0x4f, - 0x53, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, - 0x6c, 0x22, 0x3e, 0x54, 0x43, 0x50, 0x20, 0x53, 0x74, 0x61, - 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, 0x63, 0x70, 0x2e, 0x73, - 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, - 0x2e, 0x66, 0x72, 0x65, 0x65, 0x72, 0x74, 0x6f, 0x73, 0x2e, - 0x6f, 0x72, 0x67, 0x2f, 0x22, 0x3e, 0x46, 0x72, 0x65, 0x65, - 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x48, - 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0xd, 0xa, 0x3c, 0x62, - 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x72, - 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x3e, 0x4c, 0x45, 0x44, 0x20, - 0x61, 0x6e, 0x64, 0x20, 0x4c, 0x43, 0x44, 0x20, 0x49, 0x4f, - 0x3c, 0x2f, 0x62, 0x3e, 0x3c, 0x62, 0x72, 0x3e, 0xd, 0xa, - 0xd, 0xa, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0xd, 0xa, 0x55, - 0x73, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x68, 0x65, - 0x63, 0x6b, 0x20, 0x62, 0x6f, 0x78, 0x20, 0x74, 0x6f, 0x20, - 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6f, 0x6e, 0x20, 0x6f, 0x72, - 0x20, 0x6f, 0x66, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x4c, - 0x45, 0x44, 0x2c, 0x20, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x20, - 0x74, 0x65, 0x78, 0x74, 0x20, 0x74, 0x6f, 0x20, 0x64, 0x69, - 0x73, 0x70, 0x6c, 0x61, 0x79, 0x20, 0x6f, 0x6e, 0x20, 0x74, - 0x68, 0x65, 0x20, 0x4f, 0x4c, 0x45, 0x44, 0x20, 0x64, 0x69, - 0x73, 0x70, 0x6c, 0x61, 0x79, 0x2c, 0x20, 0x74, 0x68, 0x65, - 0x6e, 0x20, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x20, 0x22, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x49, 0x4f, 0x22, 0x2e, - 0xd, 0xa, 0xd, 0xa, 0xd, 0xa, 0x3c, 0x70, 0x3e, 0xd, - 0xa, 0x3c, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x6e, 0x61, 0x6d, - 0x65, 0x3d, 0x22, 0x61, 0x46, 0x6f, 0x72, 0x6d, 0x22, 0x20, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3d, 0x22, 0x2f, 0x69, - 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x20, 0x6d, - 0x65, 0x74, 0x68, 0x6f, 0x64, 0x3d, 0x22, 0x67, 0x65, 0x74, - 0x22, 0x3e, 0xd, 0xa, 0x25, 0x21, 0x20, 0x6c, 0x65, 0x64, - 0x2d, 0x69, 0x6f, 0xd, 0xa, 0x3c, 0x70, 0x3e, 0xd, 0xa, - 0x3c, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x74, 0x79, 0x70, - 0x65, 0x3d, 0x22, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x22, - 0x20, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3d, 0x22, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x20, 0x49, 0x4f, 0x22, 0x3e, 0xd, - 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x72, 0x6d, 0x3e, 0xd, 0xa, - 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, - 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xd, 0xa, 0x3c, 0x2f, - 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x68, - 0x74, 0x6d, 0x6c, 0x3e, 0xd, 0xa, 0xd, 0xa, 0}; - -static const unsigned char data_stats_shtml[] = { - /* /stats.shtml */ - 0x2f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x20, 0x62, 0x67, 0x63, 0x6f, 0x6c, 0x6f, - 0x72, 0x3d, 0x22, 0x23, 0x43, 0x43, 0x43, 0x43, 0x66, 0x66, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, - 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, 0x69, 0x61, - 0x6c, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x52, 0x54, 0x4f, - 0x53, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, - 0x6c, 0x22, 0x3e, 0x54, 0x43, 0x50, 0x20, 0x53, 0x74, 0x61, - 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, 0x63, 0x70, 0x2e, 0x73, - 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, - 0x2e, 0x66, 0x72, 0x65, 0x65, 0x72, 0x74, 0x6f, 0x73, 0x2e, - 0x6f, 0x72, 0x67, 0x2f, 0x22, 0x3e, 0x46, 0x72, 0x65, 0x65, - 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x48, - 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0xd, 0xa, 0x3c, 0x62, - 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x72, - 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, - 0xd, 0xa, 0x3c, 0x68, 0x32, 0x3e, 0x4e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, - 0x74, 0x69, 0x63, 0x73, 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0xd, - 0xa, 0x3c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x77, 0x69, - 0x64, 0x74, 0x68, 0x3d, 0x22, 0x33, 0x30, 0x30, 0x22, 0x20, - 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x3d, 0x22, 0x30, 0x22, - 0x3e, 0xd, 0xa, 0x3c, 0x74, 0x72, 0x3e, 0x3c, 0x74, 0x64, - 0x20, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x3d, 0x22, 0x6c, 0x65, - 0x66, 0x74, 0x22, 0x3e, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, - 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x63, 0x6f, 0x75, 0x72, - 0x69, 0x65, 0x72, 0x22, 0x3e, 0x3c, 0x70, 0x72, 0x65, 0x3e, - 0xd, 0xa, 0x49, 0x50, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, - 0x74, 0x73, 0x20, 0x64, 0x72, 0x6f, 0x70, 0x70, 0x65, 0x64, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, - 0x74, 0x73, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, - 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, 0xd, 0xa, - 0x49, 0x50, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x20, - 0x20, 0x20, 0x20, 0x49, 0x50, 0x20, 0x76, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, - 0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0xd, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x49, 0x50, 0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, - 0x68, 0x2c, 0x20, 0x68, 0x69, 0x67, 0x68, 0x20, 0x62, 0x79, - 0x74, 0x65, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x49, 0x50, 0x20, - 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x2c, 0x20, 0x6c, 0x6f, - 0x77, 0x20, 0x62, 0x79, 0x74, 0x65, 0xd, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x49, 0x50, 0x20, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, - 0x6e, 0x74, 0x73, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x48, 0x65, - 0x61, 0x64, 0x65, 0x72, 0x20, 0x63, 0x68, 0x65, 0x63, 0x6b, - 0x73, 0x75, 0x6d, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x57, 0x72, - 0x6f, 0x6e, 0x67, 0x20, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, - 0x6f, 0x6c, 0xd, 0xa, 0x49, 0x43, 0x4d, 0x50, 0x9, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x73, 0x20, 0x64, 0x72, 0x6f, 0x70, 0x70, 0x65, 0x64, 0xd, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x73, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, - 0x74, 0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, 0xd, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x54, 0x79, 0x70, 0x65, 0x20, 0x65, 0x72, 0x72, - 0x6f, 0x72, 0x73, 0xd, 0xa, 0x54, 0x43, 0x50, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, - 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x64, 0x72, 0x6f, 0x70, - 0x70, 0x65, 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, - 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x72, 0x65, 0x63, 0x65, - 0x69, 0x76, 0x65, 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, - 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x73, 0x65, 0x6e, - 0x74, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x43, 0x68, 0x65, 0x63, - 0x6b, 0x73, 0x75, 0x6d, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, - 0x73, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x44, 0x61, 0x74, 0x61, - 0x20, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x77, - 0x69, 0x74, 0x68, 0x6f, 0x75, 0x74, 0x20, 0x41, 0x43, 0x4b, - 0x73, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x52, 0x65, 0x73, 0x65, - 0x74, 0x73, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x52, 0x65, 0x74, - 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, - 0x6e, 0x73, 0xd, 0xa, 0x9, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x4e, 0x6f, 0x20, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x20, 0x61, 0x76, 0x61, 0x6c, 0x69, 0x61, - 0x62, 0x6c, 0x65, 0xd, 0xa, 0x9, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x20, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x73, - 0x20, 0x74, 0x6f, 0x20, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x64, - 0x20, 0x70, 0x6f, 0x72, 0x74, 0x73, 0xd, 0xa, 0x3c, 0x2f, - 0x70, 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, - 0x3e, 0x3c, 0x2f, 0x74, 0x64, 0x3e, 0x3c, 0x74, 0x64, 0x3e, - 0x3c, 0x70, 0x72, 0x65, 0x3e, 0x25, 0x21, 0x20, 0x6e, 0x65, - 0x74, 0x2d, 0x73, 0x74, 0x61, 0x74, 0x73, 0xd, 0xa, 0x3c, - 0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x74, 0x61, 0x62, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, - 0x74, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, - 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0}; - -static const unsigned char data_tcp_shtml[] = { - /* /tcp.shtml */ - 0x2f, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x20, 0x62, 0x67, 0x63, 0x6f, 0x6c, 0x6f, - 0x72, 0x3d, 0x22, 0x23, 0x43, 0x43, 0x43, 0x43, 0x66, 0x66, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, - 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, 0x69, 0x61, - 0x6c, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x52, 0x54, 0x4f, - 0x53, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, - 0x6c, 0x22, 0x3e, 0x54, 0x43, 0x50, 0x20, 0x53, 0x74, 0x61, - 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, 0x63, 0x70, 0x2e, 0x73, - 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, - 0x2e, 0x66, 0x72, 0x65, 0x65, 0x72, 0x74, 0x6f, 0x73, 0x2e, - 0x6f, 0x72, 0x67, 0x2f, 0x22, 0x3e, 0x46, 0x72, 0x65, 0x65, - 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x48, - 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0xd, 0xa, 0x3c, 0x62, - 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x72, - 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0xd, 0xa, 0x3c, - 0x68, 0x32, 0x3e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, - 0x20, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0xd, 0xa, 0x3c, - 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x74, 0x61, 0x62, 0x6c, 0x65, - 0x3e, 0xd, 0xa, 0x3c, 0x74, 0x72, 0x3e, 0x3c, 0x74, 0x68, - 0x3e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x3c, 0x2f, 0x74, 0x68, - 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x52, 0x65, 0x6d, 0x6f, 0x74, - 0x65, 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, - 0x53, 0x74, 0x61, 0x74, 0x65, 0x3c, 0x2f, 0x74, 0x68, 0x3e, - 0x3c, 0x74, 0x68, 0x3e, 0x52, 0x65, 0x74, 0x72, 0x61, 0x6e, - 0x73, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x3c, - 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x54, 0x69, - 0x6d, 0x65, 0x72, 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, - 0x68, 0x3e, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x3c, 0x2f, 0x74, - 0x68, 0x3e, 0x3c, 0x2f, 0x74, 0x72, 0x3e, 0xd, 0xa, 0x25, - 0x21, 0x20, 0x74, 0x63, 0x70, 0x2d, 0x63, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0xd, 0xa, 0x3c, - 0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, - 0x74, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, - 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, - 0xd, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, - 0xa, 0xd, 0xa, 0}; - -const struct httpd_fsdata_file file_404_html[] = {{NULL, data_404_html, data_404_html + 10, sizeof(data_404_html) - 10}}; - -const struct httpd_fsdata_file file_index_html[] = {{file_404_html, data_index_html, data_index_html + 12, sizeof(data_index_html) - 12}}; - -const struct httpd_fsdata_file file_index_shtml[] = {{file_index_html, data_index_shtml, data_index_shtml + 13, sizeof(data_index_shtml) - 13}}; - -const struct httpd_fsdata_file file_io_shtml[] = {{file_index_shtml, data_io_shtml, data_io_shtml + 10, sizeof(data_io_shtml) - 10}}; - -const struct httpd_fsdata_file file_stats_shtml[] = {{file_io_shtml, data_stats_shtml, data_stats_shtml + 13, sizeof(data_stats_shtml) - 13}}; - -const struct httpd_fsdata_file file_tcp_shtml[] = {{file_stats_shtml, data_tcp_shtml, data_tcp_shtml + 11, sizeof(data_tcp_shtml) - 11}}; - -#define HTTPD_FS_ROOT file_tcp_shtml - -#define HTTPD_FS_NUMFILES 6 diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/httpd-fsdata.h b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/httpd-fsdata.h deleted file mode 100644 index 52d35c265..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/httpd-fsdata.h +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright (c) 2001, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - * $Id: httpd-fsdata.h,v 1.1 2006/06/07 09:13:08 adam Exp $ - */ -#ifndef __HTTPD_FSDATA_H__ -#define __HTTPD_FSDATA_H__ - -#include "uip.h" - -struct httpd_fsdata_file { - const struct httpd_fsdata_file *next; - const char *name; - const char *data; - const int len; -#ifdef HTTPD_FS_STATISTICS -#if HTTPD_FS_STATISTICS == 1 - u16_t count; -#endif /* HTTPD_FS_STATISTICS */ -#endif /* HTTPD_FS_STATISTICS */ -}; - -struct httpd_fsdata_file_noconst { - struct httpd_fsdata_file *next; - char *name; - char *data; - int len; -#ifdef HTTPD_FS_STATISTICS -#if HTTPD_FS_STATISTICS == 1 - u16_t count; -#endif /* HTTPD_FS_STATISTICS */ -#endif /* HTTPD_FS_STATISTICS */ -}; - -#endif /* __HTTPD_FSDATA_H__ */ diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/httpd.c b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/httpd.c deleted file mode 100644 index 644cf16b7..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/httpd.c +++ /dev/null @@ -1,346 +0,0 @@ -/** - * \addtogroup apps - * @{ - */ - -/** - * \defgroup httpd Web server - * @{ - * The uIP web server is a very simplistic implementation of an HTTP - * server. It can serve web pages and files from a read-only ROM - * filesystem, and provides a very small scripting language. - - */ - -/** - * \file - * Web server - * \author - * Adam Dunkels - */ - - -/* - * Copyright (c) 2004, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * Author: Adam Dunkels - * - * $Id: httpd.c,v 1.2 2006/06/11 21:46:38 adam Exp $ - */ - -#include "uip.h" -#include "httpd.h" -#include "httpd-fs.h" -#include "httpd-cgi.h" -#include "http-strings.h" - -#include - -#define STATE_WAITING 0 -#define STATE_OUTPUT 1 - -#define ISO_nl 0x0a -#define ISO_space 0x20 -#define ISO_bang 0x21 -#define ISO_percent 0x25 -#define ISO_period 0x2e -#define ISO_slash 0x2f -#define ISO_colon 0x3a - - -/*---------------------------------------------------------------------------*/ -static unsigned short -generate_part_of_file(void *state) -{ - struct httpd_state *s = (struct httpd_state *)state; - - if(s->file.len > uip_mss()) { - s->len = uip_mss(); - } else { - s->len = s->file.len; - } - memcpy(uip_appdata, s->file.data, s->len); - - return s->len; -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(send_file(struct httpd_state *s)) -{ - PSOCK_BEGIN(&s->sout); - - do { - PSOCK_GENERATOR_SEND(&s->sout, generate_part_of_file, s); - s->file.len -= s->len; - s->file.data += s->len; - } while(s->file.len > 0); - - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(send_part_of_file(struct httpd_state *s)) -{ - PSOCK_BEGIN(&s->sout); - - PSOCK_SEND(&s->sout, s->file.data, s->len); - - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -static void -next_scriptstate(struct httpd_state *s) -{ - char *p; - p = strchr(s->scriptptr, ISO_nl) + 1; - s->scriptlen -= (unsigned short)(p - s->scriptptr); - s->scriptptr = p; -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(handle_script(struct httpd_state *s)) -{ - char *ptr; - - PT_BEGIN(&s->scriptpt); - - - while(s->file.len > 0) { - - /* Check if we should start executing a script. */ - if(*s->file.data == ISO_percent && - *(s->file.data + 1) == ISO_bang) { - s->scriptptr = s->file.data + 3; - s->scriptlen = s->file.len - 3; - if(*(s->scriptptr - 1) == ISO_colon) { - httpd_fs_open(s->scriptptr + 1, &s->file); - PT_WAIT_THREAD(&s->scriptpt, send_file(s)); - } else { - PT_WAIT_THREAD(&s->scriptpt, - httpd_cgi(s->scriptptr)(s, s->scriptptr)); - } - next_scriptstate(s); - - /* The script is over, so we reset the pointers and continue - sending the rest of the file. */ - s->file.data = s->scriptptr; - s->file.len = s->scriptlen; - } else { - /* See if we find the start of script marker in the block of HTML - to be sent. */ - - if(s->file.len > uip_mss()) { - s->len = uip_mss(); - } else { - s->len = s->file.len; - } - - if(*s->file.data == ISO_percent) { - ptr = strchr(s->file.data + 1, ISO_percent); - } else { - ptr = strchr(s->file.data, ISO_percent); - } - if(ptr != NULL && - ptr != s->file.data) { - s->len = (int)(ptr - s->file.data); - if(s->len >= uip_mss()) { - s->len = uip_mss(); - } - } - PT_WAIT_THREAD(&s->scriptpt, send_part_of_file(s)); - s->file.data += s->len; - s->file.len -= s->len; - - } - } - - PT_END(&s->scriptpt); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(send_headers(struct httpd_state *s, const char *statushdr)) -{ - char *ptr; - - PSOCK_BEGIN(&s->sout); - - PSOCK_SEND_STR(&s->sout, statushdr); - - ptr = strrchr(s->filename, ISO_period); - if(ptr == NULL) { - PSOCK_SEND_STR(&s->sout, http_content_type_binary); - } else if(strncmp(http_html, ptr, 5) == 0 || - strncmp(http_shtml, ptr, 6) == 0) { - PSOCK_SEND_STR(&s->sout, http_content_type_html); - } else if(strncmp(http_css, ptr, 4) == 0) { - PSOCK_SEND_STR(&s->sout, http_content_type_css); - } else if(strncmp(http_png, ptr, 4) == 0) { - PSOCK_SEND_STR(&s->sout, http_content_type_png); - } else if(strncmp(http_gif, ptr, 4) == 0) { - PSOCK_SEND_STR(&s->sout, http_content_type_gif); - } else if(strncmp(http_jpg, ptr, 4) == 0) { - PSOCK_SEND_STR(&s->sout, http_content_type_jpg); - } else { - PSOCK_SEND_STR(&s->sout, http_content_type_plain); - } - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(handle_output(struct httpd_state *s)) -{ - char *ptr; - - PT_BEGIN(&s->outputpt); - - if(!httpd_fs_open(s->filename, &s->file)) { - httpd_fs_open(http_404_html, &s->file); - strcpy(s->filename, http_404_html); - PT_WAIT_THREAD(&s->outputpt, - send_headers(s, - http_header_404)); - PT_WAIT_THREAD(&s->outputpt, - send_file(s)); - } else { - PT_WAIT_THREAD(&s->outputpt, - send_headers(s, - http_header_200)); - ptr = strchr(s->filename, ISO_period); - if(ptr != NULL && strncmp(ptr, http_shtml, 6) == 0) { - PT_INIT(&s->scriptpt); - PT_WAIT_THREAD(&s->outputpt, handle_script(s)); - } else { - PT_WAIT_THREAD(&s->outputpt, - send_file(s)); - } - } - PSOCK_CLOSE(&s->sout); - PT_END(&s->outputpt); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(handle_input(struct httpd_state *s)) -{ - PSOCK_BEGIN(&s->sin); - - PSOCK_READTO(&s->sin, ISO_space); - - - if(strncmp(s->inputbuf, http_get, 4) != 0) { - PSOCK_CLOSE_EXIT(&s->sin); - } - PSOCK_READTO(&s->sin, ISO_space); - - if(s->inputbuf[0] != ISO_slash) { - PSOCK_CLOSE_EXIT(&s->sin); - } - - if(s->inputbuf[1] == ISO_space) { - strncpy(s->filename, http_index_html, sizeof(s->filename)); - } else { - - s->inputbuf[PSOCK_DATALEN(&s->sin) - 1] = 0; - - /* Process any form input being sent to the server. */ - { - extern void vApplicationProcessFormInput( char *pcInputString, long xInputLength ); - vApplicationProcessFormInput( s->inputbuf, PSOCK_DATALEN(&s->sin) ); - } - - strncpy(s->filename, &s->inputbuf[0], sizeof(s->filename)); - } - - /* httpd_log_file(uip_conn->ripaddr, s->filename);*/ - - s->state = STATE_OUTPUT; - - while(1) { - PSOCK_READTO(&s->sin, ISO_nl); - - if(strncmp(s->inputbuf, http_referer, 8) == 0) { - s->inputbuf[PSOCK_DATALEN(&s->sin) - 2] = 0; - /* httpd_log(&s->inputbuf[9]);*/ - } - } - - PSOCK_END(&s->sin); -} -/*---------------------------------------------------------------------------*/ -static void -handle_connection(struct httpd_state *s) -{ - handle_input(s); - if(s->state == STATE_OUTPUT) { - handle_output(s); - } -} -/*---------------------------------------------------------------------------*/ -void -httpd_appcall(void) -{ - struct httpd_state *s = (struct httpd_state *)&(uip_conn->appstate); - - if(uip_closed() || uip_aborted() || uip_timedout()) { - } else if(uip_connected()) { - PSOCK_INIT(&s->sin, s->inputbuf, sizeof(s->inputbuf) - 1); - PSOCK_INIT(&s->sout, s->inputbuf, sizeof(s->inputbuf) - 1); - PT_INIT(&s->outputpt); - s->state = STATE_WAITING; - /* timer_set(&s->timer, CLOCK_SECOND * 100);*/ - s->timer = 0; - handle_connection(s); - } else if(s != NULL) { - if(uip_poll()) { - ++s->timer; - if(s->timer >= 20) { - uip_abort(); - } - } else { - s->timer = 0; - } - handle_connection(s); - } else { - uip_abort(); - } -} -/*---------------------------------------------------------------------------*/ -/** - * \brief Initialize the web server - * - * This function initializes the web server and should be - * called at system boot-up. - */ -void -httpd_init(void) -{ - uip_listen(HTONS(80)); -} -/*---------------------------------------------------------------------------*/ -/** @} */ diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/httpd.h b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/httpd.h deleted file mode 100644 index 7f7a6666e..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/httpd.h +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright (c) 2001-2005, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: httpd.h,v 1.2 2006/06/11 21:46:38 adam Exp $ - * - */ - -#ifndef __HTTPD_H__ -#define __HTTPD_H__ - -#include "psock.h" -#include "httpd-fs.h" - -struct httpd_state { - unsigned char timer; - struct psock sin, sout; - struct pt outputpt, scriptpt; - char inputbuf[50]; - char filename[20]; - char state; - struct httpd_fs_file file; - int len; - char *scriptptr; - int scriptlen; - - unsigned short count; -}; - -void httpd_init(void); -void httpd_appcall(void); - -void httpd_log(char *msg); -void httpd_log_file(u16_t *requester, char *file); - -#endif /* __HTTPD_H__ */ diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/makefsdata b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/makefsdata deleted file mode 100644 index 8d2715a8a..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/makefsdata +++ /dev/null @@ -1,78 +0,0 @@ -#!/usr/bin/perl - -open(OUTPUT, "> httpd-fsdata.c"); - -chdir("httpd-fs"); - -opendir(DIR, "."); -@files = grep { !/^\./ && !/(CVS|~)/ } readdir(DIR); -closedir(DIR); - -foreach $file (@files) { - - if(-d $file && $file !~ /^\./) { - print "Processing directory $file\n"; - opendir(DIR, $file); - @newfiles = grep { !/^\./ && !/(CVS|~)/ } readdir(DIR); - closedir(DIR); - printf "Adding files @newfiles\n"; - @files = (@files, map { $_ = "$file/$_" } @newfiles); - next; - } -} - -foreach $file (@files) { - if(-f $file) { - - print "Adding file $file\n"; - - open(FILE, $file) || die "Could not open file $file\n"; - - $file =~ s-^-/-; - $fvar = $file; - $fvar =~ s-/-_-g; - $fvar =~ s-\.-_-g; - # for AVR, add PROGMEM here - print(OUTPUT "static const unsigned char data".$fvar."[] = {\n"); - print(OUTPUT "\t/* $file */\n\t"); - for($j = 0; $j < length($file); $j++) { - printf(OUTPUT "%#02x, ", unpack("C", substr($file, $j, 1))); - } - printf(OUTPUT "0,\n"); - - - $i = 0; - while(read(FILE, $data, 1)) { - if($i == 0) { - print(OUTPUT "\t"); - } - printf(OUTPUT "%#02x, ", unpack("C", $data)); - $i++; - if($i == 10) { - print(OUTPUT "\n"); - $i = 0; - } - } - print(OUTPUT "0};\n\n"); - close(FILE); - push(@fvars, $fvar); - push(@pfiles, $file); - } -} - -for($i = 0; $i < @fvars; $i++) { - $file = $pfiles[$i]; - $fvar = $fvars[$i]; - - if($i == 0) { - $prevfile = "NULL"; - } else { - $prevfile = "file" . $fvars[$i - 1]; - } - print(OUTPUT "const struct httpd_fsdata_file file".$fvar."[] = {{$prevfile, data$fvar, "); - print(OUTPUT "data$fvar + ". (length($file) + 1) .", "); - print(OUTPUT "sizeof(data$fvar) - ". (length($file) + 1) ."}};\n\n"); -} - -print(OUTPUT "#define HTTPD_FS_ROOT file$fvars[$i - 1]\n\n"); -print(OUTPUT "#define HTTPD_FS_NUMFILES $i\n"); diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/makestrings b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/makestrings deleted file mode 100644 index 8a13c6d29..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/makestrings +++ /dev/null @@ -1,40 +0,0 @@ -#!/usr/bin/perl - - -sub stringify { - my $name = shift(@_); - open(OUTPUTC, "> $name.c"); - open(OUTPUTH, "> $name.h"); - - open(FILE, "$name"); - - while() { - if(/(.+) "(.+)"/) { - $var = $1; - $data = $2; - - $datan = $data; - $datan =~ s/\\r/\r/g; - $datan =~ s/\\n/\n/g; - $datan =~ s/\\01/\01/g; - $datan =~ s/\\0/\0/g; - - printf(OUTPUTC "const char $var\[%d] = \n", length($datan) + 1); - printf(OUTPUTC "/* \"$data\" */\n"); - printf(OUTPUTC "{"); - for($j = 0; $j < length($datan); $j++) { - printf(OUTPUTC "%#02x, ", unpack("C", substr($datan, $j, 1))); - } - printf(OUTPUTC "};\n"); - - printf(OUTPUTH "extern const char $var\[%d];\n", length($datan) + 1); - - } - } - close(OUTPUTC); - close(OUTPUTH); -} -stringify("http-strings"); - -exit 0; - diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/uIP_Task.c b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/uIP_Task.c deleted file mode 100644 index 5676b1094..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/uIP_Task.c +++ /dev/null @@ -1,311 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ -/* Standard includes. */ -#include - -/* Scheduler includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "semphr.h" - -/* uip includes. */ -#include "hw_types.h" -#include "uip.h" -#include "uip_arp.h" -#include "httpd.h" -#include "timer.h" -#include "clock-arch.h" -#include "hw_ethernet.h" -#include "ethernet.h" -#include "hw_memmap.h" -#include "lmi_flash.h" -#include "sysctl.h" - -/* Demo includes. */ -#include "emac.h" -#include "partest.h" -#include "lcd_message.h" - -struct timer { - clock_time_t start; - clock_time_t interval; -}; - - -/*-----------------------------------------------------------*/ - -/* IP address configuration. */ -#define uipIP_ADDR0 172 -#define uipIP_ADDR1 25 -#define uipIP_ADDR2 218 -#define uipIP_ADDR3 19 - -/* How long to wait before attempting to connect the MAC again. */ -#define uipINIT_WAIT 100 - -/* Shortcut to the header within the Rx buffer. */ -#define xHeader ((struct uip_eth_hdr *) &uip_buf[ 0 ]) - -/* Standard constant. */ -#define uipTOTAL_FRAME_HEADER_SIZE 54 - -/*-----------------------------------------------------------*/ - -/* - * Send the uIP buffer to the MAC. - */ -static void prvENET_Send(void); - -/* - * Setup the MAC address in the MAC itself, and in the uIP stack. - */ -static void prvSetMACAddress( void ); - -/* - * Port functions required by the uIP stack. - */ -void clock_init( void ); -clock_time_t clock_time( void ); - -/*-----------------------------------------------------------*/ - -/* The semaphore used by the ISR to wake the uIP task. */ -extern SemaphoreHandle_t xEMACSemaphore; - -/*-----------------------------------------------------------*/ - -void clock_init(void) -{ - /* This is done when the scheduler starts. */ -} -/*-----------------------------------------------------------*/ - -/* Define clock functions here to avoid header file name clash between uIP -and the Luminary Micro driver library. */ -clock_time_t clock_time( void ) -{ - return xTaskGetTickCount(); -} -extern void timer_set(struct timer *t, clock_time_t interval); -extern int timer_expired(struct timer *t); -extern void timer_reset(struct timer *t); - - - - -void vuIP_Task( void *pvParameters ) -{ -portBASE_TYPE i; -uip_ipaddr_t xIPAddr; -struct timer periodic_timer, arp_timer; -extern void ( vEMAC_ISR )( void ); - - /* Enable/Reset the Ethernet Controller */ - SysCtlPeripheralEnable( SYSCTL_PERIPH_ETH ); - SysCtlPeripheralReset( SYSCTL_PERIPH_ETH ); - - /* Create the semaphore used by the ISR to wake this task. */ - vSemaphoreCreateBinary( xEMACSemaphore ); - - /* Initialise the uIP stack. */ - timer_set( &periodic_timer, configTICK_RATE_HZ / 2 ); - timer_set( &arp_timer, configTICK_RATE_HZ * 10 ); - uip_init(); - uip_ipaddr( xIPAddr, uipIP_ADDR0, uipIP_ADDR1, uipIP_ADDR2, uipIP_ADDR3 ); - uip_sethostaddr( xIPAddr ); - httpd_init(); - - while( vInitEMAC() != pdPASS ) - { - vTaskDelay( uipINIT_WAIT ); - } - prvSetMACAddress(); - - - for( ;; ) - { - /* Is there received data ready to be processed? */ - uip_len = uiGetEMACRxData( uip_buf ); - - if( uip_len > 0 ) - { - /* Standard uIP loop taken from the uIP manual. */ - - if( xHeader->type == htons( UIP_ETHTYPE_IP ) ) - { - uip_arp_ipin(); - uip_input(); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - uip_arp_out(); - prvENET_Send(); - } - } - else if( xHeader->type == htons( UIP_ETHTYPE_ARP ) ) - { - uip_arp_arpin(); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - prvENET_Send(); - } - } - } - else - { - if( timer_expired( &periodic_timer ) ) - { - timer_reset( &periodic_timer ); - for( i = 0; i < UIP_CONNS; i++ ) - { - uip_periodic( i ); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - uip_arp_out(); - prvENET_Send(); - } - } - - /* Call the ARP timer function every 10 seconds. */ - if( timer_expired( &arp_timer ) ) - { - timer_reset( &arp_timer ); - uip_arp_timer(); - } - } - else - { - /* We did not receive a packet, and there was no periodic - processing to perform. Block for a fixed period. If a packet - is received during this period we will be woken by the ISR - giving us the Semaphore. */ - xSemaphoreTake( xEMACSemaphore, configTICK_RATE_HZ / 2 ); - } - } - } -} -/*-----------------------------------------------------------*/ - -static void prvENET_Send(void) -{ - vInitialiseSend(); - vIncrementTxLength( uip_len ); - vSendBufferToMAC(); -} -/*-----------------------------------------------------------*/ - -static void prvSetMACAddress( void ) -{ -unsigned long ulUser0, ulUser1; -unsigned char pucMACArray[8]; -struct uip_eth_addr xAddr; - - /* Get the device MAC address from flash */ - FlashUserGet(&ulUser0, &ulUser1); - - /* Convert the MAC address from flash into sequence of bytes. */ - pucMACArray[0] = ((ulUser0 >> 0) & 0xff); - pucMACArray[1] = ((ulUser0 >> 8) & 0xff); - pucMACArray[2] = ((ulUser0 >> 16) & 0xff); - pucMACArray[3] = ((ulUser1 >> 0) & 0xff); - pucMACArray[4] = ((ulUser1 >> 8) & 0xff); - pucMACArray[5] = ((ulUser1 >> 16) & 0xff); - - /* Program the MAC address. */ - EthernetMACAddrSet(ETH_BASE, pucMACArray); - - xAddr.addr[ 0 ] = pucMACArray[0]; - xAddr.addr[ 1 ] = pucMACArray[1]; - xAddr.addr[ 2 ] = pucMACArray[2]; - xAddr.addr[ 3 ] = pucMACArray[3]; - xAddr.addr[ 4 ] = pucMACArray[4]; - xAddr.addr[ 5 ] = pucMACArray[5]; - uip_setethaddr( xAddr ); -} -/*-----------------------------------------------------------*/ - -void vApplicationProcessFormInput( char *pcInputString, portBASE_TYPE xInputLength ) -{ -char *c, *pcText; -static char cMessageForDisplay[ 32 ]; -extern QueueHandle_t xOLEDQueue; -xOLEDMessage xOLEDMessage; - - /* Process the form input sent by the IO page of the served HTML. */ - - c = strstr( pcInputString, "?" ); - - if( c ) - { - /* Turn LED's on or off in accordance with the check box status. */ - if( strstr( c, "LED0=1" ) != NULL ) - { - vParTestSetLED( 0, 1 ); - } - else - { - vParTestSetLED( 0, 0 ); - } - - /* Find the start of the text to be displayed on the LCD. */ - pcText = strstr( c, "LCD=" ); - pcText += strlen( "LCD=" ); - - /* Terminate the file name for further processing within uIP. */ - *c = 0x00; - - /* Terminate the LCD string. */ - c = strstr( pcText, " " ); - if( c != NULL ) - { - *c = 0x00; - } - - /* Add required spaces. */ - while( ( c = strstr( pcText, "+" ) ) != NULL ) - { - *c = ' '; - } - - /* Write the message to the LCD. */ - strcpy( cMessageForDisplay, pcText ); - xOLEDMessage.pcMessage = ( signed char * ) cMessageForDisplay; - xQueueSend( xOLEDQueue, &xOLEDMessage, portMAX_DELAY ); - } -} - diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/uip-conf.h b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/uip-conf.h deleted file mode 100644 index 455540da1..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/uip-conf.h +++ /dev/null @@ -1,159 +0,0 @@ -/** - * \addtogroup uipopt - * @{ - */ - -/** - * \name Project-specific configuration options - * @{ - * - * uIP has a number of configuration options that can be overridden - * for each project. These are kept in a project-specific uip-conf.h - * file and all configuration names have the prefix UIP_CONF. - */ - -/* - * Copyright (c) 2006, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: uip-conf.h,v 1.6 2006/06/12 08:00:31 adam Exp $ - */ - -/** - * \file - * An example uIP configuration file - * \author - * Adam Dunkels - */ - -#ifndef __UIP_CONF_H__ -#define __UIP_CONF_H__ - -#include - -/** - * 8 bit datatype - * - * This typedef defines the 8-bit type used throughout uIP. - * - * \hideinitializer - */ -typedef uint8_t u8_t; - -/** - * 16 bit datatype - * - * This typedef defines the 16-bit type used throughout uIP. - * - * \hideinitializer - */ -typedef uint16_t u16_t; - -/** - * Statistics datatype - * - * This typedef defines the dataype used for keeping statistics in - * uIP. - * - * \hideinitializer - */ -typedef unsigned short uip_stats_t; - -/** - * Maximum number of TCP connections. - * - * \hideinitializer - */ -#define UIP_CONF_MAX_CONNECTIONS 40 - -/** - * Maximum number of listening TCP ports. - * - * \hideinitializer - */ -#define UIP_CONF_MAX_LISTENPORTS 40 - -/** - * uIP buffer size. - * - * \hideinitializer - */ -#define UIP_CONF_BUFFER_SIZE 1480 - -/** - * CPU byte order. - * - * \hideinitializer - */ -#define UIP_CONF_BYTE_ORDER LITTLE_ENDIAN - -/** - * Logging on or off - * - * \hideinitializer - */ -#define UIP_CONF_LOGGING 0 - -/** - * UDP support on or off - * - * \hideinitializer - */ -#define UIP_CONF_UDP 0 - -/** - * UDP checksums on or off - * - * \hideinitializer - */ -#define UIP_CONF_UDP_CHECKSUMS 1 - -/** - * uIP statistics on or off - * - * \hideinitializer - */ -#define UIP_CONF_STATISTICS 1 - -/* Here we include the header file for the application(s) we use in - our project. */ -/*#include "smtp.h"*/ -/*#include "hello-world.h"*/ -/*#include "telnetd.h"*/ -#include "webserver.h" -/*#include "dhcpc.h"*/ -/*#include "resolv.h"*/ -/*#include "webclient.h"*/ - -#define UIP_CONF_EXTERNAL_BUFFER - -#endif /* __UIP_CONF_H__ */ - -/** @} */ -/** @} */ diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/webserver.h b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/webserver.h deleted file mode 100644 index 1acb290b8..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/webserver/webserver.h +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright (c) 2002, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials provided - * with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: webserver.h,v 1.2 2006/06/11 21:46:38 adam Exp $ - * - */ -#ifndef __WEBSERVER_H__ -#define __WEBSERVER_H__ - -#include "httpd.h" - -typedef struct httpd_state uip_tcp_appstate_t; -/* UIP_APPCALL: the name of the application function. This function - must return void and take no arguments (i.e., C type "void - appfunc(void)"). */ -#ifndef UIP_APPCALL -#define UIP_APPCALL httpd_appcall -#endif - - -#endif /* __WEBSERVER_H__ */ diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/FreeRTOSConfig.h b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/FreeRTOSConfig.h deleted file mode 100644 index f056af38f..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/FreeRTOSConfig.h +++ /dev/null @@ -1,112 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -#ifndef FREERTOS_CONFIG_H -#define FREERTOS_CONFIG_H - -/*----------------------------------------------------------- - * Application specific definitions. - * - * These definitions should be adjusted for your particular hardware and - * application requirements. - * - * THESE PARAMETERS ARE DESCRIBED WITHIN THE 'CONFIGURATION' SECTION OF THE - * FreeRTOS API DOCUMENTATION AVAILABLE ON THE FreeRTOS.org WEB SITE. - * - * See http://www.freertos.org/a00110.html - *----------------------------------------------------------*/ - -#define configUSE_PREEMPTION 1 -#define configUSE_IDLE_HOOK 0 -#define configUSE_TICK_HOOK 1 -#define configCPU_CLOCK_HZ ( 50000000UL ) -#define configTICK_RATE_HZ ( ( TickType_t ) 1000 ) -#define configMINIMAL_STACK_SIZE ( ( unsigned short ) 80 ) -#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 24000 ) ) -#define configMAX_TASK_NAME_LEN ( 12 ) -#define configUSE_TRACE_FACILITY 1 -#define configUSE_16_BIT_TICKS 0 -#define configIDLE_SHOULD_YIELD 0 -#define configUSE_CO_ROUTINES 0 -#define configUSE_MUTEXES 1 -#define configCHECK_FOR_STACK_OVERFLOW 2 -#define configUSE_RECURSIVE_MUTEXES 1 -#define configQUEUE_REGISTRY_SIZE 10 -#define configGENERATE_RUN_TIME_STATS 1 -#define configUSE_MALLOC_FAILED_HOOK 1 -#define configUSE_QUEUE_SETS 1 -#define configUSE_COUNTING_SEMAPHORES 1 - -#define configMAX_PRIORITIES ( 5UL ) -#define configMAX_CO_ROUTINE_PRIORITIES ( 2 ) - -/* Software timer related constants. */ -#define configUSE_TIMERS 0 -#define configTIMER_TASK_PRIORITY 2 -#define configTIMER_QUEUE_LENGTH 20 -#define configTIMER_TASK_STACK_DEPTH ( configMINIMAL_STACK_SIZE * 2 ) - - -/* Set the following definitions to 1 to include the API function, or zero -to exclude the API function. */ - -#define INCLUDE_vTaskPrioritySet 1 -#define INCLUDE_uxTaskPriorityGet 1 -#define INCLUDE_vTaskDelete 1 -#define INCLUDE_vTaskCleanUpResources 0 -#define INCLUDE_vTaskSuspend 1 -#define INCLUDE_vTaskDelayUntil 1 -#define INCLUDE_vTaskDelay 1 -#define INCLUDE_uxTaskGetStackHighWaterMark 1 -#define INCLUDE_xSemaphoreGetMutexHolder 1 -#define INCLUDE_eTaskGetState 1 - -/* This demo makes use of one or more example stats formatting functions. These -format the raw data provided by the uxTaskGetSystemState() function in to human -readable ASCII form. See the notes in the implementation of vTaskList() within -FreeRTOS/Source/tasks.c for limitations. */ -#define configUSE_STATS_FORMATTING_FUNCTIONS 1 - -#define configKERNEL_INTERRUPT_PRIORITY ( ( unsigned char ) 7 << ( unsigned char ) 5 ) /* Priority 7, or 255 as only the top three bits are implemented. This is the lowest priority. */ -/* !!!! configMAX_SYSCALL_INTERRUPT_PRIORITY must not be set to zero !!!! -See http://www.FreeRTOS.org/RTOS-Cortex-M3-M4.html. */ -#define configMAX_SYSCALL_INTERRUPT_PRIORITY ( ( unsigned char ) 5 << ( unsigned char ) 5 ) /* Priority 5, or 160 as only the top three bits are implemented. */ - -extern volatile unsigned long ulHighFrequencyTimerTicks; -/* There is already a high frequency timer running - just reset its count back -to zero. */ -#define portCONFIGURE_TIMER_FOR_RUN_TIME_STATS() ( ulHighFrequencyTimerTicks = 0UL ) -#define portGET_RUN_TIME_COUNTER_VALUE() ulHighFrequencyTimerTicks - -/* Use Cortex-M3 optimised task selection rather than the generic C code -version. */ -#define configUSE_PORT_OPTIMISED_TASK_SELECTION 1 - -/* Disable interrupts and sit in a null loop if assert is called. */ -#define configASSERT( x ) if( ( ( x ) == 0 ) ) { taskDISABLE_INTERRUPTS(); for( ;; ); } - -#endif /* FREERTOS_CONFIG_H */ diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/IntQueueTimer.c b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/IntQueueTimer.c deleted file mode 100644 index e75116215..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/IntQueueTimer.c +++ /dev/null @@ -1,95 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* Scheduler includes. */ -#include "FreeRTOS.h" - -/* Demo includes. */ -#include "IntQueueTimer.h" -#include "IntQueue.h" - -/* Library includes. */ -#include "hw_ints.h" -#include "hw_memmap.h" -#include "hw_types.h" -#include "interrupt.h" -#include "sysctl.h" -#include "lmi_timer.h" - -#define tmrTIMER_2_FREQUENCY ( 2000UL ) -#define tmrTIMER_3_FREQUENCY ( 2001UL ) - -void vInitialiseTimerForIntQueueTest( void ) -{ -unsigned long ulFrequency; - - /* Timer 2 and 3 are utilised for this test. */ - SysCtlPeripheralEnable( SYSCTL_PERIPH_TIMER2 ); - SysCtlPeripheralEnable( SYSCTL_PERIPH_TIMER3 ); - TimerConfigure( TIMER2_BASE, TIMER_CFG_32_BIT_PER ); - TimerConfigure( TIMER3_BASE, TIMER_CFG_32_BIT_PER ); - - /* Set the timer interrupts to be above the kernel. The interrupts are - assigned different priorities so they nest with each other. */ - IntPrioritySet( INT_TIMER2A, configMAX_SYSCALL_INTERRUPT_PRIORITY + ( 1 << 5 ) ); /* Shift left 5 as only the top 3 bits are implemented. */ - IntPrioritySet( INT_TIMER3A, configMAX_SYSCALL_INTERRUPT_PRIORITY ); - - /* Ensure interrupts do not start until the scheduler is running. */ - portDISABLE_INTERRUPTS(); - - /* The rate at which the timers will interrupt. */ - ulFrequency = configCPU_CLOCK_HZ / tmrTIMER_2_FREQUENCY; - TimerLoadSet( TIMER2_BASE, TIMER_A, ulFrequency ); - IntEnable( INT_TIMER2A ); - TimerIntEnable( TIMER2_BASE, TIMER_TIMA_TIMEOUT ); - - /* The rate at which the timers will interrupt. */ - ulFrequency = configCPU_CLOCK_HZ / tmrTIMER_3_FREQUENCY; - TimerLoadSet( TIMER3_BASE, TIMER_A, ulFrequency ); - IntEnable( INT_TIMER3A ); - TimerIntEnable( TIMER3_BASE, TIMER_TIMA_TIMEOUT ); - - /* Enable both timers. */ - TimerEnable( TIMER2_BASE, TIMER_A ); - TimerEnable( TIMER3_BASE, TIMER_A ); -} -/*-----------------------------------------------------------*/ - -void vT2InterruptHandler( void ) -{ - TimerIntClear( TIMER2_BASE, TIMER_TIMA_TIMEOUT ); - portEND_SWITCHING_ISR( xFirstTimerHandler() ); -} -/*-----------------------------------------------------------*/ - -void vT3InterruptHandler( void ) -{ - TimerIntClear( TIMER3_BASE, TIMER_TIMA_TIMEOUT ); - portEND_SWITCHING_ISR( xSecondTimerHandler() ); -} - - diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/IntQueueTimer.h b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/IntQueueTimer.h deleted file mode 100644 index a13dac500..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/IntQueueTimer.h +++ /dev/null @@ -1,36 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -#ifndef INT_QUEUE_TIMER_H -#define INT_QUEUE_TIMER_H - -void vInitialiseTimerForIntQueueTest( void ); -portBASE_TYPE xTimer0Handler( void ); -portBASE_TYPE xTimer1Handler( void ); - -#endif - diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/LM3S_Startup.s b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/LM3S_Startup.s deleted file mode 100644 index 53ce62b7a..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/LM3S_Startup.s +++ /dev/null @@ -1,199 +0,0 @@ -/***************************************************************************** - * Copyright (c) 2006 Rowley Associates Limited. * - * * - * This file may be distributed under the terms of the License Agreement * - * provided with this software. * - * * - * THIS FILE IS PROVIDED AS IS WITH NO WARRANTY OF ANY KIND, INCLUDING THE * - * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. * - *****************************************************************************/ - -/***************************************************************************** - * Preprocessor Definitions - * ------------------------ - * - * STARTUP_FROM_RESET - * - * If defined, the program will startup from power-on/reset. If not defined - * the program will just loop endlessly from power-on/reset. - * - * This definition is not defined by default on this target because the - * debugger is unable to reset this target and maintain control of it over the - * JTAG interface. The advantage of doing this is that it allows the debugger - * to reset the CPU and run programs from a known reset CPU state on each run. - * It also acts as a safety net if you accidently download a program in FLASH - * that crashes and prevents the debugger from taking control over JTAG - * rendering the target unusable over JTAG. The obvious disadvantage of doing - * this is that your application will not startup without the debugger. - * - * We advise that on this target you keep STARTUP_FROM_RESET undefined whilst - * you are developing and only define STARTUP_FROM_RESET when development is - * complete. - * - *****************************************************************************/ - -.extern xPortPendSVHandler -.extern xPortSysTickHandler -.extern vPortSVCHandler -.extern Timer0IntHandler -.extern vT2InterruptHandler -.extern vT3InterruptHandler -.extern vEMAC_ISR - - -.global reset_handler - -.macro DEFAULT_ISR_HANDLER name= - .thumb_func - .weak \name -\name: -1: b 1b /* endless loop */ -.endm - - .section .vectors, "ax" - .code 16 - .align 0 - .global _vectors - -_vectors: - .word __stack_end__ -#ifdef STARTUP_FROM_RESET - .word reset_handler -#else - .word reset_wait -#endif /* STARTUP_FROM_RESET */ - .word Nmi_ISR - .word Fault_ISR - .word MPU_Fault_ISR - .word 0 /* Populate if using Bus fault */ - .word 0 /* Populate if using Usage fault */ - .word 0 /* Reserved */ - .word 0 /* Reserved */ - .word 0 /* Reserved */ - .word 0 /* Reserved */ - .word vPortSVCHandler - .word 0 /* Populate if using a debug monitor */ - .word 0 /* Reserved */ - .word xPortPendSVHandler - .word xPortSysTickHandler - .word GPIO_Port_A_ISR - .word GPIO_Port_B_ISR - .word GPIO_Port_C_ISR - .word GPIO_Port_D_ISR - .word GPIO_Port_E_ISR - .word UART0_ISR - .word UART1_ISR - .word SSI_ISR - .word I2C_ISR - .word PWM_Fault_ISR - .word PWM_Generator_0_ISR - .word PWM_Generator_1_ISR - .word PWM_Generator_2_ISR - .word QEI_ISR - .word ADC_Sequence_0_ISR - .word ADC_Sequence_1_ISR - .word ADC_Sequence_2_ISR - .word ADC_Sequence_3_ISR - .word Watchdog_Timer_ISR - .word Timer0IntHandler - .word Timer0B_ISR - .word Timer1A_ISR - .word Timer1B_ISR - .word vT2InterruptHandler - .word Timer2B_ISR - .word Analog_Comparator_0_ISR - .word Analog_Comparator_1_ISR - .word Analog_Comparator_2_ISR - .word System_Control_ISR - .word FLASH_Control_ISR - .word GPIO_Port_F_ISR - .word GPIO_Port_G_ISR - .word GPIO_Port_H_ISR - .word UART2_ISR - .word SSI1_ISR - .word vT3InterruptHandler - .word Timer3B_ISR - .word I2C1_ISR - .word QEI1_ISR - .word CAN0_ISR - .word CAN1_ISR - .word CAN2_ISR - .word vEMAC_ISR - .word HIBERNATE_ISR - .word USB0_ISR - .word PWM_Generator_3_ISR - .word uDMA_Software_Transfer_ISR - .word uDMA_Error_ISR -_vectors_end: - - .section .init, "ax" - .thumb_func - -reset_handler: -#ifdef __RAM_BUILD - /* If this is a RAM build, configure vector table offset register to point - to the RAM vector table. */ - ldr r0, =0xE000ED08 - ldr r1, =_vectors - str r1, [r0] -#endif - b _start - -DEFAULT_ISR_HANDLER Nmi_ISR -DEFAULT_ISR_HANDLER Fault_ISR -DEFAULT_ISR_HANDLER MPU_Fault_ISR -DEFAULT_ISR_HANDLER SVCall_ISR -DEFAULT_ISR_HANDLER SysTick_ISR -DEFAULT_ISR_HANDLER PendSV_ISR -DEFAULT_ISR_HANDLER GPIO_Port_A_ISR -DEFAULT_ISR_HANDLER GPIO_Port_B_ISR -DEFAULT_ISR_HANDLER GPIO_Port_C_ISR -DEFAULT_ISR_HANDLER GPIO_Port_D_ISR -DEFAULT_ISR_HANDLER GPIO_Port_E_ISR -DEFAULT_ISR_HANDLER UART0_ISR -DEFAULT_ISR_HANDLER UART1_ISR -DEFAULT_ISR_HANDLER SSI_ISR -DEFAULT_ISR_HANDLER I2C_ISR -DEFAULT_ISR_HANDLER PWM_Fault_ISR -DEFAULT_ISR_HANDLER PWM_Generator_0_ISR -DEFAULT_ISR_HANDLER PWM_Generator_1_ISR -DEFAULT_ISR_HANDLER PWM_Generator_2_ISR -DEFAULT_ISR_HANDLER QEI_ISR -DEFAULT_ISR_HANDLER ADC_Sequence_0_ISR -DEFAULT_ISR_HANDLER ADC_Sequence_1_ISR -DEFAULT_ISR_HANDLER ADC_Sequence_2_ISR -DEFAULT_ISR_HANDLER ADC_Sequence_3_ISR -DEFAULT_ISR_HANDLER Watchdog_Timer_ISR -DEFAULT_ISR_HANDLER Timer0A_ISR -DEFAULT_ISR_HANDLER Timer0B_ISR -DEFAULT_ISR_HANDLER Timer1A_ISR -DEFAULT_ISR_HANDLER Timer1B_ISR -DEFAULT_ISR_HANDLER Timer2A_ISR -DEFAULT_ISR_HANDLER Timer2B_ISR -DEFAULT_ISR_HANDLER Analog_Comparator_0_ISR -DEFAULT_ISR_HANDLER Analog_Comparator_1_ISR -DEFAULT_ISR_HANDLER Analog_Comparator_2_ISR -DEFAULT_ISR_HANDLER System_Control_ISR -DEFAULT_ISR_HANDLER FLASH_Control_ISR -DEFAULT_ISR_HANDLER GPIO_Port_F_ISR -DEFAULT_ISR_HANDLER GPIO_Port_G_ISR -DEFAULT_ISR_HANDLER GPIO_Port_H_ISR -DEFAULT_ISR_HANDLER UART2_ISR -DEFAULT_ISR_HANDLER SSI1_ISR -DEFAULT_ISR_HANDLER Timer3A_ISR -DEFAULT_ISR_HANDLER Timer3B_ISR -DEFAULT_ISR_HANDLER I2C1_ISR -DEFAULT_ISR_HANDLER QEI1_ISR -DEFAULT_ISR_HANDLER CAN0_ISR -DEFAULT_ISR_HANDLER CAN1_ISR -DEFAULT_ISR_HANDLER CAN2_ISR -DEFAULT_ISR_HANDLER ETHERNET_ISR -DEFAULT_ISR_HANDLER HIBERNATE_ISR -DEFAULT_ISR_HANDLER USB0_ISR -DEFAULT_ISR_HANDLER PWM_Generator_3_ISR -DEFAULT_ISR_HANDLER uDMA_Software_Transfer_ISR -DEFAULT_ISR_HANDLER uDMA_Error_ISR - -#ifndef STARTUP_FROM_RESET -DEFAULT_ISR_HANDLER reset_wait -#endif /* STARTUP_FROM_RESET */ diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/LM3S_Target.js b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/LM3S_Target.js deleted file mode 100644 index 55a9c2c7c..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/LM3S_Target.js +++ /dev/null @@ -1,28 +0,0 @@ -/****************************************************************************** - Target Script for LM3S. - - Copyright (c) 2006 Rowley Associates Limited. - - This file may be distributed under the terms of the License Agreement - provided with this software. - - THIS FILE IS PROVIDED AS IS WITH NO WARRANTY OF ANY KIND, INCLUDING THE - WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. - ******************************************************************************/ - -function Reset() -{ - TargetInterface.resetAndStop(1000); -} - -function RAMReset() -{ - Reset(); -} - -function FLASHReset() -{ - Reset(); -} - - diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/ParTest/ParTest.c b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/ParTest/ParTest.c deleted file mode 100644 index 5c697cfe0..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/ParTest/ParTest.c +++ /dev/null @@ -1,75 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/*----------------------------------------------------------- - * Simple parallel port IO routines. - *-----------------------------------------------------------*/ - -/* -*/ - -/* Scheduler includes. */ -#include "FreeRTOS.h" -#include "task.h" - -/* Demo includes. */ -#include "partest.h" - -/* Library includes. */ -#include "hw_types.h" -#include "gpio.h" -#include "hw_memmap.h" - - -/*-----------------------------------------------------------*/ - -void vParTestInitialise( void ) -{ - GPIODirModeSet( GPIO_PORTF_BASE, GPIO_PIN_0, GPIO_DIR_MODE_OUT ); - GPIOPadConfigSet( GPIO_PORTF_BASE, GPIO_PIN_0, GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_STD ); - GPIOPinWrite( GPIO_PORTF_BASE, GPIO_PIN_0, 0 ); -} -/*-----------------------------------------------------------*/ - -void vParTestSetLED( unsigned portBASE_TYPE uxLED, signed portBASE_TYPE xValue ) -{ - /* There is only one LED. */ - ( void ) uxLED; - - GPIOPinWrite( GPIO_PORTF_BASE, GPIO_PIN_0, xValue ); -} -/*-----------------------------------------------------------*/ - -unsigned portBASE_TYPE uxParTestGetLED( unsigned portBASE_TYPE uxLED ) -{ - /* There is only one LED. */ - ( void ) uxLED; - - return GPIOPinRead( GPIO_PORTF_BASE, GPIO_PIN_0 ); -} - - diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/RTOSDemo.hzp b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/RTOSDemo.hzp deleted file mode 100644 index 7e91c498e..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/RTOSDemo.hzp +++ /dev/null @@ -1,121 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/RTOSDemo.hzs b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/RTOSDemo.hzs deleted file mode 100644 index a250220fb..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/RTOSDemo.hzs +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/ReadMe.txt b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/ReadMe.txt new file mode 100644 index 000000000..12c70d213 --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/ReadMe.txt @@ -0,0 +1 @@ +The third party uIP TCP/IP stack and the demo project that used to be in this directory was removed in FreeRTOS version V10.4.3 due to security vulnerabilities identified in uIP. In a future version this demo may be replaced by a version which does not use TCP/IP or uses FreeRTOS’s own TCP/IP stack in place of the original third party stack. \ No newline at end of file diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/bitmap.h b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/bitmap.h deleted file mode 100644 index 29f813fd1..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/bitmap.h +++ /dev/null @@ -1,336 +0,0 @@ -#ifndef BITMAP_H -#define BITMAP_H - -#define bmpBITMAP_HEIGHT 50 -#define bmpBITMAP_WIDTH 128 - -const unsigned char pucBasicBitmap[] = -{ -0x00, 0x0a, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, -0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, -0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, -0xaa, 0xaa, 0xaa, 0x00, 0x0a, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, -0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, -0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, -0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xa0, 0x0a, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, -0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, -0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, -0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xaa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfa, 0xaa, -0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, -0x00, 0x8f, 0xff, 0xff, 0xf8, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x88, 0x88, 0x88, -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0x88, 0x77, 0x77, 0x78, 0x8f, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x88, 0x77, 0x77, 0x88, 0x8f, 0xff, 0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, -0xff, 0xff, 0xf0, 0x00, 0x00, 0x8f, 0x00, 0xff, 0x87, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x78, 0xff, 0xff, -0xf7, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x78, 0xff, 0xff, 0xff, 0x87, 0x77, 0x77, 0x77, 0x77, 0x77, -0x77, 0x77, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x7f, 0xff, 0xff, 0xfa, 0xaa, -0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0x70, 0x00, 0x00, 0x8f, 0x00, 0xff, 0x87, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, -0x77, 0x77, 0xff, 0xff, 0xf7, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x78, 0xff, 0xff, 0xf8, 0x77, 0x77, -0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x78, 0xff, 0xff, 0xff, 0xff, 0x87, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x8f, -0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0x70, 0x08, 0x00, 0x8f, 0x00, 0xff, 0x87, 0x77, 0x77, 0x77, -0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x8f, 0xff, 0xf7, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x78, 0xff, -0xff, 0x87, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x8f, 0xff, 0xff, 0xf8, 0x77, 0x77, 0x77, 0x77, 0x77, -0x77, 0x77, 0x77, 0x8f, 0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0x00, 0x0f, 0x00, 0x8f, 0x00, 0xff, -0x87, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x78, 0xff, 0xf7, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, -0x77, 0x77, 0x78, 0xff, 0xf8, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x78, 0xff, 0xff, 0xf8, 0x77, -0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x8f, 0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0x70, 0x07, -0x00, 0x70, 0x00, 0xff, 0x87, 0x77, 0x77, 0x77, 0xff, 0xff, 0xf8, 0x77, 0x77, 0x77, 0x77, 0xff, 0xff, 0xff, 0xff, 0xff, -0x77, 0x77, 0x77, 0x7f, 0xff, 0xff, 0xff, 0xff, 0x87, 0x77, 0x77, 0x77, 0x78, 0xff, 0xff, 0xf8, 0x77, 0x77, 0x77, 0x77, -0xff, 0xff, 0x87, 0x77, 0x77, 0x77, 0x8f, 0xff, 0xff, 0xff, 0x88, 0x8f, 0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, -0xff, 0xff, 0x80, 0x00, 0x00, 0x00, 0x07, 0xff, 0x87, 0x77, 0x77, 0x77, 0xff, 0xff, 0xff, 0x87, 0x77, 0x77, 0x77, 0xff, -0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x7f, 0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x77, 0xff, 0xff, 0xff, 0xff, -0x87, 0x77, 0x77, 0x77, 0xff, 0xff, 0x77, 0x77, 0x77, 0x77, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfa, 0xaa, -0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0xf7, 0x00, 0x00, 0x00, 0x0f, 0xff, 0x87, 0x77, 0x77, 0x77, 0xff, 0xff, 0xff, 0xf8, -0x77, 0x77, 0x77, 0xff, 0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x7f, 0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x77, -0xff, 0xff, 0xff, 0xff, 0xf7, 0x77, 0x77, 0x77, 0x8f, 0xff, 0x77, 0x77, 0x77, 0x77, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0xff, 0x70, 0x00, 0x00, 0xff, 0xff, 0x87, 0x77, 0x77, 0x77, -0xff, 0xff, 0xff, 0xf8, 0x77, 0x77, 0x77, 0xff, 0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x7f, 0xff, 0xff, 0xff, 0xff, -0x77, 0x77, 0x77, 0x78, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x77, 0x77, 0x77, 0x8f, 0xff, 0x77, 0x77, 0x77, 0x77, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0x87, 0x77, 0x77, 0x77, 0xff, 0xff, 0xff, 0xf7, 0x77, 0x77, 0x78, 0xff, 0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x7f, -0xff, 0xff, 0xff, 0xf8, 0x77, 0x77, 0x77, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0x77, 0x77, 0x78, 0xff, 0x87, 0x77, -0x77, 0x77, 0x78, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0x88, 0xff, 0xff, 0xff, 0x87, 0x77, 0x77, 0x77, 0xff, 0xff, 0xf8, 0x87, 0x77, 0x77, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, -0x77, 0x77, 0x77, 0x7f, 0xff, 0xff, 0xff, 0xf8, 0x77, 0x77, 0x77, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0x77, 0x77, -0x78, 0xff, 0x87, 0x77, 0x77, 0x77, 0x77, 0x77, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, -0xff, 0xff, 0xff, 0x80, 0x00, 0x8f, 0x8f, 0xff, 0x87, 0x77, 0x77, 0x77, 0x88, 0x88, 0x77, 0x77, 0x77, 0x77, 0x8f, 0xff, -0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x7f, 0xff, 0xff, 0xff, 0xf8, 0x77, 0x77, 0x77, 0x8f, 0xff, 0xff, 0xff, 0xff, -0xff, 0x87, 0x77, 0x77, 0x78, 0xff, 0xf7, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x88, 0xff, 0xff, 0xff, 0xff, 0xfa, 0xaa, -0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0xf7, 0x00, 0x00, 0x8f, 0x07, 0xff, 0x87, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, -0x77, 0x77, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x7f, 0xff, 0xff, 0xff, 0xf8, 0x77, 0x77, 0x77, 0x8f, -0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0x77, 0x77, 0x78, 0xff, 0xf8, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x8f, 0xff, -0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0x70, 0x07, 0x00, 0x8f, 0x00, 0xff, 0x87, 0x77, 0x77, 0x77, -0x77, 0x77, 0x77, 0x77, 0x88, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x7f, 0xff, 0xff, 0xff, 0xf8, -0x77, 0x77, 0x77, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0x77, 0x77, 0x78, 0xff, 0xff, 0xf8, 0x77, 0x77, 0x77, 0x77, -0x77, 0x77, 0x77, 0x8f, 0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0x70, 0x0f, 0x00, 0x8f, 0x00, 0xff, -0x87, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x7f, -0xff, 0xff, 0xff, 0xf8, 0x77, 0x77, 0x77, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0x77, 0x77, 0x78, 0xff, 0xff, 0xff, -0x87, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x78, 0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0x00, 0x0f, -0x00, 0x8f, 0x00, 0xff, 0x87, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x78, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0x77, 0x77, 0x77, 0x7f, 0xff, 0xff, 0xff, 0xf8, 0x77, 0x77, 0x77, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0x77, 0x77, -0x78, 0xff, 0xff, 0xff, 0xff, 0x88, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, -0xff, 0xff, 0x70, 0x08, 0x00, 0x88, 0x00, 0xff, 0x87, 0x77, 0x77, 0x77, 0x88, 0x88, 0x77, 0x77, 0x77, 0x78, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x7f, 0xff, 0xff, 0xff, 0xf8, 0x77, 0x77, 0x77, 0x8f, 0xff, 0xff, 0xff, 0xff, -0xff, 0x87, 0x77, 0x77, 0x78, 0xff, 0xff, 0xff, 0xff, 0xff, 0x88, 0x77, 0x77, 0x77, 0x77, 0x77, 0xff, 0xff, 0xfa, 0xaa, -0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0x70, 0x00, 0x00, 0x70, 0x07, 0xff, 0x87, 0x77, 0x77, 0x77, 0xff, 0xff, 0x77, 0x77, -0x77, 0x77, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x7f, 0xff, 0xff, 0xff, 0xf8, 0x77, 0x77, 0x77, 0x7f, -0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0x77, 0x77, 0x78, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x77, 0x77, 0x77, 0x77, -0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x7f, 0xff, 0x87, 0x77, 0x77, 0x77, -0xff, 0xff, 0xf7, 0x77, 0x77, 0x77, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x7f, 0xff, 0xff, 0xff, 0xff, -0x77, 0x77, 0x77, 0x78, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x77, 0x77, 0x77, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0x87, 0x77, 0x77, 0x77, 0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0xff, 0xff, -0x87, 0x77, 0x77, 0x77, 0xff, 0xff, 0xf8, 0x77, 0x77, 0x77, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x7f, -0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x77, 0xff, 0xff, 0xff, 0xff, 0xf7, 0x77, 0x77, 0x77, 0x8f, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0x87, 0x77, 0x77, 0x77, 0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0x87, 0x88, -0x88, 0x8f, 0xff, 0xff, 0x87, 0x77, 0x77, 0x77, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, -0x77, 0x77, 0x77, 0x7f, 0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x77, 0xff, 0xff, 0xff, 0xff, 0x87, 0x77, 0x77, 0x77, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0x77, 0x77, 0x77, 0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, -0xff, 0xff, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff, 0x87, 0x77, 0x77, 0x77, 0xff, 0xff, 0xff, 0x87, 0x77, 0x77, 0x7f, 0xff, -0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x7f, 0xff, 0xff, 0xff, 0xff, 0x87, 0x77, 0x77, 0x77, 0x8f, 0xff, 0xff, 0xff, -0x77, 0x77, 0x77, 0x77, 0xff, 0xff, 0xf7, 0x88, 0xff, 0xff, 0xff, 0xff, 0x87, 0x77, 0x77, 0x77, 0xff, 0xff, 0xfa, 0xaa, -0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0xff, 0xff, 0xff, 0xff, 0x87, 0x77, 0x77, 0x77, 0xff, 0xff, 0xff, 0xf7, -0x77, 0x77, 0x78, 0xff, 0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x77, 0x77, 0x77, -0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x78, 0xff, 0xff, 0x87, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x78, -0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0xf7, 0x00, 0x88, 0x88, 0x88, 0xff, 0x87, 0x77, 0x77, 0x77, -0xff, 0xff, 0xff, 0xf8, 0x77, 0x77, 0x77, 0xff, 0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x7f, 0xff, 0xff, 0xff, 0xff, -0xff, 0x87, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x8f, 0xff, 0xff, 0x87, 0x77, 0x77, 0x77, 0x77, 0x77, -0x77, 0x77, 0x77, 0x7f, 0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0x70, 0x00, 0x00, 0x00, 0x00, 0xff, -0x87, 0x77, 0x77, 0x77, 0xff, 0xff, 0xff, 0xf8, 0x77, 0x77, 0x77, 0x8f, 0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x7f, -0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x78, 0xff, 0xff, 0xff, 0x87, 0x77, -0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0xff, 0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0x70, 0x00, -0x00, 0x00, 0x00, 0xff, 0x87, 0x77, 0x77, 0x77, 0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x7f, 0xff, 0xff, 0xff, 0xff, -0x77, 0x77, 0x77, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x8f, 0xff, -0xff, 0xff, 0x87, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x8f, 0xff, 0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, -0xff, 0xff, 0x70, 0x00, 0x00, 0x00, 0x07, 0xff, 0x88, 0x88, 0x88, 0x88, 0xff, 0xff, 0xff, 0xff, 0x88, 0x88, 0x88, 0x88, -0xff, 0xff, 0xff, 0xff, 0x88, 0x88, 0x88, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x87, 0x77, 0x77, 0x77, -0x88, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x88, 0x77, 0x77, 0x77, 0x77, 0x88, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xfa, 0xaa, -0xaa, 0xaf, 0xff, 0xff, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, 0x00, 0x0f, 0x70, 0x08, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, 0x00, 0x07, 0x70, 0x07, -0x88, 0x88, 0x88, 0xff, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xfa, 0xaa, -0xaa, 0xaf, 0xff, 0xff, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, 0xf7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x70, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0x70, 0x08, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0x70, 0x08, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaf, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfa, 0xaa, -0xaa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xfa, 0xaa, 0xaa, 0xaa, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, -0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, -0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, -0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x0a, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, -0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, -0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, -0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xa0, 0x00, 0xaa, 0xaa, 0xaa, -0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, -0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, -0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x00, -0x00 }; - -const unsigned char pucGrLibBitmap[] = -{ - IMAGE_FMT_4BPP_COMP, - 124, 0, - 49, 0, - - 15, - 0x00, 0x00, 0x00, - 0x00, 0x0c, 0x00, - 0x20, 0x44, 0x20, - 0x00, 0x75, 0x00, - 0x69, 0x69, 0x69, - 0x00, 0xc2, 0x00, - 0x00, 0xd2, 0x00, - 0x38, 0xb6, 0x38, - 0x00, 0xea, 0x00, - 0x00, 0xf2, 0x00, - 0xaa, 0xb2, 0xaa, - 0x65, 0xff, 0x65, - 0x69, 0xff, 0x69, - 0x6d, 0xff, 0x6d, - 0x71, 0xff, 0x71, - 0xff, 0xff, 0xff, - - 0x03, 0x21, 0x33, 0x53, 0x33, 0x33, 0x33, 0xe9, 0xd4, 0xf8, 0xa7, 0x5f, - 0x17, 0x07, 0x06, 0x35, 0x33, 0x12, 0x03, 0x23, 0x96, 0x68, 0x88, 0x88, - 0x88, 0xe9, 0xd4, 0xf8, 0xa7, 0x5f, 0x17, 0x07, 0x06, 0x86, 0x69, 0x32, - 0x03, 0x29, 0x66, 0x65, 0x66, 0x66, 0x66, 0xe9, 0xd4, 0xf8, 0xa7, 0x5f, - 0x17, 0x07, 0x06, 0x56, 0x66, 0x92, 0x07, 0x78, 0x63, 0x11, 0x11, 0x11, - 0xe9, 0xd4, 0xa7, 0xf0, 0x5f, 0x17, 0x07, 0x07, 0x11, 0x36, 0x87, 0x78, - 0x0f, 0x63, 0x00, 0x00, 0x00, 0xe9, 0xd4, 0xa7, 0x5f, 0xe0, 0x17, 0x07, - 0x07, 0x00, 0x36, 0x87, 0x78, 0x63, 0xfe, 0x07, 0x07, 0x77, 0x2f, 0x07, - 0x07, 0x02, 0x36, 0x1e, 0x87, 0x78, 0x63, 0x07, 0x07, 0x77, 0x2f, 0x00, - 0x10, 0x01, 0x22, 0x20, 0x07, 0x00, 0x00, 0x22, 0x21, 0x84, 0x03, 0x36, - 0x87, 0x78, 0x63, 0x02, 0x02, 0xaa, 0x01, 0xa2, 0x22, 0x20, 0x02, 0x77, - 0x77, 0x77, 0xe9, 0x3a, 0x22, 0x22, 0x7a, 0xa4, 0x71, 0x20, 0x0a, 0x27, - 0xb8, 0x29, 0x72, 0xb2, 0x9e, 0x93, 0x36, 0x87, 0x78, 0x40, 0x63, 0x62, - 0x2a, 0xff, 0xf2, 0xaa, 0x40, 0x07, 0x08, 0xad, 0xdd, 0xdd, 0xdd, 0xe9, - 0xd7, 0x72, 0x00, 0x40, 0x00, 0xa6, 0xdd, 0xda, 0x70, 0x00, 0x00, 0x02, - 0x00, 0x77, 0xdd, 0xdc, 0xcc, 0xcd, 0xde, 0xc7, 0x20, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x27, 0xde, 0xdc, 0x08, 0xcc, 0xcc, 0xdd, 0xea, 0x99, - 0x36, 0x87, 0x78, 0x40, 0x63, 0x69, 0x02, 0xaf, 0xaa, 0xf2, 0x2f, 0xa0, - 0x04, 0x02, 0xdb, 0xbb, 0xbb, 0xbb, 0xe9, 0xbc, 0xe7, 0x10, 0x20, 0x00, - 0x07, 0xa5, 0xbb, 0xbd, 0x70, 0x00, 0x10, 0x00, 0x27, 0xec, 0x3b, 0xcd, - 0xd7, 0x00, 0x00, 0x80, 0x9f, 0xbd, 0x20, 0x00, 0x00, 0x36, 0x87, 0x78, - 0x40, 0x63, 0x69, 0x02, 0xfa, 0x2a, 0xf2, 0x2f, 0xa0, 0x31, 0x02, 0xdb, - 0x43, 0x31, 0x42, 0x00, 0x07, 0xa7, 0x0a, 0x70, 0x00, 0x02, 0xdd, 0x41, - 0xcc, 0x21, 0xce, 0x04, 0x70, 0x00, 0x00, 0x02, 0x7d, 0x39, 0xbc, 0xcb, - 0x00, 0xbb, 0xbd, 0x20, 0x00, 0x00, 0x36, 0x87, 0x78, 0x20, 0x63, 0x00, - 0x69, 0xfa, 0x0a, 0xf2, 0x2f, 0xa0, 0x01, 0x02, 0xdb, 0xbb, 0xbb, 0xdd, - 0xdd, 0xdc, 0x11, 0x08, 0xe7, 0x00, 0x07, 0xad, 0xbb, 0xcd, 0xdd, 0xda, - 0x09, 0x70, 0x00, 0x2d, 0xcb, 0x41, 0xcc, 0xdd, 0xd1, 0x04, 0xe7, 0x00, - 0x00, 0x07, 0xeb, 0x51, 0xdc, 0xcd, 0x00, 0xdd, 0xdd, 0x20, 0x00, 0x00, - 0x36, 0x87, 0x78, 0x00, 0x63, 0x00, 0x00, 0x00, 0x02, 0xfa, 0x2a, 0xf2, - 0x00, 0xaf, 0xa0, 0x02, 0xdb, 0xbb, 0xbd, 0x72, 0x22, 0x00, 0x77, 0xdc, - 0xbb, 0xbb, 0xc7, 0x20, 0x07, 0x77, 0x04, 0x77, 0x77, 0xcb, 0xbb, 0xbc, - 0xd1, 0x20, 0x01, 0x28, 0x7d, 0xbb, 0x42, 0x27, 0x41, 0xcd, 0x20, 0x00, - 0x40, 0x27, 0x51, 0x72, 0x22, 0x22, 0x27, 0x7c, 0x20, 0x00, 0x00, 0x00, - 0x36, 0x87, 0x78, 0x63, 0x00, 0x00, 0x00, 0x00, 0x02, 0xaf, 0xaa, 0xfa, - 0xff, 0x20, 0x02, 0x10, 0xdb, 0xbb, 0xbe, 0x61, 0x2d, 0xbb, 0xbb, 0xcc, - 0xa8, 0x29, 0x00, 0x89, 0xbd, 0xc3, 0xeb, 0xbb, 0xbb, 0x00, 0xd7, 0x10, - 0x00, 0x00, 0x2c, 0xcb, 0xbb, 0xbd, 0x58, 0x70, 0x12, 0xc7, 0x13, 0x29, - 0x36, 0x87, 0x78, 0x40, 0x63, 0xa9, 0x00, 0xaf, 0xff, 0xff, 0xfa, 0x20, - 0x08, 0x02, 0xdb, 0xbb, 0xbd, 0x39, 0x07, 0xdb, 0xbb, 0x72, 0xcc, 0x03, - 0x8c, 0x82, 0xbd, 0x70, 0x84, 0xbc, 0x03, 0xd2, 0x00, 0x2d, 0xbb, 0xbb, - 0xd7, 0x19, 0x01, 0x02, 0x00, 0x00, 0x36, 0x87, 0x78, 0x63, 0xa2, 0x0a, - 0x10, 0xaf, 0xff, 0xa2, 0x0a, 0xbd, 0x20, 0x00, 0x00, 0x0c, 0x07, 0xdb, - 0xbb, 0xc7, 0xc9, 0x8e, 0x00, 0x2c, 0x40, 0xcb, 0xc4, 0x00, 0x7c, 0xbb, - 0xbb, 0xe7, 0x00, 0x06, 0x2d, 0xbb, 0xbb, 0xc7, 0x10, 0x92, 0x31, 0x36, - 0x10, 0x87, 0x78, 0x63, 0xab, 0x22, 0x22, 0x00, 0x00, 0x00, 0x02, 0xdb, - 0xbb, 0xbd, 0x20, 0x00, 0x00, 0x07, 0x18, 0xcb, 0xbb, 0xd7, 0x0a, 0x8d, - 0x00, 0x2d, 0xbb, 0x23, 0xbb, 0xc7, 0x82, 0x00, 0x2e, 0xbb, 0x39, 0x91, - 0x20, 0xbd, 0x72, 0x8b, 0x00, 0x00, 0x36, 0x87, 0x78, 0x48, 0x63, 0x33, - 0x02, 0x20, 0xe1, 0xdb, 0xbb, 0xbd, 0x01, 0x20, 0x00, 0x02, 0x7d, 0xbb, - 0xbb, 0xe2, 0x6b, 0x94, 0x8b, 0x00, 0x00, 0x81, 0xd7, 0x82, 0x00, 0x2d, - 0x00, 0xbb, 0xbb, 0xc7, 0x20, 0x2c, 0xcb, 0xbb, 0xbb, 0x10, 0xdd, 0x77, - 0x22, 0x7b, 0x36, 0x87, 0x78, 0x63, 0x80, 0x32, 0x02, 0xaa, 0xf2, 0x22, - 0x20, 0x02, 0xdb, 0x00, 0xbb, 0xbc, 0x77, 0x77, 0x77, 0xdb, 0xbb, 0xce, - 0x42, 0x71, 0x63, 0xdb, 0xbb, 0xbd, 0x20, 0x19, 0x7d, 0x10, 0xbb, 0xbb, - 0xd2, 0x82, 0x00, 0x27, 0xcb, 0xbb, 0x00, 0xc7, 0x20, 0x07, 0xeb, 0xbb, - 0xbb, 0xbb, 0xcd, 0x21, 0xd7, 0x72, 0x72, 0x36, 0x87, 0x78, 0x63, 0x32, - 0x01, 0x4f, 0xff, 0xf2, 0xaf, 0xa0, 0x02, 0xdb, 0x41, 0x03, 0xdd, 0xdc, - 0xbb, 0xbc, 0xd7, 0x20, 0x22, 0x89, 0x42, 0xbd, 0xba, 0x7d, 0xbb, 0xbb, - 0xd2, 0x82, 0x00, 0x02, 0x27, 0xcb, 0xbb, 0xcc, 0x20, 0x02, 0x89, 0xbb, - 0x08, 0xbb, 0xbc, 0xdd, 0x72, 0x31, 0x36, 0x87, 0x78, 0x40, 0x63, 0x31, - 0x02, 0xaf, 0xaa, 0xf2, 0x2f, 0xa0, 0x21, 0x02, 0xdb, 0x3a, 0xbb, 0xbb, - 0xc7, 0x20, 0x31, 0x88, 0x59, 0xdb, 0xbb, 0xbd, 0xb2, 0x7d, 0xbb, 0xbb, - 0x40, 0xd2, 0x7b, 0x27, 0xcb, 0xbb, 0xcc, 0x20, 0x00, 0x00, 0x27, 0xec, - 0xbb, 0xbb, 0xbb, 0xbb, 0xbc, 0xe7, 0x84, 0x29, 0x36, 0x87, 0x78, 0x63, - 0x31, 0x02, 0xfa, 0x02, 0x0a, 0xf2, 0x2f, 0xa0, 0x02, 0xdb, 0x42, 0xbb, - 0x31, 0xbb, 0xc7, 0x39, 0x5a, 0xdb, 0xbb, 0xbd, 0xb2, 0x08, 0x7d, 0xbb, - 0xbb, 0xd2, 0x7b, 0x27, 0xcb, 0xbb, 0x00, 0xcc, 0x20, 0x00, 0x02, 0x77, - 0xed, 0xcb, 0xbb, 0x00, 0xbb, 0xbb, 0xbd, 0x71, 0x00, 0x00, 0x36, 0x87, - 0x20, 0x78, 0x63, 0x31, 0x02, 0xfa, 0x0a, 0xf2, 0x2f, 0x00, 0xa0, 0x02, - 0xdb, 0xbb, 0xbb, 0xcd, 0xdd, 0xcb, 0x18, 0xbb, 0xbc, 0xe2, 0x69, 0x59, - 0xdb, 0xbb, 0xbd, 0x42, 0x20, 0x19, 0x7d, 0xbb, 0xbb, 0xd2, 0x7b, 0x27, - 0x10, 0xcb, 0xbb, 0xcb, 0x79, 0x02, 0x27, 0x7d, 0xdc, 0x00, 0xbb, 0xbb, - 0xbb, 0xe2, 0x00, 0x00, 0x36, 0x87, 0x20, 0x78, 0x63, 0x31, 0x02, 0xfa, - 0x2a, 0xf2, 0xaf, 0x00, 0xa0, 0x02, 0xdb, 0xbb, 0xbd, 0x72, 0x27, 0x4c, - 0x1d, 0xbb, 0xbb, 0xd7, 0x69, 0x59, 0x89, 0x20, 0x19, 0x42, 0x7d, 0x7e, - 0x2c, 0xbb, 0xbb, 0xc7, 0x7a, 0x00, 0x10, 0x22, 0x7c, 0xcb, 0x63, 0x36, - 0x87, 0x78, 0x63, 0x80, 0x31, 0x02, 0xaf, 0xfa, 0xff, 0xff, 0x20, 0x02, - 0x00, 0xdb, 0xbb, 0xbd, 0x20, 0x00, 0x2c, 0xcb, 0xbb, 0x28, 0xcb, 0x20, - 0x61, 0x00, 0x8c, 0x00, 0x00, 0x2d, 0x12, 0xbb, 0xbb, 0xd7, 0x82, 0x00, - 0x2e, 0xbe, 0x00, 0x21, 0x02, 0x7c, 0x63, 0x36, 0x87, 0x78, 0x63, 0x32, - 0x00, 0x2f, 0xff, 0xff, 0xfa, 0x00, 0x02, 0xdb, 0xbb, 0x00, 0xbd, 0x20, - 0x00, 0x07, 0xdb, 0xbb, 0xbe, 0x20, 0xc2, 0x62, 0x8c, 0x00, 0x00, 0x2c, - 0xcb, 0xc4, 0x00, 0x0c, 0x7d, 0xbb, 0xbb, 0xe7, 0x3a, 0x19, 0x2d, 0xbb, - 0x00, 0xbb, 0xc7, 0x00, 0x00, 0x36, 0x87, 0x78, 0x63, 0x80, 0x3a, 0x02, - 0xaa, 0xaa, 0x40, 0x00, 0x02, 0xdb, 0x00, 0xbb, 0xbd, 0x20, 0x00, 0x02, - 0xcc, 0xbb, 0xbd, 0x63, 0x70, 0x63, 0x8b, 0x00, 0x00, 0x07, 0x49, 0x7a, - 0x98, 0x09, 0xbb, 0xd2, 0x3a, 0x19, 0x2d, 0xbb, 0xbb, 0x01, 0xd7, 0x00, - 0x00, 0x36, 0x87, 0x78, 0x63, 0x3a, 0x14, 0xaa, 0x22, 0x20, 0x0b, 0xbd, - 0xc9, 0x7d, 0xbb, 0x30, 0xbb, 0xd2, 0x61, 0x8e, 0x00, 0x02, 0xeb, 0xbb, - 0x20, 0xbb, 0xd7, 0x79, 0x27, 0xcb, 0xbb, 0xbd, 0x70, 0x24, 0x00, 0x02, - 0x6a, 0x00, 0x7d, 0x6b, 0x36, 0x87, 0x24, 0x78, 0x63, 0x39, 0x02, 0xff, - 0x62, 0x02, 0xdb, 0x21, 0xbb, 0xbd, 0x21, 0x2e, 0xbb, 0xbb, 0xe7, 0x61, - 0x80, 0x8e, 0x00, 0x02, 0x7d, 0xbb, 0xbb, 0xbd, 0x72, 0x00, 0x22, 0x27, - 0xcc, 0xbb, 0xbb, 0xcd, 0x20, 0x00, 0x08, 0x07, 0xe7, 0x72, 0x22, 0xa3, - 0xe2, 0x00, 0x00, 0x00, 0x36, 0x87, 0x78, 0x63, 0x00, 0x00, 0x00, 0x02, - 0x20, 0xaf, 0xa0, 0xd2, 0xdb, 0xbb, 0xbd, 0x20, 0x00, 0x03, 0x00, 0x2b, - 0xcb, 0xbb, 0xc7, 0x10, 0x8f, 0x11, 0x01, 0x2d, 0xcb, 0xbb, 0xbb, 0xdd, - 0xb7, 0xcd, 0xd1, 0x00, 0xe7, 0x00, 0x00, 0x07, 0xdc, 0xdd, 0xcb, 0x7b, - 0x00, 0xdd, 0xcb, 0xbb, 0xbc, 0x72, 0x00, 0x00, 0x36, 0x10, 0x87, 0x78, - 0x63, 0x01, 0x00, 0x2a, 0xfa, 0x42, 0x01, 0x22, 0x20, 0x02, 0xdb, 0xbb, - 0xbd, 0x20, 0x01, 0xb0, 0xcc, 0x00, 0x8d, 0xb9, 0xec, 0xbb, 0xbb, 0xbb, - 0x00, 0xcc, 0xcb, 0xbb, 0xbb, 0xbe, 0x71, 0x00, 0x00, 0x05, 0x27, 0xcb, - 0xbb, 0xcc, 0xcc, 0x81, 0xce, 0x29, 0x08, 0x36, 0x87, 0x78, 0x63, 0x02, - 0xaa, 0xff, 0xff, 0x02, 0xff, 0xa0, 0x02, 0xdb, 0xbb, 0xbd, 0x61, 0x02, - 0x0e, 0xeb, 0xbb, 0xbd, 0x70, 0x5a, 0x8c, 0x09, 0x27, 0x00, 0xec, 0xbb, - 0xbb, 0xbb, 0xbb, 0xbb, 0xbd, 0xd7, 0x54, 0x10, 0xa1, 0xcb, 0xa4, 0xd2, - 0x31, 0x36, 0x87, 0x20, 0x78, 0x63, 0x01, 0x02, 0xff, 0xff, 0xff, 0xff, - 0x02, 0xa0, 0x07, 0xad, 0xdd, 0xda, 0x20, 0x99, 0xde, 0x1c, 0xdd, 0xde, - 0xc2, 0x21, 0x8d, 0x0a, 0x7c, 0xed, 0x04, 0xcc, 0xcc, 0xcc, 0xde, 0xd7, - 0x92, 0x2c, 0xed, 0x40, 0xdc, 0xa7, 0x36, 0x87, 0x78, 0x63, 0x00, 0x02, - 0x00, 0x22, 0x02, 0xaa, 0xaa, 0xaa, 0xaa, 0x20, 0x02, 0x1b, 0x77, 0x77, - 0x77, 0x5a, 0xc9, 0x72, 0x21, 0x8e, 0x88, 0xaa, 0x27, 0x77, 0x7b, 0x9d, - 0x12, 0x27, 0x77, 0x20, 0x77, 0xb7, 0x3d, 0x36, 0x87, 0x78, 0x63, 0x00, - 0x3e, 0x02, 0xaa, 0x43, 0x22, 0xc6, 0x87, 0x3e, 0x12, 0x21, 0x22, 0x22, - 0x06, 0x01, 0x22, 0x22, 0x21, 0x04, 0x00, 0x36, 0x87, 0x78, 0x63, 0x00, - 0x02, 0xfa, 0x22, 0x3f, 0xaa, 0x20, 0x26, 0xc6, 0x87, 0x3f, 0x07, 0x07, - 0x00, 0x36, 0x87, 0x78, 0x63, 0x00, 0x02, 0xfa, 0x02, 0x7e, 0xff, 0x07, - 0x07, 0x77, 0x2f, 0x07, 0x06, 0x36, 0x00, 0x87, 0x78, 0x63, 0x00, 0x02, - 0xff, 0xaa, 0xfa, 0x07, 0x44, 0x44, 0x44, 0x20, 0x02, 0xd9, 0xc1, 0xd4, - 0xf0, 0xa7, 0x5f, 0x17, 0x04, 0x42, 0x00, 0x00, 0x36, 0x00, 0x87, 0x78, - 0x63, 0x00, 0x02, 0xff, 0xff, 0xff, 0x9f, 0xe9, 0xa0, 0x0a, 0xc4, 0x94, - 0xa7, 0x5f, 0x17, 0x80, 0x04, 0xfa, 0x20, 0x00, 0x36, 0x87, 0x78, 0x63, - 0x13, 0x00, 0x00, 0xaf, 0x03, 0xa0, 0x0a, 0x07, 0xbf, 0xe0, 0x77, 0x2f, - 0x07, 0xfa, 0x20, 0x00, 0x36, 0x87, 0x00, 0x78, 0x63, 0x00, 0x00, 0x02, - 0xaa, 0xfa, 0xaa, 0x0f, 0xaa, 0xaa, 0x20, 0x02, 0xd9, 0xc1, 0xd4, 0xa7, - 0xe0, 0x5f, 0x17, 0x05, 0x00, 0x00, 0x36, 0x87, 0x78, 0x03, 0x63, 0x00, - 0x00, 0x00, 0x02, 0xff, 0xd9, 0xc1, 0xfc, 0xd4, 0xa7, 0x5f, 0x17, 0x07, - 0x03, 0x36, 0x87, 0x23, 0x78, 0x63, 0x01, 0x02, 0x44, 0x20, 0x07, 0x07, - 0xf0, 0x77, 0x2f, 0x07, 0x05, 0x36, 0x87, 0x78, 0x63, 0xfe, 0x07, 0x07, - 0x77, 0x2f, 0x07, 0x07, 0x02, 0x36, 0x1f, 0x87, 0x78, 0x63, 0x07, 0x07, - 0x77, 0x2f, 0x07, 0xc0, 0x07, 0x02, 0x36, 0x87, 0x78, 0x63, 0x11, 0x11, - 0x7f, 0x11, 0xe9, 0xd4, 0xa7, 0x5f, 0x17, 0x07, 0x07, 0x00, 0x11, 0x36, - 0x87, 0x29, 0x66, 0x55, 0x55, 0x55, 0xfe, 0xe9, 0xd4, 0xa7, 0x5f, 0x17, - 0x07, 0x07, 0x55, 0x00, 0x66, 0x92, 0x23, 0x96, 0x68, 0x88, 0x88, 0x88, - 0xfe, 0xe9, 0xd4, 0xa7, 0x5f, 0x17, 0x07, 0x06, 0x86, 0x01, 0x69, 0x32, - 0x21, 0x33, 0x55, 0x55, 0x55, 0xe9, 0xfc, 0xd4, 0xa7, 0x5f, 0x17, 0x07, - 0x07, 0x55, 0x33, 0x00, 0x12, -}; - - -#endif diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/formike128x128x16.c b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/formike128x128x16.c deleted file mode 100644 index 87ff5feb4..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/formike128x128x16.c +++ /dev/null @@ -1,902 +0,0 @@ -//***************************************************************************** -// -// formike128x128x16.c - Display driver for the Formike Electronic -// KWH015C04-F01 CSTN panel with an ST7637 controller. -// -// Copyright (c) 2008 Luminary Micro, Inc. All rights reserved. -// -// Software License Agreement -// -// Luminary Micro, Inc. (LMI) is supplying this software for use solely and -// exclusively on LMI's microcontroller products. -// -// The software is owned by LMI and/or its suppliers, and is protected under -// applicable copyright laws. All rights are reserved. You may not combine -// this software with "viral" open-source software in order to form a larger -// program. Any use in violation of the foregoing restrictions may subject -// the user to criminal sanctions under applicable laws, as well as to civil -// liability for the breach of the terms and conditions of this license. -// -// THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED -// OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. -// LMI SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR -// CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. -// -// This is part of revision 2523 of the Stellaris Peripheral Driver Library. -// -//***************************************************************************** - -//***************************************************************************** -// -//! \addtogroup ek_lm3s3748_api -//! @{ -// -//***************************************************************************** - -#include "hw_gpio.h" -#include "hw_memmap.h" -#include "hw_types.h" -#include "gpio.h" -#include "sysctl.h" -#include "rom.h" -#include "grlib.h" -#include "formike128x128x16.h" -#include - -//***************************************************************************** -// -// Defines for the pins that are used to communicate with the ST7637. -// -//***************************************************************************** -#define LCD_A0_BASE GPIO_PORTB_BASE -#define LCD_A0_PIN GPIO_PIN_2 -#define LCD_WR_BASE GPIO_PORTC_BASE -#define LCD_WR_PIN GPIO_PIN_4 -#define LCD_RD_BASE GPIO_PORTC_BASE -#define LCD_RD_PIN GPIO_PIN_5 -#define LCD_BL_BASE GPIO_PORTF_BASE -#define LCD_BL_PIN GPIO_PIN_1 -#define LCD_DATA_BASE GPIO_PORTG_BASE - -//***************************************************************************** -// -// Translates a 24-bit RGB color to a display driver-specific color. -// -// \param c is the 24-bit RGB color. The least-significant byte is the blue -// channel, the next byte is the green channel, and the third byte is the red -// channel. -// -// This macro translates a 24-bit RGB color into a value that can be written -// into the display's frame buffer in order to reproduce that color, or the -// closest possible approximation of that color. -// -// \return Returns the display-driver specific color. -// -//***************************************************************************** -#define DPYCOLORTRANSLATE(c) ((((c) & 0x00ff0000) >> 19) | \ - ((((c) & 0x0000ff00) >> 5) & 0x000007e0) | \ - ((((c) & 0x000000ff) << 8) & 0x0000f800)) - -//***************************************************************************** -// -// Writes a data word to the ST7637. -// -//***************************************************************************** -static void -WriteData(unsigned char ucData) -{ - // - // Write the data to the data bus. - // - HWREG(LCD_DATA_BASE + GPIO_O_DATA + (0xff << 2)) = ucData; - - // - // Assert the write enable signal. - // - HWREG(LCD_WR_BASE + GPIO_O_DATA + (LCD_WR_PIN << 2)) = 0; - - // - // Deassert the write enable signal. - // - HWREG(LCD_WR_BASE + GPIO_O_DATA + (LCD_WR_PIN << 2)) = LCD_WR_PIN; -} - -//***************************************************************************** -// -// Writes a command to the ST7637. -// -//***************************************************************************** -static void -WriteCommand(unsigned char ucData) -{ - // - // Write the command to the data bus. - // - HWREG(LCD_DATA_BASE + GPIO_O_DATA + (0xff << 2)) = ucData; - - // - // Set the A0 signal low, indicating a command. - // - HWREG(LCD_A0_BASE + GPIO_O_DATA + (LCD_A0_PIN << 2)) = 0; - - // - // Assert the write enable signal. - // - HWREG(LCD_WR_BASE + GPIO_O_DATA + (LCD_WR_PIN << 2)) = 0; - - // - // Deassert the write enable signal. - // - HWREG(LCD_WR_BASE + GPIO_O_DATA + (LCD_WR_PIN << 2)) = LCD_WR_PIN; - - // - // Set the A0 signal high, indicating that following writes are data. - // - HWREG(LCD_A0_BASE + GPIO_O_DATA + (LCD_A0_PIN << 2)) = LCD_A0_PIN; -} - -//***************************************************************************** -// -//! Initializes the display driver. -//! -//! This function initializes the ST7637 display controller on the panel, -//! preparing it to display data. -//! -//! \return None. -// -//***************************************************************************** -void -Formike128x128x16Init(void) -{ - unsigned long ulClockMS, ulCount; - - // - // Get the value to pass to SysCtlDelay() in order to delay for 1 ms. - // - ulClockMS = SysCtlClockGet() / (3 * 1000); - - // - // Enable the GPIO peripherals used to interface to the ST7637. - // - SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB); - SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOC); - SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF); - SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOG); - - // - // Configure the pins that connect to the LCD as GPIO outputs. - // - GPIOPinTypeGPIOOutput(LCD_A0_BASE, LCD_A0_PIN); - GPIOPinTypeGPIOOutput(LCD_WR_BASE, LCD_WR_PIN); - GPIOPinTypeGPIOOutput(LCD_RD_BASE, LCD_RD_PIN); - GPIOPinTypeGPIOOutput(LCD_BL_BASE, LCD_BL_PIN); - GPIOPinTypeGPIOOutput(LCD_DATA_BASE, 0xff); - - // - // Set the LCD control pins to their default values. - // - GPIOPinWrite(LCD_A0_BASE, LCD_A0_PIN, LCD_A0_PIN); - GPIOPinWrite(LCD_WR_BASE, LCD_WR_PIN | LCD_RD_PIN, - LCD_WR_PIN | LCD_RD_PIN); - GPIOPinWrite(LCD_BL_BASE, LCD_BL_PIN, 0); - GPIOPinWrite(LCD_DATA_BASE, 0xff, 0x00); - - // - // Perform a software reset of the ST7637. - // - WriteCommand(0x01); - - // - // Delay for 120ms. - // - SysCtlDelay(ulClockMS * 120); - - // - // Disable auto-load of mask rom data. - // - WriteCommand(0xD7); - WriteData(0xBF); - - // - // Set the OTP control mode to read. - // - WriteCommand(0xE0); - WriteData(0x00); - - // - // Delay for 10ms. - // - SysCtlDelay(ulClockMS * 10); - - // - // Start the OTP read. - // - WriteCommand(0xE3); - - // - // Delay for 20ms. - // - SysCtlDelay(ulClockMS * 20); - - // - // Cancel the OTP read (it should have finished by now). - // - WriteCommand(0xE1); - - // - // Turn off the display. - // - WriteCommand(0x28); - - // - // Exit sleep mode. - // - WriteCommand(0x11); - - // - // Delay for 50ms. - // - SysCtlDelay(ulClockMS * 50); - - // - // Program the LCD supply voltage V0 to 14V. - // - WriteCommand(0xC0); - WriteData(0x04); - WriteData(0x01); - - // - // Select an LCD bias voltage ratio of 1/12. - // - WriteCommand(0xC3); - WriteData(0x00); - - // - // Enable the x8 booster circuit. - // - WriteCommand(0xC4); - WriteData(0x07); - - // - // Invert the column scan direction for the panel. - // - WriteCommand(0xB7); - WriteData(0xC0); - - // - // Select 16bpp, 5-6-5 data input mode. - // - WriteCommand(0x3A); - WriteData(0x05); - - // - // Select the memory scanning direction. The scanning mode does not matter - // for this driver since the row/column selects will constrain the writes - // to the desired area of the display. - // - WriteCommand(0x36); - WriteData(0x00); - - // - // Turn on the display. - // - WriteCommand(0x29); - - // - // Clear the contents of the display buffer. - // - WriteCommand(0x2A); - WriteData(0x00); - WriteData(0x7F); - WriteCommand(0x2B); - WriteData(0x01); - WriteData(0x80); - WriteCommand(0x2c); - for(ulCount = 0; ulCount < (128 * 128); ulCount++) - { - WriteData(0x00); - WriteData(0x00); - } - - // - // Enable normal operation of the LCD. - // - WriteCommand(0x13); -} - -//***************************************************************************** -// -//! Turns on the backlight. -//! -//! This function turns on the backlight on the display. -//! -//! \return None. -// -//***************************************************************************** -void -Formike128x128x16BacklightOn(void) -{ - // - // Assert the signal that turns on the backlight. - // - HWREG(LCD_BL_BASE + GPIO_O_DATA + (LCD_BL_PIN << 2)) = LCD_BL_PIN; -} - -//***************************************************************************** -// -//! Turns off the backlight. -//! -//! This function turns off the backlight on the display. -//! -//! \return None. -// -//***************************************************************************** -void -Formike128x128x16BacklightOff(void) -{ - // - // Deassert the signal that turns on the backlight. - // - HWREG(LCD_BL_BASE + GPIO_O_DATA + (LCD_BL_PIN << 2)) = 0; -} - -//***************************************************************************** -// -//! Draws a pixel on the screen. -//! -//! \param pvDisplayData is a pointer to the driver-specific data for this -//! display driver. -//! \param lX is the X coordinate of the pixel. -//! \param lY is the Y coordinate of the pixel. -//! \param ulValue is the color of the pixel. -//! -//! This function sets the given pixel to a particular color. The coordinates -//! of the pixel are assumed to be within the extents of the display. -//! -//! \return None. -// -//***************************************************************************** -static void -Formike128x128x16PixelDraw(void *pvDisplayData, long lX, long lY, - unsigned long ulValue) -{ - // - // Set the X address of the display cursor. - // - WriteCommand(0x2a); - WriteData(lX); - WriteData(lX); - - // - // Set the Y address of the display cursor. - // - WriteCommand(0x2b); - WriteData(lY + 1); - WriteData(lY + 1); - - // - // Write the pixel value. - // - WriteCommand(0x2c); - WriteData(ulValue >> 8); - WriteData(ulValue); -} - -//***************************************************************************** -// -//! Draws a horizontal sequence of pixels on the screen. -//! -//! \param pvDisplayData is a pointer to the driver-specific data for this -//! display driver. -//! \param lX is the X coordinate of the first pixel. -//! \param lY is the Y coordinate of the first pixel. -//! \param lX0 is sub-pixel offset within the pixel data, which is valid for 1 -//! or 4 bit per pixel formats. -//! \param lCount is the number of pixels to draw. -//! \param lBPP is the number of bits per pixel; must be 1, 4, or 8. -//! \param pucData is a pointer to the pixel data. For 1 and 4 bit per pixel -//! formats, the most significant bit(s) represent the left-most pixel. -//! \param pucPalette is a pointer to the palette used to draw the pixels. -//! -//! This function draws a horizontal sequence of pixels on the screen, using -//! the supplied palette. For 1 bit per pixel format, the palette contains -//! pre-translated colors; for 4 and 8 bit per pixel formats, the palette -//! contains 24-bit RGB values that must be translated before being written to -//! the display. -//! -//! \return None. -// -//***************************************************************************** -static void -Formike128x128x16PixelDrawMultiple(void *pvDisplayData, long lX, long lY, - long lX0, long lCount, long lBPP, - const unsigned char *pucData, - const unsigned char *pucPalette) -{ - unsigned long ulByte; - - // - // Set the extent of the line along the X axis. - // - WriteCommand(0x2a); - WriteData(lX); - WriteData(lX + lCount - 1); - - // - // Set the Y address of the display cursor. - // - WriteCommand(0x2b); - WriteData(lY + 1); - WriteData(lY + 1); - - // - // Write the data RAM write command. - // - WriteCommand(0x2c); - - // - // Determine how to interpret the pixel data based on the number of bits - // per pixel. - // - switch(lBPP) - { - // - // The pixel data is in 1 bit per pixel format. - // - case 1: - { - // - // Loop while there are more pixels to draw. - // - while(lCount) - { - // - // Get the next byte of image data. - // - ulByte = *pucData++; - - // - // Loop through the pixels in this byte of image data. - // - for(; (lX0 < 8) && lCount; lX0++, lCount--) - { - // - // Draw this pixel in the appropriate color. - // - lBPP = ((unsigned long *)pucPalette)[(ulByte >> - (7 - lX0)) & 1]; - WriteData(lBPP >> 8); - WriteData(lBPP); - } - - // - // Start at the beginning of the next byte of image data. - // - lX0 = 0; - } - - // - // The image data has been drawn. - // - break; - } - - // - // The pixel data is in 4 bit per pixel format. - // - case 4: - { - // - // Loop while there are more pixels to draw. "Duff's device" is - // used to jump into the middle of the loop if the first nibble of - // the pixel data should not be used. Duff's device makes use of - // the fact that a case statement is legal anywhere within a - // sub-block of a switch statement. See - // http://en.wikipedia.org/wiki/Duff's_device for detailed - // information about Duff's device. - // - switch(lX0 & 1) - { - case 0: - while(lCount) - { - // - // Get the upper nibble of the next byte of pixel data - // and extract the corresponding entry from the - // palette. - // - ulByte = (*pucData >> 4) * 3; - ulByte = (*(unsigned long *)(pucPalette + ulByte) & - 0x00ffffff); - - // - // Translate this palette entry and write it to the - // screen. - // - ulByte = DPYCOLORTRANSLATE(ulByte); - WriteData(ulByte >> 8); - WriteData(ulByte); - - // - // Decrement the count of pixels to draw. - // - lCount--; - - // - // See if there is another pixel to draw. - // - if(lCount) - { - case 1: - // - // Get the lower nibble of the next byte of pixel - // data and extract the corresponding entry from - // the palette. - // - ulByte = (*pucData++ & 15) * 3; - ulByte = (*(unsigned long *)(pucPalette + ulByte) & - 0x00ffffff); - - // - // Translate this palette entry and write it to the - // screen. - // - ulByte = DPYCOLORTRANSLATE(ulByte); - WriteData(ulByte >> 8); - WriteData(ulByte); - - // - // Decrement the count of pixels to draw. - // - lCount--; - } - } - } - - // - // The image data has been drawn. - // - break; - } - - // - // The pixel data is in 8 bit per pixel format. - // - case 8: - { - // - // Loop while there are more pixels to draw. - // - while(lCount--) - { - // - // Get the next byte of pixel data and extract the - // corresponding entry from the palette. - // - ulByte = *pucData++ * 3; - ulByte = *(unsigned long *)(pucPalette + ulByte) & 0x00ffffff; - - // - // Translate this palette entry and write it to the screen. - // - ulByte = DPYCOLORTRANSLATE(ulByte); - WriteData(ulByte >> 8); - WriteData(ulByte); - } - - // - // The image data has been drawn. - // - break; - } - } -} - -//***************************************************************************** -// -//! Flushes any cached drawing operations. -//! -//! \param pvDisplayData is a pointer to the driver-specific data for this -//! display driver. -//! -//! This functions flushes any cached drawing operations to the display. This -//! is useful when a local frame buffer is used for drawing operations, and the -//! flush would copy the local frame buffer to the display. For the ST7637 -//! driver, the flush is a no operation. -//! -//! \return None. -// -//***************************************************************************** -static void -Formike128x128x16Flush(void *pvDisplayData) -{ - // - // There is nothing to be done. - // -} - -//***************************************************************************** -// -//! Draws a horizontal line. -//! -//! \param pvDisplayData is a pointer to the driver-specific data for this -//! display driver. -//! \param lX1 is the X coordinate of the start of the line. -//! \param lX2 is the X coordinate of the end of the line. -//! \param lY is the Y coordinate of the line. -//! \param ulValue is the color of the line. -//! -//! This function draws a horizontal line on the display. The coordinates of -//! the line are assumed to be within the extents of the display. -//! -//! \return None. -// -//***************************************************************************** -static void -Formike128x128x16LineDrawH(void *pvDisplayData, long lX1, long lX2, long lY, - unsigned long ulValue) -{ - // - // Set the extent of the line along the X axis. - // - WriteCommand(0x2a); - WriteData(lX1); - WriteData(lX2); - - // - // Set the Y address of the display cursor. - // - WriteCommand(0x2b); - WriteData(lY + 1); - WriteData(lY + 1); - - // - // Write the data RAM write command. - // - WriteCommand(0x2c); - - // - // Loop through the pixels of this horizontal line. - // - while(lX1++ <= lX2) - { - // - // Write the pixel value. - // - WriteData(ulValue >> 8); - WriteData(ulValue); - } -} - -//***************************************************************************** -// -//! Draws a vertical line. -//! -//! \param pvDisplayData is a pointer to the driver-specific data for this -//! display driver. -//! \param lX is the X coordinate of the line. -//! \param lY1 is the Y coordinate of the start of the line. -//! \param lY2 is the Y coordinate of the end of the line. -//! \param ulValue is the color of the line. -//! -//! This function draws a vertical line on the display. The coordinates of the -//! line are assumed to be within the extents of the display. -//! -//! \return None. -// -//***************************************************************************** -static void -Formike128x128x16LineDrawV(void *pvDisplayData, long lX, long lY1, long lY2, - unsigned long ulValue) -{ - // - // Set the X address of the display cursor. - // - WriteCommand(0x2a); - WriteData(lX); - WriteData(lX); - - // - // Set the extent of the line along the Y axis. - // - WriteCommand(0x2b); - WriteData(lY1 + 1); - WriteData(lY2 + 1); - - // - // Write the data RAM write command. - // - WriteCommand(0x2c); - - // - // Loop through the pixels of this vertical line. - // - while(lY1++ <= lY2) - { - // - // Write the pixel value. - // - WriteData(ulValue >> 8); - WriteData(ulValue); - } -} - -//***************************************************************************** -// -//! Fills a rectangle. -//! -//! \param pvDisplayData is a pointer to the driver-specific data for this -//! display driver. -//! \param pRect is a pointer to the structure describing the rectangle. -//! \param ulValue is the color of the rectangle. -//! -//! This function fills a rectangle on the display. The coordinates of the -//! rectangle are assumed to be within the extents of the display, and the -//! rectangle specification is fully inclusive (i.e. both sXMin and sXMax are -//! drawn, along with sYMin and sYMax). -//! -//! \return None. -// -//***************************************************************************** -static void -Formike128x128x16RectFill(void *pvDisplayData, const tRectangle *pRect, - unsigned long ulValue) -{ - long lCount; - - // - // Set the extent of the rectangle along the X axis. - // - WriteCommand(0x2a); - WriteData(pRect->sXMin); - WriteData(pRect->sXMax); - - // - // Set the extent of the rectangle along the Y axis. - // - WriteCommand(0x2b); - WriteData(pRect->sYMin + 1); - WriteData(pRect->sYMax + 1); - - // - // Write the data RAM write command. - // - WriteCommand(0x2c); - - // - // Loop through the pixels in this rectangle. - // - for(lCount = ((pRect->sXMax - pRect->sXMin + 1) * - (pRect->sYMax - pRect->sYMin + 1)); lCount > 0; lCount--) - { - // - // Write the pixel value. - // - WriteData(ulValue >> 8); - WriteData(ulValue); - } -} - -//***************************************************************************** -// -//! Translates a 24-bit RGB color to a display driver-specific color. -//! -//! \param pvDisplayData is a pointer to the driver-specific data for this -//! display driver. -//! \param ulValue is the 24-bit RGB color. The least-significant byte is the -//! blue channel, the next byte is the green channel, and the third byte is the -//! red channel. -//! -//! This function translates a 24-bit RGB color into a value that can be -//! written into the display's frame buffer in order to reproduce that color, -//! or the closest possible approximation of that color. -//! -//! \return Returns the display-driver specific color. -// -//***************************************************************************** -static unsigned long -Formike128x128x16ColorTranslate(void *pvDisplayData, unsigned long ulValue) -{ - // - // Translate from a 24-bit RGB color to a 5-6-5 RGB color. - // - return(DPYCOLORTRANSLATE(ulValue)); -} - -//***************************************************************************** -// -//! The display structure that describes the driver for the Formike Electronic -//! KWH015C04-F01 CSTN panel with an ST7637 controller. -// -//***************************************************************************** -const tDisplay g_sFormike128x128x16 = -{ - sizeof(tDisplay), - 0, - 128, - 128, - Formike128x128x16PixelDraw, - Formike128x128x16PixelDrawMultiple, - Formike128x128x16LineDrawH, - Formike128x128x16LineDrawV, - Formike128x128x16RectFill, - Formike128x128x16ColorTranslate, - Formike128x128x16Flush -}; - -//***************************************************************************** -// -// Close the Doxygen group. -//! @} -// -//***************************************************************************** - - - - - - - - - - - - - - - - -/* FreeRTOS.org demo wrappers. These are required so the prototypes for the -functions are the same as for the display drivers used by other evaluation -kits. */ - -static tContext sContext; - -void vFormike128x128x16Clear( void ) -{ -const tRectangle xRectangle = { 0, 0, 127, 127 }; - - GrContextForegroundSet( &sContext, ClrBlack ); - GrRectFill( &sContext, &xRectangle ); - GrContextForegroundSet(&sContext, ClrWhite); -} -/*-----------------------------------------------------------*/ - -void vFormike128x128x16StringDraw( const char *pcString, unsigned long lX, unsigned long lY, unsigned char ucColor ) -{ - GrContextForegroundSet(&sContext, ClrWhite); - GrStringDraw( &sContext, pcString, strlen( pcString ), lX, lY, false ); -} -/*-----------------------------------------------------------*/ - -void vFormike128x128x16Init( unsigned long ul ) -{ -tRectangle rectScreen; -const unsigned char *pcAppName = "www.FreeRTOS.org"; - - ( void ) ul; - - Formike128x128x16Init(); - Formike128x128x16BacklightOn(); - GrContextInit(&sContext, &g_sFormike128x128x16); - GrContextFontSet(&sContext, &g_sFontCmss12); - rectScreen.sXMin = 0; - - /* Fill the screen with a black rectangle. */ - rectScreen.sYMin = 0; - rectScreen.sXMax = g_sFormike128x128x16.usWidth - 1; - rectScreen.sYMax = g_sFormike128x128x16.usHeight - 1; - GrContextForegroundSet(&sContext, ClrBlack); - GrRectFill(&sContext, &rectScreen); -} -/*-----------------------------------------------------------*/ - -void vFormike128x128x16ImageDraw( const unsigned char *pucImage, unsigned long ulX, unsigned long ulY, unsigned long ulWidth, unsigned long ulHeight ) -{ - GrImageDraw( &sContext, pucImage, ( long ) ulX, ( long ) ulY); -} - - - - diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/formike128x128x16.h b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/formike128x128x16.h deleted file mode 100644 index feaec758f..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/formike128x128x16.h +++ /dev/null @@ -1,51 +0,0 @@ -//***************************************************************************** -// -// formike128x128x16.h - Prototypes for the Formike Electronic KWH015C04-F01 -// display driver. -// -// Copyright (c) 2008 Luminary Micro, Inc. All rights reserved. -// -// Software License Agreement -// -// Luminary Micro, Inc. (LMI) is supplying this software for use solely and -// exclusively on LMI's microcontroller products. -// -// The software is owned by LMI and/or its suppliers, and is protected under -// applicable copyright laws. All rights are reserved. You may not combine -// this software with "viral" open-source software in order to form a larger -// program. Any use in violation of the foregoing restrictions may subject -// the user to criminal sanctions under applicable laws, as well as to civil -// liability for the breach of the terms and conditions of this license. -// -// THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED -// OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. -// LMI SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR -// CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. -// -// This is part of revision 2523 of the Stellaris Peripheral Driver Library. -// -//***************************************************************************** - -#ifndef __FORMIKE128X128X16_H__ -#define __FORMIKE128X128X16_H__ - -//***************************************************************************** -// -// Prototypes for the globals exported by this driver. -// -//***************************************************************************** -extern void Formike128x128x16Init(void); -extern void Formike128x128x16BacklightOn(void); -extern void Formike128x128x16BacklightOff(void); -extern const tDisplay g_sFormike128x128x16; - -/* FreeRTOS.org demo wrappers. These are required so the prototypes for the -functions are the same as for the display drivers used by other evaluation -kits. */ -void vFormike128x128x16Clear( void ); -void vFormike128x128x16StringDraw( const char *pcString, unsigned long lX, unsigned long lY, unsigned char ucColor ); -void vFormike128x128x16Init( unsigned long ul ); -void vFormike128x128x16ImageDraw( const unsigned char *pucImage, unsigned long ulX, unsigned long ulY, unsigned long ulWidth, unsigned long ulHeight ); - -#endif // __FORMIKE128X128X16_H__ diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/lcd_message.h b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/lcd_message.h deleted file mode 100644 index ced7a1dbc..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/lcd_message.h +++ /dev/null @@ -1,9 +0,0 @@ -#ifndef LCD_MESSAGE_H -#define LCD_MESSAGE_H - -typedef struct -{ - char *pcMessage; -} xOLEDMessage; - -#endif /* LCD_MESSAGE_H */ diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/main.c b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/main.c deleted file mode 100644 index 81097e713..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/main.c +++ /dev/null @@ -1,445 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - - -/* - * Creates all the demo application tasks, then starts the scheduler. The WEB - * documentation provides more details of the standard demo application tasks. - * In addition to the standard demo tasks, the following tasks and tests are - * defined and/or created within this file: - * - * "Fast Interrupt Test" - A high frequency periodic interrupt is generated - * using a free running timer to demonstrate the use of the - * configKERNEL_INTERRUPT_PRIORITY configuration constant. The interrupt - * service routine measures the number of processor clocks that occur between - * each interrupt - and in so doing measures the jitter in the interrupt timing. - * The maximum measured jitter time is latched in the ulMaxJitter variable, and - * displayed on the OLED display by the 'OLED' task as described below. The - * fast interrupt is configured and handled in the timertest.c source file. - * - * "OLED" task - the OLED task is a 'gatekeeper' task. It is the only task that - * is permitted to access the display directly. Other tasks wishing to write a - * message to the OLED send the message on a queue to the OLED task instead of - * accessing the OLED themselves. The OLED task just blocks on the queue waiting - * for messages - waking and displaying the messages as they arrive. - * - * "Check" hook - This only executes every five seconds from the tick hook. - * Its main function is to check that all the standard demo tasks are still - * operational. Should any unexpected behaviour within a demo task be discovered - * the tick hook will write an error to the OLED (via the OLED task). If all the - * demo tasks are executing with their expected behaviour then the check task - * writes PASS to the OLED (again via the OLED task), as described above. - * - * "uIP" task - This is the task that handles the uIP stack. All TCP/IP - * processing is performed in this task. - */ - - - - -/************************************************************************* - * Please ensure to read http://www.freertos.org/portLM3Sxxxx_Eclipse.html - * which provides information on configuring and running this demo for the - * various Luminary Micro EKs. - *************************************************************************/ - - - - -/* Standard includes. */ -#include - -/* Scheduler includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "queue.h" -#include "semphr.h" - -/* Hardware library includes. */ -#include "hw_memmap.h" -#include "hw_types.h" -#include "hw_sysctl.h" -#include "sysctl.h" -#include "gpio.h" -#include "grlib.h" -#include "rit128x96x4.h" -#include "osram128x64x4.h" -#include "formike128x128x16.h" - -/* Demo app includes. */ -#include "BlockQ.h" -#include "death.h" -#include "integer.h" -#include "blocktim.h" -#include "flash.h" -#include "partest.h" -#include "semtest.h" -#include "PollQ.h" -#include "lcd_message.h" -#include "bitmap.h" -#include "GenQTest.h" -#include "QPeek.h" -#include "recmutex.h" -#include "IntQueue.h" -#include "QueueSet.h" - -/*-----------------------------------------------------------*/ - -/* The time between cycles of the 'check' functionality (defined within the -tick hook. */ -#define mainCHECK_DELAY ( ( TickType_t ) 5000 / portTICK_PERIOD_MS ) - -/* Size of the stack allocated to the uIP task. */ -#define mainBASIC_WEB_STACK_SIZE ( configMINIMAL_STACK_SIZE * 3 ) - -/* The OLED task uses the sprintf function so requires a little more stack too. */ -#define mainOLED_TASK_STACK_SIZE ( configMINIMAL_STACK_SIZE + 50 ) - -/* Task priorities. */ -#define mainQUEUE_POLL_PRIORITY ( tskIDLE_PRIORITY + 2 ) -#define mainCHECK_TASK_PRIORITY ( tskIDLE_PRIORITY + 3 ) -#define mainSEM_TEST_PRIORITY ( tskIDLE_PRIORITY + 1 ) -#define mainBLOCK_Q_PRIORITY ( tskIDLE_PRIORITY + 2 ) -#define mainCREATOR_TASK_PRIORITY ( tskIDLE_PRIORITY + 3 ) -#define mainINTEGER_TASK_PRIORITY ( tskIDLE_PRIORITY ) -#define mainGEN_QUEUE_TASK_PRIORITY ( tskIDLE_PRIORITY ) - -/* The maximum number of message that can be waiting for display at any one -time. */ -#define mainOLED_QUEUE_SIZE ( 3 ) - -/* Dimensions the buffer into which the jitter time is written. */ -#define mainMAX_MSG_LEN 25 - -/* The period of the system clock in nano seconds. This is used to calculate -the jitter time in nano seconds. */ -#define mainNS_PER_CLOCK ( ( unsigned long ) ( ( 1.0 / ( double ) configCPU_CLOCK_HZ ) * 1000000000.0 ) ) - -/* Constants used when writing strings to the display. */ -#define mainCHARACTER_HEIGHT ( 9 ) -#define mainMAX_ROWS_128 ( mainCHARACTER_HEIGHT * 14 ) -#define mainMAX_ROWS_96 ( mainCHARACTER_HEIGHT * 10 ) -#define mainMAX_ROWS_64 ( mainCHARACTER_HEIGHT * 7 ) -#define mainFULL_SCALE ( 15 ) -#define ulSSI_FREQUENCY ( 3500000UL ) - -/*-----------------------------------------------------------*/ - -/* - * The task that handles the uIP stack. All TCP/IP processing is performed in - * this task. - */ -extern void vuIP_Task( void *pvParameters ); - -/* - * The display is written two by more than one task so is controlled by a - * 'gatekeeper' task. This is the only task that is actually permitted to - * access the display directly. Other tasks wanting to display a message send - * the message to the gatekeeper. - */ -static void vOLEDTask( void *pvParameters ); - -/* - * Configure the hardware for the demo. - */ -static void prvSetupHardware( void ); - -/* - * Configures the high frequency timers - those used to measure the timing - * jitter while the real time kernel is executing. - */ -extern void vSetupHighFrequencyTimer( void ); - -/* - * The idle hook is used to run a test of the scheduler context switch - * mechanism. - */ -void vApplicationIdleHook( void ) __attribute__((naked)); -/*-----------------------------------------------------------*/ - -/* The queue used to send messages to the OLED task. */ -QueueHandle_t xOLEDQueue; - -/* The welcome text. */ -const char * const pcWelcomeMessage = " www.FreeRTOS.org"; - -/* Variables used to detect the test in the idle hook failing. */ -unsigned long ulIdleError = pdFALSE; - -/*-----------------------------------------------------------*/ - -/************************************************************************* - * Please ensure to read http://www.freertos.org/portLM3Sxxxx_Eclipse.html - * which provides information on configuring and running this demo for the - * various Luminary Micro EKs. - *************************************************************************/ -int main( void ) -{ - prvSetupHardware(); - - /* Create the queue used by the OLED task. Messages for display on the OLED - are received via this queue. */ - xOLEDQueue = xQueueCreate( mainOLED_QUEUE_SIZE, sizeof( xOLEDMessage ) ); - - /* Create the uIP task if running on a processor that includes a MAC and - PHY. */ - if( SysCtlPeripheralPresent( SYSCTL_PERIPH_ETH ) ) - { - xTaskCreate( vuIP_Task, "uIP", mainBASIC_WEB_STACK_SIZE, NULL, mainCHECK_TASK_PRIORITY - 1, NULL ); - } - - /* Start the standard demo tasks. */ - vStartBlockingQueueTasks( mainBLOCK_Q_PRIORITY ); - vCreateBlockTimeTasks(); - vStartSemaphoreTasks( mainSEM_TEST_PRIORITY ); - vStartPolledQueueTasks( mainQUEUE_POLL_PRIORITY ); - vStartIntegerMathTasks( mainINTEGER_TASK_PRIORITY ); - vStartGenericQueueTasks( mainGEN_QUEUE_TASK_PRIORITY ); - vStartQueuePeekTasks(); - vStartRecursiveMutexTasks(); - vStartInterruptQueueTasks(); - vStartQueueSetTasks(); - - /* Start the tasks defined within this file/specific to this demo. */ - xTaskCreate( vOLEDTask, "OLED", mainOLED_TASK_STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL ); - - /* The suicide tasks must be created last as they need to know how many - tasks were running prior to their creation in order to ascertain whether - or not the correct/expected number of tasks are running at any given time. */ - vCreateSuicidalTasks( mainCREATOR_TASK_PRIORITY ); - - /* Configure the high frequency interrupt used to measure the interrupt - jitter time. */ - vSetupHighFrequencyTimer(); - - /* Start the scheduler. */ - vTaskStartScheduler(); - - /* Will only get here if there was insufficient memory to create the idle - task. */ - for( ;; ); - return 0; -} -/*-----------------------------------------------------------*/ - -void prvSetupHardware( void ) -{ - /* If running on Rev A2 silicon, turn the LDO voltage up to 2.75V. This is - a workaround to allow the PLL to operate reliably. */ - if( DEVICE_IS_REVA2 ) - { - SysCtlLDOSet( SYSCTL_LDO_2_75V ); - } - - /* Set the clocking to run from the PLL at 50 MHz */ - SysCtlClockSet( SYSCTL_SYSDIV_4 | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN | SYSCTL_XTAL_8MHZ ); - - /* Enable Port F for Ethernet LEDs - LED0 Bit 3 Output - LED1 Bit 2 Output */ - SysCtlPeripheralEnable( SYSCTL_PERIPH_GPIOF ); - GPIODirModeSet( GPIO_PORTF_BASE, (GPIO_PIN_2 | GPIO_PIN_3), GPIO_DIR_MODE_HW ); - GPIOPadConfigSet( GPIO_PORTF_BASE, (GPIO_PIN_2 | GPIO_PIN_3 ), GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_STD ); - - vParTestInitialise(); -} -/*-----------------------------------------------------------*/ - -void vApplicationTickHook( void ) -{ -static xOLEDMessage xMessage = { "PASS" }; -static unsigned long ulTicksSinceLastDisplay = 0; -portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE; - - /* Called from every tick interrupt. Have enough ticks passed to make it - time to perform our health status check again? */ - ulTicksSinceLastDisplay++; - if( ulTicksSinceLastDisplay >= mainCHECK_DELAY ) - { - ulTicksSinceLastDisplay = 0; - - /* Has an error been found in any task? */ - if( xAreGenericQueueTasksStillRunning() != pdTRUE ) - { - xMessage.pcMessage = "ERROR IN GEN Q"; - } - else if( xAreQueuePeekTasksStillRunning() != pdTRUE ) - { - xMessage.pcMessage = "ERROR IN PEEK Q"; - } - else if( xAreBlockingQueuesStillRunning() != pdTRUE ) - { - xMessage.pcMessage = "ERROR IN BLOCK Q"; - } - else if( xAreBlockTimeTestTasksStillRunning() != pdTRUE ) - { - xMessage.pcMessage = "ERROR IN BLOCK TIME"; - } - else if( xAreSemaphoreTasksStillRunning() != pdTRUE ) - { - xMessage.pcMessage = "ERROR IN SEMAPHORE"; - } - else if( xArePollingQueuesStillRunning() != pdTRUE ) - { - xMessage.pcMessage = "ERROR IN POLL Q"; - } - else if( xIsCreateTaskStillRunning() != pdTRUE ) - { - xMessage.pcMessage = "ERROR IN CREATE"; - } - else if( xAreIntegerMathsTaskStillRunning() != pdTRUE ) - { - xMessage.pcMessage = "ERROR IN MATH"; - } - else if( xAreRecursiveMutexTasksStillRunning() != pdTRUE ) - { - xMessage.pcMessage = "ERROR IN REC MUTEX"; - } - else if( ulIdleError != pdFALSE ) - { - xMessage.pcMessage = "ERROR IN HOOK"; - } - else if( xAreIntQueueTasksStillRunning() != pdTRUE ) - { - xMessage.pcMessage = "ERROR IN INT QUEUE"; - } - else if( xAreQueueSetTasksStillRunning() != pdTRUE ) - { - xMessage.pcMessage = "ERROR IN QUEUE SET"; - } - - /* Send the message to the OLED gatekeeper for display. */ - xHigherPriorityTaskWoken = pdFALSE; - xQueueSendFromISR( xOLEDQueue, &xMessage, &xHigherPriorityTaskWoken ); - } - - /* Exercise the queue sets from an ISR. */ - vQueueSetAccessQueueSetFromISR(); -} -/*-----------------------------------------------------------*/ - -void vOLEDTask( void *pvParameters ) -{ -xOLEDMessage xMessage; -unsigned long ulY, ulMaxY; -static char cMessage[ mainMAX_MSG_LEN ]; -extern volatile unsigned long ulMaxJitter; -unsigned portBASE_TYPE uxUnusedStackOnEntry; -const unsigned char *pucImage; - -/* Functions to access the OLED. The one used depends on the dev kit -being used. */ -void ( *vOLEDInit )( unsigned long ) = NULL; -void ( *vOLEDStringDraw )( const char *, unsigned long, unsigned long, unsigned char ) = NULL; -void ( *vOLEDImageDraw )( const unsigned char *, unsigned long, unsigned long, unsigned long, unsigned long ) = NULL; -void ( *vOLEDClear )( void ) = NULL; - - /* Just for demo purposes. */ - uxUnusedStackOnEntry = uxTaskGetStackHighWaterMark( NULL ); - - /* Map the OLED access functions to the driver functions that are appropriate - for the evaluation kit being used. */ - switch( HWREG( SYSCTL_DID1 ) & SYSCTL_DID1_PRTNO_MASK ) - { - case SYSCTL_DID1_PRTNO_6965 : - case SYSCTL_DID1_PRTNO_2965 : vOLEDInit = OSRAM128x64x4Init; - vOLEDStringDraw = OSRAM128x64x4StringDraw; - vOLEDImageDraw = OSRAM128x64x4ImageDraw; - vOLEDClear = OSRAM128x64x4Clear; - ulMaxY = mainMAX_ROWS_64; - pucImage = pucBasicBitmap; - break; - - case SYSCTL_DID1_PRTNO_1968 : - case SYSCTL_DID1_PRTNO_8962 : vOLEDInit = RIT128x96x4Init; - vOLEDStringDraw = RIT128x96x4StringDraw; - vOLEDImageDraw = RIT128x96x4ImageDraw; - vOLEDClear = RIT128x96x4Clear; - ulMaxY = mainMAX_ROWS_96; - pucImage = pucBasicBitmap; - break; - - default : vOLEDInit = vFormike128x128x16Init; - vOLEDStringDraw = vFormike128x128x16StringDraw; - vOLEDImageDraw = vFormike128x128x16ImageDraw; - vOLEDClear = vFormike128x128x16Clear; - ulMaxY = mainMAX_ROWS_128; - pucImage = pucGrLibBitmap; - break; - } - - ulY = ulMaxY; - - /* Initialise the OLED and display a startup message. */ - vOLEDInit( ulSSI_FREQUENCY ); - vOLEDStringDraw( "POWERED BY FreeRTOS", 0, 0, mainFULL_SCALE ); - vOLEDImageDraw( pucImage, 0, mainCHARACTER_HEIGHT + 1, bmpBITMAP_WIDTH, bmpBITMAP_HEIGHT ); - - for( ;; ) - { - /* Wait for a message to arrive that requires displaying. */ - xQueueReceive( xOLEDQueue, &xMessage, portMAX_DELAY ); - - /* Write the message on the next available row. */ - ulY += mainCHARACTER_HEIGHT; - if( ulY >= ulMaxY ) - { - ulY = mainCHARACTER_HEIGHT; - vOLEDClear(); - vOLEDStringDraw( pcWelcomeMessage, 0, 0, mainFULL_SCALE ); - } - - /* Display the message along with the maximum jitter time from the - high priority time test. */ - sprintf( cMessage, "%s [%uns]", xMessage.pcMessage, ulMaxJitter * mainNS_PER_CLOCK ); - vOLEDStringDraw( cMessage, 0, ulY, mainFULL_SCALE ); - } -} -/*-----------------------------------------------------------*/ - -void vApplicationStackOverflowHook( TaskHandle_t pxTask, char *pcTaskName ) -{ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -void vApplicationMallocFailedHook( void ) -{ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -/* Just to keep the linker happy. */ -void __error__( char *pcFilename, unsigned long ulLine ) -{ - for( ;; ); -} - -int uipprintf( const char *fmt, ... ) -{ - return( 0 ); -} diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/osram128x64x4.c b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/osram128x64x4.c deleted file mode 100644 index 3353a82e6..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/osram128x64x4.c +++ /dev/null @@ -1,933 +0,0 @@ -//***************************************************************************** -// -// osram128x64x4.c - Driver for the OSRAM 128x64x4 graphical OLED display. -// -// Copyright (c) 2006-2007 Luminary Micro, Inc. All rights reserved. -// -// Software License Agreement -// -// Luminary Micro, Inc. (LMI) is supplying this software for use solely and -// exclusively on LMI's microcontroller products. -// -// The software is owned by LMI and/or its suppliers, and is protected under -// applicable copyright laws. All rights are reserved. Any use in violation -// of the foregoing restrictions may subject the user to criminal sanctions -// under applicable laws, as well as to civil liability for the breach of the -// terms and conditions of this license. -// -// THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED -// OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. -// LMI SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR -// CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. -// -// This is part of revision 1408 of the Stellaris Peripheral Driver Library. -// -//***************************************************************************** - -//***************************************************************************** -// -//! \addtogroup ek_lm3sx965_api -//! @{ -// -//***************************************************************************** - -#include "hw_ssi.h" -#include "hw_memmap.h" -#include "hw_sysctl.h" -#include "hw_types.h" -#include "debug.h" -#include "gpio.h" -#include "ssi.h" -#include "sysctl.h" -#include "osram128x64x4.h" - -//***************************************************************************** -// -// Flag to indicate if SSI port is enabled for OSRAM usage. -// -//***************************************************************************** -static volatile tBoolean g_bSSIEnabled = false; - -//***************************************************************************** -// -// Define the OSRAM 128x64x4 Remap Setting(s). This will be used in -// several places in the code to switch between vertical and horizontal -// address incrementing. -// -// The Remap Command (0xA0) takes one 8-bit parameter. The parameter is -// defined as follows. -// -// Bit 7: Reserved -// Bit 6: Disable(0)/Enable(1) COM Split Odd Even -// When enabled, the COM signals are split Odd on one side, even on -// the other. Otherwise, they are split 0-39 on one side, 40-79 on -// the other. -// Bit 5: Reserved -// Bit 4: Disable(0)/Enable(1) COM Remap -// When Enabled, ROW 0-79 map to COM 79-0 (i.e. reverse row order) -// Bit 3: Reserved -// Bit 2: Horizontal(0)/Vertical(1) Address Increment -// When set, data RAM address will increment along the column rather -// than along the row. -// Bit 1: Disable(0)/Enable(1) Nibble Remap -// When enabled, the upper and lower nibbles in the DATA bus for access -// to the data RAM are swapped. -// Bit 0: Disable(0)/Enable(1) Column Address Remap -// When enabled, DATA RAM columns 0-63 are remapped to Segment Columns -// 127-0. -// -//***************************************************************************** -#define OSRAM_INIT_REMAP 0x52 -#define OSRAM_INIT_OFFSET 0x4C -static const unsigned char g_pucOSRAM128x64x4VerticalInc[] = { 0xA0, 0x56 }; -static const unsigned char g_pucOSRAM128x64x4HorizontalInc[] = { 0xA0, 0x52 }; - -//***************************************************************************** -// -// A 5x7 font (in a 6x8 cell, where the sixth column is omitted from this -// table) for displaying text on the OLED display. The data is organized as -// bytes from the left column to the right column, with each byte containing -// the top row in the LSB and the bottom row in the MSB. -// -// Note: This is the same font data that is used in the EK-LM3S811 -// osram96x16x1 driver. The single bit-per-pixel is expaned in the StringDraw -// function to the appropriate four bit-per-pixel gray scale format. -// -//***************************************************************************** -static const unsigned char g_pucFont[96][5] = -{ - { 0x00, 0x00, 0x00, 0x00, 0x00 }, // " " - { 0x00, 0x00, 0x4f, 0x00, 0x00 }, // ! - { 0x00, 0x07, 0x00, 0x07, 0x00 }, // " - { 0x14, 0x7f, 0x14, 0x7f, 0x14 }, // # - { 0x24, 0x2a, 0x7f, 0x2a, 0x12 }, // $ - { 0x23, 0x13, 0x08, 0x64, 0x62 }, // % - { 0x36, 0x49, 0x55, 0x22, 0x50 }, // & - { 0x00, 0x05, 0x03, 0x00, 0x00 }, // ' - { 0x00, 0x1c, 0x22, 0x41, 0x00 }, // ( - { 0x00, 0x41, 0x22, 0x1c, 0x00 }, // ) - { 0x14, 0x08, 0x3e, 0x08, 0x14 }, // * - { 0x08, 0x08, 0x3e, 0x08, 0x08 }, // + - { 0x00, 0x50, 0x30, 0x00, 0x00 }, // , - { 0x08, 0x08, 0x08, 0x08, 0x08 }, // - - { 0x00, 0x60, 0x60, 0x00, 0x00 }, // . - { 0x20, 0x10, 0x08, 0x04, 0x02 }, // / - { 0x3e, 0x51, 0x49, 0x45, 0x3e }, // 0 - { 0x00, 0x42, 0x7f, 0x40, 0x00 }, // 1 - { 0x42, 0x61, 0x51, 0x49, 0x46 }, // 2 - { 0x21, 0x41, 0x45, 0x4b, 0x31 }, // 3 - { 0x18, 0x14, 0x12, 0x7f, 0x10 }, // 4 - { 0x27, 0x45, 0x45, 0x45, 0x39 }, // 5 - { 0x3c, 0x4a, 0x49, 0x49, 0x30 }, // 6 - { 0x01, 0x71, 0x09, 0x05, 0x03 }, // 7 - { 0x36, 0x49, 0x49, 0x49, 0x36 }, // 8 - { 0x06, 0x49, 0x49, 0x29, 0x1e }, // 9 - { 0x00, 0x36, 0x36, 0x00, 0x00 }, // : - { 0x00, 0x56, 0x36, 0x00, 0x00 }, // ; - { 0x08, 0x14, 0x22, 0x41, 0x00 }, // < - { 0x14, 0x14, 0x14, 0x14, 0x14 }, // = - { 0x00, 0x41, 0x22, 0x14, 0x08 }, // > - { 0x02, 0x01, 0x51, 0x09, 0x06 }, // ? - { 0x32, 0x49, 0x79, 0x41, 0x3e }, // @ - { 0x7e, 0x11, 0x11, 0x11, 0x7e }, // A - { 0x7f, 0x49, 0x49, 0x49, 0x36 }, // B - { 0x3e, 0x41, 0x41, 0x41, 0x22 }, // C - { 0x7f, 0x41, 0x41, 0x22, 0x1c }, // D - { 0x7f, 0x49, 0x49, 0x49, 0x41 }, // E - { 0x7f, 0x09, 0x09, 0x09, 0x01 }, // F - { 0x3e, 0x41, 0x49, 0x49, 0x7a }, // G - { 0x7f, 0x08, 0x08, 0x08, 0x7f }, // H - { 0x00, 0x41, 0x7f, 0x41, 0x00 }, // I - { 0x20, 0x40, 0x41, 0x3f, 0x01 }, // J - { 0x7f, 0x08, 0x14, 0x22, 0x41 }, // K - { 0x7f, 0x40, 0x40, 0x40, 0x40 }, // L - { 0x7f, 0x02, 0x0c, 0x02, 0x7f }, // M - { 0x7f, 0x04, 0x08, 0x10, 0x7f }, // N - { 0x3e, 0x41, 0x41, 0x41, 0x3e }, // O - { 0x7f, 0x09, 0x09, 0x09, 0x06 }, // P - { 0x3e, 0x41, 0x51, 0x21, 0x5e }, // Q - { 0x7f, 0x09, 0x19, 0x29, 0x46 }, // R - { 0x46, 0x49, 0x49, 0x49, 0x31 }, // S - { 0x01, 0x01, 0x7f, 0x01, 0x01 }, // T - { 0x3f, 0x40, 0x40, 0x40, 0x3f }, // U - { 0x1f, 0x20, 0x40, 0x20, 0x1f }, // V - { 0x3f, 0x40, 0x38, 0x40, 0x3f }, // W - { 0x63, 0x14, 0x08, 0x14, 0x63 }, // X - { 0x07, 0x08, 0x70, 0x08, 0x07 }, // Y - { 0x61, 0x51, 0x49, 0x45, 0x43 }, // Z - { 0x00, 0x7f, 0x41, 0x41, 0x00 }, // [ - { 0x02, 0x04, 0x08, 0x10, 0x20 }, // "\" - { 0x00, 0x41, 0x41, 0x7f, 0x00 }, // ] - { 0x04, 0x02, 0x01, 0x02, 0x04 }, // ^ - { 0x40, 0x40, 0x40, 0x40, 0x40 }, // _ - { 0x00, 0x01, 0x02, 0x04, 0x00 }, // ` - { 0x20, 0x54, 0x54, 0x54, 0x78 }, // a - { 0x7f, 0x48, 0x44, 0x44, 0x38 }, // b - { 0x38, 0x44, 0x44, 0x44, 0x20 }, // c - { 0x38, 0x44, 0x44, 0x48, 0x7f }, // d - { 0x38, 0x54, 0x54, 0x54, 0x18 }, // e - { 0x08, 0x7e, 0x09, 0x01, 0x02 }, // f - { 0x0c, 0x52, 0x52, 0x52, 0x3e }, // g - { 0x7f, 0x08, 0x04, 0x04, 0x78 }, // h - { 0x00, 0x44, 0x7d, 0x40, 0x00 }, // i - { 0x20, 0x40, 0x44, 0x3d, 0x00 }, // j - { 0x7f, 0x10, 0x28, 0x44, 0x00 }, // k - { 0x00, 0x41, 0x7f, 0x40, 0x00 }, // l - { 0x7c, 0x04, 0x18, 0x04, 0x78 }, // m - { 0x7c, 0x08, 0x04, 0x04, 0x78 }, // n - { 0x38, 0x44, 0x44, 0x44, 0x38 }, // o - { 0x7c, 0x14, 0x14, 0x14, 0x08 }, // p - { 0x08, 0x14, 0x14, 0x18, 0x7c }, // q - { 0x7c, 0x08, 0x04, 0x04, 0x08 }, // r - { 0x48, 0x54, 0x54, 0x54, 0x20 }, // s - { 0x04, 0x3f, 0x44, 0x40, 0x20 }, // t - { 0x3c, 0x40, 0x40, 0x20, 0x7c }, // u - { 0x1c, 0x20, 0x40, 0x20, 0x1c }, // v - { 0x3c, 0x40, 0x30, 0x40, 0x3c }, // w - { 0x44, 0x28, 0x10, 0x28, 0x44 }, // x - { 0x0c, 0x50, 0x50, 0x50, 0x3c }, // y - { 0x44, 0x64, 0x54, 0x4c, 0x44 }, // z - { 0x00, 0x08, 0x36, 0x41, 0x00 }, // { - { 0x00, 0x00, 0x7f, 0x00, 0x00 }, // | - { 0x00, 0x41, 0x36, 0x08, 0x00 }, // } - { 0x02, 0x01, 0x02, 0x04, 0x02 }, // ~ - { 0x02, 0x01, 0x02, 0x04, 0x02 }, // ~ -}; - -//***************************************************************************** -// -// The sequence of commands used to initialize the SSD0303 controller. Each -// command is described as follows: there is a byte specifying the number of -// bytes in the command sequence, followed by that many bytes of command data. -// Note: This initialization sequence is derived from OSRAM App Note AN018. -// -//***************************************************************************** -static const unsigned char g_pucOSRAM128x64x4Init[] = -{ - // - // Column Address - // - 4, 0x15, 0, 63, 0xe3, - - // - // Row Address - // - 4, 0x75, 0, 63, 0xe3, - - // - // Contrast Control - // - 3, 0x81, 50, 0xe3, - - // - // Half Current Range - // - 2, 0x85, 0xe3, - - // - // Display Re-map - // - 3, 0xA0, OSRAM_INIT_REMAP, 0xe3, - - // - // Display Start Line - // - 3, 0xA1, 0, 0xe3, - - // - // Display Offset - // - 3, 0xA2, OSRAM_INIT_OFFSET, 0xe3, - - // - // Display Mode Normal - // - 2, 0xA4, 0xe3, - - // - // Multiplex Ratio - // - 3, 0xA8, 63, 0xe3, - - // - // Phase Length - // - 3, 0xB1, 0x22, 0xe3, - - // - // Row Period - // - 3, 0xB2, 70, 0xe3, - - // - // Display Clock Divide - // - 3, 0xB3, 0xF1, 0xe3, - - // - // VSL - // - 3, 0xBF, 0x0D, 0xe3, - - // - // VCOMH - // - 3, 0xBE, 0x02, 0xe3, - - // - // VP - // - 3, 0xBC, 0x10, 0xe3, - - // - // Gamma - // - 10, 0xB8, 0x01, 0x11, 0x22, 0x32, 0x43, 0x54, 0x65, 0x76, 0xe3, - - // - // Set DC-DC - 3, 0xAD, 0x03, 0xe3, - - // - // Display ON/OFF - // - 2, 0xAF, 0xe3, -}; - -//***************************************************************************** -// -//! \internal -//! -//! Write a sequence of command bytes to the SSD0323 controller. -//! -//! The data is written in a polled fashion; this function will not return -//! until the entire byte sequence has been written to the controller. -//! -//! \return None. -// -//***************************************************************************** -static void -OSRAMWriteCommand(const unsigned char *pucBuffer, unsigned long ulCount) -{ - unsigned long ulTemp; - - // - // Return iff SSI port is not enabled for OSRAM. - // - if(!g_bSSIEnabled) - { - return; - } - - // - // Clear the command/control bit to enable command mode. - // - GPIOPinWrite(GPIO_PORTC_BASE, GPIO_PIN_7, 0); - - // - // Loop while there are more bytes left to be transferred. - // - while(ulCount != 0) - { - // - // Write the next byte to the controller. - // - SSIDataPut(SSI0_BASE, *pucBuffer++); - - // - // Dummy read to drain the fifo and time the GPIO signal. - // - SSIDataGet(SSI0_BASE, &ulTemp); - - // - // Decrement the BYTE counter. - // - ulCount--; - } -} - -//***************************************************************************** -// -//! \internal -//! -//! Write a sequence of data bytes to the SSD0323 controller. -//! -//! The data is written in a polled fashion; this function will not return -//! until the entire byte sequence has been written to the controller. -//! -//! \return None. -// -//***************************************************************************** -static void -OSRAMWriteData(const unsigned char *pucBuffer, unsigned long ulCount) -{ - unsigned long ulTemp; - - // - // Return iff SSI port is not enabled for OSRAM. - // - if(!g_bSSIEnabled) - { - return; - } - - // - // Set the command/control bit to enable data mode. - // - GPIOPinWrite(GPIO_PORTC_BASE, GPIO_PIN_7, GPIO_PIN_7); - - // - // Loop while there are more bytes left to be transferred. - // - while(ulCount != 0) - { - // - // Write the next byte to the controller. - // - SSIDataPut(SSI0_BASE, *pucBuffer++); - - // - // Dummy read to drain the fifo and time the GPIO signal. - // - SSIDataGet(SSI0_BASE, &ulTemp); - - // - // Decrement the BYTE counter. - // - ulCount--; - } -} - -//***************************************************************************** -// -//! Clears the OLED display. -//! -//! This function will clear the display RAM. All pixels in the display will -//! be turned off. -//! -//! This function is contained in osram128x64x4.c, with -//! osram128x64x4.h containing the API definition for use by -//! applications. -//! -//! \return None. -// -//***************************************************************************** -void -OSRAM128x64x4Clear(void) -{ - static const unsigned char pucCommand1[] = { 0x15, 0, 63 }; - static const unsigned char pucCommand2[] = { 0x75, 0, 79 }; - unsigned long ulRow, ulColumn; - static unsigned char pucZeroBuffer[8] = { 0, 0, 0, 0, 0, 0, 0, 0}; - - // - // Set the window to fill the entire display. - // - OSRAMWriteCommand(pucCommand1, sizeof(pucCommand1)); - OSRAMWriteCommand(pucCommand2, sizeof(pucCommand2)); - OSRAMWriteCommand(g_pucOSRAM128x64x4VerticalInc, - sizeof(g_pucOSRAM128x64x4VerticalInc)); - - // - // In vertical address increment mode, loop through each column, filling - // each row with 0. - // - for(ulColumn = 0; ulColumn < (128/2); ulColumn++) - { - // - // 8 rows (bytes) per row of text. - // - for(ulRow = 0; ulRow < 80; ulRow += 8) - { - OSRAMWriteData(pucZeroBuffer, sizeof(pucZeroBuffer)); - } - } -} - -//***************************************************************************** -// -//! Displays a string on the OLED display. -//! -//! \param pcStr is a pointer to the string to display. -//! \param ulX is the horizontal position to display the string, specified in -//! columns from the left edge of the display. -//! \param ulY is the vertical position to display the string, specified in -//! rows from the top edge of the display. -//! \param ucLevel is the 4-bit grey scale value to be used for displayed text. -//! -//! This function will draw a string on the display. Only the ASCII characters -//! between 32 (space) and 126 (tilde) are supported; other characters will -//! result in random data being draw on the display (based on whatever appears -//! before/after the font in memory). The font is mono-spaced, so characters -//! such as "i" and "l" have more white space around them than characters such -//! as "m" or "w". -//! -//! If the drawing of the string reaches the right edge of the display, no more -//! characters will be drawn. Therefore, special care is not required to avoid -//! supplying a string that is "too long" to display. -//! -//! This function is contained in osram128x64x4.c, with -//! osram128x64x4.h containing the API definition for use by -//! applications. -//! -//! \note Because the OLED display packs 2 pixels of data in a single byte, the -//! parameter \e ulX must be an even column number (e.g. 0, 2, 4, etc). -//! -//! \return None. -// -//***************************************************************************** -void -OSRAM128x64x4StringDraw(const char *pcStr, unsigned long ulX, - unsigned long ulY, unsigned char ucLevel) -{ - static unsigned char pucBuffer[8]; - unsigned long ulIdx1, ulIdx2; - unsigned char ucTemp; - - // - // Check the arguments. - // - ASSERT(ulX < 128); - ASSERT((ulX & 1) == 0); - ASSERT(ulY < 64); - ASSERT(ucLevel < 16); - - // - // Setup a window starting at the specified column and row, ending - // at the right edge of the display and 8 rows down (single character row). - // - pucBuffer[0] = 0x15; - pucBuffer[1] = ulX / 2; - pucBuffer[2] = 63; - OSRAMWriteCommand(pucBuffer, 3); - pucBuffer[0] = 0x75; - pucBuffer[1] = ulY; - pucBuffer[2] = ulY + 7; - OSRAMWriteCommand(pucBuffer, 3); - OSRAMWriteCommand(g_pucOSRAM128x64x4VerticalInc, - sizeof(g_pucOSRAM128x64x4VerticalInc)); - - // - // Loop while there are more characters in the string. - // - while(*pcStr != 0) - { - // - // Get a working copy of the current character and convert to an - // index into the character bit-map array. - // - ucTemp = *pcStr; - ucTemp &= 0x7F; - if(ucTemp < ' ') - { - ucTemp = ' '; - } - else - { - ucTemp -= ' '; - } - - // - // Build and display the character buffer. - // - for(ulIdx1 = 0; ulIdx1 < 3; ulIdx1++) - { - // - // Convert two columns of 1-bit font data into a single data - // byte column of 4-bit font data. - // - for(ulIdx2 = 0; ulIdx2 < 8; ulIdx2++) - { - pucBuffer[ulIdx2] = 0; - if(g_pucFont[ucTemp][ulIdx1*2] & (1 << ulIdx2)) - { - pucBuffer[ulIdx2] = ((ucLevel << 4) & 0xf0); - } - if((ulIdx1 < 2) && - (g_pucFont[ucTemp][ulIdx1*2+1] & (1 << ulIdx2))) - { - pucBuffer[ulIdx2] |= ((ucLevel << 0) & 0x0f); - } - } - - // - // If there is room, dump the single data byte column to the - // display. Otherwise, bail out. - // - if(ulX < 126) - { - OSRAMWriteData(pucBuffer, 8); - ulX += 2; - } - else - { - return; - } - } - - // - // Advance to the next character. - // - pcStr++; - } -} - -//***************************************************************************** -// -//! Displays an image on the OLED display. -//! -//! \param pucImage is a pointer to the image data. -//! \param ulX is the horizontal position to display this image, specified in -//! columns from the left edge of the display. -//! \param ulY is the vertical position to display this image, specified in -//! rows from the top of the display. -//! \param ulWidth is the width of the image, specified in columns. -//! \param ulHeight is the height of the image, specified in rows. -//! -//! This function will display a bitmap graphic on the display. Because of the -//! format of the display RAM, the starting column (/e ulX) and the number of -//! columns (/e ulWidth) must be an integer multiple of two. -//! -//! The image data is organized with the first row of image data appearing left -//! to right, followed immediately by the second row of image data. Each byte -//! contains the data for two columns in the current row, with the leftmost -//! column being contained in bits 7:4 and the rightmost column being contained -//! in bits 3:0. -//! -//! For example, an image six columns wide and seven scan lines tall would -//! be arranged as follows (showing how the twenty one bytes of the image would -//! appear on the display): -//! -//! \verbatim -//! +-------------------+-------------------+-------------------+ -//! | Byte 0 | Byte 1 | Byte 2 | -//! +---------+---------+---------+---------+---------+---------+ -//! | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | -//! +---------+---------+---------+---------+---------+---------+ -//! | Byte 3 | Byte 4 | Byte 5 | -//! +---------+---------+---------+---------+---------+---------+ -//! | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | -//! +---------+---------+---------+---------+---------+---------+ -//! | Byte 6 | Byte 7 | Byte 8 | -//! +---------+---------+---------+---------+---------+---------+ -//! | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | -//! +---------+---------+---------+---------+---------+---------+ -//! | Byte 9 | Byte 10 | Byte 11 | -//! +---------+---------+---------+---------+---------+---------+ -//! | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | -//! +---------+---------+---------+---------+---------+---------+ -//! | Byte 12 | Byte 13 | Byte 14 | -//! +---------+---------+---------+--3------+---------+---------+ -//! | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | -//! +---------+---------+---------+---------+---------+---------+ -//! | Byte 15 | Byte 16 | Byte 17 | -//! +---------+---------+---------+---------+---------+---------+ -//! | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | -//! +---------+---------+---------+---------+---------+---------+ -//! | Byte 18 | Byte 19 | Byte 20 | -//! +---------+---------+---------+---------+---------+---------+ -//! | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | -//! +---------+---------+---------+---------+---------+---------+ -//! \endverbatim -//! -//! This function is contained in osram128x64x4.c, with -//! osram128x64x4.h containing the API definition for use by` -//! applications. -//! -//! \return None. -// -//***************************************************************************** -void -OSRAM128x64x4ImageDraw(const unsigned char *pucImage, unsigned long ulX, - unsigned long ulY, unsigned long ulWidth, - unsigned long ulHeight) -{ - static unsigned char pucBuffer[8]; - - // - // Check the arguments. - // - ASSERT(ulX < 128); - ASSERT((ulX & 1) == 0); - ASSERT(ulY < 64); - ASSERT((ulX + ulWidth) <= 128); - ASSERT((ulY + ulHeight) <= 64); - ASSERT((ulWidth & 1) == 0); - - // - // Setup a window starting at the specified column and row, and ending - // at the column + width and row+height. - // - pucBuffer[0] = 0x15; - pucBuffer[1] = ulX / 2; - pucBuffer[2] = (ulX + ulWidth - 2) / 2; - OSRAMWriteCommand(pucBuffer, 3); - pucBuffer[0] = 0x75; - pucBuffer[1] = ulY; - pucBuffer[2] = ulY + ulHeight - 1; - OSRAMWriteCommand(pucBuffer, 3); - OSRAMWriteCommand(g_pucOSRAM128x64x4HorizontalInc, - sizeof(g_pucOSRAM128x64x4HorizontalInc)); - - // - // Loop while there are more rows to display. - // - while(ulHeight--) - { - // - // Write this row of image data. - // - OSRAMWriteData(pucImage, (ulWidth / 2)); - - // - // Advance to the next row of the image. - // - pucImage += (ulWidth / 2); - } -} - -//***************************************************************************** -// -//! Enable the SSI component of the OLED display driver. -//! -//! \param ulFrequency specifies the SSI Clock Frequency to be used. -//! -//! This function initializes the SSI interface to the OLED display. -//! -//! This function is contained in osram128x64x4.c, with -//! osram128x64x4.h containing the API definition for use by -//! applications. -//! -//! \return None. -// -//***************************************************************************** -void -OSRAM128x64x4Enable(unsigned long ulFrequency) -{ - unsigned long ulTemp; - - // - // Disable the SSI port. - // - SSIDisable(SSI0_BASE); - - // - // Configure the SSI0 port for master mode. - // - SSIConfig(SSI0_BASE, SSI_FRF_MOTO_MODE_2, SSI_MODE_MASTER, ulFrequency, 8); - - // - // (Re)Enable SSI control of the FSS pin. - // - GPIOPinTypeSSI(GPIO_PORTA_BASE, GPIO_PIN_3); - GPIOPadConfigSet(GPIO_PORTA_BASE, GPIO_PIN_3, GPIO_STRENGTH_8MA, - GPIO_PIN_TYPE_STD_WPU); - - // - // Enable the SSI port. - // - SSIEnable(SSI0_BASE); - - // - // Drain the receive fifo. - // - while(SSIDataNonBlockingGet(SSI0_BASE, &ulTemp) != 0) - { - } - - // - // Indicate that the OSRAM driver can use the SSI Port. - // - g_bSSIEnabled = true; -} - -//***************************************************************************** -// -//! Enable the SSI component of the OLED display driver. -//! -//! \param ulFrequency specifies the SSI Clock Frequency to be used. -//! -//! This function initializes the SSI interface to the OLED display. -//! -//! This function is contained in osram128x64x4.c, with -//! osram128x64x4.h containing the API definition for use by -//! applications. -//! -//! \return None. -// -//***************************************************************************** -void -OSRAM128x64x4Disable(void) -{ - unsigned long ulTemp; - - // - // Indicate that the OSRAM driver can no longer use the SSI Port. - // - g_bSSIEnabled = false; - - // - // Drain the receive fifo. - // - while(SSIDataNonBlockingGet(SSI0_BASE, &ulTemp) != 0) - { - } - - // - // Disable the SSI port. - // - SSIDisable(SSI0_BASE); - - // - // Disable SSI control of the FSS pin. - // - GPIODirModeSet(GPIO_PORTA_BASE, GPIO_PIN_3, GPIO_DIR_MODE_OUT); - GPIOPadConfigSet(GPIO_PORTA_BASE, GPIO_PIN_3, GPIO_STRENGTH_8MA, - GPIO_PIN_TYPE_STD_WPU); - GPIOPinWrite(GPIO_PORTA_BASE, GPIO_PIN_3, GPIO_PIN_3); - -} - -//***************************************************************************** -// -//! Initialize the OLED display. -//! -//! \param ulFrequency specifies the SSI Clock Frequency to be used. -//! -//! This function initializes the SSI interface to the OLED display and -//! configures the SSD0323 controller on the panel. -//! -//! This function is contained in osram128x64x4.c, with -//! osram128x64x4.h containing the API definition for use by -//! applications. -//! -//! \return None. -// -//***************************************************************************** -void -OSRAM128x64x4Init(unsigned long ulFrequency) -{ - unsigned long ulIdx; - - // - // Enable the SSI0 and GPIO port blocks as they are needed by this driver. - // - SysCtlPeripheralEnable(SYSCTL_PERIPH_SSI0); - SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA); - SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOC); - - // - // Configure the SSI0CLK and SSIOTX pins for SSI operation. - // - GPIOPinTypeSSI(GPIO_PORTA_BASE, GPIO_PIN_2 | GPIO_PIN_3 | GPIO_PIN_5); - GPIOPadConfigSet(GPIO_PORTA_BASE, GPIO_PIN_2, GPIO_STRENGTH_8MA, - GPIO_PIN_TYPE_STD_WPU); - GPIOPadConfigSet(GPIO_PORTA_BASE, GPIO_PIN_3, GPIO_STRENGTH_8MA, - GPIO_PIN_TYPE_STD_WPU); - GPIOPadConfigSet(GPIO_PORTA_BASE, GPIO_PIN_5, GPIO_STRENGTH_8MA, - GPIO_PIN_TYPE_STD_WPU); - - // - // Configure the PC7 pin as a D/Cn signal for OLED device. - // - GPIODirModeSet(GPIO_PORTC_BASE, GPIO_PIN_7, GPIO_DIR_MODE_OUT); - GPIOPadConfigSet(GPIO_PORTC_BASE, GPIO_PIN_7, GPIO_STRENGTH_8MA, - GPIO_PIN_TYPE_STD); - GPIOPinWrite(GPIO_PORTC_BASE, GPIO_PIN_7, GPIO_PIN_7); - - // - // Configure and enable the SSI0 port for master mode. - // - OSRAM128x64x4Enable(ulFrequency); - - // - // Clear the frame buffer. - // - OSRAM128x64x4Clear(); - - // - // Initialize the SSD0323 controller. Loop through the initialization - // sequence array, sending each command "string" to the controller. - // - for(ulIdx = 0; ulIdx < sizeof(g_pucOSRAM128x64x4Init); - ulIdx += g_pucOSRAM128x64x4Init[ulIdx] + 1) - { - // - // Send this command. - // - OSRAMWriteCommand(g_pucOSRAM128x64x4Init + ulIdx + 1, - g_pucOSRAM128x64x4Init[ulIdx] - 1); - } -} - -//***************************************************************************** -// -//! Turns on the OLED display. -//! -//! This function will turn on the OLED display, causing it to display the -//! contents of its internal frame buffer. -//! -//! This function is contained in osram128x64x4.c, with -//! osram128x64x4.h containing the API definition for use by -//! applications. -//! -//! \return None. -// -//***************************************************************************** -void -OSRAM128x64x4DisplayOn(void) -{ - unsigned long ulIdx; - - // - // Initialize the SSD0323 controller. Loop through the initialization - // sequence array, sending each command "string" to the controller. - // - for(ulIdx = 0; ulIdx < sizeof(g_pucOSRAM128x64x4Init); - ulIdx += g_pucOSRAM128x64x4Init[ulIdx] + 1) - { - // - // Send this command. - // - OSRAMWriteCommand(g_pucOSRAM128x64x4Init + ulIdx + 1, - g_pucOSRAM128x64x4Init[ulIdx] - 1); - } -} - -//***************************************************************************** -// -//! Turns off the OLED display. -//! -//! This function will turn off the OLED display. This will stop the scanning -//! of the panel and turn off the on-chip DC-DC converter, preventing damage to -//! the panel due to burn-in (it has similar characters to a CRT in this -//! respect). -//! -//! This function is contained in osram128x64x4.c, with -//! osram128x64x4.h containing the API definition for use by -//! applications. -//! -//! \return None. -// -//***************************************************************************** -void -OSRAM128x64x4DisplayOff(void) -{ - static const unsigned char pucCommand1[] = - { - 0xAE, 0xAD, 0x02 - }; - - // - // Turn off the DC-DC converter and the display. - // - OSRAMWriteCommand(pucCommand1, sizeof(pucCommand1)); -} - -//***************************************************************************** -// -// Close the Doxygen group. -//! @} -// -//***************************************************************************** diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/osram128x64x4.h b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/osram128x64x4.h deleted file mode 100644 index 2ba7cb956..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/osram128x64x4.h +++ /dev/null @@ -1,63 +0,0 @@ -//***************************************************************************** -// -// osram128x64x4.h - Prototypes for the driver for the OSRAM 128x64x4 graphical -// OLED display. -// -// Copyright (c) 2006-2007 Luminary Micro, Inc. All rights reserved. -// -// Software License Agreement -// -// Luminary Micro, Inc. (LMI) is supplying this software for use solely and -// exclusively on LMI's microcontroller products. -// -// The software is owned by LMI and/or its suppliers, and is protected under -// applicable copyright laws. All rights are reserved. Any use in violation -// of the foregoing restrictions may subject the user to criminal sanctions -// under applicable laws, as well as to civil liability for the breach of the -// terms and conditions of this license. -// -// THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED -// OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. -// LMI SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR -// CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. -// -// This is part of revision 1408 of the Stellaris Peripheral Driver Library. -// -//***************************************************************************** - -#ifndef __OSRAM128X64X4_H__ -#define __OSRAM128X64X4_H__ - -//***************************************************************************** -// -// Prototypes for the driver APIs. -// -//***************************************************************************** -extern void OSRAM128x64x4Clear(void); -extern void OSRAM128x64x4StringDraw(const char *pcStr, - unsigned long ulX, - unsigned long ulY, - unsigned char ucLevel); -extern void OSRAM128x64x4ImageDraw(const unsigned char *pucImage, - unsigned long ulX, - unsigned long ulY, - unsigned long ulWidth, - unsigned long ulHeight); -extern void OSRAM128x64x4Init(unsigned long ulFrequency); -extern void OSRAM128x64x4Enable(unsigned long ulFrequency); -extern void OSRAM128x64x4Disable(void); -extern void OSRAM128x64x4DisplayOn(void); -extern void OSRAM128x64x4DisplayOff(void); - -//***************************************************************************** -// -// The following macro(s) map old names for the OSRAM functions to the new -// names. In new code, the new names should be used in favor of the old names. -// -//***************************************************************************** -#ifndef DEPRECATED -#define OSRAM128x64x1InitSSI OSRAM128x64x4Enable -#endif - -#endif // __OSRAM128X64X4_H__ diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/pack_struct_end.h b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/pack_struct_end.h deleted file mode 100644 index 621c9fe39..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/pack_struct_end.h +++ /dev/null @@ -1,2 +0,0 @@ -/* Note used by this port of uIP, but required for compilation. */ - diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/pack_struct_start.h b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/pack_struct_start.h deleted file mode 100644 index 621c9fe39..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/pack_struct_start.h +++ /dev/null @@ -1,2 +0,0 @@ -/* Note used by this port of uIP, but required for compilation. */ - diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/rit128x96x4.c b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/rit128x96x4.c deleted file mode 100644 index cff38d557..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/rit128x96x4.c +++ /dev/null @@ -1,981 +0,0 @@ -//***************************************************************************** -// -// rit128x96x4.c - Driver for the RIT 128x96x4 graphical OLED display. -// -// Copyright (c) 2007 Luminary Micro, Inc. All rights reserved. -// -// Software License Agreement -// -// Luminary Micro, Inc. (LMI) is supplying this software for use solely and -// exclusively on LMI's microcontroller products. -// -// The software is owned by LMI and/or its suppliers, and is protected under -// applicable copyright laws. All rights are reserved. Any use in violation -// of the foregoing restrictions may subject the user to criminal sanctions -// under applicable laws, as well as to civil liability for the breach of the -// terms and conditions of this license. -// -// THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED -// OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. -// LMI SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR -// CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. -// -// This is part of revision 1504-conf of the Stellaris Peripheral Driver Library. -// -//***************************************************************************** - -//***************************************************************************** -// -//! \addtogroup ek_lm3sLM3S8962_api -//! @{ -// -//***************************************************************************** - -#include "hw_ssi.h" -#include "hw_memmap.h" -#include "hw_sysctl.h" -#include "hw_types.h" -#include "debug.h" -#include "gpio.h" -#include "ssi.h" -#include "sysctl.h" -#include "rit128x96x4.h" - -//***************************************************************************** -// -// Macros that define the peripheral, port, and pin used for the OLEDDC -// panel control signal. -// -//***************************************************************************** - -unsigned long ulGPIOId = 0, ulGPIOBase = 0, ulOLEDDC_PIN = 0, ulOLEDEN_PIN = 0; - -#define LM3S8962_SYSCTL_PERIPH_GPIO_OLEDDC SYSCTL_PERIPH_GPIOA -#define LM3S8962_GPIO_OLEDDC_BASE GPIO_PORTA_BASE -#define LM3S8962_GPIO_OLEDDC_PIN GPIO_PIN_6 -#define LM3S8962_GPIO_OLEDEN_PIN GPIO_PIN_7 - -#define LM3S1968_SYSCTL_PERIPH_GPIO_OLEDDC SYSCTL_PERIPH_GPIOH -#define LM3S1968_GPIO_OLEDDC_BASE GPIO_PORTH_BASE -#define LM3S1968_GPIO_OLEDDC_PIN GPIO_PIN_2 -#define LM3S1968_GPIO_OLEDEN_PIN GPIO_PIN_3 - - -//***************************************************************************** -// -// Flag to indicate if SSI port is enabled for display usage. -// -//***************************************************************************** -static volatile tBoolean g_bSSIEnabled = false; - -//***************************************************************************** -// -// Buffer for storing sequences of command and data for the display. -// -//***************************************************************************** -static unsigned char g_pucBuffer[8]; - -//***************************************************************************** -// -// Define the SSD1329 128x96x4 Remap Setting(s). This will be used in -// several places in the code to switch between vertical and horizontal -// address incrementing. Note that the controller support 128 rows while -// the RIT display only uses 96. -// -// The Remap Command (0xA0) takes one 8-bit parameter. The parameter is -// defined as follows. -// -// Bit 7: Reserved -// Bit 6: Disable(0)/Enable(1) COM Split Odd Even -// When enabled, the COM signals are split Odd on one side, even on -// the other. Otherwise, they are split 0-63 on one side, 64-127 on -// the other. -// Bit 5: Reserved -// Bit 4: Disable(0)/Enable(1) COM Remap -// When Enabled, ROW 0-127 map to COM 127-0 (i.e. reverse row order) -// Bit 3: Reserved -// Bit 2: Horizontal(0)/Vertical(1) Address Increment -// When set, data RAM address will increment along the column rather -// than along the row. -// Bit 1: Disable(0)/Enable(1) Nibble Remap -// When enabled, the upper and lower nibbles in the DATA bus for access -// to the data RAM are swapped. -// Bit 0: Disable(0)/Enable(1) Column Address Remap -// When enabled, DATA RAM columns 0-63 are remapped to Segment Columns -// 127-0. -// -//***************************************************************************** -#define RIT_INIT_REMAP 0x52 // app note says 0x51 -#define RIT_INIT_OFFSET 0x00 -static const unsigned char g_pucRIT128x96x4VerticalInc[] = { 0xA0, 0x56 }; -static const unsigned char g_pucRIT128x96x4HorizontalInc[] = { 0xA0, 0x52 }; - -//***************************************************************************** -// -// A 5x7 font (in a 6x8 cell, where the sixth column is omitted from this -// table) for displaying text on the OLED display. The data is organized as -// bytes from the left column to the right column, with each byte containing -// the top row in the LSB and the bottom row in the MSB. -// -// Note: This is the same font data that is used in the EK-LM3S811 -// osram96x16x1 driver. The single bit-per-pixel is expaned in the StringDraw -// function to the appropriate four bit-per-pixel gray scale format. -// -//***************************************************************************** -static const unsigned char g_pucFont[96][5] = -{ - { 0x00, 0x00, 0x00, 0x00, 0x00 }, // " " - { 0x00, 0x00, 0x4f, 0x00, 0x00 }, // ! - { 0x00, 0x07, 0x00, 0x07, 0x00 }, // " - { 0x14, 0x7f, 0x14, 0x7f, 0x14 }, // # - { 0x24, 0x2a, 0x7f, 0x2a, 0x12 }, // $ - { 0x23, 0x13, 0x08, 0x64, 0x62 }, // % - { 0x36, 0x49, 0x55, 0x22, 0x50 }, // & - { 0x00, 0x05, 0x03, 0x00, 0x00 }, // ' - { 0x00, 0x1c, 0x22, 0x41, 0x00 }, // ( - { 0x00, 0x41, 0x22, 0x1c, 0x00 }, // ) - { 0x14, 0x08, 0x3e, 0x08, 0x14 }, // * - { 0x08, 0x08, 0x3e, 0x08, 0x08 }, // + - { 0x00, 0x50, 0x30, 0x00, 0x00 }, // , - { 0x08, 0x08, 0x08, 0x08, 0x08 }, // - - { 0x00, 0x60, 0x60, 0x00, 0x00 }, // . - { 0x20, 0x10, 0x08, 0x04, 0x02 }, // / - { 0x3e, 0x51, 0x49, 0x45, 0x3e }, // 0 - { 0x00, 0x42, 0x7f, 0x40, 0x00 }, // 1 - { 0x42, 0x61, 0x51, 0x49, 0x46 }, // 2 - { 0x21, 0x41, 0x45, 0x4b, 0x31 }, // 3 - { 0x18, 0x14, 0x12, 0x7f, 0x10 }, // 4 - { 0x27, 0x45, 0x45, 0x45, 0x39 }, // 5 - { 0x3c, 0x4a, 0x49, 0x49, 0x30 }, // 6 - { 0x01, 0x71, 0x09, 0x05, 0x03 }, // 7 - { 0x36, 0x49, 0x49, 0x49, 0x36 }, // 8 - { 0x06, 0x49, 0x49, 0x29, 0x1e }, // 9 - { 0x00, 0x36, 0x36, 0x00, 0x00 }, // : - { 0x00, 0x56, 0x36, 0x00, 0x00 }, // ; - { 0x08, 0x14, 0x22, 0x41, 0x00 }, // < - { 0x14, 0x14, 0x14, 0x14, 0x14 }, // = - { 0x00, 0x41, 0x22, 0x14, 0x08 }, // > - { 0x02, 0x01, 0x51, 0x09, 0x06 }, // ? - { 0x32, 0x49, 0x79, 0x41, 0x3e }, // @ - { 0x7e, 0x11, 0x11, 0x11, 0x7e }, // A - { 0x7f, 0x49, 0x49, 0x49, 0x36 }, // B - { 0x3e, 0x41, 0x41, 0x41, 0x22 }, // C - { 0x7f, 0x41, 0x41, 0x22, 0x1c }, // D - { 0x7f, 0x49, 0x49, 0x49, 0x41 }, // E - { 0x7f, 0x09, 0x09, 0x09, 0x01 }, // F - { 0x3e, 0x41, 0x49, 0x49, 0x7a }, // G - { 0x7f, 0x08, 0x08, 0x08, 0x7f }, // H - { 0x00, 0x41, 0x7f, 0x41, 0x00 }, // I - { 0x20, 0x40, 0x41, 0x3f, 0x01 }, // J - { 0x7f, 0x08, 0x14, 0x22, 0x41 }, // K - { 0x7f, 0x40, 0x40, 0x40, 0x40 }, // L - { 0x7f, 0x02, 0x0c, 0x02, 0x7f }, // M - { 0x7f, 0x04, 0x08, 0x10, 0x7f }, // N - { 0x3e, 0x41, 0x41, 0x41, 0x3e }, // O - { 0x7f, 0x09, 0x09, 0x09, 0x06 }, // P - { 0x3e, 0x41, 0x51, 0x21, 0x5e }, // Q - { 0x7f, 0x09, 0x19, 0x29, 0x46 }, // R - { 0x46, 0x49, 0x49, 0x49, 0x31 }, // S - { 0x01, 0x01, 0x7f, 0x01, 0x01 }, // T - { 0x3f, 0x40, 0x40, 0x40, 0x3f }, // U - { 0x1f, 0x20, 0x40, 0x20, 0x1f }, // V - { 0x3f, 0x40, 0x38, 0x40, 0x3f }, // W - { 0x63, 0x14, 0x08, 0x14, 0x63 }, // X - { 0x07, 0x08, 0x70, 0x08, 0x07 }, // Y - { 0x61, 0x51, 0x49, 0x45, 0x43 }, // Z - { 0x00, 0x7f, 0x41, 0x41, 0x00 }, // [ - { 0x02, 0x04, 0x08, 0x10, 0x20 }, // "\" - { 0x00, 0x41, 0x41, 0x7f, 0x00 }, // ] - { 0x04, 0x02, 0x01, 0x02, 0x04 }, // ^ - { 0x40, 0x40, 0x40, 0x40, 0x40 }, // _ - { 0x00, 0x01, 0x02, 0x04, 0x00 }, // ` - { 0x20, 0x54, 0x54, 0x54, 0x78 }, // a - { 0x7f, 0x48, 0x44, 0x44, 0x38 }, // b - { 0x38, 0x44, 0x44, 0x44, 0x20 }, // c - { 0x38, 0x44, 0x44, 0x48, 0x7f }, // d - { 0x38, 0x54, 0x54, 0x54, 0x18 }, // e - { 0x08, 0x7e, 0x09, 0x01, 0x02 }, // f - { 0x0c, 0x52, 0x52, 0x52, 0x3e }, // g - { 0x7f, 0x08, 0x04, 0x04, 0x78 }, // h - { 0x00, 0x44, 0x7d, 0x40, 0x00 }, // i - { 0x20, 0x40, 0x44, 0x3d, 0x00 }, // j - { 0x7f, 0x10, 0x28, 0x44, 0x00 }, // k - { 0x00, 0x41, 0x7f, 0x40, 0x00 }, // l - { 0x7c, 0x04, 0x18, 0x04, 0x78 }, // m - { 0x7c, 0x08, 0x04, 0x04, 0x78 }, // n - { 0x38, 0x44, 0x44, 0x44, 0x38 }, // o - { 0x7c, 0x14, 0x14, 0x14, 0x08 }, // p - { 0x08, 0x14, 0x14, 0x18, 0x7c }, // q - { 0x7c, 0x08, 0x04, 0x04, 0x08 }, // r - { 0x48, 0x54, 0x54, 0x54, 0x20 }, // s - { 0x04, 0x3f, 0x44, 0x40, 0x20 }, // t - { 0x3c, 0x40, 0x40, 0x20, 0x7c }, // u - { 0x1c, 0x20, 0x40, 0x20, 0x1c }, // v - { 0x3c, 0x40, 0x30, 0x40, 0x3c }, // w - { 0x44, 0x28, 0x10, 0x28, 0x44 }, // x - { 0x0c, 0x50, 0x50, 0x50, 0x3c }, // y - { 0x44, 0x64, 0x54, 0x4c, 0x44 }, // z - { 0x00, 0x08, 0x36, 0x41, 0x00 }, // { - { 0x00, 0x00, 0x7f, 0x00, 0x00 }, // | - { 0x00, 0x41, 0x36, 0x08, 0x00 }, // } - { 0x02, 0x01, 0x02, 0x04, 0x02 }, // ~ - { 0x02, 0x01, 0x02, 0x04, 0x02 }, // ~ -}; - -//***************************************************************************** -// -// The sequence of commands used to initialize the SSD1329 controller. Each -// command is described as follows: there is a byte specifying the number of -// bytes in the command sequence, followed by that many bytes of command data. -// Note: This initialization sequence is derived from RIT App Note for -// the P14201. Values used are from the RIT app note, except where noted. -// -//***************************************************************************** -static const unsigned char g_pucRIT128x96x4Init[] = -{ - // - // Unlock commands - // - 3, 0xFD, 0x12, 0xe3, - - // - // Display off - // - 2, 0xAE, 0xe3, - - // - // Icon off - // - 3, 0x94, 0, 0xe3, - - // - // Multiplex ratio - // - 3, 0xA8, 95, 0xe3, - - // - // Contrast - // - 3, 0x81, 0xb7, 0xe3, - - // - // Pre-charge current - // - 3, 0x82, 0x3f, 0xe3, - - // - // Display Re-map - // - 3, 0xA0, RIT_INIT_REMAP, 0xe3, - - // - // Display Start Line - // - 3, 0xA1, 0, 0xe3, - - // - // Display Offset - // - 3, 0xA2, RIT_INIT_OFFSET, 0xe3, - - // - // Display Mode Normal - // - 2, 0xA4, 0xe3, - - // - // Phase Length - // - 3, 0xB1, 0x11, 0xe3, - - // - // Frame frequency - // - 3, 0xB2, 0x23, 0xe3, - - // - // Front Clock Divider - // - 3, 0xB3, 0xe2, 0xe3, - - // - // Set gray scale table. App note uses default command: - // 2, 0xB7, 0xe3 - // This gray scale attempts some gamma correction to reduce the - // the brightness of the low levels. - // - 17, 0xB8, 1, 2, 3, 4, 5, 6, 8, 10, 12, 14, 16, 19, 22, 26, 30, 0xe3, - - // - // Second pre-charge period. App note uses value 0x04. - // - 3, 0xBB, 0x01, 0xe3, - - // - // Pre-charge voltage - // - 3, 0xBC, 0x3f, 0xe3, - - // - // Display ON - // - 2, 0xAF, 0xe3, -}; - -//***************************************************************************** -// -//! \internal -//! -//! Write a sequence of command bytes to the SSD1329 controller. -//! -//! The data is written in a polled fashion; this function will not return -//! until the entire byte sequence has been written to the controller. -//! -//! \return None. -// -//***************************************************************************** -static void -RITWriteCommand(const unsigned char *pucBuffer, unsigned long ulCount) -{ - unsigned long ulTemp; - - // - // Return if SSI port is not enabled for RIT display. - // - if(!g_bSSIEnabled) - { - return; - } - - // - // Clear the command/control bit to enable command mode. - // - GPIOPinWrite(ulGPIOBase, ulOLEDDC_PIN, 0); - - // - // Loop while there are more bytes left to be transferred. - // - while(ulCount != 0) - { - // - // Write the next byte to the controller. - // - SSIDataPut(SSI0_BASE, *pucBuffer++); - - // - // Dummy read to drain the fifo and time the GPIO signal. - // - SSIDataGet(SSI0_BASE, &ulTemp); - - // - // Decrement the BYTE counter. - // - ulCount--; - } -} - -//***************************************************************************** -// -//! \internal -//! -//! Write a sequence of data bytes to the SSD1329 controller. -//! -//! The data is written in a polled fashion; this function will not return -//! until the entire byte sequence has been written to the controller. -//! -//! \return None. -// -//***************************************************************************** -static void -RITWriteData(const unsigned char *pucBuffer, unsigned long ulCount) -{ - unsigned long ulTemp; - - // - // Return if SSI port is not enabled for RIT display. - // - if(!g_bSSIEnabled) - { - return; - } - - // - // Set the command/control bit to enable data mode. - // - GPIOPinWrite(ulGPIOBase, ulOLEDDC_PIN, ulOLEDDC_PIN); - - // - // Loop while there are more bytes left to be transferred. - // - while(ulCount != 0) - { - // - // Write the next byte to the controller. - // - SSIDataPut(SSI0_BASE, *pucBuffer++); - - // - // Dummy read to drain the fifo and time the GPIO signal. - // - SSIDataGet(SSI0_BASE, &ulTemp); - - // - // Decrement the BYTE counter. - // - ulCount--; - } -} - -//***************************************************************************** -// -//! Clears the OLED display. -//! -//! This function will clear the display RAM. All pixels in the display will -//! be turned off. -//! -//! This function is contained in rit128x96x4.c, with -//! rit128x96x4.h containing the API definition for use by -//! applications. -//! -//! \return None. -// -//***************************************************************************** -void -RIT128x96x4Clear(void) -{ - static const unsigned char pucCommand1[] = { 0x15, 0, 63 }; - static const unsigned char pucCommand2[] = { 0x75, 0, 127 }; - unsigned long ulRow, ulColumn; - - // - // Clear out the buffer used for sending bytes to the display. - *(unsigned long *)&g_pucBuffer[0] = 0; - *(unsigned long *)&g_pucBuffer[4] = 0; - - // - // Set the window to fill the entire display. - // - RITWriteCommand(pucCommand1, sizeof(pucCommand1)); - RITWriteCommand(pucCommand2, sizeof(pucCommand2)); - RITWriteCommand(g_pucRIT128x96x4HorizontalInc, - sizeof(g_pucRIT128x96x4HorizontalInc)); - - // - // Loop through the rows - // - for(ulRow = 0; ulRow < 96; ulRow++) - { - // - // Loop through the columns. Each byte is two pixels, - // and the buffer hold 8 bytes, so 16 pixels are cleared - // at a time. - // - for(ulColumn = 0; ulColumn < 128; ulColumn += 8 * 2) - { - // - // Write 8 clearing bytes to the display, which will - // clear 16 pixels across. - // - RITWriteData(g_pucBuffer, sizeof(g_pucBuffer)); - } - } -} - -//***************************************************************************** -// -//! Displays a string on the OLED display. -//! -//! \param pcStr is a pointer to the string to display. -//! \param ulX is the horizontal position to display the string, specified in -//! columns from the left edge of the display. -//! \param ulY is the vertical position to display the string, specified in -//! rows from the top edge of the display. -//! \param ucLevel is the 4-bit grey scale value to be used for displayed text. -//! -//! This function will draw a string on the display. Only the ASCII characters -//! between 32 (space) and 126 (tilde) are supported; other characters will -//! result in random data being draw on the display (based on whatever appears -//! before/after the font in memory). The font is mono-spaced, so characters -//! such as "i" and "l" have more white space around them than characters such -//! as "m" or "w". -//! -//! If the drawing of the string reaches the right edge of the display, no more -//! characters will be drawn. Therefore, special care is not required to avoid -//! supplying a string that is "too long" to display. -//! -//! This function is contained in rit128x96x4.c, with -//! rit128x96x4.h containing the API definition for use by -//! applications. -//! -//! \note Because the OLED display packs 2 pixels of data in a single byte, the -//! parameter \e ulX must be an even column number (e.g. 0, 2, 4, etc). -//! -//! \return None. -// -//***************************************************************************** -void -RIT128x96x4StringDraw(const char *pcStr, unsigned long ulX, - unsigned long ulY, unsigned char ucLevel) -{ - unsigned long ulIdx1, ulIdx2; - unsigned char ucTemp; - - // - // Check the arguments. - // - ASSERT(ulX < 128); - ASSERT((ulX & 1) == 0); - ASSERT(ulY < 96); - ASSERT(ucLevel < 16); - - // - // Setup a window starting at the specified column and row, ending - // at the right edge of the display and 8 rows down (single character row). - // - g_pucBuffer[0] = 0x15; - g_pucBuffer[1] = ulX / 2; - g_pucBuffer[2] = 63; - RITWriteCommand(g_pucBuffer, 3); - g_pucBuffer[0] = 0x75; - g_pucBuffer[1] = ulY; - g_pucBuffer[2] = ulY + 7; - RITWriteCommand(g_pucBuffer, 3); - RITWriteCommand(g_pucRIT128x96x4VerticalInc, - sizeof(g_pucRIT128x96x4VerticalInc)); - - // - // Loop while there are more characters in the string. - // - while(*pcStr != 0) - { - // - // Get a working copy of the current character and convert to an - // index into the character bit-map array. - // - ucTemp = *pcStr; - ucTemp &= 0x7F; - if(ucTemp < ' ') - { - ucTemp = ' '; - } - else - { - ucTemp -= ' '; - } - - // - // Build and display the character buffer. - // - for(ulIdx1 = 0; ulIdx1 < 3; ulIdx1++) - { - // - // Convert two columns of 1-bit font data into a single data - // byte column of 4-bit font data. - // - for(ulIdx2 = 0; ulIdx2 < 8; ulIdx2++) - { - g_pucBuffer[ulIdx2] = 0; - if(g_pucFont[ucTemp][ulIdx1*2] & (1 << ulIdx2)) - { - g_pucBuffer[ulIdx2] = ((ucLevel << 4) & 0xf0); - } - if((ulIdx1 < 2) && - (g_pucFont[ucTemp][ulIdx1*2+1] & (1 << ulIdx2))) - { - g_pucBuffer[ulIdx2] |= ((ucLevel << 0) & 0x0f); - } - } - - // - // If there is room, dump the single data byte column to the - // display. Otherwise, bail out. - // - if(ulX < 126) - { - RITWriteData(g_pucBuffer, 8); - ulX += 2; - } - else - { - return; - } - } - - // - // Advance to the next character. - // - pcStr++; - } -} - -//***************************************************************************** -// -//! Displays an image on the OLED display. -//! -//! \param pucImage is a pointer to the image data. -//! \param ulX is the horizontal position to display this image, specified in -//! columns from the left edge of the display. -//! \param ulY is the vertical position to display this image, specified in -//! rows from the top of the display. -//! \param ulWidth is the width of the image, specified in columns. -//! \param ulHeight is the height of the image, specified in rows. -//! -//! This function will display a bitmap graphic on the display. Because of the -//! format of the display RAM, the starting column (\e ulX) and the number of -//! columns (\e ulWidth) must be an integer multiple of two. -//! -//! The image data is organized with the first row of image data appearing left -//! to right, followed immediately by the second row of image data. Each byte -//! contains the data for two columns in the current row, with the leftmost -//! column being contained in bits 7:4 and the rightmost column being contained -//! in bits 3:0. -//! -//! For example, an image six columns wide and seven scan lines tall would -//! be arranged as follows (showing how the twenty one bytes of the image would -//! appear on the display): -//! -//! \verbatim -//! +-------------------+-------------------+-------------------+ -//! | Byte 0 | Byte 1 | Byte 2 | -//! +---------+---------+---------+---------+---------+---------+ -//! | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | -//! +---------+---------+---------+---------+---------+---------+ -//! | Byte 3 | Byte 4 | Byte 5 | -//! +---------+---------+---------+---------+---------+---------+ -//! | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | -//! +---------+---------+---------+---------+---------+---------+ -//! | Byte 6 | Byte 7 | Byte 8 | -//! +---------+---------+---------+---------+---------+---------+ -//! | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | -//! +---------+---------+---------+---------+---------+---------+ -//! | Byte 9 | Byte 10 | Byte 11 | -//! +---------+---------+---------+---------+---------+---------+ -//! | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | -//! +---------+---------+---------+---------+---------+---------+ -//! | Byte 12 | Byte 13 | Byte 14 | -//! +---------+---------+---------+---------+---------+---------+ -//! | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | -//! +---------+---------+---------+---------+---------+---------+ -//! | Byte 15 | Byte 16 | Byte 17 | -//! +---------+---------+---------+---------+---------+---------+ -//! | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | -//! +---------+---------+---------+---------+---------+---------+ -//! | Byte 18 | Byte 19 | Byte 20 | -//! +---------+---------+---------+---------+---------+---------+ -//! | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | -//! +---------+---------+---------+---------+---------+---------+ -//! \endverbatim -//! -//! This function is contained in rit128x96x4.c, with -//! rit128x96x4.h containing the API definition for use by -//! applications. -//! -//! \return None. -// -//***************************************************************************** -void -RIT128x96x4ImageDraw(const unsigned char *pucImage, unsigned long ulX, - unsigned long ulY, unsigned long ulWidth, - unsigned long ulHeight) -{ - // - // Check the arguments. - // - ASSERT(ulX < 128); - ASSERT((ulX & 1) == 0); - ASSERT(ulY < 96); - ASSERT((ulX + ulWidth) <= 128); - ASSERT((ulY + ulHeight) <= 96); - ASSERT((ulWidth & 1) == 0); - - // - // Setup a window starting at the specified column and row, and ending - // at the column + width and row+height. - // - g_pucBuffer[0] = 0x15; - g_pucBuffer[1] = ulX / 2; - g_pucBuffer[2] = (ulX + ulWidth - 2) / 2; - RITWriteCommand(g_pucBuffer, 3); - g_pucBuffer[0] = 0x75; - g_pucBuffer[1] = ulY; - g_pucBuffer[2] = ulY + ulHeight - 1; - RITWriteCommand(g_pucBuffer, 3); - RITWriteCommand(g_pucRIT128x96x4HorizontalInc, - sizeof(g_pucRIT128x96x4HorizontalInc)); - - // - // Loop while there are more rows to display. - // - while(ulHeight--) - { - // - // Write this row of image data. - // - RITWriteData(pucImage, (ulWidth / 2)); - - // - // Advance to the next row of the image. - // - pucImage += (ulWidth / 2); - } -} - -//***************************************************************************** -// -//! Enable the SSI component of the OLED display driver. -//! -//! \param ulFrequency specifies the SSI Clock Frequency to be used. -//! -//! This function initializes the SSI interface to the OLED display. -//! -//! This function is contained in rit128x96x4.c, with -//! rit128x96x4.h containing the API definition for use by -//! applications. -//! -//! \return None. -// -//***************************************************************************** -void -RIT128x96x4Enable(unsigned long ulFrequency) -{ - unsigned long ulTemp; - - // - // Disable the SSI port. - // - SSIDisable(SSI0_BASE); - - // - // Configure the SSI0 port for master mode. - // - SSIConfig(SSI0_BASE, SSI_FRF_MOTO_MODE_2, SSI_MODE_MASTER, ulFrequency, 8); - - // - // (Re)Enable SSI control of the FSS pin. - // - GPIOPinTypeSSI(GPIO_PORTA_BASE, GPIO_PIN_3); - GPIOPadConfigSet(GPIO_PORTA_BASE, GPIO_PIN_3, GPIO_STRENGTH_8MA, - GPIO_PIN_TYPE_STD_WPU); - - // - // Enable the SSI port. - // - SSIEnable(SSI0_BASE); - - // - // Drain the receive fifo. - // - while(SSIDataNonBlockingGet(SSI0_BASE, &ulTemp) != 0) - { - } - - // - // Indicate that the RIT driver can use the SSI Port. - // - g_bSSIEnabled = true; -} - -//***************************************************************************** -// -//! Enable the SSI component of the OLED display driver. -//! -//! This function initializes the SSI interface to the OLED display. -//! -//! This function is contained in rit128x96x4.c, with -//! rit128x96x4.h containing the API definition for use by -//! applications. -//! -//! \return None. -// -//***************************************************************************** -void -RIT128x96x4Disable(void) -{ - unsigned long ulTemp; - - // - // Indicate that the RIT driver can no longer use the SSI Port. - // - g_bSSIEnabled = false; - - // - // Drain the receive fifo. - // - while(SSIDataNonBlockingGet(SSI0_BASE, &ulTemp) != 0) - { - } - - // - // Disable the SSI port. - // - SSIDisable(SSI0_BASE); - - // - // Disable SSI control of the FSS pin. - // - GPIOPinTypeGPIOOutput(GPIO_PORTA_BASE, GPIO_PIN_3); - GPIOPadConfigSet(GPIO_PORTA_BASE, GPIO_PIN_3, GPIO_STRENGTH_8MA, - GPIO_PIN_TYPE_STD_WPU); - GPIOPinWrite(GPIO_PORTA_BASE, GPIO_PIN_3, GPIO_PIN_3); -} - -//***************************************************************************** -// -//! Initialize the OLED display. -//! -//! \param ulFrequency specifies the SSI Clock Frequency to be used. -//! -//! This function initializes the SSI interface to the OLED display and -//! configures the SSD1329 controller on the panel. -//! -//! This function is contained in rit128x96x4.c, with -//! rit128x96x4.h containing the API definition for use by -//! applications. -//! -//! \return None. -// -//***************************************************************************** -void -RIT128x96x4Init(unsigned long ulFrequency) -{ - unsigned long ulIdx; - - - /* Determine which board is being used. */ - if( SysCtlPeripheralPresent( SYSCTL_PERIPH_ETH ) ) - { - /* Ethernet is present, we must be using the LM3S8962 EK. */ - ulGPIOId = LM3S8962_SYSCTL_PERIPH_GPIO_OLEDDC; - ulGPIOBase = LM3S8962_GPIO_OLEDDC_BASE; - ulOLEDDC_PIN = GPIO_PIN_6; - ulOLEDEN_PIN = GPIO_PIN_7; - } - else - { - /* Ethernet is not present, we must be using the LM3S1968 EK. */ - ulGPIOId = LM3S1968_SYSCTL_PERIPH_GPIO_OLEDDC; - ulGPIOBase = LM3S1968_GPIO_OLEDDC_BASE; - ulOLEDDC_PIN = GPIO_PIN_2; - ulOLEDEN_PIN = GPIO_PIN_3; - } - - // - // Enable the SSI0 and GPIO port blocks as they are needed by this driver. - // - SysCtlPeripheralEnable(SYSCTL_PERIPH_SSI0); - SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA); - SysCtlPeripheralEnable(ulGPIOId); - - // - // Configure the SSI0CLK and SSIOTX pins for SSI operation. - // - GPIOPinTypeSSI(GPIO_PORTA_BASE, GPIO_PIN_2 | GPIO_PIN_3 | GPIO_PIN_5); - GPIOPadConfigSet(GPIO_PORTA_BASE, GPIO_PIN_2 | GPIO_PIN_3 | GPIO_PIN_5, - GPIO_STRENGTH_8MA, GPIO_PIN_TYPE_STD_WPU); - - // - // Configure the GPIO port pin used as a D/Cn signal for OLED device, - // and the port pin used to enable power to the OLED panel. - // - GPIOPinTypeGPIOOutput(ulGPIOBase, ulOLEDDC_PIN | ulOLEDEN_PIN); - GPIOPadConfigSet(ulGPIOBase, ulOLEDDC_PIN | ulOLEDEN_PIN, - GPIO_STRENGTH_8MA, GPIO_PIN_TYPE_STD); - GPIOPinWrite(ulGPIOBase, ulOLEDDC_PIN | ulOLEDEN_PIN, - ulOLEDDC_PIN | ulOLEDEN_PIN); - - // - // Configure and enable the SSI0 port for master mode. - // - RIT128x96x4Enable(ulFrequency); - - // - // Clear the frame buffer. - // - RIT128x96x4Clear(); - - // - // Initialize the SSD1329 controller. Loop through the initialization - // sequence array, sending each command "string" to the controller. - // - for(ulIdx = 0; ulIdx < sizeof(g_pucRIT128x96x4Init); - ulIdx += g_pucRIT128x96x4Init[ulIdx] + 1) - { - // - // Send this command. - // - RITWriteCommand(g_pucRIT128x96x4Init + ulIdx + 1, - g_pucRIT128x96x4Init[ulIdx] - 1); - } -} - -//***************************************************************************** -// -//! Turns on the OLED display. -//! -//! This function will turn on the OLED display, causing it to display the -//! contents of its internal frame buffer. -//! -//! This function is contained in rit128x96x4.c, with -//! rit128x96x4.h containing the API definition for use by -//! applications. -//! -//! \return None. -// -//***************************************************************************** -void -RIT128x96x4DisplayOn(void) -{ - unsigned long ulIdx; - - // - // Initialize the SSD1329 controller. Loop through the initialization - // sequence array, sending each command "string" to the controller. - // - for(ulIdx = 0; ulIdx < sizeof(g_pucRIT128x96x4Init); - ulIdx += g_pucRIT128x96x4Init[ulIdx] + 1) - { - // - // Send this command. - // - RITWriteCommand(g_pucRIT128x96x4Init + ulIdx + 1, - g_pucRIT128x96x4Init[ulIdx] - 1); - } -} - -//***************************************************************************** -// -//! Turns off the OLED display. -//! -//! This function will turn off the OLED display. This will stop the scanning -//! of the panel and turn off the on-chip DC-DC converter, preventing damage to -//! the panel due to burn-in (it has similar characters to a CRT in this -//! respect). -//! -//! This function is contained in rit128x96x4.c, with -//! rit128x96x4.h containing the API definition for use by -//! applications. -//! -//! \return None. -// -//***************************************************************************** -void -RIT128x96x4DisplayOff(void) -{ - static const unsigned char pucCommand1[] = - { - 0xAE, 0xe3 - }; - - // - // Put the display to sleep. - // - RITWriteCommand(pucCommand1, sizeof(pucCommand1)); -} - -//***************************************************************************** -// -// Close the Doxygen group. -//! @} -// -//***************************************************************************** diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/thumb_crt0.s b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/thumb_crt0.s deleted file mode 100644 index 4c4b71dc1..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/thumb_crt0.s +++ /dev/null @@ -1,227 +0,0 @@ -/***************************************************************************** - * Copyright (c) 2009 Rowley Associates Limited. * - * * - * This file may be distributed under the terms of the License Agreement * - * provided with this software. * - * * - * THIS FILE IS PROVIDED AS IS WITH NO WARRANTY OF ANY KIND, INCLUDING THE * - * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. * - *****************************************************************************/ - -/***************************************************************************** - * Preprocessor Definitions - * ------------------------ - * APP_ENTRY_POINT - * - * Defines the application entry point function, if undefined this setting - * defaults to "main". - * - * USE_PROCESS_STACK - * - * If defined, thread mode will be configured to use the process stack if - * the size of the process stack is greater than zero bytes in length. - * - * INITIALIZE_STACK - * - * If defined, the contents of the stack will be initialized to a the - * value 0xCC. - * - * FULL_LIBRARY - * - * If defined then - * - argc, argv are setup by the debug_getargs. - * - the exit symbol is defined and executes on return from main. - * - the exit symbol calls destructors, atexit functions and then debug_exit. - * - * If not defined then - * - argc and argv are zero. - * - no exit symbol, code loops on return from main. - *****************************************************************************/ - -#ifndef APP_ENTRY_POINT -#define APP_ENTRY_POINT main -#endif - -#ifndef ARGSSPACE -#define ARGSSPACE 128 -#endif - - .global _start - .syntax unified - .extern APP_ENTRY_POINT -#ifdef FULL_LIBRARY - .global exit -#endif - - .section .init, "ax" - .code 16 - .align 2 - .thumb_func - -_start: -#ifdef __RAM_BUILD - ldr r1, =__stack_end__ - mov sp, r1 -#endif -#ifdef INITIALIZE_STACK - mov r2, #0xCC - ldr r0, =__stack_start__ -#ifndef __RAM_BUILD - mov r1, sp -#endif - bl memory_set -#endif - -#ifdef USE_PROCESS_STACK - /* Set up process stack if size > 0 */ - ldr r1, =__stack_process_end__ - ldr r0, =__stack_process_start__ - subs r2, r1, r0 - beq 1f - msr psp, r1 - mov r2, #2 - msr control, r2 -#ifdef INITIALIZE_STACK - mov r2, #0xCC - bl memory_set -#endif -1: -#endif - /* Copy initialised memory sections into RAM (if necessary). */ - ldr r0, =__data_load_start__ - ldr r1, =__data_start__ - ldr r2, =__data_end__ - bl memory_copy - ldr r0, =__text_load_start__ - ldr r1, =__text_start__ - ldr r2, =__text_end__ - bl memory_copy - ldr r0, =__fast_load_start__ - ldr r1, =__fast_start__ - ldr r2, =__fast_end__ - bl memory_copy - ldr r0, =__ctors_load_start__ - ldr r1, =__ctors_start__ - ldr r2, =__ctors_end__ - bl memory_copy - ldr r0, =__dtors_load_start__ - ldr r1, =__dtors_start__ - ldr r2, =__dtors_end__ - bl memory_copy - ldr r0, =__rodata_load_start__ - ldr r1, =__rodata_start__ - ldr r2, =__rodata_end__ - bl memory_copy - - /* Zero the bss. */ - ldr r0, =__bss_start__ - ldr r1, =__bss_end__ - mov r2, #0 - bl memory_set - - /* Initialise the heap */ - ldr r0, = __heap_start__ - ldr r1, = __heap_end__ - sub r1, r1, r0 - mov r2, #0 - str r2, [r0] - add r0, r0, #4 - str r1, [r0] - - /* Call constructors */ - ldr r0, =__ctors_start__ - ldr r1, =__ctors_end__ -ctor_loop: - cmp r0, r1 - beq ctor_end - ldr r2, [r0] - add r0, #4 - push {r0-r1} - blx r2 - pop {r0-r1} - b ctor_loop -ctor_end: - - /* Setup initial call frame */ - mov r0, #0 - mov lr, r0 - mov r12, sp - -start: - /* Jump to application entry point */ -#ifdef FULL_LIBRARY - mov r0, #ARGSSPACE - ldr r1, =args - ldr r2, =debug_getargs - blx r2 - ldr r1, =args -#else - mov r0, #0 - mov r1, #0 -#endif - ldr r2, =APP_ENTRY_POINT - blx r2 - -#ifdef FULL_LIBRARY - .thumb_func -exit: - mov r5, r0 // save the exit parameter/return result - - /* Call destructors */ - ldr r0, =__dtors_start__ - ldr r1, =__dtors_end__ -dtor_loop: - cmp r0, r1 - beq dtor_end - ldr r2, [r0] - add r0, #4 - push {r0-r1} - blx r2 - pop {r0-r1} - b dtor_loop -dtor_end: - - /* Call atexit functions */ - ldr r2, =_execute_at_exit_fns - blx r2 - - /* Call debug_exit with return result/exit parameter */ - mov r0, r5 - ldr r2, =debug_exit - blx r2 -#endif - - /* Returned from application entry point, loop forever. */ -exit_loop: - b exit_loop - -memory_copy: - cmp r0, r1 - beq 2f - subs r2, r2, r1 - beq 2f -1: - ldrb r3, [r0] - add r0, r0, #1 - strb r3, [r1] - add r1, r1, #1 - subs r2, r2, #1 - bne 1b -2: - bx lr - -memory_set: - cmp r0, r1 - beq 1f - strb r2, [r0] - add r0, r0, #1 - b memory_set -1: - bx lr - -#ifdef FULL_LIBRARY - .bss -args: - .space ARGSSPACE -#endif - diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/timertest.c b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/timertest.c deleted file mode 100644 index 2c8011b5c..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/timertest.c +++ /dev/null @@ -1,138 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* High speed timer test as described in main.c. */ - -/* Scheduler includes. */ -#include "FreeRTOS.h" - -/* Library includes. */ -#include "hw_ints.h" -#include "hw_memmap.h" -#include "hw_types.h" -#include "interrupt.h" -#include "sysctl.h" -#include "lmi_timer.h" - -/* The set frequency of the interrupt. Deviations from this are measured as -the jitter. */ -#define timerINTERRUPT_FREQUENCY ( 20000UL ) - -/* The expected time between each of the timer interrupts - if the jitter was -zero. */ -#define timerEXPECTED_DIFFERENCE_VALUE ( configCPU_CLOCK_HZ / timerINTERRUPT_FREQUENCY ) - -/* The highest available interrupt priority. */ -#define timerHIGHEST_PRIORITY ( 0 ) - -/* Misc defines. */ -#define timerMAX_32BIT_VALUE ( 0xffffffffUL ) -#define timerTIMER_1_COUNT_VALUE ( * ( ( unsigned long * ) ( TIMER1_BASE + 0x48 ) ) ) - -/*-----------------------------------------------------------*/ - -/* Interrupt handler in which the jitter is measured. */ -void Timer0IntHandler( void ); - -/* Stores the value of the maximum recorded jitter between interrupts. */ -volatile unsigned long ulMaxJitter = 0UL; - -/* Counts the total number of times that the high frequency timer has 'ticked'. -This value is used by the run time stats function to work out what percentage -of CPU time each task is taking. */ -volatile unsigned long ulHighFrequencyTimerTicks = 0UL; -/*-----------------------------------------------------------*/ - -void vSetupHighFrequencyTimer( void ) -{ -unsigned long ulFrequency; - - /* Timer zero is used to generate the interrupts, and timer 1 is used - to measure the jitter. */ - SysCtlPeripheralEnable( SYSCTL_PERIPH_TIMER0 ); - SysCtlPeripheralEnable( SYSCTL_PERIPH_TIMER1 ); - TimerConfigure( TIMER0_BASE, TIMER_CFG_32_BIT_PER ); - TimerConfigure( TIMER1_BASE, TIMER_CFG_32_BIT_PER ); - - /* Set the timer interrupt to be above the kernel - highest. */ - IntPrioritySet( INT_TIMER0A, timerHIGHEST_PRIORITY ); - - /* Just used to measure time. */ - TimerLoadSet(TIMER1_BASE, TIMER_A, timerMAX_32BIT_VALUE ); - - /* Ensure interrupts do not start until the scheduler is running. */ - portDISABLE_INTERRUPTS(); - - /* The rate at which the timer will interrupt. */ - ulFrequency = configCPU_CLOCK_HZ / timerINTERRUPT_FREQUENCY; - TimerLoadSet( TIMER0_BASE, TIMER_A, ulFrequency ); - IntEnable( INT_TIMER0A ); - TimerIntEnable( TIMER0_BASE, TIMER_TIMA_TIMEOUT ); - - /* Enable both timers. */ - TimerEnable( TIMER0_BASE, TIMER_A ); - TimerEnable( TIMER1_BASE, TIMER_A ); -} -/*-----------------------------------------------------------*/ - -void Timer0IntHandler( void ) -{ -unsigned long ulDifference; -volatile unsigned long ulCurrentCount; -static unsigned long ulMaxDifference = 0, ulLastCount = 0; - - /* We use the timer 1 counter value to measure the clock cycles between - the timer 0 interrupts. */ - ulCurrentCount = timerTIMER_1_COUNT_VALUE; - - TimerIntClear( TIMER0_BASE, TIMER_TIMA_TIMEOUT ); - - if( ulCurrentCount < ulLastCount ) - { - /* How many times has timer 1 counted since the last interrupt? */ - ulDifference = ulLastCount - ulCurrentCount; - - /* Is this the largest difference we have measured yet? */ - if( ulDifference > ulMaxDifference ) - { - ulMaxDifference = ulDifference; - ulMaxJitter = ulMaxDifference - timerEXPECTED_DIFFERENCE_VALUE; - } - } - - ulLastCount = ulCurrentCount; - - /* Keep a count of the total number of 20KHz ticks. This is used by the - run time stats functionality to calculate how much CPU time is used by - each task. */ - ulHighFrequencyTimerTicks++; -} - - - - - diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/Makefile.webserver b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/Makefile.webserver deleted file mode 100644 index f38c47a72..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/Makefile.webserver +++ /dev/null @@ -1 +0,0 @@ -APP_SOURCES += httpd.c http-strings.c httpd-fs.c httpd-cgi.c diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/clock-arch.h b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/clock-arch.h deleted file mode 100644 index cde657b62..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/clock-arch.h +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright (c) 2006, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: clock-arch.h,v 1.2 2006/06/12 08:00:31 adam Exp $ - */ - -#ifndef __CLOCK_ARCH_H__ -#define __CLOCK_ARCH_H__ - -#include "FreeRTOS.h" - -typedef unsigned long clock_time_t; -#define CLOCK_CONF_SECOND configTICK_RATE_HZ - -#endif /* __CLOCK_ARCH_H__ */ diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/emac.c b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/emac.c deleted file mode 100644 index aa4438ba6..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/emac.c +++ /dev/null @@ -1,274 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* Kernel includes. */ -#include "FreeRTOS.h" -#include "semphr.h" -#include "task.h" - -/* Demo includes. */ -#include "emac.h" - -/* uIP includes. */ -#include "uip.h" - -/* Hardware library includes. */ -#include "hw_types.h" -#include "hw_memmap.h" -#include "hw_ints.h" -#include "hw_ethernet.h" -#include "ethernet.h" -#include "interrupt.h" - -#define emacNUM_RX_BUFFERS 5 -#define emacFRAM_SIZE_BYTES 2 -#define macNEGOTIATE_DELAY 2000 -#define macWAIT_SEND_TIME ( 10 ) - -/* The task that handles the MAC peripheral. This is created at a high -priority and is effectively a deferred interrupt handler. The peripheral -handling is deferred to a task to prevent the entire FIFO having to be read -from within an ISR. */ -void vMACHandleTask( void *pvParameters ); - -/*-----------------------------------------------------------*/ - -/* The semaphore used to wake the uIP task when data arrives. */ -SemaphoreHandle_t xEMACSemaphore = NULL; - -/* The semaphore used to wake the interrupt handler task. The peripheral -is processed at the task level to prevent the need to read the entire FIFO from -within the ISR itself. */ -SemaphoreHandle_t xMACInterruptSemaphore = NULL; - -/* The buffer used by the uIP stack. In this case the pointer is used to -point to one of the Rx buffers. */ -unsigned char *uip_buf; - -/* Buffers into which Rx data is placed. */ -static unsigned char ucRxBuffers[ emacNUM_RX_BUFFERS ][ UIP_BUFSIZE + ( 4 * emacFRAM_SIZE_BYTES ) ] __attribute__((aligned(4))); - -/* The length of the data within each of the Rx buffers. */ -static unsigned long ulRxLength[ emacNUM_RX_BUFFERS ]; - -/* Used to keep a track of the number of bytes to transmit. */ -static unsigned long ulNextTxSpace; - -/*-----------------------------------------------------------*/ - -portBASE_TYPE vInitEMAC( void ) -{ -unsigned long ulTemp; -portBASE_TYPE xReturn; - - /* Ensure all interrupts are disabled. */ - EthernetIntDisable( ETH_BASE, ( ETH_INT_PHY | ETH_INT_MDIO | ETH_INT_RXER | ETH_INT_RXOF | ETH_INT_TX | ETH_INT_TXER | ETH_INT_RX)); - - /* Clear any interrupts that were already pending. */ - ulTemp = EthernetIntStatus( ETH_BASE, pdFALSE ); - EthernetIntClear( ETH_BASE, ulTemp ); - - /* Initialise the MAC and connect. */ - EthernetInit( ETH_BASE ); - EthernetConfigSet( ETH_BASE, ( ETH_CFG_TX_DPLXEN | ETH_CFG_TX_CRCEN | ETH_CFG_TX_PADEN ) ); - EthernetEnable( ETH_BASE ); - - /* Mark each Rx buffer as empty. */ - for( ulTemp = 0; ulTemp < emacNUM_RX_BUFFERS; ulTemp++ ) - { - ulRxLength[ ulTemp ] = 0; - } - - /* Create the queue and task used to defer the MAC processing to the - task level. */ - vSemaphoreCreateBinary( xMACInterruptSemaphore ); - xSemaphoreTake( xMACInterruptSemaphore, 0 ); - xReturn = xTaskCreate( vMACHandleTask, "MAC", configMINIMAL_STACK_SIZE, NULL, configMAX_PRIORITIES - 1, NULL ); - vTaskDelay( macNEGOTIATE_DELAY ); - - /* We are only interested in Rx interrupts. */ - IntPrioritySet( INT_ETH, configKERNEL_INTERRUPT_PRIORITY ); - IntEnable( INT_ETH ); - EthernetIntEnable(ETH_BASE, ETH_INT_RX); - - return xReturn; -} -/*-----------------------------------------------------------*/ - -unsigned int uiGetEMACRxData( unsigned char *ucBuffer ) -{ -static unsigned long ulNextRxBuffer = 0; -unsigned int iLen; - - iLen = ulRxLength[ ulNextRxBuffer ]; - - if( iLen != 0 ) - { - /* Leave room for the size at the start of the buffer. */ - uip_buf = &( ucRxBuffers[ ulNextRxBuffer ][ 2 ] ); - - ulRxLength[ ulNextRxBuffer ] = 0; - - ulNextRxBuffer++; - if( ulNextRxBuffer >= emacNUM_RX_BUFFERS ) - { - ulNextRxBuffer = 0; - } - } - - return iLen; -} -/*-----------------------------------------------------------*/ - -void vInitialiseSend( void ) -{ - /* Set the index to the first byte to send - skipping over the size - bytes. */ - ulNextTxSpace = 2; -} -/*-----------------------------------------------------------*/ - -void vIncrementTxLength( unsigned long ulLength ) -{ - ulNextTxSpace += ulLength; -} -/*-----------------------------------------------------------*/ - -void vSendBufferToMAC( void ) -{ -unsigned long *pulSource; -unsigned short * pus; -unsigned long ulNextWord; - - /* Locate the data to be send. */ - pus = ( unsigned short * ) uip_buf; - - /* Add in the size of the data. */ - pus--; - *pus = ulNextTxSpace; - - /* Wait for data to be sent if there is no space immediately. */ - while( !EthernetSpaceAvail( ETH_BASE ) ) - { - vTaskDelay( macWAIT_SEND_TIME ); - } - - pulSource = ( unsigned long * ) pus; - - for( ulNextWord = 0; ulNextWord < ulNextTxSpace; ulNextWord += sizeof( unsigned long ) ) - { - HWREG(ETH_BASE + MAC_O_DATA) = *pulSource; - pulSource++; - } - - /* Go. */ - HWREG( ETH_BASE + MAC_O_TR ) = MAC_TR_NEWTX; -} -/*-----------------------------------------------------------*/ - -void vEMAC_ISR( void ) -{ -portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE; -unsigned long ulTemp; - - /* Clear the interrupt. */ - ulTemp = EthernetIntStatus( ETH_BASE, pdFALSE ); - EthernetIntClear( ETH_BASE, ulTemp ); - - /* Was it an Rx interrupt? */ - if( ulTemp & ETH_INT_RX ) - { - xSemaphoreGiveFromISR( xMACInterruptSemaphore, &xHigherPriorityTaskWoken ); - EthernetIntDisable( ETH_BASE, ETH_INT_RX ); - } - - /* Switch to the uIP task. */ - portEND_SWITCHING_ISR( xHigherPriorityTaskWoken ); -} -/*-----------------------------------------------------------*/ - -void vMACHandleTask( void *pvParameters ) -{ -unsigned long i; -unsigned long ulLength, ulInt; -unsigned long *pulBuffer; -static unsigned long ulNextRxBuffer = 0; - - for( ;; ) - { - /* Wait for something to do. */ - xSemaphoreTake( xMACInterruptSemaphore, portMAX_DELAY ); - - while( ( ulInt = ( EthernetIntStatus( ETH_BASE, pdFALSE ) & ETH_INT_RX ) ) != 0 ) - { - ulLength = HWREG( ETH_BASE + MAC_O_DATA ); - - /* Leave room at the start of the buffer for the size. */ - pulBuffer = ( unsigned long * ) &( ucRxBuffers[ ulNextRxBuffer ][ 2 ] ); - *pulBuffer = ( ulLength >> 16 ); - - /* Get the size of the data. */ - pulBuffer = ( unsigned long * ) &( ucRxBuffers[ ulNextRxBuffer ][ 4 ] ); - ulLength &= 0xFFFF; - - if( ulLength > 4 ) - { - ulLength -= 4; - - if( ulLength >= UIP_BUFSIZE ) - { - /* The data won't fit in our buffer. Ensure we don't - try to write into the buffer. */ - ulLength = 0; - } - - /* Read out the data into our buffer. */ - for( i = 0; i < ulLength; i += sizeof( unsigned long ) ) - { - *pulBuffer = HWREG( ETH_BASE + MAC_O_DATA ); - pulBuffer++; - } - - /* Store the length of the data into the separate array. */ - ulRxLength[ ulNextRxBuffer ] = ulLength; - - /* Use the next buffer the next time through. */ - ulNextRxBuffer++; - if( ulNextRxBuffer >= emacNUM_RX_BUFFERS ) - { - ulNextRxBuffer = 0; - } - - /* Ensure the uIP task is not blocked as data has arrived. */ - xSemaphoreGive( xEMACSemaphore ); - } - } - - EthernetIntEnable( ETH_BASE, ETH_INT_RX ); - } -} - diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/emac.h b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/emac.h deleted file mode 100644 index a49b59828..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/emac.h +++ /dev/null @@ -1,322 +0,0 @@ -/*---------------------------------------------------------------------------- - * LPC2378 Ethernet Definitions - *---------------------------------------------------------------------------- - * Name: EMAC.H - * Purpose: Philips LPC2378 EMAC hardware definitions - *---------------------------------------------------------------------------- - * Copyright (c) 2006 KEIL - An ARM Company. All rights reserved. - *---------------------------------------------------------------------------*/ -#ifndef __EMAC_H -#define __EMAC_H - -/* MAC address definition. The MAC address must be unique on the network. */ -#define emacETHADDR0 0 -#define emacETHADDR1 0xbd -#define emacETHADDR2 0x33 -#define emacETHADDR3 0x02 -#define emacETHADDR4 0x64 -#define emacETHADDR5 0x24 - - -/* EMAC Memory Buffer configuration for 16K Ethernet RAM. */ -#define NUM_RX_FRAG 4 /* Num.of RX Fragments 4*1536= 6.0kB */ -#define NUM_TX_FRAG 2 /* Num.of TX Fragments 2*1536= 3.0kB */ -#define ETH_FRAG_SIZE 1536 /* Packet Fragment size 1536 Bytes */ - -#define ETH_MAX_FLEN 1536 /* Max. Ethernet Frame Size */ - -/* EMAC variables located in 16K Ethernet SRAM */ -#define RX_DESC_BASE 0x7FE00000 -#define RX_STAT_BASE (RX_DESC_BASE + NUM_RX_FRAG*8) -#define TX_DESC_BASE (RX_STAT_BASE + NUM_RX_FRAG*8) -#define TX_STAT_BASE (TX_DESC_BASE + NUM_TX_FRAG*8) -#define RX_BUF_BASE (TX_STAT_BASE + NUM_TX_FRAG*4) -#define TX_BUF_BASE (RX_BUF_BASE + NUM_RX_FRAG*ETH_FRAG_SIZE) - -/* RX and TX descriptor and status definitions. */ -#define RX_DESC_PACKET(i) (*(unsigned int *)(RX_DESC_BASE + 8*i)) -#define RX_DESC_CTRL(i) (*(unsigned int *)(RX_DESC_BASE+4 + 8*i)) -#define RX_STAT_INFO(i) (*(unsigned int *)(RX_STAT_BASE + 8*i)) -#define RX_STAT_HASHCRC(i) (*(unsigned int *)(RX_STAT_BASE+4 + 8*i)) -#define TX_DESC_PACKET(i) (*(unsigned int *)(TX_DESC_BASE + 8*i)) -#define TX_DESC_CTRL(i) (*(unsigned int *)(TX_DESC_BASE+4 + 8*i)) -#define TX_STAT_INFO(i) (*(unsigned int *)(TX_STAT_BASE + 4*i)) -#define RX_BUF(i) (RX_BUF_BASE + ETH_FRAG_SIZE*i) -#define TX_BUF(i) (TX_BUF_BASE + ETH_FRAG_SIZE*i) - -/* MAC Configuration Register 1 */ -#define MAC1_REC_EN 0x00000001 /* Receive Enable */ -#define MAC1_PASS_ALL 0x00000002 /* Pass All Receive Frames */ -#define MAC1_RX_FLOWC 0x00000004 /* RX Flow Control */ -#define MAC1_TX_FLOWC 0x00000008 /* TX Flow Control */ -#define MAC1_LOOPB 0x00000010 /* Loop Back Mode */ -#define MAC1_RES_TX 0x00000100 /* Reset TX Logic */ -#define MAC1_RES_MCS_TX 0x00000200 /* Reset MAC TX Control Sublayer */ -#define MAC1_RES_RX 0x00000400 /* Reset RX Logic */ -#define MAC1_RES_MCS_RX 0x00000800 /* Reset MAC RX Control Sublayer */ -#define MAC1_SIM_RES 0x00004000 /* Simulation Reset */ -#define MAC1_SOFT_RES 0x00008000 /* Soft Reset MAC */ - -/* MAC Configuration Register 2 */ -#define MAC2_FULL_DUP 0x00000001 /* Full Duplex Mode */ -#define MAC2_FRM_LEN_CHK 0x00000002 /* Frame Length Checking */ -#define MAC2_HUGE_FRM_EN 0x00000004 /* Huge Frame Enable */ -#define MAC2_DLY_CRC 0x00000008 /* Delayed CRC Mode */ -#define MAC2_CRC_EN 0x00000010 /* Append CRC to every Frame */ -#define MAC2_PAD_EN 0x00000020 /* Pad all Short Frames */ -#define MAC2_VLAN_PAD_EN 0x00000040 /* VLAN Pad Enable */ -#define MAC2_ADET_PAD_EN 0x00000080 /* Auto Detect Pad Enable */ -#define MAC2_PPREAM_ENF 0x00000100 /* Pure Preamble Enforcement */ -#define MAC2_LPREAM_ENF 0x00000200 /* Long Preamble Enforcement */ -#undef MAC2_NO_BACKOFF /* Remove compiler warning. */ -#define MAC2_NO_BACKOFF 0x00001000 /* No Backoff Algorithm */ -#define MAC2_BACK_PRESSURE 0x00002000 /* Backoff Presurre / No Backoff */ -#define MAC2_EXCESS_DEF 0x00004000 /* Excess Defer */ - -/* Back-to-Back Inter-Packet-Gap Register */ -#define IPGT_FULL_DUP 0x00000015 /* Recommended value for Full Duplex */ -#define IPGT_HALF_DUP 0x00000012 /* Recommended value for Half Duplex */ - -/* Non Back-to-Back Inter-Packet-Gap Register */ -#define IPGR_DEF 0x00000012 /* Recommended value */ - -/* Collision Window/Retry Register */ -#define CLRT_DEF 0x0000370F /* Default value */ - -/* PHY Support Register */ -#undef SUPP_SPEED /* Remove compiler warning. */ -#define SUPP_SPEED 0x00000100 /* Reduced MII Logic Current Speed */ -#define SUPP_RES_RMII 0x00000800 /* Reset Reduced MII Logic */ - -/* Test Register */ -#define TEST_SHCUT_PQUANTA 0x00000001 /* Shortcut Pause Quanta */ -#define TEST_TST_PAUSE 0x00000002 /* Test Pause */ -#define TEST_TST_BACKP 0x00000004 /* Test Back Pressure */ - -/* MII Management Configuration Register */ -#define MCFG_SCAN_INC 0x00000001 /* Scan Increment PHY Address */ -#define MCFG_SUPP_PREAM 0x00000002 /* Suppress Preamble */ -#define MCFG_CLK_SEL 0x0000001C /* Clock Select Mask */ -#define MCFG_RES_MII 0x00008000 /* Reset MII Management Hardware */ - -/* MII Management Command Register */ -#undef MCMD_READ /* Remove compiler warning. */ -#define MCMD_READ 0x00000001 /* MII Read */ -#undef MCMD_SCAN /* Remove compiler warning. */ -#define MCMD_SCAN 0x00000002 /* MII Scan continuously */ - -#define MII_WR_TOUT 0x00050000 /* MII Write timeout count */ -#define MII_RD_TOUT 0x00050000 /* MII Read timeout count */ - -/* MII Management Address Register */ -#define MADR_REG_ADR 0x0000001F /* MII Register Address Mask */ -#define MADR_PHY_ADR 0x00001F00 /* PHY Address Mask */ - -/* MII Management Indicators Register */ -#undef MIND_BUSY /* Remove compiler warning. */ -#define MIND_BUSY 0x00000001 /* MII is Busy */ -#define MIND_SCAN 0x00000002 /* MII Scanning in Progress */ -#define MIND_NOT_VAL 0x00000004 /* MII Read Data not valid */ -#define MIND_MII_LINK_FAIL 0x00000008 /* MII Link Failed */ - -/* Command Register */ -#define CR_RX_EN 0x00000001 /* Enable Receive */ -#define CR_TX_EN 0x00000002 /* Enable Transmit */ -#define CR_REG_RES 0x00000008 /* Reset Host Registers */ -#define CR_TX_RES 0x00000010 /* Reset Transmit Datapath */ -#define CR_RX_RES 0x00000020 /* Reset Receive Datapath */ -#define CR_PASS_RUNT_FRM 0x00000040 /* Pass Runt Frames */ -#define CR_PASS_RX_FILT 0x00000080 /* Pass RX Filter */ -#define CR_TX_FLOW_CTRL 0x00000100 /* TX Flow Control */ -#define CR_RMII 0x00000200 /* Reduced MII Interface */ -#define CR_FULL_DUP 0x00000400 /* Full Duplex */ - -/* Status Register */ -#define SR_RX_EN 0x00000001 /* Enable Receive */ -#define SR_TX_EN 0x00000002 /* Enable Transmit */ - -/* Transmit Status Vector 0 Register */ -#define TSV0_CRC_ERR 0x00000001 /* CRC error */ -#define TSV0_LEN_CHKERR 0x00000002 /* Length Check Error */ -#define TSV0_LEN_OUTRNG 0x00000004 /* Length Out of Range */ -#define TSV0_DONE 0x00000008 /* Tramsmission Completed */ -#define TSV0_MCAST 0x00000010 /* Multicast Destination */ -#define TSV0_BCAST 0x00000020 /* Broadcast Destination */ -#define TSV0_PKT_DEFER 0x00000040 /* Packet Deferred */ -#define TSV0_EXC_DEFER 0x00000080 /* Excessive Packet Deferral */ -#define TSV0_EXC_COLL 0x00000100 /* Excessive Collision */ -#define TSV0_LATE_COLL 0x00000200 /* Late Collision Occured */ -#define TSV0_GIANT 0x00000400 /* Giant Frame */ -#define TSV0_UNDERRUN 0x00000800 /* Buffer Underrun */ -#define TSV0_BYTES 0x0FFFF000 /* Total Bytes Transferred */ -#define TSV0_CTRL_FRAME 0x10000000 /* Control Frame */ -#define TSV0_PAUSE 0x20000000 /* Pause Frame */ -#define TSV0_BACK_PRESS 0x40000000 /* Backpressure Method Applied */ -#define TSV0_VLAN 0x80000000 /* VLAN Frame */ - -/* Transmit Status Vector 1 Register */ -#define TSV1_BYTE_CNT 0x0000FFFF /* Transmit Byte Count */ -#define TSV1_COLL_CNT 0x000F0000 /* Transmit Collision Count */ - -/* Receive Status Vector Register */ -#define RSV_BYTE_CNT 0x0000FFFF /* Receive Byte Count */ -#define RSV_PKT_IGNORED 0x00010000 /* Packet Previously Ignored */ -#define RSV_RXDV_SEEN 0x00020000 /* RXDV Event Previously Seen */ -#define RSV_CARR_SEEN 0x00040000 /* Carrier Event Previously Seen */ -#define RSV_REC_CODEV 0x00080000 /* Receive Code Violation */ -#define RSV_CRC_ERR 0x00100000 /* CRC Error */ -#define RSV_LEN_CHKERR 0x00200000 /* Length Check Error */ -#define RSV_LEN_OUTRNG 0x00400000 /* Length Out of Range */ -#define RSV_REC_OK 0x00800000 /* Frame Received OK */ -#define RSV_MCAST 0x01000000 /* Multicast Frame */ -#define RSV_BCAST 0x02000000 /* Broadcast Frame */ -#define RSV_DRIB_NIBB 0x04000000 /* Dribble Nibble */ -#define RSV_CTRL_FRAME 0x08000000 /* Control Frame */ -#define RSV_PAUSE 0x10000000 /* Pause Frame */ -#define RSV_UNSUPP_OPC 0x20000000 /* Unsupported Opcode */ -#define RSV_VLAN 0x40000000 /* VLAN Frame */ - -/* Flow Control Counter Register */ -#define FCC_MIRR_CNT 0x0000FFFF /* Mirror Counter */ -#define FCC_PAUSE_TIM 0xFFFF0000 /* Pause Timer */ - -/* Flow Control Status Register */ -#define FCS_MIRR_CNT 0x0000FFFF /* Mirror Counter Current */ - -/* Receive Filter Control Register */ -#define RFC_UCAST_EN 0x00000001 /* Accept Unicast Frames Enable */ -#define RFC_BCAST_EN 0x00000002 /* Accept Broadcast Frames Enable */ -#define RFC_MCAST_EN 0x00000004 /* Accept Multicast Frames Enable */ -#define RFC_UCAST_HASH_EN 0x00000008 /* Accept Unicast Hash Filter Frames */ -#define RFC_MCAST_HASH_EN 0x00000010 /* Accept Multicast Hash Filter Fram.*/ -#define RFC_PERFECT_EN 0x00000020 /* Accept Perfect Match Enable */ -#define RFC_MAGP_WOL_EN 0x00001000 /* Magic Packet Filter WoL Enable */ -#define RFC_PFILT_WOL_EN 0x00002000 /* Perfect Filter WoL Enable */ - -/* Receive Filter WoL Status/Clear Registers */ -#define WOL_UCAST 0x00000001 /* Unicast Frame caused WoL */ -#define WOL_BCAST 0x00000002 /* Broadcast Frame caused WoL */ -#define WOL_MCAST 0x00000004 /* Multicast Frame caused WoL */ -#define WOL_UCAST_HASH 0x00000008 /* Unicast Hash Filter Frame WoL */ -#define WOL_MCAST_HASH 0x00000010 /* Multicast Hash Filter Frame WoL */ -#define WOL_PERFECT 0x00000020 /* Perfect Filter WoL */ -#define WOL_RX_FILTER 0x00000080 /* RX Filter caused WoL */ -#define WOL_MAG_PACKET 0x00000100 /* Magic Packet Filter caused WoL */ - -/* Interrupt Status/Enable/Clear/Set Registers */ -#define INT_RX_OVERRUN 0x00000001 /* Overrun Error in RX Queue */ -#define INT_RX_ERR 0x00000002 /* Receive Error */ -#define INT_RX_FIN 0x00000004 /* RX Finished Process Descriptors */ -#define INT_RX_DONE 0x00000008 /* Receive Done */ -#define INT_TX_UNDERRUN 0x00000010 /* Transmit Underrun */ -#define INT_TX_ERR 0x00000020 /* Transmit Error */ -#define INT_TX_FIN 0x00000040 /* TX Finished Process Descriptors */ -#define INT_TX_DONE 0x00000080 /* Transmit Done */ -#define INT_SOFT_INT 0x00001000 /* Software Triggered Interrupt */ -#define INT_WAKEUP 0x00002000 /* Wakeup Event Interrupt */ - -/* Power Down Register */ -#define PD_POWER_DOWN 0x80000000 /* Power Down MAC */ - -/* RX Descriptor Control Word */ -#define RCTRL_SIZE 0x000007FF /* Buffer size mask */ -#define RCTRL_INT 0x80000000 /* Generate RxDone Interrupt */ - -/* RX Status Hash CRC Word */ -#define RHASH_SA 0x000001FF /* Hash CRC for Source Address */ -#define RHASH_DA 0x001FF000 /* Hash CRC for Destination Address */ - -/* RX Status Information Word */ -#define RINFO_SIZE 0x000007FF /* Data size in bytes */ -#define RINFO_CTRL_FRAME 0x00040000 /* Control Frame */ -#define RINFO_VLAN 0x00080000 /* VLAN Frame */ -#define RINFO_FAIL_FILT 0x00100000 /* RX Filter Failed */ -#define RINFO_MCAST 0x00200000 /* Multicast Frame */ -#define RINFO_BCAST 0x00400000 /* Broadcast Frame */ -#define RINFO_CRC_ERR 0x00800000 /* CRC Error in Frame */ -#define RINFO_SYM_ERR 0x01000000 /* Symbol Error from PHY */ -#define RINFO_LEN_ERR 0x02000000 /* Length Error */ -#define RINFO_RANGE_ERR 0x04000000 /* Range Error (exceeded max. size) */ -#define RINFO_ALIGN_ERR 0x08000000 /* Alignment Error */ -#define RINFO_OVERRUN 0x10000000 /* Receive overrun */ -#define RINFO_NO_DESCR 0x20000000 /* No new Descriptor available */ -#define RINFO_LAST_FLAG 0x40000000 /* Last Fragment in Frame */ -#define RINFO_ERR 0x80000000 /* Error Occured (OR of all errors) */ - -#define RINFO_ERR_MASK (RINFO_FAIL_FILT | RINFO_CRC_ERR | RINFO_SYM_ERR | \ - RINFO_LEN_ERR | RINFO_ALIGN_ERR | RINFO_OVERRUN) - -/* TX Descriptor Control Word */ -#define TCTRL_SIZE 0x000007FF /* Size of data buffer in bytes */ -#define TCTRL_OVERRIDE 0x04000000 /* Override Default MAC Registers */ -#define TCTRL_HUGE 0x08000000 /* Enable Huge Frame */ -#define TCTRL_PAD 0x10000000 /* Pad short Frames to 64 bytes */ -#define TCTRL_CRC 0x20000000 /* Append a hardware CRC to Frame */ -#define TCTRL_LAST 0x40000000 /* Last Descriptor for TX Frame */ -#define TCTRL_INT 0x80000000 /* Generate TxDone Interrupt */ - -/* TX Status Information Word */ -#define TINFO_COL_CNT 0x01E00000 /* Collision Count */ -#define TINFO_DEFER 0x02000000 /* Packet Deferred (not an error) */ -#define TINFO_EXCESS_DEF 0x04000000 /* Excessive Deferral */ -#define TINFO_EXCESS_COL 0x08000000 /* Excessive Collision */ -#define TINFO_LATE_COL 0x10000000 /* Late Collision Occured */ -#define TINFO_UNDERRUN 0x20000000 /* Transmit Underrun */ -#define TINFO_NO_DESCR 0x40000000 /* No new Descriptor available */ -#define TINFO_ERR 0x80000000 /* Error Occured (OR of all errors) */ - -/* DP83848C PHY Registers */ -#define PHY_REG_BMCR 0x00 /* Basic Mode Control Register */ -#define PHY_REG_BMSR 0x01 /* Basic Mode Status Register */ -#define PHY_REG_IDR1 0x02 /* PHY Identifier 1 */ -#define PHY_REG_IDR2 0x03 /* PHY Identifier 2 */ -#define PHY_REG_ANAR 0x04 /* Auto-Negotiation Advertisement */ -#define PHY_REG_ANLPAR 0x05 /* Auto-Neg. Link Partner Abitily */ -#define PHY_REG_ANER 0x06 /* Auto-Neg. Expansion Register */ -#define PHY_REG_ANNPTR 0x07 /* Auto-Neg. Next Page TX */ - -/* PHY Extended Registers */ -#define PHY_REG_STS 0x10 /* Status Register */ -#define PHY_REG_MICR 0x11 /* MII Interrupt Control Register */ -#define PHY_REG_MISR 0x12 /* MII Interrupt Status Register */ -#define PHY_REG_FCSCR 0x14 /* False Carrier Sense Counter */ -#define PHY_REG_RECR 0x15 /* Receive Error Counter */ -#define PHY_REG_PCSR 0x16 /* PCS Sublayer Config. and Status */ -#define PHY_REG_RBR 0x17 /* RMII and Bypass Register */ -#define PHY_REG_LEDCR 0x18 /* LED Direct Control Register */ -#define PHY_REG_PHYCR 0x19 /* PHY Control Register */ -#define PHY_REG_10BTSCR 0x1A /* 10Base-T Status/Control Register */ -#define PHY_REG_CDCTRL1 0x1B /* CD Test Control and BIST Extens. */ -#define PHY_REG_EDCR 0x1D /* Energy Detect Control Register */ - -#define PHY_FULLD_100M 0x2100 /* Full Duplex 100Mbit */ -#define PHY_HALFD_100M 0x2000 /* Half Duplex 100Mbit */ -#define PHY_FULLD_10M 0x0100 /* Full Duplex 10Mbit */ -#define PHY_HALFD_10M 0x0000 /* Half Duplex 10MBit */ -#define PHY_AUTO_NEG 0x3000 /* Select Auto Negotiation */ - -#define DP83848C_DEF_ADR 0x0100 /* Default PHY device address */ -#define DP83848C_ID 0x20005C90 /* PHY Identifier */ - -// prototypes -portBASE_TYPE vInitEMAC(void); -unsigned short ReadFrameBE_EMAC(void); -void vIncrementTxLength(unsigned long ulLength); -void CopyFromFrame_EMAC(void *Dest, unsigned short Size); -void DummyReadFrame_EMAC(unsigned short Size); -unsigned short StartReadFrame(void); -void EndReadFrame(void); -unsigned int CheckFrameReceived(void); -void vInitialiseSend(void); -unsigned int Rdy4Tx(void); -void vSendBufferToMAC(void); -void vEMACWaitForInput( void ); -unsigned int uiGetEMACRxData( unsigned char *ucBuffer ); - - -#endif - -/*---------------------------------------------------------------------------- - * end of file - *---------------------------------------------------------------------------*/ - diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/http-strings b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/http-strings deleted file mode 100644 index 0d3c30cdd..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/http-strings +++ /dev/null @@ -1,35 +0,0 @@ -http_http "http://" -http_200 "200 " -http_301 "301 " -http_302 "302 " -http_get "GET " -http_10 "HTTP/1.0" -http_11 "HTTP/1.1" -http_content_type "content-type: " -http_texthtml "text/html" -http_location "location: " -http_host "host: " -http_crnl "\r\n" -http_index_html "/index.html" -http_404_html "/404.html" -http_referer "Referer:" -http_header_200 "HTTP/1.0 200 OK\r\nServer: uIP/1.0 http://www.sics.se/~adam/uip/\r\nConnection: close\r\n" -http_header_404 "HTTP/1.0 404 Not found\r\nServer: uIP/1.0 http://www.sics.se/~adam/uip/\r\nConnection: close\r\n" -http_content_type_plain "Content-type: text/plain\r\n\r\n" -http_content_type_html "Content-type: text/html\r\n\r\n" -http_content_type_css "Content-type: text/css\r\n\r\n" -http_content_type_text "Content-type: text/text\r\n\r\n" -http_content_type_png "Content-type: image/png\r\n\r\n" -http_content_type_gif "Content-type: image/gif\r\n\r\n" -http_content_type_jpg "Content-type: image/jpeg\r\n\r\n" -http_content_type_binary "Content-type: application/octet-stream\r\n\r\n" -http_html ".html" -http_shtml ".shtml" -http_htm ".htm" -http_css ".css" -http_png ".png" -http_gif ".gif" -http_jpg ".jpg" -http_text ".txt" -http_txt ".txt" - diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/http-strings.c b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/http-strings.c deleted file mode 100644 index ef7a41c7d..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/http-strings.c +++ /dev/null @@ -1,102 +0,0 @@ -const char http_http[8] = -/* "http://" */ -{0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, }; -const char http_200[5] = -/* "200 " */ -{0x32, 0x30, 0x30, 0x20, }; -const char http_301[5] = -/* "301 " */ -{0x33, 0x30, 0x31, 0x20, }; -const char http_302[5] = -/* "302 " */ -{0x33, 0x30, 0x32, 0x20, }; -const char http_get[5] = -/* "GET " */ -{0x47, 0x45, 0x54, 0x20, }; -const char http_10[9] = -/* "HTTP/1.0" */ -{0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30, }; -const char http_11[9] = -/* "HTTP/1.1" */ -{0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x31, }; -const char http_content_type[15] = -/* "content-type: " */ -{0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, }; -const char http_texthtml[10] = -/* "text/html" */ -{0x74, 0x65, 0x78, 0x74, 0x2f, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_location[11] = -/* "location: " */ -{0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, }; -const char http_host[7] = -/* "host: " */ -{0x68, 0x6f, 0x73, 0x74, 0x3a, 0x20, }; -const char http_crnl[3] = -/* "\r\n" */ -{0xd, 0xa, }; -const char http_index_html[12] = -/* "/index.html" */ -{0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_404_html[10] = -/* "/404.html" */ -{0x2f, 0x34, 0x30, 0x34, 0x2e, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_referer[9] = -/* "Referer:" */ -{0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x72, 0x3a, }; -const char http_header_200[84] = -/* "HTTP/1.0 200 OK\r\nServer: uIP/1.0 http://www.sics.se/~adam/uip/\r\nConnection: close\r\n" */ -{0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x32, 0x30, 0x30, 0x20, 0x4f, 0x4b, 0xd, 0xa, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x3a, 0x20, 0x75, 0x49, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x73, 0x69, 0x63, 0x73, 0x2e, 0x73, 0x65, 0x2f, 0x7e, 0x61, 0x64, 0x61, 0x6d, 0x2f, 0x75, 0x69, 0x70, 0x2f, 0xd, 0xa, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0xd, 0xa, }; -const char http_header_404[91] = -/* "HTTP/1.0 404 Not found\r\nServer: uIP/1.0 http://www.sics.se/~adam/uip/\r\nConnection: close\r\n" */ -{0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x34, 0x30, 0x34, 0x20, 0x4e, 0x6f, 0x74, 0x20, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0xd, 0xa, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x3a, 0x20, 0x75, 0x49, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x73, 0x69, 0x63, 0x73, 0x2e, 0x73, 0x65, 0x2f, 0x7e, 0x61, 0x64, 0x61, 0x6d, 0x2f, 0x75, 0x69, 0x70, 0x2f, 0xd, 0xa, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0xd, 0xa, }; -const char http_content_type_plain[29] = -/* "Content-type: text/plain\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_html[28] = -/* "Content-type: text/html\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_css [27] = -/* "Content-type: text/css\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x63, 0x73, 0x73, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_text[28] = -/* "Content-type: text/text\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x74, 0x65, 0x78, 0x74, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_png [28] = -/* "Content-type: image/png\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x70, 0x6e, 0x67, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_gif [28] = -/* "Content-type: image/gif\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x67, 0x69, 0x66, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_jpg [29] = -/* "Content-type: image/jpeg\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x6a, 0x70, 0x65, 0x67, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_binary[43] = -/* "Content-type: application/octet-stream\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x6f, 0x63, 0x74, 0x65, 0x74, 0x2d, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0xd, 0xa, 0xd, 0xa, }; -const char http_html[6] = -/* ".html" */ -{0x2e, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_shtml[7] = -/* ".shtml" */ -{0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_htm[5] = -/* ".htm" */ -{0x2e, 0x68, 0x74, 0x6d, }; -const char http_css[5] = -/* ".css" */ -{0x2e, 0x63, 0x73, 0x73, }; -const char http_png[5] = -/* ".png" */ -{0x2e, 0x70, 0x6e, 0x67, }; -const char http_gif[5] = -/* ".gif" */ -{0x2e, 0x67, 0x69, 0x66, }; -const char http_jpg[5] = -/* ".jpg" */ -{0x2e, 0x6a, 0x70, 0x67, }; -const char http_text[5] = -/* ".txt" */ -{0x2e, 0x74, 0x78, 0x74, }; -const char http_txt[5] = -/* ".txt" */ -{0x2e, 0x74, 0x78, 0x74, }; diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/http-strings.h b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/http-strings.h deleted file mode 100644 index acbe7e17f..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/http-strings.h +++ /dev/null @@ -1,34 +0,0 @@ -extern const char http_http[8]; -extern const char http_200[5]; -extern const char http_301[5]; -extern const char http_302[5]; -extern const char http_get[5]; -extern const char http_10[9]; -extern const char http_11[9]; -extern const char http_content_type[15]; -extern const char http_texthtml[10]; -extern const char http_location[11]; -extern const char http_host[7]; -extern const char http_crnl[3]; -extern const char http_index_html[12]; -extern const char http_404_html[10]; -extern const char http_referer[9]; -extern const char http_header_200[84]; -extern const char http_header_404[91]; -extern const char http_content_type_plain[29]; -extern const char http_content_type_html[28]; -extern const char http_content_type_css [27]; -extern const char http_content_type_text[28]; -extern const char http_content_type_png [28]; -extern const char http_content_type_gif [28]; -extern const char http_content_type_jpg [29]; -extern const char http_content_type_binary[43]; -extern const char http_html[6]; -extern const char http_shtml[7]; -extern const char http_htm[5]; -extern const char http_css[5]; -extern const char http_png[5]; -extern const char http_gif[5]; -extern const char http_jpg[5]; -extern const char http_text[5]; -extern const char http_txt[5]; diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/httpd-cgi.c b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/httpd-cgi.c deleted file mode 100644 index c45a19a69..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/httpd-cgi.c +++ /dev/null @@ -1,293 +0,0 @@ -/** - * \addtogroup httpd - * @{ - */ - -/** - * \file - * Web server script interface - * \author - * Adam Dunkels - * - */ - -/* - * Copyright (c) 2001-2006, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: httpd-cgi.c,v 1.2 2006/06/11 21:46:37 adam Exp $ - * - */ - -#include "uip.h" -#include "psock.h" -#include "httpd.h" -#include "httpd-cgi.h" -#include "httpd-fs.h" - -#include -#include - -HTTPD_CGI_CALL(file, "file-stats", file_stats); -HTTPD_CGI_CALL(tcp, "tcp-connections", tcp_stats); -HTTPD_CGI_CALL(net, "net-stats", net_stats); -HTTPD_CGI_CALL(rtos, "rtos-stats", rtos_stats ); -HTTPD_CGI_CALL(run, "run-time", run_time ); -HTTPD_CGI_CALL(io, "led-io", led_io ); - - -static const struct httpd_cgi_call *calls[] = { &file, &tcp, &net, &rtos, &run, &io, NULL }; - -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(nullfunction(struct httpd_state *s, char *ptr)) -{ - PSOCK_BEGIN(&s->sout); - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -httpd_cgifunction -httpd_cgi(char *name) -{ - const struct httpd_cgi_call **f; - - /* Find the matching name in the table, return the function. */ - for(f = calls; *f != NULL; ++f) { - if(strncmp((*f)->name, name, strlen((*f)->name)) == 0) { - return (*f)->function; - } - } - return nullfunction; -} -/*---------------------------------------------------------------------------*/ -static unsigned short -generate_file_stats(void *arg) -{ - char *f = (char *)arg; - return snprintf((char *)uip_appdata, UIP_APPDATA_SIZE, "%5u", httpd_fs_count(f)); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(file_stats(struct httpd_state *s, char *ptr)) -{ - PSOCK_BEGIN(&s->sout); - - PSOCK_GENERATOR_SEND(&s->sout, generate_file_stats, strchr(ptr, ' ') + 1); - - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -static const char closed[] = /* "CLOSED",*/ -{0x43, 0x4c, 0x4f, 0x53, 0x45, 0x44, 0}; -static const char syn_rcvd[] = /* "SYN-RCVD",*/ -{0x53, 0x59, 0x4e, 0x2d, 0x52, 0x43, 0x56, - 0x44, 0}; -static const char syn_sent[] = /* "SYN-SENT",*/ -{0x53, 0x59, 0x4e, 0x2d, 0x53, 0x45, 0x4e, - 0x54, 0}; -static const char established[] = /* "ESTABLISHED",*/ -{0x45, 0x53, 0x54, 0x41, 0x42, 0x4c, 0x49, 0x53, 0x48, - 0x45, 0x44, 0}; -static const char fin_wait_1[] = /* "FIN-WAIT-1",*/ -{0x46, 0x49, 0x4e, 0x2d, 0x57, 0x41, 0x49, - 0x54, 0x2d, 0x31, 0}; -static const char fin_wait_2[] = /* "FIN-WAIT-2",*/ -{0x46, 0x49, 0x4e, 0x2d, 0x57, 0x41, 0x49, - 0x54, 0x2d, 0x32, 0}; -static const char closing[] = /* "CLOSING",*/ -{0x43, 0x4c, 0x4f, 0x53, 0x49, - 0x4e, 0x47, 0}; -static const char time_wait[] = /* "TIME-WAIT,"*/ -{0x54, 0x49, 0x4d, 0x45, 0x2d, 0x57, 0x41, - 0x49, 0x54, 0}; -static const char last_ack[] = /* "LAST-ACK"*/ -{0x4c, 0x41, 0x53, 0x54, 0x2d, 0x41, 0x43, - 0x4b, 0}; - -static const char *states[] = { - closed, - syn_rcvd, - syn_sent, - established, - fin_wait_1, - fin_wait_2, - closing, - time_wait, - last_ack}; - - -static unsigned short -generate_tcp_stats(void *arg) -{ - struct uip_conn *conn; - struct httpd_state *s = (struct httpd_state *)arg; - - conn = &uip_conns[s->count]; - return snprintf((char *)uip_appdata, UIP_APPDATA_SIZE, - "\r\n", - htons(conn->lport), - htons(conn->ripaddr[0]) >> 8, - htons(conn->ripaddr[0]) & 0xff, - htons(conn->ripaddr[1]) >> 8, - htons(conn->ripaddr[1]) & 0xff, - htons(conn->rport), - states[conn->tcpstateflags & UIP_TS_MASK], - conn->nrtx, - conn->timer, - (uip_outstanding(conn))? '*':' ', - (uip_stopped(conn))? '!':' '); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(tcp_stats(struct httpd_state *s, char *ptr)) -{ - - PSOCK_BEGIN(&s->sout); - - for(s->count = 0; s->count < UIP_CONNS; ++s->count) { - if((uip_conns[s->count].tcpstateflags & UIP_TS_MASK) != UIP_CLOSED) { - PSOCK_GENERATOR_SEND(&s->sout, generate_tcp_stats, s); - } - } - - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -static unsigned short -generate_net_stats(void *arg) -{ - struct httpd_state *s = (struct httpd_state *)arg; - return snprintf((char *)uip_appdata, UIP_APPDATA_SIZE, - "%5u\n", ((uip_stats_t *)&uip_stat)[s->count]); -} - -static -PT_THREAD(net_stats(struct httpd_state *s, char *ptr)) -{ - PSOCK_BEGIN(&s->sout); - -#if UIP_STATISTICS - - for(s->count = 0; s->count < sizeof(uip_stat) / sizeof(uip_stats_t); - ++s->count) { - PSOCK_GENERATOR_SEND(&s->sout, generate_net_stats, s); - } - -#endif /* UIP_STATISTICS */ - - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ - -extern void vTaskList( char *pcWriteBuffer ); -static char cCountBuf[ 32 ]; -long lRefreshCount = 0; -static unsigned short -generate_rtos_stats(void *arg) -{ - lRefreshCount++; - sprintf( cCountBuf, "


Refresh count = %d", lRefreshCount ); - vTaskList( ( char * ) uip_appdata ); - strcat( uip_appdata, cCountBuf ); - - return strlen( uip_appdata ); -} -/*---------------------------------------------------------------------------*/ - - -static -PT_THREAD(rtos_stats(struct httpd_state *s, char *ptr)) -{ - PSOCK_BEGIN(&s->sout); - PSOCK_GENERATOR_SEND(&s->sout, generate_rtos_stats, NULL); - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ - -char *pcStatus; -extern unsigned long uxParTestGetLED( unsigned long uxLED ); - -static unsigned short generate_io_state( void *arg ) -{ - if( uxParTestGetLED( 0 ) ) - { - pcStatus = "checked"; - } - else - { - pcStatus = ""; - } - - sprintf( uip_appdata, - "LED"\ - "

"\ - "", - pcStatus ); - - return strlen( uip_appdata ); -} -/*---------------------------------------------------------------------------*/ - -extern void vTaskGetRunTimeStats( char *pcWriteBuffer ); -static unsigned short -generate_runtime_stats(void *arg) -{ - lRefreshCount++; - sprintf( cCountBuf, "


Refresh count = %d", lRefreshCount ); - vTaskGetRunTimeStats( ( char * ) uip_appdata ); - strcat( uip_appdata, cCountBuf ); - - return strlen( uip_appdata ); -} -/*---------------------------------------------------------------------------*/ - - -static -PT_THREAD(run_time(struct httpd_state *s, char *ptr)) -{ - PSOCK_BEGIN(&s->sout); - PSOCK_GENERATOR_SEND(&s->sout, generate_runtime_stats, NULL); - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ - -static PT_THREAD(led_io(struct httpd_state *s, char *ptr)) -{ - PSOCK_BEGIN(&s->sout); - PSOCK_GENERATOR_SEND(&s->sout, generate_io_state, NULL); - PSOCK_END(&s->sout); -} - -/** @} */ - - - - - - diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/httpd-cgi.h b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/httpd-cgi.h deleted file mode 100644 index 7ae928321..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/httpd-cgi.h +++ /dev/null @@ -1,84 +0,0 @@ -/** - * \addtogroup httpd - * @{ - */ - -/** - * \file - * Web server script interface header file - * \author - * Adam Dunkels - * - */ - - - -/* - * Copyright (c) 2001, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: httpd-cgi.h,v 1.2 2006/06/11 21:46:38 adam Exp $ - * - */ - -#ifndef __HTTPD_CGI_H__ -#define __HTTPD_CGI_H__ - -#include "psock.h" -#include "httpd.h" - -typedef PT_THREAD((* httpd_cgifunction)(struct httpd_state *, char *)); - -httpd_cgifunction httpd_cgi(char *name); - -struct httpd_cgi_call { - const char *name; - const httpd_cgifunction function; -}; - -/** - * \brief HTTPD CGI function declaration - * \param name The C variable name of the function - * \param str The string name of the function, used in the script file - * \param function A pointer to the function that implements it - * - * This macro is used for declaring a HTTPD CGI - * function. This function is then added to the list of - * HTTPD CGI functions with the httpd_cgi_add() function. - * - * \hideinitializer - */ -#define HTTPD_CGI_CALL(name, str, function) \ -static PT_THREAD(function(struct httpd_state *, char *)); \ -static const struct httpd_cgi_call name = {str, function} - -void httpd_cgi_init(void); -#endif /* __HTTPD_CGI_H__ */ - -/** @} */ diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/httpd-fs.c b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/httpd-fs.c deleted file mode 100644 index dc4aef011..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/httpd-fs.c +++ /dev/null @@ -1,132 +0,0 @@ -/* - * Copyright (c) 2001, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - * $Id: httpd-fs.c,v 1.1 2006/06/07 09:13:08 adam Exp $ - */ - -#include "httpd.h" -#include "httpd-fs.h" -#include "httpd-fsdata.h" - -#ifndef NULL -#define NULL 0 -#endif /* NULL */ - -#include "httpd-fsdata.c" - -#if HTTPD_FS_STATISTICS -static u16_t count[HTTPD_FS_NUMFILES]; -#endif /* HTTPD_FS_STATISTICS */ - -/*-----------------------------------------------------------------------------------*/ -static u8_t -httpd_fs_strcmp(const char *str1, const char *str2) -{ - u8_t i; - i = 0; - loop: - - if(str2[i] == 0 || - str1[i] == '\r' || - str1[i] == '\n') { - return 0; - } - - if(str1[i] != str2[i]) { - return 1; - } - - - ++i; - goto loop; -} -/*-----------------------------------------------------------------------------------*/ -int -httpd_fs_open(const char *name, struct httpd_fs_file *file) -{ -#if HTTPD_FS_STATISTICS - u16_t i = 0; -#endif /* HTTPD_FS_STATISTICS */ - struct httpd_fsdata_file_noconst *f; - - for(f = (struct httpd_fsdata_file_noconst *)HTTPD_FS_ROOT; - f != NULL; - f = (struct httpd_fsdata_file_noconst *)f->next) { - - if(httpd_fs_strcmp(name, f->name) == 0) { - file->data = f->data; - file->len = f->len; -#if HTTPD_FS_STATISTICS - ++count[i]; -#endif /* HTTPD_FS_STATISTICS */ - return 1; - } -#if HTTPD_FS_STATISTICS - ++i; -#endif /* HTTPD_FS_STATISTICS */ - - } - return 0; -} -/*-----------------------------------------------------------------------------------*/ -void -httpd_fs_init(void) -{ -#if HTTPD_FS_STATISTICS - u16_t i; - for(i = 0; i < HTTPD_FS_NUMFILES; i++) { - count[i] = 0; - } -#endif /* HTTPD_FS_STATISTICS */ -} -/*-----------------------------------------------------------------------------------*/ -#if HTTPD_FS_STATISTICS -u16_t httpd_fs_count -(char *name) -{ - struct httpd_fsdata_file_noconst *f; - u16_t i; - - i = 0; - for(f = (struct httpd_fsdata_file_noconst *)HTTPD_FS_ROOT; - f != NULL; - f = (struct httpd_fsdata_file_noconst *)f->next) { - - if(httpd_fs_strcmp(name, f->name) == 0) { - return count[i]; - } - ++i; - } - return 0; -} -#endif /* HTTPD_FS_STATISTICS */ -/*-----------------------------------------------------------------------------------*/ diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/httpd-fs.h b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/httpd-fs.h deleted file mode 100644 index b594eea56..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/httpd-fs.h +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright (c) 2001, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - * $Id: httpd-fs.h,v 1.1 2006/06/07 09:13:08 adam Exp $ - */ -#ifndef __HTTPD_FS_H__ -#define __HTTPD_FS_H__ - -#define HTTPD_FS_STATISTICS 1 - -struct httpd_fs_file { - char *data; - int len; -}; - -/* file must be allocated by caller and will be filled in - by the function. */ -int httpd_fs_open(const char *name, struct httpd_fs_file *file); - -#ifdef HTTPD_FS_STATISTICS -#if HTTPD_FS_STATISTICS == 1 -u16_t httpd_fs_count(char *name); -#endif /* HTTPD_FS_STATISTICS */ -#endif /* HTTPD_FS_STATISTICS */ - -void httpd_fs_init(void); - -#endif /* __HTTPD_FS_H__ */ diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/httpd-fs/404.html b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/httpd-fs/404.html deleted file mode 100644 index 43e7f4cad..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/httpd-fs/404.html +++ /dev/null @@ -1,8 +0,0 @@ - - -

-

404 - file not found

-

Go here instead.

-
- - \ No newline at end of file diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/httpd-fs/index.html b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/httpd-fs/index.html deleted file mode 100644 index 4937dc69a..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/httpd-fs/index.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Loading index.shtml. Click here if not automatically redirected. - - - - - diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/httpd-fs/index.shtml b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/httpd-fs/index.shtml deleted file mode 100644 index 29d242c05..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/httpd-fs/index.shtml +++ /dev/null @@ -1,20 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS.org Homepage | IO -

-


-

-

Task statistics

-Page will refresh every 2 seconds.

-

Task          State  Priority  Stack	#
************************************************
-%! rtos-stats -
-
- - - diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/httpd-fs/io.shtml b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/httpd-fs/io.shtml deleted file mode 100644 index fd0697d2a..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/httpd-fs/io.shtml +++ /dev/null @@ -1,28 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS.org Homepage | IO -

-


-LED and LCD IO
- -

- -Use the check box to turn on or off the LED, enter text to display on the OLED display, then click "Update IO". - - -

-
-%! led-io -

- - -

- - - - diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/httpd-fs/runtime.shtml b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/httpd-fs/runtime.shtml deleted file mode 100644 index 67cae4657..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/httpd-fs/runtime.shtml +++ /dev/null @@ -1,20 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS.org Homepage | IO -

-


-

-

Run-time statistics

-Page will refresh every 2 seconds.

-

Task            Abs Time      % Time
****************************************
-%! run-time -
-
- - - diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/httpd-fs/stats.shtml b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/httpd-fs/stats.shtml deleted file mode 100644 index d95a69340..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/httpd-fs/stats.shtml +++ /dev/null @@ -1,41 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS.org Homepage | IO -

-


-

-

Network statistics

-
LocalRemoteStateRetransmissionsTimerFlags
%d%u.%u.%u.%u:%u%s%u%u%c %c
-
-IP           Packets dropped
-             Packets received
-             Packets sent
-IP errors    IP version/header length
-             IP length, high byte
-             IP length, low byte
-             IP fragments
-             Header checksum
-             Wrong protocol
-ICMP	     Packets dropped
-             Packets received
-             Packets sent
-             Type errors
-TCP          Packets dropped
-             Packets received
-             Packets sent
-             Checksum errors
-             Data packets without ACKs
-             Resets
-             Retransmissions
-	     No connection avaliable
-	     Connection attempts to closed ports
-
%! net-stats
-
- - - diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/httpd-fs/tcp.shtml b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/httpd-fs/tcp.shtml deleted file mode 100644 index 41053679d..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/httpd-fs/tcp.shtml +++ /dev/null @@ -1,21 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS.org Homepage | IO -

-


-
-

Network connections

-

- - -%! tcp-connections - - - - - diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/httpd-fsdata.c b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/httpd-fsdata.c deleted file mode 100644 index 7348902e7..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/httpd-fsdata.c +++ /dev/null @@ -1,557 +0,0 @@ -static const unsigned char data_404_html[] = { - /* /404.html */ - 0x2f, 0x34, 0x30, 0x34, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, 0x20, 0x20, 0x3c, - 0x62, 0x6f, 0x64, 0x79, 0x20, 0x62, 0x67, 0x63, 0x6f, 0x6c, - 0x6f, 0x72, 0x3d, 0x22, 0x77, 0x68, 0x69, 0x74, 0x65, 0x22, - 0x3e, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x63, 0x65, 0x6e, - 0x74, 0x65, 0x72, 0x3e, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x3c, 0x68, 0x31, 0x3e, 0x34, 0x30, 0x34, 0x20, 0x2d, - 0x20, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x6e, 0x6f, 0x74, 0x20, - 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x3c, 0x2f, 0x68, 0x31, 0x3e, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x68, 0x33, - 0x3e, 0x47, 0x6f, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, - 0x66, 0x3d, 0x22, 0x2f, 0x22, 0x3e, 0x68, 0x65, 0x72, 0x65, - 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x65, - 0x61, 0x64, 0x2e, 0x3c, 0x2f, 0x68, 0x33, 0x3e, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x3c, 0x2f, 0x63, 0x65, 0x6e, 0x74, 0x65, - 0x72, 0x3e, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x62, 0x6f, 0x64, - 0x79, 0x3e, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, -0}; - -static const unsigned char data_index_html[] = { - /* /index.html */ - 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, - 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, - 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, 0x57, 0x45, 0x42, - 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x64, 0x65, - 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x42, 0x4f, 0x44, 0x59, 0x20, 0x6f, - 0x6e, 0x4c, 0x6f, 0x61, 0x64, 0x3d, 0x22, 0x77, 0x69, 0x6e, - 0x64, 0x6f, 0x77, 0x2e, 0x73, 0x65, 0x74, 0x54, 0x69, 0x6d, - 0x65, 0x6f, 0x75, 0x74, 0x28, 0x26, 0x71, 0x75, 0x6f, 0x74, - 0x3b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x27, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x27, 0x26, 0x71, - 0x75, 0x6f, 0x74, 0x3b, 0x2c, 0x31, 0x30, 0x30, 0x29, 0x22, - 0x3e, 0xa, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, - 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, - 0x3e, 0xa, 0x4c, 0x6f, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x20, - 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, - 0x6c, 0x2e, 0x20, 0x20, 0x43, 0x6c, 0x69, 0x63, 0x6b, 0x20, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x68, 0x65, 0x72, 0x65, 0x3c, 0x2f, 0x61, 0x3e, - 0x20, 0x69, 0x66, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x61, 0x75, - 0x74, 0x6f, 0x6d, 0x61, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x6c, - 0x79, 0x20, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, - 0x65, 0x64, 0x2e, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, - 0x3e, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xa, - 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xa, 0x3c, 0x2f, - 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, 0xa, 0}; - -static const unsigned char data_index_shtml[] = { - /* /index.shtml */ - 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, - 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, - 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, 0x57, 0x45, 0x42, - 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x64, 0x65, - 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x42, 0x4f, 0x44, 0x59, 0x20, 0x6f, - 0x6e, 0x4c, 0x6f, 0x61, 0x64, 0x3d, 0x22, 0x77, 0x69, 0x6e, - 0x64, 0x6f, 0x77, 0x2e, 0x73, 0x65, 0x74, 0x54, 0x69, 0x6d, - 0x65, 0x6f, 0x75, 0x74, 0x28, 0x26, 0x71, 0x75, 0x6f, 0x74, - 0x3b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x27, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x27, 0x26, 0x71, - 0x75, 0x6f, 0x74, 0x3b, 0x2c, 0x32, 0x30, 0x30, 0x30, 0x29, - 0x22, 0x3e, 0xa, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, - 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, - 0x22, 0x3e, 0xa, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, - 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, - 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, - 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, - 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x72, 0x75, - 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, - 0x6c, 0x22, 0x3e, 0x52, 0x75, 0x6e, 0x20, 0x54, 0x69, 0x6d, - 0x65, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, - 0x6c, 0x22, 0x3e, 0x54, 0x43, 0x50, 0x20, 0x53, 0x74, 0x61, - 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, 0x63, 0x70, 0x2e, 0x73, - 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, - 0x2e, 0x66, 0x72, 0x65, 0x65, 0x72, 0x74, 0x6f, 0x73, 0x2e, - 0x6f, 0x72, 0x67, 0x2f, 0x22, 0x3e, 0x46, 0x72, 0x65, 0x65, - 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x48, - 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0xa, 0x3c, 0x62, 0x72, - 0x3e, 0x3c, 0x70, 0x3e, 0xa, 0x3c, 0x68, 0x72, 0x3e, 0xa, - 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xa, 0x3c, 0x68, - 0x32, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x73, 0x74, 0x61, - 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x3c, 0x2f, 0x68, - 0x32, 0x3e, 0xa, 0x50, 0x61, 0x67, 0x65, 0x20, 0x77, 0x69, - 0x6c, 0x6c, 0x20, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, - 0x20, 0x65, 0x76, 0x65, 0x72, 0x79, 0x20, 0x32, 0x20, 0x73, - 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x2e, 0x3c, 0x70, 0x3e, - 0xa, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, - 0x65, 0x3d, 0x22, 0x63, 0x6f, 0x75, 0x72, 0x69, 0x65, 0x72, - 0x22, 0x3e, 0x3c, 0x70, 0x72, 0x65, 0x3e, 0x54, 0x61, 0x73, - 0x6b, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x53, 0x74, 0x61, 0x74, 0x65, 0x20, 0x20, 0x50, 0x72, - 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x20, 0x20, 0x53, 0x74, - 0x61, 0x63, 0x6b, 0x9, 0x23, 0x3c, 0x62, 0x72, 0x3e, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x3c, 0x62, 0x72, - 0x3e, 0xa, 0x25, 0x21, 0x20, 0x72, 0x74, 0x6f, 0x73, 0x2d, - 0x73, 0x74, 0x61, 0x74, 0x73, 0xa, 0x3c, 0x2f, 0x70, 0x72, - 0x65, 0x3e, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xa, - 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xa, 0x3c, 0x2f, - 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xa, 0x3c, 0x2f, 0x68, 0x74, - 0x6d, 0x6c, 0x3e, 0xa, 0xa, 0}; - -static const unsigned char data_io_shtml[] = { - /* /io.shtml */ - 0x2f, 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, - 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, - 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, 0x57, 0x45, 0x42, - 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x64, 0x65, - 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x42, 0x4f, 0x44, 0x59, 0x3e, 0xa, - 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, - 0x3d, 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xa, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x53, 0x74, 0x61, - 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x72, 0x75, 0x6e, 0x74, 0x69, - 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x52, 0x75, 0x6e, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, - 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, - 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x54, 0x43, 0x50, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, - 0x6c, 0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, - 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, - 0x65, 0x65, 0x72, 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, - 0x2f, 0x22, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x48, 0x6f, 0x6d, 0x65, - 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6f, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x49, 0x4f, 0x3c, - 0x2f, 0x61, 0x3e, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, - 0x3e, 0xa, 0x3c, 0x68, 0x72, 0x3e, 0xa, 0x3c, 0x62, 0x3e, - 0x4c, 0x45, 0x44, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x4c, 0x43, - 0x44, 0x20, 0x49, 0x4f, 0x3c, 0x2f, 0x62, 0x3e, 0x3c, 0x62, - 0x72, 0x3e, 0xa, 0xa, 0x3c, 0x70, 0x3e, 0xa, 0xa, 0x55, - 0x73, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x68, 0x65, - 0x63, 0x6b, 0x20, 0x62, 0x6f, 0x78, 0x20, 0x74, 0x6f, 0x20, - 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6f, 0x6e, 0x20, 0x6f, 0x72, - 0x20, 0x6f, 0x66, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x4c, - 0x45, 0x44, 0x2c, 0x20, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x20, - 0x74, 0x65, 0x78, 0x74, 0x20, 0x74, 0x6f, 0x20, 0x64, 0x69, - 0x73, 0x70, 0x6c, 0x61, 0x79, 0x20, 0x6f, 0x6e, 0x20, 0x74, - 0x68, 0x65, 0x20, 0x4f, 0x4c, 0x45, 0x44, 0x20, 0x64, 0x69, - 0x73, 0x70, 0x6c, 0x61, 0x79, 0x2c, 0x20, 0x74, 0x68, 0x65, - 0x6e, 0x20, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x20, 0x22, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x49, 0x4f, 0x22, 0x2e, - 0xa, 0xa, 0xa, 0x3c, 0x70, 0x3e, 0xa, 0x3c, 0x66, 0x6f, - 0x72, 0x6d, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x22, 0x61, - 0x46, 0x6f, 0x72, 0x6d, 0x22, 0x20, 0x61, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x3d, 0x22, 0x2f, 0x69, 0x6f, 0x2e, 0x73, 0x68, - 0x74, 0x6d, 0x6c, 0x22, 0x20, 0x6d, 0x65, 0x74, 0x68, 0x6f, - 0x64, 0x3d, 0x22, 0x67, 0x65, 0x74, 0x22, 0x3e, 0xa, 0x25, - 0x21, 0x20, 0x6c, 0x65, 0x64, 0x2d, 0x69, 0x6f, 0xa, 0x3c, - 0x70, 0x3e, 0xa, 0x3c, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x20, - 0x74, 0x79, 0x70, 0x65, 0x3d, 0x22, 0x73, 0x75, 0x62, 0x6d, - 0x69, 0x74, 0x22, 0x20, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3d, - 0x22, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x49, 0x4f, - 0x22, 0x3e, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x72, 0x6d, 0x3e, - 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xa, 0x3c, - 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xa, 0x3c, 0x2f, 0x62, - 0x6f, 0x64, 0x79, 0x3e, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, - 0x6c, 0x3e, 0xa, 0xa, 0}; - -static const unsigned char data_runtime_shtml[] = { - /* /runtime.shtml */ - 0x2f, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, - 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, - 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, 0x57, 0x45, 0x42, - 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x64, 0x65, - 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x42, 0x4f, 0x44, 0x59, 0x20, 0x6f, - 0x6e, 0x4c, 0x6f, 0x61, 0x64, 0x3d, 0x22, 0x77, 0x69, 0x6e, - 0x64, 0x6f, 0x77, 0x2e, 0x73, 0x65, 0x74, 0x54, 0x69, 0x6d, - 0x65, 0x6f, 0x75, 0x74, 0x28, 0x26, 0x71, 0x75, 0x6f, 0x74, - 0x3b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x27, 0x72, 0x75, 0x6e, 0x74, - 0x69, 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x27, - 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x2c, 0x32, 0x30, 0x30, - 0x30, 0x29, 0x22, 0x3e, 0xa, 0x3c, 0x66, 0x6f, 0x6e, 0x74, - 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, 0x69, - 0x61, 0x6c, 0x22, 0x3e, 0xa, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x61, 0x73, - 0x6b, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x73, 0x68, - 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x52, 0x75, 0x6e, 0x20, 0x54, - 0x69, 0x6d, 0x65, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, - 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x43, 0x50, 0x20, 0x53, - 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, 0x63, 0x70, - 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x43, 0x6f, - 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, - 0x77, 0x77, 0x2e, 0x66, 0x72, 0x65, 0x65, 0x72, 0x74, 0x6f, - 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x22, 0x3e, 0x46, 0x72, - 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, 0x72, 0x67, - 0x20, 0x48, 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0xa, 0x3c, - 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xa, 0x3c, 0x68, 0x72, - 0x3e, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xa, - 0x3c, 0x68, 0x32, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x73, - 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x3c, - 0x2f, 0x68, 0x32, 0x3e, 0xa, 0x50, 0x61, 0x67, 0x65, 0x20, - 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x72, 0x65, 0x66, 0x72, 0x65, - 0x73, 0x68, 0x20, 0x65, 0x76, 0x65, 0x72, 0x79, 0x20, 0x32, - 0x20, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x2e, 0x3c, - 0x70, 0x3e, 0xa, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, - 0x61, 0x63, 0x65, 0x3d, 0x22, 0x63, 0x6f, 0x75, 0x72, 0x69, - 0x65, 0x72, 0x22, 0x3e, 0x3c, 0x70, 0x72, 0x65, 0x3e, 0x54, - 0x61, 0x73, 0x6b, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x41, 0x62, 0x73, 0x20, 0x54, - 0x69, 0x6d, 0x65, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x25, - 0x20, 0x54, 0x69, 0x6d, 0x65, 0x3c, 0x62, 0x72, 0x3e, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x3c, - 0x62, 0x72, 0x3e, 0xa, 0x25, 0x21, 0x20, 0x72, 0x75, 0x6e, - 0x2d, 0x74, 0x69, 0x6d, 0x65, 0xa, 0x3c, 0x2f, 0x70, 0x72, - 0x65, 0x3e, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xa, - 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xa, 0x3c, 0x2f, - 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xa, 0x3c, 0x2f, 0x68, 0x74, - 0x6d, 0x6c, 0x3e, 0xa, 0xa, 0}; - -static const unsigned char data_stats_shtml[] = { - /* /stats.shtml */ - 0x2f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, - 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, - 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, 0x57, 0x45, 0x42, - 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x64, 0x65, - 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x42, 0x4f, 0x44, 0x59, 0x3e, 0xa, - 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, - 0x3d, 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xa, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x53, 0x74, 0x61, - 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x72, 0x75, 0x6e, 0x74, 0x69, - 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x52, 0x75, 0x6e, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, - 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, - 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x54, 0x43, 0x50, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, - 0x6c, 0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, - 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, - 0x65, 0x65, 0x72, 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, - 0x2f, 0x22, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x48, 0x6f, 0x6d, 0x65, - 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6f, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x49, 0x4f, 0x3c, - 0x2f, 0x61, 0x3e, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, - 0x3e, 0xa, 0x3c, 0x68, 0x72, 0x3e, 0xa, 0x3c, 0x62, 0x72, - 0x3e, 0x3c, 0x70, 0x3e, 0xa, 0x3c, 0x68, 0x32, 0x3e, 0x4e, - 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x20, 0x73, 0x74, 0x61, - 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x3c, 0x2f, 0x68, - 0x32, 0x3e, 0xa, 0x3c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, - 0x77, 0x69, 0x64, 0x74, 0x68, 0x3d, 0x22, 0x33, 0x30, 0x30, - 0x22, 0x20, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x3d, 0x22, - 0x30, 0x22, 0x3e, 0xa, 0x3c, 0x74, 0x72, 0x3e, 0x3c, 0x74, - 0x64, 0x20, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x3d, 0x22, 0x6c, - 0x65, 0x66, 0x74, 0x22, 0x3e, 0x3c, 0x66, 0x6f, 0x6e, 0x74, - 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x63, 0x6f, 0x75, - 0x72, 0x69, 0x65, 0x72, 0x22, 0x3e, 0x3c, 0x70, 0x72, 0x65, - 0x3e, 0xa, 0x49, 0x50, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, - 0x74, 0x73, 0x20, 0x64, 0x72, 0x6f, 0x70, 0x70, 0x65, 0x64, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x73, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, 0xa, 0x49, 0x50, 0x20, - 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x20, 0x20, 0x20, 0x20, - 0x49, 0x50, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x2f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, 0x6c, 0x65, - 0x6e, 0x67, 0x74, 0x68, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x49, 0x50, - 0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x2c, 0x20, 0x68, - 0x69, 0x67, 0x68, 0x20, 0x62, 0x79, 0x74, 0x65, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x49, 0x50, 0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, - 0x68, 0x2c, 0x20, 0x6c, 0x6f, 0x77, 0x20, 0x62, 0x79, 0x74, - 0x65, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x49, 0x50, 0x20, 0x66, 0x72, - 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, 0x63, 0x68, - 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0xa, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x57, 0x72, 0x6f, 0x6e, 0x67, 0x20, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x63, 0x6f, 0x6c, 0xa, 0x49, 0x43, 0x4d, 0x50, 0x9, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, - 0x74, 0x73, 0x20, 0x64, 0x72, 0x6f, 0x70, 0x70, 0x65, 0x64, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x73, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, 0xa, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x54, 0x79, 0x70, 0x65, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, - 0x73, 0xa, 0x54, 0x43, 0x50, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, - 0x74, 0x73, 0x20, 0x64, 0x72, 0x6f, 0x70, 0x70, 0x65, 0x64, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x73, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, 0xa, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x20, 0x65, - 0x72, 0x72, 0x6f, 0x72, 0x73, 0xa, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x44, - 0x61, 0x74, 0x61, 0x20, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x73, 0x20, 0x77, 0x69, 0x74, 0x68, 0x6f, 0x75, 0x74, 0x20, - 0x41, 0x43, 0x4b, 0x73, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x52, 0x65, - 0x73, 0x65, 0x74, 0x73, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x52, 0x65, - 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x73, 0x73, 0x69, - 0x6f, 0x6e, 0x73, 0xa, 0x9, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x4e, 0x6f, 0x20, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x20, 0x61, 0x76, 0x61, 0x6c, 0x69, 0x61, - 0x62, 0x6c, 0x65, 0xa, 0x9, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x20, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x73, 0x20, - 0x74, 0x6f, 0x20, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x64, 0x20, - 0x70, 0x6f, 0x72, 0x74, 0x73, 0xa, 0x3c, 0x2f, 0x70, 0x72, - 0x65, 0x3e, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0x3c, - 0x2f, 0x74, 0x64, 0x3e, 0x3c, 0x74, 0x64, 0x3e, 0x3c, 0x70, - 0x72, 0x65, 0x3e, 0x25, 0x21, 0x20, 0x6e, 0x65, 0x74, 0x2d, - 0x73, 0x74, 0x61, 0x74, 0x73, 0xa, 0x3c, 0x2f, 0x70, 0x72, - 0x65, 0x3e, 0x3c, 0x2f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x3e, - 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xa, 0x3c, - 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xa, 0x3c, 0x2f, 0x68, - 0x74, 0x6d, 0x6c, 0x3e, 0xa, 0}; - -static const unsigned char data_tcp_shtml[] = { - /* /tcp.shtml */ - 0x2f, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, - 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, - 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, 0x57, 0x45, 0x42, - 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x64, 0x65, - 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x42, 0x4f, 0x44, 0x59, 0x3e, 0xa, - 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, - 0x3d, 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xa, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x53, 0x74, 0x61, - 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x72, 0x75, 0x6e, 0x74, 0x69, - 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x52, 0x75, 0x6e, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, - 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, - 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x54, 0x43, 0x50, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, - 0x6c, 0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, - 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, - 0x65, 0x65, 0x72, 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, - 0x2f, 0x22, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x48, 0x6f, 0x6d, 0x65, - 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6f, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x49, 0x4f, 0x3c, - 0x2f, 0x61, 0x3e, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, - 0x3e, 0xa, 0x3c, 0x68, 0x72, 0x3e, 0xa, 0x3c, 0x62, 0x72, - 0x3e, 0xa, 0x3c, 0x68, 0x32, 0x3e, 0x4e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x20, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x68, 0x32, 0x3e, - 0xa, 0x3c, 0x70, 0x3e, 0xa, 0x3c, 0x74, 0x61, 0x62, 0x6c, - 0x65, 0x3e, 0xa, 0x3c, 0x74, 0x72, 0x3e, 0x3c, 0x74, 0x68, - 0x3e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x3c, 0x2f, 0x74, 0x68, - 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x52, 0x65, 0x6d, 0x6f, 0x74, - 0x65, 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, - 0x53, 0x74, 0x61, 0x74, 0x65, 0x3c, 0x2f, 0x74, 0x68, 0x3e, - 0x3c, 0x74, 0x68, 0x3e, 0x52, 0x65, 0x74, 0x72, 0x61, 0x6e, - 0x73, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x3c, - 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x54, 0x69, - 0x6d, 0x65, 0x72, 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, - 0x68, 0x3e, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x3c, 0x2f, 0x74, - 0x68, 0x3e, 0x3c, 0x2f, 0x74, 0x72, 0x3e, 0xa, 0x25, 0x21, - 0x20, 0x74, 0x63, 0x70, 0x2d, 0x63, 0x6f, 0x6e, 0x6e, 0x65, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0xa, 0x3c, 0x2f, 0x70, - 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, - 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xa, 0x3c, - 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xa, 0x3c, 0x2f, 0x68, - 0x74, 0x6d, 0x6c, 0x3e, 0xa, 0xa, 0}; - -const struct httpd_fsdata_file file_404_html[] = {{NULL, data_404_html, data_404_html + 10, sizeof(data_404_html) - 10}}; - -const struct httpd_fsdata_file file_index_html[] = {{file_404_html, data_index_html, data_index_html + 12, sizeof(data_index_html) - 12}}; - -const struct httpd_fsdata_file file_index_shtml[] = {{file_index_html, data_index_shtml, data_index_shtml + 13, sizeof(data_index_shtml) - 13}}; - -const struct httpd_fsdata_file file_io_shtml[] = {{file_index_shtml, data_io_shtml, data_io_shtml + 10, sizeof(data_io_shtml) - 10}}; - -const struct httpd_fsdata_file file_runtime_shtml[] = {{file_io_shtml, data_runtime_shtml, data_runtime_shtml + 15, sizeof(data_runtime_shtml) - 15}}; - -const struct httpd_fsdata_file file_stats_shtml[] = {{file_runtime_shtml, data_stats_shtml, data_stats_shtml + 13, sizeof(data_stats_shtml) - 13}}; - -const struct httpd_fsdata_file file_tcp_shtml[] = {{file_stats_shtml, data_tcp_shtml, data_tcp_shtml + 11, sizeof(data_tcp_shtml) - 11}}; - -#define HTTPD_FS_ROOT file_tcp_shtml - -#define HTTPD_FS_NUMFILES 7 diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/httpd-fsdata.h b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/httpd-fsdata.h deleted file mode 100644 index 52d35c265..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/httpd-fsdata.h +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright (c) 2001, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - * $Id: httpd-fsdata.h,v 1.1 2006/06/07 09:13:08 adam Exp $ - */ -#ifndef __HTTPD_FSDATA_H__ -#define __HTTPD_FSDATA_H__ - -#include "uip.h" - -struct httpd_fsdata_file { - const struct httpd_fsdata_file *next; - const char *name; - const char *data; - const int len; -#ifdef HTTPD_FS_STATISTICS -#if HTTPD_FS_STATISTICS == 1 - u16_t count; -#endif /* HTTPD_FS_STATISTICS */ -#endif /* HTTPD_FS_STATISTICS */ -}; - -struct httpd_fsdata_file_noconst { - struct httpd_fsdata_file *next; - char *name; - char *data; - int len; -#ifdef HTTPD_FS_STATISTICS -#if HTTPD_FS_STATISTICS == 1 - u16_t count; -#endif /* HTTPD_FS_STATISTICS */ -#endif /* HTTPD_FS_STATISTICS */ -}; - -#endif /* __HTTPD_FSDATA_H__ */ diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/httpd.c b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/httpd.c deleted file mode 100644 index 644cf16b7..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/httpd.c +++ /dev/null @@ -1,346 +0,0 @@ -/** - * \addtogroup apps - * @{ - */ - -/** - * \defgroup httpd Web server - * @{ - * The uIP web server is a very simplistic implementation of an HTTP - * server. It can serve web pages and files from a read-only ROM - * filesystem, and provides a very small scripting language. - - */ - -/** - * \file - * Web server - * \author - * Adam Dunkels - */ - - -/* - * Copyright (c) 2004, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * Author: Adam Dunkels - * - * $Id: httpd.c,v 1.2 2006/06/11 21:46:38 adam Exp $ - */ - -#include "uip.h" -#include "httpd.h" -#include "httpd-fs.h" -#include "httpd-cgi.h" -#include "http-strings.h" - -#include - -#define STATE_WAITING 0 -#define STATE_OUTPUT 1 - -#define ISO_nl 0x0a -#define ISO_space 0x20 -#define ISO_bang 0x21 -#define ISO_percent 0x25 -#define ISO_period 0x2e -#define ISO_slash 0x2f -#define ISO_colon 0x3a - - -/*---------------------------------------------------------------------------*/ -static unsigned short -generate_part_of_file(void *state) -{ - struct httpd_state *s = (struct httpd_state *)state; - - if(s->file.len > uip_mss()) { - s->len = uip_mss(); - } else { - s->len = s->file.len; - } - memcpy(uip_appdata, s->file.data, s->len); - - return s->len; -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(send_file(struct httpd_state *s)) -{ - PSOCK_BEGIN(&s->sout); - - do { - PSOCK_GENERATOR_SEND(&s->sout, generate_part_of_file, s); - s->file.len -= s->len; - s->file.data += s->len; - } while(s->file.len > 0); - - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(send_part_of_file(struct httpd_state *s)) -{ - PSOCK_BEGIN(&s->sout); - - PSOCK_SEND(&s->sout, s->file.data, s->len); - - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -static void -next_scriptstate(struct httpd_state *s) -{ - char *p; - p = strchr(s->scriptptr, ISO_nl) + 1; - s->scriptlen -= (unsigned short)(p - s->scriptptr); - s->scriptptr = p; -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(handle_script(struct httpd_state *s)) -{ - char *ptr; - - PT_BEGIN(&s->scriptpt); - - - while(s->file.len > 0) { - - /* Check if we should start executing a script. */ - if(*s->file.data == ISO_percent && - *(s->file.data + 1) == ISO_bang) { - s->scriptptr = s->file.data + 3; - s->scriptlen = s->file.len - 3; - if(*(s->scriptptr - 1) == ISO_colon) { - httpd_fs_open(s->scriptptr + 1, &s->file); - PT_WAIT_THREAD(&s->scriptpt, send_file(s)); - } else { - PT_WAIT_THREAD(&s->scriptpt, - httpd_cgi(s->scriptptr)(s, s->scriptptr)); - } - next_scriptstate(s); - - /* The script is over, so we reset the pointers and continue - sending the rest of the file. */ - s->file.data = s->scriptptr; - s->file.len = s->scriptlen; - } else { - /* See if we find the start of script marker in the block of HTML - to be sent. */ - - if(s->file.len > uip_mss()) { - s->len = uip_mss(); - } else { - s->len = s->file.len; - } - - if(*s->file.data == ISO_percent) { - ptr = strchr(s->file.data + 1, ISO_percent); - } else { - ptr = strchr(s->file.data, ISO_percent); - } - if(ptr != NULL && - ptr != s->file.data) { - s->len = (int)(ptr - s->file.data); - if(s->len >= uip_mss()) { - s->len = uip_mss(); - } - } - PT_WAIT_THREAD(&s->scriptpt, send_part_of_file(s)); - s->file.data += s->len; - s->file.len -= s->len; - - } - } - - PT_END(&s->scriptpt); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(send_headers(struct httpd_state *s, const char *statushdr)) -{ - char *ptr; - - PSOCK_BEGIN(&s->sout); - - PSOCK_SEND_STR(&s->sout, statushdr); - - ptr = strrchr(s->filename, ISO_period); - if(ptr == NULL) { - PSOCK_SEND_STR(&s->sout, http_content_type_binary); - } else if(strncmp(http_html, ptr, 5) == 0 || - strncmp(http_shtml, ptr, 6) == 0) { - PSOCK_SEND_STR(&s->sout, http_content_type_html); - } else if(strncmp(http_css, ptr, 4) == 0) { - PSOCK_SEND_STR(&s->sout, http_content_type_css); - } else if(strncmp(http_png, ptr, 4) == 0) { - PSOCK_SEND_STR(&s->sout, http_content_type_png); - } else if(strncmp(http_gif, ptr, 4) == 0) { - PSOCK_SEND_STR(&s->sout, http_content_type_gif); - } else if(strncmp(http_jpg, ptr, 4) == 0) { - PSOCK_SEND_STR(&s->sout, http_content_type_jpg); - } else { - PSOCK_SEND_STR(&s->sout, http_content_type_plain); - } - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(handle_output(struct httpd_state *s)) -{ - char *ptr; - - PT_BEGIN(&s->outputpt); - - if(!httpd_fs_open(s->filename, &s->file)) { - httpd_fs_open(http_404_html, &s->file); - strcpy(s->filename, http_404_html); - PT_WAIT_THREAD(&s->outputpt, - send_headers(s, - http_header_404)); - PT_WAIT_THREAD(&s->outputpt, - send_file(s)); - } else { - PT_WAIT_THREAD(&s->outputpt, - send_headers(s, - http_header_200)); - ptr = strchr(s->filename, ISO_period); - if(ptr != NULL && strncmp(ptr, http_shtml, 6) == 0) { - PT_INIT(&s->scriptpt); - PT_WAIT_THREAD(&s->outputpt, handle_script(s)); - } else { - PT_WAIT_THREAD(&s->outputpt, - send_file(s)); - } - } - PSOCK_CLOSE(&s->sout); - PT_END(&s->outputpt); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(handle_input(struct httpd_state *s)) -{ - PSOCK_BEGIN(&s->sin); - - PSOCK_READTO(&s->sin, ISO_space); - - - if(strncmp(s->inputbuf, http_get, 4) != 0) { - PSOCK_CLOSE_EXIT(&s->sin); - } - PSOCK_READTO(&s->sin, ISO_space); - - if(s->inputbuf[0] != ISO_slash) { - PSOCK_CLOSE_EXIT(&s->sin); - } - - if(s->inputbuf[1] == ISO_space) { - strncpy(s->filename, http_index_html, sizeof(s->filename)); - } else { - - s->inputbuf[PSOCK_DATALEN(&s->sin) - 1] = 0; - - /* Process any form input being sent to the server. */ - { - extern void vApplicationProcessFormInput( char *pcInputString, long xInputLength ); - vApplicationProcessFormInput( s->inputbuf, PSOCK_DATALEN(&s->sin) ); - } - - strncpy(s->filename, &s->inputbuf[0], sizeof(s->filename)); - } - - /* httpd_log_file(uip_conn->ripaddr, s->filename);*/ - - s->state = STATE_OUTPUT; - - while(1) { - PSOCK_READTO(&s->sin, ISO_nl); - - if(strncmp(s->inputbuf, http_referer, 8) == 0) { - s->inputbuf[PSOCK_DATALEN(&s->sin) - 2] = 0; - /* httpd_log(&s->inputbuf[9]);*/ - } - } - - PSOCK_END(&s->sin); -} -/*---------------------------------------------------------------------------*/ -static void -handle_connection(struct httpd_state *s) -{ - handle_input(s); - if(s->state == STATE_OUTPUT) { - handle_output(s); - } -} -/*---------------------------------------------------------------------------*/ -void -httpd_appcall(void) -{ - struct httpd_state *s = (struct httpd_state *)&(uip_conn->appstate); - - if(uip_closed() || uip_aborted() || uip_timedout()) { - } else if(uip_connected()) { - PSOCK_INIT(&s->sin, s->inputbuf, sizeof(s->inputbuf) - 1); - PSOCK_INIT(&s->sout, s->inputbuf, sizeof(s->inputbuf) - 1); - PT_INIT(&s->outputpt); - s->state = STATE_WAITING; - /* timer_set(&s->timer, CLOCK_SECOND * 100);*/ - s->timer = 0; - handle_connection(s); - } else if(s != NULL) { - if(uip_poll()) { - ++s->timer; - if(s->timer >= 20) { - uip_abort(); - } - } else { - s->timer = 0; - } - handle_connection(s); - } else { - uip_abort(); - } -} -/*---------------------------------------------------------------------------*/ -/** - * \brief Initialize the web server - * - * This function initializes the web server and should be - * called at system boot-up. - */ -void -httpd_init(void) -{ - uip_listen(HTONS(80)); -} -/*---------------------------------------------------------------------------*/ -/** @} */ diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/httpd.h b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/httpd.h deleted file mode 100644 index 7f7a6666e..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/httpd.h +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright (c) 2001-2005, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: httpd.h,v 1.2 2006/06/11 21:46:38 adam Exp $ - * - */ - -#ifndef __HTTPD_H__ -#define __HTTPD_H__ - -#include "psock.h" -#include "httpd-fs.h" - -struct httpd_state { - unsigned char timer; - struct psock sin, sout; - struct pt outputpt, scriptpt; - char inputbuf[50]; - char filename[20]; - char state; - struct httpd_fs_file file; - int len; - char *scriptptr; - int scriptlen; - - unsigned short count; -}; - -void httpd_init(void); -void httpd_appcall(void); - -void httpd_log(char *msg); -void httpd_log_file(u16_t *requester, char *file); - -#endif /* __HTTPD_H__ */ diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/makefsdata b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/makefsdata deleted file mode 100644 index 8d2715a8a..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/makefsdata +++ /dev/null @@ -1,78 +0,0 @@ -#!/usr/bin/perl - -open(OUTPUT, "> httpd-fsdata.c"); - -chdir("httpd-fs"); - -opendir(DIR, "."); -@files = grep { !/^\./ && !/(CVS|~)/ } readdir(DIR); -closedir(DIR); - -foreach $file (@files) { - - if(-d $file && $file !~ /^\./) { - print "Processing directory $file\n"; - opendir(DIR, $file); - @newfiles = grep { !/^\./ && !/(CVS|~)/ } readdir(DIR); - closedir(DIR); - printf "Adding files @newfiles\n"; - @files = (@files, map { $_ = "$file/$_" } @newfiles); - next; - } -} - -foreach $file (@files) { - if(-f $file) { - - print "Adding file $file\n"; - - open(FILE, $file) || die "Could not open file $file\n"; - - $file =~ s-^-/-; - $fvar = $file; - $fvar =~ s-/-_-g; - $fvar =~ s-\.-_-g; - # for AVR, add PROGMEM here - print(OUTPUT "static const unsigned char data".$fvar."[] = {\n"); - print(OUTPUT "\t/* $file */\n\t"); - for($j = 0; $j < length($file); $j++) { - printf(OUTPUT "%#02x, ", unpack("C", substr($file, $j, 1))); - } - printf(OUTPUT "0,\n"); - - - $i = 0; - while(read(FILE, $data, 1)) { - if($i == 0) { - print(OUTPUT "\t"); - } - printf(OUTPUT "%#02x, ", unpack("C", $data)); - $i++; - if($i == 10) { - print(OUTPUT "\n"); - $i = 0; - } - } - print(OUTPUT "0};\n\n"); - close(FILE); - push(@fvars, $fvar); - push(@pfiles, $file); - } -} - -for($i = 0; $i < @fvars; $i++) { - $file = $pfiles[$i]; - $fvar = $fvars[$i]; - - if($i == 0) { - $prevfile = "NULL"; - } else { - $prevfile = "file" . $fvars[$i - 1]; - } - print(OUTPUT "const struct httpd_fsdata_file file".$fvar."[] = {{$prevfile, data$fvar, "); - print(OUTPUT "data$fvar + ". (length($file) + 1) .", "); - print(OUTPUT "sizeof(data$fvar) - ". (length($file) + 1) ."}};\n\n"); -} - -print(OUTPUT "#define HTTPD_FS_ROOT file$fvars[$i - 1]\n\n"); -print(OUTPUT "#define HTTPD_FS_NUMFILES $i\n"); diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/makestrings b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/makestrings deleted file mode 100644 index 8a13c6d29..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/makestrings +++ /dev/null @@ -1,40 +0,0 @@ -#!/usr/bin/perl - - -sub stringify { - my $name = shift(@_); - open(OUTPUTC, "> $name.c"); - open(OUTPUTH, "> $name.h"); - - open(FILE, "$name"); - - while() { - if(/(.+) "(.+)"/) { - $var = $1; - $data = $2; - - $datan = $data; - $datan =~ s/\\r/\r/g; - $datan =~ s/\\n/\n/g; - $datan =~ s/\\01/\01/g; - $datan =~ s/\\0/\0/g; - - printf(OUTPUTC "const char $var\[%d] = \n", length($datan) + 1); - printf(OUTPUTC "/* \"$data\" */\n"); - printf(OUTPUTC "{"); - for($j = 0; $j < length($datan); $j++) { - printf(OUTPUTC "%#02x, ", unpack("C", substr($datan, $j, 1))); - } - printf(OUTPUTC "};\n"); - - printf(OUTPUTH "extern const char $var\[%d];\n", length($datan) + 1); - - } - } - close(OUTPUTC); - close(OUTPUTH); -} -stringify("http-strings"); - -exit 0; - diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/uIP_Task.c b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/uIP_Task.c deleted file mode 100644 index 4e997a42d..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/uIP_Task.c +++ /dev/null @@ -1,311 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ -/* Standard includes. */ -#include - -/* Scheduler includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "semphr.h" - -#include "lcd_message.h" - -/* uip includes. */ -#include "hw_types.h" - -#include "uip.h" -#include "uip_arp.h" -#include "httpd.h" -#include "timer.h" -#include "clock-arch.h" -#include "hw_ethernet.h" -#include "ethernet.h" -#include "hw_memmap.h" -#include "lmi_flash.h" -#include "sysctl.h" - -/* Demo includes. */ -#include "emac.h" -#include "partest.h" - -/*-----------------------------------------------------------*/ - -/* IP address configuration. */ -#define uipIP_ADDR0 192 -#define uipIP_ADDR1 168 -#define uipIP_ADDR2 0 -#define uipIP_ADDR3 201 - -/* Netmask configuration. */ -#define uipNETMASK_0 255 -#define uipNETMASK_1 255 -#define uipNETMASK_2 255 -#define uipNETMASK_3 0 - -/* How long to wait before attempting to connect the MAC again. */ -#define uipINIT_WAIT 100 - -/* Shortcut to the header within the Rx buffer. */ -#define xHeader ((struct uip_eth_hdr *) &uip_buf[ 0 ]) - -/* Standard constant. */ -#define uipTOTAL_FRAME_HEADER_SIZE 54 - -/*-----------------------------------------------------------*/ - -/* - * Send the uIP buffer to the MAC. - */ -static void prvENET_Send(void); - -/* - * Setup the MAC address in the MAC itself, and in the uIP stack. - */ -static void prvSetMACAddress( void ); - -/* - * Port functions required by the uIP stack. - */ -void clock_init( void ); -clock_time_t clock_time( void ); - -/*-----------------------------------------------------------*/ - -/* The semaphore used by the ISR to wake the uIP task. */ -extern SemaphoreHandle_t xEMACSemaphore; - -/*-----------------------------------------------------------*/ - -void clock_init(void) -{ - /* This is done when the scheduler starts. */ -} -/*-----------------------------------------------------------*/ - -clock_time_t clock_time( void ) -{ - return xTaskGetTickCount(); -} - - -void vuIP_Task( void *pvParameters ) -{ -portBASE_TYPE i; -uip_ipaddr_t xIPAddr; -struct timer periodic_timer, arp_timer; -extern void ( vEMAC_ISR )( void ); - - /* Enable/Reset the Ethernet Controller */ - SysCtlPeripheralEnable( SYSCTL_PERIPH_ETH ); - SysCtlPeripheralReset( SYSCTL_PERIPH_ETH ); - - /* Create the semaphore used by the ISR to wake this task. */ - vSemaphoreCreateBinary( xEMACSemaphore ); - - /* Initialise the uIP stack. */ - timer_set( &periodic_timer, configTICK_RATE_HZ / 2 ); - timer_set( &arp_timer, configTICK_RATE_HZ * 10 ); - uip_init(); - uip_ipaddr( xIPAddr, uipIP_ADDR0, uipIP_ADDR1, uipIP_ADDR2, uipIP_ADDR3 ); - uip_sethostaddr( xIPAddr ); - uip_ipaddr( xIPAddr, uipNETMASK_0, uipNETMASK_1, uipNETMASK_2, uipNETMASK_3 ); - uip_setnetmask( xIPAddr ); - httpd_init(); - - while( vInitEMAC() != pdPASS ) - { - vTaskDelay( uipINIT_WAIT ); - } - prvSetMACAddress(); - - - for( ;; ) - { - /* Is there received data ready to be processed? */ - uip_len = uiGetEMACRxData( uip_buf ); - - if( uip_len > 0 ) - { - /* Standard uIP loop taken from the uIP manual. */ - - if( xHeader->type == htons( UIP_ETHTYPE_IP ) ) - { - uip_arp_ipin(); - uip_input(); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - uip_arp_out(); - prvENET_Send(); - } - } - else if( xHeader->type == htons( UIP_ETHTYPE_ARP ) ) - { - uip_arp_arpin(); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - prvENET_Send(); - } - } - } - else - { - if( timer_expired( &periodic_timer ) ) - { - timer_reset( &periodic_timer ); - for( i = 0; i < UIP_CONNS; i++ ) - { - uip_periodic( i ); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - uip_arp_out(); - prvENET_Send(); - } - } - - /* Call the ARP timer function every 10 seconds. */ - if( timer_expired( &arp_timer ) ) - { - timer_reset( &arp_timer ); - uip_arp_timer(); - } - } - else - { - /* We did not receive a packet, and there was no periodic - processing to perform. Block for a fixed period. If a packet - is received during this period we will be woken by the ISR - giving us the Semaphore. */ - xSemaphoreTake( xEMACSemaphore, configTICK_RATE_HZ / 2 ); - } - } - } -} -/*-----------------------------------------------------------*/ - -static void prvENET_Send(void) -{ - vInitialiseSend(); - vIncrementTxLength( uip_len ); - vSendBufferToMAC(); - vInitialiseSend(); - vIncrementTxLength( uip_len ); - vSendBufferToMAC(); -} -/*-----------------------------------------------------------*/ - -static void prvSetMACAddress( void ) -{ -unsigned long ulUser0, ulUser1; -unsigned char pucMACArray[8]; -struct uip_eth_addr xAddr; - - /* Get the device MAC address from flash */ - FlashUserGet(&ulUser0, &ulUser1); - - /* Convert the MAC address from flash into sequence of bytes. */ - pucMACArray[0] = ((ulUser0 >> 0) & 0xff); - pucMACArray[1] = ((ulUser0 >> 8) & 0xff); - pucMACArray[2] = ((ulUser0 >> 16) & 0xff); - pucMACArray[3] = ((ulUser1 >> 0) & 0xff); - pucMACArray[4] = ((ulUser1 >> 8) & 0xff); - pucMACArray[5] = ((ulUser1 >> 16) & 0xff); - - /* Program the MAC address. */ - EthernetMACAddrSet(ETH_BASE, pucMACArray); - - xAddr.addr[ 0 ] = pucMACArray[0]; - xAddr.addr[ 1 ] = pucMACArray[1]; - xAddr.addr[ 2 ] = pucMACArray[2]; - xAddr.addr[ 3 ] = pucMACArray[3]; - xAddr.addr[ 4 ] = pucMACArray[4]; - xAddr.addr[ 5 ] = pucMACArray[5]; - uip_setethaddr( xAddr ); -} -/*-----------------------------------------------------------*/ - -void vApplicationProcessFormInput( char *pcInputString, portBASE_TYPE xInputLength ) -{ -char *c, *pcText; -static char cMessageForDisplay[ 32 ]; -extern QueueHandle_t xOLEDQueue; -xOLEDMessage xOLEDMessage; - - /* Process the form input sent by the IO page of the served HTML. */ - - c = strstr( pcInputString, "?" ); - - if( c ) - { - /* Turn LED's on or off in accordance with the check box status. */ - if( strstr( c, "LED0=1" ) != NULL ) - { - vParTestSetLED( 0, 1 ); - } - else - { - vParTestSetLED( 0, 0 ); - } - - /* Find the start of the text to be displayed on the LCD. */ - pcText = strstr( c, "LCD=" ); - pcText += strlen( "LCD=" ); - - /* Terminate the file name for further processing within uIP. */ - *c = 0x00; - - /* Terminate the LCD string. */ - c = strstr( pcText, " " ); - if( c != NULL ) - { - *c = 0x00; - } - - /* Add required spaces. */ - while( ( c = strstr( pcText, "+" ) ) != NULL ) - { - *c = ' '; - } - - /* Write the message to the LCD. */ - strcpy( cMessageForDisplay, pcText ); - xOLEDMessage.pcMessage = cMessageForDisplay; - xQueueSend( xOLEDQueue, &xOLEDMessage, portMAX_DELAY ); - } -} - diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/uip-conf.h b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/uip-conf.h deleted file mode 100644 index 664077d89..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/uip-conf.h +++ /dev/null @@ -1,159 +0,0 @@ -/** - * \addtogroup uipopt - * @{ - */ - -/** - * \name Project-specific configuration options - * @{ - * - * uIP has a number of configuration options that can be overridden - * for each project. These are kept in a project-specific uip-conf.h - * file and all configuration names have the prefix UIP_CONF. - */ - -/* - * Copyright (c) 2006, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: uip-conf.h,v 1.6 2006/06/12 08:00:31 adam Exp $ - */ - -/** - * \file - * An example uIP configuration file - * \author - * Adam Dunkels - */ - -#ifndef __UIP_CONF_H__ -#define __UIP_CONF_H__ - -#include - -/** - * 8 bit datatype - * - * This typedef defines the 8-bit type used throughout uIP. - * - * \hideinitializer - */ -typedef uint8_t u8_t; - -/** - * 16 bit datatype - * - * This typedef defines the 16-bit type used throughout uIP. - * - * \hideinitializer - */ -typedef uint16_t u16_t; - -/** - * Statistics datatype - * - * This typedef defines the dataype used for keeping statistics in - * uIP. - * - * \hideinitializer - */ -typedef unsigned short uip_stats_t; - -/** - * Maximum number of TCP connections. - * - * \hideinitializer - */ -#define UIP_CONF_MAX_CONNECTIONS 40 - -/** - * Maximum number of listening TCP ports. - * - * \hideinitializer - */ -#define UIP_CONF_MAX_LISTENPORTS 40 - -/** - * uIP buffer size. - * - * \hideinitializer - */ -#define UIP_CONF_BUFFER_SIZE 1500 - -/** - * CPU byte order. - * - * \hideinitializer - */ -#define UIP_CONF_BYTE_ORDER LITTLE_ENDIAN - -/** - * Logging on or off - * - * \hideinitializer - */ -#define UIP_CONF_LOGGING 0 - -/** - * UDP support on or off - * - * \hideinitializer - */ -#define UIP_CONF_UDP 0 - -/** - * UDP checksums on or off - * - * \hideinitializer - */ -#define UIP_CONF_UDP_CHECKSUMS 1 - -/** - * uIP statistics on or off - * - * \hideinitializer - */ -#define UIP_CONF_STATISTICS 1 - -/* Here we include the header file for the application(s) we use in - our project. */ -/*#include "smtp.h"*/ -/*#include "hello-world.h"*/ -/*#include "telnetd.h"*/ -#include "webserver.h" -/*#include "dhcpc.h"*/ -/*#include "resolv.h"*/ -/*#include "webclient.h"*/ - -#define UIP_CONF_EXTERNAL_BUFFER - -#endif /* __UIP_CONF_H__ */ - -/** @} */ -/** @} */ diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/webserver.h b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/webserver.h deleted file mode 100644 index 1acb290b8..000000000 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/webserver/webserver.h +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright (c) 2002, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials provided - * with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: webserver.h,v 1.2 2006/06/11 21:46:38 adam Exp $ - * - */ -#ifndef __WEBSERVER_H__ -#define __WEBSERVER_H__ - -#include "httpd.h" - -typedef struct httpd_state uip_tcp_appstate_t; -/* UIP_APPCALL: the name of the application function. This function - must return void and take no arguments (i.e., C type "void - appfunc(void)"). */ -#ifndef UIP_APPCALL -#define UIP_APPCALL httpd_appcall -#endif - - -#endif /* __WEBSERVER_H__ */ diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/.cproject b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/.cproject deleted file mode 100644 index 002260673..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/.cproject +++ /dev/null @@ -1,608 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <?xml version="1.0" encoding="UTF-8"?> -<TargetConfig> -<Properties property_0="" property_1="" property_2="" property_3="NXP" property_4="LPC1768" property_count="5" version="1"/> -<infoList vendor="NXP"> -<info chip="LPC1768" match_id="0x00013f37,0x26013F37" name="LPC1768" package="lpc17_lqfp100.xml"> -<chip> -<name>LPC1768</name> -<family>LPC17xx</family> -<vendor>NXP (formerly Philips)</vendor> -<reset board="None" core="Real" sys="Real"/> -<clock changeable="TRUE" freq="20MHz" is_accurate="TRUE"/> -<memory can_program="true" id="Flash" is_ro="true" type="Flash"/> -<memory id="RAM" type="RAM"/> -<memory id="Periph" is_volatile="true" type="Peripheral"/> -<memoryInstance derived_from="Flash" id="MFlash512" location="0x00000000" size="0x80000"/> -<memoryInstance derived_from="RAM" id="RamLoc32" location="0x10000000" size="0x8000"/> -<memoryInstance derived_from="RAM" id="RamAHB32" location="0x2007c000" size="0x8000"/> -<prog_flash blocksz="0x1000" location="0" maxprgbuff="0x1000" progwithcode="TRUE" size="0x10000"/> -<prog_flash blocksz="0x8000" location="0x10000" maxprgbuff="0x1000" progwithcode="TRUE" size="0x70000"/> -<peripheralInstance derived_from="SVD_NVIC" determined="infoFile" id="NVIC" location="0xE000E000"/> -<peripheralInstance derived_from="TIMER" determined="infoFile" enable="SYSCTL.PCONP.PCTIM0&amp;0x1" id="TIMER0" location="0x40004000"/> -<peripheralInstance derived_from="TIMER" determined="infoFile" enable="SYSCTL.PCONP.PCTIM1&amp;0x1" id="TIMER1" location="0x40008000"/> -<peripheralInstance derived_from="TIMER" determined="infoFile" enable="SYSCTL.PCONP.PCTIM2&amp;0x1" id="TIMER2" location="0x40090000"/> -<peripheralInstance derived_from="TIMER" determined="infoFile" enable="SYSCTL.PCONP.PCTIM3&amp;0x1" id="TIMER3" location="0x40094000"/> -<peripheralInstance derived_from="FGPIO" determined="infoFile" enable="SYSCTL.PCONP.PCGPIO&amp;0x1" id="GPIO0" location="0x2009C000"/> -<peripheralInstance derived_from="FGPIO" determined="infoFile" enable="SYSCTL.PCONP.PCGPIO&amp;0x1" id="GPIO1" location="0x2009C020"/> -<peripheralInstance derived_from="FGPIO" determined="infoFile" enable="SYSCTL.PCONP.PCGPIO&amp;0x1" id="GPIO2" location="0x2009C040"/> -<peripheralInstance derived_from="FGPIO" determined="infoFile" enable="SYSCTL.PCONP.PCGPIO&amp;0x1" id="GPIO3" location="0x2009C060"/> -<peripheralInstance derived_from="FGPIO" determined="infoFile" enable="SYSCTL.PCONP.PCGPIO&amp;0x1" id="GPIO4" location="0x2009C080"/> -<peripheralInstance derived_from="LPC17_I2S" determined="infoFile" enable="SYSCTL.PCONP&amp;0x08000000" id="I2S" location="0x400A8000"/> -<peripheralInstance derived_from="LPC17_SYSCTL" determined="infoFile" id="SYSCTL" location="0x400FC000"/> -<peripheralInstance derived_from="LPC17_DAC" determined="infoFile" enable="PCB.PINSEL1.P0_26&amp;0x2=2" id="DAC" location="0x4008C000"/> -<peripheralInstance derived_from="LPC17xx_UART" determined="infoFile" enable="SYSCTL.PCONP.PCUART0&amp;0x1" id="UART0" location="0x4000C000"/> -<peripheralInstance derived_from="LPC17xx_UART_MODEM" determined="infoFile" enable="SYSCTL.PCONP.PCUART1&amp;0x1" id="UART1" location="0x40010000"/> -<peripheralInstance derived_from="LPC17xx_UART" determined="infoFile" enable="SYSCTL.PCONP.PCUART2&amp;0x1" id="UART2" location="0x40098000"/> -<peripheralInstance derived_from="LPC17xx_UART" determined="infoFile" enable="SYSCTL.PCONP.PCUART3&amp;0x1" id="UART3" location="0x4009C000"/> -<peripheralInstance derived_from="SPI" determined="infoFile" enable="SYSCTL.PCONP.PCSPI&amp;0x1" id="SPI" location="0x40020000"/> -<peripheralInstance derived_from="LPC17_SSP" determined="infoFile" enable="SYSCTL.PCONP.PCSSP0&amp;0x1" id="SSP0" location="0x40088000"/> -<peripheralInstance derived_from="LPC17_SSP" determined="infoFile" enable="SYSCTL.PCONP.PCSSP1&amp;0x1" id="SSP1" location="0x40030000"/> -<peripheralInstance derived_from="LPC17_ADC" determined="infoFile" enable="SYSCTL.PCONP.PCAD&amp;0x1" id="ADC" location="0x40034000"/> -<peripheralInstance derived_from="LPC17_USBINTST" determined="infoFile" enable="USBCLKCTL.USBClkCtrl&amp;0x12" id="USBINTSTAT" location="0x400fc1c0"/> -<peripheralInstance derived_from="LPC17_USB_CLK_CTL" determined="infoFile" id="USBCLKCTL" location="0x5000cff4"/> -<peripheralInstance derived_from="LPC17_USBDEV" determined="infoFile" enable="USBCLKCTL.USBClkSt&amp;0x12=0x12" id="USBDEV" location="0x5000C200"/> -<peripheralInstance derived_from="LPC17_PWM" determined="infoFile" enable="SYSCTL.PCONP.PWM1&amp;0x1" id="PWM" location="0x40018000"/> -<peripheralInstance derived_from="LPC17_I2C" determined="infoFile" enable="SYSCTL.PCONP.PCI2C0&amp;0x1" id="I2C0" location="0x4001C000"/> -<peripheralInstance derived_from="LPC17_I2C" determined="infoFile" enable="SYSCTL.PCONP.PCI2C1&amp;0x1" id="I2C1" location="0x4005C000"/> -<peripheralInstance derived_from="LPC17_I2C" determined="infoFile" enable="SYSCTL.PCONP.PCI2C2&amp;0x1" id="I2C2" location="0x400A0000"/> -<peripheralInstance derived_from="LPC17_DMA" determined="infoFile" enable="SYSCTL.PCONP.PCGPDMA&amp;0x1" id="DMA" location="0x50004000"/> -<peripheralInstance derived_from="LPC17_ENET" determined="infoFile" enable="SYSCTL.PCONP.PCENET&amp;0x1" id="ENET" location="0x50000000"/> -<peripheralInstance derived_from="CM3_DCR" determined="infoFile" id="DCR" location="0xE000EDF0"/> -<peripheralInstance derived_from="LPC17_PCB" determined="infoFile" id="PCB" location="0x4002c000"/> -<peripheralInstance derived_from="LPC17_QEI" determined="infoFile" enable="SYSCTL.PCONP.PCQEI&amp;0x1" id="QEI" location="0x400bc000"/> -<peripheralInstance derived_from="LPC17_USBHOST" determined="infoFile" enable="USBCLKCTL.USBClkSt&amp;0x11=0x11" id="USBHOST" location="0x5000C000"/> -<peripheralInstance derived_from="LPC17_USBOTG" determined="infoFile" enable="USBCLKCTL.USBClkSt&amp;0x1c=0x1c" id="USBOTG" location="0x5000C000"/> -<peripheralInstance derived_from="LPC17_RTC" determined="infoFile" enable="SYSCTL.PCONP.PCRTC&amp;0x1" id="RTC" location="0x40024000"/> -<peripheralInstance derived_from="MPU" determined="infoFile" id="MPU" location="0xE000ED90"/> -<peripheralInstance derived_from="LPC1x_WDT" determined="infoFile" id="WDT" location="0x40000000"/> -<peripheralInstance derived_from="LPC17_FLASHCFG" determined="infoFile" id="FLASHACCEL" location="0x400FC000"/> -<peripheralInstance derived_from="GPIO_INT" determined="infoFile" id="GPIOINTMAP" location="0x40028080"/> -<memoryInstance derived_from="RAM" id="CANAccFilterRAM" location="0x40038000" size="0x800"/> -<peripheralInstance derived_from="LPC17_CANAFR" determined="infoFile" enable="SYSCTL.PCONP.PCCAN1&amp;0x1|SYSCTL.PCONP.PCCAN2&amp;0x1" id="CANAFR" location="0x4003C000"/> -<peripheralInstance derived_from="LPC17_CANCEN" determined="infoFile" enable="SYSCTL.PCONP.PCCAN1&amp;0x1|SYSCTL.PCONP.PCCAN2&amp;0x1" id="CANCEN" location="0x40040000"/> -<peripheralInstance derived_from="LPC17_CANWAKESLEEP" determined="infoFile" id="CANWAKESLEEP" location="0x400FC110"/> -<peripheralInstance derived_from="LPC17_CANCON" determined="infoFile" enable="SYSCTL.PCONP.PCCAN1&amp;0x1" id="CANCON1" location="0x40044000"/> -<peripheralInstance derived_from="LPC17_CANCON" determined="infoFile" enable="SYSCTL.PCONP.PCCAN2&amp;0x1" id="CANCON2" location="0x40048000"/> -</chip> -<processor> -<name gcc_name="cortex-m3">Cortex-M3</name> -<family>Cortex-M</family> -</processor> -<link href="nxp_lpcxxxx_peripheral.xme" show="embed" type="simple"/> -</info> -</infoList> -</TargetConfig> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/.project b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/.project deleted file mode 100644 index 51c0342cf..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/.project +++ /dev/null @@ -1,81 +0,0 @@ - - - RTOSDemo_RDB1768 - - - - - - org.eclipse.cdt.managedbuilder.core.genmakebuilder - clean,full,incremental, - - - org.eclipse.cdt.make.core.cleanBuildTarget - clean - - - org.eclipse.cdt.make.core.enableCleanBuild - true - - - ?name? - - - - org.eclipse.cdt.make.core.append_environment - true - - - org.eclipse.cdt.make.core.stopOnError - true - - - org.eclipse.cdt.make.core.buildCommand - make - - - org.eclipse.cdt.make.core.contents - org.eclipse.cdt.make.core.activeConfigSettings - - - org.eclipse.cdt.make.core.buildLocation - ${workspace_loc:/RTOSDemo_RDB1768/Debug} - - - org.eclipse.cdt.make.core.useDefaultBuildCmd - true - - - org.eclipse.cdt.make.core.enableAutoBuild - false - - - org.eclipse.cdt.make.core.enableFullBuild - true - - - org.eclipse.cdt.make.core.buildArguments - - - - org.eclipse.cdt.make.core.fullBuildTarget - all - - - org.eclipse.cdt.make.core.autoBuildTarget - all - - - - - org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder - - - - - - org.eclipse.cdt.managedbuilder.core.ScannerConfigNature - org.eclipse.cdt.managedbuilder.core.managedBuildNature - org.eclipse.cdt.core.cnature - - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/.settings/language.settings.xml b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/.settings/language.settings.xml deleted file mode 100644 index 05c347560..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/.settings/language.settings.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/CreateProjectDirectoryStructure.bat b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/CreateProjectDirectoryStructure.bat deleted file mode 100644 index a189206bf..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/CreateProjectDirectoryStructure.bat +++ /dev/null @@ -1,50 +0,0 @@ -REM This file should be executed from the command line prior to the first -REM build. It will be necessary to refresh the Eclipse project once the -REM .bat file has been executed (normally just press F5 to refresh). - -REM Copies all the required files from their location within the standard -REM FreeRTOS directory structure to under the Eclipse project directory. -REM This permits the Eclipse project to be used in 'managed' mode and without -REM having to setup any linked resources. - -REM Have the files already been copied? -IF EXIST src\FreeRTOS Goto END - - REM Create the required directory structure. - MD src\FreeRTOS - MD src\FreeRTOS\include - MD src\FreeRTOS\portable\GCC\ARM_CM3 - MD src\FreeRTOS\portable\MemMang - MD "src\Common Demo Tasks" - MD "src\Common Demo Tasks\include" - - REM Copy the core kernel files. - copy ..\..\Source\tasks.c src\FreeRTOS - copy ..\..\Source\queue.c src\FreeRTOS - copy ..\..\Source\list.c src\FreeRTOS - - REM Copy the common header files - - copy ..\..\Source\include\*.* src\FreeRTOS\include - - REM Copy the portable layer files - copy ..\..\Source\portable\GCC\ARM_CM3\*.* src\FreeRTOS\portable\GCC\ARM_CM3 - - REM Copy the basic memory allocation files - copy ..\..\Source\portable\MemMang\heap_4.c src\FreeRTOS\portable\MemMang - - REM Copy the files that define the common demo tasks. - copy ..\Common\minimal\BlockQ.c "src\Common Demo Tasks" - copy ..\Common\minimal\blocktim.c "src\Common Demo Tasks" - copy ..\Common\minimal\flash.c "src\Common Demo Tasks" - copy ..\Common\minimal\GenQTest.c "src\Common Demo Tasks" - copy ..\Common\minimal\integer.c "src\Common Demo Tasks" - copy ..\Common\minimal\PollQ.c "src\Common Demo Tasks" - copy ..\Common\minimal\QPeek.c "src\Common Demo Tasks" - copy ..\Common\minimal\recmutex.c "src\Common Demo Tasks" - copy ..\Common\minimal\semtest.c "src\Common Demo Tasks" - - REM Copy the common demo file headers. - copy ..\Common\include\*.* "src\Common Demo Tasks\include" - -: END \ No newline at end of file diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/ReadMe.txt b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/ReadMe.txt new file mode 100644 index 000000000..12c70d213 --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/ReadMe.txt @@ -0,0 +1 @@ +The third party uIP TCP/IP stack and the demo project that used to be in this directory was removed in FreeRTOS version V10.4.3 due to security vulnerabilities identified in uIP. In a future version this demo may be replaced by a version which does not use TCP/IP or uses FreeRTOS’s own TCP/IP stack in place of the original third party stack. \ No newline at end of file diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/FreeRTOSConfig.h b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/FreeRTOSConfig.h deleted file mode 100644 index 0562fca5e..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/FreeRTOSConfig.h +++ /dev/null @@ -1,149 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -#ifndef FREERTOS_CONFIG_H -#define FREERTOS_CONFIG_H - -/* - * The following #error directive is to remind users that a batch file must be - * executed prior to this project being built. The batch file *cannot* be - * executed from within the IDE! Once it has been executed, re-open or refresh - * the Eclipse project and remove the #error line below. - */ -#error Ensure CreateProjectDirectoryStructure.bat has been executed before building. See comment immediately above. - -#include "LPC17xx.h" - -/*----------------------------------------------------------- - * Application specific definitions. - * - * These definitions should be adjusted for your particular hardware and - * application requirements. - * - * THESE PARAMETERS ARE DESCRIBED WITHIN THE 'CONFIGURATION' SECTION OF THE - * FreeRTOS API DOCUMENTATION AVAILABLE ON THE FreeRTOS.org WEB SITE. - *----------------------------------------------------------*/ - -#define configUSE_PREEMPTION 1 -#define configUSE_IDLE_HOOK 0 -#define configMAX_PRIORITIES ( 5 ) -#define configUSE_TICK_HOOK 1 -#define configCPU_CLOCK_HZ ( ( unsigned long ) 100000000 ) -#define configTICK_RATE_HZ ( ( TickType_t ) 1000 ) -#define configMINIMAL_STACK_SIZE ( ( unsigned short ) 80 ) -#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 19 * 1024 ) ) -#define configMAX_TASK_NAME_LEN ( 12 ) -#define configUSE_TRACE_FACILITY 1 -#define configUSE_16_BIT_TICKS 0 -#define configIDLE_SHOULD_YIELD 0 -#define configUSE_CO_ROUTINES 0 -#define configUSE_MUTEXES 1 - -#define configMAX_CO_ROUTINE_PRIORITIES ( 2 ) - -#define configUSE_COUNTING_SEMAPHORES 0 -#define configUSE_ALTERNATIVE_API 0 -#define configCHECK_FOR_STACK_OVERFLOW 2 -#define configUSE_RECURSIVE_MUTEXES 1 -#define configQUEUE_REGISTRY_SIZE 10 -#define configGENERATE_RUN_TIME_STATS 1 - -/* Set the following definitions to 1 to include the API function, or zero -to exclude the API function. */ - -#define INCLUDE_vTaskPrioritySet 1 -#define INCLUDE_uxTaskPriorityGet 1 -#define INCLUDE_vTaskDelete 1 -#define INCLUDE_vTaskCleanUpResources 0 -#define INCLUDE_vTaskSuspend 1 -#define INCLUDE_vTaskDelayUntil 1 -#define INCLUDE_vTaskDelay 1 -#define INCLUDE_uxTaskGetStackHighWaterMark 1 - -/* This demo makes use of one or more example stats formatting functions. These -format the raw data provided by the uxTaskGetSystemState() function in to human -readable ASCII form. See the notes in the implementation of vTaskList() within -FreeRTOS/Source/tasks.c for limitations. */ -#define configUSE_STATS_FORMATTING_FUNCTIONS 1 - -/*----------------------------------------------------------- - * Ethernet configuration. - *-----------------------------------------------------------*/ - -/* MAC address configuration. */ -#define configMAC_ADDR0 0x00 -#define configMAC_ADDR1 0x12 -#define configMAC_ADDR2 0x13 -#define configMAC_ADDR3 0x10 -#define configMAC_ADDR4 0x15 -#define configMAC_ADDR5 0x11 - -/* IP address configuration. */ -#define configIP_ADDR0 192 -#define configIP_ADDR1 168 -#define configIP_ADDR2 0 -#define configIP_ADDR3 201 - -/* Netmask configuration. */ -#define configNET_MASK0 255 -#define configNET_MASK1 255 -#define configNET_MASK2 255 -#define configNET_MASK3 0 - -/* Use the system definition, if there is one */ -#ifdef __NVIC_PRIO_BITS - #define configPRIO_BITS __NVIC_PRIO_BITS -#else - #define configPRIO_BITS 5 /* 32 priority levels */ -#endif - -/* The lowest priority. */ -#define configKERNEL_INTERRUPT_PRIORITY ( 31 << (8 - configPRIO_BITS) ) -/* Priority 5, or 160 as only the top three bits are implemented. */ -/* !!!! configMAX_SYSCALL_INTERRUPT_PRIORITY must not be set to zero !!!! -See http://www.FreeRTOS.org/RTOS-Cortex-M3-M4.html. */ -#define configMAX_SYSCALL_INTERRUPT_PRIORITY ( 5 << (8 - configPRIO_BITS) ) - -/* Priorities passed to NVIC_SetPriority() do not require shifting as the -function does the shifting itself. Note these priorities need to be equal to -or lower than configMAX_SYSCALL_INTERRUPT_PRIORITY - therefore the numeric -value needs to be equal to or greater than 5 (on the Cortex-M3 the lower the -numeric value the higher the interrupt priority). */ -#define configEMAC_INTERRUPT_PRIORITY 5 -#define configUSB_INTERRUPT_PRIORITY 6 - - - -/*----------------------------------------------------------- - * Macros required to setup the timer for the run time stats. - *-----------------------------------------------------------*/ -extern void vConfigureTimerForRunTimeStats( void ); -#define portCONFIGURE_TIMER_FOR_RUN_TIME_STATS() vConfigureTimerForRunTimeStats() -#define portGET_RUN_TIME_COUNTER_VALUE() LPC_TIM0->TC - - -#endif /* FREERTOS_CONFIG_H */ diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/LPC17xx.h b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/LPC17xx.h deleted file mode 100644 index 8c4050b3a..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/LPC17xx.h +++ /dev/null @@ -1,1035 +0,0 @@ -/**************************************************************************//** - * @file LPC17xx.h - * @brief CMSIS Cortex-M3 Core Peripheral Access Layer Header File for - * NXP LPC17xx Device Series - * @version: V1.09 - * @date: 17. March 2010 - - * - * @note - * Copyright (C) 2009 ARM Limited. All rights reserved. - * - * @par - * ARM Limited (ARM) is supplying this software for use with Cortex-M - * processor based microcontrollers. This file can be freely distributed - * within development tools that are supporting such ARM based processors. - * - * @par - * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED - * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. - * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR - * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. - * - ******************************************************************************/ - - -#ifndef __LPC17xx_H__ -#define __LPC17xx_H__ - -/* - * ========================================================================== - * ---------- Interrupt Number Definition ----------------------------------- - * ========================================================================== - */ - -typedef enum IRQn -{ -/****** Cortex-M3 Processor Exceptions Numbers ***************************************************/ - NonMaskableInt_IRQn = -14, /*!< 2 Non Maskable Interrupt */ - MemoryManagement_IRQn = -12, /*!< 4 Cortex-M3 Memory Management Interrupt */ - BusFault_IRQn = -11, /*!< 5 Cortex-M3 Bus Fault Interrupt */ - UsageFault_IRQn = -10, /*!< 6 Cortex-M3 Usage Fault Interrupt */ - SVCall_IRQn = -5, /*!< 11 Cortex-M3 SV Call Interrupt */ - DebugMonitor_IRQn = -4, /*!< 12 Cortex-M3 Debug Monitor Interrupt */ - PendSV_IRQn = -2, /*!< 14 Cortex-M3 Pend SV Interrupt */ - SysTick_IRQn = -1, /*!< 15 Cortex-M3 System Tick Interrupt */ - -/****** LPC17xx Specific Interrupt Numbers *******************************************************/ - WDT_IRQn = 0, /*!< Watchdog Timer Interrupt */ - TIMER0_IRQn = 1, /*!< Timer0 Interrupt */ - TIMER1_IRQn = 2, /*!< Timer1 Interrupt */ - TIMER2_IRQn = 3, /*!< Timer2 Interrupt */ - TIMER3_IRQn = 4, /*!< Timer3 Interrupt */ - UART0_IRQn = 5, /*!< UART0 Interrupt */ - UART1_IRQn = 6, /*!< UART1 Interrupt */ - UART2_IRQn = 7, /*!< UART2 Interrupt */ - UART3_IRQn = 8, /*!< UART3 Interrupt */ - PWM1_IRQn = 9, /*!< PWM1 Interrupt */ - I2C0_IRQn = 10, /*!< I2C0 Interrupt */ - I2C1_IRQn = 11, /*!< I2C1 Interrupt */ - I2C2_IRQn = 12, /*!< I2C2 Interrupt */ - SPI_IRQn = 13, /*!< SPI Interrupt */ - SSP0_IRQn = 14, /*!< SSP0 Interrupt */ - SSP1_IRQn = 15, /*!< SSP1 Interrupt */ - PLL0_IRQn = 16, /*!< PLL0 Lock (Main PLL) Interrupt */ - RTC_IRQn = 17, /*!< Real Time Clock Interrupt */ - EINT0_IRQn = 18, /*!< External Interrupt 0 Interrupt */ - EINT1_IRQn = 19, /*!< External Interrupt 1 Interrupt */ - EINT2_IRQn = 20, /*!< External Interrupt 2 Interrupt */ - EINT3_IRQn = 21, /*!< External Interrupt 3 Interrupt */ - ADC_IRQn = 22, /*!< A/D Converter Interrupt */ - BOD_IRQn = 23, /*!< Brown-Out Detect Interrupt */ - USB_IRQn = 24, /*!< USB Interrupt */ - CAN_IRQn = 25, /*!< CAN Interrupt */ - DMA_IRQn = 26, /*!< General Purpose DMA Interrupt */ - I2S_IRQn = 27, /*!< I2S Interrupt */ - ENET_IRQn = 28, /*!< Ethernet Interrupt */ - RIT_IRQn = 29, /*!< Repetitive Interrupt Timer Interrupt */ - MCPWM_IRQn = 30, /*!< Motor Control PWM Interrupt */ - QEI_IRQn = 31, /*!< Quadrature Encoder Interface Interrupt */ - PLL1_IRQn = 32, /*!< PLL1 Lock (USB PLL) Interrupt */ - USBActivity_IRQn = 33, /* USB Activity interrupt */ - CANActivity_IRQn = 34, /* CAN Activity interrupt */ -} IRQn_Type; - - -/* - * ========================================================================== - * ----------- Processor and Core Peripheral Section ------------------------ - * ========================================================================== - */ - -/* Configuration of the Cortex-M3 Processor and Core Peripherals */ -#define __MPU_PRESENT 1 /*!< MPU present or not */ -#define __NVIC_PRIO_BITS 5 /*!< Number of Bits used for Priority Levels */ -#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ - - -#include "core_cm3.h" /* Cortex-M3 processor and core peripherals */ -#include "system_LPC17xx.h" /* System Header */ - - -/******************************************************************************/ -/* Device Specific Peripheral registers structures */ -/******************************************************************************/ - -#if defined ( __CC_ARM ) -#pragma anon_unions -#endif - -/*------------- System Control (SC) ------------------------------------------*/ -typedef struct -{ - __IO uint32_t FLASHCFG; /* Flash Accelerator Module */ - uint32_t RESERVED0[31]; - __IO uint32_t PLL0CON; /* Clocking and Power Control */ - __IO uint32_t PLL0CFG; - __I uint32_t PLL0STAT; - __O uint32_t PLL0FEED; - uint32_t RESERVED1[4]; - __IO uint32_t PLL1CON; - __IO uint32_t PLL1CFG; - __I uint32_t PLL1STAT; - __O uint32_t PLL1FEED; - uint32_t RESERVED2[4]; - __IO uint32_t PCON; - __IO uint32_t PCONP; - uint32_t RESERVED3[15]; - __IO uint32_t CCLKCFG; - __IO uint32_t USBCLKCFG; - __IO uint32_t CLKSRCSEL; - __IO uint32_t CANSLEEPCLR; - __IO uint32_t CANWAKEFLAGS; - uint32_t RESERVED4[10]; - __IO uint32_t EXTINT; /* External Interrupts */ - uint32_t RESERVED5; - __IO uint32_t EXTMODE; - __IO uint32_t EXTPOLAR; - uint32_t RESERVED6[12]; - __IO uint32_t RSID; /* Reset */ - uint32_t RESERVED7[7]; - __IO uint32_t SCS; /* Syscon Miscellaneous Registers */ - __IO uint32_t IRCTRIM; /* Clock Dividers */ - __IO uint32_t PCLKSEL0; - __IO uint32_t PCLKSEL1; - uint32_t RESERVED8[4]; - __IO uint32_t USBIntSt; /* USB Device/OTG Interrupt Register */ - __IO uint32_t DMAREQSEL; - __IO uint32_t CLKOUTCFG; /* Clock Output Configuration */ - } LPC_SC_TypeDef; - -/*------------- Pin Connect Block (PINCON) -----------------------------------*/ -typedef struct -{ - __IO uint32_t PINSEL0; - __IO uint32_t PINSEL1; - __IO uint32_t PINSEL2; - __IO uint32_t PINSEL3; - __IO uint32_t PINSEL4; - __IO uint32_t PINSEL5; - __IO uint32_t PINSEL6; - __IO uint32_t PINSEL7; - __IO uint32_t PINSEL8; - __IO uint32_t PINSEL9; - __IO uint32_t PINSEL10; - uint32_t RESERVED0[5]; - __IO uint32_t PINMODE0; - __IO uint32_t PINMODE1; - __IO uint32_t PINMODE2; - __IO uint32_t PINMODE3; - __IO uint32_t PINMODE4; - __IO uint32_t PINMODE5; - __IO uint32_t PINMODE6; - __IO uint32_t PINMODE7; - __IO uint32_t PINMODE8; - __IO uint32_t PINMODE9; - __IO uint32_t PINMODE_OD0; - __IO uint32_t PINMODE_OD1; - __IO uint32_t PINMODE_OD2; - __IO uint32_t PINMODE_OD3; - __IO uint32_t PINMODE_OD4; - __IO uint32_t I2CPADCFG; -} LPC_PINCON_TypeDef; - -/*------------- General Purpose Input/Output (GPIO) --------------------------*/ -typedef struct -{ - union { - __IO uint32_t FIODIR; - struct { - __IO uint16_t FIODIRL; - __IO uint16_t FIODIRH; - }; - struct { - __IO uint8_t FIODIR0; - __IO uint8_t FIODIR1; - __IO uint8_t FIODIR2; - __IO uint8_t FIODIR3; - }; - }; - uint32_t RESERVED0[3]; - union { - __IO uint32_t FIOMASK; - struct { - __IO uint16_t FIOMASKL; - __IO uint16_t FIOMASKH; - }; - struct { - __IO uint8_t FIOMASK0; - __IO uint8_t FIOMASK1; - __IO uint8_t FIOMASK2; - __IO uint8_t FIOMASK3; - }; - }; - union { - __IO uint32_t FIOPIN; - struct { - __IO uint16_t FIOPINL; - __IO uint16_t FIOPINH; - }; - struct { - __IO uint8_t FIOPIN0; - __IO uint8_t FIOPIN1; - __IO uint8_t FIOPIN2; - __IO uint8_t FIOPIN3; - }; - }; - union { - __IO uint32_t FIOSET; - struct { - __IO uint16_t FIOSETL; - __IO uint16_t FIOSETH; - }; - struct { - __IO uint8_t FIOSET0; - __IO uint8_t FIOSET1; - __IO uint8_t FIOSET2; - __IO uint8_t FIOSET3; - }; - }; - union { - __O uint32_t FIOCLR; - struct { - __O uint16_t FIOCLRL; - __O uint16_t FIOCLRH; - }; - struct { - __O uint8_t FIOCLR0; - __O uint8_t FIOCLR1; - __O uint8_t FIOCLR2; - __O uint8_t FIOCLR3; - }; - }; -} LPC_GPIO_TypeDef; - -typedef struct -{ - __I uint32_t IntStatus; - __I uint32_t IO0IntStatR; - __I uint32_t IO0IntStatF; - __O uint32_t IO0IntClr; - __IO uint32_t IO0IntEnR; - __IO uint32_t IO0IntEnF; - uint32_t RESERVED0[3]; - __I uint32_t IO2IntStatR; - __I uint32_t IO2IntStatF; - __O uint32_t IO2IntClr; - __IO uint32_t IO2IntEnR; - __IO uint32_t IO2IntEnF; -} LPC_GPIOINT_TypeDef; - -/*------------- Timer (TIM) --------------------------------------------------*/ -typedef struct -{ - __IO uint32_t IR; - __IO uint32_t TCR; - __IO uint32_t TC; - __IO uint32_t PR; - __IO uint32_t PC; - __IO uint32_t MCR; - __IO uint32_t MR0; - __IO uint32_t MR1; - __IO uint32_t MR2; - __IO uint32_t MR3; - __IO uint32_t CCR; - __I uint32_t CR0; - __I uint32_t CR1; - uint32_t RESERVED0[2]; - __IO uint32_t EMR; - uint32_t RESERVED1[12]; - __IO uint32_t CTCR; -} LPC_TIM_TypeDef; - -/*------------- Pulse-Width Modulation (PWM) ---------------------------------*/ -typedef struct -{ - __IO uint32_t IR; - __IO uint32_t TCR; - __IO uint32_t TC; - __IO uint32_t PR; - __IO uint32_t PC; - __IO uint32_t MCR; - __IO uint32_t MR0; - __IO uint32_t MR1; - __IO uint32_t MR2; - __IO uint32_t MR3; - __IO uint32_t CCR; - __I uint32_t CR0; - __I uint32_t CR1; - __I uint32_t CR2; - __I uint32_t CR3; - uint32_t RESERVED0; - __IO uint32_t MR4; - __IO uint32_t MR5; - __IO uint32_t MR6; - __IO uint32_t PCR; - __IO uint32_t LER; - uint32_t RESERVED1[7]; - __IO uint32_t CTCR; -} LPC_PWM_TypeDef; - -/*------------- Universal Asynchronous Receiver Transmitter (UART) -----------*/ -typedef struct -{ - union { - __I uint8_t RBR; - __O uint8_t THR; - __IO uint8_t DLL; - uint32_t RESERVED0; - }; - union { - __IO uint8_t DLM; - __IO uint32_t IER; - }; - union { - __I uint32_t IIR; - __O uint8_t FCR; - }; - __IO uint8_t LCR; - uint8_t RESERVED1[7]; - __I uint8_t LSR; - uint8_t RESERVED2[7]; - __IO uint8_t SCR; - uint8_t RESERVED3[3]; - __IO uint32_t ACR; - __IO uint8_t ICR; - uint8_t RESERVED4[3]; - __IO uint8_t FDR; - uint8_t RESERVED5[7]; - __IO uint8_t TER; - uint8_t RESERVED6[39]; - __IO uint32_t FIFOLVL; -} LPC_UART_TypeDef; - -typedef struct -{ - union { - __I uint8_t RBR; - __O uint8_t THR; - __IO uint8_t DLL; - uint32_t RESERVED0; - }; - union { - __IO uint8_t DLM; - __IO uint32_t IER; - }; - union { - __I uint32_t IIR; - __O uint8_t FCR; - }; - __IO uint8_t LCR; - uint8_t RESERVED1[7]; - __I uint8_t LSR; - uint8_t RESERVED2[7]; - __IO uint8_t SCR; - uint8_t RESERVED3[3]; - __IO uint32_t ACR; - __IO uint8_t ICR; - uint8_t RESERVED4[3]; - __IO uint8_t FDR; - uint8_t RESERVED5[7]; - __IO uint8_t TER; - uint8_t RESERVED6[39]; - __IO uint32_t FIFOLVL; -} LPC_UART0_TypeDef; - -typedef struct -{ - union { - __I uint8_t RBR; - __O uint8_t THR; - __IO uint8_t DLL; - uint32_t RESERVED0; - }; - union { - __IO uint8_t DLM; - __IO uint32_t IER; - }; - union { - __I uint32_t IIR; - __O uint8_t FCR; - }; - __IO uint8_t LCR; - uint8_t RESERVED1[3]; - __IO uint8_t MCR; - uint8_t RESERVED2[3]; - __I uint8_t LSR; - uint8_t RESERVED3[3]; - __I uint8_t MSR; - uint8_t RESERVED4[3]; - __IO uint8_t SCR; - uint8_t RESERVED5[3]; - __IO uint32_t ACR; - uint32_t RESERVED6; - __IO uint32_t FDR; - uint32_t RESERVED7; - __IO uint8_t TER; - uint8_t RESERVED8[27]; - __IO uint8_t RS485CTRL; - uint8_t RESERVED9[3]; - __IO uint8_t ADRMATCH; - uint8_t RESERVED10[3]; - __IO uint8_t RS485DLY; - uint8_t RESERVED11[3]; - __IO uint32_t FIFOLVL; -} LPC_UART1_TypeDef; - -/*------------- Serial Peripheral Interface (SPI) ----------------------------*/ -typedef struct -{ - __IO uint32_t SPCR; - __I uint32_t SPSR; - __IO uint32_t SPDR; - __IO uint32_t SPCCR; - uint32_t RESERVED0[3]; - __IO uint32_t SPINT; -} LPC_SPI_TypeDef; - -/*------------- Synchronous Serial Communication (SSP) -----------------------*/ -typedef struct -{ - __IO uint32_t CR0; - __IO uint32_t CR1; - __IO uint32_t DR; - __I uint32_t SR; - __IO uint32_t CPSR; - __IO uint32_t IMSC; - __IO uint32_t RIS; - __IO uint32_t MIS; - __IO uint32_t ICR; - __IO uint32_t DMACR; -} LPC_SSP_TypeDef; - -/*------------- Inter-Integrated Circuit (I2C) -------------------------------*/ -typedef struct -{ - __IO uint32_t I2CONSET; - __I uint32_t I2STAT; - __IO uint32_t I2DAT; - __IO uint32_t I2ADR0; - __IO uint32_t I2SCLH; - __IO uint32_t I2SCLL; - __O uint32_t I2CONCLR; - __IO uint32_t MMCTRL; - __IO uint32_t I2ADR1; - __IO uint32_t I2ADR2; - __IO uint32_t I2ADR3; - __I uint32_t I2DATA_BUFFER; - __IO uint32_t I2MASK0; - __IO uint32_t I2MASK1; - __IO uint32_t I2MASK2; - __IO uint32_t I2MASK3; -} LPC_I2C_TypeDef; - -/*------------- Inter IC Sound (I2S) -----------------------------------------*/ -typedef struct -{ - __IO uint32_t I2SDAO; - __IO uint32_t I2SDAI; - __O uint32_t I2STXFIFO; - __I uint32_t I2SRXFIFO; - __I uint32_t I2SSTATE; - __IO uint32_t I2SDMA1; - __IO uint32_t I2SDMA2; - __IO uint32_t I2SIRQ; - __IO uint32_t I2STXRATE; - __IO uint32_t I2SRXRATE; - __IO uint32_t I2STXBITRATE; - __IO uint32_t I2SRXBITRATE; - __IO uint32_t I2STXMODE; - __IO uint32_t I2SRXMODE; -} LPC_I2S_TypeDef; - -/*------------- Repetitive Interrupt Timer (RIT) -----------------------------*/ -typedef struct -{ - __IO uint32_t RICOMPVAL; - __IO uint32_t RIMASK; - __IO uint8_t RICTRL; - uint8_t RESERVED0[3]; - __IO uint32_t RICOUNTER; -} LPC_RIT_TypeDef; - -/*------------- Real-Time Clock (RTC) ----------------------------------------*/ -typedef struct -{ - __IO uint8_t ILR; - uint8_t RESERVED0[7]; - __IO uint8_t CCR; - uint8_t RESERVED1[3]; - __IO uint8_t CIIR; - uint8_t RESERVED2[3]; - __IO uint8_t AMR; - uint8_t RESERVED3[3]; - __I uint32_t CTIME0; - __I uint32_t CTIME1; - __I uint32_t CTIME2; - __IO uint8_t SEC; - uint8_t RESERVED4[3]; - __IO uint8_t MIN; - uint8_t RESERVED5[3]; - __IO uint8_t HOUR; - uint8_t RESERVED6[3]; - __IO uint8_t DOM; - uint8_t RESERVED7[3]; - __IO uint8_t DOW; - uint8_t RESERVED8[3]; - __IO uint16_t DOY; - uint16_t RESERVED9; - __IO uint8_t MONTH; - uint8_t RESERVED10[3]; - __IO uint16_t YEAR; - uint16_t RESERVED11; - __IO uint32_t CALIBRATION; - __IO uint32_t GPREG0; - __IO uint32_t GPREG1; - __IO uint32_t GPREG2; - __IO uint32_t GPREG3; - __IO uint32_t GPREG4; - __IO uint8_t RTC_AUXEN; - uint8_t RESERVED12[3]; - __IO uint8_t RTC_AUX; - uint8_t RESERVED13[3]; - __IO uint8_t ALSEC; - uint8_t RESERVED14[3]; - __IO uint8_t ALMIN; - uint8_t RESERVED15[3]; - __IO uint8_t ALHOUR; - uint8_t RESERVED16[3]; - __IO uint8_t ALDOM; - uint8_t RESERVED17[3]; - __IO uint8_t ALDOW; - uint8_t RESERVED18[3]; - __IO uint16_t ALDOY; - uint16_t RESERVED19; - __IO uint8_t ALMON; - uint8_t RESERVED20[3]; - __IO uint16_t ALYEAR; - uint16_t RESERVED21; -} LPC_RTC_TypeDef; - -/*------------- Watchdog Timer (WDT) -----------------------------------------*/ -typedef struct -{ - __IO uint8_t WDMOD; - uint8_t RESERVED0[3]; - __IO uint32_t WDTC; - __O uint8_t WDFEED; - uint8_t RESERVED1[3]; - __I uint32_t WDTV; - __IO uint32_t WDCLKSEL; -} LPC_WDT_TypeDef; - -/*------------- Analog-to-Digital Converter (ADC) ----------------------------*/ -typedef struct -{ - __IO uint32_t ADCR; - __IO uint32_t ADGDR; - uint32_t RESERVED0; - __IO uint32_t ADINTEN; - __I uint32_t ADDR0; - __I uint32_t ADDR1; - __I uint32_t ADDR2; - __I uint32_t ADDR3; - __I uint32_t ADDR4; - __I uint32_t ADDR5; - __I uint32_t ADDR6; - __I uint32_t ADDR7; - __I uint32_t ADSTAT; - __IO uint32_t ADTRM; -} LPC_ADC_TypeDef; - -/*------------- Digital-to-Analog Converter (DAC) ----------------------------*/ -typedef struct -{ - __IO uint32_t DACR; - __IO uint32_t DACCTRL; - __IO uint16_t DACCNTVAL; -} LPC_DAC_TypeDef; - -/*------------- Motor Control Pulse-Width Modulation (MCPWM) -----------------*/ -typedef struct -{ - __I uint32_t MCCON; - __O uint32_t MCCON_SET; - __O uint32_t MCCON_CLR; - __I uint32_t MCCAPCON; - __O uint32_t MCCAPCON_SET; - __O uint32_t MCCAPCON_CLR; - __IO uint32_t MCTIM0; - __IO uint32_t MCTIM1; - __IO uint32_t MCTIM2; - __IO uint32_t MCPER0; - __IO uint32_t MCPER1; - __IO uint32_t MCPER2; - __IO uint32_t MCPW0; - __IO uint32_t MCPW1; - __IO uint32_t MCPW2; - __IO uint32_t MCDEADTIME; - __IO uint32_t MCCCP; - __IO uint32_t MCCR0; - __IO uint32_t MCCR1; - __IO uint32_t MCCR2; - __I uint32_t MCINTEN; - __O uint32_t MCINTEN_SET; - __O uint32_t MCINTEN_CLR; - __I uint32_t MCCNTCON; - __O uint32_t MCCNTCON_SET; - __O uint32_t MCCNTCON_CLR; - __I uint32_t MCINTFLAG; - __O uint32_t MCINTFLAG_SET; - __O uint32_t MCINTFLAG_CLR; - __O uint32_t MCCAP_CLR; -} LPC_MCPWM_TypeDef; - -/*------------- Quadrature Encoder Interface (QEI) ---------------------------*/ -typedef struct -{ - __O uint32_t QEICON; - __I uint32_t QEISTAT; - __IO uint32_t QEICONF; - __I uint32_t QEIPOS; - __IO uint32_t QEIMAXPOS; - __IO uint32_t CMPOS0; - __IO uint32_t CMPOS1; - __IO uint32_t CMPOS2; - __I uint32_t INXCNT; - __IO uint32_t INXCMP; - __IO uint32_t QEILOAD; - __I uint32_t QEITIME; - __I uint32_t QEIVEL; - __I uint32_t QEICAP; - __IO uint32_t VELCOMP; - __IO uint32_t FILTER; - uint32_t RESERVED0[998]; - __O uint32_t QEIIEC; - __O uint32_t QEIIES; - __I uint32_t QEIINTSTAT; - __I uint32_t QEIIE; - __O uint32_t QEICLR; - __O uint32_t QEISET; -} LPC_QEI_TypeDef; - -/*------------- Controller Area Network (CAN) --------------------------------*/ -typedef struct -{ - __IO uint32_t mask[512]; /* ID Masks */ -} LPC_CANAF_RAM_TypeDef; - -typedef struct /* Acceptance Filter Registers */ -{ - __IO uint32_t AFMR; - __IO uint32_t SFF_sa; - __IO uint32_t SFF_GRP_sa; - __IO uint32_t EFF_sa; - __IO uint32_t EFF_GRP_sa; - __IO uint32_t ENDofTable; - __I uint32_t LUTerrAd; - __I uint32_t LUTerr; - __IO uint32_t FCANIE; - __IO uint32_t FCANIC0; - __IO uint32_t FCANIC1; -} LPC_CANAF_TypeDef; - -typedef struct /* Central Registers */ -{ - __I uint32_t CANTxSR; - __I uint32_t CANRxSR; - __I uint32_t CANMSR; -} LPC_CANCR_TypeDef; - -typedef struct /* Controller Registers */ -{ - __IO uint32_t MOD; - __O uint32_t CMR; - __IO uint32_t GSR; - __I uint32_t ICR; - __IO uint32_t IER; - __IO uint32_t BTR; - __IO uint32_t EWL; - __I uint32_t SR; - __IO uint32_t RFS; - __IO uint32_t RID; - __IO uint32_t RDA; - __IO uint32_t RDB; - __IO uint32_t TFI1; - __IO uint32_t TID1; - __IO uint32_t TDA1; - __IO uint32_t TDB1; - __IO uint32_t TFI2; - __IO uint32_t TID2; - __IO uint32_t TDA2; - __IO uint32_t TDB2; - __IO uint32_t TFI3; - __IO uint32_t TID3; - __IO uint32_t TDA3; - __IO uint32_t TDB3; -} LPC_CAN_TypeDef; - -/*------------- General Purpose Direct Memory Access (GPDMA) -----------------*/ -typedef struct /* Common Registers */ -{ - __I uint32_t DMACIntStat; - __I uint32_t DMACIntTCStat; - __O uint32_t DMACIntTCClear; - __I uint32_t DMACIntErrStat; - __O uint32_t DMACIntErrClr; - __I uint32_t DMACRawIntTCStat; - __I uint32_t DMACRawIntErrStat; - __I uint32_t DMACEnbldChns; - __IO uint32_t DMACSoftBReq; - __IO uint32_t DMACSoftSReq; - __IO uint32_t DMACSoftLBReq; - __IO uint32_t DMACSoftLSReq; - __IO uint32_t DMACConfig; - __IO uint32_t DMACSync; -} LPC_GPDMA_TypeDef; - -typedef struct /* Channel Registers */ -{ - __IO uint32_t DMACCSrcAddr; - __IO uint32_t DMACCDestAddr; - __IO uint32_t DMACCLLI; - __IO uint32_t DMACCControl; - __IO uint32_t DMACCConfig; -} LPC_GPDMACH_TypeDef; - -/*------------- Universal Serial Bus (USB) -----------------------------------*/ -typedef struct -{ - __I uint32_t HcRevision; /* USB Host Registers */ - __IO uint32_t HcControl; - __IO uint32_t HcCommandStatus; - __IO uint32_t HcInterruptStatus; - __IO uint32_t HcInterruptEnable; - __IO uint32_t HcInterruptDisable; - __IO uint32_t HcHCCA; - __I uint32_t HcPeriodCurrentED; - __IO uint32_t HcControlHeadED; - __IO uint32_t HcControlCurrentED; - __IO uint32_t HcBulkHeadED; - __IO uint32_t HcBulkCurrentED; - __I uint32_t HcDoneHead; - __IO uint32_t HcFmInterval; - __I uint32_t HcFmRemaining; - __I uint32_t HcFmNumber; - __IO uint32_t HcPeriodicStart; - __IO uint32_t HcLSTreshold; - __IO uint32_t HcRhDescriptorA; - __IO uint32_t HcRhDescriptorB; - __IO uint32_t HcRhStatus; - __IO uint32_t HcRhPortStatus1; - __IO uint32_t HcRhPortStatus2; - uint32_t RESERVED0[40]; - __I uint32_t Module_ID; - - __I uint32_t OTGIntSt; /* USB On-The-Go Registers */ - __IO uint32_t OTGIntEn; - __O uint32_t OTGIntSet; - __O uint32_t OTGIntClr; - __IO uint32_t OTGStCtrl; - __IO uint32_t OTGTmr; - uint32_t RESERVED1[58]; - - __I uint32_t USBDevIntSt; /* USB Device Interrupt Registers */ - __IO uint32_t USBDevIntEn; - __O uint32_t USBDevIntClr; - __O uint32_t USBDevIntSet; - - __O uint32_t USBCmdCode; /* USB Device SIE Command Registers */ - __I uint32_t USBCmdData; - - __I uint32_t USBRxData; /* USB Device Transfer Registers */ - __O uint32_t USBTxData; - __I uint32_t USBRxPLen; - __O uint32_t USBTxPLen; - __IO uint32_t USBCtrl; - __O uint32_t USBDevIntPri; - - __I uint32_t USBEpIntSt; /* USB Device Endpoint Interrupt Regs */ - __IO uint32_t USBEpIntEn; - __O uint32_t USBEpIntClr; - __O uint32_t USBEpIntSet; - __O uint32_t USBEpIntPri; - - __IO uint32_t USBReEp; /* USB Device Endpoint Realization Reg*/ - __O uint32_t USBEpInd; - __IO uint32_t USBMaxPSize; - - __I uint32_t USBDMARSt; /* USB Device DMA Registers */ - __O uint32_t USBDMARClr; - __O uint32_t USBDMARSet; - uint32_t RESERVED2[9]; - __IO uint32_t USBUDCAH; - __I uint32_t USBEpDMASt; - __O uint32_t USBEpDMAEn; - __O uint32_t USBEpDMADis; - __I uint32_t USBDMAIntSt; - __IO uint32_t USBDMAIntEn; - uint32_t RESERVED3[2]; - __I uint32_t USBEoTIntSt; - __O uint32_t USBEoTIntClr; - __O uint32_t USBEoTIntSet; - __I uint32_t USBNDDRIntSt; - __O uint32_t USBNDDRIntClr; - __O uint32_t USBNDDRIntSet; - __I uint32_t USBSysErrIntSt; - __O uint32_t USBSysErrIntClr; - __O uint32_t USBSysErrIntSet; - uint32_t RESERVED4[15]; - - union { - __I uint32_t I2C_RX; /* USB OTG I2C Registers */ - __O uint32_t I2C_TX; - }; - __I uint32_t I2C_STS; - __IO uint32_t I2C_CTL; - __IO uint32_t I2C_CLKHI; - __O uint32_t I2C_CLKLO; - uint32_t RESERVED5[824]; - - union { - __IO uint32_t USBClkCtrl; /* USB Clock Control Registers */ - __IO uint32_t OTGClkCtrl; - }; - union { - __I uint32_t USBClkSt; - __I uint32_t OTGClkSt; - }; -} LPC_USB_TypeDef; - -/*------------- Ethernet Media Access Controller (EMAC) ----------------------*/ -typedef struct -{ - __IO uint32_t MAC1; /* MAC Registers */ - __IO uint32_t MAC2; - __IO uint32_t IPGT; - __IO uint32_t IPGR; - __IO uint32_t CLRT; - __IO uint32_t MAXF; - __IO uint32_t SUPP; - __IO uint32_t TEST; - __IO uint32_t MCFG; - __IO uint32_t MCMD; - __IO uint32_t MADR; - __O uint32_t MWTD; - __I uint32_t MRDD; - __I uint32_t MIND; - uint32_t RESERVED0[2]; - __IO uint32_t SA0; - __IO uint32_t SA1; - __IO uint32_t SA2; - uint32_t RESERVED1[45]; - __IO uint32_t Command; /* Control Registers */ - __I uint32_t Status; - __IO uint32_t RxDescriptor; - __IO uint32_t RxStatus; - __IO uint32_t RxDescriptorNumber; - __I uint32_t RxProduceIndex; - __IO uint32_t RxConsumeIndex; - __IO uint32_t TxDescriptor; - __IO uint32_t TxStatus; - __IO uint32_t TxDescriptorNumber; - __IO uint32_t TxProduceIndex; - __I uint32_t TxConsumeIndex; - uint32_t RESERVED2[10]; - __I uint32_t TSV0; - __I uint32_t TSV1; - __I uint32_t RSV; - uint32_t RESERVED3[3]; - __IO uint32_t FlowControlCounter; - __I uint32_t FlowControlStatus; - uint32_t RESERVED4[34]; - __IO uint32_t RxFilterCtrl; /* Rx Filter Registers */ - __IO uint32_t RxFilterWoLStatus; - __IO uint32_t RxFilterWoLClear; - uint32_t RESERVED5; - __IO uint32_t HashFilterL; - __IO uint32_t HashFilterH; - uint32_t RESERVED6[882]; - __I uint32_t IntStatus; /* Module Control Registers */ - __IO uint32_t IntEnable; - __O uint32_t IntClear; - __O uint32_t IntSet; - uint32_t RESERVED7; - __IO uint32_t PowerDown; - uint32_t RESERVED8; - __IO uint32_t Module_ID; -} LPC_EMAC_TypeDef; - -#if defined ( __CC_ARM ) -#pragma no_anon_unions -#endif - - -/******************************************************************************/ -/* Peripheral memory map */ -/******************************************************************************/ -/* Base addresses */ -#define LPC_FLASH_BASE (0x00000000UL) -#define LPC_RAM_BASE (0x10000000UL) -#define LPC_GPIO_BASE (0x2009C000UL) -#define LPC_APB0_BASE (0x40000000UL) -#define LPC_APB1_BASE (0x40080000UL) -#define LPC_AHB_BASE (0x50000000UL) -#define LPC_CM3_BASE (0xE0000000UL) - -/* APB0 peripherals */ -#define LPC_WDT_BASE (LPC_APB0_BASE + 0x00000) -#define LPC_TIM0_BASE (LPC_APB0_BASE + 0x04000) -#define LPC_TIM1_BASE (LPC_APB0_BASE + 0x08000) -#define LPC_UART0_BASE (LPC_APB0_BASE + 0x0C000) -#define LPC_UART1_BASE (LPC_APB0_BASE + 0x10000) -#define LPC_PWM1_BASE (LPC_APB0_BASE + 0x18000) -#define LPC_I2C0_BASE (LPC_APB0_BASE + 0x1C000) -#define LPC_SPI_BASE (LPC_APB0_BASE + 0x20000) -#define LPC_RTC_BASE (LPC_APB0_BASE + 0x24000) -#define LPC_GPIOINT_BASE (LPC_APB0_BASE + 0x28080) -#define LPC_PINCON_BASE (LPC_APB0_BASE + 0x2C000) -#define LPC_SSP1_BASE (LPC_APB0_BASE + 0x30000) -#define LPC_ADC_BASE (LPC_APB0_BASE + 0x34000) -#define LPC_CANAF_RAM_BASE (LPC_APB0_BASE + 0x38000) -#define LPC_CANAF_BASE (LPC_APB0_BASE + 0x3C000) -#define LPC_CANCR_BASE (LPC_APB0_BASE + 0x40000) -#define LPC_CAN1_BASE (LPC_APB0_BASE + 0x44000) -#define LPC_CAN2_BASE (LPC_APB0_BASE + 0x48000) -#define LPC_I2C1_BASE (LPC_APB0_BASE + 0x5C000) - -/* APB1 peripherals */ -#define LPC_SSP0_BASE (LPC_APB1_BASE + 0x08000) -#define LPC_DAC_BASE (LPC_APB1_BASE + 0x0C000) -#define LPC_TIM2_BASE (LPC_APB1_BASE + 0x10000) -#define LPC_TIM3_BASE (LPC_APB1_BASE + 0x14000) -#define LPC_UART2_BASE (LPC_APB1_BASE + 0x18000) -#define LPC_UART3_BASE (LPC_APB1_BASE + 0x1C000) -#define LPC_I2C2_BASE (LPC_APB1_BASE + 0x20000) -#define LPC_I2S_BASE (LPC_APB1_BASE + 0x28000) -#define LPC_RIT_BASE (LPC_APB1_BASE + 0x30000) -#define LPC_MCPWM_BASE (LPC_APB1_BASE + 0x38000) -#define LPC_QEI_BASE (LPC_APB1_BASE + 0x3C000) -#define LPC_SC_BASE (LPC_APB1_BASE + 0x7C000) - -/* AHB peripherals */ -#define LPC_EMAC_BASE (LPC_AHB_BASE + 0x00000) -#define LPC_GPDMA_BASE (LPC_AHB_BASE + 0x04000) -#define LPC_GPDMACH0_BASE (LPC_AHB_BASE + 0x04100) -#define LPC_GPDMACH1_BASE (LPC_AHB_BASE + 0x04120) -#define LPC_GPDMACH2_BASE (LPC_AHB_BASE + 0x04140) -#define LPC_GPDMACH3_BASE (LPC_AHB_BASE + 0x04160) -#define LPC_GPDMACH4_BASE (LPC_AHB_BASE + 0x04180) -#define LPC_GPDMACH5_BASE (LPC_AHB_BASE + 0x041A0) -#define LPC_GPDMACH6_BASE (LPC_AHB_BASE + 0x041C0) -#define LPC_GPDMACH7_BASE (LPC_AHB_BASE + 0x041E0) -#define LPC_USB_BASE (LPC_AHB_BASE + 0x0C000) - -/* GPIOs */ -#define LPC_GPIO0_BASE (LPC_GPIO_BASE + 0x00000) -#define LPC_GPIO1_BASE (LPC_GPIO_BASE + 0x00020) -#define LPC_GPIO2_BASE (LPC_GPIO_BASE + 0x00040) -#define LPC_GPIO3_BASE (LPC_GPIO_BASE + 0x00060) -#define LPC_GPIO4_BASE (LPC_GPIO_BASE + 0x00080) - - -/******************************************************************************/ -/* Peripheral declaration */ -/******************************************************************************/ -#define LPC_SC ((LPC_SC_TypeDef *) LPC_SC_BASE ) -#define LPC_GPIO0 ((LPC_GPIO_TypeDef *) LPC_GPIO0_BASE ) -#define LPC_GPIO1 ((LPC_GPIO_TypeDef *) LPC_GPIO1_BASE ) -#define LPC_GPIO2 ((LPC_GPIO_TypeDef *) LPC_GPIO2_BASE ) -#define LPC_GPIO3 ((LPC_GPIO_TypeDef *) LPC_GPIO3_BASE ) -#define LPC_GPIO4 ((LPC_GPIO_TypeDef *) LPC_GPIO4_BASE ) -#define LPC_WDT ((LPC_WDT_TypeDef *) LPC_WDT_BASE ) -#define LPC_TIM0 ((LPC_TIM_TypeDef *) LPC_TIM0_BASE ) -#define LPC_TIM1 ((LPC_TIM_TypeDef *) LPC_TIM1_BASE ) -#define LPC_TIM2 ((LPC_TIM_TypeDef *) LPC_TIM2_BASE ) -#define LPC_TIM3 ((LPC_TIM_TypeDef *) LPC_TIM3_BASE ) -#define LPC_RIT ((LPC_RIT_TypeDef *) LPC_RIT_BASE ) -#define LPC_UART0 ((LPC_UART0_TypeDef *) LPC_UART0_BASE ) -#define LPC_UART1 ((LPC_UART1_TypeDef *) LPC_UART1_BASE ) -#define LPC_UART2 ((LPC_UART_TypeDef *) LPC_UART2_BASE ) -#define LPC_UART3 ((LPC_UART_TypeDef *) LPC_UART3_BASE ) -#define LPC_PWM1 ((LPC_PWM_TypeDef *) LPC_PWM1_BASE ) -#define LPC_I2C0 ((LPC_I2C_TypeDef *) LPC_I2C0_BASE ) -#define LPC_I2C1 ((LPC_I2C_TypeDef *) LPC_I2C1_BASE ) -#define LPC_I2C2 ((LPC_I2C_TypeDef *) LPC_I2C2_BASE ) -#define LPC_I2S ((LPC_I2S_TypeDef *) LPC_I2S_BASE ) -#define LPC_SPI ((LPC_SPI_TypeDef *) LPC_SPI_BASE ) -#define LPC_RTC ((LPC_RTC_TypeDef *) LPC_RTC_BASE ) -#define LPC_GPIOINT ((LPC_GPIOINT_TypeDef *) LPC_GPIOINT_BASE ) -#define LPC_PINCON ((LPC_PINCON_TypeDef *) LPC_PINCON_BASE ) -#define LPC_SSP0 ((LPC_SSP_TypeDef *) LPC_SSP0_BASE ) -#define LPC_SSP1 ((LPC_SSP_TypeDef *) LPC_SSP1_BASE ) -#define LPC_ADC ((LPC_ADC_TypeDef *) LPC_ADC_BASE ) -#define LPC_DAC ((LPC_DAC_TypeDef *) LPC_DAC_BASE ) -#define LPC_CANAF_RAM ((LPC_CANAF_RAM_TypeDef *) LPC_CANAF_RAM_BASE) -#define LPC_CANAF ((LPC_CANAF_TypeDef *) LPC_CANAF_BASE ) -#define LPC_CANCR ((LPC_CANCR_TypeDef *) LPC_CANCR_BASE ) -#define LPC_CAN1 ((LPC_CAN_TypeDef *) LPC_CAN1_BASE ) -#define LPC_CAN2 ((LPC_CAN_TypeDef *) LPC_CAN2_BASE ) -#define LPC_MCPWM ((LPC_MCPWM_TypeDef *) LPC_MCPWM_BASE ) -#define LPC_QEI ((LPC_QEI_TypeDef *) LPC_QEI_BASE ) -#define LPC_EMAC ((LPC_EMAC_TypeDef *) LPC_EMAC_BASE ) -#define LPC_GPDMA ((LPC_GPDMA_TypeDef *) LPC_GPDMA_BASE ) -#define LPC_GPDMACH0 ((LPC_GPDMACH_TypeDef *) LPC_GPDMACH0_BASE ) -#define LPC_GPDMACH1 ((LPC_GPDMACH_TypeDef *) LPC_GPDMACH1_BASE ) -#define LPC_GPDMACH2 ((LPC_GPDMACH_TypeDef *) LPC_GPDMACH2_BASE ) -#define LPC_GPDMACH3 ((LPC_GPDMACH_TypeDef *) LPC_GPDMACH3_BASE ) -#define LPC_GPDMACH4 ((LPC_GPDMACH_TypeDef *) LPC_GPDMACH4_BASE ) -#define LPC_GPDMACH5 ((LPC_GPDMACH_TypeDef *) LPC_GPDMACH5_BASE ) -#define LPC_GPDMACH6 ((LPC_GPDMACH_TypeDef *) LPC_GPDMACH6_BASE ) -#define LPC_GPDMACH7 ((LPC_GPDMACH_TypeDef *) LPC_GPDMACH7_BASE ) -#define LPC_USB ((LPC_USB_TypeDef *) LPC_USB_BASE ) - -#endif // __LPC17xx_H__ diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/LPCUSB/USB_CDC.c b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/LPCUSB/USB_CDC.c deleted file mode 100644 index c88ff9a48..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/LPCUSB/USB_CDC.c +++ /dev/null @@ -1,460 +0,0 @@ -/* - LPCUSB, an USB device driver for LPC microcontrollers - Copyright (C) 2006 Bertrik Sikken (bertrik@sikken.nl) - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - 3. The name of the author may not be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -/* - Minimal implementation of a USB serial port, using the CDC class. - This example application simply echoes everything it receives right back - to the host. - - Windows: - Extract the usbser.sys file from .cab file in C:\WINDOWS\Driver Cache\i386 - and store it somewhere (C:\temp is a good place) along with the usbser.inf - file. Then plug in the LPC176x and direct windows to the usbser driver. - Windows then creates an extra COMx port that you can open in a terminal - program, like hyperterminal. [Note for FreeRTOS users - the required .inf - file is included in the project directory.] - - Linux: - The device should be recognised automatically by the cdc_acm driver, - which creates a /dev/ttyACMx device file that acts just like a regular - serial port. - -*/ - -#include "FreeRTOS.h" -#include "task.h" -#include "queue.h" - -#include -#include - -#include "usbapi.h" -#include "usbdebug.h" -#include "usbstruct.h" - -#include "LPC17xx.h" - -#define usbMAX_SEND_BLOCK ( 20 / portTICK_PERIOD_MS ) -#define usbBUFFER_LEN ( 20 ) - -#define INCREMENT_ECHO_BY 1 -#define BAUD_RATE 115200 - -#define INT_IN_EP 0x81 -#define BULK_OUT_EP 0x05 -#define BULK_IN_EP 0x82 - -#define MAX_PACKET_SIZE 64 - -#define LE_WORD(x) ((x)&0xFF),((x)>>8) - -// CDC definitions -#define CS_INTERFACE 0x24 -#define CS_ENDPOINT 0x25 - -#define SET_LINE_CODING 0x20 -#define GET_LINE_CODING 0x21 -#define SET_CONTROL_LINE_STATE 0x22 - -// data structure for GET_LINE_CODING / SET_LINE_CODING class requests -typedef struct { - unsigned long dwDTERate; - unsigned char bCharFormat; - unsigned char bParityType; - unsigned char bDataBits; -} TLineCoding; - -static TLineCoding LineCoding = {115200, 0, 0, 8}; -static unsigned char abBulkBuf[64]; -static unsigned char abClassReqData[8]; - -static QueueHandle_t xRxedChars = NULL, xCharsForTx = NULL; - -// forward declaration of interrupt handler -void USBIntHandler(void); - -static const unsigned char abDescriptors[] = { - -// device descriptor - 0x12, - DESC_DEVICE, - LE_WORD(0x0101), // bcdUSB - 0x02, // bDeviceClass - 0x00, // bDeviceSubClass - 0x00, // bDeviceProtocol - MAX_PACKET_SIZE0, // bMaxPacketSize - LE_WORD(0xFFFF), // idVendor - LE_WORD(0x0005), // idProduct - LE_WORD(0x0100), // bcdDevice - 0x01, // iManufacturer - 0x02, // iProduct - 0x03, // iSerialNumber - 0x01, // bNumConfigurations - -// configuration descriptor - 0x09, - DESC_CONFIGURATION, - LE_WORD(67), // wTotalLength - 0x02, // bNumInterfaces - 0x01, // bConfigurationValue - 0x00, // iConfiguration - 0xC0, // bmAttributes - 0x32, // bMaxPower -// control class interface - 0x09, - DESC_INTERFACE, - 0x00, // bInterfaceNumber - 0x00, // bAlternateSetting - 0x01, // bNumEndPoints - 0x02, // bInterfaceClass - 0x02, // bInterfaceSubClass - 0x01, // bInterfaceProtocol, linux requires value of 1 for the cdc_acm module - 0x00, // iInterface -// header functional descriptor - 0x05, - CS_INTERFACE, - 0x00, - LE_WORD(0x0110), -// call management functional descriptor - 0x05, - CS_INTERFACE, - 0x01, - 0x01, // bmCapabilities = device handles call management - 0x01, // bDataInterface -// ACM functional descriptor - 0x04, - CS_INTERFACE, - 0x02, - 0x02, // bmCapabilities -// union functional descriptor - 0x05, - CS_INTERFACE, - 0x06, - 0x00, // bMasterInterface - 0x01, // bSlaveInterface0 -// notification EP - 0x07, - DESC_ENDPOINT, - INT_IN_EP, // bEndpointAddress - 0x03, // bmAttributes = intr - LE_WORD(8), // wMaxPacketSize - 0x0A, // bInterval -// data class interface descriptor - 0x09, - DESC_INTERFACE, - 0x01, // bInterfaceNumber - 0x00, // bAlternateSetting - 0x02, // bNumEndPoints - 0x0A, // bInterfaceClass = data - 0x00, // bInterfaceSubClass - 0x00, // bInterfaceProtocol - 0x00, // iInterface -// data EP OUT - 0x07, - DESC_ENDPOINT, - BULK_OUT_EP, // bEndpointAddress - 0x02, // bmAttributes = bulk - LE_WORD(MAX_PACKET_SIZE), // wMaxPacketSize - 0x00, // bInterval -// data EP in - 0x07, - DESC_ENDPOINT, - BULK_IN_EP, // bEndpointAddress - 0x02, // bmAttributes = bulk - LE_WORD(MAX_PACKET_SIZE), // wMaxPacketSize - 0x00, // bInterval - - // string descriptors - 0x04, - DESC_STRING, - LE_WORD(0x0409), - - 0x0E, - DESC_STRING, - 'L', 0, 'P', 0, 'C', 0, 'U', 0, 'S', 0, 'B', 0, - - 0x14, - DESC_STRING, - 'U', 0, 'S', 0, 'B', 0, 'S', 0, 'e', 0, 'r', 0, 'i', 0, 'a', 0, 'l', 0, - - 0x12, - DESC_STRING, - 'D', 0, 'E', 0, 'A', 0, 'D', 0, 'C', 0, '0', 0, 'D', 0, 'E', 0, - -// terminating zero - 0 -}; - - -/** - Local function to handle incoming bulk data - - @param [in] bEP - @param [in] bEPStatus - */ -static void BulkOut(unsigned char bEP, unsigned char bEPStatus) -{ - int i, iLen; - long lHigherPriorityTaskWoken = pdFALSE; - - ( void ) bEPStatus; - - // get data from USB into intermediate buffer - iLen = USBHwEPRead(bEP, abBulkBuf, sizeof(abBulkBuf)); - for (i = 0; i < iLen; i++) { - // put into queue - xQueueSendFromISR( xRxedChars, &( abBulkBuf[ i ] ), &lHigherPriorityTaskWoken ); - } - - portEND_SWITCHING_ISR( lHigherPriorityTaskWoken ); -} - - -/** - Local function to handle outgoing bulk data - - @param [in] bEP - @param [in] bEPStatus - */ -static void BulkIn(unsigned char bEP, unsigned char bEPStatus) -{ - int i, iLen; - long lHigherPriorityTaskWoken = pdFALSE; - - ( void ) bEPStatus; - - if (uxQueueMessagesWaitingFromISR( xCharsForTx ) == 0) { - // no more data, disable further NAK interrupts until next USB frame - USBHwNakIntEnable(0); - return; - } - - // get bytes from transmit FIFO into intermediate buffer - for (i = 0; i < MAX_PACKET_SIZE; i++) { - if( xQueueReceiveFromISR( xCharsForTx, ( &abBulkBuf[i] ), &lHigherPriorityTaskWoken ) != pdPASS ) - { - break; - } - } - iLen = i; - - // send over USB - if (iLen > 0) { - USBHwEPWrite(bEP, abBulkBuf, iLen); - } - - portEND_SWITCHING_ISR( lHigherPriorityTaskWoken ); -} - - -/** - Local function to handle the USB-CDC class requests - - @param [in] pSetup - @param [out] piLen - @param [out] ppbData - */ -static BOOL HandleClassRequest(TSetupPacket *pSetup, int *piLen, unsigned char **ppbData) -{ - switch (pSetup->bRequest) { - - // set line coding - case SET_LINE_CODING: -DBG("SET_LINE_CODING\n"); - memcpy((unsigned char *)&LineCoding, *ppbData, 7); - *piLen = 7; -DBG("dwDTERate=%u, bCharFormat=%u, bParityType=%u, bDataBits=%u\n", - LineCoding.dwDTERate, - LineCoding.bCharFormat, - LineCoding.bParityType, - LineCoding.bDataBits); - break; - - // get line coding - case GET_LINE_CODING: -DBG("GET_LINE_CODING\n"); - *ppbData = (unsigned char *)&LineCoding; - *piLen = 7; - break; - - // set control line state - case SET_CONTROL_LINE_STATE: - // bit0 = DTR, bit = RTS -DBG("SET_CONTROL_LINE_STATE %X\n", pSetup->wValue); - break; - - default: - return FALSE; - } - return TRUE; -} - - -/** - Writes one character to VCOM port - - @param [in] c character to write - @returns character written, or EOF if character could not be written - */ -int VCOM_putchar(int c) -{ -char cc = ( char ) c; - - if( xQueueSend( xCharsForTx, &cc, usbMAX_SEND_BLOCK ) == pdPASS ) - { - return c; - } - else - { - return EOF; - } -} - - -/** - Reads one character from VCOM port - - @returns character read, or EOF if character could not be read - */ -int VCOM_getchar(void) -{ - unsigned char c; - - /* Block the task until a character is available. */ - xQueueReceive( xRxedChars, &c, portMAX_DELAY ); - return c; -} - - -/** - Interrupt handler - - Simply calls the USB ISR - */ -//void USBIntHandler(void) -void USB_IRQHandler(void) -{ - USBHwISR(); -} - - -static void USBFrameHandler(unsigned short wFrame) -{ - ( void ) wFrame; - - if( uxQueueMessagesWaitingFromISR( xCharsForTx ) > 0 ) - { - // data available, enable NAK interrupt on bulk in - USBHwNakIntEnable(INACK_BI); - } -} - -// CodeRed - added CPUcpsie - -unsigned long CPUcpsie(void) -{ - unsigned long ulRet; - - // - // Read PRIMASK and enable interrupts. - // - __asm(" mrs %0, PRIMASK\n" - " cpsie i\n" - " bx lr\n" - : "=r" (ulRet)); - - // - // The return is handled in the inline assembly, but the compiler will - // still complain if there is not an explicit return here (despite the fact - // that this does not result in any code being produced because of the - // naked attribute). - // - return(ulRet); -} - -void vUSBTask( void *pvParameters ) -{ - int c; - - /* Just to prevent compiler warnings about the unused parameter. */ - ( void ) pvParameters; - DBG("Initialising USB stack\n"); - - xRxedChars = xQueueCreate( usbBUFFER_LEN, sizeof( char ) ); - xCharsForTx = xQueueCreate( usbBUFFER_LEN, sizeof( char ) ); - - if( ( xRxedChars == NULL ) || ( xCharsForTx == NULL ) ) - { - /* Not enough heap available to create the buffer queues, can't do - anything so just delete ourselves. */ - vTaskDelete( NULL ); - } - - - // initialise stack - USBInit(); - - // register descriptors - USBRegisterDescriptors(abDescriptors); - - // register class request handler - USBRegisterRequestHandler(REQTYPE_TYPE_CLASS, HandleClassRequest, abClassReqData); - - // register endpoint handlers - USBHwRegisterEPIntHandler(INT_IN_EP, NULL); - USBHwRegisterEPIntHandler(BULK_IN_EP, BulkIn); - USBHwRegisterEPIntHandler(BULK_OUT_EP, BulkOut); - - // register frame handler - USBHwRegisterFrameHandler(USBFrameHandler); - - // enable bulk-in interrupts on NAKs - USBHwNakIntEnable(INACK_BI); - - DBG("Starting USB communication\n"); - - NVIC_SetPriority( USB_IRQn, configUSB_INTERRUPT_PRIORITY ); - NVIC_EnableIRQ( USB_IRQn ); - - // connect to bus - - DBG("Connecting to USB bus\n"); - USBHwConnect(TRUE); - - // echo any character received (do USB stuff in interrupt) - for( ;; ) - { - c = VCOM_getchar(); - if (c != EOF) - { - // Echo character back with INCREMENT_ECHO_BY offset, so for example if - // INCREMENT_ECHO_BY is 1 and 'A' is received, 'B' will be echoed back. - VCOM_putchar(c + INCREMENT_ECHO_BY ); - } - } -} - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/LPCUSB/type.h b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/LPCUSB/type.h deleted file mode 100644 index 89d36850a..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/LPCUSB/type.h +++ /dev/null @@ -1,38 +0,0 @@ -/***************************************************************************** - * type.h: Type definition Header file for NXP LPC17xx Family - * Microprocessors - * - * Copyright(C) 2008, NXP Semiconductor - * All rights reserved. - * - * History - * 2008.08.21 ver 1.00 Prelimnary version, first Release - * -******************************************************************************/ -#ifndef __TYPE_H__ -#define __TYPE_H__ - -#ifndef NULL -#define NULL ((void *)0) -#endif - -#ifndef FALSE -#define FALSE (0) -#endif - -#ifndef TRUE -#define TRUE (1) -#endif - -typedef unsigned char BYTE; -typedef unsigned short WORD; -typedef unsigned long DWORD; -typedef unsigned int BOOL; - -typedef enum {RESET = 0, SET = !RESET} FlagStatus, ITStatus; -typedef enum {DISABLE = 0, ENABLE = !DISABLE} FunctionalState; - -/* Pointer to Function returning Void (any number of parameters) */ -typedef void (*PFV)(); - -#endif /* __TYPE_H__ */ diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/LPCUSB/usbapi.h b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/LPCUSB/usbapi.h deleted file mode 100644 index 050f0d95b..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/LPCUSB/usbapi.h +++ /dev/null @@ -1,118 +0,0 @@ -/* - LPCUSB, an USB device driver for LPC microcontrollers - Copyright (C) 2006 Bertrik Sikken (bertrik@sikken.nl) - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - 3. The name of the author may not be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -/** - @file -*/ - -#include "usbstruct.h" // for TSetupPacket - -/************************************************************************* - USB configuration -**************************************************************************/ - -#define MAX_PACKET_SIZE0 64 /**< maximum packet size for EP 0 */ - -/************************************************************************* - USB hardware interface -**************************************************************************/ - -// endpoint status sent through callback -#define EP_STATUS_DATA (1<<0) /**< EP has data */ -#define EP_STATUS_STALLED (1<<1) /**< EP is stalled */ -#define EP_STATUS_SETUP (1<<2) /**< EP received setup packet */ -#define EP_STATUS_ERROR (1<<3) /**< EP data was overwritten by setup packet */ -#define EP_STATUS_NACKED (1<<4) /**< EP sent NAK */ - -// device status sent through callback -#define DEV_STATUS_CONNECT (1<<0) /**< device just got connected */ -#define DEV_STATUS_SUSPEND (1<<2) /**< device entered suspend state */ -#define DEV_STATUS_RESET (1<<4) /**< device just got reset */ - -// interrupt bits for NACK events in USBHwNakIntEnable -// (these bits conveniently coincide with the LPC176x USB controller bit) -#define INACK_CI (1<<1) /**< interrupt on NACK for control in */ -#define INACK_CO (1<<2) /**< interrupt on NACK for control out */ -#define INACK_II (1<<3) /**< interrupt on NACK for interrupt in */ -#define INACK_IO (1<<4) /**< interrupt on NACK for interrupt out */ -#define INACK_BI (1<<5) /**< interrupt on NACK for bulk in */ -#define INACK_BO (1<<6) /**< interrupt on NACK for bulk out */ - -BOOL USBHwInit (void); -void USBHwISR (void); - -void USBHwNakIntEnable (unsigned char bIntBits); - -void USBHwConnect (BOOL fConnect); - -void USBHwSetAddress (unsigned char bAddr); -void USBHwConfigDevice (BOOL fConfigured); - -// endpoint operations -void USBHwEPConfig (unsigned char bEP, unsigned short wMaxPacketSize); -int USBHwEPRead (unsigned char bEP, unsigned char *pbBuf, int iMaxLen); -int USBHwEPWrite (unsigned char bEP, unsigned char *pbBuf, int iLen); -void USBHwEPStall (unsigned char bEP, BOOL fStall); -unsigned char USBHwEPGetStatus (unsigned char bEP); - -/** Endpoint interrupt handler callback */ -typedef void (TFnEPIntHandler) (unsigned char bEP, unsigned char bEPStatus); -void USBHwRegisterEPIntHandler (unsigned char bEP, TFnEPIntHandler *pfnHandler); - -/** Device status handler callback */ -typedef void (TFnDevIntHandler) (unsigned char bDevStatus); -void USBHwRegisterDevIntHandler (TFnDevIntHandler *pfnHandler); - -/** Frame event handler callback */ -typedef void (TFnFrameHandler)(unsigned short wFrame); -void USBHwRegisterFrameHandler(TFnFrameHandler *pfnHandler); - - -/************************************************************************* - USB application interface -**************************************************************************/ - -// initialise the complete stack, including HW -BOOL USBInit(void); - -/** Request handler callback (standard, vendor, class) */ -typedef BOOL (TFnHandleRequest)(TSetupPacket *pSetup, int *piLen, unsigned char **ppbData); -void USBRegisterRequestHandler(int iType, TFnHandleRequest *pfnHandler, unsigned char *pbDataStore); -void USBRegisterCustomReqHandler(TFnHandleRequest *pfnHandler); - -/** Descriptor handler callback */ -typedef BOOL (TFnGetDescriptor)(unsigned short wTypeIndex, unsigned short wLangID, int *piLen, unsigned char **ppbData); - -/** Default standard request handler */ -BOOL USBHandleStandardRequest(TSetupPacket *pSetup, int *piLen, unsigned char **ppbData); - -/** Default EP0 handler */ -void USBHandleControlTransfer(unsigned char bEP, unsigned char bEPStat); - -/** Descriptor handling */ -void USBRegisterDescriptors(const unsigned char *pabDescriptors); -BOOL USBGetDescriptor(unsigned short wTypeIndex, unsigned short wLangID, int *piLen, unsigned char **ppbData); diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/LPCUSB/usbcontrol.c b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/LPCUSB/usbcontrol.c deleted file mode 100644 index 18ff180fe..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/LPCUSB/usbcontrol.c +++ /dev/null @@ -1,246 +0,0 @@ -/* - LPCUSB, an USB device driver for LPC microcontrollers - Copyright (C) 2006 Bertrik Sikken (bertrik@sikken.nl) - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - 3. The name of the author may not be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - - -/** @file - Control transfer handler. - - This module handles control transfers and is normally installed on the - endpoint 0 callback. - - Control transfers can be of the following type: - 0 Standard; - 1 Class; - 2 Vendor; - 3 Reserved. - - A callback can be installed for each of these control transfers using - USBRegisterRequestHandler. - When an OUT request arrives, data is collected in the data store provided - with the USBRegisterRequestHandler call. When the transfer is done, the - callback is called. - When an IN request arrives, the callback is called immediately to either - put the control transfer data in the data store, or to get a pointer to - control transfer data. The data is then packetised and sent to the host. -*/ - -#include "usbdebug.h" - -#include "usbstruct.h" -#include "usbapi.h" - - - -#define MAX_CONTROL_SIZE 128 /**< maximum total size of control transfer data */ -#define MAX_REQ_HANDLERS 4 /**< standard, class, vendor, reserved */ - -static TSetupPacket Setup; /**< setup packet */ - -static unsigned char *pbData; /**< pointer to data buffer */ -static int iResidue; /**< remaining bytes in buffer */ -static int iLen; /**< total length of control transfer */ - -/** Array of installed request handler callbacks */ -static TFnHandleRequest *apfnReqHandlers[4] = {NULL, NULL, NULL, NULL}; -/** Array of installed request data pointers */ -static unsigned char *apbDataStore[4] = {NULL, NULL, NULL, NULL}; - -/** - Local function to handle a request by calling one of the installed - request handlers. - - In case of data going from host to device, the data is at *ppbData. - In case of data going from device to host, the handler can either - choose to write its data at *ppbData or update the data pointer. - - @param [in] pSetup The setup packet - @param [in,out] *piLen Pointer to data length - @param [in,out] ppbData Data buffer. - - @return TRUE if the request was handles successfully - */ -static BOOL _HandleRequest(TSetupPacket *pSetup, int *piLen, unsigned char **ppbData) -{ - TFnHandleRequest *pfnHandler; - int iType; - - iType = REQTYPE_GET_TYPE(pSetup->bmRequestType); - pfnHandler = apfnReqHandlers[iType]; - if (pfnHandler == NULL) { - DBG("No handler for reqtype %d\n", iType); - return FALSE; - } - - return pfnHandler(pSetup, piLen, ppbData); -} - - -/** - Local function to stall the control endpoint - - @param [in] bEPStat Endpoint status - */ -static void StallControlPipe(unsigned char bEPStat) -{ - unsigned char *pb; - int i; - - USBHwEPStall(0x80, TRUE); - -// dump setup packet - DBG("STALL on ["); - pb = (unsigned char *)&Setup; - for (i = 0; i < 8; i++) { - DBG(" %02x", *pb++); - } - DBG("] stat=%x\n", bEPStat); -} - - -/** - Sends next chunk of data (possibly 0 bytes) to host - */ -static void DataIn(void) -{ - int iChunk; - - if( MAX_PACKET_SIZE0 < iResidue ) - { - iChunk = MAX_PACKET_SIZE0; - } - else - { - iChunk = iResidue; - } - - USBHwEPWrite(0x80, pbData, iChunk); - pbData += iChunk; - iResidue -= iChunk; -} - - -/** - * Handles IN/OUT transfers on EP0 - * - * @param [in] bEP Endpoint address - * @param [in] bEPStat Endpoint status - */ -void USBHandleControlTransfer(unsigned char bEP, unsigned char bEPStat) -{ - int iChunk, iType; - - if (bEP == 0x00) { - // OUT transfer - if (bEPStat & EP_STATUS_SETUP) { - // setup packet, reset request message state machine - USBHwEPRead(0x00, (unsigned char *)&Setup, sizeof(Setup)); - DBG("S%x", Setup.bRequest); - - // defaults for data pointer and residue - iType = REQTYPE_GET_TYPE(Setup.bmRequestType); - pbData = apbDataStore[iType]; - iResidue = Setup.wLength; - iLen = Setup.wLength; - - if ((Setup.wLength == 0) || - (REQTYPE_GET_DIR(Setup.bmRequestType) == REQTYPE_DIR_TO_HOST)) { - // ask installed handler to process request - if (!_HandleRequest(&Setup, &iLen, &pbData)) { - DBG("_HandleRequest1 failed\n"); - StallControlPipe(bEPStat); - return; - } - // send smallest of requested and offered length - if( iLen < Setup.wLength ) - { - iResidue = iLen; - } - else - { - iResidue = Setup.wLength; - } - - // send first part (possibly a zero-length status message) - DataIn(); - } - } - else { - if (iResidue > 0) { - // store data - iChunk = USBHwEPRead(0x00, pbData, iResidue); - if (iChunk < 0) { - StallControlPipe(bEPStat); - return; - } - pbData += iChunk; - iResidue -= iChunk; - if (iResidue == 0) { - // received all, send data to handler - iType = REQTYPE_GET_TYPE(Setup.bmRequestType); - pbData = apbDataStore[iType]; - if (!_HandleRequest(&Setup, &iLen, &pbData)) { - DBG("_HandleRequest2 failed\n"); - StallControlPipe(bEPStat); - return; - } - // send status to host - DataIn(); - } - } - else { - // absorb zero-length status message - iChunk = USBHwEPRead(0x00, NULL, 0); - DBG(iChunk > 0 ? "?" : ""); - } - } - } - else if (bEP == 0x80) { - // IN transfer - // send more data if available (possibly a 0-length packet) - DataIn(); - } - else { - ASSERT(FALSE); - } -} - - -/** - Registers a callback for handling requests - - @param [in] iType Type of request, e.g. REQTYPE_TYPE_STANDARD - @param [in] *pfnHandler Callback function pointer - @param [in] *pbDataStore Data storage area for this type of request - */ -void USBRegisterRequestHandler(int iType, TFnHandleRequest *pfnHandler, unsigned char *pbDataStore) -{ - ASSERT(iType >= 0); - ASSERT(iType < 4); - apfnReqHandlers[iType] = pfnHandler; - apbDataStore[iType] = pbDataStore; -} - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/LPCUSB/usbdebug.h b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/LPCUSB/usbdebug.h deleted file mode 100644 index 4a14862e6..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/LPCUSB/usbdebug.h +++ /dev/null @@ -1,41 +0,0 @@ -/* - LPCUSB, an USB device driver for LPC microcontrollers - Copyright (C) 2006 Bertrik Sikken (bertrik@sikken.nl) - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - 3. The name of the author may not be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -// CodeRed - comment out this printf, as will use real one from stdio.h -// to implement output via semihosting - -//int printf(const char *format, ...); -# include - -#ifdef _DEBUG -#define DBG printf -#define ASSERT(x) if(!(x)){DBG("\nAssertion '%s' failed in %s:%s#%d!\n",#x,__FILE__,__FUNCTION__,__LINE__);while(1);} -#else -#define DBG(x ...) -#define ASSERT(x) -#endif - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/LPCUSB/usbhw_lpc.c b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/LPCUSB/usbhw_lpc.c deleted file mode 100644 index 70f8f8653..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/LPCUSB/usbhw_lpc.c +++ /dev/null @@ -1,526 +0,0 @@ -/* - LPCUSB, an USB device driver for LPC microcontrollers - Copyright (C) 2006 Bertrik Sikken (bertrik@sikken.nl) - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - 3. The name of the author may not be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - - -/** @file - USB hardware layer - */ - - -#include "usbdebug.h" -#include "usbhw_lpc.h" -#include "usbapi.h" - -#ifdef DEBUG -// comment out the following line if you don't want to use debug LEDs -//#define DEBUG_LED -#endif - -/** Installed device interrupt handler */ -static TFnDevIntHandler *_pfnDevIntHandler = NULL; -/** Installed endpoint interrupt handlers */ -static TFnEPIntHandler *_apfnEPIntHandlers[16]; -/** Installed frame interrupt handlers */ -static TFnFrameHandler *_pfnFrameHandler = NULL; - -/** convert from endpoint address to endpoint index */ -#define EP2IDX(bEP) ((((bEP)&0xF)<<1)|(((bEP)&0x80)>>7)) -/** convert from endpoint index to endpoint address */ -#define IDX2EP(idx) ((((idx)<<7)&0x80)|(((idx)>>1)&0xF)) - - - -/** - Local function to wait for a device interrupt (and clear it) - - @param [in] dwIntr Bitmask of interrupts to wait for - */ -static void Wait4DevInt(unsigned long dwIntr) -{ - // wait for specific interrupt - while ((LPC_USB->USBDevIntSt & dwIntr) != dwIntr); - // clear the interrupt bits - LPC_USB->USBDevIntClr = dwIntr; -} - - -/** - Local function to send a command to the USB protocol engine - - @param [in] bCmd Command to send - */ -static void USBHwCmd(unsigned char bCmd) -{ - // clear CDFULL/CCEMTY - LPC_USB->USBDevIntClr = CDFULL | CCEMTY; - // write command code - LPC_USB->USBCmdCode = 0x00000500 | (bCmd << 16); - Wait4DevInt(CCEMTY); -} - - -/** - Local function to send a command + data to the USB protocol engine - - @param [in] bCmd Command to send - @param [in] bData Data to send - */ -static void USBHwCmdWrite(unsigned char bCmd, unsigned short bData) -{ - // write command code - USBHwCmd(bCmd); - - // write command data - LPC_USB->USBCmdCode = 0x00000100 | (bData << 16); - Wait4DevInt(CCEMTY); -} - - -/** - Local function to send a command to the USB protocol engine and read data - - @param [in] bCmd Command to send - - @return the data - */ -static unsigned char USBHwCmdRead(unsigned char bCmd) -{ - // write command code - USBHwCmd(bCmd); - - // get data - LPC_USB->USBCmdCode = 0x00000200 | (bCmd << 16); - Wait4DevInt(CDFULL); - return LPC_USB->USBCmdData; -} - - -/** - 'Realizes' an endpoint, meaning that buffer space is reserved for - it. An endpoint needs to be realised before it can be used. - - From experiments, it appears that a USB reset causes USBReEP to - re-initialise to 3 (= just the control endpoints). - However, a USB bus reset does not disturb the USBMaxPSize settings. - - @param [in] idx Endpoint index - @param [in] wMaxPSize Maximum packet size for this endpoint - */ -static void USBHwEPRealize(int idx, unsigned short wMaxPSize) -{ - LPC_USB->USBReEP |= (1 << idx); - LPC_USB->USBEpInd = idx; - LPC_USB->USBMaxPSize = wMaxPSize; - Wait4DevInt(EP_RLZED); -} - - -/** - Enables or disables an endpoint - - @param [in] idx Endpoint index - @param [in] fEnable TRUE to enable, FALSE to disable - */ -static void USBHwEPEnable(int idx, BOOL fEnable) -{ - USBHwCmdWrite(CMD_EP_SET_STATUS | idx, fEnable ? 0 : EP_DA); -} - - -/** - Configures an endpoint and enables it - - @param [in] bEP Endpoint number - @param [in] wMaxPacketSize Maximum packet size for this EP - */ -void USBHwEPConfig(unsigned char bEP, unsigned short wMaxPacketSize) -{ - int idx; - - idx = EP2IDX(bEP); - - // realise EP - USBHwEPRealize(idx, wMaxPacketSize); - - // enable EP - USBHwEPEnable(idx, TRUE); -} - - -/** - Registers an endpoint event callback - - @param [in] bEP Endpoint number - @param [in] pfnHandler Callback function - */ -void USBHwRegisterEPIntHandler(unsigned char bEP, TFnEPIntHandler *pfnHandler) -{ - int idx; - - idx = EP2IDX(bEP); - - ASSERT(idx<32); - - /* add handler to list of EP handlers */ - _apfnEPIntHandlers[idx / 2] = pfnHandler; - - /* enable EP interrupt */ - LPC_USB->USBEpIntEn |= (1 << idx); - LPC_USB->USBDevIntEn |= EP_SLOW; - - DBG("Registered handler for EP 0x%x\n", bEP); -} - - -/** - Registers an device status callback - - @param [in] pfnHandler Callback function - */ -void USBHwRegisterDevIntHandler(TFnDevIntHandler *pfnHandler) -{ - _pfnDevIntHandler = pfnHandler; - - // enable device interrupt - LPC_USB->USBDevIntEn |= DEV_STAT; - - DBG("Registered handler for device status\n"); -} - - -/** - Registers the frame callback - - @param [in] pfnHandler Callback function - */ -void USBHwRegisterFrameHandler(TFnFrameHandler *pfnHandler) -{ - _pfnFrameHandler = pfnHandler; - - // enable device interrupt - LPC_USB->USBDevIntEn |= FRAME; - - DBG("Registered handler for frame\n"); -} - - -/** - Sets the USB address. - - @param [in] bAddr Device address to set - */ -void USBHwSetAddress(unsigned char bAddr) -{ - USBHwCmdWrite(CMD_DEV_SET_ADDRESS, DEV_EN | bAddr); -} - - -/** - Connects or disconnects from the USB bus - - @param [in] fConnect If TRUE, connect, otherwise disconnect - */ -void USBHwConnect(BOOL fConnect) -{ - USBHwCmdWrite(CMD_DEV_STATUS, fConnect ? CON : 0); -} - - -/** - Enables interrupt on NAK condition - - For IN endpoints a NAK is generated when the host wants to read data - from the device, but none is available in the endpoint buffer. - For OUT endpoints a NAK is generated when the host wants to write data - to the device, but the endpoint buffer is still full. - - The endpoint interrupt handlers can distinguish regular (ACK) interrupts - from NAK interrupt by checking the bits in their bEPStatus argument. - - @param [in] bIntBits Bitmap indicating which NAK interrupts to enable - */ -void USBHwNakIntEnable(unsigned char bIntBits) -{ - USBHwCmdWrite(CMD_DEV_SET_MODE, bIntBits); -} - - -/** - Gets the status from a specific endpoint. - - @param [in] bEP Endpoint number - @return Endpoint status byte (containing EP_STATUS_xxx bits) - */ -unsigned char USBHwEPGetStatus(unsigned char bEP) -{ - int idx = EP2IDX(bEP); - - return USBHwCmdRead(CMD_EP_SELECT | idx); -} - - -/** - Sets the stalled property of an endpoint - - @param [in] bEP Endpoint number - @param [in] fStall TRUE to stall, FALSE to unstall - */ -void USBHwEPStall(unsigned char bEP, BOOL fStall) -{ - int idx = EP2IDX(bEP); - - USBHwCmdWrite(CMD_EP_SET_STATUS | idx, fStall ? EP_ST : 0); -} - - -/** - Writes data to an endpoint buffer - - @param [in] bEP Endpoint number - @param [in] pbBuf Endpoint data - @param [in] iLen Number of bytes to write - - @return TRUE if the data was successfully written or <0 in case of error. -*/ -int USBHwEPWrite(unsigned char bEP, unsigned char *pbBuf, int iLen) -{ - int idx; - - idx = EP2IDX(bEP); - - // set write enable for specific endpoint - LPC_USB->USBCtrl = WR_EN | ((bEP & 0xF) << 2); - - // set packet length - LPC_USB->USBTxPLen = iLen; - - // write data - while (LPC_USB->USBCtrl & WR_EN) { - LPC_USB->USBTxData = (pbBuf[3] << 24) | (pbBuf[2] << 16) | (pbBuf[1] << 8) | pbBuf[0]; - pbBuf += 4; - } - - // select endpoint and validate buffer - USBHwCmd(CMD_EP_SELECT | idx); - USBHwCmd(CMD_EP_VALIDATE_BUFFER); - - return iLen; -} - - -/** - Reads data from an endpoint buffer - - @param [in] bEP Endpoint number - @param [in] pbBuf Endpoint data - @param [in] iMaxLen Maximum number of bytes to read - - @return the number of bytes available in the EP (possibly more than iMaxLen), - or <0 in case of error. - */ -int USBHwEPRead(unsigned char bEP, unsigned char *pbBuf, int iMaxLen) -{ - int i, idx; - unsigned long dwData, dwLen; - - idx = EP2IDX(bEP); - - // set read enable bit for specific endpoint - LPC_USB->USBCtrl = RD_EN | ((bEP & 0xF) << 2); - - // wait for PKT_RDY - do { - dwLen = LPC_USB->USBRxPLen; - } while ((dwLen & PKT_RDY) == 0); - - // packet valid? - if ((dwLen & DV) == 0) { - return -1; - } - - // get length - dwLen &= PKT_LNGTH_MASK; - - // get data - dwData = 0; - for (i = 0; i < dwLen; i++) { - if ((i % 4) == 0) { - dwData = LPC_USB->USBRxData; - } - if ((pbBuf != NULL) && (i < iMaxLen)) { - pbBuf[i] = dwData & 0xFF; - } - dwData >>= 8; - } - - // make sure RD_EN is clear - LPC_USB->USBCtrl = 0; - - // select endpoint and clear buffer - USBHwCmd(CMD_EP_SELECT | idx); - USBHwCmd(CMD_EP_CLEAR_BUFFER); - - return dwLen; -} - - -/** - Sets the 'configured' state. - - All registered endpoints are 'realised' and enabled, and the - 'configured' bit is set in the device status register. - - @param [in] fConfigured If TRUE, configure device, else unconfigure - */ -void USBHwConfigDevice(BOOL fConfigured) -{ - // set configured bit - USBHwCmdWrite(CMD_DEV_CONFIG, fConfigured ? CONF_DEVICE : 0); -} - - -/** - USB interrupt handler - - @todo Get all 11 bits of frame number instead of just 8 - - Endpoint interrupts are mapped to the slow interrupt - */ -void USBHwISR(void) -{ - unsigned long dwStatus; - unsigned long dwIntBit; - unsigned char bEPStat, bDevStat, bStat; - int i; - unsigned short wFrame; - - // handle device interrupts - dwStatus = LPC_USB->USBDevIntSt; - - // frame interrupt - if (dwStatus & FRAME) { - // clear int - LPC_USB->USBDevIntClr = FRAME; - // call handler - if (_pfnFrameHandler != NULL) { - wFrame = USBHwCmdRead(CMD_DEV_READ_CUR_FRAME_NR); - _pfnFrameHandler(wFrame); - } - } - - // device status interrupt - if (dwStatus & DEV_STAT) { - /* Clear DEV_STAT interrupt before reading DEV_STAT register. - This prevents corrupted device status reads, see - LPC2148 User manual revision 2, 25 july 2006. - */ - LPC_USB->USBDevIntClr = DEV_STAT; - bDevStat = USBHwCmdRead(CMD_DEV_STATUS); - if (bDevStat & (CON_CH | SUS_CH | RST)) { - // convert device status into something HW independent - bStat = ((bDevStat & CON) ? DEV_STATUS_CONNECT : 0) | - ((bDevStat & SUS) ? DEV_STATUS_SUSPEND : 0) | - ((bDevStat & RST) ? DEV_STATUS_RESET : 0); - // call handler - if (_pfnDevIntHandler != NULL) { - _pfnDevIntHandler(bStat); - } - } - } - - // endpoint interrupt - if (dwStatus & EP_SLOW) { - // clear EP_SLOW - LPC_USB->USBDevIntClr = EP_SLOW; - // check all endpoints - for (i = 0; i < 32; i++) { - dwIntBit = (1 << i); - if (LPC_USB->USBEpIntSt & dwIntBit) { - // clear int (and retrieve status) - LPC_USB->USBEpIntClr = dwIntBit; - Wait4DevInt(CDFULL); - bEPStat = LPC_USB->USBCmdData; - // convert EP pipe stat into something HW independent - bStat = ((bEPStat & EPSTAT_FE) ? EP_STATUS_DATA : 0) | - ((bEPStat & EPSTAT_ST) ? EP_STATUS_STALLED : 0) | - ((bEPStat & EPSTAT_STP) ? EP_STATUS_SETUP : 0) | - ((bEPStat & EPSTAT_EPN) ? EP_STATUS_NACKED : 0) | - ((bEPStat & EPSTAT_PO) ? EP_STATUS_ERROR : 0); - // call handler - if (_apfnEPIntHandlers[i / 2] != NULL) { - _apfnEPIntHandlers[i / 2](IDX2EP(i), bStat); - } - } - } - } -} - - - -/** - Initialises the USB hardware - - - @return TRUE if the hardware was successfully initialised - */ -BOOL USBHwInit(void) -{ - // P2.9 -> USB_CONNECT - LPC_PINCON->PINSEL4 &= ~0x000C0000; - LPC_PINCON->PINSEL4 |= 0x00040000; - - // P1.18 -> USB_UP_LED - // P1.30 -> VBUS - LPC_PINCON->PINSEL3 &= ~0x30000030; - LPC_PINCON->PINSEL3 |= 0x20000010; - - // P0.29 -> USB_D+ - // P0.30 -> USB_D- - LPC_PINCON->PINSEL1 &= ~0x3C000000; - LPC_PINCON->PINSEL1 |= 0x14000000; - - // enable PUSB - LPC_SC->PCONP |= (1 << 31); - - LPC_USB->OTGClkCtrl = 0x12; /* Dev clock, AHB clock enable */ - while ((LPC_USB->OTGClkSt & 0x12) != 0x12); - - // disable/clear all interrupts for now - LPC_USB->USBDevIntEn = 0; - LPC_USB->USBDevIntClr = 0xFFFFFFFF; - LPC_USB->USBDevIntPri = 0; - - LPC_USB->USBEpIntEn = 0; - LPC_USB->USBEpIntClr = 0xFFFFFFFF; - LPC_USB->USBEpIntPri = 0; - - // by default, only ACKs generate interrupts - USBHwNakIntEnable(0); - - return TRUE; -} - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/LPCUSB/usbhw_lpc.h b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/LPCUSB/usbhw_lpc.h deleted file mode 100644 index 2a4de7949..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/LPCUSB/usbhw_lpc.h +++ /dev/null @@ -1,149 +0,0 @@ -/* - LPCUSB, an USB device driver for LPC microcontrollers - Copyright (C) 2006 Bertrik Sikken (bertrik@sikken.nl) - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - 3. The name of the author may not be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - - -/** - Hardware definitions for the LPC176x USB controller - - These are private to the usbhw module -*/ - -// CodeRed - pull in defines from NXP header file -//#include "NXP\LPC17xx\LPC17xx.h" -#include "LPC17xx.h" - - -// CodeRed - these registers have been renamed on LPC176x -#define USBReEP USBReEp -#define OTG_CLK_CTRL USBClkCtrl -#define OTG_CLK_STAT USBClkSt - -/* USBIntSt bits */ -#define USB_INT_REQ_LP (1<<0) -#define USB_INT_REQ_HP (1<<1) -#define USB_INT_REQ_DMA (1<<2) -#define USB_need_clock (1<<8) -#define EN_USB_BITS (1<<31) - -/* USBDevInt... bits */ -#define FRAME (1<<0) -#define EP_FAST (1<<1) -#define EP_SLOW (1<<2) -#define DEV_STAT (1<<3) -#define CCEMTY (1<<4) -#define CDFULL (1<<5) -#define RxENDPKT (1<<6) -#define TxENDPKT (1<<7) -#define EP_RLZED (1<<8) -#define ERR_INT (1<<9) - -/* USBRxPLen bits */ -#define PKT_LNGTH (1<<0) -#define PKT_LNGTH_MASK 0x3FF -#define DV (1<<10) -#define PKT_RDY (1<<11) - -/* USBCtrl bits */ -#define RD_EN (1<<0) -#define WR_EN (1<<1) -#define LOG_ENDPOINT (1<<2) - -/* protocol engine command codes */ - /* device commands */ -#define CMD_DEV_SET_ADDRESS 0xD0 -#define CMD_DEV_CONFIG 0xD8 -#define CMD_DEV_SET_MODE 0xF3 -#define CMD_DEV_READ_CUR_FRAME_NR 0xF5 -#define CMD_DEV_READ_TEST_REG 0xFD -#define CMD_DEV_STATUS 0xFE /* read/write */ -#define CMD_DEV_GET_ERROR_CODE 0xFF -#define CMD_DEV_READ_ERROR_STATUS 0xFB - /* endpoint commands */ -#define CMD_EP_SELECT 0x00 -#define CMD_EP_SELECT_CLEAR 0x40 -#define CMD_EP_SET_STATUS 0x40 -#define CMD_EP_CLEAR_BUFFER 0xF2 -#define CMD_EP_VALIDATE_BUFFER 0xFA - -/* set address command */ -#define DEV_ADDR (1<<0) -#define DEV_EN (1<<7) - -/* configure device command */ -#define CONF_DEVICE (1<<0) - -/* set mode command */ -#define AP_CLK (1<<0) -#define INAK_CI (1<<1) -#define INAK_CO (1<<2) -#define INAK_II (1<<3) -#define INAK_IO (1<<4) -#define INAK_BI (1<<5) -#define INAK_BO (1<<6) - -/* set get device status command */ -#define CON (1<<0) -#define CON_CH (1<<1) -#define SUS (1<<2) -#define SUS_CH (1<<3) -#define RST (1<<4) - -/* get error code command */ -// ... - -/* Select Endpoint command read bits */ -#define EPSTAT_FE (1<<0) -#define EPSTAT_ST (1<<1) -#define EPSTAT_STP (1<<2) -#define EPSTAT_PO (1<<3) -#define EPSTAT_EPN (1<<4) -#define EPSTAT_B1FULL (1<<5) -#define EPSTAT_B2FULL (1<<6) - -/* CMD_EP_SET_STATUS command */ -#define EP_ST (1<<0) -#define EP_DA (1<<5) -#define EP_RF_MO (1<<6) -#define EP_CND_ST (1<<7) - -/* read error status command */ -#define PID_ERR (1<<0) -#define UEPKT (1<<1) -#define DCRC (1<<2) -#define TIMEOUT (1<<3) -#define EOP (1<<4) -#define B_OVRN (1<<5) -#define BTSTF (1<<6) -#define TGL_ERR (1<<7) - - - - - - - - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/LPCUSB/usbinit.c b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/LPCUSB/usbinit.c deleted file mode 100644 index 8bb718317..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/LPCUSB/usbinit.c +++ /dev/null @@ -1,82 +0,0 @@ -/* - LPCUSB, an USB device driver for LPC microcontrollers - Copyright (C) 2006 Bertrik Sikken (bertrik@sikken.nl) - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - 3. The name of the author may not be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - - -/** @file - USB stack initialisation - */ - - -#include "usbdebug.h" -#include "usbapi.h" - - -/** data storage area for standard requests */ -static unsigned char abStdReqData[8]; - - -/** - USB reset handler - - @param [in] bDevStatus Device status - */ -static void HandleUsbReset(unsigned char bDevStatus) -{ - if (bDevStatus & DEV_STATUS_RESET) { - DBG("\n!"); - } -} - - -/** - Initialises the USB hardware and sets up the USB stack by - installing default callbacks. - - @return TRUE if initialisation was successful - */ -BOOL USBInit(void) -{ - // init hardware - USBHwInit(); - - // register bus reset handler - USBHwRegisterDevIntHandler(HandleUsbReset); - - // register control transfer handler on EP0 - USBHwRegisterEPIntHandler(0x00, USBHandleControlTransfer); - USBHwRegisterEPIntHandler(0x80, USBHandleControlTransfer); - - // setup control endpoints - USBHwEPConfig(0x00, MAX_PACKET_SIZE0); - USBHwEPConfig(0x80, MAX_PACKET_SIZE0); - - // register standard request handler - USBRegisterRequestHandler(REQTYPE_TYPE_STANDARD, USBHandleStandardRequest, abStdReqData); - - return TRUE; -} - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/LPCUSB/usbstdreq.c b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/LPCUSB/usbstdreq.c deleted file mode 100644 index 05e58b417..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/LPCUSB/usbstdreq.c +++ /dev/null @@ -1,430 +0,0 @@ -/* - LPCUSB, an USB device driver for LPC microcontrollers - Copyright (C) 2006 Bertrik Sikken (bertrik@sikken.nl) - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - 3. The name of the author may not be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - - -/** @file - Standard request handler. - - This modules handles the 'chapter 9' processing, specifically the - standard device requests in table 9-3 from the universal serial bus - specification revision 2.0 - - Specific types of devices may specify additional requests (for example - HID devices add a GET_DESCRIPTOR request for interfaces), but they - will not be part of this module. - - @todo some requests have to return a request error if device not configured: - @todo GET_INTERFACE, GET_STATUS, SET_INTERFACE, SYNCH_FRAME - @todo this applies to the following if endpoint != 0: - @todo SET_FEATURE, GET_FEATURE -*/ - -#include "usbdebug.h" -#include "usbstruct.h" -#include "usbapi.h" - -#define MAX_DESC_HANDLERS 4 /**< device, interface, endpoint, other */ - - -/* general descriptor field offsets */ -#define DESC_bLength 0 /**< length offset */ -#define DESC_bDescriptorType 1 /**< descriptor type offset */ - -/* config descriptor field offsets */ -#define CONF_DESC_wTotalLength 2 /**< total length offset */ -#define CONF_DESC_bConfigurationValue 5 /**< configuration value offset */ -#define CONF_DESC_bmAttributes 7 /**< configuration characteristics */ - -/* interface descriptor field offsets */ -#define INTF_DESC_bAlternateSetting 3 /**< alternate setting offset */ - -/* endpoint descriptor field offsets */ -#define ENDP_DESC_bEndpointAddress 2 /**< endpoint address offset */ -#define ENDP_DESC_wMaxPacketSize 4 /**< maximum packet size offset */ - - -/** Currently selected configuration */ -static unsigned char bConfiguration = 0; -/** Installed custom request handler */ -static TFnHandleRequest *pfnHandleCustomReq = NULL; -/** Pointer to registered descriptors */ -static const unsigned char *pabDescrip = NULL; - - -/** - Registers a pointer to a descriptor block containing all descriptors - for the device. - - @param [in] pabDescriptors The descriptor byte array - */ -void USBRegisterDescriptors(const unsigned char *pabDescriptors) -{ - pabDescrip = pabDescriptors; -} - - -/** - Parses the list of installed USB descriptors and attempts to find - the specified USB descriptor. - - @param [in] wTypeIndex Type and index of the descriptor - @param [in] wLangID Language ID of the descriptor (currently unused) - @param [out] *piLen Descriptor length - @param [out] *ppbData Descriptor data - - @return TRUE if the descriptor was found, FALSE otherwise - */ -BOOL USBGetDescriptor(unsigned short wTypeIndex, unsigned short wLangID, int *piLen, unsigned char **ppbData) -{ - unsigned char bType, bIndex; - unsigned char *pab; - int iCurIndex; - - ASSERT(pabDescrip != NULL); - - bType = GET_DESC_TYPE(wTypeIndex); - bIndex = GET_DESC_INDEX(wTypeIndex); - - pab = (unsigned char *)pabDescrip; - iCurIndex = 0; - - while (pab[DESC_bLength] != 0) { - if (pab[DESC_bDescriptorType] == bType) { - if (iCurIndex == bIndex) { - // set data pointer - *ppbData = pab; - // get length from structure - if (bType == DESC_CONFIGURATION) { - // configuration descriptor is an exception, length is at offset 2 and 3 - *piLen = (pab[CONF_DESC_wTotalLength]) | - (pab[CONF_DESC_wTotalLength + 1] << 8); - } - else { - // normally length is at offset 0 - *piLen = pab[DESC_bLength]; - } - return TRUE; - } - iCurIndex++; - } - // skip to next descriptor - pab += pab[DESC_bLength]; - } - // nothing found - DBG("Desc %x not found!\n", wTypeIndex); - return FALSE; -} - - -/** - Configures the device according to the specified configuration index and - alternate setting by parsing the installed USB descriptor list. - A configuration index of 0 unconfigures the device. - - @param [in] bConfigIndex Configuration index - @param [in] bAltSetting Alternate setting number - - @todo function always returns TRUE, add stricter checking? - - @return TRUE if successfully configured, FALSE otherwise - */ -static BOOL USBSetConfiguration(unsigned char bConfigIndex, unsigned char bAltSetting) -{ - unsigned char *pab; - unsigned char bCurConfig, bCurAltSetting; - unsigned char bEP; - unsigned short wMaxPktSize; - - ASSERT(pabDescrip != NULL); - - if (bConfigIndex == 0) { - // unconfigure device - USBHwConfigDevice(FALSE); - } - else { - // configure endpoints for this configuration/altsetting - pab = (unsigned char *)pabDescrip; - bCurConfig = 0xFF; - bCurAltSetting = 0xFF; - - while (pab[DESC_bLength] != 0) { - - switch (pab[DESC_bDescriptorType]) { - - case DESC_CONFIGURATION: - // remember current configuration index - bCurConfig = pab[CONF_DESC_bConfigurationValue]; - break; - - case DESC_INTERFACE: - // remember current alternate setting - bCurAltSetting = pab[INTF_DESC_bAlternateSetting]; - break; - - case DESC_ENDPOINT: - if ((bCurConfig == bConfigIndex) && - (bCurAltSetting == bAltSetting)) { - // endpoint found for desired config and alternate setting - bEP = pab[ENDP_DESC_bEndpointAddress]; - wMaxPktSize = (pab[ENDP_DESC_wMaxPacketSize]) | - (pab[ENDP_DESC_wMaxPacketSize + 1] << 8); - // configure endpoint - USBHwEPConfig(bEP, wMaxPktSize); - } - break; - - default: - break; - } - // skip to next descriptor - pab += pab[DESC_bLength]; - } - - // configure device - USBHwConfigDevice(TRUE); - } - - return TRUE; -} - - -/** - Local function to handle a standard device request - - @param [in] pSetup The setup packet - @param [in,out] *piLen Pointer to data length - @param [in,out] ppbData Data buffer. - - @return TRUE if the request was handled successfully - */ -static BOOL HandleStdDeviceReq(TSetupPacket *pSetup, int *piLen, unsigned char **ppbData) -{ - unsigned char *pbData = *ppbData; - - switch (pSetup->bRequest) { - - case REQ_GET_STATUS: - // bit 0: self-powered - // bit 1: remote wakeup = not supported - pbData[0] = 0; - pbData[1] = 0; - *piLen = 2; - break; - - case REQ_SET_ADDRESS: - USBHwSetAddress(pSetup->wValue); - break; - - case REQ_GET_DESCRIPTOR: - DBG("D%x", pSetup->wValue); - return USBGetDescriptor(pSetup->wValue, pSetup->wIndex, piLen, ppbData); - - case REQ_GET_CONFIGURATION: - // indicate if we are configured - pbData[0] = bConfiguration; - *piLen = 1; - break; - - case REQ_SET_CONFIGURATION: - if (!USBSetConfiguration(pSetup->wValue & 0xFF, 0)) { - DBG("USBSetConfiguration failed!\n"); - return FALSE; - } - // configuration successful, update current configuration - bConfiguration = pSetup->wValue & 0xFF; - break; - - case REQ_CLEAR_FEATURE: - case REQ_SET_FEATURE: - if (pSetup->wValue == FEA_REMOTE_WAKEUP) { - // put DEVICE_REMOTE_WAKEUP code here - } - if (pSetup->wValue == FEA_TEST_MODE) { - // put TEST_MODE code here - } - return FALSE; - - case REQ_SET_DESCRIPTOR: - DBG("Device req %d not implemented\n", pSetup->bRequest); - return FALSE; - - default: - DBG("Illegal device req %d\n", pSetup->bRequest); - return FALSE; - } - - return TRUE; -} - - -/** - Local function to handle a standard interface request - - @param [in] pSetup The setup packet - @param [in,out] *piLen Pointer to data length - @param [in] ppbData Data buffer. - - @return TRUE if the request was handled successfully - */ -static BOOL HandleStdInterfaceReq(TSetupPacket *pSetup, int *piLen, unsigned char **ppbData) -{ - unsigned char *pbData = *ppbData; - - switch (pSetup->bRequest) { - - case REQ_GET_STATUS: - // no bits specified - pbData[0] = 0; - pbData[1] = 0; - *piLen = 2; - break; - - case REQ_CLEAR_FEATURE: - case REQ_SET_FEATURE: - // not defined for interface - return FALSE; - - case REQ_GET_INTERFACE: // TODO use bNumInterfaces - // there is only one interface, return n-1 (= 0) - pbData[0] = 0; - *piLen = 1; - break; - - case REQ_SET_INTERFACE: // TODO use bNumInterfaces - // there is only one interface (= 0) - if (pSetup->wValue != 0) { - return FALSE; - } - *piLen = 0; - break; - - default: - DBG("Illegal interface req %d\n", pSetup->bRequest); - return FALSE; - } - - return TRUE; -} - - -/** - Local function to handle a standard endpoint request - - @param [in] pSetup The setup packet - @param [in,out] *piLen Pointer to data length - @param [in] ppbData Data buffer. - - @return TRUE if the request was handled successfully - */ -static BOOL HandleStdEndPointReq(TSetupPacket *pSetup, int *piLen, unsigned char **ppbData) -{ - unsigned char *pbData = *ppbData; - - switch (pSetup->bRequest) { - case REQ_GET_STATUS: - // bit 0 = endpointed halted or not - pbData[0] = (USBHwEPGetStatus(pSetup->wIndex) & EP_STATUS_STALLED) ? 1 : 0; - pbData[1] = 0; - *piLen = 2; - break; - - case REQ_CLEAR_FEATURE: - if (pSetup->wValue == FEA_ENDPOINT_HALT) { - // clear HALT by unstalling - USBHwEPStall(pSetup->wIndex, FALSE); - break; - } - // only ENDPOINT_HALT defined for endpoints - return FALSE; - - case REQ_SET_FEATURE: - if (pSetup->wValue == FEA_ENDPOINT_HALT) { - // set HALT by stalling - USBHwEPStall(pSetup->wIndex, TRUE); - break; - } - // only ENDPOINT_HALT defined for endpoints - return FALSE; - - case REQ_SYNCH_FRAME: - DBG("EP req %d not implemented\n", pSetup->bRequest); - return FALSE; - - default: - DBG("Illegal EP req %d\n", pSetup->bRequest); - return FALSE; - } - - return TRUE; -} - - -/** - Default handler for standard ('chapter 9') requests - - If a custom request handler was installed, this handler is called first. - - @param [in] pSetup The setup packet - @param [in,out] *piLen Pointer to data length - @param [in] ppbData Data buffer. - - @return TRUE if the request was handled successfully - */ -BOOL USBHandleStandardRequest(TSetupPacket *pSetup, int *piLen, unsigned char **ppbData) -{ - // try the custom request handler first - if ((pfnHandleCustomReq != NULL) && pfnHandleCustomReq(pSetup, piLen, ppbData)) { - return TRUE; - } - - switch (REQTYPE_GET_RECIP(pSetup->bmRequestType)) { - case REQTYPE_RECIP_DEVICE: return HandleStdDeviceReq(pSetup, piLen, ppbData); - case REQTYPE_RECIP_INTERFACE: return HandleStdInterfaceReq(pSetup, piLen, ppbData); - case REQTYPE_RECIP_ENDPOINT: return HandleStdEndPointReq(pSetup, piLen, ppbData); - default: return FALSE; - } -} - - -/** - Registers a callback for custom device requests - - In USBHandleStandardRequest, the custom request handler gets a first - chance at handling the request before it is handed over to the 'chapter 9' - request handler. - - This can be used for example in HID devices, where a REQ_GET_DESCRIPTOR - request is sent to an interface, which is not covered by the 'chapter 9' - specification. - - @param [in] pfnHandler Callback function pointer - */ -void USBRegisterCustomReqHandler(TFnHandleRequest *pfnHandler) -{ - pfnHandleCustomReq = pfnHandler; -} - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/LPCUSB/usbstruct.h b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/LPCUSB/usbstruct.h deleted file mode 100644 index 113e2fef4..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/LPCUSB/usbstruct.h +++ /dev/null @@ -1,119 +0,0 @@ -/* - LPCUSB, an USB device driver for LPC microcontrollers - Copyright (C) 2006 Bertrik Sikken (bertrik@sikken.nl) - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - 3. The name of the author may not be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - - -/** - Definitions of structures of standard USB packets -*/ - -#ifndef _USBSTRUCT_H_ -#define _USBSTRUCT_H_ - -// CodeRed - include the LPCUSB type.h file rather than NXP one directly -#include "type.h" - -/** setup packet definitions */ -typedef struct { - unsigned char bmRequestType; /**< characteristics of the specific request */ - unsigned char bRequest; /**< specific request */ - unsigned short wValue; /**< request specific parameter */ - unsigned short wIndex; /**< request specific parameter */ - unsigned short wLength; /**< length of data transfered in data phase */ -} TSetupPacket; - - -#define REQTYPE_GET_DIR(x) (((x)>>7)&0x01) -#define REQTYPE_GET_TYPE(x) (((x)>>5)&0x03) -#define REQTYPE_GET_RECIP(x) ((x)&0x1F) - -#define REQTYPE_DIR_TO_DEVICE 0 -#define REQTYPE_DIR_TO_HOST 1 - -#define REQTYPE_TYPE_STANDARD 0 -#define REQTYPE_TYPE_CLASS 1 -#define REQTYPE_TYPE_VENDOR 2 -#define REQTYPE_TYPE_RESERVED 3 - -#define REQTYPE_RECIP_DEVICE 0 -#define REQTYPE_RECIP_INTERFACE 1 -#define REQTYPE_RECIP_ENDPOINT 2 -#define REQTYPE_RECIP_OTHER 3 - -/* standard requests */ -#define REQ_GET_STATUS 0x00 -#define REQ_CLEAR_FEATURE 0x01 -#define REQ_SET_FEATURE 0x03 -#define REQ_SET_ADDRESS 0x05 -#define REQ_GET_DESCRIPTOR 0x06 -#define REQ_SET_DESCRIPTOR 0x07 -#define REQ_GET_CONFIGURATION 0x08 -#define REQ_SET_CONFIGURATION 0x09 -#define REQ_GET_INTERFACE 0x0A -#define REQ_SET_INTERFACE 0x0B -#define REQ_SYNCH_FRAME 0x0C - -/* class requests HID */ -#define HID_GET_REPORT 0x01 -#define HID_GET_IDLE 0x02 -#define HID_GET_PROTOCOL 0x03 -#define HID_SET_REPORT 0x09 -#define HID_SET_IDLE 0x0A -#define HID_SET_PROTOCOL 0x0B - -/* feature selectors */ -#define FEA_ENDPOINT_HALT 0x00 -#define FEA_REMOTE_WAKEUP 0x01 -#define FEA_TEST_MODE 0x02 - -/* - USB descriptors -*/ - -/** USB descriptor header */ -typedef struct { - unsigned char bLength; /**< descriptor length */ - unsigned char bDescriptorType; /**< descriptor type */ -} TUSBDescHeader; - -#define DESC_DEVICE 1 -#define DESC_CONFIGURATION 2 -#define DESC_STRING 3 -#define DESC_INTERFACE 4 -#define DESC_ENDPOINT 5 -#define DESC_DEVICE_QUALIFIER 6 -#define DESC_OTHER_SPEED 7 -#define DESC_INTERFACE_POWER 8 - -#define DESC_HID_HID 0x21 -#define DESC_HID_REPORT 0x22 -#define DESC_HID_PHYSICAL 0x23 - -#define GET_DESC_TYPE(x) (((x)>>8)&0xFF) -#define GET_DESC_INDEX(x) ((x)&0xFF) - -#endif /* _USBSTRUCT_H_ */ - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/ParTest.c b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/ParTest.c deleted file mode 100644 index 91f9c2af9..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/ParTest.c +++ /dev/null @@ -1,109 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* FreeRTOS.org includes. */ -#include "FreeRTOS.h" - -/* Demo application includes. */ -#include "partest.h" - -#define LED_2 ( 1UL << 24UL ) -#define LED_3 ( 1UL << 25UL ) -#define LED_4 ( 1UL << 28UL ) -#define LED_5 ( 1UL << 29UL ) - -#define partstFIO1_BITS ( LED_2 | LED_3 | LED_4 | LED_5 ) -#define partstNUM_LEDS ( 4 ) - -static unsigned long ulLEDs[] = { LED_3, LED_2, LED_5, LED_4 }; - -/*----------------------------------------------------------- - * Simple parallel port IO routines. - *-----------------------------------------------------------*/ - -void vParTestInitialise( void ) -{ - /* LEDs on port 1. */ - LPC_GPIO1->FIODIR = partstFIO1_BITS; - - /* Start will all LEDs off. */ - LPC_GPIO1->FIOCLR = partstFIO1_BITS; -} -/*-----------------------------------------------------------*/ - -void vParTestSetLED( unsigned portBASE_TYPE uxLED, signed portBASE_TYPE xValue ) -{ - if( uxLED < partstNUM_LEDS ) - { - /* Set of clear the output. */ - if( xValue ) - { - LPC_GPIO1->FIOCLR = ulLEDs[ uxLED ]; - } - else - { - LPC_GPIO1->FIOSET = ulLEDs[ uxLED ]; - } - } -} -/*-----------------------------------------------------------*/ - -void vParTestToggleLED( unsigned portBASE_TYPE uxLED ) -{ - if( uxLED < partstNUM_LEDS ) - { - if( LPC_GPIO1->FIOPIN & ulLEDs[ uxLED ] ) - { - LPC_GPIO1->FIOCLR = ulLEDs[ uxLED ]; - } - else - { - LPC_GPIO1->FIOSET = ulLEDs[ uxLED ]; - } - } -} -/*-----------------------------------------------------------*/ - -unsigned portBASE_TYPE uxParTextGetLED( unsigned portBASE_TYPE uxLED ) -{ - if( uxLED < partstNUM_LEDS ) - { - return ( LPC_GPIO1->FIOPIN & ulLEDs[ uxLED ] ); - } - else - { - return 0; - } -} -/*-----------------------------------------------------------*/ - - - - - - - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/core_cm3.h b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/core_cm3.h deleted file mode 100644 index 2b6b51a7d..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/core_cm3.h +++ /dev/null @@ -1,1818 +0,0 @@ -/**************************************************************************//** - * @file core_cm3.h - * @brief CMSIS Cortex-M3 Core Peripheral Access Layer Header File - * @version V1.30 - * @date 30. October 2009 - * - * @note - * Copyright (C) 2009 ARM Limited. All rights reserved. - * - * @par - * ARM Limited (ARM) is supplying this software for use with Cortex-M - * processor based microcontrollers. This file can be freely distributed - * within development tools that are supporting such ARM based processors. - * - * @par - * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED - * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. - * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR - * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. - * - ******************************************************************************/ - -#ifndef __CM3_CORE_H__ -#define __CM3_CORE_H__ - -/** @addtogroup CMSIS_CM3_core_LintCinfiguration CMSIS CM3 Core Lint Configuration - * - * List of Lint messages which will be suppressed and not shown: - * - Error 10: \n - * register uint32_t __regBasePri __asm("basepri"); \n - * Error 10: Expecting ';' - * . - * - Error 530: \n - * return(__regBasePri); \n - * Warning 530: Symbol '__regBasePri' (line 264) not initialized - * . - * - Error 550: \n - * __regBasePri = (basePri & 0x1ff); \n - * Warning 550: Symbol '__regBasePri' (line 271) not accessed - * . - * - Error 754: \n - * uint32_t RESERVED0[24]; \n - * Info 754: local structure member '' (line 109, file ./cm3_core.h) not referenced - * . - * - Error 750: \n - * #define __CM3_CORE_H__ \n - * Info 750: local macro '__CM3_CORE_H__' (line 43, file./cm3_core.h) not referenced - * . - * - Error 528: \n - * static __INLINE void NVIC_DisableIRQ(uint32_t IRQn) \n - * Warning 528: Symbol 'NVIC_DisableIRQ(unsigned int)' (line 419, file ./cm3_core.h) not referenced - * . - * - Error 751: \n - * } InterruptType_Type; \n - * Info 751: local typedef 'InterruptType_Type' (line 170, file ./cm3_core.h) not referenced - * . - * Note: To re-enable a Message, insert a space before 'lint' * - * - */ - -/*lint -save */ -/*lint -e10 */ -/*lint -e530 */ -/*lint -e550 */ -/*lint -e754 */ -/*lint -e750 */ -/*lint -e528 */ -/*lint -e751 */ - - -/** @addtogroup CMSIS_CM3_core_definitions CM3 Core Definitions - This file defines all structures and symbols for CMSIS core: - - CMSIS version number - - Cortex-M core registers and bitfields - - Cortex-M core peripheral base address - @{ - */ - -#ifdef __cplusplus - extern "C" { -#endif - -#define __CM3_CMSIS_VERSION_MAIN (0x01) /*!< [31:16] CMSIS HAL main version */ -#define __CM3_CMSIS_VERSION_SUB (0x30) /*!< [15:0] CMSIS HAL sub version */ -#define __CM3_CMSIS_VERSION ((__CM3_CMSIS_VERSION_MAIN << 16) | __CM3_CMSIS_VERSION_SUB) /*!< CMSIS HAL version number */ - -#define __CORTEX_M (0x03) /*!< Cortex core */ - -#include /* Include standard types */ - -#if defined (__ICCARM__) - #include /* IAR Intrinsics */ -#endif - - -#ifndef __NVIC_PRIO_BITS - #define __NVIC_PRIO_BITS 4 /*!< standard definition for NVIC Priority Bits */ -#endif - - - - -/** - * IO definitions - * - * define access restrictions to peripheral registers - */ - -#ifdef __cplusplus - #define __I volatile /*!< defines 'read only' permissions */ -#else - #define __I volatile const /*!< defines 'read only' permissions */ -#endif -#define __O volatile /*!< defines 'write only' permissions */ -#define __IO volatile /*!< defines 'read / write' permissions */ - - - -/******************************************************************************* - * Register Abstraction - ******************************************************************************/ -/** @addtogroup CMSIS_CM3_core_register CMSIS CM3 Core Register - @{ -*/ - - -/** @addtogroup CMSIS_CM3_NVIC CMSIS CM3 NVIC - memory mapped structure for Nested Vectored Interrupt Controller (NVIC) - @{ - */ -typedef struct -{ - __IO uint32_t ISER[8]; /*!< Offset: 0x000 Interrupt Set Enable Register */ - uint32_t RESERVED0[24]; - __IO uint32_t ICER[8]; /*!< Offset: 0x080 Interrupt Clear Enable Register */ - uint32_t RSERVED1[24]; - __IO uint32_t ISPR[8]; /*!< Offset: 0x100 Interrupt Set Pending Register */ - uint32_t RESERVED2[24]; - __IO uint32_t ICPR[8]; /*!< Offset: 0x180 Interrupt Clear Pending Register */ - uint32_t RESERVED3[24]; - __IO uint32_t IABR[8]; /*!< Offset: 0x200 Interrupt Active bit Register */ - uint32_t RESERVED4[56]; - __IO uint8_t IP[240]; /*!< Offset: 0x300 Interrupt Priority Register (8Bit wide) */ - uint32_t RESERVED5[644]; - __O uint32_t STIR; /*!< Offset: 0xE00 Software Trigger Interrupt Register */ -} NVIC_Type; -/*@}*/ /* end of group CMSIS_CM3_NVIC */ - - -/** @addtogroup CMSIS_CM3_SCB CMSIS CM3 SCB - memory mapped structure for System Control Block (SCB) - @{ - */ -typedef struct -{ - __I uint32_t CPUID; /*!< Offset: 0x00 CPU ID Base Register */ - __IO uint32_t ICSR; /*!< Offset: 0x04 Interrupt Control State Register */ - __IO uint32_t VTOR; /*!< Offset: 0x08 Vector Table Offset Register */ - __IO uint32_t AIRCR; /*!< Offset: 0x0C Application Interrupt / Reset Control Register */ - __IO uint32_t SCR; /*!< Offset: 0x10 System Control Register */ - __IO uint32_t CCR; /*!< Offset: 0x14 Configuration Control Register */ - __IO uint8_t SHP[12]; /*!< Offset: 0x18 System Handlers Priority Registers (4-7, 8-11, 12-15) */ - __IO uint32_t SHCSR; /*!< Offset: 0x24 System Handler Control and State Register */ - __IO uint32_t CFSR; /*!< Offset: 0x28 Configurable Fault Status Register */ - __IO uint32_t HFSR; /*!< Offset: 0x2C Hard Fault Status Register */ - __IO uint32_t DFSR; /*!< Offset: 0x30 Debug Fault Status Register */ - __IO uint32_t MMFAR; /*!< Offset: 0x34 Mem Manage Address Register */ - __IO uint32_t BFAR; /*!< Offset: 0x38 Bus Fault Address Register */ - __IO uint32_t AFSR; /*!< Offset: 0x3C Auxiliary Fault Status Register */ - __I uint32_t PFR[2]; /*!< Offset: 0x40 Processor Feature Register */ - __I uint32_t DFR; /*!< Offset: 0x48 Debug Feature Register */ - __I uint32_t ADR; /*!< Offset: 0x4C Auxiliary Feature Register */ - __I uint32_t MMFR[4]; /*!< Offset: 0x50 Memory Model Feature Register */ - __I uint32_t ISAR[5]; /*!< Offset: 0x60 ISA Feature Register */ -} SCB_Type; - -/* SCB CPUID Register Definitions */ -#define SCB_CPUID_IMPLEMENTER_Pos 24 /*!< SCB CPUID: IMPLEMENTER Position */ -#define SCB_CPUID_IMPLEMENTER_Msk (0xFFul << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */ - -#define SCB_CPUID_VARIANT_Pos 20 /*!< SCB CPUID: VARIANT Position */ -#define SCB_CPUID_VARIANT_Msk (0xFul << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */ - -#define SCB_CPUID_PARTNO_Pos 4 /*!< SCB CPUID: PARTNO Position */ -#define SCB_CPUID_PARTNO_Msk (0xFFFul << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */ - -#define SCB_CPUID_REVISION_Pos 0 /*!< SCB CPUID: REVISION Position */ -#define SCB_CPUID_REVISION_Msk (0xFul << SCB_CPUID_REVISION_Pos) /*!< SCB CPUID: REVISION Mask */ - -/* SCB Interrupt Control State Register Definitions */ -#define SCB_ICSR_NMIPENDSET_Pos 31 /*!< SCB ICSR: NMIPENDSET Position */ -#define SCB_ICSR_NMIPENDSET_Msk (1ul << SCB_ICSR_NMIPENDSET_Pos) /*!< SCB ICSR: NMIPENDSET Mask */ - -#define SCB_ICSR_PENDSVSET_Pos 28 /*!< SCB ICSR: PENDSVSET Position */ -#define SCB_ICSR_PENDSVSET_Msk (1ul << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */ - -#define SCB_ICSR_PENDSVCLR_Pos 27 /*!< SCB ICSR: PENDSVCLR Position */ -#define SCB_ICSR_PENDSVCLR_Msk (1ul << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */ - -#define SCB_ICSR_PENDSTSET_Pos 26 /*!< SCB ICSR: PENDSTSET Position */ -#define SCB_ICSR_PENDSTSET_Msk (1ul << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */ - -#define SCB_ICSR_PENDSTCLR_Pos 25 /*!< SCB ICSR: PENDSTCLR Position */ -#define SCB_ICSR_PENDSTCLR_Msk (1ul << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */ - -#define SCB_ICSR_ISRPREEMPT_Pos 23 /*!< SCB ICSR: ISRPREEMPT Position */ -#define SCB_ICSR_ISRPREEMPT_Msk (1ul << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */ - -#define SCB_ICSR_ISRPENDING_Pos 22 /*!< SCB ICSR: ISRPENDING Position */ -#define SCB_ICSR_ISRPENDING_Msk (1ul << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */ - -#define SCB_ICSR_VECTPENDING_Pos 12 /*!< SCB ICSR: VECTPENDING Position */ -#define SCB_ICSR_VECTPENDING_Msk (0x1FFul << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */ - -#define SCB_ICSR_RETTOBASE_Pos 11 /*!< SCB ICSR: RETTOBASE Position */ -#define SCB_ICSR_RETTOBASE_Msk (1ul << SCB_ICSR_RETTOBASE_Pos) /*!< SCB ICSR: RETTOBASE Mask */ - -#define SCB_ICSR_VECTACTIVE_Pos 0 /*!< SCB ICSR: VECTACTIVE Position */ -#define SCB_ICSR_VECTACTIVE_Msk (0x1FFul << SCB_ICSR_VECTACTIVE_Pos) /*!< SCB ICSR: VECTACTIVE Mask */ - -/* SCB Interrupt Control State Register Definitions */ -#define SCB_VTOR_TBLBASE_Pos 29 /*!< SCB VTOR: TBLBASE Position */ -#define SCB_VTOR_TBLBASE_Msk (0x1FFul << SCB_VTOR_TBLBASE_Pos) /*!< SCB VTOR: TBLBASE Mask */ - -#define SCB_VTOR_TBLOFF_Pos 7 /*!< SCB VTOR: TBLOFF Position */ -#define SCB_VTOR_TBLOFF_Msk (0x3FFFFFul << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF Mask */ - -/* SCB Application Interrupt and Reset Control Register Definitions */ -#define SCB_AIRCR_VECTKEY_Pos 16 /*!< SCB AIRCR: VECTKEY Position */ -#define SCB_AIRCR_VECTKEY_Msk (0xFFFFul << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */ - -#define SCB_AIRCR_VECTKEYSTAT_Pos 16 /*!< SCB AIRCR: VECTKEYSTAT Position */ -#define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFul << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */ - -#define SCB_AIRCR_ENDIANESS_Pos 15 /*!< SCB AIRCR: ENDIANESS Position */ -#define SCB_AIRCR_ENDIANESS_Msk (1ul << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */ - -#define SCB_AIRCR_PRIGROUP_Pos 8 /*!< SCB AIRCR: PRIGROUP Position */ -#define SCB_AIRCR_PRIGROUP_Msk (7ul << SCB_AIRCR_PRIGROUP_Pos) /*!< SCB AIRCR: PRIGROUP Mask */ - -#define SCB_AIRCR_SYSRESETREQ_Pos 2 /*!< SCB AIRCR: SYSRESETREQ Position */ -#define SCB_AIRCR_SYSRESETREQ_Msk (1ul << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */ - -#define SCB_AIRCR_VECTCLRACTIVE_Pos 1 /*!< SCB AIRCR: VECTCLRACTIVE Position */ -#define SCB_AIRCR_VECTCLRACTIVE_Msk (1ul << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */ - -#define SCB_AIRCR_VECTRESET_Pos 0 /*!< SCB AIRCR: VECTRESET Position */ -#define SCB_AIRCR_VECTRESET_Msk (1ul << SCB_AIRCR_VECTRESET_Pos) /*!< SCB AIRCR: VECTRESET Mask */ - -/* SCB System Control Register Definitions */ -#define SCB_SCR_SEVONPEND_Pos 4 /*!< SCB SCR: SEVONPEND Position */ -#define SCB_SCR_SEVONPEND_Msk (1ul << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */ - -#define SCB_SCR_SLEEPDEEP_Pos 2 /*!< SCB SCR: SLEEPDEEP Position */ -#define SCB_SCR_SLEEPDEEP_Msk (1ul << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */ - -#define SCB_SCR_SLEEPONEXIT_Pos 1 /*!< SCB SCR: SLEEPONEXIT Position */ -#define SCB_SCR_SLEEPONEXIT_Msk (1ul << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */ - -/* SCB Configuration Control Register Definitions */ -#define SCB_CCR_STKALIGN_Pos 9 /*!< SCB CCR: STKALIGN Position */ -#define SCB_CCR_STKALIGN_Msk (1ul << SCB_CCR_STKALIGN_Pos) /*!< SCB CCR: STKALIGN Mask */ - -#define SCB_CCR_BFHFNMIGN_Pos 8 /*!< SCB CCR: BFHFNMIGN Position */ -#define SCB_CCR_BFHFNMIGN_Msk (1ul << SCB_CCR_BFHFNMIGN_Pos) /*!< SCB CCR: BFHFNMIGN Mask */ - -#define SCB_CCR_DIV_0_TRP_Pos 4 /*!< SCB CCR: DIV_0_TRP Position */ -#define SCB_CCR_DIV_0_TRP_Msk (1ul << SCB_CCR_DIV_0_TRP_Pos) /*!< SCB CCR: DIV_0_TRP Mask */ - -#define SCB_CCR_UNALIGN_TRP_Pos 3 /*!< SCB CCR: UNALIGN_TRP Position */ -#define SCB_CCR_UNALIGN_TRP_Msk (1ul << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */ - -#define SCB_CCR_USERSETMPEND_Pos 1 /*!< SCB CCR: USERSETMPEND Position */ -#define SCB_CCR_USERSETMPEND_Msk (1ul << SCB_CCR_USERSETMPEND_Pos) /*!< SCB CCR: USERSETMPEND Mask */ - -#define SCB_CCR_NONBASETHRDENA_Pos 0 /*!< SCB CCR: NONBASETHRDENA Position */ -#define SCB_CCR_NONBASETHRDENA_Msk (1ul << SCB_CCR_NONBASETHRDENA_Pos) /*!< SCB CCR: NONBASETHRDENA Mask */ - -/* SCB System Handler Control and State Register Definitions */ -#define SCB_SHCSR_USGFAULTENA_Pos 18 /*!< SCB SHCSR: USGFAULTENA Position */ -#define SCB_SHCSR_USGFAULTENA_Msk (1ul << SCB_SHCSR_USGFAULTENA_Pos) /*!< SCB SHCSR: USGFAULTENA Mask */ - -#define SCB_SHCSR_BUSFAULTENA_Pos 17 /*!< SCB SHCSR: BUSFAULTENA Position */ -#define SCB_SHCSR_BUSFAULTENA_Msk (1ul << SCB_SHCSR_BUSFAULTENA_Pos) /*!< SCB SHCSR: BUSFAULTENA Mask */ - -#define SCB_SHCSR_MEMFAULTENA_Pos 16 /*!< SCB SHCSR: MEMFAULTENA Position */ -#define SCB_SHCSR_MEMFAULTENA_Msk (1ul << SCB_SHCSR_MEMFAULTENA_Pos) /*!< SCB SHCSR: MEMFAULTENA Mask */ - -#define SCB_SHCSR_SVCALLPENDED_Pos 15 /*!< SCB SHCSR: SVCALLPENDED Position */ -#define SCB_SHCSR_SVCALLPENDED_Msk (1ul << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ - -#define SCB_SHCSR_BUSFAULTPENDED_Pos 14 /*!< SCB SHCSR: BUSFAULTPENDED Position */ -#define SCB_SHCSR_BUSFAULTPENDED_Msk (1ul << SCB_SHCSR_BUSFAULTPENDED_Pos) /*!< SCB SHCSR: BUSFAULTPENDED Mask */ - -#define SCB_SHCSR_MEMFAULTPENDED_Pos 13 /*!< SCB SHCSR: MEMFAULTPENDED Position */ -#define SCB_SHCSR_MEMFAULTPENDED_Msk (1ul << SCB_SHCSR_MEMFAULTPENDED_Pos) /*!< SCB SHCSR: MEMFAULTPENDED Mask */ - -#define SCB_SHCSR_USGFAULTPENDED_Pos 12 /*!< SCB SHCSR: USGFAULTPENDED Position */ -#define SCB_SHCSR_USGFAULTPENDED_Msk (1ul << SCB_SHCSR_USGFAULTPENDED_Pos) /*!< SCB SHCSR: USGFAULTPENDED Mask */ - -#define SCB_SHCSR_SYSTICKACT_Pos 11 /*!< SCB SHCSR: SYSTICKACT Position */ -#define SCB_SHCSR_SYSTICKACT_Msk (1ul << SCB_SHCSR_SYSTICKACT_Pos) /*!< SCB SHCSR: SYSTICKACT Mask */ - -#define SCB_SHCSR_PENDSVACT_Pos 10 /*!< SCB SHCSR: PENDSVACT Position */ -#define SCB_SHCSR_PENDSVACT_Msk (1ul << SCB_SHCSR_PENDSVACT_Pos) /*!< SCB SHCSR: PENDSVACT Mask */ - -#define SCB_SHCSR_MONITORACT_Pos 8 /*!< SCB SHCSR: MONITORACT Position */ -#define SCB_SHCSR_MONITORACT_Msk (1ul << SCB_SHCSR_MONITORACT_Pos) /*!< SCB SHCSR: MONITORACT Mask */ - -#define SCB_SHCSR_SVCALLACT_Pos 7 /*!< SCB SHCSR: SVCALLACT Position */ -#define SCB_SHCSR_SVCALLACT_Msk (1ul << SCB_SHCSR_SVCALLACT_Pos) /*!< SCB SHCSR: SVCALLACT Mask */ - -#define SCB_SHCSR_USGFAULTACT_Pos 3 /*!< SCB SHCSR: USGFAULTACT Position */ -#define SCB_SHCSR_USGFAULTACT_Msk (1ul << SCB_SHCSR_USGFAULTACT_Pos) /*!< SCB SHCSR: USGFAULTACT Mask */ - -#define SCB_SHCSR_BUSFAULTACT_Pos 1 /*!< SCB SHCSR: BUSFAULTACT Position */ -#define SCB_SHCSR_BUSFAULTACT_Msk (1ul << SCB_SHCSR_BUSFAULTACT_Pos) /*!< SCB SHCSR: BUSFAULTACT Mask */ - -#define SCB_SHCSR_MEMFAULTACT_Pos 0 /*!< SCB SHCSR: MEMFAULTACT Position */ -#define SCB_SHCSR_MEMFAULTACT_Msk (1ul << SCB_SHCSR_MEMFAULTACT_Pos) /*!< SCB SHCSR: MEMFAULTACT Mask */ - -/* SCB Configurable Fault Status Registers Definitions */ -#define SCB_CFSR_USGFAULTSR_Pos 16 /*!< SCB CFSR: Usage Fault Status Register Position */ -#define SCB_CFSR_USGFAULTSR_Msk (0xFFFFul << SCB_CFSR_USGFAULTSR_Pos) /*!< SCB CFSR: Usage Fault Status Register Mask */ - -#define SCB_CFSR_BUSFAULTSR_Pos 8 /*!< SCB CFSR: Bus Fault Status Register Position */ -#define SCB_CFSR_BUSFAULTSR_Msk (0xFFul << SCB_CFSR_BUSFAULTSR_Pos) /*!< SCB CFSR: Bus Fault Status Register Mask */ - -#define SCB_CFSR_MEMFAULTSR_Pos 0 /*!< SCB CFSR: Memory Manage Fault Status Register Position */ -#define SCB_CFSR_MEMFAULTSR_Msk (0xFFul << SCB_CFSR_MEMFAULTSR_Pos) /*!< SCB CFSR: Memory Manage Fault Status Register Mask */ - -/* SCB Hard Fault Status Registers Definitions */ -#define SCB_HFSR_DEBUGEVT_Pos 31 /*!< SCB HFSR: DEBUGEVT Position */ -#define SCB_HFSR_DEBUGEVT_Msk (1ul << SCB_HFSR_DEBUGEVT_Pos) /*!< SCB HFSR: DEBUGEVT Mask */ - -#define SCB_HFSR_FORCED_Pos 30 /*!< SCB HFSR: FORCED Position */ -#define SCB_HFSR_FORCED_Msk (1ul << SCB_HFSR_FORCED_Pos) /*!< SCB HFSR: FORCED Mask */ - -#define SCB_HFSR_VECTTBL_Pos 1 /*!< SCB HFSR: VECTTBL Position */ -#define SCB_HFSR_VECTTBL_Msk (1ul << SCB_HFSR_VECTTBL_Pos) /*!< SCB HFSR: VECTTBL Mask */ - -/* SCB Debug Fault Status Register Definitions */ -#define SCB_DFSR_EXTERNAL_Pos 4 /*!< SCB DFSR: EXTERNAL Position */ -#define SCB_DFSR_EXTERNAL_Msk (1ul << SCB_DFSR_EXTERNAL_Pos) /*!< SCB DFSR: EXTERNAL Mask */ - -#define SCB_DFSR_VCATCH_Pos 3 /*!< SCB DFSR: VCATCH Position */ -#define SCB_DFSR_VCATCH_Msk (1ul << SCB_DFSR_VCATCH_Pos) /*!< SCB DFSR: VCATCH Mask */ - -#define SCB_DFSR_DWTTRAP_Pos 2 /*!< SCB DFSR: DWTTRAP Position */ -#define SCB_DFSR_DWTTRAP_Msk (1ul << SCB_DFSR_DWTTRAP_Pos) /*!< SCB DFSR: DWTTRAP Mask */ - -#define SCB_DFSR_BKPT_Pos 1 /*!< SCB DFSR: BKPT Position */ -#define SCB_DFSR_BKPT_Msk (1ul << SCB_DFSR_BKPT_Pos) /*!< SCB DFSR: BKPT Mask */ - -#define SCB_DFSR_HALTED_Pos 0 /*!< SCB DFSR: HALTED Position */ -#define SCB_DFSR_HALTED_Msk (1ul << SCB_DFSR_HALTED_Pos) /*!< SCB DFSR: HALTED Mask */ -/*@}*/ /* end of group CMSIS_CM3_SCB */ - - -/** @addtogroup CMSIS_CM3_SysTick CMSIS CM3 SysTick - memory mapped structure for SysTick - @{ - */ -typedef struct -{ - __IO uint32_t CTRL; /*!< Offset: 0x00 SysTick Control and Status Register */ - __IO uint32_t LOAD; /*!< Offset: 0x04 SysTick Reload Value Register */ - __IO uint32_t VAL; /*!< Offset: 0x08 SysTick Current Value Register */ - __I uint32_t CALIB; /*!< Offset: 0x0C SysTick Calibration Register */ -} SysTick_Type; - -/* SysTick Control / Status Register Definitions */ -#define SysTick_CTRL_COUNTFLAG_Pos 16 /*!< SysTick CTRL: COUNTFLAG Position */ -#define SysTick_CTRL_COUNTFLAG_Msk (1ul << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */ - -#define SysTick_CTRL_CLKSOURCE_Pos 2 /*!< SysTick CTRL: CLKSOURCE Position */ -#define SysTick_CTRL_CLKSOURCE_Msk (1ul << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */ - -#define SysTick_CTRL_TICKINT_Pos 1 /*!< SysTick CTRL: TICKINT Position */ -#define SysTick_CTRL_TICKINT_Msk (1ul << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */ - -#define SysTick_CTRL_ENABLE_Pos 0 /*!< SysTick CTRL: ENABLE Position */ -#define SysTick_CTRL_ENABLE_Msk (1ul << SysTick_CTRL_ENABLE_Pos) /*!< SysTick CTRL: ENABLE Mask */ - -/* SysTick Reload Register Definitions */ -#define SysTick_LOAD_RELOAD_Pos 0 /*!< SysTick LOAD: RELOAD Position */ -#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFul << SysTick_LOAD_RELOAD_Pos) /*!< SysTick LOAD: RELOAD Mask */ - -/* SysTick Current Register Definitions */ -#define SysTick_VAL_CURRENT_Pos 0 /*!< SysTick VAL: CURRENT Position */ -#define SysTick_VAL_CURRENT_Msk (0xFFFFFFul << SysTick_VAL_CURRENT_Pos) /*!< SysTick VAL: CURRENT Mask */ - -/* SysTick Calibration Register Definitions */ -#define SysTick_CALIB_NOREF_Pos 31 /*!< SysTick CALIB: NOREF Position */ -#define SysTick_CALIB_NOREF_Msk (1ul << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */ - -#define SysTick_CALIB_SKEW_Pos 30 /*!< SysTick CALIB: SKEW Position */ -#define SysTick_CALIB_SKEW_Msk (1ul << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */ - -#define SysTick_CALIB_TENMS_Pos 0 /*!< SysTick CALIB: TENMS Position */ -#define SysTick_CALIB_TENMS_Msk (0xFFFFFFul << SysTick_VAL_CURRENT_Pos) /*!< SysTick CALIB: TENMS Mask */ -/*@}*/ /* end of group CMSIS_CM3_SysTick */ - - -/** @addtogroup CMSIS_CM3_ITM CMSIS CM3 ITM - memory mapped structure for Instrumentation Trace Macrocell (ITM) - @{ - */ -typedef struct -{ - __O union - { - __O uint8_t u8; /*!< Offset: ITM Stimulus Port 8-bit */ - __O uint16_t u16; /*!< Offset: ITM Stimulus Port 16-bit */ - __O uint32_t u32; /*!< Offset: ITM Stimulus Port 32-bit */ - } PORT [32]; /*!< Offset: 0x00 ITM Stimulus Port Registers */ - uint32_t RESERVED0[864]; - __IO uint32_t TER; /*!< Offset: ITM Trace Enable Register */ - uint32_t RESERVED1[15]; - __IO uint32_t TPR; /*!< Offset: ITM Trace Privilege Register */ - uint32_t RESERVED2[15]; - __IO uint32_t TCR; /*!< Offset: ITM Trace Control Register */ - uint32_t RESERVED3[29]; - __IO uint32_t IWR; /*!< Offset: ITM Integration Write Register */ - __IO uint32_t IRR; /*!< Offset: ITM Integration Read Register */ - __IO uint32_t IMCR; /*!< Offset: ITM Integration Mode Control Register */ - uint32_t RESERVED4[43]; - __IO uint32_t LAR; /*!< Offset: ITM Lock Access Register */ - __IO uint32_t LSR; /*!< Offset: ITM Lock Status Register */ - uint32_t RESERVED5[6]; - __I uint32_t PID4; /*!< Offset: ITM Peripheral Identification Register #4 */ - __I uint32_t PID5; /*!< Offset: ITM Peripheral Identification Register #5 */ - __I uint32_t PID6; /*!< Offset: ITM Peripheral Identification Register #6 */ - __I uint32_t PID7; /*!< Offset: ITM Peripheral Identification Register #7 */ - __I uint32_t PID0; /*!< Offset: ITM Peripheral Identification Register #0 */ - __I uint32_t PID1; /*!< Offset: ITM Peripheral Identification Register #1 */ - __I uint32_t PID2; /*!< Offset: ITM Peripheral Identification Register #2 */ - __I uint32_t PID3; /*!< Offset: ITM Peripheral Identification Register #3 */ - __I uint32_t CID0; /*!< Offset: ITM Component Identification Register #0 */ - __I uint32_t CID1; /*!< Offset: ITM Component Identification Register #1 */ - __I uint32_t CID2; /*!< Offset: ITM Component Identification Register #2 */ - __I uint32_t CID3; /*!< Offset: ITM Component Identification Register #3 */ -} ITM_Type; - -/* ITM Trace Privilege Register Definitions */ -#define ITM_TPR_PRIVMASK_Pos 0 /*!< ITM TPR: PRIVMASK Position */ -#define ITM_TPR_PRIVMASK_Msk (0xFul << ITM_TPR_PRIVMASK_Pos) /*!< ITM TPR: PRIVMASK Mask */ - -/* ITM Trace Control Register Definitions */ -#define ITM_TCR_BUSY_Pos 23 /*!< ITM TCR: BUSY Position */ -#define ITM_TCR_BUSY_Msk (1ul << ITM_TCR_BUSY_Pos) /*!< ITM TCR: BUSY Mask */ - -#define ITM_TCR_ATBID_Pos 16 /*!< ITM TCR: ATBID Position */ -#define ITM_TCR_ATBID_Msk (0x7Ful << ITM_TCR_ATBID_Pos) /*!< ITM TCR: ATBID Mask */ - -#define ITM_TCR_TSPrescale_Pos 8 /*!< ITM TCR: TSPrescale Position */ -#define ITM_TCR_TSPrescale_Msk (3ul << ITM_TCR_TSPrescale_Pos) /*!< ITM TCR: TSPrescale Mask */ - -#define ITM_TCR_SWOENA_Pos 4 /*!< ITM TCR: SWOENA Position */ -#define ITM_TCR_SWOENA_Msk (1ul << ITM_TCR_SWOENA_Pos) /*!< ITM TCR: SWOENA Mask */ - -#define ITM_TCR_DWTENA_Pos 3 /*!< ITM TCR: DWTENA Position */ -#define ITM_TCR_DWTENA_Msk (1ul << ITM_TCR_DWTENA_Pos) /*!< ITM TCR: DWTENA Mask */ - -#define ITM_TCR_SYNCENA_Pos 2 /*!< ITM TCR: SYNCENA Position */ -#define ITM_TCR_SYNCENA_Msk (1ul << ITM_TCR_SYNCENA_Pos) /*!< ITM TCR: SYNCENA Mask */ - -#define ITM_TCR_TSENA_Pos 1 /*!< ITM TCR: TSENA Position */ -#define ITM_TCR_TSENA_Msk (1ul << ITM_TCR_TSENA_Pos) /*!< ITM TCR: TSENA Mask */ - -#define ITM_TCR_ITMENA_Pos 0 /*!< ITM TCR: ITM Enable bit Position */ -#define ITM_TCR_ITMENA_Msk (1ul << ITM_TCR_ITMENA_Pos) /*!< ITM TCR: ITM Enable bit Mask */ - -/* ITM Integration Write Register Definitions */ -#define ITM_IWR_ATVALIDM_Pos 0 /*!< ITM IWR: ATVALIDM Position */ -#define ITM_IWR_ATVALIDM_Msk (1ul << ITM_IWR_ATVALIDM_Pos) /*!< ITM IWR: ATVALIDM Mask */ - -/* ITM Integration Read Register Definitions */ -#define ITM_IRR_ATREADYM_Pos 0 /*!< ITM IRR: ATREADYM Position */ -#define ITM_IRR_ATREADYM_Msk (1ul << ITM_IRR_ATREADYM_Pos) /*!< ITM IRR: ATREADYM Mask */ - -/* ITM Integration Mode Control Register Definitions */ -#define ITM_IMCR_INTEGRATION_Pos 0 /*!< ITM IMCR: INTEGRATION Position */ -#define ITM_IMCR_INTEGRATION_Msk (1ul << ITM_IMCR_INTEGRATION_Pos) /*!< ITM IMCR: INTEGRATION Mask */ - -/* ITM Lock Status Register Definitions */ -#define ITM_LSR_ByteAcc_Pos 2 /*!< ITM LSR: ByteAcc Position */ -#define ITM_LSR_ByteAcc_Msk (1ul << ITM_LSR_ByteAcc_Pos) /*!< ITM LSR: ByteAcc Mask */ - -#define ITM_LSR_Access_Pos 1 /*!< ITM LSR: Access Position */ -#define ITM_LSR_Access_Msk (1ul << ITM_LSR_Access_Pos) /*!< ITM LSR: Access Mask */ - -#define ITM_LSR_Present_Pos 0 /*!< ITM LSR: Present Position */ -#define ITM_LSR_Present_Msk (1ul << ITM_LSR_Present_Pos) /*!< ITM LSR: Present Mask */ -/*@}*/ /* end of group CMSIS_CM3_ITM */ - - -/** @addtogroup CMSIS_CM3_InterruptType CMSIS CM3 Interrupt Type - memory mapped structure for Interrupt Type - @{ - */ -typedef struct -{ - uint32_t RESERVED0; - __I uint32_t ICTR; /*!< Offset: 0x04 Interrupt Control Type Register */ -#if ((defined __CM3_REV) && (__CM3_REV >= 0x200)) - __IO uint32_t ACTLR; /*!< Offset: 0x08 Auxiliary Control Register */ -#else - uint32_t RESERVED1; -#endif -} InterruptType_Type; - -/* Interrupt Controller Type Register Definitions */ -#define InterruptType_ICTR_INTLINESNUM_Pos 0 /*!< InterruptType ICTR: INTLINESNUM Position */ -#define InterruptType_ICTR_INTLINESNUM_Msk (0x1Ful << InterruptType_ICTR_INTLINESNUM_Pos) /*!< InterruptType ICTR: INTLINESNUM Mask */ - -/* Auxiliary Control Register Definitions */ -#define InterruptType_ACTLR_DISFOLD_Pos 2 /*!< InterruptType ACTLR: DISFOLD Position */ -#define InterruptType_ACTLR_DISFOLD_Msk (1ul << InterruptType_ACTLR_DISFOLD_Pos) /*!< InterruptType ACTLR: DISFOLD Mask */ - -#define InterruptType_ACTLR_DISDEFWBUF_Pos 1 /*!< InterruptType ACTLR: DISDEFWBUF Position */ -#define InterruptType_ACTLR_DISDEFWBUF_Msk (1ul << InterruptType_ACTLR_DISDEFWBUF_Pos) /*!< InterruptType ACTLR: DISDEFWBUF Mask */ - -#define InterruptType_ACTLR_DISMCYCINT_Pos 0 /*!< InterruptType ACTLR: DISMCYCINT Position */ -#define InterruptType_ACTLR_DISMCYCINT_Msk (1ul << InterruptType_ACTLR_DISMCYCINT_Pos) /*!< InterruptType ACTLR: DISMCYCINT Mask */ -/*@}*/ /* end of group CMSIS_CM3_InterruptType */ - - -#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1) -/** @addtogroup CMSIS_CM3_MPU CMSIS CM3 MPU - memory mapped structure for Memory Protection Unit (MPU) - @{ - */ -typedef struct -{ - __I uint32_t TYPE; /*!< Offset: 0x00 MPU Type Register */ - __IO uint32_t CTRL; /*!< Offset: 0x04 MPU Control Register */ - __IO uint32_t RNR; /*!< Offset: 0x08 MPU Region RNRber Register */ - __IO uint32_t RBAR; /*!< Offset: 0x0C MPU Region Base Address Register */ - __IO uint32_t RASR; /*!< Offset: 0x10 MPU Region Attribute and Size Register */ - __IO uint32_t RBAR_A1; /*!< Offset: 0x14 MPU Alias 1 Region Base Address Register */ - __IO uint32_t RASR_A1; /*!< Offset: 0x18 MPU Alias 1 Region Attribute and Size Register */ - __IO uint32_t RBAR_A2; /*!< Offset: 0x1C MPU Alias 2 Region Base Address Register */ - __IO uint32_t RASR_A2; /*!< Offset: 0x20 MPU Alias 2 Region Attribute and Size Register */ - __IO uint32_t RBAR_A3; /*!< Offset: 0x24 MPU Alias 3 Region Base Address Register */ - __IO uint32_t RASR_A3; /*!< Offset: 0x28 MPU Alias 3 Region Attribute and Size Register */ -} MPU_Type; - -/* MPU Type Register */ -#define MPU_TYPE_IREGION_Pos 16 /*!< MPU TYPE: IREGION Position */ -#define MPU_TYPE_IREGION_Msk (0xFFul << MPU_TYPE_IREGION_Pos) /*!< MPU TYPE: IREGION Mask */ - -#define MPU_TYPE_DREGION_Pos 8 /*!< MPU TYPE: DREGION Position */ -#define MPU_TYPE_DREGION_Msk (0xFFul << MPU_TYPE_DREGION_Pos) /*!< MPU TYPE: DREGION Mask */ - -#define MPU_TYPE_SEPARATE_Pos 0 /*!< MPU TYPE: SEPARATE Position */ -#define MPU_TYPE_SEPARATE_Msk (1ul << MPU_TYPE_SEPARATE_Pos) /*!< MPU TYPE: SEPARATE Mask */ - -/* MPU Control Register */ -#define MPU_CTRL_PRIVDEFENA_Pos 2 /*!< MPU CTRL: PRIVDEFENA Position */ -#define MPU_CTRL_PRIVDEFENA_Msk (1ul << MPU_CTRL_PRIVDEFENA_Pos) /*!< MPU CTRL: PRIVDEFENA Mask */ - -#define MPU_CTRL_HFNMIENA_Pos 1 /*!< MPU CTRL: HFNMIENA Position */ -#define MPU_CTRL_HFNMIENA_Msk (1ul << MPU_CTRL_HFNMIENA_Pos) /*!< MPU CTRL: HFNMIENA Mask */ - -#define MPU_CTRL_ENABLE_Pos 0 /*!< MPU CTRL: ENABLE Position */ -#define MPU_CTRL_ENABLE_Msk (1ul << MPU_CTRL_ENABLE_Pos) /*!< MPU CTRL: ENABLE Mask */ - -/* MPU Region Number Register */ -#define MPU_RNR_REGION_Pos 0 /*!< MPU RNR: REGION Position */ -#define MPU_RNR_REGION_Msk (0xFFul << MPU_RNR_REGION_Pos) /*!< MPU RNR: REGION Mask */ - -/* MPU Region Base Address Register */ -#define MPU_RBAR_ADDR_Pos 5 /*!< MPU RBAR: ADDR Position */ -#define MPU_RBAR_ADDR_Msk (0x7FFFFFFul << MPU_RBAR_ADDR_Pos) /*!< MPU RBAR: ADDR Mask */ - -#define MPU_RBAR_VALID_Pos 4 /*!< MPU RBAR: VALID Position */ -#define MPU_RBAR_VALID_Msk (1ul << MPU_RBAR_VALID_Pos) /*!< MPU RBAR: VALID Mask */ - -#define MPU_RBAR_REGION_Pos 0 /*!< MPU RBAR: REGION Position */ -#define MPU_RBAR_REGION_Msk (0xFul << MPU_RBAR_REGION_Pos) /*!< MPU RBAR: REGION Mask */ - -/* MPU Region Attribute and Size Register */ -#define MPU_RASR_XN_Pos 28 /*!< MPU RASR: XN Position */ -#define MPU_RASR_XN_Msk (1ul << MPU_RASR_XN_Pos) /*!< MPU RASR: XN Mask */ - -#define MPU_RASR_AP_Pos 24 /*!< MPU RASR: AP Position */ -#define MPU_RASR_AP_Msk (7ul << MPU_RASR_AP_Pos) /*!< MPU RASR: AP Mask */ - -#define MPU_RASR_TEX_Pos 19 /*!< MPU RASR: TEX Position */ -#define MPU_RASR_TEX_Msk (7ul << MPU_RASR_TEX_Pos) /*!< MPU RASR: TEX Mask */ - -#define MPU_RASR_S_Pos 18 /*!< MPU RASR: Shareable bit Position */ -#define MPU_RASR_S_Msk (1ul << MPU_RASR_S_Pos) /*!< MPU RASR: Shareable bit Mask */ - -#define MPU_RASR_C_Pos 17 /*!< MPU RASR: Cacheable bit Position */ -#define MPU_RASR_C_Msk (1ul << MPU_RASR_C_Pos) /*!< MPU RASR: Cacheable bit Mask */ - -#define MPU_RASR_B_Pos 16 /*!< MPU RASR: Bufferable bit Position */ -#define MPU_RASR_B_Msk (1ul << MPU_RASR_B_Pos) /*!< MPU RASR: Bufferable bit Mask */ - -#define MPU_RASR_SRD_Pos 8 /*!< MPU RASR: Sub-Region Disable Position */ -#define MPU_RASR_SRD_Msk (0xFFul << MPU_RASR_SRD_Pos) /*!< MPU RASR: Sub-Region Disable Mask */ - -#define MPU_RASR_SIZE_Pos 1 /*!< MPU RASR: Region Size Field Position */ -#define MPU_RASR_SIZE_Msk (0x1Ful << MPU_RASR_SIZE_Pos) /*!< MPU RASR: Region Size Field Mask */ - -#define MPU_RASR_ENA_Pos 0 /*!< MPU RASR: Region enable bit Position */ -#define MPU_RASR_ENA_Msk (0x1Ful << MPU_RASR_ENA_Pos) /*!< MPU RASR: Region enable bit Disable Mask */ - -/*@}*/ /* end of group CMSIS_CM3_MPU */ -#endif - - -/** @addtogroup CMSIS_CM3_CoreDebug CMSIS CM3 Core Debug - memory mapped structure for Core Debug Register - @{ - */ -typedef struct -{ - __IO uint32_t DHCSR; /*!< Offset: 0x00 Debug Halting Control and Status Register */ - __O uint32_t DCRSR; /*!< Offset: 0x04 Debug Core Register Selector Register */ - __IO uint32_t DCRDR; /*!< Offset: 0x08 Debug Core Register Data Register */ - __IO uint32_t DEMCR; /*!< Offset: 0x0C Debug Exception and Monitor Control Register */ -} CoreDebug_Type; - -/* Debug Halting Control and Status Register */ -#define CoreDebug_DHCSR_DBGKEY_Pos 16 /*!< CoreDebug DHCSR: DBGKEY Position */ -#define CoreDebug_DHCSR_DBGKEY_Msk (0xFFFFul << CoreDebug_DHCSR_DBGKEY_Pos) /*!< CoreDebug DHCSR: DBGKEY Mask */ - -#define CoreDebug_DHCSR_S_RESET_ST_Pos 25 /*!< CoreDebug DHCSR: S_RESET_ST Position */ -#define CoreDebug_DHCSR_S_RESET_ST_Msk (1ul << CoreDebug_DHCSR_S_RESET_ST_Pos) /*!< CoreDebug DHCSR: S_RESET_ST Mask */ - -#define CoreDebug_DHCSR_S_RETIRE_ST_Pos 24 /*!< CoreDebug DHCSR: S_RETIRE_ST Position */ -#define CoreDebug_DHCSR_S_RETIRE_ST_Msk (1ul << CoreDebug_DHCSR_S_RETIRE_ST_Pos) /*!< CoreDebug DHCSR: S_RETIRE_ST Mask */ - -#define CoreDebug_DHCSR_S_LOCKUP_Pos 19 /*!< CoreDebug DHCSR: S_LOCKUP Position */ -#define CoreDebug_DHCSR_S_LOCKUP_Msk (1ul << CoreDebug_DHCSR_S_LOCKUP_Pos) /*!< CoreDebug DHCSR: S_LOCKUP Mask */ - -#define CoreDebug_DHCSR_S_SLEEP_Pos 18 /*!< CoreDebug DHCSR: S_SLEEP Position */ -#define CoreDebug_DHCSR_S_SLEEP_Msk (1ul << CoreDebug_DHCSR_S_SLEEP_Pos) /*!< CoreDebug DHCSR: S_SLEEP Mask */ - -#define CoreDebug_DHCSR_S_HALT_Pos 17 /*!< CoreDebug DHCSR: S_HALT Position */ -#define CoreDebug_DHCSR_S_HALT_Msk (1ul << CoreDebug_DHCSR_S_HALT_Pos) /*!< CoreDebug DHCSR: S_HALT Mask */ - -#define CoreDebug_DHCSR_S_REGRDY_Pos 16 /*!< CoreDebug DHCSR: S_REGRDY Position */ -#define CoreDebug_DHCSR_S_REGRDY_Msk (1ul << CoreDebug_DHCSR_S_REGRDY_Pos) /*!< CoreDebug DHCSR: S_REGRDY Mask */ - -#define CoreDebug_DHCSR_C_SNAPSTALL_Pos 5 /*!< CoreDebug DHCSR: C_SNAPSTALL Position */ -#define CoreDebug_DHCSR_C_SNAPSTALL_Msk (1ul << CoreDebug_DHCSR_C_SNAPSTALL_Pos) /*!< CoreDebug DHCSR: C_SNAPSTALL Mask */ - -#define CoreDebug_DHCSR_C_MASKINTS_Pos 3 /*!< CoreDebug DHCSR: C_MASKINTS Position */ -#define CoreDebug_DHCSR_C_MASKINTS_Msk (1ul << CoreDebug_DHCSR_C_MASKINTS_Pos) /*!< CoreDebug DHCSR: C_MASKINTS Mask */ - -#define CoreDebug_DHCSR_C_STEP_Pos 2 /*!< CoreDebug DHCSR: C_STEP Position */ -#define CoreDebug_DHCSR_C_STEP_Msk (1ul << CoreDebug_DHCSR_C_STEP_Pos) /*!< CoreDebug DHCSR: C_STEP Mask */ - -#define CoreDebug_DHCSR_C_HALT_Pos 1 /*!< CoreDebug DHCSR: C_HALT Position */ -#define CoreDebug_DHCSR_C_HALT_Msk (1ul << CoreDebug_DHCSR_C_HALT_Pos) /*!< CoreDebug DHCSR: C_HALT Mask */ - -#define CoreDebug_DHCSR_C_DEBUGEN_Pos 0 /*!< CoreDebug DHCSR: C_DEBUGEN Position */ -#define CoreDebug_DHCSR_C_DEBUGEN_Msk (1ul << CoreDebug_DHCSR_C_DEBUGEN_Pos) /*!< CoreDebug DHCSR: C_DEBUGEN Mask */ - -/* Debug Core Register Selector Register */ -#define CoreDebug_DCRSR_REGWnR_Pos 16 /*!< CoreDebug DCRSR: REGWnR Position */ -#define CoreDebug_DCRSR_REGWnR_Msk (1ul << CoreDebug_DCRSR_REGWnR_Pos) /*!< CoreDebug DCRSR: REGWnR Mask */ - -#define CoreDebug_DCRSR_REGSEL_Pos 0 /*!< CoreDebug DCRSR: REGSEL Position */ -#define CoreDebug_DCRSR_REGSEL_Msk (0x1Ful << CoreDebug_DCRSR_REGSEL_Pos) /*!< CoreDebug DCRSR: REGSEL Mask */ - -/* Debug Exception and Monitor Control Register */ -#define CoreDebug_DEMCR_TRCENA_Pos 24 /*!< CoreDebug DEMCR: TRCENA Position */ -#define CoreDebug_DEMCR_TRCENA_Msk (1ul << CoreDebug_DEMCR_TRCENA_Pos) /*!< CoreDebug DEMCR: TRCENA Mask */ - -#define CoreDebug_DEMCR_MON_REQ_Pos 19 /*!< CoreDebug DEMCR: MON_REQ Position */ -#define CoreDebug_DEMCR_MON_REQ_Msk (1ul << CoreDebug_DEMCR_MON_REQ_Pos) /*!< CoreDebug DEMCR: MON_REQ Mask */ - -#define CoreDebug_DEMCR_MON_STEP_Pos 18 /*!< CoreDebug DEMCR: MON_STEP Position */ -#define CoreDebug_DEMCR_MON_STEP_Msk (1ul << CoreDebug_DEMCR_MON_STEP_Pos) /*!< CoreDebug DEMCR: MON_STEP Mask */ - -#define CoreDebug_DEMCR_MON_PEND_Pos 17 /*!< CoreDebug DEMCR: MON_PEND Position */ -#define CoreDebug_DEMCR_MON_PEND_Msk (1ul << CoreDebug_DEMCR_MON_PEND_Pos) /*!< CoreDebug DEMCR: MON_PEND Mask */ - -#define CoreDebug_DEMCR_MON_EN_Pos 16 /*!< CoreDebug DEMCR: MON_EN Position */ -#define CoreDebug_DEMCR_MON_EN_Msk (1ul << CoreDebug_DEMCR_MON_EN_Pos) /*!< CoreDebug DEMCR: MON_EN Mask */ - -#define CoreDebug_DEMCR_VC_HARDERR_Pos 10 /*!< CoreDebug DEMCR: VC_HARDERR Position */ -#define CoreDebug_DEMCR_VC_HARDERR_Msk (1ul << CoreDebug_DEMCR_VC_HARDERR_Pos) /*!< CoreDebug DEMCR: VC_HARDERR Mask */ - -#define CoreDebug_DEMCR_VC_INTERR_Pos 9 /*!< CoreDebug DEMCR: VC_INTERR Position */ -#define CoreDebug_DEMCR_VC_INTERR_Msk (1ul << CoreDebug_DEMCR_VC_INTERR_Pos) /*!< CoreDebug DEMCR: VC_INTERR Mask */ - -#define CoreDebug_DEMCR_VC_BUSERR_Pos 8 /*!< CoreDebug DEMCR: VC_BUSERR Position */ -#define CoreDebug_DEMCR_VC_BUSERR_Msk (1ul << CoreDebug_DEMCR_VC_BUSERR_Pos) /*!< CoreDebug DEMCR: VC_BUSERR Mask */ - -#define CoreDebug_DEMCR_VC_STATERR_Pos 7 /*!< CoreDebug DEMCR: VC_STATERR Position */ -#define CoreDebug_DEMCR_VC_STATERR_Msk (1ul << CoreDebug_DEMCR_VC_STATERR_Pos) /*!< CoreDebug DEMCR: VC_STATERR Mask */ - -#define CoreDebug_DEMCR_VC_CHKERR_Pos 6 /*!< CoreDebug DEMCR: VC_CHKERR Position */ -#define CoreDebug_DEMCR_VC_CHKERR_Msk (1ul << CoreDebug_DEMCR_VC_CHKERR_Pos) /*!< CoreDebug DEMCR: VC_CHKERR Mask */ - -#define CoreDebug_DEMCR_VC_NOCPERR_Pos 5 /*!< CoreDebug DEMCR: VC_NOCPERR Position */ -#define CoreDebug_DEMCR_VC_NOCPERR_Msk (1ul << CoreDebug_DEMCR_VC_NOCPERR_Pos) /*!< CoreDebug DEMCR: VC_NOCPERR Mask */ - -#define CoreDebug_DEMCR_VC_MMERR_Pos 4 /*!< CoreDebug DEMCR: VC_MMERR Position */ -#define CoreDebug_DEMCR_VC_MMERR_Msk (1ul << CoreDebug_DEMCR_VC_MMERR_Pos) /*!< CoreDebug DEMCR: VC_MMERR Mask */ - -#define CoreDebug_DEMCR_VC_CORERESET_Pos 0 /*!< CoreDebug DEMCR: VC_CORERESET Position */ -#define CoreDebug_DEMCR_VC_CORERESET_Msk (1ul << CoreDebug_DEMCR_VC_CORERESET_Pos) /*!< CoreDebug DEMCR: VC_CORERESET Mask */ -/*@}*/ /* end of group CMSIS_CM3_CoreDebug */ - - -/* Memory mapping of Cortex-M3 Hardware */ -#define SCS_BASE (0xE000E000) /*!< System Control Space Base Address */ -#define ITM_BASE (0xE0000000) /*!< ITM Base Address */ -#define CoreDebug_BASE (0xE000EDF0) /*!< Core Debug Base Address */ -#define SysTick_BASE (SCS_BASE + 0x0010) /*!< SysTick Base Address */ -#define NVIC_BASE (SCS_BASE + 0x0100) /*!< NVIC Base Address */ -#define SCB_BASE (SCS_BASE + 0x0D00) /*!< System Control Block Base Address */ - -#define InterruptType ((InterruptType_Type *) SCS_BASE) /*!< Interrupt Type Register */ -#define SCB ((SCB_Type *) SCB_BASE) /*!< SCB configuration struct */ -#define SysTick ((SysTick_Type *) SysTick_BASE) /*!< SysTick configuration struct */ -#define NVIC ((NVIC_Type *) NVIC_BASE) /*!< NVIC configuration struct */ -#define ITM ((ITM_Type *) ITM_BASE) /*!< ITM configuration struct */ -#define CoreDebug ((CoreDebug_Type *) CoreDebug_BASE) /*!< Core Debug configuration struct */ - -#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1) - #define MPU_BASE (SCS_BASE + 0x0D90) /*!< Memory Protection Unit */ - #define MPU ((MPU_Type*) MPU_BASE) /*!< Memory Protection Unit */ -#endif - -/*@}*/ /* end of group CMSIS_CM3_core_register */ - - -/******************************************************************************* - * Hardware Abstraction Layer - ******************************************************************************/ - -#if defined ( __CC_ARM ) - #define __ASM __asm /*!< asm keyword for ARM Compiler */ - #define __INLINE __inline /*!< inline keyword for ARM Compiler */ - -#elif defined ( __ICCARM__ ) - #define __ASM __asm /*!< asm keyword for IAR Compiler */ - #define __INLINE inline /*!< inline keyword for IAR Compiler. Only avaiable in High optimization mode! */ - -#elif defined ( __GNUC__ ) - #define __ASM __asm /*!< asm keyword for GNU Compiler */ - #define __INLINE inline /*!< inline keyword for GNU Compiler */ - -#elif defined ( __TASKING__ ) - #define __ASM __asm /*!< asm keyword for TASKING Compiler */ - #define __INLINE inline /*!< inline keyword for TASKING Compiler */ - -#endif - - -/* ################### Compiler specific Intrinsics ########################### */ - -#if defined ( __CC_ARM ) /*------------------RealView Compiler -----------------*/ -/* ARM armcc specific functions */ - -#define __enable_fault_irq __enable_fiq -#define __disable_fault_irq __disable_fiq - -#define __NOP __nop -#define __WFI __wfi -#define __WFE __wfe -#define __SEV __sev -#define __ISB() __isb(0) -#define __DSB() __dsb(0) -#define __DMB() __dmb(0) -#define __REV __rev -#define __RBIT __rbit -#define __LDREXB(ptr) ((unsigned char ) __ldrex(ptr)) -#define __LDREXH(ptr) ((unsigned short) __ldrex(ptr)) -#define __LDREXW(ptr) ((unsigned int ) __ldrex(ptr)) -#define __STREXB(value, ptr) __strex(value, ptr) -#define __STREXH(value, ptr) __strex(value, ptr) -#define __STREXW(value, ptr) __strex(value, ptr) - - -/* intrinsic unsigned long long __ldrexd(volatile void *ptr) */ -/* intrinsic int __strexd(unsigned long long val, volatile void *ptr) */ -/* intrinsic void __enable_irq(); */ -/* intrinsic void __disable_irq(); */ - - -/** - * @brief Return the Process Stack Pointer - * - * @return ProcessStackPointer - * - * Return the actual process stack pointer - */ -extern uint32_t __get_PSP(void); - -/** - * @brief Set the Process Stack Pointer - * - * @param topOfProcStack Process Stack Pointer - * - * Assign the value ProcessStackPointer to the MSP - * (process stack pointer) Cortex processor register - */ -extern void __set_PSP(uint32_t topOfProcStack); - -/** - * @brief Return the Main Stack Pointer - * - * @return Main Stack Pointer - * - * Return the current value of the MSP (main stack pointer) - * Cortex processor register - */ -extern uint32_t __get_MSP(void); - -/** - * @brief Set the Main Stack Pointer - * - * @param topOfMainStack Main Stack Pointer - * - * Assign the value mainStackPointer to the MSP - * (main stack pointer) Cortex processor register - */ -extern void __set_MSP(uint32_t topOfMainStack); - -/** - * @brief Reverse byte order in unsigned short value - * - * @param value value to reverse - * @return reversed value - * - * Reverse byte order in unsigned short value - */ -extern uint32_t __REV16(uint16_t value); - -/** - * @brief Reverse byte order in signed short value with sign extension to integer - * - * @param value value to reverse - * @return reversed value - * - * Reverse byte order in signed short value with sign extension to integer - */ -extern int32_t __REVSH(int16_t value); - - -#if (__ARMCC_VERSION < 400000) - -/** - * @brief Remove the exclusive lock created by ldrex - * - * Removes the exclusive lock which is created by ldrex. - */ -extern void __CLREX(void); - -/** - * @brief Return the Base Priority value - * - * @return BasePriority - * - * Return the content of the base priority register - */ -extern uint32_t __get_BASEPRI(void); - -/** - * @brief Set the Base Priority value - * - * @param basePri BasePriority - * - * Set the base priority register - */ -extern void __set_BASEPRI(uint32_t basePri); - -/** - * @brief Return the Priority Mask value - * - * @return PriMask - * - * Return state of the priority mask bit from the priority mask register - */ -extern uint32_t __get_PRIMASK(void); - -/** - * @brief Set the Priority Mask value - * - * @param priMask PriMask - * - * Set the priority mask bit in the priority mask register - */ -extern void __set_PRIMASK(uint32_t priMask); - -/** - * @brief Return the Fault Mask value - * - * @return FaultMask - * - * Return the content of the fault mask register - */ -extern uint32_t __get_FAULTMASK(void); - -/** - * @brief Set the Fault Mask value - * - * @param faultMask faultMask value - * - * Set the fault mask register - */ -extern void __set_FAULTMASK(uint32_t faultMask); - -/** - * @brief Return the Control Register value - * - * @return Control value - * - * Return the content of the control register - */ -extern uint32_t __get_CONTROL(void); - -/** - * @brief Set the Control Register value - * - * @param control Control value - * - * Set the control register - */ -extern void __set_CONTROL(uint32_t control); - -#else /* (__ARMCC_VERSION >= 400000) */ - -/** - * @brief Remove the exclusive lock created by ldrex - * - * Removes the exclusive lock which is created by ldrex. - */ -#define __CLREX __clrex - -/** - * @brief Return the Base Priority value - * - * @return BasePriority - * - * Return the content of the base priority register - */ -static __INLINE uint32_t __get_BASEPRI(void) -{ - register uint32_t __regBasePri __ASM("basepri"); - return(__regBasePri); -} - -/** - * @brief Set the Base Priority value - * - * @param basePri BasePriority - * - * Set the base priority register - */ -static __INLINE void __set_BASEPRI(uint32_t basePri) -{ - register uint32_t __regBasePri __ASM("basepri"); - __regBasePri = (basePri & 0xff); -} - -/** - * @brief Return the Priority Mask value - * - * @return PriMask - * - * Return state of the priority mask bit from the priority mask register - */ -static __INLINE uint32_t __get_PRIMASK(void) -{ - register uint32_t __regPriMask __ASM("primask"); - return(__regPriMask); -} - -/** - * @brief Set the Priority Mask value - * - * @param priMask PriMask - * - * Set the priority mask bit in the priority mask register - */ -static __INLINE void __set_PRIMASK(uint32_t priMask) -{ - register uint32_t __regPriMask __ASM("primask"); - __regPriMask = (priMask); -} - -/** - * @brief Return the Fault Mask value - * - * @return FaultMask - * - * Return the content of the fault mask register - */ -static __INLINE uint32_t __get_FAULTMASK(void) -{ - register uint32_t __regFaultMask __ASM("faultmask"); - return(__regFaultMask); -} - -/** - * @brief Set the Fault Mask value - * - * @param faultMask faultMask value - * - * Set the fault mask register - */ -static __INLINE void __set_FAULTMASK(uint32_t faultMask) -{ - register uint32_t __regFaultMask __ASM("faultmask"); - __regFaultMask = (faultMask & 1); -} - -/** - * @brief Return the Control Register value - * - * @return Control value - * - * Return the content of the control register - */ -static __INLINE uint32_t __get_CONTROL(void) -{ - register uint32_t __regControl __ASM("control"); - return(__regControl); -} - -/** - * @brief Set the Control Register value - * - * @param control Control value - * - * Set the control register - */ -static __INLINE void __set_CONTROL(uint32_t control) -{ - register uint32_t __regControl __ASM("control"); - __regControl = control; -} - -#endif /* __ARMCC_VERSION */ - - - -#elif (defined (__ICCARM__)) /*------------------ ICC Compiler -------------------*/ -/* IAR iccarm specific functions */ - -#define __enable_irq __enable_interrupt /*!< global Interrupt enable */ -#define __disable_irq __disable_interrupt /*!< global Interrupt disable */ - -static __INLINE void __enable_fault_irq() { __ASM ("cpsie f"); } -static __INLINE void __disable_fault_irq() { __ASM ("cpsid f"); } - -#define __NOP __no_operation /*!< no operation intrinsic in IAR Compiler */ -static __INLINE void __WFI() { __ASM ("wfi"); } -static __INLINE void __WFE() { __ASM ("wfe"); } -static __INLINE void __SEV() { __ASM ("sev"); } -static __INLINE void __CLREX() { __ASM ("clrex"); } - -/* intrinsic void __ISB(void) */ -/* intrinsic void __DSB(void) */ -/* intrinsic void __DMB(void) */ -/* intrinsic void __set_PRIMASK(); */ -/* intrinsic void __get_PRIMASK(); */ -/* intrinsic void __set_FAULTMASK(); */ -/* intrinsic void __get_FAULTMASK(); */ -/* intrinsic uint32_t __REV(uint32_t value); */ -/* intrinsic uint32_t __REVSH(uint32_t value); */ -/* intrinsic unsigned long __STREX(unsigned long, unsigned long); */ -/* intrinsic unsigned long __LDREX(unsigned long *); */ - - -/** - * @brief Return the Process Stack Pointer - * - * @return ProcessStackPointer - * - * Return the actual process stack pointer - */ -extern uint32_t __get_PSP(void); - -/** - * @brief Set the Process Stack Pointer - * - * @param topOfProcStack Process Stack Pointer - * - * Assign the value ProcessStackPointer to the MSP - * (process stack pointer) Cortex processor register - */ -extern void __set_PSP(uint32_t topOfProcStack); - -/** - * @brief Return the Main Stack Pointer - * - * @return Main Stack Pointer - * - * Return the current value of the MSP (main stack pointer) - * Cortex processor register - */ -extern uint32_t __get_MSP(void); - -/** - * @brief Set the Main Stack Pointer - * - * @param topOfMainStack Main Stack Pointer - * - * Assign the value mainStackPointer to the MSP - * (main stack pointer) Cortex processor register - */ -extern void __set_MSP(uint32_t topOfMainStack); - -/** - * @brief Reverse byte order in unsigned short value - * - * @param value value to reverse - * @return reversed value - * - * Reverse byte order in unsigned short value - */ -extern uint32_t __REV16(uint16_t value); - -/** - * @brief Reverse bit order of value - * - * @param value value to reverse - * @return reversed value - * - * Reverse bit order of value - */ -extern uint32_t __RBIT(uint32_t value); - -/** - * @brief LDR Exclusive (8 bit) - * - * @param *addr address pointer - * @return value of (*address) - * - * Exclusive LDR command for 8 bit values) - */ -extern uint8_t __LDREXB(uint8_t *addr); - -/** - * @brief LDR Exclusive (16 bit) - * - * @param *addr address pointer - * @return value of (*address) - * - * Exclusive LDR command for 16 bit values - */ -extern uint16_t __LDREXH(uint16_t *addr); - -/** - * @brief LDR Exclusive (32 bit) - * - * @param *addr address pointer - * @return value of (*address) - * - * Exclusive LDR command for 32 bit values - */ -extern uint32_t __LDREXW(uint32_t *addr); - -/** - * @brief STR Exclusive (8 bit) - * - * @param value value to store - * @param *addr address pointer - * @return successful / failed - * - * Exclusive STR command for 8 bit values - */ -extern uint32_t __STREXB(uint8_t value, uint8_t *addr); - -/** - * @brief STR Exclusive (16 bit) - * - * @param value value to store - * @param *addr address pointer - * @return successful / failed - * - * Exclusive STR command for 16 bit values - */ -extern uint32_t __STREXH(uint16_t value, uint16_t *addr); - -/** - * @brief STR Exclusive (32 bit) - * - * @param value value to store - * @param *addr address pointer - * @return successful / failed - * - * Exclusive STR command for 32 bit values - */ -extern uint32_t __STREXW(uint32_t value, uint32_t *addr); - - - -#elif (defined (__GNUC__)) /*------------------ GNU Compiler ---------------------*/ -/* GNU gcc specific functions */ - -static __INLINE void __enable_irq() { __ASM volatile ("cpsie i"); } -static __INLINE void __disable_irq() { __ASM volatile ("cpsid i"); } - -static __INLINE void __enable_fault_irq() { __ASM volatile ("cpsie f"); } -static __INLINE void __disable_fault_irq() { __ASM volatile ("cpsid f"); } - -static __INLINE void __NOP() { __ASM volatile ("nop"); } -static __INLINE void __WFI() { __ASM volatile ("wfi"); } -static __INLINE void __WFE() { __ASM volatile ("wfe"); } -static __INLINE void __SEV() { __ASM volatile ("sev"); } -static __INLINE void __ISB() { __ASM volatile ("isb"); } -static __INLINE void __DSB() { __ASM volatile ("dsb"); } -static __INLINE void __DMB() { __ASM volatile ("dmb"); } -static __INLINE void __CLREX() { __ASM volatile ("clrex"); } - - -/** - * @brief Return the Process Stack Pointer - * - * @return ProcessStackPointer - * - * Return the actual process stack pointer - */ -extern uint32_t __get_PSP(void); - -/** - * @brief Set the Process Stack Pointer - * - * @param topOfProcStack Process Stack Pointer - * - * Assign the value ProcessStackPointer to the MSP - * (process stack pointer) Cortex processor register - */ -extern void __set_PSP(uint32_t topOfProcStack); - -/** - * @brief Return the Main Stack Pointer - * - * @return Main Stack Pointer - * - * Return the current value of the MSP (main stack pointer) - * Cortex processor register - */ -extern uint32_t __get_MSP(void); - -/** - * @brief Set the Main Stack Pointer - * - * @param topOfMainStack Main Stack Pointer - * - * Assign the value mainStackPointer to the MSP - * (main stack pointer) Cortex processor register - */ -extern void __set_MSP(uint32_t topOfMainStack); - -/** - * @brief Return the Base Priority value - * - * @return BasePriority - * - * Return the content of the base priority register - */ -extern uint32_t __get_BASEPRI(void); - -/** - * @brief Set the Base Priority value - * - * @param basePri BasePriority - * - * Set the base priority register - */ -extern void __set_BASEPRI(uint32_t basePri); - -/** - * @brief Return the Priority Mask value - * - * @return PriMask - * - * Return state of the priority mask bit from the priority mask register - */ -extern uint32_t __get_PRIMASK(void); - -/** - * @brief Set the Priority Mask value - * - * @param priMask PriMask - * - * Set the priority mask bit in the priority mask register - */ -extern void __set_PRIMASK(uint32_t priMask); - -/** - * @brief Return the Fault Mask value - * - * @return FaultMask - * - * Return the content of the fault mask register - */ -extern uint32_t __get_FAULTMASK(void); - -/** - * @brief Set the Fault Mask value - * - * @param faultMask faultMask value - * - * Set the fault mask register - */ -extern void __set_FAULTMASK(uint32_t faultMask); - -/** - * @brief Return the Control Register value -* -* @return Control value - * - * Return the content of the control register - */ -extern uint32_t __get_CONTROL(void); - -/** - * @brief Set the Control Register value - * - * @param control Control value - * - * Set the control register - */ -extern void __set_CONTROL(uint32_t control); - -/** - * @brief Reverse byte order in integer value - * - * @param value value to reverse - * @return reversed value - * - * Reverse byte order in integer value - */ -extern uint32_t __REV(uint32_t value); - -/** - * @brief Reverse byte order in unsigned short value - * - * @param value value to reverse - * @return reversed value - * - * Reverse byte order in unsigned short value - */ -extern uint32_t __REV16(uint16_t value); - -/** - * @brief Reverse byte order in signed short value with sign extension to integer - * - * @param value value to reverse - * @return reversed value - * - * Reverse byte order in signed short value with sign extension to integer - */ -extern int32_t __REVSH(int16_t value); - -/** - * @brief Reverse bit order of value - * - * @param value value to reverse - * @return reversed value - * - * Reverse bit order of value - */ -extern uint32_t __RBIT(uint32_t value); - -/** - * @brief LDR Exclusive (8 bit) - * - * @param *addr address pointer - * @return value of (*address) - * - * Exclusive LDR command for 8 bit value - */ -extern uint8_t __LDREXB(uint8_t *addr); - -/** - * @brief LDR Exclusive (16 bit) - * - * @param *addr address pointer - * @return value of (*address) - * - * Exclusive LDR command for 16 bit values - */ -extern uint16_t __LDREXH(uint16_t *addr); - -/** - * @brief LDR Exclusive (32 bit) - * - * @param *addr address pointer - * @return value of (*address) - * - * Exclusive LDR command for 32 bit values - */ -extern uint32_t __LDREXW(uint32_t *addr); - -/** - * @brief STR Exclusive (8 bit) - * - * @param value value to store - * @param *addr address pointer - * @return successful / failed - * - * Exclusive STR command for 8 bit values - */ -extern uint32_t __STREXB(uint8_t value, uint8_t *addr); - -/** - * @brief STR Exclusive (16 bit) - * - * @param value value to store - * @param *addr address pointer - * @return successful / failed - * - * Exclusive STR command for 16 bit values - */ -extern uint32_t __STREXH(uint16_t value, uint16_t *addr); - -/** - * @brief STR Exclusive (32 bit) - * - * @param value value to store - * @param *addr address pointer - * @return successful / failed - * - * Exclusive STR command for 32 bit values - */ -extern uint32_t __STREXW(uint32_t value, uint32_t *addr); - - -#elif (defined (__TASKING__)) /*------------------ TASKING Compiler ---------------------*/ -/* TASKING carm specific functions */ - -/* - * The CMSIS functions have been implemented as intrinsics in the compiler. - * Please use "carm -?i" to get an up to date list of all instrinsics, - * Including the CMSIS ones. - */ - -#endif - - -/** @addtogroup CMSIS_CM3_Core_FunctionInterface CMSIS CM3 Core Function Interface - Core Function Interface containing: - - Core NVIC Functions - - Core SysTick Functions - - Core Reset Functions -*/ -/*@{*/ - -/* ########################## NVIC functions #################################### */ - -/** - * @brief Set the Priority Grouping in NVIC Interrupt Controller - * - * @param PriorityGroup is priority grouping field - * - * Set the priority grouping field using the required unlock sequence. - * The parameter priority_grouping is assigned to the field - * SCB->AIRCR [10:8] PRIGROUP field. Only values from 0..7 are used. - * In case of a conflict between priority grouping and available - * priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set. - */ -static __INLINE void NVIC_SetPriorityGrouping(uint32_t PriorityGroup) -{ - uint32_t reg_value; - uint32_t PriorityGroupTmp = (PriorityGroup & 0x07); /* only values 0..7 are used */ - - reg_value = SCB->AIRCR; /* read old register configuration */ - reg_value &= ~(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk); /* clear bits to change */ - reg_value = (reg_value | - (0x5FA << SCB_AIRCR_VECTKEY_Pos) | - (PriorityGroupTmp << 8)); /* Insert write key and priorty group */ - SCB->AIRCR = reg_value; -} - -/** - * @brief Get the Priority Grouping from NVIC Interrupt Controller - * - * @return priority grouping field - * - * Get the priority grouping from NVIC Interrupt Controller. - * priority grouping is SCB->AIRCR [10:8] PRIGROUP field. - */ -static __INLINE uint32_t NVIC_GetPriorityGrouping(void) -{ - return ((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos); /* read priority grouping field */ -} - -/** - * @brief Enable Interrupt in NVIC Interrupt Controller - * - * @param IRQn The positive number of the external interrupt to enable - * - * Enable a device specific interupt in the NVIC interrupt controller. - * The interrupt number cannot be a negative value. - */ -static __INLINE void NVIC_EnableIRQ(IRQn_Type IRQn) -{ - NVIC->ISER[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F)); /* enable interrupt */ -} - -/** - * @brief Disable the interrupt line for external interrupt specified - * - * @param IRQn The positive number of the external interrupt to disable - * - * Disable a device specific interupt in the NVIC interrupt controller. - * The interrupt number cannot be a negative value. - */ -static __INLINE void NVIC_DisableIRQ(IRQn_Type IRQn) -{ - NVIC->ICER[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F)); /* disable interrupt */ -} - -/** - * @brief Read the interrupt pending bit for a device specific interrupt source - * - * @param IRQn The number of the device specifc interrupt - * @return 1 = interrupt pending, 0 = interrupt not pending - * - * Read the pending register in NVIC and return 1 if its status is pending, - * otherwise it returns 0 - */ -static __INLINE uint32_t NVIC_GetPendingIRQ(IRQn_Type IRQn) -{ - return((uint32_t) ((NVIC->ISPR[(uint32_t)(IRQn) >> 5] & (1 << ((uint32_t)(IRQn) & 0x1F)))?1:0)); /* Return 1 if pending else 0 */ -} - -/** - * @brief Set the pending bit for an external interrupt - * - * @param IRQn The number of the interrupt for set pending - * - * Set the pending bit for the specified interrupt. - * The interrupt number cannot be a negative value. - */ -static __INLINE void NVIC_SetPendingIRQ(IRQn_Type IRQn) -{ - NVIC->ISPR[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F)); /* set interrupt pending */ -} - -/** - * @brief Clear the pending bit for an external interrupt - * - * @param IRQn The number of the interrupt for clear pending - * - * Clear the pending bit for the specified interrupt. - * The interrupt number cannot be a negative value. - */ -static __INLINE void NVIC_ClearPendingIRQ(IRQn_Type IRQn) -{ - NVIC->ICPR[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F)); /* Clear pending interrupt */ -} - -/** - * @brief Read the active bit for an external interrupt - * - * @param IRQn The number of the interrupt for read active bit - * @return 1 = interrupt active, 0 = interrupt not active - * - * Read the active register in NVIC and returns 1 if its status is active, - * otherwise it returns 0. - */ -static __INLINE uint32_t NVIC_GetActive(IRQn_Type IRQn) -{ - return((uint32_t)((NVIC->IABR[(uint32_t)(IRQn) >> 5] & (1 << ((uint32_t)(IRQn) & 0x1F)))?1:0)); /* Return 1 if active else 0 */ -} - -/** - * @brief Set the priority for an interrupt - * - * @param IRQn The number of the interrupt for set priority - * @param priority The priority to set - * - * Set the priority for the specified interrupt. The interrupt - * number can be positive to specify an external (device specific) - * interrupt, or negative to specify an internal (core) interrupt. - * - * Note: The priority cannot be set for every core interrupt. - */ -static __INLINE void NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) -{ - if(IRQn < 0) { - SCB->SHP[((uint32_t)(IRQn) & 0xF)-4] = ((priority << (8 - __NVIC_PRIO_BITS)) & 0xff); } /* set Priority for Cortex-M3 System Interrupts */ - else { - NVIC->IP[(uint32_t)(IRQn)] = ((priority << (8 - __NVIC_PRIO_BITS)) & 0xff); } /* set Priority for device specific Interrupts */ -} - -/** - * @brief Read the priority for an interrupt - * - * @param IRQn The number of the interrupt for get priority - * @return The priority for the interrupt - * - * Read the priority for the specified interrupt. The interrupt - * number can be positive to specify an external (device specific) - * interrupt, or negative to specify an internal (core) interrupt. - * - * The returned priority value is automatically aligned to the implemented - * priority bits of the microcontroller. - * - * Note: The priority cannot be set for every core interrupt. - */ -static __INLINE uint32_t NVIC_GetPriority(IRQn_Type IRQn) -{ - - if(IRQn < 0) { - return((uint32_t)(SCB->SHP[((uint32_t)(IRQn) & 0xF)-4] >> (8 - __NVIC_PRIO_BITS))); } /* get priority for Cortex-M3 system interrupts */ - else { - return((uint32_t)(NVIC->IP[(uint32_t)(IRQn)] >> (8 - __NVIC_PRIO_BITS))); } /* get priority for device specific interrupts */ -} - - -/** - * @brief Encode the priority for an interrupt - * - * @param PriorityGroup The used priority group - * @param PreemptPriority The preemptive priority value (starting from 0) - * @param SubPriority The sub priority value (starting from 0) - * @return The encoded priority for the interrupt - * - * Encode the priority for an interrupt with the given priority group, - * preemptive priority value and sub priority value. - * In case of a conflict between priority grouping and available - * priority bits (__NVIC_PRIO_BITS) the samllest possible priority group is set. - * - * The returned priority value can be used for NVIC_SetPriority(...) function - */ -static __INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) -{ - uint32_t PriorityGroupTmp = (PriorityGroup & 0x07); /* only values 0..7 are used */ - uint32_t PreemptPriorityBits; - uint32_t SubPriorityBits; - - PreemptPriorityBits = ((7 - PriorityGroupTmp) > __NVIC_PRIO_BITS) ? __NVIC_PRIO_BITS : 7 - PriorityGroupTmp; - SubPriorityBits = ((PriorityGroupTmp + __NVIC_PRIO_BITS) < 7) ? 0 : PriorityGroupTmp - 7 + __NVIC_PRIO_BITS; - - return ( - ((PreemptPriority & ((1 << (PreemptPriorityBits)) - 1)) << SubPriorityBits) | - ((SubPriority & ((1 << (SubPriorityBits )) - 1))) - ); -} - - -/** - * @brief Decode the priority of an interrupt - * - * @param Priority The priority for the interrupt - * @param PriorityGroup The used priority group - * @param pPreemptPriority The preemptive priority value (starting from 0) - * @param pSubPriority The sub priority value (starting from 0) - * - * Decode an interrupt priority value with the given priority group to - * preemptive priority value and sub priority value. - * In case of a conflict between priority grouping and available - * priority bits (__NVIC_PRIO_BITS) the samllest possible priority group is set. - * - * The priority value can be retrieved with NVIC_GetPriority(...) function - */ -static __INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* pPreemptPriority, uint32_t* pSubPriority) -{ - uint32_t PriorityGroupTmp = (PriorityGroup & 0x07); /* only values 0..7 are used */ - uint32_t PreemptPriorityBits; - uint32_t SubPriorityBits; - - PreemptPriorityBits = ((7 - PriorityGroupTmp) > __NVIC_PRIO_BITS) ? __NVIC_PRIO_BITS : 7 - PriorityGroupTmp; - SubPriorityBits = ((PriorityGroupTmp + __NVIC_PRIO_BITS) < 7) ? 0 : PriorityGroupTmp - 7 + __NVIC_PRIO_BITS; - - *pPreemptPriority = (Priority >> SubPriorityBits) & ((1 << (PreemptPriorityBits)) - 1); - *pSubPriority = (Priority ) & ((1 << (SubPriorityBits )) - 1); -} - - - -/* ################################## SysTick function ############################################ */ - -#if (!defined (__Vendor_SysTickConfig)) || (__Vendor_SysTickConfig == 0) - -/** - * @brief Initialize and start the SysTick counter and its interrupt. - * - * @param ticks number of ticks between two interrupts - * @return 1 = failed, 0 = successful - * - * Initialise the system tick timer and its interrupt and start the - * system tick timer / counter in free running mode to generate - * periodical interrupts. - */ -static __INLINE uint32_t SysTick_Config(uint32_t ticks) -{ - if (ticks > SysTick_LOAD_RELOAD_Msk) return (1); /* Reload value impossible */ - - SysTick->LOAD = (ticks & SysTick_LOAD_RELOAD_Msk) - 1; /* set reload register */ - NVIC_SetPriority (SysTick_IRQn, (1<<__NVIC_PRIO_BITS) - 1); /* set Priority for Cortex-M0 System Interrupts */ - SysTick->VAL = 0; /* Load the SysTick Counter Value */ - SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | - SysTick_CTRL_TICKINT_Msk | - SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ - return (0); /* Function successful */ -} - -#endif - - - - -/* ################################## Reset function ############################################ */ - -/** - * @brief Initiate a system reset request. - * - * Initiate a system reset request to reset the MCU - */ -static __INLINE void NVIC_SystemReset(void) -{ - SCB->AIRCR = ((0x5FA << SCB_AIRCR_VECTKEY_Pos) | - (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) | - SCB_AIRCR_SYSRESETREQ_Msk); /* Keep priority group unchanged */ - __DSB(); /* Ensure completion of memory access */ - while(1); /* wait until reset */ -} - -/*@}*/ /* end of group CMSIS_CM3_Core_FunctionInterface */ - - - -/* ##################################### Debug In/Output function ########################################### */ - -/** @addtogroup CMSIS_CM3_CoreDebugInterface CMSIS CM3 Core Debug Interface - Core Debug Interface containing: - - Core Debug Receive / Transmit Functions - - Core Debug Defines - - Core Debug Variables -*/ -/*@{*/ - -extern volatile int ITM_RxBuffer; /*!< variable to receive characters */ -#define ITM_RXBUFFER_EMPTY 0x5AA55AA5 /*!< value identifying ITM_RxBuffer is ready for next character */ - - -/** - * @brief Outputs a character via the ITM channel 0 - * - * @param ch character to output - * @return character to output - * - * The function outputs a character via the ITM channel 0. - * The function returns when no debugger is connected that has booked the output. - * It is blocking when a debugger is connected, but the previous character send is not transmitted. - */ -static __INLINE uint32_t ITM_SendChar (uint32_t ch) -{ - if ((CoreDebug->DEMCR & CoreDebug_DEMCR_TRCENA_Msk) && /* Trace enabled */ - (ITM->TCR & ITM_TCR_ITMENA_Msk) && /* ITM enabled */ - (ITM->TER & (1ul << 0) ) ) /* ITM Port #0 enabled */ - { - while (ITM->PORT[0].u32 == 0); - ITM->PORT[0].u8 = (uint8_t) ch; - } - return (ch); -} - - -/** - * @brief Inputs a character via variable ITM_RxBuffer - * - * @return received character, -1 = no character received - * - * The function inputs a character via variable ITM_RxBuffer. - * The function returns when no debugger is connected that has booked the output. - * It is blocking when a debugger is connected, but the previous character send is not transmitted. - */ -static __INLINE int ITM_ReceiveChar (void) { - int ch = -1; /* no character available */ - - if (ITM_RxBuffer != ITM_RXBUFFER_EMPTY) { - ch = ITM_RxBuffer; - ITM_RxBuffer = ITM_RXBUFFER_EMPTY; /* ready for next character */ - } - - return (ch); -} - - -/** - * @brief Check if a character via variable ITM_RxBuffer is available - * - * @return 1 = character available, 0 = no character available - * - * The function checks variable ITM_RxBuffer whether a character is available or not. - * The function returns '1' if a character is available and '0' if no character is available. - */ -static __INLINE int ITM_CheckChar (void) { - - if (ITM_RxBuffer == ITM_RXBUFFER_EMPTY) { - return (0); /* no character available */ - } else { - return (1); /* character available */ - } -} - -/*@}*/ /* end of group CMSIS_CM3_core_DebugInterface */ - - -#ifdef __cplusplus -} -#endif - -/*@}*/ /* end of group CMSIS_CM3_core_definitions */ - -#endif /* __CM3_CORE_H__ */ - -/*lint -restore */ diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/cr_startup_lpc17.c b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/cr_startup_lpc17.c deleted file mode 100644 index 170fdecf7..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/cr_startup_lpc17.c +++ /dev/null @@ -1,349 +0,0 @@ -//***************************************************************************** -// +--+ -// | ++----+ -// +-++ | -// | | -// +-+--+ | -// | +--+--+ -// +----+ Copyright (c) 2009-10 Code Red Technologies Ltd. -// -// Microcontroller Startup code for use with Red Suite -// -// Software License Agreement -// -// The software is owned by Code Red Technologies and/or its suppliers, and is -// protected under applicable copyright laws. All rights are reserved. Any -// use in violation of the foregoing restrictions may subject the user to criminal -// sanctions under applicable laws, as well as to civil liability for the breach -// of the terms and conditions of this license. -// -// THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED -// OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. -// USE OF THIS SOFTWARE FOR COMMERCIAL DEVELOPMENT AND/OR EDUCATION IS SUBJECT -// TO A CURRENT END USER LICENSE AGREEMENT (COMMERCIAL OR EDUCATIONAL) WITH -// CODE RED TECHNOLOGIES LTD. -// -//***************************************************************************** -#if defined (__cplusplus) -#ifdef __REDLIB__ -#error Redlib does not support C++ -#else -//***************************************************************************** -// -// The entry point for the C++ library startup -// -//***************************************************************************** -extern "C" { - extern void __libc_init_array(void); -} -#endif -#endif - -#define WEAK __attribute__ ((weak)) -#define ALIAS(f) __attribute__ ((weak, alias (#f))) - -// Code Red - if CMSIS is being used, then SystemInit() routine -// will be called by startup code rather than in application's main() -#if defined (__USE_CMSIS) -#include "system_LPC17xx.h" -#endif - -//***************************************************************************** -#if defined (__cplusplus) -extern "C" { -#endif - -//***************************************************************************** -// -// Forward declaration of the default handlers. These are aliased. -// When the application defines a handler (with the same name), this will -// automatically take precedence over these weak definitions -// -//***************************************************************************** - void ResetISR(void); -WEAK void NMI_Handler(void); -WEAK void HardFault_Handler(void); -WEAK void MemManage_Handler(void); -WEAK void BusFault_Handler(void); -WEAK void UsageFault_Handler(void); -WEAK void SVCall_Handler(void); -WEAK void DebugMon_Handler(void); -WEAK void PendSV_Handler(void); -WEAK void SysTick_Handler(void); -WEAK void IntDefaultHandler(void); - -//***************************************************************************** -// -// Forward declaration of the specific IRQ handlers. These are aliased -// to the IntDefaultHandler, which is a 'forever' loop. When the application -// defines a handler (with the same name), this will automatically take -// precedence over these weak definitions -// -//***************************************************************************** -void WDT_IRQHandler(void) ALIAS(IntDefaultHandler); -void TIMER0_IRQHandler(void) ALIAS(IntDefaultHandler); -void TIMER1_IRQHandler(void) ALIAS(IntDefaultHandler); -void TIMER2_IRQHandler(void) ALIAS(IntDefaultHandler); -void TIMER3_IRQHandler(void) ALIAS(IntDefaultHandler); -void UART0_IRQHandler(void) ALIAS(IntDefaultHandler); -void UART1_IRQHandler(void) ALIAS(IntDefaultHandler); -void UART2_IRQHandler(void) ALIAS(IntDefaultHandler); -void UART3_IRQHandler(void) ALIAS(IntDefaultHandler); -void PWM1_IRQHandler(void) ALIAS(IntDefaultHandler); -void I2C0_IRQHandler(void) ALIAS(IntDefaultHandler); -void I2C1_IRQHandler(void) ALIAS(IntDefaultHandler); -void I2C2_IRQHandler(void) ALIAS(IntDefaultHandler); -void SPI_IRQHandler(void) ALIAS(IntDefaultHandler); -void SSP0_IRQHandler(void) ALIAS(IntDefaultHandler); -void SSP1_IRQHandler(void) ALIAS(IntDefaultHandler); -void PLL0_IRQHandler(void) ALIAS(IntDefaultHandler); -void RTC_IRQHandler(void) ALIAS(IntDefaultHandler); -void EINT0_IRQHandler(void) ALIAS(IntDefaultHandler); -void EINT1_IRQHandler(void) ALIAS(IntDefaultHandler); -void EINT2_IRQHandler(void) ALIAS(IntDefaultHandler); -void EINT3_IRQHandler(void) ALIAS(IntDefaultHandler); -void ADC_IRQHandler(void) ALIAS(IntDefaultHandler); -void BOD_IRQHandler(void) ALIAS(IntDefaultHandler); -void USB_IRQHandler(void) ALIAS(IntDefaultHandler); -void CAN_IRQHandler(void) ALIAS(IntDefaultHandler); -void DMA_IRQHandler(void) ALIAS(IntDefaultHandler); -void I2S_IRQHandler(void) ALIAS(IntDefaultHandler); -void ENET_IRQHandler(void) ALIAS(IntDefaultHandler); -void RIT_IRQHandler(void) ALIAS(IntDefaultHandler); -void MCPWM_IRQHandler(void) ALIAS(IntDefaultHandler); -void QEI_IRQHandler(void) ALIAS(IntDefaultHandler); -void PLL1_IRQHandler(void) ALIAS(IntDefaultHandler); -void USBActivity_IRQHandler(void) ALIAS(IntDefaultHandler); -void CANActivity_IRQHandler(void) ALIAS(IntDefaultHandler); - -extern void xPortSysTickHandler(void); -extern void xPortPendSVHandler(void); -extern void vPortSVCHandler( void ); -extern void vEMAC_ISR( void ); - -//***************************************************************************** -// -// The entry point for the application. -// __main() is the entry point for Redlib based applications -// main() is the entry point for Newlib based applications -// -//***************************************************************************** -#if defined (__REDLIB__) -extern void __main(void); -#endif -extern int main(void); -//***************************************************************************** -// -// External declaration for the pointer to the stack top from the Linker Script -// -//***************************************************************************** -extern void _vStackTop(void); - -//***************************************************************************** -#if defined (__cplusplus) -} // extern "C" -#endif -//***************************************************************************** -// -// The vector table. -// This relies on the linker script to place at correct location in memory. -// -//***************************************************************************** -extern void (* const g_pfnVectors[])(void); -__attribute__ ((section(".isr_vector"))) -void (* const g_pfnVectors[])(void) = -{ - // Core Level - CM3 - (void *)&_vStackTop, // The initial stack pointer - ResetISR, // The reset handler - NMI_Handler, // The NMI handler - HardFault_Handler, // The hard fault handler - MemManage_Handler, // The MPU fault handler - BusFault_Handler, // The bus fault handler - UsageFault_Handler, // The usage fault handler - 0, // Reserved - 0, // Reserved - 0, // Reserved - 0, // Reserved - vPortSVCHandler, // SVCall handler - DebugMon_Handler, // Debug monitor handler - 0, // Reserved - xPortPendSVHandler, // The PendSV handler - xPortSysTickHandler, // The SysTick handler - - // Chip Level - LPC17 - WDT_IRQHandler, // 16, 0x40 - WDT - TIMER0_IRQHandler, // 17, 0x44 - TIMER0 - TIMER1_IRQHandler, // 18, 0x48 - TIMER1 - TIMER2_IRQHandler, // 19, 0x4c - TIMER2 - TIMER3_IRQHandler, // 20, 0x50 - TIMER3 - UART0_IRQHandler, // 21, 0x54 - UART0 - UART1_IRQHandler, // 22, 0x58 - UART1 - UART2_IRQHandler, // 23, 0x5c - UART2 - UART3_IRQHandler, // 24, 0x60 - UART3 - PWM1_IRQHandler, // 25, 0x64 - PWM1 - I2C0_IRQHandler, // 26, 0x68 - I2C0 - I2C1_IRQHandler, // 27, 0x6c - I2C1 - I2C2_IRQHandler, // 28, 0x70 - I2C2 - SPI_IRQHandler, // 29, 0x74 - SPI - SSP0_IRQHandler, // 30, 0x78 - SSP0 - SSP1_IRQHandler, // 31, 0x7c - SSP1 - PLL0_IRQHandler, // 32, 0x80 - PLL0 (Main PLL) - RTC_IRQHandler, // 33, 0x84 - RTC - EINT0_IRQHandler, // 34, 0x88 - EINT0 - EINT1_IRQHandler, // 35, 0x8c - EINT1 - EINT2_IRQHandler, // 36, 0x90 - EINT2 - EINT3_IRQHandler, // 37, 0x94 - EINT3 - ADC_IRQHandler, // 38, 0x98 - ADC - BOD_IRQHandler, // 39, 0x9c - BOD - USB_IRQHandler, // 40, 0xA0 - USB - CAN_IRQHandler, // 41, 0xa4 - CAN - DMA_IRQHandler, // 42, 0xa8 - GP DMA - I2S_IRQHandler, // 43, 0xac - I2S - vEMAC_ISR, // Ethernet. - RIT_IRQHandler, // 45, 0xb4 - RITINT - MCPWM_IRQHandler, // 46, 0xb8 - Motor Control PWM - QEI_IRQHandler, // 47, 0xbc - Quadrature Encoder - PLL1_IRQHandler, // 48, 0xc0 - PLL1 (USB PLL) - USBActivity_IRQHandler, // 49, 0xc4 - USB Activity interrupt to wakeup - CANActivity_IRQHandler, // 50, 0xc8 - CAN Activity interrupt to wakeup -}; - -//***************************************************************************** -// -// The following are constructs created by the linker, indicating where the -// the "data" and "bss" segments reside in memory. The initializers for the -// for the "data" segment resides immediately following the "text" segment. -// -//***************************************************************************** -extern unsigned long _etext; -extern unsigned long _data; -extern unsigned long _edata; -extern unsigned long _bss; -extern unsigned long _ebss; - -//***************************************************************************** -// Reset entry point for your code. -// Sets up a simple runtime environment and initializes the C/C++ -// library. -// -//***************************************************************************** -void -ResetISR(void) { - unsigned long *pulSrc, *pulDest; - - // - // Copy the data segment initializers from flash to SRAM. - // - pulSrc = &_etext; - for(pulDest = &_data; pulDest < &_edata; ) - { - *pulDest++ = *pulSrc++; - } - - // - // Zero fill the bss segment. This is done with inline assembly since this - // will clear the value of pulDest if it is not kept in a register. - // - __asm(" ldr r0, =_bss\n" - " ldr r1, =_ebss\n" - " mov r2, #0\n" - " .thumb_func\n" - "zero_loop:\n" - " cmp r0, r1\n" - " it lt\n" - " strlt r2, [r0], #4\n" - " blt zero_loop"); - -#ifdef __USE_CMSIS - SystemInit(); -#endif - -#if defined (__cplusplus) - // - // Call C++ library initialisation - // - __libc_init_array(); -#endif - -#if defined (__REDLIB__) - // Call the Redlib library, which in turn calls main() - __main() ; -#else - main(); -#endif - - // - // main() shouldn't return, but if it does, we'll just enter an infinite loop - // - while (1) { - ; - } -} - -//***************************************************************************** -// -// This is the code that gets called when the processor receives a NMI. This -// simply enters an infinite loop, preserving the system state for examination -// by a debugger. -// -//***************************************************************************** -void NMI_Handler(void) -{ - while(1) - { - } -} - -void HardFault_Handler(void) -{ - while(1) - { - } -} - -void MemManage_Handler(void) -{ - while(1) - { - } -} - -void BusFault_Handler(void) -{ - while(1) - { - } -} - -void UsageFault_Handler(void) -{ - while(1) - { - } -} - - -void DebugMon_Handler(void) -{ - while(1) - { - } -} - -//***************************************************************************** -// -// Processor ends up here if an unexpected interrupt occurs or a handler -// is not present in the application code. -// -//***************************************************************************** -void IntDefaultHandler(void) -{ - // - // Go into an infinite loop. - // - while(1) - { - } -} diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/main.c b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/main.c deleted file mode 100644 index 33a6920a5..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/main.c +++ /dev/null @@ -1,363 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - - -/* - * Creates all the demo application tasks, then starts the scheduler. The WEB - * documentation provides more details of the standard demo application tasks - * (which just exist to test the kernel port and provide an example of how to use - * each FreeRTOS API function). - * - * In addition to the standard demo tasks, the following tasks and tests are - * defined and/or created within this file: - * - * "Check" hook - This only executes fully every five seconds from the tick - * hook. Its main function is to check that all the standard demo tasks are - * still operational. The status can be viewed using on the Task Stats page - * served by the WEB server. - * - * "uIP" task - This is the task that handles the uIP stack. All TCP/IP - * processing is performed in this task. - * - * "USB" task - Enumerates the USB device as a CDC class, then echoes back all - * received characters with a configurable offset (for example, if the offset - * is 1 and 'A' is received then 'B' will be sent back). A dumb terminal such - * as Hyperterminal can be used to talk to the USB task. - */ - -/* Standard includes. */ -#include "stdio.h" - -/* Scheduler includes. */ -#include "FreeRTOS.h" -#include "task.h" - -/* Demo app includes. */ -#include "BlockQ.h" -#include "integer.h" -#include "blocktim.h" -#include "flash.h" -#include "partest.h" -#include "semtest.h" -#include "PollQ.h" -#include "GenQTest.h" -#include "QPeek.h" -#include "recmutex.h" - -/*-----------------------------------------------------------*/ - -/* The time between cycles of the 'check' functionality (defined within the -tick hook. */ -#define mainCHECK_DELAY ( ( TickType_t ) 5000 / portTICK_PERIOD_MS ) - -/* Task priorities. */ -#define mainQUEUE_POLL_PRIORITY ( tskIDLE_PRIORITY + 2 ) -#define mainSEM_TEST_PRIORITY ( tskIDLE_PRIORITY + 1 ) -#define mainBLOCK_Q_PRIORITY ( tskIDLE_PRIORITY + 2 ) -#define mainUIP_TASK_PRIORITY ( tskIDLE_PRIORITY + 3 ) -#define mainINTEGER_TASK_PRIORITY ( tskIDLE_PRIORITY ) -#define mainGEN_QUEUE_TASK_PRIORITY ( tskIDLE_PRIORITY ) -#define mainFLASH_TASK_PRIORITY ( tskIDLE_PRIORITY + 2 ) - -/* The WEB server has a larger stack as it utilises stack hungry string -handling library calls. */ -#define mainBASIC_WEB_STACK_SIZE ( configMINIMAL_STACK_SIZE * 4 ) - -/* The message displayed by the WEB server when all tasks are executing -without an error being reported. */ -#define mainPASS_STATUS_MESSAGE "All tasks are executing without error." - -/* Bit definitions. */ -#define PCONP_PCGPIO 0x00008000 -#define PLLFEED_FEED1 0x000000AA -#define PLLFEED_FEED2 0x00000055 -/*-----------------------------------------------------------*/ - -/* - * Configure the hardware for the demo. - */ -static void prvSetupHardware( void ); - -/* - * The task that handles the uIP stack. All TCP/IP processing is performed in - * this task. - */ -extern void vuIP_Task( void *pvParameters ); - -/* - * The task that handles the USB stack. - */ -extern void vUSBTask( void *pvParameters ); - -/* - * Simply returns the current status message for display on served WEB pages. - */ -char *pcGetTaskStatusMessage( void ); - -/*-----------------------------------------------------------*/ - -/* Holds the status message displayed by the WEB server. */ -static char *pcStatusMessage = mainPASS_STATUS_MESSAGE; - -/*-----------------------------------------------------------*/ - -int main( void ) -{ -char cIPAddress[ 16 ]; /* Enough space for "xxx.xxx.xxx.xxx\0". */ - - /* Configure the hardware for use by this demo. */ - prvSetupHardware(); - - /* Start the standard demo tasks. These are just here to exercise the - kernel port and provide examples of how the FreeRTOS API can be used. */ - vStartBlockingQueueTasks( mainBLOCK_Q_PRIORITY ); - vCreateBlockTimeTasks(); - vStartSemaphoreTasks( mainSEM_TEST_PRIORITY ); - vStartPolledQueueTasks( mainQUEUE_POLL_PRIORITY ); - vStartIntegerMathTasks( mainINTEGER_TASK_PRIORITY ); - vStartGenericQueueTasks( mainGEN_QUEUE_TASK_PRIORITY ); - vStartQueuePeekTasks(); - vStartRecursiveMutexTasks(); - vStartLEDFlashTasks( mainFLASH_TASK_PRIORITY ); - - /* Create the USB task. */ - xTaskCreate( vUSBTask, "USB", configMINIMAL_STACK_SIZE, ( void * ) NULL, tskIDLE_PRIORITY, NULL ); - - /* Display the IP address, then create the uIP task. The WEB server runs - in this task. --- Due to tool changes since this demo was created the LCD - is no longer used. - LCDdriver_initialisation(); - LCD_PrintString( 5, 10, "FreeRTOS.org", 14, COLOR_GREEN); - sprintf( cIPAddress, "%d.%d.%d.%d", configIP_ADDR0, configIP_ADDR1, configIP_ADDR2, configIP_ADDR3 ); - LCD_PrintString( 5, 30, cIPAddress, 14, COLOR_RED); - xTaskCreate( vuIP_Task, "uIP", mainBASIC_WEB_STACK_SIZE, ( void * ) NULL, mainUIP_TASK_PRIORITY, NULL ); */ - - /* Start the scheduler. */ - vTaskStartScheduler(); - - /* Will only get here if there was insufficient memory to create the idle - task. The idle task is created within vTaskStartScheduler(). */ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -void vApplicationTickHook( void ) -{ -static unsigned long ulTicksSinceLastDisplay = 0; - - /* Called from every tick interrupt as described in the comments at the top - of this file. - - Have enough ticks passed to make it time to perform our health status - check again? */ - ulTicksSinceLastDisplay++; - if( ulTicksSinceLastDisplay >= mainCHECK_DELAY ) - { - /* Reset the counter so these checks run again in mainCHECK_DELAY - ticks time. */ - ulTicksSinceLastDisplay = 0; - - /* Has an error been found in any task? */ - if( xAreGenericQueueTasksStillRunning() != pdTRUE ) - { - pcStatusMessage = "An error has been detected in the Generic Queue test/demo."; - } - else if( xAreQueuePeekTasksStillRunning() != pdTRUE ) - { - pcStatusMessage = "An error has been detected in the Peek Queue test/demo."; - } - else if( xAreBlockingQueuesStillRunning() != pdTRUE ) - { - pcStatusMessage = "An error has been detected in the Block Queue test/demo."; - } - else if( xAreBlockTimeTestTasksStillRunning() != pdTRUE ) - { - pcStatusMessage = "An error has been detected in the Block Time test/demo."; - } - else if( xAreSemaphoreTasksStillRunning() != pdTRUE ) - { - pcStatusMessage = "An error has been detected in the Semaphore test/demo."; - } - else if( xArePollingQueuesStillRunning() != pdTRUE ) - { - pcStatusMessage = "An error has been detected in the Poll Queue test/demo."; - } - else if( xAreIntegerMathsTaskStillRunning() != pdTRUE ) - { - pcStatusMessage = "An error has been detected in the Int Math test/demo."; - } - else if( xAreRecursiveMutexTasksStillRunning() != pdTRUE ) - { - pcStatusMessage = "An error has been detected in the Mutex test/demo."; - } - } -} -/*-----------------------------------------------------------*/ - -char *pcGetTaskStatusMessage( void ) -{ - /* Not bothered about a critical section here. */ - return pcStatusMessage; -} -/*-----------------------------------------------------------*/ - -void prvSetupHardware( void ) -{ - /* Disable peripherals power. */ - LPC_SC->PCONP = 0; - - /* Enable GPIO power. */ - LPC_SC->PCONP = PCONP_PCGPIO; - - /* Disable TPIU. */ - LPC_PINCON->PINSEL10 = 0; - - if ( LPC_SC->PLL0STAT & ( 1 << 25 ) ) - { - /* Enable PLL, disconnected. */ - LPC_SC->PLL0CON = 1; - LPC_SC->PLL0FEED = PLLFEED_FEED1; - LPC_SC->PLL0FEED = PLLFEED_FEED2; - } - - /* Disable PLL, disconnected. */ - LPC_SC->PLL0CON = 0; - LPC_SC->PLL0FEED = PLLFEED_FEED1; - LPC_SC->PLL0FEED = PLLFEED_FEED2; - - /* Enable main OSC. */ - LPC_SC->SCS |= 0x20; - while( !( LPC_SC->SCS & 0x40 ) ); - - /* select main OSC, 12MHz, as the PLL clock source. */ - LPC_SC->CLKSRCSEL = 0x1; - - LPC_SC->PLL0CFG = 0x20031; - LPC_SC->PLL0FEED = PLLFEED_FEED1; - LPC_SC->PLL0FEED = PLLFEED_FEED2; - - /* Enable PLL, disconnected. */ - LPC_SC->PLL0CON = 1; - LPC_SC->PLL0FEED = PLLFEED_FEED1; - LPC_SC->PLL0FEED = PLLFEED_FEED2; - - /* Set clock divider. */ - LPC_SC->CCLKCFG = 0x03; - - /* Configure flash accelerator. */ - LPC_SC->FLASHCFG = 0x403a; - - /* Check lock bit status. */ - while( ( ( LPC_SC->PLL0STAT & ( 1 << 26 ) ) == 0 ) ); - - /* Enable and connect. */ - LPC_SC->PLL0CON = 3; - LPC_SC->PLL0FEED = PLLFEED_FEED1; - LPC_SC->PLL0FEED = PLLFEED_FEED2; - while( ( ( LPC_SC->PLL0STAT & ( 1 << 25 ) ) == 0 ) ); - - - - - /* Configure the clock for the USB. */ - if( LPC_SC->PLL1STAT & ( 1 << 9 ) ) - { - /* Enable PLL, disconnected. */ - LPC_SC->PLL1CON = 1; - LPC_SC->PLL1FEED = PLLFEED_FEED1; - LPC_SC->PLL1FEED = PLLFEED_FEED2; - } - - /* Disable PLL, disconnected. */ - LPC_SC->PLL1CON = 0; - LPC_SC->PLL1FEED = PLLFEED_FEED1; - LPC_SC->PLL1FEED = PLLFEED_FEED2; - - LPC_SC->PLL1CFG = 0x23; - LPC_SC->PLL1FEED = PLLFEED_FEED1; - LPC_SC->PLL1FEED = PLLFEED_FEED2; - - /* Enable PLL, disconnected. */ - LPC_SC->PLL1CON = 1; - LPC_SC->PLL1FEED = PLLFEED_FEED1; - LPC_SC->PLL1FEED = PLLFEED_FEED2; - while( ( ( LPC_SC->PLL1STAT & ( 1 << 10 ) ) == 0 ) ); - - /* Enable and connect. */ - LPC_SC->PLL1CON = 3; - LPC_SC->PLL1FEED = PLLFEED_FEED1; - LPC_SC->PLL1FEED = PLLFEED_FEED2; - while( ( ( LPC_SC->PLL1STAT & ( 1 << 9 ) ) == 0 ) ); - - /* Setup the peripheral bus to be the same as the CPU output (100 MHz). */ - LPC_SC->PCLKSEL0 = 0x05555555; - - /* Configure the LEDs. */ - vParTestInitialise(); -} -/*-----------------------------------------------------------*/ - -void vApplicationStackOverflowHook( TaskHandle_t pxTask, char *pcTaskName ) -{ - /* This function will get called if a task overflows its stack. */ - - ( void ) pxTask; - ( void ) pcTaskName; - - for( ;; ); -} -/*-----------------------------------------------------------*/ - -void vConfigureTimerForRunTimeStats( void ) -{ -const unsigned long TCR_COUNT_RESET = 2, CTCR_CTM_TIMER = 0x00, TCR_COUNT_ENABLE = 0x01; - - /* This function configures a timer that is used as the time base when - collecting run time statistical information - basically the percentage - of CPU time that each task is utilising. It is called automatically when - the scheduler is started (assuming configGENERATE_RUN_TIME_STATS is set - to 1). */ - - /* Power up and feed the timer. */ - LPC_SC->PCONP |= 0x02UL; - LPC_SC->PCLKSEL0 = (LPC_SC->PCLKSEL0 & (~(0x3<<2))) | (0x01 << 2); - - /* Reset Timer 0 */ - LPC_TIM0->TCR = TCR_COUNT_RESET; - - /* Just count up. */ - LPC_TIM0->CTCR = CTCR_CTM_TIMER; - - /* Prescale to a frequency that is good enough to get a decent resolution, - but not too fast so as to overflow all the time. */ - LPC_TIM0->PR = ( configCPU_CLOCK_HZ / 10000UL ) - 1UL; - - /* Start the counter. */ - LPC_TIM0->TCR = TCR_COUNT_ENABLE; -} -/*-----------------------------------------------------------*/ - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/printf-stdarg.c b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/printf-stdarg.c deleted file mode 100644 index b5ac41be7..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/printf-stdarg.c +++ /dev/null @@ -1,293 +0,0 @@ -/* - Copyright 2001, 2002 Georges Menie (www.menie.org) - stdarg version contributed by Christian Ettinger - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU Lesser General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -*/ - -/* - putchar is the only external dependency for this file, - if you have a working putchar, leave it commented out. - If not, uncomment the define below and - replace outbyte(c) by your own function call. - -*/ - -#define putchar(c) c - -#include - -static void printchar(char **str, int c) -{ - //extern int putchar(int c); - - if (str) { - **str = (char)c; - ++(*str); - } - else - { - (void)putchar(c); - } -} - -#define PAD_RIGHT 1 -#define PAD_ZERO 2 - -static int prints(char **out, const char *string, int width, int pad) -{ - register int pc = 0, padchar = ' '; - - if (width > 0) { - register int len = 0; - register const char *ptr; - for (ptr = string; *ptr; ++ptr) ++len; - if (len >= width) width = 0; - else width -= len; - if (pad & PAD_ZERO) padchar = '0'; - } - if (!(pad & PAD_RIGHT)) { - for ( ; width > 0; --width) { - printchar (out, padchar); - ++pc; - } - } - for ( ; *string ; ++string) { - printchar (out, *string); - ++pc; - } - for ( ; width > 0; --width) { - printchar (out, padchar); - ++pc; - } - - return pc; -} - -/* the following should be enough for 32 bit int */ -#define PRINT_BUF_LEN 12 - -static int printi(char **out, int i, int b, int sg, int width, int pad, int letbase) -{ - char print_buf[PRINT_BUF_LEN]; - register char *s; - register int t, neg = 0, pc = 0; - register unsigned int u = (unsigned int)i; - - if (i == 0) { - print_buf[0] = '0'; - print_buf[1] = '\0'; - return prints (out, print_buf, width, pad); - } - - if (sg && b == 10 && i < 0) { - neg = 1; - u = (unsigned int)-i; - } - - s = print_buf + PRINT_BUF_LEN-1; - *s = '\0'; - - while (u) { - t = (unsigned int)u % b; - if( t >= 10 ) - t += letbase - '0' - 10; - *--s = (char)(t + '0'); - u /= b; - } - - if (neg) { - if( width && (pad & PAD_ZERO) ) { - printchar (out, '-'); - ++pc; - --width; - } - else { - *--s = '-'; - } - } - - return pc + prints (out, s, width, pad); -} - -static int print( char **out, const char *format, va_list args ) -{ - register int width, pad; - register int pc = 0; - char scr[2]; - - for (; *format != 0; ++format) { - if (*format == '%') { - ++format; - width = pad = 0; - if (*format == '\0') break; - if (*format == '%') goto out; - if (*format == '-') { - ++format; - pad = PAD_RIGHT; - } - while (*format == '0') { - ++format; - pad |= PAD_ZERO; - } - for ( ; *format >= '0' && *format <= '9'; ++format) { - width *= 10; - width += *format - '0'; - } - if( *format == 's' ) { - register char *s = (char *)va_arg( args, int ); - pc += prints (out, s?s:"(null)", width, pad); - continue; - } - if( *format == 'd' ) { - pc += printi (out, va_arg( args, int ), 10, 1, width, pad, 'a'); - continue; - } - if( *format == 'x' ) { - pc += printi (out, va_arg( args, int ), 16, 0, width, pad, 'a'); - continue; - } - if( *format == 'X' ) { - pc += printi (out, va_arg( args, int ), 16, 0, width, pad, 'A'); - continue; - } - if( *format == 'u' ) { - pc += printi (out, va_arg( args, int ), 10, 0, width, pad, 'a'); - continue; - } - if( *format == 'c' ) { - /* char are converted to int then pushed on the stack */ - scr[0] = (char)va_arg( args, int ); - scr[1] = '\0'; - pc += prints (out, scr, width, pad); - continue; - } - } - else { - out: - printchar (out, *format); - ++pc; - } - } - if (out) **out = '\0'; - va_end( args ); - return pc; -} - -int printf(const char *format, ...) -{ - va_list args; - - va_start( args, format ); - return print( 0, format, args ); -} - -int sprintf(char *out, const char *format, ...) -{ - va_list args; - - va_start( args, format ); - return print( &out, format, args ); -} - - -int snprintf( char *buf, unsigned int count, const char *format, ... ) -{ - va_list args; - - ( void ) count; - - va_start( args, format ); - return print( &buf, format, args ); -} - - -#ifdef TEST_PRINTF -int main(void) -{ - char *ptr = "Hello world!"; - char *np = 0; - int i = 5; - unsigned int bs = sizeof(int)*8; - int mi; - char buf[80]; - - mi = (1 << (bs-1)) + 1; - printf("%s\n", ptr); - printf("printf test\n"); - printf("%s is null pointer\n", np); - printf("%d = 5\n", i); - printf("%d = - max int\n", mi); - printf("char %c = 'a'\n", 'a'); - printf("hex %x = ff\n", 0xff); - printf("hex %02x = 00\n", 0); - printf("signed %d = unsigned %u = hex %x\n", -3, -3, -3); - printf("%d %s(s)%", 0, "message"); - printf("\n"); - printf("%d %s(s) with %%\n", 0, "message"); - sprintf(buf, "justif: \"%-10s\"\n", "left"); printf("%s", buf); - sprintf(buf, "justif: \"%10s\"\n", "right"); printf("%s", buf); - sprintf(buf, " 3: %04d zero padded\n", 3); printf("%s", buf); - sprintf(buf, " 3: %-4d left justif.\n", 3); printf("%s", buf); - sprintf(buf, " 3: %4d right justif.\n", 3); printf("%s", buf); - sprintf(buf, "-3: %04d zero padded\n", -3); printf("%s", buf); - sprintf(buf, "-3: %-4d left justif.\n", -3); printf("%s", buf); - sprintf(buf, "-3: %4d right justif.\n", -3); printf("%s", buf); - - return 0; -} - -/* - * if you compile this file with - * gcc -Wall $(YOUR_C_OPTIONS) -DTEST_PRINTF -c printf.c - * you will get a normal warning: - * printf.c:214: warning: spurious trailing `%' in format - * this line is testing an invalid % at the end of the format string. - * - * this should display (on 32bit int machine) : - * - * Hello world! - * printf test - * (null) is null pointer - * 5 = 5 - * -2147483647 = - max int - * char a = 'a' - * hex ff = ff - * hex 00 = 00 - * signed -3 = unsigned 4294967293 = hex fffffffd - * 0 message(s) - * 0 message(s) with % - * justif: "left " - * justif: " right" - * 3: 0003 zero padded - * 3: 3 left justif. - * 3: 3 right justif. - * -3: -003 zero padded - * -3: -3 left justif. - * -3: -3 right justif. - */ - -#endif - - -/* To keep linker happy. */ -int write( int i, char* c, int n) -{ - (void)i; - (void)n; - (void)c; - return 0; -} - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/rtosdemo_rdb1768_Debug.ld b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/rtosdemo_rdb1768_Debug.ld deleted file mode 100644 index 3bb097757..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/rtosdemo_rdb1768_Debug.ld +++ /dev/null @@ -1,87 +0,0 @@ -/* - * GENERATED FILE - DO NOT EDIT - * (C) Code Red Technologies Ltd, 2008-9 - * Generated C linker script file for LPC1768 - * (created from nxp_lpc13_c.ld (v2.0.11 (200907061347)) on Thu Jul 09 12:44:31 BST 2009) -*/ - -GROUP(libgcc.a libc.a) - -MEMORY -{ - FLASH (rx) : ORIGIN = 0x0 LENGTH = 0x80000 - SRAM (rwx) : ORIGIN = 0x10000000, LENGTH = 0x8000 - AHBRAM0 : ORIGIN = 0x2007c000, LENGTH = 0x4000 - AHBRAM1 : ORIGIN = 0x20080000, LENGTH = 0x4000 -} - -_vRamTop = 0x10000000 + 0x8000; - -ENTRY(ResetISR) - -SECTIONS -{ - .text : - { - KEEP(*(.isr_vector)) - *(.text*) - *(.rodata*) - - } > FLASH - - - /* for exception handling/unwind - some Newlib functions (in common with C++ and STDC++) use this. */ - - .ARM.extab : - { - *(.ARM.extab* .gnu.linkonce.armextab.*) - } > FLASH - - __exidx_start = .; - .ARM.exidx : - { - *(.ARM.exidx* .gnu.linkonce.armexidx.*) - } > FLASH - __exidx_end = .; - - _etext = .; - - .data : AT (__exidx_end) - { - _data = .; - *(vtable) - *(.data*) - _edata = .; - } > SRAM - - /* zero initialized data */ - .bss : - { - _bss = .; - *(.bss*) - *(COMMON) - _ebss = .; - } > SRAM - - /* Where we put the heap with cr_clib */ - .cr_heap : - { - end = .; - _pvHeapStart = .; - } > SRAM - -/* - Note: (ref: M0000066) - Moving the stack down by 16 is to work around a GDB bug. - This space can be reclaimed for Production Builds. -*/ - _vStackTop = _vRamTop - 16; - - .ETHRAM : - { - } > AHBRAM0 - - .USBRAM : - { - } > AHBRAM1 -} diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/system_LPC17xx.h b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/system_LPC17xx.h deleted file mode 100644 index e58767e9c..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/system_LPC17xx.h +++ /dev/null @@ -1,64 +0,0 @@ -/**************************************************************************//** - * @file system_LPC17xx.h - * @brief CMSIS Cortex-M3 Device Peripheral Access Layer Header File - * for the NXP LPC17xx Device Series - * @version V1.02 - * @date 08. September 2009 - * - * @note - * Copyright (C) 2009 ARM Limited. All rights reserved. - * - * @par - * ARM Limited (ARM) is supplying this software for use with Cortex-M - * processor based microcontrollers. This file can be freely distributed - * within development tools that are supporting such ARM based processors. - * - * @par - * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED - * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. - * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR - * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. - * - ******************************************************************************/ - - -#ifndef __SYSTEM_LPC17xx_H -#define __SYSTEM_LPC17xx_H - -#ifdef __cplusplus -extern "C" { -#endif - -#include - -extern uint32_t SystemCoreClock; /*!< System Clock Frequency (Core Clock) */ - - -/** - * Initialize the system - * - * @param none - * @return none - * - * @brief Setup the microcontroller system. - * Initialize the System and update the SystemCoreClock variable. - */ -extern void SystemInit (void); - -/** - * Update SystemCoreClock variable - * - * @param none - * @return none - * - * @brief Updates the SystemCoreClock with current core Clock - * retrieved from cpu registers. - */ -extern void SystemCoreClockUpdate (void); - -#ifdef __cplusplus -} -#endif - -#endif /* __SYSTEM_LPC17xx_H */ diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/EthDev.h b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/EthDev.h deleted file mode 100644 index f67789f44..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/EthDev.h +++ /dev/null @@ -1,111 +0,0 @@ -/* - * @file: EthDev.h - * @purpose: Ethernet Device Definitions - * @version: V1.10 - * @date: 24. Feb. 2009 - *---------------------------------------------------------------------------- - * - * Copyright (C) 2009 ARM Limited. All rights reserved. - * - * ARM Limited (ARM) is supplying this software for use with Cortex-M3 - * processor based microcontrollers. This file can be freely distributed - * within development tools that are supporting such ARM based processors. - * - * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED - * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. - * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR - * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. - * - */ - -#ifndef _ETHDEV__H -#define _ETHDEV__H - -#ifndef NULL - #define NULL 0 -#endif - -/*---------------------------------------------------------------------------- - Ethernet Device Defines - *----------------------------------------------------------------------------*/ -#define EthDev_ADDR_SIZE 6 /*!< Ethernet Address size in bytes */ -#define EthDev_MTU_SIZE 1514 /*!< Maximum Transmission Unit */ - - -/*---------------------------------------------------------------------------- - Ethernet Device Configuration and Control Command Defines - *----------------------------------------------------------------------------*/ -typedef enum { - EthDev_LINK_DOWN = 0, /*!< Ethernet link not established */ - EthDev_LINK_UP = 1, /*!< Ethernet link established */ -} EthDev_LINK; - -typedef enum { - EthDev_SPEED_10M = 0, /*!< 10.0 Mbps link speed */ - EthDev_SPEED_100M = 1, /*!< 100.0 Mbps link speed */ - EthDev_SPEED_1000M = 2, /*!< 1.0 Gbps link speed */ -} EthDev_SPEED; - -typedef enum { - EthDev_DUPLEX_HALF = 0, /*!< Link half duplex */ - EthDev_DUPLEX_FULL = 1, /*!< Link full duplex */ -} EthDev_DUPLEX; - -typedef enum { - EthDev_MODE_AUTO = 0, - EthDev_MODE_10M_FULL = 1, - EthDev_MODE_10M_HALF = 2, - EthDev_MODE_100M_FULL = 3, - EthDev_MODE_100M_HALF = 4, - EthDev_MODE_1000M_FULL = 5, - EthDev_MODE_1000M_HALF = 6, -} EthDev_MODE; - -typedef struct { - EthDev_LINK Link : 1; - EthDev_DUPLEX Duplex : 1; - EthDev_SPEED Speed : 2; -} EthDev_STATUS; - - -/*---------------------------------------------------------------------------- - Ethernet Device IO Block Structure - *----------------------------------------------------------------------------*/ -typedef struct { - - /* Initialized by the user application before call to Init. */ - EthDev_MODE Mode; - unsigned char HwAddr[EthDev_ADDR_SIZE]; - void *(*RxFrame) (int size); - void (*RxFrameReady) (int size); - - /* Initialized by Ethernet driver. */ - int (*Init) (void); - int (*UnInit) (void); - int (*SetMCFilter)(int NumHwAddr, unsigned char *pHwAddr); - int (*TxFrame) (void *pData, int size); - void (*Lock) (void); - void (*UnLock) (void); - EthDev_STATUS (*LinkChk) (void); -} EthDev_IOB; - - -/* - * Look for received data. If data is found then uip_buf is assigned to the - * new data and the length of the data is returned. If no data is found then - * uip_buf is not updated and 0 is returned. - */ -unsigned long ulGetEMACRxData( void ); - -/* - * Send usTxDataLen bytes from uip_buf. - */ -void vSendEMACTxData( unsigned short usTxDataLen ); - -/* - * Prepare the Ethernet hardware ready for TCP/IP comms. - */ -long lEMACInit(void); - -#endif diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/EthDev_LPC17xx.h b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/EthDev_LPC17xx.h deleted file mode 100644 index 93134430f..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/EthDev_LPC17xx.h +++ /dev/null @@ -1,331 +0,0 @@ -/* - * @file: EthDev_LPC17xx.h - * @purpose: Ethernet Device Definitions for NXP LPC17xx - * @version: V0.01 - * @date: 14. May 2009 - *---------------------------------------------------------------------------- - * - * Copyright (C) 2009 ARM Limited. All rights reserved. - * - * ARM Limited (ARM) is supplying this software for use with Cortex-M3 - * processor based microcontrollers. This file can be freely distributed - * within development tools that are supporting such ARM based processors. - * - * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED - * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. - * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR - * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. - * - */ - -#ifndef __ETHDEV_LPC17XX_H -#define __ETHDEV_LPC17XX_H - -#include - -/* EMAC Memory Buffer configuration for 16K Ethernet RAM. */ -#define NUM_RX_FRAG 3 /* Num.of RX Fragments. */ -#define NUM_TX_FRAG 2 /* Num.of TX Fragments. */ -#define ETH_FRAG_SIZE 1536 /* Packet Fragment size 1536 Bytes */ - -#define ETH_MAX_FLEN 1536 /* Max. Ethernet Frame Size */ - -typedef struct { /* RX Descriptor struct */ - uint32_t Packet; - uint32_t Ctrl; -} RX_DESC_TypeDef; - -typedef struct { /* RX Status struct */ - uint32_t Info; - uint32_t HashCRC; -} RX_STAT_TypeDef; - -typedef struct { /* TX Descriptor struct */ - uint32_t Packet; - uint32_t Ctrl; -} TX_DESC_TypeDef; - -typedef struct { /* TX Status struct */ - uint32_t Info; -} TX_STAT_TypeDef; - - -/* EMAC variables located in AHB SRAM bank 1*/ -#define AHB_SRAM_BANK1_BASE 0x2007c000UL -#define RX_DESC_BASE (AHB_SRAM_BANK1_BASE ) -#define RX_STAT_BASE (RX_DESC_BASE + NUM_RX_FRAG*(2*4)) /* 2 * uint32_t, see RX_DESC_TypeDef */ -#define TX_DESC_BASE (RX_STAT_BASE + NUM_RX_FRAG*(2*4)) /* 2 * uint32_t, see RX_STAT_TypeDef */ -#define TX_STAT_BASE (TX_DESC_BASE + NUM_TX_FRAG*(2*4)) /* 2 * uint32_t, see TX_DESC_TypeDef */ -#define ETH_BUF_BASE (TX_STAT_BASE + NUM_TX_FRAG*(1*4)) /* 1 * uint32_t, see TX_STAT_TypeDef */ - -/* RX and TX descriptor and status definitions. */ -#define RX_DESC_PACKET(i) (*(unsigned int *)(RX_DESC_BASE + 8*i)) -#define RX_DESC_CTRL(i) (*(unsigned int *)(RX_DESC_BASE+4 + 8*i)) -#define RX_STAT_INFO(i) (*(unsigned int *)(RX_STAT_BASE + 8*i)) -#define RX_STAT_HASHCRC(i) (*(unsigned int *)(RX_STAT_BASE+4 + 8*i)) -#define TX_DESC_PACKET(i) (*(unsigned int *)(TX_DESC_BASE + 8*i)) -#define TX_DESC_CTRL(i) (*(unsigned int *)(TX_DESC_BASE+4 + 8*i)) -#define TX_STAT_INFO(i) (*(unsigned int *)(TX_STAT_BASE + 4*i)) -#define ETH_BUF(i) ( ETH_BUF_BASE + ETH_FRAG_SIZE*i ) -#define ETH_NUM_BUFFERS ( NUM_TX_FRAG + NUM_RX_FRAG + 1 ) /* There are in fact 2 more buffers than descriptors as the two Tx descriptors use the same buffer to speed up the uip Tx. */ - - -/* MAC Configuration Register 1 */ -#define MAC1_REC_EN 0x00000001 /* Receive Enable */ -#define MAC1_PASS_ALL 0x00000002 /* Pass All Receive Frames */ -#define MAC1_RX_FLOWC 0x00000004 /* RX Flow Control */ -#define MAC1_TX_FLOWC 0x00000008 /* TX Flow Control */ -#define MAC1_LOOPB 0x00000010 /* Loop Back Mode */ -#define MAC1_RES_TX 0x00000100 /* Reset TX Logic */ -#define MAC1_RES_MCS_TX 0x00000200 /* Reset MAC TX Control Sublayer */ -#define MAC1_RES_RX 0x00000400 /* Reset RX Logic */ -#define MAC1_RES_MCS_RX 0x00000800 /* Reset MAC RX Control Sublayer */ -#define MAC1_SIM_RES 0x00004000 /* Simulation Reset */ -#define MAC1_SOFT_RES 0x00008000 /* Soft Reset MAC */ - -/* MAC Configuration Register 2 */ -#define MAC2_FULL_DUP 0x00000001 /* Full Duplex Mode */ -#define MAC2_FRM_LEN_CHK 0x00000002 /* Frame Length Checking */ -#define MAC2_HUGE_FRM_EN 0x00000004 /* Huge Frame Enable */ -#define MAC2_DLY_CRC 0x00000008 /* Delayed CRC Mode */ -#define MAC2_CRC_EN 0x00000010 /* Append CRC to every Frame */ -#define MAC2_PAD_EN 0x00000020 /* Pad all Short Frames */ -#define MAC2_VLAN_PAD_EN 0x00000040 /* VLAN Pad Enable */ -#define MAC2_ADET_PAD_EN 0x00000080 /* Auto Detect Pad Enable */ -#define MAC2_PPREAM_ENF 0x00000100 /* Pure Preamble Enforcement */ -#define MAC2_LPREAM_ENF 0x00000200 /* Long Preamble Enforcement */ -#define MAC2_NO_BACKOFF 0x00001000 /* No Backoff Algorithm */ -#define MAC2_BACK_PRESSURE 0x00002000 /* Backoff Presurre / No Backoff */ -#define MAC2_EXCESS_DEF 0x00004000 /* Excess Defer */ - -/* Back-to-Back Inter-Packet-Gap Register */ -#define IPGT_FULL_DUP 0x00000015 /* Recommended value for Full Duplex */ -#define IPGT_HALF_DUP 0x00000012 /* Recommended value for Half Duplex */ - -/* Non Back-to-Back Inter-Packet-Gap Register */ -#define IPGR_DEF 0x00000012 /* Recommended value */ - -/* Collision Window/Retry Register */ -#define CLRT_DEF 0x0000370F /* Default value */ - -/* PHY Support Register */ -#define SUPP_SPEED 0x00000100 /* Reduced MII Logic Current Speed */ -#define SUPP_RES_RMII 0x00000800 /* Reset Reduced MII Logic */ - -/* Test Register */ -#define TEST_SHCUT_PQUANTA 0x00000001 /* Shortcut Pause Quanta */ -#define TEST_TST_PAUSE 0x00000002 /* Test Pause */ -#define TEST_TST_BACKP 0x00000004 /* Test Back Pressure */ - -/* MII Management Configuration Register */ -#define MCFG_SCAN_INC 0x00000001 /* Scan Increment PHY Address */ -#define MCFG_SUPP_PREAM 0x00000002 /* Suppress Preamble */ -#define MCFG_CLK_SEL 0x0000003C /* Clock Select Mask */ -#define MCFG_RES_MII 0x00008000 /* Reset MII Management Hardware */ - -/* MII Management Command Register */ -#define MCMD_READ 0x00000001 /* MII Read */ -#define MCMD_SCAN 0x00000002 /* MII Scan continuously */ - -#define MII_WR_TOUT 0x00050000 /* MII Write timeout count */ -#define MII_RD_TOUT 0x00050000 /* MII Read timeout count */ - -/* MII Management Address Register */ -#define MADR_REG_ADR 0x0000001F /* MII Register Address Mask */ -#define MADR_PHY_ADR 0x00001F00 /* PHY Address Mask */ - -/* MII Management Indicators Register */ -#define MIND_BUSY 0x00000001 /* MII is Busy */ -#define MIND_SCAN 0x00000002 /* MII Scanning in Progress */ -#define MIND_NOT_VAL 0x00000004 /* MII Read Data not valid */ -#define MIND_MII_LINK_FAIL 0x00000008 /* MII Link Failed */ - -/* Command Register */ -#define CR_RX_EN 0x00000001 /* Enable Receive */ -#define CR_TX_EN 0x00000002 /* Enable Transmit */ -#define CR_REG_RES 0x00000008 /* Reset Host Registers */ -#define CR_TX_RES 0x00000010 /* Reset Transmit Datapath */ -#define CR_RX_RES 0x00000020 /* Reset Receive Datapath */ -#define CR_PASS_RUNT_FRM 0x00000040 /* Pass Runt Frames */ -#define CR_PASS_RX_FILT 0x00000080 /* Pass RX Filter */ -#define CR_TX_FLOW_CTRL 0x00000100 /* TX Flow Control */ -#define CR_RMII 0x00000200 /* Reduced MII Interface */ -#define CR_FULL_DUP 0x00000400 /* Full Duplex */ - -/* Status Register */ -#define SR_RX_EN 0x00000001 /* Enable Receive */ -#define SR_TX_EN 0x00000002 /* Enable Transmit */ - -/* Transmit Status Vector 0 Register */ -#define TSV0_CRC_ERR 0x00000001 /* CRC error */ -#define TSV0_LEN_CHKERR 0x00000002 /* Length Check Error */ -#define TSV0_LEN_OUTRNG 0x00000004 /* Length Out of Range */ -#define TSV0_DONE 0x00000008 /* Tramsmission Completed */ -#define TSV0_MCAST 0x00000010 /* Multicast Destination */ -#define TSV0_BCAST 0x00000020 /* Broadcast Destination */ -#define TSV0_PKT_DEFER 0x00000040 /* Packet Deferred */ -#define TSV0_EXC_DEFER 0x00000080 /* Excessive Packet Deferral */ -#define TSV0_EXC_COLL 0x00000100 /* Excessive Collision */ -#define TSV0_LATE_COLL 0x00000200 /* Late Collision Occured */ -#define TSV0_GIANT 0x00000400 /* Giant Frame */ -#define TSV0_UNDERRUN 0x00000800 /* Buffer Underrun */ -#define TSV0_BYTES 0x0FFFF000 /* Total Bytes Transferred */ -#define TSV0_CTRL_FRAME 0x10000000 /* Control Frame */ -#define TSV0_PAUSE 0x20000000 /* Pause Frame */ -#define TSV0_BACK_PRESS 0x40000000 /* Backpressure Method Applied */ -#define TSV0_VLAN 0x80000000 /* VLAN Frame */ - -/* Transmit Status Vector 1 Register */ -#define TSV1_BYTE_CNT 0x0000FFFF /* Transmit Byte Count */ -#define TSV1_COLL_CNT 0x000F0000 /* Transmit Collision Count */ - -/* Receive Status Vector Register */ -#define RSV_BYTE_CNT 0x0000FFFF /* Receive Byte Count */ -#define RSV_PKT_IGNORED 0x00010000 /* Packet Previously Ignored */ -#define RSV_RXDV_SEEN 0x00020000 /* RXDV Event Previously Seen */ -#define RSV_CARR_SEEN 0x00040000 /* Carrier Event Previously Seen */ -#define RSV_REC_CODEV 0x00080000 /* Receive Code Violation */ -#define RSV_CRC_ERR 0x00100000 /* CRC Error */ -#define RSV_LEN_CHKERR 0x00200000 /* Length Check Error */ -#define RSV_LEN_OUTRNG 0x00400000 /* Length Out of Range */ -#define RSV_REC_OK 0x00800000 /* Frame Received OK */ -#define RSV_MCAST 0x01000000 /* Multicast Frame */ -#define RSV_BCAST 0x02000000 /* Broadcast Frame */ -#define RSV_DRIB_NIBB 0x04000000 /* Dribble Nibble */ -#define RSV_CTRL_FRAME 0x08000000 /* Control Frame */ -#define RSV_PAUSE 0x10000000 /* Pause Frame */ -#define RSV_UNSUPP_OPC 0x20000000 /* Unsupported Opcode */ -#define RSV_VLAN 0x40000000 /* VLAN Frame */ - -/* Flow Control Counter Register */ -#define FCC_MIRR_CNT 0x0000FFFF /* Mirror Counter */ -#define FCC_PAUSE_TIM 0xFFFF0000 /* Pause Timer */ - -/* Flow Control Status Register */ -#define FCS_MIRR_CNT 0x0000FFFF /* Mirror Counter Current */ - -/* Receive Filter Control Register */ -#define RFC_UCAST_EN 0x00000001 /* Accept Unicast Frames Enable */ -#define RFC_BCAST_EN 0x00000002 /* Accept Broadcast Frames Enable */ -#define RFC_MCAST_EN 0x00000004 /* Accept Multicast Frames Enable */ -#define RFC_UCAST_HASH_EN 0x00000008 /* Accept Unicast Hash Filter Frames */ -#define RFC_MCAST_HASH_EN 0x00000010 /* Accept Multicast Hash Filter Fram.*/ -#define RFC_PERFECT_EN 0x00000020 /* Accept Perfect Match Enable */ -#define RFC_MAGP_WOL_EN 0x00001000 /* Magic Packet Filter WoL Enable */ -#define RFC_PFILT_WOL_EN 0x00002000 /* Perfect Filter WoL Enable */ - -/* Receive Filter WoL Status/Clear Registers */ -#define WOL_UCAST 0x00000001 /* Unicast Frame caused WoL */ -#define WOL_BCAST 0x00000002 /* Broadcast Frame caused WoL */ -#define WOL_MCAST 0x00000004 /* Multicast Frame caused WoL */ -#define WOL_UCAST_HASH 0x00000008 /* Unicast Hash Filter Frame WoL */ -#define WOL_MCAST_HASH 0x00000010 /* Multicast Hash Filter Frame WoL */ -#define WOL_PERFECT 0x00000020 /* Perfect Filter WoL */ -#define WOL_RX_FILTER 0x00000080 /* RX Filter caused WoL */ -#define WOL_MAG_PACKET 0x00000100 /* Magic Packet Filter caused WoL */ - -/* Interrupt Status/Enable/Clear/Set Registers */ -#define INT_RX_OVERRUN 0x00000001 /* Overrun Error in RX Queue */ -#define INT_RX_ERR 0x00000002 /* Receive Error */ -#define INT_RX_FIN 0x00000004 /* RX Finished Process Descriptors */ -#define INT_RX_DONE 0x00000008 /* Receive Done */ -#define INT_TX_UNDERRUN 0x00000010 /* Transmit Underrun */ -#define INT_TX_ERR 0x00000020 /* Transmit Error */ -#define INT_TX_FIN 0x00000040 /* TX Finished Process Descriptors */ -#define INT_TX_DONE 0x00000080 /* Transmit Done */ -#define INT_SOFT_INT 0x00001000 /* Software Triggered Interrupt */ -#define INT_WAKEUP 0x00002000 /* Wakeup Event Interrupt */ - -/* Power Down Register */ -#define PD_POWER_DOWN 0x80000000 /* Power Down MAC */ - -/* RX Descriptor Control Word */ -#define RCTRL_SIZE 0x000007FF /* Buffer size mask */ -#define RCTRL_INT 0x80000000 /* Generate RxDone Interrupt */ - -/* RX Status Hash CRC Word */ -#define RHASH_SA 0x000001FF /* Hash CRC for Source Address */ -#define RHASH_DA 0x001FF000 /* Hash CRC for Destination Address */ - -/* RX Status Information Word */ -#define RINFO_SIZE 0x000007FF /* Data size in bytes */ -#define RINFO_CTRL_FRAME 0x00040000 /* Control Frame */ -#define RINFO_VLAN 0x00080000 /* VLAN Frame */ -#define RINFO_FAIL_FILT 0x00100000 /* RX Filter Failed */ -#define RINFO_MCAST 0x00200000 /* Multicast Frame */ -#define RINFO_BCAST 0x00400000 /* Broadcast Frame */ -#define RINFO_CRC_ERR 0x00800000 /* CRC Error in Frame */ -#define RINFO_SYM_ERR 0x01000000 /* Symbol Error from PHY */ -#define RINFO_LEN_ERR 0x02000000 /* Length Error */ -#define RINFO_RANGE_ERR 0x04000000 /* Range Error (exceeded max. size) */ -#define RINFO_ALIGN_ERR 0x08000000 /* Alignment Error */ -#define RINFO_OVERRUN 0x10000000 /* Receive overrun */ -#define RINFO_NO_DESCR 0x20000000 /* No new Descriptor available */ -#define RINFO_LAST_FLAG 0x40000000 /* Last Fragment in Frame */ -#define RINFO_ERR 0x80000000 /* Error Occured (OR of all errors) */ - -#define RINFO_ERR_MASK (RINFO_FAIL_FILT | RINFO_CRC_ERR | RINFO_SYM_ERR | \ - RINFO_LEN_ERR | RINFO_ALIGN_ERR | RINFO_OVERRUN) - -/* TX Descriptor Control Word */ -#define TCTRL_SIZE 0x000007FF /* Size of data buffer in bytes */ -#define TCTRL_OVERRIDE 0x04000000 /* Override Default MAC Registers */ -#define TCTRL_HUGE 0x08000000 /* Enable Huge Frame */ -#define TCTRL_PAD 0x10000000 /* Pad short Frames to 64 bytes */ -#define TCTRL_CRC 0x20000000 /* Append a hardware CRC to Frame */ -#define TCTRL_LAST 0x40000000 /* Last Descriptor for TX Frame */ -#define TCTRL_INT 0x80000000 /* Generate TxDone Interrupt */ - -/* TX Status Information Word */ -#define TINFO_COL_CNT 0x01E00000 /* Collision Count */ -#define TINFO_DEFER 0x02000000 /* Packet Deferred (not an error) */ -#define TINFO_EXCESS_DEF 0x04000000 /* Excessive Deferral */ -#define TINFO_EXCESS_COL 0x08000000 /* Excessive Collision */ -#define TINFO_LATE_COL 0x10000000 /* Late Collision Occured */ -#define TINFO_UNDERRUN 0x20000000 /* Transmit Underrun */ -#define TINFO_NO_DESCR 0x40000000 /* No new Descriptor available */ -#define TINFO_ERR 0x80000000 /* Error Occured (OR of all errors) */ - -/* ENET Device Revision ID */ -#define OLD_EMAC_MODULE_ID 0x39022000 /* Rev. ID for first rev '-' */ - -/* DP83848C PHY Registers */ -#define PHY_REG_BMCR 0x00 /* Basic Mode Control Register */ -#define PHY_REG_BMSR 0x01 /* Basic Mode Status Register */ -#define PHY_REG_IDR1 0x02 /* PHY Identifier 1 */ -#define PHY_REG_IDR2 0x03 /* PHY Identifier 2 */ -#define PHY_REG_ANAR 0x04 /* Auto-Negotiation Advertisement */ -#define PHY_REG_ANLPAR 0x05 /* Auto-Neg. Link Partner Abitily */ -#define PHY_REG_ANER 0x06 /* Auto-Neg. Expansion Register */ -#define PHY_REG_ANNPTR 0x07 /* Auto-Neg. Next Page TX */ - -/* PHY Extended Registers */ -#define PHY_REG_STS 0x10 /* Status Register */ -#define PHY_REG_MICR 0x11 /* MII Interrupt Control Register */ -#define PHY_REG_MISR 0x12 /* MII Interrupt Status Register */ -#define PHY_REG_FCSCR 0x14 /* False Carrier Sense Counter */ -#define PHY_REG_RECR 0x15 /* Receive Error Counter */ -#define PHY_REG_PCSR 0x16 /* PCS Sublayer Config. and Status */ -#define PHY_REG_RBR 0x17 /* RMII and Bypass Register */ -#define PHY_REG_LEDCR 0x18 /* LED Direct Control Register */ -#define PHY_REG_PHYCR 0x19 /* PHY Control Register */ -#define PHY_REG_10BTSCR 0x1A /* 10Base-T Status/Control Register */ -#define PHY_REG_CDCTRL1 0x1B /* CD Test Control and BIST Extens. */ -#define PHY_REG_EDCR 0x1D /* Energy Detect Control Register */ - -#define PHY_FULLD_100M 0x2100 /* Full Duplex 100Mbit */ -#define PHY_HALFD_100M 0x2000 /* Half Duplex 100Mbit */ -#define PHY_FULLD_10M 0x0100 /* Full Duplex 10Mbit */ -#define PHY_HALFD_10M 0x0000 /* Half Duplex 10MBit */ -#define PHY_AUTO_NEG 0x3000 /* Select Auto Negotiation */ -#define PHY_AUTO_NEG_COMPLETE 0x0020 /* Auto negotiation have finished. */ - -#define DP83848C_DEF_ADR 0x0100 /* Default PHY device address */ -#define DP83848C_ID 0x20005C90 /* PHY Identifier */ - -#endif - -/*---------------------------------------------------------------------------- - * end of file - *---------------------------------------------------------------------------*/ diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/clock-arch.h b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/clock-arch.h deleted file mode 100644 index cde657b62..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/clock-arch.h +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright (c) 2006, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: clock-arch.h,v 1.2 2006/06/12 08:00:31 adam Exp $ - */ - -#ifndef __CLOCK_ARCH_H__ -#define __CLOCK_ARCH_H__ - -#include "FreeRTOS.h" - -typedef unsigned long clock_time_t; -#define CLOCK_CONF_SECOND configTICK_RATE_HZ - -#endif /* __CLOCK_ARCH_H__ */ diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/clock.h b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/clock.h deleted file mode 100644 index dae68745f..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/clock.h +++ /dev/null @@ -1,88 +0,0 @@ -/** - * \defgroup clock Clock interface - * - * The clock interface is the interface between the \ref timer "timer library" - * and the platform specific clock functionality. The clock - * interface must be implemented for each platform that uses the \ref - * timer "timer library". - * - * The clock interface does only one this: it measures time. The clock - * interface provides a macro, CLOCK_SECOND, which corresponds to one - * second of system time. - * - * \sa \ref timer "Timer library" - * - * @{ - */ - -/* - * Copyright (c) 2004, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * Author: Adam Dunkels - * - * $Id: clock.h,v 1.3 2006/06/11 21:46:39 adam Exp $ - */ -#ifndef __CLOCK_H__ -#define __CLOCK_H__ - -#include "clock-arch.h" - -/** - * Initialize the clock library. - * - * This function initializes the clock library and should be called - * from the main() function of the system. - * - */ -void clock_init(void); - -/** - * Get the current clock time. - * - * This function returns the current system clock time. - * - * \return The current clock time, measured in system ticks. - */ -clock_time_t clock_time(void); - -/** - * A second, measured in system clock time. - * - * \hideinitializer - */ -#ifdef CLOCK_CONF_SECOND -#define CLOCK_SECOND CLOCK_CONF_SECOND -#else -#define CLOCK_SECOND (clock_time_t)32 -#endif - -#endif /* __CLOCK_H__ */ - -/** @} */ diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/emac.c b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/emac.c deleted file mode 100644 index a1135026c..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/emac.c +++ /dev/null @@ -1,579 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* Originally adapted from file written by Andreas Dannenberg. Supplied with permission. */ - -/* Kernel includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "semphr.h" - -/* Hardware specific includes. */ -#include "EthDev_LPC17xx.h" - -/* Time to wait between each inspection of the link status. */ -#define emacWAIT_FOR_LINK_TO_ESTABLISH ( 500 / portTICK_PERIOD_MS ) - -/* Short delay used in several places during the initialisation process. */ -#define emacSHORT_DELAY ( 2 ) - -/* Hardware specific bit definitions. */ -#define emacLINK_ESTABLISHED ( 0x0001 ) -#define emacFULL_DUPLEX_ENABLED ( 0x0004 ) -#define emac10BASE_T_MODE ( 0x0002 ) -#define emacPINSEL2_VALUE 0x50150105 - -/* If no buffers are available, then wait this long before looking again.... */ -#define emacBUFFER_WAIT_DELAY ( 3 / portTICK_PERIOD_MS ) - -/* ...and don't look more than this many times. */ -#define emacBUFFER_WAIT_ATTEMPTS ( 30 ) - -/* Index to the Tx descriptor that is always used first for every Tx. The second -descriptor is then used to re-send in order to speed up the uIP Tx process. */ -#define emacTX_DESC_INDEX ( 0 ) - -#define PCONP_PCENET 0x40000000 -/*-----------------------------------------------------------*/ - -/* - * Configure both the Rx and Tx descriptors during the init process. - */ -static void prvInitDescriptors( void ); - -/* - * Setup the IO and peripherals required for Ethernet communication. - */ -static void prvSetupEMACHardware( void ); - -/* - * Control the auto negotiate process. - */ -static void prvConfigurePHY( void ); - -/* - * Wait for a link to be established, then setup the PHY according to the link - * parameters. - */ -static long prvSetupLinkStatus( void ); - -/* - * Search the pool of buffers to find one that is free. If a buffer is found - * mark it as in use before returning its address. - */ -static unsigned char *prvGetNextBuffer( void ); - -/* - * Return an allocated buffer to the pool of free buffers. - */ -static void prvReturnBuffer( unsigned char *pucBuffer ); - -/* - * Send lValue to the lPhyReg within the PHY. - */ -static long prvWritePHY( long lPhyReg, long lValue ); - -/* - * Read a value from ucPhyReg within the PHY. *plStatus will be set to - * pdFALSE if there is an error. - */ -static unsigned short prvReadPHY( unsigned char ucPhyReg, long *plStatus ); - -/*-----------------------------------------------------------*/ - -/* The semaphore used to wake the uIP task when data arrives. */ -extern SemaphoreHandle_t xEMACSemaphore; - -/* Each ucBufferInUse index corresponds to a position in the pool of buffers. -If the index contains a 1 then the buffer within pool is in use, if it -contains a 0 then the buffer is free. */ -static unsigned char ucBufferInUse[ ETH_NUM_BUFFERS ] = { pdFALSE }; - -/* The uip_buffer is not a fixed array, but instead gets pointed to the buffers -allocated within this file. */ -unsigned char * uip_buf; - -/* Store the length of the data being sent so the data can be sent twice. The -value will be set back to 0 once the data has been sent twice. */ -static unsigned short usSendLen = 0; - -/*-----------------------------------------------------------*/ - -long lEMACInit( void ) -{ -long lReturn = pdPASS; -unsigned long ulID1, ulID2; - - /* Reset peripherals, configure port pins and registers. */ - prvSetupEMACHardware(); - - /* Check the PHY part number is as expected. */ - ulID1 = prvReadPHY( PHY_REG_IDR1, &lReturn ); - ulID2 = prvReadPHY( PHY_REG_IDR2, &lReturn ); - if( ( (ulID1 << 16UL ) | ( ulID2 & 0xFFF0UL ) ) == DP83848C_ID ) - { - /* Set the Ethernet MAC Address registers */ - LPC_EMAC->SA0 = ( configMAC_ADDR0 << 8 ) | configMAC_ADDR1; - LPC_EMAC->SA1 = ( configMAC_ADDR2 << 8 ) | configMAC_ADDR3; - LPC_EMAC->SA2 = ( configMAC_ADDR4 << 8 ) | configMAC_ADDR5; - - /* Initialize Tx and Rx DMA Descriptors */ - prvInitDescriptors(); - - /* Receive broadcast and perfect match packets */ - LPC_EMAC->RxFilterCtrl = RFC_UCAST_EN | RFC_BCAST_EN | RFC_PERFECT_EN; - - /* Setup the PHY. */ - prvConfigurePHY(); - } - else - { - lReturn = pdFAIL; - } - - /* Check the link status. */ - if( lReturn == pdPASS ) - { - lReturn = prvSetupLinkStatus(); - } - - if( lReturn == pdPASS ) - { - /* Initialise uip_buf to ensure it points somewhere valid. */ - uip_buf = prvGetNextBuffer(); - - /* Reset all interrupts */ - LPC_EMAC->IntClear = ( INT_RX_OVERRUN | INT_RX_ERR | INT_RX_FIN | INT_RX_DONE | INT_TX_UNDERRUN | INT_TX_ERR | INT_TX_FIN | INT_TX_DONE | INT_SOFT_INT | INT_WAKEUP ); - - /* Enable receive and transmit mode of MAC Ethernet core */ - LPC_EMAC->Command |= ( CR_RX_EN | CR_TX_EN ); - LPC_EMAC->MAC1 |= MAC1_REC_EN; - } - - return lReturn; -} -/*-----------------------------------------------------------*/ - -static unsigned char *prvGetNextBuffer( void ) -{ -long x; -unsigned char *pucReturn = NULL; -unsigned long ulAttempts = 0; - - while( pucReturn == NULL ) - { - /* Look through the buffers to find one that is not in use by - anything else. */ - for( x = 0; x < ETH_NUM_BUFFERS; x++ ) - { - if( ucBufferInUse[ x ] == pdFALSE ) - { - ucBufferInUse[ x ] = pdTRUE; - pucReturn = ( unsigned char * ) ETH_BUF( x ); - break; - } - } - - /* Was a buffer found? */ - if( pucReturn == NULL ) - { - ulAttempts++; - - if( ulAttempts >= emacBUFFER_WAIT_ATTEMPTS ) - { - break; - } - - /* Wait then look again. */ - vTaskDelay( emacBUFFER_WAIT_DELAY ); - } - } - - return pucReturn; -} -/*-----------------------------------------------------------*/ - -static void prvInitDescriptors( void ) -{ -long x, lNextBuffer = 0; - - for( x = 0; x < NUM_RX_FRAG; x++ ) - { - /* Allocate the next Ethernet buffer to this descriptor. */ - RX_DESC_PACKET( x ) = ETH_BUF( lNextBuffer ); - RX_DESC_CTRL( x ) = RCTRL_INT | ( ETH_FRAG_SIZE - 1 ); - RX_STAT_INFO( x ) = 0; - RX_STAT_HASHCRC( x ) = 0; - - /* The Ethernet buffer is now in use. */ - ucBufferInUse[ lNextBuffer ] = pdTRUE; - lNextBuffer++; - } - - /* Set EMAC Receive Descriptor Registers. */ - LPC_EMAC->RxDescriptor = RX_DESC_BASE; - LPC_EMAC->RxStatus = RX_STAT_BASE; - LPC_EMAC->RxDescriptorNumber = NUM_RX_FRAG - 1; - - /* Rx Descriptors Point to 0 */ - LPC_EMAC->RxConsumeIndex = 0; - - /* A buffer is not allocated to the Tx descriptors until they are actually - used. */ - for( x = 0; x < NUM_TX_FRAG; x++ ) - { - TX_DESC_PACKET( x ) = ( unsigned long ) NULL; - TX_DESC_CTRL( x ) = 0; - TX_STAT_INFO( x ) = 0; - } - - /* Set EMAC Transmit Descriptor Registers. */ - LPC_EMAC->TxDescriptor = TX_DESC_BASE; - LPC_EMAC->TxStatus = TX_STAT_BASE; - LPC_EMAC->TxDescriptorNumber = NUM_TX_FRAG - 1; - - /* Tx Descriptors Point to 0 */ - LPC_EMAC->TxProduceIndex = 0; -} -/*-----------------------------------------------------------*/ - -static void prvSetupEMACHardware( void ) -{ -unsigned short us; -long x, lDummy; - - /* Enable P1 Ethernet Pins. */ - LPC_PINCON->PINSEL2 = emacPINSEL2_VALUE; - LPC_PINCON->PINSEL3 = ( LPC_PINCON->PINSEL3 & ~0x0000000F ) | 0x00000005; - - /* Power Up the EMAC controller. */ - LPC_SC->PCONP |= PCONP_PCENET; - vTaskDelay( emacSHORT_DELAY ); - - /* Reset all EMAC internal modules. */ - LPC_EMAC->MAC1 = MAC1_RES_TX | MAC1_RES_MCS_TX | MAC1_RES_RX | MAC1_RES_MCS_RX | MAC1_SIM_RES | MAC1_SOFT_RES; - LPC_EMAC->Command = CR_REG_RES | CR_TX_RES | CR_RX_RES | CR_PASS_RUNT_FRM; - - /* A short delay after reset. */ - vTaskDelay( emacSHORT_DELAY ); - - /* Initialize MAC control registers. */ - LPC_EMAC->MAC1 = MAC1_PASS_ALL; - LPC_EMAC->MAC2 = MAC2_CRC_EN | MAC2_PAD_EN; - LPC_EMAC->MAXF = ETH_MAX_FLEN; - LPC_EMAC->CLRT = CLRT_DEF; - LPC_EMAC->IPGR = IPGR_DEF; - - /* Enable Reduced MII interface. */ - LPC_EMAC->Command = CR_RMII | CR_PASS_RUNT_FRM; - - /* Reset Reduced MII Logic. */ - LPC_EMAC->SUPP = SUPP_RES_RMII; - vTaskDelay( emacSHORT_DELAY ); - LPC_EMAC->SUPP = 0; - - /* Put the PHY in reset mode */ - prvWritePHY( PHY_REG_BMCR, MCFG_RES_MII ); - prvWritePHY( PHY_REG_BMCR, MCFG_RES_MII ); - - /* Wait for hardware reset to end. */ - for( x = 0; x < 100; x++ ) - { - vTaskDelay( emacSHORT_DELAY * 5 ); - us = prvReadPHY( PHY_REG_BMCR, &lDummy ); - if( !( us & MCFG_RES_MII ) ) - { - /* Reset complete */ - break; - } - } -} -/*-----------------------------------------------------------*/ - -static void prvConfigurePHY( void ) -{ -unsigned short us; -long x, lDummy; - - /* Auto negotiate the configuration. */ - if( prvWritePHY( PHY_REG_BMCR, PHY_AUTO_NEG ) ) - { - vTaskDelay( emacSHORT_DELAY * 5 ); - - for( x = 0; x < 10; x++ ) - { - us = prvReadPHY( PHY_REG_BMSR, &lDummy ); - - if( us & PHY_AUTO_NEG_COMPLETE ) - { - break; - } - - vTaskDelay( emacWAIT_FOR_LINK_TO_ESTABLISH ); - } - } -} -/*-----------------------------------------------------------*/ - -static long prvSetupLinkStatus( void ) -{ -long lReturn = pdFAIL, x; -unsigned short usLinkStatus; - - /* Wait with timeout for the link to be established. */ - for( x = 0; x < 10; x++ ) - { - usLinkStatus = prvReadPHY( PHY_REG_STS, &lReturn ); - if( usLinkStatus & emacLINK_ESTABLISHED ) - { - /* Link is established. */ - lReturn = pdPASS; - break; - } - - vTaskDelay( emacWAIT_FOR_LINK_TO_ESTABLISH ); - } - - if( lReturn == pdPASS ) - { - /* Configure Full/Half Duplex mode. */ - if( usLinkStatus & emacFULL_DUPLEX_ENABLED ) - { - /* Full duplex is enabled. */ - LPC_EMAC->MAC2 |= MAC2_FULL_DUP; - LPC_EMAC->Command |= CR_FULL_DUP; - LPC_EMAC->IPGT = IPGT_FULL_DUP; - } - else - { - /* Half duplex mode. */ - LPC_EMAC->IPGT = IPGT_HALF_DUP; - } - - /* Configure 100MBit/10MBit mode. */ - if( usLinkStatus & emac10BASE_T_MODE ) - { - /* 10MBit mode. */ - LPC_EMAC->SUPP = 0; - } - else - { - /* 100MBit mode. */ - LPC_EMAC->SUPP = SUPP_SPEED; - } - } - - return lReturn; -} -/*-----------------------------------------------------------*/ - -static void prvReturnBuffer( unsigned char *pucBuffer ) -{ -unsigned long ul; - - /* Return a buffer to the pool of free buffers. */ - for( ul = 0; ul < ETH_NUM_BUFFERS; ul++ ) - { - if( ETH_BUF( ul ) == ( unsigned long ) pucBuffer ) - { - ucBufferInUse[ ul ] = pdFALSE; - break; - } - } -} -/*-----------------------------------------------------------*/ - -unsigned long ulGetEMACRxData( void ) -{ -unsigned long ulLen = 0; -long lIndex; - - if( LPC_EMAC->RxProduceIndex != LPC_EMAC->RxConsumeIndex ) - { - /* Mark the current buffer as free as uip_buf is going to be set to - the buffer that contains the received data. */ - prvReturnBuffer( uip_buf ); - - ulLen = ( RX_STAT_INFO( LPC_EMAC->RxConsumeIndex ) & RINFO_SIZE ) - 3; - uip_buf = ( unsigned char * ) RX_DESC_PACKET( LPC_EMAC->RxConsumeIndex ); - - /* Allocate a new buffer to the descriptor. */ - RX_DESC_PACKET( LPC_EMAC->RxConsumeIndex ) = ( unsigned long ) prvGetNextBuffer(); - - /* Move the consume index onto the next position, ensuring it wraps to - the beginning at the appropriate place. */ - lIndex = LPC_EMAC->RxConsumeIndex; - - lIndex++; - if( lIndex >= NUM_RX_FRAG ) - { - lIndex = 0; - } - - LPC_EMAC->RxConsumeIndex = lIndex; - } - - return ulLen; -} -/*-----------------------------------------------------------*/ - -void vSendEMACTxData( unsigned short usTxDataLen ) -{ -unsigned long ulAttempts = 0UL; - - /* Check to see if the Tx descriptor is free, indicated by its buffer being - NULL. */ - while( TX_DESC_PACKET( emacTX_DESC_INDEX ) != ( unsigned long ) NULL ) - { - /* Wait for the Tx descriptor to become available. */ - vTaskDelay( emacBUFFER_WAIT_DELAY ); - - ulAttempts++; - if( ulAttempts > emacBUFFER_WAIT_ATTEMPTS ) - { - /* Something has gone wrong as the Tx descriptor is still in use. - Clear it down manually, the data it was sending will probably be - lost. */ - prvReturnBuffer( ( unsigned char * ) TX_DESC_PACKET( emacTX_DESC_INDEX ) ); - break; - } - } - - /* Setup the Tx descriptor for transmission. Remember the length of the - data being sent so the second descriptor can be used to send it again from - within the ISR. */ - usSendLen = usTxDataLen; - TX_DESC_PACKET( emacTX_DESC_INDEX ) = ( unsigned long ) uip_buf; - TX_DESC_CTRL( emacTX_DESC_INDEX ) = ( usTxDataLen | TCTRL_LAST | TCTRL_INT ); - LPC_EMAC->TxProduceIndex = ( emacTX_DESC_INDEX + 1 ); - - /* uip_buf is being sent by the Tx descriptor. Allocate a new buffer. */ - uip_buf = prvGetNextBuffer(); -} -/*-----------------------------------------------------------*/ - -static long prvWritePHY( long lPhyReg, long lValue ) -{ -const long lMaxTime = 10; -long x; - - LPC_EMAC->MADR = DP83848C_DEF_ADR | lPhyReg; - LPC_EMAC->MWTD = lValue; - - x = 0; - for( x = 0; x < lMaxTime; x++ ) - { - if( ( LPC_EMAC->MIND & MIND_BUSY ) == 0 ) - { - /* Operation has finished. */ - break; - } - - vTaskDelay( emacSHORT_DELAY ); - } - - if( x < lMaxTime ) - { - return pdPASS; - } - else - { - return pdFAIL; - } -} -/*-----------------------------------------------------------*/ - -static unsigned short prvReadPHY( unsigned char ucPhyReg, long *plStatus ) -{ -long x; -const long lMaxTime = 10; - - LPC_EMAC->MADR = DP83848C_DEF_ADR | ucPhyReg; - LPC_EMAC->MCMD = MCMD_READ; - - for( x = 0; x < lMaxTime; x++ ) - { - /* Operation has finished. */ - if( ( LPC_EMAC->MIND & MIND_BUSY ) == 0 ) - { - break; - } - - vTaskDelay( emacSHORT_DELAY ); - } - - LPC_EMAC->MCMD = 0; - - if( x >= lMaxTime ) - { - *plStatus = pdFAIL; - } - - return( LPC_EMAC->MRDD ); -} -/*-----------------------------------------------------------*/ - -void vEMAC_ISR( void ) -{ -unsigned long ulStatus; -long lHigherPriorityTaskWoken = pdFALSE; - - ulStatus = LPC_EMAC->IntStatus; - - /* Clear the interrupt. */ - LPC_EMAC->IntClear = ulStatus; - - if( ulStatus & INT_RX_DONE ) - { - /* Ensure the uIP task is not blocked as data has arrived. */ - xSemaphoreGiveFromISR( xEMACSemaphore, &lHigherPriorityTaskWoken ); - } - - if( ulStatus & INT_TX_DONE ) - { - if( usSendLen > 0 ) - { - /* Send the data again, using the second descriptor. As there are - only two descriptors the index is set back to 0. */ - TX_DESC_PACKET( ( emacTX_DESC_INDEX + 1 ) ) = TX_DESC_PACKET( emacTX_DESC_INDEX ); - TX_DESC_CTRL( ( emacTX_DESC_INDEX + 1 ) ) = ( usSendLen | TCTRL_LAST | TCTRL_INT ); - LPC_EMAC->TxProduceIndex = ( emacTX_DESC_INDEX ); - - /* This is the second Tx so set usSendLen to 0 to indicate that the - Tx descriptors will be free again. */ - usSendLen = 0UL; - } - else - { - /* The Tx buffer is no longer required. */ - prvReturnBuffer( ( unsigned char * ) TX_DESC_PACKET( emacTX_DESC_INDEX ) ); - TX_DESC_PACKET( emacTX_DESC_INDEX ) = ( unsigned long ) NULL; - } - } - - portEND_SWITCHING_ISR( lHigherPriorityTaskWoken ); -} diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/http-strings b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/http-strings deleted file mode 100644 index 0d3c30cdd..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/http-strings +++ /dev/null @@ -1,35 +0,0 @@ -http_http "http://" -http_200 "200 " -http_301 "301 " -http_302 "302 " -http_get "GET " -http_10 "HTTP/1.0" -http_11 "HTTP/1.1" -http_content_type "content-type: " -http_texthtml "text/html" -http_location "location: " -http_host "host: " -http_crnl "\r\n" -http_index_html "/index.html" -http_404_html "/404.html" -http_referer "Referer:" -http_header_200 "HTTP/1.0 200 OK\r\nServer: uIP/1.0 http://www.sics.se/~adam/uip/\r\nConnection: close\r\n" -http_header_404 "HTTP/1.0 404 Not found\r\nServer: uIP/1.0 http://www.sics.se/~adam/uip/\r\nConnection: close\r\n" -http_content_type_plain "Content-type: text/plain\r\n\r\n" -http_content_type_html "Content-type: text/html\r\n\r\n" -http_content_type_css "Content-type: text/css\r\n\r\n" -http_content_type_text "Content-type: text/text\r\n\r\n" -http_content_type_png "Content-type: image/png\r\n\r\n" -http_content_type_gif "Content-type: image/gif\r\n\r\n" -http_content_type_jpg "Content-type: image/jpeg\r\n\r\n" -http_content_type_binary "Content-type: application/octet-stream\r\n\r\n" -http_html ".html" -http_shtml ".shtml" -http_htm ".htm" -http_css ".css" -http_png ".png" -http_gif ".gif" -http_jpg ".jpg" -http_text ".txt" -http_txt ".txt" - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/http-strings.c b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/http-strings.c deleted file mode 100644 index ef7a41c7d..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/http-strings.c +++ /dev/null @@ -1,102 +0,0 @@ -const char http_http[8] = -/* "http://" */ -{0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, }; -const char http_200[5] = -/* "200 " */ -{0x32, 0x30, 0x30, 0x20, }; -const char http_301[5] = -/* "301 " */ -{0x33, 0x30, 0x31, 0x20, }; -const char http_302[5] = -/* "302 " */ -{0x33, 0x30, 0x32, 0x20, }; -const char http_get[5] = -/* "GET " */ -{0x47, 0x45, 0x54, 0x20, }; -const char http_10[9] = -/* "HTTP/1.0" */ -{0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30, }; -const char http_11[9] = -/* "HTTP/1.1" */ -{0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x31, }; -const char http_content_type[15] = -/* "content-type: " */ -{0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, }; -const char http_texthtml[10] = -/* "text/html" */ -{0x74, 0x65, 0x78, 0x74, 0x2f, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_location[11] = -/* "location: " */ -{0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, }; -const char http_host[7] = -/* "host: " */ -{0x68, 0x6f, 0x73, 0x74, 0x3a, 0x20, }; -const char http_crnl[3] = -/* "\r\n" */ -{0xd, 0xa, }; -const char http_index_html[12] = -/* "/index.html" */ -{0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_404_html[10] = -/* "/404.html" */ -{0x2f, 0x34, 0x30, 0x34, 0x2e, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_referer[9] = -/* "Referer:" */ -{0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x72, 0x3a, }; -const char http_header_200[84] = -/* "HTTP/1.0 200 OK\r\nServer: uIP/1.0 http://www.sics.se/~adam/uip/\r\nConnection: close\r\n" */ -{0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x32, 0x30, 0x30, 0x20, 0x4f, 0x4b, 0xd, 0xa, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x3a, 0x20, 0x75, 0x49, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x73, 0x69, 0x63, 0x73, 0x2e, 0x73, 0x65, 0x2f, 0x7e, 0x61, 0x64, 0x61, 0x6d, 0x2f, 0x75, 0x69, 0x70, 0x2f, 0xd, 0xa, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0xd, 0xa, }; -const char http_header_404[91] = -/* "HTTP/1.0 404 Not found\r\nServer: uIP/1.0 http://www.sics.se/~adam/uip/\r\nConnection: close\r\n" */ -{0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x34, 0x30, 0x34, 0x20, 0x4e, 0x6f, 0x74, 0x20, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0xd, 0xa, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x3a, 0x20, 0x75, 0x49, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x73, 0x69, 0x63, 0x73, 0x2e, 0x73, 0x65, 0x2f, 0x7e, 0x61, 0x64, 0x61, 0x6d, 0x2f, 0x75, 0x69, 0x70, 0x2f, 0xd, 0xa, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0xd, 0xa, }; -const char http_content_type_plain[29] = -/* "Content-type: text/plain\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_html[28] = -/* "Content-type: text/html\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_css [27] = -/* "Content-type: text/css\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x63, 0x73, 0x73, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_text[28] = -/* "Content-type: text/text\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x74, 0x65, 0x78, 0x74, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_png [28] = -/* "Content-type: image/png\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x70, 0x6e, 0x67, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_gif [28] = -/* "Content-type: image/gif\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x67, 0x69, 0x66, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_jpg [29] = -/* "Content-type: image/jpeg\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x6a, 0x70, 0x65, 0x67, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_binary[43] = -/* "Content-type: application/octet-stream\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x6f, 0x63, 0x74, 0x65, 0x74, 0x2d, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0xd, 0xa, 0xd, 0xa, }; -const char http_html[6] = -/* ".html" */ -{0x2e, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_shtml[7] = -/* ".shtml" */ -{0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_htm[5] = -/* ".htm" */ -{0x2e, 0x68, 0x74, 0x6d, }; -const char http_css[5] = -/* ".css" */ -{0x2e, 0x63, 0x73, 0x73, }; -const char http_png[5] = -/* ".png" */ -{0x2e, 0x70, 0x6e, 0x67, }; -const char http_gif[5] = -/* ".gif" */ -{0x2e, 0x67, 0x69, 0x66, }; -const char http_jpg[5] = -/* ".jpg" */ -{0x2e, 0x6a, 0x70, 0x67, }; -const char http_text[5] = -/* ".txt" */ -{0x2e, 0x74, 0x78, 0x74, }; -const char http_txt[5] = -/* ".txt" */ -{0x2e, 0x74, 0x78, 0x74, }; diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/http-strings.h b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/http-strings.h deleted file mode 100644 index acbe7e17f..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/http-strings.h +++ /dev/null @@ -1,34 +0,0 @@ -extern const char http_http[8]; -extern const char http_200[5]; -extern const char http_301[5]; -extern const char http_302[5]; -extern const char http_get[5]; -extern const char http_10[9]; -extern const char http_11[9]; -extern const char http_content_type[15]; -extern const char http_texthtml[10]; -extern const char http_location[11]; -extern const char http_host[7]; -extern const char http_crnl[3]; -extern const char http_index_html[12]; -extern const char http_404_html[10]; -extern const char http_referer[9]; -extern const char http_header_200[84]; -extern const char http_header_404[91]; -extern const char http_content_type_plain[29]; -extern const char http_content_type_html[28]; -extern const char http_content_type_css [27]; -extern const char http_content_type_text[28]; -extern const char http_content_type_png [28]; -extern const char http_content_type_gif [28]; -extern const char http_content_type_jpg [29]; -extern const char http_content_type_binary[43]; -extern const char http_html[6]; -extern const char http_shtml[7]; -extern const char http_htm[5]; -extern const char http_css[5]; -extern const char http_png[5]; -extern const char http_gif[5]; -extern const char http_jpg[5]; -extern const char http_text[5]; -extern const char http_txt[5]; diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/httpd-cgi.c b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/httpd-cgi.c deleted file mode 100644 index 319fb1c18..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/httpd-cgi.c +++ /dev/null @@ -1,304 +0,0 @@ -/** - * \addtogroup httpd - * @{ - */ - -/** - * \file - * Web server script interface - * \author - * Adam Dunkels - * - */ - -/* - * Copyright (c) 2001-2006, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: httpd-cgi.c,v 1.2 2006/06/11 21:46:37 adam Exp $ - * - */ - -#include "uip.h" -#include "psock.h" -#include "httpd.h" -#include "httpd-cgi.h" -#include "httpd-fs.h" - -#include -#include - -HTTPD_CGI_CALL(file, "file-stats", file_stats); -HTTPD_CGI_CALL(tcp, "tcp-connections", tcp_stats); -HTTPD_CGI_CALL(net, "net-stats", net_stats); -HTTPD_CGI_CALL(rtos, "rtos-stats", rtos_stats ); -HTTPD_CGI_CALL(run, "run-time", run_time ); -HTTPD_CGI_CALL(io, "led-io", led_io ); - - -static const struct httpd_cgi_call *calls[] = { &file, &tcp, &net, &rtos, &run, &io, NULL }; - -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(nullfunction(struct httpd_state *s, char *ptr)) -{ - PSOCK_BEGIN(&s->sout); - ( void ) ptr; - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -httpd_cgifunction -httpd_cgi(char *name) -{ - const struct httpd_cgi_call **f; - - /* Find the matching name in the table, return the function. */ - for(f = calls; *f != NULL; ++f) { - if(strncmp((*f)->name, name, strlen((*f)->name)) == 0) { - return (*f)->function; - } - } - return nullfunction; -} -/*---------------------------------------------------------------------------*/ -static unsigned short -generate_file_stats(void *arg) -{ - char *f = (char *)arg; - return snprintf((char *)uip_appdata, UIP_APPDATA_SIZE, "%5u", httpd_fs_count(f)); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(file_stats(struct httpd_state *s, char *ptr)) -{ - PSOCK_BEGIN(&s->sout); - - PSOCK_GENERATOR_SEND(&s->sout, generate_file_stats, strchr(ptr, ' ') + 1); - - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -static const char closed[] = /* "CLOSED",*/ -{0x43, 0x4c, 0x4f, 0x53, 0x45, 0x44, 0}; -static const char syn_rcvd[] = /* "SYN-RCVD",*/ -{0x53, 0x59, 0x4e, 0x2d, 0x52, 0x43, 0x56, - 0x44, 0}; -static const char syn_sent[] = /* "SYN-SENT",*/ -{0x53, 0x59, 0x4e, 0x2d, 0x53, 0x45, 0x4e, - 0x54, 0}; -static const char established[] = /* "ESTABLISHED",*/ -{0x45, 0x53, 0x54, 0x41, 0x42, 0x4c, 0x49, 0x53, 0x48, - 0x45, 0x44, 0}; -static const char fin_wait_1[] = /* "FIN-WAIT-1",*/ -{0x46, 0x49, 0x4e, 0x2d, 0x57, 0x41, 0x49, - 0x54, 0x2d, 0x31, 0}; -static const char fin_wait_2[] = /* "FIN-WAIT-2",*/ -{0x46, 0x49, 0x4e, 0x2d, 0x57, 0x41, 0x49, - 0x54, 0x2d, 0x32, 0}; -static const char closing[] = /* "CLOSING",*/ -{0x43, 0x4c, 0x4f, 0x53, 0x49, - 0x4e, 0x47, 0}; -static const char time_wait[] = /* "TIME-WAIT,"*/ -{0x54, 0x49, 0x4d, 0x45, 0x2d, 0x57, 0x41, - 0x49, 0x54, 0}; -static const char last_ack[] = /* "LAST-ACK"*/ -{0x4c, 0x41, 0x53, 0x54, 0x2d, 0x41, 0x43, - 0x4b, 0}; - -static const char *states[] = { - closed, - syn_rcvd, - syn_sent, - established, - fin_wait_1, - fin_wait_2, - closing, - time_wait, - last_ack}; - - -static unsigned short -generate_tcp_stats(void *arg) -{ - struct uip_conn *conn; - struct httpd_state *s = (struct httpd_state *)arg; - - conn = &uip_conns[s->count]; - return snprintf((char *)uip_appdata, UIP_APPDATA_SIZE, - "\r\n", - htons(conn->lport), - htons(conn->ripaddr[0]) >> 8, - htons(conn->ripaddr[0]) & 0xff, - htons(conn->ripaddr[1]) >> 8, - htons(conn->ripaddr[1]) & 0xff, - htons(conn->rport), - states[conn->tcpstateflags & UIP_TS_MASK], - conn->nrtx, - conn->timer, - (uip_outstanding(conn))? '*':' ', - (uip_stopped(conn))? '!':' '); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(tcp_stats(struct httpd_state *s, char *ptr)) -{ - - PSOCK_BEGIN(&s->sout); - ( void ) ptr; - for(s->count = 0; s->count < UIP_CONNS; ++s->count) { - if((uip_conns[s->count].tcpstateflags & UIP_TS_MASK) != UIP_CLOSED) { - PSOCK_GENERATOR_SEND(&s->sout, generate_tcp_stats, s); - } - } - - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -static unsigned short -generate_net_stats(void *arg) -{ - struct httpd_state *s = (struct httpd_state *)arg; - return snprintf((char *)uip_appdata, UIP_APPDATA_SIZE, - "%5u\n", ((uip_stats_t *)&uip_stat)[s->count]); -} - -static -PT_THREAD(net_stats(struct httpd_state *s, char *ptr)) -{ - PSOCK_BEGIN(&s->sout); - - ( void ) ptr; -#if UIP_STATISTICS - - for(s->count = 0; s->count < sizeof(uip_stat) / sizeof(uip_stats_t); - ++s->count) { - PSOCK_GENERATOR_SEND(&s->sout, generate_net_stats, s); - } - -#endif /* UIP_STATISTICS */ - - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ - -extern void vTaskList( char *pcWriteBuffer ); -extern char *pcGetTaskStatusMessage( void ); -static char cCountBuf[ 128 ]; -long lRefreshCount = 0; -static unsigned short -generate_rtos_stats(void *arg) -{ - ( void ) arg; - lRefreshCount++; - sprintf( cCountBuf, "


Refresh count = %d


%s", (int)lRefreshCount, pcGetTaskStatusMessage() ); - vTaskList( ( char * ) uip_appdata ); - strcat( uip_appdata, cCountBuf ); - - return strlen( uip_appdata ); -} -/*---------------------------------------------------------------------------*/ - - -static -PT_THREAD(rtos_stats(struct httpd_state *s, char *ptr)) -{ - PSOCK_BEGIN(&s->sout); - ( void ) ptr; - PSOCK_GENERATOR_SEND(&s->sout, generate_rtos_stats, NULL); - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ - -char *pcStatus; -unsigned long ulString; - -static unsigned short generate_io_state( void *arg ) -{ -extern long uxParTextGetLED( unsigned long ulLED ); -const unsigned long ulLEDNo = 3; - - ( void ) arg; - - if( uxParTextGetLED( ulLEDNo ) == 0 ) - { - pcStatus = ""; - } - else - { - pcStatus = "checked"; - } - - sprintf( uip_appdata, - "LED

", pcStatus ); - - return strlen( uip_appdata ); -} -/*---------------------------------------------------------------------------*/ - -extern void vTaskGetRunTimeStats( char *pcWriteBuffer ); -static unsigned short -generate_runtime_stats(void *arg) -{ - ( void ) arg; - lRefreshCount++; - sprintf( cCountBuf, "


Refresh count = %d", (int)lRefreshCount ); - vTaskGetRunTimeStats( ( char * ) uip_appdata ); - strcat( uip_appdata, cCountBuf ); - - return strlen( uip_appdata ); -} -/*---------------------------------------------------------------------------*/ - - -static -PT_THREAD(run_time(struct httpd_state *s, char *ptr)) -{ - PSOCK_BEGIN(&s->sout); - ( void ) ptr; - PSOCK_GENERATOR_SEND(&s->sout, generate_runtime_stats, NULL); - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ - - -static PT_THREAD(led_io(struct httpd_state *s, char *ptr)) -{ - PSOCK_BEGIN(&s->sout); - ( void ) ptr; - PSOCK_GENERATOR_SEND(&s->sout, generate_io_state, NULL); - PSOCK_END(&s->sout); -} - -/** @} */ - - - - - - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/httpd-cgi.h b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/httpd-cgi.h deleted file mode 100644 index 7ae928321..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/httpd-cgi.h +++ /dev/null @@ -1,84 +0,0 @@ -/** - * \addtogroup httpd - * @{ - */ - -/** - * \file - * Web server script interface header file - * \author - * Adam Dunkels - * - */ - - - -/* - * Copyright (c) 2001, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: httpd-cgi.h,v 1.2 2006/06/11 21:46:38 adam Exp $ - * - */ - -#ifndef __HTTPD_CGI_H__ -#define __HTTPD_CGI_H__ - -#include "psock.h" -#include "httpd.h" - -typedef PT_THREAD((* httpd_cgifunction)(struct httpd_state *, char *)); - -httpd_cgifunction httpd_cgi(char *name); - -struct httpd_cgi_call { - const char *name; - const httpd_cgifunction function; -}; - -/** - * \brief HTTPD CGI function declaration - * \param name The C variable name of the function - * \param str The string name of the function, used in the script file - * \param function A pointer to the function that implements it - * - * This macro is used for declaring a HTTPD CGI - * function. This function is then added to the list of - * HTTPD CGI functions with the httpd_cgi_add() function. - * - * \hideinitializer - */ -#define HTTPD_CGI_CALL(name, str, function) \ -static PT_THREAD(function(struct httpd_state *, char *)); \ -static const struct httpd_cgi_call name = {str, function} - -void httpd_cgi_init(void); -#endif /* __HTTPD_CGI_H__ */ - -/** @} */ diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/httpd-fs.c b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/httpd-fs.c deleted file mode 100644 index dc4aef011..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/httpd-fs.c +++ /dev/null @@ -1,132 +0,0 @@ -/* - * Copyright (c) 2001, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - * $Id: httpd-fs.c,v 1.1 2006/06/07 09:13:08 adam Exp $ - */ - -#include "httpd.h" -#include "httpd-fs.h" -#include "httpd-fsdata.h" - -#ifndef NULL -#define NULL 0 -#endif /* NULL */ - -#include "httpd-fsdata.c" - -#if HTTPD_FS_STATISTICS -static u16_t count[HTTPD_FS_NUMFILES]; -#endif /* HTTPD_FS_STATISTICS */ - -/*-----------------------------------------------------------------------------------*/ -static u8_t -httpd_fs_strcmp(const char *str1, const char *str2) -{ - u8_t i; - i = 0; - loop: - - if(str2[i] == 0 || - str1[i] == '\r' || - str1[i] == '\n') { - return 0; - } - - if(str1[i] != str2[i]) { - return 1; - } - - - ++i; - goto loop; -} -/*-----------------------------------------------------------------------------------*/ -int -httpd_fs_open(const char *name, struct httpd_fs_file *file) -{ -#if HTTPD_FS_STATISTICS - u16_t i = 0; -#endif /* HTTPD_FS_STATISTICS */ - struct httpd_fsdata_file_noconst *f; - - for(f = (struct httpd_fsdata_file_noconst *)HTTPD_FS_ROOT; - f != NULL; - f = (struct httpd_fsdata_file_noconst *)f->next) { - - if(httpd_fs_strcmp(name, f->name) == 0) { - file->data = f->data; - file->len = f->len; -#if HTTPD_FS_STATISTICS - ++count[i]; -#endif /* HTTPD_FS_STATISTICS */ - return 1; - } -#if HTTPD_FS_STATISTICS - ++i; -#endif /* HTTPD_FS_STATISTICS */ - - } - return 0; -} -/*-----------------------------------------------------------------------------------*/ -void -httpd_fs_init(void) -{ -#if HTTPD_FS_STATISTICS - u16_t i; - for(i = 0; i < HTTPD_FS_NUMFILES; i++) { - count[i] = 0; - } -#endif /* HTTPD_FS_STATISTICS */ -} -/*-----------------------------------------------------------------------------------*/ -#if HTTPD_FS_STATISTICS -u16_t httpd_fs_count -(char *name) -{ - struct httpd_fsdata_file_noconst *f; - u16_t i; - - i = 0; - for(f = (struct httpd_fsdata_file_noconst *)HTTPD_FS_ROOT; - f != NULL; - f = (struct httpd_fsdata_file_noconst *)f->next) { - - if(httpd_fs_strcmp(name, f->name) == 0) { - return count[i]; - } - ++i; - } - return 0; -} -#endif /* HTTPD_FS_STATISTICS */ -/*-----------------------------------------------------------------------------------*/ diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/httpd-fs.h b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/httpd-fs.h deleted file mode 100644 index b594eea56..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/httpd-fs.h +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright (c) 2001, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - * $Id: httpd-fs.h,v 1.1 2006/06/07 09:13:08 adam Exp $ - */ -#ifndef __HTTPD_FS_H__ -#define __HTTPD_FS_H__ - -#define HTTPD_FS_STATISTICS 1 - -struct httpd_fs_file { - char *data; - int len; -}; - -/* file must be allocated by caller and will be filled in - by the function. */ -int httpd_fs_open(const char *name, struct httpd_fs_file *file); - -#ifdef HTTPD_FS_STATISTICS -#if HTTPD_FS_STATISTICS == 1 -u16_t httpd_fs_count(char *name); -#endif /* HTTPD_FS_STATISTICS */ -#endif /* HTTPD_FS_STATISTICS */ - -void httpd_fs_init(void); - -#endif /* __HTTPD_FS_H__ */ diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/httpd-fs/404.html b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/httpd-fs/404.html deleted file mode 100644 index 43e7f4cad..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/httpd-fs/404.html +++ /dev/null @@ -1,8 +0,0 @@ - - -

-

404 - file not found

-

Go here instead.

-
- - \ No newline at end of file diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/httpd-fs/index.html b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/httpd-fs/index.html deleted file mode 100644 index 4937dc69a..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/httpd-fs/index.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Loading index.shtml. Click here if not automatically redirected. - - - - - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/httpd-fs/index.shtml b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/httpd-fs/index.shtml deleted file mode 100644 index 29d242c05..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/httpd-fs/index.shtml +++ /dev/null @@ -1,20 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS.org Homepage | IO -

-


-

-

Task statistics

-Page will refresh every 2 seconds.

-

Task          State  Priority  Stack	#
************************************************
-%! rtos-stats -
-
- - - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/httpd-fs/io.shtml b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/httpd-fs/io.shtml deleted file mode 100644 index fd0697d2a..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/httpd-fs/io.shtml +++ /dev/null @@ -1,28 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS.org Homepage | IO -

-


-LED and LCD IO
- -

- -Use the check box to turn on or off the LED, enter text to display on the OLED display, then click "Update IO". - - -

-
-%! led-io -

- - -

- - - - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/httpd-fs/runtime.shtml b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/httpd-fs/runtime.shtml deleted file mode 100644 index 67cae4657..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/httpd-fs/runtime.shtml +++ /dev/null @@ -1,20 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS.org Homepage | IO -

-


-

-

Run-time statistics

-Page will refresh every 2 seconds.

-

Task            Abs Time      % Time
****************************************
-%! run-time -
-
- - - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/httpd-fs/stats.shtml b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/httpd-fs/stats.shtml deleted file mode 100644 index d95a69340..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/httpd-fs/stats.shtml +++ /dev/null @@ -1,41 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS.org Homepage | IO -

-


-

-

Network statistics

-
LocalRemoteStateRetransmissionsTimerFlags
%d%u.%u.%u.%u:%u%s%u%u%c %c
-
-IP           Packets dropped
-             Packets received
-             Packets sent
-IP errors    IP version/header length
-             IP length, high byte
-             IP length, low byte
-             IP fragments
-             Header checksum
-             Wrong protocol
-ICMP	     Packets dropped
-             Packets received
-             Packets sent
-             Type errors
-TCP          Packets dropped
-             Packets received
-             Packets sent
-             Checksum errors
-             Data packets without ACKs
-             Resets
-             Retransmissions
-	     No connection avaliable
-	     Connection attempts to closed ports
-
%! net-stats
-
- - - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/httpd-fs/tcp.shtml b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/httpd-fs/tcp.shtml deleted file mode 100644 index 41053679d..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/httpd-fs/tcp.shtml +++ /dev/null @@ -1,21 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS.org Homepage | IO -

-


-
-

Network connections

-

- - -%! tcp-connections - - - - - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/httpd-fsdata.c b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/httpd-fsdata.c deleted file mode 100644 index c8b2a8026..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/httpd-fsdata.c +++ /dev/null @@ -1,557 +0,0 @@ -static const char data_404_html[] = { - /* /404.html */ - 0x2f, 0x34, 0x30, 0x34, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, 0x20, 0x20, 0x3c, - 0x62, 0x6f, 0x64, 0x79, 0x20, 0x62, 0x67, 0x63, 0x6f, 0x6c, - 0x6f, 0x72, 0x3d, 0x22, 0x77, 0x68, 0x69, 0x74, 0x65, 0x22, - 0x3e, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x63, 0x65, 0x6e, - 0x74, 0x65, 0x72, 0x3e, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x3c, 0x68, 0x31, 0x3e, 0x34, 0x30, 0x34, 0x20, 0x2d, - 0x20, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x6e, 0x6f, 0x74, 0x20, - 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x3c, 0x2f, 0x68, 0x31, 0x3e, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x68, 0x33, - 0x3e, 0x47, 0x6f, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, - 0x66, 0x3d, 0x22, 0x2f, 0x22, 0x3e, 0x68, 0x65, 0x72, 0x65, - 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x65, - 0x61, 0x64, 0x2e, 0x3c, 0x2f, 0x68, 0x33, 0x3e, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x3c, 0x2f, 0x63, 0x65, 0x6e, 0x74, 0x65, - 0x72, 0x3e, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x62, 0x6f, 0x64, - 0x79, 0x3e, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, -0}; - -static const char data_index_html[] = { - /* /index.html */ - 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, - 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, - 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, 0x57, 0x45, 0x42, - 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x64, 0x65, - 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x42, 0x4f, 0x44, 0x59, 0x20, 0x6f, - 0x6e, 0x4c, 0x6f, 0x61, 0x64, 0x3d, 0x22, 0x77, 0x69, 0x6e, - 0x64, 0x6f, 0x77, 0x2e, 0x73, 0x65, 0x74, 0x54, 0x69, 0x6d, - 0x65, 0x6f, 0x75, 0x74, 0x28, 0x26, 0x71, 0x75, 0x6f, 0x74, - 0x3b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x27, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x27, 0x26, 0x71, - 0x75, 0x6f, 0x74, 0x3b, 0x2c, 0x31, 0x30, 0x30, 0x29, 0x22, - 0x3e, 0xa, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, - 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, - 0x3e, 0xa, 0x4c, 0x6f, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x20, - 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, - 0x6c, 0x2e, 0x20, 0x20, 0x43, 0x6c, 0x69, 0x63, 0x6b, 0x20, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x68, 0x65, 0x72, 0x65, 0x3c, 0x2f, 0x61, 0x3e, - 0x20, 0x69, 0x66, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x61, 0x75, - 0x74, 0x6f, 0x6d, 0x61, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x6c, - 0x79, 0x20, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, - 0x65, 0x64, 0x2e, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, - 0x3e, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xa, - 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xa, 0x3c, 0x2f, - 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, 0xa, 0}; - -static const char data_index_shtml[] = { - /* /index.shtml */ - 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, - 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, - 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, 0x57, 0x45, 0x42, - 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x64, 0x65, - 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x42, 0x4f, 0x44, 0x59, 0x20, 0x6f, - 0x6e, 0x4c, 0x6f, 0x61, 0x64, 0x3d, 0x22, 0x77, 0x69, 0x6e, - 0x64, 0x6f, 0x77, 0x2e, 0x73, 0x65, 0x74, 0x54, 0x69, 0x6d, - 0x65, 0x6f, 0x75, 0x74, 0x28, 0x26, 0x71, 0x75, 0x6f, 0x74, - 0x3b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x27, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x27, 0x26, 0x71, - 0x75, 0x6f, 0x74, 0x3b, 0x2c, 0x32, 0x30, 0x30, 0x30, 0x29, - 0x22, 0x3e, 0xa, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, - 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, - 0x22, 0x3e, 0xa, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, - 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, - 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, - 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, - 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x72, 0x75, - 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, - 0x6c, 0x22, 0x3e, 0x52, 0x75, 0x6e, 0x20, 0x54, 0x69, 0x6d, - 0x65, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, - 0x6c, 0x22, 0x3e, 0x54, 0x43, 0x50, 0x20, 0x53, 0x74, 0x61, - 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, 0x63, 0x70, 0x2e, 0x73, - 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, - 0x2e, 0x66, 0x72, 0x65, 0x65, 0x72, 0x74, 0x6f, 0x73, 0x2e, - 0x6f, 0x72, 0x67, 0x2f, 0x22, 0x3e, 0x46, 0x72, 0x65, 0x65, - 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x48, - 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0xa, 0x3c, 0x62, 0x72, - 0x3e, 0x3c, 0x70, 0x3e, 0xa, 0x3c, 0x68, 0x72, 0x3e, 0xa, - 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xa, 0x3c, 0x68, - 0x32, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x73, 0x74, 0x61, - 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x3c, 0x2f, 0x68, - 0x32, 0x3e, 0xa, 0x50, 0x61, 0x67, 0x65, 0x20, 0x77, 0x69, - 0x6c, 0x6c, 0x20, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, - 0x20, 0x65, 0x76, 0x65, 0x72, 0x79, 0x20, 0x32, 0x20, 0x73, - 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x2e, 0x3c, 0x70, 0x3e, - 0xa, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, - 0x65, 0x3d, 0x22, 0x63, 0x6f, 0x75, 0x72, 0x69, 0x65, 0x72, - 0x22, 0x3e, 0x3c, 0x70, 0x72, 0x65, 0x3e, 0x54, 0x61, 0x73, - 0x6b, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x53, 0x74, 0x61, 0x74, 0x65, 0x20, 0x20, 0x50, 0x72, - 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x20, 0x20, 0x53, 0x74, - 0x61, 0x63, 0x6b, 0x9, 0x23, 0x3c, 0x62, 0x72, 0x3e, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x3c, 0x62, 0x72, - 0x3e, 0xa, 0x25, 0x21, 0x20, 0x72, 0x74, 0x6f, 0x73, 0x2d, - 0x73, 0x74, 0x61, 0x74, 0x73, 0xa, 0x3c, 0x2f, 0x70, 0x72, - 0x65, 0x3e, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xa, - 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xa, 0x3c, 0x2f, - 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xa, 0x3c, 0x2f, 0x68, 0x74, - 0x6d, 0x6c, 0x3e, 0xa, 0xa, 0}; - -static const char data_io_shtml[] = { - /* /io.shtml */ - 0x2f, 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, - 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, - 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, 0x57, 0x45, 0x42, - 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x64, 0x65, - 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x42, 0x4f, 0x44, 0x59, 0x3e, 0xa, - 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, - 0x3d, 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xa, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x53, 0x74, 0x61, - 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x72, 0x75, 0x6e, 0x74, 0x69, - 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x52, 0x75, 0x6e, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, - 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, - 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x54, 0x43, 0x50, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, - 0x6c, 0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, - 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, - 0x65, 0x65, 0x72, 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, - 0x2f, 0x22, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x48, 0x6f, 0x6d, 0x65, - 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6f, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x49, 0x4f, 0x3c, - 0x2f, 0x61, 0x3e, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, - 0x3e, 0xa, 0x3c, 0x68, 0x72, 0x3e, 0xa, 0x3c, 0x62, 0x3e, - 0x4c, 0x45, 0x44, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x4c, 0x43, - 0x44, 0x20, 0x49, 0x4f, 0x3c, 0x2f, 0x62, 0x3e, 0x3c, 0x62, - 0x72, 0x3e, 0xa, 0xa, 0x3c, 0x70, 0x3e, 0xa, 0xa, 0x55, - 0x73, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x68, 0x65, - 0x63, 0x6b, 0x20, 0x62, 0x6f, 0x78, 0x20, 0x74, 0x6f, 0x20, - 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6f, 0x6e, 0x20, 0x6f, 0x72, - 0x20, 0x6f, 0x66, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x4c, - 0x45, 0x44, 0x2c, 0x20, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x20, - 0x74, 0x65, 0x78, 0x74, 0x20, 0x74, 0x6f, 0x20, 0x64, 0x69, - 0x73, 0x70, 0x6c, 0x61, 0x79, 0x20, 0x6f, 0x6e, 0x20, 0x74, - 0x68, 0x65, 0x20, 0x4f, 0x4c, 0x45, 0x44, 0x20, 0x64, 0x69, - 0x73, 0x70, 0x6c, 0x61, 0x79, 0x2c, 0x20, 0x74, 0x68, 0x65, - 0x6e, 0x20, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x20, 0x22, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x49, 0x4f, 0x22, 0x2e, - 0xa, 0xa, 0xa, 0x3c, 0x70, 0x3e, 0xa, 0x3c, 0x66, 0x6f, - 0x72, 0x6d, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x22, 0x61, - 0x46, 0x6f, 0x72, 0x6d, 0x22, 0x20, 0x61, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x3d, 0x22, 0x2f, 0x69, 0x6f, 0x2e, 0x73, 0x68, - 0x74, 0x6d, 0x6c, 0x22, 0x20, 0x6d, 0x65, 0x74, 0x68, 0x6f, - 0x64, 0x3d, 0x22, 0x67, 0x65, 0x74, 0x22, 0x3e, 0xa, 0x25, - 0x21, 0x20, 0x6c, 0x65, 0x64, 0x2d, 0x69, 0x6f, 0xa, 0x3c, - 0x70, 0x3e, 0xa, 0x3c, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x20, - 0x74, 0x79, 0x70, 0x65, 0x3d, 0x22, 0x73, 0x75, 0x62, 0x6d, - 0x69, 0x74, 0x22, 0x20, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3d, - 0x22, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x49, 0x4f, - 0x22, 0x3e, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x72, 0x6d, 0x3e, - 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xa, 0x3c, - 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xa, 0x3c, 0x2f, 0x62, - 0x6f, 0x64, 0x79, 0x3e, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, - 0x6c, 0x3e, 0xa, 0xa, 0}; - -static const char data_runtime_shtml[] = { - /* /runtime.shtml */ - 0x2f, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, - 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, - 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, 0x57, 0x45, 0x42, - 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x64, 0x65, - 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x42, 0x4f, 0x44, 0x59, 0x20, 0x6f, - 0x6e, 0x4c, 0x6f, 0x61, 0x64, 0x3d, 0x22, 0x77, 0x69, 0x6e, - 0x64, 0x6f, 0x77, 0x2e, 0x73, 0x65, 0x74, 0x54, 0x69, 0x6d, - 0x65, 0x6f, 0x75, 0x74, 0x28, 0x26, 0x71, 0x75, 0x6f, 0x74, - 0x3b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x27, 0x72, 0x75, 0x6e, 0x74, - 0x69, 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x27, - 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x2c, 0x32, 0x30, 0x30, - 0x30, 0x29, 0x22, 0x3e, 0xa, 0x3c, 0x66, 0x6f, 0x6e, 0x74, - 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, 0x69, - 0x61, 0x6c, 0x22, 0x3e, 0xa, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x61, 0x73, - 0x6b, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x73, 0x68, - 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x52, 0x75, 0x6e, 0x20, 0x54, - 0x69, 0x6d, 0x65, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, - 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x43, 0x50, 0x20, 0x53, - 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, 0x63, 0x70, - 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x43, 0x6f, - 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, - 0x77, 0x77, 0x2e, 0x66, 0x72, 0x65, 0x65, 0x72, 0x74, 0x6f, - 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x22, 0x3e, 0x46, 0x72, - 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, 0x72, 0x67, - 0x20, 0x48, 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0xa, 0x3c, - 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xa, 0x3c, 0x68, 0x72, - 0x3e, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xa, - 0x3c, 0x68, 0x32, 0x3e, 0x52, 0x75, 0x6e, 0x2d, 0x74, 0x69, - 0x6d, 0x65, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, - 0x69, 0x63, 0x73, 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0xa, 0x50, - 0x61, 0x67, 0x65, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x72, - 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x20, 0x65, 0x76, 0x65, - 0x72, 0x79, 0x20, 0x32, 0x20, 0x73, 0x65, 0x63, 0x6f, 0x6e, - 0x64, 0x73, 0x2e, 0x3c, 0x70, 0x3e, 0xa, 0x3c, 0x66, 0x6f, - 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x63, - 0x6f, 0x75, 0x72, 0x69, 0x65, 0x72, 0x22, 0x3e, 0x3c, 0x70, - 0x72, 0x65, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x41, - 0x62, 0x73, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x25, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x3c, - 0x62, 0x72, 0x3e, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x3c, 0x62, 0x72, 0x3e, 0xa, 0x25, 0x21, - 0x20, 0x72, 0x75, 0x6e, 0x2d, 0x74, 0x69, 0x6d, 0x65, 0xa, - 0x3c, 0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, 0x6f, - 0x6e, 0x74, 0x3e, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, - 0x3e, 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xa, - 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, 0xa, 0}; - -static const char data_stats_shtml[] = { - /* /stats.shtml */ - 0x2f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, - 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, - 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, 0x57, 0x45, 0x42, - 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x64, 0x65, - 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x42, 0x4f, 0x44, 0x59, 0x3e, 0xa, - 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, - 0x3d, 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xa, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x53, 0x74, 0x61, - 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x72, 0x75, 0x6e, 0x74, 0x69, - 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x52, 0x75, 0x6e, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, - 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, - 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x54, 0x43, 0x50, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, - 0x6c, 0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, - 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, - 0x65, 0x65, 0x72, 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, - 0x2f, 0x22, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x48, 0x6f, 0x6d, 0x65, - 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6f, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x49, 0x4f, 0x3c, - 0x2f, 0x61, 0x3e, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, - 0x3e, 0xa, 0x3c, 0x68, 0x72, 0x3e, 0xa, 0x3c, 0x62, 0x72, - 0x3e, 0x3c, 0x70, 0x3e, 0xa, 0x3c, 0x68, 0x32, 0x3e, 0x4e, - 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x20, 0x73, 0x74, 0x61, - 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x3c, 0x2f, 0x68, - 0x32, 0x3e, 0xa, 0x3c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, - 0x77, 0x69, 0x64, 0x74, 0x68, 0x3d, 0x22, 0x33, 0x30, 0x30, - 0x22, 0x20, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x3d, 0x22, - 0x30, 0x22, 0x3e, 0xa, 0x3c, 0x74, 0x72, 0x3e, 0x3c, 0x74, - 0x64, 0x20, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x3d, 0x22, 0x6c, - 0x65, 0x66, 0x74, 0x22, 0x3e, 0x3c, 0x66, 0x6f, 0x6e, 0x74, - 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x63, 0x6f, 0x75, - 0x72, 0x69, 0x65, 0x72, 0x22, 0x3e, 0x3c, 0x70, 0x72, 0x65, - 0x3e, 0xa, 0x49, 0x50, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, - 0x74, 0x73, 0x20, 0x64, 0x72, 0x6f, 0x70, 0x70, 0x65, 0x64, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x73, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, 0xa, 0x49, 0x50, 0x20, - 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x20, 0x20, 0x20, 0x20, - 0x49, 0x50, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x2f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, 0x6c, 0x65, - 0x6e, 0x67, 0x74, 0x68, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x49, 0x50, - 0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x2c, 0x20, 0x68, - 0x69, 0x67, 0x68, 0x20, 0x62, 0x79, 0x74, 0x65, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x49, 0x50, 0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, - 0x68, 0x2c, 0x20, 0x6c, 0x6f, 0x77, 0x20, 0x62, 0x79, 0x74, - 0x65, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x49, 0x50, 0x20, 0x66, 0x72, - 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, 0x63, 0x68, - 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0xa, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x57, 0x72, 0x6f, 0x6e, 0x67, 0x20, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x63, 0x6f, 0x6c, 0xa, 0x49, 0x43, 0x4d, 0x50, 0x9, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, - 0x74, 0x73, 0x20, 0x64, 0x72, 0x6f, 0x70, 0x70, 0x65, 0x64, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x73, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, 0xa, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x54, 0x79, 0x70, 0x65, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, - 0x73, 0xa, 0x54, 0x43, 0x50, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, - 0x74, 0x73, 0x20, 0x64, 0x72, 0x6f, 0x70, 0x70, 0x65, 0x64, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x73, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, 0xa, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x20, 0x65, - 0x72, 0x72, 0x6f, 0x72, 0x73, 0xa, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x44, - 0x61, 0x74, 0x61, 0x20, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x73, 0x20, 0x77, 0x69, 0x74, 0x68, 0x6f, 0x75, 0x74, 0x20, - 0x41, 0x43, 0x4b, 0x73, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x52, 0x65, - 0x73, 0x65, 0x74, 0x73, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x52, 0x65, - 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x73, 0x73, 0x69, - 0x6f, 0x6e, 0x73, 0xa, 0x9, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x4e, 0x6f, 0x20, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x20, 0x61, 0x76, 0x61, 0x6c, 0x69, 0x61, - 0x62, 0x6c, 0x65, 0xa, 0x9, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x20, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x73, 0x20, - 0x74, 0x6f, 0x20, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x64, 0x20, - 0x70, 0x6f, 0x72, 0x74, 0x73, 0xa, 0x3c, 0x2f, 0x70, 0x72, - 0x65, 0x3e, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0x3c, - 0x2f, 0x74, 0x64, 0x3e, 0x3c, 0x74, 0x64, 0x3e, 0x3c, 0x70, - 0x72, 0x65, 0x3e, 0x25, 0x21, 0x20, 0x6e, 0x65, 0x74, 0x2d, - 0x73, 0x74, 0x61, 0x74, 0x73, 0xa, 0x3c, 0x2f, 0x70, 0x72, - 0x65, 0x3e, 0x3c, 0x2f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x3e, - 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xa, 0x3c, - 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xa, 0x3c, 0x2f, 0x68, - 0x74, 0x6d, 0x6c, 0x3e, 0xa, 0}; - -static const char data_tcp_shtml[] = { - /* /tcp.shtml */ - 0x2f, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, - 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, - 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, 0x57, 0x45, 0x42, - 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x64, 0x65, - 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x42, 0x4f, 0x44, 0x59, 0x3e, 0xa, - 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, - 0x3d, 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xa, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x53, 0x74, 0x61, - 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x72, 0x75, 0x6e, 0x74, 0x69, - 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x52, 0x75, 0x6e, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, - 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, - 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x54, 0x43, 0x50, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, - 0x6c, 0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, - 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, - 0x65, 0x65, 0x72, 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, - 0x2f, 0x22, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x48, 0x6f, 0x6d, 0x65, - 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6f, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x49, 0x4f, 0x3c, - 0x2f, 0x61, 0x3e, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, - 0x3e, 0xa, 0x3c, 0x68, 0x72, 0x3e, 0xa, 0x3c, 0x62, 0x72, - 0x3e, 0xa, 0x3c, 0x68, 0x32, 0x3e, 0x4e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x20, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x68, 0x32, 0x3e, - 0xa, 0x3c, 0x70, 0x3e, 0xa, 0x3c, 0x74, 0x61, 0x62, 0x6c, - 0x65, 0x3e, 0xa, 0x3c, 0x74, 0x72, 0x3e, 0x3c, 0x74, 0x68, - 0x3e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x3c, 0x2f, 0x74, 0x68, - 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x52, 0x65, 0x6d, 0x6f, 0x74, - 0x65, 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, - 0x53, 0x74, 0x61, 0x74, 0x65, 0x3c, 0x2f, 0x74, 0x68, 0x3e, - 0x3c, 0x74, 0x68, 0x3e, 0x52, 0x65, 0x74, 0x72, 0x61, 0x6e, - 0x73, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x3c, - 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x54, 0x69, - 0x6d, 0x65, 0x72, 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, - 0x68, 0x3e, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x3c, 0x2f, 0x74, - 0x68, 0x3e, 0x3c, 0x2f, 0x74, 0x72, 0x3e, 0xa, 0x25, 0x21, - 0x20, 0x74, 0x63, 0x70, 0x2d, 0x63, 0x6f, 0x6e, 0x6e, 0x65, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0xa, 0x3c, 0x2f, 0x70, - 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, - 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xa, 0x3c, - 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xa, 0x3c, 0x2f, 0x68, - 0x74, 0x6d, 0x6c, 0x3e, 0xa, 0xa, 0}; - -const struct httpd_fsdata_file file_404_html[] = {{NULL, data_404_html, data_404_html + 10, sizeof(data_404_html) - 10, 0}}; - -const struct httpd_fsdata_file file_index_html[] = {{file_404_html, data_index_html, data_index_html + 12, sizeof(data_index_html) - 12, 0}}; - -const struct httpd_fsdata_file file_index_shtml[] = {{file_index_html, data_index_shtml, data_index_shtml + 13, sizeof(data_index_shtml) - 13, 0}}; - -const struct httpd_fsdata_file file_io_shtml[] = {{file_index_shtml, data_io_shtml, data_io_shtml + 10, sizeof(data_io_shtml) - 10, 0}}; - -const struct httpd_fsdata_file file_runtime_shtml[] = {{file_io_shtml, data_runtime_shtml, data_runtime_shtml + 15, sizeof(data_runtime_shtml) - 15, 0}}; - -const struct httpd_fsdata_file file_stats_shtml[] = {{file_runtime_shtml, data_stats_shtml, data_stats_shtml + 13, sizeof(data_stats_shtml) - 13, 0}}; - -const struct httpd_fsdata_file file_tcp_shtml[] = {{file_stats_shtml, data_tcp_shtml, data_tcp_shtml + 11, sizeof(data_tcp_shtml) - 11, 0}}; - -#define HTTPD_FS_ROOT file_tcp_shtml - -#define HTTPD_FS_NUMFILES 7 diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/httpd-fsdata.h b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/httpd-fsdata.h deleted file mode 100644 index 52d35c265..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/httpd-fsdata.h +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright (c) 2001, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - * $Id: httpd-fsdata.h,v 1.1 2006/06/07 09:13:08 adam Exp $ - */ -#ifndef __HTTPD_FSDATA_H__ -#define __HTTPD_FSDATA_H__ - -#include "uip.h" - -struct httpd_fsdata_file { - const struct httpd_fsdata_file *next; - const char *name; - const char *data; - const int len; -#ifdef HTTPD_FS_STATISTICS -#if HTTPD_FS_STATISTICS == 1 - u16_t count; -#endif /* HTTPD_FS_STATISTICS */ -#endif /* HTTPD_FS_STATISTICS */ -}; - -struct httpd_fsdata_file_noconst { - struct httpd_fsdata_file *next; - char *name; - char *data; - int len; -#ifdef HTTPD_FS_STATISTICS -#if HTTPD_FS_STATISTICS == 1 - u16_t count; -#endif /* HTTPD_FS_STATISTICS */ -#endif /* HTTPD_FS_STATISTICS */ -}; - -#endif /* __HTTPD_FSDATA_H__ */ diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/httpd.c b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/httpd.c deleted file mode 100644 index c416cc1c8..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/httpd.c +++ /dev/null @@ -1,346 +0,0 @@ -/** - * \addtogroup apps - * @{ - */ - -/** - * \defgroup httpd Web server - * @{ - * The uIP web server is a very simplistic implementation of an HTTP - * server. It can serve web pages and files from a read-only ROM - * filesystem, and provides a very small scripting language. - - */ - -/** - * \file - * Web server - * \author - * Adam Dunkels - */ - - -/* - * Copyright (c) 2004, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * Author: Adam Dunkels - * - * $Id: httpd.c,v 1.2 2006/06/11 21:46:38 adam Exp $ - */ - -#include "uip.h" -#include "httpd.h" -#include "httpd-fs.h" -#include "httpd-cgi.h" -#include "http-strings.h" - -#include - -#define STATE_WAITING 0 -#define STATE_OUTPUT 1 - -#define ISO_nl 0x0a -#define ISO_space 0x20 -#define ISO_bang 0x21 -#define ISO_percent 0x25 -#define ISO_period 0x2e -#define ISO_slash 0x2f -#define ISO_colon 0x3a - - -/*---------------------------------------------------------------------------*/ -static unsigned short -generate_part_of_file(void *state) -{ - struct httpd_state *s = (struct httpd_state *)state; - - if(s->file.len > uip_mss()) { - s->len = uip_mss(); - } else { - s->len = s->file.len; - } - memcpy(uip_appdata, s->file.data, s->len); - - return s->len; -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(send_file(struct httpd_state *s)) -{ - PSOCK_BEGIN(&s->sout); - - do { - PSOCK_GENERATOR_SEND(&s->sout, generate_part_of_file, s); - s->file.len -= s->len; - s->file.data += s->len; - } while(s->file.len > 0); - - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(send_part_of_file(struct httpd_state *s)) -{ - PSOCK_BEGIN(&s->sout); - - PSOCK_SEND(&s->sout, s->file.data, s->len); - - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -static void -next_scriptstate(struct httpd_state *s) -{ - char *p; - p = strchr(s->scriptptr, ISO_nl) + 1; - s->scriptlen -= (unsigned short)(p - s->scriptptr); - s->scriptptr = p; -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(handle_script(struct httpd_state *s)) -{ - char *ptr; - - PT_BEGIN(&s->scriptpt); - - - while(s->file.len > 0) { - - /* Check if we should start executing a script. */ - if(*s->file.data == ISO_percent && - *(s->file.data + 1) == ISO_bang) { - s->scriptptr = s->file.data + 3; - s->scriptlen = s->file.len - 3; - if(*(s->scriptptr - 1) == ISO_colon) { - httpd_fs_open(s->scriptptr + 1, &s->file); - PT_WAIT_THREAD(&s->scriptpt, send_file(s)); - } else { - PT_WAIT_THREAD(&s->scriptpt, - httpd_cgi(s->scriptptr)(s, s->scriptptr)); - } - next_scriptstate(s); - - /* The script is over, so we reset the pointers and continue - sending the rest of the file. */ - s->file.data = s->scriptptr; - s->file.len = s->scriptlen; - } else { - /* See if we find the start of script marker in the block of HTML - to be sent. */ - - if(s->file.len > uip_mss()) { - s->len = uip_mss(); - } else { - s->len = s->file.len; - } - - if(*s->file.data == ISO_percent) { - ptr = strchr(s->file.data + 1, ISO_percent); - } else { - ptr = strchr(s->file.data, ISO_percent); - } - if(ptr != NULL && - ptr != s->file.data) { - s->len = (int)(ptr - s->file.data); - if(s->len >= uip_mss()) { - s->len = uip_mss(); - } - } - PT_WAIT_THREAD(&s->scriptpt, send_part_of_file(s)); - s->file.data += s->len; - s->file.len -= s->len; - - } - } - - PT_END(&s->scriptpt); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(send_headers(struct httpd_state *s, const char *statushdr)) -{ - char *ptr; - - PSOCK_BEGIN(&s->sout); - - PSOCK_SEND_STR(&s->sout, statushdr); - - ptr = strrchr(s->filename, ISO_period); - if(ptr == NULL) { - PSOCK_SEND_STR(&s->sout, http_content_type_binary); - } else if(strncmp(http_html, ptr, 5) == 0 || - strncmp(http_shtml, ptr, 6) == 0) { - PSOCK_SEND_STR(&s->sout, http_content_type_html); - } else if(strncmp(http_css, ptr, 4) == 0) { - PSOCK_SEND_STR(&s->sout, http_content_type_css); - } else if(strncmp(http_png, ptr, 4) == 0) { - PSOCK_SEND_STR(&s->sout, http_content_type_png); - } else if(strncmp(http_gif, ptr, 4) == 0) { - PSOCK_SEND_STR(&s->sout, http_content_type_gif); - } else if(strncmp(http_jpg, ptr, 4) == 0) { - PSOCK_SEND_STR(&s->sout, http_content_type_jpg); - } else { - PSOCK_SEND_STR(&s->sout, http_content_type_plain); - } - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(handle_output(struct httpd_state *s)) -{ - char *ptr; - - PT_BEGIN(&s->outputpt); - - if(!httpd_fs_open(s->filename, &s->file)) { - httpd_fs_open(http_404_html, &s->file); - strcpy(s->filename, http_404_html); - PT_WAIT_THREAD(&s->outputpt, - send_headers(s, - http_header_404)); - PT_WAIT_THREAD(&s->outputpt, - send_file(s)); - } else { - PT_WAIT_THREAD(&s->outputpt, - send_headers(s, - http_header_200)); - ptr = strchr(s->filename, ISO_period); - if(ptr != NULL && strncmp(ptr, http_shtml, 6) == 0) { - PT_INIT(&s->scriptpt); - PT_WAIT_THREAD(&s->outputpt, handle_script(s)); - } else { - PT_WAIT_THREAD(&s->outputpt, - send_file(s)); - } - } - PSOCK_CLOSE(&s->sout); - PT_END(&s->outputpt); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(handle_input(struct httpd_state *s)) -{ - PSOCK_BEGIN(&s->sin); - - PSOCK_READTO(&s->sin, ISO_space); - - - if(strncmp(s->inputbuf, http_get, 4) != 0) { - PSOCK_CLOSE_EXIT(&s->sin); - } - PSOCK_READTO(&s->sin, ISO_space); - - if(s->inputbuf[0] != ISO_slash) { - PSOCK_CLOSE_EXIT(&s->sin); - } - - if(s->inputbuf[1] == ISO_space) { - strncpy(s->filename, http_index_html, sizeof(s->filename)); - } else { - - s->inputbuf[PSOCK_DATALEN(&s->sin) - 1] = 0; - - /* Process any form input being sent to the server. */ - { - extern void vApplicationProcessFormInput( char *pcInputString ); - vApplicationProcessFormInput( s->inputbuf ); - } - - strncpy(s->filename, &s->inputbuf[0], sizeof(s->filename)); - } - - /* httpd_log_file(uip_conn->ripaddr, s->filename);*/ - - s->state = STATE_OUTPUT; - - while(1) { - PSOCK_READTO(&s->sin, ISO_nl); - - if(strncmp(s->inputbuf, http_referer, 8) == 0) { - s->inputbuf[PSOCK_DATALEN(&s->sin) - 2] = 0; - /* httpd_log(&s->inputbuf[9]);*/ - } - } - - PSOCK_END(&s->sin); -} -/*---------------------------------------------------------------------------*/ -static void -handle_connection(struct httpd_state *s) -{ - handle_input(s); - if(s->state == STATE_OUTPUT) { - handle_output(s); - } -} -/*---------------------------------------------------------------------------*/ -void -httpd_appcall(void) -{ - struct httpd_state *s = (struct httpd_state *)&(uip_conn->appstate); - - if(uip_closed() || uip_aborted() || uip_timedout()) { - } else if(uip_connected()) { - PSOCK_INIT(&s->sin, s->inputbuf, sizeof(s->inputbuf) - 1); - PSOCK_INIT(&s->sout, s->inputbuf, sizeof(s->inputbuf) - 1); - PT_INIT(&s->outputpt); - s->state = STATE_WAITING; - /* timer_set(&s->timer, CLOCK_SECOND * 100);*/ - s->timer = 0; - handle_connection(s); - } else if(s != NULL) { - if(uip_poll()) { - ++s->timer; - if(s->timer >= 20) { - uip_abort(); - } - } else { - s->timer = 0; - } - handle_connection(s); - } else { - uip_abort(); - } -} -/*---------------------------------------------------------------------------*/ -/** - * \brief Initialize the web server - * - * This function initializes the web server and should be - * called at system boot-up. - */ -void -httpd_init(void) -{ - uip_listen(HTONS(80)); -} -/*---------------------------------------------------------------------------*/ -/** @} */ diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/httpd.h b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/httpd.h deleted file mode 100644 index 7f7a6666e..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/httpd.h +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright (c) 2001-2005, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: httpd.h,v 1.2 2006/06/11 21:46:38 adam Exp $ - * - */ - -#ifndef __HTTPD_H__ -#define __HTTPD_H__ - -#include "psock.h" -#include "httpd-fs.h" - -struct httpd_state { - unsigned char timer; - struct psock sin, sout; - struct pt outputpt, scriptpt; - char inputbuf[50]; - char filename[20]; - char state; - struct httpd_fs_file file; - int len; - char *scriptptr; - int scriptlen; - - unsigned short count; -}; - -void httpd_init(void); -void httpd_appcall(void); - -void httpd_log(char *msg); -void httpd_log_file(u16_t *requester, char *file); - -#endif /* __HTTPD_H__ */ diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/lc-switch.h b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/lc-switch.h deleted file mode 100644 index 17c881161..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/lc-switch.h +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Copyright (c) 2004-2005, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * Author: Adam Dunkels - * - * $Id: lc-switch.h,v 1.2 2006/06/12 08:00:30 adam Exp $ - */ - -/** - * \addtogroup lc - * @{ - */ - -/** - * \file - * Implementation of local continuations based on switch() statment - * \author Adam Dunkels - * - * This implementation of local continuations uses the C switch() - * statement to resume execution of a function somewhere inside the - * function's body. The implementation is based on the fact that - * switch() statements are able to jump directly into the bodies of - * control structures such as if() or while() statmenets. - * - * This implementation borrows heavily from Simon Tatham's coroutines - * implementation in C: - * http://www.chiark.greenend.org.uk/~sgtatham/coroutines.html - */ - -#ifndef __LC_SWITCH_H__ -#define __LC_SWTICH_H__ - -/* WARNING! lc implementation using switch() does not work if an - LC_SET() is done within another switch() statement! */ - -/** \hideinitializer */ -typedef unsigned short lc_t; - -#define LC_INIT(s) s = 0; - -#define LC_RESUME(s) switch(s) { case 0: - -#define LC_SET(s) s = __LINE__; case __LINE__: - -#define LC_END(s) } - -#endif /* __LC_SWITCH_H__ */ - -/** @} */ diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/lc.h b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/lc.h deleted file mode 100644 index 3ad83cd0a..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/lc.h +++ /dev/null @@ -1,131 +0,0 @@ -/* - * Copyright (c) 2004-2005, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * Author: Adam Dunkels - * - * $Id: lc.h,v 1.2 2006/06/12 08:00:30 adam Exp $ - */ - -/** - * \addtogroup pt - * @{ - */ - -/** - * \defgroup lc Local continuations - * @{ - * - * Local continuations form the basis for implementing protothreads. A - * local continuation can be set in a specific function to - * capture the state of the function. After a local continuation has - * been set can be resumed in order to restore the state of the - * function at the point where the local continuation was set. - * - * - */ - -/** - * \file lc.h - * Local continuations - * \author - * Adam Dunkels - * - */ - -#ifdef DOXYGEN -/** - * Initialize a local continuation. - * - * This operation initializes the local continuation, thereby - * unsetting any previously set continuation state. - * - * \hideinitializer - */ -#define LC_INIT(lc) - -/** - * Set a local continuation. - * - * The set operation saves the state of the function at the point - * where the operation is executed. As far as the set operation is - * concerned, the state of the function does not include the - * call-stack or local (automatic) variables, but only the program - * counter and such CPU registers that needs to be saved. - * - * \hideinitializer - */ -#define LC_SET(lc) - -/** - * Resume a local continuation. - * - * The resume operation resumes a previously set local continuation, thus - * restoring the state in which the function was when the local - * continuation was set. If the local continuation has not been - * previously set, the resume operation does nothing. - * - * \hideinitializer - */ -#define LC_RESUME(lc) - -/** - * Mark the end of local continuation usage. - * - * The end operation signifies that local continuations should not be - * used any more in the function. This operation is not needed for - * most implementations of local continuation, but is required by a - * few implementations. - * - * \hideinitializer - */ -#define LC_END(lc) - -/** - * \var typedef lc_t; - * - * The local continuation type. - * - * \hideinitializer - */ -#endif /* DOXYGEN */ - -#ifndef __LC_H__ -#define __LC_H__ - -#ifdef LC_CONF_INCLUDE -#include LC_CONF_INCLUDE -#else -#include "lc-switch.h" -#endif /* LC_CONF_INCLUDE */ - -#endif /* __LC_H__ */ - -/** @} */ -/** @} */ diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/makefsdata b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/makefsdata deleted file mode 100644 index 8d2715a8a..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/makefsdata +++ /dev/null @@ -1,78 +0,0 @@ -#!/usr/bin/perl - -open(OUTPUT, "> httpd-fsdata.c"); - -chdir("httpd-fs"); - -opendir(DIR, "."); -@files = grep { !/^\./ && !/(CVS|~)/ } readdir(DIR); -closedir(DIR); - -foreach $file (@files) { - - if(-d $file && $file !~ /^\./) { - print "Processing directory $file\n"; - opendir(DIR, $file); - @newfiles = grep { !/^\./ && !/(CVS|~)/ } readdir(DIR); - closedir(DIR); - printf "Adding files @newfiles\n"; - @files = (@files, map { $_ = "$file/$_" } @newfiles); - next; - } -} - -foreach $file (@files) { - if(-f $file) { - - print "Adding file $file\n"; - - open(FILE, $file) || die "Could not open file $file\n"; - - $file =~ s-^-/-; - $fvar = $file; - $fvar =~ s-/-_-g; - $fvar =~ s-\.-_-g; - # for AVR, add PROGMEM here - print(OUTPUT "static const unsigned char data".$fvar."[] = {\n"); - print(OUTPUT "\t/* $file */\n\t"); - for($j = 0; $j < length($file); $j++) { - printf(OUTPUT "%#02x, ", unpack("C", substr($file, $j, 1))); - } - printf(OUTPUT "0,\n"); - - - $i = 0; - while(read(FILE, $data, 1)) { - if($i == 0) { - print(OUTPUT "\t"); - } - printf(OUTPUT "%#02x, ", unpack("C", $data)); - $i++; - if($i == 10) { - print(OUTPUT "\n"); - $i = 0; - } - } - print(OUTPUT "0};\n\n"); - close(FILE); - push(@fvars, $fvar); - push(@pfiles, $file); - } -} - -for($i = 0; $i < @fvars; $i++) { - $file = $pfiles[$i]; - $fvar = $fvars[$i]; - - if($i == 0) { - $prevfile = "NULL"; - } else { - $prevfile = "file" . $fvars[$i - 1]; - } - print(OUTPUT "const struct httpd_fsdata_file file".$fvar."[] = {{$prevfile, data$fvar, "); - print(OUTPUT "data$fvar + ". (length($file) + 1) .", "); - print(OUTPUT "sizeof(data$fvar) - ". (length($file) + 1) ."}};\n\n"); -} - -print(OUTPUT "#define HTTPD_FS_ROOT file$fvars[$i - 1]\n\n"); -print(OUTPUT "#define HTTPD_FS_NUMFILES $i\n"); diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/makestrings b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/makestrings deleted file mode 100644 index 8a13c6d29..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/makestrings +++ /dev/null @@ -1,40 +0,0 @@ -#!/usr/bin/perl - - -sub stringify { - my $name = shift(@_); - open(OUTPUTC, "> $name.c"); - open(OUTPUTH, "> $name.h"); - - open(FILE, "$name"); - - while() { - if(/(.+) "(.+)"/) { - $var = $1; - $data = $2; - - $datan = $data; - $datan =~ s/\\r/\r/g; - $datan =~ s/\\n/\n/g; - $datan =~ s/\\01/\01/g; - $datan =~ s/\\0/\0/g; - - printf(OUTPUTC "const char $var\[%d] = \n", length($datan) + 1); - printf(OUTPUTC "/* \"$data\" */\n"); - printf(OUTPUTC "{"); - for($j = 0; $j < length($datan); $j++) { - printf(OUTPUTC "%#02x, ", unpack("C", substr($datan, $j, 1))); - } - printf(OUTPUTC "};\n"); - - printf(OUTPUTH "extern const char $var\[%d];\n", length($datan) + 1); - - } - } - close(OUTPUTC); - close(OUTPUTH); -} -stringify("http-strings"); - -exit 0; - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/psock.c b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/psock.c deleted file mode 100644 index 0c390d0a8..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/psock.c +++ /dev/null @@ -1,339 +0,0 @@ -/* - * Copyright (c) 2004, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * Author: Adam Dunkels - * - * $Id: psock.c,v 1.2 2006/06/12 08:00:30 adam Exp $ - */ - -#include -#include - -#include "uipopt.h" -#include "psock.h" -#include "uip.h" - -#define STATE_NONE 0 -#define STATE_ACKED 1 -#define STATE_READ 2 -#define STATE_BLOCKED_NEWDATA 3 -#define STATE_BLOCKED_CLOSE 4 -#define STATE_BLOCKED_SEND 5 -#define STATE_DATA_SENT 6 - -/* - * Return value of the buffering functions that indicates that a - * buffer was not filled by incoming data. - * - */ -#define BUF_NOT_FULL 0 -#define BUF_NOT_FOUND 0 - -/* - * Return value of the buffering functions that indicates that a - * buffer was completely filled by incoming data. - * - */ -#define BUF_FULL 1 - -/* - * Return value of the buffering functions that indicates that an - * end-marker byte was found. - * - */ -#define BUF_FOUND 2 - -/*---------------------------------------------------------------------------*/ -static void -buf_setup(struct psock_buf *buf, - u8_t *bufptr, u16_t bufsize) -{ - buf->ptr = bufptr; - buf->left = bufsize; -} -/*---------------------------------------------------------------------------*/ -static u8_t -buf_bufdata(struct psock_buf *buf, u16_t len, - u8_t **dataptr, u16_t *datalen) -{ - ( void ) len; - if(*datalen < buf->left) { - memcpy(buf->ptr, *dataptr, *datalen); - buf->ptr += *datalen; - buf->left -= *datalen; - *dataptr += *datalen; - *datalen = 0; - return BUF_NOT_FULL; - } else if(*datalen == buf->left) { - memcpy(buf->ptr, *dataptr, *datalen); - buf->ptr += *datalen; - buf->left = 0; - *dataptr += *datalen; - *datalen = 0; - return BUF_FULL; - } else { - memcpy(buf->ptr, *dataptr, buf->left); - buf->ptr += buf->left; - *datalen -= buf->left; - *dataptr += buf->left; - buf->left = 0; - return BUF_FULL; - } -} -/*---------------------------------------------------------------------------*/ -static u8_t -buf_bufto(register struct psock_buf *buf, u8_t endmarker, - register u8_t **dataptr, register u16_t *datalen) -{ - u8_t c; - while(buf->left > 0 && *datalen > 0) { - c = *buf->ptr = **dataptr; - ++*dataptr; - ++buf->ptr; - --*datalen; - --buf->left; - - if(c == endmarker) { - return BUF_FOUND; - } - } - - if(*datalen == 0) { - return BUF_NOT_FOUND; - } - - while(*datalen > 0) { - c = **dataptr; - --*datalen; - ++*dataptr; - - if(c == endmarker) { - return BUF_FOUND | BUF_FULL; - } - } - - return BUF_FULL; -} -/*---------------------------------------------------------------------------*/ -static char -send_data(register struct psock *s) -{ - if(s->state != STATE_DATA_SENT || uip_rexmit()) { - if(s->sendlen > uip_mss()) { - uip_send(s->sendptr, uip_mss()); - } else { - uip_send(s->sendptr, s->sendlen); - } - s->state = STATE_DATA_SENT; - return 1; - } - return 0; -} -/*---------------------------------------------------------------------------*/ -static char -data_acked(register struct psock *s) -{ - if(s->state == STATE_DATA_SENT && uip_acked()) { - if(s->sendlen > uip_mss()) { - s->sendlen -= uip_mss(); - s->sendptr += uip_mss(); - } else { - s->sendptr += s->sendlen; - s->sendlen = 0; - } - s->state = STATE_ACKED; - return 1; - } - return 0; -} -/*---------------------------------------------------------------------------*/ -PT_THREAD(psock_send(register struct psock *s, const char *buf, - unsigned int len)) -{ - PT_BEGIN(&s->psockpt); - - /* If there is no data to send, we exit immediately. */ - if(len == 0) { - PT_EXIT(&s->psockpt); - } - - /* Save the length of and a pointer to the data that is to be - sent. */ - s->sendptr = (unsigned char*)buf; - s->sendlen = len; - - s->state = STATE_NONE; - - /* We loop here until all data is sent. The s->sendlen variable is - updated by the data_sent() function. */ - while(s->sendlen > 0) { - - /* - * The condition for this PT_WAIT_UNTIL is a little tricky: the - * protothread will wait here until all data has been acknowledged - * (data_acked() returns true) and until all data has been sent - * (send_data() returns true). The two functions data_acked() and - * send_data() must be called in succession to ensure that all - * data is sent. Therefore the & operator is used instead of the - * && operator, which would cause only the data_acked() function - * to be called when it returns false. - */ - PT_WAIT_UNTIL(&s->psockpt, data_acked(s) & send_data(s)); - } - - s->state = STATE_NONE; - - PT_END(&s->psockpt); -} -/*---------------------------------------------------------------------------*/ -PT_THREAD(psock_generator_send(register struct psock *s, - unsigned short (*generate)(void *), void *arg)) -{ - PT_BEGIN(&s->psockpt); - - /* Ensure that there is a generator function to call. */ - if(generate == NULL) { - PT_EXIT(&s->psockpt); - } - - /* Call the generator function to generate the data in the - uip_appdata buffer. */ - s->sendlen = generate(arg); - s->sendptr = uip_appdata; - - s->state = STATE_NONE; - do { - /* Call the generator function again if we are called to perform a - retransmission. */ - if(uip_rexmit()) { - generate(arg); - } - /* Wait until all data is sent and acknowledged. */ - PT_WAIT_UNTIL(&s->psockpt, data_acked(s) & send_data(s)); - } while(s->sendlen > 0); - - s->state = STATE_NONE; - - PT_END(&s->psockpt); -} -/*---------------------------------------------------------------------------*/ -u16_t -psock_datalen(struct psock *psock) -{ - return psock->bufsize - psock->buf.left; -} -/*---------------------------------------------------------------------------*/ -char -psock_newdata(struct psock *s) -{ - if(s->readlen > 0) { - /* There is data in the uip_appdata buffer that has not yet been - read with the PSOCK_READ functions. */ - return 1; - } else if(s->state == STATE_READ) { - /* All data in uip_appdata buffer already consumed. */ - s->state = STATE_BLOCKED_NEWDATA; - return 0; - } else if(uip_newdata()) { - /* There is new data that has not been consumed. */ - return 1; - } else { - /* There is no new data. */ - return 0; - } -} -/*---------------------------------------------------------------------------*/ -PT_THREAD(psock_readto(register struct psock *psock, unsigned char c)) -{ - PT_BEGIN(&psock->psockpt); - - buf_setup(&psock->buf, (unsigned char*)psock->bufptr, psock->bufsize); - - /* XXX: Should add buf_checkmarker() before do{} loop, if - incoming data has been handled while waiting for a write. */ - - do { - if(psock->readlen == 0) { - PT_WAIT_UNTIL(&psock->psockpt, psock_newdata(psock)); - psock->state = STATE_READ; - psock->readptr = (u8_t *)uip_appdata; - psock->readlen = uip_datalen(); - } - } while((buf_bufto(&psock->buf, c, - &psock->readptr, - &psock->readlen) & BUF_FOUND) == 0); - - if(psock_datalen(psock) == 0) { - psock->state = STATE_NONE; - PT_RESTART(&psock->psockpt); - } - PT_END(&psock->psockpt); -} -/*---------------------------------------------------------------------------*/ -PT_THREAD(psock_readbuf(register struct psock *psock)) -{ - PT_BEGIN(&psock->psockpt); - - buf_setup(&psock->buf, (unsigned char * ) psock->bufptr, psock->bufsize); - - /* XXX: Should add buf_checkmarker() before do{} loop, if - incoming data has been handled while waiting for a write. */ - - do { - if(psock->readlen == 0) { - PT_WAIT_UNTIL(&psock->psockpt, psock_newdata(psock)); - printf("Waited for newdata\n"); - psock->state = STATE_READ; - psock->readptr = (u8_t *)uip_appdata; - psock->readlen = uip_datalen(); - } - } while(buf_bufdata(&psock->buf, psock->bufsize, - &psock->readptr, - &psock->readlen) != BUF_FULL); - - if(psock_datalen(psock) == 0) { - psock->state = STATE_NONE; - PT_RESTART(&psock->psockpt); - } - PT_END(&psock->psockpt); -} -/*---------------------------------------------------------------------------*/ -void -psock_init(register struct psock *psock, char *buffer, unsigned int buffersize) -{ - psock->state = STATE_NONE; - psock->readlen = 0; - psock->bufptr = buffer; - psock->bufsize = buffersize; - buf_setup(&psock->buf, (unsigned char*) buffer, buffersize); - PT_INIT(&psock->pt); - PT_INIT(&psock->psockpt); -} -/*---------------------------------------------------------------------------*/ diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/psock.h b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/psock.h deleted file mode 100644 index 8d4125878..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/psock.h +++ /dev/null @@ -1,380 +0,0 @@ -/* - * Copyright (c) 2004, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * Author: Adam Dunkels - * - * $Id: psock.h,v 1.3 2006/06/12 08:00:30 adam Exp $ - */ - -/** - * \defgroup psock Protosockets library - * @{ - * - * The protosocket library provides an interface to the uIP stack that is - * similar to the traditional BSD socket interface. Unlike programs - * written for the ordinary uIP event-driven interface, programs - * written with the protosocket library are executed in a sequential - * fashion and does not have to be implemented as explicit state - * machines. - * - * Protosockets only work with TCP connections. - * - * The protosocket library uses \ref pt protothreads to provide - * sequential control flow. This makes the protosockets lightweight in - * terms of memory, but also means that protosockets inherits the - * functional limitations of protothreads. Each protosocket lives only - * within a single function. Automatic variables (stack variables) are - * not retained across a protosocket library function call. - * - * \note Because the protosocket library uses protothreads, local - * variables will not always be saved across a call to a protosocket - * library function. It is therefore advised that local variables are - * used with extreme care. - * - * The protosocket library provides functions for sending data without - * having to deal with retransmissions and acknowledgements, as well - * as functions for reading data without having to deal with data - * being split across more than one TCP segment. - * - * Because each protosocket runs as a protothread, the protosocket has to be - * started with a call to PSOCK_BEGIN() at the start of the function - * in which the protosocket is used. Similarly, the protosocket protothread can - * be terminated by a call to PSOCK_EXIT(). - * - */ - -/** - * \file - * Protosocket library header file - * \author - * Adam Dunkels - * - */ - -#ifndef __PSOCK_H__ -#define __PSOCK_H__ - -#include "uipopt.h" -#include "pt.h" - - /* - * The structure that holds the state of a buffer. - * - * This structure holds the state of a uIP buffer. The structure has - * no user-visible elements, but is used through the functions - * provided by the library. - * - */ -struct psock_buf { - u8_t *ptr; - unsigned short left; -}; - -/** - * The representation of a protosocket. - * - * The protosocket structrure is an opaque structure with no user-visible - * elements. - */ -struct psock { - struct pt pt, psockpt; /* Protothreads - one that's using the psock - functions, and one that runs inside the - psock functions. */ - const u8_t *sendptr; /* Pointer to the next data to be sent. */ - u8_t *readptr; /* Pointer to the next data to be read. */ - - char *bufptr; /* Pointer to the buffer used for buffering - incoming data. */ - - u16_t sendlen; /* The number of bytes left to be sent. */ - u16_t readlen; /* The number of bytes left to be read. */ - - struct psock_buf buf; /* The structure holding the state of the - input buffer. */ - unsigned int bufsize; /* The size of the input buffer. */ - - unsigned char state; /* The state of the protosocket. */ -}; - -void psock_init(struct psock *psock, char *buffer, unsigned int buffersize); -/** - * Initialize a protosocket. - * - * This macro initializes a protosocket and must be called before the - * protosocket is used. The initialization also specifies the input buffer - * for the protosocket. - * - * \param psock (struct psock *) A pointer to the protosocket to be - * initialized - * - * \param buffer (char *) A pointer to the input buffer for the - * protosocket. - * - * \param buffersize (unsigned int) The size of the input buffer. - * - * \hideinitializer - */ -#define PSOCK_INIT(psock, buffer, buffersize) \ - psock_init(psock, buffer, buffersize) - -/** - * Start the protosocket protothread in a function. - * - * This macro starts the protothread associated with the protosocket and - * must come before other protosocket calls in the function it is used. - * - * \param psock (struct psock *) A pointer to the protosocket to be - * started. - * - * \hideinitializer - */ -#define PSOCK_BEGIN(psock) PT_BEGIN(&((psock)->pt)) - -PT_THREAD(psock_send(struct psock *psock, const char *buf, unsigned int len)); -/** - * Send data. - * - * This macro sends data over a protosocket. The protosocket protothread blocks - * until all data has been sent and is known to have been received by - * the remote end of the TCP connection. - * - * \param psock (struct psock *) A pointer to the protosocket over which - * data is to be sent. - * - * \param data (char *) A pointer to the data that is to be sent. - * - * \param datalen (unsigned int) The length of the data that is to be - * sent. - * - * \hideinitializer - */ -#define PSOCK_SEND(psock, data, datalen) \ - PT_WAIT_THREAD(&((psock)->pt), psock_send(psock, data, datalen)) - -/** - * \brief Send a null-terminated string. - * \param psock Pointer to the protosocket. - * \param str The string to be sent. - * - * This function sends a null-terminated string over the - * protosocket. - * - * \hideinitializer - */ -#define PSOCK_SEND_STR(psock, str) \ - PT_WAIT_THREAD(&((psock)->pt), psock_send(psock, str, strlen(str))) - -PT_THREAD(psock_generator_send(struct psock *psock, - unsigned short (*f)(void *), void *arg)); - -/** - * \brief Generate data with a function and send it - * \param psock Pointer to the protosocket. - * \param generator Pointer to the generator function - * \param arg Argument to the generator function - * - * This function generates data and sends it over the - * protosocket. This can be used to dynamically generate - * data for a transmission, instead of generating the data - * in a buffer beforehand. This function reduces the need for - * buffer memory. The generator function is implemented by - * the application, and a pointer to the function is given - * as an argument with the call to PSOCK_GENERATOR_SEND(). - * - * The generator function should place the generated data - * directly in the uip_appdata buffer, and return the - * length of the generated data. The generator function is - * called by the protosocket layer when the data first is - * sent, and once for every retransmission that is needed. - * - * \hideinitializer - */ -#define PSOCK_GENERATOR_SEND(psock, generator, arg) \ - PT_WAIT_THREAD(&((psock)->pt), \ - psock_generator_send(psock, generator, arg)) - - -/** - * Close a protosocket. - * - * This macro closes a protosocket and can only be called from within the - * protothread in which the protosocket lives. - * - * \param psock (struct psock *) A pointer to the protosocket that is to - * be closed. - * - * \hideinitializer - */ -#define PSOCK_CLOSE(psock) uip_close() - -PT_THREAD(psock_readbuf(struct psock *psock)); -/** - * Read data until the buffer is full. - * - * This macro will block waiting for data and read the data into the - * input buffer specified with the call to PSOCK_INIT(). Data is read - * until the buffer is full.. - * - * \param psock (struct psock *) A pointer to the protosocket from which - * data should be read. - * - * \hideinitializer - */ -#define PSOCK_READBUF(psock) \ - PT_WAIT_THREAD(&((psock)->pt), psock_readbuf(psock)) - -PT_THREAD(psock_readto(struct psock *psock, unsigned char c)); -/** - * Read data up to a specified character. - * - * This macro will block waiting for data and read the data into the - * input buffer specified with the call to PSOCK_INIT(). Data is only - * read until the specifieed character appears in the data stream. - * - * \param psock (struct psock *) A pointer to the protosocket from which - * data should be read. - * - * \param c (char) The character at which to stop reading. - * - * \hideinitializer - */ -#define PSOCK_READTO(psock, c) \ - PT_WAIT_THREAD(&((psock)->pt), psock_readto(psock, c)) - -/** - * The length of the data that was previously read. - * - * This macro returns the length of the data that was previously read - * using PSOCK_READTO() or PSOCK_READ(). - * - * \param psock (struct psock *) A pointer to the protosocket holding the data. - * - * \hideinitializer - */ -#define PSOCK_DATALEN(psock) psock_datalen(psock) - -u16_t psock_datalen(struct psock *psock); - -/** - * Exit the protosocket's protothread. - * - * This macro terminates the protothread of the protosocket and should - * almost always be used in conjunction with PSOCK_CLOSE(). - * - * \sa PSOCK_CLOSE_EXIT() - * - * \param psock (struct psock *) A pointer to the protosocket. - * - * \hideinitializer - */ -#define PSOCK_EXIT(psock) PT_EXIT(&((psock)->pt)) - -/** - * Close a protosocket and exit the protosocket's protothread. - * - * This macro closes a protosocket and exits the protosocket's protothread. - * - * \param psock (struct psock *) A pointer to the protosocket. - * - * \hideinitializer - */ -#define PSOCK_CLOSE_EXIT(psock) \ - do { \ - PSOCK_CLOSE(psock); \ - PSOCK_EXIT(psock); \ - } while(0) - -/** - * Declare the end of a protosocket's protothread. - * - * This macro is used for declaring that the protosocket's protothread - * ends. It must always be used together with a matching PSOCK_BEGIN() - * macro. - * - * \param psock (struct psock *) A pointer to the protosocket. - * - * \hideinitializer - */ -#define PSOCK_END(psock) PT_END(&((psock)->pt)) - -char psock_newdata(struct psock *s); - -/** - * Check if new data has arrived on a protosocket. - * - * This macro is used in conjunction with the PSOCK_WAIT_UNTIL() - * macro to check if data has arrived on a protosocket. - * - * \param psock (struct psock *) A pointer to the protosocket. - * - * \hideinitializer - */ -#define PSOCK_NEWDATA(psock) psock_newdata(psock) - -/** - * Wait until a condition is true. - * - * This macro blocks the protothread until the specified condition is - * true. The macro PSOCK_NEWDATA() can be used to check if new data - * arrives when the protosocket is waiting. - * - * Typically, this macro is used as follows: - * - \code - PT_THREAD(thread(struct psock *s, struct timer *t)) - { - PSOCK_BEGIN(s); - - PSOCK_WAIT_UNTIL(s, PSOCK_NEWADATA(s) || timer_expired(t)); - - if(PSOCK_NEWDATA(s)) { - PSOCK_READTO(s, '\n'); - } else { - handle_timed_out(s); - } - - PSOCK_END(s); - } - \endcode - * - * \param psock (struct psock *) A pointer to the protosocket. - * \param condition The condition to wait for. - * - * \hideinitializer - */ -#define PSOCK_WAIT_UNTIL(psock, condition) \ - PT_WAIT_UNTIL(&((psock)->pt), (condition)); - -#define PSOCK_WAIT_THREAD(psock, condition) \ - PT_WAIT_THREAD(&((psock)->pt), (condition)) - -#endif /* __PSOCK_H__ */ - -/** @} */ diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/pt.h b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/pt.h deleted file mode 100644 index 00ddd4429..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/pt.h +++ /dev/null @@ -1,323 +0,0 @@ -/* - * Copyright (c) 2004-2005, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * Author: Adam Dunkels - * - * $Id: pt.h,v 1.2 2006/06/12 08:00:30 adam Exp $ - */ - -/** - * \addtogroup pt - * @{ - */ - -/** - * \file - * Protothreads implementation. - * \author - * Adam Dunkels - * - */ - -#ifndef __PT_H__ -#define __PT_H__ - -#include "lc.h" - -struct pt { - lc_t lc; -}; - -#define PT_WAITING 0 -#define PT_EXITED 1 -#define PT_ENDED 2 -#define PT_YIELDED 3 - -/** - * \name Initialization - * @{ - */ - -/** - * Initialize a protothread. - * - * Initializes a protothread. Initialization must be done prior to - * starting to execute the protothread. - * - * \param pt A pointer to the protothread control structure. - * - * \sa PT_SPAWN() - * - * \hideinitializer - */ -#define PT_INIT(pt) LC_INIT((pt)->lc) - -/** @} */ - -/** - * \name Declaration and definition - * @{ - */ - -/** - * Declaration of a protothread. - * - * This macro is used to declare a protothread. All protothreads must - * be declared with this macro. - * - * \param name_args The name and arguments of the C function - * implementing the protothread. - * - * \hideinitializer - */ -#define PT_THREAD(name_args) char name_args - -/** - * Declare the start of a protothread inside the C function - * implementing the protothread. - * - * This macro is used to declare the starting point of a - * protothread. It should be placed at the start of the function in - * which the protothread runs. All C statements above the PT_BEGIN() - * invokation will be executed each time the protothread is scheduled. - * - * \param pt A pointer to the protothread control structure. - * - * \hideinitializer - */ -#define PT_BEGIN(pt) { char PT_YIELD_FLAG = 1; LC_RESUME((pt)->lc) - -/** - * Declare the end of a protothread. - * - * This macro is used for declaring that a protothread ends. It must - * always be used together with a matching PT_BEGIN() macro. - * - * \param pt A pointer to the protothread control structure. - * - * \hideinitializer - */ -#define PT_END(pt) LC_END((pt)->lc); PT_YIELD_FLAG = 0; \ - PT_INIT(pt); return PT_ENDED; } - -/** @} */ - -/** - * \name Blocked wait - * @{ - */ - -/** - * Block and wait until condition is true. - * - * This macro blocks the protothread until the specified condition is - * true. - * - * \param pt A pointer to the protothread control structure. - * \param condition The condition. - * - * \hideinitializer - */ -#define PT_WAIT_UNTIL(pt, condition) \ - do { \ - LC_SET((pt)->lc); \ - if(!(condition)) { \ - return PT_WAITING; \ - } \ - } while(0) - -/** - * Block and wait while condition is true. - * - * This function blocks and waits while condition is true. See - * PT_WAIT_UNTIL(). - * - * \param pt A pointer to the protothread control structure. - * \param cond The condition. - * - * \hideinitializer - */ -#define PT_WAIT_WHILE(pt, cond) PT_WAIT_UNTIL((pt), !(cond)) - -/** @} */ - -/** - * \name Hierarchical protothreads - * @{ - */ - -/** - * Block and wait until a child protothread completes. - * - * This macro schedules a child protothread. The current protothread - * will block until the child protothread completes. - * - * \note The child protothread must be manually initialized with the - * PT_INIT() function before this function is used. - * - * \param pt A pointer to the protothread control structure. - * \param thread The child protothread with arguments - * - * \sa PT_SPAWN() - * - * \hideinitializer - */ -#define PT_WAIT_THREAD(pt, thread) PT_WAIT_WHILE((pt), PT_SCHEDULE(thread)) - -/** - * Spawn a child protothread and wait until it exits. - * - * This macro spawns a child protothread and waits until it exits. The - * macro can only be used within a protothread. - * - * \param pt A pointer to the protothread control structure. - * \param child A pointer to the child protothread's control structure. - * \param thread The child protothread with arguments - * - * \hideinitializer - */ -#define PT_SPAWN(pt, child, thread) \ - do { \ - PT_INIT((child)); \ - PT_WAIT_THREAD((pt), (thread)); \ - } while(0) - -/** @} */ - -/** - * \name Exiting and restarting - * @{ - */ - -/** - * Restart the protothread. - * - * This macro will block and cause the running protothread to restart - * its execution at the place of the PT_BEGIN() call. - * - * \param pt A pointer to the protothread control structure. - * - * \hideinitializer - */ -#define PT_RESTART(pt) \ - do { \ - PT_INIT(pt); \ - return PT_WAITING; \ - } while(0) - -/** - * Exit the protothread. - * - * This macro causes the protothread to exit. If the protothread was - * spawned by another protothread, the parent protothread will become - * unblocked and can continue to run. - * - * \param pt A pointer to the protothread control structure. - * - * \hideinitializer - */ -#define PT_EXIT(pt) \ - do { \ - PT_INIT(pt); \ - return PT_EXITED; \ - } while(0) - -/** @} */ - -/** - * \name Calling a protothread - * @{ - */ - -/** - * Schedule a protothread. - * - * This function shedules a protothread. The return value of the - * function is non-zero if the protothread is running or zero if the - * protothread has exited. - * - * \param f The call to the C function implementing the protothread to - * be scheduled - * - * \hideinitializer - */ -#define PT_SCHEDULE(f) ((f) == PT_WAITING) - -/** @} */ - -/** - * \name Yielding from a protothread - * @{ - */ - -/** - * Yield from the current protothread. - * - * This function will yield the protothread, thereby allowing other - * processing to take place in the system. - * - * \param pt A pointer to the protothread control structure. - * - * \hideinitializer - */ -#define PT_YIELD(pt) \ - do { \ - PT_YIELD_FLAG = 0; \ - LC_SET((pt)->lc); \ - if(PT_YIELD_FLAG == 0) { \ - return PT_YIELDED; \ - } \ - } while(0) - -/** - * \brief Yield from the protothread until a condition occurs. - * \param pt A pointer to the protothread control structure. - * \param cond The condition. - * - * This function will yield the protothread, until the - * specified condition evaluates to true. - * - * - * \hideinitializer - */ -#define PT_YIELD_UNTIL(pt, cond) \ - do { \ - PT_YIELD_FLAG = 0; \ - LC_SET((pt)->lc); \ - if((PT_YIELD_FLAG == 0) || !(cond)) { \ - return PT_YIELDED; \ - } \ - } while(0) - -/** @} */ - -#endif /* __PT_H__ */ - -/** @} */ diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/timer.c b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/timer.c deleted file mode 100644 index 8c270b233..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/timer.c +++ /dev/null @@ -1,127 +0,0 @@ -/** - * \addtogroup timer - * @{ - */ - -/** - * \file - * Timer library implementation. - * \author - * Adam Dunkels - */ - -/* - * Copyright (c) 2004, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * Author: Adam Dunkels - * - * $Id: timer.c,v 1.2 2006/06/12 08:00:30 adam Exp $ - */ - -#include "clock.h" -#include "timer.h" - -/*---------------------------------------------------------------------------*/ -/** - * Set a timer. - * - * This function is used to set a timer for a time sometime in the - * future. The function timer_expired() will evaluate to true after - * the timer has expired. - * - * \param t A pointer to the timer - * \param interval The interval before the timer expires. - * - */ -void -timer_set(struct timer *t, clock_time_t interval) -{ - t->interval = interval; - t->start = clock_time(); -} -/*---------------------------------------------------------------------------*/ -/** - * Reset the timer with the same interval. - * - * This function resets the timer with the same interval that was - * given to the timer_set() function. The start point of the interval - * is the exact time that the timer last expired. Therefore, this - * function will cause the timer to be stable over time, unlike the - * timer_rester() function. - * - * \param t A pointer to the timer. - * - * \sa timer_restart() - */ -void -timer_reset(struct timer *t) -{ - t->start += t->interval; -} -/*---------------------------------------------------------------------------*/ -/** - * Restart the timer from the current point in time - * - * This function restarts a timer with the same interval that was - * given to the timer_set() function. The timer will start at the - * current time. - * - * \note A periodic timer will drift if this function is used to reset - * it. For preioric timers, use the timer_reset() function instead. - * - * \param t A pointer to the timer. - * - * \sa timer_reset() - */ -void -timer_restart(struct timer *t) -{ - t->start = clock_time(); -} -/*---------------------------------------------------------------------------*/ -/** - * Check if a timer has expired. - * - * This function tests if a timer has expired and returns true or - * false depending on its status. - * - * \param t A pointer to the timer - * - * \return Non-zero if the timer has expired, zero otherwise. - * - */ -int -timer_expired(struct timer *t) -{ - return (clock_time_t)(clock_time() - t->start) >= (clock_time_t)t->interval; -} -/*---------------------------------------------------------------------------*/ - -/** @} */ diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/timer.h b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/timer.h deleted file mode 100644 index e28e3ca5f..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/timer.h +++ /dev/null @@ -1,86 +0,0 @@ -/** - * \defgroup timer Timer library - * - * The timer library provides functions for setting, resetting and - * restarting timers, and for checking if a timer has expired. An - * application must "manually" check if its timers have expired; this - * is not done automatically. - * - * A timer is declared as a \c struct \c timer and all access to the - * timer is made by a pointer to the declared timer. - * - * \note The timer library uses the \ref clock "Clock library" to - * measure time. Intervals should be specified in the format used by - * the clock library. - * - * @{ - */ - - -/** - * \file - * Timer library header file. - * \author - * Adam Dunkels - */ - -/* - * Copyright (c) 2004, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * Author: Adam Dunkels - * - * $Id: timer.h,v 1.3 2006/06/11 21:46:39 adam Exp $ - */ -#ifndef __TIMER_H__ -#define __TIMER_H__ - -#include "clock.h" - -/** - * A timer. - * - * This structure is used for declaring a timer. The timer must be set - * with timer_set() before it can be used. - * - * \hideinitializer - */ -struct timer { - clock_time_t start; - clock_time_t interval; -}; - -void timer_set(struct timer *t, clock_time_t interval); -void timer_reset(struct timer *t); -void timer_restart(struct timer *t); -int timer_expired(struct timer *t); - -#endif /* __TIMER_H__ */ - -/** @} */ diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/uIP_Task.c b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/uIP_Task.c deleted file mode 100644 index 1303bb65c..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/uIP_Task.c +++ /dev/null @@ -1,246 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* Standard includes. */ -#include - -/* Scheduler includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "semphr.h" - -/* uip includes. */ -#include "uip.h" -#include "uip_arp.h" -#include "httpd.h" -#include "timer.h" -#include "clock-arch.h" - -/* Demo includes. */ -#include "EthDev_LPC17xx.h" -#include "EthDev.h" -#include "ParTest.h" - -/*-----------------------------------------------------------*/ - -/* How long to wait before attempting to connect the MAC again. */ -#define uipINIT_WAIT ( 100 / portTICK_PERIOD_MS ) - -/* Shortcut to the header within the Rx buffer. */ -#define xHeader ((struct uip_eth_hdr *) &uip_buf[ 0 ]) - -/* Standard constant. */ -#define uipTOTAL_FRAME_HEADER_SIZE 54 - -/*-----------------------------------------------------------*/ - -/* - * Setup the MAC address in the MAC itself, and in the uIP stack. - */ -static void prvSetMACAddress( void ); - -/* - * Port functions required by the uIP stack. - */ -void clock_init( void ); -clock_time_t clock_time( void ); - -/*-----------------------------------------------------------*/ - -/* The semaphore used by the ISR to wake the uIP task. */ -SemaphoreHandle_t xEMACSemaphore = NULL; - -/*-----------------------------------------------------------*/ - -void clock_init(void) -{ - /* This is done when the scheduler starts. */ -} -/*-----------------------------------------------------------*/ - -clock_time_t clock_time( void ) -{ - return xTaskGetTickCount(); -} -/*-----------------------------------------------------------*/ - -void vuIP_Task( void *pvParameters ) -{ -portBASE_TYPE i; -uip_ipaddr_t xIPAddr; -struct timer periodic_timer, arp_timer; -extern void ( vEMAC_ISR_Wrapper )( void ); - - ( void ) pvParameters; - - /* Initialise the uIP stack. */ - timer_set( &periodic_timer, configTICK_RATE_HZ / 2 ); - timer_set( &arp_timer, configTICK_RATE_HZ * 10 ); - uip_init(); - uip_ipaddr( xIPAddr, configIP_ADDR0, configIP_ADDR1, configIP_ADDR2, configIP_ADDR3 ); - uip_sethostaddr( xIPAddr ); - uip_ipaddr( xIPAddr, configNET_MASK0, configNET_MASK1, configNET_MASK2, configNET_MASK3 ); - uip_setnetmask( xIPAddr ); - httpd_init(); - - /* Create the semaphore used to wake the uIP task. */ - vSemaphoreCreateBinary( xEMACSemaphore ); - - /* Initialise the MAC. */ - while( lEMACInit() != pdPASS ) - { - vTaskDelay( uipINIT_WAIT ); - } - - portENTER_CRITICAL(); - { - LPC_EMAC->IntEnable = ( INT_RX_DONE | INT_TX_DONE ); - - /* Set the interrupt priority to the max permissible to cause some - interrupt nesting. */ - NVIC_SetPriority( ENET_IRQn, configEMAC_INTERRUPT_PRIORITY ); - - /* Enable the interrupt. */ - NVIC_EnableIRQ( ENET_IRQn ); - prvSetMACAddress(); - } - portEXIT_CRITICAL(); - - - for( ;; ) - { - /* Is there received data ready to be processed? */ - uip_len = ulGetEMACRxData(); - - if( ( uip_len > 0 ) && ( uip_buf != NULL ) ) - { - /* Standard uIP loop taken from the uIP manual. */ - if( xHeader->type == htons( UIP_ETHTYPE_IP ) ) - { - uip_arp_ipin(); - uip_input(); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - uip_arp_out(); - vSendEMACTxData( uip_len ); - } - } - else if( xHeader->type == htons( UIP_ETHTYPE_ARP ) ) - { - uip_arp_arpin(); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - vSendEMACTxData( uip_len ); - } - } - } - else - { - if( timer_expired( &periodic_timer ) && ( uip_buf != NULL ) ) - { - timer_reset( &periodic_timer ); - for( i = 0; i < UIP_CONNS; i++ ) - { - uip_periodic( i ); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - uip_arp_out(); - vSendEMACTxData( uip_len ); - } - } - - /* Call the ARP timer function every 10 seconds. */ - if( timer_expired( &arp_timer ) ) - { - timer_reset( &arp_timer ); - uip_arp_timer(); - } - } - else - { - /* We did not receive a packet, and there was no periodic - processing to perform. Block for a fixed period. If a packet - is received during this period we will be woken by the ISR - giving us the Semaphore. */ - xSemaphoreTake( xEMACSemaphore, configTICK_RATE_HZ / 2 ); - } - } - } -} -/*-----------------------------------------------------------*/ - -static void prvSetMACAddress( void ) -{ -struct uip_eth_addr xAddr; - - /* Configure the MAC address in the uIP stack. */ - xAddr.addr[ 0 ] = configMAC_ADDR0; - xAddr.addr[ 1 ] = configMAC_ADDR1; - xAddr.addr[ 2 ] = configMAC_ADDR2; - xAddr.addr[ 3 ] = configMAC_ADDR3; - xAddr.addr[ 4 ] = configMAC_ADDR4; - xAddr.addr[ 5 ] = configMAC_ADDR5; - uip_setethaddr( xAddr ); -} -/*-----------------------------------------------------------*/ - -void vApplicationProcessFormInput( char *pcInputString ) -{ -char *c; -const unsigned long ulLEDNo = 3; - - /* Process the form input sent by the IO page of the served HTML. */ - - c = strstr( pcInputString, "?" ); - if( c ) - { - /* Turn LED's on or off in accordance with the check box status. */ - if( strstr( c, "LED0=1" ) != NULL ) - { - /* Set LED7. */ - vParTestSetLED( ulLEDNo, pdFALSE ); - } - else - { - /* Clear LED7. */ - vParTestSetLED( ulLEDNo, pdTRUE ); - } - } -} - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/uip-conf.h b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/uip-conf.h deleted file mode 100644 index b52b23fed..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/uip-conf.h +++ /dev/null @@ -1,159 +0,0 @@ -/** - * \addtogroup uipopt - * @{ - */ - -/** - * \name Project-specific configuration options - * @{ - * - * uIP has a number of configuration options that can be overridden - * for each project. These are kept in a project-specific uip-conf.h - * file and all configuration names have the prefix UIP_CONF. - */ - -/* - * Copyright (c) 2006, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: uip-conf.h,v 1.6 2006/06/12 08:00:31 adam Exp $ - */ - -/** - * \file - * An example uIP configuration file - * \author - * Adam Dunkels - */ - -#ifndef __UIP_CONF_H__ -#define __UIP_CONF_H__ - -#include - -#define UIP_CONF_EXTERNAL_BUFFER - -/** - * 8 bit datatype - * - * This typedef defines the 8-bit type used throughout uIP. - * - * \hideinitializer - */ -typedef uint8_t u8_t; - -/** - * 16 bit datatype - * - * This typedef defines the 16-bit type used throughout uIP. - * - * \hideinitializer - */ -typedef uint16_t u16_t; - -/** - * Statistics datatype - * - * This typedef defines the dataype used for keeping statistics in - * uIP. - * - * \hideinitializer - */ -typedef unsigned short uip_stats_t; - -/** - * Maximum number of TCP connections. - * - * \hideinitializer - */ -#define UIP_CONF_MAX_CONNECTIONS 40 - -/** - * Maximum number of listening TCP ports. - * - * \hideinitializer - */ -#define UIP_CONF_MAX_LISTENPORTS 40 - -/** - * uIP buffer size. - * - * \hideinitializer - */ -#define UIP_CONF_BUFFER_SIZE 1480 - -/** - * CPU byte order. - * - * \hideinitializer - */ -#define UIP_CONF_BYTE_ORDER LITTLE_ENDIAN - -/** - * Logging on or off - * - * \hideinitializer - */ -#define UIP_CONF_LOGGING 0 - -/** - * UDP support on or off - * - * \hideinitializer - */ -#define UIP_CONF_UDP 0 - -/** - * UDP checksums on or off - * - * \hideinitializer - */ -#define UIP_CONF_UDP_CHECKSUMS 1 - -/** - * uIP statistics on or off - * - * \hideinitializer - */ -#define UIP_CONF_STATISTICS 1 - -/* Here we include the header file for the application(s) we use in - our project. */ -/*#include "smtp.h"*/ -/*#include "hello-world.h"*/ -/*#include "telnetd.h"*/ -#include "webserver.h" -/*#include "dhcpc.h"*/ -/*#include "resolv.h"*/ -/*#include "webclient.h"*/ - -#endif /* __UIP_CONF_H__ */ - -/** @} */ -/** @} */ diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/uip.c b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/uip.c deleted file mode 100644 index d323e99b9..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/uip.c +++ /dev/null @@ -1,1906 +0,0 @@ -#define DEBUG_PRINTF(...) /*printf(__VA_ARGS__)*/ - -/** - * \defgroup uip The uIP TCP/IP stack - * @{ - * - * uIP is an implementation of the TCP/IP protocol stack intended for - * small 8-bit and 16-bit microcontrollers. - * - * uIP provides the necessary protocols for Internet communication, - * with a very small code footprint and RAM requirements - the uIP - * code size is on the order of a few kilobytes and RAM usage is on - * the order of a few hundred bytes. - */ - -/** - * \file - * The uIP TCP/IP stack code. - * \author Adam Dunkels - */ - -/* - * Copyright (c) 2001-2003, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: uip.c,v 1.65 2006/06/11 21:46:39 adam Exp $ - * - */ - -/* - * uIP is a small implementation of the IP, UDP and TCP protocols (as - * well as some basic ICMP stuff). The implementation couples the IP, - * UDP, TCP and the application layers very tightly. To keep the size - * of the compiled code down, this code frequently uses the goto - * statement. While it would be possible to break the uip_process() - * function into many smaller functions, this would increase the code - * size because of the overhead of parameter passing and the fact that - * the optimier would not be as efficient. - * - * The principle is that we have a small buffer, called the uip_buf, - * in which the device driver puts an incoming packet. The TCP/IP - * stack parses the headers in the packet, and calls the - * application. If the remote host has sent data to the application, - * this data is present in the uip_buf and the application read the - * data from there. It is up to the application to put this data into - * a byte stream if needed. The application will not be fed with data - * that is out of sequence. - * - * If the application whishes to send data to the peer, it should put - * its data into the uip_buf. The uip_appdata pointer points to the - * first available byte. The TCP/IP stack will calculate the - * checksums, and fill in the necessary header fields and finally send - * the packet back to the peer. -*/ - -#include "uip.h" -#include "uipopt.h" -#include "uip_arch.h" - -#if UIP_CONF_IPV6 -#include "uip-neighbor.h" -#endif /* UIP_CONF_IPV6 */ - -#include - -/*---------------------------------------------------------------------------*/ -/* Variable definitions. */ - - -/* The IP address of this host. If it is defined to be fixed (by - setting UIP_FIXEDADDR to 1 in uipopt.h), the address is set - here. Otherwise, the address */ -#if UIP_FIXEDADDR > 0 -const uip_ipaddr_t uip_hostaddr = - {HTONS((UIP_IPADDR0 << 8) | UIP_IPADDR1), - HTONS((UIP_IPADDR2 << 8) | UIP_IPADDR3)}; -const uip_ipaddr_t uip_draddr = - {HTONS((UIP_DRIPADDR0 << 8) | UIP_DRIPADDR1), - HTONS((UIP_DRIPADDR2 << 8) | UIP_DRIPADDR3)}; -const uip_ipaddr_t uip_netmask = - {HTONS((UIP_NETMASK0 << 8) | UIP_NETMASK1), - HTONS((UIP_NETMASK2 << 8) | UIP_NETMASK3)}; -#else -uip_ipaddr_t uip_hostaddr, uip_draddr, uip_netmask; -#endif /* UIP_FIXEDADDR */ - -static const uip_ipaddr_t all_ones_addr = -#if UIP_CONF_IPV6 - {0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff}; -#else /* UIP_CONF_IPV6 */ - {0xffff,0xffff}; -#endif /* UIP_CONF_IPV6 */ -static const uip_ipaddr_t all_zeroes_addr = -#if UIP_CONF_IPV6 - {0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000}; -#else /* UIP_CONF_IPV6 */ - {0x0000,0x0000}; -#endif /* UIP_CONF_IPV6 */ - -#if UIP_FIXEDETHADDR -const struct uip_eth_addr uip_ethaddr = {{UIP_ETHADDR0, - UIP_ETHADDR1, - UIP_ETHADDR2, - UIP_ETHADDR3, - UIP_ETHADDR4, - UIP_ETHADDR5}}; -#else -struct uip_eth_addr uip_ethaddr = {{0,0,0,0,0,0}}; -#endif - -#ifndef UIP_CONF_EXTERNAL_BUFFER - -#ifdef __ICCARM__ - #pragma data_alignment=4 - u8_t uip_buf[UIP_BUFSIZE + 2]; /* The packet buffer that contains incoming packets. */ -#else - u8_t uip_buf[UIP_BUFSIZE + 2] ALIGN_STRUCT_END; /* The packet buffer that contains incoming packets. */ -#endif - -#endif /* UIP_CONF_EXTERNAL_BUFFER */ - -void *uip_appdata; /* The uip_appdata pointer points to - application data. */ -void *uip_sappdata; /* The uip_appdata pointer points to - the application data which is to - be sent. */ -#if UIP_URGDATA > 0 -void *uip_urgdata; /* The uip_urgdata pointer points to - urgent data (out-of-band data), if - present. */ -u16_t uip_urglen, uip_surglen; -#endif /* UIP_URGDATA > 0 */ - -u16_t uip_len, uip_slen; - /* The uip_len is either 8 or 16 bits, - depending on the maximum packet - size. */ - -u8_t uip_flags; /* The uip_flags variable is used for - communication between the TCP/IP stack - and the application program. */ -struct uip_conn *uip_conn; /* uip_conn always points to the current - connection. */ - -struct uip_conn uip_conns[UIP_CONNS]; - /* The uip_conns array holds all TCP - connections. */ -u16_t uip_listenports[UIP_LISTENPORTS]; - /* The uip_listenports list all currently - listning ports. */ -#if UIP_UDP -struct uip_udp_conn *uip_udp_conn; -struct uip_udp_conn uip_udp_conns[UIP_UDP_CONNS]; -#endif /* UIP_UDP */ - -static u16_t ipid; /* Ths ipid variable is an increasing - number that is used for the IP ID - field. */ - -void uip_setipid(u16_t id) { ipid = id; } - -static u8_t iss[4]; /* The iss variable is used for the TCP - initial sequence number. */ - -#if UIP_ACTIVE_OPEN -static u16_t lastport; /* Keeps track of the last port used for - a new connection. */ -#endif /* UIP_ACTIVE_OPEN */ - -/* Temporary variables. */ -u8_t uip_acc32[4]; -static u8_t c, opt; -static u16_t tmp16; - -/* Structures and definitions. */ -#define TCP_FIN 0x01 -#define TCP_SYN 0x02 -#define TCP_RST 0x04 -#define TCP_PSH 0x08 -#define TCP_ACK 0x10 -#define TCP_URG 0x20 -#define TCP_CTL 0x3f - -#define TCP_OPT_END 0 /* End of TCP options list */ -#define TCP_OPT_NOOP 1 /* "No-operation" TCP option */ -#define TCP_OPT_MSS 2 /* Maximum segment size TCP option */ - -#define TCP_OPT_MSS_LEN 4 /* Length of TCP MSS option. */ - -#define ICMP_ECHO_REPLY 0 -#define ICMP_ECHO 8 - -#define ICMP6_ECHO_REPLY 129 -#define ICMP6_ECHO 128 -#define ICMP6_NEIGHBOR_SOLICITATION 135 -#define ICMP6_NEIGHBOR_ADVERTISEMENT 136 - -#define ICMP6_FLAG_S (1 << 6) - -#define ICMP6_OPTION_SOURCE_LINK_ADDRESS 1 -#define ICMP6_OPTION_TARGET_LINK_ADDRESS 2 - - -/* Macros. */ -#define BUF ((struct uip_tcpip_hdr *)&uip_buf[UIP_LLH_LEN]) -#define FBUF ((struct uip_tcpip_hdr *)&uip_reassbuf[0]) -#define ICMPBUF ((struct uip_icmpip_hdr *)&uip_buf[UIP_LLH_LEN]) -#define UDPBUF ((struct uip_udpip_hdr *)&uip_buf[UIP_LLH_LEN]) - - -#if UIP_STATISTICS == 1 -struct uip_stats uip_stat; -#define UIP_STAT(s) s -#else -#define UIP_STAT(s) -#endif /* UIP_STATISTICS == 1 */ - -#if UIP_LOGGING == 1 -#include -void uip_log(char *msg); -#define UIP_LOG(m) uip_log(m) -#else -#define UIP_LOG(m) -#endif /* UIP_LOGGING == 1 */ - -#if ! UIP_ARCH_ADD32 -void -uip_add32(u8_t *op32, u16_t op16) -{ - uip_acc32[3] = op32[3] + (op16 & 0xff); - uip_acc32[2] = op32[2] + (op16 >> 8); - uip_acc32[1] = op32[1]; - uip_acc32[0] = op32[0]; - - if(uip_acc32[2] < (op16 >> 8)) { - ++uip_acc32[1]; - if(uip_acc32[1] == 0) { - ++uip_acc32[0]; - } - } - - - if(uip_acc32[3] < (op16 & 0xff)) { - ++uip_acc32[2]; - if(uip_acc32[2] == 0) { - ++uip_acc32[1]; - if(uip_acc32[1] == 0) { - ++uip_acc32[0]; - } - } - } -} - -#endif /* UIP_ARCH_ADD32 */ - -#if ! UIP_ARCH_CHKSUM -/*---------------------------------------------------------------------------*/ -static u16_t -chksum(u16_t sum, const u8_t *data, u16_t len) -{ - u16_t t; - const u8_t *dataptr; - const u8_t *last_byte; - - dataptr = data; - last_byte = data + len - 1; - - while(dataptr < last_byte) { /* At least two more bytes */ - t = (dataptr[0] << 8) + dataptr[1]; - sum += t; - if(sum < t) { - sum++; /* carry */ - } - dataptr += 2; - } - - if(dataptr == last_byte) { - t = (dataptr[0] << 8) + 0; - sum += t; - if(sum < t) { - sum++; /* carry */ - } - } - - /* Return sum in host byte order. */ - return sum; -} -/*---------------------------------------------------------------------------*/ -u16_t -uip_chksum(u16_t *data, u16_t len) -{ - return htons(chksum(0, (u8_t *)data, len)); -} -/*---------------------------------------------------------------------------*/ -#ifndef UIP_ARCH_IPCHKSUM -u16_t -uip_ipchksum(void) -{ - u16_t sum; - - sum = chksum(0, &uip_buf[UIP_LLH_LEN], UIP_IPH_LEN); - DEBUG_PRINTF("uip_ipchksum: sum 0x%04x\n", sum); - return (sum == 0) ? 0xffff : htons(sum); -} -#endif -/*---------------------------------------------------------------------------*/ -static u16_t -upper_layer_chksum(u8_t proto) -{ - u16_t upper_layer_len; - u16_t sum; - -#if UIP_CONF_IPV6 - upper_layer_len = (((u16_t)(BUF->len[0]) << 8) + BUF->len[1]); -#else /* UIP_CONF_IPV6 */ - upper_layer_len = (((u16_t)(BUF->len[0]) << 8) + BUF->len[1]) - UIP_IPH_LEN; -#endif /* UIP_CONF_IPV6 */ - - /* First sum pseudoheader. */ - - /* IP protocol and length fields. This addition cannot carry. */ - sum = upper_layer_len + proto; - /* Sum IP source and destination addresses. */ - sum = chksum(sum, (u8_t *)&BUF->srcipaddr[0], 2 * sizeof(uip_ipaddr_t)); - - /* Sum TCP header and data. */ - sum = chksum(sum, &uip_buf[UIP_IPH_LEN + UIP_LLH_LEN], - upper_layer_len); - - return (sum == 0) ? 0xffff : htons(sum); -} -/*---------------------------------------------------------------------------*/ -#if UIP_CONF_IPV6 -u16_t -uip_icmp6chksum(void) -{ - return upper_layer_chksum(UIP_PROTO_ICMP6); - -} -#endif /* UIP_CONF_IPV6 */ -/*---------------------------------------------------------------------------*/ -u16_t -uip_tcpchksum(void) -{ - return upper_layer_chksum(UIP_PROTO_TCP); -} -/*---------------------------------------------------------------------------*/ -#if UIP_UDP_CHECKSUMS -u16_t -uip_udpchksum(void) -{ - return upper_layer_chksum(UIP_PROTO_UDP); -} -#endif /* UIP_UDP_CHECKSUMS */ -#endif /* UIP_ARCH_CHKSUM */ -/*---------------------------------------------------------------------------*/ -void -uip_init(void) -{ - for(c = 0; c < UIP_LISTENPORTS; ++c) { - uip_listenports[c] = 0; - } - for(c = 0; c < UIP_CONNS; ++c) { - uip_conns[c].tcpstateflags = UIP_CLOSED; - } -#if UIP_ACTIVE_OPEN - lastport = 1024; -#endif /* UIP_ACTIVE_OPEN */ - -#if UIP_UDP - for(c = 0; c < UIP_UDP_CONNS; ++c) { - uip_udp_conns[c].lport = 0; - } -#endif /* UIP_UDP */ - - - /* IPv4 initialization. */ -#if UIP_FIXEDADDR == 0 - /* uip_hostaddr[0] = uip_hostaddr[1] = 0;*/ -#endif /* UIP_FIXEDADDR */ - -} -/*---------------------------------------------------------------------------*/ -#if UIP_ACTIVE_OPEN -struct uip_conn * -uip_connect(uip_ipaddr_t *ripaddr, u16_t rport) -{ - register struct uip_conn *conn, *cconn; - - /* Find an unused local port. */ - again: - ++lastport; - - if(lastport >= 32000) { - lastport = 4096; - } - - /* Check if this port is already in use, and if so try to find - another one. */ - for(c = 0; c < UIP_CONNS; ++c) { - conn = &uip_conns[c]; - if(conn->tcpstateflags != UIP_CLOSED && - conn->lport == htons(lastport)) { - goto again; - } - } - - conn = 0; - for(c = 0; c < UIP_CONNS; ++c) { - cconn = &uip_conns[c]; - if(cconn->tcpstateflags == UIP_CLOSED) { - conn = cconn; - break; - } - if(cconn->tcpstateflags == UIP_TIME_WAIT) { - if(conn == 0 || - cconn->timer > conn->timer) { - conn = cconn; - } - } - } - - if(conn == 0) { - return 0; - } - - conn->tcpstateflags = UIP_SYN_SENT; - - conn->snd_nxt[0] = iss[0]; - conn->snd_nxt[1] = iss[1]; - conn->snd_nxt[2] = iss[2]; - conn->snd_nxt[3] = iss[3]; - - conn->initialmss = conn->mss = UIP_TCP_MSS; - - conn->len = 1; /* TCP length of the SYN is one. */ - conn->nrtx = 0; - conn->timer = 1; /* Send the SYN next time around. */ - conn->rto = UIP_RTO; - conn->sa = 0; - conn->sv = 16; /* Initial value of the RTT variance. */ - conn->lport = htons(lastport); - conn->rport = rport; - uip_ipaddr_copy(&conn->ripaddr, ripaddr); - - return conn; -} -#endif /* UIP_ACTIVE_OPEN */ -/*---------------------------------------------------------------------------*/ -#if UIP_UDP -struct uip_udp_conn * -uip_udp_new(uip_ipaddr_t *ripaddr, u16_t rport) -{ - register struct uip_udp_conn *conn; - - /* Find an unused local port. */ - again: - ++lastport; - - if(lastport >= 32000) { - lastport = 4096; - } - - for(c = 0; c < UIP_UDP_CONNS; ++c) { - if(uip_udp_conns[c].lport == htons(lastport)) { - goto again; - } - } - - - conn = 0; - for(c = 0; c < UIP_UDP_CONNS; ++c) { - if(uip_udp_conns[c].lport == 0) { - conn = &uip_udp_conns[c]; - break; - } - } - - if(conn == 0) { - return 0; - } - - conn->lport = HTONS(lastport); - conn->rport = rport; - if(ripaddr == NULL) { - memset(conn->ripaddr, 0, sizeof(uip_ipaddr_t)); - } else { - uip_ipaddr_copy(&conn->ripaddr, ripaddr); - } - conn->ttl = UIP_TTL; - - return conn; -} -#endif /* UIP_UDP */ -/*---------------------------------------------------------------------------*/ -void -uip_unlisten(u16_t port) -{ - for(c = 0; c < UIP_LISTENPORTS; ++c) { - if(uip_listenports[c] == port) { - uip_listenports[c] = 0; - return; - } - } -} -/*---------------------------------------------------------------------------*/ -void -uip_listen(u16_t port) -{ - for(c = 0; c < UIP_LISTENPORTS; ++c) { - if(uip_listenports[c] == 0) { - uip_listenports[c] = port; - return; - } - } -} -/*---------------------------------------------------------------------------*/ -/* XXX: IP fragment reassembly: not well-tested. */ - -#if UIP_REASSEMBLY && !UIP_CONF_IPV6 -#define UIP_REASS_BUFSIZE (UIP_BUFSIZE - UIP_LLH_LEN) -static u8_t uip_reassbuf[UIP_REASS_BUFSIZE]; -static u8_t uip_reassbitmap[UIP_REASS_BUFSIZE / (8 * 8)]; -static const u8_t bitmap_bits[8] = {0xff, 0x7f, 0x3f, 0x1f, - 0x0f, 0x07, 0x03, 0x01}; -static u16_t uip_reasslen; -static u8_t uip_reassflags; -#define UIP_REASS_FLAG_LASTFRAG 0x01 -static u8_t uip_reasstmr; - -#define IP_MF 0x20 - -static u8_t -uip_reass(void) -{ - u16_t offset, len; - u16_t i; - - /* If ip_reasstmr is zero, no packet is present in the buffer, so we - write the IP header of the fragment into the reassembly - buffer. The timer is updated with the maximum age. */ - if(uip_reasstmr == 0) { - memcpy(uip_reassbuf, &BUF->vhl, UIP_IPH_LEN); - uip_reasstmr = UIP_REASS_MAXAGE; - uip_reassflags = 0; - /* Clear the bitmap. */ - memset(uip_reassbitmap, 0, sizeof(uip_reassbitmap)); - } - - /* Check if the incoming fragment matches the one currently present - in the reasembly buffer. If so, we proceed with copying the - fragment into the buffer. */ - if(BUF->srcipaddr[0] == FBUF->srcipaddr[0] && - BUF->srcipaddr[1] == FBUF->srcipaddr[1] && - BUF->destipaddr[0] == FBUF->destipaddr[0] && - BUF->destipaddr[1] == FBUF->destipaddr[1] && - BUF->ipid[0] == FBUF->ipid[0] && - BUF->ipid[1] == FBUF->ipid[1]) { - - len = (BUF->len[0] << 8) + BUF->len[1] - (BUF->vhl & 0x0f) * 4; - offset = (((BUF->ipoffset[0] & 0x3f) << 8) + BUF->ipoffset[1]) * 8; - - /* If the offset or the offset + fragment length overflows the - reassembly buffer, we discard the entire packet. */ - if(offset > UIP_REASS_BUFSIZE || - offset + len > UIP_REASS_BUFSIZE) { - uip_reasstmr = 0; - goto nullreturn; - } - - /* Copy the fragment into the reassembly buffer, at the right - offset. */ - memcpy(&uip_reassbuf[UIP_IPH_LEN + offset], - (char *)BUF + (int)((BUF->vhl & 0x0f) * 4), - len); - - /* Update the bitmap. */ - if(offset / (8 * 8) == (offset + len) / (8 * 8)) { - /* If the two endpoints are in the same byte, we only update - that byte. */ - - uip_reassbitmap[offset / (8 * 8)] |= - bitmap_bits[(offset / 8 ) & 7] & - ~bitmap_bits[((offset + len) / 8 ) & 7]; - } else { - /* If the two endpoints are in different bytes, we update the - bytes in the endpoints and fill the stuff inbetween with - 0xff. */ - uip_reassbitmap[offset / (8 * 8)] |= - bitmap_bits[(offset / 8 ) & 7]; - for(i = 1 + offset / (8 * 8); i < (offset + len) / (8 * 8); ++i) { - uip_reassbitmap[i] = 0xff; - } - uip_reassbitmap[(offset + len) / (8 * 8)] |= - ~bitmap_bits[((offset + len) / 8 ) & 7]; - } - - /* If this fragment has the More Fragments flag set to zero, we - know that this is the last fragment, so we can calculate the - size of the entire packet. We also set the - IP_REASS_FLAG_LASTFRAG flag to indicate that we have received - the final fragment. */ - - if((BUF->ipoffset[0] & IP_MF) == 0) { - uip_reassflags |= UIP_REASS_FLAG_LASTFRAG; - uip_reasslen = offset + len; - } - - /* Finally, we check if we have a full packet in the buffer. We do - this by checking if we have the last fragment and if all bits - in the bitmap are set. */ - if(uip_reassflags & UIP_REASS_FLAG_LASTFRAG) { - /* Check all bytes up to and including all but the last byte in - the bitmap. */ - for(i = 0; i < uip_reasslen / (8 * 8) - 1; ++i) { - if(uip_reassbitmap[i] != 0xff) { - goto nullreturn; - } - } - /* Check the last byte in the bitmap. It should contain just the - right amount of bits. */ - if(uip_reassbitmap[uip_reasslen / (8 * 8)] != - (u8_t)~bitmap_bits[uip_reasslen / 8 & 7]) { - goto nullreturn; - } - - /* If we have come this far, we have a full packet in the - buffer, so we allocate a pbuf and copy the packet into it. We - also reset the timer. */ - uip_reasstmr = 0; - memcpy(BUF, FBUF, uip_reasslen); - - /* Pretend to be a "normal" (i.e., not fragmented) IP packet - from now on. */ - BUF->ipoffset[0] = BUF->ipoffset[1] = 0; - BUF->len[0] = uip_reasslen >> 8; - BUF->len[1] = uip_reasslen & 0xff; - BUF->ipchksum = 0; - BUF->ipchksum = ~(uip_ipchksum()); - - return uip_reasslen; - } - } - - nullreturn: - return 0; -} -#endif /* UIP_REASSEMBLY */ -/*---------------------------------------------------------------------------*/ -static void -uip_add_rcv_nxt(u16_t n) -{ - uip_add32(uip_conn->rcv_nxt, n); - uip_conn->rcv_nxt[0] = uip_acc32[0]; - uip_conn->rcv_nxt[1] = uip_acc32[1]; - uip_conn->rcv_nxt[2] = uip_acc32[2]; - uip_conn->rcv_nxt[3] = uip_acc32[3]; -} -/*---------------------------------------------------------------------------*/ -void -uip_process(u8_t flag) -{ - register struct uip_conn *uip_connr = uip_conn; - -#if UIP_UDP - if(flag == UIP_UDP_SEND_CONN) { - goto udp_send; - } -#endif /* UIP_UDP */ - - uip_sappdata = uip_appdata = &uip_buf[UIP_IPTCPH_LEN + UIP_LLH_LEN]; - - /* Check if we were invoked because of a poll request for a - particular connection. */ - if(flag == UIP_POLL_REQUEST) { - if((uip_connr->tcpstateflags & UIP_TS_MASK) == UIP_ESTABLISHED && - !uip_outstanding(uip_connr)) { - uip_flags = UIP_POLL; - UIP_APPCALL(); - goto appsend; - } - goto drop; - - /* Check if we were invoked because of the perodic timer fireing. */ - } else if(flag == UIP_TIMER) { -#if UIP_REASSEMBLY - if(uip_reasstmr != 0) { - --uip_reasstmr; - } -#endif /* UIP_REASSEMBLY */ - /* Increase the initial sequence number. */ - if(++iss[3] == 0) { - if(++iss[2] == 0) { - if(++iss[1] == 0) { - ++iss[0]; - } - } - } - - /* Reset the length variables. */ - uip_len = 0; - uip_slen = 0; - - /* Check if the connection is in a state in which we simply wait - for the connection to time out. If so, we increase the - connection's timer and remove the connection if it times - out. */ - if(uip_connr->tcpstateflags == UIP_TIME_WAIT || - uip_connr->tcpstateflags == UIP_FIN_WAIT_2) { - ++(uip_connr->timer); - if(uip_connr->timer == UIP_TIME_WAIT_TIMEOUT) { - uip_connr->tcpstateflags = UIP_CLOSED; - } - } else if(uip_connr->tcpstateflags != UIP_CLOSED) { - /* If the connection has outstanding data, we increase the - connection's timer and see if it has reached the RTO value - in which case we retransmit. */ - if(uip_outstanding(uip_connr)) { - uip_connr->timer = uip_connr->timer - 1; - if(uip_connr->timer == 0) { - if(uip_connr->nrtx == UIP_MAXRTX || - ((uip_connr->tcpstateflags == UIP_SYN_SENT || - uip_connr->tcpstateflags == UIP_SYN_RCVD) && - uip_connr->nrtx == UIP_MAXSYNRTX)) { - uip_connr->tcpstateflags = UIP_CLOSED; - - /* We call UIP_APPCALL() with uip_flags set to - UIP_TIMEDOUT to inform the application that the - connection has timed out. */ - uip_flags = UIP_TIMEDOUT; - UIP_APPCALL(); - - /* We also send a reset packet to the remote host. */ - BUF->flags = TCP_RST | TCP_ACK; - goto tcp_send_nodata; - } - - /* Exponential backoff. */ - uip_connr->timer = UIP_RTO << (uip_connr->nrtx > 4? - 4: - uip_connr->nrtx); - ++(uip_connr->nrtx); - - /* Ok, so we need to retransmit. We do this differently - depending on which state we are in. In ESTABLISHED, we - call upon the application so that it may prepare the - data for the retransmit. In SYN_RCVD, we resend the - SYNACK that we sent earlier and in LAST_ACK we have to - retransmit our FINACK. */ - UIP_STAT(++uip_stat.tcp.rexmit); - switch(uip_connr->tcpstateflags & UIP_TS_MASK) { - case UIP_SYN_RCVD: - /* In the SYN_RCVD state, we should retransmit our - SYNACK. */ - goto tcp_send_synack; - -#if UIP_ACTIVE_OPEN - case UIP_SYN_SENT: - /* In the SYN_SENT state, we retransmit out SYN. */ - BUF->flags = 0; - goto tcp_send_syn; -#endif /* UIP_ACTIVE_OPEN */ - - case UIP_ESTABLISHED: - /* In the ESTABLISHED state, we call upon the application - to do the actual retransmit after which we jump into - the code for sending out the packet (the apprexmit - label). */ - uip_flags = UIP_REXMIT; - UIP_APPCALL(); - goto apprexmit; - - case UIP_FIN_WAIT_1: - case UIP_CLOSING: - case UIP_LAST_ACK: - /* In all these states we should retransmit a FINACK. */ - goto tcp_send_finack; - - } - } - } else if((uip_connr->tcpstateflags & UIP_TS_MASK) == UIP_ESTABLISHED) { - /* If there was no need for a retransmission, we poll the - application for new data. */ - uip_flags = UIP_POLL; - UIP_APPCALL(); - goto appsend; - } - } - goto drop; - } -#if UIP_UDP - if(flag == UIP_UDP_TIMER) { - if(uip_udp_conn->lport != 0) { - uip_conn = NULL; - uip_sappdata = uip_appdata = &uip_buf[UIP_LLH_LEN + UIP_IPUDPH_LEN]; - uip_len = uip_slen = 0; - uip_flags = UIP_POLL; - UIP_UDP_APPCALL(); - goto udp_send; - } else { - goto drop; - } - } -#endif - - /* This is where the input processing starts. */ - UIP_STAT(++uip_stat.ip.recv); - - /* Start of IP input header processing code. */ - -#if UIP_CONF_IPV6 - /* Check validity of the IP header. */ - if((BUF->vtc & 0xf0) != 0x60) { /* IP version and header length. */ - UIP_STAT(++uip_stat.ip.drop); - UIP_STAT(++uip_stat.ip.vhlerr); - UIP_LOG("ipv6: invalid version."); - goto drop; - } -#else /* UIP_CONF_IPV6 */ - /* Check validity of the IP header. */ - if(BUF->vhl != 0x45) { /* IP version and header length. */ - UIP_STAT(++uip_stat.ip.drop); - UIP_STAT(++uip_stat.ip.vhlerr); - UIP_LOG("ip: invalid version or header length."); - goto drop; - } -#endif /* UIP_CONF_IPV6 */ - - /* Check the size of the packet. If the size reported to us in - uip_len is smaller the size reported in the IP header, we assume - that the packet has been corrupted in transit. If the size of - uip_len is larger than the size reported in the IP packet header, - the packet has been padded and we set uip_len to the correct - value.. */ - - if((BUF->len[0] << 8) + BUF->len[1] <= uip_len) { - uip_len = (BUF->len[0] << 8) + BUF->len[1]; -#if UIP_CONF_IPV6 - uip_len += 40; /* The length reported in the IPv6 header is the - length of the payload that follows the - header. However, uIP uses the uip_len variable - for holding the size of the entire packet, - including the IP header. For IPv4 this is not a - problem as the length field in the IPv4 header - contains the length of the entire packet. But - for IPv6 we need to add the size of the IPv6 - header (40 bytes). */ -#endif /* UIP_CONF_IPV6 */ - } else { - UIP_LOG("ip: packet shorter than reported in IP header."); - goto drop; - } - -#if !UIP_CONF_IPV6 - /* Check the fragment flag. */ - if((BUF->ipoffset[0] & 0x3f) != 0 || - BUF->ipoffset[1] != 0) { -#if UIP_REASSEMBLY - uip_len = uip_reass(); - if(uip_len == 0) { - goto drop; - } -#else /* UIP_REASSEMBLY */ - UIP_STAT(++uip_stat.ip.drop); - UIP_STAT(++uip_stat.ip.fragerr); - UIP_LOG("ip: fragment dropped."); - goto drop; -#endif /* UIP_REASSEMBLY */ - } -#endif /* UIP_CONF_IPV6 */ - - if(uip_ipaddr_cmp(uip_hostaddr, all_zeroes_addr)) { - /* If we are configured to use ping IP address configuration and - hasn't been assigned an IP address yet, we accept all ICMP - packets. */ -#if UIP_PINGADDRCONF && !UIP_CONF_IPV6 - if(BUF->proto == UIP_PROTO_ICMP) { - UIP_LOG("ip: possible ping config packet received."); - goto icmp_input; - } else { - UIP_LOG("ip: packet dropped since no address assigned."); - goto drop; - } -#endif /* UIP_PINGADDRCONF */ - - } else { - /* If IP broadcast support is configured, we check for a broadcast - UDP packet, which may be destined to us. */ -#if UIP_BROADCAST - DEBUG_PRINTF("UDP IP checksum 0x%04x\n", uip_ipchksum()); - if(BUF->proto == UIP_PROTO_UDP && - uip_ipaddr_cmp(BUF->destipaddr, all_ones_addr) - /*&& - uip_ipchksum() == 0xffff*/) { - goto udp_input; - } -#endif /* UIP_BROADCAST */ - - /* Check if the packet is destined for our IP address. */ -#if !UIP_CONF_IPV6 - if(!uip_ipaddr_cmp(BUF->destipaddr, uip_hostaddr)) { - UIP_STAT(++uip_stat.ip.drop); - goto drop; - } -#else /* UIP_CONF_IPV6 */ - /* For IPv6, packet reception is a little trickier as we need to - make sure that we listen to certain multicast addresses (all - hosts multicast address, and the solicited-node multicast - address) as well. However, we will cheat here and accept all - multicast packets that are sent to the ff02::/16 addresses. */ - if(!uip_ipaddr_cmp(BUF->destipaddr, uip_hostaddr) && - BUF->destipaddr[0] != HTONS(0xff02)) { - UIP_STAT(++uip_stat.ip.drop); - goto drop; - } -#endif /* UIP_CONF_IPV6 */ - } - -#if !UIP_CONF_IPV6 - if(uip_ipchksum() != 0xffff) { /* Compute and check the IP header - checksum. */ - UIP_STAT(++uip_stat.ip.drop); - UIP_STAT(++uip_stat.ip.chkerr); - UIP_LOG("ip: bad checksum."); - goto drop; - } -#endif /* UIP_CONF_IPV6 */ - - if(BUF->proto == UIP_PROTO_TCP) { /* Check for TCP packet. If so, - proceed with TCP input - processing. */ - goto tcp_input; - } - -#if UIP_UDP - if(BUF->proto == UIP_PROTO_UDP) { - goto udp_input; - } -#endif /* UIP_UDP */ - -#if !UIP_CONF_IPV6 - /* ICMPv4 processing code follows. */ - if(BUF->proto != UIP_PROTO_ICMP) { /* We only allow ICMP packets from - here. */ - UIP_STAT(++uip_stat.ip.drop); - UIP_STAT(++uip_stat.ip.protoerr); - UIP_LOG("ip: neither tcp nor icmp."); - goto drop; - } - -#if UIP_PINGADDRCONF - icmp_input: -#endif /* UIP_PINGADDRCONF */ - UIP_STAT(++uip_stat.icmp.recv); - - /* ICMP echo (i.e., ping) processing. This is simple, we only change - the ICMP type from ECHO to ECHO_REPLY and adjust the ICMP - checksum before we return the packet. */ - if(ICMPBUF->type != ICMP_ECHO) { - UIP_STAT(++uip_stat.icmp.drop); - UIP_STAT(++uip_stat.icmp.typeerr); - UIP_LOG("icmp: not icmp echo."); - goto drop; - } - - /* If we are configured to use ping IP address assignment, we use - the destination IP address of this ping packet and assign it to - ourself. */ -#if UIP_PINGADDRCONF - if((uip_hostaddr[0] | uip_hostaddr[1]) == 0) { - uip_hostaddr[0] = BUF->destipaddr[0]; - uip_hostaddr[1] = BUF->destipaddr[1]; - } -#endif /* UIP_PINGADDRCONF */ - - ICMPBUF->type = ICMP_ECHO_REPLY; - - if(ICMPBUF->icmpchksum >= HTONS(0xffff - (ICMP_ECHO << 8))) { - ICMPBUF->icmpchksum += HTONS(ICMP_ECHO << 8) + 1; - } else { - ICMPBUF->icmpchksum += HTONS(ICMP_ECHO << 8); - } - - /* Swap IP addresses. */ - uip_ipaddr_copy(BUF->destipaddr, BUF->srcipaddr); - uip_ipaddr_copy(BUF->srcipaddr, uip_hostaddr); - - UIP_STAT(++uip_stat.icmp.sent); - goto send; - - /* End of IPv4 input header processing code. */ -#else /* !UIP_CONF_IPV6 */ - - /* This is IPv6 ICMPv6 processing code. */ - DEBUG_PRINTF("icmp6_input: length %d\n", uip_len); - - if(BUF->proto != UIP_PROTO_ICMP6) { /* We only allow ICMPv6 packets from - here. */ - UIP_STAT(++uip_stat.ip.drop); - UIP_STAT(++uip_stat.ip.protoerr); - UIP_LOG("ip: neither tcp nor icmp6."); - goto drop; - } - - UIP_STAT(++uip_stat.icmp.recv); - - /* If we get a neighbor solicitation for our address we should send - a neighbor advertisement message back. */ - if(ICMPBUF->type == ICMP6_NEIGHBOR_SOLICITATION) { - if(uip_ipaddr_cmp(ICMPBUF->icmp6data, uip_hostaddr)) { - - if(ICMPBUF->options[0] == ICMP6_OPTION_SOURCE_LINK_ADDRESS) { - /* Save the sender's address in our neighbor list. */ - uip_neighbor_add(ICMPBUF->srcipaddr, &(ICMPBUF->options[2])); - } - - /* We should now send a neighbor advertisement back to where the - neighbor solicication came from. */ - ICMPBUF->type = ICMP6_NEIGHBOR_ADVERTISEMENT; - ICMPBUF->flags = ICMP6_FLAG_S; /* Solicited flag. */ - - ICMPBUF->reserved1 = ICMPBUF->reserved2 = ICMPBUF->reserved3 = 0; - - uip_ipaddr_copy(ICMPBUF->destipaddr, ICMPBUF->srcipaddr); - uip_ipaddr_copy(ICMPBUF->srcipaddr, uip_hostaddr); - ICMPBUF->options[0] = ICMP6_OPTION_TARGET_LINK_ADDRESS; - ICMPBUF->options[1] = 1; /* Options length, 1 = 8 bytes. */ - memcpy(&(ICMPBUF->options[2]), &uip_ethaddr, sizeof(uip_ethaddr)); - ICMPBUF->icmpchksum = 0; - ICMPBUF->icmpchksum = ~uip_icmp6chksum(); - goto send; - - } - goto drop; - } else if(ICMPBUF->type == ICMP6_ECHO) { - /* ICMP echo (i.e., ping) processing. This is simple, we only - change the ICMP type from ECHO to ECHO_REPLY and update the - ICMP checksum before we return the packet. */ - - ICMPBUF->type = ICMP6_ECHO_REPLY; - - uip_ipaddr_copy(BUF->destipaddr, BUF->srcipaddr); - uip_ipaddr_copy(BUF->srcipaddr, uip_hostaddr); - ICMPBUF->icmpchksum = 0; - ICMPBUF->icmpchksum = ~uip_icmp6chksum(); - - UIP_STAT(++uip_stat.icmp.sent); - goto send; - } else { - DEBUG_PRINTF("Unknown icmp6 message type %d\n", ICMPBUF->type); - UIP_STAT(++uip_stat.icmp.drop); - UIP_STAT(++uip_stat.icmp.typeerr); - UIP_LOG("icmp: unknown ICMP message."); - goto drop; - } - - /* End of IPv6 ICMP processing. */ - -#endif /* !UIP_CONF_IPV6 */ - -#if UIP_UDP - /* UDP input processing. */ - udp_input: - /* UDP processing is really just a hack. We don't do anything to the - UDP/IP headers, but let the UDP application do all the hard - work. If the application sets uip_slen, it has a packet to - send. */ -#if UIP_UDP_CHECKSUMS - uip_len = uip_len - UIP_IPUDPH_LEN; - uip_appdata = &uip_buf[UIP_LLH_LEN + UIP_IPUDPH_LEN]; - if(UDPBUF->udpchksum != 0 && uip_udpchksum() != 0xffff) { - UIP_STAT(++uip_stat.udp.drop); - UIP_STAT(++uip_stat.udp.chkerr); - UIP_LOG("udp: bad checksum."); - goto drop; - } -#else /* UIP_UDP_CHECKSUMS */ - uip_len = uip_len - UIP_IPUDPH_LEN; -#endif /* UIP_UDP_CHECKSUMS */ - - /* Demultiplex this UDP packet between the UDP "connections". */ - for(uip_udp_conn = &uip_udp_conns[0]; - uip_udp_conn < &uip_udp_conns[UIP_UDP_CONNS]; - ++uip_udp_conn) { - /* If the local UDP port is non-zero, the connection is considered - to be used. If so, the local port number is checked against the - destination port number in the received packet. If the two port - numbers match, the remote port number is checked if the - connection is bound to a remote port. Finally, if the - connection is bound to a remote IP address, the source IP - address of the packet is checked. */ - if(uip_udp_conn->lport != 0 && - UDPBUF->destport == uip_udp_conn->lport && - (uip_udp_conn->rport == 0 || - UDPBUF->srcport == uip_udp_conn->rport) && - (uip_ipaddr_cmp(uip_udp_conn->ripaddr, all_zeroes_addr) || - uip_ipaddr_cmp(uip_udp_conn->ripaddr, all_ones_addr) || - uip_ipaddr_cmp(BUF->srcipaddr, uip_udp_conn->ripaddr))) { - goto udp_found; - } - } - UIP_LOG("udp: no matching connection found"); - goto drop; - - udp_found: - UIP_STAT(++uip_stat.udp.recv); - uip_conn = NULL; - uip_flags = UIP_NEWDATA; - uip_sappdata = uip_appdata = &uip_buf[UIP_LLH_LEN + UIP_IPUDPH_LEN]; - uip_slen = 0; - UIP_UDP_APPCALL(); - udp_send: - if(uip_slen == 0) { - goto drop; - } - uip_len = uip_slen + UIP_IPUDPH_LEN; - -#if UIP_CONF_IPV6 - /* For IPv6, the IP length field does not include the IPv6 IP header - length. */ - BUF->len[0] = ((uip_len - UIP_IPH_LEN) >> 8); - BUF->len[1] = ((uip_len - UIP_IPH_LEN) & 0xff); -#else /* UIP_CONF_IPV6 */ - BUF->len[0] = (uip_len >> 8); - BUF->len[1] = (uip_len & 0xff); -#endif /* UIP_CONF_IPV6 */ - - BUF->ttl = uip_udp_conn->ttl; - BUF->proto = UIP_PROTO_UDP; - - UDPBUF->udplen = HTONS(uip_slen + UIP_UDPH_LEN); - UDPBUF->udpchksum = 0; - - BUF->srcport = uip_udp_conn->lport; - BUF->destport = uip_udp_conn->rport; - - uip_ipaddr_copy(BUF->srcipaddr, uip_hostaddr); - uip_ipaddr_copy(BUF->destipaddr, uip_udp_conn->ripaddr); - - uip_appdata = &uip_buf[UIP_LLH_LEN + UIP_IPTCPH_LEN]; - -#if UIP_UDP_CHECKSUMS - /* Calculate UDP checksum. */ - UDPBUF->udpchksum = ~(uip_udpchksum()); - if(UDPBUF->udpchksum == 0) { - UDPBUF->udpchksum = 0xffff; - } -#endif /* UIP_UDP_CHECKSUMS */ - UIP_STAT(++uip_stat.udp.sent); - goto ip_send_nolen; -#endif /* UIP_UDP */ - - /* TCP input processing. */ - tcp_input: - UIP_STAT(++uip_stat.tcp.recv); - - /* Start of TCP input header processing code. */ - - if(uip_tcpchksum() != 0xffff) { /* Compute and check the TCP - checksum. */ - UIP_STAT(++uip_stat.tcp.drop); - UIP_STAT(++uip_stat.tcp.chkerr); - UIP_LOG("tcp: bad checksum."); - goto drop; - } - - - /* Demultiplex this segment. */ - /* First check any active connections. */ - for(uip_connr = &uip_conns[0]; uip_connr <= &uip_conns[UIP_CONNS - 1]; - ++uip_connr) { - if(uip_connr->tcpstateflags != UIP_CLOSED && - BUF->destport == uip_connr->lport && - BUF->srcport == uip_connr->rport && - uip_ipaddr_cmp(BUF->srcipaddr, uip_connr->ripaddr)) { - goto found; - } - } - - /* If we didn't find and active connection that expected the packet, - either this packet is an old duplicate, or this is a SYN packet - destined for a connection in LISTEN. If the SYN flag isn't set, - it is an old packet and we send a RST. */ - if((BUF->flags & TCP_CTL) != TCP_SYN) { - goto reset; - } - - tmp16 = BUF->destport; - /* Next, check listening connections. */ - for(c = 0; c < UIP_LISTENPORTS; ++c) { - if(tmp16 == uip_listenports[c]) - goto found_listen; - } - - /* No matching connection found, so we send a RST packet. */ - UIP_STAT(++uip_stat.tcp.synrst); - reset: - - /* We do not send resets in response to resets. */ - if(BUF->flags & TCP_RST) { - goto drop; - } - - UIP_STAT(++uip_stat.tcp.rst); - - BUF->flags = TCP_RST | TCP_ACK; - uip_len = UIP_IPTCPH_LEN; - BUF->tcpoffset = 5 << 4; - - /* Flip the seqno and ackno fields in the TCP header. */ - c = BUF->seqno[3]; - BUF->seqno[3] = BUF->ackno[3]; - BUF->ackno[3] = c; - - c = BUF->seqno[2]; - BUF->seqno[2] = BUF->ackno[2]; - BUF->ackno[2] = c; - - c = BUF->seqno[1]; - BUF->seqno[1] = BUF->ackno[1]; - BUF->ackno[1] = c; - - c = BUF->seqno[0]; - BUF->seqno[0] = BUF->ackno[0]; - BUF->ackno[0] = c; - - /* We also have to increase the sequence number we are - acknowledging. If the least significant byte overflowed, we need - to propagate the carry to the other bytes as well. */ - if(++BUF->ackno[3] == 0) { - if(++BUF->ackno[2] == 0) { - if(++BUF->ackno[1] == 0) { - ++BUF->ackno[0]; - } - } - } - - /* Swap port numbers. */ - tmp16 = BUF->srcport; - BUF->srcport = BUF->destport; - BUF->destport = tmp16; - - /* Swap IP addresses. */ - uip_ipaddr_copy(BUF->destipaddr, BUF->srcipaddr); - uip_ipaddr_copy(BUF->srcipaddr, uip_hostaddr); - - /* And send out the RST packet! */ - goto tcp_send_noconn; - - /* This label will be jumped to if we matched the incoming packet - with a connection in LISTEN. In that case, we should create a new - connection and send a SYNACK in return. */ - found_listen: - /* First we check if there are any connections avaliable. Unused - connections are kept in the same table as used connections, but - unused ones have the tcpstate set to CLOSED. Also, connections in - TIME_WAIT are kept track of and we'll use the oldest one if no - CLOSED connections are found. Thanks to Eddie C. Dost for a very - nice algorithm for the TIME_WAIT search. */ - uip_connr = 0; - for(c = 0; c < UIP_CONNS; ++c) { - if(uip_conns[c].tcpstateflags == UIP_CLOSED) { - uip_connr = &uip_conns[c]; - break; - } - if(uip_conns[c].tcpstateflags == UIP_TIME_WAIT) { - if(uip_connr == 0 || - uip_conns[c].timer > uip_connr->timer) { - uip_connr = &uip_conns[c]; - } - } - } - - if(uip_connr == 0) { - /* All connections are used already, we drop packet and hope that - the remote end will retransmit the packet at a time when we - have more spare connections. */ - UIP_STAT(++uip_stat.tcp.syndrop); - UIP_LOG("tcp: found no unused connections."); - goto drop; - } - uip_conn = uip_connr; - - /* Fill in the necessary fields for the new connection. */ - uip_connr->rto = uip_connr->timer = UIP_RTO; - uip_connr->sa = 0; - uip_connr->sv = 4; - uip_connr->nrtx = 0; - uip_connr->lport = BUF->destport; - uip_connr->rport = BUF->srcport; - uip_ipaddr_copy(uip_connr->ripaddr, BUF->srcipaddr); - uip_connr->tcpstateflags = UIP_SYN_RCVD; - - uip_connr->snd_nxt[0] = iss[0]; - uip_connr->snd_nxt[1] = iss[1]; - uip_connr->snd_nxt[2] = iss[2]; - uip_connr->snd_nxt[3] = iss[3]; - uip_connr->len = 1; - - /* rcv_nxt should be the seqno from the incoming packet + 1. */ - uip_connr->rcv_nxt[3] = BUF->seqno[3]; - uip_connr->rcv_nxt[2] = BUF->seqno[2]; - uip_connr->rcv_nxt[1] = BUF->seqno[1]; - uip_connr->rcv_nxt[0] = BUF->seqno[0]; - uip_add_rcv_nxt(1); - - /* Parse the TCP MSS option, if present. */ - if((BUF->tcpoffset & 0xf0) > 0x50) { - for(c = 0; c < ((BUF->tcpoffset >> 4) - 5) << 2 ;) { - opt = uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + c]; - if(opt == TCP_OPT_END) { - /* End of options. */ - break; - } else if(opt == TCP_OPT_NOOP) { - ++c; - /* NOP option. */ - } else if(opt == TCP_OPT_MSS && - uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 1 + c] == TCP_OPT_MSS_LEN) { - /* An MSS option with the right option length. */ - tmp16 = ((u16_t)uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 2 + c] << 8) | - (u16_t)uip_buf[UIP_IPTCPH_LEN + UIP_LLH_LEN + 3 + c]; - uip_connr->initialmss = uip_connr->mss = - tmp16 > UIP_TCP_MSS? UIP_TCP_MSS: tmp16; - - /* And we are done processing options. */ - break; - } else { - /* All other options have a length field, so that we easily - can skip past them. */ - if(uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 1 + c] == 0) { - /* If the length field is zero, the options are malformed - and we don't process them further. */ - break; - } - c += uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 1 + c]; - } - } - } - - /* Our response will be a SYNACK. */ -#if UIP_ACTIVE_OPEN - tcp_send_synack: - BUF->flags = TCP_ACK; - - tcp_send_syn: - BUF->flags |= TCP_SYN; -#else /* UIP_ACTIVE_OPEN */ - tcp_send_synack: - BUF->flags = TCP_SYN | TCP_ACK; -#endif /* UIP_ACTIVE_OPEN */ - - /* We send out the TCP Maximum Segment Size option with our - SYNACK. */ - BUF->optdata[0] = TCP_OPT_MSS; - BUF->optdata[1] = TCP_OPT_MSS_LEN; - BUF->optdata[2] = (UIP_TCP_MSS) / 256; - BUF->optdata[3] = (UIP_TCP_MSS) & 255; - uip_len = UIP_IPTCPH_LEN + TCP_OPT_MSS_LEN; - BUF->tcpoffset = ((UIP_TCPH_LEN + TCP_OPT_MSS_LEN) / 4) << 4; - goto tcp_send; - - /* This label will be jumped to if we found an active connection. */ - found: - uip_conn = uip_connr; - uip_flags = 0; - /* We do a very naive form of TCP reset processing; we just accept - any RST and kill our connection. We should in fact check if the - sequence number of this reset is wihtin our advertised window - before we accept the reset. */ - if(BUF->flags & TCP_RST) { - uip_connr->tcpstateflags = UIP_CLOSED; - UIP_LOG("tcp: got reset, aborting connection."); - uip_flags = UIP_ABORT; - UIP_APPCALL(); - goto drop; - } - /* Calculated the length of the data, if the application has sent - any data to us. */ - c = (BUF->tcpoffset >> 4) << 2; - /* uip_len will contain the length of the actual TCP data. This is - calculated by subtracing the length of the TCP header (in - c) and the length of the IP header (20 bytes). */ - uip_len = uip_len - c - UIP_IPH_LEN; - - /* First, check if the sequence number of the incoming packet is - what we're expecting next. If not, we send out an ACK with the - correct numbers in. */ - if(!(((uip_connr->tcpstateflags & UIP_TS_MASK) == UIP_SYN_SENT) && - ((BUF->flags & TCP_CTL) == (TCP_SYN | TCP_ACK)))) { - if((uip_len > 0 || ((BUF->flags & (TCP_SYN | TCP_FIN)) != 0)) && - (BUF->seqno[0] != uip_connr->rcv_nxt[0] || - BUF->seqno[1] != uip_connr->rcv_nxt[1] || - BUF->seqno[2] != uip_connr->rcv_nxt[2] || - BUF->seqno[3] != uip_connr->rcv_nxt[3])) { - goto tcp_send_ack; - } - } - - /* Next, check if the incoming segment acknowledges any outstanding - data. If so, we update the sequence number, reset the length of - the outstanding data, calculate RTT estimations, and reset the - retransmission timer. */ - if((BUF->flags & TCP_ACK) && uip_outstanding(uip_connr)) { - uip_add32(uip_connr->snd_nxt, uip_connr->len); - - if(BUF->ackno[0] == uip_acc32[0] && - BUF->ackno[1] == uip_acc32[1] && - BUF->ackno[2] == uip_acc32[2] && - BUF->ackno[3] == uip_acc32[3]) { - /* Update sequence number. */ - uip_connr->snd_nxt[0] = uip_acc32[0]; - uip_connr->snd_nxt[1] = uip_acc32[1]; - uip_connr->snd_nxt[2] = uip_acc32[2]; - uip_connr->snd_nxt[3] = uip_acc32[3]; - - - /* Do RTT estimation, unless we have done retransmissions. */ - if(uip_connr->nrtx == 0) { - signed char m; - m = uip_connr->rto - uip_connr->timer; - /* This is taken directly from VJs original code in his paper */ - m = m - (uip_connr->sa >> 3); - uip_connr->sa += m; - if(m < 0) { - m = -m; - } - m = m - (uip_connr->sv >> 2); - uip_connr->sv += m; - uip_connr->rto = (uip_connr->sa >> 3) + uip_connr->sv; - - } - /* Set the acknowledged flag. */ - uip_flags = UIP_ACKDATA; - /* Reset the retransmission timer. */ - uip_connr->timer = uip_connr->rto; - - /* Reset length of outstanding data. */ - uip_connr->len = 0; - } - - } - - /* Do different things depending on in what state the connection is. */ - switch(uip_connr->tcpstateflags & UIP_TS_MASK) { - /* CLOSED and LISTEN are not handled here. CLOSE_WAIT is not - implemented, since we force the application to close when the - peer sends a FIN (hence the application goes directly from - ESTABLISHED to LAST_ACK). */ - case UIP_SYN_RCVD: - /* In SYN_RCVD we have sent out a SYNACK in response to a SYN, and - we are waiting for an ACK that acknowledges the data we sent - out the last time. Therefore, we want to have the UIP_ACKDATA - flag set. If so, we enter the ESTABLISHED state. */ - if(uip_flags & UIP_ACKDATA) { - uip_connr->tcpstateflags = UIP_ESTABLISHED; - uip_flags = UIP_CONNECTED; - uip_connr->len = 0; - if(uip_len > 0) { - uip_flags |= UIP_NEWDATA; - uip_add_rcv_nxt(uip_len); - } - uip_slen = 0; - UIP_APPCALL(); - goto appsend; - } - goto drop; -#if UIP_ACTIVE_OPEN - case UIP_SYN_SENT: - /* In SYN_SENT, we wait for a SYNACK that is sent in response to - our SYN. The rcv_nxt is set to sequence number in the SYNACK - plus one, and we send an ACK. We move into the ESTABLISHED - state. */ - if((uip_flags & UIP_ACKDATA) && - (BUF->flags & TCP_CTL) == (TCP_SYN | TCP_ACK)) { - - /* Parse the TCP MSS option, if present. */ - if((BUF->tcpoffset & 0xf0) > 0x50) { - for(c = 0; c < ((BUF->tcpoffset >> 4) - 5) << 2 ;) { - opt = uip_buf[UIP_IPTCPH_LEN + UIP_LLH_LEN + c]; - if(opt == TCP_OPT_END) { - /* End of options. */ - break; - } else if(opt == TCP_OPT_NOOP) { - ++c; - /* NOP option. */ - } else if(opt == TCP_OPT_MSS && - uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 1 + c] == TCP_OPT_MSS_LEN) { - /* An MSS option with the right option length. */ - tmp16 = (uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 2 + c] << 8) | - uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 3 + c]; - uip_connr->initialmss = - uip_connr->mss = tmp16 > UIP_TCP_MSS? UIP_TCP_MSS: tmp16; - - /* And we are done processing options. */ - break; - } else { - /* All other options have a length field, so that we easily - can skip past them. */ - if(uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 1 + c] == 0) { - /* If the length field is zero, the options are malformed - and we don't process them further. */ - break; - } - c += uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 1 + c]; - } - } - } - uip_connr->tcpstateflags = UIP_ESTABLISHED; - uip_connr->rcv_nxt[0] = BUF->seqno[0]; - uip_connr->rcv_nxt[1] = BUF->seqno[1]; - uip_connr->rcv_nxt[2] = BUF->seqno[2]; - uip_connr->rcv_nxt[3] = BUF->seqno[3]; - uip_add_rcv_nxt(1); - uip_flags = UIP_CONNECTED | UIP_NEWDATA; - uip_connr->len = 0; - uip_len = 0; - uip_slen = 0; - UIP_APPCALL(); - goto appsend; - } - /* Inform the application that the connection failed */ - uip_flags = UIP_ABORT; - UIP_APPCALL(); - /* The connection is closed after we send the RST */ - uip_conn->tcpstateflags = UIP_CLOSED; - goto reset; -#endif /* UIP_ACTIVE_OPEN */ - - case UIP_ESTABLISHED: - /* In the ESTABLISHED state, we call upon the application to feed - data into the uip_buf. If the UIP_ACKDATA flag is set, the - application should put new data into the buffer, otherwise we are - retransmitting an old segment, and the application should put that - data into the buffer. - - If the incoming packet is a FIN, we should close the connection on - this side as well, and we send out a FIN and enter the LAST_ACK - state. We require that there is no outstanding data; otherwise the - sequence numbers will be screwed up. */ - - if(BUF->flags & TCP_FIN && !(uip_connr->tcpstateflags & UIP_STOPPED)) { - if(uip_outstanding(uip_connr)) { - goto drop; - } - uip_add_rcv_nxt(1 + uip_len); - uip_flags |= UIP_CLOSE; - if(uip_len > 0) { - uip_flags |= UIP_NEWDATA; - } - UIP_APPCALL(); - uip_connr->len = 1; - uip_connr->tcpstateflags = UIP_LAST_ACK; - uip_connr->nrtx = 0; - tcp_send_finack: - BUF->flags = TCP_FIN | TCP_ACK; - goto tcp_send_nodata; - } - - /* Check the URG flag. If this is set, the segment carries urgent - data that we must pass to the application. */ - if((BUF->flags & TCP_URG) != 0) { -#if UIP_URGDATA > 0 - uip_urglen = (BUF->urgp[0] << 8) | BUF->urgp[1]; - if(uip_urglen > uip_len) { - /* There is more urgent data in the next segment to come. */ - uip_urglen = uip_len; - } - uip_add_rcv_nxt(uip_urglen); - uip_len -= uip_urglen; - uip_urgdata = uip_appdata; - uip_appdata += uip_urglen; - } else { - uip_urglen = 0; -#else /* UIP_URGDATA > 0 */ - uip_appdata = ((char *)uip_appdata) + ((BUF->urgp[0] << 8) | BUF->urgp[1]); - uip_len -= (BUF->urgp[0] << 8) | BUF->urgp[1]; -#endif /* UIP_URGDATA > 0 */ - } - - /* If uip_len > 0 we have TCP data in the packet, and we flag this - by setting the UIP_NEWDATA flag and update the sequence number - we acknowledge. If the application has stopped the dataflow - using uip_stop(), we must not accept any data packets from the - remote host. */ - if(uip_len > 0 && !(uip_connr->tcpstateflags & UIP_STOPPED)) { - uip_flags |= UIP_NEWDATA; - uip_add_rcv_nxt(uip_len); - } - - /* Check if the available buffer space advertised by the other end - is smaller than the initial MSS for this connection. If so, we - set the current MSS to the window size to ensure that the - application does not send more data than the other end can - handle. - - If the remote host advertises a zero window, we set the MSS to - the initial MSS so that the application will send an entire MSS - of data. This data will not be acknowledged by the receiver, - and the application will retransmit it. This is called the - "persistent timer" and uses the retransmission mechanim. - */ - tmp16 = ((u16_t)BUF->wnd[0] << 8) + (u16_t)BUF->wnd[1]; - if(tmp16 > uip_connr->initialmss || - tmp16 == 0) { - tmp16 = uip_connr->initialmss; - } - uip_connr->mss = tmp16; - - /* If this packet constitutes an ACK for outstanding data (flagged - by the UIP_ACKDATA flag, we should call the application since it - might want to send more data. If the incoming packet had data - from the peer (as flagged by the UIP_NEWDATA flag), the - application must also be notified. - - When the application is called, the global variable uip_len - contains the length of the incoming data. The application can - access the incoming data through the global pointer - uip_appdata, which usually points UIP_IPTCPH_LEN + UIP_LLH_LEN - bytes into the uip_buf array. - - If the application wishes to send any data, this data should be - put into the uip_appdata and the length of the data should be - put into uip_len. If the application don't have any data to - send, uip_len must be set to 0. */ - if(uip_flags & (UIP_NEWDATA | UIP_ACKDATA)) { - uip_slen = 0; - UIP_APPCALL(); - - appsend: - - if(uip_flags & UIP_ABORT) { - uip_slen = 0; - uip_connr->tcpstateflags = UIP_CLOSED; - BUF->flags = TCP_RST | TCP_ACK; - goto tcp_send_nodata; - } - - if(uip_flags & UIP_CLOSE) { - uip_slen = 0; - uip_connr->len = 1; - uip_connr->tcpstateflags = UIP_FIN_WAIT_1; - uip_connr->nrtx = 0; - BUF->flags = TCP_FIN | TCP_ACK; - goto tcp_send_nodata; - } - - /* If uip_slen > 0, the application has data to be sent. */ - if(uip_slen > 0) { - - /* If the connection has acknowledged data, the contents of - the ->len variable should be discarded. */ - if((uip_flags & UIP_ACKDATA) != 0) { - uip_connr->len = 0; - } - - /* If the ->len variable is non-zero the connection has - already data in transit and cannot send anymore right - now. */ - if(uip_connr->len == 0) { - - /* The application cannot send more than what is allowed by - the mss (the minumum of the MSS and the available - window). */ - if(uip_slen > uip_connr->mss) { - uip_slen = uip_connr->mss; - } - - /* Remember how much data we send out now so that we know - when everything has been acknowledged. */ - uip_connr->len = uip_slen; - } else { - - /* If the application already had unacknowledged data, we - make sure that the application does not send (i.e., - retransmit) out more than it previously sent out. */ - uip_slen = uip_connr->len; - } - } - uip_connr->nrtx = 0; - apprexmit: - uip_appdata = uip_sappdata; - - /* If the application has data to be sent, or if the incoming - packet had new data in it, we must send out a packet. */ - if(uip_slen > 0 && uip_connr->len > 0) { - /* Add the length of the IP and TCP headers. */ - uip_len = uip_connr->len + UIP_TCPIP_HLEN; - /* We always set the ACK flag in response packets. */ - BUF->flags = TCP_ACK | TCP_PSH; - /* Send the packet. */ - goto tcp_send_noopts; - } - /* If there is no data to send, just send out a pure ACK if - there is newdata. */ - if(uip_flags & UIP_NEWDATA) { - uip_len = UIP_TCPIP_HLEN; - BUF->flags = TCP_ACK; - goto tcp_send_noopts; - } - } - goto drop; - case UIP_LAST_ACK: - /* We can close this connection if the peer has acknowledged our - FIN. This is indicated by the UIP_ACKDATA flag. */ - if(uip_flags & UIP_ACKDATA) { - uip_connr->tcpstateflags = UIP_CLOSED; - uip_flags = UIP_CLOSE; - UIP_APPCALL(); - } - break; - - case UIP_FIN_WAIT_1: - /* The application has closed the connection, but the remote host - hasn't closed its end yet. Thus we do nothing but wait for a - FIN from the other side. */ - if(uip_len > 0) { - uip_add_rcv_nxt(uip_len); - } - if(BUF->flags & TCP_FIN) { - if(uip_flags & UIP_ACKDATA) { - uip_connr->tcpstateflags = UIP_TIME_WAIT; - uip_connr->timer = 0; - uip_connr->len = 0; - } else { - uip_connr->tcpstateflags = UIP_CLOSING; - } - uip_add_rcv_nxt(1); - uip_flags = UIP_CLOSE; - UIP_APPCALL(); - goto tcp_send_ack; - } else if(uip_flags & UIP_ACKDATA) { - uip_connr->tcpstateflags = UIP_FIN_WAIT_2; - uip_connr->len = 0; - goto drop; - } - if(uip_len > 0) { - goto tcp_send_ack; - } - goto drop; - - case UIP_FIN_WAIT_2: - if(uip_len > 0) { - uip_add_rcv_nxt(uip_len); - } - if(BUF->flags & TCP_FIN) { - uip_connr->tcpstateflags = UIP_TIME_WAIT; - uip_connr->timer = 0; - uip_add_rcv_nxt(1); - uip_flags = UIP_CLOSE; - UIP_APPCALL(); - goto tcp_send_ack; - } - if(uip_len > 0) { - goto tcp_send_ack; - } - goto drop; - - case UIP_TIME_WAIT: - goto tcp_send_ack; - - case UIP_CLOSING: - if(uip_flags & UIP_ACKDATA) { - uip_connr->tcpstateflags = UIP_TIME_WAIT; - uip_connr->timer = 0; - } - } - goto drop; - - - /* We jump here when we are ready to send the packet, and just want - to set the appropriate TCP sequence numbers in the TCP header. */ - tcp_send_ack: - BUF->flags = TCP_ACK; - tcp_send_nodata: - uip_len = UIP_IPTCPH_LEN; - tcp_send_noopts: - BUF->tcpoffset = (UIP_TCPH_LEN / 4) << 4; - tcp_send: - /* We're done with the input processing. We are now ready to send a - reply. Our job is to fill in all the fields of the TCP and IP - headers before calculating the checksum and finally send the - packet. */ - BUF->ackno[0] = uip_connr->rcv_nxt[0]; - BUF->ackno[1] = uip_connr->rcv_nxt[1]; - BUF->ackno[2] = uip_connr->rcv_nxt[2]; - BUF->ackno[3] = uip_connr->rcv_nxt[3]; - - BUF->seqno[0] = uip_connr->snd_nxt[0]; - BUF->seqno[1] = uip_connr->snd_nxt[1]; - BUF->seqno[2] = uip_connr->snd_nxt[2]; - BUF->seqno[3] = uip_connr->snd_nxt[3]; - - BUF->proto = UIP_PROTO_TCP; - - BUF->srcport = uip_connr->lport; - BUF->destport = uip_connr->rport; - - uip_ipaddr_copy(BUF->srcipaddr, uip_hostaddr); - uip_ipaddr_copy(BUF->destipaddr, uip_connr->ripaddr); - - if(uip_connr->tcpstateflags & UIP_STOPPED) { - /* If the connection has issued uip_stop(), we advertise a zero - window so that the remote host will stop sending data. */ - BUF->wnd[0] = BUF->wnd[1] = 0; - } else { - BUF->wnd[0] = ((UIP_RECEIVE_WINDOW) >> 8); - BUF->wnd[1] = ((UIP_RECEIVE_WINDOW) & 0xff); - } - - tcp_send_noconn: - BUF->ttl = UIP_TTL; -#if UIP_CONF_IPV6 - /* For IPv6, the IP length field does not include the IPv6 IP header - length. */ - BUF->len[0] = ((uip_len - UIP_IPH_LEN) >> 8); - BUF->len[1] = ((uip_len - UIP_IPH_LEN) & 0xff); -#else /* UIP_CONF_IPV6 */ - BUF->len[0] = (uip_len >> 8); - BUF->len[1] = (uip_len & 0xff); -#endif /* UIP_CONF_IPV6 */ - - BUF->urgp[0] = BUF->urgp[1] = 0; - - /* Calculate TCP checksum. */ - BUF->tcpchksum = 0; - BUF->tcpchksum = ~(uip_tcpchksum()); - -#if UIP_UDP - ip_send_nolen: -#endif /* UIP_UDP */ - -#if UIP_CONF_IPV6 - BUF->vtc = 0x60; - BUF->tcflow = 0x00; - BUF->flow = 0x00; -#else /* UIP_CONF_IPV6 */ - BUF->vhl = 0x45; - BUF->tos = 0; - BUF->ipoffset[0] = BUF->ipoffset[1] = 0; - ++ipid; - BUF->ipid[0] = ipid >> 8; - BUF->ipid[1] = ipid & 0xff; - /* Calculate IP checksum. */ - BUF->ipchksum = 0; - BUF->ipchksum = ~(uip_ipchksum()); - DEBUG_PRINTF("uip ip_send_nolen: chkecum 0x%04x\n", uip_ipchksum()); -#endif /* UIP_CONF_IPV6 */ - - UIP_STAT(++uip_stat.tcp.sent); - send: - DEBUG_PRINTF("Sending packet with length %d (%d)\n", uip_len, - (BUF->len[0] << 8) | BUF->len[1]); - - UIP_STAT(++uip_stat.ip.sent); - /* Return and let the caller do the actual transmission. */ - uip_flags = 0; - return; - drop: - uip_len = 0; - uip_flags = 0; - return; -} -/*---------------------------------------------------------------------------*/ -u16_t -htons(u16_t val) -{ - return HTONS(val); -} -/*---------------------------------------------------------------------------*/ -void -uip_send(const void *data, int len) -{ - if(len > 0) { - uip_slen = len; - if(data != uip_sappdata) { - memcpy(uip_sappdata, (data), uip_slen); - } - } -} -/** @} */ diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/uip.h b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/uip.h deleted file mode 100644 index 82da6fbd2..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/uip.h +++ /dev/null @@ -1,1638 +0,0 @@ - -/** - * \addtogroup uip - * @{ - */ - -/** - * \file - * Header file for the uIP TCP/IP stack. - * \author Adam Dunkels - * - * The uIP TCP/IP stack header file contains definitions for a number - * of C macros that are used by uIP programs as well as internal uIP - * structures, TCP/IP header structures and function declarations. - * - */ - - -/* - * Copyright (c) 2001-2003, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: uip.h,v 1.40 2006/06/08 07:12:07 adam Exp $ - * - */ - -#ifndef __UIP_H__ -#define __UIP_H__ - -#include "uipopt.h" - -/** - * Repressentation of an IP address. - * - */ -typedef u16_t uip_ip4addr_t[2]; -typedef u16_t uip_ip6addr_t[8]; -#if UIP_CONF_IPV6 -typedef uip_ip6addr_t uip_ipaddr_t; -#else /* UIP_CONF_IPV6 */ -typedef uip_ip4addr_t uip_ipaddr_t; -#endif /* UIP_CONF_IPV6 */ - -/*---------------------------------------------------------------------------*/ -/* First, the functions that should be called from the - * system. Initialization, the periodic timer and incoming packets are - * handled by the following three functions. - */ - -/** - * \defgroup uipconffunc uIP configuration functions - * @{ - * - * The uIP configuration functions are used for setting run-time - * parameters in uIP such as IP addresses. - */ - -/** - * Set the IP address of this host. - * - * The IP address is represented as a 4-byte array where the first - * octet of the IP address is put in the first member of the 4-byte - * array. - * - * Example: - \code - - uip_ipaddr_t addr; - - uip_ipaddr(&addr, 192,168,1,2); - uip_sethostaddr(&addr); - - \endcode - * \param addr A pointer to an IP address of type uip_ipaddr_t; - * - * \sa uip_ipaddr() - * - * \hideinitializer - */ -#define uip_sethostaddr(addr) uip_ipaddr_copy(uip_hostaddr, (addr)) - -/** - * Get the IP address of this host. - * - * The IP address is represented as a 4-byte array where the first - * octet of the IP address is put in the first member of the 4-byte - * array. - * - * Example: - \code - uip_ipaddr_t hostaddr; - - uip_gethostaddr(&hostaddr); - \endcode - * \param addr A pointer to a uip_ipaddr_t variable that will be - * filled in with the currently configured IP address. - * - * \hideinitializer - */ -#define uip_gethostaddr(addr) uip_ipaddr_copy((addr), uip_hostaddr) - -/** - * Set the default router's IP address. - * - * \param addr A pointer to a uip_ipaddr_t variable containing the IP - * address of the default router. - * - * \sa uip_ipaddr() - * - * \hideinitializer - */ -#define uip_setdraddr(addr) uip_ipaddr_copy(uip_draddr, (addr)) - -/** - * Set the netmask. - * - * \param addr A pointer to a uip_ipaddr_t variable containing the IP - * address of the netmask. - * - * \sa uip_ipaddr() - * - * \hideinitializer - */ -#define uip_setnetmask(addr) uip_ipaddr_copy(uip_netmask, (addr)) - - -/** - * Get the default router's IP address. - * - * \param addr A pointer to a uip_ipaddr_t variable that will be - * filled in with the IP address of the default router. - * - * \hideinitializer - */ -#define uip_getdraddr(addr) uip_ipaddr_copy((addr), uip_draddr) - -/** - * Get the netmask. - * - * \param addr A pointer to a uip_ipaddr_t variable that will be - * filled in with the value of the netmask. - * - * \hideinitializer - */ -#define uip_getnetmask(addr) uip_ipaddr_copy((addr), uip_netmask) - -/** @} */ - -/** - * \defgroup uipinit uIP initialization functions - * @{ - * - * The uIP initialization functions are used for booting uIP. - */ - -/** - * uIP initialization function. - * - * This function should be called at boot up to initilize the uIP - * TCP/IP stack. - */ -void uip_init(void); - -/** - * uIP initialization function. - * - * This function may be used at boot time to set the initial ip_id. - */ -void uip_setipid(u16_t id); - -/** @} */ - -/** - * \defgroup uipdevfunc uIP device driver functions - * @{ - * - * These functions are used by a network device driver for interacting - * with uIP. - */ - -/** - * Process an incoming packet. - * - * This function should be called when the device driver has received - * a packet from the network. The packet from the device driver must - * be present in the uip_buf buffer, and the length of the packet - * should be placed in the uip_len variable. - * - * When the function returns, there may be an outbound packet placed - * in the uip_buf packet buffer. If so, the uip_len variable is set to - * the length of the packet. If no packet is to be sent out, the - * uip_len variable is set to 0. - * - * The usual way of calling the function is presented by the source - * code below. - \code - uip_len = devicedriver_poll(); - if(uip_len > 0) { - uip_input(); - if(uip_len > 0) { - devicedriver_send(); - } - } - \endcode - * - * \note If you are writing a uIP device driver that needs ARP - * (Address Resolution Protocol), e.g., when running uIP over - * Ethernet, you will need to call the uIP ARP code before calling - * this function: - \code - #define BUF ((struct uip_eth_hdr *)&uip_buf[0]) - uip_len = ethernet_devicedrver_poll(); - if(uip_len > 0) { - if(BUF->type == HTONS(UIP_ETHTYPE_IP)) { - uip_arp_ipin(); - uip_input(); - if(uip_len > 0) { - uip_arp_out(); - ethernet_devicedriver_send(); - } - } else if(BUF->type == HTONS(UIP_ETHTYPE_ARP)) { - uip_arp_arpin(); - if(uip_len > 0) { - ethernet_devicedriver_send(); - } - } - \endcode - * - * \hideinitializer - */ -#define uip_input() uip_process(UIP_DATA) - -/** - * Periodic processing for a connection identified by its number. - * - * This function does the necessary periodic processing (timers, - * polling) for a uIP TCP conneciton, and should be called when the - * periodic uIP timer goes off. It should be called for every - * connection, regardless of whether they are open of closed. - * - * When the function returns, it may have an outbound packet waiting - * for service in the uIP packet buffer, and if so the uip_len - * variable is set to a value larger than zero. The device driver - * should be called to send out the packet. - * - * The ususal way of calling the function is through a for() loop like - * this: - \code - for(i = 0; i < UIP_CONNS; ++i) { - uip_periodic(i); - if(uip_len > 0) { - devicedriver_send(); - } - } - \endcode - * - * \note If you are writing a uIP device driver that needs ARP - * (Address Resolution Protocol), e.g., when running uIP over - * Ethernet, you will need to call the uip_arp_out() function before - * calling the device driver: - \code - for(i = 0; i < UIP_CONNS; ++i) { - uip_periodic(i); - if(uip_len > 0) { - uip_arp_out(); - ethernet_devicedriver_send(); - } - } - \endcode - * - * \param conn The number of the connection which is to be periodically polled. - * - * \hideinitializer - */ -#define uip_periodic(conn) do { uip_conn = &uip_conns[conn]; \ - uip_process(UIP_TIMER); } while (0) - -/** - * - * - */ -#define uip_conn_active(conn) (uip_conns[conn].tcpstateflags != UIP_CLOSED) - -/** - * Perform periodic processing for a connection identified by a pointer - * to its structure. - * - * Same as uip_periodic() but takes a pointer to the actual uip_conn - * struct instead of an integer as its argument. This function can be - * used to force periodic processing of a specific connection. - * - * \param conn A pointer to the uip_conn struct for the connection to - * be processed. - * - * \hideinitializer - */ -#define uip_periodic_conn(conn) do { uip_conn = conn; \ - uip_process(UIP_TIMER); } while (0) - -/** - * Reuqest that a particular connection should be polled. - * - * Similar to uip_periodic_conn() but does not perform any timer - * processing. The application is polled for new data. - * - * \param conn A pointer to the uip_conn struct for the connection to - * be processed. - * - * \hideinitializer - */ -#define uip_poll_conn(conn) do { uip_conn = conn; \ - uip_process(UIP_POLL_REQUEST); } while (0) - - -#if UIP_UDP -/** - * Periodic processing for a UDP connection identified by its number. - * - * This function is essentially the same as uip_periodic(), but for - * UDP connections. It is called in a similar fashion as the - * uip_periodic() function: - \code - for(i = 0; i < UIP_UDP_CONNS; i++) { - uip_udp_periodic(i); - if(uip_len > 0) { - devicedriver_send(); - } - } - \endcode - * - * \note As for the uip_periodic() function, special care has to be - * taken when using uIP together with ARP and Ethernet: - \code - for(i = 0; i < UIP_UDP_CONNS; i++) { - uip_udp_periodic(i); - if(uip_len > 0) { - uip_arp_out(); - ethernet_devicedriver_send(); - } - } - \endcode - * - * \param conn The number of the UDP connection to be processed. - * - * \hideinitializer - */ -#define uip_udp_periodic(conn) do { uip_udp_conn = &uip_udp_conns[conn]; \ - uip_process(UIP_UDP_TIMER); } while (0) - -/** - * Periodic processing for a UDP connection identified by a pointer to - * its structure. - * - * Same as uip_udp_periodic() but takes a pointer to the actual - * uip_conn struct instead of an integer as its argument. This - * function can be used to force periodic processing of a specific - * connection. - * - * \param conn A pointer to the uip_udp_conn struct for the connection - * to be processed. - * - * \hideinitializer - */ -#define uip_udp_periodic_conn(conn) do { uip_udp_conn = conn; \ - uip_process(UIP_UDP_TIMER); } while (0) - - -#endif /* UIP_UDP */ - -/** - * The uIP packet buffer. - * - * The uip_buf array is used to hold incoming and outgoing - * packets. The device driver should place incoming data into this - * buffer. When sending data, the device driver should read the link - * level headers and the TCP/IP headers from this buffer. The size of - * the link level headers is configured by the UIP_LLH_LEN define. - * - * \note The application data need not be placed in this buffer, so - * the device driver must read it from the place pointed to by the - * uip_appdata pointer as illustrated by the following example: - \code - void - devicedriver_send(void) - { - hwsend(&uip_buf[0], UIP_LLH_LEN); - if(uip_len <= UIP_LLH_LEN + UIP_TCPIP_HLEN) { - hwsend(&uip_buf[UIP_LLH_LEN], uip_len - UIP_LLH_LEN); - } else { - hwsend(&uip_buf[UIP_LLH_LEN], UIP_TCPIP_HLEN); - hwsend(uip_appdata, uip_len - UIP_TCPIP_HLEN - UIP_LLH_LEN); - } - } - \endcode - */ -#ifndef UIP_CONF_EXTERNAL_BUFFER - extern u8_t uip_buf[UIP_BUFSIZE+2]; -#else - extern unsigned char *uip_buf; -#endif - -/** @} */ - -/*---------------------------------------------------------------------------*/ -/* Functions that are used by the uIP application program. Opening and - * closing connections, sending and receiving data, etc. is all - * handled by the functions below. -*/ -/** - * \defgroup uipappfunc uIP application functions - * @{ - * - * Functions used by an application running of top of uIP. - */ - -/** - * Start listening to the specified port. - * - * \note Since this function expects the port number in network byte - * order, a conversion using HTONS() or htons() is necessary. - * - \code - uip_listen(HTONS(80)); - \endcode - * - * \param port A 16-bit port number in network byte order. - */ -void uip_listen(u16_t port); - -/** - * Stop listening to the specified port. - * - * \note Since this function expects the port number in network byte - * order, a conversion using HTONS() or htons() is necessary. - * - \code - uip_unlisten(HTONS(80)); - \endcode - * - * \param port A 16-bit port number in network byte order. - */ -void uip_unlisten(u16_t port); - -/** - * Connect to a remote host using TCP. - * - * This function is used to start a new connection to the specified - * port on the specied host. It allocates a new connection identifier, - * sets the connection to the SYN_SENT state and sets the - * retransmission timer to 0. This will cause a TCP SYN segment to be - * sent out the next time this connection is periodically processed, - * which usually is done within 0.5 seconds after the call to - * uip_connect(). - * - * \note This function is avaliable only if support for active open - * has been configured by defining UIP_ACTIVE_OPEN to 1 in uipopt.h. - * - * \note Since this function requires the port number to be in network - * byte order, a conversion using HTONS() or htons() is necessary. - * - \code - uip_ipaddr_t ipaddr; - - uip_ipaddr(&ipaddr, 192,168,1,2); - uip_connect(&ipaddr, HTONS(80)); - \endcode - * - * \param ripaddr The IP address of the remote hot. - * - * \param port A 16-bit port number in network byte order. - * - * \return A pointer to the uIP connection identifier for the new connection, - * or NULL if no connection could be allocated. - * - */ -struct uip_conn *uip_connect(uip_ipaddr_t *ripaddr, u16_t port); - - - -/** - * \internal - * - * Check if a connection has outstanding (i.e., unacknowledged) data. - * - * \param conn A pointer to the uip_conn structure for the connection. - * - * \hideinitializer - */ -#define uip_outstanding(conn) ((conn)->len) - -/** - * Send data on the current connection. - * - * This function is used to send out a single segment of TCP - * data. Only applications that have been invoked by uIP for event - * processing can send data. - * - * The amount of data that actually is sent out after a call to this - * funcion is determined by the maximum amount of data TCP allows. uIP - * will automatically crop the data so that only the appropriate - * amount of data is sent. The function uip_mss() can be used to query - * uIP for the amount of data that actually will be sent. - * - * \note This function does not guarantee that the sent data will - * arrive at the destination. If the data is lost in the network, the - * application will be invoked with the uip_rexmit() event being - * set. The application will then have to resend the data using this - * function. - * - * \param data A pointer to the data which is to be sent. - * - * \param len The maximum amount of data bytes to be sent. - * - * \hideinitializer - */ -void uip_send(const void *data, int len); - -/** - * The length of any incoming data that is currently avaliable (if avaliable) - * in the uip_appdata buffer. - * - * The test function uip_data() must first be used to check if there - * is any data available at all. - * - * \hideinitializer - */ -/*void uip_datalen(void);*/ -#define uip_datalen() uip_len - -/** - * The length of any out-of-band data (urgent data) that has arrived - * on the connection. - * - * \note The configuration parameter UIP_URGDATA must be set for this - * function to be enabled. - * - * \hideinitializer - */ -#define uip_urgdatalen() uip_urglen - -/** - * Close the current connection. - * - * This function will close the current connection in a nice way. - * - * \hideinitializer - */ -#define uip_close() (uip_flags = UIP_CLOSE) - -/** - * Abort the current connection. - * - * This function will abort (reset) the current connection, and is - * usually used when an error has occured that prevents using the - * uip_close() function. - * - * \hideinitializer - */ -#define uip_abort() (uip_flags = UIP_ABORT) - -/** - * Tell the sending host to stop sending data. - * - * This function will close our receiver's window so that we stop - * receiving data for the current connection. - * - * \hideinitializer - */ -#define uip_stop() (uip_conn->tcpstateflags |= UIP_STOPPED) - -/** - * Find out if the current connection has been previously stopped with - * uip_stop(). - * - * \hideinitializer - */ -#define uip_stopped(conn) ((conn)->tcpstateflags & UIP_STOPPED) - -/** - * Restart the current connection, if is has previously been stopped - * with uip_stop(). - * - * This function will open the receiver's window again so that we - * start receiving data for the current connection. - * - * \hideinitializer - */ -#define uip_restart() do { uip_flags |= UIP_NEWDATA; \ - uip_conn->tcpstateflags &= ~UIP_STOPPED; \ - } while(0) - - -/* uIP tests that can be made to determine in what state the current - connection is, and what the application function should do. */ - -/** - * Is the current connection a UDP connection? - * - * This function checks whether the current connection is a UDP connection. - * - * \hideinitializer - * - */ -#define uip_udpconnection() (uip_conn == NULL) - -/** - * Is new incoming data available? - * - * Will reduce to non-zero if there is new data for the application - * present at the uip_appdata pointer. The size of the data is - * avaliable through the uip_len variable. - * - * \hideinitializer - */ -#define uip_newdata() (uip_flags & UIP_NEWDATA) - -/** - * Has previously sent data been acknowledged? - * - * Will reduce to non-zero if the previously sent data has been - * acknowledged by the remote host. This means that the application - * can send new data. - * - * \hideinitializer - */ -#define uip_acked() (uip_flags & UIP_ACKDATA) - -/** - * Has the connection just been connected? - * - * Reduces to non-zero if the current connection has been connected to - * a remote host. This will happen both if the connection has been - * actively opened (with uip_connect()) or passively opened (with - * uip_listen()). - * - * \hideinitializer - */ -#define uip_connected() (uip_flags & UIP_CONNECTED) - -/** - * Has the connection been closed by the other end? - * - * Is non-zero if the connection has been closed by the remote - * host. The application may then do the necessary clean-ups. - * - * \hideinitializer - */ -#define uip_closed() (uip_flags & UIP_CLOSE) - -/** - * Has the connection been aborted by the other end? - * - * Non-zero if the current connection has been aborted (reset) by the - * remote host. - * - * \hideinitializer - */ -#define uip_aborted() (uip_flags & UIP_ABORT) - -/** - * Has the connection timed out? - * - * Non-zero if the current connection has been aborted due to too many - * retransmissions. - * - * \hideinitializer - */ -#define uip_timedout() (uip_flags & UIP_TIMEDOUT) - -/** - * Do we need to retransmit previously data? - * - * Reduces to non-zero if the previously sent data has been lost in - * the network, and the application should retransmit it. The - * application should send the exact same data as it did the last - * time, using the uip_send() function. - * - * \hideinitializer - */ -#define uip_rexmit() (uip_flags & UIP_REXMIT) - -/** - * Is the connection being polled by uIP? - * - * Is non-zero if the reason the application is invoked is that the - * current connection has been idle for a while and should be - * polled. - * - * The polling event can be used for sending data without having to - * wait for the remote host to send data. - * - * \hideinitializer - */ -#define uip_poll() (uip_flags & UIP_POLL) - -/** - * Get the initial maxium segment size (MSS) of the current - * connection. - * - * \hideinitializer - */ -#define uip_initialmss() (uip_conn->initialmss) - -/** - * Get the current maxium segment size that can be sent on the current - * connection. - * - * The current maxiumum segment size that can be sent on the - * connection is computed from the receiver's window and the MSS of - * the connection (which also is available by calling - * uip_initialmss()). - * - * \hideinitializer - */ -#define uip_mss() (uip_conn->mss) - -/** - * Set up a new UDP connection. - * - * This function sets up a new UDP connection. The function will - * automatically allocate an unused local port for the new - * connection. However, another port can be chosen by using the - * uip_udp_bind() call, after the uip_udp_new() function has been - * called. - * - * Example: - \code - uip_ipaddr_t addr; - struct uip_udp_conn *c; - - uip_ipaddr(&addr, 192,168,2,1); - c = uip_udp_new(&addr, HTONS(12345)); - if(c != NULL) { - uip_udp_bind(c, HTONS(12344)); - } - \endcode - * \param ripaddr The IP address of the remote host. - * - * \param rport The remote port number in network byte order. - * - * \return The uip_udp_conn structure for the new connection or NULL - * if no connection could be allocated. - */ -struct uip_udp_conn *uip_udp_new(uip_ipaddr_t *ripaddr, u16_t rport); - -/** - * Removed a UDP connection. - * - * \param conn A pointer to the uip_udp_conn structure for the connection. - * - * \hideinitializer - */ -#define uip_udp_remove(conn) (conn)->lport = 0 - -/** - * Bind a UDP connection to a local port. - * - * \param conn A pointer to the uip_udp_conn structure for the - * connection. - * - * \param port The local port number, in network byte order. - * - * \hideinitializer - */ -#define uip_udp_bind(conn, port) (conn)->lport = port - -/** - * Send a UDP datagram of length len on the current connection. - * - * This function can only be called in response to a UDP event (poll - * or newdata). The data must be present in the uip_buf buffer, at the - * place pointed to by the uip_appdata pointer. - * - * \param len The length of the data in the uip_buf buffer. - * - * \hideinitializer - */ -#define uip_udp_send(len) uip_send((char *)uip_appdata, len) - -/** @} */ - -/* uIP convenience and converting functions. */ - -/** - * \defgroup uipconvfunc uIP conversion functions - * @{ - * - * These functions can be used for converting between different data - * formats used by uIP. - */ - -/** - * Construct an IP address from four bytes. - * - * This function constructs an IP address of the type that uIP handles - * internally from four bytes. The function is handy for specifying IP - * addresses to use with e.g. the uip_connect() function. - * - * Example: - \code - uip_ipaddr_t ipaddr; - struct uip_conn *c; - - uip_ipaddr(&ipaddr, 192,168,1,2); - c = uip_connect(&ipaddr, HTONS(80)); - \endcode - * - * \param addr A pointer to a uip_ipaddr_t variable that will be - * filled in with the IP address. - * - * \param addr0 The first octet of the IP address. - * \param addr1 The second octet of the IP address. - * \param addr2 The third octet of the IP address. - * \param addr3 The forth octet of the IP address. - * - * \hideinitializer - */ -#define uip_ipaddr(addr, addr0,addr1,addr2,addr3) do { \ - ((u16_t *)(addr))[0] = HTONS(((addr0) << 8) | (addr1)); \ - ((u16_t *)(addr))[1] = HTONS(((addr2) << 8) | (addr3)); \ - } while(0) - -/** - * Construct an IPv6 address from eight 16-bit words. - * - * This function constructs an IPv6 address. - * - * \hideinitializer - */ -#define uip_ip6addr(addr, addr0,addr1,addr2,addr3,addr4,addr5,addr6,addr7) do { \ - ((u16_t *)(addr))[0] = HTONS((addr0)); \ - ((u16_t *)(addr))[1] = HTONS((addr1)); \ - ((u16_t *)(addr))[2] = HTONS((addr2)); \ - ((u16_t *)(addr))[3] = HTONS((addr3)); \ - ((u16_t *)(addr))[4] = HTONS((addr4)); \ - ((u16_t *)(addr))[5] = HTONS((addr5)); \ - ((u16_t *)(addr))[6] = HTONS((addr6)); \ - ((u16_t *)(addr))[7] = HTONS((addr7)); \ - } while(0) - -/** - * Copy an IP address to another IP address. - * - * Copies an IP address from one place to another. - * - * Example: - \code - uip_ipaddr_t ipaddr1, ipaddr2; - - uip_ipaddr(&ipaddr1, 192,16,1,2); - uip_ipaddr_copy(&ipaddr2, &ipaddr1); - \endcode - * - * \param dest The destination for the copy. - * \param src The source from where to copy. - * - * \hideinitializer - */ -#if !UIP_CONF_IPV6 -#define uip_ipaddr_copy(dest, src) do { \ - ((u16_t *)dest)[0] = ((u16_t *)src)[0]; \ - ((u16_t *)dest)[1] = ((u16_t *)src)[1]; \ - } while(0) -#else /* !UIP_CONF_IPV6 */ -#define uip_ipaddr_copy(dest, src) memcpy(dest, src, sizeof(uip_ip6addr_t)) -#endif /* !UIP_CONF_IPV6 */ - -/** - * Compare two IP addresses - * - * Compares two IP addresses. - * - * Example: - \code - uip_ipaddr_t ipaddr1, ipaddr2; - - uip_ipaddr(&ipaddr1, 192,16,1,2); - if(uip_ipaddr_cmp(&ipaddr2, &ipaddr1)) { - printf("They are the same"); - } - \endcode - * - * \param addr1 The first IP address. - * \param addr2 The second IP address. - * - * \hideinitializer - */ -#if !UIP_CONF_IPV6 -#define uip_ipaddr_cmp(addr1, addr2) (((u16_t *)addr1)[0] == ((u16_t *)addr2)[0] && \ - ((u16_t *)addr1)[1] == ((u16_t *)addr2)[1]) -#else /* !UIP_CONF_IPV6 */ -#define uip_ipaddr_cmp(addr1, addr2) (memcmp(addr1, addr2, sizeof(uip_ip6addr_t)) == 0) -#endif /* !UIP_CONF_IPV6 */ - -/** - * Compare two IP addresses with netmasks - * - * Compares two IP addresses with netmasks. The masks are used to mask - * out the bits that are to be compared. - * - * Example: - \code - uip_ipaddr_t ipaddr1, ipaddr2, mask; - - uip_ipaddr(&mask, 255,255,255,0); - uip_ipaddr(&ipaddr1, 192,16,1,2); - uip_ipaddr(&ipaddr2, 192,16,1,3); - if(uip_ipaddr_maskcmp(&ipaddr1, &ipaddr2, &mask)) { - printf("They are the same"); - } - \endcode - * - * \param addr1 The first IP address. - * \param addr2 The second IP address. - * \param mask The netmask. - * - * \hideinitializer - */ -#define uip_ipaddr_maskcmp(addr1, addr2, mask) \ - (((((u16_t *)addr1)[0] & ((u16_t *)mask)[0]) == \ - (((u16_t *)addr2)[0] & ((u16_t *)mask)[0])) && \ - ((((u16_t *)addr1)[1] & ((u16_t *)mask)[1]) == \ - (((u16_t *)addr2)[1] & ((u16_t *)mask)[1]))) - - -/** - * Mask out the network part of an IP address. - * - * Masks out the network part of an IP address, given the address and - * the netmask. - * - * Example: - \code - uip_ipaddr_t ipaddr1, ipaddr2, netmask; - - uip_ipaddr(&ipaddr1, 192,16,1,2); - uip_ipaddr(&netmask, 255,255,255,0); - uip_ipaddr_mask(&ipaddr2, &ipaddr1, &netmask); - \endcode - * - * In the example above, the variable "ipaddr2" will contain the IP - * address 192.168.1.0. - * - * \param dest Where the result is to be placed. - * \param src The IP address. - * \param mask The netmask. - * - * \hideinitializer - */ -#define uip_ipaddr_mask(dest, src, mask) do { \ - ((u16_t *)dest)[0] = ((u16_t *)src)[0] & ((u16_t *)mask)[0]; \ - ((u16_t *)dest)[1] = ((u16_t *)src)[1] & ((u16_t *)mask)[1]; \ - } while(0) - -/** - * Pick the first octet of an IP address. - * - * Picks out the first octet of an IP address. - * - * Example: - \code - uip_ipaddr_t ipaddr; - u8_t octet; - - uip_ipaddr(&ipaddr, 1,2,3,4); - octet = uip_ipaddr1(&ipaddr); - \endcode - * - * In the example above, the variable "octet" will contain the value 1. - * - * \hideinitializer - */ -#define uip_ipaddr1(addr) (htons(((u16_t *)(addr))[0]) >> 8) - -/** - * Pick the second octet of an IP address. - * - * Picks out the second octet of an IP address. - * - * Example: - \code - uip_ipaddr_t ipaddr; - u8_t octet; - - uip_ipaddr(&ipaddr, 1,2,3,4); - octet = uip_ipaddr2(&ipaddr); - \endcode - * - * In the example above, the variable "octet" will contain the value 2. - * - * \hideinitializer - */ -#define uip_ipaddr2(addr) (htons(((u16_t *)(addr))[0]) & 0xff) - -/** - * Pick the third octet of an IP address. - * - * Picks out the third octet of an IP address. - * - * Example: - \code - uip_ipaddr_t ipaddr; - u8_t octet; - - uip_ipaddr(&ipaddr, 1,2,3,4); - octet = uip_ipaddr3(&ipaddr); - \endcode - * - * In the example above, the variable "octet" will contain the value 3. - * - * \hideinitializer - */ -#define uip_ipaddr3(addr) (htons(((u16_t *)(addr))[1]) >> 8) - -/** - * Pick the fourth octet of an IP address. - * - * Picks out the fourth octet of an IP address. - * - * Example: - \code - uip_ipaddr_t ipaddr; - u8_t octet; - - uip_ipaddr(&ipaddr, 1,2,3,4); - octet = uip_ipaddr4(&ipaddr); - \endcode - * - * In the example above, the variable "octet" will contain the value 4. - * - * \hideinitializer - */ -#define uip_ipaddr4(addr) (htons(((u16_t *)(addr))[1]) & 0xff) - -/** - * Convert 16-bit quantity from host byte order to network byte order. - * - * This macro is primarily used for converting constants from host - * byte order to network byte order. For converting variables to - * network byte order, use the htons() function instead. - * - * \hideinitializer - */ -#ifndef HTONS -# if UIP_BYTE_ORDER == UIP_BIG_ENDIAN -# define HTONS(n) (n) -# else /* UIP_BYTE_ORDER == UIP_BIG_ENDIAN */ -# define HTONS(n) (u16_t)((((u16_t) (n)) << 8) | (((u16_t) (n)) >> 8)) -# endif /* UIP_BYTE_ORDER == UIP_BIG_ENDIAN */ -#else -#error "HTONS already defined!" -#endif /* HTONS */ - -/** - * Convert 16-bit quantity from host byte order to network byte order. - * - * This function is primarily used for converting variables from host - * byte order to network byte order. For converting constants to - * network byte order, use the HTONS() macro instead. - */ -#ifndef htons -u16_t htons(u16_t val); -#endif /* htons */ -#ifndef ntohs -#define ntohs htons -#endif - -/** @} */ - -/** - * Pointer to the application data in the packet buffer. - * - * This pointer points to the application data when the application is - * called. If the application wishes to send data, the application may - * use this space to write the data into before calling uip_send(). - */ -extern void *uip_appdata; - -#if UIP_URGDATA > 0 -/* u8_t *uip_urgdata: - * - * This pointer points to any urgent data that has been received. Only - * present if compiled with support for urgent data (UIP_URGDATA). - */ -extern void *uip_urgdata; -#endif /* UIP_URGDATA > 0 */ - - -/** - * \defgroup uipdrivervars Variables used in uIP device drivers - * @{ - * - * uIP has a few global variables that are used in device drivers for - * uIP. - */ - -/** - * The length of the packet in the uip_buf buffer. - * - * The global variable uip_len holds the length of the packet in the - * uip_buf buffer. - * - * When the network device driver calls the uIP input function, - * uip_len should be set to the length of the packet in the uip_buf - * buffer. - * - * When sending packets, the device driver should use the contents of - * the uip_len variable to determine the length of the outgoing - * packet. - * - */ -extern u16_t uip_len; - -/** @} */ - -#if UIP_URGDATA > 0 -extern u16_t uip_urglen, uip_surglen; -#endif /* UIP_URGDATA > 0 */ - - -/** - * Representation of a uIP TCP connection. - * - * The uip_conn structure is used for identifying a connection. All - * but one field in the structure are to be considered read-only by an - * application. The only exception is the appstate field whos purpose - * is to let the application store application-specific state (e.g., - * file pointers) for the connection. The type of this field is - * configured in the "uipopt.h" header file. - */ -struct uip_conn { - uip_ipaddr_t ripaddr; /**< The IP address of the remote host. */ - - u16_t lport; /**< The local TCP port, in network byte order. */ - u16_t rport; /**< The local remote TCP port, in network byte - order. */ - - u8_t rcv_nxt[4]; /**< The sequence number that we expect to - receive next. */ - u8_t snd_nxt[4]; /**< The sequence number that was last sent by - us. */ - u16_t len; /**< Length of the data that was previously sent. */ - u16_t mss; /**< Current maximum segment size for the - connection. */ - u16_t initialmss; /**< Initial maximum segment size for the - connection. */ - u8_t sa; /**< Retransmission time-out calculation state - variable. */ - u8_t sv; /**< Retransmission time-out calculation state - variable. */ - u8_t rto; /**< Retransmission time-out. */ - u8_t tcpstateflags; /**< TCP state and flags. */ - u8_t timer; /**< The retransmission timer. */ - u8_t nrtx; /**< The number of retransmissions for the last - segment sent. */ - - /** The application state. */ - uip_tcp_appstate_t appstate; -}; - - -/** - * Pointer to the current TCP connection. - * - * The uip_conn pointer can be used to access the current TCP - * connection. - */ -extern struct uip_conn *uip_conn; -/* The array containing all uIP connections. */ -extern struct uip_conn uip_conns[UIP_CONNS]; -/** - * \addtogroup uiparch - * @{ - */ - -/** - * 4-byte array used for the 32-bit sequence number calculations. - */ -extern u8_t uip_acc32[4]; - -/** @} */ - - -#if UIP_UDP -/** - * Representation of a uIP UDP connection. - */ -struct uip_udp_conn { - uip_ipaddr_t ripaddr; /**< The IP address of the remote peer. */ - u16_t lport; /**< The local port number in network byte order. */ - u16_t rport; /**< The remote port number in network byte order. */ - u8_t ttl; /**< Default time-to-live. */ - - /** The application state. */ - uip_udp_appstate_t appstate; -}; - -/** - * The current UDP connection. - */ -extern struct uip_udp_conn *uip_udp_conn; -extern struct uip_udp_conn uip_udp_conns[UIP_UDP_CONNS]; -#endif /* UIP_UDP */ - -/** - * The structure holding the TCP/IP statistics that are gathered if - * UIP_STATISTICS is set to 1. - * - */ -struct uip_stats { - struct { - uip_stats_t drop; /**< Number of dropped packets at the IP - layer. */ - uip_stats_t recv; /**< Number of received packets at the IP - layer. */ - uip_stats_t sent; /**< Number of sent packets at the IP - layer. */ - uip_stats_t vhlerr; /**< Number of packets dropped due to wrong - IP version or header length. */ - uip_stats_t hblenerr; /**< Number of packets dropped due to wrong - IP length, high byte. */ - uip_stats_t lblenerr; /**< Number of packets dropped due to wrong - IP length, low byte. */ - uip_stats_t fragerr; /**< Number of packets dropped since they - were IP fragments. */ - uip_stats_t chkerr; /**< Number of packets dropped due to IP - checksum errors. */ - uip_stats_t protoerr; /**< Number of packets dropped since they - were neither ICMP, UDP nor TCP. */ - } ip; /**< IP statistics. */ - struct { - uip_stats_t drop; /**< Number of dropped ICMP packets. */ - uip_stats_t recv; /**< Number of received ICMP packets. */ - uip_stats_t sent; /**< Number of sent ICMP packets. */ - uip_stats_t typeerr; /**< Number of ICMP packets with a wrong - type. */ - } icmp; /**< ICMP statistics. */ - struct { - uip_stats_t drop; /**< Number of dropped TCP segments. */ - uip_stats_t recv; /**< Number of recived TCP segments. */ - uip_stats_t sent; /**< Number of sent TCP segments. */ - uip_stats_t chkerr; /**< Number of TCP segments with a bad - checksum. */ - uip_stats_t ackerr; /**< Number of TCP segments with a bad ACK - number. */ - uip_stats_t rst; /**< Number of recevied TCP RST (reset) segments. */ - uip_stats_t rexmit; /**< Number of retransmitted TCP segments. */ - uip_stats_t syndrop; /**< Number of dropped SYNs due to too few - connections was avaliable. */ - uip_stats_t synrst; /**< Number of SYNs for closed ports, - triggering a RST. */ - } tcp; /**< TCP statistics. */ -#if UIP_UDP - struct { - uip_stats_t drop; /**< Number of dropped UDP segments. */ - uip_stats_t recv; /**< Number of recived UDP segments. */ - uip_stats_t sent; /**< Number of sent UDP segments. */ - uip_stats_t chkerr; /**< Number of UDP segments with a bad - checksum. */ - } udp; /**< UDP statistics. */ -#endif /* UIP_UDP */ -}; - -/** - * The uIP TCP/IP statistics. - * - * This is the variable in which the uIP TCP/IP statistics are gathered. - */ -extern struct uip_stats uip_stat; - - -/*---------------------------------------------------------------------------*/ -/* All the stuff below this point is internal to uIP and should not be - * used directly by an application or by a device driver. - */ -/*---------------------------------------------------------------------------*/ -/* u8_t uip_flags: - * - * When the application is called, uip_flags will contain the flags - * that are defined in this file. Please read below for more - * infomation. - */ -extern u8_t uip_flags; - -/* The following flags may be set in the global variable uip_flags - before calling the application callback. The UIP_ACKDATA, - UIP_NEWDATA, and UIP_CLOSE flags may both be set at the same time, - whereas the others are mutualy exclusive. Note that these flags - should *NOT* be accessed directly, but only through the uIP - functions/macros. */ - -#define UIP_ACKDATA 1 /* Signifies that the outstanding data was - acked and the application should send - out new data instead of retransmitting - the last data. */ -#define UIP_NEWDATA 2 /* Flags the fact that the peer has sent - us new data. */ -#define UIP_REXMIT 4 /* Tells the application to retransmit the - data that was last sent. */ -#define UIP_POLL 8 /* Used for polling the application, to - check if the application has data that - it wants to send. */ -#define UIP_CLOSE 16 /* The remote host has closed the - connection, thus the connection has - gone away. Or the application signals - that it wants to close the - connection. */ -#define UIP_ABORT 32 /* The remote host has aborted the - connection, thus the connection has - gone away. Or the application signals - that it wants to abort the - connection. */ -#define UIP_CONNECTED 64 /* We have got a connection from a remote - host and have set up a new connection - for it, or an active connection has - been successfully established. */ - -#define UIP_TIMEDOUT 128 /* The connection has been aborted due to - too many retransmissions. */ - -/* uip_process(flag): - * - * The actual uIP function which does all the work. - */ -void uip_process(u8_t flag); - -/* The following flags are passed as an argument to the uip_process() - function. They are used to distinguish between the two cases where - uip_process() is called. It can be called either because we have - incoming data that should be processed, or because the periodic - timer has fired. These values are never used directly, but only in - the macrose defined in this file. */ - -#define UIP_DATA 1 /* Tells uIP that there is incoming - data in the uip_buf buffer. The - length of the data is stored in the - global variable uip_len. */ -#define UIP_TIMER 2 /* Tells uIP that the periodic timer - has fired. */ -#define UIP_POLL_REQUEST 3 /* Tells uIP that a connection should - be polled. */ -#define UIP_UDP_SEND_CONN 4 /* Tells uIP that a UDP datagram - should be constructed in the - uip_buf buffer. */ -#if UIP_UDP -#define UIP_UDP_TIMER 5 -#endif /* UIP_UDP */ - -/* The TCP states used in the uip_conn->tcpstateflags. */ -#define UIP_CLOSED 0 -#define UIP_SYN_RCVD 1 -#define UIP_SYN_SENT 2 -#define UIP_ESTABLISHED 3 -#define UIP_FIN_WAIT_1 4 -#define UIP_FIN_WAIT_2 5 -#define UIP_CLOSING 6 -#define UIP_TIME_WAIT 7 -#define UIP_LAST_ACK 8 -#define UIP_TS_MASK 15 - -#define UIP_STOPPED 16 - -/* The TCP and IP headers. */ - -#ifdef __ICCARM__ - #pragma pack(1) -#endif - -struct uip_tcpip_hdr { -#if UIP_CONF_IPV6 - /* IPv6 header. */ - u8_t vtc, - tcflow; - u16_t flow; - u8_t len[2]; - u8_t proto, ttl; - uip_ip6addr_t srcipaddr, destipaddr; -#else /* UIP_CONF_IPV6 */ - /* IPv4 header. */ - u8_t vhl, - tos, - len[2], - ipid[2], - ipoffset[2], - ttl, - proto; - u16_t ipchksum; - u16_t srcipaddr[2], - destipaddr[2]; -#endif /* UIP_CONF_IPV6 */ - - /* TCP header. */ - u16_t srcport, - destport; - u8_t seqno[4], - ackno[4], - tcpoffset, - flags, - wnd[2]; - u16_t tcpchksum; - u8_t urgp[2]; - u8_t optdata[4]; -} PACK_STRUCT_END; - -#ifdef __ICCARM__ - #pragma pack() -#endif - -/* The ICMP and IP headers. */ -#ifdef __ICCARM__ - #pragma pack(1) -#endif - -struct uip_icmpip_hdr { -#if UIP_CONF_IPV6 - /* IPv6 header. */ - u8_t vtc, - tcf; - u16_t flow; - u8_t len[2]; - u8_t proto, ttl; - uip_ip6addr_t srcipaddr, destipaddr; -#else /* UIP_CONF_IPV6 */ - /* IPv4 header. */ - u8_t vhl, - tos, - len[2], - ipid[2], - ipoffset[2], - ttl, - proto; - u16_t ipchksum; - u16_t srcipaddr[2], - destipaddr[2]; -#endif /* UIP_CONF_IPV6 */ - - /* ICMP (echo) header. */ - u8_t type, icode; - u16_t icmpchksum; -#if !UIP_CONF_IPV6 - u16_t id, seqno; -#else /* !UIP_CONF_IPV6 */ - u8_t flags, reserved1, reserved2, reserved3; - u8_t icmp6data[16]; - u8_t options[1]; -#endif /* !UIP_CONF_IPV6 */ -} PACK_STRUCT_END; - -#ifdef __ICCARM__ - #pragma pack() -#endif - - -/* The UDP and IP headers. */ -#ifdef __ICCARM__ - #pragma pack(1) -#endif - -struct uip_udpip_hdr { -#if UIP_CONF_IPV6 - /* IPv6 header. */ - u8_t vtc, - tcf; - u16_t flow; - u8_t len[2]; - u8_t proto, ttl; - uip_ip6addr_t srcipaddr, destipaddr; -#else /* UIP_CONF_IPV6 */ - /* IP header. */ - u8_t vhl, - tos, - len[2], - ipid[2], - ipoffset[2], - ttl, - proto; - u16_t ipchksum; - u16_t srcipaddr[2], - destipaddr[2]; -#endif /* UIP_CONF_IPV6 */ - - /* UDP header. */ - u16_t srcport, - destport; - u16_t udplen; - u16_t udpchksum; -} PACK_STRUCT_END; - -#ifdef __ICCARM__ - #pragma pack() -#endif - - - -/** - * The buffer size available for user data in the \ref uip_buf buffer. - * - * This macro holds the available size for user data in the \ref - * uip_buf buffer. The macro is intended to be used for checking - * bounds of available user data. - * - * Example: - \code - snprintf(uip_appdata, UIP_APPDATA_SIZE, "%u\n", i); - \endcode - * - * \hideinitializer - */ -#define UIP_APPDATA_SIZE (UIP_BUFSIZE - UIP_LLH_LEN - UIP_TCPIP_HLEN) - - -#define UIP_PROTO_ICMP 1 -#define UIP_PROTO_TCP 6 -#define UIP_PROTO_UDP 17 -#define UIP_PROTO_ICMP6 58 - -/* Header sizes. */ -#if UIP_CONF_IPV6 -#define UIP_IPH_LEN 40 -#else /* UIP_CONF_IPV6 */ -#define UIP_IPH_LEN 20 /* Size of IP header */ -#endif /* UIP_CONF_IPV6 */ -#define UIP_UDPH_LEN 8 /* Size of UDP header */ -#define UIP_TCPH_LEN 20 /* Size of TCP header */ -#define UIP_IPUDPH_LEN (UIP_UDPH_LEN + UIP_IPH_LEN) /* Size of IP + - UDP - header */ -#define UIP_IPTCPH_LEN (UIP_TCPH_LEN + UIP_IPH_LEN) /* Size of IP + - TCP - header */ -#define UIP_TCPIP_HLEN UIP_IPTCPH_LEN - - -#if UIP_FIXEDADDR -extern const uip_ipaddr_t uip_hostaddr, uip_netmask, uip_draddr; -#else /* UIP_FIXEDADDR */ -extern uip_ipaddr_t uip_hostaddr, uip_netmask, uip_draddr; -#endif /* UIP_FIXEDADDR */ - - - -/** - * Representation of a 48-bit Ethernet address. - */ -#ifdef __ICCARM__ - #pragma pack(1) -#endif - -struct uip_eth_addr { - u8_t addr[6]; -} PACK_STRUCT_END; - -#ifdef __ICCARM__ - #pragma pack() -#endif - -/** - * Calculate the Internet checksum over a buffer. - * - * The Internet checksum is the one's complement of the one's - * complement sum of all 16-bit words in the buffer. - * - * See RFC1071. - * - * \param buf A pointer to the buffer over which the checksum is to be - * computed. - * - * \param len The length of the buffer over which the checksum is to - * be computed. - * - * \return The Internet checksum of the buffer. - */ -u16_t uip_chksum(u16_t *buf, u16_t len); - -/** - * Calculate the IP header checksum of the packet header in uip_buf. - * - * The IP header checksum is the Internet checksum of the 20 bytes of - * the IP header. - * - * \return The IP header checksum of the IP header in the uip_buf - * buffer. - */ -u16_t uip_ipchksum(void); - -/** - * Calculate the TCP checksum of the packet in uip_buf and uip_appdata. - * - * The TCP checksum is the Internet checksum of data contents of the - * TCP segment, and a pseudo-header as defined in RFC793. - * - * \return The TCP checksum of the TCP segment in uip_buf and pointed - * to by uip_appdata. - */ -u16_t uip_tcpchksum(void); - -/** - * Calculate the UDP checksum of the packet in uip_buf and uip_appdata. - * - * The UDP checksum is the Internet checksum of data contents of the - * UDP segment, and a pseudo-header as defined in RFC768. - * - * \return The UDP checksum of the UDP segment in uip_buf and pointed - * to by uip_appdata. - */ -u16_t uip_udpchksum(void); - - -#endif /* __UIP_H__ */ - - -/** @} */ diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/uip_arch.h b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/uip_arch.h deleted file mode 100644 index 5ea45787c..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/uip_arch.h +++ /dev/null @@ -1,138 +0,0 @@ -/** - * \addtogroup uip - * {@ - */ - -/** - * \defgroup uiparch Architecture specific uIP functions - * @{ - * - * The functions in the architecture specific module implement the IP - * check sum and 32-bit additions. - * - * The IP checksum calculation is the most computationally expensive - * operation in the TCP/IP stack and it therefore pays off to - * implement this in efficient assembler. The purpose of the uip-arch - * module is to let the checksum functions to be implemented in - * architecture specific assembler. - * - */ - -/** - * \file - * Declarations of architecture specific functions. - * \author Adam Dunkels - */ - -/* - * Copyright (c) 2001, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: uip_arch.h,v 1.2 2006/06/07 09:15:19 adam Exp $ - * - */ - -#ifndef __UIP_ARCH_H__ -#define __UIP_ARCH_H__ - -#include "uip.h" - -/** - * Carry out a 32-bit addition. - * - * Because not all architectures for which uIP is intended has native - * 32-bit arithmetic, uIP uses an external C function for doing the - * required 32-bit additions in the TCP protocol processing. This - * function should add the two arguments and place the result in the - * global variable uip_acc32. - * - * \note The 32-bit integer pointed to by the op32 parameter and the - * result in the uip_acc32 variable are in network byte order (big - * endian). - * - * \param op32 A pointer to a 4-byte array representing a 32-bit - * integer in network byte order (big endian). - * - * \param op16 A 16-bit integer in host byte order. - */ -void uip_add32(u8_t *op32, u16_t op16); - -/** - * Calculate the Internet checksum over a buffer. - * - * The Internet checksum is the one's complement of the one's - * complement sum of all 16-bit words in the buffer. - * - * See RFC1071. - * - * \note This function is not called in the current version of uIP, - * but future versions might make use of it. - * - * \param buf A pointer to the buffer over which the checksum is to be - * computed. - * - * \param len The length of the buffer over which the checksum is to - * be computed. - * - * \return The Internet checksum of the buffer. - */ -u16_t uip_chksum(u16_t *buf, u16_t len); - -/** - * Calculate the IP header checksum of the packet header in uip_buf. - * - * The IP header checksum is the Internet checksum of the 20 bytes of - * the IP header. - * - * \return The IP header checksum of the IP header in the uip_buf - * buffer. - */ -u16_t uip_ipchksum(void); - -/** - * Calculate the TCP checksum of the packet in uip_buf and uip_appdata. - * - * The TCP checksum is the Internet checksum of data contents of the - * TCP segment, and a pseudo-header as defined in RFC793. - * - * \note The uip_appdata pointer that points to the packet data may - * point anywhere in memory, so it is not possible to simply calculate - * the Internet checksum of the contents of the uip_buf buffer. - * - * \return The TCP checksum of the TCP segment in uip_buf and pointed - * to by uip_appdata. - */ -u16_t uip_tcpchksum(void); - -u16_t uip_udpchksum(void); - -/** @} */ -/** @} */ - -#endif /* __UIP_ARCH_H__ */ diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/uip_arp.c b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/uip_arp.c deleted file mode 100644 index 44c7975fc..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/uip_arp.c +++ /dev/null @@ -1,439 +0,0 @@ -/** - * \addtogroup uip - * @{ - */ - -/** - * \defgroup uiparp uIP Address Resolution Protocol - * @{ - * - * The Address Resolution Protocol ARP is used for mapping between IP - * addresses and link level addresses such as the Ethernet MAC - * addresses. ARP uses broadcast queries to ask for the link level - * address of a known IP address and the host which is configured with - * the IP address for which the query was meant, will respond with its - * link level address. - * - * \note This ARP implementation only supports Ethernet. - */ - -/** - * \file - * Implementation of the ARP Address Resolution Protocol. - * \author Adam Dunkels - * - */ - -/* - * Copyright (c) 2001-2003, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: uip_arp.c,v 1.8 2006/06/02 23:36:21 adam Exp $ - * - */ - - -#include "uip_arp.h" - -#include - -#ifdef __ICCARM__ - #pragma pack(1) -#endif - -struct arp_hdr { - struct uip_eth_hdr ethhdr; - u16_t hwtype; - u16_t protocol; - u8_t hwlen; - u8_t protolen; - u16_t opcode; - struct uip_eth_addr shwaddr; - u16_t sipaddr[2]; - struct uip_eth_addr dhwaddr; - u16_t dipaddr[2]; -} PACK_STRUCT_END; - -#ifdef __ICCARM__ - #pragma pack() -#endif - -#ifdef __ICCARM__ - #pragma pack(1) -#endif - -struct ethip_hdr { - struct uip_eth_hdr ethhdr; - /* IP header. */ - u8_t vhl, - tos, - len[2], - ipid[2], - ipoffset[2], - ttl, - proto; - u16_t ipchksum; - u16_t srcipaddr[2], - destipaddr[2]; -} PACK_STRUCT_END; - -#ifdef __ICCARM__ - #pragma pack() -#endif - -#define ARP_REQUEST 1 -#define ARP_REPLY 2 - -#define ARP_HWTYPE_ETH 1 - -struct arp_entry { - u16_t ipaddr[2]; - struct uip_eth_addr ethaddr; - u8_t time; -}; - -static const struct uip_eth_addr broadcast_ethaddr = - {{0xff,0xff,0xff,0xff,0xff,0xff}}; -static const u16_t broadcast_ipaddr[2] = {0xffff,0xffff}; - -static struct arp_entry arp_table[UIP_ARPTAB_SIZE]; -static u16_t ipaddr[2]; -static u8_t i, c; - -static u8_t arptime; -static u8_t tmpage; - -#define BUF ((struct arp_hdr *)&uip_buf[0]) -#define IPBUF ((struct ethip_hdr *)&uip_buf[0]) -/*-----------------------------------------------------------------------------------*/ -/** - * Initialize the ARP module. - * - */ -/*-----------------------------------------------------------------------------------*/ -void -uip_arp_init(void) -{ - for(i = 0; i < UIP_ARPTAB_SIZE; ++i) { - memset(arp_table[i].ipaddr, 0, 4); - } -} -/*-----------------------------------------------------------------------------------*/ -/** - * Periodic ARP processing function. - * - * This function performs periodic timer processing in the ARP module - * and should be called at regular intervals. The recommended interval - * is 10 seconds between the calls. - * - */ -/*-----------------------------------------------------------------------------------*/ -void -uip_arp_timer(void) -{ - struct arp_entry *tabptr; - - ++arptime; - for(i = 0; i < UIP_ARPTAB_SIZE; ++i) { - tabptr = &arp_table[i]; - if((tabptr->ipaddr[0] | tabptr->ipaddr[1]) != 0 && - arptime - tabptr->time >= UIP_ARP_MAXAGE) { - memset(tabptr->ipaddr, 0, 4); - } - } - -} -/*-----------------------------------------------------------------------------------*/ -static void -uip_arp_update(u16_t *ipaddr, struct uip_eth_addr *ethaddr) -{ - register struct arp_entry *tabptr; - /* Walk through the ARP mapping table and try to find an entry to - update. If none is found, the IP -> MAC address mapping is - inserted in the ARP table. */ - for(i = 0; i < UIP_ARPTAB_SIZE; ++i) { - - tabptr = &arp_table[i]; - /* Only check those entries that are actually in use. */ - if(tabptr->ipaddr[0] != 0 && - tabptr->ipaddr[1] != 0) { - - /* Check if the source IP address of the incoming packet matches - the IP address in this ARP table entry. */ - if(ipaddr[0] == tabptr->ipaddr[0] && - ipaddr[1] == tabptr->ipaddr[1]) { - - /* An old entry found, update this and return. */ - memcpy(tabptr->ethaddr.addr, ethaddr->addr, 6); - tabptr->time = arptime; - - return; - } - } - } - - /* If we get here, no existing ARP table entry was found, so we - create one. */ - - /* First, we try to find an unused entry in the ARP table. */ - for(i = 0; i < UIP_ARPTAB_SIZE; ++i) { - tabptr = &arp_table[i]; - if(tabptr->ipaddr[0] == 0 && - tabptr->ipaddr[1] == 0) { - break; - } - } - - /* If no unused entry is found, we try to find the oldest entry and - throw it away. */ - if(i == UIP_ARPTAB_SIZE) { - tmpage = 0; - c = 0; - for(i = 0; i < UIP_ARPTAB_SIZE; ++i) { - tabptr = &arp_table[i]; - if(arptime - tabptr->time > tmpage) { - tmpage = arptime - tabptr->time; - c = i; - } - } - i = c; - tabptr = &arp_table[i]; - } - - /* Now, i is the ARP table entry which we will fill with the new - information. */ - memcpy(tabptr->ipaddr, ipaddr, 4); - memcpy(tabptr->ethaddr.addr, ethaddr->addr, 6); - tabptr->time = arptime; -} -/*-----------------------------------------------------------------------------------*/ -/** - * ARP processing for incoming IP packets - * - * This function should be called by the device driver when an IP - * packet has been received. The function will check if the address is - * in the ARP cache, and if so the ARP cache entry will be - * refreshed. If no ARP cache entry was found, a new one is created. - * - * This function expects an IP packet with a prepended Ethernet header - * in the uip_buf[] buffer, and the length of the packet in the global - * variable uip_len. - */ -/*-----------------------------------------------------------------------------------*/ -#if 1 -void -uip_arp_ipin(void) -{ - uip_len -= sizeof(struct uip_eth_hdr); - - /* Only insert/update an entry if the source IP address of the - incoming IP packet comes from a host on the local network. */ - if((IPBUF->srcipaddr[0] & uip_netmask[0]) != - (uip_hostaddr[0] & uip_netmask[0])) { - return; - } - if((IPBUF->srcipaddr[1] & uip_netmask[1]) != - (uip_hostaddr[1] & uip_netmask[1])) { - return; - } - uip_arp_update(IPBUF->srcipaddr, &(IPBUF->ethhdr.src)); - - return; -} -#endif /* 0 */ -/*-----------------------------------------------------------------------------------*/ -/** - * ARP processing for incoming ARP packets. - * - * This function should be called by the device driver when an ARP - * packet has been received. The function will act differently - * depending on the ARP packet type: if it is a reply for a request - * that we previously sent out, the ARP cache will be filled in with - * the values from the ARP reply. If the incoming ARP packet is an ARP - * request for our IP address, an ARP reply packet is created and put - * into the uip_buf[] buffer. - * - * When the function returns, the value of the global variable uip_len - * indicates whether the device driver should send out a packet or - * not. If uip_len is zero, no packet should be sent. If uip_len is - * non-zero, it contains the length of the outbound packet that is - * present in the uip_buf[] buffer. - * - * This function expects an ARP packet with a prepended Ethernet - * header in the uip_buf[] buffer, and the length of the packet in the - * global variable uip_len. - */ -/*-----------------------------------------------------------------------------------*/ -void -uip_arp_arpin(void) -{ - - if(uip_len < sizeof(struct arp_hdr)) { - uip_len = 0; - return; - } - uip_len = 0; - - switch(BUF->opcode) { - case HTONS(ARP_REQUEST): - /* ARP request. If it asked for our address, we send out a - reply. */ - if(uip_ipaddr_cmp(BUF->dipaddr, uip_hostaddr)) { - /* First, we register the one who made the request in our ARP - table, since it is likely that we will do more communication - with this host in the future. */ - uip_arp_update(BUF->sipaddr, &BUF->shwaddr); - - /* The reply opcode is 2. */ - BUF->opcode = HTONS(2); - - memcpy(BUF->dhwaddr.addr, BUF->shwaddr.addr, 6); - memcpy(BUF->shwaddr.addr, uip_ethaddr.addr, 6); - memcpy(BUF->ethhdr.src.addr, uip_ethaddr.addr, 6); - memcpy(BUF->ethhdr.dest.addr, BUF->dhwaddr.addr, 6); - - BUF->dipaddr[0] = BUF->sipaddr[0]; - BUF->dipaddr[1] = BUF->sipaddr[1]; - BUF->sipaddr[0] = uip_hostaddr[0]; - BUF->sipaddr[1] = uip_hostaddr[1]; - - BUF->ethhdr.type = HTONS(UIP_ETHTYPE_ARP); - uip_len = sizeof(struct arp_hdr); - } - break; - case HTONS(ARP_REPLY): - /* ARP reply. We insert or update the ARP table if it was meant - for us. */ - if(uip_ipaddr_cmp(BUF->dipaddr, uip_hostaddr)) { - uip_arp_update(BUF->sipaddr, &BUF->shwaddr); - } - break; - } - - return; -} -/*-----------------------------------------------------------------------------------*/ -/** - * Prepend Ethernet header to an outbound IP packet and see if we need - * to send out an ARP request. - * - * This function should be called before sending out an IP packet. The - * function checks the destination IP address of the IP packet to see - * what Ethernet MAC address that should be used as a destination MAC - * address on the Ethernet. - * - * If the destination IP address is in the local network (determined - * by logical ANDing of netmask and our IP address), the function - * checks the ARP cache to see if an entry for the destination IP - * address is found. If so, an Ethernet header is prepended and the - * function returns. If no ARP cache entry is found for the - * destination IP address, the packet in the uip_buf[] is replaced by - * an ARP request packet for the IP address. The IP packet is dropped - * and it is assumed that they higher level protocols (e.g., TCP) - * eventually will retransmit the dropped packet. - * - * If the destination IP address is not on the local network, the IP - * address of the default router is used instead. - * - * When the function returns, a packet is present in the uip_buf[] - * buffer, and the length of the packet is in the global variable - * uip_len. - */ -/*-----------------------------------------------------------------------------------*/ -void -uip_arp_out(void) -{ - struct arp_entry *tabptr; - - /* Find the destination IP address in the ARP table and construct - the Ethernet header. If the destination IP addres isn't on the - local network, we use the default router's IP address instead. - - If not ARP table entry is found, we overwrite the original IP - packet with an ARP request for the IP address. */ - - /* First check if destination is a local broadcast. */ - if(uip_ipaddr_cmp(IPBUF->destipaddr, broadcast_ipaddr)) { - memcpy(IPBUF->ethhdr.dest.addr, broadcast_ethaddr.addr, 6); - } else { - /* Check if the destination address is on the local network. */ - if(!uip_ipaddr_maskcmp(IPBUF->destipaddr, uip_hostaddr, uip_netmask)) { - /* Destination address was not on the local network, so we need to - use the default router's IP address instead of the destination - address when determining the MAC address. */ - uip_ipaddr_copy(ipaddr, uip_draddr); - } else { - /* Else, we use the destination IP address. */ - uip_ipaddr_copy(ipaddr, IPBUF->destipaddr); - } - - for(i = 0; i < UIP_ARPTAB_SIZE; ++i) { - tabptr = &arp_table[i]; - if(uip_ipaddr_cmp(ipaddr, tabptr->ipaddr)) { - break; - } - } - - if(i == UIP_ARPTAB_SIZE) { - /* The destination address was not in our ARP table, so we - overwrite the IP packet with an ARP request. */ - - memset(BUF->ethhdr.dest.addr, 0xff, 6); - memset(BUF->dhwaddr.addr, 0x00, 6); - memcpy(BUF->ethhdr.src.addr, uip_ethaddr.addr, 6); - memcpy(BUF->shwaddr.addr, uip_ethaddr.addr, 6); - - uip_ipaddr_copy(BUF->dipaddr, ipaddr); - uip_ipaddr_copy(BUF->sipaddr, uip_hostaddr); - BUF->opcode = HTONS(ARP_REQUEST); /* ARP request. */ - BUF->hwtype = HTONS(ARP_HWTYPE_ETH); - BUF->protocol = HTONS(UIP_ETHTYPE_IP); - BUF->hwlen = 6; - BUF->protolen = 4; - BUF->ethhdr.type = HTONS(UIP_ETHTYPE_ARP); - - uip_appdata = &uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN]; - - uip_len = sizeof(struct arp_hdr); - return; - } - - /* Build an ethernet header. */ - memcpy(IPBUF->ethhdr.dest.addr, tabptr->ethaddr.addr, 6); - } - memcpy(IPBUF->ethhdr.src.addr, uip_ethaddr.addr, 6); - - IPBUF->ethhdr.type = HTONS(UIP_ETHTYPE_IP); - - uip_len += sizeof(struct uip_eth_hdr); -} -/*-----------------------------------------------------------------------------------*/ - -/** @} */ -/** @} */ diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/uip_arp.h b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/uip_arp.h deleted file mode 100644 index b6b2b66b4..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/uip_arp.h +++ /dev/null @@ -1,152 +0,0 @@ -/** - * \addtogroup uip - * @{ - */ - -/** - * \addtogroup uiparp - * @{ - */ - -/** - * \file - * Macros and definitions for the ARP module. - * \author Adam Dunkels - */ - - -/* - * Copyright (c) 2001-2003, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: uip_arp.h,v 1.5 2006/06/11 21:46:39 adam Exp $ - * - */ - -#ifndef __UIP_ARP_H__ -#define __UIP_ARP_H__ - -#include "uip.h" - - -extern struct uip_eth_addr uip_ethaddr; - -/** - * The Ethernet header. - */ -#ifdef __ICCARM__ - #pragma pack(1) -#endif - -struct uip_eth_hdr { - struct uip_eth_addr dest; - struct uip_eth_addr src; - u16_t type; -}PACK_STRUCT_END; - -#ifdef __ICCARM__ - #pragma pack() -#endif - -#define UIP_ETHTYPE_ARP 0x0806 -#define UIP_ETHTYPE_IP 0x0800 -#define UIP_ETHTYPE_IP6 0x86dd - - -/* The uip_arp_init() function must be called before any of the other - ARP functions. */ -void uip_arp_init(void); - -/* The uip_arp_ipin() function should be called whenever an IP packet - arrives from the Ethernet. This function refreshes the ARP table or - inserts a new mapping if none exists. The function assumes that an - IP packet with an Ethernet header is present in the uip_buf buffer - and that the length of the packet is in the uip_len variable. */ -void uip_arp_ipin(void); -//#define uip_arp_ipin() - -/* The uip_arp_arpin() should be called when an ARP packet is received - by the Ethernet driver. This function also assumes that the - Ethernet frame is present in the uip_buf buffer. When the - uip_arp_arpin() function returns, the contents of the uip_buf - buffer should be sent out on the Ethernet if the uip_len variable - is > 0. */ -void uip_arp_arpin(void); - -/* The uip_arp_out() function should be called when an IP packet - should be sent out on the Ethernet. This function creates an - Ethernet header before the IP header in the uip_buf buffer. The - Ethernet header will have the correct Ethernet MAC destination - address filled in if an ARP table entry for the destination IP - address (or the IP address of the default router) is present. If no - such table entry is found, the IP packet is overwritten with an ARP - request and we rely on TCP to retransmit the packet that was - overwritten. In any case, the uip_len variable holds the length of - the Ethernet frame that should be transmitted. */ -void uip_arp_out(void); - -/* The uip_arp_timer() function should be called every ten seconds. It - is responsible for flushing old entries in the ARP table. */ -void uip_arp_timer(void); - -/** @} */ - -/** - * \addtogroup uipconffunc - * @{ - */ - - -/** - * Specifiy the Ethernet MAC address. - * - * The ARP code needs to know the MAC address of the Ethernet card in - * order to be able to respond to ARP queries and to generate working - * Ethernet headers. - * - * \note This macro only specifies the Ethernet MAC address to the ARP - * code. It cannot be used to change the MAC address of the Ethernet - * card. - * - * \param eaddr A pointer to a struct uip_eth_addr containing the - * Ethernet MAC address of the Ethernet card. - * - * \hideinitializer - */ -#define uip_setethaddr(eaddr) do {uip_ethaddr.addr[0] = eaddr.addr[0]; \ - uip_ethaddr.addr[1] = eaddr.addr[1];\ - uip_ethaddr.addr[2] = eaddr.addr[2];\ - uip_ethaddr.addr[3] = eaddr.addr[3];\ - uip_ethaddr.addr[4] = eaddr.addr[4];\ - uip_ethaddr.addr[5] = eaddr.addr[5];} while(0) - -/** @} */ -/** @} */ - -#endif /* __UIP_ARP_H__ */ diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/uipopt.h b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/uipopt.h deleted file mode 100644 index f7c3e0f80..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/uipopt.h +++ /dev/null @@ -1,539 +0,0 @@ -/** - * \defgroup uipopt Configuration options for uIP - * @{ - * - * uIP is configured using the per-project configuration file - * uipopt.h. This file contains all compile-time options for uIP and - * should be tweaked to match each specific project. The uIP - * distribution contains a documented example "uipopt.h" that can be - * copied and modified for each project. - * - * \note Most of the configuration options in the uipopt.h should not - * be changed, but rather the per-project uip-conf.h file. - */ - -/** - * \file - * Configuration options for uIP. - * \author Adam Dunkels - * - * This file is used for tweaking various configuration options for - * uIP. You should make a copy of this file into one of your project's - * directories instead of editing this example "uipopt.h" file that - * comes with the uIP distribution. - */ - -/* - * Copyright (c) 2001-2003, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: uipopt.h,v 1.4 2006/06/12 08:00:31 adam Exp $ - * - */ - -#ifndef __UIPOPT_H__ -#define __UIPOPT_H__ - -#ifndef UIP_LITTLE_ENDIAN -#define UIP_LITTLE_ENDIAN 3412 -#endif /* UIP_LITTLE_ENDIAN */ -#ifndef UIP_BIG_ENDIAN -#define UIP_BIG_ENDIAN 1234 -#endif /* UIP_BIG_ENDIAN */ - -#include "uip-conf.h" - -/*------------------------------------------------------------------------------*/ - -/** - * \name Static configuration options - * @{ - * - * These configuration options can be used for setting the IP address - * settings statically, but only if UIP_FIXEDADDR is set to 1. The - * configuration options for a specific node includes IP address, - * netmask and default router as well as the Ethernet address. The - * netmask, default router and Ethernet address are appliciable only - * if uIP should be run over Ethernet. - * - * All of these should be changed to suit your project. -*/ - -/** - * Determines if uIP should use a fixed IP address or not. - * - * If uIP should use a fixed IP address, the settings are set in the - * uipopt.h file. If not, the macros uip_sethostaddr(), - * uip_setdraddr() and uip_setnetmask() should be used instead. - * - * \hideinitializer - */ -#define UIP_FIXEDADDR 0 - -/** - * Ping IP address asignment. - * - * uIP uses a "ping" packets for setting its own IP address if this - * option is set. If so, uIP will start with an empty IP address and - * the destination IP address of the first incoming "ping" (ICMP echo) - * packet will be used for setting the hosts IP address. - * - * \note This works only if UIP_FIXEDADDR is 0. - * - * \hideinitializer - */ -#ifdef UIP_CONF_PINGADDRCONF -#define UIP_PINGADDRCONF UIP_CONF_PINGADDRCONF -#else /* UIP_CONF_PINGADDRCONF */ -#define UIP_PINGADDRCONF 0 -#endif /* UIP_CONF_PINGADDRCONF */ - - -/** - * Specifies if the uIP ARP module should be compiled with a fixed - * Ethernet MAC address or not. - * - * If this configuration option is 0, the macro uip_setethaddr() can - * be used to specify the Ethernet address at run-time. - * - * \hideinitializer - */ -#define UIP_FIXEDETHADDR 0 - -/** @} */ -/*------------------------------------------------------------------------------*/ -/** - * \name IP configuration options - * @{ - * - */ -/** - * The IP TTL (time to live) of IP packets sent by uIP. - * - * This should normally not be changed. - */ -#define UIP_TTL 64 - -/** - * Turn on support for IP packet reassembly. - * - * uIP supports reassembly of fragmented IP packets. This features - * requires an additonal amount of RAM to hold the reassembly buffer - * and the reassembly code size is approximately 700 bytes. The - * reassembly buffer is of the same size as the uip_buf buffer - * (configured by UIP_BUFSIZE). - * - * \note IP packet reassembly is not heavily tested. - * - * \hideinitializer - */ -#define UIP_REASSEMBLY 0 - -/** - * The maximum time an IP fragment should wait in the reassembly - * buffer before it is dropped. - * - */ -#define UIP_REASS_MAXAGE 40 - -/** @} */ - -/*------------------------------------------------------------------------------*/ -/** - * \name UDP configuration options - * @{ - */ - -/** - * Toggles wether UDP support should be compiled in or not. - * - * \hideinitializer - */ -#ifdef UIP_CONF_UDP -#define UIP_UDP UIP_CONF_UDP -#else /* UIP_CONF_UDP */ -#define UIP_UDP 0 -#endif /* UIP_CONF_UDP */ - -/** - * Toggles if UDP checksums should be used or not. - * - * \note Support for UDP checksums is currently not included in uIP, - * so this option has no function. - * - * \hideinitializer - */ -#ifdef UIP_CONF_UDP_CHECKSUMS -#define UIP_UDP_CHECKSUMS UIP_CONF_UDP_CHECKSUMS -#else -#define UIP_UDP_CHECKSUMS 0 -#endif - -/** - * The maximum amount of concurrent UDP connections. - * - * \hideinitializer - */ -#ifdef UIP_CONF_UDP_CONNS -#define UIP_UDP_CONNS UIP_CONF_UDP_CONNS -#else /* UIP_CONF_UDP_CONNS */ -#define UIP_UDP_CONNS 10 -#endif /* UIP_CONF_UDP_CONNS */ - -/** - * The name of the function that should be called when UDP datagrams arrive. - * - * \hideinitializer - */ - - -/** @} */ -/*------------------------------------------------------------------------------*/ -/** - * \name TCP configuration options - * @{ - */ - -/** - * Determines if support for opening connections from uIP should be - * compiled in. - * - * If the applications that are running on top of uIP for this project - * do not need to open outgoing TCP connections, this configration - * option can be turned off to reduce the code size of uIP. - * - * \hideinitializer - */ -#define UIP_ACTIVE_OPEN 1 - -/** - * The maximum number of simultaneously open TCP connections. - * - * Since the TCP connections are statically allocated, turning this - * configuration knob down results in less RAM used. Each TCP - * connection requires approximatly 30 bytes of memory. - * - * \hideinitializer - */ -#ifndef UIP_CONF_MAX_CONNECTIONS -#define UIP_CONNS 10 -#else /* UIP_CONF_MAX_CONNECTIONS */ -#define UIP_CONNS UIP_CONF_MAX_CONNECTIONS -#endif /* UIP_CONF_MAX_CONNECTIONS */ - - -/** - * The maximum number of simultaneously listening TCP ports. - * - * Each listening TCP port requires 2 bytes of memory. - * - * \hideinitializer - */ -#ifndef UIP_CONF_MAX_LISTENPORTS -#define UIP_LISTENPORTS 20 -#else /* UIP_CONF_MAX_LISTENPORTS */ -#define UIP_LISTENPORTS UIP_CONF_MAX_LISTENPORTS -#endif /* UIP_CONF_MAX_LISTENPORTS */ - -/** - * Determines if support for TCP urgent data notification should be - * compiled in. - * - * Urgent data (out-of-band data) is a rarely used TCP feature that - * very seldom would be required. - * - * \hideinitializer - */ -#define UIP_URGDATA 0 - -/** - * The initial retransmission timeout counted in timer pulses. - * - * This should not be changed. - */ -#define UIP_RTO 3 - -/** - * The maximum number of times a segment should be retransmitted - * before the connection should be aborted. - * - * This should not be changed. - */ -#define UIP_MAXRTX 8 - -/** - * The maximum number of times a SYN segment should be retransmitted - * before a connection request should be deemed to have been - * unsuccessful. - * - * This should not need to be changed. - */ -#define UIP_MAXSYNRTX 5 - -/** - * The TCP maximum segment size. - * - * This is should not be to set to more than - * UIP_BUFSIZE - UIP_LLH_LEN - UIP_TCPIP_HLEN. - */ -#define UIP_TCP_MSS (UIP_BUFSIZE - UIP_LLH_LEN - UIP_TCPIP_HLEN) - -/** - * The size of the advertised receiver's window. - * - * Should be set low (i.e., to the size of the uip_buf buffer) is the - * application is slow to process incoming data, or high (32768 bytes) - * if the application processes data quickly. - * - * \hideinitializer - */ -#ifndef UIP_CONF_RECEIVE_WINDOW -#define UIP_RECEIVE_WINDOW UIP_TCP_MSS -#else -#define UIP_RECEIVE_WINDOW UIP_CONF_RECEIVE_WINDOW -#endif - -/** - * How long a connection should stay in the TIME_WAIT state. - * - * This configiration option has no real implication, and it should be - * left untouched. - */ -#define UIP_TIME_WAIT_TIMEOUT 120 - - -/** @} */ -/*------------------------------------------------------------------------------*/ -/** - * \name ARP configuration options - * @{ - */ - -/** - * The size of the ARP table. - * - * This option should be set to a larger value if this uIP node will - * have many connections from the local network. - * - * \hideinitializer - */ -#ifdef UIP_CONF_ARPTAB_SIZE -#define UIP_ARPTAB_SIZE UIP_CONF_ARPTAB_SIZE -#else -#define UIP_ARPTAB_SIZE 8 -#endif - -/** - * The maxium age of ARP table entries measured in 10ths of seconds. - * - * An UIP_ARP_MAXAGE of 120 corresponds to 20 minutes (BSD - * default). - */ -#define UIP_ARP_MAXAGE 120 - -/** @} */ - -/*------------------------------------------------------------------------------*/ - -/** - * \name General configuration options - * @{ - */ - -/** - * The size of the uIP packet buffer. - * - * The uIP packet buffer should not be smaller than 60 bytes, and does - * not need to be larger than 1500 bytes. Lower size results in lower - * TCP throughput, larger size results in higher TCP throughput. - * - * \hideinitializer - */ -#ifndef UIP_CONF_BUFFER_SIZE -#define UIP_BUFSIZE 1500 -#else /* UIP_CONF_BUFFER_SIZE */ -#define UIP_BUFSIZE UIP_CONF_BUFFER_SIZE -#endif /* UIP_CONF_BUFFER_SIZE */ - - -/** - * Determines if statistics support should be compiled in. - * - * The statistics is useful for debugging and to show the user. - * - * \hideinitializer - */ -#ifndef UIP_CONF_STATISTICS -#define UIP_STATISTICS 0 -#else /* UIP_CONF_STATISTICS */ -#define UIP_STATISTICS UIP_CONF_STATISTICS -#endif /* UIP_CONF_STATISTICS */ - -/** - * Determines if logging of certain events should be compiled in. - * - * This is useful mostly for debugging. The function uip_log() - * must be implemented to suit the architecture of the project, if - * logging is turned on. - * - * \hideinitializer - */ -#ifndef UIP_CONF_LOGGING -#define UIP_LOGGING 0 -#else /* UIP_CONF_LOGGING */ -#define UIP_LOGGING UIP_CONF_LOGGING -#endif /* UIP_CONF_LOGGING */ - -/** - * Broadcast support. - * - * This flag configures IP broadcast support. This is useful only - * together with UDP. - * - * \hideinitializer - * - */ -#ifndef UIP_CONF_BROADCAST -#define UIP_BROADCAST 0 -#else /* UIP_CONF_BROADCAST */ -#define UIP_BROADCAST UIP_CONF_BROADCAST -#endif /* UIP_CONF_BROADCAST */ - -/** - * Print out a uIP log message. - * - * This function must be implemented by the module that uses uIP, and - * is called by uIP whenever a log message is generated. - */ -void uip_log(char *msg); - -/** - * The link level header length. - * - * This is the offset into the uip_buf where the IP header can be - * found. For Ethernet, this should be set to 14. For SLIP, this - * should be set to 0. - * - * \hideinitializer - */ -#ifdef UIP_CONF_LLH_LEN -#define UIP_LLH_LEN UIP_CONF_LLH_LEN -#else /* UIP_CONF_LLH_LEN */ -#define UIP_LLH_LEN 14 -#endif /* UIP_CONF_LLH_LEN */ - -/** @} */ -/*------------------------------------------------------------------------------*/ -/** - * \name CPU architecture configuration - * @{ - * - * The CPU architecture configuration is where the endianess of the - * CPU on which uIP is to be run is specified. Most CPUs today are - * little endian, and the most notable exception are the Motorolas - * which are big endian. The BYTE_ORDER macro should be changed to - * reflect the CPU architecture on which uIP is to be run. - */ - -/** - * The byte order of the CPU architecture on which uIP is to be run. - * - * This option can be either BIG_ENDIAN (Motorola byte order) or - * LITTLE_ENDIAN (Intel byte order). - * - * \hideinitializer - */ -#ifdef UIP_CONF_BYTE_ORDER -#define UIP_BYTE_ORDER UIP_CONF_BYTE_ORDER -#else /* UIP_CONF_BYTE_ORDER */ -#define UIP_BYTE_ORDER UIP_LITTLE_ENDIAN -#endif /* UIP_CONF_BYTE_ORDER */ - -/** @} */ -/*------------------------------------------------------------------------------*/ - -/** - * \name Appication specific configurations - * @{ - * - * An uIP application is implemented using a single application - * function that is called by uIP whenever a TCP/IP event occurs. The - * name of this function must be registered with uIP at compile time - * using the UIP_APPCALL definition. - * - * uIP applications can store the application state within the - * uip_conn structure by specifying the type of the application - * structure by typedef:ing the type uip_tcp_appstate_t and uip_udp_appstate_t. - * - * The file containing the definitions must be included in the - * uipopt.h file. - * - * The following example illustrates how this can look. - \code - -void httpd_appcall(void); -#define UIP_APPCALL httpd_appcall - -struct httpd_state { - u8_t state; - u16_t count; - char *dataptr; - char *script; -}; -typedef struct httpd_state uip_tcp_appstate_t - \endcode - */ - -/** - * \var #define UIP_APPCALL - * - * The name of the application function that uIP should call in - * response to TCP/IP events. - * - */ - -/** - * \var typedef uip_tcp_appstate_t - * - * The type of the application state that is to be stored in the - * uip_conn structure. This usually is typedef:ed to a struct holding - * application state information. - */ - -/** - * \var typedef uip_udp_appstate_t - * - * The type of the application state that is to be stored in the - * uip_conn structure. This usually is typedef:ed to a struct holding - * application state information. - */ -/** @} */ -/** @} */ - -#endif /* __UIPOPT_H__ */ diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/webserver.h b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/webserver.h deleted file mode 100644 index 1acb290b8..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/webserver.h +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright (c) 2002, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials provided - * with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: webserver.h,v 1.2 2006/06/11 21:46:38 adam Exp $ - * - */ -#ifndef __WEBSERVER_H__ -#define __WEBSERVER_H__ - -#include "httpd.h" - -typedef struct httpd_state uip_tcp_appstate_t; -/* UIP_APPCALL: the name of the application function. This function - must return void and take no arguments (i.e., C type "void - appfunc(void)"). */ -#ifndef UIP_APPCALL -#define UIP_APPCALL httpd_appcall -#endif - - -#endif /* __WEBSERVER_H__ */ diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/usbser.inf b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/usbser.inf deleted file mode 100644 index 607fc9e6d..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/usbser.inf +++ /dev/null @@ -1,45 +0,0 @@ -[Version] -Signature="$Windows NT$" -Class=Ports -ClassGuid={4D36E978-E325-11CE-BFC1-08002BE10318} -Provider=%LINUX% -DriverVer=08/17/2004,0.0.2.0 -; Copyright (C) 2004 Al Borchers (alborchers@steinerpoint.com) -; released under GNU General Public License - -[Manufacturer] -%LINUX%=GSerialDeviceList - -[GSerialDeviceList] -%GSERIAL%=GSerialInstall, USB\VID_FFFF&PID_0005 - -[DestinationDirs] -DefaultDestDir=10,System32\Drivers - -[GSerialInstall] -CopyFiles=GSerialCopyFiles -AddReg=GSerialAddReg - -[GSerialCopyFiles] -usbser.sys - -[GSerialAddReg] -HKR,,DevLoader,,*ntkern -HKR,,NTMPDriver,,usbser.sys -HKR,,EnumPropPages32,,"MsPorts.dll,SerialPortPropPageProvider" - -[GSerialInstall.Services] -AddService = usbser,0x0002,GSerialService - -[GSerialService] -DisplayName = %GSERIAL_DISPLAY_NAME% -ServiceType = 1 ; SERVICE_KERNEL_DRIVER -StartType = 3 ; SERVICE_DEMAND_START -ErrorControl = 1 ; SERVICE_ERROR_NORMAL -ServiceBinary = %10%\System32\Drivers\usbser.sys -LoadOrderGroup = Base - -[Strings] -LINUX = "Linux" -GSERIAL = "USB CDC serial port emulation" -GSERIAL_DISPLAY_NAME = "USB CDC serial port emulation" \ No newline at end of file diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/FreeRTOSConfig.h b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/FreeRTOSConfig.h deleted file mode 100644 index 6c5e75d55..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/FreeRTOSConfig.h +++ /dev/null @@ -1,147 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -#ifndef FREERTOS_CONFIG_H -#define FREERTOS_CONFIG_H - -#include "LPC17xx.h" - -/*----------------------------------------------------------- - * Application specific definitions. - * - * These definitions should be adjusted for your particular hardware and - * application requirements. - * - * THESE PARAMETERS ARE DESCRIBED WITHIN THE 'CONFIGURATION' SECTION OF THE - * FreeRTOS API DOCUMENTATION AVAILABLE ON THE FreeRTOS.org WEB SITE. - *----------------------------------------------------------*/ - -#define configUSE_PREEMPTION 1 -#define configUSE_IDLE_HOOK 0 -#define configMAX_PRIORITIES ( 5 ) -#define configUSE_TICK_HOOK 1 -#define configCPU_CLOCK_HZ ( ( unsigned long ) 100000000 ) -#define configTICK_RATE_HZ ( ( TickType_t ) 1000 ) -#define configMINIMAL_STACK_SIZE ( ( unsigned short ) 80 ) -#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 19 * 1024 ) ) -#define configMAX_TASK_NAME_LEN ( 12 ) -#define configUSE_TRACE_FACILITY 1 -#define configUSE_16_BIT_TICKS 0 -#define configIDLE_SHOULD_YIELD 0 -#define configUSE_CO_ROUTINES 0 -#define configUSE_MUTEXES 1 - -#define configMAX_CO_ROUTINE_PRIORITIES ( 2 ) - -#define configUSE_COUNTING_SEMAPHORES 0 -#define configUSE_ALTERNATIVE_API 0 -#define configCHECK_FOR_STACK_OVERFLOW 2 -#define configUSE_RECURSIVE_MUTEXES 1 -#define configQUEUE_REGISTRY_SIZE 10 -#define configGENERATE_RUN_TIME_STATS 1 - -/* Set the following definitions to 1 to include the API function, or zero -to exclude the API function. */ - -#define INCLUDE_vTaskPrioritySet 1 -#define INCLUDE_uxTaskPriorityGet 1 -#define INCLUDE_vTaskDelete 1 -#define INCLUDE_vTaskCleanUpResources 0 -#define INCLUDE_vTaskSuspend 1 -#define INCLUDE_vTaskDelayUntil 1 -#define INCLUDE_vTaskDelay 1 -#define INCLUDE_uxTaskGetStackHighWaterMark 1 - -/* This demo makes use of one or more example stats formatting functions. These -format the raw data provided by the uxTaskGetSystemState() function in to human -readable ASCII form. See the notes in the implementation of vTaskList() within -FreeRTOS/Source/tasks.c for limitations. */ -#define configUSE_STATS_FORMATTING_FUNCTIONS 1 - -/*----------------------------------------------------------- - * Ethernet configuration. - *-----------------------------------------------------------*/ - -/* MAC address configuration. */ -#define configMAC_ADDR0 0x00 -#define configMAC_ADDR1 0x12 -#define configMAC_ADDR2 0x13 -#define configMAC_ADDR3 0x10 -#define configMAC_ADDR4 0x15 -#define configMAC_ADDR5 0x11 - -/* IP address configuration. */ -#define configIP_ADDR0 192 -#define configIP_ADDR1 168 -#define configIP_ADDR2 0 -#define configIP_ADDR3 201 - -/* Netmask configuration. */ -#define configNET_MASK0 255 -#define configNET_MASK1 255 -#define configNET_MASK2 255 -#define configNET_MASK3 0 - -/* Use the system definition, if there is one */ -#ifdef __NVIC_PRIO_BITS - #define configPRIO_BITS __NVIC_PRIO_BITS -#else - #define configPRIO_BITS 5 /* 32 priority levels */ -#endif - -/* The lowest priority. */ -#define configKERNEL_INTERRUPT_PRIORITY ( 31 << (8 - configPRIO_BITS) ) -/* Priority 5, or 160 as only the top three bits are implemented. */ -/* !!!! configMAX_SYSCALL_INTERRUPT_PRIORITY must not be set to zero !!!! -See http://www.FreeRTOS.org/RTOS-Cortex-M3-M4.html. */ -#define configMAX_SYSCALL_INTERRUPT_PRIORITY ( 5 << (8 - configPRIO_BITS) ) - -/* Priorities passed to NVIC_SetPriority() do not require shifting as the -function does the shifting itself. Note these priorities need to be equal to -or lower than configMAX_SYSCALL_INTERRUPT_PRIORITY - therefore the numeric -value needs to be equal to or greater than 5 (on the Cortex-M3 the lower the -numeric value the higher the interrupt priority). */ -#define configEMAC_INTERRUPT_PRIORITY 5 -#define configUSB_INTERRUPT_PRIORITY 6 - - - -/*----------------------------------------------------------- - * Macros required to setup the timer for the run time stats. - *-----------------------------------------------------------*/ -extern void vConfigureTimerForRunTimeStats( void ); -#define portCONFIGURE_TIMER_FOR_RUN_TIME_STATS() vConfigureTimerForRunTimeStats() -#define portGET_RUN_TIME_COUNTER_VALUE() TIM0->TC - - -/* The structure that is passed on the xLCDQueue. Put here for convenience. */ -typedef struct -{ - char *pcMessage; -} xLCDMessage; - -#endif /* FREERTOS_CONFIG_H */ diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/LED.h b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/LED.h deleted file mode 100644 index 3e1c6731c..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/LED.h +++ /dev/null @@ -1,35 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -#ifndef LED_HH -#define LED_HH - -void vToggleLED( unsigned long ulLED ); -void vSetLEDState( unsigned long ulLED, long lState ); -long lGetLEDState( unsigned long ulLED ); - -#endif diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/LPC1700_Startup.s b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/LPC1700_Startup.s deleted file mode 100644 index 5c7a94ea1..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/LPC1700_Startup.s +++ /dev/null @@ -1,364 +0,0 @@ -/***************************************************************************** - * Copyright (c) 2009 Rowley Associates Limited. * - * * - * This file may be distributed under the terms of the License Agreement * - * provided with this software. * - * * - * THIS FILE IS PROVIDED AS IS WITH NO WARRANTY OF ANY KIND, INCLUDING THE * - * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. * - *****************************************************************************/ - -/***************************************************************************** - * Preprocessor Definitions - * ------------------------ - * - * STARTUP_FROM_RESET - * - * If defined, the program will startup from power-on/reset. If not defined - * the program will just loop endlessly from power-on/reset. - * - * This definition is not defined by default on this target because the - * debugger is unable to reset this target and maintain control of it over the - * JTAG interface. The advantage of doing this is that it allows the debugger - * to reset the CPU and run programs from a known reset CPU state on each run. - * It also acts as a safety net if you accidently download a program in FLASH - * that crashes and prevents the debugger from taking control over JTAG - * rendering the target unusable over JTAG. The obvious disadvantage of doing - * this is that your application will not startup without the debugger. - * - * We advise that on this target you keep STARTUP_FROM_RESET undefined whilst - * you are developing and only define STARTUP_FROM_RESET when development is - * complete.A - * - * - * CONFIGURE_USB - * - * If defined, the USB clock will be configured. - * - *****************************************************************************/ - -#include - -#if OSCILLATOR_CLOCK_FREQUENCY==12000000 - -#ifdef FULL_SPEED - -/* Fosc = 12Mhz, Fcco = 400Mhz, cclk = 100Mhz */ -#ifndef PLL0CFG_VAL -#define PLL0CFG_VAL ((49 << PLL0CFG_MSEL0_BIT) | (2 << PLL0CFG_NSEL0_BIT)) -#endif - -#ifndef CCLKCFG_VAL -#define CCLKCFG_VAL 3 -#endif - -#ifndef FLASHCFG_VAL -#define FLASHCFG_VAL 0x0000403A -#endif - -#else - -/* Fosc = 12Mhz, Fcco = 288Mhz, cclk = 72Mhz */ -#ifndef PLL0CFG_VAL -#define PLL0CFG_VAL ((11 << PLL0CFG_MSEL0_BIT) | (0 << PLL0CFG_NSEL0_BIT)) -#endif - -#ifndef CCLKCFG_VAL -#define CCLKCFG_VAL 3 -#endif - -#ifndef FLASHCFG_VAL -#define FLASHCFG_VAL 0x0000303A -#endif - -#endif - -/* Fosc = 12Mhz, Fcco = 192Mhz, usbclk = 48Mhz */ -#ifndef PLL1CFG_VAL -#define PLL1CFG_VAL ((3 << PLL1CFG_MSEL1_BIT) | (1 << PLL1CFG_PSEL1_BIT)) -#endif - -#endif - - .global reset_handler - - .syntax unified - - .section .vectors, "ax" - .code 16 - .align 0 - .global _vectors - -.macro DEFAULT_ISR_HANDLER name= - .thumb_func - .weak \name -\name: -1: b 1b /* endless loop */ -.endm - -.extern xPortPendSVHandler -.extern xPortSysTickHandler -.extern vPortSVCHandler -.extern vEMAC_ISR; - -_vectors: - .word __stack_end__ -#ifdef STARTUP_FROM_RESET - .word reset_handler -#else - .word reset_wait -#endif /* STARTUP_FROM_RESET */ - .word NMI_Handler - .word HardFault_Handler - .word MemManage_Handler - .word BusFault_Handler - .word UsageFault_Handler - .word 0 // Reserved - .word 0 // Reserved - .word 0 // Reserved - .word 0 // Reserved - .word vPortSVCHandler - .word DebugMon_Handler - .word 0 // Reserved - .word xPortPendSVHandler - .word xPortSysTickHandler - .word WDT_IRQHandler - .word TIMER0_IRQHandler - .word TIMER1_IRQHandler - .word TIMER2_IRQHandler - .word TIMER3_IRQHandler - .word UART0_IRQHandler - .word UART1_IRQHandler - .word UART2_IRQHandler - .word UART3_IRQHandler - .word PWM1_IRQHandler - .word I2C0_IRQHandler - .word I2C1_IRQHandler - .word I2C2_IRQHandler - .word SPI_IRQHandler - .word SSP0_IRQHandler - .word SSP1_IRQHandler - .word PLL0_IRQHandler - .word RTC_IRQHandler - .word EINT0_IRQHandler - .word EINT1_IRQHandler - .word EINT2_IRQHandler - .word EINT3_IRQHandler - .word ADC_IRQHandler - .word BOD_IRQHandler - .word USB_IRQHandler - .word CAN_IRQHandler - .word GPDMA_IRQHandler - .word I2S_IRQHandler - .word vEMAC_ISR - .word RIT_IRQHandler - .word MCPWM_IRQHandler - .word QEI_IRQHandler - .word PLL1_IRQHandler - .word USBACT_IRQHandler - .word CANACT_IRQHandler - - .section .init, "ax" - .thumb_func - - reset_handler: -#ifndef __FLASH_BUILD - /* If this is a RAM build, configure vector table offset register to point - to the RAM vector table. */ - ldr r0, =0xE000ED08 - ldr r1, =_vectors - str r1, [r0] -#endif - - ldr r0, =SC_BASE_ADDRESS - - /* Configure PLL0 Multiplier/Divider */ - ldr r1, [r0, #PLL0STAT_OFFSET] - tst r1, #PLL0STAT_PLLC0_STAT - beq 1f - - /* Disconnect PLL0 */ - ldr r1, =PLL0CON_PLLE0 - str r1, [r0, #PLL0CON_OFFSET] - mov r1, #0xAA - str r1, [r0, #PLL0FEED_OFFSET] - mov r1, #0x55 - str r1, [r0, #PLL0FEED_OFFSET] -1: - /* Disable PLL0 */ - ldr r1, =0 - str r1, [r0, #PLL0CON_OFFSET] - mov r1, #0xAA - str r1, [r0, #PLL0FEED_OFFSET] - mov r1, #0x55 - str r1, [r0, #PLL0FEED_OFFSET] - - /* Enable main oscillator */ - ldr r1, [r0, #SCS_OFFSET] - orr r1, r1, #SCS_OSCEN - str r1, [r0, #SCS_OFFSET] -1: - ldr r1, [r0, #SCS_OFFSET] - tst r1, #SCS_OSCSTAT - beq 1b - - /* Select main oscillator as the PLL0 clock source */ - ldr r1, =1 - str r1, [r0, #CLKSRCSEL_OFFSET] - - /* Set PLL0CFG */ - ldr r1, =PLL0CFG_VAL - str r1, [r0, #PLL0CFG_OFFSET] - mov r1, #0xAA - str r1, [r0, #PLL0FEED_OFFSET] - mov r1, #0x55 - str r1, [r0, #PLL0FEED_OFFSET] - - /* Enable PLL0 */ - ldr r1, =PLL0CON_PLLE0 - str r1, [r0, #PLL0CON_OFFSET] - mov r1, #0xAA - str r1, [r0, #PLL0FEED_OFFSET] - mov r1, #0x55 - str r1, [r0, #PLL0FEED_OFFSET] - -#ifdef CCLKCFG_VAL - /* Set the CPU clock divider */ - ldr r1, =CCLKCFG_VAL - str r1, [r0, #CCLKCFG_OFFSET] -#endif - -#ifdef FLASHCFG_VAL - /* Configure the FLASH accelerator */ - ldr r1, =FLASHCFG_VAL - str r1, [r0, #FLASHCFG_OFFSET] -#endif - - /* Wait for PLL0 to lock */ -1: - ldr r1, [r0, #PLL0STAT_OFFSET] - tst r1, #PLL0STAT_PLOCK0 - beq 1b - - /* PLL0 Locked, connect PLL as clock source */ - mov r1, #(PLL0CON_PLLE0 | PLL0CON_PLLC0) - str r1, [r0, #PLL0CON_OFFSET] - mov r1, #0xAA - str r1, [r0, #PLL0FEED_OFFSET] - mov r1, #0x55 - str r1, [r0, #PLL0FEED_OFFSET] - /* Wait for PLL0 to connect */ -1: - ldr r1, [r0, #PLL0STAT_OFFSET] - tst r1, #PLL0STAT_PLLC0_STAT - beq 1b - -#ifdef CONFIGURE_USB - /* Configure PLL1 Multiplier/Divider */ - ldr r1, [r0, #PLL1STAT_OFFSET] - tst r1, #PLL1STAT_PLLC1_STAT - beq 1f - - /* Disconnect PLL1 */ - ldr r1, =PLL1CON_PLLE1 - str r1, [r0, #PLL1CON_OFFSET] - mov r1, #0xAA - str r1, [r0, #PLL1FEED_OFFSET] - mov r1, #0x55 - str r1, [r0, #PLL1FEED_OFFSET] -1: - /* Disable PLL1 */ - ldr r1, =0 - str r1, [r0, #PLL1CON_OFFSET] - mov r1, #0xAA - str r1, [r0, #PLL1FEED_OFFSET] - mov r1, #0x55 - str r1, [r0, #PLL1FEED_OFFSET] - - /* Set PLL1CFG */ - ldr r1, =PLL1CFG_VAL - str r1, [r0, #PLL1CFG_OFFSET] - mov r1, #0xAA - str r1, [r0, #PLL1FEED_OFFSET] - mov r1, #0x55 - str r1, [r0, #PLL1FEED_OFFSET] - - /* Enable PLL1 */ - ldr r1, =PLL1CON_PLLE1 - str r1, [r0, #PLL1CON_OFFSET] - mov r1, #0xAA - str r1, [r0, #PLL1FEED_OFFSET] - mov r1, #0x55 - str r1, [r0, #PLL1FEED_OFFSET] - - /* Wait for PLL1 to lock */ -1: - ldr r1, [r0, #PLL1STAT_OFFSET] - tst r1, #PLL1STAT_PLOCK1 - beq 1b - - /* PLL1 Locked, connect PLL as clock source */ - mov r1, #(PLL1CON_PLLE1 | PLL1CON_PLLC1) - str r1, [r0, #PLL1CON_OFFSET] - mov r1, #0xAA - str r1, [r0, #PLL1FEED_OFFSET] - mov r1, #0x55 - str r1, [r0, #PLL1FEED_OFFSET] - /* Wait for PLL1 to connect */ -1: - ldr r1, [r0, #PLL1STAT_OFFSET] - tst r1, #PLL1STAT_PLLC1_STAT - beq 1b -#endif - - b _start - -DEFAULT_ISR_HANDLER NMI_Handler -DEFAULT_ISR_HANDLER HardFault_Handler -DEFAULT_ISR_HANDLER MemManage_Handler -DEFAULT_ISR_HANDLER BusFault_Handler -DEFAULT_ISR_HANDLER UsageFault_Handler -DEFAULT_ISR_HANDLER SVC_Handler -DEFAULT_ISR_HANDLER DebugMon_Handler -DEFAULT_ISR_HANDLER PendSV_Handler -DEFAULT_ISR_HANDLER SysTick_Handler -DEFAULT_ISR_HANDLER WDT_IRQHandler -DEFAULT_ISR_HANDLER TIMER0_IRQHandler -DEFAULT_ISR_HANDLER TIMER1_IRQHandler -DEFAULT_ISR_HANDLER TIMER2_IRQHandler -DEFAULT_ISR_HANDLER TIMER3_IRQHandler -DEFAULT_ISR_HANDLER UART0_IRQHandler -DEFAULT_ISR_HANDLER UART1_IRQHandler -DEFAULT_ISR_HANDLER UART2_IRQHandler -DEFAULT_ISR_HANDLER UART3_IRQHandler -DEFAULT_ISR_HANDLER PWM1_IRQHandler -DEFAULT_ISR_HANDLER I2C0_IRQHandler -DEFAULT_ISR_HANDLER I2C1_IRQHandler -DEFAULT_ISR_HANDLER I2C2_IRQHandler -DEFAULT_ISR_HANDLER SPI_IRQHandler -DEFAULT_ISR_HANDLER SSP0_IRQHandler -DEFAULT_ISR_HANDLER SSP1_IRQHandler -DEFAULT_ISR_HANDLER PLL0_IRQHandler -DEFAULT_ISR_HANDLER RTC_IRQHandler -DEFAULT_ISR_HANDLER EINT0_IRQHandler -DEFAULT_ISR_HANDLER EINT1_IRQHandler -DEFAULT_ISR_HANDLER EINT2_IRQHandler -DEFAULT_ISR_HANDLER EINT3_IRQHandler -DEFAULT_ISR_HANDLER ADC_IRQHandler -DEFAULT_ISR_HANDLER BOD_IRQHandler -DEFAULT_ISR_HANDLER USB_IRQHandler -DEFAULT_ISR_HANDLER CAN_IRQHandler -DEFAULT_ISR_HANDLER GPDMA_IRQHandler -DEFAULT_ISR_HANDLER I2S_IRQHandler -DEFAULT_ISR_HANDLER ENET_IRQHandler -DEFAULT_ISR_HANDLER RIT_IRQHandler -DEFAULT_ISR_HANDLER MCPWM_IRQHandler -DEFAULT_ISR_HANDLER QEI_IRQHandler -DEFAULT_ISR_HANDLER PLL1_IRQHandler -DEFAULT_ISR_HANDLER USBACT_IRQHandler -DEFAULT_ISR_HANDLER CANACT_IRQHandler - -#ifndef STARTUP_FROM_RESET -DEFAULT_ISR_HANDLER reset_wait -#endif /* STARTUP_FROM_RESET */ - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/LPC17xx.h b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/LPC17xx.h deleted file mode 100644 index f2480b138..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/LPC17xx.h +++ /dev/null @@ -1,1081 +0,0 @@ -#ifndef __LPC17xx_H -#define __LPC17xx_H - -/* System Control Block (SCB) includes: - Flash Accelerator Module, Clocking and Power Control, External Interrupts, - Reset, System Control and Status -*/ -#define SCB_BASE_ADDR 0x400FC000 - -#define PCONP_PCTIM0 0x00000002 -#define PCONP_PCTIM1 0x00000004 -#define PCONP_PCUART0 0x00000008 -#define PCONP_PCUART1 0x00000010 -#define PCONP_PCPWM1 0x00000040 -#define PCONP_PCI2C0 0x00000080 -#define PCONP_PCSPI 0x00000100 -#define PCONP_PCRTC 0x00000200 -#define PCONP_PCSSP1 0x00000400 -#define PCONP_PCAD 0x00001000 -#define PCONP_PCCAN1 0x00002000 -#define PCONP_PCCAN2 0x00004000 -#define PCONP_PCGPIO 0x00008000 -#define PCONP_PCRIT 0x00010000 -#define PCONP_PCMCPWM 0x00020000 -#define PCONP_PCQEI 0x00040000 -#define PCONP_PCI2C1 0x00080000 -#define PCONP_PCSSP0 0x00200000 -#define PCONP_PCTIM2 0x00400000 -#define PCONP_PCTIM3 0x00800000 -#define PCONP_PCUART2 0x01000000 -#define PCONP_PCUART3 0x02000000 -#define PCONP_PCI2C2 0x04000000 -#define PCONP_PCI2S 0x08000000 -#define PCONP_PCGPDMA 0x20000000 -#define PCONP_PCENET 0x40000000 -#define PCONP_PCUSB 0x80000000 - -#define PLLCON_PLLE 0x00000001 -#define PLLCON_PLLC 0x00000002 -#define PLLCON_MASK 0x00000003 - -#define PLLCFG_MUL1 0x00000000 -#define PLLCFG_MUL2 0x00000001 -#define PLLCFG_MUL3 0x00000002 -#define PLLCFG_MUL4 0x00000003 -#define PLLCFG_MUL5 0x00000004 -#define PLLCFG_MUL6 0x00000005 -#define PLLCFG_MUL7 0x00000006 -#define PLLCFG_MUL8 0x00000007 -#define PLLCFG_MUL9 0x00000008 -#define PLLCFG_MUL10 0x00000009 -#define PLLCFG_MUL11 0x0000000A -#define PLLCFG_MUL12 0x0000000B -#define PLLCFG_MUL13 0x0000000C -#define PLLCFG_MUL14 0x0000000D -#define PLLCFG_MUL15 0x0000000E -#define PLLCFG_MUL16 0x0000000F -#define PLLCFG_MUL17 0x00000010 -#define PLLCFG_MUL18 0x00000011 -#define PLLCFG_MUL19 0x00000012 -#define PLLCFG_MUL20 0x00000013 -#define PLLCFG_MUL21 0x00000014 -#define PLLCFG_MUL22 0x00000015 -#define PLLCFG_MUL23 0x00000016 -#define PLLCFG_MUL24 0x00000017 -#define PLLCFG_MUL25 0x00000018 -#define PLLCFG_MUL26 0x00000019 -#define PLLCFG_MUL27 0x0000001A -#define PLLCFG_MUL28 0x0000001B -#define PLLCFG_MUL29 0x0000001C -#define PLLCFG_MUL30 0x0000001D -#define PLLCFG_MUL31 0x0000001E -#define PLLCFG_MUL32 0x0000001F -#define PLLCFG_MUL33 0x00000020 -#define PLLCFG_MUL34 0x00000021 -#define PLLCFG_MUL35 0x00000022 -#define PLLCFG_MUL36 0x00000023 - -#define PLLCFG_DIV1 0x00000000 -#define PLLCFG_DIV2 0x00010000 -#define PLLCFG_DIV3 0x00020000 -#define PLLCFG_DIV4 0x00030000 -#define PLLCFG_DIV5 0x00040000 -#define PLLCFG_DIV6 0x00050000 -#define PLLCFG_DIV7 0x00060000 -#define PLLCFG_DIV8 0x00070000 -#define PLLCFG_DIV9 0x00080000 -#define PLLCFG_DIV10 0x00090000 -#define PLLCFG_MASK 0x00FF7FFF - -#define PLLSTAT_MSEL_MASK 0x00007FFF -#define PLLSTAT_NSEL_MASK 0x00FF0000 - -#define PLLSTAT_PLLE (1 << 24) -#define PLLSTAT_PLLC (1 << 25) -#define PLLSTAT_PLOCK (1 << 26) - -#define PLLFEED_FEED1 0x000000AA -#define PLLFEED_FEED2 0x00000055 - -#define NVIC_IRQ_WDT 0u // IRQ0, exception number 16 -#define NVIC_IRQ_TIMER0 1u // IRQ1, exception number 17 -#define NVIC_IRQ_TIMER1 2u // IRQ2, exception number 18 -#define NVIC_IRQ_TIMER2 3u // IRQ3, exception number 19 -#define NVIC_IRQ_TIMER3 4u // IRQ4, exception number 20 -#define NVIC_IRQ_UART0 5u // IRQ5, exception number 21 -#define NVIC_IRQ_UART1 6u // IRQ6, exception number 22 -#define NVIC_IRQ_UART2 7u // IRQ7, exception number 23 -#define NVIC_IRQ_UART3 8u // IRQ8, exception number 24 -#define NVIC_IRQ_PWM1 9u // IRQ9, exception number 25 -#define NVIC_IRQ_I2C0 10u // IRQ10, exception number 26 -#define NVIC_IRQ_I2C1 11u // IRQ11, exception number 27 -#define NVIC_IRQ_I2C2 12u // IRQ12, exception number 28 -#define NVIC_IRQ_SPI 13u // IRQ13, exception number 29 -#define NVIC_IRQ_SSP0 14u // IRQ14, exception number 30 -#define NVIC_IRQ_SSP1 15u // IRQ15, exception number 31 -#define NVIC_IRQ_PLL0 16u // IRQ16, exception number 32 -#define NVIC_IRQ_RTC 17u // IRQ17, exception number 33 -#define NVIC_IRQ_EINT0 18u // IRQ18, exception number 34 -#define NVIC_IRQ_EINT1 19u // IRQ19, exception number 35 -#define NVIC_IRQ_EINT2 20u // IRQ20, exception number 36 -#define NVIC_IRQ_EINT3 21u // IRQ21, exception number 37 -#define NVIC_IRQ_ADC 22u // IRQ22, exception number 38 -#define NVIC_IRQ_BOD 23u // IRQ23, exception number 39 -#define NVIC_IRQ_USB 24u // IRQ24, exception number 40 -#define NVIC_IRQ_CAN 25u // IRQ25, exception number 41 -#define NVIC_IRQ_GPDMA 26u // IRQ26, exception number 42 -#define NVIC_IRQ_I2S 27u // IRQ27, exception number 43 -#define NVIC_IRQ_ETHERNET 28u // IRQ28, exception number 44 -#define NVIC_IRQ_RIT 29u // IRQ29, exception number 45 -#define NVIC_IRQ_MCPWM 30u // IRQ30, exception number 46 -#define NVIC_IRQ_QE 31u // IRQ31, exception number 47 -#define NVIC_IRQ_PLL1 32u // IRQ32, exception number 48 -#define NVIC_IRQ_USB_ACT 33u // IRQ33, exception number 49 -#define NVIC_IRQ_CAN_ACT 34u // IRQ34, exception number 50 - - -#endif // __LPC17xx_H - - -#ifndef CMSIS_17xx_H -#define CMSIS_17xx_H - -/****************************************************************************** - * @file: LPC17xx.h - * @purpose: CMSIS Cortex-M3 Core Peripheral Access Layer Header File for - * NXP LPC17xx Device Series - * @version: V1.1 - * @date: 14th May 2009 - *---------------------------------------------------------------------------- - * - * Copyright (C) 2008 ARM Limited. All rights reserved. - * - * ARM Limited (ARM) is supplying this software for use with Cortex-M3 - * processor based microcontrollers. This file can be freely distributed - * within development tools that are supporting such ARM based processors. - * - * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED - * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. - * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR - * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. - * - ******************************************************************************/ - - -#ifndef __LPC17xx_H__ -#define __LPC17xx_H__ - -/* - * ========================================================================== - * ---------- Interrupt Number Definition ----------------------------------- - * ========================================================================== - */ - -typedef enum IRQn -{ -/****** Cortex-M3 Processor Exceptions Numbers ***************************************************/ - NonMaskableInt_IRQn = -14, /*!< 2 Non Maskable Interrupt */ - MemoryManagement_IRQn = -12, /*!< 4 Cortex-M3 Memory Management Interrupt */ - BusFault_IRQn = -11, /*!< 5 Cortex-M3 Bus Fault Interrupt */ - UsageFault_IRQn = -10, /*!< 6 Cortex-M3 Usage Fault Interrupt */ - SVCall_IRQn = -5, /*!< 11 Cortex-M3 SV Call Interrupt */ - DebugMonitor_IRQn = -4, /*!< 12 Cortex-M3 Debug Monitor Interrupt */ - PendSV_IRQn = -2, /*!< 14 Cortex-M3 Pend SV Interrupt */ - SysTick_IRQn = -1, /*!< 15 Cortex-M3 System Tick Interrupt */ - -/****** LPC17xx Specific Interrupt Numbers *******************************************************/ - WDT_IRQn = 0, /*!< Watchdog Timer Interrupt */ - TIMER0_IRQn = 1, /*!< Timer0 Interrupt */ - TIMER1_IRQn = 2, /*!< Timer1 Interrupt */ - TIMER2_IRQn = 3, /*!< Timer2 Interrupt */ - TIMER3_IRQn = 4, /*!< Timer3 Interrupt */ - UART0_IRQn = 5, /*!< UART0 Interrupt */ - UART1_IRQn = 6, /*!< UART1 Interrupt */ - UART2_IRQn = 7, /*!< UART2 Interrupt */ - UART3_IRQn = 8, /*!< UART3 Interrupt */ - PWM1_IRQn = 9, /*!< PWM1 Interrupt */ - I2C0_IRQn = 10, /*!< I2C0 Interrupt */ - I2C1_IRQn = 11, /*!< I2C1 Interrupt */ - I2C2_IRQn = 12, /*!< I2C2 Interrupt */ - SPI_IRQn = 13, /*!< SPI Interrupt */ - SSP0_IRQn = 14, /*!< SSP0 Interrupt */ - SSP1_IRQn = 15, /*!< SSP1 Interrupt */ - PLL0_IRQn = 16, /*!< PLL0 Lock (Main PLL) Interrupt */ - RTC_IRQn = 17, /*!< Real Time Clock Interrupt */ - EINT0_IRQn = 18, /*!< External Interrupt 0 Interrupt */ - EINT1_IRQn = 19, /*!< External Interrupt 1 Interrupt */ - EINT2_IRQn = 20, /*!< External Interrupt 2 Interrupt */ - EINT3_IRQn = 21, /*!< External Interrupt 3 Interrupt */ - ADC_IRQn = 22, /*!< A/D Converter Interrupt */ - BOD_IRQn = 23, /*!< Brown-Out Detect Interrupt */ - USB_IRQn = 24, /*!< USB Interrupt */ - CAN_IRQn = 25, /*!< CAN Interrupt */ - DMA_IRQn = 26, /*!< General Purpose DMA Interrupt */ - I2S_IRQn = 27, /*!< I2S Interrupt */ - ENET_IRQn = 28, /*!< Ethernet Interrupt */ - RIT_IRQn = 29, /*!< Repetitive Interrupt Timer Interrupt */ - MCPWM_IRQn = 30, /*!< Motor Control PWM Interrupt */ - QEI_IRQn = 31, /*!< Quadrature Encoder Interface Interrupt */ - PLL1_IRQn = 32, /*!< PLL1 Lock (USB PLL) Interrupt */ -} IRQn_Type; - - -/* - * ========================================================================== - * ----------- Processor and Core Peripheral Section ------------------------ - * ========================================================================== - */ - -/* Configuration of the Cortex-M3 Processor and Core Peripherals */ -#define __MPU_PRESENT 1 /*!< MPU present or not */ -#define __NVIC_PRIO_BITS 5 /*!< Number of Bits used for Priority Levels */ -#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ - - -//#include "..\core_cm3.h" /* Cortex-M3 processor and core peripherals */ -#include "core_cm3.h" -#include "system_LPC17xx.h" /* System Header */ - - - -/** - * Initialize the system clock - * - * @param none - * @return none - * - * @brief Setup the microcontroller system. - * Initialize the System and update the SystemFrequency variable. - */ -extern void SystemInit (void); - - -/******************************************************************************/ -/* Device Specific Peripheral registers structures */ -/******************************************************************************/ - -/*------------- System Control (SC) ------------------------------------------*/ -typedef struct -{ - __IO uint32_t FLASHCFG; /* Flash Accelerator Module */ - uint32_t RESERVED0[31]; - __IO uint32_t PLL0CON; /* Clocking and Power Control */ - __IO uint32_t PLL0CFG; - __I uint32_t PLL0STAT; - __O uint32_t PLL0FEED; - uint32_t RESERVED1[4]; - __IO uint32_t PLL1CON; - __IO uint32_t PLL1CFG; - __I uint32_t PLL1STAT; - __O uint32_t PLL1FEED; - uint32_t RESERVED2[4]; - __IO uint32_t PCON; - __IO uint32_t PCONP; - uint32_t RESERVED3[15]; - __IO uint32_t CCLKCFG; - __IO uint32_t USBCLKCFG; - __IO uint32_t CLKSRCSEL; - uint32_t RESERVED4[12]; - __IO uint32_t EXTINT; /* External Interrupts */ - uint32_t RESERVED5; - __IO uint32_t EXTMODE; - __IO uint32_t EXTPOLAR; - uint32_t RESERVED6[12]; - __IO uint32_t RSID; /* Reset */ - uint32_t RESERVED7[7]; - __IO uint32_t SCS; /* Syscon Miscellaneous Registers */ - __IO uint32_t IRCTRIM; /* Clock Dividers */ - __IO uint32_t PCLKSEL0; - __IO uint32_t PCLKSEL1; - uint32_t RESERVED8[4]; - __IO uint32_t USBIntSt; /* USB Device/OTG Interrupt Register */ - uint32_t RESERVED9; - __IO uint32_t CLKOUTCFG; /* Clock Output Configuration */ - } SC_TypeDef; - -/*------------- Pin Connect Block (PINCON) -----------------------------------*/ -typedef struct -{ - __IO uint32_t PINSEL0; - __IO uint32_t PINSEL1; - __IO uint32_t PINSEL2; - __IO uint32_t PINSEL3; - __IO uint32_t PINSEL4; - __IO uint32_t PINSEL5; - __IO uint32_t PINSEL6; - __IO uint32_t PINSEL7; - __IO uint32_t PINSEL8; - __IO uint32_t PINSEL9; - __IO uint32_t PINSEL10; - uint32_t RESERVED0[5]; - __IO uint32_t PINMODE0; - __IO uint32_t PINMODE1; - __IO uint32_t PINMODE2; - __IO uint32_t PINMODE3; - __IO uint32_t PINMODE4; - __IO uint32_t PINMODE5; - __IO uint32_t PINMODE6; - __IO uint32_t PINMODE7; - __IO uint32_t PINMODE8; - __IO uint32_t PINMODE9; - __IO uint32_t PINMODE_OD0; - __IO uint32_t PINMODE_OD1; - __IO uint32_t PINMODE_OD2; - __IO uint32_t PINMODE_OD3; - __IO uint32_t PINMODE_OD4; -} PINCON_TypeDef; - -/*------------- General Purpose Input/Output (GPIO) --------------------------*/ -typedef struct -{ - __IO uint32_t FIODIR; - uint32_t RESERVED0[3]; - __IO uint32_t FIOMASK; - __IO uint32_t FIOPIN; - __IO uint32_t FIOSET; - __O uint32_t FIOCLR; -} GPIO_TypeDef; - -typedef struct -{ - __I uint32_t IntStatus; - __I uint32_t IO0IntStatR; - __I uint32_t IO0IntStatF; - __O uint32_t IO0IntClr; - __IO uint32_t IO0IntEnR; - __IO uint32_t IO0IntEnF; - uint32_t RESERVED0[3]; - __I uint32_t IO2IntStatR; - __I uint32_t IO2IntStatF; - __O uint32_t IO2IntClr; - __IO uint32_t IO2IntEnR; - __IO uint32_t IO2IntEnF; -} GPIOINT_TypeDef; - -/*------------- Timer (TIM) --------------------------------------------------*/ -typedef struct -{ - __IO uint32_t IR; - __IO uint32_t TCR; - __IO uint32_t TC; - __IO uint32_t PR; - __IO uint32_t PC; - __IO uint32_t MCR; - __IO uint32_t MR0; - __IO uint32_t MR1; - __IO uint32_t MR2; - __IO uint32_t MR3; - __IO uint32_t CCR; - __I uint32_t CR0; - __I uint32_t CR1; - uint32_t RESERVED0[2]; - __IO uint32_t EMR; - uint32_t RESERVED1[24]; - __IO uint32_t CTCR; -} TIM_TypeDef; - -/*------------- Pulse-Width Modulation (PWM) ---------------------------------*/ -typedef struct -{ - __IO uint32_t IR; - __IO uint32_t TCR; - __IO uint32_t TC; - __IO uint32_t PR; - __IO uint32_t PC; - __IO uint32_t MCR; - __IO uint32_t MR0; - __IO uint32_t MR1; - __IO uint32_t MR2; - __IO uint32_t MR3; - __IO uint32_t CCR; - __I uint32_t CR0; - __I uint32_t CR1; - __I uint32_t CR2; - __I uint32_t CR3; - __IO uint32_t MR4; - __IO uint32_t MR5; - __IO uint32_t MR6; - __IO uint32_t PCR; - __IO uint32_t LER; - uint32_t RESERVED0[7]; - __IO uint32_t CTCR; -} PWM_TypeDef; - -/*------------- Universal Asynchronous Receiver Transmitter (UART) -----------*/ -typedef struct -{ - union { - __I uint8_t RBR; - __O uint8_t THR; - __IO uint8_t DLL; - uint32_t RESERVED0; - }; - union { - __IO uint8_t DLM; - __IO uint32_t IER; - }; - union { - __I uint32_t IIR; - __O uint8_t FCR; - }; - __IO uint8_t LCR; - uint8_t RESERVED1[7]; - __IO uint8_t LSR; - uint8_t RESERVED2[7]; - __IO uint8_t SCR; - uint8_t RESERVED3[3]; - __IO uint32_t ACR; - __IO uint8_t ICR; - uint8_t RESERVED4[3]; - __IO uint8_t FDR; - uint8_t RESERVED5[7]; - __IO uint8_t TER; - uint8_t RESERVED6[27]; - __IO uint8_t RS485CTRL; - uint8_t RESERVED7[3]; - __IO uint8_t ADRMATCH; -} UART_TypeDef; - -typedef struct -{ - union { - __I uint8_t RBR; - __O uint8_t THR; - __IO uint8_t DLL; - uint32_t RESERVED0; - }; - union { - __IO uint8_t DLM; - __IO uint32_t IER; - }; - union { - __I uint32_t IIR; - __O uint8_t FCR; - }; - __IO uint8_t LCR; - uint8_t RESERVED1[3]; - __IO uint8_t MCR; - uint8_t RESERVED2[3]; - __IO uint8_t LSR; - uint8_t RESERVED3[3]; - __IO uint8_t MSR; - uint8_t RESERVED4[3]; - __IO uint8_t SCR; - uint8_t RESERVED5[3]; - __IO uint32_t ACR; - uint32_t RESERVED6; - __IO uint32_t FDR; - uint32_t RESERVED7; - __IO uint8_t TER; - uint8_t RESERVED8[27]; - __IO uint8_t RS485CTRL; - uint8_t RESERVED9[3]; - __IO uint8_t ADRMATCH; - uint8_t RESERVED10[3]; - __IO uint8_t RS485DLY; -} UART1_TypeDef; - -/*------------- Serial Peripheral Interface (SPI) ----------------------------*/ -typedef struct -{ - __IO uint32_t SPCR; - __I uint32_t SPSR; - __IO uint32_t SPDR; - __IO uint32_t SPCCR; - uint32_t RESERVED0[3]; - __IO uint32_t SPINT; -} SPI_TypeDef; - -/*------------- Synchronous Serial Communication (SSP) -----------------------*/ -typedef struct -{ - __IO uint32_t CR0; - __IO uint32_t CR1; - __IO uint32_t DR; - __I uint32_t SR; - __IO uint32_t CPSR; - __IO uint32_t IMSC; - __IO uint32_t RIS; - __IO uint32_t MIS; - __IO uint32_t ICR; - __IO uint32_t DMACR; -} SSP_TypeDef; - -/*------------- Inter-Integrated Circuit (I2C) -------------------------------*/ -typedef struct -{ - __IO uint32_t I2CONSET; - __I uint32_t I2STAT; - __IO uint32_t I2DAT; - __IO uint32_t I2ADR0; - __IO uint32_t I2SCLH; - __IO uint32_t I2SCLL; - __O uint32_t I2CONCLR; - __IO uint32_t MMCTRL; - __IO uint32_t I2ADR1; - __IO uint32_t I2ADR2; - __IO uint32_t I2ADR3; - __I uint32_t I2DATA_BUFFER; - __IO uint32_t I2MASK0; - __IO uint32_t I2MASK1; - __IO uint32_t I2MASK2; - __IO uint32_t I2MASK3; -} I2C_TypeDef; - -/*------------- Inter IC Sound (I2S) -----------------------------------------*/ -typedef struct -{ - __IO uint32_t I2SDAO; - __IO uint32_t I2SDAI; - __O uint32_t I2STXFIFO; - __I uint32_t I2SRXFIFO; - __I uint32_t I2SSTATE; - __IO uint32_t I2SDMA1; - __IO uint32_t I2SDMA2; - __IO uint32_t I2SIRQ; - __IO uint32_t I2STXRATE; - __IO uint32_t I2SRXRATE; - __IO uint32_t I2STXBITRATE; - __IO uint32_t I2SRXBITRATE; - __IO uint32_t I2STXMODE; - __IO uint32_t I2SRXMODE; -} I2S_TypeDef; - -/*------------- Repetitive Interrupt Timer (RIT) -----------------------------*/ -typedef struct -{ - __IO uint32_t RICOMPVAL; - __IO uint32_t RIMASK; - __IO uint8_t RICTRL; - uint8_t RESERVED0[3]; - __IO uint32_t RICOUNTER; -} RIT_TypeDef; - -/*------------- Real-Time Clock (RTC) ----------------------------------------*/ -typedef struct -{ - __IO uint8_t ILR; - uint8_t RESERVED0[3]; - __IO uint8_t CCR; - uint8_t RESERVED1[3]; - __IO uint8_t CIIR; - uint8_t RESERVED2[3]; - __IO uint8_t AMR; - uint8_t RESERVED3[3]; - __I uint32_t CTIME0; - __I uint32_t CTIME1; - __I uint32_t CTIME2; - __IO uint8_t SEC; - uint8_t RESERVED4[3]; - __IO uint8_t MIN; - uint8_t RESERVED5[3]; - __IO uint8_t HOUR; - uint8_t RESERVED6[3]; - __IO uint8_t DOM; - uint8_t RESERVED7[3]; - __IO uint8_t DOW; - uint8_t RESERVED8[3]; - __IO uint16_t DOY; - uint16_t RESERVED9; - __IO uint8_t MONTH; - uint8_t RESERVED10[3]; - __IO uint16_t YEAR; - uint16_t RESERVED11; - __IO uint32_t CALIBRATION; - __IO uint32_t GPREG0; - __IO uint32_t GPREG1; - __IO uint32_t GPREG2; - __IO uint32_t GPREG3; - __IO uint32_t GPREG4; - __IO uint8_t WAKEUPDIS; - uint8_t RESERVED12[3]; - __IO uint8_t PWRCTRL; - uint8_t RESERVED13[3]; - __IO uint8_t ALSEC; - uint8_t RESERVED14[3]; - __IO uint8_t ALMIN; - uint8_t RESERVED15[3]; - __IO uint8_t ALHOUR; - uint8_t RESERVED16[3]; - __IO uint8_t ALDOM; - uint8_t RESERVED17[3]; - __IO uint8_t ALDOW; - uint8_t RESERVED18[3]; - __IO uint16_t ALDOY; - uint16_t RESERVED19; - __IO uint8_t ALMON; - uint8_t RESERVED20[3]; - __IO uint16_t ALYEAR; - uint16_t RESERVED21; -} RTC_TypeDef; - -/*------------- Watchdog Timer (WDT) -----------------------------------------*/ -typedef struct -{ - __IO uint8_t WDMOD; - uint8_t RESERVED0[3]; - __IO uint32_t WDTC; - __O uint8_t WDFEED; - uint8_t RESERVED1[3]; - __I uint32_t WDTV; - __IO uint32_t WDCLKSEL; -} WDT_TypeDef; - -/*------------- Analog-to-Digital Converter (ADC) ----------------------------*/ -typedef struct -{ - __IO uint32_t ADCR; - __IO uint32_t ADGDR; - uint32_t RESERVED0; - __IO uint32_t ADINTEN; - __I uint32_t ADDR0; - __I uint32_t ADDR1; - __I uint32_t ADDR2; - __I uint32_t ADDR3; - __I uint32_t ADDR4; - __I uint32_t ADDR5; - __I uint32_t ADDR6; - __I uint32_t ADDR7; - __I uint32_t ADSTAT; - __IO uint32_t ADTRM; -} ADC_TypeDef; - -/*------------- Digital-to-Analog Converter (DAC) ----------------------------*/ -typedef struct -{ - __IO uint32_t DACR; - __IO uint32_t DACCTRL; - __IO uint16_t DACCNTVAL; -} DAC_TypeDef; - -/*------------- Motor Control Pulse-Width Modulation (MCPWM) -----------------*/ -typedef struct -{ - __I uint32_t MCCON; - __O uint32_t MCCON_SET; - __O uint32_t MCCON_CLR; - __I uint32_t MCCAPCON; - __O uint32_t MCCAPCON_SET; - __O uint32_t MCCAPCON_CLR; - __IO uint32_t MCTIM0; - __IO uint32_t MCTIM1; - __IO uint32_t MCTIM2; - __IO uint32_t MCPER0; - __IO uint32_t MCPER1; - __IO uint32_t MCPER2; - __IO uint32_t MCPW0; - __IO uint32_t MCPW1; - __IO uint32_t MCPW2; - __IO uint32_t MCDEADTIME; - __IO uint32_t MCCCP; - __IO uint32_t MCCR0; - __IO uint32_t MCCR1; - __IO uint32_t MCCR2; - __I uint32_t MCINTEN; - __O uint32_t MCINTEN_SET; - __O uint32_t MCINTEN_CLR; - __I uint32_t MCCNTCON; - __O uint32_t MCCNTCON_SET; - __O uint32_t MCCNTCON_CLR; - __I uint32_t MCINTFLAG; - __O uint32_t MCINTFLAG_SET; - __O uint32_t MCINTFLAG_CLR; - __O uint32_t MCCAP_CLR; -} MCPWM_TypeDef; - -/*------------- Quadrature Encoder Interface (QEI) ---------------------------*/ -typedef struct -{ - __O uint32_t QEICON; - __I uint32_t QEISTAT; - __IO uint32_t QEICONF; - __I uint32_t QEIPOS; - __IO uint32_t QEIMAXPOS; - __IO uint32_t CMPOS0; - __IO uint32_t CMPOS1; - __IO uint32_t CMPOS2; - __I uint32_t INXCNT; - __IO uint32_t INXCMP; - __IO uint32_t QEILOAD; - __I uint32_t QEITIME; - __I uint32_t QEIVEL; - __I uint32_t QEICAP; - __IO uint32_t VELCOMP; - __IO uint32_t FILTER; - uint32_t RESERVED0[998]; - __O uint32_t QEIIEC; - __O uint32_t QEIIES; - __I uint32_t QEIINTSTAT; - __I uint32_t QEIIE; - __O uint32_t QEICLR; - __O uint32_t QEISET; -} QEI_TypeDef; - -/*------------- Controller Area Network (CAN) --------------------------------*/ -typedef struct -{ - __IO uint32_t mask[512]; /* ID Masks */ -} CANAF_RAM_TypeDef; - -typedef struct /* Acceptance Filter Registers */ -{ - __IO uint32_t AFMR; - __IO uint32_t SFF_sa; - __IO uint32_t SFF_GRP_sa; - __IO uint32_t EFF_sa; - __IO uint32_t EFF_GRP_sa; - __IO uint32_t ENDofTable; - __I uint32_t LUTerrAd; - __I uint32_t LUTerr; -} CANAF_TypeDef; - -typedef struct /* Central Registers */ -{ - __I uint32_t CANTxSR; - __I uint32_t CANRxSR; - __I uint32_t CANMSR; -} CANCR_TypeDef; - -typedef struct /* Controller Registers */ -{ - __IO uint32_t MOD; - __O uint32_t CMR; - __IO uint32_t GSR; - __I uint32_t ICR; - __IO uint32_t IER; - __IO uint32_t BTR; - __IO uint32_t EWL; - __I uint32_t SR; - __IO uint32_t RFS; - __IO uint32_t RID; - __IO uint32_t RDA; - __IO uint32_t RDB; - __IO uint32_t TFI1; - __IO uint32_t TID1; - __IO uint32_t TDA1; - __IO uint32_t TDB1; - __IO uint32_t TFI2; - __IO uint32_t TID2; - __IO uint32_t TDA2; - __IO uint32_t TDB2; - __IO uint32_t TFI3; - __IO uint32_t TID3; - __IO uint32_t TDA3; - __IO uint32_t TDB3; -} CAN_TypeDef; - -/*------------- General Purpose Direct Memory Access (GPDMA) -----------------*/ -typedef struct /* Common Registers */ -{ - __I uint32_t DMACIntStat; - __I uint32_t DMACIntTCStat; - __O uint32_t DMACIntTCClear; - __I uint32_t DMACIntErrStat; - __O uint32_t DMACIntErrClr; - __I uint32_t DMACRawIntTCStat; - __I uint32_t DMACRawIntErrStat; - __I uint32_t DMACEnbldChns; - __IO uint32_t DMACSoftBReq; - __IO uint32_t DMACSoftSReq; - __IO uint32_t DMACSoftLBReq; - __IO uint32_t DMACSoftLSReq; - __IO uint32_t DMACConfig; - __IO uint32_t DMACSync; -} GPDMA_TypeDef; - -typedef struct /* Channel Registers */ -{ - __IO uint32_t DMACCSrcAddr; - __IO uint32_t DMACCDestAddr; - __IO uint32_t DMACCLLI; - __IO uint32_t DMACCControl; - __IO uint32_t DMACCConfig; -} GPDMACH_TypeDef; - -/*------------- Universal Serial Bus (USB) -----------------------------------*/ -typedef struct -{ - __I uint32_t HcRevision; /* USB Host Registers */ - __IO uint32_t HcControl; - __IO uint32_t HcCommandStatus; - __IO uint32_t HcInterruptStatus; - __IO uint32_t HcInterruptEnable; - __IO uint32_t HcInterruptDisable; - __IO uint32_t HcHCCA; - __I uint32_t HcPeriodCurrentED; - __IO uint32_t HcControlHeadED; - __IO uint32_t HcControlCurrentED; - __IO uint32_t HcBulkHeadED; - __IO uint32_t HcBulkCurrentED; - __I uint32_t HcDoneHead; - __IO uint32_t HcFmInterval; - __I uint32_t HcFmRemaining; - __I uint32_t HcFmNumber; - __IO uint32_t HcPeriodicStart; - __IO uint32_t HcLSTreshold; - __IO uint32_t HcRhDescriptorA; - __IO uint32_t HcRhDescriptorB; - __IO uint32_t HcRhStatus; - __IO uint32_t HcRhPortStatus1; - __IO uint32_t HcRhPortStatus2; - uint32_t RESERVED0[40]; - __I uint32_t Module_ID; - - __I uint32_t OTGIntSt; /* USB On-The-Go Registers */ - __IO uint32_t OTGIntEn; - __O uint32_t OTGIntSet; - __O uint32_t OTGIntClr; - __IO uint32_t OTGStCtrl; - __IO uint32_t OTGTmr; - uint32_t RESERVED1[58]; - - __I uint32_t USBDevIntSt; /* USB Device Interrupt Registers */ - __IO uint32_t USBDevIntEn; - __O uint32_t USBDevIntClr; - __O uint32_t USBDevIntSet; - - __O uint32_t USBCmdCode; /* USB Device SIE Command Registers */ - __I uint32_t USBCmdData; - - __I uint32_t USBRxData; /* USB Device Transfer Registers */ - __O uint32_t USBTxData; - __I uint32_t USBRxPLen; - __O uint32_t USBTxPLen; - __IO uint32_t USBCtrl; - __O uint32_t USBDevIntPri; - - __I uint32_t USBEpIntSt; /* USB Device Endpoint Interrupt Regs */ - __IO uint32_t USBEpIntEn; - __O uint32_t USBEpIntClr; - __O uint32_t USBEpIntSet; - __O uint32_t USBEpIntPri; - - __IO uint32_t USBReEp; /* USB Device Endpoint Realization Reg*/ - __O uint32_t USBEpInd; - __IO uint32_t USBMaxPSize; - - __I uint32_t USBDMARSt; /* USB Device DMA Registers */ - __O uint32_t USBDMARClr; - __O uint32_t USBDMARSet; - uint32_t RESERVED2[9]; - __IO uint32_t USBUDCAH; - __I uint32_t USBEpDMASt; - __O uint32_t USBEpDMAEn; - __O uint32_t USBEpDMADis; - __I uint32_t USBDMAIntSt; - __IO uint32_t USBDMAIntEn; - uint32_t RESERVED3[2]; - __I uint32_t USBEoTIntSt; - __O uint32_t USBEoTIntClr; - __O uint32_t USBEoTIntSet; - __I uint32_t USBNDDRIntSt; - __O uint32_t USBNDDRIntClr; - __O uint32_t USBNDDRIntSet; - __I uint32_t USBSysErrIntSt; - __O uint32_t USBSysErrIntClr; - __O uint32_t USBSysErrIntSet; - uint32_t RESERVED4[15]; - - __I uint32_t I2C_RX; /* USB OTG I2C Registers */ - __O uint32_t I2C_WO; - __I uint32_t I2C_STS; - __IO uint32_t I2C_CTL; - __IO uint32_t I2C_CLKHI; - __O uint32_t I2C_CLKLO; - uint32_t RESERVED5[823]; - - union { - __IO uint32_t USBClkCtrl; /* USB Clock Control Registers */ - __IO uint32_t OTGClkCtrl; - } ; - union { - __I uint32_t USBClkSt; - __I uint32_t OTGClkSt; - }; -} USB_TypeDef; - -/*------------- Ethernet Media Access Controller (EMAC) ----------------------*/ -typedef struct -{ - __IO uint32_t MAC1; /* MAC Registers */ - __IO uint32_t MAC2; - __IO uint32_t IPGT; - __IO uint32_t IPGR; - __IO uint32_t CLRT; - __IO uint32_t MAXF; - __IO uint32_t SUPP; - __IO uint32_t TEST; - __IO uint32_t MCFG; - __IO uint32_t MCMD; - __IO uint32_t MADR; - __O uint32_t MWTD; - __I uint32_t MRDD; - __I uint32_t MIND; - uint32_t RESERVED0[2]; - __IO uint32_t SA0; - __IO uint32_t SA1; - __IO uint32_t SA2; - uint32_t RESERVED1[45]; - __IO uint32_t Command; /* Control Registers */ - __I uint32_t Status; - __IO uint32_t RxDescriptor; - __IO uint32_t RxStatus; - __IO uint32_t RxDescriptorNumber; - __I uint32_t RxProduceIndex; - __IO uint32_t RxConsumeIndex; - __IO uint32_t TxDescriptor; - __IO uint32_t TxStatus; - __IO uint32_t TxDescriptorNumber; - __IO uint32_t TxProduceIndex; - __I uint32_t TxConsumeIndex; - uint32_t RESERVED2[10]; - __I uint32_t TSV0; - __I uint32_t TSV1; - __I uint32_t RSV; - uint32_t RESERVED3[3]; - __IO uint32_t FlowControlCounter; - __I uint32_t FlowControlStatus; - uint32_t RESERVED4[34]; - __IO uint32_t RxFilterCtrl; /* Rx Filter Registers */ - __IO uint32_t RxFilterWoLStatus; - __IO uint32_t RxFilterWoLClear; - uint32_t RESERVED5; - __IO uint32_t HashFilterL; - __IO uint32_t HashFilterH; - uint32_t RESERVED6[882]; - __I uint32_t IntStatus; /* Module Control Registers */ - __IO uint32_t IntEnable; - __O uint32_t IntClear; - __O uint32_t IntSet; - uint32_t RESERVED7; - __IO uint32_t PowerDown; - uint32_t RESERVED8; - __IO uint32_t Module_ID; -} EMAC_TypeDef; - - -/******************************************************************************/ -/* Peripheral memory map */ -/******************************************************************************/ -/* Base addresses */ -#define FLASH_BASE (0x00000000UL) -#define RAM_BASE (0x10000000UL) -#define GPIO_BASE (0x2009C000UL) -#define APB0_BASE (0x40000000UL) -#define APB1_BASE (0x40080000UL) -#define AHB_BASE (0x50000000UL) -#define CM3_BASE (0xE0000000UL) - -/* APB0 peripherals */ -#define WDT_BASE (APB0_BASE + 0x00000) -#define TIM0_BASE (APB0_BASE + 0x04000) -#define TIM1_BASE (APB0_BASE + 0x08000) -#define UART0_BASE (APB0_BASE + 0x0C000) -#define UART1_BASE (APB0_BASE + 0x10000) -#define PWM1_BASE (APB0_BASE + 0x18000) -#define I2C0_BASE (APB0_BASE + 0x1C000) -#define SPI_BASE (APB0_BASE + 0x20000) -#define RTC_BASE (APB0_BASE + 0x24000) -#define GPIOINT_BASE (APB0_BASE + 0x28080) -#define PINCON_BASE (APB0_BASE + 0x2C000) -#define SSP1_BASE (APB0_BASE + 0x30000) -#define ADC_BASE (APB0_BASE + 0x34000) -#define CANAF_RAM_BASE (APB0_BASE + 0x38000) -#define CANAF_BASE (APB0_BASE + 0x3C000) -#define CANCR_BASE (APB0_BASE + 0x40000) -#define CAN1_BASE (APB0_BASE + 0x44000) -#define CAN2_BASE (APB0_BASE + 0x48000) -#define I2C1_BASE (APB0_BASE + 0x5C000) - -/* APB1 peripherals */ -#define SSP0_BASE (APB1_BASE + 0x08000) -#define DAC_BASE (APB1_BASE + 0x0C000) -#define TIM2_BASE (APB1_BASE + 0x10000) -#define TIM3_BASE (APB1_BASE + 0x14000) -#define UART2_BASE (APB1_BASE + 0x18000) -#define UART3_BASE (APB1_BASE + 0x1C000) -#define I2C2_BASE (APB1_BASE + 0x20000) -#define I2S_BASE (APB1_BASE + 0x28000) -#define RIT_BASE (APB1_BASE + 0x30000) -#define MCPWM_BASE (APB1_BASE + 0x38000) -#define QEI_BASE (APB1_BASE + 0x3C000) -#define SC_BASE (APB1_BASE + 0x7C000) - -/* AHB peripherals */ -#define EMAC_BASE (AHB_BASE + 0x00000) -#define GPDMA_BASE (AHB_BASE + 0x04000) -#define GPDMACH0_BASE (AHB_BASE + 0x04100) -#define GPDMACH1_BASE (AHB_BASE + 0x04120) -#define GPDMACH2_BASE (AHB_BASE + 0x04140) -#define GPDMACH3_BASE (AHB_BASE + 0x04160) -#define GPDMACH4_BASE (AHB_BASE + 0x04180) -#define GPDMACH5_BASE (AHB_BASE + 0x041A0) -#define GPDMACH6_BASE (AHB_BASE + 0x041C0) -#define GPDMACH7_BASE (AHB_BASE + 0x041E0) -#define USB_BASE (AHB_BASE + 0x0C000) - -/* GPIOs */ -#define GPIO0_BASE (GPIO_BASE + 0x00000) -#define GPIO1_BASE (GPIO_BASE + 0x00020) -#define GPIO2_BASE (GPIO_BASE + 0x00040) -#define GPIO3_BASE (GPIO_BASE + 0x00060) -#define GPIO4_BASE (GPIO_BASE + 0x00080) - - -/******************************************************************************/ -/* Peripheral declaration */ -/******************************************************************************/ -#define SC (( SC_TypeDef *) SC_BASE) -#define GPIO0 (( GPIO_TypeDef *) GPIO0_BASE) -#define GPIO1 (( GPIO_TypeDef *) GPIO1_BASE) -#define GPIO2 (( GPIO_TypeDef *) GPIO2_BASE) -#define GPIO3 (( GPIO_TypeDef *) GPIO3_BASE) -#define GPIO4 (( GPIO_TypeDef *) GPIO4_BASE) -#define WDT (( WDT_TypeDef *) WDT_BASE) -#define TIM0 (( TIM_TypeDef *) TIM0_BASE) -#define TIM1 (( TIM_TypeDef *) TIM1_BASE) -#define TIM2 (( TIM_TypeDef *) TIM2_BASE) -#define TIM3 (( TIM_TypeDef *) TIM3_BASE) -#define RIT (( RIT_TypeDef *) RIT_BASE) -#define UART0 (( UART_TypeDef *) UART0_BASE) -#define UART1 (( UART1_TypeDef *) UART1_BASE) -#define UART2 (( UART_TypeDef *) UART2_BASE) -#define UART3 (( UART_TypeDef *) UART3_BASE) -#define PWM1 (( PWM_TypeDef *) PWM1_BASE) -#define I2C0 (( I2C_TypeDef *) I2C0_BASE) -#define I2C1 (( I2C_TypeDef *) I2C1_BASE) -#define I2C2 (( I2C_TypeDef *) I2C2_BASE) -#define I2S (( I2S_TypeDef *) I2S_BASE) -#define SPI (( SPI_TypeDef *) SPI_BASE) -#define RTC (( RTC_TypeDef *) RTC_BASE) -#define GPIOINT (( GPIOINT_TypeDef *) GPIOINT_BASE) -#define PINCON (( PINCON_TypeDef *) PINCON_BASE) -#define SSP0 (( SSP_TypeDef *) SSP0_BASE) -#define SSP1 (( SSP_TypeDef *) SSP1_BASE) -#define ADC (( ADC_TypeDef *) ADC_BASE) -#define DAC (( DAC_TypeDef *) DAC_BASE) -#define CANAF_RAM ((CANAF_RAM_TypeDef *) CANAF_RAM_BASE) -#define CANAF (( CANAF_TypeDef *) CANAF_BASE) -#define CANCR (( CANCR_TypeDef *) CANCR_BASE) -#define CAN1 (( CAN_TypeDef *) CAN1_BASE) -#define CAN2 (( CAN_TypeDef *) CAN2_BASE) -#define MCPWM (( MCPWM_TypeDef *) MCPWM_BASE) -#define QEI (( QEI_TypeDef *) QEI_BASE) -#define EMAC (( EMAC_TypeDef *) EMAC_BASE) -#define GPDMA (( GPDMA_TypeDef *) GPDMA_BASE) -#define GPDMACH0 (( GPDMACH_TypeDef *) GPDMACH0_BASE) -#define GPDMACH1 (( GPDMACH_TypeDef *) GPDMACH1_BASE) -#define GPDMACH2 (( GPDMACH_TypeDef *) GPDMACH2_BASE) -#define GPDMACH3 (( GPDMACH_TypeDef *) GPDMACH3_BASE) -#define GPDMACH4 (( GPDMACH_TypeDef *) GPDMACH4_BASE) -#define GPDMACH5 (( GPDMACH_TypeDef *) GPDMACH5_BASE) -#define GPDMACH6 (( GPDMACH_TypeDef *) GPDMACH6_BASE) -#define GPDMACH7 (( GPDMACH_TypeDef *) GPDMACH7_BASE) -#define USB (( USB_TypeDef *) USB_BASE) - -#endif // __LPC17xx_H__ - - -#endif diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/LPCUSB/USB_CDC.c b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/LPCUSB/USB_CDC.c deleted file mode 100644 index 19ef83122..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/LPCUSB/USB_CDC.c +++ /dev/null @@ -1,460 +0,0 @@ -/* - LPCUSB, an USB device driver for LPC microcontrollers - Copyright (C) 2006 Bertrik Sikken (bertrik@sikken.nl) - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - 3. The name of the author may not be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -/* - Minimal implementation of a USB serial port, using the CDC class. - This example application simply echoes everything it receives right back - to the host. - - Windows: - Extract the usbser.sys file from .cab file in C:\WINDOWS\Driver Cache\i386 - and store it somewhere (C:\temp is a good place) along with the usbser.inf - file. Then plug in the LPC176x and direct windows to the usbser driver. - Windows then creates an extra COMx port that you can open in a terminal - program, like hyperterminal. [Note for FreeRTOS users - the required .inf - file is included in the project directory.] - - Linux: - The device should be recognised automatically by the cdc_acm driver, - which creates a /dev/ttyACMx device file that acts just like a regular - serial port. - -*/ - -#include "FreeRTOS.h" -#include "task.h" -#include "queue.h" - -#include -#include - -#include "usbapi.h" -#include "usbdebug.h" -#include "usbstruct.h" - -#include "LPC17xx.h" - -#define usbMAX_SEND_BLOCK ( 20 / portTICK_PERIOD_MS ) -#define usbBUFFER_LEN ( 20 ) - -#define INCREMENT_ECHO_BY 1 -#define BAUD_RATE 115200 - -#define INT_IN_EP 0x81 -#define BULK_OUT_EP 0x05 -#define BULK_IN_EP 0x82 - -#define MAX_PACKET_SIZE 64 - -#define LE_WORD(x) ((x)&0xFF),((x)>>8) - -// CDC definitions -#define CS_INTERFACE 0x24 -#define CS_ENDPOINT 0x25 - -#define SET_LINE_CODING 0x20 -#define GET_LINE_CODING 0x21 -#define SET_CONTROL_LINE_STATE 0x22 - -// data structure for GET_LINE_CODING / SET_LINE_CODING class requests -typedef struct { - unsigned long dwDTERate; - unsigned char bCharFormat; - unsigned char bParityType; - unsigned char bDataBits; -} TLineCoding; - -static TLineCoding LineCoding = {115200, 0, 0, 8}; -static unsigned char abBulkBuf[64]; -static unsigned char abClassReqData[8]; - -static QueueHandle_t xRxedChars = NULL, xCharsForTx = NULL; - -// forward declaration of interrupt handler -void USBIntHandler(void); - -static const unsigned char abDescriptors[] = { - -// device descriptor - 0x12, - DESC_DEVICE, - LE_WORD(0x0101), // bcdUSB - 0x02, // bDeviceClass - 0x00, // bDeviceSubClass - 0x00, // bDeviceProtocol - MAX_PACKET_SIZE0, // bMaxPacketSize - LE_WORD(0xFFFF), // idVendor - LE_WORD(0x0005), // idProduct - LE_WORD(0x0100), // bcdDevice - 0x01, // iManufacturer - 0x02, // iProduct - 0x03, // iSerialNumber - 0x01, // bNumConfigurations - -// configuration descriptor - 0x09, - DESC_CONFIGURATION, - LE_WORD(67), // wTotalLength - 0x02, // bNumInterfaces - 0x01, // bConfigurationValue - 0x00, // iConfiguration - 0xC0, // bmAttributes - 0x32, // bMaxPower -// control class interface - 0x09, - DESC_INTERFACE, - 0x00, // bInterfaceNumber - 0x00, // bAlternateSetting - 0x01, // bNumEndPoints - 0x02, // bInterfaceClass - 0x02, // bInterfaceSubClass - 0x01, // bInterfaceProtocol, linux requires value of 1 for the cdc_acm module - 0x00, // iInterface -// header functional descriptor - 0x05, - CS_INTERFACE, - 0x00, - LE_WORD(0x0110), -// call management functional descriptor - 0x05, - CS_INTERFACE, - 0x01, - 0x01, // bmCapabilities = device handles call management - 0x01, // bDataInterface -// ACM functional descriptor - 0x04, - CS_INTERFACE, - 0x02, - 0x02, // bmCapabilities -// union functional descriptor - 0x05, - CS_INTERFACE, - 0x06, - 0x00, // bMasterInterface - 0x01, // bSlaveInterface0 -// notification EP - 0x07, - DESC_ENDPOINT, - INT_IN_EP, // bEndpointAddress - 0x03, // bmAttributes = intr - LE_WORD(8), // wMaxPacketSize - 0x0A, // bInterval -// data class interface descriptor - 0x09, - DESC_INTERFACE, - 0x01, // bInterfaceNumber - 0x00, // bAlternateSetting - 0x02, // bNumEndPoints - 0x0A, // bInterfaceClass = data - 0x00, // bInterfaceSubClass - 0x00, // bInterfaceProtocol - 0x00, // iInterface -// data EP OUT - 0x07, - DESC_ENDPOINT, - BULK_OUT_EP, // bEndpointAddress - 0x02, // bmAttributes = bulk - LE_WORD(MAX_PACKET_SIZE), // wMaxPacketSize - 0x00, // bInterval -// data EP in - 0x07, - DESC_ENDPOINT, - BULK_IN_EP, // bEndpointAddress - 0x02, // bmAttributes = bulk - LE_WORD(MAX_PACKET_SIZE), // wMaxPacketSize - 0x00, // bInterval - - // string descriptors - 0x04, - DESC_STRING, - LE_WORD(0x0409), - - 0x0E, - DESC_STRING, - 'L', 0, 'P', 0, 'C', 0, 'U', 0, 'S', 0, 'B', 0, - - 0x14, - DESC_STRING, - 'U', 0, 'S', 0, 'B', 0, 'S', 0, 'e', 0, 'r', 0, 'i', 0, 'a', 0, 'l', 0, - - 0x12, - DESC_STRING, - 'D', 0, 'E', 0, 'A', 0, 'D', 0, 'C', 0, '0', 0, 'D', 0, 'E', 0, - -// terminating zero - 0 -}; - - -/** - Local function to handle incoming bulk data - - @param [in] bEP - @param [in] bEPStatus - */ -static void BulkOut(unsigned char bEP, unsigned char bEPStatus) -{ - int i, iLen; - long lHigherPriorityTaskWoken = pdFALSE; - - ( void ) bEPStatus; - - // get data from USB into intermediate buffer - iLen = USBHwEPRead(bEP, abBulkBuf, sizeof(abBulkBuf)); - for (i = 0; i < iLen; i++) { - // put into queue - xQueueSendFromISR( xRxedChars, &( abBulkBuf[ i ] ), &lHigherPriorityTaskWoken ); - } - - portEND_SWITCHING_ISR( lHigherPriorityTaskWoken ); -} - - -/** - Local function to handle outgoing bulk data - - @param [in] bEP - @param [in] bEPStatus - */ -static void BulkIn(unsigned char bEP, unsigned char bEPStatus) -{ - int i, iLen; - long lHigherPriorityTaskWoken = pdFALSE; - - ( void ) bEPStatus; - - if (uxQueueMessagesWaitingFromISR( xCharsForTx ) == 0) { - // no more data, disable further NAK interrupts until next USB frame - USBHwNakIntEnable(0); - return; - } - - // get bytes from transmit FIFO into intermediate buffer - for (i = 0; i < MAX_PACKET_SIZE; i++) { - if( xQueueReceiveFromISR( xCharsForTx, ( &abBulkBuf[i] ), &lHigherPriorityTaskWoken ) != pdPASS ) - { - break; - } - } - iLen = i; - - // send over USB - if (iLen > 0) { - USBHwEPWrite(bEP, abBulkBuf, iLen); - } - - portEND_SWITCHING_ISR( lHigherPriorityTaskWoken ); -} - - -/** - Local function to handle the USB-CDC class requests - - @param [in] pSetup - @param [out] piLen - @param [out] ppbData - */ -static BOOL HandleClassRequest(TSetupPacket *pSetup, int *piLen, unsigned char **ppbData) -{ - switch (pSetup->bRequest) { - - // set line coding - case SET_LINE_CODING: -DBG("SET_LINE_CODING\n"); - memcpy((unsigned char *)&LineCoding, *ppbData, 7); - *piLen = 7; -DBG("dwDTERate=%u, bCharFormat=%u, bParityType=%u, bDataBits=%u\n", - LineCoding.dwDTERate, - LineCoding.bCharFormat, - LineCoding.bParityType, - LineCoding.bDataBits); - break; - - // get line coding - case GET_LINE_CODING: -DBG("GET_LINE_CODING\n"); - *ppbData = (unsigned char *)&LineCoding; - *piLen = 7; - break; - - // set control line state - case SET_CONTROL_LINE_STATE: - // bit0 = DTR, bit = RTS -DBG("SET_CONTROL_LINE_STATE %X\n", pSetup->wValue); - break; - - default: - return FALSE; - } - return TRUE; -} - - -/** - Writes one character to VCOM port - - @param [in] c character to write - @returns character written, or EOF if character could not be written - */ -int VCOM_putchar(int c) -{ -char cc = ( char ) c; - - if( xQueueSend( xCharsForTx, &cc, usbMAX_SEND_BLOCK ) == pdPASS ) - { - return c; - } - else - { - return EOF; - } -} - - -/** - Reads one character from VCOM port - - @returns character read, or EOF if character could not be read - */ -int VCOM_getchar(void) -{ - unsigned char c; - - /* Block the task until a character is available. */ - xQueueReceive( xRxedChars, &c, portMAX_DELAY ); - return c; -} - - -/** - Interrupt handler - - Simply calls the USB ISR - */ -//void USBIntHandler(void) -void USB_IRQHandler(void) -{ - USBHwISR(); -} - - -static void USBFrameHandler(unsigned short wFrame) -{ - ( void ) wFrame; - - if( uxQueueMessagesWaitingFromISR( xCharsForTx ) > 0 ) - { - // data available, enable NAK interrupt on bulk in - USBHwNakIntEnable(INACK_BI); - } -} - -// CodeRed - added CPUcpsie - -unsigned long CPUcpsie(void) -{ - unsigned long ulRet; - - // - // Read PRIMASK and enable interrupts. - // - __asm(" mrs %0, PRIMASK\n" - " cpsie i\n" - " bx lr\n" - : "=r" (ulRet)); - - // - // The return is handled in the inline assembly, but the compiler will - // still complain if there is not an explicit return here (despite the fact - // that this does not result in any code being produced because of the - // naked attribute). - // - return(ulRet); -} - -void vUSBTask( void *pvParameters ) -{ - int c; - - /* Just to prevent compiler warnings about the unused parameter. */ - ( void ) pvParameters; - DBG("Initialising USB stack\n"); - - xRxedChars = xQueueCreate( usbBUFFER_LEN, sizeof( char ) ); - xCharsForTx = xQueueCreate( usbBUFFER_LEN, sizeof( char ) ); - - if( ( xRxedChars == NULL ) || ( xCharsForTx == NULL ) ) - { - /* Not enough heap available to create the buffer queues, can't do - anything so just delete ourselves. */ - vTaskDelete( NULL ); - } - - - // initialise stack - USBInit(); - - // register descriptors - USBRegisterDescriptors(abDescriptors); - - // register class request handler - USBRegisterRequestHandler(REQTYPE_TYPE_CLASS, HandleClassRequest, abClassReqData); - - // register endpoint handlers - USBHwRegisterEPIntHandler(INT_IN_EP, NULL); - USBHwRegisterEPIntHandler(BULK_IN_EP, BulkIn); - USBHwRegisterEPIntHandler(BULK_OUT_EP, BulkOut); - - // register frame handler - USBHwRegisterFrameHandler(USBFrameHandler); - - // enable bulk-in interrupts on NAKs - USBHwNakIntEnable(INACK_BI); - - DBG("Starting USB communication\n"); - - NVIC_SetPriority( USB_IRQn, configUSB_INTERRUPT_PRIORITY ); - NVIC_EnableIRQ( USB_IRQn ); - - // connect to bus - - DBG("Connecting to USB bus\n"); - USBHwConnect(TRUE); - - // echo any character received (do USB stuff in interrupt) - for( ;; ) - { - c = VCOM_getchar(); - if (c != EOF) - { - // Echo character back with INCREMENT_ECHO_BY offset, so for example if - // INCREMENT_ECHO_BY is 1 and 'A' is received, 'B' will be echoed back. - VCOM_putchar(c + INCREMENT_ECHO_BY ); - } - } -} - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/LPCUSB/type.h b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/LPCUSB/type.h deleted file mode 100644 index 89d36850a..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/LPCUSB/type.h +++ /dev/null @@ -1,38 +0,0 @@ -/***************************************************************************** - * type.h: Type definition Header file for NXP LPC17xx Family - * Microprocessors - * - * Copyright(C) 2008, NXP Semiconductor - * All rights reserved. - * - * History - * 2008.08.21 ver 1.00 Prelimnary version, first Release - * -******************************************************************************/ -#ifndef __TYPE_H__ -#define __TYPE_H__ - -#ifndef NULL -#define NULL ((void *)0) -#endif - -#ifndef FALSE -#define FALSE (0) -#endif - -#ifndef TRUE -#define TRUE (1) -#endif - -typedef unsigned char BYTE; -typedef unsigned short WORD; -typedef unsigned long DWORD; -typedef unsigned int BOOL; - -typedef enum {RESET = 0, SET = !RESET} FlagStatus, ITStatus; -typedef enum {DISABLE = 0, ENABLE = !DISABLE} FunctionalState; - -/* Pointer to Function returning Void (any number of parameters) */ -typedef void (*PFV)(); - -#endif /* __TYPE_H__ */ diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/LPCUSB/usbapi.h b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/LPCUSB/usbapi.h deleted file mode 100644 index 050f0d95b..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/LPCUSB/usbapi.h +++ /dev/null @@ -1,118 +0,0 @@ -/* - LPCUSB, an USB device driver for LPC microcontrollers - Copyright (C) 2006 Bertrik Sikken (bertrik@sikken.nl) - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - 3. The name of the author may not be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -/** - @file -*/ - -#include "usbstruct.h" // for TSetupPacket - -/************************************************************************* - USB configuration -**************************************************************************/ - -#define MAX_PACKET_SIZE0 64 /**< maximum packet size for EP 0 */ - -/************************************************************************* - USB hardware interface -**************************************************************************/ - -// endpoint status sent through callback -#define EP_STATUS_DATA (1<<0) /**< EP has data */ -#define EP_STATUS_STALLED (1<<1) /**< EP is stalled */ -#define EP_STATUS_SETUP (1<<2) /**< EP received setup packet */ -#define EP_STATUS_ERROR (1<<3) /**< EP data was overwritten by setup packet */ -#define EP_STATUS_NACKED (1<<4) /**< EP sent NAK */ - -// device status sent through callback -#define DEV_STATUS_CONNECT (1<<0) /**< device just got connected */ -#define DEV_STATUS_SUSPEND (1<<2) /**< device entered suspend state */ -#define DEV_STATUS_RESET (1<<4) /**< device just got reset */ - -// interrupt bits for NACK events in USBHwNakIntEnable -// (these bits conveniently coincide with the LPC176x USB controller bit) -#define INACK_CI (1<<1) /**< interrupt on NACK for control in */ -#define INACK_CO (1<<2) /**< interrupt on NACK for control out */ -#define INACK_II (1<<3) /**< interrupt on NACK for interrupt in */ -#define INACK_IO (1<<4) /**< interrupt on NACK for interrupt out */ -#define INACK_BI (1<<5) /**< interrupt on NACK for bulk in */ -#define INACK_BO (1<<6) /**< interrupt on NACK for bulk out */ - -BOOL USBHwInit (void); -void USBHwISR (void); - -void USBHwNakIntEnable (unsigned char bIntBits); - -void USBHwConnect (BOOL fConnect); - -void USBHwSetAddress (unsigned char bAddr); -void USBHwConfigDevice (BOOL fConfigured); - -// endpoint operations -void USBHwEPConfig (unsigned char bEP, unsigned short wMaxPacketSize); -int USBHwEPRead (unsigned char bEP, unsigned char *pbBuf, int iMaxLen); -int USBHwEPWrite (unsigned char bEP, unsigned char *pbBuf, int iLen); -void USBHwEPStall (unsigned char bEP, BOOL fStall); -unsigned char USBHwEPGetStatus (unsigned char bEP); - -/** Endpoint interrupt handler callback */ -typedef void (TFnEPIntHandler) (unsigned char bEP, unsigned char bEPStatus); -void USBHwRegisterEPIntHandler (unsigned char bEP, TFnEPIntHandler *pfnHandler); - -/** Device status handler callback */ -typedef void (TFnDevIntHandler) (unsigned char bDevStatus); -void USBHwRegisterDevIntHandler (TFnDevIntHandler *pfnHandler); - -/** Frame event handler callback */ -typedef void (TFnFrameHandler)(unsigned short wFrame); -void USBHwRegisterFrameHandler(TFnFrameHandler *pfnHandler); - - -/************************************************************************* - USB application interface -**************************************************************************/ - -// initialise the complete stack, including HW -BOOL USBInit(void); - -/** Request handler callback (standard, vendor, class) */ -typedef BOOL (TFnHandleRequest)(TSetupPacket *pSetup, int *piLen, unsigned char **ppbData); -void USBRegisterRequestHandler(int iType, TFnHandleRequest *pfnHandler, unsigned char *pbDataStore); -void USBRegisterCustomReqHandler(TFnHandleRequest *pfnHandler); - -/** Descriptor handler callback */ -typedef BOOL (TFnGetDescriptor)(unsigned short wTypeIndex, unsigned short wLangID, int *piLen, unsigned char **ppbData); - -/** Default standard request handler */ -BOOL USBHandleStandardRequest(TSetupPacket *pSetup, int *piLen, unsigned char **ppbData); - -/** Default EP0 handler */ -void USBHandleControlTransfer(unsigned char bEP, unsigned char bEPStat); - -/** Descriptor handling */ -void USBRegisterDescriptors(const unsigned char *pabDescriptors); -BOOL USBGetDescriptor(unsigned short wTypeIndex, unsigned short wLangID, int *piLen, unsigned char **ppbData); diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/LPCUSB/usbcontrol.c b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/LPCUSB/usbcontrol.c deleted file mode 100644 index 6dd022c58..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/LPCUSB/usbcontrol.c +++ /dev/null @@ -1,247 +0,0 @@ -/* - LPCUSB, an USB device driver for LPC microcontrollers - Copyright (C) 2006 Bertrik Sikken (bertrik@sikken.nl) - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - 3. The name of the author may not be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - - -/** @file - Control transfer handler. - - This module handles control transfers and is normally installed on the - endpoint 0 callback. - - Control transfers can be of the following type: - 0 Standard; - 1 Class; - 2 Vendor; - 3 Reserved. - - A callback can be installed for each of these control transfers using - USBRegisterRequestHandler. - When an OUT request arrives, data is collected in the data store provided - with the USBRegisterRequestHandler call. When the transfer is done, the - callback is called. - When an IN request arrives, the callback is called immediately to either - put the control transfer data in the data store, or to get a pointer to - control transfer data. The data is then packetised and sent to the host. -*/ - -#include "usbdebug.h" - -#include "usbstruct.h" -#include "usbapi.h" - - - -#define MAX_CONTROL_SIZE 128 /**< maximum total size of control transfer data */ -#define MAX_REQ_HANDLERS 4 /**< standard, class, vendor, reserved */ - -static TSetupPacket Setup; /**< setup packet */ - -static unsigned char *pbData; /**< pointer to data buffer */ -static int iResidue; /**< remaining bytes in buffer */ -static int iLen; /**< total length of control transfer */ - -/** Array of installed request handler callbacks */ -static TFnHandleRequest *apfnReqHandlers[4] = {NULL, NULL, NULL, NULL}; -/** Array of installed request data pointers */ -static unsigned char *apbDataStore[4] = {NULL, NULL, NULL, NULL}; - -/** - Local function to handle a request by calling one of the installed - request handlers. - - In case of data going from host to device, the data is at *ppbData. - In case of data going from device to host, the handler can either - choose to write its data at *ppbData or update the data pointer. - - @param [in] pSetup The setup packet - @param [in,out] *piLen Pointer to data length - @param [in,out] ppbData Data buffer. - - @return TRUE if the request was handles successfully - */ -static BOOL _HandleRequest(TSetupPacket *pSetup, int *piLen, unsigned char **ppbData) -{ - TFnHandleRequest *pfnHandler; - int iType; - - iType = REQTYPE_GET_TYPE(pSetup->bmRequestType); - pfnHandler = apfnReqHandlers[iType]; - if (pfnHandler == NULL) { - DBG("No handler for reqtype %d\n", iType); - return FALSE; - } - - return pfnHandler(pSetup, piLen, ppbData); -} - - -/** - Local function to stall the control endpoint - - @param [in] bEPStat Endpoint status - */ -static void StallControlPipe(unsigned char bEPStat) -{ - unsigned char *pb; - int i; - - ( void ) bEPStat; - USBHwEPStall(0x80, TRUE); - -// dump setup packet - DBG("STALL on ["); - pb = (unsigned char *)&Setup; - for (i = 0; i < 8; i++) { - DBG(" %02x", *pb++); - } - DBG("] stat=%x\n", bEPStat); -} - - -/** - Sends next chunk of data (possibly 0 bytes) to host - */ -static void DataIn(void) -{ - int iChunk; - - if( MAX_PACKET_SIZE0 < iResidue ) - { - iChunk = MAX_PACKET_SIZE0; - } - else - { - iChunk = iResidue; - } - - USBHwEPWrite(0x80, pbData, iChunk); - pbData += iChunk; - iResidue -= iChunk; -} - - -/** - * Handles IN/OUT transfers on EP0 - * - * @param [in] bEP Endpoint address - * @param [in] bEPStat Endpoint status - */ -void USBHandleControlTransfer(unsigned char bEP, unsigned char bEPStat) -{ - int iChunk, iType; - - if (bEP == 0x00) { - // OUT transfer - if (bEPStat & EP_STATUS_SETUP) { - // setup packet, reset request message state machine - USBHwEPRead(0x00, (unsigned char *)&Setup, sizeof(Setup)); - DBG("S%x", Setup.bRequest); - - // defaults for data pointer and residue - iType = REQTYPE_GET_TYPE(Setup.bmRequestType); - pbData = apbDataStore[iType]; - iResidue = Setup.wLength; - iLen = Setup.wLength; - - if ((Setup.wLength == 0) || - (REQTYPE_GET_DIR(Setup.bmRequestType) == REQTYPE_DIR_TO_HOST)) { - // ask installed handler to process request - if (!_HandleRequest(&Setup, &iLen, &pbData)) { - DBG("_HandleRequest1 failed\n"); - StallControlPipe(bEPStat); - return; - } - // send smallest of requested and offered length - if( iLen < Setup.wLength ) - { - iResidue = iLen; - } - else - { - iResidue = Setup.wLength; - } - - // send first part (possibly a zero-length status message) - DataIn(); - } - } - else { - if (iResidue > 0) { - // store data - iChunk = USBHwEPRead(0x00, pbData, iResidue); - if (iChunk < 0) { - StallControlPipe(bEPStat); - return; - } - pbData += iChunk; - iResidue -= iChunk; - if (iResidue == 0) { - // received all, send data to handler - iType = REQTYPE_GET_TYPE(Setup.bmRequestType); - pbData = apbDataStore[iType]; - if (!_HandleRequest(&Setup, &iLen, &pbData)) { - DBG("_HandleRequest2 failed\n"); - StallControlPipe(bEPStat); - return; - } - // send status to host - DataIn(); - } - } - else { - // absorb zero-length status message - iChunk = USBHwEPRead(0x00, NULL, 0); - DBG(iChunk > 0 ? "?" : ""); - } - } - } - else if (bEP == 0x80) { - // IN transfer - // send more data if available (possibly a 0-length packet) - DataIn(); - } - else { - ASSERT(FALSE); - } -} - - -/** - Registers a callback for handling requests - - @param [in] iType Type of request, e.g. REQTYPE_TYPE_STANDARD - @param [in] *pfnHandler Callback function pointer - @param [in] *pbDataStore Data storage area for this type of request - */ -void USBRegisterRequestHandler(int iType, TFnHandleRequest *pfnHandler, unsigned char *pbDataStore) -{ - ASSERT(iType >= 0); - ASSERT(iType < 4); - apfnReqHandlers[iType] = pfnHandler; - apbDataStore[iType] = pbDataStore; -} - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/LPCUSB/usbdebug.h b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/LPCUSB/usbdebug.h deleted file mode 100644 index 4a14862e6..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/LPCUSB/usbdebug.h +++ /dev/null @@ -1,41 +0,0 @@ -/* - LPCUSB, an USB device driver for LPC microcontrollers - Copyright (C) 2006 Bertrik Sikken (bertrik@sikken.nl) - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - 3. The name of the author may not be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -// CodeRed - comment out this printf, as will use real one from stdio.h -// to implement output via semihosting - -//int printf(const char *format, ...); -# include - -#ifdef _DEBUG -#define DBG printf -#define ASSERT(x) if(!(x)){DBG("\nAssertion '%s' failed in %s:%s#%d!\n",#x,__FILE__,__FUNCTION__,__LINE__);while(1);} -#else -#define DBG(x ...) -#define ASSERT(x) -#endif - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/LPCUSB/usbhw_lpc.c b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/LPCUSB/usbhw_lpc.c deleted file mode 100644 index e9bd46015..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/LPCUSB/usbhw_lpc.c +++ /dev/null @@ -1,521 +0,0 @@ -/* - LPCUSB, an USB device driver for LPC microcontrollers - Copyright (C) 2006 Bertrik Sikken (bertrik@sikken.nl) - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - 3. The name of the author may not be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - - -/** @file - USB hardware layer - */ - - -#include "usbdebug.h" -#include "usbhw_lpc.h" -#include "usbapi.h" - -/** Installed device interrupt handler */ -static TFnDevIntHandler *_pfnDevIntHandler = NULL; -/** Installed endpoint interrupt handlers */ -static TFnEPIntHandler *_apfnEPIntHandlers[16]; -/** Installed frame interrupt handlers */ -static TFnFrameHandler *_pfnFrameHandler = NULL; - -/** convert from endpoint address to endpoint index */ -#define EP2IDX(bEP) ((((bEP)&0xF)<<1)|(((bEP)&0x80)>>7)) -/** convert from endpoint index to endpoint address */ -#define IDX2EP(idx) ((((idx)<<7)&0x80)|(((idx)>>1)&0xF)) - - - -/** - Local function to wait for a device interrupt (and clear it) - - @param [in] dwIntr Bitmask of interrupts to wait for - */ -static void Wait4DevInt(unsigned long dwIntr) -{ - // wait for specific interrupt - while ((USB->USBDevIntSt & dwIntr) != dwIntr); - // clear the interrupt bits - USB->USBDevIntClr = dwIntr; -} - - -/** - Local function to send a command to the USB protocol engine - - @param [in] bCmd Command to send - */ -static void USBHwCmd(unsigned char bCmd) -{ - // clear CDFULL/CCEMTY - USB->USBDevIntClr = CDFULL | CCEMTY; - // write command code - USB->USBCmdCode = 0x00000500 | (bCmd << 16); - Wait4DevInt(CCEMTY); -} - - -/** - Local function to send a command + data to the USB protocol engine - - @param [in] bCmd Command to send - @param [in] bData Data to send - */ -static void USBHwCmdWrite(unsigned char bCmd, unsigned short bData) -{ - // write command code - USBHwCmd(bCmd); - - // write command data - USB->USBCmdCode = 0x00000100 | (bData << 16); - Wait4DevInt(CCEMTY); -} - - -/** - Local function to send a command to the USB protocol engine and read data - - @param [in] bCmd Command to send - - @return the data - */ -static unsigned char USBHwCmdRead(unsigned char bCmd) -{ - // write command code - USBHwCmd(bCmd); - - // get data - USB->USBCmdCode = 0x00000200 | (bCmd << 16); - Wait4DevInt(CDFULL); - return USB->USBCmdData; -} - - -/** - 'Realizes' an endpoint, meaning that buffer space is reserved for - it. An endpoint needs to be realised before it can be used. - - From experiments, it appears that a USB reset causes USBReEP to - re-initialise to 3 (= just the control endpoints). - However, a USB bus reset does not disturb the USBMaxPSize settings. - - @param [in] idx Endpoint index - @param [in] wMaxPSize Maximum packet size for this endpoint - */ -static void USBHwEPRealize(int idx, unsigned short wMaxPSize) -{ - USB->USBReEP |= (1 << idx); - USB->USBEpInd = idx; - USB->USBMaxPSize = wMaxPSize; - Wait4DevInt(EP_RLZED); -} - - -/** - Enables or disables an endpoint - - @param [in] idx Endpoint index - @param [in] fEnable TRUE to enable, FALSE to disable - */ -static void USBHwEPEnable(int idx, BOOL fEnable) -{ - USBHwCmdWrite(CMD_EP_SET_STATUS | idx, fEnable ? 0 : EP_DA); -} - - -/** - Configures an endpoint and enables it - - @param [in] bEP Endpoint number - @param [in] wMaxPacketSize Maximum packet size for this EP - */ -void USBHwEPConfig(unsigned char bEP, unsigned short wMaxPacketSize) -{ - int idx; - - idx = EP2IDX(bEP); - - // realise EP - USBHwEPRealize(idx, wMaxPacketSize); - - // enable EP - USBHwEPEnable(idx, TRUE); -} - - -/** - Registers an endpoint event callback - - @param [in] bEP Endpoint number - @param [in] pfnHandler Callback function - */ -void USBHwRegisterEPIntHandler(unsigned char bEP, TFnEPIntHandler *pfnHandler) -{ - int idx; - - idx = EP2IDX(bEP); - - ASSERT(idx<32); - - /* add handler to list of EP handlers */ - _apfnEPIntHandlers[idx / 2] = pfnHandler; - - /* enable EP interrupt */ - USB->USBEpIntEn |= (1 << idx); - USB->USBDevIntEn |= EP_SLOW; - - DBG("Registered handler for EP 0x%x\n", bEP); -} - - -/** - Registers an device status callback - - @param [in] pfnHandler Callback function - */ -void USBHwRegisterDevIntHandler(TFnDevIntHandler *pfnHandler) -{ - _pfnDevIntHandler = pfnHandler; - - // enable device interrupt - USB->USBDevIntEn |= DEV_STAT; - - DBG("Registered handler for device status\n"); -} - - -/** - Registers the frame callback - - @param [in] pfnHandler Callback function - */ -void USBHwRegisterFrameHandler(TFnFrameHandler *pfnHandler) -{ - _pfnFrameHandler = pfnHandler; - - // enable device interrupt - USB->USBDevIntEn |= FRAME; - - DBG("Registered handler for frame\n"); -} - - -/** - Sets the USB address. - - @param [in] bAddr Device address to set - */ -void USBHwSetAddress(unsigned char bAddr) -{ - USBHwCmdWrite(CMD_DEV_SET_ADDRESS, DEV_EN | bAddr); -} - - -/** - Connects or disconnects from the USB bus - - @param [in] fConnect If TRUE, connect, otherwise disconnect - */ -void USBHwConnect(BOOL fConnect) -{ - USBHwCmdWrite(CMD_DEV_STATUS, fConnect ? CON : 0); -} - - -/** - Enables interrupt on NAK condition - - For IN endpoints a NAK is generated when the host wants to read data - from the device, but none is available in the endpoint buffer. - For OUT endpoints a NAK is generated when the host wants to write data - to the device, but the endpoint buffer is still full. - - The endpoint interrupt handlers can distinguish regular (ACK) interrupts - from NAK interrupt by checking the bits in their bEPStatus argument. - - @param [in] bIntBits Bitmap indicating which NAK interrupts to enable - */ -void USBHwNakIntEnable(unsigned char bIntBits) -{ - USBHwCmdWrite(CMD_DEV_SET_MODE, bIntBits); -} - - -/** - Gets the status from a specific endpoint. - - @param [in] bEP Endpoint number - @return Endpoint status byte (containing EP_STATUS_xxx bits) - */ -unsigned char USBHwEPGetStatus(unsigned char bEP) -{ - int idx = EP2IDX(bEP); - - return USBHwCmdRead(CMD_EP_SELECT | idx); -} - - -/** - Sets the stalled property of an endpoint - - @param [in] bEP Endpoint number - @param [in] fStall TRUE to stall, FALSE to unstall - */ -void USBHwEPStall(unsigned char bEP, BOOL fStall) -{ - int idx = EP2IDX(bEP); - - USBHwCmdWrite(CMD_EP_SET_STATUS | idx, fStall ? EP_ST : 0); -} - - -/** - Writes data to an endpoint buffer - - @param [in] bEP Endpoint number - @param [in] pbBuf Endpoint data - @param [in] iLen Number of bytes to write - - @return TRUE if the data was successfully written or <0 in case of error. -*/ -int USBHwEPWrite(unsigned char bEP, unsigned char *pbBuf, int iLen) -{ - int idx; - - idx = EP2IDX(bEP); - - // set write enable for specific endpoint - USB->USBCtrl = WR_EN | ((bEP & 0xF) << 2); - - // set packet length - USB->USBTxPLen = iLen; - - // write data - while (USB->USBCtrl & WR_EN) { - USB->USBTxData = (pbBuf[3] << 24) | (pbBuf[2] << 16) | (pbBuf[1] << 8) | pbBuf[0]; - pbBuf += 4; - } - - // select endpoint and validate buffer - USBHwCmd(CMD_EP_SELECT | idx); - USBHwCmd(CMD_EP_VALIDATE_BUFFER); - - return iLen; -} - - -/** - Reads data from an endpoint buffer - - @param [in] bEP Endpoint number - @param [in] pbBuf Endpoint data - @param [in] iMaxLen Maximum number of bytes to read - - @return the number of bytes available in the EP (possibly more than iMaxLen), - or <0 in case of error. - */ -int USBHwEPRead(unsigned char bEP, unsigned char *pbBuf, int iMaxLen) -{ - unsigned int i, idx; - unsigned long dwData, dwLen; - - idx = EP2IDX(bEP); - - // set read enable bit for specific endpoint - USB->USBCtrl = RD_EN | ((bEP & 0xF) << 2); - - // wait for PKT_RDY - do { - dwLen = USB->USBRxPLen; - } while ((dwLen & PKT_RDY) == 0); - - // packet valid? - if ((dwLen & DV) == 0) { - return -1; - } - - // get length - dwLen &= PKT_LNGTH_MASK; - - // get data - dwData = 0; - for (i = 0; i < dwLen; i++) { - if ((i % 4) == 0) { - dwData = USB->USBRxData; - } - if ((pbBuf != NULL) && ((int)i < iMaxLen)) { - pbBuf[i] = dwData & 0xFF; - } - dwData >>= 8; - } - - // make sure RD_EN is clear - USB->USBCtrl = 0; - - // select endpoint and clear buffer - USBHwCmd(CMD_EP_SELECT | idx); - USBHwCmd(CMD_EP_CLEAR_BUFFER); - - return dwLen; -} - - -/** - Sets the 'configured' state. - - All registered endpoints are 'realised' and enabled, and the - 'configured' bit is set in the device status register. - - @param [in] fConfigured If TRUE, configure device, else unconfigure - */ -void USBHwConfigDevice(BOOL fConfigured) -{ - // set configured bit - USBHwCmdWrite(CMD_DEV_CONFIG, fConfigured ? CONF_DEVICE : 0); -} - - -/** - USB interrupt handler - - @todo Get all 11 bits of frame number instead of just 8 - - Endpoint interrupts are mapped to the slow interrupt - */ -void USBHwISR(void) -{ - unsigned long dwStatus; - unsigned long dwIntBit; - unsigned char bEPStat, bDevStat, bStat; - int i; - unsigned short wFrame; - - // handle device interrupts - dwStatus = USB->USBDevIntSt; - - // frame interrupt - if (dwStatus & FRAME) { - // clear int - USB->USBDevIntClr = FRAME; - // call handler - if (_pfnFrameHandler != NULL) { - wFrame = USBHwCmdRead(CMD_DEV_READ_CUR_FRAME_NR); - _pfnFrameHandler(wFrame); - } - } - - // device status interrupt - if (dwStatus & DEV_STAT) { - /* Clear DEV_STAT interrupt before reading DEV_STAT register. - This prevents corrupted device status reads, see - LPC2148 User manual revision 2, 25 july 2006. - */ - USB->USBDevIntClr = DEV_STAT; - bDevStat = USBHwCmdRead(CMD_DEV_STATUS); - if (bDevStat & (CON_CH | SUS_CH | RST)) { - // convert device status into something HW independent - bStat = ((bDevStat & CON) ? DEV_STATUS_CONNECT : 0) | - ((bDevStat & SUS) ? DEV_STATUS_SUSPEND : 0) | - ((bDevStat & RST) ? DEV_STATUS_RESET : 0); - // call handler - if (_pfnDevIntHandler != NULL) { - _pfnDevIntHandler(bStat); - } - } - } - - // endpoint interrupt - if (dwStatus & EP_SLOW) { - // clear EP_SLOW - USB->USBDevIntClr = EP_SLOW; - // check all endpoints - for (i = 0; i < 32; i++) { - dwIntBit = (1 << i); - if (USB->USBEpIntSt & dwIntBit) { - // clear int (and retrieve status) - USB->USBEpIntClr = dwIntBit; - Wait4DevInt(CDFULL); - bEPStat = USB->USBCmdData; - // convert EP pipe stat into something HW independent - bStat = ((bEPStat & EPSTAT_FE) ? EP_STATUS_DATA : 0) | - ((bEPStat & EPSTAT_ST) ? EP_STATUS_STALLED : 0) | - ((bEPStat & EPSTAT_STP) ? EP_STATUS_SETUP : 0) | - ((bEPStat & EPSTAT_EPN) ? EP_STATUS_NACKED : 0) | - ((bEPStat & EPSTAT_PO) ? EP_STATUS_ERROR : 0); - // call handler - if (_apfnEPIntHandlers[i / 2] != NULL) { - _apfnEPIntHandlers[i / 2](IDX2EP(i), bStat); - } - } - } - } -} - - - -/** - Initialises the USB hardware - - - @return TRUE if the hardware was successfully initialised - */ -BOOL USBHwInit(void) -{ - // P2.9 -> USB_CONNECT - PINCON->PINSEL4 &= ~0x000C0000; - PINCON->PINSEL4 |= 0x00040000; - - // P1.18 -> USB_UP_LED - // P1.30 -> VBUS - PINCON->PINSEL3 &= ~0x30000030; - PINCON->PINSEL3 |= 0x20000010; - - // P0.29 -> USB_D+ - // P0.30 -> USB_D- - PINCON->PINSEL1 &= ~0x3C000000; - PINCON->PINSEL1 |= 0x14000000; - - // enable PUSB - SC->PCONP |= (1 << 31); - - USB->OTGClkCtrl = 0x12; /* Dev clock, AHB clock enable */ - while ((USB->OTGClkSt & 0x12) != 0x12); - - // disable/clear all interrupts for now - USB->USBDevIntEn = 0; - USB->USBDevIntClr = 0xFFFFFFFF; - USB->USBDevIntPri = 0; - - USB->USBEpIntEn = 0; - USB->USBEpIntClr = 0xFFFFFFFF; - USB->USBEpIntPri = 0; - - // by default, only ACKs generate interrupts - USBHwNakIntEnable(0); - - return TRUE; -} - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/LPCUSB/usbhw_lpc.h b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/LPCUSB/usbhw_lpc.h deleted file mode 100644 index 2a4de7949..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/LPCUSB/usbhw_lpc.h +++ /dev/null @@ -1,149 +0,0 @@ -/* - LPCUSB, an USB device driver for LPC microcontrollers - Copyright (C) 2006 Bertrik Sikken (bertrik@sikken.nl) - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - 3. The name of the author may not be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - - -/** - Hardware definitions for the LPC176x USB controller - - These are private to the usbhw module -*/ - -// CodeRed - pull in defines from NXP header file -//#include "NXP\LPC17xx\LPC17xx.h" -#include "LPC17xx.h" - - -// CodeRed - these registers have been renamed on LPC176x -#define USBReEP USBReEp -#define OTG_CLK_CTRL USBClkCtrl -#define OTG_CLK_STAT USBClkSt - -/* USBIntSt bits */ -#define USB_INT_REQ_LP (1<<0) -#define USB_INT_REQ_HP (1<<1) -#define USB_INT_REQ_DMA (1<<2) -#define USB_need_clock (1<<8) -#define EN_USB_BITS (1<<31) - -/* USBDevInt... bits */ -#define FRAME (1<<0) -#define EP_FAST (1<<1) -#define EP_SLOW (1<<2) -#define DEV_STAT (1<<3) -#define CCEMTY (1<<4) -#define CDFULL (1<<5) -#define RxENDPKT (1<<6) -#define TxENDPKT (1<<7) -#define EP_RLZED (1<<8) -#define ERR_INT (1<<9) - -/* USBRxPLen bits */ -#define PKT_LNGTH (1<<0) -#define PKT_LNGTH_MASK 0x3FF -#define DV (1<<10) -#define PKT_RDY (1<<11) - -/* USBCtrl bits */ -#define RD_EN (1<<0) -#define WR_EN (1<<1) -#define LOG_ENDPOINT (1<<2) - -/* protocol engine command codes */ - /* device commands */ -#define CMD_DEV_SET_ADDRESS 0xD0 -#define CMD_DEV_CONFIG 0xD8 -#define CMD_DEV_SET_MODE 0xF3 -#define CMD_DEV_READ_CUR_FRAME_NR 0xF5 -#define CMD_DEV_READ_TEST_REG 0xFD -#define CMD_DEV_STATUS 0xFE /* read/write */ -#define CMD_DEV_GET_ERROR_CODE 0xFF -#define CMD_DEV_READ_ERROR_STATUS 0xFB - /* endpoint commands */ -#define CMD_EP_SELECT 0x00 -#define CMD_EP_SELECT_CLEAR 0x40 -#define CMD_EP_SET_STATUS 0x40 -#define CMD_EP_CLEAR_BUFFER 0xF2 -#define CMD_EP_VALIDATE_BUFFER 0xFA - -/* set address command */ -#define DEV_ADDR (1<<0) -#define DEV_EN (1<<7) - -/* configure device command */ -#define CONF_DEVICE (1<<0) - -/* set mode command */ -#define AP_CLK (1<<0) -#define INAK_CI (1<<1) -#define INAK_CO (1<<2) -#define INAK_II (1<<3) -#define INAK_IO (1<<4) -#define INAK_BI (1<<5) -#define INAK_BO (1<<6) - -/* set get device status command */ -#define CON (1<<0) -#define CON_CH (1<<1) -#define SUS (1<<2) -#define SUS_CH (1<<3) -#define RST (1<<4) - -/* get error code command */ -// ... - -/* Select Endpoint command read bits */ -#define EPSTAT_FE (1<<0) -#define EPSTAT_ST (1<<1) -#define EPSTAT_STP (1<<2) -#define EPSTAT_PO (1<<3) -#define EPSTAT_EPN (1<<4) -#define EPSTAT_B1FULL (1<<5) -#define EPSTAT_B2FULL (1<<6) - -/* CMD_EP_SET_STATUS command */ -#define EP_ST (1<<0) -#define EP_DA (1<<5) -#define EP_RF_MO (1<<6) -#define EP_CND_ST (1<<7) - -/* read error status command */ -#define PID_ERR (1<<0) -#define UEPKT (1<<1) -#define DCRC (1<<2) -#define TIMEOUT (1<<3) -#define EOP (1<<4) -#define B_OVRN (1<<5) -#define BTSTF (1<<6) -#define TGL_ERR (1<<7) - - - - - - - - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/LPCUSB/usbinit.c b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/LPCUSB/usbinit.c deleted file mode 100644 index 8bb718317..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/LPCUSB/usbinit.c +++ /dev/null @@ -1,82 +0,0 @@ -/* - LPCUSB, an USB device driver for LPC microcontrollers - Copyright (C) 2006 Bertrik Sikken (bertrik@sikken.nl) - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - 3. The name of the author may not be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - - -/** @file - USB stack initialisation - */ - - -#include "usbdebug.h" -#include "usbapi.h" - - -/** data storage area for standard requests */ -static unsigned char abStdReqData[8]; - - -/** - USB reset handler - - @param [in] bDevStatus Device status - */ -static void HandleUsbReset(unsigned char bDevStatus) -{ - if (bDevStatus & DEV_STATUS_RESET) { - DBG("\n!"); - } -} - - -/** - Initialises the USB hardware and sets up the USB stack by - installing default callbacks. - - @return TRUE if initialisation was successful - */ -BOOL USBInit(void) -{ - // init hardware - USBHwInit(); - - // register bus reset handler - USBHwRegisterDevIntHandler(HandleUsbReset); - - // register control transfer handler on EP0 - USBHwRegisterEPIntHandler(0x00, USBHandleControlTransfer); - USBHwRegisterEPIntHandler(0x80, USBHandleControlTransfer); - - // setup control endpoints - USBHwEPConfig(0x00, MAX_PACKET_SIZE0); - USBHwEPConfig(0x80, MAX_PACKET_SIZE0); - - // register standard request handler - USBRegisterRequestHandler(REQTYPE_TYPE_STANDARD, USBHandleStandardRequest, abStdReqData); - - return TRUE; -} - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/LPCUSB/usbstdreq.c b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/LPCUSB/usbstdreq.c deleted file mode 100644 index cb2f55a09..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/LPCUSB/usbstdreq.c +++ /dev/null @@ -1,431 +0,0 @@ -/* - LPCUSB, an USB device driver for LPC microcontrollers - Copyright (C) 2006 Bertrik Sikken (bertrik@sikken.nl) - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - 3. The name of the author may not be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - - -/** @file - Standard request handler. - - This modules handles the 'chapter 9' processing, specifically the - standard device requests in table 9-3 from the universal serial bus - specification revision 2.0 - - Specific types of devices may specify additional requests (for example - HID devices add a GET_DESCRIPTOR request for interfaces), but they - will not be part of this module. - - @todo some requests have to return a request error if device not configured: - @todo GET_INTERFACE, GET_STATUS, SET_INTERFACE, SYNCH_FRAME - @todo this applies to the following if endpoint != 0: - @todo SET_FEATURE, GET_FEATURE -*/ - -#include "usbdebug.h" -#include "usbstruct.h" -#include "usbapi.h" - -#define MAX_DESC_HANDLERS 4 /**< device, interface, endpoint, other */ - - -/* general descriptor field offsets */ -#define DESC_bLength 0 /**< length offset */ -#define DESC_bDescriptorType 1 /**< descriptor type offset */ - -/* config descriptor field offsets */ -#define CONF_DESC_wTotalLength 2 /**< total length offset */ -#define CONF_DESC_bConfigurationValue 5 /**< configuration value offset */ -#define CONF_DESC_bmAttributes 7 /**< configuration characteristics */ - -/* interface descriptor field offsets */ -#define INTF_DESC_bAlternateSetting 3 /**< alternate setting offset */ - -/* endpoint descriptor field offsets */ -#define ENDP_DESC_bEndpointAddress 2 /**< endpoint address offset */ -#define ENDP_DESC_wMaxPacketSize 4 /**< maximum packet size offset */ - - -/** Currently selected configuration */ -static unsigned char bConfiguration = 0; -/** Installed custom request handler */ -static TFnHandleRequest *pfnHandleCustomReq = NULL; -/** Pointer to registered descriptors */ -static const unsigned char *pabDescrip = NULL; - - -/** - Registers a pointer to a descriptor block containing all descriptors - for the device. - - @param [in] pabDescriptors The descriptor byte array - */ -void USBRegisterDescriptors(const unsigned char *pabDescriptors) -{ - pabDescrip = pabDescriptors; -} - - -/** - Parses the list of installed USB descriptors and attempts to find - the specified USB descriptor. - - @param [in] wTypeIndex Type and index of the descriptor - @param [in] wLangID Language ID of the descriptor (currently unused) - @param [out] *piLen Descriptor length - @param [out] *ppbData Descriptor data - - @return TRUE if the descriptor was found, FALSE otherwise - */ -BOOL USBGetDescriptor(unsigned short wTypeIndex, unsigned short wLangID, int *piLen, unsigned char **ppbData) -{ - unsigned char bType, bIndex; - unsigned char *pab; - int iCurIndex; - - ( void ) wLangID; - ASSERT(pabDescrip != NULL); - - bType = GET_DESC_TYPE(wTypeIndex); - bIndex = GET_DESC_INDEX(wTypeIndex); - - pab = (unsigned char *)pabDescrip; - iCurIndex = 0; - - while (pab[DESC_bLength] != 0) { - if (pab[DESC_bDescriptorType] == bType) { - if (iCurIndex == bIndex) { - // set data pointer - *ppbData = pab; - // get length from structure - if (bType == DESC_CONFIGURATION) { - // configuration descriptor is an exception, length is at offset 2 and 3 - *piLen = (pab[CONF_DESC_wTotalLength]) | - (pab[CONF_DESC_wTotalLength + 1] << 8); - } - else { - // normally length is at offset 0 - *piLen = pab[DESC_bLength]; - } - return TRUE; - } - iCurIndex++; - } - // skip to next descriptor - pab += pab[DESC_bLength]; - } - // nothing found - DBG("Desc %x not found!\n", wTypeIndex); - return FALSE; -} - - -/** - Configures the device according to the specified configuration index and - alternate setting by parsing the installed USB descriptor list. - A configuration index of 0 unconfigures the device. - - @param [in] bConfigIndex Configuration index - @param [in] bAltSetting Alternate setting number - - @todo function always returns TRUE, add stricter checking? - - @return TRUE if successfully configured, FALSE otherwise - */ -static BOOL USBSetConfiguration(unsigned char bConfigIndex, unsigned char bAltSetting) -{ - unsigned char *pab; - unsigned char bCurConfig, bCurAltSetting; - unsigned char bEP; - unsigned short wMaxPktSize; - - ASSERT(pabDescrip != NULL); - - if (bConfigIndex == 0) { - // unconfigure device - USBHwConfigDevice(FALSE); - } - else { - // configure endpoints for this configuration/altsetting - pab = (unsigned char *)pabDescrip; - bCurConfig = 0xFF; - bCurAltSetting = 0xFF; - - while (pab[DESC_bLength] != 0) { - - switch (pab[DESC_bDescriptorType]) { - - case DESC_CONFIGURATION: - // remember current configuration index - bCurConfig = pab[CONF_DESC_bConfigurationValue]; - break; - - case DESC_INTERFACE: - // remember current alternate setting - bCurAltSetting = pab[INTF_DESC_bAlternateSetting]; - break; - - case DESC_ENDPOINT: - if ((bCurConfig == bConfigIndex) && - (bCurAltSetting == bAltSetting)) { - // endpoint found for desired config and alternate setting - bEP = pab[ENDP_DESC_bEndpointAddress]; - wMaxPktSize = (pab[ENDP_DESC_wMaxPacketSize]) | - (pab[ENDP_DESC_wMaxPacketSize + 1] << 8); - // configure endpoint - USBHwEPConfig(bEP, wMaxPktSize); - } - break; - - default: - break; - } - // skip to next descriptor - pab += pab[DESC_bLength]; - } - - // configure device - USBHwConfigDevice(TRUE); - } - - return TRUE; -} - - -/** - Local function to handle a standard device request - - @param [in] pSetup The setup packet - @param [in,out] *piLen Pointer to data length - @param [in,out] ppbData Data buffer. - - @return TRUE if the request was handled successfully - */ -static BOOL HandleStdDeviceReq(TSetupPacket *pSetup, int *piLen, unsigned char **ppbData) -{ - unsigned char *pbData = *ppbData; - - switch (pSetup->bRequest) { - - case REQ_GET_STATUS: - // bit 0: self-powered - // bit 1: remote wakeup = not supported - pbData[0] = 0; - pbData[1] = 0; - *piLen = 2; - break; - - case REQ_SET_ADDRESS: - USBHwSetAddress(pSetup->wValue); - break; - - case REQ_GET_DESCRIPTOR: - DBG("D%x", pSetup->wValue); - return USBGetDescriptor(pSetup->wValue, pSetup->wIndex, piLen, ppbData); - - case REQ_GET_CONFIGURATION: - // indicate if we are configured - pbData[0] = bConfiguration; - *piLen = 1; - break; - - case REQ_SET_CONFIGURATION: - if (!USBSetConfiguration(pSetup->wValue & 0xFF, 0)) { - DBG("USBSetConfiguration failed!\n"); - return FALSE; - } - // configuration successful, update current configuration - bConfiguration = pSetup->wValue & 0xFF; - break; - - case REQ_CLEAR_FEATURE: - case REQ_SET_FEATURE: - if (pSetup->wValue == FEA_REMOTE_WAKEUP) { - // put DEVICE_REMOTE_WAKEUP code here - } - if (pSetup->wValue == FEA_TEST_MODE) { - // put TEST_MODE code here - } - return FALSE; - - case REQ_SET_DESCRIPTOR: - DBG("Device req %d not implemented\n", pSetup->bRequest); - return FALSE; - - default: - DBG("Illegal device req %d\n", pSetup->bRequest); - return FALSE; - } - - return TRUE; -} - - -/** - Local function to handle a standard interface request - - @param [in] pSetup The setup packet - @param [in,out] *piLen Pointer to data length - @param [in] ppbData Data buffer. - - @return TRUE if the request was handled successfully - */ -static BOOL HandleStdInterfaceReq(TSetupPacket *pSetup, int *piLen, unsigned char **ppbData) -{ - unsigned char *pbData = *ppbData; - - switch (pSetup->bRequest) { - - case REQ_GET_STATUS: - // no bits specified - pbData[0] = 0; - pbData[1] = 0; - *piLen = 2; - break; - - case REQ_CLEAR_FEATURE: - case REQ_SET_FEATURE: - // not defined for interface - return FALSE; - - case REQ_GET_INTERFACE: // TODO use bNumInterfaces - // there is only one interface, return n-1 (= 0) - pbData[0] = 0; - *piLen = 1; - break; - - case REQ_SET_INTERFACE: // TODO use bNumInterfaces - // there is only one interface (= 0) - if (pSetup->wValue != 0) { - return FALSE; - } - *piLen = 0; - break; - - default: - DBG("Illegal interface req %d\n", pSetup->bRequest); - return FALSE; - } - - return TRUE; -} - - -/** - Local function to handle a standard endpoint request - - @param [in] pSetup The setup packet - @param [in,out] *piLen Pointer to data length - @param [in] ppbData Data buffer. - - @return TRUE if the request was handled successfully - */ -static BOOL HandleStdEndPointReq(TSetupPacket *pSetup, int *piLen, unsigned char **ppbData) -{ - unsigned char *pbData = *ppbData; - - switch (pSetup->bRequest) { - case REQ_GET_STATUS: - // bit 0 = endpointed halted or not - pbData[0] = (USBHwEPGetStatus(pSetup->wIndex) & EP_STATUS_STALLED) ? 1 : 0; - pbData[1] = 0; - *piLen = 2; - break; - - case REQ_CLEAR_FEATURE: - if (pSetup->wValue == FEA_ENDPOINT_HALT) { - // clear HALT by unstalling - USBHwEPStall(pSetup->wIndex, FALSE); - break; - } - // only ENDPOINT_HALT defined for endpoints - return FALSE; - - case REQ_SET_FEATURE: - if (pSetup->wValue == FEA_ENDPOINT_HALT) { - // set HALT by stalling - USBHwEPStall(pSetup->wIndex, TRUE); - break; - } - // only ENDPOINT_HALT defined for endpoints - return FALSE; - - case REQ_SYNCH_FRAME: - DBG("EP req %d not implemented\n", pSetup->bRequest); - return FALSE; - - default: - DBG("Illegal EP req %d\n", pSetup->bRequest); - return FALSE; - } - - return TRUE; -} - - -/** - Default handler for standard ('chapter 9') requests - - If a custom request handler was installed, this handler is called first. - - @param [in] pSetup The setup packet - @param [in,out] *piLen Pointer to data length - @param [in] ppbData Data buffer. - - @return TRUE if the request was handled successfully - */ -BOOL USBHandleStandardRequest(TSetupPacket *pSetup, int *piLen, unsigned char **ppbData) -{ - // try the custom request handler first - if ((pfnHandleCustomReq != NULL) && pfnHandleCustomReq(pSetup, piLen, ppbData)) { - return TRUE; - } - - switch (REQTYPE_GET_RECIP(pSetup->bmRequestType)) { - case REQTYPE_RECIP_DEVICE: return HandleStdDeviceReq(pSetup, piLen, ppbData); - case REQTYPE_RECIP_INTERFACE: return HandleStdInterfaceReq(pSetup, piLen, ppbData); - case REQTYPE_RECIP_ENDPOINT: return HandleStdEndPointReq(pSetup, piLen, ppbData); - default: return FALSE; - } -} - - -/** - Registers a callback for custom device requests - - In USBHandleStandardRequest, the custom request handler gets a first - chance at handling the request before it is handed over to the 'chapter 9' - request handler. - - This can be used for example in HID devices, where a REQ_GET_DESCRIPTOR - request is sent to an interface, which is not covered by the 'chapter 9' - specification. - - @param [in] pfnHandler Callback function pointer - */ -void USBRegisterCustomReqHandler(TFnHandleRequest *pfnHandler) -{ - pfnHandleCustomReq = pfnHandler; -} - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/LPCUSB/usbstruct.h b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/LPCUSB/usbstruct.h deleted file mode 100644 index 113e2fef4..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/LPCUSB/usbstruct.h +++ /dev/null @@ -1,119 +0,0 @@ -/* - LPCUSB, an USB device driver for LPC microcontrollers - Copyright (C) 2006 Bertrik Sikken (bertrik@sikken.nl) - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - 3. The name of the author may not be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - - -/** - Definitions of structures of standard USB packets -*/ - -#ifndef _USBSTRUCT_H_ -#define _USBSTRUCT_H_ - -// CodeRed - include the LPCUSB type.h file rather than NXP one directly -#include "type.h" - -/** setup packet definitions */ -typedef struct { - unsigned char bmRequestType; /**< characteristics of the specific request */ - unsigned char bRequest; /**< specific request */ - unsigned short wValue; /**< request specific parameter */ - unsigned short wIndex; /**< request specific parameter */ - unsigned short wLength; /**< length of data transfered in data phase */ -} TSetupPacket; - - -#define REQTYPE_GET_DIR(x) (((x)>>7)&0x01) -#define REQTYPE_GET_TYPE(x) (((x)>>5)&0x03) -#define REQTYPE_GET_RECIP(x) ((x)&0x1F) - -#define REQTYPE_DIR_TO_DEVICE 0 -#define REQTYPE_DIR_TO_HOST 1 - -#define REQTYPE_TYPE_STANDARD 0 -#define REQTYPE_TYPE_CLASS 1 -#define REQTYPE_TYPE_VENDOR 2 -#define REQTYPE_TYPE_RESERVED 3 - -#define REQTYPE_RECIP_DEVICE 0 -#define REQTYPE_RECIP_INTERFACE 1 -#define REQTYPE_RECIP_ENDPOINT 2 -#define REQTYPE_RECIP_OTHER 3 - -/* standard requests */ -#define REQ_GET_STATUS 0x00 -#define REQ_CLEAR_FEATURE 0x01 -#define REQ_SET_FEATURE 0x03 -#define REQ_SET_ADDRESS 0x05 -#define REQ_GET_DESCRIPTOR 0x06 -#define REQ_SET_DESCRIPTOR 0x07 -#define REQ_GET_CONFIGURATION 0x08 -#define REQ_SET_CONFIGURATION 0x09 -#define REQ_GET_INTERFACE 0x0A -#define REQ_SET_INTERFACE 0x0B -#define REQ_SYNCH_FRAME 0x0C - -/* class requests HID */ -#define HID_GET_REPORT 0x01 -#define HID_GET_IDLE 0x02 -#define HID_GET_PROTOCOL 0x03 -#define HID_SET_REPORT 0x09 -#define HID_SET_IDLE 0x0A -#define HID_SET_PROTOCOL 0x0B - -/* feature selectors */ -#define FEA_ENDPOINT_HALT 0x00 -#define FEA_REMOTE_WAKEUP 0x01 -#define FEA_TEST_MODE 0x02 - -/* - USB descriptors -*/ - -/** USB descriptor header */ -typedef struct { - unsigned char bLength; /**< descriptor length */ - unsigned char bDescriptorType; /**< descriptor type */ -} TUSBDescHeader; - -#define DESC_DEVICE 1 -#define DESC_CONFIGURATION 2 -#define DESC_STRING 3 -#define DESC_INTERFACE 4 -#define DESC_ENDPOINT 5 -#define DESC_DEVICE_QUALIFIER 6 -#define DESC_OTHER_SPEED 7 -#define DESC_INTERFACE_POWER 8 - -#define DESC_HID_HID 0x21 -#define DESC_HID_REPORT 0x22 -#define DESC_HID_PHYSICAL 0x23 - -#define GET_DESC_TYPE(x) (((x)>>8)&0xFF) -#define GET_DESC_INDEX(x) ((x)&0xFF) - -#endif /* _USBSTRUCT_H_ */ - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/ParTest.c b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/ParTest.c deleted file mode 100644 index 0d57314ff..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/ParTest.c +++ /dev/null @@ -1,133 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* FreeRTOS.org includes. */ -#include "FreeRTOS.h" - -/* Demo application includes. */ -#include "partest.h" - -#define partstFIRST_IO ( ( unsigned long ) 0x04 ) -#define partstFIO2_BITS ( ( unsigned long ) 0x0000007C ) -#define partstFIO1_BITS ( ( unsigned long ) 0xB0000000 ) -#define partstNUM_LEDS ( 5 ) -#define partstALL_OUTPUTS_OFF ( ( unsigned long ) 0xff ) - -/*----------------------------------------------------------- - * Simple parallel port IO routines. - *-----------------------------------------------------------*/ - -void vParTestInitialise( void ) -{ - /* LEDs on ports 1 and 2 to output. */ - GPIO2->FIODIR = partstFIO2_BITS; - GPIO1->FIODIR = partstFIO1_BITS; - - /* Start will all LEDs off. */ - GPIO2->FIOCLR = partstFIO2_BITS; - GPIO1->FIOCLR = partstFIO1_BITS; -} -/*-----------------------------------------------------------*/ - -void vParTestSetLED( unsigned long ulLEDIn, signed long xValue ) -{ -unsigned long ulLED = partstFIRST_IO; - - /* Used to set and clear LEDs on FIO2. */ - - if( ulLEDIn < partstNUM_LEDS ) - { - /* Rotate to the wanted bit of port */ - ulLED <<= ( unsigned long ) ulLEDIn; - - /* Set of clear the output. */ - if( xValue ) - { - GPIO2->FIOCLR = ulLED; - } - else - { - GPIO2->FIOSET = ulLED; - } - } -} -/*-----------------------------------------------------------*/ - -void vParTestToggleLED( unsigned long ulLEDIn ) -{ -unsigned long ulLED = partstFIRST_IO, ulCurrentState; - - /* Used to toggle LEDs on FIO2. */ - - if( ulLEDIn < partstNUM_LEDS ) - { - /* Rotate to the wanted bit of port 0. Only P10 to P13 have an LED - attached. */ - ulLED <<= ( unsigned long ) ulLEDIn; - - /* If this bit is already set, clear it, and vice versa. */ - ulCurrentState = GPIO2->FIOPIN; - if( ulCurrentState & ulLED ) - { - GPIO2->FIOCLR = ulLED; - } - else - { - GPIO2->FIOSET = ulLED; - } - } -} -/*-----------------------------------------------------------*/ - -long lParTestGetLEDState( void ) -{ - /* Returns the state of the LEDs on FIO1. */ - if( ( GPIO1->FIOPIN & partstFIO1_BITS ) != 0 ) - { - return pdFALSE; - } - else - { - return pdTRUE; - } -} -/*-----------------------------------------------------------*/ - -void vParTestSetLEDState( long lState ) -{ - /* Used to set and clear the LEDs on FIO1. */ - if( lState != pdFALSE ) - { - GPIO1->FIOSET = partstFIO1_BITS; - } - else - { - GPIO1->FIOCLR = partstFIO1_BITS; - } -} -/*-----------------------------------------------------------*/ - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/RTOSDemo.hzp b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/RTOSDemo.hzp deleted file mode 100644 index 7e4edca2b..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/RTOSDemo.hzp +++ /dev/null @@ -1,66 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/RTOSDemo.hzs b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/RTOSDemo.hzs deleted file mode 100644 index bb4101afc..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/RTOSDemo.hzs +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/ReadMe.txt b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/ReadMe.txt new file mode 100644 index 000000000..12c70d213 --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/ReadMe.txt @@ -0,0 +1 @@ +The third party uIP TCP/IP stack and the demo project that used to be in this directory was removed in FreeRTOS version V10.4.3 due to security vulnerabilities identified in uIP. In a future version this demo may be replaced by a version which does not use TCP/IP or uses FreeRTOS’s own TCP/IP stack in place of the original third party stack. \ No newline at end of file diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/core_cm3.h b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/core_cm3.h deleted file mode 100644 index b6f9696bf..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/core_cm3.h +++ /dev/null @@ -1,1367 +0,0 @@ -/****************************************************************************** - * @file: core_cm3.h - * @purpose: CMSIS Cortex-M3 Core Peripheral Access Layer Header File - * @version: V1.20 - * @date: 22. May 2009 - *---------------------------------------------------------------------------- - * - * Copyright (C) 2009 ARM Limited. All rights reserved. - * - * ARM Limited (ARM) is supplying this software for use with Cortex-Mx - * processor based microcontrollers. This file can be freely distributed - * within development tools that are supporting such ARM based processors. - * - * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED - * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. - * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR - * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. - * - ******************************************************************************/ - -#ifndef __CM3_CORE_H__ -#define __CM3_CORE_H__ - -#ifdef __cplusplus - extern "C" { -#endif - -#define __CM3_CMSIS_VERSION_MAIN (0x01) /*!< [31:16] CMSIS HAL main version */ -#define __CM3_CMSIS_VERSION_SUB (0x20) /*!< [15:0] CMSIS HAL sub version */ -#define __CM3_CMSIS_VERSION ((__CM3_CMSIS_VERSION_MAIN << 16) | __CM3_CMSIS_VERSION_SUB) /*!< CMSIS HAL version number */ - -#define __CORTEX_M (0x03) /*!< Cortex core */ - -/** - * Lint configuration \n - * ----------------------- \n - * - * The following Lint messages will be suppressed and not shown: \n - * \n - * --- Error 10: --- \n - * register uint32_t __regBasePri __asm("basepri"); \n - * Error 10: Expecting ';' \n - * \n - * --- Error 530: --- \n - * return(__regBasePri); \n - * Warning 530: Symbol '__regBasePri' (line 264) not initialized \n - * \n - * --- Error 550: --- \n - * __regBasePri = (basePri & 0x1ff); \n - * } \n - * Warning 550: Symbol '__regBasePri' (line 271) not accessed \n - * \n - * --- Error 754: --- \n - * uint32_t RESERVED0[24]; \n - * Info 754: local structure member '' (line 109, file ./cm3_core.h) not referenced \n - * \n - * --- Error 750: --- \n - * #define __CM3_CORE_H__ \n - * Info 750: local macro '__CM3_CORE_H__' (line 43, file./cm3_core.h) not referenced \n - * \n - * --- Error 528: --- \n - * static __INLINE void NVIC_DisableIRQ(uint32_t IRQn) \n - * Warning 528: Symbol 'NVIC_DisableIRQ(unsigned int)' (line 419, file ./cm3_core.h) not referenced \n - * \n - * --- Error 751: --- \n - * } InterruptType_Type; \n - * Info 751: local typedef 'InterruptType_Type' (line 170, file ./cm3_core.h) not referenced \n - * \n - * \n - * Note: To re-enable a Message, insert a space before 'lint' * \n - * - */ - -/*lint -save */ -/*lint -e10 */ -/*lint -e530 */ -/*lint -e550 */ -/*lint -e754 */ -/*lint -e750 */ -/*lint -e528 */ -/*lint -e751 */ - - -#include /* Include standard types */ - -#if defined (__ICCARM__) - #include /* IAR Intrinsics */ -#endif - - -#ifndef __NVIC_PRIO_BITS - #define __NVIC_PRIO_BITS 4 /*!< standard definition for NVIC Priority Bits */ -#endif - - - - -/** - * IO definitions - * - * define access restrictions to peripheral registers - */ - -#ifdef __cplusplus -#define __I volatile /*!< defines 'read only' permissions */ -#else -#define __I volatile const /*!< defines 'read only' permissions */ -#endif -#define __O volatile /*!< defines 'write only' permissions */ -#define __IO volatile /*!< defines 'read / write' permissions */ - - - -/******************************************************************************* - * Register Abstraction - ******************************************************************************/ - - -/* System Reset */ -#define NVIC_VECTRESET 0 /*!< Vector Reset Bit */ -#define NVIC_SYSRESETREQ 2 /*!< System Reset Request */ -#define NVIC_AIRCR_VECTKEY (0x5FA << 16) /*!< AIRCR Key for write access */ -#define NVIC_AIRCR_ENDIANESS 15 /*!< Endianess */ - -/* Core Debug */ -#define CoreDebug_DEMCR_TRCENA (1 << 24) /*!< DEMCR TRCENA enable */ -#define ITM_TCR_ITMENA 1 /*!< ITM enable */ - - - - -/* memory mapping struct for Nested Vectored Interrupt Controller (NVIC) */ -typedef struct -{ - __IO uint32_t ISER[8]; /*!< Interrupt Set Enable Register */ - uint32_t RESERVED0[24]; - __IO uint32_t ICER[8]; /*!< Interrupt Clear Enable Register */ - uint32_t RSERVED1[24]; - __IO uint32_t ISPR[8]; /*!< Interrupt Set Pending Register */ - uint32_t RESERVED2[24]; - __IO uint32_t ICPR[8]; /*!< Interrupt Clear Pending Register */ - uint32_t RESERVED3[24]; - __IO uint32_t IABR[8]; /*!< Interrupt Active bit Register */ - uint32_t RESERVED4[56]; - __IO uint8_t IP[240]; /*!< Interrupt Priority Register, 8Bit wide */ - uint32_t RESERVED5[644]; - __O uint32_t STIR; /*!< Software Trigger Interrupt Register */ -} NVIC_Type; - - -/* memory mapping struct for System Control Block */ -typedef struct -{ - __I uint32_t CPUID; /*!< CPU ID Base Register */ - __IO uint32_t ICSR; /*!< Interrupt Control State Register */ - __IO uint32_t VTOR; /*!< Vector Table Offset Register */ - __IO uint32_t AIRCR; /*!< Application Interrupt / Reset Control Register */ - __IO uint32_t SCR; /*!< System Control Register */ - __IO uint32_t CCR; /*!< Configuration Control Register */ - __IO uint8_t SHP[12]; /*!< System Handlers Priority Registers (4-7, 8-11, 12-15) */ - __IO uint32_t SHCSR; /*!< System Handler Control and State Register */ - __IO uint32_t CFSR; /*!< Configurable Fault Status Register */ - __IO uint32_t HFSR; /*!< Hard Fault Status Register */ - __IO uint32_t DFSR; /*!< Debug Fault Status Register */ - __IO uint32_t MMFAR; /*!< Mem Manage Address Register */ - __IO uint32_t BFAR; /*!< Bus Fault Address Register */ - __IO uint32_t AFSR; /*!< Auxiliary Fault Status Register */ - __I uint32_t PFR[2]; /*!< Processor Feature Register */ - __I uint32_t DFR; /*!< Debug Feature Register */ - __I uint32_t ADR; /*!< Auxiliary Feature Register */ - __I uint32_t MMFR[4]; /*!< Memory Model Feature Register */ - __I uint32_t ISAR[5]; /*!< ISA Feature Register */ -} SCB_Type; - - -/* memory mapping struct for SysTick */ -typedef struct -{ - __IO uint32_t CTRL; /*!< SysTick Control and Status Register */ - __IO uint32_t LOAD; /*!< SysTick Reload Value Register */ - __IO uint32_t VAL; /*!< SysTick Current Value Register */ - __I uint32_t CALIB; /*!< SysTick Calibration Register */ -} SysTick_Type; - - -/* memory mapping structur for ITM */ -typedef struct -{ - __O union - { - __O uint8_t u8; /*!< ITM Stimulus Port 8-bit */ - __O uint16_t u16; /*!< ITM Stimulus Port 16-bit */ - __O uint32_t u32; /*!< ITM Stimulus Port 32-bit */ - } PORT [32]; /*!< ITM Stimulus Port Registers */ - uint32_t RESERVED0[864]; - __IO uint32_t TER; /*!< ITM Trace Enable Register */ - uint32_t RESERVED1[15]; - __IO uint32_t TPR; /*!< ITM Trace Privilege Register */ - uint32_t RESERVED2[15]; - __IO uint32_t TCR; /*!< ITM Trace Control Register */ - uint32_t RESERVED3[29]; - __IO uint32_t IWR; /*!< ITM Integration Write Register */ - __IO uint32_t IRR; /*!< ITM Integration Read Register */ - __IO uint32_t IMCR; /*!< ITM Integration Mode Control Register */ - uint32_t RESERVED4[43]; - __IO uint32_t LAR; /*!< ITM Lock Access Register */ - __IO uint32_t LSR; /*!< ITM Lock Status Register */ - uint32_t RESERVED5[6]; - __I uint32_t PID4; /*!< ITM Product ID Registers */ - __I uint32_t PID5; - __I uint32_t PID6; - __I uint32_t PID7; - __I uint32_t PID0; - __I uint32_t PID1; - __I uint32_t PID2; - __I uint32_t PID3; - __I uint32_t CID0; - __I uint32_t CID1; - __I uint32_t CID2; - __I uint32_t CID3; -} ITM_Type; - - -/* memory mapped struct for Interrupt Type */ -typedef struct -{ - uint32_t RESERVED0; - __I uint32_t ICTR; /*!< Interrupt Control Type Register */ -#if ((defined __CM3_REV) && (__CM3_REV >= 0x200)) - __IO uint32_t ACTLR; /*!< Auxiliary Control Register */ -#else - uint32_t RESERVED1; -#endif -} InterruptType_Type; - - -/* Memory Protection Unit */ -#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1) -typedef struct -{ - __I uint32_t TYPE; /*!< MPU Type Register */ - __IO uint32_t CTRL; /*!< MPU Control Register */ - __IO uint32_t RNR; /*!< MPU Region RNRber Register */ - __IO uint32_t RBAR; /*!< MPU Region Base Address Register */ - __IO uint32_t RASR; /*!< MPU Region Attribute and Size Register */ - __IO uint32_t RBAR_A1; /*!< MPU Alias 1 Region Base Address Register */ - __IO uint32_t RASR_A1; /*!< MPU Alias 1 Region Attribute and Size Register */ - __IO uint32_t RBAR_A2; /*!< MPU Alias 2 Region Base Address Register */ - __IO uint32_t RASR_A2; /*!< MPU Alias 2 Region Attribute and Size Register */ - __IO uint32_t RBAR_A3; /*!< MPU Alias 3 Region Base Address Register */ - __IO uint32_t RASR_A3; /*!< MPU Alias 3 Region Attribute and Size Register */ -} MPU_Type; -#endif - - -/* Core Debug Register */ -typedef struct -{ - __IO uint32_t DHCSR; /*!< Debug Halting Control and Status Register */ - __O uint32_t DCRSR; /*!< Debug Core Register Selector Register */ - __IO uint32_t DCRDR; /*!< Debug Core Register Data Register */ - __IO uint32_t DEMCR; /*!< Debug Exception and Monitor Control Register */ -} CoreDebug_Type; - - -/* Memory mapping of Cortex-M3 Hardware */ -#define SCS_BASE (0xE000E000) /*!< System Control Space Base Address */ -#define ITM_BASE (0xE0000000) /*!< ITM Base Address */ -#define CoreDebug_BASE (0xE000EDF0) /*!< Core Debug Base Address */ -#define SysTick_BASE (SCS_BASE + 0x0010) /*!< SysTick Base Address */ -#define NVIC_BASE (SCS_BASE + 0x0100) /*!< NVIC Base Address */ -#define SCB_BASE (SCS_BASE + 0x0D00) /*!< System Control Block Base Address */ - -#define InterruptType ((InterruptType_Type *) SCS_BASE) /*!< Interrupt Type Register */ -#define SCB ((SCB_Type *) SCB_BASE) /*!< SCB configuration struct */ -#define SysTick ((SysTick_Type *) SysTick_BASE) /*!< SysTick configuration struct */ -#define NVIC ((NVIC_Type *) NVIC_BASE) /*!< NVIC configuration struct */ -#define ITM ((ITM_Type *) ITM_BASE) /*!< ITM configuration struct */ -#define CoreDebug ((CoreDebug_Type *) CoreDebug_BASE) /*!< Core Debug configuration struct */ - -#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1) - #define MPU_BASE (SCS_BASE + 0x0D90) /*!< Memory Protection Unit */ - #define MPU ((MPU_Type*) MPU_BASE) /*!< Memory Protection Unit */ -#endif - - - -/******************************************************************************* - * Hardware Abstraction Layer - ******************************************************************************/ - - -#if defined ( __CC_ARM ) - #define __ASM __asm /*!< asm keyword for ARM Compiler */ - #define __INLINE __inline /*!< inline keyword for ARM Compiler */ - -#elif defined ( __ICCARM__ ) - #define __ASM __asm /*!< asm keyword for IAR Compiler */ - #define __INLINE inline /*!< inline keyword for IAR Compiler. Only avaiable in High optimization mode! */ - -#elif defined ( __GNUC__ ) - #define __ASM __asm /*!< asm keyword for GNU Compiler */ - #define __INLINE inline /*!< inline keyword for GNU Compiler */ - -#elif defined ( __TASKING__ ) - #define __ASM __asm /*!< asm keyword for TASKING Compiler */ - #define __INLINE inline /*!< inline keyword for TASKING Compiler */ - -#endif - - -/* ################### Compiler specific Intrinsics ########################### */ - -#if defined ( __CC_ARM ) /*------------------RealView Compiler -----------------*/ -/* ARM armcc specific functions */ - -#define __enable_fault_irq __enable_fiq -#define __disable_fault_irq __disable_fiq - -#define __NOP __nop -#define __WFI __wfi -#define __WFE __wfe -#define __SEV __sev -#define __ISB() __isb(0) -#define __DSB() __dsb(0) -#define __DMB() __dmb(0) -#define __REV __rev -#define __RBIT __rbit -#define __LDREXB(ptr) ((unsigned char ) __ldrex(ptr)) -#define __LDREXH(ptr) ((unsigned short) __ldrex(ptr)) -#define __LDREXW(ptr) ((unsigned int ) __ldrex(ptr)) -#define __STREXB(value, ptr) __strex(value, ptr) -#define __STREXH(value, ptr) __strex(value, ptr) -#define __STREXW(value, ptr) __strex(value, ptr) - - -/* intrinsic unsigned long long __ldrexd(volatile void *ptr) */ -/* intrinsic int __strexd(unsigned long long val, volatile void *ptr) */ -/* intrinsic void __enable_irq(); */ -/* intrinsic void __disable_irq(); */ - - -/** - * @brief Return the Process Stack Pointer - * - * @param none - * @return uint32_t ProcessStackPointer - * - * Return the actual process stack pointer - */ -extern uint32_t __get_PSP(void); - -/** - * @brief Set the Process Stack Pointer - * - * @param uint32_t Process Stack Pointer - * @return none - * - * Assign the value ProcessStackPointer to the MSP - * (process stack pointer) Cortex processor register - */ -extern void __set_PSP(uint32_t topOfProcStack); - -/** - * @brief Return the Main Stack Pointer - * - * @param none - * @return uint32_t Main Stack Pointer - * - * Return the current value of the MSP (main stack pointer) - * Cortex processor register - */ -extern uint32_t __get_MSP(void); - -/** - * @brief Set the Main Stack Pointer - * - * @param uint32_t Main Stack Pointer - * @return none - * - * Assign the value mainStackPointer to the MSP - * (main stack pointer) Cortex processor register - */ -extern void __set_MSP(uint32_t topOfMainStack); - -/** - * @brief Reverse byte order in unsigned short value - * - * @param uint16_t value to reverse - * @return uint32_t reversed value - * - * Reverse byte order in unsigned short value - */ -extern uint32_t __REV16(uint16_t value); - -/* - * @brief Reverse byte order in signed short value with sign extension to integer - * - * @param int16_t value to reverse - * @return int32_t reversed value - * - * Reverse byte order in signed short value with sign extension to integer - */ -extern int32_t __REVSH(int16_t value); - - -#if (__ARMCC_VERSION < 400000) - -/** - * @brief Remove the exclusive lock created by ldrex - * - * @param none - * @return none - * - * Removes the exclusive lock which is created by ldrex. - */ -extern void __CLREX(void); - -/** - * @brief Return the Base Priority value - * - * @param none - * @return uint32_t BasePriority - * - * Return the content of the base priority register - */ -extern uint32_t __get_BASEPRI(void); - -/** - * @brief Set the Base Priority value - * - * @param uint32_t BasePriority - * @return none - * - * Set the base priority register - */ -extern void __set_BASEPRI(uint32_t basePri); - -/** - * @brief Return the Priority Mask value - * - * @param none - * @return uint32_t PriMask - * - * Return the state of the priority mask bit from the priority mask - * register - */ -extern uint32_t __get_PRIMASK(void); - -/** - * @brief Set the Priority Mask value - * - * @param uint32_t PriMask - * @return none - * - * Set the priority mask bit in the priority mask register - */ -extern void __set_PRIMASK(uint32_t priMask); - -/** - * @brief Return the Fault Mask value - * - * @param none - * @return uint32_t FaultMask - * - * Return the content of the fault mask register - */ -extern uint32_t __get_FAULTMASK(void); - -/** - * @brief Set the Fault Mask value - * - * @param uint32_t faultMask value - * @return none - * - * Set the fault mask register - */ -extern void __set_FAULTMASK(uint32_t faultMask); - -/** - * @brief Return the Control Register value - * - * @param none - * @return uint32_t Control value - * - * Return the content of the control register - */ -extern uint32_t __get_CONTROL(void); - -/** - * @brief Set the Control Register value - * - * @param uint32_t Control value - * @return none - * - * Set the control register - */ -extern void __set_CONTROL(uint32_t control); - -#else /* (__ARMCC_VERSION >= 400000) */ - - -/** - * @brief Remove the exclusive lock created by ldrex - * - * @param none - * @return none - * - * Removes the exclusive lock which is created by ldrex. - */ -#define __CLREX __clrex - -/** - * @brief Return the Base Priority value - * - * @param none - * @return uint32_t BasePriority - * - * Return the content of the base priority register - */ -static __INLINE uint32_t __get_BASEPRI(void) -{ - register uint32_t __regBasePri __ASM("basepri"); - return(__regBasePri); -} - -/** - * @brief Set the Base Priority value - * - * @param uint32_t BasePriority - * @return none - * - * Set the base priority register - */ -static __INLINE void __set_BASEPRI(uint32_t basePri) -{ - register uint32_t __regBasePri __ASM("basepri"); - __regBasePri = (basePri & 0x1ff); -} - -/** - * @brief Return the Priority Mask value - * - * @param none - * @return uint32_t PriMask - * - * Return the state of the priority mask bit from the priority mask - * register - */ -static __INLINE uint32_t __get_PRIMASK(void) -{ - register uint32_t __regPriMask __ASM("primask"); - return(__regPriMask); -} - -/** - * @brief Set the Priority Mask value - * - * @param uint32_t PriMask - * @return none - * - * Set the priority mask bit in the priority mask register - */ -static __INLINE void __set_PRIMASK(uint32_t priMask) -{ - register uint32_t __regPriMask __ASM("primask"); - __regPriMask = (priMask); -} - -/** - * @brief Return the Fault Mask value - * - * @param none - * @return uint32_t FaultMask - * - * Return the content of the fault mask register - */ -static __INLINE uint32_t __get_FAULTMASK(void) -{ - register uint32_t __regFaultMask __ASM("faultmask"); - return(__regFaultMask); -} - -/** - * @brief Set the Fault Mask value - * - * @param uint32_t faultMask value - * @return none - * - * Set the fault mask register - */ -static __INLINE void __set_FAULTMASK(uint32_t faultMask) -{ - register uint32_t __regFaultMask __ASM("faultmask"); - __regFaultMask = (faultMask & 1); -} - -/** - * @brief Return the Control Register value - * - * @param none - * @return uint32_t Control value - * - * Return the content of the control register - */ -static __INLINE uint32_t __get_CONTROL(void) -{ - register uint32_t __regControl __ASM("control"); - return(__regControl); -} - -/** - * @brief Set the Control Register value - * - * @param uint32_t Control value - * @return none - * - * Set the control register - */ -static __INLINE void __set_CONTROL(uint32_t control) -{ - register uint32_t __regControl __ASM("control"); - __regControl = control; -} - -#endif /* __ARMCC_VERSION */ - - - -#elif (defined (__ICCARM__)) /*------------------ ICC Compiler -------------------*/ -/* IAR iccarm specific functions */ - -#define __enable_irq __enable_interrupt /*!< global Interrupt enable */ -#define __disable_irq __disable_interrupt /*!< global Interrupt disable */ - -static __INLINE void __enable_fault_irq() { __ASM ("cpsie f"); } -static __INLINE void __disable_fault_irq() { __ASM ("cpsid f"); } - -#define __NOP __no_operation() /*!< no operation intrinsic in IAR Compiler */ -static __INLINE void __WFI() { __ASM ("wfi"); } -static __INLINE void __WFE() { __ASM ("wfe"); } -static __INLINE void __SEV() { __ASM ("sev"); } -static __INLINE void __CLREX() { __ASM ("clrex"); } - -/* intrinsic void __ISB(void) */ -/* intrinsic void __DSB(void) */ -/* intrinsic void __DMB(void) */ -/* intrinsic void __set_PRIMASK(); */ -/* intrinsic void __get_PRIMASK(); */ -/* intrinsic void __set_FAULTMASK(); */ -/* intrinsic void __get_FAULTMASK(); */ -/* intrinsic uint32_t __REV(uint32_t value); */ -/* intrinsic uint32_t __REVSH(uint32_t value); */ -/* intrinsic unsigned long __STREX(unsigned long, unsigned long); */ -/* intrinsic unsigned long __LDREX(unsigned long *); */ - - -/** - * @brief Return the Process Stack Pointer - * - * @param none - * @return uint32_t ProcessStackPointer - * - * Return the actual process stack pointer - */ -extern uint32_t __get_PSP(void); - -/** - * @brief Set the Process Stack Pointer - * - * @param uint32_t Process Stack Pointer - * @return none - * - * Assign the value ProcessStackPointer to the MSP - * (process stack pointer) Cortex processor register - */ -extern void __set_PSP(uint32_t topOfProcStack); - -/** - * @brief Return the Main Stack Pointer - * - * @param none - * @return uint32_t Main Stack Pointer - * - * Return the current value of the MSP (main stack pointer) - * Cortex processor register - */ -extern uint32_t __get_MSP(void); - -/** - * @brief Set the Main Stack Pointer - * - * @param uint32_t Main Stack Pointer - * @return none - * - * Assign the value mainStackPointer to the MSP - * (main stack pointer) Cortex processor register - */ -extern void __set_MSP(uint32_t topOfMainStack); - -/** - * @brief Reverse byte order in unsigned short value - * - * @param uint16_t value to reverse - * @return uint32_t reversed value - * - * Reverse byte order in unsigned short value - */ -extern uint32_t __REV16(uint16_t value); - -/** - * @brief Reverse bit order of value - * - * @param uint32_t value to reverse - * @return uint32_t reversed value - * - * Reverse bit order of value - */ -extern uint32_t __RBIT(uint32_t value); - -/** - * @brief LDR Exclusive - * - * @param uint8_t* address - * @return uint8_t value of (*address) - * - * Exclusive LDR command - */ -extern uint8_t __LDREXB(uint8_t *addr); - -/** - * @brief LDR Exclusive - * - * @param uint16_t* address - * @return uint16_t value of (*address) - * - * Exclusive LDR command - */ -extern uint16_t __LDREXH(uint16_t *addr); - -/** - * @brief LDR Exclusive - * - * @param uint32_t* address - * @return uint32_t value of (*address) - * - * Exclusive LDR command - */ -extern uint32_t __LDREXW(uint32_t *addr); - -/** - * @brief STR Exclusive - * - * @param uint8_t *address - * @param uint8_t value to store - * @return uint32_t successful / failed - * - * Exclusive STR command - */ -extern uint32_t __STREXB(uint8_t value, uint8_t *addr); - -/** - * @brief STR Exclusive - * - * @param uint16_t *address - * @param uint16_t value to store - * @return uint32_t successful / failed - * - * Exclusive STR command - */ -extern uint32_t __STREXH(uint16_t value, uint16_t *addr); - -/** - * @brief STR Exclusive - * - * @param uint32_t *address - * @param uint32_t value to store - * @return uint32_t successful / failed - * - * Exclusive STR command - */ -extern uint32_t __STREXW(uint32_t value, uint32_t *addr); - - - -#elif (defined (__GNUC__)) /*------------------ GNU Compiler ---------------------*/ -/* GNU gcc specific functions */ - -static __INLINE void __enable_irq() { __ASM volatile ("cpsie i"); } -static __INLINE void __disable_irq() { __ASM volatile ("cpsid i"); } - -static __INLINE void __enable_fault_irq() { __ASM volatile ("cpsie f"); } -static __INLINE void __disable_fault_irq() { __ASM volatile ("cpsid f"); } - -static __INLINE void __NOP() { __ASM volatile ("nop"); } -static __INLINE void __WFI() { __ASM volatile ("wfi"); } -static __INLINE void __WFE() { __ASM volatile ("wfe"); } -static __INLINE void __SEV() { __ASM volatile ("sev"); } -static __INLINE void __ISB() { __ASM volatile ("isb"); } -static __INLINE void __DSB() { __ASM volatile ("dsb"); } -static __INLINE void __DMB() { __ASM volatile ("dmb"); } -static __INLINE void __CLREX() { __ASM volatile ("clrex"); } - - -/** - * @brief Return the Process Stack Pointer - * - * @param none - * @return uint32_t ProcessStackPointer - * - * Return the actual process stack pointer - */ -extern uint32_t __get_PSP(void); - -/** - * @brief Set the Process Stack Pointer - * - * @param uint32_t Process Stack Pointer - * @return none - * - * Assign the value ProcessStackPointer to the MSP - * (process stack pointer) Cortex processor register - */ -extern void __set_PSP(uint32_t topOfProcStack); - -/** - * @brief Return the Main Stack Pointer - * - * @param none - * @return uint32_t Main Stack Pointer - * - * Return the current value of the MSP (main stack pointer) - * Cortex processor register - */ -extern uint32_t __get_MSP(void); - -/** - * @brief Set the Main Stack Pointer - * - * @param uint32_t Main Stack Pointer - * @return none - * - * Assign the value mainStackPointer to the MSP - * (main stack pointer) Cortex processor register - */ -extern void __set_MSP(uint32_t topOfMainStack); - -/** - * @brief Return the Base Priority value - * - * @param none - * @return uint32_t BasePriority - * - * Return the content of the base priority register - */ -extern uint32_t __get_BASEPRI(void); - -/** - * @brief Set the Base Priority value - * - * @param uint32_t BasePriority - * @return none - * - * Set the base priority register - */ -extern void __set_BASEPRI(uint32_t basePri); - -/** - * @brief Return the Priority Mask value - * - * @param none - * @return uint32_t PriMask - * - * Return the state of the priority mask bit from the priority mask - * register - */ -extern uint32_t __get_PRIMASK(void); - -/** - * @brief Set the Priority Mask value - * - * @param uint32_t PriMask - * @return none - * - * Set the priority mask bit in the priority mask register - */ -extern void __set_PRIMASK(uint32_t priMask); - -/** - * @brief Return the Fault Mask value - * - * @param none - * @return uint32_t FaultMask - * - * Return the content of the fault mask register - */ -extern uint32_t __get_FAULTMASK(void); - -/** - * @brief Set the Fault Mask value - * - * @param uint32_t faultMask value - * @return none - * - * Set the fault mask register - */ -extern void __set_FAULTMASK(uint32_t faultMask); - -/** - * @brief Return the Control Register value -* -* @param none -* @return uint32_t Control value - * - * Return the content of the control register - */ -extern uint32_t __get_CONTROL(void); - -/** - * @brief Set the Control Register value - * - * @param uint32_t Control value - * @return none - * - * Set the control register - */ -extern void __set_CONTROL(uint32_t control); - -/** - * @brief Reverse byte order in integer value - * - * @param uint32_t value to reverse - * @return uint32_t reversed value - * - * Reverse byte order in integer value - */ -extern uint32_t __REV(uint32_t value); - -/** - * @brief Reverse byte order in unsigned short value - * - * @param uint16_t value to reverse - * @return uint32_t reversed value - * - * Reverse byte order in unsigned short value - */ -extern uint32_t __REV16(uint16_t value); - -/* - * Reverse byte order in signed short value with sign extension to integer - * - * @param int16_t value to reverse - * @return int32_t reversed value - * - * @brief Reverse byte order in signed short value with sign extension to integer - */ -extern int32_t __REVSH(int16_t value); - -/** - * @brief Reverse bit order of value - * - * @param uint32_t value to reverse - * @return uint32_t reversed value - * - * Reverse bit order of value - */ -extern uint32_t __RBIT(uint32_t value); - -/** - * @brief LDR Exclusive - * - * @param uint8_t* address - * @return uint8_t value of (*address) - * - * Exclusive LDR command - */ -extern uint8_t __LDREXB(uint8_t *addr); - -/** - * @brief LDR Exclusive - * - * @param uint16_t* address - * @return uint16_t value of (*address) - * - * Exclusive LDR command - */ -extern uint16_t __LDREXH(uint16_t *addr); - -/** - * @brief LDR Exclusive - * - * @param uint32_t* address - * @return uint32_t value of (*address) - * - * Exclusive LDR command - */ -extern uint32_t __LDREXW(uint32_t *addr); - -/** - * @brief STR Exclusive - * - * @param uint8_t *address - * @param uint8_t value to store - * @return uint32_t successful / failed - * - * Exclusive STR command - */ -extern uint32_t __STREXB(uint8_t value, uint8_t *addr); - -/** - * @brief STR Exclusive - * - * @param uint16_t *address - * @param uint16_t value to store - * @return uint32_t successful / failed - * - * Exclusive STR command - */ -extern uint32_t __STREXH(uint16_t value, uint16_t *addr); - -/** - * @brief STR Exclusive - * - * @param uint32_t *address - * @param uint32_t value to store - * @return uint32_t successful / failed - * - * Exclusive STR command - */ -extern uint32_t __STREXW(uint32_t value, uint32_t *addr); - - -#elif (defined (__TASKING__)) /*------------------ TASKING Compiler ---------------------*/ -/* TASKING carm specific functions */ - -/* - * The CMSIS functions have been implemented as intrinsics in the compiler. - * Please use "carm -?i" to get an up to date list of all instrinsics, - * Including the CMSIS ones. - */ - -#endif - - - -/* ########################## NVIC functions #################################### */ - - -/** - * @brief Set the Priority Grouping in NVIC Interrupt Controller - * - * @param uint32_t priority_grouping is priority grouping field - * @return none - * - * Set the priority grouping field using the required unlock sequence. - * The parameter priority_grouping is assigned to the field - * SCB->AIRCR [10:8] PRIGROUP field. Only values from 0..7 are used. - * In case of a conflict between priority grouping and available - * priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set. - */ -static __INLINE void NVIC_SetPriorityGrouping(uint32_t PriorityGroup) -{ - uint32_t reg_value; - uint32_t PriorityGroupTmp = (PriorityGroup & 0x07); /* only values 0..7 are used */ - - reg_value = SCB->AIRCR; /* read old register configuration */ - reg_value &= ~((0xFFFFU << 16) | (0x0F << 8)); /* clear bits to change */ - reg_value = ((reg_value | NVIC_AIRCR_VECTKEY | (PriorityGroupTmp << 8))); /* Insert write key and priorty group */ - SCB->AIRCR = reg_value; -} - -/** - * @brief Get the Priority Grouping from NVIC Interrupt Controller - * - * @param none - * @return uint32_t priority grouping field - * - * Get the priority grouping from NVIC Interrupt Controller. - * priority grouping is SCB->AIRCR [10:8] PRIGROUP field. - */ -static __INLINE uint32_t NVIC_GetPriorityGrouping(void) -{ - return ((SCB->AIRCR >> 8) & 0x07); /* read priority grouping field */ -} - -/** - * @brief Enable Interrupt in NVIC Interrupt Controller - * - * @param IRQn_Type IRQn specifies the interrupt number - * @return none - * - * Enable a device specific interupt in the NVIC interrupt controller. - * The interrupt number cannot be a negative value. - */ -static __INLINE void NVIC_EnableIRQ(IRQn_Type IRQn) -{ - NVIC->ISER[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F)); /* enable interrupt */ -} - -/** - * @brief Disable the interrupt line for external interrupt specified - * - * @param IRQn_Type IRQn is the positive number of the external interrupt - * @return none - * - * Disable a device specific interupt in the NVIC interrupt controller. - * The interrupt number cannot be a negative value. - */ -static __INLINE void NVIC_DisableIRQ(IRQn_Type IRQn) -{ - NVIC->ICER[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F)); /* disable interrupt */ -} - -/** - * @brief Read the interrupt pending bit for a device specific interrupt source - * - * @param IRQn_Type IRQn is the number of the device specifc interrupt - * @return uint32_t 1 if pending interrupt else 0 - * - * Read the pending register in NVIC and return 1 if its status is pending, - * otherwise it returns 0 - */ -static __INLINE uint32_t NVIC_GetPendingIRQ(IRQn_Type IRQn) -{ - return((uint32_t) ((NVIC->ISPR[(uint32_t)(IRQn) >> 5] & (1 << ((uint32_t)(IRQn) & 0x1F)))?1:0)); /* Return 1 if pending else 0 */ -} - -/** - * @brief Set the pending bit for an external interrupt - * - * @param IRQn_Type IRQn is the Number of the interrupt - * @return none - * - * Set the pending bit for the specified interrupt. - * The interrupt number cannot be a negative value. - */ -static __INLINE void NVIC_SetPendingIRQ(IRQn_Type IRQn) -{ - NVIC->ISPR[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F)); /* set interrupt pending */ -} - -/** - * @brief Clear the pending bit for an external interrupt - * - * @param IRQn_Type IRQn is the Number of the interrupt - * @return none - * - * Clear the pending bit for the specified interrupt. - * The interrupt number cannot be a negative value. - */ -static __INLINE void NVIC_ClearPendingIRQ(IRQn_Type IRQn) -{ - NVIC->ICPR[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F)); /* Clear pending interrupt */ -} - -/** - * @brief Read the active bit for an external interrupt - * - * @param IRQn_Type IRQn is the Number of the interrupt - * @return uint32_t 1 if active else 0 - * - * Read the active register in NVIC and returns 1 if its status is active, - * otherwise it returns 0. - */ -static __INLINE uint32_t NVIC_GetActive(IRQn_Type IRQn) -{ - return((uint32_t)((NVIC->IABR[(uint32_t)(IRQn) >> 5] & (1 << ((uint32_t)(IRQn) & 0x1F)))?1:0)); /* Return 1 if active else 0 */ -} - -/** - * @brief Set the priority for an interrupt - * - * @param IRQn_Type IRQn is the Number of the interrupt - * @param priority is the priority for the interrupt - * @return none - * - * Set the priority for the specified interrupt. The interrupt - * number can be positive to specify an external (device specific) - * interrupt, or negative to specify an internal (core) interrupt. \n - * - * Note: The priority cannot be set for every core interrupt. - */ -static __INLINE void NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) -{ - if(IRQn < 0) { - SCB->SHP[((uint32_t)(IRQn) & 0xF)-4] = ((priority << (8 - __NVIC_PRIO_BITS)) & 0xff); } /* set Priority for Cortex-M3 System Interrupts */ - else { - NVIC->IP[(uint32_t)(IRQn)] = ((priority << (8 - __NVIC_PRIO_BITS)) & 0xff); } /* set Priority for device specific Interrupts */ -} - -/** - * @brief Read the priority for an interrupt - * - * @param IRQn_Type IRQn is the Number of the interrupt - * @return uint32_t priority is the priority for the interrupt - * - * Read the priority for the specified interrupt. The interrupt - * number can be positive to specify an external (device specific) - * interrupt, or negative to specify an internal (core) interrupt. - * - * The returned priority value is automatically aligned to the implemented - * priority bits of the microcontroller. - * - * Note: The priority cannot be set for every core interrupt. - */ -static __INLINE uint32_t NVIC_GetPriority(IRQn_Type IRQn) -{ - - if(IRQn < 0) { - return((uint32_t)(SCB->SHP[((uint32_t)(IRQn) & 0xF)-4] >> (8 - __NVIC_PRIO_BITS))); } /* get priority for Cortex-M3 system interrupts */ - else { - return((uint32_t)(NVIC->IP[(uint32_t)(IRQn)] >> (8 - __NVIC_PRIO_BITS))); } /* get priority for device specific interrupts */ -} - - -/** - * @brief Encode the priority for an interrupt - * - * @param uint32_t PriorityGroup is the used priority group - * @param uint32_t PreemptPriority is the preemptive priority value (starting from 0) - * @param uint32_t SubPriority is the sub priority value (starting from 0) - * @return uint32_t the priority for the interrupt - * - * Encode the priority for an interrupt with the given priority group, - * preemptive priority value and sub priority value. - * In case of a conflict between priority grouping and available - * priority bits (__NVIC_PRIO_BITS) the samllest possible priority group is set. - * - * The returned priority value can be used for NVIC_SetPriority(...) function - */ -static __INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) -{ - uint32_t PriorityGroupTmp = (PriorityGroup & 0x07); /* only values 0..7 are used */ - uint32_t PreemptPriorityBits; - uint32_t SubPriorityBits; - - PreemptPriorityBits = ((7 - PriorityGroupTmp) > __NVIC_PRIO_BITS) ? __NVIC_PRIO_BITS : 7 - PriorityGroupTmp; - SubPriorityBits = ((PriorityGroupTmp + __NVIC_PRIO_BITS) < 7) ? 0 : PriorityGroupTmp - 7 + __NVIC_PRIO_BITS; - - return ( - ((PreemptPriority & ((1 << (PreemptPriorityBits)) - 1)) << SubPriorityBits) | - ((SubPriority & ((1 << (SubPriorityBits )) - 1))) - ); -} - - -/** - * @brief Decode the priority of an interrupt - * - * @param uint32_t Priority the priority for the interrupt - * @param uint32_t PrioGroup is the used priority group - * @param uint32_t* pPreemptPrio is the preemptive priority value (starting from 0) - * @param uint32_t* pSubPrio is the sub priority value (starting from 0) - * @return none - * - * Decode an interrupt priority value with the given priority group to - * preemptive priority value and sub priority value. - * In case of a conflict between priority grouping and available - * priority bits (__NVIC_PRIO_BITS) the samllest possible priority group is set. - * - * The priority value can be retrieved with NVIC_GetPriority(...) function - */ -static __INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* pPreemptPriority, uint32_t* pSubPriority) -{ - uint32_t PriorityGroupTmp = (PriorityGroup & 0x07); /* only values 0..7 are used */ - uint32_t PreemptPriorityBits; - uint32_t SubPriorityBits; - - PreemptPriorityBits = ((7 - PriorityGroupTmp) > __NVIC_PRIO_BITS) ? __NVIC_PRIO_BITS : 7 - PriorityGroupTmp; - SubPriorityBits = ((PriorityGroupTmp + __NVIC_PRIO_BITS) < 7) ? 0 : PriorityGroupTmp - 7 + __NVIC_PRIO_BITS; - - *pPreemptPriority = (Priority >> SubPriorityBits) & ((1 << (PreemptPriorityBits)) - 1); - *pSubPriority = (Priority ) & ((1 << (SubPriorityBits )) - 1); -} - - - -/* ################################## SysTick function ############################################ */ - -#if (!defined (__Vendor_SysTickConfig)) || (__Vendor_SysTickConfig == 0) - -/* SysTick constants */ -#define SYSTICK_ENABLE 0 /* Config-Bit to start or stop the SysTick Timer */ -#define SYSTICK_TICKINT 1 /* Config-Bit to enable or disable the SysTick interrupt */ -#define SYSTICK_CLKSOURCE 2 /* Clocksource has the offset 2 in SysTick Control and Status Register */ -#define SYSTICK_MAXCOUNT ((1<<24) -1) /* SysTick MaxCount */ - -/** - * @brief Initialize and start the SysTick counter and its interrupt. - * - * @param uint32_t ticks is the number of ticks between two interrupts - * @return none - * - * Initialise the system tick timer and its interrupt and start the - * system tick timer / counter in free running mode to generate - * periodical interrupts. - */ -static __INLINE uint32_t SysTick_Config(uint32_t ticks) -{ - if (ticks > SYSTICK_MAXCOUNT) return (1); /* Reload value impossible */ - - SysTick->LOAD = (ticks & SYSTICK_MAXCOUNT) - 1; /* set reload register */ - NVIC_SetPriority (SysTick_IRQn, (1<<__NVIC_PRIO_BITS) - 1); /* set Priority for Cortex-M0 System Interrupts */ - SysTick->VAL = (0x00); /* Load the SysTick Counter Value */ - SysTick->CTRL = (1 << SYSTICK_CLKSOURCE) | (1<AIRCR = (NVIC_AIRCR_VECTKEY | (SCB->AIRCR & (0x700)) | (1<DEMCR & CoreDebug_DEMCR_TRCENA) && - (ITM->TCR & ITM_TCR_ITMENA) && - (ITM->TER & (1UL << 0)) ) - { - while (ITM->PORT[0].u32 == 0); - ITM->PORT[0].u8 = (uint8_t) ch; - } - return (ch); -} - -#ifdef __cplusplus -} -#endif - -#endif /* __CM3_CORE_H__ */ - -/*lint -restore */ diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/flash_placement.xml b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/flash_placement.xml deleted file mode 100644 index 95fef0a7f..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/flash_placement.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/main.c b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/main.c deleted file mode 100644 index 3269c625e..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/main.c +++ /dev/null @@ -1,271 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - - -/* - * Creates all the demo application tasks, then starts the scheduler. The WEB - * documentation provides more details of the standard demo application tasks - * (which just exist to test the kernel port and provide an example of how to use - * each FreeRTOS API function). - * - * In addition to the standard demo tasks, the following tasks and tests are - * defined and/or created within this file: - * - * "Check" hook - This only executes fully every five seconds from the tick - * hook. Its main function is to check that all the standard demo tasks are - * still operational. The status can be viewed using on the Task Stats page - * served by the WEB server. - * - * "uIP" task - This is the task that handles the uIP stack. All TCP/IP - * processing is performed in this task. - * - * "USB" task - Enumerates the USB device as a CDC class, then echoes back all - * received characters with a configurable offset (for example, if the offset - * is 1 and 'A' is received then 'B' will be sent back). A dumb terminal such - * as Hyperterminal can be used to talk to the USB task. - */ - -/* Scheduler includes. */ -#include "FreeRTOS.h" -#include "task.h" - -/* Demo app includes. */ -#include "BlockQ.h" -#include "integer.h" -#include "blocktim.h" -#include "flash.h" -#include "partest.h" -#include "semtest.h" -#include "PollQ.h" -#include "GenQTest.h" -#include "QPeek.h" -#include "recmutex.h" - -/*-----------------------------------------------------------*/ - -/* The time between cycles of the 'check' functionality (defined within the -tick hook). */ -#define mainCHECK_DELAY ( ( TickType_t ) 5000 / portTICK_PERIOD_MS ) - -/* Task priorities. */ -#define mainQUEUE_POLL_PRIORITY ( tskIDLE_PRIORITY + 2 ) -#define mainSEM_TEST_PRIORITY ( tskIDLE_PRIORITY + 1 ) -#define mainBLOCK_Q_PRIORITY ( tskIDLE_PRIORITY + 2 ) -#define mainUIP_TASK_PRIORITY ( tskIDLE_PRIORITY + 3 ) -#define mainINTEGER_TASK_PRIORITY ( tskIDLE_PRIORITY ) -#define mainGEN_QUEUE_TASK_PRIORITY ( tskIDLE_PRIORITY ) -#define mainFLASH_TASK_PRIORITY ( tskIDLE_PRIORITY + 2 ) - -/* The WEB server has a larger stack as it utilises stack hungry string -handling library calls. */ -#define mainBASIC_WEB_STACK_SIZE ( configMINIMAL_STACK_SIZE * 4 ) - -/* The message displayed by the WEB server when all tasks are executing -without an error being reported. */ -#define mainPASS_STATUS_MESSAGE "All tasks are executing without error." - -/*-----------------------------------------------------------*/ - -/* - * Configure the hardware for the demo. - */ -static void prvSetupHardware( void ); - -/* - * The task that handles the uIP stack. All TCP/IP processing is performed in - * this task. - */ -extern void vuIP_Task( void *pvParameters ); - -/* - * The task that handles the USB stack. - */ -extern void vUSBTask( void *pvParameters ); - -/* - * Simply returns the current status message for display on served WEB pages. - */ -char *pcGetTaskStatusMessage( void ); - -/*-----------------------------------------------------------*/ - -/* Holds the status message displayed by the WEB server. */ -static char *pcStatusMessage = mainPASS_STATUS_MESSAGE; - -/*-----------------------------------------------------------*/ - -int main( void ) -{ - /* Configure the hardware for use by this demo. */ - prvSetupHardware(); - - /* Start the standard demo tasks. These are just here to exercise the - kernel port and provide examples of how the FreeRTOS API can be used. */ - vStartBlockingQueueTasks( mainBLOCK_Q_PRIORITY ); - vCreateBlockTimeTasks(); - vStartSemaphoreTasks( mainSEM_TEST_PRIORITY ); - vStartPolledQueueTasks( mainQUEUE_POLL_PRIORITY ); - vStartIntegerMathTasks( mainINTEGER_TASK_PRIORITY ); - vStartGenericQueueTasks( mainGEN_QUEUE_TASK_PRIORITY ); - vStartQueuePeekTasks(); - vStartRecursiveMutexTasks(); - vStartLEDFlashTasks( mainFLASH_TASK_PRIORITY ); - - /* Create the USB task. */ - xTaskCreate( vUSBTask, "USB", configMINIMAL_STACK_SIZE, ( void * ) NULL, tskIDLE_PRIORITY, NULL ); - - /* Create the uIP task. The WEB server runs in this task. */ - xTaskCreate( vuIP_Task, "uIP", mainBASIC_WEB_STACK_SIZE, ( void * ) NULL, mainUIP_TASK_PRIORITY, NULL ); - - /* Start the scheduler. */ - vTaskStartScheduler(); - - /* Will only get here if there was insufficient memory to create the idle - task. The idle task is created within vTaskStartScheduler(). */ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -void vApplicationTickHook( void ) -{ -static unsigned long ulTicksSinceLastDisplay = 0; - - /* Called from every tick interrupt as described in the comments at the top - of this file. - - Have enough ticks passed to make it time to perform our health status - check again? */ - ulTicksSinceLastDisplay++; - if( ulTicksSinceLastDisplay >= mainCHECK_DELAY ) - { - /* Reset the counter so these checks run again in mainCHECK_DELAY - ticks time. */ - ulTicksSinceLastDisplay = 0; - - /* Has an error been found in any task? */ - if( xAreGenericQueueTasksStillRunning() != pdTRUE ) - { - pcStatusMessage = "An error has been detected in the Generic Queue test/demo."; - } - else if( xAreQueuePeekTasksStillRunning() != pdTRUE ) - { - pcStatusMessage = "An error has been detected in the Peek Queue test/demo."; - } - else if( xAreBlockingQueuesStillRunning() != pdTRUE ) - { - pcStatusMessage = "An error has been detected in the Block Queue test/demo."; - } - else if( xAreBlockTimeTestTasksStillRunning() != pdTRUE ) - { - pcStatusMessage = "An error has been detected in the Block Time test/demo."; - } - else if( xAreSemaphoreTasksStillRunning() != pdTRUE ) - { - pcStatusMessage = "An error has been detected in the Semaphore test/demo."; - } - else if( xArePollingQueuesStillRunning() != pdTRUE ) - { - pcStatusMessage = "An error has been detected in the Poll Queue test/demo."; - } - else if( xAreIntegerMathsTaskStillRunning() != pdTRUE ) - { - pcStatusMessage = "An error has been detected in the Int Math test/demo."; - } - else if( xAreRecursiveMutexTasksStillRunning() != pdTRUE ) - { - pcStatusMessage = "An error has been detected in the Mutex test/demo."; - } - } -} -/*-----------------------------------------------------------*/ - -char *pcGetTaskStatusMessage( void ) -{ - /* Not bothered about a critical section here. */ - return pcStatusMessage; -} -/*-----------------------------------------------------------*/ - -void prvSetupHardware( void ) -{ - /* Disable peripherals power. */ - SC->PCONP = 0; - - /* Enable GPIO power. */ - SC->PCONP = PCONP_PCGPIO; - - /* Disable TPIU. */ - PINCON->PINSEL10 = 0; - - /* Setup the peripheral bus to be the same as the CPU output (100 MHz). */ - SC->PCLKSEL0 = 0x05555555; - - /* Configure the LEDs. */ - vParTestInitialise(); -} -/*-----------------------------------------------------------*/ - -void vApplicationStackOverflowHook( TaskHandle_t pxTask, char *pcTaskName ) -{ - /* This function will get called if a task overflows its stack. */ - - ( void ) pxTask; - ( void ) pcTaskName; - - for( ;; ); -} -/*-----------------------------------------------------------*/ - -void vConfigureTimerForRunTimeStats( void ) -{ -const unsigned long TCR_COUNT_RESET = 2, CTCR_CTM_TIMER = 0x00, TCR_COUNT_ENABLE = 0x01; - - /* This function configures a timer that is used as the time base when - collecting run time statistical information - basically the percentage - of CPU time that each task is utilising. It is called automatically when - the scheduler is started (assuming configGENERATE_RUN_TIME_STATS is set - to 1). */ - - /* Power up and feed the timer. */ - SC->PCONP |= 0x02UL; - SC->PCLKSEL0 = (SC->PCLKSEL0 & (~(0x3<<2))) | (0x01 << 2); - - /* Reset Timer 0 */ - TIM0->TCR = TCR_COUNT_RESET; - - /* Just count up. */ - TIM0->CTCR = CTCR_CTM_TIMER; - - /* Prescale to a frequency that is good enough to get a decent resolution, - but not too fast so as to overflow all the time. */ - TIM0->PR = ( configCPU_CLOCK_HZ / 10000UL ) - 1UL; - - /* Start the counter. */ - TIM0->TCR = TCR_COUNT_ENABLE; -} -/*-----------------------------------------------------------*/ - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/printf-stdarg.c b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/printf-stdarg.c deleted file mode 100644 index b5ac41be7..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/printf-stdarg.c +++ /dev/null @@ -1,293 +0,0 @@ -/* - Copyright 2001, 2002 Georges Menie (www.menie.org) - stdarg version contributed by Christian Ettinger - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU Lesser General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -*/ - -/* - putchar is the only external dependency for this file, - if you have a working putchar, leave it commented out. - If not, uncomment the define below and - replace outbyte(c) by your own function call. - -*/ - -#define putchar(c) c - -#include - -static void printchar(char **str, int c) -{ - //extern int putchar(int c); - - if (str) { - **str = (char)c; - ++(*str); - } - else - { - (void)putchar(c); - } -} - -#define PAD_RIGHT 1 -#define PAD_ZERO 2 - -static int prints(char **out, const char *string, int width, int pad) -{ - register int pc = 0, padchar = ' '; - - if (width > 0) { - register int len = 0; - register const char *ptr; - for (ptr = string; *ptr; ++ptr) ++len; - if (len >= width) width = 0; - else width -= len; - if (pad & PAD_ZERO) padchar = '0'; - } - if (!(pad & PAD_RIGHT)) { - for ( ; width > 0; --width) { - printchar (out, padchar); - ++pc; - } - } - for ( ; *string ; ++string) { - printchar (out, *string); - ++pc; - } - for ( ; width > 0; --width) { - printchar (out, padchar); - ++pc; - } - - return pc; -} - -/* the following should be enough for 32 bit int */ -#define PRINT_BUF_LEN 12 - -static int printi(char **out, int i, int b, int sg, int width, int pad, int letbase) -{ - char print_buf[PRINT_BUF_LEN]; - register char *s; - register int t, neg = 0, pc = 0; - register unsigned int u = (unsigned int)i; - - if (i == 0) { - print_buf[0] = '0'; - print_buf[1] = '\0'; - return prints (out, print_buf, width, pad); - } - - if (sg && b == 10 && i < 0) { - neg = 1; - u = (unsigned int)-i; - } - - s = print_buf + PRINT_BUF_LEN-1; - *s = '\0'; - - while (u) { - t = (unsigned int)u % b; - if( t >= 10 ) - t += letbase - '0' - 10; - *--s = (char)(t + '0'); - u /= b; - } - - if (neg) { - if( width && (pad & PAD_ZERO) ) { - printchar (out, '-'); - ++pc; - --width; - } - else { - *--s = '-'; - } - } - - return pc + prints (out, s, width, pad); -} - -static int print( char **out, const char *format, va_list args ) -{ - register int width, pad; - register int pc = 0; - char scr[2]; - - for (; *format != 0; ++format) { - if (*format == '%') { - ++format; - width = pad = 0; - if (*format == '\0') break; - if (*format == '%') goto out; - if (*format == '-') { - ++format; - pad = PAD_RIGHT; - } - while (*format == '0') { - ++format; - pad |= PAD_ZERO; - } - for ( ; *format >= '0' && *format <= '9'; ++format) { - width *= 10; - width += *format - '0'; - } - if( *format == 's' ) { - register char *s = (char *)va_arg( args, int ); - pc += prints (out, s?s:"(null)", width, pad); - continue; - } - if( *format == 'd' ) { - pc += printi (out, va_arg( args, int ), 10, 1, width, pad, 'a'); - continue; - } - if( *format == 'x' ) { - pc += printi (out, va_arg( args, int ), 16, 0, width, pad, 'a'); - continue; - } - if( *format == 'X' ) { - pc += printi (out, va_arg( args, int ), 16, 0, width, pad, 'A'); - continue; - } - if( *format == 'u' ) { - pc += printi (out, va_arg( args, int ), 10, 0, width, pad, 'a'); - continue; - } - if( *format == 'c' ) { - /* char are converted to int then pushed on the stack */ - scr[0] = (char)va_arg( args, int ); - scr[1] = '\0'; - pc += prints (out, scr, width, pad); - continue; - } - } - else { - out: - printchar (out, *format); - ++pc; - } - } - if (out) **out = '\0'; - va_end( args ); - return pc; -} - -int printf(const char *format, ...) -{ - va_list args; - - va_start( args, format ); - return print( 0, format, args ); -} - -int sprintf(char *out, const char *format, ...) -{ - va_list args; - - va_start( args, format ); - return print( &out, format, args ); -} - - -int snprintf( char *buf, unsigned int count, const char *format, ... ) -{ - va_list args; - - ( void ) count; - - va_start( args, format ); - return print( &buf, format, args ); -} - - -#ifdef TEST_PRINTF -int main(void) -{ - char *ptr = "Hello world!"; - char *np = 0; - int i = 5; - unsigned int bs = sizeof(int)*8; - int mi; - char buf[80]; - - mi = (1 << (bs-1)) + 1; - printf("%s\n", ptr); - printf("printf test\n"); - printf("%s is null pointer\n", np); - printf("%d = 5\n", i); - printf("%d = - max int\n", mi); - printf("char %c = 'a'\n", 'a'); - printf("hex %x = ff\n", 0xff); - printf("hex %02x = 00\n", 0); - printf("signed %d = unsigned %u = hex %x\n", -3, -3, -3); - printf("%d %s(s)%", 0, "message"); - printf("\n"); - printf("%d %s(s) with %%\n", 0, "message"); - sprintf(buf, "justif: \"%-10s\"\n", "left"); printf("%s", buf); - sprintf(buf, "justif: \"%10s\"\n", "right"); printf("%s", buf); - sprintf(buf, " 3: %04d zero padded\n", 3); printf("%s", buf); - sprintf(buf, " 3: %-4d left justif.\n", 3); printf("%s", buf); - sprintf(buf, " 3: %4d right justif.\n", 3); printf("%s", buf); - sprintf(buf, "-3: %04d zero padded\n", -3); printf("%s", buf); - sprintf(buf, "-3: %-4d left justif.\n", -3); printf("%s", buf); - sprintf(buf, "-3: %4d right justif.\n", -3); printf("%s", buf); - - return 0; -} - -/* - * if you compile this file with - * gcc -Wall $(YOUR_C_OPTIONS) -DTEST_PRINTF -c printf.c - * you will get a normal warning: - * printf.c:214: warning: spurious trailing `%' in format - * this line is testing an invalid % at the end of the format string. - * - * this should display (on 32bit int machine) : - * - * Hello world! - * printf test - * (null) is null pointer - * 5 = 5 - * -2147483647 = - max int - * char a = 'a' - * hex ff = ff - * hex 00 = 00 - * signed -3 = unsigned 4294967293 = hex fffffffd - * 0 message(s) - * 0 message(s) with % - * justif: "left " - * justif: " right" - * 3: 0003 zero padded - * 3: 3 left justif. - * 3: 3 right justif. - * -3: -003 zero padded - * -3: -3 left justif. - * -3: -3 right justif. - */ - -#endif - - -/* To keep linker happy. */ -int write( int i, char* c, int n) -{ - (void)i; - (void)n; - (void)c; - return 0; -} - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/system_LPC17xx.h b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/system_LPC17xx.h deleted file mode 100644 index a5c9727d4..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/system_LPC17xx.h +++ /dev/null @@ -1,40 +0,0 @@ -/****************************************************************************** - * @file: system_LPC17xx.h - * @purpose: CMSIS Cortex-M3 Device Peripheral Access Layer Header File - * for the NXP LPC17xx Device Series - * @version: V1.0 - * @date: 25. Nov. 2008 - *---------------------------------------------------------------------------- - * - * Copyright (C) 2008 ARM Limited. All rights reserved. - * - * ARM Limited (ARM) is supplying this software for use with Cortex-M3 - * processor based microcontrollers. This file can be freely distributed - * within development tools that are supporting such ARM based processors. - * - * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED - * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. - * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR - * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. - * - ******************************************************************************/ - - -#ifndef __SYSTEM_LPC17xx_H -#define __SYSTEM_LPC17xx_H - -extern uint32_t SystemFrequency; /*!< System Clock Frequency (Core Clock) */ - - -/** - * Initialize the system - * - * @param none - * @return none - * - * @brief Setup the microcontroller system. - * Initialize the System and update the SystemFrequency variable. - */ -extern void SystemInit (void); -#endif diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/usbser.inf b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/usbser.inf deleted file mode 100644 index 607fc9e6d..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/usbser.inf +++ /dev/null @@ -1,45 +0,0 @@ -[Version] -Signature="$Windows NT$" -Class=Ports -ClassGuid={4D36E978-E325-11CE-BFC1-08002BE10318} -Provider=%LINUX% -DriverVer=08/17/2004,0.0.2.0 -; Copyright (C) 2004 Al Borchers (alborchers@steinerpoint.com) -; released under GNU General Public License - -[Manufacturer] -%LINUX%=GSerialDeviceList - -[GSerialDeviceList] -%GSERIAL%=GSerialInstall, USB\VID_FFFF&PID_0005 - -[DestinationDirs] -DefaultDestDir=10,System32\Drivers - -[GSerialInstall] -CopyFiles=GSerialCopyFiles -AddReg=GSerialAddReg - -[GSerialCopyFiles] -usbser.sys - -[GSerialAddReg] -HKR,,DevLoader,,*ntkern -HKR,,NTMPDriver,,usbser.sys -HKR,,EnumPropPages32,,"MsPorts.dll,SerialPortPropPageProvider" - -[GSerialInstall.Services] -AddService = usbser,0x0002,GSerialService - -[GSerialService] -DisplayName = %GSERIAL_DISPLAY_NAME% -ServiceType = 1 ; SERVICE_KERNEL_DRIVER -StartType = 3 ; SERVICE_DEMAND_START -ErrorControl = 1 ; SERVICE_ERROR_NORMAL -ServiceBinary = %10%\System32\Drivers\usbser.sys -LoadOrderGroup = Base - -[Strings] -LINUX = "Linux" -GSERIAL = "USB CDC serial port emulation" -GSERIAL_DISPLAY_NAME = "USB CDC serial port emulation" \ No newline at end of file diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/EthDev.h b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/EthDev.h deleted file mode 100644 index f67789f44..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/EthDev.h +++ /dev/null @@ -1,111 +0,0 @@ -/* - * @file: EthDev.h - * @purpose: Ethernet Device Definitions - * @version: V1.10 - * @date: 24. Feb. 2009 - *---------------------------------------------------------------------------- - * - * Copyright (C) 2009 ARM Limited. All rights reserved. - * - * ARM Limited (ARM) is supplying this software for use with Cortex-M3 - * processor based microcontrollers. This file can be freely distributed - * within development tools that are supporting such ARM based processors. - * - * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED - * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. - * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR - * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. - * - */ - -#ifndef _ETHDEV__H -#define _ETHDEV__H - -#ifndef NULL - #define NULL 0 -#endif - -/*---------------------------------------------------------------------------- - Ethernet Device Defines - *----------------------------------------------------------------------------*/ -#define EthDev_ADDR_SIZE 6 /*!< Ethernet Address size in bytes */ -#define EthDev_MTU_SIZE 1514 /*!< Maximum Transmission Unit */ - - -/*---------------------------------------------------------------------------- - Ethernet Device Configuration and Control Command Defines - *----------------------------------------------------------------------------*/ -typedef enum { - EthDev_LINK_DOWN = 0, /*!< Ethernet link not established */ - EthDev_LINK_UP = 1, /*!< Ethernet link established */ -} EthDev_LINK; - -typedef enum { - EthDev_SPEED_10M = 0, /*!< 10.0 Mbps link speed */ - EthDev_SPEED_100M = 1, /*!< 100.0 Mbps link speed */ - EthDev_SPEED_1000M = 2, /*!< 1.0 Gbps link speed */ -} EthDev_SPEED; - -typedef enum { - EthDev_DUPLEX_HALF = 0, /*!< Link half duplex */ - EthDev_DUPLEX_FULL = 1, /*!< Link full duplex */ -} EthDev_DUPLEX; - -typedef enum { - EthDev_MODE_AUTO = 0, - EthDev_MODE_10M_FULL = 1, - EthDev_MODE_10M_HALF = 2, - EthDev_MODE_100M_FULL = 3, - EthDev_MODE_100M_HALF = 4, - EthDev_MODE_1000M_FULL = 5, - EthDev_MODE_1000M_HALF = 6, -} EthDev_MODE; - -typedef struct { - EthDev_LINK Link : 1; - EthDev_DUPLEX Duplex : 1; - EthDev_SPEED Speed : 2; -} EthDev_STATUS; - - -/*---------------------------------------------------------------------------- - Ethernet Device IO Block Structure - *----------------------------------------------------------------------------*/ -typedef struct { - - /* Initialized by the user application before call to Init. */ - EthDev_MODE Mode; - unsigned char HwAddr[EthDev_ADDR_SIZE]; - void *(*RxFrame) (int size); - void (*RxFrameReady) (int size); - - /* Initialized by Ethernet driver. */ - int (*Init) (void); - int (*UnInit) (void); - int (*SetMCFilter)(int NumHwAddr, unsigned char *pHwAddr); - int (*TxFrame) (void *pData, int size); - void (*Lock) (void); - void (*UnLock) (void); - EthDev_STATUS (*LinkChk) (void); -} EthDev_IOB; - - -/* - * Look for received data. If data is found then uip_buf is assigned to the - * new data and the length of the data is returned. If no data is found then - * uip_buf is not updated and 0 is returned. - */ -unsigned long ulGetEMACRxData( void ); - -/* - * Send usTxDataLen bytes from uip_buf. - */ -void vSendEMACTxData( unsigned short usTxDataLen ); - -/* - * Prepare the Ethernet hardware ready for TCP/IP comms. - */ -long lEMACInit(void); - -#endif diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/EthDev_LPC17xx.h b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/EthDev_LPC17xx.h deleted file mode 100644 index 93134430f..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/EthDev_LPC17xx.h +++ /dev/null @@ -1,331 +0,0 @@ -/* - * @file: EthDev_LPC17xx.h - * @purpose: Ethernet Device Definitions for NXP LPC17xx - * @version: V0.01 - * @date: 14. May 2009 - *---------------------------------------------------------------------------- - * - * Copyright (C) 2009 ARM Limited. All rights reserved. - * - * ARM Limited (ARM) is supplying this software for use with Cortex-M3 - * processor based microcontrollers. This file can be freely distributed - * within development tools that are supporting such ARM based processors. - * - * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED - * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. - * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR - * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. - * - */ - -#ifndef __ETHDEV_LPC17XX_H -#define __ETHDEV_LPC17XX_H - -#include - -/* EMAC Memory Buffer configuration for 16K Ethernet RAM. */ -#define NUM_RX_FRAG 3 /* Num.of RX Fragments. */ -#define NUM_TX_FRAG 2 /* Num.of TX Fragments. */ -#define ETH_FRAG_SIZE 1536 /* Packet Fragment size 1536 Bytes */ - -#define ETH_MAX_FLEN 1536 /* Max. Ethernet Frame Size */ - -typedef struct { /* RX Descriptor struct */ - uint32_t Packet; - uint32_t Ctrl; -} RX_DESC_TypeDef; - -typedef struct { /* RX Status struct */ - uint32_t Info; - uint32_t HashCRC; -} RX_STAT_TypeDef; - -typedef struct { /* TX Descriptor struct */ - uint32_t Packet; - uint32_t Ctrl; -} TX_DESC_TypeDef; - -typedef struct { /* TX Status struct */ - uint32_t Info; -} TX_STAT_TypeDef; - - -/* EMAC variables located in AHB SRAM bank 1*/ -#define AHB_SRAM_BANK1_BASE 0x2007c000UL -#define RX_DESC_BASE (AHB_SRAM_BANK1_BASE ) -#define RX_STAT_BASE (RX_DESC_BASE + NUM_RX_FRAG*(2*4)) /* 2 * uint32_t, see RX_DESC_TypeDef */ -#define TX_DESC_BASE (RX_STAT_BASE + NUM_RX_FRAG*(2*4)) /* 2 * uint32_t, see RX_STAT_TypeDef */ -#define TX_STAT_BASE (TX_DESC_BASE + NUM_TX_FRAG*(2*4)) /* 2 * uint32_t, see TX_DESC_TypeDef */ -#define ETH_BUF_BASE (TX_STAT_BASE + NUM_TX_FRAG*(1*4)) /* 1 * uint32_t, see TX_STAT_TypeDef */ - -/* RX and TX descriptor and status definitions. */ -#define RX_DESC_PACKET(i) (*(unsigned int *)(RX_DESC_BASE + 8*i)) -#define RX_DESC_CTRL(i) (*(unsigned int *)(RX_DESC_BASE+4 + 8*i)) -#define RX_STAT_INFO(i) (*(unsigned int *)(RX_STAT_BASE + 8*i)) -#define RX_STAT_HASHCRC(i) (*(unsigned int *)(RX_STAT_BASE+4 + 8*i)) -#define TX_DESC_PACKET(i) (*(unsigned int *)(TX_DESC_BASE + 8*i)) -#define TX_DESC_CTRL(i) (*(unsigned int *)(TX_DESC_BASE+4 + 8*i)) -#define TX_STAT_INFO(i) (*(unsigned int *)(TX_STAT_BASE + 4*i)) -#define ETH_BUF(i) ( ETH_BUF_BASE + ETH_FRAG_SIZE*i ) -#define ETH_NUM_BUFFERS ( NUM_TX_FRAG + NUM_RX_FRAG + 1 ) /* There are in fact 2 more buffers than descriptors as the two Tx descriptors use the same buffer to speed up the uip Tx. */ - - -/* MAC Configuration Register 1 */ -#define MAC1_REC_EN 0x00000001 /* Receive Enable */ -#define MAC1_PASS_ALL 0x00000002 /* Pass All Receive Frames */ -#define MAC1_RX_FLOWC 0x00000004 /* RX Flow Control */ -#define MAC1_TX_FLOWC 0x00000008 /* TX Flow Control */ -#define MAC1_LOOPB 0x00000010 /* Loop Back Mode */ -#define MAC1_RES_TX 0x00000100 /* Reset TX Logic */ -#define MAC1_RES_MCS_TX 0x00000200 /* Reset MAC TX Control Sublayer */ -#define MAC1_RES_RX 0x00000400 /* Reset RX Logic */ -#define MAC1_RES_MCS_RX 0x00000800 /* Reset MAC RX Control Sublayer */ -#define MAC1_SIM_RES 0x00004000 /* Simulation Reset */ -#define MAC1_SOFT_RES 0x00008000 /* Soft Reset MAC */ - -/* MAC Configuration Register 2 */ -#define MAC2_FULL_DUP 0x00000001 /* Full Duplex Mode */ -#define MAC2_FRM_LEN_CHK 0x00000002 /* Frame Length Checking */ -#define MAC2_HUGE_FRM_EN 0x00000004 /* Huge Frame Enable */ -#define MAC2_DLY_CRC 0x00000008 /* Delayed CRC Mode */ -#define MAC2_CRC_EN 0x00000010 /* Append CRC to every Frame */ -#define MAC2_PAD_EN 0x00000020 /* Pad all Short Frames */ -#define MAC2_VLAN_PAD_EN 0x00000040 /* VLAN Pad Enable */ -#define MAC2_ADET_PAD_EN 0x00000080 /* Auto Detect Pad Enable */ -#define MAC2_PPREAM_ENF 0x00000100 /* Pure Preamble Enforcement */ -#define MAC2_LPREAM_ENF 0x00000200 /* Long Preamble Enforcement */ -#define MAC2_NO_BACKOFF 0x00001000 /* No Backoff Algorithm */ -#define MAC2_BACK_PRESSURE 0x00002000 /* Backoff Presurre / No Backoff */ -#define MAC2_EXCESS_DEF 0x00004000 /* Excess Defer */ - -/* Back-to-Back Inter-Packet-Gap Register */ -#define IPGT_FULL_DUP 0x00000015 /* Recommended value for Full Duplex */ -#define IPGT_HALF_DUP 0x00000012 /* Recommended value for Half Duplex */ - -/* Non Back-to-Back Inter-Packet-Gap Register */ -#define IPGR_DEF 0x00000012 /* Recommended value */ - -/* Collision Window/Retry Register */ -#define CLRT_DEF 0x0000370F /* Default value */ - -/* PHY Support Register */ -#define SUPP_SPEED 0x00000100 /* Reduced MII Logic Current Speed */ -#define SUPP_RES_RMII 0x00000800 /* Reset Reduced MII Logic */ - -/* Test Register */ -#define TEST_SHCUT_PQUANTA 0x00000001 /* Shortcut Pause Quanta */ -#define TEST_TST_PAUSE 0x00000002 /* Test Pause */ -#define TEST_TST_BACKP 0x00000004 /* Test Back Pressure */ - -/* MII Management Configuration Register */ -#define MCFG_SCAN_INC 0x00000001 /* Scan Increment PHY Address */ -#define MCFG_SUPP_PREAM 0x00000002 /* Suppress Preamble */ -#define MCFG_CLK_SEL 0x0000003C /* Clock Select Mask */ -#define MCFG_RES_MII 0x00008000 /* Reset MII Management Hardware */ - -/* MII Management Command Register */ -#define MCMD_READ 0x00000001 /* MII Read */ -#define MCMD_SCAN 0x00000002 /* MII Scan continuously */ - -#define MII_WR_TOUT 0x00050000 /* MII Write timeout count */ -#define MII_RD_TOUT 0x00050000 /* MII Read timeout count */ - -/* MII Management Address Register */ -#define MADR_REG_ADR 0x0000001F /* MII Register Address Mask */ -#define MADR_PHY_ADR 0x00001F00 /* PHY Address Mask */ - -/* MII Management Indicators Register */ -#define MIND_BUSY 0x00000001 /* MII is Busy */ -#define MIND_SCAN 0x00000002 /* MII Scanning in Progress */ -#define MIND_NOT_VAL 0x00000004 /* MII Read Data not valid */ -#define MIND_MII_LINK_FAIL 0x00000008 /* MII Link Failed */ - -/* Command Register */ -#define CR_RX_EN 0x00000001 /* Enable Receive */ -#define CR_TX_EN 0x00000002 /* Enable Transmit */ -#define CR_REG_RES 0x00000008 /* Reset Host Registers */ -#define CR_TX_RES 0x00000010 /* Reset Transmit Datapath */ -#define CR_RX_RES 0x00000020 /* Reset Receive Datapath */ -#define CR_PASS_RUNT_FRM 0x00000040 /* Pass Runt Frames */ -#define CR_PASS_RX_FILT 0x00000080 /* Pass RX Filter */ -#define CR_TX_FLOW_CTRL 0x00000100 /* TX Flow Control */ -#define CR_RMII 0x00000200 /* Reduced MII Interface */ -#define CR_FULL_DUP 0x00000400 /* Full Duplex */ - -/* Status Register */ -#define SR_RX_EN 0x00000001 /* Enable Receive */ -#define SR_TX_EN 0x00000002 /* Enable Transmit */ - -/* Transmit Status Vector 0 Register */ -#define TSV0_CRC_ERR 0x00000001 /* CRC error */ -#define TSV0_LEN_CHKERR 0x00000002 /* Length Check Error */ -#define TSV0_LEN_OUTRNG 0x00000004 /* Length Out of Range */ -#define TSV0_DONE 0x00000008 /* Tramsmission Completed */ -#define TSV0_MCAST 0x00000010 /* Multicast Destination */ -#define TSV0_BCAST 0x00000020 /* Broadcast Destination */ -#define TSV0_PKT_DEFER 0x00000040 /* Packet Deferred */ -#define TSV0_EXC_DEFER 0x00000080 /* Excessive Packet Deferral */ -#define TSV0_EXC_COLL 0x00000100 /* Excessive Collision */ -#define TSV0_LATE_COLL 0x00000200 /* Late Collision Occured */ -#define TSV0_GIANT 0x00000400 /* Giant Frame */ -#define TSV0_UNDERRUN 0x00000800 /* Buffer Underrun */ -#define TSV0_BYTES 0x0FFFF000 /* Total Bytes Transferred */ -#define TSV0_CTRL_FRAME 0x10000000 /* Control Frame */ -#define TSV0_PAUSE 0x20000000 /* Pause Frame */ -#define TSV0_BACK_PRESS 0x40000000 /* Backpressure Method Applied */ -#define TSV0_VLAN 0x80000000 /* VLAN Frame */ - -/* Transmit Status Vector 1 Register */ -#define TSV1_BYTE_CNT 0x0000FFFF /* Transmit Byte Count */ -#define TSV1_COLL_CNT 0x000F0000 /* Transmit Collision Count */ - -/* Receive Status Vector Register */ -#define RSV_BYTE_CNT 0x0000FFFF /* Receive Byte Count */ -#define RSV_PKT_IGNORED 0x00010000 /* Packet Previously Ignored */ -#define RSV_RXDV_SEEN 0x00020000 /* RXDV Event Previously Seen */ -#define RSV_CARR_SEEN 0x00040000 /* Carrier Event Previously Seen */ -#define RSV_REC_CODEV 0x00080000 /* Receive Code Violation */ -#define RSV_CRC_ERR 0x00100000 /* CRC Error */ -#define RSV_LEN_CHKERR 0x00200000 /* Length Check Error */ -#define RSV_LEN_OUTRNG 0x00400000 /* Length Out of Range */ -#define RSV_REC_OK 0x00800000 /* Frame Received OK */ -#define RSV_MCAST 0x01000000 /* Multicast Frame */ -#define RSV_BCAST 0x02000000 /* Broadcast Frame */ -#define RSV_DRIB_NIBB 0x04000000 /* Dribble Nibble */ -#define RSV_CTRL_FRAME 0x08000000 /* Control Frame */ -#define RSV_PAUSE 0x10000000 /* Pause Frame */ -#define RSV_UNSUPP_OPC 0x20000000 /* Unsupported Opcode */ -#define RSV_VLAN 0x40000000 /* VLAN Frame */ - -/* Flow Control Counter Register */ -#define FCC_MIRR_CNT 0x0000FFFF /* Mirror Counter */ -#define FCC_PAUSE_TIM 0xFFFF0000 /* Pause Timer */ - -/* Flow Control Status Register */ -#define FCS_MIRR_CNT 0x0000FFFF /* Mirror Counter Current */ - -/* Receive Filter Control Register */ -#define RFC_UCAST_EN 0x00000001 /* Accept Unicast Frames Enable */ -#define RFC_BCAST_EN 0x00000002 /* Accept Broadcast Frames Enable */ -#define RFC_MCAST_EN 0x00000004 /* Accept Multicast Frames Enable */ -#define RFC_UCAST_HASH_EN 0x00000008 /* Accept Unicast Hash Filter Frames */ -#define RFC_MCAST_HASH_EN 0x00000010 /* Accept Multicast Hash Filter Fram.*/ -#define RFC_PERFECT_EN 0x00000020 /* Accept Perfect Match Enable */ -#define RFC_MAGP_WOL_EN 0x00001000 /* Magic Packet Filter WoL Enable */ -#define RFC_PFILT_WOL_EN 0x00002000 /* Perfect Filter WoL Enable */ - -/* Receive Filter WoL Status/Clear Registers */ -#define WOL_UCAST 0x00000001 /* Unicast Frame caused WoL */ -#define WOL_BCAST 0x00000002 /* Broadcast Frame caused WoL */ -#define WOL_MCAST 0x00000004 /* Multicast Frame caused WoL */ -#define WOL_UCAST_HASH 0x00000008 /* Unicast Hash Filter Frame WoL */ -#define WOL_MCAST_HASH 0x00000010 /* Multicast Hash Filter Frame WoL */ -#define WOL_PERFECT 0x00000020 /* Perfect Filter WoL */ -#define WOL_RX_FILTER 0x00000080 /* RX Filter caused WoL */ -#define WOL_MAG_PACKET 0x00000100 /* Magic Packet Filter caused WoL */ - -/* Interrupt Status/Enable/Clear/Set Registers */ -#define INT_RX_OVERRUN 0x00000001 /* Overrun Error in RX Queue */ -#define INT_RX_ERR 0x00000002 /* Receive Error */ -#define INT_RX_FIN 0x00000004 /* RX Finished Process Descriptors */ -#define INT_RX_DONE 0x00000008 /* Receive Done */ -#define INT_TX_UNDERRUN 0x00000010 /* Transmit Underrun */ -#define INT_TX_ERR 0x00000020 /* Transmit Error */ -#define INT_TX_FIN 0x00000040 /* TX Finished Process Descriptors */ -#define INT_TX_DONE 0x00000080 /* Transmit Done */ -#define INT_SOFT_INT 0x00001000 /* Software Triggered Interrupt */ -#define INT_WAKEUP 0x00002000 /* Wakeup Event Interrupt */ - -/* Power Down Register */ -#define PD_POWER_DOWN 0x80000000 /* Power Down MAC */ - -/* RX Descriptor Control Word */ -#define RCTRL_SIZE 0x000007FF /* Buffer size mask */ -#define RCTRL_INT 0x80000000 /* Generate RxDone Interrupt */ - -/* RX Status Hash CRC Word */ -#define RHASH_SA 0x000001FF /* Hash CRC for Source Address */ -#define RHASH_DA 0x001FF000 /* Hash CRC for Destination Address */ - -/* RX Status Information Word */ -#define RINFO_SIZE 0x000007FF /* Data size in bytes */ -#define RINFO_CTRL_FRAME 0x00040000 /* Control Frame */ -#define RINFO_VLAN 0x00080000 /* VLAN Frame */ -#define RINFO_FAIL_FILT 0x00100000 /* RX Filter Failed */ -#define RINFO_MCAST 0x00200000 /* Multicast Frame */ -#define RINFO_BCAST 0x00400000 /* Broadcast Frame */ -#define RINFO_CRC_ERR 0x00800000 /* CRC Error in Frame */ -#define RINFO_SYM_ERR 0x01000000 /* Symbol Error from PHY */ -#define RINFO_LEN_ERR 0x02000000 /* Length Error */ -#define RINFO_RANGE_ERR 0x04000000 /* Range Error (exceeded max. size) */ -#define RINFO_ALIGN_ERR 0x08000000 /* Alignment Error */ -#define RINFO_OVERRUN 0x10000000 /* Receive overrun */ -#define RINFO_NO_DESCR 0x20000000 /* No new Descriptor available */ -#define RINFO_LAST_FLAG 0x40000000 /* Last Fragment in Frame */ -#define RINFO_ERR 0x80000000 /* Error Occured (OR of all errors) */ - -#define RINFO_ERR_MASK (RINFO_FAIL_FILT | RINFO_CRC_ERR | RINFO_SYM_ERR | \ - RINFO_LEN_ERR | RINFO_ALIGN_ERR | RINFO_OVERRUN) - -/* TX Descriptor Control Word */ -#define TCTRL_SIZE 0x000007FF /* Size of data buffer in bytes */ -#define TCTRL_OVERRIDE 0x04000000 /* Override Default MAC Registers */ -#define TCTRL_HUGE 0x08000000 /* Enable Huge Frame */ -#define TCTRL_PAD 0x10000000 /* Pad short Frames to 64 bytes */ -#define TCTRL_CRC 0x20000000 /* Append a hardware CRC to Frame */ -#define TCTRL_LAST 0x40000000 /* Last Descriptor for TX Frame */ -#define TCTRL_INT 0x80000000 /* Generate TxDone Interrupt */ - -/* TX Status Information Word */ -#define TINFO_COL_CNT 0x01E00000 /* Collision Count */ -#define TINFO_DEFER 0x02000000 /* Packet Deferred (not an error) */ -#define TINFO_EXCESS_DEF 0x04000000 /* Excessive Deferral */ -#define TINFO_EXCESS_COL 0x08000000 /* Excessive Collision */ -#define TINFO_LATE_COL 0x10000000 /* Late Collision Occured */ -#define TINFO_UNDERRUN 0x20000000 /* Transmit Underrun */ -#define TINFO_NO_DESCR 0x40000000 /* No new Descriptor available */ -#define TINFO_ERR 0x80000000 /* Error Occured (OR of all errors) */ - -/* ENET Device Revision ID */ -#define OLD_EMAC_MODULE_ID 0x39022000 /* Rev. ID for first rev '-' */ - -/* DP83848C PHY Registers */ -#define PHY_REG_BMCR 0x00 /* Basic Mode Control Register */ -#define PHY_REG_BMSR 0x01 /* Basic Mode Status Register */ -#define PHY_REG_IDR1 0x02 /* PHY Identifier 1 */ -#define PHY_REG_IDR2 0x03 /* PHY Identifier 2 */ -#define PHY_REG_ANAR 0x04 /* Auto-Negotiation Advertisement */ -#define PHY_REG_ANLPAR 0x05 /* Auto-Neg. Link Partner Abitily */ -#define PHY_REG_ANER 0x06 /* Auto-Neg. Expansion Register */ -#define PHY_REG_ANNPTR 0x07 /* Auto-Neg. Next Page TX */ - -/* PHY Extended Registers */ -#define PHY_REG_STS 0x10 /* Status Register */ -#define PHY_REG_MICR 0x11 /* MII Interrupt Control Register */ -#define PHY_REG_MISR 0x12 /* MII Interrupt Status Register */ -#define PHY_REG_FCSCR 0x14 /* False Carrier Sense Counter */ -#define PHY_REG_RECR 0x15 /* Receive Error Counter */ -#define PHY_REG_PCSR 0x16 /* PCS Sublayer Config. and Status */ -#define PHY_REG_RBR 0x17 /* RMII and Bypass Register */ -#define PHY_REG_LEDCR 0x18 /* LED Direct Control Register */ -#define PHY_REG_PHYCR 0x19 /* PHY Control Register */ -#define PHY_REG_10BTSCR 0x1A /* 10Base-T Status/Control Register */ -#define PHY_REG_CDCTRL1 0x1B /* CD Test Control and BIST Extens. */ -#define PHY_REG_EDCR 0x1D /* Energy Detect Control Register */ - -#define PHY_FULLD_100M 0x2100 /* Full Duplex 100Mbit */ -#define PHY_HALFD_100M 0x2000 /* Half Duplex 100Mbit */ -#define PHY_FULLD_10M 0x0100 /* Full Duplex 10Mbit */ -#define PHY_HALFD_10M 0x0000 /* Half Duplex 10MBit */ -#define PHY_AUTO_NEG 0x3000 /* Select Auto Negotiation */ -#define PHY_AUTO_NEG_COMPLETE 0x0020 /* Auto negotiation have finished. */ - -#define DP83848C_DEF_ADR 0x0100 /* Default PHY device address */ -#define DP83848C_ID 0x20005C90 /* PHY Identifier */ - -#endif - -/*---------------------------------------------------------------------------- - * end of file - *---------------------------------------------------------------------------*/ diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/clock-arch.h b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/clock-arch.h deleted file mode 100644 index cde657b62..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/clock-arch.h +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright (c) 2006, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: clock-arch.h,v 1.2 2006/06/12 08:00:31 adam Exp $ - */ - -#ifndef __CLOCK_ARCH_H__ -#define __CLOCK_ARCH_H__ - -#include "FreeRTOS.h" - -typedef unsigned long clock_time_t; -#define CLOCK_CONF_SECOND configTICK_RATE_HZ - -#endif /* __CLOCK_ARCH_H__ */ diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/emac.c b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/emac.c deleted file mode 100644 index 7c13b671f..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/emac.c +++ /dev/null @@ -1,578 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* Originally adapted from file written by Andreas Dannenberg. Supplied with permission. */ - -/* Kernel includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "semphr.h" - -/* Hardware specific includes. */ -#include "EthDev_LPC17xx.h" - -/* Time to wait between each inspection of the link status. */ -#define emacWAIT_FOR_LINK_TO_ESTABLISH ( 500 / portTICK_PERIOD_MS ) - -/* Short delay used in several places during the initialisation process. */ -#define emacSHORT_DELAY ( 2 ) - -/* Hardware specific bit definitions. */ -#define emacLINK_ESTABLISHED ( 0x0001 ) -#define emacFULL_DUPLEX_ENABLED ( 0x0004 ) -#define emac10BASE_T_MODE ( 0x0002 ) -#define emacPINSEL2_VALUE ( 0x50150105 ) - -/* If no buffers are available, then wait this long before looking again.... */ -#define emacBUFFER_WAIT_DELAY ( 3 / portTICK_PERIOD_MS ) - -/* ...and don't look more than this many times. */ -#define emacBUFFER_WAIT_ATTEMPTS ( 30 ) - -/* Index to the Tx descriptor that is always used first for every Tx. The second -descriptor is then used to re-send in order to speed up the uIP Tx process. */ -#define emacTX_DESC_INDEX ( 0 ) - -/*-----------------------------------------------------------*/ - -/* - * Configure both the Rx and Tx descriptors during the init process. - */ -static void prvInitDescriptors( void ); - -/* - * Setup the IO and peripherals required for Ethernet communication. - */ -static void prvSetupEMACHardware( void ); - -/* - * Control the auto negotiate process. - */ -static void prvConfigurePHY( void ); - -/* - * Wait for a link to be established, then setup the PHY according to the link - * parameters. - */ -static long prvSetupLinkStatus( void ); - -/* - * Search the pool of buffers to find one that is free. If a buffer is found - * mark it as in use before returning its address. - */ -static unsigned char *prvGetNextBuffer( void ); - -/* - * Return an allocated buffer to the pool of free buffers. - */ -static void prvReturnBuffer( unsigned char *pucBuffer ); - -/* - * Send lValue to the lPhyReg within the PHY. - */ -static long prvWritePHY( long lPhyReg, long lValue ); - -/* - * Read a value from ucPhyReg within the PHY. *plStatus will be set to - * pdFALSE if there is an error. - */ -static unsigned short prvReadPHY( unsigned char ucPhyReg, long *plStatus ); - -/*-----------------------------------------------------------*/ - -/* The semaphore used to wake the uIP task when data arrives. */ -extern SemaphoreHandle_t xEMACSemaphore; - -/* Each ucBufferInUse index corresponds to a position in the pool of buffers. -If the index contains a 1 then the buffer within pool is in use, if it -contains a 0 then the buffer is free. */ -static unsigned char ucBufferInUse[ ETH_NUM_BUFFERS ] = { pdFALSE }; - -/* The uip_buffer is not a fixed array, but instead gets pointed to the buffers -allocated within this file. */ -unsigned char * uip_buf; - -/* Store the length of the data being sent so the data can be sent twice. The -value will be set back to 0 once the data has been sent twice. */ -static unsigned short usSendLen = 0; - -/*-----------------------------------------------------------*/ - -long lEMACInit( void ) -{ -long lReturn = pdPASS; -unsigned long ulID1, ulID2; - - /* Reset peripherals, configure port pins and registers. */ - prvSetupEMACHardware(); - - /* Check the PHY part number is as expected. */ - ulID1 = prvReadPHY( PHY_REG_IDR1, &lReturn ); - ulID2 = prvReadPHY( PHY_REG_IDR2, &lReturn ); - if( ( (ulID1 << 16UL ) | ( ulID2 & 0xFFF0UL ) ) == DP83848C_ID ) - { - /* Set the Ethernet MAC Address registers */ - EMAC->SA0 = ( configMAC_ADDR0 << 8 ) | configMAC_ADDR1; - EMAC->SA1 = ( configMAC_ADDR2 << 8 ) | configMAC_ADDR3; - EMAC->SA2 = ( configMAC_ADDR4 << 8 ) | configMAC_ADDR5; - - /* Initialize Tx and Rx DMA Descriptors */ - prvInitDescriptors(); - - /* Receive broadcast and perfect match packets */ - EMAC->RxFilterCtrl = RFC_UCAST_EN | RFC_BCAST_EN | RFC_PERFECT_EN; - - /* Setup the PHY. */ - prvConfigurePHY(); - } - else - { - lReturn = pdFAIL; - } - - /* Check the link status. */ - if( lReturn == pdPASS ) - { - lReturn = prvSetupLinkStatus(); - } - - if( lReturn == pdPASS ) - { - /* Initialise uip_buf to ensure it points somewhere valid. */ - uip_buf = prvGetNextBuffer(); - - /* Reset all interrupts */ - EMAC->IntClear = ( INT_RX_OVERRUN | INT_RX_ERR | INT_RX_FIN | INT_RX_DONE | INT_TX_UNDERRUN | INT_TX_ERR | INT_TX_FIN | INT_TX_DONE | INT_SOFT_INT | INT_WAKEUP ); - - /* Enable receive and transmit mode of MAC Ethernet core */ - EMAC->Command |= ( CR_RX_EN | CR_TX_EN ); - EMAC->MAC1 |= MAC1_REC_EN; - } - - return lReturn; -} -/*-----------------------------------------------------------*/ - -static unsigned char *prvGetNextBuffer( void ) -{ -long x; -unsigned char *pucReturn = NULL; -unsigned long ulAttempts = 0; - - while( pucReturn == NULL ) - { - /* Look through the buffers to find one that is not in use by - anything else. */ - for( x = 0; x < ETH_NUM_BUFFERS; x++ ) - { - if( ucBufferInUse[ x ] == pdFALSE ) - { - ucBufferInUse[ x ] = pdTRUE; - pucReturn = ( unsigned char * ) ETH_BUF( x ); - break; - } - } - - /* Was a buffer found? */ - if( pucReturn == NULL ) - { - ulAttempts++; - - if( ulAttempts >= emacBUFFER_WAIT_ATTEMPTS ) - { - break; - } - - /* Wait then look again. */ - vTaskDelay( emacBUFFER_WAIT_DELAY ); - } - } - - return pucReturn; -} -/*-----------------------------------------------------------*/ - -static void prvInitDescriptors( void ) -{ -long x, lNextBuffer = 0; - - for( x = 0; x < NUM_RX_FRAG; x++ ) - { - /* Allocate the next Ethernet buffer to this descriptor. */ - RX_DESC_PACKET( x ) = ETH_BUF( lNextBuffer ); - RX_DESC_CTRL( x ) = RCTRL_INT | ( ETH_FRAG_SIZE - 1 ); - RX_STAT_INFO( x ) = 0; - RX_STAT_HASHCRC( x ) = 0; - - /* The Ethernet buffer is now in use. */ - ucBufferInUse[ lNextBuffer ] = pdTRUE; - lNextBuffer++; - } - - /* Set EMAC Receive Descriptor Registers. */ - EMAC->RxDescriptor = RX_DESC_BASE; - EMAC->RxStatus = RX_STAT_BASE; - EMAC->RxDescriptorNumber = NUM_RX_FRAG - 1; - - /* Rx Descriptors Point to 0 */ - EMAC->RxConsumeIndex = 0; - - /* A buffer is not allocated to the Tx descriptors until they are actually - used. */ - for( x = 0; x < NUM_TX_FRAG; x++ ) - { - TX_DESC_PACKET( x ) = ( unsigned long ) NULL; - TX_DESC_CTRL( x ) = 0; - TX_STAT_INFO( x ) = 0; - } - - /* Set EMAC Transmit Descriptor Registers. */ - EMAC->TxDescriptor = TX_DESC_BASE; - EMAC->TxStatus = TX_STAT_BASE; - EMAC->TxDescriptorNumber = NUM_TX_FRAG - 1; - - /* Tx Descriptors Point to 0 */ - EMAC->TxProduceIndex = 0; -} -/*-----------------------------------------------------------*/ - -static void prvSetupEMACHardware( void ) -{ -unsigned short us; -long x, lDummy; - - /* Enable P1 Ethernet Pins. */ - PINCON->PINSEL2 = emacPINSEL2_VALUE; - PINCON->PINSEL3 = ( PINCON->PINSEL3 & ~0x0000000F ) | 0x00000005; - - /* Power Up the EMAC controller. */ - SC->PCONP |= PCONP_PCENET; - vTaskDelay( emacSHORT_DELAY ); - - /* Reset all EMAC internal modules. */ - EMAC->MAC1 = MAC1_RES_TX | MAC1_RES_MCS_TX | MAC1_RES_RX | MAC1_RES_MCS_RX | MAC1_SIM_RES | MAC1_SOFT_RES; - EMAC->Command = CR_REG_RES | CR_TX_RES | CR_RX_RES | CR_PASS_RUNT_FRM; - - /* A short delay after reset. */ - vTaskDelay( emacSHORT_DELAY ); - - /* Initialize MAC control registers. */ - EMAC->MAC1 = MAC1_PASS_ALL; - EMAC->MAC2 = MAC2_CRC_EN | MAC2_PAD_EN; - EMAC->MAXF = ETH_MAX_FLEN; - EMAC->CLRT = CLRT_DEF; - EMAC->IPGR = IPGR_DEF; - - /* Enable Reduced MII interface. */ - EMAC->Command = CR_RMII | CR_PASS_RUNT_FRM; - - /* Reset Reduced MII Logic. */ - EMAC->SUPP = SUPP_RES_RMII; - vTaskDelay( emacSHORT_DELAY ); - EMAC->SUPP = 0; - - /* Put the PHY in reset mode */ - prvWritePHY( PHY_REG_BMCR, MCFG_RES_MII ); - prvWritePHY( PHY_REG_BMCR, MCFG_RES_MII ); - - /* Wait for hardware reset to end. */ - for( x = 0; x < 100; x++ ) - { - vTaskDelay( emacSHORT_DELAY * 5 ); - us = prvReadPHY( PHY_REG_BMCR, &lDummy ); - if( !( us & MCFG_RES_MII ) ) - { - /* Reset complete */ - break; - } - } -} -/*-----------------------------------------------------------*/ - -static void prvConfigurePHY( void ) -{ -unsigned short us; -long x, lDummy; - - /* Auto negotiate the configuration. */ - if( prvWritePHY( PHY_REG_BMCR, PHY_AUTO_NEG ) ) - { - vTaskDelay( emacSHORT_DELAY * 5 ); - - for( x = 0; x < 10; x++ ) - { - us = prvReadPHY( PHY_REG_BMSR, &lDummy ); - - if( us & PHY_AUTO_NEG_COMPLETE ) - { - break; - } - - vTaskDelay( emacWAIT_FOR_LINK_TO_ESTABLISH ); - } - } -} -/*-----------------------------------------------------------*/ - -static long prvSetupLinkStatus( void ) -{ -long lReturn = pdFAIL, x; -unsigned short usLinkStatus; - - /* Wait with timeout for the link to be established. */ - for( x = 0; x < 10; x++ ) - { - usLinkStatus = prvReadPHY( PHY_REG_STS, &lReturn ); - if( usLinkStatus & emacLINK_ESTABLISHED ) - { - /* Link is established. */ - lReturn = pdPASS; - break; - } - - vTaskDelay( emacWAIT_FOR_LINK_TO_ESTABLISH ); - } - - if( lReturn == pdPASS ) - { - /* Configure Full/Half Duplex mode. */ - if( usLinkStatus & emacFULL_DUPLEX_ENABLED ) - { - /* Full duplex is enabled. */ - EMAC->MAC2 |= MAC2_FULL_DUP; - EMAC->Command |= CR_FULL_DUP; - EMAC->IPGT = IPGT_FULL_DUP; - } - else - { - /* Half duplex mode. */ - EMAC->IPGT = IPGT_HALF_DUP; - } - - /* Configure 100MBit/10MBit mode. */ - if( usLinkStatus & emac10BASE_T_MODE ) - { - /* 10MBit mode. */ - EMAC->SUPP = 0; - } - else - { - /* 100MBit mode. */ - EMAC->SUPP = SUPP_SPEED; - } - } - - return lReturn; -} -/*-----------------------------------------------------------*/ - -static void prvReturnBuffer( unsigned char *pucBuffer ) -{ -unsigned long ul; - - /* Return a buffer to the pool of free buffers. */ - for( ul = 0; ul < ETH_NUM_BUFFERS; ul++ ) - { - if( ETH_BUF( ul ) == ( unsigned long ) pucBuffer ) - { - ucBufferInUse[ ul ] = pdFALSE; - break; - } - } -} -/*-----------------------------------------------------------*/ - -unsigned long ulGetEMACRxData( void ) -{ -unsigned long ulLen = 0; -long lIndex; - - if( EMAC->RxProduceIndex != EMAC->RxConsumeIndex ) - { - /* Mark the current buffer as free as uip_buf is going to be set to - the buffer that contains the received data. */ - prvReturnBuffer( uip_buf ); - - ulLen = ( RX_STAT_INFO( EMAC->RxConsumeIndex ) & RINFO_SIZE ) - 3; - uip_buf = ( unsigned char * ) RX_DESC_PACKET( EMAC->RxConsumeIndex ); - - /* Allocate a new buffer to the descriptor. */ - RX_DESC_PACKET( EMAC->RxConsumeIndex ) = ( unsigned long ) prvGetNextBuffer(); - - /* Move the consume index onto the next position, ensuring it wraps to - the beginning at the appropriate place. */ - lIndex = EMAC->RxConsumeIndex; - - lIndex++; - if( lIndex >= NUM_RX_FRAG ) - { - lIndex = 0; - } - - EMAC->RxConsumeIndex = lIndex; - } - - return ulLen; -} -/*-----------------------------------------------------------*/ - -void vSendEMACTxData( unsigned short usTxDataLen ) -{ -unsigned long ulAttempts = 0UL; - - /* Check to see if the Tx descriptor is free, indicated by its buffer being - NULL. */ - while( TX_DESC_PACKET( emacTX_DESC_INDEX ) != ( unsigned long ) NULL ) - { - /* Wait for the Tx descriptor to become available. */ - vTaskDelay( emacBUFFER_WAIT_DELAY ); - - ulAttempts++; - if( ulAttempts > emacBUFFER_WAIT_ATTEMPTS ) - { - /* Something has gone wrong as the Tx descriptor is still in use. - Clear it down manually, the data it was sending will probably be - lost. */ - prvReturnBuffer( ( unsigned char * ) TX_DESC_PACKET( emacTX_DESC_INDEX ) ); - break; - } - } - - /* Setup the Tx descriptor for transmission. Remember the length of the - data being sent so the second descriptor can be used to send it again from - within the ISR. */ - usSendLen = usTxDataLen; - TX_DESC_PACKET( emacTX_DESC_INDEX ) = ( unsigned long ) uip_buf; - TX_DESC_CTRL( emacTX_DESC_INDEX ) = ( usTxDataLen | TCTRL_LAST | TCTRL_INT ); - EMAC->TxProduceIndex = ( emacTX_DESC_INDEX + 1 ); - - /* uip_buf is being sent by the Tx descriptor. Allocate a new buffer. */ - uip_buf = prvGetNextBuffer(); -} -/*-----------------------------------------------------------*/ - -static long prvWritePHY( long lPhyReg, long lValue ) -{ -const long lMaxTime = 10; -long x; - - EMAC->MADR = DP83848C_DEF_ADR | lPhyReg; - EMAC->MWTD = lValue; - - x = 0; - for( x = 0; x < lMaxTime; x++ ) - { - if( ( EMAC->MIND & MIND_BUSY ) == 0 ) - { - /* Operation has finished. */ - break; - } - - vTaskDelay( emacSHORT_DELAY ); - } - - if( x < lMaxTime ) - { - return pdPASS; - } - else - { - return pdFAIL; - } -} -/*-----------------------------------------------------------*/ - -static unsigned short prvReadPHY( unsigned char ucPhyReg, long *plStatus ) -{ -long x; -const long lMaxTime = 10; - - EMAC->MADR = DP83848C_DEF_ADR | ucPhyReg; - EMAC->MCMD = MCMD_READ; - - for( x = 0; x < lMaxTime; x++ ) - { - /* Operation has finished. */ - if( ( EMAC->MIND & MIND_BUSY ) == 0 ) - { - break; - } - - vTaskDelay( emacSHORT_DELAY ); - } - - EMAC->MCMD = 0; - - if( x >= lMaxTime ) - { - *plStatus = pdFAIL; - } - - return( EMAC->MRDD ); -} -/*-----------------------------------------------------------*/ - -void vEMAC_ISR( void ) -{ -unsigned long ulStatus; -long lHigherPriorityTaskWoken = pdFALSE; - - ulStatus = EMAC->IntStatus; - - /* Clear the interrupt. */ - EMAC->IntClear = ulStatus; - - if( ulStatus & INT_RX_DONE ) - { - /* Ensure the uIP task is not blocked as data has arrived. */ - xSemaphoreGiveFromISR( xEMACSemaphore, &lHigherPriorityTaskWoken ); - } - - if( ulStatus & INT_TX_DONE ) - { - if( usSendLen > 0 ) - { - /* Send the data again, using the second descriptor. As there are - only two descriptors the index is set back to 0. */ - TX_DESC_PACKET( ( emacTX_DESC_INDEX + 1 ) ) = TX_DESC_PACKET( emacTX_DESC_INDEX ); - TX_DESC_CTRL( ( emacTX_DESC_INDEX + 1 ) ) = ( usSendLen | TCTRL_LAST | TCTRL_INT ); - EMAC->TxProduceIndex = ( emacTX_DESC_INDEX ); - - /* This is the second Tx so set usSendLen to 0 to indicate that the - Tx descriptors will be free again. */ - usSendLen = 0UL; - } - else - { - /* The Tx buffer is no longer required. */ - prvReturnBuffer( ( unsigned char * ) TX_DESC_PACKET( emacTX_DESC_INDEX ) ); - TX_DESC_PACKET( emacTX_DESC_INDEX ) = ( unsigned long ) NULL; - } - } - - portEND_SWITCHING_ISR( lHigherPriorityTaskWoken ); -} diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/http-strings b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/http-strings deleted file mode 100644 index 0d3c30cdd..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/http-strings +++ /dev/null @@ -1,35 +0,0 @@ -http_http "http://" -http_200 "200 " -http_301 "301 " -http_302 "302 " -http_get "GET " -http_10 "HTTP/1.0" -http_11 "HTTP/1.1" -http_content_type "content-type: " -http_texthtml "text/html" -http_location "location: " -http_host "host: " -http_crnl "\r\n" -http_index_html "/index.html" -http_404_html "/404.html" -http_referer "Referer:" -http_header_200 "HTTP/1.0 200 OK\r\nServer: uIP/1.0 http://www.sics.se/~adam/uip/\r\nConnection: close\r\n" -http_header_404 "HTTP/1.0 404 Not found\r\nServer: uIP/1.0 http://www.sics.se/~adam/uip/\r\nConnection: close\r\n" -http_content_type_plain "Content-type: text/plain\r\n\r\n" -http_content_type_html "Content-type: text/html\r\n\r\n" -http_content_type_css "Content-type: text/css\r\n\r\n" -http_content_type_text "Content-type: text/text\r\n\r\n" -http_content_type_png "Content-type: image/png\r\n\r\n" -http_content_type_gif "Content-type: image/gif\r\n\r\n" -http_content_type_jpg "Content-type: image/jpeg\r\n\r\n" -http_content_type_binary "Content-type: application/octet-stream\r\n\r\n" -http_html ".html" -http_shtml ".shtml" -http_htm ".htm" -http_css ".css" -http_png ".png" -http_gif ".gif" -http_jpg ".jpg" -http_text ".txt" -http_txt ".txt" - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/http-strings.c b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/http-strings.c deleted file mode 100644 index ef7a41c7d..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/http-strings.c +++ /dev/null @@ -1,102 +0,0 @@ -const char http_http[8] = -/* "http://" */ -{0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, }; -const char http_200[5] = -/* "200 " */ -{0x32, 0x30, 0x30, 0x20, }; -const char http_301[5] = -/* "301 " */ -{0x33, 0x30, 0x31, 0x20, }; -const char http_302[5] = -/* "302 " */ -{0x33, 0x30, 0x32, 0x20, }; -const char http_get[5] = -/* "GET " */ -{0x47, 0x45, 0x54, 0x20, }; -const char http_10[9] = -/* "HTTP/1.0" */ -{0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30, }; -const char http_11[9] = -/* "HTTP/1.1" */ -{0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x31, }; -const char http_content_type[15] = -/* "content-type: " */ -{0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, }; -const char http_texthtml[10] = -/* "text/html" */ -{0x74, 0x65, 0x78, 0x74, 0x2f, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_location[11] = -/* "location: " */ -{0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, }; -const char http_host[7] = -/* "host: " */ -{0x68, 0x6f, 0x73, 0x74, 0x3a, 0x20, }; -const char http_crnl[3] = -/* "\r\n" */ -{0xd, 0xa, }; -const char http_index_html[12] = -/* "/index.html" */ -{0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_404_html[10] = -/* "/404.html" */ -{0x2f, 0x34, 0x30, 0x34, 0x2e, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_referer[9] = -/* "Referer:" */ -{0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x72, 0x3a, }; -const char http_header_200[84] = -/* "HTTP/1.0 200 OK\r\nServer: uIP/1.0 http://www.sics.se/~adam/uip/\r\nConnection: close\r\n" */ -{0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x32, 0x30, 0x30, 0x20, 0x4f, 0x4b, 0xd, 0xa, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x3a, 0x20, 0x75, 0x49, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x73, 0x69, 0x63, 0x73, 0x2e, 0x73, 0x65, 0x2f, 0x7e, 0x61, 0x64, 0x61, 0x6d, 0x2f, 0x75, 0x69, 0x70, 0x2f, 0xd, 0xa, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0xd, 0xa, }; -const char http_header_404[91] = -/* "HTTP/1.0 404 Not found\r\nServer: uIP/1.0 http://www.sics.se/~adam/uip/\r\nConnection: close\r\n" */ -{0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x34, 0x30, 0x34, 0x20, 0x4e, 0x6f, 0x74, 0x20, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0xd, 0xa, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x3a, 0x20, 0x75, 0x49, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x73, 0x69, 0x63, 0x73, 0x2e, 0x73, 0x65, 0x2f, 0x7e, 0x61, 0x64, 0x61, 0x6d, 0x2f, 0x75, 0x69, 0x70, 0x2f, 0xd, 0xa, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0xd, 0xa, }; -const char http_content_type_plain[29] = -/* "Content-type: text/plain\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_html[28] = -/* "Content-type: text/html\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_css [27] = -/* "Content-type: text/css\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x63, 0x73, 0x73, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_text[28] = -/* "Content-type: text/text\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x74, 0x65, 0x78, 0x74, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_png [28] = -/* "Content-type: image/png\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x70, 0x6e, 0x67, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_gif [28] = -/* "Content-type: image/gif\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x67, 0x69, 0x66, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_jpg [29] = -/* "Content-type: image/jpeg\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x6a, 0x70, 0x65, 0x67, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_binary[43] = -/* "Content-type: application/octet-stream\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x6f, 0x63, 0x74, 0x65, 0x74, 0x2d, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0xd, 0xa, 0xd, 0xa, }; -const char http_html[6] = -/* ".html" */ -{0x2e, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_shtml[7] = -/* ".shtml" */ -{0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_htm[5] = -/* ".htm" */ -{0x2e, 0x68, 0x74, 0x6d, }; -const char http_css[5] = -/* ".css" */ -{0x2e, 0x63, 0x73, 0x73, }; -const char http_png[5] = -/* ".png" */ -{0x2e, 0x70, 0x6e, 0x67, }; -const char http_gif[5] = -/* ".gif" */ -{0x2e, 0x67, 0x69, 0x66, }; -const char http_jpg[5] = -/* ".jpg" */ -{0x2e, 0x6a, 0x70, 0x67, }; -const char http_text[5] = -/* ".txt" */ -{0x2e, 0x74, 0x78, 0x74, }; -const char http_txt[5] = -/* ".txt" */ -{0x2e, 0x74, 0x78, 0x74, }; diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/http-strings.h b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/http-strings.h deleted file mode 100644 index acbe7e17f..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/http-strings.h +++ /dev/null @@ -1,34 +0,0 @@ -extern const char http_http[8]; -extern const char http_200[5]; -extern const char http_301[5]; -extern const char http_302[5]; -extern const char http_get[5]; -extern const char http_10[9]; -extern const char http_11[9]; -extern const char http_content_type[15]; -extern const char http_texthtml[10]; -extern const char http_location[11]; -extern const char http_host[7]; -extern const char http_crnl[3]; -extern const char http_index_html[12]; -extern const char http_404_html[10]; -extern const char http_referer[9]; -extern const char http_header_200[84]; -extern const char http_header_404[91]; -extern const char http_content_type_plain[29]; -extern const char http_content_type_html[28]; -extern const char http_content_type_css [27]; -extern const char http_content_type_text[28]; -extern const char http_content_type_png [28]; -extern const char http_content_type_gif [28]; -extern const char http_content_type_jpg [29]; -extern const char http_content_type_binary[43]; -extern const char http_html[6]; -extern const char http_shtml[7]; -extern const char http_htm[5]; -extern const char http_css[5]; -extern const char http_png[5]; -extern const char http_gif[5]; -extern const char http_jpg[5]; -extern const char http_text[5]; -extern const char http_txt[5]; diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/httpd-cgi.c b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/httpd-cgi.c deleted file mode 100644 index 9a51bc76a..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/httpd-cgi.c +++ /dev/null @@ -1,304 +0,0 @@ -/** - * \addtogroup httpd - * @{ - */ - -/** - * \file - * Web server script interface - * \author - * Adam Dunkels - * - */ - -/* - * Copyright (c) 2001-2006, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: httpd-cgi.c,v 1.2 2006/06/11 21:46:37 adam Exp $ - * - */ - -#include "uip.h" -#include "psock.h" -#include "httpd.h" -#include "httpd-cgi.h" -#include "httpd-fs.h" - -#include -#include - -HTTPD_CGI_CALL(file, "file-stats", file_stats); -HTTPD_CGI_CALL(tcp, "tcp-connections", tcp_stats); -HTTPD_CGI_CALL(net, "net-stats", net_stats); -HTTPD_CGI_CALL(rtos, "rtos-stats", rtos_stats ); -HTTPD_CGI_CALL(run, "run-time", run_time ); -HTTPD_CGI_CALL(io, "led-io", led_io ); - - -static const struct httpd_cgi_call *calls[] = { &file, &tcp, &net, &rtos, &run, &io, NULL }; - -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(nullfunction(struct httpd_state *s, char *ptr)) -{ - PSOCK_BEGIN(&s->sout); - ( void ) ptr; - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -httpd_cgifunction -httpd_cgi(char *name) -{ - const struct httpd_cgi_call **f; - - /* Find the matching name in the table, return the function. */ - for(f = calls; *f != NULL; ++f) { - if(strncmp((*f)->name, name, strlen((*f)->name)) == 0) { - return (*f)->function; - } - } - return nullfunction; -} -/*---------------------------------------------------------------------------*/ -static unsigned short -generate_file_stats(void *arg) -{ - char *f = (char *)arg; - return snprintf((char *)uip_appdata, UIP_APPDATA_SIZE, "%5u", httpd_fs_count(f)); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(file_stats(struct httpd_state *s, char *ptr)) -{ - PSOCK_BEGIN(&s->sout); - - PSOCK_GENERATOR_SEND(&s->sout, generate_file_stats, strchr(ptr, ' ') + 1); - - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -static const char closed[] = /* "CLOSED",*/ -{0x43, 0x4c, 0x4f, 0x53, 0x45, 0x44, 0}; -static const char syn_rcvd[] = /* "SYN-RCVD",*/ -{0x53, 0x59, 0x4e, 0x2d, 0x52, 0x43, 0x56, - 0x44, 0}; -static const char syn_sent[] = /* "SYN-SENT",*/ -{0x53, 0x59, 0x4e, 0x2d, 0x53, 0x45, 0x4e, - 0x54, 0}; -static const char established[] = /* "ESTABLISHED",*/ -{0x45, 0x53, 0x54, 0x41, 0x42, 0x4c, 0x49, 0x53, 0x48, - 0x45, 0x44, 0}; -static const char fin_wait_1[] = /* "FIN-WAIT-1",*/ -{0x46, 0x49, 0x4e, 0x2d, 0x57, 0x41, 0x49, - 0x54, 0x2d, 0x31, 0}; -static const char fin_wait_2[] = /* "FIN-WAIT-2",*/ -{0x46, 0x49, 0x4e, 0x2d, 0x57, 0x41, 0x49, - 0x54, 0x2d, 0x32, 0}; -static const char closing[] = /* "CLOSING",*/ -{0x43, 0x4c, 0x4f, 0x53, 0x49, - 0x4e, 0x47, 0}; -static const char time_wait[] = /* "TIME-WAIT,"*/ -{0x54, 0x49, 0x4d, 0x45, 0x2d, 0x57, 0x41, - 0x49, 0x54, 0}; -static const char last_ack[] = /* "LAST-ACK"*/ -{0x4c, 0x41, 0x53, 0x54, 0x2d, 0x41, 0x43, - 0x4b, 0}; - -static const char *states[] = { - closed, - syn_rcvd, - syn_sent, - established, - fin_wait_1, - fin_wait_2, - closing, - time_wait, - last_ack}; - - -static unsigned short -generate_tcp_stats(void *arg) -{ - struct uip_conn *conn; - struct httpd_state *s = (struct httpd_state *)arg; - - conn = &uip_conns[s->count]; - return snprintf((char *)uip_appdata, UIP_APPDATA_SIZE, - "\r\n", - htons(conn->lport), - htons(conn->ripaddr[0]) >> 8, - htons(conn->ripaddr[0]) & 0xff, - htons(conn->ripaddr[1]) >> 8, - htons(conn->ripaddr[1]) & 0xff, - htons(conn->rport), - states[conn->tcpstateflags & UIP_TS_MASK], - conn->nrtx, - conn->timer, - (uip_outstanding(conn))? '*':' ', - (uip_stopped(conn))? '!':' '); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(tcp_stats(struct httpd_state *s, char *ptr)) -{ - - PSOCK_BEGIN(&s->sout); - ( void ) ptr; - for(s->count = 0; s->count < UIP_CONNS; ++s->count) { - if((uip_conns[s->count].tcpstateflags & UIP_TS_MASK) != UIP_CLOSED) { - PSOCK_GENERATOR_SEND(&s->sout, generate_tcp_stats, s); - } - } - - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -static unsigned short -generate_net_stats(void *arg) -{ - struct httpd_state *s = (struct httpd_state *)arg; - return snprintf((char *)uip_appdata, UIP_APPDATA_SIZE, - "%5u\n", ((uip_stats_t *)&uip_stat)[s->count]); -} - -static -PT_THREAD(net_stats(struct httpd_state *s, char *ptr)) -{ - PSOCK_BEGIN(&s->sout); - - ( void ) ptr; -#if UIP_STATISTICS - - for(s->count = 0; s->count < sizeof(uip_stat) / sizeof(uip_stats_t); - ++s->count) { - PSOCK_GENERATOR_SEND(&s->sout, generate_net_stats, s); - } - -#endif /* UIP_STATISTICS */ - - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ - -extern void vTaskList( char *pcWriteBuffer ); -extern char *pcGetTaskStatusMessage( void ); -static char cCountBuf[ 128 ]; -long lRefreshCount = 0; -static unsigned short -generate_rtos_stats(void *arg) -{ - ( void ) arg; - lRefreshCount++; - sprintf( cCountBuf, "


Refresh count = %d


%s", (int)lRefreshCount, pcGetTaskStatusMessage() ); - vTaskList( ( char * ) uip_appdata ); - strcat( uip_appdata, cCountBuf ); - - return strlen( uip_appdata ); -} -/*---------------------------------------------------------------------------*/ - - -static -PT_THREAD(rtos_stats(struct httpd_state *s, char *ptr)) -{ - PSOCK_BEGIN(&s->sout); - ( void ) ptr; - PSOCK_GENERATOR_SEND(&s->sout, generate_rtos_stats, NULL); - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ - -char *pcStatus; -unsigned long ulString; - -static unsigned short generate_io_state( void *arg ) -{ -extern long lParTestGetLEDState( void ); - - ( void ) arg; - - /* Get the state of the LEDs that are on the FIO1 port. */ - if( lParTestGetLEDState() ) - { - pcStatus = ""; - } - else - { - pcStatus = "checked"; - } - - sprintf( uip_appdata, - "LED

", pcStatus ); - - return strlen( uip_appdata ); -} -/*---------------------------------------------------------------------------*/ - -extern void vTaskGetRunTimeStats( char *pcWriteBuffer ); -static unsigned short -generate_runtime_stats(void *arg) -{ - ( void ) arg; - lRefreshCount++; - sprintf( cCountBuf, "


Refresh count = %d", (int)lRefreshCount ); - vTaskGetRunTimeStats( ( char * ) uip_appdata ); - strcat( uip_appdata, cCountBuf ); - - return strlen( uip_appdata ); -} -/*---------------------------------------------------------------------------*/ - - -static -PT_THREAD(run_time(struct httpd_state *s, char *ptr)) -{ - PSOCK_BEGIN(&s->sout); - ( void ) ptr; - PSOCK_GENERATOR_SEND(&s->sout, generate_runtime_stats, NULL); - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ - - -static PT_THREAD(led_io(struct httpd_state *s, char *ptr)) -{ - PSOCK_BEGIN(&s->sout); - ( void ) ptr; - PSOCK_GENERATOR_SEND(&s->sout, generate_io_state, NULL); - PSOCK_END(&s->sout); -} - -/** @} */ - - - - - - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/httpd-cgi.h b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/httpd-cgi.h deleted file mode 100644 index 7ae928321..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/httpd-cgi.h +++ /dev/null @@ -1,84 +0,0 @@ -/** - * \addtogroup httpd - * @{ - */ - -/** - * \file - * Web server script interface header file - * \author - * Adam Dunkels - * - */ - - - -/* - * Copyright (c) 2001, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: httpd-cgi.h,v 1.2 2006/06/11 21:46:38 adam Exp $ - * - */ - -#ifndef __HTTPD_CGI_H__ -#define __HTTPD_CGI_H__ - -#include "psock.h" -#include "httpd.h" - -typedef PT_THREAD((* httpd_cgifunction)(struct httpd_state *, char *)); - -httpd_cgifunction httpd_cgi(char *name); - -struct httpd_cgi_call { - const char *name; - const httpd_cgifunction function; -}; - -/** - * \brief HTTPD CGI function declaration - * \param name The C variable name of the function - * \param str The string name of the function, used in the script file - * \param function A pointer to the function that implements it - * - * This macro is used for declaring a HTTPD CGI - * function. This function is then added to the list of - * HTTPD CGI functions with the httpd_cgi_add() function. - * - * \hideinitializer - */ -#define HTTPD_CGI_CALL(name, str, function) \ -static PT_THREAD(function(struct httpd_state *, char *)); \ -static const struct httpd_cgi_call name = {str, function} - -void httpd_cgi_init(void); -#endif /* __HTTPD_CGI_H__ */ - -/** @} */ diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/httpd-fs.c b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/httpd-fs.c deleted file mode 100644 index dc4aef011..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/httpd-fs.c +++ /dev/null @@ -1,132 +0,0 @@ -/* - * Copyright (c) 2001, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - * $Id: httpd-fs.c,v 1.1 2006/06/07 09:13:08 adam Exp $ - */ - -#include "httpd.h" -#include "httpd-fs.h" -#include "httpd-fsdata.h" - -#ifndef NULL -#define NULL 0 -#endif /* NULL */ - -#include "httpd-fsdata.c" - -#if HTTPD_FS_STATISTICS -static u16_t count[HTTPD_FS_NUMFILES]; -#endif /* HTTPD_FS_STATISTICS */ - -/*-----------------------------------------------------------------------------------*/ -static u8_t -httpd_fs_strcmp(const char *str1, const char *str2) -{ - u8_t i; - i = 0; - loop: - - if(str2[i] == 0 || - str1[i] == '\r' || - str1[i] == '\n') { - return 0; - } - - if(str1[i] != str2[i]) { - return 1; - } - - - ++i; - goto loop; -} -/*-----------------------------------------------------------------------------------*/ -int -httpd_fs_open(const char *name, struct httpd_fs_file *file) -{ -#if HTTPD_FS_STATISTICS - u16_t i = 0; -#endif /* HTTPD_FS_STATISTICS */ - struct httpd_fsdata_file_noconst *f; - - for(f = (struct httpd_fsdata_file_noconst *)HTTPD_FS_ROOT; - f != NULL; - f = (struct httpd_fsdata_file_noconst *)f->next) { - - if(httpd_fs_strcmp(name, f->name) == 0) { - file->data = f->data; - file->len = f->len; -#if HTTPD_FS_STATISTICS - ++count[i]; -#endif /* HTTPD_FS_STATISTICS */ - return 1; - } -#if HTTPD_FS_STATISTICS - ++i; -#endif /* HTTPD_FS_STATISTICS */ - - } - return 0; -} -/*-----------------------------------------------------------------------------------*/ -void -httpd_fs_init(void) -{ -#if HTTPD_FS_STATISTICS - u16_t i; - for(i = 0; i < HTTPD_FS_NUMFILES; i++) { - count[i] = 0; - } -#endif /* HTTPD_FS_STATISTICS */ -} -/*-----------------------------------------------------------------------------------*/ -#if HTTPD_FS_STATISTICS -u16_t httpd_fs_count -(char *name) -{ - struct httpd_fsdata_file_noconst *f; - u16_t i; - - i = 0; - for(f = (struct httpd_fsdata_file_noconst *)HTTPD_FS_ROOT; - f != NULL; - f = (struct httpd_fsdata_file_noconst *)f->next) { - - if(httpd_fs_strcmp(name, f->name) == 0) { - return count[i]; - } - ++i; - } - return 0; -} -#endif /* HTTPD_FS_STATISTICS */ -/*-----------------------------------------------------------------------------------*/ diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/httpd-fs.h b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/httpd-fs.h deleted file mode 100644 index b594eea56..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/httpd-fs.h +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright (c) 2001, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - * $Id: httpd-fs.h,v 1.1 2006/06/07 09:13:08 adam Exp $ - */ -#ifndef __HTTPD_FS_H__ -#define __HTTPD_FS_H__ - -#define HTTPD_FS_STATISTICS 1 - -struct httpd_fs_file { - char *data; - int len; -}; - -/* file must be allocated by caller and will be filled in - by the function. */ -int httpd_fs_open(const char *name, struct httpd_fs_file *file); - -#ifdef HTTPD_FS_STATISTICS -#if HTTPD_FS_STATISTICS == 1 -u16_t httpd_fs_count(char *name); -#endif /* HTTPD_FS_STATISTICS */ -#endif /* HTTPD_FS_STATISTICS */ - -void httpd_fs_init(void); - -#endif /* __HTTPD_FS_H__ */ diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/httpd-fs/404.html b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/httpd-fs/404.html deleted file mode 100644 index 43e7f4cad..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/httpd-fs/404.html +++ /dev/null @@ -1,8 +0,0 @@ - - -

-

404 - file not found

-

Go here instead.

-
- - \ No newline at end of file diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/httpd-fs/index.html b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/httpd-fs/index.html deleted file mode 100644 index 4937dc69a..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/httpd-fs/index.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Loading index.shtml. Click here if not automatically redirected. - - - - - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/httpd-fs/index.shtml b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/httpd-fs/index.shtml deleted file mode 100644 index 29d242c05..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/httpd-fs/index.shtml +++ /dev/null @@ -1,20 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS.org Homepage | IO -

-


-

-

Task statistics

-Page will refresh every 2 seconds.

-

Task          State  Priority  Stack	#
************************************************
-%! rtos-stats -
-
- - - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/httpd-fs/io.shtml b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/httpd-fs/io.shtml deleted file mode 100644 index fd0697d2a..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/httpd-fs/io.shtml +++ /dev/null @@ -1,28 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS.org Homepage | IO -

-


-LED and LCD IO
- -

- -Use the check box to turn on or off the LED, enter text to display on the OLED display, then click "Update IO". - - -

-
-%! led-io -

- - -

- - - - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/httpd-fs/runtime.shtml b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/httpd-fs/runtime.shtml deleted file mode 100644 index 67cae4657..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/httpd-fs/runtime.shtml +++ /dev/null @@ -1,20 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS.org Homepage | IO -

-


-

-

Run-time statistics

-Page will refresh every 2 seconds.

-

Task            Abs Time      % Time
****************************************
-%! run-time -
-
- - - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/httpd-fs/stats.shtml b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/httpd-fs/stats.shtml deleted file mode 100644 index d95a69340..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/httpd-fs/stats.shtml +++ /dev/null @@ -1,41 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS.org Homepage | IO -

-


-

-

Network statistics

-
LocalRemoteStateRetransmissionsTimerFlags
%d%u.%u.%u.%u:%u%s%u%u%c %c
-
-IP           Packets dropped
-             Packets received
-             Packets sent
-IP errors    IP version/header length
-             IP length, high byte
-             IP length, low byte
-             IP fragments
-             Header checksum
-             Wrong protocol
-ICMP	     Packets dropped
-             Packets received
-             Packets sent
-             Type errors
-TCP          Packets dropped
-             Packets received
-             Packets sent
-             Checksum errors
-             Data packets without ACKs
-             Resets
-             Retransmissions
-	     No connection avaliable
-	     Connection attempts to closed ports
-
%! net-stats
-
- - - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/httpd-fs/tcp.shtml b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/httpd-fs/tcp.shtml deleted file mode 100644 index 41053679d..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/httpd-fs/tcp.shtml +++ /dev/null @@ -1,21 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS.org Homepage | IO -

-


-
-

Network connections

-

- - -%! tcp-connections - - - - - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/httpd-fsdata.c b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/httpd-fsdata.c deleted file mode 100644 index c8b2a8026..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/httpd-fsdata.c +++ /dev/null @@ -1,557 +0,0 @@ -static const char data_404_html[] = { - /* /404.html */ - 0x2f, 0x34, 0x30, 0x34, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, 0x20, 0x20, 0x3c, - 0x62, 0x6f, 0x64, 0x79, 0x20, 0x62, 0x67, 0x63, 0x6f, 0x6c, - 0x6f, 0x72, 0x3d, 0x22, 0x77, 0x68, 0x69, 0x74, 0x65, 0x22, - 0x3e, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x63, 0x65, 0x6e, - 0x74, 0x65, 0x72, 0x3e, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x3c, 0x68, 0x31, 0x3e, 0x34, 0x30, 0x34, 0x20, 0x2d, - 0x20, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x6e, 0x6f, 0x74, 0x20, - 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x3c, 0x2f, 0x68, 0x31, 0x3e, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x68, 0x33, - 0x3e, 0x47, 0x6f, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, - 0x66, 0x3d, 0x22, 0x2f, 0x22, 0x3e, 0x68, 0x65, 0x72, 0x65, - 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x65, - 0x61, 0x64, 0x2e, 0x3c, 0x2f, 0x68, 0x33, 0x3e, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x3c, 0x2f, 0x63, 0x65, 0x6e, 0x74, 0x65, - 0x72, 0x3e, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x62, 0x6f, 0x64, - 0x79, 0x3e, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, -0}; - -static const char data_index_html[] = { - /* /index.html */ - 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, - 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, - 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, 0x57, 0x45, 0x42, - 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x64, 0x65, - 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x42, 0x4f, 0x44, 0x59, 0x20, 0x6f, - 0x6e, 0x4c, 0x6f, 0x61, 0x64, 0x3d, 0x22, 0x77, 0x69, 0x6e, - 0x64, 0x6f, 0x77, 0x2e, 0x73, 0x65, 0x74, 0x54, 0x69, 0x6d, - 0x65, 0x6f, 0x75, 0x74, 0x28, 0x26, 0x71, 0x75, 0x6f, 0x74, - 0x3b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x27, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x27, 0x26, 0x71, - 0x75, 0x6f, 0x74, 0x3b, 0x2c, 0x31, 0x30, 0x30, 0x29, 0x22, - 0x3e, 0xa, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, - 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, - 0x3e, 0xa, 0x4c, 0x6f, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x20, - 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, - 0x6c, 0x2e, 0x20, 0x20, 0x43, 0x6c, 0x69, 0x63, 0x6b, 0x20, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x68, 0x65, 0x72, 0x65, 0x3c, 0x2f, 0x61, 0x3e, - 0x20, 0x69, 0x66, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x61, 0x75, - 0x74, 0x6f, 0x6d, 0x61, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x6c, - 0x79, 0x20, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, - 0x65, 0x64, 0x2e, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, - 0x3e, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xa, - 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xa, 0x3c, 0x2f, - 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, 0xa, 0}; - -static const char data_index_shtml[] = { - /* /index.shtml */ - 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, - 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, - 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, 0x57, 0x45, 0x42, - 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x64, 0x65, - 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x42, 0x4f, 0x44, 0x59, 0x20, 0x6f, - 0x6e, 0x4c, 0x6f, 0x61, 0x64, 0x3d, 0x22, 0x77, 0x69, 0x6e, - 0x64, 0x6f, 0x77, 0x2e, 0x73, 0x65, 0x74, 0x54, 0x69, 0x6d, - 0x65, 0x6f, 0x75, 0x74, 0x28, 0x26, 0x71, 0x75, 0x6f, 0x74, - 0x3b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x27, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x27, 0x26, 0x71, - 0x75, 0x6f, 0x74, 0x3b, 0x2c, 0x32, 0x30, 0x30, 0x30, 0x29, - 0x22, 0x3e, 0xa, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, - 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, - 0x22, 0x3e, 0xa, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, - 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, - 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, - 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, - 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x72, 0x75, - 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, - 0x6c, 0x22, 0x3e, 0x52, 0x75, 0x6e, 0x20, 0x54, 0x69, 0x6d, - 0x65, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, - 0x6c, 0x22, 0x3e, 0x54, 0x43, 0x50, 0x20, 0x53, 0x74, 0x61, - 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, 0x63, 0x70, 0x2e, 0x73, - 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, - 0x2e, 0x66, 0x72, 0x65, 0x65, 0x72, 0x74, 0x6f, 0x73, 0x2e, - 0x6f, 0x72, 0x67, 0x2f, 0x22, 0x3e, 0x46, 0x72, 0x65, 0x65, - 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x48, - 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0xa, 0x3c, 0x62, 0x72, - 0x3e, 0x3c, 0x70, 0x3e, 0xa, 0x3c, 0x68, 0x72, 0x3e, 0xa, - 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xa, 0x3c, 0x68, - 0x32, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x73, 0x74, 0x61, - 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x3c, 0x2f, 0x68, - 0x32, 0x3e, 0xa, 0x50, 0x61, 0x67, 0x65, 0x20, 0x77, 0x69, - 0x6c, 0x6c, 0x20, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, - 0x20, 0x65, 0x76, 0x65, 0x72, 0x79, 0x20, 0x32, 0x20, 0x73, - 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x2e, 0x3c, 0x70, 0x3e, - 0xa, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, - 0x65, 0x3d, 0x22, 0x63, 0x6f, 0x75, 0x72, 0x69, 0x65, 0x72, - 0x22, 0x3e, 0x3c, 0x70, 0x72, 0x65, 0x3e, 0x54, 0x61, 0x73, - 0x6b, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x53, 0x74, 0x61, 0x74, 0x65, 0x20, 0x20, 0x50, 0x72, - 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x20, 0x20, 0x53, 0x74, - 0x61, 0x63, 0x6b, 0x9, 0x23, 0x3c, 0x62, 0x72, 0x3e, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x3c, 0x62, 0x72, - 0x3e, 0xa, 0x25, 0x21, 0x20, 0x72, 0x74, 0x6f, 0x73, 0x2d, - 0x73, 0x74, 0x61, 0x74, 0x73, 0xa, 0x3c, 0x2f, 0x70, 0x72, - 0x65, 0x3e, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xa, - 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xa, 0x3c, 0x2f, - 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xa, 0x3c, 0x2f, 0x68, 0x74, - 0x6d, 0x6c, 0x3e, 0xa, 0xa, 0}; - -static const char data_io_shtml[] = { - /* /io.shtml */ - 0x2f, 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, - 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, - 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, 0x57, 0x45, 0x42, - 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x64, 0x65, - 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x42, 0x4f, 0x44, 0x59, 0x3e, 0xa, - 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, - 0x3d, 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xa, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x53, 0x74, 0x61, - 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x72, 0x75, 0x6e, 0x74, 0x69, - 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x52, 0x75, 0x6e, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, - 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, - 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x54, 0x43, 0x50, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, - 0x6c, 0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, - 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, - 0x65, 0x65, 0x72, 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, - 0x2f, 0x22, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x48, 0x6f, 0x6d, 0x65, - 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6f, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x49, 0x4f, 0x3c, - 0x2f, 0x61, 0x3e, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, - 0x3e, 0xa, 0x3c, 0x68, 0x72, 0x3e, 0xa, 0x3c, 0x62, 0x3e, - 0x4c, 0x45, 0x44, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x4c, 0x43, - 0x44, 0x20, 0x49, 0x4f, 0x3c, 0x2f, 0x62, 0x3e, 0x3c, 0x62, - 0x72, 0x3e, 0xa, 0xa, 0x3c, 0x70, 0x3e, 0xa, 0xa, 0x55, - 0x73, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x68, 0x65, - 0x63, 0x6b, 0x20, 0x62, 0x6f, 0x78, 0x20, 0x74, 0x6f, 0x20, - 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6f, 0x6e, 0x20, 0x6f, 0x72, - 0x20, 0x6f, 0x66, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x4c, - 0x45, 0x44, 0x2c, 0x20, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x20, - 0x74, 0x65, 0x78, 0x74, 0x20, 0x74, 0x6f, 0x20, 0x64, 0x69, - 0x73, 0x70, 0x6c, 0x61, 0x79, 0x20, 0x6f, 0x6e, 0x20, 0x74, - 0x68, 0x65, 0x20, 0x4f, 0x4c, 0x45, 0x44, 0x20, 0x64, 0x69, - 0x73, 0x70, 0x6c, 0x61, 0x79, 0x2c, 0x20, 0x74, 0x68, 0x65, - 0x6e, 0x20, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x20, 0x22, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x49, 0x4f, 0x22, 0x2e, - 0xa, 0xa, 0xa, 0x3c, 0x70, 0x3e, 0xa, 0x3c, 0x66, 0x6f, - 0x72, 0x6d, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x22, 0x61, - 0x46, 0x6f, 0x72, 0x6d, 0x22, 0x20, 0x61, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x3d, 0x22, 0x2f, 0x69, 0x6f, 0x2e, 0x73, 0x68, - 0x74, 0x6d, 0x6c, 0x22, 0x20, 0x6d, 0x65, 0x74, 0x68, 0x6f, - 0x64, 0x3d, 0x22, 0x67, 0x65, 0x74, 0x22, 0x3e, 0xa, 0x25, - 0x21, 0x20, 0x6c, 0x65, 0x64, 0x2d, 0x69, 0x6f, 0xa, 0x3c, - 0x70, 0x3e, 0xa, 0x3c, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x20, - 0x74, 0x79, 0x70, 0x65, 0x3d, 0x22, 0x73, 0x75, 0x62, 0x6d, - 0x69, 0x74, 0x22, 0x20, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3d, - 0x22, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x49, 0x4f, - 0x22, 0x3e, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x72, 0x6d, 0x3e, - 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xa, 0x3c, - 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xa, 0x3c, 0x2f, 0x62, - 0x6f, 0x64, 0x79, 0x3e, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, - 0x6c, 0x3e, 0xa, 0xa, 0}; - -static const char data_runtime_shtml[] = { - /* /runtime.shtml */ - 0x2f, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, - 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, - 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, 0x57, 0x45, 0x42, - 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x64, 0x65, - 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x42, 0x4f, 0x44, 0x59, 0x20, 0x6f, - 0x6e, 0x4c, 0x6f, 0x61, 0x64, 0x3d, 0x22, 0x77, 0x69, 0x6e, - 0x64, 0x6f, 0x77, 0x2e, 0x73, 0x65, 0x74, 0x54, 0x69, 0x6d, - 0x65, 0x6f, 0x75, 0x74, 0x28, 0x26, 0x71, 0x75, 0x6f, 0x74, - 0x3b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x27, 0x72, 0x75, 0x6e, 0x74, - 0x69, 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x27, - 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x2c, 0x32, 0x30, 0x30, - 0x30, 0x29, 0x22, 0x3e, 0xa, 0x3c, 0x66, 0x6f, 0x6e, 0x74, - 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, 0x69, - 0x61, 0x6c, 0x22, 0x3e, 0xa, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x61, 0x73, - 0x6b, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x73, 0x68, - 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x52, 0x75, 0x6e, 0x20, 0x54, - 0x69, 0x6d, 0x65, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, - 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x43, 0x50, 0x20, 0x53, - 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, 0x63, 0x70, - 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x43, 0x6f, - 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, - 0x77, 0x77, 0x2e, 0x66, 0x72, 0x65, 0x65, 0x72, 0x74, 0x6f, - 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x22, 0x3e, 0x46, 0x72, - 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, 0x72, 0x67, - 0x20, 0x48, 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0xa, 0x3c, - 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xa, 0x3c, 0x68, 0x72, - 0x3e, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xa, - 0x3c, 0x68, 0x32, 0x3e, 0x52, 0x75, 0x6e, 0x2d, 0x74, 0x69, - 0x6d, 0x65, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, - 0x69, 0x63, 0x73, 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0xa, 0x50, - 0x61, 0x67, 0x65, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x72, - 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x20, 0x65, 0x76, 0x65, - 0x72, 0x79, 0x20, 0x32, 0x20, 0x73, 0x65, 0x63, 0x6f, 0x6e, - 0x64, 0x73, 0x2e, 0x3c, 0x70, 0x3e, 0xa, 0x3c, 0x66, 0x6f, - 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x63, - 0x6f, 0x75, 0x72, 0x69, 0x65, 0x72, 0x22, 0x3e, 0x3c, 0x70, - 0x72, 0x65, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x41, - 0x62, 0x73, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x25, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x3c, - 0x62, 0x72, 0x3e, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x3c, 0x62, 0x72, 0x3e, 0xa, 0x25, 0x21, - 0x20, 0x72, 0x75, 0x6e, 0x2d, 0x74, 0x69, 0x6d, 0x65, 0xa, - 0x3c, 0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, 0x6f, - 0x6e, 0x74, 0x3e, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, - 0x3e, 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xa, - 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, 0xa, 0}; - -static const char data_stats_shtml[] = { - /* /stats.shtml */ - 0x2f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, - 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, - 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, 0x57, 0x45, 0x42, - 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x64, 0x65, - 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x42, 0x4f, 0x44, 0x59, 0x3e, 0xa, - 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, - 0x3d, 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xa, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x53, 0x74, 0x61, - 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x72, 0x75, 0x6e, 0x74, 0x69, - 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x52, 0x75, 0x6e, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, - 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, - 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x54, 0x43, 0x50, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, - 0x6c, 0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, - 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, - 0x65, 0x65, 0x72, 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, - 0x2f, 0x22, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x48, 0x6f, 0x6d, 0x65, - 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6f, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x49, 0x4f, 0x3c, - 0x2f, 0x61, 0x3e, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, - 0x3e, 0xa, 0x3c, 0x68, 0x72, 0x3e, 0xa, 0x3c, 0x62, 0x72, - 0x3e, 0x3c, 0x70, 0x3e, 0xa, 0x3c, 0x68, 0x32, 0x3e, 0x4e, - 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x20, 0x73, 0x74, 0x61, - 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x3c, 0x2f, 0x68, - 0x32, 0x3e, 0xa, 0x3c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, - 0x77, 0x69, 0x64, 0x74, 0x68, 0x3d, 0x22, 0x33, 0x30, 0x30, - 0x22, 0x20, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x3d, 0x22, - 0x30, 0x22, 0x3e, 0xa, 0x3c, 0x74, 0x72, 0x3e, 0x3c, 0x74, - 0x64, 0x20, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x3d, 0x22, 0x6c, - 0x65, 0x66, 0x74, 0x22, 0x3e, 0x3c, 0x66, 0x6f, 0x6e, 0x74, - 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x63, 0x6f, 0x75, - 0x72, 0x69, 0x65, 0x72, 0x22, 0x3e, 0x3c, 0x70, 0x72, 0x65, - 0x3e, 0xa, 0x49, 0x50, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, - 0x74, 0x73, 0x20, 0x64, 0x72, 0x6f, 0x70, 0x70, 0x65, 0x64, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x73, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, 0xa, 0x49, 0x50, 0x20, - 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x20, 0x20, 0x20, 0x20, - 0x49, 0x50, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x2f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, 0x6c, 0x65, - 0x6e, 0x67, 0x74, 0x68, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x49, 0x50, - 0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x2c, 0x20, 0x68, - 0x69, 0x67, 0x68, 0x20, 0x62, 0x79, 0x74, 0x65, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x49, 0x50, 0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, - 0x68, 0x2c, 0x20, 0x6c, 0x6f, 0x77, 0x20, 0x62, 0x79, 0x74, - 0x65, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x49, 0x50, 0x20, 0x66, 0x72, - 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, 0x63, 0x68, - 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0xa, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x57, 0x72, 0x6f, 0x6e, 0x67, 0x20, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x63, 0x6f, 0x6c, 0xa, 0x49, 0x43, 0x4d, 0x50, 0x9, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, - 0x74, 0x73, 0x20, 0x64, 0x72, 0x6f, 0x70, 0x70, 0x65, 0x64, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x73, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, 0xa, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x54, 0x79, 0x70, 0x65, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, - 0x73, 0xa, 0x54, 0x43, 0x50, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, - 0x74, 0x73, 0x20, 0x64, 0x72, 0x6f, 0x70, 0x70, 0x65, 0x64, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x73, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, 0xa, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x20, 0x65, - 0x72, 0x72, 0x6f, 0x72, 0x73, 0xa, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x44, - 0x61, 0x74, 0x61, 0x20, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x73, 0x20, 0x77, 0x69, 0x74, 0x68, 0x6f, 0x75, 0x74, 0x20, - 0x41, 0x43, 0x4b, 0x73, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x52, 0x65, - 0x73, 0x65, 0x74, 0x73, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x52, 0x65, - 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x73, 0x73, 0x69, - 0x6f, 0x6e, 0x73, 0xa, 0x9, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x4e, 0x6f, 0x20, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x20, 0x61, 0x76, 0x61, 0x6c, 0x69, 0x61, - 0x62, 0x6c, 0x65, 0xa, 0x9, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x20, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x73, 0x20, - 0x74, 0x6f, 0x20, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x64, 0x20, - 0x70, 0x6f, 0x72, 0x74, 0x73, 0xa, 0x3c, 0x2f, 0x70, 0x72, - 0x65, 0x3e, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0x3c, - 0x2f, 0x74, 0x64, 0x3e, 0x3c, 0x74, 0x64, 0x3e, 0x3c, 0x70, - 0x72, 0x65, 0x3e, 0x25, 0x21, 0x20, 0x6e, 0x65, 0x74, 0x2d, - 0x73, 0x74, 0x61, 0x74, 0x73, 0xa, 0x3c, 0x2f, 0x70, 0x72, - 0x65, 0x3e, 0x3c, 0x2f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x3e, - 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xa, 0x3c, - 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xa, 0x3c, 0x2f, 0x68, - 0x74, 0x6d, 0x6c, 0x3e, 0xa, 0}; - -static const char data_tcp_shtml[] = { - /* /tcp.shtml */ - 0x2f, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, - 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, - 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, 0x57, 0x45, 0x42, - 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x64, 0x65, - 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x42, 0x4f, 0x44, 0x59, 0x3e, 0xa, - 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, - 0x3d, 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xa, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x53, 0x74, 0x61, - 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x72, 0x75, 0x6e, 0x74, 0x69, - 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x52, 0x75, 0x6e, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, - 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, - 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x54, 0x43, 0x50, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, - 0x6c, 0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, - 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, - 0x65, 0x65, 0x72, 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, - 0x2f, 0x22, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x48, 0x6f, 0x6d, 0x65, - 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6f, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x49, 0x4f, 0x3c, - 0x2f, 0x61, 0x3e, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, - 0x3e, 0xa, 0x3c, 0x68, 0x72, 0x3e, 0xa, 0x3c, 0x62, 0x72, - 0x3e, 0xa, 0x3c, 0x68, 0x32, 0x3e, 0x4e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x20, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x68, 0x32, 0x3e, - 0xa, 0x3c, 0x70, 0x3e, 0xa, 0x3c, 0x74, 0x61, 0x62, 0x6c, - 0x65, 0x3e, 0xa, 0x3c, 0x74, 0x72, 0x3e, 0x3c, 0x74, 0x68, - 0x3e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x3c, 0x2f, 0x74, 0x68, - 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x52, 0x65, 0x6d, 0x6f, 0x74, - 0x65, 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, - 0x53, 0x74, 0x61, 0x74, 0x65, 0x3c, 0x2f, 0x74, 0x68, 0x3e, - 0x3c, 0x74, 0x68, 0x3e, 0x52, 0x65, 0x74, 0x72, 0x61, 0x6e, - 0x73, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x3c, - 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x54, 0x69, - 0x6d, 0x65, 0x72, 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, - 0x68, 0x3e, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x3c, 0x2f, 0x74, - 0x68, 0x3e, 0x3c, 0x2f, 0x74, 0x72, 0x3e, 0xa, 0x25, 0x21, - 0x20, 0x74, 0x63, 0x70, 0x2d, 0x63, 0x6f, 0x6e, 0x6e, 0x65, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0xa, 0x3c, 0x2f, 0x70, - 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, - 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xa, 0x3c, - 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xa, 0x3c, 0x2f, 0x68, - 0x74, 0x6d, 0x6c, 0x3e, 0xa, 0xa, 0}; - -const struct httpd_fsdata_file file_404_html[] = {{NULL, data_404_html, data_404_html + 10, sizeof(data_404_html) - 10, 0}}; - -const struct httpd_fsdata_file file_index_html[] = {{file_404_html, data_index_html, data_index_html + 12, sizeof(data_index_html) - 12, 0}}; - -const struct httpd_fsdata_file file_index_shtml[] = {{file_index_html, data_index_shtml, data_index_shtml + 13, sizeof(data_index_shtml) - 13, 0}}; - -const struct httpd_fsdata_file file_io_shtml[] = {{file_index_shtml, data_io_shtml, data_io_shtml + 10, sizeof(data_io_shtml) - 10, 0}}; - -const struct httpd_fsdata_file file_runtime_shtml[] = {{file_io_shtml, data_runtime_shtml, data_runtime_shtml + 15, sizeof(data_runtime_shtml) - 15, 0}}; - -const struct httpd_fsdata_file file_stats_shtml[] = {{file_runtime_shtml, data_stats_shtml, data_stats_shtml + 13, sizeof(data_stats_shtml) - 13, 0}}; - -const struct httpd_fsdata_file file_tcp_shtml[] = {{file_stats_shtml, data_tcp_shtml, data_tcp_shtml + 11, sizeof(data_tcp_shtml) - 11, 0}}; - -#define HTTPD_FS_ROOT file_tcp_shtml - -#define HTTPD_FS_NUMFILES 7 diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/httpd-fsdata.h b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/httpd-fsdata.h deleted file mode 100644 index 52d35c265..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/httpd-fsdata.h +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright (c) 2001, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - * $Id: httpd-fsdata.h,v 1.1 2006/06/07 09:13:08 adam Exp $ - */ -#ifndef __HTTPD_FSDATA_H__ -#define __HTTPD_FSDATA_H__ - -#include "uip.h" - -struct httpd_fsdata_file { - const struct httpd_fsdata_file *next; - const char *name; - const char *data; - const int len; -#ifdef HTTPD_FS_STATISTICS -#if HTTPD_FS_STATISTICS == 1 - u16_t count; -#endif /* HTTPD_FS_STATISTICS */ -#endif /* HTTPD_FS_STATISTICS */ -}; - -struct httpd_fsdata_file_noconst { - struct httpd_fsdata_file *next; - char *name; - char *data; - int len; -#ifdef HTTPD_FS_STATISTICS -#if HTTPD_FS_STATISTICS == 1 - u16_t count; -#endif /* HTTPD_FS_STATISTICS */ -#endif /* HTTPD_FS_STATISTICS */ -}; - -#endif /* __HTTPD_FSDATA_H__ */ diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/httpd.c b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/httpd.c deleted file mode 100644 index c416cc1c8..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/httpd.c +++ /dev/null @@ -1,346 +0,0 @@ -/** - * \addtogroup apps - * @{ - */ - -/** - * \defgroup httpd Web server - * @{ - * The uIP web server is a very simplistic implementation of an HTTP - * server. It can serve web pages and files from a read-only ROM - * filesystem, and provides a very small scripting language. - - */ - -/** - * \file - * Web server - * \author - * Adam Dunkels - */ - - -/* - * Copyright (c) 2004, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * Author: Adam Dunkels - * - * $Id: httpd.c,v 1.2 2006/06/11 21:46:38 adam Exp $ - */ - -#include "uip.h" -#include "httpd.h" -#include "httpd-fs.h" -#include "httpd-cgi.h" -#include "http-strings.h" - -#include - -#define STATE_WAITING 0 -#define STATE_OUTPUT 1 - -#define ISO_nl 0x0a -#define ISO_space 0x20 -#define ISO_bang 0x21 -#define ISO_percent 0x25 -#define ISO_period 0x2e -#define ISO_slash 0x2f -#define ISO_colon 0x3a - - -/*---------------------------------------------------------------------------*/ -static unsigned short -generate_part_of_file(void *state) -{ - struct httpd_state *s = (struct httpd_state *)state; - - if(s->file.len > uip_mss()) { - s->len = uip_mss(); - } else { - s->len = s->file.len; - } - memcpy(uip_appdata, s->file.data, s->len); - - return s->len; -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(send_file(struct httpd_state *s)) -{ - PSOCK_BEGIN(&s->sout); - - do { - PSOCK_GENERATOR_SEND(&s->sout, generate_part_of_file, s); - s->file.len -= s->len; - s->file.data += s->len; - } while(s->file.len > 0); - - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(send_part_of_file(struct httpd_state *s)) -{ - PSOCK_BEGIN(&s->sout); - - PSOCK_SEND(&s->sout, s->file.data, s->len); - - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -static void -next_scriptstate(struct httpd_state *s) -{ - char *p; - p = strchr(s->scriptptr, ISO_nl) + 1; - s->scriptlen -= (unsigned short)(p - s->scriptptr); - s->scriptptr = p; -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(handle_script(struct httpd_state *s)) -{ - char *ptr; - - PT_BEGIN(&s->scriptpt); - - - while(s->file.len > 0) { - - /* Check if we should start executing a script. */ - if(*s->file.data == ISO_percent && - *(s->file.data + 1) == ISO_bang) { - s->scriptptr = s->file.data + 3; - s->scriptlen = s->file.len - 3; - if(*(s->scriptptr - 1) == ISO_colon) { - httpd_fs_open(s->scriptptr + 1, &s->file); - PT_WAIT_THREAD(&s->scriptpt, send_file(s)); - } else { - PT_WAIT_THREAD(&s->scriptpt, - httpd_cgi(s->scriptptr)(s, s->scriptptr)); - } - next_scriptstate(s); - - /* The script is over, so we reset the pointers and continue - sending the rest of the file. */ - s->file.data = s->scriptptr; - s->file.len = s->scriptlen; - } else { - /* See if we find the start of script marker in the block of HTML - to be sent. */ - - if(s->file.len > uip_mss()) { - s->len = uip_mss(); - } else { - s->len = s->file.len; - } - - if(*s->file.data == ISO_percent) { - ptr = strchr(s->file.data + 1, ISO_percent); - } else { - ptr = strchr(s->file.data, ISO_percent); - } - if(ptr != NULL && - ptr != s->file.data) { - s->len = (int)(ptr - s->file.data); - if(s->len >= uip_mss()) { - s->len = uip_mss(); - } - } - PT_WAIT_THREAD(&s->scriptpt, send_part_of_file(s)); - s->file.data += s->len; - s->file.len -= s->len; - - } - } - - PT_END(&s->scriptpt); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(send_headers(struct httpd_state *s, const char *statushdr)) -{ - char *ptr; - - PSOCK_BEGIN(&s->sout); - - PSOCK_SEND_STR(&s->sout, statushdr); - - ptr = strrchr(s->filename, ISO_period); - if(ptr == NULL) { - PSOCK_SEND_STR(&s->sout, http_content_type_binary); - } else if(strncmp(http_html, ptr, 5) == 0 || - strncmp(http_shtml, ptr, 6) == 0) { - PSOCK_SEND_STR(&s->sout, http_content_type_html); - } else if(strncmp(http_css, ptr, 4) == 0) { - PSOCK_SEND_STR(&s->sout, http_content_type_css); - } else if(strncmp(http_png, ptr, 4) == 0) { - PSOCK_SEND_STR(&s->sout, http_content_type_png); - } else if(strncmp(http_gif, ptr, 4) == 0) { - PSOCK_SEND_STR(&s->sout, http_content_type_gif); - } else if(strncmp(http_jpg, ptr, 4) == 0) { - PSOCK_SEND_STR(&s->sout, http_content_type_jpg); - } else { - PSOCK_SEND_STR(&s->sout, http_content_type_plain); - } - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(handle_output(struct httpd_state *s)) -{ - char *ptr; - - PT_BEGIN(&s->outputpt); - - if(!httpd_fs_open(s->filename, &s->file)) { - httpd_fs_open(http_404_html, &s->file); - strcpy(s->filename, http_404_html); - PT_WAIT_THREAD(&s->outputpt, - send_headers(s, - http_header_404)); - PT_WAIT_THREAD(&s->outputpt, - send_file(s)); - } else { - PT_WAIT_THREAD(&s->outputpt, - send_headers(s, - http_header_200)); - ptr = strchr(s->filename, ISO_period); - if(ptr != NULL && strncmp(ptr, http_shtml, 6) == 0) { - PT_INIT(&s->scriptpt); - PT_WAIT_THREAD(&s->outputpt, handle_script(s)); - } else { - PT_WAIT_THREAD(&s->outputpt, - send_file(s)); - } - } - PSOCK_CLOSE(&s->sout); - PT_END(&s->outputpt); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(handle_input(struct httpd_state *s)) -{ - PSOCK_BEGIN(&s->sin); - - PSOCK_READTO(&s->sin, ISO_space); - - - if(strncmp(s->inputbuf, http_get, 4) != 0) { - PSOCK_CLOSE_EXIT(&s->sin); - } - PSOCK_READTO(&s->sin, ISO_space); - - if(s->inputbuf[0] != ISO_slash) { - PSOCK_CLOSE_EXIT(&s->sin); - } - - if(s->inputbuf[1] == ISO_space) { - strncpy(s->filename, http_index_html, sizeof(s->filename)); - } else { - - s->inputbuf[PSOCK_DATALEN(&s->sin) - 1] = 0; - - /* Process any form input being sent to the server. */ - { - extern void vApplicationProcessFormInput( char *pcInputString ); - vApplicationProcessFormInput( s->inputbuf ); - } - - strncpy(s->filename, &s->inputbuf[0], sizeof(s->filename)); - } - - /* httpd_log_file(uip_conn->ripaddr, s->filename);*/ - - s->state = STATE_OUTPUT; - - while(1) { - PSOCK_READTO(&s->sin, ISO_nl); - - if(strncmp(s->inputbuf, http_referer, 8) == 0) { - s->inputbuf[PSOCK_DATALEN(&s->sin) - 2] = 0; - /* httpd_log(&s->inputbuf[9]);*/ - } - } - - PSOCK_END(&s->sin); -} -/*---------------------------------------------------------------------------*/ -static void -handle_connection(struct httpd_state *s) -{ - handle_input(s); - if(s->state == STATE_OUTPUT) { - handle_output(s); - } -} -/*---------------------------------------------------------------------------*/ -void -httpd_appcall(void) -{ - struct httpd_state *s = (struct httpd_state *)&(uip_conn->appstate); - - if(uip_closed() || uip_aborted() || uip_timedout()) { - } else if(uip_connected()) { - PSOCK_INIT(&s->sin, s->inputbuf, sizeof(s->inputbuf) - 1); - PSOCK_INIT(&s->sout, s->inputbuf, sizeof(s->inputbuf) - 1); - PT_INIT(&s->outputpt); - s->state = STATE_WAITING; - /* timer_set(&s->timer, CLOCK_SECOND * 100);*/ - s->timer = 0; - handle_connection(s); - } else if(s != NULL) { - if(uip_poll()) { - ++s->timer; - if(s->timer >= 20) { - uip_abort(); - } - } else { - s->timer = 0; - } - handle_connection(s); - } else { - uip_abort(); - } -} -/*---------------------------------------------------------------------------*/ -/** - * \brief Initialize the web server - * - * This function initializes the web server and should be - * called at system boot-up. - */ -void -httpd_init(void) -{ - uip_listen(HTONS(80)); -} -/*---------------------------------------------------------------------------*/ -/** @} */ diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/httpd.h b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/httpd.h deleted file mode 100644 index 7f7a6666e..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/httpd.h +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright (c) 2001-2005, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: httpd.h,v 1.2 2006/06/11 21:46:38 adam Exp $ - * - */ - -#ifndef __HTTPD_H__ -#define __HTTPD_H__ - -#include "psock.h" -#include "httpd-fs.h" - -struct httpd_state { - unsigned char timer; - struct psock sin, sout; - struct pt outputpt, scriptpt; - char inputbuf[50]; - char filename[20]; - char state; - struct httpd_fs_file file; - int len; - char *scriptptr; - int scriptlen; - - unsigned short count; -}; - -void httpd_init(void); -void httpd_appcall(void); - -void httpd_log(char *msg); -void httpd_log_file(u16_t *requester, char *file); - -#endif /* __HTTPD_H__ */ diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/makefsdata b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/makefsdata deleted file mode 100644 index 8d2715a8a..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/makefsdata +++ /dev/null @@ -1,78 +0,0 @@ -#!/usr/bin/perl - -open(OUTPUT, "> httpd-fsdata.c"); - -chdir("httpd-fs"); - -opendir(DIR, "."); -@files = grep { !/^\./ && !/(CVS|~)/ } readdir(DIR); -closedir(DIR); - -foreach $file (@files) { - - if(-d $file && $file !~ /^\./) { - print "Processing directory $file\n"; - opendir(DIR, $file); - @newfiles = grep { !/^\./ && !/(CVS|~)/ } readdir(DIR); - closedir(DIR); - printf "Adding files @newfiles\n"; - @files = (@files, map { $_ = "$file/$_" } @newfiles); - next; - } -} - -foreach $file (@files) { - if(-f $file) { - - print "Adding file $file\n"; - - open(FILE, $file) || die "Could not open file $file\n"; - - $file =~ s-^-/-; - $fvar = $file; - $fvar =~ s-/-_-g; - $fvar =~ s-\.-_-g; - # for AVR, add PROGMEM here - print(OUTPUT "static const unsigned char data".$fvar."[] = {\n"); - print(OUTPUT "\t/* $file */\n\t"); - for($j = 0; $j < length($file); $j++) { - printf(OUTPUT "%#02x, ", unpack("C", substr($file, $j, 1))); - } - printf(OUTPUT "0,\n"); - - - $i = 0; - while(read(FILE, $data, 1)) { - if($i == 0) { - print(OUTPUT "\t"); - } - printf(OUTPUT "%#02x, ", unpack("C", $data)); - $i++; - if($i == 10) { - print(OUTPUT "\n"); - $i = 0; - } - } - print(OUTPUT "0};\n\n"); - close(FILE); - push(@fvars, $fvar); - push(@pfiles, $file); - } -} - -for($i = 0; $i < @fvars; $i++) { - $file = $pfiles[$i]; - $fvar = $fvars[$i]; - - if($i == 0) { - $prevfile = "NULL"; - } else { - $prevfile = "file" . $fvars[$i - 1]; - } - print(OUTPUT "const struct httpd_fsdata_file file".$fvar."[] = {{$prevfile, data$fvar, "); - print(OUTPUT "data$fvar + ". (length($file) + 1) .", "); - print(OUTPUT "sizeof(data$fvar) - ". (length($file) + 1) ."}};\n\n"); -} - -print(OUTPUT "#define HTTPD_FS_ROOT file$fvars[$i - 1]\n\n"); -print(OUTPUT "#define HTTPD_FS_NUMFILES $i\n"); diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/makestrings b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/makestrings deleted file mode 100644 index 8a13c6d29..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/makestrings +++ /dev/null @@ -1,40 +0,0 @@ -#!/usr/bin/perl - - -sub stringify { - my $name = shift(@_); - open(OUTPUTC, "> $name.c"); - open(OUTPUTH, "> $name.h"); - - open(FILE, "$name"); - - while() { - if(/(.+) "(.+)"/) { - $var = $1; - $data = $2; - - $datan = $data; - $datan =~ s/\\r/\r/g; - $datan =~ s/\\n/\n/g; - $datan =~ s/\\01/\01/g; - $datan =~ s/\\0/\0/g; - - printf(OUTPUTC "const char $var\[%d] = \n", length($datan) + 1); - printf(OUTPUTC "/* \"$data\" */\n"); - printf(OUTPUTC "{"); - for($j = 0; $j < length($datan); $j++) { - printf(OUTPUTC "%#02x, ", unpack("C", substr($datan, $j, 1))); - } - printf(OUTPUTC "};\n"); - - printf(OUTPUTH "extern const char $var\[%d];\n", length($datan) + 1); - - } - } - close(OUTPUTC); - close(OUTPUTH); -} -stringify("http-strings"); - -exit 0; - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/uIP_Task.c b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/uIP_Task.c deleted file mode 100644 index 9bb89b5c1..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/uIP_Task.c +++ /dev/null @@ -1,244 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* Standard includes. */ -#include - -/* Scheduler includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "semphr.h" - -/* uip includes. */ -#include "uip.h" -#include "uip_arp.h" -#include "httpd.h" -#include "timer.h" -#include "clock-arch.h" - -/* Demo includes. */ -#include "EthDev_LPC17xx.h" -#include "EthDev.h" -#include "ParTest.h" - -/*-----------------------------------------------------------*/ - -/* How long to wait before attempting to connect the MAC again. */ -#define uipINIT_WAIT ( 100 / portTICK_PERIOD_MS ) - -/* Shortcut to the header within the Rx buffer. */ -#define xHeader ((struct uip_eth_hdr *) &uip_buf[ 0 ]) - -/* Standard constant. */ -#define uipTOTAL_FRAME_HEADER_SIZE 54 - -/*-----------------------------------------------------------*/ - -/* - * Setup the MAC address in the MAC itself, and in the uIP stack. - */ -static void prvSetMACAddress( void ); - -/* - * Port functions required by the uIP stack. - */ -void clock_init( void ); -clock_time_t clock_time( void ); - -/*-----------------------------------------------------------*/ - -/* The semaphore used by the ISR to wake the uIP task. */ -SemaphoreHandle_t xEMACSemaphore = NULL; - -/*-----------------------------------------------------------*/ - -void clock_init(void) -{ - /* This is done when the scheduler starts. */ -} -/*-----------------------------------------------------------*/ - -clock_time_t clock_time( void ) -{ - return xTaskGetTickCount(); -} -/*-----------------------------------------------------------*/ - -void vuIP_Task( void *pvParameters ) -{ -portBASE_TYPE i; -uip_ipaddr_t xIPAddr; -struct timer periodic_timer, arp_timer; -extern void ( vEMAC_ISR_Wrapper )( void ); - - ( void ) pvParameters; - - /* Initialise the uIP stack. */ - timer_set( &periodic_timer, configTICK_RATE_HZ / 2 ); - timer_set( &arp_timer, configTICK_RATE_HZ * 10 ); - uip_init(); - uip_ipaddr( xIPAddr, configIP_ADDR0, configIP_ADDR1, configIP_ADDR2, configIP_ADDR3 ); - uip_sethostaddr( xIPAddr ); - uip_ipaddr( xIPAddr, configNET_MASK0, configNET_MASK1, configNET_MASK2, configNET_MASK3 ); - uip_setnetmask( xIPAddr ); - httpd_init(); - - /* Create the semaphore used to wake the uIP task. */ - vSemaphoreCreateBinary( xEMACSemaphore ); - - /* Initialise the MAC. */ - while( lEMACInit() != pdPASS ) - { - vTaskDelay( uipINIT_WAIT ); - } - - portENTER_CRITICAL(); - { - EMAC->IntEnable = ( INT_RX_DONE | INT_TX_DONE ); - - /* Set the interrupt priority to the max permissible to cause some - interrupt nesting. */ - NVIC_SetPriority( ENET_IRQn, configEMAC_INTERRUPT_PRIORITY ); - - /* Enable the interrupt. */ - NVIC_EnableIRQ( ENET_IRQn ); - prvSetMACAddress(); - } - portEXIT_CRITICAL(); - - - for( ;; ) - { - /* Is there received data ready to be processed? */ - uip_len = ulGetEMACRxData(); - - if( ( uip_len > 0 ) && ( uip_buf != NULL ) ) - { - /* Standard uIP loop taken from the uIP manual. */ - if( xHeader->type == htons( UIP_ETHTYPE_IP ) ) - { - uip_arp_ipin(); - uip_input(); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - uip_arp_out(); - vSendEMACTxData( uip_len ); - } - } - else if( xHeader->type == htons( UIP_ETHTYPE_ARP ) ) - { - uip_arp_arpin(); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - vSendEMACTxData( uip_len ); - } - } - } - else - { - if( timer_expired( &periodic_timer ) && ( uip_buf != NULL ) ) - { - timer_reset( &periodic_timer ); - for( i = 0; i < UIP_CONNS; i++ ) - { - uip_periodic( i ); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - uip_arp_out(); - vSendEMACTxData( uip_len ); - } - } - - /* Call the ARP timer function every 10 seconds. */ - if( timer_expired( &arp_timer ) ) - { - timer_reset( &arp_timer ); - uip_arp_timer(); - } - } - else - { - /* We did not receive a packet, and there was no periodic - processing to perform. Block for a fixed period. If a packet - is received during this period we will be woken by the ISR - giving us the Semaphore. */ - xSemaphoreTake( xEMACSemaphore, configTICK_RATE_HZ / 2 ); - } - } - } -} -/*-----------------------------------------------------------*/ - -static void prvSetMACAddress( void ) -{ -struct uip_eth_addr xAddr; - - /* Configure the MAC address in the uIP stack. */ - xAddr.addr[ 0 ] = configMAC_ADDR0; - xAddr.addr[ 1 ] = configMAC_ADDR1; - xAddr.addr[ 2 ] = configMAC_ADDR2; - xAddr.addr[ 3 ] = configMAC_ADDR3; - xAddr.addr[ 4 ] = configMAC_ADDR4; - xAddr.addr[ 5 ] = configMAC_ADDR5; - uip_setethaddr( xAddr ); -} -/*-----------------------------------------------------------*/ - -void vApplicationProcessFormInput( char *pcInputString ) -{ -char *c; -extern void vParTestSetLEDState( long lState ); - - /* Process the form input sent by the IO page of the served HTML. */ - - c = strstr( pcInputString, "?" ); - if( c ) - { - /* Turn the FIO1 LED's on or off in accordance with the check box status. */ - if( strstr( c, "LED0=1" ) != NULL ) - { - vParTestSetLEDState( pdTRUE ); - } - else - { - vParTestSetLEDState( pdFALSE ); - } - } -} - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/uip-conf.h b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/uip-conf.h deleted file mode 100644 index b52b23fed..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/uip-conf.h +++ /dev/null @@ -1,159 +0,0 @@ -/** - * \addtogroup uipopt - * @{ - */ - -/** - * \name Project-specific configuration options - * @{ - * - * uIP has a number of configuration options that can be overridden - * for each project. These are kept in a project-specific uip-conf.h - * file and all configuration names have the prefix UIP_CONF. - */ - -/* - * Copyright (c) 2006, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: uip-conf.h,v 1.6 2006/06/12 08:00:31 adam Exp $ - */ - -/** - * \file - * An example uIP configuration file - * \author - * Adam Dunkels - */ - -#ifndef __UIP_CONF_H__ -#define __UIP_CONF_H__ - -#include - -#define UIP_CONF_EXTERNAL_BUFFER - -/** - * 8 bit datatype - * - * This typedef defines the 8-bit type used throughout uIP. - * - * \hideinitializer - */ -typedef uint8_t u8_t; - -/** - * 16 bit datatype - * - * This typedef defines the 16-bit type used throughout uIP. - * - * \hideinitializer - */ -typedef uint16_t u16_t; - -/** - * Statistics datatype - * - * This typedef defines the dataype used for keeping statistics in - * uIP. - * - * \hideinitializer - */ -typedef unsigned short uip_stats_t; - -/** - * Maximum number of TCP connections. - * - * \hideinitializer - */ -#define UIP_CONF_MAX_CONNECTIONS 40 - -/** - * Maximum number of listening TCP ports. - * - * \hideinitializer - */ -#define UIP_CONF_MAX_LISTENPORTS 40 - -/** - * uIP buffer size. - * - * \hideinitializer - */ -#define UIP_CONF_BUFFER_SIZE 1480 - -/** - * CPU byte order. - * - * \hideinitializer - */ -#define UIP_CONF_BYTE_ORDER LITTLE_ENDIAN - -/** - * Logging on or off - * - * \hideinitializer - */ -#define UIP_CONF_LOGGING 0 - -/** - * UDP support on or off - * - * \hideinitializer - */ -#define UIP_CONF_UDP 0 - -/** - * UDP checksums on or off - * - * \hideinitializer - */ -#define UIP_CONF_UDP_CHECKSUMS 1 - -/** - * uIP statistics on or off - * - * \hideinitializer - */ -#define UIP_CONF_STATISTICS 1 - -/* Here we include the header file for the application(s) we use in - our project. */ -/*#include "smtp.h"*/ -/*#include "hello-world.h"*/ -/*#include "telnetd.h"*/ -#include "webserver.h" -/*#include "dhcpc.h"*/ -/*#include "resolv.h"*/ -/*#include "webclient.h"*/ - -#endif /* __UIP_CONF_H__ */ - -/** @} */ -/** @} */ diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/webserver.h b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/webserver.h deleted file mode 100644 index 1acb290b8..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_Rowley/webserver/webserver.h +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright (c) 2002, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials provided - * with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: webserver.h,v 1.2 2006/06/11 21:46:38 adam Exp $ - * - */ -#ifndef __WEBSERVER_H__ -#define __WEBSERVER_H__ - -#include "httpd.h" - -typedef struct httpd_state uip_tcp_appstate_t; -/* UIP_APPCALL: the name of the application function. This function - must return void and take no arguments (i.e., C type "void - appfunc(void)"). */ -#ifndef UIP_APPCALL -#define UIP_APPCALL httpd_appcall -#endif - - -#endif /* __WEBSERVER_H__ */ diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/Flash.mac b/FreeRTOS/Demo/CORTEX_LPC1768_IAR/Flash.mac deleted file mode 100644 index 95eeeaa81..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/Flash.mac +++ /dev/null @@ -1,13 +0,0 @@ -execUserReset() -{ - __writeMemory32(0x00000000, 0xE000ED08, "Memory"); //Vector table remap at 0x00000000 -} - -execUserPreload() -{ - // If the MAM values was wrong, a dummy read is necessary to get the flash memory in sync. - __writeMemory32(0x00000001, 0x400FC040, "Memory"); // MEMMAP = 1 - __readMemory32(0x00000000, "Memory"); - __writeMemory32(0x00000000, 0xE000ED08, "Memory"); //Vector table remap at 0x00000000 -} - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/FreeRTOSConfig.h b/FreeRTOS/Demo/CORTEX_LPC1768_IAR/FreeRTOSConfig.h deleted file mode 100644 index 8c0234f30..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/FreeRTOSConfig.h +++ /dev/null @@ -1,142 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -#ifndef FREERTOS_CONFIG_H -#define FREERTOS_CONFIG_H - -/*----------------------------------------------------------- - * Application specific definitions. - * - * These definitions should be adjusted for your particular hardware and - * application requirements. - * - * THESE PARAMETERS ARE DESCRIBED WITHIN THE 'CONFIGURATION' SECTION OF THE - * FreeRTOS API DOCUMENTATION AVAILABLE ON THE FreeRTOS.org WEB SITE. - *----------------------------------------------------------*/ - -#define configUSE_PREEMPTION 1 -#define configUSE_IDLE_HOOK 0 -#define configMAX_PRIORITIES ( 5 ) -#define configUSE_TICK_HOOK 1 -#define configCPU_CLOCK_HZ ( ( unsigned long ) 100000000 ) -#define configTICK_RATE_HZ ( ( TickType_t ) 1000 ) -#define configMINIMAL_STACK_SIZE ( ( unsigned short ) 80 ) -#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 19 * 1024 ) ) -#define configMAX_TASK_NAME_LEN ( 12 ) -#define configUSE_TRACE_FACILITY 1 -#define configUSE_16_BIT_TICKS 0 -#define configIDLE_SHOULD_YIELD 0 -#define configUSE_CO_ROUTINES 0 -#define configUSE_MUTEXES 1 - -#define configMAX_CO_ROUTINE_PRIORITIES ( 2 ) - -#define configUSE_COUNTING_SEMAPHORES 0 -#define configUSE_ALTERNATIVE_API 0 -#define configCHECK_FOR_STACK_OVERFLOW 2 -#define configUSE_RECURSIVE_MUTEXES 1 -#define configQUEUE_REGISTRY_SIZE 10 -#define configGENERATE_RUN_TIME_STATS 1 - -/* Set the following definitions to 1 to include the API function, or zero -to exclude the API function. */ - -#define INCLUDE_vTaskPrioritySet 1 -#define INCLUDE_uxTaskPriorityGet 1 -#define INCLUDE_vTaskDelete 1 -#define INCLUDE_vTaskCleanUpResources 0 -#define INCLUDE_vTaskSuspend 1 -#define INCLUDE_vTaskDelayUntil 1 -#define INCLUDE_vTaskDelay 1 -#define INCLUDE_uxTaskGetStackHighWaterMark 1 - -/* This demo makes use of one or more example stats formatting functions. These -format the raw data provided by the uxTaskGetSystemState() function in to human -readable ASCII form. See the notes in the implementation of vTaskList() within -FreeRTOS/Source/tasks.c for limitations. */ -#define configUSE_STATS_FORMATTING_FUNCTIONS 1 - -/*----------------------------------------------------------- - * Ethernet configuration. - *-----------------------------------------------------------*/ - -/* MAC address configuration. */ -#define configMAC_ADDR0 0x00 -#define configMAC_ADDR1 0x12 -#define configMAC_ADDR2 0x13 -#define configMAC_ADDR3 0x10 -#define configMAC_ADDR4 0x15 -#define configMAC_ADDR5 0x11 - -/* IP address configuration. */ -#define configIP_ADDR0 192 -#define configIP_ADDR1 168 -#define configIP_ADDR2 0 -#define configIP_ADDR3 201 - -/* Netmask configuration. */ -#define configNET_MASK0 255 -#define configNET_MASK1 255 -#define configNET_MASK2 255 -#define configNET_MASK3 0 - -/* Use the system definition, if there is one */ -#ifdef __NVIC_PRIO_BITS - #define configPRIO_BITS __NVIC_PRIO_BITS -#else - #define configPRIO_BITS 5 /* 32 priority levels */ -#endif - -/* The lowest priority. */ -#define configKERNEL_INTERRUPT_PRIORITY ( 31 << (8 - configPRIO_BITS) ) -/* Priority 5, or 160 as only the top three bits are implemented. */ -/* !!!! configMAX_SYSCALL_INTERRUPT_PRIORITY must not be set to zero !!!! -See http://www.FreeRTOS.org/RTOS-Cortex-M3-M4.html. */ -#define configMAX_SYSCALL_INTERRUPT_PRIORITY ( 5 << (8 - configPRIO_BITS) ) - -/* Priorities passed to NVIC_SetPriority() do not require shifting as the -function does the shifting itself. Note these priorities need to be equal to -or lower than configMAX_SYSCALL_INTERRUPT_PRIORITY - therefore the numeric -value needs to be equal to or greater than 5 (on the Cortex-M3 the lower the -numeric value the higher the interrupt priority). */ -#define configEMAC_INTERRUPT_PRIORITY 5 -#define configUSB_INTERRUPT_PRIORITY 6 - - - -/*----------------------------------------------------------- - * Macros required to setup the timer for the run time stats. - *-----------------------------------------------------------*/ -#ifdef __ICCARM__ - #include "LPC17xx.h" - extern void vConfigureTimerForRunTimeStats( void ); - #define portCONFIGURE_TIMER_FOR_RUN_TIME_STATS() vConfigureTimerForRunTimeStats() - #define portGET_RUN_TIME_COUNTER_VALUE() TIM0->TC -#endif - - -#endif /* FREERTOS_CONFIG_H */ diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/LED.h b/FreeRTOS/Demo/CORTEX_LPC1768_IAR/LED.h deleted file mode 100644 index 3e1c6731c..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/LED.h +++ /dev/null @@ -1,35 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -#ifndef LED_HH -#define LED_HH - -void vToggleLED( unsigned long ulLED ); -void vSetLEDState( unsigned long ulLED, long lState ); -long lGetLEDState( unsigned long ulLED ); - -#endif diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/LPC1768_Flash.icf b/FreeRTOS/Demo/CORTEX_LPC1768_IAR/LPC1768_Flash.icf deleted file mode 100644 index 1f035952e..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/LPC1768_Flash.icf +++ /dev/null @@ -1,37 +0,0 @@ -/*###ICF### Section handled by ICF editor, don't touch! ****/ -/*-Editor annotation file-*/ -/* IcfEditorFile="$TOOLKIT_DIR$\config\ide\IcfEditor\cortex_v1_0.xml" */ -/*-Specials-*/ -define symbol __ICFEDIT_intvec_start__ = 0x00000000; -/*-Memory Regions-*/ -define symbol __ICFEDIT_region_ROM_start__ = 0x00000100; -define symbol __ICFEDIT_region_ROM_end__ = 0x0007FFFF; -define symbol __ICFEDIT_region_RAM_start__ = 0x10000000; -define symbol __ICFEDIT_region_RAM_end__ = 0x10007FFF; -/*-Sizes-*/ -define symbol __ICFEDIT_size_cstack__ = 0x800; -define symbol __ICFEDIT_size_heap__ = 0x400; -/**** End of ICF editor section. ###ICF###*/ - -define memory mem with size = 4G; -define region ROM_region = mem:[from __ICFEDIT_region_ROM_start__ to __ICFEDIT_region_ROM_end__]; -define region RAM_region = mem:[from __ICFEDIT_region_RAM_start__ to __ICFEDIT_region_RAM_end__]; - -define symbol _AHB_RAM_start__ = 0x2007C000; -define symbol _AHB_RAM_end__ = 0x20083FFF; -define region AHB_RAM_region = mem:[from _AHB_RAM_start__ to _AHB_RAM_end__]; - -define block CSTACK with alignment = 8, size = __ICFEDIT_size_cstack__ { }; -define block HEAP with alignment = 8, size = __ICFEDIT_size_heap__ { }; - -initialize by copy { readwrite }; -do not initialize { section .noinit }; -do not initialize { section USB_DMA_RAM }; - -place at address mem:__ICFEDIT_intvec_start__ { readonly section .intvec }; -place in ROM_region { readonly }; -place in RAM_region { readwrite, - block CSTACK, block HEAP }; -place in AHB_RAM_region - { readwrite data section AHB_RAM_MEMORY, section USB_DMA_RAM, section EMAC_DMA_RAM}; - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/LPC17xx.h b/FreeRTOS/Demo/CORTEX_LPC1768_IAR/LPC17xx.h deleted file mode 100644 index f2480b138..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/LPC17xx.h +++ /dev/null @@ -1,1081 +0,0 @@ -#ifndef __LPC17xx_H -#define __LPC17xx_H - -/* System Control Block (SCB) includes: - Flash Accelerator Module, Clocking and Power Control, External Interrupts, - Reset, System Control and Status -*/ -#define SCB_BASE_ADDR 0x400FC000 - -#define PCONP_PCTIM0 0x00000002 -#define PCONP_PCTIM1 0x00000004 -#define PCONP_PCUART0 0x00000008 -#define PCONP_PCUART1 0x00000010 -#define PCONP_PCPWM1 0x00000040 -#define PCONP_PCI2C0 0x00000080 -#define PCONP_PCSPI 0x00000100 -#define PCONP_PCRTC 0x00000200 -#define PCONP_PCSSP1 0x00000400 -#define PCONP_PCAD 0x00001000 -#define PCONP_PCCAN1 0x00002000 -#define PCONP_PCCAN2 0x00004000 -#define PCONP_PCGPIO 0x00008000 -#define PCONP_PCRIT 0x00010000 -#define PCONP_PCMCPWM 0x00020000 -#define PCONP_PCQEI 0x00040000 -#define PCONP_PCI2C1 0x00080000 -#define PCONP_PCSSP0 0x00200000 -#define PCONP_PCTIM2 0x00400000 -#define PCONP_PCTIM3 0x00800000 -#define PCONP_PCUART2 0x01000000 -#define PCONP_PCUART3 0x02000000 -#define PCONP_PCI2C2 0x04000000 -#define PCONP_PCI2S 0x08000000 -#define PCONP_PCGPDMA 0x20000000 -#define PCONP_PCENET 0x40000000 -#define PCONP_PCUSB 0x80000000 - -#define PLLCON_PLLE 0x00000001 -#define PLLCON_PLLC 0x00000002 -#define PLLCON_MASK 0x00000003 - -#define PLLCFG_MUL1 0x00000000 -#define PLLCFG_MUL2 0x00000001 -#define PLLCFG_MUL3 0x00000002 -#define PLLCFG_MUL4 0x00000003 -#define PLLCFG_MUL5 0x00000004 -#define PLLCFG_MUL6 0x00000005 -#define PLLCFG_MUL7 0x00000006 -#define PLLCFG_MUL8 0x00000007 -#define PLLCFG_MUL9 0x00000008 -#define PLLCFG_MUL10 0x00000009 -#define PLLCFG_MUL11 0x0000000A -#define PLLCFG_MUL12 0x0000000B -#define PLLCFG_MUL13 0x0000000C -#define PLLCFG_MUL14 0x0000000D -#define PLLCFG_MUL15 0x0000000E -#define PLLCFG_MUL16 0x0000000F -#define PLLCFG_MUL17 0x00000010 -#define PLLCFG_MUL18 0x00000011 -#define PLLCFG_MUL19 0x00000012 -#define PLLCFG_MUL20 0x00000013 -#define PLLCFG_MUL21 0x00000014 -#define PLLCFG_MUL22 0x00000015 -#define PLLCFG_MUL23 0x00000016 -#define PLLCFG_MUL24 0x00000017 -#define PLLCFG_MUL25 0x00000018 -#define PLLCFG_MUL26 0x00000019 -#define PLLCFG_MUL27 0x0000001A -#define PLLCFG_MUL28 0x0000001B -#define PLLCFG_MUL29 0x0000001C -#define PLLCFG_MUL30 0x0000001D -#define PLLCFG_MUL31 0x0000001E -#define PLLCFG_MUL32 0x0000001F -#define PLLCFG_MUL33 0x00000020 -#define PLLCFG_MUL34 0x00000021 -#define PLLCFG_MUL35 0x00000022 -#define PLLCFG_MUL36 0x00000023 - -#define PLLCFG_DIV1 0x00000000 -#define PLLCFG_DIV2 0x00010000 -#define PLLCFG_DIV3 0x00020000 -#define PLLCFG_DIV4 0x00030000 -#define PLLCFG_DIV5 0x00040000 -#define PLLCFG_DIV6 0x00050000 -#define PLLCFG_DIV7 0x00060000 -#define PLLCFG_DIV8 0x00070000 -#define PLLCFG_DIV9 0x00080000 -#define PLLCFG_DIV10 0x00090000 -#define PLLCFG_MASK 0x00FF7FFF - -#define PLLSTAT_MSEL_MASK 0x00007FFF -#define PLLSTAT_NSEL_MASK 0x00FF0000 - -#define PLLSTAT_PLLE (1 << 24) -#define PLLSTAT_PLLC (1 << 25) -#define PLLSTAT_PLOCK (1 << 26) - -#define PLLFEED_FEED1 0x000000AA -#define PLLFEED_FEED2 0x00000055 - -#define NVIC_IRQ_WDT 0u // IRQ0, exception number 16 -#define NVIC_IRQ_TIMER0 1u // IRQ1, exception number 17 -#define NVIC_IRQ_TIMER1 2u // IRQ2, exception number 18 -#define NVIC_IRQ_TIMER2 3u // IRQ3, exception number 19 -#define NVIC_IRQ_TIMER3 4u // IRQ4, exception number 20 -#define NVIC_IRQ_UART0 5u // IRQ5, exception number 21 -#define NVIC_IRQ_UART1 6u // IRQ6, exception number 22 -#define NVIC_IRQ_UART2 7u // IRQ7, exception number 23 -#define NVIC_IRQ_UART3 8u // IRQ8, exception number 24 -#define NVIC_IRQ_PWM1 9u // IRQ9, exception number 25 -#define NVIC_IRQ_I2C0 10u // IRQ10, exception number 26 -#define NVIC_IRQ_I2C1 11u // IRQ11, exception number 27 -#define NVIC_IRQ_I2C2 12u // IRQ12, exception number 28 -#define NVIC_IRQ_SPI 13u // IRQ13, exception number 29 -#define NVIC_IRQ_SSP0 14u // IRQ14, exception number 30 -#define NVIC_IRQ_SSP1 15u // IRQ15, exception number 31 -#define NVIC_IRQ_PLL0 16u // IRQ16, exception number 32 -#define NVIC_IRQ_RTC 17u // IRQ17, exception number 33 -#define NVIC_IRQ_EINT0 18u // IRQ18, exception number 34 -#define NVIC_IRQ_EINT1 19u // IRQ19, exception number 35 -#define NVIC_IRQ_EINT2 20u // IRQ20, exception number 36 -#define NVIC_IRQ_EINT3 21u // IRQ21, exception number 37 -#define NVIC_IRQ_ADC 22u // IRQ22, exception number 38 -#define NVIC_IRQ_BOD 23u // IRQ23, exception number 39 -#define NVIC_IRQ_USB 24u // IRQ24, exception number 40 -#define NVIC_IRQ_CAN 25u // IRQ25, exception number 41 -#define NVIC_IRQ_GPDMA 26u // IRQ26, exception number 42 -#define NVIC_IRQ_I2S 27u // IRQ27, exception number 43 -#define NVIC_IRQ_ETHERNET 28u // IRQ28, exception number 44 -#define NVIC_IRQ_RIT 29u // IRQ29, exception number 45 -#define NVIC_IRQ_MCPWM 30u // IRQ30, exception number 46 -#define NVIC_IRQ_QE 31u // IRQ31, exception number 47 -#define NVIC_IRQ_PLL1 32u // IRQ32, exception number 48 -#define NVIC_IRQ_USB_ACT 33u // IRQ33, exception number 49 -#define NVIC_IRQ_CAN_ACT 34u // IRQ34, exception number 50 - - -#endif // __LPC17xx_H - - -#ifndef CMSIS_17xx_H -#define CMSIS_17xx_H - -/****************************************************************************** - * @file: LPC17xx.h - * @purpose: CMSIS Cortex-M3 Core Peripheral Access Layer Header File for - * NXP LPC17xx Device Series - * @version: V1.1 - * @date: 14th May 2009 - *---------------------------------------------------------------------------- - * - * Copyright (C) 2008 ARM Limited. All rights reserved. - * - * ARM Limited (ARM) is supplying this software for use with Cortex-M3 - * processor based microcontrollers. This file can be freely distributed - * within development tools that are supporting such ARM based processors. - * - * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED - * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. - * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR - * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. - * - ******************************************************************************/ - - -#ifndef __LPC17xx_H__ -#define __LPC17xx_H__ - -/* - * ========================================================================== - * ---------- Interrupt Number Definition ----------------------------------- - * ========================================================================== - */ - -typedef enum IRQn -{ -/****** Cortex-M3 Processor Exceptions Numbers ***************************************************/ - NonMaskableInt_IRQn = -14, /*!< 2 Non Maskable Interrupt */ - MemoryManagement_IRQn = -12, /*!< 4 Cortex-M3 Memory Management Interrupt */ - BusFault_IRQn = -11, /*!< 5 Cortex-M3 Bus Fault Interrupt */ - UsageFault_IRQn = -10, /*!< 6 Cortex-M3 Usage Fault Interrupt */ - SVCall_IRQn = -5, /*!< 11 Cortex-M3 SV Call Interrupt */ - DebugMonitor_IRQn = -4, /*!< 12 Cortex-M3 Debug Monitor Interrupt */ - PendSV_IRQn = -2, /*!< 14 Cortex-M3 Pend SV Interrupt */ - SysTick_IRQn = -1, /*!< 15 Cortex-M3 System Tick Interrupt */ - -/****** LPC17xx Specific Interrupt Numbers *******************************************************/ - WDT_IRQn = 0, /*!< Watchdog Timer Interrupt */ - TIMER0_IRQn = 1, /*!< Timer0 Interrupt */ - TIMER1_IRQn = 2, /*!< Timer1 Interrupt */ - TIMER2_IRQn = 3, /*!< Timer2 Interrupt */ - TIMER3_IRQn = 4, /*!< Timer3 Interrupt */ - UART0_IRQn = 5, /*!< UART0 Interrupt */ - UART1_IRQn = 6, /*!< UART1 Interrupt */ - UART2_IRQn = 7, /*!< UART2 Interrupt */ - UART3_IRQn = 8, /*!< UART3 Interrupt */ - PWM1_IRQn = 9, /*!< PWM1 Interrupt */ - I2C0_IRQn = 10, /*!< I2C0 Interrupt */ - I2C1_IRQn = 11, /*!< I2C1 Interrupt */ - I2C2_IRQn = 12, /*!< I2C2 Interrupt */ - SPI_IRQn = 13, /*!< SPI Interrupt */ - SSP0_IRQn = 14, /*!< SSP0 Interrupt */ - SSP1_IRQn = 15, /*!< SSP1 Interrupt */ - PLL0_IRQn = 16, /*!< PLL0 Lock (Main PLL) Interrupt */ - RTC_IRQn = 17, /*!< Real Time Clock Interrupt */ - EINT0_IRQn = 18, /*!< External Interrupt 0 Interrupt */ - EINT1_IRQn = 19, /*!< External Interrupt 1 Interrupt */ - EINT2_IRQn = 20, /*!< External Interrupt 2 Interrupt */ - EINT3_IRQn = 21, /*!< External Interrupt 3 Interrupt */ - ADC_IRQn = 22, /*!< A/D Converter Interrupt */ - BOD_IRQn = 23, /*!< Brown-Out Detect Interrupt */ - USB_IRQn = 24, /*!< USB Interrupt */ - CAN_IRQn = 25, /*!< CAN Interrupt */ - DMA_IRQn = 26, /*!< General Purpose DMA Interrupt */ - I2S_IRQn = 27, /*!< I2S Interrupt */ - ENET_IRQn = 28, /*!< Ethernet Interrupt */ - RIT_IRQn = 29, /*!< Repetitive Interrupt Timer Interrupt */ - MCPWM_IRQn = 30, /*!< Motor Control PWM Interrupt */ - QEI_IRQn = 31, /*!< Quadrature Encoder Interface Interrupt */ - PLL1_IRQn = 32, /*!< PLL1 Lock (USB PLL) Interrupt */ -} IRQn_Type; - - -/* - * ========================================================================== - * ----------- Processor and Core Peripheral Section ------------------------ - * ========================================================================== - */ - -/* Configuration of the Cortex-M3 Processor and Core Peripherals */ -#define __MPU_PRESENT 1 /*!< MPU present or not */ -#define __NVIC_PRIO_BITS 5 /*!< Number of Bits used for Priority Levels */ -#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ - - -//#include "..\core_cm3.h" /* Cortex-M3 processor and core peripherals */ -#include "core_cm3.h" -#include "system_LPC17xx.h" /* System Header */ - - - -/** - * Initialize the system clock - * - * @param none - * @return none - * - * @brief Setup the microcontroller system. - * Initialize the System and update the SystemFrequency variable. - */ -extern void SystemInit (void); - - -/******************************************************************************/ -/* Device Specific Peripheral registers structures */ -/******************************************************************************/ - -/*------------- System Control (SC) ------------------------------------------*/ -typedef struct -{ - __IO uint32_t FLASHCFG; /* Flash Accelerator Module */ - uint32_t RESERVED0[31]; - __IO uint32_t PLL0CON; /* Clocking and Power Control */ - __IO uint32_t PLL0CFG; - __I uint32_t PLL0STAT; - __O uint32_t PLL0FEED; - uint32_t RESERVED1[4]; - __IO uint32_t PLL1CON; - __IO uint32_t PLL1CFG; - __I uint32_t PLL1STAT; - __O uint32_t PLL1FEED; - uint32_t RESERVED2[4]; - __IO uint32_t PCON; - __IO uint32_t PCONP; - uint32_t RESERVED3[15]; - __IO uint32_t CCLKCFG; - __IO uint32_t USBCLKCFG; - __IO uint32_t CLKSRCSEL; - uint32_t RESERVED4[12]; - __IO uint32_t EXTINT; /* External Interrupts */ - uint32_t RESERVED5; - __IO uint32_t EXTMODE; - __IO uint32_t EXTPOLAR; - uint32_t RESERVED6[12]; - __IO uint32_t RSID; /* Reset */ - uint32_t RESERVED7[7]; - __IO uint32_t SCS; /* Syscon Miscellaneous Registers */ - __IO uint32_t IRCTRIM; /* Clock Dividers */ - __IO uint32_t PCLKSEL0; - __IO uint32_t PCLKSEL1; - uint32_t RESERVED8[4]; - __IO uint32_t USBIntSt; /* USB Device/OTG Interrupt Register */ - uint32_t RESERVED9; - __IO uint32_t CLKOUTCFG; /* Clock Output Configuration */ - } SC_TypeDef; - -/*------------- Pin Connect Block (PINCON) -----------------------------------*/ -typedef struct -{ - __IO uint32_t PINSEL0; - __IO uint32_t PINSEL1; - __IO uint32_t PINSEL2; - __IO uint32_t PINSEL3; - __IO uint32_t PINSEL4; - __IO uint32_t PINSEL5; - __IO uint32_t PINSEL6; - __IO uint32_t PINSEL7; - __IO uint32_t PINSEL8; - __IO uint32_t PINSEL9; - __IO uint32_t PINSEL10; - uint32_t RESERVED0[5]; - __IO uint32_t PINMODE0; - __IO uint32_t PINMODE1; - __IO uint32_t PINMODE2; - __IO uint32_t PINMODE3; - __IO uint32_t PINMODE4; - __IO uint32_t PINMODE5; - __IO uint32_t PINMODE6; - __IO uint32_t PINMODE7; - __IO uint32_t PINMODE8; - __IO uint32_t PINMODE9; - __IO uint32_t PINMODE_OD0; - __IO uint32_t PINMODE_OD1; - __IO uint32_t PINMODE_OD2; - __IO uint32_t PINMODE_OD3; - __IO uint32_t PINMODE_OD4; -} PINCON_TypeDef; - -/*------------- General Purpose Input/Output (GPIO) --------------------------*/ -typedef struct -{ - __IO uint32_t FIODIR; - uint32_t RESERVED0[3]; - __IO uint32_t FIOMASK; - __IO uint32_t FIOPIN; - __IO uint32_t FIOSET; - __O uint32_t FIOCLR; -} GPIO_TypeDef; - -typedef struct -{ - __I uint32_t IntStatus; - __I uint32_t IO0IntStatR; - __I uint32_t IO0IntStatF; - __O uint32_t IO0IntClr; - __IO uint32_t IO0IntEnR; - __IO uint32_t IO0IntEnF; - uint32_t RESERVED0[3]; - __I uint32_t IO2IntStatR; - __I uint32_t IO2IntStatF; - __O uint32_t IO2IntClr; - __IO uint32_t IO2IntEnR; - __IO uint32_t IO2IntEnF; -} GPIOINT_TypeDef; - -/*------------- Timer (TIM) --------------------------------------------------*/ -typedef struct -{ - __IO uint32_t IR; - __IO uint32_t TCR; - __IO uint32_t TC; - __IO uint32_t PR; - __IO uint32_t PC; - __IO uint32_t MCR; - __IO uint32_t MR0; - __IO uint32_t MR1; - __IO uint32_t MR2; - __IO uint32_t MR3; - __IO uint32_t CCR; - __I uint32_t CR0; - __I uint32_t CR1; - uint32_t RESERVED0[2]; - __IO uint32_t EMR; - uint32_t RESERVED1[24]; - __IO uint32_t CTCR; -} TIM_TypeDef; - -/*------------- Pulse-Width Modulation (PWM) ---------------------------------*/ -typedef struct -{ - __IO uint32_t IR; - __IO uint32_t TCR; - __IO uint32_t TC; - __IO uint32_t PR; - __IO uint32_t PC; - __IO uint32_t MCR; - __IO uint32_t MR0; - __IO uint32_t MR1; - __IO uint32_t MR2; - __IO uint32_t MR3; - __IO uint32_t CCR; - __I uint32_t CR0; - __I uint32_t CR1; - __I uint32_t CR2; - __I uint32_t CR3; - __IO uint32_t MR4; - __IO uint32_t MR5; - __IO uint32_t MR6; - __IO uint32_t PCR; - __IO uint32_t LER; - uint32_t RESERVED0[7]; - __IO uint32_t CTCR; -} PWM_TypeDef; - -/*------------- Universal Asynchronous Receiver Transmitter (UART) -----------*/ -typedef struct -{ - union { - __I uint8_t RBR; - __O uint8_t THR; - __IO uint8_t DLL; - uint32_t RESERVED0; - }; - union { - __IO uint8_t DLM; - __IO uint32_t IER; - }; - union { - __I uint32_t IIR; - __O uint8_t FCR; - }; - __IO uint8_t LCR; - uint8_t RESERVED1[7]; - __IO uint8_t LSR; - uint8_t RESERVED2[7]; - __IO uint8_t SCR; - uint8_t RESERVED3[3]; - __IO uint32_t ACR; - __IO uint8_t ICR; - uint8_t RESERVED4[3]; - __IO uint8_t FDR; - uint8_t RESERVED5[7]; - __IO uint8_t TER; - uint8_t RESERVED6[27]; - __IO uint8_t RS485CTRL; - uint8_t RESERVED7[3]; - __IO uint8_t ADRMATCH; -} UART_TypeDef; - -typedef struct -{ - union { - __I uint8_t RBR; - __O uint8_t THR; - __IO uint8_t DLL; - uint32_t RESERVED0; - }; - union { - __IO uint8_t DLM; - __IO uint32_t IER; - }; - union { - __I uint32_t IIR; - __O uint8_t FCR; - }; - __IO uint8_t LCR; - uint8_t RESERVED1[3]; - __IO uint8_t MCR; - uint8_t RESERVED2[3]; - __IO uint8_t LSR; - uint8_t RESERVED3[3]; - __IO uint8_t MSR; - uint8_t RESERVED4[3]; - __IO uint8_t SCR; - uint8_t RESERVED5[3]; - __IO uint32_t ACR; - uint32_t RESERVED6; - __IO uint32_t FDR; - uint32_t RESERVED7; - __IO uint8_t TER; - uint8_t RESERVED8[27]; - __IO uint8_t RS485CTRL; - uint8_t RESERVED9[3]; - __IO uint8_t ADRMATCH; - uint8_t RESERVED10[3]; - __IO uint8_t RS485DLY; -} UART1_TypeDef; - -/*------------- Serial Peripheral Interface (SPI) ----------------------------*/ -typedef struct -{ - __IO uint32_t SPCR; - __I uint32_t SPSR; - __IO uint32_t SPDR; - __IO uint32_t SPCCR; - uint32_t RESERVED0[3]; - __IO uint32_t SPINT; -} SPI_TypeDef; - -/*------------- Synchronous Serial Communication (SSP) -----------------------*/ -typedef struct -{ - __IO uint32_t CR0; - __IO uint32_t CR1; - __IO uint32_t DR; - __I uint32_t SR; - __IO uint32_t CPSR; - __IO uint32_t IMSC; - __IO uint32_t RIS; - __IO uint32_t MIS; - __IO uint32_t ICR; - __IO uint32_t DMACR; -} SSP_TypeDef; - -/*------------- Inter-Integrated Circuit (I2C) -------------------------------*/ -typedef struct -{ - __IO uint32_t I2CONSET; - __I uint32_t I2STAT; - __IO uint32_t I2DAT; - __IO uint32_t I2ADR0; - __IO uint32_t I2SCLH; - __IO uint32_t I2SCLL; - __O uint32_t I2CONCLR; - __IO uint32_t MMCTRL; - __IO uint32_t I2ADR1; - __IO uint32_t I2ADR2; - __IO uint32_t I2ADR3; - __I uint32_t I2DATA_BUFFER; - __IO uint32_t I2MASK0; - __IO uint32_t I2MASK1; - __IO uint32_t I2MASK2; - __IO uint32_t I2MASK3; -} I2C_TypeDef; - -/*------------- Inter IC Sound (I2S) -----------------------------------------*/ -typedef struct -{ - __IO uint32_t I2SDAO; - __IO uint32_t I2SDAI; - __O uint32_t I2STXFIFO; - __I uint32_t I2SRXFIFO; - __I uint32_t I2SSTATE; - __IO uint32_t I2SDMA1; - __IO uint32_t I2SDMA2; - __IO uint32_t I2SIRQ; - __IO uint32_t I2STXRATE; - __IO uint32_t I2SRXRATE; - __IO uint32_t I2STXBITRATE; - __IO uint32_t I2SRXBITRATE; - __IO uint32_t I2STXMODE; - __IO uint32_t I2SRXMODE; -} I2S_TypeDef; - -/*------------- Repetitive Interrupt Timer (RIT) -----------------------------*/ -typedef struct -{ - __IO uint32_t RICOMPVAL; - __IO uint32_t RIMASK; - __IO uint8_t RICTRL; - uint8_t RESERVED0[3]; - __IO uint32_t RICOUNTER; -} RIT_TypeDef; - -/*------------- Real-Time Clock (RTC) ----------------------------------------*/ -typedef struct -{ - __IO uint8_t ILR; - uint8_t RESERVED0[3]; - __IO uint8_t CCR; - uint8_t RESERVED1[3]; - __IO uint8_t CIIR; - uint8_t RESERVED2[3]; - __IO uint8_t AMR; - uint8_t RESERVED3[3]; - __I uint32_t CTIME0; - __I uint32_t CTIME1; - __I uint32_t CTIME2; - __IO uint8_t SEC; - uint8_t RESERVED4[3]; - __IO uint8_t MIN; - uint8_t RESERVED5[3]; - __IO uint8_t HOUR; - uint8_t RESERVED6[3]; - __IO uint8_t DOM; - uint8_t RESERVED7[3]; - __IO uint8_t DOW; - uint8_t RESERVED8[3]; - __IO uint16_t DOY; - uint16_t RESERVED9; - __IO uint8_t MONTH; - uint8_t RESERVED10[3]; - __IO uint16_t YEAR; - uint16_t RESERVED11; - __IO uint32_t CALIBRATION; - __IO uint32_t GPREG0; - __IO uint32_t GPREG1; - __IO uint32_t GPREG2; - __IO uint32_t GPREG3; - __IO uint32_t GPREG4; - __IO uint8_t WAKEUPDIS; - uint8_t RESERVED12[3]; - __IO uint8_t PWRCTRL; - uint8_t RESERVED13[3]; - __IO uint8_t ALSEC; - uint8_t RESERVED14[3]; - __IO uint8_t ALMIN; - uint8_t RESERVED15[3]; - __IO uint8_t ALHOUR; - uint8_t RESERVED16[3]; - __IO uint8_t ALDOM; - uint8_t RESERVED17[3]; - __IO uint8_t ALDOW; - uint8_t RESERVED18[3]; - __IO uint16_t ALDOY; - uint16_t RESERVED19; - __IO uint8_t ALMON; - uint8_t RESERVED20[3]; - __IO uint16_t ALYEAR; - uint16_t RESERVED21; -} RTC_TypeDef; - -/*------------- Watchdog Timer (WDT) -----------------------------------------*/ -typedef struct -{ - __IO uint8_t WDMOD; - uint8_t RESERVED0[3]; - __IO uint32_t WDTC; - __O uint8_t WDFEED; - uint8_t RESERVED1[3]; - __I uint32_t WDTV; - __IO uint32_t WDCLKSEL; -} WDT_TypeDef; - -/*------------- Analog-to-Digital Converter (ADC) ----------------------------*/ -typedef struct -{ - __IO uint32_t ADCR; - __IO uint32_t ADGDR; - uint32_t RESERVED0; - __IO uint32_t ADINTEN; - __I uint32_t ADDR0; - __I uint32_t ADDR1; - __I uint32_t ADDR2; - __I uint32_t ADDR3; - __I uint32_t ADDR4; - __I uint32_t ADDR5; - __I uint32_t ADDR6; - __I uint32_t ADDR7; - __I uint32_t ADSTAT; - __IO uint32_t ADTRM; -} ADC_TypeDef; - -/*------------- Digital-to-Analog Converter (DAC) ----------------------------*/ -typedef struct -{ - __IO uint32_t DACR; - __IO uint32_t DACCTRL; - __IO uint16_t DACCNTVAL; -} DAC_TypeDef; - -/*------------- Motor Control Pulse-Width Modulation (MCPWM) -----------------*/ -typedef struct -{ - __I uint32_t MCCON; - __O uint32_t MCCON_SET; - __O uint32_t MCCON_CLR; - __I uint32_t MCCAPCON; - __O uint32_t MCCAPCON_SET; - __O uint32_t MCCAPCON_CLR; - __IO uint32_t MCTIM0; - __IO uint32_t MCTIM1; - __IO uint32_t MCTIM2; - __IO uint32_t MCPER0; - __IO uint32_t MCPER1; - __IO uint32_t MCPER2; - __IO uint32_t MCPW0; - __IO uint32_t MCPW1; - __IO uint32_t MCPW2; - __IO uint32_t MCDEADTIME; - __IO uint32_t MCCCP; - __IO uint32_t MCCR0; - __IO uint32_t MCCR1; - __IO uint32_t MCCR2; - __I uint32_t MCINTEN; - __O uint32_t MCINTEN_SET; - __O uint32_t MCINTEN_CLR; - __I uint32_t MCCNTCON; - __O uint32_t MCCNTCON_SET; - __O uint32_t MCCNTCON_CLR; - __I uint32_t MCINTFLAG; - __O uint32_t MCINTFLAG_SET; - __O uint32_t MCINTFLAG_CLR; - __O uint32_t MCCAP_CLR; -} MCPWM_TypeDef; - -/*------------- Quadrature Encoder Interface (QEI) ---------------------------*/ -typedef struct -{ - __O uint32_t QEICON; - __I uint32_t QEISTAT; - __IO uint32_t QEICONF; - __I uint32_t QEIPOS; - __IO uint32_t QEIMAXPOS; - __IO uint32_t CMPOS0; - __IO uint32_t CMPOS1; - __IO uint32_t CMPOS2; - __I uint32_t INXCNT; - __IO uint32_t INXCMP; - __IO uint32_t QEILOAD; - __I uint32_t QEITIME; - __I uint32_t QEIVEL; - __I uint32_t QEICAP; - __IO uint32_t VELCOMP; - __IO uint32_t FILTER; - uint32_t RESERVED0[998]; - __O uint32_t QEIIEC; - __O uint32_t QEIIES; - __I uint32_t QEIINTSTAT; - __I uint32_t QEIIE; - __O uint32_t QEICLR; - __O uint32_t QEISET; -} QEI_TypeDef; - -/*------------- Controller Area Network (CAN) --------------------------------*/ -typedef struct -{ - __IO uint32_t mask[512]; /* ID Masks */ -} CANAF_RAM_TypeDef; - -typedef struct /* Acceptance Filter Registers */ -{ - __IO uint32_t AFMR; - __IO uint32_t SFF_sa; - __IO uint32_t SFF_GRP_sa; - __IO uint32_t EFF_sa; - __IO uint32_t EFF_GRP_sa; - __IO uint32_t ENDofTable; - __I uint32_t LUTerrAd; - __I uint32_t LUTerr; -} CANAF_TypeDef; - -typedef struct /* Central Registers */ -{ - __I uint32_t CANTxSR; - __I uint32_t CANRxSR; - __I uint32_t CANMSR; -} CANCR_TypeDef; - -typedef struct /* Controller Registers */ -{ - __IO uint32_t MOD; - __O uint32_t CMR; - __IO uint32_t GSR; - __I uint32_t ICR; - __IO uint32_t IER; - __IO uint32_t BTR; - __IO uint32_t EWL; - __I uint32_t SR; - __IO uint32_t RFS; - __IO uint32_t RID; - __IO uint32_t RDA; - __IO uint32_t RDB; - __IO uint32_t TFI1; - __IO uint32_t TID1; - __IO uint32_t TDA1; - __IO uint32_t TDB1; - __IO uint32_t TFI2; - __IO uint32_t TID2; - __IO uint32_t TDA2; - __IO uint32_t TDB2; - __IO uint32_t TFI3; - __IO uint32_t TID3; - __IO uint32_t TDA3; - __IO uint32_t TDB3; -} CAN_TypeDef; - -/*------------- General Purpose Direct Memory Access (GPDMA) -----------------*/ -typedef struct /* Common Registers */ -{ - __I uint32_t DMACIntStat; - __I uint32_t DMACIntTCStat; - __O uint32_t DMACIntTCClear; - __I uint32_t DMACIntErrStat; - __O uint32_t DMACIntErrClr; - __I uint32_t DMACRawIntTCStat; - __I uint32_t DMACRawIntErrStat; - __I uint32_t DMACEnbldChns; - __IO uint32_t DMACSoftBReq; - __IO uint32_t DMACSoftSReq; - __IO uint32_t DMACSoftLBReq; - __IO uint32_t DMACSoftLSReq; - __IO uint32_t DMACConfig; - __IO uint32_t DMACSync; -} GPDMA_TypeDef; - -typedef struct /* Channel Registers */ -{ - __IO uint32_t DMACCSrcAddr; - __IO uint32_t DMACCDestAddr; - __IO uint32_t DMACCLLI; - __IO uint32_t DMACCControl; - __IO uint32_t DMACCConfig; -} GPDMACH_TypeDef; - -/*------------- Universal Serial Bus (USB) -----------------------------------*/ -typedef struct -{ - __I uint32_t HcRevision; /* USB Host Registers */ - __IO uint32_t HcControl; - __IO uint32_t HcCommandStatus; - __IO uint32_t HcInterruptStatus; - __IO uint32_t HcInterruptEnable; - __IO uint32_t HcInterruptDisable; - __IO uint32_t HcHCCA; - __I uint32_t HcPeriodCurrentED; - __IO uint32_t HcControlHeadED; - __IO uint32_t HcControlCurrentED; - __IO uint32_t HcBulkHeadED; - __IO uint32_t HcBulkCurrentED; - __I uint32_t HcDoneHead; - __IO uint32_t HcFmInterval; - __I uint32_t HcFmRemaining; - __I uint32_t HcFmNumber; - __IO uint32_t HcPeriodicStart; - __IO uint32_t HcLSTreshold; - __IO uint32_t HcRhDescriptorA; - __IO uint32_t HcRhDescriptorB; - __IO uint32_t HcRhStatus; - __IO uint32_t HcRhPortStatus1; - __IO uint32_t HcRhPortStatus2; - uint32_t RESERVED0[40]; - __I uint32_t Module_ID; - - __I uint32_t OTGIntSt; /* USB On-The-Go Registers */ - __IO uint32_t OTGIntEn; - __O uint32_t OTGIntSet; - __O uint32_t OTGIntClr; - __IO uint32_t OTGStCtrl; - __IO uint32_t OTGTmr; - uint32_t RESERVED1[58]; - - __I uint32_t USBDevIntSt; /* USB Device Interrupt Registers */ - __IO uint32_t USBDevIntEn; - __O uint32_t USBDevIntClr; - __O uint32_t USBDevIntSet; - - __O uint32_t USBCmdCode; /* USB Device SIE Command Registers */ - __I uint32_t USBCmdData; - - __I uint32_t USBRxData; /* USB Device Transfer Registers */ - __O uint32_t USBTxData; - __I uint32_t USBRxPLen; - __O uint32_t USBTxPLen; - __IO uint32_t USBCtrl; - __O uint32_t USBDevIntPri; - - __I uint32_t USBEpIntSt; /* USB Device Endpoint Interrupt Regs */ - __IO uint32_t USBEpIntEn; - __O uint32_t USBEpIntClr; - __O uint32_t USBEpIntSet; - __O uint32_t USBEpIntPri; - - __IO uint32_t USBReEp; /* USB Device Endpoint Realization Reg*/ - __O uint32_t USBEpInd; - __IO uint32_t USBMaxPSize; - - __I uint32_t USBDMARSt; /* USB Device DMA Registers */ - __O uint32_t USBDMARClr; - __O uint32_t USBDMARSet; - uint32_t RESERVED2[9]; - __IO uint32_t USBUDCAH; - __I uint32_t USBEpDMASt; - __O uint32_t USBEpDMAEn; - __O uint32_t USBEpDMADis; - __I uint32_t USBDMAIntSt; - __IO uint32_t USBDMAIntEn; - uint32_t RESERVED3[2]; - __I uint32_t USBEoTIntSt; - __O uint32_t USBEoTIntClr; - __O uint32_t USBEoTIntSet; - __I uint32_t USBNDDRIntSt; - __O uint32_t USBNDDRIntClr; - __O uint32_t USBNDDRIntSet; - __I uint32_t USBSysErrIntSt; - __O uint32_t USBSysErrIntClr; - __O uint32_t USBSysErrIntSet; - uint32_t RESERVED4[15]; - - __I uint32_t I2C_RX; /* USB OTG I2C Registers */ - __O uint32_t I2C_WO; - __I uint32_t I2C_STS; - __IO uint32_t I2C_CTL; - __IO uint32_t I2C_CLKHI; - __O uint32_t I2C_CLKLO; - uint32_t RESERVED5[823]; - - union { - __IO uint32_t USBClkCtrl; /* USB Clock Control Registers */ - __IO uint32_t OTGClkCtrl; - } ; - union { - __I uint32_t USBClkSt; - __I uint32_t OTGClkSt; - }; -} USB_TypeDef; - -/*------------- Ethernet Media Access Controller (EMAC) ----------------------*/ -typedef struct -{ - __IO uint32_t MAC1; /* MAC Registers */ - __IO uint32_t MAC2; - __IO uint32_t IPGT; - __IO uint32_t IPGR; - __IO uint32_t CLRT; - __IO uint32_t MAXF; - __IO uint32_t SUPP; - __IO uint32_t TEST; - __IO uint32_t MCFG; - __IO uint32_t MCMD; - __IO uint32_t MADR; - __O uint32_t MWTD; - __I uint32_t MRDD; - __I uint32_t MIND; - uint32_t RESERVED0[2]; - __IO uint32_t SA0; - __IO uint32_t SA1; - __IO uint32_t SA2; - uint32_t RESERVED1[45]; - __IO uint32_t Command; /* Control Registers */ - __I uint32_t Status; - __IO uint32_t RxDescriptor; - __IO uint32_t RxStatus; - __IO uint32_t RxDescriptorNumber; - __I uint32_t RxProduceIndex; - __IO uint32_t RxConsumeIndex; - __IO uint32_t TxDescriptor; - __IO uint32_t TxStatus; - __IO uint32_t TxDescriptorNumber; - __IO uint32_t TxProduceIndex; - __I uint32_t TxConsumeIndex; - uint32_t RESERVED2[10]; - __I uint32_t TSV0; - __I uint32_t TSV1; - __I uint32_t RSV; - uint32_t RESERVED3[3]; - __IO uint32_t FlowControlCounter; - __I uint32_t FlowControlStatus; - uint32_t RESERVED4[34]; - __IO uint32_t RxFilterCtrl; /* Rx Filter Registers */ - __IO uint32_t RxFilterWoLStatus; - __IO uint32_t RxFilterWoLClear; - uint32_t RESERVED5; - __IO uint32_t HashFilterL; - __IO uint32_t HashFilterH; - uint32_t RESERVED6[882]; - __I uint32_t IntStatus; /* Module Control Registers */ - __IO uint32_t IntEnable; - __O uint32_t IntClear; - __O uint32_t IntSet; - uint32_t RESERVED7; - __IO uint32_t PowerDown; - uint32_t RESERVED8; - __IO uint32_t Module_ID; -} EMAC_TypeDef; - - -/******************************************************************************/ -/* Peripheral memory map */ -/******************************************************************************/ -/* Base addresses */ -#define FLASH_BASE (0x00000000UL) -#define RAM_BASE (0x10000000UL) -#define GPIO_BASE (0x2009C000UL) -#define APB0_BASE (0x40000000UL) -#define APB1_BASE (0x40080000UL) -#define AHB_BASE (0x50000000UL) -#define CM3_BASE (0xE0000000UL) - -/* APB0 peripherals */ -#define WDT_BASE (APB0_BASE + 0x00000) -#define TIM0_BASE (APB0_BASE + 0x04000) -#define TIM1_BASE (APB0_BASE + 0x08000) -#define UART0_BASE (APB0_BASE + 0x0C000) -#define UART1_BASE (APB0_BASE + 0x10000) -#define PWM1_BASE (APB0_BASE + 0x18000) -#define I2C0_BASE (APB0_BASE + 0x1C000) -#define SPI_BASE (APB0_BASE + 0x20000) -#define RTC_BASE (APB0_BASE + 0x24000) -#define GPIOINT_BASE (APB0_BASE + 0x28080) -#define PINCON_BASE (APB0_BASE + 0x2C000) -#define SSP1_BASE (APB0_BASE + 0x30000) -#define ADC_BASE (APB0_BASE + 0x34000) -#define CANAF_RAM_BASE (APB0_BASE + 0x38000) -#define CANAF_BASE (APB0_BASE + 0x3C000) -#define CANCR_BASE (APB0_BASE + 0x40000) -#define CAN1_BASE (APB0_BASE + 0x44000) -#define CAN2_BASE (APB0_BASE + 0x48000) -#define I2C1_BASE (APB0_BASE + 0x5C000) - -/* APB1 peripherals */ -#define SSP0_BASE (APB1_BASE + 0x08000) -#define DAC_BASE (APB1_BASE + 0x0C000) -#define TIM2_BASE (APB1_BASE + 0x10000) -#define TIM3_BASE (APB1_BASE + 0x14000) -#define UART2_BASE (APB1_BASE + 0x18000) -#define UART3_BASE (APB1_BASE + 0x1C000) -#define I2C2_BASE (APB1_BASE + 0x20000) -#define I2S_BASE (APB1_BASE + 0x28000) -#define RIT_BASE (APB1_BASE + 0x30000) -#define MCPWM_BASE (APB1_BASE + 0x38000) -#define QEI_BASE (APB1_BASE + 0x3C000) -#define SC_BASE (APB1_BASE + 0x7C000) - -/* AHB peripherals */ -#define EMAC_BASE (AHB_BASE + 0x00000) -#define GPDMA_BASE (AHB_BASE + 0x04000) -#define GPDMACH0_BASE (AHB_BASE + 0x04100) -#define GPDMACH1_BASE (AHB_BASE + 0x04120) -#define GPDMACH2_BASE (AHB_BASE + 0x04140) -#define GPDMACH3_BASE (AHB_BASE + 0x04160) -#define GPDMACH4_BASE (AHB_BASE + 0x04180) -#define GPDMACH5_BASE (AHB_BASE + 0x041A0) -#define GPDMACH6_BASE (AHB_BASE + 0x041C0) -#define GPDMACH7_BASE (AHB_BASE + 0x041E0) -#define USB_BASE (AHB_BASE + 0x0C000) - -/* GPIOs */ -#define GPIO0_BASE (GPIO_BASE + 0x00000) -#define GPIO1_BASE (GPIO_BASE + 0x00020) -#define GPIO2_BASE (GPIO_BASE + 0x00040) -#define GPIO3_BASE (GPIO_BASE + 0x00060) -#define GPIO4_BASE (GPIO_BASE + 0x00080) - - -/******************************************************************************/ -/* Peripheral declaration */ -/******************************************************************************/ -#define SC (( SC_TypeDef *) SC_BASE) -#define GPIO0 (( GPIO_TypeDef *) GPIO0_BASE) -#define GPIO1 (( GPIO_TypeDef *) GPIO1_BASE) -#define GPIO2 (( GPIO_TypeDef *) GPIO2_BASE) -#define GPIO3 (( GPIO_TypeDef *) GPIO3_BASE) -#define GPIO4 (( GPIO_TypeDef *) GPIO4_BASE) -#define WDT (( WDT_TypeDef *) WDT_BASE) -#define TIM0 (( TIM_TypeDef *) TIM0_BASE) -#define TIM1 (( TIM_TypeDef *) TIM1_BASE) -#define TIM2 (( TIM_TypeDef *) TIM2_BASE) -#define TIM3 (( TIM_TypeDef *) TIM3_BASE) -#define RIT (( RIT_TypeDef *) RIT_BASE) -#define UART0 (( UART_TypeDef *) UART0_BASE) -#define UART1 (( UART1_TypeDef *) UART1_BASE) -#define UART2 (( UART_TypeDef *) UART2_BASE) -#define UART3 (( UART_TypeDef *) UART3_BASE) -#define PWM1 (( PWM_TypeDef *) PWM1_BASE) -#define I2C0 (( I2C_TypeDef *) I2C0_BASE) -#define I2C1 (( I2C_TypeDef *) I2C1_BASE) -#define I2C2 (( I2C_TypeDef *) I2C2_BASE) -#define I2S (( I2S_TypeDef *) I2S_BASE) -#define SPI (( SPI_TypeDef *) SPI_BASE) -#define RTC (( RTC_TypeDef *) RTC_BASE) -#define GPIOINT (( GPIOINT_TypeDef *) GPIOINT_BASE) -#define PINCON (( PINCON_TypeDef *) PINCON_BASE) -#define SSP0 (( SSP_TypeDef *) SSP0_BASE) -#define SSP1 (( SSP_TypeDef *) SSP1_BASE) -#define ADC (( ADC_TypeDef *) ADC_BASE) -#define DAC (( DAC_TypeDef *) DAC_BASE) -#define CANAF_RAM ((CANAF_RAM_TypeDef *) CANAF_RAM_BASE) -#define CANAF (( CANAF_TypeDef *) CANAF_BASE) -#define CANCR (( CANCR_TypeDef *) CANCR_BASE) -#define CAN1 (( CAN_TypeDef *) CAN1_BASE) -#define CAN2 (( CAN_TypeDef *) CAN2_BASE) -#define MCPWM (( MCPWM_TypeDef *) MCPWM_BASE) -#define QEI (( QEI_TypeDef *) QEI_BASE) -#define EMAC (( EMAC_TypeDef *) EMAC_BASE) -#define GPDMA (( GPDMA_TypeDef *) GPDMA_BASE) -#define GPDMACH0 (( GPDMACH_TypeDef *) GPDMACH0_BASE) -#define GPDMACH1 (( GPDMACH_TypeDef *) GPDMACH1_BASE) -#define GPDMACH2 (( GPDMACH_TypeDef *) GPDMACH2_BASE) -#define GPDMACH3 (( GPDMACH_TypeDef *) GPDMACH3_BASE) -#define GPDMACH4 (( GPDMACH_TypeDef *) GPDMACH4_BASE) -#define GPDMACH5 (( GPDMACH_TypeDef *) GPDMACH5_BASE) -#define GPDMACH6 (( GPDMACH_TypeDef *) GPDMACH6_BASE) -#define GPDMACH7 (( GPDMACH_TypeDef *) GPDMACH7_BASE) -#define USB (( USB_TypeDef *) USB_BASE) - -#endif // __LPC17xx_H__ - - -#endif diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/LPCUSB/USB_CDC.c b/FreeRTOS/Demo/CORTEX_LPC1768_IAR/LPCUSB/USB_CDC.c deleted file mode 100644 index 420c59194..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/LPCUSB/USB_CDC.c +++ /dev/null @@ -1,437 +0,0 @@ -/* - LPCUSB, an USB device driver for LPC microcontrollers - Copyright (C) 2006 Bertrik Sikken (bertrik@sikken.nl) - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - 3. The name of the author may not be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -/* - Minimal implementation of a USB serial port, using the CDC class. - This example application simply echoes everything it receives right back - to the host. - - Windows: - Extract the usbser.sys file from .cab file in C:\WINDOWS\Driver Cache\i386 - and store it somewhere (C:\temp is a good place) along with the usbser.inf - file. Then plug in the LPC176x and direct windows to the usbser driver. - Windows then creates an extra COMx port that you can open in a terminal - program, like hyperterminal. [Note for FreeRTOS users - the required .inf - file is included in the project directory.] - - Linux: - The device should be recognised automatically by the cdc_acm driver, - which creates a /dev/ttyACMx device file that acts just like a regular - serial port. - -*/ - -#include "FreeRTOS.h" -#include "task.h" -#include "queue.h" - -#include -#include - -#include "usbapi.h" -#include "usbdebug.h" -#include "usbstruct.h" - -#include "LPC17xx.h" - -#define usbMAX_SEND_BLOCK ( 20 / portTICK_PERIOD_MS ) -#define usbBUFFER_LEN ( 20 ) - -#define INCREMENT_ECHO_BY 1 -#define BAUD_RATE 115200 - -#define INT_IN_EP 0x81 -#define BULK_OUT_EP 0x05 -#define BULK_IN_EP 0x82 - -#define MAX_PACKET_SIZE 64 - -#define LE_WORD(x) ((x)&0xFF),((x)>>8) - -// CDC definitions -#define CS_INTERFACE 0x24 -#define CS_ENDPOINT 0x25 - -#define SET_LINE_CODING 0x20 -#define GET_LINE_CODING 0x21 -#define SET_CONTROL_LINE_STATE 0x22 - -// data structure for GET_LINE_CODING / SET_LINE_CODING class requests -typedef struct { - unsigned long dwDTERate; - unsigned char bCharFormat; - unsigned char bParityType; - unsigned char bDataBits; -} TLineCoding; - -static TLineCoding LineCoding = {115200, 0, 0, 8}; -static unsigned char abBulkBuf[64]; -static unsigned char abClassReqData[8]; - -static QueueHandle_t xRxedChars = NULL, xCharsForTx = NULL; - -// forward declaration of interrupt handler -void USBIntHandler(void); - -static const unsigned char abDescriptors[] = { - -// device descriptor - 0x12, - DESC_DEVICE, - LE_WORD(0x0101), // bcdUSB - 0x02, // bDeviceClass - 0x00, // bDeviceSubClass - 0x00, // bDeviceProtocol - MAX_PACKET_SIZE0, // bMaxPacketSize - LE_WORD(0xFFFF), // idVendor - LE_WORD(0x0005), // idProduct - LE_WORD(0x0100), // bcdDevice - 0x01, // iManufacturer - 0x02, // iProduct - 0x03, // iSerialNumber - 0x01, // bNumConfigurations - -// configuration descriptor - 0x09, - DESC_CONFIGURATION, - LE_WORD(67), // wTotalLength - 0x02, // bNumInterfaces - 0x01, // bConfigurationValue - 0x00, // iConfiguration - 0xC0, // bmAttributes - 0x32, // bMaxPower -// control class interface - 0x09, - DESC_INTERFACE, - 0x00, // bInterfaceNumber - 0x00, // bAlternateSetting - 0x01, // bNumEndPoints - 0x02, // bInterfaceClass - 0x02, // bInterfaceSubClass - 0x01, // bInterfaceProtocol, linux requires value of 1 for the cdc_acm module - 0x00, // iInterface -// header functional descriptor - 0x05, - CS_INTERFACE, - 0x00, - LE_WORD(0x0110), -// call management functional descriptor - 0x05, - CS_INTERFACE, - 0x01, - 0x01, // bmCapabilities = device handles call management - 0x01, // bDataInterface -// ACM functional descriptor - 0x04, - CS_INTERFACE, - 0x02, - 0x02, // bmCapabilities -// union functional descriptor - 0x05, - CS_INTERFACE, - 0x06, - 0x00, // bMasterInterface - 0x01, // bSlaveInterface0 -// notification EP - 0x07, - DESC_ENDPOINT, - INT_IN_EP, // bEndpointAddress - 0x03, // bmAttributes = intr - LE_WORD(8), // wMaxPacketSize - 0x0A, // bInterval -// data class interface descriptor - 0x09, - DESC_INTERFACE, - 0x01, // bInterfaceNumber - 0x00, // bAlternateSetting - 0x02, // bNumEndPoints - 0x0A, // bInterfaceClass = data - 0x00, // bInterfaceSubClass - 0x00, // bInterfaceProtocol - 0x00, // iInterface -// data EP OUT - 0x07, - DESC_ENDPOINT, - BULK_OUT_EP, // bEndpointAddress - 0x02, // bmAttributes = bulk - LE_WORD(MAX_PACKET_SIZE), // wMaxPacketSize - 0x00, // bInterval -// data EP in - 0x07, - DESC_ENDPOINT, - BULK_IN_EP, // bEndpointAddress - 0x02, // bmAttributes = bulk - LE_WORD(MAX_PACKET_SIZE), // wMaxPacketSize - 0x00, // bInterval - - // string descriptors - 0x04, - DESC_STRING, - LE_WORD(0x0409), - - 0x0E, - DESC_STRING, - 'L', 0, 'P', 0, 'C', 0, 'U', 0, 'S', 0, 'B', 0, - - 0x14, - DESC_STRING, - 'U', 0, 'S', 0, 'B', 0, 'S', 0, 'e', 0, 'r', 0, 'i', 0, 'a', 0, 'l', 0, - - 0x12, - DESC_STRING, - 'D', 0, 'E', 0, 'A', 0, 'D', 0, 'C', 0, '0', 0, 'D', 0, 'E', 0, - -// terminating zero - 0 -}; - - -/** - Local function to handle incoming bulk data - - @param [in] bEP - @param [in] bEPStatus - */ -static void BulkOut(unsigned char bEP, unsigned char bEPStatus) -{ - int i, iLen; - long lHigherPriorityTaskWoken = pdFALSE; - - ( void ) bEPStatus; - - // get data from USB into intermediate buffer - iLen = USBHwEPRead(bEP, abBulkBuf, sizeof(abBulkBuf)); - for (i = 0; i < iLen; i++) { - // put into queue - xQueueSendFromISR( xRxedChars, &( abBulkBuf[ i ] ), &lHigherPriorityTaskWoken ); - } - - portEND_SWITCHING_ISR( lHigherPriorityTaskWoken ); -} - - -/** - Local function to handle outgoing bulk data - - @param [in] bEP - @param [in] bEPStatus - */ -static void BulkIn(unsigned char bEP, unsigned char bEPStatus) -{ - int i, iLen; - long lHigherPriorityTaskWoken = pdFALSE; - - ( void ) bEPStatus; - - if (uxQueueMessagesWaitingFromISR( xCharsForTx ) == 0) { - // no more data, disable further NAK interrupts until next USB frame - USBHwNakIntEnable(0); - return; - } - - // get bytes from transmit FIFO into intermediate buffer - for (i = 0; i < MAX_PACKET_SIZE; i++) { - if( xQueueReceiveFromISR( xCharsForTx, ( &abBulkBuf[i] ), &lHigherPriorityTaskWoken ) != pdPASS ) - { - break; - } - } - iLen = i; - - // send over USB - if (iLen > 0) { - USBHwEPWrite(bEP, abBulkBuf, iLen); - } - - portEND_SWITCHING_ISR( lHigherPriorityTaskWoken ); -} - - -/** - Local function to handle the USB-CDC class requests - - @param [in] pSetup - @param [out] piLen - @param [out] ppbData - */ -static BOOL HandleClassRequest(TSetupPacket *pSetup, int *piLen, unsigned char **ppbData) -{ - switch (pSetup->bRequest) { - - // set line coding - case SET_LINE_CODING: -DBG("SET_LINE_CODING\n"); - memcpy((unsigned char *)&LineCoding, *ppbData, 7); - *piLen = 7; -DBG("dwDTERate=%u, bCharFormat=%u, bParityType=%u, bDataBits=%u\n", - LineCoding.dwDTERate, - LineCoding.bCharFormat, - LineCoding.bParityType, - LineCoding.bDataBits); - break; - - // get line coding - case GET_LINE_CODING: -DBG("GET_LINE_CODING\n"); - *ppbData = (unsigned char *)&LineCoding; - *piLen = 7; - break; - - // set control line state - case SET_CONTROL_LINE_STATE: - // bit0 = DTR, bit = RTS -DBG("SET_CONTROL_LINE_STATE %X\n", pSetup->wValue); - break; - - default: - return FALSE; - } - return TRUE; -} - - -/** - Writes one character to VCOM port - - @param [in] c character to write - @returns character written, or EOF if character could not be written - */ -int VCOM_putchar(int c) -{ -char cc = ( char ) c; - - if( xQueueSend( xCharsForTx, &cc, usbMAX_SEND_BLOCK ) == pdPASS ) - { - return c; - } - else - { - return EOF; - } -} - - -/** - Reads one character from VCOM port - - @returns character read, or EOF if character could not be read - */ -int VCOM_getchar(void) -{ - unsigned char c; - - /* Block the task until a character is available. */ - xQueueReceive( xRxedChars, &c, portMAX_DELAY ); - return c; -} - - -/** - Interrupt handler - - Simply calls the USB ISR - */ -//void USBIntHandler(void) -void USB_IRQHandler(void) -{ - USBHwISR(); -} - - -static void USBFrameHandler(unsigned short wFrame) -{ - ( void ) wFrame; - - if( uxQueueMessagesWaitingFromISR( xCharsForTx ) > 0 ) - { - // data available, enable NAK interrupt on bulk in - USBHwNakIntEnable(INACK_BI); - } -} - -void vUSBTask( void *pvParameters ) -{ - int c; - - /* Just to prevent compiler warnings about the unused parameter. */ - ( void ) pvParameters; - DBG("Initialising USB stack\n"); - - xRxedChars = xQueueCreate( usbBUFFER_LEN, sizeof( char ) ); - xCharsForTx = xQueueCreate( usbBUFFER_LEN, sizeof( char ) ); - - if( ( xRxedChars == NULL ) || ( xCharsForTx == NULL ) ) - { - /* Not enough heap available to create the buffer queues, can't do - anything so just delete ourselves. */ - vTaskDelete( NULL ); - } - - - // initialise stack - USBInit(); - - // register descriptors - USBRegisterDescriptors(abDescriptors); - - // register class request handler - USBRegisterRequestHandler(REQTYPE_TYPE_CLASS, HandleClassRequest, abClassReqData); - - // register endpoint handlers - USBHwRegisterEPIntHandler(INT_IN_EP, NULL); - USBHwRegisterEPIntHandler(BULK_IN_EP, BulkIn); - USBHwRegisterEPIntHandler(BULK_OUT_EP, BulkOut); - - // register frame handler - USBHwRegisterFrameHandler(USBFrameHandler); - - // enable bulk-in interrupts on NAKs - USBHwNakIntEnable(INACK_BI); - - DBG("Starting USB communication\n"); - - NVIC_SetPriority( USB_IRQn, configUSB_INTERRUPT_PRIORITY ); - NVIC_EnableIRQ( USB_IRQn ); - - // connect to bus - - DBG("Connecting to USB bus\n"); - USBHwConnect(TRUE); - - // echo any character received (do USB stuff in interrupt) - for( ;; ) - { - c = VCOM_getchar(); - if (c != EOF) - { - // Echo character back with INCREMENT_ECHO_BY offset, so for example if - // INCREMENT_ECHO_BY is 1 and 'A' is received, 'B' will be echoed back. - VCOM_putchar(c + INCREMENT_ECHO_BY ); - } - } -} - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/LPCUSB/type.h b/FreeRTOS/Demo/CORTEX_LPC1768_IAR/LPCUSB/type.h deleted file mode 100644 index 89d36850a..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/LPCUSB/type.h +++ /dev/null @@ -1,38 +0,0 @@ -/***************************************************************************** - * type.h: Type definition Header file for NXP LPC17xx Family - * Microprocessors - * - * Copyright(C) 2008, NXP Semiconductor - * All rights reserved. - * - * History - * 2008.08.21 ver 1.00 Prelimnary version, first Release - * -******************************************************************************/ -#ifndef __TYPE_H__ -#define __TYPE_H__ - -#ifndef NULL -#define NULL ((void *)0) -#endif - -#ifndef FALSE -#define FALSE (0) -#endif - -#ifndef TRUE -#define TRUE (1) -#endif - -typedef unsigned char BYTE; -typedef unsigned short WORD; -typedef unsigned long DWORD; -typedef unsigned int BOOL; - -typedef enum {RESET = 0, SET = !RESET} FlagStatus, ITStatus; -typedef enum {DISABLE = 0, ENABLE = !DISABLE} FunctionalState; - -/* Pointer to Function returning Void (any number of parameters) */ -typedef void (*PFV)(); - -#endif /* __TYPE_H__ */ diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/LPCUSB/usbapi.h b/FreeRTOS/Demo/CORTEX_LPC1768_IAR/LPCUSB/usbapi.h deleted file mode 100644 index 050f0d95b..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/LPCUSB/usbapi.h +++ /dev/null @@ -1,118 +0,0 @@ -/* - LPCUSB, an USB device driver for LPC microcontrollers - Copyright (C) 2006 Bertrik Sikken (bertrik@sikken.nl) - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - 3. The name of the author may not be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -/** - @file -*/ - -#include "usbstruct.h" // for TSetupPacket - -/************************************************************************* - USB configuration -**************************************************************************/ - -#define MAX_PACKET_SIZE0 64 /**< maximum packet size for EP 0 */ - -/************************************************************************* - USB hardware interface -**************************************************************************/ - -// endpoint status sent through callback -#define EP_STATUS_DATA (1<<0) /**< EP has data */ -#define EP_STATUS_STALLED (1<<1) /**< EP is stalled */ -#define EP_STATUS_SETUP (1<<2) /**< EP received setup packet */ -#define EP_STATUS_ERROR (1<<3) /**< EP data was overwritten by setup packet */ -#define EP_STATUS_NACKED (1<<4) /**< EP sent NAK */ - -// device status sent through callback -#define DEV_STATUS_CONNECT (1<<0) /**< device just got connected */ -#define DEV_STATUS_SUSPEND (1<<2) /**< device entered suspend state */ -#define DEV_STATUS_RESET (1<<4) /**< device just got reset */ - -// interrupt bits for NACK events in USBHwNakIntEnable -// (these bits conveniently coincide with the LPC176x USB controller bit) -#define INACK_CI (1<<1) /**< interrupt on NACK for control in */ -#define INACK_CO (1<<2) /**< interrupt on NACK for control out */ -#define INACK_II (1<<3) /**< interrupt on NACK for interrupt in */ -#define INACK_IO (1<<4) /**< interrupt on NACK for interrupt out */ -#define INACK_BI (1<<5) /**< interrupt on NACK for bulk in */ -#define INACK_BO (1<<6) /**< interrupt on NACK for bulk out */ - -BOOL USBHwInit (void); -void USBHwISR (void); - -void USBHwNakIntEnable (unsigned char bIntBits); - -void USBHwConnect (BOOL fConnect); - -void USBHwSetAddress (unsigned char bAddr); -void USBHwConfigDevice (BOOL fConfigured); - -// endpoint operations -void USBHwEPConfig (unsigned char bEP, unsigned short wMaxPacketSize); -int USBHwEPRead (unsigned char bEP, unsigned char *pbBuf, int iMaxLen); -int USBHwEPWrite (unsigned char bEP, unsigned char *pbBuf, int iLen); -void USBHwEPStall (unsigned char bEP, BOOL fStall); -unsigned char USBHwEPGetStatus (unsigned char bEP); - -/** Endpoint interrupt handler callback */ -typedef void (TFnEPIntHandler) (unsigned char bEP, unsigned char bEPStatus); -void USBHwRegisterEPIntHandler (unsigned char bEP, TFnEPIntHandler *pfnHandler); - -/** Device status handler callback */ -typedef void (TFnDevIntHandler) (unsigned char bDevStatus); -void USBHwRegisterDevIntHandler (TFnDevIntHandler *pfnHandler); - -/** Frame event handler callback */ -typedef void (TFnFrameHandler)(unsigned short wFrame); -void USBHwRegisterFrameHandler(TFnFrameHandler *pfnHandler); - - -/************************************************************************* - USB application interface -**************************************************************************/ - -// initialise the complete stack, including HW -BOOL USBInit(void); - -/** Request handler callback (standard, vendor, class) */ -typedef BOOL (TFnHandleRequest)(TSetupPacket *pSetup, int *piLen, unsigned char **ppbData); -void USBRegisterRequestHandler(int iType, TFnHandleRequest *pfnHandler, unsigned char *pbDataStore); -void USBRegisterCustomReqHandler(TFnHandleRequest *pfnHandler); - -/** Descriptor handler callback */ -typedef BOOL (TFnGetDescriptor)(unsigned short wTypeIndex, unsigned short wLangID, int *piLen, unsigned char **ppbData); - -/** Default standard request handler */ -BOOL USBHandleStandardRequest(TSetupPacket *pSetup, int *piLen, unsigned char **ppbData); - -/** Default EP0 handler */ -void USBHandleControlTransfer(unsigned char bEP, unsigned char bEPStat); - -/** Descriptor handling */ -void USBRegisterDescriptors(const unsigned char *pabDescriptors); -BOOL USBGetDescriptor(unsigned short wTypeIndex, unsigned short wLangID, int *piLen, unsigned char **ppbData); diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/LPCUSB/usbcontrol.c b/FreeRTOS/Demo/CORTEX_LPC1768_IAR/LPCUSB/usbcontrol.c deleted file mode 100644 index d78e553ec..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/LPCUSB/usbcontrol.c +++ /dev/null @@ -1,246 +0,0 @@ -/* - LPCUSB, an USB device driver for LPC microcontrollers - Copyright (C) 2006 Bertrik Sikken (bertrik@sikken.nl) - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - 3. The name of the author may not be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - - -/** @file - Control transfer handler. - - This module handles control transfers and is normally installed on the - endpoint 0 callback. - - Control transfers can be of the following type: - 0 Standard; - 1 Class; - 2 Vendor; - 3 Reserved. - - A callback can be installed for each of these control transfers using - USBRegisterRequestHandler. - When an OUT request arrives, data is collected in the data store provided - with the USBRegisterRequestHandler call. When the transfer is done, the - callback is called. - When an IN request arrives, the callback is called immediately to either - put the control transfer data in the data store, or to get a pointer to - control transfer data. The data is then packetised and sent to the host. -*/ - -#include "usbdebug.h" - -#include "usbstruct.h" -#include "usbapi.h" - - - -#define MAX_CONTROL_SIZE 128 /**< maximum total size of control transfer data */ -#define MAX_REQ_HANDLERS 4 /**< standard, class, vendor, reserved */ - -static TSetupPacket Setup; /**< setup packet */ - -static unsigned char *pbData; /**< pointer to data buffer */ -static int iResidue; /**< remaining bytes in buffer */ -static int iLen; /**< total length of control transfer */ - -/** Array of installed request handler callbacks */ -static TFnHandleRequest *apfnReqHandlers[4] = {NULL, NULL, NULL, NULL}; -/** Array of installed request data pointers */ -static unsigned char *apbDataStore[4] = {NULL, NULL, NULL, NULL}; - -/** - Local function to handle a request by calling one of the installed - request handlers. - - In case of data going from host to device, the data is at *ppbData. - In case of data going from device to host, the handler can either - choose to write its data at *ppbData or update the data pointer. - - @param [in] pSetup The setup packet - @param [in,out] *piLen Pointer to data length - @param [in,out] ppbData Data buffer. - - @return TRUE if the request was handles successfully - */ -static BOOL _HandleRequest(TSetupPacket *pSetup, int *piLen, unsigned char **ppbData) -{ - TFnHandleRequest *pfnHandler; - int iType; - - iType = REQTYPE_GET_TYPE(pSetup->bmRequestType); - pfnHandler = apfnReqHandlers[iType]; - if (pfnHandler == NULL) { - DBG("No handler for reqtype %d\n", iType); - return FALSE; - } - - return pfnHandler(pSetup, piLen, ppbData); -} - - -/** - Local function to stall the control endpoint - - @param [in] bEPStat Endpoint status - */ -static void StallControlPipe(unsigned char bEPStat) -{ - unsigned char *pb; - int i; - - USBHwEPStall(0x80, TRUE); - -// dump setup packet - DBG("STALL on ["); - pb = (unsigned char *)&Setup; - for (i = 0; i < 8; i++) { - DBG(" %02x", *pb++); - } - DBG("] stat=%x\n", bEPStat); -} - - -/** - Sends next chunk of data (possibly 0 bytes) to host - */ -static void DataIn(void) -{ - int iChunk; - - if( MAX_PACKET_SIZE0 < iResidue ) - { - iChunk = MAX_PACKET_SIZE0; - } - else - { - iChunk = iResidue; - } - - USBHwEPWrite(0x80, pbData, iChunk); - pbData += iChunk; - iResidue -= iChunk; -} - - -/** - * Handles IN/OUT transfers on EP0 - * - * @param [in] bEP Endpoint address - * @param [in] bEPStat Endpoint status - */ -void USBHandleControlTransfer(unsigned char bEP, unsigned char bEPStat) -{ - int iChunk, iType; - - if (bEP == 0x00) { - // OUT transfer - if (bEPStat & EP_STATUS_SETUP) { - // setup packet, reset request message state machine - USBHwEPRead(0x00, (unsigned char *)&Setup, sizeof(Setup)); - DBG("S%x", Setup.bRequest); - - // defaults for data pointer and residue - iType = REQTYPE_GET_TYPE(Setup.bmRequestType); - pbData = apbDataStore[iType]; - iResidue = Setup.wLength; - iLen = Setup.wLength; - - if ((Setup.wLength == 0) || - (REQTYPE_GET_DIR(Setup.bmRequestType) == REQTYPE_DIR_TO_HOST)) { - // ask installed handler to process request - if (!_HandleRequest(&Setup, &iLen, &pbData)) { - DBG("_HandleRequest1 failed\n"); - StallControlPipe(bEPStat); - return; - } - // send smallest of requested and offered length - if( iLen < Setup.wLength ) - { - iResidue = iLen; - } - else - { - iResidue = Setup.wLength; - } - - // send first part (possibly a zero-length status message) - DataIn(); - } - } - else { - if (iResidue > 0) { - // store data - iChunk = USBHwEPRead(0x00, pbData, iResidue); - if (iChunk < 0) { - StallControlPipe(bEPStat); - return; - } - pbData += iChunk; - iResidue -= iChunk; - if (iResidue == 0) { - // received all, send data to handler - iType = REQTYPE_GET_TYPE(Setup.bmRequestType); - pbData = apbDataStore[iType]; - if (!_HandleRequest(&Setup, &iLen, &pbData)) { - DBG("_HandleRequest2 failed\n"); - StallControlPipe(bEPStat); - return; - } - // send status to host - DataIn(); - } - } - else { - // absorb zero-length status message - iChunk = USBHwEPRead(0x00, NULL, 0); - DBG(iChunk > 0 ? "?" : ""); - } - } - } - else if (bEP == 0x80) { - // IN transfer - // send more data if available (possibly a 0-length packet) - DataIn(); - } - else { - ASSERT(FALSE); - } -} - - -/** - Registers a callback for handling requests - - @param [in] iType Type of request, e.g. REQTYPE_TYPE_STANDARD - @param [in] *pfnHandler Callback function pointer - @param [in] *pbDataStore Data storage area for this type of request - */ -void USBRegisterRequestHandler(int iType, TFnHandleRequest *pfnHandler, unsigned char *pbDataStore) -{ - ASSERT(iType >= 0); - ASSERT(iType < 4); - apfnReqHandlers[iType] = pfnHandler; - apbDataStore[iType] = pbDataStore; -} - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/LPCUSB/usbdebug.h b/FreeRTOS/Demo/CORTEX_LPC1768_IAR/LPCUSB/usbdebug.h deleted file mode 100644 index 490f0a7f7..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/LPCUSB/usbdebug.h +++ /dev/null @@ -1,41 +0,0 @@ -/* - LPCUSB, an USB device driver for LPC microcontrollers - Copyright (C) 2006 Bertrik Sikken (bertrik@sikken.nl) - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - 3. The name of the author may not be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -// CodeRed - comment out this printf, as will use real one from stdio.h -// to implement output via semihosting - -//int printf(const char *format, ...); -# include - -#ifdef _DEBUG -#define DBG printf -#define ASSERT(x) if(!(x)){DBG("\nAssertion '%s' failed in %s:%s#%d!\n",#x,__FILE__,__FUNCTION__,__LINE__);while(1);} -#else -#define DBG(...) -#define ASSERT(x) -#endif - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/LPCUSB/usbhw_lpc.c b/FreeRTOS/Demo/CORTEX_LPC1768_IAR/LPCUSB/usbhw_lpc.c deleted file mode 100644 index 3105685f5..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/LPCUSB/usbhw_lpc.c +++ /dev/null @@ -1,521 +0,0 @@ -/* - LPCUSB, an USB device driver for LPC microcontrollers - Copyright (C) 2006 Bertrik Sikken (bertrik@sikken.nl) - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - 3. The name of the author may not be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - - -/** @file - USB hardware layer - */ - - -#include "usbdebug.h" -#include "usbhw_lpc.h" -#include "usbapi.h" - -/** Installed device interrupt handler */ -static TFnDevIntHandler *_pfnDevIntHandler = NULL; -/** Installed endpoint interrupt handlers */ -static TFnEPIntHandler *_apfnEPIntHandlers[16]; -/** Installed frame interrupt handlers */ -static TFnFrameHandler *_pfnFrameHandler = NULL; - -/** convert from endpoint address to endpoint index */ -#define EP2IDX(bEP) ((((bEP)&0xF)<<1)|(((bEP)&0x80)>>7)) -/** convert from endpoint index to endpoint address */ -#define IDX2EP(idx) ((((idx)<<7)&0x80)|(((idx)>>1)&0xF)) - - - -/** - Local function to wait for a device interrupt (and clear it) - - @param [in] dwIntr Bitmask of interrupts to wait for - */ -static void Wait4DevInt(unsigned long dwIntr) -{ - // wait for specific interrupt - while ((USB->USBDevIntSt & dwIntr) != dwIntr); - // clear the interrupt bits - USB->USBDevIntClr = dwIntr; -} - - -/** - Local function to send a command to the USB protocol engine - - @param [in] bCmd Command to send - */ -static void USBHwCmd(unsigned char bCmd) -{ - // clear CDFULL/CCEMTY - USB->USBDevIntClr = CDFULL | CCEMTY; - // write command code - USB->USBCmdCode = 0x00000500 | (bCmd << 16); - Wait4DevInt(CCEMTY); -} - - -/** - Local function to send a command + data to the USB protocol engine - - @param [in] bCmd Command to send - @param [in] bData Data to send - */ -static void USBHwCmdWrite(unsigned char bCmd, unsigned short bData) -{ - // write command code - USBHwCmd(bCmd); - - // write command data - USB->USBCmdCode = 0x00000100 | (bData << 16); - Wait4DevInt(CCEMTY); -} - - -/** - Local function to send a command to the USB protocol engine and read data - - @param [in] bCmd Command to send - - @return the data - */ -static unsigned char USBHwCmdRead(unsigned char bCmd) -{ - // write command code - USBHwCmd(bCmd); - - // get data - USB->USBCmdCode = 0x00000200 | (bCmd << 16); - Wait4DevInt(CDFULL); - return USB->USBCmdData; -} - - -/** - 'Realizes' an endpoint, meaning that buffer space is reserved for - it. An endpoint needs to be realised before it can be used. - - From experiments, it appears that a USB reset causes USBReEP to - re-initialise to 3 (= just the control endpoints). - However, a USB bus reset does not disturb the USBMaxPSize settings. - - @param [in] idx Endpoint index - @param [in] wMaxPSize Maximum packet size for this endpoint - */ -static void USBHwEPRealize(int idx, unsigned short wMaxPSize) -{ - USB->USBReEP |= (1 << idx); - USB->USBEpInd = idx; - USB->USBMaxPSize = wMaxPSize; - Wait4DevInt(EP_RLZED); -} - - -/** - Enables or disables an endpoint - - @param [in] idx Endpoint index - @param [in] fEnable TRUE to enable, FALSE to disable - */ -static void USBHwEPEnable(int idx, BOOL fEnable) -{ - USBHwCmdWrite(CMD_EP_SET_STATUS | idx, fEnable ? 0 : EP_DA); -} - - -/** - Configures an endpoint and enables it - - @param [in] bEP Endpoint number - @param [in] wMaxPacketSize Maximum packet size for this EP - */ -void USBHwEPConfig(unsigned char bEP, unsigned short wMaxPacketSize) -{ - int idx; - - idx = EP2IDX(bEP); - - // realise EP - USBHwEPRealize(idx, wMaxPacketSize); - - // enable EP - USBHwEPEnable(idx, TRUE); -} - - -/** - Registers an endpoint event callback - - @param [in] bEP Endpoint number - @param [in] pfnHandler Callback function - */ -void USBHwRegisterEPIntHandler(unsigned char bEP, TFnEPIntHandler *pfnHandler) -{ - int idx; - - idx = EP2IDX(bEP); - - ASSERT(idx<32); - - /* add handler to list of EP handlers */ - _apfnEPIntHandlers[idx / 2] = pfnHandler; - - /* enable EP interrupt */ - USB->USBEpIntEn |= (1 << idx); - USB->USBDevIntEn |= EP_SLOW; - - DBG("Registered handler for EP 0x%x\n", bEP); -} - - -/** - Registers an device status callback - - @param [in] pfnHandler Callback function - */ -void USBHwRegisterDevIntHandler(TFnDevIntHandler *pfnHandler) -{ - _pfnDevIntHandler = pfnHandler; - - // enable device interrupt - USB->USBDevIntEn |= DEV_STAT; - - DBG("Registered handler for device status\n"); -} - - -/** - Registers the frame callback - - @param [in] pfnHandler Callback function - */ -void USBHwRegisterFrameHandler(TFnFrameHandler *pfnHandler) -{ - _pfnFrameHandler = pfnHandler; - - // enable device interrupt - USB->USBDevIntEn |= FRAME; - - DBG("Registered handler for frame\n"); -} - - -/** - Sets the USB address. - - @param [in] bAddr Device address to set - */ -void USBHwSetAddress(unsigned char bAddr) -{ - USBHwCmdWrite(CMD_DEV_SET_ADDRESS, DEV_EN | bAddr); -} - - -/** - Connects or disconnects from the USB bus - - @param [in] fConnect If TRUE, connect, otherwise disconnect - */ -void USBHwConnect(BOOL fConnect) -{ - USBHwCmdWrite(CMD_DEV_STATUS, fConnect ? CON : 0); -} - - -/** - Enables interrupt on NAK condition - - For IN endpoints a NAK is generated when the host wants to read data - from the device, but none is available in the endpoint buffer. - For OUT endpoints a NAK is generated when the host wants to write data - to the device, but the endpoint buffer is still full. - - The endpoint interrupt handlers can distinguish regular (ACK) interrupts - from NAK interrupt by checking the bits in their bEPStatus argument. - - @param [in] bIntBits Bitmap indicating which NAK interrupts to enable - */ -void USBHwNakIntEnable(unsigned char bIntBits) -{ - USBHwCmdWrite(CMD_DEV_SET_MODE, bIntBits); -} - - -/** - Gets the status from a specific endpoint. - - @param [in] bEP Endpoint number - @return Endpoint status byte (containing EP_STATUS_xxx bits) - */ -unsigned char USBHwEPGetStatus(unsigned char bEP) -{ - int idx = EP2IDX(bEP); - - return USBHwCmdRead(CMD_EP_SELECT | idx); -} - - -/** - Sets the stalled property of an endpoint - - @param [in] bEP Endpoint number - @param [in] fStall TRUE to stall, FALSE to unstall - */ -void USBHwEPStall(unsigned char bEP, BOOL fStall) -{ - int idx = EP2IDX(bEP); - - USBHwCmdWrite(CMD_EP_SET_STATUS | idx, fStall ? EP_ST : 0); -} - - -/** - Writes data to an endpoint buffer - - @param [in] bEP Endpoint number - @param [in] pbBuf Endpoint data - @param [in] iLen Number of bytes to write - - @return TRUE if the data was successfully written or <0 in case of error. -*/ -int USBHwEPWrite(unsigned char bEP, unsigned char *pbBuf, int iLen) -{ - int idx; - - idx = EP2IDX(bEP); - - // set write enable for specific endpoint - USB->USBCtrl = WR_EN | ((bEP & 0xF) << 2); - - // set packet length - USB->USBTxPLen = iLen; - - // write data - while (USB->USBCtrl & WR_EN) { - USB->USBTxData = (pbBuf[3] << 24) | (pbBuf[2] << 16) | (pbBuf[1] << 8) | pbBuf[0]; - pbBuf += 4; - } - - // select endpoint and validate buffer - USBHwCmd(CMD_EP_SELECT | idx); - USBHwCmd(CMD_EP_VALIDATE_BUFFER); - - return iLen; -} - - -/** - Reads data from an endpoint buffer - - @param [in] bEP Endpoint number - @param [in] pbBuf Endpoint data - @param [in] iMaxLen Maximum number of bytes to read - - @return the number of bytes available in the EP (possibly more than iMaxLen), - or <0 in case of error. - */ -int USBHwEPRead(unsigned char bEP, unsigned char *pbBuf, int iMaxLen) -{ - unsigned int i, idx; - unsigned long dwData, dwLen; - - idx = EP2IDX(bEP); - - // set read enable bit for specific endpoint - USB->USBCtrl = RD_EN | ((bEP & 0xF) << 2); - - // wait for PKT_RDY - do { - dwLen = USB->USBRxPLen; - } while ((dwLen & PKT_RDY) == 0); - - // packet valid? - if ((dwLen & DV) == 0) { - return -1; - } - - // get length - dwLen &= PKT_LNGTH_MASK; - - // get data - dwData = 0; - for (i = 0; i < dwLen; i++) { - if ((i % 4) == 0) { - dwData = USB->USBRxData; - } - if ((pbBuf != NULL) && ((int)i < iMaxLen)) { - pbBuf[i] = dwData & 0xFF; - } - dwData >>= 8; - } - - // make sure RD_EN is clear - USB->USBCtrl = 0; - - // select endpoint and clear buffer - USBHwCmd(CMD_EP_SELECT | idx); - USBHwCmd(CMD_EP_CLEAR_BUFFER); - - return dwLen; -} - - -/** - Sets the 'configured' state. - - All registered endpoints are 'realised' and enabled, and the - 'configured' bit is set in the device status register. - - @param [in] fConfigured If TRUE, configure device, else unconfigure - */ -void USBHwConfigDevice(BOOL fConfigured) -{ - // set configured bit - USBHwCmdWrite(CMD_DEV_CONFIG, fConfigured ? CONF_DEVICE : 0); -} - - -/** - USB interrupt handler - - @todo Get all 11 bits of frame number instead of just 8 - - Endpoint interrupts are mapped to the slow interrupt - */ -void USBHwISR(void) -{ - unsigned long dwStatus; - unsigned long dwIntBit; - unsigned char bEPStat, bDevStat, bStat; - int i; - unsigned short wFrame; - - // handle device interrupts - dwStatus = USB->USBDevIntSt; - - // frame interrupt - if (dwStatus & FRAME) { - // clear int - USB->USBDevIntClr = FRAME; - // call handler - if (_pfnFrameHandler != NULL) { - wFrame = USBHwCmdRead(CMD_DEV_READ_CUR_FRAME_NR); - _pfnFrameHandler(wFrame); - } - } - - // device status interrupt - if (dwStatus & DEV_STAT) { - /* Clear DEV_STAT interrupt before reading DEV_STAT register. - This prevents corrupted device status reads, see - LPC2148 User manual revision 2, 25 july 2006. - */ - USB->USBDevIntClr = DEV_STAT; - bDevStat = USBHwCmdRead(CMD_DEV_STATUS); - if (bDevStat & (CON_CH | SUS_CH | RST)) { - // convert device status into something HW independent - bStat = ((bDevStat & CON) ? DEV_STATUS_CONNECT : 0) | - ((bDevStat & SUS) ? DEV_STATUS_SUSPEND : 0) | - ((bDevStat & RST) ? DEV_STATUS_RESET : 0); - // call handler - if (_pfnDevIntHandler != NULL) { - _pfnDevIntHandler(bStat); - } - } - } - - // endpoint interrupt - if (dwStatus & EP_SLOW) { - // clear EP_SLOW - USB->USBDevIntClr = EP_SLOW; - // check all endpoints - for (i = 0; i < 32; i++) { - dwIntBit = (1 << i); - if (USB->USBEpIntSt & dwIntBit) { - // clear int (and retrieve status) - USB->USBEpIntClr = dwIntBit; - Wait4DevInt(CDFULL); - bEPStat = USB->USBCmdData; - // convert EP pipe stat into something HW independent - bStat = ((bEPStat & EPSTAT_FE) ? EP_STATUS_DATA : 0) | - ((bEPStat & EPSTAT_ST) ? EP_STATUS_STALLED : 0) | - ((bEPStat & EPSTAT_STP) ? EP_STATUS_SETUP : 0) | - ((bEPStat & EPSTAT_EPN) ? EP_STATUS_NACKED : 0) | - ((bEPStat & EPSTAT_PO) ? EP_STATUS_ERROR : 0); - // call handler - if (_apfnEPIntHandlers[i / 2] != NULL) { - _apfnEPIntHandlers[i / 2](IDX2EP(i), bStat); - } - } - } - } -} - - - -/** - Initialises the USB hardware - - - @return TRUE if the hardware was successfully initialised - */ -BOOL USBHwInit(void) -{ - // P2.9 -> USB_CONNECT - PINCON->PINSEL4 &= ~0x000C0000; - PINCON->PINSEL4 |= 0x00040000; - - // P1.18 -> USB_UP_LED - // P1.30 -> VBUS - PINCON->PINSEL3 &= ~0x30000030; - PINCON->PINSEL3 |= 0x20000010; - - // P0.29 -> USB_D+ - // P0.30 -> USB_D- - PINCON->PINSEL1 &= ~0x3C000000; - PINCON->PINSEL1 |= 0x14000000; - - // enable PUSB - SC->PCONP |= (1UL << 31UL); - - USB->OTGClkCtrl = 0x12; /* Dev clock, AHB clock enable */ - while ((USB->OTGClkSt & 0x12) != 0x12); - - // disable/clear all interrupts for now - USB->USBDevIntEn = 0; - USB->USBDevIntClr = 0xFFFFFFFF; - USB->USBDevIntPri = 0; - - USB->USBEpIntEn = 0; - USB->USBEpIntClr = 0xFFFFFFFF; - USB->USBEpIntPri = 0; - - // by default, only ACKs generate interrupts - USBHwNakIntEnable(0); - - return TRUE; -} - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/LPCUSB/usbhw_lpc.h b/FreeRTOS/Demo/CORTEX_LPC1768_IAR/LPCUSB/usbhw_lpc.h deleted file mode 100644 index 8578177e5..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/LPCUSB/usbhw_lpc.h +++ /dev/null @@ -1,149 +0,0 @@ -/* - LPCUSB, an USB device driver for LPC microcontrollers - Copyright (C) 2006 Bertrik Sikken (bertrik@sikken.nl) - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - 3. The name of the author may not be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - - -/** - Hardware definitions for the LPC176x USB controller - - These are private to the usbhw module -*/ - -// CodeRed - pull in defines from NXP header file -//#include "NXP\LPC17xx\LPC17xx.h" -#include "LPC17xx.h" - - -// CodeRed - these registers have been renamed on LPC176x -#define USBReEP USBReEp -#define OTG_CLK_CTRL USBClkCtrl -#define OTG_CLK_STAT USBClkSt - -/* USBIntSt bits */ -#define USB_INT_REQ_LP (1<<0) -#define USB_INT_REQ_HP (1<<1) -#define USB_INT_REQ_DMA (1<<2) -#define USB_need_clock (1<<8) -#define EN_USB_BITS (1<<31) - -/* USBDevInt... bits */ -#define FRAME (1<<0) -#define EP_FAST (1<<1) -#define EP_SLOW (1<<2) -#define DEV_STAT (1<<3) -#define CCEMTY (1<<4) -#define CDFULL (1<<5) -#define RxENDPKT (1<<6) -#define TxENDPKT (1<<7) -#define EP_RLZED (1<<8) -#define ERR_INT (1<<9) - -/* USBRxPLen bits */ -#define PKT_LNGTH (1<<0) -#define PKT_LNGTH_MASK 0x3FF -#define DV (1<<10) -#define PKT_RDY (1<<11) - -/* USBCtrl bits */ -#define RD_EN (1<<0) -#define WR_EN (1<<1) -#define LOG_ENDPOINT (1<<2) - -/* protocol engine command codes */ - /* device commands */ -#define CMD_DEV_SET_ADDRESS 0xD0 -#define CMD_DEV_CONFIG 0xD8 -#define CMD_DEV_SET_MODE 0xF3 -#define CMD_DEV_READ_CUR_FRAME_NR 0xF5 -#define CMD_DEV_READ_TEST_REG 0xFD -#define CMD_DEV_STATUS 0xFE /* read/write */ -#define CMD_DEV_GET_ERROR_CODE 0xFF -#define CMD_DEV_READ_ERROR_STATUS 0xFB - /* endpoint commands */ -#define CMD_EP_SELECT 0x00 -#define CMD_EP_SELECT_CLEAR 0x40 -#define CMD_EP_SET_STATUS 0x40 -#define CMD_EP_CLEAR_BUFFER 0xF2 -#define CMD_EP_VALIDATE_BUFFER 0xFA - -/* set address command */ -#define DEV_ADDR (1<<0) -#define DEV_EN (1<<7) - -/* configure device command */ -#define CONF_DEVICE (1<<0) - -/* set mode command */ -#define AP_CLK (1<<0) -#define INAK_CI (1<<1) -#define INAK_CO (1<<2) -#define INAK_II (1<<3) -#define INAK_IO (1<<4) -#define INAK_BI (1<<5) -#define INAK_BO (1<<6) - -/* set get device status command */ -#define CON (1<<0) -#define CON_CH (1<<1) -#define SUS (1<<2) -#define SUS_CH (1<<3) -#define RST (1<<4) - -/* get error code command */ -// ... - -/* Select Endpoint command read bits */ -#define EPSTAT_FE (1<<0) -#define EPSTAT_ST (1<<1) -#define EPSTAT_STP (1<<2) -#define EPSTAT_PO (1<<3) -#define EPSTAT_EPN (1<<4) -#define EPSTAT_B1FULL (1<<5) -#define EPSTAT_B2FULL (1<<6) - -/* CMD_EP_SET_STATUS command */ -#define EP_ST (1<<0) -#define EP_DA (1<<5) -#define EP_RF_MO (1<<6) -#define EP_CND_ST (1<<7) - -/* read error status command */ -#define PID_ERR (1<<0) -#define UEPKT (1<<1) -#define DCRC (1<<2) -#define TIMEOUT (1<<3) -#define EOP (1<<4) -#define B_OVRN (1<<5) -#define BTSTF (1<<6) -#define TGL_ERR (1<<7) - - - - - - - - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/LPCUSB/usbinit.c b/FreeRTOS/Demo/CORTEX_LPC1768_IAR/LPCUSB/usbinit.c deleted file mode 100644 index f1784c20b..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/LPCUSB/usbinit.c +++ /dev/null @@ -1,82 +0,0 @@ -/* - LPCUSB, an USB device driver for LPC microcontrollers - Copyright (C) 2006 Bertrik Sikken (bertrik@sikken.nl) - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - 3. The name of the author may not be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - - -/** @file - USB stack initialisation - */ - - -#include "usbdebug.h" -#include "usbapi.h" - - -/** data storage area for standard requests */ -static unsigned char abStdReqData[8]; - - -/** - USB reset handler - - @param [in] bDevStatus Device status - */ -static void HandleUsbReset(unsigned char bDevStatus) -{ - if (bDevStatus & DEV_STATUS_RESET) { - DBG("\n!"); - } -} - - -/** - Initialises the USB hardware and sets up the USB stack by - installing default callbacks. - - @return TRUE if initialisation was successful - */ -BOOL USBInit(void) -{ - // init hardware - USBHwInit(); - - // register bus reset handler - USBHwRegisterDevIntHandler(HandleUsbReset); - - // register control transfer handler on EP0 - USBHwRegisterEPIntHandler(0x00, USBHandleControlTransfer); - USBHwRegisterEPIntHandler(0x80, USBHandleControlTransfer); - - // setup control endpoints - USBHwEPConfig(0x00, MAX_PACKET_SIZE0); - USBHwEPConfig(0x80, MAX_PACKET_SIZE0); - - // register standard request handler - USBRegisterRequestHandler(REQTYPE_TYPE_STANDARD, USBHandleStandardRequest, abStdReqData); - - return TRUE; -} - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/LPCUSB/usbstdreq.c b/FreeRTOS/Demo/CORTEX_LPC1768_IAR/LPCUSB/usbstdreq.c deleted file mode 100644 index 05e58b417..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/LPCUSB/usbstdreq.c +++ /dev/null @@ -1,430 +0,0 @@ -/* - LPCUSB, an USB device driver for LPC microcontrollers - Copyright (C) 2006 Bertrik Sikken (bertrik@sikken.nl) - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - 3. The name of the author may not be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - - -/** @file - Standard request handler. - - This modules handles the 'chapter 9' processing, specifically the - standard device requests in table 9-3 from the universal serial bus - specification revision 2.0 - - Specific types of devices may specify additional requests (for example - HID devices add a GET_DESCRIPTOR request for interfaces), but they - will not be part of this module. - - @todo some requests have to return a request error if device not configured: - @todo GET_INTERFACE, GET_STATUS, SET_INTERFACE, SYNCH_FRAME - @todo this applies to the following if endpoint != 0: - @todo SET_FEATURE, GET_FEATURE -*/ - -#include "usbdebug.h" -#include "usbstruct.h" -#include "usbapi.h" - -#define MAX_DESC_HANDLERS 4 /**< device, interface, endpoint, other */ - - -/* general descriptor field offsets */ -#define DESC_bLength 0 /**< length offset */ -#define DESC_bDescriptorType 1 /**< descriptor type offset */ - -/* config descriptor field offsets */ -#define CONF_DESC_wTotalLength 2 /**< total length offset */ -#define CONF_DESC_bConfigurationValue 5 /**< configuration value offset */ -#define CONF_DESC_bmAttributes 7 /**< configuration characteristics */ - -/* interface descriptor field offsets */ -#define INTF_DESC_bAlternateSetting 3 /**< alternate setting offset */ - -/* endpoint descriptor field offsets */ -#define ENDP_DESC_bEndpointAddress 2 /**< endpoint address offset */ -#define ENDP_DESC_wMaxPacketSize 4 /**< maximum packet size offset */ - - -/** Currently selected configuration */ -static unsigned char bConfiguration = 0; -/** Installed custom request handler */ -static TFnHandleRequest *pfnHandleCustomReq = NULL; -/** Pointer to registered descriptors */ -static const unsigned char *pabDescrip = NULL; - - -/** - Registers a pointer to a descriptor block containing all descriptors - for the device. - - @param [in] pabDescriptors The descriptor byte array - */ -void USBRegisterDescriptors(const unsigned char *pabDescriptors) -{ - pabDescrip = pabDescriptors; -} - - -/** - Parses the list of installed USB descriptors and attempts to find - the specified USB descriptor. - - @param [in] wTypeIndex Type and index of the descriptor - @param [in] wLangID Language ID of the descriptor (currently unused) - @param [out] *piLen Descriptor length - @param [out] *ppbData Descriptor data - - @return TRUE if the descriptor was found, FALSE otherwise - */ -BOOL USBGetDescriptor(unsigned short wTypeIndex, unsigned short wLangID, int *piLen, unsigned char **ppbData) -{ - unsigned char bType, bIndex; - unsigned char *pab; - int iCurIndex; - - ASSERT(pabDescrip != NULL); - - bType = GET_DESC_TYPE(wTypeIndex); - bIndex = GET_DESC_INDEX(wTypeIndex); - - pab = (unsigned char *)pabDescrip; - iCurIndex = 0; - - while (pab[DESC_bLength] != 0) { - if (pab[DESC_bDescriptorType] == bType) { - if (iCurIndex == bIndex) { - // set data pointer - *ppbData = pab; - // get length from structure - if (bType == DESC_CONFIGURATION) { - // configuration descriptor is an exception, length is at offset 2 and 3 - *piLen = (pab[CONF_DESC_wTotalLength]) | - (pab[CONF_DESC_wTotalLength + 1] << 8); - } - else { - // normally length is at offset 0 - *piLen = pab[DESC_bLength]; - } - return TRUE; - } - iCurIndex++; - } - // skip to next descriptor - pab += pab[DESC_bLength]; - } - // nothing found - DBG("Desc %x not found!\n", wTypeIndex); - return FALSE; -} - - -/** - Configures the device according to the specified configuration index and - alternate setting by parsing the installed USB descriptor list. - A configuration index of 0 unconfigures the device. - - @param [in] bConfigIndex Configuration index - @param [in] bAltSetting Alternate setting number - - @todo function always returns TRUE, add stricter checking? - - @return TRUE if successfully configured, FALSE otherwise - */ -static BOOL USBSetConfiguration(unsigned char bConfigIndex, unsigned char bAltSetting) -{ - unsigned char *pab; - unsigned char bCurConfig, bCurAltSetting; - unsigned char bEP; - unsigned short wMaxPktSize; - - ASSERT(pabDescrip != NULL); - - if (bConfigIndex == 0) { - // unconfigure device - USBHwConfigDevice(FALSE); - } - else { - // configure endpoints for this configuration/altsetting - pab = (unsigned char *)pabDescrip; - bCurConfig = 0xFF; - bCurAltSetting = 0xFF; - - while (pab[DESC_bLength] != 0) { - - switch (pab[DESC_bDescriptorType]) { - - case DESC_CONFIGURATION: - // remember current configuration index - bCurConfig = pab[CONF_DESC_bConfigurationValue]; - break; - - case DESC_INTERFACE: - // remember current alternate setting - bCurAltSetting = pab[INTF_DESC_bAlternateSetting]; - break; - - case DESC_ENDPOINT: - if ((bCurConfig == bConfigIndex) && - (bCurAltSetting == bAltSetting)) { - // endpoint found for desired config and alternate setting - bEP = pab[ENDP_DESC_bEndpointAddress]; - wMaxPktSize = (pab[ENDP_DESC_wMaxPacketSize]) | - (pab[ENDP_DESC_wMaxPacketSize + 1] << 8); - // configure endpoint - USBHwEPConfig(bEP, wMaxPktSize); - } - break; - - default: - break; - } - // skip to next descriptor - pab += pab[DESC_bLength]; - } - - // configure device - USBHwConfigDevice(TRUE); - } - - return TRUE; -} - - -/** - Local function to handle a standard device request - - @param [in] pSetup The setup packet - @param [in,out] *piLen Pointer to data length - @param [in,out] ppbData Data buffer. - - @return TRUE if the request was handled successfully - */ -static BOOL HandleStdDeviceReq(TSetupPacket *pSetup, int *piLen, unsigned char **ppbData) -{ - unsigned char *pbData = *ppbData; - - switch (pSetup->bRequest) { - - case REQ_GET_STATUS: - // bit 0: self-powered - // bit 1: remote wakeup = not supported - pbData[0] = 0; - pbData[1] = 0; - *piLen = 2; - break; - - case REQ_SET_ADDRESS: - USBHwSetAddress(pSetup->wValue); - break; - - case REQ_GET_DESCRIPTOR: - DBG("D%x", pSetup->wValue); - return USBGetDescriptor(pSetup->wValue, pSetup->wIndex, piLen, ppbData); - - case REQ_GET_CONFIGURATION: - // indicate if we are configured - pbData[0] = bConfiguration; - *piLen = 1; - break; - - case REQ_SET_CONFIGURATION: - if (!USBSetConfiguration(pSetup->wValue & 0xFF, 0)) { - DBG("USBSetConfiguration failed!\n"); - return FALSE; - } - // configuration successful, update current configuration - bConfiguration = pSetup->wValue & 0xFF; - break; - - case REQ_CLEAR_FEATURE: - case REQ_SET_FEATURE: - if (pSetup->wValue == FEA_REMOTE_WAKEUP) { - // put DEVICE_REMOTE_WAKEUP code here - } - if (pSetup->wValue == FEA_TEST_MODE) { - // put TEST_MODE code here - } - return FALSE; - - case REQ_SET_DESCRIPTOR: - DBG("Device req %d not implemented\n", pSetup->bRequest); - return FALSE; - - default: - DBG("Illegal device req %d\n", pSetup->bRequest); - return FALSE; - } - - return TRUE; -} - - -/** - Local function to handle a standard interface request - - @param [in] pSetup The setup packet - @param [in,out] *piLen Pointer to data length - @param [in] ppbData Data buffer. - - @return TRUE if the request was handled successfully - */ -static BOOL HandleStdInterfaceReq(TSetupPacket *pSetup, int *piLen, unsigned char **ppbData) -{ - unsigned char *pbData = *ppbData; - - switch (pSetup->bRequest) { - - case REQ_GET_STATUS: - // no bits specified - pbData[0] = 0; - pbData[1] = 0; - *piLen = 2; - break; - - case REQ_CLEAR_FEATURE: - case REQ_SET_FEATURE: - // not defined for interface - return FALSE; - - case REQ_GET_INTERFACE: // TODO use bNumInterfaces - // there is only one interface, return n-1 (= 0) - pbData[0] = 0; - *piLen = 1; - break; - - case REQ_SET_INTERFACE: // TODO use bNumInterfaces - // there is only one interface (= 0) - if (pSetup->wValue != 0) { - return FALSE; - } - *piLen = 0; - break; - - default: - DBG("Illegal interface req %d\n", pSetup->bRequest); - return FALSE; - } - - return TRUE; -} - - -/** - Local function to handle a standard endpoint request - - @param [in] pSetup The setup packet - @param [in,out] *piLen Pointer to data length - @param [in] ppbData Data buffer. - - @return TRUE if the request was handled successfully - */ -static BOOL HandleStdEndPointReq(TSetupPacket *pSetup, int *piLen, unsigned char **ppbData) -{ - unsigned char *pbData = *ppbData; - - switch (pSetup->bRequest) { - case REQ_GET_STATUS: - // bit 0 = endpointed halted or not - pbData[0] = (USBHwEPGetStatus(pSetup->wIndex) & EP_STATUS_STALLED) ? 1 : 0; - pbData[1] = 0; - *piLen = 2; - break; - - case REQ_CLEAR_FEATURE: - if (pSetup->wValue == FEA_ENDPOINT_HALT) { - // clear HALT by unstalling - USBHwEPStall(pSetup->wIndex, FALSE); - break; - } - // only ENDPOINT_HALT defined for endpoints - return FALSE; - - case REQ_SET_FEATURE: - if (pSetup->wValue == FEA_ENDPOINT_HALT) { - // set HALT by stalling - USBHwEPStall(pSetup->wIndex, TRUE); - break; - } - // only ENDPOINT_HALT defined for endpoints - return FALSE; - - case REQ_SYNCH_FRAME: - DBG("EP req %d not implemented\n", pSetup->bRequest); - return FALSE; - - default: - DBG("Illegal EP req %d\n", pSetup->bRequest); - return FALSE; - } - - return TRUE; -} - - -/** - Default handler for standard ('chapter 9') requests - - If a custom request handler was installed, this handler is called first. - - @param [in] pSetup The setup packet - @param [in,out] *piLen Pointer to data length - @param [in] ppbData Data buffer. - - @return TRUE if the request was handled successfully - */ -BOOL USBHandleStandardRequest(TSetupPacket *pSetup, int *piLen, unsigned char **ppbData) -{ - // try the custom request handler first - if ((pfnHandleCustomReq != NULL) && pfnHandleCustomReq(pSetup, piLen, ppbData)) { - return TRUE; - } - - switch (REQTYPE_GET_RECIP(pSetup->bmRequestType)) { - case REQTYPE_RECIP_DEVICE: return HandleStdDeviceReq(pSetup, piLen, ppbData); - case REQTYPE_RECIP_INTERFACE: return HandleStdInterfaceReq(pSetup, piLen, ppbData); - case REQTYPE_RECIP_ENDPOINT: return HandleStdEndPointReq(pSetup, piLen, ppbData); - default: return FALSE; - } -} - - -/** - Registers a callback for custom device requests - - In USBHandleStandardRequest, the custom request handler gets a first - chance at handling the request before it is handed over to the 'chapter 9' - request handler. - - This can be used for example in HID devices, where a REQ_GET_DESCRIPTOR - request is sent to an interface, which is not covered by the 'chapter 9' - specification. - - @param [in] pfnHandler Callback function pointer - */ -void USBRegisterCustomReqHandler(TFnHandleRequest *pfnHandler) -{ - pfnHandleCustomReq = pfnHandler; -} - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/LPCUSB/usbstruct.h b/FreeRTOS/Demo/CORTEX_LPC1768_IAR/LPCUSB/usbstruct.h deleted file mode 100644 index a4b5fa72d..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/LPCUSB/usbstruct.h +++ /dev/null @@ -1,119 +0,0 @@ -/* - LPCUSB, an USB device driver for LPC microcontrollers - Copyright (C) 2006 Bertrik Sikken (bertrik@sikken.nl) - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - 3. The name of the author may not be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - - -/** - Definitions of structures of standard USB packets -*/ - -#ifndef _USBSTRUCT_H_ -#define _USBSTRUCT_H_ - -// CodeRed - include the LPCUSB type.h file rather than NXP one directly -#include "type.h" - -/** setup packet definitions */ -typedef struct { - unsigned char bmRequestType; /**< characteristics of the specific request */ - unsigned char bRequest; /**< specific request */ - unsigned short wValue; /**< request specific parameter */ - unsigned short wIndex; /**< request specific parameter */ - unsigned short wLength; /**< length of data transfered in data phase */ -} TSetupPacket; - - -#define REQTYPE_GET_DIR(x) (((x)>>7)&0x01) -#define REQTYPE_GET_TYPE(x) (((x)>>5)&0x03) -#define REQTYPE_GET_RECIP(x) ((x)&0x1F) - -#define REQTYPE_DIR_TO_DEVICE 0 -#define REQTYPE_DIR_TO_HOST 1 - -#define REQTYPE_TYPE_STANDARD 0 -#define REQTYPE_TYPE_CLASS 1 -#define REQTYPE_TYPE_VENDOR 2 -#define REQTYPE_TYPE_RESERVED 3 - -#define REQTYPE_RECIP_DEVICE 0 -#define REQTYPE_RECIP_INTERFACE 1 -#define REQTYPE_RECIP_ENDPOINT 2 -#define REQTYPE_RECIP_OTHER 3 - -/* standard requests */ -#define REQ_GET_STATUS 0x00 -#define REQ_CLEAR_FEATURE 0x01 -#define REQ_SET_FEATURE 0x03 -#define REQ_SET_ADDRESS 0x05 -#define REQ_GET_DESCRIPTOR 0x06 -#define REQ_SET_DESCRIPTOR 0x07 -#define REQ_GET_CONFIGURATION 0x08 -#define REQ_SET_CONFIGURATION 0x09 -#define REQ_GET_INTERFACE 0x0A -#define REQ_SET_INTERFACE 0x0B -#define REQ_SYNCH_FRAME 0x0C - -/* class requests HID */ -#define HID_GET_REPORT 0x01 -#define HID_GET_IDLE 0x02 -#define HID_GET_PROTOCOL 0x03 -#define HID_SET_REPORT 0x09 -#define HID_SET_IDLE 0x0A -#define HID_SET_PROTOCOL 0x0B - -/* feature selectors */ -#define FEA_ENDPOINT_HALT 0x00 -#define FEA_REMOTE_WAKEUP 0x01 -#define FEA_TEST_MODE 0x02 - -/* - USB descriptors -*/ - -/** USB descriptor header */ -typedef struct { - unsigned char bLength; /**< descriptor length */ - unsigned char bDescriptorType; /**< descriptor type */ -} TUSBDescHeader; - -#define DESC_DEVICE 1 -#define DESC_CONFIGURATION 2 -#define DESC_STRING 3 -#define DESC_INTERFACE 4 -#define DESC_ENDPOINT 5 -#define DESC_DEVICE_QUALIFIER 6 -#define DESC_OTHER_SPEED 7 -#define DESC_INTERFACE_POWER 8 - -#define DESC_HID_HID 0x21 -#define DESC_HID_REPORT 0x22 -#define DESC_HID_PHYSICAL 0x23 - -#define GET_DESC_TYPE(x) (((x)>>8)&0xFF) -#define GET_DESC_INDEX(x) ((x)&0xFF) - -#endif /* _USBSTRUCT_H_ */ - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/ParTest.c b/FreeRTOS/Demo/CORTEX_LPC1768_IAR/ParTest.c deleted file mode 100644 index 9703eefa4..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/ParTest.c +++ /dev/null @@ -1,145 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* FreeRTOS.org includes. */ -#include "FreeRTOS.h" - -/* Demo application includes. */ -#include "partest.h" - -/*----------------------------------------------------------- - * Simple parallel port IO routines. - *-----------------------------------------------------------*/ - -#define partstLED1_OUTPUT ( 1 << 25 ) -#define partstLED2_OUTPUT ( 1 << 4 ) - -void vParTestInitialise( void ) -{ - /* Set LEDs to output. */ - GPIO1->FIODIR = partstLED1_OUTPUT; - GPIO0->FIODIR = partstLED2_OUTPUT; - - /* Start with LED off. */ - GPIO1->FIOSET = partstLED1_OUTPUT; - GPIO0->FIOSET = partstLED2_OUTPUT; -} -/*-----------------------------------------------------------*/ - -void vParTestSetLED( unsigned long ulLEDIn, signed long xValue ) -{ - /* Used to set and clear LEDs on FIO2. */ - - if( ulLEDIn == 0 ) - { - /* Set of clear the output. */ - if( xValue ) - { - GPIO1->FIOCLR = partstLED1_OUTPUT; - } - else - { - GPIO1->FIOSET = partstLED1_OUTPUT; - } - } - else if( ulLEDIn == 1 ) - { - /* Set of clear the output. */ - if( xValue ) - { - GPIO0->FIOCLR = partstLED2_OUTPUT; - } - else - { - GPIO0->FIOSET = partstLED2_OUTPUT; - } - } -} -/*-----------------------------------------------------------*/ - -void vParTestToggleLED( unsigned long ulLEDIn ) -{ -unsigned long ulCurrentState; - - /* Used to toggle LEDs on FIO2. */ - - if( ulLEDIn == 0 ) - { - /* If this bit is already set, clear it, and vice versa. */ - ulCurrentState = GPIO1->FIOPIN; - if( ulCurrentState & partstLED1_OUTPUT ) - { - GPIO1->FIOCLR = partstLED1_OUTPUT; - } - else - { - GPIO1->FIOSET = partstLED1_OUTPUT; - } - } - else if( ulLEDIn == 1 ) - { - /* If this bit is already set, clear it, and vice versa. */ - ulCurrentState = GPIO0->FIOPIN; - if( ulCurrentState & partstLED2_OUTPUT ) - { - GPIO0->FIOCLR = partstLED2_OUTPUT; - } - else - { - GPIO0->FIOSET = partstLED2_OUTPUT; - } - } -} -/*-----------------------------------------------------------*/ - -long lParTestGetLEDState( void ) -{ - if( ( GPIO0->FIOPIN & partstLED2_OUTPUT ) == 0 ) - { - return pdFALSE; - } - else - { - return pdTRUE; - } -} -/*-----------------------------------------------------------*/ - -void vParTestSetLEDState( long lState ) -{ - /* Used to set and clear the LEDs on FIO1. */ - if( lState != pdFALSE ) - { - GPIO0->FIOCLR = partstLED2_OUTPUT; - } - else - { - GPIO0->FIOSET = partstLED2_OUTPUT; - } -} -/*-----------------------------------------------------------*/ - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/RTOSDemo.ewd b/FreeRTOS/Demo/CORTEX_LPC1768_IAR/RTOSDemo.ewd deleted file mode 100644 index 9322a471c..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/RTOSDemo.ewd +++ /dev/null @@ -1,879 +0,0 @@ - - - - 2 - - Debug - - ARM - - 1 - - C-SPY - 2 - - 22 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ARMSIM_ID - 2 - - 1 - 1 - 1 - - - - - - - - ANGEL_ID - 2 - - 0 - 1 - 1 - - - - - - - - - - - - GDBSERVER_ID - 2 - - 0 - 1 - 1 - - - - - - - - - - - IARROM_ID - 2 - - 1 - 1 - 1 - - - - - - - - - JLINK_ID - 2 - - 13 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - LMIFTDI_ID - 2 - - 2 - 1 - 1 - - - - - - - - - - MACRAIGOR_ID - 2 - - 3 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - PEMICRO_ID - 2 - - 0 - 1 - 1 - - - - - - - - - - - - - - - - - RDI_ID - 2 - - 2 - 1 - 1 - - - - - - - - - - - - - - - - STLINK_ID - 2 - - 2 - 1 - 1 - - - - - - - - - - - THIRDPARTY_ID - 2 - - 0 - 1 - 1 - - - - - - - - - $TOOLKIT_DIR$\plugins\rtos\CMX\CmxArmPlugin.ENU.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\CMX\CmxTinyArmPlugin.ENU.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\MQX\MQXRtosPlugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\OpenRTOS\OpenRTOSPlugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\PowerPac\PowerPacRTOS.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\Quadros\Quadros_EWB6_Plugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\SafeRTOS\SafeRTOSPlugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXArmPlugin.ENU.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-286-KA-CSpy.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-KA-CSpy.ewplugin - 0 - - - $EW_DIR$\common\plugins\CodeCoverage\CodeCoverage.ENU.ewplugin - 1 - - - $EW_DIR$\common\plugins\FreeRTOS\FreeRTOSPlugin.ewplugin - 0 - - - $EW_DIR$\common\plugins\OpenRTOS\OpenRTOSPlugin.ewplugin - 0 - - - $EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin - 0 - - - $EW_DIR$\common\plugins\Stack\Stack.ENU.ewplugin - 1 - - - $EW_DIR$\common\plugins\SymList\SymList.ENU.ewplugin - 1 - - - - - - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/RTOSDemo.ewp b/FreeRTOS/Demo/CORTEX_LPC1768_IAR/RTOSDemo.ewp deleted file mode 100644 index 5a442fa71..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/RTOSDemo.ewp +++ /dev/null @@ -1,1018 +0,0 @@ - - - - 2 - - Debug - - ARM - - 1 - - General - 3 - - 21 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ICCARM - 2 - - 28 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - AARM - 2 - - 8 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - OBJCOPY - 0 - - 1 - 1 - 1 - - - - - - - - - CUSTOM - 3 - - - - - - - BICOMP - 0 - - - - BUILDACTION - 1 - - - - - - - ILINK - 0 - - 13 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - IARCHIVE - 0 - - 0 - 1 - 1 - - - - - - - BILINK - 0 - - - - - Common Demo Tasks - - $PROJ_DIR$\..\Common\Minimal\BlockQ.c - - - $PROJ_DIR$\..\Common\Minimal\blocktim.c - - - $PROJ_DIR$\..\Common\Minimal\flash.c - - - $PROJ_DIR$\..\Common\Minimal\GenQTest.c - - - $PROJ_DIR$\..\Common\Minimal\integer.c - - - $PROJ_DIR$\..\Common\Minimal\PollQ.c - - - $PROJ_DIR$\..\Common\Minimal\QPeek.c - - - $PROJ_DIR$\..\Common\Minimal\recmutex.c - - - $PROJ_DIR$\..\Common\Minimal\semtest.c - - - - FreeRTOS - - $PROJ_DIR$\..\..\Source\portable\MemMang\heap_2.c - - - $PROJ_DIR$\..\..\Source\list.c - - - $PROJ_DIR$\..\..\Source\portable\IAR\ARM_CM3\port.c - - - $PROJ_DIR$\..\..\Source\portable\IAR\ARM_CM3\portasm.s - - - $PROJ_DIR$\..\..\Source\queue.c - - - $PROJ_DIR$\..\..\Source\tasks.c - - - - LPCUSB - - $PROJ_DIR$\LPCUSB\USB_CDC.c - - - $PROJ_DIR$\LPCUSB\usbcontrol.c - - - $PROJ_DIR$\LPCUSB\usbhw_lpc.c - - - $PROJ_DIR$\LPCUSB\usbinit.c - - - $PROJ_DIR$\LPCUSB\usbstdreq.c - - - - WEB Server - - $PROJ_DIR$\webserver\emac.c - - - $PROJ_DIR$\webserver\http-strings.c - - - $PROJ_DIR$\webserver\httpd-cgi.c - - - $PROJ_DIR$\webserver\httpd-fs.c - - - $PROJ_DIR$\webserver\httpd.c - - - $PROJ_DIR$\..\Common\ethernet\uIP\uip-1.0\uip\psock.c - - - $PROJ_DIR$\..\Common\ethernet\uIP\uip-1.0\uip\timer.c - - - $PROJ_DIR$\..\Common\ethernet\uIP\uip-1.0\uip\uip.c - - - $PROJ_DIR$\..\Common\ethernet\uIP\uip-1.0\uip\uip_arp.c - - - $PROJ_DIR$\webserver\uIP_Task.c - - - - $PROJ_DIR$\cstartup_M.s - - - $PROJ_DIR$\main.c - - - $PROJ_DIR$\ParTest.c - - - - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/RTOSDemo.eww b/FreeRTOS/Demo/CORTEX_LPC1768_IAR/RTOSDemo.eww deleted file mode 100644 index 239a9381e..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/RTOSDemo.eww +++ /dev/null @@ -1,10 +0,0 @@ - - - - - $WS_DIR$\RTOSDemo.ewp - - - - - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/ReadMe.txt b/FreeRTOS/Demo/CORTEX_LPC1768_IAR/ReadMe.txt new file mode 100644 index 000000000..12c70d213 --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_LPC1768_IAR/ReadMe.txt @@ -0,0 +1 @@ +The third party uIP TCP/IP stack and the demo project that used to be in this directory was removed in FreeRTOS version V10.4.3 due to security vulnerabilities identified in uIP. In a future version this demo may be replaced by a version which does not use TCP/IP or uses FreeRTOS’s own TCP/IP stack in place of the original third party stack. \ No newline at end of file diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/cstartup_M.s b/FreeRTOS/Demo/CORTEX_LPC1768_IAR/cstartup_M.s deleted file mode 100644 index e8be5f6c4..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/cstartup_M.s +++ /dev/null @@ -1,271 +0,0 @@ -/************************************************** - * - * Part one of the system initialization code, contains low-level - * initialization, plain thumb variant. - * - * Copyright 2009 IAR Systems. All rights reserved. - * - * $Revision: 28532 $ - * - **************************************************/ - -; -; The modules in this file are included in the libraries, and may be replaced -; by any user-defined modules that define the PUBLIC symbol _program_start or -; a user defined start symbol. -; To override the cstartup defined in the library, simply add your modified -; version to the workbench project. -; -; The vector table is normally located at address 0. -; When debugging in RAM, it can be located in RAM, aligned to at least 2^6. -; The name "__vector_table" has special meaning for C-SPY: -; it is where the SP start value is found, and the NVIC vector -; table register (VTOR) is initialized to this address if != 0. -; -; Cortex-M version -; - - MODULE ?cstartup - - ;; Forward declaration of sections. - SECTION CSTACK:DATA:NOROOT(3) - - SECTION .intvec:CODE:NOROOT(2) - - EXTERN __iar_program_start - EXTERN xPortPendSVHandler - EXTERN xPortSysTickHandler - EXTERN vPortSVCHandler - EXTERN vEMAC_ISR - PUBLIC __vector_table - PUBLIC __vector_table_0x1c - - DATA -__vector_table - DCD sfe(CSTACK) ; Top of Stack - DCD __iar_program_start ; Reset Handler - DCD NMI_Handler ; NMI Handler - DCD HardFault_Handler ; Hard Fault Handler - DCD MemManage_Handler ; MPU Fault Handler - DCD BusFault_Handler ; Bus Fault Handler - DCD UsageFault_Handler ; Usage Fault Handler -__vector_table_0x1c - DCD 0 ; Reserved - DCD 0 ; Reserved - DCD 0 ; Reserved - DCD 0 ; Reserved - DCD vPortSVCHandler ; SVCall Handler - DCD DebugMon_Handler ; Debug Monitor Handler - DCD 0 ; Reserved - DCD xPortPendSVHandler ; PendSV Handler - DCD xPortSysTickHandler ; SysTick Handler - DCD WDT_IRQHandler ; Watchdog Handler - DCD TMR0_IRQHandler ; TIMER0 Handler - DCD TMR1_IRQHandler ; TIMER1 Handler - DCD TMR2_IRQHandler ; TIMER2 Handler - DCD TMR3_IRQHandler ; TIMER3 Handler - DCD UART0_IRQHandler ; UART0 Handler - DCD UART1_IRQHandler ; UART1 Handler - DCD UART2_IRQHandler ; UART2 Handler - DCD UART3_IRQHandler ; UART3 Handler - DCD PWM1_IRQHandler ; PWM1 Handler - DCD I2C0_IRQHandler ; I2C0 Handler - DCD I2C1_IRQHandler ; I2C1 Handler - DCD I2C2_IRQHandler ; I2C2 Handler - DCD SPI_IRQHandler ; SPI Handler - DCD SSP0_IRQHandler ; SSP0 Handler - DCD SSP1_IRQHandler ; SSP1 Handler - DCD PLL0_IRQHandler ; PLL0 Handler - DCD RTC_IRQHandler ; RTC Handler - DCD EINT0_IRQHandler ; EXT Interupt 0 Handler - DCD EINT1_IRQHandler ; EXT Interupt 1 Handler - DCD EINT2_IRQHandler ; EXT Interupt 2 Handler - DCD EINT3_IRQHandler ; EXT Interupt 3 Handler - DCD ADC_IRQHandler ; ADC Handler - DCD BOD_IRQHandler ; BOD Handler - DCD USB_IRQHandler ; USB Handler - DCD CAN_IRQHandler ; CAN Handler - DCD GPDMA_IRQHandler ; General Purpose DMA Handler - DCD I2S_IRQHandler ; I2S Handler - DCD vEMAC_ISR ; Ethernet Handler - DCD RIT_IRQHandler ; Repetitive Interrupt Timer Handler - DCD MotorControlPWM_IRQHandler ; Motor Control PWM Handler - DCD QE_IRQHandler ; Quadrature Encoder Handler - DCD PLL1_IRQHandler ; PLL1 Handler - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; -;; Default interrupt handlers. -;; - THUMB - - PUBWEAK NMI_Handler - SECTION .text:CODE:REORDER(1) -NMI_Handler - B NMI_Handler - PUBWEAK HardFault_Handler - SECTION .text:CODE:REORDER(1) -HardFault_Handler - B HardFault_Handler - PUBWEAK MemManage_Handler - SECTION .text:CODE:REORDER(1) -MemManage_Handler - B MemManage_Handler - PUBWEAK BusFault_Handler - SECTION .text:CODE:REORDER(1) -BusFault_Handler - B BusFault_Handler - PUBWEAK UsageFault_Handler - SECTION .text:CODE:REORDER(1) -UsageFault_Handler - B UsageFault_Handler - PUBWEAK SVC_Handler - SECTION .text:CODE:REORDER(1) -SVC_Handler - B SVC_Handler - PUBWEAK DebugMon_Handler - SECTION .text:CODE:REORDER(1) -DebugMon_Handler - B DebugMon_Handler - PUBWEAK PendSV_Handler - SECTION .text:CODE:REORDER(1) -PendSV_Handler - B PendSV_Handler - PUBWEAK SysTick_Handler - SECTION .text:CODE:REORDER(1) -SysTick_Handler - B SysTick_Handler - PUBWEAK WDT_IRQHandler - SECTION .text:CODE:REORDER(1) -WDT_IRQHandler - B WDT_IRQHandler - PUBWEAK TMR0_IRQHandler - SECTION .text:CODE:REORDER(1) -TMR0_IRQHandler - B TMR0_IRQHandler - PUBWEAK TMR1_IRQHandler - SECTION .text:CODE:REORDER(1) -TMR1_IRQHandler - B TMR1_IRQHandler - PUBWEAK TMR2_IRQHandler - SECTION .text:CODE:REORDER(1) -TMR2_IRQHandler - B TMR2_IRQHandler - PUBWEAK TMR3_IRQHandler - SECTION .text:CODE:REORDER(1) -TMR3_IRQHandler - B TMR3_IRQHandler - PUBWEAK UART0_IRQHandler - SECTION .text:CODE:REORDER(1) -UART0_IRQHandler - B UART0_IRQHandler - PUBWEAK UART1_IRQHandler - SECTION .text:CODE:REORDER(1) -UART1_IRQHandler - B UART1_IRQHandler - PUBWEAK UART2_IRQHandler - SECTION .text:CODE:REORDER(1) -UART2_IRQHandler - B UART2_IRQHandler - PUBWEAK UART3_IRQHandler - SECTION .text:CODE:REORDER(1) -UART3_IRQHandler - B UART3_IRQHandler - PUBWEAK PWM1_IRQHandler - SECTION .text:CODE:REORDER(1) -PWM1_IRQHandler - B PWM1_IRQHandler - PUBWEAK I2C0_IRQHandler - SECTION .text:CODE:REORDER(1) -I2C0_IRQHandler - B I2C0_IRQHandler - PUBWEAK I2C1_IRQHandler - SECTION .text:CODE:REORDER(1) -I2C1_IRQHandler - B I2C1_IRQHandler - PUBWEAK I2C2_IRQHandler - SECTION .text:CODE:REORDER(1) -I2C2_IRQHandler - B I2C2_IRQHandler - PUBWEAK SPI_IRQHandler - SECTION .text:CODE:REORDER(1) -SPI_IRQHandler - B SPI_IRQHandler - PUBWEAK SSP0_IRQHandler - SECTION .text:CODE:REORDER(1) -SSP0_IRQHandler - B SSP0_IRQHandler - PUBWEAK SSP1_IRQHandler - SECTION .text:CODE:REORDER(1) -SSP1_IRQHandler - B SSP1_IRQHandler - PUBWEAK PLL0_IRQHandler - SECTION .text:CODE:REORDER(1) -PLL0_IRQHandler - B PLL0_IRQHandler - PUBWEAK RTC_IRQHandler - SECTION .text:CODE:REORDER(1) -RTC_IRQHandler - B RTC_IRQHandler - PUBWEAK EINT0_IRQHandler - SECTION .text:CODE:REORDER(1) -EINT0_IRQHandler - B EINT0_IRQHandler - PUBWEAK EINT1_IRQHandler - SECTION .text:CODE:REORDER(1) -EINT1_IRQHandler - B EINT1_IRQHandler - PUBWEAK EINT2_IRQHandler - SECTION .text:CODE:REORDER(1) -EINT2_IRQHandler - B EINT2_IRQHandler - PUBWEAK EINT3_IRQHandler - SECTION .text:CODE:REORDER(1) -EINT3_IRQHandler - B EINT3_IRQHandler - PUBWEAK ADC_IRQHandler - SECTION .text:CODE:REORDER(1) -ADC_IRQHandler - B ADC_IRQHandler - PUBWEAK BOD_IRQHandler - SECTION .text:CODE:REORDER(1) -BOD_IRQHandler - B BOD_IRQHandler - PUBWEAK USB_IRQHandler - SECTION .text:CODE:REORDER(1) -USB_IRQHandler - B USB_IRQHandler - PUBWEAK CAN_IRQHandler - SECTION .text:CODE:REORDER(1) -CAN_IRQHandler - B CAN_IRQHandler - PUBWEAK GPDMA_IRQHandler - SECTION .text:CODE:REORDER(1) -GPDMA_IRQHandler - B GPDMA_IRQHandler - PUBWEAK I2S_IRQHandler - SECTION .text:CODE:REORDER(1) -I2S_IRQHandler - B I2S_IRQHandler - PUBWEAK Ethernet_IRQHandler - SECTION .text:CODE:REORDER(1) -Ethernet_IRQHandler - B Ethernet_IRQHandler - PUBWEAK RIT_IRQHandler - SECTION .text:CODE:REORDER(1) -RIT_IRQHandler - B RIT_IRQHandler - PUBWEAK MotorControlPWM_IRQHandler - SECTION .text:CODE:REORDER(1) -MotorControlPWM_IRQHandler - B MotorControlPWM_IRQHandler - PUBWEAK QE_IRQHandler - SECTION .text:CODE:REORDER(1) -QE_IRQHandler - B QE_IRQHandler - PUBWEAK PLL1_IRQHandler - SECTION .text:CODE:REORDER(1) -PLL1_IRQHandler - B PLL1_IRQHandler - - END diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/main.c b/FreeRTOS/Demo/CORTEX_LPC1768_IAR/main.c deleted file mode 100644 index 89211e5f1..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/main.c +++ /dev/null @@ -1,376 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - - -/* - * Creates all the demo application tasks, then starts the scheduler. The WEB - * documentation provides more details of the standard demo application tasks - * (which just exist to test the kernel port and provide an example of how to use - * each FreeRTOS API function). - * - * In addition to the standard demo tasks, the following tasks and tests are - * defined and/or created within this file: - * - * "Check" hook - This only executes fully every five seconds from the tick - * hook. Its main function is to check that all the standard demo tasks are - * still operational. The status can be viewed using on the Task Stats page - * served by the WEB server. - * - * "uIP" task - This is the task that handles the uIP stack. All TCP/IP - * processing is performed in this task. - * - * "USB" task - Enumerates the USB device as a CDC class, then echoes back all - * received characters with a configurable offset (for example, if the offset - * is 1 and 'A' is received then 'B' will be sent back). A dumb terminal such - * as Hyperterminal can be used to talk to the USB task. - */ - -/* Scheduler includes. */ -#include "FreeRTOS.h" -#include "task.h" - -/* Demo app includes. */ -#include "BlockQ.h" -#include "integer.h" -#include "blocktim.h" -#include "flash.h" -#include "partest.h" -#include "semtest.h" -#include "PollQ.h" -#include "GenQTest.h" -#include "QPeek.h" -#include "recmutex.h" - -/*-----------------------------------------------------------*/ - -/* The time between cycles of the 'check' functionality (defined within the -tick hook). */ -#define mainCHECK_DELAY ( ( TickType_t ) 5000 / portTICK_PERIOD_MS ) - -/* The toggle rate for the LED. */ -#define mainLED_TOGGLE_RATE ( ( TickType_t ) 1000 / portTICK_PERIOD_MS ) - -/* Task priorities. */ -#define mainQUEUE_POLL_PRIORITY ( tskIDLE_PRIORITY + 2 ) -#define mainSEM_TEST_PRIORITY ( tskIDLE_PRIORITY + 1 ) -#define mainBLOCK_Q_PRIORITY ( tskIDLE_PRIORITY + 2 ) -#define mainUIP_TASK_PRIORITY ( tskIDLE_PRIORITY + 3 ) -#define mainFLASH_TASK_PRIORITY ( tskIDLE_PRIORITY + 2 ) -#define mainINTEGER_TASK_PRIORITY ( tskIDLE_PRIORITY ) -#define mainGEN_QUEUE_TASK_PRIORITY ( tskIDLE_PRIORITY ) - -/* The WEB server has a larger stack as it utilises stack hungry string -handling library calls. */ -#define mainBASIC_WEB_STACK_SIZE ( configMINIMAL_STACK_SIZE * 4 ) - -/* The message displayed by the WEB server when all tasks are executing -without an error being reported. */ -#define mainPASS_STATUS_MESSAGE "All tasks are executing without error." - -/*-----------------------------------------------------------*/ - -/* - * Configure the hardware for the demo. - */ -static void prvSetupHardware( void ); - -/* - * The task that handles the uIP stack. All TCP/IP processing is performed in - * this task. - */ -extern void vuIP_Task( void *pvParameters ); - -/* - * The task that handles the USB stack. - */ -extern void vUSBTask( void *pvParameters ); - -/* - * Very basic task that does nothing but use delays to flash an LED. - */ -static void prvFlashTask( void *pvParameters ); - -/* - * Simply returns the current status message for display on served WEB pages. - */ -char *pcGetTaskStatusMessage( void ); - -/*-----------------------------------------------------------*/ - -/* Holds the status message displayed by the WEB server. */ -static char *pcStatusMessage = mainPASS_STATUS_MESSAGE; - -/*-----------------------------------------------------------*/ - -int main( void ) -{ - /* Configure the hardware for use by this demo. */ - prvSetupHardware(); - - /* Start the standard demo tasks. These are just here to exercise the - kernel port and provide examples of how the FreeRTOS API can be used. */ - vStartBlockingQueueTasks( mainBLOCK_Q_PRIORITY ); - vCreateBlockTimeTasks(); - vStartSemaphoreTasks( mainSEM_TEST_PRIORITY ); - vStartPolledQueueTasks( mainQUEUE_POLL_PRIORITY ); - vStartIntegerMathTasks( mainINTEGER_TASK_PRIORITY ); - vStartGenericQueueTasks( mainGEN_QUEUE_TASK_PRIORITY ); - vStartQueuePeekTasks(); - vStartRecursiveMutexTasks(); - - /* Create the simple LED flash task. */ - xTaskCreate( prvFlashTask, "Flash", configMINIMAL_STACK_SIZE, ( void * ) NULL, mainFLASH_TASK_PRIORITY, NULL ); - - /* Create the USB task. */ - xTaskCreate( vUSBTask, "USB", configMINIMAL_STACK_SIZE, ( void * ) NULL, tskIDLE_PRIORITY, NULL ); - - /* Create the uIP task. The WEB server runs in this task. */ - xTaskCreate( vuIP_Task, "uIP", mainBASIC_WEB_STACK_SIZE, ( void * ) NULL, mainUIP_TASK_PRIORITY, NULL ); - - /* Start the scheduler. */ - vTaskStartScheduler(); - - /* Will only get here if there was insufficient memory to create the idle - task. The idle task is created within vTaskStartScheduler(). */ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -void vApplicationTickHook( void ) -{ -static unsigned long ulTicksSinceLastDisplay = 0; - - /* Called from every tick interrupt as described in the comments at the top - of this file. - - Have enough ticks passed to make it time to perform our health status - check again? */ - ulTicksSinceLastDisplay++; - if( ulTicksSinceLastDisplay >= mainCHECK_DELAY ) - { - /* Reset the counter so these checks run again in mainCHECK_DELAY - ticks time. */ - ulTicksSinceLastDisplay = 0; - - /* Has an error been found in any task? */ - if( xAreGenericQueueTasksStillRunning() != pdTRUE ) - { - pcStatusMessage = "An error has been detected in the Generic Queue test/demo."; - } - else if( xAreQueuePeekTasksStillRunning() != pdTRUE ) - { - pcStatusMessage = "An error has been detected in the Peek Queue test/demo."; - } - else if( xAreBlockingQueuesStillRunning() != pdTRUE ) - { - pcStatusMessage = "An error has been detected in the Block Queue test/demo."; - } - else if( xAreBlockTimeTestTasksStillRunning() != pdTRUE ) - { - pcStatusMessage = "An error has been detected in the Block Time test/demo."; - } - else if( xAreSemaphoreTasksStillRunning() != pdTRUE ) - { - pcStatusMessage = "An error has been detected in the Semaphore test/demo."; - } - else if( xArePollingQueuesStillRunning() != pdTRUE ) - { - pcStatusMessage = "An error has been detected in the Poll Queue test/demo."; - } - else if( xAreIntegerMathsTaskStillRunning() != pdTRUE ) - { - pcStatusMessage = "An error has been detected in the Int Math test/demo."; - } - else if( xAreRecursiveMutexTasksStillRunning() != pdTRUE ) - { - pcStatusMessage = "An error has been detected in the Mutex test/demo."; - } - } -} -/*-----------------------------------------------------------*/ - -static void prvFlashTask( void *pvParameters ) -{ -TickType_t xLastFlashTime; - - /* We need to initialise xLastFlashTime prior to the first call to - vTaskDelayUntil(). */ - xLastFlashTime = xTaskGetTickCount(); - - for(;;) - { - /* Simply toggle the LED between delays. */ - vTaskDelayUntil( &xLastFlashTime, mainLED_TOGGLE_RATE ); - vParTestToggleLED( 0 ); - } -} -/*-----------------------------------------------------------*/ - -char *pcGetTaskStatusMessage( void ) -{ - /* Not bothered about a critical section here. */ - return pcStatusMessage; -} -/*-----------------------------------------------------------*/ - -void prvSetupHardware( void ) -{ - /* Disable peripherals power. */ - SC->PCONP = 0; - - /* Enable GPIO power. */ - SC->PCONP = PCONP_PCGPIO; - - /* Disable TPIU. */ - PINCON->PINSEL10 = 0; - - if ( SC->PLL0STAT & ( 1 << 25 ) ) - { - /* Enable PLL, disconnected. */ - SC->PLL0CON = 1; - SC->PLL0FEED = PLLFEED_FEED1; - SC->PLL0FEED = PLLFEED_FEED2; - } - - /* Disable PLL, disconnected. */ - SC->PLL0CON = 0; - SC->PLL0FEED = PLLFEED_FEED1; - SC->PLL0FEED = PLLFEED_FEED2; - - /* Enable main OSC. */ - SC->SCS |= 0x20; - while( !( SC->SCS & 0x40 ) ); - - /* select main OSC, 12MHz, as the PLL clock source. */ - SC->CLKSRCSEL = 0x1; - - SC->PLL0CFG = 0x20031; - SC->PLL0FEED = PLLFEED_FEED1; - SC->PLL0FEED = PLLFEED_FEED2; - - /* Enable PLL, disconnected. */ - SC->PLL0CON = 1; - SC->PLL0FEED = PLLFEED_FEED1; - SC->PLL0FEED = PLLFEED_FEED2; - - /* Set clock divider. */ - SC->CCLKCFG = 0x03; - - /* Configure flash accelerator. */ - SC->FLASHCFG = 0x403a; - - /* Check lock bit status. */ - while( ( ( SC->PLL0STAT & ( 1 << 26 ) ) == 0 ) ); - - /* Enable and connect. */ - SC->PLL0CON = 3; - SC->PLL0FEED = PLLFEED_FEED1; - SC->PLL0FEED = PLLFEED_FEED2; - while( ( ( SC->PLL0STAT & ( 1 << 25 ) ) == 0 ) ); - - - - - /* Configure the clock for the USB. */ - - if( SC->PLL1STAT & ( 1 << 9 ) ) - { - /* Enable PLL, disconnected. */ - SC->PLL1CON = 1; - SC->PLL1FEED = PLLFEED_FEED1; - SC->PLL1FEED = PLLFEED_FEED2; - } - - /* Disable PLL, disconnected. */ - SC->PLL1CON = 0; - SC->PLL1FEED = PLLFEED_FEED1; - SC->PLL1FEED = PLLFEED_FEED2; - - SC->PLL1CFG = 0x23; - SC->PLL1FEED = PLLFEED_FEED1; - SC->PLL1FEED = PLLFEED_FEED2; - - /* Enable PLL, disconnected. */ - SC->PLL1CON = 1; - SC->PLL1FEED = PLLFEED_FEED1; - SC->PLL1FEED = PLLFEED_FEED2; - while( ( ( SC->PLL1STAT & ( 1 << 10 ) ) == 0 ) ); - - /* Enable and connect. */ - SC->PLL1CON = 3; - SC->PLL1FEED = PLLFEED_FEED1; - SC->PLL1FEED = PLLFEED_FEED2; - while( ( ( SC->PLL1STAT & ( 1 << 9 ) ) == 0 ) ); - - /* Setup the peripheral bus to be the same as the CPU output (100 MHz). */ - SC->PCLKSEL0 = 0x05555555; - - /* Configure the LEDs. */ - vParTestInitialise(); -} -/*-----------------------------------------------------------*/ - -void vApplicationStackOverflowHook( TaskHandle_t pxTask, char *pcTaskName ) -{ - /* This function will get called if a task overflows its stack. */ - - ( void ) pxTask; - ( void ) pcTaskName; - - for( ;; ); -} -/*-----------------------------------------------------------*/ - -void vConfigureTimerForRunTimeStats( void ) -{ -const unsigned long TCR_COUNT_RESET = 2, CTCR_CTM_TIMER = 0x00, TCR_COUNT_ENABLE = 0x01; - - /* This function configures a timer that is used as the time base when - collecting run time statistical information - basically the percentage - of CPU time that each task is utilising. It is called automatically when - the scheduler is started (assuming configGENERATE_RUN_TIME_STATS is set - to 1). */ - - /* Power up and feed the timer. */ - SC->PCONP |= 0x02UL; - SC->PCLKSEL0 = (SC->PCLKSEL0 & (~(0x3<<2))) | (0x01 << 2); - - /* Reset Timer 0 */ - TIM0->TCR = TCR_COUNT_RESET; - - /* Just count up. */ - TIM0->CTCR = CTCR_CTM_TIMER; - - /* Prescale to a frequency that is good enough to get a decent resolution, - but not too fast so as to overflow all the time. */ - TIM0->PR = ( configCPU_CLOCK_HZ / 10000UL ) - 1UL; - - /* Start the counter. */ - TIM0->TCR = TCR_COUNT_ENABLE; -} -/*-----------------------------------------------------------*/ - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/printf-stdarg.c b/FreeRTOS/Demo/CORTEX_LPC1768_IAR/printf-stdarg.c deleted file mode 100644 index b5ac41be7..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/printf-stdarg.c +++ /dev/null @@ -1,293 +0,0 @@ -/* - Copyright 2001, 2002 Georges Menie (www.menie.org) - stdarg version contributed by Christian Ettinger - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU Lesser General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -*/ - -/* - putchar is the only external dependency for this file, - if you have a working putchar, leave it commented out. - If not, uncomment the define below and - replace outbyte(c) by your own function call. - -*/ - -#define putchar(c) c - -#include - -static void printchar(char **str, int c) -{ - //extern int putchar(int c); - - if (str) { - **str = (char)c; - ++(*str); - } - else - { - (void)putchar(c); - } -} - -#define PAD_RIGHT 1 -#define PAD_ZERO 2 - -static int prints(char **out, const char *string, int width, int pad) -{ - register int pc = 0, padchar = ' '; - - if (width > 0) { - register int len = 0; - register const char *ptr; - for (ptr = string; *ptr; ++ptr) ++len; - if (len >= width) width = 0; - else width -= len; - if (pad & PAD_ZERO) padchar = '0'; - } - if (!(pad & PAD_RIGHT)) { - for ( ; width > 0; --width) { - printchar (out, padchar); - ++pc; - } - } - for ( ; *string ; ++string) { - printchar (out, *string); - ++pc; - } - for ( ; width > 0; --width) { - printchar (out, padchar); - ++pc; - } - - return pc; -} - -/* the following should be enough for 32 bit int */ -#define PRINT_BUF_LEN 12 - -static int printi(char **out, int i, int b, int sg, int width, int pad, int letbase) -{ - char print_buf[PRINT_BUF_LEN]; - register char *s; - register int t, neg = 0, pc = 0; - register unsigned int u = (unsigned int)i; - - if (i == 0) { - print_buf[0] = '0'; - print_buf[1] = '\0'; - return prints (out, print_buf, width, pad); - } - - if (sg && b == 10 && i < 0) { - neg = 1; - u = (unsigned int)-i; - } - - s = print_buf + PRINT_BUF_LEN-1; - *s = '\0'; - - while (u) { - t = (unsigned int)u % b; - if( t >= 10 ) - t += letbase - '0' - 10; - *--s = (char)(t + '0'); - u /= b; - } - - if (neg) { - if( width && (pad & PAD_ZERO) ) { - printchar (out, '-'); - ++pc; - --width; - } - else { - *--s = '-'; - } - } - - return pc + prints (out, s, width, pad); -} - -static int print( char **out, const char *format, va_list args ) -{ - register int width, pad; - register int pc = 0; - char scr[2]; - - for (; *format != 0; ++format) { - if (*format == '%') { - ++format; - width = pad = 0; - if (*format == '\0') break; - if (*format == '%') goto out; - if (*format == '-') { - ++format; - pad = PAD_RIGHT; - } - while (*format == '0') { - ++format; - pad |= PAD_ZERO; - } - for ( ; *format >= '0' && *format <= '9'; ++format) { - width *= 10; - width += *format - '0'; - } - if( *format == 's' ) { - register char *s = (char *)va_arg( args, int ); - pc += prints (out, s?s:"(null)", width, pad); - continue; - } - if( *format == 'd' ) { - pc += printi (out, va_arg( args, int ), 10, 1, width, pad, 'a'); - continue; - } - if( *format == 'x' ) { - pc += printi (out, va_arg( args, int ), 16, 0, width, pad, 'a'); - continue; - } - if( *format == 'X' ) { - pc += printi (out, va_arg( args, int ), 16, 0, width, pad, 'A'); - continue; - } - if( *format == 'u' ) { - pc += printi (out, va_arg( args, int ), 10, 0, width, pad, 'a'); - continue; - } - if( *format == 'c' ) { - /* char are converted to int then pushed on the stack */ - scr[0] = (char)va_arg( args, int ); - scr[1] = '\0'; - pc += prints (out, scr, width, pad); - continue; - } - } - else { - out: - printchar (out, *format); - ++pc; - } - } - if (out) **out = '\0'; - va_end( args ); - return pc; -} - -int printf(const char *format, ...) -{ - va_list args; - - va_start( args, format ); - return print( 0, format, args ); -} - -int sprintf(char *out, const char *format, ...) -{ - va_list args; - - va_start( args, format ); - return print( &out, format, args ); -} - - -int snprintf( char *buf, unsigned int count, const char *format, ... ) -{ - va_list args; - - ( void ) count; - - va_start( args, format ); - return print( &buf, format, args ); -} - - -#ifdef TEST_PRINTF -int main(void) -{ - char *ptr = "Hello world!"; - char *np = 0; - int i = 5; - unsigned int bs = sizeof(int)*8; - int mi; - char buf[80]; - - mi = (1 << (bs-1)) + 1; - printf("%s\n", ptr); - printf("printf test\n"); - printf("%s is null pointer\n", np); - printf("%d = 5\n", i); - printf("%d = - max int\n", mi); - printf("char %c = 'a'\n", 'a'); - printf("hex %x = ff\n", 0xff); - printf("hex %02x = 00\n", 0); - printf("signed %d = unsigned %u = hex %x\n", -3, -3, -3); - printf("%d %s(s)%", 0, "message"); - printf("\n"); - printf("%d %s(s) with %%\n", 0, "message"); - sprintf(buf, "justif: \"%-10s\"\n", "left"); printf("%s", buf); - sprintf(buf, "justif: \"%10s\"\n", "right"); printf("%s", buf); - sprintf(buf, " 3: %04d zero padded\n", 3); printf("%s", buf); - sprintf(buf, " 3: %-4d left justif.\n", 3); printf("%s", buf); - sprintf(buf, " 3: %4d right justif.\n", 3); printf("%s", buf); - sprintf(buf, "-3: %04d zero padded\n", -3); printf("%s", buf); - sprintf(buf, "-3: %-4d left justif.\n", -3); printf("%s", buf); - sprintf(buf, "-3: %4d right justif.\n", -3); printf("%s", buf); - - return 0; -} - -/* - * if you compile this file with - * gcc -Wall $(YOUR_C_OPTIONS) -DTEST_PRINTF -c printf.c - * you will get a normal warning: - * printf.c:214: warning: spurious trailing `%' in format - * this line is testing an invalid % at the end of the format string. - * - * this should display (on 32bit int machine) : - * - * Hello world! - * printf test - * (null) is null pointer - * 5 = 5 - * -2147483647 = - max int - * char a = 'a' - * hex ff = ff - * hex 00 = 00 - * signed -3 = unsigned 4294967293 = hex fffffffd - * 0 message(s) - * 0 message(s) with % - * justif: "left " - * justif: " right" - * 3: 0003 zero padded - * 3: 3 left justif. - * 3: 3 right justif. - * -3: -003 zero padded - * -3: -3 left justif. - * -3: -3 right justif. - */ - -#endif - - -/* To keep linker happy. */ -int write( int i, char* c, int n) -{ - (void)i; - (void)n; - (void)c; - return 0; -} - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/settings/RTOSDemo.cspy.bat b/FreeRTOS/Demo/CORTEX_LPC1768_IAR/settings/RTOSDemo.cspy.bat deleted file mode 100644 index 597d84d1a..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/settings/RTOSDemo.cspy.bat +++ /dev/null @@ -1,15 +0,0 @@ -@REM This batch file has been generated by the IAR Embedded Workbench -@REM C-SPY Debugger, as an aid to preparing a command line for running -@REM the cspybat command line utility using the appropriate settings. -@REM -@REM You can launch cspybat by typing the name of this batch file followed -@REM by the name of the debug file (usually an ELF/DWARF or UBROF file). -@REM Note that this file is generated every time a new debug session -@REM is initialized, so you may want to move or rename the file before -@REM making changes. -@REM - - -"C:\devtools\IAR Systems\Embedded Workbench 6.0\common\bin\cspybat" "C:\devtools\IAR Systems\Embedded Workbench 6.0\arm\bin\armproc.dll" "C:\devtools\IAR Systems\Embedded Workbench 6.0\arm\bin\armjlink.dll" %1 --plugin "C:\devtools\IAR Systems\Embedded Workbench 6.0\arm\bin\armbat.dll" --macro "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\CORTEX_LPC1768_IAR\Flash.mac" --flash_loader "C:\devtools\IAR Systems\Embedded Workbench 6.0\arm\config\flashloader\NXP\FlashNXPLPC512K_Cortex.board" --backend -B "--endian=little" "--cpu=Cortex-M3" "--fpu=None" "-p" "C:\devtools\IAR Systems\Embedded Workbench 6.0\arm\CONFIG\debugger\NXP\iolpc1768.ddf" "--drv_verify_download" "--semihosting=none" "--device=LPC1768" "--drv_communication=USB0" "--jlink_speed=auto" "--jlink_initial_speed=32" "--jlink_reset_strategy=0,0" "--drv_catch_exceptions=0x000" "--drv_swo_clock_setup=72000000,0,2000000" - - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/settings/RTOSDemo.dbgdt b/FreeRTOS/Demo/CORTEX_LPC1768_IAR/settings/RTOSDemo.dbgdt deleted file mode 100644 index 182e449d2..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/settings/RTOSDemo.dbgdt +++ /dev/null @@ -1,79 +0,0 @@ - - - - - - - - - 201342 - - 20 - 1006 - 268 - 67 - - - - - - - - 277272727 - - - - - - 200100 - 200200100100100100 - - - - - - - - TabID-31842-26703 - Debug Log - Debug-Log - - - - TabID-31319-26713 - Build - Build - - - - - 0 - - - TabID-9822-26706 - Workspace - Workspace - - - RTOSDemo - - - - 0 - - - - - - TextEditorC:\E\Dev\FreeRTOS\WorkingCopy3\Demo\CORTEX_LPC1768_IAR\main.c0146526652660TextEditorC:\E\Dev\FreeRTOS\WorkingCopy3\Source\portable\IAR\ARM_CM3\port.c014558215821TextEditorC:\E\Dev\FreeRTOS\WorkingCopy3\Demo\CORTEX_LPC1768_IAR\ParTest.c07634673467TextEditorC:\E\Dev\FreeRTOS\WorkingCopy3\Source\queue.c010553478834788TextEditorC:\E\Dev\FreeRTOS\WorkingCopy3\Demo\CORTEX_LPC1768_IAR\webserver\emac.c013052735273TextEditorC:\E\Dev\FreeRTOS\WorkingCopy3\Demo\CORTEX_LPC1768_IAR\webserver\EthDev_LPC17xx.h02821789217902TextEditorC:\E\Dev\FreeRTOS\WorkingCopy3\Demo\CORTEX_LPC1768_IAR\webserver\httpd-cgi.c0000TextEditorC:\E\Dev\FreeRTOS\WorkingCopy3\Demo\CORTEX_LPC1768_IAR\FreeRTOSConfig.h045000100000010000001 - - - - - - - iaridepm.enu1debuggergui.enu1-2-2742351-2-2200200142857203252252143756098-2-21981402-2-214042001002857203252142857203252 - - - - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/settings/RTOSDemo.dni b/FreeRTOS/Demo/CORTEX_LPC1768_IAR/settings/RTOSDemo.dni deleted file mode 100644 index 9c7bea544..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/settings/RTOSDemo.dni +++ /dev/null @@ -1,73 +0,0 @@ -[DebugChecksum] -Checksum=-1523643934 -[DisAssemblyWindow] -NumStates=_ 1 -State 1=_ 1 -[InstructionProfiling] -Enabled=_ 0 -[CodeCoverage] -Enabled=_ 0 -[Profiling] -Enabled=0 -[StackPlugin] -Enabled=1 -OverflowWarningsEnabled=1 -WarningThreshold=90 -SpWarningsEnabled=1 -WarnHow=0 -UseTrigger=1 -TriggerName=main -LimitSize=0 -ByteLimit=50 -[TraceHelper] -Enabled=0 -ShowSource=1 -[Log file] -LoggingEnabled=_ 0 -LogFile=_ "" -Category=_ 0 -[TermIOLog] -LoggingEnabled=_ 0 -LogFile=_ "" -[DriverProfiling] -Enabled=0 -Source=2 -Graph=0 -[Breakpoints] -Count=0 -[Stack] -FillEnabled=0 -OverflowWarningsEnabled=1 -WarningThreshold=90 -SpWarningsEnabled=1 -WarnLogOnly=1 -UseTrigger=1 -TriggerName=main -LimitSize=0 -ByteLimit=50 -[InterruptLog] -LogEnabled=0 -SumEnabled=0 -GraphEnabled=0 -ShowTimeLog=1 -ShowTimeSum=1 -SumSortOrder=0 -[Interrupts] -Enabled=1 -[MemoryMap] -Enabled=0 -Base=0 -UseAuto=0 -TypeViolation=1 -UnspecRange=1 -ActionState=1 -[Trace1] -Enabled=0 -ShowSource=1 -[Disassemble mode] -mode=0 -[Breakpoints2] -Count=0 -[Aliases] -Count=0 -SuppressDialog=0 diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/settings/RTOSDemo.wsdt b/FreeRTOS/Demo/CORTEX_LPC1768_IAR/settings/RTOSDemo.wsdt deleted file mode 100644 index a54070a95..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/settings/RTOSDemo.wsdt +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - RTOSDemo/Debug - - - - - - - - - 393272727 - - - - - - - 20100626867 - - 48268826191343 - - - - - - - TabID-17246-25544 - Workspace - Workspace - - - RTOSDemo - - - - 0 - - - TabID-17664-26559 - Build - Build - - - TabID-11527-1227Find in FilesFind-in-FilesTabID-6216-4192Debug LogDebug-Log - - 0 - - - - - - TextEditor$WS_DIR$\main.c000000100000010000001 - - - - - - - iaridepm.enu1-2-2639467-2-2240200142857203666279167652749-2-22991682-2-216843011002381306517142857203666 - - - - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/settings/RTOSDemo_Debug.jlink b/FreeRTOS/Demo/CORTEX_LPC1768_IAR/settings/RTOSDemo_Debug.jlink deleted file mode 100644 index e49918734..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/settings/RTOSDemo_Debug.jlink +++ /dev/null @@ -1,14 +0,0 @@ -[FLASH] -SkipProgOnCRCMatch = 1 -VerifyDownload = 1 -AllowCaching = 1 -EnableFlashDL = 2 -Override = 0 -Device="ADUC7020X62" -[BREAKPOINTS] -ShowInfoWin = 1 -EnableFlashBP = 2 -BPDuringExecution = 0 -[CPU] -OverrideMemMap = 0 -AllowSimulation = 1 diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/system_LPC17xx.h b/FreeRTOS/Demo/CORTEX_LPC1768_IAR/system_LPC17xx.h deleted file mode 100644 index a5c9727d4..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/system_LPC17xx.h +++ /dev/null @@ -1,40 +0,0 @@ -/****************************************************************************** - * @file: system_LPC17xx.h - * @purpose: CMSIS Cortex-M3 Device Peripheral Access Layer Header File - * for the NXP LPC17xx Device Series - * @version: V1.0 - * @date: 25. Nov. 2008 - *---------------------------------------------------------------------------- - * - * Copyright (C) 2008 ARM Limited. All rights reserved. - * - * ARM Limited (ARM) is supplying this software for use with Cortex-M3 - * processor based microcontrollers. This file can be freely distributed - * within development tools that are supporting such ARM based processors. - * - * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED - * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. - * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR - * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. - * - ******************************************************************************/ - - -#ifndef __SYSTEM_LPC17xx_H -#define __SYSTEM_LPC17xx_H - -extern uint32_t SystemFrequency; /*!< System Clock Frequency (Core Clock) */ - - -/** - * Initialize the system - * - * @param none - * @return none - * - * @brief Setup the microcontroller system. - * Initialize the System and update the SystemFrequency variable. - */ -extern void SystemInit (void); -#endif diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/usbser.inf b/FreeRTOS/Demo/CORTEX_LPC1768_IAR/usbser.inf deleted file mode 100644 index 607fc9e6d..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/usbser.inf +++ /dev/null @@ -1,45 +0,0 @@ -[Version] -Signature="$Windows NT$" -Class=Ports -ClassGuid={4D36E978-E325-11CE-BFC1-08002BE10318} -Provider=%LINUX% -DriverVer=08/17/2004,0.0.2.0 -; Copyright (C) 2004 Al Borchers (alborchers@steinerpoint.com) -; released under GNU General Public License - -[Manufacturer] -%LINUX%=GSerialDeviceList - -[GSerialDeviceList] -%GSERIAL%=GSerialInstall, USB\VID_FFFF&PID_0005 - -[DestinationDirs] -DefaultDestDir=10,System32\Drivers - -[GSerialInstall] -CopyFiles=GSerialCopyFiles -AddReg=GSerialAddReg - -[GSerialCopyFiles] -usbser.sys - -[GSerialAddReg] -HKR,,DevLoader,,*ntkern -HKR,,NTMPDriver,,usbser.sys -HKR,,EnumPropPages32,,"MsPorts.dll,SerialPortPropPageProvider" - -[GSerialInstall.Services] -AddService = usbser,0x0002,GSerialService - -[GSerialService] -DisplayName = %GSERIAL_DISPLAY_NAME% -ServiceType = 1 ; SERVICE_KERNEL_DRIVER -StartType = 3 ; SERVICE_DEMAND_START -ErrorControl = 1 ; SERVICE_ERROR_NORMAL -ServiceBinary = %10%\System32\Drivers\usbser.sys -LoadOrderGroup = Base - -[Strings] -LINUX = "Linux" -GSERIAL = "USB CDC serial port emulation" -GSERIAL_DISPLAY_NAME = "USB CDC serial port emulation" \ No newline at end of file diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/EthDev.h b/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/EthDev.h deleted file mode 100644 index f67789f44..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/EthDev.h +++ /dev/null @@ -1,111 +0,0 @@ -/* - * @file: EthDev.h - * @purpose: Ethernet Device Definitions - * @version: V1.10 - * @date: 24. Feb. 2009 - *---------------------------------------------------------------------------- - * - * Copyright (C) 2009 ARM Limited. All rights reserved. - * - * ARM Limited (ARM) is supplying this software for use with Cortex-M3 - * processor based microcontrollers. This file can be freely distributed - * within development tools that are supporting such ARM based processors. - * - * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED - * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. - * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR - * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. - * - */ - -#ifndef _ETHDEV__H -#define _ETHDEV__H - -#ifndef NULL - #define NULL 0 -#endif - -/*---------------------------------------------------------------------------- - Ethernet Device Defines - *----------------------------------------------------------------------------*/ -#define EthDev_ADDR_SIZE 6 /*!< Ethernet Address size in bytes */ -#define EthDev_MTU_SIZE 1514 /*!< Maximum Transmission Unit */ - - -/*---------------------------------------------------------------------------- - Ethernet Device Configuration and Control Command Defines - *----------------------------------------------------------------------------*/ -typedef enum { - EthDev_LINK_DOWN = 0, /*!< Ethernet link not established */ - EthDev_LINK_UP = 1, /*!< Ethernet link established */ -} EthDev_LINK; - -typedef enum { - EthDev_SPEED_10M = 0, /*!< 10.0 Mbps link speed */ - EthDev_SPEED_100M = 1, /*!< 100.0 Mbps link speed */ - EthDev_SPEED_1000M = 2, /*!< 1.0 Gbps link speed */ -} EthDev_SPEED; - -typedef enum { - EthDev_DUPLEX_HALF = 0, /*!< Link half duplex */ - EthDev_DUPLEX_FULL = 1, /*!< Link full duplex */ -} EthDev_DUPLEX; - -typedef enum { - EthDev_MODE_AUTO = 0, - EthDev_MODE_10M_FULL = 1, - EthDev_MODE_10M_HALF = 2, - EthDev_MODE_100M_FULL = 3, - EthDev_MODE_100M_HALF = 4, - EthDev_MODE_1000M_FULL = 5, - EthDev_MODE_1000M_HALF = 6, -} EthDev_MODE; - -typedef struct { - EthDev_LINK Link : 1; - EthDev_DUPLEX Duplex : 1; - EthDev_SPEED Speed : 2; -} EthDev_STATUS; - - -/*---------------------------------------------------------------------------- - Ethernet Device IO Block Structure - *----------------------------------------------------------------------------*/ -typedef struct { - - /* Initialized by the user application before call to Init. */ - EthDev_MODE Mode; - unsigned char HwAddr[EthDev_ADDR_SIZE]; - void *(*RxFrame) (int size); - void (*RxFrameReady) (int size); - - /* Initialized by Ethernet driver. */ - int (*Init) (void); - int (*UnInit) (void); - int (*SetMCFilter)(int NumHwAddr, unsigned char *pHwAddr); - int (*TxFrame) (void *pData, int size); - void (*Lock) (void); - void (*UnLock) (void); - EthDev_STATUS (*LinkChk) (void); -} EthDev_IOB; - - -/* - * Look for received data. If data is found then uip_buf is assigned to the - * new data and the length of the data is returned. If no data is found then - * uip_buf is not updated and 0 is returned. - */ -unsigned long ulGetEMACRxData( void ); - -/* - * Send usTxDataLen bytes from uip_buf. - */ -void vSendEMACTxData( unsigned short usTxDataLen ); - -/* - * Prepare the Ethernet hardware ready for TCP/IP comms. - */ -long lEMACInit(void); - -#endif diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/EthDev_LPC17xx.h b/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/EthDev_LPC17xx.h deleted file mode 100644 index 03a875cb7..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/EthDev_LPC17xx.h +++ /dev/null @@ -1,321 +0,0 @@ -/* - * @file: EthDev_LPC17xx.h - * @purpose: Ethernet Device Definitions for NXP LPC17xx - * @version: V0.01 - * @date: 14. May 2009 - *---------------------------------------------------------------------------- - * - * Copyright (C) 2009 ARM Limited. All rights reserved. - * - * ARM Limited (ARM) is supplying this software for use with Cortex-M3 - * processor based microcontrollers. This file can be freely distributed - * within development tools that are supporting such ARM based processors. - * - * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED - * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. - * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR - * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. - * - */ - -#ifndef __ETHDEV_LPC17XX_H -#define __ETHDEV_LPC17XX_H - -#include - -/* EMAC Memory Buffer configuration for 16K Ethernet RAM. */ -#define NUM_RX_FRAG 3 /* Num.of RX Fragments. */ -#define NUM_TX_FRAG 2 /* Num.of TX Fragments. */ -#define ETH_FRAG_SIZE 1536 /* Packet Fragment size 1536 Bytes */ - -#define ETH_MAX_FLEN 1536 /* Max. Ethernet Frame Size */ - -typedef struct { /* RX Descriptor struct */ - uint32_t Packet; - uint32_t Ctrl; -} RX_DESC_TypeDef; - -typedef struct { /* RX Status struct */ - uint32_t Info; - uint32_t HashCRC; -} RX_STAT_TypeDef; - -typedef struct { /* TX Descriptor struct */ - uint32_t Packet; - uint32_t Ctrl; -} TX_DESC_TypeDef; - -typedef struct { /* TX Status struct */ - uint32_t Info; -} TX_STAT_TypeDef; - - -/* EMAC variables located in AHB SRAM bank 1*/ -#define AHB_SRAM_BANK1_BASE 0x2007c000UL -#define RX_DESC_BASE (AHB_SRAM_BANK1_BASE ) -#define RX_STAT_BASE (RX_DESC_BASE + NUM_RX_FRAG*(2*4)) /* 2 * uint32_t, see RX_DESC_TypeDef */ -#define TX_DESC_BASE (RX_STAT_BASE + NUM_RX_FRAG*(2*4)) /* 2 * uint32_t, see RX_STAT_TypeDef */ -#define TX_STAT_BASE (TX_DESC_BASE + NUM_TX_FRAG*(2*4)) /* 2 * uint32_t, see TX_DESC_TypeDef */ -#define ETH_BUF_BASE (TX_STAT_BASE + NUM_TX_FRAG*(1*4)) /* 1 * uint32_t, see TX_STAT_TypeDef */ - -/* RX and TX descriptor and status definitions. */ -#define RX_DESC_PACKET(i) (*(unsigned int *)(RX_DESC_BASE + 8*i)) -#define RX_DESC_CTRL(i) (*(unsigned int *)(RX_DESC_BASE+4 + 8*i)) -#define RX_STAT_INFO(i) (*(unsigned int *)(RX_STAT_BASE + 8*i)) -#define RX_STAT_HASHCRC(i) (*(unsigned int *)(RX_STAT_BASE+4 + 8*i)) -#define TX_DESC_PACKET(i) (*(unsigned int *)(TX_DESC_BASE + 8*i)) -#define TX_DESC_CTRL(i) (*(unsigned int *)(TX_DESC_BASE+4 + 8*i)) -#define TX_STAT_INFO(i) (*(unsigned int *)(TX_STAT_BASE + 4*i)) -#define ETH_BUF(i) ( ETH_BUF_BASE + ETH_FRAG_SIZE*i ) -#define ETH_NUM_BUFFERS ( NUM_TX_FRAG + NUM_RX_FRAG + 1 ) /* There are in fact 2 more buffers than descriptors as the two Tx descriptors use the same buffer to speed up the uip Tx. */ - - -/* MAC Configuration Register 1 */ -#define MAC1_REC_EN 0x00000001 /* Receive Enable */ -#define MAC1_PASS_ALL 0x00000002 /* Pass All Receive Frames */ -#define MAC1_RX_FLOWC 0x00000004 /* RX Flow Control */ -#define MAC1_TX_FLOWC 0x00000008 /* TX Flow Control */ -#define MAC1_LOOPB 0x00000010 /* Loop Back Mode */ -#define MAC1_RES_TX 0x00000100 /* Reset TX Logic */ -#define MAC1_RES_MCS_TX 0x00000200 /* Reset MAC TX Control Sublayer */ -#define MAC1_RES_RX 0x00000400 /* Reset RX Logic */ -#define MAC1_RES_MCS_RX 0x00000800 /* Reset MAC RX Control Sublayer */ -#define MAC1_SIM_RES 0x00004000 /* Simulation Reset */ -#define MAC1_SOFT_RES 0x00008000 /* Soft Reset MAC */ - -/* MAC Configuration Register 2 */ -#define MAC2_FULL_DUP 0x00000001 /* Full Duplex Mode */ -#define MAC2_FRM_LEN_CHK 0x00000002 /* Frame Length Checking */ -#define MAC2_HUGE_FRM_EN 0x00000004 /* Huge Frame Enable */ -#define MAC2_DLY_CRC 0x00000008 /* Delayed CRC Mode */ -#define MAC2_CRC_EN 0x00000010 /* Append CRC to every Frame */ -#define MAC2_PAD_EN 0x00000020 /* Pad all Short Frames */ -#define MAC2_VLAN_PAD_EN 0x00000040 /* VLAN Pad Enable */ -#define MAC2_ADET_PAD_EN 0x00000080 /* Auto Detect Pad Enable */ -#define MAC2_PPREAM_ENF 0x00000100 /* Pure Preamble Enforcement */ -#define MAC2_LPREAM_ENF 0x00000200 /* Long Preamble Enforcement */ -#define MAC2_NO_BACKOFF 0x00001000 /* No Backoff Algorithm */ -#define MAC2_BACK_PRESSURE 0x00002000 /* Backoff Presurre / No Backoff */ -#define MAC2_EXCESS_DEF 0x00004000 /* Excess Defer */ - -/* Back-to-Back Inter-Packet-Gap Register */ -#define IPGT_FULL_DUP 0x00000015 /* Recommended value for Full Duplex */ -#define IPGT_HALF_DUP 0x00000012 /* Recommended value for Half Duplex */ - -/* Non Back-to-Back Inter-Packet-Gap Register */ -#define IPGR_DEF 0x00000012 /* Recommended value */ - -/* Collision Window/Retry Register */ -#define CLRT_DEF 0x0000370F /* Default value */ - -/* PHY Support Register */ -#define SUPP_SPEED 0x00000100 /* Reduced MII Logic Current Speed */ -#define SUPP_RES_RMII 0x00000800 /* Reset Reduced MII Logic */ - -/* Test Register */ -#define TEST_SHCUT_PQUANTA 0x00000001 /* Shortcut Pause Quanta */ -#define TEST_TST_PAUSE 0x00000002 /* Test Pause */ -#define TEST_TST_BACKP 0x00000004 /* Test Back Pressure */ - -/* MII Management Configuration Register */ -#define MCFG_SCAN_INC 0x00000001 /* Scan Increment PHY Address */ -#define MCFG_SUPP_PREAM 0x00000002 /* Suppress Preamble */ -#define MCFG_CLK_SEL 0x0000003C /* Clock Select Mask */ -#define MCFG_RES_MII 0x00008000 /* Reset MII Management Hardware */ - -/* MII Management Command Register */ -#define MCMD_READ 0x00000001 /* MII Read */ -#define MCMD_SCAN 0x00000002 /* MII Scan continuously */ - -#define MII_WR_TOUT 0x00050000 /* MII Write timeout count */ -#define MII_RD_TOUT 0x00050000 /* MII Read timeout count */ - -/* MII Management Address Register */ -#define MADR_REG_ADR 0x0000001F /* MII Register Address Mask */ -#define MADR_PHY_ADR 0x00001F00 /* PHY Address Mask */ - -/* MII Management Indicators Register */ -#define MIND_BUSY 0x00000001 /* MII is Busy */ -#define MIND_SCAN 0x00000002 /* MII Scanning in Progress */ -#define MIND_NOT_VAL 0x00000004 /* MII Read Data not valid */ -#define MIND_MII_LINK_FAIL 0x00000008 /* MII Link Failed */ - -/* Command Register */ -#define CR_RX_EN 0x00000001 /* Enable Receive */ -#define CR_TX_EN 0x00000002 /* Enable Transmit */ -#define CR_REG_RES 0x00000008 /* Reset Host Registers */ -#define CR_TX_RES 0x00000010 /* Reset Transmit Datapath */ -#define CR_RX_RES 0x00000020 /* Reset Receive Datapath */ -#define CR_PASS_RUNT_FRM 0x00000040 /* Pass Runt Frames */ -#define CR_PASS_RX_FILT 0x00000080 /* Pass RX Filter */ -#define CR_TX_FLOW_CTRL 0x00000100 /* TX Flow Control */ -#define CR_RMII 0x00000200 /* Reduced MII Interface */ -#define CR_FULL_DUP 0x00000400 /* Full Duplex */ - -/* Status Register */ -#define SR_RX_EN 0x00000001 /* Enable Receive */ -#define SR_TX_EN 0x00000002 /* Enable Transmit */ - -/* Transmit Status Vector 0 Register */ -#define TSV0_CRC_ERR 0x00000001 /* CRC error */ -#define TSV0_LEN_CHKERR 0x00000002 /* Length Check Error */ -#define TSV0_LEN_OUTRNG 0x00000004 /* Length Out of Range */ -#define TSV0_DONE 0x00000008 /* Tramsmission Completed */ -#define TSV0_MCAST 0x00000010 /* Multicast Destination */ -#define TSV0_BCAST 0x00000020 /* Broadcast Destination */ -#define TSV0_PKT_DEFER 0x00000040 /* Packet Deferred */ -#define TSV0_EXC_DEFER 0x00000080 /* Excessive Packet Deferral */ -#define TSV0_EXC_COLL 0x00000100 /* Excessive Collision */ -#define TSV0_LATE_COLL 0x00000200 /* Late Collision Occured */ -#define TSV0_GIANT 0x00000400 /* Giant Frame */ -#define TSV0_UNDERRUN 0x00000800 /* Buffer Underrun */ -#define TSV0_BYTES 0x0FFFF000 /* Total Bytes Transferred */ -#define TSV0_CTRL_FRAME 0x10000000 /* Control Frame */ -#define TSV0_PAUSE 0x20000000 /* Pause Frame */ -#define TSV0_BACK_PRESS 0x40000000 /* Backpressure Method Applied */ -#define TSV0_VLAN 0x80000000 /* VLAN Frame */ - -/* Transmit Status Vector 1 Register */ -#define TSV1_BYTE_CNT 0x0000FFFF /* Transmit Byte Count */ -#define TSV1_COLL_CNT 0x000F0000 /* Transmit Collision Count */ - -/* Receive Status Vector Register */ -#define RSV_BYTE_CNT 0x0000FFFF /* Receive Byte Count */ -#define RSV_PKT_IGNORED 0x00010000 /* Packet Previously Ignored */ -#define RSV_RXDV_SEEN 0x00020000 /* RXDV Event Previously Seen */ -#define RSV_CARR_SEEN 0x00040000 /* Carrier Event Previously Seen */ -#define RSV_REC_CODEV 0x00080000 /* Receive Code Violation */ -#define RSV_CRC_ERR 0x00100000 /* CRC Error */ -#define RSV_LEN_CHKERR 0x00200000 /* Length Check Error */ -#define RSV_LEN_OUTRNG 0x00400000 /* Length Out of Range */ -#define RSV_REC_OK 0x00800000 /* Frame Received OK */ -#define RSV_MCAST 0x01000000 /* Multicast Frame */ -#define RSV_BCAST 0x02000000 /* Broadcast Frame */ -#define RSV_DRIB_NIBB 0x04000000 /* Dribble Nibble */ -#define RSV_CTRL_FRAME 0x08000000 /* Control Frame */ -#define RSV_PAUSE 0x10000000 /* Pause Frame */ -#define RSV_UNSUPP_OPC 0x20000000 /* Unsupported Opcode */ -#define RSV_VLAN 0x40000000 /* VLAN Frame */ - -/* Flow Control Counter Register */ -#define FCC_MIRR_CNT 0x0000FFFF /* Mirror Counter */ -#define FCC_PAUSE_TIM 0xFFFF0000 /* Pause Timer */ - -/* Flow Control Status Register */ -#define FCS_MIRR_CNT 0x0000FFFF /* Mirror Counter Current */ - -/* Receive Filter Control Register */ -#define RFC_UCAST_EN 0x00000001 /* Accept Unicast Frames Enable */ -#define RFC_BCAST_EN 0x00000002 /* Accept Broadcast Frames Enable */ -#define RFC_MCAST_EN 0x00000004 /* Accept Multicast Frames Enable */ -#define RFC_UCAST_HASH_EN 0x00000008 /* Accept Unicast Hash Filter Frames */ -#define RFC_MCAST_HASH_EN 0x00000010 /* Accept Multicast Hash Filter Fram.*/ -#define RFC_PERFECT_EN 0x00000020 /* Accept Perfect Match Enable */ -#define RFC_MAGP_WOL_EN 0x00001000 /* Magic Packet Filter WoL Enable */ -#define RFC_PFILT_WOL_EN 0x00002000 /* Perfect Filter WoL Enable */ - -/* Receive Filter WoL Status/Clear Registers */ -#define WOL_UCAST 0x00000001 /* Unicast Frame caused WoL */ -#define WOL_BCAST 0x00000002 /* Broadcast Frame caused WoL */ -#define WOL_MCAST 0x00000004 /* Multicast Frame caused WoL */ -#define WOL_UCAST_HASH 0x00000008 /* Unicast Hash Filter Frame WoL */ -#define WOL_MCAST_HASH 0x00000010 /* Multicast Hash Filter Frame WoL */ -#define WOL_PERFECT 0x00000020 /* Perfect Filter WoL */ -#define WOL_RX_FILTER 0x00000080 /* RX Filter caused WoL */ -#define WOL_MAG_PACKET 0x00000100 /* Magic Packet Filter caused WoL */ - -/* Interrupt Status/Enable/Clear/Set Registers */ -#define INT_RX_OVERRUN 0x00000001 /* Overrun Error in RX Queue */ -#define INT_RX_ERR 0x00000002 /* Receive Error */ -#define INT_RX_FIN 0x00000004 /* RX Finished Process Descriptors */ -#define INT_RX_DONE 0x00000008 /* Receive Done */ -#define INT_TX_UNDERRUN 0x00000010 /* Transmit Underrun */ -#define INT_TX_ERR 0x00000020 /* Transmit Error */ -#define INT_TX_FIN 0x00000040 /* TX Finished Process Descriptors */ -#define INT_TX_DONE 0x00000080 /* Transmit Done */ -#define INT_SOFT_INT 0x00001000 /* Software Triggered Interrupt */ -#define INT_WAKEUP 0x00002000 /* Wakeup Event Interrupt */ - -/* Power Down Register */ -#define PD_POWER_DOWN 0x80000000 /* Power Down MAC */ - -/* RX Descriptor Control Word */ -#define RCTRL_SIZE 0x000007FF /* Buffer size mask */ -#define RCTRL_INT 0x80000000 /* Generate RxDone Interrupt */ - -/* RX Status Hash CRC Word */ -#define RHASH_SA 0x000001FF /* Hash CRC for Source Address */ -#define RHASH_DA 0x001FF000 /* Hash CRC for Destination Address */ - -/* RX Status Information Word */ -#define RINFO_SIZE 0x000007FF /* Data size in bytes */ -#define RINFO_CTRL_FRAME 0x00040000 /* Control Frame */ -#define RINFO_VLAN 0x00080000 /* VLAN Frame */ -#define RINFO_FAIL_FILT 0x00100000 /* RX Filter Failed */ -#define RINFO_MCAST 0x00200000 /* Multicast Frame */ -#define RINFO_BCAST 0x00400000 /* Broadcast Frame */ -#define RINFO_CRC_ERR 0x00800000 /* CRC Error in Frame */ -#define RINFO_SYM_ERR 0x01000000 /* Symbol Error from PHY */ -#define RINFO_LEN_ERR 0x02000000 /* Length Error */ -#define RINFO_RANGE_ERR 0x04000000 /* Range Error (exceeded max. size) */ -#define RINFO_ALIGN_ERR 0x08000000 /* Alignment Error */ -#define RINFO_OVERRUN 0x10000000 /* Receive overrun */ -#define RINFO_NO_DESCR 0x20000000 /* No new Descriptor available */ -#define RINFO_LAST_FLAG 0x40000000 /* Last Fragment in Frame */ -#define RINFO_ERR 0x80000000 /* Error Occured (OR of all errors) */ - -#define RINFO_ERR_MASK (RINFO_FAIL_FILT | RINFO_CRC_ERR | RINFO_SYM_ERR | \ - RINFO_LEN_ERR | RINFO_ALIGN_ERR | RINFO_OVERRUN) - -/* TX Descriptor Control Word */ -#define TCTRL_SIZE 0x000007FF /* Size of data buffer in bytes */ -#define TCTRL_OVERRIDE 0x04000000 /* Override Default MAC Registers */ -#define TCTRL_HUGE 0x08000000 /* Enable Huge Frame */ -#define TCTRL_PAD 0x10000000 /* Pad short Frames to 64 bytes */ -#define TCTRL_CRC 0x20000000 /* Append a hardware CRC to Frame */ -#define TCTRL_LAST 0x40000000 /* Last Descriptor for TX Frame */ -#define TCTRL_INT 0x80000000 /* Generate TxDone Interrupt */ - -/* TX Status Information Word */ -#define TINFO_COL_CNT 0x01E00000 /* Collision Count */ -#define TINFO_DEFER 0x02000000 /* Packet Deferred (not an error) */ -#define TINFO_EXCESS_DEF 0x04000000 /* Excessive Deferral */ -#define TINFO_EXCESS_COL 0x08000000 /* Excessive Collision */ -#define TINFO_LATE_COL 0x10000000 /* Late Collision Occured */ -#define TINFO_UNDERRUN 0x20000000 /* Transmit Underrun */ -#define TINFO_NO_DESCR 0x40000000 /* No new Descriptor available */ -#define TINFO_ERR 0x80000000 /* Error Occured (OR of all errors) */ - -/* ENET Device Revision ID */ -#define OLD_EMAC_MODULE_ID 0x39022000 /* Rev. ID for first rev '-' */ - -/* KSZ8721BL PHY Registers */ -#define PHY_REG_BMCR 0x00 /* Basic Mode Control Register */ -#define PHY_REG_BMSR 0x01 /* Basic Mode Status Register */ -#define PHY_REG_IDR1 0x02 /* PHY Identifier 1 */ -#define PHY_REG_IDR2 0x03 /* PHY Identifier 2 */ -#define PHY_REG_ANAR 0x04 /* Auto-Negotiation Advertisement */ -#define PHY_REG_ANLPAR 0x05 /* Auto-Neg. Link Partner Abitily */ -#define PHY_REG_ANER 0x06 /* Auto-Neg. Expansion Register */ -#define PHY_REG_ANNPTR 0x07 /* Auto-Neg. Next Page TX */ - -/* PHY Extended Registers */ -#define PHY_REG_RECR 0x15 /* Receive Error Counter */ -#define PHY_CTRLER 0x1f /* 100BASE-TX-PHY Controller */ - -#define PHY_FULLD_100M 0x2100 /* Full Duplex 100Mbit */ -#define PHY_HALFD_100M 0x2000 /* Half Duplex 100Mbit */ -#define PHY_FULLD_10M 0x0100 /* Full Duplex 10Mbit */ -#define PHY_HALFD_10M 0x0000 /* Half Duplex 10MBit */ -#define PHY_AUTO_NEG 0x3000 /* Select Auto Negotiation */ -#define PHY_AUTO_NEG_COMPLETE 0x0020 /* Auto negotiation have finished. */ - -#define KS8721_DEF_ADR 0x0100 /* Default PHY device address */ -#define KS8721_ID 0x00221619 /* PHY Identifier */ - -#endif - -/*---------------------------------------------------------------------------- - * end of file - *---------------------------------------------------------------------------*/ diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/clock-arch.h b/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/clock-arch.h deleted file mode 100644 index cde657b62..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/clock-arch.h +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright (c) 2006, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: clock-arch.h,v 1.2 2006/06/12 08:00:31 adam Exp $ - */ - -#ifndef __CLOCK_ARCH_H__ -#define __CLOCK_ARCH_H__ - -#include "FreeRTOS.h" - -typedef unsigned long clock_time_t; -#define CLOCK_CONF_SECOND configTICK_RATE_HZ - -#endif /* __CLOCK_ARCH_H__ */ diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/emac.c b/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/emac.c deleted file mode 100644 index 0f92898fb..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/emac.c +++ /dev/null @@ -1,580 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* Originally adapted from file written by Andreas Dannenberg. Supplied with permission. */ - -/* Kernel includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "semphr.h" - -/* Hardware specific includes. */ -#include "EthDev_LPC17xx.h" - -/* Time to wait between each inspection of the link status. */ -#define emacWAIT_FOR_LINK_TO_ESTABLISH ( 500 / portTICK_PERIOD_MS ) - -/* Short delay used in several places during the initialisation process. */ -#define emacSHORT_DELAY ( 2 ) - -/* Hardware specific bit definitions. */ -#define emacLINK_ESTABLISHED ( 0x0020) -#define emacFULL_DUPLEX_ENABLED ( 0x0010 ) -#define emac10BASE_T_MODE ( 0x0004 ) -#define emacPINSEL2_VALUE ( 0x50150105 ) -#define emacDIV_44 ( 0x28 ) - -/* If no buffers are available, then wait this long before looking again.... */ -#define emacBUFFER_WAIT_DELAY ( 3 / portTICK_PERIOD_MS ) - -/* ...and don't look more than this many times. */ -#define emacBUFFER_WAIT_ATTEMPTS ( 30 ) - -/* Index to the Tx descriptor that is always used first for every Tx. The second -descriptor is then used to re-send in order to speed up the uIP Tx process. */ -#define emacTX_DESC_INDEX ( 0 ) - -/*-----------------------------------------------------------*/ - -/* - * Configure both the Rx and Tx descriptors during the init process. - */ -static void prvInitDescriptors( void ); - -/* - * Setup the IO and peripherals required for Ethernet communication. - */ -static void prvSetupEMACHardware( void ); - -/* - * Control the auto negotiate process. - */ -static void prvConfigurePHY( void ); - -/* - * Wait for a link to be established, then setup the PHY according to the link - * parameters. - */ -static long prvSetupLinkStatus( void ); - -/* - * Search the pool of buffers to find one that is free. If a buffer is found - * mark it as in use before returning its address. - */ -static unsigned char *prvGetNextBuffer( void ); - -/* - * Return an allocated buffer to the pool of free buffers. - */ -static void prvReturnBuffer( unsigned char *pucBuffer ); - -/* - * Send lValue to the lPhyReg within the PHY. - */ -static long prvWritePHY( long lPhyReg, long lValue ); - -/* - * Read a value from ucPhyReg within the PHY. *plStatus will be set to - * pdFALSE if there is an error. - */ -static unsigned short prvReadPHY( unsigned char ucPhyReg, long *plStatus ); - -/*-----------------------------------------------------------*/ - -/* The semaphore used to wake the uIP task when data arrives. */ -extern SemaphoreHandle_t xEMACSemaphore; - -/* Each ucBufferInUse index corresponds to a position in the pool of buffers. -If the index contains a 1 then the buffer within pool is in use, if it -contains a 0 then the buffer is free. */ -static unsigned char ucBufferInUse[ ETH_NUM_BUFFERS ] = { pdFALSE }; - -/* The uip_buffer is not a fixed array, but instead gets pointed to the buffers -allocated within this file. */ -unsigned char * uip_buf; - -/* Store the length of the data being sent so the data can be sent twice. The -value will be set back to 0 once the data has been sent twice. */ -static unsigned short usSendLen = 0; - -/*-----------------------------------------------------------*/ - -long lEMACInit( void ) -{ -long lReturn = pdPASS; -unsigned long ulID1, ulID2; - - /* Reset peripherals, configure port pins and registers. */ - prvSetupEMACHardware(); - - /* Check the PHY part number is as expected. */ - ulID1 = prvReadPHY( PHY_REG_IDR1, &lReturn ); - ulID2 = prvReadPHY( PHY_REG_IDR2, &lReturn ); - if( ( (ulID1 << 16UL ) | ( ulID2 & 0xFFFFUL ) ) == KS8721_ID ) - { - /* Set the Ethernet MAC Address registers */ - EMAC->SA0 = ( configMAC_ADDR0 << 8 ) | configMAC_ADDR1; - EMAC->SA1 = ( configMAC_ADDR2 << 8 ) | configMAC_ADDR3; - EMAC->SA2 = ( configMAC_ADDR4 << 8 ) | configMAC_ADDR5; - - /* Initialize Tx and Rx DMA Descriptors */ - prvInitDescriptors(); - - /* Receive broadcast and perfect match packets */ - EMAC->RxFilterCtrl = RFC_UCAST_EN | RFC_BCAST_EN | RFC_PERFECT_EN; - - /* Setup the PHY. */ - prvConfigurePHY(); - } - else - { - lReturn = pdFAIL; - } - - /* Check the link status. */ - if( lReturn == pdPASS ) - { - lReturn = prvSetupLinkStatus(); - } - - if( lReturn == pdPASS ) - { - /* Initialise uip_buf to ensure it points somewhere valid. */ - uip_buf = prvGetNextBuffer(); - - /* Reset all interrupts */ - EMAC->IntClear = ( INT_RX_OVERRUN | INT_RX_ERR | INT_RX_FIN | INT_RX_DONE | INT_TX_UNDERRUN | INT_TX_ERR | INT_TX_FIN | INT_TX_DONE | INT_SOFT_INT | INT_WAKEUP ); - - /* Enable receive and transmit mode of MAC Ethernet core */ - EMAC->Command |= ( CR_RX_EN | CR_TX_EN ); - EMAC->MAC1 |= MAC1_REC_EN; - } - - return lReturn; -} -/*-----------------------------------------------------------*/ - -static unsigned char *prvGetNextBuffer( void ) -{ -long x; -unsigned char *pucReturn = NULL; -unsigned long ulAttempts = 0; - - while( pucReturn == NULL ) - { - /* Look through the buffers to find one that is not in use by - anything else. */ - for( x = 0; x < ETH_NUM_BUFFERS; x++ ) - { - if( ucBufferInUse[ x ] == pdFALSE ) - { - ucBufferInUse[ x ] = pdTRUE; - pucReturn = ( unsigned char * ) ETH_BUF( x ); - break; - } - } - - /* Was a buffer found? */ - if( pucReturn == NULL ) - { - ulAttempts++; - - if( ulAttempts >= emacBUFFER_WAIT_ATTEMPTS ) - { - break; - } - - /* Wait then look again. */ - vTaskDelay( emacBUFFER_WAIT_DELAY ); - } - } - - return pucReturn; -} -/*-----------------------------------------------------------*/ - -static void prvInitDescriptors( void ) -{ -long x, lNextBuffer = 0; - - for( x = 0; x < NUM_RX_FRAG; x++ ) - { - /* Allocate the next Ethernet buffer to this descriptor. */ - RX_DESC_PACKET( x ) = ETH_BUF( lNextBuffer ); - RX_DESC_CTRL( x ) = RCTRL_INT | ( ETH_FRAG_SIZE - 1 ); - RX_STAT_INFO( x ) = 0; - RX_STAT_HASHCRC( x ) = 0; - - /* The Ethernet buffer is now in use. */ - ucBufferInUse[ lNextBuffer ] = pdTRUE; - lNextBuffer++; - } - - /* Set EMAC Receive Descriptor Registers. */ - EMAC->RxDescriptor = RX_DESC_BASE; - EMAC->RxStatus = RX_STAT_BASE; - EMAC->RxDescriptorNumber = NUM_RX_FRAG - 1; - - /* Rx Descriptors Point to 0 */ - EMAC->RxConsumeIndex = 0; - - /* A buffer is not allocated to the Tx descriptors until they are actually - used. */ - for( x = 0; x < NUM_TX_FRAG; x++ ) - { - TX_DESC_PACKET( x ) = ( unsigned long ) NULL; - TX_DESC_CTRL( x ) = 0; - TX_STAT_INFO( x ) = 0; - } - - /* Set EMAC Transmit Descriptor Registers. */ - EMAC->TxDescriptor = TX_DESC_BASE; - EMAC->TxStatus = TX_STAT_BASE; - EMAC->TxDescriptorNumber = NUM_TX_FRAG - 1; - - /* Tx Descriptors Point to 0 */ - EMAC->TxProduceIndex = 0; -} -/*-----------------------------------------------------------*/ - -static void prvSetupEMACHardware( void ) -{ -unsigned short us; -long x, lDummy; - - /* Enable P1 Ethernet Pins. */ - PINCON->PINSEL2 = emacPINSEL2_VALUE; - PINCON->PINSEL3 = ( PINCON->PINSEL3 & ~0x0000000F ) | 0x00000005; - - /* Power Up the EMAC controller. */ - SC->PCONP |= PCONP_PCENET; - vTaskDelay( emacSHORT_DELAY ); - - /* Reset all EMAC internal modules. */ - EMAC->MAC1 = MAC1_RES_TX | MAC1_RES_MCS_TX | MAC1_RES_RX | MAC1_RES_MCS_RX | MAC1_SIM_RES | MAC1_SOFT_RES; - EMAC->Command = CR_REG_RES | CR_TX_RES | CR_RX_RES | CR_PASS_RUNT_FRM; - - /* A short delay after reset. */ - vTaskDelay( emacSHORT_DELAY ); - - /* Initialize MAC control registers. */ - EMAC->MAC1 = MAC1_PASS_ALL; - EMAC->MAC2 = MAC2_CRC_EN | MAC2_PAD_EN; - EMAC->MAXF = ETH_MAX_FLEN; - EMAC->CLRT = CLRT_DEF; - EMAC->IPGR = IPGR_DEF; - EMAC->MCFG = emacDIV_44; - - /* Enable Reduced MII interface. */ - EMAC->Command = CR_RMII | CR_PASS_RUNT_FRM; - - /* Reset Reduced MII Logic. */ - EMAC->SUPP = SUPP_RES_RMII; - vTaskDelay( emacSHORT_DELAY ); - EMAC->SUPP = 0; - - /* Put the PHY in reset mode */ - prvWritePHY( PHY_REG_BMCR, MCFG_RES_MII ); - prvWritePHY( PHY_REG_BMCR, MCFG_RES_MII ); - - /* Wait for hardware reset to end. */ - for( x = 0; x < 100; x++ ) - { - vTaskDelay( emacSHORT_DELAY * 5 ); - us = prvReadPHY( PHY_REG_BMCR, &lDummy ); - if( !( us & MCFG_RES_MII ) ) - { - /* Reset complete */ - break; - } - } -} -/*-----------------------------------------------------------*/ - -static void prvConfigurePHY( void ) -{ -unsigned short us; -long x, lDummy; - - /* Auto negotiate the configuration. */ - if( prvWritePHY( PHY_REG_BMCR, PHY_AUTO_NEG ) ) - { - vTaskDelay( emacSHORT_DELAY * 5 ); - - for( x = 0; x < 10; x++ ) - { - us = prvReadPHY( PHY_REG_BMSR, &lDummy ); - - if( us & PHY_AUTO_NEG_COMPLETE ) - { - break; - } - - vTaskDelay( emacWAIT_FOR_LINK_TO_ESTABLISH ); - } - } -} -/*-----------------------------------------------------------*/ - -static long prvSetupLinkStatus( void ) -{ -long lReturn = pdFAIL, x; -unsigned short usLinkStatus; - - /* Wait with timeout for the link to be established. */ - for( x = 0; x < 10; x++ ) - { - usLinkStatus = prvReadPHY( PHY_CTRLER, &lReturn ); - if( usLinkStatus != 0x00 ) - { - /* Link is established. */ - lReturn = pdPASS; - break; - } - - vTaskDelay( emacWAIT_FOR_LINK_TO_ESTABLISH ); - } - - if( lReturn == pdPASS ) - { - /* Configure Full/Half Duplex mode. */ - if( usLinkStatus & emacFULL_DUPLEX_ENABLED ) - { - /* Full duplex is enabled. */ - EMAC->MAC2 |= MAC2_FULL_DUP; - EMAC->Command |= CR_FULL_DUP; - EMAC->IPGT = IPGT_FULL_DUP; - } - else - { - /* Half duplex mode. */ - EMAC->IPGT = IPGT_HALF_DUP; - } - - /* Configure 100MBit/10MBit mode. */ - if( usLinkStatus & emac10BASE_T_MODE ) - { - /* 10MBit mode. */ - EMAC->SUPP = 0; - } - else - { - /* 100MBit mode. */ - EMAC->SUPP = SUPP_SPEED; - } - } - - return lReturn; -} -/*-----------------------------------------------------------*/ - -static void prvReturnBuffer( unsigned char *pucBuffer ) -{ -unsigned long ul; - - /* Return a buffer to the pool of free buffers. */ - for( ul = 0; ul < ETH_NUM_BUFFERS; ul++ ) - { - if( ETH_BUF( ul ) == ( unsigned long ) pucBuffer ) - { - ucBufferInUse[ ul ] = pdFALSE; - break; - } - } -} -/*-----------------------------------------------------------*/ - -unsigned long ulGetEMACRxData( void ) -{ -unsigned long ulLen = 0; -long lIndex; - - if( EMAC->RxProduceIndex != EMAC->RxConsumeIndex ) - { - /* Mark the current buffer as free as uip_buf is going to be set to - the buffer that contains the received data. */ - prvReturnBuffer( uip_buf ); - - ulLen = ( RX_STAT_INFO( EMAC->RxConsumeIndex ) & RINFO_SIZE ) - 3; - uip_buf = ( unsigned char * ) RX_DESC_PACKET( EMAC->RxConsumeIndex ); - - /* Allocate a new buffer to the descriptor. */ - RX_DESC_PACKET( EMAC->RxConsumeIndex ) = ( unsigned long ) prvGetNextBuffer(); - - /* Move the consume index onto the next position, ensuring it wraps to - the beginning at the appropriate place. */ - lIndex = EMAC->RxConsumeIndex; - - lIndex++; - if( lIndex >= NUM_RX_FRAG ) - { - lIndex = 0; - } - - EMAC->RxConsumeIndex = lIndex; - } - - return ulLen; -} -/*-----------------------------------------------------------*/ - -void vSendEMACTxData( unsigned short usTxDataLen ) -{ -unsigned long ulAttempts = 0UL; - - /* Check to see if the Tx descriptor is free, indicated by its buffer being - NULL. */ - while( TX_DESC_PACKET( emacTX_DESC_INDEX ) != ( unsigned long ) NULL ) - { - /* Wait for the Tx descriptor to become available. */ - vTaskDelay( emacBUFFER_WAIT_DELAY ); - - ulAttempts++; - if( ulAttempts > emacBUFFER_WAIT_ATTEMPTS ) - { - /* Something has gone wrong as the Tx descriptor is still in use. - Clear it down manually, the data it was sending will probably be - lost. */ - prvReturnBuffer( ( unsigned char * ) TX_DESC_PACKET( emacTX_DESC_INDEX ) ); - break; - } - } - - /* Setup the Tx descriptor for transmission. Remember the length of the - data being sent so the second descriptor can be used to send it again from - within the ISR. */ - usSendLen = usTxDataLen; - TX_DESC_PACKET( emacTX_DESC_INDEX ) = ( unsigned long ) uip_buf; - TX_DESC_CTRL( emacTX_DESC_INDEX ) = ( usTxDataLen | TCTRL_LAST | TCTRL_INT ); - EMAC->TxProduceIndex = ( emacTX_DESC_INDEX + 1 ); - - /* uip_buf is being sent by the Tx descriptor. Allocate a new buffer. */ - uip_buf = prvGetNextBuffer(); -} -/*-----------------------------------------------------------*/ - -static long prvWritePHY( long lPhyReg, long lValue ) -{ -const long lMaxTime = 10; -long x; - - EMAC->MADR = KS8721_DEF_ADR | lPhyReg; - EMAC->MWTD = lValue; - - x = 0; - for( x = 0; x < lMaxTime; x++ ) - { - if( ( EMAC->MIND & MIND_BUSY ) == 0 ) - { - /* Operation has finished. */ - break; - } - - vTaskDelay( emacSHORT_DELAY ); - } - - if( x < lMaxTime ) - { - return pdPASS; - } - else - { - return pdFAIL; - } -} -/*-----------------------------------------------------------*/ - -static unsigned short prvReadPHY( unsigned char ucPhyReg, long *plStatus ) -{ -long x; -const long lMaxTime = 10; - - EMAC->MADR = KS8721_DEF_ADR | ucPhyReg; - EMAC->MCMD = MCMD_READ; - - for( x = 0; x < lMaxTime; x++ ) - { - /* Operation has finished. */ - if( ( EMAC->MIND & MIND_BUSY ) == 0 ) - { - break; - } - - vTaskDelay( emacSHORT_DELAY ); - } - - EMAC->MCMD = 0; - - if( x >= lMaxTime ) - { - *plStatus = pdFAIL; - } - - return( EMAC->MRDD ); -} -/*-----------------------------------------------------------*/ - -void vEMAC_ISR( void ) -{ -unsigned long ulStatus; -long lHigherPriorityTaskWoken = pdFALSE; - - ulStatus = EMAC->IntStatus; - - /* Clear the interrupt. */ - EMAC->IntClear = ulStatus; - - if( ulStatus & INT_RX_DONE ) - { - /* Ensure the uIP task is not blocked as data has arrived. */ - xSemaphoreGiveFromISR( xEMACSemaphore, &lHigherPriorityTaskWoken ); - } - - if( ulStatus & INT_TX_DONE ) - { - if( usSendLen > 0 ) - { - /* Send the data again, using the second descriptor. As there are - only two descriptors the index is set back to 0. */ - TX_DESC_PACKET( ( emacTX_DESC_INDEX + 1 ) ) = TX_DESC_PACKET( emacTX_DESC_INDEX ); - TX_DESC_CTRL( ( emacTX_DESC_INDEX + 1 ) ) = ( usSendLen | TCTRL_LAST | TCTRL_INT ); - EMAC->TxProduceIndex = ( emacTX_DESC_INDEX ); - - /* This is the second Tx so set usSendLen to 0 to indicate that the - Tx descriptors will be free again. */ - usSendLen = 0UL; - } - else - { - /* The Tx buffer is no longer required. */ - prvReturnBuffer( ( unsigned char * ) TX_DESC_PACKET( emacTX_DESC_INDEX ) ); - TX_DESC_PACKET( emacTX_DESC_INDEX ) = ( unsigned long ) NULL; - } - } - - portEND_SWITCHING_ISR( lHigherPriorityTaskWoken ); -} diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/http-strings b/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/http-strings deleted file mode 100644 index 0d3c30cdd..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/http-strings +++ /dev/null @@ -1,35 +0,0 @@ -http_http "http://" -http_200 "200 " -http_301 "301 " -http_302 "302 " -http_get "GET " -http_10 "HTTP/1.0" -http_11 "HTTP/1.1" -http_content_type "content-type: " -http_texthtml "text/html" -http_location "location: " -http_host "host: " -http_crnl "\r\n" -http_index_html "/index.html" -http_404_html "/404.html" -http_referer "Referer:" -http_header_200 "HTTP/1.0 200 OK\r\nServer: uIP/1.0 http://www.sics.se/~adam/uip/\r\nConnection: close\r\n" -http_header_404 "HTTP/1.0 404 Not found\r\nServer: uIP/1.0 http://www.sics.se/~adam/uip/\r\nConnection: close\r\n" -http_content_type_plain "Content-type: text/plain\r\n\r\n" -http_content_type_html "Content-type: text/html\r\n\r\n" -http_content_type_css "Content-type: text/css\r\n\r\n" -http_content_type_text "Content-type: text/text\r\n\r\n" -http_content_type_png "Content-type: image/png\r\n\r\n" -http_content_type_gif "Content-type: image/gif\r\n\r\n" -http_content_type_jpg "Content-type: image/jpeg\r\n\r\n" -http_content_type_binary "Content-type: application/octet-stream\r\n\r\n" -http_html ".html" -http_shtml ".shtml" -http_htm ".htm" -http_css ".css" -http_png ".png" -http_gif ".gif" -http_jpg ".jpg" -http_text ".txt" -http_txt ".txt" - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/http-strings.c b/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/http-strings.c deleted file mode 100644 index ef7a41c7d..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/http-strings.c +++ /dev/null @@ -1,102 +0,0 @@ -const char http_http[8] = -/* "http://" */ -{0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, }; -const char http_200[5] = -/* "200 " */ -{0x32, 0x30, 0x30, 0x20, }; -const char http_301[5] = -/* "301 " */ -{0x33, 0x30, 0x31, 0x20, }; -const char http_302[5] = -/* "302 " */ -{0x33, 0x30, 0x32, 0x20, }; -const char http_get[5] = -/* "GET " */ -{0x47, 0x45, 0x54, 0x20, }; -const char http_10[9] = -/* "HTTP/1.0" */ -{0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30, }; -const char http_11[9] = -/* "HTTP/1.1" */ -{0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x31, }; -const char http_content_type[15] = -/* "content-type: " */ -{0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, }; -const char http_texthtml[10] = -/* "text/html" */ -{0x74, 0x65, 0x78, 0x74, 0x2f, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_location[11] = -/* "location: " */ -{0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, }; -const char http_host[7] = -/* "host: " */ -{0x68, 0x6f, 0x73, 0x74, 0x3a, 0x20, }; -const char http_crnl[3] = -/* "\r\n" */ -{0xd, 0xa, }; -const char http_index_html[12] = -/* "/index.html" */ -{0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_404_html[10] = -/* "/404.html" */ -{0x2f, 0x34, 0x30, 0x34, 0x2e, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_referer[9] = -/* "Referer:" */ -{0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x72, 0x3a, }; -const char http_header_200[84] = -/* "HTTP/1.0 200 OK\r\nServer: uIP/1.0 http://www.sics.se/~adam/uip/\r\nConnection: close\r\n" */ -{0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x32, 0x30, 0x30, 0x20, 0x4f, 0x4b, 0xd, 0xa, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x3a, 0x20, 0x75, 0x49, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x73, 0x69, 0x63, 0x73, 0x2e, 0x73, 0x65, 0x2f, 0x7e, 0x61, 0x64, 0x61, 0x6d, 0x2f, 0x75, 0x69, 0x70, 0x2f, 0xd, 0xa, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0xd, 0xa, }; -const char http_header_404[91] = -/* "HTTP/1.0 404 Not found\r\nServer: uIP/1.0 http://www.sics.se/~adam/uip/\r\nConnection: close\r\n" */ -{0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x34, 0x30, 0x34, 0x20, 0x4e, 0x6f, 0x74, 0x20, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0xd, 0xa, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x3a, 0x20, 0x75, 0x49, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x73, 0x69, 0x63, 0x73, 0x2e, 0x73, 0x65, 0x2f, 0x7e, 0x61, 0x64, 0x61, 0x6d, 0x2f, 0x75, 0x69, 0x70, 0x2f, 0xd, 0xa, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0xd, 0xa, }; -const char http_content_type_plain[29] = -/* "Content-type: text/plain\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_html[28] = -/* "Content-type: text/html\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_css [27] = -/* "Content-type: text/css\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x63, 0x73, 0x73, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_text[28] = -/* "Content-type: text/text\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x74, 0x65, 0x78, 0x74, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_png [28] = -/* "Content-type: image/png\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x70, 0x6e, 0x67, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_gif [28] = -/* "Content-type: image/gif\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x67, 0x69, 0x66, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_jpg [29] = -/* "Content-type: image/jpeg\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x6a, 0x70, 0x65, 0x67, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_binary[43] = -/* "Content-type: application/octet-stream\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x6f, 0x63, 0x74, 0x65, 0x74, 0x2d, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0xd, 0xa, 0xd, 0xa, }; -const char http_html[6] = -/* ".html" */ -{0x2e, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_shtml[7] = -/* ".shtml" */ -{0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_htm[5] = -/* ".htm" */ -{0x2e, 0x68, 0x74, 0x6d, }; -const char http_css[5] = -/* ".css" */ -{0x2e, 0x63, 0x73, 0x73, }; -const char http_png[5] = -/* ".png" */ -{0x2e, 0x70, 0x6e, 0x67, }; -const char http_gif[5] = -/* ".gif" */ -{0x2e, 0x67, 0x69, 0x66, }; -const char http_jpg[5] = -/* ".jpg" */ -{0x2e, 0x6a, 0x70, 0x67, }; -const char http_text[5] = -/* ".txt" */ -{0x2e, 0x74, 0x78, 0x74, }; -const char http_txt[5] = -/* ".txt" */ -{0x2e, 0x74, 0x78, 0x74, }; diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/http-strings.h b/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/http-strings.h deleted file mode 100644 index acbe7e17f..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/http-strings.h +++ /dev/null @@ -1,34 +0,0 @@ -extern const char http_http[8]; -extern const char http_200[5]; -extern const char http_301[5]; -extern const char http_302[5]; -extern const char http_get[5]; -extern const char http_10[9]; -extern const char http_11[9]; -extern const char http_content_type[15]; -extern const char http_texthtml[10]; -extern const char http_location[11]; -extern const char http_host[7]; -extern const char http_crnl[3]; -extern const char http_index_html[12]; -extern const char http_404_html[10]; -extern const char http_referer[9]; -extern const char http_header_200[84]; -extern const char http_header_404[91]; -extern const char http_content_type_plain[29]; -extern const char http_content_type_html[28]; -extern const char http_content_type_css [27]; -extern const char http_content_type_text[28]; -extern const char http_content_type_png [28]; -extern const char http_content_type_gif [28]; -extern const char http_content_type_jpg [29]; -extern const char http_content_type_binary[43]; -extern const char http_html[6]; -extern const char http_shtml[7]; -extern const char http_htm[5]; -extern const char http_css[5]; -extern const char http_png[5]; -extern const char http_gif[5]; -extern const char http_jpg[5]; -extern const char http_text[5]; -extern const char http_txt[5]; diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/httpd-cgi.c b/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/httpd-cgi.c deleted file mode 100644 index 9a51bc76a..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/httpd-cgi.c +++ /dev/null @@ -1,304 +0,0 @@ -/** - * \addtogroup httpd - * @{ - */ - -/** - * \file - * Web server script interface - * \author - * Adam Dunkels - * - */ - -/* - * Copyright (c) 2001-2006, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: httpd-cgi.c,v 1.2 2006/06/11 21:46:37 adam Exp $ - * - */ - -#include "uip.h" -#include "psock.h" -#include "httpd.h" -#include "httpd-cgi.h" -#include "httpd-fs.h" - -#include -#include - -HTTPD_CGI_CALL(file, "file-stats", file_stats); -HTTPD_CGI_CALL(tcp, "tcp-connections", tcp_stats); -HTTPD_CGI_CALL(net, "net-stats", net_stats); -HTTPD_CGI_CALL(rtos, "rtos-stats", rtos_stats ); -HTTPD_CGI_CALL(run, "run-time", run_time ); -HTTPD_CGI_CALL(io, "led-io", led_io ); - - -static const struct httpd_cgi_call *calls[] = { &file, &tcp, &net, &rtos, &run, &io, NULL }; - -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(nullfunction(struct httpd_state *s, char *ptr)) -{ - PSOCK_BEGIN(&s->sout); - ( void ) ptr; - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -httpd_cgifunction -httpd_cgi(char *name) -{ - const struct httpd_cgi_call **f; - - /* Find the matching name in the table, return the function. */ - for(f = calls; *f != NULL; ++f) { - if(strncmp((*f)->name, name, strlen((*f)->name)) == 0) { - return (*f)->function; - } - } - return nullfunction; -} -/*---------------------------------------------------------------------------*/ -static unsigned short -generate_file_stats(void *arg) -{ - char *f = (char *)arg; - return snprintf((char *)uip_appdata, UIP_APPDATA_SIZE, "%5u", httpd_fs_count(f)); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(file_stats(struct httpd_state *s, char *ptr)) -{ - PSOCK_BEGIN(&s->sout); - - PSOCK_GENERATOR_SEND(&s->sout, generate_file_stats, strchr(ptr, ' ') + 1); - - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -static const char closed[] = /* "CLOSED",*/ -{0x43, 0x4c, 0x4f, 0x53, 0x45, 0x44, 0}; -static const char syn_rcvd[] = /* "SYN-RCVD",*/ -{0x53, 0x59, 0x4e, 0x2d, 0x52, 0x43, 0x56, - 0x44, 0}; -static const char syn_sent[] = /* "SYN-SENT",*/ -{0x53, 0x59, 0x4e, 0x2d, 0x53, 0x45, 0x4e, - 0x54, 0}; -static const char established[] = /* "ESTABLISHED",*/ -{0x45, 0x53, 0x54, 0x41, 0x42, 0x4c, 0x49, 0x53, 0x48, - 0x45, 0x44, 0}; -static const char fin_wait_1[] = /* "FIN-WAIT-1",*/ -{0x46, 0x49, 0x4e, 0x2d, 0x57, 0x41, 0x49, - 0x54, 0x2d, 0x31, 0}; -static const char fin_wait_2[] = /* "FIN-WAIT-2",*/ -{0x46, 0x49, 0x4e, 0x2d, 0x57, 0x41, 0x49, - 0x54, 0x2d, 0x32, 0}; -static const char closing[] = /* "CLOSING",*/ -{0x43, 0x4c, 0x4f, 0x53, 0x49, - 0x4e, 0x47, 0}; -static const char time_wait[] = /* "TIME-WAIT,"*/ -{0x54, 0x49, 0x4d, 0x45, 0x2d, 0x57, 0x41, - 0x49, 0x54, 0}; -static const char last_ack[] = /* "LAST-ACK"*/ -{0x4c, 0x41, 0x53, 0x54, 0x2d, 0x41, 0x43, - 0x4b, 0}; - -static const char *states[] = { - closed, - syn_rcvd, - syn_sent, - established, - fin_wait_1, - fin_wait_2, - closing, - time_wait, - last_ack}; - - -static unsigned short -generate_tcp_stats(void *arg) -{ - struct uip_conn *conn; - struct httpd_state *s = (struct httpd_state *)arg; - - conn = &uip_conns[s->count]; - return snprintf((char *)uip_appdata, UIP_APPDATA_SIZE, - "\r\n", - htons(conn->lport), - htons(conn->ripaddr[0]) >> 8, - htons(conn->ripaddr[0]) & 0xff, - htons(conn->ripaddr[1]) >> 8, - htons(conn->ripaddr[1]) & 0xff, - htons(conn->rport), - states[conn->tcpstateflags & UIP_TS_MASK], - conn->nrtx, - conn->timer, - (uip_outstanding(conn))? '*':' ', - (uip_stopped(conn))? '!':' '); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(tcp_stats(struct httpd_state *s, char *ptr)) -{ - - PSOCK_BEGIN(&s->sout); - ( void ) ptr; - for(s->count = 0; s->count < UIP_CONNS; ++s->count) { - if((uip_conns[s->count].tcpstateflags & UIP_TS_MASK) != UIP_CLOSED) { - PSOCK_GENERATOR_SEND(&s->sout, generate_tcp_stats, s); - } - } - - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -static unsigned short -generate_net_stats(void *arg) -{ - struct httpd_state *s = (struct httpd_state *)arg; - return snprintf((char *)uip_appdata, UIP_APPDATA_SIZE, - "%5u\n", ((uip_stats_t *)&uip_stat)[s->count]); -} - -static -PT_THREAD(net_stats(struct httpd_state *s, char *ptr)) -{ - PSOCK_BEGIN(&s->sout); - - ( void ) ptr; -#if UIP_STATISTICS - - for(s->count = 0; s->count < sizeof(uip_stat) / sizeof(uip_stats_t); - ++s->count) { - PSOCK_GENERATOR_SEND(&s->sout, generate_net_stats, s); - } - -#endif /* UIP_STATISTICS */ - - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ - -extern void vTaskList( char *pcWriteBuffer ); -extern char *pcGetTaskStatusMessage( void ); -static char cCountBuf[ 128 ]; -long lRefreshCount = 0; -static unsigned short -generate_rtos_stats(void *arg) -{ - ( void ) arg; - lRefreshCount++; - sprintf( cCountBuf, "


Refresh count = %d


%s", (int)lRefreshCount, pcGetTaskStatusMessage() ); - vTaskList( ( char * ) uip_appdata ); - strcat( uip_appdata, cCountBuf ); - - return strlen( uip_appdata ); -} -/*---------------------------------------------------------------------------*/ - - -static -PT_THREAD(rtos_stats(struct httpd_state *s, char *ptr)) -{ - PSOCK_BEGIN(&s->sout); - ( void ) ptr; - PSOCK_GENERATOR_SEND(&s->sout, generate_rtos_stats, NULL); - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ - -char *pcStatus; -unsigned long ulString; - -static unsigned short generate_io_state( void *arg ) -{ -extern long lParTestGetLEDState( void ); - - ( void ) arg; - - /* Get the state of the LEDs that are on the FIO1 port. */ - if( lParTestGetLEDState() ) - { - pcStatus = ""; - } - else - { - pcStatus = "checked"; - } - - sprintf( uip_appdata, - "LED

", pcStatus ); - - return strlen( uip_appdata ); -} -/*---------------------------------------------------------------------------*/ - -extern void vTaskGetRunTimeStats( char *pcWriteBuffer ); -static unsigned short -generate_runtime_stats(void *arg) -{ - ( void ) arg; - lRefreshCount++; - sprintf( cCountBuf, "


Refresh count = %d", (int)lRefreshCount ); - vTaskGetRunTimeStats( ( char * ) uip_appdata ); - strcat( uip_appdata, cCountBuf ); - - return strlen( uip_appdata ); -} -/*---------------------------------------------------------------------------*/ - - -static -PT_THREAD(run_time(struct httpd_state *s, char *ptr)) -{ - PSOCK_BEGIN(&s->sout); - ( void ) ptr; - PSOCK_GENERATOR_SEND(&s->sout, generate_runtime_stats, NULL); - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ - - -static PT_THREAD(led_io(struct httpd_state *s, char *ptr)) -{ - PSOCK_BEGIN(&s->sout); - ( void ) ptr; - PSOCK_GENERATOR_SEND(&s->sout, generate_io_state, NULL); - PSOCK_END(&s->sout); -} - -/** @} */ - - - - - - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/httpd-cgi.h b/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/httpd-cgi.h deleted file mode 100644 index 7ae928321..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/httpd-cgi.h +++ /dev/null @@ -1,84 +0,0 @@ -/** - * \addtogroup httpd - * @{ - */ - -/** - * \file - * Web server script interface header file - * \author - * Adam Dunkels - * - */ - - - -/* - * Copyright (c) 2001, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: httpd-cgi.h,v 1.2 2006/06/11 21:46:38 adam Exp $ - * - */ - -#ifndef __HTTPD_CGI_H__ -#define __HTTPD_CGI_H__ - -#include "psock.h" -#include "httpd.h" - -typedef PT_THREAD((* httpd_cgifunction)(struct httpd_state *, char *)); - -httpd_cgifunction httpd_cgi(char *name); - -struct httpd_cgi_call { - const char *name; - const httpd_cgifunction function; -}; - -/** - * \brief HTTPD CGI function declaration - * \param name The C variable name of the function - * \param str The string name of the function, used in the script file - * \param function A pointer to the function that implements it - * - * This macro is used for declaring a HTTPD CGI - * function. This function is then added to the list of - * HTTPD CGI functions with the httpd_cgi_add() function. - * - * \hideinitializer - */ -#define HTTPD_CGI_CALL(name, str, function) \ -static PT_THREAD(function(struct httpd_state *, char *)); \ -static const struct httpd_cgi_call name = {str, function} - -void httpd_cgi_init(void); -#endif /* __HTTPD_CGI_H__ */ - -/** @} */ diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/httpd-fs.c b/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/httpd-fs.c deleted file mode 100644 index dc4aef011..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/httpd-fs.c +++ /dev/null @@ -1,132 +0,0 @@ -/* - * Copyright (c) 2001, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - * $Id: httpd-fs.c,v 1.1 2006/06/07 09:13:08 adam Exp $ - */ - -#include "httpd.h" -#include "httpd-fs.h" -#include "httpd-fsdata.h" - -#ifndef NULL -#define NULL 0 -#endif /* NULL */ - -#include "httpd-fsdata.c" - -#if HTTPD_FS_STATISTICS -static u16_t count[HTTPD_FS_NUMFILES]; -#endif /* HTTPD_FS_STATISTICS */ - -/*-----------------------------------------------------------------------------------*/ -static u8_t -httpd_fs_strcmp(const char *str1, const char *str2) -{ - u8_t i; - i = 0; - loop: - - if(str2[i] == 0 || - str1[i] == '\r' || - str1[i] == '\n') { - return 0; - } - - if(str1[i] != str2[i]) { - return 1; - } - - - ++i; - goto loop; -} -/*-----------------------------------------------------------------------------------*/ -int -httpd_fs_open(const char *name, struct httpd_fs_file *file) -{ -#if HTTPD_FS_STATISTICS - u16_t i = 0; -#endif /* HTTPD_FS_STATISTICS */ - struct httpd_fsdata_file_noconst *f; - - for(f = (struct httpd_fsdata_file_noconst *)HTTPD_FS_ROOT; - f != NULL; - f = (struct httpd_fsdata_file_noconst *)f->next) { - - if(httpd_fs_strcmp(name, f->name) == 0) { - file->data = f->data; - file->len = f->len; -#if HTTPD_FS_STATISTICS - ++count[i]; -#endif /* HTTPD_FS_STATISTICS */ - return 1; - } -#if HTTPD_FS_STATISTICS - ++i; -#endif /* HTTPD_FS_STATISTICS */ - - } - return 0; -} -/*-----------------------------------------------------------------------------------*/ -void -httpd_fs_init(void) -{ -#if HTTPD_FS_STATISTICS - u16_t i; - for(i = 0; i < HTTPD_FS_NUMFILES; i++) { - count[i] = 0; - } -#endif /* HTTPD_FS_STATISTICS */ -} -/*-----------------------------------------------------------------------------------*/ -#if HTTPD_FS_STATISTICS -u16_t httpd_fs_count -(char *name) -{ - struct httpd_fsdata_file_noconst *f; - u16_t i; - - i = 0; - for(f = (struct httpd_fsdata_file_noconst *)HTTPD_FS_ROOT; - f != NULL; - f = (struct httpd_fsdata_file_noconst *)f->next) { - - if(httpd_fs_strcmp(name, f->name) == 0) { - return count[i]; - } - ++i; - } - return 0; -} -#endif /* HTTPD_FS_STATISTICS */ -/*-----------------------------------------------------------------------------------*/ diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/httpd-fs.h b/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/httpd-fs.h deleted file mode 100644 index b594eea56..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/httpd-fs.h +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright (c) 2001, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - * $Id: httpd-fs.h,v 1.1 2006/06/07 09:13:08 adam Exp $ - */ -#ifndef __HTTPD_FS_H__ -#define __HTTPD_FS_H__ - -#define HTTPD_FS_STATISTICS 1 - -struct httpd_fs_file { - char *data; - int len; -}; - -/* file must be allocated by caller and will be filled in - by the function. */ -int httpd_fs_open(const char *name, struct httpd_fs_file *file); - -#ifdef HTTPD_FS_STATISTICS -#if HTTPD_FS_STATISTICS == 1 -u16_t httpd_fs_count(char *name); -#endif /* HTTPD_FS_STATISTICS */ -#endif /* HTTPD_FS_STATISTICS */ - -void httpd_fs_init(void); - -#endif /* __HTTPD_FS_H__ */ diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/httpd-fs/404.html b/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/httpd-fs/404.html deleted file mode 100644 index 43e7f4cad..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/httpd-fs/404.html +++ /dev/null @@ -1,8 +0,0 @@ - - -

-

404 - file not found

-

Go here instead.

-
- - \ No newline at end of file diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/httpd-fs/index.html b/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/httpd-fs/index.html deleted file mode 100644 index 4937dc69a..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/httpd-fs/index.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Loading index.shtml. Click here if not automatically redirected. - - - - - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/httpd-fs/index.shtml b/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/httpd-fs/index.shtml deleted file mode 100644 index 29d242c05..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/httpd-fs/index.shtml +++ /dev/null @@ -1,20 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS.org Homepage | IO -

-


-

-

Task statistics

-Page will refresh every 2 seconds.

-

Task          State  Priority  Stack	#
************************************************
-%! rtos-stats -
-
- - - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/httpd-fs/io.shtml b/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/httpd-fs/io.shtml deleted file mode 100644 index fd0697d2a..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/httpd-fs/io.shtml +++ /dev/null @@ -1,28 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS.org Homepage | IO -

-


-LED and LCD IO
- -

- -Use the check box to turn on or off the LED, enter text to display on the OLED display, then click "Update IO". - - -

-
-%! led-io -

- - -

- - - - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/httpd-fs/runtime.shtml b/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/httpd-fs/runtime.shtml deleted file mode 100644 index 67cae4657..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/httpd-fs/runtime.shtml +++ /dev/null @@ -1,20 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS.org Homepage | IO -

-


-

-

Run-time statistics

-Page will refresh every 2 seconds.

-

Task            Abs Time      % Time
****************************************
-%! run-time -
-
- - - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/httpd-fs/stats.shtml b/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/httpd-fs/stats.shtml deleted file mode 100644 index d95a69340..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/httpd-fs/stats.shtml +++ /dev/null @@ -1,41 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS.org Homepage | IO -

-


-

-

Network statistics

-
LocalRemoteStateRetransmissionsTimerFlags
%d%u.%u.%u.%u:%u%s%u%u%c %c
-
-IP           Packets dropped
-             Packets received
-             Packets sent
-IP errors    IP version/header length
-             IP length, high byte
-             IP length, low byte
-             IP fragments
-             Header checksum
-             Wrong protocol
-ICMP	     Packets dropped
-             Packets received
-             Packets sent
-             Type errors
-TCP          Packets dropped
-             Packets received
-             Packets sent
-             Checksum errors
-             Data packets without ACKs
-             Resets
-             Retransmissions
-	     No connection avaliable
-	     Connection attempts to closed ports
-
%! net-stats
-
- - - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/httpd-fs/tcp.shtml b/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/httpd-fs/tcp.shtml deleted file mode 100644 index 41053679d..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/httpd-fs/tcp.shtml +++ /dev/null @@ -1,21 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS.org Homepage | IO -

-


-
-

Network connections

-

- - -%! tcp-connections - - - - - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/httpd-fsdata.c b/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/httpd-fsdata.c deleted file mode 100644 index c8b2a8026..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/httpd-fsdata.c +++ /dev/null @@ -1,557 +0,0 @@ -static const char data_404_html[] = { - /* /404.html */ - 0x2f, 0x34, 0x30, 0x34, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, 0x20, 0x20, 0x3c, - 0x62, 0x6f, 0x64, 0x79, 0x20, 0x62, 0x67, 0x63, 0x6f, 0x6c, - 0x6f, 0x72, 0x3d, 0x22, 0x77, 0x68, 0x69, 0x74, 0x65, 0x22, - 0x3e, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x63, 0x65, 0x6e, - 0x74, 0x65, 0x72, 0x3e, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x3c, 0x68, 0x31, 0x3e, 0x34, 0x30, 0x34, 0x20, 0x2d, - 0x20, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x6e, 0x6f, 0x74, 0x20, - 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x3c, 0x2f, 0x68, 0x31, 0x3e, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x68, 0x33, - 0x3e, 0x47, 0x6f, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, - 0x66, 0x3d, 0x22, 0x2f, 0x22, 0x3e, 0x68, 0x65, 0x72, 0x65, - 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x65, - 0x61, 0x64, 0x2e, 0x3c, 0x2f, 0x68, 0x33, 0x3e, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x3c, 0x2f, 0x63, 0x65, 0x6e, 0x74, 0x65, - 0x72, 0x3e, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x62, 0x6f, 0x64, - 0x79, 0x3e, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, -0}; - -static const char data_index_html[] = { - /* /index.html */ - 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, - 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, - 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, 0x57, 0x45, 0x42, - 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x64, 0x65, - 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x42, 0x4f, 0x44, 0x59, 0x20, 0x6f, - 0x6e, 0x4c, 0x6f, 0x61, 0x64, 0x3d, 0x22, 0x77, 0x69, 0x6e, - 0x64, 0x6f, 0x77, 0x2e, 0x73, 0x65, 0x74, 0x54, 0x69, 0x6d, - 0x65, 0x6f, 0x75, 0x74, 0x28, 0x26, 0x71, 0x75, 0x6f, 0x74, - 0x3b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x27, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x27, 0x26, 0x71, - 0x75, 0x6f, 0x74, 0x3b, 0x2c, 0x31, 0x30, 0x30, 0x29, 0x22, - 0x3e, 0xa, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, - 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, - 0x3e, 0xa, 0x4c, 0x6f, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x20, - 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, - 0x6c, 0x2e, 0x20, 0x20, 0x43, 0x6c, 0x69, 0x63, 0x6b, 0x20, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x68, 0x65, 0x72, 0x65, 0x3c, 0x2f, 0x61, 0x3e, - 0x20, 0x69, 0x66, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x61, 0x75, - 0x74, 0x6f, 0x6d, 0x61, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x6c, - 0x79, 0x20, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, - 0x65, 0x64, 0x2e, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, - 0x3e, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xa, - 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xa, 0x3c, 0x2f, - 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, 0xa, 0}; - -static const char data_index_shtml[] = { - /* /index.shtml */ - 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, - 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, - 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, 0x57, 0x45, 0x42, - 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x64, 0x65, - 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x42, 0x4f, 0x44, 0x59, 0x20, 0x6f, - 0x6e, 0x4c, 0x6f, 0x61, 0x64, 0x3d, 0x22, 0x77, 0x69, 0x6e, - 0x64, 0x6f, 0x77, 0x2e, 0x73, 0x65, 0x74, 0x54, 0x69, 0x6d, - 0x65, 0x6f, 0x75, 0x74, 0x28, 0x26, 0x71, 0x75, 0x6f, 0x74, - 0x3b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x27, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x27, 0x26, 0x71, - 0x75, 0x6f, 0x74, 0x3b, 0x2c, 0x32, 0x30, 0x30, 0x30, 0x29, - 0x22, 0x3e, 0xa, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, - 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, - 0x22, 0x3e, 0xa, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, - 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, - 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, - 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, - 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x72, 0x75, - 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, - 0x6c, 0x22, 0x3e, 0x52, 0x75, 0x6e, 0x20, 0x54, 0x69, 0x6d, - 0x65, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, - 0x6c, 0x22, 0x3e, 0x54, 0x43, 0x50, 0x20, 0x53, 0x74, 0x61, - 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, 0x63, 0x70, 0x2e, 0x73, - 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, - 0x2e, 0x66, 0x72, 0x65, 0x65, 0x72, 0x74, 0x6f, 0x73, 0x2e, - 0x6f, 0x72, 0x67, 0x2f, 0x22, 0x3e, 0x46, 0x72, 0x65, 0x65, - 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x48, - 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0xa, 0x3c, 0x62, 0x72, - 0x3e, 0x3c, 0x70, 0x3e, 0xa, 0x3c, 0x68, 0x72, 0x3e, 0xa, - 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xa, 0x3c, 0x68, - 0x32, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x73, 0x74, 0x61, - 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x3c, 0x2f, 0x68, - 0x32, 0x3e, 0xa, 0x50, 0x61, 0x67, 0x65, 0x20, 0x77, 0x69, - 0x6c, 0x6c, 0x20, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, - 0x20, 0x65, 0x76, 0x65, 0x72, 0x79, 0x20, 0x32, 0x20, 0x73, - 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x2e, 0x3c, 0x70, 0x3e, - 0xa, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, - 0x65, 0x3d, 0x22, 0x63, 0x6f, 0x75, 0x72, 0x69, 0x65, 0x72, - 0x22, 0x3e, 0x3c, 0x70, 0x72, 0x65, 0x3e, 0x54, 0x61, 0x73, - 0x6b, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x53, 0x74, 0x61, 0x74, 0x65, 0x20, 0x20, 0x50, 0x72, - 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x20, 0x20, 0x53, 0x74, - 0x61, 0x63, 0x6b, 0x9, 0x23, 0x3c, 0x62, 0x72, 0x3e, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x3c, 0x62, 0x72, - 0x3e, 0xa, 0x25, 0x21, 0x20, 0x72, 0x74, 0x6f, 0x73, 0x2d, - 0x73, 0x74, 0x61, 0x74, 0x73, 0xa, 0x3c, 0x2f, 0x70, 0x72, - 0x65, 0x3e, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xa, - 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xa, 0x3c, 0x2f, - 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xa, 0x3c, 0x2f, 0x68, 0x74, - 0x6d, 0x6c, 0x3e, 0xa, 0xa, 0}; - -static const char data_io_shtml[] = { - /* /io.shtml */ - 0x2f, 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, - 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, - 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, 0x57, 0x45, 0x42, - 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x64, 0x65, - 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x42, 0x4f, 0x44, 0x59, 0x3e, 0xa, - 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, - 0x3d, 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xa, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x53, 0x74, 0x61, - 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x72, 0x75, 0x6e, 0x74, 0x69, - 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x52, 0x75, 0x6e, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, - 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, - 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x54, 0x43, 0x50, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, - 0x6c, 0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, - 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, - 0x65, 0x65, 0x72, 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, - 0x2f, 0x22, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x48, 0x6f, 0x6d, 0x65, - 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6f, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x49, 0x4f, 0x3c, - 0x2f, 0x61, 0x3e, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, - 0x3e, 0xa, 0x3c, 0x68, 0x72, 0x3e, 0xa, 0x3c, 0x62, 0x3e, - 0x4c, 0x45, 0x44, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x4c, 0x43, - 0x44, 0x20, 0x49, 0x4f, 0x3c, 0x2f, 0x62, 0x3e, 0x3c, 0x62, - 0x72, 0x3e, 0xa, 0xa, 0x3c, 0x70, 0x3e, 0xa, 0xa, 0x55, - 0x73, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x68, 0x65, - 0x63, 0x6b, 0x20, 0x62, 0x6f, 0x78, 0x20, 0x74, 0x6f, 0x20, - 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6f, 0x6e, 0x20, 0x6f, 0x72, - 0x20, 0x6f, 0x66, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x4c, - 0x45, 0x44, 0x2c, 0x20, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x20, - 0x74, 0x65, 0x78, 0x74, 0x20, 0x74, 0x6f, 0x20, 0x64, 0x69, - 0x73, 0x70, 0x6c, 0x61, 0x79, 0x20, 0x6f, 0x6e, 0x20, 0x74, - 0x68, 0x65, 0x20, 0x4f, 0x4c, 0x45, 0x44, 0x20, 0x64, 0x69, - 0x73, 0x70, 0x6c, 0x61, 0x79, 0x2c, 0x20, 0x74, 0x68, 0x65, - 0x6e, 0x20, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x20, 0x22, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x49, 0x4f, 0x22, 0x2e, - 0xa, 0xa, 0xa, 0x3c, 0x70, 0x3e, 0xa, 0x3c, 0x66, 0x6f, - 0x72, 0x6d, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x22, 0x61, - 0x46, 0x6f, 0x72, 0x6d, 0x22, 0x20, 0x61, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x3d, 0x22, 0x2f, 0x69, 0x6f, 0x2e, 0x73, 0x68, - 0x74, 0x6d, 0x6c, 0x22, 0x20, 0x6d, 0x65, 0x74, 0x68, 0x6f, - 0x64, 0x3d, 0x22, 0x67, 0x65, 0x74, 0x22, 0x3e, 0xa, 0x25, - 0x21, 0x20, 0x6c, 0x65, 0x64, 0x2d, 0x69, 0x6f, 0xa, 0x3c, - 0x70, 0x3e, 0xa, 0x3c, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x20, - 0x74, 0x79, 0x70, 0x65, 0x3d, 0x22, 0x73, 0x75, 0x62, 0x6d, - 0x69, 0x74, 0x22, 0x20, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3d, - 0x22, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x49, 0x4f, - 0x22, 0x3e, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x72, 0x6d, 0x3e, - 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xa, 0x3c, - 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xa, 0x3c, 0x2f, 0x62, - 0x6f, 0x64, 0x79, 0x3e, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, - 0x6c, 0x3e, 0xa, 0xa, 0}; - -static const char data_runtime_shtml[] = { - /* /runtime.shtml */ - 0x2f, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, - 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, - 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, 0x57, 0x45, 0x42, - 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x64, 0x65, - 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x42, 0x4f, 0x44, 0x59, 0x20, 0x6f, - 0x6e, 0x4c, 0x6f, 0x61, 0x64, 0x3d, 0x22, 0x77, 0x69, 0x6e, - 0x64, 0x6f, 0x77, 0x2e, 0x73, 0x65, 0x74, 0x54, 0x69, 0x6d, - 0x65, 0x6f, 0x75, 0x74, 0x28, 0x26, 0x71, 0x75, 0x6f, 0x74, - 0x3b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x27, 0x72, 0x75, 0x6e, 0x74, - 0x69, 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x27, - 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x2c, 0x32, 0x30, 0x30, - 0x30, 0x29, 0x22, 0x3e, 0xa, 0x3c, 0x66, 0x6f, 0x6e, 0x74, - 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, 0x69, - 0x61, 0x6c, 0x22, 0x3e, 0xa, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x61, 0x73, - 0x6b, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x73, 0x68, - 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x52, 0x75, 0x6e, 0x20, 0x54, - 0x69, 0x6d, 0x65, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, - 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x43, 0x50, 0x20, 0x53, - 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, 0x63, 0x70, - 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x43, 0x6f, - 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, - 0x77, 0x77, 0x2e, 0x66, 0x72, 0x65, 0x65, 0x72, 0x74, 0x6f, - 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x22, 0x3e, 0x46, 0x72, - 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, 0x72, 0x67, - 0x20, 0x48, 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0xa, 0x3c, - 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xa, 0x3c, 0x68, 0x72, - 0x3e, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xa, - 0x3c, 0x68, 0x32, 0x3e, 0x52, 0x75, 0x6e, 0x2d, 0x74, 0x69, - 0x6d, 0x65, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, - 0x69, 0x63, 0x73, 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0xa, 0x50, - 0x61, 0x67, 0x65, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x72, - 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x20, 0x65, 0x76, 0x65, - 0x72, 0x79, 0x20, 0x32, 0x20, 0x73, 0x65, 0x63, 0x6f, 0x6e, - 0x64, 0x73, 0x2e, 0x3c, 0x70, 0x3e, 0xa, 0x3c, 0x66, 0x6f, - 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x63, - 0x6f, 0x75, 0x72, 0x69, 0x65, 0x72, 0x22, 0x3e, 0x3c, 0x70, - 0x72, 0x65, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x41, - 0x62, 0x73, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x25, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x3c, - 0x62, 0x72, 0x3e, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x3c, 0x62, 0x72, 0x3e, 0xa, 0x25, 0x21, - 0x20, 0x72, 0x75, 0x6e, 0x2d, 0x74, 0x69, 0x6d, 0x65, 0xa, - 0x3c, 0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, 0x6f, - 0x6e, 0x74, 0x3e, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, - 0x3e, 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xa, - 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, 0xa, 0}; - -static const char data_stats_shtml[] = { - /* /stats.shtml */ - 0x2f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, - 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, - 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, 0x57, 0x45, 0x42, - 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x64, 0x65, - 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x42, 0x4f, 0x44, 0x59, 0x3e, 0xa, - 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, - 0x3d, 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xa, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x53, 0x74, 0x61, - 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x72, 0x75, 0x6e, 0x74, 0x69, - 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x52, 0x75, 0x6e, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, - 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, - 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x54, 0x43, 0x50, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, - 0x6c, 0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, - 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, - 0x65, 0x65, 0x72, 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, - 0x2f, 0x22, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x48, 0x6f, 0x6d, 0x65, - 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6f, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x49, 0x4f, 0x3c, - 0x2f, 0x61, 0x3e, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, - 0x3e, 0xa, 0x3c, 0x68, 0x72, 0x3e, 0xa, 0x3c, 0x62, 0x72, - 0x3e, 0x3c, 0x70, 0x3e, 0xa, 0x3c, 0x68, 0x32, 0x3e, 0x4e, - 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x20, 0x73, 0x74, 0x61, - 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x3c, 0x2f, 0x68, - 0x32, 0x3e, 0xa, 0x3c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, - 0x77, 0x69, 0x64, 0x74, 0x68, 0x3d, 0x22, 0x33, 0x30, 0x30, - 0x22, 0x20, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x3d, 0x22, - 0x30, 0x22, 0x3e, 0xa, 0x3c, 0x74, 0x72, 0x3e, 0x3c, 0x74, - 0x64, 0x20, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x3d, 0x22, 0x6c, - 0x65, 0x66, 0x74, 0x22, 0x3e, 0x3c, 0x66, 0x6f, 0x6e, 0x74, - 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x63, 0x6f, 0x75, - 0x72, 0x69, 0x65, 0x72, 0x22, 0x3e, 0x3c, 0x70, 0x72, 0x65, - 0x3e, 0xa, 0x49, 0x50, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, - 0x74, 0x73, 0x20, 0x64, 0x72, 0x6f, 0x70, 0x70, 0x65, 0x64, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x73, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, 0xa, 0x49, 0x50, 0x20, - 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x20, 0x20, 0x20, 0x20, - 0x49, 0x50, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x2f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, 0x6c, 0x65, - 0x6e, 0x67, 0x74, 0x68, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x49, 0x50, - 0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x2c, 0x20, 0x68, - 0x69, 0x67, 0x68, 0x20, 0x62, 0x79, 0x74, 0x65, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x49, 0x50, 0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, - 0x68, 0x2c, 0x20, 0x6c, 0x6f, 0x77, 0x20, 0x62, 0x79, 0x74, - 0x65, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x49, 0x50, 0x20, 0x66, 0x72, - 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, 0x63, 0x68, - 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0xa, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x57, 0x72, 0x6f, 0x6e, 0x67, 0x20, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x63, 0x6f, 0x6c, 0xa, 0x49, 0x43, 0x4d, 0x50, 0x9, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, - 0x74, 0x73, 0x20, 0x64, 0x72, 0x6f, 0x70, 0x70, 0x65, 0x64, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x73, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, 0xa, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x54, 0x79, 0x70, 0x65, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, - 0x73, 0xa, 0x54, 0x43, 0x50, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, - 0x74, 0x73, 0x20, 0x64, 0x72, 0x6f, 0x70, 0x70, 0x65, 0x64, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x73, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, 0xa, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x20, 0x65, - 0x72, 0x72, 0x6f, 0x72, 0x73, 0xa, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x44, - 0x61, 0x74, 0x61, 0x20, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x73, 0x20, 0x77, 0x69, 0x74, 0x68, 0x6f, 0x75, 0x74, 0x20, - 0x41, 0x43, 0x4b, 0x73, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x52, 0x65, - 0x73, 0x65, 0x74, 0x73, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x52, 0x65, - 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x73, 0x73, 0x69, - 0x6f, 0x6e, 0x73, 0xa, 0x9, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x4e, 0x6f, 0x20, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x20, 0x61, 0x76, 0x61, 0x6c, 0x69, 0x61, - 0x62, 0x6c, 0x65, 0xa, 0x9, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x20, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x73, 0x20, - 0x74, 0x6f, 0x20, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x64, 0x20, - 0x70, 0x6f, 0x72, 0x74, 0x73, 0xa, 0x3c, 0x2f, 0x70, 0x72, - 0x65, 0x3e, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0x3c, - 0x2f, 0x74, 0x64, 0x3e, 0x3c, 0x74, 0x64, 0x3e, 0x3c, 0x70, - 0x72, 0x65, 0x3e, 0x25, 0x21, 0x20, 0x6e, 0x65, 0x74, 0x2d, - 0x73, 0x74, 0x61, 0x74, 0x73, 0xa, 0x3c, 0x2f, 0x70, 0x72, - 0x65, 0x3e, 0x3c, 0x2f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x3e, - 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xa, 0x3c, - 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xa, 0x3c, 0x2f, 0x68, - 0x74, 0x6d, 0x6c, 0x3e, 0xa, 0}; - -static const char data_tcp_shtml[] = { - /* /tcp.shtml */ - 0x2f, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, - 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, - 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, 0x57, 0x45, 0x42, - 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x64, 0x65, - 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x42, 0x4f, 0x44, 0x59, 0x3e, 0xa, - 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, - 0x3d, 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xa, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x53, 0x74, 0x61, - 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x72, 0x75, 0x6e, 0x74, 0x69, - 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x52, 0x75, 0x6e, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, - 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, - 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x54, 0x43, 0x50, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, - 0x6c, 0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, - 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, - 0x65, 0x65, 0x72, 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, - 0x2f, 0x22, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x48, 0x6f, 0x6d, 0x65, - 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6f, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x49, 0x4f, 0x3c, - 0x2f, 0x61, 0x3e, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, - 0x3e, 0xa, 0x3c, 0x68, 0x72, 0x3e, 0xa, 0x3c, 0x62, 0x72, - 0x3e, 0xa, 0x3c, 0x68, 0x32, 0x3e, 0x4e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x20, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x68, 0x32, 0x3e, - 0xa, 0x3c, 0x70, 0x3e, 0xa, 0x3c, 0x74, 0x61, 0x62, 0x6c, - 0x65, 0x3e, 0xa, 0x3c, 0x74, 0x72, 0x3e, 0x3c, 0x74, 0x68, - 0x3e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x3c, 0x2f, 0x74, 0x68, - 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x52, 0x65, 0x6d, 0x6f, 0x74, - 0x65, 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, - 0x53, 0x74, 0x61, 0x74, 0x65, 0x3c, 0x2f, 0x74, 0x68, 0x3e, - 0x3c, 0x74, 0x68, 0x3e, 0x52, 0x65, 0x74, 0x72, 0x61, 0x6e, - 0x73, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x3c, - 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x54, 0x69, - 0x6d, 0x65, 0x72, 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, - 0x68, 0x3e, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x3c, 0x2f, 0x74, - 0x68, 0x3e, 0x3c, 0x2f, 0x74, 0x72, 0x3e, 0xa, 0x25, 0x21, - 0x20, 0x74, 0x63, 0x70, 0x2d, 0x63, 0x6f, 0x6e, 0x6e, 0x65, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0xa, 0x3c, 0x2f, 0x70, - 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, - 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xa, 0x3c, - 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xa, 0x3c, 0x2f, 0x68, - 0x74, 0x6d, 0x6c, 0x3e, 0xa, 0xa, 0}; - -const struct httpd_fsdata_file file_404_html[] = {{NULL, data_404_html, data_404_html + 10, sizeof(data_404_html) - 10, 0}}; - -const struct httpd_fsdata_file file_index_html[] = {{file_404_html, data_index_html, data_index_html + 12, sizeof(data_index_html) - 12, 0}}; - -const struct httpd_fsdata_file file_index_shtml[] = {{file_index_html, data_index_shtml, data_index_shtml + 13, sizeof(data_index_shtml) - 13, 0}}; - -const struct httpd_fsdata_file file_io_shtml[] = {{file_index_shtml, data_io_shtml, data_io_shtml + 10, sizeof(data_io_shtml) - 10, 0}}; - -const struct httpd_fsdata_file file_runtime_shtml[] = {{file_io_shtml, data_runtime_shtml, data_runtime_shtml + 15, sizeof(data_runtime_shtml) - 15, 0}}; - -const struct httpd_fsdata_file file_stats_shtml[] = {{file_runtime_shtml, data_stats_shtml, data_stats_shtml + 13, sizeof(data_stats_shtml) - 13, 0}}; - -const struct httpd_fsdata_file file_tcp_shtml[] = {{file_stats_shtml, data_tcp_shtml, data_tcp_shtml + 11, sizeof(data_tcp_shtml) - 11, 0}}; - -#define HTTPD_FS_ROOT file_tcp_shtml - -#define HTTPD_FS_NUMFILES 7 diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/httpd-fsdata.h b/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/httpd-fsdata.h deleted file mode 100644 index 52d35c265..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/httpd-fsdata.h +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright (c) 2001, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - * $Id: httpd-fsdata.h,v 1.1 2006/06/07 09:13:08 adam Exp $ - */ -#ifndef __HTTPD_FSDATA_H__ -#define __HTTPD_FSDATA_H__ - -#include "uip.h" - -struct httpd_fsdata_file { - const struct httpd_fsdata_file *next; - const char *name; - const char *data; - const int len; -#ifdef HTTPD_FS_STATISTICS -#if HTTPD_FS_STATISTICS == 1 - u16_t count; -#endif /* HTTPD_FS_STATISTICS */ -#endif /* HTTPD_FS_STATISTICS */ -}; - -struct httpd_fsdata_file_noconst { - struct httpd_fsdata_file *next; - char *name; - char *data; - int len; -#ifdef HTTPD_FS_STATISTICS -#if HTTPD_FS_STATISTICS == 1 - u16_t count; -#endif /* HTTPD_FS_STATISTICS */ -#endif /* HTTPD_FS_STATISTICS */ -}; - -#endif /* __HTTPD_FSDATA_H__ */ diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/httpd.c b/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/httpd.c deleted file mode 100644 index c416cc1c8..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/httpd.c +++ /dev/null @@ -1,346 +0,0 @@ -/** - * \addtogroup apps - * @{ - */ - -/** - * \defgroup httpd Web server - * @{ - * The uIP web server is a very simplistic implementation of an HTTP - * server. It can serve web pages and files from a read-only ROM - * filesystem, and provides a very small scripting language. - - */ - -/** - * \file - * Web server - * \author - * Adam Dunkels - */ - - -/* - * Copyright (c) 2004, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * Author: Adam Dunkels - * - * $Id: httpd.c,v 1.2 2006/06/11 21:46:38 adam Exp $ - */ - -#include "uip.h" -#include "httpd.h" -#include "httpd-fs.h" -#include "httpd-cgi.h" -#include "http-strings.h" - -#include - -#define STATE_WAITING 0 -#define STATE_OUTPUT 1 - -#define ISO_nl 0x0a -#define ISO_space 0x20 -#define ISO_bang 0x21 -#define ISO_percent 0x25 -#define ISO_period 0x2e -#define ISO_slash 0x2f -#define ISO_colon 0x3a - - -/*---------------------------------------------------------------------------*/ -static unsigned short -generate_part_of_file(void *state) -{ - struct httpd_state *s = (struct httpd_state *)state; - - if(s->file.len > uip_mss()) { - s->len = uip_mss(); - } else { - s->len = s->file.len; - } - memcpy(uip_appdata, s->file.data, s->len); - - return s->len; -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(send_file(struct httpd_state *s)) -{ - PSOCK_BEGIN(&s->sout); - - do { - PSOCK_GENERATOR_SEND(&s->sout, generate_part_of_file, s); - s->file.len -= s->len; - s->file.data += s->len; - } while(s->file.len > 0); - - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(send_part_of_file(struct httpd_state *s)) -{ - PSOCK_BEGIN(&s->sout); - - PSOCK_SEND(&s->sout, s->file.data, s->len); - - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -static void -next_scriptstate(struct httpd_state *s) -{ - char *p; - p = strchr(s->scriptptr, ISO_nl) + 1; - s->scriptlen -= (unsigned short)(p - s->scriptptr); - s->scriptptr = p; -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(handle_script(struct httpd_state *s)) -{ - char *ptr; - - PT_BEGIN(&s->scriptpt); - - - while(s->file.len > 0) { - - /* Check if we should start executing a script. */ - if(*s->file.data == ISO_percent && - *(s->file.data + 1) == ISO_bang) { - s->scriptptr = s->file.data + 3; - s->scriptlen = s->file.len - 3; - if(*(s->scriptptr - 1) == ISO_colon) { - httpd_fs_open(s->scriptptr + 1, &s->file); - PT_WAIT_THREAD(&s->scriptpt, send_file(s)); - } else { - PT_WAIT_THREAD(&s->scriptpt, - httpd_cgi(s->scriptptr)(s, s->scriptptr)); - } - next_scriptstate(s); - - /* The script is over, so we reset the pointers and continue - sending the rest of the file. */ - s->file.data = s->scriptptr; - s->file.len = s->scriptlen; - } else { - /* See if we find the start of script marker in the block of HTML - to be sent. */ - - if(s->file.len > uip_mss()) { - s->len = uip_mss(); - } else { - s->len = s->file.len; - } - - if(*s->file.data == ISO_percent) { - ptr = strchr(s->file.data + 1, ISO_percent); - } else { - ptr = strchr(s->file.data, ISO_percent); - } - if(ptr != NULL && - ptr != s->file.data) { - s->len = (int)(ptr - s->file.data); - if(s->len >= uip_mss()) { - s->len = uip_mss(); - } - } - PT_WAIT_THREAD(&s->scriptpt, send_part_of_file(s)); - s->file.data += s->len; - s->file.len -= s->len; - - } - } - - PT_END(&s->scriptpt); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(send_headers(struct httpd_state *s, const char *statushdr)) -{ - char *ptr; - - PSOCK_BEGIN(&s->sout); - - PSOCK_SEND_STR(&s->sout, statushdr); - - ptr = strrchr(s->filename, ISO_period); - if(ptr == NULL) { - PSOCK_SEND_STR(&s->sout, http_content_type_binary); - } else if(strncmp(http_html, ptr, 5) == 0 || - strncmp(http_shtml, ptr, 6) == 0) { - PSOCK_SEND_STR(&s->sout, http_content_type_html); - } else if(strncmp(http_css, ptr, 4) == 0) { - PSOCK_SEND_STR(&s->sout, http_content_type_css); - } else if(strncmp(http_png, ptr, 4) == 0) { - PSOCK_SEND_STR(&s->sout, http_content_type_png); - } else if(strncmp(http_gif, ptr, 4) == 0) { - PSOCK_SEND_STR(&s->sout, http_content_type_gif); - } else if(strncmp(http_jpg, ptr, 4) == 0) { - PSOCK_SEND_STR(&s->sout, http_content_type_jpg); - } else { - PSOCK_SEND_STR(&s->sout, http_content_type_plain); - } - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(handle_output(struct httpd_state *s)) -{ - char *ptr; - - PT_BEGIN(&s->outputpt); - - if(!httpd_fs_open(s->filename, &s->file)) { - httpd_fs_open(http_404_html, &s->file); - strcpy(s->filename, http_404_html); - PT_WAIT_THREAD(&s->outputpt, - send_headers(s, - http_header_404)); - PT_WAIT_THREAD(&s->outputpt, - send_file(s)); - } else { - PT_WAIT_THREAD(&s->outputpt, - send_headers(s, - http_header_200)); - ptr = strchr(s->filename, ISO_period); - if(ptr != NULL && strncmp(ptr, http_shtml, 6) == 0) { - PT_INIT(&s->scriptpt); - PT_WAIT_THREAD(&s->outputpt, handle_script(s)); - } else { - PT_WAIT_THREAD(&s->outputpt, - send_file(s)); - } - } - PSOCK_CLOSE(&s->sout); - PT_END(&s->outputpt); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(handle_input(struct httpd_state *s)) -{ - PSOCK_BEGIN(&s->sin); - - PSOCK_READTO(&s->sin, ISO_space); - - - if(strncmp(s->inputbuf, http_get, 4) != 0) { - PSOCK_CLOSE_EXIT(&s->sin); - } - PSOCK_READTO(&s->sin, ISO_space); - - if(s->inputbuf[0] != ISO_slash) { - PSOCK_CLOSE_EXIT(&s->sin); - } - - if(s->inputbuf[1] == ISO_space) { - strncpy(s->filename, http_index_html, sizeof(s->filename)); - } else { - - s->inputbuf[PSOCK_DATALEN(&s->sin) - 1] = 0; - - /* Process any form input being sent to the server. */ - { - extern void vApplicationProcessFormInput( char *pcInputString ); - vApplicationProcessFormInput( s->inputbuf ); - } - - strncpy(s->filename, &s->inputbuf[0], sizeof(s->filename)); - } - - /* httpd_log_file(uip_conn->ripaddr, s->filename);*/ - - s->state = STATE_OUTPUT; - - while(1) { - PSOCK_READTO(&s->sin, ISO_nl); - - if(strncmp(s->inputbuf, http_referer, 8) == 0) { - s->inputbuf[PSOCK_DATALEN(&s->sin) - 2] = 0; - /* httpd_log(&s->inputbuf[9]);*/ - } - } - - PSOCK_END(&s->sin); -} -/*---------------------------------------------------------------------------*/ -static void -handle_connection(struct httpd_state *s) -{ - handle_input(s); - if(s->state == STATE_OUTPUT) { - handle_output(s); - } -} -/*---------------------------------------------------------------------------*/ -void -httpd_appcall(void) -{ - struct httpd_state *s = (struct httpd_state *)&(uip_conn->appstate); - - if(uip_closed() || uip_aborted() || uip_timedout()) { - } else if(uip_connected()) { - PSOCK_INIT(&s->sin, s->inputbuf, sizeof(s->inputbuf) - 1); - PSOCK_INIT(&s->sout, s->inputbuf, sizeof(s->inputbuf) - 1); - PT_INIT(&s->outputpt); - s->state = STATE_WAITING; - /* timer_set(&s->timer, CLOCK_SECOND * 100);*/ - s->timer = 0; - handle_connection(s); - } else if(s != NULL) { - if(uip_poll()) { - ++s->timer; - if(s->timer >= 20) { - uip_abort(); - } - } else { - s->timer = 0; - } - handle_connection(s); - } else { - uip_abort(); - } -} -/*---------------------------------------------------------------------------*/ -/** - * \brief Initialize the web server - * - * This function initializes the web server and should be - * called at system boot-up. - */ -void -httpd_init(void) -{ - uip_listen(HTONS(80)); -} -/*---------------------------------------------------------------------------*/ -/** @} */ diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/httpd.h b/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/httpd.h deleted file mode 100644 index 7f7a6666e..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/httpd.h +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright (c) 2001-2005, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: httpd.h,v 1.2 2006/06/11 21:46:38 adam Exp $ - * - */ - -#ifndef __HTTPD_H__ -#define __HTTPD_H__ - -#include "psock.h" -#include "httpd-fs.h" - -struct httpd_state { - unsigned char timer; - struct psock sin, sout; - struct pt outputpt, scriptpt; - char inputbuf[50]; - char filename[20]; - char state; - struct httpd_fs_file file; - int len; - char *scriptptr; - int scriptlen; - - unsigned short count; -}; - -void httpd_init(void); -void httpd_appcall(void); - -void httpd_log(char *msg); -void httpd_log_file(u16_t *requester, char *file); - -#endif /* __HTTPD_H__ */ diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/makefsdata b/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/makefsdata deleted file mode 100644 index 8d2715a8a..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/makefsdata +++ /dev/null @@ -1,78 +0,0 @@ -#!/usr/bin/perl - -open(OUTPUT, "> httpd-fsdata.c"); - -chdir("httpd-fs"); - -opendir(DIR, "."); -@files = grep { !/^\./ && !/(CVS|~)/ } readdir(DIR); -closedir(DIR); - -foreach $file (@files) { - - if(-d $file && $file !~ /^\./) { - print "Processing directory $file\n"; - opendir(DIR, $file); - @newfiles = grep { !/^\./ && !/(CVS|~)/ } readdir(DIR); - closedir(DIR); - printf "Adding files @newfiles\n"; - @files = (@files, map { $_ = "$file/$_" } @newfiles); - next; - } -} - -foreach $file (@files) { - if(-f $file) { - - print "Adding file $file\n"; - - open(FILE, $file) || die "Could not open file $file\n"; - - $file =~ s-^-/-; - $fvar = $file; - $fvar =~ s-/-_-g; - $fvar =~ s-\.-_-g; - # for AVR, add PROGMEM here - print(OUTPUT "static const unsigned char data".$fvar."[] = {\n"); - print(OUTPUT "\t/* $file */\n\t"); - for($j = 0; $j < length($file); $j++) { - printf(OUTPUT "%#02x, ", unpack("C", substr($file, $j, 1))); - } - printf(OUTPUT "0,\n"); - - - $i = 0; - while(read(FILE, $data, 1)) { - if($i == 0) { - print(OUTPUT "\t"); - } - printf(OUTPUT "%#02x, ", unpack("C", $data)); - $i++; - if($i == 10) { - print(OUTPUT "\n"); - $i = 0; - } - } - print(OUTPUT "0};\n\n"); - close(FILE); - push(@fvars, $fvar); - push(@pfiles, $file); - } -} - -for($i = 0; $i < @fvars; $i++) { - $file = $pfiles[$i]; - $fvar = $fvars[$i]; - - if($i == 0) { - $prevfile = "NULL"; - } else { - $prevfile = "file" . $fvars[$i - 1]; - } - print(OUTPUT "const struct httpd_fsdata_file file".$fvar."[] = {{$prevfile, data$fvar, "); - print(OUTPUT "data$fvar + ". (length($file) + 1) .", "); - print(OUTPUT "sizeof(data$fvar) - ". (length($file) + 1) ."}};\n\n"); -} - -print(OUTPUT "#define HTTPD_FS_ROOT file$fvars[$i - 1]\n\n"); -print(OUTPUT "#define HTTPD_FS_NUMFILES $i\n"); diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/makestrings b/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/makestrings deleted file mode 100644 index 8a13c6d29..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/makestrings +++ /dev/null @@ -1,40 +0,0 @@ -#!/usr/bin/perl - - -sub stringify { - my $name = shift(@_); - open(OUTPUTC, "> $name.c"); - open(OUTPUTH, "> $name.h"); - - open(FILE, "$name"); - - while() { - if(/(.+) "(.+)"/) { - $var = $1; - $data = $2; - - $datan = $data; - $datan =~ s/\\r/\r/g; - $datan =~ s/\\n/\n/g; - $datan =~ s/\\01/\01/g; - $datan =~ s/\\0/\0/g; - - printf(OUTPUTC "const char $var\[%d] = \n", length($datan) + 1); - printf(OUTPUTC "/* \"$data\" */\n"); - printf(OUTPUTC "{"); - for($j = 0; $j < length($datan); $j++) { - printf(OUTPUTC "%#02x, ", unpack("C", substr($datan, $j, 1))); - } - printf(OUTPUTC "};\n"); - - printf(OUTPUTH "extern const char $var\[%d];\n", length($datan) + 1); - - } - } - close(OUTPUTC); - close(OUTPUTH); -} -stringify("http-strings"); - -exit 0; - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/uIP_Task.c b/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/uIP_Task.c deleted file mode 100644 index 9bb89b5c1..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/uIP_Task.c +++ /dev/null @@ -1,244 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* Standard includes. */ -#include - -/* Scheduler includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "semphr.h" - -/* uip includes. */ -#include "uip.h" -#include "uip_arp.h" -#include "httpd.h" -#include "timer.h" -#include "clock-arch.h" - -/* Demo includes. */ -#include "EthDev_LPC17xx.h" -#include "EthDev.h" -#include "ParTest.h" - -/*-----------------------------------------------------------*/ - -/* How long to wait before attempting to connect the MAC again. */ -#define uipINIT_WAIT ( 100 / portTICK_PERIOD_MS ) - -/* Shortcut to the header within the Rx buffer. */ -#define xHeader ((struct uip_eth_hdr *) &uip_buf[ 0 ]) - -/* Standard constant. */ -#define uipTOTAL_FRAME_HEADER_SIZE 54 - -/*-----------------------------------------------------------*/ - -/* - * Setup the MAC address in the MAC itself, and in the uIP stack. - */ -static void prvSetMACAddress( void ); - -/* - * Port functions required by the uIP stack. - */ -void clock_init( void ); -clock_time_t clock_time( void ); - -/*-----------------------------------------------------------*/ - -/* The semaphore used by the ISR to wake the uIP task. */ -SemaphoreHandle_t xEMACSemaphore = NULL; - -/*-----------------------------------------------------------*/ - -void clock_init(void) -{ - /* This is done when the scheduler starts. */ -} -/*-----------------------------------------------------------*/ - -clock_time_t clock_time( void ) -{ - return xTaskGetTickCount(); -} -/*-----------------------------------------------------------*/ - -void vuIP_Task( void *pvParameters ) -{ -portBASE_TYPE i; -uip_ipaddr_t xIPAddr; -struct timer periodic_timer, arp_timer; -extern void ( vEMAC_ISR_Wrapper )( void ); - - ( void ) pvParameters; - - /* Initialise the uIP stack. */ - timer_set( &periodic_timer, configTICK_RATE_HZ / 2 ); - timer_set( &arp_timer, configTICK_RATE_HZ * 10 ); - uip_init(); - uip_ipaddr( xIPAddr, configIP_ADDR0, configIP_ADDR1, configIP_ADDR2, configIP_ADDR3 ); - uip_sethostaddr( xIPAddr ); - uip_ipaddr( xIPAddr, configNET_MASK0, configNET_MASK1, configNET_MASK2, configNET_MASK3 ); - uip_setnetmask( xIPAddr ); - httpd_init(); - - /* Create the semaphore used to wake the uIP task. */ - vSemaphoreCreateBinary( xEMACSemaphore ); - - /* Initialise the MAC. */ - while( lEMACInit() != pdPASS ) - { - vTaskDelay( uipINIT_WAIT ); - } - - portENTER_CRITICAL(); - { - EMAC->IntEnable = ( INT_RX_DONE | INT_TX_DONE ); - - /* Set the interrupt priority to the max permissible to cause some - interrupt nesting. */ - NVIC_SetPriority( ENET_IRQn, configEMAC_INTERRUPT_PRIORITY ); - - /* Enable the interrupt. */ - NVIC_EnableIRQ( ENET_IRQn ); - prvSetMACAddress(); - } - portEXIT_CRITICAL(); - - - for( ;; ) - { - /* Is there received data ready to be processed? */ - uip_len = ulGetEMACRxData(); - - if( ( uip_len > 0 ) && ( uip_buf != NULL ) ) - { - /* Standard uIP loop taken from the uIP manual. */ - if( xHeader->type == htons( UIP_ETHTYPE_IP ) ) - { - uip_arp_ipin(); - uip_input(); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - uip_arp_out(); - vSendEMACTxData( uip_len ); - } - } - else if( xHeader->type == htons( UIP_ETHTYPE_ARP ) ) - { - uip_arp_arpin(); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - vSendEMACTxData( uip_len ); - } - } - } - else - { - if( timer_expired( &periodic_timer ) && ( uip_buf != NULL ) ) - { - timer_reset( &periodic_timer ); - for( i = 0; i < UIP_CONNS; i++ ) - { - uip_periodic( i ); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - uip_arp_out(); - vSendEMACTxData( uip_len ); - } - } - - /* Call the ARP timer function every 10 seconds. */ - if( timer_expired( &arp_timer ) ) - { - timer_reset( &arp_timer ); - uip_arp_timer(); - } - } - else - { - /* We did not receive a packet, and there was no periodic - processing to perform. Block for a fixed period. If a packet - is received during this period we will be woken by the ISR - giving us the Semaphore. */ - xSemaphoreTake( xEMACSemaphore, configTICK_RATE_HZ / 2 ); - } - } - } -} -/*-----------------------------------------------------------*/ - -static void prvSetMACAddress( void ) -{ -struct uip_eth_addr xAddr; - - /* Configure the MAC address in the uIP stack. */ - xAddr.addr[ 0 ] = configMAC_ADDR0; - xAddr.addr[ 1 ] = configMAC_ADDR1; - xAddr.addr[ 2 ] = configMAC_ADDR2; - xAddr.addr[ 3 ] = configMAC_ADDR3; - xAddr.addr[ 4 ] = configMAC_ADDR4; - xAddr.addr[ 5 ] = configMAC_ADDR5; - uip_setethaddr( xAddr ); -} -/*-----------------------------------------------------------*/ - -void vApplicationProcessFormInput( char *pcInputString ) -{ -char *c; -extern void vParTestSetLEDState( long lState ); - - /* Process the form input sent by the IO page of the served HTML. */ - - c = strstr( pcInputString, "?" ); - if( c ) - { - /* Turn the FIO1 LED's on or off in accordance with the check box status. */ - if( strstr( c, "LED0=1" ) != NULL ) - { - vParTestSetLEDState( pdTRUE ); - } - else - { - vParTestSetLEDState( pdFALSE ); - } - } -} - diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/uip-conf.h b/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/uip-conf.h deleted file mode 100644 index b52b23fed..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/uip-conf.h +++ /dev/null @@ -1,159 +0,0 @@ -/** - * \addtogroup uipopt - * @{ - */ - -/** - * \name Project-specific configuration options - * @{ - * - * uIP has a number of configuration options that can be overridden - * for each project. These are kept in a project-specific uip-conf.h - * file and all configuration names have the prefix UIP_CONF. - */ - -/* - * Copyright (c) 2006, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: uip-conf.h,v 1.6 2006/06/12 08:00:31 adam Exp $ - */ - -/** - * \file - * An example uIP configuration file - * \author - * Adam Dunkels - */ - -#ifndef __UIP_CONF_H__ -#define __UIP_CONF_H__ - -#include - -#define UIP_CONF_EXTERNAL_BUFFER - -/** - * 8 bit datatype - * - * This typedef defines the 8-bit type used throughout uIP. - * - * \hideinitializer - */ -typedef uint8_t u8_t; - -/** - * 16 bit datatype - * - * This typedef defines the 16-bit type used throughout uIP. - * - * \hideinitializer - */ -typedef uint16_t u16_t; - -/** - * Statistics datatype - * - * This typedef defines the dataype used for keeping statistics in - * uIP. - * - * \hideinitializer - */ -typedef unsigned short uip_stats_t; - -/** - * Maximum number of TCP connections. - * - * \hideinitializer - */ -#define UIP_CONF_MAX_CONNECTIONS 40 - -/** - * Maximum number of listening TCP ports. - * - * \hideinitializer - */ -#define UIP_CONF_MAX_LISTENPORTS 40 - -/** - * uIP buffer size. - * - * \hideinitializer - */ -#define UIP_CONF_BUFFER_SIZE 1480 - -/** - * CPU byte order. - * - * \hideinitializer - */ -#define UIP_CONF_BYTE_ORDER LITTLE_ENDIAN - -/** - * Logging on or off - * - * \hideinitializer - */ -#define UIP_CONF_LOGGING 0 - -/** - * UDP support on or off - * - * \hideinitializer - */ -#define UIP_CONF_UDP 0 - -/** - * UDP checksums on or off - * - * \hideinitializer - */ -#define UIP_CONF_UDP_CHECKSUMS 1 - -/** - * uIP statistics on or off - * - * \hideinitializer - */ -#define UIP_CONF_STATISTICS 1 - -/* Here we include the header file for the application(s) we use in - our project. */ -/*#include "smtp.h"*/ -/*#include "hello-world.h"*/ -/*#include "telnetd.h"*/ -#include "webserver.h" -/*#include "dhcpc.h"*/ -/*#include "resolv.h"*/ -/*#include "webclient.h"*/ - -#endif /* __UIP_CONF_H__ */ - -/** @} */ -/** @} */ diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/webserver.h b/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/webserver.h deleted file mode 100644 index 1acb290b8..000000000 --- a/FreeRTOS/Demo/CORTEX_LPC1768_IAR/webserver/webserver.h +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright (c) 2002, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials provided - * with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: webserver.h,v 1.2 2006/06/11 21:46:38 adam Exp $ - * - */ -#ifndef __WEBSERVER_H__ -#define __WEBSERVER_H__ - -#include "httpd.h" - -typedef struct httpd_state uip_tcp_appstate_t; -/* UIP_APPCALL: the name of the application function. This function - must return void and take no arguments (i.e., C type "void - appfunc(void)"). */ -#ifndef UIP_APPCALL -#define UIP_APPCALL httpd_appcall -#endif - - -#endif /* __WEBSERVER_H__ */ diff --git a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/FreeRTOSConfig.h b/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/FreeRTOSConfig.h deleted file mode 100644 index 5ef89152e..000000000 --- a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/FreeRTOSConfig.h +++ /dev/null @@ -1,136 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -#ifndef FREERTOS_CONFIG_H -#define FREERTOS_CONFIG_H - -/*----------------------------------------------------------- - * Application specific definitions. - * - * These definitions should be adjusted for your particular hardware and - * application requirements. - * - * THESE PARAMETERS ARE DESCRIBED WITHIN THE 'CONFIGURATION' SECTION OF THE - * FreeRTOS API DOCUMENTATION AVAILABLE ON THE FreeRTOS.org WEB SITE. - * - * See http://www.freertos.org/a00110.html - *----------------------------------------------------------*/ - -#define configUSE_PREEMPTION 1 -#define configUSE_IDLE_HOOK 0 -#define configUSE_TICK_HOOK 1 -#define configCPU_CLOCK_HZ ( ( unsigned long ) 62500000 ) -#define configTICK_RATE_HZ ( ( TickType_t ) 1000 ) -#define configMAX_PRIORITIES ( 5 ) -#define configMINIMAL_STACK_SIZE ( ( unsigned short ) 128 ) -#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 30 * 1024 ) ) -#define configMAX_TASK_NAME_LEN ( 16 ) -#define configUSE_TRACE_FACILITY 1 -#define configUSE_16_BIT_TICKS 0 -#define configIDLE_SHOULD_YIELD 1 - -/* Co-routine definitions. */ -#define configUSE_CO_ROUTINES 0 -#define configMAX_CO_ROUTINE_PRIORITIES ( 2 ) - -#define configUSE_MUTEXES 1 -#define configUSE_COUNTING_SEMAPHORES 0 -#define configUSE_ALTERNATIVE_API 0 -#define configCHECK_FOR_STACK_OVERFLOW 2 -#define configUSE_RECURSIVE_MUTEXES 1 -#define configQUEUE_REGISTRY_SIZE 0 -#define configGENERATE_RUN_TIME_STATS 1 - -/* Set the following definitions to 1 to include the API function, or zero -to exclude the API function. */ - -#define INCLUDE_vTaskPrioritySet 1 -#define INCLUDE_uxTaskPriorityGet 1 -#define INCLUDE_vTaskDelete 1 -#define INCLUDE_vTaskCleanUpResources 0 -#define INCLUDE_vTaskSuspend 1 -#define INCLUDE_vTaskDelayUntil 1 -#define INCLUDE_vTaskDelay 1 - -/* This demo makes use of one or more example stats formatting functions. These -format the raw data provided by the uxTaskGetSystemState() function in to human -readable ASCII form. See the notes in the implementation of vTaskList() within -FreeRTOS/Source/tasks.c for limitations. */ -#define configUSE_STATS_FORMATTING_FUNCTIONS 1 - -/* This is the raw value as per the Cortex-M3 NVIC. Values can be 255 -(lowest) to 0 (1?) (highest). */ -#define configKERNEL_INTERRUPT_PRIORITY 255 -/* !!!! configMAX_SYSCALL_INTERRUPT_PRIORITY must not be set to zero !!!! -See http://www.FreeRTOS.org/RTOS-Cortex-M3-M4.html. */ -#define configMAX_SYSCALL_INTERRUPT_PRIORITY 191 /* equivalent to 0xb0, or priority 11. */ - - -/* This is the value being used as per the ST library which permits 16 -priority values, 0 to 15. This must correspond to the -configKERNEL_INTERRUPT_PRIORITY setting. Here 15 corresponds to the lowest -NVIC value of 255. */ -#define configLIBRARY_KERNEL_INTERRUPT_PRIORITY 15 - -/*----------------------------------------------------------- - * Ethernet configuration. - *-----------------------------------------------------------*/ - -/* MAC address configuration. */ -#define configMAC_ADDR0 0x00 -#define configMAC_ADDR1 0x12 -#define configMAC_ADDR2 0x13 -#define configMAC_ADDR3 0x10 -#define configMAC_ADDR4 0x15 -#define configMAC_ADDR5 0x11 - -/* IP address configuration. */ -#define configIP_ADDR0 172 -#define configIP_ADDR1 25 -#define configIP_ADDR2 218 -#define configIP_ADDR3 202 - -/* Netmask configuration. */ -#define configNET_MASK0 255 -#define configNET_MASK1 255 -#define configNET_MASK2 255 -#define configNET_MASK3 0 - - -/*----------------------------------------------------------- - * Macros required to setup the timer for the run time stats. - *-----------------------------------------------------------*/ -/* The run time stats time base just uses the existing high frequency timer -test clock. All these macros do is clear and return the high frequency -interrupt count respectively. */ -extern unsigned long ulRunTimeStatsClock; -#define portCONFIGURE_TIMER_FOR_RUN_TIME_STATS() ulRunTimeStatsClock = 0 -#define portGET_RUN_TIME_COUNTER_VALUE() ulRunTimeStatsClock - - -#endif /* FREERTOS_CONFIG_H */ - diff --git a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/LCD/STM3210D_lcd.h b/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/LCD/STM3210D_lcd.h deleted file mode 100644 index 8c45b4164..000000000 --- a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/LCD/STM3210D_lcd.h +++ /dev/null @@ -1,205 +0,0 @@ -/******************** (C) COPYRIGHT 2008 STMicroelectronics ******************** -* File Name : lcd.h -* Author : MCD Application Team -* Version : VX.Y.Z -* Date : mm/dd/yyyy -* Description : This file contains all the functions prototypes for the -* lcd firmware driver. -******************************************************************************** -* THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS -* WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. -* AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, -* INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE -* CONTENT OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING -* INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. -*******************************************************************************/ - -/* Define to prevent recursive inclusion -------------------------------------*/ -#ifndef __LCD_H -#define __LCD_H - -/* Includes ------------------------------------------------------------------*/ -#include "stm32f10x_lib.h" - -/* Exported types ------------------------------------------------------------*/ -/* Exported constants --------------------------------------------------------*/ -/* LCD Registers */ -#define R0 0x00 -#define R1 0x01 -#define R2 0x02 -#define R3 0x03 -#define R4 0x04 -#define R5 0x05 -#define R6 0x06 -#define R7 0x07 -#define R8 0x08 -#define R9 0x09 -#define R10 0x0A -#define R12 0x0C -#define R13 0x0D -#define R14 0x0E -#define R15 0x0F -#define R16 0x10 -#define R17 0x11 -#define R18 0x12 -#define R19 0x13 -#define R20 0x14 -#define R21 0x15 -#define R22 0x16 -#define R23 0x17 -#define R24 0x18 -#define R25 0x19 -#define R26 0x1A -#define R27 0x1B -#define R28 0x1C -#define R29 0x1D -#define R30 0x1E -#define R31 0x1F -#define R32 0x20 -#define R33 0x21 -#define R34 0x22 -#define R36 0x24 -#define R37 0x25 -#define R40 0x28 -#define R41 0x29 -#define R43 0x2B -#define R45 0x2D -#define R48 0x30 -#define R49 0x31 -#define R50 0x32 -#define R51 0x33 -#define R52 0x34 -#define R53 0x35 -#define R54 0x36 -#define R55 0x37 -#define R56 0x38 -#define R57 0x39 -#define R59 0x3B -#define R60 0x3C -#define R61 0x3D -#define R62 0x3E -#define R63 0x3F -#define R64 0x40 -#define R65 0x41 -#define R66 0x42 -#define R67 0x43 -#define R68 0x44 -#define R69 0x45 -#define R70 0x46 -#define R71 0x47 -#define R72 0x48 -#define R73 0x49 -#define R74 0x4A -#define R75 0x4B -#define R76 0x4C -#define R77 0x4D -#define R78 0x4E -#define R79 0x4F -#define R80 0x50 -#define R81 0x51 -#define R82 0x52 -#define R83 0x53 -#define R96 0x60 -#define R97 0x61 -#define R106 0x6A -#define R118 0x76 -#define R128 0x80 -#define R129 0x81 -#define R130 0x82 -#define R131 0x83 -#define R132 0x84 -#define R133 0x85 -#define R134 0x86 -#define R135 0x87 -#define R136 0x88 -#define R137 0x89 -#define R139 0x8B -#define R140 0x8C -#define R141 0x8D -#define R143 0x8F -#define R144 0x90 -#define R145 0x91 -#define R146 0x92 -#define R147 0x93 -#define R148 0x94 -#define R149 0x95 -#define R150 0x96 -#define R151 0x97 -#define R152 0x98 -#define R153 0x99 -#define R154 0x9A -#define R157 0x9D -#define R192 0xC0 -#define R193 0xC1 -#define R229 0xE5 - -/* LCD Control pins */ -#define CtrlPin_NCS GPIO_Pin_2 /* PB.02 */ - -/* LCD color */ -#define White 0xFFFF -#define Black 0x0000 -#define Grey 0xF7DE -#define Blue 0x001F -#define Blue2 0x051F -#define Red 0xF800 -#define Magenta 0xF81F -#define Green 0x07E0 -#define Cyan 0x7FFF -#define Yellow 0xFFE0 - -#define Line0 0 -#define Line1 24 -#define Line2 48 -#define Line3 72 -#define Line4 96 -#define Line5 120 -#define Line6 144 -#define Line7 168 -#define Line8 192 -#define Line9 216 - -#define Horizontal 0x00 -#define Vertical 0x01 - -/* Exported macro ------------------------------------------------------------*/ -/* Exported functions ------------------------------------------------------- */ -/*----- High layer function -----*/ -void LCD_Setup(void); -void STM3210D_LCD_Init(void); -void LCD_SetTextColor(vu16 Color); -void LCD_SetBackColor(vu16 Color); -void LCD_ClearLine(u8 Line); -void LCD_Clear(u16 Color); -void LCD_SetCursor(u8 Xpos, u16 Ypos); -void LCD_DrawChar(u8 Xpos, u16 Ypos, uc16 *c); -void LCD_DisplayChar(u8 Line, u16 Column, u8 Ascii); -void LCD_DisplayStringLine(u8 Line, u8 *ptr); -void LCD_SetDisplayWindow(u8 Xpos, u16 Ypos, u8 Height, u16 Width); -void LCD_WindowModeDisable(void); -void LCD_DrawLine(u8 Xpos, u16 Ypos, u16 Length, u8 Direction); -void LCD_DrawRect(u8 Xpos, u16 Ypos, u8 Height, u16 Width); -void LCD_DrawCircle(u8 Xpos, u16 Ypos, u16 Radius); -void LCD_DrawMonoPict(uc32 *Pict); -//void LCD_DrawBMP(u32 BmpAddress); -void LCD_DrawBMP(uc16 *BmpAddress); -/*----- Medium layer function -----*/ -void LCD_nCS_StartByte(u8 Start_Byte); -void LCD_WriteRegIndex(u8 LCD_Reg); -void LCD_WriteReg(u8 LCD_Reg, u16 LCD_RegValue); -void LCD_WriteRAM_Prepare(void); -void LCD_WriteRAMWord(u16 RGB_Code); -u16 LCD_ReadReg(u8 LCD_Reg); -void LCD_WriteRAM(u16 RGB_Code); -void LCD_PowerOn(void); -void LCD_DisplayOn(void); -void LCD_DisplayOff(void); - -/*----- Low layer function -----*/ -void LCD_CtrlLinesConfig(void); -void LCD_CtrlLinesWrite(GPIO_TypeDef* GPIOx, u16 CtrlPins, BitAction BitVal); -void LCD_SPIConfig(void); - -#endif /* __LCD_H */ - -/******************* (C) COPYRIGHT 2008 STMicroelectronics *****END OF FILE****/ diff --git a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/LCD/fonts.h b/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/LCD/fonts.h deleted file mode 100644 index 3aa1296c1..000000000 --- a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/LCD/fonts.h +++ /dev/null @@ -1,415 +0,0 @@ -/******************** (C) COPYRIGHT 2007 STMicroelectronics ******************** -* File Name : fonts.h -* Author : MCD Application Team -* Version : V1.1 -* Date : 11/26/2007 -* Description : This file contains all the LCD fonts size definition. -******************************************************************************** -* THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS -* WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. -* AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, -* INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE -* CONTENT OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING -* INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. -*******************************************************************************/ - -/* Define to prevent recursive inclusion -------------------------------------*/ -#ifndef __FONTS_H -#define __FONTS_H - -/* Includes ------------------------------------------------------------------*/ -#include "stm32f10x_lib.h" - -/* Exported types ------------------------------------------------------------*/ - /* ASCII Table: each character is 16 column (16dots large) - and 24 raw (24 dots high) */ - uc16 ASCII_Table[] = - { - /* Space ' ' */ - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* '!' */ - 0x0000, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0000, 0x0000, - 0x0180, 0x0180, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* '"' */ - 0x0000, 0x0000, 0x00CC, 0x00CC, 0x00CC, 0x00CC, 0x00CC, 0x00CC, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* '#' */ - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0C60, 0x0C60, - 0x0C60, 0x0630, 0x0630, 0x1FFE, 0x1FFE, 0x0630, 0x0738, 0x0318, - 0x1FFE, 0x1FFE, 0x0318, 0x0318, 0x018C, 0x018C, 0x018C, 0x0000, - /* '$' */ - 0x0000, 0x0080, 0x03E0, 0x0FF8, 0x0E9C, 0x1C8C, 0x188C, 0x008C, - 0x0098, 0x01F8, 0x07E0, 0x0E80, 0x1C80, 0x188C, 0x188C, 0x189C, - 0x0CB8, 0x0FF0, 0x03E0, 0x0080, 0x0080, 0x0000, 0x0000, 0x0000, - /* '%' */ - 0x0000, 0x0000, 0x0000, 0x180E, 0x0C1B, 0x0C11, 0x0611, 0x0611, - 0x0311, 0x0311, 0x019B, 0x018E, 0x38C0, 0x6CC0, 0x4460, 0x4460, - 0x4430, 0x4430, 0x4418, 0x6C18, 0x380C, 0x0000, 0x0000, 0x0000, - /* '&' */ - 0x0000, 0x01E0, 0x03F0, 0x0738, 0x0618, 0x0618, 0x0330, 0x01F0, - 0x00F0, 0x00F8, 0x319C, 0x330E, 0x1E06, 0x1C06, 0x1C06, 0x3F06, - 0x73FC, 0x21F0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* ''' */ - 0x0000, 0x0000, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* '(' */ - 0x0000, 0x0200, 0x0300, 0x0180, 0x00C0, 0x00C0, 0x0060, 0x0060, - 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, - 0x0060, 0x0060, 0x00C0, 0x00C0, 0x0180, 0x0300, 0x0200, 0x0000, - /* ')' */ - 0x0000, 0x0020, 0x0060, 0x00C0, 0x0180, 0x0180, 0x0300, 0x0300, - 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, - 0x0300, 0x0300, 0x0180, 0x0180, 0x00C0, 0x0060, 0x0020, 0x0000, - /* '*' */ - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00C0, 0x00C0, - 0x06D8, 0x07F8, 0x01E0, 0x0330, 0x0738, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* '+' */ - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x3FFC, 0x3FFC, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* ',' */ - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0180, 0x0180, 0x0100, 0x0100, 0x0080, 0x0000, 0x0000, - /* '-' */ - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x07E0, 0x07E0, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* '.' */ - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x00C0, 0x00C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* '/' */ - 0x0000, 0x0C00, 0x0C00, 0x0600, 0x0600, 0x0600, 0x0300, 0x0300, - 0x0300, 0x0380, 0x0180, 0x0180, 0x0180, 0x00C0, 0x00C0, 0x00C0, - 0x0060, 0x0060, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* '0' */ - 0x0000, 0x03E0, 0x07F0, 0x0E38, 0x0C18, 0x180C, 0x180C, 0x180C, - 0x180C, 0x180C, 0x180C, 0x180C, 0x180C, 0x180C, 0x0C18, 0x0E38, - 0x07F0, 0x03E0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* '1' */ - 0x0000, 0x0100, 0x0180, 0x01C0, 0x01F0, 0x0198, 0x0188, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* '2' */ - 0x0000, 0x03E0, 0x0FF8, 0x0C18, 0x180C, 0x180C, 0x1800, 0x1800, - 0x0C00, 0x0600, 0x0300, 0x0180, 0x00C0, 0x0060, 0x0030, 0x0018, - 0x1FFC, 0x1FFC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* '3' */ - 0x0000, 0x01E0, 0x07F8, 0x0E18, 0x0C0C, 0x0C0C, 0x0C00, 0x0600, - 0x03C0, 0x07C0, 0x0C00, 0x1800, 0x1800, 0x180C, 0x180C, 0x0C18, - 0x07F8, 0x03E0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* '4' */ - 0x0000, 0x0C00, 0x0E00, 0x0F00, 0x0F00, 0x0D80, 0x0CC0, 0x0C60, - 0x0C60, 0x0C30, 0x0C18, 0x0C0C, 0x3FFC, 0x3FFC, 0x0C00, 0x0C00, - 0x0C00, 0x0C00, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* '5' */ - 0x0000, 0x0FF8, 0x0FF8, 0x0018, 0x0018, 0x000C, 0x03EC, 0x07FC, - 0x0E1C, 0x1C00, 0x1800, 0x1800, 0x1800, 0x180C, 0x0C1C, 0x0E18, - 0x07F8, 0x03E0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* '6' */ - 0x0000, 0x07C0, 0x0FF0, 0x1C38, 0x1818, 0x0018, 0x000C, 0x03CC, - 0x0FEC, 0x0E3C, 0x1C1C, 0x180C, 0x180C, 0x180C, 0x1C18, 0x0E38, - 0x07F0, 0x03E0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* '7' */ - 0x0000, 0x1FFC, 0x1FFC, 0x0C00, 0x0600, 0x0600, 0x0300, 0x0380, - 0x0180, 0x01C0, 0x00C0, 0x00E0, 0x0060, 0x0060, 0x0070, 0x0030, - 0x0030, 0x0030, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* '8' */ - 0x0000, 0x03E0, 0x07F0, 0x0E38, 0x0C18, 0x0C18, 0x0C18, 0x0638, - 0x07F0, 0x07F0, 0x0C18, 0x180C, 0x180C, 0x180C, 0x180C, 0x0C38, - 0x0FF8, 0x03E0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* '9' */ - 0x0000, 0x03E0, 0x07F0, 0x0E38, 0x0C1C, 0x180C, 0x180C, 0x180C, - 0x1C1C, 0x1E38, 0x1BF8, 0x19E0, 0x1800, 0x0C00, 0x0C00, 0x0E1C, - 0x07F8, 0x01F0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* ':' */ - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0180, 0x0180, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0180, 0x0180, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* ';' */ - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0180, 0x0180, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0180, 0x0180, 0x0100, 0x0100, 0x0080, 0x0000, 0x0000, 0x0000, - /* '<' */ - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x1000, 0x1C00, 0x0F80, 0x03E0, 0x00F8, 0x0018, 0x00F8, 0x03E0, - 0x0F80, 0x1C00, 0x1000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* '=' */ - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x1FF8, 0x0000, 0x0000, 0x0000, 0x1FF8, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* '>' */ - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0008, 0x0038, 0x01F0, 0x07C0, 0x1F00, 0x1800, 0x1F00, 0x07C0, - 0x01F0, 0x0038, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* '?' */ - 0x0000, 0x03E0, 0x0FF8, 0x0C18, 0x180C, 0x180C, 0x1800, 0x0C00, - 0x0600, 0x0300, 0x0180, 0x00C0, 0x00C0, 0x00C0, 0x0000, 0x0000, - 0x00C0, 0x00C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* '@' */ - 0x0000, 0x0000, 0x07E0, 0x1818, 0x2004, 0x29C2, 0x4A22, 0x4411, - 0x4409, 0x4409, 0x4409, 0x2209, 0x1311, 0x0CE2, 0x4002, 0x2004, - 0x1818, 0x07E0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* 'A' */ - 0x0000, 0x0380, 0x0380, 0x06C0, 0x06C0, 0x06C0, 0x0C60, 0x0C60, - 0x1830, 0x1830, 0x1830, 0x3FF8, 0x3FF8, 0x701C, 0x600C, 0x600C, - 0xC006, 0xC006, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* 'B' */ - 0x0000, 0x03FC, 0x0FFC, 0x0C0C, 0x180C, 0x180C, 0x180C, 0x0C0C, - 0x07FC, 0x0FFC, 0x180C, 0x300C, 0x300C, 0x300C, 0x300C, 0x180C, - 0x1FFC, 0x07FC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* 'C' */ - 0x0000, 0x07C0, 0x1FF0, 0x3838, 0x301C, 0x700C, 0x6006, 0x0006, - 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x6006, 0x700C, 0x301C, - 0x1FF0, 0x07E0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* 'D' */ - 0x0000, 0x03FE, 0x0FFE, 0x0E06, 0x1806, 0x1806, 0x3006, 0x3006, - 0x3006, 0x3006, 0x3006, 0x3006, 0x3006, 0x1806, 0x1806, 0x0E06, - 0x0FFE, 0x03FE, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* 'E' */ - 0x0000, 0x3FFC, 0x3FFC, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C, - 0x1FFC, 0x1FFC, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C, - 0x3FFC, 0x3FFC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* 'F' */ - 0x0000, 0x3FF8, 0x3FF8, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, - 0x1FF8, 0x1FF8, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, - 0x0018, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* 'G' */ - 0x0000, 0x0FE0, 0x3FF8, 0x783C, 0x600E, 0xE006, 0xC007, 0x0003, - 0x0003, 0xFE03, 0xFE03, 0xC003, 0xC007, 0xC006, 0xC00E, 0xF03C, - 0x3FF8, 0x0FE0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* 'H' */ - 0x0000, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x3FFC, 0x3FFC, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x300C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* 'I' */ - 0x0000, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* 'J' */ - 0x0000, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, - 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0618, 0x0618, 0x0738, - 0x03F0, 0x01E0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* 'K' */ - 0x0000, 0x3006, 0x1806, 0x0C06, 0x0606, 0x0306, 0x0186, 0x00C6, - 0x0066, 0x0076, 0x00DE, 0x018E, 0x0306, 0x0606, 0x0C06, 0x1806, - 0x3006, 0x6006, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* 'L' */ - 0x0000, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, - 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, - 0x1FF8, 0x1FF8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* 'M' */ - 0x0000, 0xE00E, 0xF01E, 0xF01E, 0xF01E, 0xD836, 0xD836, 0xD836, - 0xD836, 0xCC66, 0xCC66, 0xCC66, 0xC6C6, 0xC6C6, 0xC6C6, 0xC6C6, - 0xC386, 0xC386, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* 'N' */ - 0x0000, 0x300C, 0x301C, 0x303C, 0x303C, 0x306C, 0x306C, 0x30CC, - 0x30CC, 0x318C, 0x330C, 0x330C, 0x360C, 0x360C, 0x3C0C, 0x3C0C, - 0x380C, 0x300C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* 'O' */ - 0x0000, 0x07E0, 0x1FF8, 0x381C, 0x700E, 0x6006, 0xC003, 0xC003, - 0xC003, 0xC003, 0xC003, 0xC003, 0xC003, 0x6006, 0x700E, 0x381C, - 0x1FF8, 0x07E0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* 'P' */ - 0x0000, 0x0FFC, 0x1FFC, 0x380C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x180C, 0x1FFC, 0x07FC, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C, - 0x000C, 0x000C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* 'Q' */ - 0x0000, 0x07E0, 0x1FF8, 0x381C, 0x700E, 0x6006, 0xE003, 0xC003, - 0xC003, 0xC003, 0xC003, 0xC003, 0xE007, 0x6306, 0x3F0E, 0x3C1C, - 0x3FF8, 0xF7E0, 0xC000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* 'R' */ - 0x0000, 0x0FFE, 0x1FFE, 0x3806, 0x3006, 0x3006, 0x3006, 0x3806, - 0x1FFE, 0x07FE, 0x0306, 0x0606, 0x0C06, 0x1806, 0x1806, 0x3006, - 0x3006, 0x6006, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* 'S' */ - 0x0000, 0x03E0, 0x0FF8, 0x0C1C, 0x180C, 0x180C, 0x000C, 0x001C, - 0x03F8, 0x0FE0, 0x1E00, 0x3800, 0x3006, 0x3006, 0x300E, 0x1C1C, - 0x0FF8, 0x07E0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* 'T' */ - 0x0000, 0x7FFE, 0x7FFE, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* 'U' */ - 0x0000, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, - 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x1818, - 0x1FF8, 0x07E0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* 'V' */ - 0x0000, 0x6003, 0x3006, 0x3006, 0x3006, 0x180C, 0x180C, 0x180C, - 0x0C18, 0x0C18, 0x0E38, 0x0630, 0x0630, 0x0770, 0x0360, 0x0360, - 0x01C0, 0x01C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* 'W' */ - 0x0000, 0x6003, 0x61C3, 0x61C3, 0x61C3, 0x3366, 0x3366, 0x3366, - 0x3366, 0x3366, 0x3366, 0x1B6C, 0x1B6C, 0x1B6C, 0x1A2C, 0x1E3C, - 0x0E38, 0x0E38, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* 'X' */ - 0x0000, 0xE00F, 0x700C, 0x3018, 0x1830, 0x0C70, 0x0E60, 0x07C0, - 0x0380, 0x0380, 0x03C0, 0x06E0, 0x0C70, 0x1C30, 0x1818, 0x300C, - 0x600E, 0xE007, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* 'Y' */ - 0x0000, 0xC003, 0x6006, 0x300C, 0x381C, 0x1838, 0x0C30, 0x0660, - 0x07E0, 0x03C0, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* 'Z' */ - 0x0000, 0x7FFC, 0x7FFC, 0x6000, 0x3000, 0x1800, 0x0C00, 0x0600, - 0x0300, 0x0180, 0x00C0, 0x0060, 0x0030, 0x0018, 0x000C, 0x0006, - 0x7FFE, 0x7FFE, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* '[' */ - 0x0000, 0x03E0, 0x03E0, 0x0060, 0x0060, 0x0060, 0x0060, 0x0060, - 0x0060, 0x0060, 0x0060, 0x0060, 0x0060, 0x0060, 0x0060, 0x0060, - 0x0060, 0x0060, 0x0060, 0x0060, 0x0060, 0x03E0, 0x03E0, 0x0000, - /* '\' */ - 0x0000, 0x0030, 0x0030, 0x0060, 0x0060, 0x0060, 0x00C0, 0x00C0, - 0x00C0, 0x01C0, 0x0180, 0x0180, 0x0180, 0x0300, 0x0300, 0x0300, - 0x0600, 0x0600, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* ']' */ - 0x0000, 0x03E0, 0x03E0, 0x0300, 0x0300, 0x0300, 0x0300, 0x0300, - 0x0300, 0x0300, 0x0300, 0x0300, 0x0300, 0x0300, 0x0300, 0x0300, - 0x0300, 0x0300, 0x0300, 0x0300, 0x0300, 0x03E0, 0x03E0, 0x0000, - /* '^' */ - 0x0000, 0x0000, 0x01C0, 0x01C0, 0x0360, 0x0360, 0x0360, 0x0630, - 0x0630, 0x0C18, 0x0C18, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* '_' */ - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0xFFFF, 0xFFFF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* ''' */ - 0x0000, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* 'a' */ - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x03F0, 0x07F8, - 0x0C1C, 0x0C0C, 0x0F00, 0x0FF0, 0x0CF8, 0x0C0C, 0x0C0C, 0x0F1C, - 0x0FF8, 0x18F0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* 'b' */ - 0x0000, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x03D8, 0x0FF8, - 0x0C38, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, 0x0C38, - 0x0FF8, 0x03D8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* 'c' */ - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x03C0, 0x07F0, - 0x0E30, 0x0C18, 0x0018, 0x0018, 0x0018, 0x0018, 0x0C18, 0x0E30, - 0x07F0, 0x03C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* 'd' */ - 0x0000, 0x1800, 0x1800, 0x1800, 0x1800, 0x1800, 0x1BC0, 0x1FF0, - 0x1C30, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, 0x1C30, - 0x1FF0, 0x1BC0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* 'e' */ - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x03C0, 0x0FF0, - 0x0C30, 0x1818, 0x1FF8, 0x1FF8, 0x0018, 0x0018, 0x1838, 0x1C30, - 0x0FF0, 0x07C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* 'f' */ - 0x0000, 0x0F80, 0x0FC0, 0x00C0, 0x00C0, 0x00C0, 0x07F0, 0x07F0, - 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, - 0x00C0, 0x00C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* 'g' */ - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0DE0, 0x0FF8, - 0x0E18, 0x0C0C, 0x0C0C, 0x0C0C, 0x0C0C, 0x0C0C, 0x0C0C, 0x0E18, - 0x0FF8, 0x0DE0, 0x0C00, 0x0C0C, 0x061C, 0x07F8, 0x01F0, 0x0000, - /* 'h' */ - 0x0000, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x07D8, 0x0FF8, - 0x1C38, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, - 0x1818, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* 'i' */ - 0x0000, 0x00C0, 0x00C0, 0x0000, 0x0000, 0x0000, 0x00C0, 0x00C0, - 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, - 0x00C0, 0x00C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* 'j' */ - 0x0000, 0x00C0, 0x00C0, 0x0000, 0x0000, 0x0000, 0x00C0, 0x00C0, - 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, - 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00F8, 0x0078, 0x0000, - /* 'k' */ - 0x0000, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C, 0x0C0C, 0x060C, - 0x030C, 0x018C, 0x00CC, 0x006C, 0x00FC, 0x019C, 0x038C, 0x030C, - 0x060C, 0x0C0C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* 'l' */ - 0x0000, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, - 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, - 0x00C0, 0x00C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* 'm' */ - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3C7C, 0x7EFF, - 0xE3C7, 0xC183, 0xC183, 0xC183, 0xC183, 0xC183, 0xC183, 0xC183, - 0xC183, 0xC183, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* 'n' */ - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0798, 0x0FF8, - 0x1C38, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, - 0x1818, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* 'o' */ - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x03C0, 0x0FF0, - 0x0C30, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, 0x0C30, - 0x0FF0, 0x03C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* 'p' */ - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x03D8, 0x0FF8, - 0x0C38, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, 0x0C38, - 0x0FF8, 0x03D8, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0000, - /* 'q' */ - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1BC0, 0x1FF0, - 0x1C30, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, 0x1C30, - 0x1FF0, 0x1BC0, 0x1800, 0x1800, 0x1800, 0x1800, 0x1800, 0x0000, - /* 'r' */ - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x07B0, 0x03F0, - 0x0070, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, - 0x0030, 0x0030, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* 's' */ - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x03E0, 0x03F0, - 0x0E38, 0x0C18, 0x0038, 0x03F0, 0x07C0, 0x0C00, 0x0C18, 0x0E38, - 0x07F0, 0x03E0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* 't' */ - 0x0000, 0x0000, 0x0080, 0x00C0, 0x00C0, 0x00C0, 0x07F0, 0x07F0, - 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, - 0x07C0, 0x0780, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* 'u' */ - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x1818, - 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, 0x1C38, - 0x1FF0, 0x19E0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* 'v' */ - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x180C, 0x0C18, - 0x0C18, 0x0C18, 0x0630, 0x0630, 0x0630, 0x0360, 0x0360, 0x0360, - 0x01C0, 0x01C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* 'w' */ - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x41C1, 0x41C1, - 0x61C3, 0x6363, 0x6363, 0x6363, 0x3636, 0x3636, 0x3636, 0x1C1C, - 0x1C1C, 0x1C1C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* 'x' */ - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x381C, 0x1C38, - 0x0C30, 0x0660, 0x0360, 0x0360, 0x0360, 0x0360, 0x0660, 0x0C30, - 0x1C38, 0x381C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* 'y' */ - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3018, 0x1830, - 0x1830, 0x1870, 0x0C60, 0x0C60, 0x0CE0, 0x06C0, 0x06C0, 0x0380, - 0x0380, 0x0380, 0x0180, 0x0180, 0x01C0, 0x00F0, 0x0070, 0x0000, - /* 'z' */ - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1FFC, 0x1FFC, - 0x0C00, 0x0600, 0x0300, 0x0180, 0x00C0, 0x0060, 0x0030, 0x0018, - 0x1FFC, 0x1FFC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - /* '{' */ - 0x0000, 0x0300, 0x0180, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, - 0x00C0, 0x0060, 0x0060, 0x0030, 0x0060, 0x0040, 0x00C0, 0x00C0, - 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x0180, 0x0300, 0x0000, 0x0000, - /* '|' */ - 0x0000, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0000, - /* '}' */ - 0x0000, 0x0060, 0x00C0, 0x01C0, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0300, 0x0300, 0x0600, 0x0300, 0x0100, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x00C0, 0x0060, 0x0000, 0x0000, - /* '~' */ - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x10F0, 0x1FF8, 0x0F08, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - }; -/* Exported constants --------------------------------------------------------*/ -/* Exported macro ------------------------------------------------------------*/ -/* Exported functions ------------------------------------------------------- */ - -#endif /* __FONTS_H */ - -/******************* (C) COPYRIGHT 2007 STMicroelectronics *****END OF FILE****/ diff --git a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/LCD/lcd.c b/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/LCD/lcd.c deleted file mode 100644 index c36d1b961..000000000 --- a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/LCD/lcd.c +++ /dev/null @@ -1,972 +0,0 @@ -/******************** (C) COPYRIGHT 2008 STMicroelectronics ******************** -* File Name : lcd.c -* Author : MCD Application Team -* Version : VX.Y.Z -* Date : mm/dd/yyyy -* Description : This file includes the LCD driver for AM-240320L8TNQW00H -* (LCD_ILI9320) Liquid Crystal Display Module of STM3210D-EVAL -* board. -******************************************************************************** -* THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS -* WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. -* AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, -* INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE -* CONTENT OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING -* INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. -*******************************************************************************/ - -/* Includes ------------------------------------------------------------------*/ -#include "FreeRTOS.h" -#include "task.h" - -#include -#include -#include -#include -#include - -#include -#include - -#include "STM3210D_lcd.h" -#include "fonts.h" - -extern void timerDly(unsigned int); - -/* Private typedef -----------------------------------------------------------*/ -/* Private define ------------------------------------------------------------*/ -#define START_BYTE 0x70 -#define SET_INDEX 0x00 -#define READ_STATUS 0x01 -#define LCD_WRITE_REG 0x02 -#define LCD_READ_REG 0x03 - -/* Private macro -------------------------------------------------------------*/ -/* Private variables ---------------------------------------------------------*/ - /* Global variables to set the written text color */ -static vu16 TextColor = 0x0000, BackColor = 0xFFFF; - -/* Private function prototypes -----------------------------------------------*/ -/* Private functions ---------------------------------------------------------*/ - -#define timerDly( x ) vTaskDelay( ( x * 10 ) / portTICK_PERIOD_MS ); -#define vBlockToWait( x ) - -/******************************************************************************* -* Function Name : LCD_Setup -* Description : Setups the LCD. -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void LCD_Setup(void) -{ -/* Configure the LCD Control pins --------------------------------------------*/ - LCD_CtrlLinesConfig(); - -/* Configure the SPI3 interface ----------------------------------------------*/ - LCD_SPIConfig(); - - timerDly(5); /* Delay 50 ms */ - /* Start Initial Sequence ------------------------------------------------*/ - LCD_WriteReg(R229, 0x8000); /* Set the internal vcore voltage */ - LCD_WriteReg(R0, 0x0001); /* Start internal OSC. */ - LCD_WriteReg(R1, 0x0100); /* set SS and SM bit */ - LCD_WriteReg(R2, 0x0700); /* set 1 line inversion */ - LCD_WriteReg(R3, 0x1030); /* set GRAM write direction and BGR=1. */ - LCD_WriteReg(R4, 0x0000); /* Resize register */ - LCD_WriteReg(R8, 0x0202); /* set the back porch and front porch */ - LCD_WriteReg(R9, 0x0000); /* set non-display area refresh cycle ISC[3:0] */ - LCD_WriteReg(R10, 0x0000); /* FMARK function */ - LCD_WriteReg(R12, 0x0000); /* RGB interface setting */ - LCD_WriteReg(R13, 0x0000); /* Frame marker Position */ - LCD_WriteReg(R15, 0x0000); /* RGB interface polarity */ - - /* Power On sequence -----------------------------------------------------*/ - LCD_WriteReg(R16, 0x0000); /* SAP, BT[3:0], AP, DSTB, SLP, STB */ - LCD_WriteReg(R17, 0x0000); /* DC1[2:0], DC0[2:0], VC[2:0] */ - LCD_WriteReg(R18, 0x0000); /* VREG1OUT voltage */ - LCD_WriteReg(R19, 0x0000); /* VDV[4:0] for VCOM amplitude */ - timerDly(20); /* Dis-charge capacitor power voltage (200ms) */ - LCD_WriteReg(R16, 0x17B0); /* SAP, BT[3:0], AP, DSTB, SLP, STB */ - LCD_WriteReg(R17, 0x0137); /* DC1[2:0], DC0[2:0], VC[2:0] */ - timerDly(5); /* Delay 50 ms */ - LCD_WriteReg(R18, 0x0139); /* VREG1OUT voltage */ - timerDly(5); /* Delay 50 ms */ - LCD_WriteReg(R19, 0x1d00); /* VDV[4:0] for VCOM amplitude */ - LCD_WriteReg(R41, 0x0013); /* VCM[4:0] for VCOMH */ - timerDly(5); /* Delay 50 ms */ - LCD_WriteReg(R32, 0x0000); /* GRAM horizontal Address */ - LCD_WriteReg(R33, 0x0000); /* GRAM Vertical Address */ - - /* Adjust the Gamma Curve ------------------------------------------------*/ - LCD_WriteReg(R48, 0x0006); - LCD_WriteReg(R49, 0x0101); - LCD_WriteReg(R50, 0x0003); - LCD_WriteReg(R53, 0x0106); - LCD_WriteReg(R54, 0x0b02); - LCD_WriteReg(R55, 0x0302); - LCD_WriteReg(R56, 0x0707); - LCD_WriteReg(R57, 0x0007); - LCD_WriteReg(R60, 0x0600); - LCD_WriteReg(R61, 0x020b); - - /* Set GRAM area ---------------------------------------------------------*/ - LCD_WriteReg(R80, 0x0000); /* Horizontal GRAM Start Address */ - LCD_WriteReg(R81, 0x00EF); /* Horizontal GRAM End Address */ - LCD_WriteReg(R82, 0x0000); /* Vertical GRAM Start Address */ - LCD_WriteReg(R83, 0x013F); /* Vertical GRAM End Address */ - - LCD_WriteReg(R96, 0x2700); /* Gate Scan Line */ - LCD_WriteReg(R97, 0x0001); /* NDL,VLE, REV */ - LCD_WriteReg(R106, 0x0000); /* set scrolling line */ - - /* Partial Display Control -----------------------------------------------*/ - LCD_WriteReg(R128, 0x0000); - LCD_WriteReg(R129, 0x0000); - LCD_WriteReg(R130, 0x0000); - LCD_WriteReg(R131, 0x0000); - LCD_WriteReg(R132, 0x0000); - LCD_WriteReg(R133, 0x0000); - - /* Panel Control ---------------------------------------------------------*/ - LCD_WriteReg(R144, 0x0010); - LCD_WriteReg(R146, 0x0000); - LCD_WriteReg(R147, 0x0003); - LCD_WriteReg(R149, 0x0110); - LCD_WriteReg(R151, 0x0000); - LCD_WriteReg(R152, 0x0000); - - /* Set GRAM write direction and BGR = 1 */ - /* I/D=01 (Horizontal : increment, Vertical : decrement) */ - /* AM=1 (address is updated in vertical writing direction) */ - LCD_WriteReg(R3, 0x1018); - - LCD_WriteReg(R7, 0x0173); /* 262K color and display ON */ -} - -/******************************************************************************* -* Function Name : STM3210D_LCD_Init -* Description : Initializes the LCD. -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void STM3210D_LCD_Init(void) -{ - /* Setups the LCD */ - LCD_Setup(); -} - -/******************************************************************************* -* Function Name : LCD_SetTextColor -* Description : Sets the Text color. -* Input : - Color: specifies the Text color code RGB(5-6-5). -* Output : - TextColor: Text color global variable used by LCD_DrawChar -* and LCD_DrawPicture functions. -* Return : None -*******************************************************************************/ -void LCD_SetTextColor(vu16 Color) -{ - TextColor = Color; -} - -/******************************************************************************* -* Function Name : LCD_SetBackColor -* Description : Sets the Background color. -* Input : - Color: specifies the Background color code RGB(5-6-5). -* Output : - BackColor: Background color global variable used by -* LCD_DrawChar and LCD_DrawPicture functions. -* Return : None -*******************************************************************************/ -void LCD_SetBackColor(vu16 Color) -{ - BackColor = Color; -} - -/******************************************************************************* -* Function Name : LCD_ClearLine -* Description : Clears the selected line. -* Input : - Line: the Line to be cleared. -* This parameter can be one of the following values: -* - Linex: where x can be 0..9 -* Output : None -* Return : None -*******************************************************************************/ -void LCD_ClearLine(u8 Line) -{ - LCD_DisplayStringLine(Line, ( unsigned char * ) " "); -} - -/******************************************************************************* -* Function Name : LCD_Clear -* Description : Clears the hole LCD. -* Input : Color: the color of the background. -* Output : None -* Return : None -*******************************************************************************/ -void LCD_Clear(u16 Color) -{ - vu32 index = 0; - - LCD_SetCursor(0x00, 0x013F); - - LCD_WriteRAM_Prepare(); /* Prepare to write GRAM */ - - for(index = 0; index < 76800; index++) - { - LCD_WriteRAM(Color); - } - - LCD_CtrlLinesWrite(GPIOB, CtrlPin_NCS, Bit_SET); - -} - -/******************************************************************************* -* Function Name : LCD_SetCursor -* Description : Sets the cursor position. -* Input : - Xpos: specifies the X position. -* - Ypos: specifies the Y position. -* Output : None -* Return : None -*******************************************************************************/ -void LCD_SetCursor(u8 Xpos, u16 Ypos) -{ - LCD_WriteReg(R32, Xpos); - LCD_WriteReg(R33, Ypos); -} - -/******************************************************************************* -* Function Name : LCD_DrawChar -* Description : Draws a character on LCD. -* Input : - Xpos: the Line where to display the character shape. -* This parameter can be one of the following values: -* - Linex: where x can be 0..9 -* - Ypos: start column address. -* - c: pointer to the character data. -* Output : None -* Return : None -*******************************************************************************/ -void LCD_DrawChar(u8 Xpos, u16 Ypos, uc16 *c) -{ - vu32 index = 0, i = 0; - vu8 Xaddress = 0; - - Xaddress = Xpos; - - LCD_SetCursor(Xaddress, Ypos); - - for(index = 0; index < 24; index++) - { - LCD_WriteRAM_Prepare(); /* Prepare to write GRAM */ - - for(i = 0; i < 16; i++) - { - if((c[index] & (1 << i)) == 0x00) - { - LCD_WriteRAM(BackColor); - } - else - { - LCD_WriteRAM(TextColor); - } - } - LCD_CtrlLinesWrite(GPIOB, CtrlPin_NCS, Bit_SET); - Xaddress++; - LCD_SetCursor(Xaddress, Ypos); - } -} - -/******************************************************************************* -* Function Name : LCD_DisplayChar -* Description : Displays one character (16dots width, 24dots height). -* Input : - Line: the Line where to display the character shape . -* This parameter can be one of the following values: -* - Linex: where x can be 0..9 -* - Column: start column address. -* - Ascii: character ascii code, must be between 0x20 and 0x7E. -* Output : None -* Return : None -*******************************************************************************/ -void LCD_DisplayChar(u8 Line, u16 Column, u8 Ascii) -{ - Ascii -= 32; - LCD_DrawChar(Line, Column, &ASCII_Table[Ascii * 24]); -} - -/******************************************************************************* -* Function Name : LCD_DisplayStringLine -* Description : Displays a maximum of 20 char on the LCD. -* Input : - Line: the Line where to display the character shape . -* This parameter can be one of the following values: -* - Linex: where x can be 0..9 -* - *ptr: pointer to string to display on LCD. -* Output : None -* Return : None -*******************************************************************************/ -void LCD_DisplayStringLine(u8 Line, u8 *ptr) -{ - vu32 i = 0; - vu16 refcolumn = 319; - - /* Send the string character by character on lCD */ - while ((*ptr != 0) & (i < 20)) - { - /* Display one character on LCD */ - LCD_DisplayChar(Line, refcolumn, *ptr); - /* Decrement the column position by 16 */ - refcolumn -= 16; - /* Point on the next character */ - ptr++; - /* Increment the character counter */ - i++; - } -} - -/******************************************************************************* -* Function Name : LCD_SetDisplayWindow -* Description : Sets a display window -* Input : - Xpos: specifies the X buttom left position. -* - Ypos: specifies the Y buttom left position. -* - Height: display window height. -* - Width: display window width. -* Output : None -* Return : None -*******************************************************************************/ -void LCD_SetDisplayWindow(u8 Xpos, u16 Ypos, u8 Height, u16 Width) -{ - /* Horizontal GRAM Start Address */ - if(Xpos >= Height) - { - LCD_WriteReg(R80, (Xpos - Height + 1)); - } - else - { - LCD_WriteReg(R80, 0); - } - /* Horizontal GRAM End Address */ - LCD_WriteReg(R81, Xpos); - /* Vertical GRAM Start Address */ - if(Ypos >= Width) - { - LCD_WriteReg(R82, (Ypos - Width + 1)); - } - else - { - LCD_WriteReg(R82, 0); - } - /* Vertical GRAM End Address */ - LCD_WriteReg(R83, Ypos); - LCD_SetCursor(Xpos, Ypos); -} - -/******************************************************************************* -* Function Name : LCD_WindowModeDisable -* Description : Disables LCD Window mode. -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void LCD_WindowModeDisable(void) -{ - LCD_SetDisplayWindow(239, 0x13F, 240, 320); - LCD_WriteReg(R3, 0x1018); -} -/******************************************************************************* -* Function Name : LCD_DrawLine -* Description : Displays a line. -* Input : - Xpos: specifies the X position. -* - Ypos: specifies the Y position. -* - Length: line length. -* - Direction: line direction. -* This parameter can be one of the following values: Vertical -* or Horizontal. -* Output : None -* Return : None -*******************************************************************************/ -void LCD_DrawLine(u8 Xpos, u16 Ypos, u16 Length, u8 Direction) -{ - u32 i = 0; - - LCD_SetCursor(Xpos, Ypos); - - if(Direction == Horizontal) - { - LCD_WriteRAM_Prepare(); /* Prepare to write GRAM */ - - for(i = 0; i < Length; i++) - { - LCD_WriteRAM(TextColor); - } - LCD_CtrlLinesWrite(GPIOB, CtrlPin_NCS, Bit_SET); - } - else - { - for(i = 0; i < Length; i++) - { - LCD_WriteRAMWord(TextColor); - Xpos++; - LCD_SetCursor(Xpos, Ypos); - } - } -} - -/******************************************************************************* -* Function Name : LCD_DrawRect -* Description : Displays a rectangle. -* Input : - Xpos: specifies the X position. -* - Ypos: specifies the Y position. -* - Height: display rectangle height. -* - Width: display rectangle width. -* Output : None -* Return : None -*******************************************************************************/ -void LCD_DrawRect(u8 Xpos, u16 Ypos, u8 Height, u16 Width) -{ - LCD_DrawLine(Xpos, Ypos, Width, Horizontal); - LCD_DrawLine((Xpos + Height), Ypos, Width, Horizontal); - - LCD_DrawLine(Xpos, Ypos, Height, Vertical); - LCD_DrawLine(Xpos, (Ypos - Width + 1), Height, Vertical); -} - -/******************************************************************************* -* Function Name : LCD_DrawCircle -* Description : Displays a circle. -* Input : - Xpos: specifies the X position. -* - Ypos: specifies the Y position. -* - Height: display rectangle height. -* - Width: display rectangle width. -* Output : None -* Return : None -*******************************************************************************/ -void LCD_DrawCircle(u8 Xpos, u16 Ypos, u16 Radius) -{ - s32 D;/* Decision Variable */ - u32 CurX;/* Current X Value */ - u32 CurY;/* Current Y Value */ - - D = 3 - (Radius << 1); - CurX = 0; - CurY = Radius; - - while (CurX <= CurY) - { - LCD_SetCursor(Xpos + CurX, Ypos + CurY); - LCD_WriteRAMWord(TextColor); - - LCD_SetCursor(Xpos + CurX, Ypos - CurY); - LCD_WriteRAMWord(TextColor); - - LCD_SetCursor(Xpos - CurX, Ypos + CurY); - LCD_WriteRAMWord(TextColor); - - LCD_SetCursor(Xpos - CurX, Ypos - CurY); - LCD_WriteRAMWord(TextColor); - - LCD_SetCursor(Xpos + CurY, Ypos + CurX); - LCD_WriteRAMWord(TextColor); - - LCD_SetCursor(Xpos + CurY, Ypos - CurX); - LCD_WriteRAMWord(TextColor); - - LCD_SetCursor(Xpos - CurY, Ypos + CurX); - LCD_WriteRAMWord(TextColor); - - LCD_SetCursor(Xpos - CurY, Ypos - CurX); - LCD_WriteRAMWord(TextColor); - - if (D < 0) - { - D += (CurX << 2) + 6; - } - else - { - D += ((CurX - CurY) << 2) + 10; - CurY--; - } - CurX++; - } -} - -/******************************************************************************* -* Function Name : LCD_DrawMonoPict -* Description : Displays a monocolor picture. -* Input : - Pict: pointer to the picture array. -* Output : None -* Return : None -*******************************************************************************/ -void LCD_DrawMonoPict(uc32 *Pict) -{ - u32 index = 0, i = 0; - - LCD_SetCursor(0, 319); - LCD_WriteRAM_Prepare(); /* Prepare to write GRAM */ - - for(index = 0; index < 2400; index++) - { - for(i = 0; i < 32; i++) - { - if((Pict[index] & (1 << i)) == 0x00) - { - LCD_WriteRAM(BackColor); - } - else - { - LCD_WriteRAM(TextColor); - } - } - } - LCD_CtrlLinesWrite(GPIOB, CtrlPin_NCS, Bit_SET); - -} - -///******************************************************************************* -//* Function Name : LCD_DrawBMP -//* Description : Displays a bitmap picture loaded in the SPI Flash. -//* Input : - BmpAddress: Bmp picture address in the SPI Flash. -//* Output : None -//* Return : None -//*******************************************************************************/ -//void LCD_DrawBMP(u32 BmpAddress) -//{ -// u32 i = 0, size = 0; -// -// /* Read bitmap size */ -// SPI_FLASH_BufferRead((u8*)&size, BmpAddress + 2, 4); -// -// /* get bitmap data address offset */ -// SPI_FLASH_BufferRead((u8*)&i, BmpAddress + 10, 4); -// -// size = (size - i)/2; -// -// SPI_FLASH_StartReadSequence(BmpAddress + i); -// -// /* Disable SPI1 */ -// SPI_Cmd(SPI1, DISABLE); -// /* SPI in 16-bit mode */ -// SPI_DataSizeConfig(SPI1, SPI_DataSize_16b); -// -// /* Enable SPI1 */ -// SPI_Cmd(SPI1, ENABLE); -// -// /* Set GRAM write direction and BGR = 1 */ -// /* I/D=00 (Horizontal : decrement, Vertical : decrement) */ -// /* AM=1 (address is updated in vertical writing direction) */ -// LCD_WriteReg(R3, 0x1008); -// -// LCD_WriteRAM_Prepare(); /* Prepare to write GRAM */ -// -// /* Read bitmap data from SPI Flash and send them to LCD */ -// for(i = 0; i < size; i++) -// { -// LCD_WriteRAM(__REV_HalfWord(SPI_FLASH_SendHalfWord(0xA5A5))); -// } -// -// LCD_CtrlLinesWrite(GPIOB, CtrlPin_NCS, Bit_SET); -// -// /* Deselect the FLASH: Chip Select high */ -// SPI_FLASH_CS_HIGH(); -// -// /* Disable SPI1 */ -// SPI_Cmd(SPI1, DISABLE); -// /* SPI in 8-bit mode */ -// SPI_DataSizeConfig(SPI1, SPI_DataSize_8b); -// -// /* Enable SPI1 */ -// SPI_Cmd(SPI1, ENABLE); -// -// /* Set GRAM write direction and BGR = 1 */ -// /* I/D = 01 (Horizontal : increment, Vertical : decrement) */ -// /* AM = 1 (address is updated in vertical writing direction) */ -// LCD_WriteReg(R3, 0x1018); -//} - -/******************************************************************************* -* Function Name : LCD_DrawBMP -* Description : Displays a bitmap picture loaded in the SPI Flash. -* Input : - BmpAddress: Bmp picture address in the SPI Flash. -* Output : None -* Return : None -*******************************************************************************/ -void LCD_DrawBMP(uc16 *BmpAddress) -{ - u32 i = 0, size = 0; - - /* Read bitmap size */ - size = BmpAddress[1] | (BmpAddress[2] << 16); - - /* get bitmap data address offset */ - i = BmpAddress[5] | (BmpAddress[6] << 16); - - size = (size - i)/2; - - BmpAddress += i/2; - /* Set GRAM write direction and BGR = 1 */ - /* I/D=00 (Horizontal : decrement, Vertical : decrement) */ - /* AM=1 (address is updated in vertical writing direction) */ - LCD_WriteReg(R3, 0x1008); - - LCD_WriteRAM_Prepare(); /* Prepare to write GRAM */ - - /* Read bitmap data from SPI Flash and send them to LCD */ - for(i = 0; i < size; i++) - { - LCD_WriteRAM(BmpAddress[i]); - } - - LCD_CtrlLinesWrite(GPIOB, CtrlPin_NCS, Bit_SET); - - /* Set GRAM write direction and BGR = 1 */ - /* I/D = 01 (Horizontal : increment, Vertical : decrement) */ - /* AM = 1 (address is updated in vertical writing direction) */ - LCD_WriteReg(R3, 0x1018); -} - -/******************************************************************************* -* Function Name : LCD_nCS_StartByte -* Description : Reset LCD control line(/CS) and Send Start-Byte -* Input : - Start_Byte: the Start-Byte to be sent -* Output : None -* Return : None -*******************************************************************************/ -void LCD_nCS_StartByte(u8 Start_Byte) -{ - LCD_CtrlLinesWrite(GPIOB, CtrlPin_NCS, Bit_RESET); - - SPI_I2S_SendData(SPI3, Start_Byte); - while(SPI_I2S_GetFlagStatus(SPI3, SPI_I2S_FLAG_BSY) != RESET) - { - vBlockToWait( 1 ); - } -} - -/******************************************************************************* -* Function Name : LCD_WriteRegIndex -* Description : Writes index to select the LCD register. -* Input : - LCD_Reg: address of the selected register. -* Output : None -* Return : None -*******************************************************************************/ -void LCD_WriteRegIndex(u8 LCD_Reg) -{ - /* Reset LCD control line(/CS) and Send Start-Byte */ - LCD_nCS_StartByte(START_BYTE | SET_INDEX); - - /* Write 16-bit Reg Index (High Byte is 0) */ - SPI_I2S_SendData(SPI3, 0x00); - while(SPI_I2S_GetFlagStatus(SPI3, SPI_I2S_FLAG_BSY) != RESET) - { - vBlockToWait( 1 ); - } - SPI_I2S_SendData(SPI3, LCD_Reg); - while(SPI_I2S_GetFlagStatus(SPI3, SPI_I2S_FLAG_BSY) != RESET) - { - vBlockToWait( 1 ); - } - - LCD_CtrlLinesWrite(GPIOB, CtrlPin_NCS, Bit_SET); -} - -/******************************************************************************* -* Function Name : LCD_ReadReg -* Description : Reads the selected LCD Register. -* Input : None -* Output : None -* Return : LCD Register Value. -*******************************************************************************/ -u16 LCD_ReadReg(u8 LCD_Reg) -{ - vu16 tmp = 0; - vu8 i = 0; - - /* SPI3 prescaler: 4 */ - SPI3->CR1 &= 0xFFC7; - SPI3->CR1 |= 0x0008; - - /* Write 16-bit Index (then Read Reg) */ - LCD_WriteRegIndex(LCD_Reg); - - /* Read 16-bit Reg */ - /* Reset LCD control line(/CS) and Send Start-Byte */ - LCD_nCS_StartByte(START_BYTE | LCD_READ_REG); - - for(i = 0; i < 5; i++) - { - SPI_I2S_SendData(SPI3, 0xFF); - - while(SPI_I2S_GetFlagStatus(SPI3, SPI_I2S_FLAG_BSY) != RESET) - { - vBlockToWait( 1 ); - } - /* One byte of invalid dummy data read after the start byte */ - while(SPI_I2S_GetFlagStatus(SPI3, SPI_I2S_FLAG_RXNE) == RESET) - { - vBlockToWait( 1 ); - } - SPI_I2S_ReceiveData(SPI3); - } - - SPI_I2S_SendData(SPI3, 0xFF); - /* Read upper byte */ - while(SPI_I2S_GetFlagStatus(SPI3, SPI_I2S_FLAG_BSY) != RESET) - { - vBlockToWait( 1 ); - } - /* Read lower byte */ - while(SPI_I2S_GetFlagStatus(SPI3, SPI_I2S_FLAG_RXNE) == RESET) - { - vBlockToWait( 1 ); - } - tmp = SPI_I2S_ReceiveData(SPI3); - - - SPI_I2S_SendData(SPI3, 0xFF); - while(SPI_I2S_GetFlagStatus(SPI3, SPI_I2S_FLAG_BSY) != RESET) - { - vBlockToWait( 1 ); - } - /* Read lower byte */ - while(SPI_I2S_GetFlagStatus(SPI3, SPI_I2S_FLAG_RXNE) == RESET) - { - vBlockToWait( 1 ); - } - tmp = ((tmp & 0xFF) << 8) | SPI_I2S_ReceiveData(SPI3); - - LCD_CtrlLinesWrite(GPIOB, CtrlPin_NCS, Bit_SET); - - /* SPI3 prescaler: 2 */ - SPI3->CR1 &= 0xFFC7; - - return tmp; -} - -/******************************************************************************* -* Function Name : LCD_WriteRAM_Prepare -* Description : Prepare to write to the LCD RAM. -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void LCD_WriteRAM_Prepare(void) -{ - LCD_WriteRegIndex(R34); /* Select GRAM Reg */ - - /* Reset LCD control line(/CS) and Send Start-Byte */ - LCD_nCS_StartByte(START_BYTE | LCD_WRITE_REG); -} - -/******************************************************************************* -* Function Name : LCD_WriteRAMWord -* Description : Writes 1 word to the LCD RAM. -* Input : - RGB_Code: the pixel color in RGB mode (5-6-5). -* Output : None -* Return : None -*******************************************************************************/ -void LCD_WriteRAMWord(u16 RGB_Code) -{ - LCD_WriteRAM_Prepare(); - - LCD_WriteRAM(RGB_Code); - - LCD_CtrlLinesWrite(GPIOB, CtrlPin_NCS, Bit_SET); -} - -/******************************************************************************* -* Function Name : LCD_WriteReg -* Description : Writes to the selected LCD register. -* Input : - LCD_Reg: address of the selected register. -* - LCD_RegValue: value to write to the selected register. -* Output : None -* Return : None -*******************************************************************************/ -void LCD_WriteReg(u8 LCD_Reg, u16 LCD_RegValue) -{ - /* Write 16-bit Index (then Write Reg) */ - LCD_WriteRegIndex(LCD_Reg); - - /* Write 16-bit Reg */ - /* Reset LCD control line(/CS) and Send Start-Byte */ - LCD_nCS_StartByte(START_BYTE | LCD_WRITE_REG); - - SPI_I2S_SendData(SPI3, LCD_RegValue>>8); - while(SPI_I2S_GetFlagStatus(SPI3, SPI_I2S_FLAG_BSY) != RESET) - { - vBlockToWait( 1 ); - } - SPI_I2S_SendData(SPI3, (LCD_RegValue & 0xFF)); - while(SPI_I2S_GetFlagStatus(SPI3, SPI_I2S_FLAG_BSY) != RESET) - { - vBlockToWait( 1 ); - } - - LCD_CtrlLinesWrite(GPIOB, CtrlPin_NCS, Bit_SET); -} - - -/******************************************************************************* -* Function Name : LCD_WriteRAM -* Description : Writes to the LCD RAM. -* Input : - RGB_Code: the pixel color in RGB mode (5-6-5). -* Output : None -* Return : None -*******************************************************************************/ -void LCD_WriteRAM(u16 RGB_Code) -{ - SPI_I2S_SendData(SPI3, RGB_Code >> 8); - while(SPI_I2S_GetFlagStatus(SPI3, SPI_I2S_FLAG_BSY) != RESET) - { - vBlockToWait( 1 ); - } - SPI_I2S_SendData(SPI3, RGB_Code & 0xFF); - - while(SPI_I2S_GetFlagStatus(SPI3, SPI_I2S_FLAG_BSY) != RESET) - { - vBlockToWait( 1 ); - } -} - -/******************************************************************************* -* Function Name : LCD_PowerOn -* Description : Power on the LCD. -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void LCD_PowerOn(void) -{ - /* Power On sequence ---------------------------------------------------------*/ - LCD_WriteReg(R16, 0x0000); /* SAP, BT[3:0], AP, DSTB, SLP, STB */ - LCD_WriteReg(R17, 0x0000); /* DC1[2:0], DC0[2:0], VC[2:0] */ - LCD_WriteReg(R18, 0x0000); /* VREG1OUT voltage */ - LCD_WriteReg(R19, 0x0000); /* VDV[4:0] for VCOM amplitude */ - timerDly(20); /* Dis-charge capacitor power voltage (200ms) */ - LCD_WriteReg(R16, 0x17B0); /* SAP, BT[3:0], AP, DSTB, SLP, STB */ - LCD_WriteReg(R17, 0x0137); /* DC1[2:0], DC0[2:0], VC[2:0] */ - timerDly(5); /* delay 50 ms */ - LCD_WriteReg(R18, 0x0139); /* VREG1OUT voltage */ - timerDly(5); /* delay 50 ms */ - LCD_WriteReg(R19, 0x1d00); /* VDV[4:0] for VCOM amplitude */ - LCD_WriteReg(R41, 0x0013); /* VCM[4:0] for VCOMH */ - timerDly(5); /* delay 50 ms */ - LCD_WriteReg(R7, 0x0173); /* 262K color and display ON */ -} - -/******************************************************************************* -* Function Name : LCD_DisplayOn -* Description : Enables the Display. -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void LCD_DisplayOn(void) -{ - /* Display On */ - LCD_WriteReg(R7, 0x0173); /* 262K color and display ON */ - -} - -/******************************************************************************* -* Function Name : LCD_DisplayOff -* Description : Disables the Display. -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void LCD_DisplayOff(void) -{ - /* Display Off */ - LCD_WriteReg(R7, 0x0); -} - -/******************************************************************************* -* Function Name : LCD_CtrlLinesConfig -* Description : Configures LCD control lines in Output Push-Pull mode. -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void LCD_CtrlLinesConfig(void) -{ - GPIO_InitTypeDef GPIO_InitStructure; - - /* Configure NCS (PB.02) in Output Push-Pull mode */ - GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2; - GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; - GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; - GPIO_Init(GPIOB, &GPIO_InitStructure); - - /* Configure NWR(RNW), RS (PD.15, PD.07) in Output Push-Pull mode */ -// GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7 | GPIO_Pin_15; -// GPIO_Init(GPIOD, &GPIO_InitStructure); - -// LCD_CtrlLinesWrite(GPIOD, CtrlPin_NWR, Bit_SET); -// LCD_CtrlLinesWrite(GPIOD, CtrlPin_RS, Bit_SET); -} - -/******************************************************************************* -* Function Name : LCD_CtrlLinesWrite -* Description : Sets or reset LCD control lines. -* Input : - GPIOx: where x can be B or D to select the GPIO peripheral. -* - CtrlPins: the Control line. This parameter can be: -* - CtrlPin_NCS: Chip Select pin (PB.02) -* - CtrlPin_NWR: Read/Write Selection pin (PD.15) -* - CtrlPin_RS: Register/RAM Selection pin (PD.07) -* - BitVal: specifies the value to be written to the selected bit. -* This parameter can be: -* - Bit_RESET: to clear the port pin -* - Bit_SET: to set the port pin -* Output : None -* Return : None -*******************************************************************************/ -void LCD_CtrlLinesWrite(GPIO_TypeDef* GPIOx, u16 CtrlPins, BitAction BitVal) -{ - /* Set or Reset the control line */ - GPIO_WriteBit(GPIOx, CtrlPins, BitVal); -} - -/******************************************************************************* -* Function Name : LCD_SPIConfig -* Description : Configures the SPI3 interface. -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void LCD_SPIConfig(void) -{ - SPI_InitTypeDef SPI_InitStructure; - GPIO_InitTypeDef GPIO_InitStructure; - - /* Enable GPIOC clock */ - RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC | RCC_APB2Periph_AFIO, ENABLE); - - //GPIO_PinRemapConfig(GPIO_Remap_SPI3, ENABLE); - AFIO->MAPR |= GPIO_Remap_SPI3; - - /* Enable SPI3 clock */ - RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI3, ENABLE); - - /* Configure SPI3 pins: SCK, MISO and MOSI */ - GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10 | GPIO_Pin_11 | GPIO_Pin_12; - GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; - GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; - GPIO_Init(GPIOC, &GPIO_InitStructure); - - SPI_I2S_DeInit(SPI3); - - /* SPI3 Config */ - SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex; - SPI_InitStructure.SPI_Mode = SPI_Mode_Master; - SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b; - SPI_InitStructure.SPI_CPOL = SPI_CPOL_High; - SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge; - SPI_InitStructure.SPI_NSS = SPI_NSS_Soft; - SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_2; - SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB; - SPI_Init(SPI3, &SPI_InitStructure); - - /* SPI3 enable */ - SPI_Cmd(SPI3, ENABLE); -} - -/******************* (C) COPYRIGHT 2008 STMicroelectronics *****END OF FILE****/ diff --git a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/LCD_Message.h b/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/LCD_Message.h deleted file mode 100644 index 1cda53f4c..000000000 --- a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/LCD_Message.h +++ /dev/null @@ -1,502 +0,0 @@ -#ifndef LCD_MESSAGE_H -#define LCD_MESSAGE_H - -/* The structure passed to the LCD when there is text to display. */ -typedef struct -{ - long xColumn; - signed char *pcMessage; -} xLCDMessage; - -/* The bitmap displayed on the LCD when the LCD task starts. */ -const unsigned char pcBitmap[] = -{ -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0x01, 0xfc, 0x03, 0x9f, 0x3f, 0xfe, 0x0c, 0x80, 0x03, 0xf8, 0x01, 0x70, 0x80, 0xff, 0x0f, 0xf0, 0xf8, 0xc7, -0x3f, 0x00, 0xff, 0xff, 0xff, 0xff, 0x03, 0x78, 0x00, 0xf8, 0xc0, 0xff, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0x01, 0xf8, 0x01, 0x9e, 0x3f, 0xfe, 0x0c, 0x80, 0x03, 0xf0, 0x01, 0x70, 0x00, 0xfe, 0x0f, 0xe0, 0xf9, 0xe7, -0x3f, 0x00, 0xff, 0xff, 0xff, 0xff, 0x03, 0x70, 0x00, 0x78, 0x80, 0x3f, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xf9, 0xf1, 0x78, 0x3c, 0x9f, 0x7c, 0xce, 0xff, 0xf3, 0xe3, 0xf9, 0x7f, 0x7e, 0xfc, 0xcf, 0xc7, 0xf3, 0xf3, -0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf3, 0xe3, 0xcf, 0x3f, 0x1e, 0x1f, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xf9, 0x73, 0xfe, 0x39, 0x9f, 0x7c, 0xce, 0xff, 0xf3, 0xe7, 0xf9, 0x7f, 0xfe, 0xfc, 0xcf, 0xcf, 0xe3, 0xf1, -0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf3, 0xe7, 0xcf, 0x9f, 0x7f, 0x9e, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xf9, 0x33, 0xfe, 0x31, 0x9f, 0x7c, 0xce, 0xff, 0xf3, 0xe7, 0xf9, 0x7f, 0xfe, 0xf9, 0xcf, 0xcf, 0xc7, 0xf8, -0x3f, 0xff, 0x13, 0x0f, 0xff, 0xf0, 0xf3, 0xe7, 0xcf, 0x8f, 0x7f, 0x9c, 0xff, 0xff, 0x87, 0x4f, 0x1c, 0xf2, 0xff, 0xff, -0xff, 0xff, 0xf9, 0x33, 0xff, 0x33, 0x9e, 0x3d, 0xce, 0xff, 0xf3, 0xe3, 0xf9, 0x7f, 0xfe, 0xf9, 0xcf, 0xc7, 0xcf, 0xfc, -0x3f, 0xff, 0x03, 0x03, 0x3c, 0xc0, 0xf3, 0xe3, 0xcf, 0xcf, 0xff, 0x1c, 0xff, 0xff, 0x01, 0x0e, 0x0c, 0xf0, 0xff, 0xff, -0xff, 0xff, 0xf9, 0x31, 0xff, 0x73, 0xce, 0x39, 0x0f, 0xc0, 0x03, 0xf0, 0x01, 0x78, 0xfe, 0xf9, 0x0f, 0xe0, 0x1f, 0xfe, -0x3f, 0x80, 0xe3, 0xf3, 0x3c, 0xcf, 0x03, 0xf0, 0xcf, 0xcf, 0xff, 0x3c, 0xf0, 0xff, 0x79, 0x8e, 0xcf, 0xf1, 0xff, 0xff, -0xff, 0xff, 0x01, 0x38, 0xff, 0x73, 0xce, 0x39, 0x0f, 0xc0, 0x03, 0xf8, 0x01, 0x78, 0xfe, 0xf9, 0x0f, 0xe0, 0x1f, 0xfe, -0x3f, 0x80, 0xf3, 0xf9, 0x99, 0x9f, 0x03, 0xf8, 0xcf, 0xcf, 0xff, 0xfc, 0xc0, 0xff, 0xfc, 0xcc, 0xe7, 0xf3, 0xff, 0xff, -0xff, 0xff, 0x01, 0x3c, 0xff, 0x73, 0xce, 0x39, 0xcf, 0xff, 0xf3, 0xfc, 0xf9, 0x7f, 0xfe, 0xf9, 0xcf, 0xcf, 0x3f, 0xff, -0x3f, 0xff, 0xf3, 0x01, 0x18, 0x80, 0xf3, 0xfc, 0xcf, 0xcf, 0xff, 0xfc, 0x8f, 0xff, 0xfc, 0xcc, 0xe7, 0xf3, 0xff, 0xff, -0xff, 0xff, 0xf9, 0x3f, 0xff, 0xf3, 0xe4, 0x93, 0xcf, 0xff, 0xf3, 0xf8, 0xf9, 0x7f, 0xfe, 0xf9, 0xcf, 0x9f, 0x3f, 0xff, -0x3f, 0xff, 0xf3, 0x01, 0x18, 0x80, 0xf3, 0xf8, 0xcf, 0xcf, 0xff, 0xfc, 0x3f, 0xff, 0xfc, 0xcc, 0xe7, 0xf3, 0xff, 0xff, -0xff, 0xff, 0xf9, 0x3f, 0xfe, 0xf1, 0xe4, 0x93, 0xcf, 0xff, 0xf3, 0xf9, 0xf9, 0x7f, 0xfe, 0xf9, 0xcf, 0x9f, 0x3f, 0xff, -0x3f, 0xff, 0xf3, 0xf9, 0x9f, 0xff, 0xf3, 0xf9, 0xcf, 0x8f, 0x7f, 0xcc, 0x3f, 0xff, 0xfc, 0xcc, 0xe7, 0xf3, 0xff, 0xff, -0xff, 0xff, 0xf9, 0x7f, 0xfe, 0xf9, 0xe4, 0x93, 0xcf, 0xff, 0xf3, 0xf1, 0xf9, 0x7f, 0xfe, 0xfc, 0xcf, 0x9f, 0x3f, 0xff, -0x3f, 0xff, 0xf3, 0xf9, 0x9f, 0xff, 0xf3, 0xf1, 0xcf, 0x9f, 0x7f, 0x8e, 0x3f, 0xff, 0xfc, 0xcc, 0xe7, 0xf3, 0xff, 0xff, -0xff, 0xff, 0xf9, 0xff, 0x78, 0xfc, 0xe4, 0x93, 0xcf, 0xff, 0xf3, 0xe3, 0xf9, 0x7f, 0x7e, 0xfc, 0xcf, 0x8f, 0x3f, 0xff, -0x3f, 0xff, 0xf3, 0xf3, 0x38, 0x8f, 0xf3, 0xe3, 0xcf, 0x3f, 0x1e, 0x1f, 0x1f, 0xff, 0x79, 0xce, 0xcf, 0xf1, 0xff, 0xff, -0xff, 0xff, 0xf9, 0xff, 0x01, 0xfe, 0xf1, 0xc7, 0x0f, 0x80, 0xf3, 0xe7, 0x01, 0x70, 0x00, 0xfe, 0x0f, 0xc0, 0x3f, 0xff, -0x3f, 0xff, 0xf3, 0x03, 0x3c, 0xc0, 0xf3, 0xe7, 0xcf, 0x7f, 0x80, 0x3f, 0x80, 0xe7, 0x01, 0xce, 0x0f, 0xf0, 0xff, 0xff, -0xff, 0xff, 0xf9, 0xff, 0x03, 0xff, 0xf1, 0xc7, 0x0f, 0x80, 0xf3, 0xc7, 0x01, 0x70, 0x80, 0xff, 0x0f, 0xe0, 0x3f, 0xff, -0x3f, 0xff, 0xf3, 0x0f, 0xfe, 0xe0, 0xf3, 0xc7, 0xcf, 0xff, 0xc0, 0x7f, 0xe0, 0xe7, 0x87, 0xcf, 0x1f, 0xf2, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf3, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe7, 0xf1, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0xf8, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xfc, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0xff, 0xff, 0xff, 0xff, 0x03, -0x78, 0x00, 0xf8, 0xc0, 0xff, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0xff, 0xff, 0xff, 0xff, 0x03, -0x70, 0x00, 0x78, 0x80, 0x3f, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf3, -0xe3, 0xcf, 0x3f, 0x1e, 0x1f, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf3, -0xe7, 0xcf, 0x9f, 0x7f, 0x9e, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf9, 0x3e, 0x7c, 0x1f, 0xbe, 0xcf, 0x3f, 0xff, 0x13, 0x0f, 0xff, 0xf0, 0xf3, -0xe7, 0xcf, 0x8f, 0x7f, 0x9c, 0xff, 0xff, 0x87, 0x4f, 0x1c, 0xf2, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x79, 0x3c, 0x3c, 0x1e, 0x1e, 0xcf, 0x3f, 0xff, 0x03, 0x03, 0x3c, 0xc0, 0xf3, -0xe3, 0xcf, 0xcf, 0xff, 0x1c, 0xff, 0xff, 0x01, 0x0e, 0x0c, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7b, 0xbc, 0x3d, 0xde, 0x1e, 0xef, 0x3f, 0x80, 0xe3, 0xf3, 0x3c, 0xcf, 0x03, -0xf0, 0xcf, 0xcf, 0xff, 0x3c, 0xf0, 0xff, 0x79, 0x8e, 0xcf, 0xf1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x73, 0x9d, 0xb9, 0xce, 0x5c, 0xe7, 0x3f, 0x80, 0xf3, 0xf9, 0x99, 0x9f, 0x03, -0xf8, 0xcf, 0xcf, 0xff, 0xfc, 0xc0, 0xff, 0xfc, 0xcc, 0xe7, 0xf3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x33, 0x99, 0x99, 0xcc, 0x4c, 0xe6, 0x3f, 0xff, 0xf3, 0x01, 0x18, 0x80, 0xf3, -0xfc, 0xcf, 0xcf, 0xff, 0xfc, 0x8f, 0xff, 0xfc, 0xcc, 0xe7, 0xf3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x27, 0xc9, 0x93, 0xe4, 0x49, 0xf2, 0x3f, 0xff, 0xf3, 0x01, 0x18, 0x80, 0xf3, -0xf8, 0xcf, 0xcf, 0xff, 0xfc, 0x3f, 0xff, 0xfc, 0xcc, 0xe7, 0xf3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x27, 0xc9, 0x93, 0xe4, 0x49, 0xf2, 0x3f, 0xff, 0xf3, 0xf9, 0x9f, 0xff, 0xf3, -0xf9, 0xcf, 0x8f, 0x7f, 0xcc, 0x3f, 0xff, 0xfc, 0xcc, 0xe7, 0xf3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xaf, 0xeb, 0xd7, 0xf5, 0xeb, 0xfa, 0x3f, 0xff, 0xf3, 0xf9, 0x9f, 0xff, 0xf3, -0xf1, 0xcf, 0x9f, 0x7f, 0x8e, 0x3f, 0xff, 0xfc, 0xcc, 0xe7, 0xf3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x8f, 0xe3, 0xc7, 0xf1, 0xe3, 0xf8, 0x3f, 0xff, 0xf3, 0xf3, 0x38, 0x8f, 0xf3, -0xe3, 0xcf, 0x3f, 0x1e, 0x1f, 0x1f, 0xff, 0x79, 0xce, 0xcf, 0xf1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x8f, 0xe3, 0xc7, 0xf1, 0xe3, 0xf8, 0x3c, 0xff, 0xf3, 0x03, 0x3c, 0xc0, 0xf3, -0xe7, 0xcf, 0x7f, 0x80, 0x3f, 0x80, 0xe7, 0x01, 0xce, 0x0f, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x9f, 0xf3, 0xcf, 0xf9, 0xe7, 0xfc, 0x3c, 0xff, 0xf3, 0x0f, 0xfe, 0xe0, 0xf3, -0xc7, 0xcf, 0xff, 0xc0, 0x7f, 0xe0, 0xe7, 0x87, 0xcf, 0x1f, 0xf2, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe7, 0xf1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xf8, 0xff, 0x3f, 0xfc, 0x7f, 0x00, -0x0f, 0x00, 0x1f, 0xf8, 0x1f, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xe0, 0xff, 0x1f, 0xfc, 0x7f, 0x00, -0x0e, 0x00, 0x0f, 0xf0, 0x07, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc7, 0xc7, 0xff, 0x9f, 0xff, 0x7f, 0x7e, -0xfc, 0xf9, 0xc7, 0xe3, 0xe3, 0xe3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe7, 0xcf, 0xff, 0x9f, 0xff, 0x7f, 0xfe, -0xfc, 0xf9, 0xf3, 0xcf, 0xf3, 0xe7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xdf, 0x87, 0xef, 0xc3, 0xf7, 0xf9, 0xe7, 0xff, 0x03, 0x07, 0x1e, 0x7e, 0xfe, -0xfc, 0xf9, 0xf1, 0x8f, 0xf3, 0xff, 0xff, 0xf0, 0x87, 0x4f, 0x18, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x8f, 0x87, 0xc7, 0xc3, 0xe3, 0xf9, 0xc7, 0xff, 0x00, 0x06, 0x06, 0x78, 0x7e, -0xfc, 0xf9, 0xf9, 0x9f, 0xe3, 0xff, 0x3f, 0xe0, 0x01, 0x0e, 0x08, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x8f, 0xb7, 0xc7, 0xdb, 0xe3, 0xfd, 0x0f, 0xfc, 0x7c, 0x9e, 0xe7, 0x79, 0x00, -0xfe, 0xf9, 0xf9, 0x9f, 0x07, 0xfe, 0x3f, 0xc7, 0x79, 0x8e, 0xe3, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xae, 0x33, 0xd7, 0x99, 0xeb, 0xfc, 0x3f, 0xf0, 0x7f, 0x9e, 0xf3, 0x73, 0x00, -0xff, 0xf9, 0xf9, 0x9f, 0x1f, 0xf8, 0x9f, 0xcf, 0xfc, 0xcc, 0xf3, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x26, 0x33, 0x93, 0x99, 0xc9, 0xfc, 0xff, 0xe3, 0x0f, 0x9e, 0x03, 0x70, 0x9e, -0xff, 0xf9, 0xf9, 0x9f, 0xff, 0xf1, 0x9f, 0xff, 0xfc, 0xcc, 0xf3, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x24, 0x79, 0x92, 0x3c, 0x49, 0xfe, 0xff, 0xcf, 0x01, 0x9e, 0x03, 0x70, 0x1e, -0xff, 0xf9, 0xf9, 0x9f, 0xff, 0xe7, 0x9f, 0xff, 0xfc, 0xcc, 0xf3, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x24, 0x79, 0x92, 0x3c, 0x49, 0xfe, 0xf3, 0xcf, 0x70, 0x9e, 0xf3, 0x7f, 0x3e, -0xff, 0xf9, 0xf1, 0x8f, 0xf9, 0xe7, 0x9f, 0xff, 0xfc, 0xcc, 0xf3, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x75, 0xfd, 0xba, 0x7e, 0x5d, 0xff, 0xe3, 0xcf, 0x7c, 0x9e, 0xf3, 0x7f, 0x3e, -0xfe, 0xf9, 0xf3, 0xcf, 0xf1, 0xe7, 0x9f, 0xcf, 0xfc, 0xcc, 0xf3, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x71, 0xfc, 0x38, 0x7e, 0x1c, 0xff, 0xc7, 0xc7, 0x3c, 0x9e, 0xe7, 0x71, 0x7e, -0xfc, 0xf9, 0xc7, 0xe3, 0xe3, 0xe3, 0x3f, 0xc7, 0x79, 0xce, 0xf3, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x71, 0xfc, 0x38, 0x7e, 0x1c, 0x9f, 0x0f, 0xe0, 0x00, 0x9e, 0x07, 0x78, 0xfe, -0xfc, 0xf9, 0x0f, 0xf0, 0x07, 0xf0, 0x3c, 0xe0, 0x01, 0xce, 0xf3, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x73, 0xfe, 0x39, 0xff, 0x9c, 0x9f, 0x1f, 0xf8, 0xc1, 0x9c, 0x1f, 0x7c, 0xfe, -0xf8, 0xf9, 0x1f, 0xf8, 0x0f, 0xfc, 0x7c, 0xf0, 0x87, 0xcf, 0xf3, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, -0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, -0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, -0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, -0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, -0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x80, -0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x80, -0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0xff, 0x07, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0xc0, 0xff, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0xff, 0x07, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0xc0, 0xff, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0xff, 0x00, 0x30, 0xf8, 0x1f, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, -0x00, 0xf0, 0xff, 0xff, 0x0f, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0x7f, 0x00, 0x30, 0xf0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, -0x00, 0xf0, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0x7f, 0x00, 0x30, 0xf0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, -0x00, 0xf0, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0x7f, 0x00, 0x30, 0xf0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, -0x00, 0xf0, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0x1f, 0x00, 0x70, 0xf0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, -0x00, 0xf0, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0x1f, 0x00, 0x70, 0xc0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, -0x00, 0xf0, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0x1f, 0x00, 0x70, 0xc0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, -0x00, 0xf0, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0x1f, 0x78, 0x70, 0xc0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, -0x00, 0xf0, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0x1f, 0x38, 0x70, 0xc0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, -0x00, 0xf0, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0x1f, 0x38, 0x70, 0xc0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, -0x00, 0xf0, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0x1f, 0x38, 0x70, 0xc0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, -0x00, 0xf0, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0x1f, 0x78, 0x30, 0xf0, 0x1f, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, -0x00, 0xf0, 0x1f, 0x00, 0x00, 0xf0, 0x3f, 0x00, 0x00, 0xe0, 0xff, 0x03, 0x00, 0x00, 0xff, 0xff, 0x80, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0x1f, 0x10, 0x00, 0xf0, 0x1f, 0x00, 0xe0, 0xff, 0x0f, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x03, 0x00, 0xf8, -0xff, 0xff, 0x1f, 0x00, 0x00, 0xfc, 0xff, 0x00, 0x00, 0xc0, 0xff, 0x03, 0x00, 0xe0, 0xff, 0xff, 0x8f, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0x1f, 0x00, 0x00, 0xf0, 0x1f, 0x00, 0xe0, 0xff, 0x1f, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x03, 0x00, 0xf8, -0xff, 0xff, 0x0f, 0x00, 0x00, 0xff, 0xff, 0x07, 0x00, 0xc0, 0xff, 0x03, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0x1f, 0x00, 0x00, 0xf0, 0x1f, 0x00, 0xe0, 0xff, 0x1f, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x03, 0x00, 0xf8, -0xff, 0xff, 0x0f, 0x00, 0x00, 0xff, 0xff, 0x07, 0x00, 0xc0, 0xff, 0x03, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0x1f, 0x00, 0x00, 0xf0, 0x1f, 0x00, 0xe0, 0xff, 0x3f, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x03, 0x00, 0xf8, -0xff, 0xff, 0x0f, 0x00, 0x80, 0xff, 0xff, 0x1f, 0x00, 0x80, 0xff, 0x01, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0x7f, 0x00, 0x00, 0xf8, 0x1f, 0x00, 0xe0, 0xff, 0xff, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x03, 0x00, 0xf8, -0xff, 0xff, 0x03, 0x00, 0xe0, 0xff, 0xff, 0x1f, 0x00, 0x80, 0xff, 0x01, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0x7f, 0x00, 0x00, 0xfc, 0x1f, 0x00, 0xe0, 0xff, 0xff, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x03, 0x00, 0xf8, -0xff, 0xff, 0x03, 0x00, 0xe0, 0xff, 0xff, 0x3f, 0x00, 0x00, 0xfe, 0x01, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0x7f, 0x00, 0x00, 0xfc, 0x1f, 0x00, 0xe0, 0xff, 0xff, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x03, 0x00, 0xf8, -0xff, 0xff, 0x03, 0x00, 0xe0, 0xff, 0xff, 0x3f, 0x00, 0x00, 0xfe, 0x01, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0x1f, 0x00, 0xe0, 0xff, 0xff, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x03, 0x00, 0xf8, -0xff, 0xff, 0x01, 0x00, 0xf0, 0xff, 0xff, 0x3f, 0x00, 0x00, 0xfe, 0x01, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0xff, 0x07, 0x80, 0xff, 0x1f, 0x00, 0xe0, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0x03, 0x00, 0xf8, -0xff, 0xff, 0x01, 0x00, 0xf0, 0xff, 0xff, 0x7f, 0x00, 0x00, 0xfe, 0x01, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0xff, 0x07, 0x80, 0xff, 0x1f, 0x00, 0xe0, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0x03, 0x00, 0xf8, -0xff, 0xff, 0x01, 0x00, 0xf0, 0xff, 0xff, 0x7f, 0x00, 0x00, 0xfe, 0x01, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0xe0, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0x03, 0x00, 0xf8, -0xff, 0xff, 0x01, 0x00, 0xf8, 0xff, 0xff, 0x7f, 0x00, 0x00, 0xfe, 0x01, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0xe0, 0xff, 0x3f, 0x00, 0x00, 0xff, 0xff, 0xff, 0x03, 0x00, 0xf8, -0xff, 0xff, 0x01, 0x00, 0xf8, 0xff, 0xff, 0x7f, 0x00, 0x00, 0xfc, 0x03, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0xe0, 0xff, 0x1f, 0x00, 0x80, 0xff, 0xff, 0xff, 0x03, 0x00, 0xf8, -0xff, 0xff, 0x01, 0x00, 0xf8, 0xff, 0xff, 0xff, 0x01, 0x00, 0xfc, 0x03, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0xe0, 0xff, 0x1f, 0x00, 0x80, 0xff, 0xff, 0xff, 0x03, 0x00, 0xf8, -0xff, 0xff, 0x01, 0x00, 0xf8, 0xff, 0xff, 0xff, 0x01, 0x00, 0xfc, 0x03, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0xff, 0x07, 0xf8, 0xff, 0x1f, 0x00, 0xe0, 0xff, 0x0f, 0x00, 0x80, 0xff, 0xff, 0xff, 0x03, 0x00, 0xf8, -0xff, 0xff, 0x01, 0x00, 0xf8, 0xff, 0xff, 0xff, 0x01, 0x00, 0xfc, 0x03, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0xff, 0x01, 0x70, 0xf8, 0x1f, 0x00, 0xc0, 0xff, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0x03, 0x00, 0xf8, -0xff, 0xff, 0x01, 0x00, 0xf8, 0xff, 0xff, 0xff, 0x01, 0x00, 0xfc, 0x0f, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0x7f, 0x00, 0x30, 0xf0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0x03, 0x00, 0xf8, -0xff, 0xff, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, 0xfc, 0x1f, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0x7f, 0x00, 0x30, 0xf0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0x03, 0x00, 0xf8, -0xff, 0xff, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, 0xfc, 0x1f, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0x7f, 0x00, 0x30, 0xf0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x03, 0x00, 0xf8, -0xff, 0xff, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, 0xfc, 0x1f, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0x1f, 0x00, 0x70, 0xf0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0xf8, -0xff, 0xff, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, 0xfc, 0x3f, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0x1f, 0x00, 0x70, 0xc0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0xf8, -0xff, 0xff, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x01, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0x1f, 0x00, 0x70, 0xc0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0xf8, -0xff, 0xff, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x01, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0x1f, 0x70, 0x70, 0xc0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0xf8, -0xff, 0xff, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x03, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0x1f, 0x38, 0x70, 0xc0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0xf8, -0xff, 0xff, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, 0xfc, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0x1f, 0x38, 0x70, 0xc0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x03, 0x00, 0xf8, -0xff, 0xff, 0x01, 0x00, 0xf8, 0xff, 0xff, 0xff, 0x01, 0x00, 0xfc, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x81, -0xc0, 0xff, 0xff, 0x1f, 0x38, 0x70, 0xc0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x03, 0x00, 0xf8, -0xff, 0xff, 0x01, 0x00, 0xf8, 0xff, 0xff, 0xff, 0x01, 0x00, 0xfc, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x81, -0xc0, 0xff, 0xff, 0x1f, 0x78, 0x30, 0xc0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x03, 0x00, 0xf8, -0xff, 0xff, 0x01, 0x00, 0xf8, 0xff, 0xff, 0xff, 0x01, 0x00, 0xfc, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x81, -0xc0, 0xff, 0xff, 0x1f, 0x10, 0x30, 0xf0, 0x1f, 0x00, 0xc0, 0x3f, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0x03, 0x00, 0xf8, -0xff, 0xff, 0x01, 0x00, 0xf8, 0xff, 0xff, 0xff, 0x01, 0x00, 0xfc, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0xfc, 0xff, 0x81, -0xc0, 0xff, 0xff, 0x1f, 0x00, 0x00, 0xf0, 0x1f, 0x00, 0xe0, 0xff, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0x03, 0x00, 0xf8, -0xff, 0xff, 0x01, 0x00, 0xf8, 0xff, 0xff, 0x7f, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0xfc, 0xff, 0x81, -0xc0, 0xff, 0xff, 0x1f, 0x00, 0x00, 0xf0, 0x1f, 0x00, 0xe0, 0xff, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0x03, 0x00, 0xf8, -0xff, 0xff, 0x01, 0x00, 0xf8, 0xff, 0xff, 0x7f, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0xfc, 0xff, 0x81, -0xc0, 0xff, 0xff, 0x1f, 0x00, 0x00, 0xf0, 0x1f, 0x00, 0xe0, 0xff, 0x01, 0x00, 0xf0, 0xff, 0xff, 0xff, 0x03, 0x00, 0xf8, -0xff, 0xff, 0x01, 0x00, 0xf8, 0xff, 0xff, 0x7f, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0xf8, 0xff, 0x81, -0xc0, 0xff, 0xff, 0x7f, 0x00, 0x00, 0xf8, 0x1f, 0x00, 0xe0, 0xff, 0x03, 0x00, 0xf0, 0xff, 0xff, 0xff, 0x03, 0x00, 0xf8, -0xff, 0xff, 0x01, 0x00, 0xf0, 0xff, 0xff, 0x7f, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xf8, 0xff, 0x81, -0xc0, 0xff, 0xff, 0x7f, 0x00, 0x00, 0xf8, 0x1f, 0x00, 0xe0, 0xff, 0x03, 0x00, 0xf0, 0xff, 0xff, 0xff, 0x03, 0x00, 0xf8, -0xff, 0xff, 0x01, 0x00, 0xf0, 0xff, 0xff, 0x7f, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xf8, 0xff, 0x81, -0xc0, 0xff, 0xff, 0x7f, 0x00, 0x00, 0xfc, 0x1f, 0x00, 0xe0, 0xff, 0x0f, 0x00, 0xf0, 0xff, 0xff, 0xff, 0x03, 0x00, 0xf8, -0xff, 0xff, 0x01, 0x00, 0xf0, 0xff, 0xff, 0x3f, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xf8, 0xff, 0x81, -0xc0, 0xff, 0xff, 0xff, 0x00, 0x00, 0xfc, 0x1f, 0x00, 0xe0, 0xff, 0x0f, 0x00, 0xe0, 0xff, 0xff, 0xff, 0x03, 0x00, 0xf8, -0xff, 0xff, 0x03, 0x00, 0xf0, 0xff, 0xff, 0x3f, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0xf8, 0xff, 0x81, -0xc0, 0xff, 0xff, 0xff, 0x07, 0x80, 0xff, 0x1f, 0x00, 0xe0, 0xff, 0x0f, 0x00, 0xe0, 0xff, 0xff, 0xff, 0x03, 0x00, 0xf8, -0xff, 0xff, 0x03, 0x00, 0xe0, 0xff, 0xff, 0x1f, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0xf8, 0xff, 0x81, -0xc0, 0xff, 0xff, 0xff, 0x07, 0x80, 0xff, 0x1f, 0x00, 0xe0, 0xff, 0x0f, 0x00, 0xe0, 0xff, 0xff, 0xff, 0x03, 0x00, 0xf8, -0xff, 0xff, 0x03, 0x00, 0xe0, 0xff, 0xff, 0x1f, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0xf8, 0xff, 0x81, -0xc0, 0xff, 0xff, 0xff, 0x7f, 0xfc, 0xff, 0x1f, 0x00, 0xe0, 0xff, 0x1f, 0x00, 0x80, 0xff, 0xff, 0xff, 0x03, 0x00, 0xf8, -0xff, 0xff, 0x03, 0x00, 0x80, 0xff, 0xff, 0x1f, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0xf8, 0xff, 0x81, -0xc0, 0xff, 0xff, 0x1f, 0xf0, 0xff, 0xff, 0x1f, 0x00, 0xe0, 0xff, 0x1f, 0x00, 0x80, 0xff, 0xff, 0xff, 0x03, 0x00, 0xf8, -0xff, 0xff, 0x0f, 0x00, 0x00, 0xff, 0xff, 0x07, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xfc, 0xff, 0x81, -0xc0, 0xff, 0xff, 0x1f, 0xf0, 0xff, 0xff, 0x1f, 0x00, 0xe0, 0xff, 0x3f, 0x00, 0x80, 0xff, 0xff, 0xff, 0x03, 0x00, 0xf8, -0xff, 0xff, 0x0f, 0x00, 0x00, 0xfc, 0xff, 0x03, 0x00, 0xc0, 0xff, 0x0f, 0xff, 0xff, 0x7f, 0x00, 0x00, 0xfc, 0xff, 0x81, -0xc0, 0xff, 0xff, 0x1f, 0xf0, 0xff, 0xff, 0x1f, 0x00, 0xe0, 0xff, 0x3f, 0x00, 0x80, 0xff, 0xff, 0xff, 0x03, 0x00, 0xf8, -0xff, 0xff, 0x0f, 0x00, 0x00, 0xfc, 0xff, 0x03, 0x00, 0xc0, 0xff, 0x0f, 0xff, 0xff, 0x7f, 0x00, 0x00, 0xfc, 0xff, 0x81, -0xc0, 0xff, 0xff, 0x1f, 0xf0, 0xff, 0xff, 0x1f, 0x00, 0xe0, 0xff, 0x3f, 0x00, 0x00, 0xff, 0xff, 0xff, 0x03, 0x00, 0xf8, -0xff, 0xff, 0x1f, 0x00, 0x00, 0xf8, 0x7f, 0x00, 0x00, 0xe0, 0xff, 0x0f, 0xf0, 0xff, 0x1f, 0x00, 0x00, 0xfc, 0xff, 0x81, -0xc0, 0xff, 0xff, 0x1f, 0xf0, 0xff, 0xff, 0x1f, 0x00, 0xe0, 0xff, 0x3f, 0x00, 0x00, 0xff, 0xff, 0xff, 0x03, 0x00, 0xf8, -0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0xe0, 0xff, 0x0f, 0x00, 0xf0, 0x00, 0x00, 0x00, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0x1f, 0xe0, 0xff, 0xff, 0x1f, 0x00, 0xe0, 0xff, 0x3f, 0x00, 0x00, 0xff, 0xff, 0xff, 0x03, 0x00, 0xf8, -0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0x1f, 0xe0, 0xff, 0xff, 0x1f, 0x00, 0xe0, 0xff, 0x3f, 0x00, 0x00, 0xff, 0xff, 0xff, 0x03, 0x00, 0xf8, -0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0x7f, 0x80, 0xff, 0xff, 0x1f, 0x00, 0xe0, 0xff, 0xff, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x03, 0x00, 0xf8, -0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0x7f, 0x00, 0x00, 0xf0, 0x1f, 0x00, 0xe0, 0xff, 0xff, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x03, 0x00, 0xf8, -0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0x1f, 0x00, 0x00, 0xf0, 0x1f, 0x00, 0xe0, 0xff, 0xff, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x03, 0x00, 0xf8, -0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0x1f, 0x00, 0x00, 0xf0, 0x1f, 0x00, 0xe0, 0xff, 0xff, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x03, 0x00, 0xf8, -0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0x1f, 0x00, 0x00, 0xf0, 0x1f, 0x00, 0xe0, 0xff, 0xff, 0x01, 0x00, 0xf8, 0xff, 0xff, 0x03, 0x00, 0xf8, -0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0x1f, 0x00, 0x00, 0xf0, 0x1f, 0x00, 0xe0, 0xff, 0xff, 0x01, 0x00, 0xf8, 0xff, 0xff, 0x03, 0x00, 0xf8, -0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0x1f, 0x00, 0x00, 0xf0, 0x1f, 0x00, 0xe0, 0xff, 0xff, 0x01, 0x00, 0xf0, 0xff, 0xff, 0x03, 0x00, 0xf8, -0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0x1f, 0x00, 0x00, 0xf0, 0x1f, 0x00, 0xe0, 0xff, 0xff, 0x01, 0x00, 0xf0, 0xff, 0xff, 0x03, 0x00, 0xf8, -0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0x1f, 0x00, 0x00, 0xf0, 0x3f, 0x00, 0xe0, 0xff, 0xff, 0x03, 0x00, 0xf8, 0xff, 0xff, 0x07, 0x00, 0xfc, -0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0x81, -0xc0, 0xff, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x81, -0xc0, 0xff, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x81, -0xc0, 0xff, 0x03, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x81, -0xc0, 0xff, 0x01, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x81, -0xc0, 0xff, 0x01, 0x1e, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x81, -0xc0, 0xff, 0x01, 0x1e, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x81, -0xc0, 0xff, 0x01, 0x1e, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x81, -0xc0, 0xff, 0x01, 0x1e, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x81, -0xc0, 0xff, 0x01, 0x18, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x81, -0xc0, 0xff, 0x01, 0x18, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x81, -0xc0, 0xff, 0x03, 0x00, 0x00, 0x00, 0xf0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x81, -0xc0, 0xff, 0x03, 0x00, 0x00, 0x00, 0xf0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x81, -0xc0, 0xff, 0x03, 0x00, 0x00, 0x00, 0xf0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x81, -0xc0, 0xff, 0x03, 0x00, 0x00, 0x00, 0xf0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x81, -0xc0, 0xff, 0x0f, 0x00, 0x00, 0x00, 0xf0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x81, -0xc0, 0xff, 0x0f, 0x00, 0x00, 0x00, 0xf0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x81, -0xc0, 0xff, 0x7f, 0x00, 0x00, 0x00, 0xf0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x81, -0xc0, 0xff, 0x7f, 0x00, 0x00, 0x00, 0xf0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x81, -0xc0, 0xff, 0xff, 0x07, 0x00, 0x00, 0xf0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x81, -0xc0, 0xff, 0xff, 0x1f, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0x1f, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0x1f, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0x1f, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x81, -0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x81, -0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x81, -0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x80, -0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x80, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, -0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, -0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, -0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, -0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, -0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, -0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x25, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xf0, -0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x25, 0xbe, -0x4d, 0x42, 0x00 -}; - - -#endif - diff --git a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/ParTest/ParTest.c b/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/ParTest/ParTest.c deleted file mode 100644 index e0e0a887c..000000000 --- a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/ParTest/ParTest.c +++ /dev/null @@ -1,131 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/*----------------------------------------------------------- - * Simple parallel port IO routines. - *-----------------------------------------------------------*/ - -/* FreeRTOS.org includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "partest.h" - -/* Standard includes. */ -#include - -/* Library includes. */ -#include "stm32f10x_lib.h" - -#define partstNUM_LEDs 4 - -/* Holds the current output state for each of the LEDs. */ -static unsigned char ucBitStates[ partstNUM_LEDs ]; - -/* Holds the port used by each of the LEDs. */ -static GPIO_TypeDef * uxIO_Port[ partstNUM_LEDs ]; - -/* Holds the pin used by each of the LEDs. */ -static const unsigned short uxIO_Pins[ partstNUM_LEDs ] = { GPIO_Pin_14, GPIO_Pin_13, GPIO_Pin_3, GPIO_Pin_4 }; - -/*-----------------------------------------------------------*/ - -void vParTestInitialise( void ) -{ -GPIO_InitTypeDef GPIO_InitStructure; - - /* Configure PE14, PD13, PD3 and PD4 output push-pull */ - GPIO_InitStructure.GPIO_Pin = GPIO_Pin_14; - GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; - GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; - GPIO_Init( GPIOE, &GPIO_InitStructure ); - - GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13; - GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; - GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; - GPIO_Init( GPIOD, &GPIO_InitStructure ); - - GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3 | GPIO_Pin_4; - GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; - GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; - GPIO_Init( GPIOD, &GPIO_InitStructure ); - - memset( ucBitStates, 0x00, sizeof( ucBitStates ) ); - - uxIO_Port[ 0 ] = GPIOE; - uxIO_Port[ 1 ] = GPIOD; - uxIO_Port[ 2 ] = GPIOD; - uxIO_Port[ 3 ] = GPIOD; -} -/*-----------------------------------------------------------*/ - -void vParTestSetLED( unsigned portBASE_TYPE uxLED, signed portBASE_TYPE xValue ) -{ - if( uxLED < partstNUM_LEDs ) - { - portENTER_CRITICAL(); - { - if( xValue != pdFALSE ) - { - ucBitStates[ uxLED ] = pdTRUE; - } - else - { - ucBitStates[ uxLED ] = pdFALSE; - } - - GPIO_WriteBit( uxIO_Port[ uxLED ], uxIO_Pins[ uxLED ], ucBitStates[ uxLED ] ); - } - portEXIT_CRITICAL(); - } -} -/*-----------------------------------------------------------*/ - -void vParTestToggleLED( unsigned portBASE_TYPE uxLED ) -{ - if( uxLED < partstNUM_LEDs ) - { - portENTER_CRITICAL(); - { - ucBitStates[ uxLED ] = !ucBitStates[ uxLED ]; - GPIO_WriteBit( uxIO_Port[ uxLED ], uxIO_Pins[ uxLED ], ucBitStates[ uxLED ] ); - } - portEXIT_CRITICAL(); - } -} -/*-----------------------------------------------------------*/ - -portBASE_TYPE xGetLEDState( unsigned portBASE_TYPE uxLED ) -{ - if( uxLED < partstNUM_LEDs ) - { - return ( portBASE_TYPE ) ucBitStates[ uxLED ]; - } - else - { - return 0; - } -} diff --git a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/RTOSDemo.hzp b/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/RTOSDemo.hzp deleted file mode 100644 index 38747f260..000000000 --- a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/RTOSDemo.hzp +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/RTOSDemo.hzs b/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/RTOSDemo.hzs deleted file mode 100644 index 0371ad70c..000000000 --- a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/RTOSDemo.hzs +++ /dev/null @@ -1,64 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/ReadMe.txt b/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/ReadMe.txt new file mode 100644 index 000000000..12c70d213 --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/ReadMe.txt @@ -0,0 +1 @@ +The third party uIP TCP/IP stack and the demo project that used to be in this directory was removed in FreeRTOS version V10.4.3 due to security vulnerabilities identified in uIP. In a future version this demo may be replaced by a version which does not use TCP/IP or uses FreeRTOS’s own TCP/IP stack in place of the original third party stack. \ No newline at end of file diff --git a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/STM32F10x.s b/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/STM32F10x.s deleted file mode 100644 index 8c2b0762a..000000000 --- a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/STM32F10x.s +++ /dev/null @@ -1,294 +0,0 @@ -;/*****************************************************************************/ -;/* STM32F10x.s: Startup file for ST STM32F10x device series */ -;/*****************************************************************************/ -;/* <<< Use Configuration Wizard in Context Menu >>> */ -;/*****************************************************************************/ -;/* This file is part of the uVision/ARM development tools. */ -;/* Copyright (c) 2005-2007 Keil Software. All rights reserved. */ -;/* This software may only be used under the terms of a valid, current, */ -;/* end user licence from KEIL for a compatible version of KEIL software */ -;/* development tools. Nothing else gives you the right to use this software. */ -;/*****************************************************************************/ - - -;// Stack Configuration -;// Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> -;// - -Stack_Size EQU 0x00000200 - - AREA STACK, NOINIT, READWRITE, ALIGN=3 -Stack_Mem SPACE Stack_Size -__initial_sp - - -;// Heap Configuration -;// Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> -;// - -Heap_Size EQU 0x00000000 - - AREA HEAP, NOINIT, READWRITE, ALIGN=3 -__heap_base -Heap_Mem SPACE Heap_Size -__heap_limit - - IMPORT xPortPendSVHandler - IMPORT xPortSysTickHandler - IMPORT vPortSVCHandler - IMPORT vUARTInterruptHandler - IMPORT vTimer2IntHandler - - PRESERVE8 - THUMB - - -; Vector Table Mapped to Address 0 at Reset - - AREA RESET, DATA, READONLY - EXPORT __Vectors - -__Vectors DCD __initial_sp ; Top of Stack - DCD Reset_Handler ; Reset Handler - DCD NMI_Handler ; NMI Handler - DCD HardFault_Handler ; Hard Fault Handler - DCD MemManage_Handler ; MPU Fault Handler - DCD BusFault_Handler ; Bus Fault Handler - DCD UsageFault_Handler ; Usage Fault Handler - DCD 0 ; Reserved - DCD 0 ; Reserved - DCD 0 ; Reserved - DCD 0 ; Reserved - DCD vPortSVCHandler ; SVCall Handler - DCD DebugMon_Handler ; Debug Monitor Handler - DCD 0 ; Reserved - DCD xPortPendSVHandler ; PendSV Handler - DCD xPortSysTickHandler ; SysTick Handler - - ; External Interrupts - DCD WWDG_IRQHandler ; Window Watchdog - DCD PVD_IRQHandler ; PVD through EXTI Line detect - DCD TAMPER_IRQHandler ; Tamper - DCD RTC_IRQHandler ; RTC - DCD FLASH_IRQHandler ; Flash - DCD RCC_IRQHandler ; RCC - DCD EXTI0_IRQHandler ; EXTI Line 0 - DCD EXTI1_IRQHandler ; EXTI Line 1 - DCD EXTI2_IRQHandler ; EXTI Line 2 - DCD EXTI3_IRQHandler ; EXTI Line 3 - DCD EXTI4_IRQHandler ; EXTI Line 4 - DCD DMAChannel1_IRQHandler ; DMA Channel 1 - DCD DMAChannel2_IRQHandler ; DMA Channel 2 - DCD DMAChannel3_IRQHandler ; DMA Channel 3 - DCD DMAChannel4_IRQHandler ; DMA Channel 4 - DCD DMAChannel5_IRQHandler ; DMA Channel 5 - DCD DMAChannel6_IRQHandler ; DMA Channel 6 - DCD DMAChannel7_IRQHandler ; DMA Channel 7 - DCD ADC_IRQHandler ; ADC - DCD USB_HP_CAN_TX_IRQHandler ; USB High Priority or CAN TX - DCD USB_LP_CAN_RX0_IRQHandler ; USB Low Priority or CAN RX0 - DCD CAN_RX1_IRQHandler ; CAN RX1 - DCD CAN_SCE_IRQHandler ; CAN SCE - DCD EXTI9_5_IRQHandler ; EXTI Line 9..5 - DCD TIM1_BRK_IRQHandler ; TIM1 Break - DCD TIM1_UP_IRQHandler ; TIM1 Update - DCD TIM1_TRG_COM_IRQHandler ; TIM1 Trigger and Commutation - DCD TIM1_CC_IRQHandler ; TIM1 Capture Compare - DCD vTimer2IntHandler ; TIM2 - DCD TIM3_IRQHandler ; TIM3 - DCD TIM4_IRQHandler ; TIM4 - DCD I2C1_EV_IRQHandler ; I2C1 Event - DCD I2C1_ER_IRQHandler ; I2C1 Error - DCD I2C2_EV_IRQHandler ; I2C2 Event - DCD I2C2_ER_IRQHandler ; I2C2 Error - DCD SPI1_IRQHandler ; SPI1 - DCD SPI2_IRQHandler ; SPI2 - DCD vUARTInterruptHandler ; USART1 - DCD USART2_IRQHandler ; USART2 - DCD USART3_IRQHandler ; USART3 - DCD EXTI15_10_IRQHandler ; EXTI Line 15..10 - DCD RTCAlarm_IRQHandler ; RTC Alarm through EXTI Line - DCD USBWakeUp_IRQHandler ; USB Wakeup from suspend - - - AREA |.text|, CODE, READONLY - - -; Reset Handler - -Reset_Handler PROC - EXPORT Reset_Handler [WEAK] - IMPORT __main - LDR R0, =__main - BX R0 - ENDP - - -; Dummy Exception Handlers (infinite loops which can be modified) - -NMI_Handler PROC - EXPORT NMI_Handler [WEAK] - B . - ENDP -HardFault_Handler\ - PROC - EXPORT HardFault_Handler [WEAK] - B . - ENDP -MemManage_Handler\ - PROC - EXPORT MemManage_Handler [WEAK] - B . - ENDP -BusFault_Handler\ - PROC - EXPORT BusFault_Handler [WEAK] - B . - ENDP -UsageFault_Handler\ - PROC - EXPORT UsageFault_Handler [WEAK] - B . - ENDP -SVC_Handler PROC - EXPORT SVC_Handler [WEAK] - B . - ENDP -DebugMon_Handler\ - PROC - EXPORT DebugMon_Handler [WEAK] - B . - ENDP -PendSV_Handler PROC - EXPORT PendSV_Handler [WEAK] - B . - ENDP -SysTick_Handler PROC - EXPORT SysTick_Handler [WEAK] - B . - ENDP - -Default_Handler PROC - - EXPORT WWDG_IRQHandler [WEAK] - EXPORT PVD_IRQHandler [WEAK] - EXPORT TAMPER_IRQHandler [WEAK] - EXPORT RTC_IRQHandler [WEAK] - EXPORT FLASH_IRQHandler [WEAK] - EXPORT RCC_IRQHandler [WEAK] - EXPORT EXTI0_IRQHandler [WEAK] - EXPORT EXTI1_IRQHandler [WEAK] - EXPORT EXTI2_IRQHandler [WEAK] - EXPORT EXTI3_IRQHandler [WEAK] - EXPORT EXTI4_IRQHandler [WEAK] - EXPORT DMAChannel1_IRQHandler [WEAK] - EXPORT DMAChannel2_IRQHandler [WEAK] - EXPORT DMAChannel3_IRQHandler [WEAK] - EXPORT DMAChannel4_IRQHandler [WEAK] - EXPORT DMAChannel5_IRQHandler [WEAK] - EXPORT DMAChannel6_IRQHandler [WEAK] - EXPORT DMAChannel7_IRQHandler [WEAK] - EXPORT ADC_IRQHandler [WEAK] - EXPORT USB_HP_CAN_TX_IRQHandler [WEAK] - EXPORT USB_LP_CAN_RX0_IRQHandler [WEAK] - EXPORT CAN_RX1_IRQHandler [WEAK] - EXPORT CAN_SCE_IRQHandler [WEAK] - EXPORT EXTI9_5_IRQHandler [WEAK] - EXPORT TIM1_BRK_IRQHandler [WEAK] - EXPORT TIM1_UP_IRQHandler [WEAK] - EXPORT TIM1_TRG_COM_IRQHandler [WEAK] - EXPORT TIM1_CC_IRQHandler [WEAK] - EXPORT TIM2_IRQHandler [WEAK] - EXPORT TIM3_IRQHandler [WEAK] - EXPORT TIM4_IRQHandler [WEAK] - EXPORT I2C1_EV_IRQHandler [WEAK] - EXPORT I2C1_ER_IRQHandler [WEAK] - EXPORT I2C2_EV_IRQHandler [WEAK] - EXPORT I2C2_ER_IRQHandler [WEAK] - EXPORT SPI1_IRQHandler [WEAK] - EXPORT SPI2_IRQHandler [WEAK] - EXPORT USART1_IRQHandler [WEAK] - EXPORT USART2_IRQHandler [WEAK] - EXPORT USART3_IRQHandler [WEAK] - EXPORT EXTI15_10_IRQHandler [WEAK] - EXPORT RTCAlarm_IRQHandler [WEAK] - EXPORT USBWakeUp_IRQHandler [WEAK] - -WWDG_IRQHandler -PVD_IRQHandler -TAMPER_IRQHandler -RTC_IRQHandler -FLASH_IRQHandler -RCC_IRQHandler -EXTI0_IRQHandler -EXTI1_IRQHandler -EXTI2_IRQHandler -EXTI3_IRQHandler -EXTI4_IRQHandler -DMAChannel1_IRQHandler -DMAChannel2_IRQHandler -DMAChannel3_IRQHandler -DMAChannel4_IRQHandler -DMAChannel5_IRQHandler -DMAChannel6_IRQHandler -DMAChannel7_IRQHandler -ADC_IRQHandler -USB_HP_CAN_TX_IRQHandler -USB_LP_CAN_RX0_IRQHandler -CAN_RX1_IRQHandler -CAN_SCE_IRQHandler -EXTI9_5_IRQHandler -TIM1_BRK_IRQHandler -TIM1_UP_IRQHandler -TIM1_TRG_COM_IRQHandler -TIM1_CC_IRQHandler -TIM2_IRQHandler -TIM3_IRQHandler -TIM4_IRQHandler -I2C1_EV_IRQHandler -I2C1_ER_IRQHandler -I2C2_EV_IRQHandler -I2C2_ER_IRQHandler -SPI1_IRQHandler -SPI2_IRQHandler -USART1_IRQHandler -USART2_IRQHandler -USART3_IRQHandler -EXTI15_10_IRQHandler -RTCAlarm_IRQHandler -USBWakeUp_IRQHandler - - B . - - ENDP - - - ALIGN - - -; User Initial Stack & Heap - - IF :DEF:__MICROLIB - - EXPORT __initial_sp - EXPORT __heap_base - EXPORT __heap_limit - - ELSE - - IMPORT __use_two_region_memory - EXPORT __user_initial_stackheap -__user_initial_stackheap - - LDR R0, = Heap_Mem - LDR R1, =(Stack_Mem + Stack_Size) - LDR R2, = (Heap_Mem + Heap_Size) - LDR R3, = Stack_Mem - BX LR - - ALIGN - - ENDIF - - - END diff --git a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/STM32F10x_Startup.s b/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/STM32F10x_Startup.s deleted file mode 100644 index 82c2386e4..000000000 --- a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/STM32F10x_Startup.s +++ /dev/null @@ -1,336 +0,0 @@ -/***************************************************************************** - * Copyright (c) 2007 Rowley Associates Limited. * - * * - * This file may be distributed under the terms of the License Agreement * - * provided with this software. * - * * - * THIS FILE IS PROVIDED AS IS WITH NO WARRANTY OF ANY KIND, INCLUDING THE * - * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. * - *****************************************************************************/ - -/***************************************************************************** - * Preprocessor Definitions - * ------------------------ - * - * STARTUP_FROM_RESET - * - * If defined, the program will startup from power-on/reset. If not defined - * the program will just loop endlessly from power-on/reset. - * - * This definition is not defined by default on this target because the - * debugger is unable to reset this target and maintain control of it over the - * JTAG interface. The advantage of doing this is that it allows the debugger - * to reset the CPU and run programs from a known reset CPU state on each run. - * It also acts as a safety net if you accidently download a program in FLASH - * that crashes and prevents the debugger from taking control over JTAG - * rendering the target unusable over JTAG. The obvious disadvantage of doing - * this is that your application will not startup without the debugger. - * - * We advise that on this target you keep STARTUP_FROM_RESET undefined whilst - * you are developing and only define STARTUP_FROM_RESET when development is - * complete. - * - *****************************************************************************/ - - .global reset_handler - - .section .vectors, "ax" - .code 16 - .align 0 - .global _vectors - -.macro DEFAULT_ISR_HANDLER name= - .thumb_func - .weak \name -\name: -1: b 1b /* endless loop */ -.endm - -.extern xPortPendSVHandler -.extern xPortSysTickHandler -.extern vPortSVCHandler -.extern vMAC_ISR; - -_vectors: - .word __stack_end__ -#ifdef STARTUP_FROM_RESET - .word reset_handler -#else - .word reset_wait -#endif /* STARTUP_FROM_RESET */ - .word NMIException - .word HardFaultException - .word MemManageException - .word BusFaultException - .word UsageFaultException - .word 0 // Reserved - .word 0 // Reserved - .word 0 // Reserved - .word 0 // Reserved - .word vPortSVCHandler - .word DebugMonitor - .word 0 // Reserved - .word xPortPendSVHandler - .word xPortSysTickHandler - .word WWDG_IRQHandler - .word PVD_IRQHandler - .word TAMPER_IRQHandler - .word RTC_IRQHandler - .word FLASH_IRQHandler - .word RCC_IRQHandler - .word EXTI0_IRQHandler - .word EXTI1_IRQHandler - .word EXTI2_IRQHandler - .word EXTI3_IRQHandler - .word EXTI4_IRQHandler - .word DMAChannel1_IRQHandler - .word DMAChannel2_IRQHandler - .word DMAChannel3_IRQHandler - .word DMAChannel4_IRQHandler - .word DMAChannel5_IRQHandler - .word DMAChannel6_IRQHandler - .word DMAChannel7_IRQHandler - .word ADC_IRQHandler - .word USB_HP_CAN_TX_IRQHandler - .word USB_LP_CAN_RX0_IRQHandler - .word CAN_RX1_IRQHandler - .word CAN_SCE_IRQHandler - .word EXTI9_5_IRQHandler - .word TIM1_BRK_IRQHandler - .word TIM1_UP_IRQHandler - .word TIM1_TRG_COM_IRQHandler - .word TIM1_CC_IRQHandler - .word TIM2_IRQHandler - .word TIM3_IRQHandler - .word TIM4_IRQHandler - .word I2C1_EV_IRQHandler - .word I2C1_ER_IRQHandler - .word I2C2_EV_IRQHandler - .word I2C2_ER_IRQHandler - .word SPI1_IRQHandler - .word SPI2_IRQHandler - .word USART1_IRQHandler - .word USART2_IRQHandler - .word USART3_IRQHandler - .word EXTI15_10_IRQHandler - .word RTCAlarm_IRQHandler - .word USBWakeUp_IRQHandler - .word TIM8_BRK_IRQHandler - .word TIM8_UP_IRQHandler - .word TIM8_TRG_COM_IRQHandler - .word TIM8_CC_IRQHandler - .word ADC3_IRQHandler - .word FSMC_IRQHandler - .word SDIO_IRQHandler - .word TIM5_IRQHandler - .word SPI3_IRQHandler - .word UART4_IRQHandler - .word UART5_IRQHandler - .word TIM6_IRQHandler - .word TIM7_IRQHandler - .word DMA2_Channel1_IRQHandler - .word DMA2_Channel2_IRQHandler - .word DMA2_Channel3_IRQHandler - .word DMA2_Channel4_5_IRQHandler - .word vMAC_ISR - .word vMAC_ISR - - .section .init, "ax" - .thumb_func - - reset_handler: -#ifndef __FLASH_BUILD - /* If this is a RAM build, configure vector table offset register to point - to the RAM vector table. */ - ldr r0, =0xE000ED08 - ldr r1, =_vectors - str r1, [r0] -#endif - b _start - -DEFAULT_ISR_HANDLER HardFaultException -DEFAULT_ISR_HANDLER NMIException -DEFAULT_ISR_HANDLER MemManageException -DEFAULT_ISR_HANDLER BusFaultException -DEFAULT_ISR_HANDLER UsageFaultException -DEFAULT_ISR_HANDLER SVCHandler -DEFAULT_ISR_HANDLER DebugMonitor -DEFAULT_ISR_HANDLER PendSV -DEFAULT_ISR_HANDLER SysTickHandler -DEFAULT_ISR_HANDLER WWDG_IRQHandler -DEFAULT_ISR_HANDLER PVD_IRQHandler -DEFAULT_ISR_HANDLER TAMPER_IRQHandler -DEFAULT_ISR_HANDLER RTC_IRQHandler -DEFAULT_ISR_HANDLER FLASH_IRQHandler -DEFAULT_ISR_HANDLER RCC_IRQHandler -DEFAULT_ISR_HANDLER EXTI0_IRQHandler -DEFAULT_ISR_HANDLER EXTI1_IRQHandler -DEFAULT_ISR_HANDLER EXTI2_IRQHandler -DEFAULT_ISR_HANDLER EXTI3_IRQHandler -DEFAULT_ISR_HANDLER EXTI4_IRQHandler -DEFAULT_ISR_HANDLER DMAChannel1_IRQHandler -DEFAULT_ISR_HANDLER DMAChannel2_IRQHandler -DEFAULT_ISR_HANDLER DMAChannel3_IRQHandler -DEFAULT_ISR_HANDLER DMAChannel4_IRQHandler -DEFAULT_ISR_HANDLER DMAChannel5_IRQHandler -DEFAULT_ISR_HANDLER DMAChannel6_IRQHandler -DEFAULT_ISR_HANDLER DMAChannel7_IRQHandler -DEFAULT_ISR_HANDLER ADC_IRQHandler -DEFAULT_ISR_HANDLER USB_HP_CAN_TX_IRQHandler -DEFAULT_ISR_HANDLER USB_LP_CAN_RX0_IRQHandler -DEFAULT_ISR_HANDLER CAN_RX1_IRQHandler -DEFAULT_ISR_HANDLER CAN_SCE_IRQHandler -DEFAULT_ISR_HANDLER EXTI9_5_IRQHandler -DEFAULT_ISR_HANDLER TIM1_BRK_IRQHandler -DEFAULT_ISR_HANDLER TIM1_UP_IRQHandler -DEFAULT_ISR_HANDLER TIM1_TRG_COM_IRQHandler -DEFAULT_ISR_HANDLER TIM1_CC_IRQHandler -DEFAULT_ISR_HANDLER TIM2_IRQHandler -DEFAULT_ISR_HANDLER TIM3_IRQHandler -DEFAULT_ISR_HANDLER TIM4_IRQHandler -DEFAULT_ISR_HANDLER I2C1_EV_IRQHandler -DEFAULT_ISR_HANDLER I2C1_ER_IRQHandler -DEFAULT_ISR_HANDLER I2C2_EV_IRQHandler -DEFAULT_ISR_HANDLER I2C2_ER_IRQHandler -DEFAULT_ISR_HANDLER SPI1_IRQHandler -DEFAULT_ISR_HANDLER SPI2_IRQHandler -DEFAULT_ISR_HANDLER USART1_IRQHandler -DEFAULT_ISR_HANDLER USART2_IRQHandler -DEFAULT_ISR_HANDLER USART3_IRQHandler -DEFAULT_ISR_HANDLER EXTI15_10_IRQHandler -DEFAULT_ISR_HANDLER RTCAlarm_IRQHandler -DEFAULT_ISR_HANDLER USBWakeUp_IRQHandler -DEFAULT_ISR_HANDLER TIM8_BRK_IRQHandler -DEFAULT_ISR_HANDLER TIM8_UP_IRQHandler -DEFAULT_ISR_HANDLER TIM8_TRG_COM_IRQHandler -DEFAULT_ISR_HANDLER TIM8_CC_IRQHandler -DEFAULT_ISR_HANDLER ADC3_IRQHandler -DEFAULT_ISR_HANDLER FSMC_IRQHandler -DEFAULT_ISR_HANDLER SDIO_IRQHandler -DEFAULT_ISR_HANDLER TIM5_IRQHandler -DEFAULT_ISR_HANDLER SPI3_IRQHandler -DEFAULT_ISR_HANDLER UART4_IRQHandler -DEFAULT_ISR_HANDLER UART5_IRQHandler -DEFAULT_ISR_HANDLER TIM6_IRQHandler -DEFAULT_ISR_HANDLER TIM7_IRQHandler -DEFAULT_ISR_HANDLER DMA2_Channel1_IRQHandler -DEFAULT_ISR_HANDLER DMA2_Channel2_IRQHandler -DEFAULT_ISR_HANDLER DMA2_Channel3_IRQHandler -DEFAULT_ISR_HANDLER DMA2_Channel4_5_IRQHandler - -#ifndef STARTUP_FROM_RESET -DEFAULT_ISR_HANDLER reset_wait -#endif /* STARTUP_FROM_RESET */ - - // STM32 library requires these - .global __WFI - .global __WFE - .global __SEV - .global __ISB - .global __DSB - .global __DMB - .global __SVC - .global __MRS_CONTROL - .global __MSR_CONTROL - .global __MRS_PSP - .global __MSR_PSP - .global __MRS_MSP - .global __MSR_MSP - .global __SETPRIMASK - .global __RESETPRIMASK - .global __SETFAULTMASK - .global __RESETFAULTMASK - .global __BASEPRICONFIG - .global __GetBASEPRI - .global __REV_HalfWord - .global __REV_Word - -.thumb_func -__WFI: - wfi - bx r14 -.thumb_func -__WFE: - wfe - bx r14 -.thumb_func -__SEV: - sev - bx r14 -.thumb_func -__ISB: - isb - bx r14 -.thumb_func -__DSB: - dsb - bx r14 -.thumb_func -__DMB: - dmb - bx r14 -.thumb_func -__SVC: - svc 0x01 - bx r14 -.thumb_func -__MRS_CONTROL: - mrs r0, control - bx r14 -.thumb_func -__MSR_CONTROL: - msr control, r0 - isb - bx r14 -.thumb_func -__MRS_PSP: - mrs r0, psp - bx r14 -.thumb_func -__MSR_PSP: - msr psp, r0 - bx r14 -.thumb_func -__MRS_MSP: - mrs r0, msp - bx r14 -.thumb_func -__MSR_MSP: - msr msp, r0 - bx r14 -.thumb_func -__SETPRIMASK: - cpsid i - bx r14 -.thumb_func -__RESETPRIMASK: - cpsie i - bx r14 -.thumb_func -__SETFAULTMASK: - cpsid f - bx r14 -.thumb_func -__RESETFAULTMASK: - cpsie f - bx r14 -.thumb_func -__BASEPRICONFIG: - msr basepri, r0 - bx r14 -.thumb_func -__GetBASEPRI: - mrs r0, basepri_max - bx r14 -.thumb_func -__REV_HalfWord: - rev16 r0, r0 - bx r14 -.thumb_func -__REV_Word: - rev r0, r0 - bx r14 - - - - diff --git a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/main.c b/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/main.c deleted file mode 100644 index 04e540693..000000000 --- a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/main.c +++ /dev/null @@ -1,381 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - - -/* - * Creates all the demo application tasks, then starts the scheduler. The WEB - * documentation provides more details of the standard demo application tasks - * (which just exist to test the kernel port and provide an example of how to use - * each FreeRTOS API function). - * - * In addition to the standard demo tasks, the following tasks and tests are - * defined and/or created within this file: - * - * "LCD" task - the LCD task is a 'gatekeeper' task. It is the only task that - * is permitted to access the display directly. Other tasks wishing to write a - * message to the LCD send the message on a queue to the LCD task instead of - * accessing the LCD themselves. The LCD task just blocks on the queue waiting - * for messages - waking and displaying the messages as they arrive. The use - * of a gatekeeper in this manner permits both tasks and interrupts to write to - * the LCD without worrying about mutual exclusion. This is demonstrated by the - * check hook (see below) which sends messages to the display even though it - * executes from an interrupt context. - * - * "Check" hook - This only executes fully every five seconds from the tick - * hook. Its main function is to check that all the standard demo tasks are - * still operational. Should any unexpected behaviour be discovered within a - * demo task then the tick hook will write an error to the LCD (via the LCD task). - * If all the demo tasks are executing with their expected behaviour then the - * check task writes PASS to the LCD (again via the LCD task), as described above. - * - * LED tasks - These just demonstrate how multiple instances of a single task - * definition can be created. Each LED task simply toggles an LED. The task - * parameter is used to pass the number of the LED to be toggled into the task. - * - * "uIP" task - This is the task that handles the uIP stack. All TCP/IP - * processing is performed in this task. - * - * "Fast Interrupt Test" - A high frequency periodic interrupt is generated - * using a free running timer to demonstrate the use of the - * configKERNEL_INTERRUPT_PRIORITY configuration constant. The interrupt - * service routine measures the number of processor clocks that occur between - * each interrupt - and in so doing measures the jitter in the interrupt timing. - * The maximum measured jitter time is latched in the ulMaxJitter variable, and - * displayed on the OLED display by the 'OLED' task as described below. The - * fast interrupt is configured and handled in the timertest.c source file. - * - */ - -/* Standard includes. */ -#include - -/* Scheduler includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "queue.h" -#include "semphr.h" - -/* Library includes. */ -#include "stm32f10x_it.h" -#include "stm32f10x_tim.h" -#include "STM3210D_lcd.h" - -/* Demo app includes. */ -#include "BlockQ.h" -#include "integer.h" -#include "flash.h" -#include "partest.h" -#include "semtest.h" -#include "PollQ.h" -#include "GenQTest.h" -#include "QPeek.h" -#include "recmutex.h" - - -/* The time between cycles of the 'check' functionality (defined within the -tick hook. */ -#define mainCHECK_DELAY ( ( TickType_t ) 5000 / portTICK_PERIOD_MS ) - -/* Task priorities. */ -#define mainQUEUE_POLL_PRIORITY ( tskIDLE_PRIORITY + 2 ) -#define mainSEM_TEST_PRIORITY ( tskIDLE_PRIORITY + 1 ) -#define mainBLOCK_Q_PRIORITY ( tskIDLE_PRIORITY + 2 ) -#define mainUIP_TASK_PRIORITY ( tskIDLE_PRIORITY + 3 ) -#define mainFLASH_TASK_PRIORITY ( tskIDLE_PRIORITY + 2 ) -#define mainLCD_TASK_PRIORITY ( tskIDLE_PRIORITY + 3 ) -#define mainINTEGER_TASK_PRIORITY ( tskIDLE_PRIORITY ) -#define mainGEN_QUEUE_TASK_PRIORITY ( tskIDLE_PRIORITY ) - -/* The WEB server has a larger stack as it utilises stack hungry string -handling library calls. */ -#define mainBASIC_WEB_STACK_SIZE ( configMINIMAL_STACK_SIZE * 4 ) - -/* The length of the queue used to send messages to the LCD task. */ -#define mainQUEUE_SIZE ( 3 ) - -/* The period of the system clock in nano seconds. This is used to calculate -the jitter time in nano seconds. */ -#define mainNS_PER_CLOCK ( ( unsigned long ) ( ( 1.0 / ( double ) configCPU_CLOCK_HZ ) * 1000000000.0 ) ) - -/*-----------------------------------------------------------*/ - -/* - * Configure the hardware for the demo. - */ -static void prvSetupHardware( void ); - -/* - * Very simple task that toggles an LED. - */ -static void prvLCDTask( void *pvparameters ); - -/* - * The task that handles the uIP stack. All TCP/IP processing is performed in - * this task. - */ -extern void vuIP_Task( void *pvParameters ); - -/* - * The LCD gatekeeper task as described in the comments at the top of this file. - * */ -static void prvLCDTask( void *pvParameters ); - -/* - * Configures the high frequency timers - those used to measure the timing - * jitter while the real time kernel is executing. - */ -extern void vSetupHighFrequencyTimer( void ); - -/*-----------------------------------------------------------*/ - -/* The queue used to send messages to the LCD task. */ -QueueHandle_t xLCDQueue; - -/*-----------------------------------------------------------*/ - -int main( void ) -{ -#ifdef DEBUG - debug(); -#endif - - prvSetupHardware(); - - /* Start the standard demo tasks. These are just here to exercise the - kernel port and provide examples of how the FreeRTOS API can be used. */ - vStartBlockingQueueTasks( mainBLOCK_Q_PRIORITY ); - vStartSemaphoreTasks( mainSEM_TEST_PRIORITY ); - vStartPolledQueueTasks( mainQUEUE_POLL_PRIORITY ); - vStartIntegerMathTasks( mainINTEGER_TASK_PRIORITY ); - vStartGenericQueueTasks( mainGEN_QUEUE_TASK_PRIORITY ); - vStartLEDFlashTasks( mainFLASH_TASK_PRIORITY ); - vStartQueuePeekTasks(); - vStartRecursiveMutexTasks(); - - /* Create the uIP task. The WEB server runs in this task. */ - xTaskCreate( vuIP_Task, "uIP", mainBASIC_WEB_STACK_SIZE, ( void * ) NULL, mainUIP_TASK_PRIORITY, NULL ); - - /* Create the queue used by the LCD task. Messages for display on the LCD - are received via this queue. */ - xLCDQueue = xQueueCreate( mainQUEUE_SIZE, sizeof( char * ) ); - - /* Start the LCD gatekeeper task - as described in the comments at the top - of this file. */ - xTaskCreate( prvLCDTask, "LCD", configMINIMAL_STACK_SIZE * 2, NULL, mainLCD_TASK_PRIORITY, NULL ); - - /* Configure the high frequency interrupt used to measure the interrupt - jitter time. When debugging it can be helpful to comment this line out - to prevent the debugger repeatedly going into the interrupt service - routine. */ - vSetupHighFrequencyTimer(); - - /* Start the scheduler. */ - vTaskStartScheduler(); - - /* Will only get here if there was insufficient memory to create the idle - task. The idle task is created within vTaskStartScheduler(). */ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -static void prvLCDTask( void *pvParameters ) -{ -unsigned char *pucMessage; -unsigned long ulLine = Line3; -const unsigned long ulLineHeight = 24; -static char cMsgBuf[ 30 ]; -extern unsigned short usMaxJitter; - - ( void ) pvParameters; - - /* The LCD gatekeeper task as described in the comments at the top of this - file. */ - - /* Initialise the LCD and display a startup message that includes the - configured IP address. */ - STM3210D_LCD_Init(); - LCD_Clear(White); - LCD_SetTextColor(Green); - LCD_DisplayStringLine( Line0, ( unsigned char * ) " www.FreeRTOS.org" ); - LCD_SetTextColor(Blue); - sprintf( cMsgBuf, " %d.%d.%d.%d", configIP_ADDR0, configIP_ADDR1, configIP_ADDR2, configIP_ADDR3 ); - LCD_DisplayStringLine( Line1, ( unsigned char * ) cMsgBuf ); - LCD_SetTextColor(Black); - - for( ;; ) - { - /* Wait for a message to arrive to be displayed. */ - xQueueReceive( xLCDQueue, &pucMessage, portMAX_DELAY ); - - /* Clear the current line of text. */ - LCD_ClearLine( ulLine ); - - /* Move on to the next line. */ - ulLine += ulLineHeight; - if( ulLine > Line9 ) - { - ulLine = Line3; - } - - /* Display the received text, and the max jitter value. */ - sprintf( cMsgBuf, "%s [%uns]", pucMessage, usMaxJitter * mainNS_PER_CLOCK ); - LCD_DisplayStringLine( ulLine, ( unsigned char * ) cMsgBuf ); - } -} -/*-----------------------------------------------------------*/ - -static void prvSetupHardware( void ) -{ - /* Start with the clocks in their expected state. */ - RCC_DeInit(); - - /* Enable HSE (high speed external clock). */ - RCC_HSEConfig( RCC_HSE_ON ); - - /* Wait till HSE is ready. */ - while( RCC_GetFlagStatus( RCC_FLAG_HSERDY ) == RESET ) - { - } - - /* 2 wait states required on the flash. */ - *( ( unsigned long * ) 0x40022000 ) = 0x02; - - /* HCLK = SYSCLK */ - RCC_HCLKConfig( RCC_SYSCLK_Div1 ); - - /* PCLK2 = HCLK */ - RCC_PCLK2Config( RCC_HCLK_Div1 ); - - /* PCLK1 = HCLK/2 */ - RCC_PCLK1Config( RCC_HCLK_Div2 ); - - /* PLLCLK = (25MHz / 2 ) * 5 = 62.5 MHz. */ - RCC_PLLConfig( RCC_PLLSource_HSE_Div2, RCC_PLLMul_5 ); - - /* Enable PLL. */ - RCC_PLLCmd( ENABLE ); - - /* Wait till PLL is ready. */ - while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET) - { - } - - /* Select PLL as system clock source. */ - RCC_SYSCLKConfig( RCC_SYSCLKSource_PLLCLK ); - - /* Wait till PLL is used as system clock source. */ - while( RCC_GetSYSCLKSource() != 0x08 ) - { - } - - /* Enable GPIOA, GPIOB, GPIOC, GPIOD, GPIOE and AFIO clocks */ - RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB |RCC_APB2Periph_GPIOC - | RCC_APB2Periph_GPIOD | RCC_APB2Periph_GPIOE | RCC_APB2Periph_AFIO, ENABLE ); - - /* Set the Vector Table base address at 0x08000000 */ - NVIC_SetVectorTable( NVIC_VectTab_FLASH, 0x0 ); - - NVIC_PriorityGroupConfig( NVIC_PriorityGroup_4 ); - - /* Configure HCLK clock as SysTick clock source. */ - SysTick_CLKSourceConfig( SysTick_CLKSource_HCLK ); - - /* Initialise the IO used for the LED outputs. */ - vParTestInitialise(); -} -/*-----------------------------------------------------------*/ - -void vApplicationStackOverflowHook( TaskHandle_t pxTask, char *pcTaskName ) -{ - /* This function will get called if a task overflows its stack. If the - parameters are corrupt then inspect pxCurrentTCB to find which was the - offending task. */ - - ( void ) pxTask; - ( void ) pcTaskName; - - for( ;; ); -} -/*-----------------------------------------------------------*/ - -void vApplicationTickHook( void ) -{ -char *pcMessage = "Status: PASS"; -static unsigned long ulTicksSinceLastDisplay = 0; -portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE; - - /* Called from every tick interrupt as described in the comments at the top - of this file. - - Have enough ticks passed to make it time to perform our health status - check again? */ - ulTicksSinceLastDisplay++; - if( ulTicksSinceLastDisplay >= mainCHECK_DELAY ) - { - /* Reset the counter so these checks run again in mainCHECK_DELAY - ticks time. */ - ulTicksSinceLastDisplay = 0; - - /* Has an error been found in any task? */ - if( xAreGenericQueueTasksStillRunning() != pdTRUE ) - { - pcMessage = "ERROR: GEN Q"; - } - else if( xAreQueuePeekTasksStillRunning() != pdTRUE ) - { - pcMessage = "ERROR: PEEK Q"; - } - else if( xAreBlockingQueuesStillRunning() != pdTRUE ) - { - pcMessage = "ERROR: BLOCK Q"; - } - else if( xAreSemaphoreTasksStillRunning() != pdTRUE ) - { - pcMessage = "ERROR: SEMAPHR"; - } - else if( xArePollingQueuesStillRunning() != pdTRUE ) - { - pcMessage = "ERROR: POLL Q"; - } - else if( xAreIntegerMathsTaskStillRunning() != pdTRUE ) - { - pcMessage = "ERROR: INT MATH"; - } - else if( xAreRecursiveMutexTasksStillRunning() != pdTRUE ) - { - pcMessage = "ERROR: REC MUTEX"; - } - - /* Send the message to the OLED gatekeeper for display. The - xHigherPriorityTaskWoken parameter is not actually used here - as this function is running in the tick interrupt anyway - but - it must still be supplied. */ - xHigherPriorityTaskWoken = pdFALSE; - xQueueSendFromISR( xLCDQueue, &pcMessage, &xHigherPriorityTaskWoken ); - } -} -/*-----------------------------------------------------------*/ diff --git a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/printf-stdarg.c b/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/printf-stdarg.c deleted file mode 100644 index b5ac41be7..000000000 --- a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/printf-stdarg.c +++ /dev/null @@ -1,293 +0,0 @@ -/* - Copyright 2001, 2002 Georges Menie (www.menie.org) - stdarg version contributed by Christian Ettinger - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU Lesser General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -*/ - -/* - putchar is the only external dependency for this file, - if you have a working putchar, leave it commented out. - If not, uncomment the define below and - replace outbyte(c) by your own function call. - -*/ - -#define putchar(c) c - -#include - -static void printchar(char **str, int c) -{ - //extern int putchar(int c); - - if (str) { - **str = (char)c; - ++(*str); - } - else - { - (void)putchar(c); - } -} - -#define PAD_RIGHT 1 -#define PAD_ZERO 2 - -static int prints(char **out, const char *string, int width, int pad) -{ - register int pc = 0, padchar = ' '; - - if (width > 0) { - register int len = 0; - register const char *ptr; - for (ptr = string; *ptr; ++ptr) ++len; - if (len >= width) width = 0; - else width -= len; - if (pad & PAD_ZERO) padchar = '0'; - } - if (!(pad & PAD_RIGHT)) { - for ( ; width > 0; --width) { - printchar (out, padchar); - ++pc; - } - } - for ( ; *string ; ++string) { - printchar (out, *string); - ++pc; - } - for ( ; width > 0; --width) { - printchar (out, padchar); - ++pc; - } - - return pc; -} - -/* the following should be enough for 32 bit int */ -#define PRINT_BUF_LEN 12 - -static int printi(char **out, int i, int b, int sg, int width, int pad, int letbase) -{ - char print_buf[PRINT_BUF_LEN]; - register char *s; - register int t, neg = 0, pc = 0; - register unsigned int u = (unsigned int)i; - - if (i == 0) { - print_buf[0] = '0'; - print_buf[1] = '\0'; - return prints (out, print_buf, width, pad); - } - - if (sg && b == 10 && i < 0) { - neg = 1; - u = (unsigned int)-i; - } - - s = print_buf + PRINT_BUF_LEN-1; - *s = '\0'; - - while (u) { - t = (unsigned int)u % b; - if( t >= 10 ) - t += letbase - '0' - 10; - *--s = (char)(t + '0'); - u /= b; - } - - if (neg) { - if( width && (pad & PAD_ZERO) ) { - printchar (out, '-'); - ++pc; - --width; - } - else { - *--s = '-'; - } - } - - return pc + prints (out, s, width, pad); -} - -static int print( char **out, const char *format, va_list args ) -{ - register int width, pad; - register int pc = 0; - char scr[2]; - - for (; *format != 0; ++format) { - if (*format == '%') { - ++format; - width = pad = 0; - if (*format == '\0') break; - if (*format == '%') goto out; - if (*format == '-') { - ++format; - pad = PAD_RIGHT; - } - while (*format == '0') { - ++format; - pad |= PAD_ZERO; - } - for ( ; *format >= '0' && *format <= '9'; ++format) { - width *= 10; - width += *format - '0'; - } - if( *format == 's' ) { - register char *s = (char *)va_arg( args, int ); - pc += prints (out, s?s:"(null)", width, pad); - continue; - } - if( *format == 'd' ) { - pc += printi (out, va_arg( args, int ), 10, 1, width, pad, 'a'); - continue; - } - if( *format == 'x' ) { - pc += printi (out, va_arg( args, int ), 16, 0, width, pad, 'a'); - continue; - } - if( *format == 'X' ) { - pc += printi (out, va_arg( args, int ), 16, 0, width, pad, 'A'); - continue; - } - if( *format == 'u' ) { - pc += printi (out, va_arg( args, int ), 10, 0, width, pad, 'a'); - continue; - } - if( *format == 'c' ) { - /* char are converted to int then pushed on the stack */ - scr[0] = (char)va_arg( args, int ); - scr[1] = '\0'; - pc += prints (out, scr, width, pad); - continue; - } - } - else { - out: - printchar (out, *format); - ++pc; - } - } - if (out) **out = '\0'; - va_end( args ); - return pc; -} - -int printf(const char *format, ...) -{ - va_list args; - - va_start( args, format ); - return print( 0, format, args ); -} - -int sprintf(char *out, const char *format, ...) -{ - va_list args; - - va_start( args, format ); - return print( &out, format, args ); -} - - -int snprintf( char *buf, unsigned int count, const char *format, ... ) -{ - va_list args; - - ( void ) count; - - va_start( args, format ); - return print( &buf, format, args ); -} - - -#ifdef TEST_PRINTF -int main(void) -{ - char *ptr = "Hello world!"; - char *np = 0; - int i = 5; - unsigned int bs = sizeof(int)*8; - int mi; - char buf[80]; - - mi = (1 << (bs-1)) + 1; - printf("%s\n", ptr); - printf("printf test\n"); - printf("%s is null pointer\n", np); - printf("%d = 5\n", i); - printf("%d = - max int\n", mi); - printf("char %c = 'a'\n", 'a'); - printf("hex %x = ff\n", 0xff); - printf("hex %02x = 00\n", 0); - printf("signed %d = unsigned %u = hex %x\n", -3, -3, -3); - printf("%d %s(s)%", 0, "message"); - printf("\n"); - printf("%d %s(s) with %%\n", 0, "message"); - sprintf(buf, "justif: \"%-10s\"\n", "left"); printf("%s", buf); - sprintf(buf, "justif: \"%10s\"\n", "right"); printf("%s", buf); - sprintf(buf, " 3: %04d zero padded\n", 3); printf("%s", buf); - sprintf(buf, " 3: %-4d left justif.\n", 3); printf("%s", buf); - sprintf(buf, " 3: %4d right justif.\n", 3); printf("%s", buf); - sprintf(buf, "-3: %04d zero padded\n", -3); printf("%s", buf); - sprintf(buf, "-3: %-4d left justif.\n", -3); printf("%s", buf); - sprintf(buf, "-3: %4d right justif.\n", -3); printf("%s", buf); - - return 0; -} - -/* - * if you compile this file with - * gcc -Wall $(YOUR_C_OPTIONS) -DTEST_PRINTF -c printf.c - * you will get a normal warning: - * printf.c:214: warning: spurious trailing `%' in format - * this line is testing an invalid % at the end of the format string. - * - * this should display (on 32bit int machine) : - * - * Hello world! - * printf test - * (null) is null pointer - * 5 = 5 - * -2147483647 = - max int - * char a = 'a' - * hex ff = ff - * hex 00 = 00 - * signed -3 = unsigned 4294967293 = hex fffffffd - * 0 message(s) - * 0 message(s) with % - * justif: "left " - * justif: " right" - * 3: 0003 zero padded - * 3: 3 left justif. - * 3: 3 right justif. - * -3: -003 zero padded - * -3: -3 left justif. - * -3: -3 right justif. - */ - -#endif - - -/* To keep linker happy. */ -int write( int i, char* c, int n) -{ - (void)i; - (void)n; - (void)c; - return 0; -} - diff --git a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/scsc.tmp b/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/scsc.tmp deleted file mode 100644 index b025e15bb..000000000 --- a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/scsc.tmp +++ /dev/null @@ -1,485 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* FreeRTOS includes. */ -#include "FreeRTOS.h" -#include "semphr.h" -#include "task.h" -#include "emac.h" - -/* Library includes. */ -#include "stm32fxxx_eth.h" -#include "stm32f10x_gpio.h" -#include "stm32f10x_rcc.h" -#include "stm32f10x_nvic.h" - -/*-----------------------------------------------------------*/ - -/* Hardware specifics. */ -#define uipRCC_MAC_CLOCK ( 1UL << 14UL ) -#define uipRCC_MAC_TX_CLOCK ( 1UL << 15UL ) -#define uipRCC_MAC_RX_CLOCK ( 1UL << 16UL ) -#define uipPHY_ADDRESS ( 1 ) -#define uipENET_IRQ_NUM ( 61 ) -#define uipMODE_MII ( 1UL << 23UL ) -#define uipREMAP_MAC_IO ( 1UL << 21UL ) - -/* The number of descriptors to chain together for use by the Rx DMA. */ -#define uipNUM_RX_DESCRIPTORS 4 - -/* The total number of buffers to be available. At most (?) there should be -one available for each Rx descriptor, one for current use, and one that is -in the process of being transmitted. */ -#define uipNUM_BUFFERS ( uipNUM_RX_DESCRIPTORS + 2 ) - -/* Each buffer is sized to fit an entire Ethernet packet. This is for -simplicity and speed, but could waste RAM. */ -#define uipMAX_PACKET_SIZE 1520 - -/* The field in the descriptor that is unused by this configuration is used to -hold the send count. This is just #defined to a meaningful name. */ -#define SendCount Buffer2NextDescAddr - -/* If no buffers are available, then wait this long before looking again.... */ -#define uipBUFFER_WAIT_DELAY ( 3 / portTICK_RATE_MS ) - -/* ...and don't look more than this many times. */ -#define uipBUFFER_WAIT_ATTEMPTS ( 30 ) - -/* Let the DMA know that a new descriptor has been made available to it. */ -#define prvRxDescriptorAvailable() ETH_DMA->DMARPDR = 0 - -/*-----------------------------------------------------------*/ - -/* - * Configure the IO for Ethernet use. - */ -static void prvSetupEthGPIO( void ); - -/* - * Return a pointer to an unused buffer, marking the returned buffer as now - * in use. - */ -static unsigned char *prvGetNextBuffer( void ); - -/*-----------------------------------------------------------*/ - -/* Allocate the Rx descriptors used by the DMA. */ -static ETH_DMADESCTypeDef xRxDescriptors[ uipNUM_RX_DESCRIPTORS ] __attribute__((aligned(4))); - -/* Allocate the descriptor used for transmitting. It might be that better -performance could be achieved by having more than one Tx descriptor, but -in this simple case only one is used. */ -static volatile ETH_DMADESCTypeDef xTxDescriptor __attribute__((aligned(4))); - -/* Buffers used for receiving and transmitting data. */ -static unsigned char ucMACBuffers[ uipNUM_BUFFERS ][ uipMAX_PACKET_SIZE ] __attribute__((aligned(4))); - -/* Each ucBufferInUse index corresponds to a position in the same index in the -ucMACBuffers array. If the index contains a 1 then the buffer within -ucMACBuffers is in use, if it contains a 0 then the buffer is free. */ -static unsigned char ucBufferInUse[ uipNUM_BUFFERS ] = { 0 }; - -/* Index to the Rx descriptor to inspect next when looking for a received -packet. */ -static unsigned long ulNextDescriptor; - -/* The uip_buffer is not a fixed array, but instead gets pointed to the buffers -allocated within this file. */ -extern unsigned char * uip_buf; - -/*-----------------------------------------------------------*/ - -portBASE_TYPE xEthInitialise( void ) -{ -static ETH_InitTypeDef xEthInit; /* Static so as not to take up too much stack space. */ -NVIC_InitTypeDef xNVICInit; -const unsigned char ucMACAddress[] = { configMAC_ADDR0, configMAC_ADDR1, configMAC_ADDR2, configMAC_ADDR3, configMAC_ADDR4, configMAC_ADDR5 }; -portBASE_TYPE xReturn; -unsigned long ul; - - /* Start with things in a safe known state. */ - ETH_DeInit(); - for( ul = 0; ul < uipNUM_RX_DESCRIPTORS; ul++ ) - { - ETH_DMARxDescReceiveITConfig( &( xRxDescriptors[ ul ] ), DISABLE ); - } - - /* Route clock to the peripheral. */ - RCC->AHBENR |= ( uipRCC_MAC_CLOCK | uipRCC_MAC_TX_CLOCK | uipRCC_MAC_RX_CLOCK ); - - /* Set the MAC address. */ - ETH_MACAddressConfig( ETH_MAC_Address0, ( unsigned char * ) ucMACAddress ); - - /* Use MII mode. */ - AFIO->MAPR &= ~( uipMODE_MII ); - - /* Configure all the GPIO as required for MAC/PHY interfacing. */ - prvSetupEthGPIO(); - - /* Reset the peripheral. */ - ETH_SoftwareReset(); - while( ETH_GetSoftwareResetStatus() == SET ); - - /* Initialise using the whopping big structure. Code space could be saved - by making this a const struct, however that would mean changes to the - structure within the library header files could break the code, so for now - just set everything manually at run time. */ - xEthInit.ETH_AutoNegotiation = ETH_AutoNegotiation_Enable; - xEthInit.ETH_Watchdog = ETH_Watchdog_Disable; - xEthInit.ETH_Jabber = ETH_Jabber_Disable; - xEthInit.ETH_JumboFrame = ETH_JumboFrame_Disable; - xEthInit.ETH_InterFrameGap = ETH_InterFrameGap_96Bit; - xEthInit.ETH_CarrierSense = ETH_CarrierSense_Enable; - xEthInit.ETH_Speed = ETH_Speed_10M; - xEthInit.ETH_ReceiveOwn = ETH_ReceiveOwn_Disable; - xEthInit.ETH_LoopbackMode = ETH_LoopbackMode_Disable; - xEthInit.ETH_Mode = ETH_Mode_HalfDuplex; - xEthInit.ETH_ChecksumOffload = ETH_ChecksumOffload_Disable; - xEthInit.ETH_RetryTransmission = ETH_RetryTransmission_Disable; - xEthInit.ETH_AutomaticPadCRCStrip = ETH_AutomaticPadCRCStrip_Disable; - xEthInit.ETH_BackOffLimit = ETH_BackOffLimit_10; - xEthInit.ETH_DeferralCheck = ETH_DeferralCheck_Disable; - xEthInit.ETH_ReceiveAll = ETH_ReceiveAll_Enable; - xEthInit.ETH_SourceAddrFilter = ETH_SourceAddrFilter_Disable; - xEthInit.ETH_PassControlFrames = ETH_PassControlFrames_ForwardPassedAddrFilter; - xEthInit.ETH_BroadcastFramesReception = ETH_BroadcastFramesReception_Disable; - xEthInit.ETH_DestinationAddrFilter = ETH_DestinationAddrFilter_Normal; - xEthInit.ETH_PromiscuousMode = ETH_PromiscuousMode_Disable; - xEthInit.ETH_MulticastFramesFilter = ETH_MulticastFramesFilter_Perfect; - xEthInit.ETH_UnicastFramesFilter = ETH_UnicastFramesFilter_Perfect; - xEthInit.ETH_HashTableHigh = 0x0; - xEthInit.ETH_HashTableLow = 0x0; - xEthInit.ETH_PauseTime = 0x0; - xEthInit.ETH_ZeroQuantaPause = ETH_ZeroQuantaPause_Disable; - xEthInit.ETH_PauseLowThreshold = ETH_PauseLowThreshold_Minus4; - xEthInit.ETH_UnicastPauseFrameDetect = ETH_UnicastPauseFrameDetect_Disable; - xEthInit.ETH_ReceiveFlowControl = ETH_ReceiveFlowControl_Disable; - xEthInit.ETH_TransmitFlowControl = ETH_TransmitFlowControl_Disable; - xEthInit.ETH_VLANTagComparison = ETH_VLANTagComparison_16Bit; - xEthInit.ETH_VLANTagIdentifier = 0x0; - xEthInit.ETH_DropTCPIPChecksumErrorFrame = ETH_DropTCPIPChecksumErrorFrame_Disable; - xEthInit.ETH_ReceiveStoreForward = ETH_ReceiveStoreForward_Enable; - xEthInit.ETH_FlushReceivedFrame = ETH_FlushReceivedFrame_Disable; - xEthInit.ETH_TransmitStoreForward = ETH_TransmitStoreForward_Enable; - xEthInit.ETH_TransmitThresholdControl = ETH_TransmitThresholdControl_64Bytes; - xEthInit.ETH_ForwardErrorFrames = ETH_ForwardErrorFrames_Disable; - xEthInit.ETH_ForwardUndersizedGoodFrames = ETH_ForwardUndersizedGoodFrames_Disable; - xEthInit.ETH_ReceiveThresholdControl = ETH_ReceiveThresholdControl_64Bytes; - xEthInit.ETH_SecondFrameOperate = ETH_SecondFrameOperate_Disable; - xEthInit.ETH_AddressAlignedBeats = ETH_AddressAlignedBeats_Enable; - xEthInit.ETH_FixedBurst = ETH_FixedBurst_Disable; - xEthInit.ETH_RxDMABurstLength = ETH_RxDMABurstLength_1Beat; - xEthInit.ETH_TxDMABurstLength = ETH_TxDMABurstLength_1Beat; - xEthInit.ETH_DescriptorSkipLength = 0x0; - xEthInit.ETH_DMAArbitration = ETH_DMAArbitration_RoundRobin_RxTx_1_1; - - xReturn = ETH_Init( &xEthInit, uipPHY_ADDRESS ); - - /* Check a link was established. */ - if( xReturn != pdFAIL ) - { - /* Rx and Tx interrupts are used. */ - ETH_DMAITConfig( ETH_DMA_IT_NIS | ETH_DMA_IT_R | ETH_DMA_IT_T, ENABLE ); - - /* Only a single Tx descriptor is used. For now it is set to use an Rx - buffer, but will get updated to point to where ever uip_buf is - pointing prior to its use. */ - ETH_DMATxDescChainInit( ( void * ) &xTxDescriptor, ( void * ) ucMACBuffers, 1 ); - ETH_DMARxDescChainInit( xRxDescriptors, ( void * ) ucMACBuffers, uipNUM_RX_DESCRIPTORS ); - for( ul = 0; ul < uipNUM_RX_DESCRIPTORS; ul++ ) - { - /* Ensure received data generates an interrupt. */ - ETH_DMARxDescReceiveITConfig( &( xRxDescriptors[ ul ] ), ENABLE ); - - /* Fix up the addresses used by the descriptors. - The way ETH_DMARxDescChainInit() is not compatible with the buffer - declarations in this file. */ - xRxDescriptors[ ul ].Buffer1Addr = ( unsigned long ) &( ucMACBuffers[ ul ][ 0 ] ); - - /* Mark the buffer used by this descriptor as in use. */ - ucBufferInUse[ ul ] = pdTRUE; - } - - /* When receiving data, start at the first descriptor. */ - ulNextDescriptor = 0; - - /* Initialise uip_buf to ensure it points somewhere valid. */ - uip_buf = prvGetNextBuffer(); - - /* SendCount must be initialised to 2 to ensure the Tx descriptor looks - as if its available (as if it has already been sent twice. */ - xTxDescriptor.SendCount = 2; - - /* Switch on the interrupts in the NVIC. */ - xNVICInit.NVIC_IRQChannel = uipENET_IRQ_NUM; - xNVICInit.NVIC_IRQChannelPreemptionPriority = configLIBRARY_KERNEL_INTERRUPT_PRIORITY; - xNVICInit.NVIC_IRQChannelSubPriority = 0; - xNVICInit.NVIC_IRQChannelCmd = ENABLE; - NVIC_Init( &xNVICInit ); - - /* Buffers and descriptors are all set up, now enable the MAC. */ - ETH_Start(); - - /* Let the DMA know there are Rx descriptors available. */ - prvRxDescriptorAvailable(); - } - - return xReturn; -} -/*-----------------------------------------------------------*/ - -static unsigned char *prvGetNextBuffer( void ) -{ -portBASE_TYPE x; -unsigned char *ucReturn = NULL; -unsigned long ulAttempts = 0; - - while( ucReturn == NULL ) - { - /* Look through the buffers to find one that is not in use by - anything else. */ - for( x = 0; x < uipNUM_BUFFERS; x++ ) - { - if( ucBufferInUse[ x ] == pdFALSE ) - { - ucBufferInUse[ x ] = pdTRUE; - ucReturn = &( ucMACBuffers[ x ][ 0 ] ); - break; - } - } - - /* Was a buffer found? */ - if( ucReturn == NULL ) - { - ulAttempts++; - - if( ulAttempts >= uipBUFFER_WAIT_ATTEMPTS ) - { - break; - } - - /* Wait then look again. */ - vTaskDelay( uipBUFFER_WAIT_DELAY ); - } - } - - return ucReturn; -} -/*-----------------------------------------------------------*/ - -unsigned short usGetMACRxData( void ) -{ -unsigned short usReturn; - - if( ( xRxDescriptors[ ulNextDescriptor ].Status & ETH_DMARxDesc_ES ) != 0 ) - { - /* Error in Rx. Discard the frame and give it back to the DMA. */ - xRxDescriptors[ ulNextDescriptor ].Status = ETH_DMARxDesc_OWN; - prvRxDescriptorAvailable(); - - /* No data to return. */ - usReturn = 0UL; - - /* Start from the next descriptor the next time this function is called. */ - ulNextDescriptor++; - if( ulNextDescriptor >= uipNUM_RX_DESCRIPTORS ) - { - ulNextDescriptor = 0UL; - } - } - else if( ( xRxDescriptors[ ulNextDescriptor ].Status & ETH_DMARxDesc_OWN ) == 0 ) - { - /* Mark the current buffer as free as uip_buf is going to be set to - the buffer that contains the received data. */ - vReturnBuffer( uip_buf ); - - /* Get the received data length from the top 2 bytes of the Status - word and the data itself. */ - usReturn = ( unsigned short ) ( ( xRxDescriptors[ ulNextDescriptor ].Status & ETH_DMARxDesc_FL ) >> 16UL ); - uip_buf = ( unsigned char * ) ( xRxDescriptors[ ulNextDescriptor ].Buffer1Addr ); - - /* Allocate a new buffer to the descriptor. */ - xRxDescriptors[ ulNextDescriptor ].Buffer1Addr = ( unsigned long ) prvGetNextBuffer(); - - /* Give the descriptor back to the DMA. */ - xRxDescriptors[ ulNextDescriptor ].Status = ETH_DMARxDesc_OWN; - prvRxDescriptorAvailable(); - - /* Start from the next descriptor the next time this function is called. */ - ulNextDescriptor++; - if( ulNextDescriptor >= uipNUM_RX_DESCRIPTORS ) - { - ulNextDescriptor = 0UL; - } - } - else - { - /* No received data at all. */ - usReturn = 0UL; - } - - return usReturn; -} -/*-----------------------------------------------------------*/ - -void vSendMACData( unsigned short usDataLen ) -{ -unsigned long ulAttempts = 0UL; - - /* Check to see if the Tx descriptor is free. The check against <2 is to - ensure the buffer has been sent twice and in so doing preventing a race - condition with the DMA on the ETH_DMATxDesc_OWN bit. */ - while( ( xTxDescriptor.SendCount < 2 ) && ( xTxDescriptor.Status & ETH_DMATxDesc_OWN ) == ETH_DMATxDesc_OWN ) - { - /* Wait for the Tx descriptor to become available. */ - vTaskDelay( uipBUFFER_WAIT_DELAY ); - - ulAttempts++; - if( ulAttempts > uipBUFFER_WAIT_ATTEMPTS ) - { - /* Something has gone wrong as the Tx descriptor is still in use. - Clear it down manually, the data it was sending will probably be - lost. */ - xTxDescriptor.Status &= ~ETH_DMATxDesc_OWN; - vReturnBuffer( ( unsigned char * ) xTxDescriptor.Buffer1Addr ); - break; - } - } - - /* Setup the Tx descriptor for transmission. */ - xTxDescriptor.SendCount = 0; - xTxDescriptor.Buffer1Addr = ( unsigned long ) uip_buf; - xTxDescriptor.ControlBufferSize = ( unsigned long ) usDataLen; - xTxDescriptor.Status = ETH_DMATxDesc_OWN | ETH_DMATxDesc_LS | ETH_DMATxDesc_FS | ETH_DMATxDesc_TER | ETH_DMATxDesc_TCH | ETH_DMATxDesc_IC; - ETH_DMA->DMASR = ETH_DMASR_TBUS; - ETH_DMA->DMATPDR = 0; - - /* uip_buf is being sent by the Tx descriptor. Allocate a new buffer. */ - uip_buf = prvGetNextBuffer(); -} -/*-----------------------------------------------------------*/ - -static void prvSetupEthGPIO( void ) -{ -GPIO_InitTypeDef xEthInit; - - /* Remap MAC IO. */ - AFIO->MAPR |= ( uipREMAP_MAC_IO ); - - /* Set PA2, PA8, PB5, PB8, PB11, PB12, PB13, PC1 and PC2 for Ethernet - interfacing. */ - xEthInit.GPIO_Pin = GPIO_Pin_2;/* | GPIO_Pin_8; This should be set when the 25MHz is generated by MCO. */ - xEthInit.GPIO_Speed = GPIO_Speed_50MHz; - xEthInit.GPIO_Mode = GPIO_Mode_AF_PP; - GPIO_Init( GPIOA, &xEthInit ); - - xEthInit.GPIO_Pin = GPIO_Pin_5 | GPIO_Pin_8 | GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_13; /*5*/ - GPIO_Init( GPIOB, &xEthInit ); - - xEthInit.GPIO_Pin = GPIO_Pin_1 | GPIO_Pin_2; - GPIO_Init( GPIOC, &xEthInit ); - - - /* Configure PA0, PA1, PA3, PB10, PC3, PD8, PD9, PD10, PD11 and PD12 as - inputs. */ - xEthInit.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_3; - xEthInit.GPIO_Mode = GPIO_Mode_IN_FLOATING; - GPIO_Init( GPIOA, &xEthInit ); - - xEthInit.GPIO_Pin = GPIO_Pin_10; - GPIO_Init( GPIOB, &xEthInit ); - - xEthInit.GPIO_Pin = GPIO_Pin_3; - GPIO_Init( GPIOC, &xEthInit ); - - xEthInit.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11 | GPIO_Pin_12; - GPIO_Init( GPIOD, &xEthInit ); -} -/*-----------------------------------------------------------*/ - -void vReturnBuffer( unsigned char *pucBuffer ) -{ -unsigned long ul; - - /* Mark a buffer as free for use. */ - for( ul = 0; ul < uipNUM_BUFFERS; ul++ ) - { - if( ucMACBuffers[ ul ] == pucBuffer ) - { - ucBufferInUse[ ul ] = pdFALSE; - break; - } - } -} -/*-----------------------------------------------------------*/ - -void vMAC_ISR( void ) -{ -unsigned long ulStatus; -extern xSemaphoreHandle xEMACSemaphore; -long xHigherPriorityTaskWoken = pdFALSE; - - /* What caused the interrupt? */ - ulStatus = ETH_DMA->DMASR; - - /* Clear everything before leaving. */ - ETH_DMA->DMASR = ulStatus; - - if( ulStatus & ETH_DMA_IT_R ) - { - /* Data was received. Ensure the uIP task is not blocked as data has - arrived. */ - xSemaphoreGiveFromISR( xEMACSemaphore, &xHigherPriorityTaskWoken ); - } - - if( ulStatus & ETH_DMA_IT_T ) - { - /* Data was transmitted. */ - if( xTxDescriptor.SendCount == 0 ) - { - /* Send again! */ - ( xTxDescriptor.SendCount )++; - - xTxDescriptor.Status = ETH_DMATxDesc_OWN | ETH_DMATxDesc_LS | ETH_DMATxDesc_FS | ETH_DMATxDesc_TER | ETH_DMATxDesc_TCH | ETH_DMATxDesc_IC; - ETH_DMA->DMASR = ETH_DMASR_TBUS; - ETH_DMA->DMATPDR = 0; - } - else - { - /* The Tx buffer is no longer required. */ - vReturnBuffer( ( unsigned char * ) xTxDescriptor.Buffer1Addr ); - } - } - - /* If xSemaphoreGiveFromISR() unblocked a task, and the unblocked task has - a higher priority than the currently executing task, then - xHigherPriorityTaskWoken will have been set to pdTRUE and this ISR should - return directly to the higher priority unblocked task. */ - portEND_SWITCHING_ISR( xHigherPriorityTaskWoken ); -} - diff --git a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/spi_flash.c b/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/spi_flash.c deleted file mode 100644 index b96cbff6e..000000000 --- a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/spi_flash.c +++ /dev/null @@ -1,498 +0,0 @@ -/******************** (C) COPYRIGHT 2007 STMicroelectronics ******************** -* File Name : spi_flash.c -* Author : MCD Application Team -* Date First Issued : 02/05/2007 -* Description : This file provides a set of functions needed to manage the -* communication between SPI peripheral and SPI M25P64 FLASH. -******************************************************************************** -* History: -* 04/02/2007: V0.2 -* 02/05/2007: V0.1 -******************************************************************************** -* THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS -* WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. -* AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, -* INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE -* CONTENT OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING -* INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. -*******************************************************************************/ - -/* Includes ------------------------------------------------------------------*/ -#include "spi_flash.h" - -/* Private typedef -----------------------------------------------------------*/ -#define SPI_FLASH_PageSize 256 - -#define WRITE 0x02 /* Write to Memory instruction */ -#define WRSR 0x01 /* Write Status Register instruction */ -#define WREN 0x06 /* Write enable instruction */ - -#define READ 0x03 /* Read from Memory instruction */ -#define RDSR 0x05 /* Read Status Register instruction */ -#define RDID 0x9F /* Read identification */ -#define SE 0xD8 /* Sector Erase instruction */ -#define BE 0xC7 /* Bulk Erase instruction */ - -#define WIP_Flag 0x01 /* Write In Progress (WIP) flag */ - -#define Dummy_Byte 0xA5 - -/* Private define ------------------------------------------------------------*/ -/* Private macro -------------------------------------------------------------*/ -/* Private variables ---------------------------------------------------------*/ -/* Private function prototypes -----------------------------------------------*/ -/* Private functions ---------------------------------------------------------*/ - -/******************************************************************************* -* Function Name : SPI_FLASH_Init -* Description : Initializes the peripherals used by the SPI FLASH driver. -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void SPI_FLASH_Init(void) -{ - SPI_InitTypeDef SPI_InitStructure; - GPIO_InitTypeDef GPIO_InitStructure; - - /* Enable SPI1 and GPIOA clocks */ - RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1 | RCC_APB2Periph_GPIOA, ENABLE); - - /* Configure SPI1 pins: NSS, SCK, MISO and MOSI */ - GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7; - GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; - GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; - GPIO_Init(GPIOA, &GPIO_InitStructure); - - /* Configure PA.4 as Output push-pull, used as Flash Chip select */ - GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4; - GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; - GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; - GPIO_Init(GPIOA, &GPIO_InitStructure); - - /* Deselect the FLASH: Chip Select high */ - SPI_FLASH_ChipSelect(High); - - /* SPI1 configuration */ - SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex; - SPI_InitStructure.SPI_Mode = SPI_Mode_Master; - SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b; - SPI_InitStructure.SPI_CPOL = SPI_CPOL_High; - SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge; - SPI_InitStructure.SPI_NSS = SPI_NSS_Soft; - SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_4; - SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB; - SPI_InitStructure.SPI_CRCPolynomial = 7; - SPI_Init(SPI1, &SPI_InitStructure); - - /* Enable SPI1 */ - SPI_Cmd(SPI1, ENABLE); -} - -/******************************************************************************* -* Function Name : SPI_FLASH_SectorErase -* Description : Erases the specified FLASH sector. -* Input : SectorAddr: address of the sector to erase. -* Output : None -* Return : None -*******************************************************************************/ -void SPI_FLASH_SectorErase(u32 SectorAddr) -{ - /* Send write enable instruction */ - SPI_FLASH_WriteEnable(); - - /* Sector Erase */ - /* Select the FLASH: Chip Select low */ - SPI_FLASH_ChipSelect(Low); - /* Send Sector Erase instruction */ - SPI_FLASH_SendByte(SE); - /* Send SectorAddr high nibble address byte */ - SPI_FLASH_SendByte((SectorAddr & 0xFF0000) >> 16); - /* Send SectorAddr medium nibble address byte */ - SPI_FLASH_SendByte((SectorAddr & 0xFF00) >> 8); - /* Send SectorAddr low nibble address byte */ - SPI_FLASH_SendByte(SectorAddr & 0xFF); - /* Deselect the FLASH: Chip Select high */ - SPI_FLASH_ChipSelect(High); - - /* Wait the end of Flash writing */ - SPI_FLASH_WaitForWriteEnd(); -} - -/******************************************************************************* -* Function Name : SPI_FLASH_BulkErase -* Description : Erases the entire FLASH. -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void SPI_FLASH_BulkErase(void) -{ - /* Send write enable instruction */ - SPI_FLASH_WriteEnable(); - - /* Bulk Erase */ - /* Select the FLASH: Chip Select low */ - SPI_FLASH_ChipSelect(Low); - /* Send Bulk Erase instruction */ - SPI_FLASH_SendByte(BE); - /* Deselect the FLASH: Chip Select high */ - SPI_FLASH_ChipSelect(High); - - /* Wait the end of Flash writing */ - SPI_FLASH_WaitForWriteEnd(); -} - -/******************************************************************************* -* Function Name : SPI_FLASH_PageWrite -* Description : Writes more than one byte to the FLASH with a single WRITE -* cycle(Page WRITE sequence). The number of byte can't exceed -* the FLASH page size. -* Input : - pBuffer : pointer to the buffer containing the data to be -* written to the FLASH. -* - WriteAddr : FLASH's internal address to write to. -* - NumByteToWrite : number of bytes to write to the FLASH, -* must be equal or less than "SPI_FLASH_PageSize" value. -* Output : None -* Return : None -*******************************************************************************/ -void SPI_FLASH_PageWrite(u8* pBuffer, u32 WriteAddr, u16 NumByteToWrite) -{ - /* Enable the write access to the FLASH */ - SPI_FLASH_WriteEnable(); - - /* Select the FLASH: Chip Select low */ - SPI_FLASH_ChipSelect(Low); - /* Send "Write to Memory " instruction */ - SPI_FLASH_SendByte(WRITE); - /* Send WriteAddr high nibble address byte to write to */ - SPI_FLASH_SendByte((WriteAddr & 0xFF0000) >> 16); - /* Send WriteAddr medium nibble address byte to write to */ - SPI_FLASH_SendByte((WriteAddr & 0xFF00) >> 8); - /* Send WriteAddr low nibble address byte to write to */ - SPI_FLASH_SendByte(WriteAddr & 0xFF); - - /* while there is data to be written on the FLASH */ - while(NumByteToWrite--) - { - /* Send the current byte */ - SPI_FLASH_SendByte(*pBuffer); - /* Point on the next byte to be written */ - pBuffer++; - } - - /* Deselect the FLASH: Chip Select high */ - SPI_FLASH_ChipSelect(High); - - /* Wait the end of Flash writing */ - SPI_FLASH_WaitForWriteEnd(); -} - -/******************************************************************************* -* Function Name : SPI_FLASH_BufferWrite -* Description : Writes block of data to the FLASH. In this function, the -* number of WRITE cycles are reduced, using Page WRITE sequence. -* Input : - pBuffer : pointer to the buffer containing the data to be -* written to the FLASH. -* - WriteAddr : FLASH's internal address to write to. -* - NumByteToWrite : number of bytes to write to the FLASH. -* Output : None -* Return : None -*******************************************************************************/ -void SPI_FLASH_BufferWrite(u8* pBuffer, u32 WriteAddr, u16 NumByteToWrite) -{ - u8 NumOfPage = 0, NumOfSingle = 0, Addr = 0, count = 0, temp = 0; - - Addr = WriteAddr % SPI_FLASH_PageSize; - count = SPI_FLASH_PageSize - Addr; - NumOfPage = NumByteToWrite / SPI_FLASH_PageSize; - NumOfSingle = NumByteToWrite % SPI_FLASH_PageSize; - - if(Addr == 0) /* WriteAddr is SPI_FLASH_PageSize aligned */ - { - if(NumOfPage == 0) /* NumByteToWrite < SPI_FLASH_PageSize */ - { - SPI_FLASH_PageWrite(pBuffer, WriteAddr, NumByteToWrite); - } - else /* NumByteToWrite > SPI_FLASH_PageSize */ - { - while(NumOfPage--) - { - SPI_FLASH_PageWrite(pBuffer, WriteAddr, SPI_FLASH_PageSize); - WriteAddr += SPI_FLASH_PageSize; - pBuffer += SPI_FLASH_PageSize; - } - - SPI_FLASH_PageWrite(pBuffer, WriteAddr, NumOfSingle); - } - } - else /* WriteAddr is not SPI_FLASH_PageSize aligned */ - { - if(NumOfPage== 0) /* NumByteToWrite < SPI_FLASH_PageSize */ - { - if(NumOfSingle > count) /* (NumByteToWrite + WriteAddr) > SPI_FLASH_PageSize */ - { - temp = NumOfSingle - count; - - SPI_FLASH_PageWrite(pBuffer, WriteAddr, count); - WriteAddr += count; - pBuffer += count; - - SPI_FLASH_PageWrite(pBuffer, WriteAddr, temp); - } - else - { - SPI_FLASH_PageWrite(pBuffer, WriteAddr, NumByteToWrite); - } - } - else /* NumByteToWrite > SPI_FLASH_PageSize */ - { - NumByteToWrite -= count; - NumOfPage = NumByteToWrite / SPI_FLASH_PageSize; - NumOfSingle = NumByteToWrite % SPI_FLASH_PageSize; - - SPI_FLASH_PageWrite(pBuffer, WriteAddr, count); - WriteAddr += count; - pBuffer += count; - - while(NumOfPage--) - { - SPI_FLASH_PageWrite(pBuffer, WriteAddr, SPI_FLASH_PageSize); - WriteAddr += SPI_FLASH_PageSize; - pBuffer += SPI_FLASH_PageSize; - } - - if(NumOfSingle != 0) - { - SPI_FLASH_PageWrite(pBuffer, WriteAddr, NumOfSingle); - } - } - } -} - -/******************************************************************************* -* Function Name : SPI_FLASH_BufferRead -* Description : Reads a block of data from the FLASH. -* Input : - pBuffer : pointer to the buffer that receives the data read -* from the FLASH. -* - ReadAddr : FLASH's internal address to read from. -* - NumByteToRead : number of bytes to read from the FLASH. -* Output : None -* Return : None -*******************************************************************************/ -void SPI_FLASH_BufferRead(u8* pBuffer, u32 ReadAddr, u16 NumByteToRead) -{ - /* Select the FLASH: Chip Select low */ - SPI_FLASH_ChipSelect(Low); - - /* Send "Read from Memory " instruction */ - SPI_FLASH_SendByte(READ); - - /* Send ReadAddr high nibble address byte to read from */ - SPI_FLASH_SendByte((ReadAddr & 0xFF0000) >> 16); - /* Send ReadAddr medium nibble address byte to read from */ - SPI_FLASH_SendByte((ReadAddr& 0xFF00) >> 8); - /* Send ReadAddr low nibble address byte to read from */ - SPI_FLASH_SendByte(ReadAddr & 0xFF); - - while(NumByteToRead--) /* while there is data to be read */ - { - /* Read a byte from the FLASH */ - *pBuffer = SPI_FLASH_SendByte(Dummy_Byte); - /* Point to the next location where the byte read will be saved */ - pBuffer++; - } - - /* Deselect the FLASH: Chip Select high */ - SPI_FLASH_ChipSelect(High); -} - -/******************************************************************************* -* Function Name : SPI_FLASH_ReadID -* Description : Reads FLASH identification. -* Input : None -* Output : None -* Return : FLASH identification -*******************************************************************************/ -u32 SPI_FLASH_ReadID(void) -{ - u32 Temp = 0, Temp0 = 0, Temp1 = 0, Temp2 = 0; - - /* Select the FLASH: Chip Select low */ - SPI_FLASH_ChipSelect(Low); - - /* Send "RDID " instruction */ - SPI_FLASH_SendByte(0x9F); - - /* Read a byte from the FLASH */ - Temp0 = SPI_FLASH_SendByte(Dummy_Byte); - - /* Read a byte from the FLASH */ - Temp1 = SPI_FLASH_SendByte(Dummy_Byte); - - /* Read a byte from the FLASH */ - Temp2 = SPI_FLASH_SendByte(Dummy_Byte); - - /* Deselect the FLASH: Chip Select high */ - SPI_FLASH_ChipSelect(High); - - Temp = (Temp0 << 16) | (Temp1 << 8) | Temp2; - - return Temp; -} - -/******************************************************************************* -* Function Name : SPI_FLASH_StartReadSequence -* Description : Initiates a read data byte (READ) sequence from the Flash. -* This is done by driving the /CS line low to select the device, -* then the READ instruction is transmitted followed by 3 bytes -* address. This function exit and keep the /CS line low, so the -* Flash still being selected. With this technique the whole -* content of the Flash is read with a single READ instruction. -* Input : - ReadAddr : FLASH's internal address to read from. -* Output : None -* Return : None -*******************************************************************************/ -void SPI_FLASH_StartReadSequence(u32 ReadAddr) -{ - /* Select the FLASH: Chip Select low */ - SPI_FLASH_ChipSelect(Low); - - /* Send "Read from Memory " instruction */ - SPI_FLASH_SendByte(READ); - -/* Send the 24-bit address of the address to read from -----------------------*/ - /* Send ReadAddr high nibble address byte */ - SPI_FLASH_SendByte((ReadAddr & 0xFF0000) >> 16); - /* Send ReadAddr medium nibble address byte */ - SPI_FLASH_SendByte((ReadAddr& 0xFF00) >> 8); - /* Send ReadAddr low nibble address byte */ - SPI_FLASH_SendByte(ReadAddr & 0xFF); -} - -/******************************************************************************* -* Function Name : SPI_FLASH_ReadByte -* Description : Reads a byte from the SPI Flash. -* This function must be used only if the Start_Read_Sequence -* function has been previously called. -* Input : None -* Output : None -* Return : Byte Read from the SPI Flash. -*******************************************************************************/ -u8 SPI_FLASH_ReadByte(void) -{ - return (SPI_FLASH_SendByte(Dummy_Byte)); -} - -/******************************************************************************* -* Function Name : SPI_FLASH_ChipSelect -* Description : Selects or deselects the FLASH. -* Input : State : level to be applied on the FLASH's ChipSelect pin. -* Output : None -* Return : None -*******************************************************************************/ -void SPI_FLASH_ChipSelect(u8 State) -{ - /* Set High or low the chip select line on PA.4 pin */ - GPIO_WriteBit(GPIOA, GPIO_Pin_4, (BitAction)State); -} - -/******************************************************************************* -* Function Name : SPI_FLASH_SendByte -* Description : Sends a byte through the SPI interface and return the byte -* received from the SPI bus. -* Input : byte : byte to send. -* Output : None -* Return : The value of the received byte. -*******************************************************************************/ -u8 SPI_FLASH_SendByte(u8 byte) -{ - /* Loop while DR register in not emplty */ - while(SPI_GetFlagStatus(SPI1, SPI_FLAG_TXE) == RESET); - - /* Send byte through the SPI1 peripheral */ - SPI_SendData(SPI1, byte); - - /* Wait to receive a byte */ - while(SPI_GetFlagStatus(SPI1, SPI_FLAG_RXNE) == RESET); - - /* Return the byte read from the SPI bus */ - return SPI_ReceiveData(SPI1); -} - -/******************************************************************************* -* Function Name : SPI_FLASH_SendHalfWord -* Description : Sends a Half Word through the SPI interface and return the -* Half Word received from the SPI bus. -* Input : Half Word : Half Word to send. -* Output : None -* Return : The value of the received Half Word. -*******************************************************************************/ -u16 SPI_FLASH_SendHalfWord(u16 HalfWord) -{ - /* Loop while DR register in not emplty */ - while(SPI_GetFlagStatus(SPI1, SPI_FLAG_TXE) == RESET); - - /* Send Half Word through the SPI1 peripheral */ - SPI_SendData(SPI1, HalfWord); - - /* Wait to receive a Half Word */ - while(SPI_GetFlagStatus(SPI1, SPI_FLAG_RXNE) == RESET); - - /* Return the Half Word read from the SPI bus */ - return SPI_ReceiveData(SPI1); -} - -/******************************************************************************* -* Function Name : SPI_FLASH_WriteEnable -* Description : Enables the write access to the FLASH. -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void SPI_FLASH_WriteEnable(void) -{ - /* Select the FLASH: Chip Select low */ - SPI_FLASH_ChipSelect(Low); - - /* Send "Write Enable" instruction */ - SPI_FLASH_SendByte(WREN); - - /* Deselect the FLASH: Chip Select high */ - SPI_FLASH_ChipSelect(High); -} - -/******************************************************************************* -* Function Name : SPI_FLASH_WaitForWriteEnd -* Description : Polls the status of the Write In Progress (WIP) flag in the -* FLASH's status register and loop until write opertaion -* has completed. -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void SPI_FLASH_WaitForWriteEnd(void) -{ - u8 FLASH_Status = 0; - - /* Select the FLASH: Chip Select low */ - SPI_FLASH_ChipSelect(Low); - - /* Send "Read Status Register" instruction */ - SPI_FLASH_SendByte(RDSR); - - /* Loop as long as the memory is busy with a write cycle */ - do - { - - /* Send a dummy byte to generate the clock needed by the FLASH - and put the value of the status register in FLASH_Status variable */ - FLASH_Status = SPI_FLASH_SendByte(Dummy_Byte); - - } while((FLASH_Status & WIP_Flag) == SET); /* Write in progress */ - - /* Deselect the FLASH: Chip Select high */ - SPI_FLASH_ChipSelect(High); -} - -/******************* (C) COPYRIGHT 2007 STMicroelectronics *****END OF FILE****/ diff --git a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/stm32f10x.h b/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/stm32f10x.h deleted file mode 100644 index 68362cb4b..000000000 --- a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/stm32f10x.h +++ /dev/null @@ -1,7006 +0,0 @@ -/** - ****************************************************************************** - * @file stm32f10x.h - * @brief CMSIS Cortex-M3 Device Peripheral Access Layer Header File. - * This file contains all the peripheral register's definitions, bits - * definitions and memory mapping for STM32F10x High Density, Medium - * Density and Low Density devices. - * @author STMicroelectronics - MCD Application Team - * @version V3.0.0 - * @date 04/06/2009 - ****************************************************************************** - * - * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS - * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE - * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY - * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING - * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE - * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. - * - *

© COPYRIGHT 2009 STMicroelectronics

- ****************************************************************************** - */ - -/** @addtogroup CMSIS - * @{ - */ - -/** @addtogroup stm32f10x - * @{ - */ - -#ifndef __STM32F10x_H -#define __STM32F10x_H - -/** @addtogroup Library_configuration_section - * @{ - */ - -/* Uncomment the line below according to the target STM32 device used in your - application - */ - -#if !defined (STM32F10X_LD) && !defined (STM32F10X_MD) && !defined (STM32F10X_HD) - /* #define STM32F10X_LD */ /*!< STM32 Low density devices */ - /* #define STM32F10X_MD */ /*!< STM32 Medium density devices */ - #define STM32F10X_HD /*!< STM32 High density devices */ -#endif -/* Tip: To avoid modifying this file each time you need to switch between these - devices, you can define the device in your toolchain compiler preprocessor. - - - Low-density devices are STM32F101xx, STM32F102xx and STM32F103xx microcontrollers - where the Flash memory density ranges between 16 and 32 Kbytes. - - Medium-density devices are STM32F101xx, STM32F102xx and STM32F103xx microcontrollers - where the Flash memory density ranges between 64 and 128 Kbytes. - - High-density devices are STM32F101xx and STM32F103xx microcontrollers where - the Flash memory density ranges between 256 and 512 Kbytes. - */ - -#if !defined USE_STDPERIPH_DRIVER -/** - * @brief Comment the line below if you will not use the peripherals drivers. - In this case, these drivers will not be included and the application code will - be based on direct access to peripherals registers - */ - /*#define USE_STDPERIPH_DRIVER*/ -#endif - -/** - * @brief In the following line adjust the value of External High Speed oscillator (HSE) - used in your application - */ -#define HSE_Value ((uint32_t)25000000) /*!< Value of the External oscillator in Hz*/ -/** - * @brief In the following line adjust the External High Speed oscillator (HSE) Startup - Timeout value - */ -#define HSEStartUp_TimeOut ((uint16_t)0x0500) /*!< Time out for HSE start up */ - -#define HSI_Value ((uint32_t)8000000) /*!< Value of the Internal oscillator in Hz*/ - - -/*!< [31:16] STM32F10x Standard Peripheral Library main version */ -#define __STM32F10X_STDPERIPH_VERSION_MAIN (0x03) -/*!< [15:8] STM32F10x Standard Peripheral Library sub1 version */ -#define __STM32F10X_STDPERIPH_VERSION_SUB1 (0x00) -/*!< [7:0] STM32F10x Standard Peripheral Library sub2 version */ -#define __STM32F10X_STDPERIPH_VERSION_SUB2 (0x00) -/*!< STM32F10x Standard Peripheral Library version number */ -#define __STM32F10X_STDPERIPH_VERSION ((__STM32F10X_STDPERIPH_VERSION_MAIN << 16)\ - | (__STM32F10X_STDPERIPH_VERSION_SUB1 << 8)\ - | __STM32F10X_STDPERIPH_VERSION_SUB2) - -/** - * @} - */ - -/** @addtogroup Configuration_section_for_CMSIS - * @{ - */ - -/** - * @brief Configuration of the Cortex-M3 Processor and Core Peripherals - */ -#define __MPU_PRESENT 0 /*!< STM32 does not provide a MPU present or not */ -#define __NVIC_PRIO_BITS 4 /*!< STM32 uses 4 Bits for the Priority Levels */ -#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ - -/*!< Interrupt Number Definition */ -typedef enum IRQn -{ -/****** Cortex-M3 Processor Exceptions Numbers ***************************************************/ - NonMaskableInt_IRQn = -14, /*!< 2 Non Maskable Interrupt */ - MemoryManagement_IRQn = -12, /*!< 4 Cortex-M3 Memory Management Interrupt */ - BusFault_IRQn = -11, /*!< 5 Cortex-M3 Bus Fault Interrupt */ - UsageFault_IRQn = -10, /*!< 6 Cortex-M3 Usage Fault Interrupt */ - SVCall_IRQn = -5, /*!< 11 Cortex-M3 SV Call Interrupt */ - DebugMonitor_IRQn = -4, /*!< 12 Cortex-M3 Debug Monitor Interrupt */ - PendSV_IRQn = -2, /*!< 14 Cortex-M3 Pend SV Interrupt */ - SysTick_IRQn = -1, /*!< 15 Cortex-M3 System Tick Interrupt */ - -/****** STM32 specific Interrupt Numbers *********************************************************/ - WWDG_IRQn = 0, /*!< Window WatchDog Interrupt */ - PVD_IRQn = 1, /*!< PVD through EXTI Line detection Interrupt */ - TAMPER_IRQn = 2, /*!< Tamper Interrupt */ - RTC_IRQn = 3, /*!< RTC global Interrupt */ - FLASH_IRQn = 4, /*!< FLASH global Interrupt */ - RCC_IRQn = 5, /*!< RCC global Interrupt */ - EXTI0_IRQn = 6, /*!< EXTI Line0 Interrupt */ - EXTI1_IRQn = 7, /*!< EXTI Line1 Interrupt */ - EXTI2_IRQn = 8, /*!< EXTI Line2 Interrupt */ - EXTI3_IRQn = 9, /*!< EXTI Line3 Interrupt */ - EXTI4_IRQn = 10, /*!< EXTI Line4 Interrupt */ - DMA1_Channel1_IRQn = 11, /*!< DMA1 Channel 1 global Interrupt */ - DMA1_Channel2_IRQn = 12, /*!< DMA1 Channel 2 global Interrupt */ - DMA1_Channel3_IRQn = 13, /*!< DMA1 Channel 3 global Interrupt */ - DMA1_Channel4_IRQn = 14, /*!< DMA1 Channel 4 global Interrupt */ - DMA1_Channel5_IRQn = 15, /*!< DMA1 Channel 5 global Interrupt */ - DMA1_Channel6_IRQn = 16, /*!< DMA1 Channel 6 global Interrupt */ - DMA1_Channel7_IRQn = 17, /*!< DMA1 Channel 7 global Interrupt */ - ADC1_2_IRQn = 18, /*!< ADC1 et ADC2 global Interrupt */ - USB_HP_CAN1_TX_IRQn = 19, /*!< USB High Priority or CAN1 TX Interrupts */ - USB_LP_CAN1_RX0_IRQn = 20, /*!< USB Low Priority or CAN1 RX0 Interrupts */ - CAN1_RX1_IRQn = 21, /*!< CAN1 RX1 Interrupt */ - CAN1_SCE_IRQn = 22, /*!< CAN1 SCE Interrupt */ - EXTI9_5_IRQn = 23, /*!< External Line[9:5] Interrupts */ - TIM1_BRK_IRQn = 24, /*!< TIM1 Break Interrupt */ - TIM1_UP_IRQn = 25, /*!< TIM1 Update Interrupt */ - TIM1_TRG_COM_IRQn = 26, /*!< TIM1 Trigger and Commutation Interrupt */ - TIM1_CC_IRQn = 27, /*!< TIM1 Capture Compare Interrupt */ - TIM2_IRQn = 28, /*!< TIM2 global Interrupt */ - TIM3_IRQn = 29, /*!< TIM3 global Interrupt */ -#ifndef STM32F10X_LD - TIM4_IRQn = 30, /*!< TIM4 global Interrupt */ -#endif - I2C1_EV_IRQn = 31, /*!< I2C1 Event Interrupt */ - I2C1_ER_IRQn = 32, /*!< I2C1 Error Interrupt */ -#ifndef STM32F10X_LD - I2C2_EV_IRQn = 33, /*!< I2C2 Event Interrupt */ - I2C2_ER_IRQn = 34, /*!< I2C2 Error Interrupt */ -#endif - SPI1_IRQn = 35, /*!< SPI1 global Interrupt */ - SPI2_IRQn = 36, /*!< SPI2 global Interrupt */ - USART1_IRQn = 37, /*!< USART1 global Interrupt */ - USART2_IRQn = 38, /*!< USART2 global Interrupt */ -#ifndef STM32F10X_LD - USART3_IRQn = 39, /*!< USART3 global Interrupt */ -#endif - EXTI15_10_IRQn = 40, /*!< External Line[15:10] Interrupts */ - RTCAlarm_IRQn = 41, /*!< RTC Alarm through EXTI Line Interrupt */ - USBWakeUp_IRQn = 42, /*!< USB WakeUp from suspend through EXTI Line Interrupt */ -#ifdef STM32F10X_HD - TIM8_BRK_IRQn = 43, /*!< TIM8 Break Interrupt */ - TIM8_UP_IRQn = 44, /*!< TIM8 Update Interrupt */ - TIM8_TRG_COM_IRQn = 45, /*!< TIM8 Trigger and Commutation Interrupt */ - TIM8_CC_IRQn = 46, /*!< TIM8 Capture Compare Interrupt */ - ADC3_IRQn = 47, /*!< ADC3 global Interrupt */ - FSMC_IRQn = 48, /*!< FSMC global Interrupt */ - SDIO_IRQn = 49, /*!< SDIO global Interrupt */ - TIM5_IRQn = 50, /*!< TIM5 global Interrupt */ - SPI3_IRQn = 51, /*!< SPI3 global Interrupt */ - UART4_IRQn = 52, /*!< UART4 global Interrupt */ - UART5_IRQn = 53, /*!< UART5 global Interrupt */ - TIM6_IRQn = 54, /*!< TIM6 global Interrupt */ - TIM7_IRQn = 55, /*!< TIM7 global Interrupt */ - DMA2_Channel1_IRQn = 56, /*!< DMA2 Channel 1 global Interrupt */ - DMA2_Channel2_IRQn = 57, /*!< DMA2 Channel 2 global Interrupt */ - DMA2_Channel3_IRQn = 58, /*!< DMA2 Channel 3 global Interrupt */ - DMA2_Channel4_5_IRQn = 59 /*!< DMA2 Channel 4 and Channel 5 global Interrupt */ -#endif -} IRQn_Type; - -/** - * @} - */ - -#include "core_cm3.h" -#include "system_stm32f10x.h" -//#include - -/** @addtogroup Exported_types - * @{ - */ - -/*!< STM32F10x Standard Peripheral Library old types (maintained for legacy prupose) */ -typedef int32_t s32; -typedef int16_t s16; -typedef int8_t s8; - -typedef const int32_t sc32; /*!< Read Only */ -typedef const int16_t sc16; /*!< Read Only */ -typedef const int8_t sc8; /*!< Read Only */ - -typedef __IO int32_t vs32; -typedef __IO int16_t vs16; -typedef __IO int8_t vs8; - -typedef __I int32_t vsc32; /*!< Read Only */ -typedef __I int16_t vsc16; /*!< Read Only */ -typedef __I int8_t vsc8; /*!< Read Only */ - -typedef uint32_t u32; -typedef uint16_t u16; -typedef uint8_t u8; - -typedef const uint32_t uc32; /*!< Read Only */ -typedef const uint16_t uc16; /*!< Read Only */ -typedef const uint8_t uc8; /*!< Read Only */ - -typedef __IO uint32_t vu32; -typedef __IO uint16_t vu16; -typedef __IO uint8_t vu8; - -typedef __I uint32_t vuc32; /*!< Read Only */ -typedef __I uint16_t vuc16; /*!< Read Only */ -typedef __I uint8_t vuc8; /*!< Read Only */ - -typedef enum {FALSE = 0, TRUE = !FALSE} bool; - -typedef enum {RESET = 0, SET = !RESET} FlagStatus, ITStatus; - -typedef enum {DISABLE = 0, ENABLE = !DISABLE} FunctionalState; -#define IS_FUNCTIONAL_STATE(STATE) (((STATE) == DISABLE) || ((STATE) == ENABLE)) - -typedef enum {ERROR = 0, SUCCESS = !ERROR} ErrorStatus; - -/** - * @} - */ - -/** @addtogroup Peripheral_registers_structures - * @{ - */ - -/** - * @brief Analog to Digital Converter - */ - -typedef struct -{ - __IO uint32_t SR; - __IO uint32_t CR1; - __IO uint32_t CR2; - __IO uint32_t SMPR1; - __IO uint32_t SMPR2; - __IO uint32_t JOFR1; - __IO uint32_t JOFR2; - __IO uint32_t JOFR3; - __IO uint32_t JOFR4; - __IO uint32_t HTR; - __IO uint32_t LTR; - __IO uint32_t SQR1; - __IO uint32_t SQR2; - __IO uint32_t SQR3; - __IO uint32_t JSQR; - __IO uint32_t JDR1; - __IO uint32_t JDR2; - __IO uint32_t JDR3; - __IO uint32_t JDR4; - __IO uint32_t DR; -} ADC_TypeDef; - -/** - * @brief Backup Registers - */ - -typedef struct -{ - uint32_t RESERVED0; - __IO uint16_t DR1; - uint16_t RESERVED1; - __IO uint16_t DR2; - uint16_t RESERVED2; - __IO uint16_t DR3; - uint16_t RESERVED3; - __IO uint16_t DR4; - uint16_t RESERVED4; - __IO uint16_t DR5; - uint16_t RESERVED5; - __IO uint16_t DR6; - uint16_t RESERVED6; - __IO uint16_t DR7; - uint16_t RESERVED7; - __IO uint16_t DR8; - uint16_t RESERVED8; - __IO uint16_t DR9; - uint16_t RESERVED9; - __IO uint16_t DR10; - uint16_t RESERVED10; - __IO uint16_t RTCCR; - uint16_t RESERVED11; - __IO uint16_t CR; - uint16_t RESERVED12; - __IO uint16_t CSR; - uint16_t RESERVED13[5]; - __IO uint16_t DR11; - uint16_t RESERVED14; - __IO uint16_t DR12; - uint16_t RESERVED15; - __IO uint16_t DR13; - uint16_t RESERVED16; - __IO uint16_t DR14; - uint16_t RESERVED17; - __IO uint16_t DR15; - uint16_t RESERVED18; - __IO uint16_t DR16; - uint16_t RESERVED19; - __IO uint16_t DR17; - uint16_t RESERVED20; - __IO uint16_t DR18; - uint16_t RESERVED21; - __IO uint16_t DR19; - uint16_t RESERVED22; - __IO uint16_t DR20; - uint16_t RESERVED23; - __IO uint16_t DR21; - uint16_t RESERVED24; - __IO uint16_t DR22; - uint16_t RESERVED25; - __IO uint16_t DR23; - uint16_t RESERVED26; - __IO uint16_t DR24; - uint16_t RESERVED27; - __IO uint16_t DR25; - uint16_t RESERVED28; - __IO uint16_t DR26; - uint16_t RESERVED29; - __IO uint16_t DR27; - uint16_t RESERVED30; - __IO uint16_t DR28; - uint16_t RESERVED31; - __IO uint16_t DR29; - uint16_t RESERVED32; - __IO uint16_t DR30; - uint16_t RESERVED33; - __IO uint16_t DR31; - uint16_t RESERVED34; - __IO uint16_t DR32; - uint16_t RESERVED35; - __IO uint16_t DR33; - uint16_t RESERVED36; - __IO uint16_t DR34; - uint16_t RESERVED37; - __IO uint16_t DR35; - uint16_t RESERVED38; - __IO uint16_t DR36; - uint16_t RESERVED39; - __IO uint16_t DR37; - uint16_t RESERVED40; - __IO uint16_t DR38; - uint16_t RESERVED41; - __IO uint16_t DR39; - uint16_t RESERVED42; - __IO uint16_t DR40; - uint16_t RESERVED43; - __IO uint16_t DR41; - uint16_t RESERVED44; - __IO uint16_t DR42; - uint16_t RESERVED45; -} BKP_TypeDef; - -/** - * @brief Controller Area Network TxMailBox - */ - -typedef struct -{ - __IO uint32_t TIR; - __IO uint32_t TDTR; - __IO uint32_t TDLR; - __IO uint32_t TDHR; -} CAN_TxMailBox_TypeDef; - -/** - * @brief Controller Area Network FIFOMailBox - */ - -typedef struct -{ - __IO uint32_t RIR; - __IO uint32_t RDTR; - __IO uint32_t RDLR; - __IO uint32_t RDHR; -} CAN_FIFOMailBox_TypeDef; - -/** - * @brief Controller Area Network FilterRegister - */ - -typedef struct -{ - __IO uint32_t FR1; - __IO uint32_t FR2; -} CAN_FilterRegister_TypeDef; - -/** - * @brief Controller Area Network - */ - -typedef struct -{ - __IO uint32_t MCR; - __IO uint32_t MSR; - __IO uint32_t TSR; - __IO uint32_t RF0R; - __IO uint32_t RF1R; - __IO uint32_t IER; - __IO uint32_t ESR; - __IO uint32_t BTR; - uint32_t RESERVED0[88]; - CAN_TxMailBox_TypeDef sTxMailBox[3]; - CAN_FIFOMailBox_TypeDef sFIFOMailBox[2]; - uint32_t RESERVED1[12]; - __IO uint32_t FMR; - __IO uint32_t FM1R; - uint32_t RESERVED2; - __IO uint32_t FS1R; - uint32_t RESERVED3; - __IO uint32_t FFA1R; - uint32_t RESERVED4; - __IO uint32_t FA1R; - uint32_t RESERVED5[8]; - CAN_FilterRegister_TypeDef sFilterRegister[14]; -} CAN_TypeDef; - -/** - * @brief CRC calculation unit - */ - -typedef struct -{ - __IO uint32_t DR; - __IO uint8_t IDR; - uint8_t RESERVED0; - uint16_t RESERVED1; - __IO uint32_t CR; -} CRC_TypeDef; - -/** - * @brief Digital to Analog Converter - */ - -typedef struct -{ - __IO uint32_t CR; - __IO uint32_t SWTRIGR; - __IO uint32_t DHR12R1; - __IO uint32_t DHR12L1; - __IO uint32_t DHR8R1; - __IO uint32_t DHR12R2; - __IO uint32_t DHR12L2; - __IO uint32_t DHR8R2; - __IO uint32_t DHR12RD; - __IO uint32_t DHR12LD; - __IO uint32_t DHR8RD; - __IO uint32_t DOR1; - __IO uint32_t DOR2; -} DAC_TypeDef; - -/** - * @brief Debug MCU - */ - -typedef struct -{ - __IO uint32_t IDCODE; - __IO uint32_t CR; -}DBGMCU_TypeDef; - -/** - * @brief DMA Controller - */ - -typedef struct -{ - __IO uint32_t CCR; - __IO uint32_t CNDTR; - __IO uint32_t CPAR; - __IO uint32_t CMAR; -} DMA_Channel_TypeDef; - -typedef struct -{ - __IO uint32_t ISR; - __IO uint32_t IFCR; -} DMA_TypeDef; - -/** - * @brief External Interrupt/Event Controller - */ - -typedef struct -{ - __IO uint32_t IMR; - __IO uint32_t EMR; - __IO uint32_t RTSR; - __IO uint32_t FTSR; - __IO uint32_t SWIER; - __IO uint32_t PR; -} EXTI_TypeDef; - -/** - * @brief FLASH Registers - */ - -typedef struct -{ - __IO uint32_t ACR; - __IO uint32_t KEYR; - __IO uint32_t OPTKEYR; - __IO uint32_t SR; - __IO uint32_t CR; - __IO uint32_t AR; - __IO uint32_t RESERVED; - __IO uint32_t OBR; - __IO uint32_t WRPR; -} FLASH_TypeDef; - -/** - * @brief Option Bytes Registers - */ - -typedef struct -{ - __IO uint16_t RDP; - __IO uint16_t USER; - __IO uint16_t Data0; - __IO uint16_t Data1; - __IO uint16_t WRP0; - __IO uint16_t WRP1; - __IO uint16_t WRP2; - __IO uint16_t WRP3; -} OB_TypeDef; - -/** - * @brief Flexible Static Memory Controller - */ - -typedef struct -{ - __IO uint32_t BTCR[8]; -} FSMC_Bank1_TypeDef; - -/** - * @brief Flexible Static Memory Controller Bank1E - */ - -typedef struct -{ - __IO uint32_t BWTR[7]; -} FSMC_Bank1E_TypeDef; - -/** - * @brief Flexible Static Memory Controller Bank2 - */ - -typedef struct -{ - __IO uint32_t PCR2; - __IO uint32_t SR2; - __IO uint32_t PMEM2; - __IO uint32_t PATT2; - uint32_t RESERVED0; - __IO uint32_t ECCR2; -} FSMC_Bank2_TypeDef; - -/** - * @brief Flexible Static Memory Controller Bank3 - */ - -typedef struct -{ - __IO uint32_t PCR3; - __IO uint32_t SR3; - __IO uint32_t PMEM3; - __IO uint32_t PATT3; - uint32_t RESERVED0; - __IO uint32_t ECCR3; -} FSMC_Bank3_TypeDef; - -/** - * @brief Flexible Static Memory Controller Bank4 - */ - -typedef struct -{ - __IO uint32_t PCR4; - __IO uint32_t SR4; - __IO uint32_t PMEM4; - __IO uint32_t PATT4; - __IO uint32_t PIO4; -} FSMC_Bank4_TypeDef; - -/** - * @brief General Purpose IO - */ - -typedef struct -{ - __IO uint32_t CRL; - __IO uint32_t CRH; - __IO uint32_t IDR; - __IO uint32_t ODR; - __IO uint32_t BSRR; - __IO uint32_t BRR; - __IO uint32_t LCKR; -} GPIO_TypeDef; - -/** - * @brief Alternate Function IO - */ - -typedef struct -{ - __IO uint32_t EVCR; - __IO uint32_t MAPR; - __IO uint32_t EXTICR[4]; -} AFIO_TypeDef; -/** - * @brief Inter-integrated Circuit Interface - */ - -typedef struct -{ - __IO uint16_t CR1; - uint16_t RESERVED0; - __IO uint16_t CR2; - uint16_t RESERVED1; - __IO uint16_t OAR1; - uint16_t RESERVED2; - __IO uint16_t OAR2; - uint16_t RESERVED3; - __IO uint16_t DR; - uint16_t RESERVED4; - __IO uint16_t SR1; - uint16_t RESERVED5; - __IO uint16_t SR2; - uint16_t RESERVED6; - __IO uint16_t CCR; - uint16_t RESERVED7; - __IO uint16_t TRISE; - uint16_t RESERVED8; -} I2C_TypeDef; - -/** - * @brief Independent WATCHDOG - */ - -typedef struct -{ - __IO uint32_t KR; - __IO uint32_t PR; - __IO uint32_t RLR; - __IO uint32_t SR; -} IWDG_TypeDef; - -/** - * @brief Power Control - */ - -typedef struct -{ - __IO uint32_t CR; - __IO uint32_t CSR; -} PWR_TypeDef; - -/** - * @brief Reset and Clock Control - */ - -typedef struct -{ - __IO uint32_t CR; - __IO uint32_t CFGR; - __IO uint32_t CIR; - __IO uint32_t APB2RSTR; - __IO uint32_t APB1RSTR; - __IO uint32_t AHBENR; - __IO uint32_t APB2ENR; - __IO uint32_t APB1ENR; - __IO uint32_t BDCR; - __IO uint32_t CSR; -} RCC_TypeDef; - -/** - * @brief Real-Time Clock - */ - -typedef struct -{ - __IO uint16_t CRH; - uint16_t RESERVED0; - __IO uint16_t CRL; - uint16_t RESERVED1; - __IO uint16_t PRLH; - uint16_t RESERVED2; - __IO uint16_t PRLL; - uint16_t RESERVED3; - __IO uint16_t DIVH; - uint16_t RESERVED4; - __IO uint16_t DIVL; - uint16_t RESERVED5; - __IO uint16_t CNTH; - uint16_t RESERVED6; - __IO uint16_t CNTL; - uint16_t RESERVED7; - __IO uint16_t ALRH; - uint16_t RESERVED8; - __IO uint16_t ALRL; - uint16_t RESERVED9; -} RTC_TypeDef; - -/** - * @brief SD host Interface - */ - -typedef struct -{ - __IO uint32_t POWER; - __IO uint32_t CLKCR; - __IO uint32_t ARG; - __IO uint32_t CMD; - __I uint32_t RESPCMD; - __I uint32_t RESP1; - __I uint32_t RESP2; - __I uint32_t RESP3; - __I uint32_t RESP4; - __IO uint32_t DTIMER; - __IO uint32_t DLEN; - __IO uint32_t DCTRL; - __I uint32_t DCOUNT; - __I uint32_t STA; - __IO uint32_t ICR; - __IO uint32_t MASK; - uint32_t RESERVED0[2]; - __I uint32_t FIFOCNT; - uint32_t RESERVED1[13]; - __IO uint32_t FIFO; -} SDIO_TypeDef; - -/** - * @brief Serial Peripheral Interface - */ - -typedef struct -{ - __IO uint16_t CR1; - uint16_t RESERVED0; - __IO uint16_t CR2; - uint16_t RESERVED1; - __IO uint16_t SR; - uint16_t RESERVED2; - __IO uint16_t DR; - uint16_t RESERVED3; - __IO uint16_t CRCPR; - uint16_t RESERVED4; - __IO uint16_t RXCRCR; - uint16_t RESERVED5; - __IO uint16_t TXCRCR; - uint16_t RESERVED6; - __IO uint16_t I2SCFGR; - uint16_t RESERVED7; - __IO uint16_t I2SPR; - uint16_t RESERVED8; -} SPI_TypeDef; - -/** - * @brief TIM - */ - -typedef struct -{ - __IO uint16_t CR1; - uint16_t RESERVED0; - __IO uint16_t CR2; - uint16_t RESERVED1; - __IO uint16_t SMCR; - uint16_t RESERVED2; - __IO uint16_t DIER; - uint16_t RESERVED3; - __IO uint16_t SR; - uint16_t RESERVED4; - __IO uint16_t EGR; - uint16_t RESERVED5; - __IO uint16_t CCMR1; - uint16_t RESERVED6; - __IO uint16_t CCMR2; - uint16_t RESERVED7; - __IO uint16_t CCER; - uint16_t RESERVED8; - __IO uint16_t CNT; - uint16_t RESERVED9; - __IO uint16_t PSC; - uint16_t RESERVED10; - __IO uint16_t ARR; - uint16_t RESERVED11; - __IO uint16_t RCR; - uint16_t RESERVED12; - __IO uint16_t CCR1; - uint16_t RESERVED13; - __IO uint16_t CCR2; - uint16_t RESERVED14; - __IO uint16_t CCR3; - uint16_t RESERVED15; - __IO uint16_t CCR4; - uint16_t RESERVED16; - __IO uint16_t BDTR; - uint16_t RESERVED17; - __IO uint16_t DCR; - uint16_t RESERVED18; - __IO uint16_t DMAR; - uint16_t RESERVED19; -} TIM_TypeDef; - -/** - * @brief Universal Synchronous Asynchronous Receiver Transmitter - */ - -typedef struct -{ - __IO uint16_t SR; - uint16_t RESERVED0; - __IO uint16_t DR; - uint16_t RESERVED1; - __IO uint16_t BRR; - uint16_t RESERVED2; - __IO uint16_t CR1; - uint16_t RESERVED3; - __IO uint16_t CR2; - uint16_t RESERVED4; - __IO uint16_t CR3; - uint16_t RESERVED5; - __IO uint16_t GTPR; - uint16_t RESERVED6; -} USART_TypeDef; - -/** - * @brief Window WATCHDOG - */ - -typedef struct -{ - __IO uint32_t CR; - __IO uint32_t CFR; - __IO uint32_t SR; -} WWDG_TypeDef; - -/** - * @} - */ - -/** @addtogroup Peripheral_memory_map - * @{ - */ - -#define PERIPH_BB_BASE ((uint32_t)0x42000000) /*!< Peripheral base address in the alias region */ -#define SRAM_BB_BASE ((uint32_t)0x22000000) /*!< SRAM base address in the alias region */ - -#define SRAM_BASE ((uint32_t)0x20000000) /*!< Peripheral base address in the bit-band region */ -#define PERIPH_BASE ((uint32_t)0x40000000) /*!< SRAM base address in the bit-band region */ - -#define FSMC_R_BASE ((uint32_t)0xA0000000) /*!< FSMC registers base address */ - -/*!< Peripheral memory map */ -#define APB1PERIPH_BASE PERIPH_BASE -#define APB2PERIPH_BASE (PERIPH_BASE + 0x10000) -#define AHBPERIPH_BASE (PERIPH_BASE + 0x20000) - -#define TIM2_BASE (APB1PERIPH_BASE + 0x0000) -#define TIM3_BASE (APB1PERIPH_BASE + 0x0400) -#define TIM4_BASE (APB1PERIPH_BASE + 0x0800) -#define TIM5_BASE (APB1PERIPH_BASE + 0x0C00) -#define TIM6_BASE (APB1PERIPH_BASE + 0x1000) -#define TIM7_BASE (APB1PERIPH_BASE + 0x1400) -#define RTC_BASE (APB1PERIPH_BASE + 0x2800) -#define WWDG_BASE (APB1PERIPH_BASE + 0x2C00) -#define IWDG_BASE (APB1PERIPH_BASE + 0x3000) -#define SPI2_BASE (APB1PERIPH_BASE + 0x3800) -#define SPI3_BASE (APB1PERIPH_BASE + 0x3C00) -#define USART2_BASE (APB1PERIPH_BASE + 0x4400) -#define USART3_BASE (APB1PERIPH_BASE + 0x4800) -#define UART4_BASE (APB1PERIPH_BASE + 0x4C00) -#define UART5_BASE (APB1PERIPH_BASE + 0x5000) -#define I2C1_BASE (APB1PERIPH_BASE + 0x5400) -#define I2C2_BASE (APB1PERIPH_BASE + 0x5800) -#define CAN1_BASE (APB1PERIPH_BASE + 0x6400) -#define BKP_BASE (APB1PERIPH_BASE + 0x6C00) -#define PWR_BASE (APB1PERIPH_BASE + 0x7000) -#define DAC_BASE (APB1PERIPH_BASE + 0x7400) - -#define AFIO_BASE (APB2PERIPH_BASE + 0x0000) -#define EXTI_BASE (APB2PERIPH_BASE + 0x0400) -#define GPIOA_BASE (APB2PERIPH_BASE + 0x0800) -#define GPIOB_BASE (APB2PERIPH_BASE + 0x0C00) -#define GPIOC_BASE (APB2PERIPH_BASE + 0x1000) -#define GPIOD_BASE (APB2PERIPH_BASE + 0x1400) -#define GPIOE_BASE (APB2PERIPH_BASE + 0x1800) -#define GPIOF_BASE (APB2PERIPH_BASE + 0x1C00) -#define GPIOG_BASE (APB2PERIPH_BASE + 0x2000) -#define ADC1_BASE (APB2PERIPH_BASE + 0x2400) -#define ADC2_BASE (APB2PERIPH_BASE + 0x2800) -#define TIM1_BASE (APB2PERIPH_BASE + 0x2C00) -#define SPI1_BASE (APB2PERIPH_BASE + 0x3000) -#define TIM8_BASE (APB2PERIPH_BASE + 0x3400) -#define USART1_BASE (APB2PERIPH_BASE + 0x3800) -#define ADC3_BASE (APB2PERIPH_BASE + 0x3C00) - -#define SDIO_BASE (PERIPH_BASE + 0x18000) - -#define DMA1_BASE (AHBPERIPH_BASE + 0x0000) -#define DMA1_Channel1_BASE (AHBPERIPH_BASE + 0x0008) -#define DMA1_Channel2_BASE (AHBPERIPH_BASE + 0x001C) -#define DMA1_Channel3_BASE (AHBPERIPH_BASE + 0x0030) -#define DMA1_Channel4_BASE (AHBPERIPH_BASE + 0x0044) -#define DMA1_Channel5_BASE (AHBPERIPH_BASE + 0x0058) -#define DMA1_Channel6_BASE (AHBPERIPH_BASE + 0x006C) -#define DMA1_Channel7_BASE (AHBPERIPH_BASE + 0x0080) -#define DMA2_BASE (AHBPERIPH_BASE + 0x0400) -#define DMA2_Channel1_BASE (AHBPERIPH_BASE + 0x0408) -#define DMA2_Channel2_BASE (AHBPERIPH_BASE + 0x041C) -#define DMA2_Channel3_BASE (AHBPERIPH_BASE + 0x0430) -#define DMA2_Channel4_BASE (AHBPERIPH_BASE + 0x0444) -#define DMA2_Channel5_BASE (AHBPERIPH_BASE + 0x0458) -#define RCC_BASE (AHBPERIPH_BASE + 0x1000) -#define CRC_BASE (AHBPERIPH_BASE + 0x3000) - -#define FLASH_R_BASE (AHBPERIPH_BASE + 0x2000) /*!< Flash registers base address */ -#define OB_BASE ((uint32_t)0x1FFFF800) /*!< Flash Option Bytes base address */ - -#define FSMC_Bank1_R_BASE (FSMC_R_BASE + 0x0000) /*!< FSMC Bank1 registers base address */ -#define FSMC_Bank1E_R_BASE (FSMC_R_BASE + 0x0104) /*!< FSMC Bank1E registers base address */ -#define FSMC_Bank2_R_BASE (FSMC_R_BASE + 0x0060) /*!< FSMC Bank2 registers base address */ -#define FSMC_Bank3_R_BASE (FSMC_R_BASE + 0x0080) /*!< FSMC Bank3 registers base address */ -#define FSMC_Bank4_R_BASE (FSMC_R_BASE + 0x00A0) /*!< FSMC Bank4 registers base address */ - -#define DBGMCU_BASE ((uint32_t)0xE0042000) /*!< Debug MCU registers base address */ - -/** - * @} - */ - -/** @addtogroup Peripheral_declaration - * @{ - */ - -#define TIM2 ((TIM_TypeDef *) TIM2_BASE) -#define TIM3 ((TIM_TypeDef *) TIM3_BASE) -#define TIM4 ((TIM_TypeDef *) TIM4_BASE) -#define TIM5 ((TIM_TypeDef *) TIM5_BASE) -#define TIM6 ((TIM_TypeDef *) TIM6_BASE) -#define TIM7 ((TIM_TypeDef *) TIM7_BASE) -#define RTC ((RTC_TypeDef *) RTC_BASE) -#define WWDG ((WWDG_TypeDef *) WWDG_BASE) -#define IWDG ((IWDG_TypeDef *) IWDG_BASE) -#define SPI2 ((SPI_TypeDef *) SPI2_BASE) -#define SPI3 ((SPI_TypeDef *) SPI3_BASE) -#define USART2 ((USART_TypeDef *) USART2_BASE) -#define USART3 ((USART_TypeDef *) USART3_BASE) -#define UART4 ((USART_TypeDef *) UART4_BASE) -#define UART5 ((USART_TypeDef *) UART5_BASE) -#define I2C1 ((I2C_TypeDef *) I2C1_BASE) -#define I2C2 ((I2C_TypeDef *) I2C2_BASE) -#define CAN1 ((CAN_TypeDef *) CAN1_BASE) -#define BKP ((BKP_TypeDef *) BKP_BASE) -#define PWR ((PWR_TypeDef *) PWR_BASE) -#define DAC ((DAC_TypeDef *) DAC_BASE) -#define AFIO ((AFIO_TypeDef *) AFIO_BASE) -#define EXTI ((EXTI_TypeDef *) EXTI_BASE) -#define GPIOA ((GPIO_TypeDef *) GPIOA_BASE) -#define GPIOB ((GPIO_TypeDef *) GPIOB_BASE) -#define GPIOC ((GPIO_TypeDef *) GPIOC_BASE) -#define GPIOD ((GPIO_TypeDef *) GPIOD_BASE) -#define GPIOE ((GPIO_TypeDef *) GPIOE_BASE) -#define GPIOF ((GPIO_TypeDef *) GPIOF_BASE) -#define GPIOG ((GPIO_TypeDef *) GPIOG_BASE) -#define ADC1 ((ADC_TypeDef *) ADC1_BASE) -#define ADC2 ((ADC_TypeDef *) ADC2_BASE) -#define TIM1 ((TIM_TypeDef *) TIM1_BASE) -#define SPI1 ((SPI_TypeDef *) SPI1_BASE) -#define TIM8 ((TIM_TypeDef *) TIM8_BASE) -#define USART1 ((USART_TypeDef *) USART1_BASE) -#define ADC3 ((ADC_TypeDef *) ADC3_BASE) -#define SDIO ((SDIO_TypeDef *) SDIO_BASE) -#define DMA1 ((DMA_TypeDef *) DMA1_BASE) -#define DMA2 ((DMA_TypeDef *) DMA2_BASE) -#define DMA1_Channel1 ((DMA_Channel_TypeDef *) DMA1_Channel1_BASE) -#define DMA1_Channel2 ((DMA_Channel_TypeDef *) DMA1_Channel2_BASE) -#define DMA1_Channel3 ((DMA_Channel_TypeDef *) DMA1_Channel3_BASE) -#define DMA1_Channel4 ((DMA_Channel_TypeDef *) DMA1_Channel4_BASE) -#define DMA1_Channel5 ((DMA_Channel_TypeDef *) DMA1_Channel5_BASE) -#define DMA1_Channel6 ((DMA_Channel_TypeDef *) DMA1_Channel6_BASE) -#define DMA1_Channel7 ((DMA_Channel_TypeDef *) DMA1_Channel7_BASE) -#define DMA2_Channel1 ((DMA_Channel_TypeDef *) DMA2_Channel1_BASE) -#define DMA2_Channel2 ((DMA_Channel_TypeDef *) DMA2_Channel2_BASE) -#define DMA2_Channel3 ((DMA_Channel_TypeDef *) DMA2_Channel3_BASE) -#define DMA2_Channel4 ((DMA_Channel_TypeDef *) DMA2_Channel4_BASE) -#define DMA2_Channel5 ((DMA_Channel_TypeDef *) DMA2_Channel5_BASE) -#define RCC ((RCC_TypeDef *) RCC_BASE) -#define CRC ((CRC_TypeDef *) CRC_BASE) -#define FLASH ((FLASH_TypeDef *) FLASH_R_BASE) -#define OB ((OB_TypeDef *) OB_BASE) -#define FSMC_Bank1 ((FSMC_Bank1_TypeDef *) FSMC_Bank1_R_BASE) -#define FSMC_Bank1E ((FSMC_Bank1E_TypeDef *) FSMC_Bank1E_R_BASE) -#define FSMC_Bank2 ((FSMC_Bank2_TypeDef *) FSMC_Bank2_R_BASE) -#define FSMC_Bank3 ((FSMC_Bank3_TypeDef *) FSMC_Bank3_R_BASE) -#define FSMC_Bank4 ((FSMC_Bank4_TypeDef *) FSMC_Bank4_R_BASE) -#define DBGMCU ((DBGMCU_TypeDef *) DBGMCU_BASE) - -/** - * @} - */ - -/** @addtogroup Exported_constants - * @{ - */ - - /** @addtogroup Peripheral_Registers_Bits_Definition - * @{ - */ - -/******************************************************************************/ -/* Peripheral Registers_Bits_Definition */ -/******************************************************************************/ - -/******************************************************************************/ -/* */ -/* CRC calculation unit */ -/* */ -/******************************************************************************/ - -/******************* Bit definition for CRC_DR register *********************/ -#define CRC_DR_DR ((uint32_t)0xFFFFFFFF) /*!< Data register bits */ - - -/******************* Bit definition for CRC_IDR register ********************/ -#define CRC_IDR_IDR ((uint8_t)0xFF) /*!< General-purpose 8-bit data register bits */ - - -/******************** Bit definition for CRC_CR register ********************/ -#define CRC_CR_RESET ((uint8_t)0x01) /*!< RESET bit */ - -/******************************************************************************/ -/* */ -/* Power Control */ -/* */ -/******************************************************************************/ - -/******************** Bit definition for PWR_CR register ********************/ -#define PWR_CR_LPDS ((uint16_t)0x0001) /*!< Low-Power Deepsleep */ -#define PWR_CR_PDDS ((uint16_t)0x0002) /*!< Power Down Deepsleep */ -#define PWR_CR_CWUF ((uint16_t)0x0004) /*!< Clear Wakeup Flag */ -#define PWR_CR_CSBF ((uint16_t)0x0008) /*!< Clear Standby Flag */ -#define PWR_CR_PVDE ((uint16_t)0x0010) /*!< Power Voltage Detector Enable */ - -#define PWR_CR_PLS ((uint16_t)0x00E0) /*!< PLS[2:0] bits (PVD Level Selection) */ -#define PWR_CR_PLS_0 ((uint16_t)0x0020) /*!< Bit 0 */ -#define PWR_CR_PLS_1 ((uint16_t)0x0040) /*!< Bit 1 */ -#define PWR_CR_PLS_2 ((uint16_t)0x0080) /*!< Bit 2 */ - -/*!< PVD level configuration */ -#define PWR_CR_PLS_2V2 ((uint16_t)0x0000) /*!< PVD level 2.2V */ -#define PWR_CR_PLS_2V3 ((uint16_t)0x0020) /*!< PVD level 2.3V */ -#define PWR_CR_PLS_2V4 ((uint16_t)0x0040) /*!< PVD level 2.4V */ -#define PWR_CR_PLS_2V5 ((uint16_t)0x0060) /*!< PVD level 2.5V */ -#define PWR_CR_PLS_2V6 ((uint16_t)0x0080) /*!< PVD level 2.6V */ -#define PWR_CR_PLS_2V7 ((uint16_t)0x00A0) /*!< PVD level 2.7V */ -#define PWR_CR_PLS_2V8 ((uint16_t)0x00C0) /*!< PVD level 2.8V */ -#define PWR_CR_PLS_2V9 ((uint16_t)0x00E0) /*!< PVD level 2.9V */ - -#define PWR_CR_DBP ((uint16_t)0x0100) /*!< Disable Backup Domain write protection */ - - -/******************* Bit definition for PWR_CSR register ********************/ -#define PWR_CSR_WUF ((uint16_t)0x0001) /*!< Wakeup Flag */ -#define PWR_CSR_SBF ((uint16_t)0x0002) /*!< Standby Flag */ -#define PWR_CSR_PVDO ((uint16_t)0x0004) /*!< PVD Output */ -#define PWR_CSR_EWUP ((uint16_t)0x0100) /*!< Enable WKUP pin */ - -/******************************************************************************/ -/* */ -/* Backup registers */ -/* */ -/******************************************************************************/ - -/******************* Bit definition for BKP_DR1 register ********************/ -#define BKP_DR1_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR2 register ********************/ -#define BKP_DR2_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR3 register ********************/ -#define BKP_DR3_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR4 register ********************/ -#define BKP_DR4_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR5 register ********************/ -#define BKP_DR5_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR6 register ********************/ -#define BKP_DR6_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR7 register ********************/ -#define BKP_DR7_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR8 register ********************/ -#define BKP_DR8_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR9 register ********************/ -#define BKP_DR9_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR10 register *******************/ -#define BKP_DR10_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR11 register *******************/ -#define BKP_DR11_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR12 register *******************/ -#define BKP_DR12_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR13 register *******************/ -#define BKP_DR13_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR14 register *******************/ -#define BKP_DR14_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR15 register *******************/ -#define BKP_DR15_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR16 register *******************/ -#define BKP_DR16_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR17 register *******************/ -#define BKP_DR17_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/****************** Bit definition for BKP_DR18 register ********************/ -#define BKP_DR18_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR19 register *******************/ -#define BKP_DR19_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR20 register *******************/ -#define BKP_DR20_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR21 register *******************/ -#define BKP_DR21_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR22 register *******************/ -#define BKP_DR22_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR23 register *******************/ -#define BKP_DR23_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR24 register *******************/ -#define BKP_DR24_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR25 register *******************/ -#define BKP_DR25_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR26 register *******************/ -#define BKP_DR26_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR27 register *******************/ -#define BKP_DR27_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR28 register *******************/ -#define BKP_DR28_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR29 register *******************/ -#define BKP_DR29_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR30 register *******************/ -#define BKP_DR30_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR31 register *******************/ -#define BKP_DR31_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR32 register *******************/ -#define BKP_DR32_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR33 register *******************/ -#define BKP_DR33_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR34 register *******************/ -#define BKP_DR34_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR35 register *******************/ -#define BKP_DR35_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR36 register *******************/ -#define BKP_DR36_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR37 register *******************/ -#define BKP_DR37_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR38 register *******************/ -#define BKP_DR38_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR39 register *******************/ -#define BKP_DR39_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR40 register *******************/ -#define BKP_DR40_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR41 register *******************/ -#define BKP_DR41_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR42 register *******************/ -#define BKP_DR42_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/****************** Bit definition for BKP_RTCCR register *******************/ -#define BKP_RTCCR_CAL ((uint16_t)0x007F) /*!< Calibration value */ -#define BKP_RTCCR_CCO ((uint16_t)0x0080) /*!< Calibration Clock Output */ -#define BKP_RTCCR_ASOE ((uint16_t)0x0100) /*!< Alarm or Second Output Enable */ -#define BKP_RTCCR_ASOS ((uint16_t)0x0200) /*!< Alarm or Second Output Selection */ - -/******************** Bit definition for BKP_CR register ********************/ -#define BKP_CR_TPE ((uint8_t)0x01) /*!< TAMPER pin enable */ -#define BKP_CR_TPAL ((uint8_t)0x02) /*!< TAMPER pin active level */ - -/******************* Bit definition for BKP_CSR register ********************/ -#define BKP_CSR_CTE ((uint16_t)0x0001) /*!< Clear Tamper event */ -#define BKP_CSR_CTI ((uint16_t)0x0002) /*!< Clear Tamper Interrupt */ -#define BKP_CSR_TPIE ((uint16_t)0x0004) /*!< TAMPER Pin interrupt enable */ -#define BKP_CSR_TEF ((uint16_t)0x0100) /*!< Tamper Event Flag */ -#define BKP_CSR_TIF ((uint16_t)0x0200) /*!< Tamper Interrupt Flag */ - -/******************************************************************************/ -/* */ -/* Reset and Clock Control */ -/* */ -/******************************************************************************/ - -/******************** Bit definition for RCC_CR register ********************/ -#define RCC_CR_HSION ((uint32_t)0x00000001) /*!< Internal High Speed clock enable */ -#define RCC_CR_HSIRDY ((uint32_t)0x00000002) /*!< Internal High Speed clock ready flag */ -#define RCC_CR_HSITRIM ((uint32_t)0x000000F8) /*!< Internal High Speed clock trimming */ -#define RCC_CR_HSICAL ((uint32_t)0x0000FF00) /*!< Internal High Speed clock Calibration */ -#define RCC_CR_HSEON ((uint32_t)0x00010000) /*!< External High Speed clock enable */ -#define RCC_CR_HSERDY ((uint32_t)0x00020000) /*!< External High Speed clock ready flag */ -#define RCC_CR_HSEBYP ((uint32_t)0x00040000) /*!< External High Speed clock Bypass */ -#define RCC_CR_CSSON ((uint32_t)0x00080000) /*!< Clock Security System enable */ -#define RCC_CR_PLLON ((uint32_t)0x01000000) /*!< PLL enable */ -#define RCC_CR_PLLRDY ((uint32_t)0x02000000) /*!< PLL clock ready flag */ - -/******************* Bit definition for RCC_CFGR register *******************/ -#define RCC_CFGR_SW ((uint32_t)0x00000003) /*!< SW[1:0] bits (System clock Switch) */ -#define RCC_CFGR_SW_0 ((uint32_t)0x00000001) /*!< Bit 0 */ -#define RCC_CFGR_SW_1 ((uint32_t)0x00000002) /*!< Bit 1 */ - -/*!< SW configuration */ -#define RCC_CFGR_SW_HSI ((uint32_t)0x00000000) /*!< HSI selected as system clock */ -#define RCC_CFGR_SW_HSE ((uint32_t)0x00000001) /*!< HSE selected as system clock */ -#define RCC_CFGR_SW_PLL ((uint32_t)0x00000002) /*!< PLL selected as system clock */ - -#define RCC_CFGR_SWS ((uint32_t)0x0000000C) /*!< SWS[1:0] bits (System Clock Switch Status) */ -#define RCC_CFGR_SWS_0 ((uint32_t)0x00000004) /*!< Bit 0 */ -#define RCC_CFGR_SWS_1 ((uint32_t)0x00000008) /*!< Bit 1 */ - -/*!< SWS configuration */ -#define RCC_CFGR_SWS_HSI ((uint32_t)0x00000000) /*!< HSI oscillator used as system clock */ -#define RCC_CFGR_SWS_HSE ((uint32_t)0x00000004) /*!< HSE oscillator used as system clock */ -#define RCC_CFGR_SWS_PLL ((uint32_t)0x00000008) /*!< PLL used as system clock */ - -#define RCC_CFGR_HPRE ((uint32_t)0x000000F0) /*!< HPRE[3:0] bits (AHB prescaler) */ -#define RCC_CFGR_HPRE_0 ((uint32_t)0x00000010) /*!< Bit 0 */ -#define RCC_CFGR_HPRE_1 ((uint32_t)0x00000020) /*!< Bit 1 */ -#define RCC_CFGR_HPRE_2 ((uint32_t)0x00000040) /*!< Bit 2 */ -#define RCC_CFGR_HPRE_3 ((uint32_t)0x00000080) /*!< Bit 3 */ - -/*!< HPRE configuration */ -#define RCC_CFGR_HPRE_DIV1 ((uint32_t)0x00000000) /*!< SYSCLK not divided */ -#define RCC_CFGR_HPRE_DIV2 ((uint32_t)0x00000080) /*!< SYSCLK divided by 2 */ -#define RCC_CFGR_HPRE_DIV4 ((uint32_t)0x00000090) /*!< SYSCLK divided by 4 */ -#define RCC_CFGR_HPRE_DIV8 ((uint32_t)0x000000A0) /*!< SYSCLK divided by 8 */ -#define RCC_CFGR_HPRE_DIV16 ((uint32_t)0x000000B0) /*!< SYSCLK divided by 16 */ -#define RCC_CFGR_HPRE_DIV64 ((uint32_t)0x000000C0) /*!< SYSCLK divided by 64 */ -#define RCC_CFGR_HPRE_DIV128 ((uint32_t)0x000000D0) /*!< SYSCLK divided by 128 */ -#define RCC_CFGR_HPRE_DIV256 ((uint32_t)0x000000E0) /*!< SYSCLK divided by 256 */ -#define RCC_CFGR_HPRE_DIV512 ((uint32_t)0x000000F0) /*!< SYSCLK divided by 512 */ - -#define RCC_CFGR_PPRE1 ((uint32_t)0x00000700) /*!< PRE1[2:0] bits (APB1 prescaler) */ -#define RCC_CFGR_PPRE1_0 ((uint32_t)0x00000100) /*!< Bit 0 */ -#define RCC_CFGR_PPRE1_1 ((uint32_t)0x00000200) /*!< Bit 1 */ -#define RCC_CFGR_PPRE1_2 ((uint32_t)0x00000400) /*!< Bit 2 */ - -/*!< PPRE1 configuration */ -#define RCC_CFGR_PPRE1_DIV1 ((uint32_t)0x00000000) /*!< HCLK not divided */ -#define RCC_CFGR_PPRE1_DIV2 ((uint32_t)0x00000400) /*!< HCLK divided by 2 */ -#define RCC_CFGR_PPRE1_DIV4 ((uint32_t)0x00000500) /*!< HCLK divided by 4 */ -#define RCC_CFGR_PPRE1_DIV8 ((uint32_t)0x00000600) /*!< HCLK divided by 8 */ -#define RCC_CFGR_PPRE1_DIV16 ((uint32_t)0x00000700) /*!< HCLK divided by 16 */ - -#define RCC_CFGR_PPRE2 ((uint32_t)0x00003800) /*!< PRE2[2:0] bits (APB2 prescaler) */ -#define RCC_CFGR_PPRE2_0 ((uint32_t)0x00000800) /*!< Bit 0 */ -#define RCC_CFGR_PPRE2_1 ((uint32_t)0x00001000) /*!< Bit 1 */ -#define RCC_CFGR_PPRE2_2 ((uint32_t)0x00002000) /*!< Bit 2 */ - -/*!< PPRE2 configuration */ -#define RCC_CFGR_PPRE2_DIV1 ((uint32_t)0x00000000) /*!< HCLK not divided */ -#define RCC_CFGR_PPRE2_DIV2 ((uint32_t)0x00002000) /*!< HCLK divided by 2 */ -#define RCC_CFGR_PPRE2_DIV4 ((uint32_t)0x00002800) /*!< HCLK divided by 4 */ -#define RCC_CFGR_PPRE2_DIV8 ((uint32_t)0x00003000) /*!< HCLK divided by 8 */ -#define RCC_CFGR_PPRE2_DIV16 ((uint32_t)0x00003800) /*!< HCLK divided by 16 */ - -#define RCC_CFGR_ADCPRE ((uint32_t)0x0000C000) /*!< ADCPRE[1:0] bits (ADC prescaler) */ -#define RCC_CFGR_ADCPRE_0 ((uint32_t)0x00004000) /*!< Bit 0 */ -#define RCC_CFGR_ADCPRE_1 ((uint32_t)0x00008000) /*!< Bit 1 */ - -/*!< ADCPPRE configuration */ -#define RCC_CFGR_ADCPRE_DIV2 ((uint32_t)0x00000000) /*!< PCLK2 divided by 2 */ -#define RCC_CFGR_ADCPRE_DIV4 ((uint32_t)0x00004000) /*!< PCLK2 divided by 4 */ -#define RCC_CFGR_ADCPRE_DIV6 ((uint32_t)0x00008000) /*!< PCLK2 divided by 6 */ -#define RCC_CFGR_ADCPRE_DIV8 ((uint32_t)0x0000C000) /*!< PCLK2 divided by 8 */ - -#define RCC_CFGR_PLLSRC ((uint32_t)0x00010000) /*!< PLL entry clock source */ -#define RCC_CFGR_PLLXTPRE ((uint32_t)0x00020000) /*!< HSE divider for PLL entry */ - -#define RCC_CFGR_PLLMULL ((uint32_t)0x003C0000) /*!< PLLMUL[3:0] bits (PLL multiplication factor) */ -#define RCC_CFGR_PLLMULL_0 ((uint32_t)0x00040000) /*!< Bit 0 */ -#define RCC_CFGR_PLLMULL_1 ((uint32_t)0x00080000) /*!< Bit 1 */ -#define RCC_CFGR_PLLMULL_2 ((uint32_t)0x00100000) /*!< Bit 2 */ -#define RCC_CFGR_PLLMULL_3 ((uint32_t)0x00200000) /*!< Bit 3 */ - -/*!< PLLMUL configuration */ -#define RCC_CFGR_PLLMULL2 ((uint32_t)0x00000000) /*!< PLL input clock*2 */ -#define RCC_CFGR_PLLMULL3 ((uint32_t)0x00040000) /*!< PLL input clock*3 */ -#define RCC_CFGR_PLLMULL4 ((uint32_t)0x00080000) /*!< PLL input clock*4 */ -#define RCC_CFGR_PLLMULL5 ((uint32_t)0x000C0000) /*!< PLL input clock*5 */ -#define RCC_CFGR_PLLMULL6 ((uint32_t)0x00100000) /*!< PLL input clock*6 */ -#define RCC_CFGR_PLLMULL7 ((uint32_t)0x00140000) /*!< PLL input clock*7 */ -#define RCC_CFGR_PLLMULL8 ((uint32_t)0x00180000) /*!< PLL input clock*8 */ -#define RCC_CFGR_PLLMULL9 ((uint32_t)0x001C0000) /*!< PLL input clock*9 */ -#define RCC_CFGR_PLLMULL10 ((uint32_t)0x00200000) /*!< PLL input clock10 */ -#define RCC_CFGR_PLLMULL11 ((uint32_t)0x00240000) /*!< PLL input clock*11 */ -#define RCC_CFGR_PLLMULL12 ((uint32_t)0x00280000) /*!< PLL input clock*12 */ -#define RCC_CFGR_PLLMULL13 ((uint32_t)0x002C0000) /*!< PLL input clock*13 */ -#define RCC_CFGR_PLLMULL14 ((uint32_t)0x00300000) /*!< PLL input clock*14 */ -#define RCC_CFGR_PLLMULL15 ((uint32_t)0x00340000) /*!< PLL input clock*15 */ -#define RCC_CFGR_PLLMULL16 ((uint32_t)0x00380000) /*!< PLL input clock*16 */ - -#define RCC_CFGR_USBPRE ((uint32_t)0x00400000) /*!< USB prescaler */ - -#define RCC_CFGR_MCO ((uint32_t)0x07000000) /*!< MCO[2:0] bits (Microcontroller Clock Output) */ -#define RCC_CFGR_MCO_0 ((uint32_t)0x01000000) /*!< Bit 0 */ -#define RCC_CFGR_MCO_1 ((uint32_t)0x02000000) /*!< Bit 1 */ -#define RCC_CFGR_MCO_2 ((uint32_t)0x04000000) /*!< Bit 2 */ - -/*!< MCO configuration */ -#define RCC_CFGR_MCO_NOCLOCK ((uint32_t)0x00000000) /*!< No clock */ -#define RCC_CFGR_MCO_SYSCLK ((uint32_t)0x04000000) /*!< System clock selected */ -#define RCC_CFGR_MCO_HSI ((uint32_t)0x05000000) /*!< Internal 8 MHz RC oscillator clock selected */ -#define RCC_CFGR_MCO_HSE ((uint32_t)0x06000000) /*!< External 1-25 MHz oscillator clock selected */ -#define RCC_CFGR_MCO_PLL ((uint32_t)0x07000000) /*!< PLL clock divided by 2 selected*/ - -/*!<****************** Bit definition for RCC_CIR register ********************/ -#define RCC_CIR_LSIRDYF ((uint32_t)0x00000001) /*!< LSI Ready Interrupt flag */ -#define RCC_CIR_LSERDYF ((uint32_t)0x00000002) /*!< LSE Ready Interrupt flag */ -#define RCC_CIR_HSIRDYF ((uint32_t)0x00000004) /*!< HSI Ready Interrupt flag */ -#define RCC_CIR_HSERDYF ((uint32_t)0x00000008) /*!< HSE Ready Interrupt flag */ -#define RCC_CIR_PLLRDYF ((uint32_t)0x00000010) /*!< PLL Ready Interrupt flag */ -#define RCC_CIR_CSSF ((uint32_t)0x00000080) /*!< Clock Security System Interrupt flag */ -#define RCC_CIR_LSIRDYIE ((uint32_t)0x00000100) /*!< LSI Ready Interrupt Enable */ -#define RCC_CIR_LSERDYIE ((uint32_t)0x00000200) /*!< LSE Ready Interrupt Enable */ -#define RCC_CIR_HSIRDYIE ((uint32_t)0x00000400) /*!< HSI Ready Interrupt Enable */ -#define RCC_CIR_HSERDYIE ((uint32_t)0x00000800) /*!< HSE Ready Interrupt Enable */ -#define RCC_CIR_PLLRDYIE ((uint32_t)0x00001000) /*!< PLL Ready Interrupt Enable */ -#define RCC_CIR_LSIRDYC ((uint32_t)0x00010000) /*!< LSI Ready Interrupt Clear */ -#define RCC_CIR_LSERDYC ((uint32_t)0x00020000) /*!< LSE Ready Interrupt Clear */ -#define RCC_CIR_HSIRDYC ((uint32_t)0x00040000) /*!< HSI Ready Interrupt Clear */ -#define RCC_CIR_HSERDYC ((uint32_t)0x00080000) /*!< HSE Ready Interrupt Clear */ -#define RCC_CIR_PLLRDYC ((uint32_t)0x00100000) /*!< PLL Ready Interrupt Clear */ -#define RCC_CIR_CSSC ((uint32_t)0x00800000) /*!< Clock Security System Interrupt Clear */ - -/***************** Bit definition for RCC_APB2RSTR register *****************/ -#define RCC_APB2RSTR_AFIORST ((uint16_t)0x0001) /*!< Alternate Function I/O reset */ -#define RCC_APB2RSTR_IOPARST ((uint16_t)0x0004) /*!< I/O port A reset */ -#define RCC_APB2RSTR_IOPBRST ((uint16_t)0x0008) /*!< IO port B reset */ -#define RCC_APB2RSTR_IOPCRST ((uint16_t)0x0010) /*!< IO port C reset */ -#define RCC_APB2RSTR_IOPDRST ((uint16_t)0x0020) /*!< IO port D reset */ -#define RCC_APB2RSTR_IOPERST ((uint16_t)0x0040) /*!< IO port E reset */ -#define RCC_APB2RSTR_IOPFRST ((uint16_t)0x0080) /*!< IO port F reset */ -#define RCC_APB2RSTR_IOPGRST ((uint16_t)0x0100) /*!< IO port G reset */ -#define RCC_APB2RSTR_ADC1RST ((uint16_t)0x0200) /*!< ADC 1 interface reset */ -#define RCC_APB2RSTR_ADC2RST ((uint16_t)0x0400) /*!< ADC 2 interface reset */ -#define RCC_APB2RSTR_TIM1RST ((uint16_t)0x0800) /*!< TIM1 Timer reset */ -#define RCC_APB2RSTR_SPI1RST ((uint16_t)0x1000) /*!< SPI 1 reset */ -#define RCC_APB2RSTR_TIM8RST ((uint16_t)0x2000) /*!< TIM8 Timer reset */ -#define RCC_APB2RSTR_USART1RST ((uint16_t)0x4000) /*!< USART1 reset */ -#define RCC_APB2RSTR_ADC3RST ((uint16_t)0x8000) /*!< ADC3 interface reset */ - -/***************** Bit definition for RCC_APB1RSTR register *****************/ -#define RCC_APB1RSTR_TIM2RST ((uint32_t)0x00000001) /*!< Timer 2 reset */ -#define RCC_APB1RSTR_TIM3RST ((uint32_t)0x00000002) /*!< Timer 3 reset */ -#define RCC_APB1RSTR_TIM4RST ((uint32_t)0x00000004) /*!< Timer 4 reset */ -#define RCC_APB1RSTR_TIM5RST ((uint32_t)0x00000008) /*!< Timer 5 reset */ -#define RCC_APB1RSTR_TIM6RST ((uint32_t)0x00000010) /*!< Timer 6 reset */ -#define RCC_APB1RSTR_TIM7RST ((uint32_t)0x00000020) /*!< Timer 7 reset */ -#define RCC_APB1RSTR_WWDGRST ((uint32_t)0x00000800) /*!< Window Watchdog reset */ -#define RCC_APB1RSTR_SPI2RST ((uint32_t)0x00004000) /*!< SPI 2 reset */ -#define RCC_APB1RSTR_SPI3RST ((uint32_t)0x00008000) /*!< SPI 3 reset */ -#define RCC_APB1RSTR_USART2RST ((uint32_t)0x00020000) /*!< USART 2 reset */ -#define RCC_APB1RSTR_USART3RST ((uint32_t)0x00040000) /*!< RUSART 3 reset */ -#define RCC_APB1RSTR_UART4RST ((uint32_t)0x00080000) /*!< USART 4 reset */ -#define RCC_APB1RSTR_UART5RST ((uint32_t)0x00100000) /*!< USART 5 reset */ -#define RCC_APB1RSTR_I2C1RST ((uint32_t)0x00200000) /*!< I2C 1 reset */ -#define RCC_APB1RSTR_I2C2RST ((uint32_t)0x00400000) /*!< I2C 2 reset */ -#define RCC_APB1RSTR_USBRST ((uint32_t)0x00800000) /*!< USB reset */ -#define RCC_APB1RSTR_CANRST ((uint32_t)0x02000000) /*!< CAN reset */ -#define RCC_APB1RSTR_BKPRST ((uint32_t)0x08000000) /*!< Backup interface reset */ -#define RCC_APB1RSTR_PWRRST ((uint32_t)0x10000000) /*!< Power interface reset */ -#define RCC_APB1RSTR_DACRST ((uint32_t)0x20000000) /*!< DAC interface reset */ - -/****************** Bit definition for RCC_AHBENR register ******************/ -#define RCC_AHBENR_DMA1EN ((uint16_t)0x0001) /*!< DMA1 clock enable */ -#define RCC_AHBENR_DMA2EN ((uint16_t)0x0002) /*!< DMA2 clock enable */ -#define RCC_AHBENR_SRAMEN ((uint16_t)0x0004) /*!< SRAM interface clock enable */ -#define RCC_AHBENR_FLITFEN ((uint16_t)0x0010) /*!< FLITF clock enable */ -#define RCC_AHBENR_CRCEN ((uint16_t)0x0040) /*!< CRC clock enable */ -#define RCC_AHBENR_FSMCEN ((uint16_t)0x0100) /*!< FSMC clock enable */ -#define RCC_AHBENR_SDIOEN ((uint16_t)0x0400) /*!< SDIO clock enable */ - -/****************** Bit definition for RCC_APB2ENR register *****************/ -#define RCC_APB2ENR_AFIOEN ((uint16_t)0x0001) /*!< Alternate Function I/O clock enable */ -#define RCC_APB2ENR_IOPAEN ((uint16_t)0x0004) /*!< I/O port A clock enable */ -#define RCC_APB2ENR_IOPBEN ((uint16_t)0x0008) /*!< I/O port B clock enable */ -#define RCC_APB2ENR_IOPCEN ((uint16_t)0x0010) /*!< I/O port C clock enable */ -#define RCC_APB2ENR_IOPDEN ((uint16_t)0x0020) /*!< I/O port D clock enable */ -#define RCC_APB2ENR_IOPEEN ((uint16_t)0x0040) /*!< I/O port E clock enable */ -#define RCC_APB2ENR_IOPFEN ((uint16_t)0x0080) /*!< I/O port F clock enable */ -#define RCC_APB2ENR_IOPGEN ((uint16_t)0x0100) /*!< I/O port G clock enable */ -#define RCC_APB2ENR_ADC1EN ((uint16_t)0x0200) /*!< ADC 1 interface clock enable */ -#define RCC_APB2ENR_ADC2EN ((uint16_t)0x0400) /*!< ADC 2 interface clock enable */ -#define RCC_APB2ENR_TIM1EN ((uint16_t)0x0800) /*!< TIM1 Timer clock enable */ -#define RCC_APB2ENR_SPI1EN ((uint16_t)0x1000) /*!< SPI 1 clock enable */ -#define RCC_APB2ENR_TIM8EN ((uint16_t)0x2000) /*!< TIM8 Timer clock enable */ -#define RCC_APB2ENR_USART1EN ((uint16_t)0x4000) /*!< USART1 clock enable */ -#define RCC_APB2ENR_ADC3EN ((uint16_t)0x8000) /*!< DMA1 clock enable */ - -/***************** Bit definition for RCC_APB1ENR register ******************/ -#define RCC_APB1ENR_TIM2EN ((uint32_t)0x00000001) /*!< Timer 2 clock enabled*/ -#define RCC_APB1ENR_TIM3EN ((uint32_t)0x00000002) /*!< Timer 3 clock enable */ -#define RCC_APB1ENR_TIM4EN ((uint32_t)0x00000004) /*!< Timer 4 clock enable */ -#define RCC_APB1ENR_TIM5EN ((uint32_t)0x00000008) /*!< Timer 5 clock enable */ -#define RCC_APB1ENR_TIM6EN ((uint32_t)0x00000010) /*!< Timer 6 clock enable */ -#define RCC_APB1ENR_TIM7EN ((uint32_t)0x00000020) /*!< Timer 7 clock enable */ -#define RCC_APB1ENR_WWDGEN ((uint32_t)0x00000800) /*!< Window Watchdog clock enable */ -#define RCC_APB1ENR_SPI2EN ((uint32_t)0x00004000) /*!< SPI 2 clock enable */ -#define RCC_APB1ENR_SPI3EN ((uint32_t)0x00008000) /*!< SPI 3 clock enable */ -#define RCC_APB1ENR_USART2EN ((uint32_t)0x00020000) /*!< USART 2 clock enable */ -#define RCC_APB1ENR_USART3EN ((uint32_t)0x00040000) /*!< USART 3 clock enable */ -#define RCC_APB1ENR_UART4EN ((uint32_t)0x00080000) /*!< USART 4 clock enable */ -#define RCC_APB1ENR_UART5EN ((uint32_t)0x00100000) /*!< USART 5 clock enable */ -#define RCC_APB1ENR_I2C1EN ((uint32_t)0x00200000) /*!< I2C 1 clock enable */ -#define RCC_APB1ENR_I2C2EN ((uint32_t)0x00400000) /*!< I2C 2 clock enable */ -#define RCC_APB1ENR_USBEN ((uint32_t)0x00800000) /*!< USB clock enable */ -#define RCC_APB1ENR_CANEN ((uint32_t)0x02000000) /*!< CAN clock enable */ -#define RCC_APB1ENR_BKPEN ((uint32_t)0x08000000) /*!< Backup interface clock enable */ -#define RCC_APB1ENR_PWREN ((uint32_t)0x10000000) /*!< Power interface clock enable */ -#define RCC_APB1ENR_DACEN ((uint32_t)0x20000000) /*!< DAC interface clock enable */ - -/******************* Bit definition for RCC_BDCR register *******************/ -#define RCC_BDCR_LSEON ((uint32_t)0x00000001) /*!< External Low Speed oscillator enable */ -#define RCC_BDCR_LSERDY ((uint32_t)0x00000002) /*!< External Low Speed oscillator Ready */ -#define RCC_BDCR_LSEBYP ((uint32_t)0x00000004) /*!< External Low Speed oscillator Bypass */ - -#define RCC_BDCR_RTCSEL ((uint32_t)0x00000300) /*!< RTCSEL[1:0] bits (RTC clock source selection) */ -#define RCC_BDCR_RTCSEL_0 ((uint32_t)0x00000100) /*!< Bit 0 */ -#define RCC_BDCR_RTCSEL_1 ((uint32_t)0x00000200) /*!< Bit 1 */ - -/*!< RTC congiguration */ -#define RCC_BDCR_RTCSEL_NOCLOCK ((uint32_t)0x00000000) /*!< No clock */ -#define RCC_BDCR_RTCSEL_LSE ((uint32_t)0x00000100) /*!< LSE oscillator clock used as RTC clock */ -#define RCC_BDCR_RTCSEL_LSI ((uint32_t)0x00000200) /*!< LSI oscillator clock used as RTC clock */ -#define RCC_BDCR_RTCSEL_HSE ((uint32_t)0x00000300) /*!< HSE oscillator clock divided by 128 used as RTC clock */ - -#define RCC_BDCR_RTCEN ((uint32_t)0x00008000) /*!< RTC clock enable */ -#define RCC_BDCR_BDRST ((uint32_t)0x00010000) /*!< Backup domain software reset */ - -/******************* Bit definition for RCC_CSR register ********************/ -#define RCC_CSR_LSION ((uint32_t)0x00000001) /*!< Internal Low Speed oscillator enable */ -#define RCC_CSR_LSIRDY ((uint32_t)0x00000002) /*!< Internal Low Speed oscillator Ready */ -#define RCC_CSR_RMVF ((uint32_t)0x01000000) /*!< Remove reset flag */ -#define RCC_CSR_PINRSTF ((uint32_t)0x04000000) /*!< PIN reset flag */ -#define RCC_CSR_PORRSTF ((uint32_t)0x08000000) /*!< POR/PDR reset flag */ -#define RCC_CSR_SFTRSTF ((uint32_t)0x10000000) /*!< Software Reset flag */ -#define RCC_CSR_IWDGRSTF ((uint32_t)0x20000000) /*!< Independent Watchdog reset flag */ -#define RCC_CSR_WWDGRSTF ((uint32_t)0x40000000) /*!< Window watchdog reset flag */ -#define RCC_CSR_LPWRRSTF ((uint32_t)0x80000000) /*!< Low-Power reset flag */ - -/******************************************************************************/ -/* */ -/* General Purpose and Alternate Function IO */ -/* */ -/******************************************************************************/ - -/******************* Bit definition for GPIO_CRL register *******************/ -#define GPIO_CRL_MODE ((uint32_t)0x33333333) /*!< Port x mode bits */ - -#define GPIO_CRL_MODE0 ((uint32_t)0x00000003) /*!< MODE0[1:0] bits (Port x mode bits, pin 0) */ -#define GPIO_CRL_MODE0_0 ((uint32_t)0x00000001) /*!< Bit 0 */ -#define GPIO_CRL_MODE0_1 ((uint32_t)0x00000002) /*!< Bit 1 */ - -#define GPIO_CRL_MODE1 ((uint32_t)0x00000030) /*!< MODE1[1:0] bits (Port x mode bits, pin 1) */ -#define GPIO_CRL_MODE1_0 ((uint32_t)0x00000010) /*!< Bit 0 */ -#define GPIO_CRL_MODE1_1 ((uint32_t)0x00000020) /*!< Bit 1 */ - -#define GPIO_CRL_MODE2 ((uint32_t)0x00000300) /*!< MODE2[1:0] bits (Port x mode bits, pin 2) */ -#define GPIO_CRL_MODE2_0 ((uint32_t)0x00000100) /*!< Bit 0 */ -#define GPIO_CRL_MODE2_1 ((uint32_t)0x00000200) /*!< Bit 1 */ - -#define GPIO_CRL_MODE3 ((uint32_t)0x00003000) /*!< MODE3[1:0] bits (Port x mode bits, pin 3) */ -#define GPIO_CRL_MODE3_0 ((uint32_t)0x00001000) /*!< Bit 0 */ -#define GPIO_CRL_MODE3_1 ((uint32_t)0x00002000) /*!< Bit 1 */ - -#define GPIO_CRL_MODE4 ((uint32_t)0x00030000) /*!< MODE4[1:0] bits (Port x mode bits, pin 4) */ -#define GPIO_CRL_MODE4_0 ((uint32_t)0x00010000) /*!< Bit 0 */ -#define GPIO_CRL_MODE4_1 ((uint32_t)0x00020000) /*!< Bit 1 */ - -#define GPIO_CRL_MODE5 ((uint32_t)0x00300000) /*!< MODE5[1:0] bits (Port x mode bits, pin 5) */ -#define GPIO_CRL_MODE5_0 ((uint32_t)0x00100000) /*!< Bit 0 */ -#define GPIO_CRL_MODE5_1 ((uint32_t)0x00200000) /*!< Bit 1 */ - -#define GPIO_CRL_MODE6 ((uint32_t)0x03000000) /*!< MODE6[1:0] bits (Port x mode bits, pin 6) */ -#define GPIO_CRL_MODE6_0 ((uint32_t)0x01000000) /*!< Bit 0 */ -#define GPIO_CRL_MODE6_1 ((uint32_t)0x02000000) /*!< Bit 1 */ - -#define GPIO_CRL_MODE7 ((uint32_t)0x30000000) /*!< MODE7[1:0] bits (Port x mode bits, pin 7) */ -#define GPIO_CRL_MODE7_0 ((uint32_t)0x10000000) /*!< Bit 0 */ -#define GPIO_CRL_MODE7_1 ((uint32_t)0x20000000) /*!< Bit 1 */ - -#define GPIO_CRL_CNF ((uint32_t)0xCCCCCCCC) /*!< Port x configuration bits */ - -#define GPIO_CRL_CNF0 ((uint32_t)0x0000000C) /*!< CNF0[1:0] bits (Port x configuration bits, pin 0) */ -#define GPIO_CRL_CNF0_0 ((uint32_t)0x00000004) /*!< Bit 0 */ -#define GPIO_CRL_CNF0_1 ((uint32_t)0x00000008) /*!< Bit 1 */ - -#define GPIO_CRL_CNF1 ((uint32_t)0x000000C0) /*!< CNF1[1:0] bits (Port x configuration bits, pin 1) */ -#define GPIO_CRL_CNF1_0 ((uint32_t)0x00000040) /*!< Bit 0 */ -#define GPIO_CRL_CNF1_1 ((uint32_t)0x00000080) /*!< Bit 1 */ - -#define GPIO_CRL_CNF2 ((uint32_t)0x00000C00) /*!< CNF2[1:0] bits (Port x configuration bits, pin 2) */ -#define GPIO_CRL_CNF2_0 ((uint32_t)0x00000400) /*!< Bit 0 */ -#define GPIO_CRL_CNF2_1 ((uint32_t)0x00000800) /*!< Bit 1 */ - -#define GPIO_CRL_CNF3 ((uint32_t)0x0000C000) /*!< CNF3[1:0] bits (Port x configuration bits, pin 3) */ -#define GPIO_CRL_CNF3_0 ((uint32_t)0x00004000) /*!< Bit 0 */ -#define GPIO_CRL_CNF3_1 ((uint32_t)0x00008000) /*!< Bit 1 */ - -#define GPIO_CRL_CNF4 ((uint32_t)0x000C0000) /*!< CNF4[1:0] bits (Port x configuration bits, pin 4) */ -#define GPIO_CRL_CNF4_0 ((uint32_t)0x00040000) /*!< Bit 0 */ -#define GPIO_CRL_CNF4_1 ((uint32_t)0x00080000) /*!< Bit 1 */ - -#define GPIO_CRL_CNF5 ((uint32_t)0x00C00000) /*!< CNF5[1:0] bits (Port x configuration bits, pin 5) */ -#define GPIO_CRL_CNF5_0 ((uint32_t)0x00400000) /*!< Bit 0 */ -#define GPIO_CRL_CNF5_1 ((uint32_t)0x00800000) /*!< Bit 1 */ - -#define GPIO_CRL_CNF6 ((uint32_t)0x0C000000) /*!< CNF6[1:0] bits (Port x configuration bits, pin 6) */ -#define GPIO_CRL_CNF6_0 ((uint32_t)0x04000000) /*!< Bit 0 */ -#define GPIO_CRL_CNF6_1 ((uint32_t)0x08000000) /*!< Bit 1 */ - -#define GPIO_CRL_CNF7 ((uint32_t)0xC0000000) /*!< CNF7[1:0] bits (Port x configuration bits, pin 7) */ -#define GPIO_CRL_CNF7_0 ((uint32_t)0x40000000) /*!< Bit 0 */ -#define GPIO_CRL_CNF7_1 ((uint32_t)0x80000000) /*!< Bit 1 */ - -/******************* Bit definition for GPIO_CRH register *******************/ -#define GPIO_CRH_MODE ((uint32_t)0x33333333) /*!< Port x mode bits */ - -#define GPIO_CRH_MODE8 ((uint32_t)0x00000003) /*!< MODE8[1:0] bits (Port x mode bits, pin 8) */ -#define GPIO_CRH_MODE8_0 ((uint32_t)0x00000001) /*!< Bit 0 */ -#define GPIO_CRH_MODE8_1 ((uint32_t)0x00000002) /*!< Bit 1 */ - -#define GPIO_CRH_MODE9 ((uint32_t)0x00000030) /*!< MODE9[1:0] bits (Port x mode bits, pin 9) */ -#define GPIO_CRH_MODE9_0 ((uint32_t)0x00000010) /*!< Bit 0 */ -#define GPIO_CRH_MODE9_1 ((uint32_t)0x00000020) /*!< Bit 1 */ - -#define GPIO_CRH_MODE10 ((uint32_t)0x00000300) /*!< MODE10[1:0] bits (Port x mode bits, pin 10) */ -#define GPIO_CRH_MODE10_0 ((uint32_t)0x00000100) /*!< Bit 0 */ -#define GPIO_CRH_MODE10_1 ((uint32_t)0x00000200) /*!< Bit 1 */ - -#define GPIO_CRH_MODE11 ((uint32_t)0x00003000) /*!< MODE11[1:0] bits (Port x mode bits, pin 11) */ -#define GPIO_CRH_MODE11_0 ((uint32_t)0x00001000) /*!< Bit 0 */ -#define GPIO_CRH_MODE11_1 ((uint32_t)0x00002000) /*!< Bit 1 */ - -#define GPIO_CRH_MODE12 ((uint32_t)0x00030000) /*!< MODE12[1:0] bits (Port x mode bits, pin 12) */ -#define GPIO_CRH_MODE12_0 ((uint32_t)0x00010000) /*!< Bit 0 */ -#define GPIO_CRH_MODE12_1 ((uint32_t)0x00020000) /*!< Bit 1 */ - -#define GPIO_CRH_MODE13 ((uint32_t)0x00300000) /*!< MODE13[1:0] bits (Port x mode bits, pin 13) */ -#define GPIO_CRH_MODE13_0 ((uint32_t)0x00100000) /*!< Bit 0 */ -#define GPIO_CRH_MODE13_1 ((uint32_t)0x00200000) /*!< Bit 1 */ - -#define GPIO_CRH_MODE14 ((uint32_t)0x03000000) /*!< MODE14[1:0] bits (Port x mode bits, pin 14) */ -#define GPIO_CRH_MODE14_0 ((uint32_t)0x01000000) /*!< Bit 0 */ -#define GPIO_CRH_MODE14_1 ((uint32_t)0x02000000) /*!< Bit 1 */ - -#define GPIO_CRH_MODE15 ((uint32_t)0x30000000) /*!< MODE15[1:0] bits (Port x mode bits, pin 15) */ -#define GPIO_CRH_MODE15_0 ((uint32_t)0x10000000) /*!< Bit 0 */ -#define GPIO_CRH_MODE15_1 ((uint32_t)0x20000000) /*!< Bit 1 */ - -#define GPIO_CRH_CNF ((uint32_t)0xCCCCCCCC) /*!< Port x configuration bits */ - -#define GPIO_CRH_CNF8 ((uint32_t)0x0000000C) /*!< CNF8[1:0] bits (Port x configuration bits, pin 8) */ -#define GPIO_CRH_CNF8_0 ((uint32_t)0x00000004) /*!< Bit 0 */ -#define GPIO_CRH_CNF8_1 ((uint32_t)0x00000008) /*!< Bit 1 */ - -#define GPIO_CRH_CNF9 ((uint32_t)0x000000C0) /*!< CNF9[1:0] bits (Port x configuration bits, pin 9) */ -#define GPIO_CRH_CNF9_0 ((uint32_t)0x00000040) /*!< Bit 0 */ -#define GPIO_CRH_CNF9_1 ((uint32_t)0x00000080) /*!< Bit 1 */ - -#define GPIO_CRH_CNF10 ((uint32_t)0x00000C00) /*!< CNF10[1:0] bits (Port x configuration bits, pin 10) */ -#define GPIO_CRH_CNF10_0 ((uint32_t)0x00000400) /*!< Bit 0 */ -#define GPIO_CRH_CNF10_1 ((uint32_t)0x00000800) /*!< Bit 1 */ - -#define GPIO_CRH_CNF11 ((uint32_t)0x0000C000) /*!< CNF11[1:0] bits (Port x configuration bits, pin 11) */ -#define GPIO_CRH_CNF11_0 ((uint32_t)0x00004000) /*!< Bit 0 */ -#define GPIO_CRH_CNF11_1 ((uint32_t)0x00008000) /*!< Bit 1 */ - -#define GPIO_CRH_CNF12 ((uint32_t)0x000C0000) /*!< CNF12[1:0] bits (Port x configuration bits, pin 12) */ -#define GPIO_CRH_CNF12_0 ((uint32_t)0x00040000) /*!< Bit 0 */ -#define GPIO_CRH_CNF12_1 ((uint32_t)0x00080000) /*!< Bit 1 */ - -#define GPIO_CRH_CNF13 ((uint32_t)0x00C00000) /*!< CNF13[1:0] bits (Port x configuration bits, pin 13) */ -#define GPIO_CRH_CNF13_0 ((uint32_t)0x00400000) /*!< Bit 0 */ -#define GPIO_CRH_CNF13_1 ((uint32_t)0x00800000) /*!< Bit 1 */ - -#define GPIO_CRH_CNF14 ((uint32_t)0x0C000000) /*!< CNF14[1:0] bits (Port x configuration bits, pin 14) */ -#define GPIO_CRH_CNF14_0 ((uint32_t)0x04000000) /*!< Bit 0 */ -#define GPIO_CRH_CNF14_1 ((uint32_t)0x08000000) /*!< Bit 1 */ - -#define GPIO_CRH_CNF15 ((uint32_t)0xC0000000) /*!< CNF15[1:0] bits (Port x configuration bits, pin 15) */ -#define GPIO_CRH_CNF15_0 ((uint32_t)0x40000000) /*!< Bit 0 */ -#define GPIO_CRH_CNF15_1 ((uint32_t)0x80000000) /*!< Bit 1 */ - -/*!<****************** Bit definition for GPIO_IDR register *******************/ -#define GPIO_IDR_IDR0 ((uint16_t)0x0001) /*!< Port input data, bit 0 */ -#define GPIO_IDR_IDR1 ((uint16_t)0x0002) /*!< Port input data, bit 1 */ -#define GPIO_IDR_IDR2 ((uint16_t)0x0004) /*!< Port input data, bit 2 */ -#define GPIO_IDR_IDR3 ((uint16_t)0x0008) /*!< Port input data, bit 3 */ -#define GPIO_IDR_IDR4 ((uint16_t)0x0010) /*!< Port input data, bit 4 */ -#define GPIO_IDR_IDR5 ((uint16_t)0x0020) /*!< Port input data, bit 5 */ -#define GPIO_IDR_IDR6 ((uint16_t)0x0040) /*!< Port input data, bit 6 */ -#define GPIO_IDR_IDR7 ((uint16_t)0x0080) /*!< Port input data, bit 7 */ -#define GPIO_IDR_IDR8 ((uint16_t)0x0100) /*!< Port input data, bit 8 */ -#define GPIO_IDR_IDR9 ((uint16_t)0x0200) /*!< Port input data, bit 9 */ -#define GPIO_IDR_IDR10 ((uint16_t)0x0400) /*!< Port input data, bit 10 */ -#define GPIO_IDR_IDR11 ((uint16_t)0x0800) /*!< Port input data, bit 11 */ -#define GPIO_IDR_IDR12 ((uint16_t)0x1000) /*!< Port input data, bit 12 */ -#define GPIO_IDR_IDR13 ((uint16_t)0x2000) /*!< Port input data, bit 13 */ -#define GPIO_IDR_IDR14 ((uint16_t)0x4000) /*!< Port input data, bit 14 */ -#define GPIO_IDR_IDR15 ((uint16_t)0x8000) /*!< Port input data, bit 15 */ - -/******************* Bit definition for GPIO_ODR register *******************/ -#define GPIO_ODR_ODR0 ((uint16_t)0x0001) /*!< Port output data, bit 0 */ -#define GPIO_ODR_ODR1 ((uint16_t)0x0002) /*!< Port output data, bit 1 */ -#define GPIO_ODR_ODR2 ((uint16_t)0x0004) /*!< Port output data, bit 2 */ -#define GPIO_ODR_ODR3 ((uint16_t)0x0008) /*!< Port output data, bit 3 */ -#define GPIO_ODR_ODR4 ((uint16_t)0x0010) /*!< Port output data, bit 4 */ -#define GPIO_ODR_ODR5 ((uint16_t)0x0020) /*!< Port output data, bit 5 */ -#define GPIO_ODR_ODR6 ((uint16_t)0x0040) /*!< Port output data, bit 6 */ -#define GPIO_ODR_ODR7 ((uint16_t)0x0080) /*!< Port output data, bit 7 */ -#define GPIO_ODR_ODR8 ((uint16_t)0x0100) /*!< Port output data, bit 8 */ -#define GPIO_ODR_ODR9 ((uint16_t)0x0200) /*!< Port output data, bit 9 */ -#define GPIO_ODR_ODR10 ((uint16_t)0x0400) /*!< Port output data, bit 10 */ -#define GPIO_ODR_ODR11 ((uint16_t)0x0800) /*!< Port output data, bit 11 */ -#define GPIO_ODR_ODR12 ((uint16_t)0x1000) /*!< Port output data, bit 12 */ -#define GPIO_ODR_ODR13 ((uint16_t)0x2000) /*!< Port output data, bit 13 */ -#define GPIO_ODR_ODR14 ((uint16_t)0x4000) /*!< Port output data, bit 14 */ -#define GPIO_ODR_ODR15 ((uint16_t)0x8000) /*!< Port output data, bit 15 */ - -/****************** Bit definition for GPIO_BSRR register *******************/ -#define GPIO_BSRR_BS0 ((uint32_t)0x00000001) /*!< Port x Set bit 0 */ -#define GPIO_BSRR_BS1 ((uint32_t)0x00000002) /*!< Port x Set bit 1 */ -#define GPIO_BSRR_BS2 ((uint32_t)0x00000004) /*!< Port x Set bit 2 */ -#define GPIO_BSRR_BS3 ((uint32_t)0x00000008) /*!< Port x Set bit 3 */ -#define GPIO_BSRR_BS4 ((uint32_t)0x00000010) /*!< Port x Set bit 4 */ -#define GPIO_BSRR_BS5 ((uint32_t)0x00000020) /*!< Port x Set bit 5 */ -#define GPIO_BSRR_BS6 ((uint32_t)0x00000040) /*!< Port x Set bit 6 */ -#define GPIO_BSRR_BS7 ((uint32_t)0x00000080) /*!< Port x Set bit 7 */ -#define GPIO_BSRR_BS8 ((uint32_t)0x00000100) /*!< Port x Set bit 8 */ -#define GPIO_BSRR_BS9 ((uint32_t)0x00000200) /*!< Port x Set bit 9 */ -#define GPIO_BSRR_BS10 ((uint32_t)0x00000400) /*!< Port x Set bit 10 */ -#define GPIO_BSRR_BS11 ((uint32_t)0x00000800) /*!< Port x Set bit 11 */ -#define GPIO_BSRR_BS12 ((uint32_t)0x00001000) /*!< Port x Set bit 12 */ -#define GPIO_BSRR_BS13 ((uint32_t)0x00002000) /*!< Port x Set bit 13 */ -#define GPIO_BSRR_BS14 ((uint32_t)0x00004000) /*!< Port x Set bit 14 */ -#define GPIO_BSRR_BS15 ((uint32_t)0x00008000) /*!< Port x Set bit 15 */ - -#define GPIO_BSRR_BR0 ((uint32_t)0x00010000) /*!< Port x Reset bit 0 */ -#define GPIO_BSRR_BR1 ((uint32_t)0x00020000) /*!< Port x Reset bit 1 */ -#define GPIO_BSRR_BR2 ((uint32_t)0x00040000) /*!< Port x Reset bit 2 */ -#define GPIO_BSRR_BR3 ((uint32_t)0x00080000) /*!< Port x Reset bit 3 */ -#define GPIO_BSRR_BR4 ((uint32_t)0x00100000) /*!< Port x Reset bit 4 */ -#define GPIO_BSRR_BR5 ((uint32_t)0x00200000) /*!< Port x Reset bit 5 */ -#define GPIO_BSRR_BR6 ((uint32_t)0x00400000) /*!< Port x Reset bit 6 */ -#define GPIO_BSRR_BR7 ((uint32_t)0x00800000) /*!< Port x Reset bit 7 */ -#define GPIO_BSRR_BR8 ((uint32_t)0x01000000) /*!< Port x Reset bit 8 */ -#define GPIO_BSRR_BR9 ((uint32_t)0x02000000) /*!< Port x Reset bit 9 */ -#define GPIO_BSRR_BR10 ((uint32_t)0x04000000) /*!< Port x Reset bit 10 */ -#define GPIO_BSRR_BR11 ((uint32_t)0x08000000) /*!< Port x Reset bit 11 */ -#define GPIO_BSRR_BR12 ((uint32_t)0x10000000) /*!< Port x Reset bit 12 */ -#define GPIO_BSRR_BR13 ((uint32_t)0x20000000) /*!< Port x Reset bit 13 */ -#define GPIO_BSRR_BR14 ((uint32_t)0x40000000) /*!< Port x Reset bit 14 */ -#define GPIO_BSRR_BR15 ((uint32_t)0x80000000) /*!< Port x Reset bit 15 */ - -/******************* Bit definition for GPIO_BRR register *******************/ -#define GPIO_BRR_BR0 ((uint16_t)0x0001) /*!< Port x Reset bit 0 */ -#define GPIO_BRR_BR1 ((uint16_t)0x0002) /*!< Port x Reset bit 1 */ -#define GPIO_BRR_BR2 ((uint16_t)0x0004) /*!< Port x Reset bit 2 */ -#define GPIO_BRR_BR3 ((uint16_t)0x0008) /*!< Port x Reset bit 3 */ -#define GPIO_BRR_BR4 ((uint16_t)0x0010) /*!< Port x Reset bit 4 */ -#define GPIO_BRR_BR5 ((uint16_t)0x0020) /*!< Port x Reset bit 5 */ -#define GPIO_BRR_BR6 ((uint16_t)0x0040) /*!< Port x Reset bit 6 */ -#define GPIO_BRR_BR7 ((uint16_t)0x0080) /*!< Port x Reset bit 7 */ -#define GPIO_BRR_BR8 ((uint16_t)0x0100) /*!< Port x Reset bit 8 */ -#define GPIO_BRR_BR9 ((uint16_t)0x0200) /*!< Port x Reset bit 9 */ -#define GPIO_BRR_BR10 ((uint16_t)0x0400) /*!< Port x Reset bit 10 */ -#define GPIO_BRR_BR11 ((uint16_t)0x0800) /*!< Port x Reset bit 11 */ -#define GPIO_BRR_BR12 ((uint16_t)0x1000) /*!< Port x Reset bit 12 */ -#define GPIO_BRR_BR13 ((uint16_t)0x2000) /*!< Port x Reset bit 13 */ -#define GPIO_BRR_BR14 ((uint16_t)0x4000) /*!< Port x Reset bit 14 */ -#define GPIO_BRR_BR15 ((uint16_t)0x8000) /*!< Port x Reset bit 15 */ - -/****************** Bit definition for GPIO_LCKR register *******************/ -#define GPIO_LCKR_LCK0 ((uint32_t)0x00000001) /*!< Port x Lock bit 0 */ -#define GPIO_LCKR_LCK1 ((uint32_t)0x00000002) /*!< Port x Lock bit 1 */ -#define GPIO_LCKR_LCK2 ((uint32_t)0x00000004) /*!< Port x Lock bit 2 */ -#define GPIO_LCKR_LCK3 ((uint32_t)0x00000008) /*!< Port x Lock bit 3 */ -#define GPIO_LCKR_LCK4 ((uint32_t)0x00000010) /*!< Port x Lock bit 4 */ -#define GPIO_LCKR_LCK5 ((uint32_t)0x00000020) /*!< Port x Lock bit 5 */ -#define GPIO_LCKR_LCK6 ((uint32_t)0x00000040) /*!< Port x Lock bit 6 */ -#define GPIO_LCKR_LCK7 ((uint32_t)0x00000080) /*!< Port x Lock bit 7 */ -#define GPIO_LCKR_LCK8 ((uint32_t)0x00000100) /*!< Port x Lock bit 8 */ -#define GPIO_LCKR_LCK9 ((uint32_t)0x00000200) /*!< Port x Lock bit 9 */ -#define GPIO_LCKR_LCK10 ((uint32_t)0x00000400) /*!< Port x Lock bit 10 */ -#define GPIO_LCKR_LCK11 ((uint32_t)0x00000800) /*!< Port x Lock bit 11 */ -#define GPIO_LCKR_LCK12 ((uint32_t)0x00001000) /*!< Port x Lock bit 12 */ -#define GPIO_LCKR_LCK13 ((uint32_t)0x00002000) /*!< Port x Lock bit 13 */ -#define GPIO_LCKR_LCK14 ((uint32_t)0x00004000) /*!< Port x Lock bit 14 */ -#define GPIO_LCKR_LCK15 ((uint32_t)0x00008000) /*!< Port x Lock bit 15 */ -#define GPIO_LCKR_LCKK ((uint32_t)0x00010000) /*!< Lock key */ - -/*----------------------------------------------------------------------------*/ - -/****************** Bit definition for AFIO_EVCR register *******************/ -#define AFIO_EVCR_PIN ((uint8_t)0x0F) /*!< PIN[3:0] bits (Pin selection) */ -#define AFIO_EVCR_PIN_0 ((uint8_t)0x01) /*!< Bit 0 */ -#define AFIO_EVCR_PIN_1 ((uint8_t)0x02) /*!< Bit 1 */ -#define AFIO_EVCR_PIN_2 ((uint8_t)0x04) /*!< Bit 2 */ -#define AFIO_EVCR_PIN_3 ((uint8_t)0x08) /*!< Bit 3 */ - -/*!< PIN configuration */ -#define AFIO_EVCR_PIN_PX0 ((uint8_t)0x00) /*!< Pin 0 selected */ -#define AFIO_EVCR_PIN_PX1 ((uint8_t)0x01) /*!< Pin 1 selected */ -#define AFIO_EVCR_PIN_PX2 ((uint8_t)0x02) /*!< Pin 2 selected */ -#define AFIO_EVCR_PIN_PX3 ((uint8_t)0x03) /*!< Pin 3 selected */ -#define AFIO_EVCR_PIN_PX4 ((uint8_t)0x04) /*!< Pin 4 selected */ -#define AFIO_EVCR_PIN_PX5 ((uint8_t)0x05) /*!< Pin 5 selected */ -#define AFIO_EVCR_PIN_PX6 ((uint8_t)0x06) /*!< Pin 6 selected */ -#define AFIO_EVCR_PIN_PX7 ((uint8_t)0x07) /*!< Pin 7 selected */ -#define AFIO_EVCR_PIN_PX8 ((uint8_t)0x08) /*!< Pin 8 selected */ -#define AFIO_EVCR_PIN_PX9 ((uint8_t)0x09) /*!< Pin 9 selected */ -#define AFIO_EVCR_PIN_PX10 ((uint8_t)0x0A) /*!< Pin 10 selected */ -#define AFIO_EVCR_PIN_PX11 ((uint8_t)0x0B) /*!< Pin 11 selected */ -#define AFIO_EVCR_PIN_PX12 ((uint8_t)0x0C) /*!< Pin 12 selected */ -#define AFIO_EVCR_PIN_PX13 ((uint8_t)0x0D) /*!< Pin 13 selected */ -#define AFIO_EVCR_PIN_PX14 ((uint8_t)0x0E) /*!< Pin 14 selected */ -#define AFIO_EVCR_PIN_PX15 ((uint8_t)0x0F) /*!< Pin 15 selected */ - -#define AFIO_EVCR_PORT ((uint8_t)0x70) /*!< PORT[2:0] bits (Port selection) */ -#define AFIO_EVCR_PORT_0 ((uint8_t)0x10) /*!< Bit 0 */ -#define AFIO_EVCR_PORT_1 ((uint8_t)0x20) /*!< Bit 1 */ -#define AFIO_EVCR_PORT_2 ((uint8_t)0x40) /*!< Bit 2 */ - -/*!< PORT configuration */ -#define AFIO_EVCR_PORT_PA ((uint8_t)0x00) /*!< Port A selected */ -#define AFIO_EVCR_PORT_PB ((uint8_t)0x10) /*!< Port B selected */ -#define AFIO_EVCR_PORT_PC ((uint8_t)0x20) /*!< Port C selected */ -#define AFIO_EVCR_PORT_PD ((uint8_t)0x30) /*!< Port D selected */ -#define AFIO_EVCR_PORT_PE ((uint8_t)0x40) /*!< Port E selected */ - -#define AFIO_EVCR_EVOE ((uint8_t)0x80) /*!< Event Output Enable */ - -/****************** Bit definition for AFIO_MAPR register *******************/ -#define AFIO_MAPR_SPI1 _REMAP ((uint32_t)0x00000001) /*!< SPI1 remapping */ -#define AFIO_MAPR_I2C1_REMAP ((uint32_t)0x00000002) /*!< I2C1 remapping */ -#define AFIO_MAPR_USART1_REMAP ((uint32_t)0x00000004) /*!< USART1 remapping */ -#define AFIO_MAPR_USART2_REMAP ((uint32_t)0x00000008) /*!< USART2 remapping */ - -#define AFIO_MAPR_USART3_REMAP ((uint32_t)0x00000030) /*!< USART3_REMAP[1:0] bits (USART3 remapping) */ -#define AFIO_MAPR_USART3_REMAP_0 ((uint32_t)0x00000010) /*!< Bit 0 */ -#define AFIO_MAPR_USART3_REMAP_1 ((uint32_t)0x00000020) /*!< Bit 1 */ - -/* USART3_REMAP configuration */ -#define AFIO_MAPR_USART3_REMAP_NOREMAP ((uint32_t)0x00000000) /*!< No remap (TX/PB10, RX/PB11, CK/PB12, CTS/PB13, RTS/PB14) */ -#define AFIO_MAPR_USART3_REMAP_PARTIALREMAP ((uint32_t)0x00000010) /*!< Partial remap (TX/PC10, RX/PC11, CK/PC12, CTS/PB13, RTS/PB14) */ -#define AFIO_MAPR_USART3_REMAP_FULLREMAP ((uint32_t)0x00000030) /*!< Full remap (TX/PD8, RX/PD9, CK/PD10, CTS/PD11, RTS/PD12) */ - -#define AFIO_MAPR_TIM1_REMAP ((uint32_t)0x000000C0) /*!< TIM1_REMAP[1:0] bits (TIM1 remapping) */ -#define AFIO_MAPR_TIM1_REMAP_0 ((uint32_t)0x00000040) /*!< Bit 0 */ -#define AFIO_MAPR_TIM1_REMAP_1 ((uint32_t)0x00000080) /*!< Bit 1 */ - -/*!< TIM1_REMAP configuration */ -#define AFIO_MAPR_TIM1_REMAP_NOREMAP ((uint32_t)0x00000000) /*!< No remap (ETR/PA12, CH1/PA8, CH2/PA9, CH3/PA10, CH4/PA11, BKIN/PB12, CH1N/PB13, CH2N/PB14, CH3N/PB15) */ -#define AFIO_MAPR_TIM1_REMAP_PARTIALREMAP ((uint32_t)0x00000040) /*!< Partial remap (ETR/PA12, CH1/PA8, CH2/PA9, CH3/PA10, CH4/PA11, BKIN/PA6, CH1N/PA7, CH2N/PB0, CH3N/PB1) */ -#define AFIO_MAPR_TIM1_REMAP_FULLREMAP ((uint32_t)0x000000C0) /*!< Full remap (ETR/PE7, CH1/PE9, CH2/PE11, CH3/PE13, CH4/PE14, BKIN/PE15, CH1N/PE8, CH2N/PE10, CH3N/PE12) */ - -#define AFIO_MAPR_TIM2_REMAP ((uint32_t)0x00000300) /*!< TIM2_REMAP[1:0] bits (TIM2 remapping) */ -#define AFIO_MAPR_TIM2_REMAP_0 ((uint32_t)0x00000100) /*!< Bit 0 */ -#define AFIO_MAPR_TIM2_REMAP_1 ((uint32_t)0x00000200) /*!< Bit 1 */ - -/*!< TIM2_REMAP configuration */ -#define AFIO_MAPR_TIM2_REMAP_NOREMAP ((uint32_t)0x00000000) /*!< No remap (CH1/ETR/PA0, CH2/PA1, CH3/PA2, CH4/PA3) */ -#define AFIO_MAPR_TIM2_REMAP_PARTIALREMAP1 ((uint32_t)0x00000100) /*!< Partial remap (CH1/ETR/PA15, CH2/PB3, CH3/PA2, CH4/PA3) */ -#define AFIO_MAPR_TIM2_REMAP_PARTIALREMAP2 ((uint32_t)0x00000200) /*!< Partial remap (CH1/ETR/PA0, CH2/PA1, CH3/PB10, CH4/PB11) */ -#define AFIO_MAPR_TIM2_REMAP_FULLREMAP ((uint32_t)0x00000300) /*!< Full remap (CH1/ETR/PA15, CH2/PB3, CH3/PB10, CH4/PB11) */ - -#define AFIO_MAPR_TIM3_REMAP ((uint32_t)0x00000C00) /*!< TIM3_REMAP[1:0] bits (TIM3 remapping) */ -#define AFIO_MAPR_TIM3_REMAP_0 ((uint32_t)0x00000400) /*!< Bit 0 */ -#define AFIO_MAPR_TIM3_REMAP_1 ((uint32_t)0x00000800) /*!< Bit 1 */ - -/*!< TIM3_REMAP configuration */ -#define AFIO_MAPR_TIM3_REMAP_NOREMAP ((uint32_t)0x00000000) /*!< No remap (CH1/PA6, CH2/PA7, CH3/PB0, CH4/PB1) */ -#define AFIO_MAPR_TIM3_REMAP_PARTIALREMAP ((uint32_t)0x00000800) /*!< Partial remap (CH1/PB4, CH2/PB5, CH3/PB0, CH4/PB1) */ -#define AFIO_MAPR_TIM3_REMAP_FULLREMAP ((uint32_t)0x00000C00) /*!< Full remap (CH1/PC6, CH2/PC7, CH3/PC8, CH4/PC9) */ - -#define AFIO_MAPR_TIM4_REMAP ((uint32_t)0x00001000) /*!< Port D0/Port D1 mapping on OSC_IN/OSC_OUT */ - -#define AFIO_MAPR_CAN_REMAP ((uint32_t)0x00006000) /*!< CAN_REMAP[1:0] bits (CAN Alternate function remapping) */ -#define AFIO_MAPR_CAN_REMAP_0 ((uint32_t)0x00002000) /*!< Bit 0 */ -#define AFIO_MAPR_CAN_REMAP_1 ((uint32_t)0x00004000) /*!< Bit 1 */ - -/*!< CAN_REMAP configuration */ -#define AFIO_MAPR_CAN_REMAP_REMAP1 ((uint32_t)0x00000000) /*!< CANRX mapped to PA11, CANTX mapped to PA12 */ -#define AFIO_MAPR_CAN_REMAP_REMAP2 ((uint32_t)0x00004000) /*!< CANRX mapped to PB8, CANTX mapped to PB9 */ -#define AFIO_MAPR_CAN_REMAP_REMAP3 ((uint32_t)0x00006000) /*!< CANRX mapped to PD0, CANTX mapped to PD1 */ - -#define AFIO_MAPR_PD01_REMAP ((uint32_t)0x00008000) /*!< Port D0/Port D1 mapping on OSC_IN/OSC_OUT */ -#define AFIO_MAPR_TIM5CH4_IREMAP ((uint32_t)0x00010000) /*!< TIM5 Channel4 Internal Remap */ -#define AFIO_MAPR_ADC1_ETRGINJ_REMAP ((uint32_t)0x00020000) /*!< ADC 1 External Trigger Injected Conversion remapping */ -#define AFIO_MAPR_ADC1_ETRGREG_REMAP ((uint32_t)0x00040000) /*!< ADC 1 External Trigger Regular Conversion remapping */ -#define AFIO_MAPR_ADC2_ETRGINJ_REMAP ((uint32_t)0x00080000) /*!< ADC 2 External Trigger Injected Conversion remapping */ -#define AFIO_MAPR_ADC2_ETRGREG_REMAP ((uint32_t)0x00100000) /*!< ADC 2 External Trigger Regular Conversion remapping */ - -#define AFIO_MAPR_SWJ_CFG ((uint32_t)0x07000000) /*!< SWJ_CFG[2:0] bits (Serial Wire JTAG configuration) */ -#define AFIO_MAPR_SWJ_CFG_0 ((uint32_t)0x01000000) /*!< Bit 0 */ -#define AFIO_MAPR_SWJ_CFG_1 ((uint32_t)0x02000000) /*!< Bit 1 */ -#define AFIO_MAPR_SWJ_CFG_2 ((uint32_t)0x04000000) /*!< Bit 2 */ - -/*!< SWJ_CFG configuration */ -#define AFIO_MAPR_SWJ_CFG_RESET ((uint32_t)0x00000000) /*!< Full SWJ (JTAG-DP + SW-DP) : Reset State */ -#define AFIO_MAPR_SWJ_CFG_NOJNTRST ((uint32_t)0x01000000) /*!< Full SWJ (JTAG-DP + SW-DP) but without JNTRST */ -#define AFIO_MAPR_SWJ_CFG_JTAGDISABLE ((uint32_t)0x02000000) /*!< JTAG-DP Disabled and SW-DP Enabled */ -#define AFIO_MAPR_SWJ_CFG_DISABLE ((uint32_t)0x04000000) /*!< JTAG-DP Disabled and SW-DP Disabled */ - -/***************** Bit definition for AFIO_EXTICR1 register *****************/ -#define AFIO_EXTICR1_EXTI0 ((uint16_t)0x000F) /*!< EXTI 0 configuration */ -#define AFIO_EXTICR1_EXTI1 ((uint16_t)0x00F0) /*!< EXTI 1 configuration */ -#define AFIO_EXTICR1_EXTI2 ((uint16_t)0x0F00) /*!< EXTI 2 configuration */ -#define AFIO_EXTICR1_EXTI3 ((uint16_t)0xF000) /*!< EXTI 3 configuration */ - -/*!< EXTI0 configuration */ -#define AFIO_EXTICR1_EXTI0_PA ((uint16_t)0x0000) /*!< PA[0] pin */ -#define AFIO_EXTICR1_EXTI0_PB ((uint16_t)0x0001) /*!< PB[0] pin */ -#define AFIO_EXTICR1_EXTI0_PC ((uint16_t)0x0002) /*!< PC[0] pin */ -#define AFIO_EXTICR1_EXTI0_PD ((uint16_t)0x0003) /*!< PD[0] pin */ -#define AFIO_EXTICR1_EXTI0_PE ((uint16_t)0x0004) /*!< PE[0] pin */ -#define AFIO_EXTICR1_EXTI0_PF ((uint16_t)0x0005) /*!< PF[0] pin */ -#define AFIO_EXTICR1_EXTI0_PG ((uint16_t)0x0006) /*!< PG[0] pin */ - -/*!< EXTI1 configuration */ -#define AFIO_EXTICR1_EXTI1_PA ((uint16_t)0x0000) /*!< PA[1] pin */ -#define AFIO_EXTICR1_EXTI1_PB ((uint16_t)0x0010) /*!< PB[1] pin */ -#define AFIO_EXTICR1_EXTI1_PC ((uint16_t)0x0020) /*!< PC[1] pin */ -#define AFIO_EXTICR1_EXTI1_PD ((uint16_t)0x0030) /*!< PD[1] pin */ -#define AFIO_EXTICR1_EXTI1_PE ((uint16_t)0x0040) /*!< PE[1] pin */ -#define AFIO_EXTICR1_EXTI1_PF ((uint16_t)0x0050) /*!< PF[1] pin */ -#define AFIO_EXTICR1_EXTI1_PG ((uint16_t)0x0060) /*!< PG[1] pin */ - -/*!< EXTI2 configuration */ -#define AFIO_EXTICR1_EXTI2_PA ((uint16_t)0x0000) /*!< PA[2] pin */ -#define AFIO_EXTICR1_EXTI2_PB ((uint16_t)0x0100) /*!< PB[2] pin */ -#define AFIO_EXTICR1_EXTI2_PC ((uint16_t)0x0200) /*!< PC[2] pin */ -#define AFIO_EXTICR1_EXTI2_PD ((uint16_t)0x0300) /*!< PD[2] pin */ -#define AFIO_EXTICR1_EXTI2_PE ((uint16_t)0x0400) /*!< PE[2] pin */ -#define AFIO_EXTICR1_EXTI2_PF ((uint16_t)0x0500) /*!< PF[2] pin */ -#define AFIO_EXTICR1_EXTI2_PG ((uint16_t)0x0600) /*!< PG[2] pin */ - -/*!< EXTI3 configuration */ -#define AFIO_EXTICR1_EXTI3_PA ((uint16_t)0x0000) /*!< PA[3] pin */ -#define AFIO_EXTICR1_EXTI3_PB ((uint16_t)0x1000) /*!< PB[3] pin */ -#define AFIO_EXTICR1_EXTI3_PC ((uint16_t)0x2000) /*!< PC[3] pin */ -#define AFIO_EXTICR1_EXTI3_PD ((uint16_t)0x3000) /*!< PD[3] pin */ -#define AFIO_EXTICR1_EXTI3_PE ((uint16_t)0x4000) /*!< PE[3] pin */ -#define AFIO_EXTICR1_EXTI3_PF ((uint16_t)0x5000) /*!< PF[3] pin */ -#define AFIO_EXTICR1_EXTI3_PG ((uint16_t)0x6000) /*!< PG[3] pin */ - -/***************** Bit definition for AFIO_EXTICR2 register *****************/ -#define AFIO_EXTICR2_EXTI4 ((uint16_t)0x000F) /*!< EXTI 4 configuration */ -#define AFIO_EXTICR2_EXTI5 ((uint16_t)0x00F0) /*!< EXTI 5 configuration */ -#define AFIO_EXTICR2_EXTI6 ((uint16_t)0x0F00) /*!< EXTI 6 configuration */ -#define AFIO_EXTICR2_EXTI7 ((uint16_t)0xF000) /*!< EXTI 7 configuration */ - -/*!< EXTI4 configuration */ -#define AFIO_EXTICR2_EXTI4_PA ((uint16_t)0x0000) /*!< PA[4] pin */ -#define AFIO_EXTICR2_EXTI4_PB ((uint16_t)0x0001) /*!< PB[4] pin */ -#define AFIO_EXTICR2_EXTI4_PC ((uint16_t)0x0002) /*!< PC[4] pin */ -#define AFIO_EXTICR2_EXTI4_PD ((uint16_t)0x0003) /*!< PD[4] pin */ -#define AFIO_EXTICR2_EXTI4_PE ((uint16_t)0x0004) /*!< PE[4] pin */ -#define AFIO_EXTICR2_EXTI4_PF ((uint16_t)0x0005) /*!< PF[4] pin */ -#define AFIO_EXTICR2_EXTI4_PG ((uint16_t)0x0006) /*!< PG[4] pin */ - -/* EXTI5 configuration */ -#define AFIO_EXTICR2_EXTI5_PA ((uint16_t)0x0000) /*!< PA[5] pin */ -#define AFIO_EXTICR2_EXTI5_PB ((uint16_t)0x0010) /*!< PB[5] pin */ -#define AFIO_EXTICR2_EXTI5_PC ((uint16_t)0x0020) /*!< PC[5] pin */ -#define AFIO_EXTICR2_EXTI5_PD ((uint16_t)0x0030) /*!< PD[5] pin */ -#define AFIO_EXTICR2_EXTI5_PE ((uint16_t)0x0040) /*!< PE[5] pin */ -#define AFIO_EXTICR2_EXTI5_PF ((uint16_t)0x0050) /*!< PF[5] pin */ -#define AFIO_EXTICR2_EXTI5_PG ((uint16_t)0x0060) /*!< PG[5] pin */ - -/*!< EXTI6 configuration */ -#define AFIO_EXTICR2_EXTI6_PA ((uint16_t)0x0000) /*!< PA[6] pin */ -#define AFIO_EXTICR2_EXTI6_PB ((uint16_t)0x0100) /*!< PB[6] pin */ -#define AFIO_EXTICR2_EXTI6_PC ((uint16_t)0x0200) /*!< PC[6] pin */ -#define AFIO_EXTICR2_EXTI6_PD ((uint16_t)0x0300) /*!< PD[6] pin */ -#define AFIO_EXTICR2_EXTI6_PE ((uint16_t)0x0400) /*!< PE[6] pin */ -#define AFIO_EXTICR2_EXTI6_PF ((uint16_t)0x0500) /*!< PF[6] pin */ -#define AFIO_EXTICR2_EXTI6_PG ((uint16_t)0x0600) /*!< PG[6] pin */ - -/*!< EXTI7 configuration */ -#define AFIO_EXTICR2_EXTI7_PA ((uint16_t)0x0000) /*!< PA[7] pin */ -#define AFIO_EXTICR2_EXTI7_PB ((uint16_t)0x1000) /*!< PB[7] pin */ -#define AFIO_EXTICR2_EXTI7_PC ((uint16_t)0x2000) /*!< PC[7] pin */ -#define AFIO_EXTICR2_EXTI7_PD ((uint16_t)0x3000) /*!< PD[7] pin */ -#define AFIO_EXTICR2_EXTI7_PE ((uint16_t)0x4000) /*!< PE[7] pin */ -#define AFIO_EXTICR2_EXTI7_PF ((uint16_t)0x5000) /*!< PF[7] pin */ -#define AFIO_EXTICR2_EXTI7_PG ((uint16_t)0x6000) /*!< PG[7] pin */ - -/***************** Bit definition for AFIO_EXTICR3 register *****************/ -#define AFIO_EXTICR3_EXTI8 ((uint16_t)0x000F) /*!< EXTI 8 configuration */ -#define AFIO_EXTICR3_EXTI9 ((uint16_t)0x00F0) /*!< EXTI 9 configuration */ -#define AFIO_EXTICR3_EXTI10 ((uint16_t)0x0F00) /*!< EXTI 10 configuration */ -#define AFIO_EXTICR3_EXTI11 ((uint16_t)0xF000) /*!< EXTI 11 configuration */ - -/*!< EXTI8 configuration */ -#define AFIO_EXTICR3_EXTI8_PA ((uint16_t)0x0000) /*!< PA[8] pin */ -#define AFIO_EXTICR3_EXTI8_PB ((uint16_t)0x0001) /*!< PB[8] pin */ -#define AFIO_EXTICR3_EXTI8_PC ((uint16_t)0x0002) /*!< PC[8] pin */ -#define AFIO_EXTICR3_EXTI8_PD ((uint16_t)0x0003) /*!< PD[8] pin */ -#define AFIO_EXTICR3_EXTI8_PE ((uint16_t)0x0004) /*!< PE[8] pin */ -#define AFIO_EXTICR3_EXTI8_PF ((uint16_t)0x0005) /*!< PF[8] pin */ -#define AFIO_EXTICR3_EXTI8_PG ((uint16_t)0x0006) /*!< PG[8] pin */ - -/*!< EXTI9 configuration */ -#define AFIO_EXTICR3_EXTI9_PA ((uint16_t)0x0000) /*!< PA[9] pin */ -#define AFIO_EXTICR3_EXTI9_PB ((uint16_t)0x0010) /*!< PB[9] pin */ -#define AFIO_EXTICR3_EXTI9_PC ((uint16_t)0x0020) /*!< PC[9] pin */ -#define AFIO_EXTICR3_EXTI9_PD ((uint16_t)0x0030) /*!< PD[9] pin */ -#define AFIO_EXTICR3_EXTI9_PE ((uint16_t)0x0040) /*!< PE[9] pin */ -#define AFIO_EXTICR3_EXTI9_PF ((uint16_t)0x0050) /*!< PF[9] pin */ -#define AFIO_EXTICR3_EXTI9_PG ((uint16_t)0x0060) /*!< PG[9] pin */ - -/*!< EXTI10 configuration */ -#define AFIO_EXTICR3_EXTI10_PA ((uint16_t)0x0000) /*!< PA[10] pin */ -#define AFIO_EXTICR3_EXTI10_PB ((uint16_t)0x0100) /*!< PB[10] pin */ -#define AFIO_EXTICR3_EXTI10_PC ((uint16_t)0x0200) /*!< PC[10] pin */ -#define AFIO_EXTICR3_EXTI10_PD ((uint16_t)0x0300) /*!< PD[10] pin */ -#define AFIO_EXTICR3_EXTI10_PE ((uint16_t)0x0400) /*!< PE[10] pin */ -#define AFIO_EXTICR3_EXTI10_PF ((uint16_t)0x0500) /*!< PF[10] pin */ -#define AFIO_EXTICR3_EXTI10_PG ((uint16_t)0x0600) /*!< PG[10] pin */ - -/*!< EXTI11 configuration */ -#define AFIO_EXTICR3_EXTI11_PA ((uint16_t)0x0000) /*!< PA[11] pin */ -#define AFIO_EXTICR3_EXTI11_PB ((uint16_t)0x1000) /*!< PB[11] pin */ -#define AFIO_EXTICR3_EXTI11_PC ((uint16_t)0x2000) /*!< PC[11] pin */ -#define AFIO_EXTICR3_EXTI11_PD ((uint16_t)0x3000) /*!< PD[11] pin */ -#define AFIO_EXTICR3_EXTI11_PE ((uint16_t)0x4000) /*!< PE[11] pin */ -#define AFIO_EXTICR3_EXTI11_PF ((uint16_t)0x5000) /*!< PF[11] pin */ -#define AFIO_EXTICR3_EXTI11_PG ((uint16_t)0x6000) /*!< PG[11] pin */ - -/***************** Bit definition for AFIO_EXTICR4 register *****************/ -#define AFIO_EXTICR4_EXTI12 ((uint16_t)0x000F) /*!< EXTI 12 configuration */ -#define AFIO_EXTICR4_EXTI13 ((uint16_t)0x00F0) /*!< EXTI 13 configuration */ -#define AFIO_EXTICR4_EXTI14 ((uint16_t)0x0F00) /*!< EXTI 14 configuration */ -#define AFIO_EXTICR4_EXTI15 ((uint16_t)0xF000) /*!< EXTI 15 configuration */ - -/* EXTI12 configuration */ -#define AFIO_EXTICR4_EXTI12_PA ((uint16_t)0x0000) /*!< PA[12] pin */ -#define AFIO_EXTICR4_EXTI12_PB ((uint16_t)0x0001) /*!< PB[12] pin */ -#define AFIO_EXTICR4_EXTI12_PC ((uint16_t)0x0002) /*!< PC[12] pin */ -#define AFIO_EXTICR4_EXTI12_PD ((uint16_t)0x0003) /*!< PD[12] pin */ -#define AFIO_EXTICR4_EXTI12_PE ((uint16_t)0x0004) /*!< PE[12] pin */ -#define AFIO_EXTICR4_EXTI12_PF ((uint16_t)0x0005) /*!< PF[12] pin */ -#define AFIO_EXTICR4_EXTI12_PG ((uint16_t)0x0006) /*!< PG[12] pin */ - -/* EXTI13 configuration */ -#define AFIO_EXTICR4_EXTI13_PA ((uint16_t)0x0000) /*!< PA[13] pin */ -#define AFIO_EXTICR4_EXTI13_PB ((uint16_t)0x0010) /*!< PB[13] pin */ -#define AFIO_EXTICR4_EXTI13_PC ((uint16_t)0x0020) /*!< PC[13] pin */ -#define AFIO_EXTICR4_EXTI13_PD ((uint16_t)0x0030) /*!< PD[13] pin */ -#define AFIO_EXTICR4_EXTI13_PE ((uint16_t)0x0040) /*!< PE[13] pin */ -#define AFIO_EXTICR4_EXTI13_PF ((uint16_t)0x0050) /*!< PF[13] pin */ -#define AFIO_EXTICR4_EXTI13_PG ((uint16_t)0x0060) /*!< PG[13] pin */ - -/*!< EXTI14 configuration */ -#define AFIO_EXTICR4_EXTI14_PA ((uint16_t)0x0000) /*!< PA[14] pin */ -#define AFIO_EXTICR4_EXTI14_PB ((uint16_t)0x0100) /*!< PB[14] pin */ -#define AFIO_EXTICR4_EXTI14_PC ((uint16_t)0x0200) /*!< PC[14] pin */ -#define AFIO_EXTICR4_EXTI14_PD ((uint16_t)0x0300) /*!< PD[14] pin */ -#define AFIO_EXTICR4_EXTI14_PE ((uint16_t)0x0400) /*!< PE[14] pin */ -#define AFIO_EXTICR4_EXTI14_PF ((uint16_t)0x0500) /*!< PF[14] pin */ -#define AFIO_EXTICR4_EXTI14_PG ((uint16_t)0x0600) /*!< PG[14] pin */ - -/*!< EXTI15 configuration */ -#define AFIO_EXTICR4_EXTI15_PA ((uint16_t)0x0000) /*!< PA[15] pin */ -#define AFIO_EXTICR4_EXTI15_PB ((uint16_t)0x1000) /*!< PB[15] pin */ -#define AFIO_EXTICR4_EXTI15_PC ((uint16_t)0x2000) /*!< PC[15] pin */ -#define AFIO_EXTICR4_EXTI15_PD ((uint16_t)0x3000) /*!< PD[15] pin */ -#define AFIO_EXTICR4_EXTI15_PE ((uint16_t)0x4000) /*!< PE[15] pin */ -#define AFIO_EXTICR4_EXTI15_PF ((uint16_t)0x5000) /*!< PF[15] pin */ -#define AFIO_EXTICR4_EXTI15_PG ((uint16_t)0x6000) /*!< PG[15] pin */ - -/******************************************************************************/ -/* */ -/* SystemTick */ -/* */ -/******************************************************************************/ - -/***************** Bit definition for SysTick_CTRL register *****************/ -#define SysTick_CTRL_ENABLE ((uint32_t)0x00000001) /*!< Counter enable */ -#define SysTick_CTRL_TICKINT ((uint32_t)0x00000002) /*!< Counting down to 0 pends the SysTick handler */ -#define SysTick_CTRL_CLKSOURCE ((uint32_t)0x00000004) /*!< Clock source */ -#define SysTick_CTRL_COUNTFLAG ((uint32_t)0x00010000) /*!< Count Flag */ - -/***************** Bit definition for SysTick_LOAD register *****************/ -#define SysTick_LOAD_RELOAD ((uint32_t)0x00FFFFFF) /*!< Value to load into the SysTick Current Value Register when the counter reaches 0 */ - -/***************** Bit definition for SysTick_VAL register ******************/ -#define SysTick_VAL_CURRENT ((uint32_t)0x00FFFFFF) /*!< Current value at the time the register is accessed */ - -/***************** Bit definition for SysTick_CALIB register ****************/ -#define SysTick_CALIB_TENMS ((uint32_t)0x00FFFFFF) /*!< Reload value to use for 10ms timing */ -#define SysTick_CALIB_SKEW ((uint32_t)0x40000000) /*!< Calibration value is not exactly 10 ms */ -#define SysTick_CALIB_NOREF ((uint32_t)0x80000000) /*!< The reference clock is not provided */ - -/******************************************************************************/ -/* */ -/* Nested Vectored Interrupt Controller */ -/* */ -/******************************************************************************/ - -/****************** Bit definition for NVIC_ISER register *******************/ -#define NVIC_ISER_SETENA ((uint32_t)0xFFFFFFFF) /*!< Interrupt set enable bits */ -#define NVIC_ISER_SETENA_0 ((uint32_t)0x00000001) /*!< bit 0 */ -#define NVIC_ISER_SETENA_1 ((uint32_t)0x00000002) /*!< bit 1 */ -#define NVIC_ISER_SETENA_2 ((uint32_t)0x00000004) /*!< bit 2 */ -#define NVIC_ISER_SETENA_3 ((uint32_t)0x00000008) /*!< bit 3 */ -#define NVIC_ISER_SETENA_4 ((uint32_t)0x00000010) /*!< bit 4 */ -#define NVIC_ISER_SETENA_5 ((uint32_t)0x00000020) /*!< bit 5 */ -#define NVIC_ISER_SETENA_6 ((uint32_t)0x00000040) /*!< bit 6 */ -#define NVIC_ISER_SETENA_7 ((uint32_t)0x00000080) /*!< bit 7 */ -#define NVIC_ISER_SETENA_8 ((uint32_t)0x00000100) /*!< bit 8 */ -#define NVIC_ISER_SETENA_9 ((uint32_t)0x00000200) /*!< bit 9 */ -#define NVIC_ISER_SETENA_10 ((uint32_t)0x00000400) /*!< bit 10 */ -#define NVIC_ISER_SETENA_11 ((uint32_t)0x00000800) /*!< bit 11 */ -#define NVIC_ISER_SETENA_12 ((uint32_t)0x00001000) /*!< bit 12 */ -#define NVIC_ISER_SETENA_13 ((uint32_t)0x00002000) /*!< bit 13 */ -#define NVIC_ISER_SETENA_14 ((uint32_t)0x00004000) /*!< bit 14 */ -#define NVIC_ISER_SETENA_15 ((uint32_t)0x00008000) /*!< bit 15 */ -#define NVIC_ISER_SETENA_16 ((uint32_t)0x00010000) /*!< bit 16 */ -#define NVIC_ISER_SETENA_17 ((uint32_t)0x00020000) /*!< bit 17 */ -#define NVIC_ISER_SETENA_18 ((uint32_t)0x00040000) /*!< bit 18 */ -#define NVIC_ISER_SETENA_19 ((uint32_t)0x00080000) /*!< bit 19 */ -#define NVIC_ISER_SETENA_20 ((uint32_t)0x00100000) /*!< bit 20 */ -#define NVIC_ISER_SETENA_21 ((uint32_t)0x00200000) /*!< bit 21 */ -#define NVIC_ISER_SETENA_22 ((uint32_t)0x00400000) /*!< bit 22 */ -#define NVIC_ISER_SETENA_23 ((uint32_t)0x00800000) /*!< bit 23 */ -#define NVIC_ISER_SETENA_24 ((uint32_t)0x01000000) /*!< bit 24 */ -#define NVIC_ISER_SETENA_25 ((uint32_t)0x02000000) /*!< bit 25 */ -#define NVIC_ISER_SETENA_26 ((uint32_t)0x04000000) /*!< bit 26 */ -#define NVIC_ISER_SETENA_27 ((uint32_t)0x08000000) /*!< bit 27 */ -#define NVIC_ISER_SETENA_28 ((uint32_t)0x10000000) /*!< bit 28 */ -#define NVIC_ISER_SETENA_29 ((uint32_t)0x20000000) /*!< bit 29 */ -#define NVIC_ISER_SETENA_30 ((uint32_t)0x40000000) /*!< bit 30 */ -#define NVIC_ISER_SETENA_31 ((uint32_t)0x80000000) /*!< bit 31 */ - -/****************** Bit definition for NVIC_ICER register *******************/ -#define NVIC_ICER_CLRENA ((uint32_t)0xFFFFFFFF) /*!< Interrupt clear-enable bits */ -#define NVIC_ICER_CLRENA_0 ((uint32_t)0x00000001) /*!< bit 0 */ -#define NVIC_ICER_CLRENA_1 ((uint32_t)0x00000002) /*!< bit 1 */ -#define NVIC_ICER_CLRENA_2 ((uint32_t)0x00000004) /*!< bit 2 */ -#define NVIC_ICER_CLRENA_3 ((uint32_t)0x00000008) /*!< bit 3 */ -#define NVIC_ICER_CLRENA_4 ((uint32_t)0x00000010) /*!< bit 4 */ -#define NVIC_ICER_CLRENA_5 ((uint32_t)0x00000020) /*!< bit 5 */ -#define NVIC_ICER_CLRENA_6 ((uint32_t)0x00000040) /*!< bit 6 */ -#define NVIC_ICER_CLRENA_7 ((uint32_t)0x00000080) /*!< bit 7 */ -#define NVIC_ICER_CLRENA_8 ((uint32_t)0x00000100) /*!< bit 8 */ -#define NVIC_ICER_CLRENA_9 ((uint32_t)0x00000200) /*!< bit 9 */ -#define NVIC_ICER_CLRENA_10 ((uint32_t)0x00000400) /*!< bit 10 */ -#define NVIC_ICER_CLRENA_11 ((uint32_t)0x00000800) /*!< bit 11 */ -#define NVIC_ICER_CLRENA_12 ((uint32_t)0x00001000) /*!< bit 12 */ -#define NVIC_ICER_CLRENA_13 ((uint32_t)0x00002000) /*!< bit 13 */ -#define NVIC_ICER_CLRENA_14 ((uint32_t)0x00004000) /*!< bit 14 */ -#define NVIC_ICER_CLRENA_15 ((uint32_t)0x00008000) /*!< bit 15 */ -#define NVIC_ICER_CLRENA_16 ((uint32_t)0x00010000) /*!< bit 16 */ -#define NVIC_ICER_CLRENA_17 ((uint32_t)0x00020000) /*!< bit 17 */ -#define NVIC_ICER_CLRENA_18 ((uint32_t)0x00040000) /*!< bit 18 */ -#define NVIC_ICER_CLRENA_19 ((uint32_t)0x00080000) /*!< bit 19 */ -#define NVIC_ICER_CLRENA_20 ((uint32_t)0x00100000) /*!< bit 20 */ -#define NVIC_ICER_CLRENA_21 ((uint32_t)0x00200000) /*!< bit 21 */ -#define NVIC_ICER_CLRENA_22 ((uint32_t)0x00400000) /*!< bit 22 */ -#define NVIC_ICER_CLRENA_23 ((uint32_t)0x00800000) /*!< bit 23 */ -#define NVIC_ICER_CLRENA_24 ((uint32_t)0x01000000) /*!< bit 24 */ -#define NVIC_ICER_CLRENA_25 ((uint32_t)0x02000000) /*!< bit 25 */ -#define NVIC_ICER_CLRENA_26 ((uint32_t)0x04000000) /*!< bit 26 */ -#define NVIC_ICER_CLRENA_27 ((uint32_t)0x08000000) /*!< bit 27 */ -#define NVIC_ICER_CLRENA_28 ((uint32_t)0x10000000) /*!< bit 28 */ -#define NVIC_ICER_CLRENA_29 ((uint32_t)0x20000000) /*!< bit 29 */ -#define NVIC_ICER_CLRENA_30 ((uint32_t)0x40000000) /*!< bit 30 */ -#define NVIC_ICER_CLRENA_31 ((uint32_t)0x80000000) /*!< bit 31 */ - -/****************** Bit definition for NVIC_ISPR register *******************/ -#define NVIC_ISPR_SETPEND ((uint32_t)0xFFFFFFFF) /*!< Interrupt set-pending bits */ -#define NVIC_ISPR_SETPEND_0 ((uint32_t)0x00000001) /*!< bit 0 */ -#define NVIC_ISPR_SETPEND_1 ((uint32_t)0x00000002) /*!< bit 1 */ -#define NVIC_ISPR_SETPEND_2 ((uint32_t)0x00000004) /*!< bit 2 */ -#define NVIC_ISPR_SETPEND_3 ((uint32_t)0x00000008) /*!< bit 3 */ -#define NVIC_ISPR_SETPEND_4 ((uint32_t)0x00000010) /*!< bit 4 */ -#define NVIC_ISPR_SETPEND_5 ((uint32_t)0x00000020) /*!< bit 5 */ -#define NVIC_ISPR_SETPEND_6 ((uint32_t)0x00000040) /*!< bit 6 */ -#define NVIC_ISPR_SETPEND_7 ((uint32_t)0x00000080) /*!< bit 7 */ -#define NVIC_ISPR_SETPEND_8 ((uint32_t)0x00000100) /*!< bit 8 */ -#define NVIC_ISPR_SETPEND_9 ((uint32_t)0x00000200) /*!< bit 9 */ -#define NVIC_ISPR_SETPEND_10 ((uint32_t)0x00000400) /*!< bit 10 */ -#define NVIC_ISPR_SETPEND_11 ((uint32_t)0x00000800) /*!< bit 11 */ -#define NVIC_ISPR_SETPEND_12 ((uint32_t)0x00001000) /*!< bit 12 */ -#define NVIC_ISPR_SETPEND_13 ((uint32_t)0x00002000) /*!< bit 13 */ -#define NVIC_ISPR_SETPEND_14 ((uint32_t)0x00004000) /*!< bit 14 */ -#define NVIC_ISPR_SETPEND_15 ((uint32_t)0x00008000) /*!< bit 15 */ -#define NVIC_ISPR_SETPEND_16 ((uint32_t)0x00010000) /*!< bit 16 */ -#define NVIC_ISPR_SETPEND_17 ((uint32_t)0x00020000) /*!< bit 17 */ -#define NVIC_ISPR_SETPEND_18 ((uint32_t)0x00040000) /*!< bit 18 */ -#define NVIC_ISPR_SETPEND_19 ((uint32_t)0x00080000) /*!< bit 19 */ -#define NVIC_ISPR_SETPEND_20 ((uint32_t)0x00100000) /*!< bit 20 */ -#define NVIC_ISPR_SETPEND_21 ((uint32_t)0x00200000) /*!< bit 21 */ -#define NVIC_ISPR_SETPEND_22 ((uint32_t)0x00400000) /*!< bit 22 */ -#define NVIC_ISPR_SETPEND_23 ((uint32_t)0x00800000) /*!< bit 23 */ -#define NVIC_ISPR_SETPEND_24 ((uint32_t)0x01000000) /*!< bit 24 */ -#define NVIC_ISPR_SETPEND_25 ((uint32_t)0x02000000) /*!< bit 25 */ -#define NVIC_ISPR_SETPEND_26 ((uint32_t)0x04000000) /*!< bit 26 */ -#define NVIC_ISPR_SETPEND_27 ((uint32_t)0x08000000) /*!< bit 27 */ -#define NVIC_ISPR_SETPEND_28 ((uint32_t)0x10000000) /*!< bit 28 */ -#define NVIC_ISPR_SETPEND_29 ((uint32_t)0x20000000) /*!< bit 29 */ -#define NVIC_ISPR_SETPEND_30 ((uint32_t)0x40000000) /*!< bit 30 */ -#define NVIC_ISPR_SETPEND_31 ((uint32_t)0x80000000) /*!< bit 31 */ - -/****************** Bit definition for NVIC_ICPR register *******************/ -#define NVIC_ICPR_CLRPEND ((uint32_t)0xFFFFFFFF) /*!< Interrupt clear-pending bits */ -#define NVIC_ICPR_CLRPEND_0 ((uint32_t)0x00000001) /*!< bit 0 */ -#define NVIC_ICPR_CLRPEND_1 ((uint32_t)0x00000002) /*!< bit 1 */ -#define NVIC_ICPR_CLRPEND_2 ((uint32_t)0x00000004) /*!< bit 2 */ -#define NVIC_ICPR_CLRPEND_3 ((uint32_t)0x00000008) /*!< bit 3 */ -#define NVIC_ICPR_CLRPEND_4 ((uint32_t)0x00000010) /*!< bit 4 */ -#define NVIC_ICPR_CLRPEND_5 ((uint32_t)0x00000020) /*!< bit 5 */ -#define NVIC_ICPR_CLRPEND_6 ((uint32_t)0x00000040) /*!< bit 6 */ -#define NVIC_ICPR_CLRPEND_7 ((uint32_t)0x00000080) /*!< bit 7 */ -#define NVIC_ICPR_CLRPEND_8 ((uint32_t)0x00000100) /*!< bit 8 */ -#define NVIC_ICPR_CLRPEND_9 ((uint32_t)0x00000200) /*!< bit 9 */ -#define NVIC_ICPR_CLRPEND_10 ((uint32_t)0x00000400) /*!< bit 10 */ -#define NVIC_ICPR_CLRPEND_11 ((uint32_t)0x00000800) /*!< bit 11 */ -#define NVIC_ICPR_CLRPEND_12 ((uint32_t)0x00001000) /*!< bit 12 */ -#define NVIC_ICPR_CLRPEND_13 ((uint32_t)0x00002000) /*!< bit 13 */ -#define NVIC_ICPR_CLRPEND_14 ((uint32_t)0x00004000) /*!< bit 14 */ -#define NVIC_ICPR_CLRPEND_15 ((uint32_t)0x00008000) /*!< bit 15 */ -#define NVIC_ICPR_CLRPEND_16 ((uint32_t)0x00010000) /*!< bit 16 */ -#define NVIC_ICPR_CLRPEND_17 ((uint32_t)0x00020000) /*!< bit 17 */ -#define NVIC_ICPR_CLRPEND_18 ((uint32_t)0x00040000) /*!< bit 18 */ -#define NVIC_ICPR_CLRPEND_19 ((uint32_t)0x00080000) /*!< bit 19 */ -#define NVIC_ICPR_CLRPEND_20 ((uint32_t)0x00100000) /*!< bit 20 */ -#define NVIC_ICPR_CLRPEND_21 ((uint32_t)0x00200000) /*!< bit 21 */ -#define NVIC_ICPR_CLRPEND_22 ((uint32_t)0x00400000) /*!< bit 22 */ -#define NVIC_ICPR_CLRPEND_23 ((uint32_t)0x00800000) /*!< bit 23 */ -#define NVIC_ICPR_CLRPEND_24 ((uint32_t)0x01000000) /*!< bit 24 */ -#define NVIC_ICPR_CLRPEND_25 ((uint32_t)0x02000000) /*!< bit 25 */ -#define NVIC_ICPR_CLRPEND_26 ((uint32_t)0x04000000) /*!< bit 26 */ -#define NVIC_ICPR_CLRPEND_27 ((uint32_t)0x08000000) /*!< bit 27 */ -#define NVIC_ICPR_CLRPEND_28 ((uint32_t)0x10000000) /*!< bit 28 */ -#define NVIC_ICPR_CLRPEND_29 ((uint32_t)0x20000000) /*!< bit 29 */ -#define NVIC_ICPR_CLRPEND_30 ((uint32_t)0x40000000) /*!< bit 30 */ -#define NVIC_ICPR_CLRPEND_31 ((uint32_t)0x80000000) /*!< bit 31 */ - -/****************** Bit definition for NVIC_IABR register *******************/ -#define NVIC_IABR_ACTIVE ((uint32_t)0xFFFFFFFF) /*!< Interrupt active flags */ -#define NVIC_IABR_ACTIVE_0 ((uint32_t)0x00000001) /*!< bit 0 */ -#define NVIC_IABR_ACTIVE_1 ((uint32_t)0x00000002) /*!< bit 1 */ -#define NVIC_IABR_ACTIVE_2 ((uint32_t)0x00000004) /*!< bit 2 */ -#define NVIC_IABR_ACTIVE_3 ((uint32_t)0x00000008) /*!< bit 3 */ -#define NVIC_IABR_ACTIVE_4 ((uint32_t)0x00000010) /*!< bit 4 */ -#define NVIC_IABR_ACTIVE_5 ((uint32_t)0x00000020) /*!< bit 5 */ -#define NVIC_IABR_ACTIVE_6 ((uint32_t)0x00000040) /*!< bit 6 */ -#define NVIC_IABR_ACTIVE_7 ((uint32_t)0x00000080) /*!< bit 7 */ -#define NVIC_IABR_ACTIVE_8 ((uint32_t)0x00000100) /*!< bit 8 */ -#define NVIC_IABR_ACTIVE_9 ((uint32_t)0x00000200) /*!< bit 9 */ -#define NVIC_IABR_ACTIVE_10 ((uint32_t)0x00000400) /*!< bit 10 */ -#define NVIC_IABR_ACTIVE_11 ((uint32_t)0x00000800) /*!< bit 11 */ -#define NVIC_IABR_ACTIVE_12 ((uint32_t)0x00001000) /*!< bit 12 */ -#define NVIC_IABR_ACTIVE_13 ((uint32_t)0x00002000) /*!< bit 13 */ -#define NVIC_IABR_ACTIVE_14 ((uint32_t)0x00004000) /*!< bit 14 */ -#define NVIC_IABR_ACTIVE_15 ((uint32_t)0x00008000) /*!< bit 15 */ -#define NVIC_IABR_ACTIVE_16 ((uint32_t)0x00010000) /*!< bit 16 */ -#define NVIC_IABR_ACTIVE_17 ((uint32_t)0x00020000) /*!< bit 17 */ -#define NVIC_IABR_ACTIVE_18 ((uint32_t)0x00040000) /*!< bit 18 */ -#define NVIC_IABR_ACTIVE_19 ((uint32_t)0x00080000) /*!< bit 19 */ -#define NVIC_IABR_ACTIVE_20 ((uint32_t)0x00100000) /*!< bit 20 */ -#define NVIC_IABR_ACTIVE_21 ((uint32_t)0x00200000) /*!< bit 21 */ -#define NVIC_IABR_ACTIVE_22 ((uint32_t)0x00400000) /*!< bit 22 */ -#define NVIC_IABR_ACTIVE_23 ((uint32_t)0x00800000) /*!< bit 23 */ -#define NVIC_IABR_ACTIVE_24 ((uint32_t)0x01000000) /*!< bit 24 */ -#define NVIC_IABR_ACTIVE_25 ((uint32_t)0x02000000) /*!< bit 25 */ -#define NVIC_IABR_ACTIVE_26 ((uint32_t)0x04000000) /*!< bit 26 */ -#define NVIC_IABR_ACTIVE_27 ((uint32_t)0x08000000) /*!< bit 27 */ -#define NVIC_IABR_ACTIVE_28 ((uint32_t)0x10000000) /*!< bit 28 */ -#define NVIC_IABR_ACTIVE_29 ((uint32_t)0x20000000) /*!< bit 29 */ -#define NVIC_IABR_ACTIVE_30 ((uint32_t)0x40000000) /*!< bit 30 */ -#define NVIC_IABR_ACTIVE_31 ((uint32_t)0x80000000) /*!< bit 31 */ - -/****************** Bit definition for NVIC_PRI0 register *******************/ -#define NVIC_IPR0_PRI_0 ((uint32_t)0x000000FF) /*!< Priority of interrupt 0 */ -#define NVIC_IPR0_PRI_1 ((uint32_t)0x0000FF00) /*!< Priority of interrupt 1 */ -#define NVIC_IPR0_PRI_2 ((uint32_t)0x00FF0000) /*!< Priority of interrupt 2 */ -#define NVIC_IPR0_PRI_3 ((uint32_t)0xFF000000) /*!< Priority of interrupt 3 */ - -/****************** Bit definition for NVIC_PRI1 register *******************/ -#define NVIC_IPR1_PRI_4 ((uint32_t)0x000000FF) /*!< Priority of interrupt 4 */ -#define NVIC_IPR1_PRI_5 ((uint32_t)0x0000FF00) /*!< Priority of interrupt 5 */ -#define NVIC_IPR1_PRI_6 ((uint32_t)0x00FF0000) /*!< Priority of interrupt 6 */ -#define NVIC_IPR1_PRI_7 ((uint32_t)0xFF000000) /*!< Priority of interrupt 7 */ - -/****************** Bit definition for NVIC_PRI2 register *******************/ -#define NVIC_IPR2_PRI_8 ((uint32_t)0x000000FF) /*!< Priority of interrupt 8 */ -#define NVIC_IPR2_PRI_9 ((uint32_t)0x0000FF00) /*!< Priority of interrupt 9 */ -#define NVIC_IPR2_PRI_10 ((uint32_t)0x00FF0000) /*!< Priority of interrupt 10 */ -#define NVIC_IPR2_PRI_11 ((uint32_t)0xFF000000) /*!< Priority of interrupt 11 */ - -/****************** Bit definition for NVIC_PRI3 register *******************/ -#define NVIC_IPR3_PRI_12 ((uint32_t)0x000000FF) /*!< Priority of interrupt 12 */ -#define NVIC_IPR3_PRI_13 ((uint32_t)0x0000FF00) /*!< Priority of interrupt 13 */ -#define NVIC_IPR3_PRI_14 ((uint32_t)0x00FF0000) /*!< Priority of interrupt 14 */ -#define NVIC_IPR3_PRI_15 ((uint32_t)0xFF000000) /*!< Priority of interrupt 15 */ - -/****************** Bit definition for NVIC_PRI4 register *******************/ -#define NVIC_IPR4_PRI_16 ((uint32_t)0x000000FF) /*!< Priority of interrupt 16 */ -#define NVIC_IPR4_PRI_17 ((uint32_t)0x0000FF00) /*!< Priority of interrupt 17 */ -#define NVIC_IPR4_PRI_18 ((uint32_t)0x00FF0000) /*!< Priority of interrupt 18 */ -#define NVIC_IPR4_PRI_19 ((uint32_t)0xFF000000) /*!< Priority of interrupt 19 */ - -/****************** Bit definition for NVIC_PRI5 register *******************/ -#define NVIC_IPR5_PRI_20 ((uint32_t)0x000000FF) /*!< Priority of interrupt 20 */ -#define NVIC_IPR5_PRI_21 ((uint32_t)0x0000FF00) /*!< Priority of interrupt 21 */ -#define NVIC_IPR5_PRI_22 ((uint32_t)0x00FF0000) /*!< Priority of interrupt 22 */ -#define NVIC_IPR5_PRI_23 ((uint32_t)0xFF000000) /*!< Priority of interrupt 23 */ - -/****************** Bit definition for NVIC_PRI6 register *******************/ -#define NVIC_IPR6_PRI_24 ((uint32_t)0x000000FF) /*!< Priority of interrupt 24 */ -#define NVIC_IPR6_PRI_25 ((uint32_t)0x0000FF00) /*!< Priority of interrupt 25 */ -#define NVIC_IPR6_PRI_26 ((uint32_t)0x00FF0000) /*!< Priority of interrupt 26 */ -#define NVIC_IPR6_PRI_27 ((uint32_t)0xFF000000) /*!< Priority of interrupt 27 */ - -/****************** Bit definition for NVIC_PRI7 register *******************/ -#define NVIC_IPR7_PRI_28 ((uint32_t)0x000000FF) /*!< Priority of interrupt 28 */ -#define NVIC_IPR7_PRI_29 ((uint32_t)0x0000FF00) /*!< Priority of interrupt 29 */ -#define NVIC_IPR7_PRI_30 ((uint32_t)0x00FF0000) /*!< Priority of interrupt 30 */ -#define NVIC_IPR7_PRI_31 ((uint32_t)0xFF000000) /*!< Priority of interrupt 31 */ - -/****************** Bit definition for SCB_CPUID register *******************/ -#define SCB_CPUID_REVISION ((uint32_t)0x0000000F) /*!< Implementation defined revision number */ -#define SCB_CPUID_PARTNO ((uint32_t)0x0000FFF0) /*!< Number of processor within family */ -#define SCB_CPUID_Constant ((uint32_t)0x000F0000) /*!< Reads as 0x0F */ -#define SCB_CPUID_VARIANT ((uint32_t)0x00F00000) /*!< Implementation defined variant number */ -#define SCB_CPUID_IMPLEMENTER ((uint32_t)0xFF000000) /*!< Implementer code. ARM is 0x41 */ - -/******************* Bit definition for SCB_ICSR register *******************/ -#define SCB_ICSR_VECTACTIVE ((uint32_t)0x000001FF) /*!< Active ISR number field */ -#define SCB_ICSR_RETTOBASE ((uint32_t)0x00000800) /*!< All active exceptions minus the IPSR_current_exception yields the empty set */ -#define SCB_ICSR_VECTPENDING ((uint32_t)0x003FF000) /*!< Pending ISR number field */ -#define SCB_ICSR_ISRPENDING ((uint32_t)0x00400000) /*!< Interrupt pending flag */ -#define SCB_ICSR_ISRPREEMPT ((uint32_t)0x00800000) /*!< It indicates that a pending interrupt becomes active in the next running cycle */ -#define SCB_ICSR_PENDSTCLR ((uint32_t)0x02000000) /*!< Clear pending SysTick bit */ -#define SCB_ICSR_PENDSTSET ((uint32_t)0x04000000) /*!< Set pending SysTick bit */ -#define SCB_ICSR_PENDSVCLR ((uint32_t)0x08000000) /*!< Clear pending pendSV bit */ -#define SCB_ICSR_PENDSVSET ((uint32_t)0x10000000) /*!< Set pending pendSV bit */ -#define SCB_ICSR_NMIPENDSET ((uint32_t)0x80000000) /*!< Set pending NMI bit */ - -/******************* Bit definition for SCB_VTOR register *******************/ -#define SCB_VTOR_TBLOFF ((uint32_t)0x1FFFFF80) /*!< Vector table base offset field */ -#define SCB_VTOR_TBLBASE ((uint32_t)0x20000000) /*!< Table base in code(0) or RAM(1) */ - -/*!<***************** Bit definition for SCB_AIRCR register *******************/ -#define SCB_AIRCR_VECTRESET ((uint32_t)0x00000001) /*!< System Reset bit */ -#define SCB_AIRCR_VECTCLRACTIVE ((uint32_t)0x00000002) /*!< Clear active vector bit */ -#define SCB_AIRCR_SYSRESETREQ ((uint32_t)0x00000004) /*!< Requests chip control logic to generate a reset */ - -#define SCB_AIRCR_PRIGROUP ((uint32_t)0x00000700) /*!< PRIGROUP[2:0] bits (Priority group) */ -#define SCB_AIRCR_PRIGROUP_0 ((uint32_t)0x00000100) /*!< Bit 0 */ -#define SCB_AIRCR_PRIGROUP_1 ((uint32_t)0x00000200) /*!< Bit 1 */ -#define SCB_AIRCR_PRIGROUP_2 ((uint32_t)0x00000400) /*!< Bit 2 */ - -/* prority group configuration */ -#define SCB_AIRCR_PRIGROUP0 ((uint32_t)0x00000000) /*!< Priority group=0 (7 bits of pre-emption priority, 1 bit of subpriority) */ -#define SCB_AIRCR_PRIGROUP1 ((uint32_t)0x00000100) /*!< Priority group=1 (6 bits of pre-emption priority, 2 bits of subpriority) */ -#define SCB_AIRCR_PRIGROUP2 ((uint32_t)0x00000200) /*!< Priority group=2 (5 bits of pre-emption priority, 3 bits of subpriority) */ -#define SCB_AIRCR_PRIGROUP3 ((uint32_t)0x00000300) /*!< Priority group=3 (4 bits of pre-emption priority, 4 bits of subpriority) */ -#define SCB_AIRCR_PRIGROUP4 ((uint32_t)0x00000400) /*!< Priority group=4 (3 bits of pre-emption priority, 5 bits of subpriority) */ -#define SCB_AIRCR_PRIGROUP5 ((uint32_t)0x00000500) /*!< Priority group=5 (2 bits of pre-emption priority, 6 bits of subpriority) */ -#define SCB_AIRCR_PRIGROUP6 ((uint32_t)0x00000600) /*!< Priority group=6 (1 bit of pre-emption priority, 7 bits of subpriority) */ -#define SCB_AIRCR_PRIGROUP7 ((uint32_t)0x00000700) /*!< Priority group=7 (no pre-emption priority, 8 bits of subpriority) */ - -#define SCB_AIRCR_ENDIANESS ((uint32_t)0x00008000) /*!< Data endianness bit */ -#define SCB_AIRCR_VECTKEY ((uint32_t)0xFFFF0000) /*!< Register key (VECTKEY) - Reads as 0xFA05 (VECTKEYSTAT) */ - -/******************* Bit definition for SCB_SCR register ********************/ -#define SCB_SCR_SLEEPONEXIT ((uint8_t)0x02) /*!< Sleep on exit bit */ -#define SCB_SCR_SLEEPDEEP ((uint8_t)0x04) /*!< Sleep deep bit */ -#define SCB_SCR_SEVONPEND ((uint8_t)0x10) /*!< Wake up from WFE */ - -/******************** Bit definition for SCB_CCR register *******************/ -#define SCB_CCR_NONBASETHRDENA ((uint16_t)0x0001) /*!< Thread mode can be entered from any level in Handler mode by controlled return value */ -#define SCB_CCR_USERSETMPEND ((uint16_t)0x0002) /*!< Enables user code to write the Software Trigger Interrupt register to trigger (pend) a Main exception */ -#define SCB_CCR_UNALIGN_TRP ((uint16_t)0x0008) /*!< Trap for unaligned access */ -#define SCB_CCR_DIV_0_TRP ((uint16_t)0x0010) /*!< Trap on Divide by 0 */ -#define SCB_CCR_BFHFNMIGN ((uint16_t)0x0100) /*!< Handlers running at priority -1 and -2 */ -#define SCB_CCR_STKALIGN ((uint16_t)0x0200) /*!< On exception entry, the SP used prior to the exception is adjusted to be 8-byte aligned */ - -/******************* Bit definition for SCB_SHPR register ********************/ -#define SCB_SHPR_PRI_N ((uint32_t)0x000000FF) /*!< Priority of system handler 4,8, and 12. Mem Manage, reserved and Debug Monitor */ -#define SCB_SHPR_PRI_N1 ((uint32_t)0x0000FF00) /*!< Priority of system handler 5,9, and 13. Bus Fault, reserved and reserved */ -#define SCB_SHPR_PRI_N2 ((uint32_t)0x00FF0000) /*!< Priority of system handler 6,10, and 14. Usage Fault, reserved and PendSV */ -#define SCB_SHPR_PRI_N3 ((uint32_t)0xFF000000) /*!< Priority of system handler 7,11, and 15. Reserved, SVCall and SysTick */ - -/****************** Bit definition for SCB_SHCSR register *******************/ -#define SCB_SHCSR_MEMFAULTACT ((uint32_t)0x00000001) /*!< MemManage is active */ -#define SCB_SHCSR_BUSFAULTACT ((uint32_t)0x00000002) /*!< BusFault is active */ -#define SCB_SHCSR_USGFAULTACT ((uint32_t)0x00000008) /*!< UsageFault is active */ -#define SCB_SHCSR_SVCALLACT ((uint32_t)0x00000080) /*!< SVCall is active */ -#define SCB_SHCSR_MONITORACT ((uint32_t)0x00000100) /*!< Monitor is active */ -#define SCB_SHCSR_PENDSVACT ((uint32_t)0x00000400) /*!< PendSV is active */ -#define SCB_SHCSR_SYSTICKACT ((uint32_t)0x00000800) /*!< SysTick is active */ -#define SCB_SHCSR_USGFAULTPENDED ((uint32_t)0x00001000) /*!< Usage Fault is pended */ -#define SCB_SHCSR_MEMFAULTPENDED ((uint32_t)0x00002000) /*!< MemManage is pended */ -#define SCB_SHCSR_BUSFAULTPENDED ((uint32_t)0x00004000) /*!< Bus Fault is pended */ -#define SCB_SHCSR_SVCALLPENDED ((uint32_t)0x00008000) /*!< SVCall is pended */ -#define SCB_SHCSR_MEMFAULTENA ((uint32_t)0x00010000) /*!< MemManage enable */ -#define SCB_SHCSR_BUSFAULTENA ((uint32_t)0x00020000) /*!< Bus Fault enable */ -#define SCB_SHCSR_USGFAULTENA ((uint32_t)0x00040000) /*!< UsageFault enable */ - -/******************* Bit definition for SCB_CFSR register *******************/ -/*!< MFSR */ -#define SCB_CFSR_IACCVIOL ((uint32_t)0x00000001) /*!< Instruction access violation */ -#define SCB_CFSR_DACCVIOL ((uint32_t)0x00000002) /*!< Data access violation */ -#define SCB_CFSR_MUNSTKERR ((uint32_t)0x00000008) /*!< Unstacking error */ -#define SCB_CFSR_MSTKERR ((uint32_t)0x00000010) /*!< Stacking error */ -#define SCB_CFSR_MMARVALID ((uint32_t)0x00000080) /*!< Memory Manage Address Register address valid flag */ -/*!< BFSR */ -#define SCB_CFSR_IBUSERR ((uint32_t)0x00000100) /*!< Instruction bus error flag */ -#define SCB_CFSR_PRECISERR ((uint32_t)0x00000200) /*!< Precise data bus error */ -#define SCB_CFSR_IMPRECISERR ((uint32_t)0x00000400) /*!< Imprecise data bus error */ -#define SCB_CFSR_UNSTKERR ((uint32_t)0x00000800) /*!< Unstacking error */ -#define SCB_CFSR_STKERR ((uint32_t)0x00001000) /*!< Stacking error */ -#define SCB_CFSR_BFARVALID ((uint32_t)0x00008000) /*!< Bus Fault Address Register address valid flag */ -/*!< UFSR */ -#define SCB_CFSR_UNDEFINSTR ((uint32_t)0x00010000) /*!< The processor attempt to excecute an undefined instruction */ -#define SCB_CFSR_INVSTATE ((uint32_t)0x00020000) /*!< Invalid combination of EPSR and instruction */ -#define SCB_CFSR_INVPC ((uint32_t)0x00040000) /*!< Attempt to load EXC_RETURN into pc illegally */ -#define SCB_CFSR_NOCP ((uint32_t)0x00080000) /*!< Attempt to use a coprocessor instruction */ -#define SCB_CFSR_UNALIGNED ((uint32_t)0x01000000) /*!< Fault occurs when there is an attempt to make an unaligned memory access */ -#define SCB_CFSR_DIVBYZERO ((uint32_t)0x02000000) /*!< Fault occurs when SDIV or DIV instruction is used with a divisor of 0 */ - -/******************* Bit definition for SCB_HFSR register *******************/ -#define SCB_HFSR_VECTTBL ((uint32_t)0x00000002) /*!< Fault occures because of vector table read on exception processing */ -#define SCB_HFSR_FORCED ((uint32_t)0x40000000) /*!< Hard Fault activated when a configurable Fault was received and cannot activate */ -#define SCB_HFSR_DEBUGEVT ((uint32_t)0x80000000) /*!< Fault related to debug */ - -/******************* Bit definition for SCB_DFSR register *******************/ -#define SCB_DFSR_HALTED ((uint8_t)0x01) /*!< Halt request flag */ -#define SCB_DFSR_BKPT ((uint8_t)0x02) /*!< BKPT flag */ -#define SCB_DFSR_DWTTRAP ((uint8_t)0x04) /*!< Data Watchpoint and Trace (DWT) flag */ -#define SCB_DFSR_VCATCH ((uint8_t)0x08) /*!< Vector catch flag */ -#define SCB_DFSR_EXTERNAL ((uint8_t)0x10) /*!< External debug request flag */ - -/******************* Bit definition for SCB_MMFAR register ******************/ -#define SCB_MMFAR_ADDRESS ((uint32_t)0xFFFFFFFF) /*!< Mem Manage fault address field */ - -/******************* Bit definition for SCB_BFAR register *******************/ -#define SCB_BFAR_ADDRESS ((uint32_t)0xFFFFFFFF) /*!< Bus fault address field */ - -/******************* Bit definition for SCB_afsr register *******************/ -#define SCB_AFSR_IMPDEF ((uint32_t)0xFFFFFFFF) /*!< Implementation defined */ - -/******************************************************************************/ -/* */ -/* External Interrupt/Event Controller */ -/* */ -/******************************************************************************/ - -/******************* Bit definition for EXTI_IMR register *******************/ -#define EXTI_IMR_MR0 ((uint32_t)0x00000001) /*!< Interrupt Mask on line 0 */ -#define EXTI_IMR_MR1 ((uint32_t)0x00000002) /*!< Interrupt Mask on line 1 */ -#define EXTI_IMR_MR2 ((uint32_t)0x00000004) /*!< Interrupt Mask on line 2 */ -#define EXTI_IMR_MR3 ((uint32_t)0x00000008) /*!< Interrupt Mask on line 3 */ -#define EXTI_IMR_MR4 ((uint32_t)0x00000010) /*!< Interrupt Mask on line 4 */ -#define EXTI_IMR_MR5 ((uint32_t)0x00000020) /*!< Interrupt Mask on line 5 */ -#define EXTI_IMR_MR6 ((uint32_t)0x00000040) /*!< Interrupt Mask on line 6 */ -#define EXTI_IMR_MR7 ((uint32_t)0x00000080) /*!< Interrupt Mask on line 7 */ -#define EXTI_IMR_MR8 ((uint32_t)0x00000100) /*!< Interrupt Mask on line 8 */ -#define EXTI_IMR_MR9 ((uint32_t)0x00000200) /*!< Interrupt Mask on line 9 */ -#define EXTI_IMR_MR10 ((uint32_t)0x00000400) /*!< Interrupt Mask on line 10 */ -#define EXTI_IMR_MR11 ((uint32_t)0x00000800) /*!< Interrupt Mask on line 11 */ -#define EXTI_IMR_MR12 ((uint32_t)0x00001000) /*!< Interrupt Mask on line 12 */ -#define EXTI_IMR_MR13 ((uint32_t)0x00002000) /*!< Interrupt Mask on line 13 */ -#define EXTI_IMR_MR14 ((uint32_t)0x00004000) /*!< Interrupt Mask on line 14 */ -#define EXTI_IMR_MR15 ((uint32_t)0x00008000) /*!< Interrupt Mask on line 15 */ -#define EXTI_IMR_MR16 ((uint32_t)0x00010000) /*!< Interrupt Mask on line 16 */ -#define EXTI_IMR_MR17 ((uint32_t)0x00020000) /*!< Interrupt Mask on line 17 */ -#define EXTI_IMR_MR18 ((uint32_t)0x00040000) /*!< Interrupt Mask on line 18 */ - -/******************* Bit definition for EXTI_EMR register *******************/ -#define EXTI_EMR_MR0 ((uint32_t)0x00000001) /*!< Event Mask on line 0 */ -#define EXTI_EMR_MR1 ((uint32_t)0x00000002) /*!< Event Mask on line 1 */ -#define EXTI_EMR_MR2 ((uint32_t)0x00000004) /*!< Event Mask on line 2 */ -#define EXTI_EMR_MR3 ((uint32_t)0x00000008) /*!< Event Mask on line 3 */ -#define EXTI_EMR_MR4 ((uint32_t)0x00000010) /*!< Event Mask on line 4 */ -#define EXTI_EMR_MR5 ((uint32_t)0x00000020) /*!< Event Mask on line 5 */ -#define EXTI_EMR_MR6 ((uint32_t)0x00000040) /*!< Event Mask on line 6 */ -#define EXTI_EMR_MR7 ((uint32_t)0x00000080) /*!< Event Mask on line 7 */ -#define EXTI_EMR_MR8 ((uint32_t)0x00000100) /*!< Event Mask on line 8 */ -#define EXTI_EMR_MR9 ((uint32_t)0x00000200) /*!< Event Mask on line 9 */ -#define EXTI_EMR_MR10 ((uint32_t)0x00000400) /*!< Event Mask on line 10 */ -#define EXTI_EMR_MR11 ((uint32_t)0x00000800) /*!< Event Mask on line 11 */ -#define EXTI_EMR_MR12 ((uint32_t)0x00001000) /*!< Event Mask on line 12 */ -#define EXTI_EMR_MR13 ((uint32_t)0x00002000) /*!< Event Mask on line 13 */ -#define EXTI_EMR_MR14 ((uint32_t)0x00004000) /*!< Event Mask on line 14 */ -#define EXTI_EMR_MR15 ((uint32_t)0x00008000) /*!< Event Mask on line 15 */ -#define EXTI_EMR_MR16 ((uint32_t)0x00010000) /*!< Event Mask on line 16 */ -#define EXTI_EMR_MR17 ((uint32_t)0x00020000) /*!< Event Mask on line 17 */ -#define EXTI_EMR_MR18 ((uint32_t)0x00040000) /*!< Event Mask on line 18 */ - -/****************** Bit definition for EXTI_RTSR register *******************/ -#define EXTI_RTSR_TR0 ((uint32_t)0x00000001) /*!< Rising trigger event configuration bit of line 0 */ -#define EXTI_RTSR_TR1 ((uint32_t)0x00000002) /*!< Rising trigger event configuration bit of line 1 */ -#define EXTI_RTSR_TR2 ((uint32_t)0x00000004) /*!< Rising trigger event configuration bit of line 2 */ -#define EXTI_RTSR_TR3 ((uint32_t)0x00000008) /*!< Rising trigger event configuration bit of line 3 */ -#define EXTI_RTSR_TR4 ((uint32_t)0x00000010) /*!< Rising trigger event configuration bit of line 4 */ -#define EXTI_RTSR_TR5 ((uint32_t)0x00000020) /*!< Rising trigger event configuration bit of line 5 */ -#define EXTI_RTSR_TR6 ((uint32_t)0x00000040) /*!< Rising trigger event configuration bit of line 6 */ -#define EXTI_RTSR_TR7 ((uint32_t)0x00000080) /*!< Rising trigger event configuration bit of line 7 */ -#define EXTI_RTSR_TR8 ((uint32_t)0x00000100) /*!< Rising trigger event configuration bit of line 8 */ -#define EXTI_RTSR_TR9 ((uint32_t)0x00000200) /*!< Rising trigger event configuration bit of line 9 */ -#define EXTI_RTSR_TR10 ((uint32_t)0x00000400) /*!< Rising trigger event configuration bit of line 10 */ -#define EXTI_RTSR_TR11 ((uint32_t)0x00000800) /*!< Rising trigger event configuration bit of line 11 */ -#define EXTI_RTSR_TR12 ((uint32_t)0x00001000) /*!< Rising trigger event configuration bit of line 12 */ -#define EXTI_RTSR_TR13 ((uint32_t)0x00002000) /*!< Rising trigger event configuration bit of line 13 */ -#define EXTI_RTSR_TR14 ((uint32_t)0x00004000) /*!< Rising trigger event configuration bit of line 14 */ -#define EXTI_RTSR_TR15 ((uint32_t)0x00008000) /*!< Rising trigger event configuration bit of line 15 */ -#define EXTI_RTSR_TR16 ((uint32_t)0x00010000) /*!< Rising trigger event configuration bit of line 16 */ -#define EXTI_RTSR_TR17 ((uint32_t)0x00020000) /*!< Rising trigger event configuration bit of line 17 */ -#define EXTI_RTSR_TR18 ((uint32_t)0x00040000) /*!< Rising trigger event configuration bit of line 18 */ - -/****************** Bit definition for EXTI_FTSR register *******************/ -#define EXTI_FTSR_TR0 ((uint32_t)0x00000001) /*!< Falling trigger event configuration bit of line 0 */ -#define EXTI_FTSR_TR1 ((uint32_t)0x00000002) /*!< Falling trigger event configuration bit of line 1 */ -#define EXTI_FTSR_TR2 ((uint32_t)0x00000004) /*!< Falling trigger event configuration bit of line 2 */ -#define EXTI_FTSR_TR3 ((uint32_t)0x00000008) /*!< Falling trigger event configuration bit of line 3 */ -#define EXTI_FTSR_TR4 ((uint32_t)0x00000010) /*!< Falling trigger event configuration bit of line 4 */ -#define EXTI_FTSR_TR5 ((uint32_t)0x00000020) /*!< Falling trigger event configuration bit of line 5 */ -#define EXTI_FTSR_TR6 ((uint32_t)0x00000040) /*!< Falling trigger event configuration bit of line 6 */ -#define EXTI_FTSR_TR7 ((uint32_t)0x00000080) /*!< Falling trigger event configuration bit of line 7 */ -#define EXTI_FTSR_TR8 ((uint32_t)0x00000100) /*!< Falling trigger event configuration bit of line 8 */ -#define EXTI_FTSR_TR9 ((uint32_t)0x00000200) /*!< Falling trigger event configuration bit of line 9 */ -#define EXTI_FTSR_TR10 ((uint32_t)0x00000400) /*!< Falling trigger event configuration bit of line 10 */ -#define EXTI_FTSR_TR11 ((uint32_t)0x00000800) /*!< Falling trigger event configuration bit of line 11 */ -#define EXTI_FTSR_TR12 ((uint32_t)0x00001000) /*!< Falling trigger event configuration bit of line 12 */ -#define EXTI_FTSR_TR13 ((uint32_t)0x00002000) /*!< Falling trigger event configuration bit of line 13 */ -#define EXTI_FTSR_TR14 ((uint32_t)0x00004000) /*!< Falling trigger event configuration bit of line 14 */ -#define EXTI_FTSR_TR15 ((uint32_t)0x00008000) /*!< Falling trigger event configuration bit of line 15 */ -#define EXTI_FTSR_TR16 ((uint32_t)0x00010000) /*!< Falling trigger event configuration bit of line 16 */ -#define EXTI_FTSR_TR17 ((uint32_t)0x00020000) /*!< Falling trigger event configuration bit of line 17 */ -#define EXTI_FTSR_TR18 ((uint32_t)0x00040000) /*!< Falling trigger event configuration bit of line 18 */ - -/****************** Bit definition for EXTI_SWIER register ******************/ -#define EXTI_SWIER_SWIER0 ((uint32_t)0x00000001) /*!< Software Interrupt on line 0 */ -#define EXTI_SWIER_SWIER1 ((uint32_t)0x00000002) /*!< Software Interrupt on line 1 */ -#define EXTI_SWIER_SWIER2 ((uint32_t)0x00000004) /*!< Software Interrupt on line 2 */ -#define EXTI_SWIER_SWIER3 ((uint32_t)0x00000008) /*!< Software Interrupt on line 3 */ -#define EXTI_SWIER_SWIER4 ((uint32_t)0x00000010) /*!< Software Interrupt on line 4 */ -#define EXTI_SWIER_SWIER5 ((uint32_t)0x00000020) /*!< Software Interrupt on line 5 */ -#define EXTI_SWIER_SWIER6 ((uint32_t)0x00000040) /*!< Software Interrupt on line 6 */ -#define EXTI_SWIER_SWIER7 ((uint32_t)0x00000080) /*!< Software Interrupt on line 7 */ -#define EXTI_SWIER_SWIER8 ((uint32_t)0x00000100) /*!< Software Interrupt on line 8 */ -#define EXTI_SWIER_SWIER9 ((uint32_t)0x00000200) /*!< Software Interrupt on line 9 */ -#define EXTI_SWIER_SWIER10 ((uint32_t)0x00000400) /*!< Software Interrupt on line 10 */ -#define EXTI_SWIER_SWIER11 ((uint32_t)0x00000800) /*!< Software Interrupt on line 11 */ -#define EXTI_SWIER_SWIER12 ((uint32_t)0x00001000) /*!< Software Interrupt on line 12 */ -#define EXTI_SWIER_SWIER13 ((uint32_t)0x00002000) /*!< Software Interrupt on line 13 */ -#define EXTI_SWIER_SWIER14 ((uint32_t)0x00004000) /*!< Software Interrupt on line 14 */ -#define EXTI_SWIER_SWIER15 ((uint32_t)0x00008000) /*!< Software Interrupt on line 15 */ -#define EXTI_SWIER_SWIER16 ((uint32_t)0x00010000) /*!< Software Interrupt on line 16 */ -#define EXTI_SWIER_SWIER17 ((uint32_t)0x00020000) /*!< Software Interrupt on line 17 */ -#define EXTI_SWIER_SWIER18 ((uint32_t)0x00040000) /*!< Software Interrupt on line 18 */ - -/******************* Bit definition for EXTI_PR register ********************/ -#define EXTI_PR_PR0 ((uint32_t)0x00000001) /*!< Pending bit 0 */ -#define EXTI_PR_PR1 ((uint32_t)0x00000002) /*!< Pending bit 1 */ -#define EXTI_PR_PR2 ((uint32_t)0x00000004) /*!< Pending bit 2 */ -#define EXTI_PR_PR3 ((uint32_t)0x00000008) /*!< Pending bit 3 */ -#define EXTI_PR_PR4 ((uint32_t)0x00000010) /*!< Pending bit 4 */ -#define EXTI_PR_PR5 ((uint32_t)0x00000020) /*!< Pending bit 5 */ -#define EXTI_PR_PR6 ((uint32_t)0x00000040) /*!< Pending bit 6 */ -#define EXTI_PR_PR7 ((uint32_t)0x00000080) /*!< Pending bit 7 */ -#define EXTI_PR_PR8 ((uint32_t)0x00000100) /*!< Pending bit 8 */ -#define EXTI_PR_PR9 ((uint32_t)0x00000200) /*!< Pending bit 9 */ -#define EXTI_PR_PR10 ((uint32_t)0x00000400) /*!< Pending bit 10 */ -#define EXTI_PR_PR11 ((uint32_t)0x00000800) /*!< Pending bit 11 */ -#define EXTI_PR_PR12 ((uint32_t)0x00001000) /*!< Pending bit 12 */ -#define EXTI_PR_PR13 ((uint32_t)0x00002000) /*!< Pending bit 13 */ -#define EXTI_PR_PR14 ((uint32_t)0x00004000) /*!< Pending bit 14 */ -#define EXTI_PR_PR15 ((uint32_t)0x00008000) /*!< Pending bit 15 */ -#define EXTI_PR_PR16 ((uint32_t)0x00010000) /*!< Pending bit 16 */ -#define EXTI_PR_PR17 ((uint32_t)0x00020000) /*!< Pending bit 17 */ -#define EXTI_PR_PR18 ((uint32_t)0x00040000) /*!< Trigger request occurred on the external interrupt line 18 */ - -/******************************************************************************/ -/* */ -/* DMA Controller */ -/* */ -/******************************************************************************/ - -/******************* Bit definition for DMA_ISR register ********************/ -#define DMA_ISR_GIF1 ((uint32_t)0x00000001) /*!< Channel 1 Global interrupt flag */ -#define DMA_ISR_TCIF1 ((uint32_t)0x00000002) /*!< Channel 1 Transfer Complete flag */ -#define DMA_ISR_HTIF1 ((uint32_t)0x00000004) /*!< Channel 1 Half Transfer flag */ -#define DMA_ISR_TEIF1 ((uint32_t)0x00000008) /*!< Channel 1 Transfer Error flag */ -#define DMA_ISR_GIF2 ((uint32_t)0x00000010) /*!< Channel 2 Global interrupt flag */ -#define DMA_ISR_TCIF2 ((uint32_t)0x00000020) /*!< Channel 2 Transfer Complete flag */ -#define DMA_ISR_HTIF2 ((uint32_t)0x00000040) /*!< Channel 2 Half Transfer flag */ -#define DMA_ISR_TEIF2 ((uint32_t)0x00000080) /*!< Channel 2 Transfer Error flag */ -#define DMA_ISR_GIF3 ((uint32_t)0x00000100) /*!< Channel 3 Global interrupt flag */ -#define DMA_ISR_TCIF3 ((uint32_t)0x00000200) /*!< Channel 3 Transfer Complete flag */ -#define DMA_ISR_HTIF3 ((uint32_t)0x00000400) /*!< Channel 3 Half Transfer flag */ -#define DMA_ISR_TEIF3 ((uint32_t)0x00000800) /*!< Channel 3 Transfer Error flag */ -#define DMA_ISR_GIF4 ((uint32_t)0x00001000) /*!< Channel 4 Global interrupt flag */ -#define DMA_ISR_TCIF4 ((uint32_t)0x00002000) /*!< Channel 4 Transfer Complete flag */ -#define DMA_ISR_HTIF4 ((uint32_t)0x00004000) /*!< Channel 4 Half Transfer flag */ -#define DMA_ISR_TEIF4 ((uint32_t)0x00008000) /*!< Channel 4 Transfer Error flag */ -#define DMA_ISR_GIF5 ((uint32_t)0x00010000) /*!< Channel 5 Global interrupt flag */ -#define DMA_ISR_TCIF5 ((uint32_t)0x00020000) /*!< Channel 5 Transfer Complete flag */ -#define DMA_ISR_HTIF5 ((uint32_t)0x00040000) /*!< Channel 5 Half Transfer flag */ -#define DMA_ISR_TEIF5 ((uint32_t)0x00080000) /*!< Channel 5 Transfer Error flag */ -#define DMA_ISR_GIF6 ((uint32_t)0x00100000) /*!< Channel 6 Global interrupt flag */ -#define DMA_ISR_TCIF6 ((uint32_t)0x00200000) /*!< Channel 6 Transfer Complete flag */ -#define DMA_ISR_HTIF6 ((uint32_t)0x00400000) /*!< Channel 6 Half Transfer flag */ -#define DMA_ISR_TEIF6 ((uint32_t)0x00800000) /*!< Channel 6 Transfer Error flag */ -#define DMA_ISR_GIF7 ((uint32_t)0x01000000) /*!< Channel 7 Global interrupt flag */ -#define DMA_ISR_TCIF7 ((uint32_t)0x02000000) /*!< Channel 7 Transfer Complete flag */ -#define DMA_ISR_HTIF7 ((uint32_t)0x04000000) /*!< Channel 7 Half Transfer flag */ -#define DMA_ISR_TEIF7 ((uint32_t)0x08000000) /*!< Channel 7 Transfer Error flag */ - -/******************* Bit definition for DMA_IFCR register *******************/ -#define DMA_IFCR_CGIF1 ((uint32_t)0x00000001) /*!< Channel 1 Global interrupt clearr */ -#define DMA_IFCR_CTCIF1 ((uint32_t)0x00000002) /*!< Channel 1 Transfer Complete clear */ -#define DMA_IFCR_CHTIF1 ((uint32_t)0x00000004) /*!< Channel 1 Half Transfer clear */ -#define DMA_IFCR_CTEIF1 ((uint32_t)0x00000008) /*!< Channel 1 Transfer Error clear */ -#define DMA_IFCR_CGIF2 ((uint32_t)0x00000010) /*!< Channel 2 Global interrupt clear */ -#define DMA_IFCR_CTCIF2 ((uint32_t)0x00000020) /*!< Channel 2 Transfer Complete clear */ -#define DMA_IFCR_CHTIF2 ((uint32_t)0x00000040) /*!< Channel 2 Half Transfer clear */ -#define DMA_IFCR_CTEIF2 ((uint32_t)0x00000080) /*!< Channel 2 Transfer Error clear */ -#define DMA_IFCR_CGIF3 ((uint32_t)0x00000100) /*!< Channel 3 Global interrupt clear */ -#define DMA_IFCR_CTCIF3 ((uint32_t)0x00000200) /*!< Channel 3 Transfer Complete clear */ -#define DMA_IFCR_CHTIF3 ((uint32_t)0x00000400) /*!< Channel 3 Half Transfer clear */ -#define DMA_IFCR_CTEIF3 ((uint32_t)0x00000800) /*!< Channel 3 Transfer Error clear */ -#define DMA_IFCR_CGIF4 ((uint32_t)0x00001000) /*!< Channel 4 Global interrupt clear */ -#define DMA_IFCR_CTCIF4 ((uint32_t)0x00002000) /*!< Channel 4 Transfer Complete clear */ -#define DMA_IFCR_CHTIF4 ((uint32_t)0x00004000) /*!< Channel 4 Half Transfer clear */ -#define DMA_IFCR_CTEIF4 ((uint32_t)0x00008000) /*!< Channel 4 Transfer Error clear */ -#define DMA_IFCR_CGIF5 ((uint32_t)0x00010000) /*!< Channel 5 Global interrupt clear */ -#define DMA_IFCR_CTCIF5 ((uint32_t)0x00020000) /*!< Channel 5 Transfer Complete clear */ -#define DMA_IFCR_CHTIF5 ((uint32_t)0x00040000) /*!< Channel 5 Half Transfer clear */ -#define DMA_IFCR_CTEIF5 ((uint32_t)0x00080000) /*!< Channel 5 Transfer Error clear */ -#define DMA_IFCR_CGIF6 ((uint32_t)0x00100000) /*!< Channel 6 Global interrupt clear */ -#define DMA_IFCR_CTCIF6 ((uint32_t)0x00200000) /*!< Channel 6 Transfer Complete clear */ -#define DMA_IFCR_CHTIF6 ((uint32_t)0x00400000) /*!< Channel 6 Half Transfer clear */ -#define DMA_IFCR_CTEIF6 ((uint32_t)0x00800000) /*!< Channel 6 Transfer Error clear */ -#define DMA_IFCR_CGIF7 ((uint32_t)0x01000000) /*!< Channel 7 Global interrupt clear */ -#define DMA_IFCR_CTCIF7 ((uint32_t)0x02000000) /*!< Channel 7 Transfer Complete clear */ -#define DMA_IFCR_CHTIF7 ((uint32_t)0x04000000) /*!< Channel 7 Half Transfer clear */ -#define DMA_IFCR_CTEIF7 ((uint32_t)0x08000000) /*!< Channel 7 Transfer Error clear */ - -/******************* Bit definition for DMA_CCR1 register *******************/ -#define DMA_CCR1_EN ((uint16_t)0x0001) /*!< Channel enable*/ -#define DMA_CCR1_TCIE ((uint16_t)0x0002) /*!< Transfer complete interrupt enable */ -#define DMA_CCR1_HTIE ((uint16_t)0x0004) /*!< Half Transfer interrupt enable */ -#define DMA_CCR1_TEIE ((uint16_t)0x0008) /*!< Transfer error interrupt enable */ -#define DMA_CCR1_DIR ((uint16_t)0x0010) /*!< Data transfer direction */ -#define DMA_CCR1_CIRC ((uint16_t)0x0020) /*!< Circular mode */ -#define DMA_CCR1_PINC ((uint16_t)0x0040) /*!< Peripheral increment mode */ -#define DMA_CCR1_MINC ((uint16_t)0x0080) /*!< Memory increment mode */ - -#define DMA_CCR1_PSIZE ((uint16_t)0x0300) /*!< PSIZE[1:0] bits (Peripheral size) */ -#define DMA_CCR1_PSIZE_0 ((uint16_t)0x0100) /*!< Bit 0 */ -#define DMA_CCR1_PSIZE_1 ((uint16_t)0x0200) /*!< Bit 1 */ - -#define DMA_CCR1_MSIZE ((uint16_t)0x0C00) /*!< MSIZE[1:0] bits (Memory size) */ -#define DMA_CCR1_MSIZE_0 ((uint16_t)0x0400) /*!< Bit 0 */ -#define DMA_CCR1_MSIZE_1 ((uint16_t)0x0800) /*!< Bit 1 */ - -#define DMA_CCR1_PL ((uint16_t)0x3000) /*!< PL[1:0] bits(Channel Priority level) */ -#define DMA_CCR1_PL_0 ((uint16_t)0x1000) /*!< Bit 0 */ -#define DMA_CCR1_PL_1 ((uint16_t)0x2000) /*!< Bit 1 */ - -#define DMA_CCR1_MEM2MEM ((uint16_t)0x4000) /*!< Memory to memory mode */ - -/******************* Bit definition for DMA_CCR2 register *******************/ -#define DMA_CCR2_EN ((uint16_t)0x0001) /*!< Channel enable */ -#define DMA_CCR2_TCIE ((uint16_t)0x0002) /*!< ransfer complete interrupt enable */ -#define DMA_CCR2_HTIE ((uint16_t)0x0004) /*!< Half Transfer interrupt enable */ -#define DMA_CCR2_TEIE ((uint16_t)0x0008) /*!< Transfer error interrupt enable */ -#define DMA_CCR2_DIR ((uint16_t)0x0010) /*!< Data transfer direction */ -#define DMA_CCR2_CIRC ((uint16_t)0x0020) /*!< Circular mode */ -#define DMA_CCR2_PINC ((uint16_t)0x0040) /*!< Peripheral increment mode */ -#define DMA_CCR2_MINC ((uint16_t)0x0080) /*!< Memory increment mode */ - -#define DMA_CCR2_PSIZE ((uint16_t)0x0300) /*!< PSIZE[1:0] bits (Peripheral size) */ -#define DMA_CCR2_PSIZE_0 ((uint16_t)0x0100) /*!< Bit 0 */ -#define DMA_CCR2_PSIZE_1 ((uint16_t)0x0200) /*!< Bit 1 */ - -#define DMA_CCR2_MSIZE ((uint16_t)0x0C00) /*!< MSIZE[1:0] bits (Memory size) */ -#define DMA_CCR2_MSIZE_0 ((uint16_t)0x0400) /*!< Bit 0 */ -#define DMA_CCR2_MSIZE_1 ((uint16_t)0x0800) /*!< Bit 1 */ - -#define DMA_CCR2_PL ((uint16_t)0x3000) /*!< PL[1:0] bits (Channel Priority level) */ -#define DMA_CCR2_PL_0 ((uint16_t)0x1000) /*!< Bit 0 */ -#define DMA_CCR2_PL_1 ((uint16_t)0x2000) /*!< Bit 1 */ - -#define DMA_CCR2_MEM2MEM ((uint16_t)0x4000) /*!< Memory to memory mode */ - -/******************* Bit definition for DMA_CCR3 register *******************/ -#define DMA_CCR3_EN ((uint16_t)0x0001) /*!< Channel enable */ -#define DMA_CCR3_TCIE ((uint16_t)0x0002) /*!< Transfer complete interrupt enable */ -#define DMA_CCR3_HTIE ((uint16_t)0x0004) /*!< Half Transfer interrupt enable */ -#define DMA_CCR3_TEIE ((uint16_t)0x0008) /*!< Transfer error interrupt enable */ -#define DMA_CCR3_DIR ((uint16_t)0x0010) /*!< Data transfer direction */ -#define DMA_CCR3_CIRC ((uint16_t)0x0020) /*!< Circular mode */ -#define DMA_CCR3_PINC ((uint16_t)0x0040) /*!< Peripheral increment mode */ -#define DMA_CCR3_MINC ((uint16_t)0x0080) /*!< Memory increment mode */ - -#define DMA_CCR3_PSIZE ((uint16_t)0x0300) /*!< PSIZE[1:0] bits (Peripheral size) */ -#define DMA_CCR3_PSIZE_0 ((uint16_t)0x0100) /*!< Bit 0 */ -#define DMA_CCR3_PSIZE_1 ((uint16_t)0x0200) /*!< Bit 1 */ - -#define DMA_CCR3_MSIZE ((uint16_t)0x0C00) /*!< MSIZE[1:0] bits (Memory size) */ -#define DMA_CCR3_MSIZE_0 ((uint16_t)0x0400) /*!< Bit 0 */ -#define DMA_CCR3_MSIZE_1 ((uint16_t)0x0800) /*!< Bit 1 */ - -#define DMA_CCR3_PL ((uint16_t)0x3000) /*!< PL[1:0] bits (Channel Priority level) */ -#define DMA_CCR3_PL_0 ((uint16_t)0x1000) /*!< Bit 0 */ -#define DMA_CCR3_PL_1 ((uint16_t)0x2000) /*!< Bit 1 */ - -#define DMA_CCR3_MEM2MEM ((uint16_t)0x4000) /*!< Memory to memory mode */ - -/*!<****************** Bit definition for DMA_CCR4 register *******************/ -#define DMA_CCR4_EN ((uint16_t)0x0001) /*!
© COPYRIGHT 2009 STMicroelectronics
- ****************************************************************************** - */ - -/** @addtogroup CMSIS - * @{ - */ - -/** @addtogroup stm32f10x - * @{ - */ - -#ifndef __STM32F10x_H -#define __STM32F10x_H - -/** @addtogroup Library_configuration_section - * @{ - */ - -/* Uncomment the line below according to the target STM32 device used in your - application - */ - -#if !defined (STM32F10X_LD) && !defined (STM32F10X_MD) && !defined (STM32F10X_HD) && !defined (STM32F10X_CL) - /* #define STM32F10X_LD */ /*!< STM32 Low density devices */ - /* #define STM32F10X_MD */ /*!< STM32 Medium density devices */ - /* #define STM32F10X_HD */ /*!< STM32 High density devices */ - #define STM32F10X_CL /*!< STM32 Connectivity line devices */ -#endif -/* Tip: To avoid modifying this file each time you need to switch between these - devices, you can define the device in your toolchain compiler preprocessor. - - - Low density devices are STM32F101xx, STM32F102xx and STM32F103xx microcontrollers - where the Flash memory density ranges between 16 and 32 Kbytes. - - Medium density devices are STM32F101xx, STM32F102xx and STM32F103xx microcontrollers - where the Flash memory density ranges between 64 and 128 Kbytes. - - High density devices are STM32F101xx and STM32F103xx microcontrollers where - the Flash memory density ranges between 256 and 512 Kbytes. - - Connectivity line devices are STM32F105xx and STM32F107xx microcontrollers. - */ - -#if !defined USE_STDPERIPH_DRIVER -/** - * @brief Comment the line below if you will not use the peripherals drivers. - In this case, these drivers will not be included and the application code will - be based on direct access to peripherals registers - */ - /*#define USE_STDPERIPH_DRIVER*/ -#endif - -/** - * @brief In the following line adjust the value of External High Speed oscillator (HSE) - used in your application - */ -#ifdef STM32F10X_CL - #define HSE_Value ((uint32_t)25000000) /*!< Value of the External oscillator in Hz */ -#else - #define HSE_Value ((uint32_t)8000000) /*!< Value of the External oscillator in Hz */ -#endif /* STM32F10X_CL */ - -/** - * @brief In the following line adjust the External High Speed oscillator (HSE) Startup - Timeout value - */ -#define HSEStartUp_TimeOut ((uint16_t)0x0500) /*!< Time out for HSE start up */ - -#define HSI_Value ((uint32_t)8000000) /*!< Value of the Internal oscillator in Hz*/ - - -/*!< [31:16] STM32F10x Standard Peripheral Library main version */ -#define __STM32F10X_STDPERIPH_VERSION_MAIN (0x03) -/*!< [15:8] STM32F10x Standard Peripheral Library sub1 version */ -#define __STM32F10X_STDPERIPH_VERSION_SUB1 (0x01) -/*!< [7:0] STM32F10x Standard Peripheral Library sub2 version */ -#define __STM32F10X_STDPERIPH_VERSION_SUB2 (0x00) -/*!< STM32F10x Standard Peripheral Library version number */ -#define __STM32F10X_STDPERIPH_VERSION ((__STM32F10X_STDPERIPH_VERSION_MAIN << 16)\ - | (__STM32F10X_STDPERIPH_VERSION_SUB1 << 8)\ - | __STM32F10X_STDPERIPH_VERSION_SUB2) - -/** - * @} - */ - -/** @addtogroup Configuration_section_for_CMSIS - * @{ - */ - -/** - * @brief Configuration of the Cortex-M3 Processor and Core Peripherals - */ -#define __MPU_PRESENT 0 /*!< STM32 does not provide a MPU present or not */ -#define __NVIC_PRIO_BITS 4 /*!< STM32 uses 4 Bits for the Priority Levels */ -#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ - -/*!< Interrupt Number Definition */ -typedef enum IRQn -{ -/****** Cortex-M3 Processor Exceptions Numbers ***************************************************/ - NonMaskableInt_IRQn = -14, /*!< 2 Non Maskable Interrupt */ - MemoryManagement_IRQn = -12, /*!< 4 Cortex-M3 Memory Management Interrupt */ - BusFault_IRQn = -11, /*!< 5 Cortex-M3 Bus Fault Interrupt */ - UsageFault_IRQn = -10, /*!< 6 Cortex-M3 Usage Fault Interrupt */ - SVCall_IRQn = -5, /*!< 11 Cortex-M3 SV Call Interrupt */ - DebugMonitor_IRQn = -4, /*!< 12 Cortex-M3 Debug Monitor Interrupt */ - PendSV_IRQn = -2, /*!< 14 Cortex-M3 Pend SV Interrupt */ - SysTick_IRQn = -1, /*!< 15 Cortex-M3 System Tick Interrupt */ - -/****** STM32 specific Interrupt Numbers *********************************************************/ - WWDG_IRQn = 0, /*!< Window WatchDog Interrupt */ - PVD_IRQn = 1, /*!< PVD through EXTI Line detection Interrupt */ - TAMPER_IRQn = 2, /*!< Tamper Interrupt */ - RTC_IRQn = 3, /*!< RTC global Interrupt */ - FLASH_IRQn = 4, /*!< FLASH global Interrupt */ - RCC_IRQn = 5, /*!< RCC global Interrupt */ - EXTI0_IRQn = 6, /*!< EXTI Line0 Interrupt */ - EXTI1_IRQn = 7, /*!< EXTI Line1 Interrupt */ - EXTI2_IRQn = 8, /*!< EXTI Line2 Interrupt */ - EXTI3_IRQn = 9, /*!< EXTI Line3 Interrupt */ - EXTI4_IRQn = 10, /*!< EXTI Line4 Interrupt */ - DMA1_Channel1_IRQn = 11, /*!< DMA1 Channel 1 global Interrupt */ - DMA1_Channel2_IRQn = 12, /*!< DMA1 Channel 2 global Interrupt */ - DMA1_Channel3_IRQn = 13, /*!< DMA1 Channel 3 global Interrupt */ - DMA1_Channel4_IRQn = 14, /*!< DMA1 Channel 4 global Interrupt */ - DMA1_Channel5_IRQn = 15, /*!< DMA1 Channel 5 global Interrupt */ - DMA1_Channel6_IRQn = 16, /*!< DMA1 Channel 6 global Interrupt */ - DMA1_Channel7_IRQn = 17, /*!< DMA1 Channel 7 global Interrupt */ - ADC1_2_IRQn = 18, /*!< ADC1 and ADC2 global Interrupt */ - -#ifdef STM32F10X_LD - USB_HP_CAN1_TX_IRQn = 19, /*!< USB Device High Priority or CAN1 TX Interrupts */ - USB_LP_CAN1_RX0_IRQn = 20, /*!< USB Device Low Priority or CAN1 RX0 Interrupts */ - CAN1_RX1_IRQn = 21, /*!< CAN1 RX1 Interrupt */ - CAN1_SCE_IRQn = 22, /*!< CAN1 SCE Interrupt */ - EXTI9_5_IRQn = 23, /*!< External Line[9:5] Interrupts */ - TIM1_BRK_IRQn = 24, /*!< TIM1 Break Interrupt */ - TIM1_UP_IRQn = 25, /*!< TIM1 Update Interrupt */ - TIM1_TRG_COM_IRQn = 26, /*!< TIM1 Trigger and Commutation Interrupt */ - TIM1_CC_IRQn = 27, /*!< TIM1 Capture Compare Interrupt */ - TIM2_IRQn = 28, /*!< TIM2 global Interrupt */ - TIM3_IRQn = 29, /*!< TIM3 global Interrupt */ - I2C1_EV_IRQn = 31, /*!< I2C1 Event Interrupt */ - I2C1_ER_IRQn = 32, /*!< I2C1 Error Interrupt */ - SPI1_IRQn = 35, /*!< SPI1 global Interrupt */ - USART1_IRQn = 37, /*!< USART1 global Interrupt */ - USART2_IRQn = 38, /*!< USART2 global Interrupt */ - EXTI15_10_IRQn = 40, /*!< External Line[15:10] Interrupts */ - RTCAlarm_IRQn = 41, /*!< RTC Alarm through EXTI Line Interrupt */ - USBWakeUp_IRQn = 42, /*!< USB Device WakeUp from suspend through EXTI Line Interrupt */ -#endif /* STM32F10X_LD */ - -#ifdef STM32F10X_MD - USB_HP_CAN1_TX_IRQn = 19, /*!< USB Device High Priority or CAN1 TX Interrupts */ - USB_LP_CAN1_RX0_IRQn = 20, /*!< USB Device Low Priority or CAN1 RX0 Interrupts */ - CAN1_RX1_IRQn = 21, /*!< CAN1 RX1 Interrupt */ - CAN1_SCE_IRQn = 22, /*!< CAN1 SCE Interrupt */ - EXTI9_5_IRQn = 23, /*!< External Line[9:5] Interrupts */ - TIM1_BRK_IRQn = 24, /*!< TIM1 Break Interrupt */ - TIM1_UP_IRQn = 25, /*!< TIM1 Update Interrupt */ - TIM1_TRG_COM_IRQn = 26, /*!< TIM1 Trigger and Commutation Interrupt */ - TIM1_CC_IRQn = 27, /*!< TIM1 Capture Compare Interrupt */ - TIM2_IRQn = 28, /*!< TIM2 global Interrupt */ - TIM3_IRQn = 29, /*!< TIM3 global Interrupt */ - TIM4_IRQn = 30, /*!< TIM4 global Interrupt */ - I2C1_EV_IRQn = 31, /*!< I2C1 Event Interrupt */ - I2C1_ER_IRQn = 32, /*!< I2C1 Error Interrupt */ - I2C2_EV_IRQn = 33, /*!< I2C2 Event Interrupt */ - I2C2_ER_IRQn = 34, /*!< I2C2 Error Interrupt */ - SPI1_IRQn = 35, /*!< SPI1 global Interrupt */ - SPI2_IRQn = 36, /*!< SPI2 global Interrupt */ - USART1_IRQn = 37, /*!< USART1 global Interrupt */ - USART2_IRQn = 38, /*!< USART2 global Interrupt */ - USART3_IRQn = 39, /*!< USART3 global Interrupt */ - EXTI15_10_IRQn = 40, /*!< External Line[15:10] Interrupts */ - RTCAlarm_IRQn = 41, /*!< RTC Alarm through EXTI Line Interrupt */ - USBWakeUp_IRQn = 42, /*!< USB Device WakeUp from suspend through EXTI Line Interrupt */ -#endif /* STM32F10X_MD */ - -#ifdef STM32F10X_HD - USB_HP_CAN1_TX_IRQn = 19, /*!< USB Device High Priority or CAN1 TX Interrupts */ - USB_LP_CAN1_RX0_IRQn = 20, /*!< USB Device Low Priority or CAN1 RX0 Interrupts */ - CAN1_RX1_IRQn = 21, /*!< CAN1 RX1 Interrupt */ - CAN1_SCE_IRQn = 22, /*!< CAN1 SCE Interrupt */ - EXTI9_5_IRQn = 23, /*!< External Line[9:5] Interrupts */ - TIM1_BRK_IRQn = 24, /*!< TIM1 Break Interrupt */ - TIM1_UP_IRQn = 25, /*!< TIM1 Update Interrupt */ - TIM1_TRG_COM_IRQn = 26, /*!< TIM1 Trigger and Commutation Interrupt */ - TIM1_CC_IRQn = 27, /*!< TIM1 Capture Compare Interrupt */ - TIM2_IRQn = 28, /*!< TIM2 global Interrupt */ - TIM3_IRQn = 29, /*!< TIM3 global Interrupt */ - TIM4_IRQn = 30, /*!< TIM4 global Interrupt */ - I2C1_EV_IRQn = 31, /*!< I2C1 Event Interrupt */ - I2C1_ER_IRQn = 32, /*!< I2C1 Error Interrupt */ - I2C2_EV_IRQn = 33, /*!< I2C2 Event Interrupt */ - I2C2_ER_IRQn = 34, /*!< I2C2 Error Interrupt */ - SPI1_IRQn = 35, /*!< SPI1 global Interrupt */ - SPI2_IRQn = 36, /*!< SPI2 global Interrupt */ - USART1_IRQn = 37, /*!< USART1 global Interrupt */ - USART2_IRQn = 38, /*!< USART2 global Interrupt */ - USART3_IRQn = 39, /*!< USART3 global Interrupt */ - EXTI15_10_IRQn = 40, /*!< External Line[15:10] Interrupts */ - RTCAlarm_IRQn = 41, /*!< RTC Alarm through EXTI Line Interrupt */ - USBWakeUp_IRQn = 42, /*!< USB Device WakeUp from suspend through EXTI Line Interrupt */ - TIM8_BRK_IRQn = 43, /*!< TIM8 Break Interrupt */ - TIM8_UP_IRQn = 44, /*!< TIM8 Update Interrupt */ - TIM8_TRG_COM_IRQn = 45, /*!< TIM8 Trigger and Commutation Interrupt */ - TIM8_CC_IRQn = 46, /*!< TIM8 Capture Compare Interrupt */ - ADC3_IRQn = 47, /*!< ADC3 global Interrupt */ - FSMC_IRQn = 48, /*!< FSMC global Interrupt */ - SDIO_IRQn = 49, /*!< SDIO global Interrupt */ - TIM5_IRQn = 50, /*!< TIM5 global Interrupt */ - SPI3_IRQn = 51, /*!< SPI3 global Interrupt */ - UART4_IRQn = 52, /*!< UART4 global Interrupt */ - UART5_IRQn = 53, /*!< UART5 global Interrupt */ - TIM6_IRQn = 54, /*!< TIM6 global Interrupt */ - TIM7_IRQn = 55, /*!< TIM7 global Interrupt */ - DMA2_Channel1_IRQn = 56, /*!< DMA2 Channel 1 global Interrupt */ - DMA2_Channel2_IRQn = 57, /*!< DMA2 Channel 2 global Interrupt */ - DMA2_Channel3_IRQn = 58, /*!< DMA2 Channel 3 global Interrupt */ - DMA2_Channel4_5_IRQn = 59 /*!< DMA2 Channel 4 and Channel 5 global Interrupt */ -#endif /* STM32F10X_HD */ - -#ifdef STM32F10X_CL - CAN1_TX_IRQn = 19, /*!< USB Device High Priority or CAN1 TX Interrupts */ - CAN1_RX0_IRQn = 20, /*!< USB Device Low Priority or CAN1 RX0 Interrupts */ - CAN1_RX1_IRQn = 21, /*!< CAN1 RX1 Interrupt */ - CAN1_SCE_IRQn = 22, /*!< CAN1 SCE Interrupt */ - EXTI9_5_IRQn = 23, /*!< External Line[9:5] Interrupts */ - TIM1_BRK_IRQn = 24, /*!< TIM1 Break Interrupt */ - TIM1_UP_IRQn = 25, /*!< TIM1 Update Interrupt */ - TIM1_TRG_COM_IRQn = 26, /*!< TIM1 Trigger and Commutation Interrupt */ - TIM1_CC_IRQn = 27, /*!< TIM1 Capture Compare Interrupt */ - TIM2_IRQn = 28, /*!< TIM2 global Interrupt */ - TIM3_IRQn = 29, /*!< TIM3 global Interrupt */ - TIM4_IRQn = 30, /*!< TIM4 global Interrupt */ - I2C1_EV_IRQn = 31, /*!< I2C1 Event Interrupt */ - I2C1_ER_IRQn = 32, /*!< I2C1 Error Interrupt */ - I2C2_EV_IRQn = 33, /*!< I2C2 Event Interrupt */ - I2C2_ER_IRQn = 34, /*!< I2C2 Error Interrupt */ - SPI1_IRQn = 35, /*!< SPI1 global Interrupt */ - SPI2_IRQn = 36, /*!< SPI2 global Interrupt */ - USART1_IRQn = 37, /*!< USART1 global Interrupt */ - USART2_IRQn = 38, /*!< USART2 global Interrupt */ - USART3_IRQn = 39, /*!< USART3 global Interrupt */ - EXTI15_10_IRQn = 40, /*!< External Line[15:10] Interrupts */ - RTCAlarm_IRQn = 41, /*!< RTC Alarm through EXTI Line Interrupt */ - OTG_FS_WKUP_IRQn = 42, /*!< USB OTG FS WakeUp from suspend through EXTI Line Interrupt */ - TIM5_IRQn = 50, /*!< TIM5 global Interrupt */ - SPI3_IRQn = 51, /*!< SPI3 global Interrupt */ - UART4_IRQn = 52, /*!< UART4 global Interrupt */ - UART5_IRQn = 53, /*!< UART5 global Interrupt */ - TIM6_IRQn = 54, /*!< TIM6 global Interrupt */ - TIM7_IRQn = 55, /*!< TIM7 global Interrupt */ - DMA2_Channel1_IRQn = 56, /*!< DMA2 Channel 1 global Interrupt */ - DMA2_Channel2_IRQn = 57, /*!< DMA2 Channel 2 global Interrupt */ - DMA2_Channel3_IRQn = 58, /*!< DMA2 Channel 3 global Interrupt */ - DMA2_Channel4_IRQn = 59, /*!< DMA2 Channel 4 global Interrupt */ - DMA2_Channel5_IRQn = 60, /*!< DMA2 Channel 5 global Interrupt */ - ETH_IRQn = 61, /*!< Ethernet global Interrupt */ - ETH_WKUP_IRQn = 62, /*!< Ethernet Wakeup through EXTI line Interrupt */ - CAN2_TX_IRQn = 63, /*!< CAN2 TX Interrupt */ - CAN2_RX0_IRQn = 64, /*!< CAN2 RX0 Interrupt */ - CAN2_RX1_IRQn = 65, /*!< CAN2 RX1 Interrupt */ - CAN2_SCE_IRQn = 66, /*!< CAN2 SCE Interrupt */ - OTG_FS_IRQn = 67 /*!< USB OTG FS global Interrupt */ -#endif /* STM32F10X_CL */ -} IRQn_Type; - -/** - * @} - */ - -#include "core_cm3.h" -#include "system_stm32f10x.h" -#include - -/** @addtogroup Exported_types - * @{ - */ - -/*!< STM32F10x Standard Peripheral Library old types (maintained for legacy prupose) */ -typedef int32_t s32; -typedef int16_t s16; -typedef int8_t s8; - -typedef const int32_t sc32; /*!< Read Only */ -typedef const int16_t sc16; /*!< Read Only */ -typedef const int8_t sc8; /*!< Read Only */ - -typedef __IO int32_t vs32; -typedef __IO int16_t vs16; -typedef __IO int8_t vs8; - -typedef __I int32_t vsc32; /*!< Read Only */ -typedef __I int16_t vsc16; /*!< Read Only */ -typedef __I int8_t vsc8; /*!< Read Only */ - -typedef uint32_t u32; -typedef uint16_t u16; -typedef uint8_t u8; - -typedef const uint32_t uc32; /*!< Read Only */ -typedef const uint16_t uc16; /*!< Read Only */ -typedef const uint8_t uc8; /*!< Read Only */ - -typedef __IO uint32_t vu32; -typedef __IO uint16_t vu16; -typedef __IO uint8_t vu8; - -typedef __I uint32_t vuc32; /*!< Read Only */ -typedef __I uint16_t vuc16; /*!< Read Only */ -typedef __I uint8_t vuc8; /*!< Read Only */ - -typedef enum {FALSE = 0, TRUE = !FALSE} bool; - -typedef enum {RESET = 0, SET = !RESET} FlagStatus, ITStatus; - -typedef enum {DISABLE = 0, ENABLE = !DISABLE} FunctionalState; -#define IS_FUNCTIONAL_STATE(STATE) (((STATE) == DISABLE) || ((STATE) == ENABLE)) - -typedef enum {ERROR = 0, SUCCESS = !ERROR} ErrorStatus; - -/** - * @} - */ - -/** @addtogroup Peripheral_registers_structures - * @{ - */ - -/** - * @brief Analog to Digital Converter - */ - -typedef struct -{ - __IO uint32_t SR; - __IO uint32_t CR1; - __IO uint32_t CR2; - __IO uint32_t SMPR1; - __IO uint32_t SMPR2; - __IO uint32_t JOFR1; - __IO uint32_t JOFR2; - __IO uint32_t JOFR3; - __IO uint32_t JOFR4; - __IO uint32_t HTR; - __IO uint32_t LTR; - __IO uint32_t SQR1; - __IO uint32_t SQR2; - __IO uint32_t SQR3; - __IO uint32_t JSQR; - __IO uint32_t JDR1; - __IO uint32_t JDR2; - __IO uint32_t JDR3; - __IO uint32_t JDR4; - __IO uint32_t DR; -} ADC_TypeDef; - -/** - * @brief Backup Registers - */ - -typedef struct -{ - uint32_t RESERVED0; - __IO uint16_t DR1; - uint16_t RESERVED1; - __IO uint16_t DR2; - uint16_t RESERVED2; - __IO uint16_t DR3; - uint16_t RESERVED3; - __IO uint16_t DR4; - uint16_t RESERVED4; - __IO uint16_t DR5; - uint16_t RESERVED5; - __IO uint16_t DR6; - uint16_t RESERVED6; - __IO uint16_t DR7; - uint16_t RESERVED7; - __IO uint16_t DR8; - uint16_t RESERVED8; - __IO uint16_t DR9; - uint16_t RESERVED9; - __IO uint16_t DR10; - uint16_t RESERVED10; - __IO uint16_t RTCCR; - uint16_t RESERVED11; - __IO uint16_t CR; - uint16_t RESERVED12; - __IO uint16_t CSR; - uint16_t RESERVED13[5]; - __IO uint16_t DR11; - uint16_t RESERVED14; - __IO uint16_t DR12; - uint16_t RESERVED15; - __IO uint16_t DR13; - uint16_t RESERVED16; - __IO uint16_t DR14; - uint16_t RESERVED17; - __IO uint16_t DR15; - uint16_t RESERVED18; - __IO uint16_t DR16; - uint16_t RESERVED19; - __IO uint16_t DR17; - uint16_t RESERVED20; - __IO uint16_t DR18; - uint16_t RESERVED21; - __IO uint16_t DR19; - uint16_t RESERVED22; - __IO uint16_t DR20; - uint16_t RESERVED23; - __IO uint16_t DR21; - uint16_t RESERVED24; - __IO uint16_t DR22; - uint16_t RESERVED25; - __IO uint16_t DR23; - uint16_t RESERVED26; - __IO uint16_t DR24; - uint16_t RESERVED27; - __IO uint16_t DR25; - uint16_t RESERVED28; - __IO uint16_t DR26; - uint16_t RESERVED29; - __IO uint16_t DR27; - uint16_t RESERVED30; - __IO uint16_t DR28; - uint16_t RESERVED31; - __IO uint16_t DR29; - uint16_t RESERVED32; - __IO uint16_t DR30; - uint16_t RESERVED33; - __IO uint16_t DR31; - uint16_t RESERVED34; - __IO uint16_t DR32; - uint16_t RESERVED35; - __IO uint16_t DR33; - uint16_t RESERVED36; - __IO uint16_t DR34; - uint16_t RESERVED37; - __IO uint16_t DR35; - uint16_t RESERVED38; - __IO uint16_t DR36; - uint16_t RESERVED39; - __IO uint16_t DR37; - uint16_t RESERVED40; - __IO uint16_t DR38; - uint16_t RESERVED41; - __IO uint16_t DR39; - uint16_t RESERVED42; - __IO uint16_t DR40; - uint16_t RESERVED43; - __IO uint16_t DR41; - uint16_t RESERVED44; - __IO uint16_t DR42; - uint16_t RESERVED45; -} BKP_TypeDef; - -/** - * @brief Controller Area Network TxMailBox - */ - -typedef struct -{ - __IO uint32_t TIR; - __IO uint32_t TDTR; - __IO uint32_t TDLR; - __IO uint32_t TDHR; -} CAN_TxMailBox_TypeDef; - -/** - * @brief Controller Area Network FIFOMailBox - */ - -typedef struct -{ - __IO uint32_t RIR; - __IO uint32_t RDTR; - __IO uint32_t RDLR; - __IO uint32_t RDHR; -} CAN_FIFOMailBox_TypeDef; - -/** - * @brief Controller Area Network FilterRegister - */ - -typedef struct -{ - __IO uint32_t FR1; - __IO uint32_t FR2; -} CAN_FilterRegister_TypeDef; - -/** - * @brief Controller Area Network - */ - -typedef struct -{ - __IO uint32_t MCR; - __IO uint32_t MSR; - __IO uint32_t TSR; - __IO uint32_t RF0R; - __IO uint32_t RF1R; - __IO uint32_t IER; - __IO uint32_t ESR; - __IO uint32_t BTR; - uint32_t RESERVED0[88]; - CAN_TxMailBox_TypeDef sTxMailBox[3]; - CAN_FIFOMailBox_TypeDef sFIFOMailBox[2]; - uint32_t RESERVED1[12]; - __IO uint32_t FMR; - __IO uint32_t FM1R; - uint32_t RESERVED2; - __IO uint32_t FS1R; - uint32_t RESERVED3; - __IO uint32_t FFA1R; - uint32_t RESERVED4; - __IO uint32_t FA1R; - uint32_t RESERVED5[8]; -#ifndef STM32F10X_CL - CAN_FilterRegister_TypeDef sFilterRegister[14]; -#else - CAN_FilterRegister_TypeDef sFilterRegister[28]; -#endif /* STM32F10X_CL */ -} CAN_TypeDef; - -/** - * @brief CRC calculation unit - */ - -typedef struct -{ - __IO uint32_t DR; - __IO uint8_t IDR; - uint8_t RESERVED0; - uint16_t RESERVED1; - __IO uint32_t CR; -} CRC_TypeDef; - -/** - * @brief Digital to Analog Converter - */ - -typedef struct -{ - __IO uint32_t CR; - __IO uint32_t SWTRIGR; - __IO uint32_t DHR12R1; - __IO uint32_t DHR12L1; - __IO uint32_t DHR8R1; - __IO uint32_t DHR12R2; - __IO uint32_t DHR12L2; - __IO uint32_t DHR8R2; - __IO uint32_t DHR12RD; - __IO uint32_t DHR12LD; - __IO uint32_t DHR8RD; - __IO uint32_t DOR1; - __IO uint32_t DOR2; -} DAC_TypeDef; - -/** - * @brief Debug MCU - */ - -typedef struct -{ - __IO uint32_t IDCODE; - __IO uint32_t CR; -}DBGMCU_TypeDef; - -/** - * @brief DMA Controller - */ - -typedef struct -{ - __IO uint32_t CCR; - __IO uint32_t CNDTR; - __IO uint32_t CPAR; - __IO uint32_t CMAR; -} DMA_Channel_TypeDef; - -typedef struct -{ - __IO uint32_t ISR; - __IO uint32_t IFCR; -} DMA_TypeDef; - -/** - * @brief Ethernet MAC - */ - -typedef struct -{ - __IO uint32_t MACCR; - __IO uint32_t MACFFR; - __IO uint32_t MACHTHR; - __IO uint32_t MACHTLR; - __IO uint32_t MACMIIAR; - __IO uint32_t MACMIIDR; - __IO uint32_t MACFCR; - __IO uint32_t MACVLANTR; /* 8 */ - uint32_t RESERVED0[2]; - __IO uint32_t MACRWUFFR; /* 11 */ - __IO uint32_t MACPMTCSR; - uint32_t RESERVED1[2]; - __IO uint32_t MACSR; /* 15 */ - __IO uint32_t MACIMR; - __IO uint32_t MACA0HR; - __IO uint32_t MACA0LR; - __IO uint32_t MACA1HR; - __IO uint32_t MACA1LR; - __IO uint32_t MACA2HR; - __IO uint32_t MACA2LR; - __IO uint32_t MACA3HR; - __IO uint32_t MACA3LR; /* 24 */ - uint32_t RESERVED2[40]; - __IO uint32_t MMCCR; /* 65 */ - __IO uint32_t MMCRIR; - __IO uint32_t MMCTIR; - __IO uint32_t MMCRIMR; - __IO uint32_t MMCTIMR; /* 69 */ - uint32_t RESERVED3[14]; - __IO uint32_t MMCTGFSCCR; /* 84 */ - __IO uint32_t MMCTGFMSCCR; - uint32_t RESERVED4[5]; - __IO uint32_t MMCTGFCR; - uint32_t RESERVED5[10]; - __IO uint32_t MMCRFCECR; - __IO uint32_t MMCRFAECR; - uint32_t RESERVED6[10]; - __IO uint32_t MMCRGUFCR; - uint32_t RESERVED7[334]; - __IO uint32_t PTPTSCR; - __IO uint32_t PTPSSIR; - __IO uint32_t PTPTSHR; - __IO uint32_t PTPTSLR; - __IO uint32_t PTPTSHUR; - __IO uint32_t PTPTSLUR; - __IO uint32_t PTPTSAR; - __IO uint32_t PTPTTHR; - __IO uint32_t PTPTTLR; - uint32_t RESERVED8[567]; - __IO uint32_t DMABMR; - __IO uint32_t DMATPDR; - __IO uint32_t DMARPDR; - __IO uint32_t DMARDLAR; - __IO uint32_t DMATDLAR; - __IO uint32_t DMASR; - __IO uint32_t DMAOMR; - __IO uint32_t DMAIER; - __IO uint32_t DMAMFBOCR; - uint32_t RESERVED9[9]; - __IO uint32_t DMACHTDR; - __IO uint32_t DMACHRDR; - __IO uint32_t DMACHTBAR; - __IO uint32_t DMACHRBAR; -} ETH_TypeDef; - -/** - * @brief External Interrupt/Event Controller - */ - -typedef struct -{ - __IO uint32_t IMR; - __IO uint32_t EMR; - __IO uint32_t RTSR; - __IO uint32_t FTSR; - __IO uint32_t SWIER; - __IO uint32_t PR; -} EXTI_TypeDef; - -/** - * @brief FLASH Registers - */ - -typedef struct -{ - __IO uint32_t ACR; - __IO uint32_t KEYR; - __IO uint32_t OPTKEYR; - __IO uint32_t SR; - __IO uint32_t CR; - __IO uint32_t AR; - __IO uint32_t RESERVED; - __IO uint32_t OBR; - __IO uint32_t WRPR; -} FLASH_TypeDef; - -/** - * @brief Option Bytes Registers - */ - -typedef struct -{ - __IO uint16_t RDP; - __IO uint16_t USER; - __IO uint16_t Data0; - __IO uint16_t Data1; - __IO uint16_t WRP0; - __IO uint16_t WRP1; - __IO uint16_t WRP2; - __IO uint16_t WRP3; -} OB_TypeDef; - -/** - * @brief Flexible Static Memory Controller - */ - -typedef struct -{ - __IO uint32_t BTCR[8]; -} FSMC_Bank1_TypeDef; - -/** - * @brief Flexible Static Memory Controller Bank1E - */ - -typedef struct -{ - __IO uint32_t BWTR[7]; -} FSMC_Bank1E_TypeDef; - -/** - * @brief Flexible Static Memory Controller Bank2 - */ - -typedef struct -{ - __IO uint32_t PCR2; - __IO uint32_t SR2; - __IO uint32_t PMEM2; - __IO uint32_t PATT2; - uint32_t RESERVED0; - __IO uint32_t ECCR2; -} FSMC_Bank2_TypeDef; - -/** - * @brief Flexible Static Memory Controller Bank3 - */ - -typedef struct -{ - __IO uint32_t PCR3; - __IO uint32_t SR3; - __IO uint32_t PMEM3; - __IO uint32_t PATT3; - uint32_t RESERVED0; - __IO uint32_t ECCR3; -} FSMC_Bank3_TypeDef; - -/** - * @brief Flexible Static Memory Controller Bank4 - */ - -typedef struct -{ - __IO uint32_t PCR4; - __IO uint32_t SR4; - __IO uint32_t PMEM4; - __IO uint32_t PATT4; - __IO uint32_t PIO4; -} FSMC_Bank4_TypeDef; - -/** - * @brief General Purpose I/O - */ - -typedef struct -{ - __IO uint32_t CRL; - __IO uint32_t CRH; - __IO uint32_t IDR; - __IO uint32_t ODR; - __IO uint32_t BSRR; - __IO uint32_t BRR; - __IO uint32_t LCKR; -} GPIO_TypeDef; - -/** - * @brief Alternate Function I/O - */ - -typedef struct -{ - __IO uint32_t EVCR; - __IO uint32_t MAPR; - __IO uint32_t EXTICR[4]; -} AFIO_TypeDef; -/** - * @brief Inter-integrated Circuit Interface - */ - -typedef struct -{ - __IO uint16_t CR1; - uint16_t RESERVED0; - __IO uint16_t CR2; - uint16_t RESERVED1; - __IO uint16_t OAR1; - uint16_t RESERVED2; - __IO uint16_t OAR2; - uint16_t RESERVED3; - __IO uint16_t DR; - uint16_t RESERVED4; - __IO uint16_t SR1; - uint16_t RESERVED5; - __IO uint16_t SR2; - uint16_t RESERVED6; - __IO uint16_t CCR; - uint16_t RESERVED7; - __IO uint16_t TRISE; - uint16_t RESERVED8; -} I2C_TypeDef; - -/** - * @brief Independent WATCHDOG - */ - -typedef struct -{ - __IO uint32_t KR; - __IO uint32_t PR; - __IO uint32_t RLR; - __IO uint32_t SR; -} IWDG_TypeDef; - -/** - * @brief Power Control - */ - -typedef struct -{ - __IO uint32_t CR; - __IO uint32_t CSR; -} PWR_TypeDef; - -/** - * @brief Reset and Clock Control - */ - -typedef struct -{ - __IO uint32_t CR; - __IO uint32_t CFGR; - __IO uint32_t CIR; - __IO uint32_t APB2RSTR; - __IO uint32_t APB1RSTR; - __IO uint32_t AHBENR; - __IO uint32_t APB2ENR; - __IO uint32_t APB1ENR; - __IO uint32_t BDCR; - __IO uint32_t CSR; -#ifdef STM32F10X_CL - __IO uint32_t AHBRSTR; - __IO uint32_t CFGR2; -#endif /* STM32F10X_CL */ -} RCC_TypeDef; - -/** - * @brief Real-Time Clock - */ - -typedef struct -{ - __IO uint16_t CRH; - uint16_t RESERVED0; - __IO uint16_t CRL; - uint16_t RESERVED1; - __IO uint16_t PRLH; - uint16_t RESERVED2; - __IO uint16_t PRLL; - uint16_t RESERVED3; - __IO uint16_t DIVH; - uint16_t RESERVED4; - __IO uint16_t DIVL; - uint16_t RESERVED5; - __IO uint16_t CNTH; - uint16_t RESERVED6; - __IO uint16_t CNTL; - uint16_t RESERVED7; - __IO uint16_t ALRH; - uint16_t RESERVED8; - __IO uint16_t ALRL; - uint16_t RESERVED9; -} RTC_TypeDef; - -/** - * @brief SD host Interface - */ - -typedef struct -{ - __IO uint32_t POWER; - __IO uint32_t CLKCR; - __IO uint32_t ARG; - __IO uint32_t CMD; - __I uint32_t RESPCMD; - __I uint32_t RESP1; - __I uint32_t RESP2; - __I uint32_t RESP3; - __I uint32_t RESP4; - __IO uint32_t DTIMER; - __IO uint32_t DLEN; - __IO uint32_t DCTRL; - __I uint32_t DCOUNT; - __I uint32_t STA; - __IO uint32_t ICR; - __IO uint32_t MASK; - uint32_t RESERVED0[2]; - __I uint32_t FIFOCNT; - uint32_t RESERVED1[13]; - __IO uint32_t FIFO; -} SDIO_TypeDef; - -/** - * @brief Serial Peripheral Interface - */ - -typedef struct -{ - __IO uint16_t CR1; - uint16_t RESERVED0; - __IO uint16_t CR2; - uint16_t RESERVED1; - __IO uint16_t SR; - uint16_t RESERVED2; - __IO uint16_t DR; - uint16_t RESERVED3; - __IO uint16_t CRCPR; - uint16_t RESERVED4; - __IO uint16_t RXCRCR; - uint16_t RESERVED5; - __IO uint16_t TXCRCR; - uint16_t RESERVED6; - __IO uint16_t I2SCFGR; - uint16_t RESERVED7; - __IO uint16_t I2SPR; - uint16_t RESERVED8; -} SPI_TypeDef; - -/** - * @brief TIM - */ - -typedef struct -{ - __IO uint16_t CR1; - uint16_t RESERVED0; - __IO uint16_t CR2; - uint16_t RESERVED1; - __IO uint16_t SMCR; - uint16_t RESERVED2; - __IO uint16_t DIER; - uint16_t RESERVED3; - __IO uint16_t SR; - uint16_t RESERVED4; - __IO uint16_t EGR; - uint16_t RESERVED5; - __IO uint16_t CCMR1; - uint16_t RESERVED6; - __IO uint16_t CCMR2; - uint16_t RESERVED7; - __IO uint16_t CCER; - uint16_t RESERVED8; - __IO uint16_t CNT; - uint16_t RESERVED9; - __IO uint16_t PSC; - uint16_t RESERVED10; - __IO uint16_t ARR; - uint16_t RESERVED11; - __IO uint16_t RCR; - uint16_t RESERVED12; - __IO uint16_t CCR1; - uint16_t RESERVED13; - __IO uint16_t CCR2; - uint16_t RESERVED14; - __IO uint16_t CCR3; - uint16_t RESERVED15; - __IO uint16_t CCR4; - uint16_t RESERVED16; - __IO uint16_t BDTR; - uint16_t RESERVED17; - __IO uint16_t DCR; - uint16_t RESERVED18; - __IO uint16_t DMAR; - uint16_t RESERVED19; -} TIM_TypeDef; - -/** - * @brief Universal Synchronous Asynchronous Receiver Transmitter - */ - -typedef struct -{ - __IO uint16_t SR; - uint16_t RESERVED0; - __IO uint16_t DR; - uint16_t RESERVED1; - __IO uint16_t BRR; - uint16_t RESERVED2; - __IO uint16_t CR1; - uint16_t RESERVED3; - __IO uint16_t CR2; - uint16_t RESERVED4; - __IO uint16_t CR3; - uint16_t RESERVED5; - __IO uint16_t GTPR; - uint16_t RESERVED6; -} USART_TypeDef; - -/** - * @brief Window WATCHDOG - */ - -typedef struct -{ - __IO uint32_t CR; - __IO uint32_t CFR; - __IO uint32_t SR; -} WWDG_TypeDef; - -/** - * @} - */ - -/** @addtogroup Peripheral_memory_map - * @{ - */ - -#define PERIPH_BB_BASE ((uint32_t)0x42000000) /*!< Peripheral base address in the alias region */ -#define SRAM_BB_BASE ((uint32_t)0x22000000) /*!< SRAM base address in the alias region */ - -#define SRAM_BASE ((uint32_t)0x20000000) /*!< Peripheral base address in the bit-band region */ -#define PERIPH_BASE ((uint32_t)0x40000000) /*!< SRAM base address in the bit-band region */ - -#define FSMC_R_BASE ((uint32_t)0xA0000000) /*!< FSMC registers base address */ - -/*!< Peripheral memory map */ -#define APB1PERIPH_BASE PERIPH_BASE -#define APB2PERIPH_BASE (PERIPH_BASE + 0x10000) -#define AHBPERIPH_BASE (PERIPH_BASE + 0x20000) - -#define TIM2_BASE (APB1PERIPH_BASE + 0x0000) -#define TIM3_BASE (APB1PERIPH_BASE + 0x0400) -#define TIM4_BASE (APB1PERIPH_BASE + 0x0800) -#define TIM5_BASE (APB1PERIPH_BASE + 0x0C00) -#define TIM6_BASE (APB1PERIPH_BASE + 0x1000) -#define TIM7_BASE (APB1PERIPH_BASE + 0x1400) -#define RTC_BASE (APB1PERIPH_BASE + 0x2800) -#define WWDG_BASE (APB1PERIPH_BASE + 0x2C00) -#define IWDG_BASE (APB1PERIPH_BASE + 0x3000) -#define SPI2_BASE (APB1PERIPH_BASE + 0x3800) -#define SPI3_BASE (APB1PERIPH_BASE + 0x3C00) -#define USART2_BASE (APB1PERIPH_BASE + 0x4400) -#define USART3_BASE (APB1PERIPH_BASE + 0x4800) -#define UART4_BASE (APB1PERIPH_BASE + 0x4C00) -#define UART5_BASE (APB1PERIPH_BASE + 0x5000) -#define I2C1_BASE (APB1PERIPH_BASE + 0x5400) -#define I2C2_BASE (APB1PERIPH_BASE + 0x5800) -#define CAN1_BASE (APB1PERIPH_BASE + 0x6400) -#define CAN2_BASE (APB1PERIPH_BASE + 0x6800) -#define BKP_BASE (APB1PERIPH_BASE + 0x6C00) -#define PWR_BASE (APB1PERIPH_BASE + 0x7000) -#define DAC_BASE (APB1PERIPH_BASE + 0x7400) - -#define AFIO_BASE (APB2PERIPH_BASE + 0x0000) -#define EXTI_BASE (APB2PERIPH_BASE + 0x0400) -#define GPIOA_BASE (APB2PERIPH_BASE + 0x0800) -#define GPIOB_BASE (APB2PERIPH_BASE + 0x0C00) -#define GPIOC_BASE (APB2PERIPH_BASE + 0x1000) -#define GPIOD_BASE (APB2PERIPH_BASE + 0x1400) -#define GPIOE_BASE (APB2PERIPH_BASE + 0x1800) -#define GPIOF_BASE (APB2PERIPH_BASE + 0x1C00) -#define GPIOG_BASE (APB2PERIPH_BASE + 0x2000) -#define ADC1_BASE (APB2PERIPH_BASE + 0x2400) -#define ADC2_BASE (APB2PERIPH_BASE + 0x2800) -#define TIM1_BASE (APB2PERIPH_BASE + 0x2C00) -#define SPI1_BASE (APB2PERIPH_BASE + 0x3000) -#define TIM8_BASE (APB2PERIPH_BASE + 0x3400) -#define USART1_BASE (APB2PERIPH_BASE + 0x3800) -#define ADC3_BASE (APB2PERIPH_BASE + 0x3C00) - -#define SDIO_BASE (PERIPH_BASE + 0x18000) - -#define DMA1_BASE (AHBPERIPH_BASE + 0x0000) -#define DMA1_Channel1_BASE (AHBPERIPH_BASE + 0x0008) -#define DMA1_Channel2_BASE (AHBPERIPH_BASE + 0x001C) -#define DMA1_Channel3_BASE (AHBPERIPH_BASE + 0x0030) -#define DMA1_Channel4_BASE (AHBPERIPH_BASE + 0x0044) -#define DMA1_Channel5_BASE (AHBPERIPH_BASE + 0x0058) -#define DMA1_Channel6_BASE (AHBPERIPH_BASE + 0x006C) -#define DMA1_Channel7_BASE (AHBPERIPH_BASE + 0x0080) -#define DMA2_BASE (AHBPERIPH_BASE + 0x0400) -#define DMA2_Channel1_BASE (AHBPERIPH_BASE + 0x0408) -#define DMA2_Channel2_BASE (AHBPERIPH_BASE + 0x041C) -#define DMA2_Channel3_BASE (AHBPERIPH_BASE + 0x0430) -#define DMA2_Channel4_BASE (AHBPERIPH_BASE + 0x0444) -#define DMA2_Channel5_BASE (AHBPERIPH_BASE + 0x0458) -#define RCC_BASE (AHBPERIPH_BASE + 0x1000) -#define CRC_BASE (AHBPERIPH_BASE + 0x3000) - -#define FLASH_R_BASE (AHBPERIPH_BASE + 0x2000) /*!< Flash registers base address */ -#define OB_BASE ((uint32_t)0x1FFFF800) /*!< Flash Option Bytes base address */ - -#define ETH_BASE (AHBPERIPH_BASE + 0x8000) - -#define FSMC_Bank1_R_BASE (FSMC_R_BASE + 0x0000) /*!< FSMC Bank1 registers base address */ -#define FSMC_Bank1E_R_BASE (FSMC_R_BASE + 0x0104) /*!< FSMC Bank1E registers base address */ -#define FSMC_Bank2_R_BASE (FSMC_R_BASE + 0x0060) /*!< FSMC Bank2 registers base address */ -#define FSMC_Bank3_R_BASE (FSMC_R_BASE + 0x0080) /*!< FSMC Bank3 registers base address */ -#define FSMC_Bank4_R_BASE (FSMC_R_BASE + 0x00A0) /*!< FSMC Bank4 registers base address */ - -#define DBGMCU_BASE ((uint32_t)0xE0042000) /*!< Debug MCU registers base address */ - -/** - * @} - */ - -/** @addtogroup Peripheral_declaration - * @{ - */ - -#define TIM2 ((TIM_TypeDef *) TIM2_BASE) -#define TIM3 ((TIM_TypeDef *) TIM3_BASE) -#define TIM4 ((TIM_TypeDef *) TIM4_BASE) -#define TIM5 ((TIM_TypeDef *) TIM5_BASE) -#define TIM6 ((TIM_TypeDef *) TIM6_BASE) -#define TIM7 ((TIM_TypeDef *) TIM7_BASE) -#define RTC ((RTC_TypeDef *) RTC_BASE) -#define WWDG ((WWDG_TypeDef *) WWDG_BASE) -#define IWDG ((IWDG_TypeDef *) IWDG_BASE) -#define SPI2 ((SPI_TypeDef *) SPI2_BASE) -#define SPI3 ((SPI_TypeDef *) SPI3_BASE) -#define USART2 ((USART_TypeDef *) USART2_BASE) -#define USART3 ((USART_TypeDef *) USART3_BASE) -#define UART4 ((USART_TypeDef *) UART4_BASE) -#define UART5 ((USART_TypeDef *) UART5_BASE) -#define I2C1 ((I2C_TypeDef *) I2C1_BASE) -#define I2C2 ((I2C_TypeDef *) I2C2_BASE) -#define CAN1 ((CAN_TypeDef *) CAN1_BASE) -#define CAN2 ((CAN_TypeDef *) CAN2_BASE) -#define BKP ((BKP_TypeDef *) BKP_BASE) -#define PWR ((PWR_TypeDef *) PWR_BASE) -#define DAC ((DAC_TypeDef *) DAC_BASE) -#define AFIO ((AFIO_TypeDef *) AFIO_BASE) -#define EXTI ((EXTI_TypeDef *) EXTI_BASE) -#define GPIOA ((GPIO_TypeDef *) GPIOA_BASE) -#define GPIOB ((GPIO_TypeDef *) GPIOB_BASE) -#define GPIOC ((GPIO_TypeDef *) GPIOC_BASE) -#define GPIOD ((GPIO_TypeDef *) GPIOD_BASE) -#define GPIOE ((GPIO_TypeDef *) GPIOE_BASE) -#define GPIOF ((GPIO_TypeDef *) GPIOF_BASE) -#define GPIOG ((GPIO_TypeDef *) GPIOG_BASE) -#define ADC1 ((ADC_TypeDef *) ADC1_BASE) -#define ADC2 ((ADC_TypeDef *) ADC2_BASE) -#define TIM1 ((TIM_TypeDef *) TIM1_BASE) -#define SPI1 ((SPI_TypeDef *) SPI1_BASE) -#define TIM8 ((TIM_TypeDef *) TIM8_BASE) -#define USART1 ((USART_TypeDef *) USART1_BASE) -#define ADC3 ((ADC_TypeDef *) ADC3_BASE) -#define SDIO ((SDIO_TypeDef *) SDIO_BASE) -#define DMA1 ((DMA_TypeDef *) DMA1_BASE) -#define DMA2 ((DMA_TypeDef *) DMA2_BASE) -#define DMA1_Channel1 ((DMA_Channel_TypeDef *) DMA1_Channel1_BASE) -#define DMA1_Channel2 ((DMA_Channel_TypeDef *) DMA1_Channel2_BASE) -#define DMA1_Channel3 ((DMA_Channel_TypeDef *) DMA1_Channel3_BASE) -#define DMA1_Channel4 ((DMA_Channel_TypeDef *) DMA1_Channel4_BASE) -#define DMA1_Channel5 ((DMA_Channel_TypeDef *) DMA1_Channel5_BASE) -#define DMA1_Channel6 ((DMA_Channel_TypeDef *) DMA1_Channel6_BASE) -#define DMA1_Channel7 ((DMA_Channel_TypeDef *) DMA1_Channel7_BASE) -#define DMA2_Channel1 ((DMA_Channel_TypeDef *) DMA2_Channel1_BASE) -#define DMA2_Channel2 ((DMA_Channel_TypeDef *) DMA2_Channel2_BASE) -#define DMA2_Channel3 ((DMA_Channel_TypeDef *) DMA2_Channel3_BASE) -#define DMA2_Channel4 ((DMA_Channel_TypeDef *) DMA2_Channel4_BASE) -#define DMA2_Channel5 ((DMA_Channel_TypeDef *) DMA2_Channel5_BASE) -#define RCC ((RCC_TypeDef *) RCC_BASE) -#define CRC ((CRC_TypeDef *) CRC_BASE) -#define FLASH ((FLASH_TypeDef *) FLASH_R_BASE) -#define OB ((OB_TypeDef *) OB_BASE) -#define ETH ((ETH_TypeDef *) ETH_BASE) -#define FSMC_Bank1 ((FSMC_Bank1_TypeDef *) FSMC_Bank1_R_BASE) -#define FSMC_Bank1E ((FSMC_Bank1E_TypeDef *) FSMC_Bank1E_R_BASE) -#define FSMC_Bank2 ((FSMC_Bank2_TypeDef *) FSMC_Bank2_R_BASE) -#define FSMC_Bank3 ((FSMC_Bank3_TypeDef *) FSMC_Bank3_R_BASE) -#define FSMC_Bank4 ((FSMC_Bank4_TypeDef *) FSMC_Bank4_R_BASE) -#define DBGMCU ((DBGMCU_TypeDef *) DBGMCU_BASE) - -/** - * @} - */ - -/** @addtogroup Exported_constants - * @{ - */ - - /** @addtogroup Peripheral_Registers_Bits_Definition - * @{ - */ - -/******************************************************************************/ -/* Peripheral Registers_Bits_Definition */ -/******************************************************************************/ - -/******************************************************************************/ -/* */ -/* CRC calculation unit */ -/* */ -/******************************************************************************/ - -/******************* Bit definition for CRC_DR register *********************/ -#define CRC_DR_DR ((uint32_t)0xFFFFFFFF) /*!< Data register bits */ - - -/******************* Bit definition for CRC_IDR register ********************/ -#define CRC_IDR_IDR ((uint8_t)0xFF) /*!< General-purpose 8-bit data register bits */ - - -/******************** Bit definition for CRC_CR register ********************/ -#define CRC_CR_RESET ((uint8_t)0x01) /*!< RESET bit */ - -/******************************************************************************/ -/* */ -/* Power Control */ -/* */ -/******************************************************************************/ - -/******************** Bit definition for PWR_CR register ********************/ -#define PWR_CR_LPDS ((uint16_t)0x0001) /*!< Low-Power Deepsleep */ -#define PWR_CR_PDDS ((uint16_t)0x0002) /*!< Power Down Deepsleep */ -#define PWR_CR_CWUF ((uint16_t)0x0004) /*!< Clear Wakeup Flag */ -#define PWR_CR_CSBF ((uint16_t)0x0008) /*!< Clear Standby Flag */ -#define PWR_CR_PVDE ((uint16_t)0x0010) /*!< Power Voltage Detector Enable */ - -#define PWR_CR_PLS ((uint16_t)0x00E0) /*!< PLS[2:0] bits (PVD Level Selection) */ -#define PWR_CR_PLS_0 ((uint16_t)0x0020) /*!< Bit 0 */ -#define PWR_CR_PLS_1 ((uint16_t)0x0040) /*!< Bit 1 */ -#define PWR_CR_PLS_2 ((uint16_t)0x0080) /*!< Bit 2 */ - -/*!< PVD level configuration */ -#define PWR_CR_PLS_2V2 ((uint16_t)0x0000) /*!< PVD level 2.2V */ -#define PWR_CR_PLS_2V3 ((uint16_t)0x0020) /*!< PVD level 2.3V */ -#define PWR_CR_PLS_2V4 ((uint16_t)0x0040) /*!< PVD level 2.4V */ -#define PWR_CR_PLS_2V5 ((uint16_t)0x0060) /*!< PVD level 2.5V */ -#define PWR_CR_PLS_2V6 ((uint16_t)0x0080) /*!< PVD level 2.6V */ -#define PWR_CR_PLS_2V7 ((uint16_t)0x00A0) /*!< PVD level 2.7V */ -#define PWR_CR_PLS_2V8 ((uint16_t)0x00C0) /*!< PVD level 2.8V */ -#define PWR_CR_PLS_2V9 ((uint16_t)0x00E0) /*!< PVD level 2.9V */ - -#define PWR_CR_DBP ((uint16_t)0x0100) /*!< Disable Backup Domain write protection */ - - -/******************* Bit definition for PWR_CSR register ********************/ -#define PWR_CSR_WUF ((uint16_t)0x0001) /*!< Wakeup Flag */ -#define PWR_CSR_SBF ((uint16_t)0x0002) /*!< Standby Flag */ -#define PWR_CSR_PVDO ((uint16_t)0x0004) /*!< PVD Output */ -#define PWR_CSR_EWUP ((uint16_t)0x0100) /*!< Enable WKUP pin */ - -/******************************************************************************/ -/* */ -/* Backup registers */ -/* */ -/******************************************************************************/ - -/******************* Bit definition for BKP_DR1 register ********************/ -#define BKP_DR1_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR2 register ********************/ -#define BKP_DR2_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR3 register ********************/ -#define BKP_DR3_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR4 register ********************/ -#define BKP_DR4_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR5 register ********************/ -#define BKP_DR5_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR6 register ********************/ -#define BKP_DR6_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR7 register ********************/ -#define BKP_DR7_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR8 register ********************/ -#define BKP_DR8_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR9 register ********************/ -#define BKP_DR9_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR10 register *******************/ -#define BKP_DR10_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR11 register *******************/ -#define BKP_DR11_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR12 register *******************/ -#define BKP_DR12_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR13 register *******************/ -#define BKP_DR13_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR14 register *******************/ -#define BKP_DR14_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR15 register *******************/ -#define BKP_DR15_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR16 register *******************/ -#define BKP_DR16_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR17 register *******************/ -#define BKP_DR17_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/****************** Bit definition for BKP_DR18 register ********************/ -#define BKP_DR18_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR19 register *******************/ -#define BKP_DR19_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR20 register *******************/ -#define BKP_DR20_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR21 register *******************/ -#define BKP_DR21_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR22 register *******************/ -#define BKP_DR22_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR23 register *******************/ -#define BKP_DR23_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR24 register *******************/ -#define BKP_DR24_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR25 register *******************/ -#define BKP_DR25_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR26 register *******************/ -#define BKP_DR26_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR27 register *******************/ -#define BKP_DR27_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR28 register *******************/ -#define BKP_DR28_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR29 register *******************/ -#define BKP_DR29_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR30 register *******************/ -#define BKP_DR30_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR31 register *******************/ -#define BKP_DR31_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR32 register *******************/ -#define BKP_DR32_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR33 register *******************/ -#define BKP_DR33_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR34 register *******************/ -#define BKP_DR34_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR35 register *******************/ -#define BKP_DR35_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR36 register *******************/ -#define BKP_DR36_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR37 register *******************/ -#define BKP_DR37_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR38 register *******************/ -#define BKP_DR38_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR39 register *******************/ -#define BKP_DR39_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR40 register *******************/ -#define BKP_DR40_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR41 register *******************/ -#define BKP_DR41_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/******************* Bit definition for BKP_DR42 register *******************/ -#define BKP_DR42_D ((uint16_t)0xFFFF) /*!< Backup data */ - -/****************** Bit definition for BKP_RTCCR register *******************/ -#define BKP_RTCCR_CAL ((uint16_t)0x007F) /*!< Calibration value */ -#define BKP_RTCCR_CCO ((uint16_t)0x0080) /*!< Calibration Clock Output */ -#define BKP_RTCCR_ASOE ((uint16_t)0x0100) /*!< Alarm or Second Output Enable */ -#define BKP_RTCCR_ASOS ((uint16_t)0x0200) /*!< Alarm or Second Output Selection */ - -/******************** Bit definition for BKP_CR register ********************/ -#define BKP_CR_TPE ((uint8_t)0x01) /*!< TAMPER pin enable */ -#define BKP_CR_TPAL ((uint8_t)0x02) /*!< TAMPER pin active level */ - -/******************* Bit definition for BKP_CSR register ********************/ -#define BKP_CSR_CTE ((uint16_t)0x0001) /*!< Clear Tamper event */ -#define BKP_CSR_CTI ((uint16_t)0x0002) /*!< Clear Tamper Interrupt */ -#define BKP_CSR_TPIE ((uint16_t)0x0004) /*!< TAMPER Pin interrupt enable */ -#define BKP_CSR_TEF ((uint16_t)0x0100) /*!< Tamper Event Flag */ -#define BKP_CSR_TIF ((uint16_t)0x0200) /*!< Tamper Interrupt Flag */ - -/******************************************************************************/ -/* */ -/* Reset and Clock Control */ -/* */ -/******************************************************************************/ - -/******************** Bit definition for RCC_CR register ********************/ -#define RCC_CR_HSION ((uint32_t)0x00000001) /*!< Internal High Speed clock enable */ -#define RCC_CR_HSIRDY ((uint32_t)0x00000002) /*!< Internal High Speed clock ready flag */ -#define RCC_CR_HSITRIM ((uint32_t)0x000000F8) /*!< Internal High Speed clock trimming */ -#define RCC_CR_HSICAL ((uint32_t)0x0000FF00) /*!< Internal High Speed clock Calibration */ -#define RCC_CR_HSEON ((uint32_t)0x00010000) /*!< External High Speed clock enable */ -#define RCC_CR_HSERDY ((uint32_t)0x00020000) /*!< External High Speed clock ready flag */ -#define RCC_CR_HSEBYP ((uint32_t)0x00040000) /*!< External High Speed clock Bypass */ -#define RCC_CR_CSSON ((uint32_t)0x00080000) /*!< Clock Security System enable */ -#define RCC_CR_PLLON ((uint32_t)0x01000000) /*!< PLL enable */ -#define RCC_CR_PLLRDY ((uint32_t)0x02000000) /*!< PLL clock ready flag */ - -#ifdef STM32F10X_CL - #define RCC_CR_PLL2ON ((uint32_t)0x04000000) /*!< PLL2 enable */ - #define RCC_CR_PLL2RDY ((uint32_t)0x08000000) /*!< PLL2 clock ready flag */ - #define RCC_CR_PLL3ON ((uint32_t)0x10000000) /*!< PLL3 enable */ - #define RCC_CR_PLL3RDY ((uint32_t)0x20000000) /*!< PLL3 clock ready flag */ -#endif /* STM32F10X_CL */ - -/******************* Bit definition for RCC_CFGR register *******************/ -/*!< SW configuration */ -#define RCC_CFGR_SW ((uint32_t)0x00000003) /*!< SW[1:0] bits (System clock Switch) */ -#define RCC_CFGR_SW_0 ((uint32_t)0x00000001) /*!< Bit 0 */ -#define RCC_CFGR_SW_1 ((uint32_t)0x00000002) /*!< Bit 1 */ - -#define RCC_CFGR_SW_HSI ((uint32_t)0x00000000) /*!< HSI selected as system clock */ -#define RCC_CFGR_SW_HSE ((uint32_t)0x00000001) /*!< HSE selected as system clock */ -#define RCC_CFGR_SW_PLL ((uint32_t)0x00000002) /*!< PLL selected as system clock */ - -/*!< SWS configuration */ -#define RCC_CFGR_SWS ((uint32_t)0x0000000C) /*!< SWS[1:0] bits (System Clock Switch Status) */ -#define RCC_CFGR_SWS_0 ((uint32_t)0x00000004) /*!< Bit 0 */ -#define RCC_CFGR_SWS_1 ((uint32_t)0x00000008) /*!< Bit 1 */ - -#define RCC_CFGR_SWS_HSI ((uint32_t)0x00000000) /*!< HSI oscillator used as system clock */ -#define RCC_CFGR_SWS_HSE ((uint32_t)0x00000004) /*!< HSE oscillator used as system clock */ -#define RCC_CFGR_SWS_PLL ((uint32_t)0x00000008) /*!< PLL used as system clock */ - -/*!< HPRE configuration */ -#define RCC_CFGR_HPRE ((uint32_t)0x000000F0) /*!< HPRE[3:0] bits (AHB prescaler) */ -#define RCC_CFGR_HPRE_0 ((uint32_t)0x00000010) /*!< Bit 0 */ -#define RCC_CFGR_HPRE_1 ((uint32_t)0x00000020) /*!< Bit 1 */ -#define RCC_CFGR_HPRE_2 ((uint32_t)0x00000040) /*!< Bit 2 */ -#define RCC_CFGR_HPRE_3 ((uint32_t)0x00000080) /*!< Bit 3 */ - -#define RCC_CFGR_HPRE_DIV1 ((uint32_t)0x00000000) /*!< SYSCLK not divided */ -#define RCC_CFGR_HPRE_DIV2 ((uint32_t)0x00000080) /*!< SYSCLK divided by 2 */ -#define RCC_CFGR_HPRE_DIV4 ((uint32_t)0x00000090) /*!< SYSCLK divided by 4 */ -#define RCC_CFGR_HPRE_DIV8 ((uint32_t)0x000000A0) /*!< SYSCLK divided by 8 */ -#define RCC_CFGR_HPRE_DIV16 ((uint32_t)0x000000B0) /*!< SYSCLK divided by 16 */ -#define RCC_CFGR_HPRE_DIV64 ((uint32_t)0x000000C0) /*!< SYSCLK divided by 64 */ -#define RCC_CFGR_HPRE_DIV128 ((uint32_t)0x000000D0) /*!< SYSCLK divided by 128 */ -#define RCC_CFGR_HPRE_DIV256 ((uint32_t)0x000000E0) /*!< SYSCLK divided by 256 */ -#define RCC_CFGR_HPRE_DIV512 ((uint32_t)0x000000F0) /*!< SYSCLK divided by 512 */ - -/*!< PPRE1 configuration */ -#define RCC_CFGR_PPRE1 ((uint32_t)0x00000700) /*!< PRE1[2:0] bits (APB1 prescaler) */ -#define RCC_CFGR_PPRE1_0 ((uint32_t)0x00000100) /*!< Bit 0 */ -#define RCC_CFGR_PPRE1_1 ((uint32_t)0x00000200) /*!< Bit 1 */ -#define RCC_CFGR_PPRE1_2 ((uint32_t)0x00000400) /*!< Bit 2 */ - -#define RCC_CFGR_PPRE1_DIV1 ((uint32_t)0x00000000) /*!< HCLK not divided */ -#define RCC_CFGR_PPRE1_DIV2 ((uint32_t)0x00000400) /*!< HCLK divided by 2 */ -#define RCC_CFGR_PPRE1_DIV4 ((uint32_t)0x00000500) /*!< HCLK divided by 4 */ -#define RCC_CFGR_PPRE1_DIV8 ((uint32_t)0x00000600) /*!< HCLK divided by 8 */ -#define RCC_CFGR_PPRE1_DIV16 ((uint32_t)0x00000700) /*!< HCLK divided by 16 */ - -/*!< PPRE2 configuration */ -#define RCC_CFGR_PPRE2 ((uint32_t)0x00003800) /*!< PRE2[2:0] bits (APB2 prescaler) */ -#define RCC_CFGR_PPRE2_0 ((uint32_t)0x00000800) /*!< Bit 0 */ -#define RCC_CFGR_PPRE2_1 ((uint32_t)0x00001000) /*!< Bit 1 */ -#define RCC_CFGR_PPRE2_2 ((uint32_t)0x00002000) /*!< Bit 2 */ - -#define RCC_CFGR_PPRE2_DIV1 ((uint32_t)0x00000000) /*!< HCLK not divided */ -#define RCC_CFGR_PPRE2_DIV2 ((uint32_t)0x00002000) /*!< HCLK divided by 2 */ -#define RCC_CFGR_PPRE2_DIV4 ((uint32_t)0x00002800) /*!< HCLK divided by 4 */ -#define RCC_CFGR_PPRE2_DIV8 ((uint32_t)0x00003000) /*!< HCLK divided by 8 */ -#define RCC_CFGR_PPRE2_DIV16 ((uint32_t)0x00003800) /*!< HCLK divided by 16 */ - -/*!< ADCPPRE configuration */ -#define RCC_CFGR_ADCPRE ((uint32_t)0x0000C000) /*!< ADCPRE[1:0] bits (ADC prescaler) */ -#define RCC_CFGR_ADCPRE_0 ((uint32_t)0x00004000) /*!< Bit 0 */ -#define RCC_CFGR_ADCPRE_1 ((uint32_t)0x00008000) /*!< Bit 1 */ - -#define RCC_CFGR_ADCPRE_DIV2 ((uint32_t)0x00000000) /*!< PCLK2 divided by 2 */ -#define RCC_CFGR_ADCPRE_DIV4 ((uint32_t)0x00004000) /*!< PCLK2 divided by 4 */ -#define RCC_CFGR_ADCPRE_DIV6 ((uint32_t)0x00008000) /*!< PCLK2 divided by 6 */ -#define RCC_CFGR_ADCPRE_DIV8 ((uint32_t)0x0000C000) /*!< PCLK2 divided by 8 */ - -#define RCC_CFGR_PLLSRC ((uint32_t)0x00010000) /*!< PLL entry clock source */ - -#define RCC_CFGR_PLLXTPRE ((uint32_t)0x00020000) /*!< HSE divider for PLL entry */ - -/*!< PLLMUL configuration */ -#define RCC_CFGR_PLLMULL ((uint32_t)0x003C0000) /*!< PLLMUL[3:0] bits (PLL multiplication factor) */ -#define RCC_CFGR_PLLMULL_0 ((uint32_t)0x00040000) /*!< Bit 0 */ -#define RCC_CFGR_PLLMULL_1 ((uint32_t)0x00080000) /*!< Bit 1 */ -#define RCC_CFGR_PLLMULL_2 ((uint32_t)0x00100000) /*!< Bit 2 */ -#define RCC_CFGR_PLLMULL_3 ((uint32_t)0x00200000) /*!< Bit 3 */ - -#ifdef STM32F10X_CL - #define RCC_CFGR_PLLSRC_HSI_Div2 ((uint32_t)0x00000000) /*!< HSI clock divided by 2 selected as PLL entry clock source */ - #define RCC_CFGR_PLLSRC_PREDIV1 ((uint32_t)0x00010000) /*!< PREDIV1 clock selected as PLL entry clock source */ - - #define RCC_CFGR_PLLXTPRE_PREDIV1 ((uint32_t)0x00000000) /*!< PREDIV1 clock not divided for PLL entry */ - #define RCC_CFGR_PLLXTPRE_PREDIV1_Div2 ((uint32_t)0x00020000) /*!< PREDIV1 clock divided by 2 for PLL entry */ - - #define RCC_CFGR_PLLMULL4 ((uint32_t)0x00080000) /*!< PLL input clock * 4 */ - #define RCC_CFGR_PLLMULL5 ((uint32_t)0x000C0000) /*!< PLL input clock * 5 */ - #define RCC_CFGR_PLLMULL6 ((uint32_t)0x00100000) /*!< PLL input clock * 6 */ - #define RCC_CFGR_PLLMULL7 ((uint32_t)0x00140000) /*!< PLL input clock * 7 */ - #define RCC_CFGR_PLLMULL8 ((uint32_t)0x00180000) /*!< PLL input clock * 8 */ - #define RCC_CFGR_PLLMULL9 ((uint32_t)0x001C0000) /*!< PLL input clock * 9 */ - #define RCC_CFGR_PLLMULL6_5 ((uint32_t)0x00340000) /*!< PLL input clock * 6.5 */ - - #define RCC_CFGR_OTGFSPRE ((uint32_t)0x00400000) /*!< USB OTF FS prescaler */ - -/*!< MCO configuration */ - #define RCC_CFGR_MCO ((uint32_t)0x0F000000) /*!< MCO[3:0] bits (Microcontroller Clock Output) */ - #define RCC_CFGR_MCO_0 ((uint32_t)0x01000000) /*!< Bit 0 */ - #define RCC_CFGR_MCO_1 ((uint32_t)0x02000000) /*!< Bit 1 */ - #define RCC_CFGR_MCO_2 ((uint32_t)0x04000000) /*!< Bit 2 */ - #define RCC_CFGR_MCO_3 ((uint32_t)0x08000000) /*!< Bit 3 */ - - #define RCC_CFGR_MCO_NOCLOCK ((uint32_t)0x00000000) /*!< No clock */ - #define RCC_CFGR_MCO_SYSCLK ((uint32_t)0x04000000) /*!< System clock selected as MCO source */ - #define RCC_CFGR_MCO_HSI ((uint32_t)0x05000000) /*!< HSI clock selected as MCO source */ - #define RCC_CFGR_MCO_HSE ((uint32_t)0x06000000) /*!< HSE clock selected as MCO source */ - #define RCC_CFGR_MCO_PLLCLK_Div2 ((uint32_t)0x07000000) /*!< PLL clock divided by 2 selected as MCO source */ - #define RCC_CFGR_MCO_PLL2CLK ((uint32_t)0x08000000) /*!< PLL2 clock selected as MCO source*/ - #define RCC_CFGR_MCO_PLL3CLK_Div2 ((uint32_t)0x09000000) /*!< PLL3 clock divided by 2 selected as MCO source*/ - #define RCC_CFGR_MCO_Ext_HSE ((uint32_t)0x0A000000) /*!< XT1 external 3-25 MHz oscillator clock selected as MCO source (for Ethernet) */ - #define RCC_CFGR_MCO_PLL3CLK ((uint32_t)0x0B000000) /*!< PLL3 clock selected as MCO source (for Ethernet) */ -#else - #define RCC_CFGR_PLLSRC_HSI_Div2 ((uint32_t)0x00000000) /*!< HSI clock divided by 2 selected as PLL entry clock source */ - #define RCC_CFGR_PLLSRC_HSE ((uint32_t)0x00010000) /*!< HSE clock selected as PLL entry clock source */ - - #define RCC_CFGR_PLLXTPRE_HSE ((uint32_t)0x00000000) /*!< HSE clock not divided for PLL entry */ - #define RCC_CFGR_PLLXTPRE_HSE_Div2 ((uint32_t)0x00020000) /*!< HSE clock divided by 2 for PLL entry */ - - #define RCC_CFGR_PLLMULL2 ((uint32_t)0x00000000) /*!< PLL input clock*2 */ - #define RCC_CFGR_PLLMULL3 ((uint32_t)0x00040000) /*!< PLL input clock*3 */ - #define RCC_CFGR_PLLMULL4 ((uint32_t)0x00080000) /*!< PLL input clock*4 */ - #define RCC_CFGR_PLLMULL5 ((uint32_t)0x000C0000) /*!< PLL input clock*5 */ - #define RCC_CFGR_PLLMULL6 ((uint32_t)0x00100000) /*!< PLL input clock*6 */ - #define RCC_CFGR_PLLMULL7 ((uint32_t)0x00140000) /*!< PLL input clock*7 */ - #define RCC_CFGR_PLLMULL8 ((uint32_t)0x00180000) /*!< PLL input clock*8 */ - #define RCC_CFGR_PLLMULL9 ((uint32_t)0x001C0000) /*!< PLL input clock*9 */ - #define RCC_CFGR_PLLMULL10 ((uint32_t)0x00200000) /*!< PLL input clock10 */ - #define RCC_CFGR_PLLMULL11 ((uint32_t)0x00240000) /*!< PLL input clock*11 */ - #define RCC_CFGR_PLLMULL12 ((uint32_t)0x00280000) /*!< PLL input clock*12 */ - #define RCC_CFGR_PLLMULL13 ((uint32_t)0x002C0000) /*!< PLL input clock*13 */ - #define RCC_CFGR_PLLMULL14 ((uint32_t)0x00300000) /*!< PLL input clock*14 */ - #define RCC_CFGR_PLLMULL15 ((uint32_t)0x00340000) /*!< PLL input clock*15 */ - #define RCC_CFGR_PLLMULL16 ((uint32_t)0x00380000) /*!< PLL input clock*16 */ - #define RCC_CFGR_USBPRE ((uint32_t)0x00400000) /*!< USB Device prescaler */ - -/*!< MCO configuration */ - #define RCC_CFGR_MCO ((uint32_t)0x07000000) /*!< MCO[2:0] bits (Microcontroller Clock Output) */ - #define RCC_CFGR_MCO_0 ((uint32_t)0x01000000) /*!< Bit 0 */ - #define RCC_CFGR_MCO_1 ((uint32_t)0x02000000) /*!< Bit 1 */ - #define RCC_CFGR_MCO_2 ((uint32_t)0x04000000) /*!< Bit 2 */ - - #define RCC_CFGR_MCO_NOCLOCK ((uint32_t)0x00000000) /*!< No clock */ - #define RCC_CFGR_MCO_SYSCLK ((uint32_t)0x04000000) /*!< System clock selected as MCO source */ - #define RCC_CFGR_MCO_HSI ((uint32_t)0x05000000) /*!< HSI clock selected as MCO source */ - #define RCC_CFGR_MCO_HSE ((uint32_t)0x06000000) /*!< HSE clock selected as MCO source */ - #define RCC_CFGR_MCO_PLL ((uint32_t)0x07000000) /*!< PLL clock divided by 2 selected as MCO source */ -#endif /* STM32F10X_CL */ - -/*!<****************** Bit definition for RCC_CIR register ********************/ -#define RCC_CIR_LSIRDYF ((uint32_t)0x00000001) /*!< LSI Ready Interrupt flag */ -#define RCC_CIR_LSERDYF ((uint32_t)0x00000002) /*!< LSE Ready Interrupt flag */ -#define RCC_CIR_HSIRDYF ((uint32_t)0x00000004) /*!< HSI Ready Interrupt flag */ -#define RCC_CIR_HSERDYF ((uint32_t)0x00000008) /*!< HSE Ready Interrupt flag */ -#define RCC_CIR_PLLRDYF ((uint32_t)0x00000010) /*!< PLL Ready Interrupt flag */ -#define RCC_CIR_CSSF ((uint32_t)0x00000080) /*!< Clock Security System Interrupt flag */ -#define RCC_CIR_LSIRDYIE ((uint32_t)0x00000100) /*!< LSI Ready Interrupt Enable */ -#define RCC_CIR_LSERDYIE ((uint32_t)0x00000200) /*!< LSE Ready Interrupt Enable */ -#define RCC_CIR_HSIRDYIE ((uint32_t)0x00000400) /*!< HSI Ready Interrupt Enable */ -#define RCC_CIR_HSERDYIE ((uint32_t)0x00000800) /*!< HSE Ready Interrupt Enable */ -#define RCC_CIR_PLLRDYIE ((uint32_t)0x00001000) /*!< PLL Ready Interrupt Enable */ -#define RCC_CIR_LSIRDYC ((uint32_t)0x00010000) /*!< LSI Ready Interrupt Clear */ -#define RCC_CIR_LSERDYC ((uint32_t)0x00020000) /*!< LSE Ready Interrupt Clear */ -#define RCC_CIR_HSIRDYC ((uint32_t)0x00040000) /*!< HSI Ready Interrupt Clear */ -#define RCC_CIR_HSERDYC ((uint32_t)0x00080000) /*!< HSE Ready Interrupt Clear */ -#define RCC_CIR_PLLRDYC ((uint32_t)0x00100000) /*!< PLL Ready Interrupt Clear */ -#define RCC_CIR_CSSC ((uint32_t)0x00800000) /*!< Clock Security System Interrupt Clear */ - -#ifdef STM32F10X_CL - #define RCC_CIR_PLL2RDYF ((uint32_t)0x00000020) /*!< PLL2 Ready Interrupt flag */ - #define RCC_CIR_PLL3RDYF ((uint32_t)0x00000040) /*!< PLL3 Ready Interrupt flag */ - #define RCC_CIR_PLL2RDYIE ((uint32_t)0x00002000) /*!< PLL2 Ready Interrupt Enable */ - #define RCC_CIR_PLL3RDYIE ((uint32_t)0x00004000) /*!< PLL3 Ready Interrupt Enable */ - #define RCC_CIR_PLL2RDYC ((uint32_t)0x00200000) /*!< PLL2 Ready Interrupt Clear */ - #define RCC_CIR_PLL3RDYC ((uint32_t)0x00400000) /*!< PLL3 Ready Interrupt Clear */ -#endif /* STM32F10X_CL */ - -/***************** Bit definition for RCC_APB2RSTR register *****************/ -#define RCC_APB2RSTR_AFIORST ((uint16_t)0x0001) /*!< Alternate Function I/O reset */ -#define RCC_APB2RSTR_IOPARST ((uint16_t)0x0004) /*!< I/O port A reset */ -#define RCC_APB2RSTR_IOPBRST ((uint16_t)0x0008) /*!< I/O port B reset */ -#define RCC_APB2RSTR_IOPCRST ((uint16_t)0x0010) /*!< I/O port C reset */ -#define RCC_APB2RSTR_IOPDRST ((uint16_t)0x0020) /*!< I/O port D reset */ -#define RCC_APB2RSTR_ADC1RST ((uint16_t)0x0200) /*!< ADC 1 interface reset */ -#define RCC_APB2RSTR_ADC2RST ((uint16_t)0x0400) /*!< ADC 2 interface reset */ -#define RCC_APB2RSTR_TIM1RST ((uint16_t)0x0800) /*!< TIM1 Timer reset */ -#define RCC_APB2RSTR_SPI1RST ((uint16_t)0x1000) /*!< SPI 1 reset */ -#define RCC_APB2RSTR_USART1RST ((uint16_t)0x4000) /*!< USART1 reset */ - -#ifndef STM32F10X_LD - #define RCC_APB2RSTR_IOPERST ((uint16_t)0x0040) /*!< I/O port E reset */ -#endif /* STM32F10X_HD */ - -#ifdef STM32F10X_HD - #define RCC_APB2RSTR_IOPFRST ((uint16_t)0x0080) /*!< I/O port F reset */ - #define RCC_APB2RSTR_IOPGRST ((uint16_t)0x0100) /*!< I/O port G reset */ - #define RCC_APB2RSTR_TIM8RST ((uint16_t)0x2000) /*!< TIM8 Timer reset */ - #define RCC_APB2RSTR_ADC3RST ((uint16_t)0x8000) /*!< ADC3 interface reset */ -#endif /* STM32F10X_HD */ - -/***************** Bit definition for RCC_APB1RSTR register *****************/ -#define RCC_APB1RSTR_TIM2RST ((uint32_t)0x00000001) /*!< Timer 2 reset */ -#define RCC_APB1RSTR_TIM3RST ((uint32_t)0x00000002) /*!< Timer 3 reset */ -#define RCC_APB1RSTR_WWDGRST ((uint32_t)0x00000800) /*!< Window Watchdog reset */ -#define RCC_APB1RSTR_USART2RST ((uint32_t)0x00020000) /*!< USART 2 reset */ -#define RCC_APB1RSTR_I2C1RST ((uint32_t)0x00200000) /*!< I2C 1 reset */ -#define RCC_APB1RSTR_CAN1RST ((uint32_t)0x02000000) /*!< CAN1 reset */ -#define RCC_APB1RSTR_BKPRST ((uint32_t)0x08000000) /*!< Backup interface reset */ -#define RCC_APB1RSTR_PWRRST ((uint32_t)0x10000000) /*!< Power interface reset */ - -#ifndef STM32F10X_LD - #define RCC_APB1RSTR_TIM4RST ((uint32_t)0x00000004) /*!< Timer 4 reset */ - #define RCC_APB1RSTR_SPI2RST ((uint32_t)0x00004000) /*!< SPI 2 reset */ - #define RCC_APB1RSTR_USART3RST ((uint32_t)0x00040000) /*!< RUSART 3 reset */ - #define RCC_APB1RSTR_I2C2RST ((uint32_t)0x00400000) /*!< I2C 2 reset */ -#endif /* STM32F10X_HD */ - -#if defined (STM32F10X_HD) || defined (STM32F10X_MD) || defined (STM32F10X_LD) - #define RCC_APB1RSTR_USBRST ((uint32_t)0x00800000) /*!< USB Device reset */ -#endif - -#if defined (STM32F10X_HD) || defined (STM32F10X_CL) - #define RCC_APB1RSTR_TIM5RST ((uint32_t)0x00000008) /*!< Timer 5 reset */ - #define RCC_APB1RSTR_TIM6RST ((uint32_t)0x00000010) /*!< Timer 6 reset */ - #define RCC_APB1RSTR_TIM7RST ((uint32_t)0x00000020) /*!< Timer 7 reset */ - #define RCC_APB1RSTR_SPI3RST ((uint32_t)0x00008000) /*!< SPI 3 reset */ - #define RCC_APB1RSTR_UART4RST ((uint32_t)0x00080000) /*!< UART 4 reset */ - #define RCC_APB1RSTR_UART5RST ((uint32_t)0x00100000) /*!< UART 5 reset */ - #define RCC_APB1RSTR_DACRST ((uint32_t)0x20000000) /*!< DAC interface reset */ -#endif - -#ifdef STM32F10X_CL - #define RCC_APB1RSTR_CAN2RST ((uint32_t)0x08000000) /*!< CAN2 reset */ -#endif /* STM32F10X_CL */ - -/****************** Bit definition for RCC_AHBENR register ******************/ -#define RCC_AHBENR_DMA1EN ((uint16_t)0x0001) /*!< DMA1 clock enable */ -#define RCC_AHBENR_SRAMEN ((uint16_t)0x0004) /*!< SRAM interface clock enable */ -#define RCC_AHBENR_FLITFEN ((uint16_t)0x0010) /*!< FLITF clock enable */ -#define RCC_AHBENR_CRCEN ((uint16_t)0x0040) /*!< CRC clock enable */ - -#if defined (STM32F10X_HD) || defined (STM32F10X_CL) - #define RCC_AHBENR_DMA2EN ((uint16_t)0x0002) /*!< DMA2 clock enable */ -#endif - -#ifdef STM32F10X_HD - #define RCC_AHBENR_FSMCEN ((uint16_t)0x0100) /*!< FSMC clock enable */ - #define RCC_AHBENR_SDIOEN ((uint16_t)0x0400) /*!< SDIO clock enable */ -#endif /* STM32F10X_HD */ - -#ifdef STM32F10X_CL - #define RCC_AHBENR_OTGFSEN ((uint32_t)0x00001000) /*!< USB OTG FS clock enable */ - #define RCC_AHBENR_ETHMACEN ((uint32_t)0x00004000) /*!< ETHERNET MAC clock enable */ - #define RCC_AHBENR_ETHMACTXEN ((uint32_t)0x00008000) /*!< ETHERNET MAC Tx clock enable */ - #define RCC_AHBENR_ETHMACRXEN ((uint32_t)0x00010000) /*!< ETHERNET MAC Rx clock enable */ -#endif /* STM32F10X_CL */ - -/****************** Bit definition for RCC_APB2ENR register *****************/ -#define RCC_APB2ENR_AFIOEN ((uint16_t)0x0001) /*!< Alternate Function I/O clock enable */ -#define RCC_APB2ENR_IOPAEN ((uint16_t)0x0004) /*!< I/O port A clock enable */ -#define RCC_APB2ENR_IOPBEN ((uint16_t)0x0008) /*!< I/O port B clock enable */ -#define RCC_APB2ENR_IOPCEN ((uint16_t)0x0010) /*!< I/O port C clock enable */ -#define RCC_APB2ENR_IOPDEN ((uint16_t)0x0020) /*!< I/O port D clock enable */ -#define RCC_APB2ENR_ADC1EN ((uint16_t)0x0200) /*!< ADC 1 interface clock enable */ -#define RCC_APB2ENR_ADC2EN ((uint16_t)0x0400) /*!< ADC 2 interface clock enable */ -#define RCC_APB2ENR_TIM1EN ((uint16_t)0x0800) /*!< TIM1 Timer clock enable */ -#define RCC_APB2ENR_SPI1EN ((uint16_t)0x1000) /*!< SPI 1 clock enable */ -#define RCC_APB2ENR_USART1EN ((uint16_t)0x4000) /*!< USART1 clock enable */ - -#ifndef STM32F10X_LD - #define RCC_APB2ENR_IOPEEN ((uint16_t)0x0040) /*!< I/O port E clock enable */ -#endif /* STM32F10X_HD */ - -#ifdef STM32F10X_HD - #define RCC_APB2ENR_IOPFEN ((uint16_t)0x0080) /*!< I/O port F clock enable */ - #define RCC_APB2ENR_IOPGEN ((uint16_t)0x0100) /*!< I/O port G clock enable */ - #define RCC_APB2ENR_TIM8EN ((uint16_t)0x2000) /*!< TIM8 Timer clock enable */ - #define RCC_APB2ENR_ADC3EN ((uint16_t)0x8000) /*!< DMA1 clock enable */ -#endif /* STM32F10X_HD */ - -/***************** Bit definition for RCC_APB1ENR register ******************/ -#define RCC_APB1ENR_TIM2EN ((uint32_t)0x00000001) /*!< Timer 2 clock enabled*/ -#define RCC_APB1ENR_TIM3EN ((uint32_t)0x00000002) /*!< Timer 3 clock enable */ -#define RCC_APB1ENR_WWDGEN ((uint32_t)0x00000800) /*!< Window Watchdog clock enable */ -#define RCC_APB1ENR_USART2EN ((uint32_t)0x00020000) /*!< USART 2 clock enable */ -#define RCC_APB1ENR_I2C1EN ((uint32_t)0x00200000) /*!< I2C 1 clock enable */ -#define RCC_APB1ENR_CAN1EN ((uint32_t)0x02000000) /*!< CAN1 clock enable */ -#define RCC_APB1ENR_BKPEN ((uint32_t)0x08000000) /*!< Backup interface clock enable */ -#define RCC_APB1ENR_PWREN ((uint32_t)0x10000000) /*!< Power interface clock enable */ - -#ifndef STM32F10X_LD - #define RCC_APB1ENR_TIM4EN ((uint32_t)0x00000004) /*!< Timer 4 clock enable */ - #define RCC_APB1ENR_SPI2EN ((uint32_t)0x00004000) /*!< SPI 2 clock enable */ - #define RCC_APB1ENR_USART3EN ((uint32_t)0x00040000) /*!< USART 3 clock enable */ - #define RCC_APB1ENR_I2C2EN ((uint32_t)0x00400000) /*!< I2C 2 clock enable */ -#endif /* STM32F10X_HD */ - -#if defined (STM32F10X_HD) || defined (STM32F10X_MD) || defined (STM32F10X_LD) - #define RCC_APB1ENR_USBEN ((uint32_t)0x00800000) /*!< USB Device clock enable */ -#endif - -#if defined (STM32F10X_HD) || defined (STM32F10X_CL) - #define RCC_APB1ENR_TIM5EN ((uint32_t)0x00000008) /*!< Timer 5 clock enable */ - #define RCC_APB1ENR_TIM6EN ((uint32_t)0x00000010) /*!< Timer 6 clock enable */ - #define RCC_APB1ENR_TIM7EN ((uint32_t)0x00000020) /*!< Timer 7 clock enable */ - #define RCC_APB1ENR_SPI3EN ((uint32_t)0x00008000) /*!< SPI 3 clock enable */ - #define RCC_APB1ENR_UART4EN ((uint32_t)0x00080000) /*!< UART 4 clock enable */ - #define RCC_APB1ENR_UART5EN ((uint32_t)0x00100000) /*!< UART 5 clock enable */ - #define RCC_APB1ENR_DACEN ((uint32_t)0x20000000) /*!< DAC interface clock enable */ -#endif - -#ifdef STM32F10X_CL - #define RCC_APB1ENR_CAN2EN ((uint32_t)0x08000000) /*!< CAN2 clock enable */ -#endif /* STM32F10X_CL */ - -/******************* Bit definition for RCC_BDCR register *******************/ -#define RCC_BDCR_LSEON ((uint32_t)0x00000001) /*!< External Low Speed oscillator enable */ -#define RCC_BDCR_LSERDY ((uint32_t)0x00000002) /*!< External Low Speed oscillator Ready */ -#define RCC_BDCR_LSEBYP ((uint32_t)0x00000004) /*!< External Low Speed oscillator Bypass */ - -#define RCC_BDCR_RTCSEL ((uint32_t)0x00000300) /*!< RTCSEL[1:0] bits (RTC clock source selection) */ -#define RCC_BDCR_RTCSEL_0 ((uint32_t)0x00000100) /*!< Bit 0 */ -#define RCC_BDCR_RTCSEL_1 ((uint32_t)0x00000200) /*!< Bit 1 */ - -/*!< RTC congiguration */ -#define RCC_BDCR_RTCSEL_NOCLOCK ((uint32_t)0x00000000) /*!< No clock */ -#define RCC_BDCR_RTCSEL_LSE ((uint32_t)0x00000100) /*!< LSE oscillator clock used as RTC clock */ -#define RCC_BDCR_RTCSEL_LSI ((uint32_t)0x00000200) /*!< LSI oscillator clock used as RTC clock */ -#define RCC_BDCR_RTCSEL_HSE ((uint32_t)0x00000300) /*!< HSE oscillator clock divided by 128 used as RTC clock */ - -#define RCC_BDCR_RTCEN ((uint32_t)0x00008000) /*!< RTC clock enable */ -#define RCC_BDCR_BDRST ((uint32_t)0x00010000) /*!< Backup domain software reset */ - -/******************* Bit definition for RCC_CSR register ********************/ -#define RCC_CSR_LSION ((uint32_t)0x00000001) /*!< Internal Low Speed oscillator enable */ -#define RCC_CSR_LSIRDY ((uint32_t)0x00000002) /*!< Internal Low Speed oscillator Ready */ -#define RCC_CSR_RMVF ((uint32_t)0x01000000) /*!< Remove reset flag */ -#define RCC_CSR_PINRSTF ((uint32_t)0x04000000) /*!< PIN reset flag */ -#define RCC_CSR_PORRSTF ((uint32_t)0x08000000) /*!< POR/PDR reset flag */ -#define RCC_CSR_SFTRSTF ((uint32_t)0x10000000) /*!< Software Reset flag */ -#define RCC_CSR_IWDGRSTF ((uint32_t)0x20000000) /*!< Independent Watchdog reset flag */ -#define RCC_CSR_WWDGRSTF ((uint32_t)0x40000000) /*!< Window watchdog reset flag */ -#define RCC_CSR_LPWRRSTF ((uint32_t)0x80000000) /*!< Low-Power reset flag */ - -#ifdef STM32F10X_CL -/******************* Bit definition for RCC_AHBRSTR register ****************/ - #define RCC_AHBRSTR_OTGFSRST ((uint32_t)0x00001000) /*!< USB OTG FS reset */ - #define RCC_AHBRSTR_ETHMACRST ((uint32_t)0x00004000) /*!< ETHERNET MAC reset */ - -/******************* Bit definition for RCC_CFGR2 register ******************/ -/*!< PREDIV1 configuration */ - #define RCC_CFGR2_PREDIV1 ((uint32_t)0x0000000F) /*!< PREDIV1[3:0] bits */ - #define RCC_CFGR2_PREDIV1_0 ((uint32_t)0x00000001) /*!< Bit 0 */ - #define RCC_CFGR2_PREDIV1_1 ((uint32_t)0x00000002) /*!< Bit 1 */ - #define RCC_CFGR2_PREDIV1_2 ((uint32_t)0x00000004) /*!< Bit 2 */ - #define RCC_CFGR2_PREDIV1_3 ((uint32_t)0x00000008) /*!< Bit 3 */ - - #define RCC_CFGR2_PREDIV1_DIV1 ((uint32_t)0x00000000) /*!< PREDIV1 input clock not divided */ - #define RCC_CFGR2_PREDIV1_DIV2 ((uint32_t)0x00000001) /*!< PREDIV1 input clock divided by 2 */ - #define RCC_CFGR2_PREDIV1_DIV3 ((uint32_t)0x00000002) /*!< PREDIV1 input clock divided by 3 */ - #define RCC_CFGR2_PREDIV1_DIV4 ((uint32_t)0x00000003) /*!< PREDIV1 input clock divided by 4 */ - #define RCC_CFGR2_PREDIV1_DIV5 ((uint32_t)0x00000004) /*!< PREDIV1 input clock divided by 5 */ - #define RCC_CFGR2_PREDIV1_DIV6 ((uint32_t)0x00000005) /*!< PREDIV1 input clock divided by 6 */ - #define RCC_CFGR2_PREDIV1_DIV7 ((uint32_t)0x00000006) /*!< PREDIV1 input clock divided by 7 */ - #define RCC_CFGR2_PREDIV1_DIV8 ((uint32_t)0x00000007) /*!< PREDIV1 input clock divided by 8 */ - #define RCC_CFGR2_PREDIV1_DIV9 ((uint32_t)0x00000008) /*!< PREDIV1 input clock divided by 9 */ - #define RCC_CFGR2_PREDIV1_DIV10 ((uint32_t)0x00000009) /*!< PREDIV1 input clock divided by 10 */ - #define RCC_CFGR2_PREDIV1_DIV11 ((uint32_t)0x0000000A) /*!< PREDIV1 input clock divided by 11 */ - #define RCC_CFGR2_PREDIV1_DIV12 ((uint32_t)0x0000000B) /*!< PREDIV1 input clock divided by 12 */ - #define RCC_CFGR2_PREDIV1_DIV13 ((uint32_t)0x0000000C) /*!< PREDIV1 input clock divided by 13 */ - #define RCC_CFGR2_PREDIV1_DIV14 ((uint32_t)0x0000000D) /*!< PREDIV1 input clock divided by 14 */ - #define RCC_CFGR2_PREDIV1_DIV15 ((uint32_t)0x0000000E) /*!< PREDIV1 input clock divided by 15 */ - #define RCC_CFGR2_PREDIV1_DIV16 ((uint32_t)0x0000000F) /*!< PREDIV1 input clock divided by 16 */ - -/*!< PREDIV2 configuration */ - #define RCC_CFGR2_PREDIV2 ((uint32_t)0x000000F0) /*!< PREDIV2[3:0] bits */ - #define RCC_CFGR2_PREDIV2_0 ((uint32_t)0x00000010) /*!< Bit 0 */ - #define RCC_CFGR2_PREDIV2_1 ((uint32_t)0x00000020) /*!< Bit 1 */ - #define RCC_CFGR2_PREDIV2_2 ((uint32_t)0x00000040) /*!< Bit 2 */ - #define RCC_CFGR2_PREDIV2_3 ((uint32_t)0x00000080) /*!< Bit 3 */ - - #define RCC_CFGR2_PREDIV2_DIV1 ((uint32_t)0x00000000) /*!< PREDIV2 input clock not divided */ - #define RCC_CFGR2_PREDIV2_DIV2 ((uint32_t)0x00000010) /*!< PREDIV2 input clock divided by 2 */ - #define RCC_CFGR2_PREDIV2_DIV3 ((uint32_t)0x00000020) /*!< PREDIV2 input clock divided by 3 */ - #define RCC_CFGR2_PREDIV2_DIV4 ((uint32_t)0x00000030) /*!< PREDIV2 input clock divided by 4 */ - #define RCC_CFGR2_PREDIV2_DIV5 ((uint32_t)0x00000040) /*!< PREDIV2 input clock divided by 5 */ - #define RCC_CFGR2_PREDIV2_DIV6 ((uint32_t)0x00000050) /*!< PREDIV2 input clock divided by 6 */ - #define RCC_CFGR2_PREDIV2_DIV7 ((uint32_t)0x00000060) /*!< PREDIV2 input clock divided by 7 */ - #define RCC_CFGR2_PREDIV2_DIV8 ((uint32_t)0x00000070) /*!< PREDIV2 input clock divided by 8 */ - #define RCC_CFGR2_PREDIV2_DIV9 ((uint32_t)0x00000080) /*!< PREDIV2 input clock divided by 9 */ - #define RCC_CFGR2_PREDIV2_DIV10 ((uint32_t)0x00000090) /*!< PREDIV2 input clock divided by 10 */ - #define RCC_CFGR2_PREDIV2_DIV11 ((uint32_t)0x000000A0) /*!< PREDIV2 input clock divided by 11 */ - #define RCC_CFGR2_PREDIV2_DIV12 ((uint32_t)0x000000B0) /*!< PREDIV2 input clock divided by 12 */ - #define RCC_CFGR2_PREDIV2_DIV13 ((uint32_t)0x000000C0) /*!< PREDIV2 input clock divided by 13 */ - #define RCC_CFGR2_PREDIV2_DIV14 ((uint32_t)0x000000D0) /*!< PREDIV2 input clock divided by 14 */ - #define RCC_CFGR2_PREDIV2_DIV15 ((uint32_t)0x000000E0) /*!< PREDIV2 input clock divided by 15 */ - #define RCC_CFGR2_PREDIV2_DIV16 ((uint32_t)0x000000F0) /*!< PREDIV2 input clock divided by 16 */ - -/*!< PLL2MUL configuration */ - #define RCC_CFGR2_PLL2MUL ((uint32_t)0x00000F00) /*!< PLL2MUL[3:0] bits */ - #define RCC_CFGR2_PLL2MUL_0 ((uint32_t)0x00000100) /*!< Bit 0 */ - #define RCC_CFGR2_PLL2MUL_1 ((uint32_t)0x00000200) /*!< Bit 1 */ - #define RCC_CFGR2_PLL2MUL_2 ((uint32_t)0x00000400) /*!< Bit 2 */ - #define RCC_CFGR2_PLL2MUL_3 ((uint32_t)0x00000800) /*!< Bit 3 */ - - #define RCC_CFGR2_PLL2MUL8 ((uint32_t)0x00000600) /*!< PLL2 input clock * 8 */ - #define RCC_CFGR2_PLL2MUL9 ((uint32_t)0x00000700) /*!< PLL2 input clock * 9 */ - #define RCC_CFGR2_PLL2MUL10 ((uint32_t)0x00000800) /*!< PLL2 input clock * 10 */ - #define RCC_CFGR2_PLL2MUL11 ((uint32_t)0x00000900) /*!< PLL2 input clock * 11 */ - #define RCC_CFGR2_PLL2MUL12 ((uint32_t)0x00000A00) /*!< PLL2 input clock * 12 */ - #define RCC_CFGR2_PLL2MUL13 ((uint32_t)0x00000B00) /*!< PLL2 input clock * 13 */ - #define RCC_CFGR2_PLL2MUL14 ((uint32_t)0x00000C00) /*!< PLL2 input clock * 14 */ - #define RCC_CFGR2_PLL2MUL16 ((uint32_t)0x00000E00) /*!< PLL2 input clock * 16 */ - #define RCC_CFGR2_PLL2MUL20 ((uint32_t)0x00000F00) /*!< PLL2 input clock * 20 */ - -/*!< PLL3MUL configuration */ - #define RCC_CFGR2_PLL3MUL ((uint32_t)0x0000F000) /*!< PLL3MUL[3:0] bits */ - #define RCC_CFGR2_PLL3MUL_0 ((uint32_t)0x00001000) /*!< Bit 0 */ - #define RCC_CFGR2_PLL3MUL_1 ((uint32_t)0x00002000) /*!< Bit 1 */ - #define RCC_CFGR2_PLL3MUL_2 ((uint32_t)0x00004000) /*!< Bit 2 */ - #define RCC_CFGR2_PLL3MUL_3 ((uint32_t)0x00008000) /*!< Bit 3 */ - - #define RCC_CFGR2_PLL3MUL8 ((uint32_t)0x00006000) /*!< PLL3 input clock * 8 */ - #define RCC_CFGR2_PLL3MUL9 ((uint32_t)0x00007000) /*!< PLL3 input clock * 9 */ - #define RCC_CFGR2_PLL3MUL10 ((uint32_t)0x00008000) /*!< PLL3 input clock * 10 */ - #define RCC_CFGR2_PLL3MUL11 ((uint32_t)0x00009000) /*!< PLL3 input clock * 11 */ - #define RCC_CFGR2_PLL3MUL12 ((uint32_t)0x0000A000) /*!< PLL3 input clock * 12 */ - #define RCC_CFGR2_PLL3MUL13 ((uint32_t)0x0000B000) /*!< PLL3 input clock * 13 */ - #define RCC_CFGR2_PLL3MUL14 ((uint32_t)0x0000C000) /*!< PLL3 input clock * 14 */ - #define RCC_CFGR2_PLL3MUL16 ((uint32_t)0x0000E000) /*!< PLL3 input clock * 16 */ - #define RCC_CFGR2_PLL3MUL20 ((uint32_t)0x0000F000) /*!< PLL3 input clock * 20 */ - - #define RCC_CFGR2_PREDIV1SRC ((uint32_t)0x00010000) /*!< PREDIV1 entry clock source */ - #define RCC_CFGR2_PREDIV1SRC_PLL2 ((uint32_t)0x00010000) /*!< PLL2 selected as PREDIV1 entry clock source */ - #define RCC_CFGR2_PREDIV1SRC_HSE ((uint32_t)0x00000000) /*!< HSE selected as PREDIV1 entry clock source */ - #define RCC_CFGR2_I2S2SRC ((uint32_t)0x00020000) /*!< I2S2 entry clock source */ - #define RCC_CFGR2_I2S3SRC ((uint32_t)0x00040000) /*!< I2S3 clock source */ -#endif /* STM32F10X_CL */ - -/******************************************************************************/ -/* */ -/* General Purpose and Alternate Function I/O */ -/* */ -/******************************************************************************/ - -/******************* Bit definition for GPIO_CRL register *******************/ -#define GPIO_CRL_MODE ((uint32_t)0x33333333) /*!< Port x mode bits */ - -#define GPIO_CRL_MODE0 ((uint32_t)0x00000003) /*!< MODE0[1:0] bits (Port x mode bits, pin 0) */ -#define GPIO_CRL_MODE0_0 ((uint32_t)0x00000001) /*!< Bit 0 */ -#define GPIO_CRL_MODE0_1 ((uint32_t)0x00000002) /*!< Bit 1 */ - -#define GPIO_CRL_MODE1 ((uint32_t)0x00000030) /*!< MODE1[1:0] bits (Port x mode bits, pin 1) */ -#define GPIO_CRL_MODE1_0 ((uint32_t)0x00000010) /*!< Bit 0 */ -#define GPIO_CRL_MODE1_1 ((uint32_t)0x00000020) /*!< Bit 1 */ - -#define GPIO_CRL_MODE2 ((uint32_t)0x00000300) /*!< MODE2[1:0] bits (Port x mode bits, pin 2) */ -#define GPIO_CRL_MODE2_0 ((uint32_t)0x00000100) /*!< Bit 0 */ -#define GPIO_CRL_MODE2_1 ((uint32_t)0x00000200) /*!< Bit 1 */ - -#define GPIO_CRL_MODE3 ((uint32_t)0x00003000) /*!< MODE3[1:0] bits (Port x mode bits, pin 3) */ -#define GPIO_CRL_MODE3_0 ((uint32_t)0x00001000) /*!< Bit 0 */ -#define GPIO_CRL_MODE3_1 ((uint32_t)0x00002000) /*!< Bit 1 */ - -#define GPIO_CRL_MODE4 ((uint32_t)0x00030000) /*!< MODE4[1:0] bits (Port x mode bits, pin 4) */ -#define GPIO_CRL_MODE4_0 ((uint32_t)0x00010000) /*!< Bit 0 */ -#define GPIO_CRL_MODE4_1 ((uint32_t)0x00020000) /*!< Bit 1 */ - -#define GPIO_CRL_MODE5 ((uint32_t)0x00300000) /*!< MODE5[1:0] bits (Port x mode bits, pin 5) */ -#define GPIO_CRL_MODE5_0 ((uint32_t)0x00100000) /*!< Bit 0 */ -#define GPIO_CRL_MODE5_1 ((uint32_t)0x00200000) /*!< Bit 1 */ - -#define GPIO_CRL_MODE6 ((uint32_t)0x03000000) /*!< MODE6[1:0] bits (Port x mode bits, pin 6) */ -#define GPIO_CRL_MODE6_0 ((uint32_t)0x01000000) /*!< Bit 0 */ -#define GPIO_CRL_MODE6_1 ((uint32_t)0x02000000) /*!< Bit 1 */ - -#define GPIO_CRL_MODE7 ((uint32_t)0x30000000) /*!< MODE7[1:0] bits (Port x mode bits, pin 7) */ -#define GPIO_CRL_MODE7_0 ((uint32_t)0x10000000) /*!< Bit 0 */ -#define GPIO_CRL_MODE7_1 ((uint32_t)0x20000000) /*!< Bit 1 */ - -#define GPIO_CRL_CNF ((uint32_t)0xCCCCCCCC) /*!< Port x configuration bits */ - -#define GPIO_CRL_CNF0 ((uint32_t)0x0000000C) /*!< CNF0[1:0] bits (Port x configuration bits, pin 0) */ -#define GPIO_CRL_CNF0_0 ((uint32_t)0x00000004) /*!< Bit 0 */ -#define GPIO_CRL_CNF0_1 ((uint32_t)0x00000008) /*!< Bit 1 */ - -#define GPIO_CRL_CNF1 ((uint32_t)0x000000C0) /*!< CNF1[1:0] bits (Port x configuration bits, pin 1) */ -#define GPIO_CRL_CNF1_0 ((uint32_t)0x00000040) /*!< Bit 0 */ -#define GPIO_CRL_CNF1_1 ((uint32_t)0x00000080) /*!< Bit 1 */ - -#define GPIO_CRL_CNF2 ((uint32_t)0x00000C00) /*!< CNF2[1:0] bits (Port x configuration bits, pin 2) */ -#define GPIO_CRL_CNF2_0 ((uint32_t)0x00000400) /*!< Bit 0 */ -#define GPIO_CRL_CNF2_1 ((uint32_t)0x00000800) /*!< Bit 1 */ - -#define GPIO_CRL_CNF3 ((uint32_t)0x0000C000) /*!< CNF3[1:0] bits (Port x configuration bits, pin 3) */ -#define GPIO_CRL_CNF3_0 ((uint32_t)0x00004000) /*!< Bit 0 */ -#define GPIO_CRL_CNF3_1 ((uint32_t)0x00008000) /*!< Bit 1 */ - -#define GPIO_CRL_CNF4 ((uint32_t)0x000C0000) /*!< CNF4[1:0] bits (Port x configuration bits, pin 4) */ -#define GPIO_CRL_CNF4_0 ((uint32_t)0x00040000) /*!< Bit 0 */ -#define GPIO_CRL_CNF4_1 ((uint32_t)0x00080000) /*!< Bit 1 */ - -#define GPIO_CRL_CNF5 ((uint32_t)0x00C00000) /*!< CNF5[1:0] bits (Port x configuration bits, pin 5) */ -#define GPIO_CRL_CNF5_0 ((uint32_t)0x00400000) /*!< Bit 0 */ -#define GPIO_CRL_CNF5_1 ((uint32_t)0x00800000) /*!< Bit 1 */ - -#define GPIO_CRL_CNF6 ((uint32_t)0x0C000000) /*!< CNF6[1:0] bits (Port x configuration bits, pin 6) */ -#define GPIO_CRL_CNF6_0 ((uint32_t)0x04000000) /*!< Bit 0 */ -#define GPIO_CRL_CNF6_1 ((uint32_t)0x08000000) /*!< Bit 1 */ - -#define GPIO_CRL_CNF7 ((uint32_t)0xC0000000) /*!< CNF7[1:0] bits (Port x configuration bits, pin 7) */ -#define GPIO_CRL_CNF7_0 ((uint32_t)0x40000000) /*!< Bit 0 */ -#define GPIO_CRL_CNF7_1 ((uint32_t)0x80000000) /*!< Bit 1 */ - -/******************* Bit definition for GPIO_CRH register *******************/ -#define GPIO_CRH_MODE ((uint32_t)0x33333333) /*!< Port x mode bits */ - -#define GPIO_CRH_MODE8 ((uint32_t)0x00000003) /*!< MODE8[1:0] bits (Port x mode bits, pin 8) */ -#define GPIO_CRH_MODE8_0 ((uint32_t)0x00000001) /*!< Bit 0 */ -#define GPIO_CRH_MODE8_1 ((uint32_t)0x00000002) /*!< Bit 1 */ - -#define GPIO_CRH_MODE9 ((uint32_t)0x00000030) /*!< MODE9[1:0] bits (Port x mode bits, pin 9) */ -#define GPIO_CRH_MODE9_0 ((uint32_t)0x00000010) /*!< Bit 0 */ -#define GPIO_CRH_MODE9_1 ((uint32_t)0x00000020) /*!< Bit 1 */ - -#define GPIO_CRH_MODE10 ((uint32_t)0x00000300) /*!< MODE10[1:0] bits (Port x mode bits, pin 10) */ -#define GPIO_CRH_MODE10_0 ((uint32_t)0x00000100) /*!< Bit 0 */ -#define GPIO_CRH_MODE10_1 ((uint32_t)0x00000200) /*!< Bit 1 */ - -#define GPIO_CRH_MODE11 ((uint32_t)0x00003000) /*!< MODE11[1:0] bits (Port x mode bits, pin 11) */ -#define GPIO_CRH_MODE11_0 ((uint32_t)0x00001000) /*!< Bit 0 */ -#define GPIO_CRH_MODE11_1 ((uint32_t)0x00002000) /*!< Bit 1 */ - -#define GPIO_CRH_MODE12 ((uint32_t)0x00030000) /*!< MODE12[1:0] bits (Port x mode bits, pin 12) */ -#define GPIO_CRH_MODE12_0 ((uint32_t)0x00010000) /*!< Bit 0 */ -#define GPIO_CRH_MODE12_1 ((uint32_t)0x00020000) /*!< Bit 1 */ - -#define GPIO_CRH_MODE13 ((uint32_t)0x00300000) /*!< MODE13[1:0] bits (Port x mode bits, pin 13) */ -#define GPIO_CRH_MODE13_0 ((uint32_t)0x00100000) /*!< Bit 0 */ -#define GPIO_CRH_MODE13_1 ((uint32_t)0x00200000) /*!< Bit 1 */ - -#define GPIO_CRH_MODE14 ((uint32_t)0x03000000) /*!< MODE14[1:0] bits (Port x mode bits, pin 14) */ -#define GPIO_CRH_MODE14_0 ((uint32_t)0x01000000) /*!< Bit 0 */ -#define GPIO_CRH_MODE14_1 ((uint32_t)0x02000000) /*!< Bit 1 */ - -#define GPIO_CRH_MODE15 ((uint32_t)0x30000000) /*!< MODE15[1:0] bits (Port x mode bits, pin 15) */ -#define GPIO_CRH_MODE15_0 ((uint32_t)0x10000000) /*!< Bit 0 */ -#define GPIO_CRH_MODE15_1 ((uint32_t)0x20000000) /*!< Bit 1 */ - -#define GPIO_CRH_CNF ((uint32_t)0xCCCCCCCC) /*!< Port x configuration bits */ - -#define GPIO_CRH_CNF8 ((uint32_t)0x0000000C) /*!< CNF8[1:0] bits (Port x configuration bits, pin 8) */ -#define GPIO_CRH_CNF8_0 ((uint32_t)0x00000004) /*!< Bit 0 */ -#define GPIO_CRH_CNF8_1 ((uint32_t)0x00000008) /*!< Bit 1 */ - -#define GPIO_CRH_CNF9 ((uint32_t)0x000000C0) /*!< CNF9[1:0] bits (Port x configuration bits, pin 9) */ -#define GPIO_CRH_CNF9_0 ((uint32_t)0x00000040) /*!< Bit 0 */ -#define GPIO_CRH_CNF9_1 ((uint32_t)0x00000080) /*!< Bit 1 */ - -#define GPIO_CRH_CNF10 ((uint32_t)0x00000C00) /*!< CNF10[1:0] bits (Port x configuration bits, pin 10) */ -#define GPIO_CRH_CNF10_0 ((uint32_t)0x00000400) /*!< Bit 0 */ -#define GPIO_CRH_CNF10_1 ((uint32_t)0x00000800) /*!< Bit 1 */ - -#define GPIO_CRH_CNF11 ((uint32_t)0x0000C000) /*!< CNF11[1:0] bits (Port x configuration bits, pin 11) */ -#define GPIO_CRH_CNF11_0 ((uint32_t)0x00004000) /*!< Bit 0 */ -#define GPIO_CRH_CNF11_1 ((uint32_t)0x00008000) /*!< Bit 1 */ - -#define GPIO_CRH_CNF12 ((uint32_t)0x000C0000) /*!< CNF12[1:0] bits (Port x configuration bits, pin 12) */ -#define GPIO_CRH_CNF12_0 ((uint32_t)0x00040000) /*!< Bit 0 */ -#define GPIO_CRH_CNF12_1 ((uint32_t)0x00080000) /*!< Bit 1 */ - -#define GPIO_CRH_CNF13 ((uint32_t)0x00C00000) /*!< CNF13[1:0] bits (Port x configuration bits, pin 13) */ -#define GPIO_CRH_CNF13_0 ((uint32_t)0x00400000) /*!< Bit 0 */ -#define GPIO_CRH_CNF13_1 ((uint32_t)0x00800000) /*!< Bit 1 */ - -#define GPIO_CRH_CNF14 ((uint32_t)0x0C000000) /*!< CNF14[1:0] bits (Port x configuration bits, pin 14) */ -#define GPIO_CRH_CNF14_0 ((uint32_t)0x04000000) /*!< Bit 0 */ -#define GPIO_CRH_CNF14_1 ((uint32_t)0x08000000) /*!< Bit 1 */ - -#define GPIO_CRH_CNF15 ((uint32_t)0xC0000000) /*!< CNF15[1:0] bits (Port x configuration bits, pin 15) */ -#define GPIO_CRH_CNF15_0 ((uint32_t)0x40000000) /*!< Bit 0 */ -#define GPIO_CRH_CNF15_1 ((uint32_t)0x80000000) /*!< Bit 1 */ - -/*!<****************** Bit definition for GPIO_IDR register *******************/ -#define GPIO_IDR_IDR0 ((uint16_t)0x0001) /*!< Port input data, bit 0 */ -#define GPIO_IDR_IDR1 ((uint16_t)0x0002) /*!< Port input data, bit 1 */ -#define GPIO_IDR_IDR2 ((uint16_t)0x0004) /*!< Port input data, bit 2 */ -#define GPIO_IDR_IDR3 ((uint16_t)0x0008) /*!< Port input data, bit 3 */ -#define GPIO_IDR_IDR4 ((uint16_t)0x0010) /*!< Port input data, bit 4 */ -#define GPIO_IDR_IDR5 ((uint16_t)0x0020) /*!< Port input data, bit 5 */ -#define GPIO_IDR_IDR6 ((uint16_t)0x0040) /*!< Port input data, bit 6 */ -#define GPIO_IDR_IDR7 ((uint16_t)0x0080) /*!< Port input data, bit 7 */ -#define GPIO_IDR_IDR8 ((uint16_t)0x0100) /*!< Port input data, bit 8 */ -#define GPIO_IDR_IDR9 ((uint16_t)0x0200) /*!< Port input data, bit 9 */ -#define GPIO_IDR_IDR10 ((uint16_t)0x0400) /*!< Port input data, bit 10 */ -#define GPIO_IDR_IDR11 ((uint16_t)0x0800) /*!< Port input data, bit 11 */ -#define GPIO_IDR_IDR12 ((uint16_t)0x1000) /*!< Port input data, bit 12 */ -#define GPIO_IDR_IDR13 ((uint16_t)0x2000) /*!< Port input data, bit 13 */ -#define GPIO_IDR_IDR14 ((uint16_t)0x4000) /*!< Port input data, bit 14 */ -#define GPIO_IDR_IDR15 ((uint16_t)0x8000) /*!< Port input data, bit 15 */ - -/******************* Bit definition for GPIO_ODR register *******************/ -#define GPIO_ODR_ODR0 ((uint16_t)0x0001) /*!< Port output data, bit 0 */ -#define GPIO_ODR_ODR1 ((uint16_t)0x0002) /*!< Port output data, bit 1 */ -#define GPIO_ODR_ODR2 ((uint16_t)0x0004) /*!< Port output data, bit 2 */ -#define GPIO_ODR_ODR3 ((uint16_t)0x0008) /*!< Port output data, bit 3 */ -#define GPIO_ODR_ODR4 ((uint16_t)0x0010) /*!< Port output data, bit 4 */ -#define GPIO_ODR_ODR5 ((uint16_t)0x0020) /*!< Port output data, bit 5 */ -#define GPIO_ODR_ODR6 ((uint16_t)0x0040) /*!< Port output data, bit 6 */ -#define GPIO_ODR_ODR7 ((uint16_t)0x0080) /*!< Port output data, bit 7 */ -#define GPIO_ODR_ODR8 ((uint16_t)0x0100) /*!< Port output data, bit 8 */ -#define GPIO_ODR_ODR9 ((uint16_t)0x0200) /*!< Port output data, bit 9 */ -#define GPIO_ODR_ODR10 ((uint16_t)0x0400) /*!< Port output data, bit 10 */ -#define GPIO_ODR_ODR11 ((uint16_t)0x0800) /*!< Port output data, bit 11 */ -#define GPIO_ODR_ODR12 ((uint16_t)0x1000) /*!< Port output data, bit 12 */ -#define GPIO_ODR_ODR13 ((uint16_t)0x2000) /*!< Port output data, bit 13 */ -#define GPIO_ODR_ODR14 ((uint16_t)0x4000) /*!< Port output data, bit 14 */ -#define GPIO_ODR_ODR15 ((uint16_t)0x8000) /*!< Port output data, bit 15 */ - -/****************** Bit definition for GPIO_BSRR register *******************/ -#define GPIO_BSRR_BS0 ((uint32_t)0x00000001) /*!< Port x Set bit 0 */ -#define GPIO_BSRR_BS1 ((uint32_t)0x00000002) /*!< Port x Set bit 1 */ -#define GPIO_BSRR_BS2 ((uint32_t)0x00000004) /*!< Port x Set bit 2 */ -#define GPIO_BSRR_BS3 ((uint32_t)0x00000008) /*!< Port x Set bit 3 */ -#define GPIO_BSRR_BS4 ((uint32_t)0x00000010) /*!< Port x Set bit 4 */ -#define GPIO_BSRR_BS5 ((uint32_t)0x00000020) /*!< Port x Set bit 5 */ -#define GPIO_BSRR_BS6 ((uint32_t)0x00000040) /*!< Port x Set bit 6 */ -#define GPIO_BSRR_BS7 ((uint32_t)0x00000080) /*!< Port x Set bit 7 */ -#define GPIO_BSRR_BS8 ((uint32_t)0x00000100) /*!< Port x Set bit 8 */ -#define GPIO_BSRR_BS9 ((uint32_t)0x00000200) /*!< Port x Set bit 9 */ -#define GPIO_BSRR_BS10 ((uint32_t)0x00000400) /*!< Port x Set bit 10 */ -#define GPIO_BSRR_BS11 ((uint32_t)0x00000800) /*!< Port x Set bit 11 */ -#define GPIO_BSRR_BS12 ((uint32_t)0x00001000) /*!< Port x Set bit 12 */ -#define GPIO_BSRR_BS13 ((uint32_t)0x00002000) /*!< Port x Set bit 13 */ -#define GPIO_BSRR_BS14 ((uint32_t)0x00004000) /*!< Port x Set bit 14 */ -#define GPIO_BSRR_BS15 ((uint32_t)0x00008000) /*!< Port x Set bit 15 */ - -#define GPIO_BSRR_BR0 ((uint32_t)0x00010000) /*!< Port x Reset bit 0 */ -#define GPIO_BSRR_BR1 ((uint32_t)0x00020000) /*!< Port x Reset bit 1 */ -#define GPIO_BSRR_BR2 ((uint32_t)0x00040000) /*!< Port x Reset bit 2 */ -#define GPIO_BSRR_BR3 ((uint32_t)0x00080000) /*!< Port x Reset bit 3 */ -#define GPIO_BSRR_BR4 ((uint32_t)0x00100000) /*!< Port x Reset bit 4 */ -#define GPIO_BSRR_BR5 ((uint32_t)0x00200000) /*!< Port x Reset bit 5 */ -#define GPIO_BSRR_BR6 ((uint32_t)0x00400000) /*!< Port x Reset bit 6 */ -#define GPIO_BSRR_BR7 ((uint32_t)0x00800000) /*!< Port x Reset bit 7 */ -#define GPIO_BSRR_BR8 ((uint32_t)0x01000000) /*!< Port x Reset bit 8 */ -#define GPIO_BSRR_BR9 ((uint32_t)0x02000000) /*!< Port x Reset bit 9 */ -#define GPIO_BSRR_BR10 ((uint32_t)0x04000000) /*!< Port x Reset bit 10 */ -#define GPIO_BSRR_BR11 ((uint32_t)0x08000000) /*!< Port x Reset bit 11 */ -#define GPIO_BSRR_BR12 ((uint32_t)0x10000000) /*!< Port x Reset bit 12 */ -#define GPIO_BSRR_BR13 ((uint32_t)0x20000000) /*!< Port x Reset bit 13 */ -#define GPIO_BSRR_BR14 ((uint32_t)0x40000000) /*!< Port x Reset bit 14 */ -#define GPIO_BSRR_BR15 ((uint32_t)0x80000000) /*!< Port x Reset bit 15 */ - -/******************* Bit definition for GPIO_BRR register *******************/ -#define GPIO_BRR_BR0 ((uint16_t)0x0001) /*!< Port x Reset bit 0 */ -#define GPIO_BRR_BR1 ((uint16_t)0x0002) /*!< Port x Reset bit 1 */ -#define GPIO_BRR_BR2 ((uint16_t)0x0004) /*!< Port x Reset bit 2 */ -#define GPIO_BRR_BR3 ((uint16_t)0x0008) /*!< Port x Reset bit 3 */ -#define GPIO_BRR_BR4 ((uint16_t)0x0010) /*!< Port x Reset bit 4 */ -#define GPIO_BRR_BR5 ((uint16_t)0x0020) /*!< Port x Reset bit 5 */ -#define GPIO_BRR_BR6 ((uint16_t)0x0040) /*!< Port x Reset bit 6 */ -#define GPIO_BRR_BR7 ((uint16_t)0x0080) /*!< Port x Reset bit 7 */ -#define GPIO_BRR_BR8 ((uint16_t)0x0100) /*!< Port x Reset bit 8 */ -#define GPIO_BRR_BR9 ((uint16_t)0x0200) /*!< Port x Reset bit 9 */ -#define GPIO_BRR_BR10 ((uint16_t)0x0400) /*!< Port x Reset bit 10 */ -#define GPIO_BRR_BR11 ((uint16_t)0x0800) /*!< Port x Reset bit 11 */ -#define GPIO_BRR_BR12 ((uint16_t)0x1000) /*!< Port x Reset bit 12 */ -#define GPIO_BRR_BR13 ((uint16_t)0x2000) /*!< Port x Reset bit 13 */ -#define GPIO_BRR_BR14 ((uint16_t)0x4000) /*!< Port x Reset bit 14 */ -#define GPIO_BRR_BR15 ((uint16_t)0x8000) /*!< Port x Reset bit 15 */ - -/****************** Bit definition for GPIO_LCKR register *******************/ -#define GPIO_LCKR_LCK0 ((uint32_t)0x00000001) /*!< Port x Lock bit 0 */ -#define GPIO_LCKR_LCK1 ((uint32_t)0x00000002) /*!< Port x Lock bit 1 */ -#define GPIO_LCKR_LCK2 ((uint32_t)0x00000004) /*!< Port x Lock bit 2 */ -#define GPIO_LCKR_LCK3 ((uint32_t)0x00000008) /*!< Port x Lock bit 3 */ -#define GPIO_LCKR_LCK4 ((uint32_t)0x00000010) /*!< Port x Lock bit 4 */ -#define GPIO_LCKR_LCK5 ((uint32_t)0x00000020) /*!< Port x Lock bit 5 */ -#define GPIO_LCKR_LCK6 ((uint32_t)0x00000040) /*!< Port x Lock bit 6 */ -#define GPIO_LCKR_LCK7 ((uint32_t)0x00000080) /*!< Port x Lock bit 7 */ -#define GPIO_LCKR_LCK8 ((uint32_t)0x00000100) /*!< Port x Lock bit 8 */ -#define GPIO_LCKR_LCK9 ((uint32_t)0x00000200) /*!< Port x Lock bit 9 */ -#define GPIO_LCKR_LCK10 ((uint32_t)0x00000400) /*!< Port x Lock bit 10 */ -#define GPIO_LCKR_LCK11 ((uint32_t)0x00000800) /*!< Port x Lock bit 11 */ -#define GPIO_LCKR_LCK12 ((uint32_t)0x00001000) /*!< Port x Lock bit 12 */ -#define GPIO_LCKR_LCK13 ((uint32_t)0x00002000) /*!< Port x Lock bit 13 */ -#define GPIO_LCKR_LCK14 ((uint32_t)0x00004000) /*!< Port x Lock bit 14 */ -#define GPIO_LCKR_LCK15 ((uint32_t)0x00008000) /*!< Port x Lock bit 15 */ -#define GPIO_LCKR_LCKK ((uint32_t)0x00010000) /*!< Lock key */ - -/*----------------------------------------------------------------------------*/ - -/****************** Bit definition for AFIO_EVCR register *******************/ -#define AFIO_EVCR_PIN ((uint8_t)0x0F) /*!< PIN[3:0] bits (Pin selection) */ -#define AFIO_EVCR_PIN_0 ((uint8_t)0x01) /*!< Bit 0 */ -#define AFIO_EVCR_PIN_1 ((uint8_t)0x02) /*!< Bit 1 */ -#define AFIO_EVCR_PIN_2 ((uint8_t)0x04) /*!< Bit 2 */ -#define AFIO_EVCR_PIN_3 ((uint8_t)0x08) /*!< Bit 3 */ - -/*!< PIN configuration */ -#define AFIO_EVCR_PIN_PX0 ((uint8_t)0x00) /*!< Pin 0 selected */ -#define AFIO_EVCR_PIN_PX1 ((uint8_t)0x01) /*!< Pin 1 selected */ -#define AFIO_EVCR_PIN_PX2 ((uint8_t)0x02) /*!< Pin 2 selected */ -#define AFIO_EVCR_PIN_PX3 ((uint8_t)0x03) /*!< Pin 3 selected */ -#define AFIO_EVCR_PIN_PX4 ((uint8_t)0x04) /*!< Pin 4 selected */ -#define AFIO_EVCR_PIN_PX5 ((uint8_t)0x05) /*!< Pin 5 selected */ -#define AFIO_EVCR_PIN_PX6 ((uint8_t)0x06) /*!< Pin 6 selected */ -#define AFIO_EVCR_PIN_PX7 ((uint8_t)0x07) /*!< Pin 7 selected */ -#define AFIO_EVCR_PIN_PX8 ((uint8_t)0x08) /*!< Pin 8 selected */ -#define AFIO_EVCR_PIN_PX9 ((uint8_t)0x09) /*!< Pin 9 selected */ -#define AFIO_EVCR_PIN_PX10 ((uint8_t)0x0A) /*!< Pin 10 selected */ -#define AFIO_EVCR_PIN_PX11 ((uint8_t)0x0B) /*!< Pin 11 selected */ -#define AFIO_EVCR_PIN_PX12 ((uint8_t)0x0C) /*!< Pin 12 selected */ -#define AFIO_EVCR_PIN_PX13 ((uint8_t)0x0D) /*!< Pin 13 selected */ -#define AFIO_EVCR_PIN_PX14 ((uint8_t)0x0E) /*!< Pin 14 selected */ -#define AFIO_EVCR_PIN_PX15 ((uint8_t)0x0F) /*!< Pin 15 selected */ - -#define AFIO_EVCR_PORT ((uint8_t)0x70) /*!< PORT[2:0] bits (Port selection) */ -#define AFIO_EVCR_PORT_0 ((uint8_t)0x10) /*!< Bit 0 */ -#define AFIO_EVCR_PORT_1 ((uint8_t)0x20) /*!< Bit 1 */ -#define AFIO_EVCR_PORT_2 ((uint8_t)0x40) /*!< Bit 2 */ - -/*!< PORT configuration */ -#define AFIO_EVCR_PORT_PA ((uint8_t)0x00) /*!< Port A selected */ -#define AFIO_EVCR_PORT_PB ((uint8_t)0x10) /*!< Port B selected */ -#define AFIO_EVCR_PORT_PC ((uint8_t)0x20) /*!< Port C selected */ -#define AFIO_EVCR_PORT_PD ((uint8_t)0x30) /*!< Port D selected */ -#define AFIO_EVCR_PORT_PE ((uint8_t)0x40) /*!< Port E selected */ - -#define AFIO_EVCR_EVOE ((uint8_t)0x80) /*!< Event Output Enable */ - -/****************** Bit definition for AFIO_MAPR register *******************/ -#define AFIO_MAPR_SPI1_REMAP ((uint32_t)0x00000001) /*!< SPI1 remapping */ -#define AFIO_MAPR_I2C1_REMAP ((uint32_t)0x00000002) /*!< I2C1 remapping */ -#define AFIO_MAPR_USART1_REMAP ((uint32_t)0x00000004) /*!< USART1 remapping */ -#define AFIO_MAPR_USART2_REMAP ((uint32_t)0x00000008) /*!< USART2 remapping */ - -#define AFIO_MAPR_USART3_REMAP ((uint32_t)0x00000030) /*!< USART3_REMAP[1:0] bits (USART3 remapping) */ -#define AFIO_MAPR_USART3_REMAP_0 ((uint32_t)0x00000010) /*!< Bit 0 */ -#define AFIO_MAPR_USART3_REMAP_1 ((uint32_t)0x00000020) /*!< Bit 1 */ - -/* USART3_REMAP configuration */ -#define AFIO_MAPR_USART3_REMAP_NOREMAP ((uint32_t)0x00000000) /*!< No remap (TX/PB10, RX/PB11, CK/PB12, CTS/PB13, RTS/PB14) */ -#define AFIO_MAPR_USART3_REMAP_PARTIALREMAP ((uint32_t)0x00000010) /*!< Partial remap (TX/PC10, RX/PC11, CK/PC12, CTS/PB13, RTS/PB14) */ -#define AFIO_MAPR_USART3_REMAP_FULLREMAP ((uint32_t)0x00000030) /*!< Full remap (TX/PD8, RX/PD9, CK/PD10, CTS/PD11, RTS/PD12) */ - -#define AFIO_MAPR_TIM1_REMAP ((uint32_t)0x000000C0) /*!< TIM1_REMAP[1:0] bits (TIM1 remapping) */ -#define AFIO_MAPR_TIM1_REMAP_0 ((uint32_t)0x00000040) /*!< Bit 0 */ -#define AFIO_MAPR_TIM1_REMAP_1 ((uint32_t)0x00000080) /*!< Bit 1 */ - -/*!< TIM1_REMAP configuration */ -#define AFIO_MAPR_TIM1_REMAP_NOREMAP ((uint32_t)0x00000000) /*!< No remap (ETR/PA12, CH1/PA8, CH2/PA9, CH3/PA10, CH4/PA11, BKIN/PB12, CH1N/PB13, CH2N/PB14, CH3N/PB15) */ -#define AFIO_MAPR_TIM1_REMAP_PARTIALREMAP ((uint32_t)0x00000040) /*!< Partial remap (ETR/PA12, CH1/PA8, CH2/PA9, CH3/PA10, CH4/PA11, BKIN/PA6, CH1N/PA7, CH2N/PB0, CH3N/PB1) */ -#define AFIO_MAPR_TIM1_REMAP_FULLREMAP ((uint32_t)0x000000C0) /*!< Full remap (ETR/PE7, CH1/PE9, CH2/PE11, CH3/PE13, CH4/PE14, BKIN/PE15, CH1N/PE8, CH2N/PE10, CH3N/PE12) */ - -#define AFIO_MAPR_TIM2_REMAP ((uint32_t)0x00000300) /*!< TIM2_REMAP[1:0] bits (TIM2 remapping) */ -#define AFIO_MAPR_TIM2_REMAP_0 ((uint32_t)0x00000100) /*!< Bit 0 */ -#define AFIO_MAPR_TIM2_REMAP_1 ((uint32_t)0x00000200) /*!< Bit 1 */ - -/*!< TIM2_REMAP configuration */ -#define AFIO_MAPR_TIM2_REMAP_NOREMAP ((uint32_t)0x00000000) /*!< No remap (CH1/ETR/PA0, CH2/PA1, CH3/PA2, CH4/PA3) */ -#define AFIO_MAPR_TIM2_REMAP_PARTIALREMAP1 ((uint32_t)0x00000100) /*!< Partial remap (CH1/ETR/PA15, CH2/PB3, CH3/PA2, CH4/PA3) */ -#define AFIO_MAPR_TIM2_REMAP_PARTIALREMAP2 ((uint32_t)0x00000200) /*!< Partial remap (CH1/ETR/PA0, CH2/PA1, CH3/PB10, CH4/PB11) */ -#define AFIO_MAPR_TIM2_REMAP_FULLREMAP ((uint32_t)0x00000300) /*!< Full remap (CH1/ETR/PA15, CH2/PB3, CH3/PB10, CH4/PB11) */ - -#define AFIO_MAPR_TIM3_REMAP ((uint32_t)0x00000C00) /*!< TIM3_REMAP[1:0] bits (TIM3 remapping) */ -#define AFIO_MAPR_TIM3_REMAP_0 ((uint32_t)0x00000400) /*!< Bit 0 */ -#define AFIO_MAPR_TIM3_REMAP_1 ((uint32_t)0x00000800) /*!< Bit 1 */ - -/*!< TIM3_REMAP configuration */ -#define AFIO_MAPR_TIM3_REMAP_NOREMAP ((uint32_t)0x00000000) /*!< No remap (CH1/PA6, CH2/PA7, CH3/PB0, CH4/PB1) */ -#define AFIO_MAPR_TIM3_REMAP_PARTIALREMAP ((uint32_t)0x00000800) /*!< Partial remap (CH1/PB4, CH2/PB5, CH3/PB0, CH4/PB1) */ -#define AFIO_MAPR_TIM3_REMAP_FULLREMAP ((uint32_t)0x00000C00) /*!< Full remap (CH1/PC6, CH2/PC7, CH3/PC8, CH4/PC9) */ - -#define AFIO_MAPR_TIM4_REMAP ((uint32_t)0x00001000) /*!< Port D0/Port D1 mapping on OSC_IN/OSC_OUT */ - -#define AFIO_MAPR_CAN_REMAP ((uint32_t)0x00006000) /*!< CAN_REMAP[1:0] bits (CAN Alternate function remapping) */ -#define AFIO_MAPR_CAN_REMAP_0 ((uint32_t)0x00002000) /*!< Bit 0 */ -#define AFIO_MAPR_CAN_REMAP_1 ((uint32_t)0x00004000) /*!< Bit 1 */ - -/*!< CAN_REMAP configuration */ -#define AFIO_MAPR_CAN_REMAP_REMAP1 ((uint32_t)0x00000000) /*!< CANRX mapped to PA11, CANTX mapped to PA12 */ -#define AFIO_MAPR_CAN_REMAP_REMAP2 ((uint32_t)0x00004000) /*!< CANRX mapped to PB8, CANTX mapped to PB9 */ -#define AFIO_MAPR_CAN_REMAP_REMAP3 ((uint32_t)0x00006000) /*!< CANRX mapped to PD0, CANTX mapped to PD1 */ - -#define AFIO_MAPR_PD01_REMAP ((uint32_t)0x00008000) /*!< Port D0/Port D1 mapping on OSC_IN/OSC_OUT */ -#define AFIO_MAPR_TIM5CH4_IREMAP ((uint32_t)0x00010000) /*!< TIM5 Channel4 Internal Remap */ -#define AFIO_MAPR_ADC1_ETRGINJ_REMAP ((uint32_t)0x00020000) /*!< ADC 1 External Trigger Injected Conversion remapping */ -#define AFIO_MAPR_ADC1_ETRGREG_REMAP ((uint32_t)0x00040000) /*!< ADC 1 External Trigger Regular Conversion remapping */ -#define AFIO_MAPR_ADC2_ETRGINJ_REMAP ((uint32_t)0x00080000) /*!< ADC 2 External Trigger Injected Conversion remapping */ -#define AFIO_MAPR_ADC2_ETRGREG_REMAP ((uint32_t)0x00100000) /*!< ADC 2 External Trigger Regular Conversion remapping */ - -#define AFIO_MAPR_SWJ_CFG ((uint32_t)0x07000000) /*!< SWJ_CFG[2:0] bits (Serial Wire JTAG configuration) */ -#define AFIO_MAPR_SWJ_CFG_0 ((uint32_t)0x01000000) /*!< Bit 0 */ -#define AFIO_MAPR_SWJ_CFG_1 ((uint32_t)0x02000000) /*!< Bit 1 */ -#define AFIO_MAPR_SWJ_CFG_2 ((uint32_t)0x04000000) /*!< Bit 2 */ - -/*!< SWJ_CFG configuration */ -#define AFIO_MAPR_SWJ_CFG_RESET ((uint32_t)0x00000000) /*!< Full SWJ (JTAG-DP + SW-DP) : Reset State */ -#define AFIO_MAPR_SWJ_CFG_NOJNTRST ((uint32_t)0x01000000) /*!< Full SWJ (JTAG-DP + SW-DP) but without JNTRST */ -#define AFIO_MAPR_SWJ_CFG_JTAGDISABLE ((uint32_t)0x02000000) /*!< JTAG-DP Disabled and SW-DP Enabled */ -#define AFIO_MAPR_SWJ_CFG_DISABLE ((uint32_t)0x04000000) /*!< JTAG-DP Disabled and SW-DP Disabled */ - -/***************** Bit definition for AFIO_EXTICR1 register *****************/ -#define AFIO_EXTICR1_EXTI0 ((uint16_t)0x000F) /*!< EXTI 0 configuration */ -#define AFIO_EXTICR1_EXTI1 ((uint16_t)0x00F0) /*!< EXTI 1 configuration */ -#define AFIO_EXTICR1_EXTI2 ((uint16_t)0x0F00) /*!< EXTI 2 configuration */ -#define AFIO_EXTICR1_EXTI3 ((uint16_t)0xF000) /*!< EXTI 3 configuration */ - -/*!< EXTI0 configuration */ -#define AFIO_EXTICR1_EXTI0_PA ((uint16_t)0x0000) /*!< PA[0] pin */ -#define AFIO_EXTICR1_EXTI0_PB ((uint16_t)0x0001) /*!< PB[0] pin */ -#define AFIO_EXTICR1_EXTI0_PC ((uint16_t)0x0002) /*!< PC[0] pin */ -#define AFIO_EXTICR1_EXTI0_PD ((uint16_t)0x0003) /*!< PD[0] pin */ -#define AFIO_EXTICR1_EXTI0_PE ((uint16_t)0x0004) /*!< PE[0] pin */ -#define AFIO_EXTICR1_EXTI0_PF ((uint16_t)0x0005) /*!< PF[0] pin */ -#define AFIO_EXTICR1_EXTI0_PG ((uint16_t)0x0006) /*!< PG[0] pin */ - -/*!< EXTI1 configuration */ -#define AFIO_EXTICR1_EXTI1_PA ((uint16_t)0x0000) /*!< PA[1] pin */ -#define AFIO_EXTICR1_EXTI1_PB ((uint16_t)0x0010) /*!< PB[1] pin */ -#define AFIO_EXTICR1_EXTI1_PC ((uint16_t)0x0020) /*!< PC[1] pin */ -#define AFIO_EXTICR1_EXTI1_PD ((uint16_t)0x0030) /*!< PD[1] pin */ -#define AFIO_EXTICR1_EXTI1_PE ((uint16_t)0x0040) /*!< PE[1] pin */ -#define AFIO_EXTICR1_EXTI1_PF ((uint16_t)0x0050) /*!< PF[1] pin */ -#define AFIO_EXTICR1_EXTI1_PG ((uint16_t)0x0060) /*!< PG[1] pin */ - -/*!< EXTI2 configuration */ -#define AFIO_EXTICR1_EXTI2_PA ((uint16_t)0x0000) /*!< PA[2] pin */ -#define AFIO_EXTICR1_EXTI2_PB ((uint16_t)0x0100) /*!< PB[2] pin */ -#define AFIO_EXTICR1_EXTI2_PC ((uint16_t)0x0200) /*!< PC[2] pin */ -#define AFIO_EXTICR1_EXTI2_PD ((uint16_t)0x0300) /*!< PD[2] pin */ -#define AFIO_EXTICR1_EXTI2_PE ((uint16_t)0x0400) /*!< PE[2] pin */ -#define AFIO_EXTICR1_EXTI2_PF ((uint16_t)0x0500) /*!< PF[2] pin */ -#define AFIO_EXTICR1_EXTI2_PG ((uint16_t)0x0600) /*!< PG[2] pin */ - -/*!< EXTI3 configuration */ -#define AFIO_EXTICR1_EXTI3_PA ((uint16_t)0x0000) /*!< PA[3] pin */ -#define AFIO_EXTICR1_EXTI3_PB ((uint16_t)0x1000) /*!< PB[3] pin */ -#define AFIO_EXTICR1_EXTI3_PC ((uint16_t)0x2000) /*!< PC[3] pin */ -#define AFIO_EXTICR1_EXTI3_PD ((uint16_t)0x3000) /*!< PD[3] pin */ -#define AFIO_EXTICR1_EXTI3_PE ((uint16_t)0x4000) /*!< PE[3] pin */ -#define AFIO_EXTICR1_EXTI3_PF ((uint16_t)0x5000) /*!< PF[3] pin */ -#define AFIO_EXTICR1_EXTI3_PG ((uint16_t)0x6000) /*!< PG[3] pin */ - -/***************** Bit definition for AFIO_EXTICR2 register *****************/ -#define AFIO_EXTICR2_EXTI4 ((uint16_t)0x000F) /*!< EXTI 4 configuration */ -#define AFIO_EXTICR2_EXTI5 ((uint16_t)0x00F0) /*!< EXTI 5 configuration */ -#define AFIO_EXTICR2_EXTI6 ((uint16_t)0x0F00) /*!< EXTI 6 configuration */ -#define AFIO_EXTICR2_EXTI7 ((uint16_t)0xF000) /*!< EXTI 7 configuration */ - -/*!< EXTI4 configuration */ -#define AFIO_EXTICR2_EXTI4_PA ((uint16_t)0x0000) /*!< PA[4] pin */ -#define AFIO_EXTICR2_EXTI4_PB ((uint16_t)0x0001) /*!< PB[4] pin */ -#define AFIO_EXTICR2_EXTI4_PC ((uint16_t)0x0002) /*!< PC[4] pin */ -#define AFIO_EXTICR2_EXTI4_PD ((uint16_t)0x0003) /*!< PD[4] pin */ -#define AFIO_EXTICR2_EXTI4_PE ((uint16_t)0x0004) /*!< PE[4] pin */ -#define AFIO_EXTICR2_EXTI4_PF ((uint16_t)0x0005) /*!< PF[4] pin */ -#define AFIO_EXTICR2_EXTI4_PG ((uint16_t)0x0006) /*!< PG[4] pin */ - -/* EXTI5 configuration */ -#define AFIO_EXTICR2_EXTI5_PA ((uint16_t)0x0000) /*!< PA[5] pin */ -#define AFIO_EXTICR2_EXTI5_PB ((uint16_t)0x0010) /*!< PB[5] pin */ -#define AFIO_EXTICR2_EXTI5_PC ((uint16_t)0x0020) /*!< PC[5] pin */ -#define AFIO_EXTICR2_EXTI5_PD ((uint16_t)0x0030) /*!< PD[5] pin */ -#define AFIO_EXTICR2_EXTI5_PE ((uint16_t)0x0040) /*!< PE[5] pin */ -#define AFIO_EXTICR2_EXTI5_PF ((uint16_t)0x0050) /*!< PF[5] pin */ -#define AFIO_EXTICR2_EXTI5_PG ((uint16_t)0x0060) /*!< PG[5] pin */ - -/*!< EXTI6 configuration */ -#define AFIO_EXTICR2_EXTI6_PA ((uint16_t)0x0000) /*!< PA[6] pin */ -#define AFIO_EXTICR2_EXTI6_PB ((uint16_t)0x0100) /*!< PB[6] pin */ -#define AFIO_EXTICR2_EXTI6_PC ((uint16_t)0x0200) /*!< PC[6] pin */ -#define AFIO_EXTICR2_EXTI6_PD ((uint16_t)0x0300) /*!< PD[6] pin */ -#define AFIO_EXTICR2_EXTI6_PE ((uint16_t)0x0400) /*!< PE[6] pin */ -#define AFIO_EXTICR2_EXTI6_PF ((uint16_t)0x0500) /*!< PF[6] pin */ -#define AFIO_EXTICR2_EXTI6_PG ((uint16_t)0x0600) /*!< PG[6] pin */ - -/*!< EXTI7 configuration */ -#define AFIO_EXTICR2_EXTI7_PA ((uint16_t)0x0000) /*!< PA[7] pin */ -#define AFIO_EXTICR2_EXTI7_PB ((uint16_t)0x1000) /*!< PB[7] pin */ -#define AFIO_EXTICR2_EXTI7_PC ((uint16_t)0x2000) /*!< PC[7] pin */ -#define AFIO_EXTICR2_EXTI7_PD ((uint16_t)0x3000) /*!< PD[7] pin */ -#define AFIO_EXTICR2_EXTI7_PE ((uint16_t)0x4000) /*!< PE[7] pin */ -#define AFIO_EXTICR2_EXTI7_PF ((uint16_t)0x5000) /*!< PF[7] pin */ -#define AFIO_EXTICR2_EXTI7_PG ((uint16_t)0x6000) /*!< PG[7] pin */ - -/***************** Bit definition for AFIO_EXTICR3 register *****************/ -#define AFIO_EXTICR3_EXTI8 ((uint16_t)0x000F) /*!< EXTI 8 configuration */ -#define AFIO_EXTICR3_EXTI9 ((uint16_t)0x00F0) /*!< EXTI 9 configuration */ -#define AFIO_EXTICR3_EXTI10 ((uint16_t)0x0F00) /*!< EXTI 10 configuration */ -#define AFIO_EXTICR3_EXTI11 ((uint16_t)0xF000) /*!< EXTI 11 configuration */ - -/*!< EXTI8 configuration */ -#define AFIO_EXTICR3_EXTI8_PA ((uint16_t)0x0000) /*!< PA[8] pin */ -#define AFIO_EXTICR3_EXTI8_PB ((uint16_t)0x0001) /*!< PB[8] pin */ -#define AFIO_EXTICR3_EXTI8_PC ((uint16_t)0x0002) /*!< PC[8] pin */ -#define AFIO_EXTICR3_EXTI8_PD ((uint16_t)0x0003) /*!< PD[8] pin */ -#define AFIO_EXTICR3_EXTI8_PE ((uint16_t)0x0004) /*!< PE[8] pin */ -#define AFIO_EXTICR3_EXTI8_PF ((uint16_t)0x0005) /*!< PF[8] pin */ -#define AFIO_EXTICR3_EXTI8_PG ((uint16_t)0x0006) /*!< PG[8] pin */ - -/*!< EXTI9 configuration */ -#define AFIO_EXTICR3_EXTI9_PA ((uint16_t)0x0000) /*!< PA[9] pin */ -#define AFIO_EXTICR3_EXTI9_PB ((uint16_t)0x0010) /*!< PB[9] pin */ -#define AFIO_EXTICR3_EXTI9_PC ((uint16_t)0x0020) /*!< PC[9] pin */ -#define AFIO_EXTICR3_EXTI9_PD ((uint16_t)0x0030) /*!< PD[9] pin */ -#define AFIO_EXTICR3_EXTI9_PE ((uint16_t)0x0040) /*!< PE[9] pin */ -#define AFIO_EXTICR3_EXTI9_PF ((uint16_t)0x0050) /*!< PF[9] pin */ -#define AFIO_EXTICR3_EXTI9_PG ((uint16_t)0x0060) /*!< PG[9] pin */ - -/*!< EXTI10 configuration */ -#define AFIO_EXTICR3_EXTI10_PA ((uint16_t)0x0000) /*!< PA[10] pin */ -#define AFIO_EXTICR3_EXTI10_PB ((uint16_t)0x0100) /*!< PB[10] pin */ -#define AFIO_EXTICR3_EXTI10_PC ((uint16_t)0x0200) /*!< PC[10] pin */ -#define AFIO_EXTICR3_EXTI10_PD ((uint16_t)0x0300) /*!< PD[10] pin */ -#define AFIO_EXTICR3_EXTI10_PE ((uint16_t)0x0400) /*!< PE[10] pin */ -#define AFIO_EXTICR3_EXTI10_PF ((uint16_t)0x0500) /*!< PF[10] pin */ -#define AFIO_EXTICR3_EXTI10_PG ((uint16_t)0x0600) /*!< PG[10] pin */ - -/*!< EXTI11 configuration */ -#define AFIO_EXTICR3_EXTI11_PA ((uint16_t)0x0000) /*!< PA[11] pin */ -#define AFIO_EXTICR3_EXTI11_PB ((uint16_t)0x1000) /*!< PB[11] pin */ -#define AFIO_EXTICR3_EXTI11_PC ((uint16_t)0x2000) /*!< PC[11] pin */ -#define AFIO_EXTICR3_EXTI11_PD ((uint16_t)0x3000) /*!< PD[11] pin */ -#define AFIO_EXTICR3_EXTI11_PE ((uint16_t)0x4000) /*!< PE[11] pin */ -#define AFIO_EXTICR3_EXTI11_PF ((uint16_t)0x5000) /*!< PF[11] pin */ -#define AFIO_EXTICR3_EXTI11_PG ((uint16_t)0x6000) /*!< PG[11] pin */ - -/***************** Bit definition for AFIO_EXTICR4 register *****************/ -#define AFIO_EXTICR4_EXTI12 ((uint16_t)0x000F) /*!< EXTI 12 configuration */ -#define AFIO_EXTICR4_EXTI13 ((uint16_t)0x00F0) /*!< EXTI 13 configuration */ -#define AFIO_EXTICR4_EXTI14 ((uint16_t)0x0F00) /*!< EXTI 14 configuration */ -#define AFIO_EXTICR4_EXTI15 ((uint16_t)0xF000) /*!< EXTI 15 configuration */ - -/* EXTI12 configuration */ -#define AFIO_EXTICR4_EXTI12_PA ((uint16_t)0x0000) /*!< PA[12] pin */ -#define AFIO_EXTICR4_EXTI12_PB ((uint16_t)0x0001) /*!< PB[12] pin */ -#define AFIO_EXTICR4_EXTI12_PC ((uint16_t)0x0002) /*!< PC[12] pin */ -#define AFIO_EXTICR4_EXTI12_PD ((uint16_t)0x0003) /*!< PD[12] pin */ -#define AFIO_EXTICR4_EXTI12_PE ((uint16_t)0x0004) /*!< PE[12] pin */ -#define AFIO_EXTICR4_EXTI12_PF ((uint16_t)0x0005) /*!< PF[12] pin */ -#define AFIO_EXTICR4_EXTI12_PG ((uint16_t)0x0006) /*!< PG[12] pin */ - -/* EXTI13 configuration */ -#define AFIO_EXTICR4_EXTI13_PA ((uint16_t)0x0000) /*!< PA[13] pin */ -#define AFIO_EXTICR4_EXTI13_PB ((uint16_t)0x0010) /*!< PB[13] pin */ -#define AFIO_EXTICR4_EXTI13_PC ((uint16_t)0x0020) /*!< PC[13] pin */ -#define AFIO_EXTICR4_EXTI13_PD ((uint16_t)0x0030) /*!< PD[13] pin */ -#define AFIO_EXTICR4_EXTI13_PE ((uint16_t)0x0040) /*!< PE[13] pin */ -#define AFIO_EXTICR4_EXTI13_PF ((uint16_t)0x0050) /*!< PF[13] pin */ -#define AFIO_EXTICR4_EXTI13_PG ((uint16_t)0x0060) /*!< PG[13] pin */ - -/*!< EXTI14 configuration */ -#define AFIO_EXTICR4_EXTI14_PA ((uint16_t)0x0000) /*!< PA[14] pin */ -#define AFIO_EXTICR4_EXTI14_PB ((uint16_t)0x0100) /*!< PB[14] pin */ -#define AFIO_EXTICR4_EXTI14_PC ((uint16_t)0x0200) /*!< PC[14] pin */ -#define AFIO_EXTICR4_EXTI14_PD ((uint16_t)0x0300) /*!< PD[14] pin */ -#define AFIO_EXTICR4_EXTI14_PE ((uint16_t)0x0400) /*!< PE[14] pin */ -#define AFIO_EXTICR4_EXTI14_PF ((uint16_t)0x0500) /*!< PF[14] pin */ -#define AFIO_EXTICR4_EXTI14_PG ((uint16_t)0x0600) /*!< PG[14] pin */ - -/*!< EXTI15 configuration */ -#define AFIO_EXTICR4_EXTI15_PA ((uint16_t)0x0000) /*!< PA[15] pin */ -#define AFIO_EXTICR4_EXTI15_PB ((uint16_t)0x1000) /*!< PB[15] pin */ -#define AFIO_EXTICR4_EXTI15_PC ((uint16_t)0x2000) /*!< PC[15] pin */ -#define AFIO_EXTICR4_EXTI15_PD ((uint16_t)0x3000) /*!< PD[15] pin */ -#define AFIO_EXTICR4_EXTI15_PE ((uint16_t)0x4000) /*!< PE[15] pin */ -#define AFIO_EXTICR4_EXTI15_PF ((uint16_t)0x5000) /*!< PF[15] pin */ -#define AFIO_EXTICR4_EXTI15_PG ((uint16_t)0x6000) /*!< PG[15] pin */ - -/******************************************************************************/ -/* */ -/* SystemTick */ -/* */ -/******************************************************************************/ - -/***************** Bit definition for SysTick_CTRL register *****************/ -#define SysTick_CTRL_ENABLE ((uint32_t)0x00000001) /*!< Counter enable */ -#define SysTick_CTRL_TICKINT ((uint32_t)0x00000002) /*!< Counting down to 0 pends the SysTick handler */ -#define SysTick_CTRL_CLKSOURCE ((uint32_t)0x00000004) /*!< Clock source */ -#define SysTick_CTRL_COUNTFLAG ((uint32_t)0x00010000) /*!< Count Flag */ - -/***************** Bit definition for SysTick_LOAD register *****************/ -#define SysTick_LOAD_RELOAD ((uint32_t)0x00FFFFFF) /*!< Value to load into the SysTick Current Value Register when the counter reaches 0 */ - -/***************** Bit definition for SysTick_VAL register ******************/ -#define SysTick_VAL_CURRENT ((uint32_t)0x00FFFFFF) /*!< Current value at the time the register is accessed */ - -/***************** Bit definition for SysTick_CALIB register ****************/ -#define SysTick_CALIB_TENMS ((uint32_t)0x00FFFFFF) /*!< Reload value to use for 10ms timing */ -#define SysTick_CALIB_SKEW ((uint32_t)0x40000000) /*!< Calibration value is not exactly 10 ms */ -#define SysTick_CALIB_NOREF ((uint32_t)0x80000000) /*!< The reference clock is not provided */ - -/******************************************************************************/ -/* */ -/* Nested Vectored Interrupt Controller */ -/* */ -/******************************************************************************/ - -/****************** Bit definition for NVIC_ISER register *******************/ -#define NVIC_ISER_SETENA ((uint32_t)0xFFFFFFFF) /*!< Interrupt set enable bits */ -#define NVIC_ISER_SETENA_0 ((uint32_t)0x00000001) /*!< bit 0 */ -#define NVIC_ISER_SETENA_1 ((uint32_t)0x00000002) /*!< bit 1 */ -#define NVIC_ISER_SETENA_2 ((uint32_t)0x00000004) /*!< bit 2 */ -#define NVIC_ISER_SETENA_3 ((uint32_t)0x00000008) /*!< bit 3 */ -#define NVIC_ISER_SETENA_4 ((uint32_t)0x00000010) /*!< bit 4 */ -#define NVIC_ISER_SETENA_5 ((uint32_t)0x00000020) /*!< bit 5 */ -#define NVIC_ISER_SETENA_6 ((uint32_t)0x00000040) /*!< bit 6 */ -#define NVIC_ISER_SETENA_7 ((uint32_t)0x00000080) /*!< bit 7 */ -#define NVIC_ISER_SETENA_8 ((uint32_t)0x00000100) /*!< bit 8 */ -#define NVIC_ISER_SETENA_9 ((uint32_t)0x00000200) /*!< bit 9 */ -#define NVIC_ISER_SETENA_10 ((uint32_t)0x00000400) /*!< bit 10 */ -#define NVIC_ISER_SETENA_11 ((uint32_t)0x00000800) /*!< bit 11 */ -#define NVIC_ISER_SETENA_12 ((uint32_t)0x00001000) /*!< bit 12 */ -#define NVIC_ISER_SETENA_13 ((uint32_t)0x00002000) /*!< bit 13 */ -#define NVIC_ISER_SETENA_14 ((uint32_t)0x00004000) /*!< bit 14 */ -#define NVIC_ISER_SETENA_15 ((uint32_t)0x00008000) /*!< bit 15 */ -#define NVIC_ISER_SETENA_16 ((uint32_t)0x00010000) /*!< bit 16 */ -#define NVIC_ISER_SETENA_17 ((uint32_t)0x00020000) /*!< bit 17 */ -#define NVIC_ISER_SETENA_18 ((uint32_t)0x00040000) /*!< bit 18 */ -#define NVIC_ISER_SETENA_19 ((uint32_t)0x00080000) /*!< bit 19 */ -#define NVIC_ISER_SETENA_20 ((uint32_t)0x00100000) /*!< bit 20 */ -#define NVIC_ISER_SETENA_21 ((uint32_t)0x00200000) /*!< bit 21 */ -#define NVIC_ISER_SETENA_22 ((uint32_t)0x00400000) /*!< bit 22 */ -#define NVIC_ISER_SETENA_23 ((uint32_t)0x00800000) /*!< bit 23 */ -#define NVIC_ISER_SETENA_24 ((uint32_t)0x01000000) /*!< bit 24 */ -#define NVIC_ISER_SETENA_25 ((uint32_t)0x02000000) /*!< bit 25 */ -#define NVIC_ISER_SETENA_26 ((uint32_t)0x04000000) /*!< bit 26 */ -#define NVIC_ISER_SETENA_27 ((uint32_t)0x08000000) /*!< bit 27 */ -#define NVIC_ISER_SETENA_28 ((uint32_t)0x10000000) /*!< bit 28 */ -#define NVIC_ISER_SETENA_29 ((uint32_t)0x20000000) /*!< bit 29 */ -#define NVIC_ISER_SETENA_30 ((uint32_t)0x40000000) /*!< bit 30 */ -#define NVIC_ISER_SETENA_31 ((uint32_t)0x80000000) /*!< bit 31 */ - -/****************** Bit definition for NVIC_ICER register *******************/ -#define NVIC_ICER_CLRENA ((uint32_t)0xFFFFFFFF) /*!< Interrupt clear-enable bits */ -#define NVIC_ICER_CLRENA_0 ((uint32_t)0x00000001) /*!< bit 0 */ -#define NVIC_ICER_CLRENA_1 ((uint32_t)0x00000002) /*!< bit 1 */ -#define NVIC_ICER_CLRENA_2 ((uint32_t)0x00000004) /*!< bit 2 */ -#define NVIC_ICER_CLRENA_3 ((uint32_t)0x00000008) /*!< bit 3 */ -#define NVIC_ICER_CLRENA_4 ((uint32_t)0x00000010) /*!< bit 4 */ -#define NVIC_ICER_CLRENA_5 ((uint32_t)0x00000020) /*!< bit 5 */ -#define NVIC_ICER_CLRENA_6 ((uint32_t)0x00000040) /*!< bit 6 */ -#define NVIC_ICER_CLRENA_7 ((uint32_t)0x00000080) /*!< bit 7 */ -#define NVIC_ICER_CLRENA_8 ((uint32_t)0x00000100) /*!< bit 8 */ -#define NVIC_ICER_CLRENA_9 ((uint32_t)0x00000200) /*!< bit 9 */ -#define NVIC_ICER_CLRENA_10 ((uint32_t)0x00000400) /*!< bit 10 */ -#define NVIC_ICER_CLRENA_11 ((uint32_t)0x00000800) /*!< bit 11 */ -#define NVIC_ICER_CLRENA_12 ((uint32_t)0x00001000) /*!< bit 12 */ -#define NVIC_ICER_CLRENA_13 ((uint32_t)0x00002000) /*!< bit 13 */ -#define NVIC_ICER_CLRENA_14 ((uint32_t)0x00004000) /*!< bit 14 */ -#define NVIC_ICER_CLRENA_15 ((uint32_t)0x00008000) /*!< bit 15 */ -#define NVIC_ICER_CLRENA_16 ((uint32_t)0x00010000) /*!< bit 16 */ -#define NVIC_ICER_CLRENA_17 ((uint32_t)0x00020000) /*!< bit 17 */ -#define NVIC_ICER_CLRENA_18 ((uint32_t)0x00040000) /*!< bit 18 */ -#define NVIC_ICER_CLRENA_19 ((uint32_t)0x00080000) /*!< bit 19 */ -#define NVIC_ICER_CLRENA_20 ((uint32_t)0x00100000) /*!< bit 20 */ -#define NVIC_ICER_CLRENA_21 ((uint32_t)0x00200000) /*!< bit 21 */ -#define NVIC_ICER_CLRENA_22 ((uint32_t)0x00400000) /*!< bit 22 */ -#define NVIC_ICER_CLRENA_23 ((uint32_t)0x00800000) /*!< bit 23 */ -#define NVIC_ICER_CLRENA_24 ((uint32_t)0x01000000) /*!< bit 24 */ -#define NVIC_ICER_CLRENA_25 ((uint32_t)0x02000000) /*!< bit 25 */ -#define NVIC_ICER_CLRENA_26 ((uint32_t)0x04000000) /*!< bit 26 */ -#define NVIC_ICER_CLRENA_27 ((uint32_t)0x08000000) /*!< bit 27 */ -#define NVIC_ICER_CLRENA_28 ((uint32_t)0x10000000) /*!< bit 28 */ -#define NVIC_ICER_CLRENA_29 ((uint32_t)0x20000000) /*!< bit 29 */ -#define NVIC_ICER_CLRENA_30 ((uint32_t)0x40000000) /*!< bit 30 */ -#define NVIC_ICER_CLRENA_31 ((uint32_t)0x80000000) /*!< bit 31 */ - -/****************** Bit definition for NVIC_ISPR register *******************/ -#define NVIC_ISPR_SETPEND ((uint32_t)0xFFFFFFFF) /*!< Interrupt set-pending bits */ -#define NVIC_ISPR_SETPEND_0 ((uint32_t)0x00000001) /*!< bit 0 */ -#define NVIC_ISPR_SETPEND_1 ((uint32_t)0x00000002) /*!< bit 1 */ -#define NVIC_ISPR_SETPEND_2 ((uint32_t)0x00000004) /*!< bit 2 */ -#define NVIC_ISPR_SETPEND_3 ((uint32_t)0x00000008) /*!< bit 3 */ -#define NVIC_ISPR_SETPEND_4 ((uint32_t)0x00000010) /*!< bit 4 */ -#define NVIC_ISPR_SETPEND_5 ((uint32_t)0x00000020) /*!< bit 5 */ -#define NVIC_ISPR_SETPEND_6 ((uint32_t)0x00000040) /*!< bit 6 */ -#define NVIC_ISPR_SETPEND_7 ((uint32_t)0x00000080) /*!< bit 7 */ -#define NVIC_ISPR_SETPEND_8 ((uint32_t)0x00000100) /*!< bit 8 */ -#define NVIC_ISPR_SETPEND_9 ((uint32_t)0x00000200) /*!< bit 9 */ -#define NVIC_ISPR_SETPEND_10 ((uint32_t)0x00000400) /*!< bit 10 */ -#define NVIC_ISPR_SETPEND_11 ((uint32_t)0x00000800) /*!< bit 11 */ -#define NVIC_ISPR_SETPEND_12 ((uint32_t)0x00001000) /*!< bit 12 */ -#define NVIC_ISPR_SETPEND_13 ((uint32_t)0x00002000) /*!< bit 13 */ -#define NVIC_ISPR_SETPEND_14 ((uint32_t)0x00004000) /*!< bit 14 */ -#define NVIC_ISPR_SETPEND_15 ((uint32_t)0x00008000) /*!< bit 15 */ -#define NVIC_ISPR_SETPEND_16 ((uint32_t)0x00010000) /*!< bit 16 */ -#define NVIC_ISPR_SETPEND_17 ((uint32_t)0x00020000) /*!< bit 17 */ -#define NVIC_ISPR_SETPEND_18 ((uint32_t)0x00040000) /*!< bit 18 */ -#define NVIC_ISPR_SETPEND_19 ((uint32_t)0x00080000) /*!< bit 19 */ -#define NVIC_ISPR_SETPEND_20 ((uint32_t)0x00100000) /*!< bit 20 */ -#define NVIC_ISPR_SETPEND_21 ((uint32_t)0x00200000) /*!< bit 21 */ -#define NVIC_ISPR_SETPEND_22 ((uint32_t)0x00400000) /*!< bit 22 */ -#define NVIC_ISPR_SETPEND_23 ((uint32_t)0x00800000) /*!< bit 23 */ -#define NVIC_ISPR_SETPEND_24 ((uint32_t)0x01000000) /*!< bit 24 */ -#define NVIC_ISPR_SETPEND_25 ((uint32_t)0x02000000) /*!< bit 25 */ -#define NVIC_ISPR_SETPEND_26 ((uint32_t)0x04000000) /*!< bit 26 */ -#define NVIC_ISPR_SETPEND_27 ((uint32_t)0x08000000) /*!< bit 27 */ -#define NVIC_ISPR_SETPEND_28 ((uint32_t)0x10000000) /*!< bit 28 */ -#define NVIC_ISPR_SETPEND_29 ((uint32_t)0x20000000) /*!< bit 29 */ -#define NVIC_ISPR_SETPEND_30 ((uint32_t)0x40000000) /*!< bit 30 */ -#define NVIC_ISPR_SETPEND_31 ((uint32_t)0x80000000) /*!< bit 31 */ - -/****************** Bit definition for NVIC_ICPR register *******************/ -#define NVIC_ICPR_CLRPEND ((uint32_t)0xFFFFFFFF) /*!< Interrupt clear-pending bits */ -#define NVIC_ICPR_CLRPEND_0 ((uint32_t)0x00000001) /*!< bit 0 */ -#define NVIC_ICPR_CLRPEND_1 ((uint32_t)0x00000002) /*!< bit 1 */ -#define NVIC_ICPR_CLRPEND_2 ((uint32_t)0x00000004) /*!< bit 2 */ -#define NVIC_ICPR_CLRPEND_3 ((uint32_t)0x00000008) /*!< bit 3 */ -#define NVIC_ICPR_CLRPEND_4 ((uint32_t)0x00000010) /*!< bit 4 */ -#define NVIC_ICPR_CLRPEND_5 ((uint32_t)0x00000020) /*!< bit 5 */ -#define NVIC_ICPR_CLRPEND_6 ((uint32_t)0x00000040) /*!< bit 6 */ -#define NVIC_ICPR_CLRPEND_7 ((uint32_t)0x00000080) /*!< bit 7 */ -#define NVIC_ICPR_CLRPEND_8 ((uint32_t)0x00000100) /*!< bit 8 */ -#define NVIC_ICPR_CLRPEND_9 ((uint32_t)0x00000200) /*!< bit 9 */ -#define NVIC_ICPR_CLRPEND_10 ((uint32_t)0x00000400) /*!< bit 10 */ -#define NVIC_ICPR_CLRPEND_11 ((uint32_t)0x00000800) /*!< bit 11 */ -#define NVIC_ICPR_CLRPEND_12 ((uint32_t)0x00001000) /*!< bit 12 */ -#define NVIC_ICPR_CLRPEND_13 ((uint32_t)0x00002000) /*!< bit 13 */ -#define NVIC_ICPR_CLRPEND_14 ((uint32_t)0x00004000) /*!< bit 14 */ -#define NVIC_ICPR_CLRPEND_15 ((uint32_t)0x00008000) /*!< bit 15 */ -#define NVIC_ICPR_CLRPEND_16 ((uint32_t)0x00010000) /*!< bit 16 */ -#define NVIC_ICPR_CLRPEND_17 ((uint32_t)0x00020000) /*!< bit 17 */ -#define NVIC_ICPR_CLRPEND_18 ((uint32_t)0x00040000) /*!< bit 18 */ -#define NVIC_ICPR_CLRPEND_19 ((uint32_t)0x00080000) /*!< bit 19 */ -#define NVIC_ICPR_CLRPEND_20 ((uint32_t)0x00100000) /*!< bit 20 */ -#define NVIC_ICPR_CLRPEND_21 ((uint32_t)0x00200000) /*!< bit 21 */ -#define NVIC_ICPR_CLRPEND_22 ((uint32_t)0x00400000) /*!< bit 22 */ -#define NVIC_ICPR_CLRPEND_23 ((uint32_t)0x00800000) /*!< bit 23 */ -#define NVIC_ICPR_CLRPEND_24 ((uint32_t)0x01000000) /*!< bit 24 */ -#define NVIC_ICPR_CLRPEND_25 ((uint32_t)0x02000000) /*!< bit 25 */ -#define NVIC_ICPR_CLRPEND_26 ((uint32_t)0x04000000) /*!< bit 26 */ -#define NVIC_ICPR_CLRPEND_27 ((uint32_t)0x08000000) /*!< bit 27 */ -#define NVIC_ICPR_CLRPEND_28 ((uint32_t)0x10000000) /*!< bit 28 */ -#define NVIC_ICPR_CLRPEND_29 ((uint32_t)0x20000000) /*!< bit 29 */ -#define NVIC_ICPR_CLRPEND_30 ((uint32_t)0x40000000) /*!< bit 30 */ -#define NVIC_ICPR_CLRPEND_31 ((uint32_t)0x80000000) /*!< bit 31 */ - -/****************** Bit definition for NVIC_IABR register *******************/ -#define NVIC_IABR_ACTIVE ((uint32_t)0xFFFFFFFF) /*!< Interrupt active flags */ -#define NVIC_IABR_ACTIVE_0 ((uint32_t)0x00000001) /*!< bit 0 */ -#define NVIC_IABR_ACTIVE_1 ((uint32_t)0x00000002) /*!< bit 1 */ -#define NVIC_IABR_ACTIVE_2 ((uint32_t)0x00000004) /*!< bit 2 */ -#define NVIC_IABR_ACTIVE_3 ((uint32_t)0x00000008) /*!< bit 3 */ -#define NVIC_IABR_ACTIVE_4 ((uint32_t)0x00000010) /*!< bit 4 */ -#define NVIC_IABR_ACTIVE_5 ((uint32_t)0x00000020) /*!< bit 5 */ -#define NVIC_IABR_ACTIVE_6 ((uint32_t)0x00000040) /*!< bit 6 */ -#define NVIC_IABR_ACTIVE_7 ((uint32_t)0x00000080) /*!< bit 7 */ -#define NVIC_IABR_ACTIVE_8 ((uint32_t)0x00000100) /*!< bit 8 */ -#define NVIC_IABR_ACTIVE_9 ((uint32_t)0x00000200) /*!< bit 9 */ -#define NVIC_IABR_ACTIVE_10 ((uint32_t)0x00000400) /*!< bit 10 */ -#define NVIC_IABR_ACTIVE_11 ((uint32_t)0x00000800) /*!< bit 11 */ -#define NVIC_IABR_ACTIVE_12 ((uint32_t)0x00001000) /*!< bit 12 */ -#define NVIC_IABR_ACTIVE_13 ((uint32_t)0x00002000) /*!< bit 13 */ -#define NVIC_IABR_ACTIVE_14 ((uint32_t)0x00004000) /*!< bit 14 */ -#define NVIC_IABR_ACTIVE_15 ((uint32_t)0x00008000) /*!< bit 15 */ -#define NVIC_IABR_ACTIVE_16 ((uint32_t)0x00010000) /*!< bit 16 */ -#define NVIC_IABR_ACTIVE_17 ((uint32_t)0x00020000) /*!< bit 17 */ -#define NVIC_IABR_ACTIVE_18 ((uint32_t)0x00040000) /*!< bit 18 */ -#define NVIC_IABR_ACTIVE_19 ((uint32_t)0x00080000) /*!< bit 19 */ -#define NVIC_IABR_ACTIVE_20 ((uint32_t)0x00100000) /*!< bit 20 */ -#define NVIC_IABR_ACTIVE_21 ((uint32_t)0x00200000) /*!< bit 21 */ -#define NVIC_IABR_ACTIVE_22 ((uint32_t)0x00400000) /*!< bit 22 */ -#define NVIC_IABR_ACTIVE_23 ((uint32_t)0x00800000) /*!< bit 23 */ -#define NVIC_IABR_ACTIVE_24 ((uint32_t)0x01000000) /*!< bit 24 */ -#define NVIC_IABR_ACTIVE_25 ((uint32_t)0x02000000) /*!< bit 25 */ -#define NVIC_IABR_ACTIVE_26 ((uint32_t)0x04000000) /*!< bit 26 */ -#define NVIC_IABR_ACTIVE_27 ((uint32_t)0x08000000) /*!< bit 27 */ -#define NVIC_IABR_ACTIVE_28 ((uint32_t)0x10000000) /*!< bit 28 */ -#define NVIC_IABR_ACTIVE_29 ((uint32_t)0x20000000) /*!< bit 29 */ -#define NVIC_IABR_ACTIVE_30 ((uint32_t)0x40000000) /*!< bit 30 */ -#define NVIC_IABR_ACTIVE_31 ((uint32_t)0x80000000) /*!< bit 31 */ - -/****************** Bit definition for NVIC_PRI0 register *******************/ -#define NVIC_IPR0_PRI_0 ((uint32_t)0x000000FF) /*!< Priority of interrupt 0 */ -#define NVIC_IPR0_PRI_1 ((uint32_t)0x0000FF00) /*!< Priority of interrupt 1 */ -#define NVIC_IPR0_PRI_2 ((uint32_t)0x00FF0000) /*!< Priority of interrupt 2 */ -#define NVIC_IPR0_PRI_3 ((uint32_t)0xFF000000) /*!< Priority of interrupt 3 */ - -/****************** Bit definition for NVIC_PRI1 register *******************/ -#define NVIC_IPR1_PRI_4 ((uint32_t)0x000000FF) /*!< Priority of interrupt 4 */ -#define NVIC_IPR1_PRI_5 ((uint32_t)0x0000FF00) /*!< Priority of interrupt 5 */ -#define NVIC_IPR1_PRI_6 ((uint32_t)0x00FF0000) /*!< Priority of interrupt 6 */ -#define NVIC_IPR1_PRI_7 ((uint32_t)0xFF000000) /*!< Priority of interrupt 7 */ - -/****************** Bit definition for NVIC_PRI2 register *******************/ -#define NVIC_IPR2_PRI_8 ((uint32_t)0x000000FF) /*!< Priority of interrupt 8 */ -#define NVIC_IPR2_PRI_9 ((uint32_t)0x0000FF00) /*!< Priority of interrupt 9 */ -#define NVIC_IPR2_PRI_10 ((uint32_t)0x00FF0000) /*!< Priority of interrupt 10 */ -#define NVIC_IPR2_PRI_11 ((uint32_t)0xFF000000) /*!< Priority of interrupt 11 */ - -/****************** Bit definition for NVIC_PRI3 register *******************/ -#define NVIC_IPR3_PRI_12 ((uint32_t)0x000000FF) /*!< Priority of interrupt 12 */ -#define NVIC_IPR3_PRI_13 ((uint32_t)0x0000FF00) /*!< Priority of interrupt 13 */ -#define NVIC_IPR3_PRI_14 ((uint32_t)0x00FF0000) /*!< Priority of interrupt 14 */ -#define NVIC_IPR3_PRI_15 ((uint32_t)0xFF000000) /*!< Priority of interrupt 15 */ - -/****************** Bit definition for NVIC_PRI4 register *******************/ -#define NVIC_IPR4_PRI_16 ((uint32_t)0x000000FF) /*!< Priority of interrupt 16 */ -#define NVIC_IPR4_PRI_17 ((uint32_t)0x0000FF00) /*!< Priority of interrupt 17 */ -#define NVIC_IPR4_PRI_18 ((uint32_t)0x00FF0000) /*!< Priority of interrupt 18 */ -#define NVIC_IPR4_PRI_19 ((uint32_t)0xFF000000) /*!< Priority of interrupt 19 */ - -/****************** Bit definition for NVIC_PRI5 register *******************/ -#define NVIC_IPR5_PRI_20 ((uint32_t)0x000000FF) /*!< Priority of interrupt 20 */ -#define NVIC_IPR5_PRI_21 ((uint32_t)0x0000FF00) /*!< Priority of interrupt 21 */ -#define NVIC_IPR5_PRI_22 ((uint32_t)0x00FF0000) /*!< Priority of interrupt 22 */ -#define NVIC_IPR5_PRI_23 ((uint32_t)0xFF000000) /*!< Priority of interrupt 23 */ - -/****************** Bit definition for NVIC_PRI6 register *******************/ -#define NVIC_IPR6_PRI_24 ((uint32_t)0x000000FF) /*!< Priority of interrupt 24 */ -#define NVIC_IPR6_PRI_25 ((uint32_t)0x0000FF00) /*!< Priority of interrupt 25 */ -#define NVIC_IPR6_PRI_26 ((uint32_t)0x00FF0000) /*!< Priority of interrupt 26 */ -#define NVIC_IPR6_PRI_27 ((uint32_t)0xFF000000) /*!< Priority of interrupt 27 */ - -/****************** Bit definition for NVIC_PRI7 register *******************/ -#define NVIC_IPR7_PRI_28 ((uint32_t)0x000000FF) /*!< Priority of interrupt 28 */ -#define NVIC_IPR7_PRI_29 ((uint32_t)0x0000FF00) /*!< Priority of interrupt 29 */ -#define NVIC_IPR7_PRI_30 ((uint32_t)0x00FF0000) /*!< Priority of interrupt 30 */ -#define NVIC_IPR7_PRI_31 ((uint32_t)0xFF000000) /*!< Priority of interrupt 31 */ - -/****************** Bit definition for SCB_CPUID register *******************/ -#define SCB_CPUID_REVISION ((uint32_t)0x0000000F) /*!< Implementation defined revision number */ -#define SCB_CPUID_PARTNO ((uint32_t)0x0000FFF0) /*!< Number of processor within family */ -#define SCB_CPUID_Constant ((uint32_t)0x000F0000) /*!< Reads as 0x0F */ -#define SCB_CPUID_VARIANT ((uint32_t)0x00F00000) /*!< Implementation defined variant number */ -#define SCB_CPUID_IMPLEMENTER ((uint32_t)0xFF000000) /*!< Implementer code. ARM is 0x41 */ - -/******************* Bit definition for SCB_ICSR register *******************/ -#define SCB_ICSR_VECTACTIVE ((uint32_t)0x000001FF) /*!< Active ISR number field */ -#define SCB_ICSR_RETTOBASE ((uint32_t)0x00000800) /*!< All active exceptions minus the IPSR_current_exception yields the empty set */ -#define SCB_ICSR_VECTPENDING ((uint32_t)0x003FF000) /*!< Pending ISR number field */ -#define SCB_ICSR_ISRPENDING ((uint32_t)0x00400000) /*!< Interrupt pending flag */ -#define SCB_ICSR_ISRPREEMPT ((uint32_t)0x00800000) /*!< It indicates that a pending interrupt becomes active in the next running cycle */ -#define SCB_ICSR_PENDSTCLR ((uint32_t)0x02000000) /*!< Clear pending SysTick bit */ -#define SCB_ICSR_PENDSTSET ((uint32_t)0x04000000) /*!< Set pending SysTick bit */ -#define SCB_ICSR_PENDSVCLR ((uint32_t)0x08000000) /*!< Clear pending pendSV bit */ -#define SCB_ICSR_PENDSVSET ((uint32_t)0x10000000) /*!< Set pending pendSV bit */ -#define SCB_ICSR_NMIPENDSET ((uint32_t)0x80000000) /*!< Set pending NMI bit */ - -/******************* Bit definition for SCB_VTOR register *******************/ -#define SCB_VTOR_TBLOFF ((uint32_t)0x1FFFFF80) /*!< Vector table base offset field */ -#define SCB_VTOR_TBLBASE ((uint32_t)0x20000000) /*!< Table base in code(0) or RAM(1) */ - -/*!<***************** Bit definition for SCB_AIRCR register *******************/ -#define SCB_AIRCR_VECTRESET ((uint32_t)0x00000001) /*!< System Reset bit */ -#define SCB_AIRCR_VECTCLRACTIVE ((uint32_t)0x00000002) /*!< Clear active vector bit */ -#define SCB_AIRCR_SYSRESETREQ ((uint32_t)0x00000004) /*!< Requests chip control logic to generate a reset */ - -#define SCB_AIRCR_PRIGROUP ((uint32_t)0x00000700) /*!< PRIGROUP[2:0] bits (Priority group) */ -#define SCB_AIRCR_PRIGROUP_0 ((uint32_t)0x00000100) /*!< Bit 0 */ -#define SCB_AIRCR_PRIGROUP_1 ((uint32_t)0x00000200) /*!< Bit 1 */ -#define SCB_AIRCR_PRIGROUP_2 ((uint32_t)0x00000400) /*!< Bit 2 */ - -/* prority group configuration */ -#define SCB_AIRCR_PRIGROUP0 ((uint32_t)0x00000000) /*!< Priority group=0 (7 bits of pre-emption priority, 1 bit of subpriority) */ -#define SCB_AIRCR_PRIGROUP1 ((uint32_t)0x00000100) /*!< Priority group=1 (6 bits of pre-emption priority, 2 bits of subpriority) */ -#define SCB_AIRCR_PRIGROUP2 ((uint32_t)0x00000200) /*!< Priority group=2 (5 bits of pre-emption priority, 3 bits of subpriority) */ -#define SCB_AIRCR_PRIGROUP3 ((uint32_t)0x00000300) /*!< Priority group=3 (4 bits of pre-emption priority, 4 bits of subpriority) */ -#define SCB_AIRCR_PRIGROUP4 ((uint32_t)0x00000400) /*!< Priority group=4 (3 bits of pre-emption priority, 5 bits of subpriority) */ -#define SCB_AIRCR_PRIGROUP5 ((uint32_t)0x00000500) /*!< Priority group=5 (2 bits of pre-emption priority, 6 bits of subpriority) */ -#define SCB_AIRCR_PRIGROUP6 ((uint32_t)0x00000600) /*!< Priority group=6 (1 bit of pre-emption priority, 7 bits of subpriority) */ -#define SCB_AIRCR_PRIGROUP7 ((uint32_t)0x00000700) /*!< Priority group=7 (no pre-emption priority, 8 bits of subpriority) */ - -#define SCB_AIRCR_ENDIANESS ((uint32_t)0x00008000) /*!< Data endianness bit */ -#define SCB_AIRCR_VECTKEY ((uint32_t)0xFFFF0000) /*!< Register key (VECTKEY) - Reads as 0xFA05 (VECTKEYSTAT) */ - -/******************* Bit definition for SCB_SCR register ********************/ -#define SCB_SCR_SLEEPONEXIT ((uint8_t)0x02) /*!< Sleep on exit bit */ -#define SCB_SCR_SLEEPDEEP ((uint8_t)0x04) /*!< Sleep deep bit */ -#define SCB_SCR_SEVONPEND ((uint8_t)0x10) /*!< Wake up from WFE */ - -/******************** Bit definition for SCB_CCR register *******************/ -#define SCB_CCR_NONBASETHRDENA ((uint16_t)0x0001) /*!< Thread mode can be entered from any level in Handler mode by controlled return value */ -#define SCB_CCR_USERSETMPEND ((uint16_t)0x0002) /*!< Enables user code to write the Software Trigger Interrupt register to trigger (pend) a Main exception */ -#define SCB_CCR_UNALIGN_TRP ((uint16_t)0x0008) /*!< Trap for unaligned access */ -#define SCB_CCR_DIV_0_TRP ((uint16_t)0x0010) /*!< Trap on Divide by 0 */ -#define SCB_CCR_BFHFNMIGN ((uint16_t)0x0100) /*!< Handlers running at priority -1 and -2 */ -#define SCB_CCR_STKALIGN ((uint16_t)0x0200) /*!< On exception entry, the SP used prior to the exception is adjusted to be 8-byte aligned */ - -/******************* Bit definition for SCB_SHPR register ********************/ -#define SCB_SHPR_PRI_N ((uint32_t)0x000000FF) /*!< Priority of system handler 4,8, and 12. Mem Manage, reserved and Debug Monitor */ -#define SCB_SHPR_PRI_N1 ((uint32_t)0x0000FF00) /*!< Priority of system handler 5,9, and 13. Bus Fault, reserved and reserved */ -#define SCB_SHPR_PRI_N2 ((uint32_t)0x00FF0000) /*!< Priority of system handler 6,10, and 14. Usage Fault, reserved and PendSV */ -#define SCB_SHPR_PRI_N3 ((uint32_t)0xFF000000) /*!< Priority of system handler 7,11, and 15. Reserved, SVCall and SysTick */ - -/****************** Bit definition for SCB_SHCSR register *******************/ -#define SCB_SHCSR_MEMFAULTACT ((uint32_t)0x00000001) /*!< MemManage is active */ -#define SCB_SHCSR_BUSFAULTACT ((uint32_t)0x00000002) /*!< BusFault is active */ -#define SCB_SHCSR_USGFAULTACT ((uint32_t)0x00000008) /*!< UsageFault is active */ -#define SCB_SHCSR_SVCALLACT ((uint32_t)0x00000080) /*!< SVCall is active */ -#define SCB_SHCSR_MONITORACT ((uint32_t)0x00000100) /*!< Monitor is active */ -#define SCB_SHCSR_PENDSVACT ((uint32_t)0x00000400) /*!< PendSV is active */ -#define SCB_SHCSR_SYSTICKACT ((uint32_t)0x00000800) /*!< SysTick is active */ -#define SCB_SHCSR_USGFAULTPENDED ((uint32_t)0x00001000) /*!< Usage Fault is pended */ -#define SCB_SHCSR_MEMFAULTPENDED ((uint32_t)0x00002000) /*!< MemManage is pended */ -#define SCB_SHCSR_BUSFAULTPENDED ((uint32_t)0x00004000) /*!< Bus Fault is pended */ -#define SCB_SHCSR_SVCALLPENDED ((uint32_t)0x00008000) /*!< SVCall is pended */ -#define SCB_SHCSR_MEMFAULTENA ((uint32_t)0x00010000) /*!< MemManage enable */ -#define SCB_SHCSR_BUSFAULTENA ((uint32_t)0x00020000) /*!< Bus Fault enable */ -#define SCB_SHCSR_USGFAULTENA ((uint32_t)0x00040000) /*!< UsageFault enable */ - -/******************* Bit definition for SCB_CFSR register *******************/ -/*!< MFSR */ -#define SCB_CFSR_IACCVIOL ((uint32_t)0x00000001) /*!< Instruction access violation */ -#define SCB_CFSR_DACCVIOL ((uint32_t)0x00000002) /*!< Data access violation */ -#define SCB_CFSR_MUNSTKERR ((uint32_t)0x00000008) /*!< Unstacking error */ -#define SCB_CFSR_MSTKERR ((uint32_t)0x00000010) /*!< Stacking error */ -#define SCB_CFSR_MMARVALID ((uint32_t)0x00000080) /*!< Memory Manage Address Register address valid flag */ -/*!< BFSR */ -#define SCB_CFSR_IBUSERR ((uint32_t)0x00000100) /*!< Instruction bus error flag */ -#define SCB_CFSR_PRECISERR ((uint32_t)0x00000200) /*!< Precise data bus error */ -#define SCB_CFSR_IMPRECISERR ((uint32_t)0x00000400) /*!< Imprecise data bus error */ -#define SCB_CFSR_UNSTKERR ((uint32_t)0x00000800) /*!< Unstacking error */ -#define SCB_CFSR_STKERR ((uint32_t)0x00001000) /*!< Stacking error */ -#define SCB_CFSR_BFARVALID ((uint32_t)0x00008000) /*!< Bus Fault Address Register address valid flag */ -/*!< UFSR */ -#define SCB_CFSR_UNDEFINSTR ((uint32_t)0x00010000) /*!< The processor attempt to excecute an undefined instruction */ -#define SCB_CFSR_INVSTATE ((uint32_t)0x00020000) /*!< Invalid combination of EPSR and instruction */ -#define SCB_CFSR_INVPC ((uint32_t)0x00040000) /*!< Attempt to load EXC_RETURN into pc illegally */ -#define SCB_CFSR_NOCP ((uint32_t)0x00080000) /*!< Attempt to use a coprocessor instruction */ -#define SCB_CFSR_UNALIGNED ((uint32_t)0x01000000) /*!< Fault occurs when there is an attempt to make an unaligned memory access */ -#define SCB_CFSR_DIVBYZERO ((uint32_t)0x02000000) /*!< Fault occurs when SDIV or DIV instruction is used with a divisor of 0 */ - -/******************* Bit definition for SCB_HFSR register *******************/ -#define SCB_HFSR_VECTTBL ((uint32_t)0x00000002) /*!< Fault occures because of vector table read on exception processing */ -#define SCB_HFSR_FORCED ((uint32_t)0x40000000) /*!< Hard Fault activated when a configurable Fault was received and cannot activate */ -#define SCB_HFSR_DEBUGEVT ((uint32_t)0x80000000) /*!< Fault related to debug */ - -/******************* Bit definition for SCB_DFSR register *******************/ -#define SCB_DFSR_HALTED ((uint8_t)0x01) /*!< Halt request flag */ -#define SCB_DFSR_BKPT ((uint8_t)0x02) /*!< BKPT flag */ -#define SCB_DFSR_DWTTRAP ((uint8_t)0x04) /*!< Data Watchpoint and Trace (DWT) flag */ -#define SCB_DFSR_VCATCH ((uint8_t)0x08) /*!< Vector catch flag */ -#define SCB_DFSR_EXTERNAL ((uint8_t)0x10) /*!< External debug request flag */ - -/******************* Bit definition for SCB_MMFAR register ******************/ -#define SCB_MMFAR_ADDRESS ((uint32_t)0xFFFFFFFF) /*!< Mem Manage fault address field */ - -/******************* Bit definition for SCB_BFAR register *******************/ -#define SCB_BFAR_ADDRESS ((uint32_t)0xFFFFFFFF) /*!< Bus fault address field */ - -/******************* Bit definition for SCB_afsr register *******************/ -#define SCB_AFSR_IMPDEF ((uint32_t)0xFFFFFFFF) /*!< Implementation defined */ - -/******************************************************************************/ -/* */ -/* External Interrupt/Event Controller */ -/* */ -/******************************************************************************/ - -/******************* Bit definition for EXTI_IMR register *******************/ -#define EXTI_IMR_MR0 ((uint32_t)0x00000001) /*!< Interrupt Mask on line 0 */ -#define EXTI_IMR_MR1 ((uint32_t)0x00000002) /*!< Interrupt Mask on line 1 */ -#define EXTI_IMR_MR2 ((uint32_t)0x00000004) /*!< Interrupt Mask on line 2 */ -#define EXTI_IMR_MR3 ((uint32_t)0x00000008) /*!< Interrupt Mask on line 3 */ -#define EXTI_IMR_MR4 ((uint32_t)0x00000010) /*!< Interrupt Mask on line 4 */ -#define EXTI_IMR_MR5 ((uint32_t)0x00000020) /*!< Interrupt Mask on line 5 */ -#define EXTI_IMR_MR6 ((uint32_t)0x00000040) /*!< Interrupt Mask on line 6 */ -#define EXTI_IMR_MR7 ((uint32_t)0x00000080) /*!< Interrupt Mask on line 7 */ -#define EXTI_IMR_MR8 ((uint32_t)0x00000100) /*!< Interrupt Mask on line 8 */ -#define EXTI_IMR_MR9 ((uint32_t)0x00000200) /*!< Interrupt Mask on line 9 */ -#define EXTI_IMR_MR10 ((uint32_t)0x00000400) /*!< Interrupt Mask on line 10 */ -#define EXTI_IMR_MR11 ((uint32_t)0x00000800) /*!< Interrupt Mask on line 11 */ -#define EXTI_IMR_MR12 ((uint32_t)0x00001000) /*!< Interrupt Mask on line 12 */ -#define EXTI_IMR_MR13 ((uint32_t)0x00002000) /*!< Interrupt Mask on line 13 */ -#define EXTI_IMR_MR14 ((uint32_t)0x00004000) /*!< Interrupt Mask on line 14 */ -#define EXTI_IMR_MR15 ((uint32_t)0x00008000) /*!< Interrupt Mask on line 15 */ -#define EXTI_IMR_MR16 ((uint32_t)0x00010000) /*!< Interrupt Mask on line 16 */ -#define EXTI_IMR_MR17 ((uint32_t)0x00020000) /*!< Interrupt Mask on line 17 */ -#define EXTI_IMR_MR18 ((uint32_t)0x00040000) /*!< Interrupt Mask on line 18 */ - -/******************* Bit definition for EXTI_EMR register *******************/ -#define EXTI_EMR_MR0 ((uint32_t)0x00000001) /*!< Event Mask on line 0 */ -#define EXTI_EMR_MR1 ((uint32_t)0x00000002) /*!< Event Mask on line 1 */ -#define EXTI_EMR_MR2 ((uint32_t)0x00000004) /*!< Event Mask on line 2 */ -#define EXTI_EMR_MR3 ((uint32_t)0x00000008) /*!< Event Mask on line 3 */ -#define EXTI_EMR_MR4 ((uint32_t)0x00000010) /*!< Event Mask on line 4 */ -#define EXTI_EMR_MR5 ((uint32_t)0x00000020) /*!< Event Mask on line 5 */ -#define EXTI_EMR_MR6 ((uint32_t)0x00000040) /*!< Event Mask on line 6 */ -#define EXTI_EMR_MR7 ((uint32_t)0x00000080) /*!< Event Mask on line 7 */ -#define EXTI_EMR_MR8 ((uint32_t)0x00000100) /*!< Event Mask on line 8 */ -#define EXTI_EMR_MR9 ((uint32_t)0x00000200) /*!< Event Mask on line 9 */ -#define EXTI_EMR_MR10 ((uint32_t)0x00000400) /*!< Event Mask on line 10 */ -#define EXTI_EMR_MR11 ((uint32_t)0x00000800) /*!< Event Mask on line 11 */ -#define EXTI_EMR_MR12 ((uint32_t)0x00001000) /*!< Event Mask on line 12 */ -#define EXTI_EMR_MR13 ((uint32_t)0x00002000) /*!< Event Mask on line 13 */ -#define EXTI_EMR_MR14 ((uint32_t)0x00004000) /*!< Event Mask on line 14 */ -#define EXTI_EMR_MR15 ((uint32_t)0x00008000) /*!< Event Mask on line 15 */ -#define EXTI_EMR_MR16 ((uint32_t)0x00010000) /*!< Event Mask on line 16 */ -#define EXTI_EMR_MR17 ((uint32_t)0x00020000) /*!< Event Mask on line 17 */ -#define EXTI_EMR_MR18 ((uint32_t)0x00040000) /*!< Event Mask on line 18 */ - -/****************** Bit definition for EXTI_RTSR register *******************/ -#define EXTI_RTSR_TR0 ((uint32_t)0x00000001) /*!< Rising trigger event configuration bit of line 0 */ -#define EXTI_RTSR_TR1 ((uint32_t)0x00000002) /*!< Rising trigger event configuration bit of line 1 */ -#define EXTI_RTSR_TR2 ((uint32_t)0x00000004) /*!< Rising trigger event configuration bit of line 2 */ -#define EXTI_RTSR_TR3 ((uint32_t)0x00000008) /*!< Rising trigger event configuration bit of line 3 */ -#define EXTI_RTSR_TR4 ((uint32_t)0x00000010) /*!< Rising trigger event configuration bit of line 4 */ -#define EXTI_RTSR_TR5 ((uint32_t)0x00000020) /*!< Rising trigger event configuration bit of line 5 */ -#define EXTI_RTSR_TR6 ((uint32_t)0x00000040) /*!< Rising trigger event configuration bit of line 6 */ -#define EXTI_RTSR_TR7 ((uint32_t)0x00000080) /*!< Rising trigger event configuration bit of line 7 */ -#define EXTI_RTSR_TR8 ((uint32_t)0x00000100) /*!< Rising trigger event configuration bit of line 8 */ -#define EXTI_RTSR_TR9 ((uint32_t)0x00000200) /*!< Rising trigger event configuration bit of line 9 */ -#define EXTI_RTSR_TR10 ((uint32_t)0x00000400) /*!< Rising trigger event configuration bit of line 10 */ -#define EXTI_RTSR_TR11 ((uint32_t)0x00000800) /*!< Rising trigger event configuration bit of line 11 */ -#define EXTI_RTSR_TR12 ((uint32_t)0x00001000) /*!< Rising trigger event configuration bit of line 12 */ -#define EXTI_RTSR_TR13 ((uint32_t)0x00002000) /*!< Rising trigger event configuration bit of line 13 */ -#define EXTI_RTSR_TR14 ((uint32_t)0x00004000) /*!< Rising trigger event configuration bit of line 14 */ -#define EXTI_RTSR_TR15 ((uint32_t)0x00008000) /*!< Rising trigger event configuration bit of line 15 */ -#define EXTI_RTSR_TR16 ((uint32_t)0x00010000) /*!< Rising trigger event configuration bit of line 16 */ -#define EXTI_RTSR_TR17 ((uint32_t)0x00020000) /*!< Rising trigger event configuration bit of line 17 */ -#define EXTI_RTSR_TR18 ((uint32_t)0x00040000) /*!< Rising trigger event configuration bit of line 18 */ - -/****************** Bit definition for EXTI_FTSR register *******************/ -#define EXTI_FTSR_TR0 ((uint32_t)0x00000001) /*!< Falling trigger event configuration bit of line 0 */ -#define EXTI_FTSR_TR1 ((uint32_t)0x00000002) /*!< Falling trigger event configuration bit of line 1 */ -#define EXTI_FTSR_TR2 ((uint32_t)0x00000004) /*!< Falling trigger event configuration bit of line 2 */ -#define EXTI_FTSR_TR3 ((uint32_t)0x00000008) /*!< Falling trigger event configuration bit of line 3 */ -#define EXTI_FTSR_TR4 ((uint32_t)0x00000010) /*!< Falling trigger event configuration bit of line 4 */ -#define EXTI_FTSR_TR5 ((uint32_t)0x00000020) /*!< Falling trigger event configuration bit of line 5 */ -#define EXTI_FTSR_TR6 ((uint32_t)0x00000040) /*!< Falling trigger event configuration bit of line 6 */ -#define EXTI_FTSR_TR7 ((uint32_t)0x00000080) /*!< Falling trigger event configuration bit of line 7 */ -#define EXTI_FTSR_TR8 ((uint32_t)0x00000100) /*!< Falling trigger event configuration bit of line 8 */ -#define EXTI_FTSR_TR9 ((uint32_t)0x00000200) /*!< Falling trigger event configuration bit of line 9 */ -#define EXTI_FTSR_TR10 ((uint32_t)0x00000400) /*!< Falling trigger event configuration bit of line 10 */ -#define EXTI_FTSR_TR11 ((uint32_t)0x00000800) /*!< Falling trigger event configuration bit of line 11 */ -#define EXTI_FTSR_TR12 ((uint32_t)0x00001000) /*!< Falling trigger event configuration bit of line 12 */ -#define EXTI_FTSR_TR13 ((uint32_t)0x00002000) /*!< Falling trigger event configuration bit of line 13 */ -#define EXTI_FTSR_TR14 ((uint32_t)0x00004000) /*!< Falling trigger event configuration bit of line 14 */ -#define EXTI_FTSR_TR15 ((uint32_t)0x00008000) /*!< Falling trigger event configuration bit of line 15 */ -#define EXTI_FTSR_TR16 ((uint32_t)0x00010000) /*!< Falling trigger event configuration bit of line 16 */ -#define EXTI_FTSR_TR17 ((uint32_t)0x00020000) /*!< Falling trigger event configuration bit of line 17 */ -#define EXTI_FTSR_TR18 ((uint32_t)0x00040000) /*!< Falling trigger event configuration bit of line 18 */ - -/****************** Bit definition for EXTI_SWIER register ******************/ -#define EXTI_SWIER_SWIER0 ((uint32_t)0x00000001) /*!< Software Interrupt on line 0 */ -#define EXTI_SWIER_SWIER1 ((uint32_t)0x00000002) /*!< Software Interrupt on line 1 */ -#define EXTI_SWIER_SWIER2 ((uint32_t)0x00000004) /*!< Software Interrupt on line 2 */ -#define EXTI_SWIER_SWIER3 ((uint32_t)0x00000008) /*!< Software Interrupt on line 3 */ -#define EXTI_SWIER_SWIER4 ((uint32_t)0x00000010) /*!< Software Interrupt on line 4 */ -#define EXTI_SWIER_SWIER5 ((uint32_t)0x00000020) /*!< Software Interrupt on line 5 */ -#define EXTI_SWIER_SWIER6 ((uint32_t)0x00000040) /*!< Software Interrupt on line 6 */ -#define EXTI_SWIER_SWIER7 ((uint32_t)0x00000080) /*!< Software Interrupt on line 7 */ -#define EXTI_SWIER_SWIER8 ((uint32_t)0x00000100) /*!< Software Interrupt on line 8 */ -#define EXTI_SWIER_SWIER9 ((uint32_t)0x00000200) /*!< Software Interrupt on line 9 */ -#define EXTI_SWIER_SWIER10 ((uint32_t)0x00000400) /*!< Software Interrupt on line 10 */ -#define EXTI_SWIER_SWIER11 ((uint32_t)0x00000800) /*!< Software Interrupt on line 11 */ -#define EXTI_SWIER_SWIER12 ((uint32_t)0x00001000) /*!< Software Interrupt on line 12 */ -#define EXTI_SWIER_SWIER13 ((uint32_t)0x00002000) /*!< Software Interrupt on line 13 */ -#define EXTI_SWIER_SWIER14 ((uint32_t)0x00004000) /*!< Software Interrupt on line 14 */ -#define EXTI_SWIER_SWIER15 ((uint32_t)0x00008000) /*!< Software Interrupt on line 15 */ -#define EXTI_SWIER_SWIER16 ((uint32_t)0x00010000) /*!< Software Interrupt on line 16 */ -#define EXTI_SWIER_SWIER17 ((uint32_t)0x00020000) /*!< Software Interrupt on line 17 */ -#define EXTI_SWIER_SWIER18 ((uint32_t)0x00040000) /*!< Software Interrupt on line 18 */ - -/******************* Bit definition for EXTI_PR register ********************/ -#define EXTI_PR_PR0 ((uint32_t)0x00000001) /*!< Pending bit 0 */ -#define EXTI_PR_PR1 ((uint32_t)0x00000002) /*!< Pending bit 1 */ -#define EXTI_PR_PR2 ((uint32_t)0x00000004) /*!< Pending bit 2 */ -#define EXTI_PR_PR3 ((uint32_t)0x00000008) /*!< Pending bit 3 */ -#define EXTI_PR_PR4 ((uint32_t)0x00000010) /*!< Pending bit 4 */ -#define EXTI_PR_PR5 ((uint32_t)0x00000020) /*!< Pending bit 5 */ -#define EXTI_PR_PR6 ((uint32_t)0x00000040) /*!< Pending bit 6 */ -#define EXTI_PR_PR7 ((uint32_t)0x00000080) /*!< Pending bit 7 */ -#define EXTI_PR_PR8 ((uint32_t)0x00000100) /*!< Pending bit 8 */ -#define EXTI_PR_PR9 ((uint32_t)0x00000200) /*!< Pending bit 9 */ -#define EXTI_PR_PR10 ((uint32_t)0x00000400) /*!< Pending bit 10 */ -#define EXTI_PR_PR11 ((uint32_t)0x00000800) /*!< Pending bit 11 */ -#define EXTI_PR_PR12 ((uint32_t)0x00001000) /*!< Pending bit 12 */ -#define EXTI_PR_PR13 ((uint32_t)0x00002000) /*!< Pending bit 13 */ -#define EXTI_PR_PR14 ((uint32_t)0x00004000) /*!< Pending bit 14 */ -#define EXTI_PR_PR15 ((uint32_t)0x00008000) /*!< Pending bit 15 */ -#define EXTI_PR_PR16 ((uint32_t)0x00010000) /*!< Pending bit 16 */ -#define EXTI_PR_PR17 ((uint32_t)0x00020000) /*!< Pending bit 17 */ -#define EXTI_PR_PR18 ((uint32_t)0x00040000) /*!< Trigger request occurred on the external interrupt line 18 */ - -/******************************************************************************/ -/* */ -/* DMA Controller */ -/* */ -/******************************************************************************/ - -/******************* Bit definition for DMA_ISR register ********************/ -#define DMA_ISR_GIF1 ((uint32_t)0x00000001) /*!< Channel 1 Global interrupt flag */ -#define DMA_ISR_TCIF1 ((uint32_t)0x00000002) /*!< Channel 1 Transfer Complete flag */ -#define DMA_ISR_HTIF1 ((uint32_t)0x00000004) /*!< Channel 1 Half Transfer flag */ -#define DMA_ISR_TEIF1 ((uint32_t)0x00000008) /*!< Channel 1 Transfer Error flag */ -#define DMA_ISR_GIF2 ((uint32_t)0x00000010) /*!< Channel 2 Global interrupt flag */ -#define DMA_ISR_TCIF2 ((uint32_t)0x00000020) /*!< Channel 2 Transfer Complete flag */ -#define DMA_ISR_HTIF2 ((uint32_t)0x00000040) /*!< Channel 2 Half Transfer flag */ -#define DMA_ISR_TEIF2 ((uint32_t)0x00000080) /*!< Channel 2 Transfer Error flag */ -#define DMA_ISR_GIF3 ((uint32_t)0x00000100) /*!< Channel 3 Global interrupt flag */ -#define DMA_ISR_TCIF3 ((uint32_t)0x00000200) /*!< Channel 3 Transfer Complete flag */ -#define DMA_ISR_HTIF3 ((uint32_t)0x00000400) /*!< Channel 3 Half Transfer flag */ -#define DMA_ISR_TEIF3 ((uint32_t)0x00000800) /*!< Channel 3 Transfer Error flag */ -#define DMA_ISR_GIF4 ((uint32_t)0x00001000) /*!< Channel 4 Global interrupt flag */ -#define DMA_ISR_TCIF4 ((uint32_t)0x00002000) /*!< Channel 4 Transfer Complete flag */ -#define DMA_ISR_HTIF4 ((uint32_t)0x00004000) /*!< Channel 4 Half Transfer flag */ -#define DMA_ISR_TEIF4 ((uint32_t)0x00008000) /*!< Channel 4 Transfer Error flag */ -#define DMA_ISR_GIF5 ((uint32_t)0x00010000) /*!< Channel 5 Global interrupt flag */ -#define DMA_ISR_TCIF5 ((uint32_t)0x00020000) /*!< Channel 5 Transfer Complete flag */ -#define DMA_ISR_HTIF5 ((uint32_t)0x00040000) /*!< Channel 5 Half Transfer flag */ -#define DMA_ISR_TEIF5 ((uint32_t)0x00080000) /*!< Channel 5 Transfer Error flag */ -#define DMA_ISR_GIF6 ((uint32_t)0x00100000) /*!< Channel 6 Global interrupt flag */ -#define DMA_ISR_TCIF6 ((uint32_t)0x00200000) /*!< Channel 6 Transfer Complete flag */ -#define DMA_ISR_HTIF6 ((uint32_t)0x00400000) /*!< Channel 6 Half Transfer flag */ -#define DMA_ISR_TEIF6 ((uint32_t)0x00800000) /*!< Channel 6 Transfer Error flag */ -#define DMA_ISR_GIF7 ((uint32_t)0x01000000) /*!< Channel 7 Global interrupt flag */ -#define DMA_ISR_TCIF7 ((uint32_t)0x02000000) /*!< Channel 7 Transfer Complete flag */ -#define DMA_ISR_HTIF7 ((uint32_t)0x04000000) /*!< Channel 7 Half Transfer flag */ -#define DMA_ISR_TEIF7 ((uint32_t)0x08000000) /*!< Channel 7 Transfer Error flag */ - -/******************* Bit definition for DMA_IFCR register *******************/ -#define DMA_IFCR_CGIF1 ((uint32_t)0x00000001) /*!< Channel 1 Global interrupt clearr */ -#define DMA_IFCR_CTCIF1 ((uint32_t)0x00000002) /*!< Channel 1 Transfer Complete clear */ -#define DMA_IFCR_CHTIF1 ((uint32_t)0x00000004) /*!< Channel 1 Half Transfer clear */ -#define DMA_IFCR_CTEIF1 ((uint32_t)0x00000008) /*!< Channel 1 Transfer Error clear */ -#define DMA_IFCR_CGIF2 ((uint32_t)0x00000010) /*!< Channel 2 Global interrupt clear */ -#define DMA_IFCR_CTCIF2 ((uint32_t)0x00000020) /*!< Channel 2 Transfer Complete clear */ -#define DMA_IFCR_CHTIF2 ((uint32_t)0x00000040) /*!< Channel 2 Half Transfer clear */ -#define DMA_IFCR_CTEIF2 ((uint32_t)0x00000080) /*!< Channel 2 Transfer Error clear */ -#define DMA_IFCR_CGIF3 ((uint32_t)0x00000100) /*!< Channel 3 Global interrupt clear */ -#define DMA_IFCR_CTCIF3 ((uint32_t)0x00000200) /*!< Channel 3 Transfer Complete clear */ -#define DMA_IFCR_CHTIF3 ((uint32_t)0x00000400) /*!< Channel 3 Half Transfer clear */ -#define DMA_IFCR_CTEIF3 ((uint32_t)0x00000800) /*!< Channel 3 Transfer Error clear */ -#define DMA_IFCR_CGIF4 ((uint32_t)0x00001000) /*!< Channel 4 Global interrupt clear */ -#define DMA_IFCR_CTCIF4 ((uint32_t)0x00002000) /*!< Channel 4 Transfer Complete clear */ -#define DMA_IFCR_CHTIF4 ((uint32_t)0x00004000) /*!< Channel 4 Half Transfer clear */ -#define DMA_IFCR_CTEIF4 ((uint32_t)0x00008000) /*!< Channel 4 Transfer Error clear */ -#define DMA_IFCR_CGIF5 ((uint32_t)0x00010000) /*!< Channel 5 Global interrupt clear */ -#define DMA_IFCR_CTCIF5 ((uint32_t)0x00020000) /*!< Channel 5 Transfer Complete clear */ -#define DMA_IFCR_CHTIF5 ((uint32_t)0x00040000) /*!< Channel 5 Half Transfer clear */ -#define DMA_IFCR_CTEIF5 ((uint32_t)0x00080000) /*!< Channel 5 Transfer Error clear */ -#define DMA_IFCR_CGIF6 ((uint32_t)0x00100000) /*!< Channel 6 Global interrupt clear */ -#define DMA_IFCR_CTCIF6 ((uint32_t)0x00200000) /*!< Channel 6 Transfer Complete clear */ -#define DMA_IFCR_CHTIF6 ((uint32_t)0x00400000) /*!< Channel 6 Half Transfer clear */ -#define DMA_IFCR_CTEIF6 ((uint32_t)0x00800000) /*!< Channel 6 Transfer Error clear */ -#define DMA_IFCR_CGIF7 ((uint32_t)0x01000000) /*!< Channel 7 Global interrupt clear */ -#define DMA_IFCR_CTCIF7 ((uint32_t)0x02000000) /*!< Channel 7 Transfer Complete clear */ -#define DMA_IFCR_CHTIF7 ((uint32_t)0x04000000) /*!< Channel 7 Half Transfer clear */ -#define DMA_IFCR_CTEIF7 ((uint32_t)0x08000000) /*!< Channel 7 Transfer Error clear */ - -/******************* Bit definition for DMA_CCR1 register *******************/ -#define DMA_CCR1_EN ((uint16_t)0x0001) /*!< Channel enable*/ -#define DMA_CCR1_TCIE ((uint16_t)0x0002) /*!< Transfer complete interrupt enable */ -#define DMA_CCR1_HTIE ((uint16_t)0x0004) /*!< Half Transfer interrupt enable */ -#define DMA_CCR1_TEIE ((uint16_t)0x0008) /*!< Transfer error interrupt enable */ -#define DMA_CCR1_DIR ((uint16_t)0x0010) /*!< Data transfer direction */ -#define DMA_CCR1_CIRC ((uint16_t)0x0020) /*!< Circular mode */ -#define DMA_CCR1_PINC ((uint16_t)0x0040) /*!< Peripheral increment mode */ -#define DMA_CCR1_MINC ((uint16_t)0x0080) /*!< Memory increment mode */ - -#define DMA_CCR1_PSIZE ((uint16_t)0x0300) /*!< PSIZE[1:0] bits (Peripheral size) */ -#define DMA_CCR1_PSIZE_0 ((uint16_t)0x0100) /*!< Bit 0 */ -#define DMA_CCR1_PSIZE_1 ((uint16_t)0x0200) /*!< Bit 1 */ - -#define DMA_CCR1_MSIZE ((uint16_t)0x0C00) /*!< MSIZE[1:0] bits (Memory size) */ -#define DMA_CCR1_MSIZE_0 ((uint16_t)0x0400) /*!< Bit 0 */ -#define DMA_CCR1_MSIZE_1 ((uint16_t)0x0800) /*!< Bit 1 */ - -#define DMA_CCR1_PL ((uint16_t)0x3000) /*!< PL[1:0] bits(Channel Priority level) */ -#define DMA_CCR1_PL_0 ((uint16_t)0x1000) /*!< Bit 0 */ -#define DMA_CCR1_PL_1 ((uint16_t)0x2000) /*!< Bit 1 */ - -#define DMA_CCR1_MEM2MEM ((uint16_t)0x4000) /*!< Memory to memory mode */ - -/******************* Bit definition for DMA_CCR2 register *******************/ -#define DMA_CCR2_EN ((uint16_t)0x0001) /*!< Channel enable */ -#define DMA_CCR2_TCIE ((uint16_t)0x0002) /*!< ransfer complete interrupt enable */ -#define DMA_CCR2_HTIE ((uint16_t)0x0004) /*!< Half Transfer interrupt enable */ -#define DMA_CCR2_TEIE ((uint16_t)0x0008) /*!< Transfer error interrupt enable */ -#define DMA_CCR2_DIR ((uint16_t)0x0010) /*!< Data transfer direction */ -#define DMA_CCR2_CIRC ((uint16_t)0x0020) /*!< Circular mode */ -#define DMA_CCR2_PINC ((uint16_t)0x0040) /*!< Peripheral increment mode */ -#define DMA_CCR2_MINC ((uint16_t)0x0080) /*!< Memory increment mode */ - -#define DMA_CCR2_PSIZE ((uint16_t)0x0300) /*!< PSIZE[1:0] bits (Peripheral size) */ -#define DMA_CCR2_PSIZE_0 ((uint16_t)0x0100) /*!< Bit 0 */ -#define DMA_CCR2_PSIZE_1 ((uint16_t)0x0200) /*!< Bit 1 */ - -#define DMA_CCR2_MSIZE ((uint16_t)0x0C00) /*!< MSIZE[1:0] bits (Memory size) */ -#define DMA_CCR2_MSIZE_0 ((uint16_t)0x0400) /*!< Bit 0 */ -#define DMA_CCR2_MSIZE_1 ((uint16_t)0x0800) /*!< Bit 1 */ - -#define DMA_CCR2_PL ((uint16_t)0x3000) /*!< PL[1:0] bits (Channel Priority level) */ -#define DMA_CCR2_PL_0 ((uint16_t)0x1000) /*!< Bit 0 */ -#define DMA_CCR2_PL_1 ((uint16_t)0x2000) /*!< Bit 1 */ - -#define DMA_CCR2_MEM2MEM ((uint16_t)0x4000) /*!< Memory to memory mode */ - -/******************* Bit definition for DMA_CCR3 register *******************/ -#define DMA_CCR3_EN ((uint16_t)0x0001) /*!< Channel enable */ -#define DMA_CCR3_TCIE ((uint16_t)0x0002) /*!< Transfer complete interrupt enable */ -#define DMA_CCR3_HTIE ((uint16_t)0x0004) /*!< Half Transfer interrupt enable */ -#define DMA_CCR3_TEIE ((uint16_t)0x0008) /*!< Transfer error interrupt enable */ -#define DMA_CCR3_DIR ((uint16_t)0x0010) /*!< Data transfer direction */ -#define DMA_CCR3_CIRC ((uint16_t)0x0020) /*!< Circular mode */ -#define DMA_CCR3_PINC ((uint16_t)0x0040) /*!< Peripheral increment mode */ -#define DMA_CCR3_MINC ((uint16_t)0x0080) /*!< Memory increment mode */ - -#define DMA_CCR3_PSIZE ((uint16_t)0x0300) /*!< PSIZE[1:0] bits (Peripheral size) */ -#define DMA_CCR3_PSIZE_0 ((uint16_t)0x0100) /*!< Bit 0 */ -#define DMA_CCR3_PSIZE_1 ((uint16_t)0x0200) /*!< Bit 1 */ - -#define DMA_CCR3_MSIZE ((uint16_t)0x0C00) /*!< MSIZE[1:0] bits (Memory size) */ -#define DMA_CCR3_MSIZE_0 ((uint16_t)0x0400) /*!< Bit 0 */ -#define DMA_CCR3_MSIZE_1 ((uint16_t)0x0800) /*!< Bit 1 */ - -#define DMA_CCR3_PL ((uint16_t)0x3000) /*!< PL[1:0] bits (Channel Priority level) */ -#define DMA_CCR3_PL_0 ((uint16_t)0x1000) /*!< Bit 0 */ -#define DMA_CCR3_PL_1 ((uint16_t)0x2000) /*!< Bit 1 */ - -#define DMA_CCR3_MEM2MEM ((uint16_t)0x4000) /*!< Memory to memory mode */ - -/*!<****************** Bit definition for DMA_CCR4 register *******************/ -#define DMA_CCR4_EN ((uint16_t)0x0001) /*!CNT; - - if( usSettleCount >= timerSETTLE_TIME ) - { - /* What is the difference between the timer value in this interrupt - and the value from the last interrupt. */ - usDifference = usThisCount - usLastCount; - - /* Store the difference in the timer values if it is larger than the - currently stored largest value. The difference over and above the - expected difference will give the 'jitter' in the processing of these - interrupts. */ - if( usDifference > usMaxDifference ) - { - usMaxDifference = usDifference; - usMaxJitter = usMaxDifference - timerEXPECTED_DIFFERENCE_VALUE; - } - } - else - { - /* Don't bother storing any values for the first couple of - interrupts. */ - usSettleCount++; - } - - /* Remember what the timer value was this time through, so we can calculate - the difference the next time through. */ - usLastCount = usThisCount; - - /* Keep a count of the number of interrupts as a time base for the run time - stats collection. */ - ulRunTimeStatsClock++; - - TIM_ClearITPendingBit( TIM2, TIM_IT_Update ); -} - - - - - - - - diff --git a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/clock-arch.h b/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/clock-arch.h deleted file mode 100644 index cde657b62..000000000 --- a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/clock-arch.h +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright (c) 2006, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: clock-arch.h,v 1.2 2006/06/12 08:00:31 adam Exp $ - */ - -#ifndef __CLOCK_ARCH_H__ -#define __CLOCK_ARCH_H__ - -#include "FreeRTOS.h" - -typedef unsigned long clock_time_t; -#define CLOCK_CONF_SECOND configTICK_RATE_HZ - -#endif /* __CLOCK_ARCH_H__ */ diff --git a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/emac.c b/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/emac.c deleted file mode 100644 index 89cd41115..000000000 --- a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/emac.c +++ /dev/null @@ -1,485 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* FreeRTOS includes. */ -#include "FreeRTOS.h" -#include "semphr.h" -#include "task.h" -#include "emac.h" - -/* Library includes. */ -#include "stm32fxxx_eth.h" -#include "stm32f10x_gpio.h" -#include "stm32f10x_rcc.h" -#include "stm32f10x_nvic.h" - -/*-----------------------------------------------------------*/ - -/* Hardware specifics. */ -#define uipRCC_MAC_CLOCK ( 1UL << 14UL ) -#define uipRCC_MAC_TX_CLOCK ( 1UL << 15UL ) -#define uipRCC_MAC_RX_CLOCK ( 1UL << 16UL ) -#define uipPHY_ADDRESS ( 1 ) -#define uipENET_IRQ_NUM ( 61 ) -#define uipMODE_MII ( 1UL << 23UL ) -#define uipREMAP_MAC_IO ( 1UL << 21UL ) - -/* The number of descriptors to chain together for use by the Rx DMA. */ -#define uipNUM_RX_DESCRIPTORS 4 - -/* The total number of buffers to be available. At most (?) there should be -one available for each Rx descriptor, one for current use, and one that is -in the process of being transmitted. */ -#define uipNUM_BUFFERS ( uipNUM_RX_DESCRIPTORS + 2 ) - -/* Each buffer is sized to fit an entire Ethernet packet. This is for -simplicity and speed, but could waste RAM. */ -#define uipMAX_PACKET_SIZE 1520 - -/* The field in the descriptor that is unused by this configuration is used to -hold the send count. This is just #defined to a meaningful name. */ -#define SendCount Buffer2NextDescAddr - -/* If no buffers are available, then wait this long before looking again.... */ -#define uipBUFFER_WAIT_DELAY ( 3 / portTICK_PERIOD_MS ) - -/* ...and don't look more than this many times. */ -#define uipBUFFER_WAIT_ATTEMPTS ( 30 ) - -/* Let the DMA know that a new descriptor has been made available to it. */ -#define prvRxDescriptorAvailable() ETH_DMA->DMARPDR = 0 - -/*-----------------------------------------------------------*/ - -/* - * Configure the IO for Ethernet use. - */ -static void prvSetupEthGPIO( void ); - -/* - * Return a pointer to an unused buffer, marking the returned buffer as now - * in use. - */ -static unsigned char *prvGetNextBuffer( void ); - -/*-----------------------------------------------------------*/ - -/* Allocate the Rx descriptors used by the DMA. */ -static ETH_DMADESCTypeDef xRxDescriptors[ uipNUM_RX_DESCRIPTORS ] __attribute__((aligned(4))); - -/* Allocate the descriptor used for transmitting. It might be that better -performance could be achieved by having more than one Tx descriptor, but -in this simple case only one is used. */ -static volatile ETH_DMADESCTypeDef xTxDescriptor __attribute__((aligned(4))); - -/* Buffers used for receiving and transmitting data. */ -static unsigned char ucMACBuffers[ uipNUM_BUFFERS ][ uipMAX_PACKET_SIZE ] __attribute__((aligned(4))); - -/* Each ucBufferInUse index corresponds to a position in the same index in the -ucMACBuffers array. If the index contains a 1 then the buffer within -ucMACBuffers is in use, if it contains a 0 then the buffer is free. */ -static unsigned char ucBufferInUse[ uipNUM_BUFFERS ] = { 0 }; - -/* Index to the Rx descriptor to inspect next when looking for a received -packet. */ -static unsigned long ulNextDescriptor; - -/* The uip_buffer is not a fixed array, but instead gets pointed to the buffers -allocated within this file. */ -extern unsigned char * uip_buf; - -/*-----------------------------------------------------------*/ - -portBASE_TYPE xEthInitialise( void ) -{ -static ETH_InitTypeDef xEthInit; /* Static so as not to take up too much stack space. */ -NVIC_InitTypeDef xNVICInit; -const unsigned char ucMACAddress[] = { configMAC_ADDR0, configMAC_ADDR1, configMAC_ADDR2, configMAC_ADDR3, configMAC_ADDR4, configMAC_ADDR5 }; -portBASE_TYPE xReturn; -unsigned long ul; - - /* Start with things in a safe known state. */ - ETH_DeInit(); - for( ul = 0; ul < uipNUM_RX_DESCRIPTORS; ul++ ) - { - ETH_DMARxDescReceiveITConfig( &( xRxDescriptors[ ul ] ), DISABLE ); - } - - /* Route clock to the peripheral. */ - RCC->AHBENR |= ( uipRCC_MAC_CLOCK | uipRCC_MAC_TX_CLOCK | uipRCC_MAC_RX_CLOCK ); - - /* Set the MAC address. */ - ETH_MACAddressConfig( ETH_MAC_Address0, ( unsigned char * ) ucMACAddress ); - - /* Use MII mode. */ - AFIO->MAPR &= ~( uipMODE_MII ); - - /* Configure all the GPIO as required for MAC/PHY interfacing. */ - prvSetupEthGPIO(); - - /* Reset the peripheral. */ - ETH_SoftwareReset(); - while( ETH_GetSoftwareResetStatus() == SET ); - - /* Initialise using the whopping big structure. Code space could be saved - by making this a const struct, however that would mean changes to the - structure within the library header files could break the code, so for now - just set everything manually at run time. */ - xEthInit.ETH_AutoNegotiation = ETH_AutoNegotiation_Enable; - xEthInit.ETH_Watchdog = ETH_Watchdog_Disable; - xEthInit.ETH_Jabber = ETH_Jabber_Disable; - xEthInit.ETH_JumboFrame = ETH_JumboFrame_Disable; - xEthInit.ETH_InterFrameGap = ETH_InterFrameGap_96Bit; - xEthInit.ETH_CarrierSense = ETH_CarrierSense_Enable; - xEthInit.ETH_Speed = ETH_Speed_10M; - xEthInit.ETH_ReceiveOwn = ETH_ReceiveOwn_Disable; - xEthInit.ETH_LoopbackMode = ETH_LoopbackMode_Disable; - xEthInit.ETH_Mode = ETH_Mode_HalfDuplex; - xEthInit.ETH_ChecksumOffload = ETH_ChecksumOffload_Disable; - xEthInit.ETH_RetryTransmission = ETH_RetryTransmission_Disable; - xEthInit.ETH_AutomaticPadCRCStrip = ETH_AutomaticPadCRCStrip_Disable; - xEthInit.ETH_BackOffLimit = ETH_BackOffLimit_10; - xEthInit.ETH_DeferralCheck = ETH_DeferralCheck_Disable; - xEthInit.ETH_ReceiveAll = ETH_ReceiveAll_Enable; - xEthInit.ETH_SourceAddrFilter = ETH_SourceAddrFilter_Disable; - xEthInit.ETH_PassControlFrames = ETH_PassControlFrames_ForwardPassedAddrFilter; - xEthInit.ETH_BroadcastFramesReception = ETH_BroadcastFramesReception_Disable; - xEthInit.ETH_DestinationAddrFilter = ETH_DestinationAddrFilter_Normal; - xEthInit.ETH_PromiscuousMode = ETH_PromiscuousMode_Disable; - xEthInit.ETH_MulticastFramesFilter = ETH_MulticastFramesFilter_Perfect; - xEthInit.ETH_UnicastFramesFilter = ETH_UnicastFramesFilter_Perfect; - xEthInit.ETH_HashTableHigh = 0x0; - xEthInit.ETH_HashTableLow = 0x0; - xEthInit.ETH_PauseTime = 0x0; - xEthInit.ETH_ZeroQuantaPause = ETH_ZeroQuantaPause_Disable; - xEthInit.ETH_PauseLowThreshold = ETH_PauseLowThreshold_Minus4; - xEthInit.ETH_UnicastPauseFrameDetect = ETH_UnicastPauseFrameDetect_Disable; - xEthInit.ETH_ReceiveFlowControl = ETH_ReceiveFlowControl_Disable; - xEthInit.ETH_TransmitFlowControl = ETH_TransmitFlowControl_Disable; - xEthInit.ETH_VLANTagComparison = ETH_VLANTagComparison_16Bit; - xEthInit.ETH_VLANTagIdentifier = 0x0; - xEthInit.ETH_DropTCPIPChecksumErrorFrame = ETH_DropTCPIPChecksumErrorFrame_Disable; - xEthInit.ETH_ReceiveStoreForward = ETH_ReceiveStoreForward_Enable; - xEthInit.ETH_FlushReceivedFrame = ETH_FlushReceivedFrame_Disable; - xEthInit.ETH_TransmitStoreForward = ETH_TransmitStoreForward_Enable; - xEthInit.ETH_TransmitThresholdControl = ETH_TransmitThresholdControl_64Bytes; - xEthInit.ETH_ForwardErrorFrames = ETH_ForwardErrorFrames_Disable; - xEthInit.ETH_ForwardUndersizedGoodFrames = ETH_ForwardUndersizedGoodFrames_Disable; - xEthInit.ETH_ReceiveThresholdControl = ETH_ReceiveThresholdControl_64Bytes; - xEthInit.ETH_SecondFrameOperate = ETH_SecondFrameOperate_Disable; - xEthInit.ETH_AddressAlignedBeats = ETH_AddressAlignedBeats_Enable; - xEthInit.ETH_FixedBurst = ETH_FixedBurst_Disable; - xEthInit.ETH_RxDMABurstLength = ETH_RxDMABurstLength_1Beat; - xEthInit.ETH_TxDMABurstLength = ETH_TxDMABurstLength_1Beat; - xEthInit.ETH_DescriptorSkipLength = 0x0; - xEthInit.ETH_DMAArbitration = ETH_DMAArbitration_RoundRobin_RxTx_1_1; - - xReturn = ETH_Init( &xEthInit, uipPHY_ADDRESS ); - - /* Check a link was established. */ - if( xReturn != pdFAIL ) - { - /* Rx and Tx interrupts are used. */ - ETH_DMAITConfig( ETH_DMA_IT_NIS | ETH_DMA_IT_R | ETH_DMA_IT_T, ENABLE ); - - /* Only a single Tx descriptor is used. For now it is set to use an Rx - buffer, but will get updated to point to where ever uip_buf is - pointing prior to its use. */ - ETH_DMATxDescChainInit( ( void * ) &xTxDescriptor, ( void * ) ucMACBuffers, 1 ); - ETH_DMARxDescChainInit( xRxDescriptors, ( void * ) ucMACBuffers, uipNUM_RX_DESCRIPTORS ); - for( ul = 0; ul < uipNUM_RX_DESCRIPTORS; ul++ ) - { - /* Ensure received data generates an interrupt. */ - ETH_DMARxDescReceiveITConfig( &( xRxDescriptors[ ul ] ), ENABLE ); - - /* Fix up the addresses used by the descriptors. - The way ETH_DMARxDescChainInit() is not compatible with the buffer - declarations in this file. */ - xRxDescriptors[ ul ].Buffer1Addr = ( unsigned long ) &( ucMACBuffers[ ul ][ 0 ] ); - - /* Mark the buffer used by this descriptor as in use. */ - ucBufferInUse[ ul ] = pdTRUE; - } - - /* When receiving data, start at the first descriptor. */ - ulNextDescriptor = 0; - - /* Initialise uip_buf to ensure it points somewhere valid. */ - uip_buf = prvGetNextBuffer(); - - /* SendCount must be initialised to 2 to ensure the Tx descriptor looks - as if its available (as if it has already been sent twice. */ - xTxDescriptor.SendCount = 2; - - /* Switch on the interrupts in the NVIC. */ - xNVICInit.NVIC_IRQChannel = uipENET_IRQ_NUM; - xNVICInit.NVIC_IRQChannelPreemptionPriority = configLIBRARY_KERNEL_INTERRUPT_PRIORITY; - xNVICInit.NVIC_IRQChannelSubPriority = 0; - xNVICInit.NVIC_IRQChannelCmd = ENABLE; - NVIC_Init( &xNVICInit ); - - /* Buffers and descriptors are all set up, now enable the MAC. */ - ETH_Start(); - - /* Let the DMA know there are Rx descriptors available. */ - prvRxDescriptorAvailable(); - } - - return xReturn; -} -/*-----------------------------------------------------------*/ - -static unsigned char *prvGetNextBuffer( void ) -{ -portBASE_TYPE x; -unsigned char *ucReturn = NULL; -unsigned long ulAttempts = 0; - - while( ucReturn == NULL ) - { - /* Look through the buffers to find one that is not in use by - anything else. */ - for( x = 0; x < uipNUM_BUFFERS; x++ ) - { - if( ucBufferInUse[ x ] == pdFALSE ) - { - ucBufferInUse[ x ] = pdTRUE; - ucReturn = &( ucMACBuffers[ x ][ 0 ] ); - break; - } - } - - /* Was a buffer found? */ - if( ucReturn == NULL ) - { - ulAttempts++; - - if( ulAttempts >= uipBUFFER_WAIT_ATTEMPTS ) - { - break; - } - - /* Wait then look again. */ - vTaskDelay( uipBUFFER_WAIT_DELAY ); - } - } - - return ucReturn; -} -/*-----------------------------------------------------------*/ - -unsigned short usGetMACRxData( void ) -{ -unsigned short usReturn; - - if( ( xRxDescriptors[ ulNextDescriptor ].Status & ETH_DMARxDesc_ES ) != 0 ) - { - /* Error in Rx. Discard the frame and give it back to the DMA. */ - xRxDescriptors[ ulNextDescriptor ].Status = ETH_DMARxDesc_OWN; - prvRxDescriptorAvailable(); - - /* No data to return. */ - usReturn = 0UL; - - /* Start from the next descriptor the next time this function is called. */ - ulNextDescriptor++; - if( ulNextDescriptor >= uipNUM_RX_DESCRIPTORS ) - { - ulNextDescriptor = 0UL; - } - } - else if( ( xRxDescriptors[ ulNextDescriptor ].Status & ETH_DMARxDesc_OWN ) == 0 ) - { - /* Mark the current buffer as free as uip_buf is going to be set to - the buffer that contains the received data. */ - vReturnBuffer( uip_buf ); - - /* Get the received data length from the top 2 bytes of the Status - word and the data itself. */ - usReturn = ( unsigned short ) ( ( xRxDescriptors[ ulNextDescriptor ].Status & ETH_DMARxDesc_FL ) >> 16UL ); - uip_buf = ( unsigned char * ) ( xRxDescriptors[ ulNextDescriptor ].Buffer1Addr ); - - /* Allocate a new buffer to the descriptor. */ - xRxDescriptors[ ulNextDescriptor ].Buffer1Addr = ( unsigned long ) prvGetNextBuffer(); - - /* Give the descriptor back to the DMA. */ - xRxDescriptors[ ulNextDescriptor ].Status = ETH_DMARxDesc_OWN; - prvRxDescriptorAvailable(); - - /* Start from the next descriptor the next time this function is called. */ - ulNextDescriptor++; - if( ulNextDescriptor >= uipNUM_RX_DESCRIPTORS ) - { - ulNextDescriptor = 0UL; - } - } - else - { - /* No received data at all. */ - usReturn = 0UL; - } - - return usReturn; -} -/*-----------------------------------------------------------*/ - -void vSendMACData( unsigned short usDataLen ) -{ -unsigned long ulAttempts = 0UL; - - /* Check to see if the Tx descriptor is free. The check against <2 is to - ensure the buffer has been sent twice and in so doing preventing a race - condition with the DMA on the ETH_DMATxDesc_OWN bit. */ - while( ( xTxDescriptor.SendCount < 2 ) && ( xTxDescriptor.Status & ETH_DMATxDesc_OWN ) == ETH_DMATxDesc_OWN ) - { - /* Wait for the Tx descriptor to become available. */ - vTaskDelay( uipBUFFER_WAIT_DELAY ); - - ulAttempts++; - if( ulAttempts > uipBUFFER_WAIT_ATTEMPTS ) - { - /* Something has gone wrong as the Tx descriptor is still in use. - Clear it down manually, the data it was sending will probably be - lost. */ - xTxDescriptor.Status &= ~ETH_DMATxDesc_OWN; - vReturnBuffer( ( unsigned char * ) xTxDescriptor.Buffer1Addr ); - break; - } - } - - /* Setup the Tx descriptor for transmission. */ - xTxDescriptor.SendCount = 0; - xTxDescriptor.Buffer1Addr = ( unsigned long ) uip_buf; - xTxDescriptor.ControlBufferSize = ( unsigned long ) usDataLen; - xTxDescriptor.Status = ETH_DMATxDesc_OWN | ETH_DMATxDesc_LS | ETH_DMATxDesc_FS | ETH_DMATxDesc_TER | ETH_DMATxDesc_TCH | ETH_DMATxDesc_IC; - ETH_DMA->DMASR = ETH_DMASR_TBUS; - ETH_DMA->DMATPDR = 0; - - /* uip_buf is being sent by the Tx descriptor. Allocate a new buffer. */ - uip_buf = prvGetNextBuffer(); -} -/*-----------------------------------------------------------*/ - -static void prvSetupEthGPIO( void ) -{ -GPIO_InitTypeDef xEthInit; - - /* Remap MAC IO. */ - AFIO->MAPR |= ( uipREMAP_MAC_IO ); - - /* Set PA2, PA8, PB5, PB8, PB11, PB12, PB13, PC1 and PC2 for Ethernet - interfacing. */ - xEthInit.GPIO_Pin = GPIO_Pin_2;/* | GPIO_Pin_8; This should be set when the 25MHz is generated by MCO. */ - xEthInit.GPIO_Speed = GPIO_Speed_50MHz; - xEthInit.GPIO_Mode = GPIO_Mode_AF_PP; - GPIO_Init( GPIOA, &xEthInit ); - - xEthInit.GPIO_Pin = GPIO_Pin_5 | GPIO_Pin_8 | GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_13; /*5*/ - GPIO_Init( GPIOB, &xEthInit ); - - xEthInit.GPIO_Pin = GPIO_Pin_1 | GPIO_Pin_2; - GPIO_Init( GPIOC, &xEthInit ); - - - /* Configure PA0, PA1, PA3, PB10, PC3, PD8, PD9, PD10, PD11 and PD12 as - inputs. */ - xEthInit.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_3; - xEthInit.GPIO_Mode = GPIO_Mode_IN_FLOATING; - GPIO_Init( GPIOA, &xEthInit ); - - xEthInit.GPIO_Pin = GPIO_Pin_10; - GPIO_Init( GPIOB, &xEthInit ); - - xEthInit.GPIO_Pin = GPIO_Pin_3; - GPIO_Init( GPIOC, &xEthInit ); - - xEthInit.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11 | GPIO_Pin_12; - GPIO_Init( GPIOD, &xEthInit ); -} -/*-----------------------------------------------------------*/ - -void vReturnBuffer( unsigned char *pucBuffer ) -{ -unsigned long ul; - - /* Mark a buffer as free for use. */ - for( ul = 0; ul < uipNUM_BUFFERS; ul++ ) - { - if( ucMACBuffers[ ul ] == pucBuffer ) - { - ucBufferInUse[ ul ] = pdFALSE; - break; - } - } -} -/*-----------------------------------------------------------*/ - -void vMAC_ISR( void ) -{ -unsigned long ulStatus; -extern SemaphoreHandle_t xEMACSemaphore; -long xHigherPriorityTaskWoken = pdFALSE; - - /* What caused the interrupt? */ - ulStatus = ETH_DMA->DMASR; - - /* Clear everything before leaving. */ - ETH_DMA->DMASR = ulStatus; - - if( ulStatus & ETH_DMA_IT_R ) - { - /* Data was received. Ensure the uIP task is not blocked as data has - arrived. */ - xSemaphoreGiveFromISR( xEMACSemaphore, &xHigherPriorityTaskWoken ); - } - - if( ulStatus & ETH_DMA_IT_T ) - { - /* Data was transmitted. */ - if( xTxDescriptor.SendCount == 0 ) - { - /* Send again! */ - ( xTxDescriptor.SendCount )++; - - xTxDescriptor.Status = ETH_DMATxDesc_OWN | ETH_DMATxDesc_LS | ETH_DMATxDesc_FS | ETH_DMATxDesc_TER | ETH_DMATxDesc_TCH | ETH_DMATxDesc_IC; - ETH_DMA->DMASR = ETH_DMASR_TBUS; - ETH_DMA->DMATPDR = 0; - } - else - { - /* The Tx buffer is no longer required. */ - vReturnBuffer( ( unsigned char * ) xTxDescriptor.Buffer1Addr ); - } - } - - /* If xSemaphoreGiveFromISR() unblocked a task, and the unblocked task has - a higher priority than the currently executing task, then - xHigherPriorityTaskWoken will have been set to pdTRUE and this ISR should - return directly to the higher priority unblocked task. */ - portEND_SWITCHING_ISR( xHigherPriorityTaskWoken ); -} - diff --git a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/emac.c.scsc b/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/emac.c.scsc deleted file mode 100644 index 2b3222c29..000000000 --- a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/emac.c.scsc +++ /dev/null @@ -1,485 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* FreeRTOS includes. */ -#include "FreeRTOS.h" -#include "semphr.h" -#include "task.h" -#include "emac.h" - -/* Library includes. */ -#include "stm32fxxx_eth.h" -#include "stm32f10x_gpio.h" -#include "stm32f10x_rcc.h" -#include "stm32f10x_nvic.h" - -/*-----------------------------------------------------------*/ - -/* Hardware specifics. */ -#define uipRCC_MAC_CLOCK ( 1UL << 14UL ) -#define uipRCC_MAC_TX_CLOCK ( 1UL << 15UL ) -#define uipRCC_MAC_RX_CLOCK ( 1UL << 16UL ) -#define uipPHY_ADDRESS ( 1 ) -#define uipENET_IRQ_NUM ( 61 ) -#define uipMODE_MII ( 1UL << 23UL ) -#define uipREMAP_MAC_IO ( 1UL << 21UL ) - -/* The number of descriptors to chain together for use by the Rx DMA. */ -#define uipNUM_RX_DESCRIPTORS 4 - -/* The total number of buffers to be available. At most (?) there should be -one available for each Rx descriptor, one for current use, and one that is -in the process of being transmitted. */ -#define uipNUM_BUFFERS ( uipNUM_RX_DESCRIPTORS + 2 ) - -/* Each buffer is sized to fit an entire Ethernet packet. This is for -simplicity and speed, but could waste RAM. */ -#define uipMAX_PACKET_SIZE 1520 - -/* The field in the descriptor that is unused by this configuration is used to -hold the send count. This is just #defined to a meaningful name. */ -#define SendCount Buffer2NextDescAddr - -/* If no buffers are available, then wait this long before looking again.... */ -#define uipBUFFER_WAIT_DELAY ( 3 / portTICK_RATE_MS ) - -/* ...and don't look more than this many times. */ -#define uipBUFFER_WAIT_ATTEMPTS ( 30 ) - -/* Let the DMA know that a new descriptor has been made available to it. */ -#define prvRxDescriptorAvailable() ETH_DMA->DMARPDR = 0 - -/*-----------------------------------------------------------*/ - -/* - * Configure the IO for Ethernet use. - */ -static void prvSetupEthGPIO( void ); - -/* - * Return a pointer to an unused buffer, marking the returned buffer as now - * in use. - */ -static unsigned char *prvGetNextBuffer( void ); - -/*-----------------------------------------------------------*/ - -/* Allocate the Rx descriptors used by the DMA. */ -static ETH_DMADESCTypeDef xRxDescriptors[ uipNUM_RX_DESCRIPTORS ] __attribute__((aligned(4))); - -/* Allocate the descriptor used for transmitting. It might be that better -performance could be achieved by having more than one Tx descriptor, but -in this simple case only one is used. */ -static volatile ETH_DMADESCTypeDef xTxDescriptor __attribute__((aligned(4))); - -/* Buffers used for receiving and transmitting data. */ -static unsigned char ucMACBuffers[ uipNUM_BUFFERS ][ uipMAX_PACKET_SIZE ] __attribute__((aligned(4))); - -/* Each ucBufferInUse index corresponds to a position in the same index in the -ucMACBuffers array. If the index contains a 1 then the buffer withn -ucMACBuffers is in use, if it contains a 0 then the buffer is free. */ -static unsigned char ucBufferInUse[ uipNUM_BUFFERS ] = { 0 }; - -/* Index to the Rx descriptor to inspect next when looking for a received -packet. */ -static unsigned long ulNextDescriptor; - -/* The uip_buffer is not a fixed array, but instead gets pointed to the buffers -allocated within this file. */ -extern unsigned char * uip_buf; - -/*-----------------------------------------------------------*/ - -portBASE_TYPE xEthInitialise( void ) -{ -static ETH_InitTypeDef xEthInit; /* Static so as not to take up too much stack space. */ -NVIC_InitTypeDef xNVICInit; -const unsigned char ucMACAddress[] = { configMAC_ADDR0, configMAC_ADDR1, configMAC_ADDR2, configMAC_ADDR3, configMAC_ADDR4, configMAC_ADDR5 }; -portBASE_TYPE xReturn; -unsigned long ul; - - /* Start with things in a safe known state. */ - ETH_DeInit(); - for( ul = 0; ul < uipNUM_RX_DESCRIPTORS; ul++ ) - { - ETH_DMARxDescReceiveITConfig( &( xRxDescriptors[ ul ] ), DISABLE ); - } - - /* Route clock to the peripheral. */ - RCC->AHBENR |= ( uipRCC_MAC_CLOCK | uipRCC_MAC_TX_CLOCK | uipRCC_MAC_RX_CLOCK ); - - /* Set the MAC address. */ - ETH_MACAddressConfig( ETH_MAC_Address0, ( unsigned char * ) ucMACAddress ); - - /* Use MII mode. */ - AFIO->MAPR &= ~( uipMODE_MII ); - - /* Configure all the GPIO as required for MAC/PHY interfacing. */ - prvSetupEthGPIO(); - - /* Reset the peripheral. */ - ETH_SoftwareReset(); - while( ETH_GetSoftwareResetStatus() == SET ); - - /* Initialise using the whopping big structure. Code space could be saved - by making this a const struct, however that would mean changes to the - structure within the library header files could break the code, so for now - just set everything manually at run time. */ - xEthInit.ETH_AutoNegotiation = ETH_AutoNegotiation_Enable; - xEthInit.ETH_Watchdog = ETH_Watchdog_Disable; - xEthInit.ETH_Jabber = ETH_Jabber_Disable; - xEthInit.ETH_JumboFrame = ETH_JumboFrame_Disable; - xEthInit.ETH_InterFrameGap = ETH_InterFrameGap_96Bit; - xEthInit.ETH_CarrierSense = ETH_CarrierSense_Enable; - xEthInit.ETH_Speed = ETH_Speed_10M; - xEthInit.ETH_ReceiveOwn = ETH_ReceiveOwn_Disable; - xEthInit.ETH_LoopbackMode = ETH_LoopbackMode_Disable; - xEthInit.ETH_Mode = ETH_Mode_HalfDuplex; - xEthInit.ETH_ChecksumOffload = ETH_ChecksumOffload_Disable; - xEthInit.ETH_RetryTransmission = ETH_RetryTransmission_Disable; - xEthInit.ETH_AutomaticPadCRCStrip = ETH_AutomaticPadCRCStrip_Disable; - xEthInit.ETH_BackOffLimit = ETH_BackOffLimit_10; - xEthInit.ETH_DeferralCheck = ETH_DeferralCheck_Disable; - xEthInit.ETH_ReceiveAll = ETH_ReceiveAll_Enable; - xEthInit.ETH_SourceAddrFilter = ETH_SourceAddrFilter_Disable; - xEthInit.ETH_PassControlFrames = ETH_PassControlFrames_ForwardPassedAddrFilter; - xEthInit.ETH_BroadcastFramesReception = ETH_BroadcastFramesReception_Disable; - xEthInit.ETH_DestinationAddrFilter = ETH_DestinationAddrFilter_Normal; - xEthInit.ETH_PromiscuousMode = ETH_PromiscuousMode_Disable; - xEthInit.ETH_MulticastFramesFilter = ETH_MulticastFramesFilter_Perfect; - xEthInit.ETH_UnicastFramesFilter = ETH_UnicastFramesFilter_Perfect; - xEthInit.ETH_HashTableHigh = 0x0; - xEthInit.ETH_HashTableLow = 0x0; - xEthInit.ETH_PauseTime = 0x0; - xEthInit.ETH_ZeroQuantaPause = ETH_ZeroQuantaPause_Disable; - xEthInit.ETH_PauseLowThreshold = ETH_PauseLowThreshold_Minus4; - xEthInit.ETH_UnicastPauseFrameDetect = ETH_UnicastPauseFrameDetect_Disable; - xEthInit.ETH_ReceiveFlowControl = ETH_ReceiveFlowControl_Disable; - xEthInit.ETH_TransmitFlowControl = ETH_TransmitFlowControl_Disable; - xEthInit.ETH_VLANTagComparison = ETH_VLANTagComparison_16Bit; - xEthInit.ETH_VLANTagIdentifier = 0x0; - xEthInit.ETH_DropTCPIPChecksumErrorFrame = ETH_DropTCPIPChecksumErrorFrame_Disable; - xEthInit.ETH_ReceiveStoreForward = ETH_ReceiveStoreForward_Enable; - xEthInit.ETH_FlushReceivedFrame = ETH_FlushReceivedFrame_Disable; - xEthInit.ETH_TransmitStoreForward = ETH_TransmitStoreForward_Enable; - xEthInit.ETH_TransmitThresholdControl = ETH_TransmitThresholdControl_64Bytes; - xEthInit.ETH_ForwardErrorFrames = ETH_ForwardErrorFrames_Disable; - xEthInit.ETH_ForwardUndersizedGoodFrames = ETH_ForwardUndersizedGoodFrames_Disable; - xEthInit.ETH_ReceiveThresholdControl = ETH_ReceiveThresholdControl_64Bytes; - xEthInit.ETH_SecondFrameOperate = ETH_SecondFrameOperate_Disable; - xEthInit.ETH_AddressAlignedBeats = ETH_AddressAlignedBeats_Enable; - xEthInit.ETH_FixedBurst = ETH_FixedBurst_Disable; - xEthInit.ETH_RxDMABurstLength = ETH_RxDMABurstLength_1Beat; - xEthInit.ETH_TxDMABurstLength = ETH_TxDMABurstLength_1Beat; - xEthInit.ETH_DescriptorSkipLength = 0x0; - xEthInit.ETH_DMAArbitration = ETH_DMAArbitration_RoundRobin_RxTx_1_1; - - xReturn = ETH_Init( &xEthInit, uipPHY_ADDRESS ); - - /* Check a link was established. */ - if( xReturn != pdFAIL ) - { - /* Rx and Tx interrupts are used. */ - ETH_DMAITConfig( ETH_DMA_IT_NIS | ETH_DMA_IT_R | ETH_DMA_IT_T, ENABLE ); - - /* Only a single Tx descriptor is used. For now it is set to use an Rx - buffer, but will get updated to point to where ever uip_buf is - pointing prior to its use. */ - ETH_DMATxDescChainInit( ( void * ) &xTxDescriptor, ( void * ) ucMACBuffers, 1 ); - ETH_DMARxDescChainInit( xRxDescriptors, ( void * ) ucMACBuffers, uipNUM_RX_DESCRIPTORS ); - for( ul = 0; ul < uipNUM_RX_DESCRIPTORS; ul++ ) - { - /* Ensure received data generates an interrupt. */ - ETH_DMARxDescReceiveITConfig( &( xRxDescriptors[ ul ] ), ENABLE ); - - /* Fix up the addresses used by the descriptors. - The way ETH_DMARxDescChainInit() is not compatible with the buffer - declarations in this file. */ - xRxDescriptors[ ul ].Buffer1Addr = ( unsigned long ) &( ucMACBuffers[ ul ][ 0 ] ); - - /* Mark the buffer used by this descriptor as in use. */ - ucBufferInUse[ ul ] = pdTRUE; - } - - /* When receiving data, start at the first descriptor. */ - ulNextDescriptor = 0; - - /* Initialise uip_buf to ensure it points somewhere valid. */ - uip_buf = prvGetNextBuffer(); - - /* SendCount must be initialised to 2 to ensure the Tx descriptor looks - as if its available (as if it has already been sent twice. */ - xTxDescriptor.SendCount = 2; - - /* Switch on the interrupts in the NVIC. */ - xNVICInit.NVIC_IRQChannel = uipENET_IRQ_NUM; - xNVICInit.NVIC_IRQChannelPreemptionPriority = configLIBRARY_KERNEL_INTERRUPT_PRIORITY; - xNVICInit.NVIC_IRQChannelSubPriority = 0; - xNVICInit.NVIC_IRQChannelCmd = ENABLE; - NVIC_Init( &xNVICInit ); - - /* Buffers and descriptors are all set up, now enable the MAC. */ - ETH_Start(); - - /* Let the DMA know there are Rx descriptors available. */ - prvRxDescriptorAvailable(); - } - - return xReturn; -} -/*-----------------------------------------------------------*/ - -static unsigned char *prvGetNextBuffer( void ) -{ -portBASE_TYPE x; -unsigned char *ucReturn = NULL; -unsigned long ulAttempts = 0; - - while( ucReturn == NULL ) - { - /* Look through the buffers to find one that is not in use by - anything else. */ - for( x = 0; x < uipNUM_BUFFERS; x++ ) - { - if( ucBufferInUse[ x ] == pdFALSE ) - { - ucBufferInUse[ x ] = pdTRUE; - ucReturn = &( ucMACBuffers[ x ][ 0 ] ); - break; - } - } - - /* Was a buffer found? */ - if( ucReturn == NULL ) - { - ulAttempts++; - - if( ulAttempts >= uipBUFFER_WAIT_ATTEMPTS ) - { - break; - } - - /* Wait then look again. */ - vTaskDelay( uipBUFFER_WAIT_DELAY ); - } - } - - return ucReturn; -} -/*-----------------------------------------------------------*/ - -unsigned short usGetMACRxData( void ) -{ -unsigned short usReturn; - - if( ( xRxDescriptors[ ulNextDescriptor ].Status & ETH_DMARxDesc_ES ) != 0 ) - { - /* Error in Rx. Discard the frame and give it back to the DMA. */ - xRxDescriptors[ ulNextDescriptor ].Status = ETH_DMARxDesc_OWN; - prvRxDescriptorAvailable(); - - /* No data to return. */ - usReturn = 0UL; - - /* Start from the next descriptor the next time this function is called. */ - ulNextDescriptor++; - if( ulNextDescriptor >= uipNUM_RX_DESCRIPTORS ) - { - ulNextDescriptor = 0UL; - } - } - else if( ( xRxDescriptors[ ulNextDescriptor ].Status & ETH_DMARxDesc_OWN ) == 0 ) - { - /* Mark the current buffer as free as uip_buf is going to be set to - the buffer that contains the received data. */ - vReturnBuffer( uip_buf ); - - /* Get the received data length from the top 2 bytes of the Status - word and the data itself. */ - usReturn = ( unsigned short ) ( ( xRxDescriptors[ ulNextDescriptor ].Status & ETH_DMARxDesc_FL ) >> 16UL ); - uip_buf = ( unsigned char * ) ( xRxDescriptors[ ulNextDescriptor ].Buffer1Addr ); - - /* Allocate a new buffer to the descriptor. */ - xRxDescriptors[ ulNextDescriptor ].Buffer1Addr = ( unsigned long ) prvGetNextBuffer(); - - /* Give the descriptor back to the DMA. */ - xRxDescriptors[ ulNextDescriptor ].Status = ETH_DMARxDesc_OWN; - prvRxDescriptorAvailable(); - - /* Start from the next descriptor the next time this function is called. */ - ulNextDescriptor++; - if( ulNextDescriptor >= uipNUM_RX_DESCRIPTORS ) - { - ulNextDescriptor = 0UL; - } - } - else - { - /* No received data at all. */ - usReturn = 0UL; - } - - return usReturn; -} -/*-----------------------------------------------------------*/ - -void vSendMACData( unsigned short usDataLen ) -{ -unsigned long ulAttempts = 0UL; - - /* Check to see if the Tx descriptor is free. The check against <2 is to - ensure the buffer has been sent twice and in so doing preventing a race - condition with the DMA on the ETH_DMATxDesc_OWN bit. */ - while( ( xTxDescriptor.SendCount < 2 ) && ( xTxDescriptor.Status & ETH_DMATxDesc_OWN ) == ETH_DMATxDesc_OWN ) - { - /* Wait for the Tx descriptor to become available. */ - vTaskDelay( uipBUFFER_WAIT_DELAY ); - - ulAttempts++; - if( ulAttempts > uipBUFFER_WAIT_ATTEMPTS ) - { - /* Something has gone wrong as the Tx descriptor is still in use. - Clear it down manually, the data it was sending will probably be - lost. */ - xTxDescriptor.Status &= ~ETH_DMATxDesc_OWN; - vReturnBuffer( ( unsigned char * ) xTxDescriptor.Buffer1Addr ); - break; - } - } - - /* Setup the Tx descriptor for transmission. */ - xTxDescriptor.SendCount = 0; - xTxDescriptor.Buffer1Addr = ( unsigned long ) uip_buf; - xTxDescriptor.ControlBufferSize = ( unsigned long ) usDataLen; - xTxDescriptor.Status = ETH_DMATxDesc_OWN | ETH_DMATxDesc_LS | ETH_DMATxDesc_FS | ETH_DMATxDesc_TER | ETH_DMATxDesc_TCH | ETH_DMATxDesc_IC; - ETH_DMA->DMASR = ETH_DMASR_TBUS; - ETH_DMA->DMATPDR = 0; - - /* uip_buf is being sent by the Tx descriptor. Allocate a new buffer. */ - uip_buf = prvGetNextBuffer(); -} -/*-----------------------------------------------------------*/ - -static void prvSetupEthGPIO( void ) -{ -GPIO_InitTypeDef xEthInit; - - /* Remap MAC IO. */ - AFIO->MAPR |= ( uipREMAP_MAC_IO ); - - /* Set PA2, PA8, PB5, PB8, PB11, PB12, PB13, PC1 and PC2 for Ethernet - interfacing. */ - xEthInit.GPIO_Pin = GPIO_Pin_2;/* | GPIO_Pin_8; This should be set when the 25MHz is generated by MCO. */ - xEthInit.GPIO_Speed = GPIO_Speed_50MHz; - xEthInit.GPIO_Mode = GPIO_Mode_AF_PP; - GPIO_Init( GPIOA, &xEthInit ); - - xEthInit.GPIO_Pin = GPIO_Pin_5 | GPIO_Pin_8 | GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_13; /*5*/ - GPIO_Init( GPIOB, &xEthInit ); - - xEthInit.GPIO_Pin = GPIO_Pin_1 | GPIO_Pin_2; - GPIO_Init( GPIOC, &xEthInit ); - - - /* Configure PA0, PA1, PA3, PB10, PC3, PD8, PD9, PD10, PD11 and PD12 as - inputs. */ - xEthInit.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_3; - xEthInit.GPIO_Mode = GPIO_Mode_IN_FLOATING; - GPIO_Init( GPIOA, &xEthInit ); - - xEthInit.GPIO_Pin = GPIO_Pin_10; - GPIO_Init( GPIOB, &xEthInit ); - - xEthInit.GPIO_Pin = GPIO_Pin_3; - GPIO_Init( GPIOC, &xEthInit ); - - xEthInit.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11 | GPIO_Pin_12; - GPIO_Init( GPIOD, &xEthInit ); -} -/*-----------------------------------------------------------*/ - -void vReturnBuffer( unsigned char *pucBuffer ) -{ -unsigned long ul; - - /* Mark a buffer as free for use. */ - for( ul = 0; ul < uipNUM_BUFFERS; ul++ ) - { - if( ucMACBuffers[ ul ] == pucBuffer ) - { - ucBufferInUse[ ul ] = pdFALSE; - break; - } - } -} -/*-----------------------------------------------------------*/ - -void vMAC_ISR( void ) -{ -unsigned long ulStatus; -extern xSemaphoreHandle xEMACSemaphore; -long xHigherPriorityTaskWoken = pdFALSE; - - /* What caused the interrupt? */ - ulStatus = ETH_DMA->DMASR; - - /* Clear everything before leaving. */ - ETH_DMA->DMASR = ulStatus; - - if( ulStatus & ETH_DMA_IT_R ) - { - /* Data was received. Ensure the uIP task is not blocked as data has - arrived. */ - xSemaphoreGiveFromISR( xEMACSemaphore, &xHigherPriorityTaskWoken ); - } - - if( ulStatus & ETH_DMA_IT_T ) - { - /* Data was transmitted. */ - if( xTxDescriptor.SendCount == 0 ) - { - /* Send again! */ - ( xTxDescriptor.SendCount )++; - - xTxDescriptor.Status = ETH_DMATxDesc_OWN | ETH_DMATxDesc_LS | ETH_DMATxDesc_FS | ETH_DMATxDesc_TER | ETH_DMATxDesc_TCH | ETH_DMATxDesc_IC; - ETH_DMA->DMASR = ETH_DMASR_TBUS; - ETH_DMA->DMATPDR = 0; - } - else - { - /* The Tx buffer is no longer required. */ - vReturnBuffer( ( unsigned char * ) xTxDescriptor.Buffer1Addr ); - } - } - - /* If xSemaphoreGiveFromISR() unblocked a task, and the unblocked task has - a higher priority than the currently executing task, then - xHigherPriorityTaskWoken will have been set to pdTRUE and this ISR should - return directly to the higher priority unblocked task. */ - portEND_SWITCHING_ISR( xHigherPriorityTaskWoken ); -} - diff --git a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/emac.h b/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/emac.h deleted file mode 100644 index 7eee11a38..000000000 --- a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/emac.h +++ /dev/null @@ -1,54 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -#ifndef EMAC__H -#define EMAC__H - -/* - * Initialise all IO and peripherals required for Ethernet communication. - */ -portBASE_TYPE xEthInitialise( void ); - -/* - * Look for new received data. If any is found then set uip_buf to point to the - * data and return the length of the data. If no data is found then 0 is - * returned, and uip_buf is left pointing to a spare data buffer. - */ -unsigned short usGetMACRxData( void ); - -/* - * Send usDataLen bytes from uip_buf to the MAC for transmission. - */ -void vSendMACData( unsigned short usDataLen ); - -/* - * Return a buffer to the pool of free buffers. - */ -void vReturnBuffer( unsigned char *pucBuffer ); - -#endif - diff --git a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/emac.h.scsc b/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/emac.h.scsc deleted file mode 100644 index f1e968827..000000000 --- a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/emac.h.scsc +++ /dev/null @@ -1,54 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -#ifndef EMAC__H -#define EMAC__H - -/* - * Initialise all IO and preipherals required for Ethernet communication. - */ -portBASE_TYPE xEthInitialise( void ); - -/* - * Look for new received data. If any is found then set uip_buf to point to the - * data and return the length of the data. If no data is found then 0 is - * returned, and uip_buf is left pointing to a spare data buffer. - */ -unsigned short usGetMACRxData( void ); - -/* - * Send usDataLen bytes from uip_buf to the MAC for transmission. - */ -void vSendMACData( unsigned short usDataLen ); - -/* - * Return a buffer to the pool of free buffers. - */ -void vReturnBuffer( unsigned char *pucBuffer ); - -#endif - diff --git a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/http-strings b/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/http-strings deleted file mode 100644 index 0d3c30cdd..000000000 --- a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/http-strings +++ /dev/null @@ -1,35 +0,0 @@ -http_http "http://" -http_200 "200 " -http_301 "301 " -http_302 "302 " -http_get "GET " -http_10 "HTTP/1.0" -http_11 "HTTP/1.1" -http_content_type "content-type: " -http_texthtml "text/html" -http_location "location: " -http_host "host: " -http_crnl "\r\n" -http_index_html "/index.html" -http_404_html "/404.html" -http_referer "Referer:" -http_header_200 "HTTP/1.0 200 OK\r\nServer: uIP/1.0 http://www.sics.se/~adam/uip/\r\nConnection: close\r\n" -http_header_404 "HTTP/1.0 404 Not found\r\nServer: uIP/1.0 http://www.sics.se/~adam/uip/\r\nConnection: close\r\n" -http_content_type_plain "Content-type: text/plain\r\n\r\n" -http_content_type_html "Content-type: text/html\r\n\r\n" -http_content_type_css "Content-type: text/css\r\n\r\n" -http_content_type_text "Content-type: text/text\r\n\r\n" -http_content_type_png "Content-type: image/png\r\n\r\n" -http_content_type_gif "Content-type: image/gif\r\n\r\n" -http_content_type_jpg "Content-type: image/jpeg\r\n\r\n" -http_content_type_binary "Content-type: application/octet-stream\r\n\r\n" -http_html ".html" -http_shtml ".shtml" -http_htm ".htm" -http_css ".css" -http_png ".png" -http_gif ".gif" -http_jpg ".jpg" -http_text ".txt" -http_txt ".txt" - diff --git a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/http-strings.c b/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/http-strings.c deleted file mode 100644 index ef7a41c7d..000000000 --- a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/http-strings.c +++ /dev/null @@ -1,102 +0,0 @@ -const char http_http[8] = -/* "http://" */ -{0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, }; -const char http_200[5] = -/* "200 " */ -{0x32, 0x30, 0x30, 0x20, }; -const char http_301[5] = -/* "301 " */ -{0x33, 0x30, 0x31, 0x20, }; -const char http_302[5] = -/* "302 " */ -{0x33, 0x30, 0x32, 0x20, }; -const char http_get[5] = -/* "GET " */ -{0x47, 0x45, 0x54, 0x20, }; -const char http_10[9] = -/* "HTTP/1.0" */ -{0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30, }; -const char http_11[9] = -/* "HTTP/1.1" */ -{0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x31, }; -const char http_content_type[15] = -/* "content-type: " */ -{0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, }; -const char http_texthtml[10] = -/* "text/html" */ -{0x74, 0x65, 0x78, 0x74, 0x2f, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_location[11] = -/* "location: " */ -{0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, }; -const char http_host[7] = -/* "host: " */ -{0x68, 0x6f, 0x73, 0x74, 0x3a, 0x20, }; -const char http_crnl[3] = -/* "\r\n" */ -{0xd, 0xa, }; -const char http_index_html[12] = -/* "/index.html" */ -{0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_404_html[10] = -/* "/404.html" */ -{0x2f, 0x34, 0x30, 0x34, 0x2e, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_referer[9] = -/* "Referer:" */ -{0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x72, 0x3a, }; -const char http_header_200[84] = -/* "HTTP/1.0 200 OK\r\nServer: uIP/1.0 http://www.sics.se/~adam/uip/\r\nConnection: close\r\n" */ -{0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x32, 0x30, 0x30, 0x20, 0x4f, 0x4b, 0xd, 0xa, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x3a, 0x20, 0x75, 0x49, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x73, 0x69, 0x63, 0x73, 0x2e, 0x73, 0x65, 0x2f, 0x7e, 0x61, 0x64, 0x61, 0x6d, 0x2f, 0x75, 0x69, 0x70, 0x2f, 0xd, 0xa, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0xd, 0xa, }; -const char http_header_404[91] = -/* "HTTP/1.0 404 Not found\r\nServer: uIP/1.0 http://www.sics.se/~adam/uip/\r\nConnection: close\r\n" */ -{0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x34, 0x30, 0x34, 0x20, 0x4e, 0x6f, 0x74, 0x20, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0xd, 0xa, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x3a, 0x20, 0x75, 0x49, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x73, 0x69, 0x63, 0x73, 0x2e, 0x73, 0x65, 0x2f, 0x7e, 0x61, 0x64, 0x61, 0x6d, 0x2f, 0x75, 0x69, 0x70, 0x2f, 0xd, 0xa, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0xd, 0xa, }; -const char http_content_type_plain[29] = -/* "Content-type: text/plain\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_html[28] = -/* "Content-type: text/html\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_css [27] = -/* "Content-type: text/css\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x63, 0x73, 0x73, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_text[28] = -/* "Content-type: text/text\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x74, 0x65, 0x78, 0x74, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_png [28] = -/* "Content-type: image/png\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x70, 0x6e, 0x67, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_gif [28] = -/* "Content-type: image/gif\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x67, 0x69, 0x66, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_jpg [29] = -/* "Content-type: image/jpeg\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x6a, 0x70, 0x65, 0x67, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_binary[43] = -/* "Content-type: application/octet-stream\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x6f, 0x63, 0x74, 0x65, 0x74, 0x2d, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0xd, 0xa, 0xd, 0xa, }; -const char http_html[6] = -/* ".html" */ -{0x2e, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_shtml[7] = -/* ".shtml" */ -{0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_htm[5] = -/* ".htm" */ -{0x2e, 0x68, 0x74, 0x6d, }; -const char http_css[5] = -/* ".css" */ -{0x2e, 0x63, 0x73, 0x73, }; -const char http_png[5] = -/* ".png" */ -{0x2e, 0x70, 0x6e, 0x67, }; -const char http_gif[5] = -/* ".gif" */ -{0x2e, 0x67, 0x69, 0x66, }; -const char http_jpg[5] = -/* ".jpg" */ -{0x2e, 0x6a, 0x70, 0x67, }; -const char http_text[5] = -/* ".txt" */ -{0x2e, 0x74, 0x78, 0x74, }; -const char http_txt[5] = -/* ".txt" */ -{0x2e, 0x74, 0x78, 0x74, }; diff --git a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/http-strings.h b/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/http-strings.h deleted file mode 100644 index acbe7e17f..000000000 --- a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/http-strings.h +++ /dev/null @@ -1,34 +0,0 @@ -extern const char http_http[8]; -extern const char http_200[5]; -extern const char http_301[5]; -extern const char http_302[5]; -extern const char http_get[5]; -extern const char http_10[9]; -extern const char http_11[9]; -extern const char http_content_type[15]; -extern const char http_texthtml[10]; -extern const char http_location[11]; -extern const char http_host[7]; -extern const char http_crnl[3]; -extern const char http_index_html[12]; -extern const char http_404_html[10]; -extern const char http_referer[9]; -extern const char http_header_200[84]; -extern const char http_header_404[91]; -extern const char http_content_type_plain[29]; -extern const char http_content_type_html[28]; -extern const char http_content_type_css [27]; -extern const char http_content_type_text[28]; -extern const char http_content_type_png [28]; -extern const char http_content_type_gif [28]; -extern const char http_content_type_jpg [29]; -extern const char http_content_type_binary[43]; -extern const char http_html[6]; -extern const char http_shtml[7]; -extern const char http_htm[5]; -extern const char http_css[5]; -extern const char http_png[5]; -extern const char http_gif[5]; -extern const char http_jpg[5]; -extern const char http_text[5]; -extern const char http_txt[5]; diff --git a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/httpd-cgi.c b/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/httpd-cgi.c deleted file mode 100644 index 4bd844f0f..000000000 --- a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/httpd-cgi.c +++ /dev/null @@ -1,303 +0,0 @@ -/** - * \addtogroup httpd - * @{ - */ - -/** - * \file - * Web server script interface - * \author - * Adam Dunkels - * - */ - -/* - * Copyright (c) 2001-2006, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: httpd-cgi.c,v 1.2 2006/06/11 21:46:37 adam Exp $ - * - */ -#include "FreeRTOS.h" -#include "uip.h" -#include "psock.h" -#include "httpd.h" -#include "httpd-cgi.h" -#include "httpd-fs.h" - -#include -#include - -HTTPD_CGI_CALL(file, "file-stats", file_stats); -HTTPD_CGI_CALL(tcp, "tcp-connections", tcp_stats); -HTTPD_CGI_CALL(net, "net-stats", net_stats); -HTTPD_CGI_CALL(rtos, "rtos-stats", rtos_stats ); -HTTPD_CGI_CALL(run, "run-time", run_time ); -HTTPD_CGI_CALL(io, "led-io", led_io ); - - -static const struct httpd_cgi_call *calls[] = { &file, &tcp, &net, &rtos, &run, &io, NULL }; - -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(nullfunction(struct httpd_state *s, char *ptr)) -{ - PSOCK_BEGIN(&s->sout); - ( void ) ptr; - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -httpd_cgifunction -httpd_cgi(char *name) -{ - const struct httpd_cgi_call **f; - - /* Find the matching name in the table, return the function. */ - for(f = calls; *f != NULL; ++f) { - if(strncmp((*f)->name, name, strlen((*f)->name)) == 0) { - return (*f)->function; - } - } - return nullfunction; -} -/*---------------------------------------------------------------------------*/ -static unsigned short -generate_file_stats(void *arg) -{ - char *f = (char *)arg; - return snprintf((char *)uip_appdata, UIP_APPDATA_SIZE, "%5u", httpd_fs_count(f)); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(file_stats(struct httpd_state *s, char *ptr)) -{ - PSOCK_BEGIN(&s->sout); - - PSOCK_GENERATOR_SEND(&s->sout, generate_file_stats, strchr(ptr, ' ') + 1); - - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -static const char closed[] = /* "CLOSED",*/ -{0x43, 0x4c, 0x4f, 0x53, 0x45, 0x44, 0}; -static const char syn_rcvd[] = /* "SYN-RCVD",*/ -{0x53, 0x59, 0x4e, 0x2d, 0x52, 0x43, 0x56, - 0x44, 0}; -static const char syn_sent[] = /* "SYN-SENT",*/ -{0x53, 0x59, 0x4e, 0x2d, 0x53, 0x45, 0x4e, - 0x54, 0}; -static const char established[] = /* "ESTABLISHED",*/ -{0x45, 0x53, 0x54, 0x41, 0x42, 0x4c, 0x49, 0x53, 0x48, - 0x45, 0x44, 0}; -static const char fin_wait_1[] = /* "FIN-WAIT-1",*/ -{0x46, 0x49, 0x4e, 0x2d, 0x57, 0x41, 0x49, - 0x54, 0x2d, 0x31, 0}; -static const char fin_wait_2[] = /* "FIN-WAIT-2",*/ -{0x46, 0x49, 0x4e, 0x2d, 0x57, 0x41, 0x49, - 0x54, 0x2d, 0x32, 0}; -static const char closing[] = /* "CLOSING",*/ -{0x43, 0x4c, 0x4f, 0x53, 0x49, - 0x4e, 0x47, 0}; -static const char time_wait[] = /* "TIME-WAIT,"*/ -{0x54, 0x49, 0x4d, 0x45, 0x2d, 0x57, 0x41, - 0x49, 0x54, 0}; -static const char last_ack[] = /* "LAST-ACK"*/ -{0x4c, 0x41, 0x53, 0x54, 0x2d, 0x41, 0x43, - 0x4b, 0}; - -static const char *states[] = { - closed, - syn_rcvd, - syn_sent, - established, - fin_wait_1, - fin_wait_2, - closing, - time_wait, - last_ack}; - - -static unsigned short -generate_tcp_stats(void *arg) -{ - struct uip_conn *conn; - struct httpd_state *s = (struct httpd_state *)arg; - - conn = &uip_conns[s->count]; - return snprintf((char *)uip_appdata, UIP_APPDATA_SIZE, - "
\r\n", - htons(conn->lport), - htons(conn->ripaddr[0]) >> 8, - htons(conn->ripaddr[0]) & 0xff, - htons(conn->ripaddr[1]) >> 8, - htons(conn->ripaddr[1]) & 0xff, - htons(conn->rport), - states[conn->tcpstateflags & UIP_TS_MASK], - conn->nrtx, - conn->timer, - (uip_outstanding(conn))? '*':' ', - (uip_stopped(conn))? '!':' '); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(tcp_stats(struct httpd_state *s, char *ptr)) -{ - - PSOCK_BEGIN(&s->sout); - ( void ) ptr; - for(s->count = 0; s->count < UIP_CONNS; ++s->count) { - if((uip_conns[s->count].tcpstateflags & UIP_TS_MASK) != UIP_CLOSED) { - PSOCK_GENERATOR_SEND(&s->sout, generate_tcp_stats, s); - } - } - - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -static unsigned short -generate_net_stats(void *arg) -{ - struct httpd_state *s = (struct httpd_state *)arg; - return snprintf((char *)uip_appdata, UIP_APPDATA_SIZE, - "%5u\n", ((uip_stats_t *)&uip_stat)[s->count]); -} - -static -PT_THREAD(net_stats(struct httpd_state *s, char *ptr)) -{ - PSOCK_BEGIN(&s->sout); - - ( void ) ptr; -#if UIP_STATISTICS - - for(s->count = 0; s->count < sizeof(uip_stat) / sizeof(uip_stats_t); - ++s->count) { - PSOCK_GENERATOR_SEND(&s->sout, generate_net_stats, s); - } - -#endif /* UIP_STATISTICS */ - - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ - -extern void vTaskList( char *pcWriteBuffer ); -static char cCountBuf[ 32 ]; -long lRefreshCount = 0; -static unsigned short -generate_rtos_stats(void *arg) -{ - ( void ) arg; - lRefreshCount++; - sprintf( cCountBuf, "


Refresh count = %d", (int)lRefreshCount ); - vTaskList( ( char * ) uip_appdata ); - strcat( uip_appdata, cCountBuf ); - - return strlen( uip_appdata ); -} -/*---------------------------------------------------------------------------*/ - - -static -PT_THREAD(rtos_stats(struct httpd_state *s, char *ptr)) -{ - PSOCK_BEGIN(&s->sout); - ( void ) ptr; - PSOCK_GENERATOR_SEND(&s->sout, generate_rtos_stats, NULL); - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ - -char *pcStatus; -unsigned long ulString; -extern portBASE_TYPE xGetLEDState( unsigned portBASE_TYPE uxLED ); -static unsigned short generate_io_state( void *arg ) -{ - ( void ) arg; - - if( xGetLEDState( 3 ) == 0 ) - { - pcStatus = ""; - } - else - { - pcStatus = "checked"; - } - - sprintf( uip_appdata, - "LED 4"\ - "

"\ - "", - pcStatus ); - - return strlen( uip_appdata ); -} -/*---------------------------------------------------------------------------*/ - -extern void vTaskGetRunTimeStats( char *pcWriteBuffer ); -static unsigned short -generate_runtime_stats(void *arg) -{ - ( void ) arg; - lRefreshCount++; - sprintf( cCountBuf, "


Refresh count = %d", (int)lRefreshCount ); - vTaskGetRunTimeStats( ( char * ) uip_appdata ); - strcat( uip_appdata, cCountBuf ); - - return strlen( uip_appdata ); -} -/*---------------------------------------------------------------------------*/ - - -static -PT_THREAD(run_time(struct httpd_state *s, char *ptr)) -{ - PSOCK_BEGIN(&s->sout); - ( void ) ptr; - PSOCK_GENERATOR_SEND(&s->sout, generate_runtime_stats, NULL); - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ - - -static PT_THREAD(led_io(struct httpd_state *s, char *ptr)) -{ - PSOCK_BEGIN(&s->sout); - ( void ) ptr; - PSOCK_GENERATOR_SEND(&s->sout, generate_io_state, NULL); - PSOCK_END(&s->sout); -} - -/** @} */ - - - - - - diff --git a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/httpd-cgi.h b/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/httpd-cgi.h deleted file mode 100644 index 7ae928321..000000000 --- a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/httpd-cgi.h +++ /dev/null @@ -1,84 +0,0 @@ -/** - * \addtogroup httpd - * @{ - */ - -/** - * \file - * Web server script interface header file - * \author - * Adam Dunkels - * - */ - - - -/* - * Copyright (c) 2001, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: httpd-cgi.h,v 1.2 2006/06/11 21:46:38 adam Exp $ - * - */ - -#ifndef __HTTPD_CGI_H__ -#define __HTTPD_CGI_H__ - -#include "psock.h" -#include "httpd.h" - -typedef PT_THREAD((* httpd_cgifunction)(struct httpd_state *, char *)); - -httpd_cgifunction httpd_cgi(char *name); - -struct httpd_cgi_call { - const char *name; - const httpd_cgifunction function; -}; - -/** - * \brief HTTPD CGI function declaration - * \param name The C variable name of the function - * \param str The string name of the function, used in the script file - * \param function A pointer to the function that implements it - * - * This macro is used for declaring a HTTPD CGI - * function. This function is then added to the list of - * HTTPD CGI functions with the httpd_cgi_add() function. - * - * \hideinitializer - */ -#define HTTPD_CGI_CALL(name, str, function) \ -static PT_THREAD(function(struct httpd_state *, char *)); \ -static const struct httpd_cgi_call name = {str, function} - -void httpd_cgi_init(void); -#endif /* __HTTPD_CGI_H__ */ - -/** @} */ diff --git a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/httpd-fs.c b/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/httpd-fs.c deleted file mode 100644 index dc4aef011..000000000 --- a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/httpd-fs.c +++ /dev/null @@ -1,132 +0,0 @@ -/* - * Copyright (c) 2001, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - * $Id: httpd-fs.c,v 1.1 2006/06/07 09:13:08 adam Exp $ - */ - -#include "httpd.h" -#include "httpd-fs.h" -#include "httpd-fsdata.h" - -#ifndef NULL -#define NULL 0 -#endif /* NULL */ - -#include "httpd-fsdata.c" - -#if HTTPD_FS_STATISTICS -static u16_t count[HTTPD_FS_NUMFILES]; -#endif /* HTTPD_FS_STATISTICS */ - -/*-----------------------------------------------------------------------------------*/ -static u8_t -httpd_fs_strcmp(const char *str1, const char *str2) -{ - u8_t i; - i = 0; - loop: - - if(str2[i] == 0 || - str1[i] == '\r' || - str1[i] == '\n') { - return 0; - } - - if(str1[i] != str2[i]) { - return 1; - } - - - ++i; - goto loop; -} -/*-----------------------------------------------------------------------------------*/ -int -httpd_fs_open(const char *name, struct httpd_fs_file *file) -{ -#if HTTPD_FS_STATISTICS - u16_t i = 0; -#endif /* HTTPD_FS_STATISTICS */ - struct httpd_fsdata_file_noconst *f; - - for(f = (struct httpd_fsdata_file_noconst *)HTTPD_FS_ROOT; - f != NULL; - f = (struct httpd_fsdata_file_noconst *)f->next) { - - if(httpd_fs_strcmp(name, f->name) == 0) { - file->data = f->data; - file->len = f->len; -#if HTTPD_FS_STATISTICS - ++count[i]; -#endif /* HTTPD_FS_STATISTICS */ - return 1; - } -#if HTTPD_FS_STATISTICS - ++i; -#endif /* HTTPD_FS_STATISTICS */ - - } - return 0; -} -/*-----------------------------------------------------------------------------------*/ -void -httpd_fs_init(void) -{ -#if HTTPD_FS_STATISTICS - u16_t i; - for(i = 0; i < HTTPD_FS_NUMFILES; i++) { - count[i] = 0; - } -#endif /* HTTPD_FS_STATISTICS */ -} -/*-----------------------------------------------------------------------------------*/ -#if HTTPD_FS_STATISTICS -u16_t httpd_fs_count -(char *name) -{ - struct httpd_fsdata_file_noconst *f; - u16_t i; - - i = 0; - for(f = (struct httpd_fsdata_file_noconst *)HTTPD_FS_ROOT; - f != NULL; - f = (struct httpd_fsdata_file_noconst *)f->next) { - - if(httpd_fs_strcmp(name, f->name) == 0) { - return count[i]; - } - ++i; - } - return 0; -} -#endif /* HTTPD_FS_STATISTICS */ -/*-----------------------------------------------------------------------------------*/ diff --git a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/httpd-fs.h b/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/httpd-fs.h deleted file mode 100644 index b594eea56..000000000 --- a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/httpd-fs.h +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright (c) 2001, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - * $Id: httpd-fs.h,v 1.1 2006/06/07 09:13:08 adam Exp $ - */ -#ifndef __HTTPD_FS_H__ -#define __HTTPD_FS_H__ - -#define HTTPD_FS_STATISTICS 1 - -struct httpd_fs_file { - char *data; - int len; -}; - -/* file must be allocated by caller and will be filled in - by the function. */ -int httpd_fs_open(const char *name, struct httpd_fs_file *file); - -#ifdef HTTPD_FS_STATISTICS -#if HTTPD_FS_STATISTICS == 1 -u16_t httpd_fs_count(char *name); -#endif /* HTTPD_FS_STATISTICS */ -#endif /* HTTPD_FS_STATISTICS */ - -void httpd_fs_init(void); - -#endif /* __HTTPD_FS_H__ */ diff --git a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/httpd-fs/404.html b/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/httpd-fs/404.html deleted file mode 100644 index 43e7f4cad..000000000 --- a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/httpd-fs/404.html +++ /dev/null @@ -1,8 +0,0 @@ - - -

-

404 - file not found

-

Go here instead.

-
- - \ No newline at end of file diff --git a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/httpd-fs/index.html b/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/httpd-fs/index.html deleted file mode 100644 index 4937dc69a..000000000 --- a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/httpd-fs/index.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Loading index.shtml. Click here if not automatically redirected. - - - - - diff --git a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/httpd-fs/index.shtml b/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/httpd-fs/index.shtml deleted file mode 100644 index 29d242c05..000000000 --- a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/httpd-fs/index.shtml +++ /dev/null @@ -1,20 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS.org Homepage | IO -

-


-

-

Task statistics

-Page will refresh every 2 seconds.

-

Task          State  Priority  Stack	#
************************************************
-%! rtos-stats -
-
- - - diff --git a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/httpd-fs/io.shtml b/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/httpd-fs/io.shtml deleted file mode 100644 index fd0697d2a..000000000 --- a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/httpd-fs/io.shtml +++ /dev/null @@ -1,28 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS.org Homepage | IO -

-


-LED and LCD IO
- -

- -Use the check box to turn on or off the LED, enter text to display on the OLED display, then click "Update IO". - - -

-
-%! led-io -

- - -

- - - - diff --git a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/httpd-fs/runtime.shtml b/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/httpd-fs/runtime.shtml deleted file mode 100644 index 67cae4657..000000000 --- a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/httpd-fs/runtime.shtml +++ /dev/null @@ -1,20 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS.org Homepage | IO -

-


-

-

Run-time statistics

-Page will refresh every 2 seconds.

-

Task            Abs Time      % Time
****************************************
-%! run-time -
-
- - - diff --git a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/httpd-fs/stats.shtml b/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/httpd-fs/stats.shtml deleted file mode 100644 index d95a69340..000000000 --- a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/httpd-fs/stats.shtml +++ /dev/null @@ -1,41 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS.org Homepage | IO -

-


-

-

Network statistics

-
LocalRemoteStateRetransmissionsTimerFlags
%d%u.%u.%u.%u:%u%s%u%u%c %c
-
-IP           Packets dropped
-             Packets received
-             Packets sent
-IP errors    IP version/header length
-             IP length, high byte
-             IP length, low byte
-             IP fragments
-             Header checksum
-             Wrong protocol
-ICMP	     Packets dropped
-             Packets received
-             Packets sent
-             Type errors
-TCP          Packets dropped
-             Packets received
-             Packets sent
-             Checksum errors
-             Data packets without ACKs
-             Resets
-             Retransmissions
-	     No connection avaliable
-	     Connection attempts to closed ports
-
%! net-stats
-
- - - diff --git a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/httpd-fs/tcp.shtml b/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/httpd-fs/tcp.shtml deleted file mode 100644 index 41053679d..000000000 --- a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/httpd-fs/tcp.shtml +++ /dev/null @@ -1,21 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS.org Homepage | IO -

-


-
-

Network connections

-

- - -%! tcp-connections - - - - - diff --git a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/httpd-fsdata.c b/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/httpd-fsdata.c deleted file mode 100644 index c8b2a8026..000000000 --- a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/httpd-fsdata.c +++ /dev/null @@ -1,557 +0,0 @@ -static const char data_404_html[] = { - /* /404.html */ - 0x2f, 0x34, 0x30, 0x34, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, 0x20, 0x20, 0x3c, - 0x62, 0x6f, 0x64, 0x79, 0x20, 0x62, 0x67, 0x63, 0x6f, 0x6c, - 0x6f, 0x72, 0x3d, 0x22, 0x77, 0x68, 0x69, 0x74, 0x65, 0x22, - 0x3e, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x63, 0x65, 0x6e, - 0x74, 0x65, 0x72, 0x3e, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x3c, 0x68, 0x31, 0x3e, 0x34, 0x30, 0x34, 0x20, 0x2d, - 0x20, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x6e, 0x6f, 0x74, 0x20, - 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x3c, 0x2f, 0x68, 0x31, 0x3e, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x68, 0x33, - 0x3e, 0x47, 0x6f, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, - 0x66, 0x3d, 0x22, 0x2f, 0x22, 0x3e, 0x68, 0x65, 0x72, 0x65, - 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x65, - 0x61, 0x64, 0x2e, 0x3c, 0x2f, 0x68, 0x33, 0x3e, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x3c, 0x2f, 0x63, 0x65, 0x6e, 0x74, 0x65, - 0x72, 0x3e, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x62, 0x6f, 0x64, - 0x79, 0x3e, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, -0}; - -static const char data_index_html[] = { - /* /index.html */ - 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, - 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, - 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, 0x57, 0x45, 0x42, - 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x64, 0x65, - 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x42, 0x4f, 0x44, 0x59, 0x20, 0x6f, - 0x6e, 0x4c, 0x6f, 0x61, 0x64, 0x3d, 0x22, 0x77, 0x69, 0x6e, - 0x64, 0x6f, 0x77, 0x2e, 0x73, 0x65, 0x74, 0x54, 0x69, 0x6d, - 0x65, 0x6f, 0x75, 0x74, 0x28, 0x26, 0x71, 0x75, 0x6f, 0x74, - 0x3b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x27, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x27, 0x26, 0x71, - 0x75, 0x6f, 0x74, 0x3b, 0x2c, 0x31, 0x30, 0x30, 0x29, 0x22, - 0x3e, 0xa, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, - 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, - 0x3e, 0xa, 0x4c, 0x6f, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x20, - 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, - 0x6c, 0x2e, 0x20, 0x20, 0x43, 0x6c, 0x69, 0x63, 0x6b, 0x20, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x68, 0x65, 0x72, 0x65, 0x3c, 0x2f, 0x61, 0x3e, - 0x20, 0x69, 0x66, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x61, 0x75, - 0x74, 0x6f, 0x6d, 0x61, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x6c, - 0x79, 0x20, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, - 0x65, 0x64, 0x2e, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, - 0x3e, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xa, - 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xa, 0x3c, 0x2f, - 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, 0xa, 0}; - -static const char data_index_shtml[] = { - /* /index.shtml */ - 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, - 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, - 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, 0x57, 0x45, 0x42, - 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x64, 0x65, - 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x42, 0x4f, 0x44, 0x59, 0x20, 0x6f, - 0x6e, 0x4c, 0x6f, 0x61, 0x64, 0x3d, 0x22, 0x77, 0x69, 0x6e, - 0x64, 0x6f, 0x77, 0x2e, 0x73, 0x65, 0x74, 0x54, 0x69, 0x6d, - 0x65, 0x6f, 0x75, 0x74, 0x28, 0x26, 0x71, 0x75, 0x6f, 0x74, - 0x3b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x27, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x27, 0x26, 0x71, - 0x75, 0x6f, 0x74, 0x3b, 0x2c, 0x32, 0x30, 0x30, 0x30, 0x29, - 0x22, 0x3e, 0xa, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, - 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, - 0x22, 0x3e, 0xa, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, - 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, - 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, - 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, - 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x72, 0x75, - 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, - 0x6c, 0x22, 0x3e, 0x52, 0x75, 0x6e, 0x20, 0x54, 0x69, 0x6d, - 0x65, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, - 0x6c, 0x22, 0x3e, 0x54, 0x43, 0x50, 0x20, 0x53, 0x74, 0x61, - 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, 0x63, 0x70, 0x2e, 0x73, - 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, - 0x2e, 0x66, 0x72, 0x65, 0x65, 0x72, 0x74, 0x6f, 0x73, 0x2e, - 0x6f, 0x72, 0x67, 0x2f, 0x22, 0x3e, 0x46, 0x72, 0x65, 0x65, - 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x48, - 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0xa, 0x3c, 0x62, 0x72, - 0x3e, 0x3c, 0x70, 0x3e, 0xa, 0x3c, 0x68, 0x72, 0x3e, 0xa, - 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xa, 0x3c, 0x68, - 0x32, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x73, 0x74, 0x61, - 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x3c, 0x2f, 0x68, - 0x32, 0x3e, 0xa, 0x50, 0x61, 0x67, 0x65, 0x20, 0x77, 0x69, - 0x6c, 0x6c, 0x20, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, - 0x20, 0x65, 0x76, 0x65, 0x72, 0x79, 0x20, 0x32, 0x20, 0x73, - 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x2e, 0x3c, 0x70, 0x3e, - 0xa, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, - 0x65, 0x3d, 0x22, 0x63, 0x6f, 0x75, 0x72, 0x69, 0x65, 0x72, - 0x22, 0x3e, 0x3c, 0x70, 0x72, 0x65, 0x3e, 0x54, 0x61, 0x73, - 0x6b, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x53, 0x74, 0x61, 0x74, 0x65, 0x20, 0x20, 0x50, 0x72, - 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x20, 0x20, 0x53, 0x74, - 0x61, 0x63, 0x6b, 0x9, 0x23, 0x3c, 0x62, 0x72, 0x3e, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x3c, 0x62, 0x72, - 0x3e, 0xa, 0x25, 0x21, 0x20, 0x72, 0x74, 0x6f, 0x73, 0x2d, - 0x73, 0x74, 0x61, 0x74, 0x73, 0xa, 0x3c, 0x2f, 0x70, 0x72, - 0x65, 0x3e, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xa, - 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xa, 0x3c, 0x2f, - 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xa, 0x3c, 0x2f, 0x68, 0x74, - 0x6d, 0x6c, 0x3e, 0xa, 0xa, 0}; - -static const char data_io_shtml[] = { - /* /io.shtml */ - 0x2f, 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, - 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, - 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, 0x57, 0x45, 0x42, - 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x64, 0x65, - 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x42, 0x4f, 0x44, 0x59, 0x3e, 0xa, - 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, - 0x3d, 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xa, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x53, 0x74, 0x61, - 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x72, 0x75, 0x6e, 0x74, 0x69, - 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x52, 0x75, 0x6e, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, - 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, - 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x54, 0x43, 0x50, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, - 0x6c, 0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, - 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, - 0x65, 0x65, 0x72, 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, - 0x2f, 0x22, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x48, 0x6f, 0x6d, 0x65, - 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6f, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x49, 0x4f, 0x3c, - 0x2f, 0x61, 0x3e, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, - 0x3e, 0xa, 0x3c, 0x68, 0x72, 0x3e, 0xa, 0x3c, 0x62, 0x3e, - 0x4c, 0x45, 0x44, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x4c, 0x43, - 0x44, 0x20, 0x49, 0x4f, 0x3c, 0x2f, 0x62, 0x3e, 0x3c, 0x62, - 0x72, 0x3e, 0xa, 0xa, 0x3c, 0x70, 0x3e, 0xa, 0xa, 0x55, - 0x73, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x68, 0x65, - 0x63, 0x6b, 0x20, 0x62, 0x6f, 0x78, 0x20, 0x74, 0x6f, 0x20, - 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6f, 0x6e, 0x20, 0x6f, 0x72, - 0x20, 0x6f, 0x66, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x4c, - 0x45, 0x44, 0x2c, 0x20, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x20, - 0x74, 0x65, 0x78, 0x74, 0x20, 0x74, 0x6f, 0x20, 0x64, 0x69, - 0x73, 0x70, 0x6c, 0x61, 0x79, 0x20, 0x6f, 0x6e, 0x20, 0x74, - 0x68, 0x65, 0x20, 0x4f, 0x4c, 0x45, 0x44, 0x20, 0x64, 0x69, - 0x73, 0x70, 0x6c, 0x61, 0x79, 0x2c, 0x20, 0x74, 0x68, 0x65, - 0x6e, 0x20, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x20, 0x22, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x49, 0x4f, 0x22, 0x2e, - 0xa, 0xa, 0xa, 0x3c, 0x70, 0x3e, 0xa, 0x3c, 0x66, 0x6f, - 0x72, 0x6d, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x22, 0x61, - 0x46, 0x6f, 0x72, 0x6d, 0x22, 0x20, 0x61, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x3d, 0x22, 0x2f, 0x69, 0x6f, 0x2e, 0x73, 0x68, - 0x74, 0x6d, 0x6c, 0x22, 0x20, 0x6d, 0x65, 0x74, 0x68, 0x6f, - 0x64, 0x3d, 0x22, 0x67, 0x65, 0x74, 0x22, 0x3e, 0xa, 0x25, - 0x21, 0x20, 0x6c, 0x65, 0x64, 0x2d, 0x69, 0x6f, 0xa, 0x3c, - 0x70, 0x3e, 0xa, 0x3c, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x20, - 0x74, 0x79, 0x70, 0x65, 0x3d, 0x22, 0x73, 0x75, 0x62, 0x6d, - 0x69, 0x74, 0x22, 0x20, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3d, - 0x22, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x49, 0x4f, - 0x22, 0x3e, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x72, 0x6d, 0x3e, - 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xa, 0x3c, - 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xa, 0x3c, 0x2f, 0x62, - 0x6f, 0x64, 0x79, 0x3e, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, - 0x6c, 0x3e, 0xa, 0xa, 0}; - -static const char data_runtime_shtml[] = { - /* /runtime.shtml */ - 0x2f, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, - 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, - 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, 0x57, 0x45, 0x42, - 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x64, 0x65, - 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x42, 0x4f, 0x44, 0x59, 0x20, 0x6f, - 0x6e, 0x4c, 0x6f, 0x61, 0x64, 0x3d, 0x22, 0x77, 0x69, 0x6e, - 0x64, 0x6f, 0x77, 0x2e, 0x73, 0x65, 0x74, 0x54, 0x69, 0x6d, - 0x65, 0x6f, 0x75, 0x74, 0x28, 0x26, 0x71, 0x75, 0x6f, 0x74, - 0x3b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x27, 0x72, 0x75, 0x6e, 0x74, - 0x69, 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x27, - 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x2c, 0x32, 0x30, 0x30, - 0x30, 0x29, 0x22, 0x3e, 0xa, 0x3c, 0x66, 0x6f, 0x6e, 0x74, - 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, 0x69, - 0x61, 0x6c, 0x22, 0x3e, 0xa, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x61, 0x73, - 0x6b, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x73, 0x68, - 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x52, 0x75, 0x6e, 0x20, 0x54, - 0x69, 0x6d, 0x65, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, - 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x43, 0x50, 0x20, 0x53, - 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, 0x63, 0x70, - 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x43, 0x6f, - 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, - 0x77, 0x77, 0x2e, 0x66, 0x72, 0x65, 0x65, 0x72, 0x74, 0x6f, - 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x22, 0x3e, 0x46, 0x72, - 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, 0x72, 0x67, - 0x20, 0x48, 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0xa, 0x3c, - 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xa, 0x3c, 0x68, 0x72, - 0x3e, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xa, - 0x3c, 0x68, 0x32, 0x3e, 0x52, 0x75, 0x6e, 0x2d, 0x74, 0x69, - 0x6d, 0x65, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, - 0x69, 0x63, 0x73, 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0xa, 0x50, - 0x61, 0x67, 0x65, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x72, - 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x20, 0x65, 0x76, 0x65, - 0x72, 0x79, 0x20, 0x32, 0x20, 0x73, 0x65, 0x63, 0x6f, 0x6e, - 0x64, 0x73, 0x2e, 0x3c, 0x70, 0x3e, 0xa, 0x3c, 0x66, 0x6f, - 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x63, - 0x6f, 0x75, 0x72, 0x69, 0x65, 0x72, 0x22, 0x3e, 0x3c, 0x70, - 0x72, 0x65, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x41, - 0x62, 0x73, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x25, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x3c, - 0x62, 0x72, 0x3e, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x3c, 0x62, 0x72, 0x3e, 0xa, 0x25, 0x21, - 0x20, 0x72, 0x75, 0x6e, 0x2d, 0x74, 0x69, 0x6d, 0x65, 0xa, - 0x3c, 0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, 0x6f, - 0x6e, 0x74, 0x3e, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, - 0x3e, 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xa, - 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, 0xa, 0}; - -static const char data_stats_shtml[] = { - /* /stats.shtml */ - 0x2f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, - 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, - 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, 0x57, 0x45, 0x42, - 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x64, 0x65, - 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x42, 0x4f, 0x44, 0x59, 0x3e, 0xa, - 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, - 0x3d, 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xa, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x53, 0x74, 0x61, - 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x72, 0x75, 0x6e, 0x74, 0x69, - 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x52, 0x75, 0x6e, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, - 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, - 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x54, 0x43, 0x50, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, - 0x6c, 0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, - 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, - 0x65, 0x65, 0x72, 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, - 0x2f, 0x22, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x48, 0x6f, 0x6d, 0x65, - 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6f, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x49, 0x4f, 0x3c, - 0x2f, 0x61, 0x3e, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, - 0x3e, 0xa, 0x3c, 0x68, 0x72, 0x3e, 0xa, 0x3c, 0x62, 0x72, - 0x3e, 0x3c, 0x70, 0x3e, 0xa, 0x3c, 0x68, 0x32, 0x3e, 0x4e, - 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x20, 0x73, 0x74, 0x61, - 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x3c, 0x2f, 0x68, - 0x32, 0x3e, 0xa, 0x3c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, - 0x77, 0x69, 0x64, 0x74, 0x68, 0x3d, 0x22, 0x33, 0x30, 0x30, - 0x22, 0x20, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x3d, 0x22, - 0x30, 0x22, 0x3e, 0xa, 0x3c, 0x74, 0x72, 0x3e, 0x3c, 0x74, - 0x64, 0x20, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x3d, 0x22, 0x6c, - 0x65, 0x66, 0x74, 0x22, 0x3e, 0x3c, 0x66, 0x6f, 0x6e, 0x74, - 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x63, 0x6f, 0x75, - 0x72, 0x69, 0x65, 0x72, 0x22, 0x3e, 0x3c, 0x70, 0x72, 0x65, - 0x3e, 0xa, 0x49, 0x50, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, - 0x74, 0x73, 0x20, 0x64, 0x72, 0x6f, 0x70, 0x70, 0x65, 0x64, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x73, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, 0xa, 0x49, 0x50, 0x20, - 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x20, 0x20, 0x20, 0x20, - 0x49, 0x50, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x2f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, 0x6c, 0x65, - 0x6e, 0x67, 0x74, 0x68, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x49, 0x50, - 0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x2c, 0x20, 0x68, - 0x69, 0x67, 0x68, 0x20, 0x62, 0x79, 0x74, 0x65, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x49, 0x50, 0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, - 0x68, 0x2c, 0x20, 0x6c, 0x6f, 0x77, 0x20, 0x62, 0x79, 0x74, - 0x65, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x49, 0x50, 0x20, 0x66, 0x72, - 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, 0x63, 0x68, - 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0xa, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x57, 0x72, 0x6f, 0x6e, 0x67, 0x20, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x63, 0x6f, 0x6c, 0xa, 0x49, 0x43, 0x4d, 0x50, 0x9, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, - 0x74, 0x73, 0x20, 0x64, 0x72, 0x6f, 0x70, 0x70, 0x65, 0x64, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x73, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, 0xa, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x54, 0x79, 0x70, 0x65, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, - 0x73, 0xa, 0x54, 0x43, 0x50, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, - 0x74, 0x73, 0x20, 0x64, 0x72, 0x6f, 0x70, 0x70, 0x65, 0x64, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x73, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, 0xa, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x20, 0x65, - 0x72, 0x72, 0x6f, 0x72, 0x73, 0xa, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x44, - 0x61, 0x74, 0x61, 0x20, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x73, 0x20, 0x77, 0x69, 0x74, 0x68, 0x6f, 0x75, 0x74, 0x20, - 0x41, 0x43, 0x4b, 0x73, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x52, 0x65, - 0x73, 0x65, 0x74, 0x73, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x52, 0x65, - 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x73, 0x73, 0x69, - 0x6f, 0x6e, 0x73, 0xa, 0x9, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x4e, 0x6f, 0x20, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x20, 0x61, 0x76, 0x61, 0x6c, 0x69, 0x61, - 0x62, 0x6c, 0x65, 0xa, 0x9, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x20, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x73, 0x20, - 0x74, 0x6f, 0x20, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x64, 0x20, - 0x70, 0x6f, 0x72, 0x74, 0x73, 0xa, 0x3c, 0x2f, 0x70, 0x72, - 0x65, 0x3e, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0x3c, - 0x2f, 0x74, 0x64, 0x3e, 0x3c, 0x74, 0x64, 0x3e, 0x3c, 0x70, - 0x72, 0x65, 0x3e, 0x25, 0x21, 0x20, 0x6e, 0x65, 0x74, 0x2d, - 0x73, 0x74, 0x61, 0x74, 0x73, 0xa, 0x3c, 0x2f, 0x70, 0x72, - 0x65, 0x3e, 0x3c, 0x2f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x3e, - 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xa, 0x3c, - 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xa, 0x3c, 0x2f, 0x68, - 0x74, 0x6d, 0x6c, 0x3e, 0xa, 0}; - -static const char data_tcp_shtml[] = { - /* /tcp.shtml */ - 0x2f, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, - 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, - 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, 0x57, 0x45, 0x42, - 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x64, 0x65, - 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x42, 0x4f, 0x44, 0x59, 0x3e, 0xa, - 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, - 0x3d, 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xa, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x53, 0x74, 0x61, - 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x72, 0x75, 0x6e, 0x74, 0x69, - 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x52, 0x75, 0x6e, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, - 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, - 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x54, 0x43, 0x50, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, - 0x6c, 0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, - 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, - 0x65, 0x65, 0x72, 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, - 0x2f, 0x22, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x48, 0x6f, 0x6d, 0x65, - 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6f, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x49, 0x4f, 0x3c, - 0x2f, 0x61, 0x3e, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, - 0x3e, 0xa, 0x3c, 0x68, 0x72, 0x3e, 0xa, 0x3c, 0x62, 0x72, - 0x3e, 0xa, 0x3c, 0x68, 0x32, 0x3e, 0x4e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x20, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x68, 0x32, 0x3e, - 0xa, 0x3c, 0x70, 0x3e, 0xa, 0x3c, 0x74, 0x61, 0x62, 0x6c, - 0x65, 0x3e, 0xa, 0x3c, 0x74, 0x72, 0x3e, 0x3c, 0x74, 0x68, - 0x3e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x3c, 0x2f, 0x74, 0x68, - 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x52, 0x65, 0x6d, 0x6f, 0x74, - 0x65, 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, - 0x53, 0x74, 0x61, 0x74, 0x65, 0x3c, 0x2f, 0x74, 0x68, 0x3e, - 0x3c, 0x74, 0x68, 0x3e, 0x52, 0x65, 0x74, 0x72, 0x61, 0x6e, - 0x73, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x3c, - 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x54, 0x69, - 0x6d, 0x65, 0x72, 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, - 0x68, 0x3e, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x3c, 0x2f, 0x74, - 0x68, 0x3e, 0x3c, 0x2f, 0x74, 0x72, 0x3e, 0xa, 0x25, 0x21, - 0x20, 0x74, 0x63, 0x70, 0x2d, 0x63, 0x6f, 0x6e, 0x6e, 0x65, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0xa, 0x3c, 0x2f, 0x70, - 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, - 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xa, 0x3c, - 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xa, 0x3c, 0x2f, 0x68, - 0x74, 0x6d, 0x6c, 0x3e, 0xa, 0xa, 0}; - -const struct httpd_fsdata_file file_404_html[] = {{NULL, data_404_html, data_404_html + 10, sizeof(data_404_html) - 10, 0}}; - -const struct httpd_fsdata_file file_index_html[] = {{file_404_html, data_index_html, data_index_html + 12, sizeof(data_index_html) - 12, 0}}; - -const struct httpd_fsdata_file file_index_shtml[] = {{file_index_html, data_index_shtml, data_index_shtml + 13, sizeof(data_index_shtml) - 13, 0}}; - -const struct httpd_fsdata_file file_io_shtml[] = {{file_index_shtml, data_io_shtml, data_io_shtml + 10, sizeof(data_io_shtml) - 10, 0}}; - -const struct httpd_fsdata_file file_runtime_shtml[] = {{file_io_shtml, data_runtime_shtml, data_runtime_shtml + 15, sizeof(data_runtime_shtml) - 15, 0}}; - -const struct httpd_fsdata_file file_stats_shtml[] = {{file_runtime_shtml, data_stats_shtml, data_stats_shtml + 13, sizeof(data_stats_shtml) - 13, 0}}; - -const struct httpd_fsdata_file file_tcp_shtml[] = {{file_stats_shtml, data_tcp_shtml, data_tcp_shtml + 11, sizeof(data_tcp_shtml) - 11, 0}}; - -#define HTTPD_FS_ROOT file_tcp_shtml - -#define HTTPD_FS_NUMFILES 7 diff --git a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/httpd-fsdata.h b/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/httpd-fsdata.h deleted file mode 100644 index 52d35c265..000000000 --- a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/httpd-fsdata.h +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright (c) 2001, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - * $Id: httpd-fsdata.h,v 1.1 2006/06/07 09:13:08 adam Exp $ - */ -#ifndef __HTTPD_FSDATA_H__ -#define __HTTPD_FSDATA_H__ - -#include "uip.h" - -struct httpd_fsdata_file { - const struct httpd_fsdata_file *next; - const char *name; - const char *data; - const int len; -#ifdef HTTPD_FS_STATISTICS -#if HTTPD_FS_STATISTICS == 1 - u16_t count; -#endif /* HTTPD_FS_STATISTICS */ -#endif /* HTTPD_FS_STATISTICS */ -}; - -struct httpd_fsdata_file_noconst { - struct httpd_fsdata_file *next; - char *name; - char *data; - int len; -#ifdef HTTPD_FS_STATISTICS -#if HTTPD_FS_STATISTICS == 1 - u16_t count; -#endif /* HTTPD_FS_STATISTICS */ -#endif /* HTTPD_FS_STATISTICS */ -}; - -#endif /* __HTTPD_FSDATA_H__ */ diff --git a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/httpd.c b/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/httpd.c deleted file mode 100644 index c416cc1c8..000000000 --- a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/httpd.c +++ /dev/null @@ -1,346 +0,0 @@ -/** - * \addtogroup apps - * @{ - */ - -/** - * \defgroup httpd Web server - * @{ - * The uIP web server is a very simplistic implementation of an HTTP - * server. It can serve web pages and files from a read-only ROM - * filesystem, and provides a very small scripting language. - - */ - -/** - * \file - * Web server - * \author - * Adam Dunkels - */ - - -/* - * Copyright (c) 2004, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * Author: Adam Dunkels - * - * $Id: httpd.c,v 1.2 2006/06/11 21:46:38 adam Exp $ - */ - -#include "uip.h" -#include "httpd.h" -#include "httpd-fs.h" -#include "httpd-cgi.h" -#include "http-strings.h" - -#include - -#define STATE_WAITING 0 -#define STATE_OUTPUT 1 - -#define ISO_nl 0x0a -#define ISO_space 0x20 -#define ISO_bang 0x21 -#define ISO_percent 0x25 -#define ISO_period 0x2e -#define ISO_slash 0x2f -#define ISO_colon 0x3a - - -/*---------------------------------------------------------------------------*/ -static unsigned short -generate_part_of_file(void *state) -{ - struct httpd_state *s = (struct httpd_state *)state; - - if(s->file.len > uip_mss()) { - s->len = uip_mss(); - } else { - s->len = s->file.len; - } - memcpy(uip_appdata, s->file.data, s->len); - - return s->len; -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(send_file(struct httpd_state *s)) -{ - PSOCK_BEGIN(&s->sout); - - do { - PSOCK_GENERATOR_SEND(&s->sout, generate_part_of_file, s); - s->file.len -= s->len; - s->file.data += s->len; - } while(s->file.len > 0); - - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(send_part_of_file(struct httpd_state *s)) -{ - PSOCK_BEGIN(&s->sout); - - PSOCK_SEND(&s->sout, s->file.data, s->len); - - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -static void -next_scriptstate(struct httpd_state *s) -{ - char *p; - p = strchr(s->scriptptr, ISO_nl) + 1; - s->scriptlen -= (unsigned short)(p - s->scriptptr); - s->scriptptr = p; -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(handle_script(struct httpd_state *s)) -{ - char *ptr; - - PT_BEGIN(&s->scriptpt); - - - while(s->file.len > 0) { - - /* Check if we should start executing a script. */ - if(*s->file.data == ISO_percent && - *(s->file.data + 1) == ISO_bang) { - s->scriptptr = s->file.data + 3; - s->scriptlen = s->file.len - 3; - if(*(s->scriptptr - 1) == ISO_colon) { - httpd_fs_open(s->scriptptr + 1, &s->file); - PT_WAIT_THREAD(&s->scriptpt, send_file(s)); - } else { - PT_WAIT_THREAD(&s->scriptpt, - httpd_cgi(s->scriptptr)(s, s->scriptptr)); - } - next_scriptstate(s); - - /* The script is over, so we reset the pointers and continue - sending the rest of the file. */ - s->file.data = s->scriptptr; - s->file.len = s->scriptlen; - } else { - /* See if we find the start of script marker in the block of HTML - to be sent. */ - - if(s->file.len > uip_mss()) { - s->len = uip_mss(); - } else { - s->len = s->file.len; - } - - if(*s->file.data == ISO_percent) { - ptr = strchr(s->file.data + 1, ISO_percent); - } else { - ptr = strchr(s->file.data, ISO_percent); - } - if(ptr != NULL && - ptr != s->file.data) { - s->len = (int)(ptr - s->file.data); - if(s->len >= uip_mss()) { - s->len = uip_mss(); - } - } - PT_WAIT_THREAD(&s->scriptpt, send_part_of_file(s)); - s->file.data += s->len; - s->file.len -= s->len; - - } - } - - PT_END(&s->scriptpt); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(send_headers(struct httpd_state *s, const char *statushdr)) -{ - char *ptr; - - PSOCK_BEGIN(&s->sout); - - PSOCK_SEND_STR(&s->sout, statushdr); - - ptr = strrchr(s->filename, ISO_period); - if(ptr == NULL) { - PSOCK_SEND_STR(&s->sout, http_content_type_binary); - } else if(strncmp(http_html, ptr, 5) == 0 || - strncmp(http_shtml, ptr, 6) == 0) { - PSOCK_SEND_STR(&s->sout, http_content_type_html); - } else if(strncmp(http_css, ptr, 4) == 0) { - PSOCK_SEND_STR(&s->sout, http_content_type_css); - } else if(strncmp(http_png, ptr, 4) == 0) { - PSOCK_SEND_STR(&s->sout, http_content_type_png); - } else if(strncmp(http_gif, ptr, 4) == 0) { - PSOCK_SEND_STR(&s->sout, http_content_type_gif); - } else if(strncmp(http_jpg, ptr, 4) == 0) { - PSOCK_SEND_STR(&s->sout, http_content_type_jpg); - } else { - PSOCK_SEND_STR(&s->sout, http_content_type_plain); - } - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(handle_output(struct httpd_state *s)) -{ - char *ptr; - - PT_BEGIN(&s->outputpt); - - if(!httpd_fs_open(s->filename, &s->file)) { - httpd_fs_open(http_404_html, &s->file); - strcpy(s->filename, http_404_html); - PT_WAIT_THREAD(&s->outputpt, - send_headers(s, - http_header_404)); - PT_WAIT_THREAD(&s->outputpt, - send_file(s)); - } else { - PT_WAIT_THREAD(&s->outputpt, - send_headers(s, - http_header_200)); - ptr = strchr(s->filename, ISO_period); - if(ptr != NULL && strncmp(ptr, http_shtml, 6) == 0) { - PT_INIT(&s->scriptpt); - PT_WAIT_THREAD(&s->outputpt, handle_script(s)); - } else { - PT_WAIT_THREAD(&s->outputpt, - send_file(s)); - } - } - PSOCK_CLOSE(&s->sout); - PT_END(&s->outputpt); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(handle_input(struct httpd_state *s)) -{ - PSOCK_BEGIN(&s->sin); - - PSOCK_READTO(&s->sin, ISO_space); - - - if(strncmp(s->inputbuf, http_get, 4) != 0) { - PSOCK_CLOSE_EXIT(&s->sin); - } - PSOCK_READTO(&s->sin, ISO_space); - - if(s->inputbuf[0] != ISO_slash) { - PSOCK_CLOSE_EXIT(&s->sin); - } - - if(s->inputbuf[1] == ISO_space) { - strncpy(s->filename, http_index_html, sizeof(s->filename)); - } else { - - s->inputbuf[PSOCK_DATALEN(&s->sin) - 1] = 0; - - /* Process any form input being sent to the server. */ - { - extern void vApplicationProcessFormInput( char *pcInputString ); - vApplicationProcessFormInput( s->inputbuf ); - } - - strncpy(s->filename, &s->inputbuf[0], sizeof(s->filename)); - } - - /* httpd_log_file(uip_conn->ripaddr, s->filename);*/ - - s->state = STATE_OUTPUT; - - while(1) { - PSOCK_READTO(&s->sin, ISO_nl); - - if(strncmp(s->inputbuf, http_referer, 8) == 0) { - s->inputbuf[PSOCK_DATALEN(&s->sin) - 2] = 0; - /* httpd_log(&s->inputbuf[9]);*/ - } - } - - PSOCK_END(&s->sin); -} -/*---------------------------------------------------------------------------*/ -static void -handle_connection(struct httpd_state *s) -{ - handle_input(s); - if(s->state == STATE_OUTPUT) { - handle_output(s); - } -} -/*---------------------------------------------------------------------------*/ -void -httpd_appcall(void) -{ - struct httpd_state *s = (struct httpd_state *)&(uip_conn->appstate); - - if(uip_closed() || uip_aborted() || uip_timedout()) { - } else if(uip_connected()) { - PSOCK_INIT(&s->sin, s->inputbuf, sizeof(s->inputbuf) - 1); - PSOCK_INIT(&s->sout, s->inputbuf, sizeof(s->inputbuf) - 1); - PT_INIT(&s->outputpt); - s->state = STATE_WAITING; - /* timer_set(&s->timer, CLOCK_SECOND * 100);*/ - s->timer = 0; - handle_connection(s); - } else if(s != NULL) { - if(uip_poll()) { - ++s->timer; - if(s->timer >= 20) { - uip_abort(); - } - } else { - s->timer = 0; - } - handle_connection(s); - } else { - uip_abort(); - } -} -/*---------------------------------------------------------------------------*/ -/** - * \brief Initialize the web server - * - * This function initializes the web server and should be - * called at system boot-up. - */ -void -httpd_init(void) -{ - uip_listen(HTONS(80)); -} -/*---------------------------------------------------------------------------*/ -/** @} */ diff --git a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/httpd.h b/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/httpd.h deleted file mode 100644 index 7f7a6666e..000000000 --- a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/httpd.h +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright (c) 2001-2005, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: httpd.h,v 1.2 2006/06/11 21:46:38 adam Exp $ - * - */ - -#ifndef __HTTPD_H__ -#define __HTTPD_H__ - -#include "psock.h" -#include "httpd-fs.h" - -struct httpd_state { - unsigned char timer; - struct psock sin, sout; - struct pt outputpt, scriptpt; - char inputbuf[50]; - char filename[20]; - char state; - struct httpd_fs_file file; - int len; - char *scriptptr; - int scriptlen; - - unsigned short count; -}; - -void httpd_init(void); -void httpd_appcall(void); - -void httpd_log(char *msg); -void httpd_log_file(u16_t *requester, char *file); - -#endif /* __HTTPD_H__ */ diff --git a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/makefsdata b/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/makefsdata deleted file mode 100644 index 8d2715a8a..000000000 --- a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/makefsdata +++ /dev/null @@ -1,78 +0,0 @@ -#!/usr/bin/perl - -open(OUTPUT, "> httpd-fsdata.c"); - -chdir("httpd-fs"); - -opendir(DIR, "."); -@files = grep { !/^\./ && !/(CVS|~)/ } readdir(DIR); -closedir(DIR); - -foreach $file (@files) { - - if(-d $file && $file !~ /^\./) { - print "Processing directory $file\n"; - opendir(DIR, $file); - @newfiles = grep { !/^\./ && !/(CVS|~)/ } readdir(DIR); - closedir(DIR); - printf "Adding files @newfiles\n"; - @files = (@files, map { $_ = "$file/$_" } @newfiles); - next; - } -} - -foreach $file (@files) { - if(-f $file) { - - print "Adding file $file\n"; - - open(FILE, $file) || die "Could not open file $file\n"; - - $file =~ s-^-/-; - $fvar = $file; - $fvar =~ s-/-_-g; - $fvar =~ s-\.-_-g; - # for AVR, add PROGMEM here - print(OUTPUT "static const unsigned char data".$fvar."[] = {\n"); - print(OUTPUT "\t/* $file */\n\t"); - for($j = 0; $j < length($file); $j++) { - printf(OUTPUT "%#02x, ", unpack("C", substr($file, $j, 1))); - } - printf(OUTPUT "0,\n"); - - - $i = 0; - while(read(FILE, $data, 1)) { - if($i == 0) { - print(OUTPUT "\t"); - } - printf(OUTPUT "%#02x, ", unpack("C", $data)); - $i++; - if($i == 10) { - print(OUTPUT "\n"); - $i = 0; - } - } - print(OUTPUT "0};\n\n"); - close(FILE); - push(@fvars, $fvar); - push(@pfiles, $file); - } -} - -for($i = 0; $i < @fvars; $i++) { - $file = $pfiles[$i]; - $fvar = $fvars[$i]; - - if($i == 0) { - $prevfile = "NULL"; - } else { - $prevfile = "file" . $fvars[$i - 1]; - } - print(OUTPUT "const struct httpd_fsdata_file file".$fvar."[] = {{$prevfile, data$fvar, "); - print(OUTPUT "data$fvar + ". (length($file) + 1) .", "); - print(OUTPUT "sizeof(data$fvar) - ". (length($file) + 1) ."}};\n\n"); -} - -print(OUTPUT "#define HTTPD_FS_ROOT file$fvars[$i - 1]\n\n"); -print(OUTPUT "#define HTTPD_FS_NUMFILES $i\n"); diff --git a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/makestrings b/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/makestrings deleted file mode 100644 index 8a13c6d29..000000000 --- a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/makestrings +++ /dev/null @@ -1,40 +0,0 @@ -#!/usr/bin/perl - - -sub stringify { - my $name = shift(@_); - open(OUTPUTC, "> $name.c"); - open(OUTPUTH, "> $name.h"); - - open(FILE, "$name"); - - while() { - if(/(.+) "(.+)"/) { - $var = $1; - $data = $2; - - $datan = $data; - $datan =~ s/\\r/\r/g; - $datan =~ s/\\n/\n/g; - $datan =~ s/\\01/\01/g; - $datan =~ s/\\0/\0/g; - - printf(OUTPUTC "const char $var\[%d] = \n", length($datan) + 1); - printf(OUTPUTC "/* \"$data\" */\n"); - printf(OUTPUTC "{"); - for($j = 0; $j < length($datan); $j++) { - printf(OUTPUTC "%#02x, ", unpack("C", substr($datan, $j, 1))); - } - printf(OUTPUTC "};\n"); - - printf(OUTPUTH "extern const char $var\[%d];\n", length($datan) + 1); - - } - } - close(OUTPUTC); - close(OUTPUTH); -} -stringify("http-strings"); - -exit 0; - diff --git a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/uIP_Task.c b/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/uIP_Task.c deleted file mode 100644 index 709a9e765..000000000 --- a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/uIP_Task.c +++ /dev/null @@ -1,262 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* Standard includes. */ -#include - -/* Scheduler includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "semphr.h" - -/* Demo includes. */ -#include "emac.h" -#include "partest.h" - -/* uip includes. */ -#include "uip.h" -#include "uip_arp.h" -#include "httpd.h" -#include "timer.h" -#include "clock-arch.h" - -/*-----------------------------------------------------------*/ - -/* How long to wait before attempting to connect the MAC again. */ -#define uipINIT_WAIT ( 100 / portTICK_PERIOD_MS ) - -/* Shortcut to the header within the Rx buffer. */ -#define xHeader ((struct uip_eth_hdr *) &uip_buf[ 0 ]) - -/* Standard constant. */ -#define uipTOTAL_FRAME_HEADER_SIZE 54 - - -/*-----------------------------------------------------------*/ - -/* - * Setup the MAC address in the MAC itself, and in the uIP stack. - */ -static void prvSetMACAddress( void ); - -/* - * Port functions required by the uIP stack. - */ -void clock_init( void ); -clock_time_t clock_time( void ); - -/*-----------------------------------------------------------*/ - -/* The semaphore used by the ISR to wake the uIP task. */ -SemaphoreHandle_t xEMACSemaphore; - -/* The buffer used by the uIP stack. In this case the pointer is used to -point to one of the Rx buffers. */ -unsigned char *uip_buf = NULL; - -/*-----------------------------------------------------------*/ - -void clock_init(void) -{ - /* This is done when the scheduler starts. */ -} -/*-----------------------------------------------------------*/ - -clock_time_t clock_time( void ) -{ - return xTaskGetTickCount(); -} -/*-----------------------------------------------------------*/ - -void vuIP_Task( void *pvParameters ) -{ -portBASE_TYPE i; -uip_ipaddr_t xIPAddr; -struct timer periodic_timer, arp_timer; - - ( void ) pvParameters; - - /* Create the semaphore used by the ISR to wake this task. */ - vSemaphoreCreateBinary( xEMACSemaphore ); - - /* Initialise the uIP stack. */ - timer_set( &periodic_timer, configTICK_RATE_HZ / 2 ); - timer_set( &arp_timer, configTICK_RATE_HZ * 10 ); - uip_init(); - uip_ipaddr( xIPAddr, configIP_ADDR0, configIP_ADDR1, configIP_ADDR2, configIP_ADDR3 ); - uip_sethostaddr( xIPAddr ); - uip_ipaddr( xIPAddr, configNET_MASK0, configNET_MASK1, configNET_MASK2, configNET_MASK3 ); - uip_setnetmask( xIPAddr ); - httpd_init(); - - /* Initialise the MAC. */ - while( xEthInitialise() != pdPASS ) - { - vTaskDelay( uipINIT_WAIT ); - } - - prvSetMACAddress(); - - for( ;; ) - { - /* Is there received data ready to be processed? */ - uip_len = usGetMACRxData(); - - if( ( uip_len > 0 ) && ( uip_buf != NULL ) ) - { - /* Standard uIP loop taken from the uIP manual. */ - if( xHeader->type == htons( UIP_ETHTYPE_IP ) ) - { - uip_arp_ipin(); - uip_input(); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - uip_arp_out(); - vSendMACData( uip_len ); - } - } - else if( xHeader->type == htons( UIP_ETHTYPE_ARP ) ) - { - uip_arp_arpin(); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - vSendMACData( uip_len ); - } - } - } - else - { - if( ( timer_expired( &periodic_timer ) ) && ( uip_buf != NULL ) ) - { - timer_reset( &periodic_timer ); - for( i = 0; i < UIP_CONNS; i++ ) - { - uip_periodic( i ); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - uip_arp_out(); - vSendMACData( uip_len ); - } - } - - /* Call the ARP timer function every 10 seconds. */ - if( timer_expired( &arp_timer ) ) - { - timer_reset( &arp_timer ); - uip_arp_timer(); - } - } - else - { - /* We did not receive a packet, and there was no periodic - processing to perform. Block for a fixed period. If a packet - is received during this period we will be woken by the ISR - giving us the Semaphore. */ - xSemaphoreTake( xEMACSemaphore, configTICK_RATE_HZ / 2 ); - } - } - } -} -/*-----------------------------------------------------------*/ - -static void prvSetMACAddress( void ) -{ -struct uip_eth_addr xAddr; - - /* Configure the MAC address in the uIP stack. */ - xAddr.addr[ 0 ] = configMAC_ADDR0; - xAddr.addr[ 1 ] = configMAC_ADDR1; - xAddr.addr[ 2 ] = configMAC_ADDR2; - xAddr.addr[ 3 ] = configMAC_ADDR3; - xAddr.addr[ 4 ] = configMAC_ADDR4; - xAddr.addr[ 5 ] = configMAC_ADDR5; - uip_setethaddr( xAddr ); -} -/*-----------------------------------------------------------*/ - -void vApplicationProcessFormInput( char *pcInputString ) -{ -char *c, *pcText; -static char cMessageForDisplay[ 32 ]; -static const char *pcMessage = cMessageForDisplay; -extern QueueHandle_t xLCDQueue; - - /* Process the form input sent by the IO page of the served HTML. */ - - c = strstr( pcInputString, "?" ); - if( c ) - { - /* Turn LED's on or off in accordance with the check box status. */ - if( strstr( c, "LED0=1" ) != NULL ) - { - /* Set LED4. */ - vParTestSetLED( 3, 1 ); - } - else - { - /* Clear LED4. */ - vParTestSetLED( 3, 0 ); - } - - /* Find the start of the text to be displayed on the LCD. */ - pcText = strstr( c, "LCD=" ); - pcText += strlen( "LCD=" ); - - /* Terminate the file name for further processing within uIP. */ - *c = 0x00; - - /* Terminate the LCD string. */ - c = strstr( pcText, " " ); - if( c != NULL ) - { - *c = 0x00; - } - - /* Add required spaces. */ - while( ( c = strstr( pcText, "+" ) ) != NULL ) - { - *c = ' '; - } - - /* Write the message to the LCD. */ - strcpy( cMessageForDisplay, pcText ); - xQueueSend( xLCDQueue, &pcMessage, portMAX_DELAY ); - } -} - diff --git a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/uip-conf.h b/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/uip-conf.h deleted file mode 100644 index b52b23fed..000000000 --- a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/uip-conf.h +++ /dev/null @@ -1,159 +0,0 @@ -/** - * \addtogroup uipopt - * @{ - */ - -/** - * \name Project-specific configuration options - * @{ - * - * uIP has a number of configuration options that can be overridden - * for each project. These are kept in a project-specific uip-conf.h - * file and all configuration names have the prefix UIP_CONF. - */ - -/* - * Copyright (c) 2006, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: uip-conf.h,v 1.6 2006/06/12 08:00:31 adam Exp $ - */ - -/** - * \file - * An example uIP configuration file - * \author - * Adam Dunkels - */ - -#ifndef __UIP_CONF_H__ -#define __UIP_CONF_H__ - -#include - -#define UIP_CONF_EXTERNAL_BUFFER - -/** - * 8 bit datatype - * - * This typedef defines the 8-bit type used throughout uIP. - * - * \hideinitializer - */ -typedef uint8_t u8_t; - -/** - * 16 bit datatype - * - * This typedef defines the 16-bit type used throughout uIP. - * - * \hideinitializer - */ -typedef uint16_t u16_t; - -/** - * Statistics datatype - * - * This typedef defines the dataype used for keeping statistics in - * uIP. - * - * \hideinitializer - */ -typedef unsigned short uip_stats_t; - -/** - * Maximum number of TCP connections. - * - * \hideinitializer - */ -#define UIP_CONF_MAX_CONNECTIONS 40 - -/** - * Maximum number of listening TCP ports. - * - * \hideinitializer - */ -#define UIP_CONF_MAX_LISTENPORTS 40 - -/** - * uIP buffer size. - * - * \hideinitializer - */ -#define UIP_CONF_BUFFER_SIZE 1480 - -/** - * CPU byte order. - * - * \hideinitializer - */ -#define UIP_CONF_BYTE_ORDER LITTLE_ENDIAN - -/** - * Logging on or off - * - * \hideinitializer - */ -#define UIP_CONF_LOGGING 0 - -/** - * UDP support on or off - * - * \hideinitializer - */ -#define UIP_CONF_UDP 0 - -/** - * UDP checksums on or off - * - * \hideinitializer - */ -#define UIP_CONF_UDP_CHECKSUMS 1 - -/** - * uIP statistics on or off - * - * \hideinitializer - */ -#define UIP_CONF_STATISTICS 1 - -/* Here we include the header file for the application(s) we use in - our project. */ -/*#include "smtp.h"*/ -/*#include "hello-world.h"*/ -/*#include "telnetd.h"*/ -#include "webserver.h" -/*#include "dhcpc.h"*/ -/*#include "resolv.h"*/ -/*#include "webclient.h"*/ - -#endif /* __UIP_CONF_H__ */ - -/** @} */ -/** @} */ diff --git a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/webserver.h b/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/webserver.h deleted file mode 100644 index 1acb290b8..000000000 --- a/FreeRTOS/Demo/CORTEX_STM32F107_GCC_Rowley/webserver/webserver.h +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright (c) 2002, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials provided - * with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: webserver.h,v 1.2 2006/06/11 21:46:38 adam Exp $ - * - */ -#ifndef __WEBSERVER_H__ -#define __WEBSERVER_H__ - -#include "httpd.h" - -typedef struct httpd_state uip_tcp_appstate_t; -/* UIP_APPCALL: the name of the application function. This function - must return void and take no arguments (i.e., C type "void - appfunc(void)"). */ -#ifndef UIP_APPCALL -#define UIP_APPCALL httpd_appcall -#endif - - -#endif /* __WEBSERVER_H__ */ diff --git a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/CFV1_BDM_P&E_Multilink_CyclonePro.hwc b/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/CFV1_BDM_P&E_Multilink_CyclonePro.hwc deleted file mode 100644 index e69de29bb..000000000 diff --git a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/CFV1_BDM_P&E_Multilink_CyclonePro.ini b/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/CFV1_BDM_P&E_Multilink_CyclonePro.ini deleted file mode 100644 index d8b6b3b97..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/CFV1_BDM_P&E_Multilink_CyclonePro.ini +++ /dev/null @@ -1,74 +0,0 @@ -[Environment Variables] -GENPATH={Project}Sources;{Compiler}lib\cfv1c\device\src;{Compiler}lib\cfv1c\device\include;{Compiler}lib\cfv1c\device\asm_include;{Compiler}\ColdFire_Support\Runtime\Runtime_ColdFire\Source;{Compiler}ColdFire_Support\Runtime\(Runtime_Common)\MWRuntime;{Compiler}ColdFire_Support\Runtime\(Runtime_Common);{Compiler}ColdFire_Support\msl\MSL_C\MSL_ColdFire\Src;{Compiler}ColdFire_Support\msl\MSL_C\MSL_ColdFire\Lib;{Compiler}ColdFire_Support\msl\MSL_C\MSL_Common\Src;{Compiler}ColdFire_Support\msl\MSL_C\MSL_Common_Embedded\Src;{Compiler}ColdFire_Support\msl\MSL_C\MSL_Common_Embedded\Math\Double_precision;{Compiler}ColdFire_Support\msl\MSL_C\MSL_Common_Embedded\Math\Single_precision;{Compiler}ColdFire_Support\msl\MSL_C++\MSL_ColdFire\Lib;{Compiler}ColdFire_Support\msl\MSL_C++\MSL_Common\Src;{Compiler}ColdFire_Support\msl\MSL_C++\MSL_Precompiled_Headers\Src;{Compiler}ColdFire_Support\msl\MSL_Extras\MSL_Common\Src -LIBPATH={Compiler}lib\cfv1c\device\include;{Compiler}ColdFire_Support\msl\MSL_C\MSL_ColdFire\Include;{Compiler}ColdFire_Support\msl\MSL_C\MSL_Common\Include;{Compiler}ColdFire_Support\msl\MSL_C\MSL_Common_Embedded\Include;{Compiler}ColdFire_Support\msl\MSL_C++\MSL_ColdFire\Include;{Compiler}ColdFire_Support\msl\MSL_C++\MSL_Common\Include;{Compiler}ColdFire_Support\msl\MSL_C\MSL_Common_Embedded\Math\Include;{Compiler}ColdFire_Support\msl\MSL_Extras\MSL_Common\Include;{Compiler}ColdFire_Support\msl\MSL_Extras\MSL_Common\Include\sys; -OBJPATH={Project}bin -TEXTPATH={Project}bin -ABSPATH={Project}bin - -[HI-WAVE] -Target=CFICDCYCLMULT -CPU=ColdFire -Layout=C_layout.hwl -LoadDialogOptions=AUTOERASEANDFLASH RUNANDSTOPAFTERLOAD="main" -MainFrame=2,3,-1,-1,-1,-1,132,132,1182,881 -TOOLBAR=57600 57601 32795 0 57635 57634 57637 0 57671 57669 0 32777 32776 32782 32780 32781 32778 0 32806 -AEFWarningDialog=FALSE - - - - -[CFICDCYCLMULT] -COMSETTINGS=SETCOMM DRIVER NOPROTOCOL NOPERIODICAL -HOST_IO_SUPPORT=0 - -[CFMultilinkCyclonePro_GDI_SETTINGS] -MCUID=0x700A -CMDFILE0=CMDFILE STARTUP ON ".\cmd\CFV1_BDM_P&E_Multilink_CyclonePro_startup.cmd" -CMDFILE1=CMDFILE RESET ON ".\cmd\CFV1_BDM_P&E_Multilink_CyclonePro_reset.cmd" -CMDFILE2=CMDFILE PRELOAD ON ".\cmd\CFV1_BDM_P&E_Multilink_CyclonePro_preload.cmd" -CMDFILE3=CMDFILE POSTLOAD ON ".\cmd\CFV1_BDM_P&E_Multilink_CyclonePro_postload.cmd" -CMDFILE4=CMDFILE VPPON ON "vppon.cmd" -CMDFILE5=CMDFILE VPPOFF ON "vppoff.cmd" -DBG0=DBG GENERAL DISARM_ON PROTECT_OFF ANALYZE_ON STEPATRUN_ON -DBG1=DBG PREDEFINED SELECT 0 -CF_V1_DBG_TRIGGER_A=RangeAllowed:0 AccessSizeCompareAllowed:0 DataCompareAllowed:0 Disabled:0 AccessSize:4 Range:0 OutsideRange:0 DataToCompare:0 DataToCompareSize:0 DataToCompareMode:-1 EnableMask: 0 TriggerMask:0 -CF_V1_DBG_TRIGGER_B=RangeAllowed:0 AccessSizeCompareAllowed:0 DataCompareAllowed:0 Disabled:0 AccessSize:4 Range:0 OutsideRange:0 DataToCompare:0 DataToCompareSize:0 DataToCompareMode:-1 EnableMask: 0 TriggerMask:0 -CF_V1_DBG_TRIGGER_C=RangeAllowed:1 AccessSizeCompareAllowed:1 DataCompareAllowed:0 Disabled:0 AccessSize:4 Range:0 OutsideRange:0 DataToCompare:0 DataToCompareSize:0 DataToCompareMode:-1 EnableMask: 0 TriggerMask:0 -DBG2= -NV_PARAMETER_FILE=C:\devtools\Freescale\CodeWarrior for Microcontrollers V6.2\prog\FPP\mcu700A.fpp -NV_SAVE_WSP=0 -NV_AUTO_ID=1 - - - - - - - - - - - - - -[STARTUP] -CPUTARGETTYPE=0 -check_and_fix_if_secure_enable_flag=1 -trim_reference_target_newvalue=3125000 -trim_reference_target_override=0 -IO_DELAY_SET=0 -USE_CYCLONEPRO_RELAYS=1 -CyclonePro_poweroffonexit=0 -CyclonePro_currentvoltage=255 -CyclonePro_PowerDownDelay=250 -CyclonePro_PowerUpDelay=250 -IO_DELAY_CNT=14 -PCI_DELAY=0 -RESET_DELAY=0 -PORT=21 -interface_selection=0 -SHOWDIALOG=0 - - -[PORT] -IP= diff --git a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/CFV1_Full_Chip_Simulator.ini b/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/CFV1_Full_Chip_Simulator.ini deleted file mode 100644 index 399b27add..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/CFV1_Full_Chip_Simulator.ini +++ /dev/null @@ -1,27 +0,0 @@ -[Environment Variables] -GENPATH={Project}Sources;{Compiler}lib\cfv1c\device\src;{Compiler}lib\cfv1c\device\include;{Compiler}lib\cfv1c\device\asm_include;{Compiler}\ColdFire_Support\Runtime\Runtime_ColdFire\Source;{Compiler}ColdFire_Support\Runtime\(Runtime_Common)\MWRuntime;{Compiler}ColdFire_Support\Runtime\(Runtime_Common);{Compiler}ColdFire_Support\msl\MSL_C\MSL_ColdFire\Src;{Compiler}ColdFire_Support\msl\MSL_C\MSL_ColdFire\Lib;{Compiler}ColdFire_Support\msl\MSL_C\MSL_Common\Src;{Compiler}ColdFire_Support\msl\MSL_C\MSL_Common_Embedded\Src;{Compiler}ColdFire_Support\msl\MSL_C\MSL_Common_Embedded\Math\Double_precision;{Compiler}ColdFire_Support\msl\MSL_C\MSL_Common_Embedded\Math\Single_precision;{Compiler}ColdFire_Support\msl\MSL_C++\MSL_ColdFire\Lib;{Compiler}ColdFire_Support\msl\MSL_C++\MSL_Common\Src;{Compiler}ColdFire_Support\msl\MSL_C++\MSL_Precompiled_Headers\Src;{Compiler}ColdFire_Support\msl\MSL_Extras\MSL_Common\Src -LIBPATH={Compiler}lib\cfv1c\device\include;{Compiler}ColdFire_Support\msl\MSL_C\MSL_ColdFire\Include;{Compiler}ColdFire_Support\msl\MSL_C\MSL_Common\Include;{Compiler}ColdFire_Support\msl\MSL_C\MSL_Common_Embedded\Include;{Compiler}ColdFire_Support\msl\MSL_C++\MSL_ColdFire\Include;{Compiler}ColdFire_Support\msl\MSL_C++\MSL_Common\Include;{Compiler}ColdFire_Support\msl\MSL_C\MSL_Common_Embedded\Math\Include;{Compiler}ColdFire_Support\msl\MSL_Extras\MSL_Common\Include;{Compiler}ColdFire_Support\msl\MSL_Extras\MSL_Common\Include\sys; -OBJPATH={Project}bin -TEXTPATH={Project}bin -ABSPATH={Project}bin - -[HI-WAVE] -Target=sim -Layout=C_layout.hwl -LoadDialogOptions=RUNANDSTOPAFTERLOAD="main" -CPU=ColdFire -MainFrame=2,3,-1,-1,-1,-1,22,23,1072,771 -TOOLBAR=57600 57601 32795 0 57635 57634 57637 0 57671 57669 0 32777 32776 32782 32780 32781 32778 0 32806 - - - -[Simulator] -CMDFILE0=CMDFILE STARTUP ON ".\cmd\CFV1_Full_Chip_Simulator_startup.cmd" - -[Simulator COLDFIRE] -CMDFILE0=CMDFILE RESET ON ".\cmd\CFV1_Full_Chip_Simulator_reset.cmd" -CMDFILE1=CMDFILE PRELOAD ON ".\cmd\CFV1_Full_Chip_Simulator_preload.cmd" -CMDFILE2=CMDFILE POSTLOAD ON ".\cmd\CFV1_Full_Chip_Simulator_postload.cmd" -CMDFILE3=CMDFILE SETCPU ON ".\cmd\CFV1_Full_Chip_Simulator_setcpu.cmd" -FCS=ColdFire V1 SAMPLE -HOST_IO_SUPPORT=1 diff --git a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/C_Layout.hwl b/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/C_Layout.hwl deleted file mode 100644 index 0612743b6..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/C_Layout.hwl +++ /dev/null @@ -1,14 +0,0 @@ -OPEN source 0 0 60 99 -Source < attributes TOOLTIP on,TOOLTIP_FORMAT signed,TOOLTIP_MODE details,FREEZE off,MARKS off -OPEN assembly 60 0 40 31 -Assembly < attributes ADR on,CODE off,ABSADR on,SYMB off,FORMAT Auto,FREEZE off,TOPPC 0x410 -OPEN register 60 31 40 25 -Register < attributes FORMAT AUTO,COMPLEMENT None -OPEN data 60 56 40 22 -Data < attributes SCOPE global,COMPLEMENT None,FORMAT Symb,MODE automatic,SORT NotSort,UPDATERATE 10,NAMEWIDTH 16 -OPEN Command 60 77 40 23 -Command < attributes CACHESIZE 1000 -bckcolor 50331647 -font 'Courier New' 9 BLACK -AUTOSIZE on -ACTIVATE "Register" "Assembly" "Data" "Source" "Command" diff --git a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Default.mem b/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Default.mem deleted file mode 100644 index d0bbb2e4d..000000000 Binary files a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Default.mem and /dev/null differ diff --git a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/RTOSDemo.mcp b/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/RTOSDemo.mcp deleted file mode 100644 index e9aaa3dab..000000000 Binary files a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/RTOSDemo.mcp and /dev/null differ diff --git a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/ReadMe.txt b/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/ReadMe.txt new file mode 100644 index 000000000..12c70d213 --- /dev/null +++ b/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/ReadMe.txt @@ -0,0 +1 @@ +The third party uIP TCP/IP stack and the demo project that used to be in this directory was removed in FreeRTOS version V10.4.3 due to security vulnerabilities identified in uIP. In a future version this demo may be replaced by a version which does not use TCP/IP or uses FreeRTOS’s own TCP/IP stack in place of the original third party stack. \ No newline at end of file diff --git a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/FEC.c b/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/FEC.c deleted file mode 100644 index 1c1882401..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/FEC.c +++ /dev/null @@ -1,642 +0,0 @@ -/* Kernel includes. */ -#include "FreeRTOS.h" -#include "semphr.h" -#include "task.h" - -/* Demo includes. */ -#include "FEC.h" -#include "fecbd.h" -#include "mii.h" -#include "eth_phy.h" -#include "eth.h" - -/* uIP includes. */ -#include "uip.h" -#include "uip_arp.h" - -/*-----------------------------------------------------------*/ - -/* FEC hardware specifics. */ -#define MCF_FEC_MSCR_MII_SPEED(x) (((x)&0x3F)<<0x1) -#define MCF_FEC_RDAR_R_DES_ACTIVE ( 0x1000000 ) -#define MCF_FEC_TDAR_X_DES_ACTIVE ( 0x1000000 ) - -/* PHY hardware specifics. */ -#define PHY_STATUS ( 16 ) -#define PHY_DUPLEX_STATUS ( 4 ) - -/* Delay between polling the PHY to see if a link has been established. */ -#define fecLINK_DELAY ( 500 / portTICK_PERIOD_MS ) - -/* Very short delay to use when waiting for the Tx to finish with a buffer if -we run out of Rx buffers. */ -#define fecMINIMAL_DELAY ( 3 / portTICK_PERIOD_MS ) - -/* Don't block to wait for a buffer more than this many times. */ -#define uipBUFFER_WAIT_ATTEMPTS ( 30 ) - -/* The Tx re-uses the Rx buffers and only has one descriptor. */ -#define fecNUM_TX_DESCRIPTORS ( 1 ) - -/* The total number of buffers available, which should be greater than the -number of Rx descriptors. */ -#define fecNUM_BUFFERS ( configNUM_FEC_RX_DESCRIPTORS + 2 ) - -/*-----------------------------------------------------------*/ - -/* - * Return an unused buffer to the pool of free buffers. - */ -static void prvReturnBuffer( unsigned char *pucBuffer ); - -/* - * Find and return the next buffer that is not in use by anything else. - */ -static unsigned char *prvGetFreeBuffer( void ); -/*-----------------------------------------------------------*/ - -/* The semaphore used to wake the uIP task when data arrives. */ -SemaphoreHandle_t xFECSemaphore = NULL; - -/* The buffer used by the uIP stack. In this case the pointer is used to -point to one of the Rx buffers to avoid having to copy the Rx buffer into -the uIP buffer. */ -unsigned char *uip_buf; - -/* The DMA descriptors. These are char arrays to allow us to align them -correctly. */ -static unsigned char xFECTxDescriptors_unaligned[ ( fecNUM_TX_DESCRIPTORS * sizeof( FECBD ) ) + 16 ]; -static unsigned char xFECRxDescriptors_unaligned[ ( configNUM_FEC_RX_DESCRIPTORS * sizeof( FECBD ) ) + 16 ]; -static FECBD *pxFECTxDescriptor; -static FECBD *xFECRxDescriptors; - -/* The DMA buffer. This is a char arrays to allow it to be aligned correctly. */ -static unsigned char ucFECRxBuffers[ ( fecNUM_BUFFERS * configFEC_BUFFER_SIZE ) + 16 ]; - -/* Index to the next descriptor to be inspected for received data. */ -static unsigned long ulNextRxDescriptor = 0; - -/* Contains the start address of each Rx buffer, after it has been correctly -aligned. */ -static unsigned char *pucAlignedBufferStartAddresses[ fecNUM_BUFFERS ] = { 0 }; - -/* Each ucBufferInUse index corresponds to a position in the same index in the -pucAlignedBufferStartAddresses array. If the index contains a 1 then the -buffer within pucAlignedBufferStartAddresses is in use, if it contains a 0 then -the buffer is free. */ -static unsigned char ucBufferInUse[ fecNUM_BUFFERS ] = { 0 }; - -/*-----------------------------------------------------------*/ - -/********************************************************************/ -/* - * Write a value to a PHY's MII register. - * - * Parameters: - * ch FEC channel - * phy_addr Address of the PHY. - * reg_addr Address of the register in the PHY. - * data Data to be written to the PHY register. - * - * Return Values: - * 0 on failure - * 1 on success. - * - * Please refer to your PHY manual for registers and their meanings. - * mii_write() polls for the FEC's MII interrupt event and clears it. - * If after a suitable amount of time the event isn't triggered, a - * value of 0 is returned. - */ -static int fec_mii_write( int phy_addr, int reg_addr, int data ) -{ -int timeout; -unsigned long eimr; - - /* Clear the MII interrupt bit */ - EIR = EIR_MII; - - /* Mask the MII interrupt */ - eimr = EIMR; - EIMR &= ~EIMR_MII; - - /* Write to the MII Management Frame Register to kick-off the MII write */ - MMFR = ( unsigned long ) ( FEC_MMFR_ST_01 | FEC_MMFR_OP_WRITE | FEC_MMFR_PA(phy_addr) | FEC_MMFR_RA(reg_addr) | FEC_MMFR_TA_10 | FEC_MMFR_DATA( data ) ); - - /* Poll for the MII interrupt (interrupt should be masked) */ - for (timeout = 0; timeout < FEC_MII_TIMEOUT; timeout++) - { - if( EIR & EIR_MII) - { - break; - } - } - - if( timeout == FEC_MII_TIMEOUT ) - { - return 0; - } - - /* Clear the MII interrupt bit */ - EIR = EIR_MII; - - /* Restore the EIMR */ - EIMR = eimr; - - return 1; -} - -/********************************************************************/ -/* - * Read a value from a PHY's MII register. - * - * Parameters: - * ch FEC channel - * phy_addr Address of the PHY. - * reg_addr Address of the register in the PHY. - * data Pointer to storage for the Data to be read - * from the PHY register (passed by reference) - * - * Return Values: - * 0 on failure - * 1 on success. - * - * Please refer to your PHY manual for registers and their meanings. - * mii_read() polls for the FEC's MII interrupt event and clears it. - * If after a suitable amount of time the event isn't triggered, a - * value of 0 is returned. - */ -static int fec_mii_read( int phy_addr, int reg_addr, unsigned short* data ) -{ -int timeout; -unsigned long eimr; - - /* Clear the MII interrupt bit */ - EIR = 0xffffffff; - - /* Mask the MII interrupt */ - eimr = EIMR; - EIMR &= ~EIMR_MII; - - /* Write to the MII Management Frame Register to kick-off the MII read */ - MMFR = ( unsigned long ) ( FEC_MMFR_ST_01 | FEC_MMFR_OP_READ | FEC_MMFR_PA(phy_addr) | FEC_MMFR_RA(reg_addr) | FEC_MMFR_TA_10 ); - - /* Poll for the MII interrupt (interrupt should be masked) */ - for (timeout = 0; timeout < FEC_MII_TIMEOUT; timeout++) - { - if (EIR) - { - break; - } - } - - if(timeout == FEC_MII_TIMEOUT) - { - return 0; - } - - /* Clear the MII interrupt bit */ - EIR = EIR_MII; - - /* Restore the EIMR */ - EIMR = eimr; - - *data = (unsigned short)(MMFR & 0x0000FFFF); - - return 1; -} - - -/********************************************************************/ -/* - * Generate the hash table settings for the given address - * - * Parameters: - * addr 48-bit (6 byte) Address to generate the hash for - * - * Return Value: - * The 6 most significant bits of the 32-bit CRC result - */ -static unsigned char fec_hash_address( const unsigned char* addr ) -{ -unsigned long crc; -unsigned char byte; -int i, j; - - crc = 0xFFFFFFFF; - for(i=0; i<6; ++i) - { - byte = addr[i]; - for(j=0; j<8; ++j) - { - if((byte & 0x01)^(crc & 0x01)) - { - crc >>= 1; - crc = crc ^ 0xEDB88320; - } - else - { - crc >>= 1; - } - - byte >>= 1; - } - } - - return (unsigned char)(crc >> 26); -} - -/********************************************************************/ -/* - * Set the Physical (Hardware) Address and the Individual Address - * Hash in the selected FEC - * - * Parameters: - * ch FEC channel - * pa Physical (Hardware) Address for the selected FEC - */ -static void fec_set_address( const unsigned char *pa ) -{ - unsigned char crc; - - /* - * Set the Physical Address - */ - PALR = (unsigned long)((pa[0]<<24) | (pa[1]<<16) | (pa[2]<<8) | pa[3]); - PAUR = (unsigned long)((pa[4]<<24) | (pa[5]<<16)); - - /* - * Calculate and set the hash for given Physical Address - * in the Individual Address Hash registers - */ - crc = fec_hash_address(pa); - if(crc >= 32) - { - IAUR |= (unsigned long)(1 << (crc - 32)); - } - else - { - IALR |= (unsigned long)(1 << crc); - } -} -/*-----------------------------------------------------------*/ - -static void prvInitialiseFECBuffers( void ) -{ -unsigned portBASE_TYPE ux; -unsigned char *pcBufPointer; - - /* Set the pointer to a correctly aligned address. */ - pcBufPointer = &( xFECTxDescriptors_unaligned[ 0 ] ); - while( ( ( unsigned long ) pcBufPointer & 0x0fUL ) != 0 ) - { - pcBufPointer++; - } - - pxFECTxDescriptor = ( FECBD * ) pcBufPointer; - - /* Likewise the pointer to the Rx descriptor. */ - pcBufPointer = &( xFECRxDescriptors_unaligned[ 0 ] ); - while( ( ( unsigned long ) pcBufPointer & 0x0fUL ) != 0 ) - { - pcBufPointer++; - } - - xFECRxDescriptors = ( FECBD * ) pcBufPointer; - - /* There is no Tx buffer as the Rx buffer is reused. */ - pxFECTxDescriptor->length = 0; - pxFECTxDescriptor->status = 0; - - /* Align the Rx buffers. */ - pcBufPointer = &( ucFECRxBuffers[ 0 ] ); - while( ( ( unsigned long ) pcBufPointer & 0x0fUL ) != 0 ) - { - pcBufPointer++; - } - - /* Then fill in the Rx descriptors. */ - for( ux = 0; ux < configNUM_FEC_RX_DESCRIPTORS; ux++ ) - { - xFECRxDescriptors[ ux ].status = RX_BD_E; - xFECRxDescriptors[ ux ].length = configFEC_BUFFER_SIZE; - xFECRxDescriptors[ ux ].data = pcBufPointer; - - /* Note the start address of the buffer now that it is correctly - aligned. */ - pucAlignedBufferStartAddresses[ ux ] = pcBufPointer; - - /* The buffer is in use by the descriptor. */ - ucBufferInUse[ ux ] = pdTRUE; - - pcBufPointer += configFEC_BUFFER_SIZE; - } - - /* Note the start address of the last buffer as one more buffer is - allocated than there are Rx descriptors. */ - pucAlignedBufferStartAddresses[ ux ] = pcBufPointer; - - /* Set uip_buf to point to the last buffer. */ - uip_buf = pcBufPointer; - ucBufferInUse[ ux ] = pdTRUE; - - /* Set the wrap bit in the last descriptors to form a ring. */ - xFECRxDescriptors[ configNUM_FEC_RX_DESCRIPTORS - 1 ].status |= RX_BD_W; - - /* We start with descriptor 0. */ - ulNextRxDescriptor = 0; -} -/*-----------------------------------------------------------*/ - -void vInitFEC( void ) -{ -unsigned short usData; -struct uip_eth_addr xAddr; -const unsigned char ucMACAddress[6] = -{ - configMAC_0, configMAC_1,configMAC_2,configMAC_3,configMAC_4,configMAC_5 -}; - - prvInitialiseFECBuffers(); - - /* Create the semaphore used to wake the uIP task when data arrives. */ - vSemaphoreCreateBinary( xFECSemaphore ); - - /* Set the MAC address within the stack. */ - for( usData = 0; usData < 6; usData++ ) - { - xAddr.addr[ usData ] = ucMACAddress[ usData ]; - } - uip_setethaddr( xAddr ); - - /* Set the Reset bit and clear the Enable bit */ - ECR_RESET = 1; - - /* Enable the clock. */ - SCGC4 |= SCGC4_FEC_MASK; - - /* Wait at least 8 clock cycles */ - for( usData = 0; usData < 10; usData++ ) - { - asm( "NOP" ); - } - - /* Set MII speed to 2.5MHz. */ - MSCR = MCF_FEC_MSCR_MII_SPEED( ( ( configCPU_CLOCK_HZ / 1000000 ) / 5 ) + 1 ); - - /* - * Make sure the external interface signals are enabled - */ - PTCPF2_C0 = 1; - PTCPF2_C1 = 1; - PTCPF2_C2 = 1; - PTAPF1 = 0x55; - PTAPF2 = 0x55; - PTBPF1 = 0x55; - PTBPF2 = 0x55; - - /* Set all pins to full drive with no filter. */ - PTADS = 0x06; - PTAIFE = 0x06; - PTBDS = 0xf4; - PTBIFE = 0xf4; - PTCDS = 0; - PTCIFE = 0; - - - /* Can we talk to the PHY? */ - do - { - vTaskDelay( fecLINK_DELAY ); - usData = 0xffff; - fec_mii_read( configPHY_ADDRESS, PHY_PHYIDR1, &usData ); - - } while( usData == 0xffff ); - - /* Start auto negotiate. */ - fec_mii_write( configPHY_ADDRESS, PHY_BMCR, ( PHY_BMCR_AN_RESTART | PHY_BMCR_AN_ENABLE ) ); - - /* Wait for auto negotiate to complete. */ - do - { - vTaskDelay( fecLINK_DELAY ); - fec_mii_read( configPHY_ADDRESS, PHY_BMSR, &usData ); - - } while( !( usData & PHY_BMSR_AN_COMPLETE ) ); - - /* When we get here we have a link - find out what has been negotiated. */ - usData = 0; - fec_mii_read( configPHY_ADDRESS, PHY_STATUS, &usData ); - - /* Setup half or full duplex. */ - if( usData & PHY_DUPLEX_STATUS ) - { - RCR &= (unsigned long)~RCR_DRT; - TCR |= TCR_FDEN; - } - else - { - RCR |= RCR_DRT; - TCR &= (unsigned long)~TCR_FDEN; - } - - /* Clear the Individual and Group Address Hash registers */ - IALR = 0; - IAUR = 0; - GALR = 0; - GAUR = 0; - - /* Set the Physical Address for the selected FEC */ - fec_set_address( ucMACAddress ); - - /* Set Rx Buffer Size */ - EMRBR = (unsigned short) configFEC_BUFFER_SIZE; - - /* Point to the start of the circular Rx buffer descriptor queue */ - ERDSR = ( volatile unsigned long ) &( xFECRxDescriptors[ 0 ] ); - - /* Point to the start of the circular Tx buffer descriptor queue */ - ETSDR = ( volatile unsigned long ) pxFECTxDescriptor; - - /* Clear all FEC interrupt events */ - EIR = ( unsigned long ) -1; - - /* Various mode/status setup. */ - RCR = 0; - RCR_MAX_FL = configFEC_BUFFER_SIZE; - RCR_MII_MODE = 1; - - #if( configUSE_PROMISCUOUS_MODE == 1 ) - { - RCR |= RCR_PROM; - } - #endif - - /* Enable interrupts. */ - EIMR = EIR_TXF_MASK | EIMR_RXF_MASK | EIMR_RXB_MASK | EIMR_UN_MASK | EIMR_RL_MASK | EIMR_LC_MASK | EIMR_BABT_MASK | EIMR_BABR_MASK | EIMR_HBERR_MASK; - - /* Enable the MAC itself. */ - ECR = ECR_ETHER_EN_MASK; - - /* Indicate that there have been empty receive buffers produced */ - RDAR = MCF_FEC_RDAR_R_DES_ACTIVE; -} -/*-----------------------------------------------------------*/ - -unsigned long ulFECRx( void ) -{ -unsigned long ulLen = 0UL; - - /* Is a buffer ready? */ - if( ( xFECRxDescriptors[ ulNextRxDescriptor ].status & RX_BD_E ) == 0 ) - { - /* uip_buf is about to be set to a new buffer, so return the buffer it - is already pointing to. */ - prvReturnBuffer( uip_buf ); - - /* Obtain the size of the packet and put it into the "len" variable. */ - ulLen = xFECRxDescriptors[ ulNextRxDescriptor ].length; - uip_buf = xFECRxDescriptors[ ulNextRxDescriptor ].data; - - /* The buffer that this descriptor was using is now in use by the - TCP/IP stack, so allocate it a new buffer. */ - xFECRxDescriptors[ ulNextRxDescriptor ].data = prvGetFreeBuffer(); - - /* Doing this here could cause corruption! */ - xFECRxDescriptors[ ulNextRxDescriptor ].status |= RX_BD_E; - - portENTER_CRITICAL(); - { - ulNextRxDescriptor++; - if( ulNextRxDescriptor >= configNUM_FEC_RX_DESCRIPTORS ) - { - ulNextRxDescriptor = 0; - } - } - portEXIT_CRITICAL(); - - /* Tell the DMA a new buffer is available. */ - RDAR = MCF_FEC_RDAR_R_DES_ACTIVE; - } - - return ulLen; -} -/*-----------------------------------------------------------*/ - -void vFECTx( void ) -{ - /* When we get here the Tx descriptor should show as having completed. */ - while( pxFECTxDescriptor->status & TX_BD_R ) - { - vTaskDelay( fecMINIMAL_DELAY ); - } - - portENTER_CRITICAL(); - { - /* To maintain the zero copy implementation, point the Tx descriptor - to the data from the Rx buffer. */ - pxFECTxDescriptor->data = uip_buf; - - /* Setup the buffer descriptor for transmission */ - pxFECTxDescriptor->length = uip_len; - - /* NB this assumes only one Tx descriptor! */ - pxFECTxDescriptor->status = ( TX_BD_R | TX_BD_L | TX_BD_TC | TX_BD_W ); - } - portEXIT_CRITICAL(); - - /* Continue the Tx DMA task (in case it was waiting for a new TxBD) */ - TDAR = MCF_FEC_TDAR_X_DES_ACTIVE; - - /* uip_buf is being used by the Tx descriptor. Allocate a new buffer to - uip_buf. */ - uip_buf = prvGetFreeBuffer(); -} -/*-----------------------------------------------------------*/ - -static void prvReturnBuffer( unsigned char *pucBuffer ) -{ -unsigned long ul; - - /* Mark a buffer as free for use. */ - for( ul = 0; ul < fecNUM_BUFFERS; ul++ ) - { - if( pucAlignedBufferStartAddresses[ ul ] == pucBuffer ) - { - ucBufferInUse[ ul ] = pdFALSE; - break; - } - } -} -/*-----------------------------------------------------------*/ - -static unsigned char *prvGetFreeBuffer( void ) -{ -portBASE_TYPE x; -unsigned char *pucReturn = NULL; -unsigned long ulAttempts = 0; - - while( pucReturn == NULL ) - { - /* Look through the buffers to find one that is not in use by - anything else. */ - for( x = 0; x < fecNUM_BUFFERS; x++ ) - { - if( ucBufferInUse[ x ] == pdFALSE ) - { - ucBufferInUse[ x ] = pdTRUE; - pucReturn = pucAlignedBufferStartAddresses[ x ]; - break; - } - } - - /* Was a buffer found? */ - if( pucReturn == NULL ) - { - ulAttempts++; - - if( ulAttempts >= uipBUFFER_WAIT_ATTEMPTS ) - { - break; - } - - /* Wait then look again. */ - vTaskDelay( fecMINIMAL_DELAY ); - } - } - - return pucReturn; -} -/*-----------------------------------------------------------*/ - -void interrupt 86 vFECISRHandler( void ) -{ -unsigned long ulEvent; -portBASE_TYPE xHighPriorityTaskWoken = pdFALSE; - - /* Determine the cause of the interrupt. */ - ulEvent = EIR & EIMR; - EIR = ulEvent; - - if( ulEvent & EIR_RXF_MASK ) - { - /* A packet has been received. Wake the handler task in case it is - blocked. */ - xSemaphoreGiveFromISR( xFECSemaphore, &xHighPriorityTaskWoken ); - } - - if( ulEvent & EIR_TXF_MASK ) - { - /* The Tx has completed. Mark the buffer it was using as free again. */ - prvReturnBuffer( pxFECTxDescriptor->data ); - pxFECTxDescriptor->data = NULL; - } - - if (ulEvent & ( EIR_UN_MASK | EIR_RL_MASK | EIR_LC_MASK | EIR_EBERR_MASK | EIR_BABT_MASK | EIR_BABR_MASK | EIR_HBERR_MASK ) ) - { - /* Sledge hammer error handling. */ - prvInitialiseFECBuffers(); - RDAR = MCF_FEC_RDAR_R_DES_ACTIVE; - } - - portEND_SWITCHING_ISR( xHighPriorityTaskWoken ); -} diff --git a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/FEC.h b/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/FEC.h deleted file mode 100644 index 9707c25ce..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/FEC.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - FreeRTOS.org V5.0.3 - Copyright (C) 2003-2008 Richard Barry. - - This file is part of the FreeRTOS.org distribution. - - FreeRTOS.org is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - FreeRTOS.org is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with FreeRTOS.org; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - - A special exception to the GPL can be applied should you wish to distribute - a combined work that includes FreeRTOS.org, without being obliged to provide - the source code for any proprietary components. See the licensing section - of http://www.FreeRTOS.org for full details of how and when the exception - can be applied. - - *************************************************************************** - See http://www.FreeRTOS.org for documentation, latest information, license - and contact details. Please ensure to read the configuration and relevant - port sections of the online documentation. - *************************************************************************** -*/ - -#ifndef INC_FEC_H -#define INC_FEC_H - -/* Configure the FEC peripheral, IO and descriptors. */ -void vInitFEC( void ); - -/* Receive any data into the uip_buf array. */ -unsigned long ulFECRx( void ); - -/* Transmit the uip_buf array. */ -void vFECTx( void ); - -#endif - diff --git a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/FreeRTOSConfig.h b/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/FreeRTOSConfig.h deleted file mode 100644 index 3711914ee..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/FreeRTOSConfig.h +++ /dev/null @@ -1,138 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - - -/* CodeWarrior often thinks it knows better than you which files you want to -build - and changes the port.c and portasm.S files included in the project from -the ColdFire V1 versions to the x86 versions. If you get lots of errors output -when either file is compiled then delete the files from the project and then -add back in the port.c and portasm.S files that are located in the -FreeRTOS\Source\portable\GCC\ColdFire_V1 directory. Remove the line below -before compiling. */ - -#error Read the comment above this line, then delete this error statement! - - -#ifndef FREERTOS_CONFIG_H -#define FREERTOS_CONFIG_H - -#include -#include "derivative.h" - -/*----------------------------------------------------------- - * Application specific definitions. - * - * These definitions should be adjusted for your particular hardware and - * application requirements. - * - * THESE PARAMETERS ARE DESCRIBED WITHIN THE 'CONFIGURATION' SECTION OF THE - * FreeRTOS API DOCUMENTATION AVAILABLE ON THE FreeRTOS.org WEB SITE. - * - * See http://www.freertos.org/a00110.html - *----------------------------------------------------------*/ - -#define configUSE_PREEMPTION 1 -#define configUSE_IDLE_HOOK 0 -#define configUSE_TICK_HOOK 1 -#define configCPU_CLOCK_HZ ( 50000000UL ) -#define configTICK_RATE_HZ ( ( TickType_t ) 100 ) -#define configMINIMAL_STACK_SIZE ( ( unsigned short ) 100 ) -#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 13 * 1024 ) ) -#define configMAX_TASK_NAME_LEN ( 12 ) -#define configUSE_TRACE_FACILITY 1 -#define configUSE_16_BIT_TICKS 0 -#define configIDLE_SHOULD_YIELD 0 -#define configUSE_CO_ROUTINES 0 -#define configUSE_MUTEXES 1 -#define configCHECK_FOR_STACK_OVERFLOW 1 -#define configGENERATE_RUN_TIME_STATS 0 -#define configUSE_RECURSIVE_MUTEXES 1 -#define configQUEUE_REGISTRY_SIZE 0 -#define configUSE_COUNTING_SEMAPHORES 0 - -#define configMAX_PRIORITIES ( 6 ) -#define configMAX_CO_ROUTINE_PRIORITIES ( 2 ) - -/* Set the following definitions to 1 to include the API function, or zero -to exclude the API function. */ - -#define INCLUDE_vTaskPrioritySet 1 -#define INCLUDE_uxTaskPriorityGet 1 -#define INCLUDE_vTaskDelete 1 -#define INCLUDE_vTaskCleanUpResources 0 -#define INCLUDE_vTaskSuspend 1 -#define INCLUDE_vTaskDelayUntil 1 -#define INCLUDE_vTaskDelay 1 -#define INCLUDE_uxTaskGetStackHighWaterMark 1 - -/* It is not advisable to change these values on a Coldfire V1 core. */ -#define configKERNEL_INTERRUPT_PRIORITY 1 -#define configMAX_SYSCALL_INTERRUPT_PRIORITY 7 - -/* This demo makes use of one or more example stats formatting functions. These -format the raw data provided by the uxTaskGetSystemState() function in to human -readable ASCII form. See the notes in the implementation of vTaskList() within -FreeRTOS/Source/tasks.c for limitations. */ -#define configUSE_STATS_FORMATTING_FUNCTIONS 1 - - -/* Ethernet configuration. */ -#define configMAC_0 0x00 -#define configMAC_1 0x04 -#define configMAC_2 0x9F -#define configMAC_3 0x00 -#define configMAC_4 0xAB -#define configMAC_5 0x2B - -#define configIP_ADDR0 192 -#define configIP_ADDR1 168 -#define configIP_ADDR2 0 -#define configIP_ADDR3 222 - -#define configGW_ADDR0 192 -#define configGW_ADDR1 168 -#define configGW_ADDR2 0 -#define configGW_ADDR3 3 - -#define configNET_MASK0 255 -#define configNET_MASK1 255 -#define configNET_MASK2 255 -#define configNET_MASK3 0 - -#define configNUM_FEC_RX_DESCRIPTORS 2 -#define configFEC_BUFFER_SIZE 1520 /* Should be multiple of 16. */ -#define configUSE_PROMISCUOUS_MODE 0 -#define configETHERNET_INPUT_TASK_STACK_SIZE ( 320 ) -#define configETHERNET_INPUT_TASK_PRIORITY ( configMAX_PRIORITIES - 1 ) - -#define configPHY_ADDRESS 1 - -#if ( configFEC_BUFFER_SIZE & 0x0F ) != 0 - #error configFEC_BUFFER_SIZE must be a multiple of 16. -#endif - -#endif /* FREERTOS_CONFIG_H */ diff --git a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/ParTest/ParTest.c b/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/ParTest/ParTest.c deleted file mode 100644 index c9ab3a7bd..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/ParTest/ParTest.c +++ /dev/null @@ -1,116 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - - -#include "FreeRTOS.h" -#include "task.h" -#include "partest.h" - -#define partstNUM_LEDs 4 - -/*----------------------------------------------------------- - * Simple LED IO routines for the tower LEDs LED1 to LED4. - *-----------------------------------------------------------*/ - -void vParTestInitialise( void ) -{ - /* Enable pull and output drive. */ - PTHPE_PTHPE3 = 1; - PTHDD_PTHDD3 = 1; - - PTEPE_PTEPE5 = 1; - PTEDD_PTEDD5 = 1; - - PTGPE_PTGPE5 = 1; - PTGDD_PTGDD5 = 1; - - PTEPE_PTEPE3 = 1; - PTEDD_PTEDD3 = 1; - - /* Enable clock to ports. */ - SCGC3_PTE = 1; - SCGC3_PTF = 1; - SCGC3_PTG = 1; - - /* Ensure the LEDs are off. */ - vParTestSetLED( 0, 0 ); - vParTestSetLED( 1, 0 ); - vParTestSetLED( 2, 0 ); - vParTestSetLED( 3, 0 ); -} -/*-----------------------------------------------------------*/ - -void vParTestSetLED( unsigned portBASE_TYPE uxLED, signed portBASE_TYPE xValue ) -{ - switch( uxLED ) - { - case 0: PTHD_PTHD3 = xValue; - break; - case 1: PTED_PTED5 = xValue; - break; - case 2: PTGD_PTGD5 = xValue; - break; - case 3: PTED_PTED3 = xValue; - break; - default : /* There are no other LEDs. */ - break; - } -} -/*-----------------------------------------------------------*/ - -void vParTestToggleLED( unsigned portBASE_TYPE uxLED ) -{ - portENTER_CRITICAL(); - { - switch( uxLED ) - { - case 0: PTHD_PTHD3 = !PTHD_PTHD3; - break; - case 1: PTED_PTED5 = !PTED_PTED5; - break; - case 2: PTGD_PTGD5 = !PTGD_PTGD5; - break; - case 3: PTED_PTED3 = !!PTED_PTED3; - break; - default : /* There are no other LEDs. */ - break; - } - } - portEXIT_CRITICAL(); -} -/*-----------------------------------------------------------*/ - -unsigned portBASE_TYPE uxParTestGetLED( unsigned portBASE_TYPE uxLED ) -{ - /* We ignore the parameter as in this simple example we simply return the - state of LED3. */ - ( void ) uxLED; - - return PTED_PTED3; -} - - diff --git a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/derivative.h b/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/derivative.h deleted file mode 100644 index 8ed9a3d92..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/derivative.h +++ /dev/null @@ -1,15 +0,0 @@ -/* - * Note: This file is recreated by the project wizard whenever the MCU is - * changed and should not be edited by hand - */ - -/* Include the derivative-specific header file */ -#include - -#define _Stop asm ( mov3q #4,d0; bclr.b d0,SOPT1; stop #0x2000; ) - /*!< Macro to enter stop modes, STOPE bit in SOPT1 register must be set prior to executing this macro */ - -#define _Wait asm ( mov3q #4,d0; bset.b d0,SOPT1; nop; stop #0x2000; ) - /*!< Macro to enter wait mode */ - - diff --git a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/eth.h b/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/eth.h deleted file mode 100644 index 5c99413b1..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/eth.h +++ /dev/null @@ -1,55 +0,0 @@ -/*! - * \file eth.h - * \brief Definitinos for Ethernet Frames - * \version $Revision: 1.2 $ - * \author Michael Norman - */ - -#ifndef _ETH_H -#define _ETH_H - -/*******************************************************************/ - -/* Ethernet standard lengths in bytes*/ -#define ETH_ADDR_LEN (6) -#define ETH_TYPE_LEN (2) -#define ETH_CRC_LEN (4) -#define ETH_MAX_DATA (1500) -#define ETH_MIN_DATA (46) -#define ETH_HDR_LEN (ETH_ADDR_LEN * 2 + ETH_TYPE_LEN) - -/* Defined Ethernet Frame Types */ -#define ETH_FRM_IP (0x0800) -#define ETH_FRM_ARP (0x0806) -#define ETH_FRM_RARP (0x8035) -#define ETH_FRM_TEST (0xA5A5) - -/* Maximum and Minimum Ethernet Frame Sizes */ -#define ETH_MAX_FRM (ETH_HDR_LEN + ETH_MAX_DATA + ETH_CRC_LEN) -#define ETH_MIN_FRM (ETH_HDR_LEN + ETH_MIN_DATA + ETH_CRC_LEN) -#define ETH_MTU (ETH_HDR_LEN + ETH_MAX_DATA) - -/* Ethernet Addresses */ -typedef unsigned char ETH_ADDR[ETH_ADDR_LEN]; - -/* 16-bit Ethernet Frame Type, ie. Protocol */ -typedef unsigned short ETH_FRM_TYPE; - -/* Ethernet Frame Header definition */ -typedef struct -{ - ETH_ADDR dest; - ETH_ADDR src; - ETH_FRM_TYPE type; -} ETH_HDR; - -/* Ethernet Frame definition */ -typedef struct -{ - ETH_HDR head; - unsigned char* data; -} ETH_FRAME; - -/*******************************************************************/ - -#endif /* _ETH_H */ diff --git a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/eth_phy.h b/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/eth_phy.h deleted file mode 100644 index 745668c6a..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/eth_phy.h +++ /dev/null @@ -1,70 +0,0 @@ -/*! - * \file eth.h - * \brief Definitions for Ethernet Physical Layer Interface - * \version $Revision: 1.3 $ - * \author Michael Norman - */ - -#ifndef _ETH_PHY_H -#define _ETH_PHY_H - -/*******************************************************************/ - -/* MII Register Addresses */ -#define PHY_BMCR (0x00) -#define PHY_BMSR (0x01) -#define PHY_PHYIDR1 (0x02) -#define PHY_PHYIDR2 (0x03) -#define PHY_ANAR (0x04) -#define PHY_ANLPAR (0x05) - -/* Bit definitions and macros for PHY_CTRL */ -#define PHY_BMCR_RESET (0x8000) -#define PHY_BMCR_LOOP (0x4000) -#define PHY_BMCR_SPEED (0x2000) -#define PHY_BMCR_AN_ENABLE (0x1000) -#define PHY_BMCR_POWERDOWN (0x0800) -#define PHY_BMCR_ISOLATE (0x0400) -#define PHY_BMCR_AN_RESTART (0x0200) -#define PHY_BMCR_FDX (0x0100) -#define PHY_BMCR_COL_TEST (0x0080) - -/* Bit definitions and macros for PHY_STAT */ -#define PHY_BMSR_100BT4 (0x8000) -#define PHY_BMSR_100BTX_FDX (0x4000) -#define PHY_BMSR_100BTX (0x2000) -#define PHY_BMSR_10BT_FDX (0x1000) -#define PHY_BMSR_10BT (0x0800) -#define PHY_BMSR_NO_PREAMBLE (0x0040) -#define PHY_BMSR_AN_COMPLETE (0x0020) -#define PHY_BMSR_REMOTE_FAULT (0x0010) -#define PHY_BMSR_AN_ABILITY (0x0008) -#define PHY_BMSR_LINK (0x0004) -#define PHY_BMSR_JABBER (0x0002) -#define PHY_BMSR_EXTENDED (0x0001) - -/* Bit definitions and macros for PHY_AN_ADV */ -#define PHY_ANAR_NEXT_PAGE (0x8001) -#define PHY_ANAR_REM_FAULT (0x2001) -#define PHY_ANAR_PAUSE (0x0401) -#define PHY_ANAR_100BT4 (0x0201) -#define PHY_ANAR_100BTX_FDX (0x0101) -#define PHY_ANAR_100BTX (0x0081) -#define PHY_ANAR_10BT_FDX (0x0041) -#define PHY_ANAR_10BT (0x0021) -#define PHY_ANAR_802_3 (0x0001) - -/* Bit definitions and macros for PHY_AN_LINK_PAR */ -#define PHY_ANLPAR_NEXT_PAGE (0x8000) -#define PHY_ANLPAR_ACK (0x4000) -#define PHY_ANLPAR_REM_FAULT (0x2000) -#define PHY_ANLPAR_PAUSE (0x0400) -#define PHY_ANLPAR_100BT4 (0x0200) -#define PHY_ANLPAR_100BTX_FDX (0x0100) -#define PHY_ANLPAR_100BTX (0x0080) -#define PHY_ANLPAR_10BTX_FDX (0x0040) -#define PHY_ANLPAR_10BT (0x0020) - -/*******************************************************************/ - -#endif /* _ETH_PHY_H */ diff --git a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/exceptions.c b/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/exceptions.c deleted file mode 100644 index e10f052e3..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/exceptions.c +++ /dev/null @@ -1,444 +0,0 @@ -/* - * File: exceptions.c - * Purpose: Generic exception handling for ColdFire processors - * - */ - -#include "derivative.h" -#include "exceptions.h" -#include "startcf.h" - -#define REGISTER_ABI __REGABI__ - -extern asm void interrupt 109 vPortYieldISR( void ); -extern void interrupt 86 vFECISRHandler( void ); - -/***********************************************************************/ -/* - * Set NO_PRINTF to 0 in order the exceptions.c interrupt handler - * to output messages to the standard io. - * - */ -#define NO_PRINTF 1 - -#if NO_PRINTF -#define VECTORDISPLAY(MESSAGE) asm { nop; }; -#define VECTORDISPLAY2(MESSAGE,MESSAGE2) asm { nop; }; -#define VECTORDISPLAY3(MESSAGE,MESSAGE2,MESSAGE3) asm { nop; }; -#else -#include -#define VECTORDISPLAY(MESSAGE1) printf(MESSAGE1); -#define VECTORDISPLAY2(MESSAGE1,MESSAGE2) printf(MESSAGE1,MESSAGE2); -#define VECTORDISPLAY3(MESSAGE1,MESSAGE2,MESSAGE3) printf(MESSAGE1,MESSAGE2,MESSAGE3); -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -extern unsigned long far _SP_INIT[]; - -/***********************************************************************/ -/* - * Handling of the TRK ColdFire libs (printf support in Debugger Terminal) - * - * To enable this support: - * - Set CONSOLE_IO_SUPPORT 1 in this file; this will enable - * TrapHandler_printf for the trap #14 exception. - * - * - Make sure the file console_io_cf.c is in your project. - * - * - In the debugger make sure that in the Connection "Setup" dialog, - * "Debug Options" property page, the check box - * "Enable Terminal printf support" is set. - * - * - * - */ -#define CONSOLE_IO_SUPPORT 0 - -#if CONSOLE_IO_SUPPORT -asm void TrapHandler_printf(void) { - HALT - RTE -} -#endif - -/***********************************************************************/ -/* - * This is the handler for all exceptions which are not common to all - * ColdFire Chips. - * - * Called by mcf_exception_handler - * - */ -void derivative_interrupt(unsigned long vector) -{ - if (vector < 64 || vector > 192) { - VECTORDISPLAY2("User Defined Vector #%d\n",vector); - } -} - -/*********************************************************************** - * - * This is the exception handler for all exceptions common to all - * chips ColdFire. Most exceptions do nothing, but some of the more - * important ones are handled to some extent. - * - * Called by asm_exception_handler - * - * The ColdFire family of processors has a simplified exception stack - * frame that looks like the following: - * - * 3322222222221111 111111 - * 1098765432109876 5432109876543210 - * 8 +----------------+----------------+ - * | Program Counter | - * 4 +----------------+----------------+ - * |FS/Fmt/Vector/FS| SR | - * SP --> 0 +----------------+----------------+ - * - * The stack self-aligns to a 4-byte boundary at an exception, with - * the FS/Fmt/Vector/FS field indicating the size of the adjustment - * (SP += 0,1,2,3 bytes). - * 31 28 27 26 25 18 17 16 15 0 - * 4 +---------------------------------------+------------------------------------+ - * | Format | FS[3..2] | Vector | FS[1..0] | SR | - * SP --> 0 +---------------------------------------+------------------------------------+ - */ -#define MCF5XXX_RD_SF_FORMAT(PTR) \ - ((*((unsigned short *)(PTR)) >> 12) & 0x00FF) - -#define MCF5XXX_RD_SF_VECTOR(PTR) \ - ((*((unsigned short *)(PTR)) >> 2) & 0x00FF) - -#define MCF5XXX_RD_SF_FS(PTR) \ - ( ((*((unsigned short *)(PTR)) & 0x0C00) >> 8) | (*((unsigned short *)(PTR)) & 0x0003) ) - -#define MCF5XXX_SF_SR(PTR) *(((unsigned short *)(PTR))+1) - -#define MCF5XXX_SF_PC(PTR) *((unsigned long *)(PTR)+1) - -#define MCF5XXX_EXCEPTFMT "%s -- PC = %#08X\n" - - -void mcf_exception_handler(void *framepointer) -{ - volatile unsigned long exceptionStackFrame = (*(unsigned long *)(framepointer)); - volatile unsigned short stackFrameSR = MCF5XXX_SF_SR(framepointer); - volatile unsigned short stackFrameWord = (*(unsigned short *)(framepointer)); - volatile unsigned long stackFrameFormat = (unsigned long)MCF5XXX_RD_SF_FORMAT(&stackFrameWord); - volatile unsigned long stackFrameFS = (unsigned long)MCF5XXX_RD_SF_FS(&stackFrameWord); - volatile unsigned long stackFrameVector = (unsigned long)MCF5XXX_RD_SF_VECTOR(&stackFrameWord); - volatile unsigned long stackFramePC = MCF5XXX_SF_PC(framepointer); - - switch (stackFrameFormat) - { - case 4: - case 5: - case 6: - case 7: - break; - default: - VECTORDISPLAY3(MCF5XXX_EXCEPTFMT,"Illegal stack type", stackFramePC); - break; - } - - switch (stackFrameVector) - { - case 2: - VECTORDISPLAY3(MCF5XXX_EXCEPTFMT, "Access Error", stackFramePC); - switch (stackFrameFS) - { - case 4: - VECTORDISPLAY("Error on instruction fetch\n"); - break; - case 8: - VECTORDISPLAY("Error on operand write\n"); - break; - case 9: - VECTORDISPLAY("Attempted write to write-protected space\n"); - break; - case 12: - VECTORDISPLAY("Error on operand read\n"); - break; - default: - VECTORDISPLAY("Reserved Fault Status Encoding\n"); - break; - } - break; - case 3: - VECTORDISPLAY3(MCF5XXX_EXCEPTFMT, "Address Error", stackFramePC); - switch (stackFrameFS) - { - case 4: - VECTORDISPLAY("Error on instruction fetch\n"); - break; - case 8: - VECTORDISPLAY("Error on operand write\n"); - break; - case 9: - VECTORDISPLAY("Attempted write to write-protected space\n"); - break; - case 12: - VECTORDISPLAY("Error on operand read\n"); - break; - default: - VECTORDISPLAY("Reserved Fault Status Encoding\n"); - break; - } - break; - case 4: - VECTORDISPLAY3(MCF5XXX_EXCEPTFMT, "Illegal instruction", stackFramePC); - break; - case 8: - VECTORDISPLAY3(MCF5XXX_EXCEPTFMT, "Privilege violation", stackFramePC); - break; - case 9: - VECTORDISPLAY3(MCF5XXX_EXCEPTFMT, "Trace Exception", stackFramePC); - break; - case 10: - VECTORDISPLAY3(MCF5XXX_EXCEPTFMT, "Unimplemented A-Line Instruction", stackFramePC); - break; - case 11: - VECTORDISPLAY3(MCF5XXX_EXCEPTFMT, "Unimplemented F-Line Instruction", stackFramePC); - break; - case 12: - VECTORDISPLAY3(MCF5XXX_EXCEPTFMT, "Debug Interrupt", stackFramePC); - break; - case 14: - VECTORDISPLAY3(MCF5XXX_EXCEPTFMT, "Format Error", stackFramePC); - break; - case 15: - VECTORDISPLAY3(MCF5XXX_EXCEPTFMT, "Unitialized Interrupt", stackFramePC); - break; - case 24: - VECTORDISPLAY3(MCF5XXX_EXCEPTFMT, "Spurious Interrupt", stackFramePC); - break; - case 25: - case 26: - case 27: - case 28: - case 29: - case 30: - case 31: - VECTORDISPLAY2("Autovector interrupt level %d\n", stackFrameVector - 24); - break; - case 32: - case 33: - case 34: - case 35: - case 36: - case 37: - case 38: - case 39: - case 40: - case 41: - case 42: - case 43: - case 44: - case 45: - case 46: - case 47: - VECTORDISPLAY2("TRAP #%d\n", stackFrameVector - 32); - break; - case 5: - case 6: - case 7: - case 13: - case 16: - case 17: - case 18: - case 19: - case 20: - case 21: - case 22: - case 23: - case 48: - case 49: - case 50: - case 51: - case 52: - case 53: - case 54: - case 55: - case 56: - case 57: - case 58: - case 59: - case 60: - case 61: - case 62: - case 63: - VECTORDISPLAY2("Reserved: #%d\n", stackFrameVector); - break; - default: - derivative_interrupt(stackFrameVector); - break; - } -} - -#if REGISTER_ABI -asm void asm_exception_handler(void) -{ - link a6,#0 - lea -20(sp), sp - movem.l d0-d2/a0-a1, (sp) - lea 24(sp),a0 /* A0 point to exception stack frame on the stack */ - jsr mcf_exception_handler - movem.l (sp), d0-d2/a0-a1 - lea 20(sp), sp - unlk a6 - rte -} -#else -asm void asm_exception_handler(void) -{ - link a6,#0 - lea -20(sp), sp - movem.l d0-d2/a0-a1, (sp) - pea 24(sp) /* push exception frame address */ - jsr mcf_exception_handler - movem.l 4(sp), d0-d2/a0-a1 - lea 24(sp), sp - unlk a6 - rte -} -#endif - -typedef void (* vectorTableEntryType)(void); - -#if CONSOLE_IO_SUPPORT -vectorTableEntryType vector_printf @Vtrap14 = TrapHandler_printf; -#endif - -/* - * MCF51CN128 vector table - * CF V1 has 114 vector + SP_INIT in the vector table (115 entries) - */ - -__declspec(weak) vectorTableEntryType vector_0 @INITSP = (vectorTableEntryType)&_SP_INIT; -__declspec(weak) vectorTableEntryType vector_1 @INITPC = (vectorTableEntryType)&_startup; -__declspec(weak) vectorTableEntryType vector_2 @Vaccerr = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_3 @Vadderr = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_4 @Viinstr = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_5 @VReserved5 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_6 @VReserved6 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_7 @VReserved7 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_8 @Vprviol = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_9 @Vtrace = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_10 @Vunilaop = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_11 @Vunilfop = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_12 @Vdbgi = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_13 @VReserved13 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_14 @Vferror = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_15 @VReserved15 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_16 @VReserved16 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_17 @VReserved17 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_18 @VReserved18 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_19 @VReserved19 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_20 @VReserved20 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_21 @VReserved21 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_22 @VReserved22 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_23 @VReserved23 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_24 @Vspuri = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_25 @VReserved25 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_26 @VReserved26 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_27 @VReserved27 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_28 @VReserved28 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_29 @VReserved29 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_30 @VReserved30 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_31 @VReserved31 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_32 @Vtrap0 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_33 @Vtrap1 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_34 @Vtrap2 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_35 @Vtrap3 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_36 @Vtrap4 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_37 @Vtrap5 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_38 @Vtrap6 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_39 @Vtrap7 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_40 @Vtrap8 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_41 @Vtrap9 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_42 @Vtrap10 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_43 @Vtrap11 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_44 @Vtrap12 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_45 @Vtrap13 = asm_exception_handler; -#if CONSOLE_IO_SUPPORT == 0 -__declspec(weak) vectorTableEntryType vector_46 @Vtrap14 = asm_exception_handler; -#endif -__declspec(weak) vectorTableEntryType vector_47 @Vtrap15 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_48 @VReserved48 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_49 @VReserved49 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_50 @VReserved50 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_51 @VReserved51 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_52 @VReserved52 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_53 @VReserved53 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_54 @VReserved54 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_55 @VReserved55 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_56 @VReserved56 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_57 @VReserved57 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_58 @VReserved58 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_59 @VReserved59 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_60 @VReserved60 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_61 @Vunsinstr = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_62 @VReserved62 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_63 @VReserved63 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_64 @Virq = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_65 @Vlvd = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_66 @Vlol = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_67 @Vtpm1ch0 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_68 @Vtpm1ch1 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_69 @Vtpm1ch2 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_70 @Vtpm1ovf = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_71 @Vmtim1 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_72 @Vtpm2ch0 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_73 @Vtpm2ch1 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_74 @Vtpm2ch2 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_75 @Vtpm2ovf = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_76 @Vspi1 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_77 @Vspi2 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_78 @Vmtim2 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_79 @Vsci1err = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_80 @Vsci1rx = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_81 @Vsci1tx = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_82 @Vsci2err = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_83 @Vsci2rx = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_84 @Vsci2tx = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_85 @Vsci3or = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_86 @Vfectxf = vFECISRHandler; -__declspec(weak) vectorTableEntryType vector_87 @Vfecrxf = vFECISRHandler; -__declspec(weak) vectorTableEntryType vector_88 @Vfecother = vFECISRHandler; -__declspec(weak) vectorTableEntryType vector_89 @Vfechberr = vFECISRHandler; -__declspec(weak) vectorTableEntryType vector_90 @Vfecbabr = vFECISRHandler; -__declspec(weak) vectorTableEntryType vector_91 @Vfecbabt = vFECISRHandler; -__declspec(weak) vectorTableEntryType vector_92 @Vfecgra = vFECISRHandler; -__declspec(weak) vectorTableEntryType vector_93 @Vfectxb = vFECISRHandler; -__declspec(weak) vectorTableEntryType vector_94 @Vfecrxb = vFECISRHandler; -__declspec(weak) vectorTableEntryType vector_95 @Vfecmii = vFECISRHandler; -__declspec(weak) vectorTableEntryType vector_96 @Vfeceberr = vFECISRHandler; -__declspec(weak) vectorTableEntryType vector_97 @Vfeclc = vFECISRHandler; -__declspec(weak) vectorTableEntryType vector_98 @Vfecrl = vFECISRHandler; -__declspec(weak) vectorTableEntryType vector_99 @Vfecun = vFECISRHandler; -__declspec(weak) vectorTableEntryType vector_100 @Vsci3err = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_101 @Vsci3rx = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_102 @Vsci3tx = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_103 @VL7swi = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_104 @VL6swi = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_105 @VL5swi = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_106 @VL4swi = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_107 @VL3swi = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_108 @VL2swi = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_109 @VL1swi = vPortYieldISR; -__declspec(weak) vectorTableEntryType vector_110 @Viic1 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_111 @Viic2 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_112 @Vadc = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_113 @Vkeyboard = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_114 @Vrtc = asm_exception_handler; - - - -#ifdef __cplusplus -} -#endif - - diff --git a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/exceptions.h b/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/exceptions.h deleted file mode 100644 index 7995f3044..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/exceptions.h +++ /dev/null @@ -1,52 +0,0 @@ -/* - * File: exceptions.h - * Purpose: Generic exception handling for ColdFire processors - * - * Notes: - */ - -#ifndef _MCF_EXCEPTIONS_H -#define _MCF_EXCEPTIONS_H - -#ifdef __cplusplus -extern "C" { -#endif - -/***********************************************************************/ -/* - * This is the handler for all exceptions which are not common to all - * ColdFire Chips. - * - * Called by mcf_exception_handler - * - */ -void derivative_interrupt(unsigned long vector); - -/***********************************************************************/ -/* - * This is the exception handler for all exceptions common to all - * chips ColdFire. Most exceptions do nothing, but some of the more - * important ones are handled to some extent. - * - * Called by asm_exception_handler - */ -void mcf_exception_handler(void *framepointer); - - -/***********************************************************************/ -/* - * This is the assembly exception handler defined in the vector table. - * This function is in assembler so that the frame pointer can be read - * from the stack. - * Note that the way to give the stack frame as argument to the c handler - * depends on the used ABI (Register, Compact or Standard). - * - */ -asm void asm_exception_handler(void); - -#ifdef __cplusplus -} -#endif - -#endif /* _MCF_EXCEPTIONS_H */ - diff --git a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/exceptions.old0.c b/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/exceptions.old0.c deleted file mode 100644 index e10f052e3..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/exceptions.old0.c +++ /dev/null @@ -1,444 +0,0 @@ -/* - * File: exceptions.c - * Purpose: Generic exception handling for ColdFire processors - * - */ - -#include "derivative.h" -#include "exceptions.h" -#include "startcf.h" - -#define REGISTER_ABI __REGABI__ - -extern asm void interrupt 109 vPortYieldISR( void ); -extern void interrupt 86 vFECISRHandler( void ); - -/***********************************************************************/ -/* - * Set NO_PRINTF to 0 in order the exceptions.c interrupt handler - * to output messages to the standard io. - * - */ -#define NO_PRINTF 1 - -#if NO_PRINTF -#define VECTORDISPLAY(MESSAGE) asm { nop; }; -#define VECTORDISPLAY2(MESSAGE,MESSAGE2) asm { nop; }; -#define VECTORDISPLAY3(MESSAGE,MESSAGE2,MESSAGE3) asm { nop; }; -#else -#include -#define VECTORDISPLAY(MESSAGE1) printf(MESSAGE1); -#define VECTORDISPLAY2(MESSAGE1,MESSAGE2) printf(MESSAGE1,MESSAGE2); -#define VECTORDISPLAY3(MESSAGE1,MESSAGE2,MESSAGE3) printf(MESSAGE1,MESSAGE2,MESSAGE3); -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -extern unsigned long far _SP_INIT[]; - -/***********************************************************************/ -/* - * Handling of the TRK ColdFire libs (printf support in Debugger Terminal) - * - * To enable this support: - * - Set CONSOLE_IO_SUPPORT 1 in this file; this will enable - * TrapHandler_printf for the trap #14 exception. - * - * - Make sure the file console_io_cf.c is in your project. - * - * - In the debugger make sure that in the Connection "Setup" dialog, - * "Debug Options" property page, the check box - * "Enable Terminal printf support" is set. - * - * - * - */ -#define CONSOLE_IO_SUPPORT 0 - -#if CONSOLE_IO_SUPPORT -asm void TrapHandler_printf(void) { - HALT - RTE -} -#endif - -/***********************************************************************/ -/* - * This is the handler for all exceptions which are not common to all - * ColdFire Chips. - * - * Called by mcf_exception_handler - * - */ -void derivative_interrupt(unsigned long vector) -{ - if (vector < 64 || vector > 192) { - VECTORDISPLAY2("User Defined Vector #%d\n",vector); - } -} - -/*********************************************************************** - * - * This is the exception handler for all exceptions common to all - * chips ColdFire. Most exceptions do nothing, but some of the more - * important ones are handled to some extent. - * - * Called by asm_exception_handler - * - * The ColdFire family of processors has a simplified exception stack - * frame that looks like the following: - * - * 3322222222221111 111111 - * 1098765432109876 5432109876543210 - * 8 +----------------+----------------+ - * | Program Counter | - * 4 +----------------+----------------+ - * |FS/Fmt/Vector/FS| SR | - * SP --> 0 +----------------+----------------+ - * - * The stack self-aligns to a 4-byte boundary at an exception, with - * the FS/Fmt/Vector/FS field indicating the size of the adjustment - * (SP += 0,1,2,3 bytes). - * 31 28 27 26 25 18 17 16 15 0 - * 4 +---------------------------------------+------------------------------------+ - * | Format | FS[3..2] | Vector | FS[1..0] | SR | - * SP --> 0 +---------------------------------------+------------------------------------+ - */ -#define MCF5XXX_RD_SF_FORMAT(PTR) \ - ((*((unsigned short *)(PTR)) >> 12) & 0x00FF) - -#define MCF5XXX_RD_SF_VECTOR(PTR) \ - ((*((unsigned short *)(PTR)) >> 2) & 0x00FF) - -#define MCF5XXX_RD_SF_FS(PTR) \ - ( ((*((unsigned short *)(PTR)) & 0x0C00) >> 8) | (*((unsigned short *)(PTR)) & 0x0003) ) - -#define MCF5XXX_SF_SR(PTR) *(((unsigned short *)(PTR))+1) - -#define MCF5XXX_SF_PC(PTR) *((unsigned long *)(PTR)+1) - -#define MCF5XXX_EXCEPTFMT "%s -- PC = %#08X\n" - - -void mcf_exception_handler(void *framepointer) -{ - volatile unsigned long exceptionStackFrame = (*(unsigned long *)(framepointer)); - volatile unsigned short stackFrameSR = MCF5XXX_SF_SR(framepointer); - volatile unsigned short stackFrameWord = (*(unsigned short *)(framepointer)); - volatile unsigned long stackFrameFormat = (unsigned long)MCF5XXX_RD_SF_FORMAT(&stackFrameWord); - volatile unsigned long stackFrameFS = (unsigned long)MCF5XXX_RD_SF_FS(&stackFrameWord); - volatile unsigned long stackFrameVector = (unsigned long)MCF5XXX_RD_SF_VECTOR(&stackFrameWord); - volatile unsigned long stackFramePC = MCF5XXX_SF_PC(framepointer); - - switch (stackFrameFormat) - { - case 4: - case 5: - case 6: - case 7: - break; - default: - VECTORDISPLAY3(MCF5XXX_EXCEPTFMT,"Illegal stack type", stackFramePC); - break; - } - - switch (stackFrameVector) - { - case 2: - VECTORDISPLAY3(MCF5XXX_EXCEPTFMT, "Access Error", stackFramePC); - switch (stackFrameFS) - { - case 4: - VECTORDISPLAY("Error on instruction fetch\n"); - break; - case 8: - VECTORDISPLAY("Error on operand write\n"); - break; - case 9: - VECTORDISPLAY("Attempted write to write-protected space\n"); - break; - case 12: - VECTORDISPLAY("Error on operand read\n"); - break; - default: - VECTORDISPLAY("Reserved Fault Status Encoding\n"); - break; - } - break; - case 3: - VECTORDISPLAY3(MCF5XXX_EXCEPTFMT, "Address Error", stackFramePC); - switch (stackFrameFS) - { - case 4: - VECTORDISPLAY("Error on instruction fetch\n"); - break; - case 8: - VECTORDISPLAY("Error on operand write\n"); - break; - case 9: - VECTORDISPLAY("Attempted write to write-protected space\n"); - break; - case 12: - VECTORDISPLAY("Error on operand read\n"); - break; - default: - VECTORDISPLAY("Reserved Fault Status Encoding\n"); - break; - } - break; - case 4: - VECTORDISPLAY3(MCF5XXX_EXCEPTFMT, "Illegal instruction", stackFramePC); - break; - case 8: - VECTORDISPLAY3(MCF5XXX_EXCEPTFMT, "Privilege violation", stackFramePC); - break; - case 9: - VECTORDISPLAY3(MCF5XXX_EXCEPTFMT, "Trace Exception", stackFramePC); - break; - case 10: - VECTORDISPLAY3(MCF5XXX_EXCEPTFMT, "Unimplemented A-Line Instruction", stackFramePC); - break; - case 11: - VECTORDISPLAY3(MCF5XXX_EXCEPTFMT, "Unimplemented F-Line Instruction", stackFramePC); - break; - case 12: - VECTORDISPLAY3(MCF5XXX_EXCEPTFMT, "Debug Interrupt", stackFramePC); - break; - case 14: - VECTORDISPLAY3(MCF5XXX_EXCEPTFMT, "Format Error", stackFramePC); - break; - case 15: - VECTORDISPLAY3(MCF5XXX_EXCEPTFMT, "Unitialized Interrupt", stackFramePC); - break; - case 24: - VECTORDISPLAY3(MCF5XXX_EXCEPTFMT, "Spurious Interrupt", stackFramePC); - break; - case 25: - case 26: - case 27: - case 28: - case 29: - case 30: - case 31: - VECTORDISPLAY2("Autovector interrupt level %d\n", stackFrameVector - 24); - break; - case 32: - case 33: - case 34: - case 35: - case 36: - case 37: - case 38: - case 39: - case 40: - case 41: - case 42: - case 43: - case 44: - case 45: - case 46: - case 47: - VECTORDISPLAY2("TRAP #%d\n", stackFrameVector - 32); - break; - case 5: - case 6: - case 7: - case 13: - case 16: - case 17: - case 18: - case 19: - case 20: - case 21: - case 22: - case 23: - case 48: - case 49: - case 50: - case 51: - case 52: - case 53: - case 54: - case 55: - case 56: - case 57: - case 58: - case 59: - case 60: - case 61: - case 62: - case 63: - VECTORDISPLAY2("Reserved: #%d\n", stackFrameVector); - break; - default: - derivative_interrupt(stackFrameVector); - break; - } -} - -#if REGISTER_ABI -asm void asm_exception_handler(void) -{ - link a6,#0 - lea -20(sp), sp - movem.l d0-d2/a0-a1, (sp) - lea 24(sp),a0 /* A0 point to exception stack frame on the stack */ - jsr mcf_exception_handler - movem.l (sp), d0-d2/a0-a1 - lea 20(sp), sp - unlk a6 - rte -} -#else -asm void asm_exception_handler(void) -{ - link a6,#0 - lea -20(sp), sp - movem.l d0-d2/a0-a1, (sp) - pea 24(sp) /* push exception frame address */ - jsr mcf_exception_handler - movem.l 4(sp), d0-d2/a0-a1 - lea 24(sp), sp - unlk a6 - rte -} -#endif - -typedef void (* vectorTableEntryType)(void); - -#if CONSOLE_IO_SUPPORT -vectorTableEntryType vector_printf @Vtrap14 = TrapHandler_printf; -#endif - -/* - * MCF51CN128 vector table - * CF V1 has 114 vector + SP_INIT in the vector table (115 entries) - */ - -__declspec(weak) vectorTableEntryType vector_0 @INITSP = (vectorTableEntryType)&_SP_INIT; -__declspec(weak) vectorTableEntryType vector_1 @INITPC = (vectorTableEntryType)&_startup; -__declspec(weak) vectorTableEntryType vector_2 @Vaccerr = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_3 @Vadderr = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_4 @Viinstr = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_5 @VReserved5 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_6 @VReserved6 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_7 @VReserved7 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_8 @Vprviol = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_9 @Vtrace = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_10 @Vunilaop = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_11 @Vunilfop = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_12 @Vdbgi = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_13 @VReserved13 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_14 @Vferror = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_15 @VReserved15 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_16 @VReserved16 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_17 @VReserved17 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_18 @VReserved18 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_19 @VReserved19 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_20 @VReserved20 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_21 @VReserved21 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_22 @VReserved22 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_23 @VReserved23 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_24 @Vspuri = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_25 @VReserved25 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_26 @VReserved26 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_27 @VReserved27 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_28 @VReserved28 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_29 @VReserved29 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_30 @VReserved30 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_31 @VReserved31 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_32 @Vtrap0 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_33 @Vtrap1 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_34 @Vtrap2 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_35 @Vtrap3 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_36 @Vtrap4 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_37 @Vtrap5 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_38 @Vtrap6 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_39 @Vtrap7 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_40 @Vtrap8 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_41 @Vtrap9 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_42 @Vtrap10 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_43 @Vtrap11 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_44 @Vtrap12 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_45 @Vtrap13 = asm_exception_handler; -#if CONSOLE_IO_SUPPORT == 0 -__declspec(weak) vectorTableEntryType vector_46 @Vtrap14 = asm_exception_handler; -#endif -__declspec(weak) vectorTableEntryType vector_47 @Vtrap15 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_48 @VReserved48 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_49 @VReserved49 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_50 @VReserved50 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_51 @VReserved51 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_52 @VReserved52 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_53 @VReserved53 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_54 @VReserved54 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_55 @VReserved55 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_56 @VReserved56 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_57 @VReserved57 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_58 @VReserved58 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_59 @VReserved59 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_60 @VReserved60 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_61 @Vunsinstr = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_62 @VReserved62 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_63 @VReserved63 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_64 @Virq = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_65 @Vlvd = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_66 @Vlol = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_67 @Vtpm1ch0 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_68 @Vtpm1ch1 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_69 @Vtpm1ch2 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_70 @Vtpm1ovf = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_71 @Vmtim1 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_72 @Vtpm2ch0 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_73 @Vtpm2ch1 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_74 @Vtpm2ch2 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_75 @Vtpm2ovf = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_76 @Vspi1 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_77 @Vspi2 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_78 @Vmtim2 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_79 @Vsci1err = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_80 @Vsci1rx = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_81 @Vsci1tx = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_82 @Vsci2err = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_83 @Vsci2rx = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_84 @Vsci2tx = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_85 @Vsci3or = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_86 @Vfectxf = vFECISRHandler; -__declspec(weak) vectorTableEntryType vector_87 @Vfecrxf = vFECISRHandler; -__declspec(weak) vectorTableEntryType vector_88 @Vfecother = vFECISRHandler; -__declspec(weak) vectorTableEntryType vector_89 @Vfechberr = vFECISRHandler; -__declspec(weak) vectorTableEntryType vector_90 @Vfecbabr = vFECISRHandler; -__declspec(weak) vectorTableEntryType vector_91 @Vfecbabt = vFECISRHandler; -__declspec(weak) vectorTableEntryType vector_92 @Vfecgra = vFECISRHandler; -__declspec(weak) vectorTableEntryType vector_93 @Vfectxb = vFECISRHandler; -__declspec(weak) vectorTableEntryType vector_94 @Vfecrxb = vFECISRHandler; -__declspec(weak) vectorTableEntryType vector_95 @Vfecmii = vFECISRHandler; -__declspec(weak) vectorTableEntryType vector_96 @Vfeceberr = vFECISRHandler; -__declspec(weak) vectorTableEntryType vector_97 @Vfeclc = vFECISRHandler; -__declspec(weak) vectorTableEntryType vector_98 @Vfecrl = vFECISRHandler; -__declspec(weak) vectorTableEntryType vector_99 @Vfecun = vFECISRHandler; -__declspec(weak) vectorTableEntryType vector_100 @Vsci3err = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_101 @Vsci3rx = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_102 @Vsci3tx = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_103 @VL7swi = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_104 @VL6swi = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_105 @VL5swi = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_106 @VL4swi = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_107 @VL3swi = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_108 @VL2swi = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_109 @VL1swi = vPortYieldISR; -__declspec(weak) vectorTableEntryType vector_110 @Viic1 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_111 @Viic2 = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_112 @Vadc = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_113 @Vkeyboard = asm_exception_handler; -__declspec(weak) vectorTableEntryType vector_114 @Vrtc = asm_exception_handler; - - - -#ifdef __cplusplus -} -#endif - - diff --git a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/fecbd.h b/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/fecbd.h deleted file mode 100644 index 700544ae4..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/fecbd.h +++ /dev/null @@ -1,101 +0,0 @@ -/* - * File: fecbd.h - * Purpose: - * - * Purpose: Provide a simple buffer management driver - */ - -#ifndef _FECBD_H_ -#define _FECBD_H_ - -/********************************************************************/ - -#define Rx 1 -#define Tx 0 - -/* - * Buffer sizes in bytes - */ -#ifndef RX_BUF_SZ -#define RX_BUF_SZ 1520 //2048 -#endif -#ifndef TX_BUF_SZ -#define TX_BUF_SZ 1520 -#endif - -/* - * Buffer Descriptor Format - */ -#pragma options align= packed -typedef struct -{ - unsigned short status; /* control and status */ - unsigned short length; /* transfer length */ - unsigned char *data; /* buffer address */ -} FECBD; - -/* - * Bit level definitions for status field of buffer descriptors - */ -#define TX_BD_R 0x8000 -#define TX_BD_TO1 0x4000 -#define TX_BD_W 0x2000 -#define TX_BD_TO2 0x1000 -#define TX_BD_INTERRUPT 0x1000 /* MCF547x/8x Only */ -#define TX_BD_L 0x0800 -#define TX_BD_TC 0x0400 -#define TX_BD_DEF 0x0200 /* MCF5272 Only */ -#define TX_BD_ABC 0x0200 -#define TX_BD_HB 0x0100 /* MCF5272 Only */ -#define TX_BD_LC 0x0080 /* MCF5272 Only */ -#define TX_BD_RL 0x0040 /* MCF5272 Only */ -#define TX_BD_UN 0x0002 /* MCF5272 Only */ -#define TX_BD_CSL 0x0001 /* MCF5272 Only */ - -#define RX_BD_E 0x8000 -#define RX_BD_R01 0x4000 -#define RX_BD_W 0x2000 -#define RX_BD_R02 0x1000 -#define RX_BD_INTERRUPT 0x1000 /* MCF547x/8x Only */ -#define RX_BD_L 0x0800 -#define RX_BD_M 0x0100 -#define RX_BD_BC 0x0080 -#define RX_BD_MC 0x0040 -#define RX_BD_LG 0x0020 -#define RX_BD_NO 0x0010 -#define RX_BD_CR 0x0004 -#define RX_BD_OV 0x0002 -#define RX_BD_TR 0x0001 -#define RX_BD_ERROR (RX_BD_NO | RX_BD_CR | RX_BD_OV | RX_BD_TR) - -/* - * The following defines are provided by the MCF547x/8x - * DMA API. These are shown here to show their correlation - * to the other FEC buffer descriptor status bits - * - * #define MCD_FEC_BUF_READY 0x8000 - * #define MCD_FEC_WRAP 0x2000 - * #define MCD_FEC_INTERRUPT 0x1000 - * #define MCD_FEC_END_FRAME 0x0800 - */ - -/* - * Functions provided in fec_bd.c - */ -int fecbd_init(int, int, int); -void fecbd_flush(int); -void fecbd_dump( void ); -unsigned long fecbd_get_start(int, int); -FECBD* fecbd_rx_alloc(int); -FECBD* fecbd_tx_alloc(int); -FECBD* fecbd_tx_free(int); - -/* - * Error codes - */ -#define ERR_MALLOC (-1) -#define ERR_NBUFALLOC (-2) - -/*******************************************************************/ - -#endif /* _FECBD_H_ */ diff --git a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/clock-arch.h b/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/clock-arch.h deleted file mode 100644 index cde657b62..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/clock-arch.h +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright (c) 2006, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: clock-arch.h,v 1.2 2006/06/12 08:00:31 adam Exp $ - */ - -#ifndef __CLOCK_ARCH_H__ -#define __CLOCK_ARCH_H__ - -#include "FreeRTOS.h" - -typedef unsigned long clock_time_t; -#define CLOCK_CONF_SECOND configTICK_RATE_HZ - -#endif /* __CLOCK_ARCH_H__ */ diff --git a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/http-strings b/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/http-strings deleted file mode 100644 index 0d3c30cdd..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/http-strings +++ /dev/null @@ -1,35 +0,0 @@ -http_http "http://" -http_200 "200 " -http_301 "301 " -http_302 "302 " -http_get "GET " -http_10 "HTTP/1.0" -http_11 "HTTP/1.1" -http_content_type "content-type: " -http_texthtml "text/html" -http_location "location: " -http_host "host: " -http_crnl "\r\n" -http_index_html "/index.html" -http_404_html "/404.html" -http_referer "Referer:" -http_header_200 "HTTP/1.0 200 OK\r\nServer: uIP/1.0 http://www.sics.se/~adam/uip/\r\nConnection: close\r\n" -http_header_404 "HTTP/1.0 404 Not found\r\nServer: uIP/1.0 http://www.sics.se/~adam/uip/\r\nConnection: close\r\n" -http_content_type_plain "Content-type: text/plain\r\n\r\n" -http_content_type_html "Content-type: text/html\r\n\r\n" -http_content_type_css "Content-type: text/css\r\n\r\n" -http_content_type_text "Content-type: text/text\r\n\r\n" -http_content_type_png "Content-type: image/png\r\n\r\n" -http_content_type_gif "Content-type: image/gif\r\n\r\n" -http_content_type_jpg "Content-type: image/jpeg\r\n\r\n" -http_content_type_binary "Content-type: application/octet-stream\r\n\r\n" -http_html ".html" -http_shtml ".shtml" -http_htm ".htm" -http_css ".css" -http_png ".png" -http_gif ".gif" -http_jpg ".jpg" -http_text ".txt" -http_txt ".txt" - diff --git a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/http-strings.c b/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/http-strings.c deleted file mode 100644 index ef7a41c7d..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/http-strings.c +++ /dev/null @@ -1,102 +0,0 @@ -const char http_http[8] = -/* "http://" */ -{0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, }; -const char http_200[5] = -/* "200 " */ -{0x32, 0x30, 0x30, 0x20, }; -const char http_301[5] = -/* "301 " */ -{0x33, 0x30, 0x31, 0x20, }; -const char http_302[5] = -/* "302 " */ -{0x33, 0x30, 0x32, 0x20, }; -const char http_get[5] = -/* "GET " */ -{0x47, 0x45, 0x54, 0x20, }; -const char http_10[9] = -/* "HTTP/1.0" */ -{0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30, }; -const char http_11[9] = -/* "HTTP/1.1" */ -{0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x31, }; -const char http_content_type[15] = -/* "content-type: " */ -{0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, }; -const char http_texthtml[10] = -/* "text/html" */ -{0x74, 0x65, 0x78, 0x74, 0x2f, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_location[11] = -/* "location: " */ -{0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, }; -const char http_host[7] = -/* "host: " */ -{0x68, 0x6f, 0x73, 0x74, 0x3a, 0x20, }; -const char http_crnl[3] = -/* "\r\n" */ -{0xd, 0xa, }; -const char http_index_html[12] = -/* "/index.html" */ -{0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_404_html[10] = -/* "/404.html" */ -{0x2f, 0x34, 0x30, 0x34, 0x2e, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_referer[9] = -/* "Referer:" */ -{0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x72, 0x3a, }; -const char http_header_200[84] = -/* "HTTP/1.0 200 OK\r\nServer: uIP/1.0 http://www.sics.se/~adam/uip/\r\nConnection: close\r\n" */ -{0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x32, 0x30, 0x30, 0x20, 0x4f, 0x4b, 0xd, 0xa, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x3a, 0x20, 0x75, 0x49, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x73, 0x69, 0x63, 0x73, 0x2e, 0x73, 0x65, 0x2f, 0x7e, 0x61, 0x64, 0x61, 0x6d, 0x2f, 0x75, 0x69, 0x70, 0x2f, 0xd, 0xa, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0xd, 0xa, }; -const char http_header_404[91] = -/* "HTTP/1.0 404 Not found\r\nServer: uIP/1.0 http://www.sics.se/~adam/uip/\r\nConnection: close\r\n" */ -{0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x34, 0x30, 0x34, 0x20, 0x4e, 0x6f, 0x74, 0x20, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0xd, 0xa, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x3a, 0x20, 0x75, 0x49, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x73, 0x69, 0x63, 0x73, 0x2e, 0x73, 0x65, 0x2f, 0x7e, 0x61, 0x64, 0x61, 0x6d, 0x2f, 0x75, 0x69, 0x70, 0x2f, 0xd, 0xa, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0xd, 0xa, }; -const char http_content_type_plain[29] = -/* "Content-type: text/plain\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_html[28] = -/* "Content-type: text/html\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_css [27] = -/* "Content-type: text/css\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x63, 0x73, 0x73, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_text[28] = -/* "Content-type: text/text\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x74, 0x65, 0x78, 0x74, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_png [28] = -/* "Content-type: image/png\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x70, 0x6e, 0x67, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_gif [28] = -/* "Content-type: image/gif\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x67, 0x69, 0x66, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_jpg [29] = -/* "Content-type: image/jpeg\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x6a, 0x70, 0x65, 0x67, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_binary[43] = -/* "Content-type: application/octet-stream\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x6f, 0x63, 0x74, 0x65, 0x74, 0x2d, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0xd, 0xa, 0xd, 0xa, }; -const char http_html[6] = -/* ".html" */ -{0x2e, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_shtml[7] = -/* ".shtml" */ -{0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_htm[5] = -/* ".htm" */ -{0x2e, 0x68, 0x74, 0x6d, }; -const char http_css[5] = -/* ".css" */ -{0x2e, 0x63, 0x73, 0x73, }; -const char http_png[5] = -/* ".png" */ -{0x2e, 0x70, 0x6e, 0x67, }; -const char http_gif[5] = -/* ".gif" */ -{0x2e, 0x67, 0x69, 0x66, }; -const char http_jpg[5] = -/* ".jpg" */ -{0x2e, 0x6a, 0x70, 0x67, }; -const char http_text[5] = -/* ".txt" */ -{0x2e, 0x74, 0x78, 0x74, }; -const char http_txt[5] = -/* ".txt" */ -{0x2e, 0x74, 0x78, 0x74, }; diff --git a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/http-strings.h b/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/http-strings.h deleted file mode 100644 index acbe7e17f..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/http-strings.h +++ /dev/null @@ -1,34 +0,0 @@ -extern const char http_http[8]; -extern const char http_200[5]; -extern const char http_301[5]; -extern const char http_302[5]; -extern const char http_get[5]; -extern const char http_10[9]; -extern const char http_11[9]; -extern const char http_content_type[15]; -extern const char http_texthtml[10]; -extern const char http_location[11]; -extern const char http_host[7]; -extern const char http_crnl[3]; -extern const char http_index_html[12]; -extern const char http_404_html[10]; -extern const char http_referer[9]; -extern const char http_header_200[84]; -extern const char http_header_404[91]; -extern const char http_content_type_plain[29]; -extern const char http_content_type_html[28]; -extern const char http_content_type_css [27]; -extern const char http_content_type_text[28]; -extern const char http_content_type_png [28]; -extern const char http_content_type_gif [28]; -extern const char http_content_type_jpg [29]; -extern const char http_content_type_binary[43]; -extern const char http_html[6]; -extern const char http_shtml[7]; -extern const char http_htm[5]; -extern const char http_css[5]; -extern const char http_png[5]; -extern const char http_gif[5]; -extern const char http_jpg[5]; -extern const char http_text[5]; -extern const char http_txt[5]; diff --git a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/httpd-cgi.c b/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/httpd-cgi.c deleted file mode 100644 index a19797e9f..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/httpd-cgi.c +++ /dev/null @@ -1,284 +0,0 @@ -/** - * \addtogroup httpd - * @{ - */ - -/** - * \file - * Web server script interface - * \author - * Adam Dunkels - * - */ - -/* - * Copyright (c) 2001-2006, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: httpd-cgi.c,v 1.2 2006/06/11 21:46:37 adam Exp $ - * - */ - -#include "uip.h" -#include "psock.h" -#include "httpd.h" -#include "httpd-cgi.h" -#include "httpd-fs.h" - -#include -#include - -HTTPD_CGI_CALL(file, "file-stats", file_stats); -HTTPD_CGI_CALL(tcp, "tcp-connections", tcp_stats); -HTTPD_CGI_CALL(net, "net-stats", net_stats); -HTTPD_CGI_CALL(rtos, "rtos-stats", rtos_stats ); -HTTPD_CGI_CALL(io, "led-io", led_io ); - - -static const struct httpd_cgi_call * const calls[] = { &file, &tcp, &net, &rtos, &io, NULL }; - -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(nullfunction(struct httpd_state *s, char *ptr)) -{ - ( void ) ptr; - PSOCK_BEGIN(&s->sout); - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -httpd_cgifunction -httpd_cgi(char *name) -{ - const struct httpd_cgi_call **f; - - /* Find the matching name in the table, return the function. */ - for(f = calls; *f != NULL; ++f) { - if(strncmp((*f)->name, name, strlen((*f)->name)) == 0) { - return (*f)->function; - } - } - return nullfunction; -} -/*---------------------------------------------------------------------------*/ -static unsigned short -generate_file_stats(void *arg) -{ - char *f = (char *)arg; - return snprintf((char *)uip_appdata, UIP_APPDATA_SIZE, "%5u", httpd_fs_count(f)); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(file_stats(struct httpd_state *s, char *ptr)) -{ - PSOCK_BEGIN(&s->sout); - - PSOCK_GENERATOR_SEND(&s->sout, generate_file_stats, strchr(ptr, ' ') + 1); - - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -static const char closed[] = /* "CLOSED",*/ -{0x43, 0x4c, 0x4f, 0x53, 0x45, 0x44, 0}; -static const char syn_rcvd[] = /* "SYN-RCVD",*/ -{0x53, 0x59, 0x4e, 0x2d, 0x52, 0x43, 0x56, - 0x44, 0}; -static const char syn_sent[] = /* "SYN-SENT",*/ -{0x53, 0x59, 0x4e, 0x2d, 0x53, 0x45, 0x4e, - 0x54, 0}; -static const char established[] = /* "ESTABLISHED",*/ -{0x45, 0x53, 0x54, 0x41, 0x42, 0x4c, 0x49, 0x53, 0x48, - 0x45, 0x44, 0}; -static const char fin_wait_1[] = /* "FIN-WAIT-1",*/ -{0x46, 0x49, 0x4e, 0x2d, 0x57, 0x41, 0x49, - 0x54, 0x2d, 0x31, 0}; -static const char fin_wait_2[] = /* "FIN-WAIT-2",*/ -{0x46, 0x49, 0x4e, 0x2d, 0x57, 0x41, 0x49, - 0x54, 0x2d, 0x32, 0}; -static const char closing[] = /* "CLOSING",*/ -{0x43, 0x4c, 0x4f, 0x53, 0x49, - 0x4e, 0x47, 0}; -static const char time_wait[] = /* "TIME-WAIT,"*/ -{0x54, 0x49, 0x4d, 0x45, 0x2d, 0x57, 0x41, - 0x49, 0x54, 0}; -static const char last_ack[] = /* "LAST-ACK"*/ -{0x4c, 0x41, 0x53, 0x54, 0x2d, 0x41, 0x43, - 0x4b, 0}; - -static const char *states[] = { - closed, - syn_rcvd, - syn_sent, - established, - fin_wait_1, - fin_wait_2, - closing, - time_wait, - last_ack}; - - -static unsigned short -generate_tcp_stats(void *arg) -{ - struct uip_conn *conn; - struct httpd_state *s = (struct httpd_state *)arg; - - conn = &uip_conns[s->count]; - return snprintf((char *)uip_appdata, UIP_APPDATA_SIZE, - "\r\n", - htons(conn->lport), - htons(conn->ripaddr[0]) >> 8, - htons(conn->ripaddr[0]) & 0xff, - htons(conn->ripaddr[1]) >> 8, - htons(conn->ripaddr[1]) & 0xff, - htons(conn->rport), - states[conn->tcpstateflags & UIP_TS_MASK], - conn->nrtx, - conn->timer, - (uip_outstanding(conn))? '*':' ', - (uip_stopped(conn))? '!':' '); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(tcp_stats(struct httpd_state *s, char *ptr)) -{ - - ( void ) ptr; - PSOCK_BEGIN(&s->sout); - - for(s->count = 0; s->count < UIP_CONNS; ++s->count) { - if((uip_conns[s->count].tcpstateflags & UIP_TS_MASK) != UIP_CLOSED) { - PSOCK_GENERATOR_SEND(&s->sout, generate_tcp_stats, s); - } - } - - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -static unsigned short -generate_net_stats(void *arg) -{ - struct httpd_state *s = (struct httpd_state *)arg; - return snprintf((char *)uip_appdata, UIP_APPDATA_SIZE, - "%5u\n", ((uip_stats_t *)&uip_stat)[s->count]); -} - -static -PT_THREAD(net_stats(struct httpd_state *s, char *ptr)) -{ - ( void ) ptr; - PSOCK_BEGIN(&s->sout); - -#if UIP_STATISTICS - - for(s->count = 0; s->count < sizeof(uip_stat) / sizeof(uip_stats_t); - ++s->count) { - PSOCK_GENERATOR_SEND(&s->sout, generate_net_stats, s); - } - -#endif /* UIP_STATISTICS */ - - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ - -extern void vTaskList( char *pcWriteBuffer ); -extern unsigned long ulCheckErrors; -static char cCountBuf[ 32 ]; -long lRefreshCount = 0; -static unsigned short -generate_rtos_stats(void *arg) -{ - ( void ) arg; - lRefreshCount++; - sprintf( cCountBuf, "


Refresh count = %d", lRefreshCount ); - vTaskList( ( char * ) uip_appdata ); - strcat( uip_appdata, cCountBuf ); - - /* Have any errors been latched? */ - if( ulCheckErrors != 0 ) - { - strcat( uip_appdata, "


The check function has detected an error! Error code = " ); - sprintf( cCountBuf, "%x", ulCheckErrors ); - strcat( uip_appdata, cCountBuf ); - } - else - { - strcat( uip_appdata, "


All tasks are executing with no errors reported.

" ); - } - - return strlen( uip_appdata ); -} -/*---------------------------------------------------------------------------*/ - - -static -PT_THREAD(rtos_stats(struct httpd_state *s, char *ptr)) -{ - ( void ) ptr; - PSOCK_BEGIN(&s->sout); - PSOCK_GENERATOR_SEND(&s->sout, generate_rtos_stats, NULL); - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ - -char *pcStatus; -extern unsigned long uxParTestGetLED( unsigned long uxLED ); - -static unsigned short generate_io_state( void *arg ) -{ - ( void ) arg; - if( uxParTestGetLED( 3 ) ) - { - pcStatus = "checked"; - } - else - { - pcStatus = ""; - } - - sprintf( uip_appdata, "LED", pcStatus ); - return strlen( uip_appdata ); -} -/*---------------------------------------------------------------------------*/ - -static PT_THREAD(led_io(struct httpd_state *s, char *ptr)) -{ - ( void ) ptr; - PSOCK_BEGIN(&s->sout); - PSOCK_GENERATOR_SEND(&s->sout, generate_io_state, NULL); - PSOCK_END(&s->sout); -} - -/** @} */ - - - - - - diff --git a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/httpd-cgi.h b/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/httpd-cgi.h deleted file mode 100644 index 7ae928321..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/httpd-cgi.h +++ /dev/null @@ -1,84 +0,0 @@ -/** - * \addtogroup httpd - * @{ - */ - -/** - * \file - * Web server script interface header file - * \author - * Adam Dunkels - * - */ - - - -/* - * Copyright (c) 2001, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: httpd-cgi.h,v 1.2 2006/06/11 21:46:38 adam Exp $ - * - */ - -#ifndef __HTTPD_CGI_H__ -#define __HTTPD_CGI_H__ - -#include "psock.h" -#include "httpd.h" - -typedef PT_THREAD((* httpd_cgifunction)(struct httpd_state *, char *)); - -httpd_cgifunction httpd_cgi(char *name); - -struct httpd_cgi_call { - const char *name; - const httpd_cgifunction function; -}; - -/** - * \brief HTTPD CGI function declaration - * \param name The C variable name of the function - * \param str The string name of the function, used in the script file - * \param function A pointer to the function that implements it - * - * This macro is used for declaring a HTTPD CGI - * function. This function is then added to the list of - * HTTPD CGI functions with the httpd_cgi_add() function. - * - * \hideinitializer - */ -#define HTTPD_CGI_CALL(name, str, function) \ -static PT_THREAD(function(struct httpd_state *, char *)); \ -static const struct httpd_cgi_call name = {str, function} - -void httpd_cgi_init(void); -#endif /* __HTTPD_CGI_H__ */ - -/** @} */ diff --git a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/httpd-fs.c b/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/httpd-fs.c deleted file mode 100644 index dc4aef011..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/httpd-fs.c +++ /dev/null @@ -1,132 +0,0 @@ -/* - * Copyright (c) 2001, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - * $Id: httpd-fs.c,v 1.1 2006/06/07 09:13:08 adam Exp $ - */ - -#include "httpd.h" -#include "httpd-fs.h" -#include "httpd-fsdata.h" - -#ifndef NULL -#define NULL 0 -#endif /* NULL */ - -#include "httpd-fsdata.c" - -#if HTTPD_FS_STATISTICS -static u16_t count[HTTPD_FS_NUMFILES]; -#endif /* HTTPD_FS_STATISTICS */ - -/*-----------------------------------------------------------------------------------*/ -static u8_t -httpd_fs_strcmp(const char *str1, const char *str2) -{ - u8_t i; - i = 0; - loop: - - if(str2[i] == 0 || - str1[i] == '\r' || - str1[i] == '\n') { - return 0; - } - - if(str1[i] != str2[i]) { - return 1; - } - - - ++i; - goto loop; -} -/*-----------------------------------------------------------------------------------*/ -int -httpd_fs_open(const char *name, struct httpd_fs_file *file) -{ -#if HTTPD_FS_STATISTICS - u16_t i = 0; -#endif /* HTTPD_FS_STATISTICS */ - struct httpd_fsdata_file_noconst *f; - - for(f = (struct httpd_fsdata_file_noconst *)HTTPD_FS_ROOT; - f != NULL; - f = (struct httpd_fsdata_file_noconst *)f->next) { - - if(httpd_fs_strcmp(name, f->name) == 0) { - file->data = f->data; - file->len = f->len; -#if HTTPD_FS_STATISTICS - ++count[i]; -#endif /* HTTPD_FS_STATISTICS */ - return 1; - } -#if HTTPD_FS_STATISTICS - ++i; -#endif /* HTTPD_FS_STATISTICS */ - - } - return 0; -} -/*-----------------------------------------------------------------------------------*/ -void -httpd_fs_init(void) -{ -#if HTTPD_FS_STATISTICS - u16_t i; - for(i = 0; i < HTTPD_FS_NUMFILES; i++) { - count[i] = 0; - } -#endif /* HTTPD_FS_STATISTICS */ -} -/*-----------------------------------------------------------------------------------*/ -#if HTTPD_FS_STATISTICS -u16_t httpd_fs_count -(char *name) -{ - struct httpd_fsdata_file_noconst *f; - u16_t i; - - i = 0; - for(f = (struct httpd_fsdata_file_noconst *)HTTPD_FS_ROOT; - f != NULL; - f = (struct httpd_fsdata_file_noconst *)f->next) { - - if(httpd_fs_strcmp(name, f->name) == 0) { - return count[i]; - } - ++i; - } - return 0; -} -#endif /* HTTPD_FS_STATISTICS */ -/*-----------------------------------------------------------------------------------*/ diff --git a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/httpd-fs.h b/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/httpd-fs.h deleted file mode 100644 index b594eea56..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/httpd-fs.h +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright (c) 2001, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - * $Id: httpd-fs.h,v 1.1 2006/06/07 09:13:08 adam Exp $ - */ -#ifndef __HTTPD_FS_H__ -#define __HTTPD_FS_H__ - -#define HTTPD_FS_STATISTICS 1 - -struct httpd_fs_file { - char *data; - int len; -}; - -/* file must be allocated by caller and will be filled in - by the function. */ -int httpd_fs_open(const char *name, struct httpd_fs_file *file); - -#ifdef HTTPD_FS_STATISTICS -#if HTTPD_FS_STATISTICS == 1 -u16_t httpd_fs_count(char *name); -#endif /* HTTPD_FS_STATISTICS */ -#endif /* HTTPD_FS_STATISTICS */ - -void httpd_fs_init(void); - -#endif /* __HTTPD_FS_H__ */ diff --git a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/httpd-fs/404.html b/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/httpd-fs/404.html deleted file mode 100644 index 43e7f4cad..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/httpd-fs/404.html +++ /dev/null @@ -1,8 +0,0 @@ - - -

-

404 - file not found

-

Go here instead.

-
- - \ No newline at end of file diff --git a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/httpd-fs/index.html b/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/httpd-fs/index.html deleted file mode 100644 index 4937dc69a..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/httpd-fs/index.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Loading index.shtml. Click here if not automatically redirected. - - - - - diff --git a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/httpd-fs/index.shtml b/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/httpd-fs/index.shtml deleted file mode 100644 index 2f9a9fc65..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/httpd-fs/index.shtml +++ /dev/null @@ -1,20 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -RTOS Stats | Connections | IO -

-


-

-

Task status

-This page shows dynamically generated task state information. The page will refresh evey 2 seconds.

-

Task          State  Priority  Stack	#
************************************************
-%! rtos-stats -
-
- - - diff --git a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/httpd-fs/io.shtml b/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/httpd-fs/io.shtml deleted file mode 100644 index ff8f31104..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/httpd-fs/io.shtml +++ /dev/null @@ -1,28 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -RTOS Stats | Connections | IO -

-


-Dynamic IO demonstration
- -

-This page demonstrates two way communication. By using the check box this WEB interface can influence the program execution.

-Use the check box and "Update IO button" to set the state of LED1. Refresh the page to display the state of LED1. - - -

-
-%! led-io -

- - -

- - - - diff --git a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/httpd-fs/stats.shtml b/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/httpd-fs/stats.shtml deleted file mode 100644 index d762f40d8..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/httpd-fs/stats.shtml +++ /dev/null @@ -1,41 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -RTOS Stats | TCP Stats | Connections | FreeRTOS.org Homepage | IO -

-


-

-

Network statistics

-
LocalRemoteStateRetransmissionsTimerFlags
%d%u.%u.%u.%u:%u%s%u%u%c %c
-
-IP           Packets dropped
-             Packets received
-             Packets sent
-IP errors    IP version/header length
-             IP length, high byte
-             IP length, low byte
-             IP fragments
-             Header checksum
-             Wrong protocol
-ICMP	     Packets dropped
-             Packets received
-             Packets sent
-             Type errors
-TCP          Packets dropped
-             Packets received
-             Packets sent
-             Checksum errors
-             Data packets without ACKs
-             Resets
-             Retransmissions
-	     No connection avaliable
-	     Connection attempts to closed ports
-
%! net-stats
-
- - - diff --git a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/httpd-fs/tcp.shtml b/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/httpd-fs/tcp.shtml deleted file mode 100644 index e9a143ee2..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/httpd-fs/tcp.shtml +++ /dev/null @@ -1,22 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -RTOS Stats | Connections | IO -

-


-
-

Network connections

-This page displays dynamically generated status information on the TCP/IP connections. -

- - -%! tcp-connections - - - - - diff --git a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/httpd-fsdata.c b/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/httpd-fsdata.c deleted file mode 100644 index 781b73404..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/httpd-fsdata.c +++ /dev/null @@ -1,445 +0,0 @@ -static const char data_404_html[] = { - /* /404.html */ - 0x2f, 0x34, 0x30, 0x34, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, 0x20, 0x20, 0x3c, - 0x62, 0x6f, 0x64, 0x79, 0x20, 0x62, 0x67, 0x63, 0x6f, 0x6c, - 0x6f, 0x72, 0x3d, 0x22, 0x77, 0x68, 0x69, 0x74, 0x65, 0x22, - 0x3e, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x63, 0x65, 0x6e, - 0x74, 0x65, 0x72, 0x3e, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x3c, 0x68, 0x31, 0x3e, 0x34, 0x30, 0x34, 0x20, 0x2d, - 0x20, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x6e, 0x6f, 0x74, 0x20, - 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x3c, 0x2f, 0x68, 0x31, 0x3e, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x68, 0x33, - 0x3e, 0x47, 0x6f, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, - 0x66, 0x3d, 0x22, 0x2f, 0x22, 0x3e, 0x68, 0x65, 0x72, 0x65, - 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x65, - 0x61, 0x64, 0x2e, 0x3c, 0x2f, 0x68, 0x33, 0x3e, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x3c, 0x2f, 0x63, 0x65, 0x6e, 0x74, 0x65, - 0x72, 0x3e, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x62, 0x6f, 0x64, - 0x79, 0x3e, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, -0}; - -static const char data_index_html[] = { - /* /index.html */ - 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, - 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, - 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, 0x57, 0x45, 0x42, - 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x64, 0x65, - 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x42, 0x4f, 0x44, 0x59, 0x20, 0x6f, - 0x6e, 0x4c, 0x6f, 0x61, 0x64, 0x3d, 0x22, 0x77, 0x69, 0x6e, - 0x64, 0x6f, 0x77, 0x2e, 0x73, 0x65, 0x74, 0x54, 0x69, 0x6d, - 0x65, 0x6f, 0x75, 0x74, 0x28, 0x26, 0x71, 0x75, 0x6f, 0x74, - 0x3b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x27, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x27, 0x26, 0x71, - 0x75, 0x6f, 0x74, 0x3b, 0x2c, 0x31, 0x30, 0x30, 0x29, 0x22, - 0x3e, 0xa, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, - 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, - 0x3e, 0xa, 0x4c, 0x6f, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x20, - 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, - 0x6c, 0x2e, 0x20, 0x20, 0x43, 0x6c, 0x69, 0x63, 0x6b, 0x20, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x68, 0x65, 0x72, 0x65, 0x3c, 0x2f, 0x61, 0x3e, - 0x20, 0x69, 0x66, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x61, 0x75, - 0x74, 0x6f, 0x6d, 0x61, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x6c, - 0x79, 0x20, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, - 0x65, 0x64, 0x2e, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, - 0x3e, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xa, - 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xa, 0x3c, 0x2f, - 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, 0xa, 0}; - -static const char data_index_shtml[] = { - /* /index.shtml */ - 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, - 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, - 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, 0x57, 0x45, 0x42, - 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x64, 0x65, - 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x42, 0x4f, 0x44, 0x59, 0x20, 0x6f, - 0x6e, 0x4c, 0x6f, 0x61, 0x64, 0x3d, 0x22, 0x77, 0x69, 0x6e, - 0x64, 0x6f, 0x77, 0x2e, 0x73, 0x65, 0x74, 0x54, 0x69, 0x6d, - 0x65, 0x6f, 0x75, 0x74, 0x28, 0x26, 0x71, 0x75, 0x6f, 0x74, - 0x3b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x27, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x27, 0x26, 0x71, - 0x75, 0x6f, 0x74, 0x3b, 0x2c, 0x32, 0x30, 0x30, 0x30, 0x29, - 0x22, 0x3e, 0xa, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, - 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, - 0x22, 0x3e, 0xa, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, - 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x52, 0x54, 0x4f, 0x53, 0x20, - 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, - 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, - 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, 0x63, - 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x43, - 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, - 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, - 0x66, 0x3d, 0x22, 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, - 0x6c, 0x22, 0x3e, 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0xa, - 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xa, 0x3c, 0x68, - 0x72, 0x3e, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, - 0xa, 0x3c, 0x68, 0x32, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, - 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x3c, 0x2f, 0x68, 0x32, - 0x3e, 0xa, 0x54, 0x68, 0x69, 0x73, 0x20, 0x70, 0x61, 0x67, - 0x65, 0x20, 0x73, 0x68, 0x6f, 0x77, 0x73, 0x20, 0x64, 0x79, - 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x61, 0x6c, 0x6c, 0x79, 0x20, - 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x20, - 0x74, 0x61, 0x73, 0x6b, 0x20, 0x73, 0x74, 0x61, 0x74, 0x65, - 0x20, 0x69, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x2e, 0x20, 0x20, 0x54, 0x68, 0x65, 0x20, 0x70, - 0x61, 0x67, 0x65, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x72, - 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x20, 0x65, 0x76, 0x65, - 0x79, 0x20, 0x32, 0x20, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, - 0x73, 0x2e, 0x3c, 0x70, 0x3e, 0xa, 0x3c, 0x66, 0x6f, 0x6e, - 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x63, 0x6f, - 0x75, 0x72, 0x69, 0x65, 0x72, 0x22, 0x3e, 0x3c, 0x70, 0x72, - 0x65, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x53, 0x74, 0x61, 0x74, - 0x65, 0x20, 0x20, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, - 0x79, 0x20, 0x20, 0x53, 0x74, 0x61, 0x63, 0x6b, 0x9, 0x23, - 0x3c, 0x62, 0x72, 0x3e, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x3c, 0x62, 0x72, 0x3e, 0xa, 0x25, 0x21, 0x20, - 0x72, 0x74, 0x6f, 0x73, 0x2d, 0x73, 0x74, 0x61, 0x74, 0x73, - 0xa, 0x3c, 0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, - 0x6f, 0x6e, 0x74, 0x3e, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, - 0x74, 0x3e, 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, - 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, 0xa, -0}; - -static const char data_io_shtml[] = { - /* /io.shtml */ - 0x2f, 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, - 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, - 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, 0x57, 0x45, 0x42, - 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x64, 0x65, - 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x42, 0x4f, 0x44, 0x59, 0x3e, 0xa, - 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, - 0x3d, 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xa, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x52, 0x54, 0x4f, 0x53, 0x20, 0x53, 0x74, 0x61, - 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, 0x63, 0x70, 0x2e, 0x73, - 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0xa, 0x3c, 0x62, 0x72, - 0x3e, 0x3c, 0x70, 0x3e, 0xa, 0x3c, 0x68, 0x72, 0x3e, 0xa, - 0x3c, 0x62, 0x3e, 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, - 0x20, 0x49, 0x4f, 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x6e, 0x73, - 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3c, 0x2f, 0x62, - 0x3e, 0x3c, 0x62, 0x72, 0x3e, 0xa, 0xa, 0x3c, 0x70, 0x3e, - 0xa, 0x54, 0x68, 0x69, 0x73, 0x20, 0x70, 0x61, 0x67, 0x65, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, - 0x74, 0x65, 0x73, 0x20, 0x74, 0x77, 0x6f, 0x20, 0x77, 0x61, - 0x79, 0x20, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x20, 0x20, 0x42, 0x79, - 0x20, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x68, 0x65, - 0x20, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x20, 0x62, 0x6f, 0x78, - 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x57, 0x45, 0x42, 0x20, - 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x20, - 0x63, 0x61, 0x6e, 0x20, 0x69, 0x6e, 0x66, 0x6c, 0x75, 0x65, - 0x6e, 0x63, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, - 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x20, 0x65, 0x78, 0x65, 0x63, - 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x3c, 0x70, 0x3e, 0xa, - 0x55, 0x73, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x68, - 0x65, 0x63, 0x6b, 0x20, 0x62, 0x6f, 0x78, 0x20, 0x61, 0x6e, - 0x64, 0x20, 0x22, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, - 0x49, 0x4f, 0x20, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x22, - 0x20, 0x74, 0x6f, 0x20, 0x73, 0x65, 0x74, 0x20, 0x74, 0x68, - 0x65, 0x20, 0x73, 0x74, 0x61, 0x74, 0x65, 0x20, 0x6f, 0x66, - 0x20, 0x4c, 0x45, 0x44, 0x31, 0x2e, 0x20, 0x20, 0x52, 0x65, - 0x66, 0x72, 0x65, 0x73, 0x68, 0x20, 0x74, 0x68, 0x65, 0x20, - 0x70, 0x61, 0x67, 0x65, 0x20, 0x74, 0x6f, 0x20, 0x64, 0x69, - 0x73, 0x70, 0x6c, 0x61, 0x79, 0x20, 0x74, 0x68, 0x65, 0x20, - 0x73, 0x74, 0x61, 0x74, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x4c, - 0x45, 0x44, 0x31, 0x2e, 0xa, 0xa, 0xa, 0x3c, 0x70, 0x3e, - 0xa, 0x3c, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x6e, 0x61, 0x6d, - 0x65, 0x3d, 0x22, 0x61, 0x46, 0x6f, 0x72, 0x6d, 0x22, 0x20, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3d, 0x22, 0x2f, 0x69, - 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x20, 0x6d, - 0x65, 0x74, 0x68, 0x6f, 0x64, 0x3d, 0x22, 0x67, 0x65, 0x74, - 0x22, 0x3e, 0xa, 0x25, 0x21, 0x20, 0x6c, 0x65, 0x64, 0x2d, - 0x69, 0x6f, 0xa, 0x3c, 0x70, 0x3e, 0xa, 0x3c, 0x69, 0x6e, - 0x70, 0x75, 0x74, 0x20, 0x74, 0x79, 0x70, 0x65, 0x3d, 0x22, - 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x22, 0x20, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x3d, 0x22, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x20, 0x49, 0x4f, 0x22, 0x3e, 0xa, 0x3c, 0x2f, 0x66, - 0x6f, 0x72, 0x6d, 0x3e, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, - 0x70, 0x3e, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, - 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xa, 0x3c, - 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, 0xa, 0}; - -static const char data_stats_shtml[] = { - /* /stats.shtml */ - 0x2f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, - 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, - 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, 0x57, 0x45, 0x42, - 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x64, 0x65, - 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x42, 0x4f, 0x44, 0x59, 0x20, 0x62, - 0x67, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3d, 0x22, 0x23, 0x43, - 0x43, 0x43, 0x43, 0x66, 0x66, 0x22, 0x3e, 0xa, 0x3c, 0x66, - 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, - 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xa, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, - 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x52, 0x54, 0x4f, 0x53, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, - 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, - 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, - 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, - 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x43, 0x50, 0x20, - 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, - 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, - 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, 0x63, - 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x43, - 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, - 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, - 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, - 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, 0x65, 0x65, 0x72, 0x74, - 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x22, 0x3e, 0x46, - 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, 0x72, - 0x67, 0x20, 0x48, 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, - 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, - 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, - 0x66, 0x3d, 0x22, 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, - 0x6c, 0x22, 0x3e, 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0xa, - 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xa, 0x3c, 0x68, - 0x72, 0x3e, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, - 0xa, 0x3c, 0x68, 0x32, 0x3e, 0x4e, 0x65, 0x74, 0x77, 0x6f, - 0x72, 0x6b, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, - 0x69, 0x63, 0x73, 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0xa, 0x3c, - 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x77, 0x69, 0x64, 0x74, - 0x68, 0x3d, 0x22, 0x33, 0x30, 0x30, 0x22, 0x20, 0x62, 0x6f, - 0x72, 0x64, 0x65, 0x72, 0x3d, 0x22, 0x30, 0x22, 0x3e, 0xa, - 0x3c, 0x74, 0x72, 0x3e, 0x3c, 0x74, 0x64, 0x20, 0x61, 0x6c, - 0x69, 0x67, 0x6e, 0x3d, 0x22, 0x6c, 0x65, 0x66, 0x74, 0x22, - 0x3e, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, - 0x65, 0x3d, 0x22, 0x63, 0x6f, 0x75, 0x72, 0x69, 0x65, 0x72, - 0x22, 0x3e, 0x3c, 0x70, 0x72, 0x65, 0x3e, 0xa, 0x49, 0x50, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x64, - 0x72, 0x6f, 0x70, 0x70, 0x65, 0x64, 0xa, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x72, 0x65, - 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0xa, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x73, 0x65, - 0x6e, 0x74, 0xa, 0x49, 0x50, 0x20, 0x65, 0x72, 0x72, 0x6f, - 0x72, 0x73, 0x20, 0x20, 0x20, 0x20, 0x49, 0x50, 0x20, 0x76, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x2f, 0x68, 0x65, 0x61, - 0x64, 0x65, 0x72, 0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x49, 0x50, 0x20, 0x6c, 0x65, 0x6e, - 0x67, 0x74, 0x68, 0x2c, 0x20, 0x68, 0x69, 0x67, 0x68, 0x20, - 0x62, 0x79, 0x74, 0x65, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x49, 0x50, - 0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x2c, 0x20, 0x6c, - 0x6f, 0x77, 0x20, 0x62, 0x79, 0x74, 0x65, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x49, 0x50, 0x20, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, - 0x6e, 0x74, 0x73, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x48, 0x65, 0x61, - 0x64, 0x65, 0x72, 0x20, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, - 0x75, 0x6d, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x57, 0x72, 0x6f, 0x6e, - 0x67, 0x20, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, - 0xa, 0x49, 0x43, 0x4d, 0x50, 0x9, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x64, - 0x72, 0x6f, 0x70, 0x70, 0x65, 0x64, 0xa, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x72, 0x65, - 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0xa, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x73, 0x65, - 0x6e, 0x74, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x54, 0x79, 0x70, 0x65, - 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0xa, 0x54, 0x43, - 0x50, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x64, - 0x72, 0x6f, 0x70, 0x70, 0x65, 0x64, 0xa, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x72, 0x65, - 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0xa, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x73, 0x65, - 0x6e, 0x74, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x43, 0x68, 0x65, 0x63, - 0x6b, 0x73, 0x75, 0x6d, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, - 0x73, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x44, 0x61, 0x74, 0x61, 0x20, - 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x77, 0x69, - 0x74, 0x68, 0x6f, 0x75, 0x74, 0x20, 0x41, 0x43, 0x4b, 0x73, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x52, 0x65, 0x73, 0x65, 0x74, 0x73, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x52, 0x65, 0x74, 0x72, 0x61, 0x6e, - 0x73, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0xa, - 0x9, 0x20, 0x20, 0x20, 0x20, 0x20, 0x4e, 0x6f, 0x20, 0x63, - 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, - 0x61, 0x76, 0x61, 0x6c, 0x69, 0x61, 0x62, 0x6c, 0x65, 0xa, - 0x9, 0x20, 0x20, 0x20, 0x20, 0x20, 0x43, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x61, 0x74, 0x74, - 0x65, 0x6d, 0x70, 0x74, 0x73, 0x20, 0x74, 0x6f, 0x20, 0x63, - 0x6c, 0x6f, 0x73, 0x65, 0x64, 0x20, 0x70, 0x6f, 0x72, 0x74, - 0x73, 0xa, 0x3c, 0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, 0x2f, - 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0x3c, 0x2f, 0x74, 0x64, 0x3e, - 0x3c, 0x74, 0x64, 0x3e, 0x3c, 0x70, 0x72, 0x65, 0x3e, 0x25, - 0x21, 0x20, 0x6e, 0x65, 0x74, 0x2d, 0x73, 0x74, 0x61, 0x74, - 0x73, 0xa, 0x3c, 0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, 0x2f, - 0x74, 0x61, 0x62, 0x6c, 0x65, 0x3e, 0xa, 0x3c, 0x2f, 0x66, - 0x6f, 0x6e, 0x74, 0x3e, 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, - 0x79, 0x3e, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xa, 0}; - -static const char data_tcp_shtml[] = { - /* /tcp.shtml */ - 0x2f, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, - 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, - 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, 0x57, 0x45, 0x42, - 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x64, 0x65, - 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x42, 0x4f, 0x44, 0x59, 0x3e, 0xa, - 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, - 0x3d, 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xa, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x52, 0x54, 0x4f, 0x53, 0x20, 0x53, 0x74, 0x61, - 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, 0x63, 0x70, 0x2e, 0x73, - 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0xa, 0x3c, 0x62, 0x72, - 0x3e, 0x3c, 0x70, 0x3e, 0xa, 0x3c, 0x68, 0x72, 0x3e, 0xa, - 0x3c, 0x62, 0x72, 0x3e, 0xa, 0x3c, 0x68, 0x32, 0x3e, 0x4e, - 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x20, 0x63, 0x6f, 0x6e, - 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, - 0x68, 0x32, 0x3e, 0xa, 0x54, 0x68, 0x69, 0x73, 0x20, 0x70, - 0x61, 0x67, 0x65, 0x20, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, - 0x79, 0x73, 0x20, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, - 0x61, 0x6c, 0x6c, 0x79, 0x20, 0x67, 0x65, 0x6e, 0x65, 0x72, - 0x61, 0x74, 0x65, 0x64, 0x20, 0x73, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x20, 0x69, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x20, 0x6f, 0x6e, 0x20, 0x74, 0x68, 0x65, - 0x20, 0x54, 0x43, 0x50, 0x2f, 0x49, 0x50, 0x20, 0x63, 0x6f, - 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, - 0xa, 0x3c, 0x70, 0x3e, 0xa, 0x3c, 0x74, 0x61, 0x62, 0x6c, - 0x65, 0x3e, 0xa, 0x3c, 0x74, 0x72, 0x3e, 0x3c, 0x74, 0x68, - 0x3e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x3c, 0x2f, 0x74, 0x68, - 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x52, 0x65, 0x6d, 0x6f, 0x74, - 0x65, 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, - 0x53, 0x74, 0x61, 0x74, 0x65, 0x3c, 0x2f, 0x74, 0x68, 0x3e, - 0x3c, 0x74, 0x68, 0x3e, 0x52, 0x65, 0x74, 0x72, 0x61, 0x6e, - 0x73, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x3c, - 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x54, 0x69, - 0x6d, 0x65, 0x72, 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, - 0x68, 0x3e, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x3c, 0x2f, 0x74, - 0x68, 0x3e, 0x3c, 0x2f, 0x74, 0x72, 0x3e, 0xa, 0x25, 0x21, - 0x20, 0x74, 0x63, 0x70, 0x2d, 0x63, 0x6f, 0x6e, 0x6e, 0x65, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0xa, 0x3c, 0x2f, 0x70, - 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, - 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xa, 0x3c, - 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xa, 0x3c, 0x2f, 0x68, - 0x74, 0x6d, 0x6c, 0x3e, 0xa, 0xa, 0}; - -const struct httpd_fsdata_file file_404_html[] = {{NULL, data_404_html, data_404_html + 10, sizeof(data_404_html) - 10}}; - -const struct httpd_fsdata_file file_index_html[] = {{file_404_html, data_index_html, data_index_html + 12, sizeof(data_index_html) - 12}}; - -const struct httpd_fsdata_file file_index_shtml[] = {{file_index_html, data_index_shtml, data_index_shtml + 13, sizeof(data_index_shtml) - 13}}; - -const struct httpd_fsdata_file file_io_shtml[] = {{file_index_shtml, data_io_shtml, data_io_shtml + 10, sizeof(data_io_shtml) - 10}}; - -const struct httpd_fsdata_file file_stats_shtml[] = {{file_io_shtml, data_stats_shtml, data_stats_shtml + 13, sizeof(data_stats_shtml) - 13}}; - -const struct httpd_fsdata_file file_tcp_shtml[] = {{file_stats_shtml, data_tcp_shtml, data_tcp_shtml + 11, sizeof(data_tcp_shtml) - 11}}; - -#define HTTPD_FS_ROOT file_tcp_shtml - -#define HTTPD_FS_NUMFILES 6 diff --git a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/httpd-fsdata.h b/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/httpd-fsdata.h deleted file mode 100644 index 52d35c265..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/httpd-fsdata.h +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright (c) 2001, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - * $Id: httpd-fsdata.h,v 1.1 2006/06/07 09:13:08 adam Exp $ - */ -#ifndef __HTTPD_FSDATA_H__ -#define __HTTPD_FSDATA_H__ - -#include "uip.h" - -struct httpd_fsdata_file { - const struct httpd_fsdata_file *next; - const char *name; - const char *data; - const int len; -#ifdef HTTPD_FS_STATISTICS -#if HTTPD_FS_STATISTICS == 1 - u16_t count; -#endif /* HTTPD_FS_STATISTICS */ -#endif /* HTTPD_FS_STATISTICS */ -}; - -struct httpd_fsdata_file_noconst { - struct httpd_fsdata_file *next; - char *name; - char *data; - int len; -#ifdef HTTPD_FS_STATISTICS -#if HTTPD_FS_STATISTICS == 1 - u16_t count; -#endif /* HTTPD_FS_STATISTICS */ -#endif /* HTTPD_FS_STATISTICS */ -}; - -#endif /* __HTTPD_FSDATA_H__ */ diff --git a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/httpd.c b/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/httpd.c deleted file mode 100644 index 644cf16b7..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/httpd.c +++ /dev/null @@ -1,346 +0,0 @@ -/** - * \addtogroup apps - * @{ - */ - -/** - * \defgroup httpd Web server - * @{ - * The uIP web server is a very simplistic implementation of an HTTP - * server. It can serve web pages and files from a read-only ROM - * filesystem, and provides a very small scripting language. - - */ - -/** - * \file - * Web server - * \author - * Adam Dunkels - */ - - -/* - * Copyright (c) 2004, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * Author: Adam Dunkels - * - * $Id: httpd.c,v 1.2 2006/06/11 21:46:38 adam Exp $ - */ - -#include "uip.h" -#include "httpd.h" -#include "httpd-fs.h" -#include "httpd-cgi.h" -#include "http-strings.h" - -#include - -#define STATE_WAITING 0 -#define STATE_OUTPUT 1 - -#define ISO_nl 0x0a -#define ISO_space 0x20 -#define ISO_bang 0x21 -#define ISO_percent 0x25 -#define ISO_period 0x2e -#define ISO_slash 0x2f -#define ISO_colon 0x3a - - -/*---------------------------------------------------------------------------*/ -static unsigned short -generate_part_of_file(void *state) -{ - struct httpd_state *s = (struct httpd_state *)state; - - if(s->file.len > uip_mss()) { - s->len = uip_mss(); - } else { - s->len = s->file.len; - } - memcpy(uip_appdata, s->file.data, s->len); - - return s->len; -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(send_file(struct httpd_state *s)) -{ - PSOCK_BEGIN(&s->sout); - - do { - PSOCK_GENERATOR_SEND(&s->sout, generate_part_of_file, s); - s->file.len -= s->len; - s->file.data += s->len; - } while(s->file.len > 0); - - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(send_part_of_file(struct httpd_state *s)) -{ - PSOCK_BEGIN(&s->sout); - - PSOCK_SEND(&s->sout, s->file.data, s->len); - - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -static void -next_scriptstate(struct httpd_state *s) -{ - char *p; - p = strchr(s->scriptptr, ISO_nl) + 1; - s->scriptlen -= (unsigned short)(p - s->scriptptr); - s->scriptptr = p; -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(handle_script(struct httpd_state *s)) -{ - char *ptr; - - PT_BEGIN(&s->scriptpt); - - - while(s->file.len > 0) { - - /* Check if we should start executing a script. */ - if(*s->file.data == ISO_percent && - *(s->file.data + 1) == ISO_bang) { - s->scriptptr = s->file.data + 3; - s->scriptlen = s->file.len - 3; - if(*(s->scriptptr - 1) == ISO_colon) { - httpd_fs_open(s->scriptptr + 1, &s->file); - PT_WAIT_THREAD(&s->scriptpt, send_file(s)); - } else { - PT_WAIT_THREAD(&s->scriptpt, - httpd_cgi(s->scriptptr)(s, s->scriptptr)); - } - next_scriptstate(s); - - /* The script is over, so we reset the pointers and continue - sending the rest of the file. */ - s->file.data = s->scriptptr; - s->file.len = s->scriptlen; - } else { - /* See if we find the start of script marker in the block of HTML - to be sent. */ - - if(s->file.len > uip_mss()) { - s->len = uip_mss(); - } else { - s->len = s->file.len; - } - - if(*s->file.data == ISO_percent) { - ptr = strchr(s->file.data + 1, ISO_percent); - } else { - ptr = strchr(s->file.data, ISO_percent); - } - if(ptr != NULL && - ptr != s->file.data) { - s->len = (int)(ptr - s->file.data); - if(s->len >= uip_mss()) { - s->len = uip_mss(); - } - } - PT_WAIT_THREAD(&s->scriptpt, send_part_of_file(s)); - s->file.data += s->len; - s->file.len -= s->len; - - } - } - - PT_END(&s->scriptpt); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(send_headers(struct httpd_state *s, const char *statushdr)) -{ - char *ptr; - - PSOCK_BEGIN(&s->sout); - - PSOCK_SEND_STR(&s->sout, statushdr); - - ptr = strrchr(s->filename, ISO_period); - if(ptr == NULL) { - PSOCK_SEND_STR(&s->sout, http_content_type_binary); - } else if(strncmp(http_html, ptr, 5) == 0 || - strncmp(http_shtml, ptr, 6) == 0) { - PSOCK_SEND_STR(&s->sout, http_content_type_html); - } else if(strncmp(http_css, ptr, 4) == 0) { - PSOCK_SEND_STR(&s->sout, http_content_type_css); - } else if(strncmp(http_png, ptr, 4) == 0) { - PSOCK_SEND_STR(&s->sout, http_content_type_png); - } else if(strncmp(http_gif, ptr, 4) == 0) { - PSOCK_SEND_STR(&s->sout, http_content_type_gif); - } else if(strncmp(http_jpg, ptr, 4) == 0) { - PSOCK_SEND_STR(&s->sout, http_content_type_jpg); - } else { - PSOCK_SEND_STR(&s->sout, http_content_type_plain); - } - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(handle_output(struct httpd_state *s)) -{ - char *ptr; - - PT_BEGIN(&s->outputpt); - - if(!httpd_fs_open(s->filename, &s->file)) { - httpd_fs_open(http_404_html, &s->file); - strcpy(s->filename, http_404_html); - PT_WAIT_THREAD(&s->outputpt, - send_headers(s, - http_header_404)); - PT_WAIT_THREAD(&s->outputpt, - send_file(s)); - } else { - PT_WAIT_THREAD(&s->outputpt, - send_headers(s, - http_header_200)); - ptr = strchr(s->filename, ISO_period); - if(ptr != NULL && strncmp(ptr, http_shtml, 6) == 0) { - PT_INIT(&s->scriptpt); - PT_WAIT_THREAD(&s->outputpt, handle_script(s)); - } else { - PT_WAIT_THREAD(&s->outputpt, - send_file(s)); - } - } - PSOCK_CLOSE(&s->sout); - PT_END(&s->outputpt); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(handle_input(struct httpd_state *s)) -{ - PSOCK_BEGIN(&s->sin); - - PSOCK_READTO(&s->sin, ISO_space); - - - if(strncmp(s->inputbuf, http_get, 4) != 0) { - PSOCK_CLOSE_EXIT(&s->sin); - } - PSOCK_READTO(&s->sin, ISO_space); - - if(s->inputbuf[0] != ISO_slash) { - PSOCK_CLOSE_EXIT(&s->sin); - } - - if(s->inputbuf[1] == ISO_space) { - strncpy(s->filename, http_index_html, sizeof(s->filename)); - } else { - - s->inputbuf[PSOCK_DATALEN(&s->sin) - 1] = 0; - - /* Process any form input being sent to the server. */ - { - extern void vApplicationProcessFormInput( char *pcInputString, long xInputLength ); - vApplicationProcessFormInput( s->inputbuf, PSOCK_DATALEN(&s->sin) ); - } - - strncpy(s->filename, &s->inputbuf[0], sizeof(s->filename)); - } - - /* httpd_log_file(uip_conn->ripaddr, s->filename);*/ - - s->state = STATE_OUTPUT; - - while(1) { - PSOCK_READTO(&s->sin, ISO_nl); - - if(strncmp(s->inputbuf, http_referer, 8) == 0) { - s->inputbuf[PSOCK_DATALEN(&s->sin) - 2] = 0; - /* httpd_log(&s->inputbuf[9]);*/ - } - } - - PSOCK_END(&s->sin); -} -/*---------------------------------------------------------------------------*/ -static void -handle_connection(struct httpd_state *s) -{ - handle_input(s); - if(s->state == STATE_OUTPUT) { - handle_output(s); - } -} -/*---------------------------------------------------------------------------*/ -void -httpd_appcall(void) -{ - struct httpd_state *s = (struct httpd_state *)&(uip_conn->appstate); - - if(uip_closed() || uip_aborted() || uip_timedout()) { - } else if(uip_connected()) { - PSOCK_INIT(&s->sin, s->inputbuf, sizeof(s->inputbuf) - 1); - PSOCK_INIT(&s->sout, s->inputbuf, sizeof(s->inputbuf) - 1); - PT_INIT(&s->outputpt); - s->state = STATE_WAITING; - /* timer_set(&s->timer, CLOCK_SECOND * 100);*/ - s->timer = 0; - handle_connection(s); - } else if(s != NULL) { - if(uip_poll()) { - ++s->timer; - if(s->timer >= 20) { - uip_abort(); - } - } else { - s->timer = 0; - } - handle_connection(s); - } else { - uip_abort(); - } -} -/*---------------------------------------------------------------------------*/ -/** - * \brief Initialize the web server - * - * This function initializes the web server and should be - * called at system boot-up. - */ -void -httpd_init(void) -{ - uip_listen(HTONS(80)); -} -/*---------------------------------------------------------------------------*/ -/** @} */ diff --git a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/httpd.h b/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/httpd.h deleted file mode 100644 index 7f7a6666e..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/httpd.h +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright (c) 2001-2005, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: httpd.h,v 1.2 2006/06/11 21:46:38 adam Exp $ - * - */ - -#ifndef __HTTPD_H__ -#define __HTTPD_H__ - -#include "psock.h" -#include "httpd-fs.h" - -struct httpd_state { - unsigned char timer; - struct psock sin, sout; - struct pt outputpt, scriptpt; - char inputbuf[50]; - char filename[20]; - char state; - struct httpd_fs_file file; - int len; - char *scriptptr; - int scriptlen; - - unsigned short count; -}; - -void httpd_init(void); -void httpd_appcall(void); - -void httpd_log(char *msg); -void httpd_log_file(u16_t *requester, char *file); - -#endif /* __HTTPD_H__ */ diff --git a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/makefsdata b/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/makefsdata deleted file mode 100644 index d4bc8bf79..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/makefsdata +++ /dev/null @@ -1,78 +0,0 @@ -#!/usr/bin/perl - -open(OUTPUT, "> httpd-fsdata.c"); - -chdir("httpd-fs"); - -opendir(DIR, "."); -@files = grep { !/^\./ && !/(CVS|~)/ } readdir(DIR); -closedir(DIR); - -foreach $file (@files) { - - if(-d $file && $file !~ /^\./) { - print "Processing directory $file\n"; - opendir(DIR, $file); - @newfiles = grep { !/^\./ && !/(CVS|~)/ } readdir(DIR); - closedir(DIR); - printf "Adding files @newfiles\n"; - @files = (@files, map { $_ = "$file/$_" } @newfiles); - next; - } -} - -foreach $file (@files) { - if(-f $file) { - - print "Adding file $file\n"; - - open(FILE, $file) || die "Could not open file $file\n"; - - $file =~ s-^-/-; - $fvar = $file; - $fvar =~ s-/-_-g; - $fvar =~ s-\.-_-g; - # for AVR, add PROGMEM here - print(OUTPUT "static const char data".$fvar."[] = {\n"); - print(OUTPUT "\t/* $file */\n\t"); - for($j = 0; $j < length($file); $j++) { - printf(OUTPUT "%#02x, ", unpack("C", substr($file, $j, 1))); - } - printf(OUTPUT "0,\n"); - - - $i = 0; - while(read(FILE, $data, 1)) { - if($i == 0) { - print(OUTPUT "\t"); - } - printf(OUTPUT "%#02x, ", unpack("C", $data)); - $i++; - if($i == 10) { - print(OUTPUT "\n"); - $i = 0; - } - } - print(OUTPUT "0};\n\n"); - close(FILE); - push(@fvars, $fvar); - push(@pfiles, $file); - } -} - -for($i = 0; $i < @fvars; $i++) { - $file = $pfiles[$i]; - $fvar = $fvars[$i]; - - if($i == 0) { - $prevfile = "NULL"; - } else { - $prevfile = "file" . $fvars[$i - 1]; - } - print(OUTPUT "const struct httpd_fsdata_file file".$fvar."[] = {{$prevfile, data$fvar, "); - print(OUTPUT "data$fvar + ". (length($file) + 1) .", "); - print(OUTPUT "sizeof(data$fvar) - ". (length($file) + 1) ."}};\n\n"); -} - -print(OUTPUT "#define HTTPD_FS_ROOT file$fvars[$i - 1]\n\n"); -print(OUTPUT "#define HTTPD_FS_NUMFILES $i\n"); diff --git a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/makestrings b/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/makestrings deleted file mode 100644 index 8a13c6d29..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/makestrings +++ /dev/null @@ -1,40 +0,0 @@ -#!/usr/bin/perl - - -sub stringify { - my $name = shift(@_); - open(OUTPUTC, "> $name.c"); - open(OUTPUTH, "> $name.h"); - - open(FILE, "$name"); - - while() { - if(/(.+) "(.+)"/) { - $var = $1; - $data = $2; - - $datan = $data; - $datan =~ s/\\r/\r/g; - $datan =~ s/\\n/\n/g; - $datan =~ s/\\01/\01/g; - $datan =~ s/\\0/\0/g; - - printf(OUTPUTC "const char $var\[%d] = \n", length($datan) + 1); - printf(OUTPUTC "/* \"$data\" */\n"); - printf(OUTPUTC "{"); - for($j = 0; $j < length($datan); $j++) { - printf(OUTPUTC "%#02x, ", unpack("C", substr($datan, $j, 1))); - } - printf(OUTPUTC "};\n"); - - printf(OUTPUTH "extern const char $var\[%d];\n", length($datan) + 1); - - } - } - close(OUTPUTC); - close(OUTPUTH); -} -stringify("http-strings"); - -exit 0; - diff --git a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/pack_struct_end.h b/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/pack_struct_end.h deleted file mode 100644 index 13ce031bf..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/pack_struct_end.h +++ /dev/null @@ -1 +0,0 @@ -#pragma pack() diff --git a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/pack_struct_start.h b/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/pack_struct_start.h deleted file mode 100644 index 5e9b48c63..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/pack_struct_start.h +++ /dev/null @@ -1 +0,0 @@ -#pragma pack(1) diff --git a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/uIP_Task.c b/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/uIP_Task.c deleted file mode 100644 index 54e009093..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/uIP_Task.c +++ /dev/null @@ -1,201 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* Standard includes. */ -#include - -/* Scheduler includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "semphr.h" - -/* uip includes. */ -#include "uip.h" -#include "uip_arp.h" -#include "httpd.h" -#include "timer.h" -#include "clock-arch.h" -#include "timer.h" - -/* Demo includes. */ -#include "FEC.h" -#include "partest.h" - -/*-----------------------------------------------------------*/ - -/* Shortcut to the header within the Rx buffer. */ -#define xHeader ((struct uip_eth_hdr *) &uip_buf[ 0 ]) - -/*-----------------------------------------------------------*/ - -/* - * Port functions required by the uIP stack. - */ -clock_time_t clock_time( void ); - -/*-----------------------------------------------------------*/ - -/* The semaphore used by the ISR to wake the uIP task. */ -extern SemaphoreHandle_t xFECSemaphore; - -/*-----------------------------------------------------------*/ - -clock_time_t clock_time( void ) -{ - return xTaskGetTickCount(); -} - - -void vuIP_Task( void *pvParameters ) -{ -portBASE_TYPE i; -uip_ipaddr_t xIPAddr; -struct timer periodic_timer, arp_timer; -extern void ( vEMAC_ISR )( void ); - - /* Just to get rid of the compiler warning. */ - ( void ) pvParameters; - - /* Enable/Reset the Ethernet Controller */ - - /* Create the semaphore used by the ISR to wake this task. */ - vSemaphoreCreateBinary( xFECSemaphore ); - - /* Initialise the uIP stack. */ - timer_set( &periodic_timer, configTICK_RATE_HZ / 2 ); - timer_set( &arp_timer, configTICK_RATE_HZ * 10 ); - uip_init(); - uip_ipaddr( xIPAddr, configIP_ADDR0, configIP_ADDR1, configIP_ADDR2, configIP_ADDR3 ); - uip_sethostaddr( xIPAddr ); - uip_ipaddr( xIPAddr, configNET_MASK0, configNET_MASK1, configNET_MASK2, configNET_MASK3 ); - uip_setnetmask( xIPAddr ); - httpd_init(); - - vInitFEC(); - - for( ;; ) - { - /* Is there received data ready to be processed? */ - uip_len = ( unsigned short ) ulFECRx(); - - if( ( uip_len > 0 ) && ( uip_buf != NULL ) ) - { - /* Standard uIP loop taken from the uIP manual. */ - - if( xHeader->type == htons( UIP_ETHTYPE_IP ) ) - { - uip_arp_ipin(); - uip_input(); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - uip_arp_out(); - vFECTx(); - } - } - else if( xHeader->type == htons( UIP_ETHTYPE_ARP ) ) - { - uip_arp_arpin(); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - vFECTx(); - } - } - } - else - { - if( ( timer_expired( &periodic_timer ) ) && ( uip_buf != NULL ) ) - { - timer_reset( &periodic_timer ); - for( i = 0; i < UIP_CONNS; i++ ) - { - uip_periodic( i ); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - uip_arp_out(); - vFECTx(); - } - } - - /* Call the ARP timer function every 10 seconds. */ - if( timer_expired( &arp_timer ) ) - { - timer_reset( &arp_timer ); - uip_arp_timer(); - } - } - else - { - /* We did not receive a packet, and there was no periodic - processing to perform. Block for a fixed period. If a packet - is received during this period we will be woken by the ISR - giving us the Semaphore. */ - xSemaphoreTake( xFECSemaphore, configTICK_RATE_HZ / 2 ); - } - } - } -} -/*-----------------------------------------------------------*/ - -void vApplicationProcessFormInput( char *pcInputString, portBASE_TYPE xInputLength ) -{ -char *c; - - /* Just to get rid of the compiler warning - other ports/demos use the parameter. */ - ( void ) xInputLength; - - /* Process the form input sent by the IO page of the served HTML. */ - - c = strstr( pcInputString, "?" ); - - if( c ) - { - /* Turn LED's on or off in accordance with the check box status. */ - if( strstr( c, "LED3=1" ) != NULL ) - { - /* Turn LED 3 on. */ - vParTestSetLED( 3, 1 ); - } - else - { - /* Turn LED 3 off. */ - vParTestSetLED( 3, 0 ); - } - } -} - diff --git a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/uip-conf.h b/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/uip-conf.h deleted file mode 100644 index 16d99231f..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/uip-conf.h +++ /dev/null @@ -1,163 +0,0 @@ -/** - * \addtogroup uipopt - * @{ - */ - -/** - * \name Project-specific configuration options - * @{ - * - * uIP has a number of configuration options that can be overridden - * for each project. These are kept in a project-specific uip-conf.h - * file and all configuration names have the prefix UIP_CONF. - */ - -/* - * Copyright (c) 2006, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: uip-conf.h,v 1.6 2006/06/12 08:00:31 adam Exp $ - */ - -/** - * \file - * An example uIP configuration file - * \author - * Adam Dunkels - */ - -#ifndef __UIP_CONF_H__ -#define __UIP_CONF_H__ - -#include - -/** - * 8 bit datatype - * - * This typedef defines the 8-bit type used throughout uIP. - * - * \hideinitializer - */ -typedef uint8_t u8_t; - -/** - * 16 bit datatype - * - * This typedef defines the 16-bit type used throughout uIP. - * - * \hideinitializer - */ -typedef uint16_t u16_t; - -/** - * Statistics datatype - * - * This typedef defines the dataype used for keeping statistics in - * uIP. - * - * \hideinitializer - */ -typedef unsigned short uip_stats_t; - -/** - * Maximum number of TCP connections. - * - * \hideinitializer - */ -#define UIP_CONF_MAX_CONNECTIONS 15 - -/** - * Maximum number of listening TCP ports. - * - * \hideinitializer - */ -#define UIP_CONF_MAX_LISTENPORTS 2 - -/** - * uIP buffer size. - * - * \hideinitializer - */ -#define UIP_CONF_BUFFER_SIZE 1480 - -/** - * CPU byte order. - * - * \hideinitializer - */ -#define UIP_CONF_BYTE_ORDER UIP_BIG_ENDIAN - -/** - * Logging on or off - * - * \hideinitializer - */ -#define UIP_CONF_LOGGING 0 - -/** - * UDP support on or off - * - * \hideinitializer - */ -#define UIP_CONF_UDP 0 - -/** - * UDP checksums on or off - * - * \hideinitializer - */ -#define UIP_CONF_UDP_CHECKSUMS 1 - -/** - * uIP statistics on or off - * - * \hideinitializer - */ -#define UIP_CONF_STATISTICS 1 - - -/* Here we include the header file for the application(s) we use in - our project. */ -/*#include "smtp.h"*/ -/*#include "hello-world.h"*/ -/*#include "telnetd.h"*/ -#include "webserver.h" -/*#include "dhcpc.h"*/ -/*#include "resolv.h"*/ -/*#include "webclient.h"*/ - -#define UIP_CONF_EXTERNAL_BUFFER - -#define PACK_STRUCT_START -#define PACK_STRUCT_END - -#endif /* __UIP_CONF_H__ */ - -/** @} */ -/** @} */ diff --git a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/webserver.h b/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/webserver.h deleted file mode 100644 index 1acb290b8..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/httpd/webserver.h +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright (c) 2002, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials provided - * with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: webserver.h,v 1.2 2006/06/11 21:46:38 adam Exp $ - * - */ -#ifndef __WEBSERVER_H__ -#define __WEBSERVER_H__ - -#include "httpd.h" - -typedef struct httpd_state uip_tcp_appstate_t; -/* UIP_APPCALL: the name of the application function. This function - must return void and take no arguments (i.e., C type "void - appfunc(void)"). */ -#ifndef UIP_APPCALL -#define UIP_APPCALL httpd_appcall -#endif - - -#endif /* __WEBSERVER_H__ */ diff --git a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/main.c b/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/main.c deleted file mode 100644 index 206373c19..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/main.c +++ /dev/null @@ -1,417 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - - -/* - * Creates all the demo application tasks, then starts the scheduler. The WEB - * documentation provides more details of the standard demo application tasks. - * In addition to the standard demo tasks, the following tasks and tests are - * defined and/or created within this file: - * - * "Web server" - Very basic demonstration of the uIP stack. The WEB server - * simply generates a page that shows the current state of all the tasks within - * the system, including the high water mark of each task stack. The high water - * mark is displayed as the amount of stack that has never been used, so the - * closer the value is to zero the closer the task has come to overflowing its - * stack. The IP address and net mask are set within FreeRTOSConfig.h. Sub - * pages display some TCP/IP status information and permit LED3 to be turned on - * and off using a check box. - * - * Tick hook function that implements a "Check" function - This is executed - * every 5 seconds from the tick hook function. It checks to ensure that all - * the standard demo tasks are still operational and running without error. - * The system status (pass/fail) is then displayed underneith the task table on - * the served WEB pages. - * - * "Reg test" tasks - These fill the registers with known values, then check - * that each register still contains its expected value. Each task uses - * different values. The tasks run with very low priority so get preempted very - * frequently. A register containing an unexpected value is indicative of an - * error in the context switching mechanism. - * - */ - -/* Standard includes. */ -#include - -/* Scheduler includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "queue.h" -#include "semphr.h" - -/* Demo app includes. */ -#include "BlockQ.h" -#include "death.h" -#include "flash.h" -#include "partest.h" -#include "GenQTest.h" -#include "QPeek.h" -#include "recmutex.h" - -/*-----------------------------------------------------------*/ - -/* ComTest constants - there is no free LED for the comtest tasks. */ -#define mainCOM_TEST_BAUD_RATE ( ( unsigned long ) 19200 ) -#define mainCOM_TEST_LED ( 5 ) - -/* Task priorities. */ -#define mainQUEUE_POLL_PRIORITY ( tskIDLE_PRIORITY + 2 ) -#define mainCHECK_TASK_PRIORITY ( tskIDLE_PRIORITY + 3 ) -#define mainSEM_TEST_PRIORITY ( tskIDLE_PRIORITY + 1 ) -#define mainBLOCK_Q_PRIORITY ( tskIDLE_PRIORITY + 2 ) -#define mainCREATOR_TASK_PRIORITY ( tskIDLE_PRIORITY + 2 ) -#define mainINTEGER_TASK_PRIORITY ( tskIDLE_PRIORITY ) -#define mainGEN_QUEUE_TASK_PRIORITY ( tskIDLE_PRIORITY ) -#define mainWEB_TASK_PRIORITY ( tskIDLE_PRIORITY + 2 ) - -/* WEB server requires enough stack for the string handling functions. */ -#define mainBASIC_WEB_STACK_SIZE ( configMINIMAL_STACK_SIZE * 2 ) - -/* - * Configure the hardware for the demo. - */ -static void prvSetupHardware( void ); - -/* - * Implements the 'check' function as described at the top of this file. - */ -static void prvCheckFunction( void ); - -/* - * Implement the 'Reg test' functionality as described at the top of this file. - */ -static void vRegTest1Task( void *pvParameters ); -static void vRegTest2Task( void *pvParameters ); - -/* - * The task that handles the uIP stack. All TCP/IP processing is performed in - * this task. - */ -extern void vuIP_Task( void *pvParameters ); - -/*-----------------------------------------------------------*/ - -/* Counters used to detect errors within the reg test tasks. */ -static volatile unsigned long ulRegTest1Counter = 0x11111111, ulRegTest2Counter = 0x22222222; - -/* Flag that latches any errors detected in the system. */ -unsigned long ulCheckErrors = 0; - -/*-----------------------------------------------------------*/ - -int main( void ) -{ -extern void vBasicWEBServer( void *pv ); - - /* Setup the hardware ready for this demo. */ - prvSetupHardware(); - - xTaskCreate( vuIP_Task, "uIP", mainBASIC_WEB_STACK_SIZE, NULL, mainCHECK_TASK_PRIORITY - 1, NULL ); - - /* Start the standard demo tasks. */ - vStartLEDFlashTasks( tskIDLE_PRIORITY ); - vStartGenericQueueTasks( mainGEN_QUEUE_TASK_PRIORITY ); - vStartQueuePeekTasks(); - vStartRecursiveMutexTasks(); - vStartBlockingQueueTasks( mainBLOCK_Q_PRIORITY ); - - /* Start the reg test tasks - defined in this file. */ - xTaskCreate( vRegTest1Task, "Reg1", configMINIMAL_STACK_SIZE, ( void * ) &ulRegTest1Counter, tskIDLE_PRIORITY, NULL ); - xTaskCreate( vRegTest2Task, "Reg2", configMINIMAL_STACK_SIZE, ( void * ) &ulRegTest2Counter, tskIDLE_PRIORITY, NULL ); - - /* Start the scheduler. */ - vTaskStartScheduler(); - - /* Will only get here if there was insufficient memory to create the idle - task. */ - for( ;; ) - { - } -} -/*-----------------------------------------------------------*/ - -void vApplicationTickHook( void ) -{ -static unsigned long ulExecutionCount = 0, ulLastRegTest1Count = 0, ulLastRegTest2Count = 0; -const unsigned long ulExecutionRate = 5000 / portTICK_PERIOD_MS; - - /* Increment the count of how many times the tick hook has been called. */ - ulExecutionCount++; - - /* Is it time to perform the check again? */ - if( ulExecutionCount >= ulExecutionRate ) - { - /* Reset the execution count so this function is called again in 5 - seconds time. */ - ulExecutionCount = 0; - - /* Has an error been found in any task? */ - if( xAreGenericQueueTasksStillRunning() != pdTRUE ) - { - ulCheckErrors |= 0x01UL; - } - - if( xAreQueuePeekTasksStillRunning() != pdTRUE ) - { - ulCheckErrors |= 0x02UL; - } - - if( xAreBlockingQueuesStillRunning() != pdTRUE ) - { - ulCheckErrors |= 0x04UL; - } - - if( xAreRecursiveMutexTasksStillRunning() != pdTRUE ) - { - ulCheckErrors |= 0x200UL; - } - - if( ulLastRegTest1Count == ulRegTest1Counter ) - { - ulCheckErrors |= 0x1000UL; - } - - if( ulLastRegTest2Count == ulRegTest2Counter ) - { - ulCheckErrors |= 0x1000UL; - } - - ulLastRegTest1Count = ulRegTest1Counter; - ulLastRegTest2Count = ulRegTest2Counter; - } -} -/*-----------------------------------------------------------*/ - -static void prvSetupHardware( void ) -{ - /* Disable the watchdog, STOP and WAIT modes. */ - SOPT1 = 0; - - /* --- Setup clock to use external 25MHz source. --- */ - - /* Extal and xtal pin ON. */ - PTDPF1_D4 = 0x03; - PTDPF1_D5 = 0x03; - - /* Switch from FEI to FBE (FLL bypassed external) - enable external clock source */ - MCGC2 = MCGC2_ERCLKEN_MASK /* Activate external reference clock */ - | MCGC2_EREFS_MASK /* Because crystal is being used */ - | MCGC2_RANGE_MASK; /* High range */ - - /* Select clock mode and clear IREFs. */ - MCGC1 = (0x02 << 6 ) /* CLKS = 10 -> external reference clock. */ - | (0x04 << 3 ) /* RDIV = 2^4 -> 25MHz/16 = 1.5625 MHz */ - | MCGC1_IRCLKEN_MASK; /* IRCLK to RTC enabled */ - - /* Wait for Reference and Clock status bits to update. */ - while( MCGSC_IREFST | ( MCGSC_CLKST != 0x02 ) ) - { - /* Nothing to do here. */ - } - - /* Switch from FBE to PBE (PLL bypassed internal) mode. */ - MCGC3 = 0x08 /* Set PLL multi 50MHz. */ - | MCGC3_PLLS_MASK; /* Select PLL. */ - - /* Wait for PLL status and lock bits to update. */ - while( !MCGSC_PLLST | !MCGSC_LOCK ) - { - /* Nothing to do here. */ - } - - - /* Now in PBE Mode, finally switch from PBE to PEE (PLL enabled external - mode). */ - MCGC1_CLKS = 0b00; /* PLL clock to system (MCGOUT) */ - - /* Wait for the clock status bits to update. */ - while( MCGSC_CLKST != 0x03 ) - { - /* Nothing to do here. */ - } - - /* Setup the IO for the LED outputs. */ - vParTestInitialise(); -} -/*-----------------------------------------------------------*/ - -void vApplicationStackOverflowHook( TaskHandle_t pxTask, char *pcTaskName ) -{ - /* This will get called if a stack overflow is detected during the context - switch. Set configCHECK_FOR_STACK_OVERFLOWS to 2 to also check for stack - problems within nested interrupts, but only do this for debug purposes as - it will increase the context switch time. */ - - ( void ) pxTask; - ( void ) pcTaskName; - - for( ;; ) - { - } -} -/*-----------------------------------------------------------*/ - -static void vRegTest1Task( void *pvParameters ) -{ - /* Just to remove compiler warnings. */ - ( void ) pvParameters; - - /* Set all the registers to known values, then check that each retains its - expected value - as described at the top of this file. If an error is - found then the loop counter will no longer be incremented allowing the check - task to recognise the error. */ - asm volatile ( "reg_test_1_start: \n\t" - " moveq #1, d0 \n\t" - " moveq #2, d1 \n\t" - " moveq #3, d2 \n\t" - " moveq #4, d3 \n\t" - " moveq #5, d4 \n\t" - " moveq #6, d5 \n\t" - " moveq #7, d6 \n\t" - " moveq #8, d7 \n\t" - " move #9, a0 \n\t" - " move #10, a1 \n\t" - " move #11, a2 \n\t" - " move #12, a3 \n\t" - " move #13, a4 \n\t" - " move #15, a6 \n\t" - " \n\t" - " cmpi.l #1, d0 \n\t" - " bne reg_test_1_error \n\t" - " cmpi.l #2, d1 \n\t" - " bne reg_test_1_error \n\t" - " cmpi.l #3, d2 \n\t" - " bne reg_test_1_error \n\t" - " cmpi.l #4, d3 \n\t" - " bne reg_test_1_error \n\t" - " cmpi.l #5, d4 \n\t" - " bne reg_test_1_error \n\t" - " cmpi.l #6, d5 \n\t" - " bne reg_test_1_error \n\t" - " cmpi.l #7, d6 \n\t" - " bne reg_test_1_error \n\t" - " cmpi.l #8, d7 \n\t" - " bne reg_test_1_error \n\t" - " move a0, d0 \n\t" - " cmpi.l #9, d0 \n\t" - " bne reg_test_1_error \n\t" - " move a1, d0 \n\t" - " cmpi.l #10, d0 \n\t" - " bne reg_test_1_error \n\t" - " move a2, d0 \n\t" - " cmpi.l #11, d0 \n\t" - " bne reg_test_1_error \n\t" - " move a3, d0 \n\t" - " cmpi.l #12, d0 \n\t" - " bne reg_test_1_error \n\t" - " move a4, d0 \n\t" - " cmpi.l #13, d0 \n\t" - " bne reg_test_1_error \n\t" - " move a6, d0 \n\t" - " cmpi.l #15, d0 \n\t" - " bne reg_test_1_error \n\t" - " move ulRegTest1Counter, d0 \n\t" - " addq #1, d0 \n\t" - " move d0, ulRegTest1Counter \n\t" - " bra reg_test_1_start \n\t" - "reg_test_1_error: \n\t" - " bra reg_test_1_error \n\t" - ); -} -/*-----------------------------------------------------------*/ - -static void vRegTest2Task( void *pvParameters ) -{ - /* Just to remove compiler warnings. */ - ( void ) pvParameters; - - /* Set all the registers to known values, then check that each retains its - expected value - as described at the top of this file. If an error is - found then the loop counter will no longer be incremented allowing the check - task to recognise the error. */ - asm volatile ( "reg_test_2_start: \n\t" - " moveq #10, d0 \n\t" - " moveq #20, d1 \n\t" - " moveq #30, d2 \n\t" - " moveq #40, d3 \n\t" - " moveq #50, d4 \n\t" - " moveq #60, d5 \n\t" - " moveq #70, d6 \n\t" - " moveq #80, d7 \n\t" - " move #90, a0 \n\t" - " move #100, a1 \n\t" - " move #110, a2 \n\t" - " move #120, a3 \n\t" - " move #130, a4 \n\t" - " move #150, a6 \n\t" - " \n\t" - " cmpi.l #10, d0 \n\t" - " bne reg_test_2_error \n\t" - " cmpi.l #20, d1 \n\t" - " bne reg_test_2_error \n\t" - " cmpi.l #30, d2 \n\t" - " bne reg_test_2_error \n\t" - " cmpi.l #40, d3 \n\t" - " bne reg_test_2_error \n\t" - " cmpi.l #50, d4 \n\t" - " bne reg_test_2_error \n\t" - " cmpi.l #60, d5 \n\t" - " bne reg_test_2_error \n\t" - " cmpi.l #70, d6 \n\t" - " bne reg_test_2_error \n\t" - " cmpi.l #80, d7 \n\t" - " bne reg_test_2_error \n\t" - " move a0, d0 \n\t" - " cmpi.l #90, d0 \n\t" - " bne reg_test_2_error \n\t" - " move a1, d0 \n\t" - " cmpi.l #100, d0 \n\t" - " bne reg_test_2_error \n\t" - " move a2, d0 \n\t" - " cmpi.l #110, d0 \n\t" - " bne reg_test_2_error \n\t" - " move a3, d0 \n\t" - " cmpi.l #120, d0 \n\t" - " bne reg_test_2_error \n\t" - " move a4, d0 \n\t" - " cmpi.l #130, d0 \n\t" - " bne reg_test_2_error \n\t" - " move a6, d0 \n\t" - " cmpi.l #150, d0 \n\t" - " bne reg_test_2_error \n\t" - " move ulRegTest1Counter, d0 \n\t" - " addq #1, d0 \n\t" - " move d0, ulRegTest2Counter \n\t" - " bra reg_test_2_start \n\t" - "reg_test_2_error: \n\t" - " bra reg_test_2_error \n\t" - ); -} -/*-----------------------------------------------------------*/ - diff --git a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/mii.h b/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/mii.h deleted file mode 100644 index 98586b8ee..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/mii.h +++ /dev/null @@ -1,147 +0,0 @@ -/* - * File: mii.h - * Purpose: - * - * Notes: - */ - -#ifndef _MII_H_ -#define _MII_H_ - -/********************************************************************/ - -/* Timeout for MII communications */ -#define FEC_MII_TIMEOUT 0x10000 - - -/********************************************************************/ -//Fucntion Protoypes - -int FEC_Mii_Write(int, int, int); -int FEC_Mii_Read(int, int, unsigned short*); -void FEC_Mii_Init(void); -void fec_mii_reg_printf(void); - -/********************************************************************/ -//Register Mask and Other -//=============== -/* Definition of allowed values for MDCSEL */ -#define MII_MDCSEL(x) x/5000000 - -#define MII_WRITE 0x01 -#define MII_READ 0x02 - -#define TCMD_START 0x01 /* Transmit buffer frame */ -#define TCMD_PAUSE 0x02 /* Transmit PAUSE frame */ -#define TCMD_ABORT 0x03 /* Abort transmission */ - -/* PHY registers symbolic names */ -/* (located in MII memory map, accessible through MDIO) */ -#define PHY_REG_CR 0x00 /* Control Register */ -#define PHY_REG_SR 0x01 /* Status Register */ -#define PHY_REG_ID1 0x02 /* PHY Identification Register 1 */ -#define PHY_REG_ID2 0x03 /* PHY Identification Register 2 */ -#define PHY_REG_ANAR 0x04 /* Auto-Negotiation Advertisement Register */ -#define PHY_REG_ANLPAR 0x05 /* Auto-Negotiation Link Partner Ability Register */ -#define PHY_REG_ER 0x06 /* Auto-Negotiation Expansion Register */ -#define PHY_REG_NPTR 0x07 /* Auto-Negotiation Next Page Transfer Register */ -#define PHY_REG_IR 0x10 /* Interrupt Register */ -#define PHY_REG_PSR 0x11 /* Proprietary Status Register */ -#define PHY_REG_PCR 0x12 /* Proprietary Control Register */ -#define PHY_REG_10BTBC 0x13 /* 10Base-T Bypass Control Register */ -#define PHY_REG_100BXBC 0x14 /* 100Base-X Bypass Control Register */ -#define PHY_REG_ADDR 0x15 /* Test & Trim Control Register */ -#define PHY_REG_DSPRC 0x17 /* DSP Reset Control */ -#define PHY_REG_DSPRR1 0x18 /* 100Base-X DSP Read Registers */ -#define PHY_REG_DSPRR2 0x19 -#define PHY_REG_DSPRR3 0x1A -#define PHY_REG_DSPWR1 0x1B /* 100Base-X DSP Write Registers */ -#define PHY_REG_DSPWR2 0x1C -#define PHY_REG_DSPWR3 0x1D - -/* PHY registers structure */ -/* 0 - Control Register */ -#define PHY_R0_RESET 0x8000 /* Reset */ -#define PHY_R0_LB 0x4000 /* Loop Back */ -#define PHY_R0_DR 0x2000 /* Data Rate (100Mb/s) */ -#define PHY_R0_ANE 0x1000 /* Auto-Negotiation Enable */ -#define PHY_R0_PD 0x0800 /* Power Down */ -#define PHY_R0_ISOLATE 0x0400 /* Isolate (MII is disconnected) */ -#define PHY_R0_RAN 0x0200 /* Restart Auto-Negotiation */ -#define PHY_R0_DPLX 0x0100 /* Duplex (Full duplex) */ -#define PHY_R0_CT 0x0080 /* Collision Test (Enable) */ - -/* 1 - Status Register */ -#define PHY_R1_100T4 0x8000 /* 100BASET4 Supported */ -#define PHY_R1_100F 0x4000 /* 100Mb/s Full Duplex Supported */ -#define PHY_R1_100H 0x2000 /* 100Mb/s Half Duplex Supported */ -#define PHY_R1_10F 0x1000 /* 10Mb/s Full Duplex Supported */ -#define PHY_R1_10H 0x0800 /* 10Mb/s Half Duplex Supported */ -#define PHY_R1_SUP 0x0040 /* MI Preamble Supression (capable of) */ -#define PHY_R1_ANC 0x0020 /* Auto Negotiation Complete */ -#define PHY_R1_RF 0x0010 /* Remote Fault */ -#define PHY_R1_ANA 0x0008 /* Auto-Negotiation Ability (present) */ -#define PHY_R1_LS 0x0004 /* Link Status (Link is Up) */ -#define PHY_R1_JD 0x0002 /* Jabber Detect (detected) */ -#define PHY_R1_EC 0x0001 /* Extended Capability (regs 2 to 31 exists) */ - -/* 2 - PHY Identifier Register 1 */ -/* 3 - PHY Identifier Register 2 */ -/* read only - contains Manufacturer's info etc. - see documentation for the detailed description */ - -/* 4 - Auto Negotiation Advertisement Register */ -#define PHY_R4_NP 0x8000 /* Next Page (capable of sending next pages) */ -#define PHY_R4_RF 0x2000 /* Remote Fault */ -#define PHY_R4_FC 0x0400 /* Flow Control */ -#define PHY_R4_100F 0x0100 /* 100Base-TX Full Duplex Capable */ -#define PHY_R4_100H 0x0080 /* 100Base-TX Half Duplex Capable */ -#define PHY_R4_10F 0x0040 /* 10Base-T Full Duplex Capable */ -#define PHY_R4_10H 0x0020 /* 10Base-T Half Duplex Capable */ -/* bits 4 to 0 are Selector Field (IEEE Std 802.3 = 00001) */ - -/* 5 - Auto Negotiation Link Partner Ability Register (Base Page & Next Page) */ -/* read only - please consult PHY documentation */ -#define PHY_R5_FCTL 0x0400 /* 10Base-T Half Duplex Capable */ - -/* 16 - Interrupt Control Register */ -#define PHY_R16_ACKIE 0x4000 //Acknowledge Bit Received Interrupt Enable -#define PHY_R16_PRIE 0x2000 //Page Received INT Enable -#define PHY_R16_LCIE 0x1000 //Link Changed Enable -#define PHY_R16_ANIE 0x0800 //Auto-Negotiation Changed Enable -#define PHY_R16_PDFIE 0x0400 //Parallel Detect Fault Enable -#define PHY_R16_RFIE 0x0200 //Remote Fault Interrupt Enable -#define PHY_R16_JABIE 0x0100 //Jabber Interrupt Enable - -#define PHY_R16_ACKR 0x0040 //Acknowledge Bit Received Interrupt -#define PHY_R16_PGR 0x0020 //Page Received -#define PHY_R16_LKC 0x0010 //Link Changed -#define PHY_R16_ANC 0x0008 //Auto-Negotiation Changed -#define PHY_R16_PDF 0x0004 //Parallel Detect Fault -#define PHY_R16_RMTF 0x0002 //Remote Fault Interrupt -#define PHY_R16_JABI 0x0001 //Jabber Interrupt - -////Proprietary Status Register -#define PHY_R17_LNK 0x4000 // -#define PHY_R17_DPM 0x2000 //Duplex Mode -#define PHY_R17_SPD 0x1000 //Speed -#define PHY_R17_ANNC 0x0400 //Auto-Negotiation Complete -#define PHY_R17_PRCVD 0x0200 // -#define PHY_R17_ANCM 0x0100 // Auto-Negotiation (A-N) Common Operating Mode -#define PHY_R17_PLR 0x0020 // - -/* Bit definitions and macros for MCF_FEC_MMFR */ -#define FEC_MMFR_DATA(x) (((x)&0x0000FFFF)<<0) -#define FEC_MMFR_TA(x) (((x)&0x00000003)<<16) -#define FEC_MMFR_RA(x) (((x)&0x0000001F)<<18) -#define FEC_MMFR_PA(x) (((x)&0x0000001F)<<23) -#define FEC_MMFR_OP(x) (((x)&0x00000003)<<28) -#define FEC_MMFR_ST(x) (((x)&0x00000003)<<30) -#define FEC_MMFR_ST_01 (0x40000000) -#define FEC_MMFR_OP_READ (0x20000000) -#define FEC_MMFR_OP_WRITE (0x10000000) -#define FEC_MMFR_TA_10 (0x00020000) - -/********************************************************************/ - -#endif /* _MII_H_ */ diff --git a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/printf-stdarg.c b/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/printf-stdarg.c deleted file mode 100644 index b5ac41be7..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/printf-stdarg.c +++ /dev/null @@ -1,293 +0,0 @@ -/* - Copyright 2001, 2002 Georges Menie (www.menie.org) - stdarg version contributed by Christian Ettinger - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU Lesser General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -*/ - -/* - putchar is the only external dependency for this file, - if you have a working putchar, leave it commented out. - If not, uncomment the define below and - replace outbyte(c) by your own function call. - -*/ - -#define putchar(c) c - -#include - -static void printchar(char **str, int c) -{ - //extern int putchar(int c); - - if (str) { - **str = (char)c; - ++(*str); - } - else - { - (void)putchar(c); - } -} - -#define PAD_RIGHT 1 -#define PAD_ZERO 2 - -static int prints(char **out, const char *string, int width, int pad) -{ - register int pc = 0, padchar = ' '; - - if (width > 0) { - register int len = 0; - register const char *ptr; - for (ptr = string; *ptr; ++ptr) ++len; - if (len >= width) width = 0; - else width -= len; - if (pad & PAD_ZERO) padchar = '0'; - } - if (!(pad & PAD_RIGHT)) { - for ( ; width > 0; --width) { - printchar (out, padchar); - ++pc; - } - } - for ( ; *string ; ++string) { - printchar (out, *string); - ++pc; - } - for ( ; width > 0; --width) { - printchar (out, padchar); - ++pc; - } - - return pc; -} - -/* the following should be enough for 32 bit int */ -#define PRINT_BUF_LEN 12 - -static int printi(char **out, int i, int b, int sg, int width, int pad, int letbase) -{ - char print_buf[PRINT_BUF_LEN]; - register char *s; - register int t, neg = 0, pc = 0; - register unsigned int u = (unsigned int)i; - - if (i == 0) { - print_buf[0] = '0'; - print_buf[1] = '\0'; - return prints (out, print_buf, width, pad); - } - - if (sg && b == 10 && i < 0) { - neg = 1; - u = (unsigned int)-i; - } - - s = print_buf + PRINT_BUF_LEN-1; - *s = '\0'; - - while (u) { - t = (unsigned int)u % b; - if( t >= 10 ) - t += letbase - '0' - 10; - *--s = (char)(t + '0'); - u /= b; - } - - if (neg) { - if( width && (pad & PAD_ZERO) ) { - printchar (out, '-'); - ++pc; - --width; - } - else { - *--s = '-'; - } - } - - return pc + prints (out, s, width, pad); -} - -static int print( char **out, const char *format, va_list args ) -{ - register int width, pad; - register int pc = 0; - char scr[2]; - - for (; *format != 0; ++format) { - if (*format == '%') { - ++format; - width = pad = 0; - if (*format == '\0') break; - if (*format == '%') goto out; - if (*format == '-') { - ++format; - pad = PAD_RIGHT; - } - while (*format == '0') { - ++format; - pad |= PAD_ZERO; - } - for ( ; *format >= '0' && *format <= '9'; ++format) { - width *= 10; - width += *format - '0'; - } - if( *format == 's' ) { - register char *s = (char *)va_arg( args, int ); - pc += prints (out, s?s:"(null)", width, pad); - continue; - } - if( *format == 'd' ) { - pc += printi (out, va_arg( args, int ), 10, 1, width, pad, 'a'); - continue; - } - if( *format == 'x' ) { - pc += printi (out, va_arg( args, int ), 16, 0, width, pad, 'a'); - continue; - } - if( *format == 'X' ) { - pc += printi (out, va_arg( args, int ), 16, 0, width, pad, 'A'); - continue; - } - if( *format == 'u' ) { - pc += printi (out, va_arg( args, int ), 10, 0, width, pad, 'a'); - continue; - } - if( *format == 'c' ) { - /* char are converted to int then pushed on the stack */ - scr[0] = (char)va_arg( args, int ); - scr[1] = '\0'; - pc += prints (out, scr, width, pad); - continue; - } - } - else { - out: - printchar (out, *format); - ++pc; - } - } - if (out) **out = '\0'; - va_end( args ); - return pc; -} - -int printf(const char *format, ...) -{ - va_list args; - - va_start( args, format ); - return print( 0, format, args ); -} - -int sprintf(char *out, const char *format, ...) -{ - va_list args; - - va_start( args, format ); - return print( &out, format, args ); -} - - -int snprintf( char *buf, unsigned int count, const char *format, ... ) -{ - va_list args; - - ( void ) count; - - va_start( args, format ); - return print( &buf, format, args ); -} - - -#ifdef TEST_PRINTF -int main(void) -{ - char *ptr = "Hello world!"; - char *np = 0; - int i = 5; - unsigned int bs = sizeof(int)*8; - int mi; - char buf[80]; - - mi = (1 << (bs-1)) + 1; - printf("%s\n", ptr); - printf("printf test\n"); - printf("%s is null pointer\n", np); - printf("%d = 5\n", i); - printf("%d = - max int\n", mi); - printf("char %c = 'a'\n", 'a'); - printf("hex %x = ff\n", 0xff); - printf("hex %02x = 00\n", 0); - printf("signed %d = unsigned %u = hex %x\n", -3, -3, -3); - printf("%d %s(s)%", 0, "message"); - printf("\n"); - printf("%d %s(s) with %%\n", 0, "message"); - sprintf(buf, "justif: \"%-10s\"\n", "left"); printf("%s", buf); - sprintf(buf, "justif: \"%10s\"\n", "right"); printf("%s", buf); - sprintf(buf, " 3: %04d zero padded\n", 3); printf("%s", buf); - sprintf(buf, " 3: %-4d left justif.\n", 3); printf("%s", buf); - sprintf(buf, " 3: %4d right justif.\n", 3); printf("%s", buf); - sprintf(buf, "-3: %04d zero padded\n", -3); printf("%s", buf); - sprintf(buf, "-3: %-4d left justif.\n", -3); printf("%s", buf); - sprintf(buf, "-3: %4d right justif.\n", -3); printf("%s", buf); - - return 0; -} - -/* - * if you compile this file with - * gcc -Wall $(YOUR_C_OPTIONS) -DTEST_PRINTF -c printf.c - * you will get a normal warning: - * printf.c:214: warning: spurious trailing `%' in format - * this line is testing an invalid % at the end of the format string. - * - * this should display (on 32bit int machine) : - * - * Hello world! - * printf test - * (null) is null pointer - * 5 = 5 - * -2147483647 = - max int - * char a = 'a' - * hex ff = ff - * hex 00 = 00 - * signed -3 = unsigned 4294967293 = hex fffffffd - * 0 message(s) - * 0 message(s) with % - * justif: "left " - * justif: " right" - * 3: 0003 zero padded - * 3: 3 left justif. - * 3: 3 right justif. - * -3: -003 zero padded - * -3: -3 left justif. - * -3: -3 right justif. - */ - -#endif - - -/* To keep linker happy. */ -int write( int i, char* c, int n) -{ - (void)i; - (void)n; - (void)c; - return 0; -} - diff --git a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/startcf.c b/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/startcf.c deleted file mode 100644 index dabac672d..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/startcf.c +++ /dev/null @@ -1,312 +0,0 @@ -/* - * CF_Startup.c - Default init/startup/termination routines for - * Embedded Metrowerks C++ - * - * Copyright © 1993-1998 Metrowerks, Inc. All Rights Reserved. - * Copyright © 2005 Freescale semiConductor Inc. All Rights Reserved. - * - * - * THEORY OF OPERATION - * - * This version of thestartup code is intended for linker relocated - * executables. The startup code will assign the stack pointer to - * __SP_INIT, assign the address of the data relative base address - * to a5, initialize the .bss/.sbss sections to zero, call any - * static C++ initializers and then call main. Upon returning from - * main it will call C++ destructors and call exit to terminate. - */ - -#ifdef __cplusplus -#pragma cplusplus off -#endif -#pragma PID off -#pragma PIC off - -#include "startcf.h" -#include "RuntimeConfig.h" - - /* imported data */ - -extern unsigned long far _SP_INIT, _SDA_BASE; -extern unsigned long far _START_BSS, _END_BSS; -extern unsigned long far _START_SBSS, _END_SBSS; -extern unsigned long far __DATA_RAM, __DATA_ROM, __DATA_END; - - /* imported routines */ - -extern void __call_static_initializers(void); -extern int main(int, char **); -extern void exit(int); - - /* exported routines */ - -extern void _ExitProcess(void); -extern asm void _startup(void); -extern void __initialize_hardware(void); -extern void __initialize_system(void); - - -/* - * Dummy routine for initializing hardware. For user's custom systems, you - * can create your own routine of the same name that will perform HW - * initialization. The linker will do the right thing to ignore this - * definition and use the version in your file. - */ -#pragma overload void __initialize_hardware(void); -void __initialize_hardware(void) -{ -} - -/* - * Dummy routine for initializing systems. For user's custom systems, - * you can create your own routine of the same name that will perform - * initialization. The linker will do the right thing to ignore this - * definition and use the version in your file. - */ -#pragma overload void __initialize_system(void); -void __initialize_system(void) -{ -} - -/* - * Dummy routine for initializing C++. This routine will get overloaded by the C++ runtime. - */ -#pragma overload void __call_static_initializers(void); -void __call_static_initializers(void) -{ -} - -/* - * Routine to copy a single section from ROM to RAM ... - */ -static __declspec(register_abi) void __copy_rom_section(char* dst, const char* src, unsigned long size) -{ - if (dst != src) - while (size--) - *dst++ = *src++; -} - -/* - * Routine that copies all sections the user marked as ROM into - * their target RAM addresses ... - * - * __S_romp is automatically generated by the linker if it - * is referenced by the program. It is a table of RomInfo - * structures. The final entry in the table has all-zero - * fields. - */ -static void __copy_rom_sections_to_ram(void) -{ - RomInfo *info; - - /* - * Go through the entire table, copying sections from ROM to RAM. - */ - for (info = _S_romp; info->Source != 0L || info->Target != 0L || info->Size != 0; ++info) - __copy_rom_section( (char *)info->Target,(char *)info->Source, info->Size); - -} - -/* - * Exit handler called from the exit routine, if your OS needs - * to do something special for exit handling just replace this - * routines with what the OS needs to do ... - */ -asm void _ExitProcess(void) -{ - illegal - rts -} - -/* - * Routine to clear out blocks of memory should give good - * performance regardless of 68k or ColdFire part. - */ -static __declspec(register_abi) void clear_mem(char *dst, unsigned long n) -{ - unsigned long i; - long *lptr; - - if (n >= 32) - { - /* align start address to a 4 byte boundary */ - i = (- (unsigned long) dst) & 3; - - if (i) - { - n -= i; - do - *dst++ = 0; - while (--i); - } - - /* use an unrolled loop to zero out 32byte blocks */ - i = n >> 5; - if (i) - { - lptr = (long *)dst; - dst += i * 32; - do - { - *lptr++ = 0; - *lptr++ = 0; - *lptr++ = 0; - *lptr++ = 0; - *lptr++ = 0; - *lptr++ = 0; - *lptr++ = 0; - *lptr++ = 0; - } - while (--i); - } - i = (n & 31) >> 2; - - /* handle any 4 byte blocks left */ - if (i) - { - lptr = (long *)dst; - dst += i * 4; - do - *lptr++ = 0; - while (--i); - } - n &= 3; - } - - /* handle any byte blocks left */ - if (n) - do - *dst++ = 0; - while (--n); -} - -/* - * Startup routine for embedded application ... - */ - -asm void _startup(void) -{ - /* disable interrupts */ - move.w #0x2700,sr - - /* Pre-init SP, in case memory for stack is not valid it should be setup using - MEMORY_INIT before __initialize_hardware is called - */ - lea __SP_AFTER_RESET,a7; - - /* initialize memory */ - MEMORY_INIT - - /* initialize any hardware specific issues */ - jsr __initialize_hardware - - /* setup the stack pointer */ - lea _SP_INIT,a7 - - /* setup A6 dummy stackframe */ - movea.l #0,a6 - link a6,#0 - - /* setup A5 */ - lea _SDA_BASE,a5 - - - /* zero initialize the .bss section */ - - lea _END_BSS, a0 - lea _START_BSS, a1 - suba.l a1, a0 - move.l a0, d0 - - beq __skip_bss__ - - lea _START_BSS, a0 - - /* call clear_mem with base pointer in a0 and size in d0 */ - jsr clear_mem - -__skip_bss__: - - /* zero initialize the .sbss section */ - - lea _END_SBSS, a0 - lea _START_SBSS, a1 - suba.l a1, a0 - move.l a0, d0 - - beq __skip_sbss__ - - lea _START_SBSS, a0 - - /* call clear_mem with base pointer in a0 and size in d0 */ - jsr clear_mem - -__skip_sbss__: - - /* copy all ROM sections to their RAM locations ... */ -#if SUPPORT_ROM_TO_RAM - - /* - * _S_romp is a null terminated array of - * typedef struct RomInfo { - * unsigned long Source; - * unsigned long Target; - * unsigned long Size; - * } RomInfo; - * - * Watch out if you're rebasing using _PICPID_DELTA - */ - - lea _S_romp, a0 - move.l a0, d0 - beq __skip_rom_copy__ - jsr __copy_rom_sections_to_ram - -#else - - /* - * There's a single block to copy from ROM to RAM, perform - * the copy directly without using the __S_romp structure - */ - - lea __DATA_RAM, a0 - lea __DATA_ROM, a1 - - cmpa a0,a1 - beq __skip_rom_copy__ - - move.l #__DATA_END, d0 - sub.l a0, d0 - - jsr __copy_rom_section - -#endif -__skip_rom_copy__: - - /* call C++ static initializers (__sinit__(void)) */ - jsr __call_static_initializers - - jsr __initialize_system - - /* call main(int, char **) */ - pea __argv - clr.l -(sp) /* clearing a long is ok since it's caller cleanup */ - jsr main - addq.l #8, sp - - unlk a6 - - /* now call exit(0) to terminate the application */ - clr.l -(sp) - jsr exit - addq.l #4, sp - - /* should never reach here but just in case */ - illegal - rts - - /* exit will never return */ -__argv: - dc.l 0 -} - diff --git a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/startcf.h b/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/startcf.h deleted file mode 100644 index 51c315d5b..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/startcf.h +++ /dev/null @@ -1,77 +0,0 @@ -/****************************************************************************** - FILE : startcf.h - PURPOSE : startup code for ColdFire - LANGUAGE: C - - - Notes: - 1) Default entry point is _startup. - . disable interrupts - . the SP is set to __SP_AFTER_RESET - . SP must be initialized to valid memory - in case the memory it points to is not valid using MEMORY_INIT macro - 2) __initialize_hardware is called. Here you can initialize memory and some peripherics - at this point global variables are not initialized yet - 3) After __initialize_hardware memory is setup; initialize SP to _SP_INIT and perform - needed initialisations for the language (clear memory, data rom copy). - 4) void __initialize_system(void); is called - to allow additional hardware initialization (UART, GPIOs, etc...) - 5) Jump to main - -*/ -/********************************************************************************/ - -#ifndef STARTCF_H -#define STARTCF_H - - -#ifdef __cplusplus -extern "C" { -#endif - -#ifdef STARTCF_INCLUDE -#include STARTCF_INCLUDE -#endif - -#pragma warn_any_ptr_int_conv off -#pragma warn_absolute off - -extern unsigned long far __SP_INIT[]; -extern unsigned long far __SP_AFTER_RESET[]; - -#ifndef MEMORY_INIT -/* If MEMORY_INIT is set then it performs - minimal memory initialization (to preset SP to __SP_AFTER_RESET, etc...) -*/ -#define MEMORY_INIT -#endif - -void _startup(void); - -#ifndef SUPPORT_ROM_TO_RAM - /* - * If SUPPORT_ROM_TO_RAM is set, _S_romp is used to define the copy to be performed. - * If it is not set, there's a single block to copy, performed directly without - * using the __S_romp structure, based on __DATA_RAM, __DATA_ROM and - * __DATA_END symbols. - * - * Set to 0 for more aggressive dead stripping ... - */ -#define SUPPORT_ROM_TO_RAM 1 -#endif - -/* format of the ROM table info entry ... */ -typedef struct RomInfo { - void *Source; - void *Target; - unsigned long Size; -} RomInfo; - -/* imported data */ -extern far RomInfo _S_romp[]; /* linker defined symbol */ - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/stdlib.c b/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/stdlib.c deleted file mode 100644 index 8fd7de6a3..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/stdlib.c +++ /dev/null @@ -1,497 +0,0 @@ -/* FILENAME: stdlib.c - * - * Functions normally found in a standard C lib. - * - * 12/28/2005 - added memcmp and memmove - * - * Notes: These functions support ASCII only!!! - */ - -//#include "m51cn128evb.h" -#include "stdlib.h" - -#define TRUE 1 -#define FALSE 0 -#define NULL 0 - -/****************************************************************/ -int -isspace (int ch) -{ - if ((ch == ' ') || (ch == '\t')) /* \n ??? */ - return TRUE; - else - return FALSE; -} - -/****************************************************************/ -int -isalnum (int ch) -{ - /* ASCII only */ - if (((ch >= '0') && (ch <= '9')) || - ((ch >= 'A') && (ch <= 'Z')) || - ((ch >= 'a') && (ch <= 'z'))) - return TRUE; - else - return FALSE; -} - -/****************************************************************/ -int -isdigit (int ch) -{ - /* ASCII only */ - if ((ch >= '0') && (ch <= '9')) - return TRUE; - else - return FALSE; -} - -/****************************************************************/ -int -isupper (int ch) -{ - /* ASCII only */ - if ((ch >= 'A') && (ch <= 'Z')) - return TRUE; - else - return FALSE; -} - -/****************************************************************/ -int -strcasecmp (const char *s1, const char *s2) -{ - char c1, c2; - int result = 0; - - while (result == 0) - { - c1 = *s1++; - c2 = *s2++; - if ((c1 >= 'a') && (c1 <= 'z')) - c1 = (char)(c1 - ' '); - if ((c2 >= 'a') && (c2 <= 'z')) - c2 = (char)(c2 - ' '); - if ((result = (c1 - c2)) != 0) - break; - if ((c1 == 0) || (c2 == 0)) - break; - } - return result; -} - - -/****************************************************************/ -int -stricmp (const char *s1, const char *s2) -{ - return (strcasecmp(s1, s2)); -} - -/****************************************************************/ -int -strncasecmp (const char *s1, const char *s2, int n) -{ - char c1, c2; - int k = 0; - int result = 0; - - while ( k++ < n ) - { - c1 = *s1++; - c2 = *s2++; - if ((c1 >= 'a') && (c1 <= 'z')) - c1 = (char)(c1 - ' '); - if ((c2 >= 'a') && (c2 <= 'z')) - c2 = (char)(c2 - ' '); - if ((result = (c1 - c2)) != 0) - break; - if ((c1 == 0) || (c2 == 0)) - break; - } - return result; -} - -/****************************************************************/ -int -strnicmp (const char *s1, const char *s2, int n) -{ - return (strncasecmp(s1, s2, n)); -} - -/****************************************************************/ -unsigned long -strtoul (char *str, char **ptr, int base) -{ - unsigned long rvalue = 0; - int neg = 0; - int c; - - /* Validate parameters */ - if ((str != NULL) && (base >= 0) && (base <= 36)) - { - /* Skip leading white spaces */ - while (isspace(*str)) - { - ++str; - } - - /* Check for notations */ - switch (str[0]) - { - case '0': - if (base == 0) - { - if ((str[1] == 'x') || (str[1] == 'X')) - { - base = 16; - str += 2; - } - else - { - base = 8; - str++; - } - } - break; - - case '-': - neg = 1; - str++; - break; - - case '+': - str++; - break; - - default: - break; - } - - if (base == 0) - base = 10; - - /* Valid "digits" are 0..9, A..Z, a..z */ - while (isalnum(c = *str)) - { - /* Convert char to num in 0..36 */ - if ((c -= ('a' - 10)) < 10) /* 'a'..'z' */ - { - if ((c += ('a' - 'A')) < 10) /* 'A'..'Z' */ - { - c += ('A' - '0' - 10); /* '0'..'9' */ - } - } - - /* check c against base */ - if (c >= base) - { - break; - } - - if (neg) - { - rvalue = (rvalue * base) - c; - } - else - { - rvalue = (rvalue * base) + c; - } - - ++str; - } - } - - /* Upon exit, 'str' points to the character at which valid info */ - /* STOPS. No chars including and beyond 'str' are used. */ - - if (ptr != NULL) - *ptr = str; - - return rvalue; - } - -/****************************************************************/ -int -atoi (const char *str) -{ - char *s = (char *)str; - - return ((int)strtoul(s, NULL, 10)); -} - -/****************************************************************/ -int -strlen (const char *str) -{ - char *s = (char *)str; - int len = 0; - - if (s == NULL) - return 0; - - while (*s++ != '\0') - ++len; - - return len; -} - -/****************************************************************/ -char * -strcat (char *dest, const char *src) -{ - char *dp; - char *sp = (char *)src; - - if ((dest != NULL) && (src != NULL)) - { - dp = &dest[strlen(dest)]; - - while (*sp != '\0') - { - *dp++ = *sp++; - } - *dp = '\0'; - } - return dest; -} - -/****************************************************************/ -char * -strncat (char *dest, const char *src, int n) -{ - char *dp; - char *sp = (char *)src; - - if ((dest != NULL) && (src != NULL) && (n > 0)) - { - dp = &dest[strlen(dest)]; - - while ((*sp != '\0') && (n-- > 0)) - { - *dp++ = *sp++; - } - *dp = '\0'; - } - return dest; -} - -/****************************************************************/ -char * -strcpy (char *dest, const char *src) -{ - char *dp = (char *)dest; - char *sp = (char *)src; - - if ((dest != NULL) && (src != NULL)) - { - while (*sp != '\0') - { - *dp++ = *sp++; - } - *dp = '\0'; - } - return dest; -} - -/****************************************************************/ -char * -strncpy (char *dest, const char *src, int n) -{ - char *dp = (char *)dest; - char *sp = (char *)src; - - if ((dest != NULL) && (src != NULL) && (n > 0)) - { - while ((*sp != '\0') && (n-- > 0)) - { - *dp++ = *sp++; - } - *dp = '\0'; - } - return dest; -} - -/****************************************************************/ -int -strcmp (const char *s1, const char *s2) -{ - /* No checks for NULL */ - char *s1p = (char *)s1; - char *s2p = (char *)s2; - - while (*s2p != '\0') - { - if (*s1p != *s2p) - break; - - ++s1p; - ++s2p; - } - return (*s1p - *s2p); -} - -/****************************************************************/ -int -strncmp (const char *s1, const char *s2, int n) -{ - /* No checks for NULL */ - char *s1p = (char *)s1; - char *s2p = (char *)s2; - - if (n <= 0) - return 0; - - while (*s2p != '\0') - { - if (*s1p != *s2p) - break; - - if (--n == 0) - break; - - ++s1p; - ++s2p; - } - return (*s1p - *s2p); -} - -/****************************************************************/ -char * -strstr(const char *s1, const char *s2) -{ - char *sp = (char *)s1; - int len1 = strlen(s1); - int len2 = strlen(s2); - - while (len1 >= len2) - { - if (strncmp(sp, s2, len2) == 0) - { - return (sp); - } - ++sp; - --len1; - } - - return (NULL); -} - -/****************************************************************/ -char * -strchr(const char *str, int c) -{ - char *sp = (char *)str; - char ch = (char)(c & 0xff); - - while (*sp != '\0') - { - if (*sp == ch) - { - return (sp); - } - ++sp; - } - - return (NULL); -} - -/****************************************************************/ -void * -memcpy (void *dest, const void *src, unsigned n) -{ - unsigned char *dbp = (unsigned char *)dest; - unsigned char *sbp = (unsigned char *)src; - - if ((dest != NULL) && (src != NULL) && (n > 0)) - { - while (n--) - *dbp++ = *sbp++; - } - return dest; -} - -/****************************************************************/ -void * -memset (void *s, int c, unsigned n) -{ - /* Not optimized, but very portable */ - unsigned char *sp = (unsigned char *)s; - - if ((s != NULL) && (n > 0)) - { - while (n--) - { - *sp++ = (unsigned char)c; - } - } - return s; -} - -/****************************************************************/ -int -memcmp (const void *s1, const void *s2, unsigned n) -{ - unsigned char *s1p, *s2p; - - if (s1 && s2 && (n > 0)) - { - s1p = (unsigned char *)s1; - s2p = (unsigned char *)s2; - - while ((--n >= 0) && (*s1p == *s2p)) - { - if (*s1p != *s2p) - return (*s1p - *s2p); - ++s1p; - ++s2p; - } - } - - return (0); -} - -/****************************************************************/ -void * -memmove (void *dest, const void *src, unsigned n) -{ - unsigned char *dbp = (unsigned char *)dest; - unsigned char *sbp = (unsigned char *)src; - unsigned char *dend = dbp + n; - unsigned char *send = sbp + n; - - if ((dest != NULL) && (src != NULL) && (n > 0)) - { - /* see if a memcpy would overwrite source buffer */ - if ((sbp < dbp) && (dbp < send)) - { - while (n--) - *(--dend) = *(--send); - } - else - { - while (n--) - *dbp++ = *sbp++; - } - } - - return dest; -} - -/****************************************************************/ - -char * -strrchr(const char *s, int c) -{ - const char *last = NULL; - if (c == '\0') - return strchr(s, c); - while ((s = strchr(s, c)) != NULL) { - last = s; - s++; - } - return (char *) last; -} - diff --git a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/stdlib.h b/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/stdlib.h deleted file mode 100644 index 7a9865d94..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/stdlib.h +++ /dev/null @@ -1,79 +0,0 @@ -/* - * File: stdlib.h - * Purpose: Function prototypes for standard library functions - * - * Notes: - */ - -#ifndef _STDLIB_H -#define _STDLIB_H - -/******************************************************************** - * Standard library functions - ********************************************************************/ - -int -isspace (int); - -int -isalnum (int); - -int -isdigit (int); - -int -isupper (int); - -int -strcasecmp (const char *, const char *); - -int -strncasecmp (const char *, const char *, int); - -unsigned long -strtoul (char *, char **, int); - -int -strlen (const char *); - -char * -strcat (char *, const char *); - -char * -strncat (char *, const char *, int); - -char * -strcpy (char *, const char *); - -char * -strncpy (char *, const char *, int); - -int -strcmp (const char *, const char *); - -int -strncmp (const char *, const char *, int); - -void * -memcpy (void *, const void *, unsigned); - -void * -memset (void *, int, unsigned); - -void -free (void *); - -void * -malloc (unsigned); - -#define RAND_MAX 32767 - -int -rand (void); - -void -srand (int); - -/********************************************************************/ - -#endif diff --git a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/cmd/CFV1_BDM_P&E_Multilink_CyclonePro_Postload.cmd b/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/cmd/CFV1_BDM_P&E_Multilink_CyclonePro_Postload.cmd deleted file mode 100644 index eb00f3791..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/cmd/CFV1_BDM_P&E_Multilink_CyclonePro_Postload.cmd +++ /dev/null @@ -1 +0,0 @@ -// After load the commands written below will be executed diff --git a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/cmd/CFV1_BDM_P&E_Multilink_CyclonePro_Preload.cmd b/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/cmd/CFV1_BDM_P&E_Multilink_CyclonePro_Preload.cmd deleted file mode 100644 index 691c5eede..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/cmd/CFV1_BDM_P&E_Multilink_CyclonePro_Preload.cmd +++ /dev/null @@ -1 +0,0 @@ -// Before load the commands written below will be executed diff --git a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/cmd/CFV1_BDM_P&E_Multilink_CyclonePro_Reset.cmd b/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/cmd/CFV1_BDM_P&E_Multilink_CyclonePro_Reset.cmd deleted file mode 100644 index f0fc87448..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/cmd/CFV1_BDM_P&E_Multilink_CyclonePro_Reset.cmd +++ /dev/null @@ -1 +0,0 @@ -// After reset the commands written below will be executed diff --git a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/cmd/CFV1_BDM_P&E_Multilink_CyclonePro_Startup.cmd b/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/cmd/CFV1_BDM_P&E_Multilink_CyclonePro_Startup.cmd deleted file mode 100644 index 5f2b5a568..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/cmd/CFV1_BDM_P&E_Multilink_CyclonePro_Startup.cmd +++ /dev/null @@ -1 +0,0 @@ -// At startup the commands written below will be executed diff --git a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/cmd/CFV1_Full_Chip_Simulator_Postload.cmd b/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/cmd/CFV1_Full_Chip_Simulator_Postload.cmd deleted file mode 100644 index eb00f3791..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/cmd/CFV1_Full_Chip_Simulator_Postload.cmd +++ /dev/null @@ -1 +0,0 @@ -// After load the commands written below will be executed diff --git a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/cmd/CFV1_Full_Chip_Simulator_Preload.cmd b/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/cmd/CFV1_Full_Chip_Simulator_Preload.cmd deleted file mode 100644 index 691c5eede..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/cmd/CFV1_Full_Chip_Simulator_Preload.cmd +++ /dev/null @@ -1 +0,0 @@ -// Before load the commands written below will be executed diff --git a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/cmd/CFV1_Full_Chip_Simulator_Reset.cmd b/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/cmd/CFV1_Full_Chip_Simulator_Reset.cmd deleted file mode 100644 index f0fc87448..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/cmd/CFV1_Full_Chip_Simulator_Reset.cmd +++ /dev/null @@ -1 +0,0 @@ -// After reset the commands written below will be executed diff --git a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/cmd/CFV1_Full_Chip_Simulator_Startup.cmd b/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/cmd/CFV1_Full_Chip_Simulator_Startup.cmd deleted file mode 100644 index 5f2b5a568..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/cmd/CFV1_Full_Chip_Simulator_Startup.cmd +++ /dev/null @@ -1 +0,0 @@ -// At startup the commands written below will be executed diff --git a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/prm/Project.lcf b/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/prm/Project.lcf deleted file mode 100644 index d6a3d9418..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF51CN128_CodeWarrior/prm/Project.lcf +++ /dev/null @@ -1,114 +0,0 @@ -# Sample Linker Command File for CodeWarrior for ColdFire MCF51CN128 - -# Memory ranges - -MEMORY { - code (RX) : ORIGIN = 0x00000410, LENGTH = 0x0001FBF0 - userram (RWX) : ORIGIN = 0x00800000, LENGTH = 0x00006000 -} - -SECTIONS { - -# Heap and Stack sizes definition - ___heap_size = 0x04; - ___stack_size = 0x0200; - -# MCF51CN128 Derivative Memory map definitions from linker command files: -# ___RAM_ADDRESS, ___RAM_SIZE, ___FLASH_ADDRESS, ___FLASH_SIZE linker -# symbols must be defined in the linker command file. - -# 24 Kbytes Internal SRAM - ___RAM_ADDRESS = 0x00800000; - ___RAM_SIZE = 0x00006000; - -# 128 KByte Internal Flash Memory - ___FLASH_ADDRESS = 0x00000000; - ___FLASH_SIZE = 0x00020000; - - .userram : {} > userram - .code : {} > code - - .text : - { - *(.text) - . = ALIGN (0x4); - *(.rodata) - . = ALIGN (0x4); - ___ROM_AT = .; - ___DATA_ROM = .; - } >> code - - .data : AT(___ROM_AT) - { - ___DATA_RAM = .; - . = ALIGN(0x4); - *(.exception) - . = ALIGN(0x4); - __exception_table_start__ = .; - EXCEPTION - __exception_table_end__ = .; - - ___sinit__ = .; - STATICINIT - __START_DATA = .; - - *(.data) - . = ALIGN (0x4); - __END_DATA = .; - - __START_SDATA = .; - *(.sdata) - . = ALIGN (0x4); - __END_SDATA = .; - - ___DATA_END = .; - __SDA_BASE = .; - . = ALIGN (0x4); - } >> userram - - .bss : - { - ___BSS_START = .; - __START_SBSS = .; - *(.sbss) - . = ALIGN (0x4); - *(SCOMMON) - __END_SBSS = .; - - __START_BSS = .; - *(.bss) - . = ALIGN (0x4); - *(COMMON) - __END_BSS = .; - ___BSS_END = .; - - . = ALIGN(0x4); - } >> userram - - .custom : - { - ___HEAP_START = .; - ___heap_addr = ___HEAP_START; - ___HEAP_END = ___HEAP_START + ___heap_size; - ___SP_END = ___HEAP_END; - ___SP_INIT = ___SP_END + ___stack_size; - - . = ALIGN (0x4); - } >> userram - - __SP_INIT = ___SP_INIT; - - ___SP_AFTER_RESET = __SP_INIT; - - _romp_at = ___ROM_AT + SIZEOF(.data); - .romp : AT(_romp_at) - { - __S_romp = _romp_at; - WRITEW(___ROM_AT); - WRITEW(ADDR(.data)); - WRITEW(SIZEOF(.data)); - WRITEW(0); - WRITEW(0); - WRITEW(0); - } -} diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.log b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.log deleted file mode 100644 index 85c94968e..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.log +++ /dev/null @@ -1,41 +0,0 @@ -!SESSION 2008-11-20 09:48:45.515 ----------------------------------------------- -eclipse.buildId=I20080617-2000 -java.version=1.6.0_03 -java.vendor=Sun Microsystems Inc. -BootLoader constants: OS=win32, ARCH=x86, WS=win32, NL=en_GB -Command-line arguments: -os win32 -ws win32 -arch x86 - -!ENTRY org.eclipse.cdt.core 1 0 2008-11-20 09:54:33.890 -!MESSAGE Indexed 'RTOSDemo' (10 sources, 34 headers) in 1.83 sec: 1,553 declarations; 1,814 references; 42 unresolved inclusions; 54 syntax errors; 368 unresolved names (9.85%) -!SESSION 2008-11-20 10:20:54.484 ----------------------------------------------- -eclipse.buildId=I20080617-2000 -java.version=1.6.0_03 -java.vendor=Sun Microsystems Inc. -BootLoader constants: OS=win32, ARCH=x86, WS=win32, NL=en_GB -Command-line arguments: -os win32 -ws win32 -arch x86 - -!ENTRY org.eclipse.cdt.core 1 0 2008-11-20 10:21:12.484 -!MESSAGE Indexed 'RTOSDemo' (100 sources, 129 headers) in 5.02 sec: 6,569 declarations; 21,643 references; 52 unresolved inclusions; 259 syntax errors; 522 unresolved names (1.82%) - -!ENTRY org.eclipse.cdt.debug.gdbremote.core 4 104 2008-11-20 10:29:11.531 -!MESSAGE Program file does not exist -!STACK 0 -java.io.FileNotFoundException: C:\E\Dev\FreeRTOS\WorkingCopy3\Demo\ColdFire_MCF52233_Eclipse\RTOSDemo\FREERTOS_ROOT\Demo\ColdFire_MCF52233_Eclipse\RTOSDemo\bin\RTOSDemo.elf not found - at org.eclipse.cdt.launch.AbstractCLaunchDelegate.verifyProgramPath(AbstractCLaunchDelegate.java:383) - at org.eclipse.cdt.debug.gdbjtag.core.GDBJtagLaunchConfigurationDelegate.launch(GDBJtagLaunchConfigurationDelegate.java:52) - at org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:764) - at org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:614) - at org.eclipse.debug.internal.ui.DebugUIPlugin.buildAndLaunch(DebugUIPlugin.java:880) - at org.eclipse.debug.internal.ui.DebugUIPlugin$8.run(DebugUIPlugin.java:1083) - at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55) -!SUBENTRY 1 org.eclipse.cdt.debug.gdbremote.core 4 104 2008-11-20 10:29:11.531 -!MESSAGE C:\E\Dev\FreeRTOS\WorkingCopy3\Demo\ColdFire_MCF52233_Eclipse\RTOSDemo\FREERTOS_ROOT\Demo\ColdFire_MCF52233_Eclipse\RTOSDemo\bin\RTOSDemo.elf not found -!STACK 0 -java.io.FileNotFoundException: C:\E\Dev\FreeRTOS\WorkingCopy3\Demo\ColdFire_MCF52233_Eclipse\RTOSDemo\FREERTOS_ROOT\Demo\ColdFire_MCF52233_Eclipse\RTOSDemo\bin\RTOSDemo.elf not found - at org.eclipse.cdt.launch.AbstractCLaunchDelegate.verifyProgramPath(AbstractCLaunchDelegate.java:383) - at org.eclipse.cdt.debug.gdbjtag.core.GDBJtagLaunchConfigurationDelegate.launch(GDBJtagLaunchConfigurationDelegate.java:52) - at org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:764) - at org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:614) - at org.eclipse.debug.internal.ui.DebugUIPlugin.buildAndLaunch(DebugUIPlugin.java:880) - at org.eclipse.debug.internal.ui.DebugUIPlugin$8.run(DebugUIPlugin.java:1083) - at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55) diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.mylyn/repositories.xml.zip b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.mylyn/repositories.xml.zip deleted file mode 100644 index c22dd7f0b..000000000 Binary files a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.mylyn/repositories.xml.zip and /dev/null differ diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.cdt.core/.log b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.cdt.core/.log deleted file mode 100644 index 5e8bb5473..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.cdt.core/.log +++ /dev/null @@ -1,2 +0,0 @@ -*** SESSION Nov 20, 2008 09:49:13.828 ------------------------------------------ -*** SESSION Nov 20, 2008 10:21:02.765 ------------------------------------------ diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.cdt.core/shareddefaults.xml b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.cdt.core/shareddefaults.xml deleted file mode 100644 index c4b91cfab..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.cdt.core/shareddefaults.xml +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.cdt.make.core/.log b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.cdt.make.core/.log deleted file mode 100644 index e69de29bb..000000000 diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.cdt.make.core/RTOSDemo.sc b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.cdt.make.core/RTOSDemo.sc deleted file mode 100644 index 80bd90907..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.cdt.make.core/RTOSDemo.sc +++ /dev/null @@ -1,104 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.cdt.make.core/specs.c b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.cdt.make.core/specs.c deleted file mode 100644 index 8b1378917..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.cdt.make.core/specs.c +++ /dev/null @@ -1 +0,0 @@ - diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.cdt.make.core/specs.cpp b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.cdt.make.core/specs.cpp deleted file mode 100644 index 8b1378917..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.cdt.make.core/specs.cpp +++ /dev/null @@ -1 +0,0 @@ - diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.cdt.make.ui/dialog_settings.xml b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.cdt.make.ui/dialog_settings.xml deleted file mode 100644 index 9e62c4bb5..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.cdt.make.ui/dialog_settings.xml +++ /dev/null @@ -1,5 +0,0 @@ - -
-
-
-
diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.cdt.ui/dialog_settings.xml b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.cdt.ui/dialog_settings.xml deleted file mode 100644 index 1ef2b05b5..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.cdt.ui/dialog_settings.xml +++ /dev/null @@ -1,3 +0,0 @@ - -
-
diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/RTOSDemo/.indexes/properties.index b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/RTOSDemo/.indexes/properties.index deleted file mode 100644 index e2af2412d..000000000 Binary files a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/RTOSDemo/.indexes/properties.index and /dev/null differ diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/history.version b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/history.version deleted file mode 100644 index 25cb955ba..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/history.version +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.index b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.index deleted file mode 100644 index 81a5570b8..000000000 Binary files a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.index and /dev/null differ diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.version b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.version deleted file mode 100644 index 6b2aaa764..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.version +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.root/2.tree b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.root/2.tree deleted file mode 100644 index 1cd77d398..000000000 Binary files a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.root/2.tree and /dev/null differ diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.safetable/org.eclipse.core.resources b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.safetable/org.eclipse.core.resources deleted file mode 100644 index 1a9b4014c..000000000 Binary files a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.safetable/org.eclipse.core.resources and /dev/null differ diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.core.prefs b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.core.prefs deleted file mode 100644 index 2e691704d..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.core.prefs +++ /dev/null @@ -1,3 +0,0 @@ -#Thu Nov 20 10:32:37 GMT 2008 -macros/workspace=\r\n\r\n -eclipse.preferences.version=1 diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.core.prj-RTOSDemo.prefs b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.core.prj-RTOSDemo.prefs deleted file mode 100644 index 803fc2109..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.core.prj-RTOSDemo.prefs +++ /dev/null @@ -1,3 +0,0 @@ -#Thu Nov 20 09:54:32 GMT 2008 -eclipse.preferences.version=1 -indexer/preferenceScope=0 diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.debug.core.prefs b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.debug.core.prefs deleted file mode 100644 index de15b7e5d..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.debug.core.prefs +++ /dev/null @@ -1,3 +0,0 @@ -#Thu Nov 20 10:21:27 GMT 2008 -org.eclipse.cdt.debug.core.cDebug.common_source_containers=\r\n\r\n\r\n\r\n -eclipse.preferences.version=1 diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.managedbuilder.core.prefs b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.managedbuilder.core.prefs deleted file mode 100644 index 199607974..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.managedbuilder.core.prefs +++ /dev/null @@ -1,3 +0,0 @@ -#Thu Nov 20 10:32:39 GMT 2008 -eclipse.preferences.version=1 -properties/RTOSDemo.null.1116081685/0.289703090=\#\r\n\#Thu Nov 20 10\:32\:39 GMT 2008\r\norg.eclipse.cdt.build.core.settings.holder.30285543\=\\\#\\r\\n\\\#Thu Nov 20 10\\\:32\\\:39 GMT 2008\\r\\nrebuildState\\\=false\\r\\n\r\norg.eclipse.cdt.build.core.settings.holder.libs.77828512\=\\\#\\r\\n\\\#Thu Nov 20 10\\\:32\\\:39 GMT 2008\\r\\nrebuildState\\\=false\\r\\n\r\n0.289703090\=\\\#\\r\\n\\\#Thu Nov 20 10\\\:32\\\:39 GMT 2008\\r\\nrcState\\\=0\\r\\nrebuildState\\\=false\\r\\n\r\norg.eclipse.cdt.build.core.prefbase.toolchain.765354309\=\\\#\\r\\n\\\#Thu Nov 20 10\\\:32\\\:39 GMT 2008\\r\\nrebuildState\\\=false\\r\\n\r\norg.eclipse.cdt.build.core.settings.holder.1441288848\=\\\#\\r\\n\\\#Thu Nov 20 10\\\:32\\\:39 GMT 2008\\r\\nrebuildState\\\=false\\r\\n\r\norg.eclipse.cdt.build.core.settings.holder.771258066\=\\\#\\r\\n\\\#Thu Nov 20 10\\\:32\\\:39 GMT 2008\\r\\nrebuildState\\\=false\\r\\n\r\n diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.ui.prefs b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.ui.prefs deleted file mode 100644 index 93999fcb1..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.ui.prefs +++ /dev/null @@ -1,6 +0,0 @@ -#Thu Nov 20 10:03:01 GMT 2008 -spelling_locale_initialized=true -useAnnotationsPrefPage=true -spelling_locale=en_GB -eclipse.preferences.version=1 -useQuickDiffPrefPage=true diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.core.resources.prefs b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.core.resources.prefs deleted file mode 100644 index c0c563e47..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.core.resources.prefs +++ /dev/null @@ -1,4 +0,0 @@ -#Thu Nov 20 09:59:32 GMT 2008 -version=1 -eclipse.preferences.version=1 -pathvariable.FREERTOS_ROOT=C\:/E/Dev/FreeRTOS/WorkingCopy3 diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.debug.ui.prefs b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.debug.ui.prefs deleted file mode 100644 index 98f368507..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.debug.ui.prefs +++ /dev/null @@ -1,4 +0,0 @@ -#Thu Nov 20 10:34:33 GMT 2008 -eclipse.preferences.version=1 -preferredDetailPanes=DefaultDetailPane\:DefaultDetailPane| -org.eclipse.debug.ui.PREF_LAUNCH_PERSPECTIVES=\r\n\r\n diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.equinox.p2.ui.sdk.prefs b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.equinox.p2.ui.sdk.prefs deleted file mode 100644 index 125805dca..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.equinox.p2.ui.sdk.prefs +++ /dev/null @@ -1,3 +0,0 @@ -#Thu Nov 20 09:49:01 GMT 2008 -eclipse.preferences.version=1 -autoUpdateInit=true diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jdt.ui.prefs b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jdt.ui.prefs deleted file mode 100644 index f970f3d7e..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jdt.ui.prefs +++ /dev/null @@ -1,17 +0,0 @@ -#Thu Nov 20 10:11:01 GMT 2008 -useQuickDiffPrefPage=true -proposalOrderMigrated=true -tabWidthPropagated=true -content_assist_proposals_background=255,255,255 -org.eclipse.jdt.ui.javadoclocations.migrated=true -useAnnotationsPrefPage=true -spelling_locale=en_GB -org.eclipse.jdt.internal.ui.navigator.layout=2 -org.eclipse.jface.textfont=1|Courier New|10.0|0|WINDOWS|1|0|0|0|0|0|0|0|0|1|0|0|0|0|Courier New; -org.eclipse.jdt.ui.editor.tab.width= -org.eclipse.jdt.ui.formatterprofiles.version=11 -content_assist_number_of_computers=9 -spelling_locale_initialized=true -eclipse.preferences.version=1 -content_assist_proposals_foreground=0,0,0 -fontPropagated=true diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.mylyn.context.core.prefs b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.mylyn.context.core.prefs deleted file mode 100644 index b729fe77d..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.mylyn.context.core.prefs +++ /dev/null @@ -1,3 +0,0 @@ -#Thu Nov 20 09:48:58 GMT 2008 -eclipse.preferences.version=1 -mylyn.attention.migrated=true diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.editors.prefs b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.editors.prefs deleted file mode 100644 index 1bcf8a41b..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.editors.prefs +++ /dev/null @@ -1,3 +0,0 @@ -#Thu Nov 20 10:36:07 GMT 2008 -eclipse.preferences.version=1 -overviewRuler_migration=migrated_3.1 diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.ide.prefs b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.ide.prefs deleted file mode 100644 index 9fecd5a85..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.ide.prefs +++ /dev/null @@ -1,5 +0,0 @@ -#Thu Nov 20 10:11:01 GMT 2008 -eclipse.preferences.version=1 -tipsAndTricks=true -platformState=1227126792070 -PROBLEMS_FILTERS_MIGRATE=true diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.prefs b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.prefs deleted file mode 100644 index b523c5b83..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.prefs +++ /dev/null @@ -1,4 +0,0 @@ -#Thu Nov 20 10:36:07 GMT 2008 -eclipse.preferences.version=1 -showIntro=false -KEY_CONFIGURATION_ID=org.eclipse.cdt.ui.visualstudio diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.workbench.prefs b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.workbench.prefs deleted file mode 100644 index 653503841..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.workbench.prefs +++ /dev/null @@ -1,3 +0,0 @@ -#Thu Nov 20 10:11:01 GMT 2008 -eclipse.preferences.version=1 -org.eclipse.ui.commands=\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.debug.core/.launches/RTOSDemo.launch b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.debug.core/.launches/RTOSDemo.launch deleted file mode 100644 index 31943929d..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.debug.core/.launches/RTOSDemo.launch +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.debug.ui/dialog_settings.xml b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.debug.ui/dialog_settings.xml deleted file mode 100644 index 48fd0278c..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.debug.ui/dialog_settings.xml +++ /dev/null @@ -1,13 +0,0 @@ - -
-
- - - - - - - - -
-
diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.debug.ui/launchConfigurationHistory.xml b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.debug.ui/launchConfigurationHistory.xml deleted file mode 100644 index 31ce49359..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.debug.ui/launchConfigurationHistory.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.jdt.core/variablesAndContainers.dat b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.jdt.core/variablesAndContainers.dat deleted file mode 100644 index 46ba64d91..000000000 Binary files a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.jdt.core/variablesAndContainers.dat and /dev/null differ diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.jdt.ui/OpenTypeHistory.xml b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.jdt.ui/OpenTypeHistory.xml deleted file mode 100644 index 6cd956293..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.jdt.ui/OpenTypeHistory.xml +++ /dev/null @@ -1,2 +0,0 @@ - - diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.jdt.ui/QualifiedTypeNameHistory.xml b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.jdt.ui/QualifiedTypeNameHistory.xml deleted file mode 100644 index 8c365b725..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.jdt.ui/QualifiedTypeNameHistory.xml +++ /dev/null @@ -1,2 +0,0 @@ - - diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.jdt.ui/dialog_settings.xml b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.jdt.ui/dialog_settings.xml deleted file mode 100644 index e615779c9..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.jdt.ui/dialog_settings.xml +++ /dev/null @@ -1,12 +0,0 @@ - -
-
- - - - - -
-
-
-
diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/.workspace/2008/11/47/refactorings.history b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/.workspace/2008/11/47/refactorings.history deleted file mode 100644 index 191b1ce4e..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/.workspace/2008/11/47/refactorings.history +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/.workspace/2008/11/47/refactorings.index b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/.workspace/2008/11/47/refactorings.index deleted file mode 100644 index 504ed420d..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/.workspace/2008/11/47/refactorings.index +++ /dev/null @@ -1 +0,0 @@ -1227174783656 Delete resource 'RTOSDemo' diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.ltk.ui.refactoring/dialog_settings.xml b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.ltk.ui.refactoring/dialog_settings.xml deleted file mode 100644 index 7618b311c..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.ltk.ui.refactoring/dialog_settings.xml +++ /dev/null @@ -1,10 +0,0 @@ - -
-
- - -
-
- -
-
diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.ui.ide/dialog_settings.xml b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.ui.ide/dialog_settings.xml deleted file mode 100644 index e11a2b547..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.ui.ide/dialog_settings.xml +++ /dev/null @@ -1,19 +0,0 @@ - -
-
-
-
- - - - - -
-
- - - - - -
-
diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.ui.intro/dialog_settings.xml b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.ui.intro/dialog_settings.xml deleted file mode 100644 index d3014f5c1..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.ui.intro/dialog_settings.xml +++ /dev/null @@ -1,4 +0,0 @@ - -
- -
diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.ui.workbench/dialog_settings.xml b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.ui.workbench/dialog_settings.xml deleted file mode 100644 index 96d141738..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.ui.workbench/dialog_settings.xml +++ /dev/null @@ -1,16 +0,0 @@ - -
-
- - -
-
-
-
- - - -
-
-
-
diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.ui.workbench/workbench.xml b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.ui.workbench/workbench.xml deleted file mode 100644 index 860b4c811..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.ui.workbench/workbench.xml +++ /dev/null @@ -1,293 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.ui.workbench/workingsets.xml b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.ui.workbench/workingsets.xml deleted file mode 100644 index 5eced801f..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/.plugins/org.eclipse.ui.workbench/workingsets.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/version.ini b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/version.ini deleted file mode 100644 index c51ff745b..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/.metadata/version.ini +++ /dev/null @@ -1 +0,0 @@ -org.eclipse.core.runtime=1 \ No newline at end of file diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/.cproject b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/.cproject deleted file mode 100644 index 77fb9eeba..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/.cproject +++ /dev/null @@ -1,218 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/.project b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/.project deleted file mode 100644 index efbaf4866..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/.project +++ /dev/null @@ -1,94 +0,0 @@ - - - RTOSDemo - - - - - - org.eclipse.cdt.managedbuilder.core.genmakebuilder - clean,full,incremental, - - - ?name? - - - - org.eclipse.cdt.make.core.append_environment - true - - - org.eclipse.cdt.make.core.autoBuildTarget - all - - - org.eclipse.cdt.make.core.buildArguments - - - - org.eclipse.cdt.make.core.buildCommand - cs-make - - - org.eclipse.cdt.make.core.cleanBuildTarget - clean - - - org.eclipse.cdt.make.core.contents - org.eclipse.cdt.make.core.activeConfigSettings - - - org.eclipse.cdt.make.core.enableAutoBuild - false - - - org.eclipse.cdt.make.core.enableCleanBuild - true - - - org.eclipse.cdt.make.core.enableFullBuild - true - - - org.eclipse.cdt.make.core.fullBuildTarget - all - - - org.eclipse.cdt.make.core.stopOnError - true - - - org.eclipse.cdt.make.core.useDefaultBuildCmd - false - - - - - org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder - - - - - - org.eclipse.cdt.managedbuilder.core.ScannerConfigNature - org.eclipse.cdt.managedbuilder.core.managedBuildNature - org.eclipse.cdt.core.cnature - - - - Demo_Tasks - 2 - FREERTOS_ROOT/Demo/Common/Minimal - - - FreeRTOS_Source - 2 - FREERTOS_ROOT/Source - - - FreeRTOS_uIP - 2 - FREERTOS_ROOT/Demo/Common/ethernet/FreeRTOS-uIP - - - diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/.settings/org.eclipse.ltk.core.refactoring.prefs b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/.settings/org.eclipse.ltk.core.refactoring.prefs deleted file mode 100644 index e2200b8c6..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/.settings/org.eclipse.ltk.core.refactoring.prefs +++ /dev/null @@ -1,3 +0,0 @@ -#Thu Nov 20 10:32:37 GMT 2008 -eclipse.preferences.version=1 -org.eclipse.ltk.core.refactoring.enable.project.refactoring.history=false diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/FreeRTOSConfig.h b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/FreeRTOSConfig.h deleted file mode 100644 index 617222667..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/FreeRTOSConfig.h +++ /dev/null @@ -1,135 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -#ifndef FREERTOS_CONFIG_H -#define FREERTOS_CONFIG_H - -#include "MCF52235.h" - -/*----------------------------------------------------------- - * Application specific definitions. - * - * These definitions should be adjusted for your particular hardware and - * application requirements. - * - * THESE PARAMETERS ARE DESCRIBED WITHIN THE 'CONFIGURATION' SECTION OF THE - * FreeRTOS API DOCUMENTATION AVAILABLE ON THE FreeRTOS.org WEB SITE. - * - * See http://www.freertos.org/a00110.html. - *----------------------------------------------------------*/ - -#define configUSE_PREEMPTION 1 -#define configUSE_IDLE_HOOK 0 -#define configUSE_TICK_HOOK 0 -#define configCPU_CLOCK_HZ ( ( unsigned long ) 60000000 ) -#define configTICK_RATE_HZ ( ( portTickType ) 1000 ) -#define configMINIMAL_STACK_SIZE ( ( unsigned short ) 100 ) -#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 19000 ) ) -#define configMAX_TASK_NAME_LEN ( 12 ) -#define configUSE_TRACE_FACILITY 1 -#define configUSE_16_BIT_TICKS 0 -#define configIDLE_SHOULD_YIELD 0 -#define configUSE_CO_ROUTINES 0 -#define configUSE_MUTEXES 1 -#define configCHECK_FOR_STACK_OVERFLOW 1 -#define configUSE_RECURSIVE_MUTEXES 1 -#define configQUEUE_REGISTRY_SIZE 10 -#define configUSE_COUNTING_SEMAPHORES 0 - -#define configMAX_PRIORITIES ( 6 ) -#define configMAX_CO_ROUTINE_PRIORITIES ( 2 ) - -/* Set the following definitions to 1 to include the API function, or zero -to exclude the API function. */ - -#define INCLUDE_vTaskPrioritySet 1 -#define INCLUDE_uxTaskPriorityGet 1 -#define INCLUDE_vTaskDelete 1 -#define INCLUDE_vTaskCleanUpResources 0 -#define INCLUDE_vTaskSuspend 1 -#define INCLUDE_vTaskDelayUntil 1 -#define INCLUDE_vTaskDelay 1 -#define INCLUDE_uxTaskGetStackHighWaterMark 1 - -/* This demo makes use of one or more example stats formatting functions. These -format the raw data provided by the uxTaskGetSystemState() function in to human -readable ASCII form. See the notes in the implementation of vTaskList() within -FreeRTOS/Source/tasks.c for limitations. */ -#define configUSE_STATS_FORMATTING_FUNCTIONS 1 - -/* Port specific definitions. */ -#define configYIELD_INTERRUPT_VECTOR 16UL -#define configKERNEL_INTERRUPT_PRIORITY 1 -#define configMAX_SYSCALL_INTERRUPT_PRIORITY 4 - -/* The function that initialises the tick and context switch interrupts. This -function is part of the application side (rather than kernel) to allow users to -change the peripherals and vectors being used should they conflict in any way -with the application itself. */ -void vApplicationSetupInterrupts( void ); - -/* Ethernet configuration. **************************/ - -/* Defines the MAC address to be used. */ -#define configMAC_0 0x00 -#define configMAC_1 0x04 -#define configMAC_2 0x9F -#define configMAC_3 0x00 -#define configMAC_4 0xAB -#define configMAC_5 0x2B - -/* Defines the IP address to be used. */ -#define configIP_ADDR0 192 -#define configIP_ADDR1 168 -#define configIP_ADDR2 0 -#define configIP_ADDR3 11 - -/* Defines the gateway address to be used. */ -#define configGW_ADDR0 192 -#define configGW_ADDR1 168 -#define configGW_ADDR2 0 -#define configGW_ADDR3 1 - -/* Defins the net mask. */ -#define configNET_MASK0 255 -#define configNET_MASK1 255 -#define configNET_MASK2 255 -#define configNET_MASK3 0 - -/* FEC driver configuration. */ -#define configNUM_FEC_RX_BUFFERS 3 -#define configFEC_BUFFER_SIZE 1520 -#define configUSE_PROMISCUOUS_MODE 0 -#define configFEC_INTERRUPT_PRIORITY configMAX_SYSCALL_INTERRUPT_PRIORITY -#define configPHY_ADDRESS 0 - -#if ( configFEC_BUFFER_SIZE & 0x0F ) != 0 - #error configFEC_BUFFER_SIZE must be a multiple of 16. -#endif - - -#endif /* FREERTOS_CONFIG_H */ diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/FreeRTOS_Tick_Setup.c b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/FreeRTOS_Tick_Setup.c deleted file mode 100644 index 1effbb056..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/FreeRTOS_Tick_Setup.c +++ /dev/null @@ -1,108 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -#include "FreeRTOS.h" -#include "task.h" - -/* Constants used to configure the interrupts. */ -#define portPRESCALE_VALUE 64 -#define portPRESCALE_REG_SETTING ( 5 << 8 ) -#define portPIT_INTERRUPT_ENABLED ( 0x08 ) -#define configPIT0_INTERRUPT_VECTOR ( 55 ) - -/* - * FreeRTOS.org requires two interrupts - a tick interrupt generated from a - * timer source, and a spare interrupt vector used for context switching. - * The configuration below uses PIT0 for the former, and vector 16 for the - * latter. **IF YOUR APPLICATION HAS BOTH OF THESE INTERRUPTS FREE THEN YOU DO - * NOT NEED TO CHANGE ANY OF THIS CODE** - otherwise instructions are provided - * here for using alternative interrupt sources. - * - * To change the tick interrupt source: - * - * 1) Modify vApplicationSetupInterrupts() below to be correct for whichever - * peripheral is to be used to generate the tick interrupt. - * - * 2) Change the name of the function __cs3_isr_interrupt_119() defined within - * this file to be correct for the interrupt vector used by the timer peripheral. - * The name of the function should contain the vector number, so by default vector - * number 119 is being used. - * - * 3) Make sure the tick interrupt is cleared within the interrupt handler function. - * Currently __cs3_isr_interrupt_119() clears the PIT0 interrupt. - * - * To change the spare interrupt source: - * - * 1) Modify vApplicationSetupInterrupts() below to be correct for whichever - * interrupt vector is to be used. Make sure you use a spare interrupt on interrupt - * controller 0, otherwise the register used to request context switches will also - * require modification. By default vector 16 is used which is free on most MCF52xxx - * devices. - * - * 2) Change the definition of configYIELD_INTERRUPT_VECTOR within FreeRTOSConfig.h - * to be correct for your chosen interrupt vector. - * - * 3) Change the name of the function __cs3_isr_interrupt_80() within portasm.S - * to be correct for whichever vector number is being used. By default interrupt - * controller 0 vector number 16 is used, which corresponds to vector number 80. - */ -void vApplicationSetupInterrupts( void ) -{ -const unsigned short usCompareMatchValue = ( ( configCPU_CLOCK_HZ / portPRESCALE_VALUE ) / configTICK_RATE_HZ ); - - /* Configure interrupt priority and level and unmask interrupt for PIT0. */ - MCF_INTC0_ICR55 = ( 1 | ( configKERNEL_INTERRUPT_PRIORITY << 3 ) ); - MCF_INTC0_IMRH &= ~( MCF_INTC_IMRH_INT_MASK55 ); - - /* Do the same for vector 16 (interrupt controller 0). I don't think the - write to MCF_INTC0_IMRH is actually required here but is included for - completeness. */ - MCF_INTC0_ICR16 = ( 0 | ( configKERNEL_INTERRUPT_PRIORITY << 3 ) ); - MCF_INTC0_IMRH &= ~( MCF_INTC_IPRL_INT16 ); - - /* Configure PIT0 to generate the RTOS tick. */ - MCF_PIT0_PCSR |= MCF_PIT_PCSR_PIF; - MCF_PIT0_PCSR = ( portPRESCALE_REG_SETTING | MCF_PIT_PCSR_PIE | MCF_PIT_PCSR_RLD | MCF_PIT_PCSR_EN ); - MCF_PIT0_PMR = usCompareMatchValue; -} -/*-----------------------------------------------------------*/ - -void __attribute__ ((interrupt)) __cs3_isr_interrupt_119( void ) -{ -unsigned long ulSavedInterruptMask; - - /* Clear the PIT0 interrupt. */ - MCF_PIT0_PCSR |= MCF_PIT_PCSR_PIF; - - /* Increment the RTOS tick. */ - ulSavedInterruptMask = portSET_INTERRUPT_MASK_FROM_ISR(); - if( xTaskIncrementTick() != pdFALSE ) - { - taskYIELD(); - } - portCLEAR_INTERRUPT_MASK_FROM_ISR( ulSavedInterruptMask ); -} diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235.h b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235.h deleted file mode 100644 index 5a69a6d56..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235.h +++ /dev/null @@ -1,86 +0,0 @@ -/* Coldfire C Header File - * Copyright Freescale Semiconductor Inc - * All rights reserved. - * - * 2007/03/19 Revision: 0.91 - */ - -#ifndef __MCF52235_H__ -#define __MCF52235_H__ - -//#include "common.h" - -#ifdef __cplusplus -extern "C" { -#endif - -typedef unsigned char uint8; /* 8 bits */ -typedef unsigned short int uint16; /* 16 bits */ -typedef unsigned long int uint32; /* 32 bits */ - -typedef signed char int8; /* 8 bits */ -typedef signed short int int16; /* 16 bits */ -typedef signed long int int32; /* 32 bits */ - -typedef volatile uint8 vuint8; /* 8 bits */ -typedef volatile uint16 vuint16; /* 16 bits */ -typedef volatile uint32 vuint32; /* 32 bits */ - -#ifdef THESE_ARE_CODEWARRIOR_DEFINITIONS -#pragma define_section system ".system" far_absolute RW - -/*** - * MCF52235 Derivative Memory map definitions from linker command files: - * __IPSBAR, __RAMBAR, __RAMBAR_SIZE, __FLASHBAR, __FLASHBAR_SIZE linker - * symbols must be defined in the linker command file. - */ - - extern __declspec(system) uint8 __IPSBAR[]; - extern __declspec(system) uint8 __RAMBAR[]; - extern __declspec(system) uint8 __RAMBAR_SIZE[]; - extern __declspec(system) uint8 __FLASHBAR[]; - extern __declspec(system) uint8 __FLASHBAR_SIZE[]; -#endif - -#define __IPSBAR ( ( uint8 * ) 0x40000000 ) -#define __RAMBAR ( ( uint8 * ) 0x20000000 ) - -#define IPSBAR_ADDRESS (uint32)__IPSBAR -#define RAMBAR_ADDRESS (uint32)__RAMBAR -#define RAMBAR_SIZE (uint32)__RAMBAR_SIZE -#define FLASHBAR_ADDRESS (uint32)__FLASHBAR -#define FLASHBAR_SIZE (uint32)__FLASHBAR_SIZE - - -#include "MCF52235_SCM.h" -#include "MCF52235_DMA.h" -#include "MCF52235_UART.h" -#include "MCF52235_I2C.h" -#include "MCF52235_QSPI.h" -#include "MCF52235_RTC.h" -#include "MCF52235_DTIM.h" -#include "MCF52235_INTC.h" -#include "MCF52235_GIACR.h" -#include "MCF52235_FEC.h" -#include "MCF52235_GPIO.h" -#include "MCF52235_PAD.h" -#include "MCF52235_RCM.h" -#include "MCF52235_CCM.h" -#include "MCF52235_PMM.h" -#include "MCF52235_CLOCK.h" -#include "MCF52235_EPORT.h" -#include "MCF52235_PIT.h" -#include "MCF52235_ADC.h" -#include "MCF52235_GPTA.h" -#include "MCF52235_PWM.h" -#include "MCF52235_FlexCAN.h" -#include "MCF52235_CFM.h" -#include "MCF52235_EPHY.h" -#include "MCF52235_RNGA.h" - -#ifdef __cplusplus -} -#endif - - -#endif /* __MCF52235_H__ */ diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_ADC.h b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_ADC.h deleted file mode 100644 index 3251867a9..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_ADC.h +++ /dev/null @@ -1,193 +0,0 @@ -/* Coldfire C Header File - * Copyright Freescale Semiconductor Inc - * All rights reserved. - * - * 2007/03/19 Revision: 0.91 - */ - -#ifndef __MCF52235_ADC_H__ -#define __MCF52235_ADC_H__ - - -/********************************************************************* -* -* Analog-to-Digital Converter (ADC) -* -*********************************************************************/ - -/* Register read/write macros */ -#define MCF_ADC_CTRL1 (*(vuint16*)(&__IPSBAR[0x190000])) -#define MCF_ADC_CTRL2 (*(vuint16*)(&__IPSBAR[0x190002])) -#define MCF_ADC_ADZCC (*(vuint16*)(&__IPSBAR[0x190004])) -#define MCF_ADC_ADLST1 (*(vuint16*)(&__IPSBAR[0x190006])) -#define MCF_ADC_ADLST2 (*(vuint16*)(&__IPSBAR[0x190008])) -#define MCF_ADC_ADSDIS (*(vuint16*)(&__IPSBAR[0x19000A])) -#define MCF_ADC_ADSTAT (*(vuint16*)(&__IPSBAR[0x19000C])) -#define MCF_ADC_ADLSTAT (*(vuint16*)(&__IPSBAR[0x19000E])) -#define MCF_ADC_ADZCSTAT (*(vuint16*)(&__IPSBAR[0x190010])) -#define MCF_ADC_ADRSLT0 (*(vuint16*)(&__IPSBAR[0x190012])) -#define MCF_ADC_ADRSLT1 (*(vuint16*)(&__IPSBAR[0x190014])) -#define MCF_ADC_ADRSLT2 (*(vuint16*)(&__IPSBAR[0x190016])) -#define MCF_ADC_ADRSLT3 (*(vuint16*)(&__IPSBAR[0x190018])) -#define MCF_ADC_ADRSLT4 (*(vuint16*)(&__IPSBAR[0x19001A])) -#define MCF_ADC_ADRSLT5 (*(vuint16*)(&__IPSBAR[0x19001C])) -#define MCF_ADC_ADRSLT6 (*(vuint16*)(&__IPSBAR[0x19001E])) -#define MCF_ADC_ADRSLT7 (*(vuint16*)(&__IPSBAR[0x190020])) -#define MCF_ADC_ADLLMT0 (*(vuint16*)(&__IPSBAR[0x190022])) -#define MCF_ADC_ADLLMT1 (*(vuint16*)(&__IPSBAR[0x190024])) -#define MCF_ADC_ADLLMT2 (*(vuint16*)(&__IPSBAR[0x190026])) -#define MCF_ADC_ADLLMT3 (*(vuint16*)(&__IPSBAR[0x190028])) -#define MCF_ADC_ADLLMT4 (*(vuint16*)(&__IPSBAR[0x19002A])) -#define MCF_ADC_ADLLMT5 (*(vuint16*)(&__IPSBAR[0x19002C])) -#define MCF_ADC_ADLLMT6 (*(vuint16*)(&__IPSBAR[0x19002E])) -#define MCF_ADC_ADLLMT7 (*(vuint16*)(&__IPSBAR[0x190030])) -#define MCF_ADC_ADHLMT0 (*(vuint16*)(&__IPSBAR[0x190032])) -#define MCF_ADC_ADHLMT1 (*(vuint16*)(&__IPSBAR[0x190034])) -#define MCF_ADC_ADHLMT2 (*(vuint16*)(&__IPSBAR[0x190036])) -#define MCF_ADC_ADHLMT3 (*(vuint16*)(&__IPSBAR[0x190038])) -#define MCF_ADC_ADHLMT4 (*(vuint16*)(&__IPSBAR[0x19003A])) -#define MCF_ADC_ADHLMT5 (*(vuint16*)(&__IPSBAR[0x19003C])) -#define MCF_ADC_ADHLMT6 (*(vuint16*)(&__IPSBAR[0x19003E])) -#define MCF_ADC_ADHLMT7 (*(vuint16*)(&__IPSBAR[0x190040])) -#define MCF_ADC_ADOFS0 (*(vuint16*)(&__IPSBAR[0x190042])) -#define MCF_ADC_ADOFS1 (*(vuint16*)(&__IPSBAR[0x190044])) -#define MCF_ADC_ADOFS2 (*(vuint16*)(&__IPSBAR[0x190046])) -#define MCF_ADC_ADOFS3 (*(vuint16*)(&__IPSBAR[0x190048])) -#define MCF_ADC_ADOFS4 (*(vuint16*)(&__IPSBAR[0x19004A])) -#define MCF_ADC_ADOFS5 (*(vuint16*)(&__IPSBAR[0x19004C])) -#define MCF_ADC_ADOFS6 (*(vuint16*)(&__IPSBAR[0x19004E])) -#define MCF_ADC_ADOFS7 (*(vuint16*)(&__IPSBAR[0x190050])) -#define MCF_ADC_POWER (*(vuint16*)(&__IPSBAR[0x190052])) -#define MCF_ADC_CAL (*(vuint16*)(&__IPSBAR[0x190054])) -#define MCF_ADC_ADRSLT(x) (*(vuint16*)(&__IPSBAR[0x190012 + ((x)*0x2)])) -#define MCF_ADC_ADLLMT(x) (*(vuint16*)(&__IPSBAR[0x190022 + ((x)*0x2)])) -#define MCF_ADC_ADHLMT(x) (*(vuint16*)(&__IPSBAR[0x190032 + ((x)*0x2)])) -#define MCF_ADC_ADOFS(x) (*(vuint16*)(&__IPSBAR[0x190042 + ((x)*0x2)])) - - -/* Bit definitions and macros for MCF_ADC_CTRL1 */ -#define MCF_ADC_CTRL1_SMODE(x) (((x)&0x7)<<0) -#define MCF_ADC_CTRL1_CHNCFG(x) (((x)&0xF)<<0x4) -#define MCF_ADC_CTRL1_HLMTIE (0x100) -#define MCF_ADC_CTRL1_LLMTIE (0x200) -#define MCF_ADC_CTRL1_ZCIE (0x400) -#define MCF_ADC_CTRL1_EOSIE0 (0x800) -#define MCF_ADC_CTRL1_SYNC0 (0x1000) -#define MCF_ADC_CTRL1_START0 (0x2000) -#define MCF_ADC_CTRL1_STOP0 (0x4000) - -/* Bit definitions and macros for MCF_ADC_CTRL2 */ -#define MCF_ADC_CTRL2_DIV(x) (((x)&0x1F)<<0) -#define MCF_ADC_CTRL2_SIMULT (0x20) -#define MCF_ADC_CTRL2_EOSIE1 (0x800) -#define MCF_ADC_CTRL2_SYNC1 (0x1000) -#define MCF_ADC_CTRL2_START1 (0x2000) -#define MCF_ADC_CTRL2_STOP1 (0x4000) - -/* Bit definitions and macros for MCF_ADC_ADZCC */ -#define MCF_ADC_ADZCC_ZCE0(x) (((x)&0x3)<<0) -#define MCF_ADC_ADZCC_ZCE1(x) (((x)&0x3)<<0x2) -#define MCF_ADC_ADZCC_ZCE2(x) (((x)&0x3)<<0x4) -#define MCF_ADC_ADZCC_ZCE3(x) (((x)&0x3)<<0x6) -#define MCF_ADC_ADZCC_ZCE4(x) (((x)&0x3)<<0x8) -#define MCF_ADC_ADZCC_ZCE5(x) (((x)&0x3)<<0xA) -#define MCF_ADC_ADZCC_ZCE6(x) (((x)&0x3)<<0xC) -#define MCF_ADC_ADZCC_ZCE7(x) (((x)&0x3)<<0xE) - -/* Bit definitions and macros for MCF_ADC_ADLST1 */ -#define MCF_ADC_ADLST1_SAMPLE0(x) (((x)&0x7)<<0) -#define MCF_ADC_ADLST1_SAMPLE1(x) (((x)&0x7)<<0x4) -#define MCF_ADC_ADLST1_SAMPLE2(x) (((x)&0x7)<<0x8) -#define MCF_ADC_ADLST1_SAMPLE3(x) (((x)&0x7)<<0xC) - -/* Bit definitions and macros for MCF_ADC_ADLST2 */ -#define MCF_ADC_ADLST2_SAMPLE4(x) (((x)&0x7)<<0) -#define MCF_ADC_ADLST2_SAMPLE5(x) (((x)&0x7)<<0x4) -#define MCF_ADC_ADLST2_SAMPLE6(x) (((x)&0x7)<<0x8) -#define MCF_ADC_ADLST2_SAMPLE7(x) (((x)&0x7)<<0xC) - -/* Bit definitions and macros for MCF_ADC_ADSDIS */ -#define MCF_ADC_ADSDIS_DS0 (0x1) -#define MCF_ADC_ADSDIS_DS1 (0x2) -#define MCF_ADC_ADSDIS_DS2 (0x4) -#define MCF_ADC_ADSDIS_DS3 (0x8) -#define MCF_ADC_ADSDIS_DS4 (0x10) -#define MCF_ADC_ADSDIS_DS5 (0x20) -#define MCF_ADC_ADSDIS_DS6 (0x40) -#define MCF_ADC_ADSDIS_DS7 (0x80) - -/* Bit definitions and macros for MCF_ADC_ADSTAT */ -#define MCF_ADC_ADSTAT_RDY0 (0x1) -#define MCF_ADC_ADSTAT_RDY1 (0x2) -#define MCF_ADC_ADSTAT_RDY2 (0x4) -#define MCF_ADC_ADSTAT_RDY3 (0x8) -#define MCF_ADC_ADSTAT_RDY4 (0x10) -#define MCF_ADC_ADSTAT_RDY5 (0x20) -#define MCF_ADC_ADSTAT_RDY6 (0x40) -#define MCF_ADC_ADSTAT_RDY7 (0x80) -#define MCF_ADC_ADSTAT_HLMTI (0x100) -#define MCF_ADC_ADSTAT_LLMTI (0x200) -#define MCF_ADC_ADSTAT_ZCI (0x400) -#define MCF_ADC_ADSTAT_EOSI0 (0x800) -#define MCF_ADC_ADSTAT_EOSI1 (0x1000) -#define MCF_ADC_ADSTAT_CIP1 (0x4000) -#define MCF_ADC_ADSTAT_CIP0 (0x8000) - -/* Bit definitions and macros for MCF_ADC_ADLSTAT */ -#define MCF_ADC_ADLSTAT_LLS0 (0x1) -#define MCF_ADC_ADLSTAT_LLS1 (0x2) -#define MCF_ADC_ADLSTAT_LLS2 (0x4) -#define MCF_ADC_ADLSTAT_LLS3 (0x8) -#define MCF_ADC_ADLSTAT_LLS4 (0x10) -#define MCF_ADC_ADLSTAT_LLS5 (0x20) -#define MCF_ADC_ADLSTAT_LLS6 (0x40) -#define MCF_ADC_ADLSTAT_LLS7 (0x80) -#define MCF_ADC_ADLSTAT_HLS0 (0x100) -#define MCF_ADC_ADLSTAT_HLS1 (0x200) -#define MCF_ADC_ADLSTAT_HLS2 (0x400) -#define MCF_ADC_ADLSTAT_HLS3 (0x800) -#define MCF_ADC_ADLSTAT_HLS4 (0x1000) -#define MCF_ADC_ADLSTAT_HLS5 (0x2000) -#define MCF_ADC_ADLSTAT_HLS6 (0x4000) -#define MCF_ADC_ADLSTAT_HLS7 (0x8000) - -/* Bit definitions and macros for MCF_ADC_ADZCSTAT */ -#define MCF_ADC_ADZCSTAT_ZCS0 (0x1) -#define MCF_ADC_ADZCSTAT_ZCS1 (0x2) -#define MCF_ADC_ADZCSTAT_ZCS2 (0x4) -#define MCF_ADC_ADZCSTAT_ZCS3 (0x8) -#define MCF_ADC_ADZCSTAT_ZCS4 (0x10) -#define MCF_ADC_ADZCSTAT_ZCS5 (0x20) -#define MCF_ADC_ADZCSTAT_ZCS6 (0x40) -#define MCF_ADC_ADZCSTAT_ZCS7 (0x80) - -/* Bit definitions and macros for MCF_ADC_ADRSLT */ -#define MCF_ADC_ADRSLT_RSLT(x) (((x)&0xFFF)<<0x3) -#define MCF_ADC_ADRSLT_SEXT (0x8000) - -/* Bit definitions and macros for MCF_ADC_ADLLMT */ -#define MCF_ADC_ADLLMT_LLMT(x) (((x)&0xFFF)<<0x3) - -/* Bit definitions and macros for MCF_ADC_ADHLMT */ -#define MCF_ADC_ADHLMT_HLMT(x) (((x)&0xFFF)<<0x3) - -/* Bit definitions and macros for MCF_ADC_ADOFS */ -#define MCF_ADC_ADOFS_OFFSET(x) (((x)&0xFFF)<<0x3) - -/* Bit definitions and macros for MCF_ADC_POWER */ -#define MCF_ADC_POWER_PD0 (0x1) -#define MCF_ADC_POWER_PD1 (0x2) -#define MCF_ADC_POWER_PD2 (0x4) -#define MCF_ADC_POWER_APD (0x8) -#define MCF_ADC_POWER_PUDELAY(x) (((x)&0x3F)<<0x4) -#define MCF_ADC_POWER_PSTS0 (0x400) -#define MCF_ADC_POWER_PSTS1 (0x800) -#define MCF_ADC_POWER_PSTS2 (0x1000) -#define MCF_ADC_POWER_ASB (0x8000) - -/* Bit definitions and macros for MCF_ADC_CAL */ -#define MCF_ADC_CAL_SEL_VREFL (0x4000) -#define MCF_ADC_CAL_SEL_VREFH (0x8000) - - -#endif /* __MCF52235_ADC_H__ */ diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_CCM.h b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_CCM.h deleted file mode 100644 index 5fe3517ca..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_CCM.h +++ /dev/null @@ -1,47 +0,0 @@ -/* Coldfire C Header File - * Copyright Freescale Semiconductor Inc - * All rights reserved. - * - * 2007/03/19 Revision: 0.91 - */ - -#ifndef __MCF52235_CCM_H__ -#define __MCF52235_CCM_H__ - - -/********************************************************************* -* -* Chip Configuration Module (CCM) -* -*********************************************************************/ - -/* Register read/write macros */ -#define MCF_CCM_CCR (*(vuint16*)(&__IPSBAR[0x110004])) -#define MCF_CCM_RCON (*(vuint16*)(&__IPSBAR[0x110008])) -#define MCF_CCM_CIR (*(vuint16*)(&__IPSBAR[0x11000A])) - - -/* Bit definitions and macros for MCF_CCM_CCR */ -#define MCF_CCM_CCR_BMT(x) (((x)&0x7)<<0) -#define MCF_CCM_CCR_BMT_65536 (0) -#define MCF_CCM_CCR_BMT_32768 (0x1) -#define MCF_CCM_CCR_BMT_16384 (0x2) -#define MCF_CCM_CCR_BMT_8192 (0x3) -#define MCF_CCM_CCR_BMT_4096 (0x4) -#define MCF_CCM_CCR_BMT_2048 (0x5) -#define MCF_CCM_CCR_BMT_1024 (0x6) -#define MCF_CCM_CCR_BMT_512 (0x7) -#define MCF_CCM_CCR_BME (0x8) -#define MCF_CCM_CCR_PSTEN (0x20) -#define MCF_CCM_CCR_SZEN (0x40) - -/* Bit definitions and macros for MCF_CCM_RCON */ -#define MCF_CCM_RCON_MODE (0x1) -#define MCF_CCM_RCON_RLOAD (0x20) - -/* Bit definitions and macros for MCF_CCM_CIR */ -#define MCF_CCM_CIR_PRN(x) (((x)&0x3F)<<0) -#define MCF_CCM_CIR_PIN(x) (((x)&0x3FF)<<0x6) - - -#endif /* __MCF52235_CCM_H__ */ diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_CFM.h b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_CFM.h deleted file mode 100644 index c8619f53f..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_CFM.h +++ /dev/null @@ -1,76 +0,0 @@ -/* Coldfire C Header File - * Copyright Freescale Semiconductor Inc - * All rights reserved. - * - * 2007/03/19 Revision: 0.91 - */ - -#ifndef __MCF52235_CFM_H__ -#define __MCF52235_CFM_H__ - - -/********************************************************************* -* -* ColdFire Flash Module (CFM) -* -*********************************************************************/ - -/* Register read/write macros */ -#define MCF_CFM_CFMMCR (*(vuint16*)(&__IPSBAR[0x1D0000])) -#define MCF_CFM_CFMCLKD (*(vuint8 *)(&__IPSBAR[0x1D0002])) -#define MCF_CFM_CFMSEC (*(vuint32*)(&__IPSBAR[0x1D0008])) -#define MCF_CFM_CFMPROT (*(vuint32*)(&__IPSBAR[0x1D0010])) -#define MCF_CFM_CFMSACC (*(vuint32*)(&__IPSBAR[0x1D0014])) -#define MCF_CFM_CFMDACC (*(vuint32*)(&__IPSBAR[0x1D0018])) -#define MCF_CFM_CFMUSTAT (*(vuint8 *)(&__IPSBAR[0x1D0020])) -#define MCF_CFM_CFMCMD (*(vuint8 *)(&__IPSBAR[0x1D0024])) -#define MCF_CFM_CFMCLKSEL (*(vuint16*)(&__IPSBAR[0x1D004A])) - - -/* Bit definitions and macros for MCF_CFM_CFMMCR */ -#define MCF_CFM_CFMMCR_KEYACC (0x20) -#define MCF_CFM_CFMMCR_CCIE (0x40) -#define MCF_CFM_CFMMCR_CBEIE (0x80) -#define MCF_CFM_CFMMCR_AEIE (0x100) -#define MCF_CFM_CFMMCR_PVIE (0x200) -#define MCF_CFM_CFMMCR_LOCK (0x400) - -/* Bit definitions and macros for MCF_CFM_CFMCLKD */ -#define MCF_CFM_CFMCLKD_DIV(x) (((x)&0x3F)<<0) -#define MCF_CFM_CFMCLKD_PRDIV8 (0x40) -#define MCF_CFM_CFMCLKD_DIVLD (0x80) - -/* Bit definitions and macros for MCF_CFM_CFMSEC */ -#define MCF_CFM_CFMSEC_SEC(x) (((x)&0xFFFF)<<0) -#define MCF_CFM_CFMSEC_SECSTAT (0x40000000) -#define MCF_CFM_CFMSEC_KEYEN (0x80000000) - -/* Bit definitions and macros for MCF_CFM_CFMPROT */ -#define MCF_CFM_CFMPROT_PROTECT(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_CFM_CFMSACC */ -#define MCF_CFM_CFMSACC_SUPV(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_CFM_CFMDACC */ -#define MCF_CFM_CFMDACC_DACC(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_CFM_CFMUSTAT */ -#define MCF_CFM_CFMUSTAT_BLANK (0x4) -#define MCF_CFM_CFMUSTAT_ACCERR (0x10) -#define MCF_CFM_CFMUSTAT_PVIOL (0x20) -#define MCF_CFM_CFMUSTAT_CCIF (0x40) -#define MCF_CFM_CFMUSTAT_CBEIF (0x80) - -/* Bit definitions and macros for MCF_CFM_CFMCMD */ -#define MCF_CFM_CFMCMD_CMD(x) (((x)&0x7F)<<0) -#define MCF_CFM_CFMCMD_BLANK_CHECK (0x5) -#define MCF_CFM_CFMCMD_PAGE_ERASE_VERIFY (0x6) -#define MCF_CFM_CFMCMD_WORD_PROGRAM (0x20) -#define MCF_CFM_CFMCMD_PAGE_ERASE (0x40) -#define MCF_CFM_CFMCMD_MASS_ERASE (0x41) - -/* Bit definitions and macros for MCF_CFM_CFMCLKSEL */ -#define MCF_CFM_CFMCLKSEL_CLKSEL(x) (((x)&0x3)<<0) - - -#endif /* __MCF52235_CFM_H__ */ diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_CLOCK.h b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_CLOCK.h deleted file mode 100644 index 21ef560e7..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_CLOCK.h +++ /dev/null @@ -1,54 +0,0 @@ -/* Coldfire C Header File - * Copyright Freescale Semiconductor Inc - * All rights reserved. - * - * 2007/03/19 Revision: 0.91 - */ - -#ifndef __MCF52235_CLOCK_H__ -#define __MCF52235_CLOCK_H__ - - -/********************************************************************* -* -* Clock Module (CLOCK) -* -*********************************************************************/ - -/* Register read/write macros */ -#define MCF_CLOCK_SYNCR (*(vuint16*)(&__IPSBAR[0x120000])) -#define MCF_CLOCK_SYNSR (*(vuint8 *)(&__IPSBAR[0x120002])) -#define MCF_CLOCK_LPCR (*(vuint8 *)(&__IPSBAR[0x120007])) -#define MCF_CLOCK_CCHR (*(vuint8 *)(&__IPSBAR[0x120008])) -#define MCF_CLOCK_RTCDR (*(vuint32*)(&__IPSBAR[0x12000C])) - - -/* Bit definitions and macros for MCF_CLOCK_SYNCR */ -#define MCF_CLOCK_SYNCR_PLLEN (0x1) -#define MCF_CLOCK_SYNCR_PLLMODE (0x2) -#define MCF_CLOCK_SYNCR_CLKSRC (0x4) -#define MCF_CLOCK_SYNCR_FWKUP (0x20) -#define MCF_CLOCK_SYNCR_DISCLK (0x40) -#define MCF_CLOCK_SYNCR_LOCEN (0x80) -#define MCF_CLOCK_SYNCR_RFD(x) (((x)&0x7)<<0x8) -#define MCF_CLOCK_SYNCR_LOCRE (0x800) -#define MCF_CLOCK_SYNCR_MFD(x) (((x)&0x7)<<0xC) -#define MCF_CLOCK_SYNCR_LOLRE (0x8000) - -/* Bit definitions and macros for MCF_CLOCK_SYNSR */ -#define MCF_CLOCK_SYNSR_LOCS (0x4) -#define MCF_CLOCK_SYNSR_LOCK (0x8) -#define MCF_CLOCK_SYNSR_LOCKS (0x10) -#define MCF_CLOCK_SYNSR_EXTOSC (0x80) - -/* Bit definitions and macros for MCF_CLOCK_LPCR */ -#define MCF_CLOCK_LPCR_LPD(x) (((x)&0xF)<<0) - -/* Bit definitions and macros for MCF_CLOCK_CCHR */ -#define MCF_CLOCK_CCHR_CCHR(x) (((x)&0x7)<<0) - -/* Bit definitions and macros for MCF_CLOCK_RTCDR */ -#define MCF_CLOCK_RTCDR_RTCDF(x) (((x)&0xFFFFFFFF)<<0) - - -#endif /* __MCF52235_CLOCK_H__ */ diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_DMA.h b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_DMA.h deleted file mode 100644 index 8aac8ce17..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_DMA.h +++ /dev/null @@ -1,142 +0,0 @@ -/* Coldfire C Header File - * Copyright Freescale Semiconductor Inc - * All rights reserved. - * - * 2007/03/19 Revision: 0.91 - */ - -#ifndef __MCF52235_DMA_H__ -#define __MCF52235_DMA_H__ - - -/********************************************************************* -* -* DMA Controller (DMA) -* -*********************************************************************/ - -/* Register read/write macros */ -#define MCF_DMA0_SAR (*(vuint32*)(&__IPSBAR[0x100])) -#define MCF_DMA0_DAR (*(vuint32*)(&__IPSBAR[0x104])) -#define MCF_DMA0_DSR (*(vuint8 *)(&__IPSBAR[0x108])) -#define MCF_DMA0_BCR (*(vuint32*)(&__IPSBAR[0x108])) -#define MCF_DMA0_DCR (*(vuint32*)(&__IPSBAR[0x10C])) - -#define MCF_DMA1_SAR (*(vuint32*)(&__IPSBAR[0x110])) -#define MCF_DMA1_DAR (*(vuint32*)(&__IPSBAR[0x114])) -#define MCF_DMA1_DSR (*(vuint8 *)(&__IPSBAR[0x118])) -#define MCF_DMA1_BCR (*(vuint32*)(&__IPSBAR[0x118])) -#define MCF_DMA1_DCR (*(vuint32*)(&__IPSBAR[0x11C])) - -#define MCF_DMA2_SAR (*(vuint32*)(&__IPSBAR[0x120])) -#define MCF_DMA2_DAR (*(vuint32*)(&__IPSBAR[0x124])) -#define MCF_DMA2_DSR (*(vuint8 *)(&__IPSBAR[0x128])) -#define MCF_DMA2_BCR (*(vuint32*)(&__IPSBAR[0x128])) -#define MCF_DMA2_DCR (*(vuint32*)(&__IPSBAR[0x12C])) - -#define MCF_DMA3_SAR (*(vuint32*)(&__IPSBAR[0x130])) -#define MCF_DMA3_DAR (*(vuint32*)(&__IPSBAR[0x134])) -#define MCF_DMA3_DSR (*(vuint8 *)(&__IPSBAR[0x138])) -#define MCF_DMA3_BCR (*(vuint32*)(&__IPSBAR[0x138])) -#define MCF_DMA3_DCR (*(vuint32*)(&__IPSBAR[0x13C])) - -#define MCF_DMA_SAR(x) (*(vuint32*)(&__IPSBAR[0x100 + ((x)*0x10)])) -#define MCF_DMA_DAR(x) (*(vuint32*)(&__IPSBAR[0x104 + ((x)*0x10)])) -#define MCF_DMA_DSR(x) (*(vuint8 *)(&__IPSBAR[0x108 + ((x)*0x10)])) -#define MCF_DMA_BCR(x) (*(vuint32*)(&__IPSBAR[0x108 + ((x)*0x10)])) -#define MCF_DMA_DCR(x) (*(vuint32*)(&__IPSBAR[0x10C + ((x)*0x10)])) - - -/* Bit definitions and macros for MCF_DMA_SAR */ -#define MCF_DMA_SAR_SAR(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_DMA_DAR */ -#define MCF_DMA_DAR_DAR(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_DMA_DSR */ -#define MCF_DMA_DSR_DONE (0x1) -#define MCF_DMA_DSR_BSY (0x2) -#define MCF_DMA_DSR_REQ (0x4) -#define MCF_DMA_DSR_BED (0x10) -#define MCF_DMA_DSR_BES (0x20) -#define MCF_DMA_DSR_CE (0x40) - -/* Bit definitions and macros for MCF_DMA_BCR */ -#define MCF_DMA_BCR_BCR(x) (((x)&0xFFFFFF)<<0) -#define MCF_DMA_BCR_DSR(x) (((x)&0xFF)<<0x18) - -/* Bit definitions and macros for MCF_DMA_DCR */ -#define MCF_DMA_DCR_LCH2(x) (((x)&0x3)<<0) -#define MCF_DMA_DCR_LCH2_CH0 (0) -#define MCF_DMA_DCR_LCH2_CH1 (0x1) -#define MCF_DMA_DCR_LCH2_CH2 (0x2) -#define MCF_DMA_DCR_LCH2_CH3 (0x3) -#define MCF_DMA_DCR_LCH1(x) (((x)&0x3)<<0x2) -#define MCF_DMA_DCR_LCH1_CH0 (0) -#define MCF_DMA_DCR_LCH1_CH1 (0x1) -#define MCF_DMA_DCR_LCH1_CH2 (0x2) -#define MCF_DMA_DCR_LCH1_CH3 (0x3) -#define MCF_DMA_DCR_LINKCC(x) (((x)&0x3)<<0x4) -#define MCF_DMA_DCR_D_REQ (0x80) -#define MCF_DMA_DCR_DMOD(x) (((x)&0xF)<<0x8) -#define MCF_DMA_DCR_DMOD_DIS (0) -#define MCF_DMA_DCR_DMOD_16 (0x1) -#define MCF_DMA_DCR_DMOD_32 (0x2) -#define MCF_DMA_DCR_DMOD_64 (0x3) -#define MCF_DMA_DCR_DMOD_128 (0x4) -#define MCF_DMA_DCR_DMOD_256 (0x5) -#define MCF_DMA_DCR_DMOD_512 (0x6) -#define MCF_DMA_DCR_DMOD_1K (0x7) -#define MCF_DMA_DCR_DMOD_2K (0x8) -#define MCF_DMA_DCR_DMOD_4K (0x9) -#define MCF_DMA_DCR_DMOD_8K (0xA) -#define MCF_DMA_DCR_DMOD_16K (0xB) -#define MCF_DMA_DCR_DMOD_32K (0xC) -#define MCF_DMA_DCR_DMOD_64K (0xD) -#define MCF_DMA_DCR_DMOD_128K (0xE) -#define MCF_DMA_DCR_DMOD_256K (0xF) -#define MCF_DMA_DCR_SMOD(x) (((x)&0xF)<<0xC) -#define MCF_DMA_DCR_SMOD_DIS (0) -#define MCF_DMA_DCR_SMOD_16 (0x1) -#define MCF_DMA_DCR_SMOD_32 (0x2) -#define MCF_DMA_DCR_SMOD_64 (0x3) -#define MCF_DMA_DCR_SMOD_128 (0x4) -#define MCF_DMA_DCR_SMOD_256 (0x5) -#define MCF_DMA_DCR_SMOD_512 (0x6) -#define MCF_DMA_DCR_SMOD_1K (0x7) -#define MCF_DMA_DCR_SMOD_2K (0x8) -#define MCF_DMA_DCR_SMOD_4K (0x9) -#define MCF_DMA_DCR_SMOD_8K (0xA) -#define MCF_DMA_DCR_SMOD_16K (0xB) -#define MCF_DMA_DCR_SMOD_32K (0xC) -#define MCF_DMA_DCR_SMOD_64K (0xD) -#define MCF_DMA_DCR_SMOD_128K (0xE) -#define MCF_DMA_DCR_SMOD_256K (0xF) -#define MCF_DMA_DCR_START (0x10000) -#define MCF_DMA_DCR_DSIZE(x) (((x)&0x3)<<0x11) -#define MCF_DMA_DCR_DSIZE_LONG (0) -#define MCF_DMA_DCR_DSIZE_BYTE (0x1) -#define MCF_DMA_DCR_DSIZE_WORD (0x2) -#define MCF_DMA_DCR_DSIZE_LINE (0x3) -#define MCF_DMA_DCR_DINC (0x80000) -#define MCF_DMA_DCR_SSIZE(x) (((x)&0x3)<<0x14) -#define MCF_DMA_DCR_SSIZE_LONG (0) -#define MCF_DMA_DCR_SSIZE_BYTE (0x1) -#define MCF_DMA_DCR_SSIZE_WORD (0x2) -#define MCF_DMA_DCR_SSIZE_LINE (0x3) -#define MCF_DMA_DCR_SINC (0x400000) -#define MCF_DMA_DCR_BWC(x) (((x)&0x7)<<0x19) -#define MCF_DMA_DCR_BWC_16K (0x1) -#define MCF_DMA_DCR_BWC_32K (0x2) -#define MCF_DMA_DCR_BWC_64K (0x3) -#define MCF_DMA_DCR_BWC_128K (0x4) -#define MCF_DMA_DCR_BWC_256K (0x5) -#define MCF_DMA_DCR_BWC_512K (0x6) -#define MCF_DMA_DCR_BWC_1024K (0x7) -#define MCF_DMA_DCR_AA (0x10000000) -#define MCF_DMA_DCR_CS (0x20000000) -#define MCF_DMA_DCR_EEXT (0x40000000) -#define MCF_DMA_DCR_INT (0x80000000) - - -#endif /* __MCF52235_DMA_H__ */ diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_DTIM.h b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_DTIM.h deleted file mode 100644 index 75efae4a5..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_DTIM.h +++ /dev/null @@ -1,91 +0,0 @@ -/* Coldfire C Header File - * Copyright Freescale Semiconductor Inc - * All rights reserved. - * - * 2007/03/19 Revision: 0.91 - */ - -#ifndef __MCF52235_DTIM_H__ -#define __MCF52235_DTIM_H__ - - -/********************************************************************* -* -* DMA Timers (DTIM) -* -*********************************************************************/ - -/* Register read/write macros */ -#define MCF_DTIM0_DTMR (*(vuint16*)(&__IPSBAR[0x400])) -#define MCF_DTIM0_DTXMR (*(vuint8 *)(&__IPSBAR[0x402])) -#define MCF_DTIM0_DTER (*(vuint8 *)(&__IPSBAR[0x403])) -#define MCF_DTIM0_DTRR (*(vuint32*)(&__IPSBAR[0x404])) -#define MCF_DTIM0_DTCR (*(vuint32*)(&__IPSBAR[0x408])) -#define MCF_DTIM0_DTCN (*(vuint32*)(&__IPSBAR[0x40C])) - -#define MCF_DTIM1_DTMR (*(vuint16*)(&__IPSBAR[0x440])) -#define MCF_DTIM1_DTXMR (*(vuint8 *)(&__IPSBAR[0x442])) -#define MCF_DTIM1_DTER (*(vuint8 *)(&__IPSBAR[0x443])) -#define MCF_DTIM1_DTRR (*(vuint32*)(&__IPSBAR[0x444])) -#define MCF_DTIM1_DTCR (*(vuint32*)(&__IPSBAR[0x448])) -#define MCF_DTIM1_DTCN (*(vuint32*)(&__IPSBAR[0x44C])) - -#define MCF_DTIM2_DTMR (*(vuint16*)(&__IPSBAR[0x480])) -#define MCF_DTIM2_DTXMR (*(vuint8 *)(&__IPSBAR[0x482])) -#define MCF_DTIM2_DTER (*(vuint8 *)(&__IPSBAR[0x483])) -#define MCF_DTIM2_DTRR (*(vuint32*)(&__IPSBAR[0x484])) -#define MCF_DTIM2_DTCR (*(vuint32*)(&__IPSBAR[0x488])) -#define MCF_DTIM2_DTCN (*(vuint32*)(&__IPSBAR[0x48C])) - -#define MCF_DTIM3_DTMR (*(vuint16*)(&__IPSBAR[0x4C0])) -#define MCF_DTIM3_DTXMR (*(vuint8 *)(&__IPSBAR[0x4C2])) -#define MCF_DTIM3_DTER (*(vuint8 *)(&__IPSBAR[0x4C3])) -#define MCF_DTIM3_DTRR (*(vuint32*)(&__IPSBAR[0x4C4])) -#define MCF_DTIM3_DTCR (*(vuint32*)(&__IPSBAR[0x4C8])) -#define MCF_DTIM3_DTCN (*(vuint32*)(&__IPSBAR[0x4CC])) - -#define MCF_DTIM_DTMR(x) (*(vuint16*)(&__IPSBAR[0x400 + ((x)*0x40)])) -#define MCF_DTIM_DTXMR(x) (*(vuint8 *)(&__IPSBAR[0x402 + ((x)*0x40)])) -#define MCF_DTIM_DTER(x) (*(vuint8 *)(&__IPSBAR[0x403 + ((x)*0x40)])) -#define MCF_DTIM_DTRR(x) (*(vuint32*)(&__IPSBAR[0x404 + ((x)*0x40)])) -#define MCF_DTIM_DTCR(x) (*(vuint32*)(&__IPSBAR[0x408 + ((x)*0x40)])) -#define MCF_DTIM_DTCN(x) (*(vuint32*)(&__IPSBAR[0x40C + ((x)*0x40)])) - - -/* Bit definitions and macros for MCF_DTIM_DTMR */ -#define MCF_DTIM_DTMR_RST (0x1) -#define MCF_DTIM_DTMR_CLK(x) (((x)&0x3)<<0x1) -#define MCF_DTIM_DTMR_CLK_STOP (0) -#define MCF_DTIM_DTMR_CLK_DIV1 (0x2) -#define MCF_DTIM_DTMR_CLK_DIV16 (0x4) -#define MCF_DTIM_DTMR_CLK_DTIN (0x6) -#define MCF_DTIM_DTMR_FRR (0x8) -#define MCF_DTIM_DTMR_ORRI (0x10) -#define MCF_DTIM_DTMR_OM (0x20) -#define MCF_DTIM_DTMR_CE(x) (((x)&0x3)<<0x6) -#define MCF_DTIM_DTMR_CE_NONE (0) -#define MCF_DTIM_DTMR_CE_RISE (0x40) -#define MCF_DTIM_DTMR_CE_FALL (0x80) -#define MCF_DTIM_DTMR_CE_ANY (0xC0) -#define MCF_DTIM_DTMR_PS(x) (((x)&0xFF)<<0x8) - -/* Bit definitions and macros for MCF_DTIM_DTXMR */ -#define MCF_DTIM_DTXMR_MODE16 (0x1) -#define MCF_DTIM_DTXMR_HALTED (0x40) -#define MCF_DTIM_DTXMR_DMAEN (0x80) - -/* Bit definitions and macros for MCF_DTIM_DTER */ -#define MCF_DTIM_DTER_CAP (0x1) -#define MCF_DTIM_DTER_REF (0x2) - -/* Bit definitions and macros for MCF_DTIM_DTRR */ -#define MCF_DTIM_DTRR_REF(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_DTIM_DTCR */ -#define MCF_DTIM_DTCR_CAP(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_DTIM_DTCN */ -#define MCF_DTIM_DTCN_CNT(x) (((x)&0xFFFFFFFF)<<0) - - -#endif /* __MCF52235_DTIM_H__ */ diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_EPHY.h b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_EPHY.h deleted file mode 100644 index 0ae0ec6db..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_EPHY.h +++ /dev/null @@ -1,42 +0,0 @@ -/* Coldfire C Header File - * Copyright Freescale Semiconductor Inc - * All rights reserved. - * - * 2007/03/19 Revision: 0.91 - */ - -#ifndef __MCF52235_EPHY_H__ -#define __MCF52235_EPHY_H__ - - -/********************************************************************* -* -* Ethernet Physical Transceiver (EPHY) -* -*********************************************************************/ - -/* Register read/write macros */ -#define MCF_EPHY_EPHYCTL0 (*(vuint8 *)(&__IPSBAR[0x1E0000])) -#define MCF_EPHY_EPHYCTL1 (*(vuint8 *)(&__IPSBAR[0x1E0001])) -#define MCF_EPHY_EPHYSR (*(vuint8 *)(&__IPSBAR[0x1E0002])) - - -/* Bit definitions and macros for MCF_EPHY_EPHYCTL0 */ -#define MCF_EPHY_EPHYCTL0_EPHYIEN (0x1) -#define MCF_EPHY_EPHYCTL0_EPHYWAI (0x4) -#define MCF_EPHY_EPHYCTL0_LEDEN (0x8) -#define MCF_EPHY_EPHYCTL0_DIS10 (0x10) -#define MCF_EPHY_EPHYCTL0_DIS100 (0x20) -#define MCF_EPHY_EPHYCTL0_ANDIS (0x40) -#define MCF_EPHY_EPHYCTL0_EPHYEN (0x80) - -/* Bit definitions and macros for MCF_EPHY_EPHYCTL1 */ -#define MCF_EPHY_EPHYCTL1_PHYADD(x) (((x)&0x1F)<<0) - -/* Bit definitions and macros for MCF_EPHY_EPHYSR */ -#define MCF_EPHY_EPHYSR_EPHYIF (0x1) -#define MCF_EPHY_EPHYSR_10DIS (0x10) -#define MCF_EPHY_EPHYSR_100DIS (0x20) - - -#endif /* __MCF52235_EPHY_H__ */ diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_EPORT.h b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_EPORT.h deleted file mode 100644 index 365466b5d..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_EPORT.h +++ /dev/null @@ -1,220 +0,0 @@ -/* Coldfire C Header File - * Copyright Freescale Semiconductor Inc - * All rights reserved. - * - * 2007/03/19 Revision: 0.91 - */ - -#ifndef __MCF52235_EPORT_H__ -#define __MCF52235_EPORT_H__ - - -/********************************************************************* -* -* Edge Port Module (EPORT) -* -*********************************************************************/ - -/* Register read/write macros */ -#define MCF_EPORT0_EPPAR (*(vuint16*)(&__IPSBAR[0x130000])) -#define MCF_EPORT0_EPDDR (*(vuint8 *)(&__IPSBAR[0x130002])) -#define MCF_EPORT0_EPIER (*(vuint8 *)(&__IPSBAR[0x130003])) -#define MCF_EPORT0_EPDR (*(vuint8 *)(&__IPSBAR[0x130004])) -#define MCF_EPORT0_EPPDR (*(vuint8 *)(&__IPSBAR[0x130005])) -#define MCF_EPORT0_EPFR (*(vuint8 *)(&__IPSBAR[0x130006])) - -#define MCF_EPORT1_EPPAR (*(vuint16*)(&__IPSBAR[0x140000])) -#define MCF_EPORT1_EPDDR (*(vuint8 *)(&__IPSBAR[0x140002])) -#define MCF_EPORT1_EPIER (*(vuint8 *)(&__IPSBAR[0x140003])) -#define MCF_EPORT1_EPDR (*(vuint8 *)(&__IPSBAR[0x140004])) -#define MCF_EPORT1_EPPDR (*(vuint8 *)(&__IPSBAR[0x140005])) -#define MCF_EPORT1_EPFR (*(vuint8 *)(&__IPSBAR[0x140006])) - -#define MCF_EPORT_EPPAR(x) (*(vuint16*)(&__IPSBAR[0x130000 + ((x)*0x10000)])) -#define MCF_EPORT_EPDDR(x) (*(vuint8 *)(&__IPSBAR[0x130002 + ((x)*0x10000)])) -#define MCF_EPORT_EPIER(x) (*(vuint8 *)(&__IPSBAR[0x130003 + ((x)*0x10000)])) -#define MCF_EPORT_EPDR(x) (*(vuint8 *)(&__IPSBAR[0x130004 + ((x)*0x10000)])) -#define MCF_EPORT_EPPDR(x) (*(vuint8 *)(&__IPSBAR[0x130005 + ((x)*0x10000)])) -#define MCF_EPORT_EPFR(x) (*(vuint8 *)(&__IPSBAR[0x130006 + ((x)*0x10000)])) - - -/* Bit definitions and macros for MCF_EPORT_EPPAR */ -#define MCF_EPORT_EPPAR_EPPA1(x) (((x)&0x3)<<0x2) -#define MCF_EPORT_EPPAR_EPPA1_LEVEL (0) -#define MCF_EPORT_EPPAR_EPPA1_RISING (0x4) -#define MCF_EPORT_EPPAR_EPPA1_FALLING (0x8) -#define MCF_EPORT_EPPAR_EPPA1_BOTH (0xC) -#define MCF_EPORT_EPPAR_EPPA2(x) (((x)&0x3)<<0x4) -#define MCF_EPORT_EPPAR_EPPA2_LEVEL (0) -#define MCF_EPORT_EPPAR_EPPA2_RISING (0x10) -#define MCF_EPORT_EPPAR_EPPA2_FALLING (0x20) -#define MCF_EPORT_EPPAR_EPPA2_BOTH (0x30) -#define MCF_EPORT_EPPAR_EPPA3(x) (((x)&0x3)<<0x6) -#define MCF_EPORT_EPPAR_EPPA3_LEVEL (0) -#define MCF_EPORT_EPPAR_EPPA3_RISING (0x40) -#define MCF_EPORT_EPPAR_EPPA3_FALLING (0x80) -#define MCF_EPORT_EPPAR_EPPA3_BOTH (0xC0) -#define MCF_EPORT_EPPAR_EPPA4(x) (((x)&0x3)<<0x8) -#define MCF_EPORT_EPPAR_EPPA4_LEVEL (0) -#define MCF_EPORT_EPPAR_EPPA4_RISING (0x100) -#define MCF_EPORT_EPPAR_EPPA4_FALLING (0x200) -#define MCF_EPORT_EPPAR_EPPA4_BOTH (0x300) -#define MCF_EPORT_EPPAR_EPPA5(x) (((x)&0x3)<<0xA) -#define MCF_EPORT_EPPAR_EPPA5_LEVEL (0) -#define MCF_EPORT_EPPAR_EPPA5_RISING (0x400) -#define MCF_EPORT_EPPAR_EPPA5_FALLING (0x800) -#define MCF_EPORT_EPPAR_EPPA5_BOTH (0xC00) -#define MCF_EPORT_EPPAR_EPPA6(x) (((x)&0x3)<<0xC) -#define MCF_EPORT_EPPAR_EPPA6_LEVEL (0) -#define MCF_EPORT_EPPAR_EPPA6_RISING (0x1000) -#define MCF_EPORT_EPPAR_EPPA6_FALLING (0x2000) -#define MCF_EPORT_EPPAR_EPPA6_BOTH (0x3000) -#define MCF_EPORT_EPPAR_EPPA7(x) (((x)&0x3)<<0xE) -#define MCF_EPORT_EPPAR_EPPA7_LEVEL (0) -#define MCF_EPORT_EPPAR_EPPA7_RISING (0x4000) -#define MCF_EPORT_EPPAR_EPPA7_FALLING (0x8000) -#define MCF_EPORT_EPPAR_EPPA7_BOTH (0xC000) -#define MCF_EPORT_EPPAR_LEVEL (0) -#define MCF_EPORT_EPPAR_RISING (0x1) -#define MCF_EPORT_EPPAR_FALLING (0x2) -#define MCF_EPORT_EPPAR_BOTH (0x3) - -/* Bit definitions and macros for MCF_EPORT_EPDDR */ -#define MCF_EPORT_EPDDR_EPDD1 (0x2) -#define MCF_EPORT_EPDDR_EPDD2 (0x4) -#define MCF_EPORT_EPDDR_EPDD3 (0x8) -#define MCF_EPORT_EPDDR_EPDD4 (0x10) -#define MCF_EPORT_EPDDR_EPDD5 (0x20) -#define MCF_EPORT_EPDDR_EPDD6 (0x40) -#define MCF_EPORT_EPDDR_EPDD7 (0x80) - -/* Bit definitions and macros for MCF_EPORT_EPIER */ -#define MCF_EPORT_EPIER_EPIE1 (0x2) -#define MCF_EPORT_EPIER_EPIE2 (0x4) -#define MCF_EPORT_EPIER_EPIE3 (0x8) -#define MCF_EPORT_EPIER_EPIE4 (0x10) -#define MCF_EPORT_EPIER_EPIE5 (0x20) -#define MCF_EPORT_EPIER_EPIE6 (0x40) -#define MCF_EPORT_EPIER_EPIE7 (0x80) - -/* Bit definitions and macros for MCF_EPORT_EPDR */ -#define MCF_EPORT_EPDR_EPD1 (0x2) -#define MCF_EPORT_EPDR_EPD2 (0x4) -#define MCF_EPORT_EPDR_EPD3 (0x8) -#define MCF_EPORT_EPDR_EPD4 (0x10) -#define MCF_EPORT_EPDR_EPD5 (0x20) -#define MCF_EPORT_EPDR_EPD6 (0x40) -#define MCF_EPORT_EPDR_EPD7 (0x80) - -/* Bit definitions and macros for MCF_EPORT_EPPDR */ -#define MCF_EPORT_EPPDR_EPPD1 (0x2) -#define MCF_EPORT_EPPDR_EPPD2 (0x4) -#define MCF_EPORT_EPPDR_EPPD3 (0x8) -#define MCF_EPORT_EPPDR_EPPD4 (0x10) -#define MCF_EPORT_EPPDR_EPPD5 (0x20) -#define MCF_EPORT_EPPDR_EPPD6 (0x40) -#define MCF_EPORT_EPPDR_EPPD7 (0x80) - -/* Bit definitions and macros for MCF_EPORT_EPFR */ -#define MCF_EPORT_EPFR_EPF1 (0x2) -#define MCF_EPORT_EPFR_EPF2 (0x4) -#define MCF_EPORT_EPFR_EPF3 (0x8) -#define MCF_EPORT_EPFR_EPF4 (0x10) -#define MCF_EPORT_EPFR_EPF5 (0x20) -#define MCF_EPORT_EPFR_EPF6 (0x40) -#define MCF_EPORT_EPFR_EPF7 (0x80) - -/* Bit definitions and macros for MCF_EPORT_EPPAR */ -#define MCF_EPORT_EPPAR_EPPA8(x) (((x)&0x3)<<0) -#define MCF_EPORT_EPPAR_EPPA8_LEVEL (0) -#define MCF_EPORT_EPPAR_EPPA8_RISING (0x1) -#define MCF_EPORT_EPPAR_EPPA8_FALLING (0x2) -#define MCF_EPORT_EPPAR_EPPA8_BOTH (0x3) -#define MCF_EPORT_EPPAR_EPPA9(x) (((x)&0x3)<<0x2) -#define MCF_EPORT_EPPAR_EPPA9_LEVEL (0) -#define MCF_EPORT_EPPAR_EPPA9_RISING (0x4) -#define MCF_EPORT_EPPAR_EPPA9_FALLING (0x8) -#define MCF_EPORT_EPPAR_EPPA9_BOTH (0xC) -#define MCF_EPORT_EPPAR_EPPA10(x) (((x)&0x3)<<0x4) -#define MCF_EPORT_EPPAR_EPPA10_LEVEL (0) -#define MCF_EPORT_EPPAR_EPPA10_RISING (0x10) -#define MCF_EPORT_EPPAR_EPPA10_FALLING (0x20) -#define MCF_EPORT_EPPAR_EPPA10_BOTH (0x30) -#define MCF_EPORT_EPPAR_EPPA11(x) (((x)&0x3)<<0x6) -#define MCF_EPORT_EPPAR_EPPA11_LEVEL (0) -#define MCF_EPORT_EPPAR_EPPA11_RISING (0x40) -#define MCF_EPORT_EPPAR_EPPA11_FALLING (0x80) -#define MCF_EPORT_EPPAR_EPPA11_BOTH (0xC0) -#define MCF_EPORT_EPPAR_EPPA12(x) (((x)&0x3)<<0x8) -#define MCF_EPORT_EPPAR_EPPA12_LEVEL (0) -#define MCF_EPORT_EPPAR_EPPA12_RISING (0x100) -#define MCF_EPORT_EPPAR_EPPA12_FALLING (0x200) -#define MCF_EPORT_EPPAR_EPPA12_BOTH (0x300) -#define MCF_EPORT_EPPAR_EPPA13(x) (((x)&0x3)<<0xA) -#define MCF_EPORT_EPPAR_EPPA13_LEVEL (0) -#define MCF_EPORT_EPPAR_EPPA13_RISING (0x400) -#define MCF_EPORT_EPPAR_EPPA13_FALLING (0x800) -#define MCF_EPORT_EPPAR_EPPA13_BOTH (0xC00) -#define MCF_EPORT_EPPAR_EPPA14(x) (((x)&0x3)<<0xC) -#define MCF_EPORT_EPPAR_EPPA14_LEVEL (0) -#define MCF_EPORT_EPPAR_EPPA14_RISING (0x1000) -#define MCF_EPORT_EPPAR_EPPA14_FALLING (0x2000) -#define MCF_EPORT_EPPAR_EPPA14_BOTH (0x3000) -#define MCF_EPORT_EPPAR_EPPA15(x) (((x)&0x3)<<0xE) -#define MCF_EPORT_EPPAR_EPPA15_LEVEL (0) -#define MCF_EPORT_EPPAR_EPPA15_RISING (0x4000) -#define MCF_EPORT_EPPAR_EPPA15_FALLING (0x8000) -#define MCF_EPORT_EPPAR_EPPA15_BOTH (0xC000) - -/* Bit definitions and macros for MCF_EPORT_EPDDR */ -#define MCF_EPORT_EPDDR_EPDD8 (0x1) -#define MCF_EPORT_EPDDR_EPDD9 (0x2) -#define MCF_EPORT_EPDDR_EPDD10 (0x4) -#define MCF_EPORT_EPDDR_EPDD11 (0x8) -#define MCF_EPORT_EPDDR_EPDD12 (0x10) -#define MCF_EPORT_EPDDR_EPDD13 (0x20) -#define MCF_EPORT_EPDDR_EPDD14 (0x40) -#define MCF_EPORT_EPDDR_EPDD15 (0x80) - -/* Bit definitions and macros for MCF_EPORT_EPIER */ -#define MCF_EPORT_EPIER_EPIE8 (0x1) -#define MCF_EPORT_EPIER_EPIE9 (0x2) -#define MCF_EPORT_EPIER_EPIE10 (0x4) -#define MCF_EPORT_EPIER_EPIE11 (0x8) -#define MCF_EPORT_EPIER_EPIE12 (0x10) -#define MCF_EPORT_EPIER_EPIE13 (0x20) -#define MCF_EPORT_EPIER_EPIE14 (0x40) -#define MCF_EPORT_EPIER_EPIE15 (0x80) - -/* Bit definitions and macros for MCF_EPORT_EPDR */ -#define MCF_EPORT_EPDR_EPD8 (0x1) -#define MCF_EPORT_EPDR_EPD9 (0x2) -#define MCF_EPORT_EPDR_EPD10 (0x4) -#define MCF_EPORT_EPDR_EPD11 (0x8) -#define MCF_EPORT_EPDR_EPD12 (0x10) -#define MCF_EPORT_EPDR_EPD13 (0x20) -#define MCF_EPORT_EPDR_EPD14 (0x40) -#define MCF_EPORT_EPDR_EPD15 (0x80) - -/* Bit definitions and macros for MCF_EPORT_EPPDR */ -#define MCF_EPORT_EPPDR_EPPD8 (0x1) -#define MCF_EPORT_EPPDR_EPPD9 (0x2) -#define MCF_EPORT_EPPDR_EPPD10 (0x4) -#define MCF_EPORT_EPPDR_EPPD11 (0x8) -#define MCF_EPORT_EPPDR_EPPD12 (0x10) -#define MCF_EPORT_EPPDR_EPPD13 (0x20) -#define MCF_EPORT_EPPDR_EPPD14 (0x40) -#define MCF_EPORT_EPPDR_EPPD15 (0x80) - -/* Bit definitions and macros for MCF_EPORT_EPFR */ -#define MCF_EPORT_EPFR_EPF8 (0x1) -#define MCF_EPORT_EPFR_EPF9 (0x2) -#define MCF_EPORT_EPFR_EPF10 (0x4) -#define MCF_EPORT_EPFR_EPF11 (0x8) -#define MCF_EPORT_EPFR_EPF12 (0x10) -#define MCF_EPORT_EPFR_EPF13 (0x20) -#define MCF_EPORT_EPFR_EPF14 (0x40) -#define MCF_EPORT_EPFR_EPF15 (0x80) - - -#endif /* __MCF52235_EPORT_H__ */ diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_FEC.h b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_FEC.h deleted file mode 100644 index 68fa92c18..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_FEC.h +++ /dev/null @@ -1,385 +0,0 @@ -/* Coldfire C Header File - * Copyright Freescale Semiconductor Inc - * All rights reserved. - * - * 2007/03/19 Revision: 0.91 - */ - -#ifndef __MCF52235_FEC_H__ -#define __MCF52235_FEC_H__ - - -/********************************************************************* -* -* Fast Ethernet Controller(FEC) -* -*********************************************************************/ - -/* Register read/write macros */ -#define MCF_FEC_EIR (*(vuint32*)(&__IPSBAR[0x1004])) -#define MCF_FEC_EIMR (*(vuint32*)(&__IPSBAR[0x1008])) -#define MCF_FEC_RDAR (*(vuint32*)(&__IPSBAR[0x1010])) -#define MCF_FEC_TDAR (*(vuint32*)(&__IPSBAR[0x1014])) -#define MCF_FEC_ECR (*(vuint32*)(&__IPSBAR[0x1024])) -#define MCF_FEC_MMFR (*(vuint32*)(&__IPSBAR[0x1040])) -#define MCF_FEC_MSCR (*(vuint32*)(&__IPSBAR[0x1044])) -#define MCF_FEC_MIBC (*(vuint32*)(&__IPSBAR[0x1064])) -#define MCF_FEC_RCR (*(vuint32*)(&__IPSBAR[0x1084])) -#define MCF_FEC_TCR (*(vuint32*)(&__IPSBAR[0x10C4])) -#define MCF_FEC_PALR (*(vuint32*)(&__IPSBAR[0x10E4])) -#define MCF_FEC_PAUR (*(vuint32*)(&__IPSBAR[0x10E8])) -#define MCF_FEC_OPD (*(vuint32*)(&__IPSBAR[0x10EC])) -#define MCF_FEC_IAUR (*(vuint32*)(&__IPSBAR[0x1118])) -#define MCF_FEC_IALR (*(vuint32*)(&__IPSBAR[0x111C])) -#define MCF_FEC_GAUR (*(vuint32*)(&__IPSBAR[0x1120])) -#define MCF_FEC_GALR (*(vuint32*)(&__IPSBAR[0x1124])) -#define MCF_FEC_TFWR (*(vuint32*)(&__IPSBAR[0x1144])) -#define MCF_FEC_FRBR (*(vuint32*)(&__IPSBAR[0x114C])) -#define MCF_FEC_FRSR (*(vuint32*)(&__IPSBAR[0x1150])) -#define MCF_FEC_ERDSR (*(vuint32*)(&__IPSBAR[0x1180])) -#define MCF_FEC_ETSDR (*(vuint32*)(&__IPSBAR[0x1184])) -#define MCF_FEC_EMRBR (*(vuint32*)(&__IPSBAR[0x1188])) -#define MCF_FEC_RMON_T_DROP (*(vuint32*)(&__IPSBAR[0x1200])) -#define MCF_FEC_RMON_T_PACKETS (*(vuint32*)(&__IPSBAR[0x1204])) -#define MCF_FEC_RMON_T_BC_PKT (*(vuint32*)(&__IPSBAR[0x1208])) -#define MCF_FEC_RMON_T_MC_PKT (*(vuint32*)(&__IPSBAR[0x120C])) -#define MCF_FEC_RMON_T_CRC_ALIGN (*(vuint32*)(&__IPSBAR[0x1210])) -#define MCF_FEC_RMON_T_UNDERSIZE (*(vuint32*)(&__IPSBAR[0x1214])) -#define MCF_FEC_RMON_T_OVERSIZE (*(vuint32*)(&__IPSBAR[0x1218])) -#define MCF_FEC_RMON_T_FRAG (*(vuint32*)(&__IPSBAR[0x121C])) -#define MCF_FEC_RMON_T_JAB (*(vuint32*)(&__IPSBAR[0x1220])) -#define MCF_FEC_RMON_T_COL (*(vuint32*)(&__IPSBAR[0x1224])) -#define MCF_FEC_RMON_T_P64 (*(vuint32*)(&__IPSBAR[0x1228])) -#define MCF_FEC_RMON_T_P65TO127 (*(vuint32*)(&__IPSBAR[0x122C])) -#define MCF_FEC_RMON_T_P128TO255 (*(vuint32*)(&__IPSBAR[0x1230])) -#define MCF_FEC_RMON_T_P256TO511 (*(vuint32*)(&__IPSBAR[0x1234])) -#define MCF_FEC_RMON_T_P512TO1023 (*(vuint32*)(&__IPSBAR[0x1238])) -#define MCF_FEC_RMON_T_P1024TO2047 (*(vuint32*)(&__IPSBAR[0x123C])) -#define MCF_FEC_RMON_T_P_GTE2048 (*(vuint32*)(&__IPSBAR[0x1240])) -#define MCF_FEC_RMON_T_OCTETS (*(vuint32*)(&__IPSBAR[0x1244])) -#define MCF_FEC_IEEE_T_DROP (*(vuint32*)(&__IPSBAR[0x1248])) -#define MCF_FEC_IEEE_T_FRAME_OK (*(vuint32*)(&__IPSBAR[0x124C])) -#define MCF_FEC_IEEE_T_1COL (*(vuint32*)(&__IPSBAR[0x1250])) -#define MCF_FEC_IEEE_T_MCOL (*(vuint32*)(&__IPSBAR[0x1254])) -#define MCF_FEC_IEEE_T_DEF (*(vuint32*)(&__IPSBAR[0x1258])) -#define MCF_FEC_IEEE_T_LCOL (*(vuint32*)(&__IPSBAR[0x125C])) -#define MCF_FEC_IEEE_T_EXCOL (*(vuint32*)(&__IPSBAR[0x1260])) -#define MCF_FEC_IEEE_T_MACERR (*(vuint32*)(&__IPSBAR[0x1264])) -#define MCF_FEC_IEEE_T_CSERR (*(vuint32*)(&__IPSBAR[0x1268])) -#define MCF_FEC_IEEE_T_SQE (*(vuint32*)(&__IPSBAR[0x126C])) -#define MCF_FEC_IEEE_T_FDXFC (*(vuint32*)(&__IPSBAR[0x1270])) -#define MCF_FEC_IEEE_T_OCTETS_OK (*(vuint32*)(&__IPSBAR[0x1274])) -#define MCF_FEC_RMON_R_PACKETS (*(vuint32*)(&__IPSBAR[0x1284])) -#define MCF_FEC_RMON_R_BC_PKT (*(vuint32*)(&__IPSBAR[0x1288])) -#define MCF_FEC_RMON_R_MC_PKT (*(vuint32*)(&__IPSBAR[0x128C])) -#define MCF_FEC_RMON_R_CRC_ALIGN (*(vuint32*)(&__IPSBAR[0x1290])) -#define MCF_FEC_RMON_R_UNDERSIZE (*(vuint32*)(&__IPSBAR[0x1294])) -#define MCF_FEC_RMON_R_OVERSIZE (*(vuint32*)(&__IPSBAR[0x1298])) -#define MCF_FEC_RMON_R_FRAG (*(vuint32*)(&__IPSBAR[0x129C])) -#define MCF_FEC_RMON_R_JAB (*(vuint32*)(&__IPSBAR[0x12A0])) -#define MCF_FEC_RMON_R_RESVD_0 (*(vuint32*)(&__IPSBAR[0x12A4])) -#define MCF_FEC_RMON_R_P64 (*(vuint32*)(&__IPSBAR[0x12A8])) -#define MCF_FEC_RMON_R_P65TO127 (*(vuint32*)(&__IPSBAR[0x12AC])) -#define MCF_FEC_RMON_R_P128TO255 (*(vuint32*)(&__IPSBAR[0x12B0])) -#define MCF_FEC_RMON_R_P256TO511 (*(vuint32*)(&__IPSBAR[0x12B4])) -#define MCF_FEC_RMON_R_P512TO1023 (*(vuint32*)(&__IPSBAR[0x12B8])) -#define MCF_FEC_RMON_R_P1024TO2047 (*(vuint32*)(&__IPSBAR[0x12BC])) -#define MCF_FEC_RMON_R_P_GTE2048 (*(vuint32*)(&__IPSBAR[0x12C0])) -#define MCF_FEC_RMON_R_OCTETS (*(vuint32*)(&__IPSBAR[0x12C4])) -#define MCF_FEC_IEEE_R_DROP (*(vuint32*)(&__IPSBAR[0x12C8])) -#define MCF_FEC_IEEE_R_FRAME_OK (*(vuint32*)(&__IPSBAR[0x12CC])) -#define MCF_FEC_IEEE_R_CRC (*(vuint32*)(&__IPSBAR[0x12D0])) -#define MCF_FEC_IEEE_R_ALIGN (*(vuint32*)(&__IPSBAR[0x12D4])) -#define MCF_FEC_IEEE_R_MACERR (*(vuint32*)(&__IPSBAR[0x12D8])) -#define MCF_FEC_IEEE_R_FDXFC (*(vuint32*)(&__IPSBAR[0x12DC])) -#define MCF_FEC_IEEE_R_OCTETS_OK (*(vuint32*)(&__IPSBAR[0x12E0])) - - - -/* Bit definitions and macros for MCF_FEC_EIR */ -#define MCF_FEC_EIR_UN (0x80000) -#define MCF_FEC_EIR_RL (0x100000) -#define MCF_FEC_EIR_LC (0x200000) -#define MCF_FEC_EIR_EBERR (0x400000) -#define MCF_FEC_EIR_MII (0x800000) -#define MCF_FEC_EIR_RXB (0x1000000) -#define MCF_FEC_EIR_RXF (0x2000000) -#define MCF_FEC_EIR_TXB (0x4000000) -#define MCF_FEC_EIR_TXF (0x8000000) -#define MCF_FEC_EIR_GRA (0x10000000) -#define MCF_FEC_EIR_BABT (0x20000000) -#define MCF_FEC_EIR_BABR (0x40000000) -#define MCF_FEC_EIR_HBERR (0x80000000) -#define MCF_FEC_EIR_CLEAR_ALL (0xFFFFFFFF) - -/* Bit definitions and macros for MCF_FEC_EIMR */ -#define MCF_FEC_EIMR_UN (0x80000) -#define MCF_FEC_EIMR_RL (0x100000) -#define MCF_FEC_EIMR_LC (0x200000) -#define MCF_FEC_EIMR_EBERR (0x400000) -#define MCF_FEC_EIMR_MII (0x800000) -#define MCF_FEC_EIMR_RXB (0x1000000) -#define MCF_FEC_EIMR_RXF (0x2000000) -#define MCF_FEC_EIMR_TXB (0x4000000) -#define MCF_FEC_EIMR_TXF (0x8000000) -#define MCF_FEC_EIMR_GRA (0x10000000) -#define MCF_FEC_EIMR_BABT (0x20000000) -#define MCF_FEC_EIMR_BABR (0x40000000) -#define MCF_FEC_EIMR_HBERR (0x80000000) -#define MCF_FEC_EIMR_MASK_ALL (0) -#define MCF_FEC_EIMR_UNMASK_ALL (0xFFFFFFFF) - -/* Bit definitions and macros for MCF_FEC_RDAR */ -#define MCF_FEC_RDAR_R_DES_ACTIVE (0x1000000) - -/* Bit definitions and macros for MCF_FEC_TDAR */ -#define MCF_FEC_TDAR_X_DES_ACTIVE (0x1000000) - -/* Bit definitions and macros for MCF_FEC_ECR */ -#define MCF_FEC_ECR_RESET (0x1) -#define MCF_FEC_ECR_ETHER_EN (0x2) - -/* Bit definitions and macros for MCF_FEC_MMFR */ -#define MCF_FEC_MMFR_DATA(x) (((x)&0xFFFF)<<0) -#define MCF_FEC_MMFR_TA(x) (((x)&0x3)<<0x10) -#define MCF_FEC_MMFR_TA_10 (0x20000) -#define MCF_FEC_MMFR_RA(x) (((x)&0x1F)<<0x12) -#define MCF_FEC_MMFR_PA(x) (((x)&0x1F)<<0x17) -#define MCF_FEC_MMFR_OP(x) (((x)&0x3)<<0x1C) -#define MCF_FEC_MMFR_OP_READ (0x20000000) -#define MCF_FEC_MMFR_OP_WRITE (0x10000000) -#define MCF_FEC_MMFR_ST(x) (((x)&0x3)<<0x1E) -#define MCF_FEC_MMFR_ST_01 (0x40000000) - -/* Bit definitions and macros for MCF_FEC_MSCR */ -#define MCF_FEC_MSCR_MII_SPEED(x) (((x)&0x3F)<<0x1) -#define MCF_FEC_MSCR_DIS_PREAMBLE (0x80) - -/* Bit definitions and macros for MCF_FEC_MIBC */ -#define MCF_FEC_MIBC_MIB_IDLE (0x40000000) -#define MCF_FEC_MIBC_MIB_DISABLE (0x80000000) - -/* Bit definitions and macros for MCF_FEC_RCR */ -#define MCF_FEC_RCR_LOOP (0x1) -#define MCF_FEC_RCR_DRT (0x2) -#define MCF_FEC_RCR_MII_MODE (0x4) -#define MCF_FEC_RCR_PROM (0x8) -#define MCF_FEC_RCR_BC_REJ (0x10) -#define MCF_FEC_RCR_FCE (0x20) -#define MCF_FEC_RCR_MAX_FL(x) (((x)&0x7FF)<<0x10) - -/* Bit definitions and macros for MCF_FEC_TCR */ -#define MCF_FEC_TCR_GTS (0x1) -#define MCF_FEC_TCR_HBC (0x2) -#define MCF_FEC_TCR_FDEN (0x4) -#define MCF_FEC_TCR_TFC_PAUSE (0x8) -#define MCF_FEC_TCR_RFC_PAUSE (0x10) - -/* Bit definitions and macros for MCF_FEC_PALR */ -#define MCF_FEC_PALR_PADDR1(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_FEC_PAUR */ -#define MCF_FEC_PAUR_TYPE(x) (((x)&0xFFFF)<<0) -#define MCF_FEC_PAUR_PADDR2(x) (((x)&0xFFFF)<<0x10) - -/* Bit definitions and macros for MCF_FEC_OPD */ -#define MCF_FEC_OPD_PAUSE_DUR(x) (((x)&0xFFFF)<<0) -#define MCF_FEC_OPD_OPCODE(x) (((x)&0xFFFF)<<0x10) - -/* Bit definitions and macros for MCF_FEC_IAUR */ -#define MCF_FEC_IAUR_IADDR1(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_FEC_IALR */ -#define MCF_FEC_IALR_IADDR2(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_FEC_GAUR */ -#define MCF_FEC_GAUR_GADDR1(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_FEC_GALR */ -#define MCF_FEC_GALR_GADDR2(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_FEC_TFWR */ -#define MCF_FEC_TFWR_X_WMRK(x) (((x)&0x3)<<0) -#define MCF_FEC_TFWR_X_WMRK_64 (0) -#define MCF_FEC_TFWR_X_WMRK_128 (0x2) -#define MCF_FEC_TFWR_X_WMRK_192 (0x3) - -/* Bit definitions and macros for MCF_FEC_FRBR */ -#define MCF_FEC_FRBR_R_BOUND(x) (((x)&0xFF)<<0x2) - -/* Bit definitions and macros for MCF_FEC_FRSR */ -#define MCF_FEC_FRSR_R_FSTART(x) (((x)&0xFF)<<0x2) - -/* Bit definitions and macros for MCF_FEC_ERDSR */ -#define MCF_FEC_ERDSR_R_DES_START(x) (((x)&0x3FFFFFFF)<<0x2) - -/* Bit definitions and macros for MCF_FEC_ETSDR */ -#define MCF_FEC_ETSDR_X_DES_START(x) (((x)&0x3FFFFFFF)<<0x2) - -/* Bit definitions and macros for MCF_FEC_EMRBR */ -#define MCF_FEC_EMRBR_R_BUF_SIZE(x) (((x)&0x7F)<<0x4) - -/* Bit definitions and macros for MCF_FEC_RMON_T_DROP */ -#define MCF_FEC_RMON_T_DROP_Value(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_FEC_RMON_T_PACKETS */ -#define MCF_FEC_RMON_T_PACKETS_Value(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_FEC_RMON_T_BC_PKT */ -#define MCF_FEC_RMON_T_BC_PKT_Value(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_FEC_RMON_T_MC_PKT */ -#define MCF_FEC_RMON_T_MC_PKT_Value(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_FEC_RMON_T_CRC_ALIGN */ -#define MCF_FEC_RMON_T_CRC_ALIGN_Value(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_FEC_RMON_T_UNDERSIZE */ -#define MCF_FEC_RMON_T_UNDERSIZE_Value(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_FEC_RMON_T_OVERSIZE */ -#define MCF_FEC_RMON_T_OVERSIZE_Value(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_FEC_RMON_T_FRAG */ -#define MCF_FEC_RMON_T_FRAG_Value(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_FEC_RMON_T_JAB */ -#define MCF_FEC_RMON_T_JAB_Value(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_FEC_RMON_T_COL */ -#define MCF_FEC_RMON_T_COL_Value(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_FEC_RMON_T_P64 */ -#define MCF_FEC_RMON_T_P64_Value(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_FEC_RMON_T_P65TO127 */ -#define MCF_FEC_RMON_T_P65TO127_Value(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_FEC_RMON_T_P128TO255 */ -#define MCF_FEC_RMON_T_P128TO255_Value(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_FEC_RMON_T_P256TO511 */ -#define MCF_FEC_RMON_T_P256TO511_Value(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_FEC_RMON_T_P512TO1023 */ -#define MCF_FEC_RMON_T_P512TO1023_Value(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_FEC_RMON_T_P1024TO2047 */ -#define MCF_FEC_RMON_T_P1024TO2047_Value(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_FEC_RMON_T_P_GTE2048 */ -#define MCF_FEC_RMON_T_P_GTE2048_Value(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_FEC_RMON_T_OCTETS */ -#define MCF_FEC_RMON_T_OCTETS_Value(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_FEC_IEEE_T_DROP */ -#define MCF_FEC_IEEE_T_DROP_Value(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_FEC_IEEE_T_FRAME_OK */ -#define MCF_FEC_IEEE_T_FRAME_OK_Value(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_FEC_IEEE_T_1COL */ -#define MCF_FEC_IEEE_T_1COL_Value(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_FEC_IEEE_T_MCOL */ -#define MCF_FEC_IEEE_T_MCOL_Value(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_FEC_IEEE_T_DEF */ -#define MCF_FEC_IEEE_T_DEF_Value(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_FEC_IEEE_T_LCOL */ -#define MCF_FEC_IEEE_T_LCOL_Value(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_FEC_IEEE_T_EXCOL */ -#define MCF_FEC_IEEE_T_EXCOL_Value(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_FEC_IEEE_T_MACERR */ -#define MCF_FEC_IEEE_T_MACERR_Value(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_FEC_IEEE_T_CSERR */ -#define MCF_FEC_IEEE_T_CSERR_Value(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_FEC_IEEE_T_SQE */ -#define MCF_FEC_IEEE_T_SQE_Value(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_FEC_IEEE_T_FDXFC */ -#define MCF_FEC_IEEE_T_FDXFC_Value(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_FEC_IEEE_T_OCTETS_OK */ -#define MCF_FEC_IEEE_T_OCTETS_OK_Value(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_FEC_RMON_R_PACKETS */ -#define MCF_FEC_RMON_R_PACKETS_Value(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_FEC_RMON_R_BC_PKT */ -#define MCF_FEC_RMON_R_BC_PKT_Value(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_FEC_RMON_R_MC_PKT */ -#define MCF_FEC_RMON_R_MC_PKT_Value(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_FEC_RMON_R_CRC_ALIGN */ -#define MCF_FEC_RMON_R_CRC_ALIGN_Value(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_FEC_RMON_R_UNDERSIZE */ -#define MCF_FEC_RMON_R_UNDERSIZE_Value(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_FEC_RMON_R_OVERSIZE */ -#define MCF_FEC_RMON_R_OVERSIZE_Value(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_FEC_RMON_R_FRAG */ -#define MCF_FEC_RMON_R_FRAG_Value(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_FEC_RMON_R_JAB */ -#define MCF_FEC_RMON_R_JAB_Value(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_FEC_RMON_R_RESVD_0 */ -#define MCF_FEC_RMON_R_RESVD_0_Value(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_FEC_RMON_R_P64 */ -#define MCF_FEC_RMON_R_P64_Value(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_FEC_RMON_R_P65TO127 */ -#define MCF_FEC_RMON_R_P65TO127_Value(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_FEC_RMON_R_P128TO255 */ -#define MCF_FEC_RMON_R_P128TO255_Value(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_FEC_RMON_R_P256TO511 */ -#define MCF_FEC_RMON_R_P256TO511_Value(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_FEC_RMON_R_P512TO1023 */ -#define MCF_FEC_RMON_R_P512TO1023_Value(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_FEC_RMON_R_P1024TO2047 */ -#define MCF_FEC_RMON_R_P1024TO2047_Value(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_FEC_RMON_R_P_GTE2048 */ -#define MCF_FEC_RMON_R_P_GTE2048_Value(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_FEC_RMON_R_OCTETS */ -#define MCF_FEC_RMON_R_OCTETS_Value(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_FEC_IEEE_R_DROP */ -#define MCF_FEC_IEEE_R_DROP_Value(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_FEC_IEEE_R_FRAME_OK */ -#define MCF_FEC_IEEE_R_FRAME_OK_Value(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_FEC_IEEE_R_CRC */ -#define MCF_FEC_IEEE_R_CRC_Value(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_FEC_IEEE_R_ALIGN */ -#define MCF_FEC_IEEE_R_ALIGN_Value(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_FEC_IEEE_R_MACERR */ -#define MCF_FEC_IEEE_R_MACERR_Value(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_FEC_IEEE_R_FDXFC */ -#define MCF_FEC_IEEE_R_FDXFC_Value(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_FEC_IEEE_R_OCTETS_OK */ -#define MCF_FEC_IEEE_R_OCTETS_OK_Value(x) (((x)&0xFFFFFFFF)<<0) - - -#endif /* __MCF52235_FEC_H__ */ diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_FlexCAN.h b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_FlexCAN.h deleted file mode 100644 index 97b19722d..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_FlexCAN.h +++ /dev/null @@ -1,132 +0,0 @@ -/* Coldfire C Header File - * Copyright Freescale Semiconductor Inc - * All rights reserved. - * - * 2007/03/19 Revision: 0.91 - */ - -#ifndef __MCF52235_FlexCAN_H__ -#define __MCF52235_FlexCAN_H__ - - -/********************************************************************* -* -* Flex Controller Area Network (FlexCAN) -* -*********************************************************************/ - -/* Register read/write macros */ -#define MCF_FlexCAN_CANMCR (*(vuint32*)(&__IPSBAR[0x1C0000])) -#define MCF_FlexCAN_CANCTRL (*(vuint32*)(&__IPSBAR[0x1C0004])) -#define MCF_FlexCAN_TIMER (*(vuint32*)(&__IPSBAR[0x1C0008])) -#define MCF_FlexCAN_RXGMASK (*(vuint32*)(&__IPSBAR[0x1C0010])) -#define MCF_FlexCAN_RX14MASK (*(vuint32*)(&__IPSBAR[0x1C0014])) -#define MCF_FlexCAN_RX15MASK (*(vuint32*)(&__IPSBAR[0x1C0018])) -#define MCF_FlexCAN_ERRCNT (*(vuint32*)(&__IPSBAR[0x1C001C])) -#define MCF_FlexCAN_ERRSTAT (*(vuint32*)(&__IPSBAR[0x1C0020])) -#define MCF_FlexCAN_IMASK (*(vuint32*)(&__IPSBAR[0x1C0028])) -#define MCF_FlexCAN_IFLAG (*(vuint32*)(&__IPSBAR[0x1C0030])) - - - -/* Bit definitions and macros for MCF_FlexCAN_CANMCR */ -#define MCF_FlexCAN_CANMCR_MAXMB(x) (((x)&0xF)<<0) -#define MCF_FlexCAN_CANMCR_LPMACK (0x100000) -#define MCF_FlexCAN_CANMCR_SUPV (0x800000) -#define MCF_FlexCAN_CANMCR_FRZACK (0x1000000) -#define MCF_FlexCAN_CANMCR_SOFTRST (0x2000000) -#define MCF_FlexCAN_CANMCR_NOTRDY (0x8000000) -#define MCF_FlexCAN_CANMCR_HALT (0x10000000) -#define MCF_FlexCAN_CANMCR_FRZ (0x40000000) -#define MCF_FlexCAN_CANMCR_MDIS (0x80000000) - -/* Bit definitions and macros for MCF_FlexCAN_CANCTRL */ -#define MCF_FlexCAN_CANCTRL_PROPSEG(x) (((x)&0x7)<<0) -#define MCF_FlexCAN_CANCTRL_LOM (0x8) -#define MCF_FlexCAN_CANCTRL_LBUF (0x10) -#define MCF_FlexCAN_CANCTRL_TSYNC (0x20) -#define MCF_FlexCAN_CANCTRL_BOFFREC (0x40) -#define MCF_FlexCAN_CANCTRL_SAMP (0x80) -#define MCF_FlexCAN_CANCTRL_LPB (0x1000) -#define MCF_FlexCAN_CANCTRL_CLK_SRC (0x2000) -#define MCF_FlexCAN_CANCTRL_ERRMSK (0x4000) -#define MCF_FlexCAN_CANCTRL_BOFFMSK (0x8000) -#define MCF_FlexCAN_CANCTRL_PSEG2(x) (((x)&0x7)<<0x10) -#define MCF_FlexCAN_CANCTRL_PSEG1(x) (((x)&0x7)<<0x13) -#define MCF_FlexCAN_CANCTRL_RJW(x) (((x)&0x3)<<0x16) -#define MCF_FlexCAN_CANCTRL_PRESDIV(x) (((x)&0xFF)<<0x18) - -/* Bit definitions and macros for MCF_FlexCAN_TIMER */ -#define MCF_FlexCAN_TIMER_TIMER(x) (((x)&0xFFFF)<<0) - -/* Bit definitions and macros for MCF_FlexCAN_RXGMASK */ -#define MCF_FlexCAN_RXGMASK_MI(x) (((x)&0x1FFFFFFF)<<0) - -/* Bit definitions and macros for MCF_FlexCAN_RX14MASK */ -#define MCF_FlexCAN_RX14MASK_MI(x) (((x)&0x1FFFFFFF)<<0) - -/* Bit definitions and macros for MCF_FlexCAN_RX15MASK */ -#define MCF_FlexCAN_RX15MASK_MI(x) (((x)&0x1FFFFFFF)<<0) - -/* Bit definitions and macros for MCF_FlexCAN_ERRCNT */ -#define MCF_FlexCAN_ERRCNT_TXECTR(x) (((x)&0xFF)<<0) -#define MCF_FlexCAN_ERRCNT_RXECTR(x) (((x)&0xFF)<<0x8) - -/* Bit definitions and macros for MCF_FlexCAN_ERRSTAT */ -#define MCF_FlexCAN_ERRSTAT_ERRINT (0x2) -#define MCF_FlexCAN_ERRSTAT_BOFFINT (0x4) -#define MCF_FlexCAN_ERRSTAT_FLTCONF(x) (((x)&0x3)<<0x4) -#define MCF_FlexCAN_ERRSTAT_FLTCONF_ACTIVE (0) -#define MCF_FlexCAN_ERRSTAT_FLTCONF_PASSIVE (0x10) -#define MCF_FlexCAN_ERRSTAT_FLTCONF_BUSOFF (0x20) -#define MCF_FlexCAN_ERRSTAT_TXRX (0x40) -#define MCF_FlexCAN_ERRSTAT_IDLE (0x80) -#define MCF_FlexCAN_ERRSTAT_RXWRN (0x100) -#define MCF_FlexCAN_ERRSTAT_TXWRN (0x200) -#define MCF_FlexCAN_ERRSTAT_STFERR (0x400) -#define MCF_FlexCAN_ERRSTAT_FRMERR (0x800) -#define MCF_FlexCAN_ERRSTAT_CRCERR (0x1000) -#define MCF_FlexCAN_ERRSTAT_ACKERR (0x2000) -#define MCF_FlexCAN_ERRSTAT_BIT0ERR (0x4000) -#define MCF_FlexCAN_ERRSTAT_BIT1ERR (0x8000) - -/* Bit definitions and macros for MCF_FlexCAN_IMASK */ -#define MCF_FlexCAN_IMASK_BUF0M (0x1) -#define MCF_FlexCAN_IMASK_BUF1M (0x2) -#define MCF_FlexCAN_IMASK_BUF2M (0x4) -#define MCF_FlexCAN_IMASK_BUF3M (0x8) -#define MCF_FlexCAN_IMASK_BUF4M (0x10) -#define MCF_FlexCAN_IMASK_BUF5M (0x20) -#define MCF_FlexCAN_IMASK_BUF6M (0x40) -#define MCF_FlexCAN_IMASK_BUF7M (0x80) -#define MCF_FlexCAN_IMASK_BUF8M (0x100) -#define MCF_FlexCAN_IMASK_BUF9M (0x200) -#define MCF_FlexCAN_IMASK_BUF10M (0x400) -#define MCF_FlexCAN_IMASK_BUF11M (0x800) -#define MCF_FlexCAN_IMASK_BUF12M (0x1000) -#define MCF_FlexCAN_IMASK_BUF13M (0x2000) -#define MCF_FlexCAN_IMASK_BUF14M (0x4000) -#define MCF_FlexCAN_IMASK_BUF15M (0x8000) -#define MCF_FlexCAN_IMASK_BUF(x) (0x1<<(x)) - -/* Bit definitions and macros for MCF_FlexCAN_IFLAG */ -#define MCF_FlexCAN_IFLAG_BUF0I (0x1) -#define MCF_FlexCAN_IFLAG_BUF1I (0x2) -#define MCF_FlexCAN_IFLAG_BUF2I (0x4) -#define MCF_FlexCAN_IFLAG_BUF3I (0x8) -#define MCF_FlexCAN_IFLAG_BUF4I (0x10) -#define MCF_FlexCAN_IFLAG_BUF5I (0x20) -#define MCF_FlexCAN_IFLAG_BUF6I (0x40) -#define MCF_FlexCAN_IFLAG_BUF7I (0x80) -#define MCF_FlexCAN_IFLAG_BUF8I (0x100) -#define MCF_FlexCAN_IFLAG_BUF9I (0x200) -#define MCF_FlexCAN_IFLAG_BUF10I (0x400) -#define MCF_FlexCAN_IFLAG_BUF11I (0x800) -#define MCF_FlexCAN_IFLAG_BUF12I (0x1000) -#define MCF_FlexCAN_IFLAG_BUF13I (0x2000) -#define MCF_FlexCAN_IFLAG_BUF14I (0x4000) -#define MCF_FlexCAN_IFLAG_BUF15I (0x8000) -#define MCF_FlexCAN_IFLAG_BUF(x) (0x1<<(x)) - - -#endif /* __MCF52235_FlexCAN_H__ */ diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_GIACR.h b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_GIACR.h deleted file mode 100644 index 7f1fbb300..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_GIACR.h +++ /dev/null @@ -1,37 +0,0 @@ -/* Coldfire C Header File - * Copyright Freescale Semiconductor Inc - * All rights reserved. - * - * 2007/03/19 Revision: 0.91 - */ - -#ifndef __MCF52235_GIACR_H__ -#define __MCF52235_GIACR_H__ - - -/********************************************************************* -* -* Global Interrupt Acknowledge Control Registers Module (GIACR) -* -*********************************************************************/ - -/* Register read/write macros */ -#define MCF_GIACR_GSWIACK (*(vuint8 *)(&__IPSBAR[0xFE0])) -#define MCF_GIACR_GL1IACK (*(vuint8 *)(&__IPSBAR[0xFE4])) -#define MCF_GIACR_GL2IACK (*(vuint8 *)(&__IPSBAR[0xFE8])) -#define MCF_GIACR_GL3IACK (*(vuint8 *)(&__IPSBAR[0xFEC])) -#define MCF_GIACR_GL4IACK (*(vuint8 *)(&__IPSBAR[0xFF0])) -#define MCF_GIACR_GL5IACK (*(vuint8 *)(&__IPSBAR[0xFF4])) -#define MCF_GIACR_GL6IACK (*(vuint8 *)(&__IPSBAR[0xFF8])) -#define MCF_GIACR_GL7IACK (*(vuint8 *)(&__IPSBAR[0xFFC])) -#define MCF_GIACR_GLIACK(x) (*(vuint8 *)(&__IPSBAR[0xFE4 + ((x-1)*0x4)])) - - -/* Bit definitions and macros for MCF_GIACR_GSWIACK */ -#define MCF_GIACR_GSWIACK_VECTOR(x) (((x)&0xFF)<<0) - -/* Bit definitions and macros for MCF_GIACR_GLIACK */ -#define MCF_GIACR_GLIACK_VECTOR(x) (((x)&0xFF)<<0) - - -#endif /* __MCF52235_GIACR_H__ */ diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_GPIO.h b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_GPIO.h deleted file mode 100644 index f12353e4b..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_GPIO.h +++ /dev/null @@ -1,795 +0,0 @@ -/* Coldfire C Header File - * Copyright Freescale Semiconductor Inc - * All rights reserved. - * - * 2007/03/19 Revision: 0.91 - */ - -#ifndef __MCF52235_GPIO_H__ -#define __MCF52235_GPIO_H__ - - -/********************************************************************* -* -* General Purpose I/O (GPIO) -* -*********************************************************************/ - -/* Register read/write macros */ -#define MCF_GPIO_PORTNQ (*(vuint8 *)(&__IPSBAR[0x100008])) -#define MCF_GPIO_DDRNQ (*(vuint8 *)(&__IPSBAR[0x100020])) -#define MCF_GPIO_SETNQ (*(vuint8 *)(&__IPSBAR[0x100038])) -#define MCF_GPIO_CLRNQ (*(vuint8 *)(&__IPSBAR[0x100050])) -#define MCF_GPIO_PNQPAR (*(vuint16*)(&__IPSBAR[0x100068])) - -#define MCF_GPIO_PORTAN (*(vuint8 *)(&__IPSBAR[0x10000A])) -#define MCF_GPIO_DDRAN (*(vuint8 *)(&__IPSBAR[0x100022])) -#define MCF_GPIO_SETAN (*(vuint8 *)(&__IPSBAR[0x10003A])) -#define MCF_GPIO_CLRAN (*(vuint8 *)(&__IPSBAR[0x100052])) -#define MCF_GPIO_PANPAR (*(vuint8 *)(&__IPSBAR[0x10006A])) - -#define MCF_GPIO_PORTAS (*(vuint8 *)(&__IPSBAR[0x10000B])) -#define MCF_GPIO_DDRAS (*(vuint8 *)(&__IPSBAR[0x100023])) -#define MCF_GPIO_SETAS (*(vuint8 *)(&__IPSBAR[0x10003B])) -#define MCF_GPIO_CLRAS (*(vuint8 *)(&__IPSBAR[0x100053])) -#define MCF_GPIO_PASPAR (*(vuint8 *)(&__IPSBAR[0x10006B])) - -#define MCF_GPIO_PORTQS (*(vuint8 *)(&__IPSBAR[0x10000C])) -#define MCF_GPIO_DDRQS (*(vuint8 *)(&__IPSBAR[0x100024])) -#define MCF_GPIO_SETQS (*(vuint8 *)(&__IPSBAR[0x10003C])) -#define MCF_GPIO_CLRQS (*(vuint8 *)(&__IPSBAR[0x100054])) -#define MCF_GPIO_PQSPAR (*(vuint16*)(&__IPSBAR[0x10006C])) - -#define MCF_GPIO_PORTTA (*(vuint8 *)(&__IPSBAR[0x10000E])) -#define MCF_GPIO_DDRTA (*(vuint8 *)(&__IPSBAR[0x100026])) -#define MCF_GPIO_SETTA (*(vuint8 *)(&__IPSBAR[0x10003E])) -#define MCF_GPIO_CLRTA (*(vuint8 *)(&__IPSBAR[0x100056])) -#define MCF_GPIO_PTAPAR (*(vuint8 *)(&__IPSBAR[0x10006E])) - -#define MCF_GPIO_PORTTC (*(vuint8 *)(&__IPSBAR[0x10000F])) -#define MCF_GPIO_DDRTC (*(vuint8 *)(&__IPSBAR[0x100027])) -#define MCF_GPIO_SETTC (*(vuint8 *)(&__IPSBAR[0x10003F])) -#define MCF_GPIO_CLRTC (*(vuint8 *)(&__IPSBAR[0x100057])) -#define MCF_GPIO_PTCPAR (*(vuint8 *)(&__IPSBAR[0x10006F])) - -#define MCF_GPIO_PORTTD (*(vuint8 *)(&__IPSBAR[0x100010])) -#define MCF_GPIO_DDRTD (*(vuint8 *)(&__IPSBAR[0x100028])) -#define MCF_GPIO_SETTD (*(vuint8 *)(&__IPSBAR[0x100040])) -#define MCF_GPIO_CLRTD (*(vuint8 *)(&__IPSBAR[0x100058])) -#define MCF_GPIO_PTDPAR (*(vuint8 *)(&__IPSBAR[0x100070])) - -#define MCF_GPIO_PORTUA (*(vuint8 *)(&__IPSBAR[0x100011])) -#define MCF_GPIO_DDRUA (*(vuint8 *)(&__IPSBAR[0x100029])) -#define MCF_GPIO_SETUA (*(vuint8 *)(&__IPSBAR[0x100041])) -#define MCF_GPIO_CLRUA (*(vuint8 *)(&__IPSBAR[0x100059])) -#define MCF_GPIO_PUAPAR (*(vuint8 *)(&__IPSBAR[0x100071])) - -#define MCF_GPIO_PORTUB (*(vuint8 *)(&__IPSBAR[0x100012])) -#define MCF_GPIO_DDRUB (*(vuint8 *)(&__IPSBAR[0x10002A])) -#define MCF_GPIO_SETUB (*(vuint8 *)(&__IPSBAR[0x100042])) -#define MCF_GPIO_CLRUB (*(vuint8 *)(&__IPSBAR[0x10005A])) -#define MCF_GPIO_PUBPAR (*(vuint8 *)(&__IPSBAR[0x100072])) - -#define MCF_GPIO_PORTUC (*(vuint8 *)(&__IPSBAR[0x100013])) -#define MCF_GPIO_DDRUC (*(vuint8 *)(&__IPSBAR[0x10002B])) -#define MCF_GPIO_SETUC (*(vuint8 *)(&__IPSBAR[0x100043])) -#define MCF_GPIO_CLRUC (*(vuint8 *)(&__IPSBAR[0x10005B])) -#define MCF_GPIO_PUCPAR (*(vuint8 *)(&__IPSBAR[0x100073])) - -#define MCF_GPIO_PORTDD (*(vuint8 *)(&__IPSBAR[0x100014])) -#define MCF_GPIO_DDRDD (*(vuint8 *)(&__IPSBAR[0x10002C])) -#define MCF_GPIO_SETDD (*(vuint8 *)(&__IPSBAR[0x100044])) -#define MCF_GPIO_CLRDD (*(vuint8 *)(&__IPSBAR[0x10005C])) -#define MCF_GPIO_PDDPAR (*(vuint8 *)(&__IPSBAR[0x100074])) - -#define MCF_GPIO_PORTLD (*(vuint8 *)(&__IPSBAR[0x100015])) -#define MCF_GPIO_DDRLD (*(vuint8 *)(&__IPSBAR[0x10002D])) -#define MCF_GPIO_SETLD (*(vuint8 *)(&__IPSBAR[0x100045])) -#define MCF_GPIO_CLRLD (*(vuint8 *)(&__IPSBAR[0x10005D])) -#define MCF_GPIO_PLDPAR (*(vuint8 *)(&__IPSBAR[0x100075])) - -#define MCF_GPIO_PORTGP (*(vuint8 *)(&__IPSBAR[0x100016])) -#define MCF_GPIO_DDRGP (*(vuint8 *)(&__IPSBAR[0x10002E])) -#define MCF_GPIO_SETGP (*(vuint8 *)(&__IPSBAR[0x100046])) -#define MCF_GPIO_CLRGP (*(vuint8 *)(&__IPSBAR[0x10005E])) -#define MCF_GPIO_PGPPAR (*(vuint8 *)(&__IPSBAR[0x100076])) - - - -/* Bit definitions and macros for MCF_GPIO_PORTNQ */ -#define MCF_GPIO_PORTNQ_PORTNQ1 (0x2) -#define MCF_GPIO_PORTNQ_PORTNQ2 (0x4) -#define MCF_GPIO_PORTNQ_PORTNQ3 (0x8) -#define MCF_GPIO_PORTNQ_PORTNQ4 (0x10) -#define MCF_GPIO_PORTNQ_PORTNQ5 (0x20) -#define MCF_GPIO_PORTNQ_PORTNQ6 (0x40) -#define MCF_GPIO_PORTNQ_PORTNQ7 (0x80) - -/* Bit definitions and macros for MCF_GPIO_DDRNQ */ -#define MCF_GPIO_DDRNQ_DDRNQ1 (0x2) -#define MCF_GPIO_DDRNQ_DDRNQ2 (0x4) -#define MCF_GPIO_DDRNQ_DDRNQ3 (0x8) -#define MCF_GPIO_DDRNQ_DDRNQ4 (0x10) -#define MCF_GPIO_DDRNQ_DDRNQ5 (0x20) -#define MCF_GPIO_DDRNQ_DDRNQ6 (0x40) -#define MCF_GPIO_DDRNQ_DDRNQ7 (0x80) - -/* Bit definitions and macros for MCF_GPIO_SETNQ */ -#define MCF_GPIO_SETNQ_SETNQ1 (0x2) -#define MCF_GPIO_SETNQ_SETNQ2 (0x4) -#define MCF_GPIO_SETNQ_SETNQ3 (0x8) -#define MCF_GPIO_SETNQ_SETNQ4 (0x10) -#define MCF_GPIO_SETNQ_SETNQ5 (0x20) -#define MCF_GPIO_SETNQ_SETNQ6 (0x40) -#define MCF_GPIO_SETNQ_SETNQ7 (0x80) - -/* Bit definitions and macros for MCF_GPIO_CLRNQ */ -#define MCF_GPIO_CLRNQ_CLRNQ1 (0x2) -#define MCF_GPIO_CLRNQ_CLRNQ2 (0x4) -#define MCF_GPIO_CLRNQ_CLRNQ3 (0x8) -#define MCF_GPIO_CLRNQ_CLRNQ4 (0x10) -#define MCF_GPIO_CLRNQ_CLRNQ5 (0x20) -#define MCF_GPIO_CLRNQ_CLRNQ6 (0x40) -#define MCF_GPIO_CLRNQ_CLRNQ7 (0x80) - -/* Bit definitions and macros for MCF_GPIO_PNQPAR */ -#define MCF_GPIO_PNQPAR_PNQPAR1(x) (((x)&0x3)<<0x2) -#define MCF_GPIO_PNQPAR_IRQ1_GPIO (0) -#define MCF_GPIO_PNQPAR_IRQ1_IRQ1 (0x4) -#define MCF_GPIO_PNQPAR_IRQ1_SYNCA (0x8) -#define MCF_GPIO_PNQPAR_IRQ1_PWM1 (0xC) -#define MCF_GPIO_PNQPAR_PNQPAR2(x) (((x)&0x3)<<0x4) -#define MCF_GPIO_PNQPAR_IRQ2_GPIO (0) -#define MCF_GPIO_PNQPAR_IRQ2_IRQ2 (0x10) -#define MCF_GPIO_PNQPAR_IRQ2_FEC_RXD3 (0x30) -#define MCF_GPIO_PNQPAR_PNQPAR3(x) (((x)&0x3)<<0x6) -#define MCF_GPIO_PNQPAR_IRQ3_GPIO (0) -#define MCF_GPIO_PNQPAR_IRQ3_IRQ3 (0x40) -#define MCF_GPIO_PNQPAR_IRQ3_FEC_RXD2 (0xC0) -#define MCF_GPIO_PNQPAR_PNQPAR4(x) (((x)&0x3)<<0x8) -#define MCF_GPIO_PNQPAR_IRQ4_GPIO (0) -#define MCF_GPIO_PNQPAR_IRQ4_IRQ4 (0x100) -#define MCF_GPIO_PNQPAR_PNQPAR5(x) (((x)&0x3)<<0xA) -#define MCF_GPIO_PNQPAR_IRQ5_GPIO (0) -#define MCF_GPIO_PNQPAR_IRQ5_IRQ5 (0x400) -#define MCF_GPIO_PNQPAR_IRQ5_FEC_RXD1 (0xC00) -#define MCF_GPIO_PNQPAR_PNQPAR6(x) (((x)&0x3)<<0xC) -#define MCF_GPIO_PNQPAR_IRQ6_GPIO (0) -#define MCF_GPIO_PNQPAR_IRQ6_IRQ6 (0x1000) -#define MCF_GPIO_PNQPAR_IRQ6_FEC_RXER (0x3000) -#define MCF_GPIO_PNQPAR_PNQPAR7(x) (((x)&0x3)<<0xE) -#define MCF_GPIO_PNQPAR_IRQ7_GPIO (0) -#define MCF_GPIO_PNQPAR_IRQ7_IRQ7 (0x4000) - -/* Bit definitions and macros for MCF_GPIO_PORTAN */ -#define MCF_GPIO_PORTAN_PORTAN0 (0x1) -#define MCF_GPIO_PORTAN_PORTAN1 (0x2) -#define MCF_GPIO_PORTAN_PORTAN2 (0x4) -#define MCF_GPIO_PORTAN_PORTAN3 (0x8) -#define MCF_GPIO_PORTAN_PORTAN4 (0x10) -#define MCF_GPIO_PORTAN_PORTAN5 (0x20) -#define MCF_GPIO_PORTAN_PORTAN6 (0x40) -#define MCF_GPIO_PORTAN_PORTAN7 (0x80) - -/* Bit definitions and macros for MCF_GPIO_DDRAN */ -#define MCF_GPIO_DDRAN_DDRAN0 (0x1) -#define MCF_GPIO_DDRAN_DDRAN1 (0x2) -#define MCF_GPIO_DDRAN_DDRAN2 (0x4) -#define MCF_GPIO_DDRAN_DDRAN3 (0x8) -#define MCF_GPIO_DDRAN_DDRAN4 (0x10) -#define MCF_GPIO_DDRAN_DDRAN5 (0x20) -#define MCF_GPIO_DDRAN_DDRAN6 (0x40) -#define MCF_GPIO_DDRAN_DDRAN7 (0x80) - -/* Bit definitions and macros for MCF_GPIO_SETAN */ -#define MCF_GPIO_SETAN_SETAN0 (0x1) -#define MCF_GPIO_SETAN_SETAN1 (0x2) -#define MCF_GPIO_SETAN_SETAN2 (0x4) -#define MCF_GPIO_SETAN_SETAN3 (0x8) -#define MCF_GPIO_SETAN_SETAN4 (0x10) -#define MCF_GPIO_SETAN_SETAN5 (0x20) -#define MCF_GPIO_SETAN_SETAN6 (0x40) -#define MCF_GPIO_SETAN_SETAN7 (0x80) - -/* Bit definitions and macros for MCF_GPIO_CLRAN */ -#define MCF_GPIO_CLRAN_CLRAN0 (0x1) -#define MCF_GPIO_CLRAN_CLRAN1 (0x2) -#define MCF_GPIO_CLRAN_CLRAN2 (0x4) -#define MCF_GPIO_CLRAN_CLRAN3 (0x8) -#define MCF_GPIO_CLRAN_CLRAN4 (0x10) -#define MCF_GPIO_CLRAN_CLRAN5 (0x20) -#define MCF_GPIO_CLRAN_CLRAN6 (0x40) -#define MCF_GPIO_CLRAN_CLRAN7 (0x80) - -/* Bit definitions and macros for MCF_GPIO_PANPAR */ -#define MCF_GPIO_PANPAR_PANPAR0 (0x1) -#define MCF_GPIO_PANPAR_AN0_GPIO (0) -#define MCF_GPIO_PANPAR_AN0_AN0 (0x1) -#define MCF_GPIO_PANPAR_PANPAR1 (0x2) -#define MCF_GPIO_PANPAR_AN1_GPIO (0) -#define MCF_GPIO_PANPAR_AN1_AN1 (0x2) -#define MCF_GPIO_PANPAR_PANPAR2 (0x4) -#define MCF_GPIO_PANPAR_AN2_GPIO (0) -#define MCF_GPIO_PANPAR_AN2_AN2 (0x4) -#define MCF_GPIO_PANPAR_PANPAR3 (0x8) -#define MCF_GPIO_PANPAR_AN3_GPIO (0) -#define MCF_GPIO_PANPAR_AN3_AN3 (0x8) -#define MCF_GPIO_PANPAR_PANPAR4 (0x10) -#define MCF_GPIO_PANPAR_AN4_GPIO (0) -#define MCF_GPIO_PANPAR_AN4_AN4 (0x10) -#define MCF_GPIO_PANPAR_PANPAR5 (0x20) -#define MCF_GPIO_PANPAR_AN5_GPIO (0) -#define MCF_GPIO_PANPAR_AN5_AN5 (0x20) -#define MCF_GPIO_PANPAR_PANPAR6 (0x40) -#define MCF_GPIO_PANPAR_AN6_GPIO (0) -#define MCF_GPIO_PANPAR_AN6_AN6 (0x40) -#define MCF_GPIO_PANPAR_PANPAR7 (0x80) -#define MCF_GPIO_PANPAR_AN7_GPIO (0) -#define MCF_GPIO_PANPAR_AN7_AN7 (0x80) - -/* Bit definitions and macros for MCF_GPIO_PORTAS */ -#define MCF_GPIO_PORTAS_PORTAS0 (0x1) -#define MCF_GPIO_PORTAS_PORTAS1 (0x2) -#define MCF_GPIO_PORTAS_PORTAS2 (0x4) -#define MCF_GPIO_PORTAS_PORTAS3 (0x8) - -/* Bit definitions and macros for MCF_GPIO_DDRAS */ -#define MCF_GPIO_DDRAS_DDRAS0 (0x1) -#define MCF_GPIO_DDRAS_DDRAS1 (0x2) -#define MCF_GPIO_DDRAS_DDRAS2 (0x4) -#define MCF_GPIO_DDRAS_DDRAS3 (0x8) - -/* Bit definitions and macros for MCF_GPIO_SETAS */ -#define MCF_GPIO_SETAS_SETAS0 (0x1) -#define MCF_GPIO_SETAS_SETAS1 (0x2) -#define MCF_GPIO_SETAS_SETAS2 (0x4) -#define MCF_GPIO_SETAS_SETAS3 (0x8) - -/* Bit definitions and macros for MCF_GPIO_CLRAS */ -#define MCF_GPIO_CLRAS_CLRAS0 (0x1) -#define MCF_GPIO_CLRAS_CLRAS1 (0x2) -#define MCF_GPIO_CLRAS_CLRAS2 (0x4) -#define MCF_GPIO_CLRAS_CLRAS3 (0x8) - -/* Bit definitions and macros for MCF_GPIO_PASPAR */ -#define MCF_GPIO_PASPAR_PASPAR0(x) (((x)&0x3)<<0) -#define MCF_GPIO_PASPAR_SCL_GPIO (0) -#define MCF_GPIO_PASPAR_SCL_SCL (0x1) -#define MCF_GPIO_PASPAR_SCL_CANTX (0x2) -#define MCF_GPIO_PASPAR_SCL_UTXD2 (0x3) -#define MCF_GPIO_PASPAR_PASPAR1(x) (((x)&0x3)<<0x2) -#define MCF_GPIO_PASPAR_SDA_GPIO (0) -#define MCF_GPIO_PASPAR_SDA_SDA (0x4) -#define MCF_GPIO_PASPAR_SDA_CANRX (0x8) -#define MCF_GPIO_PASPAR_SDA_URXD2 (0xC) -#define MCF_GPIO_PASPAR_PASPAR2(x) (((x)&0x3)<<0x4) -#define MCF_GPIO_PASPAR_SYNCB_GPIO (0) -#define MCF_GPIO_PASPAR_SYNCB_SYNCB (0x10) -#define MCF_GPIO_PASPAR_SYNCB_CANTX (0x20) -#define MCF_GPIO_PASPAR_SYNCB_FEC_MDC (0x30) -#define MCF_GPIO_PASPAR_PASPAR3(x) (((x)&0x3)<<0x6) -#define MCF_GPIO_PASPAR_SYNCA_GPIO (0) -#define MCF_GPIO_PASPAR_SYNCA_SYNCA (0x40) -#define MCF_GPIO_PASPAR_SYNCA_CANRX (0x80) -#define MCF_GPIO_PASPAR_SYNC_FEC_MDIO (0xC0) - -/* Bit definitions and macros for MCF_GPIO_PORTQS */ -#define MCF_GPIO_PORTQS_PORTQS0 (0x1) -#define MCF_GPIO_PORTQS_PORTQS1 (0x2) -#define MCF_GPIO_PORTQS_PORTQS2 (0x4) -#define MCF_GPIO_PORTQS_PORTQS3 (0x8) -#define MCF_GPIO_PORTQS_PORTQS4 (0x10) -#define MCF_GPIO_PORTQS_PORTQS5 (0x20) -#define MCF_GPIO_PORTQS_PORTQS6 (0x40) - -/* Bit definitions and macros for MCF_GPIO_DDRQS */ -#define MCF_GPIO_DDRQS_DDRQS0 (0x1) -#define MCF_GPIO_DDRQS_DDRQS1 (0x2) -#define MCF_GPIO_DDRQS_DDRQS2 (0x4) -#define MCF_GPIO_DDRQS_DDRQS3 (0x8) -#define MCF_GPIO_DDRQS_DDRQS4 (0x10) -#define MCF_GPIO_DDRQS_DDRQS5 (0x20) -#define MCF_GPIO_DDRQS_DDRQS6 (0x40) - -/* Bit definitions and macros for MCF_GPIO_SETQS */ -#define MCF_GPIO_SETQS_SETQS0 (0x1) -#define MCF_GPIO_SETQS_SETQS1 (0x2) -#define MCF_GPIO_SETQS_SETQS2 (0x4) -#define MCF_GPIO_SETQS_SETQS3 (0x8) -#define MCF_GPIO_SETQS_SETQS4 (0x10) -#define MCF_GPIO_SETQS_SETQS5 (0x20) -#define MCF_GPIO_SETQS_SETQS6 (0x40) - -/* Bit definitions and macros for MCF_GPIO_CLRQS */ -#define MCF_GPIO_CLRQS_CLRQS0 (0x1) -#define MCF_GPIO_CLRQS_CLRQS1 (0x2) -#define MCF_GPIO_CLRQS_CLRQS2 (0x4) -#define MCF_GPIO_CLRQS_CLRQS3 (0x8) -#define MCF_GPIO_CLRQS_CLRQS4 (0x10) -#define MCF_GPIO_CLRQS_CLRQS5 (0x20) -#define MCF_GPIO_CLRQS_CLRQS6 (0x40) - -/* Bit definitions and macros for MCF_GPIO_PQSPAR */ -#define MCF_GPIO_PQSPAR_PQSPAR0(x) (((x)&0x3)<<0) -#define MCF_GPIO_PQSPAR_QSPI_DOUT_GPIO (0) -#define MCF_GPIO_PQSPAR_QSPI_DOUT_DOUT (0x1) -#define MCF_GPIO_PQSPAR_QSPI_DOUT_CANTX (0x2) -#define MCF_GPIO_PQSPAR_QSPI_DOUT_UTXD1 (0x3) -#define MCF_GPIO_PQSPAR_PQSPAR1(x) (((x)&0x3)<<0x2) -#define MCF_GPIO_PQSPAR_QSPI_DIN_GPIO (0) -#define MCF_GPIO_PQSPAR_QSPI_DIN_DIN (0x4) -#define MCF_GPIO_PQSPAR_QSPI_DIN_CANRX (0x8) -#define MCF_GPIO_PQSPAR_QSPI_DIN_URXD1 (0xC) -#define MCF_GPIO_PQSPAR_PQSPAR2(x) (((x)&0x3)<<0x4) -#define MCF_GPIO_PQSPAR_QSPI_CLK_GPIO (0) -#define MCF_GPIO_PQSPAR_QSPI_CLK_CLK (0x10) -#define MCF_GPIO_PQSPAR_QSPI_CLK_SCL (0x20) -#define MCF_GPIO_PQSPAR_QSPI_CLK_URTS1 (0x30) -#define MCF_GPIO_PQSPAR_PQSPAR3(x) (((x)&0x3)<<0x6) -#define MCF_GPIO_PQSPAR_QSPI_CS0_GPIO (0) -#define MCF_GPIO_PQSPAR_QSPI_CS0_CS0 (0x40) -#define MCF_GPIO_PQSPAR_QSPI_CS0_SDA (0x80) -#define MCF_GPIO_PQSPAR_QSPI_CS0_UCTS1 (0xC0) -#define MCF_GPIO_PQSPAR_PQSPAR4(x) (((x)&0x3)<<0x8) -#define MCF_GPIO_PQSPAR_QSPI_CS1_GPIO (0) -#define MCF_GPIO_PQSPAR_QSPI_CS1_CS1 (0x100) -#define MCF_GPIO_PQSPAR_QSPI_CS1_FEC_TXEN (0x300) -#define MCF_GPIO_PQSPAR_PQSPAR5(x) (((x)&0x3)<<0xA) -#define MCF_GPIO_PQSPAR_QSPI_CS2_GPIO (0) -#define MCF_GPIO_PQSPAR_QSPI_CS2_CS2 (0x400) -#define MCF_GPIO_PQSPAR_QSPI_CS2_FEC_TXCLK (0xC00) -#define MCF_GPIO_PQSPAR_PQSPAR6(x) (((x)&0x3)<<0xC) -#define MCF_GPIO_PQSPAR_QSPI_CS3_GPIO (0) -#define MCF_GPIO_PQSPAR_QSPI_CS3_CS3 (0x1000) -#define MCF_GPIO_PQSPAR_QSPI_CS3_SYNCA (0x2000) -#define MCF_GPIO_PQSPAR_QSPI_CS3_SYNCB (0x3000) - -/* Bit definitions and macros for MCF_GPIO_PORTTA */ -#define MCF_GPIO_PORTTA_PORTTA0 (0x1) -#define MCF_GPIO_PORTTA_PORTTA1 (0x2) -#define MCF_GPIO_PORTTA_PORTTA2 (0x4) -#define MCF_GPIO_PORTTA_PORTTA3 (0x8) - -/* Bit definitions and macros for MCF_GPIO_DDRTA */ -#define MCF_GPIO_DDRTA_DDRTA0 (0x1) -#define MCF_GPIO_DDRTA_DDRTA1 (0x2) -#define MCF_GPIO_DDRTA_DDRTA2 (0x4) -#define MCF_GPIO_DDRTA_DDRTA3 (0x8) - -/* Bit definitions and macros for MCF_GPIO_SETTA */ -#define MCF_GPIO_SETTA_SETTA0 (0x1) -#define MCF_GPIO_SETTA_SETTA1 (0x2) -#define MCF_GPIO_SETTA_SETTA2 (0x4) -#define MCF_GPIO_SETTA_SETTA3 (0x8) - -/* Bit definitions and macros for MCF_GPIO_CLRTA */ -#define MCF_GPIO_CLRTA_CLRTA0 (0x1) -#define MCF_GPIO_CLRTA_CLRTA1 (0x2) -#define MCF_GPIO_CLRTA_CLRTA2 (0x4) -#define MCF_GPIO_CLRTA_CLRTA3 (0x8) - -/* Bit definitions and macros for MCF_GPIO_PTAPAR */ -#define MCF_GPIO_PTAPAR_PTAPAR0(x) (((x)&0x3)<<0) -#define MCF_GPIO_PTAPAR_GPT0_GPIO (0) -#define MCF_GPIO_PTAPAR_GPT0_GPT0 (0x1) -#define MCF_GPIO_PTAPAR_GPT0_FEC_TXER (0x2) -#define MCF_GPIO_PTAPAR_GPT0_PWM1 (0x3) -#define MCF_GPIO_PTAPAR_PTAPAR1(x) (((x)&0x3)<<0x2) -#define MCF_GPIO_PTAPAR_GPT1_GPIO (0) -#define MCF_GPIO_PTAPAR_GPT1_GPT1 (0x4) -#define MCF_GPIO_PTAPAR_GPT1_FEC_TXD1 (0x8) -#define MCF_GPIO_PTAPAR_GPT1_PWM3 (0xC) -#define MCF_GPIO_PTAPAR_PTAPAR2(x) (((x)&0x3)<<0x4) -#define MCF_GPIO_PTAPAR_GPT2_GPIO (0) -#define MCF_GPIO_PTAPAR_GPT2_GPT2 (0x10) -#define MCF_GPIO_PTAPAR_GPT2_FEC_TXD2 (0x20) -#define MCF_GPIO_PTAPAR_GPT2_PWM5 (0x30) -#define MCF_GPIO_PTAPAR_PTAPAR3(x) (((x)&0x3)<<0x6) -#define MCF_GPIO_PTAPAR_GPT3_GPIO (0) -#define MCF_GPIO_PTAPAR_GPT3_GPT3 (0x40) -#define MCF_GPIO_PTAPAR_GPT3_FEC_TXD3 (0x80) -#define MCF_GPIO_PTAPAR_GPT3_PWM7 (0xC0) - -/* Bit definitions and macros for MCF_GPIO_PORTTC */ -#define MCF_GPIO_PORTTC_PORTTC0 (0x1) -#define MCF_GPIO_PORTTC_PORTTC1 (0x2) -#define MCF_GPIO_PORTTC_PORTTC2 (0x4) -#define MCF_GPIO_PORTTC_PORTTC3 (0x8) - -/* Bit definitions and macros for MCF_GPIO_DDRTC */ -#define MCF_GPIO_DDRTC_DDRTC0 (0x1) -#define MCF_GPIO_DDRTC_DDRTC1 (0x2) -#define MCF_GPIO_DDRTC_DDRTC2 (0x4) -#define MCF_GPIO_DDRTC_DDRTC3 (0x8) - -/* Bit definitions and macros for MCF_GPIO_SETTC */ -#define MCF_GPIO_SETTC_SETTC0 (0x1) -#define MCF_GPIO_SETTC_SETTC1 (0x2) -#define MCF_GPIO_SETTC_SETTC2 (0x4) -#define MCF_GPIO_SETTC_SETTC3 (0x8) - -/* Bit definitions and macros for MCF_GPIO_CLRTC */ -#define MCF_GPIO_CLRTC_CLRTC0 (0x1) -#define MCF_GPIO_CLRTC_CLRTC1 (0x2) -#define MCF_GPIO_CLRTC_CLRTC2 (0x4) -#define MCF_GPIO_CLRTC_CLRTC3 (0x8) - -/* Bit definitions and macros for MCF_GPIO_PTCPAR */ -#define MCF_GPIO_PTCPAR_PTCPAR0(x) (((x)&0x3)<<0) -#define MCF_GPIO_PTCPAR_DTIN0_GPIO (0) -#define MCF_GPIO_PTCPAR_DTIN0_DTIN0 (0x1) -#define MCF_GPIO_PTCPAR_DTIN0_DTOUT0 (0x2) -#define MCF_GPIO_PTCPAR_DTIN0_PWM0 (0x3) -#define MCF_GPIO_PTCPAR_PTCPAR1(x) (((x)&0x3)<<0x2) -#define MCF_GPIO_PTCPAR_DTIN1_GPIO (0) -#define MCF_GPIO_PTCPAR_DTIN1_DTIN1 (0x4) -#define MCF_GPIO_PTCPAR_DTIN1_DTOUT1 (0x8) -#define MCF_GPIO_PTCPAR_DTIN1_PWM2 (0xC) -#define MCF_GPIO_PTCPAR_PTCPAR2(x) (((x)&0x3)<<0x4) -#define MCF_GPIO_PTCPAR_DTIN2_GPIO (0) -#define MCF_GPIO_PTCPAR_DTIN2_DTIN2 (0x10) -#define MCF_GPIO_PTCPAR_DTIN2_DTOUT2 (0x20) -#define MCF_GPIO_PTCPAR_DTIN2_PWM4 (0x30) -#define MCF_GPIO_PTCPAR_PTCPAR3(x) (((x)&0x3)<<0x6) -#define MCF_GPIO_PTCPAR_DTIN3_GPIO (0) -#define MCF_GPIO_PTCPAR_DTIN3_DTIN3 (0x40) -#define MCF_GPIO_PTCPAR_DTIN3_DTOUT3 (0x80) -#define MCF_GPIO_PTCPAR_DTIN3_PWM6 (0xC0) - -/* Bit definitions and macros for MCF_GPIO_PORTTD */ -#define MCF_GPIO_PORTTD_PORTTD0 (0x1) -#define MCF_GPIO_PORTTD_PORTTD1 (0x2) -#define MCF_GPIO_PORTTD_PORTTD2 (0x4) -#define MCF_GPIO_PORTTD_PORTTD3 (0x8) - -/* Bit definitions and macros for MCF_GPIO_DDRTD */ -#define MCF_GPIO_DDRTD_DDRTD0 (0x1) -#define MCF_GPIO_DDRTD_DDRTD1 (0x2) -#define MCF_GPIO_DDRTD_DDRTD2 (0x4) -#define MCF_GPIO_DDRTD_DDRTD3 (0x8) - -/* Bit definitions and macros for MCF_GPIO_SETTD */ -#define MCF_GPIO_SETTD_SETTD0 (0x1) -#define MCF_GPIO_SETTD_SETTD1 (0x2) -#define MCF_GPIO_SETTD_SETTD2 (0x4) -#define MCF_GPIO_SETTD_SETTD3 (0x8) - -/* Bit definitions and macros for MCF_GPIO_CLRTD */ -#define MCF_GPIO_CLRTD_CLRTD0 (0x1) -#define MCF_GPIO_CLRTD_CLRTD1 (0x2) -#define MCF_GPIO_CLRTD_CLRTD2 (0x4) -#define MCF_GPIO_CLRTD_CLRTD3 (0x8) - -/* Bit definitions and macros for MCF_GPIO_PTDPAR */ -#define MCF_GPIO_PTDPAR_PTDPAR0 (0x1) -#define MCF_GPIO_PTDPAR_PWM1_GPIO (0) -#define MCF_GPIO_PTDPAR_PWM1_PWM1 (0x1) -#define MCF_GPIO_PTDPAR_PTDPAR1 (0x2) -#define MCF_GPIO_PTDPAR_PWM3_GPIO (0) -#define MCF_GPIO_PTDPAR_PWM3_PWM3 (0x2) -#define MCF_GPIO_PTDPAR_PTDPAR2 (0x4) -#define MCF_GPIO_PTDPAR_PWM5_GPIO (0) -#define MCF_GPIO_PTDPAR_PWM5_PWM5 (0x4) -#define MCF_GPIO_PTDPAR_PTDPAR3 (0x8) -#define MCF_GPIO_PTDPAR_PWM7_GPIO (0) -#define MCF_GPIO_PTDPAR_PWM7_PWM7 (0x8) - -/* Bit definitions and macros for MCF_GPIO_PORTUA */ -#define MCF_GPIO_PORTUA_PORTUA0 (0x1) -#define MCF_GPIO_PORTUA_PORTUA1 (0x2) -#define MCF_GPIO_PORTUA_PORTUA2 (0x4) -#define MCF_GPIO_PORTUA_PORTUA3 (0x8) - -/* Bit definitions and macros for MCF_GPIO_DDRUA */ -#define MCF_GPIO_DDRUA_DDRUA0 (0x1) -#define MCF_GPIO_DDRUA_DDRUA1 (0x2) -#define MCF_GPIO_DDRUA_DDRUA2 (0x4) -#define MCF_GPIO_DDRUA_DDRUA3 (0x8) - -/* Bit definitions and macros for MCF_GPIO_SETUA */ -#define MCF_GPIO_SETUA_SETUA0 (0x1) -#define MCF_GPIO_SETUA_SETUA1 (0x2) -#define MCF_GPIO_SETUA_SETUA2 (0x4) -#define MCF_GPIO_SETUA_SETUA3 (0x8) - -/* Bit definitions and macros for MCF_GPIO_CLRUA */ -#define MCF_GPIO_CLRUA_CLRUA0 (0x1) -#define MCF_GPIO_CLRUA_CLRUA1 (0x2) -#define MCF_GPIO_CLRUA_CLRUA2 (0x4) -#define MCF_GPIO_CLRUA_CLRUA3 (0x8) - -/* Bit definitions and macros for MCF_GPIO_PUAPAR */ -#define MCF_GPIO_PUAPAR_PUAPAR0(x) (((x)&0x3)<<0) -#define MCF_GPIO_PUAPAR_UTXD0_GPIO (0) -#define MCF_GPIO_PUAPAR_UTXD0_UTXD0 (0x1) -#define MCF_GPIO_PUAPAR_UTXD0_FEC_CRS (0x3) -#define MCF_GPIO_PUAPAR_PUAPAR1(x) (((x)&0x3)<<0x2) -#define MCF_GPIO_PUAPAR_URXD0_GPIO (0) -#define MCF_GPIO_PUAPAR_URXD0_URXD0 (0x4) -#define MCF_GPIO_PUAPAR_URXD0_FEC_RXD0 (0xC) -#define MCF_GPIO_PUAPAR_PUAPAR2(x) (((x)&0x3)<<0x4) -#define MCF_GPIO_PUAPAR_URTS0_GPIO (0) -#define MCF_GPIO_PUAPAR_URTS0_URTS0 (0x10) -#define MCF_GPIO_PUAPAR_URTS0_CANTX (0x20) -#define MCF_GPIO_PUAPAR_URTS0_FEC_RXDV (0x30) -#define MCF_GPIO_PUAPAR_PUAPAR3(x) (((x)&0x3)<<0x6) -#define MCF_GPIO_PUAPAR_UCTS0_GPIO (0) -#define MCF_GPIO_PUAPAR_UCTS0_UCTS0 (0x40) -#define MCF_GPIO_PUAPAR_UCTS0_CANRX (0x80) -#define MCF_GPIO_PUAPAR_UCTS0_FEC_RXCLK (0xC0) - -/* Bit definitions and macros for MCF_GPIO_PORTUB */ -#define MCF_GPIO_PORTUB_PORTUB0 (0x1) -#define MCF_GPIO_PORTUB_PORTUB1 (0x2) -#define MCF_GPIO_PORTUB_PORTUB2 (0x4) -#define MCF_GPIO_PORTUB_PORTUB3 (0x8) - -/* Bit definitions and macros for MCF_GPIO_DDRUB */ -#define MCF_GPIO_DDRUB_DDRUB0 (0x1) -#define MCF_GPIO_DDRUB_DDRUB1 (0x2) -#define MCF_GPIO_DDRUB_DDRUB2 (0x4) -#define MCF_GPIO_DDRUB_DDRUB3 (0x8) - -/* Bit definitions and macros for MCF_GPIO_SETUB */ -#define MCF_GPIO_SETUB_SETUB0 (0x1) -#define MCF_GPIO_SETUB_SETUB1 (0x2) -#define MCF_GPIO_SETUB_SETUB2 (0x4) -#define MCF_GPIO_SETUB_SETUB3 (0x8) - -/* Bit definitions and macros for MCF_GPIO_CLRUB */ -#define MCF_GPIO_CLRUB_CLRUB0 (0x1) -#define MCF_GPIO_CLRUB_CLRUB1 (0x2) -#define MCF_GPIO_CLRUB_CLRUB2 (0x4) -#define MCF_GPIO_CLRUB_CLRUB3 (0x8) - -/* Bit definitions and macros for MCF_GPIO_PUBPAR */ -#define MCF_GPIO_PUBPAR_PUBPAR0(x) (((x)&0x3)<<0) -#define MCF_GPIO_PUBPAR_UTXD1_GPIO (0) -#define MCF_GPIO_PUBPAR_UTXD1_UTXD1 (0x1) -#define MCF_GPIO_PUBPAR_UTXD1_FEC_COL (0x3) -#define MCF_GPIO_PUBPAR_PUBPAR1(x) (((x)&0x3)<<0x2) -#define MCF_GPIO_PUBPAR_URXD1_GPIO (0) -#define MCF_GPIO_PUBPAR_URXD1_URXD1 (0x4) -#define MCF_GPIO_PUBPAR_URXD1_FEC_TXD0 (0xC) -#define MCF_GPIO_PUBPAR_PUBPAR2(x) (((x)&0x3)<<0x4) -#define MCF_GPIO_PUBPAR_URTS1_GPIO (0) -#define MCF_GPIO_PUBPAR_URTS1_URTS1 (0x10) -#define MCF_GPIO_PUBPAR_URTS1_SYNCB (0x20) -#define MCF_GPIO_PUBPAR_URTS1_UTXD2 (0x30) -#define MCF_GPIO_PUBPAR_PUBPAR3(x) (((x)&0x3)<<0x6) -#define MCF_GPIO_PUBPAR_UCTS1_GPIO (0) -#define MCF_GPIO_PUBPAR_UCTS1_UCTS1 (0x40) -#define MCF_GPIO_PUBPAR_UCTS1_SYNCA (0x80) -#define MCF_GPIO_PUBPAR_UCTS1_URXD2 (0xC0) - -/* Bit definitions and macros for MCF_GPIO_PORTUC */ -#define MCF_GPIO_PORTUC_PORTUC0 (0x1) -#define MCF_GPIO_PORTUC_PORTUC1 (0x2) -#define MCF_GPIO_PORTUC_PORTUC2 (0x4) -#define MCF_GPIO_PORTUC_PORTUC3 (0x8) - -/* Bit definitions and macros for MCF_GPIO_DDRUC */ -#define MCF_GPIO_DDRUC_DDRUC0 (0x1) -#define MCF_GPIO_DDRUC_DDRUC1 (0x2) -#define MCF_GPIO_DDRUC_DDRUC2 (0x4) -#define MCF_GPIO_DDRUC_DDRUC3 (0x8) - -/* Bit definitions and macros for MCF_GPIO_SETUC */ -#define MCF_GPIO_SETUC_SETUC0 (0x1) -#define MCF_GPIO_SETUC_SETUC1 (0x2) -#define MCF_GPIO_SETUC_SETUC2 (0x4) -#define MCF_GPIO_SETUC_SETUC3 (0x8) - -/* Bit definitions and macros for MCF_GPIO_CLRUC */ -#define MCF_GPIO_CLRUC_CLRUC0 (0x1) -#define MCF_GPIO_CLRUC_CLRUC1 (0x2) -#define MCF_GPIO_CLRUC_CLRUC2 (0x4) -#define MCF_GPIO_CLRUC_CLRUC3 (0x8) - -/* Bit definitions and macros for MCF_GPIO_PUCPAR */ -#define MCF_GPIO_PUCPAR_PUCPAR0 (0x1) -#define MCF_GPIO_PUCPAR_UTXD2_GPIO (0) -#define MCF_GPIO_PUCPAR_UTXD2_UTXD2 (0x1) -#define MCF_GPIO_PUCPAR_PUCPAR1 (0x2) -#define MCF_GPIO_PUCPAR_URXD2_GPIO (0) -#define MCF_GPIO_PUCPAR_URXD2_URXD2 (0x2) -#define MCF_GPIO_PUCPAR_PUCPAR2 (0x4) -#define MCF_GPIO_PUCPAR_URTS2_GPIO (0) -#define MCF_GPIO_PUCPAR_URTS2_URTS2 (0x4) -#define MCF_GPIO_PUCPAR_PUCPAR3 (0x8) -#define MCF_GPIO_PUCPAR_UCTS2_GPIO (0) -#define MCF_GPIO_PUCPAR_UCTS2_UCTS2 (0x8) - -/* Bit definitions and macros for MCF_GPIO_PORTDD */ -#define MCF_GPIO_PORTDD_PORTDD0 (0x1) -#define MCF_GPIO_PORTDD_PORTDD1 (0x2) -#define MCF_GPIO_PORTDD_PORTDD2 (0x4) -#define MCF_GPIO_PORTDD_PORTDD3 (0x8) -#define MCF_GPIO_PORTDD_PORTDD4 (0x10) -#define MCF_GPIO_PORTDD_PORTDD5 (0x20) -#define MCF_GPIO_PORTDD_PORTDD6 (0x40) -#define MCF_GPIO_PORTDD_PORTDD7 (0x80) - -/* Bit definitions and macros for MCF_GPIO_DDRDD */ -#define MCF_GPIO_DDRDD_DDRDD0 (0x1) -#define MCF_GPIO_DDRDD_DDRDD1 (0x2) -#define MCF_GPIO_DDRDD_DDRDD2 (0x4) -#define MCF_GPIO_DDRDD_DDRDD3 (0x8) -#define MCF_GPIO_DDRDD_DDRDD4 (0x10) -#define MCF_GPIO_DDRDD_DDRDD5 (0x20) -#define MCF_GPIO_DDRDD_DDRDD6 (0x40) -#define MCF_GPIO_DDRDD_DDRDD7 (0x80) - -/* Bit definitions and macros for MCF_GPIO_SETDD */ -#define MCF_GPIO_SETDD_SETDD0 (0x1) -#define MCF_GPIO_SETDD_SETDD1 (0x2) -#define MCF_GPIO_SETDD_SETDD2 (0x4) -#define MCF_GPIO_SETDD_SETDD3 (0x8) -#define MCF_GPIO_SETDD_SETDD4 (0x10) -#define MCF_GPIO_SETDD_SETDD5 (0x20) -#define MCF_GPIO_SETDD_SETDD6 (0x40) -#define MCF_GPIO_SETDD_SETDD7 (0x80) - -/* Bit definitions and macros for MCF_GPIO_CLRDD */ -#define MCF_GPIO_CLRDD_CLRDD0 (0x1) -#define MCF_GPIO_CLRDD_CLRDD1 (0x2) -#define MCF_GPIO_CLRDD_CLRDD2 (0x4) -#define MCF_GPIO_CLRDD_CLRDD3 (0x8) -#define MCF_GPIO_CLRDD_CLRDD4 (0x10) -#define MCF_GPIO_CLRDD_CLRDD5 (0x20) -#define MCF_GPIO_CLRDD_CLRDD6 (0x40) -#define MCF_GPIO_CLRDD_CLRDD7 (0x80) - -/* Bit definitions and macros for MCF_GPIO_PDDPAR */ -#define MCF_GPIO_PDDPAR_PDDPAR0 (0x1) -#define MCF_GPIO_PDDPAR_PDD0_GPIO (0) -#define MCF_GPIO_PDDPAR_PDD0_PST0 (0x1) -#define MCF_GPIO_PDDPAR_PDDPAR1 (0x2) -#define MCF_GPIO_PDDPAR_PDD1_GPIO (0) -#define MCF_GPIO_PDDPAR_PDD1_PST1 (0x2) -#define MCF_GPIO_PDDPAR_PDDPAR2 (0x4) -#define MCF_GPIO_PDDPAR_PDD2_GPIO (0) -#define MCF_GPIO_PDDPAR_PDD2_PST2 (0x4) -#define MCF_GPIO_PDDPAR_PDDPAR3 (0x8) -#define MCF_GPIO_PDDPAR_PDD3_GPIO (0) -#define MCF_GPIO_PDDPAR_PDD3_PST3 (0x8) -#define MCF_GPIO_PDDPAR_PDDPAR4 (0x10) -#define MCF_GPIO_PDDPAR_PDD4_GPIO (0) -#define MCF_GPIO_PDDPAR_PDD4_DDATA0 (0x10) -#define MCF_GPIO_PDDPAR_PDDPAR5 (0x20) -#define MCF_GPIO_PDDPAR_PDD5_GPIO (0) -#define MCF_GPIO_PDDPAR_PDD5_DDATA1 (0x20) -#define MCF_GPIO_PDDPAR_PDDPAR6 (0x40) -#define MCF_GPIO_PDDPAR_PDD6_GPIO (0) -#define MCF_GPIO_PDDPAR_PDD6_DDATA2 (0x40) -#define MCF_GPIO_PDDPAR_PDDPAR7 (0x80) -#define MCF_GPIO_PDDPAR_PDD7_GPIO (0) -#define MCF_GPIO_PDDPAR_PDD7_DDATA3 (0x80) - -/* Bit definitions and macros for MCF_GPIO_PORTLD */ -#define MCF_GPIO_PORTLD_PORTLD0 (0x1) -#define MCF_GPIO_PORTLD_PORTLD1 (0x2) -#define MCF_GPIO_PORTLD_PORTLD2 (0x4) -#define MCF_GPIO_PORTLD_PORTLD3 (0x8) -#define MCF_GPIO_PORTLD_PORTLD4 (0x10) -#define MCF_GPIO_PORTLD_PORTLD5 (0x20) -#define MCF_GPIO_PORTLD_PORTLD6 (0x40) - -/* Bit definitions and macros for MCF_GPIO_DDRLD */ -#define MCF_GPIO_DDRLD_DDRLD0 (0x1) -#define MCF_GPIO_DDRLD_DDRLD1 (0x2) -#define MCF_GPIO_DDRLD_DDRLD2 (0x4) -#define MCF_GPIO_DDRLD_DDRLD3 (0x8) -#define MCF_GPIO_DDRLD_DDRLD4 (0x10) -#define MCF_GPIO_DDRLD_DDRLD5 (0x20) -#define MCF_GPIO_DDRLD_DDRLD6 (0x40) - -/* Bit definitions and macros for MCF_GPIO_SETLD */ -#define MCF_GPIO_SETLD_SETLD0 (0x1) -#define MCF_GPIO_SETLD_SETLD1 (0x2) -#define MCF_GPIO_SETLD_SETLD2 (0x4) -#define MCF_GPIO_SETLD_SETLD3 (0x8) -#define MCF_GPIO_SETLD_SETLD4 (0x10) -#define MCF_GPIO_SETLD_SETLD5 (0x20) -#define MCF_GPIO_SETLD_SETLD6 (0x40) - -/* Bit definitions and macros for MCF_GPIO_CLRLD */ -#define MCF_GPIO_CLRLD_CLRLD0 (0x1) -#define MCF_GPIO_CLRLD_CLRLD1 (0x2) -#define MCF_GPIO_CLRLD_CLRLD2 (0x4) -#define MCF_GPIO_CLRLD_CLRLD3 (0x8) -#define MCF_GPIO_CLRLD_CLRLD4 (0x10) -#define MCF_GPIO_CLRLD_CLRLD5 (0x20) -#define MCF_GPIO_CLRLD_CLRLD6 (0x40) - -/* Bit definitions and macros for MCF_GPIO_PLDPAR */ -#define MCF_GPIO_PLDPAR_PLDPAR0 (0x1) -#define MCF_GPIO_PLDPAR_ACTLED_GPIO (0) -#define MCF_GPIO_PLDPAR_ACTLED_ACTLED (0x1) -#define MCF_GPIO_PLDPAR_PLDPAR1 (0x2) -#define MCF_GPIO_PLDPAR_LINKLED_GPIO (0) -#define MCF_GPIO_PLDPAR_LINKLED_LINKLED (0x2) -#define MCF_GPIO_PLDPAR_PLDPAR2 (0x4) -#define MCF_GPIO_PLDPAR_SPDLED_GPIO (0) -#define MCF_GPIO_PLDPAR_SPDLED_SPDLED (0x4) -#define MCF_GPIO_PLDPAR_PLDPAR3 (0x8) -#define MCF_GPIO_PLDPAR_DUPLED_GPIO (0) -#define MCF_GPIO_PLDPAR_DUPLED_DUPLED (0x8) -#define MCF_GPIO_PLDPAR_PLDPAR4 (0x10) -#define MCF_GPIO_PLDPAR_COLLED_GPIO (0) -#define MCF_GPIO_PLDPAR_COLLED_COLLED (0x10) -#define MCF_GPIO_PLDPAR_PLDPAR5 (0x20) -#define MCF_GPIO_PLDPAR_RXLED_GPIO (0) -#define MCF_GPIO_PLDPAR_RXLED_RXLED (0x20) -#define MCF_GPIO_PLDPAR_PLDPAR6 (0x40) -#define MCF_GPIO_PLDPAR_TXLED_GPIO (0) -#define MCF_GPIO_PLDPAR_TXLED_TXLED (0x40) - -/* Bit definitions and macros for MCF_GPIO_PORTGP */ -#define MCF_GPIO_PORTGP_PORTGP0 (0x1) -#define MCF_GPIO_PORTGP_PORTGP1 (0x2) -#define MCF_GPIO_PORTGP_PORTGP2 (0x4) -#define MCF_GPIO_PORTGP_PORTGP3 (0x8) -#define MCF_GPIO_PORTGP_PORTGP4 (0x10) -#define MCF_GPIO_PORTGP_PORTGP5 (0x20) -#define MCF_GPIO_PORTGP_PORTGP6 (0x40) -#define MCF_GPIO_PORTGP_PORTGP7 (0x80) - -/* Bit definitions and macros for MCF_GPIO_DDRGP */ -#define MCF_GPIO_DDRGP_DDRGP0 (0x1) -#define MCF_GPIO_DDRGP_DDRGP1 (0x2) -#define MCF_GPIO_DDRGP_DDRGP2 (0x4) -#define MCF_GPIO_DDRGP_DDRGP3 (0x8) -#define MCF_GPIO_DDRGP_DDRGP4 (0x10) -#define MCF_GPIO_DDRGP_DDRGP5 (0x20) -#define MCF_GPIO_DDRGP_DDRGP6 (0x40) -#define MCF_GPIO_DDRGP_DDRGP7 (0x80) - -/* Bit definitions and macros for MCF_GPIO_SETGP */ -#define MCF_GPIO_SETGP_SETGP0 (0x1) -#define MCF_GPIO_SETGP_SETGP1 (0x2) -#define MCF_GPIO_SETGP_SETGP2 (0x4) -#define MCF_GPIO_SETGP_SETGP3 (0x8) -#define MCF_GPIO_SETGP_SETGP4 (0x10) -#define MCF_GPIO_SETGP_SETGP5 (0x20) -#define MCF_GPIO_SETGP_SETGP6 (0x40) -#define MCF_GPIO_SETGP_SETGP7 (0x80) - -/* Bit definitions and macros for MCF_GPIO_CLRGP */ -#define MCF_GPIO_CLRGP_CLRGP0 (0x1) -#define MCF_GPIO_CLRGP_CLRGP1 (0x2) -#define MCF_GPIO_CLRGP_CLRGP2 (0x4) -#define MCF_GPIO_CLRGP_CLRGP3 (0x8) -#define MCF_GPIO_CLRGP_CLRGP4 (0x10) -#define MCF_GPIO_CLRGP_CLRGP5 (0x20) -#define MCF_GPIO_CLRGP_CLRGP6 (0x40) -#define MCF_GPIO_CLRGP_CLRGP7 (0x80) - -/* Bit definitions and macros for MCF_GPIO_PGPPAR */ -#define MCF_GPIO_PGPPAR_PGPPAR0 (0x1) -#define MCF_GPIO_PGPPAR_IRQ8_GPIO (0) -#define MCF_GPIO_PGPPAR_IRQ8_IRQ8 (0x1) -#define MCF_GPIO_PGPPAR_PGPPAR1 (0x2) -#define MCF_GPIO_PGPPAR_IRQ9_GPIO (0) -#define MCF_GPIO_PGPPAR_IRQ9_IRQ9 (0x2) -#define MCF_GPIO_PGPPAR_PGPPAR2 (0x4) -#define MCF_GPIO_PGPPAR_IRQ10_GPIO (0) -#define MCF_GPIO_PGPPAR_IRQ10_IRQ10 (0x4) -#define MCF_GPIO_PGPPAR_PGPPAR3 (0x8) -#define MCF_GPIO_PGPPAR_IRQ11_GPIO (0) -#define MCF_GPIO_PGPPAR_IRQ11_IRQ11 (0x8) -#define MCF_GPIO_PGPPAR_PGPPAR4 (0x10) -#define MCF_GPIO_PGPPAR_IRQ12_GPIO (0) -#define MCF_GPIO_PGPPAR_IRQ12_IRQ12 (0x10) -#define MCF_GPIO_PGPPAR_PGPPAR5 (0x20) -#define MCF_GPIO_PGPPAR_IRQ13_GPIO (0) -#define MCF_GPIO_PGPPAR_IRQ13_IRQ13 (0x20) -#define MCF_GPIO_PGPPAR_PGPPAR6 (0x40) -#define MCF_GPIO_PGPPAR_IRQ14_GPIO (0) -#define MCF_GPIO_PGPPAR_IRQ14_IRQ14 (0x40) -#define MCF_GPIO_PGPPAR_PGPPAR7 (0x80) -#define MCF_GPIO_PGPPAR_IRQ15_GPIO (0) -#define MCF_GPIO_PGPPAR_IRQ15_IRQ15 (0x80) - - -#endif /* __MCF52235_GPIO_H__ */ diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_GPTA.h b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_GPTA.h deleted file mode 100644 index 717943c7f..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_GPTA.h +++ /dev/null @@ -1,198 +0,0 @@ -/* Coldfire C Header File - * Copyright Freescale Semiconductor Inc - * All rights reserved. - * - * 2007/03/19 Revision: 0.91 - */ - -#ifndef __MCF52235_GPTA_H__ -#define __MCF52235_GPTA_H__ - - -/********************************************************************* -* -* General Purpose Timer Module (GPT) -* -*********************************************************************/ - -/* Register read/write macros */ -#define MCF_GPTA_GPTIOS (*(vuint8 *)(&__IPSBAR[0x1A0000])) -#define MCF_GPTA_GPTCFORC (*(vuint8 *)(&__IPSBAR[0x1A0001])) -#define MCF_GPTA_GPTOC3M (*(vuint8 *)(&__IPSBAR[0x1A0002])) -#define MCF_GPTA_GPTOC3D (*(vuint8 *)(&__IPSBAR[0x1A0003])) -#define MCF_GPTA_GPTCNT (*(vuint16*)(&__IPSBAR[0x1A0004])) -#define MCF_GPTA_GPTSCR1 (*(vuint8 *)(&__IPSBAR[0x1A0006])) -#define MCF_GPTA_GPTTOV (*(vuint8 *)(&__IPSBAR[0x1A0008])) -#define MCF_GPTA_GPTCTL1 (*(vuint8 *)(&__IPSBAR[0x1A0009])) -#define MCF_GPTA_GPTCTL2 (*(vuint8 *)(&__IPSBAR[0x1A000B])) -#define MCF_GPTA_GPTIE (*(vuint8 *)(&__IPSBAR[0x1A000C])) -#define MCF_GPTA_GPTSCR2 (*(vuint8 *)(&__IPSBAR[0x1A000D])) -#define MCF_GPTA_GPTFLG1 (*(vuint8 *)(&__IPSBAR[0x1A000E])) -#define MCF_GPTA_GPTFLG2 (*(vuint8 *)(&__IPSBAR[0x1A000F])) -#define MCF_GPTA_GPTC0 (*(vuint16*)(&__IPSBAR[0x1A0010])) -#define MCF_GPTA_GPTC1 (*(vuint16*)(&__IPSBAR[0x1A0012])) -#define MCF_GPTA_GPTC2 (*(vuint16*)(&__IPSBAR[0x1A0014])) -#define MCF_GPTA_GPTC3 (*(vuint16*)(&__IPSBAR[0x1A0016])) -#define MCF_GPTA_GPTPACTL (*(vuint8 *)(&__IPSBAR[0x1A0018])) -#define MCF_GPTA_GPTPAFLG (*(vuint8 *)(&__IPSBAR[0x1A0019])) -#define MCF_GPTA_GPTPACNT (*(vuint16*)(&__IPSBAR[0x1A001A])) -#define MCF_GPTA_GPTPORT (*(vuint8 *)(&__IPSBAR[0x1A001D])) -#define MCF_GPTA_GPTDDR (*(vuint8 *)(&__IPSBAR[0x1A001E])) -#define MCF_GPTA_GPTC(x) (*(vuint16*)(&__IPSBAR[0x1A0010 + ((x)*0x2)])) - - -/* Bit definitions and macros for MCF_GPTA_GPTIOS */ -#define MCF_GPTA_GPTIOS_IOS0 (0x1) -#define MCF_GPTA_GPTIOS_IOS1 (0x2) -#define MCF_GPTA_GPTIOS_IOS2 (0x4) -#define MCF_GPTA_GPTIOS_IOS3 (0x8) - -/* Bit definitions and macros for MCF_GPTA_GPTCFORC */ -#define MCF_GPTA_GPTCFORC_FOC0 (0x1) -#define MCF_GPTA_GPTCFORC_FOC1 (0x2) -#define MCF_GPTA_GPTCFORC_FOC2 (0x4) -#define MCF_GPTA_GPTCFORC_FOC3 (0x8) - -/* Bit definitions and macros for MCF_GPTA_GPTOC3M */ -#define MCF_GPTA_GPTOC3M_OC3M0 (0x1) -#define MCF_GPTA_GPTOC3M_OC3M1 (0x2) -#define MCF_GPTA_GPTOC3M_OC3M2 (0x4) -#define MCF_GPTA_GPTOC3M_OC3M3 (0x8) - -/* Bit definitions and macros for MCF_GPTA_GPTOC3D */ -#define MCF_GPTA_GPTOC3D_OC3D0 (0x1) -#define MCF_GPTA_GPTOC3D_OC3D1 (0x2) -#define MCF_GPTA_GPTOC3D_OC3D2 (0x4) -#define MCF_GPTA_GPTOC3D_OC3D3 (0x8) - -/* Bit definitions and macros for MCF_GPTA_GPTCNT */ -#define MCF_GPTA_GPTCNT_CNTR(x) (((x)&0xFFFF)<<0) - -/* Bit definitions and macros for MCF_GPTA_GPTSCR1 */ -#define MCF_GPTA_GPTSCR1_TFFCA (0x10) -#define MCF_GPTA_GPTSCR1_GPTEN (0x80) - -/* Bit definitions and macros for MCF_GPTA_GPTTOV */ -#define MCF_GPTA_GPTTOV_TOV0 (0x1) -#define MCF_GPTA_GPTTOV_TOV1 (0x2) -#define MCF_GPTA_GPTTOV_TOV2 (0x4) -#define MCF_GPTA_GPTTOV_TOV3 (0x8) - -/* Bit definitions and macros for MCF_GPTA_GPTCTL1 */ -#define MCF_GPTA_GPTCTL1_OL0 (0x1) -#define MCF_GPTA_GPTCTL1_OM0 (0x2) -#define MCF_GPTA_GPTCTL1_OL1 (0x4) -#define MCF_GPTA_GPTCTL1_OM1 (0x8) -#define MCF_GPTA_GPTCTL1_OL2 (0x10) -#define MCF_GPTA_GPTCTL1_OM2 (0x20) -#define MCF_GPTA_GPTCTL1_OL3 (0x40) -#define MCF_GPTA_GPTCTL1_OM3 (0x80) -#define MCF_GPTA_GPTCTL1_OUTPUT0_NOTHING (0) -#define MCF_GPTA_GPTCTL1_OUTPUT0_TOGGLE (0x1) -#define MCF_GPTA_GPTCTL1_OUTPUT0_CLEAR (0x2) -#define MCF_GPTA_GPTCTL1_OUTPUT0_SET (0x3) -#define MCF_GPTA_GPTCTL1_OUTPUT1_NOTHING (0) -#define MCF_GPTA_GPTCTL1_OUTPUT1_TOGGLE (0x4) -#define MCF_GPTA_GPTCTL1_OUTPUT1_CLEAR (0x8) -#define MCF_GPTA_GPTCTL1_OUTPUT1_SET (0xC) -#define MCF_GPTA_GPTCTL1_OUTPUT2_NOTHING (0) -#define MCF_GPTA_GPTCTL1_OUTPUT2_TOGGLE (0x10) -#define MCF_GPTA_GPTCTL1_OUTPUT2_CLEAR (0x20) -#define MCF_GPTA_GPTCTL1_OUTPUT2_SET (0x30) -#define MCF_GPTA_GPTCTL1_OUTPUT3_NOTHING (0) -#define MCF_GPTA_GPTCTL1_OUTPUT3_TOGGLE (0x40) -#define MCF_GPTA_GPTCTL1_OUTPUT3_CLEAR (0x80) -#define MCF_GPTA_GPTCTL1_OUTPUT3_SET (0xC0) - -/* Bit definitions and macros for MCF_GPTA_GPTCTL2 */ -#define MCF_GPTA_GPTCTL2_EDG0A (0x1) -#define MCF_GPTA_GPTCTL2_EDG0B (0x2) -#define MCF_GPTA_GPTCTL2_EDG1A (0x4) -#define MCF_GPTA_GPTCTL2_EDG1B (0x8) -#define MCF_GPTA_GPTCTL2_EDG2A (0x10) -#define MCF_GPTA_GPTCTL2_EDG2B (0x20) -#define MCF_GPTA_GPTCTL2_EDG3A (0x40) -#define MCF_GPTA_GPTCTL2_EDG3B (0x80) -#define MCF_GPTA_GPTCTL2_INPUT0_DISABLED (0) -#define MCF_GPTA_GPTCTL2_INPUT0_RISING (0x1) -#define MCF_GPTA_GPTCTL2_INPUT0_FALLING (0x2) -#define MCF_GPTA_GPTCTL2_INPUT0_ANY (0x3) -#define MCF_GPTA_GPTCTL2_INPUT1_DISABLED (0) -#define MCF_GPTA_GPTCTL2_INPUT1_RISING (0x4) -#define MCF_GPTA_GPTCTL2_INPUT1_FALLING (0x8) -#define MCF_GPTA_GPTCTL2_INPUT1_ANY (0xC) -#define MCF_GPTA_GPTCTL2_INPUT2_DISABLED (0) -#define MCF_GPTA_GPTCTL2_INPUT2_RISING (0x10) -#define MCF_GPTA_GPTCTL2_INPUT2_FALLING (0x20) -#define MCF_GPTA_GPTCTL2_INPUT2_ANY (0x30) -#define MCF_GPTA_GPTCTL2_INPUT3_DISABLED (0) -#define MCF_GPTA_GPTCTL2_INPUT3_RISING (0x40) -#define MCF_GPTA_GPTCTL2_INPUT3_FALLING (0x80) -#define MCF_GPTA_GPTCTL2_INPUT3_ANY (0xC0) - -/* Bit definitions and macros for MCF_GPTA_GPTIE */ -#define MCF_GPTA_GPTIE_CI0 (0x1) -#define MCF_GPTA_GPTIE_CI1 (0x2) -#define MCF_GPTA_GPTIE_CI2 (0x4) -#define MCF_GPTA_GPTIE_CI3 (0x8) - -/* Bit definitions and macros for MCF_GPTA_GPTSCR2 */ -#define MCF_GPTA_GPTSCR2_PR(x) (((x)&0x7)<<0) -#define MCF_GPTA_GPTSCR2_PR_1 (0) -#define MCF_GPTA_GPTSCR2_PR_2 (0x1) -#define MCF_GPTA_GPTSCR2_PR_4 (0x2) -#define MCF_GPTA_GPTSCR2_PR_8 (0x3) -#define MCF_GPTA_GPTSCR2_PR_16 (0x4) -#define MCF_GPTA_GPTSCR2_PR_32 (0x5) -#define MCF_GPTA_GPTSCR2_PR_64 (0x6) -#define MCF_GPTA_GPTSCR2_PR_128 (0x7) -#define MCF_GPTA_GPTSCR2_TCRE (0x8) -#define MCF_GPTA_GPTSCR2_RDPT (0x10) -#define MCF_GPTA_GPTSCR2_PUPT (0x20) -#define MCF_GPTA_GPTSCR2_TOI (0x80) - -/* Bit definitions and macros for MCF_GPTA_GPTFLG1 */ -#define MCF_GPTA_GPTFLG1_CF0 (0x1) -#define MCF_GPTA_GPTFLG1_CF1 (0x2) -#define MCF_GPTA_GPTFLG1_CF2 (0x4) -#define MCF_GPTA_GPTFLG1_CF3 (0x8) - -/* Bit definitions and macros for MCF_GPTA_GPTFLG2 */ -#define MCF_GPTA_GPTFLG2_TOF (0x80) - -/* Bit definitions and macros for MCF_GPTA_GPTC */ -#define MCF_GPTA_GPTC_CCNT(x) (((x)&0xFFFF)<<0) - -/* Bit definitions and macros for MCF_GPTA_GPTPACTL */ -#define MCF_GPTA_GPTPACTL_PAI (0x1) -#define MCF_GPTA_GPTPACTL_PAOVI (0x2) -#define MCF_GPTA_GPTPACTL_CLK(x) (((x)&0x3)<<0x2) -#define MCF_GPTA_GPTPACTL_CLK_GPTPR (0) -#define MCF_GPTA_GPTPACTL_CLK_PACLK (0x1) -#define MCF_GPTA_GPTPACTL_CLK_PACLK_256 (0x2) -#define MCF_GPTA_GPTPACTL_CLK_PACLK_65536 (0x3) -#define MCF_GPTA_GPTPACTL_PEDGE (0x10) -#define MCF_GPTA_GPTPACTL_PAMOD (0x20) -#define MCF_GPTA_GPTPACTL_PAE (0x40) - -/* Bit definitions and macros for MCF_GPTA_GPTPAFLG */ -#define MCF_GPTA_GPTPAFLG_PAIF (0x1) -#define MCF_GPTA_GPTPAFLG_PAOVF (0x2) - -/* Bit definitions and macros for MCF_GPTA_GPTPACNT */ -#define MCF_GPTA_GPTPACNT_PACNT(x) (((x)&0xFFFF)<<0) - -/* Bit definitions and macros for MCF_GPTA_GPTPORT */ -#define MCF_GPTA_GPTPORT_PORTT0 (0x1) -#define MCF_GPTA_GPTPORT_PORTT1 (0x2) -#define MCF_GPTA_GPTPORT_PORTT2 (0x4) -#define MCF_GPTA_GPTPORT_PORTT3 (0x8) - -/* Bit definitions and macros for MCF_GPTA_GPTDDR */ -#define MCF_GPTA_GPTDDR_DDRT0 (0x1) -#define MCF_GPTA_GPTDDR_DDRT1 (0x2) -#define MCF_GPTA_GPTDDR_DDRT2 (0x4) -#define MCF_GPTA_GPTDDR_DDRT3 (0x8) - - -#endif /* __MCF52235_GPTA_H__ */ diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_I2C.h b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_I2C.h deleted file mode 100644 index bba909b98..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_I2C.h +++ /dev/null @@ -1,54 +0,0 @@ -/* Coldfire C Header File - * Copyright Freescale Semiconductor Inc - * All rights reserved. - * - * 2007/03/19 Revision: 0.91 - */ - -#ifndef __MCF52235_I2C_H__ -#define __MCF52235_I2C_H__ - - -/********************************************************************* -* -* I2C Module (I2C) -* -*********************************************************************/ - -/* Register read/write macros */ -#define MCF_I2C_I2ADR (*(vuint8 *)(&__IPSBAR[0x300])) -#define MCF_I2C_I2FDR (*(vuint8 *)(&__IPSBAR[0x304])) -#define MCF_I2C_I2CR (*(vuint8 *)(&__IPSBAR[0x308])) -#define MCF_I2C_I2SR (*(vuint8 *)(&__IPSBAR[0x30C])) -#define MCF_I2C_I2DR (*(vuint8 *)(&__IPSBAR[0x310])) - - - -/* Bit definitions and macros for MCF_I2C_I2ADR */ -#define MCF_I2C_I2ADR_ADR(x) (((x)&0x7F)<<0x1) - -/* Bit definitions and macros for MCF_I2C_I2FDR */ -#define MCF_I2C_I2FDR_IC(x) (((x)&0x3F)<<0) - -/* Bit definitions and macros for MCF_I2C_I2CR */ -#define MCF_I2C_I2CR_RSTA (0x4) -#define MCF_I2C_I2CR_TXAK (0x8) -#define MCF_I2C_I2CR_MTX (0x10) -#define MCF_I2C_I2CR_MSTA (0x20) -#define MCF_I2C_I2CR_IIEN (0x40) -#define MCF_I2C_I2CR_IEN (0x80) - -/* Bit definitions and macros for MCF_I2C_I2SR */ -#define MCF_I2C_I2SR_RXAK (0x1) -#define MCF_I2C_I2SR_IIF (0x2) -#define MCF_I2C_I2SR_SRW (0x4) -#define MCF_I2C_I2SR_IAL (0x10) -#define MCF_I2C_I2SR_IBB (0x20) -#define MCF_I2C_I2SR_IAAS (0x40) -#define MCF_I2C_I2SR_ICF (0x80) - -/* Bit definitions and macros for MCF_I2C_I2DR */ -#define MCF_I2C_I2DR_DATA(x) (((x)&0xFF)<<0) - - -#endif /* __MCF52235_I2C_H__ */ diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_INTC.h b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_INTC.h deleted file mode 100644 index be040bb71..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_INTC.h +++ /dev/null @@ -1,484 +0,0 @@ -/* Coldfire C Header File - * Copyright Freescale Semiconductor Inc - * All rights reserved. - * - * 2007/03/19 Revision: 0.91 - */ - -#ifndef __MCF52235_INTC_H__ -#define __MCF52235_INTC_H__ - - -/********************************************************************* -* -* Interrupt Controller (INTC) -* -*********************************************************************/ - -/* Register read/write macros */ -#define MCF_INTC0_IPRH (*(vuint32*)(&__IPSBAR[0xC00])) -#define MCF_INTC0_IPRL (*(vuint32*)(&__IPSBAR[0xC04])) -#define MCF_INTC0_IMRH (*(vuint32*)(&__IPSBAR[0xC08])) -#define MCF_INTC0_IMRL (*(vuint32*)(&__IPSBAR[0xC0C])) -#define MCF_INTC0_INTFRCH (*(vuint32*)(&__IPSBAR[0xC10])) -#define MCF_INTC0_INTFRCL (*(vuint32*)(&__IPSBAR[0xC14])) -#define MCF_INTC0_IRLR (*(vuint8 *)(&__IPSBAR[0xC18])) -#define MCF_INTC0_IACKLPR (*(vuint8 *)(&__IPSBAR[0xC19])) -#define MCF_INTC0_ICR01 (*(vuint8 *)(&__IPSBAR[0xC41])) -#define MCF_INTC0_ICR02 (*(vuint8 *)(&__IPSBAR[0xC42])) -#define MCF_INTC0_ICR03 (*(vuint8 *)(&__IPSBAR[0xC43])) -#define MCF_INTC0_ICR04 (*(vuint8 *)(&__IPSBAR[0xC44])) -#define MCF_INTC0_ICR05 (*(vuint8 *)(&__IPSBAR[0xC45])) -#define MCF_INTC0_ICR06 (*(vuint8 *)(&__IPSBAR[0xC46])) -#define MCF_INTC0_ICR07 (*(vuint8 *)(&__IPSBAR[0xC47])) -#define MCF_INTC0_ICR08 (*(vuint8 *)(&__IPSBAR[0xC48])) -#define MCF_INTC0_ICR09 (*(vuint8 *)(&__IPSBAR[0xC49])) -#define MCF_INTC0_ICR10 (*(vuint8 *)(&__IPSBAR[0xC4A])) -#define MCF_INTC0_ICR11 (*(vuint8 *)(&__IPSBAR[0xC4B])) -#define MCF_INTC0_ICR12 (*(vuint8 *)(&__IPSBAR[0xC4C])) -#define MCF_INTC0_ICR13 (*(vuint8 *)(&__IPSBAR[0xC4D])) -#define MCF_INTC0_ICR14 (*(vuint8 *)(&__IPSBAR[0xC4E])) -#define MCF_INTC0_ICR15 (*(vuint8 *)(&__IPSBAR[0xC4F])) -#define MCF_INTC0_ICR16 (*(vuint8 *)(&__IPSBAR[0xC50])) -#define MCF_INTC0_ICR17 (*(vuint8 *)(&__IPSBAR[0xC51])) -#define MCF_INTC0_ICR18 (*(vuint8 *)(&__IPSBAR[0xC52])) -#define MCF_INTC0_ICR19 (*(vuint8 *)(&__IPSBAR[0xC53])) -#define MCF_INTC0_ICR20 (*(vuint8 *)(&__IPSBAR[0xC54])) -#define MCF_INTC0_ICR21 (*(vuint8 *)(&__IPSBAR[0xC55])) -#define MCF_INTC0_ICR22 (*(vuint8 *)(&__IPSBAR[0xC56])) -#define MCF_INTC0_ICR23 (*(vuint8 *)(&__IPSBAR[0xC57])) -#define MCF_INTC0_ICR24 (*(vuint8 *)(&__IPSBAR[0xC58])) -#define MCF_INTC0_ICR25 (*(vuint8 *)(&__IPSBAR[0xC59])) -#define MCF_INTC0_ICR26 (*(vuint8 *)(&__IPSBAR[0xC5A])) -#define MCF_INTC0_ICR27 (*(vuint8 *)(&__IPSBAR[0xC5B])) -#define MCF_INTC0_ICR28 (*(vuint8 *)(&__IPSBAR[0xC5C])) -#define MCF_INTC0_ICR29 (*(vuint8 *)(&__IPSBAR[0xC5D])) -#define MCF_INTC0_ICR30 (*(vuint8 *)(&__IPSBAR[0xC5E])) -#define MCF_INTC0_ICR31 (*(vuint8 *)(&__IPSBAR[0xC5F])) -#define MCF_INTC0_ICR32 (*(vuint8 *)(&__IPSBAR[0xC60])) -#define MCF_INTC0_ICR33 (*(vuint8 *)(&__IPSBAR[0xC61])) -#define MCF_INTC0_ICR34 (*(vuint8 *)(&__IPSBAR[0xC62])) -#define MCF_INTC0_ICR35 (*(vuint8 *)(&__IPSBAR[0xC63])) -#define MCF_INTC0_ICR36 (*(vuint8 *)(&__IPSBAR[0xC64])) -#define MCF_INTC0_ICR37 (*(vuint8 *)(&__IPSBAR[0xC65])) -#define MCF_INTC0_ICR38 (*(vuint8 *)(&__IPSBAR[0xC66])) -#define MCF_INTC0_ICR39 (*(vuint8 *)(&__IPSBAR[0xC67])) -#define MCF_INTC0_ICR40 (*(vuint8 *)(&__IPSBAR[0xC68])) -#define MCF_INTC0_ICR41 (*(vuint8 *)(&__IPSBAR[0xC69])) -#define MCF_INTC0_ICR42 (*(vuint8 *)(&__IPSBAR[0xC6A])) -#define MCF_INTC0_ICR43 (*(vuint8 *)(&__IPSBAR[0xC6B])) -#define MCF_INTC0_ICR44 (*(vuint8 *)(&__IPSBAR[0xC6C])) -#define MCF_INTC0_ICR45 (*(vuint8 *)(&__IPSBAR[0xC6D])) -#define MCF_INTC0_ICR46 (*(vuint8 *)(&__IPSBAR[0xC6E])) -#define MCF_INTC0_ICR47 (*(vuint8 *)(&__IPSBAR[0xC6F])) -#define MCF_INTC0_ICR48 (*(vuint8 *)(&__IPSBAR[0xC70])) -#define MCF_INTC0_ICR49 (*(vuint8 *)(&__IPSBAR[0xC71])) -#define MCF_INTC0_ICR50 (*(vuint8 *)(&__IPSBAR[0xC72])) -#define MCF_INTC0_ICR51 (*(vuint8 *)(&__IPSBAR[0xC73])) -#define MCF_INTC0_ICR52 (*(vuint8 *)(&__IPSBAR[0xC74])) -#define MCF_INTC0_ICR53 (*(vuint8 *)(&__IPSBAR[0xC75])) -#define MCF_INTC0_ICR54 (*(vuint8 *)(&__IPSBAR[0xC76])) -#define MCF_INTC0_ICR55 (*(vuint8 *)(&__IPSBAR[0xC77])) -#define MCF_INTC0_ICR56 (*(vuint8 *)(&__IPSBAR[0xC78])) -#define MCF_INTC0_ICR57 (*(vuint8 *)(&__IPSBAR[0xC79])) -#define MCF_INTC0_ICR58 (*(vuint8 *)(&__IPSBAR[0xC7A])) -#define MCF_INTC0_ICR59 (*(vuint8 *)(&__IPSBAR[0xC7B])) -#define MCF_INTC0_ICR60 (*(vuint8 *)(&__IPSBAR[0xC7C])) -#define MCF_INTC0_ICR61 (*(vuint8 *)(&__IPSBAR[0xC7D])) -#define MCF_INTC0_ICR62 (*(vuint8 *)(&__IPSBAR[0xC7E])) -#define MCF_INTC0_ICR63 (*(vuint8 *)(&__IPSBAR[0xC7F])) -#define MCF_INTC0_SWIACK (*(vuint8 *)(&__IPSBAR[0xCE0])) -#define MCF_INTC0_L1IACK (*(vuint8 *)(&__IPSBAR[0xCE4])) -#define MCF_INTC0_L2IACK (*(vuint8 *)(&__IPSBAR[0xCE8])) -#define MCF_INTC0_L3IACK (*(vuint8 *)(&__IPSBAR[0xCEC])) -#define MCF_INTC0_L4IACK (*(vuint8 *)(&__IPSBAR[0xCF0])) -#define MCF_INTC0_L5IACK (*(vuint8 *)(&__IPSBAR[0xCF4])) -#define MCF_INTC0_L6IACK (*(vuint8 *)(&__IPSBAR[0xCF8])) -#define MCF_INTC0_L7IACK (*(vuint8 *)(&__IPSBAR[0xCFC])) -#define MCF_INTC0_ICR(x) (*(vuint8 *)(&__IPSBAR[0xC41 + ((x-1)*0x1)])) -#define MCF_INTC0_LIACK(x) (*(vuint8 *)(&__IPSBAR[0xCE4 + ((x-1)*0x4)])) - -#define MCF_INTC1_IPRH (*(vuint32*)(&__IPSBAR[0xD00])) -#define MCF_INTC1_IPRL (*(vuint32*)(&__IPSBAR[0xD04])) -#define MCF_INTC1_IMRH (*(vuint32*)(&__IPSBAR[0xD08])) -#define MCF_INTC1_IMRL (*(vuint32*)(&__IPSBAR[0xD0C])) -#define MCF_INTC1_INTFRCH (*(vuint32*)(&__IPSBAR[0xD10])) -#define MCF_INTC1_INTFRCL (*(vuint32*)(&__IPSBAR[0xD14])) -#define MCF_INTC1_IRLR (*(vuint8 *)(&__IPSBAR[0xD18])) -#define MCF_INTC1_IACKLPR (*(vuint8 *)(&__IPSBAR[0xD19])) -#define MCF_INTC1_ICR01 (*(vuint8 *)(&__IPSBAR[0xD41])) -#define MCF_INTC1_ICR02 (*(vuint8 *)(&__IPSBAR[0xD42])) -#define MCF_INTC1_ICR03 (*(vuint8 *)(&__IPSBAR[0xD43])) -#define MCF_INTC1_ICR04 (*(vuint8 *)(&__IPSBAR[0xD44])) -#define MCF_INTC1_ICR05 (*(vuint8 *)(&__IPSBAR[0xD45])) -#define MCF_INTC1_ICR06 (*(vuint8 *)(&__IPSBAR[0xD46])) -#define MCF_INTC1_ICR07 (*(vuint8 *)(&__IPSBAR[0xD47])) -#define MCF_INTC1_ICR08 (*(vuint8 *)(&__IPSBAR[0xD48])) -#define MCF_INTC1_ICR09 (*(vuint8 *)(&__IPSBAR[0xD49])) -#define MCF_INTC1_ICR10 (*(vuint8 *)(&__IPSBAR[0xD4A])) -#define MCF_INTC1_ICR11 (*(vuint8 *)(&__IPSBAR[0xD4B])) -#define MCF_INTC1_ICR12 (*(vuint8 *)(&__IPSBAR[0xD4C])) -#define MCF_INTC1_ICR13 (*(vuint8 *)(&__IPSBAR[0xD4D])) -#define MCF_INTC1_ICR14 (*(vuint8 *)(&__IPSBAR[0xD4E])) -#define MCF_INTC1_ICR15 (*(vuint8 *)(&__IPSBAR[0xD4F])) -#define MCF_INTC1_ICR16 (*(vuint8 *)(&__IPSBAR[0xD50])) -#define MCF_INTC1_ICR17 (*(vuint8 *)(&__IPSBAR[0xD51])) -#define MCF_INTC1_ICR18 (*(vuint8 *)(&__IPSBAR[0xD52])) -#define MCF_INTC1_ICR19 (*(vuint8 *)(&__IPSBAR[0xD53])) -#define MCF_INTC1_ICR20 (*(vuint8 *)(&__IPSBAR[0xD54])) -#define MCF_INTC1_ICR21 (*(vuint8 *)(&__IPSBAR[0xD55])) -#define MCF_INTC1_ICR22 (*(vuint8 *)(&__IPSBAR[0xD56])) -#define MCF_INTC1_ICR23 (*(vuint8 *)(&__IPSBAR[0xD57])) -#define MCF_INTC1_ICR24 (*(vuint8 *)(&__IPSBAR[0xD58])) -#define MCF_INTC1_ICR25 (*(vuint8 *)(&__IPSBAR[0xD59])) -#define MCF_INTC1_ICR26 (*(vuint8 *)(&__IPSBAR[0xD5A])) -#define MCF_INTC1_ICR27 (*(vuint8 *)(&__IPSBAR[0xD5B])) -#define MCF_INTC1_ICR28 (*(vuint8 *)(&__IPSBAR[0xD5C])) -#define MCF_INTC1_ICR29 (*(vuint8 *)(&__IPSBAR[0xD5D])) -#define MCF_INTC1_ICR30 (*(vuint8 *)(&__IPSBAR[0xD5E])) -#define MCF_INTC1_ICR31 (*(vuint8 *)(&__IPSBAR[0xD5F])) -#define MCF_INTC1_ICR32 (*(vuint8 *)(&__IPSBAR[0xD60])) -#define MCF_INTC1_ICR33 (*(vuint8 *)(&__IPSBAR[0xD61])) -#define MCF_INTC1_ICR34 (*(vuint8 *)(&__IPSBAR[0xD62])) -#define MCF_INTC1_ICR35 (*(vuint8 *)(&__IPSBAR[0xD63])) -#define MCF_INTC1_ICR36 (*(vuint8 *)(&__IPSBAR[0xD64])) -#define MCF_INTC1_ICR37 (*(vuint8 *)(&__IPSBAR[0xD65])) -#define MCF_INTC1_ICR38 (*(vuint8 *)(&__IPSBAR[0xD66])) -#define MCF_INTC1_ICR39 (*(vuint8 *)(&__IPSBAR[0xD67])) -#define MCF_INTC1_ICR40 (*(vuint8 *)(&__IPSBAR[0xD68])) -#define MCF_INTC1_ICR41 (*(vuint8 *)(&__IPSBAR[0xD69])) -#define MCF_INTC1_ICR42 (*(vuint8 *)(&__IPSBAR[0xD6A])) -#define MCF_INTC1_ICR43 (*(vuint8 *)(&__IPSBAR[0xD6B])) -#define MCF_INTC1_ICR44 (*(vuint8 *)(&__IPSBAR[0xD6C])) -#define MCF_INTC1_ICR45 (*(vuint8 *)(&__IPSBAR[0xD6D])) -#define MCF_INTC1_ICR46 (*(vuint8 *)(&__IPSBAR[0xD6E])) -#define MCF_INTC1_ICR47 (*(vuint8 *)(&__IPSBAR[0xD6F])) -#define MCF_INTC1_ICR48 (*(vuint8 *)(&__IPSBAR[0xD70])) -#define MCF_INTC1_ICR49 (*(vuint8 *)(&__IPSBAR[0xD71])) -#define MCF_INTC1_ICR50 (*(vuint8 *)(&__IPSBAR[0xD72])) -#define MCF_INTC1_ICR51 (*(vuint8 *)(&__IPSBAR[0xD73])) -#define MCF_INTC1_ICR52 (*(vuint8 *)(&__IPSBAR[0xD74])) -#define MCF_INTC1_ICR53 (*(vuint8 *)(&__IPSBAR[0xD75])) -#define MCF_INTC1_ICR54 (*(vuint8 *)(&__IPSBAR[0xD76])) -#define MCF_INTC1_ICR55 (*(vuint8 *)(&__IPSBAR[0xD77])) -#define MCF_INTC1_ICR56 (*(vuint8 *)(&__IPSBAR[0xD78])) -#define MCF_INTC1_ICR57 (*(vuint8 *)(&__IPSBAR[0xD79])) -#define MCF_INTC1_ICR58 (*(vuint8 *)(&__IPSBAR[0xD7A])) -#define MCF_INTC1_ICR59 (*(vuint8 *)(&__IPSBAR[0xD7B])) -#define MCF_INTC1_ICR60 (*(vuint8 *)(&__IPSBAR[0xD7C])) -#define MCF_INTC1_ICR61 (*(vuint8 *)(&__IPSBAR[0xD7D])) -#define MCF_INTC1_ICR62 (*(vuint8 *)(&__IPSBAR[0xD7E])) -#define MCF_INTC1_ICR63 (*(vuint8 *)(&__IPSBAR[0xD7F])) -#define MCF_INTC1_SWIACK (*(vuint8 *)(&__IPSBAR[0xDE0])) -#define MCF_INTC1_L1IACK (*(vuint8 *)(&__IPSBAR[0xDE4])) -#define MCF_INTC1_L2IACK (*(vuint8 *)(&__IPSBAR[0xDE8])) -#define MCF_INTC1_L3IACK (*(vuint8 *)(&__IPSBAR[0xDEC])) -#define MCF_INTC1_L4IACK (*(vuint8 *)(&__IPSBAR[0xDF0])) -#define MCF_INTC1_L5IACK (*(vuint8 *)(&__IPSBAR[0xDF4])) -#define MCF_INTC1_L6IACK (*(vuint8 *)(&__IPSBAR[0xDF8])) -#define MCF_INTC1_L7IACK (*(vuint8 *)(&__IPSBAR[0xDFC])) -#define MCF_INTC1_ICR(x) (*(vuint8 *)(&__IPSBAR[0xD41 + ((x-1)*0x1)])) -#define MCF_INTC1_LIACK(x) (*(vuint8 *)(&__IPSBAR[0xDE4 + ((x-1)*0x4)])) - -#define MCF_INTC_IPRH(x) (*(vuint32*)(&__IPSBAR[0xC00 + ((x)*0x100)])) -#define MCF_INTC_IPRL(x) (*(vuint32*)(&__IPSBAR[0xC04 + ((x)*0x100)])) -#define MCF_INTC_IMRH(x) (*(vuint32*)(&__IPSBAR[0xC08 + ((x)*0x100)])) -#define MCF_INTC_IMRL(x) (*(vuint32*)(&__IPSBAR[0xC0C + ((x)*0x100)])) -#define MCF_INTC_INTFRCH(x) (*(vuint32*)(&__IPSBAR[0xC10 + ((x)*0x100)])) -#define MCF_INTC_INTFRCL(x) (*(vuint32*)(&__IPSBAR[0xC14 + ((x)*0x100)])) -#define MCF_INTC_IRLR(x) (*(vuint8 *)(&__IPSBAR[0xC18 + ((x)*0x100)])) -#define MCF_INTC_IACKLPR(x) (*(vuint8 *)(&__IPSBAR[0xC19 + ((x)*0x100)])) -#define MCF_INTC_ICR01(x) (*(vuint8 *)(&__IPSBAR[0xC41 + ((x)*0x100)])) -#define MCF_INTC_ICR02(x) (*(vuint8 *)(&__IPSBAR[0xC42 + ((x)*0x100)])) -#define MCF_INTC_ICR03(x) (*(vuint8 *)(&__IPSBAR[0xC43 + ((x)*0x100)])) -#define MCF_INTC_ICR04(x) (*(vuint8 *)(&__IPSBAR[0xC44 + ((x)*0x100)])) -#define MCF_INTC_ICR05(x) (*(vuint8 *)(&__IPSBAR[0xC45 + ((x)*0x100)])) -#define MCF_INTC_ICR06(x) (*(vuint8 *)(&__IPSBAR[0xC46 + ((x)*0x100)])) -#define MCF_INTC_ICR07(x) (*(vuint8 *)(&__IPSBAR[0xC47 + ((x)*0x100)])) -#define MCF_INTC_ICR08(x) (*(vuint8 *)(&__IPSBAR[0xC48 + ((x)*0x100)])) -#define MCF_INTC_ICR09(x) (*(vuint8 *)(&__IPSBAR[0xC49 + ((x)*0x100)])) -#define MCF_INTC_ICR10(x) (*(vuint8 *)(&__IPSBAR[0xC4A + ((x)*0x100)])) -#define MCF_INTC_ICR11(x) (*(vuint8 *)(&__IPSBAR[0xC4B + ((x)*0x100)])) -#define MCF_INTC_ICR12(x) (*(vuint8 *)(&__IPSBAR[0xC4C + ((x)*0x100)])) -#define MCF_INTC_ICR13(x) (*(vuint8 *)(&__IPSBAR[0xC4D + ((x)*0x100)])) -#define MCF_INTC_ICR14(x) (*(vuint8 *)(&__IPSBAR[0xC4E + ((x)*0x100)])) -#define MCF_INTC_ICR15(x) (*(vuint8 *)(&__IPSBAR[0xC4F + ((x)*0x100)])) -#define MCF_INTC_ICR16(x) (*(vuint8 *)(&__IPSBAR[0xC50 + ((x)*0x100)])) -#define MCF_INTC_ICR17(x) (*(vuint8 *)(&__IPSBAR[0xC51 + ((x)*0x100)])) -#define MCF_INTC_ICR18(x) (*(vuint8 *)(&__IPSBAR[0xC52 + ((x)*0x100)])) -#define MCF_INTC_ICR19(x) (*(vuint8 *)(&__IPSBAR[0xC53 + ((x)*0x100)])) -#define MCF_INTC_ICR20(x) (*(vuint8 *)(&__IPSBAR[0xC54 + ((x)*0x100)])) -#define MCF_INTC_ICR21(x) (*(vuint8 *)(&__IPSBAR[0xC55 + ((x)*0x100)])) -#define MCF_INTC_ICR22(x) (*(vuint8 *)(&__IPSBAR[0xC56 + ((x)*0x100)])) -#define MCF_INTC_ICR23(x) (*(vuint8 *)(&__IPSBAR[0xC57 + ((x)*0x100)])) -#define MCF_INTC_ICR24(x) (*(vuint8 *)(&__IPSBAR[0xC58 + ((x)*0x100)])) -#define MCF_INTC_ICR25(x) (*(vuint8 *)(&__IPSBAR[0xC59 + ((x)*0x100)])) -#define MCF_INTC_ICR26(x) (*(vuint8 *)(&__IPSBAR[0xC5A + ((x)*0x100)])) -#define MCF_INTC_ICR27(x) (*(vuint8 *)(&__IPSBAR[0xC5B + ((x)*0x100)])) -#define MCF_INTC_ICR28(x) (*(vuint8 *)(&__IPSBAR[0xC5C + ((x)*0x100)])) -#define MCF_INTC_ICR29(x) (*(vuint8 *)(&__IPSBAR[0xC5D + ((x)*0x100)])) -#define MCF_INTC_ICR30(x) (*(vuint8 *)(&__IPSBAR[0xC5E + ((x)*0x100)])) -#define MCF_INTC_ICR31(x) (*(vuint8 *)(&__IPSBAR[0xC5F + ((x)*0x100)])) -#define MCF_INTC_ICR32(x) (*(vuint8 *)(&__IPSBAR[0xC60 + ((x)*0x100)])) -#define MCF_INTC_ICR33(x) (*(vuint8 *)(&__IPSBAR[0xC61 + ((x)*0x100)])) -#define MCF_INTC_ICR34(x) (*(vuint8 *)(&__IPSBAR[0xC62 + ((x)*0x100)])) -#define MCF_INTC_ICR35(x) (*(vuint8 *)(&__IPSBAR[0xC63 + ((x)*0x100)])) -#define MCF_INTC_ICR36(x) (*(vuint8 *)(&__IPSBAR[0xC64 + ((x)*0x100)])) -#define MCF_INTC_ICR37(x) (*(vuint8 *)(&__IPSBAR[0xC65 + ((x)*0x100)])) -#define MCF_INTC_ICR38(x) (*(vuint8 *)(&__IPSBAR[0xC66 + ((x)*0x100)])) -#define MCF_INTC_ICR39(x) (*(vuint8 *)(&__IPSBAR[0xC67 + ((x)*0x100)])) -#define MCF_INTC_ICR40(x) (*(vuint8 *)(&__IPSBAR[0xC68 + ((x)*0x100)])) -#define MCF_INTC_ICR41(x) (*(vuint8 *)(&__IPSBAR[0xC69 + ((x)*0x100)])) -#define MCF_INTC_ICR42(x) (*(vuint8 *)(&__IPSBAR[0xC6A + ((x)*0x100)])) -#define MCF_INTC_ICR43(x) (*(vuint8 *)(&__IPSBAR[0xC6B + ((x)*0x100)])) -#define MCF_INTC_ICR44(x) (*(vuint8 *)(&__IPSBAR[0xC6C + ((x)*0x100)])) -#define MCF_INTC_ICR45(x) (*(vuint8 *)(&__IPSBAR[0xC6D + ((x)*0x100)])) -#define MCF_INTC_ICR46(x) (*(vuint8 *)(&__IPSBAR[0xC6E + ((x)*0x100)])) -#define MCF_INTC_ICR47(x) (*(vuint8 *)(&__IPSBAR[0xC6F + ((x)*0x100)])) -#define MCF_INTC_ICR48(x) (*(vuint8 *)(&__IPSBAR[0xC70 + ((x)*0x100)])) -#define MCF_INTC_ICR49(x) (*(vuint8 *)(&__IPSBAR[0xC71 + ((x)*0x100)])) -#define MCF_INTC_ICR50(x) (*(vuint8 *)(&__IPSBAR[0xC72 + ((x)*0x100)])) -#define MCF_INTC_ICR51(x) (*(vuint8 *)(&__IPSBAR[0xC73 + ((x)*0x100)])) -#define MCF_INTC_ICR52(x) (*(vuint8 *)(&__IPSBAR[0xC74 + ((x)*0x100)])) -#define MCF_INTC_ICR53(x) (*(vuint8 *)(&__IPSBAR[0xC75 + ((x)*0x100)])) -#define MCF_INTC_ICR54(x) (*(vuint8 *)(&__IPSBAR[0xC76 + ((x)*0x100)])) -#define MCF_INTC_ICR55(x) (*(vuint8 *)(&__IPSBAR[0xC77 + ((x)*0x100)])) -#define MCF_INTC_ICR56(x) (*(vuint8 *)(&__IPSBAR[0xC78 + ((x)*0x100)])) -#define MCF_INTC_ICR57(x) (*(vuint8 *)(&__IPSBAR[0xC79 + ((x)*0x100)])) -#define MCF_INTC_ICR58(x) (*(vuint8 *)(&__IPSBAR[0xC7A + ((x)*0x100)])) -#define MCF_INTC_ICR59(x) (*(vuint8 *)(&__IPSBAR[0xC7B + ((x)*0x100)])) -#define MCF_INTC_ICR60(x) (*(vuint8 *)(&__IPSBAR[0xC7C + ((x)*0x100)])) -#define MCF_INTC_ICR61(x) (*(vuint8 *)(&__IPSBAR[0xC7D + ((x)*0x100)])) -#define MCF_INTC_ICR62(x) (*(vuint8 *)(&__IPSBAR[0xC7E + ((x)*0x100)])) -#define MCF_INTC_ICR63(x) (*(vuint8 *)(&__IPSBAR[0xC7F + ((x)*0x100)])) -#define MCF_INTC_SWIACK(x) (*(vuint8 *)(&__IPSBAR[0xCE0 + ((x)*0x100)])) -#define MCF_INTC_L1IACK(x) (*(vuint8 *)(&__IPSBAR[0xCE4 + ((x)*0x100)])) -#define MCF_INTC_L2IACK(x) (*(vuint8 *)(&__IPSBAR[0xCE8 + ((x)*0x100)])) -#define MCF_INTC_L3IACK(x) (*(vuint8 *)(&__IPSBAR[0xCEC + ((x)*0x100)])) -#define MCF_INTC_L4IACK(x) (*(vuint8 *)(&__IPSBAR[0xCF0 + ((x)*0x100)])) -#define MCF_INTC_L5IACK(x) (*(vuint8 *)(&__IPSBAR[0xCF4 + ((x)*0x100)])) -#define MCF_INTC_L6IACK(x) (*(vuint8 *)(&__IPSBAR[0xCF8 + ((x)*0x100)])) -#define MCF_INTC_L7IACK(x) (*(vuint8 *)(&__IPSBAR[0xCFC + ((x)*0x100)])) - - -/* Bit definitions and macros for MCF_INTC_IPRH */ -#define MCF_INTC_IPRH_INT32 (0x1) -#define MCF_INTC_IPRH_INT33 (0x2) -#define MCF_INTC_IPRH_INT34 (0x4) -#define MCF_INTC_IPRH_INT35 (0x8) -#define MCF_INTC_IPRH_INT36 (0x10) -#define MCF_INTC_IPRH_INT37 (0x20) -#define MCF_INTC_IPRH_INT38 (0x40) -#define MCF_INTC_IPRH_INT39 (0x80) -#define MCF_INTC_IPRH_INT40 (0x100) -#define MCF_INTC_IPRH_INT41 (0x200) -#define MCF_INTC_IPRH_INT42 (0x400) -#define MCF_INTC_IPRH_INT43 (0x800) -#define MCF_INTC_IPRH_INT44 (0x1000) -#define MCF_INTC_IPRH_INT45 (0x2000) -#define MCF_INTC_IPRH_INT46 (0x4000) -#define MCF_INTC_IPRH_INT47 (0x8000) -#define MCF_INTC_IPRH_INT48 (0x10000) -#define MCF_INTC_IPRH_INT49 (0x20000) -#define MCF_INTC_IPRH_INT50 (0x40000) -#define MCF_INTC_IPRH_INT51 (0x80000) -#define MCF_INTC_IPRH_INT52 (0x100000) -#define MCF_INTC_IPRH_INT53 (0x200000) -#define MCF_INTC_IPRH_INT54 (0x400000) -#define MCF_INTC_IPRH_INT55 (0x800000) -#define MCF_INTC_IPRH_INT56 (0x1000000) -#define MCF_INTC_IPRH_INT57 (0x2000000) -#define MCF_INTC_IPRH_INT58 (0x4000000) -#define MCF_INTC_IPRH_INT59 (0x8000000) -#define MCF_INTC_IPRH_INT60 (0x10000000) -#define MCF_INTC_IPRH_INT61 (0x20000000) -#define MCF_INTC_IPRH_INT62 (0x40000000) -#define MCF_INTC_IPRH_INT63 (0x80000000) - -/* Bit definitions and macros for MCF_INTC_IPRL */ -#define MCF_INTC_IPRL_INT1 (0x2) -#define MCF_INTC_IPRL_INT2 (0x4) -#define MCF_INTC_IPRL_INT3 (0x8) -#define MCF_INTC_IPRL_INT4 (0x10) -#define MCF_INTC_IPRL_INT5 (0x20) -#define MCF_INTC_IPRL_INT6 (0x40) -#define MCF_INTC_IPRL_INT7 (0x80) -#define MCF_INTC_IPRL_INT8 (0x100) -#define MCF_INTC_IPRL_INT9 (0x200) -#define MCF_INTC_IPRL_INT10 (0x400) -#define MCF_INTC_IPRL_INT11 (0x800) -#define MCF_INTC_IPRL_INT12 (0x1000) -#define MCF_INTC_IPRL_INT13 (0x2000) -#define MCF_INTC_IPRL_INT14 (0x4000) -#define MCF_INTC_IPRL_INT15 (0x8000) -#define MCF_INTC_IPRL_INT16 (0x10000) -#define MCF_INTC_IPRL_INT17 (0x20000) -#define MCF_INTC_IPRL_INT18 (0x40000) -#define MCF_INTC_IPRL_INT19 (0x80000) -#define MCF_INTC_IPRL_INT20 (0x100000) -#define MCF_INTC_IPRL_INT21 (0x200000) -#define MCF_INTC_IPRL_INT22 (0x400000) -#define MCF_INTC_IPRL_INT23 (0x800000) -#define MCF_INTC_IPRL_INT24 (0x1000000) -#define MCF_INTC_IPRL_INT25 (0x2000000) -#define MCF_INTC_IPRL_INT26 (0x4000000) -#define MCF_INTC_IPRL_INT27 (0x8000000) -#define MCF_INTC_IPRL_INT28 (0x10000000) -#define MCF_INTC_IPRL_INT29 (0x20000000) -#define MCF_INTC_IPRL_INT30 (0x40000000) -#define MCF_INTC_IPRL_INT31 (0x80000000) - -/* Bit definitions and macros for MCF_INTC_IMRH */ -#define MCF_INTC_IMRH_INT_MASK32 (0x1) -#define MCF_INTC_IMRH_INT_MASK33 (0x2) -#define MCF_INTC_IMRH_INT_MASK34 (0x4) -#define MCF_INTC_IMRH_INT_MASK35 (0x8) -#define MCF_INTC_IMRH_INT_MASK36 (0x10) -#define MCF_INTC_IMRH_INT_MASK37 (0x20) -#define MCF_INTC_IMRH_INT_MASK38 (0x40) -#define MCF_INTC_IMRH_INT_MASK39 (0x80) -#define MCF_INTC_IMRH_INT_MASK40 (0x100) -#define MCF_INTC_IMRH_INT_MASK41 (0x200) -#define MCF_INTC_IMRH_INT_MASK42 (0x400) -#define MCF_INTC_IMRH_INT_MASK43 (0x800) -#define MCF_INTC_IMRH_INT_MASK44 (0x1000) -#define MCF_INTC_IMRH_INT_MASK45 (0x2000) -#define MCF_INTC_IMRH_INT_MASK46 (0x4000) -#define MCF_INTC_IMRH_INT_MASK47 (0x8000) -#define MCF_INTC_IMRH_INT_MASK48 (0x10000) -#define MCF_INTC_IMRH_INT_MASK49 (0x20000) -#define MCF_INTC_IMRH_INT_MASK50 (0x40000) -#define MCF_INTC_IMRH_INT_MASK51 (0x80000) -#define MCF_INTC_IMRH_INT_MASK52 (0x100000) -#define MCF_INTC_IMRH_INT_MASK53 (0x200000) -#define MCF_INTC_IMRH_INT_MASK54 (0x400000) -#define MCF_INTC_IMRH_INT_MASK55 (0x800000) -#define MCF_INTC_IMRH_INT_MASK56 (0x1000000) -#define MCF_INTC_IMRH_INT_MASK57 (0x2000000) -#define MCF_INTC_IMRH_INT_MASK58 (0x4000000) -#define MCF_INTC_IMRH_INT_MASK59 (0x8000000) -#define MCF_INTC_IMRH_INT_MASK60 (0x10000000) -#define MCF_INTC_IMRH_INT_MASK61 (0x20000000) -#define MCF_INTC_IMRH_INT_MASK62 (0x40000000) -#define MCF_INTC_IMRH_INT_MASK63 (0x80000000) - -/* Bit definitions and macros for MCF_INTC_IMRL */ -#define MCF_INTC_IMRL_MASKALL (0x1) -#define MCF_INTC_IMRL_INT_MASK1 (0x2) -#define MCF_INTC_IMRL_INT_MASK2 (0x4) -#define MCF_INTC_IMRL_INT_MASK3 (0x8) -#define MCF_INTC_IMRL_INT_MASK4 (0x10) -#define MCF_INTC_IMRL_INT_MASK5 (0x20) -#define MCF_INTC_IMRL_INT_MASK6 (0x40) -#define MCF_INTC_IMRL_INT_MASK7 (0x80) -#define MCF_INTC_IMRL_INT_MASK8 (0x100) -#define MCF_INTC_IMRL_INT_MASK9 (0x200) -#define MCF_INTC_IMRL_INT_MASK10 (0x400) -#define MCF_INTC_IMRL_INT_MASK11 (0x800) -#define MCF_INTC_IMRL_INT_MASK12 (0x1000) -#define MCF_INTC_IMRL_INT_MASK13 (0x2000) -#define MCF_INTC_IMRL_INT_MASK14 (0x4000) -#define MCF_INTC_IMRL_INT_MASK15 (0x8000) -#define MCF_INTC_IMRL_INT_MASK16 (0x10000) -#define MCF_INTC_IMRL_INT_MASK17 (0x20000) -#define MCF_INTC_IMRL_INT_MASK18 (0x40000) -#define MCF_INTC_IMRL_INT_MASK19 (0x80000) -#define MCF_INTC_IMRL_INT_MASK20 (0x100000) -#define MCF_INTC_IMRL_INT_MASK21 (0x200000) -#define MCF_INTC_IMRL_INT_MASK22 (0x400000) -#define MCF_INTC_IMRL_INT_MASK23 (0x800000) -#define MCF_INTC_IMRL_INT_MASK24 (0x1000000) -#define MCF_INTC_IMRL_INT_MASK25 (0x2000000) -#define MCF_INTC_IMRL_INT_MASK26 (0x4000000) -#define MCF_INTC_IMRL_INT_MASK27 (0x8000000) -#define MCF_INTC_IMRL_INT_MASK28 (0x10000000) -#define MCF_INTC_IMRL_INT_MASK29 (0x20000000) -#define MCF_INTC_IMRL_INT_MASK30 (0x40000000) -#define MCF_INTC_IMRL_INT_MASK31 (0x80000000) - -/* Bit definitions and macros for MCF_INTC_INTFRCH */ -#define MCF_INTC_INTFRCH_INTFRC32 (0x1) -#define MCF_INTC_INTFRCH_INTFRC33 (0x2) -#define MCF_INTC_INTFRCH_INTFRC34 (0x4) -#define MCF_INTC_INTFRCH_INTFRC35 (0x8) -#define MCF_INTC_INTFRCH_INTFRC36 (0x10) -#define MCF_INTC_INTFRCH_INTFRC37 (0x20) -#define MCF_INTC_INTFRCH_INTFRC38 (0x40) -#define MCF_INTC_INTFRCH_INTFRC39 (0x80) -#define MCF_INTC_INTFRCH_INTFRC40 (0x100) -#define MCF_INTC_INTFRCH_INTFRC41 (0x200) -#define MCF_INTC_INTFRCH_INTFRC42 (0x400) -#define MCF_INTC_INTFRCH_INTFRC43 (0x800) -#define MCF_INTC_INTFRCH_INTFRC44 (0x1000) -#define MCF_INTC_INTFRCH_INTFRC45 (0x2000) -#define MCF_INTC_INTFRCH_INTFRC46 (0x4000) -#define MCF_INTC_INTFRCH_INTFRC47 (0x8000) -#define MCF_INTC_INTFRCH_INTFRC48 (0x10000) -#define MCF_INTC_INTFRCH_INTFRC49 (0x20000) -#define MCF_INTC_INTFRCH_INTFRC50 (0x40000) -#define MCF_INTC_INTFRCH_INTFRC51 (0x80000) -#define MCF_INTC_INTFRCH_INTFRC52 (0x100000) -#define MCF_INTC_INTFRCH_INTFRC53 (0x200000) -#define MCF_INTC_INTFRCH_INTFRC54 (0x400000) -#define MCF_INTC_INTFRCH_INTFRC55 (0x800000) -#define MCF_INTC_INTFRCH_INTFRC56 (0x1000000) -#define MCF_INTC_INTFRCH_INTFRC57 (0x2000000) -#define MCF_INTC_INTFRCH_INTFRC58 (0x4000000) -#define MCF_INTC_INTFRCH_INTFRC59 (0x8000000) -#define MCF_INTC_INTFRCH_INTFRC60 (0x10000000) -#define MCF_INTC_INTFRCH_INTFRC61 (0x20000000) -#define MCF_INTC_INTFRCH_INTFRC62 (0x40000000) -#define MCF_INTC_INTFRCH_INTFRC63 (0x80000000) - -/* Bit definitions and macros for MCF_INTC_INTFRCL */ -#define MCF_INTC_INTFRCL_INTFRC1 (0x2) -#define MCF_INTC_INTFRCL_INTFRC2 (0x4) -#define MCF_INTC_INTFRCL_INTFRC3 (0x8) -#define MCF_INTC_INTFRCL_INTFRC4 (0x10) -#define MCF_INTC_INTFRCL_INTFRC5 (0x20) -#define MCF_INTC_INTFRCL_INTFRC6 (0x40) -#define MCF_INTC_INTFRCL_INTFRC7 (0x80) -#define MCF_INTC_INTFRCL_INTFRC8 (0x100) -#define MCF_INTC_INTFRCL_INTFRC9 (0x200) -#define MCF_INTC_INTFRCL_INTFRC10 (0x400) -#define MCF_INTC_INTFRCL_INTFRC11 (0x800) -#define MCF_INTC_INTFRCL_INTFRC12 (0x1000) -#define MCF_INTC_INTFRCL_INTFRC13 (0x2000) -#define MCF_INTC_INTFRCL_INTFRC14 (0x4000) -#define MCF_INTC_INTFRCL_INTFRC15 (0x8000) -#define MCF_INTC_INTFRCL_INTFRC16 (0x10000) -#define MCF_INTC_INTFRCL_INTFRC17 (0x20000) -#define MCF_INTC_INTFRCL_INTFRC18 (0x40000) -#define MCF_INTC_INTFRCL_INTFRC19 (0x80000) -#define MCF_INTC_INTFRCL_INTFRC20 (0x100000) -#define MCF_INTC_INTFRCL_INTFRC21 (0x200000) -#define MCF_INTC_INTFRCL_INTFRC22 (0x400000) -#define MCF_INTC_INTFRCL_INTFRC23 (0x800000) -#define MCF_INTC_INTFRCL_INTFRC24 (0x1000000) -#define MCF_INTC_INTFRCL_INTFRC25 (0x2000000) -#define MCF_INTC_INTFRCL_INTFRC26 (0x4000000) -#define MCF_INTC_INTFRCL_INTFRC27 (0x8000000) -#define MCF_INTC_INTFRCL_INTFRC28 (0x10000000) -#define MCF_INTC_INTFRCL_INTFRC29 (0x20000000) -#define MCF_INTC_INTFRCL_INTFRC30 (0x40000000) -#define MCF_INTC_INTFRCL_INTFRC31 (0x80000000) - -/* Bit definitions and macros for MCF_INTC_IRLR */ -#define MCF_INTC_IRLR_IRQ(x) (((x)&0x7F)<<0x1) - -/* Bit definitions and macros for MCF_INTC_IACKLPR */ -#define MCF_INTC_IACKLPR_PRI(x) (((x)&0xF)<<0) -#define MCF_INTC_IACKLPR_LEVEL(x) (((x)&0x7)<<0x4) - -/* Bit definitions and macros for MCF_INTC_ICR */ -#define MCF_INTC_ICR_IP(x) (((x)&0x7)<<0) -#define MCF_INTC_ICR_IL(x) (((x)&0x7)<<0x3) - -/* Bit definitions and macros for MCF_INTC_SWIACK */ -#define MCF_INTC_SWIACK_VECTOR(x) (((x)&0xFF)<<0) - -/* Bit definitions and macros for MCF_INTC_LIACK */ -#define MCF_INTC_LIACK_VECTOR(x) (((x)&0xFF)<<0) - - -#endif /* __MCF52235_INTC_H__ */ diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_PAD.h b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_PAD.h deleted file mode 100644 index 3295613e5..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_PAD.h +++ /dev/null @@ -1,95 +0,0 @@ -/* Coldfire C Header File - * Copyright Freescale Semiconductor Inc - * All rights reserved. - * - * 2007/03/19 Revision: 0.91 - */ - -#ifndef __MCF52235_PAD_H__ -#define __MCF52235_PAD_H__ - - -/********************************************************************* -* -* Common GPIO Registers -* -*********************************************************************/ - -/* Register read/write macros */ -#define MCF_PAD_PWOR (*(vuint16*)(&__IPSBAR[0x100078])) -#define MCF_PAD_PDSR1 (*(vuint16*)(&__IPSBAR[0x10007A])) -#define MCF_PAD_PDSR0 (*(vuint32*)(&__IPSBAR[0x10007C])) - - -/* Bit definitions and macros for MCF_PAD_PWOR */ -#define MCF_PAD_PWOR_PWOR0 (0x1) -#define MCF_PAD_PWOR_PWOR1 (0x2) -#define MCF_PAD_PWOR_PWOR2 (0x4) -#define MCF_PAD_PWOR_PWOR3 (0x8) -#define MCF_PAD_PWOR_PWOR4 (0x10) -#define MCF_PAD_PWOR_PWOR5 (0x20) -#define MCF_PAD_PWOR_PWOR6 (0x40) -#define MCF_PAD_PWOR_PWOR7 (0x80) -#define MCF_PAD_PWOR_PWOR8 (0x100) -#define MCF_PAD_PWOR_PWOR9 (0x200) -#define MCF_PAD_PWOR_PWOR10 (0x400) -#define MCF_PAD_PWOR_PWOR11 (0x800) -#define MCF_PAD_PWOR_PWOR12 (0x1000) -#define MCF_PAD_PWOR_PWOR13 (0x2000) -#define MCF_PAD_PWOR_PWOR14 (0x4000) -#define MCF_PAD_PWOR_PWOR15 (0x8000) - -/* Bit definitions and macros for MCF_PAD_PDSR1 */ -#define MCF_PAD_PDSR1_PDSR32 (0x1) -#define MCF_PAD_PDSR1_PDSR33 (0x2) -#define MCF_PAD_PDSR1_PDSR34 (0x4) -#define MCF_PAD_PDSR1_PDSR35 (0x8) -#define MCF_PAD_PDSR1_PDSR36 (0x10) -#define MCF_PAD_PDSR1_PDSR37 (0x20) -#define MCF_PAD_PDSR1_PDSR38 (0x40) -#define MCF_PAD_PDSR1_PDSR39 (0x80) -#define MCF_PAD_PDSR1_PDSR40 (0x100) -#define MCF_PAD_PDSR1_PDSR41 (0x200) -#define MCF_PAD_PDSR1_PDSR42 (0x400) -#define MCF_PAD_PDSR1_PDSR43 (0x800) -#define MCF_PAD_PDSR1_PDSR44 (0x1000) -#define MCF_PAD_PDSR1_PDSR45 (0x2000) -#define MCF_PAD_PDSR1_PDSR46 (0x4000) -#define MCF_PAD_PDSR1_PDSR47 (0x8000) - -/* Bit definitions and macros for MCF_PAD_PDSR0 */ -#define MCF_PAD_PDSR0_PDSR0 (0x1) -#define MCF_PAD_PDSR0_PDSR1 (0x2) -#define MCF_PAD_PDSR0_PDSR2 (0x4) -#define MCF_PAD_PDSR0_PDSR3 (0x8) -#define MCF_PAD_PDSR0_PDSR4 (0x10) -#define MCF_PAD_PDSR0_PDSR5 (0x20) -#define MCF_PAD_PDSR0_PDSR6 (0x40) -#define MCF_PAD_PDSR0_PDSR7 (0x80) -#define MCF_PAD_PDSR0_PDSR8 (0x100) -#define MCF_PAD_PDSR0_PDSR9 (0x200) -#define MCF_PAD_PDSR0_PDSR10 (0x400) -#define MCF_PAD_PDSR0_PDSR11 (0x800) -#define MCF_PAD_PDSR0_PDSR12 (0x1000) -#define MCF_PAD_PDSR0_PDSR13 (0x2000) -#define MCF_PAD_PDSR0_PDSR14 (0x4000) -#define MCF_PAD_PDSR0_PDSR15 (0x8000) -#define MCF_PAD_PDSR0_PDSR16 (0x10000) -#define MCF_PAD_PDSR0_PDSR17 (0x20000) -#define MCF_PAD_PDSR0_PDSR18 (0x40000) -#define MCF_PAD_PDSR0_PDSR19 (0x80000) -#define MCF_PAD_PDSR0_PDSR20 (0x100000) -#define MCF_PAD_PDSR0_PDSR21 (0x200000) -#define MCF_PAD_PDSR0_PDSR22 (0x400000) -#define MCF_PAD_PDSR0_PDSR23 (0x800000) -#define MCF_PAD_PDSR0_PDSR24 (0x1000000) -#define MCF_PAD_PDSR0_PDSR25 (0x2000000) -#define MCF_PAD_PDSR0_PDSR26 (0x4000000) -#define MCF_PAD_PDSR0_PDSR27 (0x8000000) -#define MCF_PAD_PDSR0_PDSR28 (0x10000000) -#define MCF_PAD_PDSR0_PDSR29 (0x20000000) -#define MCF_PAD_PDSR0_PDSR30 (0x40000000) -#define MCF_PAD_PDSR0_PDSR31 (0x80000000) - - -#endif /* __MCF52235_PAD_H__ */ diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_PIT.h b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_PIT.h deleted file mode 100644 index ac598df49..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_PIT.h +++ /dev/null @@ -1,49 +0,0 @@ -/* Coldfire C Header File - * Copyright Freescale Semiconductor Inc - * All rights reserved. - * - * 2007/03/19 Revision: 0.91 - */ - -#ifndef __MCF52235_PIT_H__ -#define __MCF52235_PIT_H__ - - -/********************************************************************* -* -* Programmable Interrupt Timer (PIT) -* -*********************************************************************/ - -/* Register read/write macros */ -#define MCF_PIT0_PCSR (*(vuint16*)(&__IPSBAR[0x150000])) -#define MCF_PIT0_PMR (*(vuint16*)(&__IPSBAR[0x150002])) -#define MCF_PIT0_PCNTR (*(vuint16*)(&__IPSBAR[0x150004])) - -#define MCF_PIT1_PCSR (*(vuint16*)(&__IPSBAR[0x160000])) -#define MCF_PIT1_PMR (*(vuint16*)(&__IPSBAR[0x160002])) -#define MCF_PIT1_PCNTR (*(vuint16*)(&__IPSBAR[0x160004])) - -#define MCF_PIT_PCSR(x) (*(vuint16*)(&__IPSBAR[0x150000 + ((x)*0x10000)])) -#define MCF_PIT_PMR(x) (*(vuint16*)(&__IPSBAR[0x150002 + ((x)*0x10000)])) -#define MCF_PIT_PCNTR(x) (*(vuint16*)(&__IPSBAR[0x150004 + ((x)*0x10000)])) - - -/* Bit definitions and macros for MCF_PIT_PCSR */ -#define MCF_PIT_PCSR_EN (0x1) -#define MCF_PIT_PCSR_RLD (0x2) -#define MCF_PIT_PCSR_PIF (0x4) -#define MCF_PIT_PCSR_PIE (0x8) -#define MCF_PIT_PCSR_OVW (0x10) -#define MCF_PIT_PCSR_DBG (0x20) -#define MCF_PIT_PCSR_DOZE (0x40) -#define MCF_PIT_PCSR_PRE(x) (((x)&0xF)<<0x8) - -/* Bit definitions and macros for MCF_PIT_PMR */ -#define MCF_PIT_PMR_PM(x) (((x)&0xFFFF)<<0) - -/* Bit definitions and macros for MCF_PIT_PCNTR */ -#define MCF_PIT_PCNTR_PC(x) (((x)&0xFFFF)<<0) - - -#endif /* __MCF52235_PIT_H__ */ diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_PMM.h b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_PMM.h deleted file mode 100644 index 65712dd1c..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_PMM.h +++ /dev/null @@ -1,41 +0,0 @@ -/* Coldfire C Header File - * Copyright Freescale Semiconductor Inc - * All rights reserved. - * - * 2007/03/19 Revision: 0.91 - */ - -#ifndef __MCF52235_PMM_H__ -#define __MCF52235_PMM_H__ - - -/********************************************************************* -* -* Power Management (PMM) -* -*********************************************************************/ - -/* Register read/write macros */ -#define MCF_PMM_LPICR (*(vuint8 *)(&__IPSBAR[0x12])) -#define MCF_PMM_LPCR (*(vuint8 *)(&__IPSBAR[0x110007])) - - -/* Bit definitions and macros for MCF_PMM_LPICR */ -#define MCF_PMM_LPICR_XLPM_IPL(x) (((x)&0x7)<<0x4) -#define MCF_PMM_LPICR_ENBSTOP (0x80) - -/* Bit definitions and macros for MCF_PMM_LPCR */ -#define MCF_PMM_LPCR_LVDSE (0x2) -#define MCF_PMM_LPCR_STPMD(x) (((x)&0x3)<<0x3) -#define MCF_PMM_LPCR_STPMD_SYS_DISABLED (0) -#define MCF_PMM_LPCR_STPMD_SYS_CLKOUT_DISABLED (0x8) -#define MCF_PMM_LPCR_STPMD_ONLY_OSC_ENABLED (0x10) -#define MCF_PMM_LPCR_STPMD_ALL_DISABLED (0x18) -#define MCF_PMM_LPCR_LPMD(x) (((x)&0x3)<<0x6) -#define MCF_PMM_LPCR_LPMD_RUN (0) -#define MCF_PMM_LPCR_LPMD_DOZE (0x40) -#define MCF_PMM_LPCR_LPMD_WAIT (0x80) -#define MCF_PMM_LPCR_LPMD_STOP (0xC0) - - -#endif /* __MCF52235_PMM_H__ */ diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_PWM.h b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_PWM.h deleted file mode 100644 index a4774e784..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_PWM.h +++ /dev/null @@ -1,134 +0,0 @@ -/* Coldfire C Header File - * Copyright Freescale Semiconductor Inc - * All rights reserved. - * - * 2007/03/19 Revision: 0.91 - */ - -#ifndef __MCF52235_PWM_H__ -#define __MCF52235_PWM_H__ - - -/********************************************************************* -* -* Pulse Width Modulation (PWM) -* -*********************************************************************/ - -/* Register read/write macros */ -#define MCF_PWM_PWME (*(vuint8 *)(&__IPSBAR[0x1B0000])) -#define MCF_PWM_PWMPOL (*(vuint8 *)(&__IPSBAR[0x1B0001])) -#define MCF_PWM_PWMCLK (*(vuint8 *)(&__IPSBAR[0x1B0002])) -#define MCF_PWM_PWMPRCLK (*(vuint8 *)(&__IPSBAR[0x1B0003])) -#define MCF_PWM_PWMCAE (*(vuint8 *)(&__IPSBAR[0x1B0004])) -#define MCF_PWM_PWMCTL (*(vuint8 *)(&__IPSBAR[0x1B0005])) -#define MCF_PWM_PWMSCLA (*(vuint8 *)(&__IPSBAR[0x1B0008])) -#define MCF_PWM_PWMSCLB (*(vuint8 *)(&__IPSBAR[0x1B0009])) -#define MCF_PWM_PWMCNT0 (*(vuint8 *)(&__IPSBAR[0x1B000C])) -#define MCF_PWM_PWMCNT1 (*(vuint8 *)(&__IPSBAR[0x1B000D])) -#define MCF_PWM_PWMCNT2 (*(vuint8 *)(&__IPSBAR[0x1B000E])) -#define MCF_PWM_PWMCNT3 (*(vuint8 *)(&__IPSBAR[0x1B000F])) -#define MCF_PWM_PWMCNT4 (*(vuint8 *)(&__IPSBAR[0x1B0010])) -#define MCF_PWM_PWMCNT5 (*(vuint8 *)(&__IPSBAR[0x1B0011])) -#define MCF_PWM_PWMCNT6 (*(vuint8 *)(&__IPSBAR[0x1B0012])) -#define MCF_PWM_PWMCNT7 (*(vuint8 *)(&__IPSBAR[0x1B0013])) -#define MCF_PWM_PWMPER0 (*(vuint8 *)(&__IPSBAR[0x1B0014])) -#define MCF_PWM_PWMPER1 (*(vuint8 *)(&__IPSBAR[0x1B0015])) -#define MCF_PWM_PWMPER2 (*(vuint8 *)(&__IPSBAR[0x1B0016])) -#define MCF_PWM_PWMPER3 (*(vuint8 *)(&__IPSBAR[0x1B0017])) -#define MCF_PWM_PWMPER4 (*(vuint8 *)(&__IPSBAR[0x1B0018])) -#define MCF_PWM_PWMPER5 (*(vuint8 *)(&__IPSBAR[0x1B0019])) -#define MCF_PWM_PWMPER6 (*(vuint8 *)(&__IPSBAR[0x1B001A])) -#define MCF_PWM_PWMPER7 (*(vuint8 *)(&__IPSBAR[0x1B001B])) -#define MCF_PWM_PWMDTY0 (*(vuint8 *)(&__IPSBAR[0x1B001C])) -#define MCF_PWM_PWMDTY1 (*(vuint8 *)(&__IPSBAR[0x1B001D])) -#define MCF_PWM_PWMDTY2 (*(vuint8 *)(&__IPSBAR[0x1B001E])) -#define MCF_PWM_PWMDTY3 (*(vuint8 *)(&__IPSBAR[0x1B001F])) -#define MCF_PWM_PWMDTY4 (*(vuint8 *)(&__IPSBAR[0x1B0020])) -#define MCF_PWM_PWMDTY5 (*(vuint8 *)(&__IPSBAR[0x1B0021])) -#define MCF_PWM_PWMDTY6 (*(vuint8 *)(&__IPSBAR[0x1B0022])) -#define MCF_PWM_PWMDTY7 (*(vuint8 *)(&__IPSBAR[0x1B0023])) -#define MCF_PWM_PWMSDN (*(vuint8 *)(&__IPSBAR[0x1B0024])) -#define MCF_PWM_PWMCNT(x) (*(vuint8 *)(&__IPSBAR[0x1B000C + ((x)*0x1)])) -#define MCF_PWM_PWMPER(x) (*(vuint8 *)(&__IPSBAR[0x1B0014 + ((x)*0x1)])) -#define MCF_PWM_PWMDTY(x) (*(vuint8 *)(&__IPSBAR[0x1B001C + ((x)*0x1)])) - - -/* Bit definitions and macros for MCF_PWM_PWME */ -#define MCF_PWM_PWME_PWME0 (0x1) -#define MCF_PWM_PWME_PWME1 (0x2) -#define MCF_PWM_PWME_PWME2 (0x4) -#define MCF_PWM_PWME_PWME3 (0x8) -#define MCF_PWM_PWME_PWME4 (0x10) -#define MCF_PWM_PWME_PWME5 (0x20) -#define MCF_PWM_PWME_PWME6 (0x40) -#define MCF_PWM_PWME_PWME7 (0x80) - -/* Bit definitions and macros for MCF_PWM_PWMPOL */ -#define MCF_PWM_PWMPOL_PPOL0 (0x1) -#define MCF_PWM_PWMPOL_PPOL1 (0x2) -#define MCF_PWM_PWMPOL_PPOL2 (0x4) -#define MCF_PWM_PWMPOL_PPOL3 (0x8) -#define MCF_PWM_PWMPOL_PPOL4 (0x10) -#define MCF_PWM_PWMPOL_PPOL5 (0x20) -#define MCF_PWM_PWMPOL_PPOL6 (0x40) -#define MCF_PWM_PWMPOL_PPOL7 (0x80) - -/* Bit definitions and macros for MCF_PWM_PWMCLK */ -#define MCF_PWM_PWMCLK_PCLK0 (0x1) -#define MCF_PWM_PWMCLK_PCLK1 (0x2) -#define MCF_PWM_PWMCLK_PCLK2 (0x4) -#define MCF_PWM_PWMCLK_PCLK3 (0x8) -#define MCF_PWM_PWMCLK_PCLK4 (0x10) -#define MCF_PWM_PWMCLK_PCLK5 (0x20) -#define MCF_PWM_PWMCLK_PCLK6 (0x40) -#define MCF_PWM_PWMCLK_PCLK7 (0x80) - -/* Bit definitions and macros for MCF_PWM_PWMPRCLK */ -#define MCF_PWM_PWMPRCLK_PCKA(x) (((x)&0x7)<<0) -#define MCF_PWM_PWMPRCLK_PCKB(x) (((x)&0x7)<<0x4) - -/* Bit definitions and macros for MCF_PWM_PWMCAE */ -#define MCF_PWM_PWMCAE_CAE0 (0x1) -#define MCF_PWM_PWMCAE_CAE1 (0x2) -#define MCF_PWM_PWMCAE_CAE2 (0x4) -#define MCF_PWM_PWMCAE_CAE3 (0x8) -#define MCF_PWM_PWMCAE_CAE4 (0x10) -#define MCF_PWM_PWMCAE_CAE5 (0x20) -#define MCF_PWM_PWMCAE_CAE6 (0x40) -#define MCF_PWM_PWMCAE_CAE7 (0x80) - -/* Bit definitions and macros for MCF_PWM_PWMCTL */ -#define MCF_PWM_PWMCTL_PFRZ (0x4) -#define MCF_PWM_PWMCTL_PSWAI (0x8) -#define MCF_PWM_PWMCTL_CON01 (0x10) -#define MCF_PWM_PWMCTL_CON23 (0x20) -#define MCF_PWM_PWMCTL_CON45 (0x40) -#define MCF_PWM_PWMCTL_CON67 (0x80) - -/* Bit definitions and macros for MCF_PWM_PWMSCLA */ -#define MCF_PWM_PWMSCLA_SCALEA(x) (((x)&0xFF)<<0) - -/* Bit definitions and macros for MCF_PWM_PWMSCLB */ -#define MCF_PWM_PWMSCLB_SCALEB(x) (((x)&0xFF)<<0) - -/* Bit definitions and macros for MCF_PWM_PWMCNT */ -#define MCF_PWM_PWMCNT_COUNT(x) (((x)&0xFF)<<0) - -/* Bit definitions and macros for MCF_PWM_PWMPER */ -#define MCF_PWM_PWMPER_PERIOD(x) (((x)&0xFF)<<0) - -/* Bit definitions and macros for MCF_PWM_PWMDTY */ -#define MCF_PWM_PWMDTY_DUTY(x) (((x)&0xFF)<<0) - -/* Bit definitions and macros for MCF_PWM_PWMSDN */ -#define MCF_PWM_PWMSDN_SDNEN (0x1) -#define MCF_PWM_PWMSDN_PWM7IL (0x2) -#define MCF_PWM_PWMSDN_PWM7IN (0x4) -#define MCF_PWM_PWMSDN_LVL (0x10) -#define MCF_PWM_PWMSDN_RESTART (0x20) -#define MCF_PWM_PWMSDN_IE (0x40) -#define MCF_PWM_PWMSDN_IF (0x80) - - -#endif /* __MCF52235_PWM_H__ */ diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_QSPI.h b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_QSPI.h deleted file mode 100644 index bb55e96ac..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_QSPI.h +++ /dev/null @@ -1,78 +0,0 @@ -/* Coldfire C Header File - * Copyright Freescale Semiconductor Inc - * All rights reserved. - * - * 2007/03/19 Revision: 0.91 - */ - -#ifndef __MCF52235_QSPI_H__ -#define __MCF52235_QSPI_H__ - - -/********************************************************************* -* -* Queued Serial Peripheral Interface (QSPI) -* -*********************************************************************/ - -/* Register read/write macros */ -#define MCF_QSPI_QMR (*(vuint16*)(&__IPSBAR[0x340])) -#define MCF_QSPI_QDLYR (*(vuint16*)(&__IPSBAR[0x344])) -#define MCF_QSPI_QWR (*(vuint16*)(&__IPSBAR[0x348])) -#define MCF_QSPI_QIR (*(vuint16*)(&__IPSBAR[0x34C])) -#define MCF_QSPI_QAR (*(vuint16*)(&__IPSBAR[0x350])) -#define MCF_QSPI_QDR (*(vuint16*)(&__IPSBAR[0x354])) - - -/* Bit definitions and macros for MCF_QSPI_QMR */ -#define MCF_QSPI_QMR_BAUD(x) (((x)&0xFF)<<0) -#define MCF_QSPI_QMR_CPHA (0x100) -#define MCF_QSPI_QMR_CPOL (0x200) -#define MCF_QSPI_QMR_BITS(x) (((x)&0xF)<<0xA) -#define MCF_QSPI_QMR_DOHIE (0x4000) -#define MCF_QSPI_QMR_MSTR (0x8000) - -/* Bit definitions and macros for MCF_QSPI_QDLYR */ -#define MCF_QSPI_QDLYR_DTL(x) (((x)&0xFF)<<0) -#define MCF_QSPI_QDLYR_QCD(x) (((x)&0x7F)<<0x8) -#define MCF_QSPI_QDLYR_SPE (0x8000) - -/* Bit definitions and macros for MCF_QSPI_QWR */ -#define MCF_QSPI_QWR_NEWQP(x) (((x)&0xF)<<0) -#define MCF_QSPI_QWR_CPTQP(x) (((x)&0xF)<<0x4) -#define MCF_QSPI_QWR_ENDQP(x) (((x)&0xF)<<0x8) -#define MCF_QSPI_QWR_CSIV (0x1000) -#define MCF_QSPI_QWR_WRTO (0x2000) -#define MCF_QSPI_QWR_WREN (0x4000) -#define MCF_QSPI_QWR_HALT (0x8000) - -/* Bit definitions and macros for MCF_QSPI_QIR */ -#define MCF_QSPI_QIR_SPIF (0x1) -#define MCF_QSPI_QIR_ABRT (0x4) -#define MCF_QSPI_QIR_WCEF (0x8) -#define MCF_QSPI_QIR_SPIFE (0x100) -#define MCF_QSPI_QIR_ABRTE (0x400) -#define MCF_QSPI_QIR_WCEFE (0x800) -#define MCF_QSPI_QIR_ABRTL (0x1000) -#define MCF_QSPI_QIR_ABRTB (0x4000) -#define MCF_QSPI_QIR_WCEFB (0x8000) - -/* Bit definitions and macros for MCF_QSPI_QAR */ -#define MCF_QSPI_QAR_ADDR(x) (((x)&0x3F)<<0) -#define MCF_QSPI_QAR_TRANS (0) -#define MCF_QSPI_QAR_RECV (0x10) -#define MCF_QSPI_QAR_CMD (0x20) - -/* Bit definitions and macros for MCF_QSPI_QDR */ -#define MCF_QSPI_QDR_DATA(x) (((x)&0xFFFF)<<0) -#define MCF_QSPI_QDR_CONT (0x8000) -#define MCF_QSPI_QDR_BITSE (0x4000) -#define MCF_QSPI_QDR_DT (0x2000) -#define MCF_QSPI_QDR_DSCK (0x1000) -#define MCF_QSPI_QDR_QSPI_CS3 (0x800) -#define MCF_QSPI_QDR_QSPI_CS2 (0x400) -#define MCF_QSPI_QDR_QSPI_CS1 (0x200) -#define MCF_QSPI_QDR_QSPI_CS0 (0x100) - - -#endif /* __MCF52235_QSPI_H__ */ diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_RCM.h b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_RCM.h deleted file mode 100644 index dda8e5f91..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_RCM.h +++ /dev/null @@ -1,45 +0,0 @@ -/* Coldfire C Header File - * Copyright Freescale Semiconductor Inc - * All rights reserved. - * - * 2007/03/19 Revision: 0.91 - */ - -#ifndef __MCF52235_RCM_H__ -#define __MCF52235_RCM_H__ - - -/********************************************************************* -* -* Reset Controller Module (RCM) -* -*********************************************************************/ - -/* Register read/write macros */ -#define MCF_RCM_RCR (*(vuint8 *)(&__IPSBAR[0x110000])) -#define MCF_RCM_RSR (*(vuint8 *)(&__IPSBAR[0x110001])) -#define MCF_RCM_CCR (*(vuint16*)(&__IPSBAR[0x110004])) -#define MCF_RCM_CIR (*(vuint16*)(&__IPSBAR[0x11000A])) - -/* Bit definitions and macros for MCF_RCM_RCR */ -#define MCF_RCM_RCR_LVDE (0x1) -#define MCF_RCM_RCR_LVDRE (0x4) -#define MCF_RCM_RCR_LVDIE (0x8) -#define MCF_RCM_RCR_LVDF (0x10) -#define MCF_RCM_RCR_FRCRSTOUT (0x40) -#define MCF_RCM_RCR_SOFTRST (0x80) - -/* Bit definitions and macros for MCF_RCM_RSR */ -#define MCF_RCM_RSR_LOL (0x1) -#define MCF_RCM_RSR_LOC (0x2) -#define MCF_RCM_RSR_EXT (0x4) -#define MCF_RCM_RSR_POR (0x8) -#define MCF_RCM_RSR_WDR (0x10) -#define MCF_RCM_RSR_SOFT (0x20) -#define MCF_RCM_RSR_LVD (0x40) - -/* Bit definitions and macros for MCF_RCM_CCR */ -#define MCF_RCM_CCR_LOAD (0x8000) - - -#endif /* __MCF52235_RCM_H__ */ diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_RNGA.h b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_RNGA.h deleted file mode 100644 index 53c4d017c..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_RNGA.h +++ /dev/null @@ -1,48 +0,0 @@ -/* Coldfire C Header File - * Copyright Freescale Semiconductor Inc - * All rights reserved. - * - * 2007/03/19 Revision: 0.91 - */ - -#ifndef __MCF52235_RNGA_H__ -#define __MCF52235_RNGA_H__ - - -/********************************************************************* -* -* Random Number Generator (RNG) -* -*********************************************************************/ - -/* Register read/write macros */ -#define MCF_RNGA_RNGCR (*(vuint32*)(&__IPSBAR[0x1F0000])) -#define MCF_RNGA_RNGSR (*(vuint32*)(&__IPSBAR[0x1F0004])) -#define MCF_RNGA_RNGER (*(vuint32*)(&__IPSBAR[0x1F0008])) -#define MCF_RNGA_RNGOUT (*(vuint32*)(&__IPSBAR[0x1F000C])) - - -/* Bit definitions and macros for MCF_RNGA_RNGCR */ -#define MCF_RNGA_RNGCR_GO (0x1) -#define MCF_RNGA_RNGCR_HA (0x2) -#define MCF_RNGA_RNGCR_IM (0x4) -#define MCF_RNGA_RNGCR_CI (0x8) -#define MCF_RNGA_RNGCR_SLM (0x10) - -/* Bit definitions and macros for MCF_RNGA_RNGSR */ -#define MCF_RNGA_RNGSR_SV (0x1) -#define MCF_RNGA_RNGSR_LRS (0x2) -#define MCF_RNGA_RNGSR_OUF (0x4) -#define MCF_RNGA_RNGSR_EI (0x8) -#define MCF_RNGA_RNGSR_SLP (0x10) -#define MCF_RNGA_RNGSR_ORL(x) (((x)&0xFF)<<0x8) -#define MCF_RNGA_RNGSR_ORS(x) (((x)&0xFF)<<0x10) - -/* Bit definitions and macros for MCF_RNGA_RNGER */ -#define MCF_RNGA_RNGER_ENT(x) (((x)&0xFFFFFFFF)<<0) - -/* Bit definitions and macros for MCF_RNGA_RNGOUT */ -#define MCF_RNGA_RNGOUT_RANDOM_OUTPUT(x) (((x)&0xFFFFFFFF)<<0) - - -#endif /* __MCF52235_RNGA_H__ */ diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_RTC.h b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_RTC.h deleted file mode 100644 index a984b24d5..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_RTC.h +++ /dev/null @@ -1,75 +0,0 @@ -/* Coldfire C Header File - * Copyright Freescale Semiconductor Inc - * All rights reserved. - * - * 2007/03/19 Revision: 0.91 - */ - -#ifndef __MCF52235_RTC_H__ -#define __MCF52235_RTC_H__ - - -/********************************************************************* -* -* Real-Time Clock (RTC) -* -*********************************************************************/ - -/* Register read/write macros */ -#define MCF_RTC_HOURMIN (*(vuint32*)(&__IPSBAR[0x3C0])) -#define MCF_RTC_SECONDS (*(vuint32*)(&__IPSBAR[0x3C4])) -#define MCF_RTC_ALRM_HM (*(vuint32*)(&__IPSBAR[0x3C8])) -#define MCF_RTC_ALRM_SEC (*(vuint32*)(&__IPSBAR[0x3CC])) -#define MCF_RTC_RTCCTL (*(vuint32*)(&__IPSBAR[0x3D0])) -#define MCF_RTC_RTCISR (*(vuint32*)(&__IPSBAR[0x3D4])) -#define MCF_RTC_RTCIENR (*(vuint32*)(&__IPSBAR[0x3D8])) -#define MCF_RTC_STPWCH (*(vuint32*)(&__IPSBAR[0x3DC])) -#define MCF_RTC_DAYS (*(vuint32*)(&__IPSBAR[0x3E0])) -#define MCF_RTC_ALRM_DAY (*(vuint32*)(&__IPSBAR[0x3E4])) - - -/* Bit definitions and macros for MCF_RTC_HOURMIN */ -#define MCF_RTC_HOURMIN_MINUTES(x) (((x)&0x3F)<<0) -#define MCF_RTC_HOURMIN_HOURS(x) (((x)&0x1F)<<0x8) - -/* Bit definitions and macros for MCF_RTC_SECONDS */ -#define MCF_RTC_SECONDS_SECONDS(x) (((x)&0x3F)<<0) - -/* Bit definitions and macros for MCF_RTC_ALRM_HM */ -#define MCF_RTC_ALRM_HM_MINUTES(x) (((x)&0x3F)<<0) -#define MCF_RTC_ALRM_HM_HOURS(x) (((x)&0x1F)<<0x8) - -/* Bit definitions and macros for MCF_RTC_ALRM_SEC */ -#define MCF_RTC_ALRM_SEC_SECONDS(x) (((x)&0x3F)<<0) - -/* Bit definitions and macros for MCF_RTC_RTCCTL */ -#define MCF_RTC_RTCCTL_SWR (0x1) -#define MCF_RTC_RTCCTL_EN (0x80) - -/* Bit definitions and macros for MCF_RTC_RTCISR */ -#define MCF_RTC_RTCISR_SW (0x1) -#define MCF_RTC_RTCISR_MIN (0x2) -#define MCF_RTC_RTCISR_ALM (0x4) -#define MCF_RTC_RTCISR_DAY (0x8) -#define MCF_RTC_RTCISR_1HZ (0x10) -#define MCF_RTC_RTCISR_HR (0x20) - -/* Bit definitions and macros for MCF_RTC_RTCIENR */ -#define MCF_RTC_RTCIENR_SW (0x1) -#define MCF_RTC_RTCIENR_MIN (0x2) -#define MCF_RTC_RTCIENR_ALM (0x4) -#define MCF_RTC_RTCIENR_DAY (0x8) -#define MCF_RTC_RTCIENR_1HZ (0x10) -#define MCF_RTC_RTCIENR_HR (0x20) - -/* Bit definitions and macros for MCF_RTC_STPWCH */ -#define MCF_RTC_STPWCH_CNT(x) (((x)&0x3F)<<0) - -/* Bit definitions and macros for MCF_RTC_DAYS */ -#define MCF_RTC_DAYS_DAYS(x) (((x)&0xFFFF)<<0) - -/* Bit definitions and macros for MCF_RTC_ALRM_DAY */ -#define MCF_RTC_ALRM_DAY_DAYSAL(x) (((x)&0xFFFF)<<0) - - -#endif /* __MCF52235_RTC_H__ */ diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_SCM.h b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_SCM.h deleted file mode 100644 index b50dc30a7..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_SCM.h +++ /dev/null @@ -1,201 +0,0 @@ -/* Coldfire C Header File - * Copyright Freescale Semiconductor Inc - * All rights reserved. - * - * 2007/03/19 Revision: 0.91 - */ - -#ifndef __MCF52235_SCM_H__ -#define __MCF52235_SCM_H__ - - -/********************************************************************* -* -* System Control Module (SCM) -* -*********************************************************************/ - -/* Register read/write macros */ -#define MCF_SCM_RAMBAR (*(vuint32*)(&__IPSBAR[0x8])) -#define MCF_SCM_PPMRH (*(vuint32*)(&__IPSBAR[0xC])) -#define MCF_SCM_CRSR (*(vuint8 *)(&__IPSBAR[0x10])) -#define MCF_SCM_CWCR (*(vuint8 *)(&__IPSBAR[0x11])) -#define MCF_SCM_CWSR (*(vuint8 *)(&__IPSBAR[0x13])) -#define MCF_SCM_DMAREQC (*(vuint32*)(&__IPSBAR[0x14])) -#define MCF_SCM_PPMRL (*(vuint32*)(&__IPSBAR[0x18])) -#define MCF_SCM_MPARK (*(vuint32*)(&__IPSBAR[0x1C])) -#define MCF_SCM_MPR (*(vuint8 *)(&__IPSBAR[0x20])) -#define MCF_SCM_PPMRS (*(vuint8 *)(&__IPSBAR[0x21])) -#define MCF_SCM_PPMRC (*(vuint8 *)(&__IPSBAR[0x22])) -#define MCF_SCM_IPSBMT (*(vuint8 *)(&__IPSBAR[0x23])) -#define MCF_SCM_PACR0 (*(vuint8 *)(&__IPSBAR[0x24])) -#define MCF_SCM_PACR1 (*(vuint8 *)(&__IPSBAR[0x25])) -#define MCF_SCM_PACR2 (*(vuint8 *)(&__IPSBAR[0x26])) -#define MCF_SCM_PACR3 (*(vuint8 *)(&__IPSBAR[0x27])) -#define MCF_SCM_PACR4 (*(vuint8 *)(&__IPSBAR[0x28])) -#define MCF_SCM_PACR5 (*(vuint8 *)(&__IPSBAR[0x29])) -#define MCF_SCM_PACR6 (*(vuint8 *)(&__IPSBAR[0x2A])) -#define MCF_SCM_PACR7 (*(vuint8 *)(&__IPSBAR[0x2B])) -#define MCF_SCM_PACR8 (*(vuint8 *)(&__IPSBAR[0x2C])) -#define MCF_SCM_GPACR0 (*(vuint8 *)(&__IPSBAR[0x30])) -#define MCF_SCM_GPACR1 (*(vuint8 *)(&__IPSBAR[0x31])) -#define MCF_SCM_PACR(x) (*(vuint8 *)(&__IPSBAR[0x24 + ((x)*0x1)])) -#define MCF_SCM_GPACR(x) (*(vuint8 *)(&__IPSBAR[0x30 + ((x)*0x1)])) - -/* Other macros */ -#define MCF_SCM_IPSBAR (*(vuint32*)(&__IPSBAR[0x0])) -#define MCF_SCM_IPSBAR_V (0x1) -#define MCF_SCM_IPSBAR_BA(x) ((x)&0xC0000000) - - -/* Bit definitions and macros for MCF_SCM_RAMBAR */ -#define MCF_SCM_RAMBAR_BDE (0x200) -#define MCF_SCM_RAMBAR_BA(x) ((x)&0xFFFF0000) - -/* Bit definitions and macros for MCF_SCM_PPMRH */ -#define MCF_SCM_PPMRH_CDPORTS (0x1) -#define MCF_SCM_PPMRH_CDEPORT (0x2) -#define MCF_SCM_PPMRH_CDPIT0 (0x8) -#define MCF_SCM_PPMRH_CDPIT1 (0x10) -#define MCF_SCM_PPMRH_CDADC (0x80) -#define MCF_SCM_PPMRH_CDGPT (0x100) -#define MCF_SCM_PPMRH_CDPWM (0x200) -#define MCF_SCM_PPMRH_CDFCAN (0x400) -#define MCF_SCM_PPMRH_CDCFM (0x800) -#define MCF_SCM_PPMRH_CDEPHY (0x1000) -#define MCF_SCM_PPMRH_CDRNGA (0x2000) - -/* Bit definitions and macros for MCF_SCM_CRSR */ -#define MCF_SCM_CRSR_CWDR (0x20) -#define MCF_SCM_CRSR_EXT (0x80) - -/* Bit definitions and macros for MCF_SCM_CWCR */ -#define MCF_SCM_CWCR_CWTIF (0x1) -#define MCF_SCM_CWCR_CWTAVAL (0x2) -#define MCF_SCM_CWCR_CWTA (0x4) -#define MCF_SCM_CWCR_CWT(x) (((x)&0x7)<<0x3) -#define MCF_SCM_CWCR_CWT_2_9 (0) -#define MCF_SCM_CWCR_CWT_2_11 (0x8) -#define MCF_SCM_CWCR_CWT_2_13 (0x10) -#define MCF_SCM_CWCR_CWT_2_15 (0x18) -#define MCF_SCM_CWCR_CWT_2_19 (0x20) -#define MCF_SCM_CWCR_CWT_2_23 (0x28) -#define MCF_SCM_CWCR_CWT_2_27 (0x30) -#define MCF_SCM_CWCR_CWT_2_31 (0x38) -#define MCF_SCM_CWCR_CWRI (0x40) -#define MCF_SCM_CWCR_CWE (0x80) - -/* Bit definitions and macros for MCF_SCM_CWSR */ -#define MCF_SCM_CWSR_CWSR(x) (((x)&0xFF)<<0) - -/* Bit definitions and macros for MCF_SCM_DMAREQC */ -#define MCF_SCM_DMAREQC_DMAC0(x) (((x)&0xF)<<0) -#define MCF_SCM_DMAREQC_DMAC1(x) (((x)&0xF)<<0x4) -#define MCF_SCM_DMAREQC_DMAC2(x) (((x)&0xF)<<0x8) -#define MCF_SCM_DMAREQC_DMAC3(x) (((x)&0xF)<<0xC) - -/* Bit definitions and macros for MCF_SCM_PPMRL */ -#define MCF_SCM_PPMRL_CDG (0x2) -#define MCF_SCM_PPMRL_CDDMA (0x10) -#define MCF_SCM_PPMRL_CDUART0 (0x20) -#define MCF_SCM_PPMRL_CDUART1 (0x40) -#define MCF_SCM_PPMRL_CDUART2 (0x80) -#define MCF_SCM_PPMRL_CDI2C (0x200) -#define MCF_SCM_PPMRL_CDQSPI (0x400) -#define MCF_SCM_PPMRL_CDRTC (0x1000) -#define MCF_SCM_PPMRL_CDTMR0 (0x2000) -#define MCF_SCM_PPMRL_CDTMR1 (0x4000) -#define MCF_SCM_PPMRL_CDTMR2 (0x8000) -#define MCF_SCM_PPMRL_CDTMR3 (0x10000) -#define MCF_SCM_PPMRL_CDINTC0 (0x20000) -#define MCF_SCM_PPMRL_CDINTC1 (0x40000) -#define MCF_SCM_PPMRL_CDFEC0 (0x200000) - -/* Bit definitions and macros for MCF_SCM_MPARK */ -#define MCF_SCM_MPARK_LCKOUT_TIME(x) (((x)&0xF)<<0x8) -#define MCF_SCM_MPARK_PRKLAST (0x1000) -#define MCF_SCM_MPARK_TIMEOUT (0x2000) -#define MCF_SCM_MPARK_FIXED (0x4000) -#define MCF_SCM_MPARK_M1_PRTY(x) (((x)&0x3)<<0x10) -#define MCF_SCM_MPARK_M0_PRTY(x) (((x)&0x3)<<0x12) -#define MCF_SCM_MPARK_M2_PRTY(x) (((x)&0x3)<<0x14) -#define MCF_SCM_MPARK_BCR24BIT (0x1000000) -#define MCF_SCM_MPARK_M2_P_EN (0x2000000) - -/* Bit definitions and macros for MCF_SCM_MPR */ -#define MCF_SCM_MPR_MPR(x) (((x)&0xF)<<0) - -/* Bit definitions and macros for MCF_SCM_PPMRS */ -#define MCF_SCM_PPMRS_PPMRS(x) (((x)&0x7F)<<0) -#define MCF_SCM_PPMRS_DISABLE_ALL (0x40) -#define MCF_SCM_PPMRS_DISABLE_CFM (0x2B) -#define MCF_SCM_PPMRS_DISABLE_CAN (0x2A) -#define MCF_SCM_PPMRS_DISABLE_PWM (0x29) -#define MCF_SCM_PPMRS_DISABLE_GPT (0x28) -#define MCF_SCM_PPMRS_DISABLE_ADC (0x27) -#define MCF_SCM_PPMRS_DISABLE_PIT1 (0x24) -#define MCF_SCM_PPMRS_DISABLE_PIT0 (0x23) -#define MCF_SCM_PPMRS_DISABLE_EPORT (0x21) -#define MCF_SCM_PPMRS_DISABLE_PORTS (0x20) -#define MCF_SCM_PPMRS_DISABLE_INTC (0x11) -#define MCF_SCM_PPMRS_DISABLE_DTIM3 (0x10) -#define MCF_SCM_PPMRS_DISABLE_DTIM2 (0xF) -#define MCF_SCM_PPMRS_DISABLE_DTIM1 (0xE) -#define MCF_SCM_PPMRS_DISABLE_DTIM0 (0xD) -#define MCF_SCM_PPMRS_DISABLE_QSPI (0xA) -#define MCF_SCM_PPMRS_DISABLE_I2C (0x9) -#define MCF_SCM_PPMRS_DISABLE_UART2 (0x7) -#define MCF_SCM_PPMRS_DISABLE_UART1 (0x6) -#define MCF_SCM_PPMRS_DISABLE_UART0 (0x5) -#define MCF_SCM_PPMRS_DISABLE_DMA (0x4) -#define MCF_SCM_PPMRS_SET_CDG (0x1) - -/* Bit definitions and macros for MCF_SCM_PPMRC */ -#define MCF_SCM_PPMRC_PPMRC(x) (((x)&0x7F)<<0) -#define MCF_SCM_PPMRC_ENABLE_ALL (0x40) -#define MCF_SCM_PPMRC_ENABLE_CFM (0x2B) -#define MCF_SCM_PPMRC_ENABLE_CAN (0x2A) -#define MCF_SCM_PPMRC_ENABLE_PWM (0x29) -#define MCF_SCM_PPMRC_ENABLE_GPT (0x28) -#define MCF_SCM_PPMRC_ENABLE_ADC (0x27) -#define MCF_SCM_PPMRC_ENABLE_PIT1 (0x24) -#define MCF_SCM_PPMRC_ENABLE_PIT0 (0x23) -#define MCF_SCM_PPMRC_ENABLE_EPORT (0x21) -#define MCF_SCM_PPMRC_ENABLE_PORTS (0x20) -#define MCF_SCM_PPMRC_ENABLE_INTC (0x11) -#define MCF_SCM_PPMRC_ENABLE_DTIM3 (0x10) -#define MCF_SCM_PPMRC_ENABLE_DTIM2 (0xF) -#define MCF_SCM_PPMRC_ENABLE_DTIM1 (0xE) -#define MCF_SCM_PPMRC_ENABLE_DTIM0 (0xD) -#define MCF_SCM_PPMRC_ENABLE_QSPI (0xA) -#define MCF_SCM_PPMRC_ENABLE_I2C (0x9) -#define MCF_SCM_PPMRC_ENABLE_UART2 (0x7) -#define MCF_SCM_PPMRC_ENABLE_UART1 (0x6) -#define MCF_SCM_PPMRC_ENABLE_UART0 (0x5) -#define MCF_SCM_PPMRC_ENABLE_DMA (0x4) -#define MCF_SCM_PPMRC_CLEAR_CDG (0x1) - -/* Bit definitions and macros for MCF_SCM_IPSBMT */ -#define MCF_SCM_IPSBMT_BMT(x) (((x)&0x7)<<0) -#define MCF_SCM_IPSBMT_BMT_CYCLES_1024 (0) -#define MCF_SCM_IPSBMT_BMT_CYCLES_512 (0x1) -#define MCF_SCM_IPSBMT_BMT_CYCLES_256 (0x2) -#define MCF_SCM_IPSBMT_BMT_CYCLES_128 (0x3) -#define MCF_SCM_IPSBMT_BMT_CYCLES_64 (0x4) -#define MCF_SCM_IPSBMT_BMT_CYCLES_32 (0x5) -#define MCF_SCM_IPSBMT_BMT_CYCLES_16 (0x6) -#define MCF_SCM_IPSBMT_BMT_CYCLES_8 (0x7) -#define MCF_SCM_IPSBMT_BME (0x8) - -/* Bit definitions and macros for MCF_SCM_PACR */ -#define MCF_SCM_PACR_ACCESS_CTRL0(x) (((x)&0x7)<<0) -#define MCF_SCM_PACR_LOCK0 (0x8) -#define MCF_SCM_PACR_ACCESS_CTRL1(x) (((x)&0x7)<<0x4) -#define MCF_SCM_PACR_LOCK1 (0x80) - -/* Bit definitions and macros for MCF_SCM_GPACR */ -#define MCF_SCM_GPACR_ACCESS_CTRL(x) (((x)&0xF)<<0) -#define MCF_SCM_GPACR_LOCK (0x80) - - -#endif /* __MCF52235_SCM_H__ */ diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_UART.h b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_UART.h deleted file mode 100644 index 40ae73bac..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/MCF5223x/MCF52235_UART.h +++ /dev/null @@ -1,194 +0,0 @@ -/* Coldfire C Header File - * Copyright Freescale Semiconductor Inc - * All rights reserved. - * - * 2007/03/19 Revision: 0.91 - */ - -#ifndef __MCF52235_UART_H__ -#define __MCF52235_UART_H__ - - -/********************************************************************* -* -* Universal Asynchronous Receiver Transmitter (UART) -* -*********************************************************************/ - -/* Register read/write macros */ -#define MCF_UART0_UMR1 (*(vuint8 *)(&__IPSBAR[0x200])) -#define MCF_UART0_UMR2 (*(vuint8 *)(&__IPSBAR[0x200])) -#define MCF_UART0_USR (*(vuint8 *)(&__IPSBAR[0x204])) -#define MCF_UART0_UCSR (*(vuint8 *)(&__IPSBAR[0x204])) -#define MCF_UART0_UCR (*(vuint8 *)(&__IPSBAR[0x208])) -#define MCF_UART0_URB (*(vuint8 *)(&__IPSBAR[0x20C])) -#define MCF_UART0_UTB (*(vuint8 *)(&__IPSBAR[0x20C])) -#define MCF_UART0_UIPCR (*(vuint8 *)(&__IPSBAR[0x210])) -#define MCF_UART0_UACR (*(vuint8 *)(&__IPSBAR[0x210])) -#define MCF_UART0_UIMR (*(vuint8 *)(&__IPSBAR[0x214])) -#define MCF_UART0_UISR (*(vuint8 *)(&__IPSBAR[0x214])) -#define MCF_UART0_UBG1 (*(vuint8 *)(&__IPSBAR[0x218])) -#define MCF_UART0_UBG2 (*(vuint8 *)(&__IPSBAR[0x21C])) -#define MCF_UART0_UIP (*(vuint8 *)(&__IPSBAR[0x234])) -#define MCF_UART0_UOP1 (*(vuint8 *)(&__IPSBAR[0x238])) -#define MCF_UART0_UOP0 (*(vuint8 *)(&__IPSBAR[0x23C])) - -#define MCF_UART1_UMR1 (*(vuint8 *)(&__IPSBAR[0x240])) -#define MCF_UART1_UMR2 (*(vuint8 *)(&__IPSBAR[0x240])) -#define MCF_UART1_USR (*(vuint8 *)(&__IPSBAR[0x244])) -#define MCF_UART1_UCSR (*(vuint8 *)(&__IPSBAR[0x244])) -#define MCF_UART1_UCR (*(vuint8 *)(&__IPSBAR[0x248])) -#define MCF_UART1_URB (*(vuint8 *)(&__IPSBAR[0x24C])) -#define MCF_UART1_UTB (*(vuint8 *)(&__IPSBAR[0x24C])) -#define MCF_UART1_UIPCR (*(vuint8 *)(&__IPSBAR[0x250])) -#define MCF_UART1_UACR (*(vuint8 *)(&__IPSBAR[0x250])) -#define MCF_UART1_UIMR (*(vuint8 *)(&__IPSBAR[0x254])) -#define MCF_UART1_UISR (*(vuint8 *)(&__IPSBAR[0x254])) -#define MCF_UART1_UBG1 (*(vuint8 *)(&__IPSBAR[0x258])) -#define MCF_UART1_UBG2 (*(vuint8 *)(&__IPSBAR[0x25C])) -#define MCF_UART1_UIP (*(vuint8 *)(&__IPSBAR[0x274])) -#define MCF_UART1_UOP1 (*(vuint8 *)(&__IPSBAR[0x278])) -#define MCF_UART1_UOP0 (*(vuint8 *)(&__IPSBAR[0x27C])) - -#define MCF_UART2_UMR1 (*(vuint8 *)(&__IPSBAR[0x280])) -#define MCF_UART2_UMR2 (*(vuint8 *)(&__IPSBAR[0x280])) -#define MCF_UART2_USR (*(vuint8 *)(&__IPSBAR[0x284])) -#define MCF_UART2_UCSR (*(vuint8 *)(&__IPSBAR[0x284])) -#define MCF_UART2_UCR (*(vuint8 *)(&__IPSBAR[0x288])) -#define MCF_UART2_URB (*(vuint8 *)(&__IPSBAR[0x28C])) -#define MCF_UART2_UTB (*(vuint8 *)(&__IPSBAR[0x28C])) -#define MCF_UART2_UIPCR (*(vuint8 *)(&__IPSBAR[0x290])) -#define MCF_UART2_UACR (*(vuint8 *)(&__IPSBAR[0x290])) -#define MCF_UART2_UIMR (*(vuint8 *)(&__IPSBAR[0x294])) -#define MCF_UART2_UISR (*(vuint8 *)(&__IPSBAR[0x294])) -#define MCF_UART2_UBG1 (*(vuint8 *)(&__IPSBAR[0x298])) -#define MCF_UART2_UBG2 (*(vuint8 *)(&__IPSBAR[0x29C])) -#define MCF_UART2_UIP (*(vuint8 *)(&__IPSBAR[0x2B4])) -#define MCF_UART2_UOP1 (*(vuint8 *)(&__IPSBAR[0x2B8])) -#define MCF_UART2_UOP0 (*(vuint8 *)(&__IPSBAR[0x2BC])) - -#define MCF_UART_UMR(x) (*(vuint8 *)(&__IPSBAR[0x200 + ((x)*0x40)])) -#define MCF_UART_USR(x) (*(vuint8 *)(&__IPSBAR[0x204 + ((x)*0x40)])) -#define MCF_UART_UCSR(x) (*(vuint8 *)(&__IPSBAR[0x204 + ((x)*0x40)])) -#define MCF_UART_UCR(x) (*(vuint8 *)(&__IPSBAR[0x208 + ((x)*0x40)])) -#define MCF_UART_URB(x) (*(vuint8 *)(&__IPSBAR[0x20C + ((x)*0x40)])) -#define MCF_UART_UTB(x) (*(vuint8 *)(&__IPSBAR[0x20C + ((x)*0x40)])) -#define MCF_UART_UIPCR(x) (*(vuint8 *)(&__IPSBAR[0x210 + ((x)*0x40)])) -#define MCF_UART_UACR(x) (*(vuint8 *)(&__IPSBAR[0x210 + ((x)*0x40)])) -#define MCF_UART_UIMR(x) (*(vuint8 *)(&__IPSBAR[0x214 + ((x)*0x40)])) -#define MCF_UART_UISR(x) (*(vuint8 *)(&__IPSBAR[0x214 + ((x)*0x40)])) -#define MCF_UART_UBG1(x) (*(vuint8 *)(&__IPSBAR[0x218 + ((x)*0x40)])) -#define MCF_UART_UBG2(x) (*(vuint8 *)(&__IPSBAR[0x21C + ((x)*0x40)])) -#define MCF_UART_UIP(x) (*(vuint8 *)(&__IPSBAR[0x234 + ((x)*0x40)])) -#define MCF_UART_UOP1(x) (*(vuint8 *)(&__IPSBAR[0x238 + ((x)*0x40)])) -#define MCF_UART_UOP0(x) (*(vuint8 *)(&__IPSBAR[0x23C + ((x)*0x40)])) - -/* Bit definitions and macros for MCF_UART_UMR */ -#define MCF_UART_UMR_BC(x) (((x)&0x3)<<0) -#define MCF_UART_UMR_BC_5 (0) -#define MCF_UART_UMR_BC_6 (0x1) -#define MCF_UART_UMR_BC_7 (0x2) -#define MCF_UART_UMR_BC_8 (0x3) -#define MCF_UART_UMR_PT (0x4) -#define MCF_UART_UMR_PM(x) (((x)&0x3)<<0x3) -#define MCF_UART_UMR_ERR (0x20) -#define MCF_UART_UMR_RXIRQ (0x40) -#define MCF_UART_UMR_RXRTS (0x80) -#define MCF_UART_UMR_PM_MULTI_ADDR (0x1C) -#define MCF_UART_UMR_PM_MULTI_DATA (0x18) -#define MCF_UART_UMR_PM_NONE (0x10) -#define MCF_UART_UMR_PM_FORCE_HI (0xC) -#define MCF_UART_UMR_PM_FORCE_LO (0x8) -#define MCF_UART_UMR_PM_ODD (0x4) -#define MCF_UART_UMR_PM_EVEN (0) -#define MCF_UART_UMR_SB(x) (((x)&0xF)<<0) -#define MCF_UART_UMR_SB_STOP_BITS_1 (0x7) -#define MCF_UART_UMR_SB_STOP_BITS_15 (0x8) -#define MCF_UART_UMR_SB_STOP_BITS_2 (0xF) -#define MCF_UART_UMR_TXCTS (0x10) -#define MCF_UART_UMR_TXRTS (0x20) -#define MCF_UART_UMR_CM(x) (((x)&0x3)<<0x6) -#define MCF_UART_UMR_CM_NORMAL (0) -#define MCF_UART_UMR_CM_ECHO (0x40) -#define MCF_UART_UMR_CM_LOCAL_LOOP (0x80) -#define MCF_UART_UMR_CM_REMOTE_LOOP (0xC0) - -/* Bit definitions and macros for MCF_UART_USR */ -#define MCF_UART_USR_RXRDY (0x1) -#define MCF_UART_USR_FFULL (0x2) -#define MCF_UART_USR_TXRDY (0x4) -#define MCF_UART_USR_TXEMP (0x8) -#define MCF_UART_USR_OE (0x10) -#define MCF_UART_USR_PE (0x20) -#define MCF_UART_USR_FE (0x40) -#define MCF_UART_USR_RB (0x80) - -/* Bit definitions and macros for MCF_UART_UCSR */ -#define MCF_UART_UCSR_TCS(x) (((x)&0xF)<<0) -#define MCF_UART_UCSR_TCS_SYS_CLK (0xD) -#define MCF_UART_UCSR_TCS_CTM16 (0xE) -#define MCF_UART_UCSR_TCS_CTM (0xF) -#define MCF_UART_UCSR_RCS(x) (((x)&0xF)<<0x4) -#define MCF_UART_UCSR_RCS_SYS_CLK (0xD0) -#define MCF_UART_UCSR_RCS_CTM16 (0xE0) -#define MCF_UART_UCSR_RCS_CTM (0xF0) - -/* Bit definitions and macros for MCF_UART_UCR */ -#define MCF_UART_UCR_RC(x) (((x)&0x3)<<0) -#define MCF_UART_UCR_RX_ENABLED (0x1) -#define MCF_UART_UCR_RX_DISABLED (0x2) -#define MCF_UART_UCR_TC(x) (((x)&0x3)<<0x2) -#define MCF_UART_UCR_TX_ENABLED (0x4) -#define MCF_UART_UCR_TX_DISABLED (0x8) -#define MCF_UART_UCR_MISC(x) (((x)&0x7)<<0x4) -#define MCF_UART_UCR_NONE (0) -#define MCF_UART_UCR_RESET_MR (0x10) -#define MCF_UART_UCR_RESET_RX (0x20) -#define MCF_UART_UCR_RESET_TX (0x30) -#define MCF_UART_UCR_RESET_ERROR (0x40) -#define MCF_UART_UCR_RESET_BKCHGINT (0x50) -#define MCF_UART_UCR_START_BREAK (0x60) -#define MCF_UART_UCR_STOP_BREAK (0x70) - -/* Bit definitions and macros for MCF_UART_URB */ -#define MCF_UART_URB_RB(x) (((x)&0xFF)<<0) - -/* Bit definitions and macros for MCF_UART_UTB */ -#define MCF_UART_UTB_TB(x) (((x)&0xFF)<<0) - -/* Bit definitions and macros for MCF_UART_UIPCR */ -#define MCF_UART_UIPCR_CTS (0x1) -#define MCF_UART_UIPCR_COS (0x10) - -/* Bit definitions and macros for MCF_UART_UACR */ -#define MCF_UART_UACR_IEC (0x1) - -/* Bit definitions and macros for MCF_UART_UIMR */ -#define MCF_UART_UIMR_TXRDY (0x1) -#define MCF_UART_UIMR_FFULL_RXRDY (0x2) -#define MCF_UART_UIMR_DB (0x4) -#define MCF_UART_UIMR_COS (0x80) - -/* Bit definitions and macros for MCF_UART_UISR */ -#define MCF_UART_UISR_TXRDY (0x1) -#define MCF_UART_UISR_FFULL_RXRDY (0x2) -#define MCF_UART_UISR_DB (0x4) -#define MCF_UART_UISR_COS (0x80) - -/* Bit definitions and macros for MCF_UART_UBG1 */ -#define MCF_UART_UBG1_Divider_MSB(x) (((x)&0xFF)<<0) - -/* Bit definitions and macros for MCF_UART_UBG2 */ -#define MCF_UART_UBG2_Divider_LSB(x) (((x)&0xFF)<<0) - -/* Bit definitions and macros for MCF_UART_UIP */ -#define MCF_UART_UIP_CTS (0x1) - -/* Bit definitions and macros for MCF_UART_UOP1 */ -#define MCF_UART_UOP1_RTS (0x1) - -/* Bit definitions and macros for MCF_UART_UOP0 */ -#define MCF_UART_UOP0_RTS (0x1) - - -#endif /* __MCF52235_UART_H__ */ diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/Makefile b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/Makefile deleted file mode 100644 index be22eaf28..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/Makefile +++ /dev/null @@ -1,167 +0,0 @@ -RM := rm -rf - -# Set the optimisation level - this should be set to 0, 1, 2, 3 or s (s for size). -OPTIM=0 - -############################################################################### -# List the directories that contain files to be built. -############################################################################### - -# These two directories contain the FreeRTOS.org kernel source files. -FREERTOS_SOURCE_DIR=./../../../Source -PORT_SOURCE_DIR=./../../../Source/portable/GCC/ColdFire_V2 - -# This directory contains the standard demo files that get included in every -# FreeRTOS.org demo. They define tasks that demonstrate the API usage and -# test the FreeRTOS.org port. -COMMON_DEMO_SOURCE_DIR=./../../Common/Minimal - -# This directory contains the modified uIP code -FREERTOS_uIP_DIR=./../../Common/ethernet/FreeRTOS-uIP - -VPATH= $(FREERTOS_SOURCE_DIR) : \ - $(PORT_SOURCE_DIR) : \ - $(COMMON_DEMO_SOURCE_DIR) : \ - $(FREERTOS_SOURCE_DIR)/portable/MemMang : \ - $(FREERTOS_uIP_DIR) : \ - . : \ - ./webserver : \ - ./ParTest : \ - ./serial - - -############################################################################### -# Define a few constants to be used during the build. -############################################################################### - -OUTPUT_DIR=./bin -CPU=52235 -LINKER_SCRIPT=m52235evb-rom-hosted.ld -SREC_FILENAME=RTOSDemo.s19 -ELF_FILENAME=RTOSDemo.elf -CC=m68k-elf-gcc -AS=m68k-elf-as -OBJCOPY=m68k-elf-objcopy - - -############################################################################### -# List the files to include in the build. These files will be located from the -# VPATH defined above. -############################################################################### - -# The FreeRTOS.org source files. -FreeRTOS_OBJS= $(OUTPUT_DIR)/portasm.o \ - $(OUTPUT_DIR)/port.o \ - $(OUTPUT_DIR)/list.o \ - $(OUTPUT_DIR)/tasks.o \ - $(OUTPUT_DIR)/queue.o \ - $(OUTPUT_DIR)/heap_1.o - -# The demo app source files, including the basic WEB server. -Demo_OBJS= $(OUTPUT_DIR)/main.o \ - $(OUTPUT_DIR)/ParTest.o \ - $(OUTPUT_DIR)/flash.o \ - $(OUTPUT_DIR)/FreeRTOS_Tick_Setup.o \ - $(OUTPUT_DIR)/BlockQ.o \ - $(OUTPUT_DIR)/PollQ.o \ - $(OUTPUT_DIR)/semtest.o \ - $(OUTPUT_DIR)/GenQTest.o \ - $(OUTPUT_DIR)/QPeek.o \ - $(OUTPUT_DIR)/FEC.o \ - $(OUTPUT_DIR)/blocktim.o \ - $(OUTPUT_DIR)/recmutex.o \ - $(OUTPUT_DIR)/printf-stdarg.o - -HTTP_OBJS= $(OUTPUT_DIR)/uIP_Task.o \ - $(OUTPUT_DIR)/httpd.o \ - $(OUTPUT_DIR)/httpd-cgi.o \ - $(OUTPUT_DIR)/httpd-fs.o \ - $(OUTPUT_DIR)/http-strings.o - -# uIP source files -uIP_OBJS= $(OUTPUT_DIR)/timer.o \ - $(OUTPUT_DIR)/uip.o \ - $(OUTPUT_DIR)/uip_arp.o \ - $(OUTPUT_DIR)/uiplib.o \ - $(OUTPUT_DIR)/uip-split.o \ - $(OUTPUT_DIR)/psock.o - -OBJS = $(Demo_OBJS) $(FreeRTOS_OBJS) $(uIP_OBJS) $(HTTP_OBJS) - -C_DEPS = $(OBJS:.o=.d) - -INCLUDE_PATHS= -I./webserver \ - -I"$(FREERTOS_uIP_DIR)" \ - -I"$(FREERTOS_SOURCE_DIR)/include" \ - -I"include" \ - -I"$(COMMON_DEMO_SOURCE_DIR)/../include" \ - -I"$(PORT_SOURCE_DIR)" \ - -I./MCF5223x \ - -I. - -CFLAGS= $(INCLUDE_PATHS) \ - -D COLDFIRE_V2_GCC \ - -D PACK_STRUCT_END=__attribute\(\(packed\)\) \ - -D ALIGN_STRUCT_END=__attribute\(\(aligned\(4\)\)\) \ - -O$(OPTIM) \ - -D bktPRIMARY_PRIORITY=4 \ - -D bktSECONDARY_PRIORITY=3 \ - -fno-strict-aliasing \ - -g3 \ - -gdwarf-2 \ - -Wall \ - -Wextra \ - -c \ - -ffunction-sections \ - -fdata-sections \ - -fmessage-length=0 \ - -funsigned-char \ - -Wextra \ - -mcpu=$(CPU) \ - -MMD \ - -MP \ - -MF"$(@:%.o=%.d)" \ - -MT"$(@:%.o=%.d)" - -ASFLAGS= -m52235 \ - -g3 \ - --register-prefix-optional \ - --bitwise-or - -LIBS= - -# Add inputs and outputs from these tool invocations to the build variables - -# All Target -all: $(OUTPUT_DIR)/$(SREC_FILENAME) - -# Tool invocations -$(OUTPUT_DIR)/$(SREC_FILENAME): $(OUTPUT_DIR)/$(ELF_FILENAME) - $(OBJCOPY) $(OUTPUT_DIR)/$(ELF_FILENAME) -O srec $(OUTPUT_DIR)/$(SREC_FILENAME) - -$(OUTPUT_DIR)/$(ELF_FILENAME): $(OBJS) - $(CC) -nostartfiles --gc-sections -Xlinker -Map=$(OUTPUT_DIR)/output.map -mcpu=$(CPU) -T $(LINKER_SCRIPT) -o"$(OUTPUT_DIR)/$(ELF_FILENAME)" $(OBJS) $(USER_OBJS) $(LIBS) - -$(OUTPUT_DIR)/%.o: %.c Makefile - $(CC) $(CFLAGS) -o"$@" "$<" - -$(OUTPUT_DIR)/%.o: %.S - $(AS) $(ASFLAGS) -o"$@" "$<" - -# Other Targets -clean: - -$(RM) $(OBJS) $(C_DEPS) $(EXECUTABLES) $(OUTPUT_DIR)/$(ELF_FILENAME) $(OUTPUT_DIR)/$(SREC_FILENAME) - -@echo ' ' - -# -# The rule to create the target directory -# -$(OUTPUT_DIR): - @mkdir $(OUTPUT_DIR) - - -.PHONY: all clean dependents -.SECONDARY: post-build - --include $(wildcard $(OUTPUT_DIR)/*.d) __dummy__ - diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/ParTest/ParTest.c b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/ParTest/ParTest.c deleted file mode 100644 index 060ec79ef..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/ParTest/ParTest.c +++ /dev/null @@ -1,107 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -#include "FreeRTOS.h" -#include "task.h" -#include "partest.h" - -#define partstNUM_LEDs 4 - -/*----------------------------------------------------------- - * Simple parallel port IO routines. - *-----------------------------------------------------------*/ - -void vParTestInitialise( void ) -{ - /* Ensure LED outputs are set to GPIO */ - MCF_GPIO_PTCPAR = MCF_GPIO_PTCPAR_DTIN3_GPIO | MCF_GPIO_PTCPAR_DTIN2_GPIO | MCF_GPIO_PTCPAR_DTIN1_GPIO | MCF_GPIO_PTCPAR_DTIN0_GPIO; - - /* Set GPIO to outputs. */ - MCF_GPIO_DDRTC = MCF_GPIO_DDRTC_DDRTC3 | MCF_GPIO_DDRTC_DDRTC2 | MCF_GPIO_DDRTC_DDRTC1 | MCF_GPIO_DDRTC_DDRTC0; - - /* Start with all LEDs off. */ - MCF_GPIO_PORTTC = 0x00; -} -/*-----------------------------------------------------------*/ - -void vParTestSetLED( unsigned portBASE_TYPE uxLED, signed portBASE_TYPE xValue ) -{ - if( uxLED < partstNUM_LEDs ) - { - if( xValue != 0 ) - { - taskENTER_CRITICAL(); - MCF_GPIO_PORTTC |= ( 1 << uxLED ); - taskEXIT_CRITICAL(); - } - else - { - taskENTER_CRITICAL(); - MCF_GPIO_PORTTC &= ~( 1 << uxLED ); - taskEXIT_CRITICAL(); - } - } -} -/*-----------------------------------------------------------*/ - -void vParTestToggleLED( unsigned portBASE_TYPE uxLED ) -{ - if( uxLED < partstNUM_LEDs ) - { - taskENTER_CRITICAL(); - { - if( ( MCF_GPIO_PORTTC & ( 1 << uxLED ) ) == ( unsigned char ) 0 ) - { - MCF_GPIO_PORTTC |= ( 1 << uxLED ); - } - else - { - MCF_GPIO_PORTTC &= ~( 1 << uxLED ); - } - } - taskEXIT_CRITICAL(); - } -} -/*-----------------------------------------------------------*/ - -unsigned portBASE_TYPE uxParTestGetLED( unsigned portBASE_TYPE uxLED ) -{ -unsigned portBASE_TYPE uxReturn = pdFALSE; - - if( uxLED < partstNUM_LEDs ) - { - if( ( MCF_GPIO_PORTTC & ( 1 << uxLED ) ) != 0 ) - { - uxReturn = pdTRUE; - } - } - - return uxReturn; -} - - - diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/m52235evb-rom-hosted.ld b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/m52235evb-rom-hosted.ld deleted file mode 100644 index 8142e27f4..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/m52235evb-rom-hosted.ld +++ /dev/null @@ -1,229 +0,0 @@ -/* Linker script for m52235evb - * - * Version:Sourcery G++ Lite 4.2-125 - * BugURL:https://support.codesourcery.com/GNUToolchain/ - * - * Copyright 2007, 2008 CodeSourcery. - * - * The authors hereby grant permission to use, copy, modify, distribute, - * and license this software and its documentation for any purpose, provided - * that existing copyright notices are retained in all copies and that this - * notice is included verbatim in any distributions. No written agreement, - * license, or royalty fee is required for any of the authorized uses. - * Modifications to this software may be copyrighted by their authors - * and need not follow the licensing terms described here, provided that - * the new terms are clearly indicated on the first page of each file where - * they apply. */ - -OUTPUT_ARCH(m68k) -ENTRY(_start) -SEARCH_DIR(.) -GROUP(-lgcc -lc -lcs3 -lcs3hosted -lcs3coldfire) - -MEMORY -{ - ram (rw) : ORIGIN = 0x20000000, LENGTH = 32K - vectorrom (RX) : ORIGIN = 0x00000000, LENGTH = 0x00000400 - cfmprotrom (RX) : ORIGIN = 0x00000400, LENGTH = 0x00000020 - rom (rx) : ORIGIN = 0x00000420, LENGTH = 256K - 0x400 - 0x20 - ipsbar (rw) : ORIGIN = 0x40000000, LENGTH = 2M -} - -/* These force the linker to search for particular symbols from - * the start of the link process and thus ensure the user's - * overrides are picked up - */ -EXTERN(__cs3_reset_m52235evb) -INCLUDE coldfire-names.inc -EXTERN(__cs3_interrupt_vector_coldfire) -EXTERN(__cs3_start_c main __cs3_stack __cs3_heap_end) -EXTERN(_start) -/* force exit to be picked up in a hosted or os environment */ -EXTERN(exit atexit) - -PROVIDE(__cs3_heap_start = _end); -PROVIDE(__cs3_heap_end = __cs3_region_start_ram + __cs3_region_size_ram); -PROVIDE(__cs3_region_num = (__cs3_regions_end - __cs3_regions) / 20); -PROVIDE(__cs3_stack = __cs3_region_start_ram + __cs3_region_size_ram); - -SECTIONS -{ - - .vectors_table : - { - CREATE_OBJECT_SYMBOLS - __cs3_region_start_rom = .; - *(.cs3.region-head.rom) - ASSERT (. == __cs3_region_start_rom, ".cs3.region-head.rom not permitted"); - __cs3_interrupt_vector = __cs3_interrupt_vector_coldfire; - *(.cs3.interrupt_vector) - /* Make sure we pulled in an interrupt vector. */ - ASSERT (. != __cs3_interrupt_vector_coldfire, "No interrupt vector"); - } > vectorrom - - .cfmprotect : - { - *(.cfmconfig) - . = ALIGN (0x4); - } > cfmprotrom - - - .text : - { - - PROVIDE(__cs3_reset_m52235evb = _start); - __cs3_reset = __cs3_reset_m52235evb; - *(.cs3.reset) - - *(.text .text.* .gnu.linkonce.t.*) - - . = ALIGN(0x4); - KEEP (*crtbegin.o(.jcr)) - KEEP (*(EXCLUDE_FILE (*crtend.o) .jcr)) - KEEP (*crtend.o(.jcr)) - - . = ALIGN(0x4); - *(.gcc_except_table .gcc_except_table.*) - } >rom - .eh_frame_hdr : ALIGN (4) - { - KEEP (*(.eh_frame_hdr)) - } >rom - .eh_frame : ALIGN (4) - { - KEEP (*(.eh_frame)) - } >rom - .rodata : ALIGN (4) - { - *(.rodata .rodata.* .gnu.linkonce.r.*) - - . = ALIGN(4); - _init = .; - LONG (0x4e560000) /* linkw %fp,#0 */ - KEEP(*(.init)) - SHORT (0x4e5e) /* unlk %fp */ - SHORT (0x4e75) /* rts */ - - . = ALIGN(4); - __preinit_array_start = .; - KEEP (*(.preinit_array)) - __preinit_array_end = .; - - . = ALIGN(4); - __init_array_start = .; - KEEP (*(SORT(.init_array.*))) - KEEP (*(.init_array)) - __init_array_end = .; - - . = ALIGN(4); - _fini = .; - LONG (0x4e560000) /* linkw %fp,#0 */ - KEEP(*(.fini)) - SHORT (0x4e5e) /* unlk %fp */ - SHORT (0x4e75) /* rts */ - - . = ALIGN(4); - __fini_array_start = .; - KEEP (*(.fini_array)) - KEEP (*(SORT(.fini_array.*))) - __fini_array_end = .; - - . = ALIGN(0x4); - KEEP (*crtbegin.o(.ctors)) - KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors)) - KEEP (*(SORT(.ctors.*))) - KEEP (*crtend.o(.ctors)) - - . = ALIGN(0x4); - KEEP (*crtbegin.o(.dtors)) - KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors)) - KEEP (*(SORT(.dtors.*))) - KEEP (*crtend.o(.dtors)) - - *(.lit) - - . = ALIGN(4); - __cs3_regions = .; - LONG (0) - LONG (__cs3_region_init_ram) - LONG (__cs3_region_start_ram) - LONG (__cs3_region_init_size_ram) - LONG (__cs3_region_zero_size_ram) - __cs3_regions_end = .; - - . = ALIGN (8); - . = ALIGN (8); - *(.rom) - *(.rom.b) - _etext = .; - } >rom - /* __cs3_region_end_rom is deprecated */ - __cs3_region_end_rom = __cs3_region_start_rom + LENGTH(rom); - __cs3_region_size_rom = LENGTH(rom); - - .cs3.ipsbar : - { - __cs3_region_start_ipsbar = .; - *(.cs3.region-head.ipsbar) - . = ALIGN (8); - } >ipsbar - /* __cs3_region_end_ipsbar is deprecated */ - __cs3_region_end_ipsbar = __cs3_region_start_ipsbar + LENGTH(ipsbar); - __cs3_region_size_ipsbar = LENGTH(ipsbar); - - .data : ALIGN (8) - { - __cs3_region_start_ram = .; - *(.cs3.region-head.ram) - *(.got.plt) *(.got) - *(.shdata) - *(.data .data.* .gnu.linkonce.d.*) - . = ALIGN (8); - *(.ram) - _edata = .; - } >ram AT>rom - .bss : - { - *(.shbss) - *(.bss .bss.* .gnu.linkonce.b.*) - *(COMMON) - . = ALIGN (8); - *(.ram.b) - _end = .; - __end = .; - } >ram AT>rom - /* __cs3_region_end_ram is deprecated */ - __cs3_region_end_ram = __cs3_region_start_ram + LENGTH(ram); - __cs3_region_size_ram = LENGTH(ram); - __cs3_region_init_ram = LOADADDR (.data); - __cs3_region_init_size_ram = _edata - ADDR (.data); - __cs3_region_zero_size_ram = _end - _edata; - - .stab 0 (NOLOAD) : { *(.stab) } - .stabstr 0 (NOLOAD) : { *(.stabstr) } - /* DWARF debug sections. - * Symbols in the DWARF debugging sections are relative to the beginning - * of the section so we begin them at 0. */ - /* DWARF 1 */ - .debug 0 : { *(.debug) } - .line 0 : { *(.line) } - /* GNU DWARF 1 extensions */ - .debug_srcinfo 0 : { *(.debug_srcinfo) } - .debug_sfnames 0 : { *(.debug_sfnames) } - /* DWARF 1.1 and DWARF 2 */ - .debug_aranges 0 : { *(.debug_aranges) } - .debug_pubnames 0 : { *(.debug_pubnames) } - /* DWARF 2 */ - .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } - .debug_abbrev 0 : { *(.debug_abbrev) } - .debug_line 0 : { *(.debug_line) } - .debug_frame 0 : { *(.debug_frame) } - .debug_str 0 : { *(.debug_str) } - .debug_loc 0 : { *(.debug_loc) } - .debug_macinfo 0 : { *(.debug_macinfo) } - /* SGI/MIPS DWARF 2 extensions */ - .debug_weaknames 0 : { *(.debug_weaknames) } - .debug_funcnames 0 : { *(.debug_funcnames) } - .debug_typenames 0 : { *(.debug_typenames) } - .debug_varnames 0 : { *(.debug_varnames) } -} diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/main.c b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/main.c deleted file mode 100644 index 788ccb38e..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/main.c +++ /dev/null @@ -1,455 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - - -/* - * Creates all the demo application tasks, then starts the scheduler. The WEB - * documentation provides more details of the standard demo application tasks. - * In addition to the standard demo tasks, the following tasks and tests are - * defined and/or created within this file: - * - * "uIP" task - This is the task that handles the uIP stack. All TCP/IP - * processing is performed in this task. It manages the WEB server functionality. - * - * "Check" task - This only executes every five seconds but has a high priority - * to ensure it gets processor time. Its main function is to check that all the - * standard demo tasks are still operational. An error found in any task will be - * latched in the ulErrorCode variable for display through the WEB server (the - * error code is displayed at the foot of the table that contains information on - * the state of each task). - * - * "Reg test" tasks - These fill the registers with known values, then check - * that each register still contains its expected value. Each task uses - * different values. The tasks run with very low priority so get preempted very - * frequently. A register containing an unexpected value is indicative of an - * error in the context switching mechanism. - * - */ - -/* Standard includes. */ -#include - -/* Scheduler includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "queue.h" -#include "semphr.h" - -/* Demo app includes. */ -#include "BlockQ.h" -#include "death.h" -#include "blocktim.h" -#include "flash.h" -#include "partest.h" -#include "semtest.h" -#include "PollQ.h" -#include "GenQTest.h" -#include "QPeek.h" -#include "recmutex.h" -#include "IntQueue.h" -#include "comtest2.h" - -/*-----------------------------------------------------------*/ - -/* The time between cycles of the 'check' functionality - as described at the -top of this file. */ -#define mainCHECK_TASK_PERIOD ( ( portTickType ) 5000 / portTICK_RATE_MS ) - -/* Task priorities. */ -#define mainQUEUE_POLL_PRIORITY ( tskIDLE_PRIORITY + 2 ) -#define mainCHECK_TASK_PRIORITY ( tskIDLE_PRIORITY + 3 ) -#define mainSEM_TEST_PRIORITY ( tskIDLE_PRIORITY + 1 ) -#define mainBLOCK_Q_PRIORITY ( tskIDLE_PRIORITY + 2 ) -#define mainGEN_QUEUE_TASK_PRIORITY ( tskIDLE_PRIORITY ) - -/* The WEB server task uses more stack than most other tasks because of its -reliance on using sprintf(). */ -#define mainBASIC_WEB_STACK_SIZE ( configMINIMAL_STACK_SIZE * 2 ) - -/* - * Configure the hardware for the demo. - */ -static void prvSetupHardware( void ); - -/* - * Implements the 'check' task functionality as described at the top of this - * file. - */ -static void prvCheckTask( void *pvParameters ); - -/* - * The task that implements the WEB server. - */ -extern void vuIP_Task( void *pvParameters ); - -/* - * Implement the 'Reg test' functionality as described at the top of this file. - */ -static void vRegTest1Task( void *pvParameters ); -static void vRegTest2Task( void *pvParameters ); - -/*-----------------------------------------------------------*/ - -/* Counters used to detect errors within the reg test tasks. */ -static volatile unsigned long ulRegTest1Counter = 0x11111111, ulRegTest2Counter = 0x22222222; - -/* Any errors that the check task finds in any tasks are latched into -ulErrorCode, and then displayed via the WEB server. */ -static unsigned long ulErrorCode = 0UL; - -/*-----------------------------------------------------------*/ - -int main( void ) -{ - /* Setup the hardware ready for this demo. */ - prvSetupHardware(); - - /* Create the WEB server task. */ - xTaskCreate( vuIP_Task, "uIP", mainBASIC_WEB_STACK_SIZE, NULL, mainCHECK_TASK_PRIORITY - 1, NULL ); - - /* Start the standard demo tasks. */ - vStartLEDFlashTasks( tskIDLE_PRIORITY ); - vStartBlockingQueueTasks( mainBLOCK_Q_PRIORITY ); - vCreateBlockTimeTasks(); - vStartSemaphoreTasks( mainSEM_TEST_PRIORITY ); - vStartPolledQueueTasks( mainQUEUE_POLL_PRIORITY ); - vStartGenericQueueTasks( mainGEN_QUEUE_TASK_PRIORITY ); - vStartQueuePeekTasks(); - vStartRecursiveMutexTasks(); - - /* Start the reg test tasks - defined in this file. */ - xTaskCreate( vRegTest1Task, "Reg1", configMINIMAL_STACK_SIZE, ( void * ) &ulRegTest1Counter, tskIDLE_PRIORITY, NULL ); - xTaskCreate( vRegTest2Task, "Reg2", configMINIMAL_STACK_SIZE, ( void * ) &ulRegTest2Counter, tskIDLE_PRIORITY, NULL ); - - /* Create the check task. */ - xTaskCreate( prvCheckTask, "Check", configMINIMAL_STACK_SIZE, NULL, mainCHECK_TASK_PRIORITY, NULL ); - - /* Start the scheduler. */ - vTaskStartScheduler(); - - /* Will only get here if there was insufficient heap to create the idle - task. */ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -static void prvCheckTask( void *pvParameters ) -{ -unsigned ulLastRegTest1Count = 0, ulLastRegTest2Count = 0; -portTickType xLastExecutionTime; - - /* To prevent compiler warnings. */ - ( void ) pvParameters; - - /* Initialise the variable used to control our iteration rate prior to - its first use. */ - xLastExecutionTime = xTaskGetTickCount(); - - for( ;; ) - { - /* Wait until it is time to run the tests again. */ - vTaskDelayUntil( &xLastExecutionTime, mainCHECK_TASK_PERIOD ); - - /* Has an error been found in any task? */ - if( xAreGenericQueueTasksStillRunning() != pdTRUE ) - { - ulErrorCode |= 0x01UL; - } - - if( xAreQueuePeekTasksStillRunning() != pdTRUE ) - { - ulErrorCode |= 0x02UL; - } - - if( xAreBlockingQueuesStillRunning() != pdTRUE ) - { - ulErrorCode |= 0x04UL; - } - - if( xAreSemaphoreTasksStillRunning() != pdTRUE ) - { - ulErrorCode |= 0x20UL; - } - - if( xArePollingQueuesStillRunning() != pdTRUE ) - { - ulErrorCode |= 0x40UL; - } - - if( xAreBlockTimeTestTasksStillRunning() != pdTRUE ) - { - ulErrorCode |= 0x80UL; - } - - if( xAreRecursiveMutexTasksStillRunning() != pdTRUE ) - { - ulErrorCode |= 0x100UL; - } - - if( ulLastRegTest1Count == ulRegTest1Counter ) - { - ulErrorCode |= 0x200UL; - } - - if( ulLastRegTest2Count == ulRegTest2Counter ) - { - ulErrorCode |= 0x200UL; - } - - /* Remember the reg test counts so a stall in their values can be - detected next time around. */ - ulLastRegTest1Count = ulRegTest1Counter; - ulLastRegTest2Count = ulRegTest2Counter; - } -} -/*-----------------------------------------------------------*/ - -unsigned long ulGetErrorCode( void ) -{ - /* Returns the error code for display via the WEB server. */ - return ulErrorCode; -} -/*-----------------------------------------------------------*/ - -void prvSetupHardware( void ) -{ -__attribute__ ((section(".cfmconfig"))) -static const unsigned long _cfm[6] = { - 0, /* KEY_UPPER 0x00000400 */ - 0, /* KEY_LOWER 0x00000404 */ - 0, /* CFMPROT 0x00000408 */ - 0, /* CFMSACC 0x0000040C */ - 0, /* CFMDACC 0x00000410 */ - 0, /* CFMSEC 0x00000414 */ -}; - - /* Just to stop compiler warnings. */ - ( void ) _cfm; - - /* Ensure the watchdog is disabled. */ - MCF_SCM_CWCR = 0; - - /* Initialize IPSBAR (0x40000000). */ - asm volatile( - "move.l #0x40000000,%d0 \n" - "andi.l #0xC0000000,%d0 \n" - "add.l #0x1,%d0 \n" - "move.l %d0,0x40000000 " - ); - - /* Initialize FLASHBAR (0x00) */ - asm volatile( - "move.l #0x00,%d0 \n" - "andi.l #0xFFF80000,%d0 \n" - "add.l #0x41,%d0 \n" - "movec %d0,%FLASHBAR " - ); - - portDISABLE_INTERRUPTS(); - - /* RAMBAR. */ - MCF_SCM_RAMBAR = MCF_SCM_RAMBAR_BA( RAMBAR_ADDRESS ) | MCF_SCM_RAMBAR_BDE; - - /* Multiply 25MHz crystal by 12 to get 60MHz clock. */ - MCF_CLOCK_SYNCR = MCF_CLOCK_SYNCR_MFD(4) | MCF_CLOCK_SYNCR_CLKSRC| MCF_CLOCK_SYNCR_PLLMODE | MCF_CLOCK_SYNCR_PLLEN ; - while (!(MCF_CLOCK_SYNSR & MCF_CLOCK_SYNSR_LOCK)) - { - } - - /* Setup the port used to toggle LEDs. */ - vParTestInitialise(); -} -/*-----------------------------------------------------------*/ - -void vApplicationStackOverflowHook( xTaskHandle pxTask, char *pcTaskName ) -{ - /* This will get called if a stack overflow is detected during the context - switch. Set configCHECK_FOR_STACK_OVERFLOWS to 2 to also check for stack - problems within nested interrupts, but only do this for debug purposes as - it will increase the context switch time. */ - - ( void ) pxTask; - ( void ) pcTaskName; - - for( ;; ); -} -/*-----------------------------------------------------------*/ - -static void vRegTest1Task( void *pvParameters ) -{ - /* Sanity check - did we receive the parameter expected? */ - if( pvParameters != &ulRegTest1Counter ) - { - /* Change here so the check task can detect that an error occurred. */ - for( ;; ); - } - - /* Set all the registers to known values, then check that each retains its - expected value - as described at the top of this file. If an error is - found then the loop counter will no longer be incremented allowing the check - task to recognise the error. */ - asm volatile ( "reg_test_1_start: \n\t" - " moveq #1, %d0 \n\t" - " moveq #2, %d1 \n\t" - " moveq #3, %d2 \n\t" - " moveq #4, %d3 \n\t" - " moveq #5, %d4 \n\t" - " moveq #6, %d5 \n\t" - " moveq #7, %d6 \n\t" - " moveq #8, %d7 \n\t" - " move #9, %a0 \n\t" - " move #10, %a1 \n\t" - " move #11, %a2 \n\t" - " move #12, %a3 \n\t" - " move #13, %a4 \n\t" - " move #14, %a5 \n\t" - " move #15, %a6 \n\t" - " \n\t" - " cmpi.l #1, %d0 \n\t" - " bne reg_test_1_error \n\t" - " cmpi.l #2, %d1 \n\t" - " bne reg_test_1_error \n\t" - " cmpi.l #3, %d2 \n\t" - " bne reg_test_1_error \n\t" - " cmpi.l #4, %d3 \n\t" - " bne reg_test_1_error \n\t" - " cmpi.l #5, %d4 \n\t" - " bne reg_test_1_error \n\t" - " cmpi.l #6, %d5 \n\t" - " bne reg_test_1_error \n\t" - " cmpi.l #7, %d6 \n\t" - " bne reg_test_1_error \n\t" - " cmpi.l #8, %d7 \n\t" - " bne reg_test_1_error \n\t" - " move %a0, %d0 \n\t" - " cmpi.l #9, %d0 \n\t" - " bne reg_test_1_error \n\t" - " move %a1, %d0 \n\t" - " cmpi.l #10, %d0 \n\t" - " bne reg_test_1_error \n\t" - " move %a2, %d0 \n\t" - " cmpi.l #11, %d0 \n\t" - " bne reg_test_1_error \n\t" - " move %a3, %d0 \n\t" - " cmpi.l #12, %d0 \n\t" - " bne reg_test_1_error \n\t" - " move %a4, %d0 \n\t" - " cmpi.l #13, %d0 \n\t" - " bne reg_test_1_error \n\t" - " move %a5, %d0 \n\t" - " cmpi.l #14, %d0 \n\t" - " bne reg_test_1_error \n\t" - " move %a6, %d0 \n\t" - " cmpi.l #15, %d0 \n\t" - " bne reg_test_1_error \n\t" - " movel ulRegTest1Counter, %d0 \n\t" - " addql #1, %d0 \n\t" - " movel %d0, ulRegTest1Counter \n\t" - " bra reg_test_1_start \n\t" - "reg_test_1_error: \n\t" - " bra reg_test_1_error \n\t" - ); -} -/*-----------------------------------------------------------*/ - -static void vRegTest2Task( void *pvParameters ) -{ - /* Sanity check - did we receive the parameter expected? */ - if( pvParameters != &ulRegTest2Counter ) - { - /* Change here so the check task can detect that an error occurred. */ - for( ;; ); - } - - /* Set all the registers to known values, then check that each retains its - expected value - as described at the top of this file. If an error is - found then the loop counter will no longer be incremented allowing the check - task to recognise the error. */ - asm volatile ( "reg_test_2_start: \n\t" - " moveq #10, %d0 \n\t" - " moveq #20, %d1 \n\t" - " moveq #30, %d2 \n\t" - " moveq #40, %d3 \n\t" - " moveq #50, %d4 \n\t" - " moveq #60, %d5 \n\t" - " moveq #70, %d6 \n\t" - " moveq #80, %d7 \n\t" - " move #90, %a0 \n\t" - " move #100, %a1 \n\t" - " move #110, %a2 \n\t" - " move #120, %a3 \n\t" - " move #130, %a4 \n\t" - " move #140, %a5 \n\t" - " move #150, %a6 \n\t" - " \n\t" - " cmpi.l #10, %d0 \n\t" - " bne reg_test_2_error \n\t" - " cmpi.l #20, %d1 \n\t" - " bne reg_test_2_error \n\t" - " cmpi.l #30, %d2 \n\t" - " bne reg_test_2_error \n\t" - " cmpi.l #40, %d3 \n\t" - " bne reg_test_2_error \n\t" - " cmpi.l #50, %d4 \n\t" - " bne reg_test_2_error \n\t" - " cmpi.l #60, %d5 \n\t" - " bne reg_test_2_error \n\t" - " cmpi.l #70, %d6 \n\t" - " bne reg_test_2_error \n\t" - " cmpi.l #80, %d7 \n\t" - " bne reg_test_2_error \n\t" - " move %a0, %d0 \n\t" - " cmpi.l #90, %d0 \n\t" - " bne reg_test_2_error \n\t" - " move %a1, %d0 \n\t" - " cmpi.l #100, %d0 \n\t" - " bne reg_test_2_error \n\t" - " move %a2, %d0 \n\t" - " cmpi.l #110, %d0 \n\t" - " bne reg_test_2_error \n\t" - " move %a3, %d0 \n\t" - " cmpi.l #120, %d0 \n\t" - " bne reg_test_2_error \n\t" - " move %a4, %d0 \n\t" - " cmpi.l #130, %d0 \n\t" - " bne reg_test_2_error \n\t" - " move %a5, %d0 \n\t" - " cmpi.l #140, %d0 \n\t" - " bne reg_test_2_error \n\t" - " move %a6, %d0 \n\t" - " cmpi.l #150, %d0 \n\t" - " bne reg_test_2_error \n\t" - " movel ulRegTest1Counter, %d0 \n\t" - " addql #1, %d0 \n\t" - " movel %d0, ulRegTest2Counter \n\t" - " bra reg_test_2_start \n\t" - "reg_test_2_error: \n\t" - " bra reg_test_2_error \n\t" - ); -} -/*-----------------------------------------------------------*/ - diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/printf-stdarg.c b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/printf-stdarg.c deleted file mode 100644 index b5ac41be7..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/printf-stdarg.c +++ /dev/null @@ -1,293 +0,0 @@ -/* - Copyright 2001, 2002 Georges Menie (www.menie.org) - stdarg version contributed by Christian Ettinger - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU Lesser General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -*/ - -/* - putchar is the only external dependency for this file, - if you have a working putchar, leave it commented out. - If not, uncomment the define below and - replace outbyte(c) by your own function call. - -*/ - -#define putchar(c) c - -#include - -static void printchar(char **str, int c) -{ - //extern int putchar(int c); - - if (str) { - **str = (char)c; - ++(*str); - } - else - { - (void)putchar(c); - } -} - -#define PAD_RIGHT 1 -#define PAD_ZERO 2 - -static int prints(char **out, const char *string, int width, int pad) -{ - register int pc = 0, padchar = ' '; - - if (width > 0) { - register int len = 0; - register const char *ptr; - for (ptr = string; *ptr; ++ptr) ++len; - if (len >= width) width = 0; - else width -= len; - if (pad & PAD_ZERO) padchar = '0'; - } - if (!(pad & PAD_RIGHT)) { - for ( ; width > 0; --width) { - printchar (out, padchar); - ++pc; - } - } - for ( ; *string ; ++string) { - printchar (out, *string); - ++pc; - } - for ( ; width > 0; --width) { - printchar (out, padchar); - ++pc; - } - - return pc; -} - -/* the following should be enough for 32 bit int */ -#define PRINT_BUF_LEN 12 - -static int printi(char **out, int i, int b, int sg, int width, int pad, int letbase) -{ - char print_buf[PRINT_BUF_LEN]; - register char *s; - register int t, neg = 0, pc = 0; - register unsigned int u = (unsigned int)i; - - if (i == 0) { - print_buf[0] = '0'; - print_buf[1] = '\0'; - return prints (out, print_buf, width, pad); - } - - if (sg && b == 10 && i < 0) { - neg = 1; - u = (unsigned int)-i; - } - - s = print_buf + PRINT_BUF_LEN-1; - *s = '\0'; - - while (u) { - t = (unsigned int)u % b; - if( t >= 10 ) - t += letbase - '0' - 10; - *--s = (char)(t + '0'); - u /= b; - } - - if (neg) { - if( width && (pad & PAD_ZERO) ) { - printchar (out, '-'); - ++pc; - --width; - } - else { - *--s = '-'; - } - } - - return pc + prints (out, s, width, pad); -} - -static int print( char **out, const char *format, va_list args ) -{ - register int width, pad; - register int pc = 0; - char scr[2]; - - for (; *format != 0; ++format) { - if (*format == '%') { - ++format; - width = pad = 0; - if (*format == '\0') break; - if (*format == '%') goto out; - if (*format == '-') { - ++format; - pad = PAD_RIGHT; - } - while (*format == '0') { - ++format; - pad |= PAD_ZERO; - } - for ( ; *format >= '0' && *format <= '9'; ++format) { - width *= 10; - width += *format - '0'; - } - if( *format == 's' ) { - register char *s = (char *)va_arg( args, int ); - pc += prints (out, s?s:"(null)", width, pad); - continue; - } - if( *format == 'd' ) { - pc += printi (out, va_arg( args, int ), 10, 1, width, pad, 'a'); - continue; - } - if( *format == 'x' ) { - pc += printi (out, va_arg( args, int ), 16, 0, width, pad, 'a'); - continue; - } - if( *format == 'X' ) { - pc += printi (out, va_arg( args, int ), 16, 0, width, pad, 'A'); - continue; - } - if( *format == 'u' ) { - pc += printi (out, va_arg( args, int ), 10, 0, width, pad, 'a'); - continue; - } - if( *format == 'c' ) { - /* char are converted to int then pushed on the stack */ - scr[0] = (char)va_arg( args, int ); - scr[1] = '\0'; - pc += prints (out, scr, width, pad); - continue; - } - } - else { - out: - printchar (out, *format); - ++pc; - } - } - if (out) **out = '\0'; - va_end( args ); - return pc; -} - -int printf(const char *format, ...) -{ - va_list args; - - va_start( args, format ); - return print( 0, format, args ); -} - -int sprintf(char *out, const char *format, ...) -{ - va_list args; - - va_start( args, format ); - return print( &out, format, args ); -} - - -int snprintf( char *buf, unsigned int count, const char *format, ... ) -{ - va_list args; - - ( void ) count; - - va_start( args, format ); - return print( &buf, format, args ); -} - - -#ifdef TEST_PRINTF -int main(void) -{ - char *ptr = "Hello world!"; - char *np = 0; - int i = 5; - unsigned int bs = sizeof(int)*8; - int mi; - char buf[80]; - - mi = (1 << (bs-1)) + 1; - printf("%s\n", ptr); - printf("printf test\n"); - printf("%s is null pointer\n", np); - printf("%d = 5\n", i); - printf("%d = - max int\n", mi); - printf("char %c = 'a'\n", 'a'); - printf("hex %x = ff\n", 0xff); - printf("hex %02x = 00\n", 0); - printf("signed %d = unsigned %u = hex %x\n", -3, -3, -3); - printf("%d %s(s)%", 0, "message"); - printf("\n"); - printf("%d %s(s) with %%\n", 0, "message"); - sprintf(buf, "justif: \"%-10s\"\n", "left"); printf("%s", buf); - sprintf(buf, "justif: \"%10s\"\n", "right"); printf("%s", buf); - sprintf(buf, " 3: %04d zero padded\n", 3); printf("%s", buf); - sprintf(buf, " 3: %-4d left justif.\n", 3); printf("%s", buf); - sprintf(buf, " 3: %4d right justif.\n", 3); printf("%s", buf); - sprintf(buf, "-3: %04d zero padded\n", -3); printf("%s", buf); - sprintf(buf, "-3: %-4d left justif.\n", -3); printf("%s", buf); - sprintf(buf, "-3: %4d right justif.\n", -3); printf("%s", buf); - - return 0; -} - -/* - * if you compile this file with - * gcc -Wall $(YOUR_C_OPTIONS) -DTEST_PRINTF -c printf.c - * you will get a normal warning: - * printf.c:214: warning: spurious trailing `%' in format - * this line is testing an invalid % at the end of the format string. - * - * this should display (on 32bit int machine) : - * - * Hello world! - * printf test - * (null) is null pointer - * 5 = 5 - * -2147483647 = - max int - * char a = 'a' - * hex ff = ff - * hex 00 = 00 - * signed -3 = unsigned 4294967293 = hex fffffffd - * 0 message(s) - * 0 message(s) with % - * justif: "left " - * justif: " right" - * 3: 0003 zero padded - * 3: 3 left justif. - * 3: 3 right justif. - * -3: -003 zero padded - * -3: -3 left justif. - * -3: -3 right justif. - */ - -#endif - - -/* To keep linker happy. */ -int write( int i, char* c, int n) -{ - (void)i; - (void)n; - (void)c; - return 0; -} - diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/FEC.c b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/FEC.c deleted file mode 100644 index ca00421d1..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/FEC.c +++ /dev/null @@ -1,733 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* Kernel includes. */ -#include "FreeRTOS.h" -#include "semphr.h" -#include "task.h" - -/* Hardware includes. */ -#include "fecbd.h" -#include "mii.h" -#include "eth_phy.h" -#include "eth.h" - -/* uIP includes. */ -#include "uip.h" -#include "uip_arp.h" - -/* Delay between polling the PHY to see if a link has been established. */ -#define fecLINK_DELAY ( 500 / portTICK_RATE_MS ) - -/* Delay to wait for an MII access. */ -#define fecMII_DELAY ( 10 / portTICK_RATE_MS ) -#define fecMAX_POLLS ( 20 ) - -/* Constants used to delay while waiting for a tx descriptor to be free. */ -#define fecMAX_WAIT_FOR_TX_BUFFER ( 200 / portTICK_RATE_MS ) - -/* We only use a single Tx descriptor which can lead to Txed packets being sent -twice (due to a bug in the FEC silicon). However, in this case the bug is used -to our advantage in that it means the uip-split mechanism is not required. */ -#define fecNUM_FEC_TX_BUFFERS ( 1 ) -#define fecTX_BUFFER_TO_USE ( 0 ) -/*-----------------------------------------------------------*/ - -/* The semaphore used to wake the uIP task when data arrives. */ -xSemaphoreHandle xFECSemaphore = NULL, xTxSemaphore = NULL; - -/* The buffer used by the uIP stack. In this case the pointer is used to -point to one of the Rx buffers to effect a zero copy policy. */ -unsigned char *uip_buf; - -/* The DMA descriptors. This is a char array to allow us to align it correctly. */ -static unsigned char xFECTxDescriptors_unaligned[ ( fecNUM_FEC_TX_BUFFERS * sizeof( FECBD ) ) + 16 ]; -static unsigned char xFECRxDescriptors_unaligned[ ( configNUM_FEC_RX_BUFFERS * sizeof( FECBD ) ) + 16 ]; -static FECBD *xFECTxDescriptors; -static FECBD *xFECRxDescriptors; - -/* The DMA buffers. These are char arrays to allow them to be aligned correctly. */ -static unsigned char ucFECRxBuffers[ ( configNUM_FEC_RX_BUFFERS * configFEC_BUFFER_SIZE ) + 16 ]; -static unsigned portBASE_TYPE uxNextRxBuffer = 0, uxIndexToBufferOwner = 0; - -/*-----------------------------------------------------------*/ - -/* - * Enable all the required interrupts in the FEC and in the interrupt controller. - */ -static void prvEnableFECInterrupts( void ); - -/* - * Reset the FEC if we get into an unrecoverable state. - */ -static void prvResetFEC( portBASE_TYPE xCalledFromISR ); - -/********************************************************************/ - -/* - * FUNCTION ADAPTED FROM FREESCALE SUPPLIED SOURCE - * - * Write a value to a PHY's MII register. - * - * Parameters: - * ch FEC channel - * phy_addr Address of the PHY. - * reg_addr Address of the register in the PHY. - * data Data to be written to the PHY register. - * - * Return Values: - * 0 on failure - * 1 on success. - * - * Please refer to your PHY manual for registers and their meanings. - * mii_write() polls for the FEC's MII interrupt event and clears it. - * If after a suitable amount of time the event isn't triggered, a - * value of 0 is returned. - */ -static int fec_mii_write( int phy_addr, int reg_addr, int data ) -{ -int timeout, iReturn; -uint32 eimr; - - /* Clear the MII interrupt bit */ - MCF_FEC_EIR = MCF_FEC_EIR_MII; - - /* Mask the MII interrupt */ - eimr = MCF_FEC_EIMR; - MCF_FEC_EIMR &= ~MCF_FEC_EIMR_MII; - - /* Write to the MII Management Frame Register to kick-off the MII write */ - MCF_FEC_MMFR = MCF_FEC_MMFR_ST_01 | MCF_FEC_MMFR_OP_WRITE | MCF_FEC_MMFR_PA(phy_addr) | MCF_FEC_MMFR_RA(reg_addr) | MCF_FEC_MMFR_TA_10 | MCF_FEC_MMFR_DATA( data ); - - /* Poll for the MII interrupt (interrupt should be masked) */ - for( timeout = 0; timeout < fecMAX_POLLS; timeout++ ) - { - if( MCF_FEC_EIR & MCF_FEC_EIR_MII ) - { - break; - } - else - { - vTaskDelay( fecMII_DELAY ); - } - } - - if( timeout == fecMAX_POLLS ) - { - iReturn = 0; - } - else - { - iReturn = 1; - } - - /* Clear the MII interrupt bit */ - MCF_FEC_EIR = MCF_FEC_EIR_MII; - - /* Restore the EIMR */ - MCF_FEC_EIMR = eimr; - - return iReturn; -} - -/********************************************************************/ -/* - * FUNCTION ADAPTED FROM FREESCALE SUPPLIED SOURCE - * - * Read a value from a PHY's MII register. - * - * Parameters: - * ch FEC channel - * phy_addr Address of the PHY. - * reg_addr Address of the register in the PHY. - * data Pointer to storage for the Data to be read - * from the PHY register (passed by reference) - * - * Return Values: - * 0 on failure - * 1 on success. - * - * Please refer to your PHY manual for registers and their meanings. - * mii_read() polls for the FEC's MII interrupt event and clears it. - * If after a suitable amount of time the event isn't triggered, a - * value of 0 is returned. - */ -static int fec_mii_read( int phy_addr, int reg_addr, unsigned short* data ) -{ -int timeout, iReturn; -uint32 eimr; - - /* Clear the MII interrupt bit */ - MCF_FEC_EIR = MCF_FEC_EIR_MII; - - /* Mask the MII interrupt */ - eimr = MCF_FEC_EIMR; - MCF_FEC_EIMR &= ~MCF_FEC_EIMR_MII; - - /* Write to the MII Management Frame Register to kick-off the MII read */ - MCF_FEC_MMFR = MCF_FEC_MMFR_ST_01 | MCF_FEC_MMFR_OP_READ | MCF_FEC_MMFR_PA(phy_addr) | MCF_FEC_MMFR_RA(reg_addr) | MCF_FEC_MMFR_TA_10; - - /* Poll for the MII interrupt (interrupt should be masked) */ - for( timeout = 0; timeout < fecMAX_POLLS; timeout++ ) - { - if (MCF_FEC_EIR & MCF_FEC_EIR_MII) - { - break; - } - else - { - vTaskDelay( fecMII_DELAY ); - } - } - - if( timeout == fecMAX_POLLS ) - { - iReturn = 0; - } - else - { - *data = (uint16)(MCF_FEC_MMFR & 0x0000FFFF); - iReturn = 1; - } - - /* Clear the MII interrupt bit */ - MCF_FEC_EIR = MCF_FEC_EIR_MII; - - /* Restore the EIMR */ - MCF_FEC_EIMR = eimr; - - return iReturn; -} - - -/********************************************************************/ -/* - * FUNCTION ADAPTED FROM FREESCALE SUPPLIED SOURCE - * - * Generate the hash table settings for the given address - * - * Parameters: - * addr 48-bit (6 byte) Address to generate the hash for - * - * Return Value: - * The 6 most significant bits of the 32-bit CRC result - */ -static unsigned char fec_hash_address( const unsigned char* addr ) -{ -unsigned long crc; -unsigned char byte; -int i, j; - - crc = 0xFFFFFFFF; - for(i=0; i<6; ++i) - { - byte = addr[i]; - for(j=0; j<8; ++j) - { - if((byte & 0x01)^(crc & 0x01)) - { - crc >>= 1; - crc = crc ^ 0xEDB88320; - } - else - { - crc >>= 1; - } - - byte >>= 1; - } - } - - return (unsigned char)(crc >> 26); -} - -/********************************************************************/ -/* - * FUNCTION ADAPTED FROM FREESCALE SUPPLIED SOURCE - * - * Set the Physical (Hardware) Address and the Individual Address - * Hash in the selected FEC - * - * Parameters: - * ch FEC channel - * pa Physical (Hardware) Address for the selected FEC - */ -static void fec_set_address( const unsigned char *pa ) -{ - unsigned char crc; - - /* - * Set the Physical Address - */ - /* Set the source address for the controller */ - MCF_FEC_PALR = ( pa[ 0 ] << 24 ) | ( pa[ 1 ] << 16 ) | ( pa[ 2 ] << 8 ) | ( pa[ 3 ] << 0 ); - MCF_FEC_PAUR = ( pa[ 4 ] << 24 ) | ( pa[ 5 ] << 16 ); - - /* - * Calculate and set the hash for given Physical Address - * in the Individual Address Hash registers - */ - crc = fec_hash_address( pa ); - if( crc >= 32 ) - { - MCF_FEC_IAUR |= (unsigned long)(1 << (crc - 32)); - } - else - { - MCF_FEC_IALR |= (unsigned long)(1 << crc); - } -} -/*-----------------------------------------------------------*/ - -static void prvInitialiseFECBuffers( void ) -{ -unsigned portBASE_TYPE ux; -unsigned char *pcBufPointer; - - /* Correctly align the Tx descriptor pointer. */ - pcBufPointer = &( xFECTxDescriptors_unaligned[ 0 ] ); - while( ( ( unsigned long ) pcBufPointer & 0x0fUL ) != 0 ) - { - pcBufPointer++; - } - - xFECTxDescriptors = ( FECBD * ) pcBufPointer; - - /* Likewise the Rx descriptor pointer. */ - pcBufPointer = &( xFECRxDescriptors_unaligned[ 0 ] ); - while( ( ( unsigned long ) pcBufPointer & 0x0fUL ) != 0 ) - { - pcBufPointer++; - } - - xFECRxDescriptors = ( FECBD * ) pcBufPointer; - - - /* Setup the Tx buffers and descriptors. There is no separate Tx buffer - to point to (the Rx buffers are actually used) so the data member is - set to NULL for now. */ - for( ux = 0; ux < fecNUM_FEC_TX_BUFFERS; ux++ ) - { - xFECTxDescriptors[ ux ].status = TX_BD_TC; - xFECTxDescriptors[ ux ].data = NULL; - xFECTxDescriptors[ ux ].length = 0; - } - - /* Setup the Rx buffers and descriptors, having first ensured correct - alignment. */ - pcBufPointer = &( ucFECRxBuffers[ 0 ] ); - while( ( ( unsigned long ) pcBufPointer & 0x0fUL ) != 0 ) - { - pcBufPointer++; - } - - for( ux = 0; ux < configNUM_FEC_RX_BUFFERS; ux++ ) - { - xFECRxDescriptors[ ux ].status = RX_BD_E; - xFECRxDescriptors[ ux ].length = configFEC_BUFFER_SIZE; - xFECRxDescriptors[ ux ].data = pcBufPointer; - pcBufPointer += configFEC_BUFFER_SIZE; - } - - /* Set the wrap bit in the last descriptors to form a ring. */ - xFECTxDescriptors[ fecNUM_FEC_TX_BUFFERS - 1 ].status |= TX_BD_W; - xFECRxDescriptors[ configNUM_FEC_RX_BUFFERS - 1 ].status |= RX_BD_W; - - uxNextRxBuffer = 0; -} -/*-----------------------------------------------------------*/ - -void vFECInit( void ) -{ -unsigned short usData; -struct uip_eth_addr xAddr; -unsigned portBASE_TYPE ux; - -/* The MAC address is set at the foot of FreeRTOSConfig.h. */ -const unsigned char ucMACAddress[6] = -{ - configMAC_0, configMAC_1,configMAC_2, configMAC_3, configMAC_4, configMAC_5 -}; - - /* Create the semaphore used by the ISR to wake the uIP task. */ - vSemaphoreCreateBinary( xFECSemaphore ); - - /* Create the semaphore used to unblock any tasks that might be waiting - for a Tx descriptor. */ - vSemaphoreCreateBinary( xTxSemaphore ); - - /* Initialise all the buffers and descriptors used by the DMA. */ - prvInitialiseFECBuffers(); - - for( usData = 0; usData < 6; usData++ ) - { - xAddr.addr[ usData ] = ucMACAddress[ usData ]; - } - uip_setethaddr( xAddr ); - - /* Set the Reset bit and clear the Enable bit */ - MCF_FEC_ECR = MCF_FEC_ECR_RESET; - - /* Wait at least 8 clock cycles */ - for( usData = 0; usData < 10; usData++ ) - { - asm( "NOP" ); - } - - /* Set MII speed to 2.5MHz. */ - MCF_FEC_MSCR = MCF_FEC_MSCR_MII_SPEED( ( ( ( configCPU_CLOCK_HZ / 1000000 ) / 5 ) + 1 ) ); - - /* Initialize PLDPAR to enable Ethernet LEDs. */ - MCF_GPIO_PLDPAR = MCF_GPIO_PLDPAR_ACTLED_ACTLED | MCF_GPIO_PLDPAR_LINKLED_LINKLED | MCF_GPIO_PLDPAR_SPDLED_SPDLED - | MCF_GPIO_PLDPAR_DUPLED_DUPLED | MCF_GPIO_PLDPAR_COLLED_COLLED | MCF_GPIO_PLDPAR_RXLED_RXLED - | MCF_GPIO_PLDPAR_TXLED_TXLED; - - /* Initialize Port TA to enable Axcel control. */ - MCF_GPIO_PTAPAR = 0x00; - MCF_GPIO_DDRTA = 0x0F; - MCF_GPIO_PORTTA = 0x04; - - /* Set phy address to zero. */ - MCF_EPHY_EPHYCTL1 = MCF_EPHY_EPHYCTL1_PHYADD( 0 ); - - /* Enable EPHY module with PHY clocks disabled. Do not turn on PHY clocks - until both FEC and EPHY are completely setup (see Below). */ - MCF_EPHY_EPHYCTL0 = (uint8)(MCF_EPHY_EPHYCTL0_DIS100 | MCF_EPHY_EPHYCTL0_DIS10); - - /* Enable auto_neg at start-up */ - MCF_EPHY_EPHYCTL0 = (uint8)(MCF_EPHY_EPHYCTL0 & (MCF_EPHY_EPHYCTL0_ANDIS)); - - /* Enable EPHY module. */ - MCF_EPHY_EPHYCTL0 = (uint8)(MCF_EPHY_EPHYCTL0_EPHYEN | MCF_EPHY_EPHYCTL0); - - /* Let PHY PLLs be determined by PHY. */ - MCF_EPHY_EPHYCTL0 = (uint8)(MCF_EPHY_EPHYCTL0 & ~(MCF_EPHY_EPHYCTL0_DIS100 | MCF_EPHY_EPHYCTL0_DIS10)); - - /* Settle. */ - vTaskDelay( fecLINK_DELAY ); - - /* Can we talk to the PHY? */ - do - { - vTaskDelay( fecLINK_DELAY ); - usData = 0; - fec_mii_read( configPHY_ADDRESS, PHY_PHYIDR1, &usData ); - - } while( usData == 0xffff ); - - do - { - /* Start auto negotiate. */ - fec_mii_write( configPHY_ADDRESS, PHY_BMCR, ( PHY_BMCR_AN_RESTART | PHY_BMCR_AN_ENABLE ) ); - - /* Wait for auto negotiate to complete. */ - do - { - ux++; - if( ux > 10 ) - { - /* Hardware bug workaround! Force 100Mbps half duplex. */ - while( !fec_mii_read( configPHY_ADDRESS, 0, &usData ) ){}; - usData &= ~0x2000; /* 10Mbps */ - usData &= ~0x0100; /* Half Duplex */ - usData &= ~0x1000; /* Manual Mode */ - while( !fec_mii_write( configPHY_ADDRESS, 0, usData ) ){}; - while( !fec_mii_write( configPHY_ADDRESS, 0, (usData|0x0200) )){}; /* Force re-negotiate */ - break; - } - vTaskDelay( fecLINK_DELAY ); - fec_mii_read( configPHY_ADDRESS, PHY_BMSR, &usData ); - - } while( !( usData & PHY_BMSR_AN_COMPLETE ) ); - - } while( 0 ); //while( !( usData & PHY_BMSR_LINK ) ); - - /* When we get here we have a link - find out what has been negotiated. */ - fec_mii_read( configPHY_ADDRESS, PHY_ANLPAR, &usData ); - - if( ( usData & PHY_ANLPAR_100BTX_FDX ) || ( usData & PHY_ANLPAR_100BTX ) ) - { - /* Speed is 100. */ - } - else - { - /* Speed is 10. */ - } - - if( ( usData & PHY_ANLPAR_100BTX_FDX ) || ( usData & PHY_ANLPAR_10BTX_FDX ) ) - { - MCF_FEC_RCR &= (unsigned long)~MCF_FEC_RCR_DRT; - MCF_FEC_TCR |= MCF_FEC_TCR_FDEN; - } - else - { - MCF_FEC_RCR |= MCF_FEC_RCR_DRT; - MCF_FEC_TCR &= (unsigned long)~MCF_FEC_TCR_FDEN; - } - - /* Clear the Individual and Group Address Hash registers */ - MCF_FEC_IALR = 0; - MCF_FEC_IAUR = 0; - MCF_FEC_GALR = 0; - MCF_FEC_GAUR = 0; - - /* Set the Physical Address for the selected FEC */ - fec_set_address( ucMACAddress ); - - /* Set Rx Buffer Size */ - MCF_FEC_EMRBR = (unsigned short)configFEC_BUFFER_SIZE; - - /* Point to the start of the circular Rx buffer descriptor queue */ - MCF_FEC_ERDSR = ( volatile unsigned long ) &( xFECRxDescriptors[ 0 ] ); - - /* Point to the start of the circular Tx buffer descriptor queue */ - MCF_FEC_ETSDR = ( volatile unsigned long ) &( xFECTxDescriptors[ 0 ] ); - - /* Mask all FEC interrupts */ - MCF_FEC_EIMR = ( unsigned long ) -1; - - /* Clear all FEC interrupt events */ - MCF_FEC_EIR = ( unsigned long ) -1; - - /* Initialize the Receive Control Register */ - MCF_FEC_RCR = MCF_FEC_RCR_MAX_FL(ETH_MAX_FRM) | MCF_FEC_RCR_FCE; - - MCF_FEC_RCR |= MCF_FEC_RCR_MII_MODE; - - #if( configUSE_PROMISCUOUS_MODE == 1 ) - { - MCF_FEC_RCR |= MCF_FEC_RCR_PROM; - } - #endif - - prvEnableFECInterrupts(); - - /* Finally... enable. */ - MCF_FEC_ECR = MCF_FEC_ECR_ETHER_EN; - MCF_FEC_RDAR = MCF_FEC_RDAR_R_DES_ACTIVE; -} -/*-----------------------------------------------------------*/ - -static void prvEnableFECInterrupts( void ) -{ -const unsigned portBASE_TYPE uxFirstFECVector = 23, uxLastFECVector = 35; -unsigned portBASE_TYPE ux; - -#if configFEC_INTERRUPT_PRIORITY > configMAX_SYSCALL_INTERRUPT_PRIORITY - #error configFEC_INTERRUPT_PRIORITY must be less than or equal to configMAX_SYSCALL_INTERRUPT_PRIORITY -#endif - - /* Set the priority of each of the FEC interrupts. */ - for( ux = uxFirstFECVector; ux <= uxLastFECVector; ux++ ) - { - MCF_INTC0_ICR( ux ) = MCF_INTC_ICR_IL( configFEC_INTERRUPT_PRIORITY ); - } - - /* Enable the FEC interrupts in the mask register */ - MCF_INTC0_IMRH &= ~( MCF_INTC_IMRH_INT_MASK33 | MCF_INTC_IMRH_INT_MASK34 | MCF_INTC_IMRH_INT_MASK35 ); - MCF_INTC0_IMRL &= ~( MCF_INTC_IMRL_INT_MASK25 | MCF_INTC_IMRL_INT_MASK26 | MCF_INTC_IMRL_INT_MASK27 - | MCF_INTC_IMRL_INT_MASK28 | MCF_INTC_IMRL_INT_MASK29 | MCF_INTC_IMRL_INT_MASK30 - | MCF_INTC_IMRL_INT_MASK31 | MCF_INTC_IMRL_INT_MASK23 | MCF_INTC_IMRL_INT_MASK24 - | MCF_INTC_IMRL_MASKALL ); - - /* Clear any pending FEC interrupt events */ - MCF_FEC_EIR = MCF_FEC_EIR_CLEAR_ALL; - - /* Unmask all FEC interrupts */ - MCF_FEC_EIMR = MCF_FEC_EIMR_UNMASK_ALL; -} -/*-----------------------------------------------------------*/ - -static void prvResetFEC( portBASE_TYPE xCalledFromISR ) -{ -portBASE_TYPE x; - - /* A critical section is used unless this function is being called from - an ISR. */ - if( xCalledFromISR == pdFALSE ) - { - taskENTER_CRITICAL(); - } - - { - /* Reset all buffers and descriptors. */ - prvInitialiseFECBuffers(); - - /* Set the Reset bit and clear the Enable bit */ - MCF_FEC_ECR = MCF_FEC_ECR_RESET; - - /* Wait at least 8 clock cycles */ - for( x = 0; x < 10; x++ ) - { - asm( "NOP" ); - } - - /* Re-enable. */ - MCF_FEC_ECR = MCF_FEC_ECR_ETHER_EN; - MCF_FEC_RDAR = MCF_FEC_RDAR_R_DES_ACTIVE; - } - - if( xCalledFromISR == pdFALSE ) - { - taskEXIT_CRITICAL(); - } -} -/*-----------------------------------------------------------*/ - -unsigned short usFECGetRxedData( void ) -{ -unsigned short usLen; - - /* Obtain the size of the packet and put it into the "len" variable. */ - usLen = xFECRxDescriptors[ uxNextRxBuffer ].length; - - if( ( usLen != 0 ) && ( ( xFECRxDescriptors[ uxNextRxBuffer ].status & RX_BD_E ) == 0 ) ) - { - uip_buf = xFECRxDescriptors[ uxNextRxBuffer ].data; - } - else - { - usLen = 0; - } - - return usLen; -} -/*-----------------------------------------------------------*/ - -void vFECRxProcessingCompleted( void ) -{ - /* Free the descriptor as the buffer it points to is no longer in use. */ - xFECRxDescriptors[ uxNextRxBuffer ].status |= RX_BD_E; - MCF_FEC_RDAR = MCF_FEC_RDAR_R_DES_ACTIVE; - uxNextRxBuffer++; - if( uxNextRxBuffer >= configNUM_FEC_RX_BUFFERS ) - { - uxNextRxBuffer = 0; - } -} -/*-----------------------------------------------------------*/ - -void vFECSendData( void ) -{ - /* Ensure no Tx frames are outstanding. */ - if( xSemaphoreTake( xTxSemaphore, fecMAX_WAIT_FOR_TX_BUFFER ) == pdPASS ) - { - /* Get a DMA buffer into which we can write the data to send. */ - if( xFECTxDescriptors[ fecTX_BUFFER_TO_USE ].status & TX_BD_R ) - { - /*** ERROR didn't expect this. Sledge hammer error handling. ***/ - prvResetFEC( pdFALSE ); - - /* Make sure we leave the semaphore in the expected state as nothing - is being transmitted this will not happen in the Tx ISR. */ - xSemaphoreGive( xTxSemaphore ); - } - else - { - /* Setup the buffer descriptor for transmission. The data being - sent is actually stored in one of the Rx descriptor buffers, - pointed to by uip_buf. */ - xFECTxDescriptors[ fecTX_BUFFER_TO_USE ].length = uip_len; - xFECTxDescriptors[ fecTX_BUFFER_TO_USE ].status |= ( TX_BD_R | TX_BD_L ); - xFECTxDescriptors[ fecTX_BUFFER_TO_USE ].data = uip_buf; - - /* Remember which Rx descriptor owns the buffer we are sending. */ - uxIndexToBufferOwner = uxNextRxBuffer; - - /* We have finished with this Rx descriptor now. */ - uxNextRxBuffer++; - if( uxNextRxBuffer >= configNUM_FEC_RX_BUFFERS ) - { - uxNextRxBuffer = 0; - } - - /* Continue the Tx DMA (in case it was waiting for a new TxBD) */ - MCF_FEC_TDAR = MCF_FEC_TDAR_X_DES_ACTIVE; - } - } - else - { - /* Gave up waiting. Free the buffer back to the DMA. */ - vFECRxProcessingCompleted(); - } -} -/*-----------------------------------------------------------*/ - -void vFEC_ISR( void ) -{ -unsigned long ulEvent; -portBASE_TYPE xHighPriorityTaskWoken = pdFALSE; - - /* This handler is called in response to any of the many separate FEC - interrupt. */ - - /* Find the cause of the interrupt, then clear the interrupt. */ - ulEvent = MCF_FEC_EIR & MCF_FEC_EIMR; - MCF_FEC_EIR = ulEvent; - - if( ( ulEvent & MCF_FEC_EIR_RXB ) || ( ulEvent & MCF_FEC_EIR_RXF ) ) - { - /* A packet has been received. Wake the handler task. */ - xSemaphoreGiveFromISR( xFECSemaphore, &xHighPriorityTaskWoken ); - } - - if( ulEvent & ( MCF_FEC_EIR_UN | MCF_FEC_EIR_RL | MCF_FEC_EIR_LC | MCF_FEC_EIR_EBERR | MCF_FEC_EIR_BABT | MCF_FEC_EIR_BABR | MCF_FEC_EIR_HBERR ) ) - { - /* Sledge hammer error handling. */ - prvResetFEC( pdTRUE ); - } - - if( ( ulEvent & MCF_FEC_EIR_TXF ) || ( ulEvent & MCF_FEC_EIR_TXB ) ) - { - /* The buffer being sent is pointed to by an Rx descriptor, now the - buffer has been sent we can mark the Rx descriptor as free again. */ - xFECRxDescriptors[ uxIndexToBufferOwner ].status |= RX_BD_E; - MCF_FEC_RDAR = MCF_FEC_RDAR_R_DES_ACTIVE; - xSemaphoreGiveFromISR( xTxSemaphore, &xHighPriorityTaskWoken ); - } - - portEND_SWITCHING_ISR( xHighPriorityTaskWoken ); -} -/*-----------------------------------------------------------*/ - -/* Install the many different interrupt vectors, all of which call the same -handler function. */ -void __attribute__ ((interrupt)) __cs3_isr_interrupt_87( void ) { vFEC_ISR(); } -void __attribute__ ((interrupt)) __cs3_isr_interrupt_88( void ) { vFEC_ISR(); } -void __attribute__ ((interrupt)) __cs3_isr_interrupt_89( void ) { vFEC_ISR(); } -void __attribute__ ((interrupt)) __cs3_isr_interrupt_90( void ) { vFEC_ISR(); } -void __attribute__ ((interrupt)) __cs3_isr_interrupt_91( void ) { vFEC_ISR(); } -void __attribute__ ((interrupt)) __cs3_isr_interrupt_92( void ) { vFEC_ISR(); } -void __attribute__ ((interrupt)) __cs3_isr_interrupt_93( void ) { vFEC_ISR(); } -void __attribute__ ((interrupt)) __cs3_isr_interrupt_94( void ) { vFEC_ISR(); } -void __attribute__ ((interrupt)) __cs3_isr_interrupt_95( void ) { vFEC_ISR(); } -void __attribute__ ((interrupt)) __cs3_isr_interrupt_96( void ) { vFEC_ISR(); } -void __attribute__ ((interrupt)) __cs3_isr_interrupt_97( void ) { vFEC_ISR(); } -void __attribute__ ((interrupt)) __cs3_isr_interrupt_98( void ) { vFEC_ISR(); } -void __attribute__ ((interrupt)) __cs3_isr_interrupt_99( void ) { vFEC_ISR(); } - - diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/FEC.h b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/FEC.h deleted file mode 100644 index 2414d1dca..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/FEC.h +++ /dev/null @@ -1,80 +0,0 @@ -/* - * File: fec.h - * Purpose: Driver for the Fast Ethernet Controller (FEC) - * - * Notes: - */ - -#ifndef _FEC_H_ -#define _FEC_H_ - -#include "eth.h" -#include "fecbd.h" -#include "mii.h" -#include "eth_phy.h" - -/********************************************************************/ - -/* External Interface Modes */ -#define FEC_MODE_7WIRE 0 /* Old 7-wire (AMD) mode */ -#define FEC_MODE_MII 1 /* Media Independent Interface */ -#define FEC_MODE_RMII 2 /* Reduced MII */ -#define FEC_MODE_LOOPBACK 3 /* Internal Loopback */ - -#define INTC_LVL_FEC 3 -/* - * FEC Configuration Parameters - */ -typedef struct -{ - uint8 ch; /* FEC channel */ - uint8 mode; /* Transceiver mode */ - MII_SPEED speed; /* Ethernet Speed */ - MII_DUPLEX duplex; /* Ethernet Duplex */ - uint8 prom; /* Promiscuous Mode? */ - uint8 mac[6]; /* Ethernet Address */ - uint8 phyaddr; /* PHY address */ - uint8 initphy; /* Init PHY? */ - int nrxbd; /* Number of RxBDs */ - int ntxbd; /* Number of TxBDs */ -} FEC_CONFIG; -#define YES 1 -#define NO 0 -/* - * FEC Event Log - */ -typedef struct { - int errors; /* total count of errors */ - int hberr; /* heartbeat error */ - int babr; /* babbling receiver */ - int babt; /* babbling transmitter */ - int gra; /* graceful stop complete */ - int txf; /* transmit frame */ - int txb; /* transmit buffer */ - int rxf; /* receive frame */ - int rxb; /* received buffer */ - int mii; /* MII */ - int eberr; /* FEC/DMA fatal bus error */ - int lc; /* late collision */ - int rl; /* collision retry limit */ - int un; /* Tx FIFO underflow */ - int rfsw_inv; /* Invalid bit in RFSW */ - int rfsw_l; /* RFSW Last in Frame */ - int rfsw_m; /* RFSW Miss */ - int rfsw_bc; /* RFSW Broadcast */ - int rfsw_mc; /* RFSW Multicast */ - int rfsw_lg; /* RFSW Length Violation */ - int rfsw_no; /* RFSW Non-octet */ - int rfsw_cr; /* RFSW Bad CRC */ - int rfsw_ov; /* RFSW Overflow */ - int rfsw_tr; /* RFSW Truncated */ -} FEC_EVENT_LOG; - -void vFECInit( void ); -unsigned short usFECGetRxedData( void ); -void vFECSendData( void ); -void vFECRxProcessingCompleted( void ); - -/********************************************************************/ - -#endif /* _FEC_H_ */ diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/eth.h b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/eth.h deleted file mode 100644 index 6b0b664b1..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/eth.h +++ /dev/null @@ -1,55 +0,0 @@ -/*! - * \file eth.h - * \brief Definitinos for Ethernet Frames - * \version $Revision: 1.2 $ - * \author Michael Norman - */ - -#ifndef _ETH_H -#define _ETH_H - -/*******************************************************************/ - -/* Ethernet standard lengths in bytes*/ -#define ETH_ADDR_LEN (6) -#define ETH_TYPE_LEN (2) -#define ETH_CRC_LEN (4) -#define ETH_MAX_DATA (1500) -#define ETH_MIN_DATA (46) -#define ETH_HDR_LEN (ETH_ADDR_LEN * 2 + ETH_TYPE_LEN) - -/* Defined Ethernet Frame Types */ -#define ETH_FRM_IP (0x0800) -#define ETH_FRM_ARP (0x0806) -#define ETH_FRM_RARP (0x8035) -#define ETH_FRM_TEST (0xA5A5) - -/* Maximum and Minimum Ethernet Frame Sizes */ -#define ETH_MAX_FRM (ETH_HDR_LEN + ETH_MAX_DATA + ETH_CRC_LEN) -#define ETH_MIN_FRM (ETH_HDR_LEN + ETH_MIN_DATA + ETH_CRC_LEN) -#define ETH_MTU (ETH_HDR_LEN + ETH_MAX_DATA) - -/* Ethernet Addresses */ -typedef uint8 ETH_ADDR[ETH_ADDR_LEN]; - -/* 16-bit Ethernet Frame Type, ie. Protocol */ -typedef uint16 ETH_FRM_TYPE; - -/* Ethernet Frame Header definition */ -typedef struct -{ - ETH_ADDR dest; - ETH_ADDR src; - ETH_FRM_TYPE type; -} ETH_HDR; - -/* Ethernet Frame definition */ -typedef struct -{ - ETH_HDR head; - uint8* data; -} ETH_FRAME; - -/*******************************************************************/ - -#endif /* _ETH_H */ diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/eth_phy.h b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/eth_phy.h deleted file mode 100644 index 9242e10bc..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/eth_phy.h +++ /dev/null @@ -1,87 +0,0 @@ -/*! - * \file eth.h - * \brief Definitions for Ethernet Physical Layer Interface - * \version $Revision: 1.3 $ - * \author Michael Norman - */ - -#ifndef _ETH_PHY_H -#define _ETH_PHY_H - -/*******************************************************************/ - -int -eth_phy_autoneg(int phy_addr, MII_SPEED speed, MII_DUPLEX duplex); - -int -eth_phy_manual(int phy_addr, MII_SPEED speed, MII_DUPLEX duplex, int loop); - -int -eth_phy_get_speed(int, int*); - -int -eth_phy_get_duplex(int, int*); - -int -eth_phy_reg_dump(int); - -/*******************************************************************/ - -/* MII Register Addresses */ -#define PHY_BMCR (0x00) -#define PHY_BMSR (0x01) -#define PHY_PHYIDR1 (0x02) -#define PHY_PHYIDR2 (0x03) -#define PHY_ANAR (0x04) -#define PHY_ANLPAR (0x05) - -/* Bit definitions and macros for PHY_CTRL */ -#define PHY_BMCR_RESET (0x8000) -#define PHY_BMCR_LOOP (0x4000) -#define PHY_BMCR_SPEED (0x2000) -#define PHY_BMCR_AN_ENABLE (0x1000) -#define PHY_BMCR_POWERDOWN (0x0800) -#define PHY_BMCR_ISOLATE (0x0400) -#define PHY_BMCR_AN_RESTART (0x0200) -#define PHY_BMCR_FDX (0x0100) -#define PHY_BMCR_COL_TEST (0x0080) - -/* Bit definitions and macros for PHY_STAT */ -#define PHY_BMSR_100BT4 (0x8000) -#define PHY_BMSR_100BTX_FDX (0x4000) -#define PHY_BMSR_100BTX (0x2000) -#define PHY_BMSR_10BT_FDX (0x1000) -#define PHY_BMSR_10BT (0x0800) -#define PHY_BMSR_NO_PREAMBLE (0x0040) -#define PHY_BMSR_AN_COMPLETE (0x0020) -#define PHY_BMSR_REMOTE_FAULT (0x0010) -#define PHY_BMSR_AN_ABILITY (0x0008) -#define PHY_BMSR_LINK (0x0004) -#define PHY_BMSR_JABBER (0x0002) -#define PHY_BMSR_EXTENDED (0x0001) - -/* Bit definitions and macros for PHY_AN_ADV */ -#define PHY_ANAR_NEXT_PAGE (0x8001) -#define PHY_ANAR_REM_FAULT (0x2001) -#define PHY_ANAR_PAUSE (0x0401) -#define PHY_ANAR_100BT4 (0x0201) -#define PHY_ANAR_100BTX_FDX (0x0101) -#define PHY_ANAR_100BTX (0x0081) -#define PHY_ANAR_10BT_FDX (0x0041) -#define PHY_ANAR_10BT (0x0021) -#define PHY_ANAR_802_3 (0x0001) - -/* Bit definitions and macros for PHY_AN_LINK_PAR */ -#define PHY_ANLPAR_NEXT_PAGE (0x8000) -#define PHY_ANLPAR_ACK (0x4000) -#define PHY_ANLPAR_REM_FAULT (0x2000) -#define PHY_ANLPAR_PAUSE (0x0400) -#define PHY_ANLPAR_100BT4 (0x0200) -#define PHY_ANLPAR_100BTX_FDX (0x0100) -#define PHY_ANLPAR_100BTX (0x0080) -#define PHY_ANLPAR_10BTX_FDX (0x0040) -#define PHY_ANLPAR_10BT (0x0020) - -/*******************************************************************/ - -#endif /* _ETH_PHY_H */ diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/fecbd.h b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/fecbd.h deleted file mode 100644 index f98578236..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/fecbd.h +++ /dev/null @@ -1,100 +0,0 @@ -/* - * File: fecbd.h - * Purpose: - * - * Purpose: Provide a simple buffer management driver - */ - -#ifndef _FECBD_H_ -#define _FECBD_H_ - -/********************************************************************/ - -#define Rx 1 -#define Tx 0 - -/* - * Buffer sizes in bytes - */ -#ifndef RX_BUF_SZ -#define RX_BUF_SZ 1520 //2048 -#endif -#ifndef TX_BUF_SZ -#define TX_BUF_SZ 1520 -#endif - -/* - * Buffer Descriptor Format - */ -typedef struct -{ - uint16 status; /* control and status */ - uint16 length; /* transfer length */ - uint8 *data; /* buffer address */ -} FECBD; - -/* - * Bit level definitions for status field of buffer descriptors - */ -#define TX_BD_R 0x8000 -#define TX_BD_TO1 0x4000 -#define TX_BD_W 0x2000 -#define TX_BD_TO2 0x1000 -#define TX_BD_INTERRUPT 0x1000 /* MCF547x/8x Only */ -#define TX_BD_L 0x0800 -#define TX_BD_TC 0x0400 -#define TX_BD_DEF 0x0200 /* MCF5272 Only */ -#define TX_BD_ABC 0x0200 -#define TX_BD_HB 0x0100 /* MCF5272 Only */ -#define TX_BD_LC 0x0080 /* MCF5272 Only */ -#define TX_BD_RL 0x0040 /* MCF5272 Only */ -#define TX_BD_UN 0x0002 /* MCF5272 Only */ -#define TX_BD_CSL 0x0001 /* MCF5272 Only */ - -#define RX_BD_E 0x8000 -#define RX_BD_R01 0x4000 -#define RX_BD_W 0x2000 -#define RX_BD_R02 0x1000 -#define RX_BD_INTERRUPT 0x1000 /* MCF547x/8x Only */ -#define RX_BD_L 0x0800 -#define RX_BD_M 0x0100 -#define RX_BD_BC 0x0080 -#define RX_BD_MC 0x0040 -#define RX_BD_LG 0x0020 -#define RX_BD_NO 0x0010 -#define RX_BD_CR 0x0004 -#define RX_BD_OV 0x0002 -#define RX_BD_TR 0x0001 -#define RX_BD_ERROR (RX_BD_NO | RX_BD_CR | RX_BD_OV | RX_BD_TR) - -/* - * The following defines are provided by the MCF547x/8x - * DMA API. These are shown here to show their correlation - * to the other FEC buffer descriptor status bits - * - * #define MCD_FEC_BUF_READY 0x8000 - * #define MCD_FEC_WRAP 0x2000 - * #define MCD_FEC_INTERRUPT 0x1000 - * #define MCD_FEC_END_FRAME 0x0800 - */ - -/* - * Functions provided in fec_bd.c - */ -int fecbd_init(int, int, int); -void fecbd_flush(int); -void fecbd_dump( void ); -uint32 fecbd_get_start(int, int); -FECBD* fecbd_rx_alloc(int); -FECBD* fecbd_tx_alloc(int); -FECBD* fecbd_tx_free(int); - -/* - * Error codes - */ -#define ERR_MALLOC (-1) -#define ERR_NBUFALLOC (-2) - -/*******************************************************************/ - -#endif /* _FECBD_H_ */ diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/http-strings.c b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/http-strings.c deleted file mode 100644 index ef7a41c7d..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/http-strings.c +++ /dev/null @@ -1,102 +0,0 @@ -const char http_http[8] = -/* "http://" */ -{0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, }; -const char http_200[5] = -/* "200 " */ -{0x32, 0x30, 0x30, 0x20, }; -const char http_301[5] = -/* "301 " */ -{0x33, 0x30, 0x31, 0x20, }; -const char http_302[5] = -/* "302 " */ -{0x33, 0x30, 0x32, 0x20, }; -const char http_get[5] = -/* "GET " */ -{0x47, 0x45, 0x54, 0x20, }; -const char http_10[9] = -/* "HTTP/1.0" */ -{0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30, }; -const char http_11[9] = -/* "HTTP/1.1" */ -{0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x31, }; -const char http_content_type[15] = -/* "content-type: " */ -{0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, }; -const char http_texthtml[10] = -/* "text/html" */ -{0x74, 0x65, 0x78, 0x74, 0x2f, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_location[11] = -/* "location: " */ -{0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, }; -const char http_host[7] = -/* "host: " */ -{0x68, 0x6f, 0x73, 0x74, 0x3a, 0x20, }; -const char http_crnl[3] = -/* "\r\n" */ -{0xd, 0xa, }; -const char http_index_html[12] = -/* "/index.html" */ -{0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_404_html[10] = -/* "/404.html" */ -{0x2f, 0x34, 0x30, 0x34, 0x2e, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_referer[9] = -/* "Referer:" */ -{0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x72, 0x3a, }; -const char http_header_200[84] = -/* "HTTP/1.0 200 OK\r\nServer: uIP/1.0 http://www.sics.se/~adam/uip/\r\nConnection: close\r\n" */ -{0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x32, 0x30, 0x30, 0x20, 0x4f, 0x4b, 0xd, 0xa, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x3a, 0x20, 0x75, 0x49, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x73, 0x69, 0x63, 0x73, 0x2e, 0x73, 0x65, 0x2f, 0x7e, 0x61, 0x64, 0x61, 0x6d, 0x2f, 0x75, 0x69, 0x70, 0x2f, 0xd, 0xa, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0xd, 0xa, }; -const char http_header_404[91] = -/* "HTTP/1.0 404 Not found\r\nServer: uIP/1.0 http://www.sics.se/~adam/uip/\r\nConnection: close\r\n" */ -{0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x34, 0x30, 0x34, 0x20, 0x4e, 0x6f, 0x74, 0x20, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0xd, 0xa, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x3a, 0x20, 0x75, 0x49, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x73, 0x69, 0x63, 0x73, 0x2e, 0x73, 0x65, 0x2f, 0x7e, 0x61, 0x64, 0x61, 0x6d, 0x2f, 0x75, 0x69, 0x70, 0x2f, 0xd, 0xa, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0xd, 0xa, }; -const char http_content_type_plain[29] = -/* "Content-type: text/plain\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_html[28] = -/* "Content-type: text/html\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_css [27] = -/* "Content-type: text/css\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x63, 0x73, 0x73, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_text[28] = -/* "Content-type: text/text\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x74, 0x65, 0x78, 0x74, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_png [28] = -/* "Content-type: image/png\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x70, 0x6e, 0x67, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_gif [28] = -/* "Content-type: image/gif\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x67, 0x69, 0x66, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_jpg [29] = -/* "Content-type: image/jpeg\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x6a, 0x70, 0x65, 0x67, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_binary[43] = -/* "Content-type: application/octet-stream\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x6f, 0x63, 0x74, 0x65, 0x74, 0x2d, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0xd, 0xa, 0xd, 0xa, }; -const char http_html[6] = -/* ".html" */ -{0x2e, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_shtml[7] = -/* ".shtml" */ -{0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_htm[5] = -/* ".htm" */ -{0x2e, 0x68, 0x74, 0x6d, }; -const char http_css[5] = -/* ".css" */ -{0x2e, 0x63, 0x73, 0x73, }; -const char http_png[5] = -/* ".png" */ -{0x2e, 0x70, 0x6e, 0x67, }; -const char http_gif[5] = -/* ".gif" */ -{0x2e, 0x67, 0x69, 0x66, }; -const char http_jpg[5] = -/* ".jpg" */ -{0x2e, 0x6a, 0x70, 0x67, }; -const char http_text[5] = -/* ".txt" */ -{0x2e, 0x74, 0x78, 0x74, }; -const char http_txt[5] = -/* ".txt" */ -{0x2e, 0x74, 0x78, 0x74, }; diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/http-strings.h b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/http-strings.h deleted file mode 100644 index acbe7e17f..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/http-strings.h +++ /dev/null @@ -1,34 +0,0 @@ -extern const char http_http[8]; -extern const char http_200[5]; -extern const char http_301[5]; -extern const char http_302[5]; -extern const char http_get[5]; -extern const char http_10[9]; -extern const char http_11[9]; -extern const char http_content_type[15]; -extern const char http_texthtml[10]; -extern const char http_location[11]; -extern const char http_host[7]; -extern const char http_crnl[3]; -extern const char http_index_html[12]; -extern const char http_404_html[10]; -extern const char http_referer[9]; -extern const char http_header_200[84]; -extern const char http_header_404[91]; -extern const char http_content_type_plain[29]; -extern const char http_content_type_html[28]; -extern const char http_content_type_css [27]; -extern const char http_content_type_text[28]; -extern const char http_content_type_png [28]; -extern const char http_content_type_gif [28]; -extern const char http_content_type_jpg [29]; -extern const char http_content_type_binary[43]; -extern const char http_html[6]; -extern const char http_shtml[7]; -extern const char http_htm[5]; -extern const char http_css[5]; -extern const char http_png[5]; -extern const char http_gif[5]; -extern const char http_jpg[5]; -extern const char http_text[5]; -extern const char http_txt[5]; diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/httpd-cgi.c b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/httpd-cgi.c deleted file mode 100644 index b8d756e46..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/httpd-cgi.c +++ /dev/null @@ -1,303 +0,0 @@ -/** - * \addtogroup httpd - * @{ - */ - -/** - * \file - * Web server script interface - * \author - * Adam Dunkels - * - */ - -/* - * Copyright (c) 2001-2006, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: httpd-cgi.c,v 1.2 2006/06/11 21:46:37 adam Exp $ - * - */ - -#include "uip.h" -#include "psock.h" -#include "httpd.h" -#include "httpd-cgi.h" -#include "httpd-fs.h" -#include "FreeRTOS.h" -#include "partest.h" -#include -#include - -HTTPD_CGI_CALL(file, "file-stats", file_stats); -HTTPD_CGI_CALL(tcp, "tcp-connections", tcp_stats); -HTTPD_CGI_CALL(net, "net-stats", net_stats); -HTTPD_CGI_CALL(rtos, "rtos-stats", rtos_stats ); -HTTPD_CGI_CALL(io, "led-io", led_io ); - - -static const struct httpd_cgi_call * const calls[] = { &file, &tcp, &net, &rtos, &io, NULL }; - -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(nullfunction(struct httpd_state *s, char *ptr)) -{ - PSOCK_BEGIN(&s->sout); - ( void ) ptr; - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -httpd_cgifunction -httpd_cgi(char *name) -{ - const struct httpd_cgi_call **f; - - /* Find the matching name in the table, return the function. */ - for(f = calls; *f != NULL; ++f) { - if(strncmp((*f)->name, name, strlen((*f)->name)) == 0) { - return (*f)->function; - } - } - return nullfunction; -} -/*---------------------------------------------------------------------------*/ -static unsigned short -generate_file_stats(void *arg) -{ - char *f = (char *)arg; - return snprintf((char *)uip_appdata, UIP_APPDATA_SIZE, "%5u", httpd_fs_count(f)); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(file_stats(struct httpd_state *s, char *ptr)) -{ - PSOCK_BEGIN(&s->sout); - - PSOCK_GENERATOR_SEND(&s->sout, generate_file_stats, strchr(ptr, ' ') + 1); - - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -static const char closed[] = /* "CLOSED",*/ -{0x43, 0x4c, 0x4f, 0x53, 0x45, 0x44, 0}; -static const char syn_rcvd[] = /* "SYN-RCVD",*/ -{0x53, 0x59, 0x4e, 0x2d, 0x52, 0x43, 0x56, - 0x44, 0}; -static const char syn_sent[] = /* "SYN-SENT",*/ -{0x53, 0x59, 0x4e, 0x2d, 0x53, 0x45, 0x4e, - 0x54, 0}; -static const char established[] = /* "ESTABLISHED",*/ -{0x45, 0x53, 0x54, 0x41, 0x42, 0x4c, 0x49, 0x53, 0x48, - 0x45, 0x44, 0}; -static const char fin_wait_1[] = /* "FIN-WAIT-1",*/ -{0x46, 0x49, 0x4e, 0x2d, 0x57, 0x41, 0x49, - 0x54, 0x2d, 0x31, 0}; -static const char fin_wait_2[] = /* "FIN-WAIT-2",*/ -{0x46, 0x49, 0x4e, 0x2d, 0x57, 0x41, 0x49, - 0x54, 0x2d, 0x32, 0}; -static const char closing[] = /* "CLOSING",*/ -{0x43, 0x4c, 0x4f, 0x53, 0x49, - 0x4e, 0x47, 0}; -static const char time_wait[] = /* "TIME-WAIT,"*/ -{0x54, 0x49, 0x4d, 0x45, 0x2d, 0x57, 0x41, - 0x49, 0x54, 0}; -static const char last_ack[] = /* "LAST-ACK"*/ -{0x4c, 0x41, 0x53, 0x54, 0x2d, 0x41, 0x43, - 0x4b, 0}; - -static const char *states[] = { - closed, - syn_rcvd, - syn_sent, - established, - fin_wait_1, - fin_wait_2, - closing, - time_wait, - last_ack}; - - -static unsigned short -generate_tcp_stats(void *arg) -{ - struct uip_conn *conn; - struct httpd_state *s = (struct httpd_state *)arg; - - conn = &uip_conns[s->count]; - return snprintf((char *)uip_appdata, UIP_APPDATA_SIZE, - "
\r\n", - htons(conn->lport), - htons(conn->ripaddr[0]) >> 8, - htons(conn->ripaddr[0]) & 0xff, - htons(conn->ripaddr[1]) >> 8, - htons(conn->ripaddr[1]) & 0xff, - htons(conn->rport), - states[conn->tcpstateflags & UIP_TS_MASK], - conn->nrtx, - conn->timer, - (uip_outstanding(conn))? '*':' ', - (uip_stopped(conn))? '!':' '); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(tcp_stats(struct httpd_state *s, char *ptr)) -{ - - PSOCK_BEGIN(&s->sout); - ( void ) ptr; - for(s->count = 0; s->count < UIP_CONNS; ++s->count) { - if((uip_conns[s->count].tcpstateflags & UIP_TS_MASK) != UIP_CLOSED) { - PSOCK_GENERATOR_SEND(&s->sout, generate_tcp_stats, s); - } - } - - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -static unsigned short -generate_net_stats(void *arg) -{ - struct httpd_state *s = (struct httpd_state *)arg; - return snprintf((char *)uip_appdata, UIP_APPDATA_SIZE, - "%5u\n", ((uip_stats_t *)&uip_stat)[s->count]); -} - -static -PT_THREAD(net_stats(struct httpd_state *s, char *ptr)) -{ - PSOCK_BEGIN(&s->sout); - ( void ) ptr; -#if UIP_STATISTICS - - for(s->count = 0; s->count < sizeof(uip_stat) / sizeof(uip_stats_t); - ++s->count) { - PSOCK_GENERATOR_SEND(&s->sout, generate_net_stats, s); - } - -#endif /* UIP_STATISTICS */ - - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ - -extern void vTaskList( char *pcWriteBuffer ); -extern unsigned long ulGetErrorCode( void ); - -static char cCountBuf[ 32 ]; -long lRefreshCount = 0; -static unsigned short -generate_rtos_stats(void *arg) -{ - ( void ) arg; - lRefreshCount++; - sprintf( cCountBuf, "


Refresh count = %d, Error code = %d (0 = no errors)", (int)lRefreshCount, (int)ulGetErrorCode() ); - vTaskList( ( char * ) uip_appdata ); - strcat( uip_appdata, cCountBuf ); - - return strlen( uip_appdata ); -} -/*---------------------------------------------------------------------------*/ - - -static -PT_THREAD(rtos_stats(struct httpd_state *s, char *ptr)) -{ - PSOCK_BEGIN(&s->sout); - ( void ) ptr; - PSOCK_GENERATOR_SEND(&s->sout, generate_rtos_stats, NULL); - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ - -char *pcStatus; -extern unsigned long uxParTestGetLED( unsigned long uxLED ); - -static unsigned short generate_io_state( void *arg ) -{ - ( void ) arg; - - if( uxParTestGetLED( 3 ) ) - { - pcStatus = "checked"; - } - else - { - pcStatus = ""; - } - - sprintf( uip_appdata, - "LED", - pcStatus ); - - return strlen( uip_appdata ); -} -/*---------------------------------------------------------------------------*/ - -static PT_THREAD(led_io(struct httpd_state *s, char *ptr)) -{ - PSOCK_BEGIN(&s->sout); - ( void ) ptr; - PSOCK_GENERATOR_SEND(&s->sout, generate_io_state, NULL); - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ - -void vApplicationProcessFormInput( char *pcInputString ) -{ -char *c = pcInputString; - - /* Process the form input sent by the IO page of the served HTML. - This just contains an instruction to either turn on or off the LED. */ - while( ( *c != '?' ) && ( *c != 0x00 ) ) - { - c++; - } - - if( *c == '?' ) - { - c++; - if( strcmp( c, "LED0=1" ) == 0 ) - { - vParTestSetLED( 3, 1 ); - } - else - { - vParTestSetLED( 3, 0 ); - } - } -} - - -/** @} */ - - - - - - diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/httpd-cgi.h b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/httpd-cgi.h deleted file mode 100644 index 7ae928321..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/httpd-cgi.h +++ /dev/null @@ -1,84 +0,0 @@ -/** - * \addtogroup httpd - * @{ - */ - -/** - * \file - * Web server script interface header file - * \author - * Adam Dunkels - * - */ - - - -/* - * Copyright (c) 2001, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: httpd-cgi.h,v 1.2 2006/06/11 21:46:38 adam Exp $ - * - */ - -#ifndef __HTTPD_CGI_H__ -#define __HTTPD_CGI_H__ - -#include "psock.h" -#include "httpd.h" - -typedef PT_THREAD((* httpd_cgifunction)(struct httpd_state *, char *)); - -httpd_cgifunction httpd_cgi(char *name); - -struct httpd_cgi_call { - const char *name; - const httpd_cgifunction function; -}; - -/** - * \brief HTTPD CGI function declaration - * \param name The C variable name of the function - * \param str The string name of the function, used in the script file - * \param function A pointer to the function that implements it - * - * This macro is used for declaring a HTTPD CGI - * function. This function is then added to the list of - * HTTPD CGI functions with the httpd_cgi_add() function. - * - * \hideinitializer - */ -#define HTTPD_CGI_CALL(name, str, function) \ -static PT_THREAD(function(struct httpd_state *, char *)); \ -static const struct httpd_cgi_call name = {str, function} - -void httpd_cgi_init(void); -#endif /* __HTTPD_CGI_H__ */ - -/** @} */ diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/httpd-fs.c b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/httpd-fs.c deleted file mode 100644 index dc4aef011..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/httpd-fs.c +++ /dev/null @@ -1,132 +0,0 @@ -/* - * Copyright (c) 2001, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - * $Id: httpd-fs.c,v 1.1 2006/06/07 09:13:08 adam Exp $ - */ - -#include "httpd.h" -#include "httpd-fs.h" -#include "httpd-fsdata.h" - -#ifndef NULL -#define NULL 0 -#endif /* NULL */ - -#include "httpd-fsdata.c" - -#if HTTPD_FS_STATISTICS -static u16_t count[HTTPD_FS_NUMFILES]; -#endif /* HTTPD_FS_STATISTICS */ - -/*-----------------------------------------------------------------------------------*/ -static u8_t -httpd_fs_strcmp(const char *str1, const char *str2) -{ - u8_t i; - i = 0; - loop: - - if(str2[i] == 0 || - str1[i] == '\r' || - str1[i] == '\n') { - return 0; - } - - if(str1[i] != str2[i]) { - return 1; - } - - - ++i; - goto loop; -} -/*-----------------------------------------------------------------------------------*/ -int -httpd_fs_open(const char *name, struct httpd_fs_file *file) -{ -#if HTTPD_FS_STATISTICS - u16_t i = 0; -#endif /* HTTPD_FS_STATISTICS */ - struct httpd_fsdata_file_noconst *f; - - for(f = (struct httpd_fsdata_file_noconst *)HTTPD_FS_ROOT; - f != NULL; - f = (struct httpd_fsdata_file_noconst *)f->next) { - - if(httpd_fs_strcmp(name, f->name) == 0) { - file->data = f->data; - file->len = f->len; -#if HTTPD_FS_STATISTICS - ++count[i]; -#endif /* HTTPD_FS_STATISTICS */ - return 1; - } -#if HTTPD_FS_STATISTICS - ++i; -#endif /* HTTPD_FS_STATISTICS */ - - } - return 0; -} -/*-----------------------------------------------------------------------------------*/ -void -httpd_fs_init(void) -{ -#if HTTPD_FS_STATISTICS - u16_t i; - for(i = 0; i < HTTPD_FS_NUMFILES; i++) { - count[i] = 0; - } -#endif /* HTTPD_FS_STATISTICS */ -} -/*-----------------------------------------------------------------------------------*/ -#if HTTPD_FS_STATISTICS -u16_t httpd_fs_count -(char *name) -{ - struct httpd_fsdata_file_noconst *f; - u16_t i; - - i = 0; - for(f = (struct httpd_fsdata_file_noconst *)HTTPD_FS_ROOT; - f != NULL; - f = (struct httpd_fsdata_file_noconst *)f->next) { - - if(httpd_fs_strcmp(name, f->name) == 0) { - return count[i]; - } - ++i; - } - return 0; -} -#endif /* HTTPD_FS_STATISTICS */ -/*-----------------------------------------------------------------------------------*/ diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/httpd-fs.h b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/httpd-fs.h deleted file mode 100644 index b594eea56..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/httpd-fs.h +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright (c) 2001, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - * $Id: httpd-fs.h,v 1.1 2006/06/07 09:13:08 adam Exp $ - */ -#ifndef __HTTPD_FS_H__ -#define __HTTPD_FS_H__ - -#define HTTPD_FS_STATISTICS 1 - -struct httpd_fs_file { - char *data; - int len; -}; - -/* file must be allocated by caller and will be filled in - by the function. */ -int httpd_fs_open(const char *name, struct httpd_fs_file *file); - -#ifdef HTTPD_FS_STATISTICS -#if HTTPD_FS_STATISTICS == 1 -u16_t httpd_fs_count(char *name); -#endif /* HTTPD_FS_STATISTICS */ -#endif /* HTTPD_FS_STATISTICS */ - -void httpd_fs_init(void); - -#endif /* __HTTPD_FS_H__ */ diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/httpd-fs/404.html b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/httpd-fs/404.html deleted file mode 100644 index 43e7f4cad..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/httpd-fs/404.html +++ /dev/null @@ -1,8 +0,0 @@ - - -

-

404 - file not found

-

Go here instead.

-
- - \ No newline at end of file diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/httpd-fs/image.html b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/httpd-fs/image.html deleted file mode 100644 index e011b3d76..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/httpd-fs/image.html +++ /dev/null @@ -1,16 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -RTOS Stats | TCP Stats | Connections | FreeRTOS.org Homepage | IO | Large JPG -

-


-

- - - - - diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/httpd-fs/index.html b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/httpd-fs/index.html deleted file mode 100644 index dbc2f28f9..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/httpd-fs/index.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Loading index.shtml. Click here if not automatically redirected. - - - - - diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/httpd-fs/index.shtml b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/httpd-fs/index.shtml deleted file mode 100644 index 45ee5006e..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/httpd-fs/index.shtml +++ /dev/null @@ -1,20 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -RTOS Stats | TCP Stats | Connections | FreeRTOS.org Homepage | IO | Large JPG -

-


-

-

Task statistics

-Page will refresh every 2 seconds.

-

Task          State  Priority  Stack	#
************************************************
-%! rtos-stats -
-
- - - diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/httpd-fs/io.shtml b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/httpd-fs/io.shtml deleted file mode 100644 index 5b6910748..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/httpd-fs/io.shtml +++ /dev/null @@ -1,28 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -RTOS Stats | TCP Stats | Connections | FreeRTOS.org Homepage | IO | Large JPG -

-


-LED IO
- -

- -Use the check box to turn on or off the LED, then click "Update IO". - - -

-
-%! led-io -

- - -

- - - - diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/httpd-fs/stats.shtml b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/httpd-fs/stats.shtml deleted file mode 100644 index 415aaab7d..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/httpd-fs/stats.shtml +++ /dev/null @@ -1,41 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -RTOS Stats | TCP Stats | Connections | FreeRTOS.org Homepage | IO | Large JPG -

-


-

-

Network statistics

-
LocalRemoteStateRetransmissionsTimerFlags
%d%u.%u.%u.%u:%u%s%u%u%c %c
-
-IP           Packets dropped
-             Packets received
-             Packets sent
-IP errors    IP version/header length
-             IP length, high byte
-             IP length, low byte
-             IP fragments
-             Header checksum
-             Wrong protocol
-ICMP	     Packets dropped
-             Packets received
-             Packets sent
-             Type errors
-TCP          Packets dropped
-             Packets received
-             Packets sent
-             Checksum errors
-             Data packets without ACKs
-             Resets
-             Retransmissions
-	     No connection avaliable
-	     Connection attempts to closed ports
-
%! net-stats
-
- - - diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/httpd-fs/tcp.shtml b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/httpd-fs/tcp.shtml deleted file mode 100644 index eea7598ed..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/httpd-fs/tcp.shtml +++ /dev/null @@ -1,21 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -RTOS Stats | TCP Stats | Connections | FreeRTOS.org Homepage | IO | Large JPG -

-


-
-

Network connections

-

- - -%! tcp-connections - - - - - diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/httpd-fsdata.c b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/httpd-fsdata.c deleted file mode 100644 index 43724adc4..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/httpd-fsdata.c +++ /dev/null @@ -1,11552 +0,0 @@ -static const unsigned char data_404_html[] = { - /* /404.html */ - 0x2f, 0x34, 0x30, 0x34, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, 0xa, 0x20, 0x20, - 0x3c, 0x62, 0x6f, 0x64, 0x79, 0x20, 0x62, 0x67, 0x63, 0x6f, - 0x6c, 0x6f, 0x72, 0x3d, 0x22, 0x77, 0x68, 0x69, 0x74, 0x65, - 0x22, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x63, - 0x65, 0x6e, 0x74, 0x65, 0x72, 0x3e, 0xd, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x3c, 0x68, 0x31, 0x3e, 0x34, 0x30, - 0x34, 0x20, 0x2d, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x6e, - 0x6f, 0x74, 0x20, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x3c, 0x2f, - 0x68, 0x31, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x3c, 0x68, 0x33, 0x3e, 0x47, 0x6f, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x2f, 0x22, 0x3e, - 0x68, 0x65, 0x72, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x69, - 0x6e, 0x73, 0x74, 0x65, 0x61, 0x64, 0x2e, 0x3c, 0x2f, 0x68, - 0x33, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x2f, - 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x3e, 0xd, 0xa, 0x20, - 0x20, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xd, 0xa, - 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0}; - -static const unsigned char data_image_html[] = { - /* /image.html */ - 0x2f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x20, 0x22, 0x62, 0x67, 0x63, 0x6f, 0x6c, - 0x6f, 0x72, 0x3d, 0x22, 0x77, 0x68, 0x69, 0x74, 0x65, 0x22, - 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, - 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, - 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, - 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x52, 0x54, 0x4f, 0x53, - 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, - 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x73, - 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x54, 0x43, 0x50, 0x20, 0x53, 0x74, 0x61, 0x74, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, - 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61, 0x3e, - 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, - 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, - 0x66, 0x72, 0x65, 0x65, 0x72, 0x74, 0x6f, 0x73, 0x2e, 0x6f, - 0x72, 0x67, 0x2f, 0x22, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, - 0x54, 0x4f, 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x48, 0x6f, - 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, 0x3e, - 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, - 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x49, - 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2e, - 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x4c, 0x61, 0x72, 0x67, - 0x65, 0x20, 0x4a, 0x50, 0x47, 0x3c, 0x2f, 0x61, 0x3e, 0xd, - 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, - 0x3c, 0x68, 0x72, 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, - 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x69, 0x6d, 0x67, 0x20, - 0x73, 0x72, 0x63, 0x3d, 0x22, 0x69, 0x6d, 0x61, 0x67, 0x65, - 0x2e, 0x6a, 0x70, 0x67, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x2f, - 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x62, - 0x6f, 0x64, 0x79, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x68, 0x74, - 0x6d, 0x6c, 0x3e, 0xd, 0xa, 0xd, 0xa, 0}; - -static const unsigned char data_image_jpg[] = { - /* /image.jpg */ - 0x2f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2e, 0x6a, 0x70, 0x67, 0, - 0xff, 0xd8, 0xff, 0xe0, 00, 0x10, 0x4a, 0x46, 0x49, 0x46, - 00, 0x1, 0x1, 0x1, 00, 0x60, 00, 0x60, 00, 00, - 0xff, 0xdb, 00, 0x43, 00, 0x8, 0x6, 0x6, 0x7, 0x6, - 0x5, 0x8, 0x7, 0x7, 0x7, 0x9, 0x9, 0x8, 0xa, 0xc, - 0x14, 0xd, 0xc, 0xb, 0xb, 0xc, 0x19, 0x12, 0x13, 0xf, - 0x14, 0x1d, 0x1a, 0x1f, 0x1e, 0x1d, 0x1a, 0x1c, 0x1c, 0x20, - 0x24, 0x2e, 0x27, 0x20, 0x22, 0x2c, 0x23, 0x1c, 0x1c, 0x28, - 0x37, 0x29, 0x2c, 0x30, 0x31, 0x34, 0x34, 0x34, 0x1f, 0x27, - 0x39, 0x3d, 0x38, 0x32, 0x3c, 0x2e, 0x33, 0x34, 0x32, 0xff, - 0xdb, 00, 0x43, 0x1, 0x9, 0x9, 0x9, 0xc, 0xb, 0xc, - 0x18, 0xd, 0xd, 0x18, 0x32, 0x21, 0x1c, 0x21, 0x32, 0x32, - 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, - 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, - 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, - 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, - 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0xff, 0xc0, - 00, 0x11, 0x8, 0x2, 0xce, 0x3, 0x3b, 0x3, 0x1, 0x22, - 00, 0x2, 0x11, 0x1, 0x3, 0x11, 0x1, 0xff, 0xc4, 00, - 0x1f, 00, 00, 0x1, 0x5, 0x1, 0x1, 0x1, 0x1, 0x1, - 0x1, 00, 00, 00, 00, 00, 00, 00, 00, 0x1, - 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb, - 0xff, 0xc4, 00, 0xb5, 0x10, 00, 0x2, 0x1, 0x3, 0x3, - 0x2, 0x4, 0x3, 0x5, 0x5, 0x4, 0x4, 00, 00, 0x1, - 0x7d, 0x1, 0x2, 0x3, 00, 0x4, 0x11, 0x5, 0x12, 0x21, - 0x31, 0x41, 0x6, 0x13, 0x51, 0x61, 0x7, 0x22, 0x71, 0x14, - 0x32, 0x81, 0x91, 0xa1, 0x8, 0x23, 0x42, 0xb1, 0xc1, 0x15, - 0x52, 0xd1, 0xf0, 0x24, 0x33, 0x62, 0x72, 0x82, 0x9, 0xa, - 0x16, 0x17, 0x18, 0x19, 0x1a, 0x25, 0x26, 0x27, 0x28, 0x29, - 0x2a, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x43, 0x44, - 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x53, 0x54, 0x55, 0x56, - 0x57, 0x58, 0x59, 0x5a, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, - 0x69, 0x6a, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, - 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x92, 0x93, - 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0xa2, 0xa3, 0xa4, - 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xb2, 0xb3, 0xb4, 0xb5, - 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, - 0xc7, 0xc8, 0xc9, 0xca, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, - 0xd8, 0xd9, 0xda, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, - 0xe8, 0xe9, 0xea, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, - 0xf8, 0xf9, 0xfa, 0xff, 0xc4, 00, 0x1f, 0x1, 00, 0x3, - 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 00, - 00, 00, 00, 00, 00, 0x1, 0x2, 0x3, 0x4, 0x5, - 0x6, 0x7, 0x8, 0x9, 0xa, 0xb, 0xff, 0xc4, 00, 0xb5, - 0x11, 00, 0x2, 0x1, 0x2, 0x4, 0x4, 0x3, 0x4, 0x7, - 0x5, 0x4, 0x4, 00, 0x1, 0x2, 0x77, 00, 0x1, 0x2, - 0x3, 0x11, 0x4, 0x5, 0x21, 0x31, 0x6, 0x12, 0x41, 0x51, - 0x7, 0x61, 0x71, 0x13, 0x22, 0x32, 0x81, 0x8, 0x14, 0x42, - 0x91, 0xa1, 0xb1, 0xc1, 0x9, 0x23, 0x33, 0x52, 0xf0, 0x15, - 0x62, 0x72, 0xd1, 0xa, 0x16, 0x24, 0x34, 0xe1, 0x25, 0xf1, - 0x17, 0x18, 0x19, 0x1a, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x35, - 0x36, 0x37, 0x38, 0x39, 0x3a, 0x43, 0x44, 0x45, 0x46, 0x47, - 0x48, 0x49, 0x4a, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, - 0x5a, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x73, - 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x82, 0x83, 0x84, - 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x92, 0x93, 0x94, 0x95, - 0x96, 0x97, 0x98, 0x99, 0x9a, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, - 0xa7, 0xa8, 0xa9, 0xaa, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, - 0xb8, 0xb9, 0xba, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, - 0xc9, 0xca, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, - 0xda, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, - 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xff, - 0xda, 00, 0xc, 0x3, 0x1, 00, 0x2, 0x11, 0x3, 0x11, - 00, 0x3f, 00, 0xf4, 0x7f, 0xb, 0x78, 0x5b, 0x47, 0xd4, - 0xfc, 0x33, 0x63, 0x7b, 0x7b, 0x6a, 0xd3, 0x5c, 0xcc, 0x85, - 0xe4, 0x91, 0xa7, 0x93, 0x2c, 0x77, 0x1e, 0x4f, 0xcd, 0x5b, - 0x1f, 0xf0, 0x84, 0x78, 0x77, 0xfe, 0x81, 0xff, 00, 0xf9, - 0x1a, 0x4f, 0xfe, 0x2a, 0x8f, 0x3, 0xff, 00, 0xc8, 0x97, - 0xa5, 0xff, 00, 0xd7, 0x2f, 0xfd, 0x98, 0xd7, 0x41, 0x40, - 0x1c, 0xff, 00, 0xfc, 0x21, 0x1e, 0x1d, 0xff, 00, 0xa0, - 0x7f, 0xfe, 0x46, 0x93, 0xff, 00, 0x8a, 0xa3, 0xfe, 0x10, - 0x8f, 0xe, 0xff, 00, 0xd0, 0x3f, 0xff, 00, 0x23, 0x49, - 0xff, 00, 0xc5, 0x57, 0x41, 0x45, 00, 0x73, 0xff, 00, - 0xf0, 0x84, 0x78, 0x77, 0xfe, 0x81, 0xff, 00, 0xf9, 0x1a, - 0x4f, 0xfe, 0x2a, 0x8f, 0xf8, 0x42, 0x3c, 0x3b, 0xff, 00, - 0x40, 0xff, 00, 0xfc, 0x8d, 0x27, 0xff, 00, 0x15, 0x5d, - 0x5, 0x14, 0x1, 0xcf, 0xff, 00, 0xc2, 0x11, 0xe1, 0xdf, - 0xfa, 0x7, 0xff, 00, 0xe4, 0x69, 0x3f, 0xf8, 0xaa, 0x3f, - 0xe1, 0x8, 0xf0, 0xef, 0xfd, 0x3, 0xff, 00, 0xf2, 0x34, - 0x9f, 0xfc, 0x55, 0x74, 0x14, 0x50, 0x7, 0x3f, 0xff, 00, - 0x8, 0x47, 0x87, 0x7f, 0xe8, 0x1f, 0xff, 00, 0x91, 0xa4, - 0xff, 00, 0xe2, 0xa8, 0xff, 00, 0x84, 0x23, 0xc3, 0xbf, - 0xf4, 0xf, 0xff, 00, 0xc8, 0xd2, 0x7f, 0xf1, 0x55, 0xd0, - 0x51, 0x40, 0x1c, 0xff, 00, 0xfc, 0x21, 0x1e, 0x1d, 0xff, - 00, 0xa0, 0x7f, 0xfe, 0x46, 0x93, 0xff, 00, 0x8a, 0xa3, - 0xfe, 0x10, 0x8f, 0xe, 0xff, 00, 0xd0, 0x3f, 0xff, 00, - 0x23, 0x49, 0xff, 00, 0xc5, 0x57, 0x41, 0x45, 00, 0x73, - 0xff, 00, 0xf0, 0x84, 0x78, 0x77, 0xfe, 0x81, 0xff, 00, - 0xf9, 0x1a, 0x4f, 0xfe, 0x2a, 0x8f, 0xf8, 0x42, 0x3c, 0x3b, - 0xff, 00, 0x40, 0xff, 00, 0xfc, 0x8d, 0x27, 0xff, 00, - 0x15, 0x5d, 0x5, 0x14, 0x1, 0xcf, 0xff, 00, 0xc2, 0x11, - 0xe1, 0xdf, 0xfa, 0x7, 0xff, 00, 0xe4, 0x69, 0x3f, 0xf8, - 0xaa, 0x3f, 0xe1, 0x8, 0xf0, 0xef, 0xfd, 0x3, 0xff, 00, - 0xf2, 0x34, 0x9f, 0xfc, 0x55, 0x74, 0x14, 0x50, 0x7, 0x3f, - 0xff, 00, 0x8, 0x47, 0x87, 0x7f, 0xe8, 0x1f, 0xff, 00, - 0x91, 0xa4, 0xff, 00, 0xe2, 0xa8, 0xff, 00, 0x84, 0x23, - 0xc3, 0xbf, 0xf4, 0xf, 0xff, 00, 0xc8, 0xd2, 0x7f, 0xf1, - 0x55, 0xd0, 0x51, 0x40, 0x1c, 0xff, 00, 0xfc, 0x21, 0x1e, - 0x1d, 0xff, 00, 0xa0, 0x7f, 0xfe, 0x46, 0x93, 0xff, 00, - 0x8a, 0xa3, 0xfe, 0x10, 0x8f, 0xe, 0xff, 00, 0xd0, 0x3f, - 0xff, 00, 0x23, 0x49, 0xff, 00, 0xc5, 0x57, 0x41, 0x45, - 00, 0x73, 0xff, 00, 0xf0, 0x84, 0x78, 0x77, 0xfe, 0x81, - 0xff, 00, 0xf9, 0x1a, 0x4f, 0xfe, 0x2a, 0x8f, 0xf8, 0x42, - 0x3c, 0x3b, 0xff, 00, 0x40, 0xff, 00, 0xfc, 0x8d, 0x27, - 0xff, 00, 0x15, 0x5d, 0x5, 0x14, 0x1, 0xcf, 0xff, 00, - 0xc2, 0x11, 0xe1, 0xdf, 0xfa, 0x7, 0xff, 00, 0xe4, 0x69, - 0x3f, 0xf8, 0xaa, 0x3f, 0xe1, 0x8, 0xf0, 0xef, 0xfd, 0x3, - 0xff, 00, 0xf2, 0x34, 0x9f, 0xfc, 0x55, 0x74, 0x14, 0x50, - 0x7, 0x3f, 0xff, 00, 0x8, 0x47, 0x87, 0x7f, 0xe8, 0x1f, - 0xff, 00, 0x91, 0xa4, 0xff, 00, 0xe2, 0xa8, 0xff, 00, - 0x84, 0x23, 0xc3, 0xbf, 0xf4, 0xf, 0xff, 00, 0xc8, 0xd2, - 0x7f, 0xf1, 0x55, 0xd0, 0x51, 0x40, 0x1c, 0xff, 00, 0xfc, - 0x21, 0x1e, 0x1d, 0xff, 00, 0xa0, 0x7f, 0xfe, 0x46, 0x93, - 0xff, 00, 0x8a, 0xa3, 0xfe, 0x10, 0x8f, 0xe, 0xff, 00, - 0xd0, 0x3f, 0xff, 00, 0x23, 0x49, 0xff, 00, 0xc5, 0x57, - 0x41, 0x45, 00, 0x73, 0xff, 00, 0xf0, 0x84, 0x78, 0x77, - 0xfe, 0x81, 0xff, 00, 0xf9, 0x1a, 0x4f, 0xfe, 0x2a, 0x8f, - 0xf8, 0x42, 0x3c, 0x3b, 0xff, 00, 0x40, 0xff, 00, 0xfc, - 0x8d, 0x27, 0xff, 00, 0x15, 0x5d, 0x5, 0x14, 0x1, 0xcf, - 0xff, 00, 0xc2, 0x11, 0xe1, 0xdf, 0xfa, 0x7, 0xff, 00, - 0xe4, 0x69, 0x3f, 0xf8, 0xaa, 0x3f, 0xe1, 0x8, 0xf0, 0xef, - 0xfd, 0x3, 0xff, 00, 0xf2, 0x34, 0x9f, 0xfc, 0x55, 0x74, - 0x14, 0x50, 0x7, 0x3f, 0xff, 00, 0x8, 0x47, 0x87, 0x7f, - 0xe8, 0x1f, 0xff, 00, 0x91, 0xa4, 0xff, 00, 0xe2, 0xa8, - 0xff, 00, 0x84, 0x23, 0xc3, 0xbf, 0xf4, 0xf, 0xff, 00, - 0xc8, 0xd2, 0x7f, 0xf1, 0x55, 0xd0, 0x51, 0x40, 0x1c, 0xff, - 00, 0xfc, 0x21, 0x1e, 0x1d, 0xff, 00, 0xa0, 0x7f, 0xfe, - 0x46, 0x93, 0xff, 00, 0x8a, 0xa3, 0xfe, 0x10, 0x8f, 0xe, - 0xff, 00, 0xd0, 0x3f, 0xff, 00, 0x23, 0x49, 0xff, 00, - 0xc5, 0x57, 0x41, 0x45, 00, 0x73, 0xff, 00, 0xf0, 0x84, - 0x78, 0x77, 0xfe, 0x81, 0xff, 00, 0xf9, 0x1a, 0x4f, 0xfe, - 0x2a, 0x8f, 0xf8, 0x42, 0x3c, 0x3b, 0xff, 00, 0x40, 0xff, - 00, 0xfc, 0x8d, 0x27, 0xff, 00, 0x15, 0x5d, 0x5, 0x14, - 0x1, 0xcf, 0xff, 00, 0xc2, 0x11, 0xe1, 0xdf, 0xfa, 0x7, - 0xff, 00, 0xe4, 0x69, 0x3f, 0xf8, 0xaa, 0x3f, 0xe1, 0x8, - 0xf0, 0xef, 0xfd, 0x3, 0xff, 00, 0xf2, 0x34, 0x9f, 0xfc, - 0x55, 0x74, 0x14, 0x50, 0x7, 0x3f, 0xff, 00, 0x8, 0x47, - 0x87, 0x7f, 0xe8, 0x1f, 0xff, 00, 0x91, 0xa4, 0xff, 00, - 0xe2, 0xa8, 0xff, 00, 0x84, 0x23, 0xc3, 0xbf, 0xf4, 0xf, - 0xff, 00, 0xc8, 0xd2, 0x7f, 0xf1, 0x55, 0xd0, 0x51, 0x40, - 0x1c, 0xff, 00, 0xfc, 0x21, 0x1e, 0x1d, 0xff, 00, 0xa0, - 0x7f, 0xfe, 0x46, 0x93, 0xff, 00, 0x8a, 0xa3, 0xfe, 0x10, - 0x8f, 0xe, 0xff, 00, 0xd0, 0x3f, 0xff, 00, 0x23, 0x49, - 0xff, 00, 0xc5, 0x57, 0x41, 0x45, 00, 0x73, 0xff, 00, - 0xf0, 0x84, 0x78, 0x77, 0xfe, 0x81, 0xff, 00, 0xf9, 0x1a, - 0x4f, 0xfe, 0x2a, 0x8f, 0xf8, 0x42, 0x3c, 0x3b, 0xff, 00, - 0x40, 0xff, 00, 0xfc, 0x8d, 0x27, 0xff, 00, 0x15, 0x5d, - 0x5, 0x14, 0x1, 0xcf, 0xff, 00, 0xc2, 0x11, 0xe1, 0xdf, - 0xfa, 0x7, 0xff, 00, 0xe4, 0x69, 0x3f, 0xf8, 0xaa, 0x3f, - 0xe1, 0x8, 0xf0, 0xef, 0xfd, 0x3, 0xff, 00, 0xf2, 0x34, - 0x9f, 0xfc, 0x55, 0x74, 0x14, 0x50, 0x7, 0x3f, 0xff, 00, - 0x8, 0x47, 0x87, 0x7f, 0xe8, 0x1f, 0xff, 00, 0x91, 0xa4, - 0xff, 00, 0xe2, 0xa8, 0xff, 00, 0x84, 0x23, 0xc3, 0xbf, - 0xf4, 0xf, 0xff, 00, 0xc8, 0xd2, 0x7f, 0xf1, 0x55, 0xd0, - 0x51, 0x40, 0x1c, 0xff, 00, 0xfc, 0x21, 0x1e, 0x1d, 0xff, - 00, 0xa0, 0x7f, 0xfe, 0x46, 0x93, 0xff, 00, 0x8a, 0xa3, - 0xfe, 0x10, 0x8f, 0xe, 0xff, 00, 0xd0, 0x3f, 0xff, 00, - 0x23, 0x49, 0xff, 00, 0xc5, 0x57, 0x41, 0x45, 00, 0x73, - 0xff, 00, 0xf0, 0x84, 0x78, 0x77, 0xfe, 0x81, 0xff, 00, - 0xf9, 0x1a, 0x4f, 0xfe, 0x2a, 0x8f, 0xf8, 0x42, 0x3c, 0x3b, - 0xff, 00, 0x40, 0xff, 00, 0xfc, 0x8d, 0x27, 0xff, 00, - 0x15, 0x5d, 0x5, 0x14, 0x1, 0xcf, 0xff, 00, 0xc2, 0x11, - 0xe1, 0xdf, 0xfa, 0x7, 0xff, 00, 0xe4, 0x69, 0x3f, 0xf8, - 0xaa, 0x3f, 0xe1, 0x8, 0xf0, 0xef, 0xfd, 0x3, 0xff, 00, - 0xf2, 0x34, 0x9f, 0xfc, 0x55, 0x74, 0x14, 0x50, 0x7, 0x3f, - 0xff, 00, 0x8, 0x47, 0x87, 0x7f, 0xe8, 0x1f, 0xff, 00, - 0x91, 0xa4, 0xff, 00, 0xe2, 0xa8, 0xff, 00, 0x84, 0x23, - 0xc3, 0xbf, 0xf4, 0xf, 0xff, 00, 0xc8, 0xd2, 0x7f, 0xf1, - 0x55, 0xd0, 0x51, 0x40, 0x1c, 0xff, 00, 0xfc, 0x21, 0x1e, - 0x1d, 0xff, 00, 0xa0, 0x7f, 0xfe, 0x46, 0x93, 0xff, 00, - 0x8a, 0xa3, 0xfe, 0x10, 0x8f, 0xe, 0xff, 00, 0xd0, 0x3f, - 0xff, 00, 0x23, 0x49, 0xff, 00, 0xc5, 0x57, 0x41, 0x45, - 00, 0x73, 0xff, 00, 0xf0, 0x84, 0x78, 0x77, 0xfe, 0x81, - 0xff, 00, 0xf9, 0x1a, 0x4f, 0xfe, 0x2a, 0x8f, 0xf8, 0x42, - 0x3c, 0x3b, 0xff, 00, 0x40, 0xff, 00, 0xfc, 0x8d, 0x27, - 0xff, 00, 0x15, 0x5d, 0x5, 0x14, 0x1, 0xcf, 0xff, 00, - 0xc2, 0x11, 0xe1, 0xdf, 0xfa, 0x7, 0xff, 00, 0xe4, 0x69, - 0x3f, 0xf8, 0xaa, 0x3f, 0xe1, 0x8, 0xf0, 0xef, 0xfd, 0x3, - 0xff, 00, 0xf2, 0x34, 0x9f, 0xfc, 0x55, 0x74, 0x14, 0x50, - 0x7, 0x3f, 0xff, 00, 0x8, 0x47, 0x87, 0x7f, 0xe8, 0x1f, - 0xff, 00, 0x91, 0xa4, 0xff, 00, 0xe2, 0xa8, 0xff, 00, - 0x84, 0x23, 0xc3, 0xbf, 0xf4, 0xf, 0xff, 00, 0xc8, 0xd2, - 0x7f, 0xf1, 0x55, 0xd0, 0x51, 0x40, 0x1c, 0xff, 00, 0xfc, - 0x21, 0x1e, 0x1d, 0xff, 00, 0xa0, 0x7f, 0xfe, 0x46, 0x93, - 0xff, 00, 0x8a, 0xa3, 0xfe, 0x10, 0x8f, 0xe, 0xff, 00, - 0xd0, 0x3f, 0xff, 00, 0x23, 0x49, 0xff, 00, 0xc5, 0x57, - 0x41, 0x45, 00, 0x73, 0xff, 00, 0xf0, 0x84, 0x78, 0x77, - 0xfe, 0x81, 0xff, 00, 0xf9, 0x1a, 0x4f, 0xfe, 0x2a, 0x8f, - 0xf8, 0x42, 0x3c, 0x3b, 0xff, 00, 0x40, 0xff, 00, 0xfc, - 0x8d, 0x27, 0xff, 00, 0x15, 0x5d, 0x5, 0x14, 0x1, 0xcf, - 0xff, 00, 0xc2, 0x11, 0xe1, 0xdf, 0xfa, 0x7, 0xff, 00, - 0xe4, 0x69, 0x3f, 0xf8, 0xaa, 0x3f, 0xe1, 0x8, 0xf0, 0xef, - 0xfd, 0x3, 0xff, 00, 0xf2, 0x34, 0x9f, 0xfc, 0x55, 0x74, - 0x14, 0x50, 0x7, 0x3f, 0xff, 00, 0x8, 0x47, 0x87, 0x7f, - 0xe8, 0x1f, 0xff, 00, 0x91, 0xa4, 0xff, 00, 0xe2, 0xa8, - 0xff, 00, 0x84, 0x23, 0xc3, 0xbf, 0xf4, 0xf, 0xff, 00, - 0xc8, 0xd2, 0x7f, 0xf1, 0x55, 0xd0, 0x51, 0x40, 0x1c, 0xff, - 00, 0xfc, 0x21, 0x1e, 0x1d, 0xff, 00, 0xa0, 0x7f, 0xfe, - 0x46, 0x93, 0xff, 00, 0x8a, 0xa3, 0xfe, 0x10, 0x8f, 0xe, - 0xff, 00, 0xd0, 0x3f, 0xff, 00, 0x23, 0x49, 0xff, 00, - 0xc5, 0x57, 0x41, 0x45, 00, 0x73, 0xff, 00, 0xf0, 0x84, - 0x78, 0x77, 0xfe, 0x81, 0xff, 00, 0xf9, 0x1a, 0x4f, 0xfe, - 0x2a, 0x8f, 0xf8, 0x42, 0x3c, 0x3b, 0xff, 00, 0x40, 0xff, - 00, 0xfc, 0x8d, 0x27, 0xff, 00, 0x15, 0x5d, 0x5, 0x14, - 0x1, 0xcf, 0xff, 00, 0xc2, 0x11, 0xe1, 0xdf, 0xfa, 0x7, - 0xff, 00, 0xe4, 0x69, 0x3f, 0xf8, 0xaa, 0x3f, 0xe1, 0x8, - 0xf0, 0xef, 0xfd, 0x3, 0xff, 00, 0xf2, 0x34, 0x9f, 0xfc, - 0x55, 0x74, 0x14, 0x50, 0x7, 0x3f, 0xff, 00, 0x8, 0x47, - 0x87, 0x7f, 0xe8, 0x1f, 0xff, 00, 0x91, 0xa4, 0xff, 00, - 0xe2, 0xa8, 0xff, 00, 0x84, 0x23, 0xc3, 0xbf, 0xf4, 0xf, - 0xff, 00, 0xc8, 0xd2, 0x7f, 0xf1, 0x55, 0xd0, 0x51, 0x40, - 0x1c, 0xff, 00, 0xfc, 0x21, 0x1e, 0x1d, 0xff, 00, 0xa0, - 0x7f, 0xfe, 0x46, 0x93, 0xff, 00, 0x8a, 0xa3, 0xfe, 0x10, - 0x8f, 0xe, 0xff, 00, 0xd0, 0x3f, 0xff, 00, 0x23, 0x49, - 0xff, 00, 0xc5, 0x57, 0x41, 0x45, 00, 0x73, 0xff, 00, - 0xf0, 0x84, 0x78, 0x77, 0xfe, 0x81, 0xff, 00, 0xf9, 0x1a, - 0x4f, 0xfe, 0x2a, 0x8f, 0xf8, 0x42, 0x3c, 0x3b, 0xff, 00, - 0x40, 0xff, 00, 0xfc, 0x8d, 0x27, 0xff, 00, 0x15, 0x5d, - 0x5, 0x14, 0x1, 0xcf, 0xff, 00, 0xc2, 0x11, 0xe1, 0xdf, - 0xfa, 0x7, 0xff, 00, 0xe4, 0x69, 0x3f, 0xf8, 0xaa, 0x3f, - 0xe1, 0x8, 0xf0, 0xef, 0xfd, 0x3, 0xff, 00, 0xf2, 0x34, - 0x9f, 0xfc, 0x55, 0x74, 0x14, 0x50, 0x7, 0x3f, 0xff, 00, - 0x8, 0x47, 0x87, 0x7f, 0xe8, 0x1f, 0xff, 00, 0x91, 0xa4, - 0xff, 00, 0xe2, 0xa8, 0xff, 00, 0x84, 0x23, 0xc3, 0xbf, - 0xf4, 0xf, 0xff, 00, 0xc8, 0xd2, 0x7f, 0xf1, 0x55, 0xd0, - 0x51, 0x40, 0x1c, 0xff, 00, 0xfc, 0x21, 0x1e, 0x1d, 0xff, - 00, 0xa0, 0x7f, 0xfe, 0x46, 0x93, 0xff, 00, 0x8a, 0xa3, - 0xfe, 0x10, 0x8f, 0xe, 0xff, 00, 0xd0, 0x3f, 0xff, 00, - 0x23, 0x49, 0xff, 00, 0xc5, 0x57, 0x41, 0x45, 00, 0x73, - 0xff, 00, 0xf0, 0x84, 0x78, 0x77, 0xfe, 0x81, 0xff, 00, - 0xf9, 0x1a, 0x4f, 0xfe, 0x2a, 0x8f, 0xf8, 0x42, 0x3c, 0x3b, - 0xff, 00, 0x40, 0xff, 00, 0xfc, 0x8d, 0x27, 0xff, 00, - 0x15, 0x5d, 0x5, 0x14, 0x1, 0xcf, 0xff, 00, 0xc2, 0x11, - 0xe1, 0xdf, 0xfa, 0x7, 0xff, 00, 0xe4, 0x69, 0x3f, 0xf8, - 0xaa, 0x3f, 0xe1, 0x8, 0xf0, 0xef, 0xfd, 0x3, 0xff, 00, - 0xf2, 0x34, 0x9f, 0xfc, 0x55, 0x74, 0x14, 0x50, 0x7, 0x3f, - 0xff, 00, 0x8, 0x47, 0x87, 0x7f, 0xe8, 0x1f, 0xff, 00, - 0x91, 0xa4, 0xff, 00, 0xe2, 0xa8, 0xff, 00, 0x84, 0x23, - 0xc3, 0xbf, 0xf4, 0xf, 0xff, 00, 0xc8, 0xd2, 0x7f, 0xf1, - 0x55, 0xd0, 0x51, 0x40, 0x1c, 0xff, 00, 0xfc, 0x21, 0x1e, - 0x1d, 0xff, 00, 0xa0, 0x7f, 0xfe, 0x46, 0x93, 0xff, 00, - 0x8a, 0xa3, 0xfe, 0x10, 0x8f, 0xe, 0xff, 00, 0xd0, 0x3f, - 0xff, 00, 0x23, 0x49, 0xff, 00, 0xc5, 0x57, 0x41, 0x45, - 00, 0x73, 0xff, 00, 0xf0, 0x84, 0x78, 0x77, 0xfe, 0x81, - 0xff, 00, 0xf9, 0x1a, 0x4f, 0xfe, 0x2a, 0x8f, 0xf8, 0x42, - 0x3c, 0x3b, 0xff, 00, 0x40, 0xff, 00, 0xfc, 0x8d, 0x27, - 0xff, 00, 0x15, 0x5d, 0x5, 0x14, 0x1, 0xce, 0x78, 0x3a, - 0x14, 0xb6, 0xb4, 0xd5, 0x2d, 0x62, 0xdc, 0x21, 0x83, 0x52, - 0x9e, 0x38, 0x95, 0x9c, 0xb6, 0xd5, 0x18, 0xe0, 0x67, 0xb7, - 0x35, 0xd1, 0xd7, 0x9c, 0xd8, 0xdd, 0x5c, 0x45, 0xa9, 0x6b, - 0x89, 0x1c, 0xf2, 0xa2, 0xff, 00, 0x69, 0xcd, 0xc2, 0xb9, - 0x3, 0xb5, 0x77, 0x1a, 0x3c, 0x8f, 0x2e, 0x95, 0xb, 0xc8, - 0xec, 0xec, 0x77, 0x65, 0x98, 0xe4, 0x9f, 0x98, 0xd0, 0x6, - 0x6f, 0x81, 0xff, 00, 0xe4, 0x4b, 0xd2, 0xff, 00, 0xeb, - 0x97, 0xfe, 0xcc, 0x6b, 0xa0, 0xae, 0x7f, 0xc0, 0xff, 00, - 0xf2, 0x25, 0xe9, 0x7f, 0xf5, 0xcb, 0xff, 00, 0x66, 0x35, - 0xd0, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, - 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, - 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, - 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, - 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, - 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, - 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, - 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, - 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, - 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, - 0x14, 0x50, 0x1, 0x58, 0xf7, 0xbe, 0x2a, 0xd1, 0x34, 0xfb, - 0xb7, 0xb5, 0xb9, 0xbf, 0x54, 0x99, 0x3e, 0xf2, 0x84, 0x66, - 0xc7, 0xb1, 0x20, 0x11, 0x9a, 0xc7, 0xf1, 0x8f, 0x8b, 0x46, - 0x95, 0x1b, 0x58, 0x58, 0xb8, 0x37, 0xce, 0x3e, 0x67, 0x1c, - 0xf9, 0x20, 0xff, 00, 0xec, 0xde, 0x9f, 0x9d, 0x79, 0x69, - 0x25, 0x98, 0xb3, 0x12, 0x58, 0x9c, 0x92, 0x4e, 0x49, 0x35, - 0xec, 0xe0, 0x32, 0xbf, 0x6f, 0x1f, 0x69, 0x56, 0xe9, 0x74, - 0x3c, 0xdc, 0x5e, 0x3f, 0xd9, 0x4b, 0x92, 0x9e, 0xaf, 0xa9, - 0xec, 0x5f, 0xf0, 0x9b, 0xf8, 0x77, 0xfe, 0x82, 0x3f, 0xf9, - 0x6, 0x4f, 0xfe, 0x26, 0x8f, 0xf8, 0x4d, 0xfc, 0x3b, 0xff, - 00, 0x41, 0x1f, 0xfc, 0x83, 0x27, 0xff, 00, 0x13, 0x5e, - 0x39, 0x45, 0x77, 0xff, 00, 0x62, 0x61, 0xfb, 0xbf, 0xc3, - 0xfc, 0x8e, 0x3f, 0xed, 0x4a, 0xdd, 0x97, 0xe3, 0xfe, 0x67, - 0xb1, 0xff, 00, 0xc2, 0x6f, 0xe1, 0xdf, 0xfa, 0x8, 0xff, - 00, 0xe4, 0x19, 0x3f, 0xf8, 0x9a, 0x3f, 0xe1, 0x37, 0xf0, - 0xef, 0xfd, 0x4, 0x7f, 0xf2, 0xc, 0x9f, 0xfc, 0x4d, 0x78, - 0xe5, 0x14, 0x7f, 0x62, 0x61, 0xfb, 0xbf, 0xc3, 0xfc, 0x83, - 0xfb, 0x52, 0xb7, 0x65, 0xf8, 0xff, 00, 0x99, 0xec, 0x7f, - 0xf0, 0x9b, 0xf8, 0x77, 0xfe, 0x82, 0x3f, 0xf9, 0x6, 0x4f, - 0xfe, 0x26, 0x8f, 0xf8, 0x4d, 0xfc, 0x3b, 0xff, 00, 0x41, - 0x1f, 0xfc, 0x83, 0x27, 0xff, 00, 0x13, 0x5e, 0x39, 0x45, - 0x1f, 0xd8, 0x98, 0x7e, 0xef, 0xf0, 0xff, 00, 0x20, 0xfe, - 0xd4, 0xad, 0xd9, 0x7e, 0x3f, 0xe6, 0x7b, 0x1f, 0xfc, 0x26, - 0xfe, 0x1d, 0xff, 00, 0xa0, 0x8f, 0xfe, 0x41, 0x93, 0xff, - 00, 0x89, 0xa3, 0xfe, 0x13, 0x7f, 0xe, 0xff, 00, 0xd0, - 0x47, 0xff, 00, 0x20, 0xc9, 0xff, 00, 0xc4, 0xd7, 0x8e, - 0x51, 0x47, 0xf6, 0x26, 0x1f, 0xbb, 0xfc, 0x3f, 0xc8, 0x3f, - 0xb5, 0x2b, 0x76, 0x5f, 0x8f, 0xf9, 0x9e, 0xcd, 0x17, 0x8c, - 0xbc, 0x3f, 0x34, 0xc9, 0x12, 0x6a, 0x2b, 0xb9, 0xd8, 0x28, - 0xdd, 0x1b, 0xa8, 0xc9, 0xf7, 0x23, 0x2, 0xb7, 0x6b, 0xe7, - 0xca, 0xf4, 0xf, 0x5, 0x78, 0xbf, 0x1e, 0x5e, 0x93, 0xa9, - 0x49, 0xfe, 0xcd, 0xbc, 0xcc, 0x7f, 0x24, 0x63, 0xfc, 0x8f, - 0xe1, 0x5c, 0x58, 0xdc, 0xa7, 0xd9, 0x43, 0x9e, 0x8b, 0x6e, - 0xdb, 0xdc, 0xea, 0xc3, 0x66, 0x3e, 0xd2, 0x5c, 0xb5, 0x34, - 0x3d, 0xe, 0x8a, 0x28, 0xaf, 0x10, 0xf5, 0x2, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x2a, 0xbd, 0xe4, - 0xfe, 0x44, 0x5c, 0x7d, 0xe6, 0xc8, 0x5f, 0xca, 0x80, 0x27, - 0x2c, 0x7, 0xaf, 0xe5, 0x46, 0xe1, 0xef, 0xf9, 0x1a, 0x86, - 0xd5, 0x76, 0xc0, 0xa4, 0x92, 0x49, 0xe4, 0x92, 0x6a, 0x7a, - 00, 0x4d, 0xc3, 0xdf, 0xf2, 0x34, 0x6e, 0x1e, 0xff, 00, - 0x91, 0xa5, 0xa2, 0x80, 0x13, 0x70, 0xf7, 0xfc, 0x8d, 0x1b, - 0x87, 0xbf, 0xe4, 0x69, 0x68, 0xa0, 0x4, 0xdc, 0x3d, 0xff, - 00, 0x23, 0x46, 0xe1, 0xef, 0xf9, 0x1a, 0x5a, 0x28, 0x1, - 0x37, 0xf, 0x7f, 0xc8, 0xd1, 0xb8, 0x7b, 0xfe, 0x46, 0x96, - 0x8a, 00, 0x4d, 0xc3, 0xdf, 0xf2, 0x34, 0x6e, 0x1e, 0xff, - 00, 0x91, 0xa5, 0x3d, 0x38, 0xae, 0x3, 0x55, 0xf8, 0x8e, - 0x3c, 0x35, 0xe2, 0x21, 0xa7, 0x6b, 0xd6, 0x9e, 0x44, 0x12, - 0xff, 00, 0xaa, 0x9d, 0x39, 0x7, 0xeb, 0x40, 0x5c, 0xef, - 0xb7, 0xf, 0x7f, 0xc8, 0xd1, 0xb8, 0x7b, 0xfe, 0x46, 0xa1, - 0xb3, 0xbc, 0xb7, 0xbf, 0xb5, 0x4b, 0x9b, 0x59, 0x56, 0x58, - 0x9c, 0x65, 0x59, 0x4e, 0x45, 0x4f, 0x40, 0x9, 0xb8, 0x7b, - 0xfe, 0x46, 0x8d, 0xc3, 0xdf, 0xf2, 0x34, 0xb4, 0x50, 0x2, - 0x6e, 0x1e, 0xff, 00, 0x91, 0xa3, 0x70, 0xf7, 0xfc, 0x8d, - 0x2d, 0x14, 00, 0x9b, 0x87, 0xbf, 0xe4, 0x68, 0xdc, 0x3d, - 0xff, 00, 0x23, 0x4b, 0x45, 00, 0x26, 0xe1, 0xef, 0xf9, - 0x1a, 0x50, 0x73, 0x45, 0x35, 0xf8, 0x20, 0xe7, 0x1c, 0xf3, - 0x40, 0xe, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, - 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 0x3, 0xcc, 0xed, - 0x7f, 0xe4, 0x29, 0xae, 0x7f, 0xd8, 0x4e, 0x6f, 0xe9, 0x5d, - 0xe6, 0x89, 0xff, 00, 0x20, 0x78, 0x3f, 0xe0, 0x5f, 0xfa, - 0x11, 0xae, 0xe, 0xd7, 0xfe, 0x42, 0x9a, 0xe7, 0xfd, 0x84, - 0xe6, 0xfe, 0x95, 0xde, 0x68, 0x9f, 0xf2, 0x7, 0x83, 0xfe, - 0x5, 0xff, 00, 0xa1, 0x1a, 00, 0xcf, 0xf0, 0x3f, 0xfc, - 0x89, 0x7a, 0x5f, 0xfd, 0x72, 0xff, 00, 0xd9, 0x8d, 0x74, - 0x15, 0xcf, 0xf8, 0x1f, 0xfe, 0x44, 0xbd, 0x2f, 0xfe, 0xb9, - 0x7f, 0xec, 0xc6, 0xba, 0xa, 00, 0x28, 0xa2, 0x8a, 00, - 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, - 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, - 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, - 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, - 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, - 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, - 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, - 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, - 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, - 0x8a, 00, 0x2b, 0x96, 0xf1, 0x77, 0x8a, 0xd3, 0x44, 0x80, - 0xda, 0xda, 0xb2, 0xbe, 0xa1, 0x22, 0xf0, 0x3a, 0x88, 0x87, - 0xf7, 0x8f, 0xbf, 0xa0, 0xa9, 0xbc, 0x57, 0xe2, 0x88, 0xb4, - 0xb, 0x5f, 0x2a, 0x1d, 0xb2, 0x5f, 0xca, 0x3f, 0x76, 0x87, - 0xa2, 0x8f, 0xef, 0x37, 0xb7, 0xf3, 0xaf, 0x22, 0x9a, 0x69, - 0x6e, 0x67, 0x92, 0x79, 0xe4, 0x69, 0x25, 0x91, 0xb7, 0x3b, - 0xb1, 0xe4, 0x9a, 0xf6, 0x32, 0xdc, 0xbb, 0xdb, 0x3f, 0x6b, - 0x51, 0x7b, 0xbf, 0x9f, 0xfc, 0x3, 0xcd, 0xc6, 0xe3, 0x3d, - 0x9a, 0xf6, 0x70, 0xdf, 0xf2, 0x11, 0xdd, 0xe5, 0x91, 0xa4, - 0x91, 0xd9, 0xe4, 0x72, 0x59, 0x99, 0x8e, 0x49, 0x27, 0xb9, - 0xa6, 0xd1, 0x45, 0x7d, 0x41, 0xe1, 0x5, 0x14, 0x51, 0x40, - 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, - 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0x1e, 0x91, 0xe0, 0xaf, - 0x17, 0xfd, 0xa4, 0x47, 0xa5, 0x6a, 0x52, 0x7e, 0xfc, 0x7c, - 0xb0, 0x4c, 0xc7, 0xfd, 0x67, 0xfb, 0x27, 0xfd, 0xaf, 0xe7, - 0xf5, 0xeb, 0xdd, 0xd7, 0xcf, 0x9c, 0x83, 0x90, 0x48, 0x23, - 0x90, 0x47, 0x6a, 0xf4, 0xff, 00, 0x6, 0xf8, 0xbf, 0xfb, - 0x49, 0x17, 0x4d, 0xd4, 0x24, 0x1f, 0x6d, 0x51, 0x88, 0xe4, - 0x3f, 0xf2, 0xd8, 0xf, 0xfd, 0x9b, 0xf9, 0xd7, 0xce, 0x66, - 0x79, 0x77, 0x25, 0xeb, 0x52, 0x5a, 0x75, 0x5d, 0xbc, 0xcf, - 0x6b, 0x3, 0x8d, 0xe6, 0xfd, 0xdd, 0x4d, 0xfa, 0x33, 0xb4, - 0xa2, 0x8a, 0x2b, 0xc2, 0x3d, 0x50, 0xa2, 0x8a, 0x28, 00, - 0xac, 0xed, 0x53, 0xfe, 0x58, 0x7d, 0x5b, 0xf9, 0x56, 0x8d, - 0x67, 0x6a, 0x9f, 0xf2, 0xc3, 0xea, 0xdf, 0xca, 0x80, 0x2e, - 0x5b, 0xff, 00, 0xa8, 0x4f, 0xa5, 0x4b, 0x51, 0x5b, 0xff, - 00, 0xa8, 0x4f, 0xa5, 0x4b, 0x40, 0x5, 0x14, 0x51, 0x40, - 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0x8, 0xcc, - 0x14, 0x64, 0xd3, 0x4, 0x99, 0x38, 0x15, 0x4a, 0xe2, 0xeb, - 0xe7, 0x20, 0x1e, 0x5, 0x3a, 0xca, 0x4f, 0x32, 0x52, 0x7d, - 0x5, 0x3b, 0xa, 0xe5, 0xfa, 0xf3, 0xcf, 0x8b, 0xfe, 0x1f, - 0x8f, 0x57, 0xf0, 0x93, 0xdc, 0xec, 0x6, 0x4b, 0x43, 0xe6, - 0x67, 0xbe, 0x2b, 0xd0, 0xea, 0x86, 0xb5, 0x66, 0x2f, 0xf4, - 0x5b, 0xbb, 0x56, 0x19, 0x12, 0x46, 0x45, 0x24, 0xd, 0x5d, - 0x1f, 0x3e, 0xfc, 0x2f, 0xf1, 0xcd, 0xc7, 0x87, 0x75, 0x18, - 0xb4, 0xfb, 0xd9, 0x59, 0xb4, 0xf9, 0xc8, 0x18, 0x63, 0xf7, - 0xf, 0xb5, 0x7d, 0x1f, 0x1b, 0xac, 0xb1, 0xac, 0x88, 0x41, - 0x56, 0x19, 0x7, 0xda, 0xbe, 0x41, 0xbc, 0xb5, 0xf2, 0x6f, - 0xae, 0x22, 0x3, 0x1e, 0x5c, 0xa4, 0xf, 0xc2, 0xbd, 0xfb, - 0xe1, 0x47, 0x89, 0x5b, 0x58, 0xd0, 0x7e, 0xc5, 0x70, 0xfb, - 0xae, 0x6d, 0x7e, 0x52, 0x49, 0xea, 0x2a, 0xe5, 0x1e, 0xa6, - 0x34, 0xea, 0x5d, 0xd8, 0xf4, 0x2a, 0x28, 0xa2, 0xa0, 0xdc, - 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x2a, 0x1b, - 0x8f, 0xb9, 0x53, 0x54, 0x37, 0x1f, 0x72, 0x80, 0x26, 0xa2, - 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, - 00, 0xa2, 0x8a, 0x28, 0x3, 0xcc, 0xed, 0x7f, 0xe4, 0x29, - 0xae, 0x7f, 0xd8, 0x4e, 0x6f, 0xe9, 0x5d, 0xe6, 0x89, 0xff, - 00, 0x20, 0x78, 0x3f, 0xe0, 0x5f, 0xfa, 0x11, 0xae, 0xe, - 0xd7, 0xfe, 0x42, 0x9a, 0xe7, 0xfd, 0x84, 0xe6, 0xfe, 0x95, - 0xde, 0x68, 0x9f, 0xf2, 0x7, 0x83, 0xfe, 0x5, 0xff, 00, - 0xa1, 0x1a, 00, 0xcf, 0xf0, 0x3f, 0xfc, 0x89, 0x7a, 0x5f, - 0xfd, 0x72, 0xff, 00, 0xd9, 0x8d, 0x74, 0x15, 0xcf, 0xf8, - 0x1f, 0xfe, 0x44, 0xbd, 0x2f, 0xfe, 0xb9, 0x7f, 0xec, 0xc6, - 0xba, 0xa, 00, 0x2b, 0x8e, 0xf1, 0xef, 0x8f, 0xe1, 0xf0, - 0x54, 0x16, 0x50, 0xc1, 0xa7, 0x4d, 0xaa, 0x6a, 0xd7, 0xf2, - 0x6c, 0xb4, 0xb0, 0x80, 0x90, 0xcf, 0x8c, 0x64, 0x92, 0x1, - 0x38, 0xe4, 0x74, 0x4, 0x93, 0xf8, 0x91, 0xd8, 0xd7, 0x9a, - 0xfc, 0x4d, 0xf0, 0xd7, 0x88, 0xa6, 0xd6, 0x74, 0x4f, 0x16, - 0xf8, 0x56, 0x18, 0x6e, 0xb5, 0x2d, 0x23, 0x78, 0x6b, 0x59, - 0x7f, 0xe5, 0xaa, 0x37, 0xa0, 0xc8, 0xcf, 0xf1, 0x71, 0x90, - 0x79, 0xe3, 0x9a, 0x4f, 0x75, 0x7d, 0xba, 0x8d, 0x75, 0xee, - 0x64, 0x1f, 0x17, 0x7c, 0x67, 0xb2, 0x4f, 0xb6, 0x5f, 0x78, - 0x1f, 0x4c, 0x96, 0xce, 0x2f, 0x9e, 0x58, 0xed, 0xe4, 0x1e, - 0x6b, 0x27, 0x70, 0xa0, 0x4c, 0xc7, 0x3f, 0xf0, 0x13, 0xf4, - 0xae, 0xf3, 0xc0, 0xfe, 0x34, 0xb0, 0xf1, 0xcf, 0x87, 0x93, - 0x54, 0xb2, 0x8d, 0xe1, 0x75, 0x6f, 0x2e, 0xe2, 0xdd, 0xce, - 0x5a, 0x19, 00, 0x19, 0x19, 0xee, 0x39, 0xc8, 0x3c, 0x64, - 0x76, 0x7, 0x81, 0xe7, 0xd1, 0xfc, 0x7f, 0x8b, 0x4d, 0xb9, - 0x6b, 0x5f, 0x15, 0x78, 0x43, 0x57, 0xd2, 0x27, 0xd8, 0xaf, - 0x1c, 0x6b, 0x86, 0x67, 0x7, 0x39, 0x25, 0x64, 0x11, 0x90, - 0x38, 0xe3, 0xae, 0x79, 0xf4, 0xae, 0xf3, 0xc0, 0xf1, 0x78, - 0x42, 0x6b, 0x3b, 0xdd, 0x63, 0xc2, 0x26, 0x26, 0x87, 0x51, - 0x9c, 0xc9, 0x72, 0xf1, 0xbb, 0x9c, 0xcb, 0xc9, 0x39, 0x57, - 0x39, 0x43, 0xf3, 0x67, 0x18, 0x1d, 0x47, 0x18, 0xc5, 0x5a, - 0xd9, 0xf6, 0x25, 0xf4, 0xee, 0x6b, 0x78, 0x93, 0x5b, 0x83, - 0xc3, 0x7e, 0x1b, 0xd4, 0x35, 0x8b, 0x8c, 0x79, 0x76, 0x90, - 0xb4, 0x9b, 0x49, 0xc6, 0xe6, 0xfe, 0x15, 0xfc, 0x4e, 0x7, - 0xe3, 0x5c, 0x7f, 0xc2, 0xcf, 0x88, 0x57, 0xfe, 0x34, 0x83, - 0x50, 0xb6, 0xd6, 0xad, 0x20, 0xb3, 0xd5, 0x6d, 0xc, 0x72, - 0x79, 0x50, 0xa3, 0x2a, 0xb4, 0x2e, 0xa0, 0xab, 0x61, 0x89, - 0x3f, 0xaf, 0x71, 0x59, 0xbf, 0x17, 0x67, 0x7d, 0x7b, 0x54, - 0xf0, 0xe7, 0x80, 0xed, 0x64, 0xc4, 0x9a, 0xad, 0xd0, 0x9a, - 0xec, 0xe, 0xd0, 0x27, 0x3c, 0xfe, 0x4c, 0x7f, 0xe0, 0x15, - 0x5b, 0xc6, 0xb, 0x1f, 0x80, 0xfe, 0x2c, 0xf8, 0x77, 0xc5, - 0x10, 0xa7, 0x95, 0xa7, 0x6a, 0x51, 0x8d, 0x2e, 0xf4, 0x81, - 0x85, 0x5e, 0x81, 0x9, 0xf4, 0xe0, 0x29, 0xfa, 0x47, 0x53, - 0xd, 0x5e, 0xbd, 0x74, 0x5f, 0xd7, 0xae, 0x83, 0x9e, 0x8b, - 0xd3, 0x5f, 0xeb, 0xe5, 0xa9, 0xe8, 0xfe, 0x2b, 0xd5, 0x67, - 0xd0, 0xbc, 0x25, 0xab, 0x6a, 0xd6, 0xa9, 0x1b, 0xcf, 0x67, - 0x69, 0x24, 0xf1, 0xac, 0xa0, 0x95, 0x2c, 0xaa, 0x48, 0xc8, - 0x4, 0x1c, 0x7e, 0x35, 0xe5, 0x9a, 0x5f, 0x8d, 0x7e, 0x33, - 0xeb, 0x5a, 0x5d, 0xbe, 0xa5, 0xa7, 0xf8, 0x4b, 0x43, 0x9a, - 0xd2, 0xe5, 0x37, 0xc5, 0x27, 0x98, 0x17, 0x72, 0xfa, 0xe0, - 0xdc, 0x2, 0x3f, 0x11, 0x5e, 0x89, 0xf1, 0x17, 0xfe, 0x49, - 0xb7, 0x88, 0xff, 00, 0xec, 0x1d, 0x37, 0xfe, 0x80, 0x6b, - 0xca, 0x7c, 0x19, 0xf1, 0xd3, 0xc3, 0x1e, 0x1d, 0xf0, 0x6e, - 0x95, 0xa3, 0xdd, 0xd8, 0x6a, 0xef, 0x71, 0x69, 00, 0x8e, - 0x46, 0x86, 0x18, 0x8a, 0x12, 0x3d, 0x9, 0x90, 0x1c, 0x7e, - 0x14, 0x96, 0xef, 0xe5, 0xfa, 0x8d, 0xec, 0xbe, 0x7f, 0xa1, - 0xd8, 0x78, 0x7f, 0x5b, 0xf8, 0xbb, 0x71, 0xaf, 0xd9, 0xc3, - 0xae, 0xf8, 0x5b, 0x48, 0xb5, 0xd2, 0xde, 0x4c, 0x5c, 0xcd, - 0xc, 0xaa, 0x5d, 0x17, 0x1d, 0x40, 0xf3, 0xdb, 0xdb, 0xb1, - 0xac, 0xbd, 0x53, 0xc7, 0xff, 00, 0x11, 0x6e, 0xbc, 0x75, - 0xae, 0x68, 0x3e, 0x14, 0xd0, 0xb4, 0x9b, 0xf8, 0x74, 0xc7, - 0x50, 0xc6, 0x6c, 0xa3, 0x85, 0x60, 0x8, 0x24, 0xb4, 0xaa, - 0xf, 0x39, 0xe8, 0x2b, 0xa9, 0xf0, 0x47, 0xc5, 0x3d, 0xf, - 0xc7, 0xba, 0x85, 0xcd, 0x96, 0x95, 0x6b, 0xa8, 0x43, 0x25, - 0xbc, 0x5e, 0x6b, 0x9b, 0xa8, 0xd1, 0x41, 0x19, 0x3, 0x8d, - 0xae, 0xdc, 0xf3, 0x5e, 0x6c, 0x9e, 0x2c, 0xd5, 0xbc, 0x2b, - 0xf1, 0x8b, 0xc6, 0x92, 0x69, 0x5e, 0x16, 0xbd, 0xd7, 0xda, - 0x77, 0x89, 0x64, 0x4b, 0x52, 0xf9, 0x88, 0x5, 0xe0, 0x9d, - 0xa8, 0xdd, 0x73, 0xed, 0xd2, 0x9f, 0xda, 0x49, 0xf6, 0x62, - 0xe8, 0xda, 0xee, 0x8e, 0x87, 0xfe, 0x12, 0x1f, 0x8e, 0x7f, - 0xf4, 0x26, 0x68, 0x7f, 0xf7, 0xf9, 0x7f, 0xf9, 0x22, 0xbb, - 0xfb, 0x5d, 0x4f, 0x5c, 0x83, 0xc0, 0x8f, 0xa9, 0xeb, 0x36, - 0x76, 0xf6, 0xda, 0xcc, 0x36, 0x92, 0x4d, 0x35, 0xbc, 0x67, - 0x74, 0x6a, 0xea, 0x18, 0x81, 0xc3, 0x1c, 0x8e, 0x7, 0xf1, - 0x57, 0x1, 0xff, 00, 0xb, 0x7f, 0xc6, 0x1f, 0xf4, 0x49, - 0xb5, 0xcf, 0xce, 0x6f, 0xfe, 0x31, 0x5e, 0x83, 0xab, 0x5d, - 0x4b, 0x7b, 0xe0, 0xb, 0xeb, 0xa9, 0xed, 0x9e, 0xd6, 0x59, - 0xb4, 0xc9, 0x24, 0x78, 0x1f, 0x3b, 0xa2, 0x63, 0x11, 0x25, - 0x4e, 0x40, 0xe4, 0x74, 0xe8, 0x2a, 0x6a, 0x36, 0xa9, 0xc9, - 0xa1, 0xc1, 0x27, 0x51, 0x26, 0x78, 0x86, 0x99, 0xf1, 0xbb, - 0xe2, 0x56, 0xb4, 0x92, 0x3e, 0x95, 0xe1, 0x6b, 0x2b, 0xf5, - 0x8c, 0x80, 0xed, 0x6b, 0xa7, 0xdc, 0xca, 0x14, 0x9e, 0x80, - 0xed, 0x90, 0xe2, 0xad, 0xc5, 0xf1, 0xdf, 0xc5, 0xfa, 0x1e, - 0xab, 0x4, 0x7e, 0x2e, 0xf0, 0xa4, 0x76, 0xd6, 0xb2, 0x8c, - 0xec, 0x5b, 0x79, 0xad, 0xa5, 0xc6, 0x40, 0x2c, 0xbe, 0x63, - 0x10, 0xd8, 0xe7, 0x8c, 0xc, 0xfa, 0x8a, 0xe2, 0x3e, 0x1a, - 0x7c, 0x54, 0xff, 00, 0x85, 0x77, 0x67, 0xa8, 0x5b, 0xff, - 00, 0x63, 0x7f, 0x68, 0x7d, 0xb2, 0x44, 0x7d, 0xdf, 0x6a, - 0xf2, 0xb6, 0x6d, 0x4, 0x63, 0xee, 0x36, 0x7a, 0xd6, 0xd7, - 0x8a, 0x3c, 0x4f, 0xe2, 0x5f, 0x8d, 0xcf, 0xa7, 0x69, 0xfa, - 0x3f, 0x85, 0xe5, 0x82, 0xda, 0xde, 0x63, 0xbe, 0x50, 0xe6, - 0x54, 0x57, 0x23, 0xab, 0xcb, 0xb5, 0x42, 00, 0x3b, 0x77, - 0xf7, 0xe0, 0x55, 0xbd, 0x1a, 0xe5, 0xd4, 0x95, 0xb7, 0xbd, - 0xa1, 0xee, 0xde, 0x2d, 0xf1, 0x1e, 0xa7, 0x67, 0xe0, 0x56, - 0xd7, 0x3c, 0x29, 0x64, 0x35, 0x5b, 0xa9, 0x16, 0x29, 0x2d, - 0xa2, 0x10, 0x3c, 0xa2, 0x44, 0x72, 0xbc, 0xed, 0x42, 0x18, - 0xfc, 0xa7, 0x35, 0xe3, 0xba, 0x97, 0xc6, 0xbf, 0x89, 0x9a, - 0x34, 0x9, 0x3e, 0xa9, 0xe1, 0x4b, 0x4b, 0x18, 0x9d, 0xb6, - 0x2c, 0x97, 0x5a, 0x75, 0xcc, 0x4a, 0xcd, 0x8c, 0xe0, 0x16, - 0x90, 0x64, 0xe0, 0x1a, 0xf7, 0xaf, 0xf, 0xe9, 0x43, 0x43, - 0xf0, 0xe6, 0x9b, 0xa5, 0x7, 0xf3, 0x3e, 0xc7, 0x6d, 0x1c, - 0x5, 0xff, 00, 0xbc, 0x55, 0x40, 0x27, 0xf4, 0xaf, 0x2b, - 0xfd, 0xa4, 0x7f, 0xe4, 0x4a, 0xd2, 0xbf, 0xec, 0x22, 0x3f, - 0xf4, 0x5b, 0xd4, 0xce, 0xd1, 0x6e, 0xdb, 0x5c, 0x70, 0xf7, - 0x92, 0xbf, 0x63, 0x16, 0xc3, 0xe2, 0xcf, 0xc5, 0x6b, 0xf1, - 0x6d, 0x34, 0x5e, 0xa, 0x8e, 0x5b, 0x59, 0xf6, 0xb2, 0xcd, - 0x16, 0x95, 0x74, 0xca, 0xc8, 0x7f, 0x88, 0x36, 0xfc, 0x11, - 0x8e, 0xf5, 0xda, 0xfc, 0x47, 0xf8, 0xc1, 0x61, 0xe0, 0x59, - 0x97, 0x4d, 0xb6, 0xb5, 0x1a, 0x86, 0xae, 0xc9, 0xb9, 0xa2, - 0xf3, 0x36, 0xa4, 00, 0x8e, 0xb, 0x9e, 0x4e, 0x4f, 0x7, - 0x68, 0xea, 0x3b, 0x8e, 0x33, 0xd3, 0x7c, 0x3d, 0xff, 00, - 0x92, 0x73, 0xe1, 0xcf, 0xfb, 0x7, 0x43, 0xff, 00, 0xa0, - 0xa, 0xf0, 0xbf, 0x86, 0x36, 0xb1, 0xf8, 0xab, 0xe3, 0xb6, - 0xa9, 0xa8, 0x6a, 0x6b, 0xe7, 0xbd, 0xbb, 0xdc, 0x5e, 0x22, - 0xc8, 0x33, 0x87, 0x12, 0x5, 0x4e, 0xf, 0xf7, 0x77, 0xc, - 0x7a, 0x60, 0x7a, 0x55, 0xc9, 0x7e, 0xf3, 0xd9, 0xaf, 0x3f, - 0xc0, 0x51, 0x7e, 0xef, 0x3f, 0xa7, 0xe2, 0x6a, 0x37, 0xc6, - 0xaf, 0x88, 0xda, 0x64, 0x51, 0x6a, 0x1a, 0xc7, 0x83, 0x62, - 0x8f, 0x4b, 0xca, 0x97, 0x90, 0xd8, 0xdc, 0x40, 0x19, 0x4f, - 0x4c, 0x48, 0xcc, 0x54, 0x13, 0xd8, 0xe0, 0xd7, 0xae, 0xf8, - 0x1b, 0xc7, 0x9a, 0x4f, 0x8f, 0x34, 0x73, 0x7b, 0xa7, 0x16, - 0x8a, 0x78, 0x88, 0x5b, 0x9b, 0x59, 0x8, 0xdf, 0xb, 0x1f, - 0xe6, 0xa7, 0x7, 0x7, 0xbe, 0x3b, 0x10, 0x40, 0xe9, 0x27, - 0x82, 0x1b, 0xab, 0x79, 0x6d, 0xee, 0x22, 0x49, 0x61, 0x95, - 0xa, 0x49, 0x1b, 0x8c, 0xab, 0x29, 0x18, 0x20, 0x8e, 0xe0, - 0x8a, 0xf9, 0xbb, 0xe1, 0x28, 0x3a, 0x7, 0xc7, 0x4d, 0x57, - 0x45, 0xb4, 0x76, 0x16, 0x65, 0xae, 0xad, 0xf6, 0x6e, 0xc8, - 0xda, 0x8c, 0x4a, 0xe7, 0xd4, 0x8d, 0xbd, 0x7d, 0xcd, 0x28, - 0xbb, 0xcb, 0x97, 0xd5, 0xfd, 0xc1, 0x25, 0x68, 0xf3, 0x7a, - 0x2f, 0xbc, 0xf4, 0x7f, 0x89, 0x5f, 0x17, 0x23, 0xf0, 0x5d, - 0xec, 0x7a, 0x2e, 0x97, 0x61, 0xfd, 0xa1, 0xad, 0x4c, 0x81, - 0x82, 0x31, 0x3b, 0x22, 0xdd, 0xf7, 0x72, 0x7, 0x2c, 0x49, - 0xfe, 0x11, 0x8e, 0xf, 0x5a, 0xe2, 0x64, 0xf8, 0xd7, 0xf1, - 0xf, 0x44, 0x78, 0xae, 0xfc, 0x45, 0xe0, 0xb8, 0xe0, 0xd3, - 0xcb, 0xec, 0x62, 0xd6, 0x77, 0x16, 0xc5, 0x89, 0x7, 00, - 0x3b, 0x96, 00, 0xf1, 0x9e, 0x87, 0xa1, 0xa5, 0xf8, 0xb9, - 0xe1, 0xef, 0x11, 0xf8, 0x73, 0xe2, 0x1c, 0x3e, 0x3f, 0xd1, - 0x2d, 0x9e, 0xea, 0x5, 0x9, 0x24, 0x8c, 0x22, 0xf3, 0x16, - 0x6, 0x44, 0xda, 0x77, 0xa8, 0xe4, 0x21, 0x51, 0xf7, 0xbb, - 0x73, 0xc8, 0x38, 0xab, 0x1a, 0x5f, 0xed, 0x5, 0xa2, 0xeb, - 0x16, 0x9f, 0xd9, 0xde, 0x30, 0xf0, 0xe0, 0x30, 0x48, 0xa8, - 0xb2, 0xb4, 0x4a, 0xb3, 0xc2, 0xed, 0x91, 0x92, 0xd1, 0x3f, - 0x21, 0x47, 0x7, 0xab, 0x9e, 0x2a, 0x61, 0xaa, 0xbf, 0x52, - 0xa5, 0x64, 0xfc, 0x8f, 0x64, 0xf0, 0xc7, 0x88, 0xec, 0x7c, - 0x59, 0xe1, 0xeb, 0x5d, 0x6b, 0x4e, 0x2f, 0xf6, 0x7b, 0x80, - 0x7e, 0x59, 0x6, 0x19, 0x18, 0x1c, 0x15, 0x23, 0xd4, 0x10, - 0x6b, 0x5e, 0xb2, 0x3c, 0x33, 0x2e, 0x83, 0x71, 0xa0, 0xdb, - 0xdc, 0x78, 0x69, 0x2c, 0xd3, 0x4b, 0x9b, 0x2f, 0x10, 0xb3, - 0x88, 0x46, 0x99, 0x3d, 0x7e, 0x50, 0x6, 0xe, 0x7a, 0x82, - 0x33, 0x9e, 0xb5, 0xaf, 0x55, 0x2d, 0xc9, 0x5b, 0x5, 0x14, - 0x51, 0x48, 0x61, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, - 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, - 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, - 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, - 0x14, 0x50, 0x1, 0x58, 0x5e, 0x26, 0xf1, 0x24, 0x1e, 0x1f, - 0xb2, 0xcf, 0x12, 0x5e, 0x48, 0xf, 0x93, 0x16, 0x7a, 0xff, - 00, 0xb4, 0x7d, 0x85, 0x4b, 0xe2, 0x2f, 0x10, 0xdb, 0x78, - 0x7e, 0xc0, 0xcb, 0x26, 0x1e, 0x77, 0xe2, 0x18, 0x73, 0xcb, - 0x9f, 0xf0, 0x1d, 0xcd, 0x78, 0xe5, 0xf5, 0xf5, 0xce, 0xa5, - 0x7b, 0x25, 0xdd, 0xdc, 0x86, 0x49, 0xa4, 0x39, 0x27, 0xb0, - 0x1d, 0x80, 0xf4, 0x2, 0xbd, 0x5c, 0xbb, 0x2f, 0x78, 0x87, - 0xed, 0x27, 0xf0, 0xaf, 0xc4, 0xf3, 0xf1, 0xb8, 0xc5, 0x49, - 0x72, 0x43, 0xe2, 0xfc, 0x86, 0xdd, 0x5d, 0x4f, 0x7b, 0x75, - 0x25, 0xcd, 0xcc, 0x86, 0x49, 0xa4, 0x39, 0x66, 0x3d, 0xff, - 00, 0xfa, 0xd5, 0xd, 0x14, 0x57, 0xd5, 0x24, 0x92, 0xb2, - 0x3c, 0x6, 0xdb, 0x77, 0x61, 0x45, 0x14, 0x53, 00, 0xa2, - 0xb7, 0xbc, 0x31, 0xe1, 0xa9, 0xbc, 0x41, 0x79, 0x96, 0xdd, - 0x1d, 0x94, 0x47, 0xf7, 0xb2, 0x8e, 0xff, 00, 0xec, 0xaf, - 0xbf, 0xf2, 0xaf, 0x4e, 0x5f, 0xb, 0xe8, 0x6a, 0xa1, 0x46, - 0x95, 0x6b, 0x80, 0x31, 0xcc, 0x60, 0x9a, 0xf3, 0xb1, 0x59, - 0x9d, 0x2c, 0x3c, 0xf9, 0x1a, 0xbb, 0xf2, 0xe8, 0x76, 0xe1, - 0xf0, 0x35, 0x2b, 0x47, 0x99, 0x68, 0x8f, 0x13, 0xa2, 0xbd, - 0xb7, 0xfe, 0x11, 0x8d, 0xf, 0xfe, 0x81, 0x56, 0x9f, 0xf7, - 0xe8, 0x51, 0xff, 00, 0x8, 0xc6, 0x87, 0xff, 00, 0x40, - 0xab, 0x4f, 0xfb, 0xf4, 0x2b, 0x97, 0xfb, 0x72, 0x97, 0xf2, - 0xb3, 0x7f, 0xec, 0xba, 0x9f, 0xcc, 0x8f, 0x12, 0xa2, 0xbd, - 0xb7, 0xfe, 0x11, 0x8d, 0xf, 0xfe, 0x81, 0x56, 0x9f, 0xf7, - 0xe8, 0x51, 0xff, 00, 0x8, 0xc6, 0x87, 0xff, 00, 0x40, - 0xab, 0x4f, 0xfb, 0xf4, 0x28, 0xfe, 0xdc, 0xa5, 0xfc, 0xac, - 0x3f, 0xb2, 0xea, 0x7f, 0x32, 0x3c, 0x4a, 0x8a, 0xf6, 0xdf, - 0xf8, 0x46, 0x34, 0x3f, 0xfa, 0x5, 0x5a, 0x7f, 0xdf, 0xa1, - 0x5e, 0x7f, 0xe3, 0x1f, 0x9, 0x1d, 0x22, 0x56, 0xbf, 0xb1, - 0x42, 0x6c, 0x1c, 0xfc, 0xca, 0x39, 0xf2, 0x49, 0xff, 00, - 0xd9, 0x7f, 0x95, 0x74, 0x61, 0xb3, 0x5a, 0x55, 0xe7, 0xc9, - 0x6b, 0x37, 0xdc, 0xc6, 0xbe, 0x2, 0xa5, 0x28, 0xf3, 0x5e, - 0xe7, 0x25, 0x45, 0x14, 0x57, 0xa6, 0x70, 0x85, 0x2a, 0xb3, - 0x23, 0xab, 0xa3, 0x15, 0x65, 0x39, 0x56, 0x53, 0x82, 0xf, - 0xa8, 0xa4, 0xa2, 0x80, 0x3d, 0x5b, 0xc1, 0xfe, 0x2c, 0x5d, - 0x62, 0x21, 0x65, 0x78, 0xc1, 0x6f, 0xe3, 0x1c, 0x1e, 0x82, - 0x60, 0x3b, 0x8f, 0x7f, 0x51, 0xf8, 0xd7, 0x5b, 0x5f, 0x3f, - 0xc5, 0x2c, 0x90, 0x4a, 0x92, 0xc4, 0xed, 0x1c, 0x88, 0x43, - 0x2b, 0xa9, 0xc1, 0x52, 0x3b, 0x8a, 0xf5, 0xaf, 0x9, 0x78, - 0xaa, 0x3d, 0x76, 0xdf, 0xec, 0xf7, 0x5, 0x53, 0x50, 0x8d, - 0x7e, 0x75, 0x1c, 0x9, 0x7, 0xf7, 0x87, 0xf5, 0x1d, 0xab, - 0xe6, 0x33, 0x3c, 0xbb, 0xd9, 0x3f, 0x6b, 0x49, 0x7b, 0xbd, - 0x7c, 0xbf, 0xe0, 0x1e, 0xe6, 0x7, 0x19, 0xed, 0x3f, 0x77, - 0x3d, 0xff, 00, 0x33, 0xa6, 0xa2, 0x8a, 0x2b, 0xc6, 0x3d, - 0x30, 0xac, 0xed, 0x53, 0xfe, 0x58, 0x7d, 0x5b, 0xf9, 0x56, - 0x8d, 0x67, 0x6a, 0x9f, 0xf2, 0xc3, 0xea, 0xdf, 0xca, 0x80, - 0x2e, 0x5b, 0xff, 00, 0xa8, 0x4f, 0xa5, 0x4b, 0x51, 0x5b, - 0xff, 00, 0xa8, 0x4f, 0xa5, 0x4b, 0x40, 0x5, 0x14, 0x51, - 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, 0x57, 0xbd, 0x9c, 0x5b, - 0xdb, 0x33, 0xe7, 0x9a, 0xb1, 0x5c, 0xf7, 0x88, 0xef, 0x2, - 0x18, 0xe2, 0x7, 0xeb, 0x4d, 0x9, 0xbb, 0x22, 0xa3, 0xdd, - 0x75, 0xe6, 0xb5, 0x34, 0x37, 0xf3, 0x63, 0x91, 0xbd, 0xe, - 0x2b, 0x90, 0x92, 0xef, 0x1d, 0xeb, 0xa6, 0xf0, 0x94, 0xbe, - 0x6d, 0x9c, 0xc7, 0xd1, 0xe9, 0xbd, 0x8c, 0xe2, 0xee, 0xce, - 0x86, 0x9a, 0xe3, 0x28, 0xc3, 0xda, 0x9d, 0x48, 0xdf, 0x74, - 0xfd, 0x2a, 0x4d, 0x4f, 0x97, 0xbc, 0x43, 0x67, 0xe4, 0xf8, - 0x82, 0xf5, 0x71, 0xd6, 0x56, 0x3f, 0xad, 0x69, 0xfc, 0x3e, - 0xd5, 0x5b, 0x45, 0xf1, 0x5c, 0xc, 0xcc, 0x56, 0x9, 0x4e, - 0xd7, 0x1e, 0xb5, 0x63, 0xc5, 0x36, 0xfb, 0xbc, 0x43, 0x74, - 0x71, 0xfc, 0x46, 0xb1, 0x4, 0x46, 0x19, 0xa3, 0x95, 0x78, - 0x28, 0xc1, 0xbf, 0x2a, 0xe8, 0xb5, 0xd1, 0xe6, 0x5d, 0xc6, - 0x77, 0x3e, 0xa1, 0x52, 0x19, 0x43, 0xe, 0x84, 0x66, 0x96, - 0xb2, 0xbc, 0x37, 0x7f, 0xfd, 0xa5, 0xa0, 0x5a, 0x5d, 0x13, - 0xcb, 0x20, 0xcd, 0x6a, 0xd7, 0x39, 0xe9, 0x27, 0x75, 0x70, - 0xa2, 0x8a, 0x28, 0x18, 0x51, 0x45, 0x14, 00, 0x54, 0x37, - 0x3f, 0x72, 0xa6, 0xa8, 0x6e, 0x7e, 0xe5, 00, 0x4d, 0x45, - 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, - 0x1, 0x45, 0x14, 0x50, 0x7, 0x99, 0xda, 0xff, 00, 0xc8, - 0x53, 0x5c, 0xff, 00, 0xb0, 0x9c, 0xdf, 0xd2, 0xbb, 0xcd, - 0x13, 0xfe, 0x40, 0xf0, 0x7f, 0xc0, 0xbf, 0xf4, 0x23, 0x5c, - 0x1d, 0xaf, 0xfc, 0x85, 0x35, 0xcf, 0xfb, 0x9, 0xcd, 0xfd, - 0x2b, 0xbc, 0xd1, 0x3f, 0xe4, 0xf, 0x7, 0xfc, 0xb, 0xff, - 00, 0x42, 0x34, 0x1, 0x9f, 0xe0, 0x7f, 0xf9, 0x12, 0xf4, - 0xbf, 0xfa, 0xe5, 0xff, 00, 0xb3, 0x1a, 0xe8, 0x2b, 0x9f, - 0xf0, 0x3f, 0xfc, 0x89, 0x7a, 0x5f, 0xfd, 0x72, 0xff, 00, - 0xd9, 0x8d, 0x74, 0x14, 00, 0x57, 0x9a, 0xf8, 0xd7, 0xc7, - 0xba, 0x97, 0x82, 0x7c, 0x7d, 0xa4, 0x7f, 0x69, 0xc6, 0x13, - 0xc2, 0x57, 0x50, 0xb2, 0x49, 0x71, 0x14, 0x5b, 0x99, 0x66, - 0xff, 00, 0x68, 0xf2, 0x7e, 0x5c, 0x3, 0x81, 0x8c, 0x86, - 0x6f, 0xbd, 0x8c, 0x57, 0xa5, 0x55, 0x6b, 0xfd, 0x3e, 0xcb, - 0x54, 0xb4, 0x7b, 0x4d, 0x42, 0xce, 0xde, 0xee, 0xd9, 0xf0, - 0x5a, 0x1b, 0x88, 0x84, 0x88, 0xd8, 0x39, 0x19, 0x4, 0x11, - 0xd6, 0x96, 0xb7, 0xba, 0xe, 0x8d, 0x1c, 0xed, 0xdf, 0x8e, - 0xfc, 0x9, 0x77, 0xa4, 0xca, 0x6f, 0x3c, 0x45, 0xa1, 0xdc, - 0x59, 0xc9, 0x9, 0x69, 0x20, 0x92, 0xe2, 0x37, 0x2e, 0x98, - 0xc9, 0x6, 0x32, 0x49, 0x27, 0xfd, 0x9c, 0x67, 0xb6, 0x33, - 0x5c, 0x3f, 0xc1, 0x78, 0xad, 0xa5, 0xf1, 0xf, 0x8c, 0x75, - 0x5d, 0x16, 0x9, 0x6d, 0xfc, 0x35, 0x3d, 0xca, 0x2d, 0x92, - 0xb0, 0x2a, 0x8c, 0x57, 0x76, 0xe2, 0xa0, 0xf4, 0x1c, 0x8f, - 0xa0, 0x20, 0x76, 0xc5, 0x74, 0xf1, 0xfc, 0x17, 0xf8, 0x7d, - 0x14, 0xe9, 0x32, 0xf8, 0x75, 0xb, 0x2b, 0x6, 0x1, 0xae, - 0xa6, 0x65, 0xc8, 0x39, 0xe5, 0x4b, 0xe0, 0x8f, 0x62, 0x31, - 0x5d, 0x92, 0x69, 0xd6, 0x71, 0x69, 0xbf, 0xd9, 0xd0, 0xdb, - 0x47, 0x5, 0x9f, 0x96, 0x62, 0x10, 0xc0, 0x3c, 0xb5, 0x55, - 0x23, 0x18, 0x5d, 0xb8, 0xdb, 0xd7, 0xb6, 0x29, 0xed, 0x76, - 0xb7, 0xb0, 0x3d, 0x6c, 0x99, 0xe1, 0x7a, 0x6f, 0x84, 0x6c, - 0xbe, 0x34, 0x78, 0xd3, 0xc4, 0x9a, 0xf6, 0xa9, 0x73, 0x7b, - 0x16, 0x97, 0x6b, 0x3a, 0xd9, 0xd8, 0xb5, 0xac, 0x8a, 0x37, - 0x85, 0xce, 0x79, 0x65, 0x61, 0x8c, 0x61, 0xb0, 0x3f, 0xbf, - 0x56, 0xfc, 0x47, 0xfb, 0x3d, 0x68, 0x36, 0x3e, 0x1c, 0xd4, - 0x2e, 0xf4, 0x8b, 0xdd, 0x5e, 0x5d, 0x42, 0x8, 0x1a, 0x48, - 0x23, 0x96, 0x58, 0xd9, 0x5d, 0x94, 0x67, 0x69, 0x2, 0x30, - 0x79, 0xc6, 0x3a, 0xd7, 0xaf, 0xe8, 0x1e, 0x1d, 0xd2, 0xbc, - 0x2f, 0xa5, 0xae, 0x9b, 0xa3, 0x5a, 0xb, 0x5b, 0x45, 0x72, - 0xe2, 0x30, 0xec, 0xff, 00, 0x31, 0xea, 0x49, 0x62, 0x49, - 0xfc, 0xeb, 0x52, 0x93, 0x5e, 0xed, 0xa3, 0xdb, 0xf1, 0xff, - 00, 0x87, 0x1a, 0x7e, 0xf5, 0xd9, 0xe4, 0xd6, 0x5e, 0x28, - 0xff, 00, 0x84, 0xb3, 0xf6, 0x78, 0xd5, 0x2f, 0x64, 0x93, - 0x7d, 0xdc, 0x3a, 0x64, 0xd6, 0xd7, 0x5e, 0xbe, 0x62, 0x26, - 0x32, 0x7e, 0xa3, 0xd, 0xf8, 0xd7, 0x57, 0xf0, 0xb7, 0xfe, - 0x49, 0x87, 0x87, 0xbf, 0xeb, 0xcd, 0x7f, 0x99, 0xab, 0x76, - 0x1e, 0x2, 0xf0, 0xd6, 0x97, 0xa5, 0xea, 0x7a, 0x65, 0x96, - 0x9a, 0x61, 0xb2, 0xd4, 0xf3, 0xf6, 0xb8, 0x45, 0xc4, 0xa5, - 0x5f, 0x20, 0x83, 0x8c, 0xb7, 0xcb, 0xc1, 0xc7, 0xcb, 0x8e, - 0xde, 0x82, 0xb5, 0xf4, 0xbd, 0x2e, 0xcf, 0x45, 0xd2, 0xed, - 0xf4, 0xdd, 0x3e, 0x1f, 0x26, 0xd2, 0xd9, 0x36, 0x45, 0x1e, - 0xe2, 0xdb, 0x57, 0xd3, 0x24, 0x92, 0x7f, 0x13, 0x56, 0xdd, - 0xdb, 0x7d, 0xed, 0xfa, 0xdf, 0xf3, 0x21, 0x2b, 0x59, 0x76, - 0xbf, 0xe9, 0x6f, 0xc8, 0xb9, 0x5e, 0x39, 0xe1, 0x7d, 0x6f, - 0x49, 0xd1, 0x7e, 0x33, 0xf8, 0xf1, 0xf5, 0x5d, 0x52, 0xca, - 0xc1, 0x65, 0x68, 0x4, 0x66, 0xea, 0xe1, 0x22, 0xe, 0x42, - 0xf3, 0x8d, 0xc4, 0x66, 0xbd, 0x8e, 0xb8, 0xcd, 0x5f, 0xe1, - 0x4f, 0x82, 0xb5, 0xdd, 0x56, 0xe3, 0x53, 0xd4, 0xb4, 0x5f, - 0x3e, 0xf2, 0xe1, 0xb7, 0x4b, 0x27, 0xda, 0xa6, 0x5d, 0xc7, - 0x18, 0xe8, 0xae, 00, 0xe0, 0x76, 0x15, 0xa, 0xea, 0x5c, - 0xde, 0x4f, 0xf1, 0x29, 0xeb, 0x1b, 0x7a, 0x1a, 0x7f, 0xf0, - 0x9d, 0xf8, 0x3f, 0xfe, 0x86, 0xbd, 0xf, 0xff, 00, 0x6, - 0x30, 0xff, 00, 0xf1, 0x54, 0xed, 0x63, 0x51, 0xb1, 0xd5, - 0x7c, 0x11, 0xab, 0x5d, 0xe9, 0xd7, 0x96, 0xf7, 0x96, 0xcd, - 0x65, 0x38, 0x59, 0xad, 0xe5, 0x59, 0x10, 0x90, 0x8c, 0xe, - 0x19, 0x49, 0x15, 0xce, 0xff, 00, 0xc2, 0x92, 0xf8, 0x79, - 0xff, 00, 0x42, 0xf7, 0xfe, 0x4e, 0xdc, 0x7f, 0xf1, 0xca, - 0xea, 0x34, 0xbf, 0xb, 0x68, 0xda, 0x2f, 0x87, 0xdb, 0x41, - 0xd3, 0xec, 0xfc, 0x9d, 0x31, 0x95, 0xd4, 0xc1, 0xe6, 0xbb, - 0x64, 0x3e, 0x77, 0x7c, 0xc4, 0x96, 0xe7, 0x27, 0xbd, 0x29, - 0xc7, 0x9a, 0x2d, 0xe, 0x2e, 0xd2, 0x4c, 0xf2, 0xf, 0xd9, - 0xba, 0x28, 0xe7, 0xd0, 0xbc, 0x47, 0xc, 0xd1, 0xac, 0x91, - 0x3c, 0xd1, 0x2b, 0xa3, 0x8c, 0x86, 0x5, 0x58, 0x10, 0x47, - 0x71, 0x5c, 0xb7, 0x8a, 0x2c, 0xaf, 0xfe, 0xb, 0x7c, 0x51, - 0x87, 0x56, 0xd2, 0x11, 0xc6, 0x91, 0x76, 0x4c, 0x91, 0xc4, - 0x9, 0x8, 0xf1, 0x93, 0xfb, 0xc8, 0x4f, 0xfb, 0xb9, 0x18, - 0xcf, 0x4c, 0xa9, 0xaf, 0xa0, 0xfc, 0x35, 0xe0, 0xdd, 0x3, - 0xc1, 0xf0, 0xdc, 0x45, 0xa0, 0xd8, 0x7d, 0x91, 0x2e, 0x18, - 0x34, 0xa3, 0xce, 0x92, 0x4d, 0xc4, 0x70, 0x3e, 0xfb, 0x1c, - 0x75, 0xed, 0x52, 0xf8, 0x8f, 0xc2, 0xda, 0x27, 0x8b, 0x6c, - 0x12, 0xcb, 0x5c, 0xb0, 0x5b, 0xbb, 0x74, 0x71, 0x22, 0x29, - 0x76, 0x42, 0xad, 0x8c, 0x64, 0x32, 0x90, 0x47, 0x5f, 0x5a, - 0xb9, 0x3f, 0x7d, 0x4a, 0x3e, 0x44, 0xc1, 0x5a, 0x2e, 0x32, - 0xf3, 0x2e, 0xe9, 0x7a, 0x95, 0xae, 0xb3, 0xa5, 0x5a, 0xea, - 0x56, 0x32, 0x9, 0x2d, 0x6e, 0xa2, 0x59, 0x62, 0x7f, 0x55, - 0x23, 0x3f, 0x81, 0xf6, 0xaf, 0x24, 0xfd, 0xa4, 0x7f, 0xe4, - 0x4a, 0xd2, 0xbf, 0xec, 0x22, 0x3f, 0xf4, 0x5b, 0xd7, 0xa9, - 0xe8, 0x1e, 0x1f, 0xd3, 0x3c, 0x31, 0xa5, 0x26, 0x99, 0xa4, - 0x5b, 0xb5, 0xbd, 0x9a, 0x31, 0x65, 0x88, 0xca, 0xf2, 0x6d, - 0x27, 0x93, 0x82, 0xe4, 0x91, 0xcf, 0x6a, 0x83, 0xc4, 0x9e, - 0x13, 0xd1, 0x3c, 0x5d, 0x65, 0x15, 0x9e, 0xbb, 0x65, 0xf6, - 0xbb, 0x78, 0xa4, 0xf3, 0x51, 0x3c, 0xd7, 0x8f, 0xd, 0x82, - 0x33, 0x94, 0x20, 0xf4, 0x26, 0xa6, 0x69, 0x3d, 0x87, 0x7, - 0x6d, 0xca, 0x9f, 0xf, 0x3f, 0xe4, 0x9c, 0xf8, 0x73, 0xfe, - 0xc1, 0xd0, 0xff, 00, 0xe8, 0x2, 0xbc, 0x16, 0xfe, 0x5b, - 0xbf, 0x83, 0x9f, 0x1a, 0x67, 0xd4, 0xe7, 0xb4, 0x96, 0x6d, - 0x2a, 0xf1, 0xe4, 0x75, 0x28, 0x31, 0xe6, 0x41, 0x21, 0xcb, - 0x5, 0x3d, 0x37, 0x21, 0xc7, 0x1c, 0x74, 0x1d, 0x3, 0x3, - 0x5f, 0x4b, 0x69, 0xda, 0x7d, 0xae, 0x95, 0xa7, 0x5b, 0x69, - 0xf6, 0x51, 0x79, 0x56, 0xb6, 0xd1, 0xac, 0x51, 0x47, 0xb8, - 0xb6, 0xd5, 0x3, 00, 0x64, 0x92, 0x4f, 0xe3, 0x51, 0x6a, - 0xba, 0x3e, 0x9b, 0xae, 0x59, 0x1b, 0x3d, 0x56, 0xc2, 0xde, - 0xf6, 0xdc, 0x9c, 0xf9, 0x73, 0xc6, 0x1c, 0x3, 0x82, 0x32, - 0x33, 0xd0, 0xe0, 0x9e, 0x47, 0x23, 0x35, 0x53, 0x77, 0xa9, - 0xcf, 0x1f, 0x3f, 0xc4, 0x51, 0x5e, 0xe7, 0x2b, 0x3c, 0xf7, - 0x55, 0xf8, 0xf5, 0xe0, 0xab, 0x4d, 0x1e, 0x5b, 0x9d, 0x3e, - 0xf2, 0x6b, 0xeb, 0xdd, 0x99, 0x8e, 0xd0, 0x5b, 0xc8, 0x84, - 0xb1, 0xe8, 0x19, 0x99, 0x42, 0x80, 0xf, 0x52, 0x9, 0xf6, - 0xcd, 0x71, 0x7f, 0x2, 0x34, 0xd, 0x4b, 0x57, 0xf1, 0x66, - 0xa5, 0xe3, 0x8d, 0x46, 0x26, 0x48, 0xa4, 0xf3, 0x4, 0x4e, - 0x53, 0x2, 0x69, 0x64, 0x6c, 0xb9, 0x5c, 0xf6, 0x5e, 0x47, - 0xe3, 0x8e, 0xc6, 0xbd, 0x2a, 0xd7, 0xe0, 0xdf, 0xc3, 0xfb, - 0x4b, 0xa8, 0xee, 0x23, 0xf0, 0xec, 0x4c, 0xf1, 0xb6, 0xe5, - 0x12, 0xdc, 0x4d, 0x22, 0x13, 0xee, 0xac, 0xe5, 0x48, 0xf6, - 0x20, 0x8a, 0xed, 0xe1, 0x86, 0x2b, 0x78, 0x23, 0x86, 0x8, - 0xd2, 0x28, 0xa3, 0x50, 0xa8, 0x88, 0xa1, 0x55, 0x54, 0x70, - 00, 0x3, 0xa0, 0xa1, 0x59, 0x3e, 0x6e, 0xa0, 0xee, 0xd7, - 0x2f, 0x43, 0xc7, 0x7c, 0x49, 0xf1, 0x83, 0x5a, 0xf0, 0x5f, - 0xc4, 0x89, 0x34, 0x7d, 0x7f, 0x4b, 0xb6, 0xfe, 0xc2, 0x27, - 0x7c, 0x53, 0x5b, 0xc6, 0xde, 0x73, 0x44, 0xc3, 0xe5, 0x70, - 0x4b, 0xed, 0x38, 0x39, 0x4, 0x60, 0x74, 0x35, 0x91, 0xf1, - 0x13, 0xc5, 0xff, 00, 0x8, 0xfc, 0x41, 0xe1, 0xfd, 0x42, - 0x68, 0x21, 0x86, 0xf7, 0x5a, 0x91, 0x49, 0x82, 0x5b, 0x7b, - 0x39, 0x20, 0x94, 0xca, 0x54, 0xaa, 0xb3, 0xc8, 0x55, 0x77, - 0x28, 0xe0, 0x90, 0xc4, 0xf4, 0xe8, 0x6b, 0xda, 0x75, 0xcf, - 0xe, 0xe8, 0xfe, 0x25, 0xb1, 0x36, 0x7a, 0xce, 0x9d, 0x6f, - 0x7b, 0x7, 0x3b, 0x44, 0xab, 0xca, 0x67, 0x82, 0x55, 0xba, - 0xa9, 0xf7, 0x4, 0x1a, 0xe6, 0x2d, 0x3e, 0xe, 0x7c, 0x3f, - 0xb2, 0xba, 0x8e, 0xe6, 0x2f, 0xe, 0x44, 0xcf, 0x19, 0xc8, - 0x13, 0x4f, 0x2c, 0xa8, 0x7e, 0xa8, 0xee, 0x54, 0xfe, 0x20, - 0xd4, 0x5a, 0xea, 0xcf, 0xef, 0x2a, 0xf6, 0x77, 0x47, 0x37, - 0xfb, 0x3b, 0xda, 0x5f, 0x5b, 0x78, 0x12, 0xee, 0x5b, 0x94, - 0x74, 0xb6, 0xb8, 0xbc, 0x67, 0xb6, 0xdc, 0x31, 0xb9, 0x76, - 0xa8, 0x66, 0x1e, 0xd9, 0x18, 0xfc, 0xd, 0x7a, 0xf5, 0x32, - 0x28, 0xa3, 0x82, 0x24, 0x8a, 0x24, 0x58, 0xe3, 0x45, 0xa, - 0x88, 0x83, 0x1, 0x40, 0xe0, 00, 0x3b, 0xa, 0x7d, 0x69, - 0x27, 0x76, 0x44, 0x55, 0x90, 0x51, 0x45, 0x15, 0x25, 0x5, - 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, - 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, - 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, - 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, 0x66, 0x6b, 0xba, 0xe5, - 0xae, 0x83, 0xa7, 0xb5, 0xcd, 0xc1, 0xdc, 0xc7, 0x88, 0xa2, - 0x7, 0x99, 0x1b, 0xd0, 0x7f, 0x53, 0x56, 0x35, 0x2b, 0xf8, - 0xb4, 0xbd, 0x3a, 0x7b, 0xd9, 0x83, 0x18, 0xe2, 0x5c, 0x90, - 0xa3, 0x93, 0xce, 00, 0xfc, 0xcd, 0x78, 0xb6, 0xb1, 0xac, - 0x5d, 0x6b, 0x7a, 0x83, 0xdd, 0xdd, 0x37, 0x27, 0x84, 0x41, - 0xf7, 0x63, 0x5f, 0x41, 0xfe, 0x79, 0xaf, 0x47, 0x2f, 0xc0, - 0xbc, 0x4c, 0xb9, 0xa5, 0xf0, 0xad, 0xff, 00, 0xc8, 0xe2, - 0xc6, 0x62, 0xd5, 0x8, 0xd9, 0x7c, 0x4c, 0x66, 0xa7, 0xa9, - 0xdd, 0x6a, 0xf7, 0xf2, 0x5e, 0x5d, 0xbe, 0xe9, 0x1f, 0xa0, - 0x1d, 0x10, 0x76, 0x3, 0xda, 0xa9, 0xd1, 0x45, 0x7d, 0x6c, - 0x62, 0xa2, 0x94, 0x62, 0xac, 0x91, 0xf3, 0xcd, 0xb9, 0x3b, - 0xb0, 0xa2, 0x8a, 0x2a, 0x84, 0x15, 0xb3, 0xe1, 0xcf, 0xf, - 0x5c, 0x78, 0x82, 0xfb, 0xcb, 0x4c, 0xc7, 0x6d, 0x19, 0x6, - 0x69, 0xb1, 0xf7, 0x47, 0xa0, 0xf7, 0x35, 0x16, 0x83, 0xa1, - 0x5c, 0xeb, 0xfa, 0x80, 0xb7, 0x83, 0xe5, 0x8d, 0x79, 0x96, - 0x62, 0x38, 0x45, 0xff, 00, 0x1f, 0x41, 0x5e, 0xc9, 0xa6, - 0xe9, 0xb6, 0xba, 0x55, 0x8c, 0x76, 0x76, 0x91, 0xec, 0x89, - 0x7, 0xe2, 0xc7, 0xb9, 0x27, 0xb9, 0x35, 0xe5, 0x66, 0x39, - 0x82, 0xc3, 0xae, 0x48, 0x7c, 0x4f, 0xf0, 0x3b, 0xf0, 0x58, - 0x37, 0x59, 0xf3, 0x4b, 0xe1, 0xfc, 0xc7, 0xd8, 0xd8, 0xdb, - 0xe9, 0xd6, 0x71, 0xda, 0x5a, 0xc4, 0x23, 0x86, 0x31, 0x85, - 0x51, 0xfc, 0xcf, 0xbd, 0x58, 0xa2, 0x8a, 0xf9, 0x56, 0xdb, - 0x77, 0x67, 0xbe, 0x92, 0x4a, 0xc8, 0x28, 0xa2, 0x8a, 0x43, - 0xa, 0x28, 0xa2, 0x80, 0xa, 0x64, 0x91, 0xa4, 0xd1, 0xb4, - 0x72, 0x22, 0xba, 0x38, 0x2a, 0xca, 0xc3, 0x20, 0x83, 0xd8, - 0xd3, 0xe8, 0xa0, 0xf, 0x23, 0xf1, 0x6f, 0x85, 0x5f, 0x43, - 0xb8, 0x37, 0x36, 0xca, 0xcd, 0xa7, 0xc8, 0xdc, 0x1e, 0xa6, - 0x23, 0xfd, 0xd3, 0xed, 0xe8, 0x6b, 0x98, 0xaf, 0x7e, 0xb8, - 0xb7, 0x8a, 0xea, 0x9, 0x20, 0x9e, 0x35, 0x92, 0x29, 0x1, - 0x57, 0x46, 0x19, 0x4, 0x57, 0x91, 0x78, 0xab, 0xc3, 0x12, - 0xf8, 0x7e, 0xeb, 0xcc, 0x8b, 0x74, 0x96, 0x12, 0x9f, 0xdd, - 0xc8, 0x79, 0x28, 0x7f, 0xba, 0xde, 0xfe, 0x87, 0xbd, 0x7d, - 0x3e, 0x59, 0x98, 0xfb, 0x55, 0xec, 0xaa, 0xbf, 0x7b, 0xa7, - 0x9f, 0xfc, 0x13, 0xc2, 0xc7, 0x60, 0xfd, 0x9b, 0xf6, 0x90, - 0xdb, 0xf2, 0x39, 0xea, 0x28, 0xa2, 0xbd, 0x93, 0xcd, 0xa, - 0x92, 0xde, 0xe2, 0x6b, 0x4b, 0x88, 0xee, 0x2d, 0xe4, 0x68, - 0xe6, 0x8d, 0xb7, 0x23, 0xaf, 0x50, 0x6a, 0x3a, 0x29, 0x34, - 0x9a, 0xb3, 0x4, 0xed, 0xaa, 0x3d, 0x8f, 0xc2, 0xde, 0x27, - 0x87, 0xc4, 0x16, 0x9b, 0x5f, 0x6c, 0x77, 0xb1, 0xf, 0xde, - 0xc4, 0x3b, 0xff, 00, 0xb4, 0xbe, 0xdf, 0xca, 0xba, 0xa, - 0xf0, 0x3b, 0x3b, 0xcb, 0x8d, 0x3e, 0xee, 0x3b, 0xab, 0x59, - 0xc, 0x73, 0x46, 0x72, 0xac, 0x3f, 0x91, 0xf5, 0x1e, 0xd5, - 0xec, 0xde, 0x1c, 0xd6, 0xd3, 0x5f, 0xd2, 0x56, 0xec, 0x46, - 0x63, 0x90, 0x37, 0x97, 0x2a, 0x76, 0xc, 00, 0x27, 0x1e, - 0xdc, 0x8a, 0xf9, 0x5c, 0xcb, 0x2f, 0xfa, 0xbb, 0xf6, 0x90, - 0xf8, 0x5f, 0xe0, 0x7b, 0xf8, 0x2c, 0x5f, 0xb5, 0x5c, 0x92, - 0xf8, 0x97, 0xe2, 0x6b, 0x56, 0x76, 0xa9, 0xff, 00, 0x2c, - 0x3e, 0xad, 0xfc, 0xab, 0x46, 0xb3, 0xb5, 0x4f, 0xf9, 0x61, - 0xf5, 0x6f, 0xe5, 0x5e, 0x51, 0xe8, 0x17, 0x2d, 0xff, 00, - 0xd4, 0x27, 0xd2, 0xa5, 0xa8, 0xad, 0xff, 00, 0xd4, 0x27, - 0xd2, 0xa5, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, - 0xa0, 0x3, 0x38, 0xc9, 0xaf, 0x39, 0xf1, 0xd, 0xff, 00, - 0x99, 0xaa, 0xcb, 0x83, 0xf2, 0x8e, 0x5, 0x7a, 0xd, 0xc4, - 0x82, 0x2b, 0x69, 0x1c, 0x9c, 00, 0xa6, 0xbc, 0x62, 0xfa, - 0xf4, 0xc9, 0x73, 0x2b, 0x93, 0xd5, 0xcd, 0x54, 0x4c, 0xaa, - 0x32, 0xc4, 0x97, 0x7e, 0xf5, 0xd8, 0xf8, 0x6, 0xe4, 0x49, - 0x6f, 0x70, 0x99, 0xe7, 0x76, 0x6b, 0xcc, 0xa5, 0xba, 0xf7, - 0xae, 0xbb, 0xe1, 0xb5, 0xf8, 0x6d, 0x5a, 0x6b, 0x6c, 0xf5, - 0x42, 0xd5, 0x72, 0x5a, 0x19, 0xc2, 0x5e, 0xf1, 0xea, 0x54, - 0x8d, 0xf7, 0x4f, 0xd2, 0x96, 0xa3, 0xb8, 0x71, 0x15, 0xbc, - 0x8e, 0x7b, 0x3, 0x59, 0x1d, 0x2c, 0xf0, 0xfd, 0x72, 0x1f, - 0x37, 0x58, 0xb9, 0x7c, 0x7f, 0x19, 0xac, 0x79, 0xad, 0x72, - 0xa4, 0x62, 0xba, 0xab, 0xcb, 0x6f, 0x32, 0xea, 0x67, 0xc7, - 0xde, 0x72, 0x6b, 0x3e, 0x5b, 0x5f, 0x6a, 0xe8, 0x47, 0x9d, - 0x25, 0xa9, 0xdd, 0xfc, 0x34, 0xbb, 0x32, 0xe8, 0x8f, 0x6c, - 0x4f, 0xfa, 0x86, 0xc0, 0xae, 0xde, 0xbc, 0xd7, 0xe1, 0xe4, - 0xa6, 0xdf, 0x50, 0x9e, 0xdf, 0xb4, 0x9c, 0xe2, 0xbd, 0x2a, - 0xb1, 0x96, 0xe7, 0x6d, 0x27, 0xee, 0x20, 0xa2, 0x8a, 0x2a, - 0x4d, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0xa1, 0xb9, 0xfb, 0x95, - 0x35, 0x43, 0x73, 0xf7, 0x28, 0x2, 0x6a, 0x28, 0xa2, 0x80, - 0xa, 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa2, 0x80, 0xa, 0x28, - 0xa2, 0x80, 0x3c, 0xce, 0xd7, 0xfe, 0x42, 0x9a, 0xe7, 0xfd, - 0x84, 0xe6, 0xfe, 0x95, 0xde, 0x68, 0x9f, 0xf2, 0x7, 0x83, - 0xfe, 0x5, 0xff, 00, 0xa1, 0x1a, 0xe0, 0xed, 0x7f, 0xe4, - 0x29, 0xae, 0x7f, 0xd8, 0x4e, 0x6f, 0xe9, 0x5d, 0xe6, 0x89, - 0xff, 00, 0x20, 0x78, 0x3f, 0xe0, 0x5f, 0xfa, 0x11, 0xa0, - 0xc, 0xff, 00, 0x3, 0xff, 00, 0xc8, 0x97, 0xa5, 0xff, - 00, 0xd7, 0x2f, 0xfd, 0x98, 0xd7, 0x41, 0x5c, 0xff, 00, - 0x81, 0xff, 00, 0xe4, 0x4b, 0xd2, 0xff, 00, 0xeb, 0x97, - 0xfe, 0xcc, 0x6b, 0xa0, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0xc, 0x2f, 0x19, 0x7f, 0xc8, 0xa7, 0x7f, - 0xfe, 0xea, 0xff, 00, 0xe8, 0x6b, 0x5e, 0x33, 0x5e, 0xcd, - 0xe3, 0x2f, 0xf9, 0x14, 0xef, 0xff, 00, 0xdd, 0x5f, 0xfd, - 0xd, 0x6b, 0xc6, 0x6b, 0xe9, 0xf2, 0x4f, 0xe0, 0x4b, 0xd7, - 0xf4, 0x47, 0x85, 0x9a, 0x7f, 0x15, 0x7a, 0x7e, 0xac, 0x28, - 0xa2, 0x8a, 0xf6, 0x4f, 0x34, 0x2b, 0x43, 0x46, 0xd1, 0xee, - 0xb5, 0xcd, 0x41, 0x6d, 0x2d, 0x57, 0xde, 0x49, 0x8, 0xf9, - 0x63, 0x5f, 0x53, 0xfe, 0x1d, 0xea, 0x8c, 0x51, 0x99, 0x66, - 0x8e, 0x30, 0x40, 0x2e, 0xc1, 0x41, 0x3d, 0xb2, 0x71, 0x5e, - 0xdd, 0xa1, 0xe8, 0x96, 0xba, 0x16, 0x9e, 0xb6, 0xb6, 0xe3, - 0x2c, 0x79, 0x92, 0x52, 0x3e, 0x69, 0x1b, 0xd4, 0xff, 00, - 0x41, 0xda, 0xbc, 0xfc, 0xc3, 0x1b, 0xf5, 0x68, 0x7b, 0xbf, - 0x13, 0xd8, 0xec, 0xc1, 0xe1, 0x7d, 0xbc, 0xb5, 0xd9, 0x12, - 0x69, 0x1a, 0x45, 0xae, 0x8b, 0xa7, 0xa5, 0xa5, 0xaa, 0x61, - 0x47, 0x2c, 0xc7, 0xef, 0x3b, 0x77, 0x26, 0xaf, 0xd7, 0x7, - 0xe2, 0xf, 0x8a, 0x16, 0x3e, 0x1f, 0xd7, 0x2e, 0x74, 0xb9, - 0xb4, 0xdb, 0xa9, 0xa4, 0x83, 0x6e, 0x5d, 0x19, 0x40, 0x39, - 0x50, 0x7b, 0x9f, 0x7a, 0xcd, 0xff, 00, 0x85, 0xd3, 0xa6, - 0xff, 00, 0xd0, 0x1e, 0xf7, 0xfe, 0xfb, 0x4f, 0xf1, 0xaf, - 0x91, 0x94, 0x9c, 0x9b, 0x94, 0x9d, 0xdb, 0x3e, 0x8a, 0x31, - 0x51, 0x56, 0x5b, 0x1e, 0x9d, 0x45, 0x79, 0x8f, 0xfc, 0x2e, - 0x9d, 0x37, 0xfe, 0x80, 0xf7, 0xbf, 0xf7, 0xda, 0x7f, 0x8d, - 0x1f, 0xf0, 0xba, 0x74, 0xdf, 0xfa, 0x3, 0xde, 0xff, 00, - 0xdf, 0x69, 0xfe, 0x35, 0x23, 0x3d, 0x3a, 0x8a, 0xe2, 0x3c, - 0x33, 0xf1, 0x2a, 0xcb, 0xc4, 0xda, 0xda, 0x69, 0x90, 0x69, - 0xd7, 0x30, 0x3b, 0x46, 0xcf, 0xbe, 0x46, 0x52, 0x3e, 0x5f, - 0xa1, 0xf7, 0xa8, 0xb4, 0xff, 00, 0x8a, 0x16, 0x3a, 0x84, - 0x3a, 0xac, 0x89, 0xa6, 0xdd, 0x20, 0xd3, 0xa0, 0x33, 0xb8, - 0x66, 0x5f, 0x9c, 0x6, 0xdb, 0x81, 0xcf, 0x5a, 00, 0xef, - 0x28, 0xae, 0x22, 0xdb, 0xe2, 0x4d, 0x95, 0xd7, 0x85, 0x6f, - 0xb5, 0xe5, 0xd3, 0xae, 0x56, 0x1b, 0x49, 0x96, 0x16, 0x88, - 0xb2, 0xee, 0x62, 0xdb, 0x79, 0x1c, 0xe3, 0xf8, 0xab, 0x23, - 0xfe, 0x17, 0x4e, 0x9b, 0xff, 00, 0x40, 0x7b, 0xdf, 0xfb, - 0xed, 0x3f, 0xc6, 0x80, 0x3d, 0x3a, 0x8a, 0xe4, 0xfc, 0x23, - 0xe3, 0xdb, 0x2f, 0x17, 0x5d, 0xdc, 0xda, 0xc1, 0x6b, 0x3d, - 0xb4, 0xb0, 0x20, 0x93, 0x12, 0x95, 0x3b, 0x94, 0x9c, 0x1c, - 0x63, 0xd3, 0x8f, 0xce, 0xba, 0xca, 00, 0x2a, 0xb, 0xcb, - 0x48, 0x2f, 0xad, 0x24, 0xb6, 0xb9, 0x8c, 0x49, 0xc, 0x83, - 0x6b, 0x29, 0xef, 0x50, 0xea, 0xda, 0x94, 0x3a, 0x36, 0x91, - 0x77, 0xa8, 0xdc, 0x64, 0xc5, 0x6d, 0x19, 0x91, 0x80, 0xea, - 0x71, 0xd8, 0x7b, 0x9e, 0x95, 0xc3, 0xe9, 0xbf, 0x16, 0xec, - 0xf5, 0x4d, 0x4e, 0xd6, 0xc2, 0xdf, 0x47, 0xbc, 0xf3, 0xae, - 0x65, 0x58, 0xd7, 0x2e, 0x98, 0x4, 0x9e, 0xa7, 0x9e, 0x83, - 0xaf, 0xe1, 0x4d, 0x36, 0x9d, 0xd0, 0x9a, 0x4d, 0x59, 0x9c, - 0xe7, 0x89, 0x7c, 0x39, 0x3f, 0x87, 0xef, 0x76, 0x9c, 0xc9, - 0x69, 0x21, 0xfd, 0xcc, 0xbf, 0xfb, 0x29, 0xf7, 0x1f, 0xad, - 0x62, 0x57, 0xbc, 0xea, 0x1a, 0x7d, 0xb6, 0xa7, 0x65, 0x25, - 0xa5, 0xdc, 0x62, 0x48, 0x64, 0x18, 0x23, 0xb8, 0xf7, 0x1e, - 0x86, 0xbc, 0x4f, 0x57, 0xd3, 0xff, 00, 0xb2, 0xb5, 0x7b, - 0xab, 0x1f, 0x33, 0xcc, 0x10, 0xbe, 0xd0, 0xf8, 0xc6, 0x46, - 0x32, 0x3f, 0x9d, 0x7d, 0x5e, 0x5b, 0x8f, 0xfa, 0xc4, 0x79, - 0x27, 0xf1, 0x2f, 0xc4, 0xf0, 0x31, 0xb8, 0x4f, 0x62, 0xf9, - 0xa3, 0xf0, 0xb2, 0x95, 0x14, 0x51, 0x5e, 0xa1, 0xc0, 0x15, - 0xea, 0x7f, 0xd, 0xff, 00, 0xe4, 0x5c, 0x9f, 0xfe, 0xbe, - 0x9b, 0xff, 00, 0x41, 0x4a, 0xf2, 0xca, 0xf5, 0x3f, 0x86, - 0xff, 00, 0xf2, 0x2e, 0x4f, 0xff, 00, 0x5f, 0x4d, 0xff, - 00, 0xa0, 0xa5, 0x79, 0x79, 0xc7, 0xfb, 0xb3, 0xf5, 0x47, - 0x7e, 0x5b, 0xfc, 0x7f, 0x93, 0x3b, 0xa, 0xce, 0xd5, 0x3f, - 0xe5, 0x87, 0xd5, 0xbf, 0x95, 0x68, 0xd6, 0x76, 0xa9, 0xff, - 00, 0x2c, 0x3e, 0xad, 0xfc, 0xab, 0xe4, 0xcf, 0xa0, 0x2e, - 0x5b, 0xff, 00, 0xa8, 0x4f, 0xa5, 0x4b, 0x51, 0x5b, 0xff, - 00, 0xa8, 0x4f, 0xa5, 0x4b, 0x40, 0x5, 0x14, 0x51, 0x40, - 0x5, 0x14, 0x51, 0x40, 0x19, 0x3e, 0x25, 0x9f, 0xec, 0xda, - 0x5, 0xd4, 0xb9, 0xc6, 0x16, 0xbc, 0x3a, 0xe2, 0xe7, 0x25, - 0x8e, 0x7a, 0x9c, 0xd7, 0xaf, 0x78, 0xfe, 0xe3, 0xc9, 0xf0, - 0xc4, 0xcb, 0xfd, 0xfe, 0x2b, 0xc3, 0x27, 0x9f, 0x8e, 0xb5, - 0xac, 0x16, 0x87, 0x35, 0x67, 0xa8, 0xf9, 0xae, 0x7a, 0xf3, - 0x57, 0xbc, 0x2b, 0xae, 0x7f, 0x65, 0xf8, 0x96, 0xda, 0x5d, - 0xd8, 0x57, 0x60, 0x8c, 0x7d, 0xab, 0x9b, 0x9e, 0x7c, 0x93, - 0xcd, 0x53, 0x79, 0xc8, 0x39, 0xd, 0x82, 0x39, 0x6, 0xa9, - 0x98, 0xc5, 0xbb, 0xdc, 0xfa, 0xe5, 0x1d, 0x64, 0x8d, 0x5d, - 0x8, 0x2a, 0xc3, 0x20, 0x8a, 0xa3, 0xac, 0x4b, 0xe5, 0xd8, - 0x3a, 0xf7, 0x71, 0x81, 0x5c, 0x1f, 0xc3, 0x1f, 0x1e, 0x45, - 0xab, 0xd9, 0xae, 0x93, 0x78, 0xdb, 0x6e, 0xe0, 0x5c, 0x2b, - 0x1e, 0x8c, 0xb5, 0xd9, 0xdf, 0xee, 0xb8, 0x93, 0x4, 0x7c, - 0xa3, 0xa5, 0x65, 0x6d, 0x4e, 0xc7, 0x2b, 0xc4, 0xe4, 0x24, - 0xb4, 0xe3, 0xa7, 0x35, 0x9f, 0x3d, 0xae, 0x33, 0xc5, 0x75, - 0x72, 0xdb, 0x70, 0x78, 0xac, 0xdb, 0x8b, 0x7e, 0xbc, 0x56, - 0x89, 0x9c, 0xee, 0x26, 0x7f, 0x86, 0x3f, 0xd1, 0xbc, 0x45, - 0x13, 0x76, 0x20, 0x8a, 0xf4, 0xfa, 0xf3, 0x4b, 0x44, 0xf2, - 0x75, 0x48, 0x5b, 0xa7, 0xcc, 0x5, 0x7a, 0x50, 0xe8, 0x2a, - 0x26, 0x6b, 0x47, 0x61, 0x68, 0xa2, 0x8a, 0x83, 0x60, 0xa2, - 0x8a, 0x28, 00, 0xa8, 0x2e, 0x7e, 0xe5, 0x4f, 0x50, 0xdc, - 0x7d, 0xca, 00, 0x9a, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0xf, - 0x33, 0xb5, 0xff, 00, 0x90, 0xa6, 0xb9, 0xff, 00, 0x61, - 0x39, 0xbf, 0xa5, 0x77, 0x9a, 0x27, 0xfc, 0x81, 0xe0, 0xff, - 00, 0x81, 0x7f, 0xe8, 0x46, 0xb8, 0x3b, 0x5f, 0xf9, 0xa, - 0x6b, 0x9f, 0xf6, 0x13, 0x9b, 0xfa, 0x57, 0x79, 0xa2, 0x7f, - 0xc8, 0x1e, 0xf, 0xf8, 0x17, 0xfe, 0x84, 0x68, 0x3, 0x3f, - 0xc0, 0xff, 00, 0xf2, 0x25, 0xe9, 0x7f, 0xf5, 0xcb, 0xff, - 00, 0x66, 0x35, 0xd0, 0x57, 0x3f, 0xe0, 0x7f, 0xf9, 0x12, - 0xf4, 0xbf, 0xfa, 0xe5, 0xff, 00, 0xb3, 0x1a, 0xe8, 0x28, - 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, - 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, - 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, - 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, - 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, - 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, - 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, - 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, - 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 0x3, 0xb, - 0xc6, 0x5f, 0xf2, 0x29, 0xdf, 0xff, 00, 0xba, 0xbf, 0xfa, - 0x1a, 0xd7, 0x8c, 0xd7, 0xb3, 0x78, 0xcb, 0xfe, 0x45, 0x3b, - 0xff, 00, 0xf7, 0x57, 0xff, 00, 0x43, 0x5a, 0xf1, 0x9a, - 0xfa, 0x7c, 0x93, 0xf8, 0x12, 0xf5, 0xfd, 0x11, 0xe1, 0x66, - 0x9f, 0xc5, 0x5e, 0x9f, 0xab, 0xa, 0x28, 0xa2, 0xbd, 0x93, - 0xcd, 0x26, 0xb4, 0xff, 00, 0x8f, 0xeb, 0x6f, 0xfa, 0xec, - 0x9f, 0xfa, 0x10, 0xaf, 0x7d, 0xaf, 0x2, 0xb4, 0xff, 00, - 0x8f, 0xeb, 0x6f, 0xfa, 0xec, 0x9f, 0xfa, 0x10, 0xaf, 0x7d, - 0xaf, 0x9d, 0xcf, 0x7e, 0x28, 0x7c, 0xff, 00, 0x43, 0xd9, - 0xca, 0xb6, 0x97, 0xc8, 0xe2, 0x75, 0xdf, 0x86, 0x5a, 0x4e, - 0xbf, 0xac, 0xdc, 0x6a, 0x77, 0x37, 0x77, 0xb1, 0xcd, 0x3e, - 0xdd, 0xcb, 0x1b, 0x28, 0x51, 0x80, 0x7, 0x19, 0x53, 0xe9, - 0x5e, 0x7f, 0xf1, 0x3, 0xc0, 0xda, 0x77, 0x84, 0xb4, 0xfb, - 0x3b, 0x8b, 0x2b, 0x8b, 0xa9, 0x5a, 0x79, 0x8c, 0x6c, 0x26, - 0x65, 0x20, 00, 0xa4, 0xf1, 0x80, 0x2b, 0xdd, 0xab, 0xcc, - 0x7e, 0x34, 0xff, 00, 0xc8, 0x17, 0x4a, 0xff, 00, 0xaf, - 0xa6, 0xff, 00, 0xd0, 0xd, 0x78, 0x27, 0xac, 0x71, 0x5f, - 0xf, 0xfc, 0x25, 0x65, 0xe2, 0xdb, 0xcb, 0xe8, 0x6f, 0x67, - 0xb8, 0x89, 0x6d, 0xe3, 0x47, 0x53, 0x9, 00, 0x92, 0x49, - 0x1c, 0xe4, 0x1f, 0x4a, 0xdd, 0xf1, 0x9f, 0xc3, 0x7d, 0x2b, - 0xc3, 0x7e, 0x19, 0x9f, 0x53, 0xb5, 0xbb, 0xbc, 0x92, 0x68, - 0xdd, 0x14, 0x2c, 0xac, 0xa5, 0x7e, 0x66, 00, 0xf4, 0x51, - 0xeb, 0x4f, 0xf8, 0x2b, 0xff, 00, 0x21, 0x4d, 0x5f, 0xfe, - 0xb8, 0x47, 0xff, 00, 0xa1, 0x35, 0x75, 0xff, 00, 0x15, - 0x7f, 0xe4, 0x41, 0xbb, 0xff, 00, 0xae, 0xb1, 0x7f, 0xe8, - 0x62, 0x80, 0x3c, 0xdb, 0xe1, 0x47, 0xfc, 0x8f, 0xb0, 0x7f, - 0xd7, 0xb4, 0xbf, 0xc8, 0x57, 0x5b, 0xa5, 0x7c, 0x30, 0xd4, - 0x74, 0xfb, 0x7d, 0x72, 0x37, 0xd4, 0x6d, 0x5c, 0xea, 0x36, - 0xad, 0x2, 0x15, 0x46, 0xf9, 0x9, 0x6d, 0xd9, 0x35, 0xc9, - 0x7c, 0x28, 0xff, 00, 0x91, 0xf6, 0xf, 0xfa, 0xf6, 0x97, - 0xf9, 0xa, 0xf7, 0xda, 00, 0xf2, 0x2d, 0x5b, 0xc2, 0x97, - 0x3e, 0x12, 0xf8, 0x5b, 0xac, 0xda, 0xdd, 0x5c, 0xc3, 0x70, - 0xd3, 0x5d, 0x45, 0x28, 0x68, 0x94, 0x80, 0x6, 0xe4, 0x18, - 0xe7, 0xe9, 0x5e, 0x73, 0xa4, 0xe9, 0x8f, 0xaa, 0xcd, 0x75, - 0xc, 0x79, 0xf3, 0x22, 0xb4, 0x96, 0xe1, 00, 0xfe, 0x22, - 0x80, 0x1c, 0x7e, 0x59, 0xaf, 0x71, 0xf8, 0xa5, 0xff, 00, - 0x22, 0x5, 0xf7, 0xfb, 0xf1, 0x7f, 0xe8, 0xc5, 0xaf, 0x32, - 0xf8, 0x54, 0xa1, 0xbc, 0x77, 0x2, 0xb0, 0x4, 0x1b, 0x79, - 0x41, 0x7, 0xbf, 0x2, 0x80, 0x33, 0xfc, 0x1, 0xab, 0x7f, - 0x64, 0xf8, 0xd3, 0x4e, 0x9c, 0xb6, 0x22, 0x99, 0xfe, 0xcf, - 0x21, 0xcf, 0x1b, 0x5f, 0x81, 0xfa, 0xed, 0x35, 0xf4, 0x7d, - 0x7c, 0xc3, 0xe2, 0x5d, 0x29, 0xf4, 0x1f, 0x12, 0xdf, 0xe9, - 0xeb, 0x95, 0x10, 0x4c, 0x4c, 0x27, 0xfd, 0x83, 0xf3, 0x21, - 0xfc, 0x88, 0xfc, 0xab, 0xe8, 0xbf, 0xe, 0xea, 0x83, 0x5a, - 0xf0, 0xed, 0x86, 0xa2, 0xf, 0x33, 0xc2, 0xac, 0xde, 0xcd, - 0xd1, 0x87, 0xe6, 0xd, 00, 0x71, 0xbf, 0x18, 0x75, 0x5f, - 0xb2, 0xf8, 0x6e, 0xdf, 0x4d, 0x46, 0xc3, 0xde, 0xcc, 0xb, - 00, 0x7f, 0x81, 0x39, 0x3f, 0xae, 0xda, 0xe5, 0x7e, 0x10, - 0x68, 0xff, 00, 0x6c, 0xf1, 0x1c, 0xfa, 0x9c, 0x8b, 0x98, - 0xec, 0x62, 0xda, 0x87, 0xfe, 0x9a, 0x3f, 0x1f, 0xa2, 0x83, - 0xf9, 0xd5, 0xf, 0x8a, 0x7a, 0xb7, 0xf6, 0x8f, 0x8d, 0x26, - 0x81, 0x5b, 0x31, 0x58, 0xc6, 0x20, 0x1f, 0xef, 0x7d, 0xe6, - 0xfd, 0x4e, 0x3f, 0xa, 0xf4, 0xff, 00, 0x86, 0x9a, 0x3f, - 0xf6, 0x47, 0x82, 0xed, 0x59, 0xd7, 0x6c, 0xf7, 0x84, 0xdc, - 0xc9, 0x91, 0xcf, 0xcd, 0xf7, 0x47, 0xfd, 0xf2, 0x5, 00, - 0x75, 0xf5, 0xe2, 0xde, 0x2e, 0xff, 00, 0x91, 0xb3, 0x52, - 0xff, 00, 0xae, 0xa3, 0xff, 00, 0x41, 0x15, 0xed, 0x35, - 0xe2, 0xde, 0x2e, 0xff, 00, 0x91, 0xb3, 0x52, 0xff, 00, - 0xae, 0xa3, 0xff, 00, 0x41, 0x15, 0xec, 0xe4, 0x9f, 0xc7, - 0x97, 0xa7, 0xea, 0x8f, 0x33, 0x34, 0xfe, 0x12, 0xf5, 0xfd, - 0xc, 0x5a, 0x28, 0xa2, 0xbe, 0x9c, 0xf0, 0xc2, 0xbd, 0x4f, - 0xe1, 0xbf, 0xfc, 0x8b, 0x93, 0xff, 00, 0xd7, 0xd3, 0x7f, - 0xe8, 0x29, 0x5e, 0x59, 0x5e, 0xa7, 0xf0, 0xdf, 0xfe, 0x45, - 0xc9, 0xff, 00, 0xeb, 0xe9, 0xbf, 0xf4, 0x14, 0xaf, 0x2f, - 0x38, 0xff, 00, 0x76, 0x7e, 0xa8, 0xef, 0xcb, 0x7f, 0x8f, - 0xf2, 0x67, 0x61, 0x59, 0xda, 0xa7, 0xfc, 0xb0, 0xfa, 0xb7, - 0xf2, 0xad, 0x1a, 0xce, 0xd5, 0x3f, 0xe5, 0x87, 0xd5, 0xbf, - 0x95, 0x7c, 0x99, 0xf4, 0x5, 0xcb, 0x7f, 0xf5, 0x9, 0xf4, - 0xa9, 0x6a, 0x2b, 0x7f, 0xf5, 0x9, 0xf4, 0xa9, 0x68, 00, - 0xa2, 0x8a, 0x28, 00, 0xac, 0xed, 0x53, 0x59, 0xb6, 0xd2, - 0xe2, 0x26, 0x56, 0x6, 0x4e, 0xc8, 0x3a, 0x9a, 0xc9, 0xf1, - 0x27, 0x8b, 0x6d, 0xf4, 0x85, 0x30, 0x40, 0x44, 0x97, 0x47, - 0xa0, 0x1f, 0xc3, 0x5c, 0x1f, 0xda, 0xa7, 0xbf, 0xb8, 0x33, - 0xdc, 0x48, 0x5d, 0xd8, 0xe7, 0x9e, 0xd5, 0x71, 0x8d, 0xcc, - 0x67, 0x55, 0x2d, 0x11, 0xb7, 0x7d, 0x7f, 0x2e, 0xb8, 0xe4, - 0x5c, 0xf, 0xdd, 0x76, 0x4a, 0xc6, 0xba, 0xf0, 0x1d, 0x9d, - 0xf0, 0x2d, 0xb, 0xb4, 0x6e, 0x7d, 0x7a, 0x56, 0xb5, 0x9a, - 0xf4, 0xad, 0xeb, 0x54, 0xe0, 0x55, 0xec, 0x65, 0x6e, 0x6d, - 0xcf, 0x35, 0x93, 0xe1, 0x1e, 0xa5, 0x29, 0xfd, 0xd5, 0xf4, - 0x58, 0x3e, 0xb5, 0x66, 0xc7, 0xe0, 0xa5, 0xc3, 0x48, 0xd, - 0xf5, 0xfa, 0x34, 0x7d, 0xc2, 0x75, 0xaf, 0x5a, 0xb7, 0x4f, - 0x94, 0x55, 0xd4, 0x5a, 0x96, 0xcd, 0x14, 0x12, 0x39, 0xcf, - 0xf, 0xf8, 0x2b, 0x47, 0xf0, 0xdc, 0x40, 0x59, 0xc1, 0xba, - 0x5e, 0xf2, 0x3f, 0x26, 0xb7, 0x5a, 0x2c, 0xd5, 0xb0, 0xa2, - 0x91, 0x97, 0x8a, 0x9b, 0x9a, 0x58, 0xcb, 0x9a, 0xe, 0x33, - 0x59, 0x17, 0xc2, 0x38, 0x21, 0x79, 0xa6, 0x60, 0xa8, 0xa3, - 0x24, 0x9a, 0xe8, 0xe4, 0x4c, 0xd7, 0x8b, 0xfc, 0x50, 0xf1, - 0x4b, 0x3d, 0xef, 0xf6, 0x2d, 0x9b, 0xe1, 0x53, 0xfd, 0x69, - 0x1d, 0xea, 0x91, 0x9c, 0xf4, 0x45, 0x2d, 0x6b, 0xc5, 0x4d, - 0x7b, 0x76, 0x62, 0xb2, 0x62, 0x91, 0x21, 0xe1, 0xc7, 0x53, - 0x5d, 0x7f, 0x84, 0x7c, 0x7f, 0x24, 0x61, 0x2c, 0xf5, 0x43, - 0xb9, 0x3a, 0x2c, 0xbd, 0xc7, 0xd6, 0xbc, 0x86, 0xd5, 0xb1, - 0x81, 0x5b, 0x76, 0x87, 0x38, 0xaa, 0x6a, 0xe6, 0x30, 0x9b, - 0x4c, 0xfa, 0x42, 0x19, 0xa3, 0xb8, 0x89, 0x65, 0x89, 0xc3, - 0xa3, 0xc, 0x82, 0x2a, 0x4a, 0xf2, 0x5f, 0xb, 0xf8, 0x9a, - 0xe7, 0x4a, 0x71, 0x14, 0x8c, 0x64, 0xb6, 0x3d, 0x54, 0xf6, - 0xaf, 0x52, 0xb3, 0xbd, 0x86, 0xfa, 0xdd, 0x66, 0x81, 0xc3, - 0x29, 0xfd, 0x2b, 0x26, 0xac, 0x75, 0x46, 0x6a, 0x45, 0x8a, - 0x28, 0xa2, 0x91, 0x61, 0x50, 0xdc, 0x7d, 0xca, 0x9a, 0xa1, - 0xb9, 0xfb, 0x94, 0x1, 0x35, 0x14, 0x51, 0x40, 0x5, 0x14, - 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, - 0x1e, 0x67, 0x6b, 0xff, 00, 0x21, 0x4d, 0x73, 0xfe, 0xc2, - 0x73, 0x7f, 0x4a, 0xef, 0x34, 0x4f, 0xf9, 0x3, 0xc1, 0xff, - 00, 0x2, 0xff, 00, 0xd0, 0x8d, 0x70, 0x76, 0xbf, 0xf2, - 0x14, 0xd7, 0x3f, 0xec, 0x27, 0x37, 0xf4, 0xae, 0xf3, 0x44, - 0xff, 00, 0x90, 0x3c, 0x1f, 0xf0, 0x2f, 0xfd, 0x8, 0xd0, - 0x6, 0x7f, 0x81, 0xff, 00, 0xe4, 0x4b, 0xd2, 0xff, 00, - 0xeb, 0x97, 0xfe, 0xcc, 0x6b, 0xa0, 0xae, 0x7f, 0xc0, 0xff, - 00, 0xf2, 0x25, 0xe9, 0x7f, 0xf5, 0xcb, 0xff, 00, 0x66, - 0x35, 0xd0, 0x50, 0x1, 0x45, 0x15, 0xf3, 0xd7, 0xc6, 0xef, - 0xd, 0x78, 0xcf, 0x56, 0xf1, 0xd6, 0x9f, 0x73, 0xa5, 0xd9, - 0x6a, 0x17, 0x96, 0x42, 0x24, 0x16, 0x8d, 0x6a, 0x19, 0x96, - 0xde, 0x4c, 0xfc, 0xc4, 0xe3, 0xee, 0x1c, 0xed, 0x3b, 0x8e, - 0x3a, 0xe, 0x78, 0xe1, 0x37, 0x66, 0x97, 0x71, 0xa5, 0xa3, - 0x3e, 0x85, 0xa2, 0xa9, 0xe9, 0x31, 0xde, 0x43, 0xa3, 0x58, - 0xc7, 0xa8, 0x48, 0x24, 0xbd, 0x48, 0x11, 0x67, 0x70, 0x73, - 0xba, 0x40, 0xa3, 0x71, 0xfc, 0xf3, 0x57, 0x2a, 0x9a, 0xb3, - 0xb1, 0x29, 0xdd, 0x5c, 0x2a, 0x1b, 0xb6, 0x2b, 0x67, 0x3b, - 0x29, 0x20, 0x88, 0xd8, 0x82, 0x3b, 0x71, 0x53, 0x54, 0x17, - 0x9f, 0xf1, 0xe3, 0x71, 0xff, 00, 0x5c, 0xdb, 0xf9, 0x56, - 0x73, 0xf8, 0x59, 0x70, 0xf8, 0x91, 0xe6, 0xff, 00, 0xf, - 0xb5, 0x5d, 0x46, 0xf7, 0xe0, 0x5b, 0xea, 0x17, 0x57, 0xf7, - 0x53, 0xde, 0x8b, 0x6b, 0xb6, 0xfb, 0x4c, 0xb3, 0x33, 0x49, - 0x95, 0x2f, 0x83, 0xb8, 0x9c, 0xf1, 0x81, 0x8f, 0xa5, 0x66, - 0xf8, 0x1b, 0xc1, 0x37, 0x5e, 0x26, 0xf0, 0x56, 0x97, 0xac, - 0xde, 0xf8, 0xe7, 0xc6, 0x71, 0xdc, 0xdd, 0xc4, 0x5d, 0xd6, - 0x1d, 0x58, 0x84, 0x7, 0x71, 0x1c, 0x2, 0xa4, 0xf6, 0xf5, - 0xa9, 0xfe, 0x1a, 0x7f, 0xc9, 0xbd, 0xc9, 0xff, 00, 0x5e, - 0xb7, 0xbf, 0xce, 0x4a, 0xa5, 0xf0, 0xef, 0xc3, 0x7e, 0x35, - 0xbc, 0xf0, 0x6, 0x8f, 0x71, 0xa6, 0xf8, 0xff, 00, 0xfb, - 0x3a, 0xcd, 0xe1, 0x26, 0x2b, 0x5f, 0xec, 0x68, 0x66, 0xf2, - 0x86, 0xe3, 0xc6, 0xf6, 0x39, 0x3c, 0xf3, 0xcf, 0xad, 0x6b, - 0x3f, 0xe2, 0x4b, 0xe5, 0xfa, 0x99, 0xad, 0x97, 0xfd, 0xbd, - 0xfa, 0x1d, 0xf7, 0x87, 0x7c, 0x15, 0xff, 00, 0x8, 0xee, - 0xa2, 0xd7, 0xbf, 0xf0, 0x93, 0xf8, 0x93, 0x53, 0xcc, 0x66, - 0x3f, 0x27, 0x53, 0xbf, 0xf3, 0xa2, 0x19, 0x20, 0xee, 0xb, - 0xb4, 0x73, 0xc7, 0x5f, 0x73, 0x5c, 0xbe, 0x9f, 0x71, 0xae, - 0x7c, 0x51, 0xbc, 0xbf, 0xb9, 0xb5, 0xd7, 0x2f, 0x34, 0x4f, - 0xb, 0x5b, 0x4e, 0xd6, 0xd0, 0x7f, 0x67, 0xe1, 0x2e, 0x6f, - 0x19, 0x7a, 0xc9, 0xe6, 0x90, 0x4a, 0x2e, 0x71, 0xc0, 0xea, - 0x32, 0xf, 0xad, 0x75, 0x1a, 0x2e, 0x85, 0xe2, 0x7b, 0x2b, - 0x7d, 0x41, 0x35, 0xbf, 0x16, 0x7f, 0x6d, 0x79, 0xf0, 0xec, - 0x81, 0x7f, 0xb3, 0xe3, 0xb6, 0xf2, 0x9b, 0x7, 0x27, 0x28, - 0x79, 0xce, 0x47, 0x5f, 0x4a, 0xc4, 0xf8, 0x22, 0xe9, 0xff, - 00, 0xa, 0xba, 0xc2, 0xd8, 0x71, 0x35, 0xac, 0xd3, 0xc3, - 0x3a, 0xe3, 0x5, 0x5f, 0xcd, 0x63, 0x83, 0xef, 0x82, 0x29, - 0x2d, 0x5e, 0xbd, 0x17, 0xeb, 0xfa, 0x7e, 0xa5, 0x3d, 0x16, - 0x9d, 0x5f, 0xe9, 0xfd, 0x7d, 0xc5, 0x2d, 0x4f, 0x46, 0xf1, - 0x5f, 0x80, 0x1a, 0xd, 0x5b, 0x42, 0xd6, 0x75, 0xbf, 0x12, - 0xe9, 0xe2, 0x54, 0x5b, 0xed, 0x33, 0x50, 0x63, 0x75, 0x3b, - 0x21, 0x38, 0xdf, 0x13, 00, 0x8, 0x23, 0x3d, 0x7, 0xd4, - 0xe4, 0xc, 0x57, 0xa7, 0xc6, 0xe2, 0x48, 0xd6, 0x40, 0x18, - 0x6, 00, 0x80, 0xca, 0x54, 0x8c, 0xfa, 0x83, 0xc8, 0xaa, - 0x7a, 0xbe, 0xaf, 0x61, 0xa0, 0xe9, 0x57, 0x1a, 0xa6, 0xa7, - 0x70, 0x2d, 0xec, 0xad, 0xd4, 0x34, 0xb2, 0x95, 0x2d, 0xb4, - 0x12, 00, 0xe0, 0x2, 0x4f, 0x24, 0x74, 0x15, 0x6a, 0xde, - 0xe2, 0x2b, 0xbb, 0x68, 0xae, 0x60, 0x70, 0xf0, 0xca, 0x82, - 0x44, 0x61, 0xfc, 0x4a, 0x46, 0x41, 0xfc, 0xa9, 0x27, 0xa5, - 0x82, 0xda, 0x9c, 0xf, 0x88, 0xf5, 0xd, 0x57, 0xc4, 0xbe, - 0x3c, 0x4f, 0x6, 0x69, 0x5a, 0x8d, 0xce, 0x99, 0x65, 0x6f, - 0x6b, 0xf6, 0xbd, 0x52, 0xf6, 0xd3, 0xb, 0x3e, 0x18, 0xe1, - 0x23, 0x8d, 0xce, 0x76, 0x13, 0xd4, 0x9c, 0x67, 0xf5, 0x5, - 0xfa, 0x4f, 0x87, 0xfc, 0x53, 0xe1, 0x5f, 0x17, 0x59, 0xc3, - 0x69, 0xab, 0x6a, 0x5a, 0xef, 0x86, 0xee, 0xd1, 0xfe, 0xd6, - 0x75, 0x3b, 0x84, 0x92, 0x6b, 0x49, 00, 0xf9, 0x59, 0x58, - 0x90, 0xc4, 0x13, 0x81, 0xb4, 0xe, 0x39, 0x3e, 0xf5, 0xca, - 0x27, 0x87, 0x9f, 0xc4, 0x7f, 0x1d, 0x3c, 0x59, 0xa7, 0x5e, - 0xdd, 0xdc, 0xc5, 0xa5, 0x3d, 0xac, 0x12, 0x5d, 0x5b, 0x43, - 0x21, 0x8c, 0xdd, 0xae, 0xc5, 0x55, 0x46, 0x60, 0x43, 0x6c, - 0xe5, 0xb2, 0x1, 0xe7, 0xa1, 0xad, 0x19, 0xf4, 0x4b, 0x5f, - 0x86, 0x7e, 0x3c, 0xf0, 0xca, 0x78, 0x6d, 0xa6, 0xb6, 0xd2, - 0x75, 0xa9, 0xde, 0xd2, 0xf3, 0x4e, 0x69, 0xde, 0x48, 0xcb, - 0xe0, 0x6d, 0x95, 0x43, 0x12, 0x43, 0x74, 0xc9, 0xcf, 0x40, - 0x7, 0x73, 0x44, 0x36, 0x8b, 0x7d, 0x7f, 0xe0, 0xff, 00, - 0xc3, 0x7a, 0xea, 0x13, 0xde, 0x4b, 0xb7, 0xf9, 0x27, 0xff, - 00, 0x7, 0xf0, 0x3a, 0x5f, 0x1b, 0x78, 0xca, 0xfb, 0x48, - 0x9d, 0x74, 0x3f, 0xf, 0xe9, 0x53, 0xea, 0x3a, 0xf5, 0xc4, - 0x6, 0x64, 0xf9, 0x31, 0xd, 0xb4, 0x79, 0x23, 0xcc, 0x95, - 0xba, 0x1, 0x90, 0x70, 0x3b, 0xe3, 0xb6, 0x46, 0x59, 0xf0, - 0x8b, 0x51, 0xbd, 0xd5, 0xbe, 0x19, 0x69, 0x57, 0xda, 0x85, - 0xd4, 0xd7, 0x57, 0x52, 0x99, 0x8b, 0xcd, 0x33, 0x96, 0x66, - 0xfd, 0xeb, 0x81, 0xc9, 0xf6, 0xc0, 0xae, 0xc2, 0xf3, 0xfe, - 0x3c, 0x6e, 0x3f, 0xeb, 0x9b, 0x7f, 0x2a, 0xe1, 0xbe, 0x9, - 0x7f, 0xc9, 0x24, 0xd1, 0x7e, 0xb3, 0xff, 00, 0xe8, 0xe7, - 0xa7, 0x1d, 0xa5, 0x7f, 0x2f, 0xd4, 0x25, 0xd2, 0xdf, 0xd6, - 0x86, 0x16, 0xa9, 0xe4, 0x6b, 0xbe, 0x36, 0xf1, 0x4, 0xda, - 0xcf, 0x8e, 0x35, 0x3f, 0xe, 0xe9, 0x76, 0x53, 0x45, 0x65, - 0x66, 0x96, 0xba, 0xaa, 0xda, 0x24, 0xb2, 0x8, 0xc3, 0xc9, - 0xf7, 0xb8, 0x24, 0x16, 0x5e, 0x82, 0xbb, 0x8f, 0xc, 0xe8, - 0xf6, 0xbe, 0x1c, 0xd2, 0x6e, 0x2e, 0xd3, 0xc4, 0x7a, 0xb6, - 0xb3, 0x69, 0x3a, 0xb, 0x81, 0x71, 0xa8, 0xde, 0x8b, 0x90, - 0xa8, 0x14, 0x9c, 0xa3, 00, 0x6, 0xd2, 0x39, 0xf7, 0xe2, - 0xa9, 0x69, 0xff, 00, 0xb, 0xbc, 0x29, 0x65, 0xa9, 0x6a, - 0x7a, 0x8d, 0xce, 0x9d, 0x1e, 0xa9, 0x75, 0xa8, 0xdc, 0x35, - 0xc4, 0x8f, 0xa9, 0x47, 0x1c, 0xdb, 0x9, 0x24, 0xed, 0x40, - 0x57, 0xa, 0x32, 0x4f, 0xbf, 0xa9, 0x35, 0xca, 0xd8, 0x5b, - 0xb6, 0x8b, 0xe2, 0x8f, 0x1e, 0xf8, 0x5b, 0x4d, 0x5d, 0xba, - 0x4b, 0x69, 0x9f, 0x6d, 0xb7, 0xb5, 0x4f, 0xbb, 0x6f, 0x23, - 0xa1, 0xc, 0xa8, 0x3a, 0x28, 0x62, 0x49, 0xc7, 0x4e, 0x98, - 0xac, 0xdc, 0xb9, 0x61, 0xe7, 0x6f, 0xc5, 0x2b, 0xbf, 0xd5, - 0xfe, 0x5, 0x59, 0x39, 0x5f, 0xa5, 0xff, 00, 0x5b, 0x7f, - 0x5f, 0x78, 0x78, 0x7b, 0x48, 0xd7, 0x3e, 0x25, 0xe9, 0x33, - 0x78, 0x9e, 0xfb, 0xc5, 0x9a, 0xe6, 0x90, 0x97, 0x4f, 0x22, - 0xe9, 0xd6, 0x9a, 0x64, 0xfe, 0x44, 0x70, 0xc4, 0xac, 0xc1, - 0x4b, 0x81, 0xcb, 0x92, 0x79, 0x27, 0x20, 0xfb, 0xe3, 0x18, - 0x9a, 0x2f, 0x88, 0x3a, 0xd5, 0x8f, 0xc3, 0x1f, 0x11, 0xdd, - 0xdf, 0x2a, 0x4f, 0xe2, 0xd, 0x6, 0xe1, 0xec, 0x65, 0x91, - 0x63, 0xf9, 0x64, 0x6d, 0xc1, 0x56, 0x52, 0xa3, 0x8c, 0x61, - 0xb2, 0x7b, 0x71, 0x5d, 0xf, 0xc2, 0x39, 0x63, 0x97, 0xe1, - 0x5e, 0x80, 0xd1, 0x63, 0x68, 0x80, 0xa9, 0xc1, 0xcf, 0x21, - 0xd8, 0x1f, 0xd7, 0x35, 0xe7, 0x97, 0x1a, 0xe3, 0xe8, 0x90, - 0xfc, 0x49, 0xb9, 0xb6, 0xb4, 0xb6, 0xb9, 0x7b, 0xdd, 0x66, - 0x3d, 0x3e, 0x24, 0xb9, 0x50, 0xd0, 0x97, 0x60, 0x55, 0xb7, - 0x8e, 0x84, 00, 0x49, 0xe7, 0xf1, 0xaa, 0xa8, 0xb9, 0x5b, - 0x84, 0x7b, 0x7e, 0x37, 0x4b, 0xef, 0x77, 0x22, 0x12, 0xba, - 0x53, 0x97, 0x7f, 0xc2, 0xcd, 0xfe, 0x16, 0x35, 0xf5, 0x4f, - 0xf, 0x78, 0x83, 0xc3, 0xde, 0xb, 0x7f, 0x18, 0xc1, 0xe3, - 0xbd, 0x66, 0xe7, 0x56, 0xb7, 0x80, 0x5e, 0xc9, 0x1c, 0xf7, - 0x1, 0xac, 0x65, 0x4, 0x65, 0x90, 0x43, 0x8c, 00, 0x41, - 0xc0, 0xe7, 0xd3, 00, 0x71, 0x8f, 0x51, 0xd0, 0xb5, 0x16, - 0xd6, 0x3c, 0x3f, 0xa7, 0x6a, 0x6f, 0x17, 0x92, 0xd7, 0x76, - 0xd1, 0xce, 0x63, 0xfe, 0xe1, 0x65, 0x7, 0x1f, 0xad, 0x79, - 0x3e, 0xa9, 0xf0, 0x72, 0x7d, 0x3b, 0xc1, 0xa, 0xb0, 0xf8, - 0xa3, 0x53, 0xbb, 0x9f, 0x4f, 0x41, 0x72, 0x2c, 0x6f, 0x24, - 0xdf, 0xa7, 0xc8, 0xc9, 0x97, 0x2b, 0xe4, 0xe3, 0x80, 0x79, - 0xee, 0x7a, 0xfb, 0xd7, 0xa5, 0x78, 0x2f, 0x5e, 0x1e, 0x27, - 0xf0, 0x6e, 0x97, 0xac, 0x8, 0x16, 0x3, 0x73, 0x8, 0x2d, - 0x12, 0x7d, 0xd4, 0x60, 0x4a, 0x90, 0x3d, 0xb2, 0xe, 0x3d, - 0xaa, 0xf4, 0xf7, 0xad, 0xdd, 0x7e, 0xbf, 0xd7, 0xcb, 0xcc, - 0x4a, 0xfe, 0xed, 0xfb, 0x7f, 0x97, 0xf5, 0xf3, 0x39, 0xef, - 0x8c, 0x37, 0x97, 0xb6, 0x5e, 0x8, 0x47, 0xb0, 0xbe, 0xba, - 0xb2, 0x9a, 0x4b, 0xe8, 0x22, 0x33, 0x5a, 0xcc, 0x63, 0x70, - 0xac, 0xd8, 0x20, 0x30, 0xa4, 0xff, 00, 0x85, 0x59, 0xff, - 00, 0x53, 0xef, 0x8e, 0x7f, 0xf0, 0x71, 0xff, 00, 0xd8, - 0x55, 0x7f, 0x8d, 0xca, 0xef, 0xe0, 0x8, 0xd6, 0x39, 0x3c, - 0xb7, 0x3a, 0x85, 0xb0, 0x57, 0xc6, 0x76, 0x9d, 0xdc, 0x1c, - 0x77, 0xaa, 0x3e, 0x25, 0xd1, 0x3e, 0x2a, 0xe8, 0xfa, 0x1d, - 0xc5, 0xfe, 0x97, 0xe3, 0xa5, 0xd5, 0x27, 0x80, 0x17, 0x6b, - 0x5f, 0xec, 0x88, 0x22, 0x66, 0x40, 0x9, 0x3b, 0x4e, 0x1b, - 0x2d, 0xed, 0xc6, 0x7d, 0x73, 0xc1, 0xcd, 0x34, 0x94, 0x9b, - 0xef, 0xfa, 0x22, 0xec, 0xdc, 0x92, 0x5d, 0xbf, 0x56, 0x3f, - 0xc3, 0xe3, 0x59, 0x8b, 0xc4, 0xda, 0xef, 0xc3, 0xbd, 0x53, - 0xc4, 0x3a, 0x85, 0xe5, 0xb8, 0xb2, 0x5b, 0xbb, 0x3d, 0x4e, - 0x39, 0x36, 0x5e, 0x42, 0x8c, 0xc0, 0x14, 0x69, 0x30, 0x72, - 0xc3, 0x3c, 0x13, 0xfc, 0x8e, 0x6, 0x1f, 0x8f, 0x3c, 0x2d, - 0x7d, 0xe1, 0x73, 0xe1, 0xf1, 0x65, 0xe3, 0x7f, 0x18, 0x49, - 0xfd, 0xa3, 0xaa, 0xc5, 0x65, 0x37, 0x9f, 0xab, 0x31, 0xda, - 0x8d, 0x9c, 0x95, 0xc0, 0x18, 0x3c, 0x77, 0xc8, 0xf6, 0xae, - 0xa3, 0xe1, 0x1d, 0x8e, 0x8b, 0x75, 0xa3, 0x4d, 0xe2, 0x7b, - 0x3d, 0x4a, 0xeb, 0x55, 0xd5, 0xb5, 0x13, 0xb6, 0xfe, 0xf2, - 0xf3, 0x2, 0x45, 0x75, 0xc7, 0xee, 0xf6, 0x82, 0x42, 0x28, - 0xe0, 0x81, 0x93, 0xc6, 0x39, 0xc6, 00, 0x8f, 0xe2, 0xff, - 00, 0xde, 0xf0, 0x67, 0xfd, 0x8c, 0x36, 0xdf, 0xd6, 0xb4, - 0xe5, 0xb4, 0xa2, 0x9e, 0xf7, 0x57, 0xfb, 0xff, 00, 0xcb, - 0xef, 0x25, 0x3b, 0xa6, 0xd6, 0xda, 0xfe, 0x5f, 0xe6, 0x6f, - 0xe8, 0x1e, 0x7, 0x1e, 0x1e, 0xd4, 0xc5, 0xf9, 0xf1, 0x57, - 0x89, 0xb5, 0x10, 0xa8, 0xca, 0x60, 0xd4, 0xb5, 0xf, 0x3a, - 0x2e, 0x7b, 0xed, 0xda, 0x39, 0x1e, 0xb5, 0xcc, 0xd9, 0x4b, - 0xaf, 0xfc, 0x52, 0xbd, 0xbb, 0xbb, 0xb5, 0xd7, 0x2e, 0xf4, - 0x3f, 0x9, 0xdb, 0xce, 0xd0, 0x41, 0xfd, 0x9e, 0x42, 0x5c, - 0xde, 0xb2, 0x64, 0x17, 0xf3, 0x3a, 0xa2, 0xe7, 0xa0, 0x1d, - 0x46, 0x41, 0x1d, 0xeb, 0xd2, 0xaf, 0xa3, 0x79, 0x74, 0xfb, - 0x98, 0xe3, 0xff, 00, 0x58, 0xf1, 0x32, 0xaf, 0xd4, 0x83, - 0x8a, 0xe1, 0x7e, 0x9, 0xc9, 0x11, 0xf8, 0x5d, 0xa7, 0x40, - 0xab, 0xb2, 0x5b, 0x69, 0x26, 0x86, 0x74, 0x27, 0x95, 0x90, - 0x48, 0xc4, 0x83, 0xe8, 0x70, 0x41, 0xc7, 0xbd, 0x4a, 0xd5, - 0xbb, 0xf4, 0xfe, 0xbf, 0xf, 0xd4, 0x6f, 0x44, 0xad, 0xd5, - 0xff, 00, 0x5f, 0xd7, 0x91, 0x43, 0x59, 0xd2, 0x7c, 0x4f, - 0xf0, 0xea, 0xc5, 0xf5, 0xed, 0x1b, 0xc4, 0x5a, 0x9e, 0xbb, - 0xa7, 0x5b, 0x62, 0x4b, 0xfd, 0x3b, 0x58, 0x97, 0xcf, 0x77, - 0x8c, 0x7d, 0xe6, 0x8e, 0x4c, 0x2, 0xa4, 0xe, 0x71, 0xd3, - 0x8c, 0x9c, 0xe3, 0x15, 0xa9, 0xe3, 0x8f, 0x1b, 0xcd, 0x63, - 0xf0, 0xfe, 0xcb, 0x59, 0xd0, 0x25, 0x45, 0x93, 0x56, 0x96, - 0x8, 0x6d, 0x6e, 0x65, 0x50, 0x56, 0x1, 0x2f, 0x3e, 0x63, - 0x3, 0xc7, 0x3, 0xd7, 0x8c, 0xf5, 0xae, 0x8b, 0xc6, 0x17, - 0x36, 0xf6, 0x9e, 0xb, 0xd6, 0xe7, 0xba, 0xdb, 0xe4, 0x2d, - 0x8c, 0xdb, 0xc3, 0x1c, 0x6, 0xca, 0x11, 0x8f, 0xc7, 0xa7, - 0xe3, 0x5c, 0x47, 0x86, 0xc7, 0x87, 0xbf, 0xe1, 0x51, 0xf8, - 0x57, 0x40, 0xf1, 0x66, 0xc3, 0x1e, 0xaf, 0x12, 0x43, 0x4, - 0x52, 0x2b, 0xfe, 0xf1, 0xd8, 0xee, 0x40, 0x19, 0x47, 0xca, - 0x70, 0x57, 0x7, 0x23, 0xeb, 0x4a, 0xed, 0xdd, 0x76, 0xb7, - 0xe3, 0x7d, 0x3f, 0xd, 0x7, 0xa2, 0xb3, 0xf5, 0xfc, 0x2d, - 0xaf, 0xe2, 0x5f, 0x6f, 0x86, 0x9a, 0xa0, 0x87, 0xed, 0x31, - 0x7c, 0x42, 0xf1, 0x4f, 0xf6, 0xa8, 0xfd, 0xe0, 0x91, 0xae, - 0xc1, 0xb6, 0x32, 0xf5, 0xcf, 0x91, 0x8c, 0x6c, 0xcf, 0xf0, - 0x67, 0x18, 0xe2, 0xb7, 0x3c, 0x5, 0xab, 0xeb, 0x9a, 0xbf, - 0x86, 0xc3, 0x78, 0x8f, 0x4f, 0x96, 0xcf, 0x55, 0xb6, 0x99, - 0xed, 0xe6, 0xdf, 0x9, 0x8d, 0x66, 0xdb, 0x8c, 0x48, 0xa0, - 0x81, 0x95, 0x20, 0xf5, 0x1c, 0x67, 0x38, 0xae, 0x5f, 0xfe, - 0x15, 0x9f, 0x89, 0x74, 0x18, 0xcf, 0xfc, 0x21, 0xfe, 0x3e, - 0xd4, 0xed, 0xe3, 0x4b, 0x7f, 0x2e, 0x2b, 0x3d, 0x51, 0x16, - 0xea, 0x3c, 0x8e, 0x81, 0x49, 0x18, 0x8d, 0x7a, 0xe, 0x10, - 0x91, 0xef, 0xd2, 0xb7, 0xfe, 0x1f, 0xf8, 0xb6, 0xff, 00, - 0xc4, 0xd6, 0x9a, 0x95, 0xae, 0xb1, 0x69, 0xd, 0xae, 0xaf, - 0xa5, 0x5d, 0xb5, 0xad, 0xda, 0x40, 0x49, 0x8d, 0x88, 0xe8, - 0xcb, 0x92, 0x48, 0x7, 0x9e, 0xe7, 0xa6, 0x7b, 0xd5, 0x27, - 0xba, 0xfe, 0xbd, 0x49, 0x7d, 0xe, 0xc2, 0x8a, 0x28, 0xa4, - 0x30, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, - 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, - 0x2, 0xa6, 0xa7, 0xa7, 0xc5, 0xaa, 0xe9, 0xd3, 0x59, 0x4e, - 0xce, 0xb1, 0xca, 00, 0x62, 0x87, 0x7, 0x82, 0xf, 0xf4, - 0xae, 0x67, 0xfe, 0x15, 0xb6, 0x8f, 0xff, 00, 0x3f, 0x17, - 0xbf, 0xf7, 0xda, 0xff, 00, 0xf1, 0x35, 0xad, 0xe2, 0xf7, - 0x78, 0xfc, 0x2b, 0x7c, 0xc8, 0xec, 0x8c, 0x15, 0x70, 0xca, - 0x70, 0x47, 0xcc, 0x3b, 0xd7, 0x8f, 0x7d, 0xb6, 0xf3, 0xfe, - 0x7f, 0x2e, 0x7f, 0xef, 0xf3, 0x7f, 0x8d, 0x7b, 0x39, 0x6e, - 0x1e, 0xbd, 0x4a, 0x4d, 0xd3, 0xa9, 0xca, 0xaf, 0xfe, 0x47, - 0x99, 0x8d, 0xad, 0x4a, 0x13, 0x4a, 0x70, 0xbb, 0xb1, 0xe9, - 0x7f, 0xf0, 0xad, 0xb4, 0x7f, 0xf9, 0xf8, 0xbd, 0xff, 00, - 0xbe, 0xd7, 0xff, 00, 0x89, 0xa3, 0xfe, 0x15, 0xb6, 0x8f, - 0xff, 00, 0x3f, 0x17, 0xbf, 0xf7, 0xda, 0xff, 00, 0xf1, - 0x35, 0xe6, 0x9f, 0x6d, 0xbc, 0xff, 00, 0x9f, 0xcb, 0x9f, - 0xfb, 0xfc, 0xdf, 0xe3, 0x47, 0xdb, 0x6f, 0x3f, 0xe7, 0xf2, - 0xe7, 0xfe, 0xff, 00, 0x37, 0xf8, 0xd7, 0xa3, 0xf5, 0x2c, - 0x5f, 0xfc, 0xfe, 0xfc, 0xe, 0x3f, 0xac, 0xe1, 0xff, 00, - 0xe7, 0xd1, 0xe9, 0xb1, 0xfc, 0x3a, 0xd2, 0x22, 0x95, 0x24, - 0x59, 0xef, 0x32, 0x8c, 0x18, 0x65, 0xd7, 0xa8, 0x39, 0xf4, - 0xae, 0xbe, 0xbc, 0x26, 0xd2, 0xf6, 0xec, 0xde, 0xdb, 0x83, - 0x77, 0x70, 0x41, 0x95, 0x38, 0xf3, 0x5b, 0xfb, 0xc3, 0xde, - 0xbd, 0xda, 0xbc, 0x9c, 0xce, 0x8d, 0x5a, 0x4e, 0x3e, 0xd6, - 0x7c, 0xdb, 0x9e, 0x86, 0x6, 0xa5, 0x39, 0xa9, 0x72, 0x47, - 0x94, 0x2b, 0xcc, 0x7e, 0x34, 0xff, 00, 0xc8, 0x17, 0x4a, - 0xff, 00, 0xaf, 0xa6, 0xff, 00, 0xd0, 0xd, 0x7a, 0x75, - 0x79, 0x8f, 0xc6, 0x9f, 0xf9, 0x2, 0xe9, 0x5f, 0xf5, 0xf4, - 0xdf, 0xfa, 0x1, 0xaf, 0x2c, 0xef, 0x32, 0xbe, 0xa, 0xff, - 00, 0xc8, 0x53, 0x57, 0xff, 00, 0xae, 0x11, 0xff, 00, - 0xe8, 0x4d, 0x5d, 0x7f, 0xc5, 0x5f, 0xf9, 0x10, 0x6e, 0xff, - 00, 0xeb, 0xac, 0x5f, 0xfa, 0x18, 0xae, 0x43, 0xe0, 0xaf, - 0xfc, 0x85, 0x35, 0x7f, 0xfa, 0xe1, 0x1f, 0xfe, 0x84, 0xd5, - 0xe8, 0xde, 0x32, 0xd2, 0x64, 0xd7, 0x3c, 0x25, 0xa8, 0xd8, - 0x42, 0x33, 0x33, 0xc7, 0xba, 0x21, 0xea, 0xea, 0x43, 0x1, - 0xf8, 0x91, 0x8f, 0xc6, 0x80, 0x3c, 0x7f, 0xe1, 0x47, 0xfc, - 0x8f, 0xb0, 0x7f, 0xd7, 0xbc, 0xbf, 0xc8, 0x57, 0xbe, 0xd7, - 0xcb, 0xda, 0x6, 0xb1, 0x3f, 0x87, 0xb5, 0xeb, 0x5d, 0x4e, - 0x14, 0xcc, 0x96, 0xee, 0x77, 0xc6, 0xdc, 0x6e, 0x53, 0xc3, - 0x29, 0xf4, 0xe3, 0x3f, 0x8d, 0x7b, 0x7d, 0x9f, 0xc5, 0x1f, - 0xa, 0x5d, 0x5b, 0x9, 0x65, 0xbf, 0x6b, 0x57, 0xc7, 0x31, - 0x4d, 0x13, 0x6e, 0x1f, 0x90, 0x20, 0xfe, 0x6, 0x80, 0xf, - 0x8a, 0x5f, 0xf2, 0x20, 0x5f, 0x7f, 0xbf, 0x17, 0xfe, 0x8c, - 0x5a, 0xf3, 0x3f, 0x85, 0x3f, 0xf2, 0x3e, 0xdb, 0xff, 00, - 0xd7, 0xbc, 0xbf, 0xc8, 0x55, 0xff, 00, 0x88, 0x9e, 0x3f, - 0xb5, 0xf1, 0x1d, 0xac, 0x7a, 0x5e, 0x94, 0xb2, 0x7d, 0x91, - 0x64, 0x12, 0x4b, 0x34, 0x8b, 0xb7, 0xcc, 0x23, 0xa0, 0x3, - 0xae, 0x3b, 0xf3, 0xed, 0x56, 0x3e, 0xe, 0x68, 0xf2, 0xcd, - 0xac, 0xdd, 0xeb, 0xc, 0x84, 0x41, 0x4, 0x46, 0x4, 0x6f, - 0xef, 0x3b, 0x10, 0x4e, 0x3e, 0x80, 0x7e, 0xb4, 0x1, 0x3f, - 0xc6, 0x5d, 0x1f, 0xcb, 0xbb, 0xb0, 0xd6, 0x63, 0x5e, 0x25, - 0x53, 0x6d, 0x31, 0x3, 0xb8, 0xf9, 0x94, 0xfe, 0x5b, 0x87, - 0xe1, 0x57, 0x7e, 0x15, 0xf8, 0x86, 0x3b, 0x6f, 0x9, 0x6a, - 0xb0, 0x5c, 0xbf, 0xcb, 0xa6, 0x96, 0xb8, 00, 0x9f, 0xf9, - 0x66, 0xc0, 0x9f, 0xe6, 0x1b, 0xf3, 0xae, 0xcb, 0xc7, 0x1a, - 0x37, 0xf6, 0xe7, 0x84, 0x2f, 0xed, 0x15, 0x73, 0x32, 0xa7, - 0x9b, 0xf, 0xfb, 0xeb, 0xc8, 0xfc, 0xf1, 0x8f, 0xc6, 0xbe, - 0x76, 0xb4, 0xd4, 0x2e, 0x2c, 0xed, 0xee, 0xe2, 0x81, 0xb6, - 0xa5, 0xe4, 0x3e, 0x4c, 0xa3, 0xd5, 0x77, 0x6, 0xfe, 0x9f, - 0xa9, 0xa0, 0xb, 0xba, 0x4d, 0x9c, 0xfe, 0x29, 0xf1, 0x5d, - 0xbd, 0xbc, 0x84, 0x99, 0x2f, 0xee, 0x4b, 0xcc, 0x7d, 0x1, - 0x25, 0x9c, 0xfe, 0x59, 0xaf, 0xa6, 0xd1, 0x16, 0x38, 0xd6, - 0x34, 0x50, 0xa8, 0xa0, 0x5, 0x3, 0xa0, 0x2, 0xbc, 0x77, - 0xe0, 0xde, 0x8f, 0xe7, 0x6a, 0x57, 0xda, 0xc4, 0x8b, 0xf2, - 0xdb, 0xa0, 0x82, 0x22, 0x7f, 0xbc, 0xdc, 0xb1, 0xfc, 00, - 0x1f, 0xf7, 0xd5, 0x7b, 0x25, 00, 0x15, 0xcb, 0xea, 0x3e, - 0x5, 0xd3, 0x35, 0x3d, 0x46, 0x7b, 0xd9, 0xa6, 0xba, 0x59, - 0x26, 0x6d, 0xcc, 0x11, 0xc0, 0x1d, 0x31, 0xc7, 0x1e, 0xd5, - 0xd4, 0x57, 0x8e, 0x78, 0xae, 0xee, 0xe6, 0x3f, 0x15, 0x6a, - 0x2a, 0x97, 0x33, 0xaa, 0x89, 0x6, 0x15, 0x65, 0x60, 0x7, - 0xca, 0x3b, 0x66, 0xbd, 0x1c, 0xb6, 0x95, 0x5a, 0xb5, 0x1a, - 0xa5, 0x3e, 0x57, 0x63, 0x8f, 0x1b, 0x52, 0x10, 0x82, 0x73, - 0x8d, 0xd5, 0xce, 0xcb, 0xfe, 0x15, 0xb6, 0x8f, 0xff, 00, - 0x3f, 0x17, 0xbf, 0xf7, 0xda, 0xff, 00, 0xf1, 0x34, 0x7f, - 0xc2, 0xb6, 0xd1, 0xff, 00, 0xe7, 0xe2, 0xf7, 0xfe, 0xfb, - 0x5f, 0xfe, 0x26, 0xbc, 0xd3, 0xed, 0xb7, 0x9f, 0xf3, 0xf9, - 0x73, 0xff, 00, 0x7f, 0x9b, 0xfc, 0x68, 0xfb, 0x6d, 0xe7, - 0xfc, 0xfe, 0x5c, 0xff, 00, 0xdf, 0xe6, 0xff, 00, 0x1a, - 0xf6, 0x7e, 0xa5, 0x8b, 0xff, 00, 0x9f, 0xdf, 0x81, 0xe6, - 0x7d, 0x67, 0xf, 0xff, 00, 0x3e, 0x8f, 0x4a, 0xff, 00, - 0x85, 0x6d, 0xa3, 0xff, 00, 0xcf, 0xc5, 0xef, 0xfd, 0xf6, - 0xbf, 0xfc, 0x4d, 0x74, 0x1a, 0x26, 0x89, 0x6d, 0xa0, 0xd9, - 0x3d, 0xad, 0xab, 0xca, 0xc8, 0xd2, 0x19, 0x9, 0x90, 0x82, - 0x72, 0x40, 0x1d, 0x80, 0xf4, 0xaf, 0x15, 0xfb, 0x6d, 0xe7, - 0xfc, 0xfe, 0x5c, 0xff, 00, 0xdf, 0xe6, 0xff, 00, 0x1a, - 0xf4, 0xff, 00, 0x87, 0x72, 0xc9, 0x37, 0x87, 0xa6, 0x69, - 0x64, 0x79, 0x1b, 0xed, 0x4c, 0x32, 0xec, 0x58, 0xfd, 0xd5, - 0xf5, 0xae, 0x2c, 0xc3, 0xd, 0x88, 0xa7, 0x47, 0x9a, 0xa5, - 0x4e, 0x65, 0xd8, 0xea, 0xc2, 0x56, 0xa3, 0x3a, 0xb6, 0x84, - 0x2c, 0xce, 0xb6, 0xb3, 0xb5, 0x4f, 0xf9, 0x61, 0xf5, 0x6f, - 0xe5, 0x5a, 0x35, 0x9d, 0xaa, 0xff, 00, 0xcb, 0xf, 0xab, - 0x7f, 0x2a, 0xf0, 0x8f, 0x54, 0xb9, 0x6f, 0xfe, 0xa1, 0x3e, - 0x95, 0x2d, 0x45, 0x6f, 0xfe, 0xa1, 0x3e, 0x95, 0x2d, 00, - 0x15, 0xc2, 0xf8, 0xcf, 0xc7, 0x11, 0xe9, 0x6a, 0xd6, 0x16, - 0x2e, 0x1e, 0xe9, 0x86, 0x19, 0x87, 0xf0, 0xd1, 0xf1, 0x7, - 0xc6, 0xd1, 0xe8, 0x16, 0x86, 0xca, 0xd1, 0x83, 0x5f, 0x4a, - 0x31, 0x80, 0x7e, 0xe8, 0xaf, 0x19, 0x8e, 0x79, 0x2e, 0x26, - 0x69, 0xa6, 0x72, 0xf2, 0x39, 0xcb, 0x31, 0xad, 0x21, 0xb, - 0xea, 0xce, 0x6a, 0xd5, 0xad, 0xee, 0xa3, 0x7a, 0x29, 0x64, - 0xb8, 0x98, 0xcd, 0x33, 0x97, 0x91, 0x8e, 0x49, 0x35, 0xb7, - 0x67, 0xda, 0xb9, 0xeb, 0x57, 0x18, 0x15, 0xd1, 0xe9, 0x96, - 0xf3, 0xdc, 0xb2, 0xac, 0x31, 0x33, 0x67, 0xb8, 0x1c, 0x56, - 0x8f, 0x43, 0x9e, 0x37, 0x66, 0xed, 0x9f, 0x41, 0x5b, 0xf6, - 0x9d, 0x5, 0x56, 0xd3, 0xfc, 0x39, 0x79, 0xb4, 0x19, 0xb0, - 0x80, 0xd6, 0xe4, 0x3a, 0x37, 0x94, 0x7, 0xef, 0x49, 0x35, - 0x9b, 0x68, 0xe9, 0x8c, 0x59, 0x34, 0x1f, 0x74, 0x55, 0xb8, - 0xeb, 0x17, 0x56, 0xd5, 0xec, 0x3c, 0x39, 0x1c, 0x6f, 0x7f, - 0x36, 0xc4, 0x73, 0x85, 0x35, 0xa5, 0x67, 0x77, 0x5, 0xe4, - 0xb, 0x3d, 0xb4, 0xab, 0x24, 0x6c, 0x32, 0xa, 0x9c, 0xd4, - 0x9a, 0x2d, 0xb, 0xb4, 0x87, 0xa5, 0x34, 0x38, 0xa4, 0x67, - 0xa5, 0x62, 0xae, 0x54, 0xd4, 0xae, 0x16, 0xd2, 0xc2, 0xe2, - 0x76, 0xe8, 0x88, 0x7f, 0x95, 0x7c, 0xa9, 0x7b, 0x75, 0x25, - 0xf6, 0xab, 0x73, 0x71, 0x2b, 0x6e, 0x66, 0x91, 0xb9, 0xf6, - 0xcd, 0x7d, 0x47, 0xac, 0xdb, 0xb5, 0xf6, 0x95, 0x71, 0x6b, - 0x19, 0xc3, 0xc8, 0xb8, 0x15, 0xe5, 0xf6, 0x5f, 0x4, 0xe4, - 0x90, 0xb4, 0x97, 0x7a, 0x81, 0x8d, 0x99, 0x89, 0xc2, 0xf3, - 0x56, 0x9a, 0x46, 0x53, 0x4d, 0xec, 0x79, 0xb5, 0xaf, 0x5a, - 0xdb, 0xb4, 0x1d, 0x2b, 0xb8, 0x97, 0xe0, 0xec, 0x90, 0x2e, - 0x6d, 0xef, 0xcc, 0x87, 0xd1, 0x86, 0x2b, 0x2a, 0xe7, 0xc1, - 0x9a, 0xc6, 0x94, 0x77, 0x4b, 0x6, 0xf4, 0x1d, 0xd3, 0x9a, - 0xae, 0x64, 0xcc, 0x3d, 0x9c, 0x96, 0xe4, 0x56, 0x7d, 0xab, - 0xac, 0xd0, 0x75, 0x29, 0xb4, 0xe9, 0x41, 0x56, 0x26, 0x33, - 0xf7, 0x96, 0xb9, 0x7b, 0x58, 0xd9, 0x1b, 0x6b, 0xa9, 0x56, - 0xf4, 0x35, 0xbd, 0x66, 0xbd, 0x29, 0x33, 0x48, 0xdd, 0x1e, - 0x9d, 0x69, 0x75, 0x1d, 0xdc, 0xb, 0x2c, 0x67, 0x20, 0xf5, - 0x1e, 0x95, 0x3d, 0x72, 0x1a, 0x4d, 0xd3, 0xda, 0x48, 0x8, - 0x3f, 0x21, 0xea, 0x2b, 0xac, 0x8e, 0x41, 0x2a, 0x7, 0x53, - 0x90, 0x6b, 0x36, 0x8e, 0x88, 0xbb, 0xa1, 0xf5, 0xd, 0xcf, - 0xfa, 0xba, 0x9a, 0xa1, 0xb9, 0xfb, 0x94, 0x8a, 0x26, 0xa2, - 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, - 00, 0xa2, 0x8a, 0x28, 0x3, 0xcc, 0xed, 0x7f, 0xe4, 0x29, - 0xae, 0x7f, 0xd8, 0x4e, 0x6f, 0xe9, 0x5d, 0xe6, 0x89, 0xff, - 00, 0x20, 0x78, 0x3f, 0xe0, 0x5f, 0xfa, 0x11, 0xae, 0xe, - 0xd7, 0xfe, 0x42, 0x9a, 0xe7, 0xfd, 0x84, 0xe6, 0xfe, 0x95, - 0xde, 0x68, 0x9f, 0xf2, 0x7, 0x83, 0xfe, 0x5, 0xff, 00, - 0xa1, 0x1a, 00, 0xcf, 0xf0, 0x3f, 0xfc, 0x89, 0x7a, 0x5f, - 0xfd, 0x72, 0xff, 00, 0xd9, 0x8d, 0x74, 0x15, 0xcf, 0xf8, - 0x1f, 0xfe, 0x44, 0xbd, 0x2f, 0xfe, 0xb9, 0x7f, 0xec, 0xc6, - 0xba, 0xa, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, - 00, 0x2a, 0x3b, 0x88, 0xcc, 0xb6, 0xd2, 0xc6, 0xb8, 0x5, - 0xd0, 0xa8, 0xcf, 0xb8, 0xa9, 0x28, 0xa4, 0xd5, 0xd5, 0x98, - 0xd3, 0xb3, 0xb9, 0xc3, 0xf8, 0x43, 0xc1, 0xba, 0x8e, 0x81, - 0xf0, 0xb1, 0xbc, 0x31, 0x75, 0x35, 0xab, 0xde, 0x98, 0x6e, - 0x23, 0xf3, 0x22, 0x66, 0x31, 0xe6, 0x42, 0xc4, 0x72, 0x54, - 0x1f, 0xe2, 0x19, 0xe2, 0xb1, 0x3c, 0x3b, 0xa1, 0x7c, 0x55, - 0xf0, 0xcf, 0x87, 0xec, 0xf4, 0x6b, 0x29, 0x3c, 0x19, 0x25, - 0xb5, 0xa2, 0x14, 0x46, 0x98, 0xdd, 0x17, 0x23, 0x24, 0xf2, - 0x40, 0x3, 0xbf, 0xa5, 0x7a, 0x9d, 0x15, 0x4d, 0xdd, 0xb7, - 0xdc, 0x9b, 0x69, 0x6f, 0xeb, 0x53, 0x94, 0xf0, 0xff, 00, - 0xfc, 0x2c, 0x1f, 0xed, 0x41, 0xff, 00, 0x9, 0x27, 0xfc, - 0x23, 0x1f, 0xd9, 0xfb, 0xe, 0x7f, 0xb3, 0xbe, 0xd1, 0xe6, - 0xee, 0xed, 0xf7, 0xf8, 0xc7, 0xad, 0x65, 0x6a, 0x3e, 0xa, - 0xf1, 0x6, 0x8f, 0xe2, 0xb, 0xad, 0x73, 0xc0, 0xfa, 0xad, - 0xa5, 0xab, 0x5f, 0x49, 0xe6, 0x5e, 0x69, 0x7a, 0x82, 0x33, - 0x5a, 0xcd, 0x26, 0x8, 0x32, 0x2, 0xbf, 0x32, 0x9e, 0x87, - 0x3, 0xa9, 0x1c, 0x9c, 0x71, 0x5e, 0x81, 0x45, 0x2e, 0xb7, - 0x1f, 0x91, 0xe6, 0xb3, 0x78, 0x27, 0xc5, 0x9e, 0x2f, 0xbc, - 0x80, 0x78, 0xeb, 0x55, 0xd3, 0x57, 0x49, 0xb7, 0x75, 0x93, - 0xfb, 0x2f, 0x47, 0x59, 0x4, 0x77, 0x2c, 0x32, 0x73, 0x23, - 0xbf, 0xcd, 0x8e, 0x9c, 0xc, 0x83, 0xec, 0x79, 0xaf, 0x49, - 00, 0x2a, 0x85, 0x50, 00, 0x3, 00, 0xe, 0xd4, 0xb4, - 0x51, 0xd2, 0xc2, 0xb6, 0xb7, 0x38, 0xcf, 0x13, 0xf8, 0x43, - 0x52, 0xb8, 0xf1, 0x5, 0xbf, 0x8a, 0x7c, 0x31, 0x7b, 0x6f, - 0x69, 0xaf, 0x41, 0xf, 0xd9, 0xdd, 0x2e, 0xd4, 0xb5, 0xbd, - 0xd4, 0x24, 0xe7, 0x64, 0x9b, 0x7e, 0x61, 0x8e, 0xa0, 0x8f, - 0x40, 0x3d, 0xc5, 0x6d, 0x2b, 0xc2, 0x5e, 0x22, 0xd4, 0xfc, - 0x51, 0x67, 0xe2, 0x1f, 0x1a, 0x5e, 0x69, 0x92, 0xcf, 0xa6, - 0xab, 0xad, 0x85, 0x96, 0x98, 0x8f, 0xe4, 0xc6, 0xcc, 00, - 0x32, 0xb3, 0x3f, 0xcc, 0x5b, 0x1c, 0x63, 0xa0, 0xc0, 0x22, - 0xbb, 0xca, 0x28, 0x5a, 0xd, 0xea, 0x47, 0x71, 0x19, 0x96, - 0xda, 0x58, 0xd7, 00, 0xba, 0x15, 0x19, 0xf7, 0x15, 0xcd, - 0xfc, 0x3b, 0xf0, 0xdd, 0xe7, 0x84, 0x7c, 0xd, 0xa7, 0xe8, - 0x97, 0xf2, 0x41, 0x25, 0xcd, 0xb7, 0x99, 0xbd, 0xe0, 0x62, - 0x50, 0xee, 0x91, 0x98, 0x60, 0x90, 0xf, 0x42, 0x3b, 0x57, - 0x51, 0x45, 0xb, 0x4b, 0xf9, 0x83, 0xd6, 0xc7, 0x9c, 0xaf, - 0x84, 0xbc, 0x61, 0xe1, 0x5d, 0x4f, 0x51, 0x6f, 0x5, 0x5e, - 0xe8, 0x8f, 0xa6, 0x6a, 0x17, 0xd, 0x74, 0xf6, 0x7a, 0xba, - 0x4a, 0x3e, 0xcf, 0x21, 0xfb, 0xde, 0x5b, 0x47, 0xd4, 0x1f, - 0x43, 0xd3, 0x3, 0x1d, 0xc9, 0xde, 0xf0, 0x9f, 0x85, 0x26, - 0xd1, 0x65, 0xd4, 0x75, 0x4d, 0x56, 0xf1, 0x2f, 0xb5, 0xbd, - 0x55, 0xd5, 0xef, 0x27, 0x44, 0xdb, 0x1a, 0x80, 0x30, 0xb1, - 0xc6, 0x3a, 0xec, 0x51, 0xc0, 0xcf, 0x27, 0xa9, 0xae, 0xa2, - 0x8a, 0x16, 0x8a, 0xdf, 0x2f, 0x90, 0x3d, 0x59, 0xe6, 0x76, - 0xfe, 0xf, 0xf1, 0xcf, 0x85, 0x1a, 0xef, 0x4f, 0xf0, 0x76, - 0xab, 0xa3, 0x36, 0x89, 0x71, 0x23, 0x4b, 0xc, 0x5a, 0xa4, - 0x72, 0x79, 0x96, 0x4c, 0xc4, 0x96, 0x11, 0xec, 0x4, 0x30, - 0xe7, 0x23, 0x77, 0xe5, 0xd4, 0x9d, 0x18, 0xbe, 0x17, 0xe9, - 0xc7, 0xe1, 0xfd, 0xcf, 0x86, 0x2e, 0x6f, 0x66, 0x9a, 0x6b, - 0xa9, 0x8d, 0xd4, 0xfa, 0x86, 0xd0, 0xb2, 0x35, 0xc9, 0x21, - 0xbc, 0xdc, 0x76, 0xe4, 0xe, 0x33, 0xd3, 0x8c, 0xf7, 0xae, - 0xee, 0x8a, 0x3a, 0x58, 0x3a, 0xdc, 0xf3, 0x39, 0xfc, 0x3b, - 0xf1, 0x43, 0x53, 0xd3, 0x5b, 0x41, 0xbf, 0xd7, 0xf4, 0x18, - 0xb4, 0xd9, 0x14, 0xc3, 0x2e, 0xa3, 0x6f, 0xc, 0xa6, 0xf2, - 0x48, 0xb9, 0x1f, 0x74, 0xe1, 0x3, 0x30, 0xe0, 0xe0, 0xf1, - 0x93, 0x83, 0xeb, 0xde, 0xe8, 0xba, 0x45, 0xa6, 0x81, 0xa2, - 0xd9, 0xe9, 0x56, 0x8, 0x52, 0xd6, 0xd6, 0x21, 0x1c, 0x60, - 0x9c, 0x9c, 0xe, 0xe4, 0xfa, 0x9e, 0xa7, 0xeb, 0x57, 0xe8, - 0xa7, 0x71, 0x58, 0xe5, 0x3e, 0x21, 0x78, 0x66, 0xf7, 0xc5, - 0x9e, 0x1c, 0x8f, 0x4e, 0xb0, 0x96, 0xde, 0x39, 0x96, 0xee, - 0x19, 0xcb, 0x4e, 0xc4, 0x2e, 0xd4, 0x6c, 0x91, 0xc0, 0x3c, - 0xd7, 0x57, 0x45, 0x14, 0x96, 0x9a, 0x7f, 0x5d, 0x3f, 0xc8, - 0x7d, 0x6f, 0xfd, 0x7f, 0x5a, 0x9c, 0xe, 0x8b, 0xe0, 0x6d, - 0x47, 0xc3, 0x1f, 0x11, 0xaf, 0xf5, 0x6d, 0x1a, 0x7b, 0x55, - 0xf0, 0xf6, 0xa8, 0x9b, 0xee, 0xec, 0x5d, 0xd9, 0x5a, 0x39, - 0xb9, 0x3b, 0xe3, 0x1, 0x48, 0xc6, 0x7b, 0x64, 0x7d, 0xe3, - 0xe8, 0x2a, 0xff, 00, 0x8f, 0x3c, 0x2b, 0x7d, 0xe2, 0x83, - 0xe1, 0xf3, 0x65, 0x2d, 0xbc, 0x7f, 0xd9, 0xda, 0xac, 0x57, - 0xb3, 0x79, 0xec, 0xc3, 0x72, 0x2e, 0x72, 0x17, 00, 0xe4, - 0xf3, 0xdf, 0x3, 0xde, 0xba, 0xfa, 0x28, 0x5a, 0x5a, 0xdd, - 0x1, 0xeb, 0x7f, 0x30, 0xae, 0x2, 0xff, 00, 0xc1, 0x1a, - 0xd6, 0x8d, 0xae, 0x5d, 0xeb, 0x7e, 0x6, 0xd4, 0xed, 0x2c, - 0xe5, 0xbd, 0x7f, 0x32, 0xf3, 0x4c, 0xbf, 0x8d, 0x9a, 0xd6, - 0x77, 0xe7, 0xe7, 0xca, 0xfc, 0xc8, 0xdc, 0x93, 0xf2, 0xf5, - 0x38, 0xe8, 0x2b, 0xbf, 0xa2, 0x8b, 0x6b, 0x70, 0xf2, 0x3c, - 0xe2, 0x7f, 0x6, 0x78, 0xb7, 0xc5, 0xf2, 0x45, 0xf, 0x8d, - 0xf5, 0x7d, 0x3a, 0x3d, 0x26, 0x27, 0x57, 0x6d, 0x37, 0x45, - 0x49, 0x2, 0x5d, 0x10, 0x72, 0x3c, 0xc7, 0x93, 0xe6, 0x3, - 0x38, 0xf9, 0x47, 0x7, 0xd8, 0x80, 0x6b, 0xa3, 0xf1, 0x7f, - 0x83, 0x6c, 0x7c, 0x5d, 0xe1, 0xf5, 0xd2, 0xe4, 0x91, 0xec, - 0xe4, 0xb7, 0x75, 0x96, 0xce, 0xe2, 0xe, 0x1a, 0xda, 0x45, - 0x18, 0x56, 00, 0x63, 0x81, 0xd3, 0x1c, 0x7e, 0x7, 0x4, - 0x74, 0x94, 0x51, 0xd2, 0xc0, 0xb4, 0x77, 0x3c, 0xe9, 0x2c, - 0x7e, 0x2e, 0x43, 0x1, 0xb1, 0x5d, 0x5b, 0xc2, 0xb3, 0x46, - 0x33, 0x1a, 0xea, 0x12, 0xc3, 0x30, 0xb8, 0x2b, 0x9e, 0x1c, - 0xa0, 0x1e, 0x5e, 0xf0, 0x39, 0xc7, 0x4c, 0x8e, 0x73, 0xd6, - 0xba, 0x2f, 0x7, 0x78, 0x4a, 0x2f, 0x9, 0x69, 0xb7, 0x11, - 0x1b, 0xb9, 0x2f, 0xaf, 0xaf, 0x27, 0x6b, 0x9b, 0xdb, 0xc9, - 0x14, 0x2b, 0x4f, 0x2b, 0x75, 0x3b, 0x47, 0xa, 0x3d, 0x5, - 0x74, 0x74, 0x51, 0x70, 0xa, 0x28, 0xa2, 0x80, 0xa, 0x28, - 0xa2, 0x80, 0xa, 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa2, 0x80, - 0xa, 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa2, 0x80, 0x30, 0xbc, - 0x65, 0xff, 00, 0x22, 0x9d, 0xff, 00, 0xfb, 0xab, 0xff, - 00, 0xa1, 0xad, 0x78, 0xcd, 0x7b, 0x37, 0x8c, 0xbf, 0xe4, - 0x53, 0xbf, 0xff, 00, 0x75, 0x7f, 0xf4, 0x35, 0xaf, 0x19, - 0xaf, 0xa7, 0xc9, 0x3f, 0x81, 0x2f, 0x5f, 0xd1, 0x1e, 0x16, - 0x69, 0xfc, 0x55, 0xe9, 0xfa, 0xb0, 0xa2, 0x8a, 0x2b, 0xd9, - 0x3c, 0xd2, 0x6b, 0x4f, 0xf8, 0xfe, 0xb6, 0xff, 00, 0xae, - 0xc9, 0xff, 00, 0xa1, 0xa, 0xf7, 0xda, 0xf0, 0x2b, 0x42, - 0x5, 0xed, 0xb9, 0x24, 00, 0x25, 0x42, 0x49, 0xff, 00, - 0x78, 0x57, 0xbe, 0x8a, 0xf9, 0xdc, 0xf7, 0xe2, 0x87, 0xcf, - 0xf4, 0x3d, 0x9c, 0xab, 0x69, 0x7c, 0x86, 0x19, 0xa2, 0x52, - 0x41, 0x91, 0x1, 0x1d, 0x41, 0x61, 0x5c, 0xb7, 0x8d, 0xbc, - 0x2f, 0x17, 0x8b, 0xec, 0xad, 0x2d, 0xc6, 0xa5, 0x1d, 0xaf, - 0x91, 0x29, 0x93, 0x76, 0xd0, 0xfb, 0xb2, 0x31, 0x8e, 0xa2, - 0x97, 0x50, 0xf8, 0x75, 0xe1, 0xad, 0x53, 0x51, 0x9e, 0xfe, - 0xee, 0xd2, 0x57, 0xb8, 0x9d, 0xf7, 0xc8, 0xc2, 0x77, 00, - 0x9f, 0xa0, 0x35, 0x5b, 0xfe, 0x15, 0x5f, 0x84, 0xff, 00, - 0xe7, 0xc6, 0x6f, 0xfc, 0x9, 0x93, 0xfc, 0x6b, 0xc1, 0x3d, - 0x61, 0x9e, 0x9, 0xf0, 0x5c, 0x7e, 0xf, 0xbb, 0xbc, 0x9c, - 0xea, 0xd1, 0xdd, 0x7d, 0xa1, 0x15, 0x31, 0xb0, 0x26, 0xdc, - 0x12, 0x7f, 0xbc, 0x7d, 0x6b, 0xb3, 0xf3, 0xe1, 0xff, 00, - 0x9e, 0xb1, 0xff, 00, 0xdf, 0x42, 0xb8, 0xff, 00, 0xf8, - 0x55, 0x7e, 0x13, 0xff, 00, 0x9f, 0x19, 0xbf, 0xf0, 0x26, - 0x4f, 0xf1, 0xa3, 0xfe, 0x15, 0x5f, 0x84, 0xff, 00, 0xe7, - 0xc6, 0x6f, 0xfc, 0x9, 0x93, 0xfc, 0x68, 0x2, 0xb7, 0x8a, - 0xbe, 0x1c, 0xe8, 0xde, 0x21, 0xb9, 0x92, 0xfa, 0xda, 0xed, - 0x6c, 0x2f, 0x9f, 0x97, 0x64, 0xc3, 0x24, 0x87, 0xd5, 0x97, - 0x3d, 0x7d, 0xc1, 0xae, 0x2a, 0x4f, 0x84, 0x5a, 0xc2, 0xbe, - 0x23, 0xd5, 0x34, 0xb7, 0x5f, 0x53, 0x23, 0x29, 0xfc, 0xb0, - 0x6b, 0xbe, 0xff, 00, 0x85, 0x57, 0xe1, 0x3f, 0xf9, 0xf1, - 0x9b, 0xff, 00, 0x2, 0x64, 0xff, 00, 0x1a, 0x3f, 0xe1, - 0x55, 0xf8, 0x4f, 0xfe, 0x7c, 0x66, 0xff, 00, 0xc0, 0x99, - 0x3f, 0xc6, 0x80, 0x39, 0x3d, 0x2b, 0xe0, 0xfa, 0x79, 0xca, - 0xfa, 0xbe, 0xb5, 0x9, 0x8c, 0x1e, 0x62, 0xb5, 0xea, 0xde, - 0xdb, 0x9b, 0xa7, 0xe5, 0x5e, 0xa5, 0xa7, 0x5a, 0xe9, 0xda, - 0x4d, 0x84, 0x56, 0x56, 0x2b, 0xc, 0x16, 0xf1, 0xc, 0x2a, - 0x2b, 0xf, 0xf2, 0x4f, 0xbd, 0x73, 0x3f, 0xf0, 0xaa, 0xfc, - 0x27, 0xff, 00, 0x3e, 0x33, 0x7f, 0xe0, 0x4c, 0x9f, 0xe3, - 0x47, 0xfc, 0x2a, 0xbf, 0x9, 0xff, 00, 0xcf, 0x8c, 0xdf, - 0xf8, 0x13, 0x27, 0xf8, 0xd0, 0x7, 0x61, 0xe7, 0xc3, 0xff, - 00, 0x3d, 0x63, 0xff, 00, 0xbe, 0x85, 0x79, 0x5d, 0xf7, - 0xc2, 0x1b, 0x6b, 0x8d, 0x42, 0xe6, 0x7b, 0x7d, 0x76, 0x38, - 0x61, 0x96, 0x56, 0x74, 0x8b, 0xc9, 0x7, 0x60, 0x27, 0x38, - 0xce, 0xee, 0x71, 0x5d, 0x27, 0xfc, 0x2a, 0xbf, 0x9, 0xff, - 00, 0xcf, 0x8c, 0xdf, 0xf8, 0x13, 0x27, 0xf8, 0xd1, 0xff, - 00, 0xa, 0xaf, 0xc2, 0x7f, 0xf3, 0xe3, 0x37, 0xfe, 0x4, - 0xc9, 0xfe, 0x34, 0x1, 0xab, 0xe1, 0x4d, 0x12, 0xd3, 0xc2, - 0xfa, 0x4, 0x5a, 0x6c, 0x77, 0x51, 0xcc, 0xca, 0xcc, 0xf2, - 0x4b, 0xc2, 0xef, 0x62, 0x7a, 0xe3, 0x3c, 0x71, 0x81, 0xf8, - 0x56, 0xdf, 0x9f, 0xf, 0xfc, 0xf5, 0x4f, 0xfb, 0xe8, 0x57, - 0x1f, 0xff, 00, 0xa, 0xaf, 0xc2, 0x7f, 0xf3, 0xe3, 0x37, - 0xfe, 0x4, 0xc9, 0xfe, 0x34, 0xe4, 0xf8, 0x5b, 0xe1, 0x44, - 0x91, 0x5d, 0x6c, 0xa6, 0xdc, 0xac, 0x18, 0x7f, 0xa4, 0xbf, - 0x51, 0xcf, 0xad, 00, 0x76, 0x55, 0xe2, 0xde, 0x2e, 0xff, - 00, 0x91, 0xb3, 0x52, 0xff, 00, 0xae, 0xa3, 0xff, 00, - 0x41, 0x15, 0xed, 0x35, 0xe2, 0xbe, 0x2d, 0x21, 0xbc, 0x59, - 0xa9, 0x10, 0x41, 0x1e, 0x68, 0x1c, 0x7f, 0xba, 0x2b, 0xd9, - 0xc9, 0x3f, 0x8d, 0x2f, 0x4f, 0xd5, 0x1e, 0x66, 0x69, 0xfc, - 0x25, 0xea, 0x63, 0x51, 0x45, 0x15, 0xf4, 0xe7, 0x86, 0x15, - 0xea, 0x7f, 0xd, 0xff, 00, 0xe4, 0x5c, 0x9f, 0xfe, 0xbe, - 0x9b, 0xff, 00, 0x41, 0x4a, 0xf2, 0xca, 0xf5, 0x3f, 0x86, - 0xff, 00, 0xf2, 0x2e, 0x4f, 0xff, 00, 0x5f, 0x4d, 0xff, - 00, 0xa0, 0xa5, 0x79, 0x79, 0xc7, 0xfb, 0xb3, 0xf5, 0x47, - 0x7e, 0x5b, 0xfc, 0x7f, 0x93, 0x3b, 0xa, 0xce, 0xd5, 0x7f, - 0xe5, 0x8f, 0xd5, 0xbf, 0x95, 0x68, 0xd6, 0x76, 0xab, 0xff, - 00, 0x2c, 0x3e, 0xad, 0xfc, 0xab, 0xe4, 0xcf, 0xa0, 0x2e, - 0x5b, 0xff, 00, 0xa8, 0x4f, 0xa5, 0x64, 0x78, 0xaf, 0xc4, - 0x30, 0x78, 0x6f, 0x42, 0x9e, 0xf6, 0x56, 0x1b, 0x80, 0xc2, - 0x2f, 0x72, 0x6b, 0x5e, 0xdf, 0x8b, 0x75, 0xfa, 0x57, 0xcf, - 0xbf, 0x17, 0x7c, 0x4c, 0xda, 0x9f, 0x89, 0x7f, 0xb3, 0x23, - 0x7f, 0xdc, 0x5a, 0x70, 0x70, 0x78, 0x63, 0x4d, 0x2b, 0xb2, - 0x66, 0xec, 0x8e, 0x56, 0xf7, 0x53, 0xb8, 0xd5, 0xb5, 0x19, - 0xaf, 0xae, 0x9c, 0xb4, 0x92, 0x36, 0x79, 0xad, 0x1d, 0x2a, - 0xd6, 0xe7, 0x50, 0x9d, 0x61, 0xb4, 0x85, 0xa5, 0x72, 0x71, - 0xf2, 0x8c, 0xe2, 0xa4, 0xf0, 0x77, 0x83, 0xb5, 0xf, 0x14, - 0xdd, 0xa8, 0x89, 0xc, 0x76, 0xaa, 0x7e, 0x79, 0x48, 0xe3, - 0x1e, 0xd5, 0xf4, 0xf, 0x87, 0xbc, 0x2f, 0xa7, 0x78, 0x76, - 0xd1, 0x62, 0xb5, 0x88, 0x19, 00, 0xf9, 0xa4, 0x23, 0x93, - 0x5a, 0xb9, 0xa4, 0x71, 0xc6, 0x8b, 0x9b, 0xbb, 0x39, 0x2f, - 0xe, 0x7c, 0x39, 0x68, 0xd1, 0x27, 0xd5, 0x1f, 0xe6, 0xeb, - 0xe5, 0xaf, 0x4f, 0xc6, 0xbb, 0xfb, 0x4d, 0x3e, 0xd6, 0xc6, - 0x3f, 0x2e, 0xde, 0x15, 0x45, 0xf6, 0x15, 0x66, 0x8a, 0xc9, - 0xc9, 0xb3, 0xae, 0x34, 0xe3, 0x15, 0xa0, 0x50, 0x48, 0x3, - 0x27, 0xa5, 0x19, 0xc0, 0xc9, 0xae, 0xb, 0xc6, 0xde, 0x32, - 0x5b, 0x3b, 0x77, 0xb0, 0xd3, 0xdf, 0x74, 0xec, 0x30, 0xce, - 0x3f, 0x86, 0x84, 0xae, 0x39, 0x49, 0x45, 0x5d, 0x9c, 0x27, - 0xc5, 0x8d, 0x79, 0x35, 0x7d, 0x5d, 0x2c, 0x2d, 0xdb, 0x31, - 0x5b, 0x64, 0x31, 0x7, 0x82, 0x6b, 0x17, 0xc1, 0x7e, 0x32, - 0xbd, 0xf0, 0xce, 0xa3, 0x1c, 0x52, 0x48, 0xd2, 0x58, 0xc8, - 0x70, 0xc8, 0xc7, 0xee, 0xfb, 0xd6, 0x75, 0xc4, 0x2d, 0x23, - 0xb3, 0xb9, 0x25, 0x98, 0xe4, 0x93, 0x54, 0x65, 0xb6, 0xc8, - 0x20, 0x8a, 0xd9, 0x45, 0x5a, 0xc7, 0xb, 0xa8, 0xf9, 0xae, - 0x7d, 0x3f, 0x6d, 0x7b, 0xd, 0xdd, 0xb4, 0x77, 0x10, 0x36, - 0xe8, 0xe4, 0x5d, 0xca, 0x69, 0xed, 0x30, 0xc7, 0x5a, 0xf3, - 0x2f, 0x86, 0xba, 0xdb, 0xcb, 0xa5, 0xbe, 0x9f, 0x33, 0x92, - 0xf1, 0x1c, 0xae, 0x7b, 0xa, 0xed, 0x9a, 0xeb, 0x8e, 0xb5, - 0x16, 0x3a, 0x63, 0x3b, 0xab, 0x97, 0x66, 0xb8, 0xf7, 0xad, - 0xb, 0x2b, 0x95, 0xb8, 0x84, 0x73, 0xf3, 0xe, 0xa2, 0xb9, - 0x89, 0x6e, 0xb8, 0xeb, 0x55, 0xa1, 0xd5, 0x9e, 0xc6, 0xe0, - 0x48, 0xa7, 0x23, 0xb8, 0xf5, 0xa1, 0xc4, 0x6a, 0x76, 0x67, - 0x73, 0x48, 0x40, 0x23, 0x4, 0x3, 0xf5, 0xaa, 0xb6, 0x1a, - 0x8c, 0x1a, 0x84, 0x2, 0x48, 0x5c, 0x13, 0xdd, 0x7b, 0x8a, - 0xb7, 0x59, 0x9a, 0xa7, 0x73, 0x22, 0xff, 00, 0xc3, 0x9a, - 0x7d, 0xf8, 0x24, 0xc4, 0x12, 0x43, 0xfc, 0x6a, 0x39, 0xae, - 0x7e, 0x7f, 0xf, 0x5c, 0x69, 0xef, 0x94, 0x1e, 0x64, 0x5d, - 0x88, 0xeb, 0x5d, 0xbd, 0x4, 0x2, 0x30, 0x7a, 0x53, 0xb8, - 0x9c, 0x53, 0x38, 0xeb, 0x54, 0xe8, 0x31, 0x5b, 0xfa, 0x7c, - 0x85, 0x3e, 0x43, 0xf7, 0x4d, 0x3e, 0xe3, 0x4d, 0x8d, 0x9b, - 0xcc, 0x88, 0x6d, 0x6f, 0x4a, 0x6c, 0x11, 0x95, 0x38, 0x23, - 0x4, 0x53, 0xdc, 0x49, 0x58, 0xd1, 0xa8, 0x2e, 0x7e, 0xe5, - 0x4c, 0xbf, 0x74, 0x54, 0x37, 0x3f, 0x72, 0xa4, 0xb2, 0x7a, - 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa2, - 0x80, 0xa, 0x28, 0xa2, 0x80, 0x3c, 0xce, 0xd7, 0xfe, 0x42, - 0x9a, 0xe7, 0xfd, 0x84, 0xe6, 0xfe, 0x95, 0xde, 0x68, 0x9f, - 0xf2, 0x7, 0x83, 0xfe, 0x5, 0xff, 00, 0xa1, 0x1a, 0xe0, - 0xed, 0x7f, 0xe4, 0x29, 0xae, 0x7f, 0xd8, 0x4e, 0x6f, 0xe9, - 0x5d, 0xe6, 0x89, 0xff, 00, 0x20, 0x78, 0x3f, 0xe0, 0x5f, - 0xfa, 0x11, 0xa0, 0xc, 0xff, 00, 0x3, 0xff, 00, 0xc8, - 0x97, 0xa5, 0xff, 00, 0xd7, 0x2f, 0xfd, 0x98, 0xd7, 0x41, - 0x5c, 0xff, 00, 0x81, 0xff, 00, 0xe4, 0x4b, 0xd2, 0xff, - 00, 0xeb, 0x97, 0xfe, 0xcc, 0x6b, 0xa0, 0xa0, 0x2, 0x8a, - 0x2b, 0x9e, 0xd7, 0xfc, 0x75, 0xe1, 0x9f, 0xb, 0xdf, 0x5b, - 0x59, 0x6b, 0x5a, 0xbc, 0x36, 0x97, 0x37, 0x3c, 0xc7, 0x1b, - 0x2b, 0x31, 0xc6, 0x71, 0x96, 0xda, 0xe, 0xd1, 0x9e, 0xed, - 0x81, 0xc1, 0xf4, 0x34, 0x1, 0xd0, 0xd1, 0x48, 0xac, 0xae, - 0x81, 0xd1, 0x83, 0x2b, 0xc, 0x82, 0xe, 0x41, 0x14, 0xb4, - 00, 0x51, 0x45, 0x67, 0x6b, 0xfa, 0xb4, 0x7a, 0xf, 0x87, - 0xb5, 0x1d, 0x5a, 0x45, 0xdc, 0x96, 0x76, 0xef, 0x36, 0xdf, - 0xef, 0x6d, 0x52, 0x40, 0xfc, 0x4f, 0x14, 0x9b, 0xb2, 0xbb, - 0x1a, 0x57, 0x76, 0x24, 0xd4, 0xb5, 0x9d, 0x2f, 0x46, 0x89, - 0x25, 0xd5, 0x75, 0x2b, 0x3b, 0x18, 0xdd, 0xb6, 0xa3, 0xdd, - 0x4e, 0xb1, 0x6, 0x3d, 0x70, 0xb, 0x11, 0x93, 0x4e, 0xd3, - 0xb5, 0x5d, 0x3b, 0x57, 0xb6, 0x37, 0x3a, 0x65, 0xfd, 0xad, - 0xec, 0x1, 0x8a, 0x99, 0x6d, 0xa6, 0x59, 0x17, 0x70, 0xed, - 0x95, 0x24, 0x67, 0x91, 0x5e, 0x7b, 0xe0, 0x3f, 0x5, 0x69, - 0xfa, 0xe6, 0x8d, 0xf, 0x8a, 0xfc, 0x57, 0x67, 0x6, 0xaf, - 0xad, 0x6a, 0xd1, 0xf9, 0xec, 0xd7, 0x88, 0x25, 0x8e, 0x18, - 0xdb, 0x94, 0x44, 0x46, 0xca, 0xa8, 0x3, 0x1d, 0xb3, 0xc9, - 0xe7, 0x15, 0x76, 0xff, 00, 0xe1, 0xd9, 0xd3, 0x3c, 0x53, - 0xa6, 0xf8, 0x83, 0xc1, 0x69, 0x67, 0xa5, 0x4e, 0x92, 0x8, - 0xf5, 0xb, 0x40, 0x4c, 0x50, 0x5c, 0xdb, 0xf7, 0x1b, 0x51, - 0x48, 0xc, 0x3b, 0x70, 0x6, 0x79, 0x3c, 0x8a, 0xab, 0x34, - 0xed, 0x2f, 0xf8, 0x62, 0x6f, 0x75, 0x74, 0x7a, 0x5, 0x15, - 0xca, 0x78, 0xa7, 0xc6, 0xa3, 0x42, 0xd4, 0x6d, 0xb4, 0x6d, - 0x33, 0x4a, 0x9f, 0x59, 0xd7, 0xae, 0x93, 0xcc, 0x8a, 0xc6, - 0x17, 0x11, 0x85, 0x8c, 0x1c, 0x17, 0x92, 0x43, 0xc2, 0x2f, - 0x5e, 0x4f, 0x7f, 0x4e, 0xb5, 0x5f, 0x42, 0xf1, 0xdd, 0xc5, - 0xd6, 0xbd, 0x1e, 0x83, 0xe2, 0x4d, 0x2, 0x7d, 0x3, 0x56, - 0x9d, 0x1a, 0x4b, 0x58, 0xe4, 0x9d, 0x27, 0x8a, 0xe1, 0x40, - 0x19, 0xb, 0x22, 0xe0, 0x17, 0x1c, 0xe5, 0x71, 0xc0, 0xef, - 0xce, 0x29, 0x2d, 0x76, 0x1b, 0xd3, 0x73, 0xb3, 0xa6, 0x99, - 0x10, 0x48, 0xb1, 0x97, 0x50, 0xec, 0x9, 0x55, 0x27, 0x92, - 0x6, 0x32, 0x40, 0xfc, 0x47, 0xe7, 0x5e, 0x6f, 0xf, 0xc5, - 0xd, 0x5f, 0x54, 0xd4, 0x35, 0x6d, 0x3f, 0x41, 0xf0, 0x64, - 0xfa, 0x9d, 0xd6, 0x99, 0x79, 0x24, 0x13, 0x81, 0x7c, 0x91, - 0x20, 0x45, 0x38, 0x57, 0xdc, 0xcb, 0xcb, 0x31, 0xd, 0xf2, - 00, 0x48, 0xc7, 0x5a, 0xe6, 0xed, 0xb5, 0x8f, 0x12, 0x8f, - 0x8f, 0xf7, 0x32, 0xff, 00, 0xc2, 0x28, 0xd, 0xcb, 0x69, - 0xab, 0x3, 0xc0, 0x35, 0x18, 0xf0, 0xb6, 0xfe, 0x6a, 0xff, - 00, 0xa4, 0x6e, 0xc7, 0x3f, 0xee, 0x75, 0xe6, 0x88, 0xea, - 0xd7, 0x9f, 0xf9, 0x5f, 0xfa, 0xff, 00, 0x80, 0xf, 0x4b, - 0xf9, 0x7f, 0x99, 0xec, 0xb0, 0xea, 0x36, 0x37, 0x17, 0xd3, - 0xd8, 0xc3, 0x7b, 0x6f, 0x25, 0xdd, 0xb8, 0x6, 0x68, 0x12, - 0x55, 0x32, 0x44, 0xf, 0x4d, 0xca, 0xe, 0x46, 0x7b, 0x66, - 0xa9, 0x5c, 0x78, 0xa7, 0xc3, 0xd6, 0x97, 0xd2, 0x58, 0xdc, - 0xeb, 0xda, 0x5c, 0x37, 0x71, 0x82, 0x64, 0x82, 0x4b, 0xc8, - 0xd6, 0x44, 00, 0x6e, 0x39, 0x52, 0x72, 0x38, 0xe7, 0xe9, - 0xcd, 0x73, 0x31, 0xf8, 0x97, 0xfe, 0x2a, 0xff, 00, 0x16, - 0xd8, 0xe8, 0xfe, 0x15, 0xb7, 0x9f, 0x57, 0xd3, 0xa1, 0x81, - 0x9a, 0x54, 0x9d, 0x22, 0x92, 0xfb, 0x70, 0x18, 0x56, 0x72, - 0xbc, 0x6d, 0x1d, 0x32, 0x4f, 0x4e, 0xd5, 0xe7, 0x3f, 0xe, - 0x66, 0xf2, 0xfc, 0x3d, 0xe2, 0x1d, 0x73, 0x54, 0xf0, 0x2d, - 0x8d, 0xec, 0x51, 0x3d, 0xed, 0xd4, 0xba, 0x9d, 0xc4, 0xd1, - 0x3b, 0xb3, 0x81, 0xf3, 0x41, 0x82, 0xa5, 0x80, 0x20, 0x91, - 0xbb, 0xa7, 0x27, 0x8e, 0x69, 0x27, 0xd7, 0xca, 0xe3, 0xb6, - 0xb6, 0xf3, 0xb7, 0xe1, 0xfd, 0x7f, 0x57, 0x3d, 0xf6, 0xda, - 0xea, 0xde, 0xf6, 0xda, 0x3b, 0x9b, 0x59, 0xe2, 0x9e, 0xde, - 0x55, 0xd, 0x1c, 0xb1, 0x38, 0x65, 0x70, 0x7a, 0x10, 0x47, - 0x4, 0x54, 0xb5, 0xc5, 0xc1, 0xe3, 0x7d, 0x23, 0x47, 0xf8, - 0x73, 0xa5, 0x6b, 0xf2, 0xd8, 0x1b, 0x3b, 0x7b, 0xa8, 0xa2, - 0x5b, 0x5d, 0x3a, 0xcd, 0x3, 0xb1, 0x77, 0x1f, 0x2c, 0x51, - 0x80, 0x14, 0x13, 0xf8, 0xa, 0xcf, 0x1f, 0x11, 0xf5, 0x9d, - 0x2d, 0xed, 0xee, 0x3c, 0x59, 0xe0, 0xbb, 0xad, 0x13, 0x4a, - 0x9d, 0x96, 0x31, 0x7c, 0xb7, 0xb1, 0xdc, 0xac, 0x4c, 0xc4, - 0x5, 0xf3, 0x55, 0x40, 0x28, 0xbc, 0xf5, 0x3d, 0xe, 0x6, - 0x2a, 0xad, 0xef, 0x34, 0x4a, 0x7a, 0x5c, 0xf4, 0x4a, 0xad, - 0x79, 0xa8, 0xd8, 0xe9, 0xde, 0x4f, 0xdb, 0x6f, 0x6d, 0xed, - 0xbc, 0xf9, 0x4, 0x50, 0xf9, 0xf2, 0xaa, 0x79, 0x8e, 0x7a, - 0x2a, 0xe4, 0xf2, 0x4f, 0xa0, 0xe6, 0xb0, 0x3c, 0x5d, 0xe3, - 0x5b, 0x7f, 0xb, 0xc7, 0x65, 0x4, 0x36, 0x73, 0x6a, 0x7a, - 0xae, 0xa2, 0xe6, 0x3b, 0x1b, 0x1b, 0x72, 0x3, 0x4c, 0x40, - 0xc9, 0x25, 0x8f, 0xa, 0xa3, 0x8c, 0xb7, 0x38, 0xcf, 0x4e, - 0xb8, 0xf3, 0x2f, 0x1d, 0xf8, 0xab, 0x52, 0xd5, 0x35, 0x5f, - 0x9, 0x69, 0x5a, 0xef, 0x87, 0x2e, 0x34, 0x3d, 0x49, 0x35, - 0xcb, 0x7b, 0x88, 0xe3, 0x69, 0xd2, 0xe2, 0x29, 0x62, 0xce, - 0xd2, 0x56, 0x45, 0xe3, 0x70, 0x24, 0x65, 0x7b, 0x64, 0x1e, - 0xf4, 0x47, 0xde, 0x92, 0x5e, 0x76, 0x1b, 0xd1, 0x5f, 0xc8, - 0xf7, 0x5a, 0xad, 0xe, 0xa3, 0x63, 0x71, 0x7d, 0x3d, 0x8c, - 0x37, 0xb6, 0xf2, 0x5d, 0xdb, 0x80, 0x66, 0x81, 0x25, 0x53, - 0x24, 0x40, 0xf4, 0xdc, 0xa0, 0xe4, 0x67, 0xb6, 0x6a, 0xcd, - 0x78, 0xac, 0x5e, 0x23, 0xb9, 0xd0, 0xbe, 0x35, 0x78, 0xc6, - 0xd, 0x37, 0x46, 0xb9, 0xd5, 0xf5, 0x3b, 0xc8, 0xed, 0x56, - 0xde, 0xd6, 0x17, 0x11, 0xae, 0x16, 0x30, 0x59, 0x9e, 0x46, - 0xe1, 0x14, 0x2, 0x39, 0x3d, 0xc8, 0x1d, 0xea, 0x57, 0xc5, - 0x6f, 0x51, 0xdb, 0x46, 0xcf, 0x6a, 0xa2, 0xb8, 0xef, 0xc, - 0xf8, 0xe9, 0xf5, 0x9d, 0x62, 0xeb, 0x40, 0xd5, 0xb4, 0x69, - 0xf4, 0x5d, 0x7e, 0xde, 0x2f, 0x3b, 0xec, 0x73, 0x4a, 0xb2, - 0x24, 0xb1, 0x9e, 0x8c, 0x92, 0x28, 0xc3, 0xe, 0x99, 0xe3, - 0x8f, 0x7c, 0x1c, 0x5a, 0xf0, 0x3f, 0x8b, 0xff, 00, 0xe1, - 0x30, 0xd2, 0xae, 0xae, 0x25, 0xb0, 0x3a, 0x7d, 0xe5, 0x9d, - 0xd4, 0x96, 0x97, 0x36, 0x8d, 0x2f, 0x98, 0x63, 0x75, 0xc7, - 0x7c, 0xc, 0xf0, 0x7d, 0x3d, 0x69, 0xdb, 0xfc, 0xc4, 0x74, - 0xf5, 0x9b, 0xa9, 0xf8, 0x87, 0x44, 0xd1, 0x64, 0x48, 0xf5, - 0x5d, 0x63, 0x4f, 0xb0, 0x79, 0x6, 0xe4, 0x5b, 0xab, 0x94, - 0x88, 0xb0, 0xf5, 0x1, 0x88, 0xcd, 0x66, 0xe8, 0x5e, 0x2c, - 0xfe, 0xde, 0xf1, 0x36, 0xbb, 0xa5, 0xdb, 0xd8, 0x95, 0xb4, - 0xd2, 0x64, 0x48, 0x1a, 0xf0, 0xc9, 0x91, 0x2c, 0xa4, 0x65, - 0x90, 0x2e, 0x38, 0xdb, 0xd0, 0x9c, 0xfe, 0x15, 0xa5, 0xa9, - 0xf8, 0x7b, 0x44, 0xd6, 0xa4, 0x49, 0x35, 0x5d, 0x1f, 0x4f, - 0xbf, 0x78, 0xc6, 0xd4, 0x6b, 0xab, 0x64, 0x94, 0xa8, 0xf4, - 0x5, 0x81, 0xc5, 0x2e, 0xcd, 0x7, 0x74, 0x51, 0xff, 00, - 0x84, 0xef, 0xc1, 0xff, 00, 0xf4, 0x35, 0xe8, 0x7f, 0xf8, - 0x31, 0x87, 0xff, 00, 0x8a, 0xad, 0x8, 0xf5, 0xed, 0x1a, - 0x6d, 0x29, 0xf5, 0x58, 0xb5, 0x6b, 0x7, 0xd3, 0x93, 0x3b, - 0xae, 0xd6, 0xe5, 0xc, 0x4b, 0x83, 0x83, 0x97, 0xce, 0x7, - 0x3e, 0xf5, 0xe5, 0xbe, 0x11, 0xf0, 0xaf, 0x87, 0x6e, 0x7e, - 0x2b, 0xf8, 0xe6, 0xce, 0x7d, 0x7, 0x4b, 0x96, 0xd6, 0xd8, - 0xda, 0xf9, 0x10, 0x49, 0x67, 0x1b, 0x24, 0x59, 0x8c, 0x93, - 0xb5, 0x48, 0xc2, 0xe7, 0xbe, 0x2b, 0xa3, 0xf8, 0x99, 0xa6, - 0xd8, 0x69, 0x3f, 0x8, 0x75, 0xeb, 0x5d, 0x3a, 0xca, 0xda, - 0xce, 0xdc, 0x42, 0x18, 0x45, 0x6f, 0x12, 0xc6, 0x80, 0x97, - 0x5c, 0x9c, 0x28, 0x2, 0x89, 0x3e, 0x58, 0x73, 0x79, 0x5c, - 0x69, 0x5e, 0x7c, 0xbe, 0x76, 0x3b, 0xd4, 0x74, 0x96, 0x35, - 0x92, 0x36, 0x57, 0x46, 0x1, 0x95, 0x94, 0xe4, 0x10, 0x7a, - 0x10, 0x6a, 0xb3, 0x6a, 0x9a, 0x7a, 0x5e, 0x4b, 0x66, 0xd7, - 0xd6, 0xcb, 0x75, 0x14, 0x5e, 0x74, 0x90, 0x99, 0x94, 0x3a, - 0x47, 0xfd, 0xf2, 0xb9, 0xc8, 0x5f, 0x7e, 0x94, 0xcd, 0x13, - 0xfe, 0x40, 0x3a, 0x77, 0xfd, 0x7a, 0xc5, 0xff, 00, 0xa0, - 0x8a, 0xe1, 0xed, 0x14, 0x37, 0xc7, 0xed, 0x55, 0x58, 0x2, - 0xe, 0x83, 0x18, 0x20, 0xf7, 0xfd, 0xe5, 0x54, 0x95, 0xa5, - 0xca, 0xbc, 0xff, 00, 0x4, 0xdf, 0xe8, 0x42, 0x95, 0xe3, - 0xcd, 0xe9, 0xf8, 0xb4, 0x77, 0xf6, 0x77, 0xb6, 0x9a, 0x8d, - 0xa4, 0x77, 0x76, 0x37, 0x50, 0xdd, 0x5b, 0x48, 0x32, 0x93, - 0x41, 0x20, 0x74, 0x6e, 0x71, 0xc3, 0xe, 0xd, 0x36, 0xfb, - 0x51, 0xb1, 0xd3, 0x21, 0x59, 0xaf, 0xef, 0x2d, 0xed, 0x22, - 0x67, 0x8, 0x1e, 0xe2, 0x55, 0x8d, 0x4b, 0x1e, 0x83, 0x24, - 0xf5, 0x3e, 0x95, 0xc0, 0x7c, 0x2e, 0x56, 0xd0, 0x6f, 0xfc, - 0x47, 0xe0, 0xb9, 0x8f, 0x1a, 0x5d, 0xe1, 0x9e, 0xd0, 0x7a, - 0xdb, 0x4b, 0xf3, 0x2e, 0x3e, 0x87, 0x39, 0xf7, 0x34, 0xff, - 00, 0x15, 0x1, 0xe2, 0x4f, 0x8a, 0x5e, 0x1b, 0xf0, 0xee, - 0x3, 0xda, 0xe9, 0xaa, 0xda, 0xbd, 0xe2, 0x91, 0x91, 0x91, - 0xf2, 0xc4, 0xf, 0xfc, 0xb, 0x26, 0x96, 0xed, 0x5b, 0xaf, - 0xfc, 0x3b, 0xfb, 0xb5, 0x29, 0xe8, 0x9d, 0xfa, 0x7f, 0x4b, - 0xef, 0xd0, 0xf4, 0x5a, 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa2, - 0x80, 0xa, 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa2, 0x80, 0xa, - 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa2, - 0x80, 0x30, 0xbc, 0x65, 0xff, 00, 0x22, 0x9d, 0xff, 00, - 0xfb, 0xab, 0xff, 00, 0xa1, 0xad, 0x78, 0xcd, 0x7b, 0x57, - 0x8a, 0xe0, 0x96, 0xe7, 0xc3, 0x17, 0xd1, 0x41, 0x1b, 0x49, - 0x21, 0x40, 0x42, 0xa8, 0xc9, 0x38, 0x60, 0x4f, 0xe8, 0x2b, - 0xc5, 0x6b, 0xe9, 0xf2, 0x46, 0xbd, 0x8c, 0x97, 0x9f, 0xe8, - 0x8f, 0xb, 0x34, 0x5f, 0xbd, 0x5e, 0x81, 0x45, 0x14, 0x57, - 0xb2, 0x79, 0xa1, 0x5d, 0xef, 0x82, 0xbc, 0x5f, 0xe5, 0x18, - 0xf4, 0x9d, 0x4a, 0x4f, 0x93, 0x85, 0xb7, 0x9d, 0x8f, 0x4f, - 0x44, 0x63, 0xe9, 0xe8, 0x7f, 0xa, 0xe0, 0xa8, 0xeb, 0x5c, - 0xf8, 0x9c, 0x34, 0x31, 0x14, 0xf9, 0x27, 0xff, 00, 0xc, - 0x6b, 0x42, 0xb4, 0xa8, 0xcf, 0x9a, 0x27, 0xd0, 0x74, 0x57, - 0x3, 0xe0, 0xaf, 0x17, 0xf9, 0xbe, 0x5e, 0x93, 0xa9, 0x49, - 0xfb, 0xcf, 0xbb, 0x4, 0xcc, 0x7e, 0xf7, 0xfb, 0x24, 0xfa, - 0xfa, 0x1e, 0xf5, 0xdf, 0x57, 0xc7, 0x62, 0x30, 0xf3, 0xc3, - 0xd4, 0x70, 0x9f, 0xfc, 0x39, 0xf4, 0xb4, 0x6b, 0x46, 0xb4, - 0x39, 0xa2, 0x15, 0xcf, 0x78, 0xb7, 0xc5, 0xd6, 0x5e, 0x11, - 0xd3, 0xe3, 0xb8, 0xb9, 0x8d, 0xe7, 0x9a, 0x66, 0xdb, 0xc, - 0x11, 0x9c, 0x17, 0x23, 0xa9, 0xcf, 0x60, 0x3d, 0x7d, 0xc5, - 0x74, 0x35, 0xe7, 0xbf, 0x13, 0xb4, 0x8d, 0x52, 0x57, 0xd2, - 0x75, 0xcd, 0x2a, 0x3, 0x71, 0x2e, 0x9b, 0x21, 0x76, 0x88, - 0x26, 0xf3, 0x8c, 0x82, 0x1b, 0x6f, 0x70, 0xa, 0xf3, 0xf5, - 0xac, 0xd, 0x47, 0x68, 0x3f, 0x14, 0x6d, 0xf5, 0x3d, 0x66, - 0x1d, 0x33, 0x51, 0xd2, 0xae, 0x34, 0xd9, 0xae, 0x8, 0x58, - 0x59, 0xdb, 0x21, 0x98, 0xf4, 0x7, 0x20, 0x11, 0x9e, 0xc7, - 0xd6, 0xac, 0x5b, 0xfc, 0x46, 0x4b, 0x9b, 0xdd, 0x56, 0xda, - 0x3d, 0x22, 0xe1, 0x9f, 0x4f, 0x99, 0x21, 0x3b, 0x24, 0xc, - 0x5f, 0x74, 0xbe, 0x5e, 0x40, 0x3, 0x80, 0x3a, 0xfd, 0x2b, - 0x9b, 0xb1, 0xf1, 0x96, 0x83, 0xe3, 0x2d, 0x67, 0x4c, 0xb7, - 0xf1, 0x1e, 0x98, 0xf6, 0x9a, 0x85, 0xbc, 0xa0, 0x5b, 0xcd, - 0x1c, 0xa4, 0x27, 0x98, 0x48, 0x20, 0x37, 0x42, 0x39, 0x3, - 00, 0xe4, 0x66, 0xa7, 0xf8, 0x71, 0x93, 0xf1, 0xf, 0xc5, - 0x79, 0xeb, 0xe6, 0x3f, 0xfe, 0x8d, 0x6a, 00, 0xde, 0xb8, - 0xf8, 0x8a, 0x96, 0xd7, 0x7a, 0x5d, 0xbc, 0x9a, 0x45, 0xc2, - 0xb5, 0xfd, 0xcc, 0x90, 0xd, 0xee, 0x14, 0xa6, 0xd9, 0x7c, - 0xbd, 0xd8, 0x23, 0x90, 0x73, 0x9a, 0xc9, 0xb9, 0xf8, 0xc1, - 0x15, 0xbd, 0xed, 0xcd, 0xb8, 0xd0, 0x6e, 0x64, 0xf2, 0x25, - 0x68, 0xd9, 0x92, 0x50, 0x73, 0xb4, 0x91, 0x9e, 0x9c, 0x74, - 0xa8, 0x7e, 0x24, 0xff, 00, 0xc8, 0xf9, 0xe1, 0x2f, 0xfa, - 0xec, 0xbf, 0xfa, 0x35, 0x2a, 0xcf, 0xc2, 0xbf, 0xf9, 0x9, - 0xf8, 0xb3, 0xfe, 0xbf, 0xbf, 0xf6, 0x69, 0x28, 0x3, 0xa9, - 0xf0, 0xa7, 0x8c, 0x74, 0xef, 0x16, 0xda, 0x49, 0x25, 0xa0, - 0x78, 0xa7, 0x84, 0x81, 0x2c, 0x12, 0x63, 0x72, 0xe7, 0xa1, - 0xe3, 0xa8, 0x3e, 0xb5, 0xd0, 0xd7, 0x97, 0xe9, 0xf1, 0x26, - 0x95, 0xf1, 0xd2, 0xea, 0xda, 0xd1, 0x4, 0x70, 0xdd, 0xda, - 0x97, 0x74, 0x5e, 0x6, 0x4a, 0x86, 0x3c, 0x7d, 0x57, 0x3f, - 0x8d, 0x7a, 0x85, 00, 0x14, 0x51, 0x5c, 0x9f, 0x8c, 0x3c, - 0x58, 0xba, 0x34, 0x26, 0xce, 0xcd, 0x83, 0x6a, 0x12, 0xe, - 0xbd, 0x44, 0x40, 0xf7, 0x3e, 0xfe, 0x82, 0xb5, 0xa3, 0x46, - 0x75, 0xa6, 0xa1, 0x5, 0xab, 0x33, 0xab, 0x56, 0x34, 0xa2, - 0xe5, 0x2d, 0x88, 0x7c, 0x65, 0xe2, 0xe1, 0xa6, 0x23, 0x69, - 0xda, 0x7b, 0x83, 0x7a, 0xc3, 0xf7, 0x92, 0xf, 0xf9, 0x62, - 0xf, 0xfe, 0xcd, 0xfc, 0xab, 0xcb, 0x89, 0x24, 0x92, 0x49, - 0x24, 0xf2, 0x49, 0xef, 0x4a, 0xcc, 0xd2, 0x3b, 0x3b, 0xb1, - 0x67, 0x62, 0x4b, 0x33, 0x1c, 0x92, 0x7d, 0x4d, 0x25, 0x7d, - 0x8e, 0x13, 0x9, 0xc, 0x34, 0x39, 0x63, 0xbf, 0x57, 0xdc, - 0xf9, 0xbc, 0x46, 0x22, 0x55, 0xe7, 0xcc, 0xf6, 0xe8, 0x14, - 0x51, 0x45, 0x75, 0x18, 0x5, 0x7a, 0x9f, 0xc3, 0x7f, 0xf9, - 0x17, 0x27, 0xff, 00, 0xaf, 0xa6, 0xff, 00, 0xd0, 0x52, - 0xbc, 0xb2, 0xbd, 0x5f, 0xe1, 0xdc, 0x12, 0xc3, 0xe1, 0xa6, - 0x69, 0x23, 0x64, 0x12, 0xdc, 0x33, 0xa6, 0x47, 0xde, 0x5d, - 0xaa, 0x32, 0x3d, 0xb2, 0xd, 0x79, 0x59, 0xc3, 0xff, 00, - 0x66, 0xf9, 0xa3, 0xbf, 0x2d, 0x5f, 0xbf, 0xf9, 0x1d, 0x65, - 0x67, 0x6a, 0xbf, 0xf2, 0xc3, 0xea, 0xdf, 0xca, 0xb4, 0x6b, - 0x3b, 0x54, 0xff, 00, 0x96, 0x1f, 0x56, 0xfe, 0x55, 0xf2, - 0x87, 0xd0, 0x12, 0xc8, 0xfe, 0x56, 0x95, 0x2c, 0x9f, 0xdd, - 0x89, 0x8f, 0xe9, 0x5f, 0x35, 0xf8, 0x57, 0xc3, 0x37, 0x9e, - 0x3b, 0xf1, 0x7d, 0xd4, 0xaf, 0xb8, 0x5a, 0xc7, 0x33, 0x79, - 0xd2, 0x1f, 0x63, 0xd2, 0xbe, 0x96, 0x68, 0xbc, 0xfd, 0x36, - 0x48, 0xbf, 0xbf, 0x19, 0x5f, 0xcc, 0x56, 0x2f, 0x82, 0xfc, - 0x35, 0x17, 0x86, 0xb4, 0x63, 0x2, 0xa0, 0x13, 0x49, 0x23, - 0x3c, 0x8c, 0x3b, 0xe4, 0xd3, 0x4e, 0xc4, 0xca, 0x37, 0x35, - 0xf4, 0xbd, 0x2a, 0xd3, 0x47, 0xb0, 0x8e, 0xce, 0xce, 0x25, - 0x8e, 0x34, 0x18, 0xe0, 0x75, 0xab, 0xb4, 0x52, 0x33, 0x2a, - 0x8c, 0x93, 0x8a, 0x45, 0xb, 0x51, 0x4f, 0x71, 0x15, 0xb4, - 0x65, 0xe5, 0x70, 0xaa, 0x3d, 0x6a, 0xa5, 0xd6, 0xa3, 0xe5, - 0x82, 0x23, 0x5c, 0x9f, 0x5a, 0xe6, 0xb5, 0x9, 0x26, 0xbb, - 0x62, 0x65, 0x62, 0x47, 0xa7, 0x6a, 0x69, 0x11, 0x29, 0x58, - 0x83, 0xc4, 0x3e, 0x28, 0x9a, 0x74, 0x6b, 0x7b, 0x1c, 0xa2, - 0x1e, 0xb, 0xf7, 0x35, 0xc0, 0x5c, 0x5b, 0x96, 0x62, 0xcd, - 0x92, 0xc7, 0xa9, 0x3d, 0xeb, 0xab, 0xb8, 0xb5, 0xf4, 0x15, - 0x99, 0x35, 0xaf, 0xb5, 0x6a, 0x95, 0x8e, 0x79, 0xb7, 0x23, - 0x95, 0x96, 0xd4, 0xfa, 0x55, 0x47, 0xb5, 0xf6, 0xae, 0x99, - 0xec, 0xd9, 0xdb, 0x6a, 0xa1, 0x27, 0xd8, 0x56, 0x8d, 0x8f, - 0x82, 0xf5, 0x2d, 0x45, 0x81, 0x31, 0x18, 0xa3, 0x3f, 0xc6, - 0xd4, 0xee, 0x67, 0xc8, 0xde, 0xc7, 0x3d, 0xe1, 0x49, 0x4d, - 0x8e, 0xb1, 0xb8, 0x70, 0x1c, 0x6d, 0xae, 0xfd, 0xef, 0x7, - 0xad, 0x69, 0xe9, 0x3f, 0xf, 0xf4, 0xfb, 0x11, 0xbe, 0x72, - 0x65, 0x9b, 0xd4, 0x74, 0xa4, 0xd4, 0xbc, 0x23, 0x20, 0xdc, - 0xf6, 0x72, 0x71, 0xfd, 0xc3, 0x53, 0xcc, 0x8d, 0x55, 0x39, - 0x24, 0x62, 0x4b, 0x79, 0x90, 0x79, 0xac, 0xf9, 0xae, 0xb3, - 0x9e, 0x69, 0xb7, 0xf6, 0xd7, 0xd6, 0xc, 0x45, 0xc4, 0xe, - 0xbe, 0xf8, 0xac, 0x79, 0x6e, 0xfa, 0xe4, 0xe2, 0xa9, 0x19, - 0x49, 0xb4, 0x68, 0xc1, 0xac, 0xdc, 0x69, 0xb7, 0x2, 0x6b, - 0x79, 0x8, 0x20, 0xf2, 0x3b, 0x1a, 0xee, 0xf4, 0x2f, 0x1b, - 0x58, 0xea, 0x61, 0x61, 0xb8, 0x71, 0xd, 0xc7, 0x4f, 0x9b, - 0xa3, 0x1f, 0x6a, 0xf2, 0x49, 0xae, 0x3a, 0xf3, 0x59, 0xb3, - 0x5c, 0x10, 0xdb, 0x95, 0x8a, 0xb0, 0xe8, 0x47, 0x6a, 0x1c, - 0x53, 0x8, 0xd6, 0x71, 0x67, 0xd2, 0xc0, 0x86, 00, 0x82, - 0x8, 0x3e, 0x94, 0xb5, 0xe0, 0x9a, 0x27, 0xc4, 0x8d, 0x4f, - 0x44, 0x65, 0x8e, 0x66, 0x37, 0x16, 0xe3, 0xf8, 0x5b, 0x93, - 0x5e, 0x93, 0xa2, 0xfc, 0x4a, 0xd0, 0x75, 0x55, 0x51, 0x24, - 0xe2, 0xda, 0x63, 0xfc, 0xe, 0x6b, 0x27, 0x6, 0x8e, 0xa8, - 0x56, 0x8c, 0x8e, 0xca, 0x9a, 0x50, 0x13, 0x9e, 0xf4, 0xc8, - 0xae, 0x60, 0x9d, 0x3, 0xc5, 0x2a, 0x3a, 0x9e, 0x84, 0x36, - 0x6a, 0x5e, 0xd5, 0x26, 0xa1, 0x50, 0x5c, 0xfd, 0xca, 0x98, - 0x10, 0x7a, 0x1c, 0xd4, 0x57, 0x1f, 0x72, 0x80, 0x26, 0xa2, - 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, - 00, 0xa2, 0x8a, 0x28, 0x3, 0xcc, 0xed, 0x7f, 0xe4, 0x29, - 0xae, 0x7f, 0xd8, 0x4e, 0x6f, 0xe9, 0x5d, 0xe6, 0x89, 0xff, - 00, 0x20, 0x78, 0x3f, 0xe0, 0x5f, 0xfa, 0x11, 0xae, 0xe, - 0xd7, 0xfe, 0x42, 0x9a, 0xe7, 0xfd, 0x84, 0xe6, 0xfe, 0x95, - 0xde, 0x68, 0x9f, 0xf2, 0x7, 0x83, 0xfe, 0x5, 0xff, 00, - 0xa1, 0x1a, 00, 0xcf, 0xf0, 0x3f, 0xfc, 0x89, 0x7a, 0x5f, - 0xfd, 0x72, 0xff, 00, 0xd9, 0x8d, 0x74, 0x15, 0xcf, 0xf8, - 0x1f, 0xfe, 0x44, 0xbd, 0x2f, 0xfe, 0xb9, 0x7f, 0xec, 0xc6, - 0xba, 0xa, 00, 0x2b, 0xc7, 0x3e, 0x27, 0x7c, 0x1a, 0xd4, - 0x7c, 0x6b, 0xe2, 0xc8, 0x35, 0x9d, 0x37, 0x52, 0xb5, 0x81, - 0x24, 0x8d, 0x22, 0xb9, 0x4b, 0x90, 0xd9, 0x40, 0xbf, 0xc4, - 0x9b, 0x41, 0xdd, 0xc1, 0xe8, 0x71, 0xc8, 0xeb, 0xcf, 0x1e, - 0xc7, 0x45, 0x26, 0x93, 0x69, 0xf6, 0x1a, 0x76, 0x2a, 0x69, - 0x76, 0x9, 0xa5, 0xe9, 0x36, 0x7a, 0x7c, 0x6e, 0xce, 0x96, - 0xb0, 0x24, 0x2a, 0xcd, 0xd5, 0x82, 0xa8, 0x19, 0x3f, 0x95, - 0x5b, 0xa2, 0x8a, 0xa6, 0xdb, 0x77, 0x64, 0xa4, 0x92, 0xb2, - 0xa, 0xc5, 0xf1, 0x76, 0x95, 0x26, 0xb9, 0xe0, 0xed, 0x63, - 0x4c, 0x84, 0x66, 0x6b, 0xab, 0x39, 0x23, 0x8c, 0x67, 0x19, - 0x72, 0xa7, 0x6f, 0xeb, 0x8a, 0xda, 0xa2, 0xa6, 0x4a, 0xe9, - 0xa2, 0x93, 0xb3, 0xb9, 0xc6, 0xfc, 0x2d, 0xd6, 0x2d, 0xf5, - 0x6f, 0x87, 0xba, 0x4a, 0x44, 0xc0, 0x4f, 0x63, 0x2, 0xd9, - 0xdc, 0xc3, 0x9f, 0x9a, 0x29, 0x23, 0x1b, 0x48, 0x61, 0xdb, - 0x38, 0xcf, 0xe3, 0x56, 0xbc, 0x61, 0xe3, 0x38, 0x7c, 0x2a, - 0xfa, 0x5d, 0xb4, 0x76, 0xbf, 0x6f, 0xd4, 0x75, 0x2b, 0xb4, - 0xb7, 0x82, 0xcd, 0x25, 0x8, 0xe4, 0x13, 0xf3, 0x3f, 0x43, - 0xc0, 0xe3, 0xf3, 0x1c, 0x8a, 0xa7, 0xad, 0x7c, 0x31, 0xd1, - 0x35, 0x5d, 0x66, 0x4d, 0x66, 0xd2, 0xef, 0x54, 0xd1, 0x75, - 0x39, 0x81, 0x13, 0xdd, 0x69, 0x17, 0x46, 0x7, 0x98, 0x1c, - 0x70, 0xdc, 0x11, 0xd4, 0x3, 0xc0, 0x19, 0x3d, 0x73, 0x56, - 0x3c, 0x37, 0xf0, 0xef, 0x44, 0xf0, 0xe6, 0xa7, 0x26, 0xaa, - 0x24, 0xbd, 0xd4, 0xf5, 0x79, 0x6, 0xd3, 0xa8, 0xea, 0x73, - 0x99, 0xe7, 0xb, 0x80, 0x30, 0xe, 00, 0x1c, 0xc, 0x67, - 0x19, 0xc7, 0x19, 0xc5, 0x55, 0xf9, 0xa5, 0xcd, 0x2f, 0x99, - 0x36, 0xb2, 0xb2, 0x38, 0x4b, 0xdb, 0xd, 0x6e, 0xf3, 0xe3, - 0xc6, 0xb7, 0x6d, 0xa6, 0x78, 0x94, 0x68, 0x77, 0x53, 0x69, - 0xd0, 0xc9, 0x3, 0xb5, 0x84, 0x77, 0x3e, 0x74, 0x40, 00, - 0xca, 0x37, 0x91, 0x8c, 0x36, 0x4f, 0x1d, 0x79, 0xf4, 0xad, - 0x7b, 0x9f, 0x6, 0xeb, 0x5f, 0xf0, 0x92, 0xf8, 0x7a, 0xf3, - 0xc4, 0xbf, 0x11, 0xed, 0xee, 0x9e, 0xd2, 0xf0, 0x4b, 0x67, - 0x6d, 0x26, 0x9b, 0xd, 0xb3, 0x4c, 0xff, 00, 0xc4, 0x8a, - 0x55, 0xc1, 0x24, 0x8e, 0x31, 0x83, 0xf4, 0xae, 0xb7, 0xc5, - 0x3e, 0x8, 0xd2, 0x3c, 0x5b, 0xf6, 0x69, 0x6f, 0xd, 0xcd, - 0xb5, 0xf5, 0xa9, 0xcd, 0xb5, 0xfd, 0x94, 0xa6, 0x29, 0xe0, - 0x39, 0x7, 0xe5, 0x6f, 0xc3, 0xb8, 0x3e, 0xd8, 0x3c, 0xd5, - 0x4d, 0x7, 0xe1, 0xd6, 0x93, 0xa2, 0x6a, 0xc3, 0x57, 0x9e, - 0xf3, 0x54, 0xd6, 0x35, 0x34, 0x5f, 0x2e, 0x1b, 0xcd, 0x5a, - 0xe8, 0xdc, 0x49, 0xa, 0x1e, 0xaa, 0x9c, 00, 0x3a, 0x9e, - 0x71, 0x9e, 0x4f, 0x3c, 0x9a, 0x50, 0xd1, 0x2b, 0xf4, 0xff, - 00, 0x3b, 0xff, 00, 0x5f, 0x78, 0xe5, 0xad, 0xfc, 0xff, - 00, 0xca, 0xc6, 0x17, 0xc2, 0x50, 0x3f, 0xb4, 0x3c, 0x70, - 0x70, 0x32, 0x75, 0xf9, 0xf9, 0xa4, 0xb5, 0xff, 00, 0x93, - 0x8e, 0xbd, 0xff, 00, 0xb1, 0x7d, 0x7f, 0xf4, 0x6a, 0xd7, - 0x61, 0xe1, 0xdf, 0xa, 0xd8, 0xf8, 0x66, 0x6d, 0x56, 0x5b, - 0x29, 0x6e, 0x24, 0x6d, 0x4e, 0xf1, 0xef, 0x26, 0xf3, 0x99, - 0x48, 0x57, 0x6e, 0xa1, 0x70, 0x6, 0x7, 0xd7, 0x3f, 0x5a, - 0xa3, 0xae, 0x78, 0xb, 0x4f, 0xd6, 0xfc, 0x4b, 0x69, 0xe2, - 0x1, 0xa8, 0x6a, 0x9a, 0x7e, 0xa3, 0x6f, 0x18, 0x88, 0xc9, - 0xa7, 0xdc, 0xf9, 0x5e, 0x74, 0x61, 0xb7, 0x4, 0x7e, 0xe, - 0x57, 0x39, 0xe0, 0x63, 0x39, 0xe7, 0xb6, 0x8, 0xe8, 0xe3, - 0xe4, 0xbf, 0xf6, 0xdb, 0x4, 0xb5, 0xe6, 0xf3, 0x7f, 0xad, - 0xce, 0x7b, 0xc2, 0x7f, 0xf2, 0x5b, 0x3c, 0x77, 0xff, 00, - 0x5c, 0x6d, 0x3f, 0xf4, 0xa, 0xc0, 0xf0, 0x6f, 0xfc, 0x90, - 0xaf, 0x17, 0x7f, 0xd7, 0x4d, 0x43, 0xff, 00, 0x41, 0xaf, - 0x4e, 0xd3, 0xfc, 0x2b, 0x63, 0xa6, 0xf8, 0xa7, 0x56, 0xf1, - 0x4, 0x32, 0xdc, 0x35, 0xde, 0xa8, 0xb1, 0xac, 0xc8, 0xec, - 0xa6, 0x35, 0x8, 0x30, 0x36, 0x80, 0x32, 0x3d, 0xf2, 0x4d, - 0x53, 0xd3, 0x3c, 0x9, 0xa5, 0xe9, 0x5e, 0x13, 0xd4, 0x7c, - 0x39, 0x4, 0xf7, 0x8d, 0x67, 0x7e, 0xd3, 0x34, 0xae, 0xee, - 0xa6, 0x45, 0xf3, 0x46, 0x1b, 0x69, 0xa, 0x7, 0xd3, 0x20, - 0xfe, 0x35, 0x16, 0x7c, 0x96, 0xfe, 0xed, 0xbf, 0x1b, 0x95, - 0x7f, 0x7d, 0x4b, 0xcd, 0x3f, 0xc2, 0xc7, 0x93, 0x6a, 0xf1, - 0xdd, 0x1f, 0x8, 0x7c, 0x26, 0x78, 0x35, 0x11, 0xa6, 0xa6, - 0xe5, 0x8c, 0x5e, 0x34, 0xb, 0x30, 0x86, 0x56, 0x45, 0xf2, - 0xd8, 0xa3, 0x70, 0x7a, 0x1e, 0xa7, 0x8e, 0xbd, 0xab, 0xae, - 0xf1, 0x17, 0x82, 0x3c, 0x59, 0x79, 0xa0, 0x5e, 0x5b, 0xeb, - 0xff, 00, 0x14, 0x61, 0x5d, 0x2a, 0x44, 0xc5, 0xc1, 0x9f, - 0x46, 0xb7, 0x89, 0x2, 0xe4, 0x75, 0x7d, 0xe3, 0x1c, 0xe3, - 0x9c, 0x8a, 0xec, 0xbf, 0xe1, 0xa, 0xd1, 0x25, 0xf0, 0x6d, - 0xbf, 0x85, 0x6f, 0x2d, 0xda, 0xf3, 0x4c, 0x82, 0x25, 0x89, - 0x44, 0xed, 0xf3, 0x90, 0xbd, 0xe, 0xe5, 0xc6, 0x1b, 0xdc, - 0x62, 0xb0, 0x2d, 0xbe, 0x11, 0x68, 0xcb, 0x25, 0xba, 0xea, - 0x5a, 0xc7, 0x88, 0x35, 0x9b, 0x3b, 0x62, 0x1a, 0x2b, 0xd, - 0x4a, 0xfc, 0xcb, 0x6e, 0xac, 0xbc, 0x29, 0xd8, 00, 0xe8, - 0x38, 0xc7, 0x4c, 0x1c, 0x10, 0x6a, 0xdd, 0x9b, 0x6b, 0xa3, - 0x77, 0x22, 0x37, 0x49, 0x79, 0x2b, 0x19, 0x5e, 0x54, 0x7a, - 0x77, 0xc6, 0xf, 0x7, 0xc7, 0x73, 0x76, 0x97, 0x30, 0x1d, - 0x5, 0xad, 0xed, 0x2e, 0x70, 0x31, 0x2c, 0xab, 0xd5, 0x97, - 0xa8, 0xe5, 0x70, 0x7a, 0x9e, 0xb4, 0xff, 00, 0x8c, 0x32, - 0xdb, 0x8b, 0xff, 00, 0x4, 0x44, 0xce, 0xbf, 0x69, 0x3a, - 0xec, 0x2c, 0x8b, 0x9e, 0x76, 0x3, 0x86, 0x3f, 0x4c, 0x95, - 0xfd, 0x2b, 0xb6, 0xf1, 0x37, 0x84, 0xb4, 0x9f, 0x16, 0x69, - 0x69, 0x63, 0xa9, 0x42, 0xe0, 0x44, 0xdb, 0xed, 0xe6, 0x85, - 0xb6, 0x4b, 0x6e, 0xe0, 0x70, 0xc8, 0xc3, 0xa1, 0x1f, 0x88, - 0xe3, 0x90, 0x6b, 0x9b, 0x5f, 0x84, 0x3a, 0x1b, 0xdc, 0xd9, - 0xde, 0x5e, 0x6a, 0x9a, 0xdd, 0xfd, 0xfd, 0xa5, 0xd4, 0x77, - 0x31, 0xde, 0xde, 0xdd, 0x89, 0xa5, 0xc2, 0x72, 0xb1, 0x64, - 0xae, 0x4, 0x79, 0x24, 0xe0, 00, 0x49, 0x3d, 0x78, 0x14, - 0xd3, 0xf7, 0x93, 0x7d, 0x1d, 0xff, 00, 0x1b, 0x85, 0xac, - 0x9d, 0xbb, 0x5b, 0xf0, 0xb1, 0xe8, 0x15, 0xe6, 0x3e, 0x15, - 0x96, 0xd5, 0x7e, 0x3a, 0x78, 0xde, 0x27, 0x64, 0x17, 0x4f, - 0x5, 0xa9, 0x8c, 0x12, 0x37, 0x14, 0x8, 0x37, 0x63, 0xf1, - 0x2b, 0x9f, 0xc2, 0xbd, 0x3a, 0xb8, 0x7d, 0x57, 0xe1, 0x66, - 0x87, 0xaa, 0xf8, 0x82, 0xff, 00, 0x5d, 0x7b, 0xbd, 0x52, - 0xdb, 0x54, 0xbb, 0x31, 0x94, 0xb9, 0xb5, 0xb9, 0x11, 0x3d, - 0xb1, 0x55, 0xdb, 0x98, 0x88, 0x5c, 0x8c, 0xaf, 0x7, 0x39, - 0x7, 0xdb, 0x8a, 0x4b, 0x49, 0x5f, 0xd4, 0xad, 0xe2, 0xd7, - 0xa7, 0xe6, 0x67, 0x6b, 0xec, 0x2e, 0x3e, 0x3b, 0xf8, 0x52, - 0x3b, 0x46, 0x56, 0x9a, 0xda, 0xc6, 0xe5, 0xee, 0xc2, 0xf2, - 0x56, 0x26, 0x52, 0x17, 0x77, 0xa7, 0xcd, 0xfe, 0x7d, 0x72, - 0x35, 0xad, 0x56, 0x2f, 0x86, 0x5f, 0x12, 0x75, 0xbd, 0x46, - 0x62, 0x13, 0x4e, 0xd7, 0x34, 0xd6, 0xba, 0x8b, 0x71, 0xc0, - 0x37, 0x71, 0xf, 0xb8, 0x3d, 0xce, 0x7f, 0x12, 0xd5, 0xde, - 0x78, 0x5b, 0xc1, 0x1a, 0x4f, 0x85, 0x24, 0xb9, 0xb8, 0xb5, - 0x7b, 0xbb, 0xcd, 0x42, 0xec, 0xff, 00, 0xa4, 0x5f, 0xdf, - 0xcd, 0xe7, 0x4f, 0x28, 0x1d, 0x1, 0x6e, 0x38, 0x1e, 0xc0, - 0x74, 0x19, 0xce, 0x2b, 0x87, 0xf1, 0x5d, 0xd6, 0x8d, 0xf1, - 0x47, 0xc5, 0x1a, 0x37, 0x87, 0x34, 0xb8, 0x5e, 0xf9, 0x34, - 0xcb, 0xf6, 0x9b, 0x54, 0xb9, 0x30, 0xba, 0x25, 0xb2, 0x26, - 0x41, 0x88, 0x96, 0x3, 0x25, 0xc8, 0xc7, 0x19, 0xfb, 0xb4, - 0x5b, 0xe1, 0x8a, 0xf3, 0xfc, 0x6f, 0x7f, 0xba, 0xf7, 0xf9, - 0xa, 0xfb, 0xc9, 0xf9, 0x7e, 0x1b, 0x7d, 0xfb, 0x1d, 0x67, - 0xc3, 0x1d, 0xa, 0x5d, 0xb, 0xc1, 0x16, 0x82, 0xef, 0x71, - 0xd4, 0x2f, 0x99, 0xaf, 0xaf, 0x19, 0xbe, 0xf1, 0x96, 0x4e, - 0x4e, 0x7d, 0xc0, 0xc0, 0xfc, 0x2b, 0xb0, 0xa0, 0xc, 0xc, - 0xe, 0x94, 0x53, 0x93, 0xbb, 0xd0, 0x49, 0x59, 0x6a, 0x79, - 0xa7, 0x82, 0xbf, 0xe4, 0xb1, 0xfc, 0x42, 0xfa, 0xd9, 0xff, - 00, 0xe8, 0xb3, 0x5b, 0x5f, 0x15, 0x60, 0x92, 0xe7, 0xe1, - 0x7f, 0x88, 0x23, 0x89, 0x4b, 0x30, 0xb5, 0x2f, 0x81, 0xe8, - 0xa4, 0x31, 0xfd, 0x1, 0xad, 0x5d, 0x2f, 0xc2, 0xb6, 0x3a, - 0x4f, 0x89, 0x75, 0x9d, 0x7a, 0x9, 0x6e, 0x1a, 0xeb, 0x56, - 0xf2, 0xfc, 0xf4, 0x91, 0x94, 0xa2, 0xec, 0x5c, 0xd, 0xa0, - 00, 0x47, 0xbe, 0x49, 0xad, 0xb7, 0x45, 0x91, 0x19, 0x1d, - 0x43, 0x2b, 0xc, 0x15, 0x23, 0x20, 0x8f, 0x4a, 0x99, 0x2e, - 0x68, 0x28, 0xf9, 0x58, 0xa4, 0xed, 0x37, 0x2f, 0x3b, 0x99, - 0x3e, 0x15, 0xbd, 0x83, 0x52, 0xf0, 0x96, 0x91, 0x79, 0x6d, - 0x22, 0xc9, 0x14, 0xb6, 0x71, 0x10, 0x54, 0xe4, 0x7d, 0xd1, - 0x91, 0xf8, 0x1c, 0x8f, 0xc2, 0xb8, 0xed, 0x1e, 0x51, 0x7b, - 0xf1, 0xf3, 0xc4, 0x32, 0xc3, 0x86, 0x8e, 0xcf, 0x4a, 0x86, - 0xda, 0x56, 0x7, 0x20, 0x39, 0x60, 0xc0, 0x7e, 0x59, 0xfc, - 0xaa, 0xc3, 0x7c, 0x24, 0xd2, 0xa0, 0x9a, 0x5f, 0xec, 0x7d, - 0x7b, 0xc4, 0xba, 0x1d, 0xb4, 0x8d, 0xbc, 0xd9, 0xe9, 0x9a, - 0x91, 0x8a, 0x10, 0xc7, 0xa9, 0xa, 0x41, 0xc1, 0x3f, 0x5a, - 0xe9, 0xfc, 0x37, 0xe1, 0x6d, 0x23, 0xc2, 0x7a, 0x71, 0xb2, - 0xd2, 0x2d, 0xbc, 0xa4, 0x76, 0xdf, 0x2c, 0x8c, 0xc5, 0xe4, - 0x99, 0xfb, 0xb3, 0xb1, 0xe4, 0x9f, 0xd3, 0xd3, 0x15, 0x6d, - 0xde, 0x5c, 0xfe, 0xbf, 0x8e, 0x84, 0x28, 0xda, 0x3c, 0xbe, - 0x9f, 0x81, 0xca, 0x78, 0xa1, 0x4f, 0x87, 0xbe, 0x28, 0xf8, - 0x6f, 0xc4, 0x6a, 0x36, 0xda, 0xea, 0x2a, 0xda, 0x45, 0xe3, - 0x76, 0xdc, 0xdf, 0x34, 0x44, 0xff, 00, 0xc0, 0x81, 0x1f, - 0x85, 0x4b, 0xf0, 0xdd, 0x5b, 0x56, 0xbd, 0xf1, 0x17, 0x8b, - 0xa5, 0x53, 0xff, 00, 0x13, 0x5b, 0xd3, 0x15, 0xa9, 0x3f, - 0xf3, 0xed, 0xf, 0xc8, 0x84, 0x7d, 0x4e, 0xe3, 0x5d, 0x37, - 0x8a, 0x7c, 0x33, 0x63, 0xe2, 0xed, 0x6, 0x5d, 0x23, 0x50, - 0x79, 0xe3, 0x86, 0x46, 0x47, 0x12, 0x40, 0xc1, 0x64, 0x46, - 0x56, 0x4, 0x15, 0x24, 0x10, 0xf, 0x1e, 0x9d, 0xcd, 0x5b, - 0xd1, 0xf4, 0xab, 0x5d, 0xb, 0x46, 0xb3, 0xd2, 0xac, 0x83, - 0xb, 0x6b, 0x48, 0x96, 0x18, 0xf7, 0x1c, 0x92, 00, 0xc6, - 0x4f, 0xb9, 0xea, 0x6a, 0x63, 0xa2, 0xd7, 0xe5, 0xf3, 0xd7, - 0xf3, 0xfc, 0xca, 0x96, 0xbf, 0xaf, 0xcb, 0xfa, 0x5f, 0x71, - 0x7a, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, - 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, - 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0xbc, - 0xef, 0xc6, 0xbe, 0x10, 0xda, 0x64, 0xd5, 0xb4, 0xd8, 0xf8, - 0xfb, 0xd7, 0x10, 0x28, 0xe9, 0xea, 0xea, 0x3f, 0x98, 0xfc, - 0x6b, 0xd1, 0x28, 0xae, 0x8c, 0x36, 0x26, 0x78, 0x7a, 0x9c, - 0xf0, 0xff, 00, 0x87, 0x31, 0xaf, 0x42, 0x35, 0xa1, 0xcb, - 0x23, 0xe7, 0xca, 0x2b, 0xb7, 0xf1, 0xa7, 0x84, 0x7e, 0xc4, - 0xcf, 0xaa, 0x69, 0xd1, 0xff, 00, 0xa3, 0x13, 0xba, 0x78, - 0x54, 0x7f, 0xab, 0x3f, 0xde, 0x1e, 0xde, 0xbe, 0x9f, 0x4e, - 0x9c, 0x45, 0x7d, 0x8e, 0x1f, 0x11, 0xc, 0x45, 0x35, 0x38, - 0x7f, 0xc3, 0x1f, 0x37, 0x5a, 0x8c, 0xa8, 0xcf, 0x96, 0x41, - 0x45, 0x14, 0x56, 0xe6, 0x41, 0x5e, 0x9b, 0xe0, 0xcf, 0x17, - 0xfd, 0xbd, 0x53, 0x4c, 0xd4, 0x64, 0xff, 00, 0x4b, 0x51, - 0x88, 0xa5, 0x63, 0xfe, 0xb4, 0x7a, 0x1f, 0xf6, 0xbf, 0x9d, - 0x79, 0x95, 0x28, 0x25, 0x58, 0x32, 0x92, 0xac, 0xe, 0x41, - 0x7, 0x4, 0x1a, 0xe5, 0xc5, 0xe1, 0x21, 0x89, 0xa7, 0xcb, - 0x2d, 0xfa, 0x3e, 0xc6, 0xf8, 0x7c, 0x44, 0xa8, 0x4f, 0x9a, - 0x27, 0xd0, 0x55, 0xc0, 0xfc, 0x41, 0xd7, 0x35, 0xaf, 0xd, - 0x6a, 0x9a, 0x46, 0xa9, 0x6d, 0x24, 0x8d, 0xa4, 0x7, 0xd9, - 0x77, 0xa, 0xa8, 0xc3, 0x1c, 0xf7, 0x38, 0xe3, 0x20, 0x9c, - 0x76, 0xc8, 0xab, 0xde, 0xe, 0xf1, 0x68, 0xd5, 0xa3, 0x5b, - 0xb, 0xe7, 0x2, 0xfd, 0x7, 0xca, 0xc7, 0x8f, 0x38, 0xe, - 0xff, 00, 0xef, 0x7a, 0x8f, 0xc6, 0xba, 0xd9, 0x62, 0x8e, - 0x78, 0x9a, 0x29, 0x63, 0x49, 0x23, 0x61, 0x86, 0x47, 0x19, - 0x4, 0x7b, 0x83, 0x5f, 0x1d, 0x5e, 0x84, 0xe8, 0x4d, 0xc2, - 0x6b, 0x53, 0xe9, 0x29, 0x55, 0x8d, 0x58, 0xf3, 0x44, 0xf1, - 0x4f, 0x16, 0x78, 0x87, 0x4d, 0xf1, 0xd6, 0xaf, 0xa3, 0xda, - 0x68, 0x16, 0x12, 0x9b, 0xef, 0x3c, 0x16, 0x9d, 0xe3, 0xa, - 0xd8, 0xe3, 0x8e, 0x3a, 0x81, 0xd4, 0x93, 0xd3, 0x15, 0x35, - 0xbe, 0xb0, 0x3e, 0x1f, 0xfc, 0x4b, 0xd6, 0x5f, 0x54, 0xb6, - 0x98, 0xda, 0x5f, 0x33, 0x32, 0x3a, 0xc, 0x92, 0xac, 0xdb, - 0x83, 0xf, 0x51, 0xc9, 0x6, 0xbd, 0x76, 0xcf, 0x4a, 0xd3, - 0xb4, 0xf6, 0x66, 0xb2, 0xb0, 0xb5, 0xb6, 0x66, 0xfb, 0xc6, - 0x18, 0x55, 0x9, 0xfc, 0x85, 0x3e, 0xee, 0xc2, 0xce, 0xfe, - 0x31, 0x1d, 0xe5, 0xac, 0x17, 0x8, 0x39, 0xb, 0x34, 0x61, - 0xc0, 0xfc, 0xeb, 0x23, 0x43, 0xc7, 0xef, 0x75, 0xb8, 0xfc, - 0x7d, 0xf1, 0x23, 0x42, 0x3a, 0x55, 0xbc, 0xe6, 0xda, 0xc9, - 0xd5, 0x9d, 0x9d, 0x70, 0x76, 0x87, 0xc, 0xcc, 0x47, 0x61, - 0xc0, 0x3, 0x3d, 0x4d, 0x45, 0xe1, 0x1f, 0x1b, 0x69, 0x5e, - 0x14, 0xd5, 0x7c, 0x44, 0xba, 0x82, 0xdc, 0x33, 0x5c, 0xde, - 0x33, 0x27, 0x92, 0xa1, 0xbe, 0xeb, 0x3e, 0x73, 0x92, 0x3d, - 0x6b, 0xd9, 0x2d, 0x34, 0xfb, 0x2d, 0x3d, 0xa, 0x59, 0x5a, - 0x41, 0x6c, 0xa7, 0xa8, 0x86, 0x30, 0x80, 0xfe, 0x55, 0x1b, - 0x68, 0xfa, 0x63, 0x31, 0x66, 0xd3, 0xac, 0xcb, 0x13, 0x92, - 0x4c, 0xb, 0x92, 0x7f, 0x2a, 00, 0xf3, 0xbf, 0x4, 0x7d, - 0xa3, 0xc5, 0x5e, 0x3d, 0xd4, 0x7c, 0x5c, 0xf6, 0xcf, 0x5, - 0x92, 0xc7, 0xe4, 0x5b, 0xee, 0xfe, 0x23, 0x80, 0x3a, 0xf7, - 0xc0, 0x7, 0x38, 0xee, 0xd5, 0xea, 0x34, 0xd4, 0x44, 0x8d, - 0x2, 0x22, 0xaa, 0xaa, 0x8c, 0x5, 0x51, 0x80, 0x2b, 0xb, - 0xc5, 0x1e, 0x26, 0x87, 0xc3, 0xf6, 0x78, 0x5d, 0xb2, 0x5e, - 0xca, 0x3f, 0x75, 0x17, 0xa7, 0xfb, 0x47, 0xdb, 0xf9, 0xd6, - 0x94, 0xa9, 0x4a, 0xac, 0xd4, 0x20, 0xae, 0xd9, 0x15, 0x27, - 0x1a, 0x71, 0x72, 0x96, 0xc4, 0x3e, 0x2c, 0xf1, 0x54, 0x7a, - 0x15, 0xb7, 0x91, 0x1, 0x57, 0xbf, 0x94, 0x7c, 0x8a, 0x79, - 0x8, 0x3f, 0xbc, 0xdf, 0xd0, 0x77, 0xaf, 0x24, 0x96, 0x59, - 0x27, 0x99, 0xe6, 0x9a, 0x46, 0x92, 0x57, 0x62, 0xce, 0xec, - 0x72, 0x58, 0x9e, 0xf4, 0xeb, 0x9b, 0x99, 0xaf, 0x2e, 0x64, - 0xb8, 0xb8, 0x91, 0xa4, 0x9a, 0x43, 0xb9, 0xdd, 0xba, 0x93, - 0x51, 0x57, 0xd7, 0xe0, 0xb0, 0x50, 0xc2, 0xc2, 0xcb, 0x56, - 0xf7, 0x67, 0xce, 0x62, 0xb1, 0x32, 0xaf, 0x2b, 0xbd, 0xba, - 0x5, 0x14, 0x51, 0x5d, 0xa7, 0x30, 0x51, 0x45, 0x74, 0xde, - 0x12, 0xf0, 0xac, 0x9a, 0xed, 0xc7, 0xda, 0x2e, 0x3, 0x26, - 0x9f, 0x1b, 0x7c, 0xc7, 0xa1, 0x94, 0xff, 00, 0x74, 0x7b, - 0x7a, 0x9a, 0xca, 0xb5, 0x68, 0x51, 0x83, 0x9c, 0xde, 0x88, - 0xba, 0x74, 0xe5, 0x52, 0x4a, 0x31, 0xdc, 0x9b, 0xc1, 0xfe, - 0x13, 0x6d, 0x62, 0x55, 0xbe, 0xbd, 0x42, 0x2c, 0x10, 0xfc, - 0xaa, 0x78, 0xf3, 0x88, 0xed, 0xfe, 0xef, 0xaf, 0xaf, 0x4a, - 0xf5, 0x65, 0x55, 0x45, 0xa, 0xaa, 0x15, 0x40, 0xc0, 00, - 0x60, 0x1, 0x4d, 0x8a, 0x28, 0xe1, 0x89, 0x22, 0x89, 0x15, - 0x23, 0x40, 0x15, 0x55, 0x46, 00, 0x1e, 0x94, 0xfa, 0xf8, - 0xfc, 0x5e, 0x2e, 0x78, 0x99, 0xf3, 0x4b, 0x6e, 0x8b, 0xb1, - 0xf4, 0x98, 0x6c, 0x3c, 0x68, 0x42, 0xcb, 0x7e, 0xa1, 0x59, - 0xda, 0xa7, 0xfc, 0xb0, 0xfa, 0xb7, 0xf2, 0xad, 0x1a, 0xce, - 0xd5, 0x3f, 0xe5, 0x87, 0xd5, 0xbf, 0x95, 0x72, 0x1d, 0x5, - 0xcb, 0x7f, 0xf5, 0x9, 0xf4, 0xa9, 0x6a, 0x2b, 0x7f, 0xf5, - 0x9, 0xf4, 0xa9, 0x68, 00, 0xa8, 0x26, 0x8f, 0x35, 0x3d, - 0x35, 0xdd, 0x23, 0x42, 0xee, 0xc1, 0x54, 0x72, 0x49, 0x38, - 0x2, 0x81, 0x34, 0x65, 0x4f, 0x7, 0x5e, 0x2a, 0x84, 0x96, - 0x6e, 0xe7, 0xa, 0x84, 0xd5, 0xf5, 0xf1, 0x36, 0x84, 0xf7, - 0x3f, 0x67, 0x5d, 0x52, 0xd0, 0xcb, 0x9c, 0x6d, 0xf3, 0x5, - 0x6b, 0x2e, 0xd6, 00, 0xae, 0x8, 0x3d, 0x8, 0xaa, 0xb9, - 0x3c, 0x87, 0x29, 0xfd, 0x87, 0x73, 0x31, 0xfb, 0x98, 0x1e, - 0xb5, 0x3c, 0x3e, 0x12, 0x88, 0xb6, 0x67, 0x93, 0x70, 0xf4, - 0x15, 0xd2, 0xd4, 0x37, 0x57, 0x76, 0xf6, 0x50, 0x34, 0xd7, - 0x33, 0x24, 0x51, 0x2f, 0x56, 0x73, 0x80, 0x29, 0x73, 0x30, - 0xe4, 0x45, 0x6b, 0x4d, 0x1e, 0xc6, 0xcf, 0xfd, 0x54, 0xb, - 0x9f, 0x52, 0x33, 0x57, 0x80, 0xa, 0x30, 0x6, 0x7, 0xb5, - 0x56, 0xb1, 0xd4, 0xac, 0xf5, 0x38, 0x4c, 0xb6, 0x57, 0x11, - 0xce, 0x80, 0xe0, 0xb2, 0x1c, 0x8a, 0xb5, 0x48, 0xa4, 0x92, - 0xa, 0x2a, 0x8d, 0xd6, 0xb3, 0xa6, 0xd8, 0xc9, 0xe5, 0xdd, - 0x5f, 0x41, 0xb, 0xe3, 0x3b, 0x64, 0x70, 0xd, 0x32, 0xd, - 0x7f, 0x48, 0xb9, 0x90, 0x47, 0xe, 0xa5, 0x6a, 0xee, 0x7a, - 0x2a, 0xca, 0x32, 0x68, 0x19, 0x76, 0x58, 0x22, 0x9d, 0x4a, - 0xcb, 0x1a, 0xb8, 0x3e, 0xa3, 0x35, 0xcd, 0xea, 0x7e, 0x6, - 0xd2, 0xaf, 0xc3, 0x32, 0x27, 0x95, 0x21, 0xfe, 0x21, 0xd2, - 0xb6, 0xee, 0xf5, 0x7d, 0x3a, 0xc1, 0xc2, 0x5d, 0xde, 0xc1, - 0x3, 0x1e, 0x82, 0x47, 0x3, 0x35, 0x5c, 0xf8, 0x97, 0x44, - 0x3, 0x9d, 0x56, 0xd0, 0x7f, 0xdb, 0x51, 0x4d, 0x36, 0x89, - 0x71, 0x4f, 0x73, 0xce, 0x35, 0x5f, 0x86, 0x5a, 0x8c, 0x21, - 0x9a, 0xce, 0xe0, 0x4f, 0xe8, 0xbd, 0x2b, 0x8c, 0xd4, 0xbc, - 0x2d, 0xaf, 0xd8, 0x67, 0xcf, 0xb1, 0x70, 0x7, 0x75, 0xe6, - 0xbe, 0x89, 0x8e, 0xf2, 0xda, 0x5b, 0x61, 0x72, 0x93, 0xc6, - 0xd0, 0x11, 0x91, 0x20, 0x61, 0xb7, 0x1f, 0x5a, 0xcd, 0x1e, - 0x24, 0xd0, 0x26, 0xb8, 0xfb, 0x3f, 0xf6, 0x95, 0x9b, 0x49, - 0xd3, 0x69, 0x90, 0x55, 0x2a, 0x8c, 0xc6, 0x58, 0x78, 0xbd, - 0x8f, 0x98, 0xe7, 0x8a, 0xe6, 0x36, 0x21, 0xed, 0xa6, 0x7, - 0xfd, 0xc3, 0x54, 0x64, 0xf3, 0x43, 0x64, 0x45, 0x28, 0x6f, - 0x50, 0xa7, 0x35, 0xf5, 0xbc, 0x9a, 0x7d, 0x85, 0xca, 0x82, - 0xf6, 0xd0, 0xb8, 0x3d, 0xe, 0xd1, 0xcd, 0x60, 0x5e, 0x27, - 0x83, 0xac, 0xee, 0x3c, 0xbb, 0xa7, 0xb0, 0x8e, 0x5c, 0xfd, - 0xd6, 0x61, 0x91, 0x4d, 0xd4, 0x12, 0xc3, 0xdb, 0xa9, 0xf3, - 0x8d, 0x8e, 0xb7, 0xe2, 0x1b, 0x29, 00, 0xb1, 0x96, 0xf3, - 0x76, 0x78, 0x4, 0x12, 0x2b, 0xd3, 0xbc, 0x27, 0x17, 0xc4, - 0xad, 0x76, 0x54, 0xfb, 0x6d, 0xdf, 0xd9, 0x2c, 0xf, 0x57, - 0x61, 0xc9, 0x15, 0xeb, 0x16, 0x16, 0x3a, 0x41, 0x84, 0x4b, - 0x65, 0xd, 0xb3, 0xc6, 0x7a, 0x3a, 00, 0xc3, 0xf3, 0xad, - 0x10, 0x2, 0x8c, 00, 00, 0xf4, 0x15, 0x2e, 0x57, 0x36, - 0x8c, 0x2c, 0x43, 0x67, 0x6a, 0xb6, 0x76, 0xb1, 0xc0, 0x18, - 0xb6, 0xd1, 0xcb, 0x1e, 0xe6, 0x96, 0xe3, 0xee, 0x54, 0xd5, - 0xd, 0xc7, 0xdc, 0xa9, 0x2c, 0x9a, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, - 0xa0, 0xf, 0x33, 0xb5, 0xff, 00, 0x90, 0xa6, 0xb9, 0xff, - 00, 0x61, 0x39, 0xbf, 0xa5, 0x77, 0x9a, 0x27, 0xfc, 0x81, - 0xe0, 0xff, 00, 0x81, 0x7f, 0xe8, 0x46, 0xb8, 0x3b, 0x5f, - 0xf9, 0xa, 0x6b, 0x9f, 0xf6, 0x13, 0x9b, 0xfa, 0x57, 0x79, - 0xa2, 0x7f, 0xc8, 0x1e, 0xf, 0xf8, 0x17, 0xfe, 0x84, 0x68, - 0x3, 0x3f, 0xc0, 0xff, 00, 0xf2, 0x25, 0xe9, 0x7f, 0xf5, - 0xcb, 0xff, 00, 0x66, 0x35, 0xd0, 0x57, 0x3f, 0xe0, 0x7f, - 0xf9, 0x12, 0xf4, 0xbf, 0xfa, 0xe5, 0xff, 00, 0xb3, 0x1a, - 0xe8, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, - 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, - 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, - 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, - 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, - 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, - 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, - 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, - 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, - 00, 0xa2, 0x8a, 0x28, 0x1, 0x8, 0xc, 0x8, 0x20, 0x10, - 0x78, 0x20, 0xd7, 0x96, 0xf8, 0xcb, 0xc2, 0x27, 0x4a, 0x91, - 0xb5, 0xb, 0x4, 0x26, 0xc5, 0x8e, 0x64, 0x41, 0xff, 00, - 0x2c, 0x49, 0xff, 00, 0xd9, 0x7f, 0x95, 0x7a, 0x9d, 0x35, - 0xd1, 0x64, 0x46, 0x47, 0x50, 0xc8, 0xc3, 0xc, 0xa4, 0x64, - 0x11, 0xe9, 0x5d, 0x58, 0x4c, 0x5c, 0xf0, 0xd5, 0x39, 0xa3, - 0xb7, 0x55, 0xdc, 0xc3, 0x11, 0x87, 0x8d, 0x78, 0x72, 0xbd, - 0xcf, 0x9f, 0xa8, 0xae, 0xa7, 0xc5, 0xfe, 0x14, 0x7d, 0x12, - 0x63, 0x77, 0x68, 0xa5, 0xb4, 0xf9, 0x1b, 0xa7, 0x53, 0x9, - 0x3d, 0x8f, 0xb7, 0xa1, 0xfc, 0x2b, 0x96, 0xaf, 0xb1, 0xa1, - 0x5a, 0x15, 0xa0, 0xa7, 0x7, 0xa1, 0xf3, 0x75, 0x69, 0x4a, - 0x94, 0x9c, 0x65, 0xb8, 0x51, 0x45, 0x15, 0xa9, 0x98, 0xe8, - 0xe4, 0x78, 0xa4, 0x49, 0x23, 0x76, 0x49, 0x10, 0x86, 0x56, - 0x53, 0x82, 0xa4, 0x77, 0x15, 0xd3, 0xaf, 0xc4, 0x1d, 0x79, - 0x54, 0xd, 0xd6, 0xc7, 0x3, 0x19, 0x31, 0x72, 0x7f, 0x5a, - 0xc0, 0x83, 0x4c, 0xbd, 0xb9, 0x48, 0x5e, 0xb, 0x69, 0x24, - 0x59, 0xdc, 0xc7, 0x11, 0x18, 0xf9, 0xd8, 0xc, 0x90, 0x3f, - 0xa, 0x9a, 0xf7, 0x43, 0xd5, 0x34, 0xeb, 0x7f, 0xb4, 0x5e, - 0x58, 0xcb, 0x4, 0x20, 0x81, 0xbd, 0xf1, 0x8c, 0x9e, 0x9d, - 0xeb, 0x9a, 0xac, 0x70, 0xf5, 0x64, 0xa3, 0x52, 0xcd, 0xf9, - 0xd8, 0xda, 0x9c, 0xab, 0x41, 0x37, 0xb, 0xa4, 0x6d, 0x7f, - 0xc2, 0xc3, 0xd7, 0xbd, 0x6d, 0x7f, 0xef, 0xd1, 0xff, 00, - 0x1a, 0x3f, 0xe1, 0x61, 0xeb, 0xde, 0xb6, 0xbf, 0xf7, 0xe8, - 0xff, 00, 0x8d, 0x62, 0x5c, 0x68, 0x9a, 0xa5, 0xad, 0x92, - 0xde, 0x4f, 0x61, 0x34, 0x76, 0xc7, 0x1f, 0xbc, 0x65, 0xe9, - 0x9e, 0x99, 0x1d, 0x47, 0xe3, 0x55, 0xed, 0x2c, 0xae, 0x6f, - 0xee, 0x4, 0x16, 0x90, 0x3c, 0xf2, 0x91, 0x9d, 0x88, 0x32, - 0x71, 0xeb, 0x59, 0x2c, 0x2e, 0xd, 0xa7, 0x25, 0x18, 0xd9, - 0x1a, 0x3a, 0xf8, 0x94, 0xec, 0xdb, 0xb9, 0xd1, 0xff, 00, - 0xc2, 0xc3, 0xd7, 0xbd, 0x6d, 0x7f, 0xef, 0xd1, 0xff, 00, - 0x1a, 0x3f, 0xe1, 0x61, 0xeb, 0xde, 0xb6, 0xbf, 0xf7, 0xe8, - 0xff, 00, 0x8d, 0x73, 0xc9, 0xa7, 0xde, 0x49, 0x7f, 0xf6, - 0x4, 0xb6, 0x90, 0xdd, 0xee, 0x2b, 0xe4, 0xe3, 0xd, 0x91, - 0xc9, 0xa7, 0x59, 0xe9, 0x77, 0xfa, 0x86, 0xff, 00, 0xb1, - 0xd9, 0xcd, 0x3f, 0x96, 0x70, 0xfe, 0x5a, 0xe7, 0x69, 0xf7, - 0xa6, 0xf0, 0xb8, 0x34, 0xae, 0xe2, 0x81, 0x62, 0x31, 0xf, - 0x44, 0xd9, 0xbf, 0xff, 00, 0xb, 0xf, 0x5e, 0xf5, 0xb5, - 0xff, 00, 0xbf, 0x47, 0xfc, 0x6b, 0x9c, 0xbd, 0xbd, 0xb8, - 0xd4, 0x6f, 0x24, 0xbb, 0xba, 0x90, 0xc9, 0x34, 0x87, 0x2c, - 0xc7, 0xf9, 0xf, 0x41, 0xed, 0x52, 0xc7, 0xa5, 0x6a, 0x13, - 0x45, 0x71, 0x2c, 0x56, 0x53, 0x3c, 0x76, 0xe4, 0x89, 0x98, - 0x2f, 0xdc, 0x23, 0xa8, 0x3f, 0x4a, 0x48, 0xf4, 0xbb, 0xf9, - 0xac, 0x1e, 0xfa, 0x3b, 0x39, 0x9e, 0xd5, 0x33, 0xba, 0x50, - 0xbf, 0x28, 0xc7, 0x5a, 0xd2, 0x9d, 0x3c, 0x35, 0x27, 0x78, - 0x24, 0x9e, 0xc4, 0x4e, 0x75, 0xaa, 0x2b, 0x4a, 0xec, 0xa9, - 0x45, 0x14, 0x57, 0x49, 0x80, 0x51, 0x45, 0x6d, 0x78, 0x6f, - 0xc3, 0x97, 0x1e, 0x20, 0xbe, 0xd8, 0x37, 0x47, 0x6b, 0x19, - 0x1e, 0x74, 0xde, 0x9f, 0xec, 0x8f, 0x73, 0xfa, 0x54, 0x54, - 0xa9, 0x1a, 0x50, 0x73, 0x9b, 0xb2, 0x45, 0x42, 0x12, 0x9c, - 0x94, 0x62, 0xb5, 0x26, 0xf0, 0xb7, 0x86, 0x26, 0xf1, 0x5, - 0xde, 0xf9, 0x37, 0x47, 0x63, 0x11, 0xfd, 0xec, 0x83, 0xab, - 0x1f, 0xee, 0xaf, 0xbf, 0xbf, 0x6a, 0xf5, 0xeb, 0x7b, 0x78, - 0x6d, 0x2d, 0xe3, 0x82, 0x8, 0xd6, 0x38, 0xa3, 0x5d, 0xa8, - 0x8a, 0x30, 00, 0xa6, 0xd9, 0xd9, 0xdb, 0xd8, 0x5a, 0x47, - 0x6b, 0x6d, 0x18, 0x8e, 0x18, 0xc6, 0x15, 0x45, 0x4f, 0x5f, - 0x1f, 0x8d, 0xc6, 0xcb, 0x15, 0x3b, 0xed, 0x15, 0xb2, 0x3e, - 0x8f, 0xb, 0x86, 0x8d, 0x8, 0xdb, 0xaf, 0x50, 0xa2, 0x8a, - 0x2b, 0x88, 0xea, 0xa, 0xce, 0xd5, 0x3f, 0xe5, 0x87, 0xd5, - 0xbf, 0x95, 0x68, 0xd6, 0x76, 0xa9, 0xff, 00, 0x2c, 0x3e, - 0xad, 0xfc, 0xa8, 0x2, 0xe5, 0xbf, 0xfa, 0x84, 0xfa, 0x54, - 0xb5, 0x15, 0xbf, 0xfa, 0x84, 0xfa, 0x54, 0xb4, 00, 0x57, - 0x9e, 0xfc, 0x62, 0x9b, 0x53, 0x87, 0xc1, 0x87, 0xfb, 0x37, - 0xcc, 0xc3, 0x48, 0x4, 0xe6, 0x31, 0xc8, 0x4e, 0xf5, 0xe8, - 0x55, 0xc5, 0xfc, 0x46, 0xf1, 0x35, 0xef, 0x85, 0xf4, 0x98, - 0x2e, 0xe1, 0xb1, 0x4b, 0xbb, 0x47, 0x90, 0x25, 0xca, 0xb0, - 0xce, 0x10, 0xf5, 0x34, 0x1, 0xe7, 0x3a, 0x67, 0x87, 0xfe, - 0x1d, 0xeb, 0xbe, 0x1a, 0x48, 0x2c, 0xaf, 0x96, 0xdb, 0x57, - 0xf2, 0xc6, 0x25, 0x96, 0x52, 0xad, 0xe6, 0x57, 0xa2, 0xe8, - 0x97, 0x57, 0xbe, 0xd, 0xf0, 0x11, 0x9f, 0xc4, 0x57, 0x2, - 0xe1, 0xad, 0x47, 0xca, 0xf1, 0x9d, 0xdb, 0x97, 0xb5, 0x71, - 0xba, 0xde, 0x9d, 0xf0, 0xc7, 0x5a, 0xd0, 0x1f, 0x53, 0x8a, - 0xe2, 0xd6, 0xce, 0x63, 0x1e, 0xf1, 0xe4, 0xbe, 0x1c, 0x37, - 0xa6, 0x2b, 0x37, 0x49, 0xf1, 0x16, 0xa5, 0xa6, 0x7c, 0x1b, - 0xb9, 0xb8, 0xbe, 0x81, 0xaf, 0x10, 0x4c, 0x63, 0xb7, 0x33, - 0x8c, 0xfc, 0x99, 0xe0, 0x9a, 00, 0xe8, 0x64, 0xf8, 0xb3, - 0xaa, 0x5b, 0xdb, 0xa6, 0xa7, 0x71, 0xe1, 0xf9, 0x23, 0xd2, - 0x59, 0x80, 0xf3, 0x88, 0x39, 00, 0xf7, 0xac, 0x3f, 0x8c, - 0x9e, 0x25, 0x9b, 0x52, 0xd1, 0xb4, 0xb4, 0xb3, 0x8a, 0x46, - 0xb0, 0xba, 0x65, 0x62, 0xc3, 0x8d, 0xfe, 0xd5, 0x83, 0xe2, - 0x75, 0xb8, 0x3e, 0x3, 0x17, 0x77, 0xbe, 0x29, 0x49, 0x3c, - 0xd0, 0xac, 0x96, 0x10, 0x9c, 0x8f, 0xa7, 0xe1, 0x5a, 0xbe, - 0x28, 0x91, 0x4f, 0xc3, 0x8f, 0x9, 0x30, 0x23, 0x1e, 0x72, - 0x76, 0xf7, 0xa0, 0xe, 0xae, 0xcf, 0xc4, 0xda, 0x5f, 0x81, - 0xfc, 0x2b, 0x65, 0x1d, 0xb6, 0x96, 0xf1, 0xdf, 0xde, 0x28, - 0x29, 0x68, 0xb9, 0x25, 0x8e, 0x3a, 0xd5, 0xed, 0x1b, 0xe2, - 0x54, 0xcf, 0xac, 0xc3, 0xa5, 0xeb, 0xfa, 0x63, 0xe9, 0xd3, - 0x5c, 0x7f, 0xa9, 0x62, 0xe, 0xd6, 0xf6, 0xae, 0x2f, 0xe2, - 0x9d, 0xb4, 0xc3, 0xc6, 0xde, 0x1d, 0xba, 0x92, 0xe9, 0xec, - 0xed, 0x5a, 00, 0xa2, 0xe5, 0x7a, 0x21, 0xc5, 0x54, 0xd5, - 0x74, 0xcb, 0x33, 0xe2, 0xbd, 0x12, 0x3b, 0xaf, 0x12, 0xdc, - 0x6a, 0xf7, 0x1e, 0x72, 0xb4, 0x62, 0x23, 0x9d, 0xbf, 0x5a, - 00, 0xb5, 0xe2, 0xfb, 0x3d, 0x22, 0xfb, 0xe3, 0x52, 0xc1, - 0xaf, 0x4c, 0x23, 0xb2, 0xfb, 0x38, 0x3f, 0x3c, 0x85, 0x46, - 0x6a, 0xbf, 0x8f, 0xb4, 0x6f, 0x5, 0x69, 0x3a, 0x2a, 0xdd, - 0xf8, 0x6a, 0xf8, 0xd, 0x51, 0x5c, 0x79, 0x2b, 0x4, 0xa5, - 0x8b, 0x1c, 0xd6, 0x86, 0xbf, 0xa2, 0xd8, 0xeb, 0xff, 00, - 0x1c, 0xa3, 0xb0, 0xd4, 0xa3, 0xf3, 0x62, 0x16, 0xa0, 0xe0, - 0xd5, 0x1f, 0x1a, 0xf8, 0x22, 0xd3, 0xe1, 0xee, 0xbf, 0x65, - 0xe2, 0x8d, 0x3e, 0xcf, 0xed, 0x1a, 0x72, 0xc8, 0x4, 0xf0, - 0xb7, 0x21, 0x3d, 0xe8, 0x3, 0xbe, 0x8b, 0xc1, 0x76, 0x1e, - 0x2e, 0xf0, 0xe6, 0x9f, 0x7d, 0xe2, 0x8, 0x1d, 0xaf, 0x45, - 0xb8, 0xc9, 0xdc, 0x47, 0x6a, 0xf3, 0xbf, 0x87, 0x3e, 0x2, - 0xd1, 0x75, 0xdd, 0x7b, 0xc4, 0x16, 0xd7, 0xf1, 0xc9, 0x24, - 0x56, 0xb2, 0x6d, 0x88, 0x6f, 0x3c, 0xc, 0xd7, 0xb9, 0xe9, - 0x7a, 0xa5, 0xa6, 0xb3, 0xa1, 0x45, 0x7f, 0x64, 0xea, 0xd0, - 0x4b, 0x16, 0x57, 0x6f, 0x41, 0xc7, 0x4a, 0xf3, 0x2f, 0x84, - 0x4, 0x1f, 0x15, 0x78, 0xab, 0x1f, 0xf3, 0xd8, 0x7f, 0x3a, - 00, 0x83, 0xc6, 0xe2, 0x61, 0xaa, 0xe8, 0xbf, 0xf, 0xb4, - 0x29, 0x5e, 0xda, 0xd6, 0x45, 0xcc, 0xcc, 0xa7, 0x90, 0xb5, - 0xbd, 0x71, 0xf0, 0x63, 0xc3, 0x8d, 0xa4, 0x1b, 0x7b, 0x74, - 0x92, 0x3b, 0xc0, 0xbf, 0x2d, 0xce, 0xf3, 0x9d, 0xde, 0xb5, - 0x8d, 0xf1, 0x16, 0x39, 0xbc, 0x35, 0xf1, 0x3, 0x48, 0xf1, - 0x60, 0x85, 0xe4, 0xb3, 0x51, 0xe5, 0xce, 0xc0, 0x67, 0x66, - 0x6b, 0xb7, 0xb9, 0xf8, 0x89, 0xe1, 0x88, 0x34, 0x86, 0xd4, - 0x6, 0xab, 0x6e, 0xea, 0x13, 0x70, 0x40, 0xdf, 0x31, 0x3e, - 0x98, 0xa0, 0xe, 0x2b, 0xc0, 0x3e, 0x20, 0xd6, 0xe, 0x89, - 0xe2, 0xf, 0xf, 0x4f, 0x33, 0x4d, 0xa9, 0x69, 0xa1, 0x96, - 0x7, 0x3d, 0x48, 0x1d, 0x2b, 0x93, 0xf0, 0x6d, 0xbf, 0x83, - 0x35, 0x24, 0xbb, 0x8f, 0xc5, 0xf2, 0xc8, 0xba, 0xcb, 0xca, - 0xdb, 0xcc, 0xee, 0x54, 0x2f, 0xd2, 0xb7, 0xbc, 0x4, 0x9a, - 0xa2, 0xdb, 0xf8, 0x97, 0xc6, 0x90, 0x5a, 0x13, 0x25, 0xc3, - 0x33, 0xdb, 0xc2, 0xe3, 0x1b, 0xc5, 0x5a, 0xd2, 0xf5, 0x2f, - 0x2, 0x78, 0xeb, 0x49, 0x7b, 0x8f, 0x10, 0x5b, 0xd9, 0xd8, - 0xea, 0xa0, 0x95, 0x9d, 0x58, 0xed, 0x60, 0x7d, 0x68, 0x3, - 0x7f, 0xe1, 0xbf, 0x86, 0xef, 0xbc, 0x3f, 0x77, 0x7e, 0xb0, - 0xea, 0x31, 0xde, 0x68, 0x72, 0xf3, 0x6b, 0xb5, 0xf7, 0x6d, - 0xaf, 0x44, 0xaf, 0x13, 0xf8, 0x5c, 0x7e, 0xc7, 0xe3, 0xdd, - 0x57, 0x4f, 0xd0, 0xee, 0xe5, 0xba, 0xd0, 0x11, 0x72, 0xae, - 0xc7, 0x2a, 0xf, 0xb5, 0x7b, 0x65, 00, 0x15, 0xd, 0xcf, - 0xdc, 0xa9, 0xaa, 0x1b, 0x9f, 0xb9, 0x40, 0x13, 0x51, 0x45, - 0x14, 00, 0x51, 0x45, 0x14, 00, 0x51, 0x45, 0x14, 00, - 0x51, 0x45, 0x14, 0x1, 0xe6, 0x76, 0xbf, 0xf2, 0x14, 0xd7, - 0x3f, 0xec, 0x27, 0x37, 0xf4, 0xae, 0xf3, 0x44, 0xff, 00, - 0x90, 0x3c, 0x1f, 0xf0, 0x2f, 0xfd, 0x8, 0xd7, 0x7, 0x6b, - 0xff, 00, 0x21, 0x4d, 0x73, 0xfe, 0xc2, 0x73, 0x7f, 0x4a, - 0xef, 0x34, 0x4f, 0xf9, 0x3, 0xc1, 0xff, 00, 0x2, 0xff, - 00, 0xd0, 0x8d, 00, 0x67, 0xf8, 0x1f, 0xfe, 0x44, 0xbd, - 0x2f, 0xfe, 0xb9, 0x7f, 0xec, 0xc6, 0xba, 0xa, 0xe7, 0xfc, - 0xf, 0xff, 00, 0x22, 0x5e, 0x97, 0xff, 00, 0x5c, 0xbf, - 0xf6, 0x63, 0x5d, 0x5, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x47, 0x34, 0x31, 0x5c, 0x42, 0xf0, 0xcc, 0x8b, 0x24, - 0x4e, 0xa, 0xb2, 0x30, 0xc8, 0x22, 0xbc, 0x8f, 0xc5, 0x7e, - 0x16, 0x97, 0x40, 0xb9, 0xf3, 0xa1, 0xc, 0xfa, 0x7c, 0xad, - 0xf2, 0x39, 0xe4, 0xc6, 0x7f, 0xba, 0xdf, 0xd0, 0xf7, 0xaf, - 0x60, 0xa8, 0x6e, 0xad, 0x61, 0xbd, 0xb6, 0x92, 0xda, 0xe2, - 0x35, 0x92, 0x19, 0x17, 0x6b, 0xa3, 0x74, 0x22, 0xbb, 0x30, - 0x58, 0xc9, 0xe1, 0x67, 0x75, 0xb3, 0xdd, 0x1c, 0xd8, 0x9c, - 0x34, 0x6b, 0xc6, 0xcf, 0x7e, 0x87, 0x81, 0x51, 0x5b, 0xbe, - 0x27, 0xf0, 0xd4, 0xde, 0x1f, 0xbc, 0xe3, 0x74, 0x96, 0x52, - 0x9f, 0xdc, 0xca, 0x7b, 0x7f, 0xb2, 0xde, 0xff, 00, 0xce, - 0xb0, 0xab, 0xec, 0x29, 0x55, 0x85, 0x58, 0x29, 0xc1, 0xdd, - 0x33, 0xe7, 0x27, 0x9, 0x53, 0x93, 0x8c, 0xb7, 0x3b, 0x9f, - 0xc, 0xff, 00, 0xc7, 0x97, 0x87, 0x7f, 0xec, 0x23, 0x37, - 0xfe, 0x8b, 0x35, 0x44, 0x3e, 0x8f, 0x73, 0xac, 0x58, 0x43, - 0x6, 0xa9, 0xa8, 0xdd, 0x16, 0xbe, 0x41, 0x24, 0x57, 0x47, - 0xf7, 0x7b, 0x77, 0x73, 0xfa, 0xe2, 0xb2, 0x2c, 0x75, 0xfb, - 0xbb, 0x8, 0xac, 0xe3, 0x85, 0x62, 0x22, 0xd2, 0x66, 0x9e, - 0x3d, 0xca, 0x4e, 0x59, 0x86, 0xe, 0x79, 0xe9, 0x83, 0x52, - 0xea, 0x1e, 0x24, 0xb8, 0xd4, 0x6d, 0xbc, 0x96, 0xb3, 0xb1, - 0x80, 0xef, 0xe, 0x24, 0xb7, 0x87, 0x63, 0x82, 0xe, 0x7a, - 0xe6, 0xbc, 0xf7, 0x85, 0xab, 0xed, 0x5c, 0xba, 0x3b, 0xf5, - 0xf3, 0x7e, 0x5e, 0x67, 0x5f, 0xb7, 0x87, 0xb3, 0x4b, 0xb7, - 0xf9, 0x2f, 0xf2, 0x2d, 0xea, 0x1a, 0x86, 0xb5, 0x26, 0xb5, - 0xaf, 0x45, 0x3, 0xcb, 0x2a, 0x1f, 0x31, 0x6e, 0x23, 0x23, - 0x70, 0x48, 0x81, 0xc6, 0x70, 0x7a, 0x60, 0x63, 0x9a, 0x7f, - 0x86, 0x1a, 0xd6, 0xd, 0xb, 0x5f, 0xb8, 0xb9, 0x69, 0xd5, - 0x12, 0x38, 0x83, 0x1b, 0x76, 0xc4, 0x9b, 0x4b, 0x1e, 0x1, - 0xed, 0x93, 0x8a, 0xab, 0x7b, 0xe2, 0xcd, 0x46, 0xfa, 0xc2, - 0x4b, 0x59, 0x12, 0xd9, 0xc, 0xca, 0x16, 0x79, 0xa3, 0x8b, - 0x6c, 0x92, 0x81, 0xd9, 0x8d, 0x51, 0xd2, 0xb5, 0x6b, 0x8d, - 0x22, 0x79, 0x1e, 0x14, 0x8a, 0x54, 0x95, 0x36, 0x4b, 0xc, - 0xc9, 0xb9, 0x1c, 0x7b, 0x8a, 0xd3, 0xd8, 0x54, 0x74, 0x1c, - 0x39, 0x52, 0x7a, 0x6d, 0xd6, 0xd6, 0xeb, 0xf2, 0xd0, 0x8f, - 0x6b, 0x5, 0x55, 0x4a, 0xed, 0xad, 0x77, 0xf3, 0xb9, 0xd8, - 0x69, 0x97, 0x32, 0xd9, 0x78, 0xf8, 0xda, 0xb3, 0x8b, 0xa3, - 0x78, 0x11, 0x85, 0xd4, 0xca, 0x3c, 0xd1, 0x17, 0x96, 0x48, - 0x5e, 0x3a, 0x76, 0xc9, 0xf6, 0xac, 0xaf, 0xe, 0xdf, 0xd9, - 0x41, 0x60, 0xd6, 0x17, 0x7, 0x50, 0x8e, 0x4b, 0xbb, 0xe5, - 0x2, 0x6b, 0x56, 0xd8, 0x7, 0x18, 0x1f, 0x37, 0x7e, 0x4f, - 0x4a, 0xc8, 0x4d, 0x7a, 0xf5, 0x75, 0xe1, 0xac, 0x93, 0x1b, - 0xdd, 0x3, 0x90, 0xa, 0xfc, 0xa0, 0x6d, 0xdb, 0x8c, 0x7a, - 0x1, 0x52, 0x69, 0x7e, 0x23, 0xbc, 0xd2, 0x60, 0x78, 0x62, - 0x8e, 0xde, 0x68, 0xcc, 0x9e, 0x6a, 0x9, 0xe3, 0xdd, 0xe5, - 0xc9, 0xfd, 0xe5, 0xf4, 0x35, 0x9c, 0xb0, 0x93, 0xe5, 0x7a, - 0x6a, 0xd4, 0x7a, 0xdb, 0x55, 0x7f, 0xf8, 0x5, 0xac, 0x44, - 0x79, 0x96, 0xba, 0x5d, 0xfd, 0xce, 0xdf, 0xf0, 0x4e, 0xbe, - 0xca, 0x29, 0xb4, 0xeb, 0xcd, 0x2, 0xc9, 0x66, 0x67, 0xcd, - 0xed, 0xe2, 0x4e, 0x73, 0xfe, 0xb4, 0x8c, 0x8c, 0xb7, 0xaf, - 0x15, 0x16, 0x9c, 0x50, 0x69, 0xb6, 0x36, 0xa2, 0x57, 0x17, - 0xef, 0x65, 0x74, 0x2d, 0x61, 0x4, 0xf9, 0x4f, 0x19, 0x27, - 0x97, 0xff, 00, 0x6b, 00, 0xd7, 0x31, 0x65, 0xe2, 0x8d, - 0x4a, 0xca, 0xd6, 0x68, 0x50, 0xc5, 0x23, 0x48, 0xef, 0x22, - 0xcb, 0x22, 0x65, 0xe3, 0x66, 0xfb, 0xc5, 0x4f, 0x6c, 0xd2, - 0x5a, 0xf8, 0x9a, 0xfe, 0xd3, 0x4c, 0x16, 0x31, 0xa5, 0xb9, - 0xd8, 0x8d, 0x1c, 0x53, 0xb4, 0x79, 0x96, 0x34, 0x6e, 0xa1, - 0x5a, 0xb2, 0x96, 0x6, 0xb3, 0xbe, 0xdf, 0xe7, 0xf1, 0x6b, - 0xf8, 0xec, 0x5a, 0xc5, 0x53, 0x5f, 0xd7, 0xa7, 0xf9, 0x18, - 0xab, 0xf7, 0x47, 0xd2, 0x96, 0x8e, 0x83, 0x15, 0xa3, 0xa2, - 0xe8, 0xb7, 0x5a, 0xee, 0xa0, 0xb6, 0xb6, 0xc3, 0x3, 0xac, - 0x92, 0x11, 0xc4, 0x6b, 0xea, 0x7f, 0xa0, 0xaf, 0x5e, 0x73, - 0x8c, 0x22, 0xe5, 0x27, 0x64, 0x8f, 0x3e, 0x31, 0x72, 0x6a, - 0x31, 0xdc, 0x97, 0x40, 0xd0, 0x6e, 0x75, 0xfb, 0xf1, 0x4, - 0x39, 0x48, 0x53, 0x6, 0x69, 0x88, 0xe1, 0x7, 0xf5, 0x27, - 0xb0, 0xaf, 0x63, 0xd3, 0xb4, 0xfb, 0x6d, 0x2e, 0xc6, 0x3b, - 0x4b, 0x48, 0xc2, 0x45, 0x18, 0xe0, 0x77, 0x27, 0xb9, 0x27, - 0xb9, 0x35, 0x1e, 0x93, 0xa5, 0x5a, 0xe8, 0xd6, 0x11, 0xda, - 0x5a, 0x26, 0xd4, 0x5e, 0x4b, 0x1e, 0xae, 0x7b, 0x93, 0xef, - 0x57, 0xab, 0xe4, 0x71, 0xf8, 0xe9, 0x62, 0x67, 0x65, 0xa4, - 0x56, 0xdf, 0xe6, 0x7d, 0x16, 0x13, 0xa, 0xa8, 0x46, 0xef, - 0xe2, 0x61, 0x45, 0x14, 0x57, 0x9e, 0x76, 0x5, 0x14, 0x51, - 0x40, 0x5, 0x67, 0x6a, 0x9f, 0xf2, 0xc3, 0xea, 0xdf, 0xca, - 0xb4, 0x6b, 0x3b, 0x56, 0x4, 0x44, 0x92, 0x7f, 0xa, 0x12, - 0x4f, 0xe5, 0x40, 0x17, 0x2d, 0xff, 00, 0xd4, 0x27, 0xd2, - 0xa5, 0xa8, 0x2c, 0xe4, 0x59, 0x2d, 0x90, 0xa9, 0xed, 0x53, - 0xd0, 0x1, 0x50, 0xdd, 0x5a, 0x5b, 0xdf, 0x5b, 0xbd, 0xbd, - 0xd4, 0x29, 0x2c, 0x4e, 0x30, 0xc8, 0xe3, 0x20, 0xd4, 0xd4, - 0x50, 0x7, 0x17, 0xff, 00, 0xa, 0xaf, 0xc2, 0x7f, 0x6a, - 0xf3, 0xff, 00, 0xb3, 0x53, 0x19, 0xce, 0xcf, 0xe1, 0xae, - 0x96, 0x6d, 0x17, 0x4e, 0x9f, 0x4b, 0x3a, 0x63, 0xda, 0x44, - 0x6c, 0xca, 0xed, 0xf2, 0xb1, 0xc6, 0x2a, 0xfd, 0x14, 0x1, - 0xc8, 0x5b, 0xfc, 0x34, 0xf0, 0xc4, 0x1b, 0x81, 0xd3, 0xd2, - 0x40, 0x7a, 0x7, 0xe4, 0x2f, 0xd2, 0xb5, 0x66, 0xf0, 0xa6, - 0x91, 0x3e, 0x9f, 0x6f, 0x63, 0x25, 0xaa, 0xb4, 0x16, 0xed, - 0xba, 0x35, 0x3f, 0xc2, 0x6b, 0x6a, 0x8a, 00, 0xcd, 0xd5, - 0x74, 0x1d, 0x37, 0x5b, 0xb2, 0x16, 0x9a, 0x85, 0xac, 0x73, - 0x44, 0x6, 0x14, 0x30, 0xe9, 0xf4, 0xac, 0xdd, 0x17, 0xc0, - 0x9a, 0x6, 0x85, 0x73, 0xf6, 0x9b, 0x4b, 0x24, 0xf3, 0xfb, - 0x48, 0xc3, 0x25, 0x7e, 0x95, 0xd2, 0x51, 0x40, 0x19, 0x87, - 0x40, 0xd3, 0x9b, 0x5a, 0xfe, 0xd7, 0x30, 0x2f, 0xdb, 0x36, - 0xed, 0xf3, 0x3b, 0xe2, 0xad, 0x6a, 0x1a, 0x7d, 0xb6, 0xa9, - 0x65, 0x25, 0x9d, 0xe4, 0x4b, 0x2c, 0x12, 0xc, 0x32, 0xb0, - 0xeb, 0x56, 0x68, 0xa0, 0xa, 0x1a, 0x4e, 0x8f, 0x67, 0xa2, - 0xe9, 0xeb, 0x63, 0x65, 0x1f, 0x97, 0x6e, 0xb9, 0xc2, 0xfa, - 0x54, 0x7a, 0x66, 0x83, 0xa7, 0x69, 0x17, 0x37, 0x13, 0xd9, - 0xdb, 0xac, 0x72, 0x5c, 0x1c, 0xc8, 0x47, 0xf1, 0x1a, 0xd3, - 0xa2, 0x80, 0x2b, 0xde, 0x59, 0x5b, 0x6a, 0x36, 0xcf, 0x6d, - 0x79, 0x2, 0x4d, 0xb, 0xfd, 0xe4, 0x71, 0x90, 0x6b, 0x94, - 0x8f, 0xe1, 0x6f, 0x85, 0x23, 0xbb, 0x13, 0xff, 00, 0x67, - 0x21, 0xc1, 0xc8, 0x43, 0xf7, 0x6b, 0xb3, 0xa2, 0x80, 0x22, - 0x86, 0xda, 0x1b, 0x6b, 0x75, 0x82, 0x18, 0x91, 0x22, 0x51, - 0x80, 0x8a, 0x30, 00, 0xae, 0x5b, 0x53, 0xf8, 0x6b, 0xe1, - 0x8d, 0x52, 0xed, 0xae, 0x66, 0xd3, 0xa3, 0x59, 0x58, 0xe5, - 0x8a, 0xc, 0x6e, 0xae, 0xba, 0x8a, 00, 0xcd, 0xd1, 0xb4, - 0xd, 0x33, 0x40, 0xb5, 0xfb, 0x3e, 0x9b, 0x69, 0x1c, 0x9, - 0xdf, 0x68, 0xe4, 0xfd, 0x6b, 0x4a, 0x8a, 0x28, 00, 0xa8, - 0x6e, 0x7f, 0xd5, 0xd4, 0xd5, 0x4e, 0xfa, 0xe6, 0x38, 0x82, - 0xab, 0x1e, 0x58, 0xe0, 0xa, 00, 0xb9, 0x45, 0x14, 0x50, - 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, - 0x14, 0x50, 0x7, 0x99, 0xda, 0xff, 00, 0xc8, 0x53, 0x5c, - 0xff, 00, 0xb0, 0x9c, 0xdf, 0xd2, 0xbb, 0xcd, 0x13, 0xfe, - 0x40, 0xf0, 0x7f, 0xc0, 0xbf, 0xf4, 0x23, 0x5c, 0x1d, 0xaf, - 0xfc, 0x85, 0x35, 0xcf, 0xfb, 0x9, 0xcd, 0xfd, 0x2b, 0xbc, - 0xd1, 0x3f, 0xe4, 0xf, 0x7, 0xfc, 0xb, 0xff, 00, 0x42, - 0x34, 0x1, 0x9f, 0xe0, 0x7f, 0xf9, 0x12, 0xf4, 0xbf, 0xfa, - 0xe5, 0xff, 00, 0xb3, 0x1a, 0xe8, 0x2b, 0x9f, 0xf0, 0x3f, - 0xfc, 0x89, 0x7a, 0x5f, 0xfd, 0x72, 0xff, 00, 0xd9, 0x8d, - 0x74, 0x14, 00, 0x51, 0x45, 0x14, 00, 0x51, 0x45, 0x14, - 00, 0x51, 0x45, 0x14, 00, 0x51, 0x45, 0x14, 00, 0x51, - 0x45, 0x14, 00, 0x51, 0x45, 0x14, 00, 0x51, 0x45, 0x14, - 00, 0x51, 0x45, 0x14, 00, 0x51, 0x45, 0x14, 00, 0x51, - 0x45, 0x14, 00, 0x51, 0x45, 0x14, 00, 0x51, 0x45, 0x14, - 00, 0x51, 0x45, 0x14, 00, 0x51, 0x45, 0x14, 00, 0x51, - 0x45, 0x14, 00, 0x51, 0x45, 0x14, 00, 0x51, 0x45, 0x14, - 00, 0x51, 0x45, 0x14, 00, 0x51, 0x45, 0x14, 00, 0x51, - 0x45, 0x14, 00, 0x51, 0x45, 0x14, 00, 0x51, 0x45, 0x14, - 00, 0x51, 0x45, 0x14, 00, 0x51, 0x45, 0x14, 00, 0x51, - 0x45, 0x14, 0x1, 0x5e, 0xfa, 0xc6, 0xdf, 0x52, 0xb3, 0x92, - 0xd2, 0xea, 0x31, 0x24, 0x32, 0xc, 0x30, 0x3f, 0xcc, 0x7a, - 0x1a, 0xf2, 0xeb, 0xff, 00, 00, 0xeb, 0x36, 0xf7, 0xb2, - 0x47, 0x67, 00, 0xb9, 0xb7, 0x7, 0xe4, 0x97, 0xcc, 0x45, - 0x24, 0x7a, 0x10, 0x48, 0xe6, 0xbd, 0x66, 0x8a, 0xec, 0xc2, - 0xe3, 0xaa, 0xe1, 0xaf, 0xc9, 0xb3, 0xe8, 0xce, 0x6c, 0x46, - 0x16, 0x9d, 0x7b, 0x73, 0x1e, 0x3b, 0xff, 00, 0x8, 0x3f, - 0x88, 0xbf, 0xe8, 0x1f, 0xff, 00, 0x91, 0xa3, 0xff, 00, - 0xe2, 0xa8, 0xff, 00, 0x84, 0x1f, 0xc4, 0x5f, 0xf4, 0xf, - 0xff, 00, 0xc8, 0xd1, 0xff, 00, 0xf1, 0x55, 0xec, 0x54, - 0x57, 0x67, 0xf6, 0xde, 0x23, 0xb2, 0xfc, 0x7f, 0xcc, 0xe6, - 0xfe, 0xcb, 0xa3, 0xdd, 0xfe, 0x1f, 0xe4, 0x78, 0xef, 0xfc, - 0x20, 0xfe, 0x22, 0xff, 00, 0xa0, 0x7f, 0xfe, 0x46, 0x8f, - 0xff, 00, 0x8a, 0xa3, 0xfe, 0x10, 0x7f, 0x11, 0x7f, 0xd0, - 0x3f, 0xff, 00, 0x23, 0x47, 0xff, 00, 0xc5, 0x57, 0xb1, - 0x51, 0x47, 0xf6, 0xde, 0x23, 0xb2, 0xfc, 0x7f, 0xcc, 0x3f, - 0xb2, 0xe8, 0xf7, 0x7f, 0x87, 0xf9, 0x1e, 0x3b, 0xff, 00, - 0x8, 0x3f, 0x88, 0xbf, 0xe8, 0x1f, 0xff, 00, 0x91, 0xa3, - 0xff, 00, 0xe2, 0xa8, 0xff, 00, 0x84, 0x1f, 0xc4, 0x5f, - 0xf4, 0xf, 0xff, 00, 0xc8, 0xd1, 0xff, 00, 0xf1, 0x55, - 0xec, 0x54, 0x51, 0xfd, 0xb7, 0x88, 0xec, 0xbf, 0x1f, 0xf3, - 0xf, 0xec, 0xba, 0x3d, 0xdf, 0xe1, 0xfe, 0x47, 0x8e, 0xff, - 00, 0xc2, 0xf, 0xe2, 0x2f, 0xfa, 0x7, 0xff, 00, 0xe4, - 0x68, 0xff, 00, 0xf8, 0xaa, 0x3f, 0xe1, 0x7, 0xf1, 0x17, - 0xfd, 0x3, 0xff, 00, 0xf2, 0x34, 0x7f, 0xfc, 0x55, 0x7b, - 0x15, 0x14, 0x7f, 0x6d, 0xe2, 0x3b, 0x2f, 0xc7, 0xfc, 0xc3, - 0xfb, 0x2e, 0x8f, 0x77, 0xf8, 0x7f, 0x91, 0xe4, 0x11, 0x78, - 0x13, 0xc4, 0x12, 0x4c, 0x88, 0xf6, 0x6b, 0x12, 0xb1, 00, - 0xc8, 0xd2, 0xa1, 0xa, 0x3d, 0x70, 0xe, 0x6b, 0xd3, 0xb4, - 0x5d, 0x16, 0xd7, 0x43, 0xd3, 0xd6, 0xd6, 0xd9, 0x73, 0xde, - 0x49, 0x8, 0xf9, 0xa4, 0x6f, 0x53, 0x5a, 0x34, 0x57, 0x2e, - 0x2b, 0x30, 0xad, 0x89, 0x4a, 0x33, 0xd1, 0x79, 0x1d, 0x14, - 0x30, 0x74, 0xe8, 0x3b, 0xc7, 0x7f, 0x30, 0xa2, 0x8a, 0x2b, - 0x84, 0xea, 0xa, 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa2, 0x80, - 0xa, 0x6c, 0x91, 0xac, 0xb1, 0xb4, 0x6e, 0x32, 0xac, 0x30, - 0x45, 0x3a, 0x8a, 00, 0xc6, 0x3a, 0x6d, 0xdd, 0xa1, 0x22, - 0xd6, 0x56, 0x74, 0xec, 0xa4, 0x81, 0x8a, 0x6f, 0x97, 0xab, - 0x7f, 0x70, 0xff, 00, 0xdf, 0x6b, 0xfe, 0x35, 0xb7, 0x45, - 00, 0x62, 0x79, 0x5a, 0xaf, 0xf7, 0xf, 0xfd, 0xf6, 0xbf, - 0xe3, 0x47, 0x95, 0xaa, 0xff, 00, 0x70, 0xff, 00, 0xdf, - 0x6b, 0xfe, 0x35, 0xb7, 0x45, 00, 0x62, 0x79, 0x5a, 0xaf, - 0xf7, 0xf, 0xfd, 0xf6, 0xbf, 0xe3, 0x47, 0x95, 0xaa, 0xff, - 00, 0x70, 0xff, 00, 0xdf, 0x6b, 0xfe, 0x35, 0xb7, 0x45, - 00, 0x62, 0x79, 0x5a, 0xaf, 0xf7, 0xf, 0xfd, 0xf6, 0xbf, - 0xe3, 0x47, 0x95, 0xaa, 0xff, 00, 0x70, 0xff, 00, 0xdf, - 0x6b, 0xfe, 0x35, 0xb7, 0x45, 00, 0x62, 0x79, 0x5a, 0xaf, - 0xf7, 0xf, 0xfd, 0xf6, 0xbf, 0xe3, 0x47, 0x95, 0xaa, 0xff, - 00, 0x70, 0xff, 00, 0xdf, 0x6b, 0xfe, 0x35, 0xb7, 0x45, - 00, 0x62, 0x79, 0x5a, 0xaf, 0xf7, 0xf, 0xfd, 0xf6, 0xbf, - 0xe3, 0x47, 0x95, 0xaa, 0xff, 00, 0x70, 0xff, 00, 0xdf, - 0x6b, 0xfe, 0x35, 0xb7, 0x45, 00, 0x62, 0x79, 0x5a, 0xaf, - 0xf7, 0xf, 0xfd, 0xf6, 0xbf, 0xe3, 0x47, 0x95, 0xaa, 0xff, - 00, 0x70, 0xff, 00, 0xdf, 0x6b, 0xfe, 0x35, 0xb7, 0x45, - 00, 0x62, 0x79, 0x5a, 0xaf, 0xf7, 0xf, 0xfd, 0xf6, 0xbf, - 0xe3, 0x47, 0x95, 0xaa, 0xff, 00, 0x70, 0xff, 00, 0xdf, - 0x6b, 0xfe, 0x35, 0xb7, 0x45, 00, 0x62, 0x79, 0x5a, 0xaf, - 0xf7, 0xf, 0xfd, 0xf6, 0xbf, 0xe3, 0x47, 0x95, 0xaa, 0xff, - 00, 0x70, 0xff, 00, 0xdf, 0x6b, 0xfe, 0x35, 0xb7, 0x45, - 00, 0x62, 0x79, 0x5a, 0xaf, 0xf7, 0xf, 0xfd, 0xf6, 0xbf, - 0xe3, 0x47, 0x95, 0xaa, 0xff, 00, 0x70, 0xff, 00, 0xdf, - 0x6b, 0xfe, 0x35, 0xb7, 0x45, 00, 0x62, 0x79, 0x5a, 0xb7, - 0xf7, 0xf, 0xfd, 0xf6, 0xbf, 0xe3, 0x4f, 0xb4, 0xd2, 0x25, - 0x37, 0x2b, 0x73, 0x7b, 0x33, 0x48, 0xca, 0x72, 0xa9, 0xc6, - 0x5, 0x6c, 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, - 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, - 0x1e, 0x67, 0x6b, 0xff, 00, 0x21, 0x4d, 0x73, 0xfe, 0xc2, - 0x73, 0x7f, 0x4a, 0xef, 0x34, 0x4f, 0xf9, 0x3, 0xc1, 0xff, - 00, 0x2, 0xff, 00, 0xd0, 0x8d, 0x70, 0x76, 0xbf, 0xf2, - 0x14, 0xd7, 0x3f, 0xec, 0x27, 0x37, 0xf4, 0xae, 0xf3, 0x44, - 0xff, 00, 0x90, 0x3c, 0x1f, 0xf0, 0x2f, 0xfd, 0x8, 0xd0, - 0x6, 0x4d, 0xaf, 0x84, 0xae, 0xac, 0x2d, 0xd6, 0xda, 0xcb, - 0xc5, 0x7a, 0xd5, 0xbd, 0xb2, 0x67, 0xcb, 0x85, 0x63, 0xb4, - 0x60, 0x83, 0x39, 0xc0, 0x2d, 0x1, 0x24, 0x73, 0xdc, 0x93, - 0x58, 0x57, 0xb, 0xaf, 0x45, 0x73, 0x2c, 0x6b, 0xe2, 0xfd, - 0x58, 0xaa, 0x39, 0x51, 0x98, 0x2c, 0xfb, 0x1f, 0xfa, 0xe1, - 0x5d, 0x19, 0xf1, 0xbf, 0x87, 0x37, 0x10, 0x35, 0x35, 0x6c, - 0x12, 0x32, 0x91, 0xbb, 0xe, 0x38, 0xe0, 0x81, 0x83, 0x59, - 0xf2, 0x6b, 0x9e, 0xf, 0x92, 0x46, 0x91, 0xaf, 0x18, 0xb3, - 0x12, 0x4f, 0xee, 0xe5, 0xea, 0x7f, 0xa, 00, 0xc7, 0xdd, - 0xe2, 0xf, 0xfa, 0x1b, 0xb5, 0x5f, 0xfc, 0x7, 0xb3, 0xff, - 00, 0xe3, 0x14, 0x6e, 0xf1, 0x7, 0xfd, 0xd, 0xda, 0xaf, - 0xfe, 0x3, 0xd9, 0xff, 00, 0xf1, 0x8a, 0xd6, 0xfe, 0xd9, - 0xf0, 0x77, 0xfc, 0xfd, 0xb7, 0xfd, 0xfb, 0x97, 0xfc, 0x28, - 0xfe, 0xd9, 0xf0, 0x77, 0xfc, 0xfd, 0xb7, 0xfd, 0xfb, 0x97, - 0xfc, 0x28, 0x3, 0x27, 0x77, 0x88, 0x3f, 0xe8, 0x6e, 0xd5, - 0x7f, 0xf0, 0x1e, 0xcf, 0xff, 00, 0x8c, 0x51, 0xbb, 0xc4, - 0x1f, 0xf4, 0x37, 0x6a, 0xbf, 0xf8, 0xf, 0x67, 0xff, 00, - 0xc6, 0x2b, 0x5b, 0xfb, 0x67, 0xc1, 0xdf, 0xf3, 0xf6, 0xdf, - 0xf7, 0xee, 0x5f, 0xf0, 0xa3, 0xfb, 0x67, 0xc1, 0xdf, 0xf3, - 0xf6, 0xdf, 0xf7, 0xee, 0x5f, 0xf0, 0xa0, 0xc, 0x9d, 0xde, - 0x20, 0xff, 00, 0xa1, 0xbb, 0x55, 0xff, 00, 0xc0, 0x7b, - 0x3f, 0xfe, 0x31, 0x46, 0xef, 0x10, 0x7f, 0xd0, 0xdd, 0xaa, - 0xff, 00, 0xe0, 0x3d, 0x9f, 0xff, 00, 0x18, 0xad, 0x6f, - 0xed, 0x9f, 0x7, 0x7f, 0xcf, 0xdb, 0x7f, 0xdf, 0xb9, 0x7f, - 0xc2, 0x8f, 0xed, 0x9f, 0x7, 0x7f, 0xcf, 0xdb, 0x7f, 0xdf, - 0xb9, 0x7f, 0xc2, 0x80, 0x32, 0x77, 0x78, 0x83, 0xfe, 0x86, - 0xed, 0x57, 0xff, 00, 0x1, 0xec, 0xff, 00, 0xf8, 0xc5, - 0x1b, 0xbc, 0x41, 0xff, 00, 0x43, 0x76, 0xab, 0xff, 00, - 0x80, 0xf6, 0x7f, 0xfc, 0x62, 0xb5, 0xbf, 0xb6, 0x7c, 0x1d, - 0xff, 00, 0x3f, 0x6d, 0xff, 00, 0x7e, 0xe5, 0xff, 00, - 0xa, 0x3f, 0xb6, 0x7c, 0x1d, 0xff, 00, 0x3f, 0x6d, 0xff, - 00, 0x7e, 0xe5, 0xff, 00, 0xa, 00, 0xc9, 0xdd, 0xe2, - 0xf, 0xfa, 0x1b, 0xb5, 0x5f, 0xfc, 0x7, 0xb3, 0xff, 00, - 0xe3, 0x14, 0x6e, 0xf1, 0x7, 0xfd, 0xd, 0xda, 0xaf, 0xfe, - 0x3, 0xd9, 0xff, 00, 0xf1, 0x8a, 0xd6, 0xfe, 0xd9, 0xf0, - 0x77, 0xfc, 0xfd, 0xb7, 0xfd, 0xfb, 0x97, 0xfc, 0x28, 0xfe, - 0xd9, 0xf0, 0x77, 0xfc, 0xfd, 0xb7, 0xfd, 0xfb, 0x97, 0xfc, - 0x28, 0x3, 0x27, 0x77, 0x88, 0x3f, 0xe8, 0x6e, 0xd5, 0x7f, - 0xf0, 0x1e, 0xcf, 0xff, 00, 0x8c, 0x51, 0xbb, 0xc4, 0x1f, - 0xf4, 0x37, 0x6a, 0xbf, 0xf8, 0xf, 0x67, 0xff, 00, 0xc6, - 0x2b, 0x5b, 0xfb, 0x67, 0xc1, 0xdf, 0xf3, 0xf6, 0xdf, 0xf7, - 0xee, 0x5f, 0xf0, 0xa3, 0xfb, 0x67, 0xc1, 0xdf, 0xf3, 0xf6, - 0xdf, 0xf7, 0xee, 0x5f, 0xf0, 0xa0, 0xc, 0x9d, 0xde, 0x20, - 0xff, 00, 0xa1, 0xbb, 0x55, 0xff, 00, 0xc0, 0x7b, 0x3f, - 0xfe, 0x31, 0x46, 0xef, 0x10, 0x7f, 0xd0, 0xdd, 0xaa, 0xff, - 00, 0xe0, 0x3d, 0x9f, 0xff, 00, 0x18, 0xad, 0x6f, 0xed, - 0x9f, 0x7, 0x7f, 0xcf, 0xdb, 0x7f, 0xdf, 0xb9, 0x7f, 0xc2, - 0x8f, 0xed, 0x9f, 0x7, 0x7f, 0xcf, 0xdb, 0x7f, 0xdf, 0xb9, - 0x7f, 0xc2, 0x80, 0x32, 0x77, 0x78, 0x83, 0xfe, 0x86, 0xed, - 0x57, 0xff, 00, 0x1, 0xec, 0xff, 00, 0xf8, 0xc5, 0x1b, - 0xbc, 0x41, 0xff, 00, 0x43, 0x76, 0xab, 0xff, 00, 0x80, - 0xf6, 0x7f, 0xfc, 0x62, 0xb5, 0xbf, 0xb6, 0x7c, 0x1d, 0xff, - 00, 0x3f, 0x6d, 0xff, 00, 0x7e, 0xe5, 0xff, 00, 0xa, - 0x3f, 0xb6, 0x7c, 0x1d, 0xff, 00, 0x3f, 0x6d, 0xff, 00, - 0x7e, 0xe5, 0xff, 00, 0xa, 00, 0xc9, 0xdd, 0xe2, 0xf, - 0xfa, 0x1b, 0xb5, 0x5f, 0xfc, 0x7, 0xb3, 0xff, 00, 0xe3, - 0x14, 0x6e, 0xf1, 0x7, 0xfd, 0xd, 0xda, 0xaf, 0xfe, 0x3, - 0xd9, 0xff, 00, 0xf1, 0x8a, 0xd6, 0xfe, 0xd9, 0xf0, 0x77, - 0xfc, 0xfd, 0xb7, 0xfd, 0xfb, 0x97, 0xfc, 0x28, 0xfe, 0xd9, - 0xf0, 0x77, 0xfc, 0xfd, 0xb7, 0xfd, 0xfb, 0x97, 0xfc, 0x28, - 0x3, 0x27, 0x77, 0x88, 0x3f, 0xe8, 0x6e, 0xd5, 0x7f, 0xf0, - 0x1e, 0xcf, 0xff, 00, 0x8c, 0x51, 0xbb, 0xc4, 0x1f, 0xf4, - 0x37, 0x6a, 0xbf, 0xf8, 0xf, 0x67, 0xff, 00, 0xc6, 0x2b, - 0x5b, 0xfb, 0x67, 0xc1, 0xdf, 0xf3, 0xf6, 0xdf, 0xf7, 0xee, - 0x5f, 0xf0, 0xa3, 0xfb, 0x67, 0xc1, 0xdf, 0xf3, 0xf6, 0xdf, - 0xf7, 0xee, 0x5f, 0xf0, 0xa0, 0xc, 0x9d, 0xde, 0x20, 0xff, - 00, 0xa1, 0xbb, 0x55, 0xff, 00, 0xc0, 0x7b, 0x3f, 0xfe, - 0x31, 0x46, 0xef, 0x10, 0x7f, 0xd0, 0xdd, 0xaa, 0xff, 00, - 0xe0, 0x3d, 0x9f, 0xff, 00, 0x18, 0xad, 0x6f, 0xed, 0x9f, - 0x7, 0x7f, 0xcf, 0xdb, 0x7f, 0xdf, 0xb9, 0x7f, 0xc2, 0x8f, - 0xed, 0x9f, 0x7, 0x7f, 0xcf, 0xdb, 0x7f, 0xdf, 0xb9, 0x7f, - 0xc2, 0x80, 0x32, 0x77, 0x78, 0x83, 0xfe, 0x86, 0xed, 0x57, - 0xff, 00, 0x1, 0xec, 0xff, 00, 0xf8, 0xc5, 0x1b, 0xbc, - 0x41, 0xff, 00, 0x43, 0x76, 0xab, 0xff, 00, 0x80, 0xf6, - 0x7f, 0xfc, 0x62, 0xb5, 0xbf, 0xb6, 0x7c, 0x1d, 0xff, 00, - 0x3f, 0x6d, 0xff, 00, 0x7e, 0xe5, 0xff, 00, 0xa, 0x3f, - 0xb6, 0x7c, 0x1d, 0xff, 00, 0x3f, 0x6d, 0xff, 00, 0x7e, - 0xe5, 0xff, 00, 0xa, 00, 0xc9, 0xdd, 0xe2, 0xf, 0xfa, - 0x1b, 0xb5, 0x5f, 0xfc, 0x7, 0xb3, 0xff, 00, 0xe3, 0x14, - 0x6e, 0xf1, 0x7, 0xfd, 0xd, 0xda, 0xaf, 0xfe, 0x3, 0xd9, - 0xff, 00, 0xf1, 0x8a, 0xd6, 0xfe, 0xd9, 0xf0, 0x77, 0xfc, - 0xfd, 0xb7, 0xfd, 0xfb, 0x97, 0xfc, 0x28, 0xfe, 0xd9, 0xf0, - 0x77, 0xfc, 0xfd, 0xb7, 0xfd, 0xfb, 0x97, 0xfc, 0x28, 0x3, - 0x27, 0x77, 0x88, 0x3f, 0xe8, 0x6e, 0xd5, 0x7f, 0xf0, 0x1e, - 0xcf, 0xff, 00, 0x8c, 0x51, 0xbb, 0xc4, 0x1f, 0xf4, 0x37, - 0x6a, 0xbf, 0xf8, 0xf, 0x67, 0xff, 00, 0xc6, 0x2b, 0x5b, - 0xfb, 0x67, 0xc1, 0xdf, 0xf3, 0xf6, 0xdf, 0xf7, 0xee, 0x5f, - 0xf0, 0xa3, 0xfb, 0x67, 0xc1, 0xdf, 0xf3, 0xf6, 0xdf, 0xf7, - 0xee, 0x5f, 0xf0, 0xa0, 0xc, 0x9d, 0xde, 0x20, 0xff, 00, - 0xa1, 0xbb, 0x55, 0xff, 00, 0xc0, 0x7b, 0x3f, 0xfe, 0x31, - 0x46, 0xef, 0x10, 0x7f, 0xd0, 0xdd, 0xaa, 0xff, 00, 0xe0, - 0x3d, 0x9f, 0xff, 00, 0x18, 0xad, 0x6f, 0xed, 0x9f, 0x7, - 0x7f, 0xcf, 0xdb, 0x7f, 0xdf, 0xb9, 0x7f, 0xc2, 0x8f, 0xed, - 0x9f, 0x7, 0x7f, 0xcf, 0xdb, 0x7f, 0xdf, 0xb9, 0x7f, 0xc2, - 0x80, 0x32, 0x77, 0x78, 0x83, 0xfe, 0x86, 0xed, 0x57, 0xff, - 00, 0x1, 0xec, 0xff, 00, 0xf8, 0xc5, 0x1b, 0xbc, 0x41, - 0xff, 00, 0x43, 0x76, 0xab, 0xff, 00, 0x80, 0xf6, 0x7f, - 0xfc, 0x62, 0xb5, 0xbf, 0xb6, 0x7c, 0x1d, 0xff, 00, 0x3f, - 0x6d, 0xff, 00, 0x7e, 0xe5, 0xff, 00, 0xa, 0x3f, 0xb6, - 0x7c, 0x1d, 0xff, 00, 0x3f, 0x6d, 0xff, 00, 0x7e, 0xe5, - 0xff, 00, 0xa, 00, 0xc9, 0xdd, 0xe2, 0xf, 0xfa, 0x1b, - 0xb5, 0x5f, 0xfc, 0x7, 0xb3, 0xff, 00, 0xe3, 0x14, 0x6e, - 0xf1, 0x7, 0xfd, 0xd, 0xda, 0xaf, 0xfe, 0x3, 0xd9, 0xff, - 00, 0xf1, 0x8a, 0xd6, 0xfe, 0xd9, 0xf0, 0x77, 0xfc, 0xfd, - 0xb7, 0xfd, 0xfb, 0x97, 0xfc, 0x28, 0xfe, 0xd9, 0xf0, 0x77, - 0xfc, 0xfd, 0xb7, 0xfd, 0xfb, 0x97, 0xfc, 0x28, 0x3, 0x27, - 0x77, 0x88, 0x3f, 0xe8, 0x6e, 0xd5, 0x7f, 0xf0, 0x1e, 0xcf, - 0xff, 00, 0x8c, 0x51, 0xbb, 0xc4, 0x1f, 0xf4, 0x37, 0x6a, - 0xbf, 0xf8, 0xf, 0x67, 0xff, 00, 0xc6, 0x2b, 0x5b, 0xfb, - 0x67, 0xc1, 0xdf, 0xf3, 0xf6, 0xdf, 0xf7, 0xee, 0x5f, 0xf0, - 0xa3, 0xfb, 0x67, 0xc1, 0xdf, 0xf3, 0xf6, 0xdf, 0xf7, 0xee, - 0x5f, 0xf0, 0xa0, 0xc, 0x9d, 0xde, 0x20, 0xff, 00, 0xa1, - 0xbb, 0x55, 0xff, 00, 0xc0, 0x7b, 0x3f, 0xfe, 0x31, 0x46, - 0xef, 0x10, 0x7f, 0xd0, 0xdd, 0xaa, 0xff, 00, 0xe0, 0x3d, - 0x9f, 0xff, 00, 0x18, 0xad, 0x6f, 0xed, 0x9f, 0x7, 0x7f, - 0xcf, 0xdb, 0x7f, 0xdf, 0xb9, 0x7f, 0xc2, 0x8f, 0xed, 0x9f, - 0x7, 0x7f, 0xcf, 0xdb, 0x7f, 0xdf, 0xb9, 0x7f, 0xc2, 0x80, - 0x32, 0x77, 0x78, 0x83, 0xfe, 0x86, 0xed, 0x57, 0xff, 00, - 0x1, 0xec, 0xff, 00, 0xf8, 0xc5, 0x1b, 0xbc, 0x41, 0xff, - 00, 0x43, 0x76, 0xab, 0xff, 00, 0x80, 0xf6, 0x7f, 0xfc, - 0x62, 0xb5, 0xbf, 0xb6, 0x7c, 0x1d, 0xff, 00, 0x3f, 0x6d, - 0xff, 00, 0x7e, 0xe5, 0xff, 00, 0xa, 0x3f, 0xb6, 0x7c, - 0x1d, 0xff, 00, 0x3f, 0x6d, 0xff, 00, 0x7e, 0xe5, 0xff, - 00, 0xa, 00, 0xc9, 0xdd, 0xe2, 0xf, 0xfa, 0x1b, 0xb5, - 0x5f, 0xfc, 0x7, 0xb3, 0xff, 00, 0xe3, 0x14, 0x6e, 0xf1, - 0x7, 0xfd, 0xd, 0xda, 0xaf, 0xfe, 0x3, 0xd9, 0xff, 00, - 0xf1, 0x8a, 0xd6, 0xfe, 0xd9, 0xf0, 0x77, 0xfc, 0xfd, 0xb7, - 0xfd, 0xfb, 0x97, 0xfc, 0x28, 0xfe, 0xd9, 0xf0, 0x77, 0xfc, - 0xfd, 0xb7, 0xfd, 0xfb, 0x97, 0xfc, 0x28, 0x3, 0x27, 0x77, - 0x88, 0x3f, 0xe8, 0x6e, 0xd5, 0x7f, 0xf0, 0x1e, 0xcf, 0xff, - 00, 0x8c, 0x51, 0xbb, 0xc4, 0x1f, 0xf4, 0x37, 0x6a, 0xbf, - 0xf8, 0xf, 0x67, 0xff, 00, 0xc6, 0x2b, 0x5b, 0xfb, 0x67, - 0xc1, 0xdf, 0xf3, 0xf6, 0xdf, 0xf7, 0xee, 0x5f, 0xf0, 0xa3, - 0xfb, 0x67, 0xc1, 0xdf, 0xf3, 0xf6, 0xdf, 0xf7, 0xee, 0x5f, - 0xf0, 0xa0, 0xc, 0x9d, 0xde, 0x20, 0xff, 00, 0xa1, 0xbb, - 0x55, 0xff, 00, 0xc0, 0x7b, 0x3f, 0xfe, 0x31, 0x46, 0xef, - 0x10, 0x7f, 0xd0, 0xdd, 0xaa, 0xff, 00, 0xe0, 0x3d, 0x9f, - 0xff, 00, 0x18, 0xad, 0x6f, 0xed, 0x9f, 0x7, 0x7f, 0xcf, - 0xdb, 0x7f, 0xdf, 0xb9, 0x7f, 0xc2, 0x8f, 0xed, 0x9f, 0x7, - 0x7f, 0xcf, 0xdb, 0x7f, 0xdf, 0xb9, 0x7f, 0xc2, 0x80, 0x32, - 0x77, 0x78, 0x83, 0xfe, 0x86, 0xed, 0x57, 0xff, 00, 0x1, - 0xec, 0xff, 00, 0xf8, 0xc5, 0x1b, 0xbc, 0x41, 0xff, 00, - 0x43, 0x76, 0xab, 0xff, 00, 0x80, 0xf6, 0x7f, 0xfc, 0x62, - 0xb5, 0xbf, 0xb6, 0x7c, 0x1d, 0xff, 00, 0x3f, 0x6d, 0xff, - 00, 0x7e, 0xe5, 0xff, 00, 0xa, 0x3f, 0xb6, 0x7c, 0x1d, - 0xff, 00, 0x3f, 0x6d, 0xff, 00, 0x7e, 0xe5, 0xff, 00, - 0xa, 00, 0xc9, 0xdd, 0xe2, 0xf, 0xfa, 0x1b, 0xb5, 0x5f, - 0xfc, 0x7, 0xb3, 0xff, 00, 0xe3, 0x14, 0x6e, 0xf1, 0x7, - 0xfd, 0xd, 0xda, 0xaf, 0xfe, 0x3, 0xd9, 0xff, 00, 0xf1, - 0x8a, 0xd6, 0xfe, 0xd9, 0xf0, 0x77, 0xfc, 0xfd, 0xb7, 0xfd, - 0xfb, 0x97, 0xfc, 0x28, 0xfe, 0xd9, 0xf0, 0x77, 0xfc, 0xfd, - 0xb7, 0xfd, 0xfb, 0x97, 0xfc, 0x28, 0x3, 0x27, 0x77, 0x88, - 0x3f, 0xe8, 0x6e, 0xd5, 0x7f, 0xf0, 0x1e, 0xcf, 0xff, 00, - 0x8c, 0x51, 0xbb, 0xc4, 0x1f, 0xf4, 0x37, 0x6a, 0xbf, 0xf8, - 0xf, 0x67, 0xff, 00, 0xc6, 0x2b, 0x5b, 0xfb, 0x67, 0xc1, - 0xdf, 0xf3, 0xf6, 0xdf, 0xf7, 0xee, 0x5f, 0xf0, 0xa3, 0xfb, - 0x67, 0xc1, 0xdf, 0xf3, 0xf6, 0xdf, 0xf7, 0xee, 0x5f, 0xf0, - 0xa0, 0xc, 0x9d, 0xde, 0x20, 0xff, 00, 0xa1, 0xbb, 0x55, - 0xff, 00, 0xc0, 0x7b, 0x3f, 0xfe, 0x31, 0x46, 0xef, 0x10, - 0x7f, 0xd0, 0xdd, 0xaa, 0xff, 00, 0xe0, 0x3d, 0x9f, 0xff, - 00, 0x18, 0xad, 0x6f, 0xed, 0x9f, 0x7, 0x7f, 0xcf, 0xdb, - 0x7f, 0xdf, 0xb9, 0x7f, 0xc2, 0x8f, 0xed, 0x9f, 0x7, 0x7f, - 0xcf, 0xdb, 0x7f, 0xdf, 0xb9, 0x7f, 0xc2, 0x80, 0x32, 0x77, - 0x78, 0x83, 0xfe, 0x86, 0xed, 0x57, 0xff, 00, 0x1, 0xec, - 0xff, 00, 0xf8, 0xc5, 0x1b, 0xbc, 0x41, 0xff, 00, 0x43, - 0x76, 0xab, 0xff, 00, 0x80, 0xf6, 0x7f, 0xfc, 0x62, 0xb5, - 0xbf, 0xb6, 0x7c, 0x1d, 0xff, 00, 0x3f, 0x6d, 0xff, 00, - 0x7e, 0xe5, 0xff, 00, 0xa, 0x3f, 0xb6, 0x7c, 0x1d, 0xff, - 00, 0x3f, 0x6d, 0xff, 00, 0x7e, 0xe5, 0xff, 00, 0xa, - 00, 0xc9, 0xdd, 0xe2, 0xf, 0xfa, 0x1b, 0xb5, 0x5f, 0xfc, - 0x7, 0xb3, 0xff, 00, 0xe3, 0x14, 0x6e, 0xf1, 0x7, 0xfd, - 0xd, 0xda, 0xaf, 0xfe, 0x3, 0xd9, 0xff, 00, 0xf1, 0x8a, - 0xd6, 0xfe, 0xd9, 0xf0, 0x77, 0xfc, 0xfd, 0xb7, 0xfd, 0xfb, - 0x97, 0xfc, 0x28, 0xfe, 0xd9, 0xf0, 0x77, 0xfc, 0xfd, 0xb7, - 0xfd, 0xfb, 0x97, 0xfc, 0x28, 0x3, 0x27, 0x77, 0x88, 0x3f, - 0xe8, 0x6e, 0xd5, 0x7f, 0xf0, 0x1e, 0xcf, 0xff, 00, 0x8c, - 0x51, 0xbb, 0xc4, 0x1f, 0xf4, 0x37, 0x6a, 0xbf, 0xf8, 0xf, - 0x67, 0xff, 00, 0xc6, 0x2b, 0x5b, 0xfb, 0x67, 0xc1, 0xdf, - 0xf3, 0xf6, 0xdf, 0xf7, 0xee, 0x5f, 0xf0, 0xa3, 0xfb, 0x67, - 0xc1, 0xdf, 0xf3, 0xf6, 0xdf, 0xf7, 0xee, 0x5f, 0xf0, 0xa0, - 0xc, 0x9d, 0xde, 0x20, 0xff, 00, 0xa1, 0xbb, 0x55, 0xff, - 00, 0xc0, 0x7b, 0x3f, 0xfe, 0x31, 0x46, 0xef, 0x10, 0x7f, - 0xd0, 0xdd, 0xaa, 0xff, 00, 0xe0, 0x3d, 0x9f, 0xff, 00, - 0x18, 0xad, 0x6f, 0xed, 0x9f, 0x7, 0x7f, 0xcf, 0xdb, 0x7f, - 0xdf, 0xb9, 0x7f, 0xc2, 0x8f, 0xed, 0x9f, 0x7, 0x7f, 0xcf, - 0xdb, 0x7f, 0xdf, 0xb9, 0x7f, 0xc2, 0x80, 0x32, 0x77, 0x78, - 0x83, 0xfe, 0x86, 0xed, 0x57, 0xff, 00, 0x1, 0xec, 0xff, - 00, 0xf8, 0xc5, 0x1b, 0xbc, 0x41, 0xff, 00, 0x43, 0x76, - 0xab, 0xff, 00, 0x80, 0xf6, 0x7f, 0xfc, 0x62, 0xb5, 0xbf, - 0xb6, 0x7c, 0x1d, 0xff, 00, 0x3f, 0x6d, 0xff, 00, 0x7e, - 0xe5, 0xff, 00, 0xa, 0x3f, 0xb6, 0x7c, 0x1d, 0xff, 00, - 0x3f, 0x6d, 0xff, 00, 0x7e, 0xe5, 0xff, 00, 0xa, 00, - 0xc9, 0xdd, 0xe2, 0xf, 0xfa, 0x1b, 0xb5, 0x5f, 0xfc, 0x7, - 0xb3, 0xff, 00, 0xe3, 0x14, 0x6e, 0xf1, 0x7, 0xfd, 0xd, - 0xda, 0xaf, 0xfe, 0x3, 0xd9, 0xff, 00, 0xf1, 0x8a, 0xd6, - 0xfe, 0xd9, 0xf0, 0x77, 0xfc, 0xfd, 0xb7, 0xfd, 0xfb, 0x97, - 0xfc, 0x28, 0xfe, 0xd9, 0xf0, 0x77, 0xfc, 0xfd, 0xb7, 0xfd, - 0xfb, 0x97, 0xfc, 0x28, 0x3, 0x27, 0x77, 0x88, 0x3f, 0xe8, - 0x6e, 0xd5, 0x7f, 0xf0, 0x1e, 0xcf, 0xff, 00, 0x8c, 0x51, - 0xbb, 0xc4, 0x1f, 0xf4, 0x37, 0x6a, 0xbf, 0xf8, 0xf, 0x67, - 0xff, 00, 0xc6, 0x2b, 0x5b, 0xfb, 0x67, 0xc1, 0xdf, 0xf3, - 0xf6, 0xdf, 0xf7, 0xee, 0x5f, 0xf0, 0xa3, 0xfb, 0x67, 0xc1, - 0xdf, 0xf3, 0xf6, 0xdf, 0xf7, 0xee, 0x5f, 0xf0, 0xa0, 0xc, - 0x9d, 0xde, 0x20, 0xff, 00, 0xa1, 0xbb, 0x55, 0xff, 00, - 0xc0, 0x7b, 0x3f, 0xfe, 0x31, 0x46, 0xef, 0x10, 0x7f, 0xd0, - 0xdd, 0xaa, 0xff, 00, 0xe0, 0x3d, 0x9f, 0xff, 00, 0x18, - 0xad, 0x6f, 0xed, 0x9f, 0x7, 0x7f, 0xcf, 0xdb, 0x7f, 0xdf, - 0xb9, 0x7f, 0xc2, 0x8f, 0xed, 0x9f, 0x7, 0x7f, 0xcf, 0xdb, - 0x7f, 0xdf, 0xb9, 0x7f, 0xc2, 0x80, 0x32, 0x77, 0x78, 0x83, - 0xfe, 0x86, 0xed, 0x57, 0xff, 00, 0x1, 0xec, 0xff, 00, - 0xf8, 0xc5, 0x1b, 0xbc, 0x41, 0xff, 00, 0x43, 0x76, 0xab, - 0xff, 00, 0x80, 0xf6, 0x7f, 0xfc, 0x62, 0xb5, 0xbf, 0xb6, - 0x7c, 0x1d, 0xff, 00, 0x3f, 0x6d, 0xff, 00, 0x7e, 0xe5, - 0xff, 00, 0xa, 0x3f, 0xb6, 0x7c, 0x1d, 0xff, 00, 0x3f, - 0x6d, 0xff, 00, 0x7e, 0xe5, 0xff, 00, 0xa, 00, 0xc9, - 0xdd, 0xe2, 0xf, 0xfa, 0x1b, 0xb5, 0x5f, 0xfc, 0x7, 0xb3, - 0xff, 00, 0xe3, 0x14, 0x6e, 0xf1, 0x7, 0xfd, 0xd, 0xda, - 0xaf, 0xfe, 0x3, 0xd9, 0xff, 00, 0xf1, 0x8a, 0xd6, 0xfe, - 0xd9, 0xf0, 0x77, 0xfc, 0xfd, 0xb7, 0xfd, 0xfb, 0x97, 0xfc, - 0x28, 0xfe, 0xd9, 0xf0, 0x77, 0xfc, 0xfd, 0xb7, 0xfd, 0xfb, - 0x97, 0xfc, 0x28, 0x3, 0x27, 0x77, 0x88, 0x3f, 0xe8, 0x6e, - 0xd5, 0x7f, 0xf0, 0x1e, 0xcf, 0xff, 00, 0x8c, 0x51, 0xbb, - 0xc4, 0x1f, 0xf4, 0x37, 0x6a, 0xbf, 0xf8, 0xf, 0x67, 0xff, - 00, 0xc6, 0x2b, 0x5b, 0xfb, 0x67, 0xc1, 0xdf, 0xf3, 0xf6, - 0xdf, 0xf7, 0xee, 0x5f, 0xf0, 0xa3, 0xfb, 0x67, 0xc1, 0xdf, - 0xf3, 0xf6, 0xdf, 0xf7, 0xee, 0x5f, 0xf0, 0xa0, 0xc, 0x9d, - 0xde, 0x20, 0xff, 00, 0xa1, 0xbb, 0x55, 0xff, 00, 0xc0, - 0x7b, 0x3f, 0xfe, 0x31, 0x46, 0xef, 0x10, 0x7f, 0xd0, 0xdd, - 0xaa, 0xff, 00, 0xe0, 0x3d, 0x9f, 0xff, 00, 0x18, 0xad, - 0x6f, 0xed, 0x9f, 0x7, 0x7f, 0xcf, 0xdb, 0x7f, 0xdf, 0xb9, - 0x7f, 0xc2, 0x8f, 0xed, 0x9f, 0x7, 0x7f, 0xcf, 0xdb, 0x7f, - 0xdf, 0xb9, 0x7f, 0xc2, 0x80, 0x32, 0x77, 0x78, 0x83, 0xfe, - 0x86, 0xed, 0x57, 0xff, 00, 0x1, 0xec, 0xff, 00, 0xf8, - 0xc5, 0x1b, 0xbc, 0x41, 0xff, 00, 0x43, 0x76, 0xab, 0xff, - 00, 0x80, 0xf6, 0x7f, 0xfc, 0x62, 0xb5, 0xbf, 0xb6, 0x7c, - 0x1d, 0xff, 00, 0x3f, 0x6d, 0xff, 00, 0x7e, 0xe5, 0xff, - 00, 0xa, 0x3f, 0xb6, 0x7c, 0x1d, 0xff, 00, 0x3f, 0x6d, - 0xff, 00, 0x7e, 0xe5, 0xff, 00, 0xa, 00, 0xc9, 0xdd, - 0xe2, 0xf, 0xfa, 0x1b, 0xb5, 0x5f, 0xfc, 0x7, 0xb3, 0xff, - 00, 0xe3, 0x14, 0x6e, 0xf1, 0x7, 0xfd, 0xd, 0xda, 0xaf, - 0xfe, 0x3, 0xd9, 0xff, 00, 0xf1, 0x8a, 0xd6, 0xfe, 0xd9, - 0xf0, 0x77, 0xfc, 0xfd, 0xb7, 0xfd, 0xfb, 0x97, 0xfc, 0x28, - 0xfe, 0xd9, 0xf0, 0x77, 0xfc, 0xfd, 0xb7, 0xfd, 0xfb, 0x97, - 0xfc, 0x28, 0x3, 0x27, 0x77, 0x88, 0x3f, 0xe8, 0x6e, 0xd5, - 0x7f, 0xf0, 0x1e, 0xcf, 0xff, 00, 0x8c, 0x51, 0xbb, 0xc4, - 0x1f, 0xf4, 0x37, 0x6a, 0xbf, 0xf8, 0xf, 0x67, 0xff, 00, - 0xc6, 0x2b, 0x5b, 0xfb, 0x67, 0xc1, 0xdf, 0xf3, 0xf6, 0xdf, - 0xf7, 0xee, 0x5f, 0xf0, 0xa3, 0xfb, 0x67, 0xc1, 0xdf, 0xf3, - 0xf6, 0xdf, 0xf7, 0xee, 0x5f, 0xf0, 0xa0, 0xc, 0x9d, 0xde, - 0x20, 0xff, 00, 0xa1, 0xbb, 0x55, 0xff, 00, 0xc0, 0x7b, - 0x3f, 0xfe, 0x31, 0x46, 0xef, 0x10, 0x7f, 0xd0, 0xdd, 0xaa, - 0xff, 00, 0xe0, 0x3d, 0x9f, 0xff, 00, 0x18, 0xad, 0x6f, - 0xed, 0x9f, 0x7, 0x7f, 0xcf, 0xdb, 0x7f, 0xdf, 0xb9, 0x7f, - 0xc2, 0x8f, 0xed, 0x9f, 0x7, 0x7f, 0xcf, 0xdb, 0x7f, 0xdf, - 0xb9, 0x7f, 0xc2, 0x80, 0x32, 0x77, 0x78, 0x83, 0xfe, 0x86, - 0xed, 0x57, 0xff, 00, 0x1, 0xec, 0xff, 00, 0xf8, 0xc5, - 0x1b, 0xbc, 0x41, 0xff, 00, 0x43, 0x76, 0xab, 0xff, 00, - 0x80, 0xf6, 0x7f, 0xfc, 0x62, 0xb5, 0xbf, 0xb6, 0x7c, 0x1d, - 0xff, 00, 0x3f, 0x6d, 0xff, 00, 0x7e, 0xe5, 0xff, 00, - 0xa, 0x3f, 0xb6, 0x7c, 0x1d, 0xff, 00, 0x3f, 0x6d, 0xff, - 00, 0x7e, 0xe5, 0xff, 00, 0xa, 00, 0xc9, 0xdd, 0xe2, - 0xf, 0xfa, 0x1b, 0xb5, 0x5f, 0xfc, 0x7, 0xb3, 0xff, 00, - 0xe3, 0x14, 0x6e, 0xf1, 0x7, 0xfd, 0xd, 0xda, 0xaf, 0xfe, - 0x3, 0xd9, 0xff, 00, 0xf1, 0x8a, 0xd6, 0xfe, 0xd9, 0xf0, - 0x77, 0xfc, 0xfd, 0xb7, 0xfd, 0xfb, 0x97, 0xfc, 0x28, 0xfe, - 0xd9, 0xf0, 0x77, 0xfc, 0xfd, 0xb7, 0xfd, 0xfb, 0x97, 0xfc, - 0x28, 0x3, 0x27, 0x77, 0x88, 0x3f, 0xe8, 0x6e, 0xd5, 0x7f, - 0xf0, 0x1e, 0xcf, 0xff, 00, 0x8c, 0x51, 0xbb, 0xc4, 0x1f, - 0xf4, 0x37, 0x6a, 0xbf, 0xf8, 0xf, 0x67, 0xff, 00, 0xc6, - 0x2b, 0x5b, 0xfb, 0x67, 0xc1, 0xdf, 0xf3, 0xf6, 0xdf, 0xf7, - 0xee, 0x5f, 0xf0, 0xa3, 0xfb, 0x67, 0xc1, 0xdf, 0xf3, 0xf6, - 0xdf, 0xf7, 0xee, 0x5f, 0xf0, 0xa0, 0xc, 0x9d, 0xde, 0x20, - 0xff, 00, 0xa1, 0xbb, 0x55, 0xff, 00, 0xc0, 0x7b, 0x3f, - 0xfe, 0x31, 0x46, 0xef, 0x10, 0x7f, 0xd0, 0xdd, 0xaa, 0xff, - 00, 0xe0, 0x3d, 0x9f, 0xff, 00, 0x18, 0xad, 0x6f, 0xed, - 0x9f, 0x7, 0x7f, 0xcf, 0xdb, 0x7f, 0xdf, 0xb9, 0x7f, 0xc2, - 0x8f, 0xed, 0x9f, 0x7, 0x7f, 0xcf, 0xdb, 0x7f, 0xdf, 0xb9, - 0x7f, 0xc2, 0x80, 0x32, 0x77, 0x78, 0x83, 0xfe, 0x86, 0xed, - 0x57, 0xff, 00, 0x1, 0xec, 0xff, 00, 0xf8, 0xc5, 0x1b, - 0xbc, 0x41, 0xff, 00, 0x43, 0x76, 0xab, 0xff, 00, 0x80, - 0xf6, 0x7f, 0xfc, 0x62, 0xb5, 0xbf, 0xb6, 0x7c, 0x1d, 0xff, - 00, 0x3f, 0x6d, 0xff, 00, 0x7e, 0xe5, 0xff, 00, 0xa, - 0x3f, 0xb6, 0x7c, 0x1d, 0xff, 00, 0x3f, 0x6d, 0xff, 00, - 0x7e, 0xe5, 0xff, 00, 0xa, 00, 0xc9, 0xdd, 0xe2, 0xf, - 0xfa, 0x1b, 0xb5, 0x5f, 0xfc, 0x7, 0xb3, 0xff, 00, 0xe3, - 0x14, 0x6e, 0xf1, 0x7, 0xfd, 0xd, 0xda, 0xaf, 0xfe, 0x3, - 0xd9, 0xff, 00, 0xf1, 0x8a, 0xd6, 0xfe, 0xd9, 0xf0, 0x77, - 0xfc, 0xfd, 0xb7, 0xfd, 0xfb, 0x97, 0xfc, 0x28, 0xfe, 0xd9, - 0xf0, 0x77, 0xfc, 0xfd, 0xb7, 0xfd, 0xfb, 0x97, 0xfc, 0x28, - 0x3, 0x27, 0x77, 0x88, 0x3f, 0xe8, 0x6e, 0xd5, 0x7f, 0xf0, - 0x1e, 0xcf, 0xff, 00, 0x8c, 0x51, 0xbb, 0xc4, 0x1f, 0xf4, - 0x37, 0x6a, 0xbf, 0xf8, 0xf, 0x67, 0xff, 00, 0xc6, 0x2b, - 0x5b, 0xfb, 0x67, 0xc1, 0xdf, 0xf3, 0xf6, 0xdf, 0xf7, 0xee, - 0x5f, 0xf0, 0xa3, 0xfb, 0x67, 0xc1, 0xdf, 0xf3, 0xf6, 0xdf, - 0xf7, 0xee, 0x5f, 0xf0, 0xa0, 0xc, 0x7b, 0x1b, 0x33, 0x66, - 0x93, 0x6f, 0xb9, 0x9a, 0xea, 0x69, 0xa5, 0x69, 0xa5, 0x9a, - 0x60, 0x81, 0x9d, 0x9b, 0xa9, 0xc2, 0x2a, 0xa8, 0xfc, 00, - 0xae, 0xeb, 0x44, 0xff, 00, 0x90, 0x3c, 0x1f, 0xf0, 0x2f, - 0xfd, 0x8, 0xd5, 0x2d, 0x36, 0xd7, 0x42, 0xd5, 0xed, 0x3e, - 0xd5, 0x60, 0xe2, 0x78, 0x77, 0x14, 0x2c, 0xae, 0xc3, 0xc, - 0x3a, 0x82, 0xf, 0x20, 0xd6, 0xcd, 0xbc, 0x11, 0xdb, 0x40, - 0xb0, 0xc4, 0x30, 0x8b, 0x9c, 0xc, 0xe7, 0xbe, 0x68, 0x3, - 0xf, 0xc0, 0xff, 00, 0xf2, 0x25, 0xe9, 0x7f, 0xf5, 0xcb, - 0xff, 00, 0x66, 0x35, 0xd0, 0x57, 0x3f, 0xe0, 0x7f, 0xf9, - 0x12, 0xf4, 0xbf, 0xfa, 0xe5, 0xff, 00, 0xb3, 0x1a, 0xe8, - 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, - 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, - 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, - 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, - 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, - 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, - 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, - 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, - 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, - 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, - 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, - 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, - 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, - 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, - 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, - 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, - 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, - 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, - 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, - 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, - 0x28, 0x3, 0x9a, 0xf0, 0xcd, 0xd5, 0xbc, 0x4f, 0xad, 0xa4, - 0x93, 0xc4, 0x8d, 0xfd, 0xab, 0x3f, 0xc, 0xe0, 0x1f, 0xe1, - 0xae, 0x8d, 0x24, 0x49, 0x50, 0x3c, 0x6e, 0xae, 0xa7, 0xa3, - 0x29, 0xc8, 0x35, 0xe6, 0xb6, 0xbf, 0xf2, 0x14, 0xd7, 0x3f, - 0xec, 0x27, 0x37, 0xf4, 0xae, 0xf3, 0x44, 0xff, 00, 0x90, - 0x3c, 0x1f, 0xf0, 0x2f, 0xfd, 0x8, 0xd0, 0x6, 0x7f, 0x81, - 0xff, 00, 0xe4, 0x4b, 0xd2, 0xff, 00, 0xeb, 0x97, 0xfe, - 0xcc, 0x6b, 0xa0, 0xae, 0x7f, 0xc0, 0xff, 00, 0xf2, 0x25, - 0xe9, 0x7f, 0xf5, 0xcb, 0xff, 00, 0x66, 0x35, 0xd0, 0x50, - 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, - 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, - 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, - 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, - 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, - 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, - 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, - 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, - 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, - 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, - 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, - 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, - 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, - 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x4c, 0x96, 0x45, - 0x8a, 0x32, 0xed, 0xd0, 0xc, 0xd3, 0xeb, 0x3f, 0x54, 0x62, - 0x4, 0x43, 0xb1, 0x27, 0x3f, 0x95, 00, 0x5a, 0x85, 0xda, - 0x68, 0xc3, 0xb2, 0xed, 0x7, 0xa6, 0xd, 0x4b, 0xb4, 0x7b, - 0xfe, 0x66, 0xa3, 0xb7, 0xff, 00, 0x50, 0x9f, 0x4a, 0x96, - 0x80, 0x13, 0x68, 0xf7, 0xfc, 0xcd, 0x1b, 0x47, 0xbf, 0xe6, - 0x69, 0x68, 0xa0, 0x4, 0xda, 0x3d, 0xff, 00, 0x33, 0x46, - 0xd1, 0xef, 0xf9, 0x9a, 0x5a, 0x28, 0x1, 0x36, 0x8f, 0x7f, - 0xcc, 0xd1, 0xb4, 0x7b, 0xfe, 0x66, 0x96, 0x8a, 00, 0x4d, - 0xa3, 0xdf, 0xf3, 0x34, 0x6d, 0x1e, 0xff, 00, 0x99, 0xa5, - 0xa4, 0xdc, 0x3d, 0x68, 00, 0xda, 0x7, 0xaf, 0xe6, 0x6a, - 0x8d, 0xbe, 0xaf, 0xa6, 0xdd, 0x5d, 0x3d, 0xac, 0x37, 0x91, - 0xbc, 0xe9, 0xf7, 0xa3, 0xc, 0x72, 0x2a, 0xfd, 0x78, 0xe7, - 0xc6, 0xd, 0x6, 0xe3, 0x4e, 0x36, 0xfe, 0x23, 0xd1, 0xe4, - 0x7b, 0x7b, 0x84, 0x6c, 0x4b, 0xe5, 0xf0, 0x8, 0xf5, 0x34, - 0xd0, 0x9b, 0xb1, 0xec, 0x5b, 0x47, 0xbf, 0xe6, 0x68, 0xda, - 0x3d, 0xff, 00, 0x33, 0x5e, 0x67, 0xf0, 0xcb, 0xe2, 0x52, - 0xf8, 0x8e, 0x15, 0xd3, 0x75, 0x36, 0x54, 0xd4, 0x10, 0x61, - 0x5b, 0xb4, 0x95, 0xe9, 0xb4, 0x9a, 0xb0, 0x27, 0x71, 0x36, - 0x8f, 0x7f, 0xcc, 0xd1, 0xb4, 0x7b, 0xfe, 0x66, 0x96, 0x8a, - 0x6, 0x26, 0xd1, 0xef, 0xf9, 0x9a, 0x36, 0x8f, 0x7f, 0xcc, - 0xd2, 0xd1, 0x40, 0x9, 0xb4, 0x7b, 0xfe, 0x66, 0x8d, 0xa3, - 0xdf, 0xf3, 0x34, 0xb4, 0x50, 0x2, 0x6d, 0x1e, 0xff, 00, - 0x99, 0xa4, 0x27, 0x69, 0x3, 0x1c, 0x1f, 0x7a, 0x75, 0x45, - 0x33, 0x15, 0x5c, 0x8a, 00, 0x96, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, - 0xa0, 0xf, 0x33, 0xb5, 0xff, 00, 0x90, 0xa6, 0xb9, 0xff, - 00, 0x61, 0x39, 0xbf, 0xa5, 0x77, 0x9a, 0x27, 0xfc, 0x81, - 0xe0, 0xff, 00, 0x81, 0x7f, 0xe8, 0x46, 0xb8, 0x3b, 0x5f, - 0xf9, 0xa, 0x6b, 0x9f, 0xf6, 0x13, 0x9b, 0xfa, 0x57, 0x79, - 0xa2, 0x7f, 0xc8, 0x1e, 0xf, 0xf8, 0x17, 0xfe, 0x84, 0x68, - 0x3, 0x3f, 0xc0, 0xff, 00, 0xf2, 0x25, 0xe9, 0x7f, 0xf5, - 0xcb, 0xff, 00, 0x66, 0x35, 0xd0, 0x57, 0x3f, 0xe0, 0x7f, - 0xf9, 0x12, 0xf4, 0xbf, 0xfa, 0xe5, 0xff, 00, 0xb3, 0x1a, - 0xe8, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, - 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, - 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, - 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, - 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, - 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, - 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, - 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, - 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, - 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, - 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, - 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, - 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, - 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xac, - 0xed, 0x53, 0xfe, 0x58, 0x7d, 0x5b, 0xf9, 0x56, 0x8d, 0x67, - 0x6a, 0x9f, 0xf2, 0xc3, 0xea, 0xdf, 0xca, 0x80, 0x2e, 0x5b, - 0xff, 00, 0xa8, 0x4f, 0xa5, 0x4b, 0x51, 0x5b, 0xff, 00, - 0xa8, 0x4f, 0xa5, 0x4b, 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, - 0x14, 0x51, 0x40, 0x5, 0x14, 0x53, 0x25, 0x90, 0x45, 0x1b, - 0x39, 0xe8, 0x5, 00, 0x45, 0x3c, 0xe1, 0xe, 0xdc, 0xd3, - 0x2d, 0xe4, 0xf3, 0x25, 0xc7, 0x6a, 0xc9, 0x96, 0xeb, 0x73, - 0x33, 0x13, 0x57, 0x34, 0x97, 0xf3, 0x4b, 0xb7, 0xa7, 0x15, - 0x5d, 0x9, 0xbe, 0xa6, 0xad, 0x60, 0xf8, 0xcb, 0x4f, 0x1a, - 0x9f, 0x84, 0xf5, 0xb, 0x6d, 0xb9, 0x2d, 0x19, 0xdb, 0xf5, - 0xad, 0xea, 0x64, 0xc8, 0x24, 0x81, 0xd0, 0x8c, 0x86, 0x52, - 0x2a, 0x46, 0xf6, 0x3e, 0x41, 0xb5, 0x92, 0xe3, 0x47, 0xd4, - 0x92, 0x7b, 0x77, 0x29, 0x35, 0xbb, 0xf5, 0x1e, 0xd5, 0xf5, - 0x1f, 0x84, 0x3c, 0x41, 0x17, 0x88, 0xfc, 0x3f, 0x6f, 0x7a, - 0xa4, 0x79, 0x85, 0x70, 0xeb, 0xe8, 0x6b, 0xe6, 0xed, 0x66, - 0xcf, 0xc9, 0xd6, 0xef, 0x93, 0x1f, 0xf2, 0xd9, 0xbf, 0x9d, - 0x77, 0x5f, 0x8, 0x75, 0xb3, 0x61, 0xad, 0x49, 0xa5, 0xc8, - 0xdf, 0xbb, 0xb9, 0xe5, 0x72, 0x78, 0x4, 0x56, 0xb2, 0x8e, - 0x97, 0x39, 0x69, 0xd4, 0xb4, 0xac, 0x7b, 0xad, 0x14, 0x51, - 0x59, 0x1d, 0x61, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, - 0x1, 0x50, 0xdc, 0x7d, 0xca, 0x9a, 0xa1, 0xb8, 0xfb, 0x94, - 0x1, 0x35, 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, - 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0x1e, 0x67, 0x6b, - 0xff, 00, 0x21, 0x4d, 0x73, 0xfe, 0xc2, 0x73, 0x7f, 0x4a, - 0xef, 0x34, 0x4f, 0xf9, 0x3, 0xc1, 0xff, 00, 0x2, 0xff, - 00, 0xd0, 0x8d, 0x70, 0x76, 0xbf, 0xf2, 0x14, 0xd7, 0x3f, - 0xec, 0x27, 0x37, 0xf4, 0xae, 0xf3, 0x44, 0xff, 00, 0x90, - 0x3c, 0x1f, 0xf0, 0x2f, 0xfd, 0x8, 0xd0, 0x6, 0x7f, 0x81, - 0xff, 00, 0xe4, 0x4b, 0xd2, 0xff, 00, 0xeb, 0x97, 0xfe, - 0xcc, 0x6b, 0xa0, 0xae, 0x7f, 0xc0, 0xff, 00, 0xf2, 0x25, - 0xe9, 0x7f, 0xf5, 0xcb, 0xff, 00, 0x66, 0x35, 0xd0, 0x50, - 0x1, 0x45, 0x15, 0xe7, 0x1f, 0x13, 0xbc, 0x67, 0xab, 0x69, - 0x57, 0x7a, 0x5f, 0x85, 0xbc, 0x2e, 0x10, 0xf8, 0x83, 0x57, - 0x6c, 0x47, 0x23, 0x60, 0xf9, 0x11, 0xe7, 0x1b, 0xb0, 0x78, - 0xe7, 0x7, 0x93, 0xd0, 0x29, 0xf6, 0xa4, 0xdf, 0x41, 0xa5, - 0xd4, 0xf4, 0x7a, 0x2b, 0xc6, 0xe0, 0xfd, 0x9f, 0x74, 0xeb, - 0xf8, 0x85, 0xd7, 0x89, 0xbc, 0x47, 0xac, 0x6a, 0x1a, 0xb4, - 0x98, 0x33, 0x5c, 0x47, 0x2a, 0x80, 0x78, 00, 0xc, 0xba, - 0xb3, 0x1c, 0x74, 0xc9, 0x3c, 0xe3, 0xa0, 0xe9, 0x55, 0x61, - 0xb8, 0xf1, 0x17, 0xc1, 0xbf, 0x12, 0x69, 0xb6, 0x3a, 0x8e, - 0xab, 0x36, 0xb1, 0xe1, 0xd, 0x42, 0x41, 0x6d, 0x14, 0x93, - 0x9f, 0x9e, 0xd0, 0xf4, 0x50, 0x32, 0x4e, 00, 00, 0x70, - 0x3e, 0x52, 0x1, 0x20, 0x3, 0x54, 0xb7, 0x4b, 0xb9, 0x2d, - 0xe9, 0x73, 0xdb, 0xa8, 0xaf, 0x22, 0xf8, 0xf3, 0x67, 0x1e, - 0xa3, 0x61, 0xe1, 0x6b, 0x29, 0x59, 0x84, 0x57, 0x3a, 0xba, - 0x42, 0xe5, 0x8, 0xc8, 0x56, 0x4, 0x1c, 0x7b, 0xf3, 0x4c, - 0xff, 00, 0x86, 0x71, 0xf0, 0x7f, 0xfd, 0x4, 0xb5, 0xcf, - 0xfb, 0xff, 00, 0xf, 0xff, 00, 0x1a, 0xa9, 0x5a, 0xdf, - 0xfa, 0xed, 0xfe, 0x63, 0x67, 0xb0, 0x51, 0x5e, 0x37, 0xf0, - 0xfc, 0xea, 0xde, 0xa, 0xf8, 0x9f, 0x7d, 0xe0, 0x1b, 0x9d, - 0x4a, 0x7d, 0x43, 0x49, 0x36, 0xbf, 0x69, 0xb0, 0x33, 0x36, - 0x5a, 0x15, 0x18, 0xc0, 0xf6, 0x18, 0xc8, 0x20, 0x71, 0x91, - 0x90, 0x6, 0x6b, 0x9, 0x3e, 0x1e, 0xe9, 0x3e, 0x3f, 0xf8, - 0xc5, 0xe3, 0x48, 0x75, 0x5b, 0x8b, 0xd8, 0x56, 0xd1, 0xe2, - 0x78, 0xcd, 0xab, 0xa2, 0x92, 0x59, 0x70, 0x73, 0xb9, 0x5b, - 0xd2, 0x9e, 0xed, 0x25, 0xd5, 0x37, 0xf7, 0x6, 0xc9, 0xdf, - 0xa5, 0xbf, 0x13, 0xe8, 0x1a, 0x2b, 0xc7, 0xff, 00, 0xe1, - 0x9c, 0x7c, 0x1f, 0xff, 00, 0x41, 0x2d, 0x73, 0xfe, 0xff, - 00, 0xc3, 0xff, 00, 0xc6, 0xab, 0xd0, 0x6c, 0x74, 0x2b, - 0x5f, 0xc, 0xf8, 0x20, 0xe8, 0xd6, 0x52, 0x4d, 0x25, 0xb5, - 0xa5, 0xac, 0x88, 0x8d, 0x31, 0x5, 0xc8, 0xc3, 0x1e, 0x48, - 00, 0x77, 0xf4, 0xa5, 0x27, 0x68, 0xb6, 0x9, 0x37, 0x24, - 0x8d, 0xfa, 0x2b, 0xe6, 0x3f, 0x83, 0x5e, 0x29, 0xbd, 0xf0, - 0x65, 0xd5, 0x9c, 0x5a, 0xa6, 0x57, 0xc3, 0x9a, 0xec, 0xad, - 0x1c, 0x53, 0x13, 0xf2, 0xc3, 0x70, 0xa4, 0x2e, 0x4f, 0xa6, - 0x78, 0x7, 0xd8, 0xa9, 0xec, 0x6b, 0xdd, 0xbe, 0x22, 0xff, - 00, 0xc9, 0x37, 0xf1, 0x27, 0xfd, 0x83, 0xa6, 0xff, 00, - 0xd0, 0xd, 0x39, 0xfb, 0xb1, 0xe6, 0x8, 0xfb, 0xce, 0xc7, - 0x4d, 0x45, 0x78, 0xe5, 0xd7, 0xfc, 0x9a, 0xe2, 0xff, 00, - 0xd8, 0x31, 0x3f, 0xf4, 0x31, 0x5e, 0x71, 0xf0, 0xfb, 0xe0, - 0xc7, 0xfc, 0x27, 0x7e, 0x19, 0xfe, 0xd9, 0xfe, 0xdf, 0xfb, - 0xf, 0xef, 0xde, 0x1f, 0x27, 0xec, 0x7e, 0x6f, 0xdd, 0xc7, - 0x39, 0xde, 0xbe, 0xbe, 0x94, 0x59, 0xf3, 0xca, 0x3d, 0x84, - 0x9a, 0xe5, 0x52, 0xee, 0x7d, 0x55, 0x45, 0x7c, 0xa1, 0xae, - 0xe9, 0x1a, 0xdf, 0xc0, 0xff, 00, 0x18, 0xe9, 0xf2, 0x69, - 0xba, 0xe7, 0xda, 0x92, 0xe1, 0x44, 0xac, 0xa8, 0xc, 0x42, - 0x65, 0x53, 0x82, 0x92, 0x47, 0x92, 0x8, 0xe4, 0xe0, 0xe4, - 0xfa, 0x8c, 0x11, 0x5e, 0xf5, 0xf1, 0x17, 0xc0, 0x9f, 0xf0, - 0xb1, 0x74, 0xb, 0x2b, 0x1f, 0xed, 0x13, 0xa7, 0x79, 0x33, - 0x8b, 0x8d, 0xe6, 0xf, 0x34, 0x9f, 0x94, 0x8d, 0xb8, 0xdc, - 0xb8, 0xfb, 0xdf, 0xa5, 0x1b, 0xc7, 0x99, 0x7a, 0xf, 0x69, - 0x59, 0x9d, 0xad, 0x15, 0xf1, 0xef, 0xc4, 0xbf, 0x86, 0xbf, - 0xf0, 0xae, 0xee, 0x34, 0xd8, 0xbf, 0xb5, 0xbf, 0xb4, 0x3e, - 0xda, 0xb2, 0x36, 0x7e, 0xcd, 0xe5, 0x6c, 0xda, 0x54, 0x7f, - 0x79, 0xb3, 0x9d, 0xde, 0xdd, 0x2b, 0xd4, 0xbc, 0x33, 0xf0, - 0x4, 0x68, 0x7a, 0xde, 0x99, 0xae, 0xb7, 0x89, 0xc4, 0xa2, - 0xd2, 0x54, 0xb9, 0x31, 0x1b, 0xd, 0xbb, 0xb1, 0xce, 0x37, - 0x79, 0x87, 0x1f, 0x5c, 0x53, 0x8d, 0x9a, 0xbb, 0xd8, 0x52, - 0xba, 0xd3, 0xa9, 0xee, 0x14, 0x57, 0xcc, 0xfa, 0xb6, 0xbd, - 0xe2, 0x8f, 0x8d, 0x3e, 0x36, 0xb8, 0xd0, 0x74, 0x2b, 0xc7, - 0xb4, 0xd0, 0x62, 0xc, 0xa, 0xef, 0x2b, 0x19, 0x88, 0x10, - 0x3c, 0xc9, 0x71, 0xcb, 0x96, 0x38, 0xc2, 0x9e, 0x9c, 0x74, - 0xe5, 0xaa, 0xc6, 0xb5, 0xf0, 0x3f, 0xc4, 0x5e, 0xb, 0xd3, - 0xe4, 0xd7, 0xbc, 0x35, 0xe2, 0x49, 0x2e, 0x2e, 0xed, 0x15, - 0x9d, 0xd6, 0x18, 0x9a, 0xda, 0x5f, 0x2f, 0x1f, 0x36, 0xc2, - 0x1d, 0xb7, 0x71, 0xd5, 0x4e, 0x32, 0x33, 0xd7, 0xa1, 0x9b, - 0xd9, 0x73, 0x4b, 0x44, 0x53, 0x5a, 0xf2, 0xad, 0xcf, 0xa4, - 0x28, 0xaf, 0x37, 0xf8, 0x3d, 0xf1, 0x12, 0x7f, 0x1c, 0xe8, - 0x33, 0xc3, 0xa9, 0x6c, 0xfe, 0xd6, 0xb0, 0x2a, 0xb3, 0x32, - 0x8c, 0x9, 0x90, 0xfd, 0xd7, 0xc7, 0x40, 0x78, 0x20, 0x81, - 0xc7, 0x19, 0xe3, 0x38, 0x1e, 0x67, 0xe2, 0x8b, 0xdd, 0x6f, - 0xe2, 0x8f, 0xc5, 0x9b, 0xcf, 0x7, 0x1d, 0x68, 0x69, 0x9a, - 0x5d, 0xbc, 0xd2, 0x42, 0x90, 0xb3, 0x1d, 0x8d, 0xe5, 0x9e, - 0x4e, 0xc0, 0x47, 0x98, 0xe4, 0x82, 0x40, 0x27, 0x81, 0xe9, - 0x83, 0x4d, 0xa6, 0xa4, 0xa2, 0x84, 0xbe, 0x17, 0x27, 0xd0, - 0xfa, 0x52, 0x8a, 0xf9, 0xce, 0xf7, 0xe0, 0x8f, 0x8c, 0x7c, - 0x1b, 0x35, 0xb6, 0xa7, 0xe0, 0xcd, 0x72, 0x4b, 0xeb, 0xd0, - 0xfb, 0x64, 0x58, 0x82, 0xda, 0x3a, 0xaf, 0x4, 0x7d, 0xe7, - 0x2a, 0xeb, 0x91, 0xca, 0x93, 0xe9, 0xc1, 0xe7, 0x1e, 0xf9, - 0xa1, 0x4b, 0xa9, 0x4f, 0xa0, 0xd8, 0xc9, 0xac, 0xdb, 0xad, - 0xbe, 0xa6, 0xd0, 0xaf, 0xda, 0xa2, 0x56, 0x4, 0x2c, 0x98, - 0xf9, 0xb0, 0x41, 0x23, 0x19, 0xf7, 0x34, 0xf4, 0xb5, 0xc3, - 0xa9, 0xa1, 0x45, 0x14, 0x52, 00, 0xa2, 0x8a, 0x28, 00, - 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, - 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, - 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, - 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, - 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, - 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, - 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, - 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, - 0xac, 0xed, 0x53, 0xfe, 0x58, 0x7d, 0x5b, 0xf9, 0x56, 0x8d, - 0x67, 0x6a, 0x9f, 0xf2, 0xc3, 0xea, 0xdf, 0xca, 0x80, 0x2e, - 0x5b, 0xff, 00, 0xa8, 0x4f, 0xa5, 0x4b, 0x51, 0x5b, 0xff, - 00, 0xa8, 0x4f, 0xa5, 0x4b, 0x40, 0x5, 0x14, 0x51, 0x40, - 0x5, 0x14, 0x51, 0x40, 0x5, 0x64, 0xeb, 0x97, 0x5e, 0x4d, - 0xba, 0xc7, 0x9e, 0x5e, 0xb5, 0xab, 0x89, 0xf1, 0x2d, 0xf6, - 0x75, 0x16, 0x88, 0x1e, 0x12, 0x9a, 0x44, 0xc9, 0xd9, 0x10, - 0xbd, 0xd7, 0xbd, 0x6f, 0xf8, 0x66, 0x4f, 0x36, 0xd6, 0x56, - 0xff, 00, 0x6a, 0xb8, 0x49, 0x2e, 0xfd, 0xeb, 0xad, 0xf0, - 0x44, 0xfe, 0x6d, 0x9d, 0xc0, 0xcf, 0x21, 0xea, 0x9a, 0xd0, - 0xce, 0x2f, 0x53, 0xab, 0xa4, 0x6f, 0xba, 0x7e, 0x94, 0xb4, - 0x87, 0xee, 0x9f, 0xa5, 0x41, 0xb1, 0xf3, 0x87, 0x8a, 0xad, - 0x40, 0xf1, 0x15, 0xde, 0x7, 0xf1, 0x9a, 0xcc, 0xd3, 0xa4, - 0x93, 0x4e, 0xd5, 0x6d, 0xae, 0xa2, 0x24, 0x32, 0xb8, 0xc9, - 0xf6, 0xcd, 0x75, 0x3e, 0x22, 0x83, 0xcc, 0xd7, 0x2e, 0x9b, - 0x1f, 0xc6, 0x6b, 0xe, 0x6b, 0x52, 0x14, 0xe0, 0x73, 0x5d, - 0xb, 0x63, 0xcc, 0x96, 0x92, 0x3e, 0x8d, 0xd3, 0xee, 0x52, - 0xf2, 0xc2, 0x9, 0xe3, 0x39, 0x57, 0x40, 0x73, 0x56, 0x6b, - 0x94, 0xf8, 0x7d, 0x7b, 0xf6, 0x9f, 0xc, 0x41, 0x11, 0x39, - 0x78, 0x46, 0xd3, 0x5d, 0x5d, 0x60, 0xd5, 0x99, 0xe8, 0xc5, - 0xdd, 0x5c, 0x28, 0xa2, 0x8a, 0x45, 0x5, 0x14, 0x51, 0x40, - 0x5, 0x43, 0x73, 0xf7, 0x2a, 0x6a, 0x86, 0xe7, 0xee, 0x50, - 0x4, 0xd4, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x79, 0x9d, 0xaf, - 0xfc, 0x85, 0x35, 0xcf, 0xfb, 0x9, 0xcd, 0xfd, 0x2b, 0xbc, - 0xd1, 0x3f, 0xe4, 0xf, 0x7, 0xfc, 0xb, 0xff, 00, 0x42, - 0x35, 0xc1, 0xda, 0xff, 00, 0xc8, 0x53, 0x5c, 0xff, 00, - 0xb0, 0x9c, 0xdf, 0xd2, 0xbb, 0xcd, 0x13, 0xfe, 0x40, 0xf0, - 0x7f, 0xc0, 0xbf, 0xf4, 0x23, 0x40, 0x19, 0xfe, 0x7, 0xff, - 00, 0x91, 0x2f, 0x4b, 0xff, 00, 0xae, 0x5f, 0xfb, 0x31, - 0xae, 0x82, 0xb9, 0xff, 00, 0x3, 0xff, 00, 0xc8, 0x97, - 0xa5, 0xff, 00, 0xd7, 0x2f, 0xfd, 0x98, 0xd7, 0x41, 0x40, - 0x5, 0x79, 0x6, 0xa6, 0xcb, 0x1f, 0xed, 0x3b, 0xa4, 0x9b, - 0xac, 0x5, 0x6d, 0x2c, 0x8b, 0x62, 0xf8, 0x3, 0x76, 0x24, - 0xe9, 0xef, 0xf7, 0xab, 0xd7, 0xeb, 0x85, 0xf8, 0x91, 0xe0, - 0x29, 0x7c, 0x5d, 0x6d, 0x65, 0x7f, 0xa5, 0x5d, 0xad, 0x96, - 0xbf, 0xa6, 0x49, 0xe6, 0xd9, 0xdc, 0x1e, 0x87, 0xbe, 0xd6, - 0x23, 0xa0, 0xc8, 0x4, 0x1c, 0x1c, 0x7a, 0x72, 0x69, 0x5e, - 0xcd, 0x4b, 0xfa, 0xda, 0xc1, 0x6b, 0xa6, 0xbf, 0xae, 0xe7, - 0x75, 0x5e, 0x53, 0xfb, 0x41, 0x3c, 0x3f, 0xf0, 0xae, 0x63, - 0x89, 0xc0, 0x33, 0x49, 0x7f, 0x10, 0x80, 0x77, 0x2d, 0x86, - 0xe9, 0xf8, 0x66, 0xa8, 0xc3, 0xf1, 0x33, 0xe2, 0x2e, 0x8d, - 0x18, 0xb1, 0xd6, 0xbe, 0x1a, 0xdf, 0x5f, 0xdf, 0x44, 00, - 0x7b, 0x8b, 0x12, 0xfe, 0x5b, 0xf0, 0x30, 0x7e, 0x44, 0x91, - 0x73, 0xeb, 0x86, 0xc6, 0x7b, 0xe, 0x94, 0xba, 0x4f, 0x85, - 0x3c, 0x5b, 0xf1, 0x3, 0xc5, 0x36, 0x3e, 0x23, 0xf1, 0xcd, - 0xba, 0x69, 0xba, 0x5d, 0x8b, 0x9, 0xac, 0x74, 0x94, 0x6e, - 0x58, 0xf0, 0xca, 0x5c, 0x64, 0x91, 0xdb, 0x3b, 0xb0, 0x72, - 0x31, 0xb4, 0xa, 0x1c, 0x79, 0x9a, 0x5d, 0x2e, 0xbf, 0xcc, - 0x14, 0xb9, 0x75, 0xea, 0x47, 0xf1, 0x9f, 0xed, 0xf0, 0x78, - 0x73, 0xc1, 0x7e, 0x44, 0x6b, 0x2e, 0xa3, 0x1e, 0xa3, 0xf, - 0x96, 0x8e, 0x78, 0x79, 0x42, 0x70, 0xf, 0x23, 0x82, 0xde, - 0xe2, 0xa7, 0xff, 00, 0x84, 0x87, 0xe3, 0x9f, 0xfd, 0x9, - 0x9a, 0x1f, 0xfd, 0xfe, 0x5f, 0xfe, 0x48, 0xad, 0x6f, 0x8b, - 0xba, 0x5e, 0xa1, 0xa9, 0x37, 0x84, 0xfe, 0xc1, 0x63, 0x73, - 0x75, 0xe4, 0x6b, 0x31, 0x4b, 0x2f, 0x91, 0xb, 0x3f, 0x96, - 0x83, 0xab, 0x36, 0x7, 0x3, 0xdc, 0xd7, 0xa5, 0x53, 0xbd, - 0xee, 0xfc, 0xff, 00, 0x44, 0x2b, 0x5a, 0xcb, 0xcb, 0xf5, - 0x67, 0x99, 0xfc, 0x3d, 0xf0, 0x2e, 0xbb, 0x67, 0xe2, 0x2b, - 0xef, 0x18, 0x78, 0xc6, 0xea, 0x19, 0xf5, 0xdb, 0xc8, 0xc4, - 0x71, 0xc3, 0x9, 0xca, 0xdb, 0xa6, 0x6, 0x41, 0xc7, 0x19, - 0xe0, 0x2e, 0x6, 0x46, 0x1, 0xe4, 0xe6, 0xb8, 0xa4, 0xf0, - 0x9e, 0xad, 0xe2, 0xaf, 0x8c, 0x5e, 0x34, 0x8f, 0x4a, 0xf1, - 0x4d, 0xee, 0x80, 0xd0, 0x3c, 0x4d, 0x23, 0xda, 0x87, 0xcc, - 0xa0, 0xaf, 00, 0xed, 0x75, 0xe9, 0x8f, 0x7e, 0xb5, 0xf4, - 0xd, 0x78, 0x4c, 0xba, 0xc7, 0x89, 0xbc, 0x17, 0xf1, 0x53, - 0xc5, 0x9a, 0x8d, 0x97, 0x82, 0x35, 0x6d, 0x66, 0xdb, 0x50, - 0x78, 0xd5, 0x24, 0x86, 0x29, 0x15, 0x30, 0xab, 0xd4, 0x30, - 0x8d, 0x83, 0x75, 0xfd, 0x29, 0x5d, 0x73, 0xae, 0xc9, 0x31, - 0xbb, 0xf2, 0xbe, 0xf7, 0x46, 0xb7, 0xfc, 0x2a, 0xf, 0x18, - 0x7f, 0xd1, 0x59, 0xd7, 0x3f, 0x29, 0xbf, 0xf8, 0xfd, 0x7a, - 0x5b, 0xda, 0xcb, 0x65, 0xe1, 0x46, 0xb5, 0x9e, 0xe5, 0xee, - 0xa5, 0x86, 0xc8, 0xc6, 0xf3, 0xbe, 0x77, 0x4a, 0xc1, 0x30, - 0x58, 0xe4, 0x9e, 0x4f, 0x5e, 0xa6, 0xbc, 0xd3, 0xfe, 0x16, - 0xff, 00, 0x8c, 0x3f, 0xe8, 0x93, 0x6b, 0x9f, 0x9c, 0xdf, - 0xfc, 0x62, 0xbb, 0xbd, 0x13, 0x59, 0xd4, 0x3c, 0x4b, 0xe0, - 0xb9, 0xaf, 0xaf, 0xb4, 0x3b, 0x9d, 0x26, 0xee, 0x58, 0xe6, - 0x4f, 0xb1, 0x4f, 0xb8, 0xc8, 0x31, 0x90, 0x3a, 0xaa, 0x9e, - 0x7a, 0xf4, 0xa5, 0x3b, 0xf2, 0x49, 0x21, 0xc6, 0xdc, 0xe9, - 0x9e, 0x69, 0xf0, 0xe7, 0xc2, 0x56, 0x9e, 0x34, 0xf8, 0xc, - 0x74, 0x8b, 0xac, 0x2b, 0xb5, 0xcc, 0xcf, 0x4, 0xc4, 0x64, - 0xc5, 0x28, 0x3f, 0x2b, 0x7f, 0x43, 0xea, 0x9, 0xa9, 0x74, - 0xff, 00, 0x15, 0x5d, 0x6a, 0x1f, 0x9, 0xfc, 0x59, 0xe1, - 0x8d, 0x73, 0x31, 0xf8, 0x83, 0x44, 0xd3, 0xe6, 0x82, 0x75, - 0x73, 0x93, 0x2c, 0x61, 0x48, 0x59, 0x32, 0x7a, 0xf6, 0x4, - 0xf7, 0xe0, 0xff, 00, 0x15, 0x74, 0xff, 00, 0x4, 0xb4, - 0xdb, 0xfd, 0x27, 0xe1, 0xc5, 0xbd, 0xae, 0xa3, 0x65, 0x73, - 0x67, 0x70, 0x2e, 0x25, 0x63, 0x15, 0xc4, 0x4d, 0x1b, 0x80, - 0x4f, 0x7, 0xc, 0x1, 0xac, 0x1f, 0x8d, 0x5e, 0x7, 0xd4, - 0xaf, 0xa2, 0x5f, 0x12, 0xf8, 0x6a, 0x19, 0x9f, 0x51, 0x10, - 0xb5, 0x9d, 0xec, 0x16, 0xc8, 0x59, 0xee, 0x20, 0x71, 0xb7, - 0xee, 0x8f, 0xbc, 0x46, 0x70, 0x78, 0xce, 0xe, 0x7f, 0x86, - 0xaa, 0xaf, 0x55, 0xd1, 0xa5, 0xf7, 0xdb, 0x47, 0xfa, 0xa, - 0x9e, 0xb6, 0xee, 0x9b, 0xfc, 0xf6, 0xfe, 0xba, 0x89, 0x75, - 0xff, 00, 0x26, 0xb8, 0xbf, 0xf6, 0xc, 0x4f, 0xfd, 0xc, - 0x57, 0x97, 0xf8, 0x3b, 0xc2, 0x7f, 0x10, 0xb5, 0x1f, 0x4, - 0xcf, 0xac, 0x78, 0x63, 0x5d, 0xb8, 0x82, 0xc6, 0x29, 0x1c, - 0x7d, 0x86, 0xda, 0xfe, 0x68, 0xa4, 0x76, 0x18, 0xdc, 0x55, - 0x14, 0x6d, 0x27, 0x4, 0x77, 0xc9, 0xc5, 0x7a, 0xe5, 0xce, - 0x91, 0xa9, 0xb7, 0xec, 0xe0, 0xba, 0x58, 0xd3, 0xae, 0xce, - 0xa3, 0xfd, 0x9e, 0x89, 0xf6, 0x41, 0x3, 0x79, 0xbb, 0xb7, - 0x83, 0x8d, 0x98, 0xce, 0x7d, 0xb1, 0x57, 0x7e, 0x6, 0xe9, - 0x7a, 0x86, 0x91, 0xf0, 0xf3, 0xec, 0xda, 0x95, 0x8d, 0xcd, - 0x95, 0xc7, 0xdb, 0x25, 0x6f, 0x2a, 0xe6, 0x16, 0x8d, 0xf0, - 0x42, 0xe0, 0xe1, 0x80, 0x38, 0xa6, 0xd5, 0xea, 0x54, 0xfe, - 0xba, 0x92, 0x9d, 0xa9, 0xc1, 0x7f, 0x5b, 0x1e, 0x4f, 0xf0, - 0xa7, 0x40, 0xd2, 0xbc, 0x7b, 0xe2, 0xb5, 0xbb, 0xf1, 0x36, - 0xbd, 0x7d, 0x7b, 0xaa, 0xda, 0xf, 0x33, 0xec, 0x37, 0x6a, - 0x5b, 0xce, 0xa, 0x78, 0xfd, 0xeb, 0x39, 0x2c, 0x7, 0x75, - 0xc0, 0xeb, 0xdc, 0x66, 0xbe, 0xa2, 0xaf, 0x9d, 0x3e, 0x23, - 0xf8, 0x17, 0x5f, 0xf0, 0xaf, 0xc4, 0x5b, 0x6f, 0x15, 0x78, - 0x3b, 0x4d, 0xbb, 0xb9, 0x49, 0xe5, 0xfb, 0x41, 0x8e, 0xd2, - 0x6, 0x93, 0xc9, 0x94, 0x7d, 0xf5, 0x2a, 0x83, 0x3b, 0x18, - 0x1f, 0xd5, 0x85, 0x7b, 0xf6, 0x8f, 0xa8, 0x36, 0xab, 0xa3, - 0xda, 0x5f, 0x3d, 0xa5, 0xc5, 0xa3, 0xcf, 0x18, 0x76, 0xb7, - 0xb9, 0x8c, 0xa4, 0x91, 0x1e, 0xea, 0xca, 0x79, 0x4, 0x1a, - 0x13, 0xbc, 0x13, 0x1b, 0x56, 0x9b, 0x3c, 0x1f, 0xf6, 0x96, - 0xff, 00, 0x90, 0x87, 0x86, 0xbf, 0xeb, 0x9c, 0xff, 00, - 0xce, 0x3a, 0xf7, 0x1d, 0x41, 0x64, 0x7f, 0xa, 0x5d, 0x24, - 0x39, 0xf3, 0x5a, 0xc5, 0xc2, 0x63, 0xd7, 0x61, 0xc5, 0x78, - 0xff, 00, 0xed, 0x7, 0xa0, 0x6b, 0x3a, 0xd5, 0xf7, 0x87, - 0xdb, 0x4a, 0xd2, 0x6f, 0xef, 0xd6, 0x24, 0x98, 0x48, 0x6d, - 0x6d, 0x9e, 0x50, 0x99, 0x29, 0x8c, 0xed, 0x7, 0x1d, 0xf, - 0xe5, 0x5e, 0xdf, 0x6a, 0xa5, 0x6d, 0x21, 0x56, 0x4, 0x11, - 0x1a, 0x82, 0xf, 0xd2, 0xa7, 0x97, 0x9a, 0x8b, 0x8f, 0x76, - 0xca, 0x6e, 0xd5, 0x13, 0xf2, 0xff, 00, 0x23, 0xe7, 0xef, - 0xd9, 0xa2, 0x48, 0x45, 0xf7, 0x88, 0xa3, 0x24, 0x79, 0xed, - 0x1c, 0xc, 0xa3, 0xbe, 0xd0, 0x5f, 0x3f, 0xa9, 0x5a, 0xfa, - 0x2, 0xe9, 0xe3, 0x8e, 0xce, 0x77, 0x94, 0x81, 0x1a, 0xc6, - 0xc5, 0x89, 0x38, 00, 0x63, 0x9a, 0xf9, 0xff, 00, 0xc4, - 0xdf, 0xd, 0xbc, 0x5d, 0xe0, 0x5f, 0x18, 0xcd, 0xe2, 0x9f, - 0x1, 0xa3, 0x4f, 0x6a, 0xe5, 0xe4, 0x36, 0xf0, 0x80, 0x5e, - 0x20, 0x4f, 0xcd, 0x19, 0x8c, 0xff, 00, 0xac, 0x43, 0x9e, - 0x36, 0xe4, 0x8c, 0x74, 0x4, 0x2, 0x6b, 0x6b, 0x1e, 0x20, - 0xf8, 0xc1, 0xe3, 0xdb, 0x26, 0xd0, 0xf, 0x86, 0x26, 0xd3, - 0xa1, 0xb8, 0x4, 0x4c, 0xe9, 0x65, 0x25, 0xb0, 0x91, 0x3b, - 0xab, 0x49, 0x2b, 0x60, 0xf, 0x60, 0x41, 0x3d, 0x39, 0xe9, - 0x4e, 0x6f, 0x9e, 0x36, 0x5b, 0xd8, 0x49, 0x72, 0xc9, 0xb7, - 0xb0, 0x7e, 0xcd, 0xea, 0xc7, 0xc5, 0x3a, 0xeb, 0xa0, 0x3e, - 0x48, 0xb4, 0x50, 0x7d, 0x32, 0x5f, 0x8f, 0xd0, 0x1a, 0xeb, - 0xbe, 0x24, 0xfc, 0x10, 0x5f, 0x16, 0x6a, 0xb2, 0xeb, 0x7a, - 0x25, 0xf4, 0x56, 0x7a, 0x84, 0xd8, 0xf3, 0xe0, 0xb8, 0x53, - 0xe5, 0x4a, 0xdc, 0xd, 0xdb, 0x94, 0x12, 0xa7, 0x19, 0xcf, - 0x7, 0x27, 0x1d, 0x39, 0x35, 0xd4, 0xfc, 0x30, 0xf8, 0x7b, - 0x1f, 0xc3, 0xff, 00, 0xf, 0xc9, 0x6f, 0x2c, 0xd1, 0xdc, - 0x6a, 0x37, 0x4c, 0x24, 0xba, 0x99, 0x6, 0x17, 0x20, 0x60, - 0x22, 0xe7, 0x92, 0xa3, 0x9e, 0x4f, 0x52, 0x49, 0xc0, 0xe9, - 0x5e, 0x5f, 0xad, 0x78, 0x27, 0xc7, 0x1f, 0xd, 0xbc, 0x6b, - 0x79, 0xe2, 0x3f, 0x6, 0x5b, 0x3d, 0xfe, 0x9f, 0x70, 0xe5, - 0x8c, 0x31, 0x27, 0x9a, 0xdb, 0x59, 0x81, 0x31, 0xbc, 0x63, - 0xe6, 0x20, 0x1e, 0x85, 0x7a, 0x1, 0xd4, 0x73, 0x44, 0xed, - 0xcd, 0x15, 0xdb, 0xa8, 0x46, 0xfe, 0xf4, 0xbb, 0xf4, 0x32, - 0x26, 0xd5, 0xfe, 0x2f, 0xfc, 0x2f, 0xc4, 0xda, 0x8b, 0xdd, - 0x5c, 0xe9, 0xa1, 0xf9, 0x6b, 0xa6, 0x17, 0x70, 0x30, 0x1f, - 0x28, 0xcb, 0x82, 0x5a, 0x30, 0x72, 0x30, 0x32, 0xb9, 0xf4, - 0xeb, 0x5f, 0x40, 0xf8, 0x33, 0xc4, 0xf0, 0x78, 0xc7, 0xc2, - 0x96, 0x5a, 0xdc, 0x11, 0x18, 0x7e, 0xd0, 0xa4, 0x3c, 0x44, - 0xe7, 0x63, 0xa9, 0x21, 0x86, 0x7b, 0x8c, 0x8e, 0xf, 0xa5, - 0x78, 0x5e, 0xb7, 0xac, 0x7c, 0x5c, 0xf8, 0x8d, 0x60, 0x7c, - 0x3d, 0x37, 0x85, 0x9e, 0xc2, 0xda, 0x62, 0x1a, 0x56, 0x16, - 0x52, 0x5b, 0x2b, 0x85, 0x20, 0x80, 0xcf, 0x33, 0x11, 0x80, - 0x40, 0x38, 0x1c, 0x9c, 0x77, 0xe9, 0x5e, 0xdb, 0xe0, 0x1f, - 0xa, 0x7f, 0xc2, 0x17, 0xe0, 0xeb, 0x2d, 0x15, 0xa6, 0x59, - 0xe6, 0x8b, 0x73, 0xcd, 0x22, 0x8c, 0x6, 0x76, 0x39, 0x38, - 0xf6, 0x19, 0xc0, 0xfa, 0x55, 0x2b, 0xf2, 0xbe, 0x62, 0x5d, - 0xae, 0xb9, 0x4e, 0x96, 0x8a, 0x28, 0xa9, 0x28, 0x28, 0xa2, - 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, - 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, - 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, - 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, - 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, - 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, - 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, - 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, - 0x8a, 00, 0x2b, 0x3b, 0x54, 0xff, 00, 0x96, 0x1f, 0x56, - 0xfe, 0x55, 0xa3, 0x59, 0xda, 0xa7, 0xfc, 0xb0, 0xfa, 0xb7, - 0xf2, 0xa0, 0xb, 0x96, 0xff, 00, 0xea, 0x13, 0xe9, 0x52, - 0xd4, 0x56, 0xff, 00, 0xea, 0x13, 0xe9, 0x52, 0xd0, 0x1, - 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x3, 0x5c, 0xed, - 0x8d, 0x9b, 0xd0, 0x13, 0x5e, 0x49, 0xab, 0x5f, 0x99, 0xef, - 0xe6, 0x93, 0x3f, 0xc4, 0x45, 0x7a, 0x7e, 0xb1, 0x71, 0xf6, - 0x6d, 0x2a, 0xe2, 0x5c, 0xe3, 0xa, 0x6b, 0xc4, 0x2e, 0x6e, - 0x77, 0x48, 0xe7, 0x3d, 0x58, 0x9a, 0xb8, 0x23, 0x1a, 0xae, - 0xda, 0x16, 0x25, 0xbb, 0xf7, 0xae, 0xc7, 0xe1, 0xcd, 0xe0, - 0x79, 0xee, 0x20, 0xcf, 0x27, 0x9c, 0x57, 0x9a, 0x4d, 0x73, - 0xef, 0x5b, 0xff, 00, 0xf, 0xf5, 0x75, 0xb3, 0xf1, 0x42, - 0x2c, 0x8d, 0xf2, 0xca, 0xbb, 0x7, 0xd6, 0xaa, 0x4b, 0x43, - 0x28, 0x4b, 0xde, 0x3d, 0xc2, 0x9a, 0xe7, 0x6c, 0x6c, 0x4f, - 0x61, 0x4e, 0xaa, 0x9a, 0x94, 0xbe, 0x56, 0x9f, 0x33, 0x77, - 0xdb, 0xc5, 0x64, 0x75, 0x3d, 0x8f, 0x20, 0xd4, 0x60, 0x32, - 0xdf, 0xdc, 0x3e, 0x3a, 0xc8, 0x6b, 0x36, 0x5b, 0x5f, 0x6a, - 0xea, 0x66, 0xb5, 0xdc, 0xcc, 0xc4, 0x75, 0x39, 0xaa, 0x13, - 0x5a, 0xf5, 0xe2, 0xba, 0x13, 0x38, 0x65, 0x1d, 0x4d, 0xef, - 0x86, 0x73, 0x79, 0x5f, 0x6b, 0xb6, 0x6e, 0xed, 0x91, 0x5e, - 0x89, 0x5e, 0x63, 0xe0, 0xc2, 0x6d, 0xfc, 0x42, 0x13, 0xa2, - 0xb2, 0x9a, 0xf4, 0xea, 0xc6, 0x7b, 0x9d, 0x54, 0x7e, 0x10, - 0xa2, 0x8a, 0x2a, 0x4d, 0x42, 0x8a, 0x28, 0xa0, 0x2, 0xa1, - 0xb9, 0xfb, 0x95, 0x35, 0x41, 0x73, 0xf7, 0x28, 0x2, 0x7a, - 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa2, - 0x80, 0xa, 0x28, 0xa2, 0x80, 0x3c, 0xce, 0xd7, 0xfe, 0x42, - 0x9a, 0xe7, 0xfd, 0x84, 0xe6, 0xfe, 0x95, 0xde, 0x68, 0x9f, - 0xf2, 0x7, 0x83, 0xfe, 0x5, 0xff, 00, 0xa1, 0x1a, 0xe0, - 0xed, 0x7f, 0xe4, 0x29, 0xae, 0x7f, 0xd8, 0x4e, 0x6f, 0xe9, - 0x5d, 0xe6, 0x89, 0xff, 00, 0x20, 0x78, 0x3f, 0xe0, 0x5f, - 0xfa, 0x11, 0xa0, 0xc, 0xff, 00, 0x3, 0xff, 00, 0xc8, - 0x97, 0xa5, 0xff, 00, 0xd7, 0x2f, 0xfd, 0x98, 0xd7, 0x41, - 0x5c, 0xff, 00, 0x81, 0xff, 00, 0xe4, 0x4b, 0xd2, 0xff, - 00, 0xeb, 0x97, 0xfe, 0xcc, 0x6b, 0xa0, 0xa0, 0x2, 0x8a, - 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, - 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, - 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, - 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, - 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, - 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, - 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, - 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, - 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, - 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, - 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, - 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, - 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, - 0x2, 0x8a, 0x28, 0xa0, 0x2, 0xb3, 0xb5, 0x4f, 0xf9, 0x61, - 0xf5, 0x6f, 0xe5, 0x5a, 0x35, 0x9d, 0xaa, 0x7f, 0xcb, 0xf, - 0xab, 0x7f, 0x2a, 00, 0xb9, 0x6f, 0xfe, 0xa1, 0x3e, 0x95, - 0x2d, 0x45, 0x6f, 0xfe, 0xa1, 0x3e, 0x95, 0x2d, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x48, 0xce, 0xa8, 0xa5, 0x98, - 0x80, 0x7, 0x52, 0x68, 0x3, 0x9f, 0xf1, 0xb4, 0xfe, 0x47, - 0x85, 0xee, 0x8e, 0x70, 0x48, 0xc0, 0xaf, 0xc, 0x9a, 0xe3, - 0x8e, 0xb5, 0xeb, 0x5e, 0x2f, 0xbf, 0x8f, 0x59, 0xb4, 0x6b, - 0xb, 0x57, 0xef, 0xcb, 0x57, 0x96, 0xea, 0x3e, 0x1b, 0xd5, - 0x6d, 0xc1, 0x2b, 0x1, 0x74, 0x1d, 0x8, 0xad, 0x60, 0xac, - 0x8e, 0x5a, 0xae, 0xef, 0x43, 0x12, 0x7b, 0x9e, 0xbc, 0xd5, - 0x78, 0x75, 0x9, 0x2c, 0xef, 0x21, 0xba, 0x8c, 0xfc, 0xf1, - 0x38, 0x61, 0x4d, 0xb8, 0xb5, 0xbd, 0x46, 0x21, 0xad, 0x26, - 0xcf, 0xb2, 0x1a, 0x65, 0xb6, 0x8b, 0xab, 0x6a, 0x12, 0x88, - 0xed, 0xec, 0x66, 0x2c, 0x78, 0x1b, 0x94, 0x8a, 0xa6, 0xcc, - 0x92, 0x6c, 0xfa, 0x63, 0xc2, 0xbe, 0x20, 0xb7, 0xf1, 0x16, - 0x89, 0x5, 0xdc, 0x52, 0x2b, 0x49, 0xb4, 0x9, 0x17, 0x3c, - 0x86, 0xa9, 0x75, 0x89, 0x3c, 0xd5, 0x10, 0xaf, 0xe3, 0x5e, - 0x7b, 0xf0, 0xdf, 0xc1, 0x3a, 0xe7, 0x87, 0xe7, 0x6b, 0xcb, - 0xcb, 0x93, 0x2, 0xb8, 0xe6, 0xdf, 0x39, 0x6, 0xbd, 0x1a, - 0x48, 0x3, 0x12, 0x71, 0xd6, 0xb2, 0xb6, 0xa7, 0x5d, 0xdb, - 0x47, 0x37, 0x2d, 0xae, 0x7, 0x4a, 0xce, 0xb8, 0xb5, 0xeb, - 0xc5, 0x75, 0x33, 0x5b, 0xfb, 0x56, 0x65, 0xc5, 0xbf, 0x5c, - 0xa, 0xb4, 0xcc, 0x9c, 0x4c, 0x4d, 0x29, 0x7e, 0xcf, 0xac, - 0xc2, 0xfd, 0x39, 0xc5, 0x7a, 0x68, 0xe8, 0x2b, 0xc8, 0xb5, - 0x6d, 0x76, 0xdb, 0x48, 0xbb, 0x8f, 0x6e, 0x24, 0x99, 0x5b, - 0x25, 0x5, 0x7a, 0x7, 0x87, 0xbc, 0x53, 0x63, 0xaf, 0xdb, - 0x29, 0x89, 0xc2, 0x4c, 0x7, 0xcd, 0x19, 0x3d, 0x2a, 0x66, - 0x8a, 0xa4, 0xd2, 0xd0, 0xdd, 0xa2, 0x8a, 0x2a, 0xd, 0xc2, - 0x8a, 0x28, 0xa0, 0x2, 0xa1, 0xb9, 0xfb, 0x95, 0x35, 0x43, - 0x71, 0xf7, 0x28, 0x2, 0x6a, 0x28, 0xa2, 0x80, 0xa, 0x28, - 0xa2, 0x80, 0xa, 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa2, 0x80, - 0x3c, 0xce, 0xd7, 0xfe, 0x42, 0x9a, 0xe7, 0xfd, 0x84, 0xe6, - 0xfe, 0x95, 0xde, 0x68, 0x9f, 0xf2, 0x7, 0x83, 0xfe, 0x5, - 0xff, 00, 0xa1, 0x1a, 0xe0, 0xed, 0x7f, 0xe4, 0x29, 0xae, - 0x7f, 0xd8, 0x4e, 0x6f, 0xe9, 0x5d, 0xe6, 0x89, 0xff, 00, - 0x20, 0x78, 0x3f, 0xe0, 0x5f, 0xfa, 0x11, 0xa0, 0xc, 0xff, - 00, 0x3, 0xff, 00, 0xc8, 0x97, 0xa5, 0xff, 00, 0xd7, - 0x2f, 0xfd, 0x98, 0xd7, 0x41, 0x5c, 0xff, 00, 0x81, 0xff, - 00, 0xe4, 0x4b, 0xd2, 0xff, 00, 0xeb, 0x97, 0xfe, 0xcc, - 0x6b, 0xa0, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0xb3, 0xb5, 0x4f, 0xf9, 0x61, 0xf5, 0x6f, 0xe5, 0x5a, 0x35, - 0x9d, 0xaa, 0x7f, 0xcb, 0xf, 0xab, 0x7f, 0x2a, 00, 0xb9, - 0x6f, 0xfe, 0xa1, 0x3e, 0x95, 0x2d, 0x45, 0x6f, 0xfe, 0xa1, - 0x3e, 0x95, 0x2d, 00, 0x14, 0x51, 0x59, 0xda, 0xc6, 0xb3, - 0x69, 0xa2, 0xd9, 0x35, 0xc5, 0xcc, 0x80, 0x60, 0x7c, 0xab, - 0x9e, 0x4d, 0x2, 0x6e, 0xda, 0xb2, 0xcd, 0xe5, 0xed, 0xbd, - 0x85, 0xbb, 0x4f, 0x71, 0x20, 0x44, 0x51, 0xdf, 0xbd, 0x79, - 0xf6, 0xaf, 0xe2, 0x79, 0xf5, 0x69, 0x4c, 0x50, 0x13, 0x1d, - 0xb0, 0x3d, 0xbf, 0x8a, 0xb9, 0xcd, 0x5b, 0xc4, 0x77, 0x5e, - 0x20, 0xbb, 0x2f, 0x23, 0x15, 0x80, 0x1f, 0x92, 0x31, 0x52, - 0x59, 0x8e, 0x95, 0xac, 0x63, 0x63, 0x9a, 0x75, 0x79, 0xb4, - 0x46, 0xcd, 0x9c, 0x63, 0x22, 0xb7, 0xad, 0x63, 0x4, 0xc, - 0x80, 0x7e, 0xb5, 0x91, 0x66, 0x38, 0x15, 0xbd, 0x6a, 0x38, - 0x14, 0xd8, 0x44, 0xbf, 0x5, 0xac, 0x2c, 0x1, 0x68, 0x63, - 0x3f, 0xf0, 0x11, 0x5a, 0x11, 0x43, 0x12, 0x7d, 0xc8, 0xa3, - 0x5f, 0xa2, 0x8a, 0x86, 0xdc, 0x7c, 0xa2, 0xae, 0x20, 0xa8, - 0x66, 0xa9, 0x6, 0xcc, 0xd2, 0x32, 0x54, 0xd4, 0x84, 0x71, - 0x53, 0x72, 0xec, 0x51, 0x96, 0x3c, 0x8e, 0x95, 0xc1, 0xf8, - 0xf3, 0xc4, 0xb1, 0xf8, 0x7e, 0xcb, 0xc9, 0x88, 0x83, 0x77, - 0x30, 0xc2, 0x8f, 0x4a, 0xf4, 0x19, 0xd8, 0x47, 0x14, 0x92, - 0x31, 0xc0, 0x45, 0x2d, 0x5f, 0x30, 0xf8, 0xab, 0x59, 0x93, - 0x5c, 0xf1, 0x2d, 0xd5, 0xcb, 0x31, 0x28, 0x1c, 0xaa, 0x8f, - 0x4c, 0x55, 0xa3, 0x2a, 0x8e, 0xc8, 0x48, 0xee, 0x64, 0xb8, - 0x99, 0xa6, 0x99, 0xcb, 0x48, 0xc7, 0x24, 0x9a, 0xdc, 0xd3, - 0x2e, 0xe6, 0xb4, 0x99, 0x26, 0xb7, 0x90, 0xa3, 0xa9, 0xce, - 0x41, 0xae, 0x6e, 0xd7, 0xad, 0x6e, 0x5a, 0x76, 0xab, 0x67, - 0x32, 0x67, 0xb3, 0x78, 0x5f, 0xc6, 0x11, 0xea, 0x51, 0xad, - 0xb5, 0xe9, 0x9, 0x70, 0x6, 0x3, 0x1e, 0x8d, 0x5d, 0x78, - 0xe4, 0x71, 0x5e, 0x11, 0x64, 0x4a, 0x95, 0x65, 0x24, 0x11, - 0xd0, 0x8a, 0xf4, 0x7f, 0xd, 0x78, 0x8d, 0x99, 0x16, 0xd6, - 0xf1, 0xb2, 0x7a, 0x2b, 0x9a, 0xce, 0x51, 0x3a, 0xe9, 0xce, - 0xfa, 0x33, 0xb0, 0xa2, 0x90, 0x10, 0x46, 0x41, 0xc8, 0x34, - 0xb5, 0x6, 0xa1, 0x50, 0xdc, 0x7d, 0xca, 0x9a, 0xa1, 0xb9, - 0xfb, 0x94, 0x1, 0x35, 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, - 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0x1e, - 0x67, 0x6b, 0xff, 00, 0x21, 0x4d, 0x73, 0xfe, 0xc2, 0x73, - 0x7f, 0x4a, 0xef, 0x34, 0x4f, 0xf9, 0x3, 0xc1, 0xff, 00, - 0x2, 0xff, 00, 0xd0, 0x8d, 0x70, 0x76, 0xbf, 0xf2, 0x14, - 0xd7, 0x3f, 0xec, 0x27, 0x37, 0xf4, 0xae, 0xf3, 0x44, 0xff, - 00, 0x90, 0x3c, 0x1f, 0xf0, 0x2f, 0xfd, 0x8, 0xd0, 0x6, - 0x7f, 0x81, 0xff, 00, 0xe4, 0x4b, 0xd2, 0xff, 00, 0xeb, - 0x97, 0xfe, 0xcc, 0x6b, 0xa0, 0xae, 0x7f, 0xc0, 0xff, 00, - 0xf2, 0x25, 0xe9, 0x7f, 0xf5, 0xcb, 0xff, 00, 0x66, 0x35, - 0xd0, 0x50, 0x1, 0x45, 0x15, 0xc4, 0x78, 0xbf, 0xe2, 0xb7, - 0x86, 0xbc, 0x15, 0xac, 0x5b, 0xe9, 0x7a, 0x9b, 0x5d, 0x49, - 0x73, 0x2a, 0x87, 0x71, 0x6d, 0x10, 0x71, 0xa, 0x93, 0x80, - 0xcf, 0x92, 0x3d, 0xce, 0x6, 0x4e, 0x7, 0x4e, 0x99, 0x2e, - 0x16, 0x3b, 0x7a, 0x2a, 0x3b, 0x7b, 0x88, 0x6e, 0xed, 0xa2, - 0xb9, 0xb7, 0x91, 0x64, 0x86, 0x54, 0xf, 0x1b, 0xa9, 0xe1, - 0x94, 0x8c, 0x82, 0x3f, 0xa, 0x92, 0x86, 0xac, 0x9, 0xdc, - 0x28, 0xa2, 0xb2, 0x3c, 0x53, 0xab, 0x9d, 0x3, 0xc2, 0x9a, - 0xae, 0xac, 0xaa, 0x19, 0xed, 0x2d, 0x64, 0x95, 0x1, 0x19, - 0x5, 0x82, 0x9c, 0x7e, 0xb8, 0xa5, 0x27, 0x65, 0x71, 0xa5, - 0x77, 0x62, 0x9f, 0x88, 0xbc, 0x7d, 0xe1, 0x6f, 0xa, 0x4a, - 0xb1, 0x6b, 0x5a, 0xcd, 0xbd, 0xb4, 0xcd, 0x8f, 0xdc, 0x80, - 0xd2, 0x48, 0x32, 0x32, 0x9, 0x44, 0x5, 0x80, 0xf7, 0x23, - 0x15, 0x2f, 0x87, 0x3c, 0x69, 0xe1, 0xcf, 0x16, 0xa4, 0x8d, - 0xa1, 0xea, 0xb0, 0x5d, 0x98, 0xfe, 0xfc, 0x60, 0x14, 0x91, - 0x47, 0x1c, 0x94, 0x60, 0x1b, 0x1c, 0xf5, 0xc6, 0x2b, 0xb, - 0xe1, 0x5f, 0x87, 0x6d, 0xec, 0x3c, 0x29, 0x69, 0xad, 0xdc, - 0x22, 0xdc, 0x6b, 0x5a, 0xb4, 0x42, 0xee, 0xee, 0xfa, 0x41, - 0x99, 0x64, 0xf3, 0x30, 0xc1, 0x77, 0x75, 0xa, 0x6, 0xde, - 0x7, 0x19, 0x15, 0x7b, 0xc4, 0x5e, 0x6, 0x83, 0x57, 0xf1, - 0x1e, 0x95, 0xe2, 0x2d, 0x3e, 0xe9, 0x74, 0xcd, 0x5e, 0xc6, - 0x60, 0xcf, 0x70, 0x90, 0x6f, 0xfb, 0x44, 0x58, 0xc1, 0x8d, - 0xc6, 0xe5, 0xc8, 0x23, 0x8c, 0xf6, 0x19, 0xaa, 0xb3, 0x8b, - 0xb4, 0xbf, 0xe1, 0xbf, 0xcc, 0x9b, 0xdd, 0x5d, 0x1d, 0x6d, - 0x15, 0xc4, 0xf8, 0xa7, 0xc6, 0x1a, 0xad, 0xb7, 0x88, 0xad, - 0xbc, 0x2b, 0xe1, 0x6d, 0x3e, 0xde, 0xf3, 0x5c, 0x9a, 0x1f, - 0xb4, 0x49, 0x25, 0xdb, 0x95, 0xb7, 0xb5, 0x87, 0x76, 0x37, - 0x3e, 0xdf, 0x98, 0xe7, 0xd0, 0x73, 0xc8, 0xeb, 0xd2, 0xab, - 0x69, 0x5e, 0x30, 0xf1, 0x16, 0x99, 0xe2, 0xab, 0x3f, 0xe, - 0x78, 0xd3, 0x4f, 0xd3, 0xe2, 0x9f, 0x51, 0xc, 0x6c, 0x2f, - 0xb4, 0xc7, 0x73, 0x4, 0x85, 0x40, 0x26, 0x32, 0x1f, 0xe6, - 0xd, 0xef, 0xee, 0x6, 0x3b, 0xd2, 0x5a, 0x8d, 0xe8, 0x77, - 0xf4, 0x57, 0x96, 0x69, 0x7e, 0x37, 0xf1, 0xc7, 0x89, 0xb5, - 0x4d, 0x7b, 0x4b, 0xd0, 0xb4, 0xbd, 0x19, 0x65, 0xd2, 0xf5, - 0x9, 0x21, 0x37, 0x97, 0xc6, 0x55, 0x87, 0xcb, 0x7, 0xa, - 0x98, 0x52, 0x59, 0xa4, 0x38, 0x24, 0x9e, 00, 00, 0x71, - 0xc8, 0xa4, 0xd0, 0x7c, 0x7d, 0xe3, 0x4f, 0x16, 0x5b, 0xdc, - 0xe9, 0xda, 0x46, 0x85, 0xa6, 0xdb, 0x6b, 0x3a, 0x6c, 0xcd, - 0xe, 0xa3, 0x73, 0x7d, 0x23, 0x8b, 0x30, 0xe1, 0xb0, 0x16, - 0x30, 0x99, 0x76, 0x63, 0x82, 0x79, 0xe1, 0x71, 0xd4, 0xe4, - 0x50, 0xb5, 0xfc, 0xc6, 0xd5, 0x9d, 0x8f, 0x54, 0xa2, 0xb8, - 0xef, 0x2, 0x78, 0xbe, 0xf3, 0xc4, 0xfa, 0x4e, 0xa2, 0x35, - 0x3b, 0x28, 0xad, 0x35, 0x6d, 0x2e, 0xe5, 0xed, 0x2e, 0xe2, - 0x89, 0x89, 0x8c, 0xba, 0x8f, 0xbc, 0xb9, 0xe4, 0x3, 0xcf, - 0x19, 0x3d, 0x3a, 0xd7, 0x27, 0xe1, 0xdf, 0x1d, 0x7c, 0x43, - 0xf1, 0x8f, 0x86, 0x4e, 0xa7, 0xa2, 0x69, 0x1a, 0x14, 0x46, - 0xd9, 0xa4, 0x59, 0xe4, 0xbd, 0x32, 0x85, 0xb8, 0x60, 0x49, - 0xb, 0xa, 0x29, 0x27, 0x81, 0x8c, 0x96, 0x6c, 0x12, 0x70, - 0x31, 0x83, 0x43, 0xff, 00, 0x83, 0xf2, 0x4, 0xbf, 0x3b, - 0x7c, 0xcf, 0x5d, 0xa2, 0xbc, 0xb3, 0x48, 0xf1, 0xe7, 0x8d, - 0x7c, 0x6d, 0xe1, 0xf5, 0xd4, 0xfc, 0x29, 0xa1, 0x69, 0xb6, - 0xcb, 0x2, 0x95, 0xb8, 0x6d, 0x56, 0x47, 0x22, 0x79, 0x40, - 0xf9, 0x92, 0x15, 0x4e, 0x70, 0x38, 0xf9, 0x98, 0x8e, 0x5b, - 0x1d, 0x89, 0xad, 0x7d, 0x3f, 0xe2, 0x75, 0x94, 0xdf, 0xc, - 0x47, 0x8c, 0x6f, 0x6d, 0x5e, 0x22, 0xb9, 0x89, 0xed, 0x23, - 0x6d, 0xcc, 0xd3, 0x6, 0xda, 0x11, 0x4f, 0xb9, 0xe7, 0xd8, - 0x1f, 0x6a, 0x1e, 0x97, 0xbf, 0x41, 0x2d, 0x6c, 0x77, 0x94, - 0x57, 0x9a, 0x4f, 0xe2, 0x2f, 0x89, 0xba, 0x66, 0x9e, 0xda, - 0xf6, 0xa1, 0xa0, 0x68, 0x52, 0x69, 0x71, 0xa9, 0x9a, 0x5d, - 0x3a, 0xde, 0x79, 0x3e, 0xdb, 0x1c, 0x58, 0x27, 0xef, 0x1f, - 0x90, 0xb2, 0x8e, 0x4e, 0x7, 0x38, 0x20, 0x1, 0xda, 0xdf, - 0x8c, 0xbe, 0x22, 0xbe, 0x8b, 0xe1, 0x4d, 0x7, 0xc4, 0x1a, - 0x25, 0xbc, 0x77, 0xd6, 0xfa, 0x95, 0xdc, 0x31, 0xf9, 0x6e, - 0xa7, 0x73, 0x46, 0xea, 0x49, 0xb, 0x82, 0x30, 0xfc, 0x63, - 0x9c, 0x80, 0x7b, 0x51, 0xfd, 0x7d, 0xe0, 0xb5, 0x3d, 0x2, - 0x8a, 0xf3, 0x8b, 0xff, 00, 0x18, 0xf8, 0xb7, 0xc2, 0xba, - 0x6b, 0xdd, 0x78, 0x97, 0x4e, 0xd2, 0x6e, 0x2e, 0x6f, 0x66, - 0x8a, 0xdf, 0x49, 0xb0, 0xd3, 0x1e, 0x4d, 0xf2, 0x4a, 0xe4, - 0xe5, 0x64, 0x77, 0xe3, 0x80, 0x7, 0x20, 0x60, 0xd0, 0x9e, - 0x2e, 0xf1, 0x8f, 0x86, 0xf5, 0x9d, 0x2a, 0xf, 0x1a, 0xd8, - 0xe8, 0xbf, 0xd9, 0xfa, 0xa4, 0xc2, 0xd6, 0x2b, 0xad, 0x2d, - 0xe4, 0xff, 00, 0x47, 0x98, 0xfd, 0xd1, 0x20, 0x7c, 0xe4, - 0x1e, 0x99, 0x1c, 0xc, 0x13, 0x9a, 0x16, 0xae, 0xc0, 0xf4, - 0x57, 0x3b, 0x46, 0xf1, 0x6, 0x96, 0xbe, 0x23, 0x4f, 0xf, - 0x9b, 0xac, 0x6a, 0x8f, 0x6f, 0xf6, 0x95, 0x83, 0xcb, 0x6e, - 0x63, 0xce, 0x37, 0x6e, 0xc6, 0xde, 0xbd, 0xb3, 0x9a, 0xd3, - 0xae, 0x42, 0x5f, 0x15, 0x5f, 0x27, 0xc5, 0x78, 0x3c, 0x2a, - 0x22, 0xb7, 0xfb, 0xc, 0x9a, 0x59, 0xbc, 0x32, 0x15, 0x6f, - 0x37, 0x78, 0x72, 0xb8, 0xce, 0x71, 0x8c, 0x7b, 0x7e, 0x35, - 0x9f, 0x3e, 0xbb, 0xf1, 0x7, 0x59, 0xd5, 0x2f, 0x93, 0xc3, - 0x9a, 0x2e, 0x97, 0xa7, 0xe9, 0xf6, 0x73, 0x18, 0x16, 0x7d, - 0x78, 0x4e, 0x8f, 0x74, 0x47, 0x57, 0x8d, 0x50, 0x2, 0x13, - 0xd0, 0x9c, 0xe7, 0xd7, 0xa8, 0x2, 0xfe, 0xbe, 0xfb, 0xd, - 0xab, 0x3f, 0xbb, 0xf2, 0xb9, 0xdf, 0x33, 0x5, 0x52, 0xc7, - 0x80, 0x6, 0x4d, 0x67, 0x68, 0x5a, 0xf6, 0x99, 0xe2, 0x5d, - 0x2d, 0x35, 0x2d, 0x22, 0xe7, 0xed, 0x36, 0x6e, 0xcc, 0xab, - 0x27, 0x96, 0xc9, 0x92, 0xa7, 0x7, 0x86, 00, 0xf5, 0xf6, - 0xae, 0x63, 0xc1, 0x7e, 0x30, 0xd4, 0xf5, 0xe9, 0xb5, 0xdd, - 0x13, 0x5f, 0xd3, 0xe0, 0xb4, 0xd6, 0xb4, 0x76, 0x9, 0x39, - 0xb5, 0x62, 0x61, 0x95, 0x5c, 0x12, 0xac, 0x99, 0x24, 0x8e, - 0x7, 0x42, 0x7b, 0x83, 0xc7, 0x41, 0x47, 0xe0, 0x6f, 0xfc, - 0x92, 0xfb, 0x3f, 0xfa, 0xf8, 0x9f, 0xff, 00, 0x46, 0x1a, - 0x16, 0xef, 0xd2, 0xe2, 0x7b, 0x7c, 0xed, 0xf8, 0x1d, 0xa6, - 0xb3, 0xe2, 0xd, 0x2f, 0xc3, 0xf1, 0xda, 0xbe, 0xa9, 0x75, - 0xf6, 0x75, 0xba, 0xb8, 0x5b, 0x68, 0x4f, 0x96, 0xcf, 0xba, - 0x46, 0xfb, 0xab, 0xf2, 0x83, 0x8e, 0x9d, 0x4f, 0x14, 0x37, - 0x88, 0x34, 0xb5, 0xf1, 0x1a, 0x78, 0x7c, 0xdd, 0x63, 0x54, - 0x7b, 0x7f, 0xb4, 0xac, 0x1e, 0x5b, 0x73, 0x1e, 0x71, 0xbb, - 0x76, 0x36, 0xf5, 0xed, 0x9c, 0xd7, 0xf, 0xf1, 0x93, 0xfe, - 0x3c, 0x3c, 0x2d, 0xff, 00, 0x63, 0x5, 0xaf, 0xfe, 0xcd, - 0x5b, 0x92, 0xf8, 0xaa, 0xf9, 0x3e, 0x2b, 0xc1, 0xe1, 0x51, - 0x15, 0xbf, 0xd8, 0x64, 0xd2, 0xcd, 0xe1, 0x90, 0xab, 0x79, - 0xbb, 0xc3, 0x95, 0xc6, 0x73, 0x8c, 0x63, 0xdb, 0xf1, 0xa1, - 0x6b, 0xf7, 0xbf, 0xca, 0xe3, 0x6a, 0xdf, 0x72, 0xfc, 0xec, - 0x75, 0xf4, 0x57, 0x9c, 0x3f, 0x8c, 0x3c, 0x5d, 0xe2, 0x6d, - 0x63, 0x53, 0xb7, 0xf0, 0x45, 0x86, 0x8f, 0xf6, 0xd, 0x2e, - 0x66, 0xb6, 0x9a, 0xf3, 0x55, 0x79, 0x31, 0x3c, 0xa3, 0xaa, - 0xc6, 0x23, 0xe9, 0x8f, 0x53, 0xd7, 0x23, 0xa5, 0x58, 0xb2, - 0xf8, 0xa3, 0x66, 0x7c, 0x9, 0x7d, 0xaf, 0xea, 0x76, 0x4f, - 0x6d, 0x7b, 0xa7, 0x4e, 0xd6, 0x77, 0x56, 0x8, 0xc1, 0x9b, - 0xed, 00, 0x80, 0x11, 0x4f, 0x7c, 0xe4, 0x73, 0xdb, 0x9e, - 0xb8, 0xa5, 0x7d, 0x2e, 0x16, 0xd6, 0xc7, 0x7f, 0x45, 0x79, - 0xa4, 0xfe, 0x22, 0xf8, 0x9b, 0xa6, 0x69, 0xed, 0xaf, 0x6a, - 0x1a, 0x6, 0x85, 0x26, 0x97, 0x1a, 0x99, 0xa5, 0xd3, 0xad, - 0xe7, 0x93, 0xed, 0xb1, 0xc5, 0x82, 0x7e, 0xf1, 0xf9, 0xb, - 0x28, 0xe4, 0xe0, 0x73, 0x82, 00, 0x1d, 0xac, 0xf8, 0xd7, - 0xe2, 0x34, 0x9a, 0x27, 0x84, 0x74, 0x3f, 0x10, 0xe8, 0x50, - 0x47, 0x7b, 0x6, 0xa5, 0x75, 0x12, 0x6c, 0x92, 0x36, 0x2c, - 0xd1, 0xba, 0x92, 0x42, 0x80, 0x46, 0x1f, 0x8c, 0x73, 0x9e, - 0x7b, 0x53, 0xfe, 0xbe, 0xf1, 0x2d, 0x76, 0x3d, 0xa, 0x8a, - 0xf2, 0xdd, 0x67, 0xc6, 0x9e, 0x3d, 0xf0, 0x9c, 0x56, 0xfa, - 0xe7, 0x88, 0x74, 0x5d, 0x14, 0x68, 0x32, 0x4c, 0xa9, 0x3c, - 0x16, 0x73, 0x48, 0xd7, 0x56, 0x8a, 0xfc, 0xd, 0xec, 0x7e, - 0x46, 0x20, 0x90, 0xe, 0xd1, 0x82, 0x7d, 0x33, 0x9a, 0xdd, - 0xf1, 0x87, 0x8b, 0xf5, 0x2d, 0x37, 0x5a, 0xd2, 0x7c, 0x39, - 0xe1, 0xeb, 0x4b, 0x49, 0xf5, 0x9d, 0x55, 0x5d, 0xe2, 0x92, - 0xf9, 0xd9, 0x60, 0x89, 0x13, 0x92, 0x58, 0x2f, 0xcc, 0xd9, - 00, 0xf0, 0x3d, 0x33, 0xed, 0x47, 0xfc, 0x30, 0x1d, 0xad, - 0x66, 0x69, 0x3e, 0x20, 0xd2, 0xf5, 0xd9, 0x2f, 0x93, 0x4d, - 0xba, 0xf3, 0xda, 0xc6, 0xe1, 0xad, 0xae, 0x47, 0x96, 0xcb, - 0xb2, 0x45, 0xea, 0xbf, 0x30, 0x19, 0xfa, 0x8c, 0x8a, 0xe7, - 0x34, 0x2d, 0x77, 0xc6, 0x76, 0xfe, 0x24, 0x8b, 0x45, 0xf1, - 0x56, 0x89, 0x68, 0xf1, 0xdc, 0xc6, 0xd2, 0x43, 0xa9, 0xe9, - 0x2, 0x56, 0xb7, 0x42, 0x3f, 0xe5, 0x9c, 0x9b, 0xc6, 0x54, - 0xf0, 0x79, 0x24, 0x3, 0x90, 00, 0x3c, 0xe2, 0x96, 0x99, - 0xe3, 0xcd, 0x52, 0xf7, 0x40, 0xf1, 0xc5, 0xfc, 0x90, 0x59, - 0x89, 0x74, 0x1b, 0x9b, 0x98, 0x6d, 0x42, 0xa3, 0x6d, 0x71, - 0x1a, 0x92, 0xbb, 0xfe, 0x6e, 0x4f, 0xae, 0x31, 0x49, 0xbb, - 0x6b, 0xe5, 0x71, 0xa5, 0x7d, 0x3c, 0xec, 0x7a, 0x1d, 0x15, - 0xe4, 0xfa, 0x77, 0x8c, 0x7e, 0x25, 0xeb, 0xfe, 0x14, 0x87, - 0xc4, 0x5a, 0x56, 0x87, 0xa1, 0x45, 0x6a, 0x20, 0xde, 0xd0, - 0xdd, 0x34, 0xbe, 0x75, 0xc9, 0x51, 0xf3, 0x34, 0x4a, 0xe, - 0x15, 0x49, 0xc8, 0x50, 0xc7, 0x27, 0x19, 0xe8, 0x45, 0x74, - 0x2b, 0xf1, 0x2b, 0x4f, 0x1f, 0xc, 0x22, 0xf1, 0xac, 0x96, - 0xd2, 0x2a, 0x4b, 0x1e, 0x12, 0xd0, 0x36, 0x59, 0xa6, 0xdc, - 0x53, 0xcb, 0x7, 0x1f, 0xde, 0x1d, 0x71, 0xd3, 0x9c, 0x76, - 0xa6, 0xd5, 0xaf, 0x7e, 0x82, 0x5a, 0xdb, 0xcc, 0xed, 0xe8, - 0xaf, 0x29, 0xd6, 0x3c, 0x63, 0xf1, 0x2b, 0xc3, 0x7e, 0x1d, - 0xb8, 0xd7, 0xf5, 0x5d, 0x7, 0x44, 0x7b, 0x23, 0x11, 0x65, - 0x82, 0xd5, 0xe5, 0x69, 0xed, 0x19, 0xbe, 0xe1, 0x98, 0x13, - 0xb5, 0xd4, 0x1c, 0x6, 0xda, 0x47, 0x5c, 0xf0, 0x5, 0x77, - 0xfe, 0x15, 0xd5, 0x67, 0xd7, 0x3c, 0x27, 0xa4, 0xea, 0xb7, - 0x29, 0x1a, 0x4f, 0x79, 0x6b, 0x1c, 0xd2, 0x2c, 0x40, 0x85, - 0xc, 0xca, 0x9, 0xc0, 0x24, 0x9c, 0x7e, 0x34, 0xed, 0xbf, - 0x90, 0xae, 0x6b, 0xd1, 0x45, 0x14, 0x86, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x15, 0x9d, 0xaa, 0x7f, 0xcb, 0xf, 0xab, - 0x7f, 0x2a, 0xd1, 0xac, 0xed, 0x57, 0xfe, 0x58, 0xfd, 0x5b, - 0xf9, 0x50, 0x5, 0xcb, 0x7f, 0xf5, 0x9, 0xf4, 0xa9, 0x6a, - 0x2b, 0x7f, 0xf5, 0x9, 0xf4, 0xa4, 0xba, 0xb9, 0x8a, 0xce, - 0xda, 0x4b, 0x89, 0x98, 0x2c, 0x71, 0xa9, 0x62, 0x4d, 00, - 0x53, 0xd6, 0xf5, 0xab, 0x5d, 0xb, 0x4e, 0x92, 0xf2, 0xe9, - 0xc2, 0xaa, 0x8e, 0x6, 0x7a, 0x9a, 0xf0, 0x9d, 0x6f, 0xc4, - 0x97, 0x5e, 0x24, 0xd4, 0x5a, 0x79, 0x98, 0x88, 0x41, 0xfd, - 0xdc, 0x79, 0xe0, 0xa, 0x83, 0xc6, 0xbe, 0x30, 0x9b, 0xc5, - 0x1a, 0xc3, 0x84, 0x62, 0x2c, 0xa2, 0x38, 0x8d, 0x3d, 0x7d, - 0xcd, 0x64, 0xdb, 0x38, 0x18, 0xad, 0xa1, 0x1b, 0x6a, 0x70, - 0x56, 0xaa, 0xe4, 0xec, 0x8d, 0xfb, 0x53, 0xd2, 0xb7, 0x6d, - 0x1b, 0xa5, 0x67, 0xe8, 0x3a, 0x1e, 0xa1, 0xab, 0x32, 0x8b, - 0x68, 0x1b, 0xcb, 0xcf, 0x2e, 0x47, 0x2, 0xbd, 0x2f, 0x48, - 0xf0, 0x44, 0x16, 0xaa, 0xaf, 0x76, 0xfe, 0x64, 0x83, 0xd3, - 0xa5, 0x39, 0x49, 0x20, 0xa7, 0x4d, 0xc8, 0xc6, 0xb0, 0x57, - 0x93, 0x1b, 0x14, 0xb7, 0xd2, 0xba, 0x1b, 0x58, 0x27, 00, - 0x13, 0x13, 0xa, 0xdf, 0x86, 0xce, 0xde, 0x5, 0x2, 0x38, - 0x95, 0x71, 0xe8, 0x2a, 0x7c, 0x56, 0x6e, 0x47, 0x54, 0x69, - 0xd8, 0xce, 0x80, 0x30, 0x18, 0x61, 0x83, 0xef, 0x56, 0xd0, - 0xe2, 0xbc, 0xc7, 0xe2, 0xd7, 0x89, 0x2e, 0x34, 0xc6, 0xb4, - 0xb5, 0xb0, 0x9c, 0xa4, 0xe7, 0xe6, 0x6d, 0xa7, 0xa7, 0xd6, - 0x97, 0xc0, 0x9f, 0x12, 0xd7, 0x55, 0x74, 0xd3, 0x75, 0x62, - 0x23, 0xb9, 0xe8, 0x92, 0x76, 0x6a, 0x2d, 0xa0, 0xb9, 0xd2, - 0x76, 0x3d, 0x4b, 0x34, 0x8c, 0xd8, 0xa8, 0x7c, 0xcc, 0x77, - 0xa6, 0xb4, 0x95, 0x36, 0x2e, 0xe6, 0x7f, 0x88, 0x9d, 0xd7, - 0x41, 0xbc, 0x68, 0xfe, 0xfe, 0xc2, 0x6, 0x2b, 0xe6, 0xbb, - 0x7f, 0xf, 0x6b, 0x37, 0x73, 0xca, 0xf0, 0xe9, 0xd3, 0xb8, - 0x2e, 0x4e, 0x42, 0xd7, 0xd3, 0x73, 0xc8, 0x84, 0x6d, 0x60, - 0x19, 0x4f, 0x50, 0x6a, 0xe5, 0xac, 0x70, 0x24, 0x40, 0xc1, - 0x1a, 0x22, 0x9e, 0xca, 0x31, 0x55, 0x7b, 0x10, 0xe1, 0xcc, - 0x7c, 0xce, 0x9a, 0x6, 0xad, 0x6d, 0xcc, 0xda, 0x7c, 0xe8, - 0x7, 0x72, 0xb5, 0x76, 0xd5, 0x4a, 0xb6, 0xd6, 0x4, 0x1f, - 0x42, 0x2b, 0xe8, 0xe9, 0x20, 0x8a, 0x51, 0x89, 0x23, 0x56, - 0x1e, 0xe2, 0xb2, 0x2f, 0xfc, 0x29, 0xa4, 0xea, 0xa, 0x43, - 0xdb, 0x2c, 0x67, 0xfb, 0xc8, 0x31, 0x4f, 0x9c, 0x8f, 0x61, - 0x6d, 0x8f, 0x24, 0xb3, 0x5e, 0x95, 0xbf, 0x66, 0xbd, 0x31, - 0x5a, 0x97, 0xbe, 0x6, 0x9e, 0xcc, 0x99, 0x2c, 0xdf, 0xcc, - 0x8c, 0x7f, 0x7, 0x7a, 0xa9, 0x5, 0xbc, 0x90, 0xc9, 0xb2, - 0x54, 0x28, 0xc3, 0xa8, 0x34, 0xee, 0x98, 0x28, 0xb5, 0xb9, - 0xd7, 0x68, 0x9a, 0x9b, 0x6d, 0x5b, 0x79, 0xcf, 0xfb, 0xac, - 0x6b, 0xa0, 0xae, 0x2e, 0xd5, 0x71, 0x8a, 0xea, 0x2c, 0x27, - 0x32, 0x46, 0x11, 0xfe, 0xf0, 0xa8, 0x68, 0xda, 0x2c, 0xb9, - 0x50, 0xdc, 0xff, 00, 0xab, 0xa9, 0xaa, 0x1b, 0x9f, 0xb9, - 0x52, 0x59, 0x35, 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, - 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0x1e, 0x67, - 0x6b, 0xff, 00, 0x21, 0x4d, 0x73, 0xfe, 0xc2, 0x73, 0x7f, - 0x4a, 0xef, 0x34, 0x4f, 0xf9, 0x3, 0xc1, 0xff, 00, 0x2, - 0xff, 00, 0xd0, 0x8d, 0x70, 0x76, 0xbf, 0xf2, 0x14, 0xd7, - 0x3f, 0xec, 0x27, 0x37, 0xf4, 0xae, 0xf3, 0x44, 0xff, 00, - 0x90, 0x3c, 0x1f, 0xf0, 0x2f, 0xfd, 0x8, 0xd0, 0x6, 0x7f, - 0x81, 0xff, 00, 0xe4, 0x4b, 0xd2, 0xff, 00, 0xeb, 0x97, - 0xfe, 0xcc, 0x6b, 0xa0, 0xae, 0x7f, 0xc0, 0xff, 00, 0xf2, - 0x25, 0xe9, 0x7f, 0xf5, 0xcb, 0xff, 00, 0x66, 0x35, 0xd0, - 0x50, 0x1, 0x5e, 0x65, 0xe3, 0xff, 00, 0x83, 0x56, 0x3e, - 0x3a, 0xf1, 0x14, 0x1a, 0xc1, 0xd5, 0x66, 0xb1, 0x90, 0x22, - 0xc7, 0x70, 0x8b, 0x10, 0x90, 0x4a, 0xaa, 0x78, 0xda, 0x49, - 0x1b, 0x4e, 0x32, 0x33, 0xc8, 0xe9, 0xc7, 0x5c, 0xfa, 0x6d, - 0x14, 0xac, 0x9e, 0xa3, 0xb9, 0x5e, 0xc6, 0xce, 0x1d, 0x3b, - 0x4f, 0xb6, 0xb2, 0xb7, 0x4, 0x41, 0x6f, 0x12, 0xc5, 0x18, - 0x27, 0x24, 0x2a, 0x8c, 0xe, 0x7e, 0x82, 0xac, 0x51, 0x45, - 0x53, 0x77, 0x77, 0x64, 0xa5, 0x65, 0x64, 0x15, 0x97, 0xe2, - 0x5d, 0x27, 0xfb, 0x77, 0xc3, 0x1a, 0xa6, 0x92, 0x8, 0x56, - 0xbc, 0xb5, 0x92, 0x15, 0x66, 0xe8, 0x19, 0x94, 0x80, 0x7f, - 0x3c, 0x56, 0xa5, 0x15, 0x32, 0x57, 0x56, 0x29, 0x3b, 0x3b, - 0x9c, 0x17, 0xc2, 0xcf, 0x12, 0x5a, 0xdf, 0xf8, 0x5e, 0xd3, - 0x41, 0xb8, 0x91, 0x20, 0xd7, 0x34, 0x98, 0xbe, 0xc9, 0x77, - 0x63, 0x21, 0xdb, 0x2a, 0x79, 0x78, 0x5d, 0xdb, 0x4f, 0x25, - 0x71, 0xb7, 0x91, 0xc6, 0x4d, 0x4d, 0xe2, 0xff, 00, 0x1c, - 0xc9, 0xa5, 0x6b, 0x3a, 0x67, 0x87, 0xb4, 0x5, 0xb5, 0xbf, - 0xd7, 0xef, 0x2e, 0x91, 0x24, 0xb6, 0x7c, 0xb0, 0x82, 0x1e, - 0xac, 0xef, 0xb4, 0xfc, 0xbc, 0x60, 0x8c, 0xf6, 0xe7, 0x7, - 0x15, 0xa5, 0xe2, 0x2f, 0x87, 0xde, 0x14, 0xf1, 0x5d, 0xc2, - 0xdc, 0x6b, 0x3a, 0x2c, 0x17, 0x17, 0xb, 0xff, 00, 0x2d, - 0x95, 0x9a, 0x29, 0x1b, 0x8c, 0x61, 0x99, 0x8, 0x2c, 0x3d, - 0x1, 0x27, 0x15, 0x3f, 0x87, 0x3c, 0x17, 0xe1, 0xcf, 0x9, - 0x24, 0x8b, 0xa1, 0xe9, 0x50, 0x5a, 0x19, 0x3e, 0xfc, 0x80, - 0x97, 0x91, 0x87, 0x1c, 0x17, 0x62, 0x5b, 0x1c, 0x74, 0xce, - 0x2a, 0xae, 0xe4, 0xef, 0x2f, 0xf8, 0x72, 0x6d, 0x65, 0x68, - 0x9c, 0x85, 0xb5, 0xcc, 0x3a, 0x2f, 0xc7, 0xdd, 0x49, 0x35, - 0x7, 0x58, 0x86, 0xb1, 0xa6, 0xc3, 0xf6, 0x29, 0x24, 0x20, - 0x7, 0x64, 0x21, 0x4c, 0x60, 0xff, 00, 0x78, 0xe3, 0x38, - 0xff, 00, 0xeb, 0x51, 0xf1, 0xa, 0xe6, 0x1d, 0x53, 0xc7, - 0xfe, 0x9, 0xd0, 0xac, 0xe4, 0x59, 0x35, 0x8, 0x35, 0x1f, - 0xb6, 0xcc, 0xa8, 0x41, 0x30, 0xc4, 0x8b, 0x92, 0x5b, 0xd3, - 0x3d, 0xbd, 0x71, 0x5d, 0xbf, 0x88, 0x3c, 0x31, 0xa2, 0xf8, - 0xaa, 0xc0, 0x59, 0x6b, 0x7a, 0x7c, 0x57, 0x90, 0x3, 0xb9, - 0x43, 0xe4, 0x32, 0x1f, 0x55, 0x60, 0x43, 0x2f, 0xe0, 0x46, - 0x7a, 0x55, 0x6f, 0xd, 0xf8, 0x2b, 0xc3, 0x9e, 0x11, 0x49, - 0x46, 0x85, 0xa5, 0x43, 0x68, 0xd2, 0x9f, 0x9e, 0x4c, 0xb3, - 0xbb, 0xe, 0x38, 0xde, 0xc4, 0xb6, 0x38, 0x1c, 0x67, 0x14, - 0xa3, 0xa5, 0xaf, 0xd3, 0xfc, 0xef, 0xf9, 0x8e, 0x5a, 0xde, - 0xdd, 0x7f, 0xca, 0xc7, 0x27, 0xf0, 0x97, 0xfe, 0x3f, 0xfc, - 0x71, 0xff, 00, 0x63, 0x4, 0xff, 00, 0xd2, 0xa5, 0xf8, - 0x5b, 0xff, 00, 0x21, 0x7f, 0x1d, 0xff, 00, 0xd8, 0xc1, - 0x3f, 0xf4, 0xae, 0xcf, 0x49, 0xf0, 0xfe, 0x97, 0xa1, 0x49, - 0x7c, 0xfa, 0x6d, 0xaf, 0x90, 0xd7, 0xd7, 0xd, 0x73, 0x72, - 0x7c, 0xc6, 0x6d, 0xf2, 0x37, 0x56, 0xf9, 0x89, 0xc7, 0xd0, - 0x60, 0x52, 0xe9, 0x7a, 0xe, 0x99, 0xa2, 0xcd, 0x7f, 0x2e, - 0x9f, 0x6d, 0xe4, 0xbd, 0xfd, 0xc3, 0x5d, 0x5c, 0x9f, 0x31, - 0x9b, 0xcc, 0x91, 0xba, 0xb7, 0x24, 0xe3, 0xe8, 0x30, 0x28, - 0x5a, 0x5b, 0xd2, 0xdf, 0x97, 0xf9, 0xe, 0x4e, 0xf7, 0xf5, - 0xbf, 0xe7, 0xfe, 0x67, 0x7, 0xf0, 0xcb, 0xfe, 0x43, 0x1f, - 0x10, 0xff, 00, 0xec, 0x37, 0x37, 0xf5, 0xa9, 0xbe, 0x7, - 0x7f, 0xc9, 0x2d, 0xb4, 0xff, 00, 0xaf, 0x8b, 0x8f, 0xfd, - 0x18, 0x6b, 0xb4, 0xd3, 0x3c, 0x3b, 0xa5, 0x68, 0xd3, 0x6a, - 0x33, 0x58, 0x5a, 0xf9, 0x32, 0x6a, 0x33, 0x9b, 0x8b, 0xa3, - 0xe6, 0x33, 0x79, 0x92, 0x1e, 0xa7, 0x92, 0x71, 0xf4, 0x18, - 0x14, 0xed, 0xf, 0x40, 0xd3, 0x3c, 0x37, 0xa5, 0xa6, 0x99, - 0xa4, 0xdb, 0x7d, 0x9e, 0xcd, 0x19, 0x99, 0x63, 0xf3, 0x19, - 0xf0, 0x58, 0xe4, 0xf2, 0xc4, 0x9e, 0xa7, 0xd6, 0x92, 0x5a, - 0x35, 0xe4, 0x97, 0xdc, 0x12, 0x77, 0xfb, 0xdb, 0xfc, 0xff, - 00, 0xcc, 0xe2, 0xfe, 0x8, 0xff, 00, 0xc9, 0x31, 0xb6, - 0xff, 00, 0xaf, 0x9b, 0x8f, 0xfd, 0x18, 0xd5, 0xe6, 0x29, - 0x6b, 0x34, 0xff, 00, 0xb3, 0xc5, 0xbd, 0xcc, 0x7f, 0x68, - 0xf2, 0xac, 0xb5, 0xc3, 0x71, 0x39, 0xb7, 0x38, 0x90, 0x46, - 0x1c, 0x82, 0x41, 0xec, 0x46, 0xe0, 0x73, 0xdb, 0x19, 0xaf, - 0xa0, 0xb4, 0x4d, 0x7, 0x4c, 0xf0, 0xe6, 0x96, 0xba, 0x6e, - 0x93, 0x6d, 0xf6, 0x7b, 0x45, 0x66, 0x71, 0x1f, 0x98, 0xcf, - 0x82, 0xc7, 0x27, 0x96, 0x24, 0xf5, 0x3e, 0xb4, 0xcd, 0x1f, - 0xc3, 0x7a, 0x46, 0x83, 0xa3, 0xb6, 0x93, 0xa7, 0x59, 0x2c, - 0x56, 0xc, 0x5d, 0x9a, 0x7, 0x66, 0x90, 0x36, 0xef, 0xbd, - 0x9d, 0xe4, 0x92, 0xf, 0xa5, 0x37, 0xbd, 0xfc, 0x97, 0xe1, - 0x6f, 0xf2, 0x1b, 0x96, 0xfe, 0x6d, 0xbf, 0x93, 0xbf, 0xf9, - 0x9e, 0x7f, 0x37, 0x82, 0x74, 0x46, 0xf0, 0xdb, 0xeb, 0x33, - 0xfc, 0x4b, 0xf1, 0x7b, 0x68, 0xed, 0xe, 0xf6, 0xb8, 0x6d, - 0x68, 0x18, 0xd9, 0xf, 0x18, 0xfb, 0x9c, 0xe7, 0xa6, 0x3d, - 0x78, 0xeb, 0x59, 0x3e, 0x2c, 0xb3, 0xd2, 0xac, 0x3e, 0x1e, - 0x78, 0xe, 0xdf, 0x44, 0xb9, 0xb9, 0xb9, 0xd3, 0x17, 0x5b, - 0xb6, 0x6b, 0x69, 0xae, 0x54, 0xab, 0xba, 0x12, 0xe7, 0x24, - 0x15, 0x5f, 0x5e, 0x38, 0x1c, 0x62, 0xbb, 0x58, 0xfe, 0x11, - 0x78, 0xa, 0x2d, 0x4b, 0xed, 0xeb, 0xe1, 0xbb, 0x63, 0x36, - 0xf3, 0x26, 0xd6, 0x92, 0x46, 0x8b, 0x27, 0xfe, 0x99, 0x96, - 0xd9, 0x8f, 0x6c, 0x63, 0xda, 0xba, 0x3d, 0x63, 0xc3, 0xda, - 0x56, 0xbd, 0x15, 0xa4, 0x5a, 0x95, 0xa0, 0x99, 0x2d, 0x27, - 0x4b, 0x98, 0x14, 0x3b, 0x26, 0xc9, 0x17, 0xee, 0x9f, 0x94, - 0x8c, 0xe3, 0x3d, 0xf, 0x14, 0xff, 00, 0xcd, 0x3f, 0xb9, - 0x91, 0xfe, 0x4d, 0x7d, 0xe8, 0xe2, 0x7e, 0x2a, 0xca, 0xba, - 0x76, 0xab, 0xe0, 0xcd, 0x6e, 0xe4, 0x95, 0xd3, 0xec, 0x75, - 0x65, 0xfb, 0x4b, 0x9f, 0xbb, 0x18, 0x71, 0x80, 0xc7, 0xd0, - 0xc, 0x1a, 0xe8, 0x7c, 0x59, 0xe3, 0x28, 0xfc, 0x36, 0x74, - 0x8b, 0x7b, 0x5b, 0x55, 0xd4, 0x6f, 0xf5, 0x5b, 0xa4, 0xb7, - 0xb7, 0xb5, 0x49, 0xb6, 0x16, 0x53, 0xf7, 0xa4, 0xce, 0xf, - 0xca, 0xbc, 0x67, 0x8e, 0xfd, 0x6b, 0xa1, 0xbd, 0xb1, 0xb5, - 0xd4, 0xac, 0xe5, 0xb3, 0xbe, 0xb6, 0x8a, 0xe6, 0xda, 0x51, - 0xb6, 0x48, 0xa5, 0x40, 0xca, 0xc3, 0xdc, 0x1a, 0xe7, 0xbc, - 0x3d, 0xf0, 0xe7, 0xc2, 0x5e, 0x15, 0xbd, 0x6b, 0xdd, 0x1b, - 0x45, 0x8a, 0xde, 0xe8, 0x8d, 0xa2, 0x56, 0x91, 0xe5, 0x65, - 0x1c, 0xfd, 0xd2, 0xec, 0x76, 0xe7, 0x3c, 0xe3, 0x19, 0xa5, - 0x1d, 0x34, 0x7b, 0x5e, 0xff, 00, 0x96, 0x9f, 0x80, 0xe5, - 0xdd, 0x6f, 0x6b, 0x7e, 0x7f, 0xe6, 0x73, 0x97, 0x1f, 0xf2, - 0x71, 0x76, 0xbf, 0xf6, 0x2f, 0xb7, 0xfe, 0x8d, 0x35, 0x8d, - 0xe1, 0x8b, 0x4b, 0xff, 00, 0x89, 0x30, 0xea, 0xba, 0xee, - 0xaf, 0xe3, 0x3d, 0x67, 0x4c, 0x58, 0x2e, 0xa4, 0xb7, 0x5d, - 0x3f, 0x4b, 0xbb, 0x16, 0xc9, 0x6b, 0x1a, 0x13, 0xfe, 0xb3, - 0x83, 0xb8, 0x90, 0x7a, 0x9f, 0x4e, 0xa7, 0xb7, 0xa8, 0xb7, - 0x87, 0xf4, 0xb6, 0xf1, 0x1a, 0x78, 0x80, 0xda, 0xe7, 0x54, - 0x4b, 0x7f, 0xb3, 0x2c, 0xfe, 0x63, 0x71, 0x1e, 0x73, 0xb7, - 0x6e, 0x76, 0xf5, 0xef, 0x8c, 0xd6, 0x1e, 0xa9, 0xf0, 0xb7, - 0xc1, 0x5a, 0xce, 0xae, 0xfa, 0xad, 0xf6, 0x81, 0x4, 0x97, - 0x8e, 0xc1, 0xdd, 0xd6, 0x49, 0x11, 0x5d, 0xb3, 0x9c, 0xb2, - 0xab, 0x5, 0x24, 0xf7, 0xc8, 0xe7, 0xbe, 0x69, 0x25, 0xb7, - 0xcf, 0xf3, 0xb8, 0xdb, 0xbd, 0xdf, 0xa7, 0xe0, 0xac, 0x70, - 0x5f, 0x8, 0x57, 0x45, 0x8b, 0xc6, 0x9e, 0x3a, 0x87, 0xc3, - 0xf8, 0xfe, 0xcb, 0x8c, 0x42, 0x96, 0xf8, 0x90, 0xbe, 0xe0, - 0xa1, 0xc1, 0x60, 0xc4, 0x92, 0x41, 0x6c, 0x9c, 0xfb, 0xd7, - 0x4b, 0xf0, 0x37, 0xfe, 0x49, 0x7d, 0x9f, 0xfd, 0x7c, 0x4f, - 0xff, 00, 0xa3, 0xd, 0x75, 0xd6, 0x1e, 0x14, 0xd0, 0xf4, - 0xad, 0x52, 0xe3, 0x52, 0xb0, 0xd3, 0xa2, 0xb5, 0xb9, 0xb8, - 0x85, 0x2d, 0xe5, 0x30, 0x92, 0xa8, 0x63, 0x50, 0x2, 0xa8, - 0x40, 0x76, 0x8c, 00, 0x7, 00, 0x54, 0xfa, 0x16, 0x83, - 0xa6, 0x78, 0x6b, 0x4b, 0x4d, 0x37, 0x48, 0xb6, 0xfb, 0x35, - 0x9a, 0x33, 0x32, 0xc7, 0xe6, 0x33, 0xe0, 0xb1, 0xc9, 0xe5, - 0x89, 0x3d, 0x7d, 0xea, 0x93, 0xef, 0xda, 0xdf, 0x88, 0x9e, - 0xbf, 0x7d, 0xff, 00, 0x3, 0x86, 0xf8, 0xc9, 0xff, 00, - 0x1e, 0x1e, 0x16, 0xff, 00, 0xb1, 0x82, 0xd7, 0xff, 00, - 0x66, 0xa2, 0xe3, 0xfe, 0x4e, 0x2e, 0xd7, 0xfe, 0xc5, 0xf6, - 0xff, 00, 0xd1, 0xa6, 0xbb, 0x8d, 0x67, 0xc3, 0xfa, 0x5f, - 0x88, 0x23, 0xb5, 0x4d, 0x52, 0xd7, 0xed, 0xb, 0x6b, 0x70, - 0xb7, 0x30, 0x8f, 0x31, 0x93, 0x6c, 0x8b, 0xf7, 0x5b, 0xe5, - 0x23, 0x3d, 0x7a, 0x1e, 0x28, 0x6f, 0xf, 0xe9, 0x6d, 0xe2, - 0x34, 0xf1, 0x1, 0xb5, 0xce, 0xa8, 0x96, 0xff, 00, 0x66, - 0x59, 0xfc, 0xc6, 0xe2, 0x3c, 0xe7, 0x6e, 0xdc, 0xed, 0xeb, - 0xdf, 0x19, 0xa9, 0x5a, 0x7d, 0xef, 0xf1, 0x56, 0x1b, 0x77, - 0x5f, 0x25, 0xf9, 0xdc, 0xe1, 0xfe, 0xf, 0x5c, 0xc5, 0x69, - 0xa5, 0xeb, 0xda, 0x25, 0xc3, 0x88, 0xf5, 0xd, 0x3f, 0x55, - 0x9c, 0xdc, 0x46, 0xe7, 0xd, 0xb5, 0x8e, 0x55, 0xf9, 0x3d, - 0xe, 0xf, 0x3e, 0xd5, 0xcd, 0x7c, 0x41, 0xf1, 0x24, 0xbe, - 0x36, 0xf8, 0x7f, 0xa8, 0x6a, 0x36, 0x76, 0x57, 0x11, 0x69, - 0x5a, 0x46, 0xb7, 0x18, 0x5b, 0xbb, 0x69, 0xf2, 0xd7, 0x31, - 0x21, 0x21, 0xa4, 0x4f, 0x97, 0xe5, 00, 0xb2, 0x90, 0x7e, - 0x61, 0xf9, 0x57, 0xa4, 0xf8, 0x8b, 0xe1, 0xdf, 0x84, 0xfc, - 0x57, 0x78, 0x97, 0x9a, 0xd6, 0x8d, 0x15, 0xc5, 0xca, 0x8d, - 0xbe, 0x6a, 0xc8, 0xf1, 0x33, 0xe, 0x3e, 0xf1, 0x46, 0x1b, - 0xb1, 0x8e, 0x33, 0x9c, 0x76, 0xad, 0xcb, 0x5d, 0x2e, 0xc2, - 0xcb, 0x4c, 0x5d, 0x36, 0xda, 0xca, 0xde, 0x2b, 0x15, 0x43, - 0x18, 0xb7, 0x48, 0xc0, 0x8f, 0x69, 0xea, 0x36, 0xf4, 0xe7, - 0x27, 0x3e, 0xb9, 0xa2, 0xde, 0xea, 0xbf, 0x4b, 0x7e, 0x16, - 0xff, 00, 0x2f, 0xc4, 0x36, 0x6e, 0xdd, 0x6f, 0xf8, 0xdf, - 0xfc, 0xcf, 0x35, 0x9b, 0xc1, 0x3a, 0x23, 0x78, 0x6d, 0xf5, - 0x99, 0xfe, 0x25, 0xf8, 0xbd, 0xb4, 0x76, 0x87, 0x7b, 0x5c, - 0x36, 0xb4, 0xc, 0x6c, 0x87, 0x8c, 0x7d, 0xce, 0x73, 0xd3, - 0x1e, 0xbc, 0x75, 0xac, 0x9f, 0x16, 0x59, 0xe9, 0x56, 0x1f, - 0xf, 0x3c, 0x7, 0x6f, 0xa2, 0x5c, 0xdc, 0xdc, 0xe9, 0x8b, - 0xad, 0xdb, 0x35, 0xb4, 0xd7, 0x2a, 0x55, 0xdd, 0x9, 0x73, - 0x92, 0xa, 0xaf, 0xaf, 0x1c, 0xe, 0x31, 0x5d, 0xac, 0x7f, - 0x8, 0xbc, 0x5, 0x16, 0xa5, 0xf6, 0xf5, 0xf0, 0xdd, 0xb1, - 0x9b, 0x79, 0x93, 0x6b, 0x49, 0x23, 0x45, 0x93, 0xff, 00, - 0x4c, 0xcb, 0x6c, 0xc7, 0xb6, 0x31, 0xed, 0x5d, 0x1e, 0xb1, - 0xe1, 0xed, 0x2b, 0x5e, 0x8a, 0xd2, 0x2d, 0x4a, 0xd0, 0x4c, - 0x96, 0x93, 0xa5, 0xcc, 0xa, 0x1d, 0x93, 0x64, 0x8b, 0xf7, - 0x4f, 0xca, 0x46, 0x71, 0x9e, 0x87, 0x8a, 0xaf, 0xf3, 0x4f, - 0xee, 0x64, 0xff, 00, 0x93, 0x5f, 0x7a, 0x38, 0xdf, 0x8e, - 0x5f, 0xf2, 0x4a, 0x75, 0x2f, 0xfa, 0xeb, 0x7, 0xfe, 0x8d, - 0x5a, 0x8b, 0xc6, 0xf6, 0x9e, 0x13, 0xd7, 0x35, 0x4f, 0xe, - 0x68, 0x1e, 0x20, 0x17, 0xd6, 0x7a, 0x85, 0xc2, 0x79, 0x9a, - 0x6e, 0xa7, 0x6e, 0xe2, 0x2f, 0x2d, 0xc6, 0xdc, 0xa0, 0x72, - 0x4f, 0xcc, 0x70, 0xb8, 0x5, 0x4f, 0x51, 0x82, 0x9, 0x15, - 0xdc, 0xeb, 0xba, 0xe, 0x9b, 0xe2, 0x5d, 0x26, 0x5d, 0x2f, - 0x57, 0xb6, 0xfb, 0x4d, 0x9c, 0xa5, 0x59, 0xe3, 0xde, 0xc9, - 0x92, 0xa4, 0x11, 0xca, 0x90, 0x7a, 0x81, 0xde, 0xa3, 0xd6, - 0xfc, 0x35, 0xa3, 0x78, 0x8f, 0x4b, 0xfe, 0xcd, 0xd5, 0xf4, - 0xf8, 0xae, 0xed, 0x6, 0xa, 0xa4, 0x99, 0xca, 0x11, 0xc6, - 0x55, 0x87, 0x2a, 0x71, 0xc6, 0x41, 0x6, 0x92, 0xdb, 0xe7, - 0x7f, 0xc0, 0xa7, 0xab, 0x5e, 0x96, 0x3c, 0xde, 0x16, 0xf1, - 0x3f, 0xc3, 0xff, 00, 0x1b, 0xe8, 0x1a, 0x34, 0x9e, 0x2a, - 0x97, 0xc4, 0x3a, 0x76, 0xaf, 0x71, 0x22, 0x1b, 0x4b, 0xc4, - 0xcd, 0xcc, 0x9, 0xc1, 0x12, 0x6f, 0xc9, 0x66, 00, 0x75, - 0x3c, 0x2f, 0x7, 0xe5, 0xe7, 0x8a, 0x3a, 0xf, 0xfc, 0x89, - 0xdf, 0x16, 0x7f, 0xeb, 0xfe, 0xfb, 0xff, 00, 0x40, 0x35, - 0xe8, 0xde, 0x1c, 0xf8, 0x7f, 0xe1, 0x5f, 0x9, 0xdc, 0x49, - 0x71, 0xa2, 0x68, 0xf0, 0xdb, 0x5c, 0x38, 0xc1, 0x99, 0x9d, - 0xe5, 0x70, 0x3d, 0x3, 0x39, 0x25, 0x47, 0xa8, 0x18, 0xcd, - 0x5a, 0x83, 0xc2, 0x3a, 0x1d, 0xad, 0x9e, 0xad, 0x69, 0xd, - 0x8e, 0xd8, 0x35, 0x79, 0x1e, 0x4b, 0xe4, 0xf3, 0x5c, 0xf9, - 0xac, 0xe3, 0xc, 0x72, 0x5b, 0x2b, 0x91, 0xfd, 0xdc, 0x52, - 0x92, 0xbc, 0x5a, 0xf2, 0x6b, 0xf2, 0xff, 00, 0x21, 0xc5, - 0xda, 0x49, 0xf9, 0xa7, 0xf9, 0xff, 00, 0x99, 0x95, 0xe0, - 0x1f, 0xf9, 0x24, 0xda, 0x27, 0xfd, 0x83, 0x17, 0xff, 00, - 0x41, 0xaf, 0x27, 0xb2, 0x8e, 0x45, 0xfd, 0x9d, 0xfc, 0x3d, - 0x7e, 0xa8, 0xf2, 0x41, 0xa7, 0x6a, 0xeb, 0x77, 0x72, 0xa8, - 0xb9, 0x26, 0x25, 0x99, 0xc1, 0xe3, 0xd3, 0x90, 0x6b, 0xdf, - 0x34, 0xfd, 0x2a, 0xcb, 0x4b, 0xd2, 0x60, 0xd2, 0xec, 0xe1, - 0xf2, 0xac, 0xa0, 0x88, 0x43, 0x1c, 0x5b, 0x8b, 0x6d, 0x40, - 0x31, 0x8c, 0x92, 0x49, 0xfc, 0xeb, 0x95, 0xf1, 0x7, 0x85, - 0xef, 0x74, 0x7f, 0x87, 0x73, 0x68, 0xbe, 0x4, 0x82, 0xb, - 0x79, 0x23, 0x39, 0x8e, 0xd6, 0x7c, 0x4a, 0x93, 0x23, 0x31, - 0x32, 0x46, 0x7c, 0xdd, 0xc3, 0xe6, 0x4, 0xf5, 0xe3, 0xb7, - 0x15, 0x52, 0x96, 0xb2, 0x92, 0xea, 0xd7, 0xe0, 0xee, 0x4c, - 0x57, 0xba, 0xa2, 0xfc, 0xff, 00, 0x15, 0x62, 0x3f, 0x89, - 0x7a, 0xfe, 0x94, 0x9f, 0xa, 0x35, 0x5b, 0xcf, 0xb6, 0x40, - 0xf6, 0xf7, 0xf6, 0x66, 0x2b, 0x56, 0x57, 0x4, 0x4c, 0xce, - 0x30, 0xbb, 0x7d, 0x7d, 0x7e, 0x80, 0xfa, 0x56, 0xaf, 0xc3, - 0xcf, 0xf9, 0x27, 0x3e, 0x1c, 0xff, 00, 0xb0, 0x74, 0x3f, - 0xfa, 00, 0xaf, 0x22, 0x6d, 0x13, 0x4d, 0xd4, 0xac, 0x6e, - 0x6c, 0xfc, 0x35, 0xf0, 0xaf, 0x59, 0xd3, 0x3c, 0x41, 0xa8, - 0xc0, 0xd0, 0x49, 0x75, 0xa8, 0x44, 0xe9, 0x6b, 0x6a, 0x1c, - 0x7e, 0xf1, 0x91, 0xdd, 0x88, 0xe0, 0x64, 0xd, 0xaa, 0xa4, - 0x83, 0xc0, 0xec, 0x7d, 0xcf, 0x43, 0xd3, 0x17, 0x45, 0xd0, - 0x74, 0xfd, 0x2d, 0x18, 0x32, 0xd9, 0xdb, 0x47, 00, 0x60, - 0x31, 0x9d, 0xaa, 0x6, 0x7f, 0x4a, 0x6b, 0x44, 0xfc, 0xed, - 0xfa, 0xff, 00, 0x9e, 0xe2, 0xec, 0xbd, 0x7f, 0x42, 0xfd, - 0x14, 0x51, 0x52, 0x30, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, - 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, - 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, - 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, - 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, - 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, - 0xac, 0xed, 0x57, 0xfe, 0x58, 0xfd, 0x5b, 0xf9, 0x56, 0x8d, - 0x67, 0x6a, 0xbf, 0xf2, 0xc3, 0xea, 0xdf, 0xca, 0x80, 0x2e, - 0x5b, 0xff, 00, 0xa8, 0x4f, 0xa5, 0x79, 0x47, 0xc6, 0x3f, - 0x16, 0x35, 0xb4, 0x11, 0xe8, 0x76, 0x92, 0x61, 0xe5, 0xe6, - 0x62, 0xa7, 0x95, 0xaf, 0x54, 0x57, 0xf2, 0xac, 0x4c, 0x9f, - 0xdd, 0x42, 0xdf, 0x90, 0xaf, 0x96, 0x35, 0xcb, 0x9b, 0xbf, - 0x16, 0x78, 0xe6, 0xe8, 0xdb, 0x2b, 0x4b, 0x2c, 0xb2, 0xec, - 0x50, 0x39, 0xc6, 0xd, 0x54, 0x48, 0xa8, 0xf4, 0xb1, 0x4e, - 0xca, 0x19, 0x6e, 0x66, 0x48, 0x2d, 0xe3, 0x69, 0x24, 0x73, - 0x80, 0xaa, 0x3b, 0xd7, 0xb2, 0x78, 0x3b, 0xe1, 0x86, 0xc4, - 0x8e, 0xf3, 0x5a, 0xce, 0xee, 0xab, 0xf, 0xa7, 0xd6, 0xb7, - 0x7c, 0x9, 0xf0, 0xfa, 0xd3, 0xc3, 0x56, 0x89, 0x73, 0x72, - 0x8b, 0x2d, 0xfb, 0xc, 0xb3, 0x11, 0x9d, 0xbe, 0xd5, 0xdd, - 0x55, 0x39, 0xf4, 0x46, 0x50, 0xa0, 0xb7, 0x64, 0x36, 0xd6, - 0xb0, 0x5a, 0x44, 0x22, 0x82, 0x25, 0x8d, 00, 0xc6, 0x14, - 0x62, 0xa6, 0xa2, 0x8a, 0xcc, 0xe8, 0xd8, 0x2b, 0x2b, 0x5e, - 0xd7, 0x6d, 0xb4, 0x2d, 0x3d, 0xee, 0x27, 0x61, 0xbb, 0x1f, - 0x22, 0xf7, 0x26, 0x99, 0xad, 0x78, 0x86, 0xd7, 0x48, 0x81, - 0xb2, 0x43, 0xcd, 0x8f, 0x95, 0x1, 0xaf, 0x22, 0xd7, 0xb5, - 0xb, 0xbd, 0x6a, 0xe9, 0xa6, 0xb9, 0x72, 0x47, 0xf0, 0xa7, - 0x61, 0x55, 0x18, 0xdc, 0xca, 0xa5, 0x4e, 0x55, 0xa1, 0xcb, - 0x6b, 0xd7, 0xd7, 0x1a, 0xd6, 0xa9, 0x35, 0xf5, 0xc1, 0x25, - 0x9c, 0xf0, 0x3d, 0x5, 0x63, 0x85, 0x92, 0x19, 0x92, 0x68, - 0x89, 0x59, 0x10, 0xe5, 0x48, 0xec, 0x6b, 0xa0, 0x9a, 0xdb, - 0xda, 0xa9, 0xbd, 0xae, 0x7b, 0x56, 0xc7, 0x13, 0xbd, 0xee, - 0x7b, 0x3f, 0x82, 0xfc, 0x48, 0x75, 0xad, 0x2, 0x37, 0x91, - 0xb3, 0x34, 0x5f, 0x23, 0xe7, 0xbd, 0x6f, 0xb5, 0xd7, 0x1d, - 0x6b, 0xc8, 0x7c, 0x3, 0x74, 0xd6, 0x3a, 0x94, 0xb0, 0x13, - 0x88, 0xdd, 0x78, 0x1e, 0xf5, 0xe8, 0x6d, 0x77, 0xef, 0x50, - 0xd1, 0xd1, 0x9, 0xdd, 0x1a, 0x13, 0x5c, 0xf0, 0x79, 0xa9, - 0x34, 0xdd, 0x5d, 0x61, 0x97, 0xc9, 0x99, 0xb0, 0x8d, 0xd0, - 0xfa, 0x56, 0xc, 0xb7, 0x7c, 0x1e, 0x6b, 0x3a, 0x7b, 0xac, - 0xf7, 0xa2, 0xd7, 0x1f, 0x3d, 0x8f, 0x51, 0x4, 0x30, 0x4, - 0x1c, 0x83, 0x4b, 0x5e, 0x7d, 0xa3, 0xf8, 0xbd, 0xac, 0x5c, - 0x41, 0x78, 0x77, 0x43, 0xd0, 0x37, 0xf7, 0x6b, 0xba, 0xb5, - 0xbb, 0x82, 0xf2, 0x15, 0x96, 0xde, 0x45, 0x74, 0x6e, 0x78, - 0x35, 0x9b, 0x4d, 0x1b, 0x46, 0x6a, 0x44, 0xf5, 0x52, 0xef, - 0x4e, 0xb7, 0xbb, 0x5f, 0x9d, 0x6, 0xef, 0xef, 0xe, 0xb5, - 0x6e, 0x8a, 0x45, 0x9c, 0xf3, 0xe9, 0xb2, 0x5a, 0x3f, 0x1f, - 0x32, 0x7a, 0xd5, 0xdb, 0x50, 0x54, 0x82, 0x3a, 0xd6, 0x99, - 0x1, 0x86, 0x8, 0xc8, 0xa8, 0x45, 0xb8, 0x46, 0xca, 0xf4, - 0xa7, 0x72, 0x79, 0x6c, 0x4c, 0xe, 0x45, 0x43, 0x73, 0xf7, - 0x2a, 0x60, 0x30, 0x2a, 0x1b, 0x9f, 0xb9, 0x48, 0xa2, 0x7a, - 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa2, - 0x80, 0xa, 0x28, 0xa2, 0x80, 0x3c, 0xce, 0xd7, 0xfe, 0x42, - 0x9a, 0xe7, 0xfd, 0x84, 0xe6, 0xfe, 0x95, 0xde, 0x68, 0x9f, - 0xf2, 0x7, 0x83, 0xfe, 0x5, 0xff, 00, 0xa1, 0x1a, 0xe0, - 0xed, 0x7f, 0xe4, 0x29, 0xae, 0x7f, 0xd8, 0x4e, 0x6f, 0xe9, - 0x5d, 0xe6, 0x89, 0xff, 00, 0x20, 0x78, 0x3f, 0xe0, 0x5f, - 0xfa, 0x11, 0xa0, 0xc, 0xff, 00, 0x3, 0xff, 00, 0xc8, - 0x97, 0xa5, 0xff, 00, 0xd7, 0x2f, 0xfd, 0x98, 0xd7, 0x41, - 0x5c, 0xff, 00, 0x81, 0xff, 00, 0xe4, 0x4b, 0xd2, 0xff, - 00, 0xeb, 0x97, 0xfe, 0xcc, 0x6b, 0xa0, 0xa0, 0x2, 0x8a, - 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, - 0x2, 0x8a, 0xe0, 0xee, 0xfe, 0x22, 0xdc, 0xde, 0xea, 0x57, - 0x36, 0x1e, 0xf, 0xf0, 0xd5, 0xdf, 0x88, 0xa4, 0xb4, 0x90, - 0xc7, 0x73, 0x70, 0xb3, 0xa5, 0xb5, 0xb2, 0x30, 0xea, 0xab, - 0x2b, 0xe4, 0x33, 0x2, 0x47, 00, 0x7b, 0xe4, 0xd4, 0xba, - 0x27, 0xc4, 0x27, 0x9f, 0x5f, 0x8b, 0xc3, 0xfe, 0x25, 0xd0, - 0xae, 0x7c, 0x3f, 0xab, 0xce, 0xb, 0x5b, 0x47, 0x2c, 0xab, - 0x34, 0x37, 00, 0xc, 0xe1, 0x25, 0x5e, 0xb, 0x75, 0xe3, - 0x1f, 0x8e, 0x78, 0xa1, 0x6b, 0xb0, 0x3d, 0x37, 0x3b, 0x7a, - 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa2, - 0x80, 0xa, 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa2, 0x80, 0xa, - 0x28, 0xa2, 0x80, 0xa, 0x2b, 0x31, 0xaf, 0x75, 0x41, 0xe2, - 0x34, 0xb2, 0x1a, 0x46, 0x74, 0xb3, 0x6f, 0xe6, 0x36, 0xa3, - 0xf6, 0x95, 0xf9, 0x64, 0xce, 0x3c, 0xbf, 0x2b, 0xef, 0x74, - 0xe7, 0x77, 0x4a, 0xd3, 0xa0, 0x2, 0x8a, 0x6b, 0xb6, 0xc8, - 0xd9, 0xf1, 0x9d, 0xa0, 0x9c, 0x57, 0x3d, 0xe0, 0x6f, 0x15, - 0xff, 00, 0xc2, 0x69, 0xe1, 0x78, 0x75, 0xaf, 0xb1, 0x7d, - 0x8f, 0xcc, 0x92, 0x48, 0xfc, 0x9f, 0x37, 0xcc, 0xc6, 0xd6, - 0x2b, 0x9d, 0xd8, 0x1d, 0x71, 0xe9, 0x42, 0xd7, 0x40, 0xe9, - 0x73, 0xa3, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, - 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, - 0x28, 00, 0xa2, 0xb3, 0xf5, 0xdd, 0x62, 0xdf, 0xc3, 0xfa, - 0x15, 0xee, 0xaf, 0x76, 0x92, 0xbd, 0xbd, 0x9c, 0x46, 0x59, - 0x16, 0x20, 0xb, 0x90, 0x3d, 0x1, 0x20, 0x67, 0xf1, 0xa7, - 0x68, 0xba, 0x9a, 0x6b, 0x5a, 0x15, 0x86, 0xa9, 0x1c, 0x6d, - 0x1a, 0x5e, 0x5b, 0xa4, 0xea, 0x8c, 0x72, 0x54, 0x32, 0x86, - 00, 0xfe, 0x74, 0x1, 0x7a, 0x8a, 0x28, 0xa0, 0x2, 0x8a, - 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, - 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, - 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, - 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, - 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, - 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0xb3, - 0xb5, 0x4f, 0xf9, 0x61, 0xf5, 0x6f, 0xe5, 0x5a, 0x35, 0x9d, - 0xaa, 0x7f, 0xcb, 0xf, 0xab, 0x7f, 0x2a, 00, 0x92, 0xe1, - 0x4b, 0x68, 0xd3, 0xaa, 0xf5, 0x30, 0xb0, 0x1f, 0x95, 0x79, - 0xcf, 0xc2, 0x6f, 0x5, 0x26, 0x99, 0xd, 0xce, 0xb3, 0x79, - 0x18, 0x6b, 0xa9, 0xe5, 0x6f, 0x2f, 0x70, 0xfb, 0x83, 0x35, - 0xe9, 0xd0, 00, 0x6d, 0xd4, 0x1e, 0x84, 0x53, 0xa2, 0x86, - 0x38, 0x23, 0x11, 0xc6, 0xa1, 0x54, 0x76, 0x14, 0xa, 0xc3, - 0xe8, 0xa2, 0xa0, 0x99, 0xdc, 0x2, 0x17, 0x8a, 0x2, 0xe3, - 0xe5, 0x9e, 0x38, 0x54, 0xb3, 0xb0, 00, 0x57, 0x3f, 0xaa, - 0x6b, 0x92, 0x95, 0x68, 0xed, 0x46, 0xdf, 0xf6, 0xea, 0xc5, - 0xca, 0x33, 0x9c, 0xb1, 0x26, 0xb2, 0xe7, 0x83, 0xaf, 0x15, - 0x49, 0x11, 0x29, 0x33, 0x97, 0xbc, 0x89, 0xe6, 0x76, 0x79, - 0x9, 0x66, 0x3d, 0x49, 0xac, 0xa9, 0xad, 0xbd, 0xab, 0xab, - 0x9a, 0xd8, 0xb6, 0x40, 0x19, 0x35, 0x2, 0xe8, 0x77, 0x77, - 0x4d, 0xb6, 0x38, 0x48, 0xf7, 0x22, 0xae, 0xe6, 0xe, 0x2d, - 0x9c, 0x5c, 0xb6, 0xbe, 0xd5, 0x54, 0xd9, 0x34, 0x8d, 0xb6, - 0x34, 0x2e, 0x7d, 0x14, 0x66, 0xbd, 0x3e, 0xd3, 0xc0, 0xa6, - 0x42, 0x1a, 0xee, 0x5d, 0xbe, 0xcb, 0x5d, 0x1d, 0x87, 0x87, - 0xb4, 0xed, 0x3f, 0x6, 0x2b, 0x75, 0x2e, 0x3f, 0x88, 0x8e, - 0x68, 0x73, 0x1a, 0xa2, 0xde, 0xe7, 0x98, 0x78, 0x7b, 0xc1, - 0xba, 0xac, 0x97, 0xb, 0x74, 0x22, 0xf2, 0xd0, 0x7f, 0x7b, - 0x82, 0x6b, 0x66, 0xfa, 0xb, 0xcb, 0x27, 0x2b, 0x34, 0x4c, - 0x3d, 0xc0, 0xe2, 0xbd, 0x28, 00, 0x3a, 0xc, 0xa, 0x64, - 0xb0, 0xc7, 0x3a, 0x14, 0x91, 0x3, 0x29, 0xec, 0x45, 0x4f, - 0x39, 0xa7, 0xb1, 0x56, 0xd0, 0xf2, 0x59, 0x2f, 0x1, 0xcf, - 0x3c, 0xd5, 0x29, 0xae, 0xba, 0xf3, 0x5e, 0x8b, 0xa9, 0xf8, - 0x2e, 0xc2, 0xf4, 0x16, 0x87, 0x30, 0x37, 0xfb, 0x35, 0xc5, - 0xea, 0xbe, 0x8, 0xd5, 0xad, 0x37, 0x3c, 0x1, 0x65, 0x8c, - 0x7a, 0x75, 0xab, 0x52, 0x46, 0x32, 0xa7, 0x24, 0x73, 0xb3, - 0xdc, 0x67, 0x39, 0x34, 0x69, 0xfe, 0x27, 0xbf, 0xd1, 0x67, - 0xdf, 0x6b, 0x31, 0xd9, 0x9f, 0x99, 0x9, 0xe0, 0xd5, 0x1b, - 0xe8, 0x2f, 0x6d, 0x49, 0x13, 0xdb, 0x4b, 0x1e, 0x3b, 0x95, - 0xe2, 0xb1, 0x65, 0xba, 0x53, 0x9f, 0x9a, 0xaf, 0x46, 0x61, - 0x76, 0x99, 0xed, 0xda, 0x7, 0xc4, 0x8d, 0x33, 0x53, 0xdb, - 0xd, 0xdb, 0xb, 0x7b, 0x83, 0xd8, 0xf4, 0xae, 0xce, 0x29, - 0xa2, 0x9d, 0x37, 0xc5, 0x22, 0xba, 0xfa, 0xa9, 0xcd, 0x7c, - 0x9f, 0x34, 0xb9, 0xe4, 0x12, 0x3d, 0xc5, 0x5f, 0xd3, 0x3c, - 0x67, 0xad, 0xe8, 0x8c, 0x3e, 0xcb, 0x7a, 0xfe, 0x58, 0xff, - 00, 0x96, 0x64, 0xf0, 0x6b, 0x39, 0x43, 0xb1, 0xd1, 0x4e, - 0xbb, 0xd9, 0x9f, 0x52, 0x51, 0x5e, 0x21, 0xa7, 0x7c, 0x72, - 0x9a, 0x25, 0x55, 0xd4, 0x6c, 0x57, 0x3, 0xab, 0xa9, 0xe4, - 0xd7, 0x47, 0x61, 0xf1, 0xa3, 0x45, 0xd4, 0xe5, 0x5b, 0x6b, - 0x3b, 0x5b, 0x99, 0xae, 0x58, 0xe0, 0x2a, 0xae, 0x40, 0x35, - 0x9b, 0x4d, 0x1d, 0x2a, 0x69, 0x9e, 0x99, 0x50, 0xdc, 0xfd, - 0xca, 0x6d, 0x94, 0x93, 0x4d, 0x68, 0x92, 0x5c, 0x20, 0x49, - 0x18, 0x64, 0xa8, 0xed, 0x4e, 0xb8, 0xfb, 0x94, 0x8a, 0x26, - 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, - 0x28, 00, 0xa2, 0x8a, 0x28, 0x3, 0xcc, 0xed, 0x7f, 0xe4, - 0x29, 0xae, 0x7f, 0xd8, 0x4e, 0x6f, 0xe9, 0x5d, 0xe6, 0x89, - 0xff, 00, 0x20, 0x78, 0x3f, 0xe0, 0x5f, 0xfa, 0x11, 0xae, - 0xe, 0xd7, 0xfe, 0x42, 0x9a, 0xe7, 0xfd, 0x84, 0xe6, 0xfe, - 0x95, 0xde, 0x68, 0x9f, 0xf2, 0x7, 0x83, 0xfe, 0x5, 0xff, - 00, 0xa1, 0x1a, 00, 0xcf, 0xf0, 0x3f, 0xfc, 0x89, 0x7a, - 0x5f, 0xfd, 0x72, 0xff, 00, 0xd9, 0x8d, 0x74, 0x15, 0xcf, - 0xf8, 0x1f, 0xfe, 0x44, 0xbd, 0x2f, 0xfe, 0xb9, 0x7f, 0xec, - 0xc6, 0xba, 0xa, 00, 0x2b, 0xc7, 0x3e, 0x27, 0x7c, 0x65, - 0xd4, 0x7c, 0x15, 0xe2, 0xc8, 0x34, 0x6d, 0x37, 0x4d, 0xb5, - 0x9d, 0x23, 0x8d, 0x25, 0xb9, 0x7b, 0x92, 0xd9, 0x70, 0xdf, - 0xc2, 0x9b, 0x48, 0xdb, 0xc0, 0xea, 0x73, 0xc9, 0xe9, 0xc7, - 0x3e, 0xc7, 0x5c, 0xf6, 0xbf, 0xe0, 0x5f, 0xc, 0xf8, 0xa2, - 0xfa, 0xda, 0xf7, 0x5a, 0xd2, 0x21, 0xbb, 0xb9, 0xb6, 0xe2, - 0x39, 0x19, 0x99, 0x4e, 0x33, 0x9c, 0x36, 0xd2, 0x37, 0xc, - 0xf6, 0x6c, 0x8e, 0x4f, 0xa9, 0xa4, 0xef, 0x75, 0x61, 0xab, - 0x59, 0x9a, 0xda, 0x5d, 0xfa, 0x6a, 0x9a, 0x4d, 0x9e, 0xa1, - 0x1a, 0x32, 0x25, 0xd4, 0x9, 0x32, 0xab, 0x75, 0x50, 0xca, - 0xe, 0xf, 0xe7, 0x56, 0xe9, 0x15, 0x55, 0x10, 0x22, 0x28, - 0x55, 0x51, 0x80, 00, 0xc0, 0x2, 0x96, 0xa9, 0xda, 0xfa, - 0x12, 0xaf, 0x6d, 0x42, 0xb9, 0xef, 0x1d, 0xdf, 0x4f, 0xa6, - 0xf8, 0xb, 0x5e, 0xbc, 0xb5, 0x24, 0x4f, 0x15, 0x8c, 0xac, - 0x8c, 0x3a, 0xa9, 0xda, 0x79, 0xfc, 0x3a, 0xfe, 0x15, 0xd0, - 0xd5, 0x5d, 0x4e, 0xc2, 0x1d, 0x57, 0x4a, 0xbb, 0xd3, 0xae, - 0x41, 0x30, 0x5d, 0x42, 0xf0, 0xc9, 0x8e, 0xbb, 0x58, 0x10, - 0x7f, 0x9d, 0x44, 0xd5, 0xe2, 0xd2, 0x2e, 0xe, 0xd2, 0x4d, - 0x9c, 0xf7, 0xc3, 0x3d, 0x3e, 0xdf, 0x4d, 0xf8, 0x6d, 0xa0, - 0x43, 0x6e, 0x81, 0x56, 0x4b, 0x28, 0xe7, 0x6e, 0x3a, 0xbb, - 0x8d, 0xec, 0x7f, 0x32, 0x6b, 0x5f, 0x59, 0xf0, 0xee, 0x95, - 0xe2, 0x3, 0x66, 0x75, 0x3b, 0x5f, 0x39, 0xac, 0xa7, 0x5b, - 0x9b, 0x76, 0x12, 0x32, 0x34, 0x72, 0xe, 0x8c, 0xa, 0x90, - 0x7f, 0xe, 0x95, 0xe7, 0x3e, 0x1d, 0xf1, 0xb2, 0x7c, 0x39, - 0xd3, 0xe2, 0xf0, 0xb7, 0x8e, 0x21, 0xba, 0xb2, 0x5b, 0x2d, - 0xd1, 0x59, 0xea, 0x8b, 0x3, 0xc9, 0x6f, 0x75, 0x10, 0x23, - 0x68, 0x5, 0x41, 0x21, 0x80, 0x3d, 0x31, 0xc0, 0x1c, 0x90, - 0x78, 0xa9, 0xaf, 0x3c, 0x57, 0x7f, 0xf1, 0x1f, 0x55, 0xb0, - 0xd3, 0x7c, 0x16, 0xfa, 0x85, 0xbe, 0x8f, 0x5, 0xd2, 0x4d, - 0x7f, 0xad, 0xaa, 0xb4, 0x8, 0xc8, 0xb8, 0x26, 0x28, 0xf2, - 0x1, 0x62, 0x73, 0x82, 0x8, 0xed, 0xd3, 0x1c, 0xd6, 0x92, - 0x6a, 0x73, 0xbc, 0x7a, 0xbf, 0xbb, 0xfc, 0xac, 0x66, 0x97, - 0x2c, 0x6c, 0xff, 00, 0xe1, 0xff, 00, 0xe1, 0xcb, 0x9e, - 0x22, 0xbc, 0xd6, 0x7c, 0x55, 0xf1, 00, 0xf8, 0x37, 0x4c, - 0xd5, 0x6e, 0x74, 0x9d, 0x3a, 0xce, 0xd1, 0x6e, 0xb5, 0x1b, - 0xbb, 0x4f, 0x96, 0x77, 0x2c, 0xc3, 0x6c, 0x68, 0xff, 00, - 0xc3, 0xc6, 0xe, 0x47, 0xbe, 0x73, 0xd2, 0xab, 0x2f, 0xf6, - 0xcf, 0xc3, 0xaf, 0x19, 0xe8, 0x96, 0x32, 0x6b, 0xba, 0x86, - 0xb3, 0xa0, 0x6b, 0x53, 0x35, 0xb1, 0xfe, 0xd3, 0x93, 0xce, - 0x9e, 0xde, 0x7c, 0xd, 0xa4, 0x49, 0xc1, 0x20, 0xfa, 0x63, - 0x3, 0x9e, 0xfc, 0xd1, 0xaf, 0x5d, 0x37, 0x80, 0x7e, 0x27, - 0xdc, 0x78, 0xaa, 0xfa, 0xda, 0x77, 0xf0, 0xfe, 0xab, 0x67, - 0x1d, 0xbd, 0xd5, 0xd4, 0x31, 0x17, 0xfb, 0x2c, 0xa8, 0x40, - 0x56, 0x70, 0x39, 0xda, 0x46, 0x6, 0x79, 0xe4, 0xfe, 0x15, - 0x5a, 0xeb, 0x58, 0x83, 0xe2, 0x8f, 0x8d, 0x3c, 0x3a, 0x3c, - 0x3f, 0xc, 0xf7, 0x1a, 0x16, 0x8d, 0x74, 0x6f, 0x6e, 0xf5, - 0x17, 0x81, 0xa3, 0x8c, 0xca, 0xa0, 0x6c, 0x8d, 0x37, 0x80, - 0x4b, 0x64, 0xf2, 0x31, 0xdc, 0x1f, 0x7a, 0x9a, 0x7f, 0x67, - 0xd7, 0x5f, 0xbf, 0xfc, 0xb6, 0xf9, 0x15, 0x3e, 0xbe, 0x9a, - 0x7d, 0xdf, 0xe7, 0xff, 00, 0x7, 0x42, 0x9f, 0x85, 0x74, - 0xed, 0x7f, 0xc6, 0x9a, 0xc7, 0x8b, 0x2d, 0xaf, 0x3c, 0x59, - 0xac, 0xd9, 0x69, 0x76, 0x5a, 0xc4, 0xc9, 0xa, 0xd8, 0xdd, - 0x14, 0x98, 0xb6, 0x7e, 0xee, 0xf6, 0x4, 0xac, 0x6a, 0xb8, - 0xc2, 0xc, 0x2, 0x58, 0x93, 0xd0, 0x52, 0xf8, 0x36, 0xc3, - 0xc5, 0x3e, 0x2d, 0x4d, 0x63, 0x43, 0xd5, 0xbc, 0x5b, 0xa9, - 0x5b, 0xd8, 0x68, 0x77, 0xd2, 0x59, 0xa5, 0xc5, 0x8c, 0x9e, - 0x5d, 0xe5, 0xcb, 0x83, 0xc1, 0x92, 0x52, 0x9, 0xda, 0x7, - 0x61, 0xc9, 0xdd, 0xc9, 0xe0, 0x56, 0xd7, 0xc2, 0x5f, 0xf8, - 0xff, 00, 0xf1, 0xc7, 0xfd, 0x8c, 0x13, 0xff, 00, 0x4a, - 0x97, 0xe1, 0x6f, 0xfc, 0x85, 0xfc, 0x77, 0xff, 00, 0x63, - 0x4, 0xff, 00, 0xd2, 0x94, 0x7a, 0x2f, 0xee, 0xaf, 0xd0, - 0xa9, 0x75, 0x7f, 0xde, 0xb7, 0xe7, 0xfe, 0x43, 0xbe, 0x18, - 0xea, 0xda, 0xa5, 0xc6, 0x9f, 0xe2, 0x2d, 0x1f, 0x54, 0xd4, - 0x25, 0xbf, 0x9b, 0x45, 0xd4, 0x25, 0xb3, 0x8a, 0xee, 0x5f, - 0xf5, 0x92, 0x20, 0x1c, 0x6e, 0x3d, 0x49, 0xe0, 0xf2, 0x79, - 0xe6, 0xb9, 0x4f, 00, 0xe8, 0x7e, 0x23, 0xf1, 0xcf, 0x81, - 0x16, 0xff, 00, 0x52, 0xf1, 0x9e, 0xbb, 0x6a, 0x63, 0x92, - 0x68, 0xec, 0x85, 0x95, 0xd9, 0x46, 0x62, 0x18, 0xe5, 0xa6, - 0x73, 0x96, 0x7e, 0x78, 0x3, 0x20, 00, 0xbc, 0x75, 0x35, - 0xd0, 0xfc, 0x32, 0xff, 00, 0x90, 0xc7, 0xc4, 0x3f, 0xfb, - 0xd, 0xcd, 0xfd, 0x6a, 0x6f, 0x81, 0xdf, 0xf2, 0x4b, 0x6d, - 0x3f, 0xeb, 0xe2, 0xe3, 0xff, 00, 0x46, 0x1a, 0x57, 0xba, - 0x6f, 0xfb, 0xa9, 0x83, 0xf7, 0x76, 0xfe, 0x67, 0xfa, 0x98, - 0x5e, 0xd, 0xb0, 0xf1, 0x47, 0xc4, 0x7f, 0x5, 0xc7, 0xa9, - 0x6b, 0x1e, 0x2e, 0xd4, 0xb4, 0xf6, 0x87, 0x7d, 0xbd, 0xa8, - 0xd2, 0xa4, 0xf2, 0xb, 0xb2, 0x64, 0x19, 0x26, 0x6e, 0xae, - 0x49, 0xe3, 0x3, 0x68, 0xc2, 0xe7, 0xa9, 0x34, 0xeb, 0xf, - 0x89, 0x5a, 0xad, 0x9f, 0xc1, 0x28, 0x75, 0xbb, 0x99, 0x62, - 0x9b, 0x59, 0x6b, 0x93, 0xa7, 0xc5, 0x3c, 0xf8, 0x54, 0x69, - 0x37, 0x90, 0x1d, 0xfa, 0xe, 0x14, 0x64, 0xfd, 0x39, 0xef, - 0x5b, 0xbf, 0x4, 0x7f, 0xe4, 0x98, 0xdb, 0x7f, 0xd7, 0xcd, - 0xc7, 0xfe, 0x8c, 0x6a, 0xe0, 0xb4, 0x3f, 0xe, 0x5e, 0xf8, - 0x8f, 0xe0, 00, 0x8f, 0x4e, 0xb7, 0x4b, 0x9b, 0xdb, 0x2d, - 0x56, 0x4b, 0xc8, 0xad, 0xdd, 0x77, 0x9, 0x76, 0x39, 0xca, - 0xe3, 0xa1, 0xc8, 0x27, 0x83, 0xd7, 0xa5, 0x54, 0xb7, 0x7d, - 0xac, 0x9f, 0xe2, 0xaf, 0xf8, 0x5c, 0x39, 0x52, 0xf9, 0x36, - 0x97, 0xe3, 0x6f, 0xc9, 0x1a, 0xd7, 0x6b, 0x6d, 0xa6, 0xe9, - 0x72, 0xea, 0xf6, 0x1f, 0x19, 0x5a, 0xe7, 0xc4, 0x10, 0xa3, - 0x4d, 0xe5, 0x4d, 0xaa, 0xc2, 0xf6, 0x73, 0x3e, 0x9, 0x28, - 0x20, 0xce, 00, 0x3d, 0x7, 0x5c, 0x70, 0x40, 0xe9, 0x57, - 0x7c, 0x67, 0xe3, 0x1d, 0x57, 0x55, 0xf8, 0x77, 0xe1, 0xd, - 0x77, 0x44, 0xb9, 0x7d, 0x3e, 0xf3, 0x50, 0xd4, 0xad, 0xd4, - 0x88, 0xe4, 0x21, 0x77, 0x10, 0xc0, 0xa3, 0x60, 0x8d, 0xc9, - 0xb8, 0x74, 0x3d, 0x40, 0xaa, 0xeb, 0xe3, 0xf, 0x85, 0x72, - 0x58, 0xf9, 0x70, 0xf8, 0x36, 0xd2, 0x5d, 0x7b, 0x1b, 0x3f, - 0xb1, 0x57, 0x42, 0x1f, 0x68, 0xf3, 0x41, 0xc1, 0x8f, 0xfd, - 0x5e, 0xde, 0xe, 0x73, 0xcf, 0x41, 0xd3, 0x3c, 0x55, 0xaf, - 0x88, 0x71, 0x18, 0x7c, 0x21, 0xe0, 0xa5, 0x6d, 0x22, 0xd, - 0x1d, 0xbf, 0xb7, 0x2d, 0x59, 0xac, 0x2d, 0xd9, 0x4a, 0x40, - 0x4e, 0xe3, 0xb4, 0x15, 00, 0x77, 0xe7, 0x3, 0xae, 0x69, - 0xff, 00, 0x9a, 0xfc, 0xfa, 0x7f, 0x5f, 0x99, 0xb, 0xbf, - 0x93, 0xfc, 0x89, 0x7c, 0x43, 0x6b, 0xac, 0xf8, 0x26, 0x1b, - 0x2d, 0x3f, 0x49, 0xf1, 0x36, 0xad, 0x7f, 0xac, 0x78, 0x8a, - 0xf2, 0x2b, 0x44, 0x9f, 0x53, 0x9c, 0x4c, 0x96, 0xbd, 0x4c, - 0x92, 0x46, 0x98, 0xa, 0x3a, 0x8e, 0x30, 0x6b, 0x49, 0x3c, - 0x29, 0xe2, 0x9f, 0x9, 0xeb, 0x3a, 0x55, 0xe6, 0x89, 0xaf, - 0x6b, 0x5a, 0xfd, 0xa4, 0xb3, 0x8, 0x75, 0x3b, 0x4d, 0x52, - 0xf1, 0x64, 0xc4, 0x47, 0xfe, 0x5a, 0xc6, 0x5b, 0x1b, 0x4a, - 0xf5, 0xc0, 0xc9, 0x3c, 0x55, 0x8f, 0x8a, 0x1a, 0x76, 0xa3, - 0xb3, 0x41, 0xf1, 0xe, 0x99, 0x67, 0x2d, 0xec, 0xba, 0x25, - 0xfa, 0xdc, 0xcb, 0x6d, 0x8, 0x26, 0x49, 0x21, 0x3c, 0x3e, - 0xd0, 0x3a, 0x9e, 0x9c, 0x56, 0x75, 0xdf, 0xc4, 0x73, 0xe3, - 0x2b, 0xfd, 0x2b, 0x49, 0xf8, 0x7f, 0x79, 0x3c, 0x93, 0x49, - 0x72, 0x92, 0x6a, 0x37, 0x9f, 0x63, 0x3b, 0x2d, 0x6d, 0xc6, - 0x4b, 0x6, 0xf3, 0x17, 0x1b, 0x9b, 0xa0, 0xc7, 0xa7, 0x5a, - 0x50, 0xdf, 0xce, 0xff, 00, 0x85, 0x97, 0xe1, 0xbd, 0xc2, - 0x5b, 0x6b, 0xb5, 0xbf, 0x1d, 0x7f, 0x1d, 0x8b, 0xf3, 0xea, - 0x37, 0xc3, 0xe3, 0xd5, 0xb6, 0x9c, 0x2f, 0x6e, 0x5, 0x89, - 0xd0, 0xda, 0x53, 0x6c, 0x25, 0x6f, 0x28, 0xbf, 0x98, 0x46, - 0xed, 0xb9, 0xc6, 0x71, 0xdf, 0x15, 0x9b, 0xac, 0xe9, 0xd2, - 0x4f, 0xad, 0xde, 0xcb, 0xe3, 0x1f, 0x89, 0x2f, 0xa1, 0x66, - 0x42, 0xda, 0x7d, 0x86, 0x95, 0xaa, 0xa5, 0xa6, 0xcb, 0x7e, - 0xc5, 0xf7, 0x28, 0x67, 0x62, 0x41, 0xe7, 0x1c, 0x60, 0xe0, - 0xf6, 0x16, 0x2e, 0x3f, 0xe4, 0xe2, 0xed, 0x7f, 0xec, 0x5f, - 0x6f, 0xfd, 0x1a, 0x6b, 0x8b, 0xf0, 0xd6, 0xa3, 0xe0, 0xcd, - 0x6, 0xeb, 0x59, 0xb5, 0xf8, 0x83, 0xa5, 0x89, 0xbc, 0x53, - 0x25, 0xf4, 0x8c, 0xdf, 0x6d, 0xd3, 0xda, 0xe5, 0xae, 0x54, - 0x9f, 0x93, 0xca, 0xf9, 0x58, 00, 0x7a, 0xe, 0x99, 0xe3, - 0x92, 0x31, 0x89, 0x5d, 0x3e, 0x7f, 0x9f, 0xe7, 0xfa, 0x17, - 0x2d, 0xdf, 0xcb, 0xff, 00, 0x49, 0x3a, 0x5f, 0x84, 0xbe, - 0x26, 0xb8, 0xd5, 0x6e, 0x7c, 0x4d, 0xa3, 0x8d, 0x72, 0x7d, - 0x73, 0x4b, 0xd3, 0xca, 0x35, 0x8d, 0xf5, 0xca, 0xb0, 0x99, - 0x91, 0xf7, 0x12, 0x18, 0xb0, 0x5, 0xb0, 0x46, 0x32, 0x7d, - 0xe, 0x38, 0xc0, 0x1a, 0x7f, 0x3, 0x7f, 0xe4, 0x97, 0xd9, - 0xff, 00, 0xd7, 0xc4, 0xff, 00, 0xfa, 0x30, 0xd6, 0x1f, - 0xc3, 0x5b, 0xfb, 0xab, 0xcf, 0x88, 0xde, 0x38, 0x9a, 0xff, - 00, 0x4f, 0x9b, 0x4e, 0xb8, 0xbb, 0x86, 0x9, 0xe2, 0xb5, - 0x9d, 0x76, 0xba, 0x42, 0x14, 0x84, 0xdc, 0x3b, 0x1d, 0xa5, - 0x72, 0x3b, 0x13, 0x8a, 0xdc, 0xf8, 0x1b, 0xff, 00, 0x24, - 0xbe, 0xcf, 0xfe, 0xbe, 0x27, 0xff, 00, 0xd1, 0x86, 0xad, - 0x6a, 0xef, 0xfd, 0xd5, 0xf9, 0x92, 0xf6, 0xb7, 0xf7, 0xbf, - 0x42, 0x4f, 0x8b, 0xbe, 0x21, 0xd4, 0x34, 0xd, 0xf, 0x4d, - 0x16, 0xd7, 0xb3, 0x69, 0xd6, 0x57, 0x97, 0xab, 0x6f, 0x7d, - 0xa8, 0x41, 0x1e, 0xf9, 0x2d, 0xe1, 0x20, 0xe4, 0xaf, 0x70, - 0x7a, 0xf2, 0x39, 0x18, 0xe3, 0x9c, 0x55, 0x4f, 0xf, 0x68, - 0xf7, 0xb1, 0xea, 0xd6, 0x57, 0xfe, 0xf, 0xf8, 0x81, 0x36, - 0xbf, 0xa7, 0x2c, 0xaa, 0xba, 0xa5, 0xb6, 0xa9, 0xa8, 0xb, - 0xbf, 0xdd, 0x91, 0xc6, 0xc6, 0x55, 0x25, 0x1c, 0x72, 0x70, - 0x71, 0x9c, 0xc, 0x9c, 0xc, 0x56, 0xff, 00, 0xc4, 0x1d, - 0x5f, 0x52, 0xd1, 0x74, 0x9b, 0x7b, 0xbb, 0x7d, 0x16, 0x2d, - 0x5f, 0x49, 0x32, 0xec, 0xd5, 0xad, 0x8c, 0x26, 0x59, 0x3e, - 0xce, 0x47, 0x2c, 0xab, 0x9c, 0x1c, 0x77, 0x4, 0x11, 0x8f, - 0x41, 0x92, 0x3c, 0xaf, 0x54, 0x8f, 0xc1, 0x5a, 0xf6, 0xbd, - 0xa6, 0x4f, 0xf0, 0xbe, 0xde, 0x75, 0xf1, 0x27, 0xdb, 0x63, - 0x92, 0x49, 0xac, 0x60, 0x9a, 0x18, 0x6d, 0xe1, 0x1c, 0x31, - 0x91, 0x58, 0x4, 0x55, 0xc7, 0x1f, 0x28, 0xe7, 0xbf, 0x5c, - 0x15, 0x4f, 0xe2, 0xf9, 0xff, 00, 0x97, 0xe1, 0xff, 00, - 0x4, 0x27, 0xf0, 0xfc, 0xbf, 0xcf, 0xf1, 0xff, 00, 0x80, - 0x7a, 0x17, 0x86, 0x35, 0x1b, 0xeb, 0x8f, 0x8c, 0x1e, 0x33, - 0xb1, 0x9a, 0xf6, 0xe2, 0x4b, 0x4b, 0x78, 0xad, 0x4c, 0x30, - 0x3c, 0xac, 0x63, 0x88, 0x94, 0xe7, 0x6a, 0x93, 0x81, 0x9e, - 0xf8, 0xa4, 0x1a, 0x8d, 0xf7, 0xfc, 0x2f, 0xc3, 0xa6, 0xfd, - 0xb6, 0xe3, 0xec, 0x1f, 0xd8, 0x5e, 0x6f, 0xd9, 0xbc, 0xd6, - 0xf2, 0xb7, 0xf9, 0xb8, 0xdd, 0xb7, 0x38, 0xce, 0x38, 0xce, - 0x33, 0x58, 0x77, 0x3a, 0xed, 0x9f, 0xc3, 0xef, 0x8c, 0x1a, - 0xf6, 0xa3, 0xe2, 0x21, 0x35, 0xb6, 0x97, 0xad, 0x5b, 0x40, - 0x6d, 0xaf, 0x56, 0x17, 0x78, 0xf7, 0xc6, 0xb8, 0x28, 0x76, - 0x82, 0x73, 0xd7, 0xa7, 0xb7, 0xad, 0x33, 0xc3, 0xda, 0xd3, - 0x6b, 0xff, 00, 0x1f, 0xe6, 0xbf, 0x5b, 0x3b, 0x8b, 0x6b, - 0x57, 0xd0, 0xc8, 0xb5, 0x37, 0x11, 0x98, 0xde, 0x68, 0x84, - 0x83, 0x12, 0x6d, 0x3c, 0x80, 0x4e, 0xec, 0x67, 0x4, 0x8c, - 0x1c, 0x73, 0x45, 0x3d, 0x54, 0x7d, 0x1f, 0xe4, 0xc2, 0x7b, - 0xcb, 0xe5, 0xfa, 0x15, 0xbc, 0x2d, 0xa6, 0x78, 0x93, 0xc6, - 0x7a, 0xf7, 0x8a, 0xad, 0xee, 0xfc, 0x55, 0xac, 0x58, 0xe8, - 0xb6, 0x5a, 0xbc, 0xc9, 0x1f, 0xd8, 0xae, 0x4a, 0xce, 0xcf, - 0x9c, 0x4, 0xe, 0x73, 0xb6, 0x35, 0x5c, 0x7c, 0xa0, 0x60, - 0x96, 0xf6, 0x15, 0xd2, 0x78, 0x3f, 0x53, 0xd6, 0x34, 0x8f, - 0x16, 0x6b, 0x5e, 0xa, 0xd6, 0x35, 0x39, 0x35, 0x31, 0x6b, - 0x6c, 0xb7, 0x9a, 0x7d, 0xe4, 0xc4, 0x79, 0xcd, 0x9, 0xe0, - 0xab, 0x9f, 0xe2, 0x20, 0xe3, 0xe6, 0x3c, 0x9e, 0x7d, 0x80, - 0xe4, 0xbc, 0x15, 0xe3, 0xcd, 0x3f, 0xc2, 0x3e, 0x21, 0xf1, - 0x8c, 0x3a, 0xf2, 0xcf, 0x6d, 0xa6, 0x4d, 0xad, 0x4e, 0xd1, - 0x5f, 0xac, 0xf, 0x24, 0x62, 0x5c, 0xf3, 0x1b, 0x6d, 0x4, - 0x82, 0x40, 0x4, 0x71, 0xd9, 0xab, 0xa5, 0xf0, 0x80, 0x9f, - 0xc5, 0x3e, 0x38, 0xd6, 0xbc, 0x72, 0x2d, 0x27, 0xb6, 0xd2, - 0xde, 0xc5, 0x6c, 0x34, 0xe3, 0x70, 0x85, 0x1a, 0xe1, 0x1, - 0xdc, 0xd2, 00, 0x7a, 0x29, 0x3d, 0x3d, 0x73, 0xf5, 0xa9, - 0xfb, 0xa, 0xdb, 0x72, 0xeb, 0xf7, 0x7f, 0x9f, 0xe1, 0xe4, - 0x39, 0x7c, 0x4e, 0xfd, 0xf4, 0xfb, 0xff, 00, 0xcb, 0xfa, - 0xb9, 0xcf, 0x7c, 0x39, 0xd0, 0x7c, 0x4b, 0xe3, 0x8f, 0x9, - 0x25, 0xfe, 0xb3, 0xe3, 0x2d, 0x7a, 0xd2, 0xda, 0x39, 0x65, - 0x8e, 0xd0, 0x58, 0xdd, 0x94, 0x96, 0x4f, 0x98, 0xee, 0x79, - 0x5c, 0xe4, 0xb0, 0xcf, 0xca, 0x17, 0xb0, 0x5f, 0x7a, 0xdc, - 0xd1, 0x3c, 0x75, 0xaa, 0x68, 0x9e, 0x17, 0xf1, 0x75, 0xbe, - 0xbf, 0x32, 0x5f, 0xea, 0x9e, 0x18, 0x72, 0x82, 0x70, 0xbb, - 0x7e, 0xd2, 0xac, 0x3f, 0x74, 0x58, 0xe, 0x84, 0x9e, 0xf, - 0xf5, 0x39, 0x35, 0xcc, 0xfc, 0x2b, 0xf8, 0x97, 0xa3, 0xf8, - 0x57, 0xc0, 0xe9, 0x61, 0xe2, 0x3f, 0xb4, 0x58, 0xc6, 0xb3, - 0x4c, 0xd6, 0x57, 0x1f, 0x66, 0x77, 0x8e, 0xe5, 0x77, 0x12, - 0xca, 0xa5, 0x41, 0xf9, 0x95, 0xb2, 0xe, 0x71, 0xd5, 0x6b, - 0x63, 0x4e, 0xf0, 0x96, 0xa5, 0xe2, 0xdf, 0xb, 0xf8, 0xe7, - 0x54, 0xb9, 0xb3, 0x96, 0xc6, 0xe7, 0xc4, 0xae, 0x1a, 0xca, - 0xd6, 0xe4, 0x6d, 0x75, 0x48, 0x87, 0xee, 0x8b, 0x83, 0xf7, - 0x49, 0x3f, 0x97, 0x5f, 0x4a, 0xa9, 0xde, 0xcf, 0x97, 0x6b, - 0x7e, 0x3a, 0x7e, 0x3b, 0x86, 0x9c, 0xca, 0xff, 00, 0xcd, - 0xf8, 0x6b, 0xf8, 0x17, 0xb4, 0xdf, 0x4, 0x78, 0x9f, 0x5c, - 0xd0, 0xe1, 0xd7, 0x6f, 0xbc, 0x73, 0xae, 0x5a, 0x6b, 0xb7, - 0x51, 0xad, 0xcc, 0x70, 0xdb, 0xcc, 0x12, 0xce, 0x2, 0x40, - 0x2a, 0x86, 0x1c, 0x61, 0x80, 0xe8, 0x79, 0xe7, 0xbe, 0x79, - 0xcf, 0x3f, 0xad, 0xf8, 0xe3, 0xc4, 0x5a, 0xb7, 0xc3, 0xbf, - 0xf, 0xde, 0x5b, 0xdd, 0x35, 0x8e, 0xbb, 0x1e, 0xbc, 0x9a, - 0x7d, 0xd1, 0x89, 0x8a, 0x23, 0xc8, 0xbb, 0x86, 0x18, 0x3, - 0x82, 0xa7, 0xe5, 0x25, 0x7a, 0x75, 0xad, 0xfd, 0x27, 0xe2, - 0xf6, 0x8f, 0xa5, 0xe8, 0x16, 0xda, 0x5e, 0xb3, 0x6d, 0xa8, - 0x41, 0xe2, 0x6b, 0x58, 0x92, 0xd9, 0xf4, 0x91, 0x68, 0xe6, - 0x59, 0xa5, 00, 0x1, 0xb3, 0x3, 0x6e, 0x1b, 0x82, 0x32, - 0x7b, 0xfd, 0x33, 0xc9, 0x6a, 0x3a, 0xd, 0xfe, 0x87, 0xe0, - 0x1f, 0xc, 0x3e, 0xab, 0xf, 0x91, 0xa8, 0xea, 0x3e, 0x2a, - 0x8a, 0xfa, 0xe2, 0x1f, 0xf9, 0xe6, 0xce, 0x4e, 0x14, 0xfb, - 0xe0, 0xe, 0x3b, 0x74, 0xaa, 0xd3, 0x9a, 0xcb, 0xe1, 0xba, - 0xb7, 0xde, 0xbf, 0x4b, 0xdf, 0xe4, 0x4a, 0x6f, 0x96, 0xef, - 0x7b, 0x3f, 0xc9, 0xfe, 0xb6, 0xfd, 0xe, 0x97, 0xc6, 0xfe, - 0x2, 0x97, 0x4e, 0xf8, 0x7d, 0xaf, 0x5d, 0x4d, 0xe2, 0xff, - 00, 0x13, 0x5e, 0xc8, 0xb6, 0xfe, 0x7b, 0x24, 0xf7, 0xf9, - 0x8d, 0x99, 0x43, 0x65, 0x76, 0x1, 0x8f, 0x2d, 0xb7, 0x7d, - 0xdf, 0xf6, 0x47, 0x35, 0xd4, 0xfc, 0x2e, 0xd1, 0xff, 00, - 0xb2, 0xbc, 0x7, 0xa5, 0xbf, 0xf6, 0x8e, 0xa1, 0x79, 0xf6, - 0xbb, 0x58, 0x6e, 0x36, 0xde, 0x4f, 0xe6, 0x8, 0x73, 0x1a, - 0xfc, 0x91, 0xf0, 0x36, 0xa0, 0xec, 0x2a, 0xf7, 0xc4, 0x1b, - 0x49, 0xef, 0xbe, 0x1e, 0xeb, 0xf6, 0xd6, 0xb1, 0x34, 0xb3, - 0xc9, 0x65, 0x20, 0x48, 0xd0, 0x65, 0x98, 0xe3, 0x38, 00, - 0x75, 0x35, 0x9f, 0xf0, 0xb3, 0xc4, 0x5a, 0x5e, 0xbb, 0xe0, - 0x4d, 0x32, 0x1d, 0x3a, 0xe7, 0xce, 0x93, 0x4f, 0xb4, 0x82, - 0xda, 0xe9, 0x7c, 0xb6, 0x5f, 0x2e, 0x41, 0x18, 0xc8, 0xe4, - 0xc, 0xf4, 0xea, 0x32, 0x29, 0x47, 0x69, 0x7c, 0xbf, 0x5f, - 0xf8, 0x3, 0x7d, 0x3e, 0x7f, 0xa1, 0xda, 0xd1, 0x45, 0x14, - 0x80, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, - 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, - 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, - 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, - 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, - 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, - 00, 0x2b, 0x3b, 0x54, 0xff, 00, 0x96, 0x1f, 0x56, 0xfe, - 0x55, 0xa3, 0x59, 0xda, 0xa7, 0xfc, 0xb0, 0xfa, 0xb7, 0xf2, - 0xa0, 0xb, 0x96, 0xff, 00, 0xea, 0x13, 0xe9, 0x52, 0xd4, - 0x56, 0xff, 00, 0xea, 0x13, 0xe9, 0x52, 0xd0, 0x1, 0x4d, - 0x64, 0xd, 0x43, 0xb2, 0xa2, 0x17, 0x72, 0x2, 0xa8, 0xc9, - 0x27, 0xb5, 0x79, 0x45, 0xef, 0x8e, 0x7c, 0x4d, 0xe2, 0x9f, - 0x10, 0x5c, 0xe9, 0x7e, 0xe, 0x82, 0x35, 0xb7, 0xb6, 0x6d, - 0x92, 0xdd, 0xca, 0x3e, 0x5c, 0xfb, 0x50, 0x7, 0xa8, 0xbd, - 0xa2, 0xbf, 0x53, 0x51, 0xff, 00, 0x66, 0xc2, 0x4f, 0x39, - 0x35, 0xe5, 0xbf, 0xf0, 0x9a, 0x78, 0xbb, 0xc1, 0x7a, 0xbd, - 0xb5, 0xbf, 0x8b, 0xe1, 0x86, 0x6d, 0x3e, 0xe1, 0xc2, 0x2d, - 0xd4, 0x23, 0x85, 0x3e, 0xf5, 0xea, 0x9f, 0xda, 0x36, 0x82, - 0x8, 0xa6, 0x69, 0xd1, 0x52, 0x55, 0xc, 0x85, 0x8e, 0x32, - 0x29, 0xdc, 0x56, 0x43, 0x92, 0xca, 0xdd, 0x39, 0x11, 0x2e, - 0x7d, 0x71, 0x53, 0x80, 00, 0xc0, 00, 0xa, 0xab, 0x67, - 0xa9, 0xd8, 0xdf, 0xb3, 0x2d, 0xad, 0xcc, 0x72, 0x94, 0xe1, - 0x82, 0x9e, 0x94, 0xdd, 0x43, 0x56, 0xb0, 0xd2, 0xa3, 0x12, - 0x5f, 0xdd, 0xc5, 0x6e, 0xa7, 0xa1, 0x73, 0x8c, 0xd2, 0x19, - 0x76, 0x8a, 0xab, 0x65, 0xa9, 0x59, 0x6a, 0x36, 0xfe, 0x7d, - 0x9d, 0xcc, 0x73, 0x45, 0xfd, 0xe4, 0x39, 0x15, 0x52, 0xe3, - 0xc4, 0xba, 0x2d, 0xaa, 0xb1, 0x9f, 0x52, 0xb7, 0x40, 0xa7, - 0x69, 0xcb, 0x74, 0x34, 0x1, 0xab, 0x45, 0x62, 0xeb, 0x7a, - 0xd2, 0xdb, 0xf8, 0x56, 0xfb, 0x55, 0xd3, 0xe5, 0x8e, 0x63, - 0x14, 0x25, 0xe3, 0x60, 0x72, 0x9, 0xaf, 0x33, 0xf0, 0xde, - 0xb7, 0xf1, 0x37, 0xc5, 0x3a, 0x48, 0xd4, 0xec, 0xa5, 0xd3, - 0xd2, 0x16, 0x62, 0x15, 0x58, 0x73, 0x40, 0x1e, 0xcd, 0x45, - 0x79, 0x67, 0x86, 0xbc, 0x75, 0xe2, 0xf, 0xf8, 0x49, 0xae, - 0x7c, 0x2d, 0xe2, 0x18, 0x21, 0x5d, 0x4f, 0xcb, 0xcc, 0x12, - 0x46, 0x3e, 0x52, 0x71, 0xc6, 0x6b, 0x1b, 0xc5, 0x3e, 0x24, - 0xf8, 0x97, 0xe1, 0x5b, 0x47, 0xbe, 0xbb, 0x6b, 0x16, 0xb7, - 0x32, 0xec, 0x4c, 0x2f, 0x3c, 0x9e, 0x28, 0x3, 0xd8, 0xee, - 0x6c, 0x2d, 0x2f, 0x17, 0x6d, 0xcd, 0xbc, 0x72, 0xf, 0xf6, - 0x85, 0x73, 0xba, 0x87, 0xc3, 0xdd, 0x6, 0xfc, 0x1f, 0xf4, - 0x61, 0x9, 0x3d, 0xe3, 0x15, 0x81, 0xe1, 0x5b, 0xcf, 0x88, - 0x17, 0x37, 0x56, 0xf7, 0xba, 0xcc, 0x96, 0x43, 0x4b, 0x68, - 0xfc, 0xc7, 0xd8, 0x39, 0x3, 0xad, 0x67, 0xdd, 0x78, 0xdf, - 0xc4, 0xfe, 0x2c, 0xd7, 0xae, 0x74, 0xef, 0x6, 0xc1, 0x12, - 0x5a, 0x5b, 0x36, 0xc9, 0x2e, 0xe6, 0x1c, 0x13, 0xed, 0x4d, - 0x36, 0x89, 0x70, 0x8b, 0xdd, 0x16, 0xae, 0xbe, 0xb, 0x69, - 0x52, 0x12, 0x61, 0xbc, 0x9d, 0x7d, 0x8d, 0x66, 0x3f, 0xc0, - 0xf8, 0xd9, 0xb8, 0xbe, 0x6c, 0x7d, 0x6a, 0x78, 0xfc, 0x6b, - 0xe2, 0xcf, 0x6, 0xeb, 0x36, 0xd6, 0x9e, 0x30, 0x86, 0x29, - 0x6c, 0x2e, 0x58, 0x22, 0x5d, 0x42, 0x38, 0x52, 0x7d, 0x6b, - 0xa0, 0xf8, 0x81, 0xe3, 0x99, 0xfc, 0x3d, 0x6b, 0xa7, 0xc1, - 0xa4, 0x46, 0x93, 0x5f, 0x6a, 0x2c, 0x16, 0x2, 0xdf, 0x77, - 0x9e, 0xf4, 0xf9, 0x99, 0x3e, 0xca, 0x3d, 0x8c, 0xb, 0x5f, - 0x81, 0x5a, 0x50, 0x70, 0xd7, 0x57, 0xb3, 0xb6, 0x3f, 0x85, - 0x6b, 0xbc, 0xd0, 0x7c, 0x1b, 0xa2, 0x78, 0x71, 0x47, 0xd8, - 0x6c, 0xe3, 0x12, 0x8f, 0xf9, 0x6a, 0x47, 0xcc, 0x6b, 0xce, - 0xf5, 0xd, 0x6b, 0xe2, 0x57, 0x85, 0x2d, 0xa3, 0xd5, 0xb5, - 0x41, 0x6b, 0x77, 0x65, 0x90, 0x66, 0x8e, 0x21, 0x92, 0xa0, - 0xd7, 0xaa, 0xe8, 0xfa, 0x94, 0x7a, 0xbe, 0x93, 0x6d, 0x7f, - 0x12, 0x95, 0x59, 0x90, 0x36, 0xf, 0x6a, 0x57, 0x65, 0xa8, - 0xa4, 0x5e, 0xa8, 0x6e, 0x3e, 0xe5, 0x4d, 0x50, 0xdc, 0xfd, - 0xca, 0x43, 0x26, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, - 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 0x3, 0xcc, - 0xed, 0x7f, 0xe4, 0x29, 0xae, 0x7f, 0xd8, 0x4e, 0x6f, 0xe9, - 0x5d, 0xe6, 0x89, 0xff, 00, 0x20, 0x78, 0x3f, 0xe0, 0x5f, - 0xfa, 0x11, 0xae, 0xe, 0xd7, 0xfe, 0x42, 0x9a, 0xe7, 0xfd, - 0x84, 0xe6, 0xfe, 0x95, 0xde, 0x68, 0x9f, 0xf2, 0x7, 0x83, - 0xfe, 0x5, 0xff, 00, 0xa1, 0x1a, 00, 0xcf, 0xf0, 0x3f, - 0xfc, 0x89, 0x7a, 0x5f, 0xfd, 0x72, 0xff, 00, 0xd9, 0x8d, - 0x74, 0x15, 0xcf, 0xf8, 0x1f, 0xfe, 0x44, 0xbd, 0x2f, 0xfe, - 0xb9, 0x7f, 0xec, 0xc6, 0xba, 0xa, 00, 0x28, 0xa2, 0x8a, - 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, - 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, - 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, - 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, - 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, - 0xa2, 0x8a, 00, 0xe4, 0x3c, 0xf, 0xe1, 0x5b, 0xef, 0xc, - 0xdd, 0x78, 0x8e, 0x5b, 0xd9, 0x6d, 0xe4, 0x5d, 0x4f, 0x54, - 0x92, 0xf2, 0x1f, 0x25, 0x98, 0x95, 0x46, 0xe8, 0x1b, 0x20, - 0x60, 0xfd, 0x33, 0xf5, 0xae, 0xb6, 0x45, 0x2f, 0x13, 0xa8, - 0xea, 0x54, 0x8a, 0x75, 0x14, 0x9a, 0xba, 0xb7, 0xc8, 0x77, - 0xd6, 0xe7, 0x27, 0xf0, 0xe3, 0xc2, 0xf7, 0xbe, 0xf, 0xf0, - 0x6c, 0x1a, 0x3e, 0xa1, 0x2d, 0xbc, 0xb7, 0x11, 0xcb, 0x2b, - 0x96, 0xb7, 0x66, 0x64, 0xc3, 0x39, 0x23, 0x92, 0x1, 0xef, - 0xe9, 0x5d, 0x65, 0x14, 0x55, 0x37, 0x71, 0x5, 0x14, 0x51, - 0x48, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0xb3, 0xb5, 0x4f, 0xf9, 0x61, 0xf5, 0x6f, 0xe5, 0x5a, 0x35, - 0x9d, 0xaa, 0x7f, 0xcb, 0xf, 0xab, 0x7f, 0x2a, 00, 0xb9, - 0x6f, 0xfe, 0xa1, 0x3e, 0x95, 0x2d, 0x45, 0x6f, 0xfe, 0xa1, - 0x3e, 0x95, 0x2d, 00, 0x67, 0xeb, 0xc1, 0xce, 0x81, 0x7e, - 0x22, 0xce, 0xf3, 0x3, 0xed, 0xc7, 0xae, 0x2b, 0xce, 0xbe, - 0x5, 0xb4, 0x43, 0xc3, 0x77, 0xf1, 0xe4, 0x7d, 0xa0, 0x5d, - 0x1f, 0x34, 0x1e, 0xb9, 0xe6, 0xbd, 0x50, 0x80, 0xc0, 0x82, - 0x32, 0xf, 0x51, 0x5e, 0x5f, 0xaa, 0xfc, 0x3b, 0xd6, 0x34, - 0x9d, 0x7e, 0x7d, 0x6b, 0xc2, 0x1a, 0x88, 0xb5, 0x6b, 0x83, - 0x99, 0xad, 0xd8, 0x65, 0x58, 0xfa, 0xd0, 0x5, 0x8f, 0x8d, - 0xad, 0x6e, 0x3c, 0x7, 0x22, 0xcd, 0x8f, 0x31, 0xa4, 0x1e, - 0x50, 0xef, 0xbb, 0xda, 0xb0, 0x75, 0x5d, 0x3a, 0x6d, 0x4d, - 0x3c, 0xd, 0x61, 0x73, 0x71, 0x2c, 0x51, 0xc8, 0x8b, 0xe6, - 0x5, 0x6c, 0x16, 0x18, 0xad, 0xb, 0x7f, 0x87, 0x9e, 0x20, - 0xf1, 0x1e, 0xaf, 0x6f, 0x7d, 0xe3, 0xd, 0x4d, 0x66, 0xb7, - 0xb7, 0x60, 0xc9, 0x6a, 0x83, 00, 0x9a, 0x5f, 0x89, 0x36, - 0x57, 0x33, 0x78, 0xa7, 0xc2, 0xf6, 0xba, 0x6c, 0xdf, 0x66, - 0x99, 0x65, 0xc4, 0x4f, 0x8e, 0x17, 0x14, 00, 0xff, 00, - 0x14, 0xe9, 0xb1, 0x78, 0x4f, 0xc4, 0x9a, 0x1d, 0xfe, 0x96, - 0xf2, 0x47, 0xbe, 0x42, 0x92, 0xc5, 0xbb, 0x89, 0x7, 0xd2, - 0xb8, 0x9d, 0x67, 0x57, 0x7d, 0x67, 0xe2, 0x65, 0xf2, 0xea, - 0x3a, 0x75, 0xd6, 0xa3, 0x6b, 0x6e, 0xa3, 0xcb, 0xb6, 0x89, - 0xb0, 0x17, 0x3e, 0xa2, 0xbd, 0x36, 0xdb, 0xc2, 0x1a, 0xc6, - 0xa5, 0xe2, 0xb, 0x5d, 0x4b, 0xc4, 0x17, 0xe9, 0x3c, 0x56, - 0x47, 0x30, 0xc2, 0xab, 0x80, 0x4f, 0xa9, 0xaa, 0x1e, 0x21, - 0xf0, 0x16, 0xad, 0x6f, 0xe2, 0xa7, 0xf1, 0x27, 0x86, 0x6e, - 0xd2, 0x1b, 0x99, 0x46, 0x26, 0x89, 0x97, 0x21, 0xa8, 0x3, - 0x95, 0xf0, 0x34, 0xba, 0x8d, 0x9f, 0x8e, 0xee, 0xa3, 0xb4, - 0xd3, 0xae, 0x2c, 0xb4, 0x89, 0xa1, 0x66, 0x68, 0x66, 0x7c, - 0xed, 0x3e, 0xc2, 0x9b, 0xe0, 0xf, 0x7, 0x69, 0xfe, 0x29, - 0xbe, 0xf1, 0x25, 0xde, 0xa8, 0xf3, 0x4b, 0xe5, 0xdc, 0x98, - 0xd1, 0x37, 0x70, 0x3a, 0xf3, 0x5d, 0xa7, 0x85, 0xbc, 0x15, - 0xac, 0x43, 0xad, 0xdc, 0xeb, 0xda, 0xfd, 0xff, 00, 0x9d, - 0x79, 0x2a, 0x14, 0x48, 0x93, 0x85, 0x50, 0x7d, 0xaa, 0xff, - 00, 0x81, 0x7c, 0x21, 0x73, 0xe1, 0x85, 0xd6, 0x45, 0xc4, - 0xc2, 0x4f, 0xb6, 0xdc, 0x19, 0x53, 0x1d, 0x87, 0x34, 0x1, - 0xc0, 0xf8, 0x2d, 0xe4, 0x87, 0xc0, 0xbe, 0x33, 0xd3, 0x9a, - 0x57, 0x92, 0xb, 0x67, 0x75, 0x8b, 0x79, 0xc9, 0x2, 0xb2, - 0x3c, 0x1a, 0x9f, 0x10, 0xed, 0xfc, 0x10, 0xd7, 0x7a, 0xd, - 0xcc, 0xd, 0x68, 0x84, 0x95, 0x84, 0xae, 0x58, 0xfa, 0xd7, - 0xa1, 0xe8, 0x9e, 00, 0xbc, 0xd3, 0x74, 0x8f, 0x12, 0xda, - 0x49, 0x70, 0x19, 0xb5, 0x47, 0x66, 0x8c, 0xff, 00, 0x77, - 0x35, 0xbd, 0xe0, 0x2f, 0xd, 0xcf, 0xe1, 0x6f, 0xc, 0xc7, - 0xa6, 0x5c, 0x48, 0x24, 0x75, 0x62, 0x49, 0xfa, 0xd0, 0x7, - 0x9e, 0xfc, 0x23, 0xb3, 0x4f, 0x11, 0x6b, 0x77, 0x7e, 0x25, - 0xd6, 0x2f, 0x4, 0xda, 0xdc, 0x47, 0xcb, 0x68, 0x7a, 0x18, - 0xf1, 0x5d, 0x7, 0xc6, 0xd3, 0xff, 00, 0x14, 0x52, 0x7f, - 0xd7, 0xc2, 0x7f, 0x3a, 0x79, 0xf8, 0x7f, 0x79, 0xa5, 0x7c, - 0x44, 0x1e, 0x21, 0xd1, 0x6e, 0x4, 0x36, 0x93, 0xff, 00, - 0xc7, 0xcd, 0xb8, 0xe8, 0xde, 0xf5, 0xb5, 0xf1, 0xb, 0xc2, - 0xf7, 0x1e, 0x2d, 0xf0, 0xf2, 0xd8, 0x5b, 0xca, 0x23, 0x71, - 0x2a, 0xbe, 0x4f, 0xb1, 0xa0, 0xb, 00, 0x48, 0xdf, 0xf, - 0x18, 0x45, 0x9f, 0x33, 0xec, 0x7, 0x18, 0xff, 00, 0x76, - 0xb9, 0x1f, 0x81, 0x6d, 0xf, 0xfc, 0x22, 0x57, 0x28, 0xb8, - 0x13, 0xad, 0xc1, 0xf3, 0x47, 0x7c, 0xe4, 0xf5, 0xaf, 0x46, - 0xd3, 0x6c, 0xcd, 0xa6, 0x93, 0x6f, 0x67, 0x21, 0xd, 0xe5, - 0xc4, 0x11, 0xbd, 0xf8, 0xaf, 0x39, 0xd4, 0xbe, 0x1d, 0xeb, - 0x7a, 0x36, 0xbb, 0x71, 0xab, 0xf8, 0x3f, 0x52, 0x16, 0xdf, - 0x68, 0x39, 0x96, 0xd9, 0x86, 0x54, 0x9a, 00, 0x9b, 0xe3, - 0x8b, 0x40, 0x3c, 0xe, 0x16, 0x4c, 0x79, 0xad, 0x32, 0xf9, - 0x43, 0xbe, 0xef, 0x6a, 0xad, 0xab, 0xe8, 0xda, 0x3f, 0x88, - 0xbc, 0x31, 0xe1, 0xdd, 0x27, 0x51, 0xd4, 0x5, 0x9e, 0xb6, - 0x20, 0x46, 0xb5, 0x6c, 0xe1, 0xb7, 0x62, 0x96, 0xd3, 0xe1, - 0xe6, 0xbf, 0xe2, 0xd, 0x66, 0xdf, 0x51, 0xf1, 0x86, 0xa6, - 0x2e, 0x22, 0xb7, 0x60, 0xd1, 0xda, 0xa0, 0xc0, 0xcf, 0xad, - 0x6e, 0xf8, 0xef, 0xe1, 0xfa, 0xf8, 0xa2, 0x2b, 0x4b, 0x9b, - 0x1b, 0x8f, 0xb1, 0xea, 0x36, 0x64, 0x18, 0x25, 0x3, 0xa6, - 0x3b, 0x50, 0x7, 0x15, 0xa8, 0xc3, 0xf1, 0xf, 0xc1, 0x16, - 0x2d, 0x3d, 0xc5, 0xd4, 0x1a, 0xb6, 0x95, 0x16, 0x3c, 0xd5, - 0x75, 0xce, 0x56, 0xbd, 0x4b, 0xc2, 0x7a, 0xd5, 0xb6, 0xbf, - 0xe1, 0xcb, 0x5d, 0x46, 0xd6, 0x11, 0xc, 0x52, 0x2f, 0xfa, - 0xb0, 0x30, 0x14, 0xf7, 0xaf, 0x3a, 0xb8, 0xf0, 0x8f, 0xc4, - 0x4d, 0x72, 0xd7, 0xfb, 0x27, 0x54, 0xd6, 0xa2, 0x5b, 0x16, - 0xc2, 0xc8, 0xca, 0xbc, 0xba, 0x8a, 0xf4, 0xed, 0x3, 0x45, - 0xb7, 0xf0, 0xfe, 0x8b, 0x6f, 0xa6, 0xda, 0x8f, 0xdd, 0xc2, - 0xb8, 0xcf, 0xa9, 0xee, 0x68, 0x3, 0x4a, 0xa1, 0xb9, 0xfb, - 0x95, 0x35, 0x43, 0x73, 0xfe, 0xae, 0x80, 0x26, 0xa2, 0x8a, - 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, - 0xa2, 0x8a, 0x28, 0x3, 0xcc, 0xed, 0x7f, 0xe4, 0x29, 0xae, - 0x7f, 0xd8, 0x4e, 0x6f, 0xe9, 0x5d, 0xe6, 0x89, 0xff, 00, - 0x20, 0x78, 0x3f, 0xe0, 0x5f, 0xfa, 0x11, 0xae, 0xe, 0xd7, - 0xfe, 0x42, 0x9a, 0xe7, 0xfd, 0x84, 0xe6, 0xfe, 0x95, 0xde, - 0x68, 0x9f, 0xf2, 0x7, 0x83, 0xfe, 0x5, 0xff, 00, 0xa1, - 0x1a, 00, 0xcf, 0xf0, 0x3f, 0xfc, 0x89, 0x7a, 0x5f, 0xfd, - 0x72, 0xff, 00, 0xd9, 0x8d, 0x74, 0x15, 0xcf, 0xf8, 0x1f, - 0xfe, 0x44, 0xbd, 0x2f, 0xfe, 0xb9, 0x7f, 0xec, 0xc6, 0xba, - 0xa, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, - 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, - 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, - 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, - 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, - 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, - 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, - 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, - 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, - 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, - 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, - 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, - 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, - 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x2b, 0x3b, - 0x55, 0xff, 00, 0x96, 0x3f, 0x56, 0xfe, 0x55, 0xa3, 0x55, - 0xaf, 0xad, 0xbe, 0xd5, 0x6c, 0xc8, 0xa7, 0xf, 0x83, 0xb4, - 0xfb, 0xe2, 0x80, 0x24, 0xb7, 0xff, 00, 0x50, 0x9f, 0x4a, - 0x96, 0xb1, 0x6d, 0xb5, 0x9, 0xad, 0x53, 0xc9, 0xb9, 0x81, - 0xc3, 0x2f, 0x19, 0x23, 0x83, 0x53, 0xff, 00, 0x6c, 0xc7, - 0xfd, 0xc3, 0x40, 0x1a, 0x74, 0x56, 0x67, 0xf6, 0xcc, 0x7f, - 0xdc, 0x34, 0x7f, 0x6c, 0xc7, 0xfd, 0xc3, 0x40, 0x1a, 0x75, - 0x4a, 0xeb, 0x49, 0xb2, 0xbd, 0xbc, 0xb7, 0xbb, 0x9e, 0x10, - 0xf3, 0x5b, 0x9d, 0xd1, 0xb1, 0xfe, 0x13, 0x50, 0xff, 00, - 0x6c, 0xc7, 0xfd, 0xc3, 0x47, 0xf6, 0xcc, 0x7f, 0xdc, 0x34, - 0x1, 0xa7, 0x45, 0x66, 0x7f, 0x6c, 0xc7, 0xfd, 0xc3, 0x47, - 0xf6, 0xcc, 0x7f, 0xdc, 0x34, 0x1, 0xa7, 0x45, 0x66, 0x7f, - 0x6c, 0xc7, 0xfd, 0xc3, 0x47, 0xf6, 0xcc, 0x7f, 0xdc, 0x34, - 0x1, 0xa7, 0x45, 0x66, 0x7f, 0x6c, 0xc7, 0xfd, 0xc3, 0x47, - 0xf6, 0xcc, 0x7f, 0xdc, 0x34, 0x1, 0xa7, 0x45, 0x66, 0x7f, - 0x6c, 0xc7, 0xfd, 0xc3, 0x47, 0xf6, 0xcc, 0x7f, 0xdc, 0x34, - 0x1, 0xa7, 0x45, 0x66, 0x7f, 0x6c, 0xc7, 0xfd, 0xc3, 0x47, - 0xf6, 0xcc, 0x7f, 0xdc, 0x34, 0x1, 0xa7, 0x45, 0x66, 0x7f, - 0x6c, 0xc7, 0xfd, 0xc3, 0x47, 0xf6, 0xcc, 0x7f, 0xdc, 0x34, - 0x1, 0xa7, 0x45, 0x66, 0x7f, 0x6c, 0xc7, 0xfd, 0xc3, 0x47, - 0xf6, 0xcc, 0x7f, 0xdc, 0x34, 0x1, 0xa7, 0x50, 0x5c, 0x9f, - 0xdd, 0xd5, 0x3f, 0xed, 0x98, 0xff, 00, 0xb8, 0x6a, 0x98, - 0xb9, 0xba, 0xd5, 0x2f, 0x23, 0x48, 0xa2, 0x78, 0xe0, 0x46, - 0xcb, 0xbb, 0xc, 0x2, 0x28, 0x3, 0x7e, 0x8a, 0x28, 0xa0, - 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, - 0x28, 0xa0, 0xf, 0x33, 0xb5, 0xff, 00, 0x90, 0xa6, 0xb9, - 0xff, 00, 0x61, 0x39, 0xbf, 0xa5, 0x77, 0x9a, 0x27, 0xfc, - 0x81, 0xe0, 0xff, 00, 0x81, 0x7f, 0xe8, 0x46, 0xb8, 0x3b, - 0x5f, 0xf9, 0xa, 0x6b, 0x9f, 0xf6, 0x13, 0x9b, 0xfa, 0x57, - 0x79, 0xa2, 0x7f, 0xc8, 0x1e, 0xf, 0xf8, 0x17, 0xfe, 0x84, - 0x68, 0x3, 0x3f, 0xc0, 0xff, 00, 0xf2, 0x25, 0xe9, 0x7f, - 0xf5, 0xcb, 0xff, 00, 0x66, 0x35, 0xd0, 0x57, 0x3f, 0xe0, - 0x7f, 0xf9, 0x12, 0xf4, 0xbf, 0xfa, 0xe5, 0xff, 00, 0xb3, - 0x1a, 0xe8, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, - 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, - 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, - 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, - 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, - 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, - 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, - 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, - 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, - 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, - 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, - 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, - 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, - 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, - 0xa2, 0x8a, 0x28, 0x1, 0x92, 0x43, 0x14, 0xbf, 0xeb, 0x23, - 0x47, 0xff, 00, 0x79, 0x41, 0xa8, 0xfe, 0xc5, 0x69, 0xff, - 00, 0x3e, 0xd0, 0xff, 00, 0xdf, 0xb1, 0x53, 0xd1, 0x40, - 0x10, 0x7d, 0x8a, 0xd7, 0xfe, 0x7d, 0xa1, 0xff, 00, 0xbf, - 0x62, 0x8f, 0xb1, 0x5a, 0xff, 00, 0xcf, 0xb4, 0x3f, 0xf7, - 0xec, 0x54, 0xf4, 0x50, 0x4, 0x1f, 0x62, 0xb5, 0xff, 00, - 0x9f, 0x68, 0x7f, 0xef, 0xd8, 0xa3, 0xec, 0x56, 0xbf, 0xf3, - 0xed, 0xf, 0xfd, 0xfb, 0x15, 0x3d, 0x14, 0x1, 0x7, 0xd8, - 0xad, 0x7f, 0xe7, 0xda, 0x1f, 0xfb, 0xf6, 0x28, 0xfb, 0x15, - 0xaf, 0xfc, 0xfb, 0x43, 0xff, 00, 0x7e, 0xc5, 0x4f, 0x45, - 00, 0x41, 0xf6, 0x2b, 0x5f, 0xf9, 0xf6, 0x87, 0xfe, 0xfd, - 0x8a, 0x3e, 0xc5, 0x6b, 0xff, 00, 0x3e, 0xd0, 0xff, 00, - 0xdf, 0xb1, 0x53, 0xd1, 0x40, 0x10, 0x7d, 0x8a, 0xd7, 0xfe, - 0x7d, 0xa1, 0xff, 00, 0xbf, 0x62, 0x8f, 0xb1, 0x5a, 0xff, - 00, 0xcf, 0xb4, 0x3f, 0xf7, 0xec, 0x54, 0xf4, 0x50, 0x4, - 0x1f, 0x62, 0xb5, 0xff, 00, 0x9f, 0x68, 0x7f, 0xef, 0xd8, - 0xa3, 0xec, 0x56, 0xbf, 0xf3, 0xed, 0xf, 0xfd, 0xfb, 0x15, - 0x3d, 0x14, 0x1, 0x7, 0xd8, 0xad, 0x7f, 0xe7, 0xda, 0x1f, - 0xfb, 0xf6, 0x28, 0xfb, 0x15, 0xaf, 0xfc, 0xfb, 0x43, 0xff, - 00, 0x7e, 0xc5, 0x4f, 0x45, 00, 0x41, 0xf6, 0x2b, 0x5f, - 0xf9, 0xf6, 0x87, 0xfe, 0xfd, 0x8a, 0x3e, 0xc5, 0x6b, 0xff, - 00, 0x3e, 0xd0, 0xff, 00, 0xdf, 0xb1, 0x53, 0xd1, 0x40, - 0x10, 0x7d, 0x8a, 0xd7, 0xfe, 0x7d, 0xa1, 0xff, 00, 0xbf, - 0x62, 0x8f, 0xb1, 0x5a, 0xff, 00, 0xcf, 0xb4, 0x3f, 0xf7, - 0xec, 0x54, 0xf4, 0x50, 0x4, 0x1f, 0x62, 0xb5, 0xff, 00, - 0x9f, 0x68, 0x7f, 0xef, 0xd8, 0xa9, 0x51, 0x15, 0x17, 0x6a, - 0x28, 0x51, 0xe8, 0x6, 0x29, 0xd4, 0x50, 0x1, 0x45, 0x14, - 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, - 0x45, 0x14, 0x50, 0x7, 0x99, 0xda, 0xff, 00, 0xc8, 0x53, - 0x5c, 0xff, 00, 0xb0, 0x9c, 0xdf, 0xd2, 0xbb, 0xcd, 0x13, - 0xfe, 0x40, 0xf0, 0x7f, 0xc0, 0xbf, 0xf4, 0x23, 0x5c, 0x1d, - 0xaf, 0xfc, 0x85, 0x35, 0xcf, 0xfb, 0x9, 0xcd, 0xfd, 0x2b, - 0xbc, 0xd1, 0x3f, 0xe4, 0xf, 0x7, 0xfc, 0xb, 0xff, 00, - 0x42, 0x34, 0x1, 0x46, 0x4f, 0x4, 0x78, 0x4a, 0x59, 0x1a, - 0x49, 0x3c, 0x2f, 0xa2, 0x3b, 0xb9, 0x2c, 0xcc, 0xda, 0x7c, - 0x44, 0x92, 0x7a, 0x92, 0x76, 0xd7, 0x17, 0x77, 0xe1, 0x1f, - 0xd, 0x2d, 0xec, 0xea, 0xbe, 0x1e, 0xd2, 0x42, 0x89, 0x18, - 00, 0x2c, 0xa3, 0xe3, 0x9f, 0xf7, 0x6b, 0xd4, 0xaa, 0x33, - 0x4, 0x44, 0x92, 0x62, 0x42, 0x4f, 0xfb, 0x22, 0x80, 0x3c, - 0xaf, 0xfe, 0x11, 0x3f, 0xd, 0xff, 00, 0xd0, 0xbf, 0xa5, - 0x7f, 0xe0, 0x14, 0x7f, 0xe1, 0x47, 0xfc, 0x22, 0x7e, 0x1b, - 0xff, 00, 0xa1, 0x7f, 0x4a, 0xff, 00, 0xc0, 0x28, 0xff, - 00, 0xc2, 0xbd, 0x53, 0xc8, 0x87, 0xfe, 0x79, 0x47, 0xff, - 00, 0x7c, 0x8a, 0x3c, 0x88, 0x7f, 0xe7, 0x94, 0x7f, 0xf7, - 0xc8, 0xa0, 0xf, 0x2b, 0xff, 00, 0x84, 0x4f, 0xc3, 0x7f, - 0xf4, 0x2f, 0xe9, 0x5f, 0xf8, 0x5, 0x1f, 0xf8, 0x51, 0xff, - 00, 0x8, 0x9f, 0x86, 0xff, 00, 0xe8, 0x5f, 0xd2, 0xbf, - 0xf0, 0xa, 0x3f, 0xf0, 0xaf, 0x54, 0xf2, 0x21, 0xff, 00, - 0x9e, 0x51, 0xff, 00, 0xdf, 0x22, 0x8f, 0x22, 0x1f, 0xf9, - 0xe5, 0x1f, 0xfd, 0xf2, 0x28, 0x3, 0xca, 0xff, 00, 0xe1, - 0x13, 0xf0, 0xdf, 0xfd, 0xb, 0xfa, 0x57, 0xfe, 0x1, 0x47, - 0xfe, 0x14, 0x7f, 0xc2, 0x27, 0xe1, 0xbf, 0xfa, 0x17, 0xf4, - 0xaf, 0xfc, 0x2, 0x8f, 0xfc, 0x2b, 0xd5, 0x3c, 0x88, 0x7f, - 0xe7, 0x94, 0x7f, 0xf7, 0xc8, 0xa3, 0xc8, 0x87, 0xfe, 0x79, - 0x47, 0xff, 00, 0x7c, 0x8a, 00, 0xf2, 0xbf, 0xf8, 0x44, - 0xfc, 0x37, 0xff, 00, 0x42, 0xfe, 0x95, 0xff, 00, 0x80, - 0x51, 0xff, 00, 0x85, 0x1f, 0xf0, 0x89, 0xf8, 0x6f, 0xfe, - 0x85, 0xfd, 0x2b, 0xff, 00, 00, 0xa3, 0xff, 00, 0xa, - 0xf5, 0x4f, 0x22, 0x1f, 0xf9, 0xe5, 0x1f, 0xfd, 0xf2, 0x28, - 0xf2, 0x21, 0xff, 00, 0x9e, 0x51, 0xff, 00, 0xdf, 0x22, - 0x80, 0x3c, 0xaf, 0xfe, 0x11, 0x3f, 0xd, 0xff, 00, 0xd0, - 0xbf, 0xa5, 0x7f, 0xe0, 0x14, 0x7f, 0xe1, 0x47, 0xfc, 0x22, - 0x7e, 0x1b, 0xff, 00, 0xa1, 0x7f, 0x4a, 0xff, 00, 0xc0, - 0x28, 0xff, 00, 0xc2, 0xbd, 0x53, 0xc8, 0x87, 0xfe, 0x79, - 0x47, 0xff, 00, 0x7c, 0x8a, 0x3c, 0x88, 0x7f, 0xe7, 0x94, - 0x7f, 0xf7, 0xc8, 0xa0, 0xf, 0x2b, 0xff, 00, 0x84, 0x4f, - 0xc3, 0x7f, 0xf4, 0x2f, 0xe9, 0x5f, 0xf8, 0x5, 0x1f, 0xf8, - 0x51, 0xff, 00, 0x8, 0x9f, 0x86, 0xff, 00, 0xe8, 0x5f, - 0xd2, 0xbf, 0xf0, 0xa, 0x3f, 0xf0, 0xaf, 0x54, 0xf2, 0x21, - 0xff, 00, 0x9e, 0x51, 0xff, 00, 0xdf, 0x22, 0x8f, 0x22, - 0x1f, 0xf9, 0xe5, 0x1f, 0xfd, 0xf2, 0x28, 0x3, 0xca, 0xff, - 00, 0xe1, 0x13, 0xf0, 0xdf, 0xfd, 0xb, 0xfa, 0x57, 0xfe, - 0x1, 0x47, 0xfe, 0x14, 0x7f, 0xc2, 0x27, 0xe1, 0xbf, 0xfa, - 0x17, 0xf4, 0xaf, 0xfc, 0x2, 0x8f, 0xfc, 0x2b, 0xd5, 0x3c, - 0x88, 0x7f, 0xe7, 0x94, 0x7f, 0xf7, 0xc8, 0xa3, 0xc8, 0x87, - 0xfe, 0x79, 0x47, 0xff, 00, 0x7c, 0x8a, 00, 0xf2, 0xbf, - 0xf8, 0x44, 0xfc, 0x37, 0xff, 00, 0x42, 0xfe, 0x95, 0xff, - 00, 0x80, 0x51, 0xff, 00, 0x85, 0x1f, 0xf0, 0x89, 0xf8, - 0x6f, 0xfe, 0x85, 0xfd, 0x2b, 0xff, 00, 00, 0xa3, 0xff, - 00, 0xa, 0xf5, 0x4f, 0x22, 0x1f, 0xf9, 0xe5, 0x1f, 0xfd, - 0xf2, 0x28, 0xf2, 0x21, 0xff, 00, 0x9e, 0x51, 0xff, 00, - 0xdf, 0x22, 0x80, 0x3c, 0xaf, 0xfe, 0x11, 0x3f, 0xd, 0xff, - 00, 0xd0, 0xbf, 0xa5, 0x7f, 0xe0, 0x14, 0x7f, 0xe1, 0x47, - 0xfc, 0x22, 0x7e, 0x1b, 0xff, 00, 0xa1, 0x7f, 0x4a, 0xff, - 00, 0xc0, 0x28, 0xff, 00, 0xc2, 0xbd, 0x53, 0xc8, 0x87, - 0xfe, 0x79, 0x47, 0xff, 00, 0x7c, 0x8a, 0x3c, 0x88, 0x7f, - 0xe7, 0x94, 0x7f, 0xf7, 0xc8, 0xa0, 0xf, 0x2b, 0xff, 00, - 0x84, 0x4f, 0xc3, 0x7f, 0xf4, 0x2f, 0xe9, 0x5f, 0xf8, 0x5, - 0x1f, 0xf8, 0x51, 0xff, 00, 0x8, 0x9f, 0x86, 0xff, 00, - 0xe8, 0x5f, 0xd2, 0xbf, 0xf0, 0xa, 0x3f, 0xf0, 0xaf, 0x54, - 0xf2, 0x21, 0xff, 00, 0x9e, 0x51, 0xff, 00, 0xdf, 0x22, - 0x8f, 0x22, 0x1f, 0xf9, 0xe5, 0x1f, 0xfd, 0xf2, 0x28, 0x3, - 0xca, 0xff, 00, 0xe1, 0x13, 0xf0, 0xdf, 0xfd, 0xb, 0xfa, - 0x57, 0xfe, 0x1, 0x47, 0xfe, 0x14, 0x7f, 0xc2, 0x27, 0xe1, - 0xbf, 0xfa, 0x17, 0xf4, 0xaf, 0xfc, 0x2, 0x8f, 0xfc, 0x2b, - 0xd5, 0x3c, 0x88, 0x7f, 0xe7, 0x94, 0x7f, 0xf7, 0xc8, 0xa3, - 0xc8, 0x87, 0xfe, 0x79, 0x47, 0xff, 00, 0x7c, 0x8a, 00, - 0xf2, 0xbf, 0xf8, 0x44, 0xfc, 0x37, 0xff, 00, 0x42, 0xfe, - 0x95, 0xff, 00, 0x80, 0x51, 0xff, 00, 0x85, 0x1f, 0xf0, - 0x89, 0xf8, 0x6f, 0xfe, 0x85, 0xfd, 0x2b, 0xff, 00, 00, - 0xa3, 0xff, 00, 0xa, 0xf5, 0x4f, 0x22, 0x1f, 0xf9, 0xe5, - 0x1f, 0xfd, 0xf2, 0x28, 0xf2, 0x21, 0xff, 00, 0x9e, 0x51, - 0xff, 00, 0xdf, 0x22, 0x80, 0x3c, 0xaf, 0xfe, 0x11, 0x3f, - 0xd, 0xff, 00, 0xd0, 0xbf, 0xa5, 0x7f, 0xe0, 0x14, 0x7f, - 0xe1, 0x47, 0xfc, 0x22, 0x7e, 0x1b, 0xff, 00, 0xa1, 0x7f, - 0x4a, 0xff, 00, 0xc0, 0x28, 0xff, 00, 0xc2, 0xbd, 0x53, - 0xc8, 0x87, 0xfe, 0x79, 0x47, 0xff, 00, 0x7c, 0x8a, 0x3c, - 0x88, 0x7f, 0xe7, 0x94, 0x7f, 0xf7, 0xc8, 0xa0, 0xf, 0x2b, - 0xff, 00, 0x84, 0x4f, 0xc3, 0x7f, 0xf4, 0x2f, 0xe9, 0x5f, - 0xf8, 0x5, 0x1f, 0xf8, 0x51, 0xff, 00, 0x8, 0x9f, 0x86, - 0xff, 00, 0xe8, 0x5f, 0xd2, 0xbf, 0xf0, 0xa, 0x3f, 0xf0, - 0xaf, 0x54, 0xf2, 0x21, 0xff, 00, 0x9e, 0x51, 0xff, 00, - 0xdf, 0x22, 0x8f, 0x22, 0x1f, 0xf9, 0xe5, 0x1f, 0xfd, 0xf2, - 0x28, 0x3, 0xca, 0xff, 00, 0xe1, 0x13, 0xf0, 0xdf, 0xfd, - 0xb, 0xfa, 0x57, 0xfe, 0x1, 0x47, 0xfe, 0x14, 0x7f, 0xc2, - 0x27, 0xe1, 0xbf, 0xfa, 0x17, 0xf4, 0xaf, 0xfc, 0x2, 0x8f, - 0xfc, 0x2b, 0xd5, 0x3c, 0x88, 0x7f, 0xe7, 0x94, 0x7f, 0xf7, - 0xc8, 0xa3, 0xc8, 0x87, 0xfe, 0x79, 0x47, 0xff, 00, 0x7c, - 0x8a, 00, 0xf2, 0xbf, 0xf8, 0x44, 0xfc, 0x37, 0xff, 00, - 0x42, 0xfe, 0x95, 0xff, 00, 0x80, 0x51, 0xff, 00, 0x85, - 0x1f, 0xf0, 0x89, 0xf8, 0x6f, 0xfe, 0x85, 0xfd, 0x2b, 0xff, - 00, 00, 0xa3, 0xff, 00, 0xa, 0xf5, 0x4f, 0x22, 0x1f, - 0xf9, 0xe5, 0x1f, 0xfd, 0xf2, 0x28, 0xf2, 0x21, 0xff, 00, - 0x9e, 0x51, 0xff, 00, 0xdf, 0x22, 0x80, 0x3c, 0xaf, 0xfe, - 0x11, 0x3f, 0xd, 0xff, 00, 0xd0, 0xbf, 0xa5, 0x7f, 0xe0, - 0x14, 0x7f, 0xe1, 0x47, 0xfc, 0x22, 0x7e, 0x1b, 0xff, 00, - 0xa1, 0x7f, 0x4a, 0xff, 00, 0xc0, 0x28, 0xff, 00, 0xc2, - 0xbd, 0x53, 0xc8, 0x87, 0xfe, 0x79, 0x47, 0xff, 00, 0x7c, - 0x8a, 0x3c, 0x88, 0x7f, 0xe7, 0x94, 0x7f, 0xf7, 0xc8, 0xa0, - 0xf, 0x2b, 0xff, 00, 0x84, 0x4f, 0xc3, 0x7f, 0xf4, 0x2f, - 0xe9, 0x5f, 0xf8, 0x5, 0x1f, 0xf8, 0x51, 0xff, 00, 0x8, - 0x9f, 0x86, 0xff, 00, 0xe8, 0x5f, 0xd2, 0xbf, 0xf0, 0xa, - 0x3f, 0xf0, 0xaf, 0x54, 0xf2, 0x21, 0xff, 00, 0x9e, 0x51, - 0xff, 00, 0xdf, 0x22, 0x8f, 0x22, 0x1f, 0xf9, 0xe5, 0x1f, - 0xfd, 0xf2, 0x28, 0x3, 0xca, 0xff, 00, 0xe1, 0x13, 0xf0, - 0xdf, 0xfd, 0xb, 0xfa, 0x57, 0xfe, 0x1, 0x47, 0xfe, 0x14, - 0x7f, 0xc2, 0x27, 0xe1, 0xbf, 0xfa, 0x17, 0xf4, 0xaf, 0xfc, - 0x2, 0x8f, 0xfc, 0x2b, 0xd5, 0x3c, 0x88, 0x7f, 0xe7, 0x94, - 0x7f, 0xf7, 0xc8, 0xa3, 0xc8, 0x87, 0xfe, 0x79, 0x47, 0xff, - 00, 0x7c, 0x8a, 00, 0xf2, 0xbf, 0xf8, 0x44, 0xfc, 0x37, - 0xff, 00, 0x42, 0xfe, 0x95, 0xff, 00, 0x80, 0x51, 0xff, - 00, 0x85, 0x1f, 0xf0, 0x89, 0xf8, 0x6f, 0xfe, 0x85, 0xfd, - 0x2b, 0xff, 00, 00, 0xa3, 0xff, 00, 0xa, 0xf5, 0x4f, - 0x22, 0x1f, 0xf9, 0xe5, 0x1f, 0xfd, 0xf2, 0x28, 0xf2, 0x21, - 0xff, 00, 0x9e, 0x51, 0xff, 00, 0xdf, 0x22, 0x80, 0x3c, - 0xaf, 0xfe, 0x11, 0x3f, 0xd, 0xff, 00, 0xd0, 0xbf, 0xa5, - 0x7f, 0xe0, 0x14, 0x7f, 0xe1, 0x47, 0xfc, 0x22, 0x7e, 0x1b, - 0xff, 00, 0xa1, 0x7f, 0x4a, 0xff, 00, 0xc0, 0x28, 0xff, - 00, 0xc2, 0xbd, 0x53, 0xc8, 0x87, 0xfe, 0x79, 0x47, 0xff, - 00, 0x7c, 0x8a, 0x3c, 0x88, 0x7f, 0xe7, 0x94, 0x7f, 0xf7, - 0xc8, 0xa0, 0xf, 0x2b, 0xff, 00, 0x84, 0x4f, 0xc3, 0x7f, - 0xf4, 0x2f, 0xe9, 0x5f, 0xf8, 0x5, 0x1f, 0xf8, 0x51, 0xff, - 00, 0x8, 0x9f, 0x86, 0xff, 00, 0xe8, 0x5f, 0xd2, 0xbf, - 0xf0, 0xa, 0x3f, 0xf0, 0xaf, 0x54, 0xf2, 0x21, 0xff, 00, - 0x9e, 0x51, 0xff, 00, 0xdf, 0x22, 0x8f, 0x22, 0x1f, 0xf9, - 0xe5, 0x1f, 0xfd, 0xf2, 0x28, 0x3, 0xca, 0xff, 00, 0xe1, - 0x13, 0xf0, 0xdf, 0xfd, 0xb, 0xfa, 0x57, 0xfe, 0x1, 0x47, - 0xfe, 0x14, 0x7f, 0xc2, 0x27, 0xe1, 0xbf, 0xfa, 0x17, 0xf4, - 0xaf, 0xfc, 0x2, 0x8f, 0xfc, 0x2b, 0xd5, 0x3c, 0x88, 0x7f, - 0xe7, 0x94, 0x7f, 0xf7, 0xc8, 0xa3, 0xc8, 0x87, 0xfe, 0x79, - 0x47, 0xff, 00, 0x7c, 0x8a, 00, 0xf2, 0xbf, 0xf8, 0x44, - 0xfc, 0x37, 0xff, 00, 0x42, 0xfe, 0x95, 0xff, 00, 0x80, - 0x51, 0xff, 00, 0x85, 0x1f, 0xf0, 0x89, 0xf8, 0x6f, 0xfe, - 0x85, 0xfd, 0x2b, 0xff, 00, 00, 0xa3, 0xff, 00, 0xa, - 0xf5, 0x4f, 0x22, 0x1f, 0xf9, 0xe5, 0x1f, 0xfd, 0xf2, 0x28, - 0xf2, 0x21, 0xff, 00, 0x9e, 0x51, 0xff, 00, 0xdf, 0x22, - 0x80, 0x3c, 0xaf, 0xfe, 0x11, 0x3f, 0xd, 0xff, 00, 0xd0, - 0xbf, 0xa5, 0x7f, 0xe0, 0x14, 0x7f, 0xe1, 0x47, 0xfc, 0x22, - 0x7e, 0x1b, 0xff, 00, 0xa1, 0x7f, 0x4a, 0xff, 00, 0xc0, - 0x28, 0xff, 00, 0xc2, 0xbd, 0x53, 0xc8, 0x87, 0xfe, 0x79, - 0x47, 0xff, 00, 0x7c, 0x8a, 0x3c, 0x88, 0x7f, 0xe7, 0x94, - 0x7f, 0xf7, 0xc8, 0xa0, 0xf, 0x2b, 0xff, 00, 0x84, 0x4f, - 0xc3, 0x7f, 0xf4, 0x2f, 0xe9, 0x5f, 0xf8, 0x5, 0x1f, 0xf8, - 0x51, 0xff, 00, 0x8, 0x9f, 0x86, 0xff, 00, 0xe8, 0x5f, - 0xd2, 0xbf, 0xf0, 0xa, 0x3f, 0xf0, 0xaf, 0x54, 0xf2, 0x21, - 0xff, 00, 0x9e, 0x51, 0xff, 00, 0xdf, 0x22, 0x8f, 0x22, - 0x1f, 0xf9, 0xe5, 0x1f, 0xfd, 0xf2, 0x28, 0x3, 0xca, 0xff, - 00, 0xe1, 0x13, 0xf0, 0xdf, 0xfd, 0xb, 0xfa, 0x57, 0xfe, - 0x1, 0x47, 0xfe, 0x14, 0x7f, 0xc2, 0x27, 0xe1, 0xbf, 0xfa, - 0x17, 0xf4, 0xaf, 0xfc, 0x2, 0x8f, 0xfc, 0x2b, 0xd5, 0x3c, - 0x88, 0x7f, 0xe7, 0x94, 0x7f, 0xf7, 0xc8, 0xa3, 0xc8, 0x87, - 0xfe, 0x79, 0x47, 0xff, 00, 0x7c, 0x8a, 00, 0xf2, 0xbf, - 0xf8, 0x44, 0xfc, 0x37, 0xff, 00, 0x42, 0xfe, 0x95, 0xff, - 00, 0x80, 0x51, 0xff, 00, 0x85, 0x1f, 0xf0, 0x89, 0xf8, - 0x6f, 0xfe, 0x85, 0xfd, 0x2b, 0xff, 00, 00, 0xa3, 0xff, - 00, 0xa, 0xf5, 0x4f, 0x22, 0x1f, 0xf9, 0xe5, 0x1f, 0xfd, - 0xf2, 0x28, 0xf2, 0x21, 0xff, 00, 0x9e, 0x51, 0xff, 00, - 0xdf, 0x22, 0x80, 0x3c, 0xaf, 0xfe, 0x11, 0x3f, 0xd, 0xff, - 00, 0xd0, 0xbf, 0xa5, 0x7f, 0xe0, 0x14, 0x7f, 0xe1, 0x47, - 0xfc, 0x22, 0x7e, 0x1b, 0xff, 00, 0xa1, 0x7f, 0x4a, 0xff, - 00, 0xc0, 0x28, 0xff, 00, 0xc2, 0xbd, 0x53, 0xc8, 0x87, - 0xfe, 0x79, 0x47, 0xff, 00, 0x7c, 0x8a, 0x3c, 0x88, 0x7f, - 0xe7, 0x94, 0x7f, 0xf7, 0xc8, 0xa0, 0xf, 0x2b, 0xff, 00, - 0x84, 0x4f, 0xc3, 0x7f, 0xf4, 0x2f, 0xe9, 0x5f, 0xf8, 0x5, - 0x1f, 0xf8, 0x51, 0xff, 00, 0x8, 0x9f, 0x86, 0xff, 00, - 0xe8, 0x5f, 0xd2, 0xbf, 0xf0, 0xa, 0x3f, 0xf0, 0xaf, 0x54, - 0xf2, 0x21, 0xff, 00, 0x9e, 0x51, 0xff, 00, 0xdf, 0x22, - 0x8f, 0x22, 0x1f, 0xf9, 0xe5, 0x1f, 0xfd, 0xf2, 0x28, 0x3, - 0xca, 0xff, 00, 0xe1, 0x13, 0xf0, 0xdf, 0xfd, 0xb, 0xfa, - 0x57, 0xfe, 0x1, 0x47, 0xfe, 0x14, 0x7f, 0xc2, 0x27, 0xe1, - 0xbf, 0xfa, 0x17, 0xf4, 0xaf, 0xfc, 0x2, 0x8f, 0xfc, 0x2b, - 0xd5, 0x3c, 0x88, 0x7f, 0xe7, 0x94, 0x7f, 0xf7, 0xc8, 0xa3, - 0xc8, 0x87, 0xfe, 0x79, 0x47, 0xff, 00, 0x7c, 0x8a, 00, - 0xf2, 0xbf, 0xf8, 0x44, 0xfc, 0x37, 0xff, 00, 0x42, 0xfe, - 0x95, 0xff, 00, 0x80, 0x51, 0xff, 00, 0x85, 0x1f, 0xf0, - 0x89, 0xf8, 0x6f, 0xfe, 0x85, 0xfd, 0x2b, 0xff, 00, 00, - 0xa3, 0xff, 00, 0xa, 0xf5, 0x4f, 0x22, 0x1f, 0xf9, 0xe5, - 0x1f, 0xfd, 0xf2, 0x28, 0xf2, 0x21, 0xff, 00, 0x9e, 0x51, - 0xff, 00, 0xdf, 0x22, 0x80, 0x3c, 0xaf, 0xfe, 0x11, 0x3f, - 0xd, 0xff, 00, 0xd0, 0xbf, 0xa5, 0x7f, 0xe0, 0x14, 0x7f, - 0xe1, 0x47, 0xfc, 0x22, 0x7e, 0x1b, 0xff, 00, 0xa1, 0x7f, - 0x4a, 0xff, 00, 0xc0, 0x28, 0xff, 00, 0xc2, 0xbd, 0x53, - 0xc8, 0x87, 0xfe, 0x79, 0x47, 0xff, 00, 0x7c, 0x8a, 0x3c, - 0x88, 0x7f, 0xe7, 0x94, 0x7f, 0xf7, 0xc8, 0xa0, 0xf, 0x2b, - 0xff, 00, 0x84, 0x4f, 0xc3, 0x7f, 0xf4, 0x2f, 0xe9, 0x5f, - 0xf8, 0x5, 0x1f, 0xf8, 0x51, 0xff, 00, 0x8, 0x9f, 0x86, - 0xff, 00, 0xe8, 0x5f, 0xd2, 0xbf, 0xf0, 0xa, 0x3f, 0xf0, - 0xaf, 0x54, 0xf2, 0x21, 0xff, 00, 0x9e, 0x51, 0xff, 00, - 0xdf, 0x22, 0x8f, 0x22, 0x1f, 0xf9, 0xe5, 0x1f, 0xfd, 0xf2, - 0x28, 0x3, 0xca, 0xff, 00, 0xe1, 0x13, 0xf0, 0xdf, 0xfd, - 0xb, 0xfa, 0x57, 0xfe, 0x1, 0x47, 0xfe, 0x14, 0x7f, 0xc2, - 0x27, 0xe1, 0xbf, 0xfa, 0x17, 0xf4, 0xaf, 0xfc, 0x2, 0x8f, - 0xfc, 0x2b, 0xd5, 0x3c, 0x88, 0x7f, 0xe7, 0x94, 0x7f, 0xf7, - 0xc8, 0xa3, 0xc8, 0x87, 0xfe, 0x79, 0x47, 0xff, 00, 0x7c, - 0x8a, 00, 0xf2, 0xbf, 0xf8, 0x44, 0xfc, 0x37, 0xff, 00, - 0x42, 0xfe, 0x95, 0xff, 00, 0x80, 0x51, 0xff, 00, 0x85, - 0x1f, 0xf0, 0x89, 0xf8, 0x6f, 0xfe, 0x85, 0xfd, 0x2b, 0xff, - 00, 00, 0xa3, 0xff, 00, 0xa, 0xf5, 0x4f, 0x22, 0x1f, - 0xf9, 0xe5, 0x1f, 0xfd, 0xf2, 0x28, 0xf2, 0x21, 0xff, 00, - 0x9e, 0x51, 0xff, 00, 0xdf, 0x22, 0x80, 0x3c, 0xaf, 0xfe, - 0x11, 0x3f, 0xd, 0xff, 00, 0xd0, 0xbf, 0xa5, 0x7f, 0xe0, - 0x14, 0x7f, 0xe1, 0x47, 0xfc, 0x22, 0x7e, 0x1b, 0xff, 00, - 0xa1, 0x7f, 0x4a, 0xff, 00, 0xc0, 0x28, 0xff, 00, 0xc2, - 0xbd, 0x53, 0xc8, 0x87, 0xfe, 0x79, 0x47, 0xff, 00, 0x7c, - 0x8a, 0x3c, 0x88, 0x7f, 0xe7, 0x94, 0x7f, 0xf7, 0xc8, 0xa0, - 0xf, 0x2b, 0xff, 00, 0x84, 0x4f, 0xc3, 0x7f, 0xf4, 0x2f, - 0xe9, 0x5f, 0xf8, 0x5, 0x1f, 0xf8, 0x51, 0xff, 00, 0x8, - 0x9f, 0x86, 0xff, 00, 0xe8, 0x5f, 0xd2, 0xbf, 0xf0, 0xa, - 0x3f, 0xf0, 0xaf, 0x54, 0xf2, 0x21, 0xff, 00, 0x9e, 0x51, - 0xff, 00, 0xdf, 0x22, 0x8f, 0x22, 0x1f, 0xf9, 0xe5, 0x1f, - 0xfd, 0xf2, 0x28, 0x3, 0xca, 0xff, 00, 0xe1, 0x13, 0xf0, - 0xdf, 0xfd, 0xb, 0xfa, 0x57, 0xfe, 0x1, 0x47, 0xfe, 0x14, - 0x7f, 0xc2, 0x27, 0xe1, 0xbf, 0xfa, 0x17, 0xf4, 0xaf, 0xfc, - 0x2, 0x8f, 0xfc, 0x2b, 0xd5, 0x3c, 0x88, 0x7f, 0xe7, 0x94, - 0x7f, 0xf7, 0xc8, 0xa3, 0xc8, 0x87, 0xfe, 0x79, 0x47, 0xff, - 00, 0x7c, 0x8a, 00, 0xf2, 0xbf, 0xf8, 0x44, 0xfc, 0x37, - 0xff, 00, 0x42, 0xfe, 0x95, 0xff, 00, 0x80, 0x51, 0xff, - 00, 0x85, 0x1f, 0xf0, 0x89, 0xf8, 0x6f, 0xfe, 0x85, 0xfd, - 0x2b, 0xff, 00, 00, 0xa3, 0xff, 00, 0xa, 0xf5, 0x4f, - 0x22, 0x1f, 0xf9, 0xe5, 0x1f, 0xfd, 0xf2, 0x28, 0xf2, 0x21, - 0xff, 00, 0x9e, 0x51, 0xff, 00, 0xdf, 0x22, 0x80, 0x3c, - 0xaf, 0xfe, 0x11, 0x3f, 0xd, 0xff, 00, 0xd0, 0xbf, 0xa5, - 0x7f, 0xe0, 0x14, 0x7f, 0xe1, 0x47, 0xfc, 0x22, 0x7e, 0x1b, - 0xff, 00, 0xa1, 0x7f, 0x4a, 0xff, 00, 0xc0, 0x28, 0xff, - 00, 0xc2, 0xbd, 0x53, 0xc8, 0x87, 0xfe, 0x79, 0x47, 0xff, - 00, 0x7c, 0x8a, 0x3c, 0x88, 0x7f, 0xe7, 0x94, 0x7f, 0xf7, - 0xc8, 0xa0, 0xf, 0x2b, 0xff, 00, 0x84, 0x4f, 0xc3, 0x7f, - 0xf4, 0x2f, 0xe9, 0x5f, 0xf8, 0x5, 0x1f, 0xf8, 0x51, 0xff, - 00, 0x8, 0x9f, 0x86, 0xff, 00, 0xe8, 0x5f, 0xd2, 0xbf, - 0xf0, 0xa, 0x3f, 0xf0, 0xaf, 0x54, 0xf2, 0x21, 0xff, 00, - 0x9e, 0x51, 0xff, 00, 0xdf, 0x22, 0x8f, 0x22, 0x1f, 0xf9, - 0xe5, 0x1f, 0xfd, 0xf2, 0x28, 0x3, 0xca, 0xff, 00, 0xe1, - 0x13, 0xf0, 0xdf, 0xfd, 0xb, 0xfa, 0x57, 0xfe, 0x1, 0x47, - 0xfe, 0x14, 0x7f, 0xc2, 0x27, 0xe1, 0xbf, 0xfa, 0x17, 0xf4, - 0xaf, 0xfc, 0x2, 0x8f, 0xfc, 0x2b, 0xd5, 0x3c, 0x88, 0x7f, - 0xe7, 0x94, 0x7f, 0xf7, 0xc8, 0xa3, 0xc8, 0x87, 0xfe, 0x79, - 0x47, 0xff, 00, 0x7c, 0x8a, 00, 0xf2, 0xbf, 0xf8, 0x44, - 0xfc, 0x37, 0xff, 00, 0x42, 0xfe, 0x95, 0xff, 00, 0x80, - 0x51, 0xff, 00, 0x85, 0x1f, 0xf0, 0x89, 0xf8, 0x6f, 0xfe, - 0x85, 0xfd, 0x2b, 0xff, 00, 00, 0xa3, 0xff, 00, 0xa, - 0xf5, 0x4f, 0x22, 0x1f, 0xf9, 0xe5, 0x1f, 0xfd, 0xf2, 0x28, - 0xf2, 0x21, 0xff, 00, 0x9e, 0x51, 0xff, 00, 0xdf, 0x22, - 0x80, 0x3c, 0xaf, 0xfe, 0x11, 0x3f, 0xd, 0xff, 00, 0xd0, - 0xbf, 0xa5, 0x7f, 0xe0, 0x14, 0x7f, 0xe1, 0x47, 0xfc, 0x22, - 0x7e, 0x1b, 0xff, 00, 0xa1, 0x7f, 0x4a, 0xff, 00, 0xc0, - 0x28, 0xff, 00, 0xc2, 0xbd, 0x53, 0xc8, 0x87, 0xfe, 0x79, - 0x47, 0xff, 00, 0x7c, 0x8a, 0x3c, 0x88, 0x7f, 0xe7, 0x94, - 0x7f, 0xf7, 0xc8, 0xa0, 0xf, 0x2b, 0xff, 00, 0x84, 0x4f, - 0xc3, 0x7f, 0xf4, 0x2f, 0xe9, 0x5f, 0xf8, 0x5, 0x1f, 0xf8, - 0x51, 0xff, 00, 0x8, 0x9f, 0x86, 0xff, 00, 0xe8, 0x5f, - 0xd2, 0xbf, 0xf0, 0xa, 0x3f, 0xf0, 0xaf, 0x54, 0xf2, 0x21, - 0xff, 00, 0x9e, 0x51, 0xff, 00, 0xdf, 0x22, 0x8f, 0x22, - 0x1f, 0xf9, 0xe5, 0x1f, 0xfd, 0xf2, 0x28, 0x3, 0xca, 0xff, - 00, 0xe1, 0x13, 0xf0, 0xdf, 0xfd, 0xb, 0xfa, 0x57, 0xfe, - 0x1, 0x47, 0xfe, 0x14, 0x7f, 0xc2, 0x27, 0xe1, 0xbf, 0xfa, - 0x17, 0xf4, 0xaf, 0xfc, 0x2, 0x8f, 0xfc, 0x2b, 0xd5, 0x3c, - 0x88, 0x7f, 0xe7, 0x94, 0x7f, 0xf7, 0xc8, 0xa3, 0xc8, 0x87, - 0xfe, 0x79, 0x47, 0xff, 00, 0x7c, 0x8a, 00, 0xf2, 0xbf, - 0xf8, 0x44, 0xfc, 0x37, 0xff, 00, 0x42, 0xfe, 0x95, 0xff, - 00, 0x80, 0x51, 0xff, 00, 0x85, 0x1f, 0xf0, 0x89, 0xf8, - 0x6f, 0xfe, 0x85, 0xfd, 0x2b, 0xff, 00, 00, 0xa3, 0xff, - 00, 0xa, 0xf5, 0x4f, 0x22, 0x1f, 0xf9, 0xe5, 0x1f, 0xfd, - 0xf2, 0x28, 0xf2, 0x21, 0xff, 00, 0x9e, 0x51, 0xff, 00, - 0xdf, 0x22, 0x80, 0x3c, 0xaf, 0xfe, 0x11, 0x3f, 0xd, 0xff, - 00, 0xd0, 0xbf, 0xa5, 0x7f, 0xe0, 0x14, 0x7f, 0xe1, 0x47, - 0xfc, 0x22, 0x7e, 0x1b, 0xff, 00, 0xa1, 0x7f, 0x4a, 0xff, - 00, 0xc0, 0x28, 0xff, 00, 0xc2, 0xbd, 0x53, 0xc8, 0x87, - 0xfe, 0x79, 0x47, 0xff, 00, 0x7c, 0x8a, 0x3c, 0x88, 0x7f, - 0xe7, 0x94, 0x7f, 0xf7, 0xc8, 0xa0, 0xf, 0x2b, 0xff, 00, - 0x84, 0x4f, 0xc3, 0x7f, 0xf4, 0x2f, 0xe9, 0x5f, 0xf8, 0x5, - 0x1f, 0xf8, 0x51, 0xff, 00, 0x8, 0x9f, 0x86, 0xff, 00, - 0xe8, 0x5f, 0xd2, 0xbf, 0xf0, 0xa, 0x3f, 0xf0, 0xaf, 0x54, - 0xf2, 0x21, 0xff, 00, 0x9e, 0x51, 0xff, 00, 0xdf, 0x22, - 0x8f, 0x22, 0x1f, 0xf9, 0xe5, 0x1f, 0xfd, 0xf2, 0x28, 0x3, - 0xcf, 0x2d, 0x2c, 0xad, 0x34, 0xfb, 0x71, 0x6f, 0x65, 0x6b, - 0xd, 0xb4, 0x20, 0x92, 0x23, 0x86, 0x30, 0x8a, 0x9, 0xeb, - 0xc0, 0xe2, 0xbb, 0x7d, 0x13, 0xfe, 0x40, 0xf0, 0x7f, 0xc0, - 0xbf, 0xf4, 0x23, 0x57, 0x3c, 0x88, 0x7f, 0xe7, 0x94, 0x7f, - 0xf7, 0xc8, 0xa7, 0xaa, 0xaa, 0x8c, 0x28, 00, 0xe, 0xc0, - 0x50, 0x7, 0x21, 0xa2, 0x41, 0xae, 0xeb, 0x7a, 0x4c, 0x5a, - 0x8b, 0xf8, 0x9a, 0xea, 0x3, 0x3b, 0x39, 0xf2, 0xa2, 0xb5, - 0x80, 0xaa, 00, 0xe4, 00, 0x32, 0x84, 0xf4, 0x1d, 0xcd, - 0x68, 0x7f, 0x61, 0xeb, 0x7f, 0xf4, 0x36, 0xdf, 0x7f, 0xe0, - 0x25, 0xb7, 0xff, 00, 0x1b, 0xa3, 0xc1, 0x1f, 0xf2, 0x28, - 0x58, 0xff, 00, 0xdb, 0x4f, 0xfd, 0x18, 0xd5, 0xd0, 0x50, - 0x7, 0x3f, 0xfd, 0x87, 0xad, 0xff, 00, 0xd0, 0xdb, 0x7d, - 0xff, 00, 0x80, 0x96, 0xdf, 0xfc, 0x6e, 0x8f, 0xec, 0x3d, - 0x6f, 0xfe, 0x86, 0xdb, 0xef, 0xfc, 0x4, 0xb6, 0xff, 00, - 0xe3, 0x75, 0xd0, 0x51, 0x40, 0x1c, 0xff, 00, 0xf6, 0x1e, - 0xb7, 0xff, 00, 0x43, 0x6d, 0xf7, 0xfe, 0x2, 0x5b, 0x7f, - 0xf1, 0xba, 0x3f, 0xb0, 0xf5, 0xbf, 0xfa, 0x1b, 0x6f, 0xbf, - 0xf0, 0x12, 0xdb, 0xff, 00, 0x8d, 0xd7, 0x41, 0x45, 00, - 0x73, 0xff, 00, 0xd8, 0x7a, 0xdf, 0xfd, 0xd, 0xb7, 0xdf, - 0xf8, 0x9, 0x6d, 0xff, 00, 0xc6, 0xe8, 0xfe, 0xc3, 0xd6, - 0xff, 00, 0xe8, 0x6d, 0xbe, 0xff, 00, 0xc0, 0x4b, 0x6f, - 0xfe, 0x37, 0x5d, 0x5, 0x14, 0x1, 0xcf, 0xff, 00, 0x61, - 0xeb, 0x7f, 0xf4, 0x36, 0xdf, 0x7f, 0xe0, 0x25, 0xb7, 0xff, - 00, 0x1b, 0xa3, 0xfb, 0xf, 0x5b, 0xff, 00, 0xa1, 0xb6, - 0xfb, 0xff, 00, 0x1, 0x2d, 0xbf, 0xf8, 0xdd, 0x74, 0x14, - 0x50, 0x7, 0x3f, 0xfd, 0x87, 0xad, 0xff, 00, 0xd0, 0xdb, - 0x7d, 0xff, 00, 0x80, 0x96, 0xdf, 0xfc, 0x6e, 0x8f, 0xec, - 0x3d, 0x6f, 0xfe, 0x86, 0xdb, 0xef, 0xfc, 0x4, 0xb6, 0xff, - 00, 0xe3, 0x75, 0xd0, 0x51, 0x40, 0x1c, 0xff, 00, 0xf6, - 0x1e, 0xb7, 0xff, 00, 0x43, 0x6d, 0xf7, 0xfe, 0x2, 0x5b, - 0x7f, 0xf1, 0xba, 0x3f, 0xb0, 0xf5, 0xbf, 0xfa, 0x1b, 0x6f, - 0xbf, 0xf0, 0x12, 0xdb, 0xff, 00, 0x8d, 0xd7, 0x41, 0x45, - 00, 0x73, 0xff, 00, 0xd8, 0x7a, 0xdf, 0xfd, 0xd, 0xb7, - 0xdf, 0xf8, 0x9, 0x6d, 0xff, 00, 0xc6, 0xe8, 0xfe, 0xc3, - 0xd6, 0xff, 00, 0xe8, 0x6d, 0xbe, 0xff, 00, 0xc0, 0x4b, - 0x6f, 0xfe, 0x37, 0x5d, 0x5, 0x14, 0x1, 0xcf, 0xff, 00, - 0x61, 0xeb, 0x7f, 0xf4, 0x36, 0xdf, 0x7f, 0xe0, 0x25, 0xb7, - 0xff, 00, 0x1b, 0xa3, 0xfb, 0xf, 0x5b, 0xff, 00, 0xa1, - 0xb6, 0xfb, 0xff, 00, 0x1, 0x2d, 0xbf, 0xf8, 0xdd, 0x74, - 0x14, 0x50, 0x7, 0x3f, 0xfd, 0x87, 0xad, 0xff, 00, 0xd0, - 0xdb, 0x7d, 0xff, 00, 0x80, 0x96, 0xdf, 0xfc, 0x6e, 0x8f, - 0xec, 0x3d, 0x6f, 0xfe, 0x86, 0xdb, 0xef, 0xfc, 0x4, 0xb6, - 0xff, 00, 0xe3, 0x75, 0xd0, 0x51, 0x40, 0x1c, 0xff, 00, - 0xf6, 0x1e, 0xb7, 0xff, 00, 0x43, 0x6d, 0xf7, 0xfe, 0x2, - 0x5b, 0x7f, 0xf1, 0xba, 0x3f, 0xb0, 0xf5, 0xbf, 0xfa, 0x1b, - 0x6f, 0xbf, 0xf0, 0x12, 0xdb, 0xff, 00, 0x8d, 0xd7, 0x41, - 0x45, 00, 0x73, 0xff, 00, 0xd8, 0x7a, 0xdf, 0xfd, 0xd, - 0xb7, 0xdf, 0xf8, 0x9, 0x6d, 0xff, 00, 0xc6, 0xe8, 0xfe, - 0xc3, 0xd6, 0xff, 00, 0xe8, 0x6d, 0xbe, 0xff, 00, 0xc0, - 0x4b, 0x6f, 0xfe, 0x37, 0x5d, 0x5, 0x14, 0x1, 0xcf, 0xff, - 00, 0x61, 0xeb, 0x7f, 0xf4, 0x36, 0xdf, 0x7f, 0xe0, 0x25, - 0xb7, 0xff, 00, 0x1b, 0xa3, 0xfb, 0xf, 0x5b, 0xff, 00, - 0xa1, 0xb6, 0xfb, 0xff, 00, 0x1, 0x2d, 0xbf, 0xf8, 0xdd, - 0x74, 0x14, 0x50, 0x7, 0x3f, 0xfd, 0x87, 0xad, 0xff, 00, - 0xd0, 0xdb, 0x7d, 0xff, 00, 0x80, 0x96, 0xdf, 0xfc, 0x6e, - 0x8f, 0xec, 0x3d, 0x6f, 0xfe, 0x86, 0xdb, 0xef, 0xfc, 0x4, - 0xb6, 0xff, 00, 0xe3, 0x75, 0xd0, 0x51, 0x40, 0x1c, 0xff, - 00, 0xf6, 0x1e, 0xb7, 0xff, 00, 0x43, 0x6d, 0xf7, 0xfe, - 0x2, 0x5b, 0x7f, 0xf1, 0xba, 0x3f, 0xb0, 0xf5, 0xbf, 0xfa, - 0x1b, 0x6f, 0xbf, 0xf0, 0x12, 0xdb, 0xff, 00, 0x8d, 0xd7, - 0x41, 0x45, 00, 0x73, 0xff, 00, 0xd8, 0x7a, 0xdf, 0xfd, - 0xd, 0xb7, 0xdf, 0xf8, 0x9, 0x6d, 0xff, 00, 0xc6, 0xe8, - 0xfe, 0xc3, 0xd6, 0xff, 00, 0xe8, 0x6d, 0xbe, 0xff, 00, - 0xc0, 0x4b, 0x6f, 0xfe, 0x37, 0x5d, 0x5, 0x14, 0x1, 0xcf, - 0xff, 00, 0x61, 0xeb, 0x7f, 0xf4, 0x36, 0xdf, 0x7f, 0xe0, - 0x25, 0xb7, 0xff, 00, 0x1b, 0xa3, 0xfb, 0xf, 0x5b, 0xff, - 00, 0xa1, 0xb6, 0xfb, 0xff, 00, 0x1, 0x2d, 0xbf, 0xf8, - 0xdd, 0x74, 0x14, 0x50, 0x7, 0x3f, 0xfd, 0x87, 0xad, 0xff, - 00, 0xd0, 0xdb, 0x7d, 0xff, 00, 0x80, 0x96, 0xdf, 0xfc, - 0x6e, 0x8f, 0xec, 0x3d, 0x6f, 0xfe, 0x86, 0xdb, 0xef, 0xfc, - 0x4, 0xb6, 0xff, 00, 0xe3, 0x75, 0xd0, 0x51, 0x40, 0x1c, - 0xff, 00, 0xf6, 0x1e, 0xb7, 0xff, 00, 0x43, 0x6d, 0xf7, - 0xfe, 0x2, 0x5b, 0x7f, 0xf1, 0xba, 0x3f, 0xb0, 0xf5, 0xbf, - 0xfa, 0x1b, 0x6f, 0xbf, 0xf0, 0x12, 0xdb, 0xff, 00, 0x8d, - 0xd7, 0x41, 0x45, 00, 0x73, 0xff, 00, 0xd8, 0x7a, 0xdf, - 0xfd, 0xd, 0xb7, 0xdf, 0xf8, 0x9, 0x6d, 0xff, 00, 0xc6, - 0xe8, 0xfe, 0xc3, 0xd6, 0xff, 00, 0xe8, 0x6d, 0xbe, 0xff, - 00, 0xc0, 0x4b, 0x6f, 0xfe, 0x37, 0x5d, 0x5, 0x14, 0x1, - 0xcf, 0xff, 00, 0x61, 0xeb, 0x7f, 0xf4, 0x36, 0xdf, 0x7f, - 0xe0, 0x25, 0xb7, 0xff, 00, 0x1b, 0xa3, 0xfb, 0xf, 0x5b, - 0xff, 00, 0xa1, 0xb6, 0xfb, 0xff, 00, 0x1, 0x2d, 0xbf, - 0xf8, 0xdd, 0x74, 0x14, 0x50, 0x7, 0x3f, 0xfd, 0x87, 0xad, - 0xff, 00, 0xd0, 0xdb, 0x7d, 0xff, 00, 0x80, 0x96, 0xdf, - 0xfc, 0x6e, 0x8f, 0xec, 0x3d, 0x6f, 0xfe, 0x86, 0xdb, 0xef, - 0xfc, 0x4, 0xb6, 0xff, 00, 0xe3, 0x75, 0xd0, 0x51, 0x40, - 0x1c, 0xff, 00, 0xf6, 0x1e, 0xb7, 0xff, 00, 0x43, 0x6d, - 0xf7, 0xfe, 0x2, 0x5b, 0x7f, 0xf1, 0xba, 0x3f, 0xb0, 0xf5, - 0xbf, 0xfa, 0x1b, 0x6f, 0xbf, 0xf0, 0x12, 0xdb, 0xff, 00, - 0x8d, 0xd7, 0x41, 0x45, 00, 0x73, 0xff, 00, 0xd8, 0x7a, - 0xdf, 0xfd, 0xd, 0xb7, 0xdf, 0xf8, 0x9, 0x6d, 0xff, 00, - 0xc6, 0xe8, 0xfe, 0xc3, 0xd6, 0xff, 00, 0xe8, 0x6d, 0xbe, - 0xff, 00, 0xc0, 0x4b, 0x6f, 0xfe, 0x37, 0x5d, 0x5, 0x14, - 0x1, 0xcf, 0xff, 00, 0x61, 0xeb, 0x7f, 0xf4, 0x36, 0xdf, - 0x7f, 0xe0, 0x25, 0xb7, 0xff, 00, 0x1b, 0xa3, 0xfb, 0xf, - 0x5b, 0xff, 00, 0xa1, 0xb6, 0xfb, 0xff, 00, 0x1, 0x2d, - 0xbf, 0xf8, 0xdd, 0x74, 0x14, 0x50, 0x7, 0x3f, 0xfd, 0x87, - 0xad, 0xff, 00, 0xd0, 0xdb, 0x7d, 0xff, 00, 0x80, 0x96, - 0xdf, 0xfc, 0x6e, 0x8f, 0xec, 0x3d, 0x6f, 0xfe, 0x86, 0xdb, - 0xef, 0xfc, 0x4, 0xb6, 0xff, 00, 0xe3, 0x75, 0xd0, 0x51, - 0x40, 0x1c, 0xff, 00, 0xf6, 0x1e, 0xb7, 0xff, 00, 0x43, - 0x6d, 0xf7, 0xfe, 0x2, 0x5b, 0x7f, 0xf1, 0xba, 0x3f, 0xb0, - 0xf5, 0xbf, 0xfa, 0x1b, 0x6f, 0xbf, 0xf0, 0x12, 0xdb, 0xff, - 00, 0x8d, 0xd7, 0x41, 0x45, 00, 0x73, 0xff, 00, 0xd8, - 0x7a, 0xdf, 0xfd, 0xd, 0xb7, 0xdf, 0xf8, 0x9, 0x6d, 0xff, - 00, 0xc6, 0xe8, 0xfe, 0xc3, 0xd6, 0xff, 00, 0xe8, 0x6d, - 0xbe, 0xff, 00, 0xc0, 0x4b, 0x6f, 0xfe, 0x37, 0x5d, 0x5, - 0x14, 0x1, 0xcf, 0xff, 00, 0x61, 0xeb, 0x7f, 0xf4, 0x36, - 0xdf, 0x7f, 0xe0, 0x25, 0xb7, 0xff, 00, 0x1b, 0xa3, 0xfb, - 0xf, 0x5b, 0xff, 00, 0xa1, 0xb6, 0xfb, 0xff, 00, 0x1, - 0x2d, 0xbf, 0xf8, 0xdd, 0x74, 0x14, 0x50, 0x7, 0x3f, 0xfd, - 0x87, 0xad, 0xff, 00, 0xd0, 0xdb, 0x7d, 0xff, 00, 0x80, - 0x96, 0xdf, 0xfc, 0x6e, 0x8f, 0xec, 0x3d, 0x6f, 0xfe, 0x86, - 0xdb, 0xef, 0xfc, 0x4, 0xb6, 0xff, 00, 0xe3, 0x75, 0xd0, - 0x51, 0x40, 0x1c, 0xff, 00, 0xf6, 0x1e, 0xb7, 0xff, 00, - 0x43, 0x6d, 0xf7, 0xfe, 0x2, 0x5b, 0x7f, 0xf1, 0xba, 0x3f, - 0xb0, 0xf5, 0xbf, 0xfa, 0x1b, 0x6f, 0xbf, 0xf0, 0x12, 0xdb, - 0xff, 00, 0x8d, 0xd7, 0x41, 0x45, 00, 0x73, 0xff, 00, - 0xd8, 0x7a, 0xdf, 0xfd, 0xd, 0xb7, 0xdf, 0xf8, 0x9, 0x6d, - 0xff, 00, 0xc6, 0xe8, 0xfe, 0xc3, 0xd6, 0xff, 00, 0xe8, - 0x6d, 0xbe, 0xff, 00, 0xc0, 0x4b, 0x6f, 0xfe, 0x37, 0x5d, - 0x5, 0x14, 0x1, 0xcf, 0xff, 00, 0x61, 0xeb, 0x7f, 0xf4, - 0x36, 0xdf, 0x7f, 0xe0, 0x25, 0xb7, 0xff, 00, 0x1b, 0xa3, - 0xfb, 0xf, 0x5b, 0xff, 00, 0xa1, 0xb6, 0xfb, 0xff, 00, - 0x1, 0x2d, 0xbf, 0xf8, 0xdd, 0x74, 0x14, 0x50, 0x7, 0x3f, - 0xfd, 0x87, 0xad, 0xff, 00, 0xd0, 0xdb, 0x7d, 0xff, 00, - 0x80, 0x96, 0xdf, 0xfc, 0x6e, 0x8f, 0xec, 0x3d, 0x6f, 0xfe, - 0x86, 0xdb, 0xef, 0xfc, 0x4, 0xb6, 0xff, 00, 0xe3, 0x75, - 0xd0, 0x51, 0x40, 0x1c, 0xff, 00, 0xf6, 0x1e, 0xb7, 0xff, - 00, 0x43, 0x6d, 0xf7, 0xfe, 0x2, 0x5b, 0x7f, 0xf1, 0xba, - 0x3f, 0xb0, 0xf5, 0xbf, 0xfa, 0x1b, 0x6f, 0xbf, 0xf0, 0x12, - 0xdb, 0xff, 00, 0x8d, 0xd7, 0x41, 0x45, 00, 0x73, 0xff, - 00, 0xd8, 0x7a, 0xdf, 0xfd, 0xd, 0xb7, 0xdf, 0xf8, 0x9, - 0x6d, 0xff, 00, 0xc6, 0xe8, 0xfe, 0xc3, 0xd6, 0xff, 00, - 0xe8, 0x6d, 0xbe, 0xff, 00, 0xc0, 0x4b, 0x6f, 0xfe, 0x37, - 0x5d, 0x5, 0x14, 0x1, 0xcf, 0xff, 00, 0x61, 0xeb, 0x7f, - 0xf4, 0x36, 0xdf, 0x7f, 0xe0, 0x25, 0xb7, 0xff, 00, 0x1b, - 0xa3, 0xfb, 0xf, 0x5b, 0xff, 00, 0xa1, 0xb6, 0xfb, 0xff, - 00, 0x1, 0x2d, 0xbf, 0xf8, 0xdd, 0x74, 0x14, 0x50, 0x7, - 0x3f, 0xfd, 0x87, 0xad, 0xff, 00, 0xd0, 0xdb, 0x7d, 0xff, - 00, 0x80, 0x96, 0xdf, 0xfc, 0x6e, 0x8f, 0xec, 0x3d, 0x6f, - 0xfe, 0x86, 0xdb, 0xef, 0xfc, 0x4, 0xb6, 0xff, 00, 0xe3, - 0x75, 0xd0, 0x51, 0x40, 0x1c, 0xff, 00, 0xf6, 0x1e, 0xb7, - 0xff, 00, 0x43, 0x6d, 0xf7, 0xfe, 0x2, 0x5b, 0x7f, 0xf1, - 0xba, 0x3f, 0xb0, 0xf5, 0xbf, 0xfa, 0x1b, 0x6f, 0xbf, 0xf0, - 0x12, 0xdb, 0xff, 00, 0x8d, 0xd7, 0x41, 0x45, 00, 0x73, - 0xff, 00, 0xd8, 0x7a, 0xdf, 0xfd, 0xd, 0xb7, 0xdf, 0xf8, - 0x9, 0x6d, 0xff, 00, 0xc6, 0xe8, 0xfe, 0xc3, 0xd6, 0xff, - 00, 0xe8, 0x6d, 0xbe, 0xff, 00, 0xc0, 0x4b, 0x6f, 0xfe, - 0x37, 0x5d, 0x5, 0x14, 0x1, 0xcf, 0xff, 00, 0x61, 0xeb, - 0x7f, 0xf4, 0x36, 0xdf, 0x7f, 0xe0, 0x25, 0xb7, 0xff, 00, - 0x1b, 0xa3, 0xfb, 0xf, 0x5b, 0xff, 00, 0xa1, 0xb6, 0xfb, - 0xff, 00, 0x1, 0x2d, 0xbf, 0xf8, 0xdd, 0x74, 0x14, 0x50, - 0x7, 0x3f, 0xfd, 0x87, 0xad, 0xff, 00, 0xd0, 0xdb, 0x7d, - 0xff, 00, 0x80, 0x96, 0xdf, 0xfc, 0x6e, 0x8f, 0xec, 0x3d, - 0x6f, 0xfe, 0x86, 0xdb, 0xef, 0xfc, 0x4, 0xb6, 0xff, 00, - 0xe3, 0x75, 0xd0, 0x51, 0x40, 0x1c, 0xff, 00, 0xf6, 0x1e, - 0xb7, 0xff, 00, 0x43, 0x6d, 0xf7, 0xfe, 0x2, 0x5b, 0x7f, - 0xf1, 0xba, 0x3f, 0xb0, 0xf5, 0xbf, 0xfa, 0x1b, 0x6f, 0xbf, - 0xf0, 0x12, 0xdb, 0xff, 00, 0x8d, 0xd7, 0x41, 0x45, 00, - 0x73, 0xff, 00, 0xd8, 0x7a, 0xdf, 0xfd, 0xd, 0xb7, 0xdf, - 0xf8, 0x9, 0x6d, 0xff, 00, 0xc6, 0xe8, 0xfe, 0xc3, 0xd6, - 0xff, 00, 0xe8, 0x6d, 0xbe, 0xff, 00, 0xc0, 0x4b, 0x6f, - 0xfe, 0x37, 0x5d, 0x5, 0x14, 0x1, 0xcf, 0xff, 00, 0x61, - 0xeb, 0x7f, 0xf4, 0x36, 0xdf, 0x7f, 0xe0, 0x25, 0xb7, 0xff, - 00, 0x1b, 0xa3, 0xfb, 0xf, 0x5b, 0xff, 00, 0xa1, 0xb6, - 0xfb, 0xff, 00, 0x1, 0x2d, 0xbf, 0xf8, 0xdd, 0x74, 0x14, - 0x50, 0x7, 0x3f, 0xfd, 0x87, 0xad, 0xff, 00, 0xd0, 0xdb, - 0x7d, 0xff, 00, 0x80, 0x96, 0xdf, 0xfc, 0x6e, 0x8f, 0xec, - 0x3d, 0x6f, 0xfe, 0x86, 0xdb, 0xef, 0xfc, 0x4, 0xb6, 0xff, - 00, 0xe3, 0x75, 0xd0, 0x51, 0x40, 0x1c, 0xff, 00, 0xf6, - 0x1e, 0xb7, 0xff, 00, 0x43, 0x6d, 0xf7, 0xfe, 0x2, 0x5b, - 0x7f, 0xf1, 0xba, 0x3f, 0xb0, 0xf5, 0xbf, 0xfa, 0x1b, 0x6f, - 0xbf, 0xf0, 0x12, 0xdb, 0xff, 00, 0x8d, 0xd7, 0x41, 0x45, - 00, 0x73, 0xff, 00, 0xd8, 0x7a, 0xdf, 0xfd, 0xd, 0xb7, - 0xdf, 0xf8, 0x9, 0x6d, 0xff, 00, 0xc6, 0xe8, 0xfe, 0xc3, - 0xd6, 0xff, 00, 0xe8, 0x6d, 0xbe, 0xff, 00, 0xc0, 0x4b, - 0x6f, 0xfe, 0x37, 0x5d, 0x5, 0x14, 0x1, 0xcf, 0xff, 00, - 0x61, 0xeb, 0x7f, 0xf4, 0x36, 0xdf, 0x7f, 0xe0, 0x25, 0xb7, - 0xff, 00, 0x1b, 0xa3, 0xfb, 0xf, 0x5b, 0xff, 00, 0xa1, - 0xb6, 0xfb, 0xff, 00, 0x1, 0x2d, 0xbf, 0xf8, 0xdd, 0x74, - 0x14, 0x50, 0x7, 0x3f, 0xfd, 0x87, 0xad, 0xff, 00, 0xd0, - 0xdb, 0x7d, 0xff, 00, 0x80, 0x96, 0xdf, 0xfc, 0x6e, 0x8f, - 0xec, 0x3d, 0x6f, 0xfe, 0x86, 0xdb, 0xef, 0xfc, 0x4, 0xb6, - 0xff, 00, 0xe3, 0x75, 0xd0, 0x51, 0x40, 0x1c, 0xff, 00, - 0xf6, 0x1e, 0xb7, 0xff, 00, 0x43, 0x6d, 0xf7, 0xfe, 0x2, - 0x5b, 0x7f, 0xf1, 0xba, 0x3f, 0xb0, 0xf5, 0xbf, 0xfa, 0x1b, - 0x6f, 0xbf, 0xf0, 0x12, 0xdb, 0xff, 00, 0x8d, 0xd7, 0x41, - 0x45, 00, 0x61, 0x78, 0x62, 0xea, 0xf6, 0x78, 0x75, 0x18, - 0x2f, 0xae, 0x8d, 0xd4, 0x96, 0x97, 0xcf, 0x6e, 0xb3, 0x32, - 0x2a, 0x33, 0x28, 0x55, 0x23, 0x21, 0x40, 0x19, 0xf9, 0x8f, - 0x41, 0x5b, 0xb5, 0xc1, 0xe9, 0xba, 0xb5, 0xcd, 0x96, 0xa7, - 0xaf, 0xc5, 0x10, 0x8f, 0x6f, 0xf6, 0x9c, 0x87, 0xe6, 0x19, - 0xfe, 0x4, 0xae, 0xbb, 0x4f, 0xbc, 0x96, 0xe6, 0xc6, 0x39, - 0xa4, 0xdb, 0xb9, 0xb3, 0x9c, 0xe, 0x3a, 0x91, 0x40, 0x19, - 0xbe, 0x8, 0xff, 00, 0x91, 0x42, 0xc7, 0xfe, 0xda, 0x7f, - 0xe8, 0xc6, 0xae, 0x82, 0xb9, 0xff, 00, 0x4, 0x7f, 0xc8, - 0xa1, 0x63, 0xff, 00, 0x6d, 0x3f, 0xf4, 0x63, 0x57, 0x41, - 0x40, 0x5, 0x73, 0x9e, 0x26, 0xf1, 0xdf, 0x86, 0xbc, 0x1f, - 0x35, 0xbc, 0x5a, 0xf6, 0xa5, 0xf6, 0x47, 0xb8, 0x52, 0xd1, - 0xf, 0x22, 0x49, 0x37, 0x1, 0xc1, 0xfb, 0x8a, 0x71, 0xd4, - 0x75, 0xae, 0x8e, 0xbe, 0x75, 0xfd, 0xa5, 0x31, 0xfd, 0xb3, - 0xe1, 0xec, 0xf4, 0xf2, 0x25, 0xcf, 0xfd, 0xf4, 0xb4, 0xb5, - 0xe6, 0x49, 0x75, 0x63, 0x4b, 0x46, 0x7a, 0x57, 0xfc, 0x2e, - 0xdf, 0x87, 0x9f, 0xf4, 0x30, 0xff, 00, 0xe4, 0x95, 0xc7, - 0xff, 00, 0x1b, 0xae, 0x9b, 0xc3, 0x7e, 0x2d, 0xd0, 0xfc, - 0x5f, 0x67, 0x35, 0xde, 0x85, 0x7d, 0xf6, 0xb8, 0x21, 0x93, - 0xcb, 0x91, 0xbc, 0xa7, 0x8f, 0xd, 0x8c, 0xe3, 0xe, 0x1, - 0xe8, 0x6b, 0xce, 0x13, 0xc1, 0xbf, 0x3, 0x4a, 0x29, 0x37, - 0x5a, 0x1e, 0x71, 0xcf, 0xfc, 0x4f, 0x5b, 0xff, 00, 0x8f, - 0x57, 0x6d, 0xe1, 0xcd, 0x2f, 0xc2, 0xfe, 0x15, 0xf0, 0xbd, - 0xe5, 0xe7, 0x84, 0xe1, 0x81, 0xf4, 0xf7, 0x57, 0xb9, 0x26, - 0xb, 0xb6, 0x99, 0x25, 0x65, 0x5c, 0x1c, 0x39, 0x66, 0xfe, - 0xee, 0x38, 0xa6, 0xda, 0x8a, 0x6d, 0xf4, 0x25, 0x5e, 0x56, - 0xb7, 0x53, 0xab, 0xa2, 0xbc, 0x57, 0x4e, 0xfd, 0xa0, 0x1f, - 0x57, 0xb3, 0xd9, 0xa6, 0xf8, 0x3a, 0xf6, 0xf7, 0x56, 0xf3, - 0xe, 0x2c, 0x6d, 0x66, 0x69, 0x71, 0x10, 0x3, 0x32, 0x16, - 0x11, 0xe7, 0xa9, 0xc6, 0x2, 0x9e, 0xf9, 0x23, 0x8c, 0xf4, - 0x7a, 0xc7, 0xc5, 0xcb, 0x6f, 0xd, 0x78, 0x4a, 0xc3, 0x54, - 0xd7, 0xb4, 0x6b, 0x9b, 0x2d, 0x5a, 0xfd, 0x5d, 0xa1, 0xd2, - 0x3, 0xee, 0x91, 0x40, 0x24, 0x2, 0xec, 0x42, 0xed, 0x7, - 0x8e, 0xd9, 0xe7, 0xa1, 0xc1, 0xa1, 0xe8, 0x35, 0xae, 0xc7, - 0xa3, 0xd1, 0x5e, 0x47, 0xa7, 0xfc, 0x72, 0x58, 0x75, 0x5b, - 0x7b, 0x3f, 0x15, 0xf8, 0x57, 0x51, 0xf0, 0xec, 0x57, 0x5f, - 0xea, 0x6e, 0x2e, 0xb, 0x32, 0x9e, 0x7a, 0x90, 0xc8, 0x84, - 0x2f, 0x3d, 0x46, 0x7f, 0xad, 0x7a, 0x37, 0x88, 0x7c, 0x49, - 0xa6, 0x78, 0x63, 0x40, 0x9f, 0x5a, 0xd4, 0xa7, 0xdb, 0x67, - 0x12, 0x82, 0xa, 0x7c, 0xcd, 0x21, 0x3f, 0x75, 0x54, 0x77, - 0x27, 0xb7, 0x6e, 0xe7, 0x3, 0x9a, 0x1e, 0x8a, 0xec, 0x16, - 0xae, 0xc8, 0xd6, 0xa8, 0xae, 0xae, 0x61, 0xb2, 0xb4, 0x9a, - 0xea, 0xe1, 0xf6, 0x43, 0xa, 0x34, 0x92, 0x36, 0x9, 0xc2, - 0x81, 0x92, 0x70, 0x39, 0xe9, 0x5e, 0x38, 0xbf, 0x1f, 0x67, - 0x11, 0x8d, 0x4a, 0x4f, 0x3, 0x6a, 0xab, 0xe1, 0xf3, 0x2e, - 0xc1, 0xa9, 0x9, 0x9, 0x1b, 0x77, 0x63, 0x38, 0xd9, 0xb3, - 0x77, 0xfb, 0x3b, 0xfa, 0xf1, 0x9a, 0xf4, 0x2b, 0xbd, 0x73, - 0x4f, 0xf1, 0x1f, 0xc3, 0xbd, 0x43, 0x55, 0xd2, 0xee, 0x4, - 0xf6, 0x93, 0xd8, 0x4c, 0x55, 0x87, 0x4, 0x1d, 0x87, 0x20, - 0x8e, 0xc4, 0x1e, 0x8, 0xa9, 0x9b, 0x6a, 0xe, 0x4b, 0xa0, - 0xe2, 0x93, 0x92, 0x8b, 0xea, 0x62, 0xff, 00, 0xc2, 0xed, - 0xf8, 0x79, 0xff, 00, 0x43, 0xf, 0xfe, 0x49, 0x5c, 0x7f, - 0xf1, 0xba, 0xbd, 0xa4, 0x7c, 0x56, 0xf0, 0x3e, 0xb9, 0xa8, - 0x47, 0x61, 0x61, 0xe2, 0x8, 0x1a, 0xe6, 0x4e, 0x11, 0x66, - 0x8a, 0x48, 0x43, 0x1c, 0x80, 00, 0x2e, 0xa0, 0x12, 0x49, - 0xe0, 0x67, 0x26, 0xbc, 0x27, 0xe1, 0xe, 0x89, 0xe0, 0xd, - 0x5a, 0xc3, 0x54, 0x6f, 0x19, 0xcb, 0x60, 0x93, 0x47, 0x2a, - 0xb, 0x7f, 0xb5, 0x6a, 0x6, 0xd8, 0x95, 0x20, 0xee, 0xc0, - 0xe, 0xb9, 0xe7, 0x1e, 0xb5, 0x17, 0xc5, 0xcd, 0x1b, 0xe1, - 0xf6, 0x92, 0x9a, 0x69, 0xf0, 0x6d, 0xdd, 0xbb, 0xdc, 0xb9, - 0x6f, 0x3e, 0x3b, 0x4b, 0xc3, 0x73, 0x18, 0x4e, 0xc4, 0xb1, - 0x66, 0xc3, 0x67, 0xb6, 0x7a, 0x76, 0xaa, 0x95, 0xa2, 0xd5, - 0xc9, 0x8f, 0xbc, 0xb4, 0x3e, 0x9b, 0xd7, 0x75, 0xed, 0x33, - 0xc3, 0x5a, 0x4c, 0xba, 0xa6, 0xaf, 0x73, 0xf6, 0x6b, 0x28, - 0x8a, 0x87, 0x97, 0xcb, 0x67, 0xc1, 0x62, 00, 0xe1, 0x41, - 0x3d, 0x48, 0xed, 0x5c, 0x8f, 0xfc, 0x2e, 0xdf, 0x87, 0x9f, - 0xf4, 0x30, 0xff, 00, 0xe4, 0x95, 0xc7, 0xff, 00, 0x1b, - 0xad, 0x6d, 0x3f, 0x44, 0x87, 0xc5, 0x3f, 0xe, 0x34, 0xad, - 0x3b, 0xc5, 0x16, 0xef, 0x75, 0xe7, 0xd9, 0xdb, 0xb5, 0xd4, - 0x6e, 0xec, 0x8c, 0xce, 0x15, 0x5b, 0x24, 0xa9, 0x7, 0x39, - 0x1c, 0xf3, 0x5e, 0x3b, 0xf1, 0xb7, 0xe1, 0xf7, 0x85, 0xfc, - 0x23, 0xe1, 0x7d, 0x3e, 0xf3, 0x42, 0xd2, 0xfe, 0xc9, 0x71, - 0x2d, 0xe8, 0x89, 0xdf, 0xed, 0x12, 0xc9, 0x95, 0xd8, 0xc7, - 0x18, 0x76, 0x23, 0xa8, 0x14, 0x4f, 0xdc, 0x6d, 0x3e, 0xe3, - 0x8f, 0xbc, 0x93, 0x47, 0xa7, 0x27, 0xc6, 0xaf, 0x87, 0xd2, - 0x48, 0xb1, 0xa7, 0x88, 0x32, 0xcc, 0x40, 0x3, 0xec, 0x77, - 0x1c, 0x93, 0xff, 00, 0x6c, 0xeb, 0xb6, 0xbc, 0xbf, 0xb3, - 0xd3, 0xac, 0xde, 0xf2, 0xfa, 0xea, 0xb, 0x5b, 0x58, 0xc0, - 0x2f, 0x34, 0xf2, 0x4, 0x45, 0xc9, 0xc0, 0xcb, 0x1e, 0x7, - 0x24, 0xa, 0xf2, 0xdf, 0x5, 0x7c, 0x25, 0xf0, 0x3e, 0xa3, - 0xe0, 0xfd, 0xf, 0x54, 0xba, 0xd1, 0x3c, 0xcb, 0xc9, 0xed, - 0x22, 0x9a, 0x49, 0x3e, 0xd7, 0x30, 0xdc, 0xe5, 0x41, 0x27, - 0x1, 0xf1, 0xd7, 0xda, 0xb8, 0x7f, 0x89, 0xf7, 0xda, 0x8f, - 0xc4, 0xf, 0x8b, 0x76, 0x9e, 0x8, 0xb5, 0xb8, 0x30, 0xd8, - 0xdb, 0x4c, 0xb0, 0xa8, 0xea, 0xbb, 0xf6, 0xee, 0x92, 0x42, - 0x3b, 0x90, 0xa4, 0x80, 0x3d, 0x8f, 0x4c, 0x9a, 0x72, 0x56, - 0x97, 0x22, 0xde, 0xe2, 0x8b, 0xba, 0xe6, 0x7b, 0x1e, 0xab, - 0xff, 00, 0xb, 0xa7, 0xe1, 0xef, 0x9d, 0xe5, 0x7f, 0xc2, - 0x44, 0xbb, 0xb7, 0x6d, 0xcf, 0xd9, 0x67, 0xdb, 0x9f, 0xae, - 0xcc, 0x63, 0xdf, 0xa5, 0x76, 0xd6, 0x77, 0xb6, 0x9a, 0x8d, - 0xa4, 0x77, 0x76, 0x37, 0x50, 0xdd, 0x5b, 0x48, 0x32, 0x93, - 0x41, 0x20, 0x74, 0x6e, 0x71, 0xc3, 0xe, 0xd, 0x79, 0xd8, - 0xf8, 0xd, 0xe0, 0x31, 0xa5, 0xfd, 0x90, 0xd8, 0x5d, 0x19, - 0xf6, 0x6d, 0xfb, 0x6f, 0xda, 0x9f, 0xcd, 0xcf, 0xf7, 0xb1, - 0x9d, 0x99, 0xff, 00, 0x80, 0xe3, 0xda, 0xbc, 0xdf, 0xe1, - 0xbd, 0xee, 0xa5, 0xf0, 0xeb, 0xe2, 0xfd, 0xc7, 0x82, 0xae, - 0x2e, 0x9a, 0x6b, 0xb, 0x99, 0x8c, 0x24, 0x74, 0x52, 0xe5, - 0x77, 0x47, 0x20, 0x1d, 0x89, 0x18, 0x4, 0x7b, 0xf7, 0xc0, - 0xa2, 0x36, 0x6f, 0x97, 0xa8, 0x3b, 0xa5, 0xcd, 0xd0, 0xfa, - 0x3, 0x5c, 0xf1, 0xe, 0x91, 0xe1, 0xab, 0x3, 0x7b, 0xac, - 0xea, 0x10, 0x59, 0x5b, 0x8c, 0xe1, 0xa5, 0x6e, 0x5c, 0x81, - 0x9c, 0x2a, 0xf5, 0x63, 0xec, 0x1, 0x35, 0xcd, 0x59, 0x7c, - 0x61, 0xf0, 0x5, 0xfd, 0xdc, 0x76, 0xb0, 0xf8, 0x8e, 0x15, - 0x92, 0x43, 0x80, 0x67, 0x86, 0x58, 0x53, 0xa6, 0x79, 0x77, - 0x50, 0xa3, 0xf1, 0x35, 0xe3, 0x9f, 0x17, 0x65, 0x82, 0x6f, - 0x8d, 0x96, 0xd0, 0xf8, 0xa1, 0xee, 0x93, 0x41, 0x8d, 0x21, - 0xb, 0xe5, 0xe, 0x44, 0x24, 0x65, 0x8a, 0x8f, 0xf7, 0xf7, - 0x64, 0x8e, 0x70, 0x38, 0xe8, 0x2b, 0xb1, 0x6f, 0x85, 0x9f, - 0xc, 0x3c, 0x6d, 0xa3, 0x32, 0x78, 0x3e, 0xfa, 0xde, 0xd6, - 0xf3, 0xb, 0x28, 0x9a, 0xb, 0x97, 0x9d, 0xd1, 0x4f, 0x69, - 0x21, 0x77, 0xc8, 0x7, 0xdf, 0x69, 0xce, 0x3d, 0xc1, 0x98, - 0xb6, 0xd7, 0x31, 0x52, 0x49, 0x3e, 0x53, 0xda, 0x41, 0xc, - 0xa1, 0x94, 0x82, 0x8, 0xc8, 0x23, 0xbd, 0x2d, 0x73, 0xfe, - 0xa, 0xf0, 0xdd, 0xc7, 0x84, 0xbc, 0x2b, 0x69, 0xa2, 0x5c, - 0x6a, 0x6d, 0xa8, 0xfd, 0x9b, 0x70, 0x49, 0xda, 0x2f, 0x2c, - 0xec, 0x27, 0x21, 0x71, 0xb9, 0xb8, 0x19, 0xc0, 0xe7, 0xa5, - 0x74, 0x15, 0x4e, 0xd7, 0xd0, 0x95, 0x7e, 0xa1, 0x45, 0x14, - 0x52, 0x18, 0x51, 0x45, 0x14, 00, 0x51, 0x45, 0x14, 00, - 0x51, 0x45, 0x14, 00, 0x51, 0x45, 0x14, 00, 0x51, 0x45, - 0x14, 00, 0x51, 0x45, 0x14, 00, 0x51, 0x45, 0x14, 00, - 0x51, 0x45, 0x14, 00, 0x51, 0x45, 0x14, 00, 0x51, 0x45, - 0x14, 00, 0x51, 0x45, 0x14, 00, 0x51, 0x45, 0x14, 00, - 0x51, 0x45, 0x14, 00, 0x51, 0x45, 0x14, 00, 0x51, 0x45, - 0x14, 00, 0x51, 0x45, 0x14, 00, 0x51, 0x45, 0x14, 00, - 0x51, 0x45, 0x14, 00, 0x51, 0x45, 0x14, 00, 0x51, 0x45, - 0x14, 00, 0x51, 0x45, 0x14, 00, 0x51, 0x45, 0x14, 00, - 0x51, 0x45, 0x14, 00, 0x51, 0x45, 0x14, 00, 0x51, 0x45, - 0x14, 00, 0x51, 0x45, 0x14, 00, 0x51, 0x45, 0x14, 00, - 0x51, 0x45, 0x14, 00, 0x51, 0x45, 0x14, 00, 0x51, 0x45, - 0x14, 00, 0x51, 0x45, 0x14, 00, 0x51, 0x45, 0x14, 00, - 0x51, 0x45, 0x14, 00, 0x51, 0x45, 0x14, 00, 0x51, 0x45, - 0x14, 00, 0x51, 0x45, 0x14, 00, 0x51, 0x45, 0x14, 00, - 0x51, 0x45, 0x14, 0x1, 0xe6, 0xb0, 0x7f, 0xc8, 0x6b, 0x5f, - 0xff, 00, 0xb0, 0x93, 0xff, 00, 0xe8, 0x9, 0x5d, 0xa6, - 0x8f, 0xff, 00, 0x20, 0xa8, 0x7f, 0xe0, 0x5f, 0xfa, 0x11, - 0xae, 0x2e, 0xf, 0xf9, 0xd, 0x6b, 0xff, 00, 0xf6, 0x12, - 0x7f, 0xfd, 0x1, 0x2b, 0xb4, 0xd1, 0xff, 00, 0xe4, 0x15, - 0xf, 0xfc, 0xb, 0xff, 00, 0x42, 0x34, 0x1, 0x57, 0xc1, - 0x1f, 0xf2, 0x28, 0x58, 0xff, 00, 0xdb, 0x4f, 0xfd, 0x18, - 0xd5, 0xd0, 0x57, 0x3f, 0xe0, 0x8f, 0xf9, 0x14, 0x2c, 0x7f, - 0xed, 0xa7, 0xfe, 0x8c, 0x6a, 0xe8, 0x28, 00, 0xaf, 0x9d, - 0x7f, 0x69, 0x41, 0x9d, 0x67, 0xc3, 0xc3, 0xd6, 0x9, 0x7f, - 0xf4, 0x25, 0xaf, 0xa2, 0xab, 0xca, 0x7e, 0x2e, 0x7c, 0x33, - 0xd6, 0xbc, 0x7d, 0xa8, 0xe9, 0x57, 0x1a, 0x55, 0xd5, 0x84, - 0x29, 0x69, 0x1b, 0xac, 0x82, 0xea, 0x47, 0x52, 0x49, 0x20, - 0x8c, 0x6d, 0x46, 0xf4, 0xa1, 0x25, 0xcf, 0x1b, 0xed, 0x72, - 0x93, 0xd1, 0x95, 0x13, 0xf6, 0x72, 0xf0, 0x83, 0x22, 0x93, - 0xa9, 0x6b, 0x99, 0x23, 0x3f, 0xeb, 0xe2, 0xff, 00, 0xe3, - 0x55, 0xdc, 0xda, 0x78, 0x6e, 0xcf, 0xc2, 0x3f, 0xe, 0xee, - 0x74, 0x4b, 0x9, 0x27, 0x92, 0xda, 0xda, 0xd2, 0xe3, 0x63, - 0xce, 0xc0, 0xb9, 0xdd, 0xb9, 0x8e, 0x48, 00, 0x75, 0x27, - 0xb5, 0x74, 0xe8, 0x36, 0xa2, 0x83, 0xd4, 0xc, 0x55, 0x6d, - 0x4e, 0xd9, 0xef, 0x74, 0xab, 0xcb, 0x58, 0xca, 0x87, 0x9a, - 0x7, 0x8d, 0x4b, 0x74, 0x4, 0xa9, 0x3, 0x3f, 0x9d, 0x4d, - 0x5b, 0xb8, 0x4a, 0x2b, 0xa8, 0xa9, 0xef, 0x16, 0xcf, 0xb, - 0xfd, 0x9a, 0x2d, 0xe3, 0xd9, 0xe2, 0x2b, 0x9d, 0xbf, 0xbd, - 0xcc, 0x11, 0x83, 0xe8, 0x3e, 0x73, 0xfe, 0x7e, 0x95, 0x8b, - 0xf1, 0x2e, 0xe3, 0x59, 0x6f, 0xda, 0x6, 0xd8, 0x58, 0x59, - 0xc1, 0x7b, 0x7b, 0x7, 0xd9, 0xc5, 0x85, 0xbd, 0xc9, 0x2, - 0x37, 0x3b, 0x77, 00, 0x72, 0xcb, 0xfc, 0x45, 0xbb, 0x8e, - 0x6b, 0xd3, 0x3e, 0x10, 0xfc, 0x3b, 0xd5, 0xfc, 0x1, 0x6f, - 0xaa, 0xc7, 0xaa, 0xdc, 0x59, 0x4c, 0x6e, 0xde, 0x36, 0x8f, - 0xec, 0xae, 0xed, 0x8d, 0xa1, 0xb3, 0x9d, 0xca, 0xbe, 0xa2, - 0xac, 0x7c, 0x48, 0xf8, 0x5d, 0x1f, 0x8d, 0xa5, 0xb6, 0xd5, - 0x74, 0xfb, 0xf3, 0xa6, 0xeb, 0x96, 0x6b, 0x88, 0x6e, 00, - 0x3b, 0x5c, 0xc, 0x95, 0xc, 0x47, 0x2a, 0x43, 0x72, 0x18, - 0x67, 0x19, 0x3c, 0x1e, 0x31, 0x73, 0x7e, 0xfc, 0x64, 0xba, - 0x5b, 0xf2, 0x26, 0xb, 0xdd, 0x92, 0x7d, 0x4e, 0x3, 0xc6, - 0x9a, 0x5f, 0xc5, 0xef, 0x1d, 0xe9, 0x11, 0xe9, 0xba, 0xaf, - 0x83, 0xf4, 0xa8, 0xe3, 0x8a, 0x61, 0x32, 0x49, 0x6f, 0x71, - 0x1a, 0xba, 0xb0, 0x4, 0x75, 0x69, 0xc8, 0xc1, 0x7, 0xd2, - 0xa8, 0x7c, 0x5e, 0x8b, 0x5a, 0xd3, 0x7e, 0x17, 0xf8, 0x27, - 0x4b, 0xd5, 0x23, 0x68, 0xa5, 0x89, 0x59, 0x2e, 0x63, 0x2e, - 0xad, 0x89, 0x11, 0x42, 0xa7, 0x2a, 0x48, 0x3f, 0x29, 0x6e, - 0xf5, 0xd8, 0x45, 0xe0, 0x9f, 0x8b, 0xfa, 0x85, 0xf5, 0xa7, - 0xf6, 0xaf, 0x8f, 0xad, 0x2d, 0xad, 0xed, 0xdf, 0xcc, 0xf, - 0x64, 0x84, 0xb6, 0x47, 0x40, 0xc8, 0x23, 0x8c, 0x48, 0x3d, - 0x43, 0x12, 0x3d, 0x8d, 0x77, 0x7e, 0x2f, 0xf0, 0x4d, 0x9f, - 0x8c, 0xfc, 0x29, 0xfd, 0x89, 0xa9, 0x5c, 0xca, 0xd2, 0x20, - 0x56, 0x8a, 0xf4, 0xaa, 0xf9, 0x8b, 0x28, 0x18, 0xe, 0x40, - 0x1, 0x79, 0xc9, 0xc8, 00, 0x2, 0x9, 0xc6, 0x38, 0xc4, - 0xc9, 0x7b, 0xba, 0x77, 0x4f, 0xee, 0x2a, 0x2f, 0xde, 0x4d, - 0xf6, 0x6b, 0xef, 0x3c, 0xb6, 0x3b, 0x8f, 0x8b, 0xda, 0x87, - 0x83, 0x93, 0x46, 0x8b, 0xc1, 0x7a, 0x1b, 0x69, 0x33, 0xd8, - 0x8b, 0x74, 0xdb, 0x2a, 0x2, 0x62, 0x29, 0x80, 0x47, 0xef, - 0xfa, 0xe3, 0x7, 0xa7, 0x5a, 0xd5, 0xf8, 0x73, 0xe1, 0x8f, - 0x11, 0x78, 0x4f, 0xe1, 0x97, 0x8a, 0x74, 0xfd, 0x7e, 0xc8, - 0xda, 0x96, 0x8e, 0x69, 0x60, 0x53, 0x34, 0x72, 0x2, 0xc, - 0x44, 0x1f, 0xb8, 0xc7, 0x1c, 0x81, 0x55, 0x60, 0xf8, 0x79, - 0xf1, 0x73, 0x4e, 0xd2, 0xff, 00, 0xb0, 0xf4, 0xef, 0x1a, - 0xd8, 0x26, 0x93, 0x1e, 0x63, 0x84, 0xe5, 0x92, 0x65, 0x8f, - 0x3c, 0x61, 0xbc, 0xa2, 0xca, 0x71, 0xd8, 0x3f, 0x1d, 0x1, - 0xc5, 0x7a, 0x45, 0x87, 0x87, 0x75, 0x5b, 0x5f, 0x4, 0x5c, - 0xe8, 0x97, 0xfa, 0xec, 0xba, 0xbd, 0xf4, 0xb6, 0xf2, 0x42, - 0xb7, 0x77, 0x31, 0x88, 0xfa, 0xa9, 0x55, 0x7, 0x6e, 0x49, - 0x3, 0x8c, 0x96, 0x2c, 0xc4, 0xe4, 0xe7, 0xb0, 0x2a, 0x6b, - 0x19, 0xb5, 0xd5, 0x7c, 0xc5, 0xd, 0x25, 0x14, 0xfa, 0x33, - 0xe7, 0xaf, 0x84, 0xdf, 0xc, 0x74, 0x9f, 0x88, 0x1a, 0x5e, - 0xaf, 0x35, 0xfd, 0xe5, 0xed, 0xb4, 0xf6, 0xae, 0x89, 0x9, - 0x81, 0x93, 0x6e, 0x59, 0x49, 0xcb, 0x2, 0xa4, 0x9e, 0x40, - 0xe8, 0x45, 0x33, 0xc1, 0xf6, 0x9a, 0x47, 0x81, 0x7e, 0x28, - 0x7f, 0x61, 0xf8, 0xcf, 0x47, 0xb6, 0x9d, 0xa2, 0xb8, 0xb, - 0xd, 0xf4, 0x8c, 0xe0, 0x44, 0xc7, 0xee, 0x3e, 0xdc, 0xec, - 0x64, 0x3c, 0x1e, 0x46, 0x46, 0x73, 0x9e, 0x31, 0x5e, 0xcb, - 0xf0, 0x87, 0xe1, 0xf6, 0xad, 0xe0, 0xb, 0xd, 0x52, 0xd, - 0x56, 0xe2, 0xca, 0x66, 0xbb, 0x95, 0x1d, 0xd, 0xab, 0xbb, - 00, 0x14, 0x10, 0x73, 0xb9, 0x57, 0xd6, 0xa2, 0xf8, 0xb3, - 0xf0, 0xad, 0xfc, 0x7a, 0xb6, 0x77, 0xba, 0x5c, 0xb6, 0xb6, - 0xda, 0xad, 0xbf, 0xee, 0xd9, 0xee, 0xb, 0x2a, 0xcb, 0x17, - 0x5c, 0x12, 0xa0, 0x9c, 0x83, 0xd3, 0x8e, 0xe6, 0xaa, 0x4f, - 0x96, 0x69, 0xad, 0xb4, 0x26, 0x2b, 0x9a, 0x2d, 0x4b, 0x7d, - 0x4f, 0x4e, 0xaf, 0x19, 0xfd, 0xa4, 0x7f, 0xe4, 0x4a, 0xd2, - 0xbf, 0xec, 0x22, 0x3f, 0xf4, 0x5b, 0xd7, 0xa4, 0x78, 0x36, - 0xc7, 0x5c, 0xd3, 0x3c, 0x2d, 0x65, 0x61, 0xe2, 0x19, 0xed, - 0xae, 0x2f, 0xed, 0x97, 0xca, 0x33, 0x5b, 0xc8, 0xce, 0x24, - 0x41, 0xc2, 0x92, 0x58, 0x3, 0xbb, 0x1d, 0x7e, 0x99, 0xef, - 0x5c, 0xef, 0xc5, 0xaf, 0x3, 0x6a, 0x7e, 0x3d, 0xf0, 0xf5, - 0x96, 0x9f, 0xa5, 0xcf, 0x69, 0xc, 0xb0, 0x5d, 0x89, 0xd8, - 0xdd, 0x3b, 0x2a, 0x95, 0xd8, 0xcb, 0xc6, 0xd5, 0x6e, 0x72, - 0x45, 0x4d, 0x45, 0xd1, 0x79, 0x7e, 0x65, 0xc1, 0xf5, 0x66, - 0xdf, 0xc3, 0xcf, 0xf9, 0x27, 0x3e, 0x1c, 0xff, 00, 0xb0, - 0x74, 0x3f, 0xfa, 00, 0xaf, 0xb, 0xbe, 0xb9, 0x8f, 0xc2, - 0x5f, 0xb4, 0xd1, 0xbe, 0xd4, 0xdb, 0xc9, 0xb5, 0x92, 0xef, - 0x7f, 0x9b, 0x27, 0xa, 0x12, 0x58, 0xca, 0x86, 0xc9, 0xec, - 0xb, 0x72, 0x7b, 0x60, 0xfa, 0x57, 0xd0, 0x5e, 0x15, 0xd2, - 0xa7, 0xd0, 0xfc, 0x27, 0xa4, 0xe9, 0x57, 0x2f, 0x1b, 0xcf, - 0x67, 0x6b, 0x1c, 0x32, 0x34, 0x44, 0x95, 0x2c, 0xaa, 0x1, - 0xc1, 0x20, 0x1c, 0x7e, 0x15, 0xce, 0xfc, 0x44, 0xf8, 0x63, - 0xa5, 0xfc, 0x41, 0xb6, 0x85, 0xe6, 0x99, 0xac, 0xb5, 0x28, - 0x6, 0xd8, 0x6f, 0x11, 0x37, 0xfc, 0xb9, 0xc9, 0x56, 0x5c, - 0x8d, 0xc3, 0xa9, 0x1c, 0x82, 0xf, 0x7e, 0xa0, 0xdc, 0xdd, - 0xaa, 0xf3, 0xad, 0x77, 0xfb, 0x99, 0x31, 0x57, 0xa7, 0xc8, - 0xce, 0xe3, 0x23, 0x6e, 0xec, 0x8c, 0x63, 0x39, 0xaf, 0x99, - 0xa0, 0xba, 0x8b, 0xc5, 0xbf, 0xb4, 0xcc, 0x57, 0x9a, 0x53, - 0x79, 0xf6, 0xb1, 0xde, 0x2b, 0xf9, 0xa8, 0x32, 0xa5, 0x62, - 0x8c, 0x6, 0x6c, 0xfa, 0x12, 0xb8, 0x7, 0xbe, 0x47, 0xad, - 0x69, 0xff, 00, 0xc2, 0x96, 0xf8, 0x94, 0x2c, 0xce, 0x94, - 0xbe, 0x31, 0x83, 0xfb, 0x27, 0x1e, 0x57, 0xd9, 0xfe, 0xdf, - 0x72, 0x13, 0xcb, 0xcf, 0x4f, 0x2f, 0x6e, 0xde, 0x9f, 0xc3, - 0xd2, 0xbd, 0x3b, 0xe1, 0xe7, 0xc2, 0xfd, 0x27, 0xe1, 0xfc, - 0x12, 0xc9, 0xc, 0xad, 0x7b, 0xa9, 0xcc, 0xbb, 0x25, 0xbc, - 0x91, 0x36, 0xfc, 0xb9, 0xce, 0xd5, 0x5c, 0x9d, 0xa3, 0x80, - 0x4f, 0x24, 0x93, 0xdf, 0xa0, 0xa, 0x36, 0x52, 0x53, 0xec, - 0x12, 0xd6, 0x2e, 0x1d, 0xca, 0x3e, 0x27, 0x97, 0xe1, 0xcf, - 0x8f, 0xb5, 0xc3, 0xe1, 0x2d, 0x56, 0xe5, 0x5f, 0x5b, 0x81, - 0x9e, 0x38, 0x82, 0xc7, 0x24, 0x52, 0xc4, 0xf8, 0x39, 0xb, - 0x21, 0x5d, 0xa7, 0x8e, 0x70, 0x49, 0x7, 0x3, 0x83, 0x5e, - 0x6d, 0xe3, 0xf, 0x80, 0xb3, 0xf8, 0x73, 0x4f, 0xbb, 0xd7, - 0x74, 0x1d, 0x7b, 0x74, 0x56, 0x2a, 0x6e, 0x7c, 0xab, 0xa1, - 0xe5, 0xc9, 0x1a, 0x22, 0xee, 0xca, 0xc8, 0xbc, 0x33, 0xe4, - 0x71, 0xf2, 0xaf, 0xd7, 0xd7, 0xbc, 0xf8, 0x8f, 0xf0, 0x6a, - 0xf, 0x18, 0x6a, 0x4d, 0xae, 0x69, 0x37, 0xc3, 0x4e, 0xd6, - 0x36, 0x8d, 0xdb, 0x97, 0xf7, 0x73, 0x32, 0xfd, 0xd2, 0x48, - 0xe5, 0x5b, 0xa0, 0xdc, 0x33, 0xc0, 0x1c, 0x57, 0x21, 0x27, - 0xc1, 0x8f, 0x89, 0x1a, 0xc6, 0xdb, 0x3d, 0x77, 0xc6, 0xc9, - 0x36, 0x9c, 0xec, 0xc, 0xaa, 0xd7, 0xd7, 0x17, 0x18, 0xc7, - 0x20, 0x88, 0xdc, 00, 0xc7, 0x3e, 0xa4, 0x54, 0x24, 0xed, - 0xd9, 0x96, 0xed, 0x7d, 0x75, 0x47, 0x6d, 0xf0, 0x3f, 0xc5, - 0x9a, 0x97, 0x8a, 0x7c, 0x19, 0x28, 0xd5, 0x66, 0x7b, 0x8b, - 0x9b, 0x19, 0xfc, 0x81, 0x70, 0xfc, 0xb4, 0x89, 0xb4, 0x11, - 0xb8, 0xf7, 0x23, 0x24, 0x67, 0xa9, 0xe3, 0x3c, 0xf3, 0x5e, - 0x9b, 0x5c, 0xf7, 0x83, 0x3c, 0x1f, 0xa7, 0x78, 0x23, 0xc3, - 0xd1, 0xe9, 0x3a, 0x76, 0xe7, 0x1b, 0xbc, 0xc9, 0xa6, 0x7f, - 0xbd, 0x2c, 0x84, 0xc, 0xb1, 0xf4, 0xe8, 00, 0x1d, 0x80, - 0xfc, 0x6b, 0xa1, 0xad, 0x26, 0xd3, 0x7a, 0x19, 0xc5, 0x3b, - 0x6a, 0x14, 0x51, 0x45, 0x49, 0x41, 0x45, 0x14, 0x50, 0x1, - 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, - 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, - 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, - 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, - 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, - 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, - 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, - 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, - 0x45, 0x19, 0xa3, 0x22, 0x80, 0xa, 0x29, 0xb, 0x1, 0x4d, - 0xf3, 0x7, 0xa1, 0xa0, 0x7, 0xd1, 0x4c, 0xf3, 0x57, 0xde, - 0x8f, 0x31, 0x7d, 0xe8, 0x1, 0xf4, 0x52, 0x6, 0x4, 0x75, - 0x14, 0x64, 0x7a, 0xd0, 0x2, 0xd1, 0x49, 0x91, 0xeb, 0x46, - 0x47, 0xad, 00, 0x2d, 0x14, 0x66, 0x8a, 00, 0x28, 0xa3, - 0x34, 0x64, 0x7a, 0xd0, 0x1, 0x45, 0x19, 0x1e, 0xb4, 0x50, - 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, - 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, - 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, - 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x7, 0x9a, 0xc1, 0xff, - 00, 0x21, 0xad, 0x7f, 0xfe, 0xc2, 0x4f, 0xff, 00, 0xa0, - 0x25, 0x76, 0x9a, 0x3f, 0xfc, 0x82, 0xa1, 0xff, 00, 0x81, - 0x7f, 0xe8, 0x46, 0xb8, 0xb8, 0x3f, 0xe4, 0x35, 0xaf, 0xff, - 00, 0xd8, 0x49, 0xff, 00, 0xf4, 0x4, 0xae, 0xd3, 0x47, - 0xff, 00, 0x90, 0x54, 0x3f, 0xf0, 0x2f, 0xfd, 0x8, 0xd0, - 0x5, 0x5f, 0x4, 0x7f, 0xc8, 0xa1, 0x63, 0xff, 00, 0x6d, - 0x3f, 0xf4, 0x63, 0x57, 0x41, 0x5c, 0xff, 00, 0x82, 0x3f, - 0xe4, 0x50, 0xb1, 0xff, 00, 0xb6, 0x9f, 0xfa, 0x31, 0xab, - 0xa0, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0xc7, 0x4d, - 0x62, 0xe8, 0x78, 0xb5, 0xb4, 0x59, 0xac, 0xe1, 0x58, 0x1a, - 0xd1, 0xae, 0xa1, 0xb8, 0x4b, 0x82, 0xcc, 0xc1, 0x59, 0x54, - 0x86, 0x42, 0x80, 0x2f, 0x2d, 0xd9, 0x8f, 0x4e, 0xd5, 0xb1, - 0x47, 0x4b, 0x87, 0x5b, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, - 0x56, 0x5e, 0x9d, 0x6, 0xb1, 0x1e, 0xb1, 0xab, 0x4b, 0x7f, - 0x77, 0xc, 0xba, 0x7c, 0xaf, 0x19, 0xb0, 0x89, 0x6, 0x1a, - 0x25, 0x9, 0x87, 0xd, 0xf2, 0x8e, 0xad, 0xcf, 0x53, 0xf8, - 0x50, 0x6, 0xa5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, - 0x5, 0x14, 0x51, 0x40, 0x5, 0x15, 0x1c, 0xed, 0x32, 0xdb, - 0xc8, 0xd6, 0xf1, 0xc7, 0x24, 0xe1, 0x49, 0x8d, 0x24, 0x72, - 0x8a, 0xcd, 0xd8, 0x16, 00, 0x90, 0x3d, 0xf0, 0x7e, 0x95, - 0x9f, 0xe1, 0xdd, 0x5a, 0x4d, 0x73, 0x43, 0x86, 0xfe, 0x5b, - 0x65, 0xb6, 0x91, 0xde, 0x44, 0x78, 0x92, 0x5f, 0x30, 0x29, - 0x49, 0x19, 0xe, 0x1b, 0x6a, 0xe4, 0x7c, 0xb9, 0xe8, 0x3a, - 0xd0, 0x6, 0xa5, 0x14, 0x54, 0x17, 0x97, 0x51, 0x58, 0xd8, - 0xdc, 0x5e, 0x4d, 0x91, 0x14, 0x11, 0xb4, 0xaf, 0x81, 0x93, - 0xb5, 0x46, 0x4f, 0xe8, 0x29, 0x37, 0x65, 0x76, 0x9, 0x5f, - 0x42, 0x7a, 0x2b, 0x9e, 0xd3, 0x35, 0x4f, 0x11, 0xea, 0x22, - 0xda, 0xe5, 0xb4, 0x3d, 0x3a, 0xde, 0xc6, 0x7c, 0x3e, 0x5f, - 0x53, 0x63, 0x3a, 0xc6, 0x79, 0x4, 0xa0, 0x84, 0xae, 0xec, - 0x76, 0xf, 0x8f, 0xf6, 0xbb, 0xd7, 0x43, 0x54, 0xd5, 0x84, - 0x9d, 0xc2, 0x8a, 0x28, 0xa4, 0x30, 0xa2, 0x8a, 0x28, 00, - 0xa2, 0x8a, 0x28, 00, 0xa2, 0x91, 0xc3, 0x14, 0x60, 0xa7, - 0xd, 0x8e, 0xf, 0xbd, 0x66, 0xf8, 0x7e, 0xd, 0x5a, 0xdf, - 0x41, 0xb4, 0x87, 0x5d, 0xba, 0x86, 0xeb, 0x53, 0x55, 0x22, - 0xe2, 0x68, 0x46, 0x11, 0xce, 0x4e, 0x31, 0xf2, 0xaf, 0x6c, - 0x76, 0x14, 0x1, 0xa7, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, - 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, - 0x45, 0x14, 0x50, 0x1, 0x45, 0x15, 0x99, 0xa6, 0x6a, 0xff, - 00, 0xda, 0x3a, 0x8e, 0xad, 0x69, 0xe4, 0x79, 0x7f, 0xd9, - 0xf7, 0x2b, 0x6, 0xed, 0xf9, 0xf3, 0x33, 0x1a, 0x3e, 0x71, - 0x8e, 0x3e, 0xfe, 0x31, 0xcf, 0x4a, 00, 0xd3, 0xa2, 0x8a, - 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0xb2, 0x75, 0xeb, - 0xfd, 0x53, 0x4d, 0xb1, 0x7b, 0xad, 0x3a, 0xc2, 0xce, 0xed, - 0x22, 0x8d, 0xe4, 0x98, 0x5c, 0x5e, 0x34, 0x4, 0x5, 0x19, - 0xf9, 0x76, 0xc6, 0xfb, 0x89, 0xe7, 0xae, 0x3b, 0x55, 0xcd, - 0x32, 0xf3, 0xfb, 0x47, 0x49, 0xb3, 0xbe, 0xf2, 0xfc, 0xbf, - 0xb4, 0xc0, 0x93, 0x6c, 0xce, 0x76, 0xee, 0x50, 0x71, 0x9e, - 0xfd, 0x68, 0x5a, 0x83, 0xd2, 0xc5, 0xaa, 0x2b, 0x9f, 0xd5, - 0xf5, 0xbd, 0x53, 0x49, 0xd4, 0xec, 0xd1, 0xb4, 0xcb, 0x39, - 0x34, 0xeb, 0xab, 0xb8, 0xad, 0x56, 0x71, 0x7a, 0xc2, 0x65, - 0x2f, 0xc6, 0x4c, 0x7e, 0x56, 0x30, 0xe, 0x7f, 0x8e, 0xba, - 0xa, 0x16, 0xaa, 0xe1, 0xd6, 0xc1, 0x45, 0x14, 0x50, 0x1, - 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, - 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, - 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x4c, 0x67, - 0x2, 0x87, 0x6c, 0x56, 0x5b, 0xea, 0x2a, 0xda, 0xbc, 0x76, - 0x11, 0xe4, 0xc8, 00, 0x77, 0x3d, 0x80, 0xf4, 0xa4, 0xda, - 0x5b, 0x8a, 0x52, 0x4b, 0x73, 0x4c, 0x6, 0x6e, 0x49, 0x22, - 0xa3, 0x96, 0xd9, 0xa5, 0x65, 0xcc, 0xf2, 0x28, 0x1d, 0x94, - 0x91, 0x9a, 0xb0, 0x3a, 0x57, 0x1f, 0xe3, 0xdf, 0x88, 0x1a, - 0x77, 0x81, 0xb4, 0xc1, 0x2d, 0xc7, 0xef, 0x6e, 0xe5, 0xe2, - 0x18, 0x17, 0xab, 0x1f, 0x5f, 0xa7, 0x4a, 0x1a, 0x4f, 0x46, - 0x12, 0x8a, 0x92, 0xb3, 0x37, 0xe5, 0xd2, 0x7c, 0xc6, 0xcf, - 0xdb, 0x2e, 0x47, 0xb0, 0x73, 0x51, 0x1d, 0x15, 0xb2, 0x36, - 0xde, 0xcc, 0x31, 0xef, 0x5e, 0x13, 0xe1, 0xdf, 0x8b, 0xfe, - 0x31, 0xf1, 0x2f, 0x8b, 0xed, 0x34, 0xf8, 0x96, 0x18, 0x20, - 0x9a, 0x4c, 0xb2, 0x79, 0x79, 0x21, 0x7e, 0xa6, 0xbd, 0x43, - 0x42, 0xf8, 0x8f, 0x16, 0xb1, 0xe3, 0x7b, 0xbf, 0xd, 0xb, - 0x57, 0x59, 0x2d, 0x94, 0xe6, 0x53, 0xd0, 0x91, 0xd6, 0xb3, - 0xf6, 0x30, 0xfe, 0x9b, 0x31, 0xfa, 0xbd, 0x3d, 0xed, 0xf8, - 0xb3, 0xa7, 0x6d, 0x2a, 0xe4, 0xfd, 0xdb, 0xf7, 0x1f, 0xf0, - 0x11, 0x49, 0xfd, 0x9b, 0x7e, 0x6, 0x16, 0xff, 00, 0xf3, - 0x4a, 0x97, 0x53, 0xd5, 0x3e, 0xc0, 0x51, 0x42, 0x6, 0x66, - 0xac, 0xf1, 0xe2, 0x46, 0xef, 00, 0xfc, 0xeb, 0x9a, 0xa5, - 0x5a, 0x10, 0x93, 0x8c, 0xa4, 0xef, 0xea, 0xce, 0x4a, 0xb5, - 0xb0, 0xd4, 0xe6, 0xe1, 0x29, 0x34, 0xfd, 0x59, 0x70, 0xd8, - 0xea, 0x7b, 0x7e, 0x5d, 0x44, 0x67, 0xdd, 0x29, 0xa2, 0xd3, - 0x57, 0x51, 0x8f, 0xb6, 0x46, 0xc7, 0xd4, 0x8c, 0x55, 0x71, - 0xe2, 0x31, 0xde, 0x2a, 0x70, 0xf1, 0x1c, 0x79, 0xe6, 0x23, - 0x52, 0xab, 0xe1, 0xff, 00, 0x9d, 0xfd, 0xec, 0x95, 0x89, - 0xc2, 0xf4, 0xa8, 0xfe, 0xf6, 0x58, 0x11, 0x6a, 0xea, 0x98, - 0xf3, 0x21, 0x66, 0xf5, 0x39, 0xa0, 0xd, 0x65, 0x7a, 0x8b, - 0x76, 0xff, 00, 0x81, 0x1a, 0x96, 0xdb, 0x58, 0xb5, 0xb9, - 0x60, 0xbb, 0xb6, 0x31, 0xec, 0x6b, 0x42, 0xba, 0x20, 0xa3, - 0x35, 0x78, 0x4d, 0xfd, 0xe7, 0x55, 0x35, 0x1a, 0x8b, 0x9a, - 0x9c, 0xdb, 0xf9, 0x99, 0x5b, 0xf5, 0x8d, 0xb9, 0xf2, 0xa0, - 0xcf, 0xa6, 0xe3, 0x48, 0x25, 0xd6, 00, 0x3b, 0xad, 0xa2, - 0xf6, 0xda, 0xf5, 0x7a, 0xee, 0xf2, 0x2b, 0x34, 0xd, 0x29, - 0xc0, 0x27, 0x2, 0xaa, 0xd, 0x76, 0xcf, 0x3f, 0x78, 0xd4, - 0xca, 0x50, 0x83, 0xb4, 0xaa, 0x59, 0xfc, 0xbf, 0xc8, 0x89, - 0xce, 0x10, 0x97, 0x2c, 0xaa, 0xb4, 0xfe, 0x5f, 0xe4, 0x35, - 0x6e, 0x75, 0x20, 0xbf, 0x3d, 0x91, 0x27, 0xfd, 0x97, 0x14, - 0xb, 0xeb, 0xe0, 0x7e, 0x6d, 0x3e, 0x5c, 0x7b, 0x30, 0xa9, - 0x6, 0xb5, 0x64, 0x7f, 0xe5, 0xa7, 0xe9, 0x4f, 0x1a, 0xbd, - 0x97, 0xfc, 0xf6, 0x14, 0x7b, 0x48, 0x74, 0xa9, 0xf9, 0x2, - 0xab, 0xe, 0x95, 0x7f, 0x2f, 0xf2, 0x21, 0x5d, 0x46, 0xe8, - 0xb1, 0xce, 0x9d, 0x38, 0x1d, 0x8e, 0x47, 0xf8, 0xd2, 0x7f, - 0x6a, 0xcc, 0x1b, 0x7, 0x4f, 0xb9, 0x3, 0xd7, 0x19, 0x15, - 0x64, 0x6a, 0x96, 0x67, 0xfe, 0x5b, 0x2d, 0x4d, 0x15, 0xdc, - 0x13, 0xb6, 0xd8, 0xe4, 0x56, 0x3e, 0x80, 0xd3, 0x4e, 0xfb, - 0x54, 0xfc, 0x8a, 0x52, 0x72, 0x76, 0x55, 0x7f, 0x22, 0x90, - 0xd5, 0xc1, 0x3c, 0xda, 0xdc, 0xf, 0x73, 0x19, 0xa4, 0x3a, - 0xd4, 0x20, 0xe0, 0xc3, 0x38, 0xff, 00, 0xb6, 0x46, 0xb5, - 0x28, 0xc0, 0xad, 0x39, 0x6a, 0x7f, 0x37, 0xe0, 0x6b, 0xc9, - 0x57, 0xf9, 0xbf, 0xf, 0xf8, 0x26, 0x6f, 0xf6, 0xcd, 0xa8, - 0x3f, 0xf2, 0xd7, 0xfe, 0xfd, 0x1f, 0xf0, 0xa3, 0xfb, 0x72, - 0xc8, 0x36, 0xd2, 0xee, 0xf, 0xba, 0x11, 0x57, 0x5e, 0x58, - 0x10, 0xfc, 0xec, 0x80, 0xfb, 0xd3, 0x5, 0xcd, 0xa1, 0xe0, - 0x49, 0x1f, 0xe6, 0x2a, 0x6f, 0x35, 0xbc, 0x97, 0xdd, 0xff, - 00, 0x4, 0x8e, 0x6a, 0x8b, 0x47, 0x35, 0xf7, 0x7f, 0xc1, - 0x2b, 0x9d, 0x66, 0xc8, 0x1c, 0x19, 0x80, 0x34, 0xf1, 0xab, - 0x58, 0xf7, 0xb9, 0x8c, 0x7b, 0x13, 0x56, 0x4, 0x70, 0x3f, - 0x21, 0x50, 0xe7, 0xda, 0x90, 0xda, 0xdb, 0x9e, 0xb0, 0xa1, - 0xff, 00, 0x80, 0xd3, 0xfd, 0xef, 0x46, 0x8a, 0xfd, 0xf7, - 0x46, 0xbf, 0x1f, 0xf3, 0x18, 0x2f, 0xed, 0x3f, 0xe7, 0xe6, - 0x1f, 0xfb, 0xec, 0x53, 0xfe, 0xd7, 0x6e, 0x46, 0x44, 0xf1, - 0xe3, 0xfd, 0xea, 0x61, 0xd3, 0xed, 0x18, 0xe4, 0xdb, 0xa7, - 0xe5, 0x48, 0x74, 0xdb, 0x23, 0xff, 00, 0x2e, 0xb1, 0x7f, - 0xdf, 0x22, 0x9f, 0xef, 0x7c, 0x87, 0xfb, 0xef, 0x2f, 0xc4, - 0x98, 0x5c, 0x42, 0x46, 0x44, 0x8b, 0x8f, 0xad, 0x3f, 0x70, - 0x23, 0x39, 0xaa, 0x67, 0x49, 0xb1, 0x3f, 0xf2, 0xec, 0x9f, - 0x95, 0x23, 0x69, 0x16, 0x4d, 0xd6, 0x2f, 0xc8, 0xd1, 0x7a, - 0xbd, 0x97, 0xdf, 0xff, 00, 00, 0x2f, 0x5b, 0xb2, 0xfb, - 0xff, 00, 0xe0, 0x17, 0x72, 0x8, 0xce, 0x78, 0xa3, 0x23, - 0xd6, 0xb3, 0xff, 00, 0xb1, 0x2c, 0x87, 0xdd, 0x57, 0x5f, - 0xf7, 0x5c, 0x8f, 0xe5, 0x4b, 0xfd, 0x8f, 0x6d, 0xb7, 0x1, - 0xe7, 0x1f, 0xf6, 0xd5, 0xbf, 0xc6, 0x8e, 0x6a, 0x9f, 0xca, - 0xbe, 0xff, 00, 0xf8, 0x2, 0xe7, 0xad, 0xfc, 0xab, 0xef, - 0xff, 00, 0x80, 0x68, 0x51, 0x59, 0x4f, 0xa4, 0xbc, 0x68, - 0xc6, 0xb, 0xeb, 0x88, 0xf1, 0xc8, 0xcb, 0x16, 0xfe, 0x75, - 0x94, 0xda, 0xe6, 0xa3, 0xa5, 0x48, 0x45, 0xe2, 0xa5, 0xd5, - 0xb8, 0xfe, 0x34, 0x18, 0x71, 0xf8, 0x77, 0xa1, 0x54, 0x92, - 0xf8, 0xa3, 0x6f, 0xc4, 0x15, 0x59, 0x2f, 0x8e, 0x2d, 0x7e, - 0x27, 0x55, 0x45, 0x57, 0xb3, 0xbe, 0x82, 0xfa, 0xd9, 0x27, - 0xb7, 0x70, 0xe8, 0xc3, 0x23, 0xdb, 0xeb, 0x56, 0x33, 0x9a, - 0xd4, 0xdc, 0x28, 0xa2, 0x8a, 00, 0xf3, 0x58, 0x3f, 0xe4, - 0x35, 0xaf, 0xff, 00, 0xd8, 0x49, 0xff, 00, 0xf4, 0x4, - 0xae, 0xd3, 0x47, 0xff, 00, 0x90, 0x54, 0x3f, 0xf0, 0x2f, - 0xfd, 0x8, 0xd7, 0x17, 0x7, 0xfc, 0x86, 0xb5, 0xff, 00, - 0xfb, 0x9, 0x3f, 0xfe, 0x80, 0x95, 0xda, 0x68, 0xff, 00, - 0xf2, 0xa, 0x87, 0xfe, 0x5, 0xff, 00, 0xa1, 0x1a, 00, - 0xab, 0xe0, 0x8f, 0xf9, 0x14, 0x2c, 0x7f, 0xed, 0xa7, 0xfe, - 0x8c, 0x6a, 0xe8, 0x2b, 0x9f, 0xf0, 0x47, 0xfc, 0x8a, 0x16, - 0x3f, 0xf6, 0xd3, 0xff, 00, 0x46, 0x35, 0x74, 0x14, 00, - 0x57, 0x2b, 0x25, 0x85, 0xaf, 0x88, 0xfc, 0x57, 0xa9, 0xda, - 0x6b, 0x10, 0xc7, 0x77, 0x67, 0x61, 0x1c, 0x22, 0x1b, 0x29, - 0xd4, 0x3c, 0x45, 0x9c, 0x33, 0x19, 0x19, 0xf, 0xc, 0x7f, - 0x84, 0x12, 0x38, 0xda, 0x71, 0xd4, 0xd7, 0x55, 0x59, 0x5a, - 0x96, 0x85, 0x1d, 0xfd, 0xda, 0x5e, 0xc1, 0x79, 0x75, 0xa7, - 0xdf, 0xa2, 0x79, 0x7f, 0x6a, 0xb4, 0x29, 0xb9, 0x93, 0x39, - 0xd8, 0xca, 0xea, 0xc8, 0xc3, 0x24, 0x91, 0x95, 0x24, 0x64, - 0xe0, 0x8c, 0x9c, 0xa1, 0x9c, 0xee, 0x9d, 0xa3, 0x59, 0xe8, - 0xbf, 0x13, 0x92, 0x1b, 0x2, 0x62, 0xb5, 0x7d, 0x1e, 0x46, - 0x5b, 0x35, 0x6f, 0xdd, 0xc0, 0x7c, 0xe4, 0xc9, 0x45, 0xfe, - 0x5, 0x3f, 0xdd, 0x18, 0x19, 0x4, 0x81, 0xc9, 0xac, 0xcf, - 0x2e, 0x3d, 0x6f, 0xc4, 0xda, 0xe4, 0xfa, 0xbf, 0x84, 0x6e, - 0xfc, 0x41, 0xf6, 0x4b, 0xb3, 0x69, 0x6c, 0xa7, 0xec, 0xaf, - 0x5, 0xbc, 0x61, 0x11, 0xb0, 0xb1, 0xcd, 0x2a, 0xe1, 0xd8, - 0x9d, 0xc5, 0xb6, 0xe4, 0x82, 00, 0x38, 0x15, 0xd2, 0xd9, - 0xf8, 0x32, 0xb, 0x2d, 0x7a, 0x2d, 0x6d, 0x35, 0x6d, 0x4e, - 0x4d, 0x43, 0xcb, 0x68, 0xae, 0x25, 0x95, 0xe3, 0x7f, 0xb4, - 0xa1, 0x60, 0xdb, 0x58, 0x14, 0xc2, 0x80, 0x40, 0xc0, 0x8f, - 0x60, 0x1c, 0xfa, 0x9c, 0xdd, 0xbf, 0xf0, 0xfa, 0xdc, 0xdf, - 0x35, 0xf5, 0x9e, 0xa3, 0x7d, 0xa5, 0xdd, 0xc8, 0xa1, 0x26, - 0x96, 0xcc, 0xc6, 0x44, 0xaa, 0x3a, 0x6e, 0x49, 0x11, 0xd0, - 0x91, 0xfd, 0xed, 0xbb, 0xb1, 0xc6, 0x71, 0xc5, 0x35, 0xb2, - 0xbf, 0x9f, 0xe7, 0x7f, 0xf8, 0x2, 0xea, 0xed, 0xe5, 0xf9, - 0x19, 0xbe, 0x12, 0x83, 0x50, 0xb4, 0xbd, 0xd4, 0x6d, 0xdb, - 0x48, 0xbd, 0xd3, 0x74, 0x7c, 0x46, 0xf6, 0x70, 0xdd, 0xcd, - 0x13, 0x98, 0x98, 0x82, 0x1d, 0x10, 0x47, 0x23, 0xed, 0x8c, - 0x61, 0x48, 0x19, 00, 0x64, 0x80, 0x31, 0x80, 0x32, 0xae, - 0x7c, 0x1f, 0x72, 0x97, 0x77, 0xb3, 0x5c, 0x68, 0x1a, 0x46, - 0xba, 0xf2, 0xcf, 0x24, 0xe9, 0xa8, 0x5c, 0xdd, 0xbc, 0x57, - 0xa8, 0xac, 0x72, 0xa9, 0x19, 0xf2, 0x9b, 0x61, 0x41, 0x85, - 0x52, 0xb2, 0x20, 0xe0, 0x1f, 0x94, 0xe4, 0xd7, 0x55, 0xa5, - 0x68, 0x36, 0xfa, 0x5c, 0xf3, 0xdd, 0xb5, 0xc5, 0xcd, 0xed, - 0xfd, 0xc0, 0x55, 0x9a, 0xf2, 0xe9, 0xc1, 0x91, 0xd5, 0x49, - 0xda, 0xa0, 0x28, 0x8, 0xaa, 0x32, 0x78, 0x55, 0x51, 0xdc, - 0xe4, 0x92, 0x6b, 0x32, 0xcb, 0xc1, 0x8f, 0xa6, 0x5a, 0x2d, - 0x9e, 0x9d, 0xe2, 0x6d, 0x72, 0xd6, 0xd1, 0x73, 0xfb, 0x95, - 0x78, 0x24, 0x19, 0x27, 0x9c, 0x34, 0x91, 0x33, 0x2f, 0xd1, - 0x48, 0x3, 0xb0, 0x14, 0x3d, 0x40, 0xb3, 0xe1, 0x6b, 0x6d, - 0x2a, 0x5f, 0x5, 0x58, 0xd9, 0xd9, 0xac, 0xb3, 0xe9, 0xa2, - 0xdc, 0xdb, 0xf9, 0x77, 0xaa, 0xb, 0x90, 0x32, 0xac, 0x92, - 0xc, 0x60, 0x90, 0x41, 0x7, 0xb1, 0xc1, 0xeb, 0x59, 0xfe, - 0x17, 0xd3, 0x6c, 0x34, 0x9f, 0x17, 0xf8, 0x9a, 0xd7, 0x4d, - 0xb2, 0xb6, 0xb3, 0xb7, 0xb, 0x68, 0xc2, 0x2b, 0x68, 0x96, - 0x34, 0x4, 0xa3, 0x64, 0xe1, 0x40, 0x15, 0xbc, 0xba, 0x44, - 0x76, 0xda, 0x2a, 0x69, 0x7a, 0x6d, 0xc4, 0xfa, 0x74, 0x71, - 0xa8, 0x58, 0xe5, 0xb7, 0xda, 0xee, 0x9c, 0xe4, 0xf3, 0x22, - 0xb8, 0x24, 0xf3, 0x92, 0xc0, 0x93, 0x92, 0x7a, 0xf3, 0x58, - 0xf0, 0x78, 0x3a, 0xea, 0xde, 0xfe, 0xe6, 0xf6, 0x2f, 0x16, - 0xeb, 0x8b, 0x71, 0x74, 0x10, 0x4c, 0xfe, 0x5d, 0x99, 0xdf, - 0xb0, 0x10, 0xbc, 0x7d, 0x9f, 0x3, 00, 0x9e, 0x94, 0x3d, - 0x58, 0xad, 0xa2, 0x26, 0xf1, 0x36, 0x6f, 0x35, 0x2d, 0x13, - 0x47, 0x97, 0x78, 0xb1, 0xbf, 0x9e, 0x41, 0x74, 0x14, 0xe3, - 0xcd, 0x54, 0x89, 0x98, 0x46, 0x4f, 0xf7, 0x58, 0x81, 0x91, - 0xdc, 0x29, 0x7, 0x20, 0x9a, 0xe7, 0x3c, 0x53, 0xe0, 0xff, - 00, 0xf, 0xda, 0xea, 0xfe, 0x18, 0x8e, 0xdb, 0x4e, 0xb3, - 0xb7, 0xb4, 0xb8, 0xd5, 0x4, 0x73, 0xe9, 0xe9, 0xa, 0x8b, - 0x79, 0xff, 00, 0x73, 0x29, 0xc, 0xd1, 0x7d, 0xd2, 0xc3, - 0x1f, 0x7b, 0x19, 0xc7, 0x7, 0xa0, 0xc7, 0x67, 0xaf, 0x5a, - 0x69, 0xf7, 0x3a, 0x53, 0xbe, 0xa5, 0x72, 0x2d, 0x62, 0xb7, - 0x3e, 0x72, 0xde, 0x79, 0xa2, 0x36, 0xb6, 0x61, 0xd2, 0x40, - 0xe7, 0x85, 0x23, 0x27, 0xaf, 0x4, 0x12, 0x8, 0x20, 0x90, - 0x78, 0x91, 0x16, 0x9d, 0xad, 0x78, 0x9b, 0x40, 0x97, 0x4d, - 0xf1, 0x1c, 0x9e, 0x24, 0xbb, 0xb3, 0xbc, 0x33, 0x4b, 0x71, - 0xe7, 0x43, 0x22, 0x5a, 0x41, 0xe5, 0x38, 0x20, 0xf9, 0x2a, - 0xa8, 0xa5, 0x98, 0xa8, 0x19, 0x1b, 0x8e, 0x3d, 0x14, 0xe0, - 0x5f, 0x12, 0xf5, 0x45, 0x7d, 0x97, 0xe8, 0xff, 00, 0x22, - 0xfe, 0xbd, 0xe1, 0xed, 0x37, 0x51, 0xf8, 0x8f, 0xa3, 0x2c, - 0xd6, 0xe8, 0xa9, 0x2e, 0x9f, 0x73, 0xf6, 0x95, 0x8d, 0x42, - 0xfd, 0xa5, 0x11, 0xa1, 0xdb, 0x1c, 0x84, 0xc, 0xb2, 0xc, - 0xfd, 0xdc, 0xe0, 0xf4, 0x39, 0x4, 0x83, 0x63, 0x44, 0xb3, - 0xb6, 0xd0, 0xfe, 0x21, 0x6a, 0x5a, 0x4e, 0x97, 0x4, 0x76, - 0x9a, 0x74, 0xba, 0x6c, 0x37, 0x66, 0xd6, 0x15, 0xdb, 0x12, - 0xcb, 0xe6, 0x3a, 0x16, 0x55, 0x1c, 0x2e, 0x55, 0x57, 0x38, - 0xc6, 0x70, 0xf, 0x5a, 0xd7, 0xba, 0xf0, 0xe1, 0xba, 0xf1, - 0x35, 0xae, 0xb9, 0xfd, 0xaf, 0xa8, 0x45, 0x25, 0xb2, 0x18, - 0xd2, 0xd9, 0x4, 0x3e, 0x56, 0xc6, 0x2a, 0x5d, 0x4e, 0x63, - 0x2d, 0xf3, 0x14, 0x5c, 0xfc, 0xd9, 0x18, 0xe0, 0x8a, 0x23, - 0xf0, 0xe2, 0xc7, 0xe2, 0xc9, 0x3c, 0x43, 0xfd, 0xa9, 0x7c, - 0xd2, 0xc9, 00, 0xb7, 0x36, 0xc4, 0x45, 0xe4, 0xf9, 0x63, - 0x24, 0xf, 0xf5, 0x7b, 0xf8, 0x62, 0x5b, 0x3b, 0xb3, 0x93, - 0xe9, 0xc5, 0x35, 0xd3, 0xe7, 0xfa, 0xff, 00, 0xc0, 0x7, - 0xb3, 0xf9, 0x7e, 0x87, 0xf, 0xa3, 0xc1, 0x6f, 0xae, 0x43, - 0x73, 0xaa, 0xeb, 0x3e, 0x6, 0xbb, 0xd7, 0xaf, 0x2e, 0x2e, - 0x66, 0x43, 0x73, 0x28, 0xb3, 0x91, 0x23, 0x44, 0x91, 0xd5, - 0x63, 0x8d, 0x65, 0x98, 0x14, 0xa, 0x6, 0x8, 0xda, 0xa4, - 0x9c, 0x93, 0xcd, 0x75, 0x1a, 0x14, 0xda, 0xbe, 0x9b, 0xe1, - 0xcd, 0x59, 0xae, 0xec, 0x2f, 0x22, 0x5b, 0x47, 0x95, 0xec, - 0x23, 0xbd, 0x9d, 0x26, 0x99, 0xa2, 0xd8, 0x18, 0x2b, 0x32, - 0x3b, 0xe7, 0xd, 0xb9, 0x46, 0x58, 0x9c, 0x1, 0x9a, 0xbf, - 0x71, 0xe1, 0xac, 0xdd, 0xcd, 0x73, 0xa6, 0xeb, 0x1a, 0x8e, - 0x94, 0xd7, 0xd, 0xbe, 0x74, 0xb4, 0x31, 0x32, 0x48, 0xff, - 00, 0xde, 0xdb, 0x2c, 0x6e, 0x14, 0xfa, 0xed, 0xdb, 0x9e, - 0xa7, 0x27, 0x9a, 0xb7, 0xa4, 0x68, 0xb6, 0xba, 0x34, 0x33, - 0x2c, 0x6, 0x59, 0x66, 0xb8, 0x7f, 0x36, 0xe2, 0xe2, 0x77, - 0xdf, 0x24, 0xef, 0x80, 0x37, 0x31, 0xe9, 0xd0, 0xe, 00, - 0xa, 0x7, 00, 0x1, 0xc5, 0x4d, 0x9f, 0x2b, 0x4b, 0xb0, - 0x5f, 0x5b, 0xf9, 0x98, 0x5a, 0x57, 0x84, 0x74, 0x4d, 0x4b, - 0x45, 0xb3, 0xbf, 0xbe, 0xb6, 0x8e, 0xf3, 0x53, 0xb9, 0x81, - 0x26, 0x7d, 0x50, 0xf1, 0x73, 0xbd, 0x94, 0x1d, 0xc9, 0x28, - 0xf9, 0x90, 0xc, 0xfc, 0xa1, 0x48, 00, 0x70, 0x38, 0xa9, - 0x7e, 0x1c, 0xa9, 0x4f, 0x3, 0x59, 0x21, 0x9c, 0xdc, 0x15, - 0x96, 0xe0, 0x19, 0x8e, 0x33, 0x27, 0xef, 0xe4, 0xf9, 0xb8, - 0xe3, 0x9e, 0xb5, 0x31, 0xf0, 0x84, 0x4a, 0x86, 0xda, 0xd7, - 0x58, 0xd5, 0x6d, 0x34, 0xc6, 0x39, 0x3a, 0x7d, 0xbc, 0xa8, - 0xb1, 0x1, 0x9c, 0x95, 0x57, 0xd8, 0x65, 0x45, 0x3e, 0x88, - 0xea, 0x7, 0x41, 0x81, 0x57, 0x3c, 0x39, 0xe1, 0xe8, 0x3c, - 0x33, 0xa7, 0x1d, 0x3a, 0xd2, 0xea, 0xe2, 0x5b, 0x35, 0x76, - 0x68, 0x61, 0x98, 0x47, 0x88, 0x1, 0x25, 0x8a, 0xae, 0xd5, - 0x53, 0xb7, 0x24, 0xfd, 0xec, 0x9f, 0x7a, 0xa6, 0xef, 0x7b, - 0x13, 0x6f, 0x99, 0xaf, 0x58, 0x1e, 0x34, 0xd2, 0xf4, 0xfd, - 0x4f, 0xc2, 0x9a, 0x97, 0xdb, 0xec, 0x6d, 0x6e, 0xfc, 0x8b, - 0x59, 0xa4, 0x8b, 0xcf, 0x85, 0x64, 0xf2, 0xdc, 0x21, 0xc3, - 0x2e, 0x47, 0x7, 0xdc, 0x56, 0xfd, 0x66, 0x6b, 0x9a, 0x3b, - 0xeb, 0x76, 0xf, 0x66, 0x35, 0x4b, 0xcb, 0x18, 0xa4, 0x56, - 0x49, 0x7e, 0xca, 0xb1, 0x13, 0x22, 0xb0, 0xc1, 0x53, 0xe6, - 0x23, 0xe3, 0xf0, 0xc1, 0xf7, 0xa8, 0x9a, 0xbc, 0x5a, 0x45, - 0xc5, 0xda, 0x49, 0xb3, 0x3f, 0xc3, 0x1e, 0x19, 0xd0, 0x34, - 0xfd, 0x3f, 0x4e, 0xbe, 0xb2, 0xd0, 0xf4, 0xdb, 0x6b, 0xc3, - 0x6c, 0x9f, 0xe9, 0x10, 0xda, 0x46, 0x92, 0x72, 0xa3, 0x3f, - 0x30, 0x19, 0xe7, 0xbd, 0x41, 0x73, 0x69, 0x6f, 0xe2, 0x1f, - 0x18, 0xdf, 0x69, 0xba, 0xb4, 0x51, 0xdc, 0xd8, 0x58, 0x5a, - 0xc3, 0x24, 0x76, 0x53, 0x2e, 0xe8, 0xa5, 0x79, 0xb, 0xe5, - 0xdd, 0x4f, 0xf, 0x8d, 0x80, 0xc, 0x82, 0x1, 0xc9, 0xeb, - 0xd3, 0x47, 0x48, 0xd0, 0xae, 0xb4, 0xa6, 0x88, 0x37, 0x88, - 0x75, 0x3b, 0xdb, 0x78, 0xa3, 0xf2, 0xd6, 0xde, 0xe5, 0x2d, - 0x82, 00, 0x6, 0x7, 0x29, 0x12, 0xb6, 0x47, 0xd6, 0xa5, - 0xd5, 0x34, 0x48, 0xf5, 0x19, 0xe2, 0xba, 0x8a, 0xee, 0xe6, - 0xc2, 0xfa, 0x25, 0x28, 0x97, 0x76, 0xa5, 0x37, 0xec, 0x3d, - 0x50, 0x87, 0x56, 0x56, 0x5e, 0xf8, 0x2a, 0x70, 0x79, 0x18, - 0x35, 0x73, 0x77, 0x95, 0xcc, 0xe2, 0x9a, 0x8d, 0x8c, 0xa8, - 0x6c, 0xed, 0xbc, 0x3b, 0xe2, 0xbd, 0x3b, 0x4f, 0xd2, 0x2d, - 0xe3, 0xb5, 0xb1, 0xbf, 0x82, 0x76, 0x9a, 0xd2, 0x15, 0xdb, - 0x12, 0x34, 0x7b, 0x30, 0xea, 0x83, 0x84, 0xfb, 0xc4, 0x1c, - 0x1, 0x9c, 0x82, 0x79, 0x15, 0x95, 0xab, 0xf8, 0x7a, 0xce, - 0xe3, 0xe2, 0x75, 0x80, 0xb6, 0x55, 0xb1, 0xfb, 0x5e, 0x9b, - 0x74, 0xf7, 0xd2, 0x5a, 0x20, 0x8a, 0x5b, 0x90, 0x24, 0x83, - 0xe5, 0x69, 0x17, 0xc, 0x3a, 0xfd, 0xe0, 0x73, 0x8c, 0x80, - 0x46, 0x73, 0x5d, 0x56, 0x99, 0xa1, 0xc7, 0xa7, 0xdc, 0x4b, - 0x77, 0x35, 0xe5, 0xd6, 0xa1, 0x7d, 0x22, 0x84, 0x6b, 0xab, - 0xbd, 0x9b, 0xc2, 0xe, 0x42, 0x28, 0x45, 0x55, 0x51, 0x9e, - 0x78, 0x51, 0x93, 0xd7, 0x38, 0x15, 0x9b, 0x75, 0xe1, 0x19, - 0xee, 0x75, 0xb1, 0xab, 0xf, 0x13, 0xeb, 0x30, 0xdc, 0xa4, - 0x72, 0x45, 0x10, 0x8d, 0x2d, 0x36, 0xc7, 0x1b, 0xb2, 0xb1, - 0x40, 0x1a, 0x3, 0x91, 0x94, 0x5e, 0x4e, 0x4f, 0x1d, 0x7a, - 0xd2, 0x5b, 0xa6, 0xfc, 0xff, 00, 0x26, 0x57, 0x47, 0xf2, - 0xfc, 0xcd, 0x3d, 0x27, 0x40, 0xd3, 0x74, 0x27, 0xb8, 0x1a, - 0x5d, 0xb2, 0x5a, 0x41, 0x36, 0xd2, 0x6d, 0xa1, 0x50, 0x91, - 0x2b, 00, 0x46, 0xe5, 0x40, 0x30, 0x9, 0x18, 0xc9, 0xef, - 0x81, 0x5a, 0x75, 0x5e, 0xc6, 0xde, 0x5b, 0x4b, 0x44, 0x86, - 0x6b, 0xd9, 0xef, 0x64, 0x5c, 0xe6, 0x79, 0xc2, 0x7, 0x6e, - 0x73, 0xc8, 0x45, 0x55, 0xe3, 0xa7, 00, 0x74, 0xab, 0x14, - 0x30, 0x47, 0x13, 0xf1, 0x37, 0x4d, 0xb5, 0xd4, 0x34, 0x6d, - 0x28, 0x4f, 0x10, 0xf3, 0x6, 0xaf, 0x66, 0x89, 0x32, 0xfc, - 0xb2, 0x44, 0x1e, 0x65, 0xd, 0xb1, 0xc7, 0x2a, 0x48, 0xee, - 0x8, 0xac, 0xab, 0xbf, 0xc, 0x68, 0xe6, 0xfb, 0xc5, 0x56, - 0x26, 0xc6, 0x2f, 0xb0, 0x59, 0x58, 0xc7, 0x71, 0x69, 0x68, - 0x14, 0x8, 0xad, 0xe5, 0x78, 0xdf, 0x74, 0x88, 0xa3, 0xee, - 0xbf, 0xee, 0xd7, 0xe6, 0x1c, 0x83, 0xb8, 0x8c, 0x16, 0x6c, - 0xf6, 0x5e, 0x23, 0xf0, 0xea, 0x78, 0x8e, 0xde, 0xda, 0x9, - 0x35, 0x1b, 0xdb, 0x25, 0xb7, 0x9d, 0x2e, 0x14, 0xda, 0xf9, - 0x59, 0x67, 0x46, 0xc, 0x84, 0xef, 0x46, 0xe8, 0x40, 0x3c, - 0x63, 0x3d, 0xf3, 0x48, 0xfe, 0x1b, 0x8a, 0x4d, 0x4a, 0xfe, - 0xf5, 0xaf, 0xaf, 0x3f, 0xd3, 0xed, 0x16, 0xd6, 0xe2, 0x1f, - 0xdd, 0xec, 0x60, 0xa1, 0x80, 0x71, 0xf2, 0x6e, 0xd, 0xf3, - 0x37, 0x7c, 0x73, 0xd2, 0xa6, 0x49, 0xf2, 0x34, 0xb7, 0xd7, - 0xf2, 0x5f, 0xe4, 0x52, 0x7e, 0xf2, 0x6f, 0x6f, 0xf8, 0x23, - 0x6c, 0x6c, 0x6c, 0xbc, 0x43, 0xe1, 0x4d, 0x28, 0x6b, 0x56, - 0x76, 0xda, 0x8a, 0xbd, 0xb4, 0x33, 0x32, 0xdd, 0xc2, 0xb2, - 0xa9, 0x72, 0x83, 0xe6, 0xc3, 0x2, 0x33, 0xc9, 0xe7, 0xde, - 0xaa, 0x7c, 0x3d, 0x8d, 0x22, 0xf0, 0x3e, 0x9f, 0x1c, 0x68, - 0xa8, 0x88, 0xd3, 0x2a, 0xaa, 0x8c, 00, 0x4, 0xaf, 0x80, - 0x5, 0x5a, 0x8f, 0xc3, 0xb7, 0x36, 0xfa, 0x4d, 0x8e, 0x9f, - 0x6b, 0xe2, 0x4d, 0x56, 0xdd, 0x6d, 0x13, 0xcb, 0x12, 0xa2, - 0x5b, 0x17, 0x91, 0x7f, 0x84, 0x36, 0xe8, 0x48, 0xe0, 0xc, - 0xc, 0x1, 0xef, 0x93, 0xcd, 0x47, 0xa1, 0x78, 0x5a, 0x5d, - 0x5, 0x60, 0x86, 0x1f, 0x10, 0xea, 0xb7, 0x16, 0x90, 0x96, - 0x22, 0xd6, 0x74, 0xb6, 0xd8, 0xdb, 0x89, 0x27, 0x25, 0x61, - 0x57, 0xea, 0x49, 0xe1, 0x87, 0xe5, 0xc5, 0x69, 0x26, 0x9c, - 0x9b, 0x5b, 0x19, 0x45, 0x34, 0x95, 0xfa, 0x22, 0x84, 0x3a, - 0x7d, 0x97, 0x8a, 0x3c, 0x51, 0xae, 0x26, 0xb5, 0x6f, 0x1d, - 0xf5, 0xbe, 0x9d, 0x2c, 0x56, 0xf6, 0xf6, 0x57, 0x2a, 0x24, - 0x85, 0x33, 0x12, 0xb9, 0x93, 0xcb, 0x3c, 0x16, 0x25, 0xc8, - 0xdc, 0x41, 0x20, 0x2e, 0x6, 0x32, 0x73, 0xab, 0xa4, 0xf8, - 0x4f, 0x48, 0xd0, 0xf5, 0x6b, 0x9d, 0x43, 0x4c, 0x80, 0xda, - 0xf9, 0xf0, 0xa4, 0x26, 0xda, 0x23, 0x88, 0x50, 0x2b, 0x33, - 0x65, 0x13, 0xa2, 0x64, 0xb1, 0xc8, 0x18, 0x7, 0xae, 0x32, - 0x49, 0x2e, 0xd4, 0x7c, 0x3b, 0x1d, 0xe6, 0xa1, 0xfd, 0xa3, - 0x69, 0x7f, 0x79, 0xa6, 0x5f, 0x94, 0x11, 0xc9, 0x71, 0x66, - 0x63, 0xcc, 0xa8, 0x33, 0x85, 0x75, 0x91, 0x1d, 0x1b, 0x4, - 0x9c, 0x1d, 0xb9, 0x19, 0x38, 0x20, 0x12, 0xb, 0xb4, 0xbf, - 0xf, 0x41, 0xa6, 0xdd, 0x4d, 0x7a, 0xf7, 0x57, 0x77, 0xda, - 0x8c, 0xc9, 0xe5, 0xbd, 0xe5, 0xdc, 0x81, 0x9f, 0x66, 0x72, - 0x15, 0x55, 0x40, 0x44, 0x1d, 0x38, 0x45, 0x50, 0x70, 0x9, - 0xc9, 0xe6, 0xa5, 0x7f, 0x5f, 0xd7, 0x99, 0xa3, 0xd4, 0xe5, - 0x2d, 0xbc, 0x2d, 0xa6, 0xcf, 0xf1, 0x1b, 0x5c, 0xb4, 0x8e, - 0x8, 0xad, 0xb4, 0xc3, 0x63, 0x69, 0x2d, 0xcd, 0x95, 0xb4, - 0x62, 0x24, 0xba, 0x72, 0xf3, 0xf3, 0x26, 0xdc, 0x6e, 0x5e, - 0xe, 0x54, 0xf0, 0xdc, 0x67, 0x20, 0x60, 0xee, 0x6a, 0xb0, - 0xc7, 0xe0, 0xef, 0x6, 0x6b, 0x13, 0x68, 0xd1, 0x88, 0x56, - 0x18, 0xe4, 0x9e, 0x8, 0x70, 0x3c, 0xb8, 0x9, 0x1f, 0xc0, - 0xbd, 0x2, 0x3, 0x96, 0xdb, 0xd3, 0x93, 0x4c, 0x8f, 0xc1, - 0xb7, 0x31, 0x6a, 0x77, 0x1a, 0x8c, 0x7e, 0x2d, 0xd7, 0x16, - 0xea, 0xe2, 0x34, 0x8a, 0x57, 0xf2, 0xec, 0xfe, 0x65, 0x42, - 0xc5, 0x46, 0x3e, 0xcf, 0x81, 0x8d, 0xed, 0xf9, 0xd7, 0x47, - 0x1d, 0xb8, 0x16, 0x6b, 0x6d, 0x71, 0x23, 0x5d, 0xf, 0x2f, - 0x64, 0x8f, 0x32, 0xae, 0x65, 0xe3, 0x4, 0xb0, 00, 0x2f, - 0x3d, 0xc0, 00, 0x7b, 0x50, 0xf6, 0xd0, 0x5f, 0x6a, 0xe6, - 0xc, 0x7e, 0x7, 0xf0, 0xf1, 0xb7, 0x57, 0x6b, 0x18, 0xa4, - 0xbe, 0xda, 0x9, 0xd5, 0x31, 0xfe, 0x96, 0xcf, 0xfd, 0xff, - 00, 0x3c, 0x7c, 0xf9, 0xfa, 0x1c, 0x63, 0x8e, 0x9c, 0x56, - 0x3c, 0x9a, 0xbd, 0xee, 0xad, 0xe1, 0x4f, 0xa, 0xa5, 0xc5, - 0xcc, 0x90, 0x36, 0xaf, 0x73, 0x1c, 0x17, 0x53, 0xc0, 0xde, - 0x53, 0x32, 0x84, 0x77, 0x3b, 0x48, 0xc1, 0x5d, 0xfe, 0x58, - 0x19, 0x52, 0x8, 0xc, 0x70, 0x7a, 0x56, 0xcf, 0xfc, 0x22, - 0x20, 0x43, 0xf6, 0x35, 0xd7, 0xb5, 0x75, 0xd2, 0xf1, 0xb7, - 0xfb, 0x3c, 0x3c, 0x5e, 0x5f, 0x97, 0xff, 00, 0x3c, 0xfc, - 0xcf, 0x2f, 0xcd, 0xdb, 0xdb, 0xef, 0xe7, 0x1c, 0x67, 0x15, - 0xa9, 0x7f, 0xa3, 0x58, 0x6a, 0x5a, 0x58, 0xd3, 0xae, 0x2d, - 0xc0, 0xb6, 0x5d, 0xbe, 0x5a, 0xc4, 0x4c, 0x66, 0x22, 0xa4, - 0x15, 0x28, 0x57, 0x5, 0x4a, 0x90, 0x30, 0x46, 0x31, 0x8a, - 0x1, 0x18, 0xd7, 0x5f, 0xf, 0x3c, 0x2d, 0x3c, 0x51, 0xad, - 0xbe, 0x91, 0x6d, 0xa7, 0xc8, 0x92, 0xc7, 0x20, 0x9a, 0xc2, - 0x25, 0x81, 0xdb, 0x63, 0x86, 0xa, 0xc5, 0x47, 0xcc, 0xa4, - 0xa8, 0xc8, 0x6c, 0x8e, 0xfd, 0x40, 0x21, 0xb7, 0x36, 0x96, - 0xfe, 0x21, 0xf1, 0x8d, 0xf6, 0x9b, 0xab, 0x45, 0x1d, 0xcd, - 0x85, 0x85, 0xac, 0x32, 0x47, 0x65, 0x32, 0xee, 0x8a, 0x57, - 0x90, 0xbe, 0x5d, 0xd4, 0xf0, 0xf8, 0xd8, 00, 0xc8, 0x20, - 0x1c, 0x9e, 0xbd, 0x27, 0x3e, 0x11, 0x17, 0x5e, 0x5a, 0x6a, - 0xda, 0xee, 0xad, 0xaa, 0xda, 0xa1, 0xc, 0x2d, 0x6e, 0x5a, - 0x28, 0xe3, 0x62, 0xf, 0x1b, 0xc4, 0x31, 0xa1, 0x71, 0xc7, - 0xdd, 0x62, 0x54, 0xf7, 0x6, 0xaf, 0xea, 0x9a, 0x24, 0x7a, - 0x8c, 0xf1, 0x5d, 0x45, 0x77, 0x73, 0x61, 0x7d, 0x12, 0x94, - 0x4b, 0xbb, 0x52, 0x9b, 0xf6, 0x1e, 0xa8, 0x43, 0xab, 0x2b, - 0x2f, 0x7c, 0x15, 0x38, 0x3c, 0x8c, 0x1a, 00, 0xca, 0x86, - 0xce, 0xdb, 0xc3, 0xbe, 0x2b, 0xd3, 0xb4, 0xfd, 0x22, 0xde, - 0x3b, 0x5b, 0x1b, 0xf8, 0x27, 0x69, 0xad, 0x21, 0x5d, 0xb1, - 0x23, 0x47, 0xb3, 0xe, 0xa8, 0x38, 0x4f, 0xbc, 0x41, 0xc0, - 0x19, 0xc8, 0x27, 0x91, 0x59, 0x6d, 0xe1, 0x8d, 0x23, 0x51, - 0xf8, 0x9b, 0xab, 0xb, 0xab, 0x28, 0x64, 0xb7, 0x6d, 0x3e, - 0xda, 0x69, 0xad, 0x4c, 0x6b, 0xe5, 0x5c, 0x48, 0x5e, 0x60, - 0x1e, 0x55, 0xc7, 0xef, 0x8, 0x3, 0x8d, 0xd9, 0x1d, 0xe, - 0x32, 0x14, 0x8e, 0xa7, 0x4c, 0xd0, 0xe3, 0xd3, 0xee, 0x25, - 0xbb, 0x9a, 0xf2, 0xeb, 0x50, 0xbe, 0x91, 0x42, 0x35, 0xd5, - 0xde, 0xcd, 0xe1, 0x7, 0x21, 0x14, 0x22, 0xaa, 0xa8, 0xcf, - 0x3c, 0x28, 0xc9, 0xeb, 0x9c, 0xa, 0x82, 0xdf, 0xc3, 0x86, - 0xdf, 0xc4, 0xf7, 0x1a, 0xef, 0xf6, 0xbe, 0xa1, 0x24, 0x93, - 0xc6, 0x22, 0x7b, 0x67, 0x10, 0xf9, 0x5b, 0x14, 0xb1, 0x55, - 0x18, 0x8c, 0x3f, 0x5, 0xd8, 0xe7, 0x76, 0x7d, 0x49, 0xa6, - 0xb7, 0x5f, 0x30, 0xe8, 0xd7, 0xf5, 0xb9, 0x95, 0xe1, 0x3b, - 0x68, 0x6d, 0x35, 0x7f, 0x14, 0xe8, 0x50, 0xc4, 0xab, 0xa5, - 0xda, 0xdd, 0x47, 0xe4, 0x5a, 0x91, 0x98, 0xe2, 0x59, 0x61, - 0x57, 0x74, 0x50, 0x78, 0xa, 0x58, 0x93, 0xb7, 0xa0, 0xc9, - 0xc0, 0xac, 0xef, 0xf, 0x78, 0x37, 0xc2, 0xd3, 0xeb, 0xbe, - 0x27, 0x8e, 0x5f, 0xd, 0xe8, 0xf2, 0x24, 0x37, 0xe8, 0x91, - 0x2b, 0xd8, 0xc4, 0x44, 0x6b, 0xf6, 0x78, 0x8e, 0x14, 0x6d, - 0xe0, 0x64, 0x93, 0xc7, 0x72, 0x6b, 0xa6, 0xd2, 0xbc, 0x38, - 0xba, 0x56, 0xb5, 0xa9, 0xea, 0x63, 0x54, 0xbe, 0xb9, 0x7d, - 0x45, 0x83, 0xcb, 0x14, 0xe2, 0x2d, 0x8a, 0x40, 0xa, 0xbb, - 0x76, 0xc6, 0xad, 0xc2, 0x80, 0xbc, 0x93, 0xc7, 0x5c, 0x9e, - 0x69, 0xb7, 0x7e, 0x1a, 0xf3, 0x75, 0x4b, 0x8d, 0x42, 0xc3, - 0x58, 0xd4, 0x74, 0xb9, 0xee, 0x42, 0xfd, 0xa0, 0x5a, 0x79, - 0x2c, 0xb2, 0x95, 0x18, 0x56, 0x2b, 0x2c, 0x6e, 0x3, 0x1, - 0xc6, 0x57, 0x19, 00, 0x67, 0x38, 0x14, 0x96, 0x9a, 0xf9, - 0x5b, 0xf2, 0xff, 00, 0x21, 0x9a, 0x4d, 0xa5, 0xe9, 0xef, - 0xa6, 0x7f, 0x66, 0x3d, 0x8d, 0xb3, 0x58, 0x6c, 0x11, 0xfd, - 0x94, 0xc2, 0xa6, 0x2d, 0x83, 0xa2, 0xec, 0xc6, 0x31, 0xed, - 0x8a, 0xe1, 0x3c, 0x17, 0xe1, 0xd, 0x2b, 0x52, 0xf0, 0xf4, - 0xdf, 0xda, 0x50, 0x47, 0x77, 0x6b, 0x1d, 0xf5, 0xec, 0x56, - 0x96, 0x6e, 0x80, 0x43, 0x6a, 0xa2, 0xe2, 0x41, 0x94, 0x4e, - 0x9b, 0xfa, 0xe1, 0xfa, 0x81, 0xc0, 0xc0, 0xce, 0x7b, 0x44, - 0xd2, 0x1a, 0xd, 0x20, 0xd8, 0xda, 0xea, 0x7a, 0x84, 0x32, - 0x13, 0xbb, 0xed, 0x6d, 0x28, 0x9a, 0x6c, 0xe7, 0x24, 0xe6, - 0x50, 0xeb, 0xcf, 0xa6, 0xdc, 0xc, 0xf0, 0x5, 0x65, 0xe9, - 0x1e, 0x11, 0x9f, 0x45, 0x54, 0x8e, 0xdb, 0xc4, 0xfa, 0xcb, - 0x5b, 0xac, 0xef, 0x3b, 0x41, 0x22, 0x5a, 0x15, 0x76, 0x77, - 0x2e, 0xe0, 0x91, 00, 0x6c, 0x16, 0x63, 0xd0, 0x8c, 0x67, - 0x8c, 0x53, 0xdf, 0x71, 0x74, 0x42, 0x6b, 0xeb, 0x22, 0x1f, - 0xf, 0xe8, 0x5f, 0x6a, 0xb8, 0x16, 0xb7, 0x93, 0x98, 0x2e, - 0x27, 0x32, 0x91, 0x2c, 0x88, 0x91, 0x33, 0xed, 0x2e, 0x30, - 0x72, 0xe5, 0x6, 0x48, 0xe4, 0x8c, 0xfa, 0xd5, 0x5d, 0x6f, - 0x44, 0xd2, 0xbc, 0x2d, 0xa7, 0x8d, 0x5f, 0x41, 0xd3, 0x2d, - 0x34, 0xeb, 0xb8, 0x67, 0x85, 0x48, 0xb3, 0x85, 0x61, 0x59, - 0xd5, 0xe5, 0x54, 0x28, 0xea, 0xa0, 0x7, 0xc8, 0x63, 0x8c, - 0x83, 0x83, 0xc8, 0xe6, 0xba, 0x5d, 0x4f, 0x4c, 0xb6, 0xd5, - 0xac, 0xcd, 0xb5, 0xc8, 0x6d, 0xbb, 0x83, 0xa3, 0xc6, 0xc5, - 0x5e, 0x37, 0x1c, 0xab, 0xab, 0xe, 0x43, 0x3, 0xde, 0xb3, - 0xed, 0xfc, 0x36, 0x45, 0xe4, 0x37, 0x1a, 0x8e, 0xb3, 0xa8, - 0xea, 0xbe, 0x43, 0x6f, 0x86, 0x2b, 0xb1, 0xa, 0xa4, 0x6f, - 0xd9, 0xf6, 0xc5, 0x1a, 0x6e, 0x23, 0xb6, 0xec, 0xe3, 0xa8, - 0xc1, 0xe6, 0x95, 0xf5, 0xbf, 0xf5, 0xfd, 0x7e, 0x1f, 0x88, - 0x17, 0x35, 0xef, 0xf9, 0x17, 0x75, 0x3f, 0xfa, 0xf4, 0x97, - 0xff, 00, 0x40, 0x35, 0x17, 0x86, 0x7f, 0xe4, 0x54, 0xd1, - 0xff, 00, 0xeb, 0xc6, 0x1f, 0xfd, 00, 0x53, 0x35, 0x9d, - 0xe, 0xe3, 0x57, 0xde, 0x8b, 0xaf, 0x6a, 0x56, 0x36, 0xf2, - 0x44, 0x62, 0x92, 0xb, 0x54, 0xb7, 0x2a, 0xc0, 0xe7, 0x27, - 0x32, 0x44, 0xcd, 0x92, 0xe, 0x38, 0x34, 0x9a, 0x26, 0x83, - 0x3e, 0x8a, 0x91, 0xc4, 0x75, 0xdd, 0x4a, 0xf6, 0xda, 0x28, - 0x44, 0x31, 0xc1, 0x74, 0x96, 0xe1, 0x50, 0xc, 00, 0x73, - 0x1c, 0x4a, 0xc4, 0x80, 0x31, 0xc9, 0x3d, 0x68, 0x8e, 0xef, - 0xce, 0xdf, 0x85, 0xff, 00, 0xcc, 0x4f, 0x75, 0xe5, 0x7f, - 0xc6, 0xdf, 0xe4, 0x53, 0xf1, 0x8f, 0xfa, 0xbd, 0xf, 0xfe, - 0xc3, 0x36, 0xbf, 0xfa, 0x11, 0xad, 0xdd, 0x42, 0x79, 0x2d, - 0x74, 0xdb, 0xab, 0x88, 0x93, 0x7c, 0xb1, 0x42, 0xee, 0x89, - 0x8c, 0xee, 0x20, 0x12, 0x5, 0x61, 0x6a, 0x7e, 0x12, 0xb8, - 0xd5, 0x67, 0x47, 0x9f, 0xc5, 0x1a, 0xca, 0x24, 0x57, 0xb, - 0x73, 0xc, 0x51, 0xa5, 0xa0, 0x58, 0x9d, 0x4e, 0x57, 0x19, - 0x80, 0x92, 0x7, 0xb9, 0x3e, 0xf9, 0xad, 0x9d, 0x36, 0xca, - 0x7b, 0x1b, 0x76, 0x8e, 0xe3, 0x53, 0xbb, 0xd4, 0x1c, 0xb6, - 0xe1, 0x2d, 0xd2, 0xc4, 0xac, 0x6, 0x7, 0x3, 0xcb, 0x44, - 0x18, 0xfc, 0x33, 0xcf, 0x5a, 0x9b, 0x3e, 0x56, 0xb6, 0xbb, - 0xfd, 0x12, 0xfd, 0x7, 0xf6, 0xd3, 0xfe, 0xb7, 0x7f, 0xe6, - 0x79, 0xc6, 0x85, 0xa7, 0x59, 0x5f, 0x68, 0x56, 0x9a, 0x85, - 0xf7, 0x80, 0xf5, 0x2d, 0x57, 0x51, 0xbc, 0x89, 0x2e, 0x25, - 0xd5, 0x59, 0xec, 0x8c, 0xd2, 0x3b, 0x28, 0x3b, 0xe3, 0x90, - 0xdc, 0x7, 0x8c, 0xe, 0x36, 0x85, 0x2b, 0xb4, 0x1, 0x8c, - 0x57, 0x69, 0xa0, 0x5a, 0x5d, 0xdf, 0x78, 0x4e, 0x2b, 0x2f, - 0x12, 0x58, 0x99, 0x24, 0x3b, 0xe2, 0x92, 0x1b, 0xdf, 0x2e, - 0x53, 0x2c, 0x61, 0x88, 0x43, 0x26, 0xd2, 0xca, 0x58, 0xa8, - 0x52, 0x79, 0x3c, 0xe6, 0x9a, 0x7c, 0x2a, 0xd0, 0x17, 0x4d, - 0x33, 0x5e, 0xd5, 0x74, 0xcb, 0x57, 0x62, 0xdf, 0x65, 0xb6, - 0x30, 0xbc, 0x6a, 0x4f, 0x5d, 0xbe, 0x6c, 0x6e, 0xc8, 0x3f, - 0xd9, 0x52, 0x14, 0x76, 0x2, 0xae, 0xc3, 0xa1, 0x41, 0x63, - 0xa3, 0x1d, 0x37, 0x4b, 0xb8, 0xb9, 0xd3, 0xd7, 0x71, 0x71, - 0x3c, 0x4c, 0xb2, 0x4b, 0xb8, 0xb6, 0xe6, 0x62, 0xd2, 0x87, - 0xdc, 0x49, 0x27, 0x25, 0x81, 0x3c, 0xd5, 0xb6, 0x9d, 0xf4, - 0x5, 0xd0, 0xe3, 0x7c, 0x17, 0xe1, 0xd, 0x2b, 0x52, 0xf0, - 0xf4, 0xdf, 0xda, 0x50, 0x47, 0x77, 0x6b, 0x1d, 0xf5, 0xec, - 0x56, 0x96, 0x6e, 0x80, 0x43, 0x6a, 0xa2, 0xe2, 0x41, 0x94, - 0x4e, 0x9b, 0xfa, 0xe1, 0xfa, 0x81, 0xc0, 0xc0, 0xce, 0x7a, - 0x4f, 0x10, 0xf8, 0x7a, 0xe3, 0x52, 0xd1, 0xec, 0x2c, 0xe0, - 0x94, 0x5d, 0x25, 0xa4, 0x88, 0xf2, 0xdb, 0x5e, 0xca, 0xc2, - 0x3b, 0xe5, 0x55, 0x2b, 0xb2, 0x66, 0x50, 0x49, 0x4, 0x90, - 0xc7, 0x2a, 0xc0, 0x95, 0xe5, 0x48, 0x35, 0x1e, 0x91, 0xe1, - 0x19, 0xf4, 0x55, 0x48, 0xed, 0xbc, 0x4f, 0xac, 0xb5, 0xba, - 0xce, 0xf3, 0xb4, 0x12, 0x25, 0xa1, 0x57, 0x67, 0x72, 0xee, - 0x9, 0x10, 0x6, 0xc1, 0x66, 0x3d, 0x8, 0xc6, 0x78, 0xc5, - 0x5e, 0xd6, 0x7c, 0x3d, 0xe, 0xb3, 0x77, 0x65, 0x76, 0x6f, - 0x6f, 0x6c, 0xee, 0x6c, 0xb7, 0x98, 0x25, 0xb4, 0x90, 0x29, - 0x5, 0x80, 0x4, 0x90, 0x41, 0xd, 0xd3, 0xa1, 0x4, 0x7a, - 0x83, 0x49, 0x82, 0xdd, 0xfc, 0xff, 00, 0x13, 0x9b, 0xd2, - 0x34, 0x7b, 0xd, 0x23, 0xc6, 0x1a, 0x7b, 0xdc, 0x68, 0x36, - 0xda, 0x2d, 0xdc, 0xb0, 0xcd, 0x1d, 0xaa, 0x69, 0x77, 0x1e, - 0x65, 0xa4, 0xc4, 0x85, 0x2e, 0x19, 0x7c, 0xb4, 0xdb, 0x26, - 0x13, 0x39, 0xb, 0xc8, 0x1c, 0xb1, 0xc0, 0x3, 0xa4, 0xf1, - 0x5d, 0xa6, 0x97, 0xa8, 0x78, 0x5f, 0x50, 0xb3, 0xd6, 0xaf, - 0x45, 0x96, 0x9d, 0x3c, 0x5e, 0x5c, 0xf7, 0x6, 0x61, 0x16, - 0xc0, 0x48, 00, 0xee, 0x6e, 0x7, 0x38, 0xeb, 0xc1, 0xe9, - 0xcd, 0x25, 0x8f, 0x87, 0x85, 0xb6, 0xa0, 0x97, 0xf7, 0xba, - 0x9d, 0xf6, 0xa9, 0x75, 0x12, 0x94, 0x81, 0xef, 0x3c, 0xa0, - 0x21, 0xd, 0xf7, 0xb6, 0xac, 0x48, 0x8b, 0x93, 0x80, 0x32, - 0x41, 0x38, 0xe0, 0x10, 0x9, 0xce, 0x7f, 0x8e, 0x7c, 0x2b, - 0x3f, 0x8c, 0x6c, 0x2c, 0x34, 0xa3, 0x3c, 0x71, 0x69, 0xbf, - 0x6c, 0x49, 0xb5, 0x5, 0x24, 0x87, 0x96, 0x24, 0xc9, 0xd8, - 0xb8, 0x1d, 0xdb, 0x6f, 0x39, 0x18, 0xc6, 0x68, 0x6a, 0xea, - 0xc3, 0x4e, 0xce, 0xe5, 0xff, 00, 0x8, 0xe9, 0x3a, 0x66, - 0x87, 0xe1, 0x5d, 0x3f, 0x4e, 0xd1, 0xee, 0xde, 0xef, 0x4e, - 0x8a, 0x32, 0x60, 0x9d, 0xa6, 0x12, 0x99, 0x14, 0x92, 0xd9, - 0xdc, 0xbc, 0x11, 0xcf, 0x18, 0xe2, 0xb6, 0xa9, 0xb1, 0xc6, - 0x91, 0x46, 0xb1, 0xc6, 0xa1, 0x11, 00, 0x55, 0x55, 0x18, - 00, 0xe, 0x80, 0x53, 0xa9, 0xb7, 0x77, 0x72, 0x52, 0xb2, - 0xb0, 0x51, 0x45, 0x14, 0x86, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x87, 0xa5, 0x2d, 0x31, 0xce, 0x1, - 0xa0, 0x8, 0x26, 0x90, 0x28, 0x2c, 0xdc, 00, 0x32, 0x6b, - 0x9d, 0xf0, 0x98, 0x92, 0xf2, 0xfb, 0x51, 0xd4, 0xe6, 0xeb, - 0x24, 0x85, 0x13, 0xfd, 0xd1, 0xc0, 0xab, 0x7e, 0x25, 0xbe, - 0x16, 0x3a, 0x1d, 0xcc, 0xbc, 0xe4, 0xae, 0xc0, 0x7, 0x5c, - 0x9e, 0x2a, 0xd7, 0x86, 0xac, 0x46, 0x9f, 0xa1, 0x5b, 0x40, - 0x33, 0x90, 0xb9, 0x39, 0xac, 0x9e, 0xb5, 0x12, 0xed, 0xa9, - 0x8c, 0xbd, 0xea, 0xa9, 0x76, 0xd7, 0xf4, 0x35, 0xc9, 0xc0, - 0xcd, 0x7c, 0xed, 0x2d, 0xc6, 0x9f, 0xe2, 0xef, 0x8e, 0x52, - 0xa6, 0xbb, 0x70, 0x9f, 0x62, 0xb1, 0x7, 0xca, 0x8d, 0x8e, - 0x15, 0x88, 0xe7, 0x15, 0xf4, 0x49, 0x19, 0x4, 0x57, 0xcc, - 0x3f, 0x13, 0x7e, 0x1b, 0x78, 0x86, 0xd3, 0xc5, 0x37, 0x3a, - 0xa6, 0x95, 0x6d, 0x34, 0xf6, 0xf3, 0x9d, 0xdb, 0xa1, 0x7, - 0x2b, 0xed, 0xc5, 0x6a, 0x6c, 0x5f, 0xf0, 0xae, 0xa1, 0xa4, - 0x41, 0xe3, 0xff, 00, 0x10, 0x78, 0x8e, 0x57, 0x8a, 0x1b, - 0x2b, 0x14, 0x65, 0x81, 0x46, 0x6, 0x4f, 0x41, 0x81, 0x5b, - 0x7f, 0x4, 0x2c, 0xe6, 0xd6, 0x7c, 0x49, 0xae, 0x78, 0xaa, - 0x78, 0x88, 0x8e, 0x66, 0xd9, 0x11, 0x6e, 0xf9, 0x39, 0xe3, - 0xf2, 0xaf, 0x35, 0xf0, 0xbf, 0xc2, 0x9f, 0x16, 0x78, 0x8e, - 0xe8, 0x43, 0x25, 0xb4, 0xd6, 0x76, 0x65, 0x81, 0x96, 0x59, - 0xb2, 0x6, 0x33, 0xe9, 0xdc, 0xd7, 0xd4, 0x9a, 0x6, 0x87, - 0x6b, 0xe1, 0x5f, 0xd, 0xc3, 0xa7, 0x5a, 00, 0x23, 0x81, - 0xe, 0x5b, 0xfb, 0xc7, 0x1c, 0x9a, 0x4d, 0xd9, 0x5c, 0x4d, - 0xd9, 0x5d, 0x99, 0x7a, 0xcc, 0xfe, 0x76, 0xa0, 0xc3, 0x39, - 0x9, 0xc0, 0xac, 0xf0, 0x9, 0x38, 0x3, 0x26, 0x9d, 0x2b, - 0x99, 0x25, 0x77, 0x3f, 0xc4, 0x73, 0x57, 0xb4, 0x68, 0x3c, - 0xed, 0x41, 0x49, 0x19, 0x8, 0x37, 0x57, 0xcd, 0x6b, 0x5a, - 0xb7, 0xab, 0x3e, 0x41, 0xdf, 0x11, 0x5f, 0xfc, 0x4c, 0xa6, - 0xd6, 0xf3, 0x28, 0xf9, 0xa3, 0x61, 0xf8, 0x54, 0x78, 0xc7, - 0x5a, 0xef, 0x70, 0x8, 0xc6, 0x5, 0x73, 0x9e, 0x20, 0x86, - 0x28, 0xe5, 0x8d, 0x90, 00, 0xcd, 0x9c, 0x81, 0x5d, 0x58, - 0x8c, 0xf, 0xb2, 0x87, 0x3a, 0x95, 0xce, 0xdc, 0x56, 0x5b, - 0xec, 0x29, 0xba, 0x8a, 0x57, 0xb1, 0x8a, 0xe, 0xe, 0x47, - 0x5a, 0xeb, 0x74, 0x6b, 0x96, 0xb9, 0xb1, 0x1b, 0xc9, 0x2c, - 0xa7, 0x6e, 0x6b, 0x92, 0xae, 0xaf, 0x43, 0x84, 0xc5, 0xa7, - 0x82, 0x7f, 0x88, 0x93, 0x4b, 0x2d, 0x72, 0xf6, 0xba, 0x6d, - 0x61, 0x65, 0x2e, 0x5e, 0xdd, 0xa5, 0xb5, 0x8c, 0xdf, 0x10, - 0xcf, 0xba, 0xe9, 0x22, 0x7, 0xee, 0x8c, 0x91, 0x58, 0xd5, - 0xdb, 0x4b, 0x65, 0x6f, 0x3b, 0xef, 0x92, 0x25, 0x66, 0xf5, - 0x22, 0xb3, 0xf5, 0x4b, 0x2b, 0x48, 0x2c, 0x5e, 0x45, 0x89, - 0x55, 0x87, 0x3, 0x15, 0xb6, 0x2b, 0x7, 0x39, 0x4a, 0x55, - 0x5b, 0x46, 0xf8, 0xcc, 0xbe, 0xa4, 0xa5, 0x2a, 0xce, 0x4a, - 0xc7, 0x33, 0x45, 0x15, 0xa7, 0xa3, 0xe9, 0xf1, 0xde, 0xbb, - 0x99, 0x46, 0x51, 0x7b, 0x57, 0x9b, 0x4e, 0x9c, 0xaa, 0x49, - 0x42, 0x3b, 0x9e, 0x45, 0x1a, 0x52, 0xab, 0x35, 0x8, 0xee, - 0xcc, 0xcc, 0x56, 0xf7, 0x87, 0x21, 0xe6, 0x59, 0x8f, 0xd0, - 0x55, 0xc3, 0xa0, 0xd9, 0x9e, 0x8a, 0x47, 0xe3, 0x56, 0xa3, - 0x8a, 0xd, 0x36, 0xd1, 0xb6, 0x8c, 0x22, 0xf2, 0x6b, 0xd3, - 0xc3, 0x60, 0xa7, 0x4a, 0xa7, 0x3c, 0xed, 0x64, 0x7b, 0x18, - 0x4c, 0xbe, 0xa5, 0x1a, 0xaa, 0xa5, 0x4b, 0x59, 0xf, 0xba, - 0xbb, 0x8a, 0xd2, 0x13, 0x24, 0x8d, 0x8f, 0x41, 0xeb, 0x5c, - 0xdd, 0xe6, 0xb5, 0x71, 0x72, 0x48, 0x8c, 0xf9, 0x69, 0xe8, - 0x3a, 0xd5, 0x6b, 0xeb, 0xd9, 0x2f, 0x67, 0x2e, 0xc4, 0xed, - 0xfe, 0x15, 0xf4, 0x15, 0x5e, 0x38, 0xde, 0x57, 0x8, 0x8a, - 0x59, 0x89, 0xc0, 0x2, 0xb0, 0xc4, 0xe3, 0x67, 0x52, 0x5c, - 0xb0, 0xd1, 0x7e, 0x67, 0x36, 0x2f, 0x30, 0x9d, 0x69, 0x72, - 0x53, 0xd1, 0x7e, 0x62, 0x33, 0x33, 0x1c, 0xb3, 0x12, 0x7d, - 0xcd, 0x25, 0x6f, 0xdb, 0x78, 0x78, 0x6d, 0x6, 0x77, 0xe4, - 0xf6, 0x1d, 0xa8, 0xbb, 0xf0, 0xf8, 0x58, 0xcb, 0x5b, 0xb1, - 0x24, 0x7f, 0x9, 0xef, 0x59, 0xbc, 0x15, 0x7e, 0x5e, 0x66, - 0x8c, 0x9e, 0x5d, 0x88, 0xe5, 0xe7, 0x6b, 0xfc, 0xcc, 0x58, - 0x6e, 0x66, 0x81, 0x83, 0x47, 0x23, 0x29, 0xfa, 0xd7, 0x4d, - 0xa5, 0x6a, 0x82, 0xf4, 0x79, 0x72, 0x71, 0x28, 0x1f, 0x9d, - 0x72, 0xa4, 0x15, 0x24, 0x1e, 0xa2, 0xa5, 0xb5, 0x99, 0xa0, - 0xb9, 0x8e, 0x45, 0x3d, 0xd, 0x4e, 0x1b, 0x13, 0x2a, 0x33, - 0x5a, 0xe8, 0x4e, 0x13, 0x17, 0x3a, 0x13, 0x5a, 0xe9, 0xd5, - 0x1d, 0xc5, 0x32, 0x49, 0x12, 0x24, 0x2e, 0xec, 0x15, 0x47, - 0x52, 0x69, 0x51, 0x83, 0x20, 0x61, 0xd0, 0x8c, 0xd7, 0x31, - 0xad, 0x5f, 0xb4, 0xf7, 0x6, 0x14, 0x3f, 0xbb, 0x43, 0x8f, - 0xa9, 0xaf, 0x6f, 0x11, 0x88, 0x54, 0x61, 0xcc, 0x7d, 0x16, - 0x2b, 0x15, 0x1c, 0x3d, 0x3e, 0x7e, 0xbd, 0xb, 0x57, 0x7e, - 0x21, 0x39, 0x2b, 0x6c, 0xbf, 0xf0, 0x26, 0xac, 0xd7, 0xd5, - 0x6f, 0x5c, 0xff, 00, 0xaf, 0x61, 0xf4, 0xe2, 0xa9, 0x1, - 0x93, 0x81, 0x5a, 0x30, 0xe8, 0xb7, 0x73, 0x28, 0x6d, 0xa1, - 0x41, 0xf5, 0x35, 0xe2, 0xba, 0xd8, 0x8a, 0xef, 0x46, 0xfe, - 0x47, 0xcf, 0xba, 0xf8, 0xac, 0x4c, 0xbd, 0xd6, 0xdf, 0xa1, - 0x5c, 0x6a, 0x37, 0x83, 0xa5, 0xc3, 0xfe, 0x75, 0x66, 0x1d, - 0x6e, 0xf2, 0x32, 0x32, 0xc1, 0xc7, 0xa1, 0x14, 0xf7, 0xd0, - 0x2e, 0xd7, 0xa6, 0xd3, 0xf8, 0xd4, 0x11, 0x69, 0xf3, 0xa5, - 0xec, 0x71, 0xcb, 0x19, 0x5e, 0x7a, 0xd3, 0x51, 0xc4, 0xc1, - 0xad, 0xd0, 0x28, 0xe2, 0xe9, 0xc9, 0x6e, 0x8e, 0x85, 0xee, - 0xd9, 0xed, 0x43, 0x91, 0xb4, 0xb0, 0xe4, 0x57, 0x25, 0xac, - 0xdd, 0xa8, 0x57, 0x27, 0xd2, 0xba, 0x4b, 0xd6, 0xd9, 0x16, - 0x7, 0x61, 0x5e, 0x7f, 0xe2, 0x6b, 0xaf, 0x2e, 0xd6, 0x56, - 0xcf, 0x38, 0x35, 0xef, 0xed, 0x1d, 0x4f, 0xa8, 0xd6, 0x31, - 0xd4, 0xe4, 0xec, 0x3e, 0x21, 0x4f, 0xe1, 0xbf, 0x14, 0x2a, - 0xee, 0xdd, 0xa7, 0xc8, 0xe1, 0x25, 0x43, 0xdb, 0x27, 0xad, - 0x7b, 0xf5, 0xa5, 0xc4, 0x77, 0x56, 0xc9, 0x3c, 0x4d, 0xba, - 0x37, 0x1, 0x94, 0xfb, 0x1a, 0xf8, 0xc3, 0x59, 0xb8, 0x2f, - 0x3c, 0x8d, 0x93, 0x9d, 0xd9, 0x6, 0xbe, 0xaf, 0xf8, 0x7f, - 0x34, 0xb3, 0xf8, 0x23, 0x4c, 0x79, 0xbe, 0xf9, 0x84, 0x64, - 0xfa, 0xf1, 0x59, 0x50, 0x93, 0x92, 0x6d, 0x98, 0x61, 0xa7, - 0x29, 0xa6, 0xd9, 0xd3, 0x51, 0x45, 0x15, 0xb9, 0xd2, 0x79, - 0xac, 0x1f, 0xf2, 0x1a, 0xd7, 0xff, 00, 0xec, 0x24, 0xff, - 00, 0xfa, 0x2, 0x57, 0x69, 0xa3, 0xff, 00, 0xc8, 0x2a, - 0x1f, 0xf8, 0x17, 0xfe, 0x84, 0x6b, 0x8b, 0x83, 0xfe, 0x43, - 0x5a, 0xff, 00, 0xfd, 0x84, 0x9f, 0xff, 00, 0x40, 0x4a, - 0xed, 0x34, 0x7f, 0xf9, 0x5, 0x43, 0xff, 00, 0x2, 0xff, - 00, 0xd0, 0x8d, 00, 0x55, 0xf0, 0x47, 0xfc, 0x8a, 0x16, - 0x3f, 0xf6, 0xd3, 0xff, 00, 0x46, 0x35, 0x74, 0x15, 0xcf, - 0xf8, 0x23, 0xfe, 0x45, 0xb, 0x1f, 0xfb, 0x69, 0xff, 00, - 0xa3, 0x1a, 0xba, 0xa, 00, 0x28, 0xa2, 0x8a, 00, 0x28, - 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, - 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, - 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, - 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, - 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, - 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, - 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, - 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, - 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, - 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, - 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, - 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x2a, - 0x29, 0xf, 0x15, 0x29, 0xaa, 0xf2, 0x36, 0x73, 0x40, 0x1c, - 0xaf, 0x89, 0x73, 0x7d, 0xaa, 0x69, 0x9a, 0x62, 0x1e, 0x5e, - 0x5f, 0x35, 0xc7, 0xaa, 0x8a, 0xec, 0x23, 0x50, 0xb1, 0x85, - 0x1d, 00, 0xc0, 0xae, 0x43, 0x4a, 0x3, 0x52, 0xf1, 0x95, - 0xe5, 0xe0, 0x3b, 0xa3, 0xb5, 0x5f, 0x29, 0xf, 0xbf, 0x7f, - 0xd6, 0xbb, 0x1a, 0xca, 0x96, 0xad, 0xcb, 0xbf, 0xe8, 0x61, - 0x47, 0xde, 0x72, 0x9f, 0x77, 0xf9, 0x19, 0x7e, 0x20, 0xf1, - 0x6, 0x9f, 0xe1, 0xad, 0x22, 0x6d, 0x4b, 0x51, 0x99, 0x63, - 0x86, 0x31, 0xc0, 0x3d, 0x58, 0xf6, 0x2, 0xbc, 0x4a, 0x4f, - 0xda, 0x6, 0xff, 00, 0x51, 0xd5, 0x61, 0xb2, 0xd2, 0xb4, - 0x98, 0xb6, 0xcb, 0x20, 0x45, 0x32, 0x1c, 0x93, 0x9a, 0x93, - 0xe2, 0x54, 0xcd, 0xe3, 0xf, 0x8a, 0x1a, 0x5f, 0x85, 0x25, - 0xb8, 0x31, 0x59, 0x23, 0x7e, 0xf4, 0x67, 0x19, 0x35, 0x9e, - 0x9e, 0x1f, 0xd1, 0x53, 0xe3, 0x44, 0x16, 0x3a, 0x74, 0x51, - 0xc5, 0x61, 0xa6, 0x47, 0xbe, 0x62, 0x3a, 0x65, 0x7d, 0x6b, - 0x53, 0x73, 0xd6, 0x17, 0xe2, 0x15, 0x85, 0xbf, 0x89, 0x2c, - 0xfc, 0x3b, 0x71, 0x3, 0x8d, 0x42, 0x78, 0xc3, 0x36, 0xc1, - 0xf2, 0xa9, 0x23, 0x38, 0xae, 0x8f, 0x5b, 0x9f, 0xca, 0xd3, - 0x98, 0xe, 0xaf, 0xc5, 0x78, 0x7f, 0x84, 0xd9, 0x7c, 0x65, - 0xf1, 0xd2, 0xf3, 0x55, 0xb7, 0x8c, 0xc9, 0x65, 0x64, 0xac, - 0x3, 0xf6, 0xfe, 0xe8, 0xaf, 0x5f, 0xf1, 0x14, 0xfb, 0xa6, - 0x8e, 0x10, 0x7e, 0xe8, 0xc9, 0xae, 0x6c, 0x65, 0x4e, 0x4a, - 0x2d, 0x9c, 0x78, 0xfa, 0xbe, 0xcf, 0xf, 0x27, 0xdf, 0x43, - 0x12, 0xb5, 0x74, 0x7b, 0xcb, 0x7b, 0x33, 0x23, 0x4b, 0x9d, - 0xcd, 0xd2, 0xb2, 0xa8, 0xaf, 0x9f, 0xa5, 0x51, 0xd3, 0x92, - 0x9a, 0xdc, 0xf9, 0x8a, 0x35, 0x65, 0x4a, 0x6a, 0x71, 0xdd, - 0x1d, 0x4c, 0x9a, 0xfd, 0xa2, 0xaf, 0xcb, 0x96, 0x3e, 0x95, - 0xcf, 0x5e, 0xde, 0x3d, 0xed, 0xc1, 0x95, 0xf8, 0xec, 0x7, - 0xa0, 0xaa, 0xf5, 0x6f, 0x4f, 0x8e, 0x9, 0x6e, 0xd5, 0x27, - 0xce, 0xd3, 0xe9, 0x5b, 0xd4, 0xc4, 0x55, 0xc4, 0x35, 0x9, - 0x33, 0xa2, 0xae, 0x2e, 0xb6, 0x29, 0xaa, 0x72, 0x76, 0x41, - 0xa7, 0xd8, 0xc9, 0x7b, 0x70, 0x15, 0x47, 0xc8, 0xe, 0x59, - 0xab, 0xb1, 0x8d, 0x16, 0x28, 0xd5, 0x14, 0x60, 0x28, 0xc0, - 0xa6, 0xc3, 0xc, 0x70, 0x46, 0x12, 0x24, 0xa, 0xa3, 0xd2, - 0xa4, 0xaf, 0x63, 0xb, 0x86, 0x54, 0x23, 0xdd, 0xb3, 0xde, - 0xc1, 0x60, 0xd6, 0x1a, 0x3d, 0xdb, 0xa, 0xc2, 0xf1, 0x1c, - 0xd8, 0x8a, 0x28, 0x7d, 0x4e, 0xe3, 0x5b, 0xb5, 0xc9, 0x6b, - 0x73, 0x79, 0xba, 0x8b, 00, 0x78, 0x50, 0x5, 0x46, 0x3e, - 0x7c, 0xb4, 0x5a, 0xee, 0x67, 0x99, 0xd4, 0xe4, 0xc3, 0xb5, - 0xdf, 0x43, 0x3a, 0xba, 0xad, 0xa, 0x1f, 0x2a, 0xc0, 0x31, - 0xea, 0xe7, 0x35, 0xcb, 0x22, 0x96, 0x75, 0x51, 0xdc, 0xe2, - 0xbb, 0x8b, 0x68, 0xc4, 0x56, 0xd1, 0xa0, 0xec, 0xa2, 0xb8, - 0xb2, 0xd8, 0x5e, 0xa3, 0x97, 0x63, 0xcf, 0xca, 0x29, 0xde, - 0xa3, 0x9f, 0x64, 0x4b, 0x58, 0x3e, 0x21, 0xbb, 0x20, 0x2d, - 0xb2, 0x9e, 0xbc, 0xb5, 0x6e, 0x93, 0x80, 0x4f, 0xa5, 0x71, - 0x9a, 0x8c, 0xc6, 0x7b, 0xe9, 0x5b, 0x39, 00, 0xe0, 0x57, - 0x5e, 0x61, 0x53, 0x92, 0x97, 0x2a, 0xea, 0x77, 0xe6, 0x95, - 0xb9, 0x28, 0xf2, 0xae, 0xa5, 0x5a, 0xe8, 0xf4, 0x1b, 0x10, - 0xb1, 0xfd, 0xa9, 0xc7, 0xcc, 0xdf, 0x77, 0xe9, 0x5c, 0xfc, - 0x48, 0x64, 0x95, 0x50, 0x77, 0x38, 0xae, 0xe2, 0x18, 0xc4, - 0x30, 0xa4, 0x6b, 0xd1, 0x40, 0x15, 0xc7, 0x97, 0x51, 0x52, - 0x9b, 0x9b, 0xe8, 0x79, 0xf9, 0x4d, 0x5, 0x3a, 0x8e, 0xa3, - 0xe9, 0xf9, 0x8f, 0xa2, 0x8a, 0x42, 0x70, 0x32, 0x6b, 0xdb, - 0x3e, 0x88, 0xe3, 0x75, 0x35, 0xb, 0xa8, 0xcc, 00, 00, - 0x6e, 0xed, 0x55, 0x47, 0xde, 0x1f, 0x5a, 0x9e, 0xf6, 0x5f, - 0x3a, 0xf6, 0x57, 0xf5, 0x63, 0x51, 0xc0, 0x86, 0x49, 0xd1, - 0x7, 0x52, 0xc0, 0x57, 0xcb, 0xcf, 0xde, 0xa8, 0xed, 0xdc, - 0xf8, 0xca, 0x9e, 0xf5, 0x57, 0xcb, 0xd5, 0x9d, 0x86, 0xf3, - 0x16, 0x9b, 0xbf, 0x3c, 0xac, 0x7f, 0xd2, 0xb8, 0xc6, 0x25, - 0x98, 0x93, 0xd4, 0x9c, 0xd7, 0x6d, 0x34, 0x3b, 0xec, 0xda, - 0x25, 0xee, 0xb8, 0x15, 0xc5, 0x3a, 0x34, 0x72, 0x32, 0x30, - 0x20, 0x83, 0x82, 0xd, 0x77, 0xe6, 0x49, 0xae, 0x5e, 0xc7, - 0xa9, 0x9b, 0x29, 0x2e, 0x45, 0xd2, 0xc4, 0xd6, 0x2d, 0x1a, - 0x5e, 0xc4, 0xd2, 0x7d, 0xc0, 0xc3, 0x39, 0xae, 0xd1, 0x19, - 0x59, 0x41, 0x52, 0x8, 0xf6, 0xae, 0xe, 0xad, 0x5b, 0x6a, - 0x17, 0x36, 0xb8, 0x11, 0xc8, 0x76, 0xff, 00, 0x74, 0xf4, - 0xac, 0xb0, 0x78, 0xb5, 0x46, 0xea, 0x4b, 0x46, 0x61, 0x80, - 0xc7, 0x2c, 0x3d, 0xe3, 0x25, 0xa3, 0x3b, 0x4a, 0x6b, 0xe3, - 0x69, 0x24, 0x67, 0x15, 0x91, 0x63, 0xae, 0xa4, 0xcc, 0x23, - 0xb8, 0x1, 0x18, 0xf7, 0xed, 0x5a, 0x93, 0x38, 0x11, 0x12, - 0xf, 0x51, 0xc5, 0x7b, 0x34, 0xab, 0x42, 0xaa, 0xbc, 0x19, - 0xf4, 0x14, 0x6b, 0xd3, 0xad, 0x1e, 0x68, 0x3b, 0x98, 0x5a, - 0x9c, 0xb8, 0x8d, 0xb9, 0xaf, 0x2b, 0xf1, 0xc5, 0xef, 0x93, - 0x61, 0x20, 0xcf, 0x2d, 0xc5, 0x7a, 0x46, 0xb1, 0x2e, 0x14, - 0xf3, 0x5e, 0x2f, 0xe3, 0xfb, 0xcc, 0xb8, 0x8c, 0x37, 0x1c, - 0xf1, 0x45, 0x79, 0x5a, 0xc, 0x58, 0x89, 0x72, 0xd3, 0x67, - 0x9e, 0x8, 0x8d, 0xe6, 0xa9, 0x5, 0xb8, 0x19, 0x32, 0x4a, - 0xab, 0x8f, 0xa9, 0xaf, 0xb1, 0x3c, 0x39, 0x6e, 0xb6, 0x9a, - 0x1d, 0xb5, 0xba, 0x8c, 0x8, 0xd0, 0x2e, 0x3f, 0x1, 0x5f, - 0x2c, 0xfc, 0x3e, 0xb1, 0x1a, 0x8f, 0x8e, 0xac, 0x95, 0xd7, - 0x72, 0xc6, 0xc5, 0xff, 00, 0x2a, 0xfa, 0xbb, 0x4c, 0xe6, - 0xd5, 0xbf, 0xdf, 0x3f, 0xc8, 0x52, 0xa3, 0x1b, 0x44, 0x58, - 0x78, 0xda, 0x25, 0xda, 0x28, 0xa2, 0xb6, 0x3a, 0xf, 0x35, - 0x83, 0xfe, 0x43, 0x5a, 0xff, 00, 0xfd, 0x84, 0x9f, 0xff, - 00, 0x40, 0x4a, 0xed, 0x34, 0x7f, 0xf9, 0x5, 0x43, 0xff, - 00, 0x2, 0xff, 00, 0xd0, 0x8d, 0x71, 0x70, 0x7f, 0xc8, - 0x6b, 0x5f, 0xff, 00, 0xb0, 0x93, 0xff, 00, 0xe8, 0x9, - 0x5d, 0xa6, 0x8f, 0xff, 00, 0x20, 0xa8, 0x7f, 0xe0, 0x5f, - 0xfa, 0x11, 0xa0, 0xa, 0xbe, 0x8, 0xff, 00, 0x91, 0x42, - 0xc7, 0xfe, 0xda, 0x7f, 0xe8, 0xc6, 0xae, 0x82, 0xb9, 0xff, - 00, 0x4, 0x7f, 0xc8, 0xa1, 0x63, 0xff, 00, 0x6d, 0x3f, - 0xf4, 0x63, 0x57, 0x41, 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, - 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, - 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, - 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, - 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, - 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, - 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, - 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, - 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, - 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, - 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, - 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, - 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0xd, - 0x63, 0xc5, 0x67, 0xdf, 0xdc, 0x7d, 0x9a, 0xce, 0x79, 0xc9, - 0x3, 0xcb, 0x42, 0xdc, 0xd5, 0xe9, 0xf, 0x15, 0xcb, 0x78, - 0xc2, 0x6c, 0xe9, 0xb1, 0xd9, 0x28, 0x63, 0x25, 0xd4, 0xa1, - 0x14, 0x2f, 0xd7, 0x9a, 0x8a, 0x92, 0xe5, 0x8b, 0x64, 0x54, - 0x97, 0x24, 0x1c, 0x89, 0xfc, 0x15, 0x6c, 0xc9, 0xa4, 0x1b, - 0xa9, 0x6, 0x24, 0xb9, 0x73, 0x2b, 0x7e, 0x3c, 0xd7, 0x4d, - 0x55, 0xac, 0x20, 0x5b, 0x6b, 0x28, 0xa1, 0x5f, 0xba, 0x8a, - 00, 0xfc, 0xab, 0x17, 0xc7, 0x97, 0x77, 0xb6, 0x3e, 0xa, - 0xd5, 0x2e, 0x2c, 0x37, 0xb, 0x84, 0x84, 0xed, 0x65, 0xea, - 0x3e, 0x94, 0x42, 0x3c, 0xb1, 0x48, 0x29, 0xc3, 0x92, 0xa, - 0x27, 0x83, 0xfc, 0x69, 0xf0, 0xde, 0xad, 0x61, 0xe3, 0x3f, - 0xed, 0xdb, 0x14, 0x91, 0xa3, 0x94, 0x6e, 0x12, 0x43, 0x92, - 0x50, 0x8f, 0xa5, 0x79, 0xfe, 0x8b, 0x67, 0xe2, 0x9d, 0x67, - 0x54, 0x78, 0xf4, 0xc8, 0xef, 0x24, 0xba, 0xb9, 0xf9, 0x64, - 0x65, 0x4, 0x64, 0x7b, 0x9f, 0x4a, 0xf7, 0x2f, 0x81, 0x7a, - 0x9c, 0x9a, 0xe6, 0x95, 0xa9, 0x2e, 0xb1, 0x78, 0x6e, 0xe6, - 0xe, 00, 0x8a, 0x73, 0xb8, 0x85, 0xe7, 0x3d, 0x6b, 0xd8, - 0x2d, 0xac, 0xac, 0xec, 0xc1, 0x5b, 0x5b, 0x68, 0x61, 0x7, - 0x9c, 0x46, 0x81, 0x7f, 0x95, 0x59, 0x67, 0x21, 0xf0, 0xcf, - 0xc0, 0xa9, 0xe0, 0x8f, 0xe, 0xf9, 0x53, 0x10, 0xf7, 0xd3, - 0xe1, 0xe7, 0x7f, 0x43, 0xe9, 0x4f, 0xd4, 0x26, 0x33, 0xdf, - 0x4a, 0xe4, 0xe4, 0x67, 0x2, 0xba, 0xdb, 0xe9, 0xbc, 0x8b, - 0x29, 0x5f, 0xb8, 0x5e, 0x2b, 0x89, 0x27, 0x24, 0x93, 0xdf, - 0x9a, 0xf2, 0x73, 0x39, 0xfc, 0x30, 0x3c, 0x3c, 0xe2, 0xa7, - 0xc3, 0x4f, 0xe6, 0x4d, 0x69, 0x17, 0x9f, 0x75, 0x1c, 0x7d, - 0x99, 0xb9, 0xae, 0xb5, 0xf4, 0xdb, 0x57, 0x8b, 0x61, 0x89, - 0x7a, 0x63, 0x38, 0xe6, 0xb0, 0xfc, 0x3f, 0xe, 0xfb, 0xc6, - 0x90, 0x8e, 0x10, 0x7e, 0xb5, 0xd3, 0xd5, 0xe5, 0xf4, 0x62, - 0xe9, 0xb9, 0x49, 0x6e, 0x69, 0x95, 0xe1, 0xe2, 0xe8, 0xb9, - 0x49, 0x5e, 0xe7, 0xf, 0x75, 0xf, 0x91, 0x73, 0x24, 0x7d, - 0x94, 0xf1, 0x4d, 0xb7, 0x38, 0xb8, 0x8c, 0xff, 00, 0xb4, - 0x2a, 0xd6, 0xae, 0x31, 0xa8, 0xc9, 0x54, 0xe3, 0x38, 0x95, - 0xf, 0xb8, 0xaf, 0x2a, 0x69, 0x46, 0xa3, 0x4b, 0xa3, 0x3c, - 0x5a, 0x91, 0x50, 0xac, 0xd2, 0xe8, 0xce, 0xea, 0x3f, 0xf5, - 0x6b, 0xf4, 0xa7, 0x53, 0x22, 0x39, 0x85, 0xf, 0xfb, 0x22, - 0x9f, 0x5f, 0x4e, 0xb6, 0x3e, 0xc6, 0x3b, 0xc, 0x95, 0xc4, - 0x71, 0x33, 0x9e, 0x80, 0x57, 0xf, 0x33, 0xf9, 0xb3, 0xc9, - 0x21, 0xfe, 0x26, 0x26, 0xba, 0xbd, 0x66, 0x6f, 0x27, 0x4e, - 0x7c, 0x1e, 0x5b, 0xe5, 0xae, 0x46, 0xbc, 0x7c, 0xce, 0x77, - 0x92, 0x87, 0x63, 0xc1, 0xce, 0x2a, 0x5e, 0x71, 0x87, 0x62, - 0xe6, 0x99, 0x9, 0x9a, 0xfe, 0x31, 0xd8, 0x1c, 0x9a, 0xec, - 0xab, 0x9e, 0xf0, 0xec, 0x39, 0x79, 0x26, 0x3d, 0xb8, 0x15, - 0xd0, 0xd7, 0x56, 0x5d, 0xe, 0x5a, 0x5c, 0xdd, 0xce, 0xcc, - 0xaa, 0x9f, 0x2d, 0xe, 0x6e, 0xe4, 0x57, 0x2e, 0x63, 0xb6, - 0x91, 0x87, 0x50, 0xa6, 0xb8, 0x76, 0x39, 0x62, 0x7d, 0x4d, - 0x76, 0xd7, 0xaa, 0x5a, 0xce, 0x50, 0x3f, 0xba, 0x6b, 0x88, - 0xe8, 0x6b, 0x9b, 0x33, 0x6f, 0x9a, 0x28, 0xe3, 0xce, 0x1b, - 0xe6, 0x8a, 0x2e, 0x69, 0x6b, 0xbf, 0x51, 0x84, 0x7a, 0x1c, - 0xd7, 0x65, 0x5c, 0x5e, 0x9f, 0x28, 0x82, 0xfa, 0x27, 0x3d, - 0x1, 0xe6, 0xbb, 0x30, 0x43, 00, 0x41, 0xc8, 0x35, 0xb6, - 0x58, 0xd7, 0xb3, 0x6b, 0xcc, 0xe8, 0xc9, 0xda, 0xf6, 0x72, - 0x5d, 0x6e, 0x2d, 0x55, 0xd4, 0x27, 0x16, 0xf6, 0x72, 0x39, - 0x38, 0x38, 0xc0, 0xab, 0x2c, 0x42, 0xa9, 0x24, 0xe0, 0xe, - 0xb5, 0xcb, 0x6b, 0x3a, 0x88, 0xbb, 0x94, 0x45, 0x19, 0xfd, - 0xda, 0x77, 0xf5, 0x35, 0xd3, 0x8b, 0xae, 0xa9, 0x53, 0x7d, - 0xde, 0xc7, 0x5e, 0x37, 0x10, 0xa8, 0x52, 0x6f, 0xab, 0xd8, - 0xcb, 0x27, 0x24, 0x93, 0xde, 0xb4, 0x74, 0x58, 0xc, 0xba, - 0x82, 0x36, 0x38, 0x4e, 0x6b, 0x3a, 0xba, 0xad, 0x16, 0xc8, - 0xdb, 0x5a, 0xf9, 0x8e, 0x3e, 0x79, 0x39, 0xfc, 0x2b, 0xc6, - 0xc1, 0xd2, 0x75, 0x2a, 0xae, 0xcb, 0x53, 0xc0, 0xcb, 0xe8, - 0xba, 0xb5, 0xd7, 0x65, 0xa9, 0xa9, 0x59, 0x9a, 0x86, 0x91, - 0x1d, 0xe3, 0x19, 0x10, 0xec, 0x93, 0xd7, 0xd6, 0xb4, 0xe8, - 0xaf, 0x7e, 0xa5, 0x38, 0xd4, 0x8f, 0x2c, 0x96, 0x87, 0xd3, - 0xd5, 0xa5, 0xa, 0xb1, 0xe5, 0x9a, 0xba, 0x38, 0xcb, 0x9d, - 0x36, 0xe6, 0xd4, 0xfc, 0xe8, 0x4a, 0xff, 00, 0x78, 0x55, - 0x4a, 0xef, 0x48, 0x4, 0x60, 0x8c, 0x83, 0x5c, 0xa6, 0xb5, - 0x6f, 0x1d, 0xbd, 0xe9, 0x11, 0x8c, 0x6, 0x19, 0x23, 0xd2, - 0xbc, 0x6c, 0x5e, 0x9, 0x52, 0x8f, 0x3c, 0x5e, 0x87, 0xcf, - 0xe3, 0xb2, 0xf5, 0x42, 0x3e, 0xd2, 0xf, 0x43, 0x36, 0xb7, - 0xb4, 0xeb, 0xb6, 0x9a, 0xc8, 0xab, 0x36, 0x4a, 0x71, 0x58, - 0x7, 0x80, 0x6b, 0x47, 0x4b, 0x1b, 0x2c, 0x9d, 0xff, 00, - 0xbd, 0x53, 0x97, 0x37, 0xed, 0xac, 0x89, 0xca, 0x9b, 0xf6, - 0xf6, 0x5d, 0x8c, 0xfd, 0x6a, 0x7c, 0x2b, 0x9c, 0xf4, 0xaf, - 0x6, 0xf1, 0x85, 0xe7, 0x9f, 0xa8, 0xc9, 0x86, 0x24, 0xe, - 0x5, 0x7b, 0x2f, 0x88, 0xae, 0x84, 0x76, 0xf2, 0xbf, 0xa0, - 0x35, 0xe0, 0x3a, 0xe5, 0xc7, 0x9d, 0x73, 0x2b, 0xee, 0xce, - 0x49, 0xaf, 0x57, 0x10, 0xee, 0xd4, 0x4f, 0x6b, 0x14, 0xee, - 0xe3, 0x13, 0xbe, 0xf8, 0x2b, 0xa7, 0x79, 0x9a, 0x8d, 0xee, - 0xa2, 0x40, 0xc2, 0xae, 0xc1, 0xc7, 0x4a, 0xfa, 0x17, 0x4b, - 0xe2, 0xd4, 0xff, 00, 0xbe, 0x7f, 0x90, 0xaf, 0x25, 0xf8, - 0x45, 0xa7, 0x7d, 0x93, 0xc2, 0x29, 0x31, 0x52, 0x1a, 0xe1, - 0xcb, 0x9c, 0xd7, 0xad, 0xe9, 0xbf, 0xf1, 0xea, 0x7f, 0xde, - 0xfe, 0x82, 0xb7, 0x8a, 0xb2, 0x3a, 0xa0, 0xad, 0x14, 0x8b, - 0x94, 0x51, 0x45, 0x51, 0x47, 0x9a, 0xc1, 0xff, 00, 0x21, - 0xad, 0x7f, 0xfe, 0xc2, 0x4f, 0xff, 00, 0xa0, 0x25, 0x76, - 0x9a, 0x3f, 0xfc, 0x82, 0xa1, 0xff, 00, 0x81, 0x7f, 0xe8, - 0x46, 0xb8, 0xb8, 0x3f, 0xe4, 0x35, 0xaf, 0xff, 00, 0xd8, - 0x49, 0xff, 00, 0xf4, 0x4, 0xae, 0xd3, 0x47, 0xff, 00, - 0x90, 0x54, 0x3f, 0xf0, 0x2f, 0xfd, 0x8, 0xd0, 0x5, 0x5f, - 0x4, 0x7f, 0xc8, 0xa1, 0x63, 0xff, 00, 0x6d, 0x3f, 0xf4, - 0x63, 0x57, 0x41, 0x5c, 0xff, 00, 0x82, 0x3f, 0xe4, 0x50, - 0xb1, 0xff, 00, 0xb6, 0x9f, 0xfa, 0x31, 0xab, 0xa0, 0xa0, - 0x2, 0x8a, 0x2b, 0xe7, 0xaf, 0x8d, 0xde, 0x25, 0xf1, 0x9e, - 0x93, 0xe3, 0xad, 0x3e, 0xdb, 0x4b, 0xbd, 0xd4, 0x2c, 0xec, - 0x8c, 0x48, 0x6d, 0x16, 0xd4, 0xb2, 0xad, 0xc4, 0x99, 0xf9, - 0x81, 0xc7, 0xdf, 0x39, 0xda, 0x36, 0x9c, 0xf5, 0x1c, 0x73, - 0xca, 0x6e, 0xcd, 0x2e, 0xe3, 0x4a, 0xe9, 0xbe, 0xc7, 0xd0, - 0xb4, 0x55, 0x3d, 0x26, 0x4b, 0xc9, 0xb4, 0x6b, 0x19, 0x35, - 0x8, 0xc4, 0x77, 0xaf, 0x2, 0x34, 0xe8, 0x6, 0x36, 0xc8, - 0x54, 0x6e, 0x1f, 0x9e, 0x6a, 0xe5, 0x53, 0x56, 0x76, 0x25, - 0x3b, 0xab, 0x85, 0x65, 0x78, 0x9b, 0x56, 0x7d, 0xb, 0xc2, - 0xfa, 0xa6, 0xad, 0x1a, 0x2c, 0x8f, 0x67, 0x6b, 0x24, 0xca, - 0xad, 0xd0, 0x95, 0x52, 0x46, 0x7d, 0xab, 0x56, 0x8a, 0x96, - 0xae, 0x8a, 0x4e, 0xcc, 0xe4, 0xef, 0x7c, 0x63, 0x63, 0xa0, - 0x7c, 0x3d, 0xb6, 0xf1, 0x15, 0xcd, 0xd4, 0x9a, 0x8a, 0x3d, - 0xbc, 0x66, 0x27, 0x48, 0xf6, 0x3d, 0xdc, 0x8e, 0x6, 0xd0, - 0x17, 0x3, 0x6e, 0xe3, 0xdb, 0x1c, 0xf, 0xa5, 0x62, 0xda, - 0xe9, 0x3f, 0x13, 0xf5, 0xc8, 0x45, 0xfd, 0xe7, 0x8a, 0xac, - 0xfc, 0x38, 0xd2, 0xe0, 0xa6, 0x9d, 0x6b, 0xa6, 0xc7, 0x74, - 0x23, 0x5c, 0x71, 0xbd, 0xe4, 0x39, 0xdf, 0xea, 0x6, 0x47, - 0x1c, 0x7a, 0x8, 0xfe, 0x2d, 0xed, 0xfb, 0x47, 0x82, 0xfc, - 0xfd, 0xdf, 0x65, 0xff, 00, 0x84, 0x82, 0xf, 0x37, 0x1d, - 0x33, 0xce, 0x33, 0xfa, 0xd7, 0xa5, 0x53, 0xde, 0xf2, 0xf3, - 0xff, 00, 0x27, 0xfa, 0x8b, 0x6b, 0x2f, 0x2f, 0xf3, 0xff, - 00, 0x23, 0x84, 0xf0, 0xdf, 0x8b, 0x75, 0x9b, 0x6f, 0x13, - 0xff, 00, 0xc2, 0x23, 0xe3, 0x8, 0x2d, 0x63, 0xd5, 0x1e, - 0x1f, 0x3a, 0xca, 0xf6, 0xd0, 0x91, 0xd, 0xea, 0x1, 0xf3, - 0x7c, 0xa7, 0x95, 0x71, 0x82, 0x48, 0xfa, 0xe0, 00, 0x6, - 0x79, 0xad, 0x7b, 0xc7, 0x57, 0x5a, 0xb7, 0xc4, 0x9, 0xf4, - 0x5d, 0x23, 0xc7, 0x9a, 0x3f, 0x87, 0xf4, 0xab, 0x3b, 0x41, - 0x23, 0x5e, 0x32, 0xc1, 0x38, 0x9e, 0x52, 0x46, 0x53, 0x32, - 0x1c, 0x64, 0xe, 0xc0, 0xe4, 0x73, 0x9c, 0xf6, 0xd7, 0xf8, - 0x87, 0xb7, 0xfe, 0x16, 0xf, 0xc3, 0xdf, 0x2b, 0x3f, 0x6b, - 0xfe, 0xd0, 0x97, 0x18, 0xff, 00, 0x9e, 0x7b, 0x57, 0x7f, - 0xe9, 0x8f, 0xd6, 0xb2, 0x74, 0xaf, 0xc, 0x78, 0x7e, 0xe3, - 0xe3, 0x97, 0x88, 0xec, 0xa7, 0xd0, 0xb4, 0xc9, 0x6d, 0x13, - 0x4e, 0x86, 0x54, 0x81, 0xed, 0x23, 0x64, 0x57, 0x25, 0x72, - 0xc1, 0x48, 0xc0, 0x27, 0x27, 0x9a, 0x49, 0xb9, 0x35, 0xf3, - 0xfc, 0x15, 0xff, 00, 0xaf, 0x34, 0x12, 0xf7, 0x53, 0xb7, - 0x97, 0xe2, 0xed, 0xfd, 0x7a, 0x8b, 0xa3, 0xf8, 0xb7, 0x56, - 0xf1, 0x6f, 0x8f, 0xef, 0xec, 0xec, 0x7c, 0x77, 0xa6, 0xe9, - 0xfa, 0x75, 0x8d, 0xc4, 0x50, 0xdb, 0xda, 0xc7, 0x4, 0x13, - 0x3e, 0xa4, 0xa0, 0x12, 0xec, 0xac, 0xc7, 0x3c, 0xe0, 0xf2, - 0xb9, 0x3, 0x3d, 0x38, 0xc9, 0xf4, 0x2f, 0xe, 0xc9, 0x34, - 0x93, 0x6a, 0xbe, 0x6f, 0x89, 0x2d, 0xf5, 0x90, 0xb7, 0x8e, - 0x11, 0x21, 0x8e, 0x35, 0x36, 0x63, 0xfe, 0x78, 0xb6, 0xc2, - 0x72, 0x47, 0xab, 0x60, 0xd7, 0x3, 0xf0, 0xcb, 0x42, 0xd1, - 0xd3, 0xc7, 0x1e, 0x35, 0x91, 0x34, 0xab, 0x15, 0x7b, 0x2d, - 0x4c, 0x2d, 0xa3, 0xb, 0x74, 0x6, 0xdc, 0x61, 0xb8, 0x43, - 0x8f, 0x94, 0x7d, 0x31, 0x59, 0x3a, 0x3e, 0xad, 0x71, 0xa1, - 0xf8, 0x3f, 0xe2, 0x96, 0xa3, 0x68, 0xe5, 0x2e, 0x62, 0xd5, - 0xae, 0x3c, 0xa7, 0x1d, 0x55, 0x9b, 0xa, 0x8, 0xfa, 0x67, - 0x34, 0x9c, 0xad, 0x1b, 0xff, 00, 0x76, 0xff, 00, 0x97, - 0xf5, 0xf9, 0xd, 0x2b, 0xbb, 0x79, 0xdb, 0xf3, 0xff, 00, - 0x23, 0xd7, 0x5b, 0xc4, 0x5a, 0x1a, 0xea, 0xbf, 0xd9, 0x4d, - 0xac, 0xe9, 0xc3, 0x51, 0xdc, 0x17, 0xec, 0x86, 0xe9, 0x3c, - 0xec, 0x91, 0x9c, 0x6c, 0xce, 0x73, 0x8e, 0x7a, 0x55, 0x6d, - 0x5a, 0x49, 0x97, 0xc4, 0x3a, 0x32, 0x27, 0x89, 0x2d, 0xf4, - 0xf8, 0xd9, 0xa4, 0xdf, 0xa7, 0x49, 0x1c, 0x6c, 0xf7, 0xfc, - 0xe, 0x14, 0xb1, 0xdc, 0x36, 0xf5, 0xf9, 0x41, 0xeb, 0xcd, - 0x71, 0xfa, 0x6f, 0xc2, 0x9f, 0xd, 0xea, 0x1f, 0xd, 0xed, - 0x6c, 0x1a, 0xce, 0xdd, 0x75, 0x1b, 0x9b, 0x44, 0x94, 0xea, - 0x9e, 0x50, 0x69, 0xd6, 0x66, 0x1, 0xf7, 0xef, 0xce, 0xe2, - 0x37, 0x1e, 0x9b, 0xb1, 0x8e, 0x2a, 0xaf, 0x89, 0xad, 0xae, - 0x6c, 0xbe, 0x21, 0x7c, 0x31, 0xb5, 0xbc, 0xbc, 0xfb, 0x65, - 0xcc, 0x3f, 0x68, 0x8e, 0x4b, 0x92, 0x9b, 0xc, 0xac, 0x23, - 0x50, 0x58, 0x8c, 0x9c, 0x13, 0xd7, 0xad, 0x5d, 0xad, 0x25, - 0x17, 0xbd, 0xec, 0x4a, 0x77, 0x8b, 0x92, 0xda, 0xcd, 0x9e, - 0x91, 0xa9, 0xeb, 0x5a, 0x56, 0x8b, 0x1c, 0x72, 0x6a, 0xba, - 0x9d, 0x9d, 0x82, 0x48, 0x76, 0xa3, 0x5d, 0x4e, 0xb1, 0x6, - 0x3e, 0x80, 0xb1, 0x19, 0xa7, 0x69, 0xba, 0xb6, 0x9b, 0xac, - 0xdb, 0xb5, 0xc6, 0x97, 0xa8, 0x5a, 0x5f, 0x42, 0xad, 0xb1, - 0xa4, 0xb5, 0x99, 0x65, 0x50, 0xd8, 0x7, 0x4, 0xa9, 0x23, - 0x38, 0x23, 0x8f, 0x7a, 0xf2, 0xff, 00, 0x10, 0xdc, 0xf8, - 0x26, 0xd3, 0xe2, 0xe, 0xa1, 0x25, 0xe6, 0x8d, 0xab, 0x78, - 0xbf, 0x5b, 0x92, 0x14, 0x59, 0xac, 0xe0, 0xb2, 0x4b, 0xd4, - 0xb0, 0x8d, 0x71, 0x80, 0x10, 0x80, 0x17, 0x39, 0xcf, 0xf1, - 0x1c, 0xfa, 0x67, 0x9c, 0xdf, 0x1, 0x16, 0x83, 0xe3, 0x75, - 0xe8, 0xb7, 0xf0, 0xec, 0x9e, 0x1b, 0xb4, 0xbc, 0xd2, 0x3c, - 0xf1, 0xa7, 0x97, 0x51, 0xbc, 0x7, 0x1, 0x24, 0x68, 0xd7, - 0x88, 0xdb, 0x19, 0xf9, 0x3a, 0x83, 0x9f, 0x53, 0x4a, 0x1e, - 0xf7, 0xe3, 0xfd, 0x7e, 0x3, 0x96, 0x87, 0x4b, 0xe1, 0xbf, - 0x12, 0xeb, 0x1a, 0xae, 0x93, 0xe3, 0xb6, 0xbc, 0xd6, 0x5, - 0xb3, 0x69, 0xb7, 0xf7, 0x10, 0x5a, 0x5d, 0x1b, 0x74, 0x6f, - 0xb3, 0x22, 0xaf, 0xca, 0x76, 0x80, 0x37, 0xe3, 0xdf, 0x24, - 0xd7, 0x6b, 0xe1, 0xa9, 0x35, 0x19, 0x7c, 0x31, 0xa5, 0xc9, - 0xab, 0x96, 0xfe, 0xd1, 0x7b, 0x58, 0xda, 0xe7, 0x72, 0x5, - 0x3e, 0x61, 0x50, 0x5b, 0x20, 0x70, 0xe, 0x7b, 0xa, 0xe2, - 0x3e, 0x12, 0xff, 00, 0xc7, 0xff, 00, 0x8e, 0x3f, 0xec, - 0x60, 0x9f, 0xfa, 0x57, 0xa5, 0xd0, 0xbe, 0x15, 0xe6, 0x97, - 0xe4, 0x39, 0x7c, 0x4f, 0xd5, 0xfe, 0x65, 0x69, 0xf5, 0x1b, - 0x1b, 0x5b, 0xbb, 0x7b, 0x4b, 0x8b, 0xdb, 0x78, 0x6e, 0x6e, - 0x49, 0x10, 0x43, 0x24, 0xaa, 0xaf, 0x29, 0x1c, 0x9d, 0xaa, - 0x4e, 0x5b, 0x1e, 0xd5, 0x5f, 0x4d, 0xf1, 0x6, 0x8b, 0xac, - 0x4b, 0x24, 0x5a, 0x5e, 0xaf, 0x61, 0x7d, 0x24, 0x43, 0x32, - 0x25, 0xad, 0xca, 0x4a, 0x50, 0x7b, 0x85, 0x27, 0x15, 0xe6, - 0xff, 00, 0x14, 0xf4, 0x58, 0xbc, 0x43, 0xf1, 0x3, 0xc0, - 0xba, 0x54, 0xf2, 0x49, 0x1c, 0x17, 0x12, 0x5c, 0x89, 0x4c, - 0x6c, 0x55, 0x99, 0x2, 0xa9, 0x65, 0xc8, 0xe4, 0x6e, 00, - 0xaf, 0xd0, 0xd3, 0x3e, 0x27, 0x78, 0x6f, 0x46, 0xf0, 0x86, - 0x87, 0x61, 0xe2, 0xbd, 0x3, 0x4f, 0xb6, 0xd2, 0xf5, 0xd, - 0x26, 0xf2, 0x22, 0xaf, 0x67, 0x1a, 0xc5, 0xe6, 0xc6, 0xcc, - 0x15, 0x91, 0xc0, 0xc6, 0xec, 0x83, 0xdf, 0x9e, 0xbd, 0x89, - 0xa2, 0x3a, 0xda, 0xfd, 0x5d, 0xbf, 0x40, 0x92, 0xb6, 0x8b, - 0xb5, 0xcf, 0x54, 0xbe, 0xbf, 0xb3, 0xd3, 0x2d, 0x1e, 0xee, - 0xfe, 0xee, 0xb, 0x4b, 0x64, 0xc6, 0xf9, 0xa7, 0x90, 0x46, - 0x8b, 0x93, 0x81, 0x96, 0x3c, 0xe, 0x6a, 0x2d, 0x37, 0x57, - 0xd3, 0x35, 0x98, 0x1a, 0x7d, 0x2f, 0x51, 0xb4, 0xbe, 0x85, - 0x1b, 0x63, 0x49, 0x6b, 0x3a, 0xca, 0xa1, 0xba, 0xe0, 0x95, - 0x27, 0x9e, 0x45, 0x79, 0xd5, 0xde, 0x9f, 0x6f, 0xe3, 0x5f, - 0x8c, 0xf7, 0x36, 0x1a, 0xcc, 0x62, 0xe7, 0x4b, 0xd0, 0xec, - 0x22, 0x9a, 0x1b, 0x29, 0x72, 0x63, 0x79, 0xa4, 0x20, 0xef, - 0x65, 0xe8, 0xd8, 0x7, 0x18, 0x39, 0x1c, 0x7d, 0x6a, 0x3f, - 0x12, 0xe8, 0xd6, 0x1e, 0x8, 0xf1, 0xff, 00, 0x84, 0xf5, - 0x8f, 0xf, 0xda, 0xc5, 0xa7, 0xae, 0xa3, 0x79, 0xfd, 0x9d, - 0x7b, 0x6d, 0x6a, 0x9b, 0x22, 0x99, 0x18, 0x7c, 0xa4, 0xa2, - 0xf0, 0x8, 0x39, 0x3d, 0x3d, 0x3d, 0x28, 0x8e, 0xb6, 0xbf, - 0x5f, 0xf3, 0xb7, 0xe6, 0x4b, 0x7b, 0xdb, 0xa6, 0xbf, 0x85, - 0xff, 00, 0x23, 0xd1, 0x2e, 0xbc, 0x45, 0xa2, 0x58, 0x9b, - 0x91, 0x77, 0xac, 0x69, 0xf6, 0xe6, 0xd4, 0xa2, 0xdc, 0x9, - 0x6e, 0x91, 0x3c, 0xa2, 0xdc, 0xa8, 0x6c, 0x9f, 0x97, 0x38, - 0xe3, 0x3d, 0x6b, 0x8b, 0xd6, 0xfe, 0x27, 0x58, 0x59, 0x78, - 0xf3, 0xc3, 0xda, 0x55, 0xae, 0xb5, 0xa3, 0x36, 0x93, 0x74, - 0x92, 0xc9, 0x7b, 0x73, 0xf6, 0x84, 0x3e, 0x5e, 0x10, 0x98, - 0xc1, 0x7d, 0xdb, 0x54, 0x31, 0x20, 0xf3, 0xd7, 0x8c, 0x1a, - 0xc6, 0xd2, 0x7c, 0x3d, 0xa5, 0xeb, 0xdf, 0x1c, 0xfc, 0x62, - 0xda, 0xad, 0x9c, 0x37, 0xb1, 0x5b, 0x43, 0x6c, 0x52, 0xb, - 0x84, 0x12, 0x47, 0xb9, 0xa3, 0x3, 0x71, 0x53, 0xc1, 0x20, - 0x2, 0x1, 0xed, 0x93, 0x49, 0xe2, 0x9f, 0xd, 0x68, 0x29, - 0xf1, 0x97, 0xc1, 0x56, 0x43, 0x45, 0xd3, 0xfe, 0xcb, 0x35, - 0xbd, 0xc2, 0xcd, 0x9, 0xb6, 0x42, 0xb2, 0x4, 0x8b, 0x9, - 0xb8, 0x63, 0xe6, 0xda, 00, 0xc6, 0x7a, 0x60, 0x51, 0xd, - 0x5c, 0x5f, 0x7f, 0xf2, 0x7f, 0xe4, 0x54, 0xb4, 0x52, 0x5d, - 0xbf, 0xe0, 0x1e, 0x9f, 0xa8, 0xf8, 0x83, 0x45, 0xd2, 0x16, - 0x16, 0xd4, 0xf5, 0x7b, 0xb, 0x25, 0x9c, 0x13, 0x11, 0xb9, - 0xb9, 0x48, 0xc4, 0x80, 0x63, 0x3b, 0x77, 0x11, 0x9e, 0xa3, - 0xa7, 0xad, 0x5c, 0xb6, 0xba, 0xb7, 0xbd, 0xb6, 0x8e, 0xe6, - 0xd6, 0x78, 0xa7, 0xb7, 0x95, 0x43, 0x47, 0x2c, 0x4e, 0x19, - 0x5c, 0x1e, 0x84, 0x11, 0xc1, 0x15, 0xe2, 0xba, 0xe5, 0xb2, - 0x78, 0x53, 0xe2, 0xe, 0xbd, 0xac, 0x78, 0xab, 0xc1, 0x93, - 0x78, 0x83, 0x44, 0xbb, 0x8d, 0x1e, 0xd6, 0xf2, 0x2b, 0x54, - 0xb9, 0x5b, 0x38, 0xe3, 0x51, 0x94, 0x28, 0xdf, 0x2a, 0xe, - 0x7a, 0x92, 0xbf, 0x77, 0x8c, 0xe4, 0xe3, 0xae, 0xf8, 0x5e, - 0xfe, 0xd, 0x96, 0x3d, 0x5a, 0xe7, 0xc1, 0xba, 0x8c, 0xef, - 0x6f, 0x75, 0x32, 0xcd, 0x3e, 0x9f, 0x27, 0xca, 0xb6, 0x8e, - 0x47, 0xf0, 0x21, 0x50, 0x54, 0x1e, 0x9d, 0x4a, 0xfc, 0xb8, - 0x7, 0x8a, 0x23, 0xaa, 0xb8, 0x9e, 0x8e, 0xc7, 0x5f, 0xaf, - 0x6b, 0x56, 0x7e, 0x1f, 0xd1, 0xae, 0x75, 0x1b, 0xdb, 0x9b, - 0x78, 0x12, 0x24, 0x62, 0x86, 0x79, 0x2, 0x7, 0x7c, 0x12, - 0x14, 0x13, 0xdc, 0xe3, 0xa7, 0x5a, 0xe1, 0x3e, 0x16, 0x6b, - 0x3a, 0xe7, 0x89, 0xe2, 0x5d, 0x67, 0x52, 0xf1, 0x95, 0x95, - 0xf0, 0x96, 0x37, 0x69, 0x34, 0x4b, 0x6b, 0x68, 0x54, 0xda, - 0x12, 0xe4, 0x26, 0xe7, 0x7, 0x7f, 0x40, 0x70, 0x18, 0x77, - 0xea, 0x71, 0x93, 0xd8, 0x78, 0xce, 0xc2, 0xcf, 0x50, 0xf0, - 0x7e, 0xab, 0x1d, 0xed, 0xa4, 0x17, 0x28, 0x96, 0xb2, 0xc8, - 0x8b, 0x34, 0x61, 0xc2, 0xb8, 0x43, 0x86, 00, 0xf4, 0x23, - 0xb1, 0xaf, 0x20, 0x8d, 0x53, 0x47, 0xf8, 0x1, 0xa3, 0xc9, - 0xa4, 0x41, 0x5, 0x8e, 0xa3, 0xad, 0x49, 0x15, 0x8c, 0xf7, - 0xb0, 0x44, 0x16, 0x56, 0x56, 0x91, 0xb2, 0x59, 0x80, 0xc9, - 0xe0, 0x11, 0xc9, 0xef, 0x49, 0x37, 0x77, 0xf2, 0x4b, 0xe7, - 0x70, 0x7d, 0x3e, 0x6f, 0xee, 0xb1, 0xec, 0xf0, 0xf8, 0x9b, - 0x40, 0xb8, 0xd4, 0xff, 00, 0xb3, 0x21, 0xd7, 0x34, 0xd9, - 0x2f, 0xf7, 0x94, 0xfb, 0x2a, 0x5d, 0xc6, 0x65, 0xdc, 0x33, - 0x91, 0xb0, 0x1c, 0xe4, 0x60, 0xe4, 0x63, 0xb5, 0x5d, 0xba, - 0xbf, 0xb3, 0xb0, 0xf2, 0x7e, 0xd9, 0x77, 0x5, 0xbf, 0x9f, - 0x20, 0x86, 0x2f, 0x3a, 0x40, 0x9e, 0x63, 0x9e, 0x8a, 0xb9, - 0x3c, 0xb1, 0xec, 0x7, 0x35, 0xc3, 0xeb, 0x3f, 0xa, 0xfc, - 0x24, 0xbe, 0xb, 0xb8, 0xd3, 0xec, 0xf4, 0x8b, 0x5b, 0x69, - 0xed, 0xed, 0xd9, 0xa0, 0xbd, 0x48, 0xc0, 0x9d, 0x64, 0x50, - 0x4a, 0xb9, 0x90, 0x7c, 0xc7, 0x9e, 0x70, 0x4e, 0x2b, 0x84, - 0xf1, 0x36, 0xa3, 0x71, 0xe2, 0xbf, 0x83, 0xfe, 0x4, 0xb8, - 0xbe, 0x9a, 0x5f, 0xb4, 0x5d, 0x6a, 0xb0, 0x41, 0x2c, 0xc1, - 0x88, 0x76, 0x23, 0x7a, 0x17, 0xcf, 0xa9, 0xc6, 0x73, 0x4f, - 0xc9, 0x77, 0x5f, 0x88, 0x79, 0xbe, 0xcf, 0xf0, 0x57, 0x3d, - 0xb2, 0xc3, 0x5c, 0xd2, 0x35, 0x59, 0xe6, 0x83, 0x4e, 0xd5, - 0x2c, 0x6f, 0x25, 0x83, 0x89, 0xa3, 0xb7, 0xb8, 0x49, 0x1a, - 0x3e, 0x71, 0xf3, 0x5, 0x27, 0x1c, 0x83, 0xd7, 0xd2, 0x9f, - 0xaa, 0x6a, 0x96, 0x3a, 0x26, 0x99, 0x71, 0xa9, 0x6a, 0x57, - 0x29, 0x6d, 0x67, 0x6e, 0xbb, 0xe5, 0x95, 0xfa, 0x28, 0xfc, - 0x39, 0x27, 0xb0, 0x3, 0x92, 0x78, 0xa8, 0x34, 0x8f, 0xe, - 0xe8, 0xba, 0x2, 0xb8, 0xd2, 0x34, 0xbb, 0x3b, 0x1f, 0x31, - 0x55, 0x64, 0x36, 0xf0, 0xaa, 0x17, 0xb, 0x9c, 0x6e, 0xc0, - 0xe4, 0xf2, 0x79, 0x3c, 0xf3, 0x57, 0x6e, 0xad, 0x2d, 0xaf, - 0xad, 0xda, 0xde, 0xf2, 0xde, 0x2b, 0x88, 0x18, 0x82, 0xd1, - 0xcc, 0x81, 0xd4, 0x90, 0x72, 0x32, 0xf, 0x1c, 0x10, 0xf, - 0xe1, 0x43, 0xf2, 0x5, 0xe6, 0x79, 0xa7, 0x84, 0x3e, 0x22, - 0xea, 0x3e, 0x2e, 0xf8, 0x9b, 0x3d, 0x94, 0x76, 0xd3, 0x5a, - 0x68, 0x3f, 0xd9, 0x6d, 0x73, 0x6b, 0x1c, 0xf1, 0x5, 0x7b, - 0x8f, 0xde, 0x2a, 0x89, 0xb2, 0x46, 0x40, 0x39, 0x60, 0x6, - 0x71, 0x8e, 0x6b, 0x6f, 0xc7, 0xfe, 0x26, 0xd5, 0x74, 0xbb, - 0x8d, 0x1b, 0x41, 0xd0, 0x3e, 0xce, 0x9a, 0xbe, 0xb5, 0x33, - 0xc3, 0x15, 0xc5, 0xc0, 0x25, 0x20, 0x55, 0x19, 0x67, 0xc7, - 0x72, 0x32, 0x30, 0xf, 0xe4, 0x7a, 0x56, 0x74, 0x5f, 0xf2, - 0x71, 0x53, 0xff, 00, 0xd8, 0xb8, 0x3f, 0xf4, 0x78, 0xaa, - 0xff, 00, 0x14, 0x96, 0x6d, 0x73, 0x5b, 0xf0, 0xf7, 0x85, - 0xf4, 0x98, 0x42, 0x6b, 0x92, 0xca, 0x6f, 0x20, 0xd4, 0x4c, - 0x8c, 0xbf, 0x60, 0x44, 0xfb, 0xce, 0x36, 0xf5, 0x27, 0x91, - 0x83, 0xc7, 0xe8, 0x40, 0xed, 0x68, 0x2f, 0xeb, 0x77, 0xfa, - 0x7, 0x59, 0x7f, 0x5d, 0x17, 0xea, 0x3a, 0x4d, 0x57, 0xc5, - 0xde, 0x5, 0xf1, 0x1e, 0x8b, 0x6f, 0xe2, 0xd, 0x72, 0x1f, - 0x10, 0x69, 0x5a, 0xc5, 0xca, 0xd9, 0xf9, 0xbf, 0x62, 0x4b, - 0x69, 0x6d, 0xa5, 0x39, 0xdb, 0x80, 0x87, 0xc, 0xa7, 0xbe, - 0x7d, 0x38, 0xc7, 0x7f, 0x4d, 0xaf, 0x17, 0xf1, 0x16, 0x9d, - 0xaf, 0xf8, 0x4f, 0xc4, 0xda, 0x7, 0x88, 0xfc, 0x5d, 0xac, - 0xf, 0x13, 0xe9, 0x30, 0x5c, 0x8, 0x47, 0xee, 0x16, 0xd4, - 0xd9, 0xca, 0xe7, 0xb, 0x28, 0x8d, 0xe, 0xd7, 0xc7, 0x3d, - 0x79, 0xfd, 0xd, 0x7b, 0x45, 0x35, 0xac, 0x6f, 0xe6, 0xff, - 00, 0x4f, 0xeb, 0xe6, 0x27, 0xf1, 0x58, 0xa3, 0xa9, 0xeb, - 0x5a, 0x56, 0x8b, 0x1c, 0x72, 0x6a, 0xba, 0x9d, 0x9d, 0x82, - 0x48, 0x76, 0xa3, 0x5d, 0x4e, 0xb1, 0x6, 0x3e, 0x80, 0xb1, - 0x19, 0xa7, 0x69, 0xba, 0xb6, 0x9b, 0xac, 0xdb, 0xb5, 0xc6, - 0x97, 0xa8, 0x5a, 0x5f, 0x42, 0xad, 0xb1, 0xa4, 0xb5, 0x99, - 0x65, 0x50, 0xd8, 0x7, 0x4, 0xa9, 0x23, 0x38, 0x23, 0x8f, - 0x7a, 0xf2, 0xff, 00, 0x10, 0xdc, 0xf8, 0x26, 0xd3, 0xe2, - 0xe, 0xa1, 0x25, 0xe6, 0x8d, 0xab, 0x78, 0xbf, 0x5b, 0x92, - 0x14, 0x59, 0xac, 0xe0, 0xb2, 0x4b, 0xd4, 0xb0, 0x8d, 0x71, - 0x80, 0x10, 0x80, 0x17, 0x39, 0xcf, 0xf1, 0x1c, 0xfa, 0x67, - 0x9c, 0xdf, 0x1, 0x16, 0x83, 0xe3, 0x75, 0xe8, 0xb7, 0xf0, - 0xec, 0x9e, 0x1b, 0xb4, 0xbc, 0xd2, 0x3c, 0xf1, 0xa7, 0x97, - 0x51, 0xbc, 0x7, 0x1, 0x24, 0x68, 0xd7, 0x88, 0xdb, 0x19, - 0xf9, 0x3a, 0x83, 0x9f, 0x53, 0x4a, 0x1e, 0xf7, 0xe3, 0xfd, - 0x7e, 0x3, 0x96, 0x87, 0xac, 0x5c, 0x78, 0xa7, 0xc3, 0xd6, - 0x91, 0xb4, 0x97, 0x3a, 0xf6, 0x97, 0xc, 0x69, 0x33, 0x40, - 0xcd, 0x25, 0xe4, 0x6a, 0x16, 0x55, 0xfb, 0xc8, 0x49, 0x3f, - 0x78, 0x64, 0x64, 0x75, 0x15, 0x26, 0xa3, 0xe2, 0x1d, 0x13, - 0x48, 0x10, 0x9d, 0x4f, 0x58, 0xd3, 0xec, 0x84, 0xe0, 0xb4, - 0x5f, 0x69, 0xb9, 0x48, 0xfc, 0xc0, 0x31, 0x92, 0xbb, 0x88, - 0xcf, 0x51, 0xd3, 0xd6, 0xbc, 0xb7, 0xe1, 0xcf, 0x85, 0x74, - 0x5d, 0x6f, 0x5e, 0xf1, 0xbd, 0xe6, 0xad, 0xa7, 0x5b, 0x5f, - 0xb2, 0x6b, 0x33, 0x43, 0x1a, 0x5d, 0x46, 0x24, 0x58, 0xc6, - 0x72, 0x4a, 0x83, 0xd0, 0x9c, 0x8c, 0x91, 0xcf, 0x2, 0xad, - 0x7c, 0x39, 0xf0, 0xfe, 0x93, 0xe3, 0x8, 0xb5, 0xdf, 0x13, - 0x78, 0x82, 0xc2, 0xdb, 0x53, 0xbc, 0xbc, 0xd4, 0x65, 0x85, - 0x5, 0xdc, 0x4b, 0x28, 0x82, 0x14, 0xe1, 0x51, 0x41, 0xce, - 0xdc, 0x7b, 0x60, 0xf4, 0xa4, 0xb5, 0xb7, 0xa5, 0xff, 00, - 0x2f, 0xf3, 0x1c, 0xac, 0x9b, 0xf5, 0xb7, 0xe7, 0xfe, 0x47, - 0xa0, 0x78, 0xa7, 0x51, 0x9a, 0xc3, 0xc1, 0x7a, 0xbe, 0xa5, - 0xa7, 0xce, 0xab, 0x34, 0x36, 0x32, 0xcf, 0x4, 0xaa, 0x3, - 00, 0x42, 0x12, 0xac, 0x33, 0x90, 0x7b, 0x7b, 0x56, 0x47, - 0x86, 0x3c, 0x65, 0x60, 0x7c, 0x1d, 0xa0, 0xdd, 0x78, 0x87, - 0x5d, 0xd3, 0xe0, 0xd4, 0x6f, 0x6c, 0xe3, 0x99, 0xbe, 0xd3, - 0x3c, 0x70, 0xb4, 0xa4, 0xf5, 0x21, 0x78, 0xef, 0xe8, 0x2b, - 0x2e, 0xe3, 0xc2, 0xaf, 0xe0, 0xef, 0x85, 0x3e, 0x28, 0xd2, - 0xd7, 0x51, 0x6b, 0xbb, 0x2f, 0xb3, 0xdd, 0x4b, 0x69, 0x1b, - 0xc6, 0x54, 0xdb, 0x46, 0xc8, 0x48, 0x8f, 0x25, 0x8e, 0xe0, - 0xe, 0x79, 0xe3, 0xad, 0x66, 0x78, 0x23, 0xe1, 0xe7, 0x85, - 0xef, 0x3e, 0x13, 0xd9, 0xcb, 0x7d, 0xa4, 0xdb, 0xdd, 0xdd, - 0x5f, 0x59, 0x79, 0xd2, 0xdd, 0xce, 0x81, 0xa6, 0x52, 0x57, - 0x80, 0x8e, 0x79, 0x40, 0xa0, 00, 00, 0xc6, 0x31, 0xf5, - 0xa1, 0xb4, 0xb9, 0x9f, 0x45, 0x6f, 0xd4, 0x2d, 0x7e, 0x55, - 0xd7, 0x5f, 0xd0, 0xf4, 0xf, 0x14, 0x49, 0x2c, 0x7e, 0x1d, - 0xb9, 0x78, 0x35, 0xf8, 0x34, 0x17, 0x1b, 0x71, 0xa8, 0xcf, - 0x1a, 0x3a, 0x45, 0xf3, 0xe, 0xa1, 0xc8, 0x53, 0x9e, 0x9c, - 0x9e, 0xf5, 0xcb, 0xf8, 0xeb, 0xc7, 0xa3, 0xc2, 0xb7, 0x3e, - 0x1c, 0xb2, 0x83, 0x52, 0xd3, 0x4c, 0xb7, 0xb7, 0xb0, 0xc7, - 0x7a, 0xd3, 0x3a, 0xee, 0x4b, 0x72, 0x7e, 0x69, 0x40, 0xdc, - 0x2, 0x83, 0x83, 0xf3, 0x1c, 0x8e, 0xb5, 0xc0, 0xcd, 0x79, - 0x3d, 0xef, 0xec, 0xa2, 0x1e, 0xe2, 0x46, 0x91, 0xe3, 0xb, - 0x10, 0x66, 0x39, 0x3b, 0x56, 0xe4, 0x5, 0x1f, 0x80, 00, - 0x7e, 0x15, 0xbb, 0xf1, 0x37, 0x4a, 0xd3, 0xae, 0x26, 0xf8, - 0x7f, 0x3c, 0xd6, 0x16, 0xb2, 0xcb, 0x3e, 0xa9, 0x6b, 0x6f, - 0x34, 0x8f, 0xa, 0xb3, 0x49, 0x16, 0x7, 0xc8, 0xc4, 0x8e, - 0x57, 0x93, 0xc1, 0xe3, 0x9a, 0xbe, 0x5b, 0x4f, 0x97, 0xfb, - 0xc9, 0x7d, 0xe4, 0xdf, 0xdd, 0x4f, 0xc9, 0xfe, 0x7, 0xaa, - 0x49, 0xac, 0xe9, 0x70, 0xe9, 0x63, 0x54, 0x97, 0x52, 0xb3, - 0x4d, 0x38, 0xa8, 0x61, 0x76, 0xd3, 0xa8, 0x88, 0x83, 0xc0, - 0x3b, 0xf3, 0x8c, 0x1c, 0x8e, 0xf4, 0xba, 0x6e, 0xad, 0xa6, - 0xeb, 0x36, 0xed, 0x71, 0xa5, 0xea, 0x16, 0x97, 0xd0, 0xab, - 0x6c, 0x69, 0x2d, 0x66, 0x59, 0x54, 0x36, 0x1, 0xc1, 0x2a, - 0x48, 0xce, 0x8, 0xe3, 0xde, 0xbc, 0x67, 0xc4, 0x77, 0xda, - 0x73, 0x7c, 0x56, 0x97, 0x4b, 0xbf, 0xf0, 0xc6, 0xa9, 0xac, - 0x68, 0xba, 0x15, 0x9c, 0x4b, 0x69, 0xa5, 0xe9, 0x56, 0x22, - 0x68, 0x63, 0x91, 0xc0, 0x6d, 0xef, 0x18, 0x21, 0x71, 0x83, - 0x80, 0x8, 0xc7, 0x1d, 0x38, 0xa9, 0x2c, 0xee, 0x51, 0x3e, - 0x22, 0x68, 0x3a, 0x8f, 0x85, 0x7c, 0xb, 0xe2, 0x3d, 0xa, - 0x39, 0x24, 0x36, 0xda, 0x9a, 0xcb, 0xa5, 0x7d, 0x9e, 0xde, - 0x48, 0x5b, 0xa1, 0x21, 0x49, 0x50, 0x54, 0xf3, 0x9c, 0xf, - 0xad, 0x4c, 0x7d, 0xeb, 0x79, 0x8e, 0x5e, 0xef, 0xcb, 0xfe, - 0x1c, 0xf6, 0x1d, 0x4b, 0x58, 0xd3, 0x34, 0x68, 0x12, 0x7d, - 0x53, 0x51, 0xb4, 0xb1, 0x89, 0xdb, 0x62, 0xc9, 0x75, 0x3a, - 0xc4, 0xac, 0xd8, 0xce, 0x1, 0x62, 0x32, 0x70, 0xd, 0x41, - 0x7f, 0xaf, 0xe9, 0xb6, 0x9e, 0x1e, 0x97, 0x59, 0x1a, 0x8d, - 0x90, 0xb3, 0x11, 0x17, 0x8e, 0xe5, 0xa7, 0x5f, 0x25, 0xcf, - 0xf0, 0xe1, 0xb3, 0x83, 0x93, 0x81, 0xd7, 0x9a, 0xf3, 0xef, - 0xf, 0xe9, 0x16, 0x1e, 0x33, 0xf8, 0x97, 0xe2, 0xed, 0x47, - 0x5e, 0xb5, 0x87, 0x50, 0x8f, 0x4c, 0x99, 0x2c, 0x2c, 0xed, - 0xae, 0x90, 0x49, 0x1c, 0x4b, 0x82, 0x58, 0x84, 0x39, 0x19, - 0x24, 0x67, 0x38, 0xf5, 0xad, 0xab, 0x5f, 0x87, 0xf6, 0x1a, - 0x15, 0x8f, 0x89, 0xa1, 0x56, 0x82, 0xe3, 0x43, 0xbf, 0xcd, - 0xcc, 0x3a, 0x54, 0xb6, 0xc1, 0xa3, 0xb5, 0x90, 0x29, 0x24, - 0xa9, 0x24, 0x82, 0x9, 00, 0x81, 0x81, 0x8c, 0xc, 0x74, - 0xa8, 0x93, 0xf7, 0x2f, 0xe5, 0x7f, 0xeb, 0xe4, 0x52, 0xf8, - 0xad, 0xe7, 0x6f, 0xeb, 0xe6, 0x3f, 0xe1, 0xd7, 0x8e, 0xa1, - 0xf1, 0x47, 0x82, 0xe3, 0xd5, 0x75, 0x3d, 0x47, 0x4e, 0x4b, - 0xf8, 0xc4, 0x92, 0xde, 0x45, 0x1c, 0xaa, 0xa2, 0xd9, 0x3, - 0xb0, 0x52, 0xca, 0x49, 0x2a, 0xbb, 0x40, 0xe5, 0xbe, 0xb9, - 0xae, 0xca, 0xde, 0xee, 0xda, 0xee, 0xd1, 0x2e, 0xed, 0xae, - 0x22, 0x9a, 0xda, 0x45, 0xde, 0x93, 0x46, 0xe1, 0x91, 0x97, - 0xd4, 0x30, 0xe0, 0x8f, 0x7a, 0xf1, 0xbf, 0x4, 0xe9, 0xd6, - 0x30, 0x7e, 0xce, 0x57, 0xf7, 0xd0, 0xd9, 0xdb, 0xc7, 0x77, - 0x71, 0xa7, 0x5e, 0x9, 0xa7, 0x48, 0x94, 0x49, 0x28, 0x56, - 0x90, 0xd, 0xcc, 0x6, 0x4e, 0x7, 0x4c, 0xd7, 0x75, 0xe0, - 0x1f, 0xf9, 0x24, 0xda, 0x27, 0xfd, 0x83, 0x17, 0xff, 00, - 0x41, 0xad, 0x2a, 0xfb, 0xae, 0x5e, 0x5f, 0xf0, 0x7f, 0xc8, - 0x98, 0x2b, 0xdb, 0xcd, 0xbf, 0xd3, 0xfc, 0xcd, 0xf8, 0xf5, - 0xfd, 0x1a, 0x5b, 0x4b, 0x6b, 0xb8, 0xf5, 0x7b, 0x7, 0xb6, - 0xba, 0x94, 0x43, 0x6f, 0x32, 0xdc, 0xa1, 0x49, 0x64, 0x27, - 0x1, 0x15, 0xb3, 0x86, 0x6c, 0x82, 0x30, 0x39, 0xe2, 0x9d, - 0x61, 0xae, 0x69, 0x1a, 0xac, 0xf3, 0x41, 0xa7, 0x6a, 0x96, - 0x37, 0x92, 0xc1, 0xc4, 0xd1, 0xdb, 0xdc, 0x24, 0x8d, 0x1f, - 0x38, 0xf9, 0x82, 0x93, 0x8e, 0x41, 0xeb, 0xe9, 0x5f, 0x3c, - 0xad, 0xb8, 0xbb, 0xf8, 0x17, 0xe0, 0x9b, 0x66, 0x77, 0x41, - 0x36, 0xbe, 0x23, 0x2c, 0x87, 0xc, 0x1, 0x92, 0x41, 0x90, - 0x7b, 0x1e, 0x6b, 0xd0, 0x7e, 0x27, 0x5a, 0xd8, 0xf8, 0x2b, - 0xc0, 0x6f, 0xf, 0x86, 0xf4, 0xd8, 0xf4, 0xe9, 0x75, 0x4b, - 0x98, 0x2c, 0x25, 0x7d, 0x3a, 00, 0xb2, 0xba, 0x7c, 0xc7, - 0x8c, 0x63, 0x73, 0x10, 0x18, 0xc, 0xf2, 0x77, 0x51, 0x35, - 0xcb, 0x7f, 0x5b, 0x7e, 0x5f, 0xe6, 0xb, 0x5b, 0x7d, 0xff, - 00, 0x8b, 0xff, 00, 0x23, 0xd0, 0x21, 0xf1, 0x2e, 0x83, - 0x73, 0xa9, 0x9d, 0x32, 0xd, 0x6f, 0x4d, 0x97, 0x50, 0xc, - 0xc8, 0x6d, 0x52, 0xed, 0x1a, 0x5d, 0xcb, 0x9d, 0xc3, 0x60, - 0x39, 0xc8, 0xc1, 0xc8, 0xc7, 0x18, 0xad, 0x9, 0xee, 0x21, - 0xb5, 0xb7, 0x92, 0xe2, 0xe2, 0x68, 0xe1, 0x82, 0x25, 0x2f, - 0x24, 0x92, 0x30, 0x55, 0x45, 0x1c, 0x92, 0x49, 0xe0, 0xa, - 0xf0, 0xbd, 0x45, 0x3c, 0x27, 0x3f, 0x86, 0x24, 0xd2, 0xac, - 0xbe, 0x14, 0xf8, 0xb2, 0xda, 0xe1, 0x61, 0xdb, 0x6f, 0x78, - 0x9a, 0x20, 0x59, 0xd2, 0x40, 0x3e, 0x57, 0x32, 0x86, 0xdc, - 0x79, 0xc1, 0x39, 0x27, 0x35, 0xa7, 0xe2, 0x4b, 0x1f, 0x15, - 0x78, 0x8f, 0xe1, 0x67, 0x85, 0xef, 0x6e, 0x74, 0x8b, 0xab, - 0xfb, 0xab, 0x29, 0xd2, 0x7d, 0x53, 0x4a, 0x98, 0x18, 0xa4, - 0xba, 0x54, 0xc8, 0xe5, 0x71, 0x92, 0x4e, 0x33, 0x8c, 0x12, - 0x77, 0x67, 0x7, 0xa5, 0x27, 0xa2, 0xfb, 0xbf, 0x1e, 0xbf, - 0x20, 0x5b, 0x9e, 0xa9, 0xa6, 0x78, 0x83, 0x45, 0xd6, 0x9e, - 0x44, 0xd2, 0xb5, 0x7b, 0xb, 0xf6, 0x88, 0x3, 0x20, 0xb5, - 0xb9, 0x49, 0x4a, 0x3, 0xd3, 0x3b, 0x49, 0xc5, 0x68, 0xd7, - 0x8a, 0xe9, 0x7a, 0xb7, 0xc3, 0x6d, 0x5f, 0xc6, 0x3a, 0x5a, - 0x47, 0xa7, 0x5e, 0x78, 0x3f, 0xc4, 0x56, 0x17, 0xb, 0xe5, - 0x5b, 0x9b, 0x34, 0xb3, 0x33, 0x33, 0x2f, 0x31, 0xbe, 0xd5, - 0x2a, 0x54, 0x8e, 0x3e, 0x6d, 0xa4, 0xee, 0xc0, 0xeb, 0x5e, - 0xd5, 0x4e, 0xda, 0x5c, 0x57, 0xd4, 0x28, 0xa2, 0x8a, 0x43, - 0xa, 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa4, 0x6e, 0x94, 0x1, - 0x14, 0xa7, 0x1c, 0x7a, 0x57, 0x27, 0x72, 0xe, 0xa5, 0xe3, - 0x6b, 0x58, 0x3, 0x7e, 0xee, 0xd1, 0x37, 0xb7, 0xfb, 0xc6, - 0xba, 0x79, 0x9c, 0x2a, 0xb3, 0x13, 0xc0, 0x19, 0xae, 0x73, - 0xc1, 0xea, 0xd7, 0x97, 0x3a, 0x86, 0xab, 0x22, 0xb0, 0xf3, - 0xa5, 0x2a, 0x9b, 0x87, 0x38, 0x1c, 0x7f, 0x4a, 0xca, 0xa6, - 0xae, 0x31, 0xfe, 0xb4, 0x30, 0xab, 0xef, 0x4a, 0x30, 0xf3, - 0xbf, 0xdc, 0x75, 0x9b, 0x94, 0x60, 0x12, 0x1, 0x3d, 0xb3, - 0x5e, 0x4d, 0xf1, 0xcf, 0xc4, 0x3a, 0xae, 0x9d, 0xa2, 0xdb, - 0x69, 0xfa, 0x52, 0xca, 0x1e, 0xe5, 0xff, 00, 0x78, 0xd1, - 0xae, 0x7e, 0x50, 0x3a, 0x7e, 0xb5, 0xcf, 0xff, 00, 0xc2, - 0x49, 0xaa, 0xf8, 0x8b, 0xe3, 0xaa, 0xd8, 0x41, 0xa8, 0x4b, - 0xe, 0x9f, 0x6b, 0x26, 0x3c, 0xb4, 0x7c, 0x2, 0x7, 0xad, - 0x77, 0x10, 0xfc, 0x49, 0xb2, 0xd4, 0x3e, 0x20, 0x1f, 0xa, - 0xdb, 0xe9, 0xde, 0x79, 0x8c, 0x90, 0xf7, 0xd, 0x8c, 0xc, - 0xa, 0xd4, 0xdc, 0xf9, 0x72, 0xc2, 0xe3, 0x5e, 0xd2, 0x6e, - 0x9a, 0x7b, 0x2f, 0xb5, 0x41, 0x29, 0xea, 0x54, 0x11, 0x5e, - 0x8d, 0xf0, 0xe3, 0xc5, 0x5e, 0x34, 0xd7, 0x3c, 0x67, 0x61, - 0x65, 0x3e, 0xa3, 0x76, 0xf6, 0xc1, 0xb7, 0x48, 0xaf, 0x9c, - 0x15, 0x1d, 0x8d, 0x7d, 0x2c, 0xda, 0x65, 0x8b, 0x92, 0x5a, - 0xd2, 0x12, 0x4f, 0x5f, 0x90, 0x52, 0x5b, 0xe9, 0x96, 0x16, - 0x72, 0x19, 0x2d, 0xac, 0xe0, 0x85, 0xc8, 0xc1, 0x68, 0xe3, - 0xa, 0x4f, 0xe5, 0x40, 0x14, 0x7c, 0x41, 0x36, 0xcb, 0x44, - 0x88, 0x75, 0x63, 0xfc, 0xab, 0x9a, 0xae, 0xee, 0x48, 0x63, - 0x94, 0x62, 0x44, 0x56, 0xfa, 0x8c, 0xd4, 0x46, 0xc6, 0xd4, - 0x8c, 0x79, 0x11, 0xff, 00, 0xdf, 0x35, 0xe7, 0x62, 0x70, - 0x53, 0xad, 0x3e, 0x7e, 0x63, 0xc9, 0xc5, 0xe5, 0xd3, 0xaf, - 0x53, 0x9d, 0x48, 0xa1, 0xe1, 0xf8, 0x7c, 0xbb, 0x23, 0x21, - 0x1c, 0xb9, 0xad, 0x7a, 0x6a, 0x22, 0xc6, 0x81, 0x50, 00, - 0xa3, 0xa0, 0x14, 0xea, 0xed, 0xa3, 0x4f, 0xd9, 0xc1, 0x43, - 0xb1, 0xe8, 0xd0, 0xa5, 0xec, 0xa9, 0xa8, 0x76, 0x38, 0xfd, - 0x63, 0xfe, 0x42, 0x52, 0x55, 0x25, 0x3f, 0x3a, 0xfd, 0x6b, - 0xb0, 0x9f, 0x4b, 0xb5, 0xb9, 0x94, 0xc9, 0x22, 0x65, 0x8f, - 0x53, 0x9a, 0x8b, 0xfb, 0xe, 0xcb, 0x39, 0xd8, 0x7f, 0x3a, - 0xf2, 0xaa, 0xe0, 0x2a, 0xca, 0x6e, 0x4a, 0xdb, 0x9e, 0x2d, - 0x6c, 0xae, 0xb4, 0xaa, 0x39, 0xa6, 0xb5, 0x65, 0xeb, 0x73, - 0x9b, 0x78, 0xcf, 0xfb, 0x22, 0xa4, 0xa4, 0x55, 0x8, 0xa1, - 0x47, 0x40, 0x30, 0x29, 0x6b, 0xd8, 0x4a, 0xca, 0xc7, 0xbd, - 0x15, 0x64, 0x91, 0xcf, 0xf8, 0x8e, 0x6e, 0x62, 0x84, 0x7f, - 0xbc, 0x6b, 0x6, 0xba, 0xab, 0xdd, 0x19, 0x2f, 0x67, 0x32, - 0xb4, 0xac, 0xe, 0x31, 0x8f, 0x4a, 0xac, 0x7c, 0x38, 0xbc, - 0x62, 0x63, 0x5e, 0x36, 0x27, 0xb, 0x5a, 0xa5, 0x57, 0x24, - 0x8f, 0x3, 0x19, 0x82, 0xc4, 0x55, 0xad, 0x29, 0xa5, 0xa1, - 0x73, 0x45, 0x87, 0xca, 0xd3, 0xd0, 0xf7, 0x6e, 0x6b, 0x46, - 0x99, 0x14, 0x62, 0x28, 0x96, 0x35, 0xe8, 0xa3, 0x14, 0xfa, - 0xf5, 0xe9, 0x43, 0x92, 0xa, 0x3d, 0x8f, 0x72, 0x8d, 0x3f, - 0x67, 0x4d, 0x43, 0xb0, 0x8c, 0x37, 0x29, 0x53, 0xdc, 0x57, - 0x19, 0xa8, 0x5b, 0x1b, 0x5b, 0xc7, 0x42, 0x8, 0x5c, 0xe4, - 0x7d, 0x2b, 0xb4, 0xaa, 0xb7, 0xb6, 0x11, 0x5e, 0xc7, 0xb5, - 0xc6, 0x18, 0x74, 0x61, 0xd6, 0xb9, 0xf1, 0x98, 0x7f, 0x6d, - 0xd, 0x37, 0x47, 0x2e, 0x3f, 0x9, 0xf5, 0x88, 0x7b, 0xbb, - 0xa3, 0x8b, 0xab, 0xf6, 0xda, 0xc5, 0xd5, 0xb4, 0x7e, 0x5a, - 0x90, 0xcb, 0xdb, 0x35, 0x2c, 0xfa, 0x15, 0xd4, 0x6c, 0x76, - 00, 0xeb, 0xdb, 0x15, 0x50, 0xe9, 0xf7, 0x60, 0xe0, 0xc0, - 0xff, 00, 0x95, 0x78, 0xca, 0x15, 0xe9, 0x3d, 0x13, 0x4c, - 0xf9, 0xf5, 0x4f, 0x13, 0x42, 0x5a, 0x26, 0x98, 0xfb, 0x9d, - 0x52, 0xea, 0xe9, 0x76, 0xbb, 0xe1, 0x7d, 0x7, 0x15, 0x4e, - 0xaf, 0x47, 0xa3, 0xde, 0xca, 0x7f, 0xd5, 0x15, 0xf7, 0x6e, - 0x2b, 0x5a, 0xcf, 0x41, 0x8e, 0x32, 0x1e, 0xe0, 0xef, 0x6f, - 0xee, 0xf6, 0xab, 0x8e, 0x1e, 0xbd, 0x79, 0x5d, 0xfd, 0xec, - 0xd2, 0x38, 0x5c, 0x4e, 0x22, 0x57, 0x92, 0x7e, 0xac, 0xa5, - 0xa4, 0x69, 0x6d, 0x71, 0x20, 0x9e, 0x55, 0xc4, 0x43, 0xa0, - 0x3d, 0xeb, 0xa6, 0x3f, 0x2a, 0x93, 0xe8, 0x28, 00, 0x28, - 00, 00, 00, 0xe8, 0x5, 0x57, 0xbe, 0xf3, 0x4d, 0x9c, - 0x82, 0x10, 0x4b, 0x91, 0x80, 0x5, 0x7b, 0x14, 0xa8, 0xc7, - 0xf, 0x4d, 0xdb, 0x53, 0xdf, 0xa1, 0x87, 0x8e, 0x16, 0x93, - 0x51, 0xd5, 0xfe, 0x67, 0x3c, 0xda, 0xcd, 0xcc, 0x77, 0xb2, - 0x3a, 0x3e, 0xe8, 0xf7, 0x70, 0xa7, 0xa6, 0x2a, 0xec, 0x5e, - 0x23, 0x43, 0xfe, 0xb6, 0x22, 0x3e, 0x95, 0x85, 0x24, 0x13, - 0x46, 0xc4, 0x3c, 0x6c, 0xf, 0xd2, 0xa3, 0xfc, 0xd, 0x78, - 0xcb, 0x17, 0x5e, 0xd, 0xea, 0x7c, 0xfc, 0x71, 0xd8, 0x8a, - 0x6d, 0xeb, 0xf7, 0x9d, 0x1c, 0x9e, 0x22, 0x8b, 0x69, 0xf2, - 0xe3, 0x62, 0x7d, 0xeb, 0xa, 0xe6, 0xe5, 0xee, 0xa7, 0x69, - 0x64, 0x3c, 0x9f, 0xd2, 0xa1, 00, 0x9e, 0x82, 0xad, 0x5b, - 0x69, 0xf7, 0x37, 0x4d, 0x88, 0xe3, 0x38, 0xf5, 0x34, 0xa7, - 0x5e, 0xb6, 0x23, 0xdd, 0x7a, 0x93, 0x53, 0x11, 0x5f, 0x15, - 0x68, 0xbd, 0x7c, 0x91, 0x54, 0x23, 0x48, 0xc2, 0x35, 0xce, - 0x58, 0xe3, 0x8a, 0xd7, 0x96, 0x31, 0x69, 0x64, 0x23, 0xee, - 0x7, 0x35, 0xa3, 0x6b, 0xa5, 0x47, 0x65, 0x1f, 0x98, 0xc7, - 0x74, 0xb8, 0xeb, 0x59, 0x5a, 0xb4, 0xb8, 0x53, 0x5e, 0xa6, - 0xb, 0xa, 0xe9, 0x2e, 0x69, 0x6e, 0xcf, 0x6b, 0x2e, 0xc1, - 0x3a, 0x9, 0xce, 0x7b, 0xb3, 0xcf, 0x3c, 0x69, 0x78, 0x22, - 0xd3, 0xe4, 0xe7, 0x9f, 0x4f, 0x5a, 0xf1, 0x1b, 0xbd, 0xd7, - 0x17, 0x4b, 0x1a, 0x8c, 0xb3, 0xb0, 00, 0x7e, 0x35, 0xe9, - 0xbf, 0x10, 0x2f, 0x6, 0xd1, 0x1e, 0xef, 0xc2, 0xb8, 0x5f, - 0xb, 0x59, 0x7f, 0x6a, 0x78, 0xc2, 0xc2, 0xdf, 0xa8, 0xf3, - 0x43, 0x1f, 0xa0, 0xad, 0x25, 0xef, 0x55, 0xf4, 0x35, 0x9f, - 0xbf, 0x5f, 0xd0, 0xfa, 0x37, 0xc3, 0x36, 0x22, 0xc3, 0x40, - 0xb1, 0xb6, 0xb, 0xb7, 0x64, 0x43, 0x23, 0xdf, 0x15, 0xd8, - 0xe9, 0xe3, 0x16, 0xc7, 0xfd, 0xef, 0xf0, 0xac, 0x4b, 0x64, - 0xa, 0x15, 0x40, 0xe0, 0x71, 0x5b, 0xb6, 0x43, 0x10, 0x1f, - 0xf7, 0xab, 0xac, 0xee, 0x2c, 0xd1, 0x45, 0x14, 0x1, 0xe6, - 0xb0, 0x7f, 0xc8, 0x6b, 0x5f, 0xff, 00, 0xb0, 0x93, 0xff, - 00, 0xe8, 0x9, 0x5d, 0xa6, 0x8f, 0xff, 00, 0x20, 0xa8, - 0x7f, 0xe0, 0x5f, 0xfa, 0x11, 0xae, 0x2e, 0xf, 0xf9, 0xd, - 0x6b, 0xff, 00, 0xf6, 0x12, 0x7f, 0xfd, 0x1, 0x2b, 0xb4, - 0xd1, 0xff, 00, 0xe4, 0x15, 0xf, 0xfc, 0xb, 0xff, 00, - 0x42, 0x34, 0x1, 0x57, 0xc1, 0x1f, 0xf2, 0x28, 0x58, 0xff, - 00, 0xdb, 0x4f, 0xfd, 0x18, 0xd5, 0xd0, 0x57, 0x3f, 0xe0, - 0x8f, 0xf9, 0x14, 0x2c, 0x7f, 0xed, 0xa7, 0xfe, 0x8c, 0x6a, - 0xe8, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, - 00, 0xa2, 0x8a, 0x28, 0x3, 0x17, 0xc5, 0x7e, 0x19, 0xb3, - 0xf1, 0x77, 0x87, 0xae, 0x74, 0x7b, 0xd6, 0x74, 0x49, 0x70, - 0xc9, 0x2c, 0x67, 0xd, 0x13, 0x83, 0x95, 0x61, 0xf4, 0x35, - 0xc9, 0xdb, 0x6a, 0x9f, 0x13, 0x74, 0x8, 0x17, 0x4e, 0xb9, - 0xf0, 0xb5, 0x9f, 0x89, 0xc, 0x40, 0x8, 0xf5, 0x1b, 0x6d, - 0x49, 0x2d, 0x7c, 0xc5, 0x3, 0x3, 0x7a, 0x48, 0x33, 0xbf, - 0x8c, 0x92, 0x38, 0xe7, 0x8f, 0x5a, 0xf4, 0x6a, 0x29, 0x5a, - 0xc0, 0x70, 0x9e, 0x1b, 0xf0, 0x96, 0xb3, 0x73, 0xe2, 0x7f, - 0xf8, 0x4b, 0xbc, 0x61, 0x3d, 0xac, 0x9a, 0xa2, 0x43, 0xe4, - 0xd9, 0x59, 0x5a, 0x2, 0x61, 0xb2, 0x43, 0xf7, 0xbe, 0x63, - 0xcb, 0x39, 0xc9, 0x4, 0xfd, 0x70, 0x48, 0x23, 0x12, 0x69, - 0x7e, 0x1f, 0xd4, 0xed, 0xbe, 0x2f, 0xeb, 0x9a, 0xec, 0xb6, - 0xdb, 0x74, 0xdb, 0xad, 0x3e, 0x28, 0x61, 0x9f, 0xcc, 0x53, - 0xb9, 0xd7, 0x6e, 0x46, 0xdc, 0xee, 0x1d, 0xf, 0x51, 0x5d, - 0xbd, 0x14, 0xfa, 0xa6, 0xba, 0x7e, 0xbf, 0xf0, 0xe2, 0x6a, - 0xe9, 0xdf, 0xaf, 0xe9, 0x6f, 0xf2, 0x38, 0x8f, 0x3, 0xf8, - 0x7f, 0x53, 0xd1, 0xfc, 0x4f, 0xe3, 0x1b, 0xcb, 0xfb, 0x6f, - 0x26, 0xd, 0x47, 0x50, 0x13, 0x5a, 0xbf, 0x98, 0xad, 0xe6, - 0x26, 0xf, 0x38, 0x4, 0x91, 0xd7, 0xbe, 0x2b, 0x33, 0xc3, - 0x7e, 0x7, 0xbd, 0x93, 0x4a, 0xf1, 0xce, 0x97, 0xad, 0x5b, - 0x9b, 0x68, 0x35, 0xad, 0x46, 0x79, 0x20, 0x70, 0xea, 0xe4, - 0xc6, 0xe3, 0xe5, 0x70, 0x1, 0x38, 0xe7, 0x9c, 0x1c, 0x1e, - 0x2b, 0xd2, 0xa8, 0xa5, 0x65, 0x6b, 0x79, 0x5b, 0xe5, 0xa7, - 0xf9, 0x14, 0x9d, 0xbe, 0xfb, 0xfe, 0x7f, 0xe6, 0x79, 0x2f, - 0xd9, 0x7e, 0x26, 0xaf, 0x85, 0x8f, 0x82, 0xc6, 0x8b, 0x62, - 0xc3, 0xc8, 0xfb, 0x10, 0xf1, 0x1, 0xbf, 0x5f, 0x2f, 0xc9, - 0xdb, 0x8d, 0xde, 0x56, 0x37, 0xee, 0xdb, 0xf2, 0xe7, 0xd7, - 0x9c, 0x62, 0xb4, 0x2e, 0xfc, 0xb, 0x79, 0xa7, 0xf8, 0x87, - 0xe1, 0xf4, 0x7a, 0x4d, 0xb1, 0x9b, 0x4c, 0xd0, 0x96, 0x64, - 0xb9, 0x98, 0xc8, 0xaa, 0x57, 0x72, 00, 0x18, 0x82, 0x72, - 0x49, 0x39, 0x3c, 0x3, 0x5e, 0x95, 0x45, 0x55, 0xdd, 0xef, - 0xd6, 0xf7, 0x15, 0xb4, 0xb7, 0x4b, 0x35, 0xf7, 0x9e, 0x5d, - 0x16, 0x9b, 0xe3, 0x2f, 0x5, 0x78, 0xbb, 0x5f, 0xbc, 0xd1, - 0x7c, 0x3b, 0x7, 0x88, 0x34, 0xed, 0x66, 0x71, 0x74, 0x8, - 0xbf, 0x4b, 0x69, 0x20, 0x7e, 0xea, 0xc5, 0xfa, 0x8e, 0x4e, - 0x31, 0xfa, 0x74, 0xa6, 0xf8, 0x7b, 0xc3, 0x1e, 0x32, 0x83, - 0xe2, 0xd7, 0xfc, 0x25, 0x1a, 0xec, 0x56, 0x92, 0x43, 0x79, - 0xa7, 0xb4, 0x32, 0x7d, 0x92, 0x41, 0xb2, 0xd0, 0xe4, 0x6c, - 0x8c, 0x6e, 0x3b, 0x9b, 0x85, 0x4, 0x90, 0x31, 0x96, 0x3d, - 0xab, 0xd4, 0xe8, 0xa5, 0x1f, 0x76, 0xde, 0x5a, 0x7e, 0x16, - 0x7, 0xad, 0xfc, 0xff, 00, 0xe1, 0xce, 0x1f, 0xe1, 0xe7, - 0x87, 0xf5, 0x4d, 0xa, 0xef, 0xc5, 0x4f, 0xa9, 0x5a, 0xf9, - 0xb, 0x7d, 0xac, 0x4b, 0x73, 0x6c, 0x7c, 0xc5, 0x6d, 0xf1, - 0xb7, 0x46, 0xf9, 0x49, 0xc7, 0xd0, 0xe0, 0xd7, 0x71, 0x45, - 0x14, 0x74, 0x48, 0x1e, 0xad, 0xb3, 0xc8, 0xfe, 0x2c, 0x43, - 0xaa, 0x4f, 0xe3, 0xef, 0x2, 0x26, 0x8b, 0x34, 0x31, 0x6a, - 0x42, 0x5b, 0x86, 0x81, 0xa7, 0xcf, 0x96, 0x58, 0x2a, 0x9c, - 0x36, 0x39, 0xc1, 00, 0x83, 0x8f, 0x5a, 0xb9, 0x7d, 0xa6, - 0xf8, 0xcf, 0xe2, 0x5, 0xd5, 0x86, 0x9f, 0xe2, 0xd, 0x6, - 0xdf, 0x40, 0xd0, 0xed, 0xae, 0x12, 0xe6, 0xed, 0x7e, 0xdc, - 0xb7, 0x32, 0x5e, 0x15, 0x39, 0x8, 0xbb, 0x3e, 0xea, 0xe7, - 0xae, 0x79, 0xe9, 0x83, 0xc6, 0x2b, 0xb4, 0xd5, 0xbc, 0x2b, - 0x63, 0xac, 0x78, 0x87, 0x46, 0xd6, 0xae, 0x25, 0xb8, 0x5b, - 0x9d, 0x25, 0xa4, 0x68, 0x16, 0x36, 0x50, 0x8c, 0x5c, 00, - 0x77, 0x2, 0x9, 0x3d, 0x3b, 0x11, 0x5b, 0x94, 0x47, 0x44, - 0xbd, 0x6e, 0x13, 0xd7, 0xee, 0xb7, 0xe6, 0x70, 0x1e, 0x26, - 0xf0, 0xee, 0xbf, 0xa6, 0x78, 0xca, 0x3f, 0x19, 0x78, 0x56, - 0xde, 0xde, 0xfa, 0xe1, 0xad, 0x85, 0xa5, 0xf6, 0x99, 0x2c, - 0xa2, 0x2f, 0xb4, 0x46, 0x18, 0x10, 0xc8, 0xe7, 0x80, 0xc3, - 0xdf, 0xb0, 0xef, 0xd2, 0xab, 0x5a, 0x68, 0x9e, 0x29, 0xf1, - 0x87, 0x8b, 0xb4, 0xbd, 0x73, 0xc5, 0x1a, 0x6d, 0xbe, 0x8b, - 0xa7, 0xe8, 0xee, 0xd2, 0x5a, 0xe9, 0xab, 0x72, 0xb7, 0x12, - 0x4b, 0x31, 0x3, 0xf7, 0x8e, 0xeb, 0xf2, 0xe0, 0x76, 0xef, - 0x90, 0x78, 0xe7, 0x35, 0xe9, 0x14, 0x50, 0xb4, 0xf9, 0x3, - 0xd4, 0xe1, 0xfc, 0x3d, 0xe1, 0xfd, 0x52, 0xc7, 0xe2, 0x97, - 0x8b, 0x35, 0x9b, 0x9b, 0x5d, 0x9a, 0x7d, 0xfc, 0x76, 0xcb, - 0x6d, 0x37, 0x98, 0xa7, 0xcc, 0x28, 0xb8, 0x6e, 0x1, 0xc8, - 0xc1, 0xf5, 0x2, 0xaa, 0x78, 0xf3, 0x45, 0xf1, 0x7, 0xfc, - 0x26, 0x3e, 0x1a, 0xf1, 0x46, 0x81, 0xa5, 0x26, 0xac, 0xfa, - 0x60, 0x9e, 0x39, 0x6c, 0xcd, 0xd2, 0x40, 0x58, 0x48, 0xb8, - 0xc, 0x19, 0xb8, 0xc0, 0xe7, 0xd4, 0xf4, 0xe3, 0xae, 0x3d, - 0xe, 0x8a, 0x16, 0x89, 0x5b, 0xa7, 0xf5, 0xfa, 0x8d, 0xbb, - 0xde, 0xfd, 0x4f, 0x39, 0x9d, 0x3c, 0x7f, 0xe1, 0xdf, 0x10, - 0xde, 0x6a, 0x1a, 0x6e, 0x9d, 0xff, 00, 0x9, 0xe, 0x97, - 0xa9, 0x5, 0x97, 0xfb, 0x3e, 0x6d, 0x45, 0x62, 0x92, 0xc2, - 0x5c, 0x7c, 0xca, 0xae, 0xff, 00, 0x29, 0x4e, 0xbc, 0xf, - 0xd3, 0x1f, 0x35, 0x9f, 0x6, 0x78, 0x6f, 0x58, 0x1e, 0x2d, - 0xd5, 0xfc, 0x61, 0xaf, 0x59, 0xdb, 0x69, 0xb7, 0x9a, 0x8c, - 0x49, 0x4, 0x7a, 0x7d, 0xbc, 0xa2, 0x4f, 0x29, 0x17, 0xbc, - 0x8e, 0x6, 0x19, 0xce, 0xd1, 0xc8, 0xed, 0xf9, 0xe, 0xf6, - 0x8a, 0x16, 0x82, 0x7a, 0xee, 0x67, 0xeb, 0xb6, 0xd3, 0x5e, - 0xf8, 0x7b, 0x52, 0xb5, 0xb7, 0x4d, 0xf3, 0x4d, 0x6b, 0x2c, - 0x71, 0xae, 0x40, 0xcb, 0x15, 0x20, 0xc, 0x9e, 0x3a, 0xd7, - 0xb, 0x67, 0xf0, 0xfe, 0xef, 0x54, 0xf8, 0x2d, 0x61, 0xe1, - 0x5d, 0x4b, 0xfd, 0x3, 0x53, 0x86, 0x20, 0xc8, 0xfb, 0x83, - 0xf9, 0x33, 0x2b, 0x96, 0x53, 0x95, 0x24, 0x7b, 0x70, 0x7a, - 0x1a, 0xf4, 0xaa, 0x29, 0x5b, 0x7f, 0x3b, 0x7e, 0x17, 0xff, - 00, 0x30, 0xea, 0x9f, 0x6b, 0xfe, 0x36, 0xff, 00, 0x23, - 0xcb, 0xee, 0xee, 0x7e, 0x29, 0x6b, 0x1a, 0x3c, 0x9e, 0x1d, - 0x97, 0xc3, 0x9a, 0x7d, 0x94, 0xd3, 0xa3, 0x5b, 0xcf, 0xae, - 0x7f, 0x68, 0x2b, 0x45, 0xb3, 0x4, 0x17, 0x48, 0x87, 0xce, - 0x9, 0x1d, 0x33, 0xd0, 0x9e, 0x40, 0xed, 0x27, 0x8a, 0x3c, - 0x7, 0x79, 0x17, 0x84, 0x7c, 0x23, 0xa1, 0xe8, 0x56, 0xe6, - 0xe9, 0x34, 0x9d, 0x4a, 0xda, 0x59, 0x98, 0xb2, 0x46, 0x76, - 0x26, 0x77, 0xb9, 0xc9, 0x1d, 0x49, 0xce, 0x6, 0x4f, 0x35, - 0xe9, 0x94, 0x53, 0xf3, 0xf4, 0x7f, 0x70, 0x7f, 0x93, 0x5f, - 0x78, 0x51, 0x45, 0x14, 0x1, 0xc5, 0x47, 0xa0, 0xea, 0x6b, - 0xf1, 0x9e, 0x5f, 0x10, 0x1b, 0x6f, 0xf8, 0x95, 0xb6, 0x88, - 0x2d, 0x44, 0xfe, 0x62, 0xff, 00, 0xad, 0xf3, 0x43, 0x6d, - 0xdb, 0x9d, 0xdd, 0x3b, 0xe3, 0x14, 0xcf, 0x1b, 0x78, 0x67, - 0x58, 0xb8, 0xd6, 0xf4, 0xaf, 0x15, 0xf8, 0x6b, 0xc8, 0x93, - 0x57, 0xd2, 0xd5, 0xe3, 0x36, 0x97, 0x7, 0x6a, 0x5d, 0x44, - 0xc3, 0x94, 0xdd, 0xfc, 0x2d, 0xd7, 0x4, 0xf1, 0xcf, 0x27, - 0x8a, 0xee, 0x28, 0xa3, 0xa2, 0xf2, 0xff, 00, 0x83, 0xfe, - 0x61, 0xdf, 0xcc, 0xf2, 0xfd, 0x47, 0x4b, 0xf1, 0x97, 0xc4, - 0x3b, 0x9b, 0x1b, 0x1d, 0x7f, 0x41, 0x83, 0xc3, 0xda, 0x1d, - 0xad, 0xc2, 0x5c, 0xdc, 0xa1, 0xbe, 0x4b, 0x99, 0xae, 0x8a, - 0xe4, 0xaa, 0x29, 0x41, 0x85, 0x1e, 0xb9, 0xf5, 0x18, 0xce, - 0x31, 0x5e, 0xa1, 0x45, 0x14, 0x74, 0xb0, 0xad, 0xad, 0xcf, - 0x2e, 0x8b, 0x4d, 0xf1, 0x97, 0x82, 0xbc, 0x5d, 0xaf, 0xde, - 0x68, 0xbe, 0x1d, 0x83, 0xc4, 0x1a, 0x76, 0xb3, 0x38, 0xba, - 0x4, 0x5f, 0xa5, 0xb4, 0x90, 0x3f, 0x75, 0x62, 0xfd, 0x47, - 0x27, 0x18, 0xfd, 0x3a, 0x53, 0x7c, 0x3d, 0xe1, 0x8f, 0x19, - 0x41, 0xf1, 0x6b, 0xfe, 0x12, 0x8d, 0x76, 0x2b, 0x49, 0x21, - 0xbc, 0xd3, 0xda, 0x19, 0x3e, 0xc9, 0x20, 0xd9, 0x68, 0x72, - 0x36, 0x46, 0x37, 0x1d, 0xcd, 0xc2, 0x82, 0x48, 0x18, 0xcb, - 0x1e, 0xd5, 0xea, 0x74, 0x51, 0x1f, 0x76, 0xde, 0x5a, 0x7e, - 0x16, 0x1b, 0xd6, 0xfe, 0x7f, 0xf0, 0xe7, 0xf, 0xf0, 0xf3, - 0xc3, 0xfa, 0xa6, 0x85, 0x77, 0xe2, 0xa7, 0xd4, 0xad, 0x7c, - 0x85, 0xbe, 0xd6, 0x25, 0xb9, 0xb6, 0x3e, 0x62, 0xb6, 0xf8, - 0xdb, 0xa3, 0x7c, 0xa4, 0xe3, 0xe8, 0x70, 0x6b, 0x22, 0xd7, - 0x4b, 0xf1, 0x97, 0x80, 0x35, 0x2d, 0x56, 0xf, 0xf, 0x68, - 0x50, 0xf8, 0x83, 0x47, 0xd4, 0x2e, 0x5e, 0xee, 0x8, 0xfe, - 0xdc, 0x96, 0xd2, 0x5a, 0x3b, 0x63, 0x72, 0xb6, 0xfe, 0x19, - 0x4f, 0x6c, 0x7a, 0x1c, 0xe3, 0x35, 0xe9, 0xf4, 0x52, 0xb6, - 0xde, 0x96, 0xfe, 0xbe, 0xe1, 0xb7, 0x7b, 0xfa, 0xdc, 0xf3, - 0x8d, 0x37, 0xc1, 0x1a, 0xad, 0x87, 0xc3, 0xff, 00, 0x14, - 0x45, 0x76, 0xd1, 0x5d, 0xf8, 0x8f, 0x5e, 0x5b, 0x89, 0xae, - 0x4, 0x2d, 0x88, 0xfc, 0xc7, 0x52, 0x16, 0x35, 0x2d, 0x8c, - 0x1, 0x9e, 0xfe, 0xa7, 0xb5, 0x74, 0x7e, 0x10, 0xd2, 0xaf, - 0x74, 0xbf, 0x87, 0x9a, 0x5e, 0x97, 0x79, 0xf, 0x95, 0x7b, - 0x5, 0x8a, 0xc3, 0x24, 0x5b, 0x83, 0x6d, 0x70, 0xb8, 0xc6, - 0x41, 0x20, 0xfe, 0x75, 0xd2, 0x51, 0x43, 0x57, 0x4d, 0x77, - 0xb7, 0xe0, 0x9, 0xda, 0xcf, 0xb5, 0xff, 00, 0x13, 0xc6, - 0xe3, 0xf0, 0x37, 0x88, 0xd7, 0xf6, 0x7a, 0x7f, 0xb, 0x9d, - 0x3b, 0xfe, 0x27, 0x45, 0xc9, 0x16, 0xde, 0x7c, 0x7d, 0x3c, - 0xfd, 0xff, 00, 0x7b, 0x76, 0xdf, 0xbb, 0xcf, 0x5a, 0xe8, - 0xbe, 0x20, 0x78, 0x6f, 0x5a, 0xd4, 0xf4, 0x4f, 0xd, 0xdc, - 0xe8, 0xf6, 0x69, 0x77, 0x7f, 0xa3, 0x5f, 0x41, 0x76, 0xd6, - 0x8d, 0x32, 0xc7, 0xe6, 0x85, 0x1c, 0xa8, 0x63, 0xc0, 0x39, - 0xc7, 0x7e, 0x99, 0xeb, 0xd2, 0xbd, 0xa, 0x8a, 0xa6, 0xdd, - 0xdb, 0xf3, 0x4f, 0xee, 0x12, 0xda, 0xde, 0xbf, 0x89, 0xe6, - 0x5a, 0x8e, 0x89, 0xe2, 0xcb, 0x6f, 0x10, 0xda, 0x78, 0xef, - 0x45, 0xd2, 0xa0, 0xfe, 0xd3, 0xb8, 0xb4, 0x5b, 0x6d, 0x53, - 0x43, 0x9a, 0xed, 0x7e, 0x70, 0x18, 0x63, 0x64, 0xa3, 0xe5, - 0xdc, 0x31, 0xd4, 0xf1, 0xc7, 0x7e, 0x95, 0xab, 0xa5, 0x5c, - 0x78, 0xff, 00, 0x5c, 0xd7, 0x6d, 0x6e, 0x35, 0x1b, 0xb, - 0x6f, 0xd, 0x69, 0x16, 0xd9, 0x33, 0x5a, 0x9, 0xe3, 0xbb, - 0x9e, 0xed, 0xbb, 0xd, 0xe0, 0x6d, 0x44, 0xfa, 0x61, 0xb8, - 0x3e, 0xbc, 0x77, 0x14, 0x52, 0x5a, 0x3, 0x3c, 0xe2, 0xfb, - 0x46, 0xf1, 0x47, 0x84, 0xfc, 0x67, 0xa9, 0xeb, 0xfe, 0x19, - 0xd2, 0xe1, 0xd6, 0xec, 0x75, 0x80, 0x86, 0xeb, 0x4f, 0x6b, - 0xb5, 0xb7, 0x78, 0xa6, 0x50, 0x40, 0x91, 0x59, 0xbe, 0x5d, - 0xa4, 0x75, 0x1d, 0x72, 0x7d, 0xaa, 0xdf, 0x84, 0xfc, 0x2b, - 0xab, 0x1b, 0xed, 0x7b, 0xc4, 0x7e, 0x23, 0x58, 0x60, 0xd5, - 0xf5, 0x94, 0x10, 0xad, 0xb4, 0x2f, 0xbd, 0x6d, 0x20, 0xb, - 0x85, 0x4d, 0xdd, 0xb, 0x7a, 0x91, 0x91, 0xc7, 0x1d, 0x6b, - 0xbc, 0xa2, 0x95, 0xb4, 0xb7, 0xcb, 0xe5, 0xfd, 0x7e, 0x1a, - 0xe, 0xfa, 0xdc, 0xf3, 0xf, 0x1, 0xf8, 0x6f, 0xc4, 0x36, - 0xde, 0x4, 0xbe, 0xf0, 0x46, 0xbd, 0xa3, 0xad, 0x9d, 0xaa, - 0x5b, 0xcf, 0x4, 0x3a, 0x8c, 0x77, 0x69, 0x20, 0x9f, 0xcc, - 0x67, 0xe4, 0x20, 0xe5, 0x71, 0xbb, 0x3c, 0xf5, 0xf4, 0x15, - 0x5b, 0x42, 0xb5, 0xf8, 0x93, 0xa7, 0x78, 0x61, 0x3c, 0x1e, - 0x74, 0x3b, 0x8, 0x56, 0x8, 0x9a, 0xda, 0x3d, 0x77, 0xed, - 0xaa, 0xc8, 0x22, 0xe8, 0x19, 0x61, 0x1f, 0x39, 0x6d, 0xbc, - 0xc, 0xed, 0x19, 0xc6, 0x71, 0xcd, 0x7a, 0xc5, 0x14, 0xe5, - 0xef, 0x5e, 0xfd, 0x77, 0x12, 0xd3, 0x6e, 0x87, 0x89, 0xda, - 0xf8, 0xb, 0xc4, 0xd1, 0xfc, 0x31, 0xf0, 0x8e, 0x8e, 0xfa, - 0x6e, 0x2f, 0xf4, 0xfd, 0x69, 0x6e, 0xae, 0x62, 0xf3, 0xe3, - 0xfd, 0xdc, 0x42, 0x47, 0x25, 0xb3, 0xbb, 0x7, 0x82, 0x38, - 0x4, 0x9a, 0xf4, 0x8f, 0x1d, 0xf8, 0x50, 0x78, 0xcb, 0xc2, - 0x97, 0x1a, 0x48, 0xb8, 0x36, 0xf7, 0x1b, 0x96, 0x5b, 0x79, - 0xbf, 0xb9, 0x2a, 0x9c, 0xa9, 0x3e, 0xdd, 0x8f, 0xd6, 0xba, - 0x4a, 0x29, 0xc9, 0xf3, 0x5f, 0xd6, 0xff, 00, 0x97, 0xf9, - 0x2, 0xd3, 0xfa, 0xf5, 0xff, 00, 0x33, 0xcd, 0xd7, 0x58, - 0xf8, 0xab, 0x25, 0x8f, 0xf6, 0x58, 0xf0, 0xa6, 0x9d, 0xd, - 0xf6, 0x3c, 0xaf, 0xed, 0x96, 0xd4, 0x50, 0xdb, 0x82, 0xf, - 0xfa, 0xcf, 0x24, 0x2, 0xfc, 0x8e, 0x83, 0xd4, 0xf2, 0x3b, - 0x56, 0x97, 0x88, 0xf4, 0x1f, 0x17, 0x49, 0xe1, 0xed, 0x26, - 0x5d, 0x23, 0x5f, 0x69, 0x75, 0xed, 0x31, 0xc4, 0xb2, 0x19, - 0x7f, 0x73, 0xd, 0xff, 00, 0x1f, 0x32, 0x3a, 0x26, 00, - 0x7, 0xb7, 0xa7, 0xa8, 0xce, 0xe1, 0xdb, 0x51, 0x49, 0x82, - 0xd0, 0xf2, 0xad, 0x6b, 0x4c, 0xf1, 0x97, 0xc4, 0x53, 0xa7, - 0xe9, 0x9a, 0xcf, 0x85, 0xad, 0xbc, 0x3f, 0xa7, 0xdb, 0xdd, - 0x25, 0xd4, 0xd7, 0x52, 0x6a, 0x11, 0xdc, 0xc8, 0xc1, 0x7f, - 0x86, 0x20, 0x83, 0xe5, 0x63, 0x93, 0xc9, 0xe3, 0x1f, 0x91, - 0xf5, 0x5a, 0x28, 0xa3, 0xa5, 0x85, 0x6d, 0x6e, 0x14, 0x51, - 0x45, 0x3, 0xa, 0x28, 0xa2, 0x80, 0xa, 0x46, 0xe9, 0x4b, - 0x4d, 0x6e, 0xff, 00, 0x4a, 00, 0xc1, 0xf1, 0x2d, 0xef, - 0xd8, 0xb4, 0x3b, 0x99, 0x3, 0x6d, 0x76, 0x5d, 0x88, 0x7f, - 0xda, 0x3d, 0x2a, 0x7f, 0xf, 0xd9, 0x3d, 0x9f, 0x87, 0xa1, - 0x84, 0x12, 0x25, 0x31, 0xe4, 0x93, 0xd7, 0x71, 0xac, 0x4f, - 0x16, 0x4e, 0x27, 0xd4, 0x34, 0xdd, 0x2c, 0x60, 0x89, 0x24, - 0xf3, 0x24, 0x7, 0xb0, 0x1d, 0x2b, 0xaa, 0xb6, 0xb8, 0x8d, - 0xa2, 00, 0x10, 0x31, 0x81, 0x8a, 0xca, 0x3e, 0xf5, 0x46, - 0xfb, 0x68, 0x61, 0x1f, 0x7a, 0xab, 0x7d, 0xb4, 0xfd, 0x4f, - 0x8d, 0xf5, 0xeb, 0x4f, 0x10, 0x78, 0x73, 0xc5, 0x5a, 0x85, - 0xca, 0xc5, 0x75, 0x6d, 0x21, 0x99, 0xc8, 0x97, 0x4, 0x64, - 0x13, 0xeb, 0x59, 0x1a, 0x7e, 0xb5, 0xac, 0x5a, 0x6a, 0x12, - 0x6a, 0x16, 0x73, 0xcc, 0x2e, 0x9f, 0xef, 0x4a, 0xbc, 0x93, - 0x5f, 0x5f, 0xf8, 0xeb, 0x42, 0x1e, 0x22, 0xf0, 0xd5, 0xd5, - 0x8c, 0x11, 0xc4, 0x6e, 0x25, 0x5d, 0xab, 0x23, 0x63, 0xe5, - 0xe9, 0xcd, 0x64, 0x78, 0xb, 0xe1, 0xce, 0x99, 0xe1, 0xdf, - 0xf, 0xb, 0x3b, 0xeb, 0x68, 0x2e, 0xae, 0x58, 0x92, 0xee, - 0xe8, 0x1a, 0xb5, 0x37, 0x3e, 0x79, 0x8f, 0xe2, 0x97, 0x8d, - 0x50, 0xaf, 0xfc, 0x4c, 0xa7, 0x62, 0x3f, 0xbc, 0xb9, 0xcd, - 0x7d, 0x29, 0xe0, 0x9d, 0x5b, 0x53, 0x6f, 0x87, 0xc9, 0xab, - 0x6b, 0x52, 0x79, 0x93, 0xf9, 0x4d, 0x31, 0x38, 0xc7, 0xcb, - 0x8c, 0xe3, 0xf4, 0xad, 0x66, 0xf0, 0x77, 0x87, 0x58, 0x60, - 0xe9, 0x16, 0xbd, 0x7f, 0xe7, 0x90, 0xff, 00, 0xa, 0xd4, - 0x92, 0xc2, 0xd6, 0x5b, 0x6, 0xb2, 0x30, 0xa8, 0xb6, 0x65, - 0x28, 0x63, 0x51, 0x81, 0xb4, 0xf6, 0xa0, 0xf, 0x98, 0x2f, - 0x3e, 0x3b, 0x78, 0xb2, 0x3d, 0x4e, 0xe4, 0xc3, 0x2c, 0x22, - 0x1d, 0xe4, 0x22, 0xf9, 0x63, 0x81, 0x9a, 0x23, 0xf8, 0xff, - 00, 0xe2, 0xc5, 0xcf, 0x98, 0x2d, 0xdf, 0xd3, 0xe4, 0xc7, - 0xf2, 0xaf, 0x74, 0x97, 0xe1, 0x5f, 0x83, 0xa5, 0xc1, 0x3a, - 0x4c, 0x43, 0xf1, 0x35, 0x52, 0x5f, 0x83, 0xbe, 0xd, 0x95, - 0xf7, 0x1d, 0x3d, 0x47, 0xb0, 0x63, 0xfe, 0x34, 0x1, 0xe4, - 0x31, 0x7e, 0xd0, 0xde, 0x21, 0x44, 0xc4, 0x96, 0x96, 0xee, - 0x7d, 0x70, 0x6a, 0xe4, 0x7f, 0xb4, 0x66, 0xa8, 0xa8, 0x3, - 0xe9, 0x90, 0xb3, 0x77, 0x39, 0x35, 0xe8, 0xcf, 0xf0, 0x3f, - 0xc1, 0xee, 0x58, 0xfd, 0x99, 0xd7, 0x3e, 0x8c, 0x78, 0xaa, - 0x6f, 0xf0, 0xf, 0xc2, 0xcc, 0xa4, 0x2b, 0x4e, 0xf, 0x63, - 0xb8, 0x50, 0x7, 0x22, 0xbf, 0xb4, 0x85, 0xc6, 0x6, 0xed, - 0x1e, 0x2f, 0x7c, 0x31, 0xab, 0x9, 0xfb, 0x47, 0xa1, 0x71, - 0xbf, 0x48, 0xc2, 0xf7, 0xc3, 0x56, 0xdc, 0xbf, 0xb3, 0xdf, - 0x87, 0x9d, 0x30, 0x97, 0x33, 0xab, 0x7a, 0xe6, 0xa9, 0xcd, - 0xfb, 0x3a, 0xe9, 0x6d, 0x81, 0x16, 0xa1, 0x2a, 0x7d, 0x46, - 0x68, 0x1, 0x22, 0xfd, 0xa3, 0x34, 0xc6, 0x7f, 0xde, 0x69, - 0x92, 0xaa, 0xfb, 0x1c, 0xd5, 0xb8, 0x7f, 0x68, 0x7d, 0x1, - 0xb3, 0xe6, 0x59, 0xdc, 0x2d, 0x64, 0xcd, 0xfb, 0x38, 0xc1, - 0xb8, 0x79, 0x5a, 0xab, 0x6d, 0xc7, 0x3b, 0x96, 0xaa, 0x3f, - 0xec, 0xe5, 0x36, 0xe3, 0xb3, 0x54, 0x18, 0xed, 0x91, 0x40, - 0x1d, 0x5c, 0x5f, 0xb4, 0x7, 0x86, 0x1d, 0x72, 0xd1, 0x4e, - 0x87, 0xd0, 0x8a, 0xb7, 0x17, 0xc7, 0x6f, 0x9, 0x3a, 0x65, - 0xe5, 0x91, 0x4f, 0xa6, 0x2b, 0xcf, 0x9b, 0xf6, 0x74, 0xd4, - 0xf9, 0xdb, 0xa8, 0xc6, 0x7d, 0x38, 0xaa, 0x52, 0xfe, 0xcf, - 0x5e, 0x22, 0x44, 0x25, 0x6e, 0x6d, 0xdc, 0xf6, 0x1, 0xa8, - 0x3, 0xd6, 0x63, 0xf8, 0xd3, 0xe0, 0xe9, 0x11, 0x5b, 0xed, - 0xd8, 0x27, 0xb1, 0x15, 0x75, 0x3e, 0x2d, 0x78, 0x39, 0xc8, - 0x1f, 0xda, 0xa8, 0x9, 0xf5, 0x15, 0xe1, 0xd2, 0x7c, 0x2, - 0xf1, 0x4a, 0x2e, 0x54, 0xc2, 0xc7, 0xd0, 0x35, 0x55, 0x9b, - 0xe0, 0x67, 0x8b, 0xa3, 0x20, 0x2d, 0xba, 0x3e, 0x7d, 0xd, - 00, 0x7d, 0xb, 0x1f, 0xc4, 0xbf, 0x9, 0x4a, 0xfb, 0x57, - 0x57, 0x83, 0x3e, 0xec, 0x5, 0x5b, 0x8b, 0xc7, 0x7e, 0x19, - 0x99, 0x8a, 0xa6, 0xb1, 0x6a, 0x4f, 0xfd, 0x74, 0x15, 0xf3, - 0x2c, 0xbf, 0x6, 0x3c, 0x67, 0x1b, 0x60, 0x69, 0xee, 0xfe, - 0xe2, 0xaa, 0x37, 0xc2, 0x9f, 0x19, 0x46, 0xc4, 0xd, 0x2e, - 0x7c, 0x8f, 0x40, 0x68, 0x3, 0xea, 0xe8, 0xfc, 0x59, 0xa0, - 0xc8, 0x9, 0x5d, 0x5a, 0xd3, 0x8f, 0x59, 0x45, 0x58, 0x4d, - 0x77, 0x49, 0x91, 0x77, 0x26, 0xa1, 0x6c, 0xc3, 0xd4, 0x38, - 0xaf, 0x90, 0x5b, 0xe1, 0xe7, 0x8c, 0x62, 0xd, 0x9d, 0x36, - 0xe8, 0x5, 0xeb, 0xd6, 0xab, 0x49, 0xe1, 0x5f, 0x16, 0x5b, - 0xc7, 0x96, 0xb2, 0xbd, 0xb, 0xed, 0x9a, 00, 0xfb, 0x39, - 0x75, 0x2b, 0x16, 0x50, 0xcb, 0x75, 0x9, 0x7, 0xa1, 0xdc, - 0x2a, 0x45, 0xba, 0xb7, 0x60, 0xa, 0xcc, 0x87, 0x3d, 0x39, - 0xaf, 0x8a, 0x1f, 0x4c, 0xf1, 0x54, 0x4a, 0xb, 0x43, 0x7e, - 0xa3, 0xb7, 0xde, 0xa5, 0xf3, 0xbc, 0x59, 0x1, 0x51, 0xbf, - 0x50, 0x18, 0xe8, 0x32, 0x68, 0x3, 0xed, 0xaf, 0x31, 0x32, - 0x6, 0xf5, 0xe7, 0xde, 0x94, 0x3a, 0x9e, 0x8c, 0x3f, 0x3a, - 0xf8, 0x9c, 0x6b, 0x9e, 0x2f, 0xb7, 0x90, 0x11, 0x77, 0xa8, - 0x2b, 0x7d, 0x5a, 0xa5, 0x8f, 0xc6, 0xfe, 0x31, 0xb6, 0x73, - 0xb7, 0x54, 0xbe, 0xd, 0xdf, 0x2c, 0xd4, 0x1, 0xf6, 0x91, - 0x54, 0x7e, 0x8, 0x6, 0xa2, 0x36, 0x76, 0xe4, 0xe4, 0xc2, - 0x9f, 0xf7, 0xc8, 0xaf, 0x8e, 0x62, 0xf8, 0x95, 0xe3, 0x58, - 0x9, 0x23, 0x56, 0xbb, 0xcf, 0xfb, 0x44, 0xf1, 0x56, 0xe2, - 0xf8, 0xbb, 0xe3, 0x58, 0x53, 0x7, 0x52, 0x91, 0xbd, 0xdd, - 0x73, 0xfc, 0xea, 0x5c, 0x53, 0xdd, 0x12, 0xe1, 0x17, 0xba, - 0x3e, 0xbc, 0x5b, 0x4b, 0x75, 0xe9, 0xa, 0x7f, 0xdf, 0x22, - 0xa6, 00, 0x1, 0x80, 0x2b, 0xe4, 0x64, 0xf8, 0xd9, 0xe3, - 0x44, 00, 0x7d, 0xb8, 0x10, 0x3f, 0xd8, 0x1f, 0xe1, 0x57, - 0x13, 0xe3, 0xdf, 0x8c, 0x15, 0x86, 0xe9, 0x20, 0x2a, 0x3b, - 0x79, 0x63, 0xfc, 0x29, 0xa8, 0xa5, 0xb0, 0xd4, 0x52, 0xd9, - 0x1f, 0x51, 0xde, 0x36, 0x23, 0xc5, 0x71, 0xfa, 0xcc, 0xd8, - 0xd, 0x58, 0xbf, 0xd, 0xfc, 0x6f, 0xaa, 0x78, 0xcf, 0x4a, - 0xba, 0xbb, 0xd4, 0x23, 0x54, 0x11, 0xb6, 0xd5, 0x2a, 0x30, - 0xd, 0x59, 0xd7, 0xae, 0x36, 0x45, 0x21, 0x27, 0xa0, 0x34, - 0xc6, 0xcf, 0x1b, 0xf1, 0xad, 0xe1, 0x97, 0x50, 0x75, 0xcf, - 0xb, 0x57, 0xbe, 0xf, 0x69, 0xeb, 0x75, 0xe2, 0x5b, 0x8b, - 0xc6, 0x19, 0x36, 0xe9, 0xc1, 0xc7, 0xad, 0x72, 0xde, 0x22, - 0xb9, 0x33, 0x5e, 0xca, 0xe7, 0xb9, 0xaf, 0x55, 0xf8, 0x35, - 0xa6, 0x88, 0x34, 0x9, 0xaf, 0x8, 0xc9, 0x9e, 0x4e, 0xf, - 0xb5, 0x72, 0x50, 0x57, 0x93, 0x91, 0xc3, 0x86, 0x5c, 0xd3, - 0x72, 0x3d, 0x52, 0xdc, 0x56, 0xd5, 0xa0, 0xc4, 0x3f, 0x8d, - 0x65, 0x5b, 0xaf, 0x4a, 0xd6, 0xb6, 0xe2, 0x2f, 0xc6, 0xba, - 0xce, 0xe2, 0x6a, 0x28, 0xa2, 0x80, 0x3c, 0xd6, 0xf, 0xf9, - 0xd, 0x6b, 0xff, 00, 0xf6, 0x12, 0x7f, 0xfd, 0x1, 0x2b, - 0xb4, 0xd1, 0xff, 00, 0xe4, 0x15, 0xf, 0xfc, 0xb, 0xff, - 00, 0x42, 0x35, 0xc5, 0xc1, 0xff, 00, 0x21, 0xad, 0x7f, - 0xfe, 0xc2, 0x4f, 0xff, 00, 0xa0, 0x25, 0x76, 0x9a, 0x3f, - 0xfc, 0x82, 0xa1, 0xff, 00, 0x81, 0x7f, 0xe8, 0x46, 0x80, - 0x2a, 0xf8, 0x23, 0xfe, 0x45, 0xb, 0x1f, 0xfb, 0x69, 0xff, - 00, 0xa3, 0x1a, 0xba, 0xa, 0xe7, 0xfc, 0x11, 0xff, 00, - 0x22, 0x85, 0x8f, 0xfd, 0xb4, 0xff, 00, 0xd1, 0x8d, 0x5d, - 0x5, 00, 0x14, 0x51, 0x54, 0xaf, 0xb5, 0x9d, 0x2f, 0x4c, - 0x9a, 0xde, 0x1d, 0x43, 0x52, 0xb3, 0xb4, 0x96, 0xe5, 0xb6, - 0xc0, 0x97, 0x13, 0xac, 0x6d, 0x29, 0xe0, 0x61, 0x41, 0x23, - 0x71, 0xe4, 0x74, 0xf5, 0x14, 0x1, 0x76, 0x8a, 0x28, 0xa0, - 0x2, 0x8a, 0x2b, 0xf, 0xc6, 0x5a, 0xff, 00, 0xfc, 0x22, - 0xfe, 0xf, 0xd5, 0x35, 0x90, 0xa1, 0x9e, 0xd6, 0x2, 0xd1, - 0xab, 0x74, 0x2e, 0x78, 0x50, 0x7f, 0xe0, 0x44, 0x52, 0x93, - 0xe5, 0x57, 0x1a, 0x57, 0x76, 0x37, 0x28, 0xaf, 0x1a, 0x87, - 0xc0, 0xde, 0x11, 0xbb, 0xd3, 0x6c, 0xe5, 0xf1, 0x7e, 0xba, - 0x83, 0xc6, 0x97, 0xd0, 0xa4, 0xff, 00, 0x6b, 0x9f, 0x54, - 0x31, 0x5c, 0x47, 0x23, 0xf2, 0x9e, 0x5a, 0x6e, 0x3, 0xa, - 0x78, 0x50, 0x17, 0xb7, 0x15, 0xb5, 0xe2, 0x2d, 0x5f, 0xc4, - 0xde, 0x9, 0xf8, 0x3d, 0xff, 00, 0x13, 0x2b, 0xc8, 0x6e, - 0x7c, 0x45, 0xf2, 0xd9, 0xc5, 0x75, 0xb, 0x16, 0xc, 0xce, - 0xd8, 0x57, 0xcb, 0x1, 0x96, 0xb, 0xea, 0x3a, 0x8e, 0xf4, - 0xda, 0x6a, 0xeb, 0xa8, 0x93, 0xbd, 0x9f, 0x43, 0xd2, 0xe8, - 0xaf, 0x25, 0xd5, 0xfe, 0x13, 0xe9, 0xda, 0x27, 0x85, 0xa7, - 0xd6, 0xf4, 0xbb, 0x9b, 0xe8, 0xbc, 0x59, 0x65, 0xb, 0x5d, - 0xff, 00, 0x6a, 0x9b, 0xb7, 0x69, 0x26, 0x94, 0x29, 0x67, - 0xe, 0x9, 0xda, 0x43, 0x72, 0xf, 0x1d, 0xf, 0x39, 0xe7, - 0x32, 0x78, 0x93, 0xc6, 0x5a, 0x86, 0xb3, 0xe0, 0x3f, 0x9, - 0xc7, 0xa5, 0x5c, 0x3d, 0x9e, 0xa1, 0xe2, 0x69, 0xa1, 0xb7, - 0x79, 0xe0, 0x6c, 0x34, 0x20, 0xff, 00, 0xad, 0x2a, 0x7b, - 0x10, 0x78, 0xcf, 0x5f, 0xc6, 0x8f, 0x25, 0xbd, 0xd2, 0xfb, - 0xf6, 0x15, 0xf4, 0xbf, 0x4b, 0x37, 0xf7, 0x1e, 0xad, 0x45, - 0x78, 0xf7, 0x8a, 0xfc, 0x7, 0xa6, 0x7c, 0x39, 0xd0, 0x3f, - 0xe1, 0x2c, 0xf0, 0x80, 0xb8, 0xb2, 0xd4, 0x74, 0xc2, 0x8d, - 0x71, 0x9b, 0x97, 0x75, 0xbc, 0x88, 0xb2, 0x87, 0x59, 0x3, - 0x12, 0x39, 0xeb, 0xc0, 0x1c, 0xf6, 0xe9, 0x8d, 0x4f, 0x1b, - 0xea, 0x33, 0x78, 0x9f, 0x5d, 0xf0, 0xbf, 0x84, 0xac, 0x6e, - 0xe7, 0xb6, 0xb1, 0xd6, 0x63, 0x7b, 0xbb, 0xe9, 0x20, 0x7d, - 0xae, 0xd6, 0xc1, 0x33, 0xb3, 0x3d, 0x83, 0x72, 0xf, 0xf8, - 0x66, 0x8d, 0xf4, 0x5b, 0xde, 0xdf, 0xaf, 0xdd, 0xbf, 0xdc, - 0x37, 0xa6, 0xaf, 0x6f, 0xeb, 0xfe, 0x7, 0xde, 0x7a, 0x6d, - 0x15, 0xe4, 0x5a, 0xe7, 0x87, 0x34, 0xef, 0x85, 0x5a, 0xa6, - 0x8b, 0xaf, 0xf8, 0x60, 0x4d, 0x65, 0x61, 0x71, 0x7d, 0x15, - 0x96, 0xa7, 0x66, 0x67, 0x77, 0x8e, 0x68, 0xdf, 0x38, 0x7f, - 0x9c, 0x93, 0xb9, 0x7b, 0x73, 0xdf, 0xeb, 0x9f, 0x5d, 0xa3, - 0x75, 0x74, 0x1d, 0x6c, 0x14, 0x57, 0x8d, 0x47, 0xe3, 0x9b, - 0xb1, 0xf1, 0xd6, 0x78, 0x5b, 0x49, 0xf1, 0x24, 0x96, 0x8b, - 0x65, 0xf6, 0x44, 0xb4, 0x16, 0xe4, 0x84, 0x63, 0x2a, 0x83, - 0x71, 0xb3, 0x76, 0x4, 0x47, 0x1f, 0x7f, 0xd3, 0x15, 0xd9, - 0x6b, 0x7f, 0x12, 0xf4, 0x9d, 0x27, 0x5a, 0x93, 0x47, 0xb5, - 0xb0, 0xd5, 0xf5, 0xbd, 0x42, 0x15, 0xdd, 0x71, 0x6, 0x91, - 0x69, 0xf6, 0x83, 0x6e, 0x38, 0xc6, 0xfe, 0x40, 0x19, 0xcf, - 0x6c, 0xe3, 0xbe, 0x38, 0xa3, 0xa2, 0x7d, 0xc3, 0xab, 0x5d, - 0x8e, 0xce, 0x8a, 0xc3, 0xf0, 0xbf, 0x8b, 0x74, 0x9f, 0x17, - 0xe9, 0xcd, 0x79, 0xa5, 0x4c, 0xc4, 0xc6, 0xdb, 0x27, 0x82, - 0x55, 0xd9, 0x2c, 0xf, 0xfd, 0xd7, 0x5e, 0xc7, 0xf3, 0x1c, - 0x1c, 0x13, 0x5b, 0x17, 0x10, 0x47, 0x75, 0x6f, 0x2d, 0xbc, - 0xcb, 0xba, 0x29, 0x50, 0xa3, 0xae, 0x48, 0xca, 0x91, 0x82, - 0x38, 0xa1, 0xdd, 0x2, 0xb3, 0x24, 0xa2, 0xbc, 0x8f, 0xc6, - 0x1f, 0xe, 0x3e, 0x19, 0x78, 0x43, 0xc2, 0xf7, 0xba, 0xd5, - 0xd7, 0x87, 0x77, 0x88, 0x13, 0x11, 0xc5, 0xf6, 0xeb, 0x80, - 0x64, 0x90, 0xf0, 0xab, 0xfe, 0xb3, 0xb9, 0xfd, 0x32, 0x6b, - 0x36, 0xd3, 0x4c, 0xbb, 0xf8, 0x51, 0xf0, 0x66, 0xf2, 0xf6, - 0xdd, 0x4c, 0x3e, 0x20, 0xd5, 0xa4, 0x41, 0xb4, 0x1c, 0x88, - 0x1e, 0x43, 0x84, 0x45, 0x4, 0x9f, 0xb8, 0xa4, 0xf5, 0xcf, - 0x3d, 0x73, 0x45, 0xf7, 0xfe, 0xb5, 0x7d, 0x2, 0xdb, 0x7f, - 0x5b, 0x75, 0x3d, 0xba, 0x8a, 0xf2, 0x5d, 0x5f, 0xe1, 0x3e, - 0x9d, 0xa2, 0x78, 0x5a, 0x7d, 0x6f, 0x4b, 0xb9, 0xbe, 0x8b, - 0xc5, 0x96, 0x50, 0xb5, 0xdf, 0xf6, 0xa9, 0xbb, 0x76, 0x92, - 0x69, 0x42, 0x96, 0x70, 0xe0, 0x9d, 0xa4, 0x37, 0x20, 0xf1, - 0xd0, 0xf3, 0x9e, 0x73, 0x27, 0x89, 0x3c, 0x65, 0xa8, 0x6b, - 0x3e, 0x3, 0xf0, 0x9c, 0x7a, 0x55, 0xc3, 0xd9, 0xea, 0x1e, - 0x26, 0x9a, 0x1b, 0x77, 0x9e, 0x6, 0xc3, 0x42, 0xf, 0xfa, - 0xd2, 0xa7, 0xb1, 0x7, 0x8c, 0xf5, 0xfc, 0x68, 0xf2, 0x5b, - 0xdd, 0x2f, 0xbf, 0x61, 0x5f, 0x4b, 0xf4, 0xb3, 0x7f, 0x71, - 0xea, 0xd4, 0x57, 0x8f, 0x78, 0xaf, 0xc0, 0x7a, 0x67, 0xc3, - 0x9d, 0x3, 0xfe, 0x12, 0xcf, 0x8, 0xb, 0x8b, 0x2d, 0x47, - 0x4c, 0x28, 0xd7, 0x19, 0xb9, 0x77, 0x5b, 0xc8, 0x8b, 0x28, - 0x75, 0x90, 0x31, 0x23, 0x9e, 0xbc, 0x1, 0xcf, 0x6e, 0x98, - 0xd4, 0xf1, 0xbe, 0xa3, 0x37, 0x89, 0xf5, 0xdf, 0xb, 0xf8, - 0x4a, 0xc6, 0xee, 0x7b, 0x6b, 0x1d, 0x66, 0x37, 0xbb, 0xbe, - 0x92, 0x7, 0xda, 0xed, 0x6c, 0x13, 0x3b, 0x33, 0xd8, 0x37, - 0x20, 0xff, 00, 0x86, 0x68, 0xdf, 0x45, 0xbd, 0xed, 0xfa, - 0xfd, 0xdb, 0xfd, 0xc3, 0x7a, 0x6a, 0xf6, 0xfe, 0xbf, 0xe0, - 0x7d, 0xe7, 0xa6, 0xd1, 0x5e, 0x45, 0xae, 0x78, 0x73, 0x4e, - 0xf8, 0x55, 0xaa, 0x68, 0xba, 0xff, 00, 0x86, 0x4, 0xd6, - 0x56, 0x17, 0x17, 0xd1, 0x59, 0x6a, 0x76, 0x66, 0x77, 0x78, - 0xe6, 0x8d, 0xf3, 0x87, 0xf9, 0xc9, 0x3b, 0x97, 0xb7, 0x3d, - 0xfe, 0xb9, 0xf5, 0xda, 0x37, 0x57, 0x41, 0xd6, 0xc1, 0x45, - 0x72, 0x5e, 0x23, 0xf8, 0x85, 0xa4, 0xf8, 0x7b, 0x56, 0x4d, - 0x21, 0x6d, 0x35, 0x3d, 0x57, 0x55, 0x64, 0xf3, 0x5a, 0xcb, - 0x4a, 0xb6, 0x33, 0xcb, 0x1a, 0x7f, 0x79, 0x86, 0x40, 0x3, - 0xf1, 0xcf, 0x23, 0x8c, 0x1a, 0xe2, 0xfc, 0x39, 0xe2, 0x2b, - 0xf, 0x13, 0xfc, 0x79, 0xfe, 0xd0, 0xd3, 0xcc, 0xa1, 0x6, - 0x80, 0x62, 0x96, 0x29, 0xa3, 0x29, 0x24, 0x32, 0x2c, 0xbf, - 0x34, 0x6e, 0xa7, 0xa3, 0x3, 0xc1, 0xfd, 0x33, 0x44, 0x7d, - 0xe7, 0x65, 0xe7, 0xf8, 0x26, 0xf, 0x45, 0xa9, 0xec, 0x34, - 0x57, 0x19, 0xad, 0xfc, 0x4b, 0xd2, 0x74, 0x9d, 0x6a, 0x4d, - 0x1e, 0xd6, 0xc3, 0x57, 0xd6, 0xf5, 0x8, 0x57, 0x75, 0xc4, - 0x1a, 0x45, 0xa7, 0xda, 0xd, 0xb8, 0xe3, 0x1b, 0xf9, 00, - 0x67, 0x3d, 0xb3, 0x8e, 0xf8, 0xe2, 0xa7, 0xb4, 0xf8, 0x89, - 0xa1, 0xea, 0x1e, 0x12, 0xbe, 0xf1, 0x15, 0x97, 0xda, 0x6e, - 0x21, 0xb0, 0x42, 0xd7, 0x76, 0x8b, 0x18, 0x17, 0x10, 0x90, - 0x32, 0xca, 0xc8, 0xc4, 00, 0x47, 0x3d, 0xf1, 0xc1, 0xc1, - 0x34, 0xae, 0xad, 0x70, 0xeb, 0x63, 0xac, 0xa2, 0xb9, 0xed, - 0x53, 0xc6, 0x7a, 0x56, 0x93, 0xe0, 0xa1, 0xe2, 0xb9, 0xfc, - 0xe7, 0xd3, 0x9a, 0x18, 0xe6, 0x55, 0x8c, 0x29, 0x91, 0x83, - 0xe0, 0x28, 00, 0x90, 0x33, 0xf3, 0xe, 0xf4, 0xdb, 0xdf, - 0x1a, 0xe9, 0x36, 0x1e, 0x6, 0x5f, 0x17, 0x48, 0x27, 0x6d, - 0x35, 0xa0, 0x8e, 0x75, 0x54, 0x40, 0x64, 0x21, 0xc8, 00, - 0x63, 0x38, 0xce, 0x48, 0x1d, 0x7f, 0x1a, 0x6f, 0x4b, 0xdf, - 0xa0, 0x2d, 0x6d, 0x6e, 0xa7, 0x47, 0x45, 0x71, 0x7a, 0xcf, - 0xc4, 0xed, 0xf, 0x41, 0xd5, 0xed, 0xf4, 0xbb, 0xfb, 0x7d, - 0x41, 0x6e, 0xee, 0x2c, 0xd6, 0xee, 0x18, 0xe3, 0x84, 0x48, - 0xd2, 0x16, 0x3b, 0x56, 0x25, 0xa, 0xc4, 0x99, 0x9, 0xe3, - 00, 0x63, 0xdf, 0x15, 0x27, 0x87, 0x3e, 0x23, 0x69, 0x5e, - 0x21, 0xd6, 0xe4, 0xd1, 0x5a, 0xc7, 0x55, 0xd2, 0x75, 0x45, - 0x8f, 0xcd, 0x4b, 0x4d, 0x52, 0xd7, 0xc9, 0x79, 0x13, 0xbb, - 0x28, 0xc9, 0xe9, 0xef, 0x8f, 0x6c, 0xe0, 0xe1, 0xd8, 0x2f, - 0xd4, 0xec, 0x28, 0xaf, 0x34, 0xf0, 0x97, 0xfc, 0x96, 0xdf, - 0x1d, 0xff, 00, 0xd7, 0x1b, 0x4f, 0xfd, 0x2, 0xaf, 0xea, - 0x1f, 0x16, 0x74, 0x5b, 0x5b, 0xfb, 0xbb, 0x5d, 0x3f, 0x4b, - 0xd7, 0x35, 0xb5, 0xb3, 0xe2, 0xea, 0xe3, 0x4a, 0xb2, 0xf3, - 0xa1, 0x85, 0xb9, 0xca, 0xb3, 0x96, 0x3, 0x23, 0x19, 0xc8, - 0xe3, 0xdf, 0xad, 0x4a, 0x6a, 0xc9, 0xf7, 0x1b, 0x5a, 0xb5, - 0xd8, 0xef, 0x28, 0xac, 0x9d, 0x2b, 0xc4, 0xda, 0x36, 0xb5, - 0xa0, 0x7f, 0x6e, 0x58, 0x5f, 0xc5, 0x2e, 0x9c, 0x15, 0x9d, - 0xe6, 0x27, 0x68, 0x8c, 0x28, 0xcb, 0x6e, 0x7, 0x95, 0x23, - 0xbe, 0x6b, 0x8f, 0x9b, 0xe3, 0x1e, 0x92, 0x96, 0xd2, 0xdf, - 0x5b, 0x78, 0x73, 0xc5, 0x37, 0x9a, 0x5a, 0x2, 0xc3, 0x51, - 0x83, 0x4d, 0xff, 00, 0x47, 0x64, 0x1d, 0x58, 0x33, 0x30, - 0xe0, 0x60, 0xf5, 0x3, 0xa5, 0x3d, 0x9d, 0x84, 0xb5, 0x57, - 0x47, 0xa3, 0x51, 0x58, 0xf1, 0x78, 0xa7, 0x44, 0x9f, 0xc3, - 0x1f, 0xf0, 0x92, 0x26, 0xa3, 0x11, 0xd2, 0x3c, 0xa3, 0x31, - 0xb9, 0x39, 00, 0x28, 0xe0, 0xf1, 0x8c, 0xe7, 0x3c, 0x63, - 0x19, 0xcf, 0x18, 0xcd, 0x79, 0xcf, 0x8b, 0x7e, 0x29, 0x68, - 0xda, 0xbf, 0x82, 0x35, 0x9b, 0x53, 0xa6, 0xeb, 0x56, 0x30, - 0x5e, 0xd8, 0xcd, 0x1d, 0x95, 0xf5, 0xed, 0x91, 0x8e, 0xde, - 0xe9, 0x8a, 0x9d, 0xaa, 0x8f, 0x93, 0x92, 0xc3, 0x24, 0x64, - 0xe, 0x9e, 0xbc, 0x52, 0x93, 0xb5, 0xfb, 0xa1, 0xa5, 0x7b, - 0x1e, 0xbd, 0x45, 0x79, 0xce, 0x8b, 0xe3, 0x2d, 0x33, 0xc2, - 0x7f, 0xd, 0xbc, 0x26, 0xb7, 0x69, 0x75, 0x75, 0x79, 0x77, - 0x61, 0xa, 0xda, 0xd8, 0xd9, 0x42, 0x65, 0x9e, 0x72, 0x11, - 0x73, 0xb5, 0x7d, 0xb3, 0x9e, 0x48, 0xfc, 0xeb, 0x67, 0xc3, - 0xbf, 0x10, 0xb4, 0xaf, 0x10, 0x6a, 0xcd, 0xa4, 0x35, 0x9e, - 0xa7, 0xa4, 0xea, 0xa2, 0x33, 0x2a, 0x59, 0x6a, 0xb6, 0xa6, - 0x9, 0x64, 0x8c, 0x7f, 0x1a, 0xf2, 0x41, 0x1d, 0x7b, 0xe7, - 0x83, 0xc6, 0x5, 0x5b, 0x8d, 0xa4, 0xe2, 0xba, 0x12, 0x9e, - 0x89, 0xb3, 0xad, 0xa2, 0x8a, 0xf3, 0xf9, 0x3e, 0x2f, 0x68, - 0x42, 0xf6, 0xf2, 0xc2, 0xd7, 0x4d, 0xd6, 0xaf, 0xb5, 0x1b, - 0x4b, 0xa9, 0x2d, 0x9e, 0xca, 0xca, 0xd0, 0x4d, 0x33, 0x4, - 0xfb, 0xd2, 0x5, 0xd, 0xf7, 0x33, 0x81, 0x92, 0x41, 0xc9, - 0xe9, 0xd7, 0x13, 0x7e, 0x85, 0x5b, 0xa9, 0xe8, 0x14, 0x56, - 0xf, 0x85, 0xbc, 0x5f, 0xa4, 0xf8, 0xbe, 0xca, 0x69, 0xf4, - 0xd7, 0x95, 0x65, 0xb7, 0x93, 0xca, 0xb9, 0xb5, 0xb8, 0x8c, - 0xc7, 0x35, 0xbb, 0xff, 00, 0x75, 0xd4, 0xf4, 0x3f, 0x4c, - 0x8e, 0xf, 0x3c, 0x1a, 0xc2, 0xbf, 0xf8, 0xad, 0xa4, 0x5b, - 0x5f, 0xdd, 0x5a, 0xe9, 0xda, 0x4e, 0xbb, 0xad, 0xad, 0xa1, - 0xdb, 0x73, 0x71, 0xa4, 0xd9, 0x79, 0xd0, 0xc4, 0xe3, 0xaa, - 0x97, 0xc8, 0xe4, 0x63, 0x3c, 0x64, 0x7b, 0xd0, 0xf4, 0x76, - 0x62, 0x5a, 0x9d, 0xdd, 0x15, 0x85, 0x17, 0x8b, 0xf4, 0x6b, - 0xaf, 0x9, 0x4f, 0xe2, 0x7b, 0x1b, 0x83, 0x79, 0xa6, 0xc3, - 0xb, 0xcc, 0x5a, 0x15, 0xf9, 0x88, 0x40, 0x4b, 0xd, 0xad, - 0x8c, 0x37, 0x1d, 0xe, 0x2b, 0x23, 0x43, 0xf8, 0x97, 0xa6, - 0xf8, 0x8f, 0x50, 0xb2, 0xb6, 0xd3, 0x34, 0x8d, 0x6e, 0x68, - 0x2e, 0xd4, 0x11, 0x7f, 0xf6, 0x40, 0x2d, 0xa3, 0x6d, 0x85, - 0x8a, 0x34, 0x9b, 0xb1, 0xb8, 0x63, 0x4, 0xc, 0xf3, 0xc7, - 0x34, 0x5b, 0x5b, 0x7, 0x4b, 0xf4, 0x3b, 0x4a, 0x2a, 0x9e, - 0xad, 0xa9, 0x43, 0xa3, 0x68, 0xf7, 0x9a, 0x9d, 0xc2, 0xc8, - 0xd0, 0x5a, 0x42, 0xf3, 0xc8, 0xb1, 0x80, 0x58, 0xaa, 0x8c, - 0x9c, 0x64, 0x81, 0x9e, 0x3d, 0x6b, 0x86, 0x93, 0xe3, 0x36, - 0x80, 0xb6, 0x31, 0x5f, 0xc1, 0xa5, 0xeb, 0xd7, 0x5a, 0x79, - 0x44, 0x69, 0xef, 0x6d, 0xec, 0x77, 0xc1, 0x6a, 0x5b, 0x19, - 0x49, 0x1f, 0x76, 0x37, 00, 0x46, 0x42, 0xe7, 0x19, 0xc7, - 0x5e, 0x28, 0xb, 0x1e, 0x8b, 0x45, 0x70, 0x5a, 0x97, 0xc5, - 0xcf, 0xe, 0xd8, 0x83, 0x3d, 0xb5, 0xb6, 0xab, 0xaa, 0x69, - 0xf1, 0xed, 0xf3, 0xf5, 0x1d, 0x3a, 0xd0, 0xcb, 0x6d, 0x6e, - 0x4e, 0xe, 0x1e, 0x4c, 0x81, 0x90, 0x18, 0x12, 0x6, 0x71, - 0x9c, 0x75, 0xe2, 0xba, 0x5b, 0xef, 0x14, 0xe8, 0x9a, 0x6f, - 0x87, 0x17, 0xc4, 0x17, 0x7a, 0x84, 0x51, 0xe9, 0x6f, 0x1a, - 0xc8, 0x93, 0xf2, 0x43, 0x86, 0x19, 0x5c, 0xe, 0xa4, 0x9f, - 0x4c, 0x66, 0x87, 0xa2, 0xbb, 0xe, 0xb6, 0x36, 0x28, 0xae, - 0x6, 0xc3, 0xe2, 0xde, 0x89, 0x73, 0x79, 0x69, 0x6, 0xa1, - 0xa5, 0xeb, 0x9a, 0x2c, 0x57, 0x98, 0x16, 0xd7, 0x7a, 0xa5, - 0x97, 0x93, 0x4, 0xcc, 0x71, 0x80, 0xae, 0x18, 0xf5, 0x7, - 0x39, 0x3c, 0x63, 0xbd, 0x6b, 0x78, 0xab, 0xc7, 0xda, 0x27, - 0x83, 0x2f, 0x74, 0xeb, 0x7d, 0x65, 0xa7, 0x89, 0x6f, 0x84, - 0x85, 0x27, 0x44, 0xc, 0x91, 0x84, 00, 0x9d, 0xdc, 0xee, - 0xe7, 0x20, 00, 0x1, 0x24, 0xd0, 0xb, 0x5d, 0x8e, 0xa2, - 0x8a, 0xe2, 0x34, 0xaf, 0x8a, 0x3a, 0x4e, 0xa1, 0xaf, 0xdb, - 0x68, 0xd7, 0x9a, 0x56, 0xb7, 0xa3, 0x5d, 0xdd, 0x83, 0xf6, - 0x5f, 0xed, 0x5b, 0x2f, 0x21, 0x67, 0x23, 0xb2, 0x9c, 0x9e, - 0x7e, 0xb8, 0x1d, 0xba, 0x90, 0x2b, 0x93, 0xf1, 0xb7, 0x8d, - 0xae, 0xf4, 0xdf, 0x8b, 0xfe, 0x1f, 0xb7, 0x4d, 0x33, 0xc4, - 0x52, 0xda, 0x59, 0xac, 0xde, 0x65, 0xb5, 0xb4, 0x5, 0x96, - 0xf5, 0x8c, 0x67, 0xd, 0x12, 0xee, 0xc4, 0x9b, 0x77, 0x72, - 0x7b, 0x73, 0x42, 0xdd, 0x2e, 0xe1, 0xd1, 0xf9, 0x1e, 0xc7, - 0x45, 0x78, 0xc5, 0x8f, 0x8a, 0xec, 0x7c, 0x3d, 0xf1, 0x83, - 0xc6, 0x53, 0x5c, 0xdb, 0xde, 0xcf, 0x73, 0x77, 0xd, 0xa0, - 0xb6, 0xb1, 0xb4, 0xb7, 0x32, 0xdc, 0x4c, 0xc2, 0x2d, 0xc4, - 0x2a, 0xf, 0x41, 0xc9, 0xc9, 00, 0x7a, 0xd7, 0xa0, 0x78, - 0x53, 0xc7, 0x7a, 0x57, 0x8b, 0x67, 0xbc, 0xb4, 0xb6, 0x82, - 0xfa, 0xc7, 0x50, 0xb2, 0x23, 0xed, 0x16, 0x3a, 0x84, 0x1e, - 0x54, 0xc8, 0xf, 0x46, 0xdb, 0x93, 0xc7, 0xe3, 0x91, 0xc6, - 0x71, 0x91, 0x91, 0x6a, 0x93, 0x7, 0xa3, 0x3a, 0x7a, 0x28, - 0xa2, 0x80, 0xa, 0x6b, 0x77, 0xfa, 0x53, 0xa9, 0xac, 0x3a, - 0xfd, 0x28, 0x3, 0xce, 0x7c, 0x5b, 0x28, 0x83, 0xc6, 0x76, - 0x12, 0x64, 0x67, 0xc9, 0x23, 0x14, 0xf4, 0xf1, 0x45, 0xbc, - 0x1c, 0x34, 0xc0, 0x11, 0xef, 0x4c, 0xf8, 0x97, 0xa5, 0xce, - 0xf6, 0xd0, 0xea, 0x96, 0x99, 0x32, 0xc1, 0x90, 0xca, 0x7, - 0x6a, 0xf1, 0xe9, 0xa5, 0x9e, 0x63, 0xb9, 0xd9, 0xb7, 0x7d, - 0x6b, 0x82, 0xb6, 0x23, 0xd8, 0x49, 0xab, 0x6f, 0xa9, 0xe6, - 0x62, 0x31, 0x7f, 0x56, 0x93, 0x56, 0xdf, 0x53, 0xda, 0x3f, - 0xe1, 0x30, 0xb4, 0x6f, 0xf9, 0x6c, 0x3f, 0x3a, 0x95, 0x7c, - 0x57, 0x6a, 0x4e, 0x3c, 0xe5, 0xfc, 0xeb, 0xc2, 0x1b, 0xcf, - 0x1d, 0x24, 0x6f, 0xce, 0x90, 0x3d, 0xc8, 0xe9, 0x23, 0x7e, - 0x75, 0x92, 0xcc, 0x1f, 0x63, 0x15, 0x9a, 0x3e, 0xc7, 0xbe, - 0x27, 0x89, 0xed, 0x49, 0xe2, 0x61, 0xf9, 0xd4, 0xa3, 0xc4, - 0x96, 0xc7, 0xa4, 0xc3, 0xf3, 0xaf, 00, 0x17, 0x17, 0x43, - 0xa4, 0xad, 0xf9, 0xd3, 0xc5, 0xed, 0xea, 0xf4, 0x95, 0xff, - 00, 0x3a, 0xa5, 0x98, 0x79, 0x14, 0xb3, 0x4f, 0x23, 0xe8, - 0x24, 0xf1, 0xc, 0x5f, 0xc3, 0x30, 0x1f, 0x8d, 0x4a, 0x3c, - 0x40, 0x87, 0xfe, 0x5e, 0x3f, 0xf1, 0xea, 0xf9, 0xe8, 0x6a, - 0x77, 0xeb, 0xcf, 0x9c, 0xff, 00, 0x9d, 0x3d, 0x75, 0xad, - 0x45, 0x7f, 0xe5, 0xb3, 0x55, 0x2c, 0x7a, 0xec, 0x52, 0xcc, - 0xd7, 0xf2, 0x9f, 0x43, 0xd, 0x75, 0x4f, 0xfc, 0xb7, 0xff, - 00, 0xc7, 0xa9, 0xeb, 0xad, 0x8f, 0xf9, 0xeb, 0x9f, 0xa9, - 0xaf, 0x9e, 0x97, 0x5f, 0xd4, 0x53, 0xfe, 0x5a, 0xb7, 0xe7, - 0x52, 0xaf, 0x89, 0xf5, 0x35, 0x3f, 0xeb, 0xe, 0x29, 0xac, - 0x7c, 0x7b, 0x14, 0xb3, 0x38, 0x76, 0x3e, 0x84, 0x1a, 0xd6, - 0x7a, 0x3a, 0xfe, 0x42, 0x9e, 0x35, 0x90, 0x7a, 0x30, 0xfc, - 0xab, 0xe7, 0xd5, 0xf1, 0x76, 0xa6, 0xbf, 0xc7, 0x53, 0x2f, - 0x8c, 0xf5, 0x1, 0x8c, 0x93, 0xf9, 0xd5, 0x2c, 0x75, 0x3e, - 0xc5, 0xac, 0xc6, 0x9f, 0x63, 0xdf, 0x97, 0x57, 0xcf, 0x56, - 0x14, 0xff, 00, 0xed, 0x75, 0xf4, 0x5f, 0xce, 0xbc, 0x11, - 0x3c, 0x73, 0x7c, 0xbd, 0x72, 0x6a, 0x65, 0xf1, 0xf5, 0xe0, - 0xfe, 0x13, 0xf9, 0xd5, 0x7d, 0x76, 0x99, 0x5f, 0xda, 0x14, - 0x4f, 0x77, 0x1a, 0xaa, 0x91, 0xd0, 0x53, 0x86, 0xa8, 0xa7, - 0xb0, 0xfc, 0xeb, 0xc3, 0x13, 0xe2, 0xd, 0xc0, 0xea, 0xd, - 0x4e, 0x9f, 0x10, 0xe4, 0xfe, 0x20, 0x69, 0xfd, 0x6e, 0x97, - 0x72, 0xbe, 0xbf, 0x47, 0xb9, 0xed, 0xff, 00, 0xda, 0x51, - 0xfb, 0xd3, 0x86, 0xa3, 0x11, 0x1d, 0xf, 0xe7, 0x5e, 0x28, - 0xbf, 0x11, 0x7d, 0x54, 0xd4, 0xe9, 0xf1, 0x19, 0xf, 0x50, - 0x45, 0x52, 0xc5, 0x52, 0xee, 0x52, 0xc6, 0xd1, 0x7d, 0x4f, - 0x65, 0x1a, 0x84, 0x44, 0xf7, 0xa5, 0xfb, 0x6c, 0x5e, 0xa2, - 0xbc, 0x81, 0x3e, 0x22, 0x43, 0xdf, 0x35, 0x3a, 0xfc, 0x41, - 0xb6, 0x3d, 0x5e, 0x9a, 0xc4, 0xd2, 0xee, 0x52, 0xc5, 0xd1, - 0x7f, 0x68, 0xf5, 0x9f, 0xb4, 0xc0, 0xc3, 0x92, 0xbf, 0x95, - 0x29, 0xba, 0x84, 0xf5, 0x60, 0x6b, 0xcb, 0x17, 0xc7, 0xf6, - 0x87, 0xfe, 0x5a, 0xa, 0x9d, 0x7c, 0x75, 0x66, 0x7a, 0xc9, - 0x55, 0xed, 0xa9, 0xf7, 0x2b, 0xeb, 0x14, 0xbf, 0x98, 0xf4, - 0xc2, 0xf6, 0xf2, 0x1, 0xb8, 0x23, 0x63, 0xd7, 0x14, 0xc6, - 0x82, 0xca, 0x43, 0x96, 0x86, 0x12, 0x7d, 0xc0, 0xaf, 0x3d, - 0x5f, 0x1a, 0xd9, 0x91, 0xfe, 0xb4, 0x7e, 0x75, 0x32, 0x78, - 0xc6, 0xcc, 0xff, 00, 0xcb, 0x61, 0xf9, 0xd3, 0x55, 0x60, - 0xfa, 0x94, 0xab, 0x53, 0x7d, 0x4e, 0xdd, 0xb4, 0xdd, 0x29, - 0xc9, 0x2d, 0x65, 0x68, 0xc4, 0xf5, 0x26, 0x35, 0x26, 0xa2, - 0xff, 00, 0x84, 0x7b, 0x43, 0x7c, 0x9f, 0xec, 0xab, 0x36, - 0xcf, 0x7f, 0x25, 0x4f, 0xf4, 0xae, 0x4d, 0x7c, 0x5b, 0x66, - 0x4f, 0xfa, 0xe1, 0xf8, 0x9a, 0x99, 0x7c, 0x51, 0x6a, 0x47, - 0x12, 0x8f, 0xce, 0xab, 0x9e, 0x3d, 0xc7, 0xed, 0x23, 0xdc, - 0xdd, 0x7f, 0x6, 0xf8, 0x72, 0x45, 0x20, 0xe9, 0x16, 0xb8, - 0x3d, 0x7f, 0x74, 0x3f, 0xc2, 0xaa, 0xcb, 0xf0, 0xf7, 0xc2, - 0xb3, 0xa8, 0x57, 0xd1, 0xed, 0xc8, 0x1d, 0x82, 0x63, 0xf9, - 0x55, 0x15, 0xf1, 0x2d, 0xb1, 0xe9, 0x30, 0xfc, 0xea, 0x51, - 0xe2, 0x18, 0x9, 0xc0, 0x98, 0x7e, 0x74, 0xee, 0x8a, 0xe6, - 0x5d, 0xc6, 0xcb, 0xf0, 0xb7, 0xc1, 0xb3, 0xc, 0x36, 0x8f, - 0x8, 0x3, 0xd0, 0x91, 0xfd, 0x6b, 0x37, 0x50, 0xf8, 0x3d, - 0xe0, 0xd9, 0xa2, 0x3b, 0x6c, 0x84, 0x19, 0x1c, 0x15, 0x26, - 0xb6, 0x57, 0xc4, 0x11, 0x60, 0x62, 0x6e, 0x9e, 0xf5, 0x5a, - 0x7d, 0x7a, 0x32, 0x9, 0x12, 0x2, 0x7e, 0xb4, 0x5d, 0x5, - 0xd3, 0x20, 0xd1, 0xf4, 0x1d, 0x3b, 0xc2, 0x7a, 0x41, 0xb0, - 0xb0, 0xcf, 0x97, 0x92, 0x49, 0x3d, 0x4d, 0x72, 0x9e, 0x2e, - 0xbc, 0x11, 0xd8, 0x4c, 0x41, 0xea, 0xf, 0x3e, 0x95, 0xa5, - 0xa8, 0x6b, 0x60, 0x82, 0x37, 0x57, 0x9f, 0xf8, 0xb3, 0x51, - 0x69, 0xed, 0x76, 0x6, 0x3c, 0x83, 0x9a, 0x8a, 0xae, 0xd0, - 0x64, 0x56, 0x76, 0xa6, 0xd9, 0xe7, 0x1a, 0x8c, 0x9e, 0x64, - 0xa4, 0x67, 0xa9, 0xc5, 0x7d, 0x27, 0xe0, 0x7b, 0xf, 0xec, - 0xef, 0xa, 0xd8, 0x41, 0x80, 0x8, 0x8c, 0x13, 0x8f, 0x7a, - 0xf9, 0xdb, 0x4a, 0xb2, 0x7d, 0x4b, 0xc4, 0x36, 0x56, 0xa1, - 0x59, 0xbc, 0xc9, 0x94, 0x1c, 0x76, 0x19, 0xaf, 0xa9, 0xac, - 0xa2, 0x11, 0x43, 0x1c, 0x63, 0xa2, 0x28, 0x15, 0x9e, 0x1e, - 0x36, 0x89, 0x8e, 0x16, 0x36, 0x89, 0xa9, 00, 0xad, 0x38, - 0x6, 0x23, 0xfc, 0x6b, 0x3e, 0x1, 0xc5, 0x68, 0xc3, 0xf7, - 0x3f, 0x1a, 0xe8, 0x3a, 0x89, 0x28, 0xa2, 0x8a, 00, 0xf3, - 0x58, 0x3f, 0xe4, 0x35, 0xaf, 0xff, 00, 0xd8, 0x49, 0xff, - 00, 0xf4, 0x4, 0xae, 0xd3, 0x47, 0xff, 00, 0x90, 0x54, - 0x3f, 0xf0, 0x2f, 0xfd, 0x8, 0xd7, 0x17, 0x7, 0xfc, 0x86, - 0xb5, 0xff, 00, 0xfb, 0x9, 0x3f, 0xfe, 0x80, 0x95, 0xda, - 0x68, 0xff, 00, 0xf2, 0xa, 0x87, 0xfe, 0x5, 0xff, 00, - 0xa1, 0x1a, 00, 0xab, 0xe0, 0x8f, 0xf9, 0x14, 0x2c, 0x7f, - 0xed, 0xa7, 0xfe, 0x8c, 0x6a, 0xe8, 0x2b, 0x9f, 0xf0, 0x47, - 0xfc, 0x8a, 0x16, 0x3f, 0xf6, 0xd3, 0xff, 00, 0x46, 0x35, - 0x74, 0x14, 00, 0x57, 0x84, 0x7c, 0x60, 0xf8, 0x5d, 0xe2, - 0x9f, 0x16, 0x78, 0xd2, 0xdf, 0x53, 0xd1, 0xe2, 0x8e, 0xea, - 0xd6, 0x58, 0x52, 0x16, 0xdf, 0x3a, 0xa7, 0xd9, 0xf6, 0x9e, - 0x49, 0xc, 0x79, 0x53, 0x9c, 0xfc, 0xb9, 0x3d, 0x78, 0xe9, - 0x9f, 0x77, 0xa2, 0x93, 0x49, 0xb4, 0xfb, 0xd, 0x3b, 0x5c, - 0xa7, 0xa4, 0xda, 0x4b, 0xa7, 0xe8, 0xd6, 0x36, 0x73, 0xcc, - 0x67, 0x96, 0xde, 0x4, 0x89, 0xe5, 0x39, 0xf9, 0xd9, 0x54, - 0x2, 0x79, 0xf5, 0xc5, 0x5c, 0xa2, 0x8a, 0xa6, 0xee, 0xee, - 0xc9, 0x4a, 0xca, 0xc8, 0x2b, 0x83, 0xf8, 0xcd, 0x6f, 0x2d, - 0xcf, 0xc2, 0x8d, 0x6d, 0x62, 0x52, 0xcc, 0x8b, 0x1c, 0x84, - 0xf, 0xee, 0xac, 0x8a, 0x49, 0xfc, 00, 0x26, 0xbb, 0xca, - 0x8a, 0xea, 0xd6, 0xb, 0xdb, 0x49, 0xad, 0x6e, 0xa2, 0x59, - 0x6d, 0xe6, 0x43, 0x1c, 0x91, 0xb8, 0xc8, 0x65, 0x23, 0x4, - 0x1f, 0xc2, 0xa2, 0x4a, 0xea, 0xc8, 0xb8, 0xbb, 0x49, 0x33, - 0x84, 0xf0, 0xef, 0xc3, 0xbf, 0x9, 0xde, 0xf8, 0x26, 0xc8, - 0x5e, 0x69, 0x76, 0x9a, 0x8c, 0xb7, 0xb6, 0x8b, 0x24, 0xd7, - 0xf3, 0xa0, 0x92, 0x79, 0x19, 0xd4, 0x12, 0xc2, 0x53, 0xf3, - 0xe, 0xbc, 0x60, 0x8c, 0x57, 0x9c, 0xdc, 0x5f, 0x5d, 0xdd, - 0x7c, 0x5, 0xb4, 0x9a, 0xe2, 0x56, 0xbb, 0x8b, 0x48, 0xd6, - 0xd2, 0x31, 0x33, 0x82, 0x77, 0xc1, 0x1c, 0x98, 0x52, 0x7d, - 0x47, 0xcc, 0x7, 0xd0, 0x57, 0x7e, 0x9f, 0xd, 0xb5, 0xdb, - 0x18, 0x1b, 0x4a, 0xd1, 0xfc, 0x79, 0x7f, 0x63, 0xe1, 0xe2, - 0x4a, 0xad, 0x89, 0xb4, 0x8e, 0x49, 0x63, 0x8c, 0xfd, 0xe4, - 0x49, 0xc9, 0xdc, 0xbd, 0xf6, 0x9c, 0x7c, 0xbc, 0x75, 0xef, - 0xd5, 0x43, 0xe0, 0xfd, 0x16, 0x1f, 0x7, 0x7f, 0xc2, 0x2a, - 0xb6, 0xb9, 0xd2, 0xbc, 0x83, 0x1, 0x8c, 0x9e, 0x48, 0x3c, - 0x96, 0x27, 0xfb, 0xc4, 0xf3, 0x9f, 0x5a, 0xb6, 0xee, 0xdc, - 0x97, 0x96, 0x9e, 0x8e, 0xff, 00, 0xf0, 0x3e, 0x64, 0x28, - 0xe8, 0xa2, 0xfe, 0xff, 00, 0x55, 0x6f, 0xf8, 0x3f, 0x22, - 0x6f, 0x13, 0x5d, 0x45, 0x6f, 0xe1, 0xd, 0x5e, 0xed, 0xd8, - 0x8, 0x92, 0xc6, 0x67, 0x2c, 0x4f, 0x18, 0xd8, 0x6b, 0xc7, - 0xad, 0xe1, 0x97, 0x4e, 0xf0, 0xc7, 0xc2, 0x1b, 0x9b, 0x88, - 0xf1, 0x12, 0x5e, 0xaa, 0xb1, 0x23, 0x20, 0x79, 0xbc, 0xa7, - 0xe8, 0x73, 0x5d, 0x68, 0xf8, 0x5b, 0xaa, 0xdc, 0x5a, 0x47, - 0xa2, 0xea, 0x7e, 0x38, 0xd4, 0x6f, 0x7c, 0x33, 0x1b, 0x71, - 0xa7, 0x1b, 0x64, 0x49, 0x5e, 0x30, 0x72, 0xa8, 0xf3, 0x83, - 0xb9, 0x80, 0xe0, 0x1e, 0x6, 0x40, 0xe3, 0x1c, 0x63, 0xb0, - 0xf1, 0x7, 0x85, 0x74, 0xbf, 0x11, 0xf8, 0x74, 0xe8, 0x77, - 0x71, 0xbc, 0x76, 0x80, 0x2f, 0x94, 0x60, 0x6d, 0x8f, 0x9, - 0x5f, 0xba, 0xc8, 0x7b, 0x11, 0x4a, 0xc9, 0x3e, 0x65, 0xdd, - 0x7e, 0xd, 0xff, 00, 0x98, 0x6e, 0xac, 0xfb, 0x35, 0xf7, - 0xd8, 0xc5, 0xf8, 0xb9, 0x70, 0x96, 0xdf, 0xb, 0x35, 0xe6, - 0x90, 0x81, 0xbe, 0x1, 0x1a, 0xe4, 0xf5, 0x2c, 0xea, 00, - 0xfd, 0x6b, 0x9c, 0xf2, 0x64, 0xd3, 0x3e, 0x2b, 0x78, 0x9, - 0x6e, 0x63, 0xb, 0xe6, 0x68, 0x92, 0x5a, 0x82, 0x47, 0x49, - 0x15, 0x32, 0x47, 0xb1, 0xff, 00, 0x1a, 0xd5, 0xb7, 0xf8, - 0x6d, 0xaa, 0xde, 0xdd, 0x58, 0x8f, 0x15, 0xf8, 0xc6, 0xeb, - 0x5d, 0xd3, 0xec, 0x5d, 0x65, 0x82, 0xc8, 0xda, 0x24, 0xa, - 0xce, 0xbf, 0x74, 0xca, 0xc0, 0x93, 0x26, 0x3d, 0xfb, 0xf7, - 0xea, 0xf, 0x43, 0xe2, 0xff, 00, 0x8, 0x5a, 0xf8, 0xbb, - 0x4f, 0x86, 0x29, 0x2e, 0x6e, 0x2c, 0xaf, 0x6d, 0x24, 0xf3, - 0xac, 0xaf, 0x6d, 0x9b, 0x12, 0x5b, 0xc9, 0x8e, 0x8, 0xf5, - 0x1e, 0xa3, 0xbf, 0xa8, 0x3c, 0xd0, 0x95, 0x9f, 0x37, 0xf5, - 0x6b, 0x35, 0xfa, 0xb1, 0xb5, 0x7d, 0x3f, 0xab, 0xdd, 0x3f, - 0xd1, 0x1c, 0xdf, 0xc6, 0x63, 0xe6, 0xf8, 0x5b, 0x4c, 0xb2, - 0x4c, 0x19, 0xee, 0xf5, 0x7b, 0x58, 0xa2, 0x5e, 0xec, 0xdb, - 0x89, 0xfe, 0x95, 0xe8, 0xd5, 0xc3, 0x69, 0x5e, 00, 0xbf, - 0x3a, 0xfd, 0xa6, 0xb3, 0xe2, 0xaf, 0x13, 0x4f, 0xaf, 0xdc, - 0xd8, 0xe4, 0xd9, 0x46, 0x6d, 0x52, 0xda, 0x28, 0x58, 0xf5, - 0x72, 0x88, 0x48, 0x66, 0xf4, 0x3d, 0xbd, 0xf8, 0xc7, 0x73, - 0x42, 0x56, 0x56, 0xf3, 0xbf, 0xe0, 0x97, 0xe8, 0x2d, 0xdd, - 0xfc, 0xad, 0xf9, 0xff, 00, 0x99, 0xe6, 0x76, 0xdf, 0xf2, - 0x71, 0xb7, 0xdf, 0xf6, 0x2f, 0x2f, 0xfe, 0x8d, 0x5a, 0x7f, - 0xc1, 0x65, 0x47, 0xf0, 0xc6, 0xab, 0x75, 0x26, 0xe, 0xa1, - 0x3e, 0xaf, 0x72, 0x6f, 0x9, 0x39, 0x6f, 0x30, 0x11, 0xc1, - 0xfc, 0x31, 0xf9, 0xd6, 0xb6, 0xb7, 0xe0, 0x7b, 0xdb, 0xdf, - 0x1b, 0x5b, 0x78, 0xa7, 0x47, 0xf1, 0x3, 0xe9, 0x57, 0x6b, - 0x6e, 0x2d, 0x6e, 0x53, 0xec, 0x89, 0x3a, 0xcf, 0x10, 0x70, - 0xdb, 0x7e, 0x62, 0x36, 0x9e, 0xd9, 0xe7, 0xb6, 0x31, 0x8e, - 0x6b, 0x5f, 0xfc, 0x3c, 0xbf, 0xb7, 0xd7, 0x6e, 0xf5, 0x6f, - 0x9, 0x78, 0xa2, 0xe3, 0xc3, 0xf2, 0x5f, 0xb1, 0x7b, 0xd8, - 0x3e, 0xca, 0x97, 0x50, 0xca, 0xfc, 0x7c, 0xe1, 0x1c, 0x80, - 0xad, 0xd7, 0x27, 0x9c, 0xe7, 0xb7, 0x71, 0x3b, 0x25, 0xe8, - 0xd7, 0xfe, 0x4d, 0x71, 0xbd, 0x7f, 0x7, 0xf8, 0x58, 0xa3, - 0xa2, 0xaa, 0xc1, 0xf1, 0xf7, 0xc4, 0x71, 0xd9, 0x80, 0x21, - 0x9b, 0x4b, 0x86, 0x5b, 0xb0, 0xbd, 0x3c, 0xec, 0x80, 0xb9, - 0xf7, 0xda, 0x7f, 0x5a, 0xf4, 0xaa, 0xe6, 0xbc, 0x23, 0xe0, - 0xcb, 0x5f, 0xa, 0x45, 0x75, 0x31, 0xbb, 0xb8, 0xd4, 0x35, - 0x4b, 0xe6, 0x59, 0x2f, 0x6f, 0xee, 0x4e, 0x5e, 0x66, 0x3, - 0xb0, 0xfe, 0x15, 0x1c, 0xe0, 0x73, 0x8c, 0xf5, 0x35, 0xd2, - 0xd1, 0xb2, 0x4b, 0xb7, 0xf5, 0xff, 00, 00, 0x5b, 0xb6, - 0xff, 00, 0xae, 0xc7, 0x99, 0x78, 0xe1, 0x47, 0x89, 0x3e, - 0x27, 0x78, 0x53, 0xc2, 0xae, 0xb, 0x59, 0xdb, 0xef, 0xd5, - 0x6e, 0xd3, 0xb3, 0x4, 0xc8, 0x8c, 0x11, 0xdc, 0x6e, 0x4, - 0x1f, 0x66, 0xa9, 0xbe, 0x36, 0x6, 0x8f, 0xc0, 0xb0, 0xdd, - 0xec, 0xdd, 0x1d, 0xae, 0xa3, 0x6d, 0x34, 0xb9, 0x19, 0x1, - 0x43, 0x63, 0x91, 0xf5, 0x22, 0xba, 0x28, 0x7c, 0x24, 0x23, - 0xf8, 0x89, 0x73, 0xe2, 0xd7, 0xbd, 0x32, 0x34, 0xb6, 0x2b, - 0x65, 0x1d, 0xb7, 0x95, 0x8f, 0x2c, 0x6, 0xc, 0x4e, 0xec, - 0xf3, 0x92, 0x3a, 0x63, 0xbf, 0x5a, 0xd8, 0xd5, 0xf4, 0xab, - 0x3d, 0x73, 0x49, 0xba, 0xd2, 0xf5, 0x8, 0xbc, 0xdb, 0x4b, - 0xa8, 0xcc, 0x72, 0x26, 0x71, 0x90, 0x7d, 0xf, 0x63, 0xdc, - 0x1a, 0x5b, 0x45, 0x77, 0x4e, 0xff, 00, 0x8f, 0xf9, 0x24, - 0x56, 0x8e, 0x4e, 0xfb, 0x5a, 0xdf, 0x87, 0xf9, 0xb6, 0x55, - 0xf1, 0x35, 0xd4, 0x56, 0xfe, 0x10, 0xd5, 0xee, 0xdd, 0x80, - 0x89, 0x2c, 0x66, 0x72, 0xc4, 0xf1, 0x8d, 0x86, 0xbc, 0x7a, - 0xde, 0x19, 0x74, 0xef, 0xc, 0x7c, 0x21, 0xb9, 0xb8, 0x8f, - 0x11, 0x25, 0xea, 0xab, 0x12, 0x32, 0x7, 0x9b, 0xca, 0x7e, - 0x87, 0x35, 0xd6, 0x8f, 0x85, 0xba, 0xad, 0xc5, 0xa4, 0x7a, - 0x2e, 0xa7, 0xe3, 0x8d, 0x46, 0xf7, 0xc3, 0x31, 0xb7, 0x1a, - 0x71, 0xb6, 0x44, 0x95, 0xe3, 0x7, 0x2a, 0x8f, 0x38, 0x3b, - 0x98, 0xe, 0x1, 0xe0, 0x64, 0xe, 0x31, 0xc6, 0x3b, 0xf, - 0x10, 0x78, 0x57, 0x4b, 0xf1, 0x1f, 0x87, 0x4e, 0x87, 0x77, - 0x1b, 0xc7, 0x68, 0x2, 0xf9, 0x46, 0x6, 0xd8, 0xf0, 0x95, - 0xfb, 0xac, 0x87, 0xb1, 0x14, 0xec, 0x93, 0xe6, 0x5d, 0xd7, - 0xe0, 0xdf, 0xf9, 0x93, 0xba, 0xb3, 0xec, 0xd7, 0xdf, 0x63, - 0x17, 0xe2, 0xe5, 0xc2, 0x5b, 0x7c, 0x2c, 0xd7, 0x9a, 0x42, - 0x6, 0xf8, 0x4, 0x6b, 0x93, 0xd4, 0xb3, 0xa8, 0x3, 0xf5, - 0xae, 0x73, 0xc9, 0x93, 0x4c, 0xf8, 0xad, 0xe0, 0x25, 0xb9, - 0x8c, 0x2f, 0x99, 0xa2, 0x49, 0x6a, 0x9, 0x1d, 0x24, 0x54, - 0xc9, 0x1e, 0xc7, 0xfc, 0x6b, 0x56, 0xdf, 0xe1, 0xb6, 0xab, - 0x7b, 0x75, 0x62, 0x3c, 0x57, 0xe3, 0x1b, 0xad, 0x77, 0x4f, - 0xb1, 0x75, 0x96, 0xb, 0x23, 0x68, 0x90, 0x2b, 0x3a, 0xfd, - 0xd3, 0x2b, 0x2, 0x4c, 0x98, 0xf7, 0xef, 0xdf, 0xa8, 0x3d, - 0xf, 0x8b, 0xfc, 0x21, 0x6b, 0xe2, 0xed, 0x3e, 0x18, 0xa4, - 0xb9, 0xb8, 0xb2, 0xbd, 0xb4, 0x93, 0xce, 0xb2, 0xbd, 0xb6, - 0x6c, 0x49, 0x6f, 0x26, 0x38, 0x23, 0xd4, 0x7a, 0x8e, 0xfe, - 0xa0, 0xf3, 0x42, 0x56, 0x7c, 0xdf, 0xd5, 0xac, 0xd7, 0xea, - 0xc6, 0xd5, 0xf4, 0xfe, 0xaf, 0x74, 0xff, 00, 0x44, 0x73, - 0x7f, 0x19, 0x8f, 0x9b, 0xe1, 0x6d, 0x32, 0xc9, 0x30, 0x67, - 0xbb, 0xd5, 0xed, 0x62, 0x89, 0x7b, 0xb3, 0x6e, 0x27, 0xfa, - 0x57, 0xa3, 0x57, 0xd, 0xa5, 0x78, 0x2, 0xfc, 0xeb, 0xf6, - 0x9a, 0xcf, 0x8a, 0xbc, 0x4d, 0x3e, 0xbf, 0x73, 0x63, 0x93, - 0x65, 0x19, 0xb5, 0x4b, 0x68, 0xa1, 0x63, 0xd5, 0xca, 0x21, - 0x21, 0x9b, 0xd0, 0xf6, 0xf7, 0xe3, 0x1d, 0xcd, 0x9, 0x59, - 0x5b, 0xce, 0xff, 00, 0x82, 0x5f, 0xa0, 0xb7, 0x77, 0xf2, - 0xb7, 0xe7, 0xfe, 0x67, 0x9b, 0xfc, 0x37, 0x54, 0x93, 0xc6, - 0x3e, 0x3e, 0xb9, 0x9c, 0x2f, 0xdb, 0xff, 00, 0xb5, 0xbc, - 0xa6, 0x27, 0xef, 0x8, 0x55, 0x7f, 0x77, 0xf8, 0x63, 0x35, - 0x52, 0xde, 0xde, 0xde, 0xf, 0xda, 0x4a, 0xed, 0xa0, 0x44, - 0x57, 0x97, 0x42, 0x12, 0x4d, 0xb7, 0x1c, 0xbe, 0xf0, 0x32, - 0x7d, 0xf0, 0x16, 0xb7, 0xb5, 0xef, 0x1, 0x5c, 0x5d, 0x78, - 0x85, 0xfc, 0x41, 0xe1, 0xbd, 0x7e, 0x7d, 0x3, 0x55, 0x9d, - 0x4, 0x77, 0x52, 0x25, 0xba, 0xcf, 0x15, 0xc2, 0x81, 0x80, - 0x5a, 0x36, 0x20, 0x6e, 0x1c, 0x61, 0xbd, 0x7, 0x4e, 0xf5, - 0x5f, 0xc3, 0x7f, 0xd, 0x5b, 0x41, 0xf1, 0xab, 0xf8, 0x9e, - 0x6d, 0x76, 0xe3, 0x50, 0xbc, 0x9e, 0xcc, 0xc1, 0x74, 0x67, - 0x8b, 0xd, 0x2c, 0xa5, 0x81, 0x32, 0x2, 0x1b, 0xa, 0xb8, - 0x1, 0x42, 0x1, 0x80, 00, 0xe6, 0x88, 0x7d, 0x9b, 0xf4, - 0x56, 0xfc, 0x1a, 0xfe, 0xbf, 0xa6, 0x39, 0x7d, 0xaf, 0x37, - 0x7f, 0xc6, 0xe5, 0x3f, 0x82, 0xca, 0x8f, 0xe1, 0x8d, 0x56, - 0xea, 0x4c, 0x1d, 0x42, 0x7d, 0x5e, 0xe4, 0xde, 0x12, 0x72, - 0xde, 0x60, 0x23, 0x83, 0xf8, 0x63, 0xf3, 0xaa, 0xf6, 0x56, - 0x56, 0xf7, 0x1f, 0x1b, 0xbc, 0x57, 0xa7, 0xc6, 0x8a, 0xd6, - 0x77, 0xba, 0x34, 0x7f, 0x6e, 0x41, 0xf7, 0x4c, 0x87, 0xa, - 0x32, 0x3d, 0x4a, 0x13, 0xf9, 0xd6, 0xad, 0xff, 00, 0xc3, - 0xcb, 0xfb, 0x7d, 0x76, 0xef, 0x56, 0xf0, 0x97, 0x8a, 0x2e, - 0x3c, 0x3f, 0x25, 0xfb, 0x17, 0xbd, 0x83, 0xec, 0xa9, 0x75, - 0xc, 0xaf, 0xc7, 0xce, 0x11, 0xc8, 0xa, 0xdd, 0x72, 0x79, - 0xce, 0x7b, 0x77, 0xd7, 0xf0, 0x8f, 0x83, 0x2d, 0x7c, 0x29, - 0x15, 0xd4, 0xc6, 0xee, 0xe3, 0x50, 0xd5, 0x2f, 0x99, 0x64, - 0xbd, 0xbf, 0xb9, 0x39, 0x79, 0x98, 0xe, 0xc3, 0xf8, 0x54, - 0x73, 0x81, 0xce, 0x33, 0xd4, 0xd2, 0x4a, 0xe9, 0x5f, 0xa2, - 0xb7, 0xe1, 0x6f, 0xbb, 0xa8, 0x36, 0xd3, 0x76, 0xea, 0xef, - 0xf8, 0xdf, 0xfe, 0x1, 0xe5, 0x3a, 0x63, 0xb6, 0xb3, 0xe1, - 0xdf, 0xa, 0x78, 0x6, 0xec, 0xf9, 0x92, 0x5b, 0x6b, 0x93, - 0xdb, 0x5e, 0xa9, 0x19, 0xd, 0xd, 0xae, 0x5f, 0x4, 0x1e, - 0xc4, 0x32, 0xe, 0x7d, 0x2a, 0x3d, 0x3d, 0x9b, 0x52, 0xd0, - 0xfc, 0x35, 0xf0, 0xf4, 0xc9, 0xba, 0x4b, 0x5f, 0x11, 0x4f, - 0x5, 0xd0, 0xc6, 0x73, 0x5, 0xbb, 0x19, 0xe, 0x7d, 0x88, - 0x75, 0xfc, 0xab, 0xd3, 0x34, 0xef, 0x87, 0xb6, 0xda, 0x77, - 0xc4, 0xad, 0x43, 0xc6, 0x9, 0x7a, 0xce, 0x6e, 0xe2, 0x2a, - 0xb6, 0x86, 0x3c, 0x8, 0xdc, 0x85, 0xc, 0xe1, 0xb7, 0x73, - 0x9d, 0x9d, 0x31, 0xde, 0x9b, 0xa6, 0x7c, 0x3a, 0xb5, 0xd3, - 0x7e, 0x26, 0x6a, 0x7e, 0x33, 0x5b, 0xc2, 0xef, 0x79, 0x16, - 0xc5, 0xb5, 0xf2, 0xb0, 0x23, 0x62, 0x14, 0x33, 0x6e, 0xdd, - 0xce, 0x76, 0x9e, 0x30, 0x3a, 0x9a, 0xa8, 0xbd, 0x53, 0x7e, - 0xaf, 0xd5, 0x5a, 0xdf, 0x97, 0xe2, 0x29, 0x25, 0x66, 0x97, - 0xa2, 0xf4, 0x77, 0xff, 00, 0x3f, 0xc0, 0xc6, 0xbb, 0x86, - 0x29, 0x7f, 0x68, 0xdb, 0x6, 0x78, 0xd5, 0x9a, 0x2d, 0x9, - 0x9e, 0x32, 0x47, 0xdd, 0x6f, 0x31, 0x86, 0x47, 0xe0, 0x48, - 0xfc, 0x69, 0xde, 0x31, 0xc2, 0x7c, 0x69, 0xf0, 0x3, 0xa8, - 0x1, 0x99, 0x2f, 0x14, 0x9c, 0x72, 0x47, 0x97, 0xd3, 0xf5, - 0x3f, 0x9d, 0x74, 0xf2, 0x78, 0x4b, 0x7f, 0xc4, 0x68, 0xbc, - 0x5b, 0xf6, 0xec, 0x79, 0x7a, 0x79, 0xb2, 0xfb, 0x2f, 0x95, - 0xd7, 0x2d, 0xbb, 0x76, 0xfc, 0xfe, 0x98, 0xfc, 0x69, 0x35, - 0xaf, 0x8, 0xff, 00, 0x6b, 0xf8, 0xcf, 0xc3, 0xfe, 0x21, - 0xfb, 0x77, 0x95, 0xfd, 0x90, 0x26, 0xfd, 0xc7, 0x95, 0xbb, - 0xcd, 0xf3, 0x17, 0x1f, 0x7b, 0x70, 0xdb, 0x8f, 0xa1, 0xa5, - 0xd, 0x1c, 0x6f, 0xd2, 0xff, 00, 0xaf, 0xf9, 0x8e, 0x7a, - 0xf3, 0x5b, 0xaa, 0x5f, 0x92, 0x38, 0x9b, 0x39, 0x27, 0x87, - 0xe2, 0x4f, 0xc4, 0xf9, 0x2d, 0x73, 0xf6, 0x84, 0xd3, 0xa1, - 0x68, 0xb1, 0xd7, 0x70, 0x84, 0xe3, 0xf5, 0xae, 0x93, 0xe0, - 0xfc, 0x36, 0xb1, 0x7c, 0x2c, 0xd0, 0xcd, 0xa6, 0xd2, 0x24, - 0x89, 0x9e, 0x46, 0x7, 0x39, 0x90, 0xbb, 0x6e, 0xcf, 0xbe, - 0x72, 0x3f, 0xa, 0xd2, 0xd2, 0xbc, 0x22, 0x34, 0xcf, 0x1b, - 0x6b, 0xde, 0x22, 0x37, 0xbe, 0x68, 0xd5, 0x92, 0x14, 0xfb, - 0x3f, 0x93, 0x8f, 0x2b, 0x62, 0xe3, 0xef, 0x64, 0xee, 0xcf, - 0xd0, 0x57, 0x3e, 0x7e, 0x1a, 0x6a, 0xfa, 0x54, 0xd7, 0x51, - 0x78, 0x47, 0xc6, 0x77, 0x5a, 0x1e, 0x99, 0x74, 0xc5, 0xde, - 0xc5, 0xac, 0xd2, 0xe5, 0x63, 0x73, 0x9c, 0x98, 0xd9, 0x88, - 0x28, 0x39, 0xe8, 0x39, 0xcf, 0x7e, 0x98, 0x51, 0xd2, 0x29, - 0x79, 0x2f, 0xc1, 0xbf, 0xf3, 0x1c, 0xb5, 0x95, 0xfc, 0xff, - 00, 0x45, 0xfe, 0x46, 0x6, 0x8b, 0xa9, 0xe9, 0x9e, 0x1d, - 0x9f, 0xe2, 0x8c, 0xf7, 0x76, 0xa9, 0x73, 0xa1, 0x5b, 0x5e, - 0xab, 0x9b, 0x62, 0xa1, 0x92, 0x49, 0x58, 0x10, 0xe9, 0x82, - 0x31, 0xcb, 0x6d, 0x18, 0xfd, 0x2b, 0x46, 0x26, 0xf8, 0x91, - 0xaa, 0x78, 0x6b, 0xcc, 0x1f, 0xf0, 0x8c, 0xf8, 0x67, 0x45, - 0x7b, 0x72, 0xe8, 0xb1, 0x42, 0xf3, 0x5c, 0x5a, 0xc0, 0x14, - 0x95, 0x5d, 0xa7, 0xf7, 0x47, 0xe5, 00, 0x1e, 0x98, 0x7, - 0xa0, 0x23, 0x15, 0xd4, 0x59, 0x7c, 0x3c, 0xd0, 0xec, 0xbc, - 0x1b, 0x7b, 0xe1, 0x95, 0x17, 0x32, 0xda, 0xdf, 0x6f, 0x6b, - 0xab, 0x89, 0x65, 0xdd, 0x3c, 0xb2, 0x37, 0x59, 0xb, 0x63, - 0xef, 0x70, 0x3b, 0x63, 0x8e, 0x9d, 0x6b, 0xe, 0xdf, 0xe1, - 0x9e, 0xb7, 0x25, 0x82, 0x68, 0xda, 0xbf, 0x8e, 0xf5, 0xb, - 0xdf, 0xf, 0xa2, 0xf9, 0x7f, 0x61, 0x8a, 0xd5, 0x20, 0x91, - 0xd0, 0x74, 0x47, 0x98, 0x12, 0xcc, 0xb8, 0xe0, 0x8e, 0x32, - 0x3d, 0x29, 0x35, 0xa7, 0x2f, 0x92, 0x5f, 0x72, 0x4, 0xf5, - 0xe6, 0xf3, 0x6f, 0xfc, 0xbf, 0xe0, 0x9e, 0x79, 0x6b, 0x87, - 0xfd, 0x9e, 0x7c, 0x33, 0x4, 0xd8, 0xfb, 0x14, 0xda, 0xd2, - 0x47, 0x77, 0x93, 0x81, 0xe5, 0x79, 0xce, 0x4e, 0x7d, 0xb2, - 0x5, 0x7a, 0xe7, 0xc4, 0xdb, 0x5b, 0x59, 0x7e, 0x17, 0xeb, - 0xf1, 0x4d, 0x1c, 0x7e, 0x54, 0x76, 0x4e, 0xd1, 0x82, 0x6, - 0x15, 0x94, 0x65, 0x31, 0xef, 0x90, 0x31, 0x50, 0x68, 0x7f, - 0xd, 0xec, 0x74, 0xff, 00, 0x87, 0xf3, 0x78, 0x3b, 0x52, - 0xb9, 0x3a, 0x8d, 0x84, 0x8f, 0x21, 0x57, 0xf2, 0xfc, 0xb6, - 0x40, 0xcd, 0xb8, 0x63, 0x93, 0xf3, 0x29, 0xe4, 0x1f, 0xd2, - 0xb1, 0xef, 0x3e, 0x15, 0xeb, 0x5a, 0xae, 0x8f, 0x36, 0x8b, - 0xaa, 0xf8, 0xee, 0xfa, 0xf7, 0x49, 0x11, 0xb2, 0xda, 0xdb, - 0xbd, 0xa2, 0x2b, 0x23, 0x7f, 0xcb, 0x33, 0x2c, 0x81, 0xb7, - 0x4a, 0x17, 0xae, 0xe, 0x1, 0x20, 0x1e, 0x31, 0x8a, 0xaa, - 0x9e, 0xf7, 0x32, 0x5d, 0x75, 0xfc, 0x17, 0xf9, 0xa, 0x1a, - 0x34, 0xdf, 0x4f, 0xf3, 0x6f, 0xf5, 0x31, 0xed, 0xfc, 0x3b, - 0x77, 0xaa, 0xe8, 0x3e, 0x3, 0xd4, 0xfc, 0x3b, 0xaf, 0x58, - 0x58, 0x78, 0x9e, 0xc3, 0x4b, 0x43, 0x5, 0xad, 0xdb, 0x2, - 0xb7, 0x10, 0xb2, 0xa8, 0x6c, 0xa8, 0xcb, 0x60, 0xd, 0xdc, - 0x85, 0x3d, 0x7a, 0x83, 0x82, 0x34, 0xec, 0x3c, 0x57, 0xac, - 0xd9, 0xf8, 0xbf, 0x48, 0xb1, 0xf1, 0xf7, 0x84, 0x2c, 0x2d, - 0xaf, 0xae, 0x26, 0x92, 0xd, 0x3b, 0x58, 0xb4, 0x2b, 0x22, - 0x6, 0xe0, 0x6d, 0x50, 0x4b, 0x32, 0x6, 0x7, 0xa9, 0x60, - 0x4e, 0x47, 0xcb, 0xd7, 0x1a, 0xf7, 0xbf, 0xc, 0xe2, 0xb8, - 0xd0, 0xfc, 0x3f, 0xd, 0xae, 0xaf, 0x3d, 0x8e, 0xb5, 0xa1, - 0x42, 0xb1, 0x59, 0xea, 0x90, 0x46, 0x33, 0xc0, 00, 0x86, - 0x8c, 0x9c, 0x32, 0x9c, 0x7d, 0xdc, 0xfb, 0x67, 0x4, 0x82, - 0xfd, 0x2f, 0xc0, 0x3a, 0x83, 0x6b, 0xd6, 0x7a, 0xcf, 0x8a, - 0x7c, 0x4f, 0x3e, 0xbf, 0x73, 0x60, 0x49, 0xb2, 0x8f, 0xec, - 0x91, 0xdb, 0x45, 0x13, 0x11, 0xcb, 0x14, 0x4c, 0xee, 0x6e, - 0x98, 0x3c, 0x63, 0xdf, 0x8c, 0x5b, 0x6b, 0x9d, 0xbe, 0x97, - 0x7f, 0x8f, 0x62, 0x6d, 0xee, 0xf9, 0xdb, 0xfa, 0xb9, 0xdc, - 0xd7, 0x98, 0x7c, 0x25, 0xb7, 0xb4, 0x1a, 0xd7, 0x8e, 0x6e, - 0x15, 0x53, 0xed, 0x87, 0x5c, 0x99, 0x24, 0x6f, 0xe2, 0xf2, - 0xc1, 0x25, 0x47, 0xd3, 0x25, 0xab, 0xd3, 0xeb, 0xc3, 0x3c, - 0x15, 0xe1, 0x6d, 0x4f, 0x54, 0xf1, 0x7, 0x8c, 0xb5, 0x4d, - 0xb, 0xc4, 0x97, 0x1a, 0x26, 0xa0, 0x9a, 0xd4, 0xf0, 0x48, - 0xeb, 0x6e, 0x97, 0x11, 0x4b, 0x1e, 0x77, 0x61, 0xa3, 0x6e, - 0x37, 0x2, 0x78, 0x6c, 0xf1, 0x92, 0x3b, 0xd4, 0x2f, 0x8b, - 0xe4, 0xff, 00, 0x34, 0x5b, 0xf8, 0x7e, 0x6b, 0xf2, 0x66, - 0xae, 0xa4, 0xf3, 0xd9, 0x7c, 0x58, 0xf1, 0x93, 0x69, 0x43, - 0x6c, 0x8f, 0xe1, 0x93, 0x3c, 0xbb, 0x38, 0xfd, 0xfa, 0xf0, - 0x84, 0xf3, 0xd7, 0x15, 0x53, 0xe1, 0xc2, 0x7c, 0x44, 0x4f, - 00, 0xe9, 0x47, 0xc3, 0xdf, 0xf0, 0x86, 0xff, 00, 0x66, - 0xb4, 0x6c, 0xd1, 0x9b, 0x8f, 0xb4, 0xf9, 0xa4, 0xee, 0x3b, - 0xb7, 0xed, 0xe3, 0x76, 0xec, 0xe7, 0x15, 0xe8, 0x5e, 0x12, - 0xf0, 0x65, 0xbf, 0x86, 0x22, 0xbd, 0x9a, 0x6b, 0xc9, 0xf5, - 0x3d, 0x53, 0x50, 0x60, 0xf7, 0xd7, 0xd7, 0x38, 0xdd, 0x31, - 0x3, 00, 0x5, 0xe8, 0xaa, 0x39, 0xc2, 0xf3, 0x8c, 0xf5, - 0xe9, 0x58, 0x31, 0xfc, 0x36, 0xd6, 0x34, 0x4b, 0x8b, 0x84, - 0xf0, 0x7f, 0x8c, 0xee, 0x34, 0x4d, 0x36, 0x77, 0x32, 0x9b, - 0x19, 0x2c, 0x63, 0xbb, 0x48, 0xdc, 0x93, 0x9f, 0x2f, 0x79, - 0x1b, 0x17, 0x9e, 0x9f, 0xa9, 0xec, 0x96, 0x9a, 0x79, 0x7e, - 0xad, 0xfe, 0xbf, 0x80, 0x9e, 0xba, 0xf9, 0xfe, 0x89, 0x7e, - 0x9f, 0x89, 0x95, 0x7, 0x85, 0xf5, 0xff, 00, 0xe, 0xf8, - 0x1f, 0xc7, 0xf7, 0x1a, 0xe4, 0x9a, 0x5e, 0xed, 0x4e, 0x19, - 0xae, 0x96, 0x2d, 0x34, 0xc9, 0xe5, 0xa3, 0x98, 0xdb, 0x7f, - 0xe, 0x1, 0x19, 0xe3, 0xd6, 0xba, 0xef, 0x86, 0x31, 0x24, - 0x5f, 0xc, 0xbc, 0x3a, 0xb1, 0xa8, 0x50, 0x6c, 0x91, 0x88, - 0x3, 0xb9, 0xe4, 0x9f, 0xcc, 0x9a, 0x8e, 0xc7, 0xe1, 0xf5, - 0x96, 0x9b, 0xe1, 0x1d, 0x5f, 0x45, 0xb7, 0xbd, 0xb9, 0x92, - 0xeb, 0x56, 0x8e, 0x41, 0x77, 0xa8, 0xdd, 0x1f, 0x36, 0x59, - 0x64, 0x75, 0x2b, 0xbd, 0xb9, 0x19, 0x3, 0x3c, 0xe, 0x3e, - 0xb9, 0xc9, 0xad, 0xbf, 0xd, 0x68, 0xdf, 0xf0, 0x8e, 0xf8, - 0x67, 0x4e, 0xd1, 0xfe, 0xd1, 0xf6, 0x8f, 0xb1, 0x40, 0xb0, - 0xf9, 0xbb, 0x36, 0x6f, 0xc0, 0xc6, 0x71, 0x93, 0x8f, 0xcc, - 0xd5, 0x6d, 0x75, 0xe9, 0xf8, 0x5c, 0x1f, 0x4f, 0x9f, 0xe3, - 0x62, 0x9f, 0x8f, 0x3f, 0xe4, 0x9f, 0xf8, 0x87, 0xfe, 0xc1, - 0xd3, 0xff, 00, 0xe8, 0x6, 0xb9, 0x5d, 0x1e, 0xda, 0x4, - 0xfd, 0x9d, 0x44, 0x4b, 0x12, 0x2a, 0x36, 0x83, 0x2b, 0x95, - 0x3, 00, 0xb1, 0x8d, 0x98, 0x9f, 0xa9, 0x27, 0x35, 0xdd, - 0xeb, 0xda, 0x5f, 0xf6, 0xdf, 0x87, 0xf5, 0x1d, 0x2b, 0xce, - 0xf2, 0x7e, 0xd9, 0x6f, 0x24, 0x1e, 0x6e, 0xdd, 0xdb, 0x37, - 0x29, 0x19, 0xc6, 0x46, 0x71, 0x9e, 0x99, 0xac, 0xcb, 0x4f, - 0xa, 0xfd, 0x97, 0xe1, 0xe0, 0xf0, 0xa7, 0xdb, 0x77, 0x63, - 0x4f, 0x6b, 0x1f, 0xb5, 0x79, 0x58, 0xea, 0x85, 0x77, 0x6c, - 0xcf, 0xbe, 0x71, 0x9f, 0xc6, 0xa2, 0x49, 0xb8, 0xc9, 0x77, - 0xb7, 0xea, 0x5c, 0x5a, 0x52, 0x8b, 0x7d, 0x1b, 0xfd, 0xe, - 0x63, 0x45, 0x82, 0x28, 0x7f, 0x67, 0x60, 0x91, 0xc6, 0x8a, - 0xad, 0xa0, 0xca, 0xe4, 0x1, 0xc1, 0x63, 0x1b, 0x12, 0x7e, - 0xa4, 0x92, 0x6b, 0x92, 0x50, 0xb7, 0x1e, 0x18, 0xf8, 0x43, - 0x6d, 0x78, 0x73, 0x61, 0x25, 0xda, 0x99, 0x3, 0x1f, 0x94, - 0xba, 0x8f, 0xdd, 0x83, 0xf8, 0xe4, 0x62, 0xbd, 0x52, 0xd3, - 0xc2, 0xbf, 0x65, 0xf8, 0x78, 0x3c, 0x29, 0xf6, 0xdd, 0xd8, - 0xd3, 0xda, 0xc7, 0xed, 0x5e, 0x56, 0x3a, 0xa1, 0x5d, 0xdb, - 0x33, 0xef, 0x9c, 0x67, 0xf1, 0xaa, 0x1f, 0xf0, 0xae, 0xb4, - 0xeb, 0x9f, 0x87, 0xfa, 0x7f, 0x85, 0x35, 0x1b, 0x89, 0x66, - 0x5b, 0x15, 0x5f, 0x26, 0xf2, 0x11, 0xe5, 0x48, 0x92, 0x2e, - 0x71, 0x22, 0xf2, 0x76, 0x9e, 0x7d, 0xea, 0xe4, 0xfd, 0xf7, - 0x25, 0xdd, 0x3f, 0xb9, 0xb3, 0x34, 0xbd, 0xc5, 0x17, 0xd9, - 0xfe, 0x29, 0xd, 0xf8, 0xb5, 0xd, 0xac, 0xdf, 0xb, 0x75, - 0xef, 0xb5, 0x85, 0xd8, 0x90, 0x6f, 0x42, 0xdd, 0xa4, 0xc, - 0x36, 0x63, 0xdf, 0x76, 0x7, 0xe3, 0x5c, 0x86, 0xb2, 0xaf, - 0x7d, 0xe2, 0x9f, 0x84, 0x8d, 0xa8, 0x20, 0x92, 0x66, 0x89, - 0xa4, 0x90, 0x48, 0x33, 0xfb, 0xc1, 0x12, 0x36, 0x7a, 0x75, - 0xc, 0x33, 0x5b, 0x9f, 0xf0, 0xac, 0xf5, 0x7d, 0x59, 0xad, - 0xad, 0xbc, 0x5b, 0xe3, 0x4b, 0xbd, 0x6f, 0x4a, 0xb7, 0x2a, - 0xeb, 0x62, 0xb6, 0x89, 0x6c, 0x24, 0x65, 0x23, 0x1e, 0x6b, - 0xa9, 0x25, 0xc7, 0x1d, 0xf, 0x39, 0xe7, 0x3e, 0xbd, 0xe, - 0xb9, 0xe1, 0x11, 0xac, 0x78, 0xab, 0xc3, 0xba, 0xda, 0xde, - 0x88, 0x6, 0x8c, 0xd2, 0xb0, 0x80, 0x43, 0xbb, 0xcd, 0xde, - 0xa0, 0x63, 0x39, 0x1b, 0x71, 0x8f, 0x43, 0x44, 0x74, 0x92, - 0x7e, 0x6b, 0xf0, 0xbf, 0xf9, 0xfe, 0x3, 0x7a, 0xa6, 0xbc, - 0x9f, 0xe3, 0xff, 00, 0xc, 0x73, 0x3f, 0x17, 0xb0, 0xb3, - 0xf8, 0x2a, 0x40, 0x6, 0xf5, 0xf1, 0xd, 0xbe, 0x1b, 0x1c, - 0x8e, 0xbf, 0xe0, 0x3f, 0x2a, 0x3c, 0x57, 0xff, 00, 0x25, - 0xcb, 0xc0, 0x9f, 0xf5, 0xc2, 0xf3, 0xff, 00, 0x45, 0x9a, - 0xe9, 0xbc, 0x61, 0xe1, 0x1f, 0xf8, 0x4a, 0xce, 0x8c, 0x7e, - 0xdd, 0xf6, 0x5f, 0xec, 0xdd, 0x46, 0x3b, 0xef, 0xf5, 0x5b, - 0xfc, 0xcd, 0x99, 0xf9, 0x7e, 0xf0, 0xc6, 0x73, 0xd7, 0x9f, - 0xa5, 0x55, 0xf1, 0x8f, 0x82, 0x6e, 0x7c, 0x47, 0xaa, 0xe9, - 0x3a, 0xc6, 0x97, 0xad, 0xbe, 0x8f, 0xaa, 0xe9, 0x86, 0x41, - 0x15, 0xc0, 0xb6, 0x59, 0xc1, 0x57, 0x18, 0x60, 0x51, 0x88, - 0x19, 0xf7, 0xf7, 0x3c, 0x7a, 0x11, 0x76, 0xb3, 0xf3, 0x7f, - 0x8c, 0x6c, 0xf, 0x54, 0xd7, 0x97, 0xea, 0xcc, 0x1f, 0xa, - 0x43, 0x13, 0x7c, 0x74, 0xf1, 0xc4, 0xed, 0x1a, 0x99, 0x52, - 0xde, 0xd5, 0x55, 0xc8, 0xe4, 0x2, 0x83, 0x20, 0x7d, 0x76, - 0x8f, 0xca, 0x9c, 0x98, 0x4f, 0xda, 0x3a, 0x5d, 0xa0, 0xd, - 0xfe, 0x1e, 0x1b, 0xb0, 0x3a, 0xfe, 0xf7, 0xff, 00, 0xac, - 0x3f, 0x2a, 0xe8, 0xf4, 0x2f, 0x7, 0xc9, 0xa3, 0xf8, 0xbf, - 0x59, 0xf1, 0x4, 0xba, 0x97, 0xda, 0xa4, 0xd4, 0xe2, 0x82, - 0x37, 0x8f, 0xc8, 0xd9, 0xb0, 0xc6, 0xbb, 0x4b, 0x67, 0x71, - 0xce, 0x7a, 0xe3, 0x3, 0x14, 0xf1, 0xe1, 0x1f, 0xf8, 0xb8, - 0xe7, 0xc5, 0xdf, 0x6e, 0xeb, 0xa7, 0x7d, 0x87, 0xec, 0xbe, - 0x57, 0xfb, 0x7b, 0xb7, 0x6f, 0xdd, 0xf8, 0x63, 0x1f, 0x8d, - 0x11, 0xd3, 0x95, 0x3e, 0x89, 0xfe, 0x4f, 0xfc, 0xc2, 0x5a, - 0xf3, 0x3e, 0xf6, 0xfd, 0xe, 0x9a, 0x8a, 0x28, 0xa4, 0x1, - 0x48, 0x7a, 0x52, 0xd1, 0x40, 0x15, 0x2e, 0x21, 0x49, 0xa2, - 0x78, 0xa4, 0x50, 0xc8, 0xe0, 0x82, 0xd, 0x79, 0x9e, 0xb7, - 0xf0, 0xd8, 0xfd, 0xa0, 0xcd, 0xa6, 0xbf, 0xee, 0xc9, 0xc9, - 0x8d, 0xbb, 0x7d, 0x2b, 0xd5, 0x59, 0x73, 0x50, 0xb4, 0x75, - 0x95, 0x5a, 0x30, 0xaa, 0xad, 0x24, 0x63, 0x5a, 0x84, 0x2b, - 0x2b, 0x4d, 0x1e, 0x2a, 0xfe, 0x12, 0x31, 0xf1, 0x2c, 0x7b, - 0xf, 0xa1, 0x15, 0x9, 0xf0, 0xa2, 0x36, 0x70, 0x47, 0xd3, - 0x69, 0xaf, 0x68, 0x7b, 0x70, 0xc7, 0x95, 0x7, 0xea, 0x2a, - 0x7, 0xb3, 0x8d, 0x8e, 0x7c, 0xb5, 0xcf, 0xd2, 0xb9, 0x9e, - 0x2, 0x1d, 0x19, 0xc6, 0xf2, 0xca, 0x7d, 0x19, 0xe3, 0x2d, - 0xe1, 0x31, 0x8f, 0xe1, 0xa8, 0x9f, 0xc2, 0x64, 0x1e, 0x8b, - 0xf9, 0xd7, 0xb2, 0x3e, 0x9b, 0x3, 0xf5, 0x85, 0x7f, 0x2a, - 0x89, 0xb4, 0x9b, 0x42, 0x30, 0x6d, 0xd0, 0xfe, 0x15, 0x3f, - 0xd9, 0xf1, 0xee, 0x43, 0xca, 0xe3, 0xdc, 0xf1, 0xb6, 0xf0, - 0xa4, 0x99, 0xf9, 0x40, 0x3f, 0xf0, 0x2a, 0x8c, 0xf8, 0x52, - 0x6f, 0x4a, 0xf6, 0x43, 0xa3, 0x5a, 0x9f, 0xf9, 0x60, 0xa3, - 0xe8, 0x29, 0x8d, 0xa2, 0x5a, 0xff, 00, 0xcf, 0x3c, 0x7d, - 0x2a, 0x5e, 0x5e, 0xbb, 0x92, 0xf2, 0xb5, 0xdc, 0xf1, 0xa6, - 0xf0, 0xbc, 0xe3, 0xf8, 0x1a, 0xa2, 0x6f, 0xc, 0xdc, 0xf, - 0xf9, 0x66, 0xdf, 0x95, 0x7b, 0x31, 0xd0, 0x6d, 0x8e, 0x46, - 0xd7, 0xc7, 0xd6, 0xa1, 0x3e, 0x1f, 0xb6, 0x1d, 0x3c, 0xc0, - 0x7f, 0xde, 0xa9, 0x79, 0x7b, 0xee, 0x4b, 0xca, 0xdf, 0x73, - 0xc6, 0x8f, 0x87, 0x6e, 0x41, 0xfb, 0xa4, 0x7e, 0x14, 0xc6, - 0xd0, 0x27, 0x4, 0xfc, 0xa7, 0xf2, 0xaf, 0x65, 0x6d, 0xa, - 0x2c, 0xf0, 0xcc, 0x2a, 0x26, 0xd0, 0x6, 0x7f, 0xd6, 0x9f, - 0xfb, 0xe6, 0xa7, 0xfb, 0x3e, 0x7d, 0xc8, 0xfe, 0xcb, 0x9f, - 0x73, 0xc6, 0xdb, 0x44, 0x9c, 0xf, 0xb8, 0x7f, 0x2a, 0x8c, - 0xe8, 0xd3, 0x8e, 0x89, 0x5e, 0xc8, 0x7c, 0x3f, 0x81, 0xcc, - 0xb9, 0xfa, 0xa0, 0xa8, 0xdb, 0x40, 0xc8, 0xea, 0x84, 0xff, - 00, 0xbb, 0x52, 0xf0, 0x15, 0x9, 0x79, 0x6d, 0x5e, 0x87, - 0x8e, 0x1d, 0x22, 0x7f, 0xee, 0x53, 0x3f, 0xb2, 0xe5, 0xfe, - 0xe5, 0x7b, 0x13, 0x78, 0x79, 0x8f, 0xf0, 0xc4, 0x7f, 0xa, - 0x8c, 0xf8, 0x70, 0xff, 00, 0xcf, 0x38, 0x69, 0x3c, 0x15, - 0x52, 0x5e, 0x5d, 0x58, 0xf1, 0xe3, 0xa7, 0x4b, 0xff, 00, - 0x3c, 0xcd, 0x34, 0xe9, 0xf2, 0xf, 0xf9, 0x66, 0x6b, 0xd7, - 0x8f, 0x87, 0x6, 0x3f, 0xd4, 0x47, 0x9f, 0x6a, 0x85, 0xfc, - 0x3a, 0xb9, 0xff, 00, 0x8f, 0x6e, 0x3d, 0x8d, 0x4f, 0xd5, - 0x2a, 0xae, 0x84, 0xfd, 0x42, 0xba, 0xe8, 0x79, 0x29, 0xb1, - 0x90, 0x7f, 0x3, 0x7e, 0x54, 0xd3, 0x68, 0xe3, 0xf8, 0x4d, - 0x7a, 0xbb, 0x78, 0x6d, 0x73, 0xcd, 0xab, 0x7e, 0x75, 0x11, - 0xf0, 0xdc, 0x59, 0x39, 0xb7, 0x70, 0x6a, 0x5e, 0x1a, 0xaa, - 0xe8, 0x4b, 0xc1, 0xd7, 0x5d, 0xf, 0x2c, 0xfb, 0x33, 0x8e, - 0xcd, 0x49, 0xe4, 0x38, 0xee, 0x6b, 0xd3, 0xdf, 0xc3, 0x70, - 0x1, 0x9f, 0x2d, 0xf3, 0xdc, 0x62, 0xa1, 0x6f, 0xe, 0x5b, - 0x9e, 0xcf, 0xff, 00, 0x7c, 0x52, 0x74, 0x2a, 0xae, 0x84, - 0xbc, 0x2d, 0x65, 0xd1, 0xfd, 0xc7, 0x9b, 0x79, 0x52, 0xf, - 0xe2, 0x6a, 0x36, 0x4a, 0x39, 0xe, 0xd5, 0xe8, 0xbf, 0xf0, - 0x8c, 0xc0, 0xc7, 0xbf, 0xe2, 0xb5, 0x13, 0x78, 0x5e, 0x1f, - 0xef, 0xf, 0xc4, 0x54, 0xfb, 0x2a, 0x8b, 0xa1, 0x3e, 0xc6, - 0xaa, 0xe8, 0x70, 0x1b, 0xae, 0x7, 0xfc, 0xb4, 0x6f, 0xce, - 0x9d, 0xe7, 0x5d, 0xe, 0x92, 0xb7, 0xe7, 0x5d, 0xbb, 0x78, - 0x5a, 0x30, 0x32, 0x19, 0x3f, 0x1a, 0x61, 0xf0, 0xaa, 0x37, - 0x1, 0x93, 0xf3, 0xa5, 0xcb, 0x34, 0x4f, 0x25, 0x44, 0x71, - 0x82, 0xee, 0xf1, 0x7a, 0x4c, 0xff, 00, 0x9d, 0x3c, 0x6a, - 0x17, 0xcb, 0xd2, 0x67, 0xfc, 0xeb, 0xac, 0x6f, 0x9, 0xb7, - 0x6d, 0xbf, 0x81, 0xa8, 0xdb, 0xc2, 0x72, 0x72, 0x40, 0xfd, - 0x68, 0xf7, 0xc3, 0xf7, 0x88, 0xe6, 0x86, 0xaf, 0xa8, 0x2f, - 0x2, 0x56, 0xfc, 0xe9, 0x3f, 0xb6, 0xb5, 0x15, 0x24, 0x89, - 0xf, 0xbd, 0x74, 0x4d, 0xe1, 0x59, 0xb0, 0x7e, 0x43, 0xf9, - 0xd5, 0x1b, 0x8f, 0xe, 0x4e, 0x8a, 0xd8, 0x56, 0xc8, 0xf5, - 0x14, 0xd5, 0x49, 0xc4, 0xa5, 0x56, 0xa4, 0x4c, 0xf4, 0xd7, - 0xae, 0x9, 0x3e, 0x71, 0xdc, 0xf, 0xe9, 0x55, 0x75, 0x7b, - 0xb4, 0xba, 0x80, 0x32, 0x82, 00, 0xf5, 0xab, 0xb, 0xa2, - 0x5c, 0xcd, 0x26, 0xc4, 0x85, 0xdd, 0xbd, 0x85, 0x75, 0x5a, - 0xf, 0xc3, 0xf6, 0x91, 0xe3, 0x9f, 0x52, 0x38, 0x40, 0x73, - 0xe4, 0xfa, 0xfd, 0x6b, 0xb6, 0x8d, 0x5a, 0xb5, 0x57, 0x2d, - 0xb4, 0x3d, 0xc, 0x3d, 0x6a, 0xd5, 0xd3, 0x85, 0xb4, 0xee, - 0x53, 0xf8, 0x5d, 0xe1, 0x69, 0x85, 0xe9, 0xd6, 0xae, 0x50, - 0x2a, 0x1, 0xb6, 0x25, 0x3d, 0x4f, 0xbd, 0x7b, 0x3d, 0xb8, - 0xe4, 0x56, 0x7d, 0x95, 0xac, 0x76, 0xf1, 0x2c, 0x50, 0xa0, - 0x44, 0x51, 0x80, 00, 0xad, 0x6b, 0x78, 0xcf, 0xa5, 0x7a, - 0x30, 0x8f, 0x2a, 0xb1, 0xea, 0xc2, 0x1c, 0xb1, 0xb1, 0x76, - 0x11, 0xc5, 0x5f, 0x88, 0x61, 0x2a, 0xa4, 0x4b, 0xd2, 0xae, - 0x20, 0xc2, 0xd5, 0x16, 0x3a, 0x8a, 0x28, 0xa0, 0xf, 0x35, - 0x83, 0xfe, 0x43, 0x5a, 0xff, 00, 0xfd, 0x84, 0x9f, 0xff, - 00, 0x40, 0x4a, 0xed, 0x34, 0x7f, 0xf9, 0x5, 0x43, 0xff, - 00, 0x2, 0xff, 00, 0xd0, 0x8d, 0x71, 0x70, 0x7f, 0xc8, - 0x6b, 0x5f, 0xff, 00, 0xb0, 0x93, 0xff, 00, 0xe8, 0x9, - 0x5d, 0xa6, 0x8f, 0xff, 00, 0x20, 0xa8, 0x7f, 0xe0, 0x5f, - 0xfa, 0x11, 0xa0, 0xa, 0xbe, 0x8, 0xff, 00, 0x91, 0x42, - 0xc7, 0xfe, 0xda, 0x7f, 0xe8, 0xc6, 0xae, 0x82, 0xb9, 0xff, - 00, 0x4, 0x7f, 0xc8, 0xa1, 0x63, 0xff, 00, 0x6d, 0x3f, - 0xf4, 0x63, 0x57, 0x41, 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, - 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, 0x15, 0xcd, - 0xf8, 0x8b, 0xc7, 0xfe, 0x16, 0xf0, 0x9c, 0xc9, 0x6, 0xb5, - 0xac, 0xc1, 0x6d, 0x3b, 0x74, 0x85, 0x43, 0x49, 0x20, 0x1d, - 0x41, 0x2a, 0x80, 0x90, 0x3d, 0xc8, 0xc5, 0x4f, 0xe1, 0xcf, - 0x19, 0xf8, 0x77, 0xc5, 0xb1, 0xbb, 0xe8, 0x7a, 0xb4, 0x17, - 0x65, 0x33, 0xbe, 0x31, 0x94, 0x91, 0x47, 0xa9, 0x46, 0x1, - 0x80, 0xe7, 0xae, 0x31, 0x42, 0xd7, 0x60, 0x7a, 0x6e, 0x6e, - 0xd1, 0x45, 0x14, 00, 0x51, 0x45, 0x14, 00, 0x51, 0x45, - 0x14, 00, 0x51, 0x45, 0x14, 00, 0x51, 0x45, 0x14, 00, - 0x51, 0x45, 0x14, 00, 0x51, 0x45, 0x14, 00, 0x51, 0x45, - 0x14, 00, 0x51, 0x45, 0x14, 00, 0x51, 0x45, 0x14, 00, - 0x51, 0x45, 0x14, 00, 0x51, 0x45, 0x14, 00, 0x51, 0x45, - 0x14, 00, 0x51, 0x45, 0x14, 00, 0x51, 0x45, 0x14, 00, - 0x51, 0x45, 0x14, 00, 0x51, 0x45, 0x14, 00, 0x55, 0x6b, - 0x4d, 0x3a, 0xc7, 0x4f, 0x69, 0xda, 0xca, 0xca, 0xde, 0xd9, - 0xae, 0x24, 0x32, 0xcc, 0x61, 0x89, 0x50, 0xc8, 0xe7, 0xab, - 0x36, 0x7, 0x27, 0xdc, 0xd5, 0x9a, 0x28, 00, 0xa2, 0x8a, - 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, - 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, - 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, - 0xa2, 0x8a, 0x28, 00, 0xa4, 0xc5, 0x2d, 0x14, 00, 0xd6, - 0x50, 0x69, 0x86, 0x21, 0xef, 0x52, 0xd1, 0x40, 0x10, 0x18, - 0x45, 0x37, 0xca, 0xab, 0x34, 0x50, 0x5, 0x53, 0x17, 0x1c, - 0x52, 0x79, 0x3e, 0xd5, 0x6e, 0x8c, 0x50, 0x5, 0x33, 0x8, - 0xa6, 0x98, 0x47, 0xa5, 0x5d, 0xda, 0x29, 0x36, 0xf, 0x4a, - 00, 0xa0, 0x60, 0x1e, 0x94, 0xc3, 0x6e, 0x2b, 0x44, 0xa0, - 0xf4, 0xa4, 0x31, 0x83, 0xd8, 0xd0, 0x6, 0x71, 0xb7, 0x7, - 0xb0, 0xa6, 0xfd, 0x94, 0x7a, 0x56, 0x97, 0x94, 0x3d, 0xe9, - 0x3c, 0xb1, 0xeb, 0x40, 0x19, 0xa6, 0xd8, 0x7a, 0x53, 0x4d, - 0xaf, 0xb5, 0x6a, 0x79, 0x43, 0xd6, 0x93, 0xca, 0x1e, 0xb4, - 0x1, 0x96, 0x6d, 0x80, 0xed, 0x51, 0xb5, 0xb6, 0x3b, 0x56, - 0xbf, 0x93, 0xed, 0x4d, 0xf2, 0xf, 0xa5, 00, 0x63, 0x35, - 0xa9, 0xc7, 0x4a, 0x67, 0xd9, 0x7d, 0xab, 0x68, 0xdb, 0x93, - 0xfc, 0x34, 0xd3, 0x6c, 0xdf, 0xdd, 0x34, 0x1, 0x8a, 0x6d, - 0xbd, 0x5, 0x37, 0xec, 0xc7, 0xd2, 0xb6, 0xfe, 0xca, 0x7f, - 0xbb, 0x47, 0xd9, 0x4f, 0xf7, 0x28, 0x3, 0xc, 0xda, 0x67, - 0xf8, 0x41, 0xa8, 0xcd, 0x9a, 0x9c, 0xe5, 0x6, 0x7e, 0x95, - 0xbc, 0x6d, 0x18, 0xff, 00, 0x9, 0xfc, 0xa9, 0x3e, 0xc8, - 0x7f, 0xb8, 0x7f, 0x2a, 00, 0xe7, 0xda, 0xc6, 0x3c, 0x7f, - 0xab, 0x53, 0xf8, 0x53, 0x1a, 0xc2, 0x3c, 0x7f, 0xab, 0x5f, - 0xca, 0xb7, 0xda, 0xd7, 0x7, 0x91, 0x83, 0xe9, 0x51, 0x9b, - 0x6c, 0xd0, 0x7, 0x3e, 0xda, 0x74, 0x67, 0x92, 0x82, 0xa3, - 0xfe, 0xce, 0x8b, 0xfb, 0x9f, 0xad, 0x74, 0x6, 0xd7, 0x9e, - 0x94, 0x86, 0xd8, 0x7a, 0x52, 0xb2, 0x15, 0x91, 0xcf, 0x1d, - 0x32, 0x1f, 0xee, 0x63, 0xf1, 0xa4, 0xfe, 0xcb, 0x88, 0xfd, - 0xe5, 0x2d, 0xf5, 0xad, 0xf3, 0x6b, 0xed, 0x47, 0xd9, 0x7d, - 0xa9, 0x72, 0xc7, 0xb0, 0xb9, 0x23, 0xd8, 0xc6, 0x86, 0xc2, - 0x38, 0x8f, 0xee, 0xe2, 0x55, 0xf7, 0x2, 0xae, 0x47, 0x6e, - 0x73, 0xd2, 0xb4, 0x45, 0xaf, 0x3d, 0x2a, 0x64, 0xb7, 0x19, - 0xe9, 0x54, 0x51, 0x56, 0x28, 0x3d, 0xaa, 0xfc, 0x31, 0x62, - 0xa5, 0x8e, 0xdd, 0x87, 0xf0, 0x9a, 0x9d, 0x62, 0x23, 0xb6, - 0x28, 00, 0x8d, 0x2a, 0x61, 0xd2, 0x85, 0x18, 0x14, 0xb4, - 00, 0x51, 0x45, 0x14, 0x1, 0xe6, 0xb0, 0x7f, 0xc8, 0x6b, - 0x5f, 0xff, 00, 0xb0, 0x93, 0xff, 00, 0xe8, 0x9, 0x5d, - 0xa6, 0x8f, 0xff, 00, 0x20, 0xa8, 0x7f, 0xe0, 0x5f, 0xfa, - 0x11, 0xae, 0x2e, 0xf, 0xf9, 0xd, 0x6b, 0xff, 00, 0xf6, - 0x12, 0x7f, 0xfd, 0x1, 0x2b, 0xb4, 0xd1, 0xff, 00, 0xe4, - 0x15, 0xf, 0xfc, 0xb, 0xff, 00, 0x42, 0x34, 0x1, 0x57, - 0xc1, 0x1f, 0xf2, 0x28, 0x58, 0xff, 00, 0xdb, 0x4f, 0xfd, - 0x18, 0xd5, 0xd0, 0x57, 0x3f, 0xe0, 0x8f, 0xf9, 0x14, 0x2c, - 0x7f, 0xed, 0xa7, 0xfe, 0x8c, 0x6a, 0xe8, 0x28, 00, 0xae, - 0x23, 0xc5, 0xff, 00, 0x15, 0xbc, 0x35, 0xe0, 0xad, 0x62, - 0xdf, 0x4b, 0xd4, 0xda, 0xea, 0x4b, 0x99, 0x54, 0x3b, 0x8b, - 0x68, 0x83, 0x88, 0x54, 0x9c, 0x6, 0x7c, 0x91, 0xee, 0x70, - 0x32, 0x70, 0x3a, 0x74, 0xcf, 0x6f, 0x5e, 0x65, 0xe3, 0xff, - 00, 0x83, 0x56, 0x3e, 0x3a, 0xf1, 0x14, 0x1a, 0xc1, 0xd5, - 0x66, 0xb1, 0x90, 0x22, 0xc7, 0x70, 0x8b, 0x10, 0x90, 0x4a, - 0xaa, 0x78, 0xda, 0x49, 0x1b, 0x4e, 0x32, 0x33, 0xc8, 0xe9, - 0xc7, 0x5c, 0xa7, 0x7b, 0xab, 0xd, 0x5a, 0xce, 0xe7, 0xa4, - 0xdb, 0xdc, 0x43, 0x77, 0x6d, 0x15, 0xcd, 0xbc, 0x8b, 0x24, - 0x32, 0xa0, 0x78, 0xdd, 0x4f, 0xc, 0xa4, 0x64, 0x11, 0xf8, - 0x54, 0x95, 0x5e, 0xc6, 0xce, 0x1d, 0x3b, 0x4f, 0xb6, 0xb2, - 0xb7, 0x4, 0x41, 0x6f, 0x12, 0xc5, 0x18, 0x27, 0x24, 0x2a, - 0x8c, 0xe, 0x7e, 0x82, 0xac, 0x55, 0x3b, 0x5f, 0x42, 0x55, - 0xed, 0xa8, 0x56, 0x47, 0x8a, 0xb5, 0x76, 0xd0, 0x3c, 0x29, - 0xaa, 0xea, 0xc8, 0xa1, 0xa4, 0xb4, 0xb5, 0x92, 0x54, 0x53, - 0xd0, 0xb0, 0x53, 0x8c, 0xfe, 0x38, 0xad, 0x7a, 0xc8, 0xf1, - 0x4e, 0x90, 0x75, 0xff, 00, 0xa, 0xea, 0xba, 0x4a, 0xbe, - 0xc7, 0xbb, 0xb5, 0x92, 0x25, 0x63, 0xd9, 0x88, 0xe0, 0xfe, - 0x78, 0xa8, 0x9d, 0xf9, 0x5d, 0x8b, 0x85, 0xb9, 0x95, 0xce, - 0x6f, 0xe1, 0x7f, 0x86, 0x6d, 0x74, 0xef, 0xc, 0xda, 0x6b, - 0x97, 0x11, 0x9, 0xf5, 0xdd, 0x56, 0x11, 0x75, 0x79, 0x7d, - 0x30, 0xcc, 0xae, 0x64, 0xc3, 0x6d, 0xcf, 0x50, 0xa3, 0xe5, - 0xe0, 0x71, 0xc6, 0x6a, 0x87, 0xc5, 0x9d, 0x16, 0x2b, 0x2d, - 0x1b, 0xfe, 0x13, 0x5d, 0x2a, 0x24, 0xb7, 0xd7, 0xf4, 0x79, - 0x12, 0x75, 0xb9, 0x8d, 0x70, 0xd2, 0xc7, 0x90, 0xac, 0x8f, - 0x8f, 0xbc, 0xbb, 0x4f, 0x7e, 0xc0, 0x8e, 0xe6, 0xaf, 0xfc, - 0x2e, 0xf1, 0x2d, 0xbe, 0xa3, 0xe1, 0xab, 0x5d, 0xa, 0xe9, - 0xbe, 0xcd, 0xae, 0xe9, 0x31, 0xb, 0x5b, 0xbb, 0x19, 0x9b, - 0x12, 0xaf, 0x96, 0x2, 0xef, 0xc7, 0x52, 0xa4, 0x6d, 0xe7, - 0xa6, 0x4d, 0x50, 0xf8, 0xb3, 0xad, 0x45, 0x7b, 0xa3, 0x7f, - 0xc2, 0x15, 0xa5, 0x4a, 0x97, 0x1a, 0xfe, 0xb1, 0x22, 0x40, - 0xb6, 0xd1, 0xb6, 0x5a, 0x28, 0xf2, 0x19, 0x9d, 0xf1, 0xf7, - 0x57, 0x68, 0xef, 0xd8, 0x93, 0xd8, 0xd5, 0x54, 0xdf, 0xf7, - 0x7f, 0x2f, 0xd3, 0xe5, 0xfa, 0x13, 0x4b, 0x6f, 0x7f, 0xe7, - 0xfa, 0x8f, 0xf1, 0x8f, 0xc4, 0x6d, 0x4b, 0x40, 0xbc, 0xf0, - 0xa0, 0xd2, 0xf4, 0xb4, 0xbf, 0x8f, 0x5b, 0x46, 0x63, 0x6f, - 0x82, 0x25, 0x66, 0x2a, 0xa5, 0x15, 0x1b, 0x20, 0x2e, 0x4b, - 0x8c, 0x92, 0xe, 0x5, 0x32, 0x4f, 0x18, 0xf8, 0xcb, 0xc2, - 0xba, 0x8e, 0x9c, 0x7c, 0x69, 0xa6, 0xe8, 0xe7, 0x49, 0xbf, - 0x99, 0x6d, 0xc5, 0xde, 0x94, 0xf2, 0x66, 0xd6, 0x46, 0xfb, - 0xbe, 0x60, 0x7e, 0xa0, 0xf4, 0xc8, 0xe0, 0x60, 0xf3, 0xd0, - 0x1c, 0xcf, 0x1d, 0xdd, 0x58, 0xf8, 0x5b, 0xc6, 0xff, 00, - 0xd, 0xda, 0xf6, 0x55, 0x4b, 0x3b, 0x4f, 0x3a, 0x6, 0x95, - 0xce, 0x2, 0x8d, 0x88, 0x81, 0x89, 0x3d, 00, 0x24, 0x12, - 0x6b, 0x4b, 0xe3, 0x45, 0xcc, 0x37, 0x9e, 0x14, 0xb4, 0xd0, - 0x2d, 0xe5, 0x57, 0xd5, 0x35, 0x5b, 0xd8, 0x12, 0xd2, 0x14, - 0x6c, 0xbb, 0x61, 0xc1, 0x2e, 0x6, 0x7a, 0xc, 0x75, 0xe9, - 0xc8, 0xaa, 0x56, 0xba, 0x6b, 0xac, 0xad, 0xf2, 0xbf, 0xf9, - 0xb, 0x5e, 0x5b, 0x3d, 0x3d, 0xdb, 0xfc, 0xf5, 0x35, 0xfc, - 0x4d, 0xe2, 0xed, 0x56, 0x2f, 0x10, 0xc3, 0xe1, 0x6f, 0xa, - 0xd8, 0x5b, 0x5e, 0x6b, 0x72, 0x43, 0xf6, 0x89, 0xa5, 0xbc, - 0x72, 0xb6, 0xf6, 0x91, 0x67, 0x1b, 0x9f, 0x6f, 0xcc, 0x49, - 0xec, 0x7, 0x3c, 0x83, 0xcf, 0x4a, 0xaf, 0xa5, 0x78, 0xb7, - 0xc4, 0x5a, 0x67, 0x89, 0x6c, 0xfc, 0x3f, 0xe3, 0x4b, 0xd, - 0x3e, 0x29, 0xb5, 0x10, 0xc6, 0xc6, 0xff, 00, 0x4c, 0x77, - 0x30, 0x48, 0xca, 0x1, 0x31, 0x32, 0xbf, 0xcc, 0xad, 0x8c, - 0x9c, 0xf4, 0x3c, 00, 0x3b, 0xd7, 0x1f, 0xab, 0x68, 0x71, - 0xdc, 0x7c, 0x73, 0xbf, 0xb3, 0xd4, 0x75, 0xfd, 0x67, 0x45, - 0x1a, 0x95, 0x8c, 0x2f, 0x65, 0x3e, 0x9f, 0x79, 0xf6, 0x7f, - 0x3d, 0x90, 0x4, 0x31, 0x92, 0x41, 0xdc, 0x72, 0x9, 0x3, - 0xfc, 0x6b, 0x62, 0x6f, 0x6, 0xf8, 0x6b, 0x49, 0xf1, 0x86, - 0x83, 0xe, 0xa9, 0xe3, 0x5f, 0x13, 0x5f, 0x6a, 0xc2, 0xe0, - 0x4f, 0x61, 0x65, 0x79, 0x7b, 0xf6, 0x8c, 0xb0, 0xee, 0x54, - 0x46, 0x4a, 0xaf, 0x7, 0x2c, 0x48, 0x1c, 0x1e, 0x78, 0xa9, - 0x87, 0x46, 0xfa, 0xff, 00, 0x9d, 0xbf, 0xaf, 0xf2, 0x9, - 0x75, 0xb7, 0x45, 0xfa, 0x5c, 0x9e, 0xeb, 0xc7, 0x1e, 0x2e, - 0xbb, 0xf8, 0x85, 0xad, 0xf8, 0x4f, 0x41, 0xd2, 0xb4, 0xd9, - 0x9e, 0xd1, 0x22, 0x78, 0x6e, 0xae, 0x8b, 0xa4, 0x70, 0xa9, - 0x50, 0xcc, 0x65, 0x2a, 0x49, 0x6c, 0x92, 0x15, 0x42, 0x80, - 0x79, 0xc9, 0xe0, 0x1a, 0xd2, 0xf0, 0x97, 0x8b, 0xf5, 0xdb, - 0x9f, 0x16, 0x6a, 0x1e, 0x14, 0xf1, 0x55, 0x85, 0x94, 0x1a, - 0xad, 0xb4, 0x2, 0xee, 0x29, 0xec, 0x19, 0x8c, 0x33, 0xc2, - 0x48, 0x19, 0x1, 0xb2, 0x41, 0x4, 0xf7, 0x3c, 0xf3, 0xc0, - 0xc7, 0x39, 0xfe, 0x12, 0xff, 00, 0x92, 0xdb, 0xe3, 0xbf, - 0xfa, 0xe3, 0x69, 0xff, 00, 0xa0, 0x50, 0x3f, 0xe4, 0xe3, - 0x9b, 0xfe, 0xc5, 0xe1, 0xff, 00, 0xa3, 0x68, 0x86, 0xaa, - 0x3e, 0x69, 0xfe, 0x4f, 0xfc, 0x87, 0x3d, 0xe5, 0x6e, 0x96, - 0xfd, 0x3f, 0xcc, 0xf4, 0x6b, 0x9b, 0x88, 0xed, 0x2d, 0x66, - 0xb9, 0x94, 0x91, 0x1c, 0x28, 0xd2, 0x39, 0x3, 0x3c, 0x1, - 0x93, 0x5e, 0x65, 0xa6, 0xf8, 0xbf, 0xe2, 0x27, 0x89, 0x74, - 0x8f, 0xf8, 0x49, 0x34, 0x1d, 0x23, 0xc3, 0xff, 00, 0xd8, - 0xee, 0x59, 0xa0, 0xb3, 0xb8, 0x9a, 0x53, 0x77, 0x2a, 0x21, - 0xc1, 0x1, 0x97, 0xe4, 0xc, 0x48, 0x38, 0xcf, 0x4e, 0xf9, - 0xef, 0xe9, 0x97, 0x72, 0xac, 0x16, 0x53, 0xcc, 0xd1, 0x3c, - 0xcb, 0x1c, 0x6c, 0xc6, 0x34, 0x5c, 0xb3, 0x80, 0x33, 0x80, - 0x3b, 0x93, 0x5e, 0x3b, 0xa0, 0xf8, 0x37, 0x49, 0xd5, 0xf4, - 0x8f, 0xf8, 0x49, 0x7e, 0x1d, 0xf8, 0xbf, 0x55, 0xf0, 0xe4, - 0xf, 0x31, 0x9a, 0x6b, 0x49, 0x1c, 0x49, 0x4, 0x2c, 0xa3, - 0x5, 0x5e, 0x2d, 0xd8, 0x7, 0x80, 0x7e, 0x62, 0xc3, 0x7, - 0xa6, 0x8, 0xa9, 0xea, 0xdf, 0x61, 0xf4, 0x47, 0x63, 0xa9, - 0xfc, 0x43, 0x3a, 0x67, 0x82, 0xf4, 0xdd, 0x66, 0x6d, 0xe, - 0xf6, 0x3d, 0x53, 0x51, 0x91, 0x6d, 0xad, 0xf4, 0x99, 0x81, - 0x8e, 0x53, 0x3b, 0x12, 0x36, 0x12, 0xc0, 0x60, 0x64, 0x1f, - 0x9b, 0x1c, 0x8c, 0x71, 0xcd, 0x63, 0xde, 0xf8, 0xbf, 0xc7, - 0xde, 0x11, 0xb6, 0x87, 0x57, 0xf1, 0x6e, 0x93, 0xa2, 0x4f, - 0xa2, 0x92, 0xab, 0x72, 0x74, 0xa7, 0x93, 0xce, 0xb4, 0xdc, - 0x40, 0xc, 0xc1, 0xc9, 0xc, 0x1, 0x38, 0xc2, 0xf7, 0xef, - 0xeb, 0xc8, 0xbf, 0x8a, 0x35, 0x1d, 0x5b, 0x46, 0xf0, 0x37, - 0x8a, 0xfc, 0x40, 0x23, 0x68, 0x34, 0xdd, 0x6a, 0x4b, 0x5b, - 0xab, 0xb8, 0x94, 0x8, 0xe4, 0x7, 0xa, 0xb3, 0xf4, 0xe0, - 0x64, 0x1c, 0x91, 0x81, 0x91, 0xd3, 0xb0, 0xf4, 0x1f, 0x8b, - 0x3a, 0xce, 0x9f, 0x6b, 0xf0, 0xcb, 0x52, 0x57, 0x9e, 0x39, - 0x1f, 0x51, 0x80, 0x43, 0x66, 0x88, 0xc1, 0x8c, 0xec, 0xe4, - 0x63, 0x67, 0xf7, 0xb0, 0xe, 0x78, 0xed, 0x55, 0x27, 0x64, - 0xe4, 0xbb, 0xed, 0xf2, 0x4d, 0x2f, 0x9d, 0xfd, 0x44, 0xb5, - 0x6a, 0x2f, 0xb7, 0xea, 0xd7, 0xe1, 0x6f, 0x42, 0xdf, 0x88, - 0x3c, 0x5d, 0x77, 0xa6, 0xf8, 0xcb, 0xc2, 0x5a, 0x55, 0x92, - 0x5b, 0x4b, 0x65, 0xad, 0x34, 0xbe, 0x6c, 0x8e, 0xac, 0x58, - 0x2a, 0xa0, 0x65, 0x28, 0x41, 00, 0x67, 0x3d, 0xc1, 0xa7, - 0x78, 0xf3, 0xc5, 0x57, 0xde, 0x17, 0x3e, 0x1f, 0x16, 0x51, - 0x5b, 0xc9, 0xfd, 0xa3, 0xaa, 0xc5, 0x65, 0x37, 0x9e, 0xac, - 0x76, 0xa3, 0x67, 0x25, 0x70, 0x46, 0xf, 0x1d, 0xf2, 0x3d, - 0xab, 0x8d, 0xf1, 0x4, 0x2d, 0xa1, 0x78, 0x8f, 0xe1, 0x40, - 0xd4, 0x5c, 0x44, 0x96, 0xa8, 0xf6, 0xd3, 0x4a, 0xe7, 0xa, - 0xb2, 0x79, 0x48, 0xa0, 0x13, 0xd0, 0x64, 0xd5, 0xaf, 0x8c, - 0x1a, 0x9d, 0x98, 0xd6, 0x7c, 0x15, 0xa5, 0x9, 0xd0, 0xde, - 0x9d, 0x6e, 0xb, 0x83, 0x8, 0x60, 0x59, 0x63, 0x7, 0x6e, - 0xe2, 0x3b, 0x2, 0x4f, 0x1e, 0xb8, 0x3e, 0x95, 0x49, 0x2b, - 0xa5, 0xfd, 0xeb, 0x7c, 0xae, 0xbf, 0x41, 0x5e, 0xea, 0xff, - 00, 0xdd, 0xbf, 0xe6, 0x69, 0xf8, 0x97, 0xc6, 0x9e, 0x23, - 0xb3, 0xf8, 0x87, 0x7, 0x84, 0xf4, 0x2d, 0x3e, 0xc2, 0xe2, - 0x5b, 0xad, 0x3f, 0xcf, 0x86, 0x4b, 0xad, 0xea, 0xb1, 0x49, - 0xbc, 0xe5, 0xa4, 0x2a, 0x7e, 0xe0, 0x55, 0x3c, 0x1, 0x92, - 0x48, 0xe6, 0xa4, 0xd5, 0xbc, 0x61, 0xe2, 0x4d, 0xa, 0xc3, - 0x48, 0xd2, 0x2e, 0x2c, 0x74, 0xdb, 0xdf, 0x18, 0x6a, 0xd2, - 0xc9, 0x1c, 0x10, 0xda, 0xb3, 0xad, 0xac, 0x6a, 0xa4, 0xfe, - 0xf1, 0x8b, 0x1d, 0xc5, 0x42, 0xe0, 0x91, 0xc1, 0x3c, 0xf4, - 0xc5, 0x54, 0x9f, 0xfe, 0x4e, 0x2e, 0xd3, 0xfe, 0xc5, 0xf6, - 0xff, 00, 0xd1, 0xa6, 0x8f, 0x15, 0xcf, 0x1e, 0x93, 0xf1, - 0x9f, 0xc2, 0x3a, 0x9d, 0xeb, 0x8, 0xec, 0xae, 0x2d, 0x67, - 0xb2, 0x49, 0x5b, 0x85, 0x49, 0x4f, 0x20, 0x13, 0xd8, 0x9c, - 0x81, 0x50, 0xb5, 0xe5, 0x5d, 0xef, 0xfa, 0xfe, 0x76, 0xb1, - 0x52, 0xd1, 0xbb, 0x74, 0xb7, 0xe4, 0xbf, 0xce, 0xe5, 0xdd, - 0x23, 0xc5, 0xbe, 0x24, 0xd3, 0xbc, 0x5d, 0x69, 0xe1, 0xbf, - 0x19, 0xd9, 0xe9, 0x71, 0xcd, 0xa8, 0xc6, 0xef, 0x61, 0x79, - 0xa6, 0x34, 0x9e, 0x53, 0xb2, 0xc, 0xb4, 0x6c, 0x1f, 0x90, - 0xd8, 0xe7, 0x3c, 0xe, 0x83, 0x9a, 0x85, 0xbc, 0x5d, 0xe2, - 0xdf, 0x13, 0xea, 0xb7, 0xd0, 0x78, 0x22, 0xc3, 0x48, 0x1a, - 0x7e, 0x9f, 0x33, 0x5b, 0xcb, 0x7f, 0xab, 0x3c, 0x9b, 0x27, - 0x94, 0x63, 0x2b, 0x1a, 0xc7, 0xce, 0x7, 0xa9, 0xe0, 0xe7, - 0xb5, 0x6e, 0xeb, 0x3e, 0x2f, 0x5d, 0x3f, 0xc6, 0x1a, 0x37, - 0x86, 0x6d, 0x2c, 0xc5, 0xe5, 0xe6, 0xa0, 0x1e, 0x49, 0xb6, - 0xcd, 0xb4, 0xda, 0xc2, 0xa3, 0xfd, 0x63, 0xc, 0x1c, 0x83, - 0xc8, 0x3, 0x8c, 0xe2, 0xbc, 0xb3, 0xe1, 0xb7, 0x84, 0x22, - 0xd5, 0x6d, 0xf5, 0x5d, 0x2a, 0xe3, 0xc5, 0xbe, 0x28, 0xd2, - 0xf5, 0x6d, 0x3e, 0xfa, 0x54, 0x9e, 0xc6, 0xcb, 0x52, 0xf2, - 0x54, 0xae, 0xee, 0x24, 0x9, 0xb4, 0x9c, 0x1c, 0xf5, 0xf5, - 0xfa, 0x8a, 0x16, 0xaf, 0xe4, 0xff, 00, 0x3f, 0xd3, 0xfa, - 0xd9, 0x89, 0xe8, 0xbe, 0xef, 0xd7, 0xfc, 0xbf, 0xad, 0xf, - 0x4e, 0xf0, 0x7f, 0x8b, 0x6e, 0xb5, 0xab, 0xad, 0x43, 0x46, - 0xd6, 0xac, 0x17, 0x4f, 0xd7, 0xb4, 0xc2, 0x82, 0xe6, 0x18, - 0xdf, 0x7c, 0x72, 0x2b, 0xf, 0x96, 0x58, 0xcf, 0xf7, 0x4f, - 0x3c, 0x1c, 0x91, 0xc0, 0x26, 0xba, 0xca, 0xf3, 0xbf, 0x5, - 0x68, 0x5e, 0x1a, 0xd2, 0xfc, 0x6d, 0xab, 0x1d, 0x3b, 0xc4, - 0xda, 0xc6, 0xb5, 0xad, 0x43, 0x6e, 0xb0, 0x5e, 0xfd, 0xba, - 0xe3, 0xcf, 0x11, 0x2e, 0xee, 0x1, 0x70, 0x80, 0x6e, 0x4, - 0x11, 0xb7, 0x71, 0x23, 0x9e, 0x2b, 0xd1, 0x2a, 0xba, 0x26, - 0x2e, 0xad, 0x5, 0x14, 0x51, 0x48, 0x61, 0x45, 0x14, 0x50, - 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, - 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, - 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, - 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, - 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, - 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, - 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, - 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, - 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, - 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x46, 0x28, 0xa2, - 0x80, 0xc, 0xa, 0x4c, 0xa, 0x5a, 0x28, 0x1, 0x30, 0x28, - 0xc0, 0xa5, 0xa2, 0x80, 0x13, 0x2, 0x8c, 0xf, 0x4a, 0x5a, - 0x28, 0x1, 0xa5, 0x1, 0xf6, 0xa4, 0x31, 0x3, 0xdc, 0xd3, - 0xe8, 0xa0, 0x8, 0xfc, 0x85, 0xf5, 0x34, 0x9e, 0x42, 0xfa, - 0x9a, 0x96, 0x8a, 00, 0x8b, 0xc8, 0x4f, 0x53, 0x47, 0xd9, - 0xd3, 0xde, 0xa5, 0xa2, 0x80, 0x22, 0xf2, 0x17, 0xd4, 0xd3, - 0x84, 0x40, 0x77, 0x34, 0xfa, 0x28, 0x1, 0x30, 0x29, 0x68, - 0xa2, 0x80, 0xa, 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa2, 0x80, - 0x3c, 0xd6, 0xf, 0xf9, 0xd, 0x6b, 0xff, 00, 0xf6, 0x12, - 0x7f, 0xfd, 0x1, 0x2b, 0xb4, 0xd1, 0xff, 00, 0xe4, 0x15, - 0xf, 0xfc, 0xb, 0xff, 00, 0x42, 0x35, 0xc5, 0xc1, 0xff, - 00, 0x21, 0xad, 0x7f, 0xfe, 0xc2, 0x4f, 0xff, 00, 0xa0, - 0x25, 0x76, 0x9a, 0x3f, 0xfc, 0x82, 0xa1, 0xff, 00, 0x81, - 0x7f, 0xe8, 0x46, 0x80, 0x2a, 0xf8, 0x23, 0xfe, 0x45, 0xb, - 0x1f, 0xfb, 0x69, 0xff, 00, 0xa3, 0x1a, 0xba, 0xa, 0xe7, - 0xfc, 0x11, 0xff, 00, 0x22, 0x85, 0x8f, 0xfd, 0xb4, 0xff, - 00, 0xd1, 0x8d, 0x5d, 0x5, 00, 0x14, 0x51, 0x45, 00, - 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x73, 0x9e, - 0x23, 0xf0, 0x1f, 0x85, 0xfc, 0x59, 0x22, 0x4b, 0xad, 0xe8, - 0xf0, 0x5c, 0xcc, 0x98, 0xc4, 0xc0, 0xb4, 0x72, 0x60, 0x74, - 0x5, 0xd0, 0x86, 0x23, 0x9e, 0x84, 0xe2, 0xa6, 0xf0, 0xe7, - 0x83, 0x3c, 0x3b, 0xe1, 0x28, 0xdd, 0x34, 0x3d, 0x26, 0xb, - 0x42, 0xf9, 0xdf, 0x20, 0xcb, 0xc8, 0xc3, 0xd0, 0xbb, 0x12, - 0xc4, 0x71, 0xd3, 0x38, 0xad, 0xda, 0x28, 0x5a, 0x6c, 0xf, - 0x5d, 0xcf, 0x38, 0xf1, 0xf6, 0x87, 0x2e, 0xb3, 0xf1, 0xb, - 0xc1, 0x3b, 0xf4, 0xb9, 0x2f, 0x74, 0xe8, 0xde, 0xe4, 0x5d, - 0x93, 0x1, 0x92, 0x24, 0x56, 0x40, 0x6, 0xfe, 0x8, 00, - 0xfb, 0xd6, 0xff, 00, 0x87, 0xbe, 0x1d, 0x78, 0x4b, 0xc2, - 0xd7, 0xcd, 0x7d, 0xa3, 0x68, 0xb0, 0xdb, 0xdd, 0x30, 0xc7, - 0x9a, 0xce, 0xf2, 0xb2, 0x8e, 0x7e, 0xe9, 0x76, 0x3b, 0x7a, - 0xf3, 0x8c, 0x66, 0xba, 0x8a, 0x28, 0x8e, 0x8a, 0xc8, 0x1e, - 0xbb, 0x99, 0x1e, 0x20, 0xf0, 0xbe, 0x89, 0xe2, 0xab, 0x11, - 0x67, 0xad, 0xe9, 0xd0, 0xde, 0x42, 0xa7, 0x2b, 0xbf, 0x21, - 0x90, 0xf1, 0xf7, 0x58, 0x10, 0xcb, 0xd0, 0x67, 0x4, 0x66, - 0xaa, 0x78, 0x6f, 0xc0, 0x7e, 0x18, 0xf0, 0x94, 0x92, 0x4b, - 0xa1, 0xe9, 0x10, 0xda, 0xcd, 0x20, 0xc3, 0x4a, 0x59, 0xa4, - 0x7c, 0x7a, 0x6, 0x72, 0x48, 0x1c, 0xe, 0x1, 0xc5, 0x74, - 0x54, 0x50, 0xb4, 0xd8, 0x1e, 0xbb, 0x99, 0x96, 0x9e, 0x1f, - 0xd2, 0xec, 0x75, 0xbb, 0xfd, 0x66, 0xda, 0xd7, 0x66, 0xa1, - 0x7e, 0x11, 0x6e, 0x66, 0xf3, 0x18, 0xf9, 0x81, 0x6, 0x17, - 0x82, 0x70, 0x30, 0x3d, 00, 0xa3, 0xfe, 0x11, 0xfd, 0x2f, - 0xfe, 0x12, 0x4f, 0xf8, 0x48, 0x7e, 0xcb, 0xff, 00, 0x13, - 0x5f, 0xb3, 0xfd, 0x97, 0xcf, 0xf3, 0x1b, 0xfd, 0x56, 0x73, - 0xb7, 0x6e, 0x76, 0xf5, 0xef, 0x8c, 0xd6, 0x9d, 0x14, 0x6c, - 0x1, 0x5c, 0x6e, 0xa7, 0xf0, 0xa3, 0xc0, 0xfa, 0xc6, 0xa7, - 0x26, 0xa3, 0x7b, 0xe1, 0xf8, 0x5a, 0xea, 0x56, 0xdc, 0xed, - 0x1c, 0xb2, 0x44, 0xac, 0xde, 0xa5, 0x51, 0x82, 0x92, 0x7b, - 0x9c, 0x73, 0xde, 0xbb, 0x2a, 0x28, 0xf3, 0x2, 0x99, 0xd2, - 0x34, 0xd3, 0xa5, 0x7f, 0x65, 0x1d, 0x3e, 0xd7, 0xfb, 0x3b, - 0x67, 0x97, 0xf6, 0x4f, 0x25, 0x7c, 0xad, 0xbe, 0x9b, 0x71, - 0x8c, 0x57, 0x3b, 0xa2, 0xfc, 0x2f, 0xf0, 0x5f, 0x87, 0xb5, - 0x25, 0xd4, 0x74, 0xcd, 0xa, 0x18, 0xee, 0xd3, 0xee, 0x49, - 0x24, 0x92, 0x4b, 0xb0, 0xe7, 0x39, 0x50, 0xec, 0x42, 0x9e, - 0x3a, 0x8e, 0x6b, 0xae, 0xa2, 0x8e, 0xb7, 0xe, 0x96, 0x33, - 0x35, 0xdf, 0xf, 0x69, 0x3e, 0x26, 0xd3, 0x5b, 0x4f, 0xd6, - 0x6c, 0x62, 0xbc, 0xb5, 0x62, 0x1b, 0x63, 0xe4, 0x15, 0x3e, - 0xaa, 0xc3, 0x5, 0x4f, 0xb8, 0x20, 0xf2, 0x6b, 0x16, 0xcf, - 0xe1, 0x8f, 0x83, 0x6c, 0x2d, 0xad, 0xe0, 0xb5, 0xd0, 0xe2, - 0x89, 0x2d, 0xee, 0x92, 0xf2, 0x32, 0xb2, 0xc9, 0xbf, 0xcd, - 0x5c, 0xed, 0x25, 0xb7, 0x6e, 0x60, 0x32, 0x70, 0x9, 0x23, - 0x93, 0xc5, 0x75, 0xb4, 0x50, 0xb4, 0xd5, 0x3, 0xd7, 0x73, - 0x31, 0xbc, 0x3f, 0xa5, 0xb7, 0x88, 0xd3, 0xc4, 0x6, 0xd7, - 0x3a, 0xa2, 0x5b, 0xfd, 0x99, 0x67, 0xf3, 0x1b, 0x88, 0xf3, - 0x9d, 0xbb, 0x73, 0xb7, 0xaf, 0x7c, 0x66, 0xa4, 0xd6, 0x74, - 0x4d, 0x33, 0xc4, 0x3a, 0x6c, 0x9a, 0x76, 0xad, 0x65, 0x15, - 0xdd, 0xa4, 0x9f, 0x7a, 0x39, 0x7, 0x43, 0xea, 0xf, 0x55, - 0x3c, 0xf0, 0x46, 0x8, 0xab, 0xf4, 0x51, 0x6d, 0x2c, 0x17, - 0xd6, 0xe7, 0x3f, 0xe1, 0xbf, 0x3, 0xf8, 0x6b, 0xc2, 0x26, - 0x56, 0xd0, 0xb4, 0x98, 0xad, 0x1e, 0x5f, 0xbf, 0x26, 0xe6, - 0x91, 0xc8, 0xe3, 0x8d, 0xce, 0x49, 0x3, 0x81, 0xc6, 0x71, - 0x50, 0x78, 0x8b, 0xe1, 0xe7, 0x84, 0xfc, 0x57, 0x76, 0x97, - 0x7a, 0xd6, 0x8d, 0xd, 0xc5, 0xca, 0x8c, 0x79, 0xca, 0xef, - 0x13, 0xb0, 0xe3, 0xef, 0x14, 0x20, 0xb6, 0x31, 0xc6, 0x73, - 0x8e, 0xd5, 0xd3, 0xd1, 0x43, 0xd7, 0x70, 0x5a, 0x6c, 0x66, - 0xe8, 0x7e, 0x1f, 0xd2, 0x7c, 0x35, 0xa7, 0x2d, 0x86, 0x8d, - 0x61, 0xd, 0x9d, 0xb0, 0x39, 0x2b, 0x18, 0xe5, 0x8f, 0x4c, - 0xb1, 0x3c, 0xb1, 0xe9, 0xc9, 0x24, 0xd6, 0x95, 0x14, 0x50, - 0xdd, 0xc0, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, - 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, - 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, - 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, - 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, - 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, - 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, - 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, - 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, - 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, - 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, - 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, - 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, - 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, - 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, - 0xf3, 0x58, 0x3f, 0xe4, 0x35, 0xaf, 0xff, 00, 0xd8, 0x49, - 0xff, 00, 0xf4, 0x4, 0xae, 0xd3, 0x47, 0xff, 00, 0x90, - 0x54, 0x3f, 0xf0, 0x2f, 0xfd, 0x8, 0xd7, 0x17, 0x7, 0xfc, - 0x86, 0xb5, 0xff, 00, 0xfb, 0x9, 0x3f, 0xfe, 0x80, 0x95, - 0xda, 0x68, 0xff, 00, 0xf2, 0xa, 0x87, 0xfe, 0x5, 0xff, - 00, 0xa1, 0x1a, 00, 0xc9, 0xd2, 0xac, 0x7c, 0x55, 0xa3, - 0x69, 0xd1, 0xe9, 0xf0, 0x5b, 0xe8, 0xd3, 0x45, 0xb, 0x3e, - 0xc9, 0x1e, 0xea, 0x55, 0x66, 0x5, 0x89, 0x19, 0x2, 0x33, - 0x83, 0xcf, 0xa9, 0xaa, 0xb3, 0x78, 0x9b, 0xc4, 0xf0, 0xcf, - 0x24, 0x4d, 0xa6, 0x69, 0x4, 0xa3, 0x15, 0x24, 0x5e, 0x4b, - 0xd8, 0xff, 00, 0xd7, 0x3a, 0xed, 0xab, 0x6, 0xe3, 0xc3, - 0xcf, 0x3d, 0xcc, 0xb2, 0x8b, 0x95, 0x1b, 0xdc, 0xb6, 0x36, - 0x74, 0xc9, 0xcf, 0xad, 00, 0x62, 0x7f, 0xc2, 0x55, 0xe2, - 0x6f, 0xfa, 0x5, 0xe9, 0x1f, 0xf8, 0x19, 0x27, 0xff, 00, - 0x1b, 0xa3, 0xfe, 0x12, 0xaf, 0x13, 0x7f, 0xd0, 0x2f, 0x48, - 0xff, 00, 0xc0, 0xc9, 0x3f, 0xf8, 0xdd, 0x6b, 0xff, 00, - 0xc2, 0x32, 0xff, 00, 0xf3, 0xf4, 0xbf, 0xf7, 0xc7, 0xff, - 00, 0x5e, 0x8f, 0xf8, 0x46, 0x5f, 0xfe, 0x7e, 0x97, 0xfe, - 0xf8, 0xff, 00, 0xeb, 0xd0, 0x6, 0x47, 0xfc, 0x25, 0x5e, - 0x26, 0xff, 00, 0xa0, 0x5e, 0x91, 0xff, 00, 0x81, 0x92, - 0x7f, 0xf1, 0xba, 0x3f, 0xe1, 0x2a, 0xf1, 0x37, 0xfd, 0x2, - 0xf4, 0x8f, 0xfc, 0xc, 0x93, 0xff, 00, 0x8d, 0xd6, 0xbf, - 0xfc, 0x23, 0x2f, 0xff, 00, 0x3f, 0x4b, 0xff, 00, 0x7c, - 0x7f, 0xf5, 0xe8, 0xff, 00, 0x84, 0x65, 0xff, 00, 0xe7, - 0xe9, 0x7f, 0xef, 0x8f, 0xfe, 0xbd, 00, 0x64, 0x7f, 0xc2, - 0x55, 0xe2, 0x6f, 0xfa, 0x5, 0xe9, 0x1f, 0xf8, 0x19, 0x27, - 0xff, 00, 0x1b, 0xa3, 0xfe, 0x12, 0xaf, 0x13, 0x7f, 0xd0, - 0x2f, 0x48, 0xff, 00, 0xc0, 0xc9, 0x3f, 0xf8, 0xdd, 0x6b, - 0xff, 00, 0xc2, 0x32, 0xff, 00, 0xf3, 0xf4, 0xbf, 0xf7, - 0xc7, 0xff, 00, 0x5e, 0x8f, 0xf8, 0x46, 0x5f, 0xfe, 0x7e, - 0x97, 0xfe, 0xf8, 0xff, 00, 0xeb, 0xd0, 0x6, 0x47, 0xfc, - 0x25, 0x5e, 0x26, 0xff, 00, 0xa0, 0x5e, 0x91, 0xff, 00, - 0x81, 0x92, 0x7f, 0xf1, 0xba, 0x3f, 0xe1, 0x2a, 0xf1, 0x37, - 0xfd, 0x2, 0xf4, 0x8f, 0xfc, 0xc, 0x93, 0xff, 00, 0x8d, - 0xd6, 0xbf, 0xfc, 0x23, 0x2f, 0xff, 00, 0x3f, 0x4b, 0xff, - 00, 0x7c, 0x7f, 0xf5, 0xe8, 0xff, 00, 0x84, 0x65, 0xff, - 00, 0xe7, 0xe9, 0x7f, 0xef, 0x8f, 0xfe, 0xbd, 00, 0x64, - 0x7f, 0xc2, 0x55, 0xe2, 0x6f, 0xfa, 0x5, 0xe9, 0x1f, 0xf8, - 0x19, 0x27, 0xff, 00, 0x1b, 0xa3, 0xfe, 0x12, 0xaf, 0x13, - 0x7f, 0xd0, 0x2f, 0x48, 0xff, 00, 0xc0, 0xc9, 0x3f, 0xf8, - 0xdd, 0x6b, 0xff, 00, 0xc2, 0x32, 0xff, 00, 0xf3, 0xf4, - 0xbf, 0xf7, 0xc7, 0xff, 00, 0x5e, 0x8f, 0xf8, 0x46, 0x5f, - 0xfe, 0x7e, 0x97, 0xfe, 0xf8, 0xff, 00, 0xeb, 0xd0, 0x6, - 0x47, 0xfc, 0x25, 0x5e, 0x26, 0xff, 00, 0xa0, 0x5e, 0x91, - 0xff, 00, 0x81, 0x92, 0x7f, 0xf1, 0xba, 0x3f, 0xe1, 0x2a, - 0xf1, 0x37, 0xfd, 0x2, 0xf4, 0x8f, 0xfc, 0xc, 0x93, 0xff, - 00, 0x8d, 0xd6, 0xbf, 0xfc, 0x23, 0x2f, 0xff, 00, 0x3f, - 0x4b, 0xff, 00, 0x7c, 0x7f, 0xf5, 0xe8, 0xff, 00, 0x84, - 0x65, 0xff, 00, 0xe7, 0xe9, 0x7f, 0xef, 0x8f, 0xfe, 0xbd, - 00, 0x64, 0x7f, 0xc2, 0x55, 0xe2, 0x6f, 0xfa, 0x5, 0xe9, - 0x1f, 0xf8, 0x19, 0x27, 0xff, 00, 0x1b, 0xa3, 0xfe, 0x12, - 0xaf, 0x13, 0x7f, 0xd0, 0x2f, 0x48, 0xff, 00, 0xc0, 0xc9, - 0x3f, 0xf8, 0xdd, 0x6b, 0xff, 00, 0xc2, 0x32, 0xff, 00, - 0xf3, 0xf4, 0xbf, 0xf7, 0xc7, 0xff, 00, 0x5e, 0x8f, 0xf8, - 0x46, 0x5f, 0xfe, 0x7e, 0x97, 0xfe, 0xf8, 0xff, 00, 0xeb, - 0xd0, 0x6, 0x47, 0xfc, 0x25, 0x5e, 0x26, 0xff, 00, 0xa0, - 0x5e, 0x91, 0xff, 00, 0x81, 0x92, 0x7f, 0xf1, 0xba, 0x3f, - 0xe1, 0x2a, 0xf1, 0x37, 0xfd, 0x2, 0xf4, 0x8f, 0xfc, 0xc, - 0x93, 0xff, 00, 0x8d, 0xd6, 0xbf, 0xfc, 0x23, 0x2f, 0xff, - 00, 0x3f, 0x4b, 0xff, 00, 0x7c, 0x7f, 0xf5, 0xe8, 0xff, - 00, 0x84, 0x65, 0xff, 00, 0xe7, 0xe9, 0x7f, 0xef, 0x8f, - 0xfe, 0xbd, 00, 0x64, 0x7f, 0xc2, 0x55, 0xe2, 0x6f, 0xfa, - 0x5, 0xe9, 0x1f, 0xf8, 0x19, 0x27, 0xff, 00, 0x1b, 0xa3, - 0xfe, 0x12, 0xaf, 0x13, 0x7f, 0xd0, 0x2f, 0x48, 0xff, 00, - 0xc0, 0xc9, 0x3f, 0xf8, 0xdd, 0x6b, 0xff, 00, 0xc2, 0x32, - 0xff, 00, 0xf3, 0xf4, 0xbf, 0xf7, 0xc7, 0xff, 00, 0x5e, - 0x8f, 0xf8, 0x46, 0x5f, 0xfe, 0x7e, 0x97, 0xfe, 0xf8, 0xff, - 00, 0xeb, 0xd0, 0x6, 0x47, 0xfc, 0x25, 0x5e, 0x26, 0xff, - 00, 0xa0, 0x5e, 0x91, 0xff, 00, 0x81, 0x92, 0x7f, 0xf1, - 0xba, 0x3f, 0xe1, 0x2a, 0xf1, 0x37, 0xfd, 0x2, 0xf4, 0x8f, - 0xfc, 0xc, 0x93, 0xff, 00, 0x8d, 0xd6, 0xbf, 0xfc, 0x23, - 0x2f, 0xff, 00, 0x3f, 0x4b, 0xff, 00, 0x7c, 0x7f, 0xf5, - 0xe8, 0xff, 00, 0x84, 0x65, 0xff, 00, 0xe7, 0xe9, 0x7f, - 0xef, 0x8f, 0xfe, 0xbd, 00, 0x64, 0x7f, 0xc2, 0x55, 0xe2, - 0x6f, 0xfa, 0x5, 0xe9, 0x1f, 0xf8, 0x19, 0x27, 0xff, 00, - 0x1b, 0xa3, 0xfe, 0x12, 0xaf, 0x13, 0x7f, 0xd0, 0x2f, 0x48, - 0xff, 00, 0xc0, 0xc9, 0x3f, 0xf8, 0xdd, 0x6b, 0xff, 00, - 0xc2, 0x32, 0xff, 00, 0xf3, 0xf4, 0xbf, 0xf7, 0xc7, 0xff, - 00, 0x5e, 0x8f, 0xf8, 0x46, 0x5f, 0xfe, 0x7e, 0x97, 0xfe, - 0xf8, 0xff, 00, 0xeb, 0xd0, 0x6, 0x47, 0xfc, 0x25, 0x5e, - 0x26, 0xff, 00, 0xa0, 0x5e, 0x91, 0xff, 00, 0x81, 0x92, - 0x7f, 0xf1, 0xba, 0x3f, 0xe1, 0x2a, 0xf1, 0x37, 0xfd, 0x2, - 0xf4, 0x8f, 0xfc, 0xc, 0x93, 0xff, 00, 0x8d, 0xd6, 0xbf, - 0xfc, 0x23, 0x2f, 0xff, 00, 0x3f, 0x4b, 0xff, 00, 0x7c, - 0x7f, 0xf5, 0xe8, 0xff, 00, 0x84, 0x65, 0xff, 00, 0xe7, - 0xe9, 0x7f, 0xef, 0x8f, 0xfe, 0xbd, 00, 0x64, 0x7f, 0xc2, - 0x55, 0xe2, 0x6f, 0xfa, 0x5, 0xe9, 0x1f, 0xf8, 0x19, 0x27, - 0xff, 00, 0x1b, 0xa3, 0xfe, 0x12, 0xaf, 0x13, 0x7f, 0xd0, - 0x2f, 0x48, 0xff, 00, 0xc0, 0xc9, 0x3f, 0xf8, 0xdd, 0x6b, - 0xff, 00, 0xc2, 0x32, 0xff, 00, 0xf3, 0xf4, 0xbf, 0xf7, - 0xc7, 0xff, 00, 0x5e, 0x8f, 0xf8, 0x46, 0x5f, 0xfe, 0x7e, - 0x97, 0xfe, 0xf8, 0xff, 00, 0xeb, 0xd0, 0x6, 0x47, 0xfc, - 0x25, 0x5e, 0x26, 0xff, 00, 0xa0, 0x5e, 0x91, 0xff, 00, - 0x81, 0x92, 0x7f, 0xf1, 0xba, 0x3f, 0xe1, 0x2a, 0xf1, 0x37, - 0xfd, 0x2, 0xf4, 0x8f, 0xfc, 0xc, 0x93, 0xff, 00, 0x8d, - 0xd6, 0xbf, 0xfc, 0x23, 0x2f, 0xff, 00, 0x3f, 0x4b, 0xff, - 00, 0x7c, 0x7f, 0xf5, 0xe8, 0xff, 00, 0x84, 0x65, 0xff, - 00, 0xe7, 0xe9, 0x7f, 0xef, 0x8f, 0xfe, 0xbd, 00, 0x64, - 0x7f, 0xc2, 0x55, 0xe2, 0x6f, 0xfa, 0x5, 0xe9, 0x1f, 0xf8, - 0x19, 0x27, 0xff, 00, 0x1b, 0xa3, 0xfe, 0x12, 0xaf, 0x13, - 0x7f, 0xd0, 0x2f, 0x48, 0xff, 00, 0xc0, 0xc9, 0x3f, 0xf8, - 0xdd, 0x6b, 0xff, 00, 0xc2, 0x32, 0xff, 00, 0xf3, 0xf4, - 0xbf, 0xf7, 0xc7, 0xff, 00, 0x5e, 0x8f, 0xf8, 0x46, 0x5f, - 0xfe, 0x7e, 0x97, 0xfe, 0xf8, 0xff, 00, 0xeb, 0xd0, 0x6, - 0x47, 0xfc, 0x25, 0x5e, 0x26, 0xff, 00, 0xa0, 0x5e, 0x91, - 0xff, 00, 0x81, 0x92, 0x7f, 0xf1, 0xba, 0x3f, 0xe1, 0x2a, - 0xf1, 0x37, 0xfd, 0x2, 0xf4, 0x8f, 0xfc, 0xc, 0x93, 0xff, - 00, 0x8d, 0xd6, 0xbf, 0xfc, 0x23, 0x2f, 0xff, 00, 0x3f, - 0x4b, 0xff, 00, 0x7c, 0x7f, 0xf5, 0xe8, 0xff, 00, 0x84, - 0x65, 0xff, 00, 0xe7, 0xe9, 0x7f, 0xef, 0x8f, 0xfe, 0xbd, - 00, 0x64, 0x7f, 0xc2, 0x55, 0xe2, 0x6f, 0xfa, 0x5, 0xe9, - 0x1f, 0xf8, 0x19, 0x27, 0xff, 00, 0x1b, 0xa3, 0xfe, 0x12, - 0xaf, 0x13, 0x7f, 0xd0, 0x2f, 0x48, 0xff, 00, 0xc0, 0xc9, - 0x3f, 0xf8, 0xdd, 0x6b, 0xff, 00, 0xc2, 0x32, 0xff, 00, - 0xf3, 0xf4, 0xbf, 0xf7, 0xc7, 0xff, 00, 0x5e, 0x8f, 0xf8, - 0x46, 0x5f, 0xfe, 0x7e, 0x97, 0xfe, 0xf8, 0xff, 00, 0xeb, - 0xd0, 0x6, 0x47, 0xfc, 0x25, 0x5e, 0x26, 0xff, 00, 0xa0, - 0x5e, 0x91, 0xff, 00, 0x81, 0x92, 0x7f, 0xf1, 0xba, 0x3f, - 0xe1, 0x2a, 0xf1, 0x37, 0xfd, 0x2, 0xf4, 0x8f, 0xfc, 0xc, - 0x93, 0xff, 00, 0x8d, 0xd6, 0xbf, 0xfc, 0x23, 0x2f, 0xff, - 00, 0x3f, 0x4b, 0xff, 00, 0x7c, 0x7f, 0xf5, 0xe8, 0xff, - 00, 0x84, 0x65, 0xff, 00, 0xe7, 0xe9, 0x7f, 0xef, 0x8f, - 0xfe, 0xbd, 00, 0x64, 0x7f, 0xc2, 0x55, 0xe2, 0x6f, 0xfa, - 0x5, 0xe9, 0x1f, 0xf8, 0x19, 0x27, 0xff, 00, 0x1b, 0xa3, - 0xfe, 0x12, 0xaf, 0x13, 0x7f, 0xd0, 0x2f, 0x48, 0xff, 00, - 0xc0, 0xc9, 0x3f, 0xf8, 0xdd, 0x6b, 0xff, 00, 0xc2, 0x32, - 0xff, 00, 0xf3, 0xf4, 0xbf, 0xf7, 0xc7, 0xff, 00, 0x5e, - 0x8f, 0xf8, 0x46, 0x5f, 0xfe, 0x7e, 0x97, 0xfe, 0xf8, 0xff, - 00, 0xeb, 0xd0, 0x6, 0x47, 0xfc, 0x25, 0x5e, 0x26, 0xff, - 00, 0xa0, 0x5e, 0x91, 0xff, 00, 0x81, 0x92, 0x7f, 0xf1, - 0xba, 0x3f, 0xe1, 0x2a, 0xf1, 0x37, 0xfd, 0x2, 0xf4, 0x8f, - 0xfc, 0xc, 0x93, 0xff, 00, 0x8d, 0xd6, 0xbf, 0xfc, 0x23, - 0x2f, 0xff, 00, 0x3f, 0x4b, 0xff, 00, 0x7c, 0x7f, 0xf5, - 0xe8, 0xff, 00, 0x84, 0x65, 0xff, 00, 0xe7, 0xe9, 0x7f, - 0xef, 0x8f, 0xfe, 0xbd, 00, 0x64, 0x7f, 0xc2, 0x55, 0xe2, - 0x6f, 0xfa, 0x5, 0xe9, 0x1f, 0xf8, 0x19, 0x27, 0xff, 00, - 0x1b, 0xa3, 0xfe, 0x12, 0xaf, 0x13, 0x7f, 0xd0, 0x2f, 0x48, - 0xff, 00, 0xc0, 0xc9, 0x3f, 0xf8, 0xdd, 0x6b, 0xff, 00, - 0xc2, 0x32, 0xff, 00, 0xf3, 0xf4, 0xbf, 0xf7, 0xc7, 0xff, - 00, 0x5e, 0x8f, 0xf8, 0x46, 0x5f, 0xfe, 0x7e, 0x97, 0xfe, - 0xf8, 0xff, 00, 0xeb, 0xd0, 0x6, 0x47, 0xfc, 0x25, 0x5e, - 0x26, 0xff, 00, 0xa0, 0x5e, 0x91, 0xff, 00, 0x81, 0x92, - 0x7f, 0xf1, 0xba, 0x3f, 0xe1, 0x2a, 0xf1, 0x37, 0xfd, 0x2, - 0xf4, 0x8f, 0xfc, 0xc, 0x93, 0xff, 00, 0x8d, 0xd6, 0xbf, - 0xfc, 0x23, 0x2f, 0xff, 00, 0x3f, 0x4b, 0xff, 00, 0x7c, - 0x7f, 0xf5, 0xe8, 0xff, 00, 0x84, 0x65, 0xff, 00, 0xe7, - 0xe9, 0x7f, 0xef, 0x8f, 0xfe, 0xbd, 00, 0x64, 0x7f, 0xc2, - 0x55, 0xe2, 0x6f, 0xfa, 0x5, 0xe9, 0x1f, 0xf8, 0x19, 0x27, - 0xff, 00, 0x1b, 0xa3, 0xfe, 0x12, 0xaf, 0x13, 0x7f, 0xd0, - 0x2f, 0x48, 0xff, 00, 0xc0, 0xc9, 0x3f, 0xf8, 0xdd, 0x6b, - 0xff, 00, 0xc2, 0x32, 0xff, 00, 0xf3, 0xf4, 0xbf, 0xf7, - 0xc7, 0xff, 00, 0x5e, 0x8f, 0xf8, 0x46, 0x5f, 0xfe, 0x7e, - 0x97, 0xfe, 0xf8, 0xff, 00, 0xeb, 0xd0, 0x6, 0x47, 0xfc, - 0x25, 0x5e, 0x26, 0xff, 00, 0xa0, 0x5e, 0x91, 0xff, 00, - 0x81, 0x92, 0x7f, 0xf1, 0xba, 0x3f, 0xe1, 0x2a, 0xf1, 0x37, - 0xfd, 0x2, 0xf4, 0x8f, 0xfc, 0xc, 0x93, 0xff, 00, 0x8d, - 0xd6, 0xbf, 0xfc, 0x23, 0x2f, 0xff, 00, 0x3f, 0x4b, 0xff, - 00, 0x7c, 0x7f, 0xf5, 0xe8, 0xff, 00, 0x84, 0x65, 0xff, - 00, 0xe7, 0xe9, 0x7f, 0xef, 0x8f, 0xfe, 0xbd, 00, 0x64, - 0x7f, 0xc2, 0x55, 0xe2, 0x6f, 0xfa, 0x5, 0xe9, 0x1f, 0xf8, - 0x19, 0x27, 0xff, 00, 0x1b, 0xa3, 0xfe, 0x12, 0xaf, 0x13, - 0x7f, 0xd0, 0x2f, 0x48, 0xff, 00, 0xc0, 0xc9, 0x3f, 0xf8, - 0xdd, 0x6b, 0xff, 00, 0xc2, 0x32, 0xff, 00, 0xf3, 0xf4, - 0xbf, 0xf7, 0xc7, 0xff, 00, 0x5e, 0x8f, 0xf8, 0x46, 0x5f, - 0xfe, 0x7e, 0x97, 0xfe, 0xf8, 0xff, 00, 0xeb, 0xd0, 0x6, - 0x47, 0xfc, 0x25, 0x5e, 0x26, 0xff, 00, 0xa0, 0x5e, 0x91, - 0xff, 00, 0x81, 0x92, 0x7f, 0xf1, 0xba, 0x3f, 0xe1, 0x2a, - 0xf1, 0x37, 0xfd, 0x2, 0xf4, 0x8f, 0xfc, 0xc, 0x93, 0xff, - 00, 0x8d, 0xd6, 0xbf, 0xfc, 0x23, 0x2f, 0xff, 00, 0x3f, - 0x4b, 0xff, 00, 0x7c, 0x7f, 0xf5, 0xe8, 0xff, 00, 0x84, - 0x65, 0xff, 00, 0xe7, 0xe9, 0x7f, 0xef, 0x8f, 0xfe, 0xbd, - 00, 0x64, 0x7f, 0xc2, 0x55, 0xe2, 0x6f, 0xfa, 0x5, 0xe9, - 0x1f, 0xf8, 0x19, 0x27, 0xff, 00, 0x1b, 0xa3, 0xfe, 0x12, - 0xaf, 0x13, 0x7f, 0xd0, 0x2f, 0x48, 0xff, 00, 0xc0, 0xc9, - 0x3f, 0xf8, 0xdd, 0x6b, 0xff, 00, 0xc2, 0x32, 0xff, 00, - 0xf3, 0xf4, 0xbf, 0xf7, 0xc7, 0xff, 00, 0x5e, 0x8f, 0xf8, - 0x46, 0x5f, 0xfe, 0x7e, 0x97, 0xfe, 0xf8, 0xff, 00, 0xeb, - 0xd0, 0x6, 0x47, 0xfc, 0x25, 0x5e, 0x26, 0xff, 00, 0xa0, - 0x5e, 0x91, 0xff, 00, 0x81, 0x92, 0x7f, 0xf1, 0xba, 0x3f, - 0xe1, 0x2a, 0xf1, 0x37, 0xfd, 0x2, 0xf4, 0x8f, 0xfc, 0xc, - 0x93, 0xff, 00, 0x8d, 0xd6, 0xbf, 0xfc, 0x23, 0x2f, 0xff, - 00, 0x3f, 0x4b, 0xff, 00, 0x7c, 0x7f, 0xf5, 0xe8, 0xff, - 00, 0x84, 0x65, 0xff, 00, 0xe7, 0xe9, 0x7f, 0xef, 0x8f, - 0xfe, 0xbd, 00, 0x64, 0x7f, 0xc2, 0x55, 0xe2, 0x6f, 0xfa, - 0x5, 0xe9, 0x1f, 0xf8, 0x19, 0x27, 0xff, 00, 0x1b, 0xa3, - 0xfe, 0x12, 0xaf, 0x13, 0x7f, 0xd0, 0x2f, 0x48, 0xff, 00, - 0xc0, 0xc9, 0x3f, 0xf8, 0xdd, 0x6b, 0xff, 00, 0xc2, 0x32, - 0xff, 00, 0xf3, 0xf4, 0xbf, 0xf7, 0xc7, 0xff, 00, 0x5e, - 0x8f, 0xf8, 0x46, 0x5f, 0xfe, 0x7e, 0x97, 0xfe, 0xf8, 0xff, - 00, 0xeb, 0xd0, 0x6, 0x47, 0xfc, 0x25, 0x5e, 0x26, 0xff, - 00, 0xa0, 0x5e, 0x91, 0xff, 00, 0x81, 0x92, 0x7f, 0xf1, - 0xba, 0x3f, 0xe1, 0x2a, 0xf1, 0x37, 0xfd, 0x2, 0xf4, 0x8f, - 0xfc, 0xc, 0x93, 0xff, 00, 0x8d, 0xd6, 0xbf, 0xfc, 0x23, - 0x2f, 0xff, 00, 0x3f, 0x4b, 0xff, 00, 0x7c, 0x7f, 0xf5, - 0xe8, 0xff, 00, 0x84, 0x65, 0xff, 00, 0xe7, 0xe9, 0x7f, - 0xef, 0x8f, 0xfe, 0xbd, 00, 0x64, 0x7f, 0xc2, 0x55, 0xe2, - 0x6f, 0xfa, 0x5, 0xe9, 0x1f, 0xf8, 0x19, 0x27, 0xff, 00, - 0x1b, 0xa3, 0xfe, 0x12, 0xaf, 0x13, 0x7f, 0xd0, 0x2f, 0x48, - 0xff, 00, 0xc0, 0xc9, 0x3f, 0xf8, 0xdd, 0x6b, 0xff, 00, - 0xc2, 0x32, 0xff, 00, 0xf3, 0xf4, 0xbf, 0xf7, 0xc7, 0xff, - 00, 0x5e, 0x8f, 0xf8, 0x46, 0x5f, 0xfe, 0x7e, 0x97, 0xfe, - 0xf8, 0xff, 00, 0xeb, 0xd0, 0x6, 0x47, 0xfc, 0x25, 0x5e, - 0x26, 0xff, 00, 0xa0, 0x5e, 0x91, 0xff, 00, 0x81, 0x92, - 0x7f, 0xf1, 0xba, 0x3f, 0xe1, 0x2a, 0xf1, 0x37, 0xfd, 0x2, - 0xf4, 0x8f, 0xfc, 0xc, 0x93, 0xff, 00, 0x8d, 0xd6, 0xbf, - 0xfc, 0x23, 0x2f, 0xff, 00, 0x3f, 0x4b, 0xff, 00, 0x7c, - 0x7f, 0xf5, 0xe8, 0xff, 00, 0x84, 0x65, 0xff, 00, 0xe7, - 0xe9, 0x7f, 0xef, 0x8f, 0xfe, 0xbd, 00, 0x64, 0x7f, 0xc2, - 0x55, 0xe2, 0x6f, 0xfa, 0x5, 0xe9, 0x1f, 0xf8, 0x19, 0x27, - 0xff, 00, 0x1b, 0xa3, 0xfe, 0x12, 0xaf, 0x13, 0x7f, 0xd0, - 0x2f, 0x48, 0xff, 00, 0xc0, 0xc9, 0x3f, 0xf8, 0xdd, 0x6b, - 0xff, 00, 0xc2, 0x32, 0xff, 00, 0xf3, 0xf4, 0xbf, 0xf7, - 0xc7, 0xff, 00, 0x5e, 0x8f, 0xf8, 0x46, 0x5f, 0xfe, 0x7e, - 0x97, 0xfe, 0xf8, 0xff, 00, 0xeb, 0xd0, 0x6, 0x47, 0xfc, - 0x25, 0x5e, 0x26, 0xff, 00, 0xa0, 0x5e, 0x91, 0xff, 00, - 0x81, 0x92, 0x7f, 0xf1, 0xba, 0x3f, 0xe1, 0x2a, 0xf1, 0x37, - 0xfd, 0x2, 0xf4, 0x8f, 0xfc, 0xc, 0x93, 0xff, 00, 0x8d, - 0xd6, 0xbf, 0xfc, 0x23, 0x2f, 0xff, 00, 0x3f, 0x4b, 0xff, - 00, 0x7c, 0x7f, 0xf5, 0xe8, 0xff, 00, 0x84, 0x65, 0xff, - 00, 0xe7, 0xe9, 0x7f, 0xef, 0x8f, 0xfe, 0xbd, 00, 0x64, - 0x7f, 0xc2, 0x55, 0xe2, 0x6f, 0xfa, 0x5, 0xe9, 0x1f, 0xf8, - 0x19, 0x27, 0xff, 00, 0x1b, 0xa3, 0xfe, 0x12, 0xaf, 0x13, - 0x7f, 0xd0, 0x2f, 0x48, 0xff, 00, 0xc0, 0xc9, 0x3f, 0xf8, - 0xdd, 0x6b, 0xff, 00, 0xc2, 0x32, 0xff, 00, 0xf3, 0xf4, - 0xbf, 0xf7, 0xc7, 0xff, 00, 0x5e, 0x8f, 0xf8, 0x46, 0x5f, - 0xfe, 0x7e, 0x97, 0xfe, 0xf8, 0xff, 00, 0xeb, 0xd0, 0x6, - 0x47, 0xfc, 0x25, 0x5e, 0x26, 0xff, 00, 0xa0, 0x5e, 0x91, - 0xff, 00, 0x81, 0x92, 0x7f, 0xf1, 0xba, 0x3f, 0xe1, 0x2a, - 0xf1, 0x37, 0xfd, 0x2, 0xf4, 0x8f, 0xfc, 0xc, 0x93, 0xff, - 00, 0x8d, 0xd6, 0xbf, 0xfc, 0x23, 0x2f, 0xff, 00, 0x3f, - 0x4b, 0xff, 00, 0x7c, 0x7f, 0xf5, 0xe8, 0xff, 00, 0x84, - 0x65, 0xff, 00, 0xe7, 0xe9, 0x7f, 0xef, 0x8f, 0xfe, 0xbd, - 00, 0x64, 0x7f, 0xc2, 0x55, 0xe2, 0x6f, 0xfa, 0x5, 0xe9, - 0x1f, 0xf8, 0x19, 0x27, 0xff, 00, 0x1b, 0xa3, 0xfe, 0x12, - 0xaf, 0x13, 0x7f, 0xd0, 0x2f, 0x48, 0xff, 00, 0xc0, 0xc9, - 0x3f, 0xf8, 0xdd, 0x6b, 0xff, 00, 0xc2, 0x32, 0xff, 00, - 0xf3, 0xf4, 0xbf, 0xf7, 0xc7, 0xff, 00, 0x5e, 0x8f, 0xf8, - 0x46, 0x5f, 0xfe, 0x7e, 0x97, 0xfe, 0xf8, 0xff, 00, 0xeb, - 0xd0, 0x6, 0x47, 0xfc, 0x25, 0x5e, 0x26, 0xff, 00, 0xa0, - 0x5e, 0x91, 0xff, 00, 0x81, 0x92, 0x7f, 0xf1, 0xba, 0x3f, - 0xe1, 0x2a, 0xf1, 0x37, 0xfd, 0x2, 0xf4, 0x8f, 0xfc, 0xc, - 0x93, 0xff, 00, 0x8d, 0xd6, 0xbf, 0xfc, 0x23, 0x2f, 0xff, - 00, 0x3f, 0x4b, 0xff, 00, 0x7c, 0x7f, 0xf5, 0xe8, 0xff, - 00, 0x84, 0x65, 0xff, 00, 0xe7, 0xe9, 0x7f, 0xef, 0x8f, - 0xfe, 0xbd, 00, 0x64, 0x7f, 0xc2, 0x55, 0xe2, 0x6f, 0xfa, - 0x5, 0xe9, 0x1f, 0xf8, 0x19, 0x27, 0xff, 00, 0x1b, 0xa3, - 0xfe, 0x12, 0xaf, 0x13, 0x7f, 0xd0, 0x2f, 0x48, 0xff, 00, - 0xc0, 0xc9, 0x3f, 0xf8, 0xdd, 0x6b, 0xff, 00, 0xc2, 0x32, - 0xff, 00, 0xf3, 0xf4, 0xbf, 0xf7, 0xc7, 0xff, 00, 0x5e, - 0x8f, 0xf8, 0x46, 0x5f, 0xfe, 0x7e, 0x97, 0xfe, 0xf8, 0xff, - 00, 0xeb, 0xd0, 0x6, 0x47, 0xfc, 0x25, 0x5e, 0x26, 0xff, - 00, 0xa0, 0x5e, 0x91, 0xff, 00, 0x81, 0x92, 0x7f, 0xf1, - 0xba, 0x3f, 0xe1, 0x2a, 0xf1, 0x37, 0xfd, 0x2, 0xf4, 0x8f, - 0xfc, 0xc, 0x93, 0xff, 00, 0x8d, 0xd6, 0xbf, 0xfc, 0x23, - 0x2f, 0xff, 00, 0x3f, 0x4b, 0xff, 00, 0x7c, 0x7f, 0xf5, - 0xe8, 0xff, 00, 0x84, 0x65, 0xff, 00, 0xe7, 0xe9, 0x7f, - 0xef, 0x8f, 0xfe, 0xbd, 00, 0x64, 0x7f, 0xc2, 0x55, 0xe2, - 0x6f, 0xfa, 0x5, 0xe9, 0x1f, 0xf8, 0x19, 0x27, 0xff, 00, - 0x1b, 0xa3, 0xfe, 0x12, 0xaf, 0x13, 0x7f, 0xd0, 0x2f, 0x48, - 0xff, 00, 0xc0, 0xc9, 0x3f, 0xf8, 0xdd, 0x6b, 0xff, 00, - 0xc2, 0x32, 0xff, 00, 0xf3, 0xf4, 0xbf, 0xf7, 0xc7, 0xff, - 00, 0x5e, 0x8f, 0xf8, 0x46, 0x5f, 0xfe, 0x7e, 0x97, 0xfe, - 0xf8, 0xff, 00, 0xeb, 0xd0, 0x6, 0x47, 0xfc, 0x25, 0x5e, - 0x26, 0xff, 00, 0xa0, 0x5e, 0x91, 0xff, 00, 0x81, 0x92, - 0x7f, 0xf1, 0xba, 0x3f, 0xe1, 0x2a, 0xf1, 0x37, 0xfd, 0x2, - 0xf4, 0x8f, 0xfc, 0xc, 0x93, 0xff, 00, 0x8d, 0xd6, 0xbf, - 0xfc, 0x23, 0x2f, 0xff, 00, 0x3f, 0x4b, 0xff, 00, 0x7c, - 0x7f, 0xf5, 0xe8, 0xff, 00, 0x84, 0x65, 0xff, 00, 0xe7, - 0xe9, 0x7f, 0xef, 0x8f, 0xfe, 0xbd, 00, 0x64, 0x7f, 0xc2, - 0x55, 0xe2, 0x6f, 0xfa, 0x5, 0xe9, 0x1f, 0xf8, 0x19, 0x27, - 0xff, 00, 0x1b, 0xa3, 0xfe, 0x12, 0xaf, 0x13, 0x7f, 0xd0, - 0x2f, 0x48, 0xff, 00, 0xc0, 0xc9, 0x3f, 0xf8, 0xdd, 0x6b, - 0xff, 00, 0xc2, 0x32, 0xff, 00, 0xf3, 0xf4, 0xbf, 0xf7, - 0xc7, 0xff, 00, 0x5e, 0x8f, 0xf8, 0x46, 0x5f, 0xfe, 0x7e, - 0x97, 0xfe, 0xf8, 0xff, 00, 0xeb, 0xd0, 0x6, 0x47, 0xfc, - 0x25, 0x5e, 0x26, 0xff, 00, 0xa0, 0x5e, 0x91, 0xff, 00, - 0x81, 0x92, 0x7f, 0xf1, 0xba, 0x3f, 0xe1, 0x2a, 0xf1, 0x37, - 0xfd, 0x2, 0xf4, 0x8f, 0xfc, 0xc, 0x93, 0xff, 00, 0x8d, - 0xd6, 0xbf, 0xfc, 0x23, 0x2f, 0xff, 00, 0x3f, 0x4b, 0xff, - 00, 0x7c, 0x7f, 0xf5, 0xe8, 0xff, 00, 0x84, 0x65, 0xff, - 00, 0xe7, 0xe9, 0x7f, 0xef, 0x8f, 0xfe, 0xbd, 00, 0x64, - 0x7f, 0xc2, 0x55, 0xe2, 0x6f, 0xfa, 0x5, 0xe9, 0x1f, 0xf8, - 0x19, 0x27, 0xff, 00, 0x1b, 0xa3, 0xfe, 0x12, 0xaf, 0x13, - 0x7f, 0xd0, 0x2f, 0x48, 0xff, 00, 0xc0, 0xc9, 0x3f, 0xf8, - 0xdd, 0x6b, 0xff, 00, 0xc2, 0x32, 0xff, 00, 0xf3, 0xf4, - 0xbf, 0xf7, 0xc7, 0xff, 00, 0x5e, 0x8f, 0xf8, 0x46, 0x5f, - 0xfe, 0x7e, 0x97, 0xfe, 0xf8, 0xff, 00, 0xeb, 0xd0, 0x6, - 0x47, 0xfc, 0x25, 0x5e, 0x26, 0xff, 00, 0xa0, 0x5e, 0x91, - 0xff, 00, 0x81, 0x92, 0x7f, 0xf1, 0xba, 0x3f, 0xe1, 0x2a, - 0xf1, 0x37, 0xfd, 0x2, 0xf4, 0x8f, 0xfc, 0xc, 0x93, 0xff, - 00, 0x8d, 0xd6, 0xbf, 0xfc, 0x23, 0x2f, 0xff, 00, 0x3f, - 0x4b, 0xff, 00, 0x7c, 0x7f, 0xf5, 0xe8, 0xff, 00, 0x84, - 0x65, 0xff, 00, 0xe7, 0xe9, 0x7f, 0xef, 0x8f, 0xfe, 0xbd, - 00, 0x64, 0x7f, 0xc2, 0x55, 0xe2, 0x6f, 0xfa, 0x5, 0xe9, - 0x1f, 0xf8, 0x19, 0x27, 0xff, 00, 0x1b, 0xa3, 0xfe, 0x12, - 0xaf, 0x13, 0x7f, 0xd0, 0x2f, 0x48, 0xff, 00, 0xc0, 0xc9, - 0x3f, 0xf8, 0xdd, 0x6b, 0xff, 00, 0xc2, 0x32, 0xff, 00, - 0xf3, 0xf4, 0xbf, 0xf7, 0xc7, 0xff, 00, 0x5e, 0x8f, 0xf8, - 0x46, 0x5f, 0xfe, 0x7e, 0x97, 0xfe, 0xf8, 0xff, 00, 0xeb, - 0xd0, 0x6, 0x47, 0xfc, 0x25, 0x5e, 0x26, 0xff, 00, 0xa0, - 0x5e, 0x91, 0xff, 00, 0x81, 0x92, 0x7f, 0xf1, 0xba, 0x3f, - 0xe1, 0x2a, 0xf1, 0x37, 0xfd, 0x2, 0xf4, 0x8f, 0xfc, 0xc, - 0x93, 0xff, 00, 0x8d, 0xd6, 0xbf, 0xfc, 0x23, 0x2f, 0xff, - 00, 0x3f, 0x4b, 0xff, 00, 0x7c, 0x7f, 0xf5, 0xe8, 0xff, - 00, 0x84, 0x65, 0xff, 00, 0xe7, 0xe9, 0x7f, 0xef, 0x8f, - 0xfe, 0xbd, 00, 0x64, 0x7f, 0xc2, 0x55, 0xe2, 0x6f, 0xfa, - 0x5, 0xe9, 0x1f, 0xf8, 0x19, 0x27, 0xff, 00, 0x1b, 0xa3, - 0xfe, 0x12, 0xaf, 0x13, 0x7f, 0xd0, 0x2f, 0x48, 0xff, 00, - 0xc0, 0xc9, 0x3f, 0xf8, 0xdd, 0x6b, 0xff, 00, 0xc2, 0x32, - 0xff, 00, 0xf3, 0xf4, 0xbf, 0xf7, 0xc7, 0xff, 00, 0x5e, - 0x8f, 0xf8, 0x46, 0x5f, 0xfe, 0x7e, 0x97, 0xfe, 0xf8, 0xff, - 00, 0xeb, 0xd0, 0x6, 0x47, 0xfc, 0x25, 0x5e, 0x26, 0xff, - 00, 0xa0, 0x5e, 0x91, 0xff, 00, 0x81, 0x92, 0x7f, 0xf1, - 0xba, 0x3f, 0xe1, 0x2a, 0xf1, 0x37, 0xfd, 0x2, 0xf4, 0x8f, - 0xfc, 0xc, 0x93, 0xff, 00, 0x8d, 0xd6, 0xbf, 0xfc, 0x23, - 0x2f, 0xff, 00, 0x3f, 0x4b, 0xff, 00, 0x7c, 0x7f, 0xf5, - 0xe8, 0xff, 00, 0x84, 0x65, 0xff, 00, 0xe7, 0xe9, 0x7f, - 0xef, 0x8f, 0xfe, 0xbd, 00, 0x72, 0xb6, 0x11, 0x5d, 0x9, - 0x6f, 0xae, 0x6f, 0x44, 0x2b, 0x3d, 0xdd, 0xcb, 0x4e, 0x52, - 0x16, 0x2c, 0xab, 0x90, 0x6, 0x32, 0x40, 0x27, 0xa7, 0xa5, - 0x76, 0xda, 0x3f, 0xfc, 0x82, 0xa1, 0xff, 00, 0x81, 0x7f, - 0xe8, 0x46, 0xa9, 0xff, 00, 0xc2, 0x32, 0xff, 00, 0xf3, - 0xf4, 0xbf, 0xf7, 0xc7, 0xff, 00, 0x5e, 0xb5, 0xac, 0xac, - 0x8d, 0xa5, 0xa2, 0x40, 0x5c, 0x31, 0x5c, 0xf3, 0x8c, 0x75, - 0x39, 0xa0, 0xf, 0xff, 0xd9, 0}; - -static const unsigned char data_index_html[] = { - /* /index.html */ - 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x20, 0x6f, 0x6e, 0x4c, 0x6f, 0x61, 0x64, - 0x3d, 0x22, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x73, - 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x28, - 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x6c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x68, 0x72, 0x65, 0x66, 0x3d, - 0x27, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, - 0x6d, 0x6c, 0x27, 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x2c, - 0x31, 0x30, 0x30, 0x29, 0x22, 0x62, 0x67, 0x63, 0x6f, 0x6c, - 0x6f, 0x72, 0x3d, 0x22, 0x77, 0x68, 0x69, 0x74, 0x65, 0x22, - 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, - 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, - 0x22, 0x3e, 0xd, 0xa, 0x4c, 0x6f, 0x61, 0x64, 0x69, 0x6e, - 0x67, 0x20, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, - 0x74, 0x6d, 0x6c, 0x2e, 0x20, 0x20, 0x43, 0x6c, 0x69, 0x63, - 0x6b, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, - 0x22, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, - 0x6d, 0x6c, 0x22, 0x3e, 0x68, 0x65, 0x72, 0x65, 0x3c, 0x2f, - 0x61, 0x3e, 0x20, 0x69, 0x66, 0x20, 0x6e, 0x6f, 0x74, 0x20, - 0x61, 0x75, 0x74, 0x6f, 0x6d, 0x61, 0x74, 0x69, 0x63, 0x61, - 0x6c, 0x6c, 0x79, 0x20, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, - 0x63, 0x74, 0x65, 0x64, 0x2e, 0xd, 0xa, 0x3c, 0x2f, 0x66, - 0x6f, 0x6e, 0x74, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, - 0x6e, 0x74, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, - 0x79, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, - 0x3e, 0xd, 0xa, 0xd, 0xa, 0}; - -static const unsigned char data_index_shtml[] = { - /* /index.shtml */ - 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x20, 0x6f, 0x6e, 0x4c, 0x6f, 0x61, 0x64, - 0x3d, 0x22, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x73, - 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x28, - 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x6c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x68, 0x72, 0x65, 0x66, 0x3d, - 0x27, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, - 0x6d, 0x6c, 0x27, 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x2c, - 0x32, 0x30, 0x30, 0x30, 0x29, 0x22, 0x62, 0x67, 0x63, 0x6f, - 0x6c, 0x6f, 0x72, 0x3d, 0x22, 0x77, 0x68, 0x69, 0x74, 0x65, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, - 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, 0x69, 0x61, - 0x6c, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x52, 0x54, 0x4f, - 0x53, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, - 0x6c, 0x22, 0x3e, 0x54, 0x43, 0x50, 0x20, 0x53, 0x74, 0x61, - 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, 0x63, 0x70, 0x2e, 0x73, - 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, - 0x2e, 0x66, 0x72, 0x65, 0x65, 0x72, 0x74, 0x6f, 0x73, 0x2e, - 0x6f, 0x72, 0x67, 0x2f, 0x22, 0x3e, 0x46, 0x72, 0x65, 0x65, - 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x48, - 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6d, 0x61, 0x67, 0x65, - 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x4c, 0x61, 0x72, - 0x67, 0x65, 0x20, 0x4a, 0x50, 0x47, 0x3c, 0x2f, 0x61, 0x3e, - 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, - 0xa, 0x3c, 0x68, 0x72, 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, - 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x32, 0x3e, - 0x54, 0x61, 0x73, 0x6b, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, - 0x73, 0x74, 0x69, 0x63, 0x73, 0x3c, 0x2f, 0x68, 0x32, 0x3e, - 0xd, 0xa, 0x50, 0x61, 0x67, 0x65, 0x20, 0x77, 0x69, 0x6c, - 0x6c, 0x20, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x20, - 0x65, 0x76, 0x65, 0x72, 0x79, 0x20, 0x32, 0x20, 0x73, 0x65, - 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x2e, 0x3c, 0x70, 0x3e, 0xd, - 0xa, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, - 0x65, 0x3d, 0x22, 0x63, 0x6f, 0x75, 0x72, 0x69, 0x65, 0x72, - 0x22, 0x3e, 0x3c, 0x70, 0x72, 0x65, 0x3e, 0x54, 0x61, 0x73, - 0x6b, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x53, 0x74, 0x61, 0x74, 0x65, 0x20, 0x20, 0x50, 0x72, - 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x20, 0x20, 0x53, 0x74, - 0x61, 0x63, 0x6b, 0x9, 0x23, 0x3c, 0x62, 0x72, 0x3e, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x3c, 0x62, 0x72, - 0x3e, 0xd, 0xa, 0x25, 0x21, 0x20, 0x72, 0x74, 0x6f, 0x73, - 0x2d, 0x73, 0x74, 0x61, 0x74, 0x73, 0xd, 0xa, 0x3c, 0x2f, - 0x70, 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, - 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, - 0xd, 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xd, - 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, 0xa, - 0xd, 0xa, 0}; - -static const unsigned char data_io_shtml[] = { - /* /io.shtml */ - 0x2f, 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x20, 0x62, 0x67, 0x63, 0x6f, 0x6c, 0x6f, - 0x72, 0x3d, 0x22, 0x77, 0x68, 0x69, 0x74, 0x65, 0x22, 0x3e, - 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, - 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, - 0x3e, 0xd, 0xa, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, - 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x52, 0x54, 0x4f, 0x53, 0x20, - 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, - 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, - 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, - 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, - 0x3e, 0x54, 0x43, 0x50, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, - 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, - 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, - 0x66, 0x3d, 0x22, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, - 0x6d, 0x6c, 0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, - 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, - 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, - 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, - 0x72, 0x65, 0x65, 0x72, 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x22, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, - 0x4f, 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x48, 0x6f, 0x6d, - 0x65, 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x20, - 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, - 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6f, - 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x49, 0x4f, - 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, - 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, - 0x66, 0x3d, 0x22, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2e, 0x68, - 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x4c, 0x61, 0x72, 0x67, 0x65, - 0x20, 0x4a, 0x50, 0x47, 0x3c, 0x2f, 0x61, 0x3e, 0xd, 0xa, - 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, - 0x68, 0x72, 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x3e, 0x4c, 0x45, - 0x44, 0x20, 0x49, 0x4f, 0x3c, 0x2f, 0x62, 0x3e, 0x3c, 0x62, - 0x72, 0x3e, 0xd, 0xa, 0xd, 0xa, 0x3c, 0x70, 0x3e, 0xd, - 0xa, 0xd, 0xa, 0x55, 0x73, 0x65, 0x20, 0x74, 0x68, 0x65, - 0x20, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x20, 0x62, 0x6f, 0x78, - 0x20, 0x74, 0x6f, 0x20, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6f, - 0x6e, 0x20, 0x6f, 0x72, 0x20, 0x6f, 0x66, 0x66, 0x20, 0x74, - 0x68, 0x65, 0x20, 0x4c, 0x45, 0x44, 0x2c, 0x20, 0x74, 0x68, - 0x65, 0x6e, 0x20, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x20, 0x22, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x49, 0x4f, 0x22, - 0x2e, 0xd, 0xa, 0xd, 0xa, 0xd, 0xa, 0x3c, 0x70, 0x3e, - 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x6e, 0x61, - 0x6d, 0x65, 0x3d, 0x22, 0x61, 0x46, 0x6f, 0x72, 0x6d, 0x22, - 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3d, 0x22, 0x2f, - 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x20, - 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x3d, 0x22, 0x67, 0x65, - 0x74, 0x22, 0x3e, 0xd, 0xa, 0x25, 0x21, 0x20, 0x6c, 0x65, - 0x64, 0x2d, 0x69, 0x6f, 0xd, 0xa, 0x3c, 0x70, 0x3e, 0xd, - 0xa, 0x3c, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x74, 0x79, - 0x70, 0x65, 0x3d, 0x22, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, - 0x22, 0x20, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3d, 0x22, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x49, 0x4f, 0x22, 0x3e, - 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x72, 0x6d, 0x3e, 0xd, - 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, - 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xd, 0xa, 0x3c, - 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xd, 0xa, 0x3c, 0x2f, - 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, 0xa, 0xd, 0xa, 0}; - -static const unsigned char data_logo_jpg[] = { - /* /logo.jpg */ - 0x2f, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, 0x6a, 0x70, 0x67, 0, - 0xff, 0xd8, 0xff, 0xe0, 00, 0x10, 0x4a, 0x46, 0x49, 0x46, - 00, 0x1, 0x1, 00, 00, 0x1, 00, 0x1, 00, 00, - 0xff, 0xdb, 00, 0x43, 00, 0x3, 0x2, 0x2, 0x3, 0x2, - 0x2, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x3, 0x4, 0x5, - 0x8, 0x5, 0x5, 0x4, 0x4, 0x5, 0xa, 0x7, 0x7, 0x6, - 0x8, 0xc, 0xa, 0xc, 0xc, 0xb, 0xa, 0xb, 0xb, 0xd, - 0xe, 0x12, 0x10, 0xd, 0xe, 0x11, 0xe, 0xb, 0xb, 0x10, - 0x16, 0x10, 0x11, 0x13, 0x14, 0x15, 0x15, 0x15, 0xc, 0xf, - 0x17, 0x18, 0x16, 0x14, 0x18, 0x12, 0x14, 0x15, 0x14, 0xff, - 0xdb, 00, 0x43, 0x1, 0x3, 0x4, 0x4, 0x5, 0x4, 0x5, - 0x9, 0x5, 0x5, 0x9, 0x14, 0xd, 0xb, 0xd, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0xff, 0xc0, - 00, 0x11, 0x8, 0x1, 0x39, 0x2, 0x1b, 0x3, 0x1, 0x22, - 00, 0x2, 0x11, 0x1, 0x3, 0x11, 0x1, 0xff, 0xc4, 00, - 0x1f, 00, 00, 0x1, 0x5, 0x1, 0x1, 0x1, 0x1, 0x1, - 0x1, 00, 00, 00, 00, 00, 00, 00, 00, 0x1, - 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb, - 0xff, 0xc4, 00, 0xb5, 0x10, 00, 0x2, 0x1, 0x3, 0x3, - 0x2, 0x4, 0x3, 0x5, 0x5, 0x4, 0x4, 00, 00, 0x1, - 0x7d, 0x1, 0x2, 0x3, 00, 0x4, 0x11, 0x5, 0x12, 0x21, - 0x31, 0x41, 0x6, 0x13, 0x51, 0x61, 0x7, 0x22, 0x71, 0x14, - 0x32, 0x81, 0x91, 0xa1, 0x8, 0x23, 0x42, 0xb1, 0xc1, 0x15, - 0x52, 0xd1, 0xf0, 0x24, 0x33, 0x62, 0x72, 0x82, 0x9, 0xa, - 0x16, 0x17, 0x18, 0x19, 0x1a, 0x25, 0x26, 0x27, 0x28, 0x29, - 0x2a, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x43, 0x44, - 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x53, 0x54, 0x55, 0x56, - 0x57, 0x58, 0x59, 0x5a, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, - 0x69, 0x6a, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, - 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x92, 0x93, - 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0xa2, 0xa3, 0xa4, - 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xb2, 0xb3, 0xb4, 0xb5, - 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, - 0xc7, 0xc8, 0xc9, 0xca, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, - 0xd8, 0xd9, 0xda, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, - 0xe8, 0xe9, 0xea, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, - 0xf8, 0xf9, 0xfa, 0xff, 0xc4, 00, 0x1f, 0x1, 00, 0x3, - 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 00, - 00, 00, 00, 00, 00, 0x1, 0x2, 0x3, 0x4, 0x5, - 0x6, 0x7, 0x8, 0x9, 0xa, 0xb, 0xff, 0xc4, 00, 0xb5, - 0x11, 00, 0x2, 0x1, 0x2, 0x4, 0x4, 0x3, 0x4, 0x7, - 0x5, 0x4, 0x4, 00, 0x1, 0x2, 0x77, 00, 0x1, 0x2, - 0x3, 0x11, 0x4, 0x5, 0x21, 0x31, 0x6, 0x12, 0x41, 0x51, - 0x7, 0x61, 0x71, 0x13, 0x22, 0x32, 0x81, 0x8, 0x14, 0x42, - 0x91, 0xa1, 0xb1, 0xc1, 0x9, 0x23, 0x33, 0x52, 0xf0, 0x15, - 0x62, 0x72, 0xd1, 0xa, 0x16, 0x24, 0x34, 0xe1, 0x25, 0xf1, - 0x17, 0x18, 0x19, 0x1a, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x35, - 0x36, 0x37, 0x38, 0x39, 0x3a, 0x43, 0x44, 0x45, 0x46, 0x47, - 0x48, 0x49, 0x4a, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, - 0x5a, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x73, - 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x82, 0x83, 0x84, - 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x92, 0x93, 0x94, 0x95, - 0x96, 0x97, 0x98, 0x99, 0x9a, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, - 0xa7, 0xa8, 0xa9, 0xaa, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, - 0xb8, 0xb9, 0xba, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, - 0xc9, 0xca, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, - 0xda, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, - 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xff, - 0xda, 00, 0xc, 0x3, 0x1, 00, 0x2, 0x11, 0x3, 0x11, - 00, 0x3f, 00, 0xfd, 0x53, 0xa2, 0x8a, 0x28, 00, 0xa2, - 0x8a, 0x28, 00, 0xa2, 0x8a, 0x42, 0x71, 0x40, 0x7, 0x4a, - 0x42, 0x69, 0x9, 0xa6, 0xb3, 0x50, 0x2, 0x96, 0xc5, 0x31, - 0x9c, 0x54, 0x6e, 0xf5, 0xb, 0xcb, 0x40, 0x13, 0x34, 0x82, - 0xa3, 0x69, 0xb0, 0x3a, 0xd5, 0x49, 0x66, 0x7e, 0x91, 0xc6, - 0xf3, 0x36, 0x40, 0xda, 0x83, 0x9e, 0x4e, 0x33, 0xf4, 0xac, - 0xdb, 0xcd, 0x1b, 0xc4, 0x97, 0xd7, 0x13, 0x24, 0x77, 0xf6, - 0x3a, 0x6d, 0xa1, 0xe1, 0x1e, 0x28, 0x9a, 0x69, 0xfa, 0xf5, - 0xcb, 0x61, 0x47, 0xd3, 0x69, 0xc7, 0xa9, 0xac, 0x2a, 0xd5, - 0xf6, 0x6b, 0x48, 0xb9, 0x3e, 0xcb, 0xfe, 0xd, 0x97, 0xe2, - 0x73, 0x56, 0xad, 0xec, 0x97, 0xbb, 0x7, 0x27, 0xd9, 0x7f, - 0xc1, 0x69, 0x7e, 0x26, 0xc3, 0x4f, 0xc7, 0x5a, 0x89, 0xae, - 0x6b, 0x99, 0xbf, 0xf8, 0x61, 0xa9, 0x6a, 0x96, 0xde, 0x4d, - 0xcf, 0x8d, 0xf5, 0xc1, 0xfe, 0xd5, 0xaa, 0xc1, 0x6e, 0x7f, - 0x34, 0x8c, 0x1f, 0xd6, 0xb9, 0xe9, 0x3f, 0x67, 0xc9, 0xf7, - 0xef, 0x8b, 0xc7, 0xbe, 0x29, 0x57, 0xce, 0x72, 0xd7, 0xec, - 0x6b, 0xcc, 0xab, 0x8c, 0xc6, 0x45, 0xfe, 0xef, 0xa, 0xda, - 0xf3, 0x94, 0x53, 0xfc, 0xdf, 0xe6, 0x78, 0xf5, 0xb1, 0xf9, - 0x84, 0x5f, 0xee, 0xb0, 0x52, 0x6b, 0xce, 0x70, 0x4f, 0xee, - 0x4d, 0xfe, 0x67, 0xa2, 0x9b, 0xa1, 0xeb, 0x4d, 0xfb, 0x50, - 0xec, 0x6b, 0xce, 0x7f, 0xe1, 0x47, 0xf8, 0x86, 0xf, 0xf8, - 0xf7, 0xf8, 0x85, 0xad, 0x1f, 0xfa, 0xef, 0x26, 0xff, 00, - 0xe7, 0x4b, 0xff, 00, 0xa, 0xb3, 0xc7, 0xf6, 0xf9, 0xfb, - 0x37, 0x8f, 0xc9, 0x1d, 0xbc, 0xfb, 0x48, 0x9f, 0xf9, 0xa1, - 0xac, 0xbf, 0xb4, 0x71, 0x51, 0xf8, 0xf0, 0x73, 0xf9, 0x38, - 0x3f, 0xfd, 0xb9, 0x18, 0xac, 0xdb, 0x1b, 0x1f, 0xe2, 0x60, - 0x2a, 0x7c, 0x9d, 0x37, 0xff, 00, 0xb7, 0xa3, 0xd1, 0x7e, - 0xd5, 0xef, 0x47, 0xda, 0xbd, 0xeb, 0xcc, 0x26, 0xf8, 0x6b, - 0xf1, 0x54, 0x7f, 0xaa, 0xf1, 0xdd, 0x93, 0x7f, 0xbf, 0x65, - 0x10, 0xff, 00, 0xda, 0x55, 0x51, 0xbe, 0x1e, 0x7c, 0x64, - 0x8c, 0xe5, 0x3c, 0x67, 0xa5, 0x48, 0x3d, 0x1a, 0xdd, 0x7, - 0xfe, 0xd0, 0xac, 0xde, 0x6f, 0x56, 0x3b, 0xe0, 0xea, 0xfd, - 0xd0, 0xff, 00, 0xe4, 0xcc, 0xa5, 0x9f, 0x56, 0x8e, 0xf9, - 0x7d, 0x7f, 0xba, 0x9f, 0xff, 00, 0x2c, 0x3d, 0x6c, 0x5c, - 0x8f, 0x5a, 0x51, 0x74, 0x7, 0x7a, 0xf2, 0x54, 0xf0, 0x9f, - 0xc6, 0x7b, 0x7c, 0x7f, 0xc4, 0xdf, 0x41, 0xba, 0xc0, 0xfe, - 0x34, 0x23, 0x3f, 0x94, 0x62, 0xa5, 0x36, 0x9f, 0x19, 0x6d, - 0x94, 0xff, 00, 0xa2, 0x78, 0x6a, 0xe0, 0xfa, 0xfe, 0xf7, - 0x3f, 0xfa, 0x10, 0xa6, 0xb3, 0x9f, 0xe6, 0xc3, 0x55, 0x5f, - 0xf6, 0xe7, 0xf9, 0x36, 0x35, 0xc4, 0x1f, 0xcf, 0x83, 0xac, - 0xbf, 0xed, 0xcb, 0xfe, 0x4d, 0x9e, 0xac, 0x2e, 0x73, 0xde, - 0x94, 0x5c, 0x8f, 0x5a, 0xf1, 0xd9, 0xef, 0xbe, 0x34, 0x41, - 0xd3, 0x41, 0xd0, 0x64, 0xc7, 0xf7, 0x16, 0x53, 0xff, 00, - 0xb5, 0x2a, 0x83, 0xf8, 0xa3, 0xe3, 0x3d, 0xbb, 0x7c, 0xde, - 0x12, 0xd3, 0x65, 0x5f, 0x48, 0xe2, 0x97, 0xff, 00, 0x8e, - 0xd6, 0x32, 0xe2, 0xa, 0x10, 0xf8, 0xa8, 0xd5, 0xff, 00, - 0xc1, 0x72, 0x30, 0x97, 0x14, 0x61, 0xe1, 0xf1, 0x61, 0xeb, - 0x2f, 0xfb, 0x85, 0x23, 0xdd, 0x3e, 0xd1, 0xef, 0x4e, 0x13, - 0x8f, 0x5a, 0xf0, 0xc4, 0xf8, 0x8b, 0xf1, 0x4a, 0xd8, 0xff, - 00, 0xa4, 0xfc, 0x3e, 0x69, 0x87, 0xfd, 0x30, 0x12, 0xf, - 0xe8, 0xd5, 0x3c, 0x7f, 0x18, 0x7c, 0x67, 00, 0xc5, 0xcf, - 0xc3, 0x1d, 0x50, 0x1e, 0xed, 0x1b, 0xc8, 0x7f, 0x4f, 0x2a, - 0x9a, 0xe2, 0x3c, 0x7, 0xda, 0xe7, 0x8f, 0xad, 0x39, 0xff, - 00, 0xf2, 0x23, 0x8f, 0x16, 0x65, 0x9f, 0x6f, 0x9e, 0x3e, - 0xb4, 0xaa, 0x7f, 0xf2, 0x2c, 0xf6, 0xdf, 0x3a, 0x9c, 0x27, - 0x2, 0xbc, 0x61, 0x3e, 0x38, 0xea, 0x91, 0xff, 00, 0xc7, - 0xd7, 0x80, 0x7c, 0x43, 0xf, 0xfb, 0x96, 0xe5, 0xbf, 0x98, - 0x15, 0x2b, 0x7e, 0xd0, 0x16, 0x90, 0xa8, 0x33, 0x78, 0x53, - 0xc4, 0xf1, 0xb7, 0x71, 0xf6, 0x5, 0xc7, 0xe6, 0x5c, 0x56, - 0xcb, 0x88, 0x32, 0xce, 0xb5, 0x6d, 0xea, 0xa4, 0xbf, 0x34, - 0x6e, 0xb8, 0xa7, 0x27, 0x7a, 0xba, 0xf6, 0xf5, 0x8c, 0x97, - 0xe6, 0x91, 0xec, 0x7e, 0x78, 0xf5, 0xa5, 0xf3, 0xbd, 0xeb, - 0xc4, 0xe4, 0xfd, 0xa5, 0x74, 0x58, 0x7e, 0xff, 00, 0x87, - 0xfc, 0x46, 0x98, 0xf5, 0xb3, 0x8c, 0x7f, 0xed, 0x4a, 0x6a, - 0x7e, 0xd4, 0x7e, 0x19, 0xcf, 0xef, 0x34, 0xdd, 0x6e, 0xf, - 0xfa, 0xe9, 0x6a, 0x9f, 0xd2, 0x43, 0x53, 0xfe, 0xb1, 0xe5, - 0x3b, 0x3c, 0x44, 0x7f, 0x12, 0x3f, 0xd6, 0xcc, 0x8d, 0x3b, - 0x3c, 0x54, 0x57, 0xdf, 0xfe, 0x47, 0xb7, 0xf9, 0xd4, 0x79, - 0xb5, 0xe3, 0xf6, 0xdf, 0xb4, 0xbf, 0x82, 0xe6, 0xff, 00, - 0x59, 0x75, 0x79, 0x6d, 0xed, 0x25, 0x9b, 0x9f, 0xfd, 0x4, - 0x1a, 0xd1, 0x83, 0xf6, 0x82, 0xf0, 0x24, 0xe4, 0x1, 0xaf, - 0x5, 0x27, 0x8f, 0x9e, 0xd6, 0x65, 0xfe, 0x69, 0x5d, 0x10, - 0xcf, 0x32, 0xb9, 0xfc, 0x38, 0x98, 0x7f, 0xe0, 0x51, 0xff, - 00, 0x33, 0xae, 0x1c, 0x47, 0x93, 0x54, 0xf8, 0x71, 0x94, - 0xff, 00, 0xf0, 0x38, 0xaf, 0xcd, 0x9e, 0xa2, 0x25, 0xcd, - 0x2f, 0x98, 0x2b, 0xcf, 0xed, 0xfe, 0x33, 0xf8, 0x32, 0xe4, - 0x7c, 0xbe, 0x24, 0xb0, 0x5f, 0xfa, 0xe9, 0x26, 0xcf, 0xfd, - 0xb, 0x15, 0x79, 0x7e, 0x28, 0xf8, 0x44, 0x80, 0x4f, 0x8a, - 0x74, 0x6e, 0x7d, 0x75, 0x8, 0x87, 0xfe, 0xcd, 0x5d, 0x91, - 0xcc, 0x30, 0x73, 0xd6, 0x35, 0xa2, 0xff, 00, 0xed, 0xe5, - 0xfe, 0x67, 0x7c, 0x73, 0x4c, 0x4, 0xd5, 0xe3, 0x88, 0x83, - 0xff, 00, 0xb7, 0xa3, 0xfe, 0x67, 0x66, 0x24, 0xa5, 0x12, - 0xfb, 0xd7, 0x1b, 0xff, 00, 0xb, 0x47, 0xc2, 0x1f, 0xf4, - 0x35, 0x68, 0x9f, 0xf8, 0x31, 0x87, 0xff, 00, 0x8a, 0xab, - 0x36, 0xff, 00, 0x10, 0xbc, 0x35, 0x74, 0x3f, 0x71, 0xe2, - 0x2d, 0x2a, 0x6e, 0xff, 00, 0xbb, 0xbd, 0x89, 0xbf, 0x93, - 0x55, 0xac, 0x66, 0x1a, 0x4e, 0xca, 0xac, 0x7e, 0xf4, 0x69, - 0x1c, 0x7e, 0x12, 0x4e, 0xd1, 0xad, 0x17, 0xff, 00, 0x6f, - 0x2f, 0xf3, 0x3a, 0xaf, 0x32, 0x97, 0xcc, 0xac, 0x8b, 0x7d, - 0x6e, 0xce, 0xef, 0x1e, 0x45, 0xdc, 0x13, 0x67, 0xa7, 0x97, - 0x22, 0xb7, 0xf2, 0x35, 0x6f, 0xce, 0x1e, 0xb5, 0xd4, 0xa4, - 0xa4, 0xae, 0x99, 0xdb, 0x19, 0x46, 0x4a, 0xf1, 0x77, 0x2e, - 0x79, 0x94, 0xbb, 0xfd, 0xea, 0x9f, 0x9d, 0xef, 0x4b, 0xe7, - 0x7b, 0xd5, 0x14, 0x5b, 0xdf, 0xef, 0x46, 0xff, 00, 0x7a, - 0xac, 0x25, 0xe2, 0x97, 0xcd, 0xa0, 0xb, 0x3b, 0xe9, 0x41, - 0xaa, 0xde, 0x6d, 0x28, 0x93, 0x3d, 0xe8, 0x2, 0xc6, 0x45, - 0x2e, 0x7d, 0xea, 0xbf, 0x99, 0x4a, 0x24, 0xa0, 0x9, 0xf3, - 0xef, 0x46, 0x6a, 0x1f, 0x32, 0x8f, 0x32, 0x80, 0x26, 0xcd, - 0x2e, 0x4d, 0x43, 0xe6, 0x51, 0xba, 0x80, 0x26, 0xc9, 0xa0, - 0x1a, 0x8b, 0x7d, 0x28, 0x6a, 00, 0x97, 0x22, 0x8c, 0x8a, - 0x66, 0xe1, 0x46, 0xe1, 0x40, 0xf, 0xc8, 0xa3, 0x22, 0x99, - 0xba, 0x8d, 0xd4, 00, 0xfc, 0xd1, 0x9a, 0x66, 0x45, 0x19, - 0x14, 0x1, 0x25, 0x14, 0xcc, 0xd1, 0x9a, 00, 0x7d, 0x14, - 0xdd, 0xd4, 0x6e, 0xa0, 0x7, 0x51, 0x4d, 0xdd, 0x4b, 0xba, - 0x80, 0x16, 0x8a, 0x4d, 0xd4, 0x75, 0xa0, 0x5, 0xa2, 0x8a, - 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, - 0xa2, 0x8a, 0x28, 0x1, 0x29, 0xa4, 0xd3, 0x89, 0xa8, 0xd8, - 0xd0, 00, 0xcd, 0x50, 0xc8, 0xfe, 0xf4, 0xae, 0xf5, 0x56, - 0x59, 0x70, 0x3a, 0xd0, 0x1, 0x24, 0x98, 0xa5, 0xb5, 0xb6, - 0x37, 0x3f, 0x33, 0x12, 0x10, 0x1f, 0xce, 0xb9, 0x8d, 0x67, - 0xc4, 0x46, 0x2d, 0x62, 0xc3, 0x49, 0xb4, 0x6, 0x6b, 0xcb, - 0x86, 0xdf, 0x28, 0x44, 0x2f, 0xe4, 0x43, 0x86, 0xf9, 0xdb, - 0x1c, 0x2e, 0x4a, 0xed, 0x5c, 0xf5, 0x39, 0xc0, 0x3b, 0x4d, - 0x76, 0xd6, 0xe8, 0x23, 0x82, 0x35, 0x3, 00, 0x28, 0x18, - 0xa8, 0x8c, 0xd4, 0x9b, 0x4b, 0xa1, 0x9c, 0x66, 0xa6, 0xda, - 0x5d, 0x7, 0x24, 0x6b, 0x18, 0xc2, 0xa8, 0x5f, 0xa0, 0xa7, - 0x51, 0x45, 0x59, 0xa0, 0x51, 0x5e, 0x57, 0xf1, 0xb3, 0xf6, - 0x96, 0xf0, 0x27, 0xc0, 0x6d, 0x16, 0x5b, 0xef, 0x12, 0xeb, - 0x56, 0xf1, 0xcc, 0xb9, 0xb, 0x69, 0x14, 0xd1, 0x99, 0x89, - 0xc7, 0x75, 0x2c, 0x8, 0x15, 0xf0, 0xf, 0x8e, 0xbf, 0xe0, - 0xb2, 0x57, 0x16, 0xd7, 0x92, 0xaf, 0x86, 0x74, 0x6b, 0x69, - 0xad, 0x83, 0x7c, 0x8d, 0x73, 0xf, 0xcc, 0x47, 0xe1, 0x25, - 00, 0x7e, 0xa9, 0x51, 0x5f, 0x29, 0xfe, 0xc5, 0x5f, 0xb5, - 0x9e, 0xbd, 0xfb, 0x45, 0x78, 0x5b, 0x58, 0xd7, 0x3c, 0x4b, - 0xa3, 0xff, 00, 0x62, 0xd8, 0xd9, 0x63, 0x6d, 0xd9, 0x84, - 0xc5, 0x9, 0xf5, 0x1b, 0x8b, 0x11, 0x5e, 0xb1, 0x61, 0xfb, - 0x4d, 0x7c, 0x3d, 0xd5, 0x75, 0x85, 0xd3, 0x2c, 0xf5, 0xd8, - 0x6e, 0xee, 0xde, 0x4f, 0x29, 0x16, 0x17, 0x47, 0xde, 0xde, - 0xd8, 0x6e, 0x68, 0x3, 0xd5, 0x28, 0xa6, 0x45, 0x2a, 0xcd, - 0x12, 0x48, 0xbf, 0x75, 0x80, 0x23, 0x3e, 0x95, 0x8d, 0xae, - 0xf8, 0xbf, 0x4f, 0xd0, 0x24, 0x58, 0xe7, 0x90, 0x19, 0xf, - 0xf0, 0x2b, 0xc, 0x8f, 0xc3, 0x35, 0x8d, 0x5a, 0xd4, 0xe8, - 0x47, 0x9e, 0xa3, 0xb2, 0x30, 0xad, 0x5e, 0x96, 0x1e, 0x1e, - 0xd2, 0xac, 0xac, 0xbc, 0xcd, 0xca, 0x2b, 0x92, 0x5f, 0x89, - 0x7a, 0x43, 0x77, 0x7f, 0xfc, 0x77, 0xfc, 0x6a, 0x65, 0xf8, - 0x89, 0xa4, 0x37, 0xf1, 0xbf, 0xfe, 0x3b, 0xfe, 0x35, 0xc8, - 0xb3, 0x1c, 0x23, 0xda, 0xa2, 0x38, 0x56, 0x6b, 0x81, 0x7b, - 0x55, 0x5f, 0x79, 0xd3, 0xd1, 0x5c, 0xe2, 0xf8, 0xf7, 0x49, - 0x6f, 0xf9, 0x68, 0xdf, 0xa7, 0xf8, 0xd4, 0xab, 0xe3, 0x6d, - 0x2d, 0xbf, 0xe5, 0xa9, 0xfd, 0x3f, 0xc6, 0xb4, 0x58, 0xdc, - 0x33, 0xda, 0xa2, 0xfb, 0xcd, 0x56, 0x61, 0x84, 0x7b, 0x55, - 0x5f, 0x79, 0xbd, 0x45, 0x62, 0xaf, 0x8b, 0xb4, 0xc6, 0xe9, - 0x3f, 0xf2, 0xff, 00, 0x1a, 0x9e, 0x2f, 0x11, 0xd8, 0x4b, - 0x8d, 0xb3, 0xa9, 0xfc, 0x6b, 0x45, 0x89, 0xa3, 0x2d, 0xa6, - 0xbe, 0xf3, 0x55, 0x8b, 0xc3, 0xcb, 0x69, 0xaf, 0xbc, 0xd2, - 0xc6, 0x69, 0xad, 0xc, 0x6f, 0xf7, 0x91, 0x5b, 0xea, 0x28, - 0x8a, 0x55, 0x99, 0x3, 0x21, 0xc8, 0x34, 0xfa, 0xe8, 0xd1, - 0xa3, 0xa7, 0x49, 0x22, 0xab, 0xe9, 0x96, 0x72, 0x7d, 0xfb, - 0x48, 0x1b, 0xfd, 0xe8, 0xd4, 0xff, 00, 0x4a, 0xaf, 0x27, - 0x86, 0xf4, 0x89, 0x7e, 0xfe, 0x97, 0x64, 0xff, 00, 0xef, - 0x5b, 0xa1, 0xfe, 0x95, 0xa5, 0x45, 0x66, 0xe9, 0x53, 0x96, - 0xf1, 0x5f, 0x71, 0x94, 0xa8, 0x52, 0x97, 0xc5, 0x4, 0xfe, - 0x48, 0xc3, 0x97, 0xc0, 0xde, 0x1b, 0x9b, 0xfd, 0x66, 0x81, - 0xa5, 0xbf, 0xfb, 0xd6, 0x71, 0x9f, 0xe9, 0x55, 0x64, 0xf8, - 0x65, 0xe1, 0x19, 0x73, 0xbb, 0xc3, 0x3a, 0x49, 0xcf, 0xfd, - 0x39, 0x47, 0xfe, 0x15, 0xd2, 0x34, 0x8a, 0x87, 0xe6, 0x60, - 0xbf, 0x53, 0x48, 0x25, 0x43, 0xfc, 0x6b, 0xf9, 0xd6, 0x12, - 0xc2, 0x61, 0x65, 0xf1, 0x53, 0x8f, 0xdc, 0x8e, 0x69, 0x60, - 0x70, 0x72, 0xf8, 0xa9, 0x45, 0xff, 00, 0xdb, 0xab, 0xfc, - 0x8e, 0x4e, 0x4f, 0x84, 0x3e, 0xa, 0x93, 0xaf, 0x85, 0xf4, - 0xbf, 0xf8, 0xd, 0xb2, 0x8f, 0xe5, 0x55, 0x64, 0xf8, 0x1f, - 0xe0, 0x49, 0x7e, 0xf7, 0x86, 0x2c, 0xbf, 0xe0, 0x21, 0x97, - 0xf9, 0x1a, 0xee, 0x37, 0xf, 0x51, 0x4b, 0x58, 0xbc, 0xb3, - 0x3, 0x2d, 0xe8, 0x41, 0xff, 00, 0xdb, 0xab, 0xfc, 0x8c, - 0x25, 0x93, 0xe5, 0xb3, 0xf8, 0xb0, 0xd0, 0x7f, 0xf6, 0xe4, - 0x7f, 0xc8, 0xf3, 0xb9, 0x3f, 0x67, 0xdf, 0x87, 0xd2, 0xf5, - 0xf0, 0xdc, 0x3, 0xfd, 0xd9, 0x65, 0x1f, 0xc9, 0xaa, 0xac, - 0x9f, 0xb3, 0x67, 0xc3, 0xc9, 0x33, 0xff, 00, 0x12, 0x1d, - 0xbf, 0xee, 0xdd, 0x4b, 0xff, 00, 0xc5, 0x57, 0xa7, 0x51, - 0x58, 0x3c, 0x97, 0x2c, 0x96, 0xf8, 0x68, 0x7f, 0xe0, 0x11, - 0xff, 00, 0x23, 0x9e, 0x5c, 0x3f, 0x93, 0xcb, 0x7c, 0x1d, - 0x3f, 0xfc, 0x2, 0x3f, 0xe4, 0x79, 0x34, 0xbf, 0xb2, 0xf7, - 0xc3, 0xf9, 0x3e, 0xee, 0x99, 0x34, 0x7f, 0xee, 0xdc, 0xc9, - 0xfd, 0x4d, 0x47, 0xff, 00, 0xc, 0xcb, 0xe1, 0x58, 0x8e, - 0x6d, 0xae, 0x35, 0x1b, 0x53, 0xd7, 0x31, 0xdd, 0x3f, 0xf8, - 0xd7, 0xae, 0xd1, 0x58, 0xbc, 0x83, 0x2a, 0xdd, 0x61, 0xa2, - 0xbd, 0x15, 0xbf, 0x23, 0x9d, 0xf0, 0xc6, 0x48, 0xf5, 0x58, - 0x48, 0x2f, 0x48, 0xa5, 0xf9, 0x1e, 0x48, 0x3f, 0x67, 0xd8, - 0xe0, 0xff, 00, 0x8f, 0x4f, 0x17, 0xf8, 0x86, 0xd3, 0xd3, - 0xcb, 0xbd, 0x93, 0x8f, 0xfc, 0x7a, 0xab, 0xcd, 0xf0, 0x7, - 0x56, 0x6f, 0xf5, 0x5f, 0x12, 0x3c, 0x4b, 0x1f, 0xd6, 0xea, - 0x53, 0xff, 00, 0xb5, 0x2b, 0xd8, 0xe8, 0xa4, 0xf2, 0x1c, - 0xb9, 0xe9, 0xec, 0xed, 0xe9, 0x29, 0x2f, 0xc9, 0x89, 0xf0, - 0xce, 0x54, 0xd5, 0xbd, 0x93, 0x5e, 0x92, 0x9a, 0xfc, 0xa4, - 0x78, 0x8c, 0x9f, 0xb3, 0xf7, 0x89, 0x1, 0xcc, 0x5f, 0x14, - 0x75, 0xf1, 0x8e, 0x9b, 0xe5, 0x94, 0xff, 00, 0xed, 0x5a, - 0x54, 0xf8, 0x25, 0xe3, 0x9b, 0x6c, 0x79, 0x1f, 0x13, 0xf5, - 0x6, 0x23, 0xa7, 0x9b, 0x13, 0x37, 0xf3, 0x90, 0xd7, 0xb6, - 0xd1, 0x59, 0xff, 00, 0xab, 0xd9, 0x7a, 0xd6, 0x2a, 0x4b, - 0xd2, 0xa4, 0xff, 00, 0xf9, 0x23, 0x2f, 0xf5, 0x57, 0x2b, - 0x4e, 0xf1, 0x8c, 0xd7, 0xa5, 0x5a, 0x8b, 0xff, 00, 0x6f, - 0x3c, 0x64, 0x7c, 0x39, 0xf8, 0xa5, 0x6a, 0xa4, 0x43, 0xf1, - 0xe, 0x29, 0x3f, 0xeb, 0xa6, 0x9d, 0x11, 0xfe, 0x60, 0xd5, - 0x59, 0xfc, 0x15, 0xf1, 0x91, 0x3f, 0xd5, 0x78, 0xda, 0xd2, - 0x4f, 0xfb, 0x71, 0x80, 0x7f, 0xed, 0x3a, 0xf7, 0xa, 0x29, - 0xbc, 0x8a, 0x8b, 0x56, 0x8d, 0x6a, 0xab, 0xd2, 0xac, 0xff, - 00, 0xcc, 0x72, 0xe1, 0xbc, 0x3b, 0x56, 0x8e, 0x22, 0xb2, - 0xf4, 0xad, 0x53, 0xf5, 0x93, 0x3e, 0x7f, 0x97, 0xc2, 0xff, - 00, 0x1d, 0x22, 0x39, 0x8f, 0xc4, 0xb6, 0x73, 0x60, 0xf4, - 0xfb, 0x3d, 0xb0, 0xcf, 0xfe, 0x43, 0xa1, 0x2d, 0xbe, 0x3c, - 0x5a, 0x63, 0x27, 0x4b, 0xbc, 0xc7, 0xf7, 0xd6, 0x11, 0x9f, - 0xc8, 0x8a, 0xfa, 0x2, 0x8a, 0xc3, 0xfb, 0x1, 0x27, 0x78, - 0xe2, 0xeb, 0x2f, 0xfb, 0x88, 0xdf, 0xe6, 0x99, 0xcd, 0xfe, - 0xab, 0xc5, 0x3b, 0xc7, 0x1d, 0x88, 0x5f, 0xf7, 0x15, 0xbf, - 0xcd, 0x33, 0xc2, 0x23, 0xd6, 0xfe, 0x38, 0xdb, 0x2, 0x24, - 0xf0, 0xce, 0x8b, 0x73, 0xef, 0xbc, 0x3, 0xfa, 0x4f, 0x53, - 0xa7, 0x8d, 0x7e, 0x2e, 0xc1, 0xfe, 0xbf, 0xc0, 0x56, 0x92, - 0x8f, 0xfa, 0x65, 0x74, 0xab, 0xff, 00, 0xb3, 0x9a, 0xf7, - 0xa, 0x2b, 0x55, 0x93, 0xd6, 0x87, 0xc1, 0x8d, 0xab, 0xf3, - 0x70, 0x7f, 0x9c, 0xd, 0xe3, 0x90, 0xe2, 0x21, 0xf0, 0x66, - 0x15, 0xbe, 0x6e, 0xf, 0xf3, 0x81, 0xe2, 0xc7, 0xe2, 0xa7, - 0x8f, 0xad, 0x97, 0xf7, 0xdf, 0xc, 0x67, 0x66, 0x1d, 0x4a, - 0x6a, 0x4a, 0x7, 0xfe, 0x8b, 0x35, 0x4a, 0x7f, 0x8e, 0x7e, - 0x30, 0xb6, 0xcf, 0x99, 0xf0, 0xca, 0xed, 0x71, 0xff, 00, - 0x51, 0xc, 0xff, 00, 0xed, 0x2a, 0xf7, 0x6a, 0x29, 0xcb, - 0x2e, 0xcc, 0x3e, 0xce, 0x3a, 0x4b, 0xfe, 0xdc, 0xa6, 0xff, - 00, 0xf6, 0xd4, 0x39, 0x65, 0x39, 0xa7, 0xd8, 0xcc, 0xa6, - 0xbd, 0x61, 0x49, 0xff, 00, 0xed, 0x88, 0xf9, 0xf1, 0xbf, - 0x69, 0x1d, 0x76, 0x2, 0x7e, 0xd1, 0xf0, 0xea, 0xfa, 0x21, - 0xea, 0xb7, 0x85, 0xbf, 0xf6, 0x90, 0xa9, 0x62, 0xfd, 0xa9, - 0x6d, 0xd3, 0xfe, 0x3e, 0xfc, 0x25, 0xac, 0x40, 0x3f, 0xd8, - 0xd8, 0xdf, 0xcf, 0x15, 0xef, 0xd4, 0x84, 0x3, 0xda, 0xb2, - 0x59, 0x76, 0x6d, 0x1d, 0xb1, 0xf7, 0xf5, 0xa7, 0xf, 0xd2, - 0xc6, 0xb, 0x2a, 0xcf, 0x23, 0xb6, 0x67, 0x7f, 0x5a, 0x50, - 0xfd, 0x2c, 0x78, 0x74, 0x5f, 0xb5, 0x5f, 0x85, 0xd8, 0x81, - 0x36, 0x97, 0xae, 0x5b, 0x9e, 0xe5, 0xed, 0xe3, 0x23, 0xf4, - 0x92, 0xb4, 0x2d, 0xbf, 0x69, 0xef, 0x3, 0xcc, 0x40, 0x92, - 0xea, 0xf6, 0xdb, 0xfe, 0xba, 0xda, 0x39, 0xc7, 0xfd, 0xf3, - 0x9a, 0xf5, 0xe6, 0x82, 0x27, 0xfb, 0xd1, 0xa3, 0x7d, 0x54, - 0x54, 0x12, 0x69, 0x36, 0x52, 0xfd, 0xfb, 0x48, 0x1f, 0xeb, - 0x18, 0x35, 0xaa, 0xc2, 0xe7, 0x10, 0xff, 00, 0x98, 0xa8, - 0x3f, 0x5a, 0x6f, 0xf4, 0x99, 0xbc, 0x70, 0x79, 0xfc, 0x36, - 0xc6, 0x53, 0x97, 0xad, 0x27, 0xfa, 0x54, 0x47, 0x9b, 0x7f, - 0xc3, 0x48, 0x7c, 0x3d, 0x1d, 0x75, 0xf6, 0x1f, 0xf6, 0xe3, - 0x73, 0xff, 00, 0xc6, 0xe9, 0x3f, 0xe1, 0xa4, 0xbe, 0x1e, - 0x7f, 0xd0, 0xc2, 0x7f, 0xf0, 0x6, 0xe7, 0xff, 00, 0x8d, - 0xd7, 0x7d, 0x37, 0x84, 0x74, 0x4b, 0x8f, 0xf5, 0x9a, 0x55, - 0xa3, 0xfd, 0x62, 0x15, 0x42, 0x7f, 0x86, 0x7e, 0x15, 0xb9, - 0xcf, 0x99, 0xa0, 0xd9, 0x37, 0xfd, 0xb3, 0xc5, 0x29, 0x43, - 0x3d, 0x5f, 0xd, 0x4a, 0x2f, 0xfe, 0xdc, 0x9a, 0xff, 00, - 0xdb, 0xd9, 0x33, 0xa7, 0xc4, 0xab, 0xe0, 0xab, 0x41, 0xfa, - 0xc2, 0xa2, 0xff, 00, 0xdc, 0x8c, 0xe5, 0xa0, 0xfd, 0xa2, - 0x7e, 0x1e, 0xdc, 0x1c, 0x2f, 0x88, 0xe3, 0x7, 0xfe, 0x9a, - 0x5b, 0x4e, 0x9f, 0xfa, 0x12, 0xa, 0xd4, 0xb6, 0xf8, 0xd1, - 0xe0, 0x7b, 0xac, 0x6c, 0xf1, 0x56, 0x98, 0xb9, 0xff, 00, - 0x9e, 0x93, 0x84, 0xff, 00, 0xd0, 0xb1, 0x53, 0x4d, 0xf0, - 0x5f, 0xc1, 0x17, 0x19, 0xdf, 0xe1, 0xcb, 0x43, 0x9e, 0xb8, - 0xdc, 0x3f, 0x91, 0xaa, 0x52, 0x7c, 00, 0xf0, 0x4, 0xbd, - 0x7c, 0x3b, 0x10, 0xff, 00, 0x76, 0x69, 0x47, 0xfe, 0xcd, - 0x59, 0xaf, 0xf5, 0x81, 0x6f, 0xec, 0x5f, 0xfe, 0x6, 0xbf, - 0xcc, 0xc9, 0x7f, 0xad, 0x31, 0xf8, 0xbe, 0xae, 0xff, 00, - 0xf0, 0x62, 0xff, 00, 0x33, 0x6e, 0xf, 0x88, 0x5e, 0x17, - 0xba, 0xff, 00, 0x53, 0xe2, 0x5d, 0x22, 0x6f, 0xfa, 0xe7, - 0x7d, 0x13, 0x7f, 0x26, 0xad, 0x4b, 0x5d, 0x6a, 0xc2, 0xf4, - 0x81, 0x6f, 0x7b, 0x6f, 0x70, 0x4f, 0x4f, 0x2a, 0x55, 0x6f, - 0xe4, 0x6b, 0x84, 0x97, 0xf6, 0x6e, 0xf8, 0x7f, 0x27, 0xfc, - 0xc1, 0x19, 0x7f, 0xdd, 0xba, 0x97, 0xff, 00, 0x8a, 0xaa, - 0xb2, 0xfe, 0xcc, 0x1e, 00, 0x93, 0xa6, 0x9d, 0x72, 0x9f, - 0xee, 0xdd, 0x3f, 0xf5, 0x35, 0xb2, 0xad, 0x9d, 0x47, 0xe2, - 0xa3, 0x4d, 0xfa, 0x4e, 0x4b, 0xf3, 0x83, 0x37, 0x8d, 0x7e, - 0x21, 0x8f, 0xc7, 0x87, 0xa5, 0x2f, 0x4a, 0x92, 0x5f, 0x9d, - 0x36, 0x7a, 0x97, 0x99, 0x4b, 0xbe, 0xbc, 0x86, 0x5f, 0xd9, - 0x4b, 0xc0, 0x92, 0x74, 0x8a, 0xfe, 0x3f, 0xf7, 0x6e, 0x7f, - 0xc4, 0x55, 0x49, 0xbf, 0x64, 0x5f, 0x5, 0x48, 0x3e, 0x4b, - 0x8d, 0x56, 0x33, 0xed, 0x3a, 0x1f, 0xe6, 0x94, 0x3c, 0x5e, - 0x6e, 0xb6, 0xc2, 0x45, 0xff, 00, 0xdc, 0x5f, 0xfe, 0xe6, - 0x12, 0xc7, 0x67, 0xab, 0x6c, 0xc, 0x1f, 0xfd, 0xc6, 0xff, - 00, 0xee, 0x47, 0xb4, 0xee, 0xa3, 0x75, 0x78, 0x3c, 0xdf, - 0xb2, 0xdb, 0x68, 0xaa, 0x65, 0xf0, 0xc7, 0x8b, 0xf5, 0x7d, - 0x2a, 0xe0, 0x1c, 0x83, 0xf6, 0x82, 0x83, 0xff, 00, 0x1c, - 0x2, 0xa0, 0x4b, 0x1f, 0x8d, 0x9e, 0xd, 0x66, 0xf2, 0xfc, - 0x45, 0xa1, 0x78, 0x8a, 0xd9, 0x13, 0x62, 0x45, 0xaa, 0xc4, - 0xc0, 0x8f, 0x7d, 0xd1, 0xa2, 0xb1, 0x3e, 0xec, 0xc6, 0x9d, - 0x3c, 0xcb, 0x19, 0x17, 0x6c, 0x4e, 0x12, 0x51, 0xf3, 0x8b, - 0x53, 0x5f, 0xa3, 0xfc, 0x7, 0x4b, 0x37, 0xc7, 0xc1, 0xdb, - 0x19, 0x81, 0x9c, 0x7c, 0xe1, 0x28, 0xcd, 0x7f, 0xed, 0xaf, - 0xf0, 0x67, 0xd0, 0x1b, 0xa9, 0x73, 0x5e, 0x9, 0x27, 0xed, - 0x49, 0x7, 0x83, 0xe3, 0x82, 0xdf, 0xc6, 0xfe, 0x19, 0xd4, - 0xf4, 0xbb, 0xb6, 0x70, 0x92, 0x5d, 0xe9, 0xa8, 0xb7, 0x36, - 0x41, 0x78, 0xf9, 0xf7, 0x12, 0xae, 0x7, 0x5c, 0xae, 0xd6, - 0x20, 0x77, 0x35, 0xed, 0x7a, 0x4e, 0xb5, 0x65, 0xaf, 0x69, - 0xb6, 0xfa, 0x86, 0x9d, 0x77, 0xd, 0xf5, 0x8d, 0xc2, 0x7, - 0x8a, 0xe2, 0xdd, 0xc3, 0xa3, 0xaf, 0xa8, 0x23, 0xad, 0x7a, - 0xd4, 0x31, 0x74, 0x71, 0x2d, 0xc6, 0x9c, 0xb5, 0x5b, 0xa7, - 0xa3, 0x5e, 0xa9, 0xea, 0x7b, 0xb8, 0x6c, 0x76, 0x1f, 0x16, - 0xdc, 0x69, 0x4b, 0xde, 0x5b, 0xa6, 0x9a, 0x6b, 0xd5, 0x3b, - 0x33, 0x47, 0x34, 0xbb, 0xaa, 0x20, 0xc2, 0x94, 0x36, 0x6b, - 0xb0, 0xef, 0x24, 0x1c, 0xd2, 0xd3, 0x33, 0xef, 0x4b, 0xba, - 0x80, 0x1d, 0x45, 0x14, 0x50, 0x1, 0x48, 0x4e, 0x29, 0x69, - 0x94, 00, 0x84, 0xe2, 0xa3, 0x76, 0xa7, 0xb9, 0xaa, 0xee, - 0xc6, 0x80, 0x23, 0x96, 0x4a, 0xc7, 0xd7, 0x35, 0x9b, 0x5d, - 0x17, 0x4c, 0xbc, 0xd4, 0x2f, 0x65, 0x10, 0x59, 0xda, 0x42, - 0xf3, 0xcd, 0x29, 0x4, 0x84, 0x45, 0x52, 0xcc, 0xd8, 0x1c, - 0xf0, 0x1, 0x3c, 0x56, 0x84, 0xf2, 0x9e, 0x79, 0xaf, 0x18, - 0xfd, 0xaa, 0x75, 0xcb, 0x9d, 0x1f, 0xe0, 0x8f, 0x88, 0x9a, - 0xce, 0xf3, 0xec, 0x77, 0x37, 0x2, 0x1b, 0x45, 0x65, 0x6c, - 0x3b, 0xac, 0x93, 0x22, 0xba, 0x28, 0xc7, 0x25, 0x90, 0xb8, - 0xf6, 0x4, 0x9c, 0x8c, 0x57, 0x36, 0x26, 0xb7, 0xd5, 0xe8, - 0x4e, 0xb7, 0xf2, 0xa6, 0xfe, 0xe4, 0x72, 0x62, 0xeb, 0xfd, - 0x57, 0xf, 0x52, 0xbf, 0xf2, 0xa6, 0xfe, 0xe5, 0x72, 0xf, - 0x81, 0x3a, 0x8d, 0xf7, 0xc4, 0x4d, 0x73, 0x5a, 0xf1, 0xdd, - 0xd0, 0x78, 0x6d, 0xf5, 0x49, 0x16, 0xd, 0x3e, 0xd5, 0xc8, - 0x6f, 0x26, 0xd6, 0x2c, 0x85, 0xc7, 0xa6, 0xe2, 0x59, 0xc8, - 0xe3, 0x92, 0x6b, 0xe8, 0x48, 0x94, 0xaa, 00, 0x79, 0x35, - 0xe5, 0x7f, 00, 0xbc, 0x2f, 0x6b, 0xe1, 0xaf, 00, 0xe8, - 0xd6, 0x96, 0xf6, 0xad, 0x6e, 0x16, 0xdd, 0x19, 0x95, 0xd3, - 0x6b, 0x6e, 0x23, 0x2c, 0x48, 0xc9, 0xe7, 0x24, 0xd7, 0xab, - 0xd6, 0x38, 0x1a, 0x72, 0xa7, 0x87, 0x87, 0x3f, 0xc4, 0xf5, - 0x7e, 0xaf, 0x57, 0xf8, 0x98, 0x65, 0xb4, 0xe5, 0x4b, 0x9, - 0x5, 0x53, 0x59, 0x35, 0x77, 0xea, 0xf5, 0x7f, 0x8b, 0xa, - 0xf3, 0x9f, 0x8f, 0xbf, 0x19, 0xf4, 0x9f, 0x80, 0xff, 00, - 0xc, 0x75, 0x8f, 0x16, 0xea, 0xce, 0xbb, 0x2c, 0xe2, 0x26, - 0x28, 0x89, 0x23, 0xcc, 0x73, 0xd0, 0x70, 0x9, 0xfd, 0x2b, - 0xd1, 0xab, 0xf2, 0xb3, 0xfe, 0xa, 0xf7, 0xf1, 0x87, 0x59, - 0x83, 0xec, 0xbe, 0xf, 0xd3, 0xf5, 0x68, 0xe1, 0xb0, 0x95, - 0xd5, 0x6e, 0x2d, 0x61, 0x94, 0x17, 0x90, 0x63, 0x95, 0x23, - 0x19, 0xeb, 0xd7, 0x9a, 0xef, 0x3d, 0x23, 0xe1, 0xcf, 0xda, - 0x23, 0xf6, 0x87, 0xf1, 0x4f, 0xed, 0x33, 0xf1, 0x1e, 0xea, - 0xfe, 0x57, 0x9a, 0x38, 0x67, 0x93, 0x64, 0x36, 0x70, 0xcf, - 0x21, 0x8f, 0xeb, 0x86, 0x3c, 0x7f, 0xf5, 0xab, 0xcb, 0x75, - 0xaf, 0x3, 0xea, 0x9e, 0x1f, 0xbe, 0xb4, 0xb4, 0xbe, 0x87, - 0xc9, 0x9a, 0xe4, 0x8f, 0x2d, 0x4f, 0x71, 0xeb, 0x5f, 0xa7, - 0x5f, 0xf0, 0x4b, 0xbf, 0xd9, 0x43, 0xc2, 0xfa, 0xdf, 0x83, - 0xf5, 0x6f, 0x1c, 0xf8, 0x9b, 0x48, 0x37, 0xb3, 0xa4, 0xa1, - 0x2d, 0xcd, 0xf4, 0x6c, 0x91, 0x60, 0x29, 0x27, 0x7, 0x76, - 0xe, 0x38, 0xcf, 0x15, 0xf3, 0x47, 0xed, 0x49, 0x79, 0x6f, - 0xe3, 0x7f, 0xdb, 0x22, 0x2d, 0x2, 0x34, 0x17, 0xba, 0x3d, - 0x9d, 0xc4, 0x70, 0xc7, 0x65, 0xa7, 0x31, 0x94, 0x27, 0x3f, - 0x38, 0xc7, 0x18, 0x27, 0x1d, 0x3d, 0xc7, 0xad, 00, 0x7d, - 0xe9, 0xfb, 0x1f, 0x78, 0x2a, 0x6f, 0x82, 0x3f, 0xb1, 0x6e, - 0xb9, 0xae, 0xde, 0xb6, 0xd9, 0xf5, 0x2b, 0x56, 0x96, 0x18, - 0xc2, 0x28, 0x23, 0xe5, 0x21, 0x4e, 0x57, 0x27, 0xbe, 0x79, - 0xf4, 0xaf, 0xcd, 0xaf, 0x82, 0x5a, 0xc7, 0x88, 0xfc, 0x4f, - 0xfb, 0x4a, 0x58, 0x59, 0x5b, 0x6a, 0x57, 0x37, 0x6b, 0xfd, - 0xa6, 0x49, 0xf, 0x29, 0x3b, 0x98, 0xb1, 0xe3, 0x92, 0x9, - 0xc1, 0x27, 0xdf, 0x8a, 0xfd, 0x64, 0xfd, 0xa4, 0xf5, 0x1d, - 0x3f, 0xe0, 0x7f, 0xec, 0x99, 0xe, 0x99, 0xa1, 0x98, 0x7c, - 0x3f, 0x6e, 0x9a, 0x78, 0x11, 0xc1, 0x70, 0xfe, 0x54, 0x80, - 0xec, 0xc9, 0xdc, 0xe, 0xe3, 0xbb, 0x27, 0x9e, 0x7a, 0xf7, - 0xaf, 0xcb, 0xef, 0xf8, 0x27, 0x37, 0x84, 0xa3, 0xf8, 0x91, - 0xfb, 0x51, 0xe8, 0xf3, 0x6a, 0xd6, 0x73, 0xea, 0xa8, 0x92, - 0xb5, 0xe4, 0xcc, 0xb1, 0x16, 0x5d, 0xc0, 0xe7, 0x73, 0x10, - 0x46, 0x6, 0x4f, 0xf9, 0xe9, 0x40, 0x1f, 0xbc, 0x7a, 0x15, - 0x9b, 0x69, 0x5a, 0x1d, 0x95, 0xb4, 0xaf, 0xbd, 0xe0, 0x81, - 0x55, 0xdb, 0x1d, 0x48, 0x1c, 0x9a, 0xf1, 0x4f, 0x89, 0x7a, - 0xaa, 0xea, 0xbe, 0x20, 0x65, 0x5f, 0xbb, 0xe, 0x7b, 0xf7, - 0x35, 0xed, 0xfa, 0x94, 0xa2, 0xd3, 0x4e, 0x95, 0xd4, 0x88, - 0xf6, 0xa7, 0x1d, 0x80, 0xaf, 0x9c, 0x35, 0x6b, 0xa7, 0xbc, - 0xd4, 0xae, 0x65, 0x77, 0xde, 0xc5, 0xcf, 0x20, 0xf6, 0xaf, - 0x86, 0xe2, 0x9a, 0xfc, 0xb4, 0x61, 0x41, 0x75, 0x77, 0xfb, - 0x8f, 0xcd, 0xb8, 0xd3, 0x12, 0xe3, 0x42, 0x9e, 0x1d, 0x7d, - 0xa7, 0x77, 0xf2, 0x2a, 0x1, 0x8e, 0x84, 0xfe, 0x74, 0x65, - 0x87, 0xf1, 0xb7, 0xe7, 0x45, 0x15, 0xf9, 0xad, 0x8f, 0xc8, - 0xac, 0x2e, 0xf7, 0x1f, 0xf2, 0xd1, 0xff, 00, 0xef, 0xa3, - 0x4e, 0x13, 0x4c, 0x3a, 0x4d, 0x20, 0xff, 00, 0x81, 0x1a, - 0x65, 0x14, 0xc7, 0xa9, 0x28, 0xbb, 0xb8, 0x1d, 0x2e, 0x24, - 0xfc, 0xea, 0x44, 0xd4, 0xef, 0x23, 0x39, 0x5b, 0x99, 0x3f, - 0x3a, 0xad, 0x45, 0x35, 0x29, 0x2d, 0x9b, 0x29, 0x4e, 0x6b, - 0x69, 0x3f, 0xbc, 0xe8, 0xf4, 0xaf, 0x1d, 0xea, 0x5a, 0x63, - 00, 0x67, 0x77, 0x5f, 0x4d, 0xc6, 0xbd, 0x73, 0xc1, 0xbe, - 0x2e, 0x5f, 0x10, 0xdb, 0xe1, 0xc0, 0x59, 0x14, 0x77, 0x3c, - 0x9a, 0xf0, 0xa, 0xd5, 0xf0, 0xd6, 0xae, 0x74, 0x4d, 0x52, - 0x29, 0xf1, 0x91, 0xb8, 0x66, 0xbe, 0x87, 0x2c, 0xce, 0x2b, - 0xe1, 0x2a, 0xc5, 0x54, 0x95, 0xe1, 0xd4, 0xfa, 0xac, 0x9f, - 0x3e, 0xc4, 0x60, 0x6b, 0x46, 0x35, 0x64, 0xe5, 0x4d, 0xe8, - 0xee, 0x7d, 0x23, 0x45, 0x55, 0xd3, 0x2f, 0x93, 0x52, 0xb1, - 0x86, 0xe6, 0x30, 0x42, 0xc8, 0xb9, 0x1, 0xba, 0xd5, 0x96, - 0x38, 0x52, 0x6b, 0xf5, 0xe8, 0xc9, 0x4a, 0x2a, 0x4b, 0x66, - 0x7e, 0xed, 0x19, 0xa9, 0xc5, 0x4e, 0x3b, 0x33, 0xca, 0xbe, - 0x28, 0x78, 0xbe, 0xe2, 0xcb, 0x58, 0x8a, 0xce, 0xd4, 0x91, - 0xe5, 0xa6, 0x5c, 0xe4, 0x8c, 0x93, 0x5c, 0x82, 0x78, 0xef, - 0x54, 0x5f, 0xe2, 0x3f, 0xf7, 0xd9, 0xa4, 0xf1, 0xdd, 0xec, - 0xb7, 0xbe, 0x25, 0xba, 0x32, 0xca, 0x25, 0xd8, 0x76, 0xa9, - 0x53, 0x90, 0x5, 0x73, 0xf5, 0xf8, 0xd6, 0x61, 0x8f, 0xaf, - 0x3c, 0x5d, 0x49, 0x42, 0x6d, 0x2b, 0xfe, 0x47, 0xe0, 0x19, - 0xa6, 0x67, 0x89, 0xa9, 0x8e, 0xab, 0x38, 0x54, 0x69, 0x5d, - 0xdb, 0xe5, 0xa1, 0xd3, 0x27, 0xc4, 0x3d, 0x51, 0x7b, 0x9f, - 0xfb, 0xec, 0xd4, 0xc9, 0xf1, 0x2f, 0x53, 0x5f, 0xef, 0x7f, - 0xdf, 0x66, 0xb9, 0x3a, 0x2b, 0x8d, 0x66, 0x18, 0xb5, 0xb5, - 0x46, 0x79, 0xeb, 0x34, 0xc7, 0x47, 0x6a, 0xcc, 0xec, 0xd3, - 0xe2, 0xa6, 0xa2, 0x3a, 0xef, 0xff, 00, 0xbe, 0xcd, 0x4e, - 0x9f, 0x16, 0x6f, 0xc7, 0x5d, 0xdf, 0x8b, 0x1a, 0xe1, 0x68, - 0xad, 0x56, 0x6b, 0x8d, 0x5f, 0xf2, 0xf5, 0x9b, 0xc7, 0x3a, - 0xcc, 0x63, 0xb5, 0x66, 0x7a, 0xa, 0x7c, 0x5d, 0xba, 0x1d, - 0x47, 0xf3, 0xa9, 0xd3, 0xe3, 0xc, 0xc3, 0xaa, 0x8f, 0xc8, - 0xd7, 0x9b, 0xd1, 0x5a, 0xac, 0xeb, 0x1e, 0xbf, 0xe5, 0xe1, - 0xba, 0xe2, 0xc, 0xce, 0x3f, 0xf2, 0xf4, 0xf4, 0xf4, 0xf8, - 0xc6, 0xc3, 0xaa, 0x27, 0xe2, 0xd, 0x75, 0x1e, 0xe, 0xf1, - 0xac, 0x9e, 0x28, 0x9a, 0x40, 0x23, 0x4f, 0x2d, 0x3a, 0xb2, - 0xfa, 0xd7, 0x84, 0x62, 0xbd, 0x87, 0xe0, 0xfd, 0x8c, 0xb, - 0xa5, 0xbd, 0xca, 0xc6, 0x44, 0xac, 0x4e, 0x5c, 0xf7, 0xe7, - 0x1e, 0xb5, 0xf4, 0x19, 0x36, 0x67, 0x8d, 0xc5, 0xe2, 0xe3, - 0x4a, 0xa4, 0xef, 0x1d, 0xd9, 0xf4, 0xf9, 0x6, 0x71, 0x98, - 0xe3, 0xf1, 0xd0, 0xa3, 0x56, 0xa5, 0xe3, 0xab, 0x67, 0xa2, - 0xd1, 0x45, 0x21, 0x20, 0xc, 0x93, 0x81, 0x5f, 0xa4, 0x9f, - 0xae, 0x8b, 0x50, 0xdc, 0x5e, 0x43, 0x6a, 0x33, 0x2c, 0x81, - 0x7, 0xbd, 0x72, 0x1e, 0x2f, 0xf8, 0x89, 0x6d, 0xa1, 0x6, - 0x86, 0x2, 0x26, 0x9b, 0xa6, 0x51, 0x81, 0xc7, 0xe1, 0x5e, - 0x59, 0xac, 0x78, 0xd3, 0x54, 0xd6, 0x64, 0x63, 0x2c, 0xe7, - 0xcb, 0x3d, 0x17, 0x18, 0xc5, 0x7c, 0xc6, 0x3f, 0x3f, 0xc3, - 0x60, 0xdb, 0xa7, 0x1f, 0x7a, 0x5e, 0x5b, 0x1f, 0x1d, 0x99, - 0xf1, 0x3e, 0x13, 0x2f, 0x93, 0xa5, 0xf, 0x7e, 0x6b, 0xa2, - 0xdb, 0xe6, 0xcf, 0x62, 0xd4, 0x7c, 0x7f, 0xa6, 0x58, 0x39, - 0x50, 0xfe, 0x6e, 0x3f, 0xbb, 0x91, 0xfd, 0x2b, 0xe, 0xe3, - 0xe3, 0x16, 0x9f, 0x1b, 0x61, 0x20, 0x63, 0xee, 0x73, 0xfe, - 0x15, 0xe3, 0x6d, 0x96, 0x6c, 0x92, 0x49, 0xfa, 0xd1, 0x5f, - 0x21, 0x57, 0x89, 0xb1, 0xb3, 0x7e, 0xe5, 0xa2, 0xbd, 0x2e, - 0x7c, 0x1d, 0x6e, 0x30, 0xcc, 0x2a, 0x3f, 0xdd, 0xa5, 0x15, - 0xe9, 0x73, 0xd8, 0x57, 0xe3, 0x1d, 0x89, 0xeb, 0x1e, 0x3f, - 0x3f, 0xf0, 0xad, 0xb, 0xf, 0x8a, 0x7a, 0x5d, 0xdb, 0x61, - 0x8e, 0xcf, 0xcf, 0xfc, 0x2b, 0xc3, 0xa9, 0x41, 0x2b, 0xd0, - 0xe0, 0xd6, 0x70, 0xe2, 0x4c, 0x7c, 0x5d, 0xe4, 0xd3, 0xf9, - 0x19, 0x53, 0xe2, 0xdc, 0xca, 0xe, 0xf2, 0x69, 0xaf, 0x43, - 0xe9, 0x6d, 0x3f, 0x5b, 0xb4, 0xd4, 0xf8, 0x82, 0x4d, 0xc6, - 0xaf, 0xd7, 0xcd, 0x1a, 0x76, 0xb5, 0x75, 0xa7, 0x4c, 0x1d, - 0x65, 0x62, 0x7, 0x61, 0x5e, 0xa5, 0xe0, 0xff, 00, 0x89, - 0x76, 0xf7, 0x61, 0x6d, 0xee, 0x63, 0x68, 0xdc, 0xf1, 0xbd, - 0x98, 0x57, 0xd5, 0xe5, 0xfc, 0x43, 0x47, 0x14, 0xd5, 0x3a, - 0xde, 0xec, 0xbf, 0x3, 0xed, 0xf2, 0xae, 0x2a, 0xa1, 0x8c, - 0x6a, 0x96, 0x21, 0x72, 0x4b, 0xf0, 0x3d, 0x16, 0x8a, 0x64, - 0x52, 0xac, 0xd1, 0xab, 0xa1, 0xc, 0xac, 0x32, 0x8, 0xa7, - 0xd7, 0xd7, 0xa7, 0x7d, 0x51, 0xf7, 0x49, 0xdf, 0x54, 0x14, - 0x51, 0x45, 0x3, 0xa, 0x28, 0xac, 0x7d, 0x6f, 0xc5, 0x36, - 0x1a, 0x1a, 0x1f, 0x3e, 0x64, 0x12, 0x63, 0x85, 0x2c, 0x2b, - 0x2a, 0x95, 0x61, 0x46, 0x3c, 0xf5, 0x1d, 0x91, 0x8d, 0x5a, - 0xd4, 0xe8, 0x41, 0xce, 0xac, 0xac, 0xbc, 0xcd, 0x8a, 0x2b, - 0xc9, 0xb5, 0xaf, 0x8b, 0xb2, 0x3a, 0x32, 0x5a, 0x44, 00, - 0x3f, 0xc4, 0xa4, 0x1f, 0xe9, 0x5c, 0xbd, 0xcf, 0xc4, 0x1d, - 0x56, 0x7f, 0xbb, 0x3b, 0xa7, 0xe5, 0xfe, 0x15, 0xf3, 0x15, - 0xf8, 0x93, 0x7, 0x49, 0xda, 0x37, 0x97, 0xa1, 0xf1, 0xd8, - 0x9e, 0x2e, 0xcb, 0xe8, 0x4b, 0x96, 0x17, 0x97, 0xa1, 0xef, - 0xc6, 0x54, 0x53, 0x82, 0xc0, 0x1a, 0x51, 0x22, 0x9e, 0x8c, - 0x3f, 0x3a, 0xf9, 0xcc, 0xf8, 0xbb, 0x57, 0x2d, 0x9f, 0xb6, - 0x31, 0xfa, 0x81, 0x52, 0x47, 0xe3, 0x5d, 0x5e, 0x33, 0x9f, - 0xb5, 0x13, 0xf8, 0xa, 0xe2, 0x5c, 0x55, 0x43, 0xad, 0x37, - 0xf8, 0x1e, 0x72, 0xe3, 0x5c, 0x33, 0x7a, 0xd2, 0x97, 0xe0, - 0x7d, 0x15, 0x45, 0x78, 0x66, 0x9f, 0xf1, 0x43, 0x53, 0xb4, - 0xc0, 0x79, 0xb, 0x28, 0xf6, 0x15, 0xd2, 0xe9, 0x3f, 0x17, - 0xa1, 0x79, 0x15, 0x6e, 0xd5, 0xb0, 0x7a, 0x90, 0x5, 0x7a, - 0x54, 0x38, 0x8b, 0x3, 0x5a, 0xc9, 0xbe, 0x5f, 0x53, 0xd7, - 0xc3, 0xf1, 0x56, 0x5d, 0x5d, 0xa5, 0x29, 0x38, 0xbf, 0x33, - 0xd3, 0xab, 0x7, 0x5b, 0x65, 0xda, 0xdd, 0x71, 0x57, 0xac, - 0xb5, 0x9b, 0x7d, 0x4a, 0xcb, 0xed, 0x10, 0x13, 0xb0, 0x8c, - 0x82, 0xd5, 0x83, 0xac, 0xdf, 0x7c, 0xad, 0xf3, 0x8f, 0xce, - 0xbe, 0x96, 0x32, 0x8c, 0xe2, 0xa5, 0x17, 0x74, 0xcf, 0xae, - 0x84, 0xe3, 0x52, 0x2a, 0x70, 0x77, 0x4c, 0xf3, 0xbf, 0x18, - 0x5a, 0xc1, 0x3c, 0x52, 0x2c, 0x8a, 0x24, 0x46, 0xea, 0xac, - 0xb9, 0x15, 0xe3, 0xda, 0x3f, 0x89, 0xa5, 0xf8, 0x1f, 0xaf, - 0x5f, 0x6a, 0xfa, 0x4, 0x26, 0x6b, 0x5b, 0xa1, 0x8b, 0xad, - 0x19, 0xe4, 0x68, 0xed, 0xe6, 0x39, 0x7, 0xcc, 0x50, 0x6, - 0x12, 0x5c, 0x2e, 0x37, 0xe0, 0xf0, 0x48, 0x20, 0xf0, 0x47, - 0xae, 0x78, 0x96, 0xfb, 0x28, 0xff, 00, 0xbc, 0x5f, 0xce, - 0xbc, 0x23, 0xe2, 0x7e, 0xaa, 0x2d, 0x34, 0xf9, 0xa4, 0x6b, - 0x98, 0x90, 0x80, 0x71, 0xb9, 0x80, 0xcf, 0xd2, 0xb2, 0xa9, - 0x4e, 0x9c, 0xbd, 0xf9, 0x2d, 0x56, 0xcf, 0xaa, 0x31, 0xad, - 0x4a, 0x94, 0xad, 0x52, 0x6b, 0x58, 0xec, 0xfa, 0xa3, 0xec, - 0x8f, 0x7, 0x78, 0xb6, 0xc3, 0xc6, 0xde, 0x1b, 0xd3, 0xf5, - 0xbd, 0x36, 0x55, 0x96, 0xd2, 0xf2, 0x25, 0x90, 0x61, 0x81, - 0x28, 0x7f, 0x89, 0x1b, 0x1d, 0x19, 0x4e, 0x54, 0x8e, 0xc4, - 0x1a, 0xdc, 0x57, 0xaf, 0xca, 0xaf, 0x81, 0xdf, 0xb5, 0x5a, - 0xfc, 0xf, 0xf8, 0xbb, 0x74, 0xd7, 0xf6, 0xd3, 0x6b, 0x5a, - 0x3e, 0xb4, 0x12, 0xce, 0x78, 0x2c, 0x1d, 0x7c, 0xd5, 0x7d, - 0xff, 00, 0xbb, 0x91, 0x54, 0x90, 0xac, 0x46, 0xe6, 0x18, - 0x24, 0x7d, 0xe3, 0xc8, 0xef, 0xfa, 0x87, 0xa4, 0xea, 0xb1, - 0x6a, 0xda, 0x6d, 0xa5, 0xf4, 0x1, 0x84, 0x37, 0x30, 0xa4, - 0xc8, 0x1c, 0x60, 0xed, 0x60, 0x8, 0xc8, 0xf5, 0xc1, 0xa9, - 0xa1, 0x5e, 0x35, 0xe3, 0x78, 0xbd, 0x88, 0xc3, 0x62, 0x61, - 0x89, 0x8b, 0x70, 0x77, 0xb6, 0xe6, 0xb2, 0xb5, 0x3b, 0x35, - 0x59, 0x1e, 0xa4, 0xdf, 0x5d, 0x27, 0x61, 0x66, 0x8a, 0x28, - 0xa0, 0x4, 0x3d, 0x29, 0x87, 0xa5, 0x39, 0xa9, 0x8e, 0x78, - 0xa0, 0x6, 0x33, 0x71, 0x55, 0xa5, 0x7e, 0x2a, 0x57, 0x35, - 0x56, 0x76, 0xe2, 0x80, 0x2a, 0x5c, 0x49, 0xc1, 0xe6, 0xbe, - 0x68, 0xfd, 0xa6, 0xb5, 0x21, 0xaf, 0x78, 0xff, 00, 0xe1, - 0xa7, 0x84, 0x22, 0x26, 0xf3, 0xed, 0x1a, 0x89, 0xbf, 0xba, - 0xb0, 0xfb, 0x81, 0xa3, 0x5c, 0x2a, 0x3b, 0x3e, 0x7a, 0xc, - 0xcb, 0xf2, 0xe0, 0xe7, 0x7, 0x91, 0x81, 0xbb, 0xe8, 0xeb, - 0xa7, 00, 0x57, 0xcb, 0x7e, 0x1e, 0x90, 0xfc, 0x45, 0xfd, - 0xaf, 0xb5, 0x6d, 0x53, 0x4a, 0x6f, 0xb3, 0xda, 0x68, 0x10, - 0xd, 0x3a, 0xe6, 0x42, 0x37, 0x19, 0xe5, 0x42, 0xca, 0xfd, - 0x41, 0xc7, 0xcc, 0x59, 0x78, 0xc7, 0x9, 0x9e, 0xa4, 0xd7, - 0x8b, 0x9a, 0xca, 0xf4, 0xa1, 0x41, 0x6f, 0x52, 0x51, 0x5f, - 0x2b, 0xdd, 0xfe, 0x8, 0xf9, 0xec, 0xee, 0x5c, 0xd4, 0x69, - 0xe1, 0x96, 0xf5, 0x67, 0x18, 0xf9, 0xda, 0xf7, 0x7f, 0x82, - 0xeb, 0xa7, 0xe4, 0x7d, 0x6b, 0xe1, 0xab, 0x41, 0x6b, 0x63, - 0x12, 0x84, 0x8, 0x2, 0xf4, 0x6, 0xb6, 0x6a, 0xbd, 0x94, - 0x66, 0x38, 0x14, 0x13, 0x9a, 0xb1, 0x5e, 0xd1, 0xf4, 0x22, - 0x31, 0xc2, 0x93, 0xe8, 0x2b, 0xf0, 0x3b, 0xfe, 0xa, 0x43, - 0xad, 0xcf, 0x2f, 0xed, 0x25, 0x7f, 0x6d, 0x71, 0x7e, 0x75, - 0x1f, 0xb2, 0x36, 0x64, 0x43, 0x1e, 0xcd, 0x8e, 0x4f, 0x2b, - 0xef, 0xda, 0xbf, 0x7c, 0xab, 0xf0, 0xa3, 0xfe, 0xa, 0x81, - 0xf0, 0xd1, 0x3c, 0x1f, 0xf1, 0xdf, 0x50, 0xbc, 0xb5, 0xd3, - 0x5a, 0xda, 0xde, 0xe9, 0xbc, 0xd6, 0x9f, 0x74, 0x8c, 0xb2, - 0xb3, 0x72, 0x70, 0x59, 0x8f, 0x4a, 00, 0xfa, 0xe7, 0xf6, - 0x51, 0xfd, 0xaf, 0xbc, 0x7, 0xe1, 0xef, 0xd9, 0x56, 0x4d, - 0x6, 0x5b, 0x81, 0xe1, 0xdd, 0x4e, 0xc6, 0xd1, 0xcb, 0x3e, - 0xc, 0xfe, 0x6c, 0x84, 0x12, 0xcd, 0x81, 0xf8, 0xe, 0xd5, - 0xf1, 0x7, 0xec, 0xa3, 0xe2, 0xd, 0x13, 0xc4, 0x7f, 0xb5, - 0xbb, 0x78, 0xa7, 0xc5, 0x53, 0xfd, 0xb7, 0x48, 0x17, 0xd2, - 0xdd, 0xc9, 0x77, 0x39, 0xf2, 0xbe, 0x40, 0xdb, 0x83, 0x14, - 0x19, 0x3f, 0x74, 0xe, 0x7, 0x3d, 0x3d, 0xeb, 0xe5, 0xf8, - 0x75, 0x6b, 0xa8, 0x2d, 0x5e, 0xd9, 0x25, 0x22, 0x17, 0x18, - 0x65, 0xf5, 0xa8, 0xed, 0xef, 0xa6, 0xb6, 0x8d, 0xd2, 0x37, - 0x21, 0x5c, 0x60, 0x81, 0xde, 0x80, 0x3e, 0xe3, 0xff, 00, - 0x82, 0x8c, 0xfe, 0xd9, 0xd6, 0xbf, 0x1d, 0x7c, 0x4b, 0x1f, - 0x87, 0xfc, 0x23, 0x7d, 0x74, 0xde, 0x1e, 0xb7, 0x4f, 0x29, - 0xe3, 0x96, 0xf, 0x28, 0x3b, 0x64, 0x72, 0xe, 0xe3, 0x90, - 0x79, 0xea, 0x7, 0x6a, 0xfa, 0x6b, 0xfe, 0x9, 0x1d, 0xfb, - 0x3f, 0x5e, 0x78, 0x37, 0x49, 0xd6, 0x3c, 0x67, 0xac, 0x69, - 0x51, 0xc3, 0x2d, 0xe4, 0x49, 0x15, 0xad, 0xc1, 0x9f, 0x73, - 0x8c, 0xf2, 0x46, 0xcc, 0x71, 0xc6, 0x79, 0xcd, 0x7e, 0x7f, - 0x7e, 0xc7, 0xdf, 0xb2, 0xef, 0x89, 0x7f, 0x68, 0x7f, 0x88, - 0xf6, 0x96, 0xd6, 0x11, 0xbd, 0x95, 0x85, 0xa3, 0x25, 0xc4, - 0xd7, 0xb3, 0x40, 0xc5, 0x36, 0xee, 0x1d, 0xe, 0x8, 0x27, - 0xeb, 0x5f, 0xd0, 0x3f, 0x81, 0xbc, 0x27, 0xf, 0x82, 0x3c, - 0x2f, 0x61, 0xa3, 0x41, 0x21, 0x95, 0x2d, 0x62, 0x54, 0x2e, - 0x54, 0x2e, 0xe2, 0x7, 0x27, 00, 0xa, 00, 0xa9, 0xf1, - 0x1f, 0x50, 0x1a, 0x7f, 0x86, 0x67, 0x61, 0x27, 0x96, 0xed, - 0xf2, 0xaf, 0x19, 0xcd, 0x78, 0x10, 0xf7, 0xeb, 0x5e, 0xb3, - 0xf1, 0x96, 0xfa, 0x2f, 0xb1, 0xdb, 0xdb, 0x6d, 0xdd, 0x29, - 0x70, 0x41, 0xcf, 0x4f, 0xd6, 0xbc, 0x9a, 0xbf, 0x26, 0xe2, - 0x4a, 0xde, 0xd3, 0x1d, 0xcb, 0xd2, 0x2a, 0xc7, 0xe1, 0xdc, - 0x5b, 0x5f, 0xdb, 0x66, 0x3c, 0x97, 0xd2, 0x29, 0x20, 0xab, - 0x16, 0x16, 0x32, 0xea, 0x37, 0x49, 0x4, 0xb, 0xbe, 0x46, - 0xe8, 0x2a, 0xbd, 0x76, 0xbf, 0xa, 0x6c, 0x24, 0xba, 0xd7, - 0xde, 0x44, 0x6d, 0xa9, 0x12, 0x8d, 0xdc, 0x67, 0x39, 0xff, - 00, 0xf5, 0x57, 0x83, 0x83, 0xa1, 0xf5, 0x9c, 0x44, 0x28, - 0xf7, 0x67, 0xcc, 0xe0, 0x30, 0xdf, 0x5c, 0xc5, 0x53, 0xc3, - 0xff, 00, 0x33, 0xb1, 0x57, 0xfe, 0x15, 0xa6, 0xb3, 0x80, - 0x7c, 0x9e, 0xbf, 0xed, 0x55, 0x3b, 0xcf, 0x3, 0xea, 0xd6, - 0x4a, 0x4b, 0x5b, 0x96, 0x1e, 0xc4, 0x57, 0xd0, 0xf4, 0xc9, - 0x23, 0x59, 0x57, 0x6b, 0x8c, 0x8f, 0x4a, 0xfd, 0xe, 0x7c, - 0x2d, 0x85, 0x6b, 0xdd, 0x9b, 0x4c, 0xfd, 0x56, 0x7c, 0x17, - 0x82, 0x6b, 0xdc, 0x9c, 0x93, 0x3e, 0x61, 0xb8, 0xb5, 0x96, - 0xd5, 0xb6, 0xcd, 0x19, 0x8c, 0xfb, 0xd4, 0x55, 0xeb, 0xbf, - 0x14, 0x7c, 0x33, 0x68, 0x9a, 0x72, 0xdd, 0xc5, 0x8, 0x59, - 0x54, 0x9c, 0xb6, 0x49, 0xc0, 0xaf, 0x22, 0xaf, 0x83, 0xcc, - 0x70, 0x32, 0xcb, 0xeb, 0xba, 0x32, 0x77, 0x3f, 0x33, 0xcd, - 0x72, 0xd9, 0xe5, 0x78, 0x97, 0x87, 0x9b, 0xbf, 0x54, 0xc2, - 0x80, 0x70, 0x41, 0xf4, 0xa2, 0x9d, 0x1a, 0x19, 0x64, 0x54, - 0x1d, 0x58, 0xe2, 0xbc, 0xc3, 0xc7, 0xdf, 0x63, 0xe8, 0xf, - 00, 0x4f, 0xe7, 0xf8, 0x6e, 0xdc, 0x94, 0x28, 0xd8, 0xe4, - 0x16, 0xcd, 0x6a, 0xeb, 0x97, 0xab, 0xa7, 0xe9, 0x57, 0x33, - 0xb3, 0xf9, 0x61, 0x10, 0x9d, 0xc4, 0x67, 0x15, 0x43, 0xc1, - 0x56, 0xd2, 0xdb, 0x78, 0x7e, 0xdc, 0x4a, 0xfb, 0x8b, 0xd, - 0xc3, 0x8c, 0x60, 0x56, 0xad, 0xfd, 0x8c, 0x5a, 0x8d, 0xab, - 0xc1, 0x32, 0xee, 0x46, 0xea, 0xd, 0x7e, 0xe3, 0x87, 0x8c, - 0xfe, 0xa5, 0x18, 0xaf, 0x8b, 0x97, 0xaf, 0xa1, 0xfd, 0x21, - 0x84, 0x8d, 0x4f, 0xec, 0xf8, 0x46, 0x3f, 0x17, 0x2f, 0x5e, - 0xf6, 0xf2, 0x3e, 0x66, 0xba, 0xb9, 0xfb, 0x4d, 0xcc, 0xb2, - 0xb3, 0x65, 0x9d, 0x89, 0x24, 0xd4, 0x79, 0x15, 0xef, 0xaf, - 0xf0, 0xf7, 0x4c, 0x7f, 0xf9, 0x62, 0xbf, 0xaf, 0xf8, 0xd4, - 0x12, 0x7c, 0x34, 0xd2, 0xdf, 0xfe, 0x59, 0x2f, 0xeb, 0x5f, - 0x9f, 0x4b, 0x86, 0x71, 0x97, 0xbf, 0x32, 0x67, 0xe5, 0x93, - 0xe0, 0xfc, 0x7d, 0xdb, 0xe6, 0x8b, 0x3c, 0x26, 0x8a, 0xf4, - 0xaf, 0x1d, 0xf8, 0x43, 0x4d, 0xf0, 0xe6, 0x98, 0x66, 0x48, - 0xc7, 0x98, 0xdc, 0x2e, 0x9, 0xeb, 0xf9, 0xd7, 0x9a, 0xd7, - 0xce, 0xe3, 0x30, 0x75, 0x30, 0x35, 0x7d, 0x8d, 0x56, 0xaf, - 0xe4, 0x7c, 0xa6, 0x3f, 0x1, 0x57, 0x2e, 0xad, 0xec, 0x2b, - 0x35, 0xcd, 0xbe, 0x81, 0x45, 0x15, 0x6f, 0x4a, 0xd3, 0xdf, - 0x54, 0xbf, 0x8e, 0xda, 0x3e, 0xaf, 0xde, 0xb8, 0xe3, 0x17, - 0x36, 0xa3, 0x1d, 0xd9, 0xc1, 0x8, 0x4a, 0x72, 0x50, 0x8a, - 0xbb, 0x65, 0x4a, 0x2b, 0xd3, 0x97, 0xe0, 0xf6, 0xe8, 0x94, - 0xf9, 0xe4, 0x31, 0x19, 0x3c, 0x1a, 0x8d, 0xfe, 0xe, 0xcb, - 0xfc, 0x37, 0x24, 0x7f, 0xc0, 0x4d, 0x7b, 0x8f, 0x23, 0xc7, - 0xaf, 0xf9, 0x77, 0xf8, 0x9f, 0x46, 0xf8, 0x73, 0x33, 0x5f, - 0xf2, 0xeb, 0xf1, 0x47, 0x9a, 0x9c, 0xf6, 0xea, 0x7a, 0x57, - 0xd0, 0x7e, 00, 0xd3, 0xd7, 0x4f, 0xf0, 0xcd, 0xa2, 0x8, - 0xcc, 0x6c, 0x57, 0x27, 0x3d, 0xeb, 0x82, 0x8b, 0xe0, 0xf5, - 0xd0, 0xb8, 0x88, 0xfd, 0xaf, 0x1, 0x58, 0x12, 0x4a, 0x57, - 0xab, 0xe9, 0xf6, 0xa6, 0xca, 0xca, 0x18, 0x19, 0xb7, 0x98, - 0xd7, 0x6e, 0xec, 0x63, 0x35, 0xf5, 0x1c, 0x3d, 0x96, 0xd7, - 0xc2, 0xd6, 0x9d, 0x5a, 0xf0, 0xb6, 0x96, 0x5b, 0x1f, 0x67, - 0xc2, 0xb9, 0x4e, 0x27, 0x7, 0x88, 0xa9, 0x5b, 0x13, 0xe, - 0x5d, 0x2c, 0xb6, 0xf9, 0x93, 0xb3, 0x4, 0x52, 0xcc, 0x70, - 0xa0, 0x64, 0x93, 0x5e, 0x69, 0xe3, 0xbf, 0x89, 0x22, 0xd, - 0xd6, 0x5a, 0x64, 0x84, 0xc9, 0xd1, 0xdf, 0x1c, 0x7e, 0x79, - 0xab, 0x9f, 0x12, 0xbc, 0x69, 0x1e, 0x9d, 0x6a, 0x6c, 0x20, - 0xf9, 0xe6, 0x93, 0x21, 0x88, 0x6e, 0x82, 0xbc, 0x6c, 0x92, - 0xc4, 0x93, 0xc9, 0x3d, 0x68, 0xcf, 0x73, 0xa9, 0x53, 0x6f, - 0xb, 0x86, 0x7a, 0xf5, 0x7d, 0xbc, 0x83, 0x89, 0x78, 0x82, - 0x54, 0x64, 0xf0, 0x58, 0x49, 0x6b, 0xf6, 0x9f, 0x6f, 0x24, - 0x3a, 0x69, 0xa4, 0xb8, 0x95, 0xa4, 0x91, 0x8b, 0xbb, 0x1c, - 0x92, 0x4d, 0x32, 0x8a, 0x2b, 0xf3, 0xa6, 0xef, 0xab, 0x3f, - 0x27, 0x6e, 0xfa, 0xb0, 0xa2, 0xb4, 0xf4, 0x9f, 0xe, 0x5f, - 0xeb, 0x4c, 0x3e, 0xcb, 0x9, 0x75, 0xee, 0x70, 0x6b, 0xa5, - 0x8f, 0xe1, 0x45, 0xfb, 0x20, 0x2c, 0x59, 0x4e, 0x3a, 0x6d, - 0x35, 0xdb, 0x47, 0x3, 0x89, 0xc4, 0x2e, 0x6a, 0x54, 0xdb, - 0x47, 0xa5, 0x87, 0xcb, 0x71, 0x98, 0xa8, 0xf3, 0x51, 0xa6, - 0xda, 0x38, 0x7a, 0x2b, 0xa5, 0xd5, 0xbc, 0x3, 0x7f, 0xa5, - 0x21, 0x7f, 0x2e, 0x49, 00, 0xf4, 0x5a, 0xe7, 0x1d, 0x1a, - 0x36, 0x2a, 0xea, 0x55, 0x87, 0x50, 0x6b, 0xa, 0xd4, 0x2a, - 0xe1, 0xe5, 0xcb, 0x56, 0x36, 0x67, 0x35, 0x7c, 0x35, 0x6c, - 0x2c, 0xb9, 0x2b, 0x45, 0xc5, 0x8d, 0xa7, 0x45, 0x23, 0x43, - 0x22, 0xba, 0x1c, 0x30, 0x39, 0x14, 0xda, 0x2b, 0x3, 0x9b, - 0xcc, 0xf6, 0x8f, 0x86, 0xde, 0x31, 0x4d, 0x52, 0xd9, 0x6c, - 0x65, 0xf, 0xe7, 0xa0, 0xe1, 0xbf, 0x84, 0xfe, 0xb5, 0xdf, - 0x57, 0xce, 0x3e, 0x14, 0xd5, 0x25, 0xd2, 0xb5, 0xbb, 0x69, - 0x22, 0x72, 0x99, 0x70, 0xf, 00, 0xff, 00, 0x3a, 0xfa, - 0x32, 0x36, 0xdf, 0x1a, 0xb0, 0x39, 0x4, 0x67, 0x35, 0xfa, - 0xd7, 0xf, 0x63, 0xa5, 0x8b, 0xc3, 0x38, 0x54, 0xf8, 0xa1, - 0xa7, 0xcb, 0xa1, 0xfb, 0x8f, 0xb, 0x66, 0x53, 0xc7, 0xe1, - 0x1c, 0x2a, 0xeb, 0x28, 0x69, 0xf2, 0xe8, 0x3a, 0x91, 0x98, - 0x22, 0x96, 0x27, 00, 0xc, 0x92, 0x69, 0x6b, 0x8a, 0xf8, - 0x8f, 0xe2, 0xe8, 0xf4, 0x4b, 0x7, 0xb3, 0x54, 0xf3, 0x26, - 0x9d, 0x8, 0x3f, 0x36, 0x30, 0x2b, 0xde, 0xc5, 0x62, 0x61, - 0x84, 0xa3, 0x2a, 0xd5, 0x1e, 0x88, 0xfa, 0x6c, 0x6e, 0x2e, - 0x9e, 0x6, 0x84, 0xab, 0xd5, 0x76, 0x48, 0xca, 0xf1, 0xaf, - 0xc4, 0xe8, 0xed, 0xbc, 0xdb, 0x3d, 0x39, 0xc9, 0x94, 0x7c, - 0xad, 0x20, 0x1d, 0xf, 0xe7, 0x5e, 0x59, 0x7b, 0xa9, 0x5d, - 0x6a, 0x32, 0x17, 0xb9, 0x99, 0xa5, 0x27, 0xfb, 0xc7, 0x35, - 0x5d, 0x98, 0xb3, 0x16, 0x3c, 0x92, 0x72, 0x4d, 0x25, 0x7e, - 0x35, 0x8e, 0xcc, 0x6b, 0xe3, 0xe7, 0xcd, 0x55, 0xe9, 0xd1, - 0x74, 0x3f, 00, 0xcc, 0xb3, 0x6c, 0x4e, 0x67, 0x51, 0xce, - 0xb4, 0xb4, 0xe8, 0x96, 0xc8, 00, 0xc7, 0x4a, 0x28, 0xa5, - 0xa, 0xc7, 0xee, 0xab, 0x37, 0xd0, 0x57, 0x98, 0x78, 0xc2, - 0x51, 0x4b, 0xb1, 0xff, 00, 0xe7, 0x9b, 0xff, 00, 0xdf, - 0x26, 0x90, 0xe4, 0x75, 0x56, 0x1f, 0x51, 0x45, 0xc0, 0x2a, - 0x4b, 0x6b, 0x73, 0x75, 0x75, 0xc, 0x2a, 0x9, 0x2e, 0xe1, - 0x70, 0x3a, 0xd4, 0x75, 0xd0, 0x78, 0x16, 0xc1, 0xef, 0xfc, - 0x47, 0x6d, 0xb1, 0xb6, 0xf9, 0x64, 0xb9, 0x38, 0xcd, 0x6d, - 0x42, 0x9f, 0xb6, 0xab, 0xa, 0x6b, 0xab, 0x48, 0xe8, 0xc3, - 0x51, 0xfa, 0xc5, 0x68, 0x52, 0x5f, 0x69, 0xa4, 0x7a, 0xe6, - 0x99, 0x64, 0x34, 0xcd, 0xe, 0x38, 0x7e, 0xe9, 0xc0, 0xeb, - 0x5c, 0xce, 0xbb, 0x36, 0x15, 0xb0, 0x71, 0xf8, 0xd7, 0x61, - 0xaa, 0x30, 0x8e, 0xdc, 0x21, 0xe7, 0x3, 0xad, 0x79, 0xff, - 00, 0x88, 0x2e, 0x14, 0x6, 0xe3, 0xf5, 0xaf, 0xde, 0x29, - 0x53, 0x54, 0xa9, 0xc6, 0xb, 0xa2, 0x3f, 0xa5, 0xe8, 0x53, - 0x54, 0x69, 0x46, 0x9c, 0x76, 0x48, 0xe0, 0x7c, 0x4b, 0x7d, - 0xb5, 0x5f, 0x26, 0xbe, 0x6c, 0xf8, 0xef, 0xae, 0x41, 0x16, - 0x8e, 0xdb, 0xc8, 0xc, 0x33, 0x83, 0x92, 0x3b, 0x7d, 0x6b, - 0xde, 0xbc, 0x59, 0x74, 0xa1, 0x5c, 0x6d, 0xfd, 0x6b, 0xe4, - 0x2f, 0xda, 0x4b, 0x5b, 0x86, 0x2b, 0x46, 0x88, 0xc5, 0xb9, - 0x89, 0x3, 0x3b, 0xfe, 0xb5, 0xc9, 0x8f, 0x9f, 0x26, 0x1e, - 0x4c, 0xe2, 0xcc, 0xea, 0x7b, 0x3c, 0x2c, 0xd9, 0xf2, 0xbf, - 0x8b, 0x2e, 0x3c, 0xe9, 0xe5, 0x95, 0x5c, 0x86, 0xdc, 0x58, - 0x30, 0x24, 0x10, 0x7b, 0x57, 0xe9, 0xff, 00, 0xfc, 0x13, - 0xab, 0xf6, 0x9a, 0x9f, 0xe3, 0x1f, 0xc3, 0xf9, 0x7c, 0x35, - 0xac, 0x49, 0x75, 0x71, 0xaf, 0x78, 0x7d, 0x16, 0x39, 0x2e, - 0xe7, 0x41, 0xe5, 0xcb, 0x18, 0xe1, 0x76, 0xbe, 0x4e, 0xe2, - 0x6, 0xd2, 0x46, 0x6, 0x32, 0x7b, 0x1, 0x5f, 0x94, 0xbe, - 0x20, 0xbc, 0xa, 0x58, 0x63, 0xaf, 0xbd, 0x7d, 0x9, 0xff, - 00, 0x4, 0xc2, 0xf1, 0x1e, 0xa9, 0x61, 0xfb, 0x49, 0x5c, - 0xe9, 0x76, 0x9a, 0x87, 0xd8, 0xf4, 0xeb, 0xbb, 0x16, 0x9a, - 0xe2, 0x3, 0xa, 0xb8, 0x94, 0xab, 0xaa, 0xaf, 0x27, 0x95, - 0x38, 0x76, 0x1c, 0x1f, 0xe2, 0xce, 0xe, 0x5, 0x78, 0xf9, - 0x45, 0xe1, 0xa3, 0xea, 0x78, 0x19, 0x17, 0x34, 0x2e, 0x9e, - 0xcc, 0xfd, 0x9d, 0x8a, 0x5e, 0x9c, 0xd5, 0x81, 0x27, 0x1d, - 0x6b, 0x2a, 0x9, 0xb3, 0xde, 0xae, 0x9, 0x38, 0x15, 0xf5, - 0x7, 0xd9, 0x9a, 0xf4, 0x51, 0x45, 00, 0x34, 0xf5, 0xa8, - 0xdc, 0xd3, 0xea, 0x27, 0x34, 0x1, 0xc, 0x86, 0xa9, 0xce, - 0xd5, 0x69, 0xcd, 0x50, 0xb8, 0x7e, 0xb4, 0x1, 0x89, 0xe2, - 0x2d, 0x5a, 0x3d, 0x17, 0x49, 0xbd, 0xd4, 0x26, 0x49, 0x64, - 0x86, 0xd2, 0x7, 0x9d, 0xd2, 0x14, 0x2e, 0xec, 0xaa, 0xa5, - 0x88, 0x55, 0x1d, 0x4f, 0x1c, 0xe, 0xf5, 0xf3, 0xb7, 0xec, - 0x77, 0xa3, 0x4b, 0xe2, 0xad, 0x53, 0xc4, 0x7e, 0x3e, 0xd4, - 0x24, 0x89, 0xaf, 0xf5, 0xab, 0xe9, 0x24, 0x31, 0xc6, 0xf9, - 0x11, 0xd, 0xdb, 0xb6, 0x80, 0x72, 0x40, 0x4, 0x80, 0x1, - 0x27, 0x85, 0x15, 0xdb, 0x7e, 0xd5, 0x1e, 0x30, 0x93, 0xc2, - 0xff, 00, 0x8, 0x35, 0x98, 0xad, 0xa5, 0x45, 0xbf, 0xd5, - 0x14, 0x69, 0xd0, 0xc7, 0xbc, 0x9, 0x18, 0x4a, 0x42, 0xc9, - 0xb1, 0x7a, 0xb1, 0x8, 0x5b, 0xee, 0xf2, 0x3a, 0xf1, 0x8c, - 0xd7, 0x45, 0xfb, 0x32, 0x78, 0x26, 0x3f, 0x8, 0xfc, 0x37, - 0xd1, 0xad, 0x84, 0x12, 0x43, 0x33, 0xc4, 0x25, 0x94, 0x4b, - 0x1b, 0x23, 0x6f, 0x6e, 0x4e, 0x43, 0x72, 0x3d, 0x3f, 0xa, - 0xf0, 0x6b, 0x7e, 0xff, 00, 0x32, 0xa7, 0x4f, 0xa5, 0x38, - 0xb9, 0x3f, 0x57, 0xa2, 0xfc, 0x2e, 0x7c, 0xd5, 0x7f, 0xf6, - 0x9c, 0xde, 0x95, 0x2e, 0x94, 0xa2, 0xe4, 0xfd, 0x65, 0xee, - 0xc7, 0xf0, 0xb9, 0xed, 0x31, 0xae, 0xc4, 0x2, 0x9d, 0x45, - 0x15, 0xef, 0x1f, 0x4a, 0x15, 0xe0, 0xdf, 0xb5, 0x87, 0xec, - 0xd5, 0x63, 0xfb, 0x41, 0xf8, 0x31, 0xec, 0xc5, 0xa5, 0xbc, - 0xda, 0xac, 0x79, 0xf2, 0x5e, 0xe3, 0x6e, 0xd5, 0xe3, 0xaf, - 0x20, 0xf3, 0x5e, 0xef, 0x24, 0x89, 0xc, 0x6c, 0xf2, 0x32, - 0xa2, 0x28, 0xc9, 0x66, 0x38, 00, 0x7b, 0x9a, 0xf2, 0x6f, - 0x89, 0x3f, 0xb5, 0x17, 0xc3, 0xdf, 0x86, 0x76, 0xec, 0xf7, - 0xde, 0x24, 0xd3, 0x2e, 0x26, 0x4f, 0xbd, 0x4, 0x37, 0xa8, - 0x5c, 0x7e, 00, 0x93, 0x40, 0x1f, 0x90, 0x3f, 0x10, 0x3f, - 0xe0, 0x98, 0xff, 00, 0x13, 0x74, 0x1d, 0x62, 0x65, 0xb7, - 0x4b, 0x16, 0x84, 0xb1, 0xda, 0x11, 0xf0, 0x7, 0x35, 0xd7, - 0xfc, 0x20, 0xff, 00, 0x82, 0x4a, 0xfc, 0x44, 0xd7, 0xf5, - 0x9b, 0x49, 0xfc, 0x4a, 0xfa, 0x75, 0xbe, 0x8c, 0x58, 0x19, - 0x5a, 0x1b, 0xb0, 0x5f, 0x1e, 0xc3, 0x6, 0xbe, 0xf8, 0xd3, - 0xbf, 0xe0, 0xa2, 0xff, 00, 0xb, 0xb5, 0xed, 0x6e, 0xd7, - 0x4b, 0xb6, 0x12, 0x5e, 0x5d, 0xce, 0xe1, 0x15, 0x22, 0x56, - 0x91, 0xb2, 0x7d, 0x82, 0x57, 0xd4, 0x76, 0xba, 0xb5, 0xab, - 0xd9, 0xdb, 0xcc, 0xce, 0xb6, 0x82, 0x64, 0xe, 0xb1, 0x4f, - 0xfb, 0xb7, 0x19, 0x19, 0xc1, 0x53, 0x82, 0xd, 00, 0x79, - 0x97, 0xec, 0xfb, 0xfb, 0x34, 0x78, 0x47, 0xf6, 0x77, 0xf0, - 0xcc, 0x5a, 0x67, 0x87, 0xac, 0xd4, 0x4d, 0xb0, 0x9, 0x6e, - 0x5d, 0x17, 0x7b, 0x9e, 0xe7, 0x21, 0x45, 0x7a, 0xe5, 0x36, - 0x39, 0x12, 0x55, 0xc, 0x8c, 0x1d, 0x4f, 0x42, 0xa7, 0x22, - 0xa2, 0xbd, 0xb8, 0x16, 0xb6, 0xb2, 0xc8, 0x48, 0x5d, 0xaa, - 0x4e, 0x58, 0xe0, 0x52, 0x6d, 0x45, 0x5d, 0x93, 0x29, 0x28, - 0xa7, 0x27, 0xd0, 0xf1, 0x8f, 0x8a, 0xda, 0xb9, 0xbe, 0xd6, - 0xd6, 0xdc, 0x6e, 0xb, 0x10, 0xce, 0xf, 0x4c, 0xd7, 0xf, - 0x57, 0xf5, 0xeb, 0xd6, 0xd4, 0x35, 0x8b, 0xa9, 0x9d, 0x83, - 0x12, 0xe4, 0x2, 0xe, 0x46, 0x2a, 0x85, 0x7e, 0x17, 0x8d, - 0xae, 0xf1, 0x38, 0x9a, 0x95, 0x5f, 0x56, 0x7f, 0x36, 0xe6, - 0x38, 0x97, 0x8b, 0xc5, 0xd4, 0xac, 0xfa, 0xb6, 0x15, 0xea, - 0x3f, 0x6, 0x34, 0xc0, 0x5a, 0xf2, 0xf4, 0x94, 0x27, 0x84, - 0x3, 0x39, 0x22, 0xbc, 0xbb, 0xaf, 0x4e, 0x4d, 0x7b, 0xbf, - 0xc3, 0x3d, 0x29, 0x74, 0xdf, 0xf, 0x46, 0x76, 0x95, 0x92, - 0x4c, 0x33, 0x6e, 0x4, 0x1a, 0xf6, 0x78, 0x76, 0x87, 0xb5, - 0xc7, 0x29, 0x35, 0xa4, 0x53, 0x67, 0xd0, 0x70, 0xa6, 0x1b, - 0xdb, 0xe6, 0x51, 0x9b, 0x5a, 0x41, 0x37, 0xfa, 0x23, 0xaf, - 0xa2, 0x93, 0xa5, 0x45, 0x3d, 0xe4, 0x16, 0xb1, 0xb4, 0x92, - 0xcc, 0x91, 0xa2, 0xf2, 0x4b, 0x30, 0x15, 0xfa, 0xdb, 0x6a, - 0x2a, 0xec, 0xfd, 0xcd, 0xc9, 0x45, 0x5d, 0xb3, 0x9a, 0xf8, - 0x95, 0xa8, 0xfd, 0x83, 0xc3, 0x53, 0x2e, 0xd2, 0x5a, 0x6f, - 0x90, 0x10, 0x33, 0x8f, 0xf0, 0xaf, 0x5, 0xeb, 0x5d, 0xcf, - 0xc4, 0xcf, 0x18, 0xae, 0xbb, 0x72, 0x96, 0x96, 0xce, 0x1a, - 0xd6, 0x26, 0x24, 0xb2, 0x90, 0x77, 0x1a, 0xe1, 0x6b, 0xf2, - 0xc, 0xfb, 0x17, 0x1c, 0x5e, 0x31, 0xfb, 0x37, 0x78, 0xc5, - 0x5b, 0xfc, 0xcf, 0xc1, 0xf8, 0x9b, 0x1d, 0xc, 0x76, 0x3d, - 0xba, 0x4e, 0xf1, 0x8a, 0xb7, 0xf9, 0x85, 0x68, 0x68, 0x36, - 0x27, 0x51, 0xd5, 0x60, 0x87, 0x21, 0x41, 0x3d, 0xce, 0x2b, - 0x3e, 0xbd, 0x17, 0xe1, 0x37, 0x86, 0x8d, 0xe5, 0xe4, 0xd7, - 0xd7, 0x11, 0xb8, 0x8e, 0x30, 0xbe, 0x59, 0x64, 0x20, 0x37, - 0x5c, 0xe0, 0xfe, 0x55, 0xe6, 0x65, 0xf8, 0x69, 0x62, 0xf1, - 0x30, 0xa2, 0x96, 0xef, 0xf0, 0x3c, 0x7c, 0xaf, 0x7, 0x2c, - 0x76, 0x32, 0x9d, 0x8, 0xad, 0xde, 0xbe, 0x8b, 0x53, 0xd6, - 0x74, 0xfb, 0x55, 0xb1, 0xb2, 0x86, 0x5, 00, 0x4, 0x50, - 0x38, 0xe9, 0x56, 0x28, 0xa2, 0xbf, 0x71, 0x8c, 0x54, 0x52, - 0x8a, 0xe8, 0x7f, 0x47, 0xc6, 0x2a, 0x11, 0x51, 0x5b, 0x20, - 0xa2, 0x8a, 0x6b, 0xb0, 0x45, 0x2c, 0x4e, 00, 0x19, 0xe6, - 0xa8, 0xa3, 0xca, 0xfe, 0x31, 0xea, 0xe4, 0xb5, 0xbd, 0x8a, - 0xee, 0x3, 0xef, 0x37, 0x60, 0x6b, 0xcb, 0xeb, 0xa4, 0xf8, - 0x83, 0xa9, 0xb6, 0xa5, 0xe2, 0x5b, 0x82, 0x5d, 0x5d, 0x23, - 0xf9, 0x57, 0x69, 0x4, 0x7e, 0x95, 0xcd, 0xd7, 0xe2, 0x79, - 0xad, 0x7f, 0xac, 0xe3, 0x6a, 0x4f, 0xa5, 0xed, 0xf7, 0x1f, - 0xce, 0xd9, 0xde, 0x27, 0xeb, 0x79, 0x85, 0x5a, 0x97, 0xd2, - 0xf6, 0x5e, 0x8b, 0x40, 0xae, 0xb3, 0xe1, 0xae, 0x96, 0x35, - 0x1d, 0x7d, 0x58, 0x95, 0x22, 0x3e, 0xcd, 0x5c, 0x9d, 0x7a, - 0xa7, 0xc1, 0xcd, 0x2c, 0x2a, 0x4d, 0x76, 0xf1, 0xb0, 0x63, - 0xd0, 0x90, 0x40, 0xaa, 0xc9, 0xe8, 0x7d, 0x63, 0x1d, 0x4e, - 0x3d, 0x16, 0xbf, 0x71, 0x79, 0xe, 0x1b, 0xeb, 0x59, 0x8d, - 0x28, 0x35, 0xa2, 0x77, 0x7f, 0x23, 0xd4, 0x40, 00, 00, - 0x3a, 0xa, 0x5a, 0x28, 0xaf, 0xda, 0x8f, 0xe8, 0x60, 0xac, - 0xdd, 0x7f, 0x58, 0x4d, 0x13, 0x4e, 0x92, 0xe5, 0xc3, 0x1c, - 0xe, 0x30, 0x33, 0xcd, 0x69, 0x57, 0x94, 0x7c, 0x5c, 0xf1, - 0x19, 0x69, 0x23, 0xd3, 0x62, 0x91, 0x48, 0x53, 0x97, 0xa, - 0xc0, 0x9f, 0xc7, 0xd2, 0xbc, 0xac, 0xcf, 0x18, 0xb0, 0x38, - 0x59, 0x55, 0xeb, 0xd3, 0xd4, 0xf1, 0x73, 0x8c, 0x7a, 0xcb, - 0xb0, 0x73, 0xaf, 0xd7, 0x65, 0xea, 0xcf, 0x3f, 0xd6, 0x75, - 0x79, 0xb5, 0xab, 0xf9, 0x6e, 0x66, 0x76, 0x6d, 0xcc, 0x48, - 0x4, 0xf4, 0x15, 0x42, 0x8a, 0x2b, 0xf1, 0x49, 0x4e, 0x55, - 0x24, 0xe7, 0x27, 0x76, 0xcf, 0xe7, 0x79, 0xce, 0x55, 0x24, - 0xe7, 0x37, 0x76, 0xf7, 0xa, 0xea, 0x7c, 0x17, 0xe0, 0xa9, - 0x7c, 0x51, 0x73, 0xb8, 0xb0, 0x8e, 0xd9, 0x79, 0x2d, 0x9e, - 0x4d, 0x62, 0xe8, 0x9a, 0x4c, 0xba, 0xd6, 0xa5, 0xd, 0xac, - 0x48, 0xcc, 0x5d, 0xb9, 0xda, 0x33, 0x81, 0x5f, 0x42, 0x78, - 0x77, 0x43, 0x87, 0x40, 0xd3, 0x21, 0xb5, 0x89, 0x70, 0x54, - 0x7c, 0xc7, 0xd4, 0xf7, 0xaf, 0xa4, 0xc8, 0xf2, 0xbf, 0xaf, - 0xd5, 0xf6, 0x95, 0x57, 0xb9, 0x1f, 0xc5, 0xf6, 0x3e, 0xbb, - 0x87, 0x32, 0x5f, 0xed, 0x3a, 0xce, 0xad, 0x65, 0xfb, 0xb8, - 0xfe, 0x2f, 0xb0, 0xed, 0x23, 0x41, 0xb3, 0xd1, 0xa0, 0x48, - 0xed, 0xe1, 0x45, 0x20, 0x60, 0xb6, 0xd1, 0x93, 0x5a, 0x34, - 0x51, 0x5f, 0xac, 0xc2, 0x11, 0xa7, 0x15, 0x18, 0x2b, 0x24, - 0x7e, 0xe1, 0x4e, 0x9c, 0x29, 0x45, 0x42, 0x9a, 0xb2, 0x44, - 0x73, 0x42, 0xb3, 0xc6, 0x51, 0xc6, 0x54, 0xf5, 0xaf, 0x15, - 0xf8, 0x95, 0xe1, 0xaf, 0xec, 0x9b, 0xd1, 0x71, 0x1c, 0x7b, - 0x62, 0x90, 0xf5, 0x3, 0xa9, 0xaf, 0x6e, 0xae, 0x3f, 0xe2, - 0x75, 0x89, 0xba, 0xf0, 0xfb, 0xb8, 0x65, 0xc, 0x87, 0x80, - 0xc7, 0x1f, 0x5a, 0xf0, 0x73, 0xcc, 0x24, 0x71, 0x38, 0x39, - 0x3b, 0x6b, 0x1d, 0x51, 0xf3, 0x5c, 0x47, 0x81, 0x86, 0x33, - 0x3, 0x36, 0xd7, 0xbd, 0x15, 0x74, 0x78, 0x4d, 0x14, 0x51, - 0x5f, 0x8e, 0x9f, 0x81, 0xf, 0x84, 0xed, 0x9e, 0x33, 0xfe, - 0xd0, 0xeb, 0x5f, 0x48, 0x78, 0x72, 0x7f, 0xb4, 0x68, 0xb6, - 0xae, 0x30, 0x41, 0x41, 0x8c, 0x57, 0xcd, 0xa3, 0xa8, 0xeb, - 0xd7, 0xb5, 0x7d, 0xb, 0xe0, 0x69, 0xc4, 0xfe, 0x1c, 0xb6, - 0x60, 0x8c, 0x80, 0xc, 00, 0xc2, 0xbe, 0xe3, 0x85, 0x67, - 0x6a, 0xf5, 0x23, 0xdd, 0x1f, 0xa3, 0xf0, 0x55, 0x4b, 0x62, - 0x6a, 0xc3, 0xba, 0x46, 0xe5, 0xc4, 0xc2, 0xde, 0x9, 0x24, - 0x39, 0x21, 0x14, 0xb1, 0xc5, 0x7c, 0xf9, 0xe3, 0x4d, 0x72, - 0x4d, 0x6f, 0x59, 0x76, 0x67, 0x63, 0x1a, 0x70, 0xaa, 0xdf, - 0xe1, 0x5e, 0xd1, 0xe3, 0x9d, 0x45, 0xb4, 0xdf, 0xd, 0x5d, - 0xc8, 0x8e, 0xa9, 0x23, 0x2e, 0xc0, 0x58, 0xfa, 0xf5, 0xaf, - 0x9e, 0xa4, 0x73, 0x24, 0x8c, 0xc4, 0xe4, 0x93, 0x5d, 0x3c, - 0x53, 0x8a, 0x77, 0x86, 0x1a, 0x2f, 0xcd, 0x9d, 0x7c, 0x69, - 0x8c, 0x69, 0xd3, 0xc2, 0x45, 0xe9, 0xbb, 0xfd, 0x6, 0xd1, - 0x45, 0x15, 0xf9, 0xf1, 0xf9, 0x71, 0xbb, 0xe1, 0x4f, 0xa, - 0xdc, 0x78, 0x9a, 0xf9, 0x63, 0x8f, 0x68, 0x88, 0x72, 0xe5, - 0x8e, 0x38, 0xaf, 0x56, 0xd3, 0xfe, 0x17, 0xe9, 0x96, 0x91, - 0x28, 0x6d, 0xcc, 0xfd, 0xfa, 0x7f, 0x85, 0x4b, 0xf0, 0xd7, - 0x4c, 0x86, 0xcb, 0xc3, 0xd0, 0x3a, 0x46, 0x56, 0x57, 0x5c, - 0xb1, 0x61, 0x83, 0x9f, 0xce, 0xba, 0xea, 0xfd, 0x53, 0x28, - 0xc9, 0xb0, 0xf4, 0xf0, 0xf1, 0xab, 0x56, 0x3c, 0xd2, 0x96, - 0xbe, 0x87, 0xed, 0x59, 0x16, 0x41, 0x85, 0xa5, 0x85, 0x85, - 0x6a, 0xf1, 0x52, 0x9c, 0x95, 0xf5, 0xe9, 0xe4, 0x73, 0x47, - 0xc0, 0x5a, 0x76, 0x30, 0x13, 0xf4, 0x15, 0x4a, 0xef, 0xe1, - 0xad, 0x8d, 0xc0, 0x3b, 0x48, 0x43, 0xf4, 0x1f, 0xe1, 0x5d, - 0x95, 0x15, 0xef, 0x4b, 0x2e, 0xc2, 0x49, 0x59, 0xd3, 0x47, - 0xd2, 0xcf, 0x2a, 0xc1, 0x4d, 0x59, 0xd2, 0x47, 0x8e, 0x6b, - 0xdf, 0xa, 0xe7, 0xb5, 0xdf, 0x24, 0xe, 0xd2, 0x1, 0xc8, - 0xa, 0x47, 0xf8, 0x55, 0xcf, 0x85, 0xfe, 0x1d, 0x92, 0xd2, - 0xee, 0xe6, 0xe2, 0xe2, 0x30, 0xac, 0x9f, 0x2a, 0x86, 0xc6, - 0xe1, 0x5e, 0xaf, 0x55, 0x25, 0x85, 0x2d, 0xd5, 0x99, 0x40, - 0x5, 0xb9, 0x35, 0xe5, 0x43, 0x21, 0xc3, 0x51, 0xc4, 0xc7, - 0x11, 0x4f, 0x4b, 0x74, 0x3c, 0x5a, 0x7c, 0x33, 0x84, 0xa1, - 0x8c, 0x86, 0x2a, 0x8e, 0x96, 0xe8, 0x61, 0x6b, 0x93, 0x61, - 0x48, 0xe7, 0x2, 0xbc, 0xdb, 0xc4, 0x77, 0x47, 0xe6, 0xeb, - 0x5d, 0xde, 0xbb, 0x31, 0xd8, 0xdf, 0x30, 0xaf, 0x32, 0xf1, - 0x1d, 0xcf, 0xf, 0xf3, 0xa, 0xfa, 0x63, 0xec, 0xf, 0x34, - 0xf1, 0x85, 0xe9, 0xa, 0xff, 00, 0x7b, 0x8e, 0x6b, 0xe2, - 0x2f, 0xda, 0x1f, 0x5f, 0x6b, 0x8b, 0x8f, 0x24, 0x79, 0x98, - 0x2e, 0x49, 0xcf, 0x4e, 0x2b, 0xec, 0xf, 0x1d, 0xea, 0x6, - 0xb, 0x4b, 0x87, 0xf3, 0x15, 0x48, 0x53, 0x82, 0x4d, 0x7c, - 0x15, 0xf1, 0x97, 0x56, 0x6b, 0xad, 0x5e, 0x45, 0x32, 0xa3, - 0x85, 0x27, 0xee, 0x9f, 0xfe, 0xb5, 0x78, 0x19, 0xbc, 0xed, - 0x49, 0x43, 0xb9, 0xf3, 0x19, 0xed, 0x4b, 0x51, 0x54, 0xd7, - 0x53, 0xc5, 0x35, 0xfb, 0x82, 0xd2, 0x11, 0xcd, 0x7d, 0x15, - 0xff, 00, 0x4, 0xd7, 0xf0, 0xc2, 0x6b, 0x7f, 0xb4, 0x31, - 0xbf, 0x93, 0xec, 0xcc, 0xb6, 0x56, 0xa0, 0x5, 0x9c, 0x8d, - 0xdb, 0x8c, 0x8a, 0xf9, 0x50, 0x7d, 0xa2, 0x65, 0xc8, 0xfe, - 0xf0, 0x1d, 0xeb, 0xe6, 0x7d, 0x62, 0x62, 0xd2, 0xb7, 0x20, - 0xd7, 0xde, 0xbf, 0xf0, 0x4a, 0xcf, 0x4, 0x61, 0xf5, 0xff, - 00, 0x13, 0x5c, 0x69, 0xb7, 0x48, 0xcd, 0x26, 0xc8, 0x2f, - 0x1d, 0xa, 0xc2, 0xea, 0xaa, 0x54, 0x6d, 0x24, 0x8c, 0xfc, - 0xcd, 0x30, 0x38, 0x7, 0x91, 0xea, 0x38, 0x58, 0x8, 0x59, - 0xa1, 0x65, 0x90, 0xb3, 0x89, 0xfa, 0x6b, 0x6b, 0x2f, 0x4a, - 0xbe, 0x24, 0xe2, 0xb1, 0xad, 0x24, 0xcd, 0x68, 0xab, 0x7c, - 0xa2, 0xbe, 0x80, 0xfa, 0x83, 0xa8, 0xa4, 0x3d, 0x29, 0x69, - 0xf, 0x4a, 00, 0x69, 0xe9, 0x50, 0xb8, 0xa9, 0x4f, 0x4a, - 0x85, 0xcd, 00, 0x57, 0x97, 0x81, 0x59, 0xb7, 0x7, 0x19, - 0xad, 0x9, 0xcf, 0x5a, 0xcb, 0xb9, 0x3c, 0x1e, 0x68, 0x3, - 0xe5, 0xef, 0xda, 0x89, 0x9b, 0xc5, 0xff, 00, 0x12, 0x7e, - 0x1e, 0xf8, 0x32, 0xdf, 0xfd, 0x6b, 0x4e, 0x75, 0x19, 0x99, - 0x53, 0xe, 0x89, 0x9d, 0x80, 0x87, 0xc9, 0xc7, 0xdd, 0x93, - 0x23, 0x6f, 0x65, 0x39, 0xe3, 0x15, 0xf5, 0x5f, 0x85, 0x2c, - 0xfe, 0xcb, 0xa7, 0xc2, 0x99, 0x63, 0xb5, 0x40, 0xf9, 0x8e, - 0x4f, 0x4a, 0xf9, 0x63, 0xc2, 0xbf, 0xf1, 0x5a, 0xfe, 0xd6, - 0x3e, 0x2a, 0xd5, 0xf4, 0xf0, 0x6e, 0xf4, 0xfd, 0x26, 0x14, - 0xd3, 0xa4, 0x9e, 0xe4, 0x17, 0x11, 0xcc, 0x8a, 0x15, 0xd2, - 0x21, 0xf2, 0x94, 0x1, 0xc3, 0x83, 0x90, 0xd9, 0x21, 0xc8, - 0x38, 0x61, 0x8f, 0xae, 0xb4, 0xd8, 0xcc, 0x76, 0xca, 0x8, - 0x3, 0x8e, 0xd5, 0xe1, 0xe5, 0xcb, 0xda, 0xd5, 0xaf, 0x89, - 0xfe, 0x69, 0x59, 0x7a, 0x47, 0x4f, 0xce, 0xe7, 0xce, 0x65, - 0x4b, 0xdb, 0x57, 0xc4, 0xe2, 0xff, 00, 0x9a, 0x7c, 0xab, - 0xd2, 0x1e, 0xee, 0x9f, 0x3b, 0x96, 0xe8, 0xa2, 0xb9, 0xbf, - 0x88, 0x9e, 0x31, 0xb2, 0xf0, 0x17, 0x83, 0xf5, 0x2d, 0x6e, - 0xfa, 0x7f, 0x22, 0xb, 0x68, 0x8b, 0x6e, 0xce, 0xe, 0x7b, - 0x1, 0xc1, 0xfe, 0x46, 0xbd, 0xc3, 0xe8, 0xcf, 0x96, 0x7f, - 0xe0, 0xa1, 0x1f, 0xb6, 0x4d, 0x8f, 0xc0, 0x6f, 0x1, 0x5f, - 0x68, 0x1a, 0x3d, 0xca, 0x3f, 0x8a, 0xef, 0x42, 0xc4, 0xa8, - 0x50, 0x48, 0x23, 0x56, 0xe4, 0xe7, 0x12, 0x29, 0x53, 0x8e, - 0xf8, 0x3f, 0x4a, 0xfc, 0x44, 0xf1, 0x4f, 0x8e, 0xf5, 0xdf, - 0x18, 0x6a, 0xb7, 0x1a, 0x8d, 0xf5, 0xe4, 0xed, 0x2c, 0xcc, - 0x59, 0x82, 0x48, 0xc1, 0x47, 0xe1, 0x9a, 0xf6, 0x8f, 0x1f, - 0x43, 0xad, 0x7e, 0xd6, 0xdf, 0xb5, 0x55, 0xe5, 0x8e, 0x83, - 0xf6, 0xdd, 0x62, 0x4d, 0x57, 0x51, 0x31, 0x45, 0xe7, 0xc9, - 0xe6, 0x61, 0x46, 0x4b, 0x11, 0xc2, 00, 00, 0x4, 0xf6, - 0xfa, 0xf3, 0x5e, 0xfb, 0xfb, 0x57, 0xfe, 0xc6, 0x1e, 0x10, - 0xfd, 0x99, 0x7e, 0x3, 0x5b, 0x6a, 0x1a, 0x8e, 0xa8, 0xe3, - 0xc4, 0xb7, 0x3b, 0x52, 0x3b, 0x38, 0x41, 0x4d, 0xce, 0x71, - 0x91, 0x92, 0xce, 0xf, 0xe9, 0x40, 0x1e, 0x21, 0xfb, 0x4, - 0xf8, 0x1e, 0xf7, 0xe2, 0x1f, 0xc7, 0xdd, 0x2, 0xd9, 0x64, - 0xb8, 0x65, 0x5b, 0x94, 0x66, 0x75, 0x9f, 0x66, 00, 0x39, - 0x27, 0x25, 0x1f, 0xf9, 0x57, 0xd8, 0xdf, 0xf0, 0x53, 0x1f, - 0xda, 0x4b, 0xc4, 0x7f, 0xb, 0x7e, 0x25, 0xe9, 0x9a, 0x3e, - 0x89, 0x75, 0x73, 0x4, 0x51, 0x42, 0x1e, 0x57, 0x89, 0x99, - 0x32, 0x4f, 0xdd, 0x19, 0xf, 0xcf, 0x1e, 0xdf, 0x8d, 0x61, - 0x7f, 0xc1, 0x1c, 0xbc, 0x11, 0xa8, 0xa7, 0x89, 0x35, 0x8f, - 0x11, 0x3d, 0x94, 0xb, 0xa7, 0x43, 0x6c, 0xca, 0x6e, 0x59, - 0xf, 0x98, 0xb, 0x74, 00, 0xee, 0xfc, 0xf8, 0x35, 0xe4, - 0x7f, 0xf0, 0x54, 0x2f, 0x12, 0xe9, 0x3a, 0xcf, 0xc7, 0x2b, - 0x78, 0x34, 0xdb, 0xab, 0x8b, 0xcb, 0xc5, 0x93, 0x7c, 0xab, - 0x2c, 0xbb, 0xd0, 00, 0x78, 0xf9, 0x76, 0x8f, 0xe7, 0x40, - 0x1f, 0xa6, 0x9f, 0xb0, 0xaf, 0x8a, 0xb5, 0x8f, 0x18, 0x7c, - 0x16, 0xd3, 0xf5, 0xd, 0x62, 0xe6, 0x6b, 0x9b, 0x86, 0x51, - 0xb9, 0xe5, 0x99, 0xa4, 0xf9, 0x8f, 0x24, 0x64, 0x8e, 0xd5, - 0xed, 0x9e, 0x3b, 0xd4, 0x16, 0xc3, 0xc3, 0xf7, 0xc, 0x71, - 0x92, 0xa4, 0x72, 0x33, 0xfd, 0x45, 0x79, 0x2f, 0xec, 0x39, - 0xa1, 0xea, 0xba, 0xf, 0xec, 0xdb, 0xe1, 0x48, 0x75, 0x8b, - 0x48, 0x2c, 0xee, 0xe5, 0x84, 0x4d, 0xe5, 0xc3, 0x1e, 0xc3, - 0xb5, 0x80, 0xc1, 0x6f, 0x99, 0xb2, 0xde, 0xfc, 0x7d, 0x2b, - 0xb0, 0xf8, 0xc5, 0x7f, 0x1a, 0xd9, 0xc7, 0x6f, 0xe6, 0x37, - 0x98, 0xc4, 0x7c, 0xa0, 0xe0, 0x7f, 0x2a, 0xf2, 0x73, 0x5a, - 0xff, 00, 0x57, 0xc1, 0xd4, 0x9f, 0x91, 0xe1, 0xe7, 0x78, - 0x9f, 0xaa, 0xe0, 0x2a, 0xd4, 0xeb, 0x6b, 0x7d, 0xe7, 0x92, - 0xe7, 0x39, 0x3e, 0xa7, 0x34, 0x51, 0x45, 0x7e, 0x24, 0x7f, - 0x3a, 0x8a, 0xa7, 0xc, 0xf, 0xa1, 0xcd, 0x76, 0x5a, 0x7f, - 0xc4, 0xdd, 0x46, 0xc2, 0x5, 0x89, 0x76, 0x95, 0x5e, 0x6, - 0x73, 0x5c, 0x65, 0x15, 0xd5, 0x43, 0x15, 0x5b, 0xa, 0xdc, - 0xa8, 0xca, 0xd7, 0x3b, 0x70, 0xd8, 0xcc, 0x46, 0xd, 0xb9, - 0x61, 0xe6, 0xe2, 0xdf, 0x63, 0xba, 0x9b, 0xe2, 0xce, 0xa5, - 0x20, 0xc6, 0xc4, 0xfc, 0x3f, 0xfd, 0x75, 0x81, 0xaa, 0xf8, - 0xba, 0xff, 00, 0x56, 0x56, 0x57, 0x91, 0x91, 0x4f, 0x50, - 0x9, 0xff, 00, 0x1a, 0xc4, 0xa2, 0xb6, 0xab, 0x98, 0x62, - 0xab, 0xae, 0x5a, 0x95, 0x1b, 0x47, 0x45, 0x7c, 0xd3, 0x1b, - 0x88, 0x8f, 0x2d, 0x5a, 0xad, 0xa1, 0x49, 0xcf, 0x5a, 0x4a, - 0x7c, 0x51, 0x34, 0xd2, 0x4, 0x5e, 0xa7, 0x8a, 0xee, 0xfc, - 0x3b, 0xf0, 0xba, 0xee, 0xfb, 0xcb, 0x9e, 0xe0, 0xa7, 0x90, - 0x7b, 0x1f, 0xfe, 0xb1, 0xac, 0xf0, 0xd8, 0x3a, 0xf8, 0xc9, - 0x72, 0x50, 0x8d, 0xcc, 0xb0, 0x78, 0xc, 0x4e, 0x3e, 0x7c, - 0x98, 0x78, 0x5f, 0xf4, 0x39, 0x7f, 0xe, 0xf8, 0x76, 0xe7, - 0xc4, 0x37, 0xc9, 0xc, 0x51, 0xb6, 0xc3, 0xd5, 0xf1, 0xc7, - 0xe7, 0x8a, 0xfa, 0x3, 0x44, 0xd2, 0x62, 0xd1, 0x74, 0xe8, - 0xad, 0xa2, 0x1c, 0x2a, 0x80, 0x79, 0xce, 0x4f, 0xe4, 0x29, - 0x34, 0x5d, 0x12, 0xdb, 0x43, 0xb4, 0x10, 0x5b, 0xc6, 0xa8, - 0x3b, 0x90, 0x31, 0x9a, 0xd1, 0xaf, 0xd5, 0x32, 0x8c, 0xa2, - 0x39, 0x74, 0x1c, 0xa4, 0xef, 0x37, 0xbf, 0x97, 0x92, 0x3f, - 0x6a, 0xc8, 0x72, 0x28, 0x65, 0x30, 0x73, 0x9b, 0xbd, 0x49, - 0x6e, 0xfb, 0x79, 0x20, 0xa2, 0x8a, 0x2b, 0xe8, 0xcf, 0xac, - 0xa, 0xa5, 0xab, 0xdc, 0xad, 0xae, 0x9d, 0x3c, 0x8c, 0x40, - 0x1, 0x4f, 0x5a, 0xbb, 0x5c, 0x9f, 0xc4, 0x9b, 0xd8, 0xad, - 0x7c, 0x37, 0x70, 0xae, 0xec, 0xa5, 0xc6, 0xd0, 0x14, 0xe3, - 0x3f, 0xa5, 0x72, 0x62, 0xea, 0xaa, 0x18, 0x79, 0xd4, 0x7d, - 0x13, 0x38, 0x71, 0xd5, 0xd6, 0x1b, 0xb, 0x52, 0xab, 0xe8, - 0x99, 0xe1, 0x97, 0xd3, 0x7d, 0xa6, 0xf6, 0x79, 0x78, 0xf9, - 0xdc, 0x9e, 0x6, 0x2a, 0xa, 0x5, 0x15, 0xf8, 0x43, 0x7c, - 0xce, 0xec, 0xfe, 0x69, 0x72, 0x72, 0x6e, 0x4f, 0xa8, 0x11, - 0x9e, 0x7, 0x53, 0xc0, 0xaf, 0x7e, 0xf8, 0x79, 0x60, 0x6c, - 0xb4, 0x8, 0xb3, 0x9f, 0x98, 0xe, 0xa7, 0x3f, 0xd0, 0x57, - 0x85, 0xe9, 0x50, 0x35, 0xce, 0xa7, 0x6d, 0x1a, 0x28, 0x66, - 0x2e, 0xe, 0xf, 0x4a, 0xfa, 0x43, 0x48, 0x85, 0xad, 0xf4, - 0xdb, 0x78, 0xd8, 0x5, 0x60, 0xa3, 0x20, 0xc, 0x57, 0xdc, - 0x70, 0xb5, 0x1e, 0x6a, 0xd5, 0x2b, 0x3e, 0x8a, 0xc7, 0xe8, - 0xdc, 0x17, 0x87, 0xe6, 0xaf, 0x52, 0xbb, 0xe8, 0xac, 0x5c, - 0xa2, 0x8a, 0x2b, 0xf4, 0xa3, 0xf5, 0xe2, 0x2b, 0x99, 0x96, - 0xda, 0xde, 0x49, 0x58, 0xe1, 0x51, 0x4b, 0x1f, 0xc2, 0xbe, - 0x71, 0xf1, 0x2e, 0xa3, 0xfd, 0xad, 0xad, 0xdd, 0x5d, 0xc, - 0x61, 0xd8, 0xe3, 0x3, 0x1f, 0xd4, 0xd7, 0xb6, 0xfc, 0x42, - 0xd4, 0x63, 0xb0, 0xf0, 0xdd, 0xce, 0xf7, 0x65, 0x2e, 0xbb, - 0x46, 0xd3, 0x82, 0x7f, 0x4a, 0xf0, 0x2, 0x72, 0x6b, 0xf3, - 0x8e, 0x29, 0xc4, 0xf3, 0x4e, 0x9e, 0x1d, 0x74, 0xd5, 0x9f, - 0x93, 0x71, 0xa6, 0x2f, 0x9a, 0xa5, 0x3c, 0x2a, 0xd9, 0x6a, - 0xff, 00, 0x41, 0x28, 0xa2, 0x9c, 0xaa, 0x5d, 0x80, 0x1c, - 0x93, 0x5f, 0x6, 0x7e, 0x66, 0x7a, 0x8f, 0xc2, 0xd, 0x8, - 0xe1, 0xb5, 0x17, 0x18, 0xce, 0x42, 0x9c, 0xff, 00, 0x4c, - 0x7f, 0x5a, 0xf5, 0x3a, 0xc6, 0xf0, 0x85, 0x83, 0x69, 0xde, - 0x1e, 0xb2, 0x8e, 0x44, 0x54, 0x93, 0xca, 0x52, 0xc1, 0x47, - 0x7c, 0x7d, 0x4d, 0x6c, 0xd7, 0xed, 0xb9, 0x5e, 0x15, 0x61, - 0x30, 0x90, 0xa7, 0xd6, 0xd7, 0x7e, 0xac, 0xfe, 0x8a, 0xc9, - 0x70, 0x6b, 0x3, 0x81, 0xa7, 0x4b, 0xad, 0xae, 0xfd, 0x58, - 0x51, 0x45, 0x15, 0xeb, 0x1e, 0xd8, 0x57, 0x3b, 0xe3, 0xe2, - 0xa3, 0xc3, 0x57, 0x39, 00, 0x92, 0x30, 0x32, 0xb9, 0xfe, - 0xa2, 0xba, 0x2a, 0xe4, 0xbe, 0x25, 0x4f, 0x14, 0x3e, 0x1e, - 0x97, 0xcc, 0x76, 0x53, 0x83, 0x8d, 0xa7, 0x19, 0x3f, 0x95, - 0x79, 0xf9, 0x84, 0x94, 0x70, 0x95, 0x1b, 0xec, 0xcf, 0x2f, - 0x34, 0x92, 0x86, 0xa, 0xb3, 0x7f, 0xca, 0xcf, 0x6, 0xfa, - 0x74, 0xa2, 0x81, 0xd2, 0x8a, 0xfc, 0x30, 0xfe, 0x6d, 0x14, - 0x75, 0x15, 0xf4, 0x37, 0x82, 0x23, 0x31, 0x78, 0x76, 0xd5, - 0xe, 0x70, 0x14, 0xe, 0x4e, 0x7f, 0xa0, 0xaf, 0x9e, 0xe0, - 0x5, 0xa7, 0x88, 0x28, 0xcb, 0x6e, 0x18, 0x6, 0xbe, 0x90, - 0xf0, 0xe4, 0x12, 0x5b, 0xe8, 0x96, 0x89, 0x2a, 0xaa, 0xbe, - 0xc0, 0x48, 0x51, 0x8a, 0xfb, 0x8e, 0x15, 0x85, 0xeb, 0xd4, - 0x97, 0x64, 0x7e, 0x8f, 0xc1, 0x50, 0x6f, 0x13, 0x56, 0x7d, - 0x92, 0x39, 0x7f, 0x8b, 0x57, 0x4b, 0x1e, 0x86, 0xb1, 0x1e, - 0xa4, 0xee, 0xe9, 0x9f, 0xea, 0x3f, 0x95, 0x78, 0xa0, 0xe9, - 0x5e, 0xc7, 0xf1, 0x82, 0xd5, 0x1b, 0x49, 0x8a, 0x4c, 0xb6, - 0xfd, 0xdd, 0x3b, 0x60, 0x57, 0x8e, 0x57, 0x9f, 0xc4, 0x6d, - 0xbc, 0x7b, 0x4f, 0xb2, 0x3c, 0xbe, 0x2d, 0x72, 0x79, 0x9b, - 0x4f, 0xb2, 0xa, 0x51, 0xc1, 0xa4, 0xa2, 0xbe, 0x5c, 0xf8, - 0xd3, 0xd7, 0xbe, 0x1a, 0xf8, 0xba, 0x37, 0xb5, 0x5b, 0x2b, - 0x89, 0x15, 0x58, 0x74, 0x2e, 0xfc, 0xd7, 0xa3, 0x23, 0xac, - 0x8a, 0x19, 0x48, 0x60, 0x7b, 0x8a, 0xf9, 0x7e, 0xde, 0xe2, - 0x4b, 0x49, 0x44, 0x90, 0xb6, 0xc7, 0x1d, 0xe, 0x2b, 0xaf, - 0xd0, 0xfe, 0x25, 0xdf, 0x69, 0xf8, 0x49, 0xe5, 0xde, 0xbf, - 0xee, 0xd7, 0xde, 0xe5, 0x7c, 0x43, 0xa, 0x34, 0xd5, 0xc, - 0x4a, 0xdb, 0x66, 0x7e, 0x9b, 0x92, 0xf1, 0x54, 0x28, 0x52, - 0x8e, 0x1f, 0x18, 0xb6, 0xd9, 0x9e, 0xe7, 0x45, 0x72, 0x9a, - 0x27, 0xc4, 0xb, 0xd, 0x51, 0x11, 0x4b, 0x85, 0x90, 0xfa, - 0x9c, 0x57, 0x51, 0x1c, 0xa9, 0x2a, 0x82, 0x8c, 0x18, 0x1f, - 0x43, 0x9a, 0xfb, 0xda, 0x18, 0x9a, 0x58, 0x98, 0xf3, 0x52, - 0x95, 0xd1, 0xfa, 0x6e, 0x1b, 0x17, 0x43, 0x17, 0x1e, 0x7a, - 0x32, 0x4d, 0xf, 0xaa, 0x7a, 0x83, 0xed, 0x43, 0x57, 0x2b, - 0x23, 0x54, 0x90, 0x5, 0x3c, 0xd7, 0x49, 0xd6, 0x72, 0x3e, - 0x20, 0x98, 0x79, 0x6d, 0xfe, 0x15, 0xe5, 0xbe, 0x25, 0xb8, - 0x1, 0x64, 0xe9, 0xf9, 0x7f, 0xf5, 0xeb, 0xd0, 0x7c, 0x47, - 0x32, 0x84, 0x6e, 0x7b, 0xd7, 0x94, 0x78, 0xa6, 0xe1, 0x15, - 0x5b, 0x93, 0x40, 0x1e, 0x31, 0xf1, 0x57, 0x52, 0x5b, 0x6d, - 0x2a, 0xe3, 0x24, 0x72, 0x8, 0xe4, 0x13, 0xfd, 0x6b, 0xe0, - 0x7f, 0x88, 0x57, 0xcb, 0x3e, 0xa5, 0x74, 0xc3, 0x1f, 0x7c, - 0x8e, 0x1, 0x1f, 0xd4, 0xd7, 0xd8, 0x1f, 0x1e, 0x35, 0x68, - 0x2d, 0xec, 0x1d, 0x5a, 0x46, 0xce, 0xd2, 0x70, 0xf, 0xff, - 00, 0x5a, 0xbe, 0x1f, 0xf1, 0x65, 0xc2, 0x33, 0x48, 0xc1, - 0x89, 0xc9, 0x3d, 0x4d, 0x7c, 0x9e, 0x67, 0x2e, 0x7c, 0x44, - 0x61, 0xd8, 0xf8, 0x7c, 0xe2, 0x7e, 0xd3, 0x15, 0xa, 0x7d, - 0x8e, 0x1f, 0x51, 0x93, 0x2e, 0xc6, 0xbf, 0x5d, 0xff, 00, - 0xe0, 0x9f, 0x9e, 0x15, 0x97, 0xc2, 0xbf, 0xb3, 0xf6, 0x8d, - 0xe7, 0x9, 0x51, 0xee, 0xd4, 0x5c, 0x6c, 0x96, 0x50, 0xf8, - 0xf, 0x99, 0x46, 0x6, 0xc0, 0x54, 0x7e, 0xf3, 0xa1, 0x27, - 0x7, 0x23, 0xb6, 0x4f, 0xe4, 0x65, 0x8e, 0x99, 0x3e, 0xbd, - 0xad, 0xd8, 0x69, 0xb6, 0x91, 0xac, 0xd7, 0x77, 0xb7, 0x31, - 0xdb, 0x43, 0x1b, 0x9c, 0x7, 0x77, 0x60, 0xaa, 0x9, 0xec, - 0x9, 0x22, 0xbf, 0x76, 0x7e, 0x16, 0x58, 0xcb, 0xa5, 0xf8, - 0x27, 0x47, 0xb7, 0x95, 0x12, 0x37, 0x58, 0x77, 0x6d, 0x8d, - 0x36, 0x80, 0x18, 0x96, 0x1c, 0x64, 0xe3, 0xad, 0x7b, 0x38, - 0x28, 0xd9, 0x36, 0x7d, 0x6, 0x5f, 0xb, 0x26, 0xcf, 0x46, - 0xb2, 0x7a, 0xd3, 0x53, 0xf2, 0x8a, 0xc8, 0xb2, 0x63, 0x5a, - 0x8a, 0xc7, 0x68, 0xaf, 0x4c, 0xf6, 0xe, 0xc6, 0x91, 0xa9, - 0x69, 0xa7, 0xad, 00, 0x35, 0x8e, 0x5, 0x40, 0xe6, 0xa5, - 0x73, 0x50, 0x48, 0x68, 0x2, 0xb5, 0xc3, 0x71, 0x5c, 0xaf, - 0x8c, 0xbc, 0x47, 0x6d, 0xe1, 0x3f, 0xd, 0x6a, 0xba, 0xd5, - 0xe0, 0x66, 0xb5, 0xd3, 0xed, 0x64, 0xba, 0x95, 0x53, 0x1b, - 0x99, 0x51, 0x4b, 0x10, 0xb9, 0x20, 0x64, 0xe3, 0x3, 0x9e, - 0xa6, 0xba, 0x5b, 0x87, 0xe0, 0xd7, 0x81, 0xfe, 0xd6, 0xbe, - 0x33, 0x9b, 0x40, 0xf8, 0x68, 0xda, 0x2d, 0x8b, 0x67, 0x54, - 0xf1, 0x24, 0xeb, 0xa5, 0xc4, 0x8a, 0x46, 0xff, 00, 0x29, - 0xb9, 0x98, 0x85, 0xc1, 0xc8, 0x29, 0xf2, 0x1e, 0x98, 0xf3, - 0x41, 0xcd, 0x72, 0x62, 0xeb, 0xac, 0x36, 0x1e, 0x75, 0x9f, - 0xd9, 0x4f, 0xfe, 0x7, 0xe2, 0x70, 0xe3, 0xb1, 0x2b, 0x7, - 0x85, 0xa9, 0x5d, 0xfd, 0x94, 0xdf, 0xcf, 0xa7, 0xde, 0xcc, - 0x9f, 0xd9, 0x13, 0xc3, 0x57, 0x37, 0x9a, 0x66, 0xad, 0xe2, - 0xeb, 0xd0, 0xb0, 0x5d, 0xf8, 0x8a, 0xf6, 0x5b, 0xe6, 0xb6, - 0xb7, 0xca, 0xc3, 0x18, 0x67, 0x63, 0x84, 0x53, 0xd0, 0x65, - 0x9b, 0x1c, 0x9e, 0x31, 0xcd, 0x7d, 0x53, 0x2, 0x6c, 0x8d, - 0x45, 0x79, 0x8f, 0xc1, 0x1f, 0x3, 0xc5, 0xe0, 0xbf, 0x5, - 0x69, 0x5a, 0x64, 0x6b, 0x83, 0xc, 0x2a, 0x18, 0xe0, 0xf2, - 0xc7, 0x96, 0x3d, 0x4f, 0x7c, 0xd7, 0xa8, 0x81, 0x81, 0x8a, - 0xcb, 0x2f, 0xa0, 0xf0, 0xf8, 0x5a, 0x74, 0xe5, 0xbd, 0xb5, - 0xf5, 0x7a, 0xbf, 0xc4, 0xc3, 0x2b, 0xc3, 0x3c, 0x2e, 0xa, - 0x95, 0x29, 0x7c, 0x56, 0xd7, 0xd5, 0xea, 0xff, 00, 0x11, - 0x6b, 0xe5, 0x6f, 0xf8, 0x28, 0x9f, 0xc5, 0x4, 0xf8, 0x7b, - 0xf0, 0x27, 0x51, 0x4f, 0x22, 0x39, 0xcd, 0xca, 0x36, 0xe1, - 0x22, 0x6e, 00, 0x1, 0xc7, 0x71, 0xc9, 0x35, 0xf5, 0x4d, - 0x7c, 0x57, 0xff, 00, 0x5, 0x54, 0xd4, 0xae, 0xed, 0xbf, - 0x67, 0xa9, 0xed, 0xad, 0x42, 0xac, 0x73, 0xbe, 0x2e, 0x25, - 0x66, 0x51, 0x84, 0x4, 0x7c, 0xbc, 0xf5, 0xcf, 0x4e, 0x39, - 0xaf, 0x40, 0xf5, 0x4f, 0x80, 0xff, 00, 0xe0, 0x97, 0x1a, - 0x5, 0xbf, 0x8a, 0x3f, 0x69, 0xad, 0x3f, 0x53, 0xb9, 0xbd, - 0x6b, 0x29, 0xad, 0x65, 0x6b, 0xb0, 0xb0, 0x49, 0xe5, 0x97, - 0x6c, 0x13, 0xb0, 0x70, 0x78, 0x3c, 0x82, 0x3b, 0x82, 0x45, - 0x7a, 0xe7, 0xfc, 0x16, 0xb, 0xe2, 0xaa, 0xeb, 0xfe, 0x2d, - 0xf0, 0xe7, 0x81, 0x2d, 0x23, 0xb6, 0x76, 0x46, 0x33, 0xca, - 0xfb, 0x41, 0x95, 0xf, 00, 0xc, 0x83, 0xc0, 0x39, 0x7, - 0xa7, 0x38, 0xaf, 0xce, 0xcf, 0x4, 0xf8, 0xd3, 0x51, 0xf0, - 0x27, 0x88, 0x6d, 0xf5, 0x5d, 0x36, 0xe5, 0xed, 0xae, 0x21, - 0x70, 0xe1, 0x93, 0x19, 0xc8, 0xe9, 0xd6, 0xb5, 0xbe, 0x23, - 0xfc, 0x58, 0xd6, 0xfe, 0x28, 0x78, 0x92, 0xdf, 0x55, 0xd7, - 0x2f, 0x24, 0xbb, 0x7b, 0x75, 0x9, 0x16, 0xfc, 0x7c, 0xa3, - 0x39, 0x3d, 00, 0xa0, 0xf, 0xd6, 0x8f, 0xd8, 0xf8, 0xe9, - 0x5f, 0xb2, 0x77, 0xec, 0x8f, 0xa9, 0xf8, 0xdf, 0x5f, 0xd4, - 0xf, 0xda, 0x35, 0x8, 0x5a, 0x48, 0x2c, 0xa6, 0x98, 0x61, - 0xc2, 0x8e, 00, 0x43, 0xb7, 0xa9, 0xf4, 0x35, 0xf9, 0xd6, - 0xf7, 0x1a, 0xaf, 0xed, 0x85, 0xfb, 0x4f, 0xd8, 0xc7, 0x67, - 0x6c, 0x96, 0xaf, 0x7f, 0x76, 0x91, 0xee, 0xb5, 0x42, 0x85, - 0x23, 0xdd, 0xcb, 0x12, 0x37, 0x73, 0xc9, 0xc5, 0x70, 0xde, - 0x2c, 0xfd, 0xa1, 0xbc, 0x5d, 0xe2, 0x6f, 0x5, 0xd8, 0xf8, - 0x43, 0xfb, 0x49, 0xd7, 0xc3, 0xf6, 0xca, 0x42, 0xda, 0x85, - 0x5c, 0x16, 0x3d, 0x79, 0xc6, 0x7f, 0x5a, 0xfb, 0x93, 0xfe, - 0x9, 0x35, 0xfb, 0x2a, 0x4d, 0xab, 0x78, 0x86, 0x6f, 0x89, - 0x7a, 0xf5, 0xa1, 0x4b, 0x4b, 0x17, 0x29, 0x62, 0xb2, 0x2, - 0x37, 0x49, 0x8e, 0x4f, 0xde, 0x1d, 0x33, 0xe8, 0x68, 0x3, - 0xf5, 0x4f, 0xc0, 0xbe, 0x18, 0x4f, 0x4, 0xf8, 0x37, 0x49, - 0xd1, 0x12, 0x69, 0x6e, 0x12, 0xc2, 0xd9, 0x21, 0xf3, 0x26, - 0x7d, 0xcc, 0x76, 0xa8, 0x1c, 0x9c, 0xa, 0xf2, 0xaf, 0x89, - 0xfa, 0xc0, 0xd4, 0x75, 0xcf, 0x25, 0x55, 0x40, 0x8b, 0x92, - 0x40, 0xe6, 0xbd, 0xa7, 0x54, 0xbb, 0x5b, 0x1b, 0x9, 0xa6, - 0x24, 0xd, 0xab, 0xde, 0xbe, 0x72, 0xd7, 0x35, 0x6, 0xd5, - 0x35, 0x5b, 0x8b, 0x86, 0x39, 0xcb, 0x60, 0x7d, 0x2b, 0xe2, - 0x38, 0xa3, 0x11, 0xc9, 0x46, 0x14, 0x13, 0xd6, 0x4f, 0xf0, - 0x47, 0xe7, 0x3c, 0x67, 0x8a, 0xe4, 0xc3, 0xc3, 0xc, 0x9e, - 0xb2, 0x77, 0x7e, 0x88, 0xa3, 0x45, 0x14, 0x60, 0x92, 00, - 0x19, 0x27, 0x80, 0x2b, 0xf3, 0x33, 0xf2, 00, 0x24, 0xe, - 0xf4, 0x9b, 0x87, 0xad, 0x7b, 0x1f, 0x84, 0x7e, 0x1f, 0x5b, - 0x1d, 0x26, 0x29, 0x2e, 0x54, 0x34, 0x8e, 0x32, 0x72, 0xf, - 0xf8, 0xd5, 0x8d, 0x7b, 0xe1, 0xcd, 0xb3, 0xd9, 0xbb, 0x5b, - 0xaa, 0xa3, 0x1, 0x9c, 0xff, 00, 0xfa, 0xcd, 0x7d, 0x3c, - 0x78, 0x7b, 0x17, 0x2a, 0x2a, 0xb6, 0x9b, 0x5e, 0xc7, 0xd8, - 0xc7, 0x85, 0x71, 0xd2, 0xa0, 0xab, 0xab, 0x6a, 0xaf, 0x6e, - 0xa7, 0x8a, 0xd1, 0x53, 0xde, 0x5b, 0x1b, 0x4b, 0xa9, 0x22, - 0x6e, 0xaa, 0x71, 0xd2, 0xa0, 0xaf, 0x99, 0x69, 0xa7, 0x66, - 0x7c, 0x7b, 0x4e, 0x2d, 0xa7, 0xba, 0x1c, 0x92, 0x34, 0x2e, - 0x1d, 0xe, 0x18, 0x74, 0xaf, 0x6a, 0xf8, 0x5d, 0xaf, 0xcb, - 0xaa, 0xe9, 0xed, 0x14, 0xc4, 0xb3, 0x27, 0x4f, 0x4c, 0x57, - 0x89, 0xd7, 0xa1, 0xfc, 0x1c, 0x87, 0x7e, 0xad, 0x70, 0xfd, - 0xc2, 0xf3, 0xec, 0x2b, 0xe8, 0x72, 0x1a, 0xf3, 0xa5, 0x8e, - 0x84, 0x63, 0xb4, 0xb4, 0x67, 0xd5, 0x70, 0xce, 0x22, 0xa5, - 0x1c, 0xca, 0x9c, 0x21, 0xb4, 0xb4, 0x68, 0xf6, 0x3a, 0x28, - 0xa2, 0xbf, 0x61, 0x3f, 0x7a, 0xa, 0x28, 0xa2, 0x80, 0xa, - 0xf2, 0xdf, 0x8c, 0x5a, 0xc2, 0xf9, 0x70, 0xd8, 0xaa, 0x82, - 0xcc, 0x72, 0x49, 0x1c, 0x8c, 0x57, 0xa8, 0xb1, 0xda, 0x9, - 0xf4, 0xaf, 0x6, 0xf8, 0x93, 0xac, 0x1d, 0x4f, 0xc4, 0x52, - 0x46, 0xe, 0x63, 0x83, 0xe5, 0xfc, 0x6b, 0xe5, 0xb8, 0x8f, - 0x11, 0xec, 0x70, 0x4e, 0x9, 0xeb, 0x27, 0x63, 0xe2, 0xf8, - 0xb3, 0x13, 0xec, 0x32, 0xe7, 0x4, 0xf5, 0x9b, 0xb7, 0xf9, - 0x9c, 0x9d, 0x14, 0x51, 0x5f, 0x92, 0x9f, 0x87, 0x1d, 0x2f, - 0xc3, 0xfd, 0x29, 0xb5, 0x3d, 0x7e, 0x32, 0x18, 0xa8, 0x8f, - 0xb8, 0x38, 0xaf, 0x7f, 0x45, 0xd8, 0x8a, 0xb9, 0x27, 0x3, - 0x19, 0x35, 0xe4, 0xff, 00, 0x8, 0x34, 0x71, 0x2c, 0x92, - 0x5e, 0x38, 0xfa, 0x1f, 0xe5, 0x5e, 0xb5, 0x5f, 0xab, 0xf0, - 0xdd, 0xf, 0x65, 0x83, 0xe7, 0x6b, 0x59, 0x3b, 0x9f, 0xb7, - 0x70, 0x8e, 0x1b, 0xd8, 0xe0, 0x3d, 0xa3, 0x5a, 0xcd, 0xdc, - 0x28, 0xa2, 0x8a, 0xfa, 0xc3, 0xed, 0xcf, 0x31, 0xf8, 0xc7, - 0xaa, 0x5, 0xb7, 0x82, 0xc8, 0x6c, 0x25, 0xce, 0x4e, 0x7a, - 0x8c, 0x57, 0x93, 0xd7, 0x71, 0xf1, 0x5f, 0x57, 0x37, 0xba, - 0xf7, 0xd9, 0x81, 0xfd, 0xdc, 0x3, 0xb1, 0xef, 0x5c, 0x3d, - 0x7e, 0x31, 0x9d, 0x56, 0xf6, 0xd8, 0xfa, 0x8d, 0x3b, 0xa5, - 0xa7, 0xdc, 0x7f, 0x3e, 0xf1, 0xe, 0x23, 0xeb, 0x19, 0x9d, - 0x56, 0x9d, 0xd2, 0x76, 0xfb, 0x82, 0xb4, 0x74, 0xb, 0x16, - 0xd4, 0x75, 0x5b, 0x78, 0x14, 0x31, 0x2c, 0xe0, 0x7c, 0xbd, - 0x6b, 0x3a, 0xba, 0x9f, 0x87, 0x3a, 0x68, 0xd4, 0xbc, 0x4b, - 00, 0x71, 0x94, 0x8c, 0xef, 0x6a, 0xf3, 0xb0, 0x94, 0xbd, - 0xb6, 0x22, 0x9d, 0x3e, 0xed, 0x1e, 0x4e, 0x6, 0x8b, 0xc4, - 0x62, 0xa9, 0xd2, 0x4a, 0xf7, 0x68, 0xf7, 0x9b, 0x78, 0xbc, - 0x88, 0x23, 0x8c, 0x12, 0xdb, 0x14, 0x2e, 0x49, 0xc9, 0x38, - 0x15, 0x25, 0x14, 0x57, 0xee, 0xe9, 0x59, 0x59, 0x1f, 0xd2, - 0xe9, 0x24, 0xac, 0x82, 0x8a, 0x28, 0xa6, 0x30, 0xaf, 0x36, - 0xf8, 0xc3, 0xaa, 0x2c, 0x56, 0x11, 0x59, 0x80, 0x8c, 0xd2, - 0x37, 0x7e, 0x48, 0x15, 0xe9, 0x4, 0xe0, 0x64, 0xd7, 0x89, - 0x7c, 0x55, 0xd6, 0xff, 00, 0xb4, 0x35, 0x94, 0xb6, 0x46, - 0xcc, 0x70, 0x8c, 0x9c, 0x7a, 0xd7, 0xcd, 0x71, 0x5, 0x75, - 0x47, 0x3, 0x28, 0xdf, 0x59, 0x68, 0x7c, 0x8f, 0x14, 0xe2, - 0x55, 0xc, 0xb6, 0x71, 0xbd, 0x9c, 0xb4, 0x38, 0x7a, 0x28, - 0xa2, 0xbf, 0x21, 0x3f, 0x8, 0x2f, 0xe8, 0x76, 0x4f, 0xa8, - 0x6a, 0xf6, 0xb6, 0xe8, 0x48, 0x69, 0x24, 0x55, 0x4, 0x1c, - 0x63, 0x26, 0xbe, 0x93, 0x82, 0x21, 0x4, 0x11, 0xc6, 0x9, - 0x21, 0x14, 0x2e, 0x4f, 0x5e, 0x2b, 0xc1, 0xbe, 0x1d, 0xe8, - 0xff, 00, 0xda, 0xbe, 0x21, 0x83, 0x70, 0xca, 0x21, 0xdc, - 0x73, 0xed, 0x5e, 0xfb, 0x5f, 0xa5, 0xf0, 0xad, 0x17, 0x1a, - 0x15, 0x2a, 0xb5, 0xbb, 0xfc, 0x8f, 0xd7, 0xb8, 0x2a, 0x83, - 0x86, 0x1a, 0xad, 0x66, 0xbe, 0x27, 0x6f, 0xb8, 0xc6, 0xf1, - 0x66, 0x92, 0x9a, 0xbe, 0x8d, 0x3c, 0x4c, 0x8a, 0xcd, 0xb4, - 0xe0, 0x91, 0x92, 0x3e, 0x95, 0xf3, 0xc5, 0xe5, 0xb3, 0x59, - 0xdd, 0x49, 0xb, 0x82, 0xac, 0xa7, 0xa1, 0xaf, 0xa8, 0x2b, - 0xcf, 0xbe, 0x21, 0xf8, 0x30, 0x5f, 0xc3, 0x25, 0xdd, 0xb8, - 0xa, 0xe0, 0x64, 0xf1, 0xc9, 0xad, 0xb8, 0x83, 0x2b, 0x96, - 0x2a, 0xb, 0x11, 0x4b, 0xe2, 0x8f, 0xe2, 0x8e, 0x8e, 0x29, - 0xc9, 0xa5, 0x8d, 0x82, 0xc5, 0x51, 0xf8, 0xa3, 0xba, 0xee, - 0x8f, 0x1a, 0xa2, 0xa4, 0xb8, 0xb6, 0x92, 0xd6, 0x42, 0x8e, - 0xac, 0x8, 0xee, 0x45, 0x47, 0x5f, 0x97, 0xec, 0xec, 0xcf, - 0xc6, 0x5a, 0x69, 0xd9, 0xee, 0x14, 0x51, 0x45, 0x20, 0x1f, - 0x1c, 0xd2, 0x44, 0xc1, 0x92, 0x47, 0x42, 0x3f, 0xba, 0xc4, - 0x57, 0x65, 0xe0, 0xef, 0x1f, 0x5d, 0xe9, 0xd7, 0x91, 0xc5, - 0x71, 0x26, 0xf8, 0x5b, 0x82, 0x64, 0x62, 0x7f, 0xad, 0x71, - 0x54, 0x57, 0x56, 0x1b, 0x15, 0x57, 0x9, 0x51, 0x54, 0xa5, - 0x2b, 0x58, 0xed, 0xc2, 0x63, 0x2b, 0xe0, 0x6a, 0x2a, 0xb4, - 0x64, 0xd5, 0x8f, 0xa7, 0x6d, 0x6f, 0x63, 0xbd, 0xb5, 0x59, - 0xa2, 0x6c, 0xab, 0xe, 0xb5, 0x8f, 0xab, 0xce, 0x2, 0xb7, - 0x4a, 0xe0, 0xfe, 0x15, 0x6b, 0x6c, 0x5e, 0x4b, 0x59, 0x1b, - 0x3c, 0x71, 0x9a, 0xec, 0x35, 0xab, 0x8e, 0xf, 0xbd, 0x7e, - 0xcd, 0x97, 0x63, 0x56, 0x3f, 0xf, 0x1a, 0xc9, 0x58, 0xfe, - 0x80, 0xca, 0x73, 0x5, 0x99, 0xe1, 0x63, 0x88, 0x4a, 0xcd, - 0xef, 0xea, 0x70, 0xfe, 0x25, 0xb9, 0x1, 0x1b, 0xa5, 0x79, - 0x1f, 0x8b, 0x2f, 0x6, 0x1f, 0xee, 0xd7, 0xa6, 0xf8, 0x9a, - 0xf3, 0xa, 0xdc, 0xd7, 0x8d, 0xf8, 0xcf, 0x52, 0xf2, 0xa2, - 0x95, 0x89, 0xe8, 0x9, 0xaf, 0x4c, 0xf6, 0xf, 0x94, 0xbf, - 0x68, 0x5f, 0x12, 0x23, 0x19, 0xa2, 0x51, 0x19, 0x23, 0xe5, - 0xe4, 0x73, 0xfc, 0xeb, 0xe4, 0x7f, 0x13, 0xdc, 0x82, 0x48, - 0xe3, 0xad, 0x7d, 0x1, 0xf1, 0xcb, 0xc4, 0x46, 0xef, 0x50, - 0x95, 0x37, 0x13, 0x96, 0x3d, 0x85, 0x7c, 0xe3, 0xe2, 0x1b, - 0x92, 0xce, 0x46, 0x7b, 0xd7, 0xc4, 0xce, 0x5e, 0xdb, 0x16, - 0xe4, 0x7e, 0x77, 0x52, 0x5e, 0xdf, 0x1d, 0x29, 0x76, 0x3a, - 0xaf, 0xd9, 0xbb, 0xc2, 0x57, 0x3e, 0x37, 0xf8, 0xe3, 0xe1, - 0x7b, 0x1b, 0x6f, 0x3d, 0x44, 0x17, 0x1f, 0x6b, 0x92, 0x4b, - 0x73, 0x86, 0x41, 0x1f, 0x2b, 0x93, 0xcf, 0xc, 0xfb, 0x10, - 0xfa, 0xef, 0xc7, 0x7a, 0xfd, 0xb6, 0xd1, 0x2d, 0x5, 0x8d, - 0x95, 0xb5, 0xb2, 0xbb, 0xc8, 0xb0, 0xc6, 0xb1, 0x87, 0x73, - 0x96, 0x20, 0xc, 0x64, 0x9f, 0x5a, 0xfc, 0xa2, 0xff, 00, - 0x82, 0x78, 0xfc, 0x3b, 0x1e, 0x2f, 0xf8, 0xc9, 0x3e, 0xb7, - 0x70, 0x9b, 0xad, 0xb4, 0x78, 0x80, 0x4c, 0x8c, 0x7e, 0xf1, - 0xf2, 0x72, 0xf, 0xfb, 0x88, 0xea, 0x47, 0xfd, 0x34, 0x15, - 0xfa, 0xc9, 0x64, 0x99, 0xc5, 0x7d, 0x5e, 0x1a, 0x36, 0xa6, - 0x7d, 0xbe, 0x12, 0x3c, 0xb4, 0xbd, 0x4d, 0xdb, 0x10, 0x4f, - 0xad, 0x6b, 0x28, 0x3b, 0x47, 0x5a, 0xca, 0xb0, 0x8f, 0xbd, - 0x6a, 0xaa, 0x7c, 0xa2, 0xba, 0xce, 0xd3, 0xb1, 0xa6, 0x1a, - 0x71, 0xe9, 0x4d, 0x3d, 0x28, 0x2, 0x27, 0x35, 0x5e, 0x46, - 0xe2, 0xa6, 0x73, 0x55, 0xa6, 0x3c, 0x1a, 00, 0xa5, 0x70, - 0xfd, 0x79, 0xaf, 0x97, 0x7e, 0x39, 0x4e, 0xdf, 0x13, 0x3e, - 0x3a, 0xf8, 0x3f, 0xc0, 0xd0, 0x93, 0x36, 0x9f, 0xa5, 0x2f, - 0xf6, 0xa6, 0xa2, 0xa8, 0xc5, 0xd3, 0xcc, 0x6e, 0x11, 0x5d, - 0x7a, 0x6, 0x8, 0x32, 0x9, 0xed, 0x3f, 0xbd, 0x7d, 0x3b, - 0x70, 0xdc, 0x1a, 0xf9, 0x7f, 0xe1, 0x48, 0x3e, 0x2e, 0xfd, - 0xa6, 0xbe, 0x22, 0x6b, 0x8a, 0x1a, 0x1, 0x69, 0x71, 0xfd, - 0x9c, 0x51, 0x7e, 0x75, 0x73, 0x16, 0x22, 0xdd, 0xb8, 0x6c, - 0xe7, 0xf7, 0x5d, 0xa, 0xb6, 0x3a, 0x6e, 0x38, 0x4, 0xf8, - 0x99, 0xa7, 0xef, 0x15, 0x2c, 0x37, 0xf3, 0xc9, 0x27, 0xe8, - 0xbd, 0xe7, 0xf9, 0x1f, 0x3b, 0x9c, 0xfe, 0xf6, 0x34, 0x70, - 0x9f, 0xf3, 0xf2, 0x69, 0x3f, 0xf0, 0xab, 0xc9, 0xfe, 0x48, - 0xfa, 0xaf, 0xc3, 0xb6, 0x2b, 0x69, 0x6b, 0x1a, 0x5, 0xa, - 0x15, 0x47, 00, 0x62, 0xb6, 0xaa, 0xb5, 0x84, 0x7e, 0x5c, - 0x23, 0xe9, 0x56, 0x6b, 0xdb, 0x3e, 0x88, 0x2b, 0x82, 0xf8, - 0xdf, 0xe0, 0x85, 0xf8, 0x89, 0xf0, 0xdb, 0x59, 0xd1, 0x8, - 0x57, 0xf3, 0xa1, 0x6f, 0x91, 0x9f, 0x68, 0x62, 0x7, 00, - 0x9c, 0x1e, 0x3f, 0xa, 0x97, 0xe3, 0x4f, 0x8c, 0xe6, 0xf0, - 0xf, 0xc3, 0x7d, 0x67, 0x59, 0xb6, 0x20, 0x5c, 0x41, 0x9, - 0xf2, 0xcf, 0x99, 0xb0, 0x83, 0x8e, 0xa0, 0xec, 0x6f, 0xe5, - 0x5f, 0x8c, 0xff, 00, 0xf0, 0xf2, 0xf, 0x8d, 0x72, 0xfc, - 0x48, 0xb8, 0xb4, 0xb6, 0xf1, 0x95, 0xc4, 0x76, 0xd, 0x78, - 0x62, 0x4b, 0x76, 0xb7, 0x82, 0x60, 0x14, 0x36, 0x31, 0x9f, - 0x2d, 0x72, 0x3f, 0x2a, 00, 0xf0, 0x2f, 0x8e, 0x5f, 0x2, - 0x7c, 0x41, 0xf0, 0xcf, 0xc6, 0x17, 0xb6, 0x6f, 0xa6, 0xde, - 0x4f, 0x18, 0x91, 0x88, 0x96, 0x38, 0x1d, 0x93, 0xaf, 0xae, - 0xd1, 0x5e, 0x6d, 0x17, 0x86, 0xb5, 0x79, 0xe4, 0x58, 0xe3, - 0xd2, 0xef, 0x5d, 0xd8, 0xe0, 0x1, 0x6e, 0xe4, 0xff, 00, - 0x2a, 0xfe, 0x86, 0x3e, 0x19, 0xfc, 0x32, 0xd0, 0xbe, 0x37, - 0x7c, 0x23, 0xd0, 0xb5, 0x7f, 0x1d, 0x69, 0x56, 0x9a, 0xce, - 0xa1, 0x7f, 0x8, 0x9d, 0xa7, 0x6b, 0x34, 0xb6, 0x72, 0x8, - 0xc7, 0x3b, 0x18, 0xe7, 0xa1, 0xe7, 0x8f, 0xa5, 0x6d, 0xe8, - 0x7f, 0xb2, 0x37, 0xc2, 0xbf, 0xf, 0xdf, 0x2d, 0xd5, 0xaf, - 0x85, 0x2c, 0xcc, 0x80, 0xe4, 0x9, 0x41, 0x71, 0xf9, 0x13, - 0x8a, 00, 0xfc, 0x89, 0xfd, 0x94, 0x3f, 0xe0, 0x9d, 0x9e, - 0x2e, 0xf8, 0xc3, 0xad, 0xd9, 0xea, 0x1a, 0xfd, 0xa4, 0x9a, - 0x6f, 0x87, 0x78, 0x79, 0xc, 0xd0, 0xba, 0xb3, 0xc, 0xf4, - 0xf9, 0x97, 0x15, 0xfb, 0x59, 0xf0, 0xc7, 0xe1, 0x8e, 0x85, - 0xf0, 0x9b, 0xc2, 0x96, 0x9a, 0x6, 0x81, 0x69, 0x1d, 0xad, - 0xa4, 0x8, 0x17, 0x29, 0x1a, 0xa1, 0x62, 0x7, 0x53, 0xb4, - 0xf, 0xf2, 0x6b, 0xa1, 0xd3, 0x34, 0x7b, 0x1d, 0x16, 0xdc, - 0x41, 0x61, 0x67, 0xd, 0x9c, 0x23, 0xa4, 0x70, 0x46, 0x10, - 0x7e, 0x42, 0xae, 0x50, 0x7, 0x2d, 0xf1, 0xb, 0x58, 0x1a, - 0x56, 0x85, 0x2e, 0x1b, 0xe, 0xc3, 0x3, 0xe6, 0xc1, 0xaf, - 0x3, 0x2c, 0x5d, 0x8b, 0x37, 0x2c, 0x4e, 0x49, 0xaf, 0x55, - 0xf8, 0xc7, 0x7a, 0x5, 0xbc, 0x56, 0xfb, 0x46, 0x49, 0xeb, - 0x9f, 0xe9, 0x8f, 0xeb, 0x5e, 0x53, 0x5f, 0x93, 0x71, 0x1d, - 0x77, 0x57, 0x1b, 0xc9, 0x7d, 0x22, 0x8f, 0xc3, 0xb8, 0xb3, - 0x12, 0xeb, 0x66, 0xe, 0x9d, 0xf4, 0x82, 0xb0, 0x55, 0xdd, - 0x1a, 0xc1, 0xb5, 0x3d, 0x52, 0xda, 0xd9, 0x41, 0x3b, 0xdc, - 0x67, 0x3, 0x3c, 0x55, 0x2a, 0xea, 0xbe, 0x1b, 0xd9, 0x9b, - 0xaf, 0x12, 0xc6, 0x43, 0x11, 0xb1, 0x73, 0xc0, 0xcf, 0xf5, - 0x15, 0xe0, 0x61, 0x29, 0x7b, 0x7a, 0xf0, 0xa7, 0xdd, 0xa3, - 0xe5, 0xf0, 0x54, 0x7e, 0xb1, 0x89, 0xa7, 0x47, 0xbb, 0x47, - 0xb8, 0xe9, 0x76, 0x8b, 0x63, 0x61, 0xc, 0x2a, 0x2, 0x85, - 0x51, 0xd0, 0x62, 0xad, 0xd2, 0x1, 0x80, 0x5, 0x2d, 0x7e, - 0xed, 0x18, 0xa8, 0x45, 0x45, 0x74, 0x3f, 0xa5, 0xa1, 0x15, - 0x8, 0xa8, 0xad, 0x91, 0xe1, 0x7f, 0x14, 0x60, 0x10, 0xf8, - 0x89, 0xf0, 00, 0xcf, 0x27, 0x9f, 0xd2, 0xb8, 0xda, 0xf4, - 0xaf, 0x8c, 0xb6, 0xc8, 0x97, 0x76, 0xf2, 0x2c, 0x61, 0x49, - 0x19, 0x67, 0x7, 0xaf, 0xe1, 0x8a, 0xf3, 0x5a, 0xfc, 0x5b, - 0x37, 0xa7, 0xec, 0xb1, 0xd5, 0x63, 0xe6, 0x7f, 0x3d, 0xe7, - 0xb4, 0xbd, 0x8e, 0x65, 0x5a, 0x3e, 0x77, 0xfb, 0xc2, 0xbb, - 0xdf, 0x84, 0x51, 0x6f, 0xd6, 0xe4, 0x60, 0x32, 0x76, 0xf5, - 0xc7, 0x41, 0x5c, 0x15, 0x76, 0x9f, 0xa, 0xa6, 0x91, 0x3c, - 0x44, 0x11, 0x24, 0x28, 0x1c, 0x60, 0x8c, 0x64, 0x11, 0xf9, - 0xd4, 0xe5, 0x2d, 0x47, 0x1d, 0x49, 0xbe, 0xe4, 0x64, 0x92, - 0x51, 0xcc, 0xa8, 0x37, 0xdc, 0xf7, 0x2a, 0x28, 0xa2, 0xbf, - 0x6d, 0x3f, 0xa2, 0x82, 0x8a, 0x28, 0xa0, 0xa, 0xda, 0x8d, - 0xd2, 0xd9, 0x59, 0x4b, 0x33, 0x90, 0xa1, 0x54, 0x9c, 0x93, - 0x5f, 0x37, 0x6b, 0x17, 0xed, 0xaa, 0x6a, 0x77, 0x37, 0x4d, - 0xff, 00, 0x2d, 0x1c, 0x91, 0xce, 0x70, 0x2b, 0xdd, 0x3e, - 0x21, 0x5e, 0x8b, 0x2f, 0xd, 0x5d, 0x12, 0xa1, 0x8b, 0x29, - 0x18, 0x27, 0x1f, 0xd0, 0xd7, 0xcf, 0xe3, 0xa5, 0x7e, 0x6d, - 0xc5, 0x35, 0xdb, 0xab, 0x4e, 0x82, 0x7a, 0x25, 0x73, 0xf2, - 0x3e, 0x34, 0xc4, 0xb9, 0x56, 0xa5, 0x87, 0x4f, 0x44, 0xaf, - 0xf7, 0x85, 0x7, 0xa7, 0x1d, 0x4f, 0x2, 0x8a, 0x9a, 0xca, - 0x23, 0x71, 0x7b, 0x4, 0x63, 0xab, 0x38, 0xf7, 0xaf, 0x86, - 0x49, 0xb7, 0x64, 0x7e, 0x6e, 0x93, 0x93, 0x51, 0x5d, 0x4f, - 0x6d, 0xf8, 0x61, 0xa3, 0x8d, 0x3b, 0x43, 0x59, 0x19, 0x48, - 0x79, 0x3d, 0x45, 0x76, 0x75, 0x9d, 0xa0, 0x5b, 0xfd, 0x9b, - 0x48, 0xb6, 0x4c, 0xe7, 0xe5, 0xcf, 0x4c, 0x56, 0x8d, 0x7e, - 0xeb, 0x82, 0xa2, 0xb0, 0xf8, 0x68, 0x53, 0x5d, 0x12, 0x3f, - 0xa4, 0xf2, 0xec, 0x3a, 0xc2, 0xe1, 0x29, 0xd2, 0x8a, 0xd9, - 0x20, 0xa4, 0x24, 0x28, 0x24, 0xf0, 0x7, 0x34, 0xb4, 0x8c, - 0x3, 0x29, 0x7, 0xa1, 0x15, 0xda, 0x7a, 0x27, 0xcf, 0x7e, - 0x3b, 0xbc, 0x6b, 0xcf, 0x12, 0x5c, 0xbb, 0x1c, 0x9d, 0xde, - 0xb9, 0xc0, 0xf4, 0xae, 0x7a, 0xb7, 0x7c, 0x6a, 0xa0, 0x78, - 0x8e, 0xec, 0xaa, 0x8, 0xc1, 0x63, 0x80, 0xe, 0x6b, 0xa, - 0xbf, 0x8, 0xc6, 0x36, 0xf1, 0x35, 0x1b, 0xee, 0xcf, 0xe6, - 0x8c, 0x7b, 0x72, 0xc5, 0xd5, 0x72, 0x7a, 0xf3, 0x3f, 0xcc, - 0x2b, 0xb9, 0xf8, 0x4d, 0x66, 0xb3, 0x6b, 0x8d, 0x2b, 0xf, - 0x98, 0xc, 0x2f, 0x1d, 0x2b, 0x86, 0xae, 0xd7, 0xe1, 0x5d, - 0xeb, 0x5b, 0x78, 0x80, 0x26, 0xfc, 0x9, 0x3e, 0x50, 0xb8, - 0xcd, 0x74, 0xe5, 0x4e, 0x2b, 0x1d, 0x4b, 0x9b, 0x6b, 0x9d, - 0x99, 0x23, 0x8a, 0xcc, 0x68, 0xb9, 0xed, 0x73, 0xdc, 0x68, - 0xa2, 0x8a, 0xfd, 0xb8, 0xfe, 0x8b, 0xa, 0x28, 0xa2, 0x80, - 0x29, 0x6b, 0x1a, 0x82, 0x69, 0x7a, 0x74, 0xf7, 0x32, 0x30, - 0x50, 0x8b, 0xdc, 0xe3, 0x9a, 0xf9, 0xdb, 0x5e, 0xd4, 0x9b, - 0x56, 0xd5, 0xae, 0x2e, 0x18, 0x92, 0x9, 0xc2, 0xe4, 0xe7, - 0x8a, 0xf4, 0x7f, 0x8b, 0x5e, 0x26, 0xb, 0xf, 0xf6, 0x64, - 0x47, 0xe6, 0xc8, 0x2f, 0x83, 0xff, 00, 0xd6, 0xaf, 0x28, - 0xaf, 0xcb, 0xb8, 0x93, 0x1d, 0xed, 0xeb, 0xac, 0x3c, 0x1e, - 0x91, 0xdf, 0xd4, 0xfc, 0x67, 0x8b, 0xb3, 0x2f, 0xac, 0xe2, - 0x16, 0x16, 0x9b, 0xf7, 0x61, 0xbf, 0xaf, 0xfc, 00, 0xa2, - 0x8a, 0x92, 0x8, 0xd, 0xcc, 0xc9, 0x12, 0x8c, 0x96, 0x20, - 0x71, 0x5f, 0x1d, 0x66, 0xf4, 0x47, 0xc0, 0x24, 0xde, 0x88, - 0xf4, 0xef, 0x84, 0x1a, 0x21, 0x12, 0x49, 0x7d, 0x22, 0x91, - 0x81, 0x85, 0x24, 0x7a, 0xd7, 0xaa, 0x56, 0x3f, 0x85, 0xb4, - 0x95, 0xd2, 0x34, 0x78, 0x22, 0x3, 0xe6, 0x2a, 0x9, 0xe3, - 0x1d, 0xbe, 0xa6, 0xb6, 0x2b, 0xf6, 0xcc, 0xaf, 0xb, 0xf5, - 0x3c, 0x24, 0x29, 0x75, 0xdd, 0xfa, 0x9f, 0xd1, 0x59, 0x36, - 0xb, 0xea, 0x18, 0x1a, 0x74, 0x7a, 0xee, 0xfd, 0x58, 0x52, - 0x11, 0x91, 0xcd, 0x2d, 0x15, 0xeb, 0x1e, 0xd9, 0x81, 0xaf, - 0x78, 0x42, 0xcf, 0x5a, 0x89, 0xf7, 0x26, 0xc7, 0x3d, 0xd4, - 0x1, 0x5e, 0x5d, 0xe2, 0x2f, 0x86, 0xf7, 0x1a, 0x6e, 0xe7, - 0xb7, 0x8d, 0xdd, 0x7f, 0x1f, 0xf0, 0xaf, 0x70, 0xa6, 0x49, - 0x12, 0x4c, 0x85, 0x5d, 0x43, 0x29, 0xec, 0x6b, 0xc2, 0xc7, - 0x64, 0xf8, 0x6c, 0x6a, 0xbc, 0x95, 0xa5, 0xdc, 0xf9, 0xac, - 0xcb, 0x21, 0xc2, 0x66, 0x29, 0xb9, 0x46, 0xd2, 0xee, 0x8f, - 0x98, 0x6e, 0x2d, 0xa5, 0xb5, 0x72, 0xb2, 0xae, 0xc6, 0xf4, - 0xa8, 0xab, 0xde, 0xbc, 0x53, 0xe0, 0x4d, 0x37, 0x53, 0xb1, - 0x99, 0xe3, 0xb5, 0x44, 0xb8, 0x3, 0x21, 0xc1, 0x20, 0xd7, - 0x86, 0x5f, 0x5a, 0xb5, 0x95, 0xd4, 0x90, 0xb0, 0x39, 0x46, - 0x23, 0x9a, 0xfc, 0xcf, 0x32, 0xca, 0xea, 0xe5, 0xb3, 0x4a, - 0x6e, 0xf1, 0x7b, 0x33, 0xf1, 0xfc, 0xdf, 0x26, 0xad, 0x94, - 0x54, 0x4a, 0x6e, 0xf1, 0x7b, 0x32, 0xa, 0x28, 0xa0, 0xf4, - 0xaf, 0x14, 0xf9, 0xe6, 0x69, 0xf8, 0x56, 0x63, 0x1e, 0xbf, - 0x6, 0x9, 0x4, 0x9c, 0x1c, 0x7a, 0x57, 0xab, 0xea, 0xb7, - 0x20, 0xc4, 0x8, 0x3c, 0x1, 0x5e, 0x35, 0xa2, 0x99, 0x3f, - 0xb6, 0x21, 0xf2, 0xdb, 0x6b, 0x6e, 0x3, 0x35, 0xea, 0x7a, - 0xa4, 0x9e, 0x5d, 0xb0, 0xd, 0xc9, 0xb, 0xc9, 0xaf, 0xd2, - 0x78, 0x51, 0xbf, 0x63, 0x51, 0x79, 0x9f, 0xae, 0xf0, 0x4b, - 0x7f, 0x57, 0xaa, 0xbc, 0xce, 0x1f, 0xc4, 0xf7, 0x78, 0x46, - 0xe4, 0x57, 0x86, 0x7c, 0x46, 0xd5, 0xc5, 0xad, 0x85, 0xcb, - 0xee, 0x3, 0xa, 0x7a, 0x9a, 0xf5, 0xff, 00, 0x15, 0x5c, - 0x1, 0x1b, 0x71, 0xfa, 0xd7, 0xce, 0x5f, 0x19, 0x75, 0x34, - 0xb6, 0xd1, 0xa6, 0xca, 0xe7, 0x71, 0x38, 0xe6, 0xbe, 0xd2, - 0xb4, 0xb9, 0x29, 0xca, 0x47, 0xe8, 0x55, 0xe7, 0xec, 0xe9, - 0x4a, 0x5d, 0x91, 0xf1, 0xdf, 0xc5, 0x7d, 0x68, 0xde, 0xea, - 0xd3, 0x7c, 0xc0, 0x85, 0x27, 0xa5, 0x78, 0x9e, 0xb5, 0x3e, - 0xf9, 0x1b, 0x9a, 0xf4, 0x3f, 0x1a, 0xde, 0x2c, 0xd7, 0xb7, - 0x2e, 0x6, 0x1, 0x63, 0xde, 0xbc, 0xbf, 0x54, 0x90, 0x12, - 0xe6, 0xbe, 0x37, 0x8, 0xb9, 0xe6, 0xe6, 0xcf, 0xcf, 0xf0, - 0x2b, 0xda, 0x54, 0x94, 0xdf, 0x56, 0x7d, 0xfd, 0xff, 00, - 0x4, 0xc6, 0xf8, 0x7f, 0xe4, 0x68, 0xba, 0xdf, 0x8a, 0xa6, - 0x88, 0x87, 0xbc, 0x9b, 0xcb, 0x8d, 0xc9, 0x38, 0x28, 0x99, - 0x45, 0xc0, 0x23, 0xfb, 0xcd, 0x38, 0x24, 0x1e, 0xc3, 0xd2, - 0xbf, 0x41, 0x2c, 0x93, 0x81, 0x5f, 0x3a, 0x7e, 0xc4, 0xde, - 0xf, 0xb8, 0xf0, 0x7f, 0xc0, 0x6f, 0xe, 0xdb, 0x5c, 0x30, - 0xf3, 0x25, 0x85, 0x66, 0x2a, 0x23, 0x55, 0xda, 0x5f, 0xe7, - 0x20, 0xed, 0xeb, 0x82, 0xe5, 0x73, 0xdf, 0x6e, 0x79, 0x24, - 0xd7, 0xd2, 0x16, 0x6b, 0xd2, 0xbe, 0xd2, 0x9a, 0xe5, 0x82, - 0x47, 0xe8, 0x54, 0xa3, 0xcb, 0x4, 0x8d, 0xab, 0x24, 0xad, - 0x54, 0x41, 0xb4, 0x56, 0x75, 0x9a, 0x91, 0x8a, 0xd5, 0x55, - 0xc2, 0x8a, 0xd0, 0xd4, 0xea, 0x1a, 0x9a, 0xdd, 0x29, 0xc7, - 0xad, 0x46, 0xe6, 0x80, 0x21, 0x73, 0x55, 0x27, 0x3c, 0x55, - 0x97, 0x35, 0x4a, 0xe1, 0xa8, 0x3, 0x9e, 0xf1, 0x7e, 0xab, - 0x6f, 0xa3, 0x78, 0x73, 0x54, 0xbe, 0xba, 0xbb, 0x7b, 0x1b, - 0x7b, 0x7b, 0x69, 0x25, 0x7b, 0x98, 0xca, 0x6, 0x88, 0x5, - 0x27, 0x72, 0xef, 0x5, 0x72, 0x3b, 0x6e, 0xc8, 0xcf, 0x5a, - 0xf1, 0x3f, 0xd8, 0xb3, 0xc3, 0x77, 0x5a, 0x67, 0xc3, 0xa8, - 0xae, 0x6e, 0x6d, 0xa3, 0x85, 0xaf, 0x26, 0x69, 0xd4, 0x80, - 0xe1, 0x99, 0x4f, 00, 0x9c, 0xf1, 0xdb, 0xb7, 0x6c, 0x56, - 0xdf, 0xed, 0x5f, 0xe2, 0x58, 0xb4, 0xaf, 0x85, 0x37, 0x7a, - 0x50, 0x53, 0x2d, 0xfe, 0xbf, 0x3c, 0x7a, 0x65, 0xa4, 0x41, - 0x8a, 0xe6, 0x47, 0x60, 0x49, 0xc8, 0xe3, 00, 0x29, 0x38, - 0x24, 0x3, 0xd3, 0xbd, 0x7a, 0x3f, 0xc1, 0xef, 0xd, 0xcb, - 0xe1, 0xdf, 0x8, 0x69, 0x36, 0x12, 0xb8, 0x77, 0xb7, 0xb7, - 0x48, 0xd9, 0x82, 0x5, 0x4, 0x80, 0x3b, 0xa, 0xf1, 0xa4, - 0x95, 0x6c, 0xc6, 0x3f, 0xf4, 0xee, 0x2f, 0xef, 0x93, 0xff, - 00, 0x24, 0x78, 0x12, 0x4a, 0xbe, 0x6d, 0x1e, 0xd4, 0xa0, - 0xfe, 0xf9, 0xbf, 0xf2, 0x89, 0xe8, 0x88, 0x36, 0xa0, 0x1e, - 0xd4, 0xea, 0x28, 0xaf, 0x64, 0xf7, 0xcf, 0x16, 0xfd, 0xae, - 0xfc, 0x29, 0x17, 0x8a, 0xfe, 0x6, 0xf8, 0x8a, 0x9, 0x67, - 0xb9, 0x88, 0xc7, 0x6e, 0xed, 0x18, 0xb6, 0x29, 0xb8, 0xb6, - 0x38, 0xfb, 0xca, 0x41, 0xff, 00, 0xf5, 0xd7, 0xf3, 0xe9, - 0xe1, 0xaf, 0xb4, 0x78, 0x37, 0xe2, 0x55, 0xba, 0x34, 0x69, - 0x24, 0xd6, 0xd7, 0x61, 0x3f, 0xd2, 0x55, 0x82, 0x9c, 0x37, - 0x39, 0xc1, 0x7, 0x1c, 0x57, 0xed, 0x27, 0xfc, 0x14, 0xb, - 0xf6, 0xc7, 0x83, 0xe0, 0x16, 0x8f, 0x63, 0xa0, 0xd9, 0x41, - 0x6f, 0x79, 0xa8, 0xea, 0x85, 0x95, 0xe3, 0x9c, 0x64, 0x2c, - 0x60, 0x72, 0x70, 0x50, 0x8e, 0xf8, 0xeb, 0x5f, 0x8a, 0xdf, - 0x11, 0xbc, 0x66, 0xbe, 0x2d, 0xf1, 0x75, 0xce, 0xb1, 0x6b, - 0xa, 0xd9, 0xb4, 0xaf, 0xbc, 0x8, 0x8f, 0x43, 0xed, 0x40, - 0x1f, 0xd1, 0xcf, 0xc0, 0xbf, 0x16, 0xdb, 0xf8, 0xbf, 0xe1, - 0x77, 0x87, 0xaf, 0x21, 0x11, 0x46, 0x3e, 0xc9, 0x1a, 0x6c, - 0x8b, 0x80, 0x36, 0xa8, 0x1c, 0x2, 0x49, 0x3, 0xeb, 0x5e, - 0x81, 0x5f, 0xcf, 0xb7, 0xc0, 0xef, 0xdb, 0xcf, 0xc7, 0x3f, - 0x7, 0x2c, 0xe3, 0xb4, 0x5b, 0xdb, 0xbd, 0x42, 0xd9, 0x6, - 0x16, 0x37, 0x98, 0x60, 0xf, 0x4e, 0x54, 0xd7, 0xbd, 0x58, - 0x7f, 0xc1, 0x5e, 0x3c, 0x40, 0x98, 0xf3, 0xf4, 0xb9, 0xfd, - 0xff, 00, 0x7e, 0x3f, 0xf8, 0x9a, 00, 0xfd, 0x8f, 0xa4, - 0x27, 00, 0x93, 0xc0, 0xaf, 0x87, 0x3f, 0x63, 0xf, 0xdb, - 0x57, 0x5c, 0xfd, 0xa5, 0x3c, 0x57, 0xfd, 0x9e, 0xba, 0x74, - 0xb0, 0xdb, 0x20, 0x2f, 0x24, 0x92, 0x49, 0xb8, 0x2a, 0x8e, - 0xa7, 0x90, 0x2b, 0xed, 0xad, 0x4a, 0xe5, 0x6d, 0x2c, 0x66, - 0x91, 0xf8, 0x50, 0xa6, 0xa6, 0x52, 0x51, 0x4e, 0x4c, 0x89, - 0xc9, 0x42, 0x2e, 0x4f, 0xa1, 0xe2, 0x3f, 0x13, 0x6f, 0x92, - 0xf3, 0xc4, 0x25, 0x52, 0x46, 0x7d, 0x83, 0x9c, 0xe3, 0x3, - 0xf2, 0xae, 0x46, 0xaf, 0x6b, 0x77, 0x6b, 0x7d, 0xab, 0x5d, - 0x4c, 0xa3, 0xa, 0xce, 0x71, 0xce, 0x6a, 0x8d, 0x7e, 0x15, - 0x8b, 0xab, 0xed, 0xf1, 0x13, 0xa9, 0xdd, 0xb3, 0xf9, 0xaf, - 0x1d, 0x5f, 0xeb, 0x38, 0xaa, 0x95, 0xbb, 0xb6, 0x15, 0xea, - 0x3f, 0x6, 0xec, 0x24, 0x2, 0xe2, 0xe4, 0xc6, 0xa1, 0x9, - 0xe1, 0xce, 0x72, 0x7f, 0xa5, 0x79, 0x76, 0x33, 0xc0, 0xea, - 0x6b, 0xde, 0xbe, 0x1c, 0x69, 0x92, 0x69, 0xbe, 0x1f, 0x84, - 0x48, 0x79, 0x61, 0x9c, 0x60, 0x57, 0xb9, 0xc3, 0xb4, 0x3d, - 0xae, 0x35, 0x4f, 0xa4, 0x55, 0xcf, 0xa4, 0xe1, 0x4c, 0x33, - 0xaf, 0x98, 0xa9, 0xf4, 0x82, 0x6c, 0xeb, 0x28, 0xa2, 0x8a, - 0xfd, 0x6c, 0xfd, 0xcc, 0xf2, 0x8f, 0x8c, 0xd1, 0x47, 0xe7, - 0x5a, 0xb0, 0x76, 0xf3, 0x3a, 0x95, 0xc8, 0xc7, 0xb7, 0xbd, - 0x79, 0x85, 0x7a, 0x87, 0xc6, 0x51, 0x18, 0x7b, 0x7e, 0x3f, - 0x7a, 0x79, 0x27, 0x27, 0x81, 0x5e, 0x5f, 0x5f, 0x8d, 0xe7, - 0xbf, 0xf2, 0x30, 0xa8, 0x7e, 0x3, 0xc4, 0xba, 0x66, 0x95, - 0x7e, 0x5f, 0x90, 0x57, 0x59, 0xf0, 0xd2, 0x79, 0xa2, 0xf1, - 0x2c, 0x4b, 0x8, 0x53, 0xbf, 0x83, 0xbb, 0xb0, 0xae, 0x4e, - 0xba, 0x6f, 0x87, 0x9e, 0x6f, 0xfc, 0x24, 0x90, 0x79, 0x4d, - 0xb5, 0x8f, 0xcb, 0xd2, 0xbc, 0xfc, 0xbd, 0xb8, 0xe2, 0xe9, - 0x35, 0xdd, 0x1e, 0x66, 0x56, 0xdc, 0x71, 0xd4, 0x5a, 0xfe, - 0x64, 0x7d, 0x1, 0x45, 0x25, 0x2d, 0x7e, 0xe8, 0x7f, 0x48, - 0x85, 0x14, 0x51, 0x40, 0x1e, 0x65, 0xf1, 0x9a, 0xf2, 0x35, - 0xb5, 0xb6, 0xb6, 0xf3, 0x1b, 0xcc, 0x63, 0xbb, 0x60, 0xc6, - 0x31, 0xef, 0xde, 0xbc, 0x9a, 0xbb, 0x7f, 0x8b, 0x57, 0xd1, - 0xdd, 0x78, 0x89, 0x23, 0x40, 0x73, 0x14, 0x7f, 0x31, 0x2c, - 0x48, 0xe4, 0xf4, 0xc7, 0x6a, 0xe2, 0x2b, 0xf1, 0x8c, 0xea, - 0xb7, 0xb6, 0xc7, 0xd4, 0x7d, 0xb4, 0xfb, 0x8f, 0xe7, 0xde, - 0x21, 0xaf, 0xf5, 0x8c, 0xce, 0xac, 0x96, 0xc9, 0xdb, 0xee, - 0xa, 0xe8, 0x3c, 0xd, 0x66, 0xf7, 0x7e, 0x21, 0x87, 0x64, - 0x61, 0xc2, 0xf5, 0xce, 0x78, 0xfc, 0xab, 0x9f, 0xaf, 0x45, - 0xf8, 0x3f, 0xa7, 0xc9, 0x2d, 0xec, 0xb7, 0x3c, 0x4, 0x53, - 0x8e, 0x80, 0xf4, 0xae, 0x7c, 0xb2, 0x8f, 0xb7, 0xc6, 0x53, - 0x87, 0x9f, 0xe4, 0x72, 0x64, 0xf8, 0x77, 0x89, 0xc7, 0xd2, - 0xa7, 0xe7, 0xf9, 0x1e, 0xbf, 0x1a, 0xed, 0x45, 0x5f, 0x40, - 0x7, 0x14, 0xea, 0x28, 0xaf, 0xdb, 0xcf, 0xe8, 0xdd, 0x82, - 0x91, 0x86, 0xe5, 0x23, 0xa6, 0x46, 0x29, 0x68, 0xa0, 0xf, - 0x9f, 0xbe, 0x20, 0xda, 0x25, 0xaf, 0x89, 0x27, 0xd8, 0xcc, - 0xc0, 0xff, 00, 0x7b, 0x1f, 0xa5, 0x73, 0x55, 0xe8, 0x5f, - 0x17, 0x74, 0xe8, 0xe0, 0xd5, 0x23, 0x9d, 0x13, 0x69, 0x61, - 0xc9, 0xdd, 0x9f, 0xc7, 0xda, 0xbc, 0xf6, 0xbf, 0x10, 0xcc, - 0xe9, 0x7b, 0x1c, 0x65, 0x58, 0x79, 0x9f, 0xce, 0x59, 0xc5, - 0x17, 0x87, 0xcc, 0x2b, 0x41, 0xf7, 0xfc, 0xc2, 0xb5, 0xbc, - 0x2f, 0xaa, 0x3e, 0x8f, 0xac, 0xc1, 0x70, 0x9b, 0x73, 0x9c, - 0x12, 0xde, 0x9d, 0xeb, 0x26, 0x94, 0x12, 0xe, 0x41, 0xc1, - 0x15, 0xe7, 0xd3, 0x9b, 0xa5, 0x35, 0x52, 0x3b, 0xad, 0x4f, - 0x2e, 0x95, 0x49, 0x51, 0xa9, 0x1a, 0xb0, 0xdd, 0x3b, 0x9f, - 0x4f, 0x59, 0x5c, 0xad, 0xe5, 0xa4, 0x33, 0xaf, 0x49, 0x14, - 0x37, 0xe6, 0x2a, 0x7a, 0xf1, 0xaf, 0x8, 0x7c, 0x47, 0xb8, - 0xb0, 0x8d, 0x2d, 0xae, 0x8, 0x68, 0xd4, 0x60, 0x16, 0xc7, - 0x1f, 0xa5, 0x7a, 0xc, 0x3e, 0x3a, 0xd3, 0x5e, 0x20, 0xc6, - 0x65, 0x7, 0x1d, 0x39, 0xff, 00, 0xa, 0xfd, 0x8b, 0x7, - 0x9b, 0xe1, 0x71, 0x54, 0xd4, 0xb9, 0xac, 0xfa, 0xdc, 0xfd, - 0xf7, 0x2f, 0xcf, 0x70, 0x78, 0xda, 0x4a, 0x5c, 0xf6, 0x7d, - 0x6f, 0xa1, 0xd2, 0x57, 0x3f, 0xe2, 0xdf, 0x14, 0xda, 0xf8, - 0x7a, 0xc2, 0x52, 0xf2, 0x8f, 0x3c, 0xa9, 0xda, 0x8a, 0x46, - 0x7f, 0x23, 0x58, 0x1a, 0xcf, 0xc5, 0x6b, 0x4b, 0x34, 0x75, - 0x86, 0x3f, 0x31, 0x8f, 0x1, 0x83, 0x1f, 0xf0, 0xaf, 0x28, - 0xd6, 0xb5, 0xab, 0x8d, 0x6e, 0xf1, 0xe7, 0x9e, 0x46, 0x6c, - 0x93, 0xb5, 0x59, 0xb3, 0x81, 0xe9, 0x5e, 0x5e, 0x69, 0x9f, - 0xd1, 0xa1, 0x4d, 0xd3, 0xc3, 0x3e, 0x69, 0xbf, 0xc0, 0xf1, - 0x73, 0x9e, 0x27, 0xa1, 0x86, 0xa4, 0xe9, 0xe1, 0x25, 0xcd, - 0x37, 0xf7, 0x22, 0xbe, 0xa1, 0x7b, 0x26, 0xa3, 0x79, 0x2d, - 0xc4, 0x84, 0x96, 0x73, 0x9e, 0x6a, 0xbd, 0x14, 0x57, 0xe5, - 0xed, 0xb9, 0x37, 0x27, 0xbb, 0x3f, 0x19, 0x94, 0x9c, 0x9b, - 0x94, 0x9e, 0xac, 0x2b, 0xb9, 0xf8, 0x5d, 0xe1, 0xd7, 0xd4, - 0xb5, 0x36, 0xba, 0x78, 0xf3, 0xc, 0x44, 0x10, 0xcd, 0xeb, - 0x5c, 0x8e, 0x99, 0xa6, 0x4f, 0xab, 0xde, 0x25, 0xb5, 0xba, - 0x96, 0x76, 0x3f, 0x95, 0x7d, 0x5, 0xe1, 0x6d, 0x8, 0x68, - 0x3a, 0x54, 0x70, 0x7c, 0xbe, 0x61, 00, 0xb1, 0xa, 0x7, - 0x3f, 0x85, 0x7d, 0x3e, 0x41, 0x97, 0xbc, 0x5e, 0x21, 0x55, - 0x9a, 0xf7, 0x23, 0xf8, 0xb3, 0xec, 0xb8, 0x63, 0x2b, 0x78, - 0xdc, 0x52, 0xaf, 0x35, 0xee, 0x43, 0x5f, 0x57, 0xd8, 0xd9, - 0xa2, 0x8a, 0xf3, 0x1f, 0x1d, 0xf8, 0xee, 0x5d, 0x23, 0x5d, - 0x8e, 0x1b, 0x59, 0x1f, 0x9, 0xc3, 0x80, 0x78, 0xfc, 0xab, - 0xf4, 0xbc, 0x6e, 0x36, 0x96, 0x2, 0x97, 0xb5, 0xab, 0xb5, - 0xec, 0x7e, 0xbd, 0x98, 0xe6, 0x14, 0x72, 0xda, 0x3e, 0xda, - 0xb6, 0xd7, 0xb1, 0xe9, 0xd4, 0x57, 0x25, 0xe1, 0xdf, 0x1e, - 0xdb, 0xea, 0xc8, 0x8b, 0x2e, 0x23, 0x7c, 0x72, 0x49, 0xae, - 0xa2, 0x3b, 0xa8, 0xa6, 0x1f, 0x24, 0x8a, 0xdf, 0x43, 0x5a, - 0xd0, 0xc5, 0x51, 0xc4, 0xc7, 0x9e, 0x94, 0xae, 0x8d, 0xf0, - 0xd8, 0xca, 0x18, 0xb8, 0x29, 0xd1, 0x95, 0xd1, 0x2d, 0x14, - 0x51, 0x5d, 0x47, 0x68, 0xc9, 0x71, 0xe5, 0x3e, 0x4e, 0x6, - 0xe, 0x4d, 0x7c, 0xe9, 0xe2, 0xef, 0x27, 0xfe, 0x12, 0x1b, - 0xbf, 0x21, 0x8b, 0x20, 0x6c, 0x64, 0xfa, 0xd7, 0xb7, 0xf8, - 0xbf, 0xc4, 0x96, 0xba, 0x16, 0x97, 0x39, 0x95, 0xf3, 0x2b, - 0x2e, 0x11, 0x1, 0xc1, 0xc9, 0xfa, 0x57, 0xcf, 0x97, 0x13, - 0x1b, 0x9b, 0x89, 0x65, 0x6c, 0xe5, 0xd8, 0xb7, 0x27, 0x35, - 0xf9, 0xe7, 0x14, 0xe2, 0x60, 0xfd, 0x9d, 0x8, 0xbb, 0xb5, - 0xab, 0xf2, 0x3f, 0x2a, 0xe3, 0x4c, 0x5d, 0x39, 0x7b, 0x2c, - 0x34, 0x5a, 0x72, 0x5a, 0xbf, 0x22, 0x3a, 0x46, 0x38, 0x53, - 0x4b, 0x51, 0xcc, 0x70, 0x86, 0xbf, 0x3d, 0x6c, 0xfc, 0xb1, - 0xbd, 0xd, 0x5f, 0x5, 0x42, 0xf2, 0xeb, 0xb1, 0xb2, 0x28, - 0x21, 0x79, 0x24, 0xf6, 0xae, 0xeb, 0x5e, 0x90, 0x4, 0x3c, - 0x9a, 0xc5, 0xf8, 0x77, 0xa7, 0x34, 0x51, 0xcd, 0x72, 0xe0, - 00, 0x46, 0x6, 0x54, 0x7f, 0x3a, 0xb7, 0xe2, 0x29, 0xd7, - 0x2c, 0x7, 0xf3, 0xaf, 0xd7, 0x78, 0x76, 0x83, 0xa3, 0x82, - 0x52, 0x7f, 0x69, 0xdc, 0xfd, 0xdb, 0x85, 0x30, 0xcf, 0xf, - 0x97, 0xa9, 0x4b, 0x79, 0x3b, 0x9e, 0x75, 0xe2, 0xf9, 0x94, - 0x44, 0xdf, 0x31, 0xaf, 0x93, 0xff, 00, 0x68, 0x2d, 0x4a, - 0x15, 0xb5, 0x64, 0x32, 0xb6, 0x42, 0x9e, 0x38, 0xc5, 0x7d, - 0x37, 0xe3, 0x3b, 0x94, 0x11, 0xb0, 0xf7, 0xfe, 0xf1, 0xaf, - 0x8a, 0xff, 00, 0x68, 0x6d, 0x62, 0x7, 0x9a, 0x58, 0xd7, - 0x3b, 0x98, 0xe0, 0x7e, 0xf0, 0xd7, 0xa9, 0x99, 0x54, 0xe4, - 0xc3, 0xbf, 0x33, 0xd9, 0xcd, 0xaa, 0x7b, 0x3c, 0x2c, 0xbc, - 0xcf, 0x9a, 0x3c, 0x4d, 0x32, 0x92, 0xff, 00, 0x31, 0xe6, - 0xb9, 0x8d, 0x3, 0x49, 0x9f, 0xc4, 0x1e, 0x2a, 0xd2, 0x34, - 0xcb, 0x58, 0x92, 0xe2, 0xe2, 0xee, 0xf2, 0x28, 0x52, 0x29, - 0x54, 0xb4, 0x6c, 0x4b, 0x81, 0xf3, 0x85, 0xe7, 0x6f, 0xae, - 0x3b, 0x66, 0xb5, 0xbc, 0x47, 0x3a, 0x96, 0x20, 0x75, 0xfa, - 0xd7, 0x75, 0xfb, 0x23, 0xf8, 0x46, 0xeb, 0xc5, 0xdf, 0x1e, - 0x34, 0x2f, 0xb3, 0xa9, 0x29, 0x62, 0x5a, 0xe6, 0x47, 0x30, - 0xf9, 0xaa, 0x38, 0xd8, 0xb9, 0x7, 0x81, 0xcb, 0x83, 0xf8, - 0x57, 0x8b, 0x97, 0xd3, 0xd1, 0x23, 0xe7, 0xf2, 0xba, 0x7a, - 0x45, 0x77, 0x3f, 0x5d, 0xfc, 0x5, 0x6c, 0xf6, 0xbe, 0x18, - 0xd3, 0x22, 0x74, 0x11, 0xb0, 0x81, 0x49, 0x50, 0x31, 0x8c, - 0xf3, 0xcf, 0xbf, 0x3c, 0xd7, 0x6d, 0x67, 0x9c, 0x8a, 0xc4, - 0xb0, 0x8f, 0x6a, 0xaa, 0xe7, 0x38, 00, 0x67, 0x15, 0xd0, - 0x59, 0xaf, 0x41, 0x5f, 0x5c, 0x7d, 0xc9, 0xb3, 0x67, 0xda, - 0xb5, 0x17, 0xee, 0x8a, 0xcf, 0xb2, 0x5c, 0x63, 0xfc, 0x2b, - 0x4d, 0x57, 0xe5, 0x1c, 0x50, 0x7, 0x43, 0x51, 0x39, 0xa9, - 0xf, 0x4a, 0x85, 0xcd, 00, 0x43, 0x21, 0xeb, 0x54, 0x2e, - 0x1b, 0xad, 0x5d, 0x91, 0xb0, 0xd, 0x67, 0xdc, 0x37, 0x5a, - 00, 0xf9, 0x5f, 0xe3, 0xfd, 0xe4, 0x9e, 0x39, 0xf8, 0xff, - 00, 0xe0, 0x2f, 0x8, 0xe9, 0xfb, 0xe3, 0x9f, 0x4b, 0x61, - 0xa8, 0xcf, 0x39, 0x24, 0xaa, 0xee, 0x60, 0x54, 0x5, 0xc9, - 0x52, 0x40, 0x8c, 0x9f, 0x99, 0x33, 0xf3, 0xe, 0x70, 0x4d, - 0x7d, 0x6d, 0xa1, 0x5b, 0x18, 0x2d, 0x54, 0x67, 0xa0, 0xaf, - 0x90, 0xbc, 0x1b, 0x13, 0x7c, 0x52, 0xfd, 0xaa, 0x7c, 0x49, - 0xaf, 0x3c, 0x46, 0x7b, 0x1d, 0xb, 0x1a, 0x6d, 0xbc, 0x91, - 0x8d, 0x81, 0x19, 0x32, 0xa5, 0x5d, 0x64, 0xc3, 0x86, 0xc, - 0x65, 0xce, 0x17, 0x19, 0x7, 0xb7, 0x27, 0xeb, 0xf9, 0xae, - 0xa2, 0xd1, 0x74, 0x79, 0xee, 0xe6, 0x3b, 0x22, 0x82, 0x33, - 0x23, 0x12, 0x9, 0xe0, 0xf, 0x60, 0x4f, 0xe4, 0x2b, 0xc2, - 0xcb, 0x2f, 0x56, 0x75, 0xf1, 0xf, 0xed, 0x49, 0xa5, 0xe9, - 0x1d, 0x17, 0xea, 0x7c, 0xde, 0x4f, 0x7a, 0xd5, 0x31, 0x38, - 0xa7, 0xf6, 0xe6, 0xd2, 0xf3, 0x51, 0x5c, 0xab, 0xf5, 0xd7, - 0xa9, 0xa0, 0x5d, 0x57, 0xab, 0x1, 0xf5, 0x34, 0xd9, 0x66, - 0x58, 0xe1, 0x79, 0x33, 0x95, 0x50, 0x4f, 0x15, 0xf8, 0xef, - 0xf1, 0xfb, 0xfe, 0xa, 0x3f, 0xe2, 0xeb, 0x9f, 0x8c, 0xd7, - 0xfa, 0x26, 0x82, 0x86, 0x4b, 0x1b, 0x6b, 0x9f, 0xb2, 0xc4, - 0x21, 0x9e, 0x48, 0x43, 0x36, 0x71, 0xd1, 0xf6, 0xe3, 0xf1, - 0xc5, 0x7e, 0x98, 0xfe, 0xcc, 0x5a, 0xb6, 0xb1, 0xe2, 0xf, - 0x84, 0x5a, 0x56, 0xb1, 0xae, 0xc7, 0x2c, 0x57, 0x77, 0xa9, - 0xe6, 0x6c, 0x96, 0x55, 0x93, 0xe5, 0xec, 0x72, 0xa4, 0x8e, - 0x6b, 0xdd, 0x3e, 0x90, 0xfc, 0x85, 0xff, 00, 0x82, 0x92, - 0xea, 0x7a, 0x8f, 0xc4, 0xef, 0xda, 0xe, 0xf7, 0xec, 0x16, - 0x32, 0xb, 0x5d, 0x2e, 0x31, 0x6d, 0xe6, 0x31, 0x73, 0xbd, - 0xba, 0xb6, 0x3e, 0x66, 0x18, 0xfa, 0x62, 0xbe, 0x4a, 0x7f, - 0x3, 0xeb, 0x9, 0x9c, 0xda, 0x3f, 0xfd, 0xf2, 0x7f, 0xc2, - 0xbf, 0xa4, 0x5d, 0x6b, 0xe0, 0xff, 00, 0xc3, 0xbf, 0x17, - 0x6a, 0x32, 0xdd, 0x5f, 0xe8, 0x1a, 0x75, 0xe5, 0xec, 0xc7, - 0x2f, 0x2c, 0x90, 0x29, 0x66, 0x3f, 0x52, 0x2b, 0xa, 0xf3, - 0xf6, 0x48, 0xf8, 0x59, 0x7a, 0x49, 0x7f, 0xa, 0xd9, 0xc, - 0xff, 00, 0x76, 0x18, 0xff, 00, 0xaa, 0xd0, 0x7, 0xf3, - 0x9e, 0xfe, 0x14, 0xd5, 0x63, 0xeb, 0x67, 0x27, 0xe0, 0xa6, - 0xa0, 0x6d, 0x3, 0x51, 0x4e, 0xb6, 0x73, 0x7f, 0xdf, 0x26, - 0xbf, 0xa1, 0xdb, 0xbf, 0xd8, 0x77, 0xe1, 0x15, 0xde, 0x77, - 0x78, 0x6e, 0x25, 0xff, 00, 0x72, 0x38, 0xbf, 0xf8, 0x8a, - 0xc4, 0xbc, 0xff, 00, 0x82, 0x7b, 0x7c, 0x20, 0xbb, 0xce, - 0x34, 0x89, 0x22, 0xcf, 0xf7, 0x44, 0x5f, 0xfc, 0x45, 00, - 0x78, 0x87, 0xfc, 0x12, 0x53, 0xe1, 0x45, 0xf7, 0x85, 0xfe, - 0x1e, 0x5f, 0x78, 0x82, 0xf8, 0x79, 0x5f, 0x68, 0x51, 0x14, - 0x71, 0x98, 0xc0, 0x27, 0x3f, 0x31, 0x39, 0x29, 0x9f, 0xc8, - 0xd7, 0xdb, 0xdf, 0x11, 0x75, 0x24, 0xd3, 0xbc, 0x37, 0x39, - 0x65, 0x2c, 0x5f, 0xe5, 00, 0x7a, 0xfe, 0x75, 0x7, 0xc3, - 0x2f, 0x85, 0xba, 0xf, 0xc2, 0x5f, 0xf, 0xae, 0x8f, 0xe1, - 0xfb, 0x7f, 0x22, 0xd0, 0x10, 0x4e, 0x42, 0x82, 0x71, 0xd3, - 0x38, 0x2, 0xb7, 0xb5, 0xcd, 0x1a, 0x2d, 0x76, 0xc5, 0xad, - 0x66, 0x62, 0xa8, 0xdd, 0x71, 0x5c, 0x98, 0xba, 0x73, 0xab, - 0x87, 0x9c, 0x29, 0x7c, 0x4d, 0x3b, 0x1c, 0x38, 0xea, 0x55, - 0x2b, 0x61, 0x6a, 0x53, 0xa3, 0xf1, 0x34, 0xd2, 0x3e, 0x6a, - 0x19, 0xc7, 0x20, 0xfe, 0x54, 0x66, 0xbd, 0xb5, 0xbe, 0x13, - 0xe9, 0xc7, 0xa4, 0xee, 0x3f, 0xe0, 0x22, 0xa0, 0x7f, 0x84, - 0x56, 0x67, 0xa5, 0xd3, 0x7e, 0x28, 0x2b, 0xf3, 0x7, 0xc3, - 0x78, 0xf5, 0xb2, 0x5f, 0x7a, 0x3f, 0x1b, 0x7c, 0x25, 0x99, - 0x2d, 0x92, 0xfb, 0xd1, 0xe4, 0xba, 0x2d, 0xa9, 0xbf, 0xd5, - 0x6d, 0x60, 0x4e, 0xac, 0xe2, 0xbe, 0x91, 0xd3, 0xa0, 0xfb, - 0x35, 0x94, 0x51, 0xe7, 0x3b, 0x54, 0x57, 0x1b, 0xa5, 0xfc, - 0x2c, 0xb5, 0xd3, 0xf5, 0x8, 0xae, 0x4c, 0xe5, 0xc4, 0x67, - 0x21, 0x76, 0x8e, 0xb5, 0xdd, 0x2a, 0x85, 0x50, 0x7, 0x41, - 0xc5, 0x7d, 0x76, 0x43, 0x96, 0xd5, 0xc0, 0x46, 0x6e, 0xba, - 0xb3, 0x67, 0xdd, 0x70, 0xce, 0x51, 0x5f, 0x2c, 0x85, 0x47, - 0x88, 0x56, 0x94, 0x9f, 0x7e, 0x82, 0xd1, 0x45, 0x15, 0xf5, - 0x87, 0xdc, 0x1e, 0x4f, 0xf1, 0x97, 0x60, 0x96, 0xdc, 0x63, - 0xf7, 0x8d, 0xce, 0x72, 0x78, 0x1f, 0x9d, 0x79, 0x8d, 0x7b, - 0x8f, 0xc4, 0x2f, 0xa, 0xdd, 0xf8, 0x91, 0x23, 0x10, 0xd, - 0xc1, 0x78, 0xc5, 0x70, 0x4f, 0xf0, 0xb3, 0x53, 0x4f, 0xf9, - 0x66, 0xdf, 0x98, 0xaf, 0xca, 0xf3, 0x9c, 0xbf, 0x15, 0x57, - 0x1b, 0x3a, 0x94, 0xe9, 0xb6, 0x9f, 0x91, 0xf8, 0xaf, 0x10, - 0x65, 0x58, 0xca, 0xd9, 0x85, 0x4a, 0xb4, 0xa9, 0x37, 0x17, - 0x6d, 0x52, 0x38, 0xba, 0xe8, 0xbc, 0x4, 0xd2, 0x2f, 0x88, - 0xed, 0xfc, 0xb7, 0x8, 0xc4, 0xe3, 0xa0, 0x35, 0x66, 0x4f, - 0x87, 0x1a, 0x9a, 0x7f, 0xcb, 0x27, 0xfc, 0xc5, 0x5b, 0xf0, - 0xe7, 0x82, 0x35, 0xb, 0x6d, 0x6e, 0xde, 0x47, 0x86, 0x4d, - 0xa8, 0x73, 0xd4, 0x57, 0x93, 0x86, 0xc1, 0x62, 0xa9, 0x62, - 0x21, 0x27, 0x4d, 0xe8, 0xd1, 0xe1, 0xe0, 0xf2, 0xec, 0x6d, - 0x1c, 0x55, 0x39, 0x4a, 0x93, 0xd1, 0xa3, 0xdb, 0xd7, 0x85, - 0x19, 0x39, 0x3e, 0xb4, 0xb4, 0xd8, 0xd7, 0x64, 0x6a, 0xbe, - 0x83, 0x14, 0xea, 0xfd, 0xa5, 0x1f, 0xd0, 0xab, 0x60, 0xa8, - 0xae, 0xa5, 0x10, 0x5b, 0xc8, 0xed, 0xd0, 0x2, 0x6a, 0x5a, - 0xcc, 0xf1, 0x1d, 0xd9, 0xb2, 0xd2, 0x2e, 0x24, 0x5c, 0x6e, - 0xa, 0x71, 0x90, 0x4f, 0xf2, 0xac, 0xea, 0xcf, 0xd9, 0xd3, - 0x94, 0xdf, 0x44, 0x65, 0x5a, 0x6a, 0x95, 0x39, 0x4d, 0xf4, - 0x47, 0x80, 0xf8, 0xa2, 0xfd, 0x75, 0x2d, 0x76, 0xee, 0x65, - 0x18, 0x52, 0xe4, 0xe, 0x49, 0xe9, 0xf8, 0xd6, 0x55, 0x5c, - 0xb8, 0xb4, 0xba, 0x9e, 0x69, 0x25, 0x75, 0xcb, 0x3b, 0x16, - 0x35, 0x9, 0xb3, 0x9c, 0x7f, 0xcb, 0x3f, 0xd6, 0xbf, 0x8, - 0xaa, 0xe7, 0x52, 0x72, 0x9b, 0x5b, 0xb3, 0xf9, 0xa2, 0xb3, - 0x9d, 0x5a, 0x92, 0xa9, 0x24, 0xf5, 0x6d, 0xec, 0x42, 0x4e, - 0x5, 0x7b, 0x67, 0xc2, 0x5d, 0x39, 0xed, 0x3c, 0x3f, 0xe6, - 0xb9, 0x1f, 0xbc, 0x6e, 00, 0x3, 0xfc, 0x2b, 0xc6, 0x5, - 0xa4, 0xee, 0xea, 0x82, 0x33, 0x96, 0x38, 0xea, 0x2b, 0xe8, - 0x2f, 0x3, 0xe9, 0xbf, 0xd9, 0x9e, 0x1f, 0x82, 0x3d, 0xa5, - 0x49, 0xf9, 0x88, 0x24, 0x7f, 0x4a, 0xfa, 0x9e, 0x19, 0xa2, - 0xe5, 0x8b, 0x75, 0x1a, 0xd9, 0x7e, 0x67, 0xda, 0xf0, 0x75, - 0x7, 0x3c, 0x74, 0xaa, 0xb5, 0xa4, 0x57, 0xe6, 0x6f, 0xd1, - 0x45, 0x15, 0xfa, 0x99, 0xfb, 0x40, 0x51, 0x45, 0x14, 0x1, - 0xcc, 0xf8, 0xeb, 0xc3, 0xd0, 0xeb, 0x5a, 0x44, 0x85, 0xa3, - 0x2f, 0x32, 0xc, 0xa9, 0x4, 0x8a, 0xf0, 0x39, 0xe0, 0x6b, - 0x69, 0xde, 0x27, 0x18, 0x65, 0x38, 0x35, 0xf5, 0x9, 00, - 0x8c, 0x11, 0x91, 0x5e, 0x59, 0xf1, 0x23, 0xc1, 0x25, 0xe5, - 0x6b, 0xdb, 0x50, 0x59, 0x9b, 0x92, 0x8a, 0xb8, 0x2, 0xbe, - 0x1b, 0x88, 0xb2, 0xc7, 0x59, 0x2c, 0x55, 0x15, 0xaa, 0xdc, - 0xfc, 0xdf, 0x8a, 0xf2, 0x79, 0x62, 0x22, 0xb1, 0xb4, 0x17, - 0xbc, 0xb7, 0x5d, 0xd7, 0x73, 0xcb, 0x68, 0xa7, 0xc9, 0x14, - 0x90, 0x31, 0x59, 0x17, 0x63, 0xe, 0xc6, 0x99, 0x5f, 0x9a, - 0xf9, 0x33, 0xf2, 0x2d, 0xb4, 0x60, 0x54, 0x1a, 0x30, 0x31, - 0x45, 0x14, 0x58, 0x56, 0x40, 0x6, 0x28, 0xa2, 0x82, 0x71, - 0x46, 0xc1, 0xb0, 0x54, 0x96, 0xf6, 0xf2, 0x5d, 0x4c, 0x91, - 0x44, 0xa5, 0x9d, 0x8e, 00, 0x15, 0x6b, 0x4b, 0xd1, 0xee, - 0xf5, 0x89, 0x96, 0x3b, 0x58, 0x8c, 0x84, 0x9e, 0xc4, 0x57, - 0xac, 0xf8, 0x33, 0xe1, 0x9c, 0x1a, 0x50, 0x4b, 0xab, 0xd2, - 0x65, 0x9c, 0x8c, 0x88, 0xd8, 0x2, 0x14, 0xd7, 0xaf, 0x97, - 0xe5, 0x95, 0xf3, 0x9, 0xa5, 0x5, 0xee, 0xf5, 0x7d, 0xf, - 0x7b, 0x2b, 0xc9, 0xf1, 0x39, 0xa5, 0x44, 0xa9, 0xc6, 0xd1, - 0xea, 0xfa, 0x17, 0x3c, 0x3, 0xe0, 0x84, 0xf0, 0xfd, 0xaa, - 0xdc, 0x4e, 0x33, 0x74, 0xeb, 0xc8, 0xf4, 0xae, 0xce, 0x90, - 00, 0xa0, 00, 0x30, 0x7, 0x6a, 0x5a, 0xfd, 0x8b, 0xb, - 0x86, 0xa7, 0x84, 0xa4, 0xa9, 0x52, 0x56, 0x48, 0xfd, 0xef, - 0x7, 0x84, 0xa5, 0x81, 0xa3, 0x1a, 0x14, 0x55, 0x92, 0x23, - 0xb8, 0x99, 0x6d, 0xe0, 0x92, 0x56, 0xfb, 0xa8, 0xa5, 0x8f, - 0xe0, 0x2b, 0xe7, 0xf, 0x12, 0x5f, 0x8d, 0x4f, 0x58, 0xb8, - 0x9c, 0xc, 0x2, 0xe7, 0x1c, 0xe7, 0xfa, 0xd7, 0xbd, 0xf8, - 0xab, 0x57, 0x1a, 0x36, 0x8f, 0x3c, 0xf9, 0x1, 0xc2, 0x9d, - 0xb9, 0x4, 0xf3, 0x8f, 0x6a, 0xf9, 0xcd, 0xdc, 0xca, 0xe5, - 0xd8, 0xe5, 0x98, 0xe4, 0xd7, 0xc2, 0xf1, 0x55, 0x74, 0xdd, - 0x3a, 0x9, 0xf7, 0x6c, 0xfc, 0xdf, 0x8d, 0x71, 0x29, 0xba, - 0x58, 0x74, 0xfb, 0xb7, 0xfa, 0x4, 0x52, 0x3c, 0x2d, 0xba, - 0x36, 0x2a, 0x7e, 0xb5, 0xa7, 0x67, 0xe2, 0xbd, 0x52, 0xc0, - 0x83, 0xc, 0xe0, 0x63, 0xd5, 0x41, 0xac, 0xaa, 0x2b, 0xe0, - 0xe1, 0x56, 0xa5, 0x27, 0x7a, 0x72, 0x6b, 0xd0, 0xfc, 0xce, - 0x9d, 0x6a, 0xb4, 0x5d, 0xe9, 0x49, 0xaf, 0x46, 0x75, 0xb1, - 0xfc, 0x50, 0xd7, 0x50, 0x73, 0x24, 0x47, 0xfe, 00, 0x2a, - 0x3b, 0x9f, 0x89, 0x5a, 0xcd, 0xd2, 0x6d, 0x67, 0x45, 0xf7, - 0xb, 0x5c, 0xb5, 0x15, 0xd8, 0xf3, 0x1c, 0x63, 0x56, 0x75, - 0x65, 0xf7, 0x9d, 0xef, 0x36, 0xcc, 0x1a, 0xe5, 0x75, 0xe5, - 0x6f, 0x52, 0xd5, 0xf6, 0xa9, 0x75, 0xa9, 0x3e, 0xeb, 0x89, - 0x4c, 0x9e, 0xc6, 0xaa, 0xd1, 0x45, 0x70, 0x4a, 0x52, 0x9b, - 0xe6, 0x93, 0xbb, 0x3c, 0xc9, 0x4e, 0x53, 0x7c, 0xd3, 0x77, - 0x61, 0x53, 0xe9, 0xba, 0x74, 0x9a, 0xbe, 0xa1, 0x15, 0xac, - 0x63, 0x25, 0x8f, 0x27, 0xd0, 0x53, 0x20, 0x82, 0x4b, 0x99, - 0x56, 0x38, 0x94, 0xbb, 0xb1, 0xc0, 0x2, 0xbd, 0x47, 0xc1, - 0x5e, 0x3, 0xfe, 0xcb, 0x44, 0xd4, 0x2e, 0xd4, 0xf9, 0xdb, - 0x49, 0x50, 0x40, 0xc0, 0xaf, 0x53, 0x2d, 0xc0, 0x54, 0xc7, - 0xd7, 0x8c, 0x62, 0xbd, 0xd4, 0xf5, 0x7e, 0x47, 0xb3, 0x94, - 0x65, 0x95, 0x73, 0x3c, 0x4c, 0x61, 0x18, 0xfb, 0xa9, 0xea, - 0xfc, 0x8b, 0xa2, 0xca, 0x3d, 0x26, 0xc8, 0x42, 0x9d, 0x15, - 0x46, 0x7f, 0x2a, 0xe2, 0x3c, 0x41, 0x3a, 0xe5, 0xeb, 0xbb, - 0xd6, 0x67, 0x21, 0x1f, 0xfc, 0x2b, 0xcd, 0xbc, 0x43, 0x74, - 0x40, 0x73, 0x5f, 0xb6, 0x42, 0xa, 0x9c, 0x54, 0x23, 0xb2, - 0x3f, 0xa2, 0x29, 0xd3, 0x8d, 0x28, 0x28, 0x45, 0x59, 0x23, - 0xca, 0x7c, 0x75, 0x7c, 0x91, 0xc1, 0x33, 0xb0, 0x38, 0x50, - 0x6b, 0xe0, 0xbf, 0x8d, 0x3a, 0xb4, 0x77, 0x7a, 0xcc, 0xa1, - 0x41, 0xf9, 0x58, 0xf5, 0x3f, 0xfd, 0x7a, 0xfb, 0x5f, 0xe2, - 0x66, 0xb3, 0xf6, 0x2d, 0x2a, 0xea, 0x42, 0x7b, 0x60, 0x70, - 0x6b, 0xe0, 0x4f, 0x89, 0x5a, 0xc1, 0xbd, 0xd5, 0xee, 0x18, - 0x90, 0x70, 0x4f, 0xaf, 0x5a, 0xf9, 0xec, 0xe2, 0x7e, 0xec, - 0x60, 0x7c, 0xb6, 0x7f, 0x3f, 0x76, 0x14, 0xfb, 0x9e, 0x4d, - 0xae, 0xcc, 0x1a, 0x63, 0x5f, 0x51, 0x7f, 0xc1, 0x35, 0x7c, - 0x3d, 0x7d, 0xa8, 0xfc, 0x55, 0xd7, 0x35, 0x48, 0xa5, 0x44, - 0xd3, 0xec, 0xec, 0xd5, 0x26, 0x8d, 0xbe, 0xf3, 0xbb, 0x31, - 0x2a, 0x47, 0x1d, 0x82, 0xb0, 0x3c, 0x8f, 0xbc, 0x3a, 0xf6, - 0xf9, 0x4f, 0x57, 0x9c, 0xbc, 0xac, 0x6b, 0xef, 0x4f, 0xf8, - 0x26, 0x5f, 0x80, 0x5e, 0xd3, 0x44, 0xd7, 0x3c, 0x55, 0x34, - 0x12, 0x21, 0xbe, 0x93, 0xca, 0x86, 0x46, 0xdb, 0xb5, 0xe3, - 0x42, 0x54, 0x6d, 0xe4, 0xb7, 0xde, 0xf3, 0x41, 0xce, 0x3e, - 0xe8, 0xfc, 0x75, 0xc0, 0x43, 0x54, 0x6f, 0x96, 0xc3, 0x55, - 0xe4, 0x7d, 0xf1, 0x62, 0xa7, 0x22, 0xb7, 0xac, 0x94, 0xe4, - 0x56, 0x25, 0x8a, 0xf4, 0xe2, 0xb7, 0xac, 0x93, 0x24, 0x57, - 0xbe, 0x7d, 0x31, 0xb5, 0x68, 0xa7, 0x22, 0xb4, 0x80, 0xe2, - 0xb3, 0xed, 0x17, 0x9a, 0xd1, 0x55, 0xe0, 0x50, 0x6, 0xe9, - 0xe9, 0x50, 0xb9, 0xa9, 0x5a, 0xa0, 0x73, 0x40, 0x15, 0xa6, - 0x3d, 0x6b, 0x96, 0xf1, 0xbf, 0x88, 0x20, 0xf0, 0xb7, 0x85, - 0x75, 0x8d, 0x62, 0xe6, 0x53, 0xc, 0x16, 0x16, 0x92, 0xdc, - 0xbb, 0xaa, 0x86, 0x20, 0x22, 0x16, 0xe1, 0x49, 00, 0x9e, - 0x38, 0x4, 0x8c, 0x9e, 0x32, 0x2b, 0xa5, 0xb8, 0x3c, 0x1a, - 0xf9, 0xeb, 0xf6, 0xce, 0xd6, 0xda, 0xc3, 0xe1, 0x1, 0xd3, - 0x12, 0x16, 0x76, 0xd6, 0xb5, 0x1b, 0x7b, 0x13, 0x36, 0xe2, - 0xab, 00, 0xdc, 0x65, 0x2e, 0xc4, 0x60, 0x7f, 0xcb, 0x20, - 0xb8, 0x27, 0xf8, 0xbb, 0xe0, 0xd7, 0x1e, 0x32, 0xbf, 0xd5, - 0xb0, 0xf5, 0x2b, 0x7f, 0x2a, 0x6c, 0xe0, 0xc7, 0xe2, 0x3e, - 0xa9, 0x85, 0xab, 0x5f, 0xf9, 0x53, 0x7f, 0x3b, 0x69, 0xf8, - 0x94, 0xff, 00, 0x62, 0xbd, 0x2, 0x7b, 0x7f, 0x87, 0xeb, - 0xaa, 0x5e, 0x44, 0xad, 0x79, 0xa9, 0xdc, 0xbd, 0xd4, 0x93, - 0x92, 0x4b, 0xcb, 0x93, 0xd5, 0xb8, 0x1c, 0xe7, 0x3e, 0xbd, - 0x6b, 0xd2, 0xff, 00, 0x6a, 0x9f, 0x18, 0x45, 0xe0, 0x8f, - 0x81, 0xfe, 0x22, 0xbe, 0x92, 0xed, 0xec, 0x8f, 0xd9, 0xd9, - 0x44, 0x91, 0x80, 0x4f, 0x42, 0x4f, 0x52, 0x2b, 0x63, 0xe1, - 0x6, 0x82, 0x34, 0xf, 0x8, 0x69, 0x36, 0x42, 0x75, 0x9b, - 0xc8, 0xb7, 0x8e, 0x3d, 0xea, 0xaa, 0x3, 0x60, 0xe, 0x70, - 0x38, 0xaf, 0x99, 0x3f, 0xe0, 0xac, 0x7a, 0xdc, 0xba, 0x47, - 0xec, 0xf8, 0xea, 0x96, 0x13, 0x5d, 0x2d, 0xc4, 0x9e, 0x47, - 0x9b, 0x1b, 0x38, 0x58, 0xcb, 0x77, 0x6d, 0xbc, 0x76, 0xef, - 0xd6, 0xa3, 0x1, 0x43, 0xea, 0xd8, 0x5a, 0x74, 0x9e, 0xe9, - 0x2f, 0xbf, 0xa9, 0x9e, 0x59, 0x87, 0xfa, 0xa6, 0xe, 0x95, - 0x17, 0xba, 0x4a, 0xfe, 0xbd, 0x7f, 0x13, 0xf2, 0x5b, 0xe0, - 0x4e, 0x97, 0x27, 0xc4, 0xf, 0x8f, 0x7a, 0x79, 0x90, 0xb, - 0xe6, 0x9e, 0xf4, 0xca, 0x5a, 0x76, 0x2b, 0xbc, 0x96, 0xe3, - 0x38, 0xd, 0xcf, 0x35, 0xfb, 0x73, 0xfb, 0x57, 0xf8, 0xde, - 0xe3, 0xe0, 0x5f, 0xec, 0x91, 0xac, 0x5f, 0x69, 0x57, 0x7f, - 0xd8, 0xba, 0x85, 0x8e, 0x9a, 0x89, 0x6e, 0xd0, 0x46, 0xb2, - 0x62, 0x4f, 0x94, 0x6d, 0x1, 0x8a, 0xf5, 0x27, 0x19, 0xec, - 0x9, 0x38, 0x38, 0xc5, 0x7e, 0xc, 0x7c, 0x2a, 0xf8, 0x97, - 0xab, 0x7c, 0x28, 0xf1, 0x8d, 0x8f, 0x88, 0x34, 0x7b, 0x9f, - 0xb2, 0xdd, 0xda, 0xc8, 0x24, 0xf, 0xe5, 0x87, 0xe4, 0x7b, - 0x1a, 0xf7, 0x4f, 0xda, 0x3f, 0xf6, 0xe9, 0xf1, 0x5f, 0xed, - 0xb, 0xe0, 0x38, 0x7c, 0x33, 0xad, 0x4c, 0x2e, 0x6d, 0xc4, - 0x89, 0x23, 0xb7, 0x29, 0xf3, 0x29, 0xc8, 0x38, 0x18, 0x7, - 0x9a, 0xef, 0x3d, 0x33, 0xde, 0x3f, 0x60, 0x9f, 0xda, 0x7b, - 0xe2, 0xa7, 0xc5, 0x9f, 0x8c, 0xd6, 0xfa, 0x55, 0xfd, 0xf8, - 0xd4, 0x6c, 0x63, 0x40, 0xd2, 0xef, 0xf9, 0x31, 0x93, 0xfe, - 0xca, 0x1c, 0xfe, 0x35, 0xfb, 0x16, 0xb9, 0xda, 0x33, 0xd7, - 0x1c, 0xd7, 0xf3, 0xc5, 0xfb, 0x23, 0xfe, 0xd4, 0x17, 0x1f, - 0xb3, 0x56, 0xad, 0x75, 0xa8, 0x59, 0xbc, 0x3e, 0x64, 0xec, - 0x19, 0x96, 0x48, 0x37, 0xe7, 0x3, 00, 0x67, 0x6, 0xbe, - 0xc6, 0xb2, 0xff, 00, 0x82, 0xc0, 0x5f, 0xb6, 0x3c, 0xe8, - 0xac, 0x4f, 0xd6, 0x16, 0x1f, 0xfb, 0x2d, 00, 0x7e, 0xac, - 0x51, 0x5f, 0x98, 0xd6, 0x1f, 0xf0, 0x57, 0x84, 0x90, 0xaf, - 0x9b, 0x6b, 0xa7, 0x9f, 0x5e, 0x1c, 0x7f, 0x4a, 0xfa, 0x47, - 0xf6, 0x5a, 0xfd, 0xb4, 0xad, 0xff, 00, 0x68, 0xcd, 0x75, - 0xf4, 0xe8, 0x92, 0xc6, 0xdd, 0x95, 0x59, 0xb6, 0xc7, 0xb8, - 0xb3, 0x63, 0xd3, 0x38, 0xa0, 0xf, 0xaa, 0x28, 0xaa, 0x7a, - 0xbe, 0xa7, 0x1e, 0x8f, 0xa6, 0x5c, 0x5e, 0xca, 0x9, 0x8e, - 0x4, 0x2e, 0xc0, 0x75, 0xaf, 0x92, 0x35, 0x9f, 0xf8, 0x28, - 0xef, 0x84, 0xf4, 0x6f, 0x10, 0x5e, 0xe9, 0xb2, 0xd9, 0x2a, - 0xfd, 0x9a, 0x43, 0x19, 0x2e, 0xee, 0x18, 0xe3, 0xdb, 0x6d, - 00, 0x7d, 0x87, 0x45, 0x7c, 0x91, 0x67, 0xff, 00, 0x5, - 0x18, 0xf0, 0x3d, 0xc6, 0x37, 0xc2, 0x17, 0x3e, 0x92, 0x37, - 0xff, 00, 0x11, 0x5b, 0x76, 0x7f, 0xb7, 0xdf, 0xc3, 0xeb, - 0x91, 0xf3, 0x31, 0x4f, 0xf8, 0x1b, 0x1f, 0xfd, 0x92, 0x80, - 0x3e, 0x9c, 0xa2, 0xbe, 0x7e, 0xb2, 0xfd, 0xb6, 0xbe, 0x1d, - 0xdd, 0xe3, 0x37, 0x86, 0x3f, 0xfb, 0xe8, 0xff, 00, 0xec, - 0xb5, 0xb5, 0x69, 0xfb, 0x5b, 0xfc, 0x3a, 0xba, 0xc7, 0xfc, - 0x4d, 0xc2, 0x13, 0xea, 0x8d, 0xfe, 0x14, 0x1, 0xec, 0xf4, - 0x57, 0x97, 0xdb, 0x7e, 0xd2, 0x9f, 0xf, 0xae, 0xb1, 0x8d, - 0x76, 0x35, 0xcf, 0xaa, 0x37, 0xf8, 0x56, 0xa5, 0xbf, 0xc7, - 0x3f, 0x3, 0xdc, 0xe3, 0x66, 0xbf, 0x7, 0x3e, 0xaa, 0xc3, - 0xfa, 0x50, 0x7, 0x79, 0x45, 0x72, 0x71, 0x7c, 0x55, 0xf0, - 0x9c, 0xc0, 0x14, 0xd6, 0xed, 0xce, 0x7f, 0xde, 0xff, 00, - 0xa, 0xbb, 0xf, 0x8f, 0x3c, 0x3f, 0x71, 0xfe, 0xaf, 0x56, - 0xb6, 0x6f, 0xf8, 0x15, 00, 0x6f, 0xd1, 0x59, 0xb0, 0xf8, - 0x93, 0x4a, 0x9f, 0xfd, 0x5e, 0xa1, 0x6e, 0xdf, 0xf6, 0xd0, - 0x55, 0xa4, 0xd4, 0x2d, 0x64, 0xfb, 0x97, 0x11, 0x37, 0xd1, - 0xc5, 00, 0x58, 0xa2, 0x98, 0x25, 0x46, 0xe8, 0xea, 0x7e, - 0x86, 0x9f, 0x40, 0x5, 0x32, 0x68, 0x52, 0x78, 0xca, 0x48, - 0xa1, 0x94, 0xf5, 0x6, 0x9f, 0x45, 0x26, 0xaf, 0xa3, 0x13, - 0x49, 0xab, 0x33, 0x3d, 0xb4, 0x1d, 0x3d, 0xfa, 0xdb, 0x27, - 0xeb, 0x51, 0x37, 0x85, 0xf4, 0xc7, 0xeb, 0x6a, 0xbf, 0x99, - 0xad, 0x5a, 0x2b, 0x17, 0x87, 0xa2, 0xf7, 0x82, 0xfb, 0x91, - 0xce, 0xf0, 0xd4, 0x25, 0xbc, 0x17, 0xdc, 0x8c, 0x51, 0xe0, - 0xfd, 0x28, 0x48, 0xaf, 0xf6, 0x61, 0x95, 0x39, 0x1c, 0x9a, - 0xd8, 0x44, 0x58, 0xd0, 0x2a, 0x8c, 0x28, 0xe0, 0x1, 0x4e, - 0xa2, 0x9d, 0x3a, 0x34, 0xe9, 0x5f, 0x92, 0x29, 0x7a, 0x15, - 0x4a, 0x85, 0x2a, 0x37, 0xf6, 0x71, 0x4a, 0xfd, 0x90, 0x51, - 0x45, 0x15, 0xb1, 0xb8, 0x51, 0x45, 0x14, 00, 0x53, 0x25, - 0x89, 0x66, 0x8c, 0xa3, 0x8c, 0xa9, 0xeb, 0x4f, 0xa2, 0x86, - 0xaf, 0xa3, 0x13, 0x49, 0xe8, 0xce, 0x2b, 0xc4, 0x1f, 0xd, - 0x6c, 0xb5, 0x3d, 0xd2, 0x42, 0xa1, 0x25, 0x3e, 0xb9, 0xae, - 0x12, 0xff, 00, 0xe1, 0x66, 0xa5, 0x6a, 0xc7, 0xcb, 0xd8, - 0xc3, 0xb6, 0x1, 0xaf, 0x70, 0xa4, 0x2a, 0x1b, 0xa8, 0x7, - 0xeb, 0x5f, 0x3d, 0x8a, 0xc8, 0xb0, 0x78, 0xa7, 0xcc, 0xe3, - 0x67, 0xe4, 0x7c, 0xb6, 0x37, 0x86, 0xb0, 0x18, 0xc9, 0x73, - 0xb8, 0xf2, 0xbf, 0x2d, 0xf, 0x9d, 0x2e, 0x3c, 0x1f, 0xaa, - 0x5b, 0xb1, 0x53, 0x16, 0x48, 0xf4, 0x7, 0xfc, 0x29, 0x91, - 0xf8, 0x4f, 0x55, 0x93, 0xee, 0xdb, 0x93, 0xf8, 0x1f, 0xf0, - 0xaf, 0xa2, 0x1a, 0xc6, 0xdd, 0xfe, 0xf4, 0x28, 0x7f, 0xe0, - 0x34, 0x25, 0x94, 0x11, 0xfd, 0xd8, 0x91, 0x7e, 0x82, 0xbc, - 0x5f, 0xf5, 0x56, 0x95, 0xff, 00, 0x88, 0xec, 0x7c, 0xf3, - 0xe0, 0xaa, 0x3c, 0xdf, 0xc4, 0x76, 0x3c, 0xe, 0xdf, 0xc0, - 0x7a, 0xbc, 0xed, 0x83, 0x6c, 0xea, 0x3d, 0x70, 0x7f, 0xc2, - 0xba, 0xfd, 0x17, 0xe1, 0xb, 0x26, 0xc9, 0x6e, 0xa6, 0x52, - 0x3a, 0x94, 0x39, 0xaf, 0x53, 0x55, 0xa, 0x30, 00, 0x3, - 0xda, 0x96, 0xbd, 0xc, 0x3f, 0xd, 0xe0, 0xe8, 0xbe, 0x69, - 0xde, 0x5e, 0xa7, 0xa9, 0x85, 0xe1, 0x2c, 0x6, 0x1e, 0x5c, - 0xd5, 0x2f, 0x37, 0xe6, 0x66, 0x69, 0x3e, 0x1f, 0xb2, 0xd1, - 0xd1, 0x45, 0xbc, 0xa, 0x8c, 0x7, 0x2c, 0x32, 0x6b, 0x4e, - 0x8a, 0x2b, 0xe9, 0xe1, 0x4e, 0x14, 0xa3, 0xcb, 0x5, 0x64, - 0x7d, 0x95, 0x3a, 0x50, 0xa3, 0x15, 0xa, 0x6a, 0xcb, 0xc8, - 0x28, 0xa2, 0x8a, 0xd0, 0xd4, 0xe4, 0x3e, 0x22, 0xe8, 0x97, - 0x9a, 0xd6, 0x97, 0xe5, 0xda, 0x96, 0x27, 0xfb, 0xa1, 0x6b, - 0xc6, 0x6f, 0xbc, 0x3f, 0x7d, 0xa7, 0x1c, 0x4d, 0x9, 0x5c, - 0x7d, 0x6b, 0xe9, 0x42, 0x32, 0x30, 0x6a, 0x8d, 0xde, 0x83, - 0xa7, 0xdf, 0x83, 0xe7, 0xda, 0xc7, 0x26, 0x7d, 0x45, 0x7c, - 0xae, 0x69, 0x91, 0x47, 0x1f, 0x53, 0xdb, 0x46, 0x56, 0x97, - 0xe0, 0x7c, 0x56, 0x73, 0xc3, 0x70, 0xcc, 0xea, 0x7b, 0x78, - 0x4e, 0xd3, 0xfc, 0xf, 0x9a, 0x48, 0x23, 0xa8, 0xc5, 0x26, - 0x47, 0xad, 0x7b, 0xf5, 0xcf, 0xc3, 0x8d, 0xe, 0x7c, 0xff, - 00, 0xa2, 0x2a, 0xfd, 0x2b, 0x26, 0xe7, 0xe1, 0x2e, 0x99, - 0x21, 0xfd, 0xda, 0x6d, 0x15, 0xf2, 0x75, 0x38, 0x67, 0x1b, - 0xf, 0x85, 0xa6, 0x7c, 0x3d, 0x5e, 0xf, 0xcc, 0x21, 0xf0, - 0x38, 0xbf, 0x9f, 0xfc, 0x3, 0xc5, 0xf2, 0x3d, 0x68, 0xaf, - 0x5f, 0x5f, 0x83, 0xf6, 0x3b, 0xbe, 0x62, 0xd8, 0xf6, 0x35, - 0x6a, 0x3f, 0x84, 0x1a, 0x48, 0x3f, 0x33, 0x4b, 0xff, 00, - 0x7d, 0x56, 0x31, 0xe1, 0xcc, 0x7b, 0xe8, 0xbe, 0xf3, 0x8, - 0xf0, 0x9e, 0x67, 0x2f, 0xb2, 0x97, 0xcc, 0xf1, 0x70, 0xac, - 0xc7, 0x1, 0x58, 0xfd, 0x5, 0x6d, 0x68, 0xde, 0x10, 0xd4, - 0x75, 0x99, 0x14, 0x43, 0x9, 0x28, 0x7a, 0x92, 0x8, 0xfe, - 0x95, 0xec, 0xda, 0x6f, 0xc3, 0xfd, 0x27, 0x4e, 0x20, 0xac, - 0x3e, 0x69, 0x1f, 0xf3, 0xd3, 0x9a, 0xdf, 0xb7, 0xb3, 0x82, - 0xd4, 0x62, 0x18, 0x92, 0x31, 0xfe, 0xc8, 0xc5, 0x7a, 0xf8, - 0x5e, 0x16, 0x95, 0xd3, 0xc4, 0xcf, 0x4e, 0xc8, 0xf7, 0x70, - 0x7c, 0x19, 0x36, 0xd4, 0xb1, 0x75, 0x34, 0xec, 0xbf, 0xcc, - 0xe5, 0x3c, 0x21, 0xf0, 0xfe, 0xdb, 0x42, 0x8c, 0x4b, 0x32, - 0x2b, 0xce, 0x79, 0xea, 0x4e, 0x2b, 0xa1, 0xd4, 0xc8, 0x48, - 0x76, 0x8e, 00, 0x1d, 0x2b, 0x42, 0xb1, 0x75, 0xa9, 0x48, - 0x8d, 0xb8, 0xfd, 0x6b, 0xee, 0xf0, 0xd8, 0x6a, 0x58, 0x4a, - 0x6a, 0x9d, 0x28, 0xd9, 0x1f, 0xa5, 0x61, 0x30, 0x74, 0x30, - 0x54, 0xd5, 0x2a, 0x11, 0xb2, 0x47, 0x1d, 0xae, 0xcb, 0x84, - 0x6f, 0x9a, 0xbc, 0xbf, 0xc4, 0xf3, 0x61, 0x1f, 0xe6, 0xfd, - 0x2b, 0xbf, 0xf1, 0xc, 0xc4, 0x23, 0x70, 0x7f, 0x3a, 0xf2, - 0xaf, 0x16, 0x5c, 0x90, 0x8d, 0xf2, 0x9f, 0xce, 0xba, 0x8e, - 0xd3, 0xc1, 0xfe, 0x38, 0x5e, 0x88, 0x3c, 0x3f, 0x39, 0x33, - 0x15, 0xe7, 0x38, 0xa, 0xe, 0x7f, 0x5a, 0xf8, 0x33, 0xc5, - 0x97, 0x5, 0xe7, 0x9d, 0x8b, 0x96, 0xcb, 0x13, 0x92, 0x2b, - 0xeb, 0x6f, 0xda, 0x47, 0x58, 0x78, 0xb4, 0xe3, 0x17, 0x94, - 0xc4, 0x3, 0xd7, 0x78, 0xc7, 0xf2, 0xaf, 0x8c, 0x7c, 0x49, - 0x70, 0x48, 0x7e, 0xf, 0xe7, 0x5f, 0x1f, 0x98, 0xcb, 0xda, - 0x62, 0xd4, 0x57, 0x43, 0xe0, 0xb3, 0x59, 0xfb, 0x5c, 0x72, - 0x82, 0xe8, 0x71, 0xda, 0x83, 0xe5, 0x98, 0xe6, 0xbf, 0x5e, - 0x7f, 0x63, 0x6d, 0x10, 0x68, 0xbf, 0x3, 0x3c, 0x37, 0x1f, - 0xd8, 0x56, 0xc9, 0x9a, 0xd2, 0x27, 0x65, 0x13, 0x34, 0x84, - 0x92, 0x81, 0x89, 0x39, 0x3, 0x4, 0x96, 0x24, 0x81, 0xc0, - 0x24, 0x81, 0xc0, 0x15, 0xf9, 0x25, 0xa1, 0x69, 0x27, 0xc4, - 0x7e, 0x28, 0xd2, 0x74, 0xa1, 0x32, 0xdb, 0x1b, 0xeb, 0xc8, - 0x6d, 0xbc, 0xe9, 00, 0x2b, 0x1e, 0xf7, 0xb, 0xb8, 0x83, - 0x80, 0x71, 0x9c, 0xe3, 0xbd, 0x7e, 0xe3, 0x78, 0x1b, 0x4c, - 0x5d, 0x2f, 0xc3, 0x7a, 0x6d, 0xb2, 0xb8, 0x70, 0xb0, 0x83, - 0xb8, 0x26, 0xdc, 0xe7, 0xe6, 0xe9, 0xf8, 0xff, 00, 0xfa, - 0xab, 0xde, 0xc1, 0x46, 0xc9, 0xb3, 0xe9, 0xb2, 0xf8, 0x5a, - 0x2d, 0x9d, 0x7d, 0x8a, 0xf0, 0x38, 0xad, 0xeb, 0x15, 0xe9, - 0xc5, 0x64, 0x59, 0xaf, 0x3, 0x9a, 0xdd, 0xb3, 0x4c, 0x28, - 0xe6, 0xbd, 0x23, 0xd7, 0x35, 0x2c, 0xc7, 0x1d, 0x2a, 0xf8, - 0x1c, 0x55, 0x5b, 0x55, 0xe0, 0x55, 0xf5, 0x5f, 0x94, 0x50, - 0x6, 0x93, 0x9a, 0x81, 0xcd, 0x4a, 0xe6, 0xa0, 0x91, 0xb8, - 0xa0, 0xa, 0x77, 0x7, 0xad, 0x7c, 0xb3, 0xf1, 0xe6, 0x56, - 0xf1, 0xb7, 0xed, 0x13, 0xe0, 0x3f, 0x8, 0x39, 0x30, 0xd9, - 0xe9, 0xf6, 0xed, 0xaa, 0xcc, 0xb7, 0x7, 0x7c, 0x37, 0x2c, - 0xcc, 0x55, 0x71, 0x1b, 0x7c, 0xa4, 0xa8, 0x89, 0xc6, 0xec, - 0x67, 0xf7, 0x8c, 0x3b, 0x57, 0xd4, 0x57, 0xd, 0xd6, 0xbe, - 0x5b, 0xf8, 0x3c, 0xbf, 0xf0, 0xb4, 0xfe, 0x3e, 0x78, 0xdf, - 0xc6, 0x97, 0x40, 0xc9, 0x5, 0x95, 0xcf, 0xf6, 0x56, 0x9e, - 0xaf, 0x82, 0x23, 0x8a, 0x3f, 0x97, 0x2b, 0x9c, 0xe3, 0x3b, - 0x4b, 0x1c, 0x1e, 0xb2, 0x35, 0x78, 0xb9, 0x9f, 0xef, 0x55, - 0x2c, 0x32, 0xfb, 0x72, 0x5f, 0x72, 0xf7, 0x9f, 0xe4, 0x7c, - 0xf6, 0x71, 0xfb, 0xe5, 0x47, 0x8, 0xbf, 0xe5, 0xe4, 0xd5, - 0xff, 00, 0xc3, 0x1f, 0x79, 0xfe, 0x56, 0xf9, 0x9f, 0x55, - 0x78, 0x7a, 0xd1, 0x6d, 0xed, 0x23, 0x55, 0xa, 00, 0x5f, - 0xe1, 00, 0x57, 0xca, 0x7f, 0xf0, 0x53, 0x3f, 0x85, 0x1a, - 0xc7, 0xc4, 0xef, 0x82, 0xa0, 0x69, 0x11, 0x5d, 0x5c, 0x4b, - 0x68, 0xc5, 0x8c, 0x50, 0xcd, 0x2e, 0xc0, 0x3a, 0x96, 0x31, - 0xa7, 0xe, 0x78, 0xc0, 0xc8, 0xef, 0xd6, 0xbe, 0xbb, 0xd3, - 0xe2, 0x11, 0x40, 00, 0xa9, 0x2e, 0xec, 0xe0, 0xbf, 0x81, - 0xa0, 0xb9, 0x86, 0x3b, 0x88, 0x5b, 0x86, 0x8e, 0x45, 0xc, - 0xa7, 0xf0, 0x35, 0xed, 0x1f, 0x42, 0x7f, 0x2e, 0xda, 0xa7, - 0x83, 0xf5, 0xad, 0x22, 0xea, 0x48, 0x6e, 0x34, 0xbb, 0xd8, - 0xca, 0x1c, 0x12, 0xd6, 0xce, 0xbf, 0xcc, 0x56, 0x44, 0x91, - 0x3c, 0x2f, 0xb6, 0x44, 0x64, 0x6f, 0xee, 0xb0, 0xc1, 0xaf, - 0xe8, 0x57, 0xe3, 0x97, 0xec, 0xc5, 0xe0, 0x5d, 0x47, 0x43, - 0xd5, 0xb5, 0xcb, 0xcb, 0x4b, 0x5b, 0x34, 0x86, 0x26, 0x94, - 0xf9, 0x76, 0xea, 00, 0xc0, 0xc9, 0xe8, 0x2b, 0xf0, 0xde, - 0xcf, 0xc3, 0xb, 0xf1, 0x57, 0xe3, 0xda, 0x68, 0x3a, 0x72, - 0x84, 0xb6, 0xbd, 0xd4, 0xcd, 0xbc, 0x7b, 0x70, 0xa1, 0x63, - 0x56, 0x39, 0x3c, 0xfb, 0x2, 0x68, 0x3, 0xcc, 0x76, 0x36, - 0x33, 0xb4, 0xe3, 0xe9, 0x49, 0x8a, 0xfd, 0xa2, 0xf0, 0xdf, - 0xfc, 0x12, 0xdb, 0x40, 0x7f, 0xc, 0xd8, 0xb4, 0x97, 0x16, - 0xcd, 0x3c, 0x91, 0x7, 0x6d, 0xe0, 0x75, 0x23, 0xfe, 0xb9, - 0xd5, 0x6b, 0xef, 0xf8, 0x25, 0x2e, 0x93, 0x28, 0x6f, 0x2e, - 0x4b, 0x16, 0x3d, 0xba, 0x7f, 0xf1, 0xba, 00, 0xfc, 0x66, - 0xaf, 0xd9, 0xcf, 0xf8, 0x24, 0x97, 0xc2, 0xeb, 0x3d, 0xf, - 0xc0, 0x9a, 0x8f, 0x88, 0xf7, 0xda, 0x4f, 0x75, 0x2a, 0xac, - 0x20, 0xa4, 0x4a, 0x64, 0x5c, 0xf2, 0x4e, 0xee, 0xa3, 0xb5, - 0x73, 0x97, 0x3f, 0xf0, 0x49, 0x68, 0x1e, 0x65, 0x2a, 0x2c, - 0x4a, 0x67, 0x9c, 0x32, 0x8e, 0x3f, 0xef, 0x8a, 0xfb, 0x9f, - 0xe0, 0x27, 0xc1, 0x7d, 0x2b, 0xe0, 0x6f, 0x80, 0xad, 0x7c, - 0x3f, 0xa6, 0x41, 0x1c, 0x6c, 0xbf, 0x34, 0xce, 0x8a, 0xb9, - 0x76, 0xfa, 0x80, 0x33, 0x40, 0x1c, 0x67, 0xed, 0xab, 0xe3, - 0xa7, 0xf0, 0x2f, 0xc0, 0xed, 0x6e, 0xe6, 0x38, 0xae, 0x64, - 0x67, 0x85, 0x86, 0x6d, 0x64, 0x68, 0xd8, 0x60, 0x7f, 0x79, - 0x79, 0xaf, 0xe7, 0x7b, 0x54, 0xd5, 0x27, 0xd5, 0x75, 0x3b, - 0xab, 0xe9, 0xa4, 0x91, 0xa6, 0xb8, 0x95, 0xa4, 0x66, 0x79, - 0xb, 0xb6, 0x49, 0xcf, 0x2c, 0x79, 0x3f, 0x5a, 0xfe, 0x84, - 0x7f, 0x6c, 0xef, 0x83, 0x5e, 0x29, 0xf8, 0xdd, 0xe0, 0x23, - 0xa0, 0x78, 0x7f, 0x84, 0x98, 0x6c, 0x97, 0x13, 0x79, 0x67, - 0x69, 0xeb, 0xfa, 0x57, 0xe7, 0x4e, 0xa3, 0xff, 00, 0x4, - 0x9f, 0xf1, 0xa4, 0x20, 0x94, 0xb1, 0x6e, 0x3f, 0xbb, 0x72, - 0xbf, 0xe1, 0x40, 0x1f, 0x9f, 0xcb, 0x7b, 0x70, 0x9f, 0x76, - 0x69, 0x7, 0xd1, 0x8d, 0x58, 0x8f, 0x5d, 0xd4, 0x22, 0xfb, - 0xb7, 0x92, 0x8f, 0xf8, 0x15, 0x7d, 0xab, 0x7f, 0xff, 00, - 0x4, 0xbc, 0xf1, 0xd5, 0xb1, 0x21, 0x6c, 0xa6, 0xff, 00, - 0xbf, 0xcb, 0xfe, 0x15, 0xcf, 0x5f, 0x7f, 0xc1, 0x37, 0x7c, - 0x7d, 0x67, 0x9f, 0xf4, 0x29, 0xf8, 0xf5, 0x91, 0x3f, 0xc2, - 0x80, 0x3e, 0x55, 0x8b, 0xc6, 0x1a, 0xcc, 0x3f, 0x73, 0x50, - 0x98, 0x7e, 0x20, 0xd5, 0xb8, 0xbe, 0x22, 0xf8, 0x8a, 0x1f, - 0xbb, 0xaa, 0x4a, 0x3f, 0x5, 0xff, 00, 0xa, 0xf7, 0xfb, - 0xef, 0xd8, 0xb, 0xc7, 0xf6, 0x79, 0xff, 00, 0x42, 0x93, - 0x8f, 0x56, 0x5a, 0xc1, 0xbb, 0xfd, 0x89, 0xbe, 0x20, 0x5a, - 0xff, 00, 0xcb, 0x97, 0xeb, 0x9a, 00, 0xf2, 0x98, 0x7e, - 0x2c, 0xf8, 0xaa, 0x3, 0x95, 0xd5, 0x5f, 0xf1, 0x45, 0xff, - 00, 0xa, 0xd0, 0xb7, 0xf8, 0xe5, 0xe2, 0xfb, 0x72, 0x31, - 0xa9, 0x93, 0xf5, 0x45, 0xff, 00, 0xa, 0xeb, 0x6e, 0xbf, - 0x64, 0x7f, 0x1e, 0xdb, 0x1e, 0x6c, 0x94, 0xfe, 0x26, 0xb2, - 0x2e, 0x7f, 0x66, 0x8f, 0x1c, 0xdb, 0x7d, 0xed, 0x3d, 0x3f, - 0xef, 0xbf, 0xfe, 0xb5, 00, 0x32, 0x1f, 0xda, 0x37, 0xc6, - 0x50, 0xe3, 0xfd, 0x3b, 0x3f, 0x80, 0xff, 00, 0xa, 0xd4, - 0xb6, 0xfd, 0xaa, 0x7c, 0x69, 0x6f, 0x8f, 0xf4, 0xa2, 0xdf, - 0x88, 0x1f, 0xfb, 0x2d, 0x73, 0xb3, 0x7c, 0x5, 0xf1, 0x94, - 0x19, 0xdd, 0xa7, 0x2f, 0x1e, 0x92, 0xa, 0xa3, 0x37, 0xc1, - 0xcf, 0x15, 0xc1, 0xf7, 0xb4, 0xd2, 0x7e, 0x8e, 0x28, 0x3, - 0xd1, 0xec, 0xff, 00, 0x6c, 0xaf, 0x1b, 0x5a, 0xf4, 0x9d, - 0xcf, 0xfd, 0xb4, 0x1f, 0xfc, 0x4d, 0x6d, 0xd9, 0x7e, 0xdd, - 0x7e, 0x35, 0xb5, 0xc7, 0xef, 0x25, 0xfc, 0x24, 0x5f, 0xfe, - 0x26, 0xbc, 0x3e, 0x6f, 0x86, 0x7e, 0x25, 0x83, 0xef, 0x69, - 0x72, 0x7e, 0xc, 0xbf, 0xe3, 0x55, 0x64, 0xf0, 0x36, 0xbb, - 0x17, 0xde, 0xd3, 0x65, 0x1f, 0x97, 0xf8, 0xd0, 0x7, 0xd2, - 0xd6, 0x7f, 0xf0, 0x50, 0xbf, 0x19, 0x5b, 0x10, 0x4b, 0xdc, - 0x7e, 0xc, 0x9f, 0xfc, 0x4d, 0x6f, 0xd8, 0xff, 00, 0xc1, - 0x4b, 0x3c, 0x5f, 0x6b, 0xd5, 0xee, 0xff, 00, 0xf, 0x2f, - 0xfc, 0x2b, 0xe4, 0x19, 0x3c, 0x31, 0xaa, 0xc5, 0xf7, 0xac, - 0x65, 0x1f, 0x85, 0x55, 0x7d, 0x26, 0xf2, 0x3f, 0xbd, 0x6b, - 0x28, 0xff, 00, 0x80, 0x9a, 00, 0xfb, 0xaa, 0xc3, 0xfe, - 0xa, 0x99, 0xe2, 0xa8, 0x31, 0xb9, 0xef, 0x7, 0xd4, 0x47, - 0xfe, 0x15, 0xd1, 0xd8, 0xff, 00, 0xc1, 0x59, 0x3c, 0x43, - 0x10, 0x1, 0xe4, 0xb9, 0xfc, 0x55, 0x3f, 0xc2, 0xbf, 0x3b, - 0x1a, 0xda, 0x54, 0xfb, 0xd1, 0x38, 0xfa, 0xa9, 0xa6, 0x15, - 0x23, 0xa8, 0x22, 0x80, 0x3f, 0x4f, 0x34, 0xff, 00, 0xf8, - 0x2b, 0x8e, 0xa6, 0x88, 0x4, 0xac, 0xe7, 0xfd, 0xe5, 0x8f, - 0xff, 00, 0x89, 0xae, 0x86, 0xcb, 0xfe, 0xa, 0xe6, 0xd8, - 0x1e, 0x6a, 0xa1, 0xfa, 0x98, 0x87, 0xf4, 0xaf, 0xca, 0x1a, - 0x28, 0x3, 0xf5, 0xf6, 0xc7, 0xfe, 0xa, 0xdb, 0xa7, 0xb6, - 0x3c, 0xe8, 0x61, 0x3f, 0xf6, 0xd6, 0x31, 0xfd, 0x2b, 0xa3, - 0xd3, 0xbf, 0xe0, 0xab, 0xfe, 0x1d, 0x9b, 0x6, 0x5b, 0x48, - 0x4f, 0xfd, 0xbc, 0x25, 0x7e, 0x2f, 0xd0, 0x9, 0x1d, 0x28, - 0x3, 0xf7, 0xa, 0xc7, 0xfe, 0xa, 0x97, 0xe0, 0xe9, 0xf1, - 0xe6, 0x58, 0xa7, 0xe1, 0x74, 0x9f, 0xe3, 0x5b, 0xb6, 0x5f, - 0xf0, 0x53, 0x4f, 0x1, 0xdc, 0x63, 0x7d, 0x99, 0x5f, 0xa5, - 0xd4, 0x75, 0xf8, 0x44, 0x25, 0x75, 0x39, 0xe, 0xc3, 0xe8, - 0x6a, 0x45, 0xbd, 0xb8, 0x4f, 0xbb, 0x3c, 0xa3, 0xe8, 0xe6, - 0x80, 0x3f, 0x7d, 0x6d, 0x3f, 0xe0, 0xa2, 0xdf, 0xe, 0xee, - 0x71, 0x98, 0xe4, 0x42, 0x7f, 0xe9, 0xe2, 0x33, 0xfd, 0x6b, - 0x66, 0xd7, 0xf6, 0xf6, 0xf8, 0x6f, 0x73, 0x8c, 0xce, 0xe9, - 0x9f, 0xfa, 0x6b, 0x1f, 0xf8, 0xd7, 0xf3, 0xee, 0xba, 0xcd, - 0xfa, 0x7d, 0xdb, 0xdb, 0x81, 0xf4, 0x95, 0xbf, 0xc6, 0xa6, - 0x4f, 0x12, 0xea, 0xd1, 0xfd, 0xdd, 0x4e, 0xec, 0x7f, 0xdb, - 0x66, 0xff, 00, 0x1a, 00, 0xfe, 0x86, 0xed, 0xbf, 0x6d, - 0x5f, 0x86, 0xd7, 0x3, 0xfe, 0x42, 0x25, 0x7e, 0xaf, 0x1f, - 0xff, 00, 0x15, 0x5b, 0x36, 0xdf, 0xb5, 0x8f, 0xc3, 0x8b, - 0xa0, 0x8, 0xd6, 0x91, 0x73, 0xea, 0xf1, 0xff, 00, 0xf1, - 0x55, 0xfc, 0xea, 0x47, 0xe3, 0x7d, 0x7a, 0x2f, 0xbb, 0xab, - 0x5d, 0x8f, 0xfb, 0x6a, 0x6a, 0xec, 0x1f, 0x13, 0xbc, 0x4d, - 0x6e, 0x30, 0xba, 0xbd, 0xcf, 0xe3, 0x21, 0xff, 00, 0x1a, - 00, 0xfe, 0x8c, 0xad, 0xbf, 0x69, 0x1f, 0x87, 0xf7, 0x58, - 0xdb, 0xaf, 0xdb, 0x8f, 0xf7, 0xa4, 0x4f, 0xfe, 0x2a, 0xb5, - 0x2d, 0xfe, 0x37, 0xf8, 0x22, 0xe7, 0xee, 0x78, 0x86, 0xcb, - 0xf1, 0x99, 0x7f, 0xc6, 0xbf, 0x9c, 0x88, 0x3e, 0x33, 0xf8, - 0xb6, 0xdc, 0xfc, 0xba, 0xac, 0xc7, 0xea, 0xed, 0xfe, 0x35, - 0x7e, 0xf, 0xda, 0x3, 0xc6, 0x76, 0xfd, 0x35, 0x37, 0x3f, - 0x57, 0x7f, 0xfe, 0x2a, 0x80, 0x3f, 0xa3, 0xa8, 0x3e, 0x27, - 0xf8, 0x4e, 0xe7, 0xee, 0x78, 0x83, 0x4f, 0x3f, 0xf6, 0xf0, - 0xbf, 0xe3, 0x57, 0x63, 0xf1, 0xb7, 0x87, 0xe5, 0xfb, 0x9a, - 0xde, 0x9e, 0xdf, 0x4b, 0x94, 0xff, 00, 0x1a, 0xfe, 0x73, - 0x2d, 0xbf, 0x69, 0xef, 0x1c, 0xdb, 0x63, 0x1a, 0x8b, 0x1c, - 0x7f, 0xd3, 0x47, 0xff, 00, 0xe2, 0xab, 0x5e, 0xdb, 0xf6, - 0xbd, 0xf1, 0xdd, 0xbe, 0x3f, 0xd3, 0xe4, 0x20, 0x7a, 0x4d, - 0x27, 0xff, 00, 0x15, 0x40, 0x1f, 0xd1, 0x2a, 0x78, 0x93, - 0x49, 0x93, 0xee, 0xea, 0x96, 0x6d, 0xf4, 0xb8, 0x4f, 0xf1, - 0xab, 0x9, 0xaa, 0x59, 0xc9, 0xf7, 0x6e, 0xe0, 0x6f, 0xa4, - 0x8a, 0x7f, 0xad, 0x7f, 0x3d, 0x76, 0xbf, 0xb6, 0xdf, 0x8e, - 0x6d, 0xf1, 0x9b, 0xdb, 0x8e, 0x3d, 0x27, 0x7f, 0xfe, 0x2a, - 0xb7, 0xac, 0xff, 00, 0x6f, 0xcf, 0x1a, 0xdb, 0x1, 0x9b, - 0xcb, 0xcf, 0xc2, 0x66, 0xff, 00, 0xe2, 0xe8, 0x3, 0xf7, - 0xf1, 0x6e, 0x22, 0x7f, 0xbb, 0x22, 0x37, 0xd1, 0x85, 0x3c, - 0x10, 0x7a, 0x1c, 0xd7, 0xe0, 0xf5, 0x97, 0xfc, 0x14, 0x73, - 0xc6, 0x56, 0xd8, 0xcd, 0xe5, 0xf7, 0xfd, 0xfc, 0x6f, 0xfe, - 0x2e, 0xba, 0xb, 0xf, 0xf8, 0x29, 0xc7, 0x8b, 0x2d, 0xf1, - 0xbe, 0xf6, 0xfb, 0xf1, 0x66, 0x3f, 0xfb, 0x3d, 00, 0x7e, - 0xe1, 0x51, 0x5f, 0x8c, 0x16, 0x3f, 0xf0, 0x55, 0x3f, 0x11, - 0xc3, 0x8d, 0xf7, 0xd7, 0x7f, 0x88, 0x90, 0xff, 00, 0xec, - 0xf5, 0xd0, 0xd8, 0xff, 00, 0xc1, 0x59, 0xb5, 0x58, 0xf1, - 0xe6, 0xdd, 0x4c, 0xdf, 0xef, 0x47, 0x21, 0xff, 00, 0xd9, - 0xa8, 0x3, 0xf5, 0xfa, 0x8a, 0xfc, 0xa3, 0xd3, 0xff, 00, - 0xe0, 0xad, 0xf2, 0xd, 0xbe, 0x64, 0xa0, 0xfa, 0xee, 0x85, - 0xff, 00, 0xf8, 0xaa, 0xe9, 0xb4, 0xff, 00, 0xf8, 0x2b, - 0x75, 0x9b, 0x63, 0xcc, 0xf2, 0x1b, 0xeb, 0x1, 0xff, 00, - 0xe2, 0xa8, 0x3, 0xf4, 0xda, 0x8a, 0xfc, 0xef, 0xb0, 0xff, - 00, 0x82, 0xb1, 0x68, 0x72, 0xf1, 0x24, 0x30, 0x13, 0xff, - 00, 0x5c, 0x5b, 0xff, 00, 0x8a, 0xae, 0x86, 0xc3, 0xfe, - 0xa, 0x99, 0xe1, 0x59, 0xf1, 0xe6, 0xdb, 0xa7, 0x3f, 0xdd, - 0x8d, 0xbf, 0xf8, 0xaa, 00, 0xfb, 0xbe, 0x8a, 0xf8, 0xca, - 0xcb, 0xfe, 0xa, 0x63, 0xe0, 0x79, 0xf1, 0xe6, 0xc2, 0xe3, - 0x3f, 0xdd, 0x8c, 0xff, 00, 0x8d, 0x6e, 0x59, 0xff, 00, - 0xc1, 0x45, 0xfe, 0x1e, 0x4f, 0x8d, 0xfe, 0x7a, 0xfd, 0x13, - 0xff, 00, 0xaf, 0x40, 0x1f, 0x58, 0xd1, 0x5f, 0x35, 0x5a, - 0x7e, 0xdf, 0x5f, 0xd, 0x2e, 0x48, 0xcc, 0xf7, 0x2b, 0xff, - 00, 0x6c, 0xf3, 0x5b, 0x36, 0xbf, 0xb6, 0xd7, 0xc3, 0x1b, - 0xa2, 00, 0xd4, 0x2e, 0x57, 0x3e, 0xb0, 0xff, 00, 0xf5, - 0xe8, 0x3, 0xde, 0x9c, 0xe1, 0x49, 0xae, 0x67, 0x5d, 0x9c, - 0x80, 0x47, 0x35, 0xc4, 0x5a, 0x7e, 0xd4, 0xff, 00, 0xf, - 0x35, 0x3d, 0xa9, 0x6, 0xae, 0xc1, 0x9b, 0xa6, 0xe8, 0x88, - 0xae, 0x8a, 0xeb, 0x5a, 0xb7, 0xd5, 0xac, 0x92, 0xee, 0xda, - 0x4f, 0x36, 0xde, 0x55, 0xdc, 0x8e, 0x1, 0x19, 0x14, 0x1, - 0xc7, 0x78, 0x8e, 0xe4, 0x8d, 0xc3, 0x9a, 0xf2, 0x3f, 0x17, - 0xde, 0x30, 0xde, 0x30, 0x6b, 0xd2, 0xfc, 0x47, 0x79, 0xf3, - 0x3f, 0x35, 0xe3, 0x5e, 0x38, 0xd5, 0x44, 0x10, 0xcf, 0x21, - 0x6c, 0x5, 0x7, 0xb5, 0x26, 0xec, 0xae, 0x26, 0xec, 0xae, - 0x7c, 0x7f, 0xfb, 0x45, 0x6b, 0xb2, 0xdc, 0x5d, 0x98, 0xb6, - 0xba, 0xa9, 0x73, 0x9e, 0x4e, 0x38, 0xed, 0x8a, 0xf9, 0x77, - 0xc4, 0x37, 0xc, 0xcc, 0x46, 0xd, 0x7b, 0x8f, 0xc6, 0xcf, - 0x10, 0x7f, 0x68, 0x6a, 0xd2, 0x2e, 0xec, 0x85, 0x62, 0x7a, - 0x1a, 0xf0, 0xd, 0x6a, 0xe3, 0x7c, 0xcd, 0x5f, 0x12, 0x9f, - 0xb5, 0xc4, 0xca, 0x67, 0xe7, 0x51, 0x7e, 0xdb, 0x19, 0x39, - 0xee, 0x7a, 0x6f, 0xec, 0x83, 0xe1, 0x8, 0x3c, 0x6d, 0xfb, - 0x41, 0xf8, 0x76, 0xd6, 0xe9, 0xed, 0xd6, 0x1b, 0x52, 0xf7, - 0x45, 0x2e, 0x63, 0x59, 0x4, 0x85, 0x46, 0xd5, 00, 0x37, - 0xf1, 0x2, 0xc1, 0x81, 0xea, 0x36, 0xe4, 0x60, 0x8c, 0x8f, - 0xd9, 0xd, 0x3e, 0x15, 0x40, 0xaa, 0xa0, 0x2a, 0x81, 0x80, - 00, 0xc0, 0x2, 0xbf, 0x36, 0x3f, 0xe0, 0x9a, 0xde, 0x1, - 0x87, 0x58, 0xf1, 0x66, 0xb9, 0xe2, 0x79, 0xa2, 0x2e, 0xf6, - 0x45, 0x6d, 0xa2, 0x7f, 0x97, 0xb, 0xc6, 0xe6, 0xea, 0x33, - 0x9c, 0xf9, 0x7d, 0xf, 0x4c, 0xd7, 0xe9, 0x75, 0x84, 0x79, - 0x22, 0xbe, 0xbb, 0xf, 0x1e, 0x5a, 0x68, 0xfb, 0xac, 0x24, - 0x79, 0x69, 0x2f, 0x33, 0x66, 0xcd, 0x6, 0x40, 0xad, 0xeb, - 0x54, 0xe0, 0x56, 0x3d, 0x94, 0x7c, 0x8a, 0xdd, 0xb5, 0x4e, - 0x45, 0x74, 0x9d, 0x86, 0x95, 0xba, 0x8a, 0xbc, 0x17, 0x81, - 0x55, 0x2d, 0xd3, 0x9a, 0xbc, 0x7, 0x14, 0x1, 0x61, 0xcd, - 0x57, 0x93, 0x80, 0x6a, 0xc3, 0x9a, 0xad, 0x31, 0xe0, 0xd0, - 0x7, 0x17, 0xf1, 0x47, 0xc5, 0x9f, 0xf0, 0x83, 0xf8, 0x3, - 0xc4, 0x3a, 0xff, 00, 0x97, 0x24, 0x8d, 0xa7, 0xd9, 0x4b, - 0x3a, 0xac, 0x40, 0x16, 0xdc, 0x14, 0xed, 0xeb, 0xc6, 0x33, - 0x8c, 0x93, 0xd0, 0x66, 0xbc, 0x2b, 0xf6, 0x4a, 0xb3, 0x4b, - 0xf, 0x3, 0xd, 0x56, 0x79, 0x62, 0x9b, 0x50, 0xd5, 0xee, - 0x24, 0xbc, 0xb9, 0x99, 0x1b, 0x96, 0x62, 0xc7, 0xaf, 0x60, - 0x7a, 0xf0, 0x3d, 0x6b, 0x6f, 0xf6, 0xe5, 0xd7, 0x6f, 0x74, - 0x7f, 0x80, 0xd7, 0xd1, 0x59, 0xc7, 0x71, 0xb6, 0xfe, 0xf6, - 0xde, 0xd2, 0xe2, 0x78, 0x37, 0x1, 0xc, 0x45, 0x8b, 0x12, - 0xe4, 0x74, 0x46, 0x28, 0xb1, 0x9c, 0xe0, 0x1f, 0x30, 0xe, - 0xf8, 0x3c, 0xf7, 0xc1, 0x2b, 0xab, 0x7d, 0x27, 0xc0, 0x9a, - 0x2d, 0xbc, 0x12, 0xc6, 0xc8, 0xb0, 0x29, 0xcc, 0x78, 0xc1, - 0x27, 0x93, 0xd3, 0xeb, 0x5e, 0x24, 0xbf, 0x7b, 0x99, 0xa4, - 0xf6, 0x84, 0x2f, 0xf3, 0x93, 0xff, 00, 0x24, 0x7c, 0xec, - 0xbf, 0x7d, 0x9c, 0x45, 0x3d, 0xa9, 0xc1, 0xbf, 0x9c, 0x9d, - 0xbf, 0x24, 0x7d, 0x3d, 0xa6, 0xea, 0x8a, 0x14, 0x7c, 0xe3, - 0xf3, 0xad, 0x88, 0xf5, 0x8, 0xd8, 0x72, 0x45, 0x79, 0x5d, - 0x8e, 0xbc, 0xa0, 0xf, 0x9c, 0x7e, 0x75, 0xac, 0x9e, 0x21, - 0x18, 0xfb, 0xff, 00, 0xad, 0x7b, 0x67, 0xd1, 0x1d, 0x37, - 0x8c, 0xac, 0x8f, 0x88, 0xbc, 0x3d, 0x79, 0xa7, 0x43, 0x30, - 0x89, 0xae, 0x23, 0x68, 0xf7, 0xfa, 0x64, 0x62, 0xbe, 0x4a, - 0xf0, 0x7f, 0xfc, 0x13, 0xdb, 0xc2, 0xfa, 0xf, 0x8e, 0xec, - 0x7c, 0x41, 0x75, 0xd, 0x9d, 0xd3, 0x5b, 0xdc, 0x7d, 0xa4, - 0xee, 0x88, 0x64, 0xbe, 0x72, 0xf, 0xde, 0xeb, 0x9e, 0x6b, - 0xe9, 0x7, 0xf1, 0xe, 0xf, 0xde, 0xfd, 0x69, 0x57, 0xc4, - 0x7f, 0xed, 0xfe, 0xb4, 0x1, 0xde, 0x5a, 0xb5, 0xbd, 0xa5, - 0xb4, 0x50, 0x45, 0x84, 0x8e, 0x35, 0xa, 0xaa, 0x3a, 00, - 0x2a, 0x6f, 0xb4, 0xc6, 0x7f, 0x88, 0x57, 0x4, 0xbe, 0x23, - 0xff, 00, 0x6f, 0xf5, 0xa9, 0x17, 0xc4, 0x7f, 0xed, 0x7e, - 0xb4, 0x1, 0xdd, 0x79, 0xf1, 0xff, 00, 0x7c, 0x52, 0xf9, - 0xa9, 0xfd, 0xe1, 0x5c, 0x42, 0xf8, 0x88, 0x7f, 0x7b, 0xf5, - 0xa9, 0x17, 0xc4, 0x23, 0xfb, 0xdf, 0xad, 00, 0x76, 0x9e, - 0x62, 0xff, 00, 0x78, 0x51, 0xbd, 0x7d, 0x47, 0xe7, 0x5c, - 0x7a, 0xf8, 0x84, 0x7f, 0x7b, 0xf5, 0xa9, 0x17, 0xc4, 0x3, - 0xfb, 0xdf, 0xad, 00, 0x75, 0xbb, 0x87, 0xa8, 0xa3, 0x22, - 0xb9, 0x65, 0xd7, 0xd7, 0xfb, 0xdf, 0xad, 0x48, 0xba, 0xf2, - 0xff, 00, 0x7b, 0xf5, 0xa0, 0xe, 0x91, 0x91, 0x5f, 0xaa, - 0x83, 0xf5, 0x15, 0x13, 0xd8, 0x5b, 0x4b, 0xf7, 0xed, 0xe2, - 0x7f, 0xf7, 0x90, 0x1a, 0xc4, 0x5d, 0x79, 0x7f, 0xbf, 0xfa, - 0xd4, 0x8b, 0xae, 0xaf, 0xf7, 0xff, 00, 0x5a, 00, 0xd0, - 0x7d, 0xb, 0x4d, 0x94, 0x61, 0xf4, 0xfb, 0x57, 0x1f, 0xed, - 0x40, 0xa7, 0xfa, 0x55, 0x69, 0x7c, 0x1f, 0xa1, 0x4c, 0x30, - 0xfa, 0x2e, 0x9e, 0xc3, 0xde, 0xd9, 0x3f, 0xc2, 0xa3, 0x1a, - 0xe2, 0xff, 00, 0x7f, 0xf5, 0xa7, 0x8d, 0x69, 0x7f, 0xbc, - 0x28, 0x2, 0x94, 0xdf, 0xd, 0x7c, 0x29, 0x38, 0x21, 0xfc, - 0x3b, 0xa6, 0x9f, 0xfb, 0x76, 0x51, 0xfd, 0x2a, 0x8c, 0xdf, - 0x6, 0xbc, 0xf, 0x71, 0xfe, 0xb3, 0xc2, 0xfa, 0x69, 0xff, - 00, 0xb6, 00, 0x56, 0xf8, 0xd6, 0x17, 0xfb, 0xc2, 0x9c, - 0x35, 0x74, 0x3d, 0xc5, 00, 0x71, 0xb7, 0x1f, 0xb3, 0xd7, - 0xc3, 0x9b, 0xaf, 0xf5, 0x9e, 0x12, 0xd3, 0x8f, 0xd1, 0xf, - 0xf8, 0xd6, 0x5d, 0xcf, 0xec, 0xb1, 0xf0, 0xbe, 0xe7, 0x25, - 0xbc, 0x27, 0x66, 0xf, 0xa8, 0x6, 0xbd, 0x24, 0x6a, 0xa8, - 0x7b, 0x8a, 0x70, 0xd4, 0x90, 0xfa, 0x50, 0x7, 0x8f, 0x5d, - 0x7e, 0xc6, 0xff, 00, 0xa, 0xee, 0x81, 0xff, 00, 0x8a, - 0x6e, 0x4, 0xcf, 0xa6, 0x6b, 0x16, 0xf3, 0xf6, 0x14, 0xf8, - 0x5d, 0x77, 0x9c, 0x68, 0xf1, 0xc7, 0x9f, 0xf6, 0x49, 0xfe, - 0xb5, 0xef, 0xa3, 0x50, 0x8c, 0xf7, 0xa7, 0xb, 0xe8, 0xcf, - 0x7a, 00, 0xf9, 0x92, 0xeb, 0xfe, 0x9, 0xe3, 0xf0, 0xce, - 0xe0, 0x9d, 0xb6, 0xaa, 0x83, 0xd3, 0xca, 0x27, 0xff, 00, - 0x66, 0xac, 0x4b, 0xdf, 0xf8, 0x26, 0xa7, 0xc3, 0xbb, 0x8c, - 0xf9, 0x66, 0x34, 0xcf, 0xad, 0xb9, 0x3f, 0xfb, 0x3d, 0x7d, - 0x70, 0x2f, 0x23, 0x3d, 0xe9, 0x7e, 0xd5, 0x19, 0xef, 0x40, - 0x1f, 0x13, 0x6a, 0x1f, 0xf0, 0x4b, 0xaf, 0x5, 0x4e, 0x49, - 0x86, 0x6b, 0x75, 0xfa, 0xdb, 0x9f, 0xfe, 0x2a, 0xb9, 0xbd, - 0x43, 0xfe, 0x9, 0x4b, 0xe1, 0xb9, 0x73, 0xe5, 0x4d, 0x68, - 0x7f, 0xed, 0x87, 0xf8, 0xb5, 0x7d, 0xfc, 0x2e, 0x23, 0x3f, - 0xc5, 0x4a, 0x26, 0x43, 0xfc, 0x42, 0x80, 0x3f, 0x37, 0x6f, - 0xff, 00, 0xe0, 0x93, 0x1a, 0x73, 0x83, 0xe4, 0xfd, 0x8d, - 0xbf, 0xed, 0x98, 0x1f, 0xfb, 0x3d, 0x73, 0xd7, 0xdf, 0xf0, - 0x49, 0x29, 0x30, 0x4c, 0x50, 0xda, 0xb1, 0xed, 0x8d, 0xa3, - 0xff, 00, 0x6a, 0x57, 0xea, 0x2f, 0x98, 0xbf, 0xde, 0x14, - 0x6f, 0x5f, 0x51, 0xf9, 0xd0, 0x7, 0xe4, 0xc5, 0xef, 0xfc, - 0x12, 0x5b, 0x56, 0x19, 0x31, 0xd9, 0x46, 0x7d, 0x36, 0xba, - 0xff, 00, 0xf1, 0xca, 0xe7, 0x6f, 0xbf, 0xe0, 0x94, 0x1e, - 0x26, 0x42, 0x7c, 0xad, 0x2e, 0x46, 0x1e, 0xaa, 0xff, 00, - 0xfd, 0x9d, 0x7e, 0xc5, 0x6e, 0x1e, 0xa2, 0x8c, 0x8f, 0x5a, - 00, 0xfc, 0x53, 0xbf, 0xff, 00, 0x82, 0x58, 0x78, 0xda, - 0x2c, 0xf9, 0x5a, 0x2d, 0xe3, 0xf, 0xf6, 0x46, 0x7f, 0xf6, - 0x6a, 0xe7, 0xef, 0xff, 00, 0xe0, 0x99, 0x1e, 0x3f, 0x83, - 0x3b, 0x74, 0x3d, 0x47, 0x8f, 0x48, 0xb3, 0xff, 00, 0xb3, - 0x57, 0xee, 0x6d, 0x14, 0x1, 0xf8, 0x23, 0x7b, 0xff, 00, - 0x4, 0xe5, 0xf8, 0x89, 0x6c, 0xe, 0x34, 0x7d, 0x4b, 0x8f, - 0xfa, 0x77, 0xcf, 0xf5, 0xac, 0xb, 0xdf, 0xd8, 0x1f, 0xe2, - 0x2d, 0xae, 0x7f, 0xe2, 0x53, 0xa8, 0x71, 0xd8, 0xda, 0xff, - 00, 0xf5, 0xeb, 0xfa, 0xb, 0x28, 0xad, 0xd4, 0x3, 0xf5, - 0x15, 0x13, 0xd8, 0xdb, 0x49, 0xf7, 0xed, 0xe2, 0x7f, 0xf7, - 0x90, 0x1a, 00, 0xfe, 0x77, 0xae, 0xff, 00, 0x62, 0x9f, - 0x88, 0x76, 0xa4, 0xe7, 0x4a, 0xbd, 0xe3, 0xd6, 0xd4, 0xff, - 00, 0x8d, 0x64, 0xdd, 0x7e, 0xc9, 0x3f, 0x10, 0x2d, 0x73, - 0xbb, 0x47, 0xbb, 0xe3, 0xd6, 0xdc, 0x8f, 0xeb, 0x5f, 0xd1, - 0x83, 0xe8, 0x5a, 0x6c, 0xbf, 0x7f, 0x4f, 0xb5, 0x7f, 0xf7, - 0xa0, 0x53, 0xfd, 0x2a, 0xb4, 0xbe, 0x10, 0xd0, 0xa6, 0xfb, - 0xfa, 0x35, 0x83, 0x7d, 0x6d, 0x93, 0xfc, 0x28, 0x3, 0xf9, - 0xc1, 0xb9, 0xfd, 0x9a, 0x7c, 0x79, 0x6d, 0x9d, 0xda, 0x25, - 0xcf, 0xe3, 0x19, 0x15, 0x99, 0x3f, 0xc0, 0x7f, 0x1b, 0xc1, - 0xd7, 0x43, 0xb8, 0x3f, 0xf0, 0x1a, 0xfe, 0x90, 0xe7, 0xf8, - 0x6b, 0xe1, 0x5b, 0x8f, 0xf5, 0x9e, 0x1e, 0xd3, 0x89, 0xf5, - 0xfb, 0x32, 0x8f, 0xe9, 0x59, 0xd7, 0x1f, 0x5, 0xbc, 0x13, - 0x73, 0x9d, 0xfe, 0x1b, 0xd3, 0xf9, 0xf4, 0x81, 0x7f, 0xc2, - 0x80, 0x3f, 0x9b, 0xe9, 0x7e, 0x10, 0x78, 0xc2, 0x1f, 0xbd, - 0xa1, 0xdc, 0x9f, 0xa0, 0xaa, 0x72, 0x7c, 0x35, 0xf1, 0x44, - 0x5f, 0x7b, 0x44, 0xbb, 0x1f, 0xf0, 0xc, 0xd7, 0xf4, 0x71, - 0x73, 0xfb, 0x39, 0xfc, 0x3f, 0xbb, 0x27, 0x7f, 0x87, 0xad, - 0x46, 0x7d, 0x22, 0x4f, 0xf0, 0xac, 0x8b, 0xaf, 0xd9, 0x33, - 0xe1, 0xad, 0xd1, 0x25, 0xb4, 0x38, 0xd7, 0xfd, 0xd4, 0x8f, - 0xff, 00, 0x89, 0xa0, 0xf, 0xe7, 0x56, 0x4f, 0x3, 0xf8, - 0x82, 0x2f, 0xbf, 0xa4, 0x5d, 0x8f, 0xfb, 0x66, 0x6a, 0xb3, - 0xf8, 0x5f, 0x58, 0x8b, 0xef, 0x69, 0x97, 0x63, 0xfe, 0xd8, - 0xb7, 0xf8, 0x57, 0xf4, 0x37, 0x77, 0xfb, 0x14, 0xfc, 0x32, - 0xba, 0xcf, 0xfc, 0x4b, 0x19, 0x3e, 0x8b, 0x1f, 0xff, 00, - 0x11, 0x58, 0xb7, 0xbf, 0xb0, 0x4f, 0xc3, 0x6b, 0xac, 0xed, - 0xb7, 0x91, 0x33, 0xe9, 0x1c, 0x7f, 0xfc, 0x4d, 00, 0x7f, - 0x3e, 0xed, 0xa2, 0xea, 0x9, 0xf7, 0xac, 0x6e, 0x57, 0xeb, - 0x13, 0x7f, 0x85, 0x44, 0xda, 0x7d, 0xd2, 0x7d, 0xeb, 0x69, - 0x87, 0xd6, 0x33, 0x5f, 0xbd, 0xb7, 0xff, 00, 0xf0, 0x4e, - 0x8f, 00, 0xdc, 0x67, 0xca, 0x66, 0x4f, 0xaa, 0x27, 0xff, - 00, 0x13, 0x58, 0x17, 0xbf, 0xf0, 0x4c, 0xdf, 0x7, 0xce, - 0xf, 0x97, 0x70, 0xaa, 0x7f, 0xda, 0x45, 0xff, 00, 0xe2, - 0x28, 0x3, 0xf0, 0xb4, 0xc1, 0x22, 0xf5, 0x8d, 0x87, 0xd5, - 0x4d, 0x33, 0x7, 0xd2, 0xbf, 0x6d, 0xaf, 0x7f, 0xe0, 0x96, - 0xbe, 0x1e, 0x94, 0x37, 0x97, 0x77, 0x6d, 0xcf, 0xf7, 0x94, - 0x7f, 0xf1, 0xba, 0xe7, 0x2f, 0xbf, 0xe0, 0x94, 0x7a, 0x7c, - 0x99, 0xf2, 0xe7, 0xb1, 0x6f, 0x4c, 0xe3, 0xff, 00, 0x8d, - 0xd0, 0x7, 0xe3, 0x65, 0x15, 0xfa, 0xdd, 0xa8, 0x7f, 0xc1, - 0x26, 0x89, 0xc9, 0x8f, 0xec, 0x2c, 0x3d, 0x88, 0xff, 00, - 0xe2, 0x2b, 0x9a, 0xd4, 0x7f, 0xe0, 0x93, 0xba, 0x8a, 0xe7, - 0xca, 0x82, 0xdd, 0xbd, 0x36, 0xff, 00, 0xf5, 0x92, 0x80, - 0x3f, 0x2d, 0xc3, 0xb0, 0xe8, 0xc4, 0x7e, 0x35, 0x22, 0xdd, - 0xce, 0xbd, 0x26, 0x90, 0x7d, 0x1c, 0xd7, 0xe8, 0xf6, 0xa1, - 0xff, 00, 0x4, 0xa7, 0xf1, 0xa, 0x13, 0xe5, 0xd8, 0xb3, - 0x7f, 0xb8, 0x1b, 0xfa, 0x25, 0x73, 0x9a, 0x87, 0xfc, 0x12, - 0xcf, 0xc5, 0x90, 0xe7, 0x6e, 0x9b, 0x75, 0xff, 00, 0x1, - 0x57, 0xff, 00, 0xe2, 0x28, 0x3, 0xe0, 0x95, 0xd5, 0xaf, - 0x93, 0xee, 0xde, 0x5c, 0xf, 0xa4, 0xad, 0xfe, 0x35, 0x3a, - 0x78, 0x8f, 0x55, 0x8b, 0x1b, 0x75, 0x2b, 0xa5, 0xfa, 0x4c, - 0xdf, 0xe3, 0x5f, 0x66, 0x6a, 0x1f, 0xf0, 0x4c, 0xdf, 0x19, - 0x5b, 0x3, 0x8d, 0x3a, 0xfc, 0x7f, 0xdb, 0x37, 0xff, 00, - 0xe2, 0x2b, 0x92, 0xd6, 0xbf, 0xe0, 0x9f, 0x7e, 0x35, 0xd2, - 0xd7, 0x3f, 0xd9, 0xfa, 0x87, 0xe3, 0xb, 0x1f, 0xfd, 0x92, - 0x80, 0x3c, 0xf, 0xc1, 0xfe, 0x28, 0xf1, 0x26, 0xa9, 0xe2, - 0xd, 0x3e, 0xc6, 0x1d, 0x6e, 0x78, 0x4c, 0xd3, 0x24, 0x61, - 0xa5, 0x9b, 0xa, 0x32, 0x40, 0xe4, 0x9e, 0xd5, 0xfb, 0xe5, - 0xf0, 0x8f, 0x44, 0xff, 00, 0x84, 0x5b, 0xe1, 0x56, 0x83, - 0x61, 0xe7, 0xb, 0x96, 0x8a, 0xce, 0x3d, 0xd2, 0xa8, 0xc6, - 0xf2, 0x40, 0x24, 0xf5, 0x3f, 0xce, 0xbf, 0x24, 0x3e, 0xc, - 0x7e, 0xc7, 0x1e, 0x27, 0x83, 0xe2, 0xe7, 0x87, 0x53, 0x52, - 0xb4, 0x78, 0xac, 0x52, 0xed, 0x1e, 0x53, 0x72, 0xad, 0x10, - 0xc0, 0x39, 0xfb, 0xc4, 0x1, 0x5f, 0xb2, 0x92, 0x5a, 0xa6, - 0x93, 0xa2, 0xc3, 0x6b, 0xa, 0x6c, 0x8e, 0x24, 0x8, 0xaa, - 0x3b, 00, 0x30, 0x28, 0x3, 0x8b, 0xf1, 0x1d, 0xd3, 0x7c, - 0xe7, 0x9a, 0xf0, 0x8f, 0x89, 0xfa, 0xb4, 0x96, 0xba, 0x5d, - 0xcb, 0xa8, 0x7c, 0x91, 0x8e, 0x33, 0x5e, 0xc9, 0xe2, 0x7b, - 0xa6, 0x54, 0x93, 0xaf, 0xe5, 0x5f, 0x37, 0xfc, 0x6d, 0xd6, - 0x25, 0xb4, 0xd1, 0xe5, 0xa, 0x1f, 0x9c, 0xe7, 0xa, 0x6b, - 0x9f, 0x11, 0x3e, 0x4a, 0x52, 0x91, 0xcb, 0x8a, 0x9f, 0xb3, - 0xa3, 0x29, 0x79, 0x1f, 0x1a, 0xfc, 0x4b, 0xd5, 0x64, 0xbc, - 0xd5, 0x2e, 0x59, 0xb7, 0x70, 0xc4, 0x72, 0x6b, 0xc7, 0xb5, - 0x49, 0x8b, 0x48, 0xc7, 0x9a, 0xf4, 0x2f, 0x19, 0x5e, 0xbc, - 0xb3, 0x4e, 0xe7, 0x71, 0x25, 0x8f, 0x51, 0x5e, 0x6b, 0x7a, - 0x5a, 0x47, 0xda, 0x8, 0x5, 0x8e, 0x32, 0x4e, 0x7, 0xe6, - 0x6b, 0xe4, 0x30, 0x4b, 0x99, 0xb9, 0x77, 0x3e, 0x13, 0x2f, - 0x5c, 0xcd, 0xcd, 0xf5, 0x67, 0xe9, 0x67, 0xfc, 0x13, 0x9b, - 0xc0, 0x50, 0x68, 0x5f, 0xa, 0x9f, 0x5c, 0x61, 0x13, 0x5e, - 0x6a, 0x92, 0xb4, 0xa5, 0x95, 0xb7, 0x10, 0xb9, 0x2a, 0xa0, - 0xfa, 0x10, 0x17, 0xa0, 0xf5, 0x3e, 0xf5, 0xf6, 0x7d, 0x82, - 0xf3, 0x5e, 0x2d, 0xfb, 0x31, 0x78, 0x4e, 0xd3, 0xc2, 0x1f, - 0x8, 0xb4, 0xb, 0x1b, 0x51, 0xe, 0xd5, 0xb7, 0x4d, 0xcd, - 0xc, 0xde, 0x6a, 0xb1, 0xda, 0x32, 0x43, 0x64, 0xe7, 0x24, - 0xb1, 0xff, 00, 0x81, 0x57, 0xb7, 0x58, 0x20, 0xe2, 0xbe, - 0xd2, 0xb, 0x96, 0x29, 0x1f, 0xa1, 0x42, 0x3c, 0xb1, 0x48, - 0xdb, 0xb1, 0x5e, 0x7b, 0x56, 0xdd, 0xa0, 0x19, 0x15, 0x91, - 0x64, 0xa0, 0xe, 0xd5, 0xb5, 0x68, 0xbc, 0x55, 0x96, 0x69, - 0xdb, 0xad, 0x5c, 0xb, 0xc5, 0x54, 0xb7, 0x2, 0xae, 0xe, - 0x94, 0x1, 0x23, 0xd5, 0x69, 0x8f, 0x5a, 0xb4, 0xfc, 0x8a, - 0xad, 0x28, 0xcd, 00, 0x7c, 0xcb, 0xfb, 0x7b, 0xdf, 0xdb, - 0xda, 0x7c, 0x1, 0xba, 0x8a, 0x56, 0x61, 0x35, 0xd6, 0xa3, - 0x6b, 0xc, 0xa, 0xaf, 0x8d, 0xce, 0x18, 0xbe, 0x8, 0xc8, - 0xdd, 0xf2, 0xa3, 0x9c, 0x73, 0xc8, 0x7, 0x1c, 0x64, 0x79, - 0x3f, 0xc3, 0x4d, 0x61, 0xf4, 0xef, 0xb, 0xe9, 0xb0, 0xcc, - 0xe8, 0xaf, 0x1c, 0x8, 0x1b, 00, 0x1, 0x9c, 0xf, 0x6a, - 0xf7, 0x8f, 0xdb, 0x1b, 0xc0, 0xd7, 0x3e, 0x3a, 0xf8, 0x1d, - 0xab, 0xdb, 0x59, 0xc7, 0xb, 0xdd, 0x59, 0xcb, 0x1d, 0xf4, - 0x66, 0x55, 0x25, 0x81, 0x42, 0x73, 0xb0, 0x80, 0x70, 0xc4, - 0x12, 0x33, 0xe8, 0x48, 0xef, 0x5f, 0x8, 0xc1, 0xf1, 0x11, - 0xec, 0xbc, 0x37, 0x66, 0xd1, 0xce, 0xf9, 0x48, 0x95, 0x5b, - 0xcc, 0x7f, 0x98, 0x9c, 0x77, 0xe6, 0xbc, 0x2a, 0xb5, 0x63, - 0x85, 0xc6, 0x4a, 0xad, 0x4d, 0x9c, 0x55, 0xbe, 0x4d, 0xdf, - 0xf3, 0x3e, 0x6a, 0xbd, 0x68, 0xe0, 0xf1, 0xf3, 0xad, 0x57, - 0x67, 0x5, 0x6f, 0x93, 0x77, 0xfc, 0xd1, 0xf5, 0xad, 0xb7, - 0xc4, 0xb, 0x4b, 0x75, 0xf9, 0xee, 0x53, 0x8e, 0xd9, 0xa9, - 0xff, 00, 0xe1, 0x6a, 0xe9, 0xe9, 0xff, 00, 0x2d, 0xd4, - 0xff, 00, 0xc0, 0xbf, 0xfa, 0xd5, 0xf0, 0x7e, 0xa9, 0xf1, - 0x6f, 0x50, 0x9e, 0x46, 0xf2, 0x67, 0x75, 0x1f, 0xef, 0x11, - 0xfd, 0x6b, 0x25, 0xfe, 0x24, 0x6b, 0xc, 0x7f, 0xe3, 0xee, - 0x4c, 0x7b, 0x3b, 0x7f, 0x8d, 0x79, 0x55, 0x78, 0x81, 0x27, - 0x68, 0x44, 0xf1, 0x2b, 0x71, 0x42, 0x8b, 0xb5, 0x38, 0xdc, - 0xfd, 0x5, 0x6f, 0x8b, 0x36, 0xd, 0xff, 00, 0x2d, 0xd7, - 0xfe, 0xfa, 0xff, 00, 0xeb, 0x54, 0xb1, 0x7c, 0x52, 0xb0, - 0x6f, 0xf9, 0x78, 0x51, 0xf8, 0xd7, 0xe7, 0x8f, 0xfc, 0x2c, - 0x7d, 0x59, 0x4f, 0xfc, 0x7e, 0x49, 0xff, 00, 0x7d, 0xb7, - 0xf8, 0xd4, 0xf1, 0xfc, 0x50, 0xd5, 0xd0, 0xff, 00, 0xc7, - 0xe4, 0x9f, 0xf7, 0xdb, 0x7f, 0x8d, 0x62, 0xb8, 0x86, 0x5d, - 0x60, 0x60, 0xb8, 0xa6, 0x7d, 0x60, 0x7e, 0x88, 0xc7, 0xf1, - 0x2e, 0xc1, 0xbf, 0xe5, 0xe5, 0x47, 0xe3, 0x56, 0xa3, 0xf8, - 0x8b, 0x62, 0xdd, 0x2e, 0x93, 0xf3, 0xaf, 0xce, 0xe8, 0xfe, - 0x2d, 0x6a, 0xe9, 0xff, 00, 0x2f, 0x4e, 0x7f, 0xed, 0xa3, - 0x7f, 0x8d, 0x5b, 0x8b, 0xe3, 0x16, 0xaa, 0x9d, 0x6e, 0x24, - 0xff, 00, 0xbf, 0x87, 0xfc, 0x6b, 0x55, 0xc4, 0x2b, 0xac, - 0x4d, 0xd7, 0x15, 0x47, 0xac, 0xf, 0xd0, 0xe8, 0xfc, 0x7f, - 0x66, 0xdd, 0x2e, 0xd3, 0xf3, 0xab, 0x9, 0xe3, 0xab, 0x43, - 0xd2, 0xea, 0x3f, 0xfb, 0xea, 0xbf, 0x3d, 0x22, 0xf8, 0xd7, - 0xa9, 0xaf, 0x59, 0xe5, 0xff, 00, 0xbe, 0xcf, 0xf8, 0xd5, - 0xc8, 0xbe, 0x39, 0xea, 0xb, 0xd6, 0x69, 0x7f, 0xef, 0xa3, - 0xfe, 0x35, 0xaa, 0xe2, 0xa, 0x7d, 0x62, 0x6c, 0xb8, 0xa6, - 0x97, 0x58, 0x9f, 0xa0, 0xc9, 0xe3, 0x5b, 0x63, 0xd2, 0xe2, - 0x3f, 0xfb, 0xe8, 0x54, 0xe9, 0xe3, 0x8, 0x1b, 0xa4, 0xe9, - 0xff, 00, 0x7d, 0xa, 0xfc, 0xff, 00, 0x8b, 0xe3, 0xd5, - 0xe8, 0xeb, 0x34, 0xbf, 0xf7, 0xd1, 0xff, 00, 0x1a, 0xbd, - 0x7, 0xed, 0x1, 0x74, 0xf, 0x33, 0x49, 0xf8, 0xb1, 0xff, - 00, 0x1a, 0xd5, 0x67, 0xf4, 0x1e, 0xe8, 0xda, 0x3c, 0x4f, - 0x86, 0x7b, 0xa3, 0xef, 0x94, 0xf1, 0x6c, 0x47, 0xa4, 0xca, - 0x7f, 0xe0, 0x55, 0x32, 0xf8, 0xa6, 0x3f, 0xf9, 0xe8, 0xbf, - 0x9d, 0x7c, 0x1d, 0xf, 0xed, 0x7, 0x30, 0xeb, 0x71, 0x27, - 0xfd, 0xf4, 0x7f, 0xc6, 0xaf, 0x43, 0xfb, 0x43, 0x49, 0xc6, - 0x6e, 0x9c, 0x7f, 0xc0, 0xcf, 0xff, 00, 0x15, 0x5b, 0x2c, - 0xf3, 0xe, 0xcd, 0xd7, 0x12, 0x61, 0x19, 0xf7, 0x42, 0xf8, - 0x9d, 0x4f, 0xfc, 0xb4, 0x1f, 0x9d, 0x4c, 0xbe, 0x26, 0x5f, - 0xef, 0x8f, 0xce, 0xbe, 0x22, 0x83, 0xf6, 0x87, 0x6f, 0xf9, - 0xfb, 0x7f, 0xfb, 0xf9, 0xff, 00, 0xd7, 0xab, 0xf0, 0x7e, - 0xd0, 0xbe, 0xb7, 0xad, 0xff, 00, 0x7f, 0x3f, 0xfa, 0xf5, - 0xaa, 0xce, 0x70, 0xcf, 0xa9, 0xbc, 0x78, 0x83, 0x7, 0x2e, - 0xa7, 0xda, 0x4b, 0xe2, 0x65, 0xff, 00, 0x9e, 0x82, 0xa5, - 0x5f, 0x12, 0xaf, 0xfc, 0xf4, 0x15, 0xf1, 0xbc, 0x3f, 0xb4, - 0x18, 0x3f, 0xf2, 0xf8, 0xdf, 0x8c, 0x9f, 0xfd, 0x7a, 0xbf, - 0xf, 0xc7, 0xf4, 0x3d, 0x6f, 0xf, 0xfd, 0xf7, 0xff, 00, - 0xd7, 0xad, 0x96, 0x6b, 0x86, 0x7d, 0x4d, 0xd6, 0x77, 0x84, - 0x7f, 0x68, 0xfa, 0xf9, 0x7c, 0x48, 0xbf, 0xdf, 0x1f, 0x9d, - 0x48, 0xbe, 0x24, 0x1f, 0xdf, 0x1f, 0x9d, 0x7c, 0x9b, 0x7, - 0xc7, 0xa8, 0xdb, 0x1f, 0xe9, 0x5f, 0x9b, 0x7f, 0xf5, 0xea, - 0xf4, 0x3f, 0x1d, 0xe2, 0x38, 0xff, 00, 0x49, 0x53, 0xff, - 00, 0x2, 0xff, 00, 0xeb, 0xd6, 0xab, 0x31, 0xc3, 0xbf, - 0xb4, 0x6e, 0xb3, 0x6c, 0x2b, 0xfb, 0x47, 0xd5, 0x2b, 0xe2, - 0x41, 0xfd, 0xf1, 0xf9, 0xd4, 0x8b, 0xe2, 0x41, 0xfd, 0xf1, - 0xf9, 0xd7, 0xcc, 0x30, 0x7c, 0x71, 0x84, 0xf5, 0xb8, 0x4f, - 0xfb, 0xeb, 0xff, 00, 0xaf, 0x57, 0x62, 0xf8, 0xd7, 0x3, - 0x7f, 0xcb, 0x74, 0x3f, 0xf0, 0x2f, 0xfe, 0xbd, 0x6a, 0xb1, - 0xb4, 0x1f, 0xda, 0x36, 0x59, 0x8e, 0x19, 0xfd, 0xa3, 0xe9, - 0x65, 0xf1, 0x20, 0xfe, 0xf8, 0xfc, 0xea, 0x45, 0xf1, 0x18, - 0xfe, 0xf8, 0xfc, 0xeb, 0xe7, 0x18, 0xbe, 0x33, 0x5b, 0x37, - 0xfc, 0xb6, 0x5f, 0xfb, 0xef, 0xff, 00, 0xaf, 0x57, 0x21, - 0xf8, 0xbd, 0x6a, 0xdd, 0x65, 0x1f, 0x83, 0xff, 00, 0xf5, - 0xeb, 0x45, 0x8a, 0xa2, 0xfe, 0xd1, 0xaa, 0xc6, 0xe1, 0xdf, - 0xda, 0x3e, 0x87, 0x5f, 0x11, 0x8f, 0xef, 0x8a, 0x91, 0x7c, - 0x46, 0x3f, 0xbe, 0x2b, 0xe7, 0xf8, 0xbe, 0x2c, 0x5a, 0x37, - 0xfc, 0xb6, 0x3f, 0xf7, 0xd0, 0xff, 00, 0x1a, 0xb5, 0x1f, - 0xc5, 0x1b, 0x46, 0xc7, 0xef, 0xcf, 0xfd, 0xf4, 0x3f, 0xc6, - 0xad, 0x57, 0xa4, 0xfe, 0xd1, 0xa2, 0xc4, 0xd1, 0x7b, 0x49, - 0x1e, 0xf4, 0xbe, 0x23, 0x1f, 0xdf, 0x1f, 0x9d, 0x4a, 0xbe, - 0x23, 0x1f, 0xdf, 0x15, 0xe1, 0x51, 0xfc, 0x4b, 0xb4, 0x6f, - 0xf9, 0x78, 0x3f, 0xf7, 0xd0, 0xff, 00, 0x1a, 0xb3, 0x1f, - 0xc4, 0x4b, 0x53, 0xff, 00, 0x2f, 0x3f, 0xf8, 0xf7, 0xff, - 00, 0x5e, 0xa9, 0x55, 0x83, 0xea, 0x5a, 0xad, 0x4d, 0xfd, - 0xa4, 0x7b, 0x82, 0xf8, 0x88, 0x7f, 0x7c, 0x53, 0xd7, 0xc4, - 0x2b, 0xfd, 0xf1, 0x5e, 0x28, 0x9e, 0x3e, 0xb6, 0x38, 0xff, - 00, 0x49, 0x1f, 0xf7, 0xd7, 0xff, 00, 0x5e, 0xac, 0xc7, - 0xe3, 0x88, 0x1b, 0xfe, 0x5e, 0x57, 0xfe, 0xfa, 0xff, 00, - 0xeb, 0xd5, 0x73, 0xc5, 0xf5, 0x2f, 0x9e, 0x2f, 0xa9, 0xec, - 0xeb, 0xe2, 0x15, 0xfe, 0xf0, 0xfc, 0xe9, 0xeb, 0xe2, 0x5, - 0xfe, 0xf0, 0xfc, 0xeb, 0xc7, 0x13, 0xc6, 0x91, 0x1f, 0xf9, - 0x79, 0x5f, 0xfb, 0xef, 0xff, 00, 0xaf, 0x53, 0xa7, 0x8c, - 0x23, 0x3f, 0xf2, 0xdd, 0x7f, 0xef, 0xbf, 0xfe, 0xbd, 0x55, - 0xd1, 0x57, 0x5d, 0xcf, 0x60, 0x5d, 0x7d, 0x7f, 0xbc, 0x3f, - 0x3a, 0x91, 0x75, 0xf4, 0xfe, 0xf8, 0xaf, 0x21, 0x4f, 0x16, - 0x29, 0xe9, 0x30, 0xff, 00, 0xbe, 0xbf, 0xfa, 0xf5, 0x32, - 0xf8, 0xa4, 0x1f, 0xf9, 0x6b, 0xff, 00, 0x8f, 0x53, 0x19, - 0xeb, 0x8b, 0xaf, 0x27, 0xf7, 0xc5, 0x48, 0xba, 0xea, 0x7f, - 0x7c, 0x57, 0x92, 0xaf, 0x89, 0xff, 00, 0xe9, 0xa1, 0xfc, - 0xea, 0x55, 0xf1, 0x3f, 0xfd, 0x34, 0x3f, 0x9d, 00, 0x7a, - 0xc0, 0xd6, 0xd3, 0xfb, 0xe2, 0x9e, 0x35, 0xa4, 0x3f, 0xc4, - 0x2b, 0xca, 0x17, 0xc4, 0xff, 00, 0xf4, 0xd0, 0xfe, 0x75, - 0x2a, 0xf8, 0x9b, 0xfe, 0x9a, 0x1f, 0xce, 0x80, 0x3d, 0x54, - 0x6b, 0x8, 0x7f, 0x88, 0x53, 0x86, 0xad, 0x19, 0xee, 0x3f, - 0x3a, 0xf2, 0xd5, 0xf1, 0x2f, 0xfd, 0x34, 0x3f, 0x9d, 0x48, - 0xbe, 0x25, 0x3f, 0xf3, 0xd3, 0xf5, 0xa0, 0xf, 0x51, 0x1a, - 0xa4, 0x67, 0xb8, 0xfc, 0xe9, 0xc3, 0x52, 0x8c, 0xf7, 0x1f, - 0x9d, 0x79, 0x82, 0xf8, 0x94, 0xff, 00, 0xcf, 0x4f, 0xd6, - 0xa5, 0x5f, 0x12, 0x1f, 0xf9, 0xe8, 0x7f, 0x3a, 00, 0xf4, - 0xc1, 0x7f, 0x11, 0xef, 0xfa, 0xd2, 0x8b, 0xd8, 0x8f, 0x7a, - 0xf3, 0x65, 0xf1, 0x21, 0xff, 00, 0x9e, 0x87, 0xf3, 0xa9, - 0x57, 0xc4, 0x87, 0xfe, 0x7a, 0x1f, 0xce, 0x80, 0x3d, 0x18, - 0x5d, 0xc6, 0x7f, 0x8a, 0x94, 0x5c, 0xc6, 0x7f, 0x88, 0x57, - 0x9e, 0x2f, 0x89, 0xf, 0xf7, 0xcf, 0xe7, 0x52, 0x2f, 0x89, - 0xf, 0xfc, 0xf4, 0x3f, 0x9d, 00, 0x7a, 0x7, 0x9f, 0x19, - 0xfe, 0x21, 0x4b, 0xe6, 0xa7, 0xf7, 0x85, 0x70, 0x4b, 0xe2, - 0x33, 0xfd, 0xff, 00, 0xd6, 0xa5, 0x5f, 0x11, 0xff, 00, - 0xb7, 0xfa, 0xd0, 0x7, 0x73, 0xe6, 0x2f, 0xf7, 0x85, 0x2e, - 0xe5, 0xf5, 0x1f, 0x9d, 0x71, 0x2b, 0xe2, 0x3f, 0xf6, 0xff, - 00, 0x5a, 0x91, 0x7c, 0x45, 0xfe, 0xdf, 0xeb, 0x40, 0x1d, - 0x96, 0xe1, 0xea, 0x28, 0xcd, 0x72, 0x2b, 0xe2, 0x2f, 0xf6, - 0xff, 00, 0x5a, 0x90, 0x78, 0x84, 0x7f, 0x7f, 0xf5, 0xa0, - 0xe, 0xa8, 0x9c, 0x55, 0x7b, 0x8b, 0xb8, 0xe3, 0x52, 0x9, - 0xd, 0xec, 0x6b, 0x9c, 0x97, 0xc4, 0x3c, 0x7d, 0xff, 00, - 0xd6, 0xb1, 0xef, 0xfc, 0x40, 0x48, 0x38, 0x7f, 0xd6, 0x80, - 0x2f, 0x6b, 0x26, 0xc2, 0x49, 0x44, 0x8d, 0x4, 0x46, 0x44, - 0xe4, 0x36, 0xd1, 0x91, 0x5c, 0x77, 0x88, 0x35, 0x65, 0x11, - 0xb0, 0xcf, 0xeb, 0x55, 0xf5, 0x4d, 0x78, 0xe0, 0xfc, 0xff, - 00, 0xad, 0x70, 0xba, 0xf6, 0xba, 0x4a, 0xb7, 0xcf, 0xfa, - 0xd0, 0x6, 0x77, 0x8a, 0x75, 0x25, 0x28, 0xe0, 0x37, 0x3f, - 0x5a, 0xf9, 0x3b, 0xf6, 0x84, 0xf1, 0x1f, 0x95, 0x6f, 0x2c, - 0x21, 0x8f, 0x3, 0x18, 0xd, 0x5e, 0xe9, 0xe2, 0x5d, 0x70, - 0x90, 0xdf, 0x38, 0xfc, 0xeb, 0xe4, 0x5f, 0x8e, 0xda, 0xab, - 0xcd, 0x73, 0x36, 0xe9, 0x15, 0xbe, 0x6f, 0x5a, 0xf2, 0x73, - 0x39, 0xb8, 0xe1, 0xdd, 0xba, 0x9e, 0x1e, 0x71, 0x52, 0x50, - 0xc2, 0xbe, 0x5e, 0xa7, 0xcf, 0xbe, 0x28, 0xbb, 0x24, 0x3e, - 0x4f, 0x53, 0xeb, 0x58, 0xfe, 0x4, 0xf0, 0xe4, 0x9e, 0x34, - 0xf1, 0xf6, 0x85, 0xa2, 0x46, 0x14, 0xfd, 0xb2, 0xed, 0x11, - 0xf7, 0xe4, 0xae, 0xc0, 0x72, 0xf9, 0xc7, 0xfb, 0x20, 0xd4, - 0xfe, 0x22, 0x90, 0xbe, 0x79, 0xef, 0x5d, 0xff, 00, 0xec, - 0x79, 0x61, 0x16, 0xa3, 0xfb, 0x40, 0x68, 0x82, 0x68, 0x9e, - 0x61, 0x14, 0x53, 0x3a, 0x84, 0x50, 0xd8, 0x25, 0x76, 0xe4, - 0xe7, 0xa7, 0xc, 0x47, 0xd4, 0x8a, 0xf2, 0xb2, 0xfa, 0x6a, - 0xc9, 0x1e, 0x26, 0x57, 0x49, 0x5a, 0x28, 0xfd, 0x6f, 0xf0, - 0x6e, 0x8e, 0x9a, 0x2e, 0x81, 0x61, 0x65, 0x1a, 0x2a, 0x8, - 0xa2, 0x51, 0xb5, 0x54, 0x28, 0x4, 0xf2, 0x78, 0x15, 0xd9, - 0x58, 0xc7, 0x80, 0x2b, 0x1a, 0xcc, 0xe, 0x2b, 0x7e, 0xc0, - 0xe, 0x2b, 0xea, 0xcf, 0xb7, 0x36, 0xac, 0xa3, 0xc0, 0x15, - 0xb3, 0x6a, 0x9c, 0x56, 0x55, 0x98, 0xe9, 0xd6, 0xb6, 0x6d, - 0xba, 0x50, 0x5, 0xfb, 0x75, 0xab, 0x61, 0x78, 0xaa, 0xd0, - 0x74, 0xab, 00, 0xf1, 0x40, 0x13, 0x38, 0xaa, 0xd2, 0x8e, - 0x2a, 0xd3, 0xa, 0xae, 0xeb, 0x40, 0x1c, 0xe7, 0x8a, 0xb4, - 0x58, 0xfc, 0x41, 0xa0, 0xea, 0x1a, 0x6c, 0xa9, 0x13, 0xa5, - 0xd4, 0x2f, 0x11, 0x13, 0x21, 0x75, 0xe4, 0x70, 0x48, 0x4, - 0x13, 0x83, 0xcf, 0x4, 0x7d, 0x45, 0x7e, 0x3f, 0xfc, 0x47, - 0xf0, 0xcd, 0xc7, 0x86, 0xfc, 0x4b, 0xa8, 0xe8, 0xf2, 0x5, - 0xd, 0x69, 0x70, 0xca, 0xc8, 0xa8, 0x54, 0x2e, 0x79, 0xda, - 0x1, 0x27, 00, 0x67, 0x18, 0xe7, 0xa5, 0x7e, 0xcc, 0x4f, - 0x1e, 0x73, 0x5f, 0x2b, 0x7e, 0xd6, 0x7f, 0xb3, 0xb4, 0xde, - 0x38, 0x6f, 0xf8, 0x4a, 0x34, 0x58, 0x62, 0x37, 0x90, 0x45, - 0xb6, 0xe6, 0x25, 0x7, 0x74, 0x83, 0x3f, 0x7b, 0x1, 0x4e, - 0x70, 0x3a, 0xfa, 0x63, 0xdc, 0xe3, 0xe7, 0x73, 0xcc, 0x1d, - 0x4c, 0x56, 0x1f, 0x9a, 0x82, 0xbc, 0xe3, 0xad, 0xbb, 0xae, - 0xab, 0xfa, 0xec, 0x7c, 0xa7, 0x11, 0xe5, 0xf5, 0x71, 0xb8, - 0x4e, 0x6c, 0x3a, 0xbc, 0xe1, 0xad, 0xbb, 0xae, 0xab, 0xf5, - 0xf9, 0x5b, 0xa9, 0xf9, 0xb3, 0x75, 0x60, 0xfb, 0x89, 0x51, - 0x8a, 0xaa, 0x55, 0xd7, 0x86, 0x15, 0xe9, 0xba, 0x97, 0x86, - 0x25, 0xb4, 0x99, 0xe2, 0x9a, 0x16, 0x8e, 0x45, 0xe1, 0x95, - 0x86, 0x8, 0xaa, 0xb1, 0x78, 0x1e, 0x7b, 0xb1, 0x91, 0x19, - 0x19, 0xf6, 0xff, 00, 0xeb, 0x57, 0xe5, 0x94, 0xf1, 0x3c, - 0xcf, 0x91, 0xad, 0x51, 0xf8, 0xb5, 0x2c, 0x67, 0x34, 0xbd, - 0x9b, 0x5a, 0xaf, 0xbd, 0x1e, 0x6c, 0xfd, 0x69, 0xb5, 0xe9, - 0x72, 0xfc, 0x36, 0xb8, 0x3f, 0xc2, 0x7f, 0x2f, 0xfe, 0xb5, - 0x55, 0x97, 0xe1, 0xcd, 0xca, 0xf4, 0x43, 0xf9, 0x1f, 0xf0, - 0xae, 0xf5, 0x27, 0x6d, 0x8f, 0x4d, 0x4d, 0xdb, 0xe1, 0x3c, - 0xfa, 0x8a, 0xee, 0x1f, 0xe1, 0xed, 0xd8, 0xff, 00, 0x96, - 0x67, 0xfe, 0xf9, 0xaa, 0xf2, 0x78, 0xe, 0xed, 0x7f, 0xe5, - 0x91, 0xff, 00, 0xbe, 0x4f, 0xf8, 0x51, 0xcd, 0xe4, 0x3e, - 0x7f, 0x23, 0x8f, 0xcd, 0x2e, 0xe3, 0xeb, 0x5d, 0x3b, 0xf8, - 0x2a, 0xed, 0x7f, 0xe5, 0x89, 0xfc, 0x8f, 0xf8, 0x54, 0x2f, - 0xe1, 0xb, 0xa5, 0xff, 00, 0x96, 0x4d, 0xf9, 0x1f, 0xf0, - 0xa3, 0x9d, 0x7, 0xb4, 0x5d, 0x8e, 0x7b, 0x7b, 0x7a, 0xd2, - 0xf9, 0x8d, 0xeb, 0x5b, 0x4d, 0xe1, 0x7b, 0x95, 0xff, 00, - 0x96, 0x4f, 0xf9, 0x1a, 0x89, 0xbc, 0x3b, 0x72, 0x3f, 0xe5, - 0x93, 0xfe, 0x54, 0x73, 0xc4, 0x3d, 0xa4, 0xc, 0xbf, 0x39, - 0xfd, 0x69, 0x45, 0xc3, 0x8f, 0xe2, 0xab, 0xcd, 0xa1, 0xce, - 0xbd, 0x51, 0xc7, 0xe0, 0x69, 0x87, 0x48, 0x9c, 0x7f, 0x3, - 0x7e, 0x54, 0x73, 0x44, 0x39, 0xe0, 0x55, 0x17, 0x2e, 0x3b, - 0xd3, 0x85, 0xdb, 0xd4, 0xad, 0xa6, 0x4c, 0xbf, 0xc2, 0x7f, - 0x23, 0x51, 0x9b, 0x19, 0x47, 0x6a, 0x2f, 0x10, 0xbd, 0x36, - 0x2, 0xf9, 0xc5, 0x3d, 0x75, 0x19, 0x17, 0xa1, 0x3f, 0x9d, - 0x47, 0xf6, 0x39, 0x47, 0xf0, 0xd3, 0x4d, 0xb4, 0x83, 0xf8, - 0x68, 0xb4, 0x42, 0xd4, 0xcb, 0x4b, 0xab, 0x4c, 0x3f, 0x8d, - 0x87, 0xe3, 0x52, 0xae, 0xbd, 0x70, 0xbd, 0x24, 0x61, 0xf8, - 0xd6, 0x7f, 0x91, 0x27, 0xf7, 0x4d, 0x21, 0x89, 0xc7, 0xf0, - 0x9a, 0x39, 0x62, 0x1c, 0xb1, 0xe8, 0x6b, 0x27, 0x89, 0x6e, - 0x93, 0xa4, 0xcd, 0x53, 0xa7, 0x8b, 0x6f, 0x57, 0xa5, 0xc3, - 0x56, 0xe, 0xc6, 0x1f, 0xc2, 0x7f, 0x2a, 0x4d, 0xa7, 0xd0, - 0xfe, 0x54, 0xed, 0xe6, 0x57, 0x2a, 0xe8, 0xce, 0x9a, 0x3f, - 0x1b, 0x5f, 0x2f, 0x4b, 0x83, 0xf9, 0x55, 0x98, 0xfc, 0x7f, - 0xa8, 0x27, 0xfc, 0xb7, 0x26, 0xb9, 0xc, 0x1f, 0x4a, 0x4a, - 0xad, 0x57, 0x56, 0x35, 0xcc, 0xb6, 0x93, 0x3b, 0xa8, 0xfe, - 0x24, 0xea, 0x29, 0x8f, 0xde, 0xff, 00, 0x9f, 0xca, 0xac, - 0xc7, 0xf1, 0x4b, 0x50, 0x4c, 0x7c, 0xe4, 0xfe, 0x3f, 0xfd, - 0x6a, 0xf3, 0xca, 0x2a, 0xb9, 0xaa, 0x2d, 0xa4, 0xcb, 0x52, - 0xa8, 0xb6, 0x9b, 0x3d, 0x3e, 0x1f, 0x8b, 0xba, 0x82, 0xf5, - 0x63, 0xf9, 0x8f, 0xf0, 0xab, 0x90, 0xfc, 0x66, 0xbe, 0x4e, - 0xa5, 0xbf, 0x31, 0xfe, 0x15, 0xe4, 0x99, 0xa5, 0xdc, 0x7d, - 0x4d, 0x52, 0xab, 0x59, 0x6d, 0x36, 0x5a, 0xad, 0x5d, 0x6d, - 0x36, 0x7b, 0x34, 0x3f, 0x1b, 0x6e, 0xd7, 0xab, 0x37, 0xe9, - 0xfe, 0x15, 0x76, 0x1f, 0x8e, 0x77, 0x3, 0xab, 0x91, 0xfe, - 0x7e, 0x95, 0xe1, 0x9b, 0x8f, 0xa9, 0xa5, 0xf3, 0x1b, 0xfb, - 0xc6, 0xb4, 0x58, 0x9a, 0xeb, 0xed, 0x9a, 0x2c, 0x56, 0x25, - 0x6d, 0x33, 0xe8, 0x8, 0x7e, 0x3c, 0xc8, 0x3a, 0xb9, 0xff, - 00, 0x3f, 0x85, 0x5e, 0x87, 0xe3, 0xe1, 0x18, 0xcc, 0x9f, - 0xe7, 0xf2, 0xaf, 0x9c, 0xbc, 0xd7, 0x1d, 0xcd, 0x28, 0x9d, - 0xc7, 0xf1, 0x1a, 0xb5, 0x8c, 0xc4, 0xaf, 0xb4, 0x6a, 0xb1, - 0xf8, 0xc5, 0xb4, 0xcf, 0xa7, 0x20, 0xf8, 0xfa, 0xbc, 0x7e, - 0xf7, 0xf5, 0xff, 00, 0xeb, 0x56, 0x84, 0x1f, 0x1f, 0x13, - 0x8c, 0xcd, 0xfa, 0xff, 00, 0xf5, 0xab, 0xe5, 0x4f, 0xb4, - 0xc8, 0x3b, 0xd2, 0xfd, 0xae, 0x41, 0xde, 0xb5, 0x59, 0x8e, - 0x29, 0x7d, 0xa3, 0x65, 0x9a, 0xe3, 0x63, 0xf6, 0x8f, 0xae, - 0x60, 0xf8, 0xf6, 0x87, 0x1f, 0xbe, 0x3f, 0x9f, 0xff, 00, - 0x5a, 0xb4, 0xa0, 0xf8, 0xf5, 0x1f, 0x1f, 0xe9, 0x7, 0xfc, - 0xfe, 0x15, 0xf1, 0xb0, 0xbd, 0x93, 0xd6, 0x9e, 0x35, 0x19, - 0x57, 0xa3, 0x1f, 0xce, 0xb5, 0x59, 0xae, 0x29, 0x75, 0x36, - 0x8e, 0x75, 0x8d, 0x8f, 0x53, 0xed, 0x58, 0x3e, 0x3b, 0xc6, - 0x7f, 0xe5, 0xe3, 0xfc, 0xfe, 0x55, 0x7e, 0x1f, 0x8e, 0x91, - 0x9c, 0x7f, 0xa4, 0xf, 0xf3, 0xf8, 0x57, 0xc3, 0xc3, 0x55, - 0x98, 0x74, 0x77, 0x1f, 0x89, 0xa9, 0x17, 0x5b, 0xb8, 0x1d, - 0x25, 0x90, 0x7f, 0xc0, 0x8d, 0x6a, 0xb3, 0x9c, 0x52, 0x37, - 0x59, 0xfe, 0x31, 0x1f, 0x75, 0xc3, 0xf1, 0xbe, 0x23, 0x8f, - 0xdf, 0x2f, 0xf9, 0xfc, 0x2a, 0xf4, 0x3f, 0x1a, 0xa1, 0x6c, - 0x7e, 0xf5, 0x4f, 0xf9, 0xfa, 0x57, 0xc1, 0x69, 0xe2, 0x2b, - 0xa4, 0xe9, 0x3c, 0x9f, 0xf7, 0xd1, 0xa9, 0x93, 0xc5, 0x37, - 0x89, 0xff, 00, 0x2f, 0x12, 0x7f, 0xdf, 0x46, 0xb6, 0x59, - 0xe6, 0x21, 0x6e, 0x8d, 0x97, 0x11, 0xe2, 0x96, 0xe8, 0xfb, - 0xea, 0x2f, 0x8c, 0x96, 0xed, 0xfc, 0x6b, 0xf9, 0xff, 00, - 0xf5, 0xaa, 0xf4, 0x3f, 0x17, 0x6d, 0x9b, 0xab, 0xf, 0xcf, - 0xff, 00, 0xad, 0x5f, 0x9f, 0xc9, 0xe3, 0x2b, 0xe5, 0xe9, - 0x72, 0xff, 00, 0x99, 0xff, 00, 0x1a, 0x9d, 0x3c, 0x79, - 0xa8, 0x27, 0xfc, 0xbc, 0x37, 0xe6, 0x7f, 0xc6, 0xb5, 0x59, - 0xf5, 0x55, 0xbc, 0x4d, 0xd7, 0x13, 0x57, 0x5b, 0xc4, 0xfd, - 0x5, 0x8b, 0xe2, 0xbd, 0xab, 0x7f, 0x17, 0xeb, 0xff, 00, - 0xd6, 0xab, 0x51, 0xfc, 0x51, 0xb4, 0x6f, 0xe3, 0xc7, 0xe3, - 0xff, 00, 0xd6, 0xaf, 0xcf, 0x98, 0xfe, 0x22, 0xea, 0x49, - 0xff, 00, 0x2d, 0xcf, 0xfd, 0xf4, 0x7f, 0xc6, 0xac, 0xc7, - 0xf1, 0x3f, 0x52, 0x4f, 0xf9, 0x6c, 0x7f, 0xef, 0xa3, 0xfe, - 0x35, 0xaa, 0xe2, 0x9, 0x75, 0x89, 0xb2, 0xe2, 0x89, 0xf5, - 0x81, 0xfa, 0x11, 0x1f, 0xc4, 0xab, 0x46, 0xc7, 0xef, 0x71, - 0xfe, 0x7e, 0x95, 0x66, 0x3f, 0x88, 0x96, 0x8d, 0xff, 00, - 0x2d, 0xab, 0xf3, 0xea, 0x2f, 0x8b, 0x3a, 0x8a, 0xf5, 0x95, - 0xbf, 0xef, 0xa3, 0xfe, 0x35, 0x6e, 0x3f, 0x8c, 0x5a, 0x82, - 0x75, 0x91, 0xbf, 0xef, 0xa3, 0xfe, 0x35, 0xb2, 0xe2, 0x15, - 0xd6, 0x26, 0xf1, 0xe2, 0x95, 0xd6, 0x27, 0xe8, 0x1c, 0x7e, - 0x3e, 0xb5, 0x6f, 0xf9, 0x6f, 0xfa, 0x7f, 0xf5, 0xaa, 0xc4, - 0x7e, 0x38, 0xb6, 0x3f, 0xf2, 0xdc, 0x7f, 0x9f, 0xc2, 0xbf, - 0x3f, 0xe2, 0xf8, 0xd5, 0x7a, 0x84, 0x65, 0xdc, 0xfe, 0x3f, - 0xfd, 0x7a, 0xbd, 0xf, 0xc7, 0x2b, 0xa1, 0x8c, 0xb3, 0xfe, - 0x7f, 0xfd, 0x7a, 0xd5, 0x71, 0x5, 0x3e, 0xa8, 0xde, 0x3c, - 0x51, 0x4b, 0xac, 0x4f, 0xbe, 0x93, 0xc6, 0x70, 0x1e, 0x93, - 0x2d, 0x4e, 0x9e, 0x2e, 0x88, 0xff, 00, 0xcb, 0x51, 0xf9, - 0xd7, 0xc1, 0x70, 0xfc, 0x78, 0x9c, 0x63, 0x2e, 0xdf, 0xe7, - 0xf1, 0xab, 0xd0, 0xfc, 0x7b, 0x90, 0x63, 0x74, 0x84, 0x7e, - 0x3f, 0xfd, 0x7a, 0xd9, 0x67, 0xd4, 0x1e, 0xe8, 0xde, 0x3c, - 0x4d, 0x86, 0x7b, 0xa3, 0xee, 0xe4, 0xf1, 0x4a, 0x1e, 0x92, - 0xf, 0xce, 0xa6, 0x5f, 0x13, 0xa9, 0xfe, 0x31, 0xf9, 0xd7, - 0xc3, 0x51, 0x7c, 0x7e, 0xf5, 0x98, 0x8f, 0xf8, 0x17, 0xff, - 00, 0x5e, 0xaf, 0x43, 0xf1, 0xfd, 0x78, 0xcd, 0xc1, 0xff, - 00, 0xbe, 0xbf, 0xfa, 0xf5, 0xb2, 0xce, 0xf0, 0xec, 0xe8, - 0x8f, 0x11, 0xe1, 0x19, 0xf6, 0xb4, 0xde, 0x25, 0x1, 0x7e, - 0xf5, 0x62, 0xdf, 0xf8, 0x9f, 0xae, 0x1a, 0xbe, 0x4f, 0x5f, - 0x8f, 0x88, 0xdf, 0xf2, 0xf1, 0x8f, 0xf8, 0x1f, 0xff, 00, - 0x5e, 0xa5, 0x5f, 0x8e, 0x9, 0x28, 0xff, 00, 0x8f, 0x9f, - 0xcd, 0xbf, 0xfa, 0xf5, 0xd5, 0x4f, 0x34, 0xc3, 0xd4, 0xd9, - 0x9d, 0xb4, 0xb3, 0xac, 0x2d, 0x5d, 0x99, 0xf4, 0x6, 0xad, - 0xe2, 0x6f, 0xbd, 0xf3, 0x57, 0x9, 0xaf, 0x78, 0xa3, 0xe5, - 0x60, 0x1a, 0xbc, 0xd6, 0x7f, 0x8a, 0xf1, 0x5d, 0x2, 0xc, - 0xaa, 0x7e, 0x8d, 0xff, 00, 0xd7, 0xac, 0x8b, 0x9f, 0x14, - 0x2e, 0xa0, 0x49, 0x12, 0x60, 0x7a, 0x13, 0x5e, 0x94, 0x2b, - 0x42, 0xa7, 0xc2, 0xcf, 0x5e, 0x9d, 0x7a, 0x75, 0x3e, 0x16, - 0x6b, 0xf8, 0x93, 0xc4, 0x44, 0xc5, 0x21, 0xdd, 0xd8, 0xd7, - 0xc9, 0x9f, 0x13, 0xf5, 0xb7, 0xbc, 0xd5, 0x1d, 0x49, 0x1d, - 0x4f, 0x6a, 0xf7, 0x9f, 0x10, 0x5d, 0x3c, 0xd6, 0xf2, 0x2a, - 0x37, 0x50, 0x7b, 0xd7, 0xce, 0x5e, 0x37, 0xb6, 0x74, 0xbf, - 0x25, 0x8e, 0x79, 0x3d, 0xeb, 0xcb, 0xcc, 0xff, 00, 0x86, - 0x91, 0xe2, 0xe7, 0x2f, 0xf7, 0x49, 0x1e, 0x7f, 0xab, 0x16, - 0x7c, 0xe4, 0xe6, 0xbe, 0xba, 0xff, 00, 0x82, 0x6a, 0x78, - 0x3a, 0x3b, 0xbf, 0x10, 0x78, 0x87, 0xc4, 0x32, 0x9, 0x3c, - 0xc8, 0x8a, 0xda, 0xc4, 0x55, 0xf0, 0xb8, 0x50, 0x19, 0xb2, - 0x31, 0xcf, 0xdf, 0x4f, 0xf3, 0x9a, 0xf9, 0x2f, 0x52, 0x8f, - 0x28, 0xd5, 0xfa, 0x91, 0xfb, 0x16, 0x78, 0x1a, 0xdf, 0xc1, - 0x9f, 0x6, 0x34, 0x70, 0x96, 0xf2, 0xc5, 0x73, 0x75, 0x12, - 0xcf, 0x3b, 0x4c, 0xaa, 0x1c, 0xbb, 0x81, 0x23, 0x74, 0xf4, - 0x2e, 0x54, 0x77, 0xc2, 0xa8, 0x3c, 0x8a, 0xcb, 0x2e, 0x5c, - 0xce, 0xfd, 0x8c, 0x72, 0xa5, 0xcc, 0xef, 0xd8, 0xfa, 0x2a, - 0xcd, 0x3a, 0x56, 0xfd, 0x92, 0x74, 0xac, 0x7b, 0x20, 0x32, - 0x2b, 0x7e, 0xc8, 0xc, 0x8e, 0x2b, 0xdf, 0x3e, 0x9c, 0xd8, - 0xb4, 0x4e, 0x5, 0x6b, 0xdb, 0xae, 00, 0xac, 0xeb, 0x50, - 0x38, 0xad, 0x58, 0x7, 0x4a, 00, 0xbb, 0x10, 0xe2, 0xa7, - 0x3, 0x8a, 0x8a, 0x2e, 0x95, 0x35, 00, 0x4c, 0xc2, 0xa2, - 0x71, 0x53, 0x9a, 0x8d, 0xc7, 0x14, 0x1, 0x4e, 0x55, 0xaa, - 0x73, 0x47, 0x91, 0xd2, 0xb4, 0x99, 0x38, 0xaa, 0xf2, 0xc7, - 0x91, 0x40, 0x1e, 0x17, 0xf1, 0x67, 0xf6, 0x75, 0xd0, 0x3c, - 0x6f, 0x6d, 0x35, 0xe5, 0x8d, 0x94, 0x56, 0x3a, 0xc2, 0xe6, - 0x40, 0xd1, 0x8d, 0xa9, 0x31, 0xc1, 0xc2, 0x91, 0x90, 0x17, - 0x27, 0xb8, 0xe3, 0x24, 0xe4, 0x1a, 0xf0, 0x35, 0xf0, 0x11, - 0xf0, 0xad, 0xe8, 0xb0, 0xd7, 0x2d, 0x4d, 0x8d, 0xcf, 0x18, - 0xf3, 0x93, 0xe5, 0x7f, 0x70, 0xc3, 0x20, 0x8f, 0x7c, 0xd7, - 0xdc, 0xb2, 0xc5, 0x9c, 0xd6, 0x75, 0xe5, 0x84, 0x57, 0x51, - 0x3c, 0x53, 0x44, 0xb3, 0x44, 0xe3, 0xc, 0x92, 0x28, 0x65, - 0x61, 0xe8, 0x41, 0xeb, 0x5e, 0x36, 0x2f, 0x29, 0xc2, 0xe2, - 0xe5, 0xed, 0x25, 0x1b, 0x4b, 0xba, 0xd1, 0xfc, 0xfb, 0xfc, - 0xfe, 0x47, 0x81, 0x8e, 0xc8, 0xf0, 0x58, 0xe9, 0xfb, 0x59, - 0xc7, 0x96, 0x7f, 0xcc, 0xb4, 0x6f, 0xd7, 0xbf, 0xcf, 0xe5, - 0x63, 0xe4, 0x9, 0x3c, 0x19, 0x6b, 0x34, 0x61, 0xe3, 0x8a, - 0x39, 0x14, 0xf4, 0x65, 0xc1, 0x6, 0xa9, 0xb7, 0x82, 0xa0, - 0xe7, 0xfd, 0x1d, 0x3f, 0x2a, 0xfa, 0x83, 0x50, 0xf8, 0x63, - 0xe1, 0x9b, 0xb4, 0xda, 0xfa, 0x15, 0x8a, 0xf, 0xfa, 0x63, - 00, 0x88, 0xfe, 0x6b, 0x83, 0x5c, 0xf5, 0xc7, 0xc1, 0x3d, - 00, 0xe7, 0xc8, 0xfb, 0x6d, 0xa7, 0xfd, 0x71, 0xba, 0x7e, - 0x3f, 0x3c, 0xd7, 0x9a, 0xf2, 0x36, 0xbe, 0x1a, 0x9f, 0x87, - 0xfc, 0x13, 0xc7, 0x7c, 0x37, 0x25, 0xf0, 0xd5, 0xfc, 0x3f, - 0xe0, 0x9f, 0x3d, 0x3f, 0x82, 0x60, 0xff, 00, 0x9e, 0xb, - 0xf9, 0x55, 0x69, 0x3c, 0x7, 0x6c, 0xdd, 0x60, 0x1f, 0x95, - 0x7b, 0xf4, 0x9f, 0x4, 0x74, 0xec, 0x9c, 0x6b, 0x1a, 0xd0, - 0xf6, 0xfb, 0x52, 0xff, 00, 0xf1, 0x15, 0x13, 0x7c, 0x15, - 0xb0, 0x50, 0x71, 0xab, 0xeb, 0x19, 0xff, 00, 0x6a, 0xe1, - 0x4f, 0xfe, 0xc9, 0x59, 0xff, 00, 0x62, 0x55, 0xfe, 0x75, - 0xf7, 0x19, 0x7f, 0xab, 0xb5, 0xbf, 0xe7, 0xe2, 0xfb, 0x99, - 0xf3, 0xf3, 0xfc, 0x3f, 0xb5, 0xff, 00, 0x9e, 0xb, 0xf9, - 0x54, 0xf, 0xf0, 0xfa, 0xd8, 0xff, 00, 0xcb, 0x5, 0x1f, - 0x87, 0xff, 00, 0x5e, 0xbd, 0xfa, 0x6f, 0x83, 0xb2, 0x27, - 0xfc, 0x7b, 0xeb, 0xb7, 0x49, 0xe9, 0xe7, 0x44, 0x92, 0x7f, - 0x85, 0x53, 0x93, 0xe1, 0x46, 0xb1, 0x18, 0x3e, 0x5e, 0xb5, - 0x6f, 0x31, 0xf4, 0x92, 0xcf, 0x6f, 0xf2, 0x63, 0x58, 0xcb, - 0x25, 0xc4, 0x2d, 0x9c, 0x5f, 0xdf, 0xfe, 0x46, 0x12, 0xe1, - 0xec, 0x52, 0xf8, 0x5c, 0x5f, 0xdf, 0xfe, 0x47, 0x82, 0x4b, - 0xf0, 0xe2, 0xd9, 0xba, 0xc4, 0x3f, 0x2a, 0xa9, 0x27, 0xc3, - 0x3b, 0x53, 0xc8, 0x89, 0x7f, 0x11, 0x5e, 0xf7, 0x2f, 0xc3, - 0x6f, 0x13, 0x2f, 0xdc, 0x97, 0x47, 0x71, 0xea, 0xe2, 0x55, - 0x3f, 0xa0, 0x35, 0x9, 0xf8, 0x6f, 0xe2, 0x7e, 0xe7, 0x46, - 0x3f, 0x46, 0x97, 0xff, 00, 0x89, 0xac, 0x7f, 0xb1, 0xf1, - 0x3f, 0xca, 0xbe, 0xf3, 0x9f, 0xfb, 0x7, 0x17, 0xfc, 0xab, - 0xef, 0x3c, 0xa, 0x4f, 0x86, 0x50, 0x1f, 0xf9, 0x62, 0x9f, - 0xf7, 0xcf, 0xff, 00, 0x5e, 0xaa, 0xc9, 0xf0, 0xb6, 0xd9, - 0xba, 0xc2, 0xbf, 0x82, 0x8f, 0xf1, 0xaf, 0xa0, 0x64, 0xf0, - 0x7, 0x88, 0xe1, 0xeb, 0x69, 0xa7, 0xcf, 0xff, 00, 0x5c, - 0xa6, 0x65, 0xff, 00, 0xd0, 0x96, 0xaa, 0xcd, 0xe1, 0x2d, - 0x7a, 0x2f, 0xbd, 0xa0, 0x6f, 0x1e, 0xb1, 0xdd, 0x46, 0x7f, - 0x43, 0x8a, 0xca, 0x59, 0x4e, 0x25, 0x7f, 0xcb, 0xbb, 0xfc, - 0xd7, 0xf9, 0x98, 0xcb, 0x23, 0xc6, 0x2f, 0xf9, 0x75, 0x7f, - 0x9a, 0xff, 00, 0x33, 0xe7, 0xe9, 0x7e, 0x14, 0x5b, 0x9e, - 0x90, 0xaf, 0xe2, 0x2a, 0x9c, 0xbf, 0x9, 0xe2, 0x3f, 0xf2, - 0xc2, 0x33, 0xf8, 0x7f, 0xf5, 0xeb, 0xe8, 0x19, 0xb4, 0x8b, - 0xe8, 0x7, 0xef, 0x7c, 0x3f, 0xa8, 0x8f, 0xfa, 0xe5, 0x8, - 0x93, 0xf9, 0x1a, 0xae, 0xd6, 0x13, 0x9f, 0xf9, 0x80, 0x6b, - 0x1f, 0xf8, 0x4, 0x6b, 0x7, 0x96, 0x57, 0xeb, 0x49, 0x9c, - 0xcf, 0x27, 0xc4, 0xf5, 0xa2, 0xcf, 0x9f, 0x24, 0xf8, 0x4b, - 0xf, 0xfc, 0xfb, 0x8f, 0xc0, 0x7f, 0xf5, 0xea, 0xa4, 0xbf, - 0x9, 0x22, 0x3f, 0xf2, 0xc0, 0x7e, 0x20, 0x7f, 0x8d, 0x7d, - 0x14, 0xfa, 0x7b, 0xa8, 0xcc, 0x9a, 0x36, 0xa9, 0x10, 0xf5, - 0x7b, 0x36, 0x2, 0xab, 0x4b, 0xfd, 0x9d, 0x11, 0xc4, 0xc5, - 0xed, 0xdb, 0xd2, 0x58, 0x59, 0x7f, 0xa5, 0x65, 0x2c, 0xba, - 0xac, 0x77, 0xa4, 0xfe, 0xe3, 0x19, 0x65, 0x35, 0xe3, 0xbd, - 0x19, 0x7d, 0xd7, 0xfc, 0x8f, 0x9c, 0xa5, 0xf8, 0x44, 0x9d, - 0xa0, 0x4f, 0xf3, 0xf8, 0xd5, 0x59, 0x3e, 0x12, 0x28, 0xff, - 00, 0x96, 0x7, 0xf0, 0x1f, 0xfd, 0x7a, 0xfa, 0x55, 0x62, - 0xd2, 0xe4, 0xe9, 0x77, 0xf, 0xfc, 0x8, 0xe3, 0xf9, 0xd0, - 0xfa, 0x7e, 0x9c, 0x7f, 0xe5, 0xee, 0xd4, 0xff, 00, 0xdb, - 0x55, 0xae, 0x77, 0x83, 0x6b, 0x78, 0x3f, 0xb8, 0xe4, 0x96, - 0x1, 0xa7, 0x67, 0x4d, 0xaf, 0x93, 0x3e, 0x5f, 0x97, 0xe1, - 0x38, 0xff, 00, 0x9e, 0x58, 0xfa, 0x8f, 0xfe, 0xbd, 0x54, - 0x93, 0xe1, 0x41, 0x1d, 0x14, 0x7f, 0x9f, 0xc6, 0xbe, 0xa7, - 0x6d, 0x2b, 0x4f, 0x73, 0xc5, 0xcd, 0xb3, 0x1f, 0x69, 0x16, - 0x95, 0x7c, 0x37, 0x4, 0xbf, 0x73, 0xcb, 0x7f, 0xf7, 0x70, - 0x6b, 0x37, 0x85, 0x4b, 0x74, 0xd1, 0x94, 0xb0, 0x51, 0x8f, - 0xc4, 0x9a, 0xf9, 0x1f, 0x27, 0x49, 0xf0, 0xb1, 0xc7, 0x48, - 0xc9, 0xfc, 0x3f, 0xfa, 0xf5, 0x52, 0x4f, 0x86, 0x33, 0xf, - 0xe0, 0xc7, 0xd4, 0x7f, 0xf5, 0xeb, 0xeb, 0xa7, 0xf0, 0x92, - 0x9f, 0xf9, 0x64, 0x3f, 0x2f, 0xfe, 0xb5, 0x57, 0x93, 0xc1, - 0xb1, 0xb7, 0x58, 0x41, 0xff, 00, 0x80, 0xd6, 0x5e, 0xc2, - 0x1d, 0x19, 0x8f, 0xd5, 0xa9, 0xf4, 0x67, 0xc8, 0x8f, 0xf0, - 0xd6, 0x61, 0xd0, 0x67, 0xf2, 0xff, 00, 0x1a, 0xad, 0x27, - 0xc3, 0xab, 0x91, 0xd2, 0x3c, 0xfe, 0x1f, 0xfd, 0x7a, 0xfa, - 0xf5, 0xfc, 0x15, 0x17, 0xfc, 0xf1, 0x1f, 0xf7, 0xcf, 0xff, - 00, 0x5a, 0xa0, 0x7f, 0x5, 0x44, 0x7f, 0xe5, 0x88, 0xff, - 00, 0xbe, 0x7f, 0xfa, 0xd4, 0xbe, 0xaf, 0x1e, 0xe2, 0xfa, - 0xac, 0x7a, 0x48, 0xf9, 0x5, 0xfe, 0x1f, 0xdc, 0xaf, 0xfc, - 0xb3, 0xfd, 0x2a, 0xbb, 0xf8, 0x1e, 0xe5, 0x73, 0xfb, 0xbc, - 0xff, 00, 0x9f, 0xad, 0x7d, 0x7d, 0x2f, 0x81, 0x20, 0x6e, - 0xb0, 0x83, 0xf8, 0x7f, 0xf5, 0xaa, 0xb4, 0x9f, 0xf, 0xad, - 0xcf, 0x48, 0x40, 0xff, 00, 0x80, 0xd1, 0xf5, 0x77, 0xd2, - 0x42, 0xfa, 0xab, 0xe9, 0x23, 0xe4, 0x37, 0xf0, 0x6d, 0xca, - 0xff, 00, 0xcb, 0x23, 0x50, 0x3f, 0x85, 0x2e, 0x57, 0xfe, - 0x59, 0x9f, 0xce, 0xbe, 0xbb, 0x7f, 0x87, 0xb0, 0x9f, 0xf9, - 0x67, 0xff, 00, 0x8e, 0x8f, 0xf0, 0xaa, 0xd2, 0xfc, 0x3a, - 0x81, 0xba, 0xc5, 0x9f, 0xc3, 0xff, 00, 0xad, 0x4b, 0xea, - 0xf2, 0xfe, 0x60, 0xfa, 0xb4, 0xfa, 0x48, 0xf9, 0x1d, 0xbc, - 0x35, 0x70, 0x3f, 0xe5, 0x93, 0x54, 0x6d, 0xe1, 0xf9, 0xd7, - 0xf8, 0x8, 0xaf, 0xac, 0xa4, 0xf8, 0x67, 0x1, 0xe9, 0x18, - 0x1f, 0x87, 0xff, 00, 0x5a, 0xab, 0x49, 0xf0, 0xc2, 0x33, - 0xd1, 0x7, 0xfd, 0xf2, 0x3f, 0xc2, 0x97, 0xb0, 0xa9, 0xdc, - 0x5f, 0x57, 0xab, 0xfc, 0xc7, 0xca, 0x2d, 0xa2, 0xcc, 0x3f, - 0x84, 0xfe, 0x55, 0x19, 0xd2, 0xa6, 0x1d, 0x8f, 0xe5, 0x5f, - 0x53, 0xcb, 0xf0, 0xba, 0x33, 0xff, 00, 0x2c, 0x54, 0xfe, - 0x3, 0xfc, 0x2a, 0xb4, 0x9f, 0xb, 0x23, 0x3d, 0x21, 0x3, - 0xf0, 0xff, 00, 0xeb, 0x51, 0xec, 0x6a, 0x77, 0x17, 0xb0, - 0xad, 0xdc, 0xf9, 0x78, 0xe9, 0xd2, 0x8e, 0xd4, 0xd3, 0x63, - 0x20, 0xed, 0x5f, 0x4c, 0x4b, 0xf0, 0xa1, 0x4f, 0x48, 0xc7, - 0xfd, 0xf1, 0xff, 00, 0xd6, 0xaa, 0x72, 0xfc, 0x26, 0x3, - 0xa4, 0x3, 0xf2, 0xc7, 0xf4, 0xa9, 0xf6, 0x75, 0x50, 0xbd, - 0x95, 0x64, 0x7c, 0xe2, 0x6d, 0x24, 0x1d, 0xa9, 0x3e, 0xcf, - 0x27, 0xf7, 0x6b, 0xe8, 0x49, 0x7e, 0x14, 0xf, 0xf9, 0xe3, - 0x8f, 0xc3, 0x3f, 0xd2, 0xaa, 0x49, 0xf0, 0x94, 0x1f, 0xf9, - 0x65, 0xff, 00, 0x8e, 0x7f, 0xf5, 0xa9, 0x72, 0x54, 0xec, - 0x4f, 0x25, 0x55, 0xd0, 0xf0, 0x4f, 0x25, 0xc7, 0xf0, 0xd2, - 0x79, 0x4c, 0x3f, 0x86, 0xbd, 0xc6, 0x5f, 0x84, 0xcc, 0x33, - 0x88, 0x4f, 0xe5, 0xff, 00, 0xd6, 0xaa, 0x72, 0xfc, 0x29, - 0x71, 0xff, 00, 0x2c, 0xc8, 0xfc, 0x3f, 0xfa, 0xd4, 0xad, - 0x35, 0xd0, 0x56, 0xaa, 0xbe, 0xc9, 0xe3, 0x5b, 0x1b, 0xd0, - 0xd2, 0x60, 0xfa, 0x57, 0xae, 0x49, 0xf0, 0xb5, 0xc7, 0x45, - 0x3f, 0x91, 0xff, 00, 0xa, 0xab, 0x27, 0xc2, 0xd9, 0xc7, - 0x44, 0x6f, 0xcb, 0xff, 00, 0xad, 0x4b, 0xde, 0xec, 0x2b, - 0xcf, 0xf9, 0x4f, 0x2c, 0xa2, 0xbd, 0x2a, 0x4f, 0x86, 0x77, - 0xb, 0xd5, 0x4f, 0xe5, 0xff, 00, 0xd6, 0xaa, 0xd2, 0x7c, - 0x3a, 0xb8, 0x5e, 0x89, 0x93, 0xf4, 0xff, 00, 0xeb, 0x51, - 0x77, 0xd5, 0xb, 0x9e, 0x4b, 0x78, 0x9e, 0x7d, 0x46, 0x6b, - 0xb9, 0x7f, 0x87, 0xb7, 0x63, 0xfe, 0x59, 0x9f, 0xfb, 0xe6, - 0xab, 0xc9, 0xe0, 0x3b, 0xb5, 0xff, 00, 0x96, 0x47, 0xfe, - 0xf9, 0x3f, 0xe1, 0x4b, 0x9b, 0xc8, 0x3d, 0xa7, 0x74, 0x71, - 0xf9, 0x3e, 0xb4, 0x6e, 0x3e, 0xa6, 0xba, 0x87, 0xf0, 0x5d, - 0xda, 0xe7, 0xf7, 0x47, 0xf2, 0x3f, 0xe1, 0x50, 0xbf, 0x84, - 0x2e, 0x97, 0xac, 0x4d, 0xf9, 0x1f, 0xf0, 0xa3, 0x9d, 0xb, - 0xda, 0x2e, 0xc7, 0x3d, 0xbd, 0xbd, 0x4d, 0x1e, 0x63, 0x7f, - 0x78, 0xd6, 0xdb, 0xf8, 0x5e, 0xe5, 0x4f, 0xfa, 0xa6, 0xfc, - 0x8d, 0x42, 0xde, 0x1c, 0xb9, 0x1f, 0xf2, 0xc9, 0xff, 00, - 0x2a, 0x39, 0xe2, 0x1e, 0xd2, 0x6, 0x5f, 0x9c, 0xff, 00, - 0xde, 0x34, 0xbf, 0x68, 0x93, 0xfb, 0xc6, 0xaf, 0x36, 0x87, - 0x3a, 0xf5, 0x47, 0xfc, 0xa9, 0x87, 0x47, 0x98, 0x7f, 0x3, - 0x7e, 0x54, 0x73, 0x44, 0x39, 0xe0, 0x52, 0x92, 0xe2, 0x4d, - 0xbf, 0x7a, 0xa0, 0xf3, 0xa5, 0xed, 0x23, 0xf, 0xa1, 0xc5, - 0x5f, 0x93, 0x4b, 0x95, 0x47, 0x2a, 0x47, 0xe1, 0x51, 0x1d, - 0x3d, 0x80, 0xce, 0x2b, 0x48, 0xce, 0x2b, 0x63, 0x48, 0xce, - 0xb, 0x62, 0x28, 0x75, 0x2b, 0xbb, 0x63, 0x94, 0x99, 0xbf, - 0x13, 0x5b, 0x5a, 0x77, 0x8d, 0x6e, 0x61, 0x75, 0x59, 0x5c, - 0xe3, 0xd7, 0x35, 0x8d, 0x25, 0xa9, 0x51, 0xd2, 0xaa, 0xbd, - 0xbb, 0x36, 0x70, 0x2b, 0xb6, 0x8e, 0x26, 0x74, 0xdd, 0xe3, - 0x23, 0xd1, 0xa1, 0x8c, 0xa9, 0x49, 0xde, 0x32, 0x3d, 0x32, - 0xf, 0x14, 0x24, 0xf6, 0xff, 00, 0x33, 0x64, 0x11, 0x82, - 0xd, 0x79, 0x5f, 0x8c, 0xe4, 0x8a, 0xe2, 0xed, 0x99, 0x7, - 0xf1, 0x54, 0xf1, 0xcb, 0x35, 0xa9, 0xe0, 0xb6, 0x3d, 0x33, - 0x57, 0xfc, 0x39, 0xe0, 0x3d, 0x63, 0xc7, 0xda, 0xec, 0x5a, - 0x7e, 0x9b, 0x6c, 0xf3, 0x3c, 0xae, 0xaa, 0xd3, 0x8, 0xd8, - 0xc7, 0x8, 0x3d, 0xdc, 0x80, 0x71, 0xd0, 0xfd, 0x7a, 0xa, - 0xf6, 0xde, 0x32, 0x58, 0xb8, 0xaa, 0x7b, 0xb3, 0xe8, 0xe5, - 0x8f, 0x9e, 0x36, 0x11, 0xa7, 0xbb, 0x2e, 0x7e, 0xce, 0x7f, - 0xa, 0xee, 0x3e, 0x28, 0x7c, 0x51, 0xd3, 0xa1, 0x5b, 0x7f, - 0x3a, 0xc3, 0x4f, 0x91, 0x6e, 0xae, 0x49, 0xa, 0x57, 0x23, - 0x25, 0x15, 0x81, 0x3c, 0x82, 0x57, 0x91, 0xce, 0x40, 0x35, - 0xfa, 0xb1, 0xa0, 0xe9, 0xab, 0xa6, 0xd8, 0x5b, 0xda, 0xc6, - 0x72, 0x90, 0xa0, 0x40, 0x71, 0x8c, 0xe3, 0xbf, 0xe3, 0x5e, - 0x67, 0xf0, 0x2b, 0xe0, 0xfe, 0x99, 0xf0, 0xab, 0xc3, 0x51, - 0x5a, 0xd9, 0x41, 0x24, 0x73, 0x4a, 0x37, 0xc8, 0xd2, 0x39, - 0x2e, 0xc4, 0x85, 0xc9, 0x61, 0xd0, 0x31, 0xda, 0xb9, 00, - 0x60, 0x63, 0x3, 0x15, 0xeb, 0xf6, 0x71, 0x70, 0x38, 0x35, - 0xf5, 0xb8, 0x4a, 0x1f, 0x57, 0xa7, 0xca, 0xf7, 0xea, 0x7d, - 0xce, 0x7, 0xd, 0xf5, 0x5a, 0x2a, 0x2f, 0x7e, 0xa6, 0x9d, - 0x94, 0x67, 0x22, 0xb7, 0xec, 0x50, 0xe4, 0x56, 0x55, 0x94, - 0x5e, 0xc6, 0xb7, 0xac, 0x63, 0xc1, 0xe9, 0x5d, 0xa7, 0xa0, - 0x69, 0xda, 0xa9, 0xc8, 0xad, 0x48, 0x7, 0x4a, 0xa5, 0x6c, - 0xbd, 0x38, 0xad, 0x18, 0x5, 00, 0x59, 0x8c, 0x74, 0xa9, - 0xc7, 0x4a, 0x8d, 0x16, 0xa5, 0xa0, 0x9, 0x88, 0xa6, 0x11, - 0x52, 0x1a, 0x69, 0x18, 0xa0, 0x8, 0x99, 0x73, 0x51, 0x3a, - 0x66, 0xac, 0x91, 0x4c, 0x2b, 0x40, 0x14, 0x9e, 0x20, 0x6a, - 0xbb, 0xc1, 0x5a, 0x4c, 0x95, 0x1b, 0x47, 0x40, 0x19, 0x12, - 0x5b, 0x83, 0xda, 0xab, 0xbd, 0xae, 0x6b, 0x69, 0xa1, 0xcd, - 0x46, 0xd0, 0xa, 00, 0xc2, 0x7b, 0x40, 0x7b, 0x54, 0x2f, - 0x66, 0x3d, 0x2b, 0x78, 0xdb, 0xd4, 0x66, 0xdc, 0x1a, 00, - 0xc0, 0x6b, 0x21, 0x8e, 0x95, 0x19, 0xb1, 0x1f, 0xdd, 0xae, - 0x85, 0xad, 0x85, 0x30, 0xda, 0xd0, 0x7, 0x3a, 0x6c, 0x87, - 0xa6, 0x6a, 0x36, 0xb1, 0x1e, 0x95, 0xd1, 0xb5, 0xae, 0x2a, - 0x33, 0x66, 0x3d, 0x28, 0x3, 0x9b, 0x6b, 0x1e, 0x7a, 0x54, - 0x6d, 0x63, 0x5d, 0x21, 0xb3, 0xf6, 0xa6, 0x35, 0x9f, 0xb5, - 00, 0x73, 0x6d, 0x63, 0xed, 0x51, 0x9b, 0x1, 0xe9, 0x5d, - 0x29, 0xb2, 0xf6, 0xa6, 0x35, 0x9f, 0x3d, 0x28, 0x3, 0x9a, - 0x6b, 0xe, 0x3a, 0xa, 0x8d, 0xb4, 0xf0, 0x41, 0xf9, 0x41, - 0xcd, 0x74, 0xc6, 0xcb, 0xda, 0x90, 0xd9, 0x7b, 0x50, 0x7, - 0x1d, 0x71, 0xe1, 0xdb, 0x2b, 0x8c, 0xf9, 0xd6, 0x70, 0x4a, - 0x7f, 0xdb, 0x8d, 0x4d, 0x52, 0x6f, 0x4, 0x68, 0xc4, 0x92, - 0x74, 0x7b, 0x2, 0x7d, 0x4d, 0xb2, 0x7f, 0x85, 0x77, 0x46, - 0xcb, 0xda, 0xa3, 0x6b, 0x2f, 0x6a, 00, 0xe0, 0xdb, 0xc0, - 0xfa, 0x29, 0x1f, 0xf2, 0x7, 0xb1, 0xfc, 0x2d, 0x93, 0xfc, - 0x2a, 0x8c, 0xdf, 0xd, 0xb4, 0x9, 0xbe, 0xf6, 0x97, 0x8, - 0xff, 00, 0x73, 0x2b, 0xfc, 0x88, 0xaf, 0x46, 0x7b, 0x1f, - 0x6a, 0x8c, 0xd8, 0xfb, 0x50, 0x7, 0x9a, 0xaf, 0xc3, 0x1d, - 0x6, 0x33, 0xf2, 0x59, 0x3a, 0xfd, 0x2e, 0x65, 0x1f, 0xfb, - 0x35, 0x39, 0xbe, 0x1f, 0x69, 0x60, 0x6d, 0x54, 0xb9, 0x4f, - 0xf7, 0x6e, 0xe6, 0xff, 00, 0xe2, 0xab, 0xd1, 0xd, 0x88, - 0xf4, 0xa6, 0x1b, 0xf, 0x6a, 0xcd, 0xd3, 0x84, 0xb7, 0x48, - 0xca, 0x54, 0xa9, 0xcb, 0xe2, 0x8a, 0x7f, 0x23, 0xcc, 0x66, - 0xf8, 0x67, 0x65, 0x2f, 0xdd, 0xbc, 0xd4, 0x62, 0xff, 00, - 0x72, 0xe4, 0x9f, 0xe7, 0x9a, 0xa9, 0x27, 0xc3, 0x2d, 0xbf, - 0xea, 0x75, 0x8b, 0xd0, 0x7f, 0xe9, 0xa6, 0xd7, 0xfe, 0x82, - 0xbd, 0x58, 0xd8, 0x8c, 0x70, 0xd, 0x46, 0x6c, 0x3d, 0x8d, - 0x43, 0xa1, 0x49, 0xef, 0x5, 0xf7, 0x23, 0x37, 0x86, 0xa1, - 0x2d, 0x1c, 0x17, 0xdc, 0x8f, 0x25, 0x7f, 0x86, 0xfa, 0x96, - 0x7e, 0x5d, 0x7b, 0x3, 0xfd, 0xab, 0x24, 0x27, 0xf9, 0xd4, - 0x67, 0xe1, 0xc6, 0xa6, 0xf, 0xfc, 0x87, 0x54, 0xff, 00, - 0xdb, 0x8a, 0x7f, 0xf1, 0x55, 0xeb, 0x86, 0xc3, 0xda, 0xa2, - 0x36, 00, 0xf6, 0xac, 0xfe, 0xa7, 0x86, 0xff, 00, 0x9f, - 0x71, 0xfb, 0x91, 0x97, 0xd4, 0x30, 0x9f, 0xf3, 0xea, 0x3f, - 0xf8, 0xa, 0xff, 00, 0x23, 0xc8, 0xa4, 0xf0, 0x16, 0xb1, - 0x1f, 0xdc, 0xbf, 0xb4, 0x9b, 0xfe, 0xba, 0x40, 0x57, 0xf9, - 0x1a, 0x85, 0xfc, 0x1d, 0xaf, 0x47, 0x92, 0x62, 0xd3, 0x26, - 0x1f, 0xec, 0xbb, 0xa9, 0x3f, 0x98, 0xaf, 0x5f, 0x6b, 0xe, - 0x7a, 0x54, 0x6d, 0xa7, 0xf3, 0xd2, 0xb2, 0x96, 0x5f, 0x85, - 0x96, 0xf4, 0xd1, 0x8c, 0xb2, 0xbc, 0x14, 0xb7, 0xa4, 0xbf, - 0x2f, 0xc8, 0xf1, 0xb9, 0x3c, 0x3f, 0xad, 0x46, 0xf, 0xfc, - 0x49, 0x22, 0x9b, 0xfe, 0xb9, 0xdd, 0x28, 0xfe, 0x62, 0xa1, - 0x3a, 0x1e, 0xb3, 0xff, 00, 0x42, 0xf0, 0xff, 00, 0xc0, - 0xb8, 0xeb, 0xd9, 0x5a, 0xc3, 0x27, 0xa5, 0x46, 0xd6, 0x18, - 0xed, 0x59, 0x7f, 0x65, 0x60, 0xff, 00, 0x93, 0xf1, 0x7f, - 0xe6, 0x61, 0xfd, 0x8b, 0x80, 0xff, 00, 0x9f, 0x7f, 0x8c, - 0xbf, 0xcc, 0xf1, 0xa6, 0xd1, 0x35, 0x35, 0xff, 00, 0x5b, - 0xa0, 0xc8, 0xbf, 0xf5, 0xce, 0x64, 0x7f, 0xeb, 0x50, 0x3d, - 0x9b, 0x27, 0xfa, 0xcd, 0x1b, 0x50, 0x5f, 0x75, 0xb7, 0xdc, - 0x3f, 0x30, 0x6b, 0xda, 0x4d, 0x87, 0xb1, 0xa6, 0x3d, 0x87, - 0x1d, 0x2b, 0x37, 0x94, 0xe1, 0x5e, 0xc9, 0xaf, 0x9b, 0x32, - 0x96, 0x45, 0x82, 0x96, 0xd1, 0x6b, 0xe6, 0xff, 00, 0x53, - 0xc4, 0x5c, 0x58, 0xa7, 0xfa, 0xd8, 0x2e, 0x20, 0xff, 00, - 0xae, 0x96, 0xec, 0x2a, 0x6, 0xb8, 0xd1, 0x73, 0xff, 00, - 0x1f, 0x3, 0xfe, 0xfd, 0x3f, 0xf8, 0x57, 0xb8, 0x9b, 0xf, - 0x6a, 0x63, 0x58, 0xe3, 0x8c, 0x56, 0x2f, 0x25, 0xc3, 0xbf, - 0xb5, 0x2f, 0xbd, 0x7f, 0x91, 0x83, 0xe1, 0xec, 0x2b, 0xda, - 0x52, 0xfb, 0xd7, 0xf9, 0x1e, 0x1d, 0xbf, 0x47, 0x73, 0x81, - 0x72, 0xbf, 0x8a, 0x30, 0xfe, 0x94, 0xa2, 0xcf, 0x4b, 0x97, - 0xa5, 0xcd, 0xbf, 0xfc, 0x9, 0x80, 0xfe, 0x75, 0xed, 0xa6, - 0xc7, 0x8e, 0x95, 0x19, 0xb1, 0xf6, 0xa8, 0x79, 0x2d, 0x1e, - 0x93, 0x7f, 0x87, 0xf9, 0x19, 0xcb, 0x87, 0x68, 0x7d, 0x99, - 0xcb, 0xf0, 0xff, 00, 0x23, 0xc6, 0x46, 0x81, 0x67, 0x29, - 0xf9, 0x1e, 0x7, 0xff, 00, 0x75, 0x81, 0xfe, 0xb4, 0xa7, - 0xc2, 0x71, 0x91, 0x91, 0x1a, 0x91, 0xec, 0x2b, 0xd7, 0x27, - 0xd1, 0xe1, 0x9f, 0xfd, 0x64, 0x9, 0x27, 0xfb, 0xca, 0xd, - 0x50, 0x9b, 0xc2, 0x3a, 0x5c, 0xbf, 0x7b, 0x4d, 0xb6, 0x27, - 0xd7, 0xca, 0x51, 0xfd, 0x2b, 0x17, 0x91, 0xf6, 0xab, 0xf8, - 0x7f, 0xc1, 0x39, 0xdf, 0xe, 0x7f, 0x2d, 0x6f, 0xc3, 0xfe, - 0x9, 0xe5, 0x8f, 0xe0, 0xf8, 0xdb, 0xac, 0x2a, 0x7f, 0xa, - 0xae, 0xde, 0xb, 0x80, 0x9f, 0xf5, 0x9, 0xf9, 0x57, 0xa7, - 0x4b, 0xe0, 0xd, 0x16, 0x5f, 0xbd, 0xa7, 0xa0, 0xff, 00, - 0x75, 0x99, 0x7f, 0x91, 0xaa, 0xe7, 0xe1, 0xce, 0x89, 0xff, - 00, 0x3e, 0x3f, 0xf9, 0x16, 0x4f, 0xfe, 0x2a, 0xa7, 0xfb, - 0xd, 0xff, 00, 0xcf, 0xdf, 0xfc, 0x97, 0xfe, 0x9, 0x3f, - 0xea, 0xe3, 0xff, 00, 0x9f, 0xdf, 0xf9, 0x2f, 0xff, 00, - 0x6c, 0x79, 0x9b, 0x78, 0x2a, 0xf, 0xf9, 0xe0, 0x9f, 0x95, - 0x41, 0x27, 0x81, 0xe0, 0x6e, 0xb0, 0x2f, 0xe5, 0x5e, 0xa4, - 0x7e, 0x1e, 0xe9, 00, 0x7e, 0xee, 0xde, 0x48, 0xbd, 0xd2, - 0x67, 0xff, 00, 0x1a, 0x89, 0xbc, 0x5, 0x6e, 0xa7, 0xf7, - 0x77, 0xba, 0x84, 0x3e, 0xc9, 0x3f, 0xf8, 0x83, 0x52, 0xf2, - 0x49, 0xfd, 0x9a, 0x8b, 0xee, 0xff, 00, 0x82, 0x44, 0xb8, - 0x72, 0x7f, 0x66, 0xaa, 0x7f, 0x2f, 0xf8, 0x2c, 0xf2, 0x89, - 0x3c, 0x1, 0x6c, 0x4f, 0xfa, 0x85, 0xfc, 0xaa, 0x6, 0xf8, - 0x7f, 0x6c, 0x3f, 0xe5, 0x82, 0x7e, 0x5f, 0xfd, 0x7a, 0xf6, - 0x5, 0xf0, 0x68, 0x4e, 0x9a, 0x8d, 0xf1, 0xff, 00, 0x79, - 0x90, 0xff, 00, 0x34, 0xa6, 0xcb, 0xe1, 0x49, 0x4f, 0xdc, - 0xd4, 0xae, 0x7, 0xfb, 0xd1, 0xc6, 0x7f, 0xf6, 0x51, 0x5c, - 0xef, 0x25, 0xaf, 0xd1, 0xc7, 0xf1, 0xff, 00, 0x23, 0x95, - 0xf0, 0xee, 0x27, 0xa4, 0xa3, 0xf8, 0xff, 00, 0x91, 0xe3, - 0x52, 0x7c, 0x3c, 0xb6, 0x6f, 0xf9, 0x64, 0xbf, 0x95, 0x54, - 0x93, 0xe1, 0xad, 0xab, 0x7f, 0xcb, 0x21, 0xf9, 0x57, 0xb2, - 0x4b, 0xe1, 0x1d, 0x47, 0xaa, 0x6a, 0xff, 00, 0x83, 0xda, - 0xaf, 0xf4, 0xa8, 0x5b, 0xc3, 0x7a, 0xca, 0x1f, 0x92, 0xe2, - 0xce, 0x5f, 0xfa, 0xe9, 0x1b, 0x2f, 0xf2, 0xa8, 0x96, 0x4b, - 0x88, 0x5f, 0xca, 0xfe, 0x7f, 0xf0, 0xc, 0xe5, 0xc3, 0xf8, - 0xa5, 0xfc, 0xaf, 0xe6, 0xff, 00, 0xc8, 0xf1, 0x87, 0xf8, - 0x67, 0x6f, 0xda, 0x24, 0xff, 00, 0xbe, 0x7f, 0xfa, 0xf5, - 0x5e, 0x4f, 0x86, 0x10, 0x37, 0x58, 0x53, 0xfe, 0xf9, 0xff, - 00, 0xeb, 0xd7, 0xb5, 0x36, 0x83, 0xae, 0xff, 00, 0x77, - 0x4c, 0xfc, 0xe4, 0xa6, 0x1d, 0x3, 0x5b, 0x1c, 0xb4, 0x7a, - 0x73, 0xfb, 0x2b, 0x48, 0x3f, 0x98, 0xac, 0xbf, 0xb1, 0xf1, - 0x1f, 0xca, 0xbe, 0xf3, 0x1f, 0xec, 0xc, 0x5f, 0xf2, 0x2f, - 0xbc, 0xf0, 0xd9, 0x3e, 0x15, 0x5b, 0x9e, 0x91, 0x2f, 0xe4, - 0x2a, 0xac, 0xbf, 0xa, 0x62, 0xed, 0xa, 0x7e, 0x22, 0xbd, - 0xe1, 0xb4, 0xbd, 0x51, 0x3a, 0xe9, 0x51, 0xcb, 0xff, 00, - 0x5c, 0xee, 00, 0xfe, 0x62, 0xa2, 0x6b, 0x4b, 0xb4, 0xff, - 00, 0x5b, 0xa2, 0xdc, 0x1, 0xff, 00, 0x4c, 0xe4, 0x57, - 0xfe, 0x55, 0x8c, 0xb2, 0x9c, 0x42, 0xff, 00, 0x97, 0x7f, - 0x8a, 0xff, 00, 0x33, 0x9e, 0x59, 0x1e, 0x2e, 0x3f, 0xf2, - 0xe7, 0xf1, 0x5f, 0xe6, 0x7c, 0xfb, 0x79, 0xf0, 0x9a, 0x32, - 0x87, 0x10, 0x26, 0x7d, 0x87, 0xff, 00, 0x5e, 0xb9, 0x6d, - 0x5b, 0xe1, 0x4b, 0x46, 0x9, 0x58, 0x94, 0x7d, 0x5, 0x7d, - 0x4b, 0x22, 0x2, 0x30, 0x74, 0x8d, 0x48, 0x1f, 0x68, 0x32, - 0x3f, 0x9d, 0x54, 0x97, 0x4d, 0x6b, 0xaf, 0x91, 0x34, 0x9b, - 0xf2, 0xc7, 0xfe, 0x7a, 0x43, 0xb0, 0x7e, 0x66, 0xb9, 0xde, - 0x53, 0x5e, 0x5a, 0x7b, 0x36, 0x72, 0xcb, 0x24, 0xc4, 0xcf, - 0x4f, 0x62, 0xd1, 0xf1, 0xa6, 0xa7, 0xe0, 0x79, 0xec, 0x89, - 0xca, 0x2, 0x2b, 0x16, 0x4d, 0xb, 0x1f, 0xc3, 0x5f, 0x69, - 0xdd, 0x7c, 0x21, 0xb8, 0xd6, 0x41, 0x32, 0xc3, 0x15, 0xa0, - 0x27, 0xee, 0x3c, 0xb9, 0x3f, 0xa0, 0x35, 0xbd, 0xe1, 0x9f, - 0x82, 0x3e, 0x1f, 0xd0, 0x65, 0x13, 0x8b, 0x63, 0x25, 0xcb, - 0xf, 0x9c, 0xee, 0x38, 0xe9, 0xd8, 0xf5, 0x3, 0xe8, 0x79, - 0xa5, 0x4f, 0x87, 0x71, 0xb3, 0x9a, 0xe6, 0x92, 0x8c, 0x7e, - 0xf7, 0xf7, 0x2f, 0xf3, 0x42, 0xa5, 0xc2, 0x99, 0x85, 0x4a, - 0x8b, 0x9a, 0x6a, 0x11, 0xfb, 0xdf, 0xc9, 0x2d, 0x3f, 0x14, - 0x7c, 0x87, 0xe0, 0xf, 0x80, 0xba, 0xa7, 0x8d, 0xef, 0x62, - 0xdf, 0x4, 0x96, 0xd6, 0x6e, 0x37, 0x89, 0x36, 0xae, 0xe9, - 00, 0x23, 0x20, 0x2, 0xc3, 00, 0x8f, 0xe2, 0x3c, 0x7d, - 0x6b, 0xec, 0xbf, 0x87, 0x3f, 0x9, 0xb4, 0x1f, 00, 0x69, - 0xf1, 0x47, 0xa7, 0xe9, 0xf1, 0x45, 0x3f, 0x56, 0x93, 0x6f, - 0xcd, 0x9f, 0x72, 0x49, 0xc9, 0x1e, 0xa4, 0x93, 0xf8, 0x71, - 0x5d, 0xa5, 0xa6, 0x9e, 0x96, 0xf1, 0xac, 0x71, 0xc6, 0x23, - 0x8d, 0x46, 0x15, 0x54, 0x60, 0xa, 0xd2, 0x82, 0xd7, 0xa7, - 0x15, 0xf6, 0xd8, 0x1c, 0xba, 0x8e, 0x6, 0x36, 0x8e, 0xb2, - 0xea, 0xdf, 0xf5, 0xa2, 0x3f, 0x44, 0xcb, 0x72, 0x9a, 0x19, - 0x6c, 0x2d, 0xf, 0x7a, 0x5d, 0x64, 0xf7, 0xf9, 0x76, 0x5f, - 0xd3, 0xb8, 0xb6, 0x90, 0xf2, 0x38, 0xad, 0xcb, 0x48, 0x78, - 0x1c, 0x54, 0x16, 0x96, 0xdd, 0x38, 0xad, 0xab, 0x4b, 0x7e, - 0x9c, 0x57, 0xaa, 0x7b, 0x65, 0x8b, 0x38, 0xb0, 0x7, 0x6, - 0xb7, 0x2c, 0xa3, 0x1e, 0x86, 0xa9, 0xda, 0xc1, 0xd3, 0x8a, - 0xd9, 0xb4, 0x88, 0xc, 0x71, 0x40, 0x16, 0x6d, 0xd4, 0x56, - 0x84, 0x2a, 0x2a, 0x8, 0x53, 0xa5, 0x5c, 0x8d, 0x68, 0x2, - 0x48, 0xea, 0x5d, 0xb9, 0xa6, 0xa8, 0xc5, 0x49, 0x40, 0xf, - 0xa4, 0xa5, 0xa2, 0x80, 0x1a, 0x46, 0x29, 0x31, 0x4f, 0xa4, - 0x23, 0x34, 0x1, 0x19, 0x5a, 0x69, 0x5c, 0xd4, 0xa4, 0x62, - 0x92, 0x80, 0x21, 0x29, 0x9a, 0x69, 0x8e, 0xa7, 0xc5, 0x26, - 0xda, 00, 0xac, 0xd1, 0xe6, 0x93, 0xca, 0xab, 0x5b, 0x29, - 0x36, 0x7b, 0x50, 0x5, 0x46, 0x84, 0x53, 0x4c, 0x23, 0xd2, - 0xae, 0x94, 0xa6, 0x94, 0xf6, 0xa0, 0xa, 0x46, 0x1f, 0x6a, - 0x69, 0xb7, 0xab, 0xbe, 0x5d, 0x1e, 0x5d, 00, 0x67, 0xb5, - 0xb8, 0xf4, 0xa6, 0x9b, 0x7c, 0xf6, 0xad, 0xf, 0x2a, 0x93, - 0xca, 0xa0, 0xc, 0xf3, 0x6d, 0x4c, 0x6b, 0x70, 0x3b, 0x56, - 0x97, 0x95, 0x48, 0x61, 0xa0, 0xc, 0xc3, 0x6c, 0xd, 0x27, - 0xd9, 0x6b, 0x4f, 0xc9, 0xa6, 0x98, 0x7d, 0xa8, 0x3, 0x2c, - 0xda, 0xf, 0x4a, 0x61, 0xb4, 0x6, 0xb5, 0x8c, 0x3e, 0xd4, - 0xd3, 0x6, 0x4d, 00, 0x64, 0x35, 0x9f, 0xb5, 0x30, 0xd9, - 0xfb, 0x56, 0xc1, 0xb7, 0xf6, 0xa6, 0x1b, 0x7f, 0x6a, 00, - 0xc6, 0x36, 0x74, 0xc6, 0xb3, 0xe3, 0xa5, 0x6d, 0x9b, 0x6f, - 0x6a, 0x69, 0xb6, 0xf6, 0xa0, 0xc, 0x33, 0x65, 0x4d, 0x36, - 0x5e, 0xd5, 0xb7, 0xf6, 0x6f, 0xf3, 0x8a, 0x43, 0x6d, 0xed, - 0x40, 0x18, 0x4d, 0x65, 0xcf, 0x4a, 0x8d, 0xac, 0xb8, 0xad, - 0xf3, 0x6b, 0x9a, 0x8c, 0xda, 0xfb, 0x62, 0x80, 0x30, 0xd, - 0x97, 0xb5, 0x46, 0x6c, 0x87, 0xa6, 0x6b, 0xa1, 0x36, 0x75, - 0x19, 0xb3, 0xa0, 0xe, 0x79, 0xac, 0x46, 0x7a, 0x53, 0x1a, - 0xc7, 0x3d, 0xab, 0xa1, 0x6b, 0x3e, 0x7a, 0x53, 0xd, 0x9d, - 00, 0x73, 0xc6, 0xc4, 0xa, 0x63, 0x58, 0x7b, 0x57, 0x42, - 0x6c, 0x8e, 0x7a, 0x53, 0x4d, 0x91, 0xf4, 0xa0, 0xe, 0x74, - 0xd8, 0x7b, 0x1a, 0x8d, 0xac, 0x7d, 0xab, 0xa4, 0x36, 0x47, - 0x1d, 0x2a, 0x33, 0x64, 0x7d, 0x28, 0x3, 0x9b, 0x6b, 0x1, - 0x8e, 0x95, 0x19, 0xb0, 0xae, 0x91, 0xac, 0x4e, 0x7a, 0x53, - 0x1a, 0xc8, 0xfa, 0x50, 0x7, 0x34, 0x6c, 0x3d, 0xaa, 0x23, - 0x61, 0x9e, 0xd5, 0xd3, 0x1b, 0x1c, 0x8e, 0x95, 0x19, 0xb1, - 0xf6, 0xa0, 0xe, 0x64, 0xd8, 0x73, 0xd2, 0x9a, 0x6c, 0x3d, - 0xab, 0xa4, 0x3a, 0x7f, 0xb5, 0x31, 0xac, 0x7d, 0xa8, 0x3, - 0x9a, 0x36, 0x39, 0xed, 0x4c, 0x36, 0x1e, 0xdf, 0xa5, 0x74, - 0xa6, 0xc0, 0xfa, 0x53, 0xd, 0x87, 0xb1, 0xa0, 0xe, 0x64, - 0xd8, 0xf3, 0x51, 0xb5, 0x8f, 0x3f, 0xfd, 0x6a, 0xe9, 0x8d, - 0x81, 0xf4, 0xfd, 0x2a, 0x33, 0x60, 0x7d, 0x3f, 0x4a, 00, - 0xe6, 0x9a, 0xc7, 0xdb, 0x35, 0x13, 0x58, 0xd7, 0x4c, 0xd6, - 0x7, 0x3d, 0x3f, 0x4a, 0x89, 0xac, 0xe, 0x7a, 0x50, 0x7, - 0x36, 0x6c, 0x7d, 0xaa, 0x36, 0xb2, 0xcf, 0x6a, 0xe9, 0x1a, - 0xc0, 0xfa, 0x53, 0xe, 0x9e, 0x7d, 0x28, 0x3, 0x9c, 0x36, - 0x47, 0xd2, 0x9a, 0x6c, 0xcf, 0xa5, 0x74, 0x67, 0x4f, 0x3e, - 0x94, 0xd3, 0xa7, 0x9f, 0x43, 0x40, 0x1c, 0xef, 0xd9, 0x39, - 0xa5, 0x16, 0x5e, 0xd5, 0xd0, 0x7f, 0x67, 0x9f, 0x4f, 0xd2, - 0x94, 0x69, 0xe7, 0x3d, 0x3f, 0x4a, 00, 0xc1, 0x5b, 0x2c, - 0xf6, 0xa9, 0xa3, 0xb2, 0xe7, 0xa5, 0x6d, 0x2e, 0x9e, 0x7d, - 0x3f, 0x4a, 0x95, 0x2c, 0x8, 0x3d, 0x28, 0x3, 0x2e, 0x1b, - 0x2f, 0x6a, 0xbf, 0x5, 0x9f, 0x3d, 0x2a, 0xfc, 0x56, 0x24, - 0x1e, 0x95, 0x7a, 0xb, 0x2c, 0xf6, 0xa0, 0xa, 0xd6, 0xb6, - 0x7c, 0x8e, 0x2b, 0x5e, 0xda, 0xd7, 0x15, 0x25, 0xb5, 0x9e, - 0x3b, 0x56, 0x94, 0x16, 0xf8, 0xa0, 0x6, 0xdb, 0xdb, 0xf4, - 0xe2, 0xb5, 0x2d, 0xe1, 0xc6, 0x29, 0xb0, 0xc1, 0x8c, 0x55, - 0xd8, 0xa2, 0xc5, 00, 0x3e, 0x38, 0xfa, 0x55, 0x94, 0x4a, - 0x6a, 0x28, 0xa9, 0x80, 0xc5, 00, 0x2a, 0x8a, 0x75, 0x1d, - 0x29, 0xc2, 0x80, 0x16, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x4, 0x23, 0x34, 0x9b, 0x69, - 0xd4, 0x50, 0x3, 0x76, 0xd1, 0xb6, 0x9d, 0x45, 00, 0x37, - 0x6, 0x93, 0x14, 0xfa, 0x4c, 0xa, 00, 0x66, 0xd1, 0x46, - 0xda, 0x7e, 0xda, 0x36, 0xd0, 0x3, 0x36, 0xd1, 0xb6, 0x9d, - 0xb6, 0x8d, 0xb4, 00, 0xcd, 0xb4, 0x14, 0xcd, 0x3f, 0x6d, - 0x1b, 0x68, 0x2, 0x3f, 0x2e, 0x90, 0xa0, 0x15, 0x2e, 0xd, - 0x21, 0x1e, 0xb4, 0x1, 0xe, 0xca, 0x3c, 0xbf, 0x6a, 0x97, - 0x2, 0x8c, 0xa, 00, 0x84, 0xc7, 0x9a, 0x4f, 0x2e, 0xa7, - 0xda, 0x28, 0xdb, 0x40, 0x15, 0xfc, 0xba, 0x4f, 0x2a, 0xac, - 0xed, 0xa3, 0x6d, 00, 0x55, 0xf2, 0x85, 0x21, 0x88, 0x7a, - 0x55, 0xad, 0x94, 0x85, 0x28, 0x2, 0xa7, 0x95, 0x4d, 0x30, - 0x83, 0x56, 0xf6, 0x51, 0xb3, 0xda, 0x80, 0x29, 0x98, 0x5, - 0x30, 0xc1, 0x9e, 0xd5, 0x78, 0xa5, 0x37, 0xcb, 0xf6, 0xa0, - 0xa, 0x5f, 0x67, 0x1e, 0x94, 0x86, 0xdc, 0x55, 0xef, 0x2a, - 0x93, 0xca, 0xa0, 0xc, 0xf3, 0x6c, 0x33, 0x4d, 0x36, 0xc2, - 0xb4, 0x4c, 0x5e, 0xd4, 0x9e, 0x58, 0xa0, 0xc, 0xe3, 0x6d, - 0x4c, 0x36, 0xa3, 0xd2, 0xb4, 0x8c, 0x54, 0x9e, 0x55, 00, - 0x65, 0x9b, 0x40, 0x69, 0xad, 0x68, 0x3d, 0x2b, 0x54, 0xc3, - 0x4d, 0x30, 0xe3, 0xb5, 00, 0x64, 0x1b, 0x41, 0xf5, 0xa6, - 0x1b, 0x31, 0x5a, 0xfe, 0x45, 0x27, 0xd9, 0xe8, 0x3, 0x1c, - 0xd9, 0x8c, 0x74, 0xa8, 0xcd, 0x97, 0xb5, 0x6d, 0x9b, 0x7f, - 0x6a, 0x61, 0x82, 0x80, 0x31, 0x8d, 0x9f, 0xb5, 0x46, 0xd6, - 0x43, 0x3d, 0x2b, 0x6f, 0xec, 0xc3, 0xd2, 0x90, 0xdb, 0x7b, - 0x50, 0x6, 0x13, 0x59, 0xf1, 0xd2, 0xa3, 0x36, 0x5c, 0x74, - 0xad, 0xe6, 0xb6, 0xfc, 0x29, 0x86, 0xdb, 0x8e, 0x94, 0x1, - 0x80, 0x6c, 0xea, 0x36, 0xb3, 0xe7, 0xa5, 0x74, 0x6, 0xd3, - 0xda, 0x98, 0xd6, 0x63, 0xd2, 0x80, 0x39, 0xf3, 0x62, 0xf, - 0x6a, 0x63, 0x58, 0x81, 0xda, 0xba, 0x3, 0x68, 0x3d, 0x29, - 0xd, 0x9f, 0xe1, 0x40, 0x1c, 0xf1, 0xb2, 0x1e, 0x94, 0xd3, - 0x62, 0xf, 0x6a, 0xe8, 0xd, 0x88, 0xa4, 0x36, 0x34, 0x1, - 0x81, 0xf6, 00, 0xf, 0x4a, 0x5, 0x8f, 0xb5, 0x6f, 0x1b, - 0x2f, 0x6a, 0x5, 0x97, 0xb5, 00, 0x61, 0x8b, 0x1c, 0x54, - 0xa9, 0x65, 0xed, 0x5b, 0x22, 0xce, 0xa4, 0x4b, 0x3a, 00, - 0xca, 0x4b, 0x2a, 0xb7, 0x15, 0x9e, 0x3b, 0x56, 0x82, 0xda, - 0xe0, 0x54, 0xf1, 0xdb, 0xe3, 0xb5, 00, 0x54, 0x8a, 0xdb, - 0x7, 0xa5, 0x5c, 0x8a, 0xa, 0x99, 0x21, 0xc5, 0x58, 0x48, - 0xb1, 0x40, 0x11, 0xc7, 0x16, 0x2a, 0xca, 0x25, 0x2a, 0xa6, - 0x2a, 0x55, 0x5c, 0x50, 00, 0xab, 0x8a, 0x78, 0x18, 0xa0, - 0xc, 0x52, 0x81, 0x9a, 00, 0x50, 0x29, 0xd4, 0x9d, 0x29, - 0x68, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, - 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, - 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, - 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa4, 0xc6, - 0x69, 0x68, 0xa0, 0x4, 0xc0, 0xa3, 0x2, 0x96, 0x8a, 00, - 0x4d, 0xb4, 0x9b, 0x69, 0xd4, 0x50, 0x3, 0x76, 0xd1, 0xb6, - 0x9d, 0x45, 00, 0x37, 0x6d, 0x21, 0x14, 0xfa, 0x43, 0xd2, - 0x80, 0x1b, 0x8a, 0x30, 0x28, 0xa2, 0x80, 0x13, 0x2, 0x8d, - 0xb4, 0xb4, 0x50, 0x2, 0x6d, 0xa3, 0x6d, 0x2d, 0x14, 00, - 0xdd, 0x82, 0x8d, 0x94, 0xea, 0x28, 0x2, 0x32, 0x94, 0x9b, - 0x2a, 0x5a, 0xf, 0x4a, 00, 0x8b, 0x67, 0xb5, 0x21, 0x8f, - 0x34, 0xfa, 0x28, 0x2, 0x3f, 0x2b, 0xda, 0x93, 0xca, 0xa9, - 0x68, 0xa0, 0x8, 0xbc, 0xaf, 0x6a, 0x69, 0x8b, 0xda, 0xa7, - 0xa6, 0xd0, 0x4, 0x26, 0x2e, 0x3a, 0x53, 0x7c, 0xaa, 0xb1, - 0x45, 00, 0x56, 0x30, 0xd2, 0x18, 0x2a, 0x7a, 0xf, 0x4a, - 00, 0xa8, 0x61, 0xcf, 0x6a, 0x4f, 0x22, 0xac, 0xd1, 0x40, - 0x15, 0xbe, 0xcf, 0x4d, 0x36, 0xde, 0xd5, 0x6c, 0xf4, 0xa6, - 0xd0, 0x5, 0x5f, 0xb3, 0x7b, 0x52, 0x7d, 0x9b, 0xd8, 0x55, - 0xba, 0x28, 0x2, 0x9f, 0xd9, 0x7d, 0xa8, 0xfb, 0x3f, 0xb5, - 0x5c, 0xa4, 0x3d, 0x28, 0x2, 0xaf, 0xd9, 0xfd, 0xa9, 0xe2, - 0xe, 0x6a, 0xc5, 0x2a, 0xf5, 0xa0, 0x8, 0x44, 0x19, 0x15, - 0x22, 0xc5, 0xed, 0x52, 0xaf, 0x4a, 0x51, 0xd6, 0x80, 0x1a, - 0x23, 0xa9, 0x42, 0x62, 0x9c, 0x3a, 0x53, 0x97, 0xa5, 00, - 0x34, 0x2d, 0x3c, 0xc, 0x51, 0x45, 00, 0x28, 0x19, 0xa5, - 0xa0, 0x74, 0xa5, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0xf, 0xff, - 0xd9, 0}; - -static const unsigned char data_stats_shtml[] = { - /* /stats.shtml */ - 0x2f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x20, 0x62, 0x67, 0x63, 0x6f, 0x6c, 0x6f, - 0x72, 0x3d, 0x22, 0x77, 0x68, 0x69, 0x74, 0x65, 0x22, 0x3e, - 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, - 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, - 0x3e, 0xd, 0xa, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, - 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x52, 0x54, 0x4f, 0x53, 0x20, - 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, - 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, - 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, - 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, - 0x3e, 0x54, 0x43, 0x50, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, - 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, - 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, - 0x66, 0x3d, 0x22, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, - 0x6d, 0x6c, 0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, - 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, - 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, - 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, - 0x72, 0x65, 0x65, 0x72, 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x22, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, - 0x4f, 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x48, 0x6f, 0x6d, - 0x65, 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x20, - 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, - 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6f, - 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x49, 0x4f, - 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, - 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, - 0x66, 0x3d, 0x22, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2e, 0x68, - 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x4c, 0x61, 0x72, 0x67, 0x65, - 0x20, 0x4a, 0x50, 0x47, 0x3c, 0x2f, 0x61, 0x3e, 0xd, 0xa, - 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, - 0x68, 0x72, 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, - 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x32, 0x3e, 0x4e, 0x65, - 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x20, 0x73, 0x74, 0x61, 0x74, - 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x3c, 0x2f, 0x68, 0x32, - 0x3e, 0xd, 0xa, 0x3c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, - 0x77, 0x69, 0x64, 0x74, 0x68, 0x3d, 0x22, 0x33, 0x30, 0x30, - 0x22, 0x20, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x3d, 0x22, - 0x30, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x74, 0x72, 0x3e, 0x3c, - 0x74, 0x64, 0x20, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x3d, 0x22, - 0x6c, 0x65, 0x66, 0x74, 0x22, 0x3e, 0x3c, 0x66, 0x6f, 0x6e, - 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x63, 0x6f, - 0x75, 0x72, 0x69, 0x65, 0x72, 0x22, 0x3e, 0x3c, 0x70, 0x72, - 0x65, 0x3e, 0xd, 0xa, 0x49, 0x50, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, - 0x6b, 0x65, 0x74, 0x73, 0x20, 0x64, 0x72, 0x6f, 0x70, 0x70, - 0x65, 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, - 0x6b, 0x65, 0x74, 0x73, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, - 0x76, 0x65, 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, - 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, - 0xd, 0xa, 0x49, 0x50, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, - 0x73, 0x20, 0x20, 0x20, 0x20, 0x49, 0x50, 0x20, 0x76, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x2f, 0x68, 0x65, 0x61, 0x64, - 0x65, 0x72, 0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0xd, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x49, 0x50, 0x20, 0x6c, 0x65, 0x6e, - 0x67, 0x74, 0x68, 0x2c, 0x20, 0x68, 0x69, 0x67, 0x68, 0x20, - 0x62, 0x79, 0x74, 0x65, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x49, - 0x50, 0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x2c, 0x20, - 0x6c, 0x6f, 0x77, 0x20, 0x62, 0x79, 0x74, 0x65, 0xd, 0xa, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x49, 0x50, 0x20, 0x66, 0x72, 0x61, 0x67, - 0x6d, 0x65, 0x6e, 0x74, 0x73, 0xd, 0xa, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, 0x63, 0x68, 0x65, - 0x63, 0x6b, 0x73, 0x75, 0x6d, 0xd, 0xa, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x57, 0x72, 0x6f, 0x6e, 0x67, 0x20, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x63, 0x6f, 0x6c, 0xd, 0xa, 0x49, 0x43, 0x4d, 0x50, - 0x9, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x73, 0x20, 0x64, 0x72, 0x6f, 0x70, 0x70, 0x65, - 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x73, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, - 0x65, 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, - 0x6b, 0x65, 0x74, 0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, 0xd, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x54, 0x79, 0x70, 0x65, 0x20, 0x65, - 0x72, 0x72, 0x6f, 0x72, 0x73, 0xd, 0xa, 0x54, 0x43, 0x50, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x64, 0x72, - 0x6f, 0x70, 0x70, 0x65, 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x72, 0x65, - 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0xd, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x73, - 0x65, 0x6e, 0x74, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x43, 0x68, - 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x20, 0x65, 0x72, 0x72, - 0x6f, 0x72, 0x73, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x44, 0x61, - 0x74, 0x61, 0x20, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, - 0x20, 0x77, 0x69, 0x74, 0x68, 0x6f, 0x75, 0x74, 0x20, 0x41, - 0x43, 0x4b, 0x73, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x52, 0x65, - 0x73, 0x65, 0x74, 0x73, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x52, - 0x65, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x73, 0x73, - 0x69, 0x6f, 0x6e, 0x73, 0xd, 0xa, 0x9, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x4e, 0x6f, 0x20, 0x63, 0x6f, 0x6e, 0x6e, 0x65, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x61, 0x76, 0x61, 0x6c, - 0x69, 0x61, 0x62, 0x6c, 0x65, 0xd, 0xa, 0x9, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x20, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, - 0x74, 0x73, 0x20, 0x74, 0x6f, 0x20, 0x63, 0x6c, 0x6f, 0x73, - 0x65, 0x64, 0x20, 0x70, 0x6f, 0x72, 0x74, 0x73, 0xd, 0xa, - 0x3c, 0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, 0x6f, - 0x6e, 0x74, 0x3e, 0x3c, 0x2f, 0x74, 0x64, 0x3e, 0x3c, 0x74, - 0x64, 0x3e, 0x3c, 0x70, 0x72, 0x65, 0x3e, 0x25, 0x21, 0x20, - 0x6e, 0x65, 0x74, 0x2d, 0x73, 0x74, 0x61, 0x74, 0x73, 0xd, - 0xa, 0x3c, 0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x74, - 0x61, 0x62, 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x66, - 0x6f, 0x6e, 0x74, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x62, 0x6f, - 0x64, 0x79, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, - 0x6c, 0x3e, 0xd, 0xa, 0}; - -static const unsigned char data_tcp_shtml[] = { - /* /tcp.shtml */ - 0x2f, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x20, 0x62, 0x67, 0x63, 0x6f, 0x6c, 0x6f, - 0x72, 0x3d, 0x22, 0x77, 0x68, 0x69, 0x74, 0x65, 0x22, 0x3e, - 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, - 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, - 0x3e, 0xd, 0xa, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, - 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x52, 0x54, 0x4f, 0x53, 0x20, - 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, - 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, - 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, - 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, - 0x3e, 0x54, 0x43, 0x50, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, - 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, - 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, - 0x66, 0x3d, 0x22, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, - 0x6d, 0x6c, 0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, - 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, - 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, - 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, - 0x72, 0x65, 0x65, 0x72, 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x22, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, - 0x4f, 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x48, 0x6f, 0x6d, - 0x65, 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x20, - 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, - 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6f, - 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x49, 0x4f, - 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, - 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, - 0x66, 0x3d, 0x22, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2e, 0x68, - 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x4c, 0x61, 0x72, 0x67, 0x65, - 0x20, 0x4a, 0x50, 0x47, 0x3c, 0x2f, 0x61, 0x3e, 0xd, 0xa, - 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, - 0x68, 0x72, 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0xd, - 0xa, 0x3c, 0x68, 0x32, 0x3e, 0x4e, 0x65, 0x74, 0x77, 0x6f, - 0x72, 0x6b, 0x20, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0xd, - 0xa, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x74, 0x61, 0x62, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x3c, 0x74, 0x72, 0x3e, 0x3c, - 0x74, 0x68, 0x3e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x3c, 0x2f, - 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x52, 0x65, 0x6d, - 0x6f, 0x74, 0x65, 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, - 0x68, 0x3e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x3c, 0x2f, 0x74, - 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x52, 0x65, 0x74, 0x72, - 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, - 0x73, 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, - 0x54, 0x69, 0x6d, 0x65, 0x72, 0x3c, 0x2f, 0x74, 0x68, 0x3e, - 0x3c, 0x74, 0x68, 0x3e, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x3c, - 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x2f, 0x74, 0x72, 0x3e, 0xd, - 0xa, 0x25, 0x21, 0x20, 0x74, 0x63, 0x70, 0x2d, 0x63, 0x6f, - 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0xd, - 0xa, 0x3c, 0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, - 0x6f, 0x6e, 0x74, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, - 0x6e, 0x74, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, - 0x79, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, - 0x3e, 0xd, 0xa, 0xd, 0xa, 0}; - -const struct httpd_fsdata_file file_404_html[] = {{NULL, data_404_html, data_404_html + 10, sizeof(data_404_html) - 10}}; - -const struct httpd_fsdata_file file_image_html[] = {{file_404_html, data_image_html, data_image_html + 12, sizeof(data_image_html) - 12}}; - -const struct httpd_fsdata_file file_image_jpg[] = {{file_image_html, data_image_jpg, data_image_jpg + 11, sizeof(data_image_jpg) - 11}}; - -const struct httpd_fsdata_file file_index_html[] = {{file_image_jpg, data_index_html, data_index_html + 12, sizeof(data_index_html) - 12}}; - -const struct httpd_fsdata_file file_index_shtml[] = {{file_index_html, data_index_shtml, data_index_shtml + 13, sizeof(data_index_shtml) - 13}}; - -const struct httpd_fsdata_file file_io_shtml[] = {{file_index_shtml, data_io_shtml, data_io_shtml + 10, sizeof(data_io_shtml) - 10}}; - -const struct httpd_fsdata_file file_logo_jpg[] = {{file_io_shtml, data_logo_jpg, data_logo_jpg + 10, sizeof(data_logo_jpg) - 10}}; - -const struct httpd_fsdata_file file_stats_shtml[] = {{file_logo_jpg, data_stats_shtml, data_stats_shtml + 13, sizeof(data_stats_shtml) - 13}}; - -const struct httpd_fsdata_file file_tcp_shtml[] = {{file_stats_shtml, data_tcp_shtml, data_tcp_shtml + 11, sizeof(data_tcp_shtml) - 11}}; - -#define HTTPD_FS_ROOT file_tcp_shtml - -#define HTTPD_FS_NUMFILES 9 diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/httpd-fsdata.h b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/httpd-fsdata.h deleted file mode 100644 index 73a9994da..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/httpd-fsdata.h +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright (c) 2001, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - * $Id: httpd-fsdata.h,v 1.1 2006/06/07 09:13:08 adam Exp $ - */ -#ifndef __HTTPD_FSDATA_H__ -#define __HTTPD_FSDATA_H__ - -#include "uip.h" - -struct httpd_fsdata_file { - const struct httpd_fsdata_file *next; - const unsigned char *name; - const unsigned char *data; - const int len; -#ifdef HTTPD_FS_STATISTICS -#if HTTPD_FS_STATISTICS == 1 - u16_t count; -#endif /* HTTPD_FS_STATISTICS */ -#endif /* HTTPD_FS_STATISTICS */ -}; - -struct httpd_fsdata_file_noconst { - struct httpd_fsdata_file *next; - char *name; - char *data; - int len; -#ifdef HTTPD_FS_STATISTICS -#if HTTPD_FS_STATISTICS == 1 - u16_t count; -#endif /* HTTPD_FS_STATISTICS */ -#endif /* HTTPD_FS_STATISTICS */ -}; - -#endif /* __HTTPD_FSDATA_H__ */ diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/httpd.c b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/httpd.c deleted file mode 100644 index 3fcf378c9..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/httpd.c +++ /dev/null @@ -1,346 +0,0 @@ -/** - * \addtogroup apps - * @{ - */ - -/** - * \defgroup httpd Web server - * @{ - * The uIP web server is a very simplistic implementation of an HTTP - * server. It can serve web pages and files from a read-only ROM - * filesystem, and provides a very small scripting language. - - */ - -/** - * \file - * Web server - * \author - * Adam Dunkels - */ - - -/* - * Copyright (c) 2004, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * Author: Adam Dunkels - * - * $Id: httpd.c,v 1.2 2006/06/11 21:46:38 adam Exp $ - */ - -#include "uip.h" -#include "httpd.h" -#include "httpd-fs.h" -#include "httpd-cgi.h" -#include "http-strings.h" - -#include - -#define STATE_WAITING 0 -#define STATE_OUTPUT 1 - -#define ISO_nl 0x0a -#define ISO_space 0x20 -#define ISO_bang 0x21 -#define ISO_percent 0x25 -#define ISO_period 0x2e -#define ISO_slash 0x2f -#define ISO_colon 0x3a - - -/*---------------------------------------------------------------------------*/ -static unsigned short -generate_part_of_file(void *state) -{ - struct httpd_state *s = (struct httpd_state *)state; - - if(s->file.len > uip_mss()) { - s->len = uip_mss(); - } else { - s->len = s->file.len; - } - memcpy(uip_appdata, s->file.data, s->len); - - return s->len; -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(send_file(struct httpd_state *s)) -{ - PSOCK_BEGIN(&s->sout); - - do { - PSOCK_GENERATOR_SEND(&s->sout, generate_part_of_file, s); - s->file.len -= s->len; - s->file.data += s->len; - } while(s->file.len > 0); - - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(send_part_of_file(struct httpd_state *s)) -{ - PSOCK_BEGIN(&s->sout); - - PSOCK_SEND(&s->sout, s->file.data, s->len); - - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -static void -next_scriptstate(struct httpd_state *s) -{ - char *p; - p = strchr(s->scriptptr, ISO_nl) + 1; - s->scriptlen -= (unsigned short)(p - s->scriptptr); - s->scriptptr = p; -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(handle_script(struct httpd_state *s)) -{ - char *ptr; - - PT_BEGIN(&s->scriptpt); - - - while(s->file.len > 0) { - - /* Check if we should start executing a script. */ - if(*s->file.data == ISO_percent && - *(s->file.data + 1) == ISO_bang) { - s->scriptptr = s->file.data + 3; - s->scriptlen = s->file.len - 3; - if(*(s->scriptptr - 1) == ISO_colon) { - httpd_fs_open(s->scriptptr + 1, &s->file); - PT_WAIT_THREAD(&s->scriptpt, send_file(s)); - } else { - PT_WAIT_THREAD(&s->scriptpt, - httpd_cgi(s->scriptptr)(s, s->scriptptr)); - } - next_scriptstate(s); - - /* The script is over, so we reset the pointers and continue - sending the rest of the file. */ - s->file.data = s->scriptptr; - s->file.len = s->scriptlen; - } else { - /* See if we find the start of script marker in the block of HTML - to be sent. */ - - if(s->file.len > uip_mss()) { - s->len = uip_mss(); - } else { - s->len = s->file.len; - } - - if(*s->file.data == ISO_percent) { - ptr = strchr(s->file.data + 1, ISO_percent); - } else { - ptr = strchr(s->file.data, ISO_percent); - } - if(ptr != NULL && - ptr != s->file.data) { - s->len = (int)(ptr - s->file.data); - if(s->len >= uip_mss()) { - s->len = uip_mss(); - } - } - PT_WAIT_THREAD(&s->scriptpt, send_part_of_file(s)); - s->file.data += s->len; - s->file.len -= s->len; - - } - } - - PT_END(&s->scriptpt); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(send_headers(struct httpd_state *s, const char *statushdr)) -{ - char *ptr; - - PSOCK_BEGIN(&s->sout); - - PSOCK_SEND_STR(&s->sout, statushdr); - - ptr = strrchr(s->filename, ISO_period); - if(ptr == NULL) { - PSOCK_SEND_STR(&s->sout, http_content_type_binary); - } else if(strncmp(http_html, ptr, 5) == 0 || - strncmp(http_shtml, ptr, 6) == 0) { - PSOCK_SEND_STR(&s->sout, http_content_type_html); - } else if(strncmp(http_css, ptr, 4) == 0) { - PSOCK_SEND_STR(&s->sout, http_content_type_css); - } else if(strncmp(http_png, ptr, 4) == 0) { - PSOCK_SEND_STR(&s->sout, http_content_type_png); - } else if(strncmp(http_gif, ptr, 4) == 0) { - PSOCK_SEND_STR(&s->sout, http_content_type_gif); - } else if(strncmp(http_jpg, ptr, 4) == 0) { - PSOCK_SEND_STR(&s->sout, http_content_type_jpg); - } else { - PSOCK_SEND_STR(&s->sout, http_content_type_plain); - } - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(handle_output(struct httpd_state *s)) -{ - char *ptr; - - PT_BEGIN(&s->outputpt); - - if(!httpd_fs_open(s->filename, &s->file)) { - httpd_fs_open(http_404_html, &s->file); - strcpy(s->filename, http_404_html); - PT_WAIT_THREAD(&s->outputpt, - send_headers(s, - http_header_404)); - PT_WAIT_THREAD(&s->outputpt, - send_file(s)); - } else { - PT_WAIT_THREAD(&s->outputpt, - send_headers(s, - http_header_200)); - ptr = strchr(s->filename, ISO_period); - if(ptr != NULL && strncmp(ptr, http_shtml, 6) == 0) { - PT_INIT(&s->scriptpt); - PT_WAIT_THREAD(&s->outputpt, handle_script(s)); - } else { - PT_WAIT_THREAD(&s->outputpt, - send_file(s)); - } - } - PSOCK_CLOSE(&s->sout); - PT_END(&s->outputpt); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(handle_input(struct httpd_state *s)) -{ - PSOCK_BEGIN(&s->sin); - - PSOCK_READTO(&s->sin, ISO_space); - - - if(strncmp(s->inputbuf, http_get, 4) != 0) { - PSOCK_CLOSE_EXIT(&s->sin); - } - PSOCK_READTO(&s->sin, ISO_space); - - if(s->inputbuf[0] != ISO_slash) { - PSOCK_CLOSE_EXIT(&s->sin); - } - - if(s->inputbuf[1] == ISO_space) { - strncpy(s->filename, http_index_html, sizeof(s->filename)); - } else { - - s->inputbuf[PSOCK_DATALEN(&s->sin) - 1] = 0; - - /* Process any form input being sent to the server. */ - { - extern void vApplicationProcessFormInput( char *pcInputString, long xInputLength ); - vApplicationProcessFormInput( s->inputbuf, PSOCK_DATALEN(&s->sin) ); - } - - strncpy(s->filename, &s->inputbuf[0], sizeof(s->filename)); - } - - /* httpd_log_file(uip_conn->ripaddr, s->filename);*/ - - s->state = STATE_OUTPUT; - - while(1) { - PSOCK_READTO(&s->sin, ISO_nl); - - if(strncmp(s->inputbuf, http_referer, 8) == 0) { - s->inputbuf[PSOCK_DATALEN(&s->sin) - 2] = 0; - /* httpd_log(&s->inputbuf[9]);*/ - } - } - - PSOCK_END(&s->sin); -} -/*---------------------------------------------------------------------------*/ -static void -handle_connection(struct httpd_state *s) -{ - handle_input(s); - if(s->state == STATE_OUTPUT) { - handle_output(s); - } -} -/*---------------------------------------------------------------------------*/ -void -httpd_appcall(void) -{ - struct httpd_state *s = (struct httpd_state *)&(uip_conn->appstate); - - if(uip_closed() || uip_aborted() || uip_timedout()) { - } else if(uip_connected()) { - PSOCK_INIT(&s->sin, s->inputbuf, sizeof(s->inputbuf) - 1); - PSOCK_INIT(&s->sout, s->inputbuf, sizeof(s->inputbuf) - 1); - PT_INIT(&s->outputpt); - s->state = STATE_WAITING; - /* timer_set(&s->timer, CLOCK_SECOND * 100);*/ - s->timer = 0; - handle_connection(s); - } else if(s != NULL) { - if(uip_poll()) { - ++s->timer; - if(s->timer >= 20) { - uip_abort(); - } - } else { - s->timer = 0; - } - handle_connection(s); - } else { - uip_abort(); - } -} -/*---------------------------------------------------------------------------*/ -/** - * \brief Initialize the web server - * - * This function initializes the web server and should be - * called at system boot-up. - */ -void -httpd_init(void) -{ - uip_listen(HTONS(80)); -} -/*---------------------------------------------------------------------------*/ -/** @} */ diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/httpd.h b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/httpd.h deleted file mode 100644 index 7f7a6666e..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/httpd.h +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright (c) 2001-2005, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: httpd.h,v 1.2 2006/06/11 21:46:38 adam Exp $ - * - */ - -#ifndef __HTTPD_H__ -#define __HTTPD_H__ - -#include "psock.h" -#include "httpd-fs.h" - -struct httpd_state { - unsigned char timer; - struct psock sin, sout; - struct pt outputpt, scriptpt; - char inputbuf[50]; - char filename[20]; - char state; - struct httpd_fs_file file; - int len; - char *scriptptr; - int scriptlen; - - unsigned short count; -}; - -void httpd_init(void); -void httpd_appcall(void); - -void httpd_log(char *msg); -void httpd_log_file(u16_t *requester, char *file); - -#endif /* __HTTPD_H__ */ diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/makefsdata b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/makefsdata deleted file mode 100644 index 8d2715a8a..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/makefsdata +++ /dev/null @@ -1,78 +0,0 @@ -#!/usr/bin/perl - -open(OUTPUT, "> httpd-fsdata.c"); - -chdir("httpd-fs"); - -opendir(DIR, "."); -@files = grep { !/^\./ && !/(CVS|~)/ } readdir(DIR); -closedir(DIR); - -foreach $file (@files) { - - if(-d $file && $file !~ /^\./) { - print "Processing directory $file\n"; - opendir(DIR, $file); - @newfiles = grep { !/^\./ && !/(CVS|~)/ } readdir(DIR); - closedir(DIR); - printf "Adding files @newfiles\n"; - @files = (@files, map { $_ = "$file/$_" } @newfiles); - next; - } -} - -foreach $file (@files) { - if(-f $file) { - - print "Adding file $file\n"; - - open(FILE, $file) || die "Could not open file $file\n"; - - $file =~ s-^-/-; - $fvar = $file; - $fvar =~ s-/-_-g; - $fvar =~ s-\.-_-g; - # for AVR, add PROGMEM here - print(OUTPUT "static const unsigned char data".$fvar."[] = {\n"); - print(OUTPUT "\t/* $file */\n\t"); - for($j = 0; $j < length($file); $j++) { - printf(OUTPUT "%#02x, ", unpack("C", substr($file, $j, 1))); - } - printf(OUTPUT "0,\n"); - - - $i = 0; - while(read(FILE, $data, 1)) { - if($i == 0) { - print(OUTPUT "\t"); - } - printf(OUTPUT "%#02x, ", unpack("C", $data)); - $i++; - if($i == 10) { - print(OUTPUT "\n"); - $i = 0; - } - } - print(OUTPUT "0};\n\n"); - close(FILE); - push(@fvars, $fvar); - push(@pfiles, $file); - } -} - -for($i = 0; $i < @fvars; $i++) { - $file = $pfiles[$i]; - $fvar = $fvars[$i]; - - if($i == 0) { - $prevfile = "NULL"; - } else { - $prevfile = "file" . $fvars[$i - 1]; - } - print(OUTPUT "const struct httpd_fsdata_file file".$fvar."[] = {{$prevfile, data$fvar, "); - print(OUTPUT "data$fvar + ". (length($file) + 1) .", "); - print(OUTPUT "sizeof(data$fvar) - ". (length($file) + 1) ."}};\n\n"); -} - -print(OUTPUT "#define HTTPD_FS_ROOT file$fvars[$i - 1]\n\n"); -print(OUTPUT "#define HTTPD_FS_NUMFILES $i\n"); diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/mii.h b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/mii.h deleted file mode 100644 index 26b279341..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/mii.h +++ /dev/null @@ -1,43 +0,0 @@ -/*! - * \file mii.h - * \brief Media Independent Interface (MII) driver - * \version $Revision: 1.3 $ - * \author Michael Norman - * - * \warning This driver assumes that FEC0 is used for all MII management - * communications. For dual PHYs, etc., insure that FEC0_MDC and - * FEC0_MDIO are connected to the PHY's MDC and MDIO. - */ - -#ifndef _MII_H_ -#define _MII_H_ - -/*******************************************************************/ - -int -mii_write(int, int, uint16); - -int -mii_read(int, int, uint16*); - -void -mii_init(int); - -/* MII Speed Settings */ -typedef enum { - MII_10BASE_T, /*!< 10Base-T operation */ - MII_100BASE_TX /*!< 100Base-TX operation */ -} MII_SPEED; - -/* MII Duplex Settings */ -typedef enum { - MII_HDX, /*!< half-duplex */ - MII_FDX /*!< full-duplex */ -} MII_DUPLEX; - -#define MII_TIMEOUT 0x10000 -#define MII_LINK_TIMEOUT 0x10000 - -/*******************************************************************/ - -#endif /* _MII_H_ */ diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/uIP_Task.c b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/uIP_Task.c deleted file mode 100644 index 3109e61c0..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/uIP_Task.c +++ /dev/null @@ -1,205 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - - -/* Task that controls the uIP TCP/IP stack. */ - - -/* Standard includes. */ -#include - -/* Scheduler includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "semphr.h" - -/* uip includes. */ -#include "uip.h" -#include "uip_arp.h" -#include "httpd.h" -#include "timer.h" -#include "clock-arch.h" - -/* Demo includes. */ -#include "FEC.h" -#include "partest.h" - - -/*-----------------------------------------------------------*/ - -/* Shortcut to the header within the Rx buffer. */ -#define xHeader ((struct uip_eth_hdr *) &uip_buf[ 0 ]) - -/*-----------------------------------------------------------*/ - -/* - * Port functions required by the uIP stack. - */ -void clock_init( void ); -clock_time_t clock_time( void ); -extern void timer_set(struct timer *t, clock_time_t interval); -extern int timer_expired(struct timer *t); -extern void timer_reset(struct timer *t); - -/*-----------------------------------------------------------*/ - -/* The semaphore used by the ISR to wake the uIP task. */ -extern xSemaphoreHandle xFECSemaphore; - -/*-----------------------------------------------------------*/ - -void clock_init(void) -{ - /* This is done when the scheduler starts. */ -} -/*-----------------------------------------------------------*/ - -/* Define clock functions here to avoid header file name clash between uIP -and the Luminary Micro driver library. */ -clock_time_t clock_time( void ) -{ - return xTaskGetTickCount(); -} -/*-----------------------------------------------------------*/ - -void vuIP_Task( void *pvParameters ) -{ -portBASE_TYPE i; -uip_ipaddr_t xIPAddr; -struct timer periodic_timer, arp_timer; - - /* To prevent compiler warnings. */ - ( void ) pvParameters; - - /* Initialise the uIP stack. */ - timer_set( &periodic_timer, configTICK_RATE_HZ / 2 ); - timer_set( &arp_timer, configTICK_RATE_HZ * 10 ); - uip_init(); - uip_ipaddr( xIPAddr, configIP_ADDR0, configIP_ADDR1, configIP_ADDR2, configIP_ADDR3 ); - uip_sethostaddr( xIPAddr ); - - /* Initialise the WEB server. */ - httpd_init(); - - /* Initialise the Ethernet controller peripheral. */ - vFECInit(); - - for( ;; ) - { - /* Is there received data ready to be processed? */ - uip_len = usFECGetRxedData(); - - if( uip_len > 0 ) - { - /* Standard uIP loop taken from the uIP manual. */ - - if( xHeader->type == htons( UIP_ETHTYPE_IP ) ) - { - uip_arp_ipin(); - uip_input(); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - uip_arp_out(); - vFECSendData(); - } - else - { - /* If we are not sending data then let the FEC driver know - the buffer is no longer required. */ - vFECRxProcessingCompleted(); - } - } - else if( xHeader->type == htons( UIP_ETHTYPE_ARP ) ) - { - uip_arp_arpin(); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - vFECSendData(); - } - else - { - /* If we are not sending data then let the FEC driver know - the buffer is no longer required. */ - vFECRxProcessingCompleted(); - } - } - else - { - /* If we are not sending data then let the FEC driver know - the buffer is no longer required. */ - vFECRxProcessingCompleted(); - } - } - else - { - if( timer_expired( &periodic_timer ) ) - { - timer_reset( &periodic_timer ); - for( i = 0; i < UIP_CONNS; i++ ) - { - uip_periodic( i ); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - uip_arp_out(); - vFECSendData(); - } - } - - /* Call the ARP timer function every 10 seconds. */ - if( timer_expired( &arp_timer ) ) - { - timer_reset( &arp_timer ); - uip_arp_timer(); - } - } - else - { - /* We did not receive a packet, and there was no periodic - processing to perform. Block for a fixed period. If a packet - is received during this period we will be woken by the ISR - giving us the Semaphore. */ - xSemaphoreTake( xFECSemaphore, configTICK_RATE_HZ / 2 ); - } - } - } -} -/*-----------------------------------------------------------*/ - - - diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/uip-conf.h b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/uip-conf.h deleted file mode 100644 index 2a93ff326..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/uip-conf.h +++ /dev/null @@ -1,162 +0,0 @@ -/** - * \addtogroup uipopt - * @{ - */ - -/** - * \name Project-specific configuration options - * @{ - * - * uIP has a number of configuration options that can be overridden - * for each project. These are kept in a project-specific uip-conf.h - * file and all configuration names have the prefix UIP_CONF. - */ - -/* - * Copyright (c) 2006, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: uip-conf.h,v 1.6 2006/06/12 08:00:31 adam Exp $ - */ - -/** - * \file - * An example uIP configuration file - * \author - * Adam Dunkels - */ - -#ifndef __UIP_CONF_H__ -#define __UIP_CONF_H__ - -#include - -/** - * 8 bit datatype - * - * This typedef defines the 8-bit type used throughout uIP. - * - * \hideinitializer - */ -typedef uint8_t u8_t; - -/** - * 16 bit datatype - * - * This typedef defines the 16-bit type used throughout uIP. - * - * \hideinitializer - */ -typedef uint16_t u16_t; - -/** - * Statistics datatype - * - * This typedef defines the dataype used for keeping statistics in - * uIP. - * - * \hideinitializer - */ -typedef unsigned short uip_stats_t; - -/** - * Maximum number of TCP connections. - * - * \hideinitializer - */ -#define UIP_CONF_MAX_CONNECTIONS 30 - -/** - * Maximum number of listening TCP ports. - * - * \hideinitializer - */ -#define UIP_CONF_MAX_LISTENPORTS 5 - -/** - * uIP buffer size. - * - * \hideinitializer - */ -#define UIP_CONF_BUFFER_SIZE 1500 - -/** - * CPU byte order. - * - * \hideinitializer - */ -#define UIP_CONF_BYTE_ORDER UIP_BIG_ENDIAN - -/** - * Logging on or off - * - * \hideinitializer - */ -#define UIP_CONF_LOGGING 0 - -/** - * UDP support on or off - * - * \hideinitializer - */ -#define UIP_CONF_UDP 0 - -/** - * UDP checksums on or off - * - * \hideinitializer - */ -#define UIP_CONF_UDP_CHECKSUMS 1 - -/** - * uIP statistics on or off - * - * \hideinitializer - */ -#define UIP_CONF_STATISTICS 1 - -/* Here we include the header file for the application(s) we use in - our project. */ -/*#include "smtp.h"*/ -/*#include "hello-world.h"*/ -/*#include "telnetd.h"*/ -#include "webserver.h" -/*#include "dhcpc.h"*/ -/*#include "resolv.h"*/ -/*#include "webclient.h"*/ - -#define UIP_CONF_EXTERNAL_BUFFER - - -#define FRAME_MULTIPLE 1 - -#endif /* __UIP_CONF_H__ */ - -/** @} */ -/** @} */ diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/webserver.h b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/webserver.h deleted file mode 100644 index 1acb290b8..000000000 --- a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/RTOSDemo/webserver/webserver.h +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright (c) 2002, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials provided - * with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: webserver.h,v 1.2 2006/06/11 21:46:38 adam Exp $ - * - */ -#ifndef __WEBSERVER_H__ -#define __WEBSERVER_H__ - -#include "httpd.h" - -typedef struct httpd_state uip_tcp_appstate_t; -/* UIP_APPCALL: the name of the application function. This function - must return void and take no arguments (i.e., C type "void - appfunc(void)"). */ -#ifndef UIP_APPCALL -#define UIP_APPCALL httpd_appcall -#endif - - -#endif /* __WEBSERVER_H__ */ diff --git a/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/ReadMe.txt b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/ReadMe.txt new file mode 100644 index 000000000..12c70d213 --- /dev/null +++ b/FreeRTOS/Demo/ColdFire_MCF52233_Eclipse/ReadMe.txt @@ -0,0 +1 @@ +The third party uIP TCP/IP stack and the demo project that used to be in this directory was removed in FreeRTOS version V10.4.3 due to security vulnerabilities identified in uIP. In a future version this demo may be replaced by a version which does not use TCP/IP or uses FreeRTOS’s own TCP/IP stack in place of the original third party stack. \ No newline at end of file diff --git a/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/Makefile.include b/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/Makefile.include deleted file mode 100644 index 43ba24744..000000000 --- a/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/Makefile.include +++ /dev/null @@ -1,47 +0,0 @@ - - -ifdef APPS - APPDIRS = $(foreach APP, $(APPS), ../apps/$(APP)) - -include $(foreach APP, $(APPS), ../apps/$(APP)/Makefile.$(APP)) - CFLAGS += $(addprefix -I../apps/,$(APPS)) -endif - -ifndef CCDEP - CCDEP = $(CC) -endif -ifndef CCDEPCFLAGS - CCDEPCFLAGS = $(CFLAGS) -endif -ifndef OBJECTDIR - OBJECTDIR = obj -endif - -ifeq (${wildcard $(OBJECTDIR)},) - DUMMY := ${shell mkdir $(OBJECTDIR)} -endif - - -vpath %.c . ../uip ../lib $(APPDIRS) - -$(OBJECTDIR)/%.o: %.c - $(CC) $(CFLAGS) -c $< -o $@ - -$(OBJECTDIR)/%.d: %.c - @set -e; rm -f $@; \ - $(CCDEP) -MM $(CCDEPCFLAGS) $< > $@.$$$$; \ - sed 's,\($*\)\.o[ :]*,$(OBJECTDIR)/\1.o $@ : ,g' < $@.$$$$ > $@; \ - rm -f $@.$$$$ - -UIP_SOURCES=uip.c uip_arp.c uiplib.c psock.c timer.c uip-neighbor.c - - -ifneq ($(MAKECMDGOALS),clean) --include $(addprefix $(OBJECTDIR)/,$(UIP_SOURCES:.c=.d) \ - $(APP_SOURCES:.c=.d)) -endif - -uip.a: ${addprefix $(OBJECTDIR)/, $(UIP_SOURCES:.c=.o)} - $(AR) rcf $@ $^ - -apps.a: ${addprefix $(OBJECTDIR)/, $(APP_SOURCES:.c=.o)} - $(AR) rcf $@ $^ diff --git a/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/clock-arch.h b/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/clock-arch.h deleted file mode 100644 index cde657b62..000000000 --- a/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/clock-arch.h +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright (c) 2006, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: clock-arch.h,v 1.2 2006/06/12 08:00:31 adam Exp $ - */ - -#ifndef __CLOCK_ARCH_H__ -#define __CLOCK_ARCH_H__ - -#include "FreeRTOS.h" - -typedef unsigned long clock_time_t; -#define CLOCK_CONF_SECOND configTICK_RATE_HZ - -#endif /* __CLOCK_ARCH_H__ */ diff --git a/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/clock.h b/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/clock.h deleted file mode 100644 index dae68745f..000000000 --- a/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/clock.h +++ /dev/null @@ -1,88 +0,0 @@ -/** - * \defgroup clock Clock interface - * - * The clock interface is the interface between the \ref timer "timer library" - * and the platform specific clock functionality. The clock - * interface must be implemented for each platform that uses the \ref - * timer "timer library". - * - * The clock interface does only one this: it measures time. The clock - * interface provides a macro, CLOCK_SECOND, which corresponds to one - * second of system time. - * - * \sa \ref timer "Timer library" - * - * @{ - */ - -/* - * Copyright (c) 2004, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * Author: Adam Dunkels - * - * $Id: clock.h,v 1.3 2006/06/11 21:46:39 adam Exp $ - */ -#ifndef __CLOCK_H__ -#define __CLOCK_H__ - -#include "clock-arch.h" - -/** - * Initialize the clock library. - * - * This function initializes the clock library and should be called - * from the main() function of the system. - * - */ -void clock_init(void); - -/** - * Get the current clock time. - * - * This function returns the current system clock time. - * - * \return The current clock time, measured in system ticks. - */ -clock_time_t clock_time(void); - -/** - * A second, measured in system clock time. - * - * \hideinitializer - */ -#ifdef CLOCK_CONF_SECOND -#define CLOCK_SECOND CLOCK_CONF_SECOND -#else -#define CLOCK_SECOND (clock_time_t)32 -#endif - -#endif /* __CLOCK_H__ */ - -/** @} */ diff --git a/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/lc-addrlabels.h b/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/lc-addrlabels.h deleted file mode 100644 index 9dff03d09..000000000 --- a/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/lc-addrlabels.h +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Copyright (c) 2004-2005, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * Author: Adam Dunkels - * - * $Id: lc-addrlabels.h,v 1.3 2006/06/12 08:00:30 adam Exp $ - */ - -/** - * \addtogroup lc - * @{ - */ - -/** - * \file - * Implementation of local continuations based on the "Labels as - * values" feature of gcc - * \author - * Adam Dunkels - * - * This implementation of local continuations is based on a special - * feature of the GCC C compiler called "labels as values". This - * feature allows assigning pointers with the address of the code - * corresponding to a particular C label. - * - * For more information, see the GCC documentation: - * http://gcc.gnu.org/onlinedocs/gcc/Labels-as-Values.html - * - * Thanks to dividuum for finding the nice local scope label - * implementation. - */ - -#ifndef __LC_ADDRLABELS_H__ -#define __LC_ADDRLABELS_H__ - -/** \hideinitializer */ -typedef void * lc_t; - -#define LC_INIT(s) s = NULL - - -#define LC_RESUME(s) \ - do { \ - if(s != NULL) { \ - goto *s; \ - } \ - } while(0) - -#define LC_SET(s) \ - do { ({ __label__ resume; resume: (s) = &&resume; }); }while(0) - -#define LC_END(s) - -#endif /* __LC_ADDRLABELS_H__ */ - -/** @} */ diff --git a/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/lc-switch.h b/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/lc-switch.h deleted file mode 100644 index 17c881161..000000000 --- a/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/lc-switch.h +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Copyright (c) 2004-2005, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * Author: Adam Dunkels - * - * $Id: lc-switch.h,v 1.2 2006/06/12 08:00:30 adam Exp $ - */ - -/** - * \addtogroup lc - * @{ - */ - -/** - * \file - * Implementation of local continuations based on switch() statment - * \author Adam Dunkels - * - * This implementation of local continuations uses the C switch() - * statement to resume execution of a function somewhere inside the - * function's body. The implementation is based on the fact that - * switch() statements are able to jump directly into the bodies of - * control structures such as if() or while() statmenets. - * - * This implementation borrows heavily from Simon Tatham's coroutines - * implementation in C: - * http://www.chiark.greenend.org.uk/~sgtatham/coroutines.html - */ - -#ifndef __LC_SWITCH_H__ -#define __LC_SWTICH_H__ - -/* WARNING! lc implementation using switch() does not work if an - LC_SET() is done within another switch() statement! */ - -/** \hideinitializer */ -typedef unsigned short lc_t; - -#define LC_INIT(s) s = 0; - -#define LC_RESUME(s) switch(s) { case 0: - -#define LC_SET(s) s = __LINE__; case __LINE__: - -#define LC_END(s) } - -#endif /* __LC_SWITCH_H__ */ - -/** @} */ diff --git a/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/lc.h b/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/lc.h deleted file mode 100644 index 3ad83cd0a..000000000 --- a/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/lc.h +++ /dev/null @@ -1,131 +0,0 @@ -/* - * Copyright (c) 2004-2005, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * Author: Adam Dunkels - * - * $Id: lc.h,v 1.2 2006/06/12 08:00:30 adam Exp $ - */ - -/** - * \addtogroup pt - * @{ - */ - -/** - * \defgroup lc Local continuations - * @{ - * - * Local continuations form the basis for implementing protothreads. A - * local continuation can be set in a specific function to - * capture the state of the function. After a local continuation has - * been set can be resumed in order to restore the state of the - * function at the point where the local continuation was set. - * - * - */ - -/** - * \file lc.h - * Local continuations - * \author - * Adam Dunkels - * - */ - -#ifdef DOXYGEN -/** - * Initialize a local continuation. - * - * This operation initializes the local continuation, thereby - * unsetting any previously set continuation state. - * - * \hideinitializer - */ -#define LC_INIT(lc) - -/** - * Set a local continuation. - * - * The set operation saves the state of the function at the point - * where the operation is executed. As far as the set operation is - * concerned, the state of the function does not include the - * call-stack or local (automatic) variables, but only the program - * counter and such CPU registers that needs to be saved. - * - * \hideinitializer - */ -#define LC_SET(lc) - -/** - * Resume a local continuation. - * - * The resume operation resumes a previously set local continuation, thus - * restoring the state in which the function was when the local - * continuation was set. If the local continuation has not been - * previously set, the resume operation does nothing. - * - * \hideinitializer - */ -#define LC_RESUME(lc) - -/** - * Mark the end of local continuation usage. - * - * The end operation signifies that local continuations should not be - * used any more in the function. This operation is not needed for - * most implementations of local continuation, but is required by a - * few implementations. - * - * \hideinitializer - */ -#define LC_END(lc) - -/** - * \var typedef lc_t; - * - * The local continuation type. - * - * \hideinitializer - */ -#endif /* DOXYGEN */ - -#ifndef __LC_H__ -#define __LC_H__ - -#ifdef LC_CONF_INCLUDE -#include LC_CONF_INCLUDE -#else -#include "lc-switch.h" -#endif /* LC_CONF_INCLUDE */ - -#endif /* __LC_H__ */ - -/** @} */ -/** @} */ diff --git a/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/psock.c b/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/psock.c deleted file mode 100644 index d29ef0172..000000000 --- a/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/psock.c +++ /dev/null @@ -1,374 +0,0 @@ -/* - * Copyright (c) 2004, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * Author: Adam Dunkels - * - * $Id: psock.c,v 1.1 2007/01/04 11:06:40 adamdunkels Exp $ - */ -#include -#include - -#include "uipopt.h" -#include "psock.h" -#include "uip.h" - -#define STATE_NONE 0 -#define STATE_ACKED 1 -#define STATE_READ 2 -#define STATE_BLOCKED_NEWDATA 3 -#define STATE_BLOCKED_CLOSE 4 -#define STATE_BLOCKED_SEND 5 -#define STATE_DATA_SENT 6 - -/* - * Return value of the buffering functions that indicates that a - * buffer was not filled by incoming data. - * - */ -#define BUF_NOT_FULL 0 -#define BUF_NOT_FOUND 0 - -/* - * Return value of the buffering functions that indicates that a - * buffer was completely filled by incoming data. - * - */ -#define BUF_FULL 1 - -/* - * Return value of the buffering functions that indicates that an - * end-marker byte was found. - * - */ -#define BUF_FOUND 2 - -/*---------------------------------------------------------------------------*/ -static void buf_setup( struct psock_buf *buf, u8_t *bufptr, u16_t bufsize ) -{ - buf->ptr = bufptr; - buf->left = bufsize; -} - -/*---------------------------------------------------------------------------*/ -static u8_t buf_bufdata( struct psock_buf *buf, u16_t len, u8_t **dataptr, u16_t *datalen ) -{ - ( void ) len; - - if( *datalen < buf->left ) - { - memcpy( buf->ptr, *dataptr, *datalen ); - buf->ptr += *datalen; - buf->left -= *datalen; - *dataptr += *datalen; - *datalen = 0; - return BUF_NOT_FULL; - } - else if( *datalen == buf->left ) - { - memcpy( buf->ptr, *dataptr, *datalen ); - buf->ptr += *datalen; - buf->left = 0; - *dataptr += *datalen; - *datalen = 0; - return BUF_FULL; - } - else - { - memcpy( buf->ptr, *dataptr, buf->left ); - buf->ptr += buf->left; - *datalen -= buf->left; - *dataptr += buf->left; - buf->left = 0; - return BUF_FULL; - } -} - -/*---------------------------------------------------------------------------*/ -static u8_t buf_bufto( register struct psock_buf *buf, u8_t endmarker, register u8_t **dataptr, register u16_t *datalen ) -{ - u8_t c; - while( buf->left > 0 && *datalen > 0 ) - { - c = *buf->ptr = **dataptr; - ++ *dataptr; - ++buf->ptr; - -- *datalen; - --buf->left; - - if( c == endmarker ) - { - return BUF_FOUND; - } - } - - if( *datalen == 0 ) - { - return BUF_NOT_FOUND; - } - - while( *datalen > 0 ) - { - c = **dataptr; - -- *datalen; - ++ *dataptr; - - if( c == endmarker ) - { - return BUF_FOUND | BUF_FULL; - } - } - - return BUF_FULL; -} - -/*---------------------------------------------------------------------------*/ -static char send_data( register struct psock *s ) -{ - if( s->state != STATE_DATA_SENT || uip_rexmit() ) - { - if( s->sendlen > uip_mss() ) - { - uip_send( s->sendptr, uip_mss() ); - } - else - { - uip_send( s->sendptr, s->sendlen ); - } - - s->state = STATE_DATA_SENT; - return 1; - } - - return 0; -} - -/*---------------------------------------------------------------------------*/ -static char data_acked( register struct psock *s ) -{ - if( s->state == STATE_DATA_SENT && uip_acked() ) - { - if( s->sendlen > uip_mss() ) - { - s->sendlen -= uip_mss(); - s->sendptr += uip_mss(); - } - else - { - s->sendptr += s->sendlen; - s->sendlen = 0; - } - - s->state = STATE_ACKED; - return 1; - } - - return 0; -} - -/*---------------------------------------------------------------------------*/ -PT_THREAD( psock_send ( register struct psock *s, const char *buf, unsigned int len ) ) -{ - PT_BEGIN( &s->psockpt ); - - /* If there is no data to send, we exit immediately. */ - if( len == 0 ) - { - PT_EXIT( &s->psockpt ); - } - - /* Save the length of and a pointer to the data that is to be - sent. */ - s->sendptr = ( u8_t * ) buf; - s->sendlen = len; - - s->state = STATE_NONE; - - /* We loop here until all data is sent. The s->sendlen variable is - updated by the data_sent() function. */ - while( s->sendlen > 0 ) - { - /* - * The condition for this PT_WAIT_UNTIL is a little tricky: the - * protothread will wait here until all data has been acknowledged - * (data_acked() returns true) and until all data has been sent - * (send_data() returns true). The two functions data_acked() and - * send_data() must be called in succession to ensure that all - * data is sent. Therefore the & operator is used instead of the - * && operator, which would cause only the data_acked() function - * to be called when it returns false. - */ - PT_WAIT_UNTIL( &s->psockpt, data_acked(s) & send_data(s) ); - } - - s->state = STATE_NONE; - - PT_END( &s->psockpt ); -} - -/*---------------------------------------------------------------------------*/ -PT_THREAD( psock_generator_send ( register struct psock *s, unsigned short ( *generate ) ( void * ), void *arg ) ) -{ - PT_BEGIN( &s->psockpt ); - - /* Ensure that there is a generator function to call. */ - if( generate == NULL ) - { - PT_EXIT( &s->psockpt ); - } - - /* Call the generator function to generate the data in the - uip_appdata buffer. */ - s->sendlen = generate( arg ); - s->sendptr = uip_appdata; - - s->state = STATE_NONE; - do - { - /* Call the generator function again if we are called to perform a - retransmission. */ - if( uip_rexmit() ) - { - generate( arg ); - } - - /* Wait until all data is sent and acknowledged. */ - PT_WAIT_UNTIL( &s->psockpt, data_acked(s) & send_data(s) ); - } while( s->sendlen > 0 ); - - s->state = STATE_NONE; - - PT_END( &s->psockpt ); -} - -/*---------------------------------------------------------------------------*/ -u16_t psock_datalen( struct psock *psock ) -{ - return psock->bufsize - psock->buf.left; -} - -/*---------------------------------------------------------------------------*/ -char psock_newdata( struct psock *s ) -{ - if( s->readlen > 0 ) - { - /* There is data in the uip_appdata buffer that has not yet been - read with the PSOCK_READ functions. */ - return 1; - } - else if( s->state == STATE_READ ) - { - /* All data in uip_appdata buffer already consumed. */ - s->state = STATE_BLOCKED_NEWDATA; - return 0; - } - else if( uip_newdata() ) - { - /* There is new data that has not been consumed. */ - return 1; - } - else - { - /* There is no new data. */ - return 0; - } -} - -/*---------------------------------------------------------------------------*/ -PT_THREAD( psock_readto ( register struct psock *psock, unsigned char c ) ) -{ - PT_BEGIN( &psock->psockpt ); - - buf_setup( &psock->buf, ( u8_t * ) psock->bufptr, psock->bufsize ); - - /* XXX: Should add buf_checkmarker() before do{} loop, if - incoming data has been handled while waiting for a write. */ - do - { - if( psock->readlen == 0 ) - { - PT_WAIT_UNTIL( &psock->psockpt, psock_newdata(psock) ); - psock->state = STATE_READ; - psock->readptr = ( u8_t * ) uip_appdata; - psock->readlen = uip_datalen(); - } - } while( (buf_bufto(&psock->buf, c, &psock->readptr, &psock->readlen) & BUF_FOUND) == 0 ); - - if( psock_datalen(psock) == 0 ) - { - psock->state = STATE_NONE; - PT_RESTART( &psock->psockpt ); - } - - PT_END( &psock->psockpt ); -} - -/*---------------------------------------------------------------------------*/ -PT_THREAD( psock_readbuf ( register struct psock *psock ) ) -{ - PT_BEGIN( &psock->psockpt ); - - buf_setup( &psock->buf, ( u8_t * ) psock->bufptr, psock->bufsize ); - - /* XXX: Should add buf_checkmarker() before do{} loop, if - incoming data has been handled while waiting for a write. */ - do - { - if( psock->readlen == 0 ) - { - PT_WAIT_UNTIL( &psock->psockpt, psock_newdata(psock) ); - printf( "Waited for newdata\n" ); - psock->state = STATE_READ; - psock->readptr = ( u8_t * ) uip_appdata; - psock->readlen = uip_datalen(); - } - } while( buf_bufdata(&psock->buf, psock->bufsize, &psock->readptr, &psock->readlen) != BUF_FULL ); - - if( psock_datalen(psock) == 0 ) - { - psock->state = STATE_NONE; - PT_RESTART( &psock->psockpt ); - } - - PT_END( &psock->psockpt ); -} - -/*---------------------------------------------------------------------------*/ -void psock_init( register struct psock *psock, char *buffer, unsigned int buffersize ) -{ - psock->state = STATE_NONE; - psock->readlen = 0; - psock->bufptr = buffer; - psock->bufsize = buffersize; - buf_setup( &psock->buf, ( u8_t * ) buffer, buffersize ); - PT_INIT( &psock->pt ); - PT_INIT( &psock->psockpt ); -} - -/*---------------------------------------------------------------------------*/ diff --git a/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/psock.h b/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/psock.h deleted file mode 100644 index 8d4125878..000000000 --- a/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/psock.h +++ /dev/null @@ -1,380 +0,0 @@ -/* - * Copyright (c) 2004, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * Author: Adam Dunkels - * - * $Id: psock.h,v 1.3 2006/06/12 08:00:30 adam Exp $ - */ - -/** - * \defgroup psock Protosockets library - * @{ - * - * The protosocket library provides an interface to the uIP stack that is - * similar to the traditional BSD socket interface. Unlike programs - * written for the ordinary uIP event-driven interface, programs - * written with the protosocket library are executed in a sequential - * fashion and does not have to be implemented as explicit state - * machines. - * - * Protosockets only work with TCP connections. - * - * The protosocket library uses \ref pt protothreads to provide - * sequential control flow. This makes the protosockets lightweight in - * terms of memory, but also means that protosockets inherits the - * functional limitations of protothreads. Each protosocket lives only - * within a single function. Automatic variables (stack variables) are - * not retained across a protosocket library function call. - * - * \note Because the protosocket library uses protothreads, local - * variables will not always be saved across a call to a protosocket - * library function. It is therefore advised that local variables are - * used with extreme care. - * - * The protosocket library provides functions for sending data without - * having to deal with retransmissions and acknowledgements, as well - * as functions for reading data without having to deal with data - * being split across more than one TCP segment. - * - * Because each protosocket runs as a protothread, the protosocket has to be - * started with a call to PSOCK_BEGIN() at the start of the function - * in which the protosocket is used. Similarly, the protosocket protothread can - * be terminated by a call to PSOCK_EXIT(). - * - */ - -/** - * \file - * Protosocket library header file - * \author - * Adam Dunkels - * - */ - -#ifndef __PSOCK_H__ -#define __PSOCK_H__ - -#include "uipopt.h" -#include "pt.h" - - /* - * The structure that holds the state of a buffer. - * - * This structure holds the state of a uIP buffer. The structure has - * no user-visible elements, but is used through the functions - * provided by the library. - * - */ -struct psock_buf { - u8_t *ptr; - unsigned short left; -}; - -/** - * The representation of a protosocket. - * - * The protosocket structrure is an opaque structure with no user-visible - * elements. - */ -struct psock { - struct pt pt, psockpt; /* Protothreads - one that's using the psock - functions, and one that runs inside the - psock functions. */ - const u8_t *sendptr; /* Pointer to the next data to be sent. */ - u8_t *readptr; /* Pointer to the next data to be read. */ - - char *bufptr; /* Pointer to the buffer used for buffering - incoming data. */ - - u16_t sendlen; /* The number of bytes left to be sent. */ - u16_t readlen; /* The number of bytes left to be read. */ - - struct psock_buf buf; /* The structure holding the state of the - input buffer. */ - unsigned int bufsize; /* The size of the input buffer. */ - - unsigned char state; /* The state of the protosocket. */ -}; - -void psock_init(struct psock *psock, char *buffer, unsigned int buffersize); -/** - * Initialize a protosocket. - * - * This macro initializes a protosocket and must be called before the - * protosocket is used. The initialization also specifies the input buffer - * for the protosocket. - * - * \param psock (struct psock *) A pointer to the protosocket to be - * initialized - * - * \param buffer (char *) A pointer to the input buffer for the - * protosocket. - * - * \param buffersize (unsigned int) The size of the input buffer. - * - * \hideinitializer - */ -#define PSOCK_INIT(psock, buffer, buffersize) \ - psock_init(psock, buffer, buffersize) - -/** - * Start the protosocket protothread in a function. - * - * This macro starts the protothread associated with the protosocket and - * must come before other protosocket calls in the function it is used. - * - * \param psock (struct psock *) A pointer to the protosocket to be - * started. - * - * \hideinitializer - */ -#define PSOCK_BEGIN(psock) PT_BEGIN(&((psock)->pt)) - -PT_THREAD(psock_send(struct psock *psock, const char *buf, unsigned int len)); -/** - * Send data. - * - * This macro sends data over a protosocket. The protosocket protothread blocks - * until all data has been sent and is known to have been received by - * the remote end of the TCP connection. - * - * \param psock (struct psock *) A pointer to the protosocket over which - * data is to be sent. - * - * \param data (char *) A pointer to the data that is to be sent. - * - * \param datalen (unsigned int) The length of the data that is to be - * sent. - * - * \hideinitializer - */ -#define PSOCK_SEND(psock, data, datalen) \ - PT_WAIT_THREAD(&((psock)->pt), psock_send(psock, data, datalen)) - -/** - * \brief Send a null-terminated string. - * \param psock Pointer to the protosocket. - * \param str The string to be sent. - * - * This function sends a null-terminated string over the - * protosocket. - * - * \hideinitializer - */ -#define PSOCK_SEND_STR(psock, str) \ - PT_WAIT_THREAD(&((psock)->pt), psock_send(psock, str, strlen(str))) - -PT_THREAD(psock_generator_send(struct psock *psock, - unsigned short (*f)(void *), void *arg)); - -/** - * \brief Generate data with a function and send it - * \param psock Pointer to the protosocket. - * \param generator Pointer to the generator function - * \param arg Argument to the generator function - * - * This function generates data and sends it over the - * protosocket. This can be used to dynamically generate - * data for a transmission, instead of generating the data - * in a buffer beforehand. This function reduces the need for - * buffer memory. The generator function is implemented by - * the application, and a pointer to the function is given - * as an argument with the call to PSOCK_GENERATOR_SEND(). - * - * The generator function should place the generated data - * directly in the uip_appdata buffer, and return the - * length of the generated data. The generator function is - * called by the protosocket layer when the data first is - * sent, and once for every retransmission that is needed. - * - * \hideinitializer - */ -#define PSOCK_GENERATOR_SEND(psock, generator, arg) \ - PT_WAIT_THREAD(&((psock)->pt), \ - psock_generator_send(psock, generator, arg)) - - -/** - * Close a protosocket. - * - * This macro closes a protosocket and can only be called from within the - * protothread in which the protosocket lives. - * - * \param psock (struct psock *) A pointer to the protosocket that is to - * be closed. - * - * \hideinitializer - */ -#define PSOCK_CLOSE(psock) uip_close() - -PT_THREAD(psock_readbuf(struct psock *psock)); -/** - * Read data until the buffer is full. - * - * This macro will block waiting for data and read the data into the - * input buffer specified with the call to PSOCK_INIT(). Data is read - * until the buffer is full.. - * - * \param psock (struct psock *) A pointer to the protosocket from which - * data should be read. - * - * \hideinitializer - */ -#define PSOCK_READBUF(psock) \ - PT_WAIT_THREAD(&((psock)->pt), psock_readbuf(psock)) - -PT_THREAD(psock_readto(struct psock *psock, unsigned char c)); -/** - * Read data up to a specified character. - * - * This macro will block waiting for data and read the data into the - * input buffer specified with the call to PSOCK_INIT(). Data is only - * read until the specifieed character appears in the data stream. - * - * \param psock (struct psock *) A pointer to the protosocket from which - * data should be read. - * - * \param c (char) The character at which to stop reading. - * - * \hideinitializer - */ -#define PSOCK_READTO(psock, c) \ - PT_WAIT_THREAD(&((psock)->pt), psock_readto(psock, c)) - -/** - * The length of the data that was previously read. - * - * This macro returns the length of the data that was previously read - * using PSOCK_READTO() or PSOCK_READ(). - * - * \param psock (struct psock *) A pointer to the protosocket holding the data. - * - * \hideinitializer - */ -#define PSOCK_DATALEN(psock) psock_datalen(psock) - -u16_t psock_datalen(struct psock *psock); - -/** - * Exit the protosocket's protothread. - * - * This macro terminates the protothread of the protosocket and should - * almost always be used in conjunction with PSOCK_CLOSE(). - * - * \sa PSOCK_CLOSE_EXIT() - * - * \param psock (struct psock *) A pointer to the protosocket. - * - * \hideinitializer - */ -#define PSOCK_EXIT(psock) PT_EXIT(&((psock)->pt)) - -/** - * Close a protosocket and exit the protosocket's protothread. - * - * This macro closes a protosocket and exits the protosocket's protothread. - * - * \param psock (struct psock *) A pointer to the protosocket. - * - * \hideinitializer - */ -#define PSOCK_CLOSE_EXIT(psock) \ - do { \ - PSOCK_CLOSE(psock); \ - PSOCK_EXIT(psock); \ - } while(0) - -/** - * Declare the end of a protosocket's protothread. - * - * This macro is used for declaring that the protosocket's protothread - * ends. It must always be used together with a matching PSOCK_BEGIN() - * macro. - * - * \param psock (struct psock *) A pointer to the protosocket. - * - * \hideinitializer - */ -#define PSOCK_END(psock) PT_END(&((psock)->pt)) - -char psock_newdata(struct psock *s); - -/** - * Check if new data has arrived on a protosocket. - * - * This macro is used in conjunction with the PSOCK_WAIT_UNTIL() - * macro to check if data has arrived on a protosocket. - * - * \param psock (struct psock *) A pointer to the protosocket. - * - * \hideinitializer - */ -#define PSOCK_NEWDATA(psock) psock_newdata(psock) - -/** - * Wait until a condition is true. - * - * This macro blocks the protothread until the specified condition is - * true. The macro PSOCK_NEWDATA() can be used to check if new data - * arrives when the protosocket is waiting. - * - * Typically, this macro is used as follows: - * - \code - PT_THREAD(thread(struct psock *s, struct timer *t)) - { - PSOCK_BEGIN(s); - - PSOCK_WAIT_UNTIL(s, PSOCK_NEWADATA(s) || timer_expired(t)); - - if(PSOCK_NEWDATA(s)) { - PSOCK_READTO(s, '\n'); - } else { - handle_timed_out(s); - } - - PSOCK_END(s); - } - \endcode - * - * \param psock (struct psock *) A pointer to the protosocket. - * \param condition The condition to wait for. - * - * \hideinitializer - */ -#define PSOCK_WAIT_UNTIL(psock, condition) \ - PT_WAIT_UNTIL(&((psock)->pt), (condition)); - -#define PSOCK_WAIT_THREAD(psock, condition) \ - PT_WAIT_THREAD(&((psock)->pt), (condition)) - -#endif /* __PSOCK_H__ */ - -/** @} */ diff --git a/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/pt.h b/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/pt.h deleted file mode 100644 index 00ddd4429..000000000 --- a/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/pt.h +++ /dev/null @@ -1,323 +0,0 @@ -/* - * Copyright (c) 2004-2005, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * Author: Adam Dunkels - * - * $Id: pt.h,v 1.2 2006/06/12 08:00:30 adam Exp $ - */ - -/** - * \addtogroup pt - * @{ - */ - -/** - * \file - * Protothreads implementation. - * \author - * Adam Dunkels - * - */ - -#ifndef __PT_H__ -#define __PT_H__ - -#include "lc.h" - -struct pt { - lc_t lc; -}; - -#define PT_WAITING 0 -#define PT_EXITED 1 -#define PT_ENDED 2 -#define PT_YIELDED 3 - -/** - * \name Initialization - * @{ - */ - -/** - * Initialize a protothread. - * - * Initializes a protothread. Initialization must be done prior to - * starting to execute the protothread. - * - * \param pt A pointer to the protothread control structure. - * - * \sa PT_SPAWN() - * - * \hideinitializer - */ -#define PT_INIT(pt) LC_INIT((pt)->lc) - -/** @} */ - -/** - * \name Declaration and definition - * @{ - */ - -/** - * Declaration of a protothread. - * - * This macro is used to declare a protothread. All protothreads must - * be declared with this macro. - * - * \param name_args The name and arguments of the C function - * implementing the protothread. - * - * \hideinitializer - */ -#define PT_THREAD(name_args) char name_args - -/** - * Declare the start of a protothread inside the C function - * implementing the protothread. - * - * This macro is used to declare the starting point of a - * protothread. It should be placed at the start of the function in - * which the protothread runs. All C statements above the PT_BEGIN() - * invokation will be executed each time the protothread is scheduled. - * - * \param pt A pointer to the protothread control structure. - * - * \hideinitializer - */ -#define PT_BEGIN(pt) { char PT_YIELD_FLAG = 1; LC_RESUME((pt)->lc) - -/** - * Declare the end of a protothread. - * - * This macro is used for declaring that a protothread ends. It must - * always be used together with a matching PT_BEGIN() macro. - * - * \param pt A pointer to the protothread control structure. - * - * \hideinitializer - */ -#define PT_END(pt) LC_END((pt)->lc); PT_YIELD_FLAG = 0; \ - PT_INIT(pt); return PT_ENDED; } - -/** @} */ - -/** - * \name Blocked wait - * @{ - */ - -/** - * Block and wait until condition is true. - * - * This macro blocks the protothread until the specified condition is - * true. - * - * \param pt A pointer to the protothread control structure. - * \param condition The condition. - * - * \hideinitializer - */ -#define PT_WAIT_UNTIL(pt, condition) \ - do { \ - LC_SET((pt)->lc); \ - if(!(condition)) { \ - return PT_WAITING; \ - } \ - } while(0) - -/** - * Block and wait while condition is true. - * - * This function blocks and waits while condition is true. See - * PT_WAIT_UNTIL(). - * - * \param pt A pointer to the protothread control structure. - * \param cond The condition. - * - * \hideinitializer - */ -#define PT_WAIT_WHILE(pt, cond) PT_WAIT_UNTIL((pt), !(cond)) - -/** @} */ - -/** - * \name Hierarchical protothreads - * @{ - */ - -/** - * Block and wait until a child protothread completes. - * - * This macro schedules a child protothread. The current protothread - * will block until the child protothread completes. - * - * \note The child protothread must be manually initialized with the - * PT_INIT() function before this function is used. - * - * \param pt A pointer to the protothread control structure. - * \param thread The child protothread with arguments - * - * \sa PT_SPAWN() - * - * \hideinitializer - */ -#define PT_WAIT_THREAD(pt, thread) PT_WAIT_WHILE((pt), PT_SCHEDULE(thread)) - -/** - * Spawn a child protothread and wait until it exits. - * - * This macro spawns a child protothread and waits until it exits. The - * macro can only be used within a protothread. - * - * \param pt A pointer to the protothread control structure. - * \param child A pointer to the child protothread's control structure. - * \param thread The child protothread with arguments - * - * \hideinitializer - */ -#define PT_SPAWN(pt, child, thread) \ - do { \ - PT_INIT((child)); \ - PT_WAIT_THREAD((pt), (thread)); \ - } while(0) - -/** @} */ - -/** - * \name Exiting and restarting - * @{ - */ - -/** - * Restart the protothread. - * - * This macro will block and cause the running protothread to restart - * its execution at the place of the PT_BEGIN() call. - * - * \param pt A pointer to the protothread control structure. - * - * \hideinitializer - */ -#define PT_RESTART(pt) \ - do { \ - PT_INIT(pt); \ - return PT_WAITING; \ - } while(0) - -/** - * Exit the protothread. - * - * This macro causes the protothread to exit. If the protothread was - * spawned by another protothread, the parent protothread will become - * unblocked and can continue to run. - * - * \param pt A pointer to the protothread control structure. - * - * \hideinitializer - */ -#define PT_EXIT(pt) \ - do { \ - PT_INIT(pt); \ - return PT_EXITED; \ - } while(0) - -/** @} */ - -/** - * \name Calling a protothread - * @{ - */ - -/** - * Schedule a protothread. - * - * This function shedules a protothread. The return value of the - * function is non-zero if the protothread is running or zero if the - * protothread has exited. - * - * \param f The call to the C function implementing the protothread to - * be scheduled - * - * \hideinitializer - */ -#define PT_SCHEDULE(f) ((f) == PT_WAITING) - -/** @} */ - -/** - * \name Yielding from a protothread - * @{ - */ - -/** - * Yield from the current protothread. - * - * This function will yield the protothread, thereby allowing other - * processing to take place in the system. - * - * \param pt A pointer to the protothread control structure. - * - * \hideinitializer - */ -#define PT_YIELD(pt) \ - do { \ - PT_YIELD_FLAG = 0; \ - LC_SET((pt)->lc); \ - if(PT_YIELD_FLAG == 0) { \ - return PT_YIELDED; \ - } \ - } while(0) - -/** - * \brief Yield from the protothread until a condition occurs. - * \param pt A pointer to the protothread control structure. - * \param cond The condition. - * - * This function will yield the protothread, until the - * specified condition evaluates to true. - * - * - * \hideinitializer - */ -#define PT_YIELD_UNTIL(pt, cond) \ - do { \ - PT_YIELD_FLAG = 0; \ - LC_SET((pt)->lc); \ - if((PT_YIELD_FLAG == 0) || !(cond)) { \ - return PT_YIELDED; \ - } \ - } while(0) - -/** @} */ - -#endif /* __PT_H__ */ - -/** @} */ diff --git a/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/timer.c b/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/timer.c deleted file mode 100644 index 9a6365313..000000000 --- a/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/timer.c +++ /dev/null @@ -1,130 +0,0 @@ -/** - * \addtogroup timer - * @{ - */ - -/** - * \file - * Timer library implementation. - * \author - * Adam Dunkels - */ - -/* - * Copyright (c) 2004, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * Author: Adam Dunkels - * - * $Id: timer.c,v 1.2 2006/06/12 08:00:30 adam Exp $ - */ -#include "clock.h" -#include "uip_timer.h" - -/*---------------------------------------------------------------------------*/ - -/** - * Set a timer. - * - * This function is used to set a timer for a time sometime in the - * future. The function timer_expired() will evaluate to true after - * the timer has expired. - * - * \param t A pointer to the timer - * \param interval The interval before the timer expires. - * - */ -void timer_set( struct timer *t, clock_time_t interval ) -{ - t->interval = interval; - t->start = clock_time(); -} - -/*---------------------------------------------------------------------------*/ - -/** - * Reset the timer with the same interval. - * - * This function resets the timer with the same interval that was - * given to the timer_set() function. The start point of the interval - * is the exact time that the timer last expired. Therefore, this - * function will cause the timer to be stable over time, unlike the - * timer_rester() function. - * - * \param t A pointer to the timer. - * - * \sa timer_restart() - */ -void timer_reset( struct timer *t ) -{ - t->start += t->interval; -} - -/*---------------------------------------------------------------------------*/ - -/** - * Restart the timer from the current point in time - * - * This function restarts a timer with the same interval that was - * given to the timer_set() function. The timer will start at the - * current time. - * - * \note A periodic timer will drift if this function is used to reset - * it. For preioric timers, use the timer_reset() function instead. - * - * \param t A pointer to the timer. - * - * \sa timer_reset() - */ -void timer_restart( struct timer *t ) -{ - t->start = clock_time(); -} - -/*---------------------------------------------------------------------------*/ - -/** - * Check if a timer has expired. - * - * This function tests if a timer has expired and returns true or - * false depending on its status. - * - * \param t A pointer to the timer - * - * \return Non-zero if the timer has expired, zero otherwise. - * - */ -int timer_expired( struct timer *t ) -{ - return( clock_time_t ) ( clock_time() - t->start ) >= ( clock_time_t ) t->interval; -} - -/*---------------------------------------------------------------------------*/ - -/** @} */ diff --git a/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/timer.h b/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/timer.h deleted file mode 100644 index e28e3ca5f..000000000 --- a/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/timer.h +++ /dev/null @@ -1,86 +0,0 @@ -/** - * \defgroup timer Timer library - * - * The timer library provides functions for setting, resetting and - * restarting timers, and for checking if a timer has expired. An - * application must "manually" check if its timers have expired; this - * is not done automatically. - * - * A timer is declared as a \c struct \c timer and all access to the - * timer is made by a pointer to the declared timer. - * - * \note The timer library uses the \ref clock "Clock library" to - * measure time. Intervals should be specified in the format used by - * the clock library. - * - * @{ - */ - - -/** - * \file - * Timer library header file. - * \author - * Adam Dunkels - */ - -/* - * Copyright (c) 2004, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * Author: Adam Dunkels - * - * $Id: timer.h,v 1.3 2006/06/11 21:46:39 adam Exp $ - */ -#ifndef __TIMER_H__ -#define __TIMER_H__ - -#include "clock.h" - -/** - * A timer. - * - * This structure is used for declaring a timer. The timer must be set - * with timer_set() before it can be used. - * - * \hideinitializer - */ -struct timer { - clock_time_t start; - clock_time_t interval; -}; - -void timer_set(struct timer *t, clock_time_t interval); -void timer_reset(struct timer *t); -void timer_restart(struct timer *t); -int timer_expired(struct timer *t); - -#endif /* __TIMER_H__ */ - -/** @} */ diff --git a/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/uip-fw.h b/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/uip-fw.h deleted file mode 100644 index e854ecefe..000000000 --- a/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/uip-fw.h +++ /dev/null @@ -1,176 +0,0 @@ -/** - * \addtogroup uipfw - * @{ - */ - -/** - * \file - * uIP packet forwarding header file. - * \author Adam Dunkels - */ - -/* - * Copyright (c) 2004, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * Author: Adam Dunkels - * - * $Id: uip-fw.h,v 1.2 2006/06/12 08:00:30 adam Exp $ - */ -#ifndef __UIP_FW_H__ -#define __UIP_FW_H__ - -#include "uip.h" - -/** - * Representation of a uIP network interface. - */ -struct uip_fw_netif { - struct uip_fw_netif *next; /**< Pointer to the next interface when - linked in a list. */ - u16_t ipaddr[2]; /**< The IP address of this interface. */ - u16_t netmask[2]; /**< The netmask of the interface. */ - u8_t (* output)(void); - /**< A pointer to the function that - sends a packet. */ -}; - -/** - * Intantiating macro for a uIP network interface. - * - * Example: - \code - struct uip_fw_netif slipnetif = - {UIP_FW_NETIF(192,168,76,1, 255,255,255,0, slip_output)}; - \endcode - * \param ip1,ip2,ip3,ip4 The IP address of the network interface. - * - * \param nm1,nm2,nm3,nm4 The netmask of the network interface. - * - * \param outputfunc A pointer to the output function of the network interface. - * - * \hideinitializer - */ -#define UIP_FW_NETIF(ip1,ip2,ip3,ip4, nm1,nm2,nm3,nm4, outputfunc) \ - NULL, \ - {HTONS((ip1 << 8) | ip2), HTONS((ip3 << 8) | ip4)}, \ - {HTONS((nm1 << 8) | nm2), HTONS((nm3 << 8) | nm4)}, \ - outputfunc - -/** - * Set the IP address of a network interface. - * - * \param netif A pointer to the uip_fw_netif structure for the network interface. - * - * \param addr A pointer to an IP address. - * - * \hideinitializer - */ -#define uip_fw_setipaddr(netif, addr) \ - do { (netif)->ipaddr[0] = ((u16_t *)(addr))[0]; \ - (netif)->ipaddr[1] = ((u16_t *)(addr))[1]; } while(0) -/** - * Set the netmask of a network interface. - * - * \param netif A pointer to the uip_fw_netif structure for the network interface. - * - * \param addr A pointer to an IP address representing the netmask. - * - * \hideinitializer - */ -#define uip_fw_setnetmask(netif, addr) \ - do { (netif)->netmask[0] = ((u16_t *)(addr))[0]; \ - (netif)->netmask[1] = ((u16_t *)(addr))[1]; } while(0) - -void uip_fw_init(void); -u8_t uip_fw_forward(void); -u8_t uip_fw_output(void); -void uip_fw_register(struct uip_fw_netif *netif); -void uip_fw_default(struct uip_fw_netif *netif); -void uip_fw_periodic(void); - - -/** - * A non-error message that indicates that a packet should be - * processed locally. - * - * \hideinitializer - */ -#define UIP_FW_LOCAL 0 - -/** - * A non-error message that indicates that something went OK. - * - * \hideinitializer - */ -#define UIP_FW_OK 0 - -/** - * A non-error message that indicates that a packet was forwarded. - * - * \hideinitializer - */ -#define UIP_FW_FORWARDED 1 - -/** - * A non-error message that indicates that a zero-length packet - * transmission was attempted, and that no packet was sent. - * - * \hideinitializer - */ -#define UIP_FW_ZEROLEN 2 - -/** - * An error message that indicates that a packet that was too large - * for the outbound network interface was detected. - * - * \hideinitializer - */ -#define UIP_FW_TOOLARGE 3 - -/** - * An error message that indicates that no suitable interface could be - * found for an outbound packet. - * - * \hideinitializer - */ -#define UIP_FW_NOROUTE 4 - -/** - * An error message that indicates that a packet that should be - * forwarded or output was dropped. - * - * \hideinitializer - */ -#define UIP_FW_DROPPED 5 - - -#endif /* __UIP_FW_H__ */ - -/** @} */ diff --git a/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/uip-neighbor.h b/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/uip-neighbor.h deleted file mode 100644 index aca096f2c..000000000 --- a/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/uip-neighbor.h +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Copyright (c) 2006, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: uip-neighbor.h,v 1.2 2006/06/12 08:00:30 adam Exp $ - */ - -/** - * \file - * Header file for database of link-local neighbors, used by - * IPv6 code and to be used by future ARP code. - * \author - * Adam Dunkels - */ - -#ifndef __UIP_NEIGHBOR_H__ -#define __UIP_NEIGHBOR_H__ - -#include "uip.h" - -struct uip_neighbor_addr { -#if UIP_NEIGHBOR_CONF_ADDRTYPE - UIP_NEIGHBOR_CONF_ADDRTYPE addr; -#else - struct uip_eth_addr addr; -#endif -}; - -void uip_neighbor_init(void); -void uip_neighbor_add(uip_ipaddr_t ipaddr, struct uip_neighbor_addr *addr); -void uip_neighbor_update(uip_ipaddr_t ipaddr); -struct uip_neighbor_addr *uip_neighbor_lookup(uip_ipaddr_t ipaddr); -void uip_neighbor_periodic(void); - -#endif /* __UIP-NEIGHBOR_H__ */ diff --git a/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/uip-split.c b/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/uip-split.c deleted file mode 100644 index 6828f3c74..000000000 --- a/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/uip-split.c +++ /dev/null @@ -1,144 +0,0 @@ -/* - * Copyright (c) 2004, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * Author: Adam Dunkels - * - * $Id: uip-split.c,v 1.2 2006/06/12 08:00:30 adam Exp $ - */ -#include - -#include "uip-split.h" -#include "uip.h" -#include "uip-fw.h" -#include "uip_arch.h" - -#define BUF ( ( struct uip_tcpip_hdr * ) &uip_buf[UIP_LLH_LEN] ) - -/*-----------------------------------------------------------------------------*/ -void uip_split_output( void ) -{ - u16_t tcplen, len1, len2; - - /* We only try to split maximum sized TCP segments. */ - if( BUF->proto == UIP_PROTO_TCP && uip_len == UIP_BUFSIZE - UIP_LLH_LEN ) - { - tcplen = uip_len - UIP_TCPIP_HLEN; - - /* Split the segment in two. If the original packet length was - odd, we make the second packet one byte larger. */ - len1 = len2 = tcplen / 2; - if( len1 + len2 < tcplen ) - { - ++len2; - } - - /* Create the first packet. This is done by altering the length - field of the IP header and updating the checksums. */ - uip_len = len1 + UIP_TCPIP_HLEN; - #if UIP_CONF_IPV6 - - /* For IPv6, the IP length field does not include the IPv6 IP header - length. */ - BUF->len[0] = ( (uip_len - UIP_IPH_LEN) >> 8 ); - BUF->len[1] = ( (uip_len - UIP_IPH_LEN) & 0xff ); - #else /* UIP_CONF_IPV6 */ - BUF->len[0] = uip_len >> 8; - BUF->len[1] = uip_len & 0xff; - #endif /* UIP_CONF_IPV6 */ - - /* Recalculate the TCP checksum. */ - BUF->tcpchksum = 0; - BUF->tcpchksum = ~( uip_tcpchksum() ); - - #if !UIP_CONF_IPV6 - - /* Recalculate the IP checksum. */ - BUF->ipchksum = 0; - BUF->ipchksum = ~( uip_ipchksum() ); - #endif /* UIP_CONF_IPV6 */ - - /* Transmit the first packet. */ - - /* uip_fw_output();*/ - - // tcpip_output(); - - /* Now, create the second packet. To do this, it is not enough to - just alter the length field, but we must also update the TCP - sequence number and point the uip_appdata to a new place in - memory. This place is detemined by the length of the first - packet (len1). */ - uip_len = len2 + UIP_TCPIP_HLEN; - #if UIP_CONF_IPV6 - - /* For IPv6, the IP length field does not include the IPv6 IP header - length. */ - BUF->len[0] = ( (uip_len - UIP_IPH_LEN) >> 8 ); - BUF->len[1] = ( (uip_len - UIP_IPH_LEN) & 0xff ); - #else /* UIP_CONF_IPV6 */ - BUF->len[0] = uip_len >> 8; - BUF->len[1] = uip_len & 0xff; - #endif /* UIP_CONF_IPV6 */ - - /* uip_appdata += len1;*/ - memcpy( uip_appdata, ( u8_t * ) uip_appdata + len1, len2 ); - - uip_add32( BUF->seqno, len1 ); - BUF->seqno[0] = uip_acc32[0]; - BUF->seqno[1] = uip_acc32[1]; - BUF->seqno[2] = uip_acc32[2]; - BUF->seqno[3] = uip_acc32[3]; - - /* Recalculate the TCP checksum. */ - BUF->tcpchksum = 0; - BUF->tcpchksum = ~( uip_tcpchksum() ); - - #if !UIP_CONF_IPV6 - - /* Recalculate the IP checksum. */ - BUF->ipchksum = 0; - BUF->ipchksum = ~( uip_ipchksum() ); - #endif /* UIP_CONF_IPV6 */ - - /* Transmit the second packet. */ - - /* uip_fw_output();*/ - - // tcpip_output(); - } - else - { - /* uip_fw_output();*/ - - // tcpip_output(); - } -} - -/*-----------------------------------------------------------------------------*/ diff --git a/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/uip-split.h b/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/uip-split.h deleted file mode 100644 index 446e19200..000000000 --- a/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/uip-split.h +++ /dev/null @@ -1,96 +0,0 @@ -/* - * Copyright (c) 2004, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * Author: Adam Dunkels - * - * $Id: uip-split.h,v 1.2 2006/06/12 08:00:30 adam Exp $ - */ -/** - * \addtogroup uip - * @{ - */ - -/** - * \defgroup uipsplit uIP TCP throughput booster hack - * @{ - * - * The basic uIP TCP implementation only allows each TCP connection to - * have a single TCP segment in flight at any given time. Because of - * the delayed ACK algorithm employed by most TCP receivers, uIP's - * limit on the amount of in-flight TCP segments seriously reduces the - * maximum achievable throughput for sending data from uIP. - * - * The uip-split module is a hack which tries to remedy this - * situation. By splitting maximum sized outgoing TCP segments into - * two, the delayed ACK algorithm is not invoked at TCP - * receivers. This improves the throughput when sending data from uIP - * by orders of magnitude. - * - * The uip-split module uses the uip-fw module (uIP IP packet - * forwarding) for sending packets. Therefore, the uip-fw module must - * be set up with the appropriate network interfaces for this module - * to work. - */ - - -/** - * \file - * Module for splitting outbound TCP segments in two to avoid the - * delayed ACK throughput degradation. - * \author - * Adam Dunkels - * - */ - -#ifndef __UIP_SPLIT_H__ -#define __UIP_SPLIT_H__ - -/** - * Handle outgoing packets. - * - * This function inspects an outgoing packet in the uip_buf buffer and - * sends it out using the uip_fw_output() function. If the packet is a - * full-sized TCP segment it will be split into two segments and - * transmitted separately. This function should be called instead of - * the actual device driver output function, or the uip_fw_output() - * function. - * - * The headers of the outgoing packet is assumed to be in the uip_buf - * buffer and the payload is assumed to be wherever uip_appdata - * points. The length of the outgoing packet is assumed to be in the - * uip_len variable. - * - */ -void uip_split_output(void); - -#endif /* __UIP_SPLIT_H__ */ - -/** @} */ -/** @} */ diff --git a/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/uip.c b/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/uip.c deleted file mode 100644 index 1c07f35ad..000000000 --- a/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/uip.c +++ /dev/null @@ -1,2233 +0,0 @@ -#define DEBUG_PRINTF( ... ) /*printf(__VA_ARGS__)*/ - -/** - * \defgroup uip The uIP TCP/IP stack - * @{ - * - * uIP is an implementation of the TCP/IP protocol stack intended for - * small 8-bit and 16-bit microcontrollers. - * - * uIP provides the necessary protocols for Internet communication, - * with a very small code footprint and RAM requirements - the uIP - * code size is on the order of a few kilobytes and RAM usage is on - * the order of a few hundred bytes. - */ - -/** - * \file - * The uIP TCP/IP stack code. - * \author Adam Dunkels - */ - -/* - * Copyright (c) 2001-2003, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: uip.c,v 1.65 2006/06/11 21:46:39 adam Exp $ - * - */ - -/* - * uIP is a small implementation of the IP, UDP and TCP protocols (as - * well as some basic ICMP stuff). The implementation couples the IP, - * UDP, TCP and the application layers very tightly. To keep the size - * of the compiled code down, this code frequently uses the goto - * statement. While it would be possible to break the uip_process() - * function into many smaller functions, this would increase the code - * size because of the overhead of parameter passing and the fact that - * the optimier would not be as efficient. - * - * The principle is that we have a small buffer, called the uip_buf, - * in which the device driver puts an incoming packet. The TCP/IP - * stack parses the headers in the packet, and calls the - * application. If the remote host has sent data to the application, - * this data is present in the uip_buf and the application read the - * data from there. It is up to the application to put this data into - * a byte stream if needed. The application will not be fed with data - * that is out of sequence. - * - * If the application whishes to send data to the peer, it should put - * its data into the uip_buf. The uip_appdata pointer points to the - * first available byte. The TCP/IP stack will calculate the - * checksums, and fill in the necessary header fields and finally send - * the packet back to the peer. -*/ -#include "uip.h" -#include "uipopt.h" -#include "uip_arch.h" -#include "uip_arp.h" -#include "FreeRTOS.h" - -#if UIP_CONF_IPV6 - #include "uip-neighbor.h" -#endif /* UIP_CONF_IPV6 */ - -#include - -/*---------------------------------------------------------------------------*/ - -/* Variable definitions. */ - -/* The IP address of this host. If it is defined to be fixed (by - setting UIP_FIXEDADDR to 1 in uipopt.h), the address is set - here. Otherwise, the address */ -#if UIP_FIXEDADDR > 0 -const uip_ipaddr_t uip_hostaddr = { HTONS( (UIP_IPADDR0 << 8) | UIP_IPADDR1 ), HTONS( (UIP_IPADDR2 << 8) | UIP_IPADDR3 ) }; -const uip_ipaddr_t uip_draddr = { HTONS( (UIP_DRIPADDR0 << 8) | UIP_DRIPADDR1 ), HTONS( (UIP_DRIPADDR2 << 8) | UIP_DRIPADDR3 ) }; -const uip_ipaddr_t uip_netmask = { HTONS( (UIP_NETMASK0 << 8) | UIP_NETMASK1 ), HTONS( (UIP_NETMASK2 << 8) | UIP_NETMASK3 ) }; -#else -uip_ipaddr_t uip_hostaddr, uip_draddr, uip_netmask; -#endif /* UIP_FIXEDADDR */ - -static const uip_ipaddr_t all_ones_addr = -#if UIP_CONF_IPV6 -{ 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff }; -#else /* UIP_CONF_IPV6 */ -{ - 0xffff, 0xffff -}; -#endif /* UIP_CONF_IPV6 */ -static const uip_ipaddr_t all_zeroes_addr = -#if UIP_CONF_IPV6 -{ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }; -#else /* UIP_CONF_IPV6 */ -{ - 0x0000, 0x0000 -}; -#endif /* UIP_CONF_IPV6 */ - -#if UIP_FIXEDETHADDR -const struct uip_eth_addr uip_ethaddr = { { UIP_ETHADDR0, UIP_ETHADDR1, UIP_ETHADDR2, UIP_ETHADDR3, UIP_ETHADDR4, UIP_ETHADDR5 } }; -#else -struct uip_eth_addr uip_ethaddr = { { 0, 0, 0, 0, 0, 0 } }; -#endif -#ifndef UIP_CONF_EXTERNAL_BUFFER - #ifdef __ICCARM__ - #pragma data_alignment = 4 -u8_t uip_buf[UIP_BUFSIZE + 2]; /* The packet buffer that contains incoming packets. */ - #else -u8_t uip_buf[UIP_BUFSIZE + 2] ALIGN_STRUCT_END; /* The packet buffer that contains incoming packets. */ - #endif -#endif /* UIP_CONF_EXTERNAL_BUFFER */ - -void *uip_appdata; /* The uip_appdata pointer points to - application data. */ -void *uip_sappdata; /* The uip_appdata pointer points to - the application data which is to - be sent. */ -#if UIP_URGDATA > 0 -void *uip_urgdata; /* The uip_urgdata pointer points to - urgent data (out-of-band data), if - present. */ -u16_t uip_urglen, uip_surglen; -#endif /* UIP_URGDATA > 0 */ - -u16_t uip_len, uip_slen; - -/* The uip_len is either 8 or 16 bits, - depending on the maximum packet - size. */ -u8_t uip_flags; /* The uip_flags variable is used for - communication between the TCP/IP stack - and the application program. */ -struct uip_conn *uip_conn; /* uip_conn always points to the current - connection. */ - -struct uip_conn uip_conns[UIP_CONNS]; - -/* The uip_conns array holds all TCP - connections. */ -u16_t uip_listenports[UIP_LISTENPORTS]; - -/* The uip_listenports list all currently - listning ports. */ -#if UIP_UDP -struct uip_udp_conn *uip_udp_conn; -struct uip_udp_conn uip_udp_conns[UIP_UDP_CONNS]; -#endif /* UIP_UDP */ - -static u16_t ipid; /* Ths ipid variable is an increasing - number that is used for the IP ID - field. */ - -void uip_setipid( u16_t id ) -{ - ipid = id; -} - -static u8_t iss[4]; /* The iss variable is used for the TCP - initial sequence number. */ - -#if UIP_ACTIVE_OPEN -static u16_t lastport; /* Keeps track of the last port used for - a new connection. */ -#endif /* UIP_ACTIVE_OPEN */ - -/* Temporary variables. */ -u8_t uip_acc32[4]; -static u8_t c, opt; -static u16_t tmp16; - -/* Structures and definitions. */ -#define TCP_FIN 0x01 -#define TCP_SYN 0x02 -#define TCP_RST 0x04 -#define TCP_PSH 0x08 -#define TCP_ACK 0x10 -#define TCP_URG 0x20 -#define TCP_CTL 0x3f - -#define TCP_OPT_END 0 /* End of TCP options list */ -#define TCP_OPT_NOOP 1 /* "No-operation" TCP option */ -#define TCP_OPT_MSS 2 /* Maximum segment size TCP option */ - -#define TCP_OPT_MSS_LEN 4 /* Length of TCP MSS option. */ - -#define ICMP_ECHO_REPLY 0 -#define ICMP_ECHO 8 - -#define ICMP6_ECHO_REPLY 129 -#define ICMP6_ECHO 128 -#define ICMP6_NEIGHBOR_SOLICITATION 135 -#define ICMP6_NEIGHBOR_ADVERTISEMENT 136 - -#define ICMP6_FLAG_S ( 1 << 6 ) -#define ICMP6_OPTION_SOURCE_LINK_ADDRESS 1 -#define ICMP6_OPTION_TARGET_LINK_ADDRESS 2 - -/* Macros. */ -#define BUF ( ( struct uip_tcpip_hdr * ) &uip_buf[UIP_LLH_LEN] ) -#define FBUF ( ( struct uip_tcpip_hdr * ) &uip_reassbuf[0] ) -#define ICMPBUF ( ( struct uip_icmpip_hdr * ) &uip_buf[UIP_LLH_LEN] ) -#define UDPBUF ( ( struct uip_udpip_hdr * ) &uip_buf[UIP_LLH_LEN] ) -#if UIP_STATISTICS == 1 -struct uip_stats uip_stat; - #define UIP_STAT( s ) s -#else - #define UIP_STAT( s ) -#endif /* UIP_STATISTICS == 1 */ - -#if UIP_LOGGING == 1 - #include -void uip_log( char *msg ); - #define UIP_LOG( m ) uip_log( m ) -#else - #define UIP_LOG( m ) -#endif /* UIP_LOGGING == 1 */ - -#if !UIP_ARCH_ADD32 -void uip_add32( u8_t *op32, u16_t op16 ) -{ - uip_acc32[3] = op32[3] + ( op16 & 0xff ); - uip_acc32[2] = op32[2] + ( op16 >> 8 ); - uip_acc32[1] = op32[1]; - uip_acc32[0] = op32[0]; - - if( uip_acc32[2] < (op16 >> 8) ) - { - ++uip_acc32[1]; - if( uip_acc32[1] == 0 ) - { - ++uip_acc32[0]; - } - } - - if( uip_acc32[3] < (op16 & 0xff) ) - { - ++uip_acc32[2]; - if( uip_acc32[2] == 0 ) - { - ++uip_acc32[1]; - if( uip_acc32[1] == 0 ) - { - ++uip_acc32[0]; - } - } - } -} - -#endif /* UIP_ARCH_ADD32 */ - -#if !UIP_ARCH_CHKSUM - -/*---------------------------------------------------------------------------*/ -static u16_t chksum( u16_t sum, const u8_t *data, u16_t len ) -{ - u16_t t; - const u8_t *dataptr; - const u8_t *last_byte; - - dataptr = data; - last_byte = data + len - 1; - - while( dataptr < last_byte ) - { /* At least two more bytes */ - t = ( dataptr[0] << 8 ) + dataptr[1]; - sum += t; - if( sum < t ) - { - sum++; /* carry */ - } - - dataptr += 2; - } - - if( dataptr == last_byte ) - { - t = ( dataptr[0] << 8 ) + 0; - sum += t; - if( sum < t ) - { - sum++; /* carry */ - } - } - - /* Return sum in host byte order. */ - return sum; -} - -/*---------------------------------------------------------------------------*/ -u16_t uip_chksum( u16_t *data, u16_t len ) -{ - return htons( chksum(0, ( u8_t * ) data, len) ); -} - -/*---------------------------------------------------------------------------*/ - #ifndef UIP_ARCH_IPCHKSUM -u16_t uip_ipchksum( void ) -{ - u16_t sum; - - sum = chksum( 0, &uip_buf[UIP_LLH_LEN], UIP_IPH_LEN ); - DEBUG_PRINTF( "uip_ipchksum: sum 0x%04x\n", sum ); - return( sum == 0 ) ? 0xffff : htons( sum ); -} - - #endif - -/*---------------------------------------------------------------------------*/ -static u16_t upper_layer_chksum( u8_t proto ) -{ - u16_t upper_layer_len; - u16_t sum; - - #if UIP_CONF_IPV6 - upper_layer_len = ( ((u16_t) (BUF->len[0]) << 8) + BUF->len[1] ); - #else /* UIP_CONF_IPV6 */ - upper_layer_len = ( ((u16_t) (BUF->len[0]) << 8) + BUF->len[1] ) - UIP_IPH_LEN; - #endif /* UIP_CONF_IPV6 */ - - /* First sum pseudoheader. */ - - /* IP protocol and length fields. This addition cannot carry. */ - sum = upper_layer_len + proto; - - /* Sum IP source and destination addresses. */ - sum = chksum( sum, ( u8_t * ) &BUF->srcipaddr[0], 2 * sizeof(uip_ipaddr_t) ); - - /* Sum TCP header and data. */ - sum = chksum( sum, &uip_buf[UIP_IPH_LEN + UIP_LLH_LEN], upper_layer_len ); - - return( sum == 0 ) ? 0xffff : htons( sum ); -} - -/*---------------------------------------------------------------------------*/ - #if UIP_CONF_IPV6 -u16_t uip_icmp6chksum( void ) -{ - return upper_layer_chksum( UIP_PROTO_ICMP6 ); -} - - #endif /* UIP_CONF_IPV6 */ - -/*---------------------------------------------------------------------------*/ -u16_t uip_tcpchksum( void ) -{ - return upper_layer_chksum( UIP_PROTO_TCP ); -} - -/*---------------------------------------------------------------------------*/ - #if UIP_UDP_CHECKSUMS -u16_t uip_udpchksum( void ) -{ - return upper_layer_chksum( UIP_PROTO_UDP ); -} - - #endif /* UIP_UDP_CHECKSUMS */ -#endif /* UIP_ARCH_CHKSUM */ - -/*---------------------------------------------------------------------------*/ -void uip_init( void ) -{ - for( c = 0; c < UIP_LISTENPORTS; ++c ) - { - uip_listenports[c] = 0; - } - - for( c = 0; c < UIP_CONNS; ++c ) - { - uip_conns[c].tcpstateflags = UIP_CLOSED; - } - - #if UIP_ACTIVE_OPEN - lastport = 1024; - #endif /* UIP_ACTIVE_OPEN */ - - #if UIP_UDP - for( c = 0; c < UIP_UDP_CONNS; ++c ) - { - uip_udp_conns[c].lport = 0; - } - - #endif /* UIP_UDP */ - - /* IPv4 initialization. */ - #if UIP_FIXEDADDR == 0 - - /* uip_hostaddr[0] = uip_hostaddr[1] = 0;*/ - #endif /* UIP_FIXEDADDR */ -} - -/*---------------------------------------------------------------------------*/ -#if UIP_ACTIVE_OPEN -struct uip_conn *uip_connect( uip_ipaddr_t *ripaddr, u16_t rport ) -{ - register struct uip_conn *conn, *cconn; - - /* Find an unused local port. */ -again: - ++lastport; - - if( lastport >= 32000 ) - { - lastport = 4096; - } - - /* Check if this port is already in use, and if so try to find - another one. */ - for( c = 0; c < UIP_CONNS; ++c ) - { - conn = &uip_conns[c]; - if( conn->tcpstateflags != UIP_CLOSED && conn->lport == htons(lastport) ) - { - goto again; - } - } - - conn = 0; - for( c = 0; c < UIP_CONNS; ++c ) - { - cconn = &uip_conns[c]; - if( cconn->tcpstateflags == UIP_CLOSED ) - { - conn = cconn; - break; - } - - if( cconn->tcpstateflags == UIP_TIME_WAIT ) - { - if( conn == 0 || cconn->timer > conn->timer ) - { - conn = cconn; - } - } - } - - if( conn == 0 ) - { - return 0; - } - - conn->tcpstateflags = UIP_SYN_SENT; - - conn->snd_nxt[0] = iss[0]; - conn->snd_nxt[1] = iss[1]; - conn->snd_nxt[2] = iss[2]; - conn->snd_nxt[3] = iss[3]; - - conn->initialmss = conn->mss = UIP_TCP_MSS; - - conn->len = 1; /* TCP length of the SYN is one. */ - conn->nrtx = 0; - conn->timer = 1; /* Send the SYN next time around. */ - conn->rto = UIP_RTO; - conn->sa = 0; - conn->sv = 16; /* Initial value of the RTT variance. */ - conn->lport = htons( lastport ); - conn->rport = rport; - uip_ipaddr_copy( &conn->ripaddr, ripaddr ); - - return conn; -} - -#endif /* UIP_ACTIVE_OPEN */ - -/*---------------------------------------------------------------------------*/ -#if UIP_UDP -struct uip_udp_conn *uip_udp_new( uip_ipaddr_t *ripaddr, u16_t rport ) -{ - register struct uip_udp_conn *conn; - - /* Find an unused local port. */ -again: - ++lastport; - - if( lastport >= 32000 ) - { - lastport = 4096; - } - - for( c = 0; c < UIP_UDP_CONNS; ++c ) - { - if( uip_udp_conns[c].lport == htons(lastport) ) - { - goto again; - } - } - - conn = 0; - for( c = 0; c < UIP_UDP_CONNS; ++c ) - { - if( uip_udp_conns[c].lport == 0 ) - { - conn = &uip_udp_conns[c]; - break; - } - } - - if( conn == 0 ) - { - return 0; - } - - conn->lport = HTONS( lastport ); - conn->rport = rport; - if( ripaddr == NULL ) - { - memset( conn->ripaddr, 0, sizeof(uip_ipaddr_t) ); - } - else - { - uip_ipaddr_copy( &conn->ripaddr, ripaddr ); - } - - conn->ttl = UIP_TTL; - - return conn; -} - -#endif /* UIP_UDP */ - -/*---------------------------------------------------------------------------*/ -void uip_unlisten( u16_t port ) -{ - for( c = 0; c < UIP_LISTENPORTS; ++c ) - { - if( uip_listenports[c] == port ) - { - uip_listenports[c] = 0; - return; - } - } -} - -/*---------------------------------------------------------------------------*/ -void uip_listen( u16_t port ) -{ - for( c = 0; c < UIP_LISTENPORTS; ++c ) - { - if( uip_listenports[c] == 0 ) - { - uip_listenports[c] = port; - return; - } - } -} - -/*---------------------------------------------------------------------------*/ - -/* XXX: IP fragment reassembly: not well-tested. */ -#if UIP_REASSEMBLY && !UIP_CONF_IPV6 - #define UIP_REASS_BUFSIZE ( UIP_BUFSIZE - UIP_LLH_LEN ) -static u8_t uip_reassbuf[UIP_REASS_BUFSIZE]; -static u8_t uip_reassbitmap[UIP_REASS_BUFSIZE / ( 8 * 8 )]; -static const u8_t bitmap_bits[8] = { 0xff, 0x7f, 0x3f, 0x1f, 0x0f, 0x07, 0x03, 0x01 }; -static u16_t uip_reasslen; -static u8_t uip_reassflags; - #define UIP_REASS_FLAG_LASTFRAG 0x01 -static u8_t uip_reasstmr; - - #define IP_MF 0x20 - -static u8_t uip_reass( void ) -{ - u16_t offset, len; - u16_t i; - - /* If ip_reasstmr is zero, no packet is present in the buffer, so we - write the IP header of the fragment into the reassembly - buffer. The timer is updated with the maximum age. */ - if( uip_reasstmr == 0 ) - { - memcpy( uip_reassbuf, &BUF->vhl, UIP_IPH_LEN ); - uip_reasstmr = UIP_REASS_MAXAGE; - uip_reassflags = 0; - - /* Clear the bitmap. */ - memset( uip_reassbitmap, 0, sizeof(uip_reassbitmap) ); - } - - /* Check if the incoming fragment matches the one currently present - in the reasembly buffer. If so, we proceed with copying the - fragment into the buffer. */ - if - ( - BUF->srcipaddr[0] == FBUF->srcipaddr[0] && - BUF->srcipaddr[1] == FBUF->srcipaddr[1] && - BUF->destipaddr[0] == FBUF->destipaddr[0] && - BUF->destipaddr[1] == FBUF->destipaddr[1] && - BUF->ipid[0] == FBUF->ipid[0] && - BUF->ipid[1] == FBUF->ipid[1] - ) - { - len = ( BUF->len[0] << 8 ) + BUF->len[1] - ( BUF->vhl & 0x0f ) * 4; - offset = ( ((BUF->ipoffset[0] & 0x3f) << 8) + BUF->ipoffset[1] ) * 8; - - /* If the offset or the offset + fragment length overflows the - reassembly buffer, we discard the entire packet. */ - if( offset > UIP_REASS_BUFSIZE || offset + len > UIP_REASS_BUFSIZE ) - { - uip_reasstmr = 0; - goto nullreturn; - } - - /* Copy the fragment into the reassembly buffer, at the right - offset. */ - memcpy( &uip_reassbuf[UIP_IPH_LEN + offset], ( char * ) BUF + ( int ) ((BUF->vhl & 0x0f) * 4), len ); - - /* Update the bitmap. */ - if( offset / (8 * 8) == (offset + len) / (8 * 8) ) - { - /* If the two endpoints are in the same byte, we only update - that byte. */ - uip_reassbitmap[offset / ( 8 * 8 )] |= bitmap_bits[( offset / 8 ) & 7] &~bitmap_bits[( (offset + len) / 8 ) & 7]; - } - else - { - /* If the two endpoints are in different bytes, we update the - bytes in the endpoints and fill the stuff inbetween with - 0xff. */ - uip_reassbitmap[offset / ( 8 * 8 )] |= bitmap_bits[( offset / 8 ) & 7]; - for( i = 1 + offset / (8 * 8); i < (offset + len) / (8 * 8); ++i ) - { - uip_reassbitmap[i] = 0xff; - } - - uip_reassbitmap[( offset + len ) / ( 8 * 8 )] |= ~bitmap_bits[( (offset + len) / 8 ) & 7]; - } - - /* If this fragment has the More Fragments flag set to zero, we - know that this is the last fragment, so we can calculate the - size of the entire packet. We also set the - IP_REASS_FLAG_LASTFRAG flag to indicate that we have received - the final fragment. */ - if( (BUF->ipoffset[0] & IP_MF) == 0 ) - { - uip_reassflags |= UIP_REASS_FLAG_LASTFRAG; - uip_reasslen = offset + len; - } - - /* Finally, we check if we have a full packet in the buffer. We do - this by checking if we have the last fragment and if all bits - in the bitmap are set. */ - if( uip_reassflags & UIP_REASS_FLAG_LASTFRAG ) - { - /* Check all bytes up to and including all but the last byte in - the bitmap. */ - for( i = 0; i < uip_reasslen / (8 * 8) - 1; ++i ) - { - if( uip_reassbitmap[i] != 0xff ) - { - goto nullreturn; - } - } - - /* Check the last byte in the bitmap. It should contain just the - right amount of bits. */ - if( uip_reassbitmap[uip_reasslen / (8 * 8)] != (u8_t)~bitmap_bits[uip_reasslen / 8 & 7] ) - { - goto nullreturn; - } - - /* If we have come this far, we have a full packet in the - buffer, so we allocate a pbuf and copy the packet into it. We - also reset the timer. */ - uip_reasstmr = 0; - memcpy( BUF, FBUF, uip_reasslen ); - - /* Pretend to be a "normal" (i.e., not fragmented) IP packet - from now on. */ - BUF->ipoffset[0] = BUF->ipoffset[1] = 0; - BUF->len[0] = uip_reasslen >> 8; - BUF->len[1] = uip_reasslen & 0xff; - BUF->ipchksum = 0; - BUF->ipchksum = ~( uip_ipchksum() ); - - return uip_reasslen; - } - } - -nullreturn: - return 0; -} - -#endif /* UIP_REASSEMBLY */ - -/*---------------------------------------------------------------------------*/ -static void uip_add_rcv_nxt( u16_t n ) -{ - uip_add32( uip_conn->rcv_nxt, n ); - uip_conn->rcv_nxt[0] = uip_acc32[0]; - uip_conn->rcv_nxt[1] = uip_acc32[1]; - uip_conn->rcv_nxt[2] = uip_acc32[2]; - uip_conn->rcv_nxt[3] = uip_acc32[3]; -} - -/*---------------------------------------------------------------------------*/ -void uip_process( u8_t flag ) -{ - register struct uip_conn *uip_connr = uip_conn; - - #if UIP_UDP - if( flag == UIP_UDP_SEND_CONN ) - { - goto udp_send; - } - - #endif /* UIP_UDP */ - - uip_sappdata = uip_appdata = &uip_buf[UIP_IPTCPH_LEN + UIP_LLH_LEN]; - - /* Check if we were invoked because of a poll request for a - particular connection. */ - if( flag == UIP_POLL_REQUEST ) - { - if( (uip_connr->tcpstateflags & UIP_TS_MASK) == UIP_ESTABLISHED && !uip_outstanding(uip_connr) ) - { - uip_flags = UIP_POLL; - UIP_APPCALL(); - goto appsend; - } - - goto drop; - - /* Check if we were invoked because of the perodic timer fireing. */ - } - else if( flag == UIP_TIMER ) - { - #if UIP_REASSEMBLY - if( uip_reasstmr != 0 ) - { - --uip_reasstmr; - } - - #endif /* UIP_REASSEMBLY */ - - /* Increase the initial sequence number. */ - if( ++iss[3] == 0 ) - { - if( ++iss[2] == 0 ) - { - if( ++iss[1] == 0 ) - { - ++iss[0]; - } - } - } - - /* Reset the length variables. */ - uip_len = 0; - uip_slen = 0; - - /* Check if the connection is in a state in which we simply wait - for the connection to time out. If so, we increase the - connection's timer and remove the connection if it times - out. */ - if( uip_connr->tcpstateflags == UIP_TIME_WAIT || uip_connr->tcpstateflags == UIP_FIN_WAIT_2 ) - { - ++( uip_connr->timer ); - if( uip_connr->timer == UIP_TIME_WAIT_TIMEOUT ) - { - uip_connr->tcpstateflags = UIP_CLOSED; - } - } - else if( uip_connr->tcpstateflags != UIP_CLOSED ) - { - /* If the connection has outstanding data, we increase the - connection's timer and see if it has reached the RTO value - in which case we retransmit. */ - if( uip_outstanding(uip_connr) ) - { - uip_connr->timer = uip_connr->timer - 1; - if( uip_connr->timer == 0 ) - { - if - ( - uip_connr->nrtx == UIP_MAXRTX || - ( - (uip_connr->tcpstateflags == UIP_SYN_SENT || uip_connr->tcpstateflags == UIP_SYN_RCVD) && - uip_connr->nrtx == UIP_MAXSYNRTX - ) - ) - { - uip_connr->tcpstateflags = UIP_CLOSED; - - /* We call UIP_APPCALL() with uip_flags set to - UIP_TIMEDOUT to inform the application that the - connection has timed out. */ - uip_flags = UIP_TIMEDOUT; - UIP_APPCALL(); - - /* We also send a reset packet to the remote host. */ - BUF->flags = TCP_RST | TCP_ACK; - goto tcp_send_nodata; - } - - /* Exponential backoff. */ - uip_connr->timer = UIP_RTO << ( uip_connr->nrtx > 4 ? 4 : uip_connr->nrtx ); - ++( uip_connr->nrtx ); - - /* Ok, so we need to retransmit. We do this differently - depending on which state we are in. In ESTABLISHED, we - call upon the application so that it may prepare the - data for the retransmit. In SYN_RCVD, we resend the - SYNACK that we sent earlier and in LAST_ACK we have to - retransmit our FINACK. */ - UIP_STAT( ++uip_stat.tcp.rexmit ); - switch( uip_connr->tcpstateflags & UIP_TS_MASK ) - { - case UIP_SYN_RCVD: - /* In the SYN_RCVD state, we should retransmit our - SYNACK. */ - goto tcp_send_synack; - - #if UIP_ACTIVE_OPEN - - case UIP_SYN_SENT: - /* In the SYN_SENT state, we retransmit out SYN. */ - BUF->flags = 0; - goto tcp_send_syn; - #endif /* UIP_ACTIVE_OPEN */ - - case UIP_ESTABLISHED: - /* In the ESTABLISHED state, we call upon the application - to do the actual retransmit after which we jump into - the code for sending out the packet (the apprexmit - label). */ - uip_flags = UIP_REXMIT; - UIP_APPCALL(); - goto apprexmit; - - case UIP_FIN_WAIT_1: - case UIP_CLOSING: - case UIP_LAST_ACK: - /* In all these states we should retransmit a FINACK. */ - goto tcp_send_finack; - } - } - } - else if( (uip_connr->tcpstateflags & UIP_TS_MASK) == UIP_ESTABLISHED ) - { - /* If there was no need for a retransmission, we poll the - application for new data. */ - uip_flags = UIP_POLL; - UIP_APPCALL(); - goto appsend; - } - } - - goto drop; - } - - #if UIP_UDP - if( flag == UIP_UDP_TIMER ) - { - if( uip_udp_conn->lport != 0 ) - { - uip_conn = NULL; - uip_sappdata = uip_appdata = &uip_buf[UIP_LLH_LEN + UIP_IPUDPH_LEN]; - uip_len = uip_slen = 0; - uip_flags = UIP_POLL; - UIP_UDP_APPCALL(); - goto udp_send; - } - else - { - goto drop; - } - } - - #endif - - /* This is where the input processing starts. */ - UIP_STAT( ++uip_stat.ip.recv ); - - /* Start of IP input header processing code. */ - #if UIP_CONF_IPV6 - - /* Check validity of the IP header. */ - if( (BUF->vtc & 0xf0) != 0x60 ) - { /* IP version and header length. */ - UIP_STAT( ++uip_stat.ip.drop ); - UIP_STAT( ++uip_stat.ip.vhlerr ); - UIP_LOG( "ipv6: invalid version." ); - goto drop; - } - - #else /* UIP_CONF_IPV6 */ - - /* Check validity of the IP header. */ - if( BUF->vhl != 0x45 ) - { /* IP version and header length. */ - UIP_STAT( ++uip_stat.ip.drop ); - UIP_STAT( ++uip_stat.ip.vhlerr ); - UIP_LOG( "ip: invalid version or header length." ); - goto drop; - } - - #endif /* UIP_CONF_IPV6 */ - - /* Check the size of the packet. If the size reported to us in - uip_len is smaller the size reported in the IP header, we assume - that the packet has been corrupted in transit. If the size of - uip_len is larger than the size reported in the IP packet header, - the packet has been padded and we set uip_len to the correct - value.. */ - if( (BUF->len[0] << 8) + BUF->len[1] <= uip_len ) - { - uip_len = ( BUF->len[0] << 8 ) + BUF->len[1]; - #if UIP_CONF_IPV6 - uip_len += 40; /* The length reported in the IPv6 header is the - length of the payload that follows the - header. However, uIP uses the uip_len variable - for holding the size of the entire packet, - including the IP header. For IPv4 this is not a - problem as the length field in the IPv4 header - contains the length of the entire packet. But - for IPv6 we need to add the size of the IPv6 - header (40 bytes). */ - #endif /* UIP_CONF_IPV6 */ - } - else - { - UIP_LOG( "ip: packet shorter than reported in IP header." ); - goto drop; - } - - #if !UIP_CONF_IPV6 - - /* Check the fragment flag. */ - if( (BUF->ipoffset[0] & 0x3f) != 0 || BUF->ipoffset[1] != 0 ) - { - #if UIP_REASSEMBLY - uip_len = uip_reass(); - if( uip_len == 0 ) - { - goto drop; - } - - #else /* UIP_REASSEMBLY */ - UIP_STAT( ++uip_stat.ip.drop ); - UIP_STAT( ++uip_stat.ip.fragerr ); - UIP_LOG( "ip: fragment dropped." ); - goto drop; - #endif /* UIP_REASSEMBLY */ - } - - #endif /* UIP_CONF_IPV6 */ - - if( uip_ipaddr_cmp(uip_hostaddr, all_zeroes_addr) ) - { - /* If we are configured to use ping IP address configuration and - hasn't been assigned an IP address yet, we accept all ICMP - packets. */ - #if UIP_PINGADDRCONF && !UIP_CONF_IPV6 - if( BUF->proto == UIP_PROTO_ICMP ) - { - UIP_LOG( "ip: possible ping config packet received." ); - goto icmp_input; - } - else - { - UIP_LOG( "ip: packet dropped since no address assigned." ); - goto drop; - } - - #endif /* UIP_PINGADDRCONF */ - } - else - { - /* If IP broadcast support is configured, we check for a broadcast - UDP packet, which may be destined to us. */ - #if UIP_BROADCAST - DEBUG_PRINTF( "UDP IP checksum 0x%04x\n", uip_ipchksum() ); - if( BUF->proto == UIP_PROTO_UDP && uip_ipaddr_cmp(BUF->destipaddr, all_ones_addr) /*&& - uip_ipchksum() == 0xffff*/ ) - { - goto udp_input; - } - - #endif /* UIP_BROADCAST */ - - /* Check if the packet is destined for our IP address. */ - #if !UIP_CONF_IPV6 - if( !uip_ipaddr_cmp(BUF->destipaddr, uip_hostaddr) ) - { - UIP_STAT( ++uip_stat.ip.drop ); - goto drop; - } - - #else /* UIP_CONF_IPV6 */ - - /* For IPv6, packet reception is a little trickier as we need to - make sure that we listen to certain multicast addresses (all - hosts multicast address, and the solicited-node multicast - address) as well. However, we will cheat here and accept all - multicast packets that are sent to the ff02::/16 addresses. */ - if( !uip_ipaddr_cmp(BUF->destipaddr, uip_hostaddr) && BUF->destipaddr[0] != HTONS(0xff02) ) - { - UIP_STAT( ++uip_stat.ip.drop ); - goto drop; - } - - #endif /* UIP_CONF_IPV6 */ - } - - #if !UIP_CONF_IPV6 - if( uip_ipchksum() != 0xffff ) - { /* Compute and check the IP header - checksum. */ - UIP_STAT( ++uip_stat.ip.drop ); - UIP_STAT( ++uip_stat.ip.chkerr ); - UIP_LOG( "ip: bad checksum." ); - goto drop; - } - - #endif /* UIP_CONF_IPV6 */ - - if( BUF->proto == UIP_PROTO_TCP ) - { /* Check for TCP packet. If so, - proceed with TCP input - processing. */ - goto tcp_input; - } - - #if UIP_UDP - if( BUF->proto == UIP_PROTO_UDP ) - { - goto udp_input; - } - - #endif /* UIP_UDP */ - - #if !UIP_CONF_IPV6 - - /* ICMPv4 processing code follows. */ - if( BUF->proto != UIP_PROTO_ICMP ) - { /* We only allow ICMP packets from - here. */ - UIP_STAT( ++uip_stat.ip.drop ); - UIP_STAT( ++uip_stat.ip.protoerr ); - UIP_LOG( "ip: neither tcp nor icmp." ); - goto drop; - } - - #if UIP_PINGADDRCONF - icmp_input : - #endif /* UIP_PINGADDRCONF */ - UIP_STAT( ++uip_stat.icmp.recv ); - - /* ICMP echo (i.e., ping) processing. This is simple, we only change - the ICMP type from ECHO to ECHO_REPLY and adjust the ICMP - checksum before we return the packet. */ - if( ICMPBUF->type != ICMP_ECHO ) - { - UIP_STAT( ++uip_stat.icmp.drop ); - UIP_STAT( ++uip_stat.icmp.typeerr ); - UIP_LOG( "icmp: not icmp echo." ); - goto drop; - } - - /* If we are configured to use ping IP address assignment, we use - the destination IP address of this ping packet and assign it to - ourself. */ - #if UIP_PINGADDRCONF - if( (uip_hostaddr[0] | uip_hostaddr[1]) == 0 ) - { - uip_hostaddr[0] = BUF->destipaddr[0]; - uip_hostaddr[1] = BUF->destipaddr[1]; - } - - #endif /* UIP_PINGADDRCONF */ - - ICMPBUF->type = ICMP_ECHO_REPLY; - - if( ICMPBUF->icmpchksum >= HTONS(0xffff - (ICMP_ECHO << 8)) ) - { - ICMPBUF->icmpchksum += HTONS( ICMP_ECHO << 8 ) + 1; - } - else - { - ICMPBUF->icmpchksum += HTONS( ICMP_ECHO << 8 ); - } - - /* Swap IP addresses. */ - uip_ipaddr_copy( BUF->destipaddr, BUF->srcipaddr ); - uip_ipaddr_copy( BUF->srcipaddr, uip_hostaddr ); - - UIP_STAT( ++uip_stat.icmp.sent ); - goto send; - - /* End of IPv4 input header processing code. */ - #else /* !UIP_CONF_IPV6 */ - - /* This is IPv6 ICMPv6 processing code. */ - DEBUG_PRINTF( "icmp6_input: length %d\n", uip_len ); - - if( BUF->proto != UIP_PROTO_ICMP6 ) - { /* We only allow ICMPv6 packets from - here. */ - UIP_STAT( ++uip_stat.ip.drop ); - UIP_STAT( ++uip_stat.ip.protoerr ); - UIP_LOG( "ip: neither tcp nor icmp6." ); - goto drop; - } - - UIP_STAT( ++uip_stat.icmp.recv ); - - /* If we get a neighbor solicitation for our address we should send - a neighbor advertisement message back. */ - if( ICMPBUF->type == ICMP6_NEIGHBOR_SOLICITATION ) - { - if( uip_ipaddr_cmp(ICMPBUF->icmp6data, uip_hostaddr) ) - { - if( ICMPBUF->options[0] == ICMP6_OPTION_SOURCE_LINK_ADDRESS ) - { - /* Save the sender's address in our neighbor list. */ - uip_neighbor_add( ICMPBUF->srcipaddr, &(ICMPBUF->options[2]) ); - } - - /* We should now send a neighbor advertisement back to where the - neighbor solicication came from. */ - ICMPBUF->type = ICMP6_NEIGHBOR_ADVERTISEMENT; - ICMPBUF->flags = ICMP6_FLAG_S; /* Solicited flag. */ - - ICMPBUF->reserved1 = ICMPBUF->reserved2 = ICMPBUF->reserved3 = 0; - - uip_ipaddr_copy( ICMPBUF->destipaddr, ICMPBUF->srcipaddr ); - uip_ipaddr_copy( ICMPBUF->srcipaddr, uip_hostaddr ); - ICMPBUF->options[0] = ICMP6_OPTION_TARGET_LINK_ADDRESS; - ICMPBUF->options[1] = 1; /* Options length, 1 = 8 bytes. */ - memcpy( &(ICMPBUF->options[2]), &uip_ethaddr, sizeof(uip_ethaddr) ); - ICMPBUF->icmpchksum = 0; - ICMPBUF->icmpchksum = ~uip_icmp6chksum(); - goto send; - } - - goto drop; - } - else if( ICMPBUF->type == ICMP6_ECHO ) - { - /* ICMP echo (i.e., ping) processing. This is simple, we only - change the ICMP type from ECHO to ECHO_REPLY and update the - ICMP checksum before we return the packet. */ - ICMPBUF->type = ICMP6_ECHO_REPLY; - - uip_ipaddr_copy( BUF->destipaddr, BUF->srcipaddr ); - uip_ipaddr_copy( BUF->srcipaddr, uip_hostaddr ); - ICMPBUF->icmpchksum = 0; - ICMPBUF->icmpchksum = ~uip_icmp6chksum(); - - UIP_STAT( ++uip_stat.icmp.sent ); - goto send; - } - else - { - DEBUG_PRINTF( "Unknown icmp6 message type %d\n", ICMPBUF->type ); - UIP_STAT( ++uip_stat.icmp.drop ); - UIP_STAT( ++uip_stat.icmp.typeerr ); - UIP_LOG( "icmp: unknown ICMP message." ); - goto drop; - } - - /* End of IPv6 ICMP processing. */ - #endif /* !UIP_CONF_IPV6 */ - - #if UIP_UDP - - /* UDP input processing. */ - udp_input : - /* UDP processing is really just a hack. We don't do anything to the - UDP/IP headers, but let the UDP application do all the hard - work. If the application sets uip_slen, it has a packet to - send. */ - #if UIP_UDP_CHECKSUMS - uip_len = uip_len - UIP_IPUDPH_LEN; - uip_appdata = &uip_buf[UIP_LLH_LEN + UIP_IPUDPH_LEN]; - if( UDPBUF->udpchksum != 0 && uip_udpchksum() != 0xffff ) - { - UIP_STAT( ++uip_stat.udp.drop ); - UIP_STAT( ++uip_stat.udp.chkerr ); - UIP_LOG( "udp: bad checksum." ); - goto drop; - } - - #else /* UIP_UDP_CHECKSUMS */ - uip_len = uip_len - UIP_IPUDPH_LEN; - #endif /* UIP_UDP_CHECKSUMS */ - - /* Demultiplex this UDP packet between the UDP "connections". */ - for( uip_udp_conn = &uip_udp_conns[0]; uip_udp_conn < &uip_udp_conns[UIP_UDP_CONNS]; ++uip_udp_conn ) - { - /* If the local UDP port is non-zero, the connection is considered - to be used. If so, the local port number is checked against the - destination port number in the received packet. If the two port - numbers match, the remote port number is checked if the - connection is bound to a remote port. Finally, if the - connection is bound to a remote IP address, the source IP - address of the packet is checked. */ - if - ( - uip_udp_conn->lport != 0 && - UDPBUF->destport == uip_udp_conn->lport && - (uip_udp_conn->rport == 0 || UDPBUF->srcport == uip_udp_conn->rport) && - ( - uip_ipaddr_cmp(uip_udp_conn->ripaddr, all_zeroes_addr) || - uip_ipaddr_cmp(uip_udp_conn->ripaddr, all_ones_addr) || - uip_ipaddr_cmp(BUF->srcipaddr, uip_udp_conn->ripaddr) - ) - ) - { - goto udp_found; - } - } - - UIP_LOG( "udp: no matching connection found" ); - goto drop; - -udp_found: - UIP_STAT( ++uip_stat.udp.recv ); - uip_conn = NULL; - uip_flags = UIP_NEWDATA; - uip_sappdata = uip_appdata = &uip_buf[UIP_LLH_LEN + UIP_IPUDPH_LEN]; - uip_slen = 0; - UIP_UDP_APPCALL(); -udp_send: - if( uip_slen == 0 ) - { - goto drop; - } - - uip_len = uip_slen + UIP_IPUDPH_LEN; - - #if UIP_CONF_IPV6 - - /* For IPv6, the IP length field does not include the IPv6 IP header - length. */ - BUF->len[0] = ( (uip_len - UIP_IPH_LEN) >> 8 ); - BUF->len[1] = ( (uip_len - UIP_IPH_LEN) & 0xff ); - #else /* UIP_CONF_IPV6 */ - BUF->len[0] = ( uip_len >> 8 ); - BUF->len[1] = ( uip_len & 0xff ); - #endif /* UIP_CONF_IPV6 */ - - BUF->ttl = uip_udp_conn->ttl; - BUF->proto = UIP_PROTO_UDP; - - UDPBUF->udplen = HTONS( uip_slen + UIP_UDPH_LEN ); - UDPBUF->udpchksum = 0; - - BUF->srcport = uip_udp_conn->lport; - BUF->destport = uip_udp_conn->rport; - - uip_ipaddr_copy( BUF->srcipaddr, uip_hostaddr ); - uip_ipaddr_copy( BUF->destipaddr, uip_udp_conn->ripaddr ); - - uip_appdata = &uip_buf[UIP_LLH_LEN + UIP_IPTCPH_LEN]; - - #if UIP_UDP_CHECKSUMS - - /* Calculate UDP checksum. */ - UDPBUF->udpchksum = ~( uip_udpchksum() ); - if( UDPBUF->udpchksum == 0 ) - { - UDPBUF->udpchksum = 0xffff; - } - - #endif /* UIP_UDP_CHECKSUMS */ - UIP_STAT( ++uip_stat.udp.sent ); - goto ip_send_nolen; - #endif /* UIP_UDP */ - - /* TCP input processing. */ - tcp_input : UIP_STAT( ++uip_stat.tcp.recv ); - - /* Start of TCP input header processing code. */ - if( uip_tcpchksum() != 0xffff ) - { /* Compute and check the TCP - checksum. */ - UIP_STAT( ++uip_stat.tcp.drop ); - UIP_STAT( ++uip_stat.tcp.chkerr ); - UIP_LOG( "tcp: bad checksum." ); - goto drop; - } - - /* Demultiplex this segment. */ - - /* First check any active connections. */ - for( uip_connr = &uip_conns[0]; uip_connr <= &uip_conns[UIP_CONNS - 1]; ++uip_connr ) - { - if - ( - uip_connr->tcpstateflags != UIP_CLOSED && - BUF->destport == uip_connr->lport && - BUF->srcport == uip_connr->rport && - uip_ipaddr_cmp(BUF->srcipaddr, uip_connr->ripaddr) - ) - { - goto found; - } - } - - /* If we didn't find and active connection that expected the packet, - either this packet is an old duplicate, or this is a SYN packet - destined for a connection in LISTEN. If the SYN flag isn't set, - it is an old packet and we send a RST. */ - if( (BUF->flags & TCP_CTL) != TCP_SYN ) - { - goto reset; - } - - tmp16 = BUF->destport; - - /* Next, check listening connections. */ - for( c = 0; c < UIP_LISTENPORTS; ++c ) - { - if( tmp16 == uip_listenports[c] ) - { - goto found_listen; - } - } - - /* No matching connection found, so we send a RST packet. */ - UIP_STAT( ++uip_stat.tcp.synrst ); -reset: - /* We do not send resets in response to resets. */ - if( BUF->flags & TCP_RST ) - { - goto drop; - } - - UIP_STAT( ++uip_stat.tcp.rst ); - - BUF->flags = TCP_RST | TCP_ACK; - uip_len = UIP_IPTCPH_LEN; - BUF->tcpoffset = 5 << 4; - - /* Flip the seqno and ackno fields in the TCP header. */ - c = BUF->seqno[3]; - BUF->seqno[3] = BUF->ackno[3]; - BUF->ackno[3] = c; - - c = BUF->seqno[2]; - BUF->seqno[2] = BUF->ackno[2]; - BUF->ackno[2] = c; - - c = BUF->seqno[1]; - BUF->seqno[1] = BUF->ackno[1]; - BUF->ackno[1] = c; - - c = BUF->seqno[0]; - BUF->seqno[0] = BUF->ackno[0]; - BUF->ackno[0] = c; - - /* We also have to increase the sequence number we are - acknowledging. If the least significant byte overflowed, we need - to propagate the carry to the other bytes as well. */ - if( ++BUF->ackno[3] == 0 ) - { - if( ++BUF->ackno[2] == 0 ) - { - if( ++BUF->ackno[1] == 0 ) - { - ++BUF->ackno[0]; - } - } - } - - /* Swap port numbers. */ - tmp16 = BUF->srcport; - BUF->srcport = BUF->destport; - BUF->destport = tmp16; - - /* Swap IP addresses. */ - uip_ipaddr_copy( BUF->destipaddr, BUF->srcipaddr ); - uip_ipaddr_copy( BUF->srcipaddr, uip_hostaddr ); - - /* And send out the RST packet! */ - goto tcp_send_noconn; - - /* This label will be jumped to if we matched the incoming packet - with a connection in LISTEN. In that case, we should create a new - connection and send a SYNACK in return. */ -found_listen: - /* First we check if there are any connections avaliable. Unused - connections are kept in the same table as used connections, but - unused ones have the tcpstate set to CLOSED. Also, connections in - TIME_WAIT are kept track of and we'll use the oldest one if no - CLOSED connections are found. Thanks to Eddie C. Dost for a very - nice algorithm for the TIME_WAIT search. */ - uip_connr = 0; - for( c = 0; c < UIP_CONNS; ++c ) - { - if( uip_conns[c].tcpstateflags == UIP_CLOSED ) - { - uip_connr = &uip_conns[c]; - break; - } - - if( uip_conns[c].tcpstateflags == UIP_TIME_WAIT ) - { - if( uip_connr == 0 || uip_conns[c].timer > uip_connr->timer ) - { - uip_connr = &uip_conns[c]; - } - } - } - - if( uip_connr == 0 ) - { - /* All connections are used already, we drop packet and hope that - the remote end will retransmit the packet at a time when we - have more spare connections. */ - UIP_STAT( ++uip_stat.tcp.syndrop ); - UIP_LOG( "tcp: found no unused connections." ); - goto drop; - } - - uip_conn = uip_connr; - - /* Fill in the necessary fields for the new connection. */ - uip_connr->rto = uip_connr->timer = UIP_RTO; - uip_connr->sa = 0; - uip_connr->sv = 4; - uip_connr->nrtx = 0; - uip_connr->lport = BUF->destport; - uip_connr->rport = BUF->srcport; - uip_ipaddr_copy( uip_connr->ripaddr, BUF->srcipaddr ); - uip_connr->tcpstateflags = UIP_SYN_RCVD; - - uip_connr->snd_nxt[0] = iss[0]; - uip_connr->snd_nxt[1] = iss[1]; - uip_connr->snd_nxt[2] = iss[2]; - uip_connr->snd_nxt[3] = iss[3]; - uip_connr->len = 1; - - /* rcv_nxt should be the seqno from the incoming packet + 1. */ - uip_connr->rcv_nxt[3] = BUF->seqno[3]; - uip_connr->rcv_nxt[2] = BUF->seqno[2]; - uip_connr->rcv_nxt[1] = BUF->seqno[1]; - uip_connr->rcv_nxt[0] = BUF->seqno[0]; - uip_add_rcv_nxt( 1 ); - - /* Parse the TCP MSS option, if present. */ - if( (BUF->tcpoffset & 0xf0) > 0x50 ) - { - for( c = 0; c < ((BUF->tcpoffset >> 4) - 5) << 2; ) - { - opt = uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + c]; - if( opt == TCP_OPT_END ) - { - /* End of options. */ - break; - } - else if( opt == TCP_OPT_NOOP ) - { - ++c; - - /* NOP option. */ - } - else if( opt == TCP_OPT_MSS && uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 1 + c] == TCP_OPT_MSS_LEN ) - { - /* An MSS option with the right option length. */ - tmp16 = ( (u16_t) uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 2 + c] << 8 ) | ( u16_t ) uip_buf[UIP_IPTCPH_LEN + UIP_LLH_LEN + 3 + c]; - uip_connr->initialmss = uip_connr->mss = tmp16 > UIP_TCP_MSS ? UIP_TCP_MSS : tmp16; - - /* And we are done processing options. */ - break; - } - else - { - /* All other options have a length field, so that we easily - can skip past them. */ - if( uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 1 + c] == 0 ) - { - /* If the length field is zero, the options are malformed - and we don't process them further. */ - break; - } - - c += uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 1 + c]; - } - } - } - - /* Our response will be a SYNACK. */ - #if UIP_ACTIVE_OPEN - tcp_send_synack : BUF->flags = TCP_ACK; - -tcp_send_syn: - BUF->flags |= TCP_SYN; - #else /* UIP_ACTIVE_OPEN */ - tcp_send_synack : BUF->flags = TCP_SYN | TCP_ACK; - #endif /* UIP_ACTIVE_OPEN */ - - /* We send out the TCP Maximum Segment Size option with our - SYNACK. */ - BUF->optdata[0] = TCP_OPT_MSS; - BUF->optdata[1] = TCP_OPT_MSS_LEN; - BUF->optdata[2] = ( UIP_TCP_MSS ) / 256; - BUF->optdata[3] = ( UIP_TCP_MSS ) & 255; - uip_len = UIP_IPTCPH_LEN + TCP_OPT_MSS_LEN; - BUF->tcpoffset = ( (UIP_TCPH_LEN + TCP_OPT_MSS_LEN) / 4 ) << 4; - goto tcp_send; - - /* This label will be jumped to if we found an active connection. */ -found: - uip_conn = uip_connr; - uip_flags = 0; - - /* We do a very naive form of TCP reset processing; we just accept - any RST and kill our connection. We should in fact check if the - sequence number of this reset is wihtin our advertised window - before we accept the reset. */ - if( BUF->flags & TCP_RST ) - { - uip_connr->tcpstateflags = UIP_CLOSED; - UIP_LOG( "tcp: got reset, aborting connection." ); - uip_flags = UIP_ABORT; - UIP_APPCALL(); - goto drop; - } - - /* Calculated the length of the data, if the application has sent - any data to us. */ - c = ( BUF->tcpoffset >> 4 ) << 2; - - /* uip_len will contain the length of the actual TCP data. This is - calculated by subtracing the length of the TCP header (in - c) and the length of the IP header (20 bytes). */ - uip_len = uip_len - c - UIP_IPH_LEN; - - /* First, check if the sequence number of the incoming packet is - what we're expecting next. If not, we send out an ACK with the - correct numbers in. */ - if( !(((uip_connr->tcpstateflags & UIP_TS_MASK) == UIP_SYN_SENT) && ((BUF->flags & TCP_CTL) == (TCP_SYN | TCP_ACK))) ) - { - if - ( - (uip_len > 0 || ((BUF->flags & (TCP_SYN | TCP_FIN)) != 0)) && - ( - BUF->seqno[0] != uip_connr->rcv_nxt[0] || - BUF->seqno[1] != uip_connr->rcv_nxt[1] || - BUF->seqno[2] != uip_connr->rcv_nxt[2] || - BUF->seqno[3] != uip_connr->rcv_nxt[3] - ) - ) - { - goto tcp_send_ack; - } - } - - /* Next, check if the incoming segment acknowledges any outstanding - data. If so, we update the sequence number, reset the length of - the outstanding data, calculate RTT estimations, and reset the - retransmission timer. */ - if( (BUF->flags & TCP_ACK) && uip_outstanding(uip_connr) ) - { - uip_add32( uip_connr->snd_nxt, uip_connr->len ); - - if - ( - BUF->ackno[0] == uip_acc32[0] && - BUF->ackno[1] == uip_acc32[1] && - BUF->ackno[2] == uip_acc32[2] && - BUF->ackno[3] == uip_acc32[3] - ) - { - /* Update sequence number. */ - uip_connr->snd_nxt[0] = uip_acc32[0]; - uip_connr->snd_nxt[1] = uip_acc32[1]; - uip_connr->snd_nxt[2] = uip_acc32[2]; - uip_connr->snd_nxt[3] = uip_acc32[3]; - - /* Do RTT estimation, unless we have done retransmissions. */ - if( uip_connr->nrtx == 0 ) - { - signed char m; - m = uip_connr->rto - uip_connr->timer; - - /* This is taken directly from VJs original code in his paper */ - m = m - ( uip_connr->sa >> 3 ); - uip_connr->sa += m; - if( m < 0 ) - { - m = -m; - } - - m = m - ( uip_connr->sv >> 2 ); - uip_connr->sv += m; - uip_connr->rto = ( uip_connr->sa >> 3 ) + uip_connr->sv; - } - - /* Set the acknowledged flag. */ - uip_flags = UIP_ACKDATA; - - /* Reset the retransmission timer. */ - uip_connr->timer = uip_connr->rto; - - /* Reset length of outstanding data. */ - uip_connr->len = 0; - } - } - - /* Do different things depending on in what state the connection is. */ - switch( uip_connr->tcpstateflags & UIP_TS_MASK ) - { - /* CLOSED and LISTEN are not handled here. CLOSE_WAIT is not - implemented, since we force the application to close when the - peer sends a FIN (hence the application goes directly from - ESTABLISHED to LAST_ACK). */ - case UIP_SYN_RCVD: - /* In SYN_RCVD we have sent out a SYNACK in response to a SYN, and - we are waiting for an ACK that acknowledges the data we sent - out the last time. Therefore, we want to have the UIP_ACKDATA - flag set. If so, we enter the ESTABLISHED state. */ - if( uip_flags & UIP_ACKDATA ) - { - uip_connr->tcpstateflags = UIP_ESTABLISHED; - uip_flags = UIP_CONNECTED; - uip_connr->len = 0; - if( uip_len > 0 ) - { - uip_flags |= UIP_NEWDATA; - uip_add_rcv_nxt( uip_len ); - } - - uip_slen = 0; - UIP_APPCALL(); - goto appsend; - } - - goto drop; - #if UIP_ACTIVE_OPEN - - case UIP_SYN_SENT: - /* In SYN_SENT, we wait for a SYNACK that is sent in response to - our SYN. The rcv_nxt is set to sequence number in the SYNACK - plus one, and we send an ACK. We move into the ESTABLISHED - state. */ - if( (uip_flags & UIP_ACKDATA) && (BUF->flags & TCP_CTL) == (TCP_SYN | TCP_ACK) ) - { - /* Parse the TCP MSS option, if present. */ - if( (BUF->tcpoffset & 0xf0) > 0x50 ) - { - for( c = 0; c < ((BUF->tcpoffset >> 4) - 5) << 2; ) - { - opt = uip_buf[UIP_IPTCPH_LEN + UIP_LLH_LEN + c]; - if( opt == TCP_OPT_END ) - { - /* End of options. */ - break; - } - else if( opt == TCP_OPT_NOOP ) - { - ++c; - - /* NOP option. */ - } - else if( opt == TCP_OPT_MSS && uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 1 + c] == TCP_OPT_MSS_LEN ) - { - /* An MSS option with the right option length. */ - tmp16 = ( uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 2 + c] << 8 ) | uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 3 + c]; - uip_connr->initialmss = uip_connr->mss = tmp16 > UIP_TCP_MSS ? UIP_TCP_MSS : tmp16; - - /* And we are done processing options. */ - break; - } - else - { - /* All other options have a length field, so that we easily - can skip past them. */ - if( uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 1 + c] == 0 ) - { - /* If the length field is zero, the options are malformed - and we don't process them further. */ - break; - } - - c += uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 1 + c]; - } - } - } - - uip_connr->tcpstateflags = UIP_ESTABLISHED; - uip_connr->rcv_nxt[0] = BUF->seqno[0]; - uip_connr->rcv_nxt[1] = BUF->seqno[1]; - uip_connr->rcv_nxt[2] = BUF->seqno[2]; - uip_connr->rcv_nxt[3] = BUF->seqno[3]; - uip_add_rcv_nxt( 1 ); - uip_flags = UIP_CONNECTED | UIP_NEWDATA; - uip_connr->len = 0; - uip_len = 0; - uip_slen = 0; - UIP_APPCALL(); - goto appsend; - } - - /* Inform the application that the connection failed */ - uip_flags = UIP_ABORT; - UIP_APPCALL(); - - /* The connection is closed after we send the RST */ - uip_conn->tcpstateflags = UIP_CLOSED; - goto reset; - #endif /* UIP_ACTIVE_OPEN */ - - case UIP_ESTABLISHED: - /* In the ESTABLISHED state, we call upon the application to feed - data into the uip_buf. If the UIP_ACKDATA flag is set, the - application should put new data into the buffer, otherwise we are - retransmitting an old segment, and the application should put that - data into the buffer. - - If the incoming packet is a FIN, we should close the connection on - this side as well, and we send out a FIN and enter the LAST_ACK - state. We require that there is no outstanding data; otherwise the - sequence numbers will be screwed up. */ - if( BUF->flags & TCP_FIN && !(uip_connr->tcpstateflags & UIP_STOPPED) ) - { - if( uip_outstanding(uip_connr) ) - { - goto drop; - } - - uip_add_rcv_nxt( 1 + uip_len ); - uip_flags |= UIP_CLOSE; - if( uip_len > 0 ) - { - uip_flags |= UIP_NEWDATA; - } - - UIP_APPCALL(); - uip_connr->len = 1; - uip_connr->tcpstateflags = UIP_LAST_ACK; - uip_connr->nrtx = 0; - tcp_send_finack: - BUF->flags = TCP_FIN | TCP_ACK; - goto tcp_send_nodata; - } - - /* Check the URG flag. If this is set, the segment carries urgent - data that we must pass to the application. */ - if( (BUF->flags & TCP_URG) != 0 ) - { - #if UIP_URGDATA > 0 - uip_urglen = ( BUF->urgp[0] << 8 ) | BUF->urgp[1]; - if( uip_urglen > uip_len ) - { - /* There is more urgent data in the next segment to come. */ - uip_urglen = uip_len; - } - - uip_add_rcv_nxt( uip_urglen ); - uip_len -= uip_urglen; - uip_urgdata = uip_appdata; - uip_appdata += uip_urglen; - } - else - { - uip_urglen = 0; - #else /* UIP_URGDATA > 0 */ - uip_appdata = ( ( char * ) uip_appdata ) + ( (BUF->urgp[0] << 8) | BUF->urgp[1] ); - uip_len -= ( BUF->urgp[0] << 8 ) | BUF->urgp[1]; - #endif /* UIP_URGDATA > 0 */ - } - - /* If uip_len > 0 we have TCP data in the packet, and we flag this - by setting the UIP_NEWDATA flag and update the sequence number - we acknowledge. If the application has stopped the dataflow - using uip_stop(), we must not accept any data packets from the - remote host. */ - if( uip_len > 0 && !(uip_connr->tcpstateflags & UIP_STOPPED) ) - { - uip_flags |= UIP_NEWDATA; - uip_add_rcv_nxt( uip_len ); - } - - /* Check if the available buffer space advertised by the other end - is smaller than the initial MSS for this connection. If so, we - set the current MSS to the window size to ensure that the - application does not send more data than the other end can - handle. - - If the remote host advertises a zero window, we set the MSS to - the initial MSS so that the application will send an entire MSS - of data. This data will not be acknowledged by the receiver, - and the application will retransmit it. This is called the - "persistent timer" and uses the retransmission mechanim. - */ - tmp16 = ( (u16_t) BUF->wnd[0] << 8 ) + ( u16_t ) BUF->wnd[1]; - if( tmp16 > (uip_connr->initialmss * FRAME_MULTIPLE) || tmp16 == 0 ) - { - tmp16 = uip_connr->initialmss * FRAME_MULTIPLE; - } - - uip_connr->mss = tmp16; - - /* If this packet constitutes an ACK for outstanding data (flagged - by the UIP_ACKDATA flag, we should call the application since it - might want to send more data. If the incoming packet had data - from the peer (as flagged by the UIP_NEWDATA flag), the - application must also be notified. - - When the application is called, the global variable uip_len - contains the length of the incoming data. The application can - access the incoming data through the global pointer - uip_appdata, which usually points UIP_IPTCPH_LEN + UIP_LLH_LEN - bytes into the uip_buf array. - - If the application wishes to send any data, this data should be - put into the uip_appdata and the length of the data should be - put into uip_len. If the application don't have any data to - send, uip_len must be set to 0. */ - if( uip_flags & (UIP_NEWDATA | UIP_ACKDATA) ) - { - uip_slen = 0; - UIP_APPCALL(); - - appsend: - if( uip_flags & UIP_ABORT ) - { - uip_slen = 0; - uip_connr->tcpstateflags = UIP_CLOSED; - BUF->flags = TCP_RST | TCP_ACK; - goto tcp_send_nodata; - } - - if( uip_flags & UIP_CLOSE ) - { - uip_slen = 0; - uip_connr->len = 1; - uip_connr->tcpstateflags = UIP_FIN_WAIT_1; - uip_connr->nrtx = 0; - BUF->flags = TCP_FIN | TCP_ACK; - goto tcp_send_nodata; - } - - /* If uip_slen > 0, the application has data to be sent. */ - if( uip_slen > 0 ) - { - /* If the connection has acknowledged data, the contents of - the ->len variable should be discarded. */ - if( (uip_flags & UIP_ACKDATA) != 0 ) - { - uip_connr->len = 0; - } - - /* If the ->len variable is non-zero the connection has - already data in transit and cannot send anymore right - now. */ - if( uip_connr->len == 0 ) - { - /* The application cannot send more than what is allowed by - the mss (the minumum of the MSS and the available - window). */ - if( uip_slen > uip_connr->mss ) - { - uip_slen = uip_connr->mss; - } - - /* Remember how much data we send out now so that we know - when everything has been acknowledged. */ - uip_connr->len = uip_slen; - } - else - { - /* If the application already had unacknowledged data, we - make sure that the application does not send (i.e., - retransmit) out more than it previously sent out. */ - uip_slen = uip_connr->len; - } - } - - uip_connr->nrtx = 0; - apprexmit: - uip_appdata = uip_sappdata; - - /* If the application has data to be sent, or if the incoming - packet had new data in it, we must send out a packet. */ - if( uip_slen > 0 && uip_connr->len > 0 ) - { - /* Add the length of the IP and TCP headers. */ - uip_len = uip_connr->len + UIP_TCPIP_HLEN; - - /* We always set the ACK flag in response packets. */ - BUF->flags = TCP_ACK | TCP_PSH; - - /* Send the packet. */ - goto tcp_send_noopts; - } - - /* If there is no data to send, just send out a pure ACK if - there is newdata. */ - if( uip_flags & UIP_NEWDATA ) - { - uip_len = UIP_TCPIP_HLEN; - BUF->flags = TCP_ACK; - goto tcp_send_noopts; - } - } - - goto drop; - - case UIP_LAST_ACK: - /* We can close this connection if the peer has acknowledged our - FIN. This is indicated by the UIP_ACKDATA flag. */ - if( uip_flags & UIP_ACKDATA ) - { - uip_connr->tcpstateflags = UIP_CLOSED; - uip_flags = UIP_CLOSE; - UIP_APPCALL(); - } - - break; - - case UIP_FIN_WAIT_1: - /* The application has closed the connection, but the remote host - hasn't closed its end yet. Thus we do nothing but wait for a - FIN from the other side. */ - if( uip_len > 0 ) - { - uip_add_rcv_nxt( uip_len ); - } - - if( BUF->flags & TCP_FIN ) - { - if( uip_flags & UIP_ACKDATA ) - { - uip_connr->tcpstateflags = UIP_TIME_WAIT; - uip_connr->timer = 0; - uip_connr->len = 0; - } - else - { - uip_connr->tcpstateflags = UIP_CLOSING; - } - - uip_add_rcv_nxt( 1 ); - uip_flags = UIP_CLOSE; - UIP_APPCALL(); - goto tcp_send_ack; - } - else if( uip_flags & UIP_ACKDATA ) - { - uip_connr->tcpstateflags = UIP_FIN_WAIT_2; - uip_connr->len = 0; - goto drop; - } - - if( uip_len > 0 ) - { - goto tcp_send_ack; - } - - goto drop; - - case UIP_FIN_WAIT_2: - if( uip_len > 0 ) - { - uip_add_rcv_nxt( uip_len ); - } - - if( BUF->flags & TCP_FIN ) - { - uip_connr->tcpstateflags = UIP_TIME_WAIT; - uip_connr->timer = 0; - uip_add_rcv_nxt( 1 ); - uip_flags = UIP_CLOSE; - UIP_APPCALL(); - goto tcp_send_ack; - } - - if( uip_len > 0 ) - { - goto tcp_send_ack; - } - - goto drop; - - case UIP_TIME_WAIT: - goto tcp_send_ack; - - case UIP_CLOSING: - if( uip_flags & UIP_ACKDATA ) - { - uip_connr->tcpstateflags = UIP_TIME_WAIT; - uip_connr->timer = 0; - } - } - - goto drop; - - /* We jump here when we are ready to send the packet, and just want - to set the appropriate TCP sequence numbers in the TCP header. */ -tcp_send_ack: - BUF->flags = TCP_ACK; -tcp_send_nodata: - uip_len = UIP_IPTCPH_LEN; -tcp_send_noopts: - BUF->tcpoffset = ( UIP_TCPH_LEN / 4 ) << 4; -tcp_send: - /* We're done with the input processing. We are now ready to send a - reply. Our job is to fill in all the fields of the TCP and IP - headers before calculating the checksum and finally send the - packet. */ - BUF->ackno[0] = uip_connr->rcv_nxt[0]; - BUF->ackno[1] = uip_connr->rcv_nxt[1]; - BUF->ackno[2] = uip_connr->rcv_nxt[2]; - BUF->ackno[3] = uip_connr->rcv_nxt[3]; - - BUF->seqno[0] = uip_connr->snd_nxt[0]; - BUF->seqno[1] = uip_connr->snd_nxt[1]; - BUF->seqno[2] = uip_connr->snd_nxt[2]; - BUF->seqno[3] = uip_connr->snd_nxt[3]; - - BUF->proto = UIP_PROTO_TCP; - - BUF->srcport = uip_connr->lport; - BUF->destport = uip_connr->rport; - - uip_ipaddr_copy( BUF->srcipaddr, uip_hostaddr ); - uip_ipaddr_copy( BUF->destipaddr, uip_connr->ripaddr ); - - if( uip_connr->tcpstateflags & UIP_STOPPED ) - { - /* If the connection has issued uip_stop(), we advertise a zero - window so that the remote host will stop sending data. */ - BUF->wnd[0] = BUF->wnd[1] = 0; - } - else - { - BUF->wnd[0] = ( (UIP_RECEIVE_WINDOW) >> 8 ); - BUF->wnd[1] = ( (UIP_RECEIVE_WINDOW) & 0xff ); - } - -tcp_send_noconn: - BUF->ttl = UIP_TTL; - #if UIP_CONF_IPV6 - - /* For IPv6, the IP length field does not include the IPv6 IP header - length. */ - BUF->len[0] = ( (uip_len - UIP_IPH_LEN) >> 8 ); - BUF->len[1] = ( (uip_len - UIP_IPH_LEN) & 0xff ); - #else /* UIP_CONF_IPV6 */ - BUF->len[0] = ( uip_len >> 8 ); - BUF->len[1] = ( uip_len & 0xff ); - #endif /* UIP_CONF_IPV6 */ - - BUF->urgp[0] = BUF->urgp[1] = 0; - - /* Calculate TCP checksum. */ - BUF->tcpchksum = 0; - BUF->tcpchksum = ~( uip_tcpchksum() ); - - #if UIP_UDP - ip_send_nolen : - #endif - #if UIP_CONF_IPV6 - BUF->vtc = 0x60; - BUF->tcflow = 0x00; - BUF->flow = 0x00; - #else /* UIP_CONF_IPV6 */ - BUF->vhl = 0x45; - BUF->tos = 0; - BUF->ipoffset[0] = BUF->ipoffset[1] = 0; - ++ipid; - BUF->ipid[0] = ipid >> 8; - BUF->ipid[1] = ipid & 0xff; - - /* Calculate IP checksum. */ - BUF->ipchksum = 0; - BUF->ipchksum = ~( uip_ipchksum() ); - DEBUG_PRINTF( "uip ip_send_nolen: chkecum 0x%04x\n", uip_ipchksum() ); - #endif /* UIP_CONF_IPV6 */ - - UIP_STAT( ++uip_stat.tcp.sent ); -send: - DEBUG_PRINTF( "Sending packet with length %d (%d)\n", uip_len, (BUF->len[0] << 8) | BUF->len[1] ); - - UIP_STAT( ++uip_stat.ip.sent ); - - /* Return and let the caller do the actual transmission. */ - uip_flags = 0; - return; -drop: - uip_len = 0; - uip_flags = 0; - return; -} - -/*---------------------------------------------------------------------------*/ -u16_t htons( u16_t val ) -{ - return HTONS( val ); -} - -/*---------------------------------------------------------------------------*/ -void uip_send( const void *data, int len ) -{ - if( len > 0 ) - { - uip_slen = len; - if( data != uip_sappdata ) - { - memcpy( uip_sappdata, (data), uip_slen ); - } - } -} - -/*---------------------------------------------------------------------------*/ -int uip_fast_send( int xARP ) -{ - ( void ) xARP; - #if NOT_YET_COMPLETE - - u16_t tcplen, len1 = 0, uiAccumulatedLen = 0, len_previous = 0, split_len; - int iSplitNo = 0; - extern int uip_low_level_output( unsigned char *pcBuf, int ilen ); - - if( xARP == pdTRUE ) - { - if( BUF->proto == UIP_PROTO_TCP && uip_slen > 1 ) - { - tcplen = uip_len - UIP_TCPIP_HLEN; - - if( tcplen > UIP_TCP_MSS ) - { - split_len = UIP_TCP_MSS; - } - else - { - split_len = tcplen / 2; - } - - while( tcplen > 0 ) - { - uiAccumulatedLen += len1; - - if( tcplen > split_len ) - { - len1 = split_len; - tcplen -= split_len; - } - else - { - len1 = tcplen; - tcplen = 0; - } - - uip_len = len1 + UIP_TCPIP_HLEN; - BUF->len[0] = uip_len >> 8; - BUF->len[1] = uip_len & 0xff; - if( iSplitNo == 0 ) - { - iSplitNo++; - - /* Create the first packet. This is done by altering the length - field of the IP header and updating the checksums. */ - } - else - { - /* Now, create the second packet. To do this, it is not enough to - just alter the length field, but we must also update the TCP - sequence number and point the uip_appdata to a new place in - memory. This place is determined by the length of the first - packet (len1). */ - - /* uip_appdata += len1;*/ - memcpy( uip_appdata, ( u8_t * ) uip_appdata + uiAccumulatedLen, len1 ); - uip_add32( BUF->seqno, len_previous ); - BUF->seqno[0] = uip_acc32[0]; - BUF->seqno[1] = uip_acc32[1]; - BUF->seqno[2] = uip_acc32[2]; - BUF->seqno[3] = uip_acc32[3]; - } - - /* Recalculate the TCP checksum. */ - BUF->tcpchksum = 0; - BUF->tcpchksum = ~( uip_tcpchksum() ); - - /* Recalculate the IP checksum. */ - BUF->ipchksum = 0; - BUF->ipchksum = ~( uip_ipchksum() ); - - /* Transmit the packet. */ - uip_arp_out(); - uip_low_level_output( uip_buf, uip_len ); - - len_previous = len1; - } - } - else - { - uip_arp_out(); - uip_low_level_output( uip_buf, uip_len ); - } - } - else - { - uip_low_level_output( uip_buf, uip_len ); - } - - #endif - return 1; -} - -/** @} */ diff --git a/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/uip.h b/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/uip.h deleted file mode 100644 index e432d903b..000000000 --- a/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/uip.h +++ /dev/null @@ -1,1642 +0,0 @@ - -/** - * \addtogroup uip - * @{ - */ - -/** - * \file - * Header file for the uIP TCP/IP stack. - * \author Adam Dunkels - * - * The uIP TCP/IP stack header file contains definitions for a number - * of C macros that are used by uIP programs as well as internal uIP - * structures, TCP/IP header structures and function declarations. - * - */ - - -/* - * Copyright (c) 2001-2003, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: uip.h,v 1.40 2006/06/08 07:12:07 adam Exp $ - * - */ - -#ifndef __UIP_H__ -#define __UIP_H__ - -#include "uipopt.h" - -/** - * Repressentation of an IP address. - * - */ -typedef u16_t uip_ip4addr_t[2]; -typedef u16_t uip_ip6addr_t[8]; -#if UIP_CONF_IPV6 -typedef uip_ip6addr_t uip_ipaddr_t; -#else /* UIP_CONF_IPV6 */ -typedef uip_ip4addr_t uip_ipaddr_t; -#endif /* UIP_CONF_IPV6 */ - -/*---------------------------------------------------------------------------*/ -/* First, the functions that should be called from the - * system. Initialization, the periodic timer and incoming packets are - * handled by the following three functions. - */ - -/** - * \defgroup uipconffunc uIP configuration functions - * @{ - * - * The uIP configuration functions are used for setting run-time - * parameters in uIP such as IP addresses. - */ - -/** - * Set the IP address of this host. - * - * The IP address is represented as a 4-byte array where the first - * octet of the IP address is put in the first member of the 4-byte - * array. - * - * Example: - \code - - uip_ipaddr_t addr; - - uip_ipaddr(&addr, 192,168,1,2); - uip_sethostaddr(&addr); - - \endcode - * \param addr A pointer to an IP address of type uip_ipaddr_t; - * - * \sa uip_ipaddr() - * - * \hideinitializer - */ -#define uip_sethostaddr(addr) uip_ipaddr_copy(uip_hostaddr, (addr)) - -/** - * Get the IP address of this host. - * - * The IP address is represented as a 4-byte array where the first - * octet of the IP address is put in the first member of the 4-byte - * array. - * - * Example: - \code - uip_ipaddr_t hostaddr; - - uip_gethostaddr(&hostaddr); - \endcode - * \param addr A pointer to a uip_ipaddr_t variable that will be - * filled in with the currently configured IP address. - * - * \hideinitializer - */ -#define uip_gethostaddr(addr) uip_ipaddr_copy((addr), uip_hostaddr) - -/** - * Set the default router's IP address. - * - * \param addr A pointer to a uip_ipaddr_t variable containing the IP - * address of the default router. - * - * \sa uip_ipaddr() - * - * \hideinitializer - */ -#define uip_setdraddr(addr) uip_ipaddr_copy(uip_draddr, (addr)) - -/** - * Set the netmask. - * - * \param addr A pointer to a uip_ipaddr_t variable containing the IP - * address of the netmask. - * - * \sa uip_ipaddr() - * - * \hideinitializer - */ -#define uip_setnetmask(addr) uip_ipaddr_copy(uip_netmask, (addr)) - - -/** - * Get the default router's IP address. - * - * \param addr A pointer to a uip_ipaddr_t variable that will be - * filled in with the IP address of the default router. - * - * \hideinitializer - */ -#define uip_getdraddr(addr) uip_ipaddr_copy((addr), uip_draddr) - -/** - * Get the netmask. - * - * \param addr A pointer to a uip_ipaddr_t variable that will be - * filled in with the value of the netmask. - * - * \hideinitializer - */ -#define uip_getnetmask(addr) uip_ipaddr_copy((addr), uip_netmask) - -/** @} */ - -/** - * \defgroup uipinit uIP initialization functions - * @{ - * - * The uIP initialization functions are used for booting uIP. - */ - -/** - * uIP initialization function. - * - * This function should be called at boot up to initilize the uIP - * TCP/IP stack. - */ -void uip_init(void); - -/** - * uIP initialization function. - * - * This function may be used at boot time to set the initial ip_id. - */ -void uip_setipid(u16_t id); - -/** @} */ - -/** - * \defgroup uipdevfunc uIP device driver functions - * @{ - * - * These functions are used by a network device driver for interacting - * with uIP. - */ - -/** - * Process an incoming packet. - * - * This function should be called when the device driver has received - * a packet from the network. The packet from the device driver must - * be present in the uip_buf buffer, and the length of the packet - * should be placed in the uip_len variable. - * - * When the function returns, there may be an outbound packet placed - * in the uip_buf packet buffer. If so, the uip_len variable is set to - * the length of the packet. If no packet is to be sent out, the - * uip_len variable is set to 0. - * - * The usual way of calling the function is presented by the source - * code below. - \code - uip_len = devicedriver_poll(); - if(uip_len > 0) { - uip_input(); - if(uip_len > 0) { - devicedriver_send(); - } - } - \endcode - * - * \note If you are writing a uIP device driver that needs ARP - * (Address Resolution Protocol), e.g., when running uIP over - * Ethernet, you will need to call the uIP ARP code before calling - * this function: - \code - #define BUF ((struct uip_eth_hdr *)&uip_buf[0]) - uip_len = ethernet_devicedrver_poll(); - if(uip_len > 0) { - if(BUF->type == HTONS(UIP_ETHTYPE_IP)) { - uip_arp_ipin(); - uip_input(); - if(uip_len > 0) { - uip_arp_out(); - ethernet_devicedriver_send(); - } - } else if(BUF->type == HTONS(UIP_ETHTYPE_ARP)) { - uip_arp_arpin(); - if(uip_len > 0) { - ethernet_devicedriver_send(); - } - } - \endcode - * - * \hideinitializer - */ -#define uip_input() uip_process(UIP_DATA) - -/** - * Periodic processing for a connection identified by its number. - * - * This function does the necessary periodic processing (timers, - * polling) for a uIP TCP conneciton, and should be called when the - * periodic uIP timer goes off. It should be called for every - * connection, regardless of whether they are open of closed. - * - * When the function returns, it may have an outbound packet waiting - * for service in the uIP packet buffer, and if so the uip_len - * variable is set to a value larger than zero. The device driver - * should be called to send out the packet. - * - * The ususal way of calling the function is through a for() loop like - * this: - \code - for(i = 0; i < UIP_CONNS; ++i) { - uip_periodic(i); - if(uip_len > 0) { - devicedriver_send(); - } - } - \endcode - * - * \note If you are writing a uIP device driver that needs ARP - * (Address Resolution Protocol), e.g., when running uIP over - * Ethernet, you will need to call the uip_arp_out() function before - * calling the device driver: - \code - for(i = 0; i < UIP_CONNS; ++i) { - uip_periodic(i); - if(uip_len > 0) { - uip_arp_out(); - ethernet_devicedriver_send(); - } - } - \endcode - * - * \param conn The number of the connection which is to be periodically polled. - * - * \hideinitializer - */ -#define uip_periodic(conn) do { uip_conn = &uip_conns[conn]; \ - uip_process(UIP_TIMER); } while (0) - -/** - * - * - */ -#define uip_conn_active(conn) (uip_conns[conn].tcpstateflags != UIP_CLOSED) - -/** - * Perform periodic processing for a connection identified by a pointer - * to its structure. - * - * Same as uip_periodic() but takes a pointer to the actual uip_conn - * struct instead of an integer as its argument. This function can be - * used to force periodic processing of a specific connection. - * - * \param conn A pointer to the uip_conn struct for the connection to - * be processed. - * - * \hideinitializer - */ -#define uip_periodic_conn(conn) do { uip_conn = conn; \ - uip_process(UIP_TIMER); } while (0) - -/** - * Reuqest that a particular connection should be polled. - * - * Similar to uip_periodic_conn() but does not perform any timer - * processing. The application is polled for new data. - * - * \param conn A pointer to the uip_conn struct for the connection to - * be processed. - * - * \hideinitializer - */ -#define uip_poll_conn(conn) do { uip_conn = conn; \ - uip_process(UIP_POLL_REQUEST); } while (0) - - -#if UIP_UDP -/** - * Periodic processing for a UDP connection identified by its number. - * - * This function is essentially the same as uip_periodic(), but for - * UDP connections. It is called in a similar fashion as the - * uip_periodic() function: - \code - for(i = 0; i < UIP_UDP_CONNS; i++) { - uip_udp_periodic(i); - if(uip_len > 0) { - devicedriver_send(); - } - } - \endcode - * - * \note As for the uip_periodic() function, special care has to be - * taken when using uIP together with ARP and Ethernet: - \code - for(i = 0; i < UIP_UDP_CONNS; i++) { - uip_udp_periodic(i); - if(uip_len > 0) { - uip_arp_out(); - ethernet_devicedriver_send(); - } - } - \endcode - * - * \param conn The number of the UDP connection to be processed. - * - * \hideinitializer - */ -#define uip_udp_periodic(conn) do { uip_udp_conn = &uip_udp_conns[conn]; \ - uip_process(UIP_UDP_TIMER); } while (0) - -/** - * Periodic processing for a UDP connection identified by a pointer to - * its structure. - * - * Same as uip_udp_periodic() but takes a pointer to the actual - * uip_conn struct instead of an integer as its argument. This - * function can be used to force periodic processing of a specific - * connection. - * - * \param conn A pointer to the uip_udp_conn struct for the connection - * to be processed. - * - * \hideinitializer - */ -#define uip_udp_periodic_conn(conn) do { uip_udp_conn = conn; \ - uip_process(UIP_UDP_TIMER); } while (0) - - -#endif /* UIP_UDP */ - -/** - * The uIP packet buffer. - * - * The uip_buf array is used to hold incoming and outgoing - * packets. The device driver should place incoming data into this - * buffer. When sending data, the device driver should read the link - * level headers and the TCP/IP headers from this buffer. The size of - * the link level headers is configured by the UIP_LLH_LEN define. - * - * \note The application data need not be placed in this buffer, so - * the device driver must read it from the place pointed to by the - * uip_appdata pointer as illustrated by the following example: - \code - void - devicedriver_send(void) - { - hwsend(&uip_buf[0], UIP_LLH_LEN); - if(uip_len <= UIP_LLH_LEN + UIP_TCPIP_HLEN) { - hwsend(&uip_buf[UIP_LLH_LEN], uip_len - UIP_LLH_LEN); - } else { - hwsend(&uip_buf[UIP_LLH_LEN], UIP_TCPIP_HLEN); - hwsend(uip_appdata, uip_len - UIP_TCPIP_HLEN - UIP_LLH_LEN); - } - } - \endcode - */ -#ifndef UIP_CONF_EXTERNAL_BUFFER - extern u8_t uip_buf[UIP_BUFSIZE+2]; -#else - extern unsigned char *uip_buf; -#endif - -/** @} */ - -/*---------------------------------------------------------------------------*/ -/* Functions that are used by the uIP application program. Opening and - * closing connections, sending and receiving data, etc. is all - * handled by the functions below. -*/ -/** - * \defgroup uipappfunc uIP application functions - * @{ - * - * Functions used by an application running of top of uIP. - */ - -/** - * Start listening to the specified port. - * - * \note Since this function expects the port number in network byte - * order, a conversion using HTONS() or htons() is necessary. - * - \code - uip_listen(HTONS(80)); - \endcode - * - * \param port A 16-bit port number in network byte order. - */ -void uip_listen(u16_t port); - -/** - * Stop listening to the specified port. - * - * \note Since this function expects the port number in network byte - * order, a conversion using HTONS() or htons() is necessary. - * - \code - uip_unlisten(HTONS(80)); - \endcode - * - * \param port A 16-bit port number in network byte order. - */ -void uip_unlisten(u16_t port); - -/** - * Connect to a remote host using TCP. - * - * This function is used to start a new connection to the specified - * port on the specied host. It allocates a new connection identifier, - * sets the connection to the SYN_SENT state and sets the - * retransmission timer to 0. This will cause a TCP SYN segment to be - * sent out the next time this connection is periodically processed, - * which usually is done within 0.5 seconds after the call to - * uip_connect(). - * - * \note This function is avaliable only if support for active open - * has been configured by defining UIP_ACTIVE_OPEN to 1 in uipopt.h. - * - * \note Since this function requires the port number to be in network - * byte order, a conversion using HTONS() or htons() is necessary. - * - \code - uip_ipaddr_t ipaddr; - - uip_ipaddr(&ipaddr, 192,168,1,2); - uip_connect(&ipaddr, HTONS(80)); - \endcode - * - * \param ripaddr The IP address of the remote hot. - * - * \param port A 16-bit port number in network byte order. - * - * \return A pointer to the uIP connection identifier for the new connection, - * or NULL if no connection could be allocated. - * - */ -struct uip_conn *uip_connect(uip_ipaddr_t *ripaddr, u16_t port); - - - -/** - * \internal - * - * Check if a connection has outstanding (i.e., unacknowledged) data. - * - * \param conn A pointer to the uip_conn structure for the connection. - * - * \hideinitializer - */ -#define uip_outstanding(conn) ((conn)->len) - -/** - * Send data on the current connection. - * - * This function is used to send out a single segment of TCP - * data. Only applications that have been invoked by uIP for event - * processing can send data. - * - * The amount of data that actually is sent out after a call to this - * funcion is determined by the maximum amount of data TCP allows. uIP - * will automatically crop the data so that only the appropriate - * amount of data is sent. The function uip_mss() can be used to query - * uIP for the amount of data that actually will be sent. - * - * \note This function does not guarantee that the sent data will - * arrive at the destination. If the data is lost in the network, the - * application will be invoked with the uip_rexmit() event being - * set. The application will then have to resend the data using this - * function. - * - * \param data A pointer to the data which is to be sent. - * - * \param len The maximum amount of data bytes to be sent. - * - * \hideinitializer - */ -void uip_send(const void *data, int len); - -/** - * The length of any incoming data that is currently avaliable (if avaliable) - * in the uip_appdata buffer. - * - * The test function uip_data() must first be used to check if there - * is any data available at all. - * - * \hideinitializer - */ -/*void uip_datalen(void);*/ -#define uip_datalen() uip_len - -/** - * The length of any out-of-band data (urgent data) that has arrived - * on the connection. - * - * \note The configuration parameter UIP_URGDATA must be set for this - * function to be enabled. - * - * \hideinitializer - */ -#define uip_urgdatalen() uip_urglen - -/** - * Close the current connection. - * - * This function will close the current connection in a nice way. - * - * \hideinitializer - */ -#define uip_close() (uip_flags = UIP_CLOSE) - -/** - * Abort the current connection. - * - * This function will abort (reset) the current connection, and is - * usually used when an error has occured that prevents using the - * uip_close() function. - * - * \hideinitializer - */ -#define uip_abort() (uip_flags = UIP_ABORT) - -/** - * Tell the sending host to stop sending data. - * - * This function will close our receiver's window so that we stop - * receiving data for the current connection. - * - * \hideinitializer - */ -#define uip_stop() (uip_conn->tcpstateflags |= UIP_STOPPED) - -/** - * Find out if the current connection has been previously stopped with - * uip_stop(). - * - * \hideinitializer - */ -#define uip_stopped(conn) ((conn)->tcpstateflags & UIP_STOPPED) - -/** - * Restart the current connection, if is has previously been stopped - * with uip_stop(). - * - * This function will open the receiver's window again so that we - * start receiving data for the current connection. - * - * \hideinitializer - */ -#define uip_restart() do { uip_flags |= UIP_NEWDATA; \ - uip_conn->tcpstateflags &= ~UIP_STOPPED; \ - } while(0) - - -/* uIP tests that can be made to determine in what state the current - connection is, and what the application function should do. */ - -/** - * Is the current connection a UDP connection? - * - * This function checks whether the current connection is a UDP connection. - * - * \hideinitializer - * - */ -#define uip_udpconnection() (uip_conn == NULL) - -/** - * Is new incoming data available? - * - * Will reduce to non-zero if there is new data for the application - * present at the uip_appdata pointer. The size of the data is - * avaliable through the uip_len variable. - * - * \hideinitializer - */ -#define uip_newdata() (uip_flags & UIP_NEWDATA) - -/** - * Has previously sent data been acknowledged? - * - * Will reduce to non-zero if the previously sent data has been - * acknowledged by the remote host. This means that the application - * can send new data. - * - * \hideinitializer - */ -#define uip_acked() (uip_flags & UIP_ACKDATA) - -/** - * Has the connection just been connected? - * - * Reduces to non-zero if the current connection has been connected to - * a remote host. This will happen both if the connection has been - * actively opened (with uip_connect()) or passively opened (with - * uip_listen()). - * - * \hideinitializer - */ -#define uip_connected() (uip_flags & UIP_CONNECTED) - -/** - * Has the connection been closed by the other end? - * - * Is non-zero if the connection has been closed by the remote - * host. The application may then do the necessary clean-ups. - * - * \hideinitializer - */ -#define uip_closed() (uip_flags & UIP_CLOSE) - -/** - * Has the connection been aborted by the other end? - * - * Non-zero if the current connection has been aborted (reset) by the - * remote host. - * - * \hideinitializer - */ -#define uip_aborted() (uip_flags & UIP_ABORT) - -/** - * Has the connection timed out? - * - * Non-zero if the current connection has been aborted due to too many - * retransmissions. - * - * \hideinitializer - */ -#define uip_timedout() (uip_flags & UIP_TIMEDOUT) - -/** - * Do we need to retransmit previously data? - * - * Reduces to non-zero if the previously sent data has been lost in - * the network, and the application should retransmit it. The - * application should send the exact same data as it did the last - * time, using the uip_send() function. - * - * \hideinitializer - */ -#define uip_rexmit() (uip_flags & UIP_REXMIT) - -/** - * Is the connection being polled by uIP? - * - * Is non-zero if the reason the application is invoked is that the - * current connection has been idle for a while and should be - * polled. - * - * The polling event can be used for sending data without having to - * wait for the remote host to send data. - * - * \hideinitializer - */ -#define uip_poll() (uip_flags & UIP_POLL) - -/** - * Get the initial maxium segment size (MSS) of the current - * connection. - * - * \hideinitializer - */ -#define uip_initialmss() (uip_conn->initialmss) - -/** - * Get the current maxium segment size that can be sent on the current - * connection. - * - * The current maxiumum segment size that can be sent on the - * connection is computed from the receiver's window and the MSS of - * the connection (which also is available by calling - * uip_initialmss()). - * - * \hideinitializer - */ -#define uip_mss() (uip_conn->mss) - -/** - * Set up a new UDP connection. - * - * This function sets up a new UDP connection. The function will - * automatically allocate an unused local port for the new - * connection. However, another port can be chosen by using the - * uip_udp_bind() call, after the uip_udp_new() function has been - * called. - * - * Example: - \code - uip_ipaddr_t addr; - struct uip_udp_conn *c; - - uip_ipaddr(&addr, 192,168,2,1); - c = uip_udp_new(&addr, HTONS(12345)); - if(c != NULL) { - uip_udp_bind(c, HTONS(12344)); - } - \endcode - * \param ripaddr The IP address of the remote host. - * - * \param rport The remote port number in network byte order. - * - * \return The uip_udp_conn structure for the new connection or NULL - * if no connection could be allocated. - */ -struct uip_udp_conn *uip_udp_new(uip_ipaddr_t *ripaddr, u16_t rport); - -/** - * Removed a UDP connection. - * - * \param conn A pointer to the uip_udp_conn structure for the connection. - * - * \hideinitializer - */ -#define uip_udp_remove(conn) (conn)->lport = 0 - -/** - * Bind a UDP connection to a local port. - * - * \param conn A pointer to the uip_udp_conn structure for the - * connection. - * - * \param port The local port number, in network byte order. - * - * \hideinitializer - */ -#define uip_udp_bind(conn, port) (conn)->lport = port - -/** - * Send a UDP datagram of length len on the current connection. - * - * This function can only be called in response to a UDP event (poll - * or newdata). The data must be present in the uip_buf buffer, at the - * place pointed to by the uip_appdata pointer. - * - * \param len The length of the data in the uip_buf buffer. - * - * \hideinitializer - */ -#define uip_udp_send(len) uip_send((char *)uip_appdata, len) - -/** @} */ - -/* uIP convenience and converting functions. */ - -/** - * \defgroup uipconvfunc uIP conversion functions - * @{ - * - * These functions can be used for converting between different data - * formats used by uIP. - */ - -/** - * Construct an IP address from four bytes. - * - * This function constructs an IP address of the type that uIP handles - * internally from four bytes. The function is handy for specifying IP - * addresses to use with e.g. the uip_connect() function. - * - * Example: - \code - uip_ipaddr_t ipaddr; - struct uip_conn *c; - - uip_ipaddr(&ipaddr, 192,168,1,2); - c = uip_connect(&ipaddr, HTONS(80)); - \endcode - * - * \param addr A pointer to a uip_ipaddr_t variable that will be - * filled in with the IP address. - * - * \param addr0 The first octet of the IP address. - * \param addr1 The second octet of the IP address. - * \param addr2 The third octet of the IP address. - * \param addr3 The forth octet of the IP address. - * - * \hideinitializer - */ -#define uip_ipaddr(addr, addr0,addr1,addr2,addr3) do { \ - ((u16_t *)(addr))[0] = HTONS(((addr0) << 8) | (addr1)); \ - ((u16_t *)(addr))[1] = HTONS(((addr2) << 8) | (addr3)); \ - } while(0) - -/** - * Construct an IPv6 address from eight 16-bit words. - * - * This function constructs an IPv6 address. - * - * \hideinitializer - */ -#define uip_ip6addr(addr, addr0,addr1,addr2,addr3,addr4,addr5,addr6,addr7) do { \ - ((u16_t *)(addr))[0] = HTONS((addr0)); \ - ((u16_t *)(addr))[1] = HTONS((addr1)); \ - ((u16_t *)(addr))[2] = HTONS((addr2)); \ - ((u16_t *)(addr))[3] = HTONS((addr3)); \ - ((u16_t *)(addr))[4] = HTONS((addr4)); \ - ((u16_t *)(addr))[5] = HTONS((addr5)); \ - ((u16_t *)(addr))[6] = HTONS((addr6)); \ - ((u16_t *)(addr))[7] = HTONS((addr7)); \ - } while(0) - -/** - * Copy an IP address to another IP address. - * - * Copies an IP address from one place to another. - * - * Example: - \code - uip_ipaddr_t ipaddr1, ipaddr2; - - uip_ipaddr(&ipaddr1, 192,16,1,2); - uip_ipaddr_copy(&ipaddr2, &ipaddr1); - \endcode - * - * \param dest The destination for the copy. - * \param src The source from where to copy. - * - * \hideinitializer - */ -#if !UIP_CONF_IPV6 -#define uip_ipaddr_copy(dest, src) do { \ - ((u16_t *)dest)[0] = ((u16_t *)src)[0]; \ - ((u16_t *)dest)[1] = ((u16_t *)src)[1]; \ - } while(0) -#else /* !UIP_CONF_IPV6 */ -#define uip_ipaddr_copy(dest, src) memcpy(dest, src, sizeof(uip_ip6addr_t)) -#endif /* !UIP_CONF_IPV6 */ - -/** - * Compare two IP addresses - * - * Compares two IP addresses. - * - * Example: - \code - uip_ipaddr_t ipaddr1, ipaddr2; - - uip_ipaddr(&ipaddr1, 192,16,1,2); - if(uip_ipaddr_cmp(&ipaddr2, &ipaddr1)) { - printf("They are the same"); - } - \endcode - * - * \param addr1 The first IP address. - * \param addr2 The second IP address. - * - * \hideinitializer - */ -#if !UIP_CONF_IPV6 -#define uip_ipaddr_cmp(addr1, addr2) (((u16_t *)addr1)[0] == ((u16_t *)addr2)[0] && \ - ((u16_t *)addr1)[1] == ((u16_t *)addr2)[1]) -#else /* !UIP_CONF_IPV6 */ -#define uip_ipaddr_cmp(addr1, addr2) (memcmp(addr1, addr2, sizeof(uip_ip6addr_t)) == 0) -#endif /* !UIP_CONF_IPV6 */ - -/** - * Compare two IP addresses with netmasks - * - * Compares two IP addresses with netmasks. The masks are used to mask - * out the bits that are to be compared. - * - * Example: - \code - uip_ipaddr_t ipaddr1, ipaddr2, mask; - - uip_ipaddr(&mask, 255,255,255,0); - uip_ipaddr(&ipaddr1, 192,16,1,2); - uip_ipaddr(&ipaddr2, 192,16,1,3); - if(uip_ipaddr_maskcmp(&ipaddr1, &ipaddr2, &mask)) { - printf("They are the same"); - } - \endcode - * - * \param addr1 The first IP address. - * \param addr2 The second IP address. - * \param mask The netmask. - * - * \hideinitializer - */ -#define uip_ipaddr_maskcmp(addr1, addr2, mask) \ - (((((u16_t *)addr1)[0] & ((u16_t *)mask)[0]) == \ - (((u16_t *)addr2)[0] & ((u16_t *)mask)[0])) && \ - ((((u16_t *)addr1)[1] & ((u16_t *)mask)[1]) == \ - (((u16_t *)addr2)[1] & ((u16_t *)mask)[1]))) - - -/** - * Mask out the network part of an IP address. - * - * Masks out the network part of an IP address, given the address and - * the netmask. - * - * Example: - \code - uip_ipaddr_t ipaddr1, ipaddr2, netmask; - - uip_ipaddr(&ipaddr1, 192,16,1,2); - uip_ipaddr(&netmask, 255,255,255,0); - uip_ipaddr_mask(&ipaddr2, &ipaddr1, &netmask); - \endcode - * - * In the example above, the variable "ipaddr2" will contain the IP - * address 192.168.1.0. - * - * \param dest Where the result is to be placed. - * \param src The IP address. - * \param mask The netmask. - * - * \hideinitializer - */ -#define uip_ipaddr_mask(dest, src, mask) do { \ - ((u16_t *)dest)[0] = ((u16_t *)src)[0] & ((u16_t *)mask)[0]; \ - ((u16_t *)dest)[1] = ((u16_t *)src)[1] & ((u16_t *)mask)[1]; \ - } while(0) - -/** - * Pick the first octet of an IP address. - * - * Picks out the first octet of an IP address. - * - * Example: - \code - uip_ipaddr_t ipaddr; - u8_t octet; - - uip_ipaddr(&ipaddr, 1,2,3,4); - octet = uip_ipaddr1(&ipaddr); - \endcode - * - * In the example above, the variable "octet" will contain the value 1. - * - * \hideinitializer - */ -#define uip_ipaddr1(addr) (htons(((u16_t *)(addr))[0]) >> 8) - -/** - * Pick the second octet of an IP address. - * - * Picks out the second octet of an IP address. - * - * Example: - \code - uip_ipaddr_t ipaddr; - u8_t octet; - - uip_ipaddr(&ipaddr, 1,2,3,4); - octet = uip_ipaddr2(&ipaddr); - \endcode - * - * In the example above, the variable "octet" will contain the value 2. - * - * \hideinitializer - */ -#define uip_ipaddr2(addr) (htons(((u16_t *)(addr))[0]) & 0xff) - -/** - * Pick the third octet of an IP address. - * - * Picks out the third octet of an IP address. - * - * Example: - \code - uip_ipaddr_t ipaddr; - u8_t octet; - - uip_ipaddr(&ipaddr, 1,2,3,4); - octet = uip_ipaddr3(&ipaddr); - \endcode - * - * In the example above, the variable "octet" will contain the value 3. - * - * \hideinitializer - */ -#define uip_ipaddr3(addr) (htons(((u16_t *)(addr))[1]) >> 8) - -/** - * Pick the fourth octet of an IP address. - * - * Picks out the fourth octet of an IP address. - * - * Example: - \code - uip_ipaddr_t ipaddr; - u8_t octet; - - uip_ipaddr(&ipaddr, 1,2,3,4); - octet = uip_ipaddr4(&ipaddr); - \endcode - * - * In the example above, the variable "octet" will contain the value 4. - * - * \hideinitializer - */ -#define uip_ipaddr4(addr) (htons(((u16_t *)(addr))[1]) & 0xff) - -/** - * Convert 16-bit quantity from host byte order to network byte order. - * - * This macro is primarily used for converting constants from host - * byte order to network byte order. For converting variables to - * network byte order, use the htons() function instead. - * - * \hideinitializer - */ -#ifndef HTONS -# if UIP_BYTE_ORDER == UIP_BIG_ENDIAN -# define HTONS(n) (n) -# else /* UIP_BYTE_ORDER == UIP_BIG_ENDIAN */ -# define HTONS(n) (u16_t)((((u16_t) (n)) << 8) | (((u16_t) (n)) >> 8)) -# endif /* UIP_BYTE_ORDER == UIP_BIG_ENDIAN */ -#else -#error "HTONS already defined!" -#endif /* HTONS */ - -/** - * Convert 16-bit quantity from host byte order to network byte order. - * - * This function is primarily used for converting variables from host - * byte order to network byte order. For converting constants to - * network byte order, use the HTONS() macro instead. - */ -#ifndef htons -u16_t htons(u16_t val); -#endif /* htons */ -#ifndef ntohs -#define ntohs htons -#endif - -/** @} */ - -/** - * Pointer to the application data in the packet buffer. - * - * This pointer points to the application data when the application is - * called. If the application wishes to send data, the application may - * use this space to write the data into before calling uip_send(). - */ -extern void *uip_appdata; - -#if UIP_URGDATA > 0 -/* u8_t *uip_urgdata: - * - * This pointer points to any urgent data that has been received. Only - * present if compiled with support for urgent data (UIP_URGDATA). - */ -extern void *uip_urgdata; -#endif /* UIP_URGDATA > 0 */ - - -/** - * \defgroup uipdrivervars Variables used in uIP device drivers - * @{ - * - * uIP has a few global variables that are used in device drivers for - * uIP. - */ - -/** - * The length of the packet in the uip_buf buffer. - * - * The global variable uip_len holds the length of the packet in the - * uip_buf buffer. - * - * When the network device driver calls the uIP input function, - * uip_len should be set to the length of the packet in the uip_buf - * buffer. - * - * When sending packets, the device driver should use the contents of - * the uip_len variable to determine the length of the outgoing - * packet. - * - */ -extern u16_t uip_len; - -/** @} */ - -#if UIP_URGDATA > 0 -extern u16_t uip_urglen, uip_surglen; -#endif /* UIP_URGDATA > 0 */ - - -/** - * Representation of a uIP TCP connection. - * - * The uip_conn structure is used for identifying a connection. All - * but one field in the structure are to be considered read-only by an - * application. The only exception is the appstate field whos purpose - * is to let the application store application-specific state (e.g., - * file pointers) for the connection. The type of this field is - * configured in the "uipopt.h" header file. - */ -struct uip_conn { - uip_ipaddr_t ripaddr; /**< The IP address of the remote host. */ - - u16_t lport; /**< The local TCP port, in network byte order. */ - u16_t rport; /**< The local remote TCP port, in network byte - order. */ - - u8_t rcv_nxt[4]; /**< The sequence number that we expect to - receive next. */ - u8_t snd_nxt[4]; /**< The sequence number that was last sent by - us. */ - u16_t len; /**< Length of the data that was previously sent. */ - u16_t mss; /**< Current maximum segment size for the - connection. */ - u16_t initialmss; /**< Initial maximum segment size for the - connection. */ - u8_t sa; /**< Retransmission time-out calculation state - variable. */ - u8_t sv; /**< Retransmission time-out calculation state - variable. */ - u8_t rto; /**< Retransmission time-out. */ - u8_t tcpstateflags; /**< TCP state and flags. */ - u8_t timer; /**< The retransmission timer. */ - u8_t nrtx; /**< The number of retransmissions for the last - segment sent. */ - - /** The application state. */ - uip_tcp_appstate_t appstate; -}; - - -/** - * Pointer to the current TCP connection. - * - * The uip_conn pointer can be used to access the current TCP - * connection. - */ -extern struct uip_conn *uip_conn; -/* The array containing all uIP connections. */ -extern struct uip_conn uip_conns[UIP_CONNS]; -/** - * \addtogroup uiparch - * @{ - */ - -/** - * 4-byte array used for the 32-bit sequence number calculations. - */ -extern u8_t uip_acc32[4]; - -/** @} */ - - -#if UIP_UDP -/** - * Representation of a uIP UDP connection. - */ -struct uip_udp_conn { - uip_ipaddr_t ripaddr; /**< The IP address of the remote peer. */ - u16_t lport; /**< The local port number in network byte order. */ - u16_t rport; /**< The remote port number in network byte order. */ - u8_t ttl; /**< Default time-to-live. */ - - /** The application state. */ - uip_udp_appstate_t appstate; -}; - -/** - * The current UDP connection. - */ -extern struct uip_udp_conn *uip_udp_conn; -extern struct uip_udp_conn uip_udp_conns[UIP_UDP_CONNS]; -#endif /* UIP_UDP */ - -/** - * The structure holding the TCP/IP statistics that are gathered if - * UIP_STATISTICS is set to 1. - * - */ -struct uip_stats { - struct { - uip_stats_t drop; /**< Number of dropped packets at the IP - layer. */ - uip_stats_t recv; /**< Number of received packets at the IP - layer. */ - uip_stats_t sent; /**< Number of sent packets at the IP - layer. */ - uip_stats_t vhlerr; /**< Number of packets dropped due to wrong - IP version or header length. */ - uip_stats_t hblenerr; /**< Number of packets dropped due to wrong - IP length, high byte. */ - uip_stats_t lblenerr; /**< Number of packets dropped due to wrong - IP length, low byte. */ - uip_stats_t fragerr; /**< Number of packets dropped since they - were IP fragments. */ - uip_stats_t chkerr; /**< Number of packets dropped due to IP - checksum errors. */ - uip_stats_t protoerr; /**< Number of packets dropped since they - were neither ICMP, UDP nor TCP. */ - } ip; /**< IP statistics. */ - struct { - uip_stats_t drop; /**< Number of dropped ICMP packets. */ - uip_stats_t recv; /**< Number of received ICMP packets. */ - uip_stats_t sent; /**< Number of sent ICMP packets. */ - uip_stats_t typeerr; /**< Number of ICMP packets with a wrong - type. */ - } icmp; /**< ICMP statistics. */ - struct { - uip_stats_t drop; /**< Number of dropped TCP segments. */ - uip_stats_t recv; /**< Number of recived TCP segments. */ - uip_stats_t sent; /**< Number of sent TCP segments. */ - uip_stats_t chkerr; /**< Number of TCP segments with a bad - checksum. */ - uip_stats_t ackerr; /**< Number of TCP segments with a bad ACK - number. */ - uip_stats_t rst; /**< Number of recevied TCP RST (reset) segments. */ - uip_stats_t rexmit; /**< Number of retransmitted TCP segments. */ - uip_stats_t syndrop; /**< Number of dropped SYNs due to too few - connections was avaliable. */ - uip_stats_t synrst; /**< Number of SYNs for closed ports, - triggering a RST. */ - } tcp; /**< TCP statistics. */ -#if UIP_UDP - struct { - uip_stats_t drop; /**< Number of dropped UDP segments. */ - uip_stats_t recv; /**< Number of recived UDP segments. */ - uip_stats_t sent; /**< Number of sent UDP segments. */ - uip_stats_t chkerr; /**< Number of UDP segments with a bad - checksum. */ - } udp; /**< UDP statistics. */ -#endif /* UIP_UDP */ -}; - -/** - * The uIP TCP/IP statistics. - * - * This is the variable in which the uIP TCP/IP statistics are gathered. - */ -extern struct uip_stats uip_stat; - - -/*---------------------------------------------------------------------------*/ -/* All the stuff below this point is internal to uIP and should not be - * used directly by an application or by a device driver. - */ -/*---------------------------------------------------------------------------*/ -/* u8_t uip_flags: - * - * When the application is called, uip_flags will contain the flags - * that are defined in this file. Please read below for more - * infomation. - */ -extern u8_t uip_flags; - -/* The following flags may be set in the global variable uip_flags - before calling the application callback. The UIP_ACKDATA, - UIP_NEWDATA, and UIP_CLOSE flags may both be set at the same time, - whereas the others are mutualy exclusive. Note that these flags - should *NOT* be accessed directly, but only through the uIP - functions/macros. */ - -#define UIP_ACKDATA 1 /* Signifies that the outstanding data was - acked and the application should send - out new data instead of retransmitting - the last data. */ -#define UIP_NEWDATA 2 /* Flags the fact that the peer has sent - us new data. */ -#define UIP_REXMIT 4 /* Tells the application to retransmit the - data that was last sent. */ -#define UIP_POLL 8 /* Used for polling the application, to - check if the application has data that - it wants to send. */ -#define UIP_CLOSE 16 /* The remote host has closed the - connection, thus the connection has - gone away. Or the application signals - that it wants to close the - connection. */ -#define UIP_ABORT 32 /* The remote host has aborted the - connection, thus the connection has - gone away. Or the application signals - that it wants to abort the - connection. */ -#define UIP_CONNECTED 64 /* We have got a connection from a remote - host and have set up a new connection - for it, or an active connection has - been successfully established. */ - -#define UIP_TIMEDOUT 128 /* The connection has been aborted due to - too many retransmissions. */ - -/* uip_process(flag): - * - * The actual uIP function which does all the work. - */ -void uip_process(u8_t flag); - -/* The following flags are passed as an argument to the uip_process() - function. They are used to distinguish between the two cases where - uip_process() is called. It can be called either because we have - incoming data that should be processed, or because the periodic - timer has fired. These values are never used directly, but only in - the macrose defined in this file. */ - -#define UIP_DATA 1 /* Tells uIP that there is incoming - data in the uip_buf buffer. The - length of the data is stored in the - global variable uip_len. */ -#define UIP_TIMER 2 /* Tells uIP that the periodic timer - has fired. */ -#define UIP_POLL_REQUEST 3 /* Tells uIP that a connection should - be polled. */ -#define UIP_UDP_SEND_CONN 4 /* Tells uIP that a UDP datagram - should be constructed in the - uip_buf buffer. */ -#if UIP_UDP -#define UIP_UDP_TIMER 5 -#endif /* UIP_UDP */ - -/* The TCP states used in the uip_conn->tcpstateflags. */ -#define UIP_CLOSED 0 -#define UIP_SYN_RCVD 1 -#define UIP_SYN_SENT 2 -#define UIP_ESTABLISHED 3 -#define UIP_FIN_WAIT_1 4 -#define UIP_FIN_WAIT_2 5 -#define UIP_CLOSING 6 -#define UIP_TIME_WAIT 7 -#define UIP_LAST_ACK 8 -#define UIP_TS_MASK 15 - -#define UIP_STOPPED 16 - -/* The TCP and IP headers. */ - -#ifdef __ICCARM__ - #pragma pack(1) -#endif - -struct uip_tcpip_hdr { -#if UIP_CONF_IPV6 - /* IPv6 header. */ - u8_t vtc, - tcflow; - u16_t flow; - u8_t len[2]; - u8_t proto, ttl; - uip_ip6addr_t srcipaddr, destipaddr; -#else /* UIP_CONF_IPV6 */ - /* IPv4 header. */ - u8_t vhl, - tos, - len[2], - ipid[2], - ipoffset[2], - ttl, - proto; - u16_t ipchksum; - u16_t srcipaddr[2], - destipaddr[2]; -#endif /* UIP_CONF_IPV6 */ - - /* TCP header. */ - u16_t srcport, - destport; - u8_t seqno[4], - ackno[4], - tcpoffset, - flags, - wnd[2]; - u16_t tcpchksum; - u8_t urgp[2]; - u8_t optdata[4]; -} PACK_STRUCT_END; - -#ifdef __ICCARM__ - #pragma pack() -#endif - -/* The ICMP and IP headers. */ -#ifdef __ICCARM__ - #pragma pack(1) -#endif - -struct uip_icmpip_hdr { -#if UIP_CONF_IPV6 - /* IPv6 header. */ - u8_t vtc, - tcf; - u16_t flow; - u8_t len[2]; - u8_t proto, ttl; - uip_ip6addr_t srcipaddr, destipaddr; -#else /* UIP_CONF_IPV6 */ - /* IPv4 header. */ - u8_t vhl, - tos, - len[2], - ipid[2], - ipoffset[2], - ttl, - proto; - u16_t ipchksum; - u16_t srcipaddr[2], - destipaddr[2]; -#endif /* UIP_CONF_IPV6 */ - - /* ICMP (echo) header. */ - u8_t type, icode; - u16_t icmpchksum; -#if !UIP_CONF_IPV6 - u16_t id, seqno; -#else /* !UIP_CONF_IPV6 */ - u8_t flags, reserved1, reserved2, reserved3; - u8_t icmp6data[16]; - u8_t options[1]; -#endif /* !UIP_CONF_IPV6 */ -} PACK_STRUCT_END; - -#ifdef __ICCARM__ - #pragma pack() -#endif - - -/* The UDP and IP headers. */ -#ifdef __ICCARM__ - #pragma pack(1) -#endif - -struct uip_udpip_hdr { -#if UIP_CONF_IPV6 - /* IPv6 header. */ - u8_t vtc, - tcf; - u16_t flow; - u8_t len[2]; - u8_t proto, ttl; - uip_ip6addr_t srcipaddr, destipaddr; -#else /* UIP_CONF_IPV6 */ - /* IP header. */ - u8_t vhl, - tos, - len[2], - ipid[2], - ipoffset[2], - ttl, - proto; - u16_t ipchksum; - u16_t srcipaddr[2], - destipaddr[2]; -#endif /* UIP_CONF_IPV6 */ - - /* UDP header. */ - u16_t srcport, - destport; - u16_t udplen; - u16_t udpchksum; -} PACK_STRUCT_END; - -#ifdef __ICCARM__ - #pragma pack() -#endif - - - -/** - * The buffer size available for user data in the \ref uip_buf buffer. - * - * This macro holds the available size for user data in the \ref - * uip_buf buffer. The macro is intended to be used for checking - * bounds of available user data. - * - * Example: - \code - snprintf(uip_appdata, UIP_APPDATA_SIZE, "%u\n", i); - \endcode - * - * \hideinitializer - */ -#define UIP_APPDATA_SIZE (UIP_BUFSIZE - UIP_LLH_LEN - UIP_TCPIP_HLEN) - - -#define UIP_PROTO_ICMP 1 -#define UIP_PROTO_TCP 6 -#define UIP_PROTO_UDP 17 -#define UIP_PROTO_ICMP6 58 - -/* Header sizes. */ -#if UIP_CONF_IPV6 -#define UIP_IPH_LEN 40 -#else /* UIP_CONF_IPV6 */ -#define UIP_IPH_LEN 20 /* Size of IP header */ -#endif /* UIP_CONF_IPV6 */ -#define UIP_UDPH_LEN 8 /* Size of UDP header */ -#define UIP_TCPH_LEN 20 /* Size of TCP header */ -#define UIP_IPUDPH_LEN (UIP_UDPH_LEN + UIP_IPH_LEN) /* Size of IP + - UDP - header */ -#define UIP_IPTCPH_LEN (UIP_TCPH_LEN + UIP_IPH_LEN) /* Size of IP + - TCP - header */ -#define UIP_TCPIP_HLEN UIP_IPTCPH_LEN - - -#if UIP_FIXEDADDR -extern const uip_ipaddr_t uip_hostaddr, uip_netmask, uip_draddr; -#else /* UIP_FIXEDADDR */ -extern uip_ipaddr_t uip_hostaddr, uip_netmask, uip_draddr; -#endif /* UIP_FIXEDADDR */ - - - -/** - * Representation of a 48-bit Ethernet address. - */ -#ifdef __ICCARM__ - #pragma pack(1) -#endif - -struct uip_eth_addr { - u8_t addr[6]; -} PACK_STRUCT_END; - -#ifdef __ICCARM__ - #pragma pack() -#endif - -/** - * Calculate the Internet checksum over a buffer. - * - * The Internet checksum is the one's complement of the one's - * complement sum of all 16-bit words in the buffer. - * - * See RFC1071. - * - * \param buf A pointer to the buffer over which the checksum is to be - * computed. - * - * \param len The length of the buffer over which the checksum is to - * be computed. - * - * \return The Internet checksum of the buffer. - */ -u16_t uip_chksum(u16_t *buf, u16_t len); - -/** - * Calculate the IP header checksum of the packet header in uip_buf. - * - * The IP header checksum is the Internet checksum of the 20 bytes of - * the IP header. - * - * \return The IP header checksum of the IP header in the uip_buf - * buffer. - */ -u16_t uip_ipchksum(void); - -/** - * Calculate the TCP checksum of the packet in uip_buf and uip_appdata. - * - * The TCP checksum is the Internet checksum of data contents of the - * TCP segment, and a pseudo-header as defined in RFC793. - * - * \return The TCP checksum of the TCP segment in uip_buf and pointed - * to by uip_appdata. - */ -u16_t uip_tcpchksum(void); - -/** - * Calculate the UDP checksum of the packet in uip_buf and uip_appdata. - * - * The UDP checksum is the Internet checksum of data contents of the - * UDP segment, and a pseudo-header as defined in RFC768. - * - * \return The UDP checksum of the UDP segment in uip_buf and pointed - * to by uip_appdata. - */ -u16_t uip_udpchksum(void); - -/** - * Work out the fasted way of sending the data to the low level driver. - */ -int uip_fast_send( int xARP ); - -#endif /* __UIP_H__ */ - - -/** @} */ diff --git a/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/uip_arch.h b/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/uip_arch.h deleted file mode 100644 index 5ea45787c..000000000 --- a/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/uip_arch.h +++ /dev/null @@ -1,138 +0,0 @@ -/** - * \addtogroup uip - * {@ - */ - -/** - * \defgroup uiparch Architecture specific uIP functions - * @{ - * - * The functions in the architecture specific module implement the IP - * check sum and 32-bit additions. - * - * The IP checksum calculation is the most computationally expensive - * operation in the TCP/IP stack and it therefore pays off to - * implement this in efficient assembler. The purpose of the uip-arch - * module is to let the checksum functions to be implemented in - * architecture specific assembler. - * - */ - -/** - * \file - * Declarations of architecture specific functions. - * \author Adam Dunkels - */ - -/* - * Copyright (c) 2001, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: uip_arch.h,v 1.2 2006/06/07 09:15:19 adam Exp $ - * - */ - -#ifndef __UIP_ARCH_H__ -#define __UIP_ARCH_H__ - -#include "uip.h" - -/** - * Carry out a 32-bit addition. - * - * Because not all architectures for which uIP is intended has native - * 32-bit arithmetic, uIP uses an external C function for doing the - * required 32-bit additions in the TCP protocol processing. This - * function should add the two arguments and place the result in the - * global variable uip_acc32. - * - * \note The 32-bit integer pointed to by the op32 parameter and the - * result in the uip_acc32 variable are in network byte order (big - * endian). - * - * \param op32 A pointer to a 4-byte array representing a 32-bit - * integer in network byte order (big endian). - * - * \param op16 A 16-bit integer in host byte order. - */ -void uip_add32(u8_t *op32, u16_t op16); - -/** - * Calculate the Internet checksum over a buffer. - * - * The Internet checksum is the one's complement of the one's - * complement sum of all 16-bit words in the buffer. - * - * See RFC1071. - * - * \note This function is not called in the current version of uIP, - * but future versions might make use of it. - * - * \param buf A pointer to the buffer over which the checksum is to be - * computed. - * - * \param len The length of the buffer over which the checksum is to - * be computed. - * - * \return The Internet checksum of the buffer. - */ -u16_t uip_chksum(u16_t *buf, u16_t len); - -/** - * Calculate the IP header checksum of the packet header in uip_buf. - * - * The IP header checksum is the Internet checksum of the 20 bytes of - * the IP header. - * - * \return The IP header checksum of the IP header in the uip_buf - * buffer. - */ -u16_t uip_ipchksum(void); - -/** - * Calculate the TCP checksum of the packet in uip_buf and uip_appdata. - * - * The TCP checksum is the Internet checksum of data contents of the - * TCP segment, and a pseudo-header as defined in RFC793. - * - * \note The uip_appdata pointer that points to the packet data may - * point anywhere in memory, so it is not possible to simply calculate - * the Internet checksum of the contents of the uip_buf buffer. - * - * \return The TCP checksum of the TCP segment in uip_buf and pointed - * to by uip_appdata. - */ -u16_t uip_tcpchksum(void); - -u16_t uip_udpchksum(void); - -/** @} */ -/** @} */ - -#endif /* __UIP_ARCH_H__ */ diff --git a/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/uip_arp.c b/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/uip_arp.c deleted file mode 100644 index d10522661..000000000 --- a/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/uip_arp.c +++ /dev/null @@ -1,466 +0,0 @@ -/** - * \addtogroup uip - * @{ - */ - -/** - * \defgroup uiparp uIP Address Resolution Protocol - * @{ - * - * The Address Resolution Protocol ARP is used for mapping between IP - * addresses and link level addresses such as the Ethernet MAC - * addresses. ARP uses broadcast queries to ask for the link level - * address of a known IP address and the host which is configured with - * the IP address for which the query was meant, will respond with its - * link level address. - * - * \note This ARP implementation only supports Ethernet. - */ - -/** - * \file - * Implementation of the ARP Address Resolution Protocol. - * \author Adam Dunkels - * - */ - -/* - * Copyright (c) 2001-2003, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: uip_arp.c,v 1.8 2006/06/02 23:36:21 adam Exp $ - * - */ -#include "uip_arp.h" - -#include - -#ifdef __ICCARM__ - #pragma pack( 1 ) -#endif -struct arp_hdr -{ - struct uip_eth_hdr ethhdr; - u16_t hwtype; - u16_t protocol; - u8_t hwlen; - u8_t protolen; - u16_t opcode; - struct uip_eth_addr shwaddr; - u16_t sipaddr[2]; - struct uip_eth_addr dhwaddr; - u16_t dipaddr[2]; -} PACK_STRUCT_END; - -#ifdef __ICCARM__ - #pragma pack() -#endif -#ifdef __ICCARM__ - #pragma pack( 1 ) -#endif -struct ethip_hdr -{ - struct uip_eth_hdr ethhdr; - - /* IP header. */ - u8_t vhl, tos, len[2], ipid[2], ipoffset[2], ttl, proto; - u16_t ipchksum; - u16_t srcipaddr[2], destipaddr[2]; -} PACK_STRUCT_END; - -#ifdef __ICCARM__ - #pragma pack() -#endif -#define ARP_REQUEST 1 -#define ARP_REPLY 2 - -#define ARP_HWTYPE_ETH 1 - -struct arp_entry -{ - u16_t ipaddr[2]; - struct uip_eth_addr ethaddr; - u8_t time; -}; - -static const struct uip_eth_addr broadcast_ethaddr = { { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff } }; -static const u16_t broadcast_ipaddr[2] = { 0xffff, 0xffff }; - -static struct arp_entry arp_table[UIP_ARPTAB_SIZE]; -static u16_t ipaddr[2]; -static u8_t i, c; - -static u8_t arptime; -static u8_t tmpage; - -#define BUF ( ( struct arp_hdr * ) &uip_buf[0] ) -#define IPBUF ( ( struct ethip_hdr * ) &uip_buf[0] ) - -/*-----------------------------------------------------------------------------------*/ - -/** - * Initialize the ARP module. - * - */ - -/*-----------------------------------------------------------------------------------*/ -void uip_arp_init( void ) -{ - for( i = 0; i < UIP_ARPTAB_SIZE; ++i ) - { - memset( arp_table[i].ipaddr, 0, 4 ); - } -} - -/*-----------------------------------------------------------------------------------*/ - -/** - * Periodic ARP processing function. - * - * This function performs periodic timer processing in the ARP module - * and should be called at regular intervals. The recommended interval - * is 10 seconds between the calls. - * - */ - -/*-----------------------------------------------------------------------------------*/ -void uip_arp_timer( void ) -{ - struct arp_entry *tabptr; - - ++arptime; - for( i = 0; i < UIP_ARPTAB_SIZE; ++i ) - { - tabptr = &arp_table[i]; - if( (tabptr->ipaddr[0] | tabptr->ipaddr[1]) != 0 && arptime - tabptr->time >= UIP_ARP_MAXAGE ) - { - memset( tabptr->ipaddr, 0, 4 ); - } - } -} - -/*-----------------------------------------------------------------------------------*/ -static void uip_arp_update( u16_t *ipaddr, struct uip_eth_addr *ethaddr ) -{ - register struct arp_entry *tabptr; - - /* Walk through the ARP mapping table and try to find an entry to - update. If none is found, the IP -> MAC address mapping is - inserted in the ARP table. */ - for( i = 0; i < UIP_ARPTAB_SIZE; ++i ) - { - tabptr = &arp_table[i]; - - /* Only check those entries that are actually in use. */ - if( tabptr->ipaddr[0] != 0 && tabptr->ipaddr[1] != 0 ) - { - /* Check if the source IP address of the incoming packet matches - the IP address in this ARP table entry. */ - if( ipaddr[0] == tabptr->ipaddr[0] && ipaddr[1] == tabptr->ipaddr[1] ) - { - /* An old entry found, update this and return. */ - memcpy( tabptr->ethaddr.addr, ethaddr->addr, 6 ); - tabptr->time = arptime; - - return; - } - } - } - - /* If we get here, no existing ARP table entry was found, so we - create one. */ - - /* First, we try to find an unused entry in the ARP table. */ - for( i = 0; i < UIP_ARPTAB_SIZE; ++i ) - { - tabptr = &arp_table[i]; - if( tabptr->ipaddr[0] == 0 && tabptr->ipaddr[1] == 0 ) - { - break; - } - } - - /* If no unused entry is found, we try to find the oldest entry and - throw it away. */ - if( i == UIP_ARPTAB_SIZE ) - { - tmpage = 0; - c = 0; - for( i = 0; i < UIP_ARPTAB_SIZE; ++i ) - { - tabptr = &arp_table[i]; - if( arptime - tabptr->time > tmpage ) - { - tmpage = arptime - tabptr->time; - c = i; - } - } - - i = c; - tabptr = &arp_table[i]; - } - - /* Now, i is the ARP table entry which we will fill with the new - information. */ - memcpy( tabptr->ipaddr, ipaddr, 4 ); - memcpy( tabptr->ethaddr.addr, ethaddr->addr, 6 ); - tabptr->time = arptime; -} - -/*-----------------------------------------------------------------------------------*/ - -/** - * ARP processing for incoming IP packets - * - * This function should be called by the device driver when an IP - * packet has been received. The function will check if the address is - * in the ARP cache, and if so the ARP cache entry will be - * refreshed. If no ARP cache entry was found, a new one is created. - * - * This function expects an IP packet with a prepended Ethernet header - * in the uip_buf[] buffer, and the length of the packet in the global - * variable uip_len. - */ - -/*-----------------------------------------------------------------------------------*/ -#if 1 -void uip_arp_ipin( void ) -{ - uip_len -= sizeof( struct uip_eth_hdr ); - - /* Only insert/update an entry if the source IP address of the - incoming IP packet comes from a host on the local network. */ - if( (IPBUF->srcipaddr[0] & uip_netmask[0]) != (uip_hostaddr[0] & uip_netmask[0]) ) - { - return; - } - - if( (IPBUF->srcipaddr[1] & uip_netmask[1]) != (uip_hostaddr[1] & uip_netmask[1]) ) - { - return; - } - - uip_arp_update( IPBUF->srcipaddr, &(IPBUF->ethhdr.src) ); - - return; -} - -#endif /* 0 */ - -/*-----------------------------------------------------------------------------------*/ - -/** - * ARP processing for incoming ARP packets. - * - * This function should be called by the device driver when an ARP - * packet has been received. The function will act differently - * depending on the ARP packet type: if it is a reply for a request - * that we previously sent out, the ARP cache will be filled in with - * the values from the ARP reply. If the incoming ARP packet is an ARP - * request for our IP address, an ARP reply packet is created and put - * into the uip_buf[] buffer. - * - * When the function returns, the value of the global variable uip_len - * indicates whether the device driver should send out a packet or - * not. If uip_len is zero, no packet should be sent. If uip_len is - * non-zero, it contains the length of the outbound packet that is - * present in the uip_buf[] buffer. - * - * This function expects an ARP packet with a prepended Ethernet - * header in the uip_buf[] buffer, and the length of the packet in the - * global variable uip_len. - */ - -/*-----------------------------------------------------------------------------------*/ -void uip_arp_arpin( void ) -{ - if( uip_len < sizeof(struct arp_hdr) ) - { - uip_len = 0; - return; - } - - uip_len = 0; - - switch( BUF->opcode ) - { - case HTONS( ARP_REQUEST ): - /* ARP request. If it asked for our address, we send out a - reply. */ - if( uip_ipaddr_cmp(BUF->dipaddr, uip_hostaddr) ) - { - /* First, we register the one who made the request in our ARP - table, since it is likely that we will do more communication - with this host in the future. */ - uip_arp_update( BUF->sipaddr, &BUF->shwaddr ); - - /* The reply opcode is 2. */ - BUF->opcode = HTONS( 2 ); - - memcpy( BUF->dhwaddr.addr, BUF->shwaddr.addr, 6 ); - memcpy( BUF->shwaddr.addr, uip_ethaddr.addr, 6 ); - memcpy( BUF->ethhdr.src.addr, uip_ethaddr.addr, 6 ); - memcpy( BUF->ethhdr.dest.addr, BUF->dhwaddr.addr, 6 ); - - BUF->dipaddr[0] = BUF->sipaddr[0]; - BUF->dipaddr[1] = BUF->sipaddr[1]; - BUF->sipaddr[0] = uip_hostaddr[0]; - BUF->sipaddr[1] = uip_hostaddr[1]; - - BUF->ethhdr.type = HTONS( UIP_ETHTYPE_ARP ); - uip_len = sizeof( struct arp_hdr ); - } - - break; - - case HTONS( ARP_REPLY ): - /* ARP reply. We insert or update the ARP table if it was meant - for us. */ - if( uip_ipaddr_cmp(BUF->dipaddr, uip_hostaddr) ) - { - uip_arp_update( BUF->sipaddr, &BUF->shwaddr ); - } - - break; - } - - return; -} - -/*-----------------------------------------------------------------------------------*/ - -/** - * Prepend Ethernet header to an outbound IP packet and see if we need - * to send out an ARP request. - * - * This function should be called before sending out an IP packet. The - * function checks the destination IP address of the IP packet to see - * what Ethernet MAC address that should be used as a destination MAC - * address on the Ethernet. - * - * If the destination IP address is in the local network (determined - * by logical ANDing of netmask and our IP address), the function - * checks the ARP cache to see if an entry for the destination IP - * address is found. If so, an Ethernet header is prepended and the - * function returns. If no ARP cache entry is found for the - * destination IP address, the packet in the uip_buf[] is replaced by - * an ARP request packet for the IP address. The IP packet is dropped - * and it is assumed that they higher level protocols (e.g., TCP) - * eventually will retransmit the dropped packet. - * - * If the destination IP address is not on the local network, the IP - * address of the default router is used instead. - * - * When the function returns, a packet is present in the uip_buf[] - * buffer, and the length of the packet is in the global variable - * uip_len. - */ - -/*-----------------------------------------------------------------------------------*/ -void uip_arp_out( void ) -{ - struct arp_entry *tabptr; - - /* Find the destination IP address in the ARP table and construct - the Ethernet header. If the destination IP addres isn't on the - local network, we use the default router's IP address instead. - - If not ARP table entry is found, we overwrite the original IP - packet with an ARP request for the IP address. */ - - /* First check if destination is a local broadcast. */ - if( uip_ipaddr_cmp(IPBUF->destipaddr, broadcast_ipaddr) ) - { - memcpy( IPBUF->ethhdr.dest.addr, broadcast_ethaddr.addr, 6 ); - } - else - { - /* Check if the destination address is on the local network. */ - if( !uip_ipaddr_maskcmp(IPBUF->destipaddr, uip_hostaddr, uip_netmask) ) - { - /* Destination address was not on the local network, so we need to - use the default router's IP address instead of the destination - address when determining the MAC address. */ - uip_ipaddr_copy( ipaddr, uip_draddr ); - } - else - { - /* Else, we use the destination IP address. */ - uip_ipaddr_copy( ipaddr, IPBUF->destipaddr ); - } - - for( i = 0; i < UIP_ARPTAB_SIZE; ++i ) - { - tabptr = &arp_table[i]; - if( uip_ipaddr_cmp(ipaddr, tabptr->ipaddr) ) - { - break; - } - } - - if( i == UIP_ARPTAB_SIZE ) - { - /* The destination address was not in our ARP table, so we - overwrite the IP packet with an ARP request. */ - memset( BUF->ethhdr.dest.addr, 0xff, 6 ); - memset( BUF->dhwaddr.addr, 0x00, 6 ); - memcpy( BUF->ethhdr.src.addr, uip_ethaddr.addr, 6 ); - memcpy( BUF->shwaddr.addr, uip_ethaddr.addr, 6 ); - - uip_ipaddr_copy( BUF->dipaddr, ipaddr ); - uip_ipaddr_copy( BUF->sipaddr, uip_hostaddr ); - BUF->opcode = HTONS( ARP_REQUEST ); /* ARP request. */ - BUF->hwtype = HTONS( ARP_HWTYPE_ETH ); - BUF->protocol = HTONS( UIP_ETHTYPE_IP ); - BUF->hwlen = 6; - BUF->protolen = 4; - BUF->ethhdr.type = HTONS( UIP_ETHTYPE_ARP ); - - uip_appdata = &uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN]; - - uip_len = sizeof( struct arp_hdr ); - return; - } - - /* Build an ethernet header. */ - memcpy( IPBUF->ethhdr.dest.addr, tabptr->ethaddr.addr, 6 ); - } - - memcpy( IPBUF->ethhdr.src.addr, uip_ethaddr.addr, 6 ); - - IPBUF->ethhdr.type = HTONS( UIP_ETHTYPE_IP ); - - uip_len += sizeof( struct uip_eth_hdr ); -} - -/*-----------------------------------------------------------------------------------*/ - -/** @} */ - -/** @} */ diff --git a/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/uip_arp.h b/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/uip_arp.h deleted file mode 100644 index b6b2b66b4..000000000 --- a/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/uip_arp.h +++ /dev/null @@ -1,152 +0,0 @@ -/** - * \addtogroup uip - * @{ - */ - -/** - * \addtogroup uiparp - * @{ - */ - -/** - * \file - * Macros and definitions for the ARP module. - * \author Adam Dunkels - */ - - -/* - * Copyright (c) 2001-2003, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: uip_arp.h,v 1.5 2006/06/11 21:46:39 adam Exp $ - * - */ - -#ifndef __UIP_ARP_H__ -#define __UIP_ARP_H__ - -#include "uip.h" - - -extern struct uip_eth_addr uip_ethaddr; - -/** - * The Ethernet header. - */ -#ifdef __ICCARM__ - #pragma pack(1) -#endif - -struct uip_eth_hdr { - struct uip_eth_addr dest; - struct uip_eth_addr src; - u16_t type; -}PACK_STRUCT_END; - -#ifdef __ICCARM__ - #pragma pack() -#endif - -#define UIP_ETHTYPE_ARP 0x0806 -#define UIP_ETHTYPE_IP 0x0800 -#define UIP_ETHTYPE_IP6 0x86dd - - -/* The uip_arp_init() function must be called before any of the other - ARP functions. */ -void uip_arp_init(void); - -/* The uip_arp_ipin() function should be called whenever an IP packet - arrives from the Ethernet. This function refreshes the ARP table or - inserts a new mapping if none exists. The function assumes that an - IP packet with an Ethernet header is present in the uip_buf buffer - and that the length of the packet is in the uip_len variable. */ -void uip_arp_ipin(void); -//#define uip_arp_ipin() - -/* The uip_arp_arpin() should be called when an ARP packet is received - by the Ethernet driver. This function also assumes that the - Ethernet frame is present in the uip_buf buffer. When the - uip_arp_arpin() function returns, the contents of the uip_buf - buffer should be sent out on the Ethernet if the uip_len variable - is > 0. */ -void uip_arp_arpin(void); - -/* The uip_arp_out() function should be called when an IP packet - should be sent out on the Ethernet. This function creates an - Ethernet header before the IP header in the uip_buf buffer. The - Ethernet header will have the correct Ethernet MAC destination - address filled in if an ARP table entry for the destination IP - address (or the IP address of the default router) is present. If no - such table entry is found, the IP packet is overwritten with an ARP - request and we rely on TCP to retransmit the packet that was - overwritten. In any case, the uip_len variable holds the length of - the Ethernet frame that should be transmitted. */ -void uip_arp_out(void); - -/* The uip_arp_timer() function should be called every ten seconds. It - is responsible for flushing old entries in the ARP table. */ -void uip_arp_timer(void); - -/** @} */ - -/** - * \addtogroup uipconffunc - * @{ - */ - - -/** - * Specifiy the Ethernet MAC address. - * - * The ARP code needs to know the MAC address of the Ethernet card in - * order to be able to respond to ARP queries and to generate working - * Ethernet headers. - * - * \note This macro only specifies the Ethernet MAC address to the ARP - * code. It cannot be used to change the MAC address of the Ethernet - * card. - * - * \param eaddr A pointer to a struct uip_eth_addr containing the - * Ethernet MAC address of the Ethernet card. - * - * \hideinitializer - */ -#define uip_setethaddr(eaddr) do {uip_ethaddr.addr[0] = eaddr.addr[0]; \ - uip_ethaddr.addr[1] = eaddr.addr[1];\ - uip_ethaddr.addr[2] = eaddr.addr[2];\ - uip_ethaddr.addr[3] = eaddr.addr[3];\ - uip_ethaddr.addr[4] = eaddr.addr[4];\ - uip_ethaddr.addr[5] = eaddr.addr[5];} while(0) - -/** @} */ -/** @} */ - -#endif /* __UIP_ARP_H__ */ diff --git a/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/uip_timer.h b/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/uip_timer.h deleted file mode 100644 index e28e3ca5f..000000000 --- a/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/uip_timer.h +++ /dev/null @@ -1,86 +0,0 @@ -/** - * \defgroup timer Timer library - * - * The timer library provides functions for setting, resetting and - * restarting timers, and for checking if a timer has expired. An - * application must "manually" check if its timers have expired; this - * is not done automatically. - * - * A timer is declared as a \c struct \c timer and all access to the - * timer is made by a pointer to the declared timer. - * - * \note The timer library uses the \ref clock "Clock library" to - * measure time. Intervals should be specified in the format used by - * the clock library. - * - * @{ - */ - - -/** - * \file - * Timer library header file. - * \author - * Adam Dunkels - */ - -/* - * Copyright (c) 2004, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * Author: Adam Dunkels - * - * $Id: timer.h,v 1.3 2006/06/11 21:46:39 adam Exp $ - */ -#ifndef __TIMER_H__ -#define __TIMER_H__ - -#include "clock.h" - -/** - * A timer. - * - * This structure is used for declaring a timer. The timer must be set - * with timer_set() before it can be used. - * - * \hideinitializer - */ -struct timer { - clock_time_t start; - clock_time_t interval; -}; - -void timer_set(struct timer *t, clock_time_t interval); -void timer_reset(struct timer *t); -void timer_restart(struct timer *t); -int timer_expired(struct timer *t); - -#endif /* __TIMER_H__ */ - -/** @} */ diff --git a/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/uiplib.c b/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/uiplib.c deleted file mode 100644 index afedc0d42..000000000 --- a/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/uiplib.c +++ /dev/null @@ -1,81 +0,0 @@ -/* - * Copyright (c) 2004, Adam Dunkels and the Swedish Institute of - * Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: uiplib.c,v 1.2 2006/06/12 08:00:31 adam Exp $ - * - */ -#include "uip.h" -#include "uiplib.h" - -/*-----------------------------------------------------------------------------------*/ -unsigned char uiplib_ipaddrconv( char *addrstr, unsigned char *ipaddr ) -{ - unsigned char tmp; - char c; - unsigned char i, j; - - tmp = 0; - - for( i = 0; i < 4; ++i ) - { - j = 0; - do - { - c = *addrstr; - ++j; - if( j > 4 ) - { - return 0; - } - - if( c == '.' || c == 0 ) - { - *ipaddr = tmp; - ++ipaddr; - tmp = 0; - } - else if( c >= '0' && c <= '9' ) - { - tmp = ( tmp * 10 ) + ( c - '0' ); - } - else - { - return 0; - } - - ++addrstr; - } while( c != '.' && c != 0 ); - } - - return 1; -} - -/*-----------------------------------------------------------------------------------*/ diff --git a/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/uiplib.h b/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/uiplib.h deleted file mode 100644 index 6eb0c66f5..000000000 --- a/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/uiplib.h +++ /dev/null @@ -1,71 +0,0 @@ -/** - * \file - * Various uIP library functions. - * \author - * Adam Dunkels - * - */ - -/* - * Copyright (c) 2002, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials provided - * with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: uiplib.h,v 1.1 2006/06/07 09:15:19 adam Exp $ - * - */ -#ifndef __UIPLIB_H__ -#define __UIPLIB_H__ - -/** - * \addtogroup uipconvfunc - * @{ - */ - -/** - * Convert a textual representation of an IP address to a numerical representation. - * - * This function takes a textual representation of an IP address in - * the form a.b.c.d and converts it into a 4-byte array that can be - * used by other uIP functions. - * - * \param addrstr A pointer to a string containing the IP address in - * textual form. - * - * \param addr A pointer to a 4-byte array that will be filled in with - * the numerical representation of the address. - * - * \retval 0 If the IP address could not be parsed. - * \retval Non-zero If the IP address was parsed. - */ -unsigned char uiplib_ipaddrconv(char *addrstr, unsigned char *addr); - -/** @} */ - -#endif /* __UIPLIB_H__ */ diff --git a/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/uipopt.h b/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/uipopt.h deleted file mode 100644 index cc010016f..000000000 --- a/FreeRTOS/Demo/Common/ethernet/FreeRTOS-uIP/uipopt.h +++ /dev/null @@ -1,535 +0,0 @@ -/** - * \defgroup uipopt Configuration options for uIP - * @{ - * - * uIP is configured using the per-project configuration file - * uipopt.h. This file contains all compile-time options for uIP and - * should be tweaked to match each specific project. The uIP - * distribution contains a documented example "uipopt.h" that can be - * copied and modified for each project. - * - * \note Most of the configuration options in the uipopt.h should not - * be changed, but rather the per-project uip-conf.h file. - */ - -/** - * \file - * Configuration options for uIP. - * \author Adam Dunkels - * - * This file is used for tweaking various configuration options for - * uIP. You should make a copy of this file into one of your project's - * directories instead of editing this example "uipopt.h" file that - * comes with the uIP distribution. - */ - -/* - * Copyright (c) 2001-2003, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: uipopt.h,v 1.4 2006/06/12 08:00:31 adam Exp $ - * - */ - -#ifndef __UIPOPT_H__ -#define __UIPOPT_H__ - -#ifndef UIP_LITTLE_ENDIAN -#define UIP_LITTLE_ENDIAN 3412 -#endif /* UIP_LITTLE_ENDIAN */ -#ifndef UIP_BIG_ENDIAN -#define UIP_BIG_ENDIAN 1234 -#endif /* UIP_BIG_ENDIAN */ - -#include "uip-conf.h" - -/*------------------------------------------------------------------------------*/ - -/** - * \name Static configuration options - * @{ - * - * These configuration options can be used for setting the IP address - * settings statically, but only if UIP_FIXEDADDR is set to 1. The - * configuration options for a specific node includes IP address, - * netmask and default router as well as the Ethernet address. The - * netmask, default router and Ethernet address are appliciable only - * if uIP should be run over Ethernet. - * - * All of these should be changed to suit your project. -*/ - -/** - * Determines if uIP should use a fixed IP address or not. - * - * If uIP should use a fixed IP address, the settings are set in the - * uipopt.h file. If not, the macros uip_sethostaddr(), - * uip_setdraddr() and uip_setnetmask() should be used instead. - * - * \hideinitializer - */ -#define UIP_FIXEDADDR 0 - -/** - * Ping IP address asignment. - * - * uIP uses a "ping" packets for setting its own IP address if this - * option is set. If so, uIP will start with an empty IP address and - * the destination IP address of the first incoming "ping" (ICMP echo) - * packet will be used for setting the hosts IP address. - * - * \note This works only if UIP_FIXEDADDR is 0. - * - * \hideinitializer - */ -#ifdef UIP_CONF_PINGADDRCONF -#define UIP_PINGADDRCONF UIP_CONF_PINGADDRCONF -#else /* UIP_CONF_PINGADDRCONF */ -#define UIP_PINGADDRCONF 0 -#endif /* UIP_CONF_PINGADDRCONF */ - - -/** - * Specifies if the uIP ARP module should be compiled with a fixed - * Ethernet MAC address or not. - * - * If this configuration option is 0, the macro uip_setethaddr() can - * be used to specify the Ethernet address at run-time. - * - * \hideinitializer - */ -#define UIP_FIXEDETHADDR 0 - -/** @} */ -/*------------------------------------------------------------------------------*/ -/** - * \name IP configuration options - * @{ - * - */ -/** - * The IP TTL (time to live) of IP packets sent by uIP. - * - * This should normally not be changed. - */ -#define UIP_TTL 64 - -/** - * Turn on support for IP packet reassembly. - * - * uIP supports reassembly of fragmented IP packets. This features - * requires an additonal amount of RAM to hold the reassembly buffer - * and the reassembly code size is approximately 700 bytes. The - * reassembly buffer is of the same size as the uip_buf buffer - * (configured by UIP_BUFSIZE). - * - * \note IP packet reassembly is not heavily tested. - * - * \hideinitializer - */ -#define UIP_REASSEMBLY 0 - -/** - * The maximum time an IP fragment should wait in the reassembly - * buffer before it is dropped. - * - */ -#define UIP_REASS_MAXAGE 40 - -/** @} */ - -/*------------------------------------------------------------------------------*/ -/** - * \name UDP configuration options - * @{ - */ - -/** - * Toggles wether UDP support should be compiled in or not. - * - * \hideinitializer - */ -#ifdef UIP_CONF_UDP -#define UIP_UDP UIP_CONF_UDP -#else /* UIP_CONF_UDP */ -#define UIP_UDP 0 -#endif /* UIP_CONF_UDP */ - -/** - * Toggles if UDP checksums should be used or not. - * - * \note Support for UDP checksums is currently not included in uIP, - * so this option has no function. - * - * \hideinitializer - */ -#ifdef UIP_CONF_UDP_CHECKSUMS -#define UIP_UDP_CHECKSUMS UIP_CONF_UDP_CHECKSUMS -#else -#define UIP_UDP_CHECKSUMS 0 -#endif - -/** - * The maximum amount of concurrent UDP connections. - * - * \hideinitializer - */ -#ifdef UIP_CONF_UDP_CONNS -#define UIP_UDP_CONNS UIP_CONF_UDP_CONNS -#else /* UIP_CONF_UDP_CONNS */ -#define UIP_UDP_CONNS 10 -#endif /* UIP_CONF_UDP_CONNS */ - -/** - * The name of the function that should be called when UDP datagrams arrive. - * - * \hideinitializer - */ - - -/** @} */ -/*------------------------------------------------------------------------------*/ -/** - * \name TCP configuration options - * @{ - */ - -/** - * Determines if support for opening connections from uIP should be - * compiled in. - * - * If the applications that are running on top of uIP for this project - * do not need to open outgoing TCP connections, this configration - * option can be turned off to reduce the code size of uIP. - * - * \hideinitializer - */ -#define UIP_ACTIVE_OPEN 1 - -/** - * The maximum number of simultaneously open TCP connections. - * - * Since the TCP connections are statically allocated, turning this - * configuration knob down results in less RAM used. Each TCP - * connection requires approximatly 30 bytes of memory. - * - * \hideinitializer - */ -#ifndef UIP_CONF_MAX_CONNECTIONS -#define UIP_CONNS 10 -#else /* UIP_CONF_MAX_CONNECTIONS */ -#define UIP_CONNS UIP_CONF_MAX_CONNECTIONS -#endif /* UIP_CONF_MAX_CONNECTIONS */ - - -/** - * The maximum number of simultaneously listening TCP ports. - * - * Each listening TCP port requires 2 bytes of memory. - * - * \hideinitializer - */ -#ifndef UIP_CONF_MAX_LISTENPORTS -#define UIP_LISTENPORTS 20 -#else /* UIP_CONF_MAX_LISTENPORTS */ -#define UIP_LISTENPORTS UIP_CONF_MAX_LISTENPORTS -#endif /* UIP_CONF_MAX_LISTENPORTS */ - -/** - * Determines if support for TCP urgent data notification should be - * compiled in. - * - * Urgent data (out-of-band data) is a rarely used TCP feature that - * very seldom would be required. - * - * \hideinitializer - */ -#define UIP_URGDATA 0 - -/** - * The initial retransmission timeout counted in timer pulses. - * - * This should not be changed. - */ -#define UIP_RTO 3 - -/** - * The maximum number of times a segment should be retransmitted - * before the connection should be aborted. - * - * This should not be changed. - */ -#define UIP_MAXRTX 8 - -/** - * The maximum number of times a SYN segment should be retransmitted - * before a connection request should be deemed to have been - * unsuccessful. - * - * This should not need to be changed. - */ -#define UIP_MAXSYNRTX 5 - -/** - * The TCP maximum segment size. - * - * This is should not be to set to more than - * UIP_BUFSIZE - UIP_LLH_LEN - UIP_TCPIP_HLEN. - */ -#define UIP_TCP_MSS (UIP_BUFSIZE - UIP_LLH_LEN - UIP_TCPIP_HLEN) - -/** - * The size of the advertised receiver's window. - * - * Should be set low (i.e., to the size of the uip_buf buffer) is the - * application is slow to process incoming data, or high (32768 bytes) - * if the application processes data quickly. - * - * \hideinitializer - */ -#ifndef UIP_CONF_RECEIVE_WINDOW -#define UIP_RECEIVE_WINDOW UIP_TCP_MSS -#else -#define UIP_RECEIVE_WINDOW UIP_CONF_RECEIVE_WINDOW -#endif - -/** - * How long a connection should stay in the TIME_WAIT state. - * - * This configiration option has no real implication, and it should be - * left untouched. - */ -#define UIP_TIME_WAIT_TIMEOUT 120 - - -/** @} */ -/*------------------------------------------------------------------------------*/ -/** - * \name ARP configuration options - * @{ - */ - -/** - * The size of the ARP table. - * - * This option should be set to a larger value if this uIP node will - * have many connections from the local network. - * - * \hideinitializer - */ -#ifdef UIP_CONF_ARPTAB_SIZE -#define UIP_ARPTAB_SIZE UIP_CONF_ARPTAB_SIZE -#else -#define UIP_ARPTAB_SIZE 8 -#endif - -/** - * The maxium age of ARP table entries measured in 10ths of seconds. - * - * An UIP_ARP_MAXAGE of 120 corresponds to 20 minutes (BSD - * default). - */ -#define UIP_ARP_MAXAGE 120 - -/** @} */ - -/*------------------------------------------------------------------------------*/ - -/** - * \name General configuration options - * @{ - */ - -/** - * The size of the uIP packet buffer. - * - * The uIP packet buffer should not be smaller than 60 bytes, and does - * not need to be larger than 1500 bytes. Lower size results in lower - * TCP throughput, larger size results in higher TCP throughput. - * - * \hideinitializer - */ -#ifndef UIP_CONF_BUFFER_SIZE -#define UIP_BUFSIZE 1500 -#else /* UIP_CONF_BUFFER_SIZE */ -#define UIP_BUFSIZE UIP_CONF_BUFFER_SIZE -#endif /* UIP_CONF_BUFFER_SIZE */ - - -/** - * Determines if statistics support should be compiled in. - * - * The statistics is useful for debugging and to show the user. - * - * \hideinitializer - */ -#ifndef UIP_CONF_STATISTICS -#define UIP_STATISTICS 0 -#else /* UIP_CONF_STATISTICS */ -#define UIP_STATISTICS UIP_CONF_STATISTICS -#endif /* UIP_CONF_STATISTICS */ - -/** - * Determines if logging of certain events should be compiled in. - * - * This is useful mostly for debugging. The function uip_log() - * must be implemented to suit the architecture of the project, if - * logging is turned on. - * - * \hideinitializer - */ -#ifndef UIP_CONF_LOGGING -#define UIP_LOGGING 0 -#else /* UIP_CONF_LOGGING */ -#define UIP_LOGGING UIP_CONF_LOGGING -#endif /* UIP_CONF_LOGGING */ - -/** - * Broadcast support. - * - * This flag configures IP broadcast support. This is useful only - * together with UDP. - * - * \hideinitializer - * - */ -#ifndef UIP_CONF_BROADCAST -#define UIP_BROADCAST 0 -#else /* UIP_CONF_BROADCAST */ -#define UIP_BROADCAST UIP_CONF_BROADCAST -#endif /* UIP_CONF_BROADCAST */ - -/** - * Print out a uIP log message. - * - * This function must be implemented by the module that uses uIP, and - * is called by uIP whenever a log message is generated. - */ -void uip_log(char *msg); - -/** - * The link level header length. - * - * This is the offset into the uip_buf where the IP header can be - * found. For Ethernet, this should be set to 14. For SLIP, this - * should be set to 0. - * - * \hideinitializer - */ -#ifdef UIP_CONF_LLH_LEN -#define UIP_LLH_LEN UIP_CONF_LLH_LEN -#else /* UIP_CONF_LLH_LEN */ -#define UIP_LLH_LEN 14 -#endif /* UIP_CONF_LLH_LEN */ - -/** @} */ -/*------------------------------------------------------------------------------*/ -/** - * \name CPU architecture configuration - * @{ - * - * The CPU architecture configuration is where the endianess of the - * CPU on which uIP is to be run is specified. Most CPUs today are - * little endian, and the most notable exception are the Motorolas - * which are big endian. The BYTE_ORDER macro should be changed to - * reflect the CPU architecture on which uIP is to be run. - */ - -/** - * The byte order of the CPU architecture on which uIP is to be run. - * - * This option can be either BIG_ENDIAN (Motorola byte order) or - * LITTLE_ENDIAN (Intel byte order). - * - * \hideinitializer - */ -#define UIP_BYTE_ORDER UIP_CONF_BYTE_ORDER - -/** @} */ -/*------------------------------------------------------------------------------*/ - -/** - * \name Appication specific configurations - * @{ - * - * An uIP application is implemented using a single application - * function that is called by uIP whenever a TCP/IP event occurs. The - * name of this function must be registered with uIP at compile time - * using the UIP_APPCALL definition. - * - * uIP applications can store the application state within the - * uip_conn structure by specifying the type of the application - * structure by typedef:ing the type uip_tcp_appstate_t and uip_udp_appstate_t. - * - * The file containing the definitions must be included in the - * uipopt.h file. - * - * The following example illustrates how this can look. - \code - -void httpd_appcall(void); -#define UIP_APPCALL httpd_appcall - -struct httpd_state { - u8_t state; - u16_t count; - char *dataptr; - char *script; -}; -typedef struct httpd_state uip_tcp_appstate_t - \endcode - */ - -/** - * \var #define UIP_APPCALL - * - * The name of the application function that uIP should call in - * response to TCP/IP events. - * - */ - -/** - * \var typedef uip_tcp_appstate_t - * - * The type of the application state that is to be stored in the - * uip_conn structure. This usually is typedef:ed to a struct holding - * application state information. - */ - -/** - * \var typedef uip_udp_appstate_t - * - * The type of the application state that is to be stored in the - * uip_conn structure. This usually is typedef:ed to a struct holding - * application state information. - */ -/** @} */ -/** @} */ - -#endif /* __UIPOPT_H__ */ diff --git a/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/apps/httpd/http-strings.c b/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/apps/httpd/http-strings.c deleted file mode 100644 index a3771dd20..000000000 --- a/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/apps/httpd/http-strings.c +++ /dev/null @@ -1,486 +0,0 @@ -const char http_http[8] = /* "http://" */ { 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, }; -const char http_200[5] = /* "200 " */ { 0x32, 0x30, 0x30, 0x20, }; -const char http_301[5] = /* "301 " */ { 0x33, 0x30, 0x31, 0x20, }; -const char http_302[5] = /* "302 " */ { 0x33, 0x30, 0x32, 0x20, }; -const char http_get[5] = /* "GET " */ { 0x47, 0x45, 0x54, 0x20, }; -const char http_10[9] = /* "HTTP/1.0" */ { 0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30, }; -const char http_11[9] = /* "HTTP/1.1" */ { 0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x31, }; -const char http_content_type[15] = - -/* "content-type: " */ -{ 0x63, - 0x6f, - 0x6e, - 0x74, - 0x65, - 0x6e, - 0x74, - 0x2d, - 0x74, - 0x79, - 0x70, - 0x65, - 0x3a, - 0x20, -}; -const char http_texthtml[10] = /* "text/html" */ { 0x74, 0x65, 0x78, 0x74, 0x2f, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_location[11] = /* "location: " */ { 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, }; -const char http_host[7] = /* "host: " */ { 0x68, 0x6f, 0x73, 0x74, 0x3a, 0x20, }; -const char http_crnl[3] = /* "\r\n" */ { 0xd, 0xa, }; -const char http_index_html[12] = /* "/index.html" */ { 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_404_html[10] = /* "/404.html" */ { 0x2f, 0x34, 0x30, 0x34, 0x2e, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_referer[9] = /* "Referer:" */ { 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x72, 0x3a, }; -const char http_header_200[84] = - -/* "HTTP/1.0 200 OK\r\nServer: uIP/1.0 http://www.sics.se/~adam/uip/\r\nConnection: close\r\n" */ -{ 0x48, - 0x54, - 0x54, - 0x50, - 0x2f, - 0x31, - 0x2e, - 0x30, - 0x20, - 0x32, - 0x30, - 0x30, - 0x20, - 0x4f, - 0x4b, - 0xd, - 0xa, - 0x53, - 0x65, - 0x72, - 0x76, - 0x65, - 0x72, - 0x3a, - 0x20, - 0x75, - 0x49, - 0x50, - 0x2f, - 0x31, - 0x2e, - 0x30, - 0x20, - 0x68, - 0x74, - 0x74, - 0x70, - 0x3a, - 0x2f, - 0x2f, - 0x77, - 0x77, - 0x77, - 0x2e, - 0x73, - 0x69, - 0x63, - 0x73, - 0x2e, - 0x73, - 0x65, - 0x2f, - 0x7e, - 0x61, - 0x64, - 0x61, - 0x6d, - 0x2f, - 0x75, - 0x69, - 0x70, - 0x2f, - 0xd, - 0xa, - 0x43, - 0x6f, - 0x6e, - 0x6e, - 0x65, - 0x63, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x3a, - 0x20, - 0x63, - 0x6c, - 0x6f, - 0x73, - 0x65, - 0xd, - 0xa, -}; -const char http_header_404[91] = - -/* "HTTP/1.0 404 Not found\r\nServer: uIP/1.0 http://www.sics.se/~adam/uip/\r\nConnection: close\r\n" */ -{ 0x48, - 0x54, - 0x54, - 0x50, - 0x2f, - 0x31, - 0x2e, - 0x30, - 0x20, - 0x34, - 0x30, - 0x34, - 0x20, - 0x4e, - 0x6f, - 0x74, - 0x20, - 0x66, - 0x6f, - 0x75, - 0x6e, - 0x64, - 0xd, - 0xa, - 0x53, - 0x65, - 0x72, - 0x76, - 0x65, - 0x72, - 0x3a, - 0x20, - 0x75, - 0x49, - 0x50, - 0x2f, - 0x31, - 0x2e, - 0x30, - 0x20, - 0x68, - 0x74, - 0x74, - 0x70, - 0x3a, - 0x2f, - 0x2f, - 0x77, - 0x77, - 0x77, - 0x2e, - 0x73, - 0x69, - 0x63, - 0x73, - 0x2e, - 0x73, - 0x65, - 0x2f, - 0x7e, - 0x61, - 0x64, - 0x61, - 0x6d, - 0x2f, - 0x75, - 0x69, - 0x70, - 0x2f, - 0xd, - 0xa, - 0x43, - 0x6f, - 0x6e, - 0x6e, - 0x65, - 0x63, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x3a, - 0x20, - 0x63, - 0x6c, - 0x6f, - 0x73, - 0x65, - 0xd, - 0xa, -}; -const char http_content_type_plain[29] = - -/* "Content-type: text/plain\r\n\r\n" */ -{ 0x43, - 0x6f, - 0x6e, - 0x74, - 0x65, - 0x6e, - 0x74, - 0x2d, - 0x74, - 0x79, - 0x70, - 0x65, - 0x3a, - 0x20, - 0x74, - 0x65, - 0x78, - 0x74, - 0x2f, - 0x70, - 0x6c, - 0x61, - 0x69, - 0x6e, - 0xd, - 0xa, - 0xd, - 0xa, -}; -const char http_content_type_html[28] = - -/* "Content-type: text/html\r\n\r\n" */ -{ 0x43, - 0x6f, - 0x6e, - 0x74, - 0x65, - 0x6e, - 0x74, - 0x2d, - 0x74, - 0x79, - 0x70, - 0x65, - 0x3a, - 0x20, - 0x74, - 0x65, - 0x78, - 0x74, - 0x2f, - 0x68, - 0x74, - 0x6d, - 0x6c, - 0xd, - 0xa, - 0xd, - 0xa, -}; -const char http_content_type_css[27] = - -/* "Content-type: text/css\r\n\r\n" */ -{ 0x43, - 0x6f, - 0x6e, - 0x74, - 0x65, - 0x6e, - 0x74, - 0x2d, - 0x74, - 0x79, - 0x70, - 0x65, - 0x3a, - 0x20, - 0x74, - 0x65, - 0x78, - 0x74, - 0x2f, - 0x63, - 0x73, - 0x73, - 0xd, - 0xa, - 0xd, - 0xa, -}; -const char http_content_type_text[28] = - -/* "Content-type: text/text\r\n\r\n" */ -{ 0x43, - 0x6f, - 0x6e, - 0x74, - 0x65, - 0x6e, - 0x74, - 0x2d, - 0x74, - 0x79, - 0x70, - 0x65, - 0x3a, - 0x20, - 0x74, - 0x65, - 0x78, - 0x74, - 0x2f, - 0x74, - 0x65, - 0x78, - 0x74, - 0xd, - 0xa, - 0xd, - 0xa, -}; -const char http_content_type_png[28] = - -/* "Content-type: image/png\r\n\r\n" */ -{ 0x43, - 0x6f, - 0x6e, - 0x74, - 0x65, - 0x6e, - 0x74, - 0x2d, - 0x74, - 0x79, - 0x70, - 0x65, - 0x3a, - 0x20, - 0x69, - 0x6d, - 0x61, - 0x67, - 0x65, - 0x2f, - 0x70, - 0x6e, - 0x67, - 0xd, - 0xa, - 0xd, - 0xa, -}; -const char http_content_type_gif[28] = - -/* "Content-type: image/gif\r\n\r\n" */ -{ 0x43, - 0x6f, - 0x6e, - 0x74, - 0x65, - 0x6e, - 0x74, - 0x2d, - 0x74, - 0x79, - 0x70, - 0x65, - 0x3a, - 0x20, - 0x69, - 0x6d, - 0x61, - 0x67, - 0x65, - 0x2f, - 0x67, - 0x69, - 0x66, - 0xd, - 0xa, - 0xd, - 0xa, -}; -const char http_content_type_jpg[29] = - -/* "Content-type: image/jpeg\r\n\r\n" */ -{ 0x43, - 0x6f, - 0x6e, - 0x74, - 0x65, - 0x6e, - 0x74, - 0x2d, - 0x74, - 0x79, - 0x70, - 0x65, - 0x3a, - 0x20, - 0x69, - 0x6d, - 0x61, - 0x67, - 0x65, - 0x2f, - 0x6a, - 0x70, - 0x65, - 0x67, - 0xd, - 0xa, - 0xd, - 0xa, -}; -const char http_content_type_binary[43] = - -/* "Content-type: application/octet-stream\r\n\r\n" */ -{ 0x43, - 0x6f, - 0x6e, - 0x74, - 0x65, - 0x6e, - 0x74, - 0x2d, - 0x74, - 0x79, - 0x70, - 0x65, - 0x3a, - 0x20, - 0x61, - 0x70, - 0x70, - 0x6c, - 0x69, - 0x63, - 0x61, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x2f, - 0x6f, - 0x63, - 0x74, - 0x65, - 0x74, - 0x2d, - 0x73, - 0x74, - 0x72, - 0x65, - 0x61, - 0x6d, - 0xd, - 0xa, - 0xd, - 0xa, -}; -const char http_html[6] = /* ".html" */ { 0x2e, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_shtml[7] = /* ".shtml" */ { 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_htm[5] = /* ".htm" */ { 0x2e, 0x68, 0x74, 0x6d, }; -const char http_css[5] = /* ".css" */ { 0x2e, 0x63, 0x73, 0x73, }; -const char http_png[5] = /* ".png" */ { 0x2e, 0x70, 0x6e, 0x67, }; -const char http_gif[5] = /* ".gif" */ { 0x2e, 0x67, 0x69, 0x66, }; -const char http_jpg[5] = /* ".jpg" */ { 0x2e, 0x6a, 0x70, 0x67, }; -const char http_text[5] = /* ".txt" */ { 0x2e, 0x74, 0x78, 0x74, }; -const char http_txt[5] = /* ".txt" */ { 0x2e, 0x74, 0x78, 0x74, }; diff --git a/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/apps/httpd/http-strings.h b/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/apps/httpd/http-strings.h deleted file mode 100644 index 19ad23d6e..000000000 --- a/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/apps/httpd/http-strings.h +++ /dev/null @@ -1,34 +0,0 @@ -extern const char http_http[8]; -extern const char http_200[5]; -extern const char http_301[5]; -extern const char http_302[5]; -extern const char http_get[5]; -extern const char http_10[9]; -extern const char http_11[9]; -extern const char http_content_type[15]; -extern const char http_texthtml[10]; -extern const char http_location[11]; -extern const char http_host[7]; -extern const char http_crnl[3]; -extern const char http_index_html[12]; -extern const char http_404_html[10]; -extern const char http_referer[9]; -extern const char http_header_200[84]; -extern const char http_header_404[91]; -extern const char http_content_type_plain[29]; -extern const char http_content_type_html[28]; -extern const char http_content_type_css[27]; -extern const char http_content_type_text[28]; -extern const char http_content_type_png[28]; -extern const char http_content_type_gif[28]; -extern const char http_content_type_jpg[29]; -extern const char http_content_type_binary[43]; -extern const char http_html[6]; -extern const char http_shtml[7]; -extern const char http_htm[5]; -extern const char http_css[5]; -extern const char http_png[5]; -extern const char http_gif[5]; -extern const char http_jpg[5]; -extern const char http_text[5]; -extern const char http_txt[5]; diff --git a/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/apps/httpd/httpd-cgi.c b/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/apps/httpd/httpd-cgi.c deleted file mode 100644 index 23851d3e1..000000000 --- a/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/apps/httpd/httpd-cgi.c +++ /dev/null @@ -1,169 +0,0 @@ -/** - * \addtogroup httpd - * @{ - */ - -/** - * \file - * Web server script interface - * \author - * Adam Dunkels - * - */ - -/* - * Copyright (c) 2001-2006, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: httpd-cgi.c,v 1.2 2006/06/11 21:46:37 adam Exp $ - * - */ -#include "net/uip.h" -#include "net/psock.h" -#include "httpd.h" -#include "httpd-cgi.h" -#include "httpd-fs.h" - -#include -#include - -HTTPD_CGI_CALL( file, "file-stats", file_stats ); -HTTPD_CGI_CALL( tcp, "tcp-connections", tcp_stats ); -HTTPD_CGI_CALL( net, "net-stats", net_stats ); - -static const struct httpd_cgi_call *calls[] = { &file, &tcp, &net, NULL }; - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( nullfunction ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -httpd_cgifunction httpd_cgi( char *name ) -{ - const struct httpd_cgi_call **f; - - /* Find the matching name in the table, return the function. */ - for( f = calls; *f != NULL; ++f ) - { - if( strncmp((*f)->name, name, strlen((*f)->name)) == 0 ) - { - return( *f )->function; - } - } - - return nullfunction; -} - -/*---------------------------------------------------------------------------*/ -static unsigned short generate_file_stats( void *arg ) -{ - char *f = ( char * ) arg; - return snprintf( ( char * ) uip_appdata, UIP_APPDATA_SIZE, "%5u", httpd_fs_count(f) ); -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( file_stats ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - - PSOCK_GENERATOR_SEND( &s->sout, generate_file_stats, strchr(ptr, ' ') + 1 ); - - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -static const char closed[] = /* "CLOSED",*/ { 0x43, 0x4c, 0x4f, 0x53, 0x45, 0x44, 0 }; -static const char syn_rcvd[] = /* "SYN-RCVD",*/ { 0x53, 0x59, 0x4e, 0x2d, 0x52, 0x43, 0x56, 0x44, 0 }; -static const char syn_sent[] = /* "SYN-SENT",*/ { 0x53, 0x59, 0x4e, 0x2d, 0x53, 0x45, 0x4e, 0x54, 0 }; -static const char established[] = /* "ESTABLISHED",*/ { 0x45, 0x53, 0x54, 0x41, 0x42, 0x4c, 0x49, 0x53, 0x48, 0x45, 0x44, 0 }; -static const char fin_wait_1[] = /* "FIN-WAIT-1",*/ { 0x46, 0x49, 0x4e, 0x2d, 0x57, 0x41, 0x49, 0x54, 0x2d, 0x31, 0 }; -static const char fin_wait_2[] = /* "FIN-WAIT-2",*/ { 0x46, 0x49, 0x4e, 0x2d, 0x57, 0x41, 0x49, 0x54, 0x2d, 0x32, 0 }; -static const char closing[] = /* "CLOSING",*/ { 0x43, 0x4c, 0x4f, 0x53, 0x49, 0x4e, 0x47, 0 }; -static const char time_wait[] = /* "TIME-WAIT,"*/ { 0x54, 0x49, 0x4d, 0x45, 0x2d, 0x57, 0x41, 0x49, 0x54, 0 }; -static const char last_ack[] = /* "LAST-ACK"*/ { 0x4c, 0x41, 0x53, 0x54, 0x2d, 0x41, 0x43, 0x4b, 0 }; - -static const char *states[] = { closed, syn_rcvd, syn_sent, established, fin_wait_1, fin_wait_2, closing, time_wait, last_ack }; - -static unsigned short generate_tcp_stats( void *arg ) -{ - struct uip_conn *conn; - struct httpd_state *s = ( struct httpd_state * ) arg; - - conn = &uip_conns[s->count]; - return snprintf( ( char * ) uip_appdata, UIP_APPDATA_SIZE, - "\r\n", htons(conn->lport), - htons(conn->ripaddr[0]) >> 8, htons(conn->ripaddr[0]) & 0xff, htons(conn->ripaddr[1]) >> 8, - htons(conn->ripaddr[1]) & 0xff, htons(conn->rport), states[conn->tcpstateflags & UIP_TS_MASK], conn->nrtx, conn->timer, - (uip_outstanding(conn)) ? '*' : ' ', (uip_stopped(conn)) ? '!' : ' ' ); -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( tcp_stats ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - - for( s->count = 0; s->count < UIP_CONNS; ++s->count ) - { - if( (uip_conns[s->count].tcpstateflags & UIP_TS_MASK) != UIP_CLOSED ) - { - PSOCK_GENERATOR_SEND( &s->sout, generate_tcp_stats, s ); - } - } - - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -static unsigned short generate_net_stats( void *arg ) -{ - struct httpd_state *s = ( struct httpd_state * ) arg; - return snprintf( ( char * ) uip_appdata, UIP_APPDATA_SIZE, "%5u\n", (( uip_stats_t * ) &uip_stat)[s->count] ); -} - -static PT_THREAD( net_stats ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - -#if UIP_STATISTICS - for( s->count = 0; s->count < sizeof(uip_stat) / sizeof(uip_stats_t); ++s->count ) - { - PSOCK_GENERATOR_SEND( &s->sout, generate_net_stats, s ); - } - -#endif /* UIP_STATISTICS */ - - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ - -/** @} */ diff --git a/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/apps/httpd/httpd-cgi.h b/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/apps/httpd/httpd-cgi.h deleted file mode 100644 index 99b61feec..000000000 --- a/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/apps/httpd/httpd-cgi.h +++ /dev/null @@ -1,85 +0,0 @@ -/** - * \addtogroup httpd - * @{ - */ - -/** - * \file - * Web server script interface header file - * \author - * Adam Dunkels - * - */ - -/* - * Copyright (c) 2001, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: httpd-cgi.h,v 1.2 2006/06/11 21:46:38 adam Exp $ - * - */ -#ifndef __HTTPD_CGI_H__ -#define __HTTPD_CGI_H__ - -#include "net/psock.h" -#include "httpd.h" - -typedef PT_THREAD( (*httpd_cgifunction) ( struct httpd_state *, char * ) ); - -httpd_cgifunction httpd_cgi( char *name ); - -struct httpd_cgi_call -{ - const char *name; - const httpd_cgifunction function; -}; - -/** - * \brief HTTPD CGI function declaration - * \param name The C variable name of the function - * \param str The string name of the function, used in the script file - * \param function A pointer to the function that implements it - * - * This macro is used for declaring a HTTPD CGI - * function. This function is then added to the list of - * HTTPD CGI functions with the httpd_cgi_add() function. - * - * \hideinitializer - */ -#define HTTPD_CGI_CALL( name, str, function ) \ - static PT_THREAD( function ( struct httpd_state *, char * ) ); \ - static const struct httpd_cgi_call name = \ - { \ - str, function \ - } - -void httpd_cgi_init( void ); -#endif /* __HTTPD_CGI_H__ */ - -/** @} */ diff --git a/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/apps/httpd/httpd-fs.c b/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/apps/httpd/httpd-fs.c deleted file mode 100644 index 12084ce67..000000000 --- a/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/apps/httpd/httpd-fs.c +++ /dev/null @@ -1,133 +0,0 @@ -/* - * Copyright (c) 2001, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - * $Id: httpd-fs.c,v 1.1 2006/06/07 09:13:08 adam Exp $ - */ -#include "httpd.h" -#include "httpd-fs.h" -#include "httpd-fsdata.h" - -#ifndef NULL -#define NULL 0 -#endif /* NULL */ - -#include "httpd-fsdata.c" - -#if HTTPD_FS_STATISTICS -static u16_t count[HTTPD_FS_NUMFILES]; -#endif /* HTTPD_FS_STATISTICS */ - -/*-----------------------------------------------------------------------------------*/ -static u8_t httpd_fs_strcmp( const char *str1, const char *str2 ) -{ - u8_t i; - i = 0; -loop: - if( str2[i] == 0 || str1[i] == '\r' || str1[i] == '\n' ) - { - return 0; - } - - if( str1[i] != str2[i] ) - { - return 1; - } - - ++i; - goto loop; -} - -/*-----------------------------------------------------------------------------------*/ -int httpd_fs_open( const char *name, struct httpd_fs_file *file ) -{ -#if HTTPD_FS_STATISTICS - u16_t i = 0; -#endif /* HTTPD_FS_STATISTICS */ - struct httpd_fsdata_file_noconst *f; - - for( f = ( struct httpd_fsdata_file_noconst * ) HTTPD_FS_ROOT; f != NULL; f = ( struct httpd_fsdata_file_noconst * ) f->next ) - { - if( httpd_fs_strcmp(name, f->name) == 0 ) - { - file->data = f->data; - file->len = f->len; -#if HTTPD_FS_STATISTICS - ++count[i]; -#endif /* HTTPD_FS_STATISTICS */ - return 1; - } - -#if HTTPD_FS_STATISTICS - ++i; -#endif /* HTTPD_FS_STATISTICS */ - } - - return 0; -} - -/*-----------------------------------------------------------------------------------*/ -void httpd_fs_init( void ) -{ -#if HTTPD_FS_STATISTICS - u16_t i; - for( i = 0; i < HTTPD_FS_NUMFILES; i++ ) - { - count[i] = 0; - } - -#endif /* HTTPD_FS_STATISTICS */ -} - -/*-----------------------------------------------------------------------------------*/ -#if HTTPD_FS_STATISTICS -u16_t httpd_fs_count( char *name ) -{ - struct httpd_fsdata_file_noconst *f; - u16_t i; - - i = 0; - for( f = ( struct httpd_fsdata_file_noconst * ) HTTPD_FS_ROOT; f != NULL; f = ( struct httpd_fsdata_file_noconst * ) f->next ) - { - if( httpd_fs_strcmp(name, f->name) == 0 ) - { - return count[i]; - } - - ++i; - } - - return 0; -} - -#endif /* HTTPD_FS_STATISTICS */ - -/*-----------------------------------------------------------------------------------*/ diff --git a/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/apps/httpd/httpd-fs.h b/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/apps/httpd/httpd-fs.h deleted file mode 100644 index afc6bbc56..000000000 --- a/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/apps/httpd/httpd-fs.h +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright (c) 2001, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - * $Id: httpd-fs.h,v 1.1 2006/06/07 09:13:08 adam Exp $ - */ -#ifndef __HTTPD_FS_H__ -#define __HTTPD_FS_H__ - -#define HTTPD_FS_STATISTICS 1 - -struct httpd_fs_file -{ - char *data; - int len; -}; - -/* file must be allocated by caller and will be filled in - by the function. */ -int httpd_fs_open( const char *name, struct httpd_fs_file *file ); - -#ifdef HTTPD_FS_STATISTICS -#if HTTPD_FS_STATISTICS == 1 -u16_t httpd_fs_count( char *name ); -#endif /* HTTPD_FS_STATISTICS */ -#endif /* HTTPD_FS_STATISTICS */ - -void httpd_fs_init( void ); -#endif /* __HTTPD_FS_H__ */ diff --git a/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/apps/httpd/httpd-fsdata.h b/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/apps/httpd/httpd-fsdata.h deleted file mode 100644 index 6fe210cc7..000000000 --- a/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/apps/httpd/httpd-fsdata.h +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright (c) 2001, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - * $Id: httpd-fsdata.h,v 1.1 2006/06/17 22:41:14 adamdunkels Exp $ - */ -#ifndef __HTTPD_FSDATA_H__ -#define __HTTPD_FSDATA_H__ - -struct httpd_fsdata_file { - const struct httpd_fsdata_file *next; - const char *name; - const char *data; - const int len; -#ifdef HTTPD_FS_STATISTICS -#if HTTPD_FS_STATISTICS == 1 - u16_t count; -#endif /* HTTPD_FS_STATISTICS */ -#endif /* HTTPD_FS_STATISTICS */ -}; - -struct httpd_fsdata_file_noconst { - struct httpd_fsdata_file *next; - char *name; - char *data; - int len; -#ifdef HTTPD_FS_STATISTICS -#if HTTPD_FS_STATISTICS == 1 - u16_t count; -#endif /* HTTPD_FS_STATISTICS */ -#endif /* HTTPD_FS_STATISTICS */ -}; - -#endif /* __HTTPD_FSDATA_H__ */ diff --git a/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/apps/httpd/httpd.c b/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/apps/httpd/httpd.c deleted file mode 100644 index 99564a93c..000000000 --- a/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/apps/httpd/httpd.c +++ /dev/null @@ -1,400 +0,0 @@ -/** - * \addtogroup apps - * @{ - */ - -/** - * \defgroup httpd Web server - * @{ - * The uIP web server is a very simplistic implementation of an HTTP - * server. It can serve web pages and files from a read-only ROM - * filesystem, and provides a very small scripting language. - - */ - -/** - * \file - * Web server - * \author - * Adam Dunkels - */ - -/* - * Copyright (c) 2004, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * Author: Adam Dunkels - * - * $Id: httpd.c,v 1.2 2006/06/11 21:46:38 adam Exp $ - */ -#include "net/uip.h" -#include "apps/httpd/httpd.h" -#include "apps/httpd/httpd-fs.h" -#include "apps/httpd/httpd-cgi.h" -#include "apps/httpd/http-strings.h" - -#include - -#define STATE_WAITING 0 -#define STATE_OUTPUT 1 - -#define ISO_nl 0x0a -#define ISO_space 0x20 -#define ISO_bang 0x21 -#define ISO_percent 0x25 -#define ISO_period 0x2e -#define ISO_slash 0x2f -#define ISO_colon 0x3a - -/*---------------------------------------------------------------------------*/ -static unsigned short generate_part_of_file( void *state ) -{ - struct httpd_state *s = ( struct httpd_state * ) state; - - if( s->file.len > uip_mss() ) - { - s->len = uip_mss(); - } - else - { - s->len = s->file.len; - } - - memcpy( uip_appdata, s->file.data, s->len ); - - return s->len; -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( send_file ( struct httpd_state *s ) ) -{ - PSOCK_BEGIN( &s->sout ); - - ( void ) PT_YIELD_FLAG; - - do - { - PSOCK_GENERATOR_SEND( &s->sout, generate_part_of_file, s ); - s->file.len -= s->len; - s->file.data += s->len; - } while( s->file.len > 0 ); - - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( send_part_of_file ( struct httpd_state *s ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) PT_YIELD_FLAG; - - PSOCK_SEND( &s->sout, s->file.data, s->len ); - - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -static void next_scriptstate( struct httpd_state *s ) -{ - char *p; - p = strchr( s->scriptptr, ISO_nl ) + 1; - s->scriptlen -= ( unsigned short ) ( p - s->scriptptr ); - s->scriptptr = p; -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( handle_script ( struct httpd_state *s ) ) -{ - char *ptr; - - PT_BEGIN( &s->scriptpt ); - ( void ) PT_YIELD_FLAG; - while( s->file.len > 0 ) - { - /* Check if we should start executing a script. */ - if( *s->file.data == ISO_percent && *(s->file.data + 1) == ISO_bang ) - { - s->scriptptr = s->file.data + 3; - s->scriptlen = s->file.len - 3; - if( *(s->scriptptr - 1) == ISO_colon ) - { - httpd_fs_open( s->scriptptr + 1, &s->file ); - PT_WAIT_THREAD( &s->scriptpt, send_file(s) ); - } - else - { - PT_WAIT_THREAD( &s->scriptpt, httpd_cgi(s->scriptptr) (s, s->scriptptr) ); - } - - next_scriptstate( s ); - - /* The script is over, so we reset the pointers and continue - sending the rest of the file. */ - s->file.data = s->scriptptr; - s->file.len = s->scriptlen; - } - else - { - /* See if we find the start of script marker in the block of HTML - to be sent. */ - if( s->file.len > uip_mss() ) - { - s->len = uip_mss(); - } - else - { - s->len = s->file.len; - } - - if( *s->file.data == ISO_percent ) - { - ptr = strchr( s->file.data + 1, ISO_percent ); - } - else - { - ptr = strchr( s->file.data, ISO_percent ); - } - - if( ptr != NULL && ptr != s->file.data ) - { - s->len = ( int ) ( ptr - s->file.data ); - if( s->len >= uip_mss() ) - { - s->len = uip_mss(); - } - } - - PT_WAIT_THREAD( &s->scriptpt, send_part_of_file(s) ); - s->file.data += s->len; - s->file.len -= s->len; - } - } - - PT_END( &s->scriptpt ); -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( send_headers ( struct httpd_state *s, const char *statushdr ) ) -{ - char *ptr; - - PSOCK_BEGIN( &s->sout ); - ( void ) PT_YIELD_FLAG; - PSOCK_SEND_STR( &s->sout, statushdr ); - - ptr = strrchr( s->filename, ISO_period ); - if( ptr == NULL ) - { - PSOCK_SEND_STR( &s->sout, http_content_type_binary ); - } - else if( strncmp(http_html, ptr, 5) == 0 || strncmp(http_shtml, ptr, 6) == 0 ) - { - PSOCK_SEND_STR( &s->sout, http_content_type_html ); - } - else if( strncmp(http_css, ptr, 4) == 0 ) - { - PSOCK_SEND_STR( &s->sout, http_content_type_css ); - } - else if( strncmp(http_png, ptr, 4) == 0 ) - { - PSOCK_SEND_STR( &s->sout, http_content_type_png ); - } - else if( strncmp(http_gif, ptr, 4) == 0 ) - { - PSOCK_SEND_STR( &s->sout, http_content_type_gif ); - } - else if( strncmp(http_jpg, ptr, 4) == 0 ) - { - PSOCK_SEND_STR( &s->sout, http_content_type_jpg ); - } - else - { - PSOCK_SEND_STR( &s->sout, http_content_type_plain ); - } - - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( handle_output ( struct httpd_state *s ) ) -{ - char *ptr; - - PT_BEGIN( &s->outputpt ); - ( void ) PT_YIELD_FLAG; - if( !httpd_fs_open(s->filename, &s->file) ) - { - httpd_fs_open( http_404_html, &s->file ); - strcpy( s->filename, http_404_html ); - PT_WAIT_THREAD( &s->outputpt, send_headers(s, http_header_404) ); - PT_WAIT_THREAD( &s->outputpt, send_file(s) ); - } - else - { - PT_WAIT_THREAD( &s->outputpt, send_headers(s, http_header_200) ); - ptr = strchr( s->filename, ISO_period ); - if( ptr != NULL && strncmp(ptr, http_shtml, 6) == 0 ) - { - PT_INIT( &s->scriptpt ); - PT_WAIT_THREAD( &s->outputpt, handle_script(s) ); - } - else - { - PT_WAIT_THREAD( &s->outputpt, send_file(s) ); - } - } - - PSOCK_CLOSE( &s->sout ); - PT_END( &s->outputpt ); -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( handle_input ( struct httpd_state *s ) ) -{ - PSOCK_BEGIN( &s->sin ); - ( void ) PT_YIELD_FLAG; - PSOCK_READTO( &s->sin, ISO_space ); - - if( strncmp(s->inputbuf, http_get, 4) != 0 ) - { - PSOCK_CLOSE_EXIT( &s->sin ); - } - - PSOCK_READTO( &s->sin, ISO_space ); - - if( s->inputbuf[0] != ISO_slash ) - { - PSOCK_CLOSE_EXIT( &s->sin ); - } - - if( s->inputbuf[1] == ISO_space ) - { - strncpy( s->filename, http_index_html, sizeof(s->filename) ); - } - else - { - s->inputbuf[PSOCK_DATALEN( &s->sin ) - 1] = 0; - - /* Process any form input being sent to the server. */ - #if UIP_CONF_PROCESS_HTTPD_FORMS == 1 - { - extern void vApplicationProcessFormInput( char *pcInputString ); - vApplicationProcessFormInput( s->inputbuf ); - } - #endif - - strncpy( s->filename, &s->inputbuf[0], sizeof(s->filename) ); - } - - /* httpd_log_file(uip_conn->ripaddr, s->filename);*/ - s->state = STATE_OUTPUT; - - while( 1 ) - { - PSOCK_READTO( &s->sin, ISO_nl ); - - if( strncmp(s->inputbuf, http_referer, 8) == 0 ) - { - s->inputbuf[PSOCK_DATALEN( &s->sin ) - 2] = 0; - - /* httpd_log(&s->inputbuf[9]);*/ - } - } - - PSOCK_END( &s->sin ); -} - -/*---------------------------------------------------------------------------*/ -static void handle_connection( struct httpd_state *s ) -{ - handle_input( s ); - if( s->state == STATE_OUTPUT ) - { - handle_output( s ); - } -} - -/*---------------------------------------------------------------------------*/ -void httpd_appcall( void ) -{ - struct httpd_state *s = ( struct httpd_state * ) &( uip_conn->appstate ); - - if( uip_closed() || uip_aborted() || uip_timedout() ) - { - } - else if( uip_connected() ) - { - PSOCK_INIT( &s->sin, s->inputbuf, sizeof(s->inputbuf) - 1 ); - PSOCK_INIT( &s->sout, s->inputbuf, sizeof(s->inputbuf) - 1 ); - PT_INIT( &s->outputpt ); - s->state = STATE_WAITING; - - /* timer_set(&s->timer, CLOCK_SECOND * 100);*/ - s->timer = 0; - handle_connection( s ); - } - else if( s != NULL ) - { - if( uip_poll() ) - { - ++s->timer; - if( s->timer >= 20 ) - { - uip_abort(); - } - } - else - { - s->timer = 0; - } - - handle_connection( s ); - } - else - { - uip_abort(); - } -} - -/*---------------------------------------------------------------------------*/ - -/** - * \brief Initialize the web server - * - * This function initializes the web server and should be - * called at system boot-up. - */ -void httpd_init( void ) -{ - uip_listen( HTONS(80) ); -} - -/*---------------------------------------------------------------------------*/ - -/** @} */ diff --git a/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/apps/httpd/httpd.h b/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/apps/httpd/httpd.h deleted file mode 100644 index cd2b891e2..000000000 --- a/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/apps/httpd/httpd.h +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Copyright (c) 2001-2005, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: httpd.h,v 1.2 2006/06/11 21:46:38 adam Exp $ - * - */ -#ifndef __HTTPD_H__ -#define __HTTPD_H__ - -#include "net/psock.h" -#include "httpd-fs.h" - -struct httpd_state -{ - unsigned char timer; - struct psock sin, sout; - struct pt outputpt, scriptpt; - char inputbuf[50]; - char filename[20]; - char state; - struct httpd_fs_file file; - int len; - char *scriptptr; - int scriptlen; - - unsigned short count; -}; - -void httpd_init( void ); -void httpd_appcall( void ); - -void httpd_log( char *msg ); -void httpd_log_file( u16_t *requester, char *file ); -#endif /* __HTTPD_H__ */ diff --git a/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/apps/httpd/makefsdata b/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/apps/httpd/makefsdata deleted file mode 100644 index b2109abdb..000000000 --- a/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/apps/httpd/makefsdata +++ /dev/null @@ -1,78 +0,0 @@ -#!/usr/bin/perl - -open(OUTPUT, "> httpd-fsdata.c"); - -chdir("httpd-fs"); - -opendir(DIR, "."); -@files = grep { !/^\./ && !/(CVS|~)/ } readdir(DIR); -closedir(DIR); - -foreach $file (@files) { - - if(-d $file && $file !~ /^\./) { - print "Processing directory $file\n"; - opendir(DIR, $file); - @newfiles = grep { !/^\./ && !/(CVS|~)/ } readdir(DIR); - closedir(DIR); - printf "Adding files @newfiles\n"; - @files = (@files, map { $_ = "$file/$_" } @newfiles); - next; - } -} - -foreach $file (@files) { - if(-f $file) { - - print "Adding file $file\n"; - - open(FILE, $file) || die "Could not open file $file\n"; - - $file =~ s-^-/-; - $fvar = $file; - $fvar =~ s-/-_-g; - $fvar =~ s-\.-_-g; - # for AVR, add PROGMEM here - print(OUTPUT "static const unsigned char data".$fvar."[] = {\n"); - print(OUTPUT "\t/* $file */\n\t"); - for($j = 0; $j < length($file); $j++) { - printf(OUTPUT "%#02x, ", unpack("C", substr($file, $j, 1))); - } - printf(OUTPUT "0,\n"); - - - $i = 0; - while(read(FILE, $data, 1)) { - if($i == 0) { - print(OUTPUT "\t"); - } - printf(OUTPUT "%#02x, ", unpack("C", $data)); - $i++; - if($i == 10) { - print(OUTPUT "\n"); - $i = 0; - } - } - print(OUTPUT "0};\n\n"); - close(FILE); - push(@fvars, $fvar); - push(@pfiles, $file); - } -} - -for($i = 0; $i < @fvars; $i++) { - $file = $pfiles[$i]; - $fvar = $fvars[$i]; - - if($i == 0) { - $prevfile = "NULL"; - } else { - $prevfile = "file" . $fvars[$i - 1]; - } - print(OUTPUT "const struct httpd_fsdata_file file".$fvar."[] = {{$prevfile, data$fvar, "); - print(OUTPUT "data$fvar + ". (length($file) + 1) .", "); - print(OUTPUT "sizeof(data$fvar) - ". (length($file) + 1) ."}};\n\n"); -} - -print(OUTPUT "#define HTTPD_FS_ROOT file$fvars[$i - 1]\n\n"); -print(OUTPUT "#define HTTPD_FS_NUMFILES $i\n"); diff --git a/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/net/clock-arch.h b/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/net/clock-arch.h deleted file mode 100644 index 293e0262e..000000000 --- a/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/net/clock-arch.h +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright (c) 2006, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: clock-arch.h,v 1.2 2006/06/12 08:00:31 adam Exp $ - */ - -#ifndef __CLOCK_ARCH_H__ -#define __CLOCK_ARCH_H__ - -#include "FreeRTOS.h" - -typedef TickType_t clock_time_t; -#define CLOCK_CONF_SECOND configTICK_RATE_HZ - -#endif /* __CLOCK_ARCH_H__ */ diff --git a/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/net/lc-switch.h b/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/net/lc-switch.h deleted file mode 100644 index 17c881161..000000000 --- a/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/net/lc-switch.h +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Copyright (c) 2004-2005, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * Author: Adam Dunkels - * - * $Id: lc-switch.h,v 1.2 2006/06/12 08:00:30 adam Exp $ - */ - -/** - * \addtogroup lc - * @{ - */ - -/** - * \file - * Implementation of local continuations based on switch() statment - * \author Adam Dunkels - * - * This implementation of local continuations uses the C switch() - * statement to resume execution of a function somewhere inside the - * function's body. The implementation is based on the fact that - * switch() statements are able to jump directly into the bodies of - * control structures such as if() or while() statmenets. - * - * This implementation borrows heavily from Simon Tatham's coroutines - * implementation in C: - * http://www.chiark.greenend.org.uk/~sgtatham/coroutines.html - */ - -#ifndef __LC_SWITCH_H__ -#define __LC_SWTICH_H__ - -/* WARNING! lc implementation using switch() does not work if an - LC_SET() is done within another switch() statement! */ - -/** \hideinitializer */ -typedef unsigned short lc_t; - -#define LC_INIT(s) s = 0; - -#define LC_RESUME(s) switch(s) { case 0: - -#define LC_SET(s) s = __LINE__; case __LINE__: - -#define LC_END(s) } - -#endif /* __LC_SWITCH_H__ */ - -/** @} */ diff --git a/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/net/lc.h b/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/net/lc.h deleted file mode 100644 index 3ad83cd0a..000000000 --- a/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/net/lc.h +++ /dev/null @@ -1,131 +0,0 @@ -/* - * Copyright (c) 2004-2005, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * Author: Adam Dunkels - * - * $Id: lc.h,v 1.2 2006/06/12 08:00:30 adam Exp $ - */ - -/** - * \addtogroup pt - * @{ - */ - -/** - * \defgroup lc Local continuations - * @{ - * - * Local continuations form the basis for implementing protothreads. A - * local continuation can be set in a specific function to - * capture the state of the function. After a local continuation has - * been set can be resumed in order to restore the state of the - * function at the point where the local continuation was set. - * - * - */ - -/** - * \file lc.h - * Local continuations - * \author - * Adam Dunkels - * - */ - -#ifdef DOXYGEN -/** - * Initialize a local continuation. - * - * This operation initializes the local continuation, thereby - * unsetting any previously set continuation state. - * - * \hideinitializer - */ -#define LC_INIT(lc) - -/** - * Set a local continuation. - * - * The set operation saves the state of the function at the point - * where the operation is executed. As far as the set operation is - * concerned, the state of the function does not include the - * call-stack or local (automatic) variables, but only the program - * counter and such CPU registers that needs to be saved. - * - * \hideinitializer - */ -#define LC_SET(lc) - -/** - * Resume a local continuation. - * - * The resume operation resumes a previously set local continuation, thus - * restoring the state in which the function was when the local - * continuation was set. If the local continuation has not been - * previously set, the resume operation does nothing. - * - * \hideinitializer - */ -#define LC_RESUME(lc) - -/** - * Mark the end of local continuation usage. - * - * The end operation signifies that local continuations should not be - * used any more in the function. This operation is not needed for - * most implementations of local continuation, but is required by a - * few implementations. - * - * \hideinitializer - */ -#define LC_END(lc) - -/** - * \var typedef lc_t; - * - * The local continuation type. - * - * \hideinitializer - */ -#endif /* DOXYGEN */ - -#ifndef __LC_H__ -#define __LC_H__ - -#ifdef LC_CONF_INCLUDE -#include LC_CONF_INCLUDE -#else -#include "lc-switch.h" -#endif /* LC_CONF_INCLUDE */ - -#endif /* __LC_H__ */ - -/** @} */ -/** @} */ diff --git a/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/net/pack_struct_end.h b/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/net/pack_struct_end.h deleted file mode 100644 index a23febe4d..000000000 --- a/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/net/pack_struct_end.h +++ /dev/null @@ -1,33 +0,0 @@ -#ifdef __GNUC__ - __attribute__( (packed) ); -#endif - -#ifdef _SH - #ifdef __RENESAS__ - ; - #pragma unpack - #endif -#endif - -#ifdef __RX - #ifdef __RENESAS__ - ; - /* Nothing to do. */ - #endif -#endif - - -#ifdef __ICCRX__ - ; - #pragma pack() -#endif - -#ifdef __ICCARM__ - ; - #pragma pack() -#endif - - -#ifdef __CC_ARM - ; -#endif diff --git a/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/net/pack_struct_start.h b/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/net/pack_struct_start.h deleted file mode 100644 index 49a4dc9f6..000000000 --- a/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/net/pack_struct_start.h +++ /dev/null @@ -1,34 +0,0 @@ -#ifdef __GNUC__ - -/* Nothing to do here. */ -; -#endif - -/* Used by SH2A port. */ -#ifdef _SH - #ifdef __RENESAS__ - #pragma pack 1 - #endif -#endif - - -#ifdef __RX - #ifdef __RENESAS__ - /* Nothing to do. */ - #endif -#endif - - -#ifdef __ICCRX__ - #pragma pack(1) -#endif - - -#ifdef __ICCARM__ - #pragma pack(1) -#endif - -#ifdef __CC_ARM - __packed -#endif - diff --git a/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/net/psock.h b/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/net/psock.h deleted file mode 100644 index 8d4125878..000000000 --- a/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/net/psock.h +++ /dev/null @@ -1,380 +0,0 @@ -/* - * Copyright (c) 2004, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * Author: Adam Dunkels - * - * $Id: psock.h,v 1.3 2006/06/12 08:00:30 adam Exp $ - */ - -/** - * \defgroup psock Protosockets library - * @{ - * - * The protosocket library provides an interface to the uIP stack that is - * similar to the traditional BSD socket interface. Unlike programs - * written for the ordinary uIP event-driven interface, programs - * written with the protosocket library are executed in a sequential - * fashion and does not have to be implemented as explicit state - * machines. - * - * Protosockets only work with TCP connections. - * - * The protosocket library uses \ref pt protothreads to provide - * sequential control flow. This makes the protosockets lightweight in - * terms of memory, but also means that protosockets inherits the - * functional limitations of protothreads. Each protosocket lives only - * within a single function. Automatic variables (stack variables) are - * not retained across a protosocket library function call. - * - * \note Because the protosocket library uses protothreads, local - * variables will not always be saved across a call to a protosocket - * library function. It is therefore advised that local variables are - * used with extreme care. - * - * The protosocket library provides functions for sending data without - * having to deal with retransmissions and acknowledgements, as well - * as functions for reading data without having to deal with data - * being split across more than one TCP segment. - * - * Because each protosocket runs as a protothread, the protosocket has to be - * started with a call to PSOCK_BEGIN() at the start of the function - * in which the protosocket is used. Similarly, the protosocket protothread can - * be terminated by a call to PSOCK_EXIT(). - * - */ - -/** - * \file - * Protosocket library header file - * \author - * Adam Dunkels - * - */ - -#ifndef __PSOCK_H__ -#define __PSOCK_H__ - -#include "uipopt.h" -#include "pt.h" - - /* - * The structure that holds the state of a buffer. - * - * This structure holds the state of a uIP buffer. The structure has - * no user-visible elements, but is used through the functions - * provided by the library. - * - */ -struct psock_buf { - u8_t *ptr; - unsigned short left; -}; - -/** - * The representation of a protosocket. - * - * The protosocket structrure is an opaque structure with no user-visible - * elements. - */ -struct psock { - struct pt pt, psockpt; /* Protothreads - one that's using the psock - functions, and one that runs inside the - psock functions. */ - const u8_t *sendptr; /* Pointer to the next data to be sent. */ - u8_t *readptr; /* Pointer to the next data to be read. */ - - char *bufptr; /* Pointer to the buffer used for buffering - incoming data. */ - - u16_t sendlen; /* The number of bytes left to be sent. */ - u16_t readlen; /* The number of bytes left to be read. */ - - struct psock_buf buf; /* The structure holding the state of the - input buffer. */ - unsigned int bufsize; /* The size of the input buffer. */ - - unsigned char state; /* The state of the protosocket. */ -}; - -void psock_init(struct psock *psock, char *buffer, unsigned int buffersize); -/** - * Initialize a protosocket. - * - * This macro initializes a protosocket and must be called before the - * protosocket is used. The initialization also specifies the input buffer - * for the protosocket. - * - * \param psock (struct psock *) A pointer to the protosocket to be - * initialized - * - * \param buffer (char *) A pointer to the input buffer for the - * protosocket. - * - * \param buffersize (unsigned int) The size of the input buffer. - * - * \hideinitializer - */ -#define PSOCK_INIT(psock, buffer, buffersize) \ - psock_init(psock, buffer, buffersize) - -/** - * Start the protosocket protothread in a function. - * - * This macro starts the protothread associated with the protosocket and - * must come before other protosocket calls in the function it is used. - * - * \param psock (struct psock *) A pointer to the protosocket to be - * started. - * - * \hideinitializer - */ -#define PSOCK_BEGIN(psock) PT_BEGIN(&((psock)->pt)) - -PT_THREAD(psock_send(struct psock *psock, const char *buf, unsigned int len)); -/** - * Send data. - * - * This macro sends data over a protosocket. The protosocket protothread blocks - * until all data has been sent and is known to have been received by - * the remote end of the TCP connection. - * - * \param psock (struct psock *) A pointer to the protosocket over which - * data is to be sent. - * - * \param data (char *) A pointer to the data that is to be sent. - * - * \param datalen (unsigned int) The length of the data that is to be - * sent. - * - * \hideinitializer - */ -#define PSOCK_SEND(psock, data, datalen) \ - PT_WAIT_THREAD(&((psock)->pt), psock_send(psock, data, datalen)) - -/** - * \brief Send a null-terminated string. - * \param psock Pointer to the protosocket. - * \param str The string to be sent. - * - * This function sends a null-terminated string over the - * protosocket. - * - * \hideinitializer - */ -#define PSOCK_SEND_STR(psock, str) \ - PT_WAIT_THREAD(&((psock)->pt), psock_send(psock, str, strlen(str))) - -PT_THREAD(psock_generator_send(struct psock *psock, - unsigned short (*f)(void *), void *arg)); - -/** - * \brief Generate data with a function and send it - * \param psock Pointer to the protosocket. - * \param generator Pointer to the generator function - * \param arg Argument to the generator function - * - * This function generates data and sends it over the - * protosocket. This can be used to dynamically generate - * data for a transmission, instead of generating the data - * in a buffer beforehand. This function reduces the need for - * buffer memory. The generator function is implemented by - * the application, and a pointer to the function is given - * as an argument with the call to PSOCK_GENERATOR_SEND(). - * - * The generator function should place the generated data - * directly in the uip_appdata buffer, and return the - * length of the generated data. The generator function is - * called by the protosocket layer when the data first is - * sent, and once for every retransmission that is needed. - * - * \hideinitializer - */ -#define PSOCK_GENERATOR_SEND(psock, generator, arg) \ - PT_WAIT_THREAD(&((psock)->pt), \ - psock_generator_send(psock, generator, arg)) - - -/** - * Close a protosocket. - * - * This macro closes a protosocket and can only be called from within the - * protothread in which the protosocket lives. - * - * \param psock (struct psock *) A pointer to the protosocket that is to - * be closed. - * - * \hideinitializer - */ -#define PSOCK_CLOSE(psock) uip_close() - -PT_THREAD(psock_readbuf(struct psock *psock)); -/** - * Read data until the buffer is full. - * - * This macro will block waiting for data and read the data into the - * input buffer specified with the call to PSOCK_INIT(). Data is read - * until the buffer is full.. - * - * \param psock (struct psock *) A pointer to the protosocket from which - * data should be read. - * - * \hideinitializer - */ -#define PSOCK_READBUF(psock) \ - PT_WAIT_THREAD(&((psock)->pt), psock_readbuf(psock)) - -PT_THREAD(psock_readto(struct psock *psock, unsigned char c)); -/** - * Read data up to a specified character. - * - * This macro will block waiting for data and read the data into the - * input buffer specified with the call to PSOCK_INIT(). Data is only - * read until the specifieed character appears in the data stream. - * - * \param psock (struct psock *) A pointer to the protosocket from which - * data should be read. - * - * \param c (char) The character at which to stop reading. - * - * \hideinitializer - */ -#define PSOCK_READTO(psock, c) \ - PT_WAIT_THREAD(&((psock)->pt), psock_readto(psock, c)) - -/** - * The length of the data that was previously read. - * - * This macro returns the length of the data that was previously read - * using PSOCK_READTO() or PSOCK_READ(). - * - * \param psock (struct psock *) A pointer to the protosocket holding the data. - * - * \hideinitializer - */ -#define PSOCK_DATALEN(psock) psock_datalen(psock) - -u16_t psock_datalen(struct psock *psock); - -/** - * Exit the protosocket's protothread. - * - * This macro terminates the protothread of the protosocket and should - * almost always be used in conjunction with PSOCK_CLOSE(). - * - * \sa PSOCK_CLOSE_EXIT() - * - * \param psock (struct psock *) A pointer to the protosocket. - * - * \hideinitializer - */ -#define PSOCK_EXIT(psock) PT_EXIT(&((psock)->pt)) - -/** - * Close a protosocket and exit the protosocket's protothread. - * - * This macro closes a protosocket and exits the protosocket's protothread. - * - * \param psock (struct psock *) A pointer to the protosocket. - * - * \hideinitializer - */ -#define PSOCK_CLOSE_EXIT(psock) \ - do { \ - PSOCK_CLOSE(psock); \ - PSOCK_EXIT(psock); \ - } while(0) - -/** - * Declare the end of a protosocket's protothread. - * - * This macro is used for declaring that the protosocket's protothread - * ends. It must always be used together with a matching PSOCK_BEGIN() - * macro. - * - * \param psock (struct psock *) A pointer to the protosocket. - * - * \hideinitializer - */ -#define PSOCK_END(psock) PT_END(&((psock)->pt)) - -char psock_newdata(struct psock *s); - -/** - * Check if new data has arrived on a protosocket. - * - * This macro is used in conjunction with the PSOCK_WAIT_UNTIL() - * macro to check if data has arrived on a protosocket. - * - * \param psock (struct psock *) A pointer to the protosocket. - * - * \hideinitializer - */ -#define PSOCK_NEWDATA(psock) psock_newdata(psock) - -/** - * Wait until a condition is true. - * - * This macro blocks the protothread until the specified condition is - * true. The macro PSOCK_NEWDATA() can be used to check if new data - * arrives when the protosocket is waiting. - * - * Typically, this macro is used as follows: - * - \code - PT_THREAD(thread(struct psock *s, struct timer *t)) - { - PSOCK_BEGIN(s); - - PSOCK_WAIT_UNTIL(s, PSOCK_NEWADATA(s) || timer_expired(t)); - - if(PSOCK_NEWDATA(s)) { - PSOCK_READTO(s, '\n'); - } else { - handle_timed_out(s); - } - - PSOCK_END(s); - } - \endcode - * - * \param psock (struct psock *) A pointer to the protosocket. - * \param condition The condition to wait for. - * - * \hideinitializer - */ -#define PSOCK_WAIT_UNTIL(psock, condition) \ - PT_WAIT_UNTIL(&((psock)->pt), (condition)); - -#define PSOCK_WAIT_THREAD(psock, condition) \ - PT_WAIT_THREAD(&((psock)->pt), (condition)) - -#endif /* __PSOCK_H__ */ - -/** @} */ diff --git a/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/net/pt.h b/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/net/pt.h deleted file mode 100644 index 00ddd4429..000000000 --- a/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/net/pt.h +++ /dev/null @@ -1,323 +0,0 @@ -/* - * Copyright (c) 2004-2005, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * Author: Adam Dunkels - * - * $Id: pt.h,v 1.2 2006/06/12 08:00:30 adam Exp $ - */ - -/** - * \addtogroup pt - * @{ - */ - -/** - * \file - * Protothreads implementation. - * \author - * Adam Dunkels - * - */ - -#ifndef __PT_H__ -#define __PT_H__ - -#include "lc.h" - -struct pt { - lc_t lc; -}; - -#define PT_WAITING 0 -#define PT_EXITED 1 -#define PT_ENDED 2 -#define PT_YIELDED 3 - -/** - * \name Initialization - * @{ - */ - -/** - * Initialize a protothread. - * - * Initializes a protothread. Initialization must be done prior to - * starting to execute the protothread. - * - * \param pt A pointer to the protothread control structure. - * - * \sa PT_SPAWN() - * - * \hideinitializer - */ -#define PT_INIT(pt) LC_INIT((pt)->lc) - -/** @} */ - -/** - * \name Declaration and definition - * @{ - */ - -/** - * Declaration of a protothread. - * - * This macro is used to declare a protothread. All protothreads must - * be declared with this macro. - * - * \param name_args The name and arguments of the C function - * implementing the protothread. - * - * \hideinitializer - */ -#define PT_THREAD(name_args) char name_args - -/** - * Declare the start of a protothread inside the C function - * implementing the protothread. - * - * This macro is used to declare the starting point of a - * protothread. It should be placed at the start of the function in - * which the protothread runs. All C statements above the PT_BEGIN() - * invokation will be executed each time the protothread is scheduled. - * - * \param pt A pointer to the protothread control structure. - * - * \hideinitializer - */ -#define PT_BEGIN(pt) { char PT_YIELD_FLAG = 1; LC_RESUME((pt)->lc) - -/** - * Declare the end of a protothread. - * - * This macro is used for declaring that a protothread ends. It must - * always be used together with a matching PT_BEGIN() macro. - * - * \param pt A pointer to the protothread control structure. - * - * \hideinitializer - */ -#define PT_END(pt) LC_END((pt)->lc); PT_YIELD_FLAG = 0; \ - PT_INIT(pt); return PT_ENDED; } - -/** @} */ - -/** - * \name Blocked wait - * @{ - */ - -/** - * Block and wait until condition is true. - * - * This macro blocks the protothread until the specified condition is - * true. - * - * \param pt A pointer to the protothread control structure. - * \param condition The condition. - * - * \hideinitializer - */ -#define PT_WAIT_UNTIL(pt, condition) \ - do { \ - LC_SET((pt)->lc); \ - if(!(condition)) { \ - return PT_WAITING; \ - } \ - } while(0) - -/** - * Block and wait while condition is true. - * - * This function blocks and waits while condition is true. See - * PT_WAIT_UNTIL(). - * - * \param pt A pointer to the protothread control structure. - * \param cond The condition. - * - * \hideinitializer - */ -#define PT_WAIT_WHILE(pt, cond) PT_WAIT_UNTIL((pt), !(cond)) - -/** @} */ - -/** - * \name Hierarchical protothreads - * @{ - */ - -/** - * Block and wait until a child protothread completes. - * - * This macro schedules a child protothread. The current protothread - * will block until the child protothread completes. - * - * \note The child protothread must be manually initialized with the - * PT_INIT() function before this function is used. - * - * \param pt A pointer to the protothread control structure. - * \param thread The child protothread with arguments - * - * \sa PT_SPAWN() - * - * \hideinitializer - */ -#define PT_WAIT_THREAD(pt, thread) PT_WAIT_WHILE((pt), PT_SCHEDULE(thread)) - -/** - * Spawn a child protothread and wait until it exits. - * - * This macro spawns a child protothread and waits until it exits. The - * macro can only be used within a protothread. - * - * \param pt A pointer to the protothread control structure. - * \param child A pointer to the child protothread's control structure. - * \param thread The child protothread with arguments - * - * \hideinitializer - */ -#define PT_SPAWN(pt, child, thread) \ - do { \ - PT_INIT((child)); \ - PT_WAIT_THREAD((pt), (thread)); \ - } while(0) - -/** @} */ - -/** - * \name Exiting and restarting - * @{ - */ - -/** - * Restart the protothread. - * - * This macro will block and cause the running protothread to restart - * its execution at the place of the PT_BEGIN() call. - * - * \param pt A pointer to the protothread control structure. - * - * \hideinitializer - */ -#define PT_RESTART(pt) \ - do { \ - PT_INIT(pt); \ - return PT_WAITING; \ - } while(0) - -/** - * Exit the protothread. - * - * This macro causes the protothread to exit. If the protothread was - * spawned by another protothread, the parent protothread will become - * unblocked and can continue to run. - * - * \param pt A pointer to the protothread control structure. - * - * \hideinitializer - */ -#define PT_EXIT(pt) \ - do { \ - PT_INIT(pt); \ - return PT_EXITED; \ - } while(0) - -/** @} */ - -/** - * \name Calling a protothread - * @{ - */ - -/** - * Schedule a protothread. - * - * This function shedules a protothread. The return value of the - * function is non-zero if the protothread is running or zero if the - * protothread has exited. - * - * \param f The call to the C function implementing the protothread to - * be scheduled - * - * \hideinitializer - */ -#define PT_SCHEDULE(f) ((f) == PT_WAITING) - -/** @} */ - -/** - * \name Yielding from a protothread - * @{ - */ - -/** - * Yield from the current protothread. - * - * This function will yield the protothread, thereby allowing other - * processing to take place in the system. - * - * \param pt A pointer to the protothread control structure. - * - * \hideinitializer - */ -#define PT_YIELD(pt) \ - do { \ - PT_YIELD_FLAG = 0; \ - LC_SET((pt)->lc); \ - if(PT_YIELD_FLAG == 0) { \ - return PT_YIELDED; \ - } \ - } while(0) - -/** - * \brief Yield from the protothread until a condition occurs. - * \param pt A pointer to the protothread control structure. - * \param cond The condition. - * - * This function will yield the protothread, until the - * specified condition evaluates to true. - * - * - * \hideinitializer - */ -#define PT_YIELD_UNTIL(pt, cond) \ - do { \ - PT_YIELD_FLAG = 0; \ - LC_SET((pt)->lc); \ - if((PT_YIELD_FLAG == 0) || !(cond)) { \ - return PT_YIELDED; \ - } \ - } while(0) - -/** @} */ - -#endif /* __PT_H__ */ - -/** @} */ diff --git a/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/net/uip.h b/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/net/uip.h deleted file mode 100644 index 3a0ed1989..000000000 --- a/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/net/uip.h +++ /dev/null @@ -1,2184 +0,0 @@ - - /** - * \addtogroup uip - * @{ - */ - -/** - * \file - * Header file for the uIP TCP/IP stack. - * \author Adam Dunkels - * \author Julien Abeille (IPv6 related code) - * \author Mathilde Durvy (IPv6 related code) - * - * The uIP TCP/IP stack header file contains definitions for a number - * of C macros that are used by uIP programs as well as internal uIP - * structures, TCP/IP header structures and function declarations. - * - */ - -/* - * Copyright (c) 2001-2003, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: uip.h,v 1.24 2009/04/06 13:18:50 nvt-se Exp $ - * - */ -#ifndef __UIP_H__ -#define __UIP_H__ - -#include "net/uipopt.h" -#include "uip-conf.h" - -/** - * Representation of an IP address. - * - */ -#if UIP_CONF_IPV6 != 0 - typedef union uip_ip6addr_t - { - u8_t u8[16]; /* Initializer, must come first!!! */ - u16_t u16[8]; - } uip_ip6addr_t; - - typedef uip_ip6addr_t uip_ipaddr_t; -#else /* UIP_CONF_IPV6 */ - #ifdef __CC_ARM - __packed /* The ARM compiler insists on this being packed, but with other compilers packing it generates a warning as it will be packed anyway. */ - #endif - - typedef union uip_ip4addr_t - { - u8_t u8[4]; /* Initializer, must come first!!! */ - u16_t u16[2]; - } uip_ip4addr_t; - typedef uip_ip4addr_t uip_ipaddr_t; -#endif /* UIP_CONF_IPV6 */ - -/*---------------------------------------------------------------------------*/ - -/** \brief 16 bit 802.15.4 address */ -struct uip_802154_shortaddr -{ - u8_t addr[2]; -}; - -/** \brief 64 bit 802.15.4 address */ -struct uip_802154_longaddr -{ - u8_t addr[8]; -}; - -/** \brief 802.11 address */ -struct uip_80211_addr -{ - u8_t addr[6]; -}; - -/** \brief 802.3 address */ -#include "net/pack_struct_start.h" -struct uip_eth_addr -{ - u8_t addr[6]; -} -#include "net/pack_struct_end.h" - -#ifdef UIP_CONF_LL_802154 - - /** \brief 802.15.4 address */ - typedef struct uip_802154_longaddr uip_lladdr_t; - #define UIP_802154_SHORTADDR_LEN 2 - #define UIP_802154_LONGADDR_LEN 8 - #define UIP_LLADDR_LEN UIP_802154_LONGADDR_LEN -#else /*UIP_CONF_LL_802154*/ - #ifdef UIP_CONF_LL_80211 - /** \brief 802.11 address */ - typedef struct uip_80211_addr uip_lladdr_t; - #define UIP_LLADDR_LEN 6 - #else /*UIP_CONF_LL_80211*/ - - /** \brief Ethernet address */ - typedef struct uip_eth_addr uip_lladdr_t; - - #define UIP_LLADDR_LEN 6 - #endif /*UIP_CONF_LL_80211*/ -#endif /*UIP_CONF_LL_802154*/ - -//_RB_#include "net/tcpip.h" - -/*---------------------------------------------------------------------------*/ - -/* First, the functions that should be called from the - * system. Initialization, the periodic timer, and incoming packets are - * handled by the following three functions. - */ - -/** - * \defgroup uipconffunc uIP configuration functions - * @{ - * - * The uIP configuration functions are used for setting run-time - * parameters in uIP such as IP addresses. - */ - -/** - * Set the IP address of this host. - * - * The IP address is represented as a 4-byte array where the first - * octet of the IP address is put in the first member of the 4-byte - * array. - * - * Example: - \code - - uip_ipaddr_t addr; - - uip_ipaddr(&addr, 192,168,1,2); - uip_sethostaddr(&addr); - - \endcode - * \param addr A pointer to an IP address of type uip_ipaddr_t; - * - * \sa uip_ipaddr() - * - * \hideinitializer - */ -#define uip_sethostaddr( addr ) uip_ipaddr_copy( &uip_hostaddr, (addr) ) - -/** - * Get the IP address of this host. - * - * The IP address is represented as a 4-byte array where the first - * octet of the IP address is put in the first member of the 4-byte - * array. - * - * Example: - \code - uip_ipaddr_t hostaddr; - - uip_gethostaddr(&hostaddr); - \endcode - * \param addr A pointer to a uip_ipaddr_t variable that will be - * filled in with the currently configured IP address. - * - * \hideinitializer - */ -#define uip_gethostaddr( addr ) uip_ipaddr_copy( (addr), &uip_hostaddr ) - -/** - * Set the default router's IP address. - * - * \param addr A pointer to a uip_ipaddr_t variable containing the IP - * address of the default router. - * - * \sa uip_ipaddr() - * - * \hideinitializer - */ -#define uip_setdraddr( addr ) uip_ipaddr_copy( &uip_draddr, (addr) ) - -/** - * Set the netmask. - * - * \param addr A pointer to a uip_ipaddr_t variable containing the IP - * address of the netmask. - * - * \sa uip_ipaddr() - * - * \hideinitializer - */ -#define uip_setnetmask( addr ) uip_ipaddr_copy( &uip_netmask, (addr) ) - -/** - * Get the default router's IP address. - * - * \param addr A pointer to a uip_ipaddr_t variable that will be - * filled in with the IP address of the default router. - * - * \hideinitializer - */ -#define uip_getdraddr( addr ) uip_ipaddr_copy( (addr), &uip_draddr ) - -/** - * Get the netmask. - * - * \param addr A pointer to a uip_ipaddr_t variable that will be - * filled in with the value of the netmask. - * - * \hideinitializer - */ -#define uip_getnetmask( addr ) uip_ipaddr_copy( (addr), &uip_netmask ) - -/** @} */ - -/** - * \defgroup uipinit uIP initialization functions - * @{ - * - * The uIP initialization functions are used for booting uIP. - */ - -/** - * uIP initialization function. - * - * This function should be called at boot up to initilize the uIP - * TCP/IP stack. - */ -void uip_init( void ); - -/** - * uIP initialization function. - * - * This function may be used at boot time to set the initial ip_id. - */ -void uip_setipid( u16_t id ); - -/** @} */ - -/** - * \defgroup uipdevfunc uIP device driver functions - * @{ - * - * These functions are used by a network device driver for interacting - * with uIP. - */ - -/** - * Process an incoming packet. - * - * This function should be called when the device driver has received - * a packet from the network. The packet from the device driver must - * be present in the uip_buf buffer, and the length of the packet - * should be placed in the uip_len variable. - * - * When the function returns, there may be an outbound packet placed - * in the uip_buf packet buffer. If so, the uip_len variable is set to - * the length of the packet. If no packet is to be sent out, the - * uip_len variable is set to 0. - * - * The usual way of calling the function is presented by the source - * code below. - \code - uip_len = devicedriver_poll(); - if(uip_len > 0) { - uip_input(); - if(uip_len > 0) { - devicedriver_send(); - } - } - \endcode - * - * \note If you are writing a uIP device driver that needs ARP - * (Address Resolution Protocol), e.g., when running uIP over - * Ethernet, you will need to call the uIP ARP code before calling - * this function: - \code - #define BUF ((struct uip_eth_hdr *)&uip_buf[0]) - uip_len = ethernet_devicedrver_poll(); - if(uip_len > 0) { - if(BUF->type == HTONS(UIP_ETHTYPE_IP)) { - uip_arp_ipin(); - uip_input(); - if(uip_len > 0) { - uip_arp_out(); - ethernet_devicedriver_send(); - } - } else if(BUF->type == HTONS(UIP_ETHTYPE_ARP)) { - uip_arp_arpin(); - if(uip_len > 0) { - ethernet_devicedriver_send(); - } - } - \endcode - * - * \hideinitializer - */ -#define uip_input() uip_process( UIP_DATA ) - -/** - * Periodic processing for a connection identified by its number. - * - * This function does the necessary periodic processing (timers, - * polling) for a uIP TCP conneciton, and should be called when the - * periodic uIP timer goes off. It should be called for every - * connection, regardless of whether they are open of closed. - * - * When the function returns, it may have an outbound packet waiting - * for service in the uIP packet buffer, and if so the uip_len - * variable is set to a value larger than zero. The device driver - * should be called to send out the packet. - * - * The usual way of calling the function is through a for() loop like - * this: - \code - for(i = 0; i < UIP_CONNS; ++i) { - uip_periodic(i); - if(uip_len > 0) { - devicedriver_send(); - } - } - \endcode - * - * \note If you are writing a uIP device driver that needs ARP - * (Address Resolution Protocol), e.g., when running uIP over - * Ethernet, you will need to call the uip_arp_out() function before - * calling the device driver: - \code - for(i = 0; i < UIP_CONNS; ++i) { - uip_periodic(i); - if(uip_len > 0) { - uip_arp_out(); - ethernet_devicedriver_send(); - } - } - \endcode - * - * \param conn The number of the connection which is to be periodically polled. - * - * \hideinitializer - */ -#ifdef UIP_TCP -#define uip_periodic( conn ) \ - do \ - { \ - uip_conn = &uip_conns[conn]; \ - uip_process( UIP_TIMER ); \ - } while( 0 ) - -/** - * - * - */ -#define uip_conn_active( conn ) ( uip_conns[conn].tcpstateflags != UIP_CLOSED ) - -/** - * Perform periodic processing for a connection identified by a pointer - * to its structure. - * - * Same as uip_periodic() but takes a pointer to the actual uip_conn - * struct instead of an integer as its argument. This function can be - * used to force periodic processing of a specific connection. - * - * \param conn A pointer to the uip_conn struct for the connection to - * be processed. - * - * \hideinitializer - */ -#define uip_periodic_conn( conn ) \ - do \ - { \ - uip_conn = conn; \ - uip_process( UIP_TIMER ); \ - } while( 0 ) - -/** - * Request that a particular connection should be polled. - * - * Similar to uip_periodic_conn() but does not perform any timer - * processing. The application is polled for new data. - * - * \param conn A pointer to the uip_conn struct for the connection to - * be processed. - * - * \hideinitializer - */ -#define uip_poll_conn( conn ) \ - do \ - { \ - uip_conn = conn; \ - uip_process( UIP_POLL_REQUEST ); \ - } while( 0 ) -#endif /* UIP_TCP */ - -#ifdef UIP_UDP - -/** - * Periodic processing for a UDP connection identified by its number. - * - * This function is essentially the same as uip_periodic(), but for - * UDP connections. It is called in a similar fashion as the - * uip_periodic() function: - \code - for(i = 0; i < UIP_UDP_CONNS; i++) { - uip_udp_periodic(i); - if(uip_len > 0) { - devicedriver_send(); - } - } - \endcode - * - * \note As for the uip_periodic() function, special care has to be - * taken when using uIP together with ARP and Ethernet: - \code - for(i = 0; i < UIP_UDP_CONNS; i++) { - uip_udp_periodic(i); - if(uip_len > 0) { - uip_arp_out(); - ethernet_devicedriver_send(); - } - } - \endcode - * - * \param conn The number of the UDP connection to be processed. - * - * \hideinitializer - */ -#define uip_udp_periodic( conn ) \ - do \ - { \ - uip_udp_conn = &uip_udp_conns[conn]; \ - uip_process( UIP_UDP_TIMER ); \ - } while( 0 ) - -/** - * Periodic processing for a UDP connection identified by a pointer to - * its structure. - * - * Same as uip_udp_periodic() but takes a pointer to the actual - * uip_conn struct instead of an integer as its argument. This - * function can be used to force periodic processing of a specific - * connection. - * - * \param conn A pointer to the uip_udp_conn struct for the connection - * to be processed. - * - * \hideinitializer - */ -#define uip_udp_periodic_conn( conn ) \ - do \ - { \ - uip_udp_conn = conn; \ - uip_process( UIP_UDP_TIMER ); \ - } while( 0 ) -#endif /* UIP_UDP */ - - /** \brief Abandon the reassembly of the current packet */ - void uip_reass_over( void ); - -/** - * The uIP packet buffer. - * - * The uip_buf array is used to hold incoming and outgoing - * packets. The device driver should place incoming data into this - * buffer. When sending data, the device driver should read the link - * level headers and the TCP/IP headers from this buffer. The size of - * the link level headers is configured by the UIP_LLH_LEN define. - * - * \note The application data need not be placed in this buffer, so - * the device driver must read it from the place pointed to by the - * uip_appdata pointer as illustrated by the following example: - \code - void - devicedriver_send(void) - { - hwsend(&uip_buf[0], UIP_LLH_LEN); - if(uip_len <= UIP_LLH_LEN + UIP_TCPIP_HLEN) { - hwsend(&uip_buf[UIP_LLH_LEN], uip_len - UIP_LLH_LEN); - } else { - hwsend(&uip_buf[UIP_LLH_LEN], UIP_TCPIP_HLEN); - hwsend(uip_appdata, uip_len - UIP_TCPIP_HLEN - UIP_LLH_LEN); - } - } - \endcode -*/ -#ifndef UIP_CONF_EXTERNAL_BUFFER -CCIF extern u8_t uip_buf[UIP_BUFSIZE + 2]; -#else -CCIF extern unsigned char *uip_buf; -#endif - -/** @} */ - -/*---------------------------------------------------------------------------*/ - -/* Functions that are used by the uIP application program. Opening and - * closing connections, sending and receiving data, etc. is all - * handled by the functions below. - */ - -/** - * \defgroup uipappfunc uIP application functions - * @{ - * - * Functions used by an application running of top of uIP. - */ - -/** - * Start listening to the specified port. - * - * \note Since this function expects the port number in network byte - * order, a conversion using HTONS() or htons() is necessary. - * - \code - uip_listen(HTONS(80)); - \endcode - * - * \param port A 16-bit port number in network byte order. - */ -void uip_listen( u16_t port ); - -/** - * Stop listening to the specified port. - * - * \note Since this function expects the port number in network byte - * order, a conversion using HTONS() or htons() is necessary. - * - \code - uip_unlisten(HTONS(80)); - \endcode - * - * \param port A 16-bit port number in network byte order. - */ -void uip_unlisten( u16_t port ); - -/** - * Connect to a remote host using TCP. - * - * This function is used to start a new connection to the specified - * port on the specified host. It allocates a new connection identifier, - * sets the connection to the SYN_SENT state and sets the - * retransmission timer to 0. This will cause a TCP SYN segment to be - * sent out the next time this connection is periodically processed, - * which usually is done within 0.5 seconds after the call to - * uip_connect(). - * - * \note This function is available only if support for active open - * has been configured by defining UIP_ACTIVE_OPEN to 1 in uipopt.h. - * - * \note Since this function requires the port number to be in network - * byte order, a conversion using HTONS() or htons() is necessary. - * - \code - uip_ipaddr_t ipaddr; - - uip_ipaddr(&ipaddr, 192,168,1,2); - uip_connect(&ipaddr, HTONS(80)); - \endcode - * - * \param ripaddr The IP address of the remote host. - * - * \param port A 16-bit port number in network byte order. - * - * \return A pointer to the uIP connection identifier for the new connection, - * or NULL if no connection could be allocated. - * - */ -struct uip_conn *uip_connect( uip_ipaddr_t *ripaddr, u16_t port ); - -/** - * \internal - * - * Check if a connection has outstanding (i.e., unacknowledged) data. - * - * \param conn A pointer to the uip_conn structure for the connection. - * - * \hideinitializer - */ -#define uip_outstanding( conn ) ( (conn)->len ) - -/** - * Send data on the current connection. - * - * This function is used to send out a single segment of TCP - * data. Only applications that have been invoked by uIP for event - * processing can send data. - * - * The amount of data that actually is sent out after a call to this - * function is determined by the maximum amount of data TCP allows. uIP - * will automatically crop the data so that only the appropriate - * amount of data is sent. The function uip_mss() can be used to query - * uIP for the amount of data that actually will be sent. - * - * \note This function does not guarantee that the sent data will - * arrive at the destination. If the data is lost in the network, the - * application will be invoked with the uip_rexmit() event being - * set. The application will then have to resend the data using this - * function. - * - * \param data A pointer to the data which is to be sent. - * - * \param len The maximum amount of data bytes to be sent. - * - * \hideinitializer - */ -CCIF void uip_send( const void *data, int len ); - -/** - * The length of any incoming data that is currently available (if available) - * in the uip_appdata buffer. - * - * The test function uip_data() must first be used to check if there - * is any data available at all. - * - * \hideinitializer - */ - -/*void uip_datalen(void);*/ -#define uip_datalen() uip_len - -/** - * The length of any out-of-band data (urgent data) that has arrived - * on the connection. - * - * \note The configuration parameter UIP_URGDATA must be set for this - * function to be enabled. - * - * \hideinitializer - */ -#define uip_urgdatalen() uip_urglen - -/** - * Close the current connection. - * - * This function will close the current connection in a nice way. - * - * \hideinitializer - */ -#define uip_close() ( uip_flags = UIP_CLOSE ) - -/** - * Abort the current connection. - * - * This function will abort (reset) the current connection, and is - * usually used when an error has occurred that prevents using the - * uip_close() function. - * - * \hideinitializer - */ -#define uip_abort() ( uip_flags = UIP_ABORT ) - -/** - * Tell the sending host to stop sending data. - * - * This function will close our receiver's window so that we stop - * receiving data for the current connection. - * - * \hideinitializer - */ -#define uip_stop() ( uip_conn->tcpstateflags |= UIP_STOPPED ) - -/** - * Find out if the current connection has been previously stopped with - * uip_stop(). - * - * \hideinitializer - */ -#define uip_stopped( conn ) ( (conn)->tcpstateflags & UIP_STOPPED ) - -/** - * Restart the current connection, if is has previously been stopped - * with uip_stop(). - * - * This function will open the receiver's window again so that we - * start receiving data for the current connection. - * - * \hideinitializer - */ -#define uip_restart() \ - do \ - { \ - uip_flags |= UIP_NEWDATA; \ - uip_conn->tcpstateflags &= ~UIP_STOPPED; \ - } while( 0 ) - - /* uIP tests that can be made to determine in what state the current - connection is, and what the application function should do. */ - -/** - * Is the current connection a UDP connection? - * - * This function checks whether the current connection is a UDP connection. - * - * \hideinitializer - * - */ -#define uip_udpconnection() ( uip_conn == NULL ) - -/** - * Is new incoming data available? - * - * Will reduce to non-zero if there is new data for the application - * present at the uip_appdata pointer. The size of the data is - * available through the uip_len variable. - * - * \hideinitializer - */ -#define uip_newdata() ( uip_flags & UIP_NEWDATA ) - -/** - * Has previously sent data been acknowledged? - * - * Will reduce to non-zero if the previously sent data has been - * acknowledged by the remote host. This means that the application - * can send new data. - * - * \hideinitializer - */ -#define uip_acked() ( uip_flags & UIP_ACKDATA ) - -/** - * Has the connection just been connected? - * - * Reduces to non-zero if the current connection has been connected to - * a remote host. This will happen both if the connection has been - * actively opened (with uip_connect()) or passively opened (with - * uip_listen()). - * - * \hideinitializer - */ -#define uip_connected() ( uip_flags & UIP_CONNECTED ) - -/** - * Has the connection been closed by the other end? - * - * Is non-zero if the connection has been closed by the remote - * host. The application may then do the necessary clean-ups. - * - * \hideinitializer - */ -#define uip_closed() ( uip_flags & UIP_CLOSE ) - -/** - * Has the connection been aborted by the other end? - * - * Non-zero if the current connection has been aborted (reset) by the - * remote host. - * - * \hideinitializer - */ -#define uip_aborted() ( uip_flags & UIP_ABORT ) - -/** - * Has the connection timed out? - * - * Non-zero if the current connection has been aborted due to too many - * retransmissions. - * - * \hideinitializer - */ -#define uip_timedout() ( uip_flags & UIP_TIMEDOUT ) - -/** - * Do we need to retransmit previously data? - * - * Reduces to non-zero if the previously sent data has been lost in - * the network, and the application should retransmit it. The - * application should send the exact same data as it did the last - * time, using the uip_send() function. - * - * \hideinitializer - */ -#define uip_rexmit() ( uip_flags & UIP_REXMIT ) - -/** - * Is the connection being polled by uIP? - * - * Is non-zero if the reason the application is invoked is that the - * current connection has been idle for a while and should be - * polled. - * - * The polling event can be used for sending data without having to - * wait for the remote host to send data. - * - * \hideinitializer - */ -#define uip_poll() ( uip_flags & UIP_POLL ) - -/** - * Get the initial maximum segment size (MSS) of the current - * connection. - * - * \hideinitializer - */ -#define uip_initialmss() ( uip_conn->initialmss ) - -/** - * Get the current maximum segment size that can be sent on the current - * connection. - * - * The current maximum segment size that can be sent on the - * connection is computed from the receiver's window and the MSS of - * the connection (which also is available by calling - * uip_initialmss()). - * - * \hideinitializer - */ -#define uip_mss() ( uip_conn->mss ) - /** - * Set up a new UDP connection. - * - * This function sets up a new UDP connection. The function will - * automatically allocate an unused local port for the new - * connection. However, another port can be chosen by using the - * uip_udp_bind() call, after the uip_udp_new() function has been - * called. - * - * Example: - \code - uip_ipaddr_t addr; - struct uip_udp_conn *c; - - uip_ipaddr(&addr, 192,168,2,1); - c = uip_udp_new(&addr, HTONS(12345)); - if(c != NULL) { - uip_udp_bind(c, HTONS(12344)); - } - \endcode - * \param ripaddr The IP address of the remote host. - * - * \param rport The remote port number in network byte order. - * - * \return The uip_udp_conn structure for the new connection or NULL - * if no connection could be allocated. - */ - struct uip_udp_conn *uip_udp_new( const uip_ipaddr_t *ripaddr, u16_t rport ); - -/** - * Removed a UDP connection. - * - * \param conn A pointer to the uip_udp_conn structure for the connection. - * - * \hideinitializer - */ -#define uip_udp_remove( conn ) ( conn )->lport = 0 - -/** - * Bind a UDP connection to a local port. - * - * \param conn A pointer to the uip_udp_conn structure for the - * connection. - * - * \param port The local port number, in network byte order. - * - * \hideinitializer - */ -#define uip_udp_bind( conn, port ) ( conn )->lport = port - -/** - * Send a UDP datagram of length len on the current connection. - * - * This function can only be called in response to a UDP event (poll - * or newdata). The data must be present in the uip_buf buffer, at the - * place pointed to by the uip_appdata pointer. - * - * \param len The length of the data in the uip_buf buffer. - * - * \hideinitializer - */ -#define uip_udp_send( len ) uip_send( ( char * ) uip_appdata, len ) - -/** @} */ - -/* uIP convenience and converting functions. */ - -/** - * \defgroup uipconvfunc uIP conversion functions - * @{ - * - * These functions can be used for converting between different data - * formats used by uIP. - */ - -/** - * Convert an IP address to four bytes separated by commas. - * - * Example: - \code - uip_ipaddr_t ipaddr; - printf("ipaddr=%d.%d.%d.%d\n", uip_ipaddr_to_quad(&ipaddr)); - \endcode - * - * \param a A pointer to a uip_ipaddr_t. - * \hideinitializer - */ -#define uip_ipaddr_to_quad( a ) ( a )->u8[0], ( a )->u8[1], ( a )->u8[2], ( a )->u8[3] - -/** - * Construct an IP address from four bytes. - * - * This function constructs an IP address of the type that uIP handles - * internally from four bytes. The function is handy for specifying IP - * addresses to use with e.g. the uip_connect() function. - * - * Example: - \code - uip_ipaddr_t ipaddr; - struct uip_conn *c; - - uip_ipaddr(&ipaddr, 192,168,1,2); - c = uip_connect(&ipaddr, HTONS(80)); - \endcode - * - * \param addr A pointer to a uip_ipaddr_t variable that will be - * filled in with the IP address. - * - * \param addr0 The first octet of the IP address. - * \param addr1 The second octet of the IP address. - * \param addr2 The third octet of the IP address. - * \param addr3 The forth octet of the IP address. - * - * \hideinitializer - */ -#define uip_ipaddr( addr, addr0, addr1, addr2, addr3 ) \ - do \ - { \ - ( addr )->u8[0] = addr0; \ - ( addr )->u8[1] = addr1; \ - ( addr )->u8[2] = addr2; \ - ( addr )->u8[3] = addr3; \ - } while( 0 ) - -/** - * Construct an IPv6 address from eight 16-bit words. - * - * This function constructs an IPv6 address. - * - * \hideinitializer - */ -#define uip_ip6addr( addr, addr0, addr1, addr2, addr3, addr4, addr5, addr6, addr7 ) \ - do \ - { \ - ( addr )->u16[0] = HTONS( addr0 ); \ - ( addr )->u16[1] = HTONS( addr1 ); \ - ( addr )->u16[2] = HTONS( addr2 ); \ - ( addr )->u16[3] = HTONS( addr3 ); \ - ( addr )->u16[4] = HTONS( addr4 ); \ - ( addr )->u16[5] = HTONS( addr5 ); \ - ( addr )->u16[6] = HTONS( addr6 ); \ - ( addr )->u16[7] = HTONS( addr7 ); \ - } while( 0 ) /** - * Construct an IPv6 address from eight 8-bit words. - * - * This function constructs an IPv6 address. - * - * \hideinitializer - */ -#define uip_ip6addr_u8 ( addr, addr0, addr1, addr2, addr3, addr4, addr5, addr6, addr7, addr8, addr9, addr10, addr11, addr12, addr13, addr14, \ - addr15 ) do \ - {\ - ( addr )->u8[0] = addr0; \ - ( addr )->u8[1] = addr1; \ - ( addr )->u8[2] = addr2; \ - ( addr )->u8[3] = addr3; \ - ( addr )->u8[4] = addr4; \ - ( addr )->u8[5] = addr5; \ - ( addr )->u8[6] = addr6; \ - ( addr )->u8[7] = addr7; \ - ( addr )->u8[8] = addr8; \ - ( addr )->u8[9] = addr9; \ - ( addr )->u8[10] = addr10; \ - ( addr )->u8[11] = addr11; \ - ( addr )->u8[12] = addr12; \ - ( addr )->u8[13] = addr13; \ - ( addr )->u8[14] = addr14; \ - ( addr )->u8[15] = addr15; \ - } while( 0 ) - /** - * Copy an IP address to another IP address. - * - * Copies an IP address from one place to another. - * - * Example: - \code - uip_ipaddr_t ipaddr1, ipaddr2; - - uip_ipaddr(&ipaddr1, 192,16,1,2); - uip_ipaddr_copy(&ipaddr2, &ipaddr1); - \endcode - * - * \param dest The destination for the copy. - * \param src The source from where to copy. - * - * \hideinitializer - */ -#ifndef uip_ipaddr_copy - #define uip_ipaddr_copy( dest, src ) \ - do \ - { \ - (dest)->u8[0] = (src)->u8[0]; \ - (dest)->u8[1] = (src)->u8[1]; \ - (dest)->u8[2] = (src)->u8[2]; \ - (dest)->u8[3] = (src)->u8[3]; \ - } while( 0 ) -#endif - - /** - * Compare two IP addresses - * - * Compares two IP addresses. - * - * Example: - \code - uip_ipaddr_t ipaddr1, ipaddr2; - - uip_ipaddr(&ipaddr1, 192,16,1,2); - if(uip_ipaddr_cmp(&ipaddr2, &ipaddr1)) { - printf("They are the same"); - } - \endcode - * - * \param addr1 The first IP address. - * \param addr2 The second IP address. - * - * \hideinitializer - */ -#if !UIP_CONF_IPV6 -#define uip_ipaddr_cmp( addr1, addr2 ) ( (addr1)->u16[0] == (addr2)->u16[0] && (addr1)->u16[1] == (addr2)->u16[1] ) -#else /* !UIP_CONF_IPV6 */ -#define uip_ipaddr_cmp( addr1, addr2 ) ( memcmp(addr1, addr2, sizeof(uip_ip6addr_t)) == 0 ) -#endif /* !UIP_CONF_IPV6 */ - - /** - * Compare two IP addresses with netmasks - * - * Compares two IP addresses with netmasks. The masks are used to mask - * out the bits that are to be compared. - * - * Example: - \code - uip_ipaddr_t ipaddr1, ipaddr2, mask; - - uip_ipaddr(&mask, 255,255,255,0); - uip_ipaddr(&ipaddr1, 192,16,1,2); - uip_ipaddr(&ipaddr2, 192,16,1,3); - if(uip_ipaddr_maskcmp(&ipaddr1, &ipaddr2, &mask)) { - printf("They are the same"); - } - \endcode - * - * \param addr1 The first IP address. - * \param addr2 The second IP address. - * \param mask The netmask. - * - * \hideinitializer - */ -#if !UIP_CONF_IPV6 -#define uip_ipaddr_maskcmp( addr1, addr2, mask ) \ - ( \ - (((( u16_t * ) addr1)[0] & (( u16_t * ) mask)[0]) == ((( u16_t * ) addr2)[0] & (( u16_t * ) mask)[0])) && \ - (((( u16_t * ) addr1)[1] & (( u16_t * ) mask)[1]) == ((( u16_t * ) addr2)[1] & (( u16_t * ) mask)[1])) \ - ) -#else -#define uip_ipaddr_prefixcmp( addr1, addr2, length ) ( memcmp(addr1, addr2, length >> 3) == 0 ) -#endif - - /** - * Check if an address is a broadcast address for a network. - * - * Checks if an address is the broadcast address for a network. The - * network is defined by an IP address that is on the network and the - * network's netmask. - * - * \param addr The IP address. - * \param netaddr The network's IP address. - * \param netmask The network's netmask. - * - * \hideinitializer - */ - - /*#define uip_ipaddr_isbroadcast(addr, netaddr, netmask) - ((uip_ipaddr_t *)(addr)).u16 & ((uip_ipaddr_t *)(addr)).u16*/ - -/** - * Mask out the network part of an IP address. - * - * Masks out the network part of an IP address, given the address and - * the netmask. - * - * Example: - \code - uip_ipaddr_t ipaddr1, ipaddr2, netmask; - - uip_ipaddr(&ipaddr1, 192,16,1,2); - uip_ipaddr(&netmask, 255,255,255,0); - uip_ipaddr_mask(&ipaddr2, &ipaddr1, &netmask); - \endcode - * - * In the example above, the variable "ipaddr2" will contain the IP - * address 192.168.1.0. - * - * \param dest Where the result is to be placed. - * \param src The IP address. - * \param mask The netmask. - * - * \hideinitializer - */ -#define uip_ipaddr_mask( dest, src, mask ) \ - do \ - { \ - ( ( u16_t * ) dest )[0] = ( ( u16_t * ) src )[0] & ( ( u16_t * ) mask )[0]; \ - ( ( u16_t * ) dest )[1] = ( ( u16_t * ) src )[1] & ( ( u16_t * ) mask )[1]; \ - } while( 0 ) - -/** - * Pick the first octet of an IP address. - * - * Picks out the first octet of an IP address. - * - * Example: - \code - uip_ipaddr_t ipaddr; - u8_t octet; - - uip_ipaddr(&ipaddr, 1,2,3,4); - octet = uip_ipaddr1(&ipaddr); - \endcode - * - * In the example above, the variable "octet" will contain the value 1. - * - * \hideinitializer - */ -#define uip_ipaddr1( addr ) ( (addr)->u8[0] ) - -/** - * Pick the second octet of an IP address. - * - * Picks out the second octet of an IP address. - * - * Example: - \code - uip_ipaddr_t ipaddr; - u8_t octet; - - uip_ipaddr(&ipaddr, 1,2,3,4); - octet = uip_ipaddr2(&ipaddr); - \endcode - * - * In the example above, the variable "octet" will contain the value 2. - * - * \hideinitializer - */ -#define uip_ipaddr2( addr ) ( (addr)->u8[1] ) - -/** - * Pick the third octet of an IP address. - * - * Picks out the third octet of an IP address. - * - * Example: - \code - uip_ipaddr_t ipaddr; - u8_t octet; - - uip_ipaddr(&ipaddr, 1,2,3,4); - octet = uip_ipaddr3(&ipaddr); - \endcode - * - * In the example above, the variable "octet" will contain the value 3. - * - * \hideinitializer - */ -#define uip_ipaddr3( addr ) ( (addr)->u8[2] ) - -/** - * Pick the fourth octet of an IP address. - * - * Picks out the fourth octet of an IP address. - * - * Example: - \code - uip_ipaddr_t ipaddr; - u8_t octet; - - uip_ipaddr(&ipaddr, 1,2,3,4); - octet = uip_ipaddr4(&ipaddr); - \endcode - * - * In the example above, the variable "octet" will contain the value 4. - * - * \hideinitializer - */ -#define uip_ipaddr4( addr ) ( (addr)->u8[3] ) - /** - * Convert 16-bit quantity from host byte order to network byte order. - * - * This macro is primarily used for converting constants from host - * byte order to network byte order. For converting variables to - * network byte order, use the htons() function instead. - * - * \hideinitializer - */ -#ifndef HTONS -#if UIP_BYTE_ORDER == UIP_BIG_ENDIAN -#define HTONS( n ) ( n ) -#define HTONL( n ) ( n ) -#else /* UIP_BYTE_ORDER == UIP_BIG_ENDIAN */ -#define HTONS( n ) ( u16_t ) ( (((u16_t) (n)) << 8) | (((u16_t) (n)) >> 8) ) -#define HTONL( n ) ( ((u32_t) HTONS(n) << 16) | HTONS((u32_t) (n) >> 16) ) -#endif /* UIP_BYTE_ORDER == UIP_BIG_ENDIAN */ -#else -#error "HTONS already defined!" -#endif /* HTONS */ - - /** - * Convert 16-bit quantity from host byte order to network byte order. - * - * This function is primarily used for converting variables from host - * byte order to network byte order. For converting constants to - * network byte order, use the HTONS() macro instead. - */ -#ifndef htons - CCIF u16_t htons( u16_t val ); -#endif /* htons */ - -#ifndef ntohs - #define ntohs htons -#endif - -#ifndef htonl - CCIF u32_t htonl( u32_t val ); -#endif /* htonl */ - -#ifndef ntohl - #define ntohl htonl -#endif - -/** @} */ - -/** - * Pointer to the application data in the packet buffer. - * - * This pointer points to the application data when the application is - * called. If the application wishes to send data, the application may - * use this space to write the data into before calling uip_send(). - */ -CCIF extern void *uip_appdata; - -#if UIP_URGDATA > 0 - -/* u8_t *uip_urgdata: - * - * This pointer points to any urgent data that has been received. Only - * present if compiled with support for urgent data (UIP_URGDATA). - */ -extern void *uip_urgdata; -#endif /* UIP_URGDATA > 0 */ - -/** - * \defgroup uipdrivervars Variables used in uIP device drivers - * @{ - * - * uIP has a few global variables that are used in device drivers for - * uIP. - */ - -/** - * The length of the packet in the uip_buf buffer. - * - * The global variable uip_len holds the length of the packet in the - * uip_buf buffer. - * - * When the network device driver calls the uIP input function, - * uip_len should be set to the length of the packet in the uip_buf - * buffer. - * - * When sending packets, the device driver should use the contents of - * the uip_len variable to determine the length of the outgoing - * packet. - * - */ -CCIF extern u16_t uip_len; - -/** - * The length of the extension headers - */ -extern u8_t uip_ext_len; - -/** @} */ -#if UIP_URGDATA > 0 -extern u16_t uip_urglen, uip_surglen; -#endif /* UIP_URGDATA > 0 */ - -/** - * Representation of a uIP TCP connection. - * - * The uip_conn structure is used for identifying a connection. All - * but one field in the structure are to be considered read-only by an - * application. The only exception is the appstate field whose purpose - * is to let the application store application-specific state (e.g., - * file pointers) for the connection. The type of this field is - * configured in the "uipopt.h" header file. - */ -struct uip_conn -{ - uip_ipaddr_t ripaddr; /**< The IP address of the remote host. */ - - u16_t lport; /**< The local TCP port, in network byte order. */ - u16_t rport; /**< The local remote TCP port, in network byte - order. */ - - u8_t rcv_nxt[4]; /**< The sequence number that we expect to - receive next. */ - u8_t snd_nxt[4]; /**< The sequence number that was last sent by - us. */ - u16_t len; /**< Length of the data that was previously sent. */ - u16_t mss; /**< Current maximum segment size for the - connection. */ - u16_t initialmss; /**< Initial maximum segment size for the - connection. */ - u8_t sa; /**< Retransmission time-out calculation state - variable. */ - u8_t sv; /**< Retransmission time-out calculation state - variable. */ - u8_t rto; /**< Retransmission time-out. */ - u8_t tcpstateflags; /**< TCP state and flags. */ - u8_t timer; /**< The retransmission timer. */ - u8_t nrtx; /**< The number of retransmissions for the last - segment sent. */ - - /** The application state. */ - uip_tcp_appstate_t appstate; -}; - -/** - * Pointer to the current TCP connection. - * - * The uip_conn pointer can be used to access the current TCP - * connection. - */ -CCIF extern struct uip_conn *uip_conn; -#ifdef UIP_TCP - -/* The array containing all uIP connections. */ -CCIF extern struct uip_conn uip_conns[UIP_CONNS]; -#endif - -/** - * \addtogroup uiparch - * @{ - */ - -/** - * 4-byte array used for the 32-bit sequence number calculations. - */ -extern u8_t uip_acc32[4]; - -/** @} */ -#if UIP_UDP == 1 -/** - * Representation of a uIP UDP connection. - */ -struct uip_udp_conn -{ - uip_ipaddr_t ripaddr; /**< The IP address of the remote peer. */ - u16_t lport; /**< The local port number in network byte order. */ - u16_t rport; /**< The remote port number in network byte order. */ - u8_t ttl; /**< Default time-to-live. */ - - /** The application state. */ - uip_udp_appstate_t appstate; -}; - -/** - * The current UDP connection. - */ -extern struct uip_udp_conn *uip_udp_conn; -extern struct uip_udp_conn uip_udp_conns[UIP_UDP_CONNS]; -#endif /* UIP_UDP */ - -struct uip_router -{ - int ( *activate ) ( void ); - int ( *deactivate ) ( void ); - uip_ipaddr_t * ( *lookup ) ( uip_ipaddr_t *destipaddr, uip_ipaddr_t *nexthop ); -}; - -#ifdef UIP_CONF_ROUTER -extern const struct uip_router *uip_router; - -/** - * uIP routing driver registration function. - */ -void uip_router_register( const struct uip_router *router ); -#endif /*UIP_CONF_ROUTER*/ - -#ifdef UIP_CONF_ICMP6 -struct uip_icmp6_conn -{ - uip_icmp6_appstate_t appstate; -}; -extern struct uip_icmp6_conn uip_icmp6_conns; -#endif /*UIP_CONF_ICMP6*/ - -/** - * The uIP TCP/IP statistics. - * - * This is the variable in which the uIP TCP/IP statistics are gathered. - */ -#if UIP_STATISTICS == 1 -extern struct uip_stats uip_stat; -#define UIP_STAT( s ) s -#else -#define UIP_STAT( s ) -#endif /* UIP_STATISTICS == 1 */ - -/** - * The structure holding the TCP/IP statistics that are gathered if - * UIP_STATISTICS is set to 1. - * - */ -struct uip_stats -{ - struct - { - uip_stats_t recv; /**< Number of received packets at the IP - layer. */ - uip_stats_t sent; /**< Number of sent packets at the IP - layer. */ - uip_stats_t forwarded; /**< Number of forwarded packets at the IP - layer. */ - uip_stats_t drop; /**< Number of dropped packets at the IP - layer. */ - uip_stats_t vhlerr; /**< Number of packets dropped due to wrong - IP version or header length. */ - uip_stats_t hblenerr; /**< Number of packets dropped due to wrong - IP length, high byte. */ - uip_stats_t lblenerr; /**< Number of packets dropped due to wrong - IP length, low byte. */ - uip_stats_t fragerr; /**< Number of packets dropped since they - were IP fragments. */ - uip_stats_t chkerr; /**< Number of packets dropped due to IP - checksum errors. */ - uip_stats_t protoerr; /**< Number of packets dropped since they - were neither ICMP, UDP nor TCP. */ - } ip; /**< IP statistics. */ - struct - { - uip_stats_t recv; /**< Number of received ICMP packets. */ - uip_stats_t sent; /**< Number of sent ICMP packets. */ - uip_stats_t drop; /**< Number of dropped ICMP packets. */ - uip_stats_t typeerr; /**< Number of ICMP packets with a wrong - type. */ - uip_stats_t chkerr; /**< Number of ICMP packets with a bad - checksum. */ - } icmp; /**< ICMP statistics. */ -#ifdef UIP_TCP - struct - { - uip_stats_t recv; /**< Number of recived TCP segments. */ - uip_stats_t sent; /**< Number of sent TCP segments. */ - uip_stats_t drop; /**< Number of dropped TCP segments. */ - uip_stats_t chkerr; /**< Number of TCP segments with a bad - checksum. */ - uip_stats_t ackerr; /**< Number of TCP segments with a bad ACK - number. */ - uip_stats_t rst; /**< Number of recevied TCP RST (reset) segments. */ - uip_stats_t rexmit; /**< Number of retransmitted TCP segments. */ - uip_stats_t syndrop; /**< Number of dropped SYNs due to too few - connections was avaliable. */ - uip_stats_t synrst; /**< Number of SYNs for closed ports, - triggering a RST. */ - } tcp; /**< TCP statistics. */ -#endif -#ifdef UIP_UDP - struct - { - uip_stats_t drop; /**< Number of dropped UDP segments. */ - uip_stats_t recv; /**< Number of recived UDP segments. */ - uip_stats_t sent; /**< Number of sent UDP segments. */ - uip_stats_t chkerr; /**< Number of UDP segments with a bad - checksum. */ - } udp; /**< UDP statistics. */ -#endif /* UIP_UDP */ -#if UIP_CONF_IPV6 != 0 - struct - { - uip_stats_t drop; /**< Number of dropped ND6 packets. */ - uip_stats_t recv; /**< Number of recived ND6 packets */ - uip_stats_t sent; /**< Number of sent ND6 packets */ - } nd6; -#endif /*UIP_CONF_IPV6*/ -}; - -/*---------------------------------------------------------------------------*/ - -/* All the stuff below this point is internal to uIP and should not be - * used directly by an application or by a device driver. - */ - -/*---------------------------------------------------------------------------*/ - -/* u8_t uip_flags: - * - * When the application is called, uip_flags will contain the flags - * that are defined in this file. Please read below for more - * information. - */ -CCIF extern u8_t uip_flags; - -/* The following flags may be set in the global variable uip_flags - before calling the application callback. The UIP_ACKDATA, - UIP_NEWDATA, and UIP_CLOSE flags may both be set at the same time, - whereas the others are mutually exclusive. Note that these flags - should *NOT* be accessed directly, but only through the uIP - functions/macros. */ -#define UIP_ACKDATA 1 /* Signifies that the outstanding data was - acked and the application should send - out new data instead of retransmitting - the last data. */ -#define UIP_NEWDATA 2 /* Flags the fact that the peer has sent - us new data. */ -#define UIP_REXMIT 4 /* Tells the application to retransmit the - data that was last sent. */ -#define UIP_POLL 8 /* Used for polling the application, to - check if the application has data that - it wants to send. */ -#define UIP_CLOSE 16 /* The remote host has closed the - connection, thus the connection has - gone away. Or the application signals - that it wants to close the - connection. */ -#define UIP_ABORT 32 /* The remote host has aborted the - connection, thus the connection has - gone away. Or the application signals - that it wants to abort the - connection. */ -#define UIP_CONNECTED 64 /* We have got a connection from a remote - host and have set up a new connection - for it, or an active connection has - been successfully established. */ - -#define UIP_TIMEDOUT 128 /* The connection has been aborted due to - too many retransmissions. */ - -/** - * \brief process the options within a hop by hop or destination option header - * \retval 0: nothing to send, - * \retval 1: drop pkt - * \retval 2: ICMP error message to send -*/ - -/*static u8_t -uip_ext_hdr_options_process(); */ - -/* uip_process(flag): - * - * The actual uIP function which does all the work. - */ -void uip_process( u8_t flag ); - -/* The following flags are passed as an argument to the uip_process() - function. They are used to distinguish between the two cases where - uip_process() is called. It can be called either because we have - incoming data that should be processed, or because the periodic - timer has fired. These values are never used directly, but only in - the macros defined in this file. */ -#define UIP_DATA 1 /* Tells uIP that there is incoming - data in the uip_buf buffer. The - length of the data is stored in the - global variable uip_len. */ -#define UIP_TIMER 2 /* Tells uIP that the periodic timer - has fired. */ -#define UIP_POLL_REQUEST 3 /* Tells uIP that a connection should - be polled. */ -#define UIP_UDP_SEND_CONN 4 /* Tells uIP that a UDP datagram - should be constructed in the - uip_buf buffer. */ -#ifdef UIP_UDP -#define UIP_UDP_TIMER 5 -#endif /* UIP_UDP */ - -/* The TCP states used in the uip_conn->tcpstateflags. */ -#define UIP_CLOSED 0 -#define UIP_SYN_RCVD 1 -#define UIP_SYN_SENT 2 -#define UIP_ESTABLISHED 3 -#define UIP_FIN_WAIT_1 4 -#define UIP_FIN_WAIT_2 5 -#define UIP_CLOSING 6 -#define UIP_TIME_WAIT 7 -#define UIP_LAST_ACK 8 -#define UIP_TS_MASK 15 - -#define UIP_STOPPED 16 - -/* The TCP and IP headers. */ -#include "net/pack_struct_start.h" -struct uip_tcpip_hdr -{ -#if UIP_CONF_IPV6 != 0 - /* IPv6 header. */ - u8_t vtc, tcflow; - u16_t flow; - u8_t len[2]; - u8_t proto, ttl; - uip_ip6addr_t srcipaddr, destipaddr; -#else /* UIP_CONF_IPV6 */ - /* IPv4 header. */ - u8_t vhl, tos, len[2], ipid[2], ipoffset[2], ttl, proto; - u16_t ipchksum; - uip_ipaddr_t srcipaddr, destipaddr; -#endif /* UIP_CONF_IPV6 */ - - /* TCP header. */ - u16_t srcport, destport; - u8_t seqno[4], ackno[4], tcpoffset, flags, wnd[2]; - u16_t tcpchksum; - u8_t urgp[2]; - u8_t optdata[4]; -} -#include "net/pack_struct_end.h" - -/* The ICMP and IP headers. */ -#include "net/pack_struct_start.h" -struct uip_icmpip_hdr -{ -#if UIP_CONF_IPV6 != 0 - /* IPv6 header. */ - u8_t vtc, tcf; - u16_t flow; - u8_t len[2]; - u8_t proto, ttl; - uip_ip6addr_t srcipaddr, destipaddr; -#else /* UIP_CONF_IPV6 */ - /* IPv4 header. */ - u8_t vhl, tos, len[2], ipid[2], ipoffset[2], ttl, proto; - u16_t ipchksum; - uip_ipaddr_t srcipaddr, destipaddr; -#endif /* UIP_CONF_IPV6 */ - - /* ICMP header. */ - u8_t type, icode; - u16_t icmpchksum; -#if !UIP_CONF_IPV6 - u16_t id, seqno; - u8_t payload[1]; -#endif /* !UIP_CONF_IPV6 */ -} - -#include "net/pack_struct_end.h" - -/* The UDP and IP headers. */ -#include "net/pack_struct_start.h" -struct uip_udpip_hdr -{ -#if UIP_CONF_IPV6 != 0 - /* IPv6 header. */ - u8_t vtc, tcf; - u16_t flow; - u8_t len[2]; - u8_t proto, ttl; - uip_ip6addr_t srcipaddr, destipaddr; -#else /* UIP_CONF_IPV6 */ - /* IP header. */ - u8_t vhl, tos, len[2], ipid[2], ipoffset[2], ttl, proto; - u16_t ipchksum; - uip_ipaddr_t srcipaddr, destipaddr; -#endif /* UIP_CONF_IPV6 */ - - /* UDP header. */ - u16_t srcport, destport; - u16_t udplen; - u16_t udpchksum; -} - -#include "net/pack_struct_end.h" - -/* - * In IPv6 the length of the L3 headers before the transport header is - * not fixed, due to the possibility to include extension option headers - * after the IP header. hence we split here L3 and L4 headers - */ - -/* The IP header */ -struct uip_ip_hdr -{ -#if UIP_CONF_IPV6 != 0 - /* IPV6 header */ - u8_t vtc; - u8_t tcflow; - u16_t flow; - u8_t len[2]; - u8_t proto, ttl; - uip_ip6addr_t srcipaddr, destipaddr; -#else /* UIP_CONF_IPV6 */ - /* IPV4 header */ - u8_t vhl, tos, len[2], ipid[2], ipoffset[2], ttl, proto; - u16_t ipchksum; - uip_ipaddr_t srcipaddr, destipaddr; -#endif /* UIP_CONF_IPV6 */ -}; - -/* - * IPv6 extension option headers: we are able to process - * the 4 extension headers defined in RFC2460 (IPv6): - * - Hop by hop option header, destination option header: - * These two are not used by any core IPv6 protocol, hence - * we just read them and go to the next. They convey options, - * the options defined in RFC2460 are Pad1 and PadN, which do - * some padding, and that we do not need to read (the length - * field in the header is enough) - * - Routing header: this one is most notably used by MIPv6, - * which we do not implement, hence we just read it and go - * to the next - * - Fragmentation header: we read this header and are able to - * reassemble packets - * - * We do not offer any means to send packets with extension headers - * - * We do not implement Authentication and ESP headers, which are - * used in IPSec and defined in RFC4302,4303,4305,4385 - */ - -/* common header part */ -struct uip_ext_hdr -{ - u8_t next; - u8_t len; -}; - -/* Hop by Hop option header */ -struct uip_hbho_hdr -{ - u8_t next; - u8_t len; -}; - -/* destination option header */ -struct uip_desto_hdr -{ - u8_t next; - u8_t len; -}; - -/* We do not define structures for PAD1 and PADN options */ - -/* - * routing header - * the routing header as 4 common bytes, then routing header type - * specific data there are several types of routing header. Type 0 was - * deprecated as per RFC5095 most notable other type is 2, used in - * RFC3775 (MIPv6) here we do not implement MIPv6, so we just need to - * parse the 4 first bytes - */ -struct uip_routing_hdr -{ - u8_t next; - u8_t len; - u8_t routing_type; - u8_t seg_left; -}; - -/* fragmentation header */ -struct uip_frag_hdr -{ - u8_t next; - u8_t res; - u16_t offsetresmore; - u32_t id; -}; - -/* - * an option within the destination or hop by hop option headers - * it contains type an length, which is true for all options but PAD1 - */ -struct uip_ext_hdr_opt -{ - u8_t type; - u8_t len; -}; - -/* PADN option */ -struct uip_ext_hdr_opt_padn -{ - u8_t opt_type; - u8_t opt_len; -}; - -/* TCP header */ -struct uip_tcp_hdr -{ - u16_t srcport; - u16_t destport; - u8_t seqno[4]; - u8_t ackno[4]; - u8_t tcpoffset; - u8_t flags; - u8_t wnd[2]; - u16_t tcpchksum; - u8_t urgp[2]; - u8_t optdata[4]; -}; - -/* The ICMP headers. */ -struct uip_icmp_hdr -{ - u8_t type, icode; - u16_t icmpchksum; -#if !UIP_CONF_IPV6 - u16_t id, seqno; -#endif /* !UIP_CONF_IPV6 */ -}; - -/* The UDP headers. */ -struct uip_udp_hdr -{ - u16_t srcport; - u16_t destport; - u16_t udplen; - u16_t udpchksum; -}; - -/** - * The buffer size available for user data in the \ref uip_buf buffer. - * - * This macro holds the available size for user data in the \ref - * uip_buf buffer. The macro is intended to be used for checking - * bounds of available user data. - * - * Example: - \code - snprintf(uip_appdata, UIP_APPDATA_SIZE, "%u\n", i); - \endcode - * - * \hideinitializer - */ -#define UIP_APPDATA_SIZE ( UIP_BUFSIZE - UIP_LLH_LEN - UIP_TCPIP_HLEN ) -#define UIP_APPDATA_PTR ( void * ) &uip_buf[UIP_LLH_LEN + UIP_TCPIP_HLEN] - -#define UIP_PROTO_ICMP 1 -#define UIP_PROTO_TCP 6 -#define UIP_PROTO_UDP 17 -#define UIP_PROTO_ICMP6 58 - -#if UIP_CONF_IPV6 != 0 - -/** @{ */ - -/** \brief extension headers types */ -#define UIP_PROTO_HBHO 0 -#define UIP_PROTO_DESTO 60 -#define UIP_PROTO_ROUTING 43 -#define UIP_PROTO_FRAG 44 -#define UIP_PROTO_NONE 59 - -/** @} */ - -/** @{ */ - -/** \brief Destination and Hop By Hop extension headers option types */ -#define UIP_EXT_HDR_OPT_PAD1 0 -#define UIP_EXT_HDR_OPT_PADN 1 - -/** @} */ - -/** @{ */ - -/** - * \brief Bitmaps for extension header processing - * - * When processing extension headers, we should record somehow which one we - * see, because you cannot have twice the same header, except for destination - * We store all this in one u8_t bitmap one bit for each header expected. The - * order in the bitmap is the order recommended in RFC2460 - */ -#define UIP_EXT_HDR_BITMAP_HBHO 0x01 -#define UIP_EXT_HDR_BITMAP_DESTO1 0x02 -#define UIP_EXT_HDR_BITMAP_ROUTING 0x04 -#define UIP_EXT_HDR_BITMAP_FRAG 0x08 -#define UIP_EXT_HDR_BITMAP_AH 0x10 -#define UIP_EXT_HDR_BITMAP_ESP 0x20 -#define UIP_EXT_HDR_BITMAP_DESTO2 0x40 - -/** @} */ -#endif /* UIP_CONF_IPV6 */ - -/* Header sizes. */ -#if UIP_CONF_IPV6 != 0 -#define UIP_IPH_LEN 40 -#define UIP_FRAGH_LEN 8 -#else /* UIP_CONF_IPV6 */ -#define UIP_IPH_LEN 20 /* Size of IP header */ -#endif /* UIP_CONF_IPV6 */ - -#define UIP_UDPH_LEN 8 /* Size of UDP header */ -#define UIP_TCPH_LEN 20 /* Size of TCP header */ -#ifdef UIP_IPH_LEN -#define UIP_ICMPH_LEN 4 /* Size of ICMP header */ -#endif -#define UIP_IPUDPH_LEN ( UIP_UDPH_LEN + UIP_IPH_LEN ) /* Size of IP + - * UDP - * header */ -#define UIP_IPTCPH_LEN ( UIP_TCPH_LEN + UIP_IPH_LEN ) /* Size of IP + - * TCP - * header */ -#define UIP_TCPIP_HLEN UIP_IPTCPH_LEN -#define UIP_IPICMPH_LEN ( UIP_IPH_LEN + UIP_ICMPH_LEN ) /* size of ICMP - + IP header */ -#define UIP_LLIPH_LEN ( UIP_LLH_LEN + UIP_IPH_LEN ) /* size of L2 - + IP header */ -#if UIP_CONF_IPV6 != 0 - -/** - * The sums below are quite used in ND. When used for uip_buf, we - * include link layer length when used for uip_len, we do not, hence - * we need values with and without LLH_LEN we do not use capital - * letters as these values are variable - */ -#define uip_l2_l3_hdr_len ( UIP_LLH_LEN + UIP_IPH_LEN + uip_ext_len ) -#define uip_l2_l3_icmp_hdr_len ( UIP_LLH_LEN + UIP_IPH_LEN + uip_ext_len + UIP_ICMPH_LEN ) -#define uip_l3_hdr_len ( UIP_IPH_LEN + uip_ext_len ) -#define uip_l3_icmp_hdr_len ( UIP_IPH_LEN + uip_ext_len + UIP_ICMPH_LEN ) -#endif /*UIP_CONF_IPV6*/ - -#ifdef UIP_FIXEDADDR -CCIF extern const uip_ipaddr_t uip_hostaddr, uip_netmask, uip_draddr; -#else /* UIP_FIXEDADDR */ -CCIF extern uip_ipaddr_t uip_hostaddr, uip_netmask, uip_draddr; -#endif /* UIP_FIXEDADDR */ -CCIF extern const uip_ipaddr_t uip_broadcast_addr; -CCIF extern const uip_ipaddr_t uip_all_zeroes_addr; - -#ifdef UIP_FIXEDETHADDR -CCIF extern const uip_lladdr_t uip_lladdr; -#else -CCIF extern uip_lladdr_t uip_lladdr; -#endif -#if UIP_CONF_IPV6 != 0 - -/** - * \brief Is IPv6 address a the unspecified address - * a is of type uip_ipaddr_t - */ -#define uip_is_addr_unspecified( a ) \ - ( \ - (((a)->u16[0]) == 0) && \ - (((a)->u16[1]) == 0) && \ - (((a)->u16[2]) == 0) && \ - (((a)->u16[3]) == 0) && \ - (((a)->u16[4]) == 0) && \ - (((a)->u16[5]) == 0) && \ - (((a)->u16[6]) == 0) && \ - (((a)->u16[7]) == 0) \ - ) - -/** \brief Is IPv6 address a the link local all-nodes multicast address */ -#define uip_is_addr_linklocal_allnodes_mcast( a ) \ - ( \ - (((a)->u8[0]) == 0xff) && \ - (((a)->u8[1]) == 0x02) && \ - (((a)->u16[1]) == 0) && \ - (((a)->u16[2]) == 0) && \ - (((a)->u16[3]) == 0) && \ - (((a)->u16[4]) == 0) && \ - (((a)->u16[5]) == 0) && \ - (((a)->u16[6]) == 0) && \ - (((a)->u8[14]) == 0) && \ - (((a)->u8[15]) == 0x01) \ - ) - -/** \brief set IP address a to unspecified */ -#define uip_create_unspecified( a ) uip_ip6addr( a, 0, 0, 0, 0, 0, 0, 0, 0 ) - -/** \brief set IP address a to the link local all-nodes multicast address */ -#define uip_create_linklocal_allnodes_mcast( a ) uip_ip6addr( a, 0xff02, 0, 0, 0, 0, 0, 0, 0x0001 ) - -/** \brief set IP address a to the link local all-routers multicast address */ -#define uip_create_linklocal_allrouters_mcast( a ) uip_ip6addr( a, 0xff02, 0, 0, 0, 0, 0, 0, 0x0002 ) - -/** - * \brief is addr (a) a solicited node multicast address, see RFC3513 - * a is of type uip_ipaddr_t* - */ -#define uip_is_addr_solicited_node( a ) \ - ( \ - (((a)->u8[0]) == 0xFF) && \ - (((a)->u8[1]) == 0x02) && \ - (((a)->u16[1]) == 0) && \ - (((a)->u16[2]) == 0) && \ - (((a)->u16[3]) == 0) && \ - (((a)->u16[4]) == 0) && \ - (((a)->u16[5]) == 1) && \ - (((a)->u8[12]) == 0xFF) \ - ) - -/** - * \briefput in b the solicited node address corresponding to address a - * both a and b are of type uip_ipaddr_t* - * */ -#define uip_create_solicited_node( a, b ) \ - ( ((b)->u8[0]) = 0xFF ); \ - ( ((b)->u8[1]) = 0x02 ); \ - ( ((b)->u16[1]) = 0 ); \ - ( ((b)->u16[2]) = 0 ); \ - ( ((b)->u16[3]) = 0 ); \ - ( ((b)->u16[4]) = 0 ); \ - ( ((b)->u8[10]) = 0 ); \ - ( ((b)->u8[11]) = 0x01 ); \ - ( ((b)->u8[12]) = 0xFF ); \ - ( ((b)->u8[13]) = ((a)->u8[13]) ); \ - ( ((b)->u16[7]) = ((a)->u16[7]) ) - -/** - * \brief is addr (a) a link local unicast address, see RFC3513 - * i.e. is (a) on prefix FE80::/10 - * a is of type uip_ipaddr_t* - */ -#define uip_is_addr_link_local( a ) ( (((a)->u8[0]) == 0xFE) && (((a)->u8[1]) == 0x80) ) - -/** - * \brief was addr (a) forged based on the mac address m - * a type is uip_ipaddr_t - * m type is uiplladdr_t - */ -#ifdef UIP_CONF_LL_802154 -#define uip_is_addr_mac_addr_based( a, m ) \ - ( \ - (((a)->u8[8]) == (((m)->addr[0]) ^ 0x02)) && \ - (((a)->u8[9]) == (m)->addr[1]) && \ - (((a)->u8[10]) == (m)->addr[2]) && \ - (((a)->u8[11]) == (m)->addr[3]) && \ - (((a)->u8[12]) == (m)->addr[4]) && \ - (((a)->u8[13]) == (m)->addr[5]) && \ - (((a)->u8[14]) == (m)->addr[6]) && \ - (((a)->u8[15]) == (m)->addr[7]) \ - ) -#else -#define uip_is_addr_mac_addr_based( a, m ) \ - ( \ - (((a)->u8[8]) == (((m)->addr[0]) | 0x02)) && \ - (((a)->u8[9]) == (m)->addr[1]) && \ - (((a)->u8[10]) == (m)->addr[2]) && \ - (((a)->u8[11]) == 0xff) && \ - (((a)->u8[12]) == 0xfe) && \ - (((a)->u8[13]) == (m)->addr[3]) && \ - (((a)->u8[14]) == (m)->addr[4]) && \ - (((a)->u8[15]) == (m)->addr[5]) \ - ) -#endif /*UIP_CONF_LL_802154*/ - -/** - * \brief is address a multicast address, see RFC 3513 - * a is of type uip_ipaddr_t* - * */ -#define uip_is_addr_mcast( a ) ( ((a)->u8[0]) == 0xFF ) - -/** - * \brief is group-id of multicast address a - * the all nodes group-id - */ -#define uip_is_mcast_group_id_all_nodes( a ) \ - ( \ - (((a)->u16[1]) == 0) && \ - (((a)->u16[2]) == 0) && \ - (((a)->u16[3]) == 0) && \ - (((a)->u16[4]) == 0) && \ - (((a)->u16[5]) == 0) && \ - (((a)->u16[6]) == 0) && \ - (((a)->u8[14]) == 0) && \ - (((a)->u8[15]) == 1) \ - ) - -/** - * \brief is group-id of multicast address a - * the all routers group-id - */ -#define uip_is_mcast_group_id_all_routers( a ) \ - ( \ - (((a)->u16[1]) == 0) && \ - (((a)->u16[2]) == 0) && \ - (((a)->u16[3]) == 0) && \ - (((a)->u16[4]) == 0) && \ - (((a)->u16[5]) == 0) && \ - (((a)->u16[6]) == 0) && \ - (((a)->u8[14]) == 0) && \ - (((a)->u8[15]) == 2) \ - ) -#endif /*UIP_CONF_IPV6*/ - -/** - * Calculate the Internet checksum over a buffer. - * - * The Internet checksum is the one's complement of the one's - * complement sum of all 16-bit words in the buffer. - * - * See RFC1071. - * - * \param buf A pointer to the buffer over which the checksum is to be - * computed. - * - * \param len The length of the buffer over which the checksum is to - * be computed. - * - * \return The Internet checksum of the buffer. - */ -u16_t uip_chksum( u16_t *buf, u16_t len ); - -/** - * Calculate the IP header checksum of the packet header in uip_buf. - * - * The IP header checksum is the Internet checksum of the 20 bytes of - * the IP header. - * - * \return The IP header checksum of the IP header in the uip_buf - * buffer. - */ -u16_t uip_ipchksum( void ); - -/** - * Calculate the TCP checksum of the packet in uip_buf and uip_appdata. - * - * The TCP checksum is the Internet checksum of data contents of the - * TCP segment, and a pseudo-header as defined in RFC793. - * - * \return The TCP checksum of the TCP segment in uip_buf and pointed - * to by uip_appdata. - */ -u16_t uip_tcpchksum( void ); - -/** - * Calculate the UDP checksum of the packet in uip_buf and uip_appdata. - * - * The UDP checksum is the Internet checksum of data contents of the - * UDP segment, and a pseudo-header as defined in RFC768. - * - * \return The UDP checksum of the UDP segment in uip_buf and pointed - * to by uip_appdata. - */ -u16_t uip_udpchksum( void ); - -/** - * Calculate the ICMP checksum of the packet in uip_buf. - * - * \return The ICMP checksum of the ICMP packet in uip_buf - */ -u16_t uip_icmp6chksum( void ); - -/* Events that can get posted to the uIP event queue. These are events -originating from the Ethernet interface or from a timer. */ -#define uipETHERNET_RX_EVENT 0x01UL -#define uipETHERNET_TX_EVENT 0x02UL -#define uipARP_TIMER_EVENT 0x04UL -#define uipPERIODIC_TIMER_EVENT 0x08UL -#define uipAPPLICATION_SEND_EVENT 0x10UL - - -#endif /* __UIP_H__ */ - -/** @} */ diff --git a/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/net/uip_arch.h b/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/net/uip_arch.h deleted file mode 100644 index 9ee37578c..000000000 --- a/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/net/uip_arch.h +++ /dev/null @@ -1,138 +0,0 @@ -/** - * \addtogroup uip - * {@ - */ - -/** - * \defgroup uiparch Architecture specific uIP functions - * @{ - * - * The functions in the architecture specific module implement the IP - * check sum and 32-bit additions. - * - * The IP checksum calculation is the most computationally expensive - * operation in the TCP/IP stack and it therefore pays off to - * implement this in efficient assembler. The purpose of the uip-arch - * module is to let the checksum functions to be implemented in - * architecture specific assembler. - * - */ - -/** - * \file - * Declarations of architecture specific functions. - * \author Adam Dunkels - */ - -/* - * Copyright (c) 2001, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: uip_arch.h,v 1.1 2006/06/17 22:41:19 adamdunkels Exp $ - * - */ - -#ifndef __UIP_ARCH_H__ -#define __UIP_ARCH_H__ - -#include "net/uip.h" - -/** - * Carry out a 32-bit addition. - * - * Because not all architectures for which uIP is intended has native - * 32-bit arithmetic, uIP uses an external C function for doing the - * required 32-bit additions in the TCP protocol processing. This - * function should add the two arguments and place the result in the - * global variable uip_acc32. - * - * \note The 32-bit integer pointed to by the op32 parameter and the - * result in the uip_acc32 variable are in network byte order (big - * endian). - * - * \param op32 A pointer to a 4-byte array representing a 32-bit - * integer in network byte order (big endian). - * - * \param op16 A 16-bit integer in host byte order. - */ -void uip_add32(u8_t *op32, u16_t op16); - -/** - * Calculate the Internet checksum over a buffer. - * - * The Internet checksum is the one's complement of the one's - * complement sum of all 16-bit words in the buffer. - * - * See RFC1071. - * - * \note This function is not called in the current version of uIP, - * but future versions might make use of it. - * - * \param buf A pointer to the buffer over which the checksum is to be - * computed. - * - * \param len The length of the buffer over which the checksum is to - * be computed. - * - * \return The Internet checksum of the buffer. - */ -u16_t uip_chksum(u16_t *buf, u16_t len); - -/** - * Calculate the IP header checksum of the packet header in uip_buf. - * - * The IP header checksum is the Internet checksum of the 20 bytes of - * the IP header. - * - * \return The IP header checksum of the IP header in the uip_buf - * buffer. - */ -u16_t uip_ipchksum(void); - -/** - * Calculate the TCP checksum of the packet in uip_buf and uip_appdata. - * - * The TCP checksum is the Internet checksum of data contents of the - * TCP segment, and a pseudo-header as defined in RFC793. - * - * \note The uip_appdata pointer that points to the packet data may - * point anywhere in memory, so it is not possible to simply calculate - * the Internet checksum of the contents of the uip_buf buffer. - * - * \return The TCP checksum of the TCP segment in uip_buf and pointed - * to by uip_appdata. - */ -u16_t uip_tcpchksum(void); - -u16_t uip_udpchksum(void); - -/** @} */ -/** @} */ - -#endif /* __UIP_ARCH_H__ */ diff --git a/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/net/uip_arp.h b/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/net/uip_arp.h deleted file mode 100644 index e04d35305..000000000 --- a/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/net/uip_arp.h +++ /dev/null @@ -1,149 +0,0 @@ -/** - * \addtogroup uip - * @{ - */ - -/** - * \addtogroup uiparp - * @{ - */ - -/** - * \file - * Macros and definitions for the ARP module. - * \author Adam Dunkels - */ - -/* - * Copyright (c) 2001-2003, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: uip_arp.h,v 1.2 2006/08/26 23:58:45 oliverschmidt Exp $ - * - */ -#ifndef __UIP_ARP_H__ -#define __UIP_ARP_H__ - -#include "net/uip.h" - -CCIF extern struct uip_eth_addr uip_ethaddr; - -/** - * The Ethernet header. - */ -#include "net/pack_struct_start.h" -struct uip_eth_hdr -{ - struct uip_eth_addr dest; - struct uip_eth_addr src; - u16_t type; -} - -#include "net/pack_struct_end.h" - -#define UIP_ETHTYPE_ARP 0x0806 -#define UIP_ETHTYPE_IP 0x0800 -#define UIP_ETHTYPE_IPV6 0x86dd - -/* The uip_arp_init() function must be called before any of the other - ARP functions. */ -void uip_arp_init( void ); - -/* The uip_arp_ipin() function should be called whenever an IP packet - arrives from the Ethernet. This function refreshes the ARP table or - inserts a new mapping if none exists. The function assumes that an - IP packet with an Ethernet header is present in the uip_buf buffer - and that the length of the packet is in the uip_len variable. */ - -/*void uip_arp_ipin(void);*/ -#define uip_arp_ipin() - -/* The uip_arp_arpin() should be called when an ARP packet is received - by the Ethernet driver. This function also assumes that the - Ethernet frame is present in the uip_buf buffer. When the - uip_arp_arpin() function returns, the contents of the uip_buf - buffer should be sent out on the Ethernet if the uip_len variable - is > 0. */ -void uip_arp_arpin( void ); - -/* The uip_arp_out() function should be called when an IP packet - should be sent out on the Ethernet. This function creates an - Ethernet header before the IP header in the uip_buf buffer. The - Ethernet header will have the correct Ethernet MAC destination - address filled in if an ARP table entry for the destination IP - address (or the IP address of the default router) is present. If no - such table entry is found, the IP packet is overwritten with an ARP - request and we rely on TCP to retransmit the packet that was - overwritten. In any case, the uip_len variable holds the length of - the Ethernet frame that should be transmitted. */ -void uip_arp_out( void ); - -/* The uip_arp_timer() function should be called every ten seconds. It - is responsible for flushing old entries in the ARP table. */ -void uip_arp_timer( void ); - -/** @} */ - -/** - * \addtogroup uipconffunc - * @{ - */ - -/** - * Specifiy the Ethernet MAC address. - * - * The ARP code needs to know the MAC address of the Ethernet card in - * order to be able to respond to ARP queries and to generate working - * Ethernet headers. - * - * \note This macro only specifies the Ethernet MAC address to the ARP - * code. It cannot be used to change the MAC address of the Ethernet - * card. - * - * \param eaddr A pointer to a struct uip_eth_addr containing the - * Ethernet MAC address of the Ethernet card. - * - * \hideinitializer - */ -#define uip_setethaddr( eaddr ) \ - do \ - { \ - uip_ethaddr.addr[0] = eaddr.addr[0]; \ - uip_ethaddr.addr[1] = eaddr.addr[1]; \ - uip_ethaddr.addr[2] = eaddr.addr[2]; \ - uip_ethaddr.addr[3] = eaddr.addr[3]; \ - uip_ethaddr.addr[4] = eaddr.addr[4]; \ - uip_ethaddr.addr[5] = eaddr.addr[5]; \ - } while( 0 ) - - /** @} */ -#endif /* __UIP_ARP_H__ */ - - /** @} */ - diff --git a/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/net/uipopt.h b/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/net/uipopt.h deleted file mode 100644 index ddf6a245a..000000000 --- a/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/net/uipopt.h +++ /dev/null @@ -1,695 +0,0 @@ -/** - * \addtogroup uip - * @{ - */ - -/** - * \defgroup uipopt Configuration options for uIP - * @{ - * - * uIP is configured using the per-project configuration file - * "uipopt.h". This file contains all compile-time options for uIP and - * should be tweaked to match each specific project. The uIP - * distribution contains a documented example "uipopt.h" that can be - * copied and modified for each project. - * - * \note Contiki does not use the uipopt.h file to configure uIP, but - * uses a per-port uip-conf.h file that should be edited instead. - */ - -/** - * \file - * Configuration options for uIP. - * \author Adam Dunkels - * - * This file is used for tweaking various configuration options for - * uIP. You should make a copy of this file into one of your project's - * directories instead of editing this example "uipopt.h" file that - * comes with the uIP distribution. - */ - -/* - * Copyright (c) 2001-2003, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: uipopt.h,v 1.11 2009/04/10 00:37:48 adamdunkels Exp $ - * - */ -#ifndef __UIPOPT_H__ -#define __UIPOPT_H__ - -#ifndef UIP_LITTLE_ENDIAN -#define UIP_LITTLE_ENDIAN 3412 -#endif /* UIP_LITTLE_ENDIAN */ -#ifndef UIP_BIG_ENDIAN -#define UIP_BIG_ENDIAN 1234 -#endif /* UIP_BIG_ENDIAN */ - -#include "uip-conf.h" -//_RB_#include "contiki-conf.h" - -/*------------------------------------------------------------------------------*/ - -/** - * \defgroup uipoptstaticconf Static configuration options - * @{ - * - * These configuration options can be used for setting the IP address - * settings statically, but only if UIP_FIXEDADDR is set to 1. The - * configuration options for a specific node includes IP address, - * netmask and default router as well as the Ethernet address. The - * netmask, default router and Ethernet address are applicable only - * if uIP should be run over Ethernet. - * - * This options are meaningful only for the IPv4 code. - * - * All of these should be changed to suit your project. - */ - -/** - * Determines if uIP should use a fixed IP address or not. - * - * If uIP should use a fixed IP address, the settings are set in the - * uipopt.h file. If not, the macros uip_sethostaddr(), - * uip_setdraddr() and uip_setnetmask() should be used instead. - * - * \hideinitializer - */ -#ifdef UIP_CONF_FIXEDADDR -#define UIP_FIXED_ADDR UIP_CONF_FIXEDADDR -#define UIP_FIXEDADDR 1 -#endif - -/** - * Ping IP address assignment. - * - * uIP uses a "ping" packets for setting its own IP address if this - * option is set. If so, uIP will start with an empty IP address and - * the destination IP address of the first incoming "ping" (ICMP echo) - * packet will be used for setting the hosts IP address. - * - * \note This works only if UIP_FIXEDADDR is 0. - * - * \hideinitializer - */ -#ifdef UIP_CONF_PINGADDRCONF -#define UIP_PINGADDRCONF UIP_CONF_PINGADDRCONF -#else /* UIP_CONF_PINGADDRCONF */ -#define UIP_PINGADDRCONF 0 -#endif /* UIP_CONF_PINGADDRCONF */ - -/** - * Specifies if the uIP ARP module should be compiled with a fixed - * Ethernet MAC address or not. - * - * If this configuration option is 0, the macro uip_setethaddr() can - * be used to specify the Ethernet address at run-time. - * - * \hideinitializer - */ -#define UIP_FIXEDETHADDR 0 - -/** @} */ - -/*------------------------------------------------------------------------------*/ - -/** - * \defgroup uipoptip IP configuration options - * @{ - * - */ - -/** - * The IP TTL (time to live) of IP packets sent by uIP. - * - * This should normally not be changed. - */ -#define UIP_TTL 64 - -/** - * The maximum time an IP fragment should wait in the reassembly - * buffer before it is dropped. - * - */ -#define UIP_REASS_MAXAGE 60 /*60s*/ - -/** - * Turn on support for IP packet reassembly. - * - * uIP supports reassembly of fragmented IP packets. This features - * requires an additional amount of RAM to hold the reassembly buffer - * and the reassembly code size is approximately 700 bytes. The - * reassembly buffer is of the same size as the uip_buf buffer - * (configured by UIP_BUFSIZE). - * - * \note IP packet reassembly is not heavily tested. - * - * \hideinitializer - */ -#ifdef UIP_CONF_REASSEMBLY -#define UIP_REASSEMBLY UIP_CONF_REASSEMBLY -#else /* UIP_CONF_REASSEMBLY */ -#define UIP_REASSEMBLY 0 -#endif /* UIP_CONF_REASSEMBLY */ - -/** @} */ - -/*------------------------------------------------------------------------------*/ - -/** - * \defgroup uipoptipv6 IPv6 configuration options - * @{ - * - */ - -/** The maximum transmission unit at the IP Layer*/ -#define UIP_LINK_MTU 1280 - -#ifndef UIP_CONF_IPV6 - -/** Do we use IPv6 or not (default: no) */ -#define UIP_CONF_IPV6 0 -#endif -#ifndef UIP_CONF_IPV6_QUEUE_PKT - -/** Do we do per %neighbor queuing during address resolution (default: no) */ -#define UIP_CONF_IPV6_QUEUE_PKT 0 -#endif -#ifndef UIP_CONF_IPV6_CHECKS - -/** Do we do IPv6 consistency checks (highly recommended, default: yes) */ -#define UIP_CONF_IPV6_CHECKS 1 -#endif -#ifndef UIP_CONF_IPV6_REASSEMBLY - -/** Do we do IPv6 fragmentation (default: no) */ -#define UIP_CONF_IPV6_REASSEMBLY 0 -#endif -#ifndef UIP_CONF_NETIF_MAX_ADDRESSES - -/** Default number of IPv6 addresses associated to the node's interface */ -#define UIP_CONF_NETIF_MAX_ADDRESSES 3 -#endif -#ifndef UIP_CONF_ND6_MAX_PREFIXES - -/** Default number of IPv6 prefixes associated to the node's interface */ -#define UIP_CONF_ND6_MAX_PREFIXES 3 -#endif -#ifndef UIP_CONF_ND6_MAX_NEIGHBORS - -/** Default number of neighbors that can be stored in the %neighbor cache */ -#define UIP_CONF_ND6_MAX_NEIGHBORS 4 -#endif -#ifndef UIP_CONF_ND6_MAX_DEFROUTERS - -/** Minimum number of default routers */ -#define UIP_CONF_ND6_MAX_DEFROUTERS 2 -#endif - -/** @} */ - -/*------------------------------------------------------------------------------*/ - -/** - * \defgroup uipoptudp UDP configuration options - * @{ - * - * \note The UDP support in uIP is still not entirely complete; there - * is no support for sending or receiving broadcast or multicast - * packets, but it works well enough to support a number of vital - * applications such as DNS queries, though - */ - -/** - * Toggles whether UDP support should be compiled in or not. - * - * \hideinitializer - */ -#ifdef UIP_CONF_UDP -#define UIP_UDP UIP_CONF_UDP -#else /* UIP_CONF_UDP */ -#define UIP_UDP 0 -#endif /* UIP_CONF_UDP */ - -/** - * Toggles if UDP checksums should be used or not. - * - * \note Support for UDP checksums is currently not included in uIP, - * so this option has no function. - * - * \hideinitializer - */ -#ifdef UIP_CONF_UDP_CHECKSUMS -#define UIP_UDP_CHECKSUMS UIP_CONF_UDP_CHECKSUMS -#else -#define UIP_UDP_CHECKSUMS 0 -#endif - -/** - * The maximum amount of concurrent UDP connections. - * - * \hideinitializer - */ -#ifdef UIP_CONF_UDP_CONNS -#define UIP_UDP_CONNS UIP_CONF_UDP_CONNS -#else /* UIP_CONF_UDP_CONNS */ -#define UIP_UDP_CONNS 10 -#endif /* UIP_CONF_UDP_CONNS */ - -/** - * The name of the function that should be called when UDP datagrams arrive. - * - * \hideinitializer - */ - -/** @} */ - -/*------------------------------------------------------------------------------*/ - -/** - * \defgroup uipopttcp TCP configuration options - * @{ - */ - -/** - * Toggles whether UDP support should be compiled in or not. - * - * \hideinitializer - */ -#ifdef UIP_CONF_TCP -#define UIP_TCP UIP_CONF_TCP -#else /* UIP_CONF_UDP */ -#define UIP_TCP 1 -#endif /* UIP_CONF_UDP */ - -/** - * Determines if support for opening connections from uIP should be - * compiled in. - * - * If the applications that are running on top of uIP for this project - * do not need to open outgoing TCP connections, this configuration - * option can be turned off to reduce the code size of uIP. - * - * \hideinitializer - */ -#ifndef UIP_CONF_ACTIVE_OPEN -#define UIP_ACTIVE_OPEN 1 -#else /* UIP_CONF_ACTIVE_OPEN */ -#define UIP_ACTIVE_OPEN UIP_CONF_ACTIVE_OPEN -#endif /* UIP_CONF_ACTIVE_OPEN */ - -/** - * The maximum number of simultaneously open TCP connections. - * - * Since the TCP connections are statically allocated, turning this - * configuration knob down results in less RAM used. Each TCP - * connection requires approximately 30 bytes of memory. - * - * \hideinitializer - */ -#ifndef UIP_CONF_MAX_CONNECTIONS -#define UIP_CONNS 10 -#else /* UIP_CONF_MAX_CONNECTIONS */ -#define UIP_CONNS UIP_CONF_MAX_CONNECTIONS -#endif /* UIP_CONF_MAX_CONNECTIONS */ - -/** - * The maximum number of simultaneously listening TCP ports. - * - * Each listening TCP port requires 2 bytes of memory. - * - * \hideinitializer - */ -#ifndef UIP_CONF_MAX_LISTENPORTS -#define UIP_LISTENPORTS 20 -#else /* UIP_CONF_MAX_LISTENPORTS */ -#define UIP_LISTENPORTS UIP_CONF_MAX_LISTENPORTS -#endif /* UIP_CONF_MAX_LISTENPORTS */ - -/** - * Determines if support for TCP urgent data notification should be - * compiled in. - * - * Urgent data (out-of-band data) is a rarely used TCP feature that - * very seldom would be required. - * - * \hideinitializer - */ -#define UIP_URGDATA 0 - -/** - * The initial retransmission timeout counted in timer pulses. - * - * This should not be changed. - */ -#define UIP_RTO 3 - -/** - * The maximum number of times a segment should be retransmitted - * before the connection should be aborted. - * - * This should not be changed. - */ -#define UIP_MAXRTX 8 - -/** - * The maximum number of times a SYN segment should be retransmitted - * before a connection request should be deemed to have been - * unsuccessful. - * - * This should not need to be changed. - */ -#define UIP_MAXSYNRTX 5 - -/** - * The TCP maximum segment size. - * - * This is should not be to set to more than - * UIP_BUFSIZE - UIP_LLH_LEN - UIP_TCPIP_HLEN. - */ -#ifdef UIP_CONF_TCP_MSS -#define UIP_TCP_MSS UIP_CONF_TCP_MSS -#else -#define UIP_TCP_MSS ( UIP_BUFSIZE - UIP_LLH_LEN - UIP_TCPIP_HLEN ) -#endif - -/** - * The size of the advertised receiver's window. - * - * Should be set low (i.e., to the size of the uip_buf buffer) if the - * application is slow to process incoming data, or high (32768 bytes) - * if the application processes data quickly. - * - * \hideinitializer - */ -#ifndef UIP_CONF_RECEIVE_WINDOW -#define UIP_RECEIVE_WINDOW UIP_TCP_MSS -#else -#define UIP_RECEIVE_WINDOW UIP_CONF_RECEIVE_WINDOW -#endif - -/** - * How long a connection should stay in the TIME_WAIT state. - * - * This configuration option has no real implication, and it should be - * left untouched. - */ -#define UIP_TIME_WAIT_TIMEOUT 120 - -/** @} */ - -/*------------------------------------------------------------------------------*/ - -/** - * \defgroup uipoptarp ARP configuration options - * @{ - */ - -/** - * The size of the ARP table. - * - * This option should be set to a larger value if this uIP node will - * have many connections from the local network. - * - * \hideinitializer - */ -#ifdef UIP_CONF_ARPTAB_SIZE -#define UIP_ARPTAB_SIZE UIP_CONF_ARPTAB_SIZE -#else -#define UIP_ARPTAB_SIZE 8 -#endif - -/** - * The maximum age of ARP table entries measured in 10ths of seconds. - * - * An UIP_ARP_MAXAGE of 120 corresponds to 20 minutes (BSD - * default). - */ -#define UIP_ARP_MAXAGE 120 - -/** @} */ - -/*------------------------------------------------------------------------------*/ - -/** - * \defgroup uipoptmac layer 2 options (for ipv6) - * @{ - */ -#define UIP_DEFAULT_PREFIX_LEN 64 - -/** @} */ - -/*------------------------------------------------------------------------------*/ - -/** - * \defgroup uipoptsics 6lowpan options (for ipv6) - * @{ - */ - -/** - * Timeout for packet reassembly at the 6lowpan layer - * (should be < 60s) - */ -#ifdef SICSLOWPAN_CONF_MAXAGE -#define SICSLOWPAN_REASS_MAXAGE SICSLOWPAN_CONF_MAXAGE -#else -#define SICSLOWPAN_REASS_MAXAGE 20 -#endif - -/** - * Do we compress the IP header or not (default: no) - */ -#ifndef SICSLOWPAN_CONF_COMPRESSION -#define SICSLOWPAN_CONF_COMPRESSION 0 -#endif - -/** - * If we use IPHC compression, how many address contexts do we support - */ -#ifndef SICSLOWPAN_CONF_MAX_ADDR_CONTEXTS -#define SICSLOWPAN_CONF_MAX_ADDR_CONTEXTS 1 -#endif - -/** - * Do we support 6lowpan fragmentation - */ -#ifndef SICSLOWPAN_CONF_FRAG -#define SICSLOWPAN_CONF_FRAG 0 -#endif - -/** @} */ - -/*------------------------------------------------------------------------------*/ - -/** - * \defgroup uipoptgeneral General configuration options - * @{ - */ - -/** - * The size of the uIP packet buffer. - * - * The uIP packet buffer should not be smaller than 60 bytes, and does - * not need to be larger than 1514 bytes. Lower size results in lower - * TCP throughput, larger size results in higher TCP throughput. - * - * \hideinitializer - */ -#ifndef UIP_CONF_BUFFER_SIZE -#define UIP_BUFSIZE UIP_LINK_MTU + UIP_LLH_LEN -#else /* UIP_CONF_BUFFER_SIZE */ -#define UIP_BUFSIZE UIP_CONF_BUFFER_SIZE -#endif /* UIP_CONF_BUFFER_SIZE */ - -/** - * Determines if statistics support should be compiled in. - * - * The statistics is useful for debugging and to show the user. - * - * \hideinitializer - */ -#ifndef UIP_CONF_STATISTICS -#define UIP_STATISTICS 0 -#else /* UIP_CONF_STATISTICS */ -#define UIP_STATISTICS UIP_CONF_STATISTICS -#endif /* UIP_CONF_STATISTICS */ - -/** - * Determines if logging of certain events should be compiled in. - * - * This is useful mostly for debugging. The function uip_log() - * must be implemented to suit the architecture of the project, if - * logging is turned on. - * - * \hideinitializer - */ -#ifndef UIP_CONF_LOGGING -#define UIP_LOGGING 0 -#else /* UIP_CONF_LOGGING */ -#define UIP_LOGGING UIP_CONF_LOGGING -#endif /* UIP_CONF_LOGGING */ - -/** - * Broadcast support. - * - * This flag configures IP broadcast support. This is useful only - * together with UDP. - * - * \hideinitializer - * - */ -#ifndef UIP_CONF_BROADCAST -#define UIP_BROADCAST 0 -#else /* UIP_CONF_BROADCAST */ -#define UIP_BROADCAST UIP_CONF_BROADCAST -#endif /* UIP_CONF_BROADCAST */ - -/** - * Print out a uIP log message. - * - * This function must be implemented by the module that uses uIP, and - * is called by uIP whenever a log message is generated. - */ -void uip_log( char *msg ); - -/** - * The link level header length. - * - * This is the offset into the uip_buf where the IP header can be - * found. For Ethernet, this should be set to 14. For SLIP, this - * should be set to 0. - * - * \note we probably won't use this constant for other link layers than - * ethernet as they have variable header length (this is due to variable - * number and type of address fields and to optional security features) - * E.g.: 802.15.4 -> 2 + (1/2*4/8) + 0/5/6/10/14 - * 802.11 -> 4 + (6*3/4) + 2 - * \hideinitializer - */ -#ifdef UIP_CONF_LLH_LEN -#define UIP_LLH_LEN UIP_CONF_LLH_LEN -#else /* UIP_LLH_LEN */ -#define UIP_LLH_LEN 14 -#endif /* UIP_CONF_LLH_LEN */ - -/** @} */ - -/*------------------------------------------------------------------------------*/ - -/** - * \defgroup uipoptcpu CPU architecture configuration - * @{ - * - * The CPU architecture configuration is where the endianess of the - * CPU on which uIP is to be run is specified. Most CPUs today are - * little endian, and the most notable exception are the Motorolas - * which are big endian. The BYTE_ORDER macro should be changed to - * reflect the CPU architecture on which uIP is to be run. - */ - -/** - * The byte order of the CPU architecture on which uIP is to be run. - * - * This option can be either UIP_BIG_ENDIAN (Motorola byte order) or - * UIP_LITTLE_ENDIAN (Intel byte order). - * - * \hideinitializer - */ -#ifdef UIP_CONF_BYTE_ORDER -#define UIP_BYTE_ORDER UIP_CONF_BYTE_ORDER -#else /* UIP_CONF_BYTE_ORDER */ -#define UIP_BYTE_ORDER UIP_LITTLE_ENDIAN -#endif /* UIP_CONF_BYTE_ORDER */ - -/** @} */ - -/*------------------------------------------------------------------------------*/ - -/** - * \defgroup uipoptapp Application specific configurations - * @{ - * - * An uIP application is implemented using a single application - * function that is called by uIP whenever a TCP/IP event occurs. The - * name of this function must be registered with uIP at compile time - * using the UIP_APPCALL definition. - * - * uIP applications can store the application state within the - * uip_conn structure by specifying the type of the application - * structure by typedef:ing the type uip_tcp_appstate_t and uip_udp_appstate_t. - * - * The file containing the definitions must be included in the - * uipopt.h file. - * - * The following example illustrates how this can look. - \code - - void httpd_appcall(void); - #define UIP_APPCALL httpd_appcall - - struct httpd_state { - u8_t state; - u16_t count; - char *dataptr; - char *script; - }; - typedef struct httpd_state uip_tcp_appstate_t - \endcode -*/ - -/** - * \var #define UIP_APPCALL - * - * The name of the application function that uIP should call in - * response to TCP/IP events. - * - */ - -/** - * \var typedef uip_tcp_appstate_t - * - * The type of the application state that is to be stored in the - * uip_conn structure. This usually is typedef:ed to a struct holding - * application state information. - */ - -/** - * \var typedef uip_udp_appstate_t - * - * The type of the application state that is to be stored in the - * uip_conn structure. This usually is typedef:ed to a struct holding - * application state information. - */ - -/** @} */ -#endif /* __UIPOPT_H__ */ - -/** @} */ - -/** @} */ diff --git a/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/psock.c b/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/psock.c deleted file mode 100644 index 1f224b6e1..000000000 --- a/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/psock.c +++ /dev/null @@ -1,338 +0,0 @@ -/* - * Copyright (c) 2004, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * Author: Adam Dunkels - * - * $Id: psock.c,v 1.2 2006/06/12 08:00:30 adam Exp $ - */ - -#include -#include - -#include "net/uipopt.h" -#include "net/psock.h" -#include "net/uip.h" - -#define STATE_NONE 0 -#define STATE_ACKED 1 -#define STATE_READ 2 -#define STATE_BLOCKED_NEWDATA 3 -#define STATE_BLOCKED_CLOSE 4 -#define STATE_BLOCKED_SEND 5 -#define STATE_DATA_SENT 6 - -/* - * Return value of the buffering functions that indicates that a - * buffer was not filled by incoming data. - * - */ -#define BUF_NOT_FULL 0 -#define BUF_NOT_FOUND 0 - -/* - * Return value of the buffering functions that indicates that a - * buffer was completely filled by incoming data. - * - */ -#define BUF_FULL 1 - -/* - * Return value of the buffering functions that indicates that an - * end-marker byte was found. - * - */ -#define BUF_FOUND 2 - -/*---------------------------------------------------------------------------*/ -static void -buf_setup(struct psock_buf *buf, - u8_t *bufptr, u16_t bufsize) -{ - buf->ptr = bufptr; - buf->left = bufsize; -} -/*---------------------------------------------------------------------------*/ -static u8_t -buf_bufdata(struct psock_buf *buf, u16_t len, - u8_t **dataptr, u16_t *datalen) -{ - ( void ) len; - if(*datalen < buf->left) { - memcpy(buf->ptr, *dataptr, *datalen); - buf->ptr += *datalen; - buf->left -= *datalen; - *dataptr += *datalen; - *datalen = 0; - return BUF_NOT_FULL; - } else if(*datalen == buf->left) { - memcpy(buf->ptr, *dataptr, *datalen); - buf->ptr += *datalen; - buf->left = 0; - *dataptr += *datalen; - *datalen = 0; - return BUF_FULL; - } else { - memcpy(buf->ptr, *dataptr, buf->left); - buf->ptr += buf->left; - *datalen -= buf->left; - *dataptr += buf->left; - buf->left = 0; - return BUF_FULL; - } -} -/*---------------------------------------------------------------------------*/ -static u8_t -buf_bufto(register struct psock_buf *buf, u8_t endmarker, - register u8_t **dataptr, register u16_t *datalen) -{ - u8_t c; - while(buf->left > 0 && *datalen > 0) { - c = *buf->ptr = **dataptr; - ++*dataptr; - ++buf->ptr; - --*datalen; - --buf->left; - - if(c == endmarker) { - return BUF_FOUND; - } - } - - if(*datalen == 0) { - return BUF_NOT_FOUND; - } - - while(*datalen > 0) { - c = **dataptr; - --*datalen; - ++*dataptr; - - if(c == endmarker) { - return BUF_FOUND | BUF_FULL; - } - } - - return BUF_FULL; -} -/*---------------------------------------------------------------------------*/ -static char -send_data(register struct psock *s) -{ - if(s->state != STATE_DATA_SENT || uip_rexmit()) { - if(s->sendlen > uip_mss()) { - uip_send(s->sendptr, uip_mss()); - } else { - uip_send(s->sendptr, s->sendlen); - } - s->state = STATE_DATA_SENT; - return 1; - } - return 0; -} -/*---------------------------------------------------------------------------*/ -static char -data_acked(register struct psock *s) -{ - if(s->state == STATE_DATA_SENT && uip_acked()) { - if(s->sendlen > uip_mss()) { - s->sendlen -= uip_mss(); - s->sendptr += uip_mss(); - } else { - s->sendptr += s->sendlen; - s->sendlen = 0; - } - s->state = STATE_ACKED; - return 1; - } - return 0; -} -/*---------------------------------------------------------------------------*/ -PT_THREAD(psock_send(register struct psock *s, const char *buf, - unsigned int len)) -{ - PT_BEGIN(&s->psockpt); - ( void ) PT_YIELD_FLAG; - /* If there is no data to send, we exit immediately. */ - if(len == 0) { - PT_EXIT(&s->psockpt); - } - - /* Save the length of and a pointer to the data that is to be - sent. */ - s->sendptr = (unsigned char*)buf; - s->sendlen = (unsigned short)len; - - s->state = STATE_NONE; - - /* We loop here until all data is sent. The s->sendlen variable is - updated by the data_sent() function. */ - while(s->sendlen > 0) { - - /* - * The condition for this PT_WAIT_UNTIL is a little tricky: the - * protothread will wait here until all data has been acknowledged - * (data_acked() returns true) and until all data has been sent - * (send_data() returns true). The two functions data_acked() and - * send_data() must be called in succession to ensure that all - * data is sent. Therefore the & operator is used instead of the - * && operator, which would cause only the data_acked() function - * to be called when it returns false. - */ - PT_WAIT_UNTIL(&s->psockpt, data_acked(s) & send_data(s)); - } - - s->state = STATE_NONE; - - PT_END(&s->psockpt); -} -/*---------------------------------------------------------------------------*/ -PT_THREAD(psock_generator_send(register struct psock *s, - unsigned short (*generate)(void *), void *arg)) -{ - PT_BEGIN(&s->psockpt); - ( void ) PT_YIELD_FLAG; - /* Ensure that there is a generator function to call. */ - if(generate == NULL) { - PT_EXIT(&s->psockpt); - } - - /* Call the generator function to generate the data in the - uip_appdata buffer. */ - s->sendlen = generate(arg); - s->sendptr = uip_appdata; - - s->state = STATE_NONE; - do { - /* Call the generator function again if we are called to perform a - retransmission. */ - if(uip_rexmit()) { - generate(arg); - } - /* Wait until all data is sent and acknowledged. */ - PT_WAIT_UNTIL(&s->psockpt, data_acked(s) & send_data(s)); - } while(s->sendlen > 0); - - s->state = STATE_NONE; - - PT_END(&s->psockpt); -} -/*---------------------------------------------------------------------------*/ -u16_t -psock_datalen(struct psock *psock) -{ - return psock->bufsize - psock->buf.left; -} -/*---------------------------------------------------------------------------*/ -char -psock_newdata(struct psock *s) -{ - if(s->readlen > 0) { - /* There is data in the uip_appdata buffer that has not yet been - read with the PSOCK_READ functions. */ - return 1; - } else if(s->state == STATE_READ) { - /* All data in uip_appdata buffer already consumed. */ - s->state = STATE_BLOCKED_NEWDATA; - return 0; - } else if(uip_newdata()) { - /* There is new data that has not been consumed. */ - return 1; - } else { - /* There is no new data. */ - return 0; - } -} -/*---------------------------------------------------------------------------*/ -PT_THREAD(psock_readto(register struct psock *psock, unsigned char c)) -{ - PT_BEGIN(&psock->psockpt); - ( void ) PT_YIELD_FLAG; - buf_setup(&psock->buf, (unsigned char*)psock->bufptr, psock->bufsize); - - /* XXX: Should add buf_checkmarker() before do{} loop, if - incoming data has been handled while waiting for a write. */ - - do { - if(psock->readlen == 0) { - PT_WAIT_UNTIL(&psock->psockpt, psock_newdata(psock)); - psock->state = STATE_READ; - psock->readptr = (u8_t *)uip_appdata; - psock->readlen = uip_datalen(); - } - } while((buf_bufto(&psock->buf, c, - &psock->readptr, - &psock->readlen) & BUF_FOUND) == 0); - - if(psock_datalen(psock) == 0) { - psock->state = STATE_NONE; - PT_RESTART(&psock->psockpt); - } - PT_END(&psock->psockpt); -} -/*---------------------------------------------------------------------------*/ -PT_THREAD(psock_readbuf(register struct psock *psock)) -{ - PT_BEGIN(&psock->psockpt); - ( void ) PT_YIELD_FLAG; - buf_setup(&psock->buf, (unsigned char * ) psock->bufptr, psock->bufsize); - - /* XXX: Should add buf_checkmarker() before do{} loop, if - incoming data has been handled while waiting for a write. */ - - do { - if(psock->readlen == 0) { - PT_WAIT_UNTIL(&psock->psockpt, psock_newdata(psock)); - psock->state = STATE_READ; - psock->readptr = (u8_t *)uip_appdata; - psock->readlen = uip_datalen(); - } - } while(buf_bufdata(&psock->buf, psock->bufsize, - &psock->readptr, - &psock->readlen) != BUF_FULL); - - if(psock_datalen(psock) == 0) { - psock->state = STATE_NONE; - PT_RESTART(&psock->psockpt); - } - PT_END(&psock->psockpt); -} -/*---------------------------------------------------------------------------*/ -void -psock_init(register struct psock *psock, char *buffer, unsigned int buffersize) -{ - psock->state = STATE_NONE; - psock->readlen = 0; - psock->bufptr = buffer; - psock->bufsize = buffersize; - buf_setup(&psock->buf, (unsigned char*) buffer, buffersize); - PT_INIT(&psock->pt); - PT_INIT(&psock->psockpt); -} -/*---------------------------------------------------------------------------*/ diff --git a/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/sys/clock.h b/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/sys/clock.h deleted file mode 100644 index 9f9358368..000000000 --- a/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/sys/clock.h +++ /dev/null @@ -1,115 +0,0 @@ -/** \addtogroup sys - * @{ - */ - -/** - * \defgroup clock Clock library - * - * The clock library is the interface between Contiki and the platform - * specific clock functionality. The clock library performs a single - * function: measuring time. Additionally, the clock library provides - * a macro, CLOCK_SECOND, which corresponds to one second of system - * time. - * - * \note The clock library need in many cases not be used - * directly. Rather, the \ref timer "timer library" or the \ref etimer - * "event timers" should be used. - * - * \sa \ref timer "Timer library" - * \sa \ref etimer "Event timers" - * - * @{ - */ - -/* - * Copyright (c) 2004, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the Contiki operating system. - * - * Author: Adam Dunkels - * - * $Id: clock.h,v 1.11 2009/01/24 15:20:11 adamdunkels Exp $ - */ -#ifndef __CLOCK_H__ -#define __CLOCK_H__ - -#include "net/clock-arch.h" - -//_RB_#include "contiki-conf.h" -#if 0 /* XXX problems with signedness and use in timer_expired(). #if:ed it out for now. */ - -/** - * Check if a clock time value is less than another clock time value. - * - * This macro checks if a clock time value is less than another clock - * time value. This macro is needed to correctly handle wrap-around of - * clock time values. - * - */ -#define CLOCK_LT( a, b ) ( (clock_time_t) ((a) - (b)) < ((clock_time_t) (~((clock_time_t) 0)) >> 1) ) -#endif /* 0 */ - -/** - * Initialize the clock library. - * - * This function initializes the clock library and should be called - * from the main() function of the system. - * - */ -void clock_init( void ); - -/** - * Get the current clock time. - * - * This function returns the current system clock time. - * - * \return The current clock time, measured in system ticks. - */ -CCIF clock_time_t clock_time( void ); - -void clock_delay( unsigned int ); - -/** - * A second, measured in system clock time. - * - * \hideinitializer - */ -#ifdef CLOCK_CONF_SECOND -#define CLOCK_SECOND CLOCK_CONF_SECOND -#else -#define CLOCK_SECOND ( clock_time_t ) 32 -#endif -int clock_fine_max( void ); -unsigned short clock_fine( void ); - -CCIF unsigned long clock_seconds( void ); -#endif /* __CLOCK_H__ */ - -/** @} */ - -/** @} */ diff --git a/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/sys/pt.h b/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/sys/pt.h deleted file mode 100644 index b0b9408c9..000000000 --- a/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/sys/pt.h +++ /dev/null @@ -1,335 +0,0 @@ -/* - * Copyright (c) 2004-2005, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the Contiki operating system. - * - * Author: Adam Dunkels - * - * $Id: pt.h,v 1.3 2008/10/14 12:46:39 nvt-se Exp $ - */ - -/** - * \addtogroup pt - * @{ - */ - -/** - * \file - * Protothreads implementation. - * \author - * Adam Dunkels - * - */ -#ifndef __PT_H__ -#define __PT_H__ - -#include "sys/lc.h" - -struct pt -{ - lc_t lc; -}; - -#define PT_WAITING 0 -#define PT_YIELDED 1 -#define PT_EXITED 2 -#define PT_ENDED 3 - -/** - * \name Initialization - * @{ - */ - -/** - * Initialize a protothread. - * - * Initializes a protothread. Initialization must be done prior to - * starting to execute the protothread. - * - * \param pt A pointer to the protothread control structure. - * - * \sa PT_SPAWN() - * - * \hideinitializer - */ -#define PT_INIT( pt ) LC_INIT( (pt)->lc ) - -/** @} */ - -/** - * \name Declaration and definition - * @{ - */ - -/** - * Declaration of a protothread. - * - * This macro is used to declare a protothread. All protothreads must - * be declared with this macro. - * - * \param name_args The name and arguments of the C function - * implementing the protothread. - * - * \hideinitializer - */ -#define PT_THREAD( name_args ) char name_args - -/** - * Declare the start of a protothread inside the C function - * implementing the protothread. - * - * This macro is used to declare the starting point of a - * protothread. It should be placed at the start of the function in - * which the protothread runs. All C statements above the PT_BEGIN() - * invokation will be executed each time the protothread is scheduled. - * - * \param pt A pointer to the protothread control structure. - * - * \hideinitializer - */ -#define PT_BEGIN( pt ) \ - { \ - char PT_YIELD_FLAG = 1; \ - LC_RESUME( (pt)->lc ) - -/** - * Declare the end of a protothread. - * - * This macro is used for declaring that a protothread ends. It must - * always be used together with a matching PT_BEGIN() macro. - * - * \param pt A pointer to the protothread control structure. - * - * \hideinitializer - */ -#define PT_END( pt ) \ - LC_END( (pt)->lc ); \ - PT_YIELD_FLAG = 0; \ - PT_INIT( pt ); \ - return PT_ENDED; \ -} - -/** @} */ - -/** - * \name Blocked wait - * @{ - */ - -/** - * Block and wait until condition is true. - * - * This macro blocks the protothread until the specified condition is - * true. - * - * \param pt A pointer to the protothread control structure. - * \param condition The condition. - * - * \hideinitializer - */ -#define PT_WAIT_UNTIL( pt, condition ) \ - do \ - { \ - LC_SET( (pt)->lc ); \ - if( !(condition) ) \ - { \ - return PT_WAITING; \ - } \ - } while( 0 ) - -/** - * Block and wait while condition is true. - * - * This function blocks and waits while condition is true. See - * PT_WAIT_UNTIL(). - * - * \param pt A pointer to the protothread control structure. - * \param cond The condition. - * - * \hideinitializer - */ -#define PT_WAIT_WHILE( pt, cond ) PT_WAIT_UNTIL( (pt), !(cond) ) - /** @} */ - - /** - * \name Hierarchical protothreads - * @{ - */ - -/** - * Block and wait until a child protothread completes. - * - * This macro schedules a child protothread. The current protothread - * will block until the child protothread completes. - * - * \note The child protothread must be manually initialized with the - * PT_INIT() function before this function is used. - * - * \param pt A pointer to the protothread control structure. - * \param thread The child protothread with arguments - * - * \sa PT_SPAWN() - * - * \hideinitializer - */ -#define PT_WAIT_THREAD( pt, thread ) PT_WAIT_WHILE( (pt), PT_SCHEDULE(thread) ) - -/** - * Spawn a child protothread and wait until it exits. - * - * This macro spawns a child protothread and waits until it exits. The - * macro can only be used within a protothread. - * - * \param pt A pointer to the protothread control structure. - * \param child A pointer to the child protothread's control structure. - * \param thread The child protothread with arguments - * - * \hideinitializer - */ -#define PT_SPAWN( pt, child, thread ) \ - do \ - { \ - PT_INIT( (child) ); \ - PT_WAIT_THREAD( (pt), (thread) ); \ - } while( 0 ) - - /** @} */ - - /** - * \name Exiting and restarting - * @{ - */ - -/** - * Restart the protothread. - * - * This macro will block and cause the running protothread to restart - * its execution at the place of the PT_BEGIN() call. - * - * \param pt A pointer to the protothread control structure. - * - * \hideinitializer - */ -#define PT_RESTART( pt ) \ - do \ - { \ - PT_INIT( pt ); \ - return PT_WAITING; \ - } while( 0 ) - -/** - * Exit the protothread. - * - * This macro causes the protothread to exit. If the protothread was - * spawned by another protothread, the parent protothread will become - * unblocked and can continue to run. - * - * \param pt A pointer to the protothread control structure. - * - * \hideinitializer - */ -#define PT_EXIT( pt ) \ - do \ - { \ - PT_INIT( pt ); \ - return PT_EXITED; \ - } while( 0 ) - /** @} */ - - /** - * \name Calling a protothread - * @{ - */ - -/** - * Schedule a protothread. - * - * This function schedules a protothread. The return value of the - * function is non-zero if the protothread is running or zero if the - * protothread has exited. - * - * \param f The call to the C function implementing the protothread to - * be scheduled - * - * \hideinitializer - */ -#define PT_SCHEDULE( f ) ( (f) < PT_EXITED ) - /** @} */ - - /** - * \name Yielding from a protothread - * @{ - */ - -/** - * Yield from the current protothread. - * - * This function will yield the protothread, thereby allowing other - * processing to take place in the system. - * - * \param pt A pointer to the protothread control structure. - * - * \hideinitializer - */ -#define PT_YIELD( pt ) \ - do \ - { \ - PT_YIELD_FLAG = 0; \ - LC_SET( (pt)->lc ); \ - if( PT_YIELD_FLAG == 0 ) \ - { \ - return PT_YIELDED; \ - } \ - } while( 0 ) - -/** - * \brief Yield from the protothread until a condition occurs. - * \param pt A pointer to the protothread control structure. - * \param cond The condition. - * - * This function will yield the protothread, until the - * specified condition evaluates to true. - * - * - * \hideinitializer - */ -#define PT_YIELD_UNTIL( pt, cond ) \ - do \ - { \ - PT_YIELD_FLAG = 0; \ - LC_SET( (pt)->lc ); \ - if( (PT_YIELD_FLAG == 0) || !(cond) ) \ - { \ - return PT_YIELDED; \ - } \ - } while( 0 ) - /** @} */ -#endif /* __PT_H__ */ - - /** @} */ - \ No newline at end of file diff --git a/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/sys/timer.h b/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/sys/timer.h deleted file mode 100644 index 1d87e7efd..000000000 --- a/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/sys/timer.h +++ /dev/null @@ -1,101 +0,0 @@ -/** \addtogroup sys - * @{ */ - -/** - * \defgroup timer Timer library - * - * The Contiki kernel does not provide support for timed - * events. Rather, an application that wants to use timers needs to - * explicitly use the timer library. - * - * The timer library provides functions for setting, resetting and - * restarting timers, and for checking if a timer has expired. An - * application must "manually" check if its timers have expired; this - * is not done automatically. - * - * A timer is declared as a \c struct \c timer and all access to the - * timer is made by a pointer to the declared timer. - * - * \note The timer library is not able to post events when a timer - * expires. The \ref etimer "Event timers" should be used for this - * purpose. - * - * \note The timer library uses the \ref clock "Clock library" to - * measure time. Intervals should be specified in the format used by - * the clock library. - * - * \sa \ref etimer "Event timers" - * - * @{ - */ - -/** - * \file - * Timer library header file. - * \author - * Adam Dunkels - */ - -/* - * Copyright (c) 2004, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the Contiki operating system. - * - * Author: Adam Dunkels - * - * $Id: timer.h,v 1.2 2008/09/21 08:58:05 adamdunkels Exp $ - */ -#ifndef __TIMER_H__ -#define __TIMER_H__ - -#include "sys/clock.h" - -/** - * A timer. - * - * This structure is used for declaring a timer. The timer must be set - * with timer_set() before it can be used. - * - * \hideinitializer - */ -struct timer -{ - clock_time_t start; - clock_time_t interval; -}; - -void timer_set( struct timer *t, clock_time_t interval ); -void timer_reset( struct timer *t ); -void timer_restart( struct timer *t ); -int timer_expired( struct timer *t ); -clock_time_t timer_remaining( struct timer *t ); -#endif /* __TIMER_H__ */ - -/** @} */ - -/** @} */ diff --git a/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/timer.c b/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/timer.c deleted file mode 100644 index e520391d6..000000000 --- a/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/timer.c +++ /dev/null @@ -1,151 +0,0 @@ -/** - * \addtogroup timer - * @{ - */ - -/** - * \file - * Timer library implementation. - * \author - * Adam Dunkels - */ - -/* - * Copyright (c) 2004, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the Contiki operating system. - * - * Author: Adam Dunkels - * - * $Id: timer.c,v 1.5 2009/01/24 15:20:11 adamdunkels Exp $ - */ - -//_RB_#include "contiki-conf.h" -#include "uip-conf.h" -#include "net/clock-arch.h" -#include "sys/clock.h" -#include "sys/timer.h" - -/*---------------------------------------------------------------------------*/ - -/** - * Set a timer. - * - * This function is used to set a timer for a time sometime in the - * future. The function timer_expired() will evaluate to true after - * the timer has expired. - * - * \param t A pointer to the timer - * \param interval The interval before the timer expires. - * - */ -void timer_set( struct timer *t, clock_time_t interval ) -{ - t->interval = interval; - t->start = clock_time(); -} - -/*---------------------------------------------------------------------------*/ - -/** - * Reset the timer with the same interval. - * - * This function resets the timer with the same interval that was - * given to the timer_set() function. The start point of the interval - * is the exact time that the timer last expired. Therefore, this - * function will cause the timer to be stable over time, unlike the - * timer_restart() function. - * - * \param t A pointer to the timer. - * - * \sa timer_restart() - */ -void timer_reset( struct timer *t ) -{ - t->start += t->interval; -} - -/*---------------------------------------------------------------------------*/ - -/** - * Restart the timer from the current point in time - * - * This function restarts a timer with the same interval that was - * given to the timer_set() function. The timer will start at the - * current time. - * - * \note A periodic timer will drift if this function is used to reset - * it. For preioric timers, use the timer_reset() function instead. - * - * \param t A pointer to the timer. - * - * \sa timer_reset() - */ -void timer_restart( struct timer *t ) -{ - t->start = clock_time(); -} - -/*---------------------------------------------------------------------------*/ - -/** - * Check if a timer has expired. - * - * This function tests if a timer has expired and returns true or - * false depending on its status. - * - * \param t A pointer to the timer - * - * \return Non-zero if the timer has expired, zero otherwise. - * - */ -int timer_expired( struct timer *t ) -{ - return( clock_time_t ) ( clock_time() - t->start ) >= ( clock_time_t ) t->interval; -} - -/*---------------------------------------------------------------------------*/ - -/** - * The time until the timer expires - * - * This function returns the time until the timer expires. - * - * \param t A pointer to the timer - * - * \return The time until the timer expires - * - */ -clock_time_t timer_remaining( struct timer *t ) -{ - return t->start + t->interval - clock_time(); -} - -/*---------------------------------------------------------------------------*/ - -/** @} */ diff --git a/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/uip.c b/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/uip.c deleted file mode 100644 index 78c67134c..000000000 --- a/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/uip.c +++ /dev/null @@ -1,2143 +0,0 @@ -//#define DEBUG_PRINTF( ... ) /*printf(__VA_ARGS__)*/ - -/** - * \addtogroup uip - * @{ - */ - -/** - * \file - * The uIP TCP/IP stack code. - * \author Adam Dunkels - */ - -/* - * Copyright (c) 2001-2003, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: uip.c,v 1.15 2008/10/15 08:08:32 adamdunkels Exp $ - * - */ - -/* - * uIP is a small implementation of the IP, UDP and TCP protocols (as - * well as some basic ICMP stuff). The implementation couples the IP, - * UDP, TCP and the application layers very tightly. To keep the size - * of the compiled code down, this code frequently uses the goto - * statement. While it would be possible to break the uip_process() - * function into many smaller functions, this would increase the code - * size because of the overhead of parameter passing and the fact that - * the optimier would not be as efficient. - * - * The principle is that we have a small buffer, called the uip_buf, - * in which the device driver puts an incoming packet. The TCP/IP - * stack parses the headers in the packet, and calls the - * application. If the remote host has sent data to the application, - * this data is present in the uip_buf and the application read the - * data from there. It is up to the application to put this data into - * a byte stream if needed. The application will not be fed with data - * that is out of sequence. - * - * If the application whishes to send data to the peer, it should put - * its data into the uip_buf. The uip_appdata pointer points to the - * first available byte. The TCP/IP stack will calculate the - * checksums, and fill in the necessary header fields and finally send - * the packet back to the peer. -*/ -#include "net/uip.h" -#include "net/uipopt.h" -#include "net/uip_arp.h" -#include "net/uip_arch.h" - -/* If UIP_CONF_IPV6 is defined, we compile the uip6.c file instead of this one. -Therefore this #ifndef removes the entire compilation output of the uip.c file */ -#if !UIP_CONF_IPV6 - -#if UIP_CONF_IPV6 - #include "net/uip-neighbor.h" -#endif /* UIP_CONF_IPV6 */ - -#include - -/*---------------------------------------------------------------------------*/ - -/* Variable definitions. */ - -/* The IP address of this host. If it is defined to be fixed (by setting -UIP_FIXEDADDR to 1 in uipopt.h), the address is set here. Otherwise, the address */ -#if UIP_FIXEDADDR > 0 - const uip_ipaddr_t uip_hostaddr = { UIP_IPADDR0, UIP_IPADDR1, UIP_IPADDR2, UIP_IPADDR3 }; - const uip_ipaddr_t uip_draddr = { UIP_DRIPADDR0, UIP_DRIPADDR1, UIP_DRIPADDR2, UIP_DRIPADDR3 }; - const uip_ipaddr_t uip_netmask = { UIP_NETMASK0, UIP_NETMASK1, UIP_NETMASK2, UIP_NETMASK3 }; -#else - uip_ipaddr_t uip_hostaddr, uip_draddr, uip_netmask; -#endif /* UIP_FIXEDADDR */ - -const uip_ipaddr_t uip_broadcast_addr = -#if UIP_CONF_IPV6 - { { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff } }; -#else /* UIP_CONF_IPV6 */ - { { 0xff, 0xff, 0xff, 0xff } }; -#endif /* UIP_CONF_IPV6 */ - -const uip_ipaddr_t uip_all_zeroes_addr = { { 0x0, /* rest is 0 */ } }; - -#if UIP_FIXEDETHADDR - const struct uip_eth_addr uip_ethaddr = { { UIP_ETHADDR0, UIP_ETHADDR1, UIP_ETHADDR2, UIP_ETHADDR3, UIP_ETHADDR4, UIP_ETHADDR5 } }; -#else - struct uip_eth_addr uip_ethaddr = { { 0, 0, 0, 0, 0, 0 } }; -#endif - -#ifndef UIP_CONF_EXTERNAL_BUFFER - /* The packet buffer that contains incoming packets. */ - u8_t uip_buf[ UIP_BUFSIZE + 2 ]; -#endif /* UIP_CONF_EXTERNAL_BUFFER */ - -/* The uip_appdata pointer points to application data. */ -void *uip_appdata; - -/* The uip_appdata pointer points to the application data which is to be sent. */ -void *uip_sappdata; - -#if UIP_URGDATA > 0 - /* The uip_urgdata pointer points to urgent data (out-of-band data), if - present. */ - void *uip_urgdata; - u16_t uip_urglen, uip_surglen; -#endif /* UIP_URGDATA > 0 */ - -/* The uip_len is either 8 or 16 bits, depending on the maximum packet size. */ -u16_t uip_len, uip_slen; - -/* The uip_flags variable is used for communication between the TCP/IP stack -and the application program. */ -u8_t uip_flags; - -/* uip_conn always points to the current connection. */ -struct uip_conn *uip_conn; -struct uip_conn uip_conns[ UIP_CONNS ]; - -/* The uip_conns array holds all TCP connections. */ -u16_t uip_listenports[UIP_LISTENPORTS]; - -/* The uip_listenports list all currently listning ports. */ -#if UIP_UDP - struct uip_udp_conn *uip_udp_conn; - struct uip_udp_conn uip_udp_conns[UIP_UDP_CONNS]; -#endif /* UIP_UDP */ - -/* Ths ipid variable is an increasing number that is used for the IP ID field. */ -static u16_t ipid; - -void uip_setipid( u16_t id ) -{ - ipid = id; -} - -/* The iss variable is used for the TCP initial sequence number. */ -static u8_t iss[ 4 ]; - -#if UIP_ACTIVE_OPEN - /* Keeps track of the last port used for a new connection. */ - static u16_t lastport; -#endif /* UIP_ACTIVE_OPEN */ - -/* Temporary variables. */ -u8_t uip_acc32[ 4 ]; -static u8_t c, opt; -static u16_t tmp16; - -/* Structures and definitions. */ -#define TCP_FIN 0x01 -#define TCP_SYN 0x02 -#define TCP_RST 0x04 -#define TCP_PSH 0x08 -#define TCP_ACK 0x10 -#define TCP_URG 0x20 -#define TCP_CTL 0x3f - -#define TCP_OPT_END 0 /* End of TCP options list */ -#define TCP_OPT_NOOP 1 /* "No-operation" TCP option */ -#define TCP_OPT_MSS 2 /* Maximum segment size TCP option */ - -#define TCP_OPT_MSS_LEN 4 /* Length of TCP MSS option. */ - -#define ICMP_ECHO_REPLY 0 -#define ICMP_ECHO 8 - -#define ICMP_DEST_UNREACHABLE 3 -#define ICMP_PORT_UNREACHABLE 3 - -#define ICMP6_ECHO_REPLY 129 -#define ICMP6_ECHO 128 -#define ICMP6_NEIGHBOR_SOLICITATION 135 -#define ICMP6_NEIGHBOR_ADVERTISEMENT 136 - -#define ICMP6_FLAG_S ( 1 << 6 ) -#define ICMP6_OPTION_SOURCE_LINK_ADDRESS 1 -#define ICMP6_OPTION_TARGET_LINK_ADDRESS 2 - -/* Macros. */ -#define BUF ( ( struct uip_tcpip_hdr * ) &uip_buf[UIP_LLH_LEN] ) -#define FBUF ( ( struct uip_tcpip_hdr * ) &uip_reassbuf[0] ) -#define ICMPBUF ( ( struct uip_icmpip_hdr * ) &uip_buf[UIP_LLH_LEN] ) -#define UDPBUF ( ( struct uip_udpip_hdr * ) &uip_buf[UIP_LLH_LEN] ) - -#if UIP_STATISTICS == 1 - struct uip_stats uip_stat; - #define UIP_STAT( s ) s -#else - #define UIP_STAT( s ) -#endif /* UIP_STATISTICS == 1 */ - -#if UIP_LOGGING == 1 - #include - void uip_log( char *msg ); - #define UIP_LOG( m ) uip_log( m ) -#else - #define UIP_LOG( m ) -#endif /* UIP_LOGGING == 1 */ - -#if !UIP_ARCH_ADD32 - void uip_add32( u8_t *op32, u16_t op16 ) - { - uip_acc32[3] = op32[3] + ( op16 & 0xff ); - uip_acc32[2] = op32[2] + ( op16 >> 8 ); - uip_acc32[1] = op32[1]; - uip_acc32[0] = op32[0]; - - if( uip_acc32[2] < (op16 >> 8) ) - { - ++uip_acc32[1]; - if( uip_acc32[1] == 0 ) - { - ++uip_acc32[0]; - } - } - - if( uip_acc32[3] < (op16 & 0xff) ) - { - ++uip_acc32[2]; - if( uip_acc32[2] == 0 ) - { - ++uip_acc32[1]; - if( uip_acc32[1] == 0 ) - { - ++uip_acc32[0]; - } - } - } - } -/*---------------------------------------------------------------------------*/ -#endif /* UIP_ARCH_ADD32 */ - -#if !UIP_ARCH_CHKSUM - - static u16_t chksum( u16_t sum, const u8_t *data, u16_t len ) - { - u16_t t; - const u8_t *dataptr; - const u8_t *last_byte; - - dataptr = data; - last_byte = data + len - 1; - - while( dataptr < last_byte ) - { - /* At least two more bytes */ - t = ( dataptr[ 0 ] << 8 ) + dataptr[ 1 ]; - sum += t; - if( sum < t ) - { - sum++; /* carry */ - } - - dataptr += 2; - } - - if( dataptr == last_byte ) - { - t = ( dataptr[ 0 ] << 8 ) + 0; - sum += t; - if( sum < t ) - { - sum++; /* carry */ - } - } - - /* Return sum in host byte order. */ - return sum; - } - /*---------------------------------------------------------------------------*/ - - u16_t uip_chksum( u16_t *data, u16_t len ) - { - return htons( chksum( 0, ( u8_t * ) data, len ) ); - } - /*---------------------------------------------------------------------------*/ - - #ifndef UIP_ARCH_IPCHKSUM - u16_t uip_ipchksum( void ) - { - u16_t sum; - - sum = chksum( 0, &uip_buf[UIP_LLH_LEN], UIP_IPH_LEN ); - - //DEBUG_PRINTF( "uip_ipchksum: sum 0x%04x\n", sum ); - return( sum == 0 ) ? 0xffff : htons( sum ); - } - #endif - /*---------------------------------------------------------------------------*/ - - static u16_t upper_layer_chksum( u8_t proto ) - { - u16_t upper_layer_len; - u16_t sum; - - #if UIP_CONF_IPV6 - upper_layer_len = ( ((u16_t) (BUF->len[ 0 ]) << 8) + BUF->len[ 1 ] ); - #else /* UIP_CONF_IPV6 */ - upper_layer_len = ( ((u16_t) (BUF->len[ 0 ]) << 8) + BUF->len[ 1 ] ) - UIP_IPH_LEN; - #endif /* UIP_CONF_IPV6 */ - - /* First sum pseudoheader. */ - - /* IP protocol and length fields. This addition cannot carry. */ - sum = upper_layer_len + proto; - - /* Sum IP source and destination addresses. */ - sum = chksum( sum, ( u8_t * ) &BUF->srcipaddr, 2 * sizeof(uip_ipaddr_t) ); - - /* Sum TCP header and data. */ - sum = chksum( sum, &uip_buf[UIP_IPH_LEN + UIP_LLH_LEN], upper_layer_len ); - - return( sum == 0 ) ? 0xffff : htons( sum ); - } - /*---------------------------------------------------------------------------*/ - - #if UIP_CONF_IPV6 - u16_t uip_icmp6chksum( void ) - { - return upper_layer_chksum( UIP_PROTO_ICMP6 ); - } - #endif /* UIP_CONF_IPV6 */ - /*---------------------------------------------------------------------------*/ - - u16_t uip_tcpchksum( void ) - { - return upper_layer_chksum( UIP_PROTO_TCP ); - } - /*---------------------------------------------------------------------------*/ - - #if UIP_UDP_CHECKSUMS - u16_t uip_udpchksum( void ) - { - return upper_layer_chksum( UIP_PROTO_UDP ); - } - #endif /* UIP_UDP_CHECKSUMS */ - -#endif /* UIP_ARCH_CHKSUM */ -/*---------------------------------------------------------------------------*/ - -void uip_init( void ) -{ - for( c = 0; c < UIP_LISTENPORTS; ++c ) - { - uip_listenports[ c ] = 0; - } - - for( c = 0; c < UIP_CONNS; ++c ) - { - uip_conns[ c ].tcpstateflags = UIP_CLOSED; - } - - #if UIP_ACTIVE_OPEN - lastport = 1024; - #endif /* UIP_ACTIVE_OPEN */ - - #if UIP_UDP - for( c = 0; c < UIP_UDP_CONNS; ++c ) - { - uip_udp_conns[ c ].lport = 0; - } - #endif /* UIP_UDP */ - - /* IPv4 initialization. */ - #if UIP_FIXEDADDR == 0 - /* uip_hostaddr[ 0 ] = uip_hostaddr[ 1 ] = 0;*/ - #endif /* UIP_FIXEDADDR */ -} -/*---------------------------------------------------------------------------*/ - -#if UIP_ACTIVE_OPEN - struct uip_conn *uip_connect( uip_ipaddr_t *ripaddr, u16_t rport ) - { - register struct uip_conn *conn, *cconn; - - /* Find an unused local port. */ - again: - ++lastport; - - if( lastport >= 32000 ) - { - lastport = 4096; - } - - /* Check if this port is already in use, and if so try to find - another one. */ - for( c = 0; c < UIP_CONNS; ++c ) - { - conn = &uip_conns[ c ]; - if( conn->tcpstateflags != UIP_CLOSED && conn->lport == htons(lastport) ) - { - goto again; - } - } - - conn = 0; - for( c = 0; c < UIP_CONNS; ++c ) - { - cconn = &uip_conns[ c ]; - if( cconn->tcpstateflags == UIP_CLOSED ) - { - conn = cconn; - break; - } - - if( cconn->tcpstateflags == UIP_TIME_WAIT ) - { - if( conn == 0 || cconn->timer > conn->timer ) - { - conn = cconn; - } - } - } - - if( conn == 0 ) - { - return 0; - } - - conn->tcpstateflags = UIP_SYN_SENT; - - conn->snd_nxt[ 0 ] = iss[ 0 ]; - conn->snd_nxt[ 1 ] = iss[ 1 ]; - conn->snd_nxt[ 2 ] = iss[ 2 ]; - conn->snd_nxt[ 3 ] = iss[ 3 ]; - - conn->initialmss = conn->mss = UIP_TCP_MSS; - - conn->len = 1; /* TCP length of the SYN is one. */ - conn->nrtx = 0; - conn->timer = 1; /* Send the SYN next time around. */ - conn->rto = UIP_RTO; - conn->sa = 0; - conn->sv = 16; /* Initial value of the RTT variance. */ - conn->lport = htons( lastport ); - conn->rport = rport; - uip_ipaddr_copy( &conn->ripaddr, ripaddr ); - - return conn; - } -/*---------------------------------------------------------------------------*/ -#endif /* UIP_ACTIVE_OPEN */ - -#if UIP_UDP - struct uip_udp_conn *uip_udp_new( const uip_ipaddr_t *ripaddr, u16_t rport ) - { - register struct uip_udp_conn *conn; - - /* Find an unused local port. */ - again: - ++lastport; - - if( lastport >= 32000 ) - { - lastport = 4096; - } - - for( c = 0; c < UIP_UDP_CONNS; ++c ) - { - if( uip_udp_conns[ c ].lport == htons(lastport) ) - { - goto again; - } - } - - conn = 0; - for( c = 0; c < UIP_UDP_CONNS; ++c ) - { - if( uip_udp_conns[ c ].lport == 0 ) - { - conn = &uip_udp_conns[ c ]; - break; - } - } - - if( conn == 0 ) - { - return 0; - } - - conn->lport = HTONS( lastport ); - conn->rport = rport; - if( ripaddr == NULL ) - { - memset( &conn->ripaddr, 0, sizeof(uip_ipaddr_t) ); - } - else - { - uip_ipaddr_copy( &conn->ripaddr, ripaddr ); - } - - conn->ttl = UIP_TTL; - - return conn; - } -/*---------------------------------------------------------------------------*/ -#endif /* UIP_UDP */ - -void uip_unlisten( u16_t port ) -{ - for( c = 0; c < UIP_LISTENPORTS; ++c ) - { - if( uip_listenports[ c ] == port ) - { - uip_listenports[ c ] = 0; - return; - } - } -} -/*---------------------------------------------------------------------------*/ - -void uip_listen( u16_t port ) -{ - for( c = 0; c < UIP_LISTENPORTS; ++c ) - { - if( uip_listenports[ c ] == 0 ) - { - uip_listenports[ c ] = port; - return; - } - } -} -/*---------------------------------------------------------------------------*/ - -/* XXX: IP fragment reassembly: not well-tested. */ -#if UIP_REASSEMBLY && !UIP_CONF_IPV6 - #define UIP_REASS_BUFSIZE ( UIP_BUFSIZE - UIP_LLH_LEN ) - static u8_t uip_reassbuf[UIP_REASS_BUFSIZE]; - static u8_t uip_reassbitmap[UIP_REASS_BUFSIZE / ( 8 * 8 )]; - static const u8_t bitmap_bits[8] = { 0xff, 0x7f, 0x3f, 0x1f, 0x0f, 0x07, 0x03, 0x01 }; - static u16_t uip_reasslen; - static u8_t uip_reassflags; - #define UIP_REASS_FLAG_LASTFRAG 0x01 - static u8_t uip_reasstmr; - - #define IP_MF 0x20 - - static u8_t uip_reass( void ) - { - u16_t offset, len; - u16_t i; - - /* If ip_reasstmr is zero, no packet is present in the buffer, so we - write the IP header of the fragment into the reassembly - buffer. The timer is updated with the maximum age. */ - if( uip_reasstmr == 0 ) - { - memcpy( uip_reassbuf, &BUF->vhl, UIP_IPH_LEN ); - uip_reasstmr = UIP_REASS_MAXAGE; - uip_reassflags = 0; - - /* Clear the bitmap. */ - memset( uip_reassbitmap, 0, sizeof(uip_reassbitmap) ); - } - - /* Check if the incoming fragment matches the one currently present - in the reasembly buffer. If so, we proceed with copying the - fragment into the buffer. */ - if - ( - BUF->srcipaddr[ 0 ] == FBUF->srcipaddr[ 0 ] && - BUF->srcipaddr[ 1 ] == FBUF->srcipaddr[ 1 ] && - BUF->destipaddr[ 0 ] == FBUF->destipaddr[ 0 ] && - BUF->destipaddr[ 1 ] == FBUF->destipaddr[ 1 ] && - BUF->ipid[ 0 ] == FBUF->ipid[ 0 ] && - BUF->ipid[ 1 ] == FBUF->ipid[ 1 ] - ) - { - len = ( BUF->len[ 0 ] << 8 ) + BUF->len[ 1 ] - ( BUF->vhl & 0x0f ) * 4; - offset = ( ((BUF->ipoffset[ 0 ] & 0x3f) << 8) + BUF->ipoffset[ 1 ] ) * 8; - - /* If the offset or the offset + fragment length overflows the - reassembly buffer, we discard the entire packet. */ - if( offset > UIP_REASS_BUFSIZE || offset + len > UIP_REASS_BUFSIZE ) - { - uip_reasstmr = 0; - goto nullreturn; - } - - /* Copy the fragment into the reassembly buffer, at the right - offset. */ - memcpy( &uip_reassbuf[UIP_IPH_LEN + offset], ( char * ) BUF + ( int ) ((BUF->vhl & 0x0f) * 4), len ); - - /* Update the bitmap. */ - if( offset / (8 * 8) == (offset + len) / (8 * 8) ) - { - /* If the two endpoints are in the same byte, we only update - that byte. */ - uip_reassbitmap[offset / ( 8 * 8 )] |= bitmap_bits[( offset / 8 ) & 7] &~bitmap_bits[( (offset + len) / 8 ) & 7]; - } - else - { - /* If the two endpoints are in different bytes, we update the - bytes in the endpoints and fill the stuff inbetween with - 0xff. */ - uip_reassbitmap[offset / ( 8 * 8 )] |= bitmap_bits[( offset / 8 ) & 7]; - for( i = 1 + offset / (8 * 8); i < (offset + len) / (8 * 8); ++i ) - { - uip_reassbitmap[i] = 0xff; - } - - uip_reassbitmap[( offset + len ) / ( 8 * 8 )] |= ~bitmap_bits[( (offset + len) / 8 ) & 7]; - } - - /* If this fragment has the More Fragments flag set to zero, we - know that this is the last fragment, so we can calculate the - size of the entire packet. We also set the - IP_REASS_FLAG_LASTFRAG flag to indicate that we have received - the final fragment. */ - if( (BUF->ipoffset[ 0 ] & IP_MF) == 0 ) - { - uip_reassflags |= UIP_REASS_FLAG_LASTFRAG; - uip_reasslen = offset + len; - } - - /* Finally, we check if we have a full packet in the buffer. We do - this by checking if we have the last fragment and if all bits - in the bitmap are set. */ - if( uip_reassflags & UIP_REASS_FLAG_LASTFRAG ) - { - /* Check all bytes up to and including all but the last byte in - the bitmap. */ - for( i = 0; i < uip_reasslen / (8 * 8) - 1; ++i ) - { - if( uip_reassbitmap[i] != 0xff ) - { - goto nullreturn; - } - } - - /* Check the last byte in the bitmap. It should contain just the - right amount of bits. */ - if( uip_reassbitmap[uip_reasslen / (8 * 8)] != (u8_t)~bitmap_bits[uip_reasslen / 8 & 7] ) - { - goto nullreturn; - } - - /* If we have come this far, we have a full packet in the - buffer, so we allocate a pbuf and copy the packet into it. We - also reset the timer. */ - uip_reasstmr = 0; - memcpy( BUF, FBUF, uip_reasslen ); - - /* Pretend to be a "normal" (i.e., not fragmented) IP packet - from now on. */ - BUF->ipoffset[ 0 ] = BUF->ipoffset[ 1 ] = 0; - BUF->len[ 0 ] = uip_reasslen >> 8; - BUF->len[ 1 ] = uip_reasslen & 0xff; - BUF->ipchksum = 0; - BUF->ipchksum = ~( uip_ipchksum() ); - - return uip_reasslen; - } - } - - nullreturn: - - return 0; - } -/*---------------------------------------------------------------------------*/ -#endif /* UIP_REASSEMBLY */ - - -static void uip_add_rcv_nxt( u16_t n ) -{ - uip_add32( uip_conn->rcv_nxt, n ); - uip_conn->rcv_nxt[ 0 ] = uip_acc32[ 0 ]; - uip_conn->rcv_nxt[ 1 ] = uip_acc32[ 1 ]; - uip_conn->rcv_nxt[ 2 ] = uip_acc32[ 2 ]; - uip_conn->rcv_nxt[ 3 ] = uip_acc32[ 3 ]; -} -/*---------------------------------------------------------------------------*/ - -void uip_process( u8_t flag ) -{ - register struct uip_conn *uip_connr = uip_conn; - - #if UIP_UDP - if( flag == UIP_UDP_SEND_CONN ) - { - goto udp_send; - } - #endif /* UIP_UDP */ - - uip_sappdata = uip_appdata = &uip_buf[UIP_IPTCPH_LEN + UIP_LLH_LEN]; - - /* Check if we were invoked because of a poll request for a - particular connection. */ - if( flag == UIP_POLL_REQUEST ) - { - if( (uip_connr->tcpstateflags & UIP_TS_MASK) == UIP_ESTABLISHED && !uip_outstanding(uip_connr) ) - { - uip_flags = UIP_POLL; - UIP_APPCALL(); - goto appsend; - } - - goto drop; - - /* Check if we were invoked because of the perodic timer fireing. */ - } - else if( flag == UIP_TIMER ) - { - #if UIP_REASSEMBLY - if( uip_reasstmr != 0 ) - { - --uip_reasstmr; - } - #endif /* UIP_REASSEMBLY */ - - /* Increase the initial sequence number. */ - if( ++iss[ 3 ] == 0 ) - { - if( ++iss[ 2 ] == 0 ) - { - if( ++iss[ 1 ] == 0 ) - { - ++iss[ 0 ]; - } - } - } - - /* Reset the length variables. */ - uip_len = 0; - uip_slen = 0; - - /* Check if the connection is in a state in which we simply wait - for the connection to time out. If so, we increase the - connection's timer and remove the connection if it times - out. */ - if( uip_connr->tcpstateflags == UIP_TIME_WAIT || uip_connr->tcpstateflags == UIP_FIN_WAIT_2 ) - { - ++( uip_connr->timer ); - if( uip_connr->timer == UIP_TIME_WAIT_TIMEOUT ) - { - uip_connr->tcpstateflags = UIP_CLOSED; - } - } - else if( uip_connr->tcpstateflags != UIP_CLOSED ) - { - /* If the connection has outstanding data, we increase the - connection's timer and see if it has reached the RTO value - in which case we retransmit. */ - if( uip_outstanding(uip_connr) ) - { - if( uip_connr->timer-- == 0 ) - { - if - ( - uip_connr->nrtx == UIP_MAXRTX || - ( - (uip_connr->tcpstateflags == UIP_SYN_SENT || uip_connr->tcpstateflags == UIP_SYN_RCVD) && - uip_connr->nrtx == UIP_MAXSYNRTX - ) - ) - { - uip_connr->tcpstateflags = UIP_CLOSED; - - /* We call UIP_APPCALL() with uip_flags set to - UIP_TIMEDOUT to inform the application that the - connection has timed out. */ - uip_flags = UIP_TIMEDOUT; - UIP_APPCALL(); - - /* We also send a reset packet to the remote host. */ - BUF->flags = TCP_RST | TCP_ACK; - goto tcp_send_nodata; - } - - /* Exponential backoff. */ - uip_connr->timer = UIP_RTO << ( uip_connr->nrtx > 4 ? 4 : uip_connr->nrtx ); - ++( uip_connr->nrtx ); - - /* Ok, so we need to retransmit. We do this differently - depending on which state we are in. In ESTABLISHED, we - call upon the application so that it may prepare the - data for the retransmit. In SYN_RCVD, we resend the - SYNACK that we sent earlier and in LAST_ACK we have to - retransmit our FINACK. */ - UIP_STAT( ++uip_stat.tcp.rexmit ); - switch( uip_connr->tcpstateflags & UIP_TS_MASK ) - { - case UIP_SYN_RCVD: - /* In the SYN_RCVD state, we should retransmit our - SYNACK. */ - goto tcp_send_synack; - - #if UIP_ACTIVE_OPEN - case UIP_SYN_SENT: - /* In the SYN_SENT state, we retransmit out SYN. */ - BUF->flags = 0; - goto tcp_send_syn; - #endif /* UIP_ACTIVE_OPEN */ - - case UIP_ESTABLISHED: - /* In the ESTABLISHED state, we call upon the application - to do the actual retransmit after which we jump into - the code for sending out the packet (the apprexmit - label). */ - uip_flags = UIP_REXMIT; - UIP_APPCALL(); - goto apprexmit; - - case UIP_FIN_WAIT_1: - case UIP_CLOSING: - case UIP_LAST_ACK: - /* In all these states we should retransmit a FINACK. */ - goto tcp_send_finack; - } - } - } - else if( (uip_connr->tcpstateflags & UIP_TS_MASK) == UIP_ESTABLISHED ) - { - /* If there was no need for a retransmission, we poll the - application for new data. */ - uip_flags = UIP_POLL; - UIP_APPCALL(); - goto appsend; - } - } - - goto drop; - } - - #if UIP_UDP - if( flag == UIP_UDP_TIMER ) - { - if( uip_udp_conn->lport != 0 ) - { - uip_conn = NULL; - uip_sappdata = uip_appdata = &uip_buf[UIP_LLH_LEN + UIP_IPUDPH_LEN]; - uip_len = uip_slen = 0; - uip_flags = UIP_POLL; - UIP_UDP_APPCALL(); - goto udp_send; - } - else - { - goto drop; - } - } - #endif - - /* This is where the input processing starts. */ - UIP_STAT( ++uip_stat.ip.recv ); - - /* Start of IP input header processing code. */ - #if UIP_CONF_IPV6 - /* Check validity of the IP header. */ - if( (BUF->vtc & 0xf0) != 0x60 ) - { /* IP version and header length. */ - UIP_STAT( ++uip_stat.ip.drop ); - UIP_STAT( ++uip_stat.ip.vhlerr ); - UIP_LOG( "ipv6: invalid version." ); - goto drop; - } - - #else /* UIP_CONF_IPV6 */ - /* Check validity of the IP header. */ - if( BUF->vhl != 0x45 ) - { /* IP version and header length. */ - UIP_STAT( ++uip_stat.ip.drop ); - UIP_STAT( ++uip_stat.ip.vhlerr ); - UIP_LOG( "ip: invalid version or header length." ); - goto drop; - } - - #endif /* UIP_CONF_IPV6 */ - - /* Check the size of the packet. If the size reported to us in - uip_len is smaller the size reported in the IP header, we assume - that the packet has been corrupted in transit. If the size of - uip_len is larger than the size reported in the IP packet header, - the packet has been padded and we set uip_len to the correct - value.. */ - if( (BUF->len[ 0 ] << 8) + BUF->len[ 1 ] <= uip_len ) - { - uip_len = ( BUF->len[ 0 ] << 8 ) + BUF->len[ 1 ]; - #if UIP_CONF_IPV6 - /* The length reported in the IPv6 header is the - length of the payload that follows the - header. However, uIP uses the uip_len variable - for holding the size of the entire packet, - including the IP header. For IPv4 this is not a - problem as the length field in the IPv4 header - contains the length of the entire packet. But - for IPv6 we need to add the size of the IPv6 - header (40 bytes). */ - uip_len += 40; - #endif /* UIP_CONF_IPV6 */ - } - else - { - UIP_LOG( "ip: packet shorter than reported in IP header." ); - goto drop; - } - - #if !UIP_CONF_IPV6 - /* Check the fragment flag. */ - if( (BUF->ipoffset[ 0 ] & 0x3f) != 0 || BUF->ipoffset[ 1 ] != 0 ) - { - #if UIP_REASSEMBLY - uip_len = uip_reass(); - if( uip_len == 0 ) - { - goto drop; - } - #else /* UIP_REASSEMBLY */ - UIP_STAT( ++uip_stat.ip.drop ); - UIP_STAT( ++uip_stat.ip.fragerr ); - UIP_LOG( "ip: fragment dropped." ); - goto drop; - #endif /* UIP_REASSEMBLY */ - } - #endif /* UIP_CONF_IPV6 */ - - if( uip_ipaddr_cmp(&uip_hostaddr, &uip_all_zeroes_addr) ) - { - /* If we are configured to use ping IP address configuration and - hasn't been assigned an IP address yet, we accept all ICMP - packets. */ - #if UIP_PINGADDRCONF && !UIP_CONF_IPV6 - if( BUF->proto == UIP_PROTO_ICMP ) - { - UIP_LOG( "ip: possible ping config packet received." ); - goto icmp_input; - } - else - { - UIP_LOG( "ip: packet dropped since no address assigned." ); - goto drop; - } - #endif /* UIP_PINGADDRCONF */ - } - else - { - /* If IP broadcast support is configured, we check for a broadcast - UDP packet, which may be destined to us. */ - #if UIP_BROADCAST - //DEBUG_PRINTF( "UDP IP checksum 0x%04x\n", uip_ipchksum() ); - if( BUF->proto == UIP_PROTO_UDP && uip_ipaddr_cmp(&BUF->destipaddr, &uip_broadcast_addr) /*&& uip_ipchksum() == 0xffff*/ ) - { - goto udp_input; - } - #endif /* UIP_BROADCAST */ - - /* Check if the packet is destined for our IP address. */ - #if !UIP_CONF_IPV6 - if( !uip_ipaddr_cmp(&BUF->destipaddr, &uip_hostaddr) ) - { - UIP_STAT( ++uip_stat.ip.drop ); - goto drop; - } - #else /* UIP_CONF_IPV6 */ - /* For IPv6, packet reception is a little trickier as we need to - make sure that we listen to certain multicast addresses (all - hosts multicast address, and the solicited-node multicast - address) as well. However, we will cheat here and accept all - multicast packets that are sent to the ff02::/16 addresses. */ - if( !uip_ipaddr_cmp(&BUF->destipaddr, &uip_hostaddr) && BUF->destipaddr.u16[ 0 ] != HTONS(0xff02) ) - { - UIP_STAT( ++uip_stat.ip.drop ); - goto drop; - } - #endif /* UIP_CONF_IPV6 */ - } - - #if !UIP_CONF_IPV6 - if( uip_ipchksum() != 0xffff ) - { - /* Compute and check the IP header checksum. */ - UIP_STAT( ++uip_stat.ip.drop ); - UIP_STAT( ++uip_stat.ip.chkerr ); - UIP_LOG( "ip: bad checksum." ); - goto drop; - } - #endif /* UIP_CONF_IPV6 */ - - if( BUF->proto == UIP_PROTO_TCP ) - { - /* Check for TCP packet. If so, proceed with TCP input processing. */ - goto tcp_input; - } - - #if UIP_UDP - if( BUF->proto == UIP_PROTO_UDP ) - { - goto udp_input; - } - #endif /* UIP_UDP */ - - #if !UIP_CONF_IPV6 - /* ICMPv4 processing code follows. */ - if( BUF->proto != UIP_PROTO_ICMP ) - { - /* We only allow ICMP packets from here. */ - UIP_STAT( ++uip_stat.ip.drop ); - UIP_STAT( ++uip_stat.ip.protoerr ); - UIP_LOG( "ip: neither tcp nor icmp." ); - goto drop; - } - - #if UIP_PINGADDRCONF - icmp_input : - #endif /* UIP_PINGADDRCONF */ - - UIP_STAT( ++uip_stat.icmp.recv ); - - /* ICMP echo (i.e., ping) processing. This is simple, we only change - the ICMP type from ECHO to ECHO_REPLY and adjust the ICMP - checksum before we return the packet. */ - if( ICMPBUF->type != ICMP_ECHO ) - { - UIP_STAT( ++uip_stat.icmp.drop ); - UIP_STAT( ++uip_stat.icmp.typeerr ); - UIP_LOG( "icmp: not icmp echo." ); - goto drop; - } - - /* If we are configured to use ping IP address assignment, we use - the destination IP address of this ping packet and assign it to - ourself. */ - #if UIP_PINGADDRCONF - if( uip_ipaddr_cmp(&uip_hostaddr, &uip_all_zeroes_addr) ) - { - uip_hostaddr = BUF->destipaddr; - } - #endif /* UIP_PINGADDRCONF */ - - ICMPBUF->type = ICMP_ECHO_REPLY; - - if( ICMPBUF->icmpchksum >= HTONS(0xffff - (ICMP_ECHO << 8)) ) - { - ICMPBUF->icmpchksum += HTONS( ICMP_ECHO << 8 ) + 1; - } - else - { - ICMPBUF->icmpchksum += HTONS( ICMP_ECHO << 8 ); - } - - /* Swap IP addresses. */ - uip_ipaddr_copy( &BUF->destipaddr, &BUF->srcipaddr ); - uip_ipaddr_copy( &BUF->srcipaddr, &uip_hostaddr ); - - UIP_STAT( ++uip_stat.icmp.sent ); - BUF->ttl = UIP_TTL; - goto ip_send_nolen; - - /* End of IPv4 input header processing code. */ - - #else /* !UIP_CONF_IPV6 */ - - /* This is IPv6 ICMPv6 processing code. */ - - //DEBUG_PRINTF( "icmp6_input: length %d\n", uip_len ); - if( BUF->proto != UIP_PROTO_ICMP6 ) - { - /* We only allow ICMPv6 packets from here. */ - UIP_STAT( ++uip_stat.ip.drop ); - UIP_STAT( ++uip_stat.ip.protoerr ); - UIP_LOG( "ip: neither tcp nor icmp6." ); - goto drop; - } - - UIP_STAT( ++uip_stat.icmp.recv ); - - /* If we get a neighbor solicitation for our address we should send - a neighbor advertisement message back. */ - if( ICMPBUF->type == ICMP6_NEIGHBOR_SOLICITATION ) - { - if( uip_ipaddr_cmp(&ICMPBUF->icmp6data, &uip_hostaddr) ) - { - if( ICMPBUF->options[ 0 ] == ICMP6_OPTION_SOURCE_LINK_ADDRESS ) - { - /* Save the sender's address in our neighbor list. */ - uip_neighbor_add( &ICMPBUF->srcipaddr, &(ICMPBUF->options[ 2 ]) ); - } - - /* We should now send a neighbor advertisement back to where the - neighbor solicication came from. */ - ICMPBUF->type = ICMP6_NEIGHBOR_ADVERTISEMENT; - ICMPBUF->flags = ICMP6_FLAG_S; /* Solicited flag. */ - - ICMPBUF->reserved1 = ICMPBUF->reserved2 = ICMPBUF->reserved3 = 0; - - uip_ipaddr_copy( &ICMPBUF->destipaddr, &ICMPBUF->srcipaddr ); - uip_ipaddr_copy( &ICMPBUF->srcipaddr, &uip_hostaddr ); - ICMPBUF->options[ 0 ] = ICMP6_OPTION_TARGET_LINK_ADDRESS; - ICMPBUF->options[ 1 ] = 1; /* Options length, 1 = 8 bytes. */ - memcpy( &(ICMPBUF->options[ 2 ]), &uip_ethaddr, sizeof(uip_ethaddr) ); - ICMPBUF->icmpchksum = 0; - ICMPBUF->icmpchksum = ~uip_icmp6chksum(); - - goto send; - } - - goto drop; - } - else if( ICMPBUF->type == ICMP6_ECHO ) - { - /* ICMP echo (i.e., ping) processing. This is simple, we only - change the ICMP type from ECHO to ECHO_REPLY and update the - ICMP checksum before we return the packet. */ - ICMPBUF->type = ICMP6_ECHO_REPLY; - - uip_ipaddr_copy( &BUF->destipaddr, &BUF->srcipaddr ); - uip_ipaddr_copy( &BUF->srcipaddr, &uip_hostaddr ); - ICMPBUF->icmpchksum = 0; - ICMPBUF->icmpchksum = ~uip_icmp6chksum(); - - UIP_STAT( ++uip_stat.icmp.sent ); - goto send; - } - else - { - //DEBUG_PRINTF( "Unknown icmp6 message type %d\n", ICMPBUF->type ); - UIP_STAT( ++uip_stat.icmp.drop ); - UIP_STAT( ++uip_stat.icmp.typeerr ); - UIP_LOG( "icmp: unknown ICMP message." ); - goto drop; - } - - /* End of IPv6 ICMP processing. */ - #endif /* !UIP_CONF_IPV6 */ - - #if UIP_UDP - /* UDP input processing. */ - udp_input : - /* UDP processing is really just a hack. We don't do anything to the - UDP/IP headers, but let the UDP application do all the hard - work. If the application sets uip_slen, it has a packet to - send. */ - #if UIP_UDP_CHECKSUMS - uip_len = uip_len - UIP_IPUDPH_LEN; - uip_appdata = &uip_buf[ UIP_LLH_LEN + UIP_IPUDPH_LEN ]; - if( UDPBUF->udpchksum != 0 && uip_udpchksum() != 0xffff ) - { - UIP_STAT( ++uip_stat.udp.drop ); - UIP_STAT( ++uip_stat.udp.chkerr ); - UIP_LOG( "udp: bad checksum." ); - goto drop; - } - - #else /* UIP_UDP_CHECKSUMS */ - uip_len = uip_len - UIP_IPUDPH_LEN; - #endif /* UIP_UDP_CHECKSUMS */ - - /* Demultiplex this UDP packet between the UDP "connections". */ - for( uip_udp_conn = &uip_udp_conns[ 0 ]; uip_udp_conn < &uip_udp_conns[UIP_UDP_CONNS]; ++uip_udp_conn ) - { - /* If the local UDP port is non-zero, the connection is considered - to be used. If so, the local port number is checked against the - destination port number in the received packet. If the two port - numbers match, the remote port number is checked if the - connection is bound to a remote port. Finally, if the - connection is bound to a remote IP address, the source IP - address of the packet is checked. */ - if - ( - uip_udp_conn->lport != 0 && - UDPBUF->destport == uip_udp_conn->lport && - (uip_udp_conn->rport == 0 || UDPBUF->srcport == uip_udp_conn->rport) && - ( - uip_ipaddr_cmp(&uip_udp_conn->ripaddr, &uip_all_zeroes_addr) || - uip_ipaddr_cmp(&uip_udp_conn->ripaddr, &uip_broadcast_addr) || - uip_ipaddr_cmp(&BUF->srcipaddr, &uip_udp_conn->ripaddr) - ) - ) - { - goto udp_found; - } - } - - UIP_LOG( "udp: no matching connection found" ); - - #if UIP_CONF_ICMP_DEST_UNREACH && !UIP_CONF_IPV6 - - /* Copy fields from packet header into payload of this ICMP packet. */ - memcpy( &(ICMPBUF->payload[ 0 ]), ICMPBUF, UIP_IPH_LEN + 8 ); - - /* Set the ICMP type and code. */ - ICMPBUF->type = ICMP_DEST_UNREACHABLE; - ICMPBUF->icode = ICMP_PORT_UNREACHABLE; - - /* Calculate the ICMP checksum. */ - ICMPBUF->icmpchksum = 0; - ICMPBUF->icmpchksum = ~uip_chksum( ( u16_t * ) &(ICMPBUF->type), 36 ); - - /* Set the IP destination address to be the source address of the - original packet. */ - uip_ipaddr_copy( &BUF->destipaddr, &BUF->srcipaddr ); - - /* Set our IP address as the source address. */ - uip_ipaddr_copy( &BUF->srcipaddr, &uip_hostaddr ); - - /* The size of the ICMP destination unreachable packet is 36 + the - size of the IP header (20) = 56. */ - uip_len = 36 + UIP_IPH_LEN; - ICMPBUF->len[ 0 ] = 0; - ICMPBUF->len[ 1 ] = ( u8_t ) uip_len; - ICMPBUF->ttl = UIP_TTL; - ICMPBUF->proto = UIP_PROTO_ICMP; - - goto ip_send_nolen; - #else /* UIP_CONF_ICMP_DEST_UNREACH */ - goto drop; - #endif /* UIP_CONF_ICMP_DEST_UNREACH */ - - udp_found : uip_conn = NULL; - uip_flags = UIP_NEWDATA; - uip_sappdata = uip_appdata = &uip_buf[UIP_LLH_LEN + UIP_IPUDPH_LEN]; - uip_slen = 0; - UIP_UDP_APPCALL(); - -udp_send: - if( uip_slen == 0 ) - { - goto drop; - } - - uip_len = uip_slen + UIP_IPUDPH_LEN; - - #if UIP_CONF_IPV6 - /* For IPv6, the IP length field does not include the IPv6 IP header - length. */ - BUF->len[ 0 ] = ( (uip_len - UIP_IPH_LEN) >> 8 ); - BUF->len[ 1 ] = ( (uip_len - UIP_IPH_LEN) & 0xff ); - #else /* UIP_CONF_IPV6 */ - BUF->len[ 0 ] = ( uip_len >> 8 ); - BUF->len[ 1 ] = ( uip_len & 0xff ); - #endif /* UIP_CONF_IPV6 */ - - BUF->ttl = uip_udp_conn->ttl; - BUF->proto = UIP_PROTO_UDP; - - UDPBUF->udplen = HTONS( uip_slen + UIP_UDPH_LEN ); - UDPBUF->udpchksum = 0; - - BUF->srcport = uip_udp_conn->lport; - BUF->destport = uip_udp_conn->rport; - - uip_ipaddr_copy( &BUF->srcipaddr, &uip_hostaddr ); - uip_ipaddr_copy( &BUF->destipaddr, &uip_udp_conn->ripaddr ); - - uip_appdata = &uip_buf[UIP_LLH_LEN + UIP_IPTCPH_LEN]; - - #if UIP_UDP_CHECKSUMS - /* Calculate UDP checksum. */ - UDPBUF->udpchksum = ~( uip_udpchksum() ); - if( UDPBUF->udpchksum == 0 ) - { - UDPBUF->udpchksum = 0xffff; - } - #endif /* UIP_UDP_CHECKSUMS */ - goto ip_send_nolen; - #endif /* UIP_UDP */ - - /* TCP input processing. */ - tcp_input : UIP_STAT( ++uip_stat.tcp.recv ); - - /* Start of TCP input header processing code. */ - if( uip_tcpchksum() != 0xffff ) - { - /* Compute and check the TCP checksum. */ - UIP_STAT( ++uip_stat.tcp.drop ); - UIP_STAT( ++uip_stat.tcp.chkerr ); - UIP_LOG( "tcp: bad checksum." ); - goto drop; - } - - /* Demultiplex this segment. */ - - /* First check any active connections. */ - for( uip_connr = &uip_conns[ 0 ]; uip_connr <= &uip_conns[UIP_CONNS - 1]; ++uip_connr ) - { - if - ( - uip_connr->tcpstateflags != UIP_CLOSED && - BUF->destport == uip_connr->lport && - BUF->srcport == uip_connr->rport && - uip_ipaddr_cmp(&BUF->srcipaddr, &uip_connr->ripaddr) - ) - { - goto found; - } - } - - /* If we didn't find and active connection that expected the packet, - either this packet is an old duplicate, or this is a SYN packet - destined for a connection in LISTEN. If the SYN flag isn't set, - it is an old packet and we send a RST. */ - if( (BUF->flags & TCP_CTL) != TCP_SYN ) - { - goto reset; - } - - tmp16 = BUF->destport; - - /* Next, check listening connections. */ - for( c = 0; c < UIP_LISTENPORTS; ++c ) - { - if( tmp16 == uip_listenports[ c ] ) - { - goto found_listen; - } - } - - /* No matching connection found, so we send a RST packet. */ - UIP_STAT( ++uip_stat.tcp.synrst ); - -reset: - /* We do not send resets in response to resets. */ - if( BUF->flags & TCP_RST ) - { - goto drop; - } - - UIP_STAT( ++uip_stat.tcp.rst ); - - BUF->flags = TCP_RST | TCP_ACK; - uip_len = UIP_IPTCPH_LEN; - BUF->tcpoffset = 5 << 4; - - /* Flip the seqno and ackno fields in the TCP header. */ - c = BUF->seqno[ 3 ]; - BUF->seqno[ 3 ] = BUF->ackno[ 3 ]; - BUF->ackno[ 3 ] = c; - - c = BUF->seqno[ 2 ]; - BUF->seqno[ 2 ] = BUF->ackno[ 2 ]; - BUF->ackno[ 2 ] = c; - - c = BUF->seqno[ 1 ]; - BUF->seqno[ 1 ] = BUF->ackno[ 1 ]; - BUF->ackno[ 1 ] = c; - - c = BUF->seqno[ 0 ]; - BUF->seqno[ 0 ] = BUF->ackno[ 0 ]; - BUF->ackno[ 0 ] = c; - - /* We also have to increase the sequence number we are - acknowledging. If the least significant byte overflowed, we need - to propagate the carry to the other bytes as well. */ - if( ++BUF->ackno[ 3 ] == 0 ) - { - if( ++BUF->ackno[ 2 ] == 0 ) - { - if( ++BUF->ackno[ 1 ] == 0 ) - { - ++BUF->ackno[ 0 ]; - } - } - } - - /* Swap port numbers. */ - tmp16 = BUF->srcport; - BUF->srcport = BUF->destport; - BUF->destport = tmp16; - - /* Swap IP addresses. */ - uip_ipaddr_copy( &BUF->destipaddr, &BUF->srcipaddr ); - uip_ipaddr_copy( &BUF->srcipaddr, &uip_hostaddr ); - - /* And send out the RST packet! */ - goto tcp_send_noconn; - - /* This label will be jumped to if we matched the incoming packet - with a connection in LISTEN. In that case, we should create a new - connection and send a SYNACK in return. */ -found_listen: - /* First we check if there are any connections avaliable. Unused - connections are kept in the same table as used connections, but - unused ones have the tcpstate set to CLOSED. Also, connections in - TIME_WAIT are kept track of and we'll use the oldest one if no - CLOSED connections are found. Thanks to Eddie C. Dost for a very - nice algorithm for the TIME_WAIT search. */ - uip_connr = 0; - for( c = 0; c < UIP_CONNS; ++c ) - { - if( uip_conns[ c ].tcpstateflags == UIP_CLOSED ) - { - uip_connr = &uip_conns[ c ]; - break; - } - - if( uip_conns[ c ].tcpstateflags == UIP_TIME_WAIT ) - { - if( uip_connr == 0 || uip_conns[ c ].timer > uip_connr->timer ) - { - uip_connr = &uip_conns[ c ]; - } - } - } - - if( uip_connr == 0 ) - { - /* All connections are used already, we drop packet and hope that - the remote end will retransmit the packet at a time when we - have more spare connections. */ - UIP_STAT( ++uip_stat.tcp.syndrop ); - UIP_LOG( "tcp: found no unused connections." ); - goto drop; - } - - uip_conn = uip_connr; - - /* Fill in the necessary fields for the new connection. */ - uip_connr->rto = uip_connr->timer = UIP_RTO; - uip_connr->sa = 0; - uip_connr->sv = 4; - uip_connr->nrtx = 0; - uip_connr->lport = BUF->destport; - uip_connr->rport = BUF->srcport; - uip_ipaddr_copy( &uip_connr->ripaddr, &BUF->srcipaddr ); - uip_connr->tcpstateflags = UIP_SYN_RCVD; - - uip_connr->snd_nxt[ 0 ] = iss[ 0 ]; - uip_connr->snd_nxt[ 1 ] = iss[ 1 ]; - uip_connr->snd_nxt[ 2 ] = iss[ 2 ]; - uip_connr->snd_nxt[ 3 ] = iss[ 3 ]; - uip_connr->len = 1; - - /* rcv_nxt should be the seqno from the incoming packet + 1. */ - uip_connr->rcv_nxt[ 3 ] = BUF->seqno[ 3 ]; - uip_connr->rcv_nxt[ 2 ] = BUF->seqno[ 2 ]; - uip_connr->rcv_nxt[ 1 ] = BUF->seqno[ 1 ]; - uip_connr->rcv_nxt[ 0 ] = BUF->seqno[ 0 ]; - uip_add_rcv_nxt( 1 ); - - /* Parse the TCP MSS option, if present. */ - if( (BUF->tcpoffset & 0xf0) > 0x50 ) - { - for( c = 0; c < ((BUF->tcpoffset >> 4) - 5) << 2; ) - { - opt = uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + c]; - if( opt == TCP_OPT_END ) - { - /* End of options. */ - break; - } - else if( opt == TCP_OPT_NOOP ) - { - ++c; - - /* NOP option. */ - } - else if( opt == TCP_OPT_MSS && uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 1 + c] == TCP_OPT_MSS_LEN ) - { - /* An MSS option with the right option length. */ - tmp16 = ( (u16_t) uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 2 + c] << 8 ) | ( u16_t ) uip_buf[UIP_IPTCPH_LEN + UIP_LLH_LEN + 3 + c]; - uip_connr->initialmss = uip_connr->mss = tmp16 > UIP_TCP_MSS ? UIP_TCP_MSS : tmp16; - - /* And we are done processing options. */ - break; - } - else - { - /* All other options have a length field, so that we easily - can skip past them. */ - if( uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 1 + c] == 0 ) - { - /* If the length field is zero, the options are malformed - and we don't process them further. */ - break; - } - - c += uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 1 + c]; - } - } - } - - /* Our response will be a SYNACK. */ - #if UIP_ACTIVE_OPEN - tcp_send_synack : BUF->flags = TCP_ACK; -tcp_send_syn: - BUF->flags |= TCP_SYN; - #else /* UIP_ACTIVE_OPEN */ - tcp_send_synack : BUF->flags = TCP_SYN | TCP_ACK; - #endif /* UIP_ACTIVE_OPEN */ - - /* We send out the TCP Maximum Segment Size option with our - SYNACK. */ - BUF->optdata[ 0 ] = TCP_OPT_MSS; - BUF->optdata[ 1 ] = TCP_OPT_MSS_LEN; - BUF->optdata[ 2 ] = ( UIP_TCP_MSS ) / 256; - BUF->optdata[ 3 ] = ( UIP_TCP_MSS ) & 255; - uip_len = UIP_IPTCPH_LEN + TCP_OPT_MSS_LEN; - BUF->tcpoffset = ( (UIP_TCPH_LEN + TCP_OPT_MSS_LEN) / 4 ) << 4; - goto tcp_send; - - /* This label will be jumped to if we found an active connection. */ -found: - uip_conn = uip_connr; - uip_flags = 0; - - /* We do a very naive form of TCP reset processing; we just accept - any RST and kill our connection. We should in fact check if the - sequence number of this reset is wihtin our advertised window - before we accept the reset. */ - if( BUF->flags & TCP_RST ) - { - uip_connr->tcpstateflags = UIP_CLOSED; - UIP_LOG( "tcp: got reset, aborting connection." ); - uip_flags = UIP_ABORT; - UIP_APPCALL(); - goto drop; - } - - /* Calculate the length of the data, if the application has sent - any data to us. */ - c = ( BUF->tcpoffset >> 4 ) << 2; - - /* uip_len will contain the length of the actual TCP data. This is - calculated by subtracing the length of the TCP header (in - c) and the length of the IP header (20 bytes). */ - uip_len = uip_len - c - UIP_IPH_LEN; - - /* First, check if the sequence number of the incoming packet is - what we're expecting next. If not, we send out an ACK with the - correct numbers in. */ - if( !(((uip_connr->tcpstateflags & UIP_TS_MASK) == UIP_SYN_SENT) && ((BUF->flags & TCP_CTL) == (TCP_SYN | TCP_ACK))) ) - { - if - ( - (uip_len > 0 || ((BUF->flags & (TCP_SYN | TCP_FIN)) != 0)) && - ( - BUF->seqno[ 0 ] != uip_connr->rcv_nxt[ 0 ] || - BUF->seqno[ 1 ] != uip_connr->rcv_nxt[ 1 ] || - BUF->seqno[ 2 ] != uip_connr->rcv_nxt[ 2 ] || - BUF->seqno[ 3 ] != uip_connr->rcv_nxt[ 3 ] - ) - ) - { - goto tcp_send_ack; - } - } - - /* Next, check if the incoming segment acknowledges any outstanding - data. If so, we update the sequence number, reset the length of - the outstanding data, calculate RTT estimations, and reset the - retransmission timer. */ - if( (BUF->flags & TCP_ACK) && uip_outstanding(uip_connr) ) - { - uip_add32( uip_connr->snd_nxt, uip_connr->len ); - - if - ( - BUF->ackno[ 0 ] == uip_acc32[ 0 ] && - BUF->ackno[ 1 ] == uip_acc32[ 1 ] && - BUF->ackno[ 2 ] == uip_acc32[ 2 ] && - BUF->ackno[ 3 ] == uip_acc32[ 3 ] - ) - { - /* Update sequence number. */ - uip_connr->snd_nxt[ 0 ] = uip_acc32[ 0 ]; - uip_connr->snd_nxt[ 1 ] = uip_acc32[ 1 ]; - uip_connr->snd_nxt[ 2 ] = uip_acc32[ 2 ]; - uip_connr->snd_nxt[ 3 ] = uip_acc32[ 3 ]; - - /* Do RTT estimation, unless we have done retransmissions. */ - if( uip_connr->nrtx == 0 ) - { - signed char m; - m = uip_connr->rto - uip_connr->timer; - - /* This is taken directly from VJs original code in his paper */ - m = m - ( uip_connr->sa >> 3 ); - uip_connr->sa += m; - if( m < 0 ) - { - m = -m; - } - - m = m - ( uip_connr->sv >> 2 ); - uip_connr->sv += m; - uip_connr->rto = ( uip_connr->sa >> 3 ) + uip_connr->sv; - } - - /* Set the acknowledged flag. */ - uip_flags = UIP_ACKDATA; - - /* Reset the retransmission timer. */ - uip_connr->timer = uip_connr->rto; - - /* Reset length of outstanding data. */ - uip_connr->len = 0; - } - } - - /* Do different things depending on in what state the connection is. */ - switch( uip_connr->tcpstateflags & UIP_TS_MASK ) - { - /* CLOSED and LISTEN are not handled here. CLOSE_WAIT is not - implemented, since we force the application to close when the - peer sends a FIN (hence the application goes directly from - ESTABLISHED to LAST_ACK). */ - case UIP_SYN_RCVD: - /* In SYN_RCVD we have sent out a SYNACK in response to a SYN, and - we are waiting for an ACK that acknowledges the data we sent - out the last time. Therefore, we want to have the UIP_ACKDATA - flag set. If so, we enter the ESTABLISHED state. */ - if( uip_flags & UIP_ACKDATA ) - { - uip_connr->tcpstateflags = UIP_ESTABLISHED; - uip_flags = UIP_CONNECTED; - uip_connr->len = 0; - if( uip_len > 0 ) - { - uip_flags |= UIP_NEWDATA; - uip_add_rcv_nxt( uip_len ); - } - - uip_slen = 0; - UIP_APPCALL(); - goto appsend; - } - - goto drop; - - #if UIP_ACTIVE_OPEN - case UIP_SYN_SENT: - /* In SYN_SENT, we wait for a SYNACK that is sent in response to - our SYN. The rcv_nxt is set to sequence number in the SYNACK - plus one, and we send an ACK. We move into the ESTABLISHED - state. */ - if( (uip_flags & UIP_ACKDATA) && (BUF->flags & TCP_CTL) == (TCP_SYN | TCP_ACK) ) - { - /* Parse the TCP MSS option, if present. */ - if( (BUF->tcpoffset & 0xf0) > 0x50 ) - { - for( c = 0; c < ((BUF->tcpoffset >> 4) - 5) << 2; ) - { - opt = uip_buf[UIP_IPTCPH_LEN + UIP_LLH_LEN + c]; - if( opt == TCP_OPT_END ) - { - /* End of options. */ - break; - } - else if( opt == TCP_OPT_NOOP ) - { - ++c; - - /* NOP option. */ - } - else if( opt == TCP_OPT_MSS && uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 1 + c] == TCP_OPT_MSS_LEN ) - { - /* An MSS option with the right option length. */ - tmp16 = ( uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 2 + c] << 8 ) | uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 3 + c]; - uip_connr->initialmss = uip_connr->mss = tmp16 > UIP_TCP_MSS ? UIP_TCP_MSS : tmp16; - - /* And we are done processing options. */ - break; - } - else - { - /* All other options have a length field, so that we easily - can skip past them. */ - if( uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 1 + c] == 0 ) - { - /* If the length field is zero, the options are malformed - and we don't process them further. */ - break; - } - - c += uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 1 + c]; - } - } - } - - uip_connr->tcpstateflags = UIP_ESTABLISHED; - uip_connr->rcv_nxt[ 0 ] = BUF->seqno[ 0 ]; - uip_connr->rcv_nxt[ 1 ] = BUF->seqno[ 1 ]; - uip_connr->rcv_nxt[ 2 ] = BUF->seqno[ 2 ]; - uip_connr->rcv_nxt[ 3 ] = BUF->seqno[ 3 ]; - uip_add_rcv_nxt( 1 ); - uip_flags = UIP_CONNECTED | UIP_NEWDATA; - uip_connr->len = 0; - uip_len = 0; - uip_slen = 0; - UIP_APPCALL(); - goto appsend; - } - - /* Inform the application that the connection failed */ - uip_flags = UIP_ABORT; - UIP_APPCALL(); - - /* The connection is closed after we send the RST */ - uip_conn->tcpstateflags = UIP_CLOSED; - goto reset; - #endif /* UIP_ACTIVE_OPEN */ - - case UIP_ESTABLISHED: - /* In the ESTABLISHED state, we call upon the application to feed - data into the uip_buf. If the UIP_ACKDATA flag is set, the - application should put new data into the buffer, otherwise we are - retransmitting an old segment, and the application should put that - data into the buffer. - - If the incoming packet is a FIN, we should close the connection on - this side as well, and we send out a FIN and enter the LAST_ACK - state. We require that there is no outstanding data; otherwise the - sequence numbers will be screwed up. */ - if( BUF->flags & TCP_FIN && !(uip_connr->tcpstateflags & UIP_STOPPED) ) - { - if( uip_outstanding(uip_connr) ) - { - goto drop; - } - - uip_add_rcv_nxt( 1 + uip_len ); - uip_flags |= UIP_CLOSE; - if( uip_len > 0 ) - { - uip_flags |= UIP_NEWDATA; - } - - UIP_APPCALL(); - uip_connr->len = 1; - uip_connr->tcpstateflags = UIP_LAST_ACK; - uip_connr->nrtx = 0; - tcp_send_finack: - BUF->flags = TCP_FIN | TCP_ACK; - goto tcp_send_nodata; - } - - /* Check the URG flag. If this is set, the segment carries urgent - data that we must pass to the application. */ - if( (BUF->flags & TCP_URG) != 0 ) - { - #if UIP_URGDATA > 0 - uip_urglen = ( BUF->urgp[ 0 ] << 8 ) | BUF->urgp[ 1 ]; - if( uip_urglen > uip_len ) - { - /* There is more urgent data in the next segment to come. */ - uip_urglen = uip_len; - } - - uip_add_rcv_nxt( uip_urglen ); - uip_len -= uip_urglen; - uip_urgdata = uip_appdata; - uip_appdata += uip_urglen; - } - else - { - uip_urglen = 0; - #else /* UIP_URGDATA > 0 */ - uip_appdata = ( ( char * ) uip_appdata ) + ( (BUF->urgp[ 0 ] << 8) | BUF->urgp[ 1 ] ); - uip_len -= ( BUF->urgp[ 0 ] << 8 ) | BUF->urgp[ 1 ]; - #endif /* UIP_URGDATA > 0 */ - } - - /* If uip_len > 0 we have TCP data in the packet, and we flag this - by setting the UIP_NEWDATA flag and update the sequence number - we acknowledge. If the application has stopped the dataflow - using uip_stop(), we must not accept any data packets from the - remote host. */ - if( uip_len > 0 && !(uip_connr->tcpstateflags & UIP_STOPPED) ) - { - uip_flags |= UIP_NEWDATA; - uip_add_rcv_nxt( uip_len ); - } - - /* Check if the available buffer space advertised by the other end - is smaller than the initial MSS for this connection. If so, we - set the current MSS to the window size to ensure that the - application does not send more data than the other end can - handle. - - If the remote host advertises a zero window, we set the MSS to - the initial MSS so that the application will send an entire MSS - of data. This data will not be acknowledged by the receiver, - and the application will retransmit it. This is called the - "persistent timer" and uses the retransmission mechanim. - */ - tmp16 = ( (u16_t) BUF->wnd[ 0 ] << 8 ) + ( u16_t ) BUF->wnd[ 1 ]; - if( tmp16 > uip_connr->initialmss || tmp16 == 0 ) - { - tmp16 = uip_connr->initialmss; - } - - uip_connr->mss = tmp16; - - /* If this packet constitutes an ACK for outstanding data (flagged - by the UIP_ACKDATA flag, we should call the application since it - might want to send more data. If the incoming packet had data - from the peer (as flagged by the UIP_NEWDATA flag), the - application must also be notified. - - When the application is called, the global variable uip_len - contains the length of the incoming data. The application can - access the incoming data through the global pointer - uip_appdata, which usually points UIP_IPTCPH_LEN + UIP_LLH_LEN - bytes into the uip_buf array. - - If the application wishes to send any data, this data should be - put into the uip_appdata and the length of the data should be - put into uip_len. If the application don't have any data to - send, uip_len must be set to 0. */ - if( uip_flags & (UIP_NEWDATA | UIP_ACKDATA) ) - { - uip_slen = 0; - UIP_APPCALL(); - -appsend: - if( uip_flags & UIP_ABORT ) - { - uip_slen = 0; - uip_connr->tcpstateflags = UIP_CLOSED; - BUF->flags = TCP_RST | TCP_ACK; - goto tcp_send_nodata; - } - - if( uip_flags & UIP_CLOSE ) - { - uip_slen = 0; - uip_connr->len = 1; - uip_connr->tcpstateflags = UIP_FIN_WAIT_1; - uip_connr->nrtx = 0; - BUF->flags = TCP_FIN | TCP_ACK; - goto tcp_send_nodata; - } - - /* If uip_slen > 0, the application has data to be sent. */ - if( uip_slen > 0 ) - { - /* If the connection has acknowledged data, the contents of - the ->len variable should be discarded. */ - if( (uip_flags & UIP_ACKDATA) != 0 ) - { - uip_connr->len = 0; - } - - /* If the ->len variable is non-zero the connection has - already data in transit and cannot send anymore right - now. */ - if( uip_connr->len == 0 ) - { - /* The application cannot send more than what is allowed by - the mss (the minumum of the MSS and the available - window). */ - if( uip_slen > uip_connr->mss ) - { - uip_slen = uip_connr->mss; - } - - /* Remember how much data we send out now so that we know - when everything has been acknowledged. */ - uip_connr->len = uip_slen; - } - else - { - /* If the application already had unacknowledged data, we - make sure that the application does not send (i.e., - retransmit) out more than it previously sent out. */ - uip_slen = uip_connr->len; - } - } - - uip_connr->nrtx = 0; -apprexmit: - uip_appdata = uip_sappdata; - - /* If the application has data to be sent, or if the incoming - packet had new data in it, we must send out a packet. */ - if( uip_slen > 0 && uip_connr->len > 0 ) - { - /* Add the length of the IP and TCP headers. */ - uip_len = uip_connr->len + UIP_TCPIP_HLEN; - - /* We always set the ACK flag in response packets. */ - BUF->flags = TCP_ACK | TCP_PSH; - - /* Send the packet. */ - goto tcp_send_noopts; - } - - /* If there is no data to send, just send out a pure ACK if - there is newdata. */ - if( uip_flags & UIP_NEWDATA ) - { - uip_len = UIP_TCPIP_HLEN; - BUF->flags = TCP_ACK; - goto tcp_send_noopts; - } - } - - goto drop; - - case UIP_LAST_ACK: - /* We can close this connection if the peer has acknowledged our - FIN. This is indicated by the UIP_ACKDATA flag. */ - if( uip_flags & UIP_ACKDATA ) - { - uip_connr->tcpstateflags = UIP_CLOSED; - uip_flags = UIP_CLOSE; - UIP_APPCALL(); - } - - break; - - case UIP_FIN_WAIT_1: - /* The application has closed the connection, but the remote host - hasn't closed its end yet. Thus we do nothing but wait for a - FIN from the other side. */ - if( uip_len > 0 ) - { - uip_add_rcv_nxt( uip_len ); - } - - if( BUF->flags & TCP_FIN ) - { - if( uip_flags & UIP_ACKDATA ) - { - uip_connr->tcpstateflags = UIP_TIME_WAIT; - uip_connr->timer = 0; - uip_connr->len = 0; - } - else - { - uip_connr->tcpstateflags = UIP_CLOSING; - } - - uip_add_rcv_nxt( 1 ); - uip_flags = UIP_CLOSE; - UIP_APPCALL(); - goto tcp_send_ack; - } - else if( uip_flags & UIP_ACKDATA ) - { - uip_connr->tcpstateflags = UIP_FIN_WAIT_2; - uip_connr->len = 0; - goto drop; - } - - if( uip_len > 0 ) - { - goto tcp_send_ack; - } - - goto drop; - - case UIP_FIN_WAIT_2: - if( uip_len > 0 ) - { - uip_add_rcv_nxt( uip_len ); - } - - if( BUF->flags & TCP_FIN ) - { - uip_connr->tcpstateflags = UIP_TIME_WAIT; - uip_connr->timer = 0; - uip_add_rcv_nxt( 1 ); - uip_flags = UIP_CLOSE; - UIP_APPCALL(); - goto tcp_send_ack; - } - - if( uip_len > 0 ) - { - goto tcp_send_ack; - } - - goto drop; - - case UIP_TIME_WAIT: - goto tcp_send_ack; - - case UIP_CLOSING: - if( uip_flags & UIP_ACKDATA ) - { - uip_connr->tcpstateflags = UIP_TIME_WAIT; - uip_connr->timer = 0; - } - } - - goto drop; - - /* We jump here when we are ready to send the packet, and just want - to set the appropriate TCP sequence numbers in the TCP header. */ -tcp_send_ack: - BUF->flags = TCP_ACK; - -tcp_send_nodata: - uip_len = UIP_IPTCPH_LEN; - -tcp_send_noopts: - BUF->tcpoffset = ( UIP_TCPH_LEN / 4 ) << 4; - - /* We're done with the input processing. We are now ready to send a - reply. Our job is to fill in all the fields of the TCP and IP - headers before calculating the checksum and finally send the - packet. */ -tcp_send: - BUF->ackno[ 0 ] = uip_connr->rcv_nxt[ 0 ]; - BUF->ackno[ 1 ] = uip_connr->rcv_nxt[ 1 ]; - BUF->ackno[ 2 ] = uip_connr->rcv_nxt[ 2 ]; - BUF->ackno[ 3 ] = uip_connr->rcv_nxt[ 3 ]; - - BUF->seqno[ 0 ] = uip_connr->snd_nxt[ 0 ]; - BUF->seqno[ 1 ] = uip_connr->snd_nxt[ 1 ]; - BUF->seqno[ 2 ] = uip_connr->snd_nxt[ 2 ]; - BUF->seqno[ 3 ] = uip_connr->snd_nxt[ 3 ]; - - BUF->proto = UIP_PROTO_TCP; - - BUF->srcport = uip_connr->lport; - BUF->destport = uip_connr->rport; - - uip_ipaddr_copy( &BUF->srcipaddr, &uip_hostaddr ); - uip_ipaddr_copy( &BUF->destipaddr, &uip_connr->ripaddr ); - - if( uip_connr->tcpstateflags & UIP_STOPPED ) - { - /* If the connection has issued uip_stop(), we advertise a zero - window so that the remote host will stop sending data. */ - BUF->wnd[ 0 ] = BUF->wnd[ 1 ] = 0; - } - else - { - BUF->wnd[ 0 ] = ( (UIP_RECEIVE_WINDOW) >> 8 ); - BUF->wnd[ 1 ] = ( (UIP_RECEIVE_WINDOW) & 0xff ); - } - -tcp_send_noconn: - - BUF->ttl = UIP_TTL; - - #if UIP_CONF_IPV6 - /* For IPv6, the IP length field does not include the IPv6 IP header - length. */ - BUF->len[ 0 ] = ( (uip_len - UIP_IPH_LEN) >> 8 ); - BUF->len[ 1 ] = ( (uip_len - UIP_IPH_LEN) & 0xff ); - #else /* UIP_CONF_IPV6 */ - BUF->len[ 0 ] = ( uip_len >> 8 ); - BUF->len[ 1 ] = ( uip_len & 0xff ); - #endif /* UIP_CONF_IPV6 */ - - BUF->urgp[ 0 ] = BUF->urgp[ 1 ] = 0; - - /* Calculate TCP checksum. */ - BUF->tcpchksum = 0; - BUF->tcpchksum = ~( uip_tcpchksum() ); - -ip_send_nolen: - #if UIP_CONF_IPV6 - BUF->vtc = 0x60; - BUF->tcflow = 0x00; - BUF->flow = 0x00; - #else /* UIP_CONF_IPV6 */ - BUF->vhl = 0x45; - BUF->tos = 0; - BUF->ipoffset[ 0 ] = BUF->ipoffset[ 1 ] = 0; - ++ipid; - BUF->ipid[ 0 ] = ipid >> 8; - BUF->ipid[ 1 ] = ipid & 0xff; - - /* Calculate IP checksum. */ - BUF->ipchksum = 0; - BUF->ipchksum = ~( uip_ipchksum() ); - - //DEBUG_PRINTF( "uip ip_send_nolen: chkecum 0x%04x\n", uip_ipchksum() ); - #endif /* UIP_CONF_IPV6 */ - - UIP_STAT( ++uip_stat.tcp.sent ); - - #if UIP_CONF_IPV6 -send : - #endif /* UIP_CONF_IPV6 */ - - //DEBUG_PRINTF( "Sending packet with length %d (%d)\n", uip_len, (BUF->len[ 0 ] << 8) | BUF->len[ 1 ] ); - UIP_STAT( ++uip_stat.ip.sent ); - - /* Return and let the caller do the actual transmission. */ - uip_flags = 0; - return; - -drop: - uip_len = 0; - uip_flags = 0; - return; -} -/*---------------------------------------------------------------------------*/ - -u16_t htons( u16_t val ) -{ - return HTONS( val ); -} - -u32_t htonl( u32_t val ) -{ - return HTONL( val ); -} -/*---------------------------------------------------------------------------*/ - -void uip_send( const void *data, int len ) -{ - int copylen; - - #define MIN( a, b ) ( (a) < (b) ? (a) : (b) ) - - copylen = MIN( len, UIP_BUFSIZE - UIP_LLH_LEN - UIP_TCPIP_HLEN - ( int ) - (( char * ) uip_sappdata - ( char * ) &uip_buf[UIP_LLH_LEN + UIP_TCPIP_HLEN]) ); - if( copylen > 0 ) - { - uip_slen = copylen; - if( data != uip_sappdata ) - { - memcpy( uip_sappdata, (data), uip_slen ); - } - } -} -/*---------------------------------------------------------------------------*/ - -/** @} */ -#endif /* UIP_CONF_IPV6 */ diff --git a/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/uip_arp.c b/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/uip_arp.c deleted file mode 100644 index ab84419c6..000000000 --- a/FreeRTOS/Demo/Common/ethernet/FreeTCPIP/uip_arp.c +++ /dev/null @@ -1,475 +0,0 @@ -/** - * \addtogroup uip - * @{ - */ - -/** - * \defgroup uiparp uIP Address Resolution Protocol - * @{ - * - * The Address Resolution Protocol ARP is used for mapping between IP - * addresses and link level addresses such as the Ethernet MAC - * addresses. ARP uses broadcast queries to ask for the link level - * address of a known IP address and the host which is configured with - * the IP address for which the query was meant, will respond with its - * link level address. - * - * \note This ARP implementation only supports Ethernet. - */ - -/** - * \file - * Implementation of the ARP Address Resolution Protocol. - * \author Adam Dunkels - * - */ - -/* - * Copyright (c) 2001-2003, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: uip_arp.c,v 1.5 2008/02/07 01:35:00 adamdunkels Exp $ - * - */ -#include "net/uip_arp.h" - -#include - -#include "net/pack_struct_start.h" -struct arp_hdr -{ - struct uip_eth_hdr ethhdr; - u16_t hwtype; - u16_t protocol; - u8_t hwlen; - u8_t protolen; - u16_t opcode; - struct uip_eth_addr shwaddr; - uip_ipaddr_t sipaddr; - struct uip_eth_addr dhwaddr; - uip_ipaddr_t dipaddr; -} - -#include "net/pack_struct_end.h" - -#include "net/pack_struct_start.h" - -struct ethip_hdr -{ - struct uip_eth_hdr ethhdr; - - /* IP header. */ - u8_t vhl, tos, len[2], ipid[2], ipoffset[2], ttl, proto; - u16_t ipchksum; - uip_ipaddr_t srcipaddr, destipaddr; -} - -#include "net/pack_struct_end.h" - -#define ARP_REQUEST 1 -#define ARP_REPLY 2 - -#define ARP_HWTYPE_ETH 1 - -struct arp_entry -{ - uip_ipaddr_t ipaddr; - struct uip_eth_addr ethaddr; - u8_t time; -}; - -static const struct uip_eth_addr broadcast_ethaddr = { { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff } }; - -static struct arp_entry arp_table[UIP_ARPTAB_SIZE]; -static uip_ipaddr_t ipaddr; -static u8_t i, c; - -static u8_t arptime; -static u8_t tmpage; - -#define BUF ( ( struct arp_hdr * ) &uip_buf[0] ) -#define IPBUF ( ( struct ethip_hdr * ) &uip_buf[0] ) - -#ifdef DEBUG - #undef DEBUG -#endif -#define DEBUG 0 -#if DEBUG -#include -#define PRINTF( ... ) printf( __VA_ARGS__ ) -#else - -//#define PRINTF( ... ) -#endif - -/*-----------------------------------------------------------------------------------*/ - -/** - * Initialize the ARP module. - * - */ - -/*-----------------------------------------------------------------------------------*/ -void uip_arp_init( void ) -{ - for( i = 0; i < UIP_ARPTAB_SIZE; ++i ) - { - memset( &arp_table[i].ipaddr, 0, 4 ); - } -} - -/*-----------------------------------------------------------------------------------*/ - -/** - * Periodic ARP processing function. - * - * This function performs periodic timer processing in the ARP module - * and should be called at regular intervals. The recommended interval - * is 10 seconds between the calls. - * - */ - -/*-----------------------------------------------------------------------------------*/ -void uip_arp_timer( void ) -{ - struct arp_entry *tabptr; - - ++arptime; - for( i = 0; i < UIP_ARPTAB_SIZE; ++i ) - { - tabptr = &arp_table[i]; - if( uip_ipaddr_cmp(&tabptr->ipaddr, &uip_all_zeroes_addr) && arptime - tabptr->time >= UIP_ARP_MAXAGE ) - { - memset( &tabptr->ipaddr, 0, 4 ); - } - } -} - -/*-----------------------------------------------------------------------------------*/ -static void uip_arp_update( uip_ipaddr_t *ipaddr, struct uip_eth_addr *ethaddr ) -{ - register struct arp_entry *tabptr; - - /* Walk through the ARP mapping table and try to find an entry to - update. If none is found, the IP -> MAC address mapping is - inserted in the ARP table. */ - for( i = 0; i < UIP_ARPTAB_SIZE; ++i ) - { - tabptr = &arp_table[i]; - - /* Only check those entries that are actually in use. */ - if( !uip_ipaddr_cmp(&tabptr->ipaddr, &uip_all_zeroes_addr) ) - { - /* Check if the source IP address of the incoming packet matches - the IP address in this ARP table entry. */ - if( uip_ipaddr_cmp(ipaddr, &tabptr->ipaddr) ) - { - /* An old entry found, update this and return. */ - memcpy( tabptr->ethaddr.addr, ethaddr->addr, 6 ); - tabptr->time = arptime; - - return; - } - } - } - - /* If we get here, no existing ARP table entry was found, so we - create one. */ - - /* First, we try to find an unused entry in the ARP table. */ - for( i = 0; i < UIP_ARPTAB_SIZE; ++i ) - { - tabptr = &arp_table[i]; - if( uip_ipaddr_cmp(&tabptr->ipaddr, &uip_all_zeroes_addr) ) - { - break; - } - } - - /* If no unused entry is found, we try to find the oldest entry and - throw it away. */ - if( i == UIP_ARPTAB_SIZE ) - { - tmpage = 0; - c = 0; - for( i = 0; i < UIP_ARPTAB_SIZE; ++i ) - { - tabptr = &arp_table[i]; - if( arptime - tabptr->time > tmpage ) - { - tmpage = arptime - tabptr->time; - c = i; - } - } - - i = c; - tabptr = &arp_table[i]; - } - - /* Now, i is the ARP table entry which we will fill with the new - information. */ - uip_ipaddr_copy( &tabptr->ipaddr, ipaddr ); - memcpy( tabptr->ethaddr.addr, ethaddr->addr, 6 ); - tabptr->time = arptime; -} - -/*-----------------------------------------------------------------------------------*/ - -/** - * ARP processing for incoming IP packets - * - * This function should be called by the device driver when an IP - * packet has been received. The function will check if the address is - * in the ARP cache, and if so the ARP cache entry will be - * refreshed. If no ARP cache entry was found, a new one is created. - * - * This function expects an IP packet with a prepended Ethernet header - * in the uip_buf[] buffer, and the length of the packet in the global - * variable uip_len. - */ - -/*-----------------------------------------------------------------------------------*/ -#if 0 -void uip_arp_ipin( void ) -{ - uip_len -= sizeof( struct uip_eth_hdr ); - - /* Only insert/update an entry if the source IP address of the - incoming IP packet comes from a host on the local network. */ - if( (IPBUF->srcipaddr[0] & uip_netmask[0]) != (uip_hostaddr[0] & uip_netmask[0]) ) - { - return; - } - - if( (IPBUF->srcipaddr[1] & uip_netmask[1]) != (uip_hostaddr[1] & uip_netmask[1]) ) - { - return; - } - - uip_arp_update( IPBUF->srcipaddr, &(IPBUF->ethhdr.src) ); - - return; -} - -#endif /* 0 */ - -/*-----------------------------------------------------------------------------------*/ - -/** - * ARP processing for incoming ARP packets. - * - * This function should be called by the device driver when an ARP - * packet has been received. The function will act differently - * depending on the ARP packet type: if it is a reply for a request - * that we previously sent out, the ARP cache will be filled in with - * the values from the ARP reply. If the incoming ARP packet is an ARP - * request for our IP address, an ARP reply packet is created and put - * into the uip_buf[] buffer. - * - * When the function returns, the value of the global variable uip_len - * indicates whether the device driver should send out a packet or - * not. If uip_len is zero, no packet should be sent. If uip_len is - * non-zero, it contains the length of the outbound packet that is - * present in the uip_buf[] buffer. - * - * This function expects an ARP packet with a prepended Ethernet - * header in the uip_buf[] buffer, and the length of the packet in the - * global variable uip_len. - */ - -/*-----------------------------------------------------------------------------------*/ -void uip_arp_arpin( void ) -{ - if( uip_len < sizeof(struct arp_hdr) ) - { - uip_len = 0; - return; - } - - uip_len = 0; - - switch( BUF->opcode ) - { - case HTONS( ARP_REQUEST ): - /* ARP request. If it asked for our address, we send out a - reply. */ - - /* if(BUF->dipaddr[0] == uip_hostaddr[0] && - BUF->dipaddr[1] == uip_hostaddr[1]) {*/ - - //PRINTF( "uip_arp_arpin: request for %d.%d.%d.%d (we are %d.%d.%d.%d)\n", BUF->dipaddr.u8[0], BUF->dipaddr.u8[1], BUF->dipaddr.u8[2], - //BUF->dipaddr.u8[3], uip_hostaddr.u8[0], uip_hostaddr.u8[1], uip_hostaddr.u8[2], uip_hostaddr.u8[3] ); - if( uip_ipaddr_cmp(&BUF->dipaddr, &uip_hostaddr) ) - { - /* First, we register the one who made the request in our ARP - table, since it is likely that we will do more communication - with this host in the future. */ - uip_arp_update( &BUF->sipaddr, &BUF->shwaddr ); - - BUF->opcode = HTONS( ARP_REPLY ); - - memcpy( BUF->dhwaddr.addr, BUF->shwaddr.addr, 6 ); - memcpy( BUF->shwaddr.addr, uip_ethaddr.addr, 6 ); - memcpy( BUF->ethhdr.src.addr, uip_ethaddr.addr, 6 ); - memcpy( BUF->ethhdr.dest.addr, BUF->dhwaddr.addr, 6 ); - - uip_ipaddr_copy( &BUF->dipaddr, &BUF->sipaddr ); - uip_ipaddr_copy( &BUF->sipaddr, &uip_hostaddr ); - - BUF->ethhdr.type = HTONS( UIP_ETHTYPE_ARP ); - uip_len = sizeof( struct arp_hdr ); - } - - break; - - case HTONS( ARP_REPLY ): - /* ARP reply. We insert or update the ARP table if it was meant - for us. */ - if( uip_ipaddr_cmp(&BUF->dipaddr, &uip_hostaddr) ) - { - uip_arp_update( &BUF->sipaddr, &BUF->shwaddr ); - } - - break; - } - - return; -} - -/*-----------------------------------------------------------------------------------*/ - -/** - * Prepend Ethernet header to an outbound IP packet and see if we need - * to send out an ARP request. - * - * This function should be called before sending out an IP packet. The - * function checks the destination IP address of the IP packet to see - * what Ethernet MAC address that should be used as a destination MAC - * address on the Ethernet. - * - * If the destination IP address is in the local network (determined - * by logical ANDing of netmask and our IP address), the function - * checks the ARP cache to see if an entry for the destination IP - * address is found. If so, an Ethernet header is prepended and the - * function returns. If no ARP cache entry is found for the - * destination IP address, the packet in the uip_buf[] is replaced by - * an ARP request packet for the IP address. The IP packet is dropped - * and it is assumed that they higher level protocols (e.g., TCP) - * eventually will retransmit the dropped packet. - * - * If the destination IP address is not on the local network, the IP - * address of the default router is used instead. - * - * When the function returns, a packet is present in the uip_buf[] - * buffer, and the length of the packet is in the global variable - * uip_len. - */ - -/*-----------------------------------------------------------------------------------*/ -void uip_arp_out( void ) -{ - struct arp_entry *tabptr; - - /* Find the destination IP address in the ARP table and construct - the Ethernet header. If the destination IP addres isn't on the - local network, we use the default router's IP address instead. - - If not ARP table entry is found, we overwrite the original IP - packet with an ARP request for the IP address. */ - - /* First check if destination is a local broadcast. */ - if( uip_ipaddr_cmp(&IPBUF->destipaddr, &uip_broadcast_addr) ) - { - memcpy( IPBUF->ethhdr.dest.addr, broadcast_ethaddr.addr, 6 ); - } - else - { - /* Check if the destination address is on the local network. */ - if( !uip_ipaddr_maskcmp(&IPBUF->destipaddr, &uip_hostaddr, &uip_netmask) ) - { - /* Destination address was not on the local network, so we need to - use the default router's IP address instead of the destination - address when determining the MAC address. */ - uip_ipaddr_copy( &ipaddr, &uip_draddr ); - } - else - { - /* Else, we use the destination IP address. */ - uip_ipaddr_copy( &ipaddr, &IPBUF->destipaddr ); - } - - for( i = 0; i < UIP_ARPTAB_SIZE; ++i ) - { - tabptr = &arp_table[i]; - if( uip_ipaddr_cmp(&ipaddr, &tabptr->ipaddr) ) - { - break; - } - } - - if( i == UIP_ARPTAB_SIZE ) - { - /* The destination address was not in our ARP table, so we - overwrite the IP packet with an ARP request. */ - memset( BUF->ethhdr.dest.addr, 0xff, 6 ); - memset( BUF->dhwaddr.addr, 0x00, 6 ); - memcpy( BUF->ethhdr.src.addr, uip_ethaddr.addr, 6 ); - memcpy( BUF->shwaddr.addr, uip_ethaddr.addr, 6 ); - - uip_ipaddr_copy( &BUF->dipaddr, &ipaddr ); - uip_ipaddr_copy( &BUF->sipaddr, &uip_hostaddr ); - BUF->opcode = HTONS( ARP_REQUEST ); /* ARP request. */ - BUF->hwtype = HTONS( ARP_HWTYPE_ETH ); - BUF->protocol = HTONS( UIP_ETHTYPE_IP ); - BUF->hwlen = 6; - BUF->protolen = 4; - BUF->ethhdr.type = HTONS( UIP_ETHTYPE_ARP ); - - uip_appdata = &uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN]; - - uip_len = sizeof( struct arp_hdr ); - return; - } - - /* Build an ethernet header. */ - memcpy( IPBUF->ethhdr.dest.addr, tabptr->ethaddr.addr, 6 ); - } - - memcpy( IPBUF->ethhdr.src.addr, uip_ethaddr.addr, 6 ); - - IPBUF->ethhdr.type = HTONS( UIP_ETHTYPE_IP ); - - uip_len += sizeof( struct uip_eth_hdr ); -} - -/*-----------------------------------------------------------------------------------*/ - -/** @} */ - -/** @} */ diff --git a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/README b/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/README deleted file mode 100644 index 909f6520f..000000000 --- a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/README +++ /dev/null @@ -1,13 +0,0 @@ -uIP is a very small implementation of the TCP/IP stack that is written -by Adam Dunkels . More information can be obtained -at the uIP homepage at http://www.sics.se/~adam/uip/. - -This is version $Name: uip-1-0 $. - -The directory structure look as follows: - -apps/ - Example applications -doc/ - Documentation -lib/ - Library code used by some applications -uip/ - uIP TCP/IP stack code -unix/ - uIP as a user space process under FreeBSD or Linux diff --git a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/README b/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/README deleted file mode 100644 index f88920952..000000000 --- a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/README +++ /dev/null @@ -1,2 +0,0 @@ -This directory contains a few example applications. They are not all -heavily tested, however. diff --git a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/Makefile.webserver b/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/Makefile.webserver deleted file mode 100644 index f38c47a72..000000000 --- a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/Makefile.webserver +++ /dev/null @@ -1 +0,0 @@ -APP_SOURCES += httpd.c http-strings.c httpd-fs.c httpd-cgi.c diff --git a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/http-strings b/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/http-strings deleted file mode 100644 index 0d3c30cdd..000000000 --- a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/http-strings +++ /dev/null @@ -1,35 +0,0 @@ -http_http "http://" -http_200 "200 " -http_301 "301 " -http_302 "302 " -http_get "GET " -http_10 "HTTP/1.0" -http_11 "HTTP/1.1" -http_content_type "content-type: " -http_texthtml "text/html" -http_location "location: " -http_host "host: " -http_crnl "\r\n" -http_index_html "/index.html" -http_404_html "/404.html" -http_referer "Referer:" -http_header_200 "HTTP/1.0 200 OK\r\nServer: uIP/1.0 http://www.sics.se/~adam/uip/\r\nConnection: close\r\n" -http_header_404 "HTTP/1.0 404 Not found\r\nServer: uIP/1.0 http://www.sics.se/~adam/uip/\r\nConnection: close\r\n" -http_content_type_plain "Content-type: text/plain\r\n\r\n" -http_content_type_html "Content-type: text/html\r\n\r\n" -http_content_type_css "Content-type: text/css\r\n\r\n" -http_content_type_text "Content-type: text/text\r\n\r\n" -http_content_type_png "Content-type: image/png\r\n\r\n" -http_content_type_gif "Content-type: image/gif\r\n\r\n" -http_content_type_jpg "Content-type: image/jpeg\r\n\r\n" -http_content_type_binary "Content-type: application/octet-stream\r\n\r\n" -http_html ".html" -http_shtml ".shtml" -http_htm ".htm" -http_css ".css" -http_png ".png" -http_gif ".gif" -http_jpg ".jpg" -http_text ".txt" -http_txt ".txt" - diff --git a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/http-strings.c b/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/http-strings.c deleted file mode 100644 index ef7a41c7d..000000000 --- a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/http-strings.c +++ /dev/null @@ -1,102 +0,0 @@ -const char http_http[8] = -/* "http://" */ -{0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, }; -const char http_200[5] = -/* "200 " */ -{0x32, 0x30, 0x30, 0x20, }; -const char http_301[5] = -/* "301 " */ -{0x33, 0x30, 0x31, 0x20, }; -const char http_302[5] = -/* "302 " */ -{0x33, 0x30, 0x32, 0x20, }; -const char http_get[5] = -/* "GET " */ -{0x47, 0x45, 0x54, 0x20, }; -const char http_10[9] = -/* "HTTP/1.0" */ -{0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30, }; -const char http_11[9] = -/* "HTTP/1.1" */ -{0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x31, }; -const char http_content_type[15] = -/* "content-type: " */ -{0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, }; -const char http_texthtml[10] = -/* "text/html" */ -{0x74, 0x65, 0x78, 0x74, 0x2f, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_location[11] = -/* "location: " */ -{0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, }; -const char http_host[7] = -/* "host: " */ -{0x68, 0x6f, 0x73, 0x74, 0x3a, 0x20, }; -const char http_crnl[3] = -/* "\r\n" */ -{0xd, 0xa, }; -const char http_index_html[12] = -/* "/index.html" */ -{0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_404_html[10] = -/* "/404.html" */ -{0x2f, 0x34, 0x30, 0x34, 0x2e, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_referer[9] = -/* "Referer:" */ -{0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x72, 0x3a, }; -const char http_header_200[84] = -/* "HTTP/1.0 200 OK\r\nServer: uIP/1.0 http://www.sics.se/~adam/uip/\r\nConnection: close\r\n" */ -{0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x32, 0x30, 0x30, 0x20, 0x4f, 0x4b, 0xd, 0xa, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x3a, 0x20, 0x75, 0x49, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x73, 0x69, 0x63, 0x73, 0x2e, 0x73, 0x65, 0x2f, 0x7e, 0x61, 0x64, 0x61, 0x6d, 0x2f, 0x75, 0x69, 0x70, 0x2f, 0xd, 0xa, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0xd, 0xa, }; -const char http_header_404[91] = -/* "HTTP/1.0 404 Not found\r\nServer: uIP/1.0 http://www.sics.se/~adam/uip/\r\nConnection: close\r\n" */ -{0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x34, 0x30, 0x34, 0x20, 0x4e, 0x6f, 0x74, 0x20, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0xd, 0xa, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x3a, 0x20, 0x75, 0x49, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x73, 0x69, 0x63, 0x73, 0x2e, 0x73, 0x65, 0x2f, 0x7e, 0x61, 0x64, 0x61, 0x6d, 0x2f, 0x75, 0x69, 0x70, 0x2f, 0xd, 0xa, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0xd, 0xa, }; -const char http_content_type_plain[29] = -/* "Content-type: text/plain\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_html[28] = -/* "Content-type: text/html\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_css [27] = -/* "Content-type: text/css\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x63, 0x73, 0x73, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_text[28] = -/* "Content-type: text/text\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x74, 0x65, 0x78, 0x74, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_png [28] = -/* "Content-type: image/png\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x70, 0x6e, 0x67, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_gif [28] = -/* "Content-type: image/gif\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x67, 0x69, 0x66, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_jpg [29] = -/* "Content-type: image/jpeg\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x6a, 0x70, 0x65, 0x67, 0xd, 0xa, 0xd, 0xa, }; -const char http_content_type_binary[43] = -/* "Content-type: application/octet-stream\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x6f, 0x63, 0x74, 0x65, 0x74, 0x2d, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0xd, 0xa, 0xd, 0xa, }; -const char http_html[6] = -/* ".html" */ -{0x2e, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_shtml[7] = -/* ".shtml" */ -{0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, }; -const char http_htm[5] = -/* ".htm" */ -{0x2e, 0x68, 0x74, 0x6d, }; -const char http_css[5] = -/* ".css" */ -{0x2e, 0x63, 0x73, 0x73, }; -const char http_png[5] = -/* ".png" */ -{0x2e, 0x70, 0x6e, 0x67, }; -const char http_gif[5] = -/* ".gif" */ -{0x2e, 0x67, 0x69, 0x66, }; -const char http_jpg[5] = -/* ".jpg" */ -{0x2e, 0x6a, 0x70, 0x67, }; -const char http_text[5] = -/* ".txt" */ -{0x2e, 0x74, 0x78, 0x74, }; -const char http_txt[5] = -/* ".txt" */ -{0x2e, 0x74, 0x78, 0x74, }; diff --git a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/http-strings.h b/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/http-strings.h deleted file mode 100644 index acbe7e17f..000000000 --- a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/http-strings.h +++ /dev/null @@ -1,34 +0,0 @@ -extern const char http_http[8]; -extern const char http_200[5]; -extern const char http_301[5]; -extern const char http_302[5]; -extern const char http_get[5]; -extern const char http_10[9]; -extern const char http_11[9]; -extern const char http_content_type[15]; -extern const char http_texthtml[10]; -extern const char http_location[11]; -extern const char http_host[7]; -extern const char http_crnl[3]; -extern const char http_index_html[12]; -extern const char http_404_html[10]; -extern const char http_referer[9]; -extern const char http_header_200[84]; -extern const char http_header_404[91]; -extern const char http_content_type_plain[29]; -extern const char http_content_type_html[28]; -extern const char http_content_type_css [27]; -extern const char http_content_type_text[28]; -extern const char http_content_type_png [28]; -extern const char http_content_type_gif [28]; -extern const char http_content_type_jpg [29]; -extern const char http_content_type_binary[43]; -extern const char http_html[6]; -extern const char http_shtml[7]; -extern const char http_htm[5]; -extern const char http_css[5]; -extern const char http_png[5]; -extern const char http_gif[5]; -extern const char http_jpg[5]; -extern const char http_text[5]; -extern const char http_txt[5]; diff --git a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/httpd-cgi.c b/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/httpd-cgi.c deleted file mode 100644 index f845c7aa8..000000000 --- a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/httpd-cgi.c +++ /dev/null @@ -1,203 +0,0 @@ -/** - * \addtogroup httpd - * @{ - */ - -/** - * \file - * Web server script interface - * \author - * Adam Dunkels - * - */ - -/* - * Copyright (c) 2001-2006, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: httpd-cgi.c,v 1.2 2006/06/11 21:46:37 adam Exp $ - * - */ - -#include "uip.h" -#include "psock.h" -#include "httpd.h" -#include "httpd-cgi.h" -#include "httpd-fs.h" - -#include -#include - -HTTPD_CGI_CALL(file, "file-stats", file_stats); -HTTPD_CGI_CALL(tcp, "tcp-connections", tcp_stats); -HTTPD_CGI_CALL(net, "net-stats", net_stats); - -static const struct httpd_cgi_call *calls[] = { &file, &tcp, &net, NULL }; - -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(nullfunction(struct httpd_state *s, char *ptr)) -{ - PSOCK_BEGIN(&s->sout); - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -httpd_cgifunction -httpd_cgi(char *name) -{ - const struct httpd_cgi_call **f; - - /* Find the matching name in the table, return the function. */ - for(f = calls; *f != NULL; ++f) { - if(strncmp((*f)->name, name, strlen((*f)->name)) == 0) { - return (*f)->function; - } - } - return nullfunction; -} -/*---------------------------------------------------------------------------*/ -static unsigned short -generate_file_stats(void *arg) -{ - char *f = (char *)arg; - return snprintf((char *)uip_appdata, UIP_APPDATA_SIZE, "%5u", httpd_fs_count(f)); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(file_stats(struct httpd_state *s, char *ptr)) -{ - PSOCK_BEGIN(&s->sout); - - PSOCK_GENERATOR_SEND(&s->sout, generate_file_stats, strchr(ptr, ' ') + 1); - - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -static const char closed[] = /* "CLOSED",*/ -{0x43, 0x4c, 0x4f, 0x53, 0x45, 0x44, 0}; -static const char syn_rcvd[] = /* "SYN-RCVD",*/ -{0x53, 0x59, 0x4e, 0x2d, 0x52, 0x43, 0x56, - 0x44, 0}; -static const char syn_sent[] = /* "SYN-SENT",*/ -{0x53, 0x59, 0x4e, 0x2d, 0x53, 0x45, 0x4e, - 0x54, 0}; -static const char established[] = /* "ESTABLISHED",*/ -{0x45, 0x53, 0x54, 0x41, 0x42, 0x4c, 0x49, 0x53, 0x48, - 0x45, 0x44, 0}; -static const char fin_wait_1[] = /* "FIN-WAIT-1",*/ -{0x46, 0x49, 0x4e, 0x2d, 0x57, 0x41, 0x49, - 0x54, 0x2d, 0x31, 0}; -static const char fin_wait_2[] = /* "FIN-WAIT-2",*/ -{0x46, 0x49, 0x4e, 0x2d, 0x57, 0x41, 0x49, - 0x54, 0x2d, 0x32, 0}; -static const char closing[] = /* "CLOSING",*/ -{0x43, 0x4c, 0x4f, 0x53, 0x49, - 0x4e, 0x47, 0}; -static const char time_wait[] = /* "TIME-WAIT,"*/ -{0x54, 0x49, 0x4d, 0x45, 0x2d, 0x57, 0x41, - 0x49, 0x54, 0}; -static const char last_ack[] = /* "LAST-ACK"*/ -{0x4c, 0x41, 0x53, 0x54, 0x2d, 0x41, 0x43, - 0x4b, 0}; - -static const char *states[] = { - closed, - syn_rcvd, - syn_sent, - established, - fin_wait_1, - fin_wait_2, - closing, - time_wait, - last_ack}; - - -static unsigned short -generate_tcp_stats(void *arg) -{ - struct uip_conn *conn; - struct httpd_state *s = (struct httpd_state *)arg; - - conn = &uip_conns[s->count]; - return snprintf((char *)uip_appdata, UIP_APPDATA_SIZE, - "\r\n", - htons(conn->lport), - htons(conn->ripaddr[0]) >> 8, - htons(conn->ripaddr[0]) & 0xff, - htons(conn->ripaddr[1]) >> 8, - htons(conn->ripaddr[1]) & 0xff, - htons(conn->rport), - states[conn->tcpstateflags & UIP_TS_MASK], - conn->nrtx, - conn->timer, - (uip_outstanding(conn))? '*':' ', - (uip_stopped(conn))? '!':' '); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(tcp_stats(struct httpd_state *s, char *ptr)) -{ - - PSOCK_BEGIN(&s->sout); - - for(s->count = 0; s->count < UIP_CONNS; ++s->count) { - if((uip_conns[s->count].tcpstateflags & UIP_TS_MASK) != UIP_CLOSED) { - PSOCK_GENERATOR_SEND(&s->sout, generate_tcp_stats, s); - } - } - - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -static unsigned short -generate_net_stats(void *arg) -{ - struct httpd_state *s = (struct httpd_state *)arg; - return snprintf((char *)uip_appdata, UIP_APPDATA_SIZE, - "%5u\n", ((uip_stats_t *)&uip_stat)[s->count]); -} - -static -PT_THREAD(net_stats(struct httpd_state *s, char *ptr)) -{ - PSOCK_BEGIN(&s->sout); - -#if UIP_STATISTICS - - for(s->count = 0; s->count < sizeof(uip_stat) / sizeof(uip_stats_t); - ++s->count) { - PSOCK_GENERATOR_SEND(&s->sout, generate_net_stats, s); - } - -#endif /* UIP_STATISTICS */ - - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -/** @} */ diff --git a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/httpd-cgi.h b/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/httpd-cgi.h deleted file mode 100644 index 7ae928321..000000000 --- a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/httpd-cgi.h +++ /dev/null @@ -1,84 +0,0 @@ -/** - * \addtogroup httpd - * @{ - */ - -/** - * \file - * Web server script interface header file - * \author - * Adam Dunkels - * - */ - - - -/* - * Copyright (c) 2001, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: httpd-cgi.h,v 1.2 2006/06/11 21:46:38 adam Exp $ - * - */ - -#ifndef __HTTPD_CGI_H__ -#define __HTTPD_CGI_H__ - -#include "psock.h" -#include "httpd.h" - -typedef PT_THREAD((* httpd_cgifunction)(struct httpd_state *, char *)); - -httpd_cgifunction httpd_cgi(char *name); - -struct httpd_cgi_call { - const char *name; - const httpd_cgifunction function; -}; - -/** - * \brief HTTPD CGI function declaration - * \param name The C variable name of the function - * \param str The string name of the function, used in the script file - * \param function A pointer to the function that implements it - * - * This macro is used for declaring a HTTPD CGI - * function. This function is then added to the list of - * HTTPD CGI functions with the httpd_cgi_add() function. - * - * \hideinitializer - */ -#define HTTPD_CGI_CALL(name, str, function) \ -static PT_THREAD(function(struct httpd_state *, char *)); \ -static const struct httpd_cgi_call name = {str, function} - -void httpd_cgi_init(void); -#endif /* __HTTPD_CGI_H__ */ - -/** @} */ diff --git a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/httpd-fs.c b/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/httpd-fs.c deleted file mode 100644 index dc4aef011..000000000 --- a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/httpd-fs.c +++ /dev/null @@ -1,132 +0,0 @@ -/* - * Copyright (c) 2001, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - * $Id: httpd-fs.c,v 1.1 2006/06/07 09:13:08 adam Exp $ - */ - -#include "httpd.h" -#include "httpd-fs.h" -#include "httpd-fsdata.h" - -#ifndef NULL -#define NULL 0 -#endif /* NULL */ - -#include "httpd-fsdata.c" - -#if HTTPD_FS_STATISTICS -static u16_t count[HTTPD_FS_NUMFILES]; -#endif /* HTTPD_FS_STATISTICS */ - -/*-----------------------------------------------------------------------------------*/ -static u8_t -httpd_fs_strcmp(const char *str1, const char *str2) -{ - u8_t i; - i = 0; - loop: - - if(str2[i] == 0 || - str1[i] == '\r' || - str1[i] == '\n') { - return 0; - } - - if(str1[i] != str2[i]) { - return 1; - } - - - ++i; - goto loop; -} -/*-----------------------------------------------------------------------------------*/ -int -httpd_fs_open(const char *name, struct httpd_fs_file *file) -{ -#if HTTPD_FS_STATISTICS - u16_t i = 0; -#endif /* HTTPD_FS_STATISTICS */ - struct httpd_fsdata_file_noconst *f; - - for(f = (struct httpd_fsdata_file_noconst *)HTTPD_FS_ROOT; - f != NULL; - f = (struct httpd_fsdata_file_noconst *)f->next) { - - if(httpd_fs_strcmp(name, f->name) == 0) { - file->data = f->data; - file->len = f->len; -#if HTTPD_FS_STATISTICS - ++count[i]; -#endif /* HTTPD_FS_STATISTICS */ - return 1; - } -#if HTTPD_FS_STATISTICS - ++i; -#endif /* HTTPD_FS_STATISTICS */ - - } - return 0; -} -/*-----------------------------------------------------------------------------------*/ -void -httpd_fs_init(void) -{ -#if HTTPD_FS_STATISTICS - u16_t i; - for(i = 0; i < HTTPD_FS_NUMFILES; i++) { - count[i] = 0; - } -#endif /* HTTPD_FS_STATISTICS */ -} -/*-----------------------------------------------------------------------------------*/ -#if HTTPD_FS_STATISTICS -u16_t httpd_fs_count -(char *name) -{ - struct httpd_fsdata_file_noconst *f; - u16_t i; - - i = 0; - for(f = (struct httpd_fsdata_file_noconst *)HTTPD_FS_ROOT; - f != NULL; - f = (struct httpd_fsdata_file_noconst *)f->next) { - - if(httpd_fs_strcmp(name, f->name) == 0) { - return count[i]; - } - ++i; - } - return 0; -} -#endif /* HTTPD_FS_STATISTICS */ -/*-----------------------------------------------------------------------------------*/ diff --git a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/httpd-fs.h b/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/httpd-fs.h deleted file mode 100644 index b594eea56..000000000 --- a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/httpd-fs.h +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright (c) 2001, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - * $Id: httpd-fs.h,v 1.1 2006/06/07 09:13:08 adam Exp $ - */ -#ifndef __HTTPD_FS_H__ -#define __HTTPD_FS_H__ - -#define HTTPD_FS_STATISTICS 1 - -struct httpd_fs_file { - char *data; - int len; -}; - -/* file must be allocated by caller and will be filled in - by the function. */ -int httpd_fs_open(const char *name, struct httpd_fs_file *file); - -#ifdef HTTPD_FS_STATISTICS -#if HTTPD_FS_STATISTICS == 1 -u16_t httpd_fs_count(char *name); -#endif /* HTTPD_FS_STATISTICS */ -#endif /* HTTPD_FS_STATISTICS */ - -void httpd_fs_init(void); - -#endif /* __HTTPD_FS_H__ */ diff --git a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/httpd-fs/404.html b/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/httpd-fs/404.html deleted file mode 100644 index 43e7f4cad..000000000 --- a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/httpd-fs/404.html +++ /dev/null @@ -1,8 +0,0 @@ - - -
-

404 - file not found

-

Go here instead.

-
- - \ No newline at end of file diff --git a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/httpd-fs/fade.png b/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/httpd-fs/fade.png deleted file mode 100644 index a9e69f75d..000000000 Binary files a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/httpd-fs/fade.png and /dev/null differ diff --git a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/httpd-fs/files.shtml b/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/httpd-fs/files.shtml deleted file mode 100644 index 361cc1dc1..000000000 --- a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/httpd-fs/files.shtml +++ /dev/null @@ -1,35 +0,0 @@ -%!: /header.html -

File statistics

-
-
LocalRemoteStateRetransmissionsTimerFlags
%d%u.%u.%u.%u:%u%s%u%u%c %c
%d%u.%u.%u.%u:%u%s%u%u%c %c
- - - - - - - - - - - - - - -
/index.html%! file-stats /index.html -
/files.shtml%! file-stats /files.shtml -
/tcp.shtml%! file-stats /tcp.shtml -
/stats.shtml%! file-stats /stats.shtml -
/style.css%! file-stats /style.css -
/404.html%! file-stats /404.html -
/fade.png%! file-stats /fade.png -
- -%!: /footer.html diff --git a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/httpd-fs/footer.html b/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/httpd-fs/footer.html deleted file mode 100644 index 290832ddc..000000000 --- a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/httpd-fs/footer.html +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/httpd-fs/header.html b/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/httpd-fs/header.html deleted file mode 100644 index 0c3c4efa9..000000000 --- a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/httpd-fs/header.html +++ /dev/null @@ -1,18 +0,0 @@ - - - - Welcome to the uIP web server! - - - - -

- -
diff --git a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/httpd-fs/index.html b/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/httpd-fs/index.html deleted file mode 100644 index 7af64c8df..000000000 --- a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/httpd-fs/index.html +++ /dev/null @@ -1,29 +0,0 @@ - - - - Welcome to the uIP web server! - - - - - - -
-

- These web pages are served by a small web server running on top of - the uIP embedded TCP/IP - stack. -

-

- Click on the links above for web server statistics. -

- - - diff --git a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/httpd-fs/processes.shtml b/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/httpd-fs/processes.shtml deleted file mode 100644 index be857f9eb..000000000 --- a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/httpd-fs/processes.shtml +++ /dev/null @@ -1,5 +0,0 @@ -%!: /header.html -

System processes


- -%! processes -%!: /footer.html \ No newline at end of file diff --git a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/httpd-fs/stats.shtml b/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/httpd-fs/stats.shtml deleted file mode 100644 index 7eb381af9..000000000 --- a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/httpd-fs/stats.shtml +++ /dev/null @@ -1,31 +0,0 @@ -%!: /header.html -

Network statistics

-
-
IDNamePriorityPoll handlerEvent handlerProcstate
-
-IP           Packets received
-             Packets sent
-	     Packets dropped
-IP errors    IP version/header length
-             IP length, high byte
-             IP length, low byte
-             IP fragments
-             Header checksum
-             Wrong protocol
-ICMP	     Packets received
-             Packets sent
-             Packets dropped
-             Type errors
-TCP          Packets received
-             Packets sent
-             Packets dropped
-             Checksum errors
-             Data packets without ACKs
-             Resets
-             Retransmissions
-	     No connection avaliable
-	     Connection attempts to closed ports
-
%! net-stats
-
- -%!: /footer.html diff --git a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/httpd-fs/style.css b/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/httpd-fs/style.css deleted file mode 100644 index 089fe84f2..000000000 --- a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/httpd-fs/style.css +++ /dev/null @@ -1,92 +0,0 @@ -h1 -{ - text-align: center; - font-size:14pt; - font-family:arial,helvetica; - font-weight:bold; - padding:10px; -} - -body -{ - - background-color: #fffeec; - color:black; - - font-size:8pt; - font-family:arial,helvetica; -} - -.menu -{ - margin: 4px; - width:60%; - - padding:2px; - - border: solid 1px; - background-color: #fffcd2; - text-align:left; - - font-size:9pt; - font-family:arial,helvetica; -} - -div.menubox -{ - width: 25%; - border: 0; - float: left; -text-align: center; -} - -.contentblock -{ - margin: 4px; - width:60%; - - padding:2px; - - border: 1px dotted; - background-color: white; - - font-size:8pt; - font-family:arial,helvetica; - -} - -p.intro -{ - margin-left:20px; - margin-right:20px; - - font-size:10pt; -/* font-weight:bold; */ - font-family:arial,helvetica; -} - -p.clink -{ - font-size:12pt; - font-family:courier,monospace; - text-align:center; -} - -p.clink9 -{ - font-size:9pt; - font-family:courier,monospace; - text-align:center; -} - - -p -{ - padding-left:10px; -} - -p.right -{ - text-align:right; -} - diff --git a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/httpd-fs/tcp.shtml b/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/httpd-fs/tcp.shtml deleted file mode 100644 index 2404aedf0..000000000 --- a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/httpd-fs/tcp.shtml +++ /dev/null @@ -1,5 +0,0 @@ -%!: /header.html -

Current connections


- -%! tcp-connections -%!: /footer.html \ No newline at end of file diff --git a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/httpd-fsdata.c b/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/httpd-fsdata.c deleted file mode 100644 index 29e5a1b96..000000000 --- a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/httpd-fsdata.c +++ /dev/null @@ -1,607 +0,0 @@ -static const unsigned char data_processes_shtml[] = { - /* /processes.shtml */ - 0x2f, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x25, 0x21, 0x3a, 0x20, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x65, - 0x72, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0xa, 0x3c, 0x68, 0x31, - 0x3e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x20, 0x70, 0x72, - 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x73, 0x3c, 0x2f, 0x68, - 0x31, 0x3e, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x74, 0x61, 0x62, - 0x6c, 0x65, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3d, 0x22, - 0x31, 0x30, 0x30, 0x25, 0x22, 0x3e, 0xa, 0x3c, 0x74, 0x72, - 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x49, 0x44, 0x3c, 0x2f, 0x74, - 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x4e, 0x61, 0x6d, 0x65, - 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x50, - 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x3c, 0x2f, 0x74, - 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x50, 0x6f, 0x6c, 0x6c, - 0x20, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x3c, 0x2f, - 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x45, 0x76, 0x65, - 0x6e, 0x74, 0x20, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, - 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x50, - 0x72, 0x6f, 0x63, 0x73, 0x74, 0x61, 0x74, 0x65, 0x3c, 0x2f, - 0x74, 0x68, 0x3e, 0x3c, 0x2f, 0x74, 0x72, 0x3e, 0xa, 0x25, - 0x21, 0x20, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, - 0x73, 0xa, 0x25, 0x21, 0x3a, 0x20, 0x2f, 0x66, 0x6f, 0x6f, - 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0}; - -static const unsigned char data_404_html[] = { - /* /404.html */ - 0x2f, 0x34, 0x30, 0x34, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, 0x20, 0x20, 0x3c, - 0x62, 0x6f, 0x64, 0x79, 0x20, 0x62, 0x67, 0x63, 0x6f, 0x6c, - 0x6f, 0x72, 0x3d, 0x22, 0x77, 0x68, 0x69, 0x74, 0x65, 0x22, - 0x3e, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x63, 0x65, 0x6e, - 0x74, 0x65, 0x72, 0x3e, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x3c, 0x68, 0x31, 0x3e, 0x34, 0x30, 0x34, 0x20, 0x2d, - 0x20, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x6e, 0x6f, 0x74, 0x20, - 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x3c, 0x2f, 0x68, 0x31, 0x3e, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x68, 0x33, - 0x3e, 0x47, 0x6f, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, - 0x66, 0x3d, 0x22, 0x2f, 0x22, 0x3e, 0x68, 0x65, 0x72, 0x65, - 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x65, - 0x61, 0x64, 0x2e, 0x3c, 0x2f, 0x68, 0x33, 0x3e, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x3c, 0x2f, 0x63, 0x65, 0x6e, 0x74, 0x65, - 0x72, 0x3e, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x62, 0x6f, 0x64, - 0x79, 0x3e, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, -0}; - -static const unsigned char data_files_shtml[] = { - /* /files.shtml */ - 0x2f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x25, 0x21, 0x3a, 0x20, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x65, - 0x72, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0xa, 0x3c, 0x68, 0x31, - 0x3e, 0x46, 0x69, 0x6c, 0x65, 0x20, 0x73, 0x74, 0x61, 0x74, - 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x3c, 0x2f, 0x68, 0x31, - 0x3e, 0xa, 0x3c, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x3e, - 0xa, 0x3c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x77, 0x69, - 0x64, 0x74, 0x68, 0x3d, 0x22, 0x33, 0x30, 0x30, 0x22, 0x3e, - 0xa, 0x3c, 0x74, 0x72, 0x3e, 0x3c, 0x74, 0x64, 0x3e, 0x3c, - 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x2f, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x22, - 0x3e, 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x68, 0x74, - 0x6d, 0x6c, 0x3c, 0x2f, 0x61, 0x3e, 0x3c, 0x2f, 0x74, 0x64, - 0x3e, 0xa, 0x3c, 0x74, 0x64, 0x3e, 0x25, 0x21, 0x20, 0x66, - 0x69, 0x6c, 0x65, 0x2d, 0x73, 0x74, 0x61, 0x74, 0x73, 0x20, - 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x68, 0x74, 0x6d, - 0x6c, 0xa, 0x3c, 0x2f, 0x74, 0x64, 0x3e, 0x3c, 0x74, 0x64, - 0x3e, 0x3c, 0x69, 0x6d, 0x67, 0x20, 0x73, 0x72, 0x63, 0x3d, - 0x22, 0x2f, 0x66, 0x61, 0x64, 0x65, 0x2e, 0x70, 0x6e, 0x67, - 0x22, 0x20, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x3d, 0x31, - 0x30, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3d, 0x25, 0x21, - 0x20, 0x66, 0x69, 0x6c, 0x65, 0x2d, 0x73, 0x74, 0x61, 0x74, - 0x73, 0x20, 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x68, - 0x74, 0x6d, 0x6c, 0xa, 0x3e, 0x20, 0x3c, 0x2f, 0x74, 0x64, - 0x3e, 0x3c, 0x2f, 0x74, 0x72, 0x3e, 0xa, 0x3c, 0x74, 0x72, - 0x3e, 0x3c, 0x74, 0x64, 0x3e, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x2f, 0x66, 0x69, 0x6c, 0x65, 0x73, - 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x2f, 0x66, - 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x3c, 0x2f, 0x61, 0x3e, 0x3c, 0x2f, 0x74, 0x64, 0x3e, 0xa, - 0x3c, 0x74, 0x64, 0x3e, 0x25, 0x21, 0x20, 0x66, 0x69, 0x6c, - 0x65, 0x2d, 0x73, 0x74, 0x61, 0x74, 0x73, 0x20, 0x2f, 0x66, - 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0xa, 0x3c, 0x2f, 0x74, 0x64, 0x3e, 0x3c, 0x74, 0x64, 0x3e, - 0x3c, 0x69, 0x6d, 0x67, 0x20, 0x73, 0x72, 0x63, 0x3d, 0x22, - 0x2f, 0x66, 0x61, 0x64, 0x65, 0x2e, 0x70, 0x6e, 0x67, 0x22, - 0x20, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x3d, 0x31, 0x30, - 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3d, 0x25, 0x21, 0x20, - 0x66, 0x69, 0x6c, 0x65, 0x2d, 0x73, 0x74, 0x61, 0x74, 0x73, - 0x20, 0x2f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x73, 0x68, - 0x74, 0x6d, 0x6c, 0xa, 0x3e, 0x20, 0x3c, 0x2f, 0x74, 0x64, - 0x3e, 0x3c, 0x2f, 0x74, 0x72, 0x3e, 0xa, 0x3c, 0x74, 0x72, - 0x3e, 0x3c, 0x74, 0x64, 0x3e, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x2f, 0x74, 0x63, 0x70, 0x2e, 0x73, - 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x2f, 0x74, 0x63, 0x70, - 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x3c, 0x2f, 0x61, 0x3e, - 0x3c, 0x2f, 0x74, 0x64, 0x3e, 0xa, 0x3c, 0x74, 0x64, 0x3e, - 0x25, 0x21, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x2d, 0x73, 0x74, - 0x61, 0x74, 0x73, 0x20, 0x2f, 0x74, 0x63, 0x70, 0x2e, 0x73, - 0x68, 0x74, 0x6d, 0x6c, 0xa, 0x3c, 0x2f, 0x74, 0x64, 0x3e, - 0x3c, 0x74, 0x64, 0x3e, 0x3c, 0x69, 0x6d, 0x67, 0x20, 0x73, - 0x72, 0x63, 0x3d, 0x22, 0x2f, 0x66, 0x61, 0x64, 0x65, 0x2e, - 0x70, 0x6e, 0x67, 0x22, 0x20, 0x68, 0x65, 0x69, 0x67, 0x68, - 0x74, 0x3d, 0x31, 0x30, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, - 0x3d, 0x25, 0x21, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x2d, 0x73, - 0x74, 0x61, 0x74, 0x73, 0x20, 0x2f, 0x74, 0x63, 0x70, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0xa, 0x3e, 0x20, 0x3c, 0x2f, - 0x74, 0x64, 0x3e, 0x3c, 0x2f, 0x74, 0x72, 0x3e, 0xa, 0x3c, - 0x74, 0x72, 0x3e, 0x3c, 0x74, 0x64, 0x3e, 0x3c, 0x61, 0x20, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x2f, 0x73, 0x74, 0x61, - 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x2f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, - 0x6d, 0x6c, 0x3c, 0x2f, 0x61, 0x3e, 0x3c, 0x2f, 0x74, 0x64, - 0x3e, 0xa, 0x3c, 0x74, 0x64, 0x3e, 0x25, 0x21, 0x20, 0x66, - 0x69, 0x6c, 0x65, 0x2d, 0x73, 0x74, 0x61, 0x74, 0x73, 0x20, - 0x2f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, - 0x6d, 0x6c, 0xa, 0x3c, 0x2f, 0x74, 0x64, 0x3e, 0x3c, 0x74, - 0x64, 0x3e, 0x3c, 0x69, 0x6d, 0x67, 0x20, 0x73, 0x72, 0x63, - 0x3d, 0x22, 0x2f, 0x66, 0x61, 0x64, 0x65, 0x2e, 0x70, 0x6e, - 0x67, 0x22, 0x20, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x3d, - 0x31, 0x30, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3d, 0x25, - 0x21, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x2d, 0x73, 0x74, 0x61, - 0x74, 0x73, 0x20, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0xa, 0x3e, 0x20, 0x3c, 0x2f, - 0x74, 0x64, 0x3e, 0x3c, 0x2f, 0x74, 0x72, 0x3e, 0xa, 0x3c, - 0x74, 0x72, 0x3e, 0x3c, 0x74, 0x64, 0x3e, 0x3c, 0x61, 0x20, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x2f, 0x73, 0x74, 0x79, - 0x6c, 0x65, 0x2e, 0x63, 0x73, 0x73, 0x22, 0x3e, 0x2f, 0x73, - 0x74, 0x79, 0x6c, 0x65, 0x2e, 0x63, 0x73, 0x73, 0x3c, 0x2f, - 0x61, 0x3e, 0x3c, 0x2f, 0x74, 0x64, 0x3e, 0xa, 0x3c, 0x74, - 0x64, 0x3e, 0x25, 0x21, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x2d, - 0x73, 0x74, 0x61, 0x74, 0x73, 0x20, 0x2f, 0x73, 0x74, 0x79, - 0x6c, 0x65, 0x2e, 0x63, 0x73, 0x73, 0xa, 0x3c, 0x2f, 0x74, - 0x64, 0x3e, 0x3c, 0x74, 0x64, 0x3e, 0x3c, 0x69, 0x6d, 0x67, - 0x20, 0x73, 0x72, 0x63, 0x3d, 0x22, 0x2f, 0x66, 0x61, 0x64, - 0x65, 0x2e, 0x70, 0x6e, 0x67, 0x22, 0x20, 0x68, 0x65, 0x69, - 0x67, 0x68, 0x74, 0x3d, 0x31, 0x30, 0x20, 0x77, 0x69, 0x64, - 0x74, 0x68, 0x3d, 0x25, 0x21, 0x20, 0x66, 0x69, 0x6c, 0x65, - 0x2d, 0x73, 0x74, 0x61, 0x74, 0x73, 0x20, 0x2f, 0x73, 0x74, - 0x79, 0x6c, 0x65, 0x2e, 0x63, 0x73, 0x73, 0xa, 0x3e, 0x20, - 0x3c, 0x2f, 0x74, 0x64, 0x3e, 0x3c, 0x2f, 0x74, 0x72, 0x3e, - 0xa, 0x3c, 0x74, 0x72, 0x3e, 0x3c, 0x74, 0x64, 0x3e, 0x3c, - 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x2f, 0x34, - 0x30, 0x34, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x2f, - 0x34, 0x30, 0x34, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x3c, 0x2f, - 0x61, 0x3e, 0x3c, 0x2f, 0x74, 0x64, 0x3e, 0xa, 0x3c, 0x74, - 0x64, 0x3e, 0x25, 0x21, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x2d, - 0x73, 0x74, 0x61, 0x74, 0x73, 0x20, 0x2f, 0x34, 0x30, 0x34, - 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0xa, 0x3c, 0x2f, 0x74, 0x64, - 0x3e, 0x3c, 0x74, 0x64, 0x3e, 0x3c, 0x69, 0x6d, 0x67, 0x20, - 0x73, 0x72, 0x63, 0x3d, 0x22, 0x2f, 0x66, 0x61, 0x64, 0x65, - 0x2e, 0x70, 0x6e, 0x67, 0x22, 0x20, 0x68, 0x65, 0x69, 0x67, - 0x68, 0x74, 0x3d, 0x31, 0x30, 0x20, 0x77, 0x69, 0x64, 0x74, - 0x68, 0x3d, 0x25, 0x21, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x2d, - 0x73, 0x74, 0x61, 0x74, 0x73, 0x20, 0x2f, 0x34, 0x30, 0x34, - 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0xa, 0x3e, 0x20, 0x3c, 0x2f, - 0x74, 0x64, 0x3e, 0x3c, 0x2f, 0x74, 0x72, 0x3e, 0xa, 0x3c, - 0x74, 0x72, 0x3e, 0x3c, 0x74, 0x64, 0x3e, 0x3c, 0x61, 0x20, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x2f, 0x66, 0x61, 0x64, - 0x65, 0x2e, 0x70, 0x6e, 0x67, 0x22, 0x3e, 0x2f, 0x66, 0x61, - 0x64, 0x65, 0x2e, 0x70, 0x6e, 0x67, 0x3c, 0x2f, 0x61, 0x3e, - 0x3c, 0x2f, 0x74, 0x64, 0x3e, 0xa, 0x3c, 0x74, 0x64, 0x3e, - 0x25, 0x21, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x2d, 0x73, 0x74, - 0x61, 0x74, 0x73, 0x20, 0x2f, 0x66, 0x61, 0x64, 0x65, 0x2e, - 0x70, 0x6e, 0x67, 0xa, 0x3c, 0x2f, 0x74, 0x64, 0x3e, 0x3c, - 0x74, 0x64, 0x3e, 0x3c, 0x69, 0x6d, 0x67, 0x20, 0x73, 0x72, - 0x63, 0x3d, 0x22, 0x2f, 0x66, 0x61, 0x64, 0x65, 0x2e, 0x70, - 0x6e, 0x67, 0x22, 0x20, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, - 0x3d, 0x31, 0x30, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3d, - 0x25, 0x21, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x2d, 0x73, 0x74, - 0x61, 0x74, 0x73, 0x20, 0x2f, 0x66, 0x61, 0x64, 0x65, 0x2e, - 0x70, 0x6e, 0x67, 0xa, 0x3e, 0x20, 0x3c, 0x2f, 0x74, 0x64, - 0x3e, 0x3c, 0x2f, 0x74, 0x72, 0x3e, 0xa, 0x3c, 0x2f, 0x74, - 0x61, 0x62, 0x6c, 0x65, 0x3e, 0xa, 0x3c, 0x2f, 0x63, 0x65, - 0x6e, 0x74, 0x65, 0x72, 0x3e, 0xa, 0x25, 0x21, 0x3a, 0x20, - 0x2f, 0x66, 0x6f, 0x6f, 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, - 0x6d, 0x6c, 0xa, 0}; - -static const unsigned char data_footer_html[] = { - /* /footer.html */ - 0x2f, 0x66, 0x6f, 0x6f, 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x20, 0x20, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xa, - 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0}; - -static const unsigned char data_header_html[] = { - /* /header.html */ - 0x2f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, - 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0x57, 0x65, 0x6c, 0x63, 0x6f, 0x6d, 0x65, 0x20, 0x74, 0x6f, - 0x20, 0x74, 0x68, 0x65, 0x20, 0x75, 0x49, 0x50, 0x20, 0x77, - 0x65, 0x62, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x21, - 0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x3c, 0x6c, 0x69, 0x6e, 0x6b, 0x20, 0x72, - 0x65, 0x6c, 0x3d, 0x22, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x73, - 0x68, 0x65, 0x65, 0x74, 0x22, 0x20, 0x74, 0x79, 0x70, 0x65, - 0x3d, 0x22, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x63, 0x73, 0x73, - 0x22, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, - 0x79, 0x6c, 0x65, 0x2e, 0x63, 0x73, 0x73, 0x22, 0x3e, 0x20, - 0x20, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, - 0x3e, 0xa, 0x20, 0x20, 0x3c, 0x62, 0x6f, 0x64, 0x79, 0x20, - 0x62, 0x67, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3d, 0x22, 0x23, - 0x66, 0x66, 0x66, 0x65, 0x65, 0x63, 0x22, 0x20, 0x74, 0x65, - 0x78, 0x74, 0x3d, 0x22, 0x62, 0x6c, 0x61, 0x63, 0x6b, 0x22, - 0x3e, 0xa, 0xa, 0x20, 0x20, 0x3c, 0x64, 0x69, 0x76, 0x20, - 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x6d, 0x65, 0x6e, - 0x75, 0x22, 0x3e, 0xa, 0x20, 0x20, 0x3c, 0x64, 0x69, 0x76, - 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x6d, 0x65, - 0x6e, 0x75, 0x62, 0x6f, 0x78, 0x22, 0x3e, 0x3c, 0x61, 0x20, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x2f, 0x22, 0x3e, 0x46, - 0x72, 0x6f, 0x6e, 0x74, 0x20, 0x70, 0x61, 0x67, 0x65, 0x3c, - 0x2f, 0x61, 0x3e, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0xa, - 0x20, 0x20, 0x3c, 0x64, 0x69, 0x76, 0x20, 0x63, 0x6c, 0x61, - 0x73, 0x73, 0x3d, 0x22, 0x6d, 0x65, 0x6e, 0x75, 0x62, 0x6f, - 0x78, 0x22, 0x3e, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x73, 0x68, - 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x46, 0x69, 0x6c, 0x65, 0x20, - 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, - 0x3c, 0x2f, 0x61, 0x3e, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x64, 0x69, 0x76, 0x20, 0x63, 0x6c, - 0x61, 0x73, 0x73, 0x3d, 0x22, 0x6d, 0x65, 0x6e, 0x75, 0x62, - 0x6f, 0x78, 0x22, 0x3e, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, - 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, - 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x4e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, - 0x74, 0x69, 0x63, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x3c, 0x2f, - 0x64, 0x69, 0x76, 0x3e, 0xa, 0x20, 0x20, 0x3c, 0x64, 0x69, - 0x76, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x6d, - 0x65, 0x6e, 0x75, 0x62, 0x6f, 0x78, 0x22, 0x3e, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, 0x63, 0x70, - 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x4e, 0x65, - 0x74, 0x77, 0x6f, 0x72, 0x6b, 0xa, 0x20, 0x20, 0x63, 0x6f, - 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0xa, - 0x20, 0x20, 0x3c, 0x62, 0x72, 0x3e, 0xa, 0x20, 0x20, 0x3c, - 0x2f, 0x64, 0x69, 0x76, 0x3e, 0xa, 0x20, 0x20, 0xa, 0x20, - 0x20, 0x3c, 0x64, 0x69, 0x76, 0x20, 0x63, 0x6c, 0x61, 0x73, - 0x73, 0x3d, 0x22, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, - 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x22, 0x3e, 0xa, 0}; - -static const unsigned char data_index_html[] = { - /* /index.html */ - 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, - 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, - 0x57, 0x65, 0x6c, 0x63, 0x6f, 0x6d, 0x65, 0x20, 0x74, 0x6f, - 0x20, 0x74, 0x68, 0x65, 0x20, 0x75, 0x49, 0x50, 0x20, 0x77, - 0x65, 0x62, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x21, - 0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x3c, 0x6c, 0x69, 0x6e, 0x6b, 0x20, 0x72, - 0x65, 0x6c, 0x3d, 0x22, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x73, - 0x68, 0x65, 0x65, 0x74, 0x22, 0x20, 0x74, 0x79, 0x70, 0x65, - 0x3d, 0x22, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x63, 0x73, 0x73, - 0x22, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, - 0x79, 0x6c, 0x65, 0x2e, 0x63, 0x73, 0x73, 0x22, 0x3e, 0x20, - 0x20, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, - 0x3e, 0xa, 0x20, 0x20, 0x3c, 0x62, 0x6f, 0x64, 0x79, 0x20, - 0x62, 0x67, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3d, 0x22, 0x23, - 0x66, 0x66, 0x66, 0x65, 0x65, 0x63, 0x22, 0x20, 0x74, 0x65, - 0x78, 0x74, 0x3d, 0x22, 0x62, 0x6c, 0x61, 0x63, 0x6b, 0x22, - 0x3e, 0xa, 0xa, 0x20, 0x20, 0x3c, 0x64, 0x69, 0x76, 0x20, - 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x6d, 0x65, 0x6e, - 0x75, 0x22, 0x3e, 0xa, 0x20, 0x20, 0x3c, 0x64, 0x69, 0x76, - 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x6d, 0x65, - 0x6e, 0x75, 0x62, 0x6f, 0x78, 0x22, 0x3e, 0x3c, 0x61, 0x20, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x2f, 0x22, 0x3e, 0x46, - 0x72, 0x6f, 0x6e, 0x74, 0x20, 0x70, 0x61, 0x67, 0x65, 0x3c, - 0x2f, 0x61, 0x3e, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0xa, - 0x20, 0x20, 0x3c, 0x64, 0x69, 0x76, 0x20, 0x63, 0x6c, 0x61, - 0x73, 0x73, 0x3d, 0x22, 0x6d, 0x65, 0x6e, 0x75, 0x62, 0x6f, - 0x78, 0x22, 0x3e, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x73, 0x68, - 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x46, 0x69, 0x6c, 0x65, 0x20, - 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, - 0x3c, 0x2f, 0x61, 0x3e, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, - 0xa, 0x20, 0x20, 0x3c, 0x64, 0x69, 0x76, 0x20, 0x63, 0x6c, - 0x61, 0x73, 0x73, 0x3d, 0x22, 0x6d, 0x65, 0x6e, 0x75, 0x62, - 0x6f, 0x78, 0x22, 0x3e, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, - 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, - 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x4e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, - 0x74, 0x69, 0x63, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x3c, 0x2f, - 0x64, 0x69, 0x76, 0x3e, 0xa, 0x20, 0x20, 0x3c, 0x64, 0x69, - 0x76, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x6d, - 0x65, 0x6e, 0x75, 0x62, 0x6f, 0x78, 0x22, 0x3e, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, 0x63, 0x70, - 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x4e, 0x65, - 0x74, 0x77, 0x6f, 0x72, 0x6b, 0xa, 0x20, 0x20, 0x63, 0x6f, - 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0xa, - 0x20, 0x20, 0x3c, 0x62, 0x72, 0x3e, 0xa, 0x20, 0x20, 0x3c, - 0x2f, 0x64, 0x69, 0x76, 0x3e, 0xa, 0xa, 0x20, 0x20, 0x3c, - 0x64, 0x69, 0x76, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, - 0x22, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x62, 0x6c, - 0x6f, 0x63, 0x6b, 0x22, 0x3e, 0xa, 0x20, 0x20, 0x3c, 0x70, - 0x3e, 0xa, 0x20, 0x20, 0x54, 0x68, 0x65, 0x73, 0x65, 0x20, - 0x77, 0x65, 0x62, 0x20, 0x70, 0x61, 0x67, 0x65, 0x73, 0x20, - 0x61, 0x72, 0x65, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, - 0x20, 0x62, 0x79, 0x20, 0x61, 0x20, 0x73, 0x6d, 0x61, 0x6c, - 0x6c, 0x20, 0x77, 0x65, 0x62, 0x20, 0x73, 0x65, 0x72, 0x76, - 0x65, 0x72, 0x20, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, - 0x20, 0x6f, 0x6e, 0x20, 0x74, 0x6f, 0x70, 0x20, 0x6f, 0x66, - 0xa, 0x20, 0x20, 0x74, 0x68, 0x65, 0x20, 0x3c, 0x61, 0x20, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, - 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x73, 0x69, 0x63, - 0x73, 0x2e, 0x73, 0x65, 0x2f, 0x7e, 0x61, 0x64, 0x61, 0x6d, - 0x2f, 0x75, 0x69, 0x70, 0x2f, 0x22, 0x3e, 0x75, 0x49, 0x50, - 0x20, 0x65, 0x6d, 0x62, 0x65, 0x64, 0x64, 0x65, 0x64, 0x20, - 0x54, 0x43, 0x50, 0x2f, 0x49, 0x50, 0xa, 0x20, 0x20, 0x73, - 0x74, 0x61, 0x63, 0x6b, 0x3c, 0x2f, 0x61, 0x3e, 0x2e, 0xa, - 0x20, 0x20, 0x3c, 0x2f, 0x70, 0x3e, 0xa, 0x20, 0x20, 0x3c, - 0x70, 0x3e, 0xa, 0x20, 0x20, 0x43, 0x6c, 0x69, 0x63, 0x6b, - 0x20, 0x6f, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6c, 0x69, - 0x6e, 0x6b, 0x73, 0x20, 0x61, 0x62, 0x6f, 0x76, 0x65, 0x20, - 0x66, 0x6f, 0x72, 0x20, 0x77, 0x65, 0x62, 0x20, 0x73, 0x65, - 0x72, 0x76, 0x65, 0x72, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, - 0x73, 0x74, 0x69, 0x63, 0x73, 0x2e, 0xa, 0x20, 0x20, 0x3c, - 0x2f, 0x70, 0x3e, 0xa, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x62, - 0x6f, 0x64, 0x79, 0x3e, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, - 0x6c, 0x3e, 0xa, 0}; - -static const unsigned char data_style_css[] = { - /* /style.css */ - 0x2f, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x2e, 0x63, 0x73, 0x73, 0, - 0x68, 0x31, 0x20, 0xa, 0x7b, 0xa, 0x20, 0x20, 0x74, 0x65, - 0x78, 0x74, 0x2d, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x3a, 0x20, - 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x3b, 0xa, 0x20, 0x20, - 0x66, 0x6f, 0x6e, 0x74, 0x2d, 0x73, 0x69, 0x7a, 0x65, 0x3a, - 0x31, 0x34, 0x70, 0x74, 0x3b, 0xa, 0x20, 0x20, 0x66, 0x6f, - 0x6e, 0x74, 0x2d, 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x3a, - 0x61, 0x72, 0x69, 0x61, 0x6c, 0x2c, 0x68, 0x65, 0x6c, 0x76, - 0x65, 0x74, 0x69, 0x63, 0x61, 0x3b, 0xa, 0x20, 0x20, 0x66, - 0x6f, 0x6e, 0x74, 0x2d, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, - 0x3a, 0x62, 0x6f, 0x6c, 0x64, 0x3b, 0xa, 0x20, 0x20, 0x70, - 0x61, 0x64, 0x64, 0x69, 0x6e, 0x67, 0x3a, 0x31, 0x30, 0x70, - 0x78, 0x3b, 0x20, 0xa, 0x7d, 0xa, 0xa, 0x62, 0x6f, 0x64, - 0x79, 0xa, 0x7b, 0xa, 0xa, 0x20, 0x20, 0x62, 0x61, 0x63, - 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x2d, 0x63, 0x6f, - 0x6c, 0x6f, 0x72, 0x3a, 0x20, 0x23, 0x66, 0x66, 0x66, 0x65, - 0x65, 0x63, 0x3b, 0xa, 0x20, 0x20, 0x63, 0x6f, 0x6c, 0x6f, - 0x72, 0x3a, 0x62, 0x6c, 0x61, 0x63, 0x6b, 0x3b, 0xa, 0xa, - 0x20, 0x20, 0x66, 0x6f, 0x6e, 0x74, 0x2d, 0x73, 0x69, 0x7a, - 0x65, 0x3a, 0x38, 0x70, 0x74, 0x3b, 0xa, 0x20, 0x20, 0x66, - 0x6f, 0x6e, 0x74, 0x2d, 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x79, - 0x3a, 0x61, 0x72, 0x69, 0x61, 0x6c, 0x2c, 0x68, 0x65, 0x6c, - 0x76, 0x65, 0x74, 0x69, 0x63, 0x61, 0x3b, 0xa, 0x7d, 0xa, - 0xa, 0x2e, 0x6d, 0x65, 0x6e, 0x75, 0xa, 0x7b, 0xa, 0x20, - 0x20, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x3a, 0x20, 0x34, - 0x70, 0x78, 0x3b, 0xa, 0x20, 0x20, 0x77, 0x69, 0x64, 0x74, - 0x68, 0x3a, 0x36, 0x30, 0x25, 0x3b, 0xa, 0xa, 0x20, 0x20, - 0x70, 0x61, 0x64, 0x64, 0x69, 0x6e, 0x67, 0x3a, 0x32, 0x70, - 0x78, 0x3b, 0xa, 0x9, 0xa, 0x20, 0x20, 0x62, 0x6f, 0x72, - 0x64, 0x65, 0x72, 0x3a, 0x20, 0x73, 0x6f, 0x6c, 0x69, 0x64, - 0x20, 0x31, 0x70, 0x78, 0x3b, 0xa, 0x20, 0x20, 0x62, 0x61, - 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x2d, 0x63, - 0x6f, 0x6c, 0x6f, 0x72, 0x3a, 0x20, 0x23, 0x66, 0x66, 0x66, - 0x63, 0x64, 0x32, 0x3b, 0xa, 0x20, 0x20, 0x74, 0x65, 0x78, - 0x74, 0x2d, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x3a, 0x6c, 0x65, - 0x66, 0x74, 0x3b, 0xa, 0x20, 0x20, 0xa, 0x20, 0x20, 0x66, - 0x6f, 0x6e, 0x74, 0x2d, 0x73, 0x69, 0x7a, 0x65, 0x3a, 0x39, - 0x70, 0x74, 0x3b, 0xa, 0x20, 0x20, 0x66, 0x6f, 0x6e, 0x74, - 0x2d, 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x3a, 0x61, 0x72, - 0x69, 0x61, 0x6c, 0x2c, 0x68, 0x65, 0x6c, 0x76, 0x65, 0x74, - 0x69, 0x63, 0x61, 0x3b, 0x20, 0x20, 0xa, 0x7d, 0xa, 0xa, - 0x64, 0x69, 0x76, 0x2e, 0x6d, 0x65, 0x6e, 0x75, 0x62, 0x6f, - 0x78, 0xa, 0x7b, 0xa, 0x20, 0x20, 0x77, 0x69, 0x64, 0x74, - 0x68, 0x3a, 0x20, 0x32, 0x35, 0x25, 0x3b, 0xa, 0x20, 0x20, - 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x3a, 0x20, 0x30, 0x3b, - 0xa, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3a, 0x20, - 0x6c, 0x65, 0x66, 0x74, 0x3b, 0xa, 0x74, 0x65, 0x78, 0x74, - 0x2d, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x3a, 0x20, 0x63, 0x65, - 0x6e, 0x74, 0x65, 0x72, 0x3b, 0xa, 0x7d, 0xa, 0xa, 0x2e, - 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x62, 0x6c, 0x6f, - 0x63, 0x6b, 0xa, 0x7b, 0x20, 0x20, 0xa, 0x20, 0x20, 0x6d, - 0x61, 0x72, 0x67, 0x69, 0x6e, 0x3a, 0x20, 0x34, 0x70, 0x78, - 0x3b, 0xa, 0x20, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3a, - 0x36, 0x30, 0x25, 0x3b, 0xa, 0xa, 0x20, 0x20, 0x70, 0x61, - 0x64, 0x64, 0x69, 0x6e, 0x67, 0x3a, 0x32, 0x70, 0x78, 0x3b, - 0xa, 0xa, 0x20, 0x20, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, - 0x3a, 0x20, 0x31, 0x70, 0x78, 0x20, 0x64, 0x6f, 0x74, 0x74, - 0x65, 0x64, 0x3b, 0xa, 0x20, 0x20, 0x62, 0x61, 0x63, 0x6b, - 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x2d, 0x63, 0x6f, 0x6c, - 0x6f, 0x72, 0x3a, 0x20, 0x77, 0x68, 0x69, 0x74, 0x65, 0x3b, - 0xa, 0xa, 0x20, 0x20, 0x66, 0x6f, 0x6e, 0x74, 0x2d, 0x73, - 0x69, 0x7a, 0x65, 0x3a, 0x38, 0x70, 0x74, 0x3b, 0xa, 0x20, - 0x20, 0x66, 0x6f, 0x6e, 0x74, 0x2d, 0x66, 0x61, 0x6d, 0x69, - 0x6c, 0x79, 0x3a, 0x61, 0x72, 0x69, 0x61, 0x6c, 0x2c, 0x68, - 0x65, 0x6c, 0x76, 0x65, 0x74, 0x69, 0x63, 0x61, 0x3b, 0x20, - 0x20, 0xa, 0xa, 0x7d, 0xa, 0xa, 0x70, 0x2e, 0x69, 0x6e, - 0x74, 0x72, 0x6f, 0xa, 0x7b, 0xa, 0x20, 0x20, 0x6d, 0x61, - 0x72, 0x67, 0x69, 0x6e, 0x2d, 0x6c, 0x65, 0x66, 0x74, 0x3a, - 0x32, 0x30, 0x70, 0x78, 0x3b, 0xa, 0x20, 0x20, 0x6d, 0x61, - 0x72, 0x67, 0x69, 0x6e, 0x2d, 0x72, 0x69, 0x67, 0x68, 0x74, - 0x3a, 0x32, 0x30, 0x70, 0x78, 0x3b, 0xa, 0xa, 0x20, 0x20, - 0x66, 0x6f, 0x6e, 0x74, 0x2d, 0x73, 0x69, 0x7a, 0x65, 0x3a, - 0x31, 0x30, 0x70, 0x74, 0x3b, 0xa, 0x2f, 0x2a, 0x20, 0x20, - 0x66, 0x6f, 0x6e, 0x74, 0x2d, 0x77, 0x65, 0x69, 0x67, 0x68, - 0x74, 0x3a, 0x62, 0x6f, 0x6c, 0x64, 0x3b, 0x20, 0x2a, 0x2f, - 0xa, 0x20, 0x20, 0x66, 0x6f, 0x6e, 0x74, 0x2d, 0x66, 0x61, - 0x6d, 0x69, 0x6c, 0x79, 0x3a, 0x61, 0x72, 0x69, 0x61, 0x6c, - 0x2c, 0x68, 0x65, 0x6c, 0x76, 0x65, 0x74, 0x69, 0x63, 0x61, - 0x3b, 0x20, 0x20, 0xa, 0x7d, 0xa, 0xa, 0x70, 0x2e, 0x63, - 0x6c, 0x69, 0x6e, 0x6b, 0xa, 0x7b, 0xa, 0x20, 0x20, 0x66, - 0x6f, 0x6e, 0x74, 0x2d, 0x73, 0x69, 0x7a, 0x65, 0x3a, 0x31, - 0x32, 0x70, 0x74, 0x3b, 0xa, 0x20, 0x20, 0x66, 0x6f, 0x6e, - 0x74, 0x2d, 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x3a, 0x63, - 0x6f, 0x75, 0x72, 0x69, 0x65, 0x72, 0x2c, 0x6d, 0x6f, 0x6e, - 0x6f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x3b, 0x20, 0x20, 0xa, - 0x20, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2d, 0x61, 0x6c, 0x69, - 0x67, 0x6e, 0x3a, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x3b, - 0xa, 0x7d, 0xa, 0xa, 0x70, 0x2e, 0x63, 0x6c, 0x69, 0x6e, - 0x6b, 0x39, 0xa, 0x7b, 0xa, 0x20, 0x20, 0x66, 0x6f, 0x6e, - 0x74, 0x2d, 0x73, 0x69, 0x7a, 0x65, 0x3a, 0x39, 0x70, 0x74, - 0x3b, 0xa, 0x20, 0x20, 0x66, 0x6f, 0x6e, 0x74, 0x2d, 0x66, - 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x3a, 0x63, 0x6f, 0x75, 0x72, - 0x69, 0x65, 0x72, 0x2c, 0x6d, 0x6f, 0x6e, 0x6f, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x3b, 0x20, 0x20, 0xa, 0x20, 0x20, 0x74, - 0x65, 0x78, 0x74, 0x2d, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x3a, - 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x3b, 0xa, 0x7d, 0xa, - 0xa, 0xa, 0x70, 0xa, 0x7b, 0xa, 0x20, 0x20, 0x70, 0x61, - 0x64, 0x64, 0x69, 0x6e, 0x67, 0x2d, 0x6c, 0x65, 0x66, 0x74, - 0x3a, 0x31, 0x30, 0x70, 0x78, 0x3b, 0xa, 0x7d, 0xa, 0xa, - 0x70, 0x2e, 0x72, 0x69, 0x67, 0x68, 0x74, 0xa, 0x7b, 0xa, - 0x20, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2d, 0x61, 0x6c, 0x69, - 0x67, 0x6e, 0x3a, 0x72, 0x69, 0x67, 0x68, 0x74, 0x3b, 0x20, - 0xa, 0x7d, 0xa, 0xa, 0}; - -static const unsigned char data_tcp_shtml[] = { - /* /tcp.shtml */ - 0x2f, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x25, 0x21, 0x3a, 0x20, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x65, - 0x72, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0xa, 0x3c, 0x68, 0x31, - 0x3e, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x20, 0x63, - 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x3c, 0x2f, 0x68, 0x31, 0x3e, 0x3c, 0x62, 0x72, 0x3e, 0x3c, - 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x77, 0x69, 0x64, 0x74, - 0x68, 0x3d, 0x22, 0x31, 0x30, 0x30, 0x25, 0x22, 0x3e, 0xa, - 0x3c, 0x74, 0x72, 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x4c, 0x6f, - 0x63, 0x61, 0x6c, 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, - 0x68, 0x3e, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x3c, 0x2f, - 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x53, 0x74, 0x61, - 0x74, 0x65, 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, - 0x3e, 0x52, 0x65, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, - 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x74, 0x68, - 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x54, 0x69, 0x6d, 0x65, 0x72, - 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x46, - 0x6c, 0x61, 0x67, 0x73, 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, - 0x2f, 0x74, 0x72, 0x3e, 0xa, 0x25, 0x21, 0x20, 0x74, 0x63, - 0x70, 0x2d, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0xa, 0x25, 0x21, 0x3a, 0x20, 0x2f, 0x66, - 0x6f, 0x6f, 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x6d, 0x6c, -0}; - -static const unsigned char data_fade_png[] = { - /* /fade.png */ - 0x2f, 0x66, 0x61, 0x64, 0x65, 0x2e, 0x70, 0x6e, 0x67, 0, - 0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 00, 00, - 00, 0xd, 0x49, 0x48, 0x44, 0x52, 00, 00, 00, 0x4, - 00, 00, 00, 0xa, 0x8, 0x2, 00, 00, 00, 0x1c, - 0x99, 0x68, 0x59, 00, 00, 00, 0x9, 0x70, 0x48, 0x59, - 0x73, 00, 00, 0xb, 0x13, 00, 00, 0xb, 0x13, 0x1, - 00, 0x9a, 0x9c, 0x18, 00, 00, 00, 0x7, 0x74, 0x49, - 0x4d, 0x45, 0x7, 0xd6, 0x6, 0x8, 0x14, 0x1b, 0x39, 0xaf, - 0x5b, 0xc0, 0xe3, 00, 00, 00, 0x1d, 0x74, 0x45, 0x58, - 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 00, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, - 0x68, 0x20, 0x54, 0x68, 0x65, 0x20, 0x47, 0x49, 0x4d, 0x50, - 0xef, 0x64, 0x25, 0x6e, 00, 00, 00, 0x3a, 0x49, 0x44, - 0x41, 0x54, 0x8, 0xd7, 0x75, 0x8c, 0x31, 0x12, 00, 0x10, - 0x10, 0xc4, 0x2e, 0x37, 0x9e, 0x40, 0x65, 0xfd, 0xff, 0x83, - 0xf4, 0xa, 0x1c, 0x8d, 0x54, 0x9b, 0xc9, 0xcc, 0x9a, 0x3d, - 0x90, 0x73, 0x71, 0x67, 0x91, 0xd4, 0x74, 0x36, 0xa9, 0x55, - 0x1, 0xf8, 0x29, 0x58, 0xc8, 0xbf, 0x48, 0xc4, 0x81, 0x74, - 0xb, 0xa3, 0xf, 0x7c, 0xdb, 0x4, 0xe8, 0x40, 0x5, 0xdf, - 0xa1, 0xf3, 0xfc, 0x73, 00, 00, 00, 00, 0x49, 0x45, - 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82, 0}; - -static const unsigned char data_stats_shtml[] = { - /* /stats.shtml */ - 0x2f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x25, 0x21, 0x3a, 0x20, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x65, - 0x72, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0xa, 0x3c, 0x68, 0x31, - 0x3e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x20, 0x73, - 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x3c, - 0x2f, 0x68, 0x31, 0x3e, 0xa, 0x3c, 0x63, 0x65, 0x6e, 0x74, - 0x65, 0x72, 0x3e, 0xa, 0x3c, 0x74, 0x61, 0x62, 0x6c, 0x65, - 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3d, 0x22, 0x33, 0x30, - 0x30, 0x22, 0x20, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x3d, - 0x22, 0x30, 0x22, 0x3e, 0xa, 0x3c, 0x74, 0x72, 0x3e, 0x3c, - 0x74, 0x64, 0x3e, 0x3c, 0x70, 0x72, 0x65, 0x3e, 0xa, 0x49, - 0x50, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, - 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, - 0x73, 0x65, 0x6e, 0x74, 0xa, 0x9, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x64, - 0x72, 0x6f, 0x70, 0x70, 0x65, 0x64, 0xa, 0x49, 0x50, 0x20, - 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x20, 0x20, 0x20, 0x20, - 0x49, 0x50, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x2f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, 0x6c, 0x65, - 0x6e, 0x67, 0x74, 0x68, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x49, 0x50, - 0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x2c, 0x20, 0x68, - 0x69, 0x67, 0x68, 0x20, 0x62, 0x79, 0x74, 0x65, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x49, 0x50, 0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, - 0x68, 0x2c, 0x20, 0x6c, 0x6f, 0x77, 0x20, 0x62, 0x79, 0x74, - 0x65, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x49, 0x50, 0x20, 0x66, 0x72, - 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, 0x63, 0x68, - 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0xa, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x57, 0x72, 0x6f, 0x6e, 0x67, 0x20, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x63, 0x6f, 0x6c, 0xa, 0x49, 0x43, 0x4d, 0x50, 0x9, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, - 0x74, 0x73, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, - 0x64, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, - 0x74, 0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x64, - 0x72, 0x6f, 0x70, 0x70, 0x65, 0x64, 0xa, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x54, 0x79, 0x70, 0x65, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, - 0x73, 0xa, 0x54, 0x43, 0x50, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, - 0x74, 0x73, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, - 0x64, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, - 0x74, 0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x64, - 0x72, 0x6f, 0x70, 0x70, 0x65, 0x64, 0xa, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x20, 0x65, - 0x72, 0x72, 0x6f, 0x72, 0x73, 0xa, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x44, - 0x61, 0x74, 0x61, 0x20, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x73, 0x20, 0x77, 0x69, 0x74, 0x68, 0x6f, 0x75, 0x74, 0x20, - 0x41, 0x43, 0x4b, 0x73, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x52, 0x65, - 0x73, 0x65, 0x74, 0x73, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x52, 0x65, - 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x73, 0x73, 0x69, - 0x6f, 0x6e, 0x73, 0xa, 0x9, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x4e, 0x6f, 0x20, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x20, 0x61, 0x76, 0x61, 0x6c, 0x69, 0x61, - 0x62, 0x6c, 0x65, 0xa, 0x9, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x20, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x73, 0x20, - 0x74, 0x6f, 0x20, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x64, 0x20, - 0x70, 0x6f, 0x72, 0x74, 0x73, 0xa, 0x3c, 0x2f, 0x70, 0x72, - 0x65, 0x3e, 0x3c, 0x2f, 0x74, 0x64, 0x3e, 0x3c, 0x74, 0x64, - 0x3e, 0x3c, 0x70, 0x72, 0x65, 0x3e, 0x25, 0x21, 0x20, 0x6e, - 0x65, 0x74, 0x2d, 0x73, 0x74, 0x61, 0x74, 0x73, 0xa, 0x3c, - 0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x74, 0x61, 0x62, - 0x6c, 0x65, 0x3e, 0xa, 0x3c, 0x2f, 0x63, 0x65, 0x6e, 0x74, - 0x65, 0x72, 0x3e, 0xa, 0x25, 0x21, 0x3a, 0x20, 0x2f, 0x66, - 0x6f, 0x6f, 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x6d, 0x6c, - 0xa, 0}; - -const struct httpd_fsdata_file file_processes_shtml[] = {{NULL, data_processes_shtml, data_processes_shtml + 17, sizeof(data_processes_shtml) - 17}}; - -const struct httpd_fsdata_file file_404_html[] = {{file_processes_shtml, data_404_html, data_404_html + 10, sizeof(data_404_html) - 10}}; - -const struct httpd_fsdata_file file_files_shtml[] = {{file_404_html, data_files_shtml, data_files_shtml + 13, sizeof(data_files_shtml) - 13}}; - -const struct httpd_fsdata_file file_footer_html[] = {{file_files_shtml, data_footer_html, data_footer_html + 13, sizeof(data_footer_html) - 13}}; - -const struct httpd_fsdata_file file_header_html[] = {{file_footer_html, data_header_html, data_header_html + 13, sizeof(data_header_html) - 13}}; - -const struct httpd_fsdata_file file_index_html[] = {{file_header_html, data_index_html, data_index_html + 12, sizeof(data_index_html) - 12}}; - -const struct httpd_fsdata_file file_style_css[] = {{file_index_html, data_style_css, data_style_css + 11, sizeof(data_style_css) - 11}}; - -const struct httpd_fsdata_file file_tcp_shtml[] = {{file_style_css, data_tcp_shtml, data_tcp_shtml + 11, sizeof(data_tcp_shtml) - 11}}; - -const struct httpd_fsdata_file file_fade_png[] = {{file_tcp_shtml, data_fade_png, data_fade_png + 10, sizeof(data_fade_png) - 10}}; - -const struct httpd_fsdata_file file_stats_shtml[] = {{file_fade_png, data_stats_shtml, data_stats_shtml + 13, sizeof(data_stats_shtml) - 13}}; - -#define HTTPD_FS_ROOT file_stats_shtml - -#define HTTPD_FS_NUMFILES 10 diff --git a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/httpd-fsdata.h b/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/httpd-fsdata.h deleted file mode 100644 index 52d35c265..000000000 --- a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/httpd-fsdata.h +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright (c) 2001, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - * $Id: httpd-fsdata.h,v 1.1 2006/06/07 09:13:08 adam Exp $ - */ -#ifndef __HTTPD_FSDATA_H__ -#define __HTTPD_FSDATA_H__ - -#include "uip.h" - -struct httpd_fsdata_file { - const struct httpd_fsdata_file *next; - const char *name; - const char *data; - const int len; -#ifdef HTTPD_FS_STATISTICS -#if HTTPD_FS_STATISTICS == 1 - u16_t count; -#endif /* HTTPD_FS_STATISTICS */ -#endif /* HTTPD_FS_STATISTICS */ -}; - -struct httpd_fsdata_file_noconst { - struct httpd_fsdata_file *next; - char *name; - char *data; - int len; -#ifdef HTTPD_FS_STATISTICS -#if HTTPD_FS_STATISTICS == 1 - u16_t count; -#endif /* HTTPD_FS_STATISTICS */ -#endif /* HTTPD_FS_STATISTICS */ -}; - -#endif /* __HTTPD_FSDATA_H__ */ diff --git a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/httpd.c b/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/httpd.c deleted file mode 100644 index e808688d2..000000000 --- a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/httpd.c +++ /dev/null @@ -1,338 +0,0 @@ -/** - * \addtogroup apps - * @{ - */ - -/** - * \defgroup httpd Web server - * @{ - * The uIP web server is a very simplistic implementation of an HTTP - * server. It can serve web pages and files from a read-only ROM - * filesystem, and provides a very small scripting language. - - */ - -/** - * \file - * Web server - * \author - * Adam Dunkels - */ - - -/* - * Copyright (c) 2004, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * Author: Adam Dunkels - * - * $Id: httpd.c,v 1.2 2006/06/11 21:46:38 adam Exp $ - */ - -#include "uip.h" -#include "httpd.h" -#include "httpd-fs.h" -#include "httpd-cgi.h" -#include "http-strings.h" - -#include - -#define STATE_WAITING 0 -#define STATE_OUTPUT 1 - -#define ISO_nl 0x0a -#define ISO_space 0x20 -#define ISO_bang 0x21 -#define ISO_percent 0x25 -#define ISO_period 0x2e -#define ISO_slash 0x2f -#define ISO_colon 0x3a - - -/*---------------------------------------------------------------------------*/ -static unsigned short -generate_part_of_file(void *state) -{ - struct httpd_state *s = (struct httpd_state *)state; - - if(s->file.len > uip_mss()) { - s->len = uip_mss(); - } else { - s->len = s->file.len; - } - memcpy(uip_appdata, s->file.data, s->len); - - return s->len; -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(send_file(struct httpd_state *s)) -{ - PSOCK_BEGIN(&s->sout); - - do { - PSOCK_GENERATOR_SEND(&s->sout, generate_part_of_file, s); - s->file.len -= s->len; - s->file.data += s->len; - } while(s->file.len > 0); - - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(send_part_of_file(struct httpd_state *s)) -{ - PSOCK_BEGIN(&s->sout); - - PSOCK_SEND(&s->sout, s->file.data, s->len); - - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -static void -next_scriptstate(struct httpd_state *s) -{ - char *p; - p = strchr(s->scriptptr, ISO_nl) + 1; - s->scriptlen -= (unsigned short)(p - s->scriptptr); - s->scriptptr = p; -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(handle_script(struct httpd_state *s)) -{ - char *ptr; - - PT_BEGIN(&s->scriptpt); - - - while(s->file.len > 0) { - - /* Check if we should start executing a script. */ - if(*s->file.data == ISO_percent && - *(s->file.data + 1) == ISO_bang) { - s->scriptptr = s->file.data + 3; - s->scriptlen = s->file.len - 3; - if(*(s->scriptptr - 1) == ISO_colon) { - httpd_fs_open(s->scriptptr + 1, &s->file); - PT_WAIT_THREAD(&s->scriptpt, send_file(s)); - } else { - PT_WAIT_THREAD(&s->scriptpt, - httpd_cgi(s->scriptptr)(s, s->scriptptr)); - } - next_scriptstate(s); - - /* The script is over, so we reset the pointers and continue - sending the rest of the file. */ - s->file.data = s->scriptptr; - s->file.len = s->scriptlen; - } else { - /* See if we find the start of script marker in the block of HTML - to be sent. */ - - if(s->file.len > uip_mss()) { - s->len = uip_mss(); - } else { - s->len = s->file.len; - } - - if(*s->file.data == ISO_percent) { - ptr = strchr(s->file.data + 1, ISO_percent); - } else { - ptr = strchr(s->file.data, ISO_percent); - } - if(ptr != NULL && - ptr != s->file.data) { - s->len = (int)(ptr - s->file.data); - if(s->len >= uip_mss()) { - s->len = uip_mss(); - } - } - PT_WAIT_THREAD(&s->scriptpt, send_part_of_file(s)); - s->file.data += s->len; - s->file.len -= s->len; - - } - } - - PT_END(&s->scriptpt); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(send_headers(struct httpd_state *s, const char *statushdr)) -{ - char *ptr; - - PSOCK_BEGIN(&s->sout); - - PSOCK_SEND_STR(&s->sout, statushdr); - - ptr = strrchr(s->filename, ISO_period); - if(ptr == NULL) { - PSOCK_SEND_STR(&s->sout, http_content_type_binary); - } else if(strncmp(http_html, ptr, 5) == 0 || - strncmp(http_shtml, ptr, 6) == 0) { - PSOCK_SEND_STR(&s->sout, http_content_type_html); - } else if(strncmp(http_css, ptr, 4) == 0) { - PSOCK_SEND_STR(&s->sout, http_content_type_css); - } else if(strncmp(http_png, ptr, 4) == 0) { - PSOCK_SEND_STR(&s->sout, http_content_type_png); - } else if(strncmp(http_gif, ptr, 4) == 0) { - PSOCK_SEND_STR(&s->sout, http_content_type_gif); - } else if(strncmp(http_jpg, ptr, 4) == 0) { - PSOCK_SEND_STR(&s->sout, http_content_type_jpg); - } else { - PSOCK_SEND_STR(&s->sout, http_content_type_plain); - } - PSOCK_END(&s->sout); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(handle_output(struct httpd_state *s)) -{ - char *ptr; - - PT_BEGIN(&s->outputpt); - - if(!httpd_fs_open(s->filename, &s->file)) { - httpd_fs_open(http_404_html, &s->file); - strcpy(s->filename, http_404_html); - PT_WAIT_THREAD(&s->outputpt, - send_headers(s, - http_header_404)); - PT_WAIT_THREAD(&s->outputpt, - send_file(s)); - } else { - PT_WAIT_THREAD(&s->outputpt, - send_headers(s, - http_header_200)); - ptr = strchr(s->filename, ISO_period); - if(ptr != NULL && strncmp(ptr, http_shtml, 6) == 0) { - PT_INIT(&s->scriptpt); - PT_WAIT_THREAD(&s->outputpt, handle_script(s)); - } else { - PT_WAIT_THREAD(&s->outputpt, - send_file(s)); - } - } - PSOCK_CLOSE(&s->sout); - PT_END(&s->outputpt); -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(handle_input(struct httpd_state *s)) -{ - PSOCK_BEGIN(&s->sin); - - PSOCK_READTO(&s->sin, ISO_space); - - - if(strncmp(s->inputbuf, http_get, 4) != 0) { - PSOCK_CLOSE_EXIT(&s->sin); - } - PSOCK_READTO(&s->sin, ISO_space); - - if(s->inputbuf[0] != ISO_slash) { - PSOCK_CLOSE_EXIT(&s->sin); - } - - if(s->inputbuf[1] == ISO_space) { - strncpy(s->filename, http_index_html, sizeof(s->filename)); - } else { - s->inputbuf[PSOCK_DATALEN(&s->sin) - 1] = 0; - strncpy(s->filename, &s->inputbuf[0], sizeof(s->filename)); - } - - /* httpd_log_file(uip_conn->ripaddr, s->filename);*/ - - s->state = STATE_OUTPUT; - - while(1) { - PSOCK_READTO(&s->sin, ISO_nl); - - if(strncmp(s->inputbuf, http_referer, 8) == 0) { - s->inputbuf[PSOCK_DATALEN(&s->sin) - 2] = 0; - /* httpd_log(&s->inputbuf[9]);*/ - } - } - - PSOCK_END(&s->sin); -} -/*---------------------------------------------------------------------------*/ -static void -handle_connection(struct httpd_state *s) -{ - handle_input(s); - if(s->state == STATE_OUTPUT) { - handle_output(s); - } -} -/*---------------------------------------------------------------------------*/ -void -httpd_appcall(void) -{ - struct httpd_state *s = (struct httpd_state *)&(uip_conn->appstate); - - if(uip_closed() || uip_aborted() || uip_timedout()) { - } else if(uip_connected()) { - PSOCK_INIT(&s->sin, s->inputbuf, sizeof(s->inputbuf) - 1); - PSOCK_INIT(&s->sout, s->inputbuf, sizeof(s->inputbuf) - 1); - PT_INIT(&s->outputpt); - s->state = STATE_WAITING; - /* timer_set(&s->timer, CLOCK_SECOND * 100);*/ - s->timer = 0; - handle_connection(s); - } else if(s != NULL) { - if(uip_poll()) { - ++s->timer; - if(s->timer >= 20) { - uip_abort(); - } - } else { - s->timer = 0; - } - handle_connection(s); - } else { - uip_abort(); - } -} -/*---------------------------------------------------------------------------*/ -/** - * \brief Initialize the web server - * - * This function initializes the web server and should be - * called at system boot-up. - */ -void -httpd_init(void) -{ - uip_listen(HTONS(80)); -} -/*---------------------------------------------------------------------------*/ -/** @} */ diff --git a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/httpd.h b/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/httpd.h deleted file mode 100644 index 7f7a6666e..000000000 --- a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/httpd.h +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright (c) 2001-2005, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: httpd.h,v 1.2 2006/06/11 21:46:38 adam Exp $ - * - */ - -#ifndef __HTTPD_H__ -#define __HTTPD_H__ - -#include "psock.h" -#include "httpd-fs.h" - -struct httpd_state { - unsigned char timer; - struct psock sin, sout; - struct pt outputpt, scriptpt; - char inputbuf[50]; - char filename[20]; - char state; - struct httpd_fs_file file; - int len; - char *scriptptr; - int scriptlen; - - unsigned short count; -}; - -void httpd_init(void); -void httpd_appcall(void); - -void httpd_log(char *msg); -void httpd_log_file(u16_t *requester, char *file); - -#endif /* __HTTPD_H__ */ diff --git a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/makefsdata b/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/makefsdata deleted file mode 100644 index 8d2715a8a..000000000 --- a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/makefsdata +++ /dev/null @@ -1,78 +0,0 @@ -#!/usr/bin/perl - -open(OUTPUT, "> httpd-fsdata.c"); - -chdir("httpd-fs"); - -opendir(DIR, "."); -@files = grep { !/^\./ && !/(CVS|~)/ } readdir(DIR); -closedir(DIR); - -foreach $file (@files) { - - if(-d $file && $file !~ /^\./) { - print "Processing directory $file\n"; - opendir(DIR, $file); - @newfiles = grep { !/^\./ && !/(CVS|~)/ } readdir(DIR); - closedir(DIR); - printf "Adding files @newfiles\n"; - @files = (@files, map { $_ = "$file/$_" } @newfiles); - next; - } -} - -foreach $file (@files) { - if(-f $file) { - - print "Adding file $file\n"; - - open(FILE, $file) || die "Could not open file $file\n"; - - $file =~ s-^-/-; - $fvar = $file; - $fvar =~ s-/-_-g; - $fvar =~ s-\.-_-g; - # for AVR, add PROGMEM here - print(OUTPUT "static const unsigned char data".$fvar."[] = {\n"); - print(OUTPUT "\t/* $file */\n\t"); - for($j = 0; $j < length($file); $j++) { - printf(OUTPUT "%#02x, ", unpack("C", substr($file, $j, 1))); - } - printf(OUTPUT "0,\n"); - - - $i = 0; - while(read(FILE, $data, 1)) { - if($i == 0) { - print(OUTPUT "\t"); - } - printf(OUTPUT "%#02x, ", unpack("C", $data)); - $i++; - if($i == 10) { - print(OUTPUT "\n"); - $i = 0; - } - } - print(OUTPUT "0};\n\n"); - close(FILE); - push(@fvars, $fvar); - push(@pfiles, $file); - } -} - -for($i = 0; $i < @fvars; $i++) { - $file = $pfiles[$i]; - $fvar = $fvars[$i]; - - if($i == 0) { - $prevfile = "NULL"; - } else { - $prevfile = "file" . $fvars[$i - 1]; - } - print(OUTPUT "const struct httpd_fsdata_file file".$fvar."[] = {{$prevfile, data$fvar, "); - print(OUTPUT "data$fvar + ". (length($file) + 1) .", "); - print(OUTPUT "sizeof(data$fvar) - ". (length($file) + 1) ."}};\n\n"); -} - -print(OUTPUT "#define HTTPD_FS_ROOT file$fvars[$i - 1]\n\n"); -print(OUTPUT "#define HTTPD_FS_NUMFILES $i\n"); diff --git a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/makestrings b/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/makestrings deleted file mode 100644 index 8a13c6d29..000000000 --- a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/makestrings +++ /dev/null @@ -1,40 +0,0 @@ -#!/usr/bin/perl - - -sub stringify { - my $name = shift(@_); - open(OUTPUTC, "> $name.c"); - open(OUTPUTH, "> $name.h"); - - open(FILE, "$name"); - - while() { - if(/(.+) "(.+)"/) { - $var = $1; - $data = $2; - - $datan = $data; - $datan =~ s/\\r/\r/g; - $datan =~ s/\\n/\n/g; - $datan =~ s/\\01/\01/g; - $datan =~ s/\\0/\0/g; - - printf(OUTPUTC "const char $var\[%d] = \n", length($datan) + 1); - printf(OUTPUTC "/* \"$data\" */\n"); - printf(OUTPUTC "{"); - for($j = 0; $j < length($datan); $j++) { - printf(OUTPUTC "%#02x, ", unpack("C", substr($datan, $j, 1))); - } - printf(OUTPUTC "};\n"); - - printf(OUTPUTH "extern const char $var\[%d];\n", length($datan) + 1); - - } - } - close(OUTPUTC); - close(OUTPUTH); -} -stringify("http-strings"); - -exit 0; - diff --git a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/webserver.h b/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/webserver.h deleted file mode 100644 index 1acb290b8..000000000 --- a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/apps/webserver/webserver.h +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright (c) 2002, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials provided - * with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: webserver.h,v 1.2 2006/06/11 21:46:38 adam Exp $ - * - */ -#ifndef __WEBSERVER_H__ -#define __WEBSERVER_H__ - -#include "httpd.h" - -typedef struct httpd_state uip_tcp_appstate_t; -/* UIP_APPCALL: the name of the application function. This function - must return void and take no arguments (i.e., C type "void - appfunc(void)"). */ -#ifndef UIP_APPCALL -#define UIP_APPCALL httpd_appcall -#endif - - -#endif /* __WEBSERVER_H__ */ diff --git a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip-1.0-changelog.txt b/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip-1.0-changelog.txt deleted file mode 100644 index 7a97704ea..000000000 --- a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip-1.0-changelog.txt +++ /dev/null @@ -1,98 +0,0 @@ -* A new API: protosockets that are similar to BSD sockets but does not - require any underlying multithreading system. - -* Very rudimentary IPv6 support - -* New application: DHCP client. Web server rewritten with protosockets. - -* Removed uIP zero-copy functionality in order to simplify uIP device - driver coding: outbound packets are now *always* stored in full in - the uip_buf buffer. - -* Checksum computation is now part of uip.c, but it still is possible - to implement them in assembly code by specifying a configuration - option. Checksum code now runs on architectures with 2-byte alignment. - -* Added TCP persistent timer. - -* Made all IP address representations use the new uip_ipaddr_ip - datatype for clarity. - -* Updated window behavior so that sending to a host with a small open - window works better now. - -* UDP API change: uip_udp_new() now takes port numbers in network byte - order like TCP functions. - -* Allow reception of packets when no IP address is configured to make - DHCP work. - -* Moved Ethernet address into main uIP module from ARP module. - -* Made constants explicit #defines and moved them out of the code - (header sizes, TCP options, TCP header length field). - -* If uip_len is less than that reported by the IP header, the packet - is discarded. If uip_len is greater than the length reported by the - IP header, uip_len is adjusted. - -* Moved header size definitions into header file. - -* Added uIP call for polling an application without triggering any - timer events. Removed redundant assignments of uip_len and uip_slen. - -* Removed compiler warning about icmp_input label being defined when - UIP_PINGADDRCONF was not used. - -* Added UIP_APPDATA_SIZE macro that holds the available buffer size - for user data. - -* Added uip_udp_bind() call. - -* Moved checksum code into main uIP module. - -* Switched the TCP, UDP and IP header structures to be structs rather - than typedefs. - -* Prefixed TCP state names with UIP_ to avoid name space - contamination. - -* Changed declarations of uip_appdatap and friends to void * to avoid - explicit typecasts. - -* Bugfixes - - o TCP: Fixed bug with high byte of peer window size. - - o TCP: Fixed bug that in some cases prevented concurrent reception and - transmission of TCP data. - - o TCP: uip_connect() didn't correctly calculate age of TIME_WAIT - connections. - - o TCP: Array index for uip_conns[] array was out of bounds in - comparison. Comparison changed to make index within bounds. - - o TCP: if the remote host crashes and tries to reestablish an old - connection, uIP should respond with an ACK with the correct - sequence and acknowledgment numbers, to which the remote host - should respond with an ACK. uIP did not respond with the correct - ACK. - - o TCP: Fixed check for SYNACK segment: now checks only relevant TCP - control flags and discards flags reserved for future expansion. - - o TCP: Fixed bug where uIP did not inform application that a connection - had been aborted during an active open. - - o TCP: FIN segment was accepted even though application had stopped - incoming data with uip_stop(). - - o TCP: A FINACK segment would not always correctly acknowledge data. - - o UDP: checksums are now calculated after all fields have been - filled in. - - o UDP: network byte order on lastport in uip_udp_new(). - - o IP: memset() bugs in IP fragment reassembly code fixed. diff --git a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/Makefile.include b/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/Makefile.include deleted file mode 100644 index 43ba24744..000000000 --- a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/Makefile.include +++ /dev/null @@ -1,47 +0,0 @@ - - -ifdef APPS - APPDIRS = $(foreach APP, $(APPS), ../apps/$(APP)) - -include $(foreach APP, $(APPS), ../apps/$(APP)/Makefile.$(APP)) - CFLAGS += $(addprefix -I../apps/,$(APPS)) -endif - -ifndef CCDEP - CCDEP = $(CC) -endif -ifndef CCDEPCFLAGS - CCDEPCFLAGS = $(CFLAGS) -endif -ifndef OBJECTDIR - OBJECTDIR = obj -endif - -ifeq (${wildcard $(OBJECTDIR)},) - DUMMY := ${shell mkdir $(OBJECTDIR)} -endif - - -vpath %.c . ../uip ../lib $(APPDIRS) - -$(OBJECTDIR)/%.o: %.c - $(CC) $(CFLAGS) -c $< -o $@ - -$(OBJECTDIR)/%.d: %.c - @set -e; rm -f $@; \ - $(CCDEP) -MM $(CCDEPCFLAGS) $< > $@.$$$$; \ - sed 's,\($*\)\.o[ :]*,$(OBJECTDIR)/\1.o $@ : ,g' < $@.$$$$ > $@; \ - rm -f $@.$$$$ - -UIP_SOURCES=uip.c uip_arp.c uiplib.c psock.c timer.c uip-neighbor.c - - -ifneq ($(MAKECMDGOALS),clean) --include $(addprefix $(OBJECTDIR)/,$(UIP_SOURCES:.c=.d) \ - $(APP_SOURCES:.c=.d)) -endif - -uip.a: ${addprefix $(OBJECTDIR)/, $(UIP_SOURCES:.c=.o)} - $(AR) rcf $@ $^ - -apps.a: ${addprefix $(OBJECTDIR)/, $(APP_SOURCES:.c=.o)} - $(AR) rcf $@ $^ diff --git a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/clock.h b/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/clock.h deleted file mode 100644 index dae68745f..000000000 --- a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/clock.h +++ /dev/null @@ -1,88 +0,0 @@ -/** - * \defgroup clock Clock interface - * - * The clock interface is the interface between the \ref timer "timer library" - * and the platform specific clock functionality. The clock - * interface must be implemented for each platform that uses the \ref - * timer "timer library". - * - * The clock interface does only one this: it measures time. The clock - * interface provides a macro, CLOCK_SECOND, which corresponds to one - * second of system time. - * - * \sa \ref timer "Timer library" - * - * @{ - */ - -/* - * Copyright (c) 2004, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * Author: Adam Dunkels - * - * $Id: clock.h,v 1.3 2006/06/11 21:46:39 adam Exp $ - */ -#ifndef __CLOCK_H__ -#define __CLOCK_H__ - -#include "clock-arch.h" - -/** - * Initialize the clock library. - * - * This function initializes the clock library and should be called - * from the main() function of the system. - * - */ -void clock_init(void); - -/** - * Get the current clock time. - * - * This function returns the current system clock time. - * - * \return The current clock time, measured in system ticks. - */ -clock_time_t clock_time(void); - -/** - * A second, measured in system clock time. - * - * \hideinitializer - */ -#ifdef CLOCK_CONF_SECOND -#define CLOCK_SECOND CLOCK_CONF_SECOND -#else -#define CLOCK_SECOND (clock_time_t)32 -#endif - -#endif /* __CLOCK_H__ */ - -/** @} */ diff --git a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/lc-addrlabels.h b/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/lc-addrlabels.h deleted file mode 100644 index 9dff03d09..000000000 --- a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/lc-addrlabels.h +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Copyright (c) 2004-2005, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * Author: Adam Dunkels - * - * $Id: lc-addrlabels.h,v 1.3 2006/06/12 08:00:30 adam Exp $ - */ - -/** - * \addtogroup lc - * @{ - */ - -/** - * \file - * Implementation of local continuations based on the "Labels as - * values" feature of gcc - * \author - * Adam Dunkels - * - * This implementation of local continuations is based on a special - * feature of the GCC C compiler called "labels as values". This - * feature allows assigning pointers with the address of the code - * corresponding to a particular C label. - * - * For more information, see the GCC documentation: - * http://gcc.gnu.org/onlinedocs/gcc/Labels-as-Values.html - * - * Thanks to dividuum for finding the nice local scope label - * implementation. - */ - -#ifndef __LC_ADDRLABELS_H__ -#define __LC_ADDRLABELS_H__ - -/** \hideinitializer */ -typedef void * lc_t; - -#define LC_INIT(s) s = NULL - - -#define LC_RESUME(s) \ - do { \ - if(s != NULL) { \ - goto *s; \ - } \ - } while(0) - -#define LC_SET(s) \ - do { ({ __label__ resume; resume: (s) = &&resume; }); }while(0) - -#define LC_END(s) - -#endif /* __LC_ADDRLABELS_H__ */ - -/** @} */ diff --git a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/lc-switch.h b/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/lc-switch.h deleted file mode 100644 index 17c881161..000000000 --- a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/lc-switch.h +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Copyright (c) 2004-2005, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * Author: Adam Dunkels - * - * $Id: lc-switch.h,v 1.2 2006/06/12 08:00:30 adam Exp $ - */ - -/** - * \addtogroup lc - * @{ - */ - -/** - * \file - * Implementation of local continuations based on switch() statment - * \author Adam Dunkels - * - * This implementation of local continuations uses the C switch() - * statement to resume execution of a function somewhere inside the - * function's body. The implementation is based on the fact that - * switch() statements are able to jump directly into the bodies of - * control structures such as if() or while() statmenets. - * - * This implementation borrows heavily from Simon Tatham's coroutines - * implementation in C: - * http://www.chiark.greenend.org.uk/~sgtatham/coroutines.html - */ - -#ifndef __LC_SWITCH_H__ -#define __LC_SWTICH_H__ - -/* WARNING! lc implementation using switch() does not work if an - LC_SET() is done within another switch() statement! */ - -/** \hideinitializer */ -typedef unsigned short lc_t; - -#define LC_INIT(s) s = 0; - -#define LC_RESUME(s) switch(s) { case 0: - -#define LC_SET(s) s = __LINE__; case __LINE__: - -#define LC_END(s) } - -#endif /* __LC_SWITCH_H__ */ - -/** @} */ diff --git a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/lc.h b/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/lc.h deleted file mode 100644 index 3ad83cd0a..000000000 --- a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/lc.h +++ /dev/null @@ -1,131 +0,0 @@ -/* - * Copyright (c) 2004-2005, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * Author: Adam Dunkels - * - * $Id: lc.h,v 1.2 2006/06/12 08:00:30 adam Exp $ - */ - -/** - * \addtogroup pt - * @{ - */ - -/** - * \defgroup lc Local continuations - * @{ - * - * Local continuations form the basis for implementing protothreads. A - * local continuation can be set in a specific function to - * capture the state of the function. After a local continuation has - * been set can be resumed in order to restore the state of the - * function at the point where the local continuation was set. - * - * - */ - -/** - * \file lc.h - * Local continuations - * \author - * Adam Dunkels - * - */ - -#ifdef DOXYGEN -/** - * Initialize a local continuation. - * - * This operation initializes the local continuation, thereby - * unsetting any previously set continuation state. - * - * \hideinitializer - */ -#define LC_INIT(lc) - -/** - * Set a local continuation. - * - * The set operation saves the state of the function at the point - * where the operation is executed. As far as the set operation is - * concerned, the state of the function does not include the - * call-stack or local (automatic) variables, but only the program - * counter and such CPU registers that needs to be saved. - * - * \hideinitializer - */ -#define LC_SET(lc) - -/** - * Resume a local continuation. - * - * The resume operation resumes a previously set local continuation, thus - * restoring the state in which the function was when the local - * continuation was set. If the local continuation has not been - * previously set, the resume operation does nothing. - * - * \hideinitializer - */ -#define LC_RESUME(lc) - -/** - * Mark the end of local continuation usage. - * - * The end operation signifies that local continuations should not be - * used any more in the function. This operation is not needed for - * most implementations of local continuation, but is required by a - * few implementations. - * - * \hideinitializer - */ -#define LC_END(lc) - -/** - * \var typedef lc_t; - * - * The local continuation type. - * - * \hideinitializer - */ -#endif /* DOXYGEN */ - -#ifndef __LC_H__ -#define __LC_H__ - -#ifdef LC_CONF_INCLUDE -#include LC_CONF_INCLUDE -#else -#include "lc-switch.h" -#endif /* LC_CONF_INCLUDE */ - -#endif /* __LC_H__ */ - -/** @} */ -/** @} */ diff --git a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/psock.c b/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/psock.c deleted file mode 100644 index 0c390d0a8..000000000 --- a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/psock.c +++ /dev/null @@ -1,339 +0,0 @@ -/* - * Copyright (c) 2004, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * Author: Adam Dunkels - * - * $Id: psock.c,v 1.2 2006/06/12 08:00:30 adam Exp $ - */ - -#include -#include - -#include "uipopt.h" -#include "psock.h" -#include "uip.h" - -#define STATE_NONE 0 -#define STATE_ACKED 1 -#define STATE_READ 2 -#define STATE_BLOCKED_NEWDATA 3 -#define STATE_BLOCKED_CLOSE 4 -#define STATE_BLOCKED_SEND 5 -#define STATE_DATA_SENT 6 - -/* - * Return value of the buffering functions that indicates that a - * buffer was not filled by incoming data. - * - */ -#define BUF_NOT_FULL 0 -#define BUF_NOT_FOUND 0 - -/* - * Return value of the buffering functions that indicates that a - * buffer was completely filled by incoming data. - * - */ -#define BUF_FULL 1 - -/* - * Return value of the buffering functions that indicates that an - * end-marker byte was found. - * - */ -#define BUF_FOUND 2 - -/*---------------------------------------------------------------------------*/ -static void -buf_setup(struct psock_buf *buf, - u8_t *bufptr, u16_t bufsize) -{ - buf->ptr = bufptr; - buf->left = bufsize; -} -/*---------------------------------------------------------------------------*/ -static u8_t -buf_bufdata(struct psock_buf *buf, u16_t len, - u8_t **dataptr, u16_t *datalen) -{ - ( void ) len; - if(*datalen < buf->left) { - memcpy(buf->ptr, *dataptr, *datalen); - buf->ptr += *datalen; - buf->left -= *datalen; - *dataptr += *datalen; - *datalen = 0; - return BUF_NOT_FULL; - } else if(*datalen == buf->left) { - memcpy(buf->ptr, *dataptr, *datalen); - buf->ptr += *datalen; - buf->left = 0; - *dataptr += *datalen; - *datalen = 0; - return BUF_FULL; - } else { - memcpy(buf->ptr, *dataptr, buf->left); - buf->ptr += buf->left; - *datalen -= buf->left; - *dataptr += buf->left; - buf->left = 0; - return BUF_FULL; - } -} -/*---------------------------------------------------------------------------*/ -static u8_t -buf_bufto(register struct psock_buf *buf, u8_t endmarker, - register u8_t **dataptr, register u16_t *datalen) -{ - u8_t c; - while(buf->left > 0 && *datalen > 0) { - c = *buf->ptr = **dataptr; - ++*dataptr; - ++buf->ptr; - --*datalen; - --buf->left; - - if(c == endmarker) { - return BUF_FOUND; - } - } - - if(*datalen == 0) { - return BUF_NOT_FOUND; - } - - while(*datalen > 0) { - c = **dataptr; - --*datalen; - ++*dataptr; - - if(c == endmarker) { - return BUF_FOUND | BUF_FULL; - } - } - - return BUF_FULL; -} -/*---------------------------------------------------------------------------*/ -static char -send_data(register struct psock *s) -{ - if(s->state != STATE_DATA_SENT || uip_rexmit()) { - if(s->sendlen > uip_mss()) { - uip_send(s->sendptr, uip_mss()); - } else { - uip_send(s->sendptr, s->sendlen); - } - s->state = STATE_DATA_SENT; - return 1; - } - return 0; -} -/*---------------------------------------------------------------------------*/ -static char -data_acked(register struct psock *s) -{ - if(s->state == STATE_DATA_SENT && uip_acked()) { - if(s->sendlen > uip_mss()) { - s->sendlen -= uip_mss(); - s->sendptr += uip_mss(); - } else { - s->sendptr += s->sendlen; - s->sendlen = 0; - } - s->state = STATE_ACKED; - return 1; - } - return 0; -} -/*---------------------------------------------------------------------------*/ -PT_THREAD(psock_send(register struct psock *s, const char *buf, - unsigned int len)) -{ - PT_BEGIN(&s->psockpt); - - /* If there is no data to send, we exit immediately. */ - if(len == 0) { - PT_EXIT(&s->psockpt); - } - - /* Save the length of and a pointer to the data that is to be - sent. */ - s->sendptr = (unsigned char*)buf; - s->sendlen = len; - - s->state = STATE_NONE; - - /* We loop here until all data is sent. The s->sendlen variable is - updated by the data_sent() function. */ - while(s->sendlen > 0) { - - /* - * The condition for this PT_WAIT_UNTIL is a little tricky: the - * protothread will wait here until all data has been acknowledged - * (data_acked() returns true) and until all data has been sent - * (send_data() returns true). The two functions data_acked() and - * send_data() must be called in succession to ensure that all - * data is sent. Therefore the & operator is used instead of the - * && operator, which would cause only the data_acked() function - * to be called when it returns false. - */ - PT_WAIT_UNTIL(&s->psockpt, data_acked(s) & send_data(s)); - } - - s->state = STATE_NONE; - - PT_END(&s->psockpt); -} -/*---------------------------------------------------------------------------*/ -PT_THREAD(psock_generator_send(register struct psock *s, - unsigned short (*generate)(void *), void *arg)) -{ - PT_BEGIN(&s->psockpt); - - /* Ensure that there is a generator function to call. */ - if(generate == NULL) { - PT_EXIT(&s->psockpt); - } - - /* Call the generator function to generate the data in the - uip_appdata buffer. */ - s->sendlen = generate(arg); - s->sendptr = uip_appdata; - - s->state = STATE_NONE; - do { - /* Call the generator function again if we are called to perform a - retransmission. */ - if(uip_rexmit()) { - generate(arg); - } - /* Wait until all data is sent and acknowledged. */ - PT_WAIT_UNTIL(&s->psockpt, data_acked(s) & send_data(s)); - } while(s->sendlen > 0); - - s->state = STATE_NONE; - - PT_END(&s->psockpt); -} -/*---------------------------------------------------------------------------*/ -u16_t -psock_datalen(struct psock *psock) -{ - return psock->bufsize - psock->buf.left; -} -/*---------------------------------------------------------------------------*/ -char -psock_newdata(struct psock *s) -{ - if(s->readlen > 0) { - /* There is data in the uip_appdata buffer that has not yet been - read with the PSOCK_READ functions. */ - return 1; - } else if(s->state == STATE_READ) { - /* All data in uip_appdata buffer already consumed. */ - s->state = STATE_BLOCKED_NEWDATA; - return 0; - } else if(uip_newdata()) { - /* There is new data that has not been consumed. */ - return 1; - } else { - /* There is no new data. */ - return 0; - } -} -/*---------------------------------------------------------------------------*/ -PT_THREAD(psock_readto(register struct psock *psock, unsigned char c)) -{ - PT_BEGIN(&psock->psockpt); - - buf_setup(&psock->buf, (unsigned char*)psock->bufptr, psock->bufsize); - - /* XXX: Should add buf_checkmarker() before do{} loop, if - incoming data has been handled while waiting for a write. */ - - do { - if(psock->readlen == 0) { - PT_WAIT_UNTIL(&psock->psockpt, psock_newdata(psock)); - psock->state = STATE_READ; - psock->readptr = (u8_t *)uip_appdata; - psock->readlen = uip_datalen(); - } - } while((buf_bufto(&psock->buf, c, - &psock->readptr, - &psock->readlen) & BUF_FOUND) == 0); - - if(psock_datalen(psock) == 0) { - psock->state = STATE_NONE; - PT_RESTART(&psock->psockpt); - } - PT_END(&psock->psockpt); -} -/*---------------------------------------------------------------------------*/ -PT_THREAD(psock_readbuf(register struct psock *psock)) -{ - PT_BEGIN(&psock->psockpt); - - buf_setup(&psock->buf, (unsigned char * ) psock->bufptr, psock->bufsize); - - /* XXX: Should add buf_checkmarker() before do{} loop, if - incoming data has been handled while waiting for a write. */ - - do { - if(psock->readlen == 0) { - PT_WAIT_UNTIL(&psock->psockpt, psock_newdata(psock)); - printf("Waited for newdata\n"); - psock->state = STATE_READ; - psock->readptr = (u8_t *)uip_appdata; - psock->readlen = uip_datalen(); - } - } while(buf_bufdata(&psock->buf, psock->bufsize, - &psock->readptr, - &psock->readlen) != BUF_FULL); - - if(psock_datalen(psock) == 0) { - psock->state = STATE_NONE; - PT_RESTART(&psock->psockpt); - } - PT_END(&psock->psockpt); -} -/*---------------------------------------------------------------------------*/ -void -psock_init(register struct psock *psock, char *buffer, unsigned int buffersize) -{ - psock->state = STATE_NONE; - psock->readlen = 0; - psock->bufptr = buffer; - psock->bufsize = buffersize; - buf_setup(&psock->buf, (unsigned char*) buffer, buffersize); - PT_INIT(&psock->pt); - PT_INIT(&psock->psockpt); -} -/*---------------------------------------------------------------------------*/ diff --git a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/psock.h b/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/psock.h deleted file mode 100644 index 8d4125878..000000000 --- a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/psock.h +++ /dev/null @@ -1,380 +0,0 @@ -/* - * Copyright (c) 2004, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * Author: Adam Dunkels - * - * $Id: psock.h,v 1.3 2006/06/12 08:00:30 adam Exp $ - */ - -/** - * \defgroup psock Protosockets library - * @{ - * - * The protosocket library provides an interface to the uIP stack that is - * similar to the traditional BSD socket interface. Unlike programs - * written for the ordinary uIP event-driven interface, programs - * written with the protosocket library are executed in a sequential - * fashion and does not have to be implemented as explicit state - * machines. - * - * Protosockets only work with TCP connections. - * - * The protosocket library uses \ref pt protothreads to provide - * sequential control flow. This makes the protosockets lightweight in - * terms of memory, but also means that protosockets inherits the - * functional limitations of protothreads. Each protosocket lives only - * within a single function. Automatic variables (stack variables) are - * not retained across a protosocket library function call. - * - * \note Because the protosocket library uses protothreads, local - * variables will not always be saved across a call to a protosocket - * library function. It is therefore advised that local variables are - * used with extreme care. - * - * The protosocket library provides functions for sending data without - * having to deal with retransmissions and acknowledgements, as well - * as functions for reading data without having to deal with data - * being split across more than one TCP segment. - * - * Because each protosocket runs as a protothread, the protosocket has to be - * started with a call to PSOCK_BEGIN() at the start of the function - * in which the protosocket is used. Similarly, the protosocket protothread can - * be terminated by a call to PSOCK_EXIT(). - * - */ - -/** - * \file - * Protosocket library header file - * \author - * Adam Dunkels - * - */ - -#ifndef __PSOCK_H__ -#define __PSOCK_H__ - -#include "uipopt.h" -#include "pt.h" - - /* - * The structure that holds the state of a buffer. - * - * This structure holds the state of a uIP buffer. The structure has - * no user-visible elements, but is used through the functions - * provided by the library. - * - */ -struct psock_buf { - u8_t *ptr; - unsigned short left; -}; - -/** - * The representation of a protosocket. - * - * The protosocket structrure is an opaque structure with no user-visible - * elements. - */ -struct psock { - struct pt pt, psockpt; /* Protothreads - one that's using the psock - functions, and one that runs inside the - psock functions. */ - const u8_t *sendptr; /* Pointer to the next data to be sent. */ - u8_t *readptr; /* Pointer to the next data to be read. */ - - char *bufptr; /* Pointer to the buffer used for buffering - incoming data. */ - - u16_t sendlen; /* The number of bytes left to be sent. */ - u16_t readlen; /* The number of bytes left to be read. */ - - struct psock_buf buf; /* The structure holding the state of the - input buffer. */ - unsigned int bufsize; /* The size of the input buffer. */ - - unsigned char state; /* The state of the protosocket. */ -}; - -void psock_init(struct psock *psock, char *buffer, unsigned int buffersize); -/** - * Initialize a protosocket. - * - * This macro initializes a protosocket and must be called before the - * protosocket is used. The initialization also specifies the input buffer - * for the protosocket. - * - * \param psock (struct psock *) A pointer to the protosocket to be - * initialized - * - * \param buffer (char *) A pointer to the input buffer for the - * protosocket. - * - * \param buffersize (unsigned int) The size of the input buffer. - * - * \hideinitializer - */ -#define PSOCK_INIT(psock, buffer, buffersize) \ - psock_init(psock, buffer, buffersize) - -/** - * Start the protosocket protothread in a function. - * - * This macro starts the protothread associated with the protosocket and - * must come before other protosocket calls in the function it is used. - * - * \param psock (struct psock *) A pointer to the protosocket to be - * started. - * - * \hideinitializer - */ -#define PSOCK_BEGIN(psock) PT_BEGIN(&((psock)->pt)) - -PT_THREAD(psock_send(struct psock *psock, const char *buf, unsigned int len)); -/** - * Send data. - * - * This macro sends data over a protosocket. The protosocket protothread blocks - * until all data has been sent and is known to have been received by - * the remote end of the TCP connection. - * - * \param psock (struct psock *) A pointer to the protosocket over which - * data is to be sent. - * - * \param data (char *) A pointer to the data that is to be sent. - * - * \param datalen (unsigned int) The length of the data that is to be - * sent. - * - * \hideinitializer - */ -#define PSOCK_SEND(psock, data, datalen) \ - PT_WAIT_THREAD(&((psock)->pt), psock_send(psock, data, datalen)) - -/** - * \brief Send a null-terminated string. - * \param psock Pointer to the protosocket. - * \param str The string to be sent. - * - * This function sends a null-terminated string over the - * protosocket. - * - * \hideinitializer - */ -#define PSOCK_SEND_STR(psock, str) \ - PT_WAIT_THREAD(&((psock)->pt), psock_send(psock, str, strlen(str))) - -PT_THREAD(psock_generator_send(struct psock *psock, - unsigned short (*f)(void *), void *arg)); - -/** - * \brief Generate data with a function and send it - * \param psock Pointer to the protosocket. - * \param generator Pointer to the generator function - * \param arg Argument to the generator function - * - * This function generates data and sends it over the - * protosocket. This can be used to dynamically generate - * data for a transmission, instead of generating the data - * in a buffer beforehand. This function reduces the need for - * buffer memory. The generator function is implemented by - * the application, and a pointer to the function is given - * as an argument with the call to PSOCK_GENERATOR_SEND(). - * - * The generator function should place the generated data - * directly in the uip_appdata buffer, and return the - * length of the generated data. The generator function is - * called by the protosocket layer when the data first is - * sent, and once for every retransmission that is needed. - * - * \hideinitializer - */ -#define PSOCK_GENERATOR_SEND(psock, generator, arg) \ - PT_WAIT_THREAD(&((psock)->pt), \ - psock_generator_send(psock, generator, arg)) - - -/** - * Close a protosocket. - * - * This macro closes a protosocket and can only be called from within the - * protothread in which the protosocket lives. - * - * \param psock (struct psock *) A pointer to the protosocket that is to - * be closed. - * - * \hideinitializer - */ -#define PSOCK_CLOSE(psock) uip_close() - -PT_THREAD(psock_readbuf(struct psock *psock)); -/** - * Read data until the buffer is full. - * - * This macro will block waiting for data and read the data into the - * input buffer specified with the call to PSOCK_INIT(). Data is read - * until the buffer is full.. - * - * \param psock (struct psock *) A pointer to the protosocket from which - * data should be read. - * - * \hideinitializer - */ -#define PSOCK_READBUF(psock) \ - PT_WAIT_THREAD(&((psock)->pt), psock_readbuf(psock)) - -PT_THREAD(psock_readto(struct psock *psock, unsigned char c)); -/** - * Read data up to a specified character. - * - * This macro will block waiting for data and read the data into the - * input buffer specified with the call to PSOCK_INIT(). Data is only - * read until the specifieed character appears in the data stream. - * - * \param psock (struct psock *) A pointer to the protosocket from which - * data should be read. - * - * \param c (char) The character at which to stop reading. - * - * \hideinitializer - */ -#define PSOCK_READTO(psock, c) \ - PT_WAIT_THREAD(&((psock)->pt), psock_readto(psock, c)) - -/** - * The length of the data that was previously read. - * - * This macro returns the length of the data that was previously read - * using PSOCK_READTO() or PSOCK_READ(). - * - * \param psock (struct psock *) A pointer to the protosocket holding the data. - * - * \hideinitializer - */ -#define PSOCK_DATALEN(psock) psock_datalen(psock) - -u16_t psock_datalen(struct psock *psock); - -/** - * Exit the protosocket's protothread. - * - * This macro terminates the protothread of the protosocket and should - * almost always be used in conjunction with PSOCK_CLOSE(). - * - * \sa PSOCK_CLOSE_EXIT() - * - * \param psock (struct psock *) A pointer to the protosocket. - * - * \hideinitializer - */ -#define PSOCK_EXIT(psock) PT_EXIT(&((psock)->pt)) - -/** - * Close a protosocket and exit the protosocket's protothread. - * - * This macro closes a protosocket and exits the protosocket's protothread. - * - * \param psock (struct psock *) A pointer to the protosocket. - * - * \hideinitializer - */ -#define PSOCK_CLOSE_EXIT(psock) \ - do { \ - PSOCK_CLOSE(psock); \ - PSOCK_EXIT(psock); \ - } while(0) - -/** - * Declare the end of a protosocket's protothread. - * - * This macro is used for declaring that the protosocket's protothread - * ends. It must always be used together with a matching PSOCK_BEGIN() - * macro. - * - * \param psock (struct psock *) A pointer to the protosocket. - * - * \hideinitializer - */ -#define PSOCK_END(psock) PT_END(&((psock)->pt)) - -char psock_newdata(struct psock *s); - -/** - * Check if new data has arrived on a protosocket. - * - * This macro is used in conjunction with the PSOCK_WAIT_UNTIL() - * macro to check if data has arrived on a protosocket. - * - * \param psock (struct psock *) A pointer to the protosocket. - * - * \hideinitializer - */ -#define PSOCK_NEWDATA(psock) psock_newdata(psock) - -/** - * Wait until a condition is true. - * - * This macro blocks the protothread until the specified condition is - * true. The macro PSOCK_NEWDATA() can be used to check if new data - * arrives when the protosocket is waiting. - * - * Typically, this macro is used as follows: - * - \code - PT_THREAD(thread(struct psock *s, struct timer *t)) - { - PSOCK_BEGIN(s); - - PSOCK_WAIT_UNTIL(s, PSOCK_NEWADATA(s) || timer_expired(t)); - - if(PSOCK_NEWDATA(s)) { - PSOCK_READTO(s, '\n'); - } else { - handle_timed_out(s); - } - - PSOCK_END(s); - } - \endcode - * - * \param psock (struct psock *) A pointer to the protosocket. - * \param condition The condition to wait for. - * - * \hideinitializer - */ -#define PSOCK_WAIT_UNTIL(psock, condition) \ - PT_WAIT_UNTIL(&((psock)->pt), (condition)); - -#define PSOCK_WAIT_THREAD(psock, condition) \ - PT_WAIT_THREAD(&((psock)->pt), (condition)) - -#endif /* __PSOCK_H__ */ - -/** @} */ diff --git a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/pt.h b/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/pt.h deleted file mode 100644 index 00ddd4429..000000000 --- a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/pt.h +++ /dev/null @@ -1,323 +0,0 @@ -/* - * Copyright (c) 2004-2005, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * Author: Adam Dunkels - * - * $Id: pt.h,v 1.2 2006/06/12 08:00:30 adam Exp $ - */ - -/** - * \addtogroup pt - * @{ - */ - -/** - * \file - * Protothreads implementation. - * \author - * Adam Dunkels - * - */ - -#ifndef __PT_H__ -#define __PT_H__ - -#include "lc.h" - -struct pt { - lc_t lc; -}; - -#define PT_WAITING 0 -#define PT_EXITED 1 -#define PT_ENDED 2 -#define PT_YIELDED 3 - -/** - * \name Initialization - * @{ - */ - -/** - * Initialize a protothread. - * - * Initializes a protothread. Initialization must be done prior to - * starting to execute the protothread. - * - * \param pt A pointer to the protothread control structure. - * - * \sa PT_SPAWN() - * - * \hideinitializer - */ -#define PT_INIT(pt) LC_INIT((pt)->lc) - -/** @} */ - -/** - * \name Declaration and definition - * @{ - */ - -/** - * Declaration of a protothread. - * - * This macro is used to declare a protothread. All protothreads must - * be declared with this macro. - * - * \param name_args The name and arguments of the C function - * implementing the protothread. - * - * \hideinitializer - */ -#define PT_THREAD(name_args) char name_args - -/** - * Declare the start of a protothread inside the C function - * implementing the protothread. - * - * This macro is used to declare the starting point of a - * protothread. It should be placed at the start of the function in - * which the protothread runs. All C statements above the PT_BEGIN() - * invokation will be executed each time the protothread is scheduled. - * - * \param pt A pointer to the protothread control structure. - * - * \hideinitializer - */ -#define PT_BEGIN(pt) { char PT_YIELD_FLAG = 1; LC_RESUME((pt)->lc) - -/** - * Declare the end of a protothread. - * - * This macro is used for declaring that a protothread ends. It must - * always be used together with a matching PT_BEGIN() macro. - * - * \param pt A pointer to the protothread control structure. - * - * \hideinitializer - */ -#define PT_END(pt) LC_END((pt)->lc); PT_YIELD_FLAG = 0; \ - PT_INIT(pt); return PT_ENDED; } - -/** @} */ - -/** - * \name Blocked wait - * @{ - */ - -/** - * Block and wait until condition is true. - * - * This macro blocks the protothread until the specified condition is - * true. - * - * \param pt A pointer to the protothread control structure. - * \param condition The condition. - * - * \hideinitializer - */ -#define PT_WAIT_UNTIL(pt, condition) \ - do { \ - LC_SET((pt)->lc); \ - if(!(condition)) { \ - return PT_WAITING; \ - } \ - } while(0) - -/** - * Block and wait while condition is true. - * - * This function blocks and waits while condition is true. See - * PT_WAIT_UNTIL(). - * - * \param pt A pointer to the protothread control structure. - * \param cond The condition. - * - * \hideinitializer - */ -#define PT_WAIT_WHILE(pt, cond) PT_WAIT_UNTIL((pt), !(cond)) - -/** @} */ - -/** - * \name Hierarchical protothreads - * @{ - */ - -/** - * Block and wait until a child protothread completes. - * - * This macro schedules a child protothread. The current protothread - * will block until the child protothread completes. - * - * \note The child protothread must be manually initialized with the - * PT_INIT() function before this function is used. - * - * \param pt A pointer to the protothread control structure. - * \param thread The child protothread with arguments - * - * \sa PT_SPAWN() - * - * \hideinitializer - */ -#define PT_WAIT_THREAD(pt, thread) PT_WAIT_WHILE((pt), PT_SCHEDULE(thread)) - -/** - * Spawn a child protothread and wait until it exits. - * - * This macro spawns a child protothread and waits until it exits. The - * macro can only be used within a protothread. - * - * \param pt A pointer to the protothread control structure. - * \param child A pointer to the child protothread's control structure. - * \param thread The child protothread with arguments - * - * \hideinitializer - */ -#define PT_SPAWN(pt, child, thread) \ - do { \ - PT_INIT((child)); \ - PT_WAIT_THREAD((pt), (thread)); \ - } while(0) - -/** @} */ - -/** - * \name Exiting and restarting - * @{ - */ - -/** - * Restart the protothread. - * - * This macro will block and cause the running protothread to restart - * its execution at the place of the PT_BEGIN() call. - * - * \param pt A pointer to the protothread control structure. - * - * \hideinitializer - */ -#define PT_RESTART(pt) \ - do { \ - PT_INIT(pt); \ - return PT_WAITING; \ - } while(0) - -/** - * Exit the protothread. - * - * This macro causes the protothread to exit. If the protothread was - * spawned by another protothread, the parent protothread will become - * unblocked and can continue to run. - * - * \param pt A pointer to the protothread control structure. - * - * \hideinitializer - */ -#define PT_EXIT(pt) \ - do { \ - PT_INIT(pt); \ - return PT_EXITED; \ - } while(0) - -/** @} */ - -/** - * \name Calling a protothread - * @{ - */ - -/** - * Schedule a protothread. - * - * This function shedules a protothread. The return value of the - * function is non-zero if the protothread is running or zero if the - * protothread has exited. - * - * \param f The call to the C function implementing the protothread to - * be scheduled - * - * \hideinitializer - */ -#define PT_SCHEDULE(f) ((f) == PT_WAITING) - -/** @} */ - -/** - * \name Yielding from a protothread - * @{ - */ - -/** - * Yield from the current protothread. - * - * This function will yield the protothread, thereby allowing other - * processing to take place in the system. - * - * \param pt A pointer to the protothread control structure. - * - * \hideinitializer - */ -#define PT_YIELD(pt) \ - do { \ - PT_YIELD_FLAG = 0; \ - LC_SET((pt)->lc); \ - if(PT_YIELD_FLAG == 0) { \ - return PT_YIELDED; \ - } \ - } while(0) - -/** - * \brief Yield from the protothread until a condition occurs. - * \param pt A pointer to the protothread control structure. - * \param cond The condition. - * - * This function will yield the protothread, until the - * specified condition evaluates to true. - * - * - * \hideinitializer - */ -#define PT_YIELD_UNTIL(pt, cond) \ - do { \ - PT_YIELD_FLAG = 0; \ - LC_SET((pt)->lc); \ - if((PT_YIELD_FLAG == 0) || !(cond)) { \ - return PT_YIELDED; \ - } \ - } while(0) - -/** @} */ - -#endif /* __PT_H__ */ - -/** @} */ diff --git a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/timer.c b/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/timer.c deleted file mode 100644 index 8c270b233..000000000 --- a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/timer.c +++ /dev/null @@ -1,127 +0,0 @@ -/** - * \addtogroup timer - * @{ - */ - -/** - * \file - * Timer library implementation. - * \author - * Adam Dunkels - */ - -/* - * Copyright (c) 2004, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * Author: Adam Dunkels - * - * $Id: timer.c,v 1.2 2006/06/12 08:00:30 adam Exp $ - */ - -#include "clock.h" -#include "timer.h" - -/*---------------------------------------------------------------------------*/ -/** - * Set a timer. - * - * This function is used to set a timer for a time sometime in the - * future. The function timer_expired() will evaluate to true after - * the timer has expired. - * - * \param t A pointer to the timer - * \param interval The interval before the timer expires. - * - */ -void -timer_set(struct timer *t, clock_time_t interval) -{ - t->interval = interval; - t->start = clock_time(); -} -/*---------------------------------------------------------------------------*/ -/** - * Reset the timer with the same interval. - * - * This function resets the timer with the same interval that was - * given to the timer_set() function. The start point of the interval - * is the exact time that the timer last expired. Therefore, this - * function will cause the timer to be stable over time, unlike the - * timer_rester() function. - * - * \param t A pointer to the timer. - * - * \sa timer_restart() - */ -void -timer_reset(struct timer *t) -{ - t->start += t->interval; -} -/*---------------------------------------------------------------------------*/ -/** - * Restart the timer from the current point in time - * - * This function restarts a timer with the same interval that was - * given to the timer_set() function. The timer will start at the - * current time. - * - * \note A periodic timer will drift if this function is used to reset - * it. For preioric timers, use the timer_reset() function instead. - * - * \param t A pointer to the timer. - * - * \sa timer_reset() - */ -void -timer_restart(struct timer *t) -{ - t->start = clock_time(); -} -/*---------------------------------------------------------------------------*/ -/** - * Check if a timer has expired. - * - * This function tests if a timer has expired and returns true or - * false depending on its status. - * - * \param t A pointer to the timer - * - * \return Non-zero if the timer has expired, zero otherwise. - * - */ -int -timer_expired(struct timer *t) -{ - return (clock_time_t)(clock_time() - t->start) >= (clock_time_t)t->interval; -} -/*---------------------------------------------------------------------------*/ - -/** @} */ diff --git a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/timer.h b/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/timer.h deleted file mode 100644 index e28e3ca5f..000000000 --- a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/timer.h +++ /dev/null @@ -1,86 +0,0 @@ -/** - * \defgroup timer Timer library - * - * The timer library provides functions for setting, resetting and - * restarting timers, and for checking if a timer has expired. An - * application must "manually" check if its timers have expired; this - * is not done automatically. - * - * A timer is declared as a \c struct \c timer and all access to the - * timer is made by a pointer to the declared timer. - * - * \note The timer library uses the \ref clock "Clock library" to - * measure time. Intervals should be specified in the format used by - * the clock library. - * - * @{ - */ - - -/** - * \file - * Timer library header file. - * \author - * Adam Dunkels - */ - -/* - * Copyright (c) 2004, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * Author: Adam Dunkels - * - * $Id: timer.h,v 1.3 2006/06/11 21:46:39 adam Exp $ - */ -#ifndef __TIMER_H__ -#define __TIMER_H__ - -#include "clock.h" - -/** - * A timer. - * - * This structure is used for declaring a timer. The timer must be set - * with timer_set() before it can be used. - * - * \hideinitializer - */ -struct timer { - clock_time_t start; - clock_time_t interval; -}; - -void timer_set(struct timer *t, clock_time_t interval); -void timer_reset(struct timer *t); -void timer_restart(struct timer *t); -int timer_expired(struct timer *t); - -#endif /* __TIMER_H__ */ - -/** @} */ diff --git a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/uip-fw.c b/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/uip-fw.c deleted file mode 100644 index 2a85a6d9a..000000000 --- a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/uip-fw.c +++ /dev/null @@ -1,532 +0,0 @@ -/* - * Copyright (c) 2004, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * Author: Adam Dunkels - * - * $Id: uip-fw.c,v 1.2 2006/06/12 08:00:30 adam Exp $ - */ -/** - * \addtogroup uip - * @{ - */ - -/** - * \defgroup uipfw uIP packet forwarding - * @{ - * - */ - -/** - * \file - * uIP packet forwarding. - * \author Adam Dunkels - * - * This file implements a number of simple functions which do packet - * forwarding over multiple network interfaces with uIP. - * - */ - -#include "uip.h" -#include "uip_arch.h" -#include "uip-fw.h" - -#include /* for memcpy() */ - -/* - * The list of registered network interfaces. - */ -static struct uip_fw_netif *netifs = NULL; - -/* - * A pointer to the default network interface. - */ -static struct uip_fw_netif *defaultnetif = NULL; - -struct tcpip_hdr { - /* IP header. */ - u8_t vhl, - tos; - u16_t len, - ipid, - ipoffset; - u8_t ttl, - proto; - u16_t ipchksum; - u16_t srcipaddr[2], - destipaddr[2]; - - /* TCP header. */ - u16_t srcport, - destport; - u8_t seqno[4], - ackno[4], - tcpoffset, - flags, - wnd[2]; - u16_t tcpchksum; - u8_t urgp[2]; - u8_t optdata[4]; -} PACK_STRUCT_END; - -struct icmpip_hdr { - /* IP header. */ - u8_t vhl, - tos, - len[2], - ipid[2], - ipoffset[2], - ttl, - proto; - u16_t ipchksum; - u16_t srcipaddr[2], - destipaddr[2]; - /* ICMP (echo) header. */ - u8_t type, icode; - u16_t icmpchksum; - u16_t id, seqno; - u8_t payload[1]; -} PACK_STRUCT_END; - -/* ICMP ECHO. */ -#define ICMP_ECHO 8 - -/* ICMP TIME-EXCEEDED. */ -#define ICMP_TE 11 - -/* - * Pointer to the TCP/IP headers of the packet in the uip_buf buffer. - */ -#define BUF ((struct tcpip_hdr *)&uip_buf[UIP_LLH_LEN]) - -/* - * Pointer to the ICMP/IP headers of the packet in the uip_buf buffer. - */ -#define ICMPBUF ((struct icmpip_hdr *)&uip_buf[UIP_LLH_LEN]) - -/* - * Certain fields of an IP packet that are used for identifying - * duplicate packets. - */ -struct fwcache_entry { - u16_t timer; - - u16_t srcipaddr[2]; - u16_t destipaddr[2]; - u16_t ipid; - u8_t proto; - u8_t unused; - -#if notdef - u16_t payload[2]; -#endif - -#if UIP_REASSEMBLY > 0 - u16_t len, offset; -#endif -}; - -/* - * The number of packets to remember when looking for duplicates. - */ -#ifdef UIP_CONF_FWCACHE_SIZE -#define FWCACHE_SIZE UIP_CONF_FWCACHE_SIZE -#else -#define FWCACHE_SIZE 2 -#endif - - -/* - * A cache of packet header fields which are used for - * identifying duplicate packets. - */ -static struct fwcache_entry fwcache[FWCACHE_SIZE]; - -/** - * \internal - * The time that a packet cache is active. - */ -#define FW_TIME 20 - -/*------------------------------------------------------------------------------*/ -/** - * Initialize the uIP packet forwarding module. - */ -/*------------------------------------------------------------------------------*/ -void -uip_fw_init(void) -{ - struct uip_fw_netif *t; - defaultnetif = NULL; - while(netifs != NULL) { - t = netifs; - netifs = netifs->next; - t->next = NULL; - } -} -/*------------------------------------------------------------------------------*/ -/** - * \internal - * Check if an IP address is within the network defined by an IP - * address and a netmask. - * - * \param ipaddr The IP address to be checked. - * \param netipaddr The IP address of the network. - * \param netmask The netmask of the network. - * - * \return Non-zero if IP address is in network, zero otherwise. - */ -/*------------------------------------------------------------------------------*/ -static unsigned char -ipaddr_maskcmp(u16_t *ipaddr, u16_t *netipaddr, u16_t *netmask) -{ - return (ipaddr[0] & netmask [0]) == (netipaddr[0] & netmask[0]) && - (ipaddr[1] & netmask[1]) == (netipaddr[1] & netmask[1]); -} -/*------------------------------------------------------------------------------*/ -/** - * \internal - * Send out an ICMP TIME-EXCEEDED message. - * - * This function replaces the packet in the uip_buf buffer with the - * ICMP packet. - */ -/*------------------------------------------------------------------------------*/ -static void -time_exceeded(void) -{ - u16_t tmp16; - - /* We don't send out ICMP errors for ICMP messages. */ - if(ICMPBUF->proto == UIP_PROTO_ICMP) { - uip_len = 0; - return; - } - /* Copy fields from packet header into payload of this ICMP packet. */ - memcpy(&(ICMPBUF->payload[0]), ICMPBUF, 28); - - /* Set the ICMP type and code. */ - ICMPBUF->type = ICMP_TE; - ICMPBUF->icode = 0; - - /* Calculate the ICMP checksum. */ - ICMPBUF->icmpchksum = 0; - ICMPBUF->icmpchksum = ~uip_chksum((u16_t *)&(ICMPBUF->type), 36); - - /* Set the IP destination address to be the source address of the - original packet. */ - tmp16= BUF->destipaddr[0]; - BUF->destipaddr[0] = BUF->srcipaddr[0]; - BUF->srcipaddr[0] = tmp16; - tmp16 = BUF->destipaddr[1]; - BUF->destipaddr[1] = BUF->srcipaddr[1]; - BUF->srcipaddr[1] = tmp16; - - /* Set our IP address as the source address. */ - BUF->srcipaddr[0] = uip_hostaddr[0]; - BUF->srcipaddr[1] = uip_hostaddr[1]; - - /* The size of the ICMP time exceeded packet is 36 + the size of the - IP header (20) = 56. */ - uip_len = 56; - ICMPBUF->len[0] = 0; - ICMPBUF->len[1] = uip_len; - - /* Fill in the other fields in the IP header. */ - ICMPBUF->vhl = 0x45; - ICMPBUF->tos = 0; - ICMPBUF->ipoffset[0] = ICMPBUF->ipoffset[1] = 0; - ICMPBUF->ttl = UIP_TTL; - ICMPBUF->proto = UIP_PROTO_ICMP; - - /* Calculate IP checksum. */ - ICMPBUF->ipchksum = 0; - ICMPBUF->ipchksum = ~(uip_ipchksum()); - - -} -/*------------------------------------------------------------------------------*/ -/** - * \internal - * Register a packet in the forwarding cache so that it won't be - * forwarded again. - */ -/*------------------------------------------------------------------------------*/ -static void -fwcache_register(void) -{ - struct fwcache_entry *fw; - int i, oldest; - - oldest = FW_TIME; - fw = NULL; - - /* Find the oldest entry in the cache. */ - for(i = 0; i < FWCACHE_SIZE; ++i) { - if(fwcache[i].timer == 0) { - fw = &fwcache[i]; - break; - } else if(fwcache[i].timer <= oldest) { - fw = &fwcache[i]; - oldest = fwcache[i].timer; - } - } - - fw->timer = FW_TIME; - fw->ipid = BUF->ipid; - fw->srcipaddr[0] = BUF->srcipaddr[0]; - fw->srcipaddr[1] = BUF->srcipaddr[1]; - fw->destipaddr[0] = BUF->destipaddr[0]; - fw->destipaddr[1] = BUF->destipaddr[1]; - fw->proto = BUF->proto; -#if notdef - fw->payload[0] = BUF->srcport; - fw->payload[1] = BUF->destport; -#endif -#if UIP_REASSEMBLY > 0 - fw->len = BUF->len; - fw->offset = BUF->ipoffset; -#endif -} -/*------------------------------------------------------------------------------*/ -/** - * \internal - * Find a network interface for the IP packet in uip_buf. - */ -/*------------------------------------------------------------------------------*/ -static struct uip_fw_netif * -find_netif(void) -{ - struct uip_fw_netif *netif; - - /* Walk through every network interface to check for a match. */ - for(netif = netifs; netif != NULL; netif = netif->next) { - if(ipaddr_maskcmp(BUF->destipaddr, netif->ipaddr, - netif->netmask)) { - /* If there was a match, we break the loop. */ - return netif; - } - } - - /* If no matching netif was found, we use default netif. */ - return defaultnetif; -} -/*------------------------------------------------------------------------------*/ -/** - * Output an IP packet on the correct network interface. - * - * The IP packet should be present in the uip_buf buffer and its - * length in the global uip_len variable. - * - * \retval UIP_FW_ZEROLEN Indicates that a zero-length packet - * transmission was attempted and that no packet was sent. - * - * \retval UIP_FW_NOROUTE No suitable network interface could be found - * for the outbound packet, and the packet was not sent. - * - * \return The return value from the actual network interface output - * function is passed unmodified as a return value. - */ -/*------------------------------------------------------------------------------*/ -u8_t -uip_fw_output(void) -{ - struct uip_fw_netif *netif; - - if(uip_len == 0) { - return UIP_FW_ZEROLEN; - } - - fwcache_register(); - -#if UIP_BROADCAST - /* Link local broadcasts go out on all interfaces. */ - if(/*BUF->proto == UIP_PROTO_UDP &&*/ - BUF->destipaddr[0] == 0xffff && - BUF->destipaddr[1] == 0xffff) { - if(defaultnetif != NULL) { - defaultnetif->output(); - } - for(netif = netifs; netif != NULL; netif = netif->next) { - netif->output(); - } - return UIP_FW_OK; - } -#endif /* UIP_BROADCAST */ - - netif = find_netif(); - /* printf("uip_fw_output: netif %p ->output %p len %d\n", netif, - netif->output, - uip_len);*/ - - if(netif == NULL) { - return UIP_FW_NOROUTE; - } - /* If we now have found a suitable network interface, we call its - output function to send out the packet. */ - return netif->output(); -} -/*------------------------------------------------------------------------------*/ -/** - * Forward an IP packet in the uip_buf buffer. - * - * - * - * \return UIP_FW_FORWARDED if the packet was forwarded, UIP_FW_LOCAL if - * the packet should be processed locally. - */ -/*------------------------------------------------------------------------------*/ -u8_t -uip_fw_forward(void) -{ - struct fwcache_entry *fw; - - /* First check if the packet is destined for ourselves and return 0 - to indicate that the packet should be processed locally. */ - if(BUF->destipaddr[0] == uip_hostaddr[0] && - BUF->destipaddr[1] == uip_hostaddr[1]) { - return UIP_FW_LOCAL; - } - - /* If we use ping IP address configuration, and our IP address is - not yet configured, we should intercept all ICMP echo packets. */ -#if UIP_PINGADDRCONF - if((uip_hostaddr[0] | uip_hostaddr[1]) == 0 && - BUF->proto == UIP_PROTO_ICMP && - ICMPBUF->type == ICMP_ECHO) { - return UIP_FW_LOCAL; - } -#endif /* UIP_PINGADDRCONF */ - - /* Check if the packet is in the forwarding cache already, and if so - we drop it. */ - - for(fw = fwcache; fw < &fwcache[FWCACHE_SIZE]; ++fw) { - if(fw->timer != 0 && -#if UIP_REASSEMBLY > 0 - fw->len == BUF->len && - fw->offset == BUF->ipoffset && -#endif - fw->ipid == BUF->ipid && - fw->srcipaddr[0] == BUF->srcipaddr[0] && - fw->srcipaddr[1] == BUF->srcipaddr[1] && - fw->destipaddr[0] == BUF->destipaddr[0] && - fw->destipaddr[1] == BUF->destipaddr[1] && -#if notdef - fw->payload[0] == BUF->srcport && - fw->payload[1] == BUF->destport && -#endif - fw->proto == BUF->proto) { - /* Drop packet. */ - return UIP_FW_FORWARDED; - } - } - - /* If the TTL reaches zero we produce an ICMP time exceeded message - in the uip_buf buffer and forward that packet back to the sender - of the packet. */ - if(BUF->ttl <= 1) { - /* No time exceeded for broadcasts and multicasts! */ - if(BUF->destipaddr[0] == 0xffff && BUF->destipaddr[1] == 0xffff) { - return UIP_FW_LOCAL; - } - time_exceeded(); - } - - /* Decrement the TTL (time-to-live) value in the IP header */ - BUF->ttl = BUF->ttl - 1; - - /* Update the IP checksum. */ - if(BUF->ipchksum >= HTONS(0xffff - 0x0100)) { - BUF->ipchksum = BUF->ipchksum + HTONS(0x0100) + 1; - } else { - BUF->ipchksum = BUF->ipchksum + HTONS(0x0100); - } - - if(uip_len > 0) { - uip_appdata = &uip_buf[UIP_LLH_LEN + UIP_TCPIP_HLEN]; - uip_fw_output(); - } - -#if UIP_BROADCAST - if(BUF->destipaddr[0] == 0xffff && BUF->destipaddr[1] == 0xffff) { - return UIP_FW_LOCAL; - } -#endif /* UIP_BROADCAST */ - - /* Return non-zero to indicate that the packet was forwarded and that no - other processing should be made. */ - return UIP_FW_FORWARDED; -} -/*------------------------------------------------------------------------------*/ -/** - * Register a network interface with the forwarding module. - * - * \param netif A pointer to the network interface that is to be - * registered. - */ -/*------------------------------------------------------------------------------*/ -void -uip_fw_register(struct uip_fw_netif *netif) -{ - netif->next = netifs; - netifs = netif; -} -/*------------------------------------------------------------------------------*/ -/** - * Register a default network interface. - * - * All packets that don't go out on any of the other interfaces will - * be routed to the default interface. - * - * \param netif A pointer to the network interface that is to be - * registered. - */ -/*------------------------------------------------------------------------------*/ -void -uip_fw_default(struct uip_fw_netif *netif) -{ - defaultnetif = netif; -} -/*------------------------------------------------------------------------------*/ -/** - * Perform periodic processing. - */ -/*------------------------------------------------------------------------------*/ -void -uip_fw_periodic(void) -{ - struct fwcache_entry *fw; - for(fw = fwcache; fw < &fwcache[FWCACHE_SIZE]; ++fw) { - if(fw->timer > 0) { - --fw->timer; - } - } -} -/*------------------------------------------------------------------------------*/ diff --git a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/uip-fw.h b/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/uip-fw.h deleted file mode 100644 index e854ecefe..000000000 --- a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/uip-fw.h +++ /dev/null @@ -1,176 +0,0 @@ -/** - * \addtogroup uipfw - * @{ - */ - -/** - * \file - * uIP packet forwarding header file. - * \author Adam Dunkels - */ - -/* - * Copyright (c) 2004, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * Author: Adam Dunkels - * - * $Id: uip-fw.h,v 1.2 2006/06/12 08:00:30 adam Exp $ - */ -#ifndef __UIP_FW_H__ -#define __UIP_FW_H__ - -#include "uip.h" - -/** - * Representation of a uIP network interface. - */ -struct uip_fw_netif { - struct uip_fw_netif *next; /**< Pointer to the next interface when - linked in a list. */ - u16_t ipaddr[2]; /**< The IP address of this interface. */ - u16_t netmask[2]; /**< The netmask of the interface. */ - u8_t (* output)(void); - /**< A pointer to the function that - sends a packet. */ -}; - -/** - * Intantiating macro for a uIP network interface. - * - * Example: - \code - struct uip_fw_netif slipnetif = - {UIP_FW_NETIF(192,168,76,1, 255,255,255,0, slip_output)}; - \endcode - * \param ip1,ip2,ip3,ip4 The IP address of the network interface. - * - * \param nm1,nm2,nm3,nm4 The netmask of the network interface. - * - * \param outputfunc A pointer to the output function of the network interface. - * - * \hideinitializer - */ -#define UIP_FW_NETIF(ip1,ip2,ip3,ip4, nm1,nm2,nm3,nm4, outputfunc) \ - NULL, \ - {HTONS((ip1 << 8) | ip2), HTONS((ip3 << 8) | ip4)}, \ - {HTONS((nm1 << 8) | nm2), HTONS((nm3 << 8) | nm4)}, \ - outputfunc - -/** - * Set the IP address of a network interface. - * - * \param netif A pointer to the uip_fw_netif structure for the network interface. - * - * \param addr A pointer to an IP address. - * - * \hideinitializer - */ -#define uip_fw_setipaddr(netif, addr) \ - do { (netif)->ipaddr[0] = ((u16_t *)(addr))[0]; \ - (netif)->ipaddr[1] = ((u16_t *)(addr))[1]; } while(0) -/** - * Set the netmask of a network interface. - * - * \param netif A pointer to the uip_fw_netif structure for the network interface. - * - * \param addr A pointer to an IP address representing the netmask. - * - * \hideinitializer - */ -#define uip_fw_setnetmask(netif, addr) \ - do { (netif)->netmask[0] = ((u16_t *)(addr))[0]; \ - (netif)->netmask[1] = ((u16_t *)(addr))[1]; } while(0) - -void uip_fw_init(void); -u8_t uip_fw_forward(void); -u8_t uip_fw_output(void); -void uip_fw_register(struct uip_fw_netif *netif); -void uip_fw_default(struct uip_fw_netif *netif); -void uip_fw_periodic(void); - - -/** - * A non-error message that indicates that a packet should be - * processed locally. - * - * \hideinitializer - */ -#define UIP_FW_LOCAL 0 - -/** - * A non-error message that indicates that something went OK. - * - * \hideinitializer - */ -#define UIP_FW_OK 0 - -/** - * A non-error message that indicates that a packet was forwarded. - * - * \hideinitializer - */ -#define UIP_FW_FORWARDED 1 - -/** - * A non-error message that indicates that a zero-length packet - * transmission was attempted, and that no packet was sent. - * - * \hideinitializer - */ -#define UIP_FW_ZEROLEN 2 - -/** - * An error message that indicates that a packet that was too large - * for the outbound network interface was detected. - * - * \hideinitializer - */ -#define UIP_FW_TOOLARGE 3 - -/** - * An error message that indicates that no suitable interface could be - * found for an outbound packet. - * - * \hideinitializer - */ -#define UIP_FW_NOROUTE 4 - -/** - * An error message that indicates that a packet that should be - * forwarded or output was dropped. - * - * \hideinitializer - */ -#define UIP_FW_DROPPED 5 - - -#endif /* __UIP_FW_H__ */ - -/** @} */ diff --git a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/uip-neighbor.c b/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/uip-neighbor.c deleted file mode 100644 index 6920960f6..000000000 --- a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/uip-neighbor.c +++ /dev/null @@ -1,159 +0,0 @@ -/* - * Copyright (c) 2006, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: uip-neighbor.c,v 1.2 2006/06/12 08:00:30 adam Exp $ - */ - -/** - * \file - * Database of link-local neighbors, used by IPv6 code and - * to be used by a future ARP code rewrite. - * \author - * Adam Dunkels - */ - -#include "uip-neighbor.h" - -#include -#include - -#define MAX_TIME 128 - -#ifdef UIP_NEIGHBOR_CONF_ENTRIES -#define ENTRIES UIP_NEIGHBOR_CONF_ENTRIES -#else /* UIP_NEIGHBOR_CONF_ENTRIES */ -#define ENTRIES 8 -#endif /* UIP_NEIGHBOR_CONF_ENTRIES */ - -struct neighbor_entry { - uip_ipaddr_t ipaddr; - struct uip_neighbor_addr addr; - u8_t time; -}; -static struct neighbor_entry entries[ENTRIES]; - -/*---------------------------------------------------------------------------*/ -void -uip_neighbor_init(void) -{ - int i; - - for(i = 0; i < ENTRIES; ++i) { - entries[i].time = MAX_TIME; - } -} -/*---------------------------------------------------------------------------*/ -void -uip_neighbor_periodic(void) -{ - int i; - - for(i = 0; i < ENTRIES; ++i) { - if(entries[i].time < MAX_TIME) { - entries[i].time++; - } - } -} -/*---------------------------------------------------------------------------*/ -void -uip_neighbor_add(uip_ipaddr_t ipaddr, struct uip_neighbor_addr *addr) -{ - int i, oldest; - u8_t oldest_time; - - printf("Adding neighbor with link address %02x:%02x:%02x:%02x:%02x:%02x\n", - addr->addr.addr[0], addr->addr.addr[1], addr->addr.addr[2], addr->addr.addr[3], - addr->addr.addr[4], addr->addr.addr[5]); - - /* Find the first unused entry or the oldest used entry. */ - oldest_time = 0; - oldest = 0; - for(i = 0; i < ENTRIES; ++i) { - if(entries[i].time == MAX_TIME) { - oldest = i; - break; - } - if(uip_ipaddr_cmp(entries[i].ipaddr, addr)) { - oldest = i; - break; - } - if(entries[i].time > oldest_time) { - oldest = i; - oldest_time = entries[i].time; - } - } - - /* Use the oldest or first free entry (either pointed to by the - "oldest" variable). */ - entries[oldest].time = 0; - uip_ipaddr_copy(entries[oldest].ipaddr, ipaddr); - memcpy(&entries[oldest].addr, addr, sizeof(struct uip_neighbor_addr)); -} -/*---------------------------------------------------------------------------*/ -static struct neighbor_entry * -find_entry(uip_ipaddr_t ipaddr) -{ - int i; - - for(i = 0; i < ENTRIES; ++i) { - if(uip_ipaddr_cmp(entries[i].ipaddr, ipaddr)) { - return &entries[i]; - } - } - return NULL; -} -/*---------------------------------------------------------------------------*/ -void -uip_neighbor_update(uip_ipaddr_t ipaddr) -{ - struct neighbor_entry *e; - - e = find_entry(ipaddr); - if(e != NULL) { - e->time = 0; - } -} -/*---------------------------------------------------------------------------*/ -struct uip_neighbor_addr * -uip_neighbor_lookup(uip_ipaddr_t ipaddr) -{ - struct neighbor_entry *e; - - e = find_entry(ipaddr); - if(e != NULL) { - /* printf("Lookup neighbor with link address %02x:%02x:%02x:%02x:%02x:%02x\n", - e->addr.addr.addr[0], e->addr.addr.addr[1], e->addr.addr.addr[2], e->addr.addr.addr[3], - e->addr.addr.addr[4], e->addr.addr.addr[5]);*/ - - return &e->addr; - } - return NULL; -} -/*---------------------------------------------------------------------------*/ diff --git a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/uip-neighbor.h b/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/uip-neighbor.h deleted file mode 100644 index aca096f2c..000000000 --- a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/uip-neighbor.h +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Copyright (c) 2006, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: uip-neighbor.h,v 1.2 2006/06/12 08:00:30 adam Exp $ - */ - -/** - * \file - * Header file for database of link-local neighbors, used by - * IPv6 code and to be used by future ARP code. - * \author - * Adam Dunkels - */ - -#ifndef __UIP_NEIGHBOR_H__ -#define __UIP_NEIGHBOR_H__ - -#include "uip.h" - -struct uip_neighbor_addr { -#if UIP_NEIGHBOR_CONF_ADDRTYPE - UIP_NEIGHBOR_CONF_ADDRTYPE addr; -#else - struct uip_eth_addr addr; -#endif -}; - -void uip_neighbor_init(void); -void uip_neighbor_add(uip_ipaddr_t ipaddr, struct uip_neighbor_addr *addr); -void uip_neighbor_update(uip_ipaddr_t ipaddr); -struct uip_neighbor_addr *uip_neighbor_lookup(uip_ipaddr_t ipaddr); -void uip_neighbor_periodic(void); - -#endif /* __UIP-NEIGHBOR_H__ */ diff --git a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/uip-split.c b/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/uip-split.c deleted file mode 100644 index 639b9fcd5..000000000 --- a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/uip-split.c +++ /dev/null @@ -1,136 +0,0 @@ -/* - * Copyright (c) 2004, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * Author: Adam Dunkels - * - * $Id: uip-split.c,v 1.2 2006/06/12 08:00:30 adam Exp $ - */ - -#include - -#include "uip-split.h" -#include "uip.h" -#include "uip-fw.h" -#include "uip_arch.h" - - - -#define BUF ((struct uip_tcpip_hdr *)&uip_buf[UIP_LLH_LEN]) - -/*-----------------------------------------------------------------------------*/ -void -uip_split_output(void) -{ - u16_t tcplen, len1, len2; - - /* We only try to split maximum sized TCP segments. */ - if(BUF->proto == UIP_PROTO_TCP && - uip_len == UIP_BUFSIZE - UIP_LLH_LEN) { - - tcplen = uip_len - UIP_TCPIP_HLEN; - /* Split the segment in two. If the original packet length was - odd, we make the second packet one byte larger. */ - len1 = len2 = tcplen / 2; - if(len1 + len2 < tcplen) { - ++len2; - } - - /* Create the first packet. This is done by altering the length - field of the IP header and updating the checksums. */ - uip_len = len1 + UIP_TCPIP_HLEN; -#if UIP_CONF_IPV6 - /* For IPv6, the IP length field does not include the IPv6 IP header - length. */ - BUF->len[0] = ((uip_len - UIP_IPH_LEN) >> 8); - BUF->len[1] = ((uip_len - UIP_IPH_LEN) & 0xff); -#else /* UIP_CONF_IPV6 */ - BUF->len[0] = uip_len >> 8; - BUF->len[1] = uip_len & 0xff; -#endif /* UIP_CONF_IPV6 */ - - /* Recalculate the TCP checksum. */ - BUF->tcpchksum = 0; - BUF->tcpchksum = ~(uip_tcpchksum()); - -#if !UIP_CONF_IPV6 - /* Recalculate the IP checksum. */ - BUF->ipchksum = 0; - BUF->ipchksum = ~(uip_ipchksum()); -#endif /* UIP_CONF_IPV6 */ - - /* Transmit the first packet. */ - /* uip_fw_output();*/ - tcpip_output(); - - /* Now, create the second packet. To do this, it is not enough to - just alter the length field, but we must also update the TCP - sequence number and point the uip_appdata to a new place in - memory. This place is detemined by the length of the first - packet (len1). */ - uip_len = len2 + UIP_TCPIP_HLEN; -#if UIP_CONF_IPV6 - /* For IPv6, the IP length field does not include the IPv6 IP header - length. */ - BUF->len[0] = ((uip_len - UIP_IPH_LEN) >> 8); - BUF->len[1] = ((uip_len - UIP_IPH_LEN) & 0xff); -#else /* UIP_CONF_IPV6 */ - BUF->len[0] = uip_len >> 8; - BUF->len[1] = uip_len & 0xff; -#endif /* UIP_CONF_IPV6 */ - - /* uip_appdata += len1;*/ - memcpy(uip_appdata, (u8_t *)uip_appdata + len1, len2); - - uip_add32(BUF->seqno, len1); - BUF->seqno[0] = uip_acc32[0]; - BUF->seqno[1] = uip_acc32[1]; - BUF->seqno[2] = uip_acc32[2]; - BUF->seqno[3] = uip_acc32[3]; - - /* Recalculate the TCP checksum. */ - BUF->tcpchksum = 0; - BUF->tcpchksum = ~(uip_tcpchksum()); - -#if !UIP_CONF_IPV6 - /* Recalculate the IP checksum. */ - BUF->ipchksum = 0; - BUF->ipchksum = ~(uip_ipchksum()); -#endif /* UIP_CONF_IPV6 */ - - /* Transmit the second packet. */ - /* uip_fw_output();*/ - tcpip_output(); - } else { - /* uip_fw_output();*/ - tcpip_output(); - } - -} -/*-----------------------------------------------------------------------------*/ diff --git a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/uip-split.h b/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/uip-split.h deleted file mode 100644 index 446e19200..000000000 --- a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/uip-split.h +++ /dev/null @@ -1,96 +0,0 @@ -/* - * Copyright (c) 2004, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * Author: Adam Dunkels - * - * $Id: uip-split.h,v 1.2 2006/06/12 08:00:30 adam Exp $ - */ -/** - * \addtogroup uip - * @{ - */ - -/** - * \defgroup uipsplit uIP TCP throughput booster hack - * @{ - * - * The basic uIP TCP implementation only allows each TCP connection to - * have a single TCP segment in flight at any given time. Because of - * the delayed ACK algorithm employed by most TCP receivers, uIP's - * limit on the amount of in-flight TCP segments seriously reduces the - * maximum achievable throughput for sending data from uIP. - * - * The uip-split module is a hack which tries to remedy this - * situation. By splitting maximum sized outgoing TCP segments into - * two, the delayed ACK algorithm is not invoked at TCP - * receivers. This improves the throughput when sending data from uIP - * by orders of magnitude. - * - * The uip-split module uses the uip-fw module (uIP IP packet - * forwarding) for sending packets. Therefore, the uip-fw module must - * be set up with the appropriate network interfaces for this module - * to work. - */ - - -/** - * \file - * Module for splitting outbound TCP segments in two to avoid the - * delayed ACK throughput degradation. - * \author - * Adam Dunkels - * - */ - -#ifndef __UIP_SPLIT_H__ -#define __UIP_SPLIT_H__ - -/** - * Handle outgoing packets. - * - * This function inspects an outgoing packet in the uip_buf buffer and - * sends it out using the uip_fw_output() function. If the packet is a - * full-sized TCP segment it will be split into two segments and - * transmitted separately. This function should be called instead of - * the actual device driver output function, or the uip_fw_output() - * function. - * - * The headers of the outgoing packet is assumed to be in the uip_buf - * buffer and the payload is assumed to be wherever uip_appdata - * points. The length of the outgoing packet is assumed to be in the - * uip_len variable. - * - */ -void uip_split_output(void); - -#endif /* __UIP_SPLIT_H__ */ - -/** @} */ -/** @} */ diff --git a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/uip.c b/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/uip.c deleted file mode 100644 index bac2527c1..000000000 --- a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/uip.c +++ /dev/null @@ -1,1908 +0,0 @@ -#define DEBUG_PRINTF(...) /*printf(__VA_ARGS__)*/ - -/** - * \defgroup uip The uIP TCP/IP stack - * @{ - * - * uIP is an implementation of the TCP/IP protocol stack intended for - * small 8-bit and 16-bit microcontrollers. - * - * uIP provides the necessary protocols for Internet communication, - * with a very small code footprint and RAM requirements - the uIP - * code size is on the order of a few kilobytes and RAM usage is on - * the order of a few hundred bytes. - */ - -/** - * \file - * The uIP TCP/IP stack code. - * \author Adam Dunkels - */ - -/* - * Copyright (c) 2001-2003, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: uip.c,v 1.65 2006/06/11 21:46:39 adam Exp $ - * - */ - -/* - * uIP is a small implementation of the IP, UDP and TCP protocols (as - * well as some basic ICMP stuff). The implementation couples the IP, - * UDP, TCP and the application layers very tightly. To keep the size - * of the compiled code down, this code frequently uses the goto - * statement. While it would be possible to break the uip_process() - * function into many smaller functions, this would increase the code - * size because of the overhead of parameter passing and the fact that - * the optimier would not be as efficient. - * - * The principle is that we have a small buffer, called the uip_buf, - * in which the device driver puts an incoming packet. The TCP/IP - * stack parses the headers in the packet, and calls the - * application. If the remote host has sent data to the application, - * this data is present in the uip_buf and the application read the - * data from there. It is up to the application to put this data into - * a byte stream if needed. The application will not be fed with data - * that is out of sequence. - * - * If the application whishes to send data to the peer, it should put - * its data into the uip_buf. The uip_appdata pointer points to the - * first available byte. The TCP/IP stack will calculate the - * checksums, and fill in the necessary header fields and finally send - * the packet back to the peer. -*/ - -#include "uip.h" -#include "uipopt.h" -#include "uip_arch.h" - -#if UIP_CONF_IPV6 -#include "uip-neighbor.h" -#endif /* UIP_CONF_IPV6 */ - -#include - -/*---------------------------------------------------------------------------*/ -/* Variable definitions. */ - - -/* The IP address of this host. If it is defined to be fixed (by - setting UIP_FIXEDADDR to 1 in uipopt.h), the address is set - here. Otherwise, the address */ -#if UIP_FIXEDADDR > 0 -const uip_ipaddr_t uip_hostaddr = - {HTONS((UIP_IPADDR0 << 8) | UIP_IPADDR1), - HTONS((UIP_IPADDR2 << 8) | UIP_IPADDR3)}; -const uip_ipaddr_t uip_draddr = - {HTONS((UIP_DRIPADDR0 << 8) | UIP_DRIPADDR1), - HTONS((UIP_DRIPADDR2 << 8) | UIP_DRIPADDR3)}; -const uip_ipaddr_t uip_netmask = - {HTONS((UIP_NETMASK0 << 8) | UIP_NETMASK1), - HTONS((UIP_NETMASK2 << 8) | UIP_NETMASK3)}; -#else -uip_ipaddr_t uip_hostaddr, uip_draddr, uip_netmask; -#endif /* UIP_FIXEDADDR */ - -static const uip_ipaddr_t all_ones_addr = -#if UIP_CONF_IPV6 - {0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff}; -#else /* UIP_CONF_IPV6 */ - {0xffff,0xffff}; -#endif /* UIP_CONF_IPV6 */ -static const uip_ipaddr_t all_zeroes_addr = -#if UIP_CONF_IPV6 - {0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000}; -#else /* UIP_CONF_IPV6 */ - {0x0000,0x0000}; -#endif /* UIP_CONF_IPV6 */ - -#if UIP_FIXEDETHADDR -const struct uip_eth_addr uip_ethaddr = {{UIP_ETHADDR0, - UIP_ETHADDR1, - UIP_ETHADDR2, - UIP_ETHADDR3, - UIP_ETHADDR4, - UIP_ETHADDR5}}; -#else -struct uip_eth_addr uip_ethaddr = {{0,0,0,0,0,0}}; -#endif - -#ifndef UIP_CONF_EXTERNAL_BUFFER - -#ifdef __ICCARM__ - #pragma data_alignment=4 - u8_t uip_buf[UIP_BUFSIZE + 2]; /* The packet buffer that contains incoming packets. */ -#else - u8_t uip_buf[UIP_BUFSIZE + 2] ALIGN_STRUCT_END; /* The packet buffer that contains incoming packets. */ -#endif - -#endif /* UIP_CONF_EXTERNAL_BUFFER */ - -void *uip_appdata; /* The uip_appdata pointer points to - application data. */ -void *uip_sappdata; /* The uip_appdata pointer points to - the application data which is to - be sent. */ -#if UIP_URGDATA > 0 -void *uip_urgdata; /* The uip_urgdata pointer points to - urgent data (out-of-band data), if - present. */ -u16_t uip_urglen, uip_surglen; -#endif /* UIP_URGDATA > 0 */ - -u16_t uip_len, uip_slen; - /* The uip_len is either 8 or 16 bits, - depending on the maximum packet - size. */ - -u8_t uip_flags; /* The uip_flags variable is used for - communication between the TCP/IP stack - and the application program. */ -struct uip_conn *uip_conn; /* uip_conn always points to the current - connection. */ - -struct uip_conn uip_conns[UIP_CONNS]; - /* The uip_conns array holds all TCP - connections. */ -u16_t uip_listenports[UIP_LISTENPORTS]; - /* The uip_listenports list all currently - listning ports. */ -#if UIP_UDP -struct uip_udp_conn *uip_udp_conn; -struct uip_udp_conn uip_udp_conns[UIP_UDP_CONNS]; -#endif /* UIP_UDP */ - -static u16_t ipid; /* Ths ipid variable is an increasing - number that is used for the IP ID - field. */ - -void uip_setipid(u16_t id) { ipid = id; } - -static u8_t iss[4]; /* The iss variable is used for the TCP - initial sequence number. */ - -#if UIP_ACTIVE_OPEN -static u16_t lastport; /* Keeps track of the last port used for - a new connection. */ -#endif /* UIP_ACTIVE_OPEN */ - -/* Temporary variables. */ -u8_t uip_acc32[4]; -static u8_t c, opt; -static u16_t tmp16; - -/* Structures and definitions. */ -#define TCP_FIN 0x01 -#define TCP_SYN 0x02 -#define TCP_RST 0x04 -#define TCP_PSH 0x08 -#define TCP_ACK 0x10 -#define TCP_URG 0x20 -#define TCP_CTL 0x3f - -#define TCP_OPT_END 0 /* End of TCP options list */ -#define TCP_OPT_NOOP 1 /* "No-operation" TCP option */ -#define TCP_OPT_MSS 2 /* Maximum segment size TCP option */ - -#define TCP_OPT_MSS_LEN 4 /* Length of TCP MSS option. */ - -#define ICMP_ECHO_REPLY 0 -#define ICMP_ECHO 8 - -#define ICMP6_ECHO_REPLY 129 -#define ICMP6_ECHO 128 -#define ICMP6_NEIGHBOR_SOLICITATION 135 -#define ICMP6_NEIGHBOR_ADVERTISEMENT 136 - -#define ICMP6_FLAG_S (1 << 6) - -#define ICMP6_OPTION_SOURCE_LINK_ADDRESS 1 -#define ICMP6_OPTION_TARGET_LINK_ADDRESS 2 - - -/* Macros. */ -#define BUF ((struct uip_tcpip_hdr *)&uip_buf[UIP_LLH_LEN]) -#define FBUF ((struct uip_tcpip_hdr *)&uip_reassbuf[0]) -#define ICMPBUF ((struct uip_icmpip_hdr *)&uip_buf[UIP_LLH_LEN]) -#define UDPBUF ((struct uip_udpip_hdr *)&uip_buf[UIP_LLH_LEN]) - - -#if UIP_STATISTICS == 1 -struct uip_stats uip_stat; -#define UIP_STAT(s) s -#else -#define UIP_STAT(s) -#endif /* UIP_STATISTICS == 1 */ - -#if UIP_LOGGING == 1 -#include -void uip_log(char *msg); -#define UIP_LOG(m) uip_log(m) -#else -#define UIP_LOG(m) -#endif /* UIP_LOGGING == 1 */ - -#if ! UIP_ARCH_ADD32 -void -uip_add32(u8_t *op32, u16_t op16) -{ - uip_acc32[3] = op32[3] + (op16 & 0xff); - uip_acc32[2] = op32[2] + (op16 >> 8); - uip_acc32[1] = op32[1]; - uip_acc32[0] = op32[0]; - - if(uip_acc32[2] < (op16 >> 8)) { - ++uip_acc32[1]; - if(uip_acc32[1] == 0) { - ++uip_acc32[0]; - } - } - - - if(uip_acc32[3] < (op16 & 0xff)) { - ++uip_acc32[2]; - if(uip_acc32[2] == 0) { - ++uip_acc32[1]; - if(uip_acc32[1] == 0) { - ++uip_acc32[0]; - } - } - } -} - -#endif /* UIP_ARCH_ADD32 */ - -#if ! UIP_ARCH_CHKSUM -/*---------------------------------------------------------------------------*/ -static u16_t -chksum(u16_t sum, const u8_t *data, u16_t len) -{ - u16_t t; - const u8_t *dataptr; - const u8_t *last_byte; - - dataptr = data; - last_byte = data + len - 1; - - while(dataptr < last_byte) { /* At least two more bytes */ - t = (dataptr[0] << 8) + dataptr[1]; - sum += t; - if(sum < t) { - sum++; /* carry */ - } - dataptr += 2; - } - - if(dataptr == last_byte) { - t = (dataptr[0] << 8) + 0; - sum += t; - if(sum < t) { - sum++; /* carry */ - } - } - - /* Return sum in host byte order. */ - return sum; -} -/*---------------------------------------------------------------------------*/ -u16_t -uip_chksum(u16_t *data, u16_t len) -{ - return htons(chksum(0, (u8_t *)data, len)); -} -/*---------------------------------------------------------------------------*/ -#ifndef UIP_ARCH_IPCHKSUM -u16_t -uip_ipchksum(void) -{ - u16_t sum; - - sum = chksum(0, &uip_buf[UIP_LLH_LEN], UIP_IPH_LEN); - DEBUG_PRINTF("uip_ipchksum: sum 0x%04x\n", sum); - return (sum == 0) ? 0xffff : htons(sum); -} -#endif -/*---------------------------------------------------------------------------*/ -static u16_t -upper_layer_chksum(u8_t proto) -{ - u16_t upper_layer_len; - u16_t sum; - -#if UIP_CONF_IPV6 - upper_layer_len = (((u16_t)(BUF->len[0]) << 8) + BUF->len[1]); -#else /* UIP_CONF_IPV6 */ - upper_layer_len = (((u16_t)(BUF->len[0]) << 8) + BUF->len[1]) - UIP_IPH_LEN; -#endif /* UIP_CONF_IPV6 */ - - /* First sum pseudoheader. */ - - /* IP protocol and length fields. This addition cannot carry. */ - sum = upper_layer_len + proto; - /* Sum IP source and destination addresses. */ - sum = chksum(sum, (u8_t *)&BUF->srcipaddr[0], 2 * sizeof(uip_ipaddr_t)); - - /* Sum TCP header and data. */ - sum = chksum(sum, &uip_buf[UIP_IPH_LEN + UIP_LLH_LEN], - upper_layer_len); - - return (sum == 0) ? 0xffff : htons(sum); -} -/*---------------------------------------------------------------------------*/ -#if UIP_CONF_IPV6 -u16_t -uip_icmp6chksum(void) -{ - return upper_layer_chksum(UIP_PROTO_ICMP6); - -} -#endif /* UIP_CONF_IPV6 */ -/*---------------------------------------------------------------------------*/ -u16_t -uip_tcpchksum(void) -{ - return upper_layer_chksum(UIP_PROTO_TCP); -} -/*---------------------------------------------------------------------------*/ -#if UIP_UDP_CHECKSUMS -u16_t -uip_udpchksum(void) -{ - return upper_layer_chksum(UIP_PROTO_UDP); -} -#endif /* UIP_UDP_CHECKSUMS */ -#endif /* UIP_ARCH_CHKSUM */ -/*---------------------------------------------------------------------------*/ -void -uip_init(void) -{ - for(c = 0; c < UIP_LISTENPORTS; ++c) { - uip_listenports[c] = 0; - } - for(c = 0; c < UIP_CONNS; ++c) { - uip_conns[c].tcpstateflags = UIP_CLOSED; - } -#if UIP_ACTIVE_OPEN - lastport = 1024; -#endif /* UIP_ACTIVE_OPEN */ - -#if UIP_UDP - for(c = 0; c < UIP_UDP_CONNS; ++c) { - uip_udp_conns[c].lport = 0; - } -#endif /* UIP_UDP */ - - - /* IPv4 initialization. */ -#if UIP_FIXEDADDR == 0 - /* uip_hostaddr[0] = uip_hostaddr[1] = 0;*/ -#endif /* UIP_FIXEDADDR */ - -} -/*---------------------------------------------------------------------------*/ -#if UIP_ACTIVE_OPEN -struct uip_conn * -uip_connect(uip_ipaddr_t *ripaddr, u16_t rport) -{ - register struct uip_conn *conn, *cconn; - - /* Find an unused local port. */ - again: - ++lastport; - - if(lastport >= 32000) { - lastport = 4096; - } - - /* Check if this port is already in use, and if so try to find - another one. */ - for(c = 0; c < UIP_CONNS; ++c) { - conn = &uip_conns[c]; - if(conn->tcpstateflags != UIP_CLOSED && - conn->lport == htons(lastport)) { - goto again; - } - } - - conn = 0; - for(c = 0; c < UIP_CONNS; ++c) { - cconn = &uip_conns[c]; - if(cconn->tcpstateflags == UIP_CLOSED) { - conn = cconn; - break; - } - if(cconn->tcpstateflags == UIP_TIME_WAIT) { - if(conn == 0 || - cconn->timer > conn->timer) { - conn = cconn; - } - } - } - - if(conn == 0) { - return 0; - } - - conn->tcpstateflags = UIP_SYN_SENT; - - conn->snd_nxt[0] = iss[0]; - conn->snd_nxt[1] = iss[1]; - conn->snd_nxt[2] = iss[2]; - conn->snd_nxt[3] = iss[3]; - - conn->initialmss = conn->mss = UIP_TCP_MSS; - - conn->len = 1; /* TCP length of the SYN is one. */ - conn->nrtx = 0; - conn->timer = 1; /* Send the SYN next time around. */ - conn->rto = UIP_RTO; - conn->sa = 0; - conn->sv = 16; /* Initial value of the RTT variance. */ - conn->lport = htons(lastport); - conn->rport = rport; - uip_ipaddr_copy(&conn->ripaddr, ripaddr); - - return conn; -} -#endif /* UIP_ACTIVE_OPEN */ -/*---------------------------------------------------------------------------*/ -#if UIP_UDP -struct uip_udp_conn * -uip_udp_new(uip_ipaddr_t *ripaddr, u16_t rport) -{ - register struct uip_udp_conn *conn; - - /* Find an unused local port. */ - again: - ++lastport; - - if(lastport >= 32000) { - lastport = 4096; - } - - for(c = 0; c < UIP_UDP_CONNS; ++c) { - if(uip_udp_conns[c].lport == htons(lastport)) { - goto again; - } - } - - - conn = 0; - for(c = 0; c < UIP_UDP_CONNS; ++c) { - if(uip_udp_conns[c].lport == 0) { - conn = &uip_udp_conns[c]; - break; - } - } - - if(conn == 0) { - return 0; - } - - conn->lport = HTONS(lastport); - conn->rport = rport; - if(ripaddr == NULL) { - memset(conn->ripaddr, 0, sizeof(uip_ipaddr_t)); - } else { - uip_ipaddr_copy(&conn->ripaddr, ripaddr); - } - conn->ttl = UIP_TTL; - - return conn; -} -#endif /* UIP_UDP */ -/*---------------------------------------------------------------------------*/ -void -uip_unlisten(u16_t port) -{ - for(c = 0; c < UIP_LISTENPORTS; ++c) { - if(uip_listenports[c] == port) { - uip_listenports[c] = 0; - return; - } - } -} -/*---------------------------------------------------------------------------*/ -void -uip_listen(u16_t port) -{ - for(c = 0; c < UIP_LISTENPORTS; ++c) { - if(uip_listenports[c] == 0) { - uip_listenports[c] = port; - return; - } - } -} -/*---------------------------------------------------------------------------*/ -/* XXX: IP fragment reassembly: not well-tested. */ - -#if UIP_REASSEMBLY && !UIP_CONF_IPV6 -#define UIP_REASS_BUFSIZE (UIP_BUFSIZE - UIP_LLH_LEN) -static u8_t uip_reassbuf[UIP_REASS_BUFSIZE]; -static u8_t uip_reassbitmap[UIP_REASS_BUFSIZE / (8 * 8)]; -static const u8_t bitmap_bits[8] = {0xff, 0x7f, 0x3f, 0x1f, - 0x0f, 0x07, 0x03, 0x01}; -static u16_t uip_reasslen; -static u8_t uip_reassflags; -#define UIP_REASS_FLAG_LASTFRAG 0x01 -static u8_t uip_reasstmr; - -#define IP_MF 0x20 - -static u8_t -uip_reass(void) -{ - u16_t offset, len; - u16_t i; - - /* If ip_reasstmr is zero, no packet is present in the buffer, so we - write the IP header of the fragment into the reassembly - buffer. The timer is updated with the maximum age. */ - if(uip_reasstmr == 0) { - memcpy(uip_reassbuf, &BUF->vhl, UIP_IPH_LEN); - uip_reasstmr = UIP_REASS_MAXAGE; - uip_reassflags = 0; - /* Clear the bitmap. */ - memset(uip_reassbitmap, 0, sizeof(uip_reassbitmap)); - } - - /* Check if the incoming fragment matches the one currently present - in the reasembly buffer. If so, we proceed with copying the - fragment into the buffer. */ - if(BUF->srcipaddr[0] == FBUF->srcipaddr[0] && - BUF->srcipaddr[1] == FBUF->srcipaddr[1] && - BUF->destipaddr[0] == FBUF->destipaddr[0] && - BUF->destipaddr[1] == FBUF->destipaddr[1] && - BUF->ipid[0] == FBUF->ipid[0] && - BUF->ipid[1] == FBUF->ipid[1]) { - - len = (BUF->len[0] << 8) + BUF->len[1] - (BUF->vhl & 0x0f) * 4; - offset = (((BUF->ipoffset[0] & 0x3f) << 8) + BUF->ipoffset[1]) * 8; - - /* If the offset or the offset + fragment length overflows the - reassembly buffer, we discard the entire packet. */ - if(offset > UIP_REASS_BUFSIZE || - offset + len > UIP_REASS_BUFSIZE) { - uip_reasstmr = 0; - goto nullreturn; - } - - /* Copy the fragment into the reassembly buffer, at the right - offset. */ - memcpy(&uip_reassbuf[UIP_IPH_LEN + offset], - (char *)BUF + (int)((BUF->vhl & 0x0f) * 4), - len); - - /* Update the bitmap. */ - if(offset / (8 * 8) == (offset + len) / (8 * 8)) { - /* If the two endpoints are in the same byte, we only update - that byte. */ - - uip_reassbitmap[offset / (8 * 8)] |= - bitmap_bits[(offset / 8 ) & 7] & - ~bitmap_bits[((offset + len) / 8 ) & 7]; - } else { - /* If the two endpoints are in different bytes, we update the - bytes in the endpoints and fill the stuff inbetween with - 0xff. */ - uip_reassbitmap[offset / (8 * 8)] |= - bitmap_bits[(offset / 8 ) & 7]; - for(i = 1 + offset / (8 * 8); i < (offset + len) / (8 * 8); ++i) { - uip_reassbitmap[i] = 0xff; - } - uip_reassbitmap[(offset + len) / (8 * 8)] |= - ~bitmap_bits[((offset + len) / 8 ) & 7]; - } - - /* If this fragment has the More Fragments flag set to zero, we - know that this is the last fragment, so we can calculate the - size of the entire packet. We also set the - IP_REASS_FLAG_LASTFRAG flag to indicate that we have received - the final fragment. */ - - if((BUF->ipoffset[0] & IP_MF) == 0) { - uip_reassflags |= UIP_REASS_FLAG_LASTFRAG; - uip_reasslen = offset + len; - } - - /* Finally, we check if we have a full packet in the buffer. We do - this by checking if we have the last fragment and if all bits - in the bitmap are set. */ - if(uip_reassflags & UIP_REASS_FLAG_LASTFRAG) { - /* Check all bytes up to and including all but the last byte in - the bitmap. */ - for(i = 0; i < uip_reasslen / (8 * 8) - 1; ++i) { - if(uip_reassbitmap[i] != 0xff) { - goto nullreturn; - } - } - /* Check the last byte in the bitmap. It should contain just the - right amount of bits. */ - if(uip_reassbitmap[uip_reasslen / (8 * 8)] != - (u8_t)~bitmap_bits[uip_reasslen / 8 & 7]) { - goto nullreturn; - } - - /* If we have come this far, we have a full packet in the - buffer, so we allocate a pbuf and copy the packet into it. We - also reset the timer. */ - uip_reasstmr = 0; - memcpy(BUF, FBUF, uip_reasslen); - - /* Pretend to be a "normal" (i.e., not fragmented) IP packet - from now on. */ - BUF->ipoffset[0] = BUF->ipoffset[1] = 0; - BUF->len[0] = uip_reasslen >> 8; - BUF->len[1] = uip_reasslen & 0xff; - BUF->ipchksum = 0; - BUF->ipchksum = ~(uip_ipchksum()); - - return uip_reasslen; - } - } - - nullreturn: - return 0; -} -#endif /* UIP_REASSEMBLY */ -/*---------------------------------------------------------------------------*/ -static void -uip_add_rcv_nxt(u16_t n) -{ - uip_add32(uip_conn->rcv_nxt, n); - uip_conn->rcv_nxt[0] = uip_acc32[0]; - uip_conn->rcv_nxt[1] = uip_acc32[1]; - uip_conn->rcv_nxt[2] = uip_acc32[2]; - uip_conn->rcv_nxt[3] = uip_acc32[3]; -} -/*---------------------------------------------------------------------------*/ -void -uip_process(u8_t flag) -{ - register struct uip_conn *uip_connr = uip_conn; - - ( void ) all_ones_addr; - -#if UIP_UDP - if(flag == UIP_UDP_SEND_CONN) { - goto udp_send; - } -#endif /* UIP_UDP */ - - uip_sappdata = uip_appdata = &uip_buf[UIP_IPTCPH_LEN + UIP_LLH_LEN]; - - /* Check if we were invoked because of a poll request for a - particular connection. */ - if(flag == UIP_POLL_REQUEST) { - if((uip_connr->tcpstateflags & UIP_TS_MASK) == UIP_ESTABLISHED && - !uip_outstanding(uip_connr)) { - uip_flags = UIP_POLL; - UIP_APPCALL(); - goto appsend; - } - goto drop; - - /* Check if we were invoked because of the perodic timer fireing. */ - } else if(flag == UIP_TIMER) { -#if UIP_REASSEMBLY - if(uip_reasstmr != 0) { - --uip_reasstmr; - } -#endif /* UIP_REASSEMBLY */ - /* Increase the initial sequence number. */ - if(++iss[3] == 0) { - if(++iss[2] == 0) { - if(++iss[1] == 0) { - ++iss[0]; - } - } - } - - /* Reset the length variables. */ - uip_len = 0; - uip_slen = 0; - - /* Check if the connection is in a state in which we simply wait - for the connection to time out. If so, we increase the - connection's timer and remove the connection if it times - out. */ - if(uip_connr->tcpstateflags == UIP_TIME_WAIT || - uip_connr->tcpstateflags == UIP_FIN_WAIT_2) { - ++(uip_connr->timer); - if(uip_connr->timer == UIP_TIME_WAIT_TIMEOUT) { - uip_connr->tcpstateflags = UIP_CLOSED; - } - } else if(uip_connr->tcpstateflags != UIP_CLOSED) { - /* If the connection has outstanding data, we increase the - connection's timer and see if it has reached the RTO value - in which case we retransmit. */ - if(uip_outstanding(uip_connr)) { - uip_connr->timer = uip_connr->timer - 1; - if(uip_connr->timer == 0) { - if(uip_connr->nrtx == UIP_MAXRTX || - ((uip_connr->tcpstateflags == UIP_SYN_SENT || - uip_connr->tcpstateflags == UIP_SYN_RCVD) && - uip_connr->nrtx == UIP_MAXSYNRTX)) { - uip_connr->tcpstateflags = UIP_CLOSED; - - /* We call UIP_APPCALL() with uip_flags set to - UIP_TIMEDOUT to inform the application that the - connection has timed out. */ - uip_flags = UIP_TIMEDOUT; - UIP_APPCALL(); - - /* We also send a reset packet to the remote host. */ - BUF->flags = TCP_RST | TCP_ACK; - goto tcp_send_nodata; - } - - /* Exponential backoff. */ - uip_connr->timer = UIP_RTO << (uip_connr->nrtx > 4? - 4: - uip_connr->nrtx); - ++(uip_connr->nrtx); - - /* Ok, so we need to retransmit. We do this differently - depending on which state we are in. In ESTABLISHED, we - call upon the application so that it may prepare the - data for the retransmit. In SYN_RCVD, we resend the - SYNACK that we sent earlier and in LAST_ACK we have to - retransmit our FINACK. */ - UIP_STAT(++uip_stat.tcp.rexmit); - switch(uip_connr->tcpstateflags & UIP_TS_MASK) { - case UIP_SYN_RCVD: - /* In the SYN_RCVD state, we should retransmit our - SYNACK. */ - goto tcp_send_synack; - -#if UIP_ACTIVE_OPEN - case UIP_SYN_SENT: - /* In the SYN_SENT state, we retransmit out SYN. */ - BUF->flags = 0; - goto tcp_send_syn; -#endif /* UIP_ACTIVE_OPEN */ - - case UIP_ESTABLISHED: - /* In the ESTABLISHED state, we call upon the application - to do the actual retransmit after which we jump into - the code for sending out the packet (the apprexmit - label). */ - uip_flags = UIP_REXMIT; - UIP_APPCALL(); - goto apprexmit; - - case UIP_FIN_WAIT_1: - case UIP_CLOSING: - case UIP_LAST_ACK: - /* In all these states we should retransmit a FINACK. */ - goto tcp_send_finack; - - } - } - } else if((uip_connr->tcpstateflags & UIP_TS_MASK) == UIP_ESTABLISHED) { - /* If there was no need for a retransmission, we poll the - application for new data. */ - uip_flags = UIP_POLL; - UIP_APPCALL(); - goto appsend; - } - } - goto drop; - } -#if UIP_UDP - if(flag == UIP_UDP_TIMER) { - if(uip_udp_conn->lport != 0) { - uip_conn = NULL; - uip_sappdata = uip_appdata = &uip_buf[UIP_LLH_LEN + UIP_IPUDPH_LEN]; - uip_len = uip_slen = 0; - uip_flags = UIP_POLL; - UIP_UDP_APPCALL(); - goto udp_send; - } else { - goto drop; - } - } -#endif - - /* This is where the input processing starts. */ - UIP_STAT(++uip_stat.ip.recv); - - /* Start of IP input header processing code. */ - -#if UIP_CONF_IPV6 - /* Check validity of the IP header. */ - if((BUF->vtc & 0xf0) != 0x60) { /* IP version and header length. */ - UIP_STAT(++uip_stat.ip.drop); - UIP_STAT(++uip_stat.ip.vhlerr); - UIP_LOG("ipv6: invalid version."); - goto drop; - } -#else /* UIP_CONF_IPV6 */ - /* Check validity of the IP header. */ - if(BUF->vhl != 0x45) { /* IP version and header length. */ - UIP_STAT(++uip_stat.ip.drop); - UIP_STAT(++uip_stat.ip.vhlerr); - UIP_LOG("ip: invalid version or header length."); - goto drop; - } -#endif /* UIP_CONF_IPV6 */ - - /* Check the size of the packet. If the size reported to us in - uip_len is smaller the size reported in the IP header, we assume - that the packet has been corrupted in transit. If the size of - uip_len is larger than the size reported in the IP packet header, - the packet has been padded and we set uip_len to the correct - value.. */ - - if((BUF->len[0] << 8) + BUF->len[1] <= uip_len) { - uip_len = (BUF->len[0] << 8) + BUF->len[1]; -#if UIP_CONF_IPV6 - uip_len += 40; /* The length reported in the IPv6 header is the - length of the payload that follows the - header. However, uIP uses the uip_len variable - for holding the size of the entire packet, - including the IP header. For IPv4 this is not a - problem as the length field in the IPv4 header - contains the length of the entire packet. But - for IPv6 we need to add the size of the IPv6 - header (40 bytes). */ -#endif /* UIP_CONF_IPV6 */ - } else { - UIP_LOG("ip: packet shorter than reported in IP header."); - goto drop; - } - -#if !UIP_CONF_IPV6 - /* Check the fragment flag. */ - if((BUF->ipoffset[0] & 0x3f) != 0 || - BUF->ipoffset[1] != 0) { -#if UIP_REASSEMBLY - uip_len = uip_reass(); - if(uip_len == 0) { - goto drop; - } -#else /* UIP_REASSEMBLY */ - UIP_STAT(++uip_stat.ip.drop); - UIP_STAT(++uip_stat.ip.fragerr); - UIP_LOG("ip: fragment dropped."); - goto drop; -#endif /* UIP_REASSEMBLY */ - } -#endif /* UIP_CONF_IPV6 */ - - if(uip_ipaddr_cmp(uip_hostaddr, all_zeroes_addr)) { - /* If we are configured to use ping IP address configuration and - hasn't been assigned an IP address yet, we accept all ICMP - packets. */ -#if UIP_PINGADDRCONF && !UIP_CONF_IPV6 - if(BUF->proto == UIP_PROTO_ICMP) { - UIP_LOG("ip: possible ping config packet received."); - goto icmp_input; - } else { - UIP_LOG("ip: packet dropped since no address assigned."); - goto drop; - } -#endif /* UIP_PINGADDRCONF */ - - } else { - /* If IP broadcast support is configured, we check for a broadcast - UDP packet, which may be destined to us. */ -#if UIP_BROADCAST - DEBUG_PRINTF("UDP IP checksum 0x%04x\n", uip_ipchksum()); - if(BUF->proto == UIP_PROTO_UDP && - uip_ipaddr_cmp(BUF->destipaddr, all_ones_addr) - /*&& - uip_ipchksum() == 0xffff*/) { - goto udp_input; - } -#endif /* UIP_BROADCAST */ - - /* Check if the packet is destined for our IP address. */ -#if !UIP_CONF_IPV6 - if(!uip_ipaddr_cmp(BUF->destipaddr, uip_hostaddr)) { - UIP_STAT(++uip_stat.ip.drop); - goto drop; - } -#else /* UIP_CONF_IPV6 */ - /* For IPv6, packet reception is a little trickier as we need to - make sure that we listen to certain multicast addresses (all - hosts multicast address, and the solicited-node multicast - address) as well. However, we will cheat here and accept all - multicast packets that are sent to the ff02::/16 addresses. */ - if(!uip_ipaddr_cmp(BUF->destipaddr, uip_hostaddr) && - BUF->destipaddr[0] != HTONS(0xff02)) { - UIP_STAT(++uip_stat.ip.drop); - goto drop; - } -#endif /* UIP_CONF_IPV6 */ - } - -#if !UIP_CONF_IPV6 - if(uip_ipchksum() != 0xffff) { /* Compute and check the IP header - checksum. */ - UIP_STAT(++uip_stat.ip.drop); - UIP_STAT(++uip_stat.ip.chkerr); - UIP_LOG("ip: bad checksum."); - goto drop; - } -#endif /* UIP_CONF_IPV6 */ - - if(BUF->proto == UIP_PROTO_TCP) { /* Check for TCP packet. If so, - proceed with TCP input - processing. */ - goto tcp_input; - } - -#if UIP_UDP - if(BUF->proto == UIP_PROTO_UDP) { - goto udp_input; - } -#endif /* UIP_UDP */ - -#if !UIP_CONF_IPV6 - /* ICMPv4 processing code follows. */ - if(BUF->proto != UIP_PROTO_ICMP) { /* We only allow ICMP packets from - here. */ - UIP_STAT(++uip_stat.ip.drop); - UIP_STAT(++uip_stat.ip.protoerr); - UIP_LOG("ip: neither tcp nor icmp."); - goto drop; - } - -#if UIP_PINGADDRCONF - icmp_input: -#endif /* UIP_PINGADDRCONF */ - UIP_STAT(++uip_stat.icmp.recv); - - /* ICMP echo (i.e., ping) processing. This is simple, we only change - the ICMP type from ECHO to ECHO_REPLY and adjust the ICMP - checksum before we return the packet. */ - if(ICMPBUF->type != ICMP_ECHO) { - UIP_STAT(++uip_stat.icmp.drop); - UIP_STAT(++uip_stat.icmp.typeerr); - UIP_LOG("icmp: not icmp echo."); - goto drop; - } - - /* If we are configured to use ping IP address assignment, we use - the destination IP address of this ping packet and assign it to - ourself. */ -#if UIP_PINGADDRCONF - if((uip_hostaddr[0] | uip_hostaddr[1]) == 0) { - uip_hostaddr[0] = BUF->destipaddr[0]; - uip_hostaddr[1] = BUF->destipaddr[1]; - } -#endif /* UIP_PINGADDRCONF */ - - ICMPBUF->type = ICMP_ECHO_REPLY; - - if(ICMPBUF->icmpchksum >= HTONS(0xffff - (ICMP_ECHO << 8))) { - ICMPBUF->icmpchksum += HTONS(ICMP_ECHO << 8) + 1; - } else { - ICMPBUF->icmpchksum += HTONS(ICMP_ECHO << 8); - } - - /* Swap IP addresses. */ - uip_ipaddr_copy(BUF->destipaddr, BUF->srcipaddr); - uip_ipaddr_copy(BUF->srcipaddr, uip_hostaddr); - - UIP_STAT(++uip_stat.icmp.sent); - goto send; - - /* End of IPv4 input header processing code. */ -#else /* !UIP_CONF_IPV6 */ - - /* This is IPv6 ICMPv6 processing code. */ - DEBUG_PRINTF("icmp6_input: length %d\n", uip_len); - - if(BUF->proto != UIP_PROTO_ICMP6) { /* We only allow ICMPv6 packets from - here. */ - UIP_STAT(++uip_stat.ip.drop); - UIP_STAT(++uip_stat.ip.protoerr); - UIP_LOG("ip: neither tcp nor icmp6."); - goto drop; - } - - UIP_STAT(++uip_stat.icmp.recv); - - /* If we get a neighbor solicitation for our address we should send - a neighbor advertisement message back. */ - if(ICMPBUF->type == ICMP6_NEIGHBOR_SOLICITATION) { - if(uip_ipaddr_cmp(ICMPBUF->icmp6data, uip_hostaddr)) { - - if(ICMPBUF->options[0] == ICMP6_OPTION_SOURCE_LINK_ADDRESS) { - /* Save the sender's address in our neighbor list. */ - uip_neighbor_add(ICMPBUF->srcipaddr, &(ICMPBUF->options[2])); - } - - /* We should now send a neighbor advertisement back to where the - neighbor solicication came from. */ - ICMPBUF->type = ICMP6_NEIGHBOR_ADVERTISEMENT; - ICMPBUF->flags = ICMP6_FLAG_S; /* Solicited flag. */ - - ICMPBUF->reserved1 = ICMPBUF->reserved2 = ICMPBUF->reserved3 = 0; - - uip_ipaddr_copy(ICMPBUF->destipaddr, ICMPBUF->srcipaddr); - uip_ipaddr_copy(ICMPBUF->srcipaddr, uip_hostaddr); - ICMPBUF->options[0] = ICMP6_OPTION_TARGET_LINK_ADDRESS; - ICMPBUF->options[1] = 1; /* Options length, 1 = 8 bytes. */ - memcpy(&(ICMPBUF->options[2]), &uip_ethaddr, sizeof(uip_ethaddr)); - ICMPBUF->icmpchksum = 0; - ICMPBUF->icmpchksum = ~uip_icmp6chksum(); - goto send; - - } - goto drop; - } else if(ICMPBUF->type == ICMP6_ECHO) { - /* ICMP echo (i.e., ping) processing. This is simple, we only - change the ICMP type from ECHO to ECHO_REPLY and update the - ICMP checksum before we return the packet. */ - - ICMPBUF->type = ICMP6_ECHO_REPLY; - - uip_ipaddr_copy(BUF->destipaddr, BUF->srcipaddr); - uip_ipaddr_copy(BUF->srcipaddr, uip_hostaddr); - ICMPBUF->icmpchksum = 0; - ICMPBUF->icmpchksum = ~uip_icmp6chksum(); - - UIP_STAT(++uip_stat.icmp.sent); - goto send; - } else { - DEBUG_PRINTF("Unknown icmp6 message type %d\n", ICMPBUF->type); - UIP_STAT(++uip_stat.icmp.drop); - UIP_STAT(++uip_stat.icmp.typeerr); - UIP_LOG("icmp: unknown ICMP message."); - goto drop; - } - - /* End of IPv6 ICMP processing. */ - -#endif /* !UIP_CONF_IPV6 */ - -#if UIP_UDP - /* UDP input processing. */ - udp_input: - /* UDP processing is really just a hack. We don't do anything to the - UDP/IP headers, but let the UDP application do all the hard - work. If the application sets uip_slen, it has a packet to - send. */ -#if UIP_UDP_CHECKSUMS - uip_len = uip_len - UIP_IPUDPH_LEN; - uip_appdata = &uip_buf[UIP_LLH_LEN + UIP_IPUDPH_LEN]; - if(UDPBUF->udpchksum != 0 && uip_udpchksum() != 0xffff) { - UIP_STAT(++uip_stat.udp.drop); - UIP_STAT(++uip_stat.udp.chkerr); - UIP_LOG("udp: bad checksum."); - goto drop; - } -#else /* UIP_UDP_CHECKSUMS */ - uip_len = uip_len - UIP_IPUDPH_LEN; -#endif /* UIP_UDP_CHECKSUMS */ - - /* Demultiplex this UDP packet between the UDP "connections". */ - for(uip_udp_conn = &uip_udp_conns[0]; - uip_udp_conn < &uip_udp_conns[UIP_UDP_CONNS]; - ++uip_udp_conn) { - /* If the local UDP port is non-zero, the connection is considered - to be used. If so, the local port number is checked against the - destination port number in the received packet. If the two port - numbers match, the remote port number is checked if the - connection is bound to a remote port. Finally, if the - connection is bound to a remote IP address, the source IP - address of the packet is checked. */ - if(uip_udp_conn->lport != 0 && - UDPBUF->destport == uip_udp_conn->lport && - (uip_udp_conn->rport == 0 || - UDPBUF->srcport == uip_udp_conn->rport) && - (uip_ipaddr_cmp(uip_udp_conn->ripaddr, all_zeroes_addr) || - uip_ipaddr_cmp(uip_udp_conn->ripaddr, all_ones_addr) || - uip_ipaddr_cmp(BUF->srcipaddr, uip_udp_conn->ripaddr))) { - goto udp_found; - } - } - UIP_LOG("udp: no matching connection found"); - goto drop; - - udp_found: - UIP_STAT(++uip_stat.udp.recv); - uip_conn = NULL; - uip_flags = UIP_NEWDATA; - uip_sappdata = uip_appdata = &uip_buf[UIP_LLH_LEN + UIP_IPUDPH_LEN]; - uip_slen = 0; - UIP_UDP_APPCALL(); - udp_send: - if(uip_slen == 0) { - goto drop; - } - uip_len = uip_slen + UIP_IPUDPH_LEN; - -#if UIP_CONF_IPV6 - /* For IPv6, the IP length field does not include the IPv6 IP header - length. */ - BUF->len[0] = ((uip_len - UIP_IPH_LEN) >> 8); - BUF->len[1] = ((uip_len - UIP_IPH_LEN) & 0xff); -#else /* UIP_CONF_IPV6 */ - BUF->len[0] = (uip_len >> 8); - BUF->len[1] = (uip_len & 0xff); -#endif /* UIP_CONF_IPV6 */ - - BUF->ttl = uip_udp_conn->ttl; - BUF->proto = UIP_PROTO_UDP; - - UDPBUF->udplen = HTONS(uip_slen + UIP_UDPH_LEN); - UDPBUF->udpchksum = 0; - - BUF->srcport = uip_udp_conn->lport; - BUF->destport = uip_udp_conn->rport; - - uip_ipaddr_copy(BUF->srcipaddr, uip_hostaddr); - uip_ipaddr_copy(BUF->destipaddr, uip_udp_conn->ripaddr); - - uip_appdata = &uip_buf[UIP_LLH_LEN + UIP_IPTCPH_LEN]; - -#if UIP_UDP_CHECKSUMS - /* Calculate UDP checksum. */ - UDPBUF->udpchksum = ~(uip_udpchksum()); - if(UDPBUF->udpchksum == 0) { - UDPBUF->udpchksum = 0xffff; - } -#endif /* UIP_UDP_CHECKSUMS */ - UIP_STAT(++uip_stat.udp.sent); - goto ip_send_nolen; -#endif /* UIP_UDP */ - - /* TCP input processing. */ - tcp_input: - UIP_STAT(++uip_stat.tcp.recv); - - /* Start of TCP input header processing code. */ - - if(uip_tcpchksum() != 0xffff) { /* Compute and check the TCP - checksum. */ - UIP_STAT(++uip_stat.tcp.drop); - UIP_STAT(++uip_stat.tcp.chkerr); - UIP_LOG("tcp: bad checksum."); - goto drop; - } - - - /* Demultiplex this segment. */ - /* First check any active connections. */ - for(uip_connr = &uip_conns[0]; uip_connr <= &uip_conns[UIP_CONNS - 1]; - ++uip_connr) { - if(uip_connr->tcpstateflags != UIP_CLOSED && - BUF->destport == uip_connr->lport && - BUF->srcport == uip_connr->rport && - uip_ipaddr_cmp(BUF->srcipaddr, uip_connr->ripaddr)) { - goto found; - } - } - - /* If we didn't find and active connection that expected the packet, - either this packet is an old duplicate, or this is a SYN packet - destined for a connection in LISTEN. If the SYN flag isn't set, - it is an old packet and we send a RST. */ - if((BUF->flags & TCP_CTL) != TCP_SYN) { - goto reset; - } - - tmp16 = BUF->destport; - /* Next, check listening connections. */ - for(c = 0; c < UIP_LISTENPORTS; ++c) { - if(tmp16 == uip_listenports[c]) - goto found_listen; - } - - /* No matching connection found, so we send a RST packet. */ - UIP_STAT(++uip_stat.tcp.synrst); - reset: - - /* We do not send resets in response to resets. */ - if(BUF->flags & TCP_RST) { - goto drop; - } - - UIP_STAT(++uip_stat.tcp.rst); - - BUF->flags = TCP_RST | TCP_ACK; - uip_len = UIP_IPTCPH_LEN; - BUF->tcpoffset = 5 << 4; - - /* Flip the seqno and ackno fields in the TCP header. */ - c = BUF->seqno[3]; - BUF->seqno[3] = BUF->ackno[3]; - BUF->ackno[3] = c; - - c = BUF->seqno[2]; - BUF->seqno[2] = BUF->ackno[2]; - BUF->ackno[2] = c; - - c = BUF->seqno[1]; - BUF->seqno[1] = BUF->ackno[1]; - BUF->ackno[1] = c; - - c = BUF->seqno[0]; - BUF->seqno[0] = BUF->ackno[0]; - BUF->ackno[0] = c; - - /* We also have to increase the sequence number we are - acknowledging. If the least significant byte overflowed, we need - to propagate the carry to the other bytes as well. */ - if(++BUF->ackno[3] == 0) { - if(++BUF->ackno[2] == 0) { - if(++BUF->ackno[1] == 0) { - ++BUF->ackno[0]; - } - } - } - - /* Swap port numbers. */ - tmp16 = BUF->srcport; - BUF->srcport = BUF->destport; - BUF->destport = tmp16; - - /* Swap IP addresses. */ - uip_ipaddr_copy(BUF->destipaddr, BUF->srcipaddr); - uip_ipaddr_copy(BUF->srcipaddr, uip_hostaddr); - - /* And send out the RST packet! */ - goto tcp_send_noconn; - - /* This label will be jumped to if we matched the incoming packet - with a connection in LISTEN. In that case, we should create a new - connection and send a SYNACK in return. */ - found_listen: - /* First we check if there are any connections avaliable. Unused - connections are kept in the same table as used connections, but - unused ones have the tcpstate set to CLOSED. Also, connections in - TIME_WAIT are kept track of and we'll use the oldest one if no - CLOSED connections are found. Thanks to Eddie C. Dost for a very - nice algorithm for the TIME_WAIT search. */ - uip_connr = 0; - for(c = 0; c < UIP_CONNS; ++c) { - if(uip_conns[c].tcpstateflags == UIP_CLOSED) { - uip_connr = &uip_conns[c]; - break; - } - if(uip_conns[c].tcpstateflags == UIP_TIME_WAIT) { - if(uip_connr == 0 || - uip_conns[c].timer > uip_connr->timer) { - uip_connr = &uip_conns[c]; - } - } - } - - if(uip_connr == 0) { - /* All connections are used already, we drop packet and hope that - the remote end will retransmit the packet at a time when we - have more spare connections. */ - UIP_STAT(++uip_stat.tcp.syndrop); - UIP_LOG("tcp: found no unused connections."); - goto drop; - } - uip_conn = uip_connr; - - /* Fill in the necessary fields for the new connection. */ - uip_connr->rto = uip_connr->timer = UIP_RTO; - uip_connr->sa = 0; - uip_connr->sv = 4; - uip_connr->nrtx = 0; - uip_connr->lport = BUF->destport; - uip_connr->rport = BUF->srcport; - uip_ipaddr_copy(uip_connr->ripaddr, BUF->srcipaddr); - uip_connr->tcpstateflags = UIP_SYN_RCVD; - - uip_connr->snd_nxt[0] = iss[0]; - uip_connr->snd_nxt[1] = iss[1]; - uip_connr->snd_nxt[2] = iss[2]; - uip_connr->snd_nxt[3] = iss[3]; - uip_connr->len = 1; - - /* rcv_nxt should be the seqno from the incoming packet + 1. */ - uip_connr->rcv_nxt[3] = BUF->seqno[3]; - uip_connr->rcv_nxt[2] = BUF->seqno[2]; - uip_connr->rcv_nxt[1] = BUF->seqno[1]; - uip_connr->rcv_nxt[0] = BUF->seqno[0]; - uip_add_rcv_nxt(1); - - /* Parse the TCP MSS option, if present. */ - if((BUF->tcpoffset & 0xf0) > 0x50) { - for(c = 0; c < ((BUF->tcpoffset >> 4) - 5) << 2 ;) { - opt = uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + c]; - if(opt == TCP_OPT_END) { - /* End of options. */ - break; - } else if(opt == TCP_OPT_NOOP) { - ++c; - /* NOP option. */ - } else if(opt == TCP_OPT_MSS && - uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 1 + c] == TCP_OPT_MSS_LEN) { - /* An MSS option with the right option length. */ - tmp16 = ((u16_t)uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 2 + c] << 8) | - (u16_t)uip_buf[UIP_IPTCPH_LEN + UIP_LLH_LEN + 3 + c]; - uip_connr->initialmss = uip_connr->mss = - tmp16 > UIP_TCP_MSS? UIP_TCP_MSS: tmp16; - - /* And we are done processing options. */ - break; - } else { - /* All other options have a length field, so that we easily - can skip past them. */ - if(uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 1 + c] == 0) { - /* If the length field is zero, the options are malformed - and we don't process them further. */ - break; - } - c += uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 1 + c]; - } - } - } - - /* Our response will be a SYNACK. */ -#if UIP_ACTIVE_OPEN - tcp_send_synack: - BUF->flags = TCP_ACK; - - tcp_send_syn: - BUF->flags |= TCP_SYN; -#else /* UIP_ACTIVE_OPEN */ - tcp_send_synack: - BUF->flags = TCP_SYN | TCP_ACK; -#endif /* UIP_ACTIVE_OPEN */ - - /* We send out the TCP Maximum Segment Size option with our - SYNACK. */ - BUF->optdata[0] = TCP_OPT_MSS; - BUF->optdata[1] = TCP_OPT_MSS_LEN; - BUF->optdata[2] = (UIP_TCP_MSS) / 256; - BUF->optdata[3] = (UIP_TCP_MSS) & 255; - uip_len = UIP_IPTCPH_LEN + TCP_OPT_MSS_LEN; - BUF->tcpoffset = ((UIP_TCPH_LEN + TCP_OPT_MSS_LEN) / 4) << 4; - goto tcp_send; - - /* This label will be jumped to if we found an active connection. */ - found: - uip_conn = uip_connr; - uip_flags = 0; - /* We do a very naive form of TCP reset processing; we just accept - any RST and kill our connection. We should in fact check if the - sequence number of this reset is wihtin our advertised window - before we accept the reset. */ - if(BUF->flags & TCP_RST) { - uip_connr->tcpstateflags = UIP_CLOSED; - UIP_LOG("tcp: got reset, aborting connection."); - uip_flags = UIP_ABORT; - UIP_APPCALL(); - goto drop; - } - /* Calculated the length of the data, if the application has sent - any data to us. */ - c = (BUF->tcpoffset >> 4) << 2; - /* uip_len will contain the length of the actual TCP data. This is - calculated by subtracing the length of the TCP header (in - c) and the length of the IP header (20 bytes). */ - uip_len = uip_len - c - UIP_IPH_LEN; - - /* First, check if the sequence number of the incoming packet is - what we're expecting next. If not, we send out an ACK with the - correct numbers in. */ - if(!(((uip_connr->tcpstateflags & UIP_TS_MASK) == UIP_SYN_SENT) && - ((BUF->flags & TCP_CTL) == (TCP_SYN | TCP_ACK)))) { - if((uip_len > 0 || ((BUF->flags & (TCP_SYN | TCP_FIN)) != 0)) && - (BUF->seqno[0] != uip_connr->rcv_nxt[0] || - BUF->seqno[1] != uip_connr->rcv_nxt[1] || - BUF->seqno[2] != uip_connr->rcv_nxt[2] || - BUF->seqno[3] != uip_connr->rcv_nxt[3])) { - goto tcp_send_ack; - } - } - - /* Next, check if the incoming segment acknowledges any outstanding - data. If so, we update the sequence number, reset the length of - the outstanding data, calculate RTT estimations, and reset the - retransmission timer. */ - if((BUF->flags & TCP_ACK) && uip_outstanding(uip_connr)) { - uip_add32(uip_connr->snd_nxt, uip_connr->len); - - if(BUF->ackno[0] == uip_acc32[0] && - BUF->ackno[1] == uip_acc32[1] && - BUF->ackno[2] == uip_acc32[2] && - BUF->ackno[3] == uip_acc32[3]) { - /* Update sequence number. */ - uip_connr->snd_nxt[0] = uip_acc32[0]; - uip_connr->snd_nxt[1] = uip_acc32[1]; - uip_connr->snd_nxt[2] = uip_acc32[2]; - uip_connr->snd_nxt[3] = uip_acc32[3]; - - - /* Do RTT estimation, unless we have done retransmissions. */ - if(uip_connr->nrtx == 0) { - signed char m; - m = uip_connr->rto - uip_connr->timer; - /* This is taken directly from VJs original code in his paper */ - m = m - (uip_connr->sa >> 3); - uip_connr->sa += m; - if(m < 0) { - m = -m; - } - m = m - (uip_connr->sv >> 2); - uip_connr->sv += m; - uip_connr->rto = (uip_connr->sa >> 3) + uip_connr->sv; - - } - /* Set the acknowledged flag. */ - uip_flags = UIP_ACKDATA; - /* Reset the retransmission timer. */ - uip_connr->timer = uip_connr->rto; - - /* Reset length of outstanding data. */ - uip_connr->len = 0; - } - - } - - /* Do different things depending on in what state the connection is. */ - switch(uip_connr->tcpstateflags & UIP_TS_MASK) { - /* CLOSED and LISTEN are not handled here. CLOSE_WAIT is not - implemented, since we force the application to close when the - peer sends a FIN (hence the application goes directly from - ESTABLISHED to LAST_ACK). */ - case UIP_SYN_RCVD: - /* In SYN_RCVD we have sent out a SYNACK in response to a SYN, and - we are waiting for an ACK that acknowledges the data we sent - out the last time. Therefore, we want to have the UIP_ACKDATA - flag set. If so, we enter the ESTABLISHED state. */ - if(uip_flags & UIP_ACKDATA) { - uip_connr->tcpstateflags = UIP_ESTABLISHED; - uip_flags = UIP_CONNECTED; - uip_connr->len = 0; - if(uip_len > 0) { - uip_flags |= UIP_NEWDATA; - uip_add_rcv_nxt(uip_len); - } - uip_slen = 0; - UIP_APPCALL(); - goto appsend; - } - goto drop; -#if UIP_ACTIVE_OPEN - case UIP_SYN_SENT: - /* In SYN_SENT, we wait for a SYNACK that is sent in response to - our SYN. The rcv_nxt is set to sequence number in the SYNACK - plus one, and we send an ACK. We move into the ESTABLISHED - state. */ - if((uip_flags & UIP_ACKDATA) && - (BUF->flags & TCP_CTL) == (TCP_SYN | TCP_ACK)) { - - /* Parse the TCP MSS option, if present. */ - if((BUF->tcpoffset & 0xf0) > 0x50) { - for(c = 0; c < ((BUF->tcpoffset >> 4) - 5) << 2 ;) { - opt = uip_buf[UIP_IPTCPH_LEN + UIP_LLH_LEN + c]; - if(opt == TCP_OPT_END) { - /* End of options. */ - break; - } else if(opt == TCP_OPT_NOOP) { - ++c; - /* NOP option. */ - } else if(opt == TCP_OPT_MSS && - uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 1 + c] == TCP_OPT_MSS_LEN) { - /* An MSS option with the right option length. */ - tmp16 = (uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 2 + c] << 8) | - uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 3 + c]; - uip_connr->initialmss = - uip_connr->mss = tmp16 > UIP_TCP_MSS? UIP_TCP_MSS: tmp16; - - /* And we are done processing options. */ - break; - } else { - /* All other options have a length field, so that we easily - can skip past them. */ - if(uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 1 + c] == 0) { - /* If the length field is zero, the options are malformed - and we don't process them further. */ - break; - } - c += uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 1 + c]; - } - } - } - uip_connr->tcpstateflags = UIP_ESTABLISHED; - uip_connr->rcv_nxt[0] = BUF->seqno[0]; - uip_connr->rcv_nxt[1] = BUF->seqno[1]; - uip_connr->rcv_nxt[2] = BUF->seqno[2]; - uip_connr->rcv_nxt[3] = BUF->seqno[3]; - uip_add_rcv_nxt(1); - uip_flags = UIP_CONNECTED | UIP_NEWDATA; - uip_connr->len = 0; - uip_len = 0; - uip_slen = 0; - UIP_APPCALL(); - goto appsend; - } - /* Inform the application that the connection failed */ - uip_flags = UIP_ABORT; - UIP_APPCALL(); - /* The connection is closed after we send the RST */ - uip_conn->tcpstateflags = UIP_CLOSED; - goto reset; -#endif /* UIP_ACTIVE_OPEN */ - - case UIP_ESTABLISHED: - /* In the ESTABLISHED state, we call upon the application to feed - data into the uip_buf. If the UIP_ACKDATA flag is set, the - application should put new data into the buffer, otherwise we are - retransmitting an old segment, and the application should put that - data into the buffer. - - If the incoming packet is a FIN, we should close the connection on - this side as well, and we send out a FIN and enter the LAST_ACK - state. We require that there is no outstanding data; otherwise the - sequence numbers will be screwed up. */ - - if(BUF->flags & TCP_FIN && !(uip_connr->tcpstateflags & UIP_STOPPED)) { - if(uip_outstanding(uip_connr)) { - goto drop; - } - uip_add_rcv_nxt(1 + uip_len); - uip_flags |= UIP_CLOSE; - if(uip_len > 0) { - uip_flags |= UIP_NEWDATA; - } - UIP_APPCALL(); - uip_connr->len = 1; - uip_connr->tcpstateflags = UIP_LAST_ACK; - uip_connr->nrtx = 0; - tcp_send_finack: - BUF->flags = TCP_FIN | TCP_ACK; - goto tcp_send_nodata; - } - - /* Check the URG flag. If this is set, the segment carries urgent - data that we must pass to the application. */ - if((BUF->flags & TCP_URG) != 0) { -#if UIP_URGDATA > 0 - uip_urglen = (BUF->urgp[0] << 8) | BUF->urgp[1]; - if(uip_urglen > uip_len) { - /* There is more urgent data in the next segment to come. */ - uip_urglen = uip_len; - } - uip_add_rcv_nxt(uip_urglen); - uip_len -= uip_urglen; - uip_urgdata = uip_appdata; - uip_appdata += uip_urglen; - } else { - uip_urglen = 0; -#else /* UIP_URGDATA > 0 */ - uip_appdata = ((char *)uip_appdata) + ((BUF->urgp[0] << 8) | BUF->urgp[1]); - uip_len -= (BUF->urgp[0] << 8) | BUF->urgp[1]; -#endif /* UIP_URGDATA > 0 */ - } - - /* If uip_len > 0 we have TCP data in the packet, and we flag this - by setting the UIP_NEWDATA flag and update the sequence number - we acknowledge. If the application has stopped the dataflow - using uip_stop(), we must not accept any data packets from the - remote host. */ - if(uip_len > 0 && !(uip_connr->tcpstateflags & UIP_STOPPED)) { - uip_flags |= UIP_NEWDATA; - uip_add_rcv_nxt(uip_len); - } - - /* Check if the available buffer space advertised by the other end - is smaller than the initial MSS for this connection. If so, we - set the current MSS to the window size to ensure that the - application does not send more data than the other end can - handle. - - If the remote host advertises a zero window, we set the MSS to - the initial MSS so that the application will send an entire MSS - of data. This data will not be acknowledged by the receiver, - and the application will retransmit it. This is called the - "persistent timer" and uses the retransmission mechanim. - */ - tmp16 = ((u16_t)BUF->wnd[0] << 8) + (u16_t)BUF->wnd[1]; - if(tmp16 > uip_connr->initialmss || - tmp16 == 0) { - tmp16 = uip_connr->initialmss; - } - uip_connr->mss = tmp16; - - /* If this packet constitutes an ACK for outstanding data (flagged - by the UIP_ACKDATA flag, we should call the application since it - might want to send more data. If the incoming packet had data - from the peer (as flagged by the UIP_NEWDATA flag), the - application must also be notified. - - When the application is called, the global variable uip_len - contains the length of the incoming data. The application can - access the incoming data through the global pointer - uip_appdata, which usually points UIP_IPTCPH_LEN + UIP_LLH_LEN - bytes into the uip_buf array. - - If the application wishes to send any data, this data should be - put into the uip_appdata and the length of the data should be - put into uip_len. If the application don't have any data to - send, uip_len must be set to 0. */ - if(uip_flags & (UIP_NEWDATA | UIP_ACKDATA)) { - uip_slen = 0; - UIP_APPCALL(); - - appsend: - - if(uip_flags & UIP_ABORT) { - uip_slen = 0; - uip_connr->tcpstateflags = UIP_CLOSED; - BUF->flags = TCP_RST | TCP_ACK; - goto tcp_send_nodata; - } - - if(uip_flags & UIP_CLOSE) { - uip_slen = 0; - uip_connr->len = 1; - uip_connr->tcpstateflags = UIP_FIN_WAIT_1; - uip_connr->nrtx = 0; - BUF->flags = TCP_FIN | TCP_ACK; - goto tcp_send_nodata; - } - - /* If uip_slen > 0, the application has data to be sent. */ - if(uip_slen > 0) { - - /* If the connection has acknowledged data, the contents of - the ->len variable should be discarded. */ - if((uip_flags & UIP_ACKDATA) != 0) { - uip_connr->len = 0; - } - - /* If the ->len variable is non-zero the connection has - already data in transit and cannot send anymore right - now. */ - if(uip_connr->len == 0) { - - /* The application cannot send more than what is allowed by - the mss (the minumum of the MSS and the available - window). */ - if(uip_slen > uip_connr->mss) { - uip_slen = uip_connr->mss; - } - - /* Remember how much data we send out now so that we know - when everything has been acknowledged. */ - uip_connr->len = uip_slen; - } else { - - /* If the application already had unacknowledged data, we - make sure that the application does not send (i.e., - retransmit) out more than it previously sent out. */ - uip_slen = uip_connr->len; - } - } - uip_connr->nrtx = 0; - apprexmit: - uip_appdata = uip_sappdata; - - /* If the application has data to be sent, or if the incoming - packet had new data in it, we must send out a packet. */ - if(uip_slen > 0 && uip_connr->len > 0) { - /* Add the length of the IP and TCP headers. */ - uip_len = uip_connr->len + UIP_TCPIP_HLEN; - /* We always set the ACK flag in response packets. */ - BUF->flags = TCP_ACK | TCP_PSH; - /* Send the packet. */ - goto tcp_send_noopts; - } - /* If there is no data to send, just send out a pure ACK if - there is newdata. */ - if(uip_flags & UIP_NEWDATA) { - uip_len = UIP_TCPIP_HLEN; - BUF->flags = TCP_ACK; - goto tcp_send_noopts; - } - } - goto drop; - case UIP_LAST_ACK: - /* We can close this connection if the peer has acknowledged our - FIN. This is indicated by the UIP_ACKDATA flag. */ - if(uip_flags & UIP_ACKDATA) { - uip_connr->tcpstateflags = UIP_CLOSED; - uip_flags = UIP_CLOSE; - UIP_APPCALL(); - } - break; - - case UIP_FIN_WAIT_1: - /* The application has closed the connection, but the remote host - hasn't closed its end yet. Thus we do nothing but wait for a - FIN from the other side. */ - if(uip_len > 0) { - uip_add_rcv_nxt(uip_len); - } - if(BUF->flags & TCP_FIN) { - if(uip_flags & UIP_ACKDATA) { - uip_connr->tcpstateflags = UIP_TIME_WAIT; - uip_connr->timer = 0; - uip_connr->len = 0; - } else { - uip_connr->tcpstateflags = UIP_CLOSING; - } - uip_add_rcv_nxt(1); - uip_flags = UIP_CLOSE; - UIP_APPCALL(); - goto tcp_send_ack; - } else if(uip_flags & UIP_ACKDATA) { - uip_connr->tcpstateflags = UIP_FIN_WAIT_2; - uip_connr->len = 0; - goto drop; - } - if(uip_len > 0) { - goto tcp_send_ack; - } - goto drop; - - case UIP_FIN_WAIT_2: - if(uip_len > 0) { - uip_add_rcv_nxt(uip_len); - } - if(BUF->flags & TCP_FIN) { - uip_connr->tcpstateflags = UIP_TIME_WAIT; - uip_connr->timer = 0; - uip_add_rcv_nxt(1); - uip_flags = UIP_CLOSE; - UIP_APPCALL(); - goto tcp_send_ack; - } - if(uip_len > 0) { - goto tcp_send_ack; - } - goto drop; - - case UIP_TIME_WAIT: - goto tcp_send_ack; - - case UIP_CLOSING: - if(uip_flags & UIP_ACKDATA) { - uip_connr->tcpstateflags = UIP_TIME_WAIT; - uip_connr->timer = 0; - } - } - goto drop; - - - /* We jump here when we are ready to send the packet, and just want - to set the appropriate TCP sequence numbers in the TCP header. */ - tcp_send_ack: - BUF->flags = TCP_ACK; - tcp_send_nodata: - uip_len = UIP_IPTCPH_LEN; - tcp_send_noopts: - BUF->tcpoffset = (UIP_TCPH_LEN / 4) << 4; - tcp_send: - /* We're done with the input processing. We are now ready to send a - reply. Our job is to fill in all the fields of the TCP and IP - headers before calculating the checksum and finally send the - packet. */ - BUF->ackno[0] = uip_connr->rcv_nxt[0]; - BUF->ackno[1] = uip_connr->rcv_nxt[1]; - BUF->ackno[2] = uip_connr->rcv_nxt[2]; - BUF->ackno[3] = uip_connr->rcv_nxt[3]; - - BUF->seqno[0] = uip_connr->snd_nxt[0]; - BUF->seqno[1] = uip_connr->snd_nxt[1]; - BUF->seqno[2] = uip_connr->snd_nxt[2]; - BUF->seqno[3] = uip_connr->snd_nxt[3]; - - BUF->proto = UIP_PROTO_TCP; - - BUF->srcport = uip_connr->lport; - BUF->destport = uip_connr->rport; - - uip_ipaddr_copy(BUF->srcipaddr, uip_hostaddr); - uip_ipaddr_copy(BUF->destipaddr, uip_connr->ripaddr); - - if(uip_connr->tcpstateflags & UIP_STOPPED) { - /* If the connection has issued uip_stop(), we advertise a zero - window so that the remote host will stop sending data. */ - BUF->wnd[0] = BUF->wnd[1] = 0; - } else { - BUF->wnd[0] = ((UIP_RECEIVE_WINDOW) >> 8); - BUF->wnd[1] = ((UIP_RECEIVE_WINDOW) & 0xff); - } - - tcp_send_noconn: - BUF->ttl = UIP_TTL; -#if UIP_CONF_IPV6 - /* For IPv6, the IP length field does not include the IPv6 IP header - length. */ - BUF->len[0] = ((uip_len - UIP_IPH_LEN) >> 8); - BUF->len[1] = ((uip_len - UIP_IPH_LEN) & 0xff); -#else /* UIP_CONF_IPV6 */ - BUF->len[0] = (uip_len >> 8); - BUF->len[1] = (uip_len & 0xff); -#endif /* UIP_CONF_IPV6 */ - - BUF->urgp[0] = BUF->urgp[1] = 0; - - /* Calculate TCP checksum. */ - BUF->tcpchksum = 0; - BUF->tcpchksum = ~(uip_tcpchksum()); - -#if UIP_UDP - ip_send_nolen: -#endif /* UIP_UDP */ - -#if UIP_CONF_IPV6 - BUF->vtc = 0x60; - BUF->tcflow = 0x00; - BUF->flow = 0x00; -#else /* UIP_CONF_IPV6 */ - BUF->vhl = 0x45; - BUF->tos = 0; - BUF->ipoffset[0] = BUF->ipoffset[1] = 0; - ++ipid; - BUF->ipid[0] = ipid >> 8; - BUF->ipid[1] = ipid & 0xff; - /* Calculate IP checksum. */ - BUF->ipchksum = 0; - BUF->ipchksum = ~(uip_ipchksum()); - DEBUG_PRINTF("uip ip_send_nolen: chkecum 0x%04x\n", uip_ipchksum()); -#endif /* UIP_CONF_IPV6 */ - - UIP_STAT(++uip_stat.tcp.sent); - send: - DEBUG_PRINTF("Sending packet with length %d (%d)\n", uip_len, - (BUF->len[0] << 8) | BUF->len[1]); - - UIP_STAT(++uip_stat.ip.sent); - /* Return and let the caller do the actual transmission. */ - uip_flags = 0; - return; - drop: - uip_len = 0; - uip_flags = 0; - return; -} -/*---------------------------------------------------------------------------*/ -u16_t -htons(u16_t val) -{ - return HTONS(val); -} -/*---------------------------------------------------------------------------*/ -void -uip_send(const void *data, int len) -{ - if(len > 0) { - uip_slen = len; - if(data != uip_sappdata) { - memcpy(uip_sappdata, (data), uip_slen); - } - } -} -/** @} */ diff --git a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/uip.h b/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/uip.h deleted file mode 100644 index 82da6fbd2..000000000 --- a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/uip.h +++ /dev/null @@ -1,1638 +0,0 @@ - -/** - * \addtogroup uip - * @{ - */ - -/** - * \file - * Header file for the uIP TCP/IP stack. - * \author Adam Dunkels - * - * The uIP TCP/IP stack header file contains definitions for a number - * of C macros that are used by uIP programs as well as internal uIP - * structures, TCP/IP header structures and function declarations. - * - */ - - -/* - * Copyright (c) 2001-2003, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: uip.h,v 1.40 2006/06/08 07:12:07 adam Exp $ - * - */ - -#ifndef __UIP_H__ -#define __UIP_H__ - -#include "uipopt.h" - -/** - * Repressentation of an IP address. - * - */ -typedef u16_t uip_ip4addr_t[2]; -typedef u16_t uip_ip6addr_t[8]; -#if UIP_CONF_IPV6 -typedef uip_ip6addr_t uip_ipaddr_t; -#else /* UIP_CONF_IPV6 */ -typedef uip_ip4addr_t uip_ipaddr_t; -#endif /* UIP_CONF_IPV6 */ - -/*---------------------------------------------------------------------------*/ -/* First, the functions that should be called from the - * system. Initialization, the periodic timer and incoming packets are - * handled by the following three functions. - */ - -/** - * \defgroup uipconffunc uIP configuration functions - * @{ - * - * The uIP configuration functions are used for setting run-time - * parameters in uIP such as IP addresses. - */ - -/** - * Set the IP address of this host. - * - * The IP address is represented as a 4-byte array where the first - * octet of the IP address is put in the first member of the 4-byte - * array. - * - * Example: - \code - - uip_ipaddr_t addr; - - uip_ipaddr(&addr, 192,168,1,2); - uip_sethostaddr(&addr); - - \endcode - * \param addr A pointer to an IP address of type uip_ipaddr_t; - * - * \sa uip_ipaddr() - * - * \hideinitializer - */ -#define uip_sethostaddr(addr) uip_ipaddr_copy(uip_hostaddr, (addr)) - -/** - * Get the IP address of this host. - * - * The IP address is represented as a 4-byte array where the first - * octet of the IP address is put in the first member of the 4-byte - * array. - * - * Example: - \code - uip_ipaddr_t hostaddr; - - uip_gethostaddr(&hostaddr); - \endcode - * \param addr A pointer to a uip_ipaddr_t variable that will be - * filled in with the currently configured IP address. - * - * \hideinitializer - */ -#define uip_gethostaddr(addr) uip_ipaddr_copy((addr), uip_hostaddr) - -/** - * Set the default router's IP address. - * - * \param addr A pointer to a uip_ipaddr_t variable containing the IP - * address of the default router. - * - * \sa uip_ipaddr() - * - * \hideinitializer - */ -#define uip_setdraddr(addr) uip_ipaddr_copy(uip_draddr, (addr)) - -/** - * Set the netmask. - * - * \param addr A pointer to a uip_ipaddr_t variable containing the IP - * address of the netmask. - * - * \sa uip_ipaddr() - * - * \hideinitializer - */ -#define uip_setnetmask(addr) uip_ipaddr_copy(uip_netmask, (addr)) - - -/** - * Get the default router's IP address. - * - * \param addr A pointer to a uip_ipaddr_t variable that will be - * filled in with the IP address of the default router. - * - * \hideinitializer - */ -#define uip_getdraddr(addr) uip_ipaddr_copy((addr), uip_draddr) - -/** - * Get the netmask. - * - * \param addr A pointer to a uip_ipaddr_t variable that will be - * filled in with the value of the netmask. - * - * \hideinitializer - */ -#define uip_getnetmask(addr) uip_ipaddr_copy((addr), uip_netmask) - -/** @} */ - -/** - * \defgroup uipinit uIP initialization functions - * @{ - * - * The uIP initialization functions are used for booting uIP. - */ - -/** - * uIP initialization function. - * - * This function should be called at boot up to initilize the uIP - * TCP/IP stack. - */ -void uip_init(void); - -/** - * uIP initialization function. - * - * This function may be used at boot time to set the initial ip_id. - */ -void uip_setipid(u16_t id); - -/** @} */ - -/** - * \defgroup uipdevfunc uIP device driver functions - * @{ - * - * These functions are used by a network device driver for interacting - * with uIP. - */ - -/** - * Process an incoming packet. - * - * This function should be called when the device driver has received - * a packet from the network. The packet from the device driver must - * be present in the uip_buf buffer, and the length of the packet - * should be placed in the uip_len variable. - * - * When the function returns, there may be an outbound packet placed - * in the uip_buf packet buffer. If so, the uip_len variable is set to - * the length of the packet. If no packet is to be sent out, the - * uip_len variable is set to 0. - * - * The usual way of calling the function is presented by the source - * code below. - \code - uip_len = devicedriver_poll(); - if(uip_len > 0) { - uip_input(); - if(uip_len > 0) { - devicedriver_send(); - } - } - \endcode - * - * \note If you are writing a uIP device driver that needs ARP - * (Address Resolution Protocol), e.g., when running uIP over - * Ethernet, you will need to call the uIP ARP code before calling - * this function: - \code - #define BUF ((struct uip_eth_hdr *)&uip_buf[0]) - uip_len = ethernet_devicedrver_poll(); - if(uip_len > 0) { - if(BUF->type == HTONS(UIP_ETHTYPE_IP)) { - uip_arp_ipin(); - uip_input(); - if(uip_len > 0) { - uip_arp_out(); - ethernet_devicedriver_send(); - } - } else if(BUF->type == HTONS(UIP_ETHTYPE_ARP)) { - uip_arp_arpin(); - if(uip_len > 0) { - ethernet_devicedriver_send(); - } - } - \endcode - * - * \hideinitializer - */ -#define uip_input() uip_process(UIP_DATA) - -/** - * Periodic processing for a connection identified by its number. - * - * This function does the necessary periodic processing (timers, - * polling) for a uIP TCP conneciton, and should be called when the - * periodic uIP timer goes off. It should be called for every - * connection, regardless of whether they are open of closed. - * - * When the function returns, it may have an outbound packet waiting - * for service in the uIP packet buffer, and if so the uip_len - * variable is set to a value larger than zero. The device driver - * should be called to send out the packet. - * - * The ususal way of calling the function is through a for() loop like - * this: - \code - for(i = 0; i < UIP_CONNS; ++i) { - uip_periodic(i); - if(uip_len > 0) { - devicedriver_send(); - } - } - \endcode - * - * \note If you are writing a uIP device driver that needs ARP - * (Address Resolution Protocol), e.g., when running uIP over - * Ethernet, you will need to call the uip_arp_out() function before - * calling the device driver: - \code - for(i = 0; i < UIP_CONNS; ++i) { - uip_periodic(i); - if(uip_len > 0) { - uip_arp_out(); - ethernet_devicedriver_send(); - } - } - \endcode - * - * \param conn The number of the connection which is to be periodically polled. - * - * \hideinitializer - */ -#define uip_periodic(conn) do { uip_conn = &uip_conns[conn]; \ - uip_process(UIP_TIMER); } while (0) - -/** - * - * - */ -#define uip_conn_active(conn) (uip_conns[conn].tcpstateflags != UIP_CLOSED) - -/** - * Perform periodic processing for a connection identified by a pointer - * to its structure. - * - * Same as uip_periodic() but takes a pointer to the actual uip_conn - * struct instead of an integer as its argument. This function can be - * used to force periodic processing of a specific connection. - * - * \param conn A pointer to the uip_conn struct for the connection to - * be processed. - * - * \hideinitializer - */ -#define uip_periodic_conn(conn) do { uip_conn = conn; \ - uip_process(UIP_TIMER); } while (0) - -/** - * Reuqest that a particular connection should be polled. - * - * Similar to uip_periodic_conn() but does not perform any timer - * processing. The application is polled for new data. - * - * \param conn A pointer to the uip_conn struct for the connection to - * be processed. - * - * \hideinitializer - */ -#define uip_poll_conn(conn) do { uip_conn = conn; \ - uip_process(UIP_POLL_REQUEST); } while (0) - - -#if UIP_UDP -/** - * Periodic processing for a UDP connection identified by its number. - * - * This function is essentially the same as uip_periodic(), but for - * UDP connections. It is called in a similar fashion as the - * uip_periodic() function: - \code - for(i = 0; i < UIP_UDP_CONNS; i++) { - uip_udp_periodic(i); - if(uip_len > 0) { - devicedriver_send(); - } - } - \endcode - * - * \note As for the uip_periodic() function, special care has to be - * taken when using uIP together with ARP and Ethernet: - \code - for(i = 0; i < UIP_UDP_CONNS; i++) { - uip_udp_periodic(i); - if(uip_len > 0) { - uip_arp_out(); - ethernet_devicedriver_send(); - } - } - \endcode - * - * \param conn The number of the UDP connection to be processed. - * - * \hideinitializer - */ -#define uip_udp_periodic(conn) do { uip_udp_conn = &uip_udp_conns[conn]; \ - uip_process(UIP_UDP_TIMER); } while (0) - -/** - * Periodic processing for a UDP connection identified by a pointer to - * its structure. - * - * Same as uip_udp_periodic() but takes a pointer to the actual - * uip_conn struct instead of an integer as its argument. This - * function can be used to force periodic processing of a specific - * connection. - * - * \param conn A pointer to the uip_udp_conn struct for the connection - * to be processed. - * - * \hideinitializer - */ -#define uip_udp_periodic_conn(conn) do { uip_udp_conn = conn; \ - uip_process(UIP_UDP_TIMER); } while (0) - - -#endif /* UIP_UDP */ - -/** - * The uIP packet buffer. - * - * The uip_buf array is used to hold incoming and outgoing - * packets. The device driver should place incoming data into this - * buffer. When sending data, the device driver should read the link - * level headers and the TCP/IP headers from this buffer. The size of - * the link level headers is configured by the UIP_LLH_LEN define. - * - * \note The application data need not be placed in this buffer, so - * the device driver must read it from the place pointed to by the - * uip_appdata pointer as illustrated by the following example: - \code - void - devicedriver_send(void) - { - hwsend(&uip_buf[0], UIP_LLH_LEN); - if(uip_len <= UIP_LLH_LEN + UIP_TCPIP_HLEN) { - hwsend(&uip_buf[UIP_LLH_LEN], uip_len - UIP_LLH_LEN); - } else { - hwsend(&uip_buf[UIP_LLH_LEN], UIP_TCPIP_HLEN); - hwsend(uip_appdata, uip_len - UIP_TCPIP_HLEN - UIP_LLH_LEN); - } - } - \endcode - */ -#ifndef UIP_CONF_EXTERNAL_BUFFER - extern u8_t uip_buf[UIP_BUFSIZE+2]; -#else - extern unsigned char *uip_buf; -#endif - -/** @} */ - -/*---------------------------------------------------------------------------*/ -/* Functions that are used by the uIP application program. Opening and - * closing connections, sending and receiving data, etc. is all - * handled by the functions below. -*/ -/** - * \defgroup uipappfunc uIP application functions - * @{ - * - * Functions used by an application running of top of uIP. - */ - -/** - * Start listening to the specified port. - * - * \note Since this function expects the port number in network byte - * order, a conversion using HTONS() or htons() is necessary. - * - \code - uip_listen(HTONS(80)); - \endcode - * - * \param port A 16-bit port number in network byte order. - */ -void uip_listen(u16_t port); - -/** - * Stop listening to the specified port. - * - * \note Since this function expects the port number in network byte - * order, a conversion using HTONS() or htons() is necessary. - * - \code - uip_unlisten(HTONS(80)); - \endcode - * - * \param port A 16-bit port number in network byte order. - */ -void uip_unlisten(u16_t port); - -/** - * Connect to a remote host using TCP. - * - * This function is used to start a new connection to the specified - * port on the specied host. It allocates a new connection identifier, - * sets the connection to the SYN_SENT state and sets the - * retransmission timer to 0. This will cause a TCP SYN segment to be - * sent out the next time this connection is periodically processed, - * which usually is done within 0.5 seconds after the call to - * uip_connect(). - * - * \note This function is avaliable only if support for active open - * has been configured by defining UIP_ACTIVE_OPEN to 1 in uipopt.h. - * - * \note Since this function requires the port number to be in network - * byte order, a conversion using HTONS() or htons() is necessary. - * - \code - uip_ipaddr_t ipaddr; - - uip_ipaddr(&ipaddr, 192,168,1,2); - uip_connect(&ipaddr, HTONS(80)); - \endcode - * - * \param ripaddr The IP address of the remote hot. - * - * \param port A 16-bit port number in network byte order. - * - * \return A pointer to the uIP connection identifier for the new connection, - * or NULL if no connection could be allocated. - * - */ -struct uip_conn *uip_connect(uip_ipaddr_t *ripaddr, u16_t port); - - - -/** - * \internal - * - * Check if a connection has outstanding (i.e., unacknowledged) data. - * - * \param conn A pointer to the uip_conn structure for the connection. - * - * \hideinitializer - */ -#define uip_outstanding(conn) ((conn)->len) - -/** - * Send data on the current connection. - * - * This function is used to send out a single segment of TCP - * data. Only applications that have been invoked by uIP for event - * processing can send data. - * - * The amount of data that actually is sent out after a call to this - * funcion is determined by the maximum amount of data TCP allows. uIP - * will automatically crop the data so that only the appropriate - * amount of data is sent. The function uip_mss() can be used to query - * uIP for the amount of data that actually will be sent. - * - * \note This function does not guarantee that the sent data will - * arrive at the destination. If the data is lost in the network, the - * application will be invoked with the uip_rexmit() event being - * set. The application will then have to resend the data using this - * function. - * - * \param data A pointer to the data which is to be sent. - * - * \param len The maximum amount of data bytes to be sent. - * - * \hideinitializer - */ -void uip_send(const void *data, int len); - -/** - * The length of any incoming data that is currently avaliable (if avaliable) - * in the uip_appdata buffer. - * - * The test function uip_data() must first be used to check if there - * is any data available at all. - * - * \hideinitializer - */ -/*void uip_datalen(void);*/ -#define uip_datalen() uip_len - -/** - * The length of any out-of-band data (urgent data) that has arrived - * on the connection. - * - * \note The configuration parameter UIP_URGDATA must be set for this - * function to be enabled. - * - * \hideinitializer - */ -#define uip_urgdatalen() uip_urglen - -/** - * Close the current connection. - * - * This function will close the current connection in a nice way. - * - * \hideinitializer - */ -#define uip_close() (uip_flags = UIP_CLOSE) - -/** - * Abort the current connection. - * - * This function will abort (reset) the current connection, and is - * usually used when an error has occured that prevents using the - * uip_close() function. - * - * \hideinitializer - */ -#define uip_abort() (uip_flags = UIP_ABORT) - -/** - * Tell the sending host to stop sending data. - * - * This function will close our receiver's window so that we stop - * receiving data for the current connection. - * - * \hideinitializer - */ -#define uip_stop() (uip_conn->tcpstateflags |= UIP_STOPPED) - -/** - * Find out if the current connection has been previously stopped with - * uip_stop(). - * - * \hideinitializer - */ -#define uip_stopped(conn) ((conn)->tcpstateflags & UIP_STOPPED) - -/** - * Restart the current connection, if is has previously been stopped - * with uip_stop(). - * - * This function will open the receiver's window again so that we - * start receiving data for the current connection. - * - * \hideinitializer - */ -#define uip_restart() do { uip_flags |= UIP_NEWDATA; \ - uip_conn->tcpstateflags &= ~UIP_STOPPED; \ - } while(0) - - -/* uIP tests that can be made to determine in what state the current - connection is, and what the application function should do. */ - -/** - * Is the current connection a UDP connection? - * - * This function checks whether the current connection is a UDP connection. - * - * \hideinitializer - * - */ -#define uip_udpconnection() (uip_conn == NULL) - -/** - * Is new incoming data available? - * - * Will reduce to non-zero if there is new data for the application - * present at the uip_appdata pointer. The size of the data is - * avaliable through the uip_len variable. - * - * \hideinitializer - */ -#define uip_newdata() (uip_flags & UIP_NEWDATA) - -/** - * Has previously sent data been acknowledged? - * - * Will reduce to non-zero if the previously sent data has been - * acknowledged by the remote host. This means that the application - * can send new data. - * - * \hideinitializer - */ -#define uip_acked() (uip_flags & UIP_ACKDATA) - -/** - * Has the connection just been connected? - * - * Reduces to non-zero if the current connection has been connected to - * a remote host. This will happen both if the connection has been - * actively opened (with uip_connect()) or passively opened (with - * uip_listen()). - * - * \hideinitializer - */ -#define uip_connected() (uip_flags & UIP_CONNECTED) - -/** - * Has the connection been closed by the other end? - * - * Is non-zero if the connection has been closed by the remote - * host. The application may then do the necessary clean-ups. - * - * \hideinitializer - */ -#define uip_closed() (uip_flags & UIP_CLOSE) - -/** - * Has the connection been aborted by the other end? - * - * Non-zero if the current connection has been aborted (reset) by the - * remote host. - * - * \hideinitializer - */ -#define uip_aborted() (uip_flags & UIP_ABORT) - -/** - * Has the connection timed out? - * - * Non-zero if the current connection has been aborted due to too many - * retransmissions. - * - * \hideinitializer - */ -#define uip_timedout() (uip_flags & UIP_TIMEDOUT) - -/** - * Do we need to retransmit previously data? - * - * Reduces to non-zero if the previously sent data has been lost in - * the network, and the application should retransmit it. The - * application should send the exact same data as it did the last - * time, using the uip_send() function. - * - * \hideinitializer - */ -#define uip_rexmit() (uip_flags & UIP_REXMIT) - -/** - * Is the connection being polled by uIP? - * - * Is non-zero if the reason the application is invoked is that the - * current connection has been idle for a while and should be - * polled. - * - * The polling event can be used for sending data without having to - * wait for the remote host to send data. - * - * \hideinitializer - */ -#define uip_poll() (uip_flags & UIP_POLL) - -/** - * Get the initial maxium segment size (MSS) of the current - * connection. - * - * \hideinitializer - */ -#define uip_initialmss() (uip_conn->initialmss) - -/** - * Get the current maxium segment size that can be sent on the current - * connection. - * - * The current maxiumum segment size that can be sent on the - * connection is computed from the receiver's window and the MSS of - * the connection (which also is available by calling - * uip_initialmss()). - * - * \hideinitializer - */ -#define uip_mss() (uip_conn->mss) - -/** - * Set up a new UDP connection. - * - * This function sets up a new UDP connection. The function will - * automatically allocate an unused local port for the new - * connection. However, another port can be chosen by using the - * uip_udp_bind() call, after the uip_udp_new() function has been - * called. - * - * Example: - \code - uip_ipaddr_t addr; - struct uip_udp_conn *c; - - uip_ipaddr(&addr, 192,168,2,1); - c = uip_udp_new(&addr, HTONS(12345)); - if(c != NULL) { - uip_udp_bind(c, HTONS(12344)); - } - \endcode - * \param ripaddr The IP address of the remote host. - * - * \param rport The remote port number in network byte order. - * - * \return The uip_udp_conn structure for the new connection or NULL - * if no connection could be allocated. - */ -struct uip_udp_conn *uip_udp_new(uip_ipaddr_t *ripaddr, u16_t rport); - -/** - * Removed a UDP connection. - * - * \param conn A pointer to the uip_udp_conn structure for the connection. - * - * \hideinitializer - */ -#define uip_udp_remove(conn) (conn)->lport = 0 - -/** - * Bind a UDP connection to a local port. - * - * \param conn A pointer to the uip_udp_conn structure for the - * connection. - * - * \param port The local port number, in network byte order. - * - * \hideinitializer - */ -#define uip_udp_bind(conn, port) (conn)->lport = port - -/** - * Send a UDP datagram of length len on the current connection. - * - * This function can only be called in response to a UDP event (poll - * or newdata). The data must be present in the uip_buf buffer, at the - * place pointed to by the uip_appdata pointer. - * - * \param len The length of the data in the uip_buf buffer. - * - * \hideinitializer - */ -#define uip_udp_send(len) uip_send((char *)uip_appdata, len) - -/** @} */ - -/* uIP convenience and converting functions. */ - -/** - * \defgroup uipconvfunc uIP conversion functions - * @{ - * - * These functions can be used for converting between different data - * formats used by uIP. - */ - -/** - * Construct an IP address from four bytes. - * - * This function constructs an IP address of the type that uIP handles - * internally from four bytes. The function is handy for specifying IP - * addresses to use with e.g. the uip_connect() function. - * - * Example: - \code - uip_ipaddr_t ipaddr; - struct uip_conn *c; - - uip_ipaddr(&ipaddr, 192,168,1,2); - c = uip_connect(&ipaddr, HTONS(80)); - \endcode - * - * \param addr A pointer to a uip_ipaddr_t variable that will be - * filled in with the IP address. - * - * \param addr0 The first octet of the IP address. - * \param addr1 The second octet of the IP address. - * \param addr2 The third octet of the IP address. - * \param addr3 The forth octet of the IP address. - * - * \hideinitializer - */ -#define uip_ipaddr(addr, addr0,addr1,addr2,addr3) do { \ - ((u16_t *)(addr))[0] = HTONS(((addr0) << 8) | (addr1)); \ - ((u16_t *)(addr))[1] = HTONS(((addr2) << 8) | (addr3)); \ - } while(0) - -/** - * Construct an IPv6 address from eight 16-bit words. - * - * This function constructs an IPv6 address. - * - * \hideinitializer - */ -#define uip_ip6addr(addr, addr0,addr1,addr2,addr3,addr4,addr5,addr6,addr7) do { \ - ((u16_t *)(addr))[0] = HTONS((addr0)); \ - ((u16_t *)(addr))[1] = HTONS((addr1)); \ - ((u16_t *)(addr))[2] = HTONS((addr2)); \ - ((u16_t *)(addr))[3] = HTONS((addr3)); \ - ((u16_t *)(addr))[4] = HTONS((addr4)); \ - ((u16_t *)(addr))[5] = HTONS((addr5)); \ - ((u16_t *)(addr))[6] = HTONS((addr6)); \ - ((u16_t *)(addr))[7] = HTONS((addr7)); \ - } while(0) - -/** - * Copy an IP address to another IP address. - * - * Copies an IP address from one place to another. - * - * Example: - \code - uip_ipaddr_t ipaddr1, ipaddr2; - - uip_ipaddr(&ipaddr1, 192,16,1,2); - uip_ipaddr_copy(&ipaddr2, &ipaddr1); - \endcode - * - * \param dest The destination for the copy. - * \param src The source from where to copy. - * - * \hideinitializer - */ -#if !UIP_CONF_IPV6 -#define uip_ipaddr_copy(dest, src) do { \ - ((u16_t *)dest)[0] = ((u16_t *)src)[0]; \ - ((u16_t *)dest)[1] = ((u16_t *)src)[1]; \ - } while(0) -#else /* !UIP_CONF_IPV6 */ -#define uip_ipaddr_copy(dest, src) memcpy(dest, src, sizeof(uip_ip6addr_t)) -#endif /* !UIP_CONF_IPV6 */ - -/** - * Compare two IP addresses - * - * Compares two IP addresses. - * - * Example: - \code - uip_ipaddr_t ipaddr1, ipaddr2; - - uip_ipaddr(&ipaddr1, 192,16,1,2); - if(uip_ipaddr_cmp(&ipaddr2, &ipaddr1)) { - printf("They are the same"); - } - \endcode - * - * \param addr1 The first IP address. - * \param addr2 The second IP address. - * - * \hideinitializer - */ -#if !UIP_CONF_IPV6 -#define uip_ipaddr_cmp(addr1, addr2) (((u16_t *)addr1)[0] == ((u16_t *)addr2)[0] && \ - ((u16_t *)addr1)[1] == ((u16_t *)addr2)[1]) -#else /* !UIP_CONF_IPV6 */ -#define uip_ipaddr_cmp(addr1, addr2) (memcmp(addr1, addr2, sizeof(uip_ip6addr_t)) == 0) -#endif /* !UIP_CONF_IPV6 */ - -/** - * Compare two IP addresses with netmasks - * - * Compares two IP addresses with netmasks. The masks are used to mask - * out the bits that are to be compared. - * - * Example: - \code - uip_ipaddr_t ipaddr1, ipaddr2, mask; - - uip_ipaddr(&mask, 255,255,255,0); - uip_ipaddr(&ipaddr1, 192,16,1,2); - uip_ipaddr(&ipaddr2, 192,16,1,3); - if(uip_ipaddr_maskcmp(&ipaddr1, &ipaddr2, &mask)) { - printf("They are the same"); - } - \endcode - * - * \param addr1 The first IP address. - * \param addr2 The second IP address. - * \param mask The netmask. - * - * \hideinitializer - */ -#define uip_ipaddr_maskcmp(addr1, addr2, mask) \ - (((((u16_t *)addr1)[0] & ((u16_t *)mask)[0]) == \ - (((u16_t *)addr2)[0] & ((u16_t *)mask)[0])) && \ - ((((u16_t *)addr1)[1] & ((u16_t *)mask)[1]) == \ - (((u16_t *)addr2)[1] & ((u16_t *)mask)[1]))) - - -/** - * Mask out the network part of an IP address. - * - * Masks out the network part of an IP address, given the address and - * the netmask. - * - * Example: - \code - uip_ipaddr_t ipaddr1, ipaddr2, netmask; - - uip_ipaddr(&ipaddr1, 192,16,1,2); - uip_ipaddr(&netmask, 255,255,255,0); - uip_ipaddr_mask(&ipaddr2, &ipaddr1, &netmask); - \endcode - * - * In the example above, the variable "ipaddr2" will contain the IP - * address 192.168.1.0. - * - * \param dest Where the result is to be placed. - * \param src The IP address. - * \param mask The netmask. - * - * \hideinitializer - */ -#define uip_ipaddr_mask(dest, src, mask) do { \ - ((u16_t *)dest)[0] = ((u16_t *)src)[0] & ((u16_t *)mask)[0]; \ - ((u16_t *)dest)[1] = ((u16_t *)src)[1] & ((u16_t *)mask)[1]; \ - } while(0) - -/** - * Pick the first octet of an IP address. - * - * Picks out the first octet of an IP address. - * - * Example: - \code - uip_ipaddr_t ipaddr; - u8_t octet; - - uip_ipaddr(&ipaddr, 1,2,3,4); - octet = uip_ipaddr1(&ipaddr); - \endcode - * - * In the example above, the variable "octet" will contain the value 1. - * - * \hideinitializer - */ -#define uip_ipaddr1(addr) (htons(((u16_t *)(addr))[0]) >> 8) - -/** - * Pick the second octet of an IP address. - * - * Picks out the second octet of an IP address. - * - * Example: - \code - uip_ipaddr_t ipaddr; - u8_t octet; - - uip_ipaddr(&ipaddr, 1,2,3,4); - octet = uip_ipaddr2(&ipaddr); - \endcode - * - * In the example above, the variable "octet" will contain the value 2. - * - * \hideinitializer - */ -#define uip_ipaddr2(addr) (htons(((u16_t *)(addr))[0]) & 0xff) - -/** - * Pick the third octet of an IP address. - * - * Picks out the third octet of an IP address. - * - * Example: - \code - uip_ipaddr_t ipaddr; - u8_t octet; - - uip_ipaddr(&ipaddr, 1,2,3,4); - octet = uip_ipaddr3(&ipaddr); - \endcode - * - * In the example above, the variable "octet" will contain the value 3. - * - * \hideinitializer - */ -#define uip_ipaddr3(addr) (htons(((u16_t *)(addr))[1]) >> 8) - -/** - * Pick the fourth octet of an IP address. - * - * Picks out the fourth octet of an IP address. - * - * Example: - \code - uip_ipaddr_t ipaddr; - u8_t octet; - - uip_ipaddr(&ipaddr, 1,2,3,4); - octet = uip_ipaddr4(&ipaddr); - \endcode - * - * In the example above, the variable "octet" will contain the value 4. - * - * \hideinitializer - */ -#define uip_ipaddr4(addr) (htons(((u16_t *)(addr))[1]) & 0xff) - -/** - * Convert 16-bit quantity from host byte order to network byte order. - * - * This macro is primarily used for converting constants from host - * byte order to network byte order. For converting variables to - * network byte order, use the htons() function instead. - * - * \hideinitializer - */ -#ifndef HTONS -# if UIP_BYTE_ORDER == UIP_BIG_ENDIAN -# define HTONS(n) (n) -# else /* UIP_BYTE_ORDER == UIP_BIG_ENDIAN */ -# define HTONS(n) (u16_t)((((u16_t) (n)) << 8) | (((u16_t) (n)) >> 8)) -# endif /* UIP_BYTE_ORDER == UIP_BIG_ENDIAN */ -#else -#error "HTONS already defined!" -#endif /* HTONS */ - -/** - * Convert 16-bit quantity from host byte order to network byte order. - * - * This function is primarily used for converting variables from host - * byte order to network byte order. For converting constants to - * network byte order, use the HTONS() macro instead. - */ -#ifndef htons -u16_t htons(u16_t val); -#endif /* htons */ -#ifndef ntohs -#define ntohs htons -#endif - -/** @} */ - -/** - * Pointer to the application data in the packet buffer. - * - * This pointer points to the application data when the application is - * called. If the application wishes to send data, the application may - * use this space to write the data into before calling uip_send(). - */ -extern void *uip_appdata; - -#if UIP_URGDATA > 0 -/* u8_t *uip_urgdata: - * - * This pointer points to any urgent data that has been received. Only - * present if compiled with support for urgent data (UIP_URGDATA). - */ -extern void *uip_urgdata; -#endif /* UIP_URGDATA > 0 */ - - -/** - * \defgroup uipdrivervars Variables used in uIP device drivers - * @{ - * - * uIP has a few global variables that are used in device drivers for - * uIP. - */ - -/** - * The length of the packet in the uip_buf buffer. - * - * The global variable uip_len holds the length of the packet in the - * uip_buf buffer. - * - * When the network device driver calls the uIP input function, - * uip_len should be set to the length of the packet in the uip_buf - * buffer. - * - * When sending packets, the device driver should use the contents of - * the uip_len variable to determine the length of the outgoing - * packet. - * - */ -extern u16_t uip_len; - -/** @} */ - -#if UIP_URGDATA > 0 -extern u16_t uip_urglen, uip_surglen; -#endif /* UIP_URGDATA > 0 */ - - -/** - * Representation of a uIP TCP connection. - * - * The uip_conn structure is used for identifying a connection. All - * but one field in the structure are to be considered read-only by an - * application. The only exception is the appstate field whos purpose - * is to let the application store application-specific state (e.g., - * file pointers) for the connection. The type of this field is - * configured in the "uipopt.h" header file. - */ -struct uip_conn { - uip_ipaddr_t ripaddr; /**< The IP address of the remote host. */ - - u16_t lport; /**< The local TCP port, in network byte order. */ - u16_t rport; /**< The local remote TCP port, in network byte - order. */ - - u8_t rcv_nxt[4]; /**< The sequence number that we expect to - receive next. */ - u8_t snd_nxt[4]; /**< The sequence number that was last sent by - us. */ - u16_t len; /**< Length of the data that was previously sent. */ - u16_t mss; /**< Current maximum segment size for the - connection. */ - u16_t initialmss; /**< Initial maximum segment size for the - connection. */ - u8_t sa; /**< Retransmission time-out calculation state - variable. */ - u8_t sv; /**< Retransmission time-out calculation state - variable. */ - u8_t rto; /**< Retransmission time-out. */ - u8_t tcpstateflags; /**< TCP state and flags. */ - u8_t timer; /**< The retransmission timer. */ - u8_t nrtx; /**< The number of retransmissions for the last - segment sent. */ - - /** The application state. */ - uip_tcp_appstate_t appstate; -}; - - -/** - * Pointer to the current TCP connection. - * - * The uip_conn pointer can be used to access the current TCP - * connection. - */ -extern struct uip_conn *uip_conn; -/* The array containing all uIP connections. */ -extern struct uip_conn uip_conns[UIP_CONNS]; -/** - * \addtogroup uiparch - * @{ - */ - -/** - * 4-byte array used for the 32-bit sequence number calculations. - */ -extern u8_t uip_acc32[4]; - -/** @} */ - - -#if UIP_UDP -/** - * Representation of a uIP UDP connection. - */ -struct uip_udp_conn { - uip_ipaddr_t ripaddr; /**< The IP address of the remote peer. */ - u16_t lport; /**< The local port number in network byte order. */ - u16_t rport; /**< The remote port number in network byte order. */ - u8_t ttl; /**< Default time-to-live. */ - - /** The application state. */ - uip_udp_appstate_t appstate; -}; - -/** - * The current UDP connection. - */ -extern struct uip_udp_conn *uip_udp_conn; -extern struct uip_udp_conn uip_udp_conns[UIP_UDP_CONNS]; -#endif /* UIP_UDP */ - -/** - * The structure holding the TCP/IP statistics that are gathered if - * UIP_STATISTICS is set to 1. - * - */ -struct uip_stats { - struct { - uip_stats_t drop; /**< Number of dropped packets at the IP - layer. */ - uip_stats_t recv; /**< Number of received packets at the IP - layer. */ - uip_stats_t sent; /**< Number of sent packets at the IP - layer. */ - uip_stats_t vhlerr; /**< Number of packets dropped due to wrong - IP version or header length. */ - uip_stats_t hblenerr; /**< Number of packets dropped due to wrong - IP length, high byte. */ - uip_stats_t lblenerr; /**< Number of packets dropped due to wrong - IP length, low byte. */ - uip_stats_t fragerr; /**< Number of packets dropped since they - were IP fragments. */ - uip_stats_t chkerr; /**< Number of packets dropped due to IP - checksum errors. */ - uip_stats_t protoerr; /**< Number of packets dropped since they - were neither ICMP, UDP nor TCP. */ - } ip; /**< IP statistics. */ - struct { - uip_stats_t drop; /**< Number of dropped ICMP packets. */ - uip_stats_t recv; /**< Number of received ICMP packets. */ - uip_stats_t sent; /**< Number of sent ICMP packets. */ - uip_stats_t typeerr; /**< Number of ICMP packets with a wrong - type. */ - } icmp; /**< ICMP statistics. */ - struct { - uip_stats_t drop; /**< Number of dropped TCP segments. */ - uip_stats_t recv; /**< Number of recived TCP segments. */ - uip_stats_t sent; /**< Number of sent TCP segments. */ - uip_stats_t chkerr; /**< Number of TCP segments with a bad - checksum. */ - uip_stats_t ackerr; /**< Number of TCP segments with a bad ACK - number. */ - uip_stats_t rst; /**< Number of recevied TCP RST (reset) segments. */ - uip_stats_t rexmit; /**< Number of retransmitted TCP segments. */ - uip_stats_t syndrop; /**< Number of dropped SYNs due to too few - connections was avaliable. */ - uip_stats_t synrst; /**< Number of SYNs for closed ports, - triggering a RST. */ - } tcp; /**< TCP statistics. */ -#if UIP_UDP - struct { - uip_stats_t drop; /**< Number of dropped UDP segments. */ - uip_stats_t recv; /**< Number of recived UDP segments. */ - uip_stats_t sent; /**< Number of sent UDP segments. */ - uip_stats_t chkerr; /**< Number of UDP segments with a bad - checksum. */ - } udp; /**< UDP statistics. */ -#endif /* UIP_UDP */ -}; - -/** - * The uIP TCP/IP statistics. - * - * This is the variable in which the uIP TCP/IP statistics are gathered. - */ -extern struct uip_stats uip_stat; - - -/*---------------------------------------------------------------------------*/ -/* All the stuff below this point is internal to uIP and should not be - * used directly by an application or by a device driver. - */ -/*---------------------------------------------------------------------------*/ -/* u8_t uip_flags: - * - * When the application is called, uip_flags will contain the flags - * that are defined in this file. Please read below for more - * infomation. - */ -extern u8_t uip_flags; - -/* The following flags may be set in the global variable uip_flags - before calling the application callback. The UIP_ACKDATA, - UIP_NEWDATA, and UIP_CLOSE flags may both be set at the same time, - whereas the others are mutualy exclusive. Note that these flags - should *NOT* be accessed directly, but only through the uIP - functions/macros. */ - -#define UIP_ACKDATA 1 /* Signifies that the outstanding data was - acked and the application should send - out new data instead of retransmitting - the last data. */ -#define UIP_NEWDATA 2 /* Flags the fact that the peer has sent - us new data. */ -#define UIP_REXMIT 4 /* Tells the application to retransmit the - data that was last sent. */ -#define UIP_POLL 8 /* Used for polling the application, to - check if the application has data that - it wants to send. */ -#define UIP_CLOSE 16 /* The remote host has closed the - connection, thus the connection has - gone away. Or the application signals - that it wants to close the - connection. */ -#define UIP_ABORT 32 /* The remote host has aborted the - connection, thus the connection has - gone away. Or the application signals - that it wants to abort the - connection. */ -#define UIP_CONNECTED 64 /* We have got a connection from a remote - host and have set up a new connection - for it, or an active connection has - been successfully established. */ - -#define UIP_TIMEDOUT 128 /* The connection has been aborted due to - too many retransmissions. */ - -/* uip_process(flag): - * - * The actual uIP function which does all the work. - */ -void uip_process(u8_t flag); - -/* The following flags are passed as an argument to the uip_process() - function. They are used to distinguish between the two cases where - uip_process() is called. It can be called either because we have - incoming data that should be processed, or because the periodic - timer has fired. These values are never used directly, but only in - the macrose defined in this file. */ - -#define UIP_DATA 1 /* Tells uIP that there is incoming - data in the uip_buf buffer. The - length of the data is stored in the - global variable uip_len. */ -#define UIP_TIMER 2 /* Tells uIP that the periodic timer - has fired. */ -#define UIP_POLL_REQUEST 3 /* Tells uIP that a connection should - be polled. */ -#define UIP_UDP_SEND_CONN 4 /* Tells uIP that a UDP datagram - should be constructed in the - uip_buf buffer. */ -#if UIP_UDP -#define UIP_UDP_TIMER 5 -#endif /* UIP_UDP */ - -/* The TCP states used in the uip_conn->tcpstateflags. */ -#define UIP_CLOSED 0 -#define UIP_SYN_RCVD 1 -#define UIP_SYN_SENT 2 -#define UIP_ESTABLISHED 3 -#define UIP_FIN_WAIT_1 4 -#define UIP_FIN_WAIT_2 5 -#define UIP_CLOSING 6 -#define UIP_TIME_WAIT 7 -#define UIP_LAST_ACK 8 -#define UIP_TS_MASK 15 - -#define UIP_STOPPED 16 - -/* The TCP and IP headers. */ - -#ifdef __ICCARM__ - #pragma pack(1) -#endif - -struct uip_tcpip_hdr { -#if UIP_CONF_IPV6 - /* IPv6 header. */ - u8_t vtc, - tcflow; - u16_t flow; - u8_t len[2]; - u8_t proto, ttl; - uip_ip6addr_t srcipaddr, destipaddr; -#else /* UIP_CONF_IPV6 */ - /* IPv4 header. */ - u8_t vhl, - tos, - len[2], - ipid[2], - ipoffset[2], - ttl, - proto; - u16_t ipchksum; - u16_t srcipaddr[2], - destipaddr[2]; -#endif /* UIP_CONF_IPV6 */ - - /* TCP header. */ - u16_t srcport, - destport; - u8_t seqno[4], - ackno[4], - tcpoffset, - flags, - wnd[2]; - u16_t tcpchksum; - u8_t urgp[2]; - u8_t optdata[4]; -} PACK_STRUCT_END; - -#ifdef __ICCARM__ - #pragma pack() -#endif - -/* The ICMP and IP headers. */ -#ifdef __ICCARM__ - #pragma pack(1) -#endif - -struct uip_icmpip_hdr { -#if UIP_CONF_IPV6 - /* IPv6 header. */ - u8_t vtc, - tcf; - u16_t flow; - u8_t len[2]; - u8_t proto, ttl; - uip_ip6addr_t srcipaddr, destipaddr; -#else /* UIP_CONF_IPV6 */ - /* IPv4 header. */ - u8_t vhl, - tos, - len[2], - ipid[2], - ipoffset[2], - ttl, - proto; - u16_t ipchksum; - u16_t srcipaddr[2], - destipaddr[2]; -#endif /* UIP_CONF_IPV6 */ - - /* ICMP (echo) header. */ - u8_t type, icode; - u16_t icmpchksum; -#if !UIP_CONF_IPV6 - u16_t id, seqno; -#else /* !UIP_CONF_IPV6 */ - u8_t flags, reserved1, reserved2, reserved3; - u8_t icmp6data[16]; - u8_t options[1]; -#endif /* !UIP_CONF_IPV6 */ -} PACK_STRUCT_END; - -#ifdef __ICCARM__ - #pragma pack() -#endif - - -/* The UDP and IP headers. */ -#ifdef __ICCARM__ - #pragma pack(1) -#endif - -struct uip_udpip_hdr { -#if UIP_CONF_IPV6 - /* IPv6 header. */ - u8_t vtc, - tcf; - u16_t flow; - u8_t len[2]; - u8_t proto, ttl; - uip_ip6addr_t srcipaddr, destipaddr; -#else /* UIP_CONF_IPV6 */ - /* IP header. */ - u8_t vhl, - tos, - len[2], - ipid[2], - ipoffset[2], - ttl, - proto; - u16_t ipchksum; - u16_t srcipaddr[2], - destipaddr[2]; -#endif /* UIP_CONF_IPV6 */ - - /* UDP header. */ - u16_t srcport, - destport; - u16_t udplen; - u16_t udpchksum; -} PACK_STRUCT_END; - -#ifdef __ICCARM__ - #pragma pack() -#endif - - - -/** - * The buffer size available for user data in the \ref uip_buf buffer. - * - * This macro holds the available size for user data in the \ref - * uip_buf buffer. The macro is intended to be used for checking - * bounds of available user data. - * - * Example: - \code - snprintf(uip_appdata, UIP_APPDATA_SIZE, "%u\n", i); - \endcode - * - * \hideinitializer - */ -#define UIP_APPDATA_SIZE (UIP_BUFSIZE - UIP_LLH_LEN - UIP_TCPIP_HLEN) - - -#define UIP_PROTO_ICMP 1 -#define UIP_PROTO_TCP 6 -#define UIP_PROTO_UDP 17 -#define UIP_PROTO_ICMP6 58 - -/* Header sizes. */ -#if UIP_CONF_IPV6 -#define UIP_IPH_LEN 40 -#else /* UIP_CONF_IPV6 */ -#define UIP_IPH_LEN 20 /* Size of IP header */ -#endif /* UIP_CONF_IPV6 */ -#define UIP_UDPH_LEN 8 /* Size of UDP header */ -#define UIP_TCPH_LEN 20 /* Size of TCP header */ -#define UIP_IPUDPH_LEN (UIP_UDPH_LEN + UIP_IPH_LEN) /* Size of IP + - UDP - header */ -#define UIP_IPTCPH_LEN (UIP_TCPH_LEN + UIP_IPH_LEN) /* Size of IP + - TCP - header */ -#define UIP_TCPIP_HLEN UIP_IPTCPH_LEN - - -#if UIP_FIXEDADDR -extern const uip_ipaddr_t uip_hostaddr, uip_netmask, uip_draddr; -#else /* UIP_FIXEDADDR */ -extern uip_ipaddr_t uip_hostaddr, uip_netmask, uip_draddr; -#endif /* UIP_FIXEDADDR */ - - - -/** - * Representation of a 48-bit Ethernet address. - */ -#ifdef __ICCARM__ - #pragma pack(1) -#endif - -struct uip_eth_addr { - u8_t addr[6]; -} PACK_STRUCT_END; - -#ifdef __ICCARM__ - #pragma pack() -#endif - -/** - * Calculate the Internet checksum over a buffer. - * - * The Internet checksum is the one's complement of the one's - * complement sum of all 16-bit words in the buffer. - * - * See RFC1071. - * - * \param buf A pointer to the buffer over which the checksum is to be - * computed. - * - * \param len The length of the buffer over which the checksum is to - * be computed. - * - * \return The Internet checksum of the buffer. - */ -u16_t uip_chksum(u16_t *buf, u16_t len); - -/** - * Calculate the IP header checksum of the packet header in uip_buf. - * - * The IP header checksum is the Internet checksum of the 20 bytes of - * the IP header. - * - * \return The IP header checksum of the IP header in the uip_buf - * buffer. - */ -u16_t uip_ipchksum(void); - -/** - * Calculate the TCP checksum of the packet in uip_buf and uip_appdata. - * - * The TCP checksum is the Internet checksum of data contents of the - * TCP segment, and a pseudo-header as defined in RFC793. - * - * \return The TCP checksum of the TCP segment in uip_buf and pointed - * to by uip_appdata. - */ -u16_t uip_tcpchksum(void); - -/** - * Calculate the UDP checksum of the packet in uip_buf and uip_appdata. - * - * The UDP checksum is the Internet checksum of data contents of the - * UDP segment, and a pseudo-header as defined in RFC768. - * - * \return The UDP checksum of the UDP segment in uip_buf and pointed - * to by uip_appdata. - */ -u16_t uip_udpchksum(void); - - -#endif /* __UIP_H__ */ - - -/** @} */ diff --git a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/uip_arch.h b/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/uip_arch.h deleted file mode 100644 index 5ea45787c..000000000 --- a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/uip_arch.h +++ /dev/null @@ -1,138 +0,0 @@ -/** - * \addtogroup uip - * {@ - */ - -/** - * \defgroup uiparch Architecture specific uIP functions - * @{ - * - * The functions in the architecture specific module implement the IP - * check sum and 32-bit additions. - * - * The IP checksum calculation is the most computationally expensive - * operation in the TCP/IP stack and it therefore pays off to - * implement this in efficient assembler. The purpose of the uip-arch - * module is to let the checksum functions to be implemented in - * architecture specific assembler. - * - */ - -/** - * \file - * Declarations of architecture specific functions. - * \author Adam Dunkels - */ - -/* - * Copyright (c) 2001, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: uip_arch.h,v 1.2 2006/06/07 09:15:19 adam Exp $ - * - */ - -#ifndef __UIP_ARCH_H__ -#define __UIP_ARCH_H__ - -#include "uip.h" - -/** - * Carry out a 32-bit addition. - * - * Because not all architectures for which uIP is intended has native - * 32-bit arithmetic, uIP uses an external C function for doing the - * required 32-bit additions in the TCP protocol processing. This - * function should add the two arguments and place the result in the - * global variable uip_acc32. - * - * \note The 32-bit integer pointed to by the op32 parameter and the - * result in the uip_acc32 variable are in network byte order (big - * endian). - * - * \param op32 A pointer to a 4-byte array representing a 32-bit - * integer in network byte order (big endian). - * - * \param op16 A 16-bit integer in host byte order. - */ -void uip_add32(u8_t *op32, u16_t op16); - -/** - * Calculate the Internet checksum over a buffer. - * - * The Internet checksum is the one's complement of the one's - * complement sum of all 16-bit words in the buffer. - * - * See RFC1071. - * - * \note This function is not called in the current version of uIP, - * but future versions might make use of it. - * - * \param buf A pointer to the buffer over which the checksum is to be - * computed. - * - * \param len The length of the buffer over which the checksum is to - * be computed. - * - * \return The Internet checksum of the buffer. - */ -u16_t uip_chksum(u16_t *buf, u16_t len); - -/** - * Calculate the IP header checksum of the packet header in uip_buf. - * - * The IP header checksum is the Internet checksum of the 20 bytes of - * the IP header. - * - * \return The IP header checksum of the IP header in the uip_buf - * buffer. - */ -u16_t uip_ipchksum(void); - -/** - * Calculate the TCP checksum of the packet in uip_buf and uip_appdata. - * - * The TCP checksum is the Internet checksum of data contents of the - * TCP segment, and a pseudo-header as defined in RFC793. - * - * \note The uip_appdata pointer that points to the packet data may - * point anywhere in memory, so it is not possible to simply calculate - * the Internet checksum of the contents of the uip_buf buffer. - * - * \return The TCP checksum of the TCP segment in uip_buf and pointed - * to by uip_appdata. - */ -u16_t uip_tcpchksum(void); - -u16_t uip_udpchksum(void); - -/** @} */ -/** @} */ - -#endif /* __UIP_ARCH_H__ */ diff --git a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/uip_arp.c b/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/uip_arp.c deleted file mode 100644 index 44c7975fc..000000000 --- a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/uip_arp.c +++ /dev/null @@ -1,439 +0,0 @@ -/** - * \addtogroup uip - * @{ - */ - -/** - * \defgroup uiparp uIP Address Resolution Protocol - * @{ - * - * The Address Resolution Protocol ARP is used for mapping between IP - * addresses and link level addresses such as the Ethernet MAC - * addresses. ARP uses broadcast queries to ask for the link level - * address of a known IP address and the host which is configured with - * the IP address for which the query was meant, will respond with its - * link level address. - * - * \note This ARP implementation only supports Ethernet. - */ - -/** - * \file - * Implementation of the ARP Address Resolution Protocol. - * \author Adam Dunkels - * - */ - -/* - * Copyright (c) 2001-2003, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: uip_arp.c,v 1.8 2006/06/02 23:36:21 adam Exp $ - * - */ - - -#include "uip_arp.h" - -#include - -#ifdef __ICCARM__ - #pragma pack(1) -#endif - -struct arp_hdr { - struct uip_eth_hdr ethhdr; - u16_t hwtype; - u16_t protocol; - u8_t hwlen; - u8_t protolen; - u16_t opcode; - struct uip_eth_addr shwaddr; - u16_t sipaddr[2]; - struct uip_eth_addr dhwaddr; - u16_t dipaddr[2]; -} PACK_STRUCT_END; - -#ifdef __ICCARM__ - #pragma pack() -#endif - -#ifdef __ICCARM__ - #pragma pack(1) -#endif - -struct ethip_hdr { - struct uip_eth_hdr ethhdr; - /* IP header. */ - u8_t vhl, - tos, - len[2], - ipid[2], - ipoffset[2], - ttl, - proto; - u16_t ipchksum; - u16_t srcipaddr[2], - destipaddr[2]; -} PACK_STRUCT_END; - -#ifdef __ICCARM__ - #pragma pack() -#endif - -#define ARP_REQUEST 1 -#define ARP_REPLY 2 - -#define ARP_HWTYPE_ETH 1 - -struct arp_entry { - u16_t ipaddr[2]; - struct uip_eth_addr ethaddr; - u8_t time; -}; - -static const struct uip_eth_addr broadcast_ethaddr = - {{0xff,0xff,0xff,0xff,0xff,0xff}}; -static const u16_t broadcast_ipaddr[2] = {0xffff,0xffff}; - -static struct arp_entry arp_table[UIP_ARPTAB_SIZE]; -static u16_t ipaddr[2]; -static u8_t i, c; - -static u8_t arptime; -static u8_t tmpage; - -#define BUF ((struct arp_hdr *)&uip_buf[0]) -#define IPBUF ((struct ethip_hdr *)&uip_buf[0]) -/*-----------------------------------------------------------------------------------*/ -/** - * Initialize the ARP module. - * - */ -/*-----------------------------------------------------------------------------------*/ -void -uip_arp_init(void) -{ - for(i = 0; i < UIP_ARPTAB_SIZE; ++i) { - memset(arp_table[i].ipaddr, 0, 4); - } -} -/*-----------------------------------------------------------------------------------*/ -/** - * Periodic ARP processing function. - * - * This function performs periodic timer processing in the ARP module - * and should be called at regular intervals. The recommended interval - * is 10 seconds between the calls. - * - */ -/*-----------------------------------------------------------------------------------*/ -void -uip_arp_timer(void) -{ - struct arp_entry *tabptr; - - ++arptime; - for(i = 0; i < UIP_ARPTAB_SIZE; ++i) { - tabptr = &arp_table[i]; - if((tabptr->ipaddr[0] | tabptr->ipaddr[1]) != 0 && - arptime - tabptr->time >= UIP_ARP_MAXAGE) { - memset(tabptr->ipaddr, 0, 4); - } - } - -} -/*-----------------------------------------------------------------------------------*/ -static void -uip_arp_update(u16_t *ipaddr, struct uip_eth_addr *ethaddr) -{ - register struct arp_entry *tabptr; - /* Walk through the ARP mapping table and try to find an entry to - update. If none is found, the IP -> MAC address mapping is - inserted in the ARP table. */ - for(i = 0; i < UIP_ARPTAB_SIZE; ++i) { - - tabptr = &arp_table[i]; - /* Only check those entries that are actually in use. */ - if(tabptr->ipaddr[0] != 0 && - tabptr->ipaddr[1] != 0) { - - /* Check if the source IP address of the incoming packet matches - the IP address in this ARP table entry. */ - if(ipaddr[0] == tabptr->ipaddr[0] && - ipaddr[1] == tabptr->ipaddr[1]) { - - /* An old entry found, update this and return. */ - memcpy(tabptr->ethaddr.addr, ethaddr->addr, 6); - tabptr->time = arptime; - - return; - } - } - } - - /* If we get here, no existing ARP table entry was found, so we - create one. */ - - /* First, we try to find an unused entry in the ARP table. */ - for(i = 0; i < UIP_ARPTAB_SIZE; ++i) { - tabptr = &arp_table[i]; - if(tabptr->ipaddr[0] == 0 && - tabptr->ipaddr[1] == 0) { - break; - } - } - - /* If no unused entry is found, we try to find the oldest entry and - throw it away. */ - if(i == UIP_ARPTAB_SIZE) { - tmpage = 0; - c = 0; - for(i = 0; i < UIP_ARPTAB_SIZE; ++i) { - tabptr = &arp_table[i]; - if(arptime - tabptr->time > tmpage) { - tmpage = arptime - tabptr->time; - c = i; - } - } - i = c; - tabptr = &arp_table[i]; - } - - /* Now, i is the ARP table entry which we will fill with the new - information. */ - memcpy(tabptr->ipaddr, ipaddr, 4); - memcpy(tabptr->ethaddr.addr, ethaddr->addr, 6); - tabptr->time = arptime; -} -/*-----------------------------------------------------------------------------------*/ -/** - * ARP processing for incoming IP packets - * - * This function should be called by the device driver when an IP - * packet has been received. The function will check if the address is - * in the ARP cache, and if so the ARP cache entry will be - * refreshed. If no ARP cache entry was found, a new one is created. - * - * This function expects an IP packet with a prepended Ethernet header - * in the uip_buf[] buffer, and the length of the packet in the global - * variable uip_len. - */ -/*-----------------------------------------------------------------------------------*/ -#if 1 -void -uip_arp_ipin(void) -{ - uip_len -= sizeof(struct uip_eth_hdr); - - /* Only insert/update an entry if the source IP address of the - incoming IP packet comes from a host on the local network. */ - if((IPBUF->srcipaddr[0] & uip_netmask[0]) != - (uip_hostaddr[0] & uip_netmask[0])) { - return; - } - if((IPBUF->srcipaddr[1] & uip_netmask[1]) != - (uip_hostaddr[1] & uip_netmask[1])) { - return; - } - uip_arp_update(IPBUF->srcipaddr, &(IPBUF->ethhdr.src)); - - return; -} -#endif /* 0 */ -/*-----------------------------------------------------------------------------------*/ -/** - * ARP processing for incoming ARP packets. - * - * This function should be called by the device driver when an ARP - * packet has been received. The function will act differently - * depending on the ARP packet type: if it is a reply for a request - * that we previously sent out, the ARP cache will be filled in with - * the values from the ARP reply. If the incoming ARP packet is an ARP - * request for our IP address, an ARP reply packet is created and put - * into the uip_buf[] buffer. - * - * When the function returns, the value of the global variable uip_len - * indicates whether the device driver should send out a packet or - * not. If uip_len is zero, no packet should be sent. If uip_len is - * non-zero, it contains the length of the outbound packet that is - * present in the uip_buf[] buffer. - * - * This function expects an ARP packet with a prepended Ethernet - * header in the uip_buf[] buffer, and the length of the packet in the - * global variable uip_len. - */ -/*-----------------------------------------------------------------------------------*/ -void -uip_arp_arpin(void) -{ - - if(uip_len < sizeof(struct arp_hdr)) { - uip_len = 0; - return; - } - uip_len = 0; - - switch(BUF->opcode) { - case HTONS(ARP_REQUEST): - /* ARP request. If it asked for our address, we send out a - reply. */ - if(uip_ipaddr_cmp(BUF->dipaddr, uip_hostaddr)) { - /* First, we register the one who made the request in our ARP - table, since it is likely that we will do more communication - with this host in the future. */ - uip_arp_update(BUF->sipaddr, &BUF->shwaddr); - - /* The reply opcode is 2. */ - BUF->opcode = HTONS(2); - - memcpy(BUF->dhwaddr.addr, BUF->shwaddr.addr, 6); - memcpy(BUF->shwaddr.addr, uip_ethaddr.addr, 6); - memcpy(BUF->ethhdr.src.addr, uip_ethaddr.addr, 6); - memcpy(BUF->ethhdr.dest.addr, BUF->dhwaddr.addr, 6); - - BUF->dipaddr[0] = BUF->sipaddr[0]; - BUF->dipaddr[1] = BUF->sipaddr[1]; - BUF->sipaddr[0] = uip_hostaddr[0]; - BUF->sipaddr[1] = uip_hostaddr[1]; - - BUF->ethhdr.type = HTONS(UIP_ETHTYPE_ARP); - uip_len = sizeof(struct arp_hdr); - } - break; - case HTONS(ARP_REPLY): - /* ARP reply. We insert or update the ARP table if it was meant - for us. */ - if(uip_ipaddr_cmp(BUF->dipaddr, uip_hostaddr)) { - uip_arp_update(BUF->sipaddr, &BUF->shwaddr); - } - break; - } - - return; -} -/*-----------------------------------------------------------------------------------*/ -/** - * Prepend Ethernet header to an outbound IP packet and see if we need - * to send out an ARP request. - * - * This function should be called before sending out an IP packet. The - * function checks the destination IP address of the IP packet to see - * what Ethernet MAC address that should be used as a destination MAC - * address on the Ethernet. - * - * If the destination IP address is in the local network (determined - * by logical ANDing of netmask and our IP address), the function - * checks the ARP cache to see if an entry for the destination IP - * address is found. If so, an Ethernet header is prepended and the - * function returns. If no ARP cache entry is found for the - * destination IP address, the packet in the uip_buf[] is replaced by - * an ARP request packet for the IP address. The IP packet is dropped - * and it is assumed that they higher level protocols (e.g., TCP) - * eventually will retransmit the dropped packet. - * - * If the destination IP address is not on the local network, the IP - * address of the default router is used instead. - * - * When the function returns, a packet is present in the uip_buf[] - * buffer, and the length of the packet is in the global variable - * uip_len. - */ -/*-----------------------------------------------------------------------------------*/ -void -uip_arp_out(void) -{ - struct arp_entry *tabptr; - - /* Find the destination IP address in the ARP table and construct - the Ethernet header. If the destination IP addres isn't on the - local network, we use the default router's IP address instead. - - If not ARP table entry is found, we overwrite the original IP - packet with an ARP request for the IP address. */ - - /* First check if destination is a local broadcast. */ - if(uip_ipaddr_cmp(IPBUF->destipaddr, broadcast_ipaddr)) { - memcpy(IPBUF->ethhdr.dest.addr, broadcast_ethaddr.addr, 6); - } else { - /* Check if the destination address is on the local network. */ - if(!uip_ipaddr_maskcmp(IPBUF->destipaddr, uip_hostaddr, uip_netmask)) { - /* Destination address was not on the local network, so we need to - use the default router's IP address instead of the destination - address when determining the MAC address. */ - uip_ipaddr_copy(ipaddr, uip_draddr); - } else { - /* Else, we use the destination IP address. */ - uip_ipaddr_copy(ipaddr, IPBUF->destipaddr); - } - - for(i = 0; i < UIP_ARPTAB_SIZE; ++i) { - tabptr = &arp_table[i]; - if(uip_ipaddr_cmp(ipaddr, tabptr->ipaddr)) { - break; - } - } - - if(i == UIP_ARPTAB_SIZE) { - /* The destination address was not in our ARP table, so we - overwrite the IP packet with an ARP request. */ - - memset(BUF->ethhdr.dest.addr, 0xff, 6); - memset(BUF->dhwaddr.addr, 0x00, 6); - memcpy(BUF->ethhdr.src.addr, uip_ethaddr.addr, 6); - memcpy(BUF->shwaddr.addr, uip_ethaddr.addr, 6); - - uip_ipaddr_copy(BUF->dipaddr, ipaddr); - uip_ipaddr_copy(BUF->sipaddr, uip_hostaddr); - BUF->opcode = HTONS(ARP_REQUEST); /* ARP request. */ - BUF->hwtype = HTONS(ARP_HWTYPE_ETH); - BUF->protocol = HTONS(UIP_ETHTYPE_IP); - BUF->hwlen = 6; - BUF->protolen = 4; - BUF->ethhdr.type = HTONS(UIP_ETHTYPE_ARP); - - uip_appdata = &uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN]; - - uip_len = sizeof(struct arp_hdr); - return; - } - - /* Build an ethernet header. */ - memcpy(IPBUF->ethhdr.dest.addr, tabptr->ethaddr.addr, 6); - } - memcpy(IPBUF->ethhdr.src.addr, uip_ethaddr.addr, 6); - - IPBUF->ethhdr.type = HTONS(UIP_ETHTYPE_IP); - - uip_len += sizeof(struct uip_eth_hdr); -} -/*-----------------------------------------------------------------------------------*/ - -/** @} */ -/** @} */ diff --git a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/uip_arp.h b/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/uip_arp.h deleted file mode 100644 index b6b2b66b4..000000000 --- a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/uip_arp.h +++ /dev/null @@ -1,152 +0,0 @@ -/** - * \addtogroup uip - * @{ - */ - -/** - * \addtogroup uiparp - * @{ - */ - -/** - * \file - * Macros and definitions for the ARP module. - * \author Adam Dunkels - */ - - -/* - * Copyright (c) 2001-2003, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: uip_arp.h,v 1.5 2006/06/11 21:46:39 adam Exp $ - * - */ - -#ifndef __UIP_ARP_H__ -#define __UIP_ARP_H__ - -#include "uip.h" - - -extern struct uip_eth_addr uip_ethaddr; - -/** - * The Ethernet header. - */ -#ifdef __ICCARM__ - #pragma pack(1) -#endif - -struct uip_eth_hdr { - struct uip_eth_addr dest; - struct uip_eth_addr src; - u16_t type; -}PACK_STRUCT_END; - -#ifdef __ICCARM__ - #pragma pack() -#endif - -#define UIP_ETHTYPE_ARP 0x0806 -#define UIP_ETHTYPE_IP 0x0800 -#define UIP_ETHTYPE_IP6 0x86dd - - -/* The uip_arp_init() function must be called before any of the other - ARP functions. */ -void uip_arp_init(void); - -/* The uip_arp_ipin() function should be called whenever an IP packet - arrives from the Ethernet. This function refreshes the ARP table or - inserts a new mapping if none exists. The function assumes that an - IP packet with an Ethernet header is present in the uip_buf buffer - and that the length of the packet is in the uip_len variable. */ -void uip_arp_ipin(void); -//#define uip_arp_ipin() - -/* The uip_arp_arpin() should be called when an ARP packet is received - by the Ethernet driver. This function also assumes that the - Ethernet frame is present in the uip_buf buffer. When the - uip_arp_arpin() function returns, the contents of the uip_buf - buffer should be sent out on the Ethernet if the uip_len variable - is > 0. */ -void uip_arp_arpin(void); - -/* The uip_arp_out() function should be called when an IP packet - should be sent out on the Ethernet. This function creates an - Ethernet header before the IP header in the uip_buf buffer. The - Ethernet header will have the correct Ethernet MAC destination - address filled in if an ARP table entry for the destination IP - address (or the IP address of the default router) is present. If no - such table entry is found, the IP packet is overwritten with an ARP - request and we rely on TCP to retransmit the packet that was - overwritten. In any case, the uip_len variable holds the length of - the Ethernet frame that should be transmitted. */ -void uip_arp_out(void); - -/* The uip_arp_timer() function should be called every ten seconds. It - is responsible for flushing old entries in the ARP table. */ -void uip_arp_timer(void); - -/** @} */ - -/** - * \addtogroup uipconffunc - * @{ - */ - - -/** - * Specifiy the Ethernet MAC address. - * - * The ARP code needs to know the MAC address of the Ethernet card in - * order to be able to respond to ARP queries and to generate working - * Ethernet headers. - * - * \note This macro only specifies the Ethernet MAC address to the ARP - * code. It cannot be used to change the MAC address of the Ethernet - * card. - * - * \param eaddr A pointer to a struct uip_eth_addr containing the - * Ethernet MAC address of the Ethernet card. - * - * \hideinitializer - */ -#define uip_setethaddr(eaddr) do {uip_ethaddr.addr[0] = eaddr.addr[0]; \ - uip_ethaddr.addr[1] = eaddr.addr[1];\ - uip_ethaddr.addr[2] = eaddr.addr[2];\ - uip_ethaddr.addr[3] = eaddr.addr[3];\ - uip_ethaddr.addr[4] = eaddr.addr[4];\ - uip_ethaddr.addr[5] = eaddr.addr[5];} while(0) - -/** @} */ -/** @} */ - -#endif /* __UIP_ARP_H__ */ diff --git a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/uiplib.c b/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/uiplib.c deleted file mode 100644 index 647b0b270..000000000 --- a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/uiplib.c +++ /dev/null @@ -1,74 +0,0 @@ -/* - * Copyright (c) 2004, Adam Dunkels and the Swedish Institute of - * Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: uiplib.c,v 1.2 2006/06/12 08:00:31 adam Exp $ - * - */ - - -#include "uip.h" -#include "uiplib.h" - - -/*-----------------------------------------------------------------------------------*/ -unsigned char -uiplib_ipaddrconv(char *addrstr, unsigned char *ipaddr) -{ - unsigned char tmp; - char c; - unsigned char i, j; - - tmp = 0; - - for(i = 0; i < 4; ++i) { - j = 0; - do { - c = *addrstr; - ++j; - if(j > 4) { - return 0; - } - if(c == '.' || c == 0) { - *ipaddr = tmp; - ++ipaddr; - tmp = 0; - } else if(c >= '0' && c <= '9') { - tmp = (tmp * 10) + (c - '0'); - } else { - return 0; - } - ++addrstr; - } while(c != '.' && c != 0); - } - return 1; -} - -/*-----------------------------------------------------------------------------------*/ diff --git a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/uiplib.h b/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/uiplib.h deleted file mode 100644 index 6eb0c66f5..000000000 --- a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/uiplib.h +++ /dev/null @@ -1,71 +0,0 @@ -/** - * \file - * Various uIP library functions. - * \author - * Adam Dunkels - * - */ - -/* - * Copyright (c) 2002, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials provided - * with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: uiplib.h,v 1.1 2006/06/07 09:15:19 adam Exp $ - * - */ -#ifndef __UIPLIB_H__ -#define __UIPLIB_H__ - -/** - * \addtogroup uipconvfunc - * @{ - */ - -/** - * Convert a textual representation of an IP address to a numerical representation. - * - * This function takes a textual representation of an IP address in - * the form a.b.c.d and converts it into a 4-byte array that can be - * used by other uIP functions. - * - * \param addrstr A pointer to a string containing the IP address in - * textual form. - * - * \param addr A pointer to a 4-byte array that will be filled in with - * the numerical representation of the address. - * - * \retval 0 If the IP address could not be parsed. - * \retval Non-zero If the IP address was parsed. - */ -unsigned char uiplib_ipaddrconv(char *addrstr, unsigned char *addr); - -/** @} */ - -#endif /* __UIPLIB_H__ */ diff --git a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/uipopt.h b/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/uipopt.h deleted file mode 100644 index f7c3e0f80..000000000 --- a/FreeRTOS/Demo/Common/ethernet/uIP/uip-1.0/uip/uipopt.h +++ /dev/null @@ -1,539 +0,0 @@ -/** - * \defgroup uipopt Configuration options for uIP - * @{ - * - * uIP is configured using the per-project configuration file - * uipopt.h. This file contains all compile-time options for uIP and - * should be tweaked to match each specific project. The uIP - * distribution contains a documented example "uipopt.h" that can be - * copied and modified for each project. - * - * \note Most of the configuration options in the uipopt.h should not - * be changed, but rather the per-project uip-conf.h file. - */ - -/** - * \file - * Configuration options for uIP. - * \author Adam Dunkels - * - * This file is used for tweaking various configuration options for - * uIP. You should make a copy of this file into one of your project's - * directories instead of editing this example "uipopt.h" file that - * comes with the uIP distribution. - */ - -/* - * Copyright (c) 2001-2003, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: uipopt.h,v 1.4 2006/06/12 08:00:31 adam Exp $ - * - */ - -#ifndef __UIPOPT_H__ -#define __UIPOPT_H__ - -#ifndef UIP_LITTLE_ENDIAN -#define UIP_LITTLE_ENDIAN 3412 -#endif /* UIP_LITTLE_ENDIAN */ -#ifndef UIP_BIG_ENDIAN -#define UIP_BIG_ENDIAN 1234 -#endif /* UIP_BIG_ENDIAN */ - -#include "uip-conf.h" - -/*------------------------------------------------------------------------------*/ - -/** - * \name Static configuration options - * @{ - * - * These configuration options can be used for setting the IP address - * settings statically, but only if UIP_FIXEDADDR is set to 1. The - * configuration options for a specific node includes IP address, - * netmask and default router as well as the Ethernet address. The - * netmask, default router and Ethernet address are appliciable only - * if uIP should be run over Ethernet. - * - * All of these should be changed to suit your project. -*/ - -/** - * Determines if uIP should use a fixed IP address or not. - * - * If uIP should use a fixed IP address, the settings are set in the - * uipopt.h file. If not, the macros uip_sethostaddr(), - * uip_setdraddr() and uip_setnetmask() should be used instead. - * - * \hideinitializer - */ -#define UIP_FIXEDADDR 0 - -/** - * Ping IP address asignment. - * - * uIP uses a "ping" packets for setting its own IP address if this - * option is set. If so, uIP will start with an empty IP address and - * the destination IP address of the first incoming "ping" (ICMP echo) - * packet will be used for setting the hosts IP address. - * - * \note This works only if UIP_FIXEDADDR is 0. - * - * \hideinitializer - */ -#ifdef UIP_CONF_PINGADDRCONF -#define UIP_PINGADDRCONF UIP_CONF_PINGADDRCONF -#else /* UIP_CONF_PINGADDRCONF */ -#define UIP_PINGADDRCONF 0 -#endif /* UIP_CONF_PINGADDRCONF */ - - -/** - * Specifies if the uIP ARP module should be compiled with a fixed - * Ethernet MAC address or not. - * - * If this configuration option is 0, the macro uip_setethaddr() can - * be used to specify the Ethernet address at run-time. - * - * \hideinitializer - */ -#define UIP_FIXEDETHADDR 0 - -/** @} */ -/*------------------------------------------------------------------------------*/ -/** - * \name IP configuration options - * @{ - * - */ -/** - * The IP TTL (time to live) of IP packets sent by uIP. - * - * This should normally not be changed. - */ -#define UIP_TTL 64 - -/** - * Turn on support for IP packet reassembly. - * - * uIP supports reassembly of fragmented IP packets. This features - * requires an additonal amount of RAM to hold the reassembly buffer - * and the reassembly code size is approximately 700 bytes. The - * reassembly buffer is of the same size as the uip_buf buffer - * (configured by UIP_BUFSIZE). - * - * \note IP packet reassembly is not heavily tested. - * - * \hideinitializer - */ -#define UIP_REASSEMBLY 0 - -/** - * The maximum time an IP fragment should wait in the reassembly - * buffer before it is dropped. - * - */ -#define UIP_REASS_MAXAGE 40 - -/** @} */ - -/*------------------------------------------------------------------------------*/ -/** - * \name UDP configuration options - * @{ - */ - -/** - * Toggles wether UDP support should be compiled in or not. - * - * \hideinitializer - */ -#ifdef UIP_CONF_UDP -#define UIP_UDP UIP_CONF_UDP -#else /* UIP_CONF_UDP */ -#define UIP_UDP 0 -#endif /* UIP_CONF_UDP */ - -/** - * Toggles if UDP checksums should be used or not. - * - * \note Support for UDP checksums is currently not included in uIP, - * so this option has no function. - * - * \hideinitializer - */ -#ifdef UIP_CONF_UDP_CHECKSUMS -#define UIP_UDP_CHECKSUMS UIP_CONF_UDP_CHECKSUMS -#else -#define UIP_UDP_CHECKSUMS 0 -#endif - -/** - * The maximum amount of concurrent UDP connections. - * - * \hideinitializer - */ -#ifdef UIP_CONF_UDP_CONNS -#define UIP_UDP_CONNS UIP_CONF_UDP_CONNS -#else /* UIP_CONF_UDP_CONNS */ -#define UIP_UDP_CONNS 10 -#endif /* UIP_CONF_UDP_CONNS */ - -/** - * The name of the function that should be called when UDP datagrams arrive. - * - * \hideinitializer - */ - - -/** @} */ -/*------------------------------------------------------------------------------*/ -/** - * \name TCP configuration options - * @{ - */ - -/** - * Determines if support for opening connections from uIP should be - * compiled in. - * - * If the applications that are running on top of uIP for this project - * do not need to open outgoing TCP connections, this configration - * option can be turned off to reduce the code size of uIP. - * - * \hideinitializer - */ -#define UIP_ACTIVE_OPEN 1 - -/** - * The maximum number of simultaneously open TCP connections. - * - * Since the TCP connections are statically allocated, turning this - * configuration knob down results in less RAM used. Each TCP - * connection requires approximatly 30 bytes of memory. - * - * \hideinitializer - */ -#ifndef UIP_CONF_MAX_CONNECTIONS -#define UIP_CONNS 10 -#else /* UIP_CONF_MAX_CONNECTIONS */ -#define UIP_CONNS UIP_CONF_MAX_CONNECTIONS -#endif /* UIP_CONF_MAX_CONNECTIONS */ - - -/** - * The maximum number of simultaneously listening TCP ports. - * - * Each listening TCP port requires 2 bytes of memory. - * - * \hideinitializer - */ -#ifndef UIP_CONF_MAX_LISTENPORTS -#define UIP_LISTENPORTS 20 -#else /* UIP_CONF_MAX_LISTENPORTS */ -#define UIP_LISTENPORTS UIP_CONF_MAX_LISTENPORTS -#endif /* UIP_CONF_MAX_LISTENPORTS */ - -/** - * Determines if support for TCP urgent data notification should be - * compiled in. - * - * Urgent data (out-of-band data) is a rarely used TCP feature that - * very seldom would be required. - * - * \hideinitializer - */ -#define UIP_URGDATA 0 - -/** - * The initial retransmission timeout counted in timer pulses. - * - * This should not be changed. - */ -#define UIP_RTO 3 - -/** - * The maximum number of times a segment should be retransmitted - * before the connection should be aborted. - * - * This should not be changed. - */ -#define UIP_MAXRTX 8 - -/** - * The maximum number of times a SYN segment should be retransmitted - * before a connection request should be deemed to have been - * unsuccessful. - * - * This should not need to be changed. - */ -#define UIP_MAXSYNRTX 5 - -/** - * The TCP maximum segment size. - * - * This is should not be to set to more than - * UIP_BUFSIZE - UIP_LLH_LEN - UIP_TCPIP_HLEN. - */ -#define UIP_TCP_MSS (UIP_BUFSIZE - UIP_LLH_LEN - UIP_TCPIP_HLEN) - -/** - * The size of the advertised receiver's window. - * - * Should be set low (i.e., to the size of the uip_buf buffer) is the - * application is slow to process incoming data, or high (32768 bytes) - * if the application processes data quickly. - * - * \hideinitializer - */ -#ifndef UIP_CONF_RECEIVE_WINDOW -#define UIP_RECEIVE_WINDOW UIP_TCP_MSS -#else -#define UIP_RECEIVE_WINDOW UIP_CONF_RECEIVE_WINDOW -#endif - -/** - * How long a connection should stay in the TIME_WAIT state. - * - * This configiration option has no real implication, and it should be - * left untouched. - */ -#define UIP_TIME_WAIT_TIMEOUT 120 - - -/** @} */ -/*------------------------------------------------------------------------------*/ -/** - * \name ARP configuration options - * @{ - */ - -/** - * The size of the ARP table. - * - * This option should be set to a larger value if this uIP node will - * have many connections from the local network. - * - * \hideinitializer - */ -#ifdef UIP_CONF_ARPTAB_SIZE -#define UIP_ARPTAB_SIZE UIP_CONF_ARPTAB_SIZE -#else -#define UIP_ARPTAB_SIZE 8 -#endif - -/** - * The maxium age of ARP table entries measured in 10ths of seconds. - * - * An UIP_ARP_MAXAGE of 120 corresponds to 20 minutes (BSD - * default). - */ -#define UIP_ARP_MAXAGE 120 - -/** @} */ - -/*------------------------------------------------------------------------------*/ - -/** - * \name General configuration options - * @{ - */ - -/** - * The size of the uIP packet buffer. - * - * The uIP packet buffer should not be smaller than 60 bytes, and does - * not need to be larger than 1500 bytes. Lower size results in lower - * TCP throughput, larger size results in higher TCP throughput. - * - * \hideinitializer - */ -#ifndef UIP_CONF_BUFFER_SIZE -#define UIP_BUFSIZE 1500 -#else /* UIP_CONF_BUFFER_SIZE */ -#define UIP_BUFSIZE UIP_CONF_BUFFER_SIZE -#endif /* UIP_CONF_BUFFER_SIZE */ - - -/** - * Determines if statistics support should be compiled in. - * - * The statistics is useful for debugging and to show the user. - * - * \hideinitializer - */ -#ifndef UIP_CONF_STATISTICS -#define UIP_STATISTICS 0 -#else /* UIP_CONF_STATISTICS */ -#define UIP_STATISTICS UIP_CONF_STATISTICS -#endif /* UIP_CONF_STATISTICS */ - -/** - * Determines if logging of certain events should be compiled in. - * - * This is useful mostly for debugging. The function uip_log() - * must be implemented to suit the architecture of the project, if - * logging is turned on. - * - * \hideinitializer - */ -#ifndef UIP_CONF_LOGGING -#define UIP_LOGGING 0 -#else /* UIP_CONF_LOGGING */ -#define UIP_LOGGING UIP_CONF_LOGGING -#endif /* UIP_CONF_LOGGING */ - -/** - * Broadcast support. - * - * This flag configures IP broadcast support. This is useful only - * together with UDP. - * - * \hideinitializer - * - */ -#ifndef UIP_CONF_BROADCAST -#define UIP_BROADCAST 0 -#else /* UIP_CONF_BROADCAST */ -#define UIP_BROADCAST UIP_CONF_BROADCAST -#endif /* UIP_CONF_BROADCAST */ - -/** - * Print out a uIP log message. - * - * This function must be implemented by the module that uses uIP, and - * is called by uIP whenever a log message is generated. - */ -void uip_log(char *msg); - -/** - * The link level header length. - * - * This is the offset into the uip_buf where the IP header can be - * found. For Ethernet, this should be set to 14. For SLIP, this - * should be set to 0. - * - * \hideinitializer - */ -#ifdef UIP_CONF_LLH_LEN -#define UIP_LLH_LEN UIP_CONF_LLH_LEN -#else /* UIP_CONF_LLH_LEN */ -#define UIP_LLH_LEN 14 -#endif /* UIP_CONF_LLH_LEN */ - -/** @} */ -/*------------------------------------------------------------------------------*/ -/** - * \name CPU architecture configuration - * @{ - * - * The CPU architecture configuration is where the endianess of the - * CPU on which uIP is to be run is specified. Most CPUs today are - * little endian, and the most notable exception are the Motorolas - * which are big endian. The BYTE_ORDER macro should be changed to - * reflect the CPU architecture on which uIP is to be run. - */ - -/** - * The byte order of the CPU architecture on which uIP is to be run. - * - * This option can be either BIG_ENDIAN (Motorola byte order) or - * LITTLE_ENDIAN (Intel byte order). - * - * \hideinitializer - */ -#ifdef UIP_CONF_BYTE_ORDER -#define UIP_BYTE_ORDER UIP_CONF_BYTE_ORDER -#else /* UIP_CONF_BYTE_ORDER */ -#define UIP_BYTE_ORDER UIP_LITTLE_ENDIAN -#endif /* UIP_CONF_BYTE_ORDER */ - -/** @} */ -/*------------------------------------------------------------------------------*/ - -/** - * \name Appication specific configurations - * @{ - * - * An uIP application is implemented using a single application - * function that is called by uIP whenever a TCP/IP event occurs. The - * name of this function must be registered with uIP at compile time - * using the UIP_APPCALL definition. - * - * uIP applications can store the application state within the - * uip_conn structure by specifying the type of the application - * structure by typedef:ing the type uip_tcp_appstate_t and uip_udp_appstate_t. - * - * The file containing the definitions must be included in the - * uipopt.h file. - * - * The following example illustrates how this can look. - \code - -void httpd_appcall(void); -#define UIP_APPCALL httpd_appcall - -struct httpd_state { - u8_t state; - u16_t count; - char *dataptr; - char *script; -}; -typedef struct httpd_state uip_tcp_appstate_t - \endcode - */ - -/** - * \var #define UIP_APPCALL - * - * The name of the application function that uIP should call in - * response to TCP/IP events. - * - */ - -/** - * \var typedef uip_tcp_appstate_t - * - * The type of the application state that is to be stored in the - * uip_conn structure. This usually is typedef:ed to a struct holding - * application state information. - */ - -/** - * \var typedef uip_udp_appstate_t - * - * The type of the application state that is to be stored in the - * uip_conn structure. This usually is typedef:ed to a struct holding - * application state information. - */ -/** @} */ -/** @} */ - -#endif /* __UIPOPT_H__ */ diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/DefaultSession.hsf b/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/DefaultSession.hsf deleted file mode 100644 index 6de54b590..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/DefaultSession.hsf +++ /dev/null @@ -1,965 +0,0 @@ -[HIMDBVersion] -2.0 -[DATABASE_VERSION] -"2.3" -[SESSION_DETAILS] -"" -[INFORMATION] -"" -[GENERAL_DATA] -"FIRST_CONNECTION_TAG" "NO" -"MRULABELS_DATAMANAGER_KEY" "FFFFFFFF|00000000|fff83a05|103c|1710|14cc" -"RESET_CPU_AFTER_DOWNLOAD_TAG" "VARIANT_TRUE_STORE_TAG" -"{0AF60212-1285-4767-AB8A-73DB62CC8DBD}R_ECXOS_0ECXOS_OBJECT01" " " -"{0AF60212-1285-4767-AB8A-73DB62CC8DBD}R_ECXOS_0ECXOS_OBJECT02" " " -"{0AF60212-1285-4767-AB8A-73DB62CC8DBD}R_ECXOS_0ECXOS_OBJECT03" " " -"{0AF60212-1285-4767-AB8A-73DB62CC8DBD}R_ECXOS_0ECXOS_OBJECT04" " " -"{0AF60212-1285-4767-AB8A-73DB62CC8DBD}R_ECXOS_0ECXOS_OBJECT05" " " -"{0AF60212-1285-4767-AB8A-73DB62CC8DBD}R_ECXOS_0ECXOS_OBJECT06" " " -"{0AF60212-1285-4767-AB8A-73DB62CC8DBD}R_ECXOS_0ECXOS_OBJECT07" " " -"{0AF60212-1285-4767-AB8A-73DB62CC8DBD}R_ECXOS_0ECXOS_OBJECT08" " " -"{0AF60212-1285-4767-AB8A-73DB62CC8DBD}R_ECXOS_0ECXOS_OBJECT09" " " -"{0AF60212-1285-4767-AB8A-73DB62CC8DBD}R_ECXOS_0ECXOS_OBJECT10" " " -"{0AF60212-1285-4767-AB8A-73DB62CC8DBD}R_ECXOS_0ECXOS_OBJECT_DEFINE_FILE" "" -"{0AF60212-1285-4767-AB8A-73DB62CC8DBD}R_ECXOS_0ECXOS_OBJECT_DEFINE_SELETCT" "1" -"{0AF60212-1285-4767-AB8A-73DB62CC8DBD}R_ECXOS_0ECXOS_OBJECT_MODIFIED" "1" -"{0AF60212-1285-4767-AB8A-73DB62CC8DBD}R_ECXOS_0ECXOS_OBJECT_NOREAD_OSOBJECT" "0" -"{0AF60212-1285-4767-AB8A-73DB62CC8DBD}R_ECXOS_0ECXOS_OBJECT_SAMPLING_PERIOD" "100" -"{228DB593-0AB2-4EBE-A098-A2CABF094E46}RamMonitorCtrlViews" "0" -"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapCtrlECX_MAP_FIND_SYMBOL_LIST" "" -"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapCtrlViews" "0" -"{2BA6A3EE-6488-11D5-80D4-00C04F68EAD7}ECXLABEL_ADDDLG_ADDR" "" -"{2BA6A3EE-6488-11D5-80D4-00C04F68EAD7}LabelCtrlSymbolFileDir" "" -"{2BA6A3EE-6488-11D5-80D4-00C04F68EAD7}LabelCtrlSymbolFileName" "" -"{2BA6A3EE-6488-11D5-80D4-00C04F68EAD7}LabelCtrlViews" "0" -"{2BA6A3EF-6488-11D5-80D4-00C04F68EAD7}StatusCtrlViews" "0" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlBatchFileName" "" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlBreakpointFlag" "-1 " -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlBreakpointStatus" "-1 " -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlBrowseDirectory" "" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlLogFileName" "" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlSplitterPosition" "242" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlViews" "1" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlWindowProperties" "17" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineWndInstanceKey0" "{WK_00000001_CmdLine}" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}TclTkCtrlLogFileName" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_COMPARE_END_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_COMPARE_START_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_DISPLAY_DEST_ADDRESS" "103c" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_DISPLAY_END_ADDRESS" "FFFFFFFF" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_DISPLAY_START_ADDRESS" "00000000" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_FILL_END_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_FILL_START_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_MOVE_END_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_MOVE_START_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_SEARCH_END_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_SEARCH_START_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_SET_DEST_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_TEST_END_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_TEST_START_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryCtrlViews" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0AutoRefreshEnableTopPane" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0AutoRefreshIntervalTopPane" "100" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0DataLength" "4" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0DispAddressTopPane" "5904" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0DispCode" "42208" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0DispColumnCount" "4" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0IsDispCode" "1" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0IsDispFloat" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0IsDispLabel" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0IsDispRegister" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0IsRegFollowEnableTopPane" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0LabelWidth" "96" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0Radix" "16" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0RegFollowRegTblIDTopPane" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0RegisterWidth" "96" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0ScrollEndAddress" "-1" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0ScrollStartAddress" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0StartUpSymbolTopPane" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewAInstanceKey0" "{WK_00000001_MEMORY}RTOSDemoDefaultSession" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0AutoRefreshEnableTopPane" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0AutoRefreshIntervalTopPane" "100" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0DataLength" "4" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0DispAddressTopPane" "5324" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0DispCode" "42208" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0DispColumnCount" "4" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0IsDispCode" "1" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0IsDispFloat" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0IsDispLabel" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0IsDispRegister" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0IsRegFollowEnableTopPane" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0LabelWidth" "96" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0Radix" "16" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0RegFollowRegTblIDTopPane" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0RegisterWidth" "96" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0ScrollEndAddress" "-1" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0ScrollStartAddress" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0StartUpSymbolTopPane" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewBInstanceKey0" "{WK_00000001_MEMORY}RTOSDemoDefaultSessionViewB" -"{4F025ABC-BE66-4CB6-9CEE-06C61418278E}Trace2CtrlSaveFileDir" "" -"{4F025ABC-BE66-4CB6-9CEE-06C61418278E}Trace2CtrlSaveFileName" "" -"{4F025ABC-BE66-4CB6-9CEE-06C61418278E}Trace2CtrlViews" "0" -"{5F75FDA0-6FF0-11D5-B7CE-00E029352378}PACtrlSaveFileDir" "" -"{5F75FDA0-6FF0-11D5-B7CE-00E029352378}PACtrlSaveFileName" "" -"{5F75FDA0-6FF0-11D5-B7CE-00E029352378}PACtrlViews" "0" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_EVAL_DENORMAL_MODE" "16777216" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_EVAL_ROUND_MODE" "768" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_0" "0000000000001AC8" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_1" "000000000000106C" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_10" "0000000000001AE0" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_11" "0000000063656843" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_12" "000000000000006B" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_13" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_14" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_15" "0000000000000002" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_16" "0000000000001AC8" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_17" "000000000000FF9C" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_18" "0000000004020001" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_19" "00000000FFF80178" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_2" "0000000000001A80" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_20" "00000000FFF868F0" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_21" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_22" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_23" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_24" "0000000000001000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_25" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_3" "0000000000001064" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_4" "0000000000000001" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_5" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_6" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_7" "0000000000001A80" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_8" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_9" "0000000000000004" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_COUNT" "26" -"{6C4D5B81-FD67-46A9-A089-EA44DCDE47FD}RAMMonitorManagerCtrlBlockInfoFileDir" "" -"{6C4D5B81-FD67-46A9-A089-EA44DCDE47FD}RAMMonitorManagerCtrlBlockInfoFileName" "" -"{7943C44E-7D44-422A-9140-4CF55C88F7D3}DifferenceCtrlViews" "0" -"{855C64C3-E49C-4450-9BCA-C9822566D214}OSObjectCtrlViews" "0" -"{8A898260-6F1D-11D5-8EB6-00004CC34E9D}ECX_WAVE" "00000000,00000000,0,0" -"{8A898260-6F1D-11D5-8EB6-00004CC34E9D}ECX_WAVE_ADDRESS_NAME" "" -"{8A898260-6F1D-11D5-8EB6-00004CC34E9D}ECX_WAVE_COMB_ADDRESS" ",,,," -"{8A898260-6F1D-11D5-8EB6-00004CC34E9D}ECX_WAVE_COMB_BUFFER" ",,,," -"{8A898260-6F1D-11D5-8EB6-00004CC34E9D}ECX_WAVE_SAMPLING_RATE" "1000" -"{8A898260-6F1D-11D5-8EB6-00004CC34E9D}WaveformCtrlViews" "0" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersCtrlViews" "1" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWnd0ColumnWidth" "47,153,35" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWnd0ECX_REGISTER_COUNT" "33" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWnd0ECX_REGISTER_DISPLAYED" "1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWnd0HideFLAGs" "0" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWnd0HideRadix" "0" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWnd0LastFileName" "" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWnd0RadixList" "16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,2,16,16,16,16,16,16,16," -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndInstanceKey0" "{WK_00000001_REGISTERS}RTOSDemoDefaultSession" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndViewB0ColumnWidth" "47,153,35" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndViewB0ECX_REGISTER_COUNT" "33" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndViewB0ECX_REGISTER_DISPLAYED" "1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndViewB0HideFLAGs" "0" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndViewB0HideRadix" "0" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndViewB0LastFileName" "" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndViewB0RadixList" "16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,2,16,16,16,16,16,16,16," -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndViewBInstanceKey0" "{WK_00000001_REGISTERS}RTOSDemoDefaultSessionViewB" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_ADDRESS_NAME" "" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_BUFFER" "00000000,00000000,0,0" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_COLOR" "0,0,0,0" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_COMB_ADDRESS" ",,,," -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_COMB_PALETTE" ",,,," -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_PALETTE_NAME" "" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_REDRAW_CONTINUOUSLY" "0,2" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_SAMPLEING_RATE" "1000" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_VIEW" "0,0,0,0,0,0" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ImageCtrlViews" "0" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchCtrlViews" "4" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ColWidth0" "255" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ColWidth1" "150" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ColWidth12" "200" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ColWidth2" "120" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ColWidth3" "200" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0000" "ulRegTest2CycleCount, 2, 0, P, Col, Hex, MN" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0000_SCOPE" "Current Scope," -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0001" "ulRegTest1CycleCount, 2, 0, P, Col, Hex, MN" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0001_SCOPE" "Current Scope," -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0002" "ulIdleLoopCount, 2, 0, P, Col, Hex, MN" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0002_SCOPE" "Current Scope," -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0003" "xEnd, 10, 0, P, Col, Hex, N" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0003_SCOPE" "Current Scope," -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0004" "pxNewBlockLink, 10, 0, P, Col, Hex, N" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0004_SCOPE" "Current Scope," -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEMCnt" "3" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd1ColWidth0" "120" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd1ColWidth1" "150" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd1ColWidth12" "200" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd1ColWidth2" "120" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd1ColWidth3" "200" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd1ECX_WATCH_ITEMCnt" "0" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd2ColWidth0" "120" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd2ColWidth1" "150" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd2ColWidth12" "200" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd2ColWidth2" "120" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd2ColWidth3" "200" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd2ECX_WATCH_ITEMCnt" "0" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd3ColWidth0" "120" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd3ColWidth1" "150" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd3ColWidth12" "200" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd3ColWidth2" "120" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd3ColWidth3" "200" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd3ECX_WATCH_ITEMCnt" "0" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWndInitial_Radix" "0" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWndInstanceKey0" "{WK_00000001_WATCH}RTOSDemoDefaultSession" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWndRecentFile_WatchRecord" "" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWndRecentFile_WatchSave" "" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWndUpdate_Interval" "100" -"{B39CE26B-928D-4241-BF8F-E15980C81200}DebugConsoleCtrlDCEnable" "1" -"{B39CE26B-928D-4241-BF8F-E15980C81200}DebugConsoleCtrlLocalEchoEnable" "1" -"{B39CE26B-928D-4241-BF8F-E15980C81200}DebugConsoleCtrlLogFileName" "" -"{B39CE26B-928D-4241-BF8F-E15980C81200}DebugConsoleCtrlPortBaudIndex" "0" -"{B39CE26B-928D-4241-BF8F-E15980C81200}DebugConsoleCtrlPortName" "" -"{B39CE26B-928D-4241-BF8F-E15980C81200}DebugConsoleCtrlSendDataTimeout" "50" -"{B39CE26B-928D-4241-BF8F-E15980C81200}DebugConsoleCtrlViews" "1" -"{B39CE26B-928D-4241-BF8F-E15980C81200}DebugConsoleWndInstanceKey0" "{WK_00000001_DEBUGCONSOLE}" -"{B6AE2E1F-5221-4A44-91C2-8C3097B41A69}StartStopCheckAfter" "0" -"{B6AE2E1F-5221-4A44-91C2-8C3097B41A69}StartStopCheckBefore" "0" -"{B6AE2E1F-5221-4A44-91C2-8C3097B41A69}StartStopExpAfter" "" -"{B6AE2E1F-5221-4A44-91C2-8C3097B41A69}StartStopExpBefore" "" -"{B6AE2E1F-5221-4A44-91C2-8C3097B41A69}T_SESSION_IS_SAVED" "YES" -"{CBEBB610-1516-11D4-8F2D-00409545B67B}ElfDwarf2Objects" "1" -"{CBEBB610-1516-11D4-8F2D-00409545B67B}LoadModule0OBJ_ELFDWARF2_ARRAY_EXPAND_LIMIT" "-1" -"{CBEBB610-1516-11D4-8F2D-00409545B67B}LoadModule0OBJ_ELFDWARF2_STATIC_MEM_EXPAND" "1" -"{EEDC9300-6FBE-11D5-8613-00A024591A38}LocalsCtrlViews" "0" -"{EEDC9301-6FBE-11D5-8613-00A024591A38}StackTraceCtrlViews" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOCtrlIOFile" "" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOCtrlSaveFileDir" "C:\temp" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOCtrlSaveFileName" "GCC io.txt" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOCtrlViews" "1" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOSelection IOWnd0" "" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0ColWidth0" "200" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0ColWidth1" "100" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0ColWidth2" "100" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0ColWidth3" "100" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp0" "1" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp1" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp10" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp100" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp101" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp102" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp103" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp104" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp105" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp106" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp107" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp108" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp109" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp11" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp110" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp111" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp112" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp113" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp114" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp115" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp116" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp117" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp118" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp119" "1" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp12" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp120" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp121" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp122" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp123" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp124" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp125" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp126" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp127" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp128" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp129" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp13" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp130" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp131" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp132" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp133" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp134" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp135" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp136" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp137" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp138" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp139" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp14" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp140" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp141" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp142" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp143" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp144" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp145" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp146" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp147" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp148" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp149" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp15" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp150" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp151" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp152" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp153" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp154" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp155" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp156" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp157" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp158" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp159" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp16" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp160" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp161" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp162" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp163" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp164" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp165" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp166" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp167" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp168" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp169" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp17" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp170" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp171" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp172" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp173" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp174" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp175" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp176" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp177" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp178" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp179" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp18" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp180" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp181" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp182" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp183" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp184" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp185" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp186" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp187" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp188" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp189" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp19" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp190" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp191" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp192" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp193" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp194" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp195" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp196" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp197" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp198" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp199" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp2" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp20" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp200" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp201" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp202" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp203" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp204" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp205" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp206" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp207" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp208" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp209" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp21" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp210" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp211" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp212" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp213" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp214" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp215" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp216" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp217" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp218" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp219" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp22" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp220" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp221" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp222" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp223" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp224" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp225" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp226" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp227" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp228" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp229" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp23" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp230" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp231" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp232" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp233" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp234" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp235" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp236" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp237" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp238" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp239" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp24" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp240" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp241" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp242" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp243" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp244" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp245" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp246" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp247" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp248" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp249" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp25" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp250" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp251" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp252" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp253" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp254" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp255" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp256" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp257" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp258" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp259" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp26" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp260" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp261" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp262" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp263" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp264" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp265" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp266" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp267" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp268" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp269" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp27" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp270" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp271" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp272" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp273" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp274" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp275" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp276" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp277" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp278" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp279" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp28" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp280" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp281" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp282" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp283" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp284" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp285" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp286" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp287" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp288" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp289" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp29" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp290" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp291" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp292" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp293" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp294" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp295" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp296" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp297" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp298" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp299" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp3" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp30" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp300" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp301" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp302" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp303" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp304" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp305" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp306" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp307" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp308" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp309" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp31" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp310" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp311" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp312" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp313" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp314" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp315" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp316" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp317" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp318" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp319" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp32" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp320" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp321" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp322" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp323" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp324" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp325" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp326" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp327" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp328" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp329" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp33" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp330" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp331" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp332" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp333" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp334" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp335" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp336" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp337" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp338" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp339" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp34" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp340" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp341" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp342" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp343" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp344" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp345" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp346" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp347" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp348" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp349" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp35" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp350" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp351" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp352" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp353" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp354" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp355" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp356" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp357" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp358" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp359" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp36" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp360" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp361" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp362" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp363" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp364" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp365" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp366" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp367" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp368" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp369" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp37" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp370" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp371" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp372" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp373" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp374" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp375" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp376" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp377" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp378" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp379" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp38" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp380" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp381" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp382" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp383" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp384" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp385" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp386" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp387" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp388" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp389" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp39" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp390" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp391" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp392" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp393" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp394" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp395" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp396" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp397" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp398" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp399" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp4" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp40" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp400" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp401" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp402" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp403" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp404" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp405" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp406" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp407" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp408" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp409" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp41" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp410" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp411" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp412" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp413" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp414" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp415" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp416" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp417" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp418" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp419" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp42" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp420" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp421" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp422" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp423" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp424" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp425" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp426" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp427" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp428" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp429" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp43" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp430" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp431" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp432" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp433" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp434" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp435" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp436" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp437" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp438" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp439" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp44" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp440" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp441" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp442" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp443" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp444" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp445" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp446" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp447" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp448" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp449" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp45" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp450" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp451" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp452" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp453" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp454" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp455" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp456" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp457" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp458" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp459" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp46" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp460" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp461" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp462" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp463" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp464" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp465" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp466" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp467" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp468" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp469" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp47" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp470" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp471" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp472" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp473" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp474" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp475" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp476" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp477" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp478" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp479" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp48" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp480" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp481" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp482" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp483" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp484" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp485" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp486" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp487" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp488" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp489" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp49" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp490" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp491" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp492" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp493" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp494" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp495" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp496" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp497" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp498" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp499" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp5" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp50" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp500" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp501" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp502" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp503" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp504" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp505" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp506" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp507" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp508" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp509" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp51" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp510" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp511" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp512" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp513" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp514" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp515" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp516" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp517" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp518" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp519" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp52" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp520" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp521" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp522" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp523" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp524" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp525" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp526" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp527" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp528" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp529" "1" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp53" "1" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp530" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp531" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp532" "1" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp533" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp534" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp535" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp536" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp537" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp538" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp539" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp54" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp540" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp541" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp542" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp543" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp544" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp545" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp546" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp547" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp548" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp549" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp55" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp550" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp551" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp552" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp553" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp554" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp555" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp556" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp557" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp558" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp559" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp56" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp560" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp561" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp562" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp563" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp564" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp565" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp566" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp567" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp568" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp569" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp57" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp570" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp571" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp572" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp573" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp574" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp575" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp576" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp577" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp578" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp579" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp58" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp580" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp581" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp582" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp583" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp584" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp585" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp586" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp587" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp588" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp589" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp59" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp590" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp591" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp592" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp593" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp594" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp595" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp596" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp597" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp598" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp599" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp6" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp60" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp600" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp601" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp61" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp62" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp63" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp64" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp65" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp66" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp67" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp68" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp69" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp7" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp70" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp71" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp72" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp73" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp74" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp75" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp76" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp77" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp78" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp79" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp8" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp80" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp81" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp82" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp83" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp84" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp85" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp86" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp87" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp88" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp89" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp9" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp90" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp91" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp92" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp93" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp94" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp95" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp96" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp97" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp98" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp99" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0ScrollHorz" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0ScrollVert" "532" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd1ColWidth0" "200" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd1ColWidth1" "100" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd1ColWidth2" "100" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd1ColWidth3" "100" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd1ScrollHorz" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd1ScrollVert" "0" -"{F923CED3-3318-4B43-B931-0AE76B289176}TaskTraceCtrlAnalyzeViews" "0" -"{F923CED3-3318-4B43-B931-0AE76B289176}TaskTraceCtrlFileSaveDirectory" "" -"{F923CED3-3318-4B43-B931-0AE76B289176}TaskTraceCtrlTraceViews" "0" -[LANGUAGE] -"English" -[CONFIG_INFO_VD1] -1 -[CONFIG_INFO_VD2] -0 -[CONFIG_INFO_VD3] -0 -[CONFIG_INFO_VD4] -0 -[WINDOW_POSITION_STATE_DATA_VD1] -"Help" "TOOLBAR 0" 59419 1 5 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_00000001_CmdLine}" "WINDOW" 59422 0 2 "0.07" 306 0 0 100 100 17 0 "32771|32772|32778|<>|32773|32774|<>" "0.0" -"{WK_00000001_DEBUGCONSOLE}" "WINDOW" 59422 5 0 "1.00" 146 0 0 350 200 17 0 "57634|57637|57633|<>|32781|32782|<>|32780|32785|32787" "0.0" -"{WK_00000001_DISASSEMBLY}" "WINDOW" 0 0 0 "0.00" 0 44 44 816 406 9 0 "" "0.0" -"{WK_00000001_IO}RTOSDemoDefaultSession" "WINDOW" 59422 0 3 "0.49" 306 0 0 350 200 17 0 "32817|32826|32819|32820|32821" "0.0" -"{WK_00000001_MEMORY}RTOSDemoDefaultSession" "WINDOW" 59422 0 0 "0.21" 251 0 0 350 200 17 0 "42202|42203|42204|42233|<>|42206|42205|42230|42229|42207|<>|42208|42209|42210|49076|42228|42227|<>|42231|42232|42234|42235|<>|42211|<>" "0.0" -"{WK_00000001_OUTPUT}" "WINDOW" 59422 0 0 "0.57" 306 560 340 350 200 18 0 "36756|36757|36758|36759|<>|36746|36747|<>|39531|<>|39500|39534|<>|36687" "0.0" -"{WK_00000001_REGISTERS}RTOSDemoDefaultSession" "WINDOW" 59421 0 0 "1.00" 307 0 0 350 200 18 0 "" "0.0" -"{WK_00000001_WATCH}RTOSDemoDefaultSession" "WINDOW" 59422 0 1 "0.43" 306 0 0 853 610 18 0 "32781|32783|<>|32771|32829|32772|32827|32773|<>|32786|<>|32810|32811" "0.0" -"{WK_00000002_WORKSPACE}" "WINDOW" 59420 0 0 "1.00" 342 560 340 350 200 18 0 "" "0.0" -"{WK_TB00000001_STANDARD}" "TOOLBAR 0" 59419 0 2 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000002_EDITOR}" "TOOLBAR 0" 59419 0 0 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000003_BOOKMARKS}" "TOOLBAR 0" 59419 1 1 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000004_TEMPLATES}" "TOOLBAR 0" 59419 1 0 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000005_SEARCH}" "TOOLBAR 0" 59419 0 1 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000007_DEBUG}" "TOOLBAR 0" 59419 2 0 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000008_DEBUGRUN}" "TOOLBAR 0" 59419 2 1 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000009_VERSIONCONTROL}" "TOOLBAR 0" 59419 1 3 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000011_CPU}" "TOOLBAR 0" 59419 2 2 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000012_MAP}" "TOOLBAR 0" 59419 1 4 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000013_SYMBOL}" "TOOLBAR 0" 59419 2 5 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000014_CODE}" "TOOLBAR 0" 59419 2 9 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000015_PERFORMANCE}" "TOOLBAR 0" 59419 2 10 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000016_GRAPHIC}" "TOOLBAR 0" 59419 2 8 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000018_DEFAULTWINDOW}" "TOOLBAR 0" 59419 1 2 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000023_RTOS}" "TOOLBAR 0" 59419 2 11 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000025_HELPSYSTEMTOOL}" "TOOLBAR 0" 59419 2 4 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000026_MACRO}" "TOOLBAR 0" 59419 1 6 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000027_EVENT}" "TOOLBAR 0" 59419 2 7 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000028_RTOSDEBUG}" "TOOLBAR 0" 59419 2 3 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000029_SYSTEMTOOL}" "TOOLBAR 0" 59419 2 6 "0.00" 0 0 0 0 0 17 0 "" "0.0" -[WINDOW_POSITION_STATE_DATA_VD2] -[WINDOW_POSITION_STATE_DATA_VD3] -[WINDOW_POSITION_STATE_DATA_VD4] -[WINDOW_Z_ORDER] -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\GCC\RX600\port_asm.asm" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-MDK_GNURX\RTOSDemo\GNU-Files\start.asm" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-MDK_GNURX\RTOSDemo\main-full.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\GCC\RX600\port.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\tasks.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-MDK_GNURX\RTOSDemo\RegTest.asm" -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\GCC\RX600\portmacro.h" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-MDK_GNURX\RTOSDemo\FreeRTOSConfig.h" -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\MemMang\heap_2.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\list.c" -[TARGET_NAME] -"RX600 E1/E20 SYSTEM" "" 0 -[STATUSBAR_STATEINFO_VD1] -"MasterShowState" 1 -"ApplicationShowState" 1 -"DebuggerShowState" 1 -[STATUSBAR_STATEINFO_VD2] -"MasterShowState" 1 -"ApplicationShowState" 1 -"DebuggerShowState" 1 -[STATUSBAR_STATEINFO_VD3] -"MasterShowState" 1 -"ApplicationShowState" 1 -"DebuggerShowState" 1 -[STATUSBAR_STATEINFO_VD4] -"MasterShowState" 1 -"ApplicationShowState" 1 -"DebuggerShowState" 1 -[STATUSBAR_DEBUGGER_PANESTATE_VD1] -"SBK_TAR_EMUE100|Exception" 1 -"SBK_TAR_EMUE100|BreakCondition" 1 -"SBK_TAR_EMUE100|TaskID" 1 -"SBK_TAR_EMUE100|PC" 1 -"SBK_TAR_EMUE100|ExecutionTime" 1 -[STATUSBAR_DEBUGGER_PANESTATE_VD2] -[STATUSBAR_DEBUGGER_PANESTATE_VD3] -[STATUSBAR_DEBUGGER_PANESTATE_VD4] -[DEBUGGER_OPTIONS] -"" -[DOWNLOAD_MODULES] -"$(CONFIGDIR)\$(PROJECTNAME).x" 0 "Elf/Dwarf2_KPIT" 0 1 1 0 -[CONNECT_ON_GO] -"FALSE" -[DOWNLOAD_MODULES_AFTER_BUILD] -"TRUE" -[REMOVE_BREAKPOINTS_ON_DOWNLOAD] -"FALSE" -[DISABLE_MEMORY_ACCESS_PRIOR_TO_COMMAND_FILE_EXECUTION] -"FALSE" -[LIMIT_DISASSEMBLY_MEMORY_ACCESS] -"FALSE" -[DISABLE_MEMORY_ACCESS_DURING_EXECUTION] -"FALSE" -[DEBUGGER_OPTIONS_PROPERTIES] -"1" -[COMMAND_FILES] -[DEFAULT_DEBUG_FORMAT] -"Elf/Dwarf2_KPIT" -[FLASH_DETAILS] -"" 0 0 "" 0 "" 0 0 "" 0 0 0 0 0 0 0 "" "" "" "" "" -[BREAKPOINTS] -"c:\e\dev\freertos\workingcopy\demo\rx600_rx62n-mdk_gnurx\rtosdemo\main-full.c" 298 -510103 1 "{00000000-0000-0000-C000-000000000046}" "" -"c:\e\dev\freertos\workingcopy\demo\rx600_rx62n-mdk_gnurx\rtosdemo\main-full.c" 581 33414224 1 "{00000000-0000-0000-C000-000000000046}" "" -"c:\e\dev\freertos\workingcopy\demo\rx600_rx62n-mdk_gnurx\rtosdemo\regtest.asm" 144 -524093 1 "{00000000-0000-0000-C000-000000000046}" "" -"c:\e\dev\freertos\workingcopy\demo\rx600_rx62n-mdk_gnurx\rtosdemo\regtest.asm" 222 -523943 1 "{00000000-0000-0000-C000-000000000046}" "" -"c:\e\dev\freertos\workingcopy\source\portable\gcc\rx600\port.c" 255 -511337 1 "{00000000-0000-0000-C000-000000000046}" "" -"" -1 -523932 1 "{110BABEB-6DCB-4265-8236-8888EECAB6AB}" "" -"" -1 -509967 1 "{110BABEB-6DCB-4265-8236-8888EECAB6AB}" "" -[END] diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/DefaultSession.ini b/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/DefaultSession.ini deleted file mode 100644 index 5e7c5edd5..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/DefaultSession.ini +++ /dev/null @@ -1,30 +0,0 @@ -[Init_DeviceSetting] -DebugMode=0 -PowerOut=0 -ResetRelease=0 -EmulatorSerial= -McuGroup=RX62N Group -Device=R5F562N8 -McuFileDir=RX62NGr -SupplyVoltage=-1 -[Init_CommunicationClock] -JtagClock=16.5 -JtagClockValue=10 -[Init_EmulatorSetting] -FirstStartUp=0 -HideNext=0 -ConnectionDlgAutoClose=1 -[CFG_MCU] -PrevDevice=R5F562N8 -ProcessorMode=0 -EXTAL=12.0000 -WorkRam=0x17000 -[CFG_SYSTEM] -CpuReWrite=0 -PerfCounterUser=0 -TraceDebugAs=0 -[CFG_FLASHCLEAR_R5F562N8_00] -BlockCount=54 -BlockData=000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -[Config_Property] -HideNext=0 diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/FreeRTOSConfig.h b/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/FreeRTOSConfig.h deleted file mode 100644 index 506a5be85..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/FreeRTOSConfig.h +++ /dev/null @@ -1,142 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -#ifndef FREERTOS_CONFIG_H -#define FREERTOS_CONFIG_H - -/* Board specifics. */ -#include "yrdkrx62ndef.h" - -/*----------------------------------------------------------- - * Application specific definitions. - * - * These definitions should be adjusted for your particular hardware and - * application requirements. - * - * THESE PARAMETERS ARE DESCRIBED WITHIN THE 'CONFIGURATION' SECTION OF THE - * FreeRTOS API DOCUMENTATION AVAILABLE ON THE FreeRTOS.org WEB SITE. - * - * See http://www.freertos.org/a00110.html - *----------------------------------------------------------*/ - -#define configUSE_PREEMPTION 1 -#define configUSE_IDLE_HOOK 0 -#define configUSE_TICK_HOOK 0 -#define configCPU_CLOCK_HZ ( ICLK_FREQUENCY ) /* Set in rskrx62ndef.h. */ -#define configPERIPHERAL_CLOCK_HZ ( PCLK_FREQUENCY ) /* Set in rskrx62ndef.h. */ -#define configTICK_RATE_HZ ( ( TickType_t ) 1000 ) -#define configMINIMAL_STACK_SIZE ( ( unsigned short ) 140 ) -#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 45 * 1024 ) ) -#define configMAX_TASK_NAME_LEN ( 12 ) -#define configUSE_TRACE_FACILITY 1 -#define configUSE_16_BIT_TICKS 0 -#define configIDLE_SHOULD_YIELD 1 -#define configUSE_CO_ROUTINES 0 -#define configUSE_MUTEXES 1 -#define configGENERATE_RUN_TIME_STATS 1 -#define configCHECK_FOR_STACK_OVERFLOW 2 -#define configUSE_RECURSIVE_MUTEXES 1 -#define configQUEUE_REGISTRY_SIZE 0 -#define configUSE_MALLOC_FAILED_HOOK 1 -#define configUSE_APPLICATION_TASK_TAG 0 - -#define configMAX_PRIORITIES ( 7 ) -#define configMAX_CO_ROUTINE_PRIORITIES ( 2 ) - -/* Software timer definitions. */ -#define configUSE_TIMERS 1 -#define configTIMER_TASK_PRIORITY ( 3 ) -#define configTIMER_QUEUE_LENGTH 5 -#define configTIMER_TASK_STACK_DEPTH ( configMINIMAL_STACK_SIZE ) - -/* The interrupt priority used by the kernel itself for the tick interrupt and -the pended interrupt. This would normally be the lowest priority. */ -#define configKERNEL_INTERRUPT_PRIORITY 1 - -/* The maximum interrupt priority from which FreeRTOS API calls can be made. -Interrupts that use a priority above this will not be effected by anything the -kernel is doing. */ -#define configMAX_SYSCALL_INTERRUPT_PRIORITY 4 - -/* Set the following definitions to 1 to include the API function, or zero -to exclude the API function. */ - -#define INCLUDE_vTaskPrioritySet 1 -#define INCLUDE_uxTaskPriorityGet 1 -#define INCLUDE_vTaskDelete 1 -#define INCLUDE_vTaskCleanUpResources 0 -#define INCLUDE_vTaskSuspend 1 -#define INCLUDE_vTaskDelayUntil 1 -#define INCLUDE_vTaskDelay 1 -#define INCLUDE_uxTaskGetStackHighWaterMark 1 -#define INCLUDE_xTaskGetSchedulerState 1 -#define INCLUDE_eTaskGetState 1 - -#define configASSERT( x ) if( ( x ) == 0 ) { taskDISABLE_INTERRUPTS(); for( ;; ); } - -extern volatile unsigned long ulHighFrequencyTickCount; -#define portCONFIGURE_TIMER_FOR_RUN_TIME_STATS() portNOP() /* Run time stats use the same timer as the high frequency timer test. */ -#define portGET_RUN_TIME_COUNTER_VALUE() ulHighFrequencyTickCount - - -/* Override some of the priorities set in the common demo tasks. This is -required to ensure flase positive timing errors are not reported. */ -#define bktPRIMARY_PRIORITY ( configMAX_PRIORITIES - 3 ) -#define bktSECONDARY_PRIORITY ( configMAX_PRIORITIES - 4 ) -#define intqHIGHER_PRIORITY ( configMAX_PRIORITIES - 3 ) - -/* This demo makes use of one or more example stats formatting functions. These -format the raw data provided by the uxTaskGetSystemState() function in to human -readable ASCII form. See the notes in the implementation of vTaskList() within -FreeRTOS/Source/tasks.c for limitations. */ -#define configUSE_STATS_FORMATTING_FUNCTIONS 1 - -/*----------------------------------------------------------- - * Ethernet configuration. - *-----------------------------------------------------------*/ - -/* MAC address configuration. */ -#define configMAC_ADDR0 0x00 -#define configMAC_ADDR1 0x12 -#define configMAC_ADDR2 0x13 -#define configMAC_ADDR3 0x10 -#define configMAC_ADDR4 0x15 -#define configMAC_ADDR5 0x11 - -/* IP address configuration. */ -#define configIP_ADDR0 192 -#define configIP_ADDR1 168 -#define configIP_ADDR2 0 -#define configIP_ADDR3 200 - -/* Netmask configuration. */ -#define configNET_MASK0 255 -#define configNET_MASK1 255 -#define configNET_MASK2 255 -#define configNET_MASK3 0 - -#endif /* FREERTOS_CONFIG_H */ diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/GNU-Files/hwinit.c b/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/GNU-Files/hwinit.c deleted file mode 100644 index b6660aaa0..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/GNU-Files/hwinit.c +++ /dev/null @@ -1,55 +0,0 @@ -/***********************************************************************/ -/* */ -/* FILE :hwinit.c */ -/* DATE :Wed, Aug 25, 2010 */ -/* DESCRIPTION :Hardware Setup file */ -/* CPU TYPE :Other */ -/* */ -/* This file is generated by KPIT GNU Project Generator. */ -/* */ -/***********************************************************************/ - - - -#include "iodefine.h" -#ifdef __cplusplus -extern "C" { -#endif -extern void hw_initialise(void); -#ifdef __cplusplus -} -#endif - -void hw_initialise(void) -{ -/* - SCI.SMR.BYTE = 0; - SCI.SMR.BIT.CA = 1; - SCI.SMR.BIT.CHR = 1; - SCI.SMR.BIT.OE = 1; - SCI.SMR.BIT.STOP = 1; - SCI.SMR.BIT.MP = 1; - SCI.SMR.BIT.CKS = 3; - SCI.BRR = 0; - SCI.SCR.BYTE = 0; - SCI.SCR.BIT.TIE = 1; - SCI.SCR.BIT.RIE = 1; - SCI.SCR.BIT.TE = 1; - SCI.SCR.BIT.RE = 1; - SCI.SCR.BIT.MPIE = 1; - SCI.SCR.BIT.TEIE = 1; - SCI.SCR.BIT.CKE = 3; - SCI.TDR = 0; - SCI.SSR.BYTE = 0; - SCI.SSR.BIT.TDRE = 1; - SCI.SSR.BIT.RDRF = 1; - SCI.SSR.BIT.ORER = 1; - SCI.SSR.BIT.FER = 1; - SCI.SSR.BIT.PER = 1; - SCI.SSR.BIT.TEND = 1; - SCI.SSR.BIT.MPB = 1; - SCI.SSR.BIT.MPBT = 1; - SCI.RDR = 0; - -*/ -} diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/GNU-Files/inthandler.c b/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/GNU-Files/inthandler.c deleted file mode 100644 index 7334d3e9c..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/GNU-Files/inthandler.c +++ /dev/null @@ -1,431 +0,0 @@ -/***********************************************************************/ -/* */ -/* FILE :inthandler.c */ -/* DATE :Wed, Aug 25, 2010 */ -/* DESCRIPTION :Interrupt Handler */ -/* CPU TYPE :Other */ -/* */ -/* This file is generated by KPIT GNU Project Generator. */ -/* */ -/***********************************************************************/ - - - - -#include "inthandler.h" - -// Exception(Supervisor Instruction) -void INT_Excep_SuperVisorInst(void){/* brk(); */} - -// Exception(Undefined Instruction) -void INT_Excep_UndefinedInst(void){ __asm volatile ("brk"); } - -// Exception(Floating Point) -void INT_Excep_FloatingPoint(void){/* brk(); */} - -// NMI -void INT_NonMaskableInterrupt(void){/* brk(); */} - -// Dummy -void Dummy(void){/* brk(); */} - -// BRK -void INT_Excep_BRK(void){ /*wait(); */} - -// BUSERR -void INT_Excep_BUSERR(void){ } - -// FCU_FCUERR -void INT_Excep_FCU_FCUERR(void){ } - -// FCU_FRDYI -void INT_Excep_FCU_FRDYI(void){ } - -// CMTU0_CMT0 - (RB) NOTE This has been replaced in the vector table with vTickISR(). -void INT_Excep_CMTU0_CMT0(void){ } - -// CMTU0_CMT1 -void INT_Excep_CMTU0_CMT1(void){ } - -// CMTU1_CMT2 -void INT_Excep_CMTU1_CMT2(void){ } - -// CMTU1_CMT3 -void INT_Excep_CMTU1_CMT3(void){ } - -// IRQ0 -void INT_Excep_IRQ0(void){ } - -// IRQ1 -void INT_Excep_IRQ1(void){ } - -// IRQ2 -void INT_Excep_IRQ2(void){ } - -// IRQ3 -void INT_Excep_IRQ3(void){ } - -// IRQ4 -void INT_Excep_IRQ4(void){ } - -// IRQ5 -void INT_Excep_IRQ5(void){ } - -// IRQ6 -void INT_Excep_IRQ6(void){ } - -// IRQ7 -void INT_Excep_IRQ7(void){ } - -// IRQ8 -void INT_Excep_IRQ8(void){ } - -// IRQ9 -void INT_Excep_IRQ9(void){ } - -// IRQ10 -void INT_Excep_IRQ10(void){ } - -// IRQ11 -void INT_Excep_IRQ11(void){ } - -// IRQ12 -void INT_Excep_IRQ12(void){ } - -// IRQ13 -void INT_Excep_IRQ13(void){ } - -// IRQ14 -void INT_Excep_IRQ14(void){ } - -// IRQ15 -void INT_Excep_IRQ15(void){ } - -// WDT_WOVI -void INT_Excep_WDT_WOVI(void){ } - -// AD0_ADI0 -void INT_Excep_AD0_ADI0(void){ } - -// AD1_ADI1 -void INT_Excep_AD1_ADI1(void){ } - -// AD2_ADI2 -void INT_Excep_AD2_ADI2(void){ } - -// AD3_ADI3 -void INT_Excep_AD3_ADI3(void){ } - -// TPU0_TGI0A -void INT_Excep_TPU0_TGI0A(void){ } - -// TPU0_TGI0B -void INT_Excep_TPU0_TGI0B(void){ } - -// TPU0_TGI0C -void INT_Excep_TPU0_TGI0C(void){ } - -// TPU0_TGI0D -void INT_Excep_TPU0_TGI0D(void){ } - -// TPU0_TCI0V -void INT_Excep_TPU0_TCI0V(void){ } - -// TPU1_TGI1A -void INT_Excep_TPU1_TGI1A(void){ } - -// TPU1_TGI1B -void INT_Excep_TPU1_TGI1B(void){ } - -// TPU1_TCI1V -void INT_Excep_TPU1_TCI1V(void){ } - -// TPU1_TCI1U -void INT_Excep_TPU1_TCI1U(void){ } - -// TPU2_TGI2A -void INT_Excep_TPU2_TGI2A(void){ } - -// TPU2_TGI2B -void INT_Excep_TPU2_TGI2B(void){ } - -// TPU2_TCI2V -void INT_Excep_TPU2_TCI2V(void){ } - -// TPU2_TCI2U -void INT_Excep_TPU2_TCI2U(void){ } - -// TPU3_TGI3A -void INT_Excep_TPU3_TGI3A(void){ } - -// TPU3_TGI3B -void INT_Excep_TPU3_TGI3B(void){ } - -// TPU3_TGI3C -void INT_Excep_TPU3_TGI3C(void){ } - -// TPU3_TGI3D -void INT_Excep_TPU3_TGI3D(void){ } - -// TPU3_TCI3V -void INT_Excep_TPU3_TCI3V(void){ } - -// TPU4_TGI4A -void INT_Excep_TPU4_TGI4A(void){ } - -// TPU4_TGI4B -void INT_Excep_TPU4_TGI4B(void){ } - -// TPU4_TCI4V -void INT_Excep_TPU4_TCI4V(void){ } - -// TPU4_TCI4U -void INT_Excep_TPU4_TCI4U(void){ } - -// TPU5_TGI5A -void INT_Excep_TPU5_TGI5A(void){ } - -// TPU5_TGI5B -void INT_Excep_TPU5_TGI5B(void){ } - -// TPU5_TCI5V -void INT_Excep_TPU5_TCI5V(void){ } - -// TPU5_TCI5U -void INT_Excep_TPU5_TCI5U(void){ } - -// TPU6_TGI6A -void INT_Excep_TPU6_TGI6A(void){ } - -// TPU6_TGI6B -void INT_Excep_TPU6_TGI6B(void){ } - -// TPU6_TGI6C -void INT_Excep_TPU6_TGI6C(void){ } - -// TPU6_TGI6D -void INT_Excep_TPU6_TGI6D(void){ } - -// TPU6_TCI6V -void INT_Excep_TPU6_TCI6V(void){ } - -// TPU7_TGI7A -void INT_Excep_TPU7_TGI7A(void){ } - -// TPU7_TGI7B -void INT_Excep_TPU7_TGI7B(void){ } - -// TPU7_TCI7V -void INT_Excep_TPU7_TCI7V(void){ } - -// TPU7_TCI7U -void INT_Excep_TPU7_TCI7U(void){ } - -// TPU8_TGI8A -void INT_Excep_TPU8_TGI8A(void){ } - -// TPU8_TGI8B -void INT_Excep_TPU8_TGI8B(void){ } - -// TPU8_TCI8V -void INT_Excep_TPU8_TCI8V(void){ } - -// TPU8_TCI8U -void INT_Excep_TPU8_TCI8U(void){ } - -// TPU9_TGI9A -void INT_Excep_TPU9_TGI9A(void){ } - -// TPU9_TGI9B -void INT_Excep_TPU9_TGI9B(void){ } - -// TPU9_TGI9C -void INT_Excep_TPU9_TGI9C(void){ } - -// TPU9_TGI9D -void INT_Excep_TPU9_TGI9D(void){ } - -// TPU9_TCI9V -void INT_Excep_TPU9_TCI9V(void){ } - -// TPU10_TGI10A -void INT_Excep_TPU10_TGI10A(void){ } - -// TPU10_TGI10B -void INT_Excep_TPU10_TGI10B(void){ } - -// TPU10_TCI10V -void INT_Excep_TPU10_TCI10V(void){ } - -// TPU10_TCI10U -void INT_Excep_TPU10_TCI10U(void){ } - -// TPU11_TGI11A -void INT_Excep_TPU11_TGI11A(void){ } - -// TPU11_TGI11B -void INT_Excep_TPU11_TGI11B(void){ } - -// TPU11_TCI11V -void INT_Excep_TPU11_TCI11V(void){ } - -// TPU11_TCI11U -void INT_Excep_TPU11_TCI11U(void){ } - -// TMR0_CMI0A -void INT_Excep_TMR0_CMI0A(void){ } - -// TMR0_CMI0B -void INT_Excep_TMR0_CMI0B(void){ } - -// TMR0_OV0I -void INT_Excep_TMR0_OV0I(void){ } - -// TMR1_CMI1A -void INT_Excep_TMR1_CMI1A(void){ } - -// TMR1_CMI1B -void INT_Excep_TMR1_CMI1B(void){ } - -// TMR1_OV1I -void INT_Excep_TMR1_OV1I(void){ } - -// TMR2_CMI2A -void INT_Excep_TMR2_CMI2A(void){ } - -// TMR2_CMI2B -void INT_Excep_TMR2_CMI2B(void){ } - -// TMR2_OV2I -void INT_Excep_TMR2_OV2I(void){ } - -// TMR3_CMI3A -void INT_Excep_TMR3_CMI3A(void){ } - -// TMR3_CMI3B -void INT_Excep_TMR3_CMI3B(void){ } - -// TMR3_OV3I -void INT_Excep_TMR3_OV3I(void){ } - -// DMAC_DMTEND0 -void INT_Excep_DMAC_DMTEND0(void){ } - -// DMAC_DMTEND1 -void INT_Excep_DMAC_DMTEND1(void){ } - -// DMAC_DMTEND2 -void INT_Excep_DMAC_DMTEND2(void){ } - -// DMAC_DMTEND3 -void INT_Excep_DMAC_DMTEND3(void){ } - -// SCI0_ERI0 -void INT_Excep_SCI0_ERI0(void){ } - -// SCI0_RXI0 -void INT_Excep_SCI0_RXI0(void){ } - -// SCI0_TXI0 -void INT_Excep_SCI0_TXI0(void){ } - -// SCI0_TEI0 -void INT_Excep_SCI0_TEI0(void){ } - -// SCI1_ERI1 -void INT_Excep_SCI1_ERI1(void){ } - -// SCI1_RXI1 -void INT_Excep_SCI1_RXI1(void){ } - -// SCI1_TXI1 -void INT_Excep_SCI1_TXI1(void){ } - -// SCI1_TEI1 -void INT_Excep_SCI1_TEI1(void){ } - -// SCI2_ERI2 -void INT_Excep_SCI2_ERI2(void){ } - -// SCI2_RXI2 -void INT_Excep_SCI2_RXI2(void){ } - -// SCI2_TXI2 -void INT_Excep_SCI2_TXI2(void){ } - -// SCI2_TEI2 -void INT_Excep_SCI2_TEI2(void){ } - -// SCI3_ERI3 -void INT_Excep_SCI3_ERI3(void){ } - -// SCI3_RXI3 -void INT_Excep_SCI3_RXI3(void){ } - -// SCI3_TXI3 -void INT_Excep_SCI3_TXI3(void){ } - -// SCI3_TEI3 -void INT_Excep_SCI3_TEI3(void){ } - -// SCI4_ERI4 -void INT_Excep_SCI4_ERI4(void){ } - -// SCI4_RXI4 -void INT_Excep_SCI4_RXI4(void){ } - -// SCI4_TXI4 -void INT_Excep_SCI4_TXI4(void){ } - -// SCI4_TEI4 -void INT_Excep_SCI4_TEI4(void){ } - -// SCI5_ERI5 -void INT_Excep_SCI5_ERI5(void){ } - -// SCI5_RXI5 -void INT_Excep_SCI5_RXI5(void){ } - -// SCI5_TXI5 -void INT_Excep_SCI5_TXI5(void){ } - -// SCI5_TEI5 -void INT_Excep_SCI5_TEI5(void){ } - -// SCI6_ERI6 -void INT_Excep_SCI6_ERI6(void){ } - -// SCI6_RXI6 -void INT_Excep_SCI6_RXI6(void){ } - -// SCI6_TXI6 -void INT_Excep_SCI6_TXI6(void){ } - -// SCI6_TEI6 -void INT_Excep_SCI6_TEI6(void){ } - -// RIIC0_EEI0 -void INT_Excep_RIIC0_EEI0(void){ } - -// RIIC0_RXI0 -void INT_Excep_RIIC0_RXI0(void){ } - -// RIIC0_TXI0 -void INT_Excep_RIIC0_TXI0(void){ } - -// RIIC0_TEI0 -void INT_Excep_RIIC0_TEI0(void){ } - -// RIIC1_EEI1 -void INT_Excep_RIIC1_EEI1(void){ } - -// RIIC1_RXI1 -void INT_Excep_RIIC1_RXI1(void){ } - -// RIIC1_TXI1 -void INT_Excep_RIIC1_TXI1(void){ } - -// RIIC1_TEI1 -void INT_Excep_RIIC1_TEI1(void){ } - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/GNU-Files/start.asm b/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/GNU-Files/start.asm deleted file mode 100644 index 677b81f41..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/GNU-Files/start.asm +++ /dev/null @@ -1,94 +0,0 @@ -/*------------------------------------------------------------------------ - | - FILE : start.asm | - DATE : Wed, Aug 25, 2010 | - DESCRIPTION : Reset Program | - CPU TYPE : Other | - | - This file is generated by KPIT GNU Project Generator (Ver.4.5). | - | -------------------------------------------------------------------------*/ - - - - /*Start.asm*/ - - .list - .section .text - .global _start /*global Start routine */ - -#ifdef CPPAPP -___dso_handle: - .global ___dso_handle -#endif - - .extern _hw_initialise /*external Sub-routine to initialise Hardware*/ - .extern _data - .extern _mdata - .extern _ebss - .extern _bss - .extern _edata - .extern _main - .extern _ustack - .extern _istack - .extern _rvectors -#if DEBUG - .extern _exit -#endif - - -_start: -/* initialise user stack pointer */ - mvtc #_ustack,USP - -/* initialise interrupt stack pointer */ - mvtc #_istack,ISP - -/* setup intb */ - mvtc #_rvectors_start, intb /* INTERRUPT VECTOR ADDRESS definition */ - -/* setup FPSW */ - mvtc #100h, fpsw - -/* load data section from ROM to RAM */ - - mov #_mdata,r2 /* src ROM address of data section in R2 */ - mov #_data,r1 /* dest start RAM address of data section in R1 */ - mov #_edata,r3 /* end RAM address of data section in R3 */ - sub r1,r3 /* size of data section in R3 (R3=R3-R1) */ - smovf /* block copy R3 bytes from R2 to R1 */ - -/* bss initialisation : zero out bss */ - - mov #00h,r2 /* load R2 reg with zero */ - mov #_ebss, r3 /* store the end address of bss in R3 */ - mov #_bss, r1 /* store the start address of bss in R1 */ - sub r1,r3 /* size of bss section in R3 (R3=R3-R1) */ - sstr.b - -/* call the hardware initialiser */ - bsr.a _hw_initialise - nop - -/* setup PSW */ -// mvtc #10000h, psw /* Set Ubit & Ibit for PSW */ - -/* change PSW PM to user-mode */ -// MVFC PSW,R1 -// OR #00100000h,R1 -// PUSH.L R1 -// MVFC PC,R1 -// ADD #10,R1 -// PUSH.L R1 -// RTE -// NOP -// NOP - -/* start user program */ - bsr.a _main - -/* call to exit*/ -_exit: - bsr.a _exit - - .end diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/HighFrequencyTimerTest.c b/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/HighFrequencyTimerTest.c deleted file mode 100644 index af3cf2511..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/HighFrequencyTimerTest.c +++ /dev/null @@ -1,146 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* - * High frequency timer test as described in main.c. - */ - -/* Scheduler includes. */ -#include "FreeRTOS.h" - -/* Hardware specifics. */ -#include "iodefine.h" - -/* The set frequency of the interrupt. Deviations from this are measured as -the jitter. */ -#define timerINTERRUPT_FREQUENCY ( 20000UL ) - -/* The expected time between each of the timer interrupts - if the jitter was -zero. */ -#define timerEXPECTED_DIFFERENCE_VALUE ( ( unsigned short ) ( ( configPERIPHERAL_CLOCK_HZ / 8UL ) / timerINTERRUPT_FREQUENCY ) ) - -/* The highest available interrupt priority. */ -#define timerHIGHEST_PRIORITY ( 15 ) - -/* Misc defines. */ -#define timerTIMER_3_COUNT_VALUE ( *( ( unsigned short * ) 0x8801a ) ) /*( CMT3.CMCNT )*/ - -/*-----------------------------------------------------------*/ - -/* Interrupt handler in which the jitter is measured. */ -void vTimer2_ISR_Handler( void ) __attribute__((interrupt)); - -/* Stores the value of the maximum recorded jitter between interrupts. This is -displayed on one of the served web pages. */ -volatile unsigned short usMaxJitter = 0; - -/* Counts the number of high frequency interrupts - used to generate the run -time stats. */ -volatile unsigned long ulHighFrequencyTickCount = 0UL; - -/*-----------------------------------------------------------*/ - -void vSetupHighFrequencyTimer( void ) -{ - /* Timer CMT2 is used to generate the interrupts, and CMT3 is used - to measure the jitter. */ - - /* Enable compare match timer 2 and 3. */ - MSTP( CMT2 ) = 0; - MSTP( CMT3 ) = 0; - - /* Interrupt on compare match. */ - CMT2.CMCR.BIT.CMIE = 1; - - /* Set the compare match value. */ - CMT2.CMCOR = ( unsigned short ) ( ( ( configPERIPHERAL_CLOCK_HZ / timerINTERRUPT_FREQUENCY ) -1 ) / 8 ); - - /* Divide the PCLK by 8. */ - CMT2.CMCR.BIT.CKS = 0; - CMT3.CMCR.BIT.CKS = 0; - - /* Enable the interrupt... */ - _IEN( _CMT2_CMI2 ) = 1; - - /* ...and set its priority to the maximum possible, this is above the priority - set by configMAX_SYSCALL_INTERRUPT_PRIORITY so will nest. */ - _IPR( _CMT2_CMI2 ) = timerHIGHEST_PRIORITY; - - /* Start the timers. */ - CMT.CMSTR1.BIT.STR2 = 1; - CMT.CMSTR1.BIT.STR3 = 1; -} -/*-----------------------------------------------------------*/ - -void vTimer2_ISR_Handler( void ) -{ -volatile unsigned short usCurrentCount; -static unsigned short usMaxCount = 0; -static unsigned long ulErrorCount = 0UL; - - /* This is the highest priority interrupt in the system, so there is no - advantage to re-enabling interrupts here. - - We use the timer 1 counter value to measure the clock cycles between - the timer 0 interrupts. First stop the clock. */ - CMT.CMSTR1.BIT.STR3 = 0; - portNOP(); - portNOP(); - usCurrentCount = timerTIMER_3_COUNT_VALUE; - - /* Is this the largest count we have measured yet? */ - if( usCurrentCount > usMaxCount ) - { - if( usCurrentCount > timerEXPECTED_DIFFERENCE_VALUE ) - { - usMaxJitter = usCurrentCount - timerEXPECTED_DIFFERENCE_VALUE; - } - else - { - /* This should not happen! */ - ulErrorCount++; - } - - usMaxCount = usCurrentCount; - } - - /* Used to generate the run time stats. */ - ulHighFrequencyTickCount++; - - /* Clear the timer. */ - timerTIMER_3_COUNT_VALUE = 0; - - /* Then start the clock again. */ - CMT.CMSTR1.BIT.STR3 = 1; -} - - - - - - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/IntQueueTimer.c b/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/IntQueueTimer.c deleted file mode 100644 index ea02e3dbf..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/IntQueueTimer.c +++ /dev/null @@ -1,134 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* - * This file contains the non-portable and therefore RX62N specific parts of - * the IntQueue standard demo task - namely the configuration of the timers - * that generate the interrupts and the interrupt entry points. - */ - -/* Scheduler includes. */ -#include "FreeRTOS.h" -#include "task.h" - -/* Demo includes. */ -#include "IntQueueTimer.h" -#include "IntQueue.h" - -/* Hardware specifics. */ -#include "iodefine.h" - -#define tmrTIMER_0_1_FREQUENCY ( 2000UL ) -#define tmrTIMER_2_3_FREQUENCY ( 2001UL ) - -/* Handlers for the two timers used. See the documentation page -for this port on http://www.FreeRTOS.org for more information on writing -interrupt handlers. */ -void vT0_1_ISR_Handler( void ) __attribute((interrupt)); -void vT2_3_ISR_Handler( void ) __attribute((interrupt)); - -void vInitialiseTimerForIntQueueTest( void ) -{ - /* Ensure interrupts do not start until full configuration is complete. */ - portENTER_CRITICAL(); - { - /* Cascade two 8bit timer channels to generate the interrupts. - 8bit timer unit 1 (TMR0 and TMR1) and 8bit timer unit 2 (TMR2 and TMR3 are - utilised for this test. */ - - /* Enable the timers. */ - SYSTEM.MSTPCRA.BIT.MSTPA5 = 0; - SYSTEM.MSTPCRA.BIT.MSTPA4 = 0; - - /* Enable compare match A interrupt request. */ - TMR0.TCR.BIT.CMIEA = 1; - TMR2.TCR.BIT.CMIEA = 1; - - /* Clear the timer on compare match A. */ - TMR0.TCR.BIT.CCLR = 1; - TMR2.TCR.BIT.CCLR = 1; - - /* Set the compare match value. */ - TMR01.TCORA = ( unsigned short ) ( ( ( configPERIPHERAL_CLOCK_HZ / tmrTIMER_0_1_FREQUENCY ) -1 ) / 8 ); - TMR23.TCORA = ( unsigned short ) ( ( ( configPERIPHERAL_CLOCK_HZ / tmrTIMER_0_1_FREQUENCY ) -1 ) / 8 ); - - /* 16 bit operation ( count from timer 1,2 ). */ - TMR0.TCCR.BIT.CSS = 3; - TMR2.TCCR.BIT.CSS = 3; - - /* Use PCLK as the input. */ - TMR1.TCCR.BIT.CSS = 1; - TMR3.TCCR.BIT.CSS = 1; - - /* Divide PCLK by 8. */ - TMR1.TCCR.BIT.CKS = 2; - TMR3.TCCR.BIT.CKS = 2; - - /* Enable TMR 0, 2 interrupts. */ - IEN( TMR0, CMIA0 ) = 1; - IEN( TMR2, CMIA2 ) = 1; - - /* Set the timer interrupts to be above the kernel. The interrupts are - assigned different priorities so they nest with each other. */ - IPR( TMR0, CMIA0 ) = configMAX_SYSCALL_INTERRUPT_PRIORITY - 1; - IPR( TMR2, CMIA2 ) = ( configMAX_SYSCALL_INTERRUPT_PRIORITY - 2 ); - } - portEXIT_CRITICAL(); - - /* Ensure the interrupts are clear as they are edge detected. */ - IR( TMR0, CMIA0 ) = 0; - IR( TMR2, CMIA2 ) = 0; -} -/*-----------------------------------------------------------*/ - -void vT0_1_ISR_Handler( void ) -{ - /* Re-enabled interrupts. */ - __asm volatile( "SETPSW I" ); - - /* Call the handler that is part of the common code - this is where the - non-portable code ends and the actual test is performed. */ - portYIELD_FROM_ISR( xFirstTimerHandler() ); -} -/*-----------------------------------------------------------*/ - -void vT2_3_ISR_Handler( void ) -{ - /* Re-enabled interrupts. */ - __asm volatile( "SETPSW I" ); - - /* Call the handler that is part of the common code - this is where the - non-portable code ends and the actual test is performed. */ - portYIELD_FROM_ISR( xSecondTimerHandler() ); -} -/*-----------------------------------------------------------*/ - - - - - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/ParTest.c b/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/ParTest.c deleted file mode 100644 index 0e3e60c61..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/ParTest.c +++ /dev/null @@ -1,228 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/*----------------------------------------------------------- - * Simple IO routines to control the LEDs. - *-----------------------------------------------------------*/ - -/* Scheduler includes. */ -#include "FreeRTOS.h" -#include "task.h" - -/* Demo includes. */ -#include "partest.h" - -/* Hardware specifics. */ -#include - -#define partestNUM_LEDS ( 12 ) - -long lParTestGetLEDState( unsigned long ulLED ); - -/*-----------------------------------------------------------*/ - -void vParTestInitialise( void ) -{ - /* Port pin configuration is done by the low level set up prior to this - function being called. */ -} -/*-----------------------------------------------------------*/ - -void vParTestSetLED( unsigned long ulLED, signed long xValue ) -{ - if( ulLED < partestNUM_LEDS ) - { - if( xValue != 0 ) - { - /* Turn the LED on. */ - taskENTER_CRITICAL(); - { - switch( ulLED ) - { - case 0: LED4 = LED_ON; - break; - case 1: LED5 = LED_ON; - break; - case 2: LED6 = LED_ON; - break; - case 3: LED7 = LED_ON; - break; - case 4: LED8 = LED_ON; - break; - case 5: LED9 = LED_ON; - break; - case 6: LED10 = LED_ON; - break; - case 7: LED11 = LED_ON; - break; - case 8: LED12 = LED_ON; - break; - case 9: LED13 = LED_ON; - break; - case 10:LED14 = LED_ON; - break; - case 11:LED15 = LED_ON; - break; - } - } - taskEXIT_CRITICAL(); - } - else - { - /* Turn the LED off. */ - taskENTER_CRITICAL(); - { - switch( ulLED ) - { - case 0: LED4 = LED_OFF; - break; - case 1: LED5 = LED_OFF; - break; - case 2: LED6 = LED_OFF; - break; - case 3: LED7 = LED_OFF; - break; - case 4: LED8 = LED_OFF; - break; - case 5: LED9 = LED_OFF; - break; - case 6: LED10 = LED_OFF; - break; - case 7: LED11 = LED_OFF; - break; - case 8: LED12 = LED_OFF; - break; - case 9: LED13 = LED_OFF; - break; - case 10:LED14 = LED_OFF; - break; - case 11:LED15 = LED_OFF; - break; - } - - } - taskEXIT_CRITICAL(); - } - } -} -/*-----------------------------------------------------------*/ - -void vParTestToggleLED( unsigned long ulLED ) -{ - if( ulLED < partestNUM_LEDS ) - { - taskENTER_CRITICAL(); - { - if( lParTestGetLEDState( ulLED ) != 0x00 ) - { - vParTestSetLED( ulLED, 0 ); - } - else - { - vParTestSetLED( ulLED, 1 ); - } - } - taskEXIT_CRITICAL(); - } -} -/*-----------------------------------------------------------*/ - -long lParTestGetLEDState( unsigned long ulLED ) -{ -long lReturn = pdFALSE; - - if( ulLED < partestNUM_LEDS ) - { - switch( ulLED ) - { - case 0 : if( LED4 != LED_OFF ) - { - lReturn = pdTRUE; - } - break; - case 1 : if( LED5 != LED_OFF ) - { - lReturn = pdTRUE; - } - break; - case 2 : if( LED6 != LED_OFF ) - { - lReturn = pdTRUE; - } - break; - case 3 : if( LED7 != LED_OFF ) - { - lReturn = pdTRUE; - } - break; - case 4 : if( LED8 != LED_OFF ) - { - lReturn = pdTRUE; - } - break; - case 5 : if( LED9 != LED_OFF ) - { - lReturn = pdTRUE; - } - break; - case 6 : if( LED10 != LED_OFF ) - { - lReturn = pdTRUE; - } - break; - case 7 : if( LED11 != LED_OFF ) - { - lReturn = pdTRUE; - } - break; - case 8 : if( LED12 != LED_OFF ) - { - lReturn = pdTRUE; - } - break; - case 9 : if( LED13 != LED_OFF ) - { - lReturn = pdTRUE; - } - break; - case 10 : if( LED14 != LED_OFF ) - { - lReturn = pdTRUE; - } - break; - case 11 : if( LED15 != LED_OFF ) - { - lReturn = pdTRUE; - } - break; - } - } - - return lReturn; -} -/*-----------------------------------------------------------*/ - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/RTOSDemo.hwp b/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/RTOSDemo.hwp deleted file mode 100644 index 2b4754b94..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/RTOSDemo.hwp +++ /dev/null @@ -1,479 +0,0 @@ -[HIMDBVersion] -2.0 -[DATABASE_VERSION] -"2.8" -[PROJECT_DETAILS] -"RTOSDemo" "C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo" "C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\RTOSDemo.hwp" "RX" "KPIT GNURX [ELF]" "C Application" "RX600" "Other" -[INFORMATION] -"No project information available" -[TOOL_CHAIN] -"KPIT GNURX [ELF] Toolchain" "v10.03" -[CONFIGURATIONS] -"Blinky" "C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\Blinky" -"Debug" "C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\Debug" -"Debug_RX600_E1_E20_SYSTEM" "C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\Debug_RX600_E1_E20_SYSTEM" -"Debug_with_optimisation" "C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\Debug_with_optimisation" -[BUILD_PHASES] -"GNU Assembler" 1 -"GNU Compiler" 1 -"GNU Library Generator" 1 -"GNU Linker" 1 -[TOOL_ENVIRONMENT] -[EXTENSIONS] -"Absolute file" "ABS" -"Archive File" "A" -"Assembly include file" "INC" -"Assembly list file" "LIS" -"Assembly source file" "S" -"Assembly source file" "SRC" -"Binary file" "BIN" -"C header file" "H" -"C list file" "LST" -"C source file" "C" -"C++ header file" "HPP" -"C++ list file" "LPP" -"C++ source file" "CC" -"C++ source file" "CP" -"C++ source file" "CPP" -"CPU information file" "CPU" -"Calling information file" "CAL" -"Debug information file" "DBG" -"Expanded assembly source file" "EXP" -"Hex file" "HEX" -"Library file" "LIB" -"Library information file" "LBP" -"Linkage map file" "MAP" -"Object file" "OBJ" -"Optimize map file" "bls" -"Preprocess Assembly file" "ASM" -"Preprocessed C source file" "P" -"Preprocessed C++ source file" "PP" -"Profile file" "PRO" -"Relocatable file" "REL" -"Rts information file" "RTS" -"S-Record file" "MOT" -"Stack information file" "SNI" -"TD include object file" "RTI" -[FILE_GROUPS] -"Absolute file" "BIN" "NONE" "" -"Archive File" "BIN" "NONE" "" -"Assembly include file" "TEXT" "EDITOR" "" -"Assembly list file" "TEXT" "EDITOR" "" -"Assembly source file" "TEXT" "EDITOR" "" -"Binary file" "BIN" "NONE" "" -"C header file" "TEXT" "EDITOR" "" -"C list file" "TEXT" "EDITOR" "" -"C source file" "TEXT" "EDITOR" "" -"C++ header file" "TEXT" "EDITOR" "" -"C++ list file" "TEXT" "EDITOR" "" -"C++ source file" "TEXT" "EDITOR" "" -"CPU information file" "BIN" "NONE" "" -"Calling information file" "BIN" "NONE" "" -"Debug information file" "BIN" "NONE" "" -"Expanded assembly source file" "TEXT" "EDITOR" "" -"Hex file" "TEXT" "EDITOR" "" -"Library file" "BIN" "NONE" "" -"Library information file" "TEXT" "EDITOR" "" -"Linkage map file" "TEXT" "EDITOR" "" -"Object file" "BIN" "NONE" "" -"Optimize map file" "BIN" "NONE" "" -"Preprocess Assembly file" "TEXT" "EDITOR" "" -"Preprocessed C source file" "TEXT" "EDITOR" "" -"Preprocessed C++ source file" "TEXT" "EDITOR" "" -"Profile file" "BIN" "NONE" "" -"Relocatable file" "BIN" "NONE" "" -"Rts information file" "BIN" "NONE" "" -"S-Record file" "TEXT" "EDITOR" "" -"Stack information file" "BIN" "NONE" "" -"TD include object file" "BIN" "NONE" "" -[ASSOCIATED_APPLICATIONS] -[TOOLCHAIN_PHASE] -"GNU Assembler" -"GNU Compiler" -"GNU Library Generator" -"GNU Linker" -[UTILITY_PHASE] -[CUSTOM_PHASES] -[CUSTOM_PHASE_INPUT_GROUP] -[CUSTOM_PHASE_OUTPUT_SYNTAX] -[BUILD_ORDER] -"GNU Library Generator" 1 -"GNU Compiler" 1 -"GNU Assembler" 1 -"GNU Linker" 1 -[BUILD_PHASE_DETAILS] -"GNU Assembler" "Assembly source file" 1 -"GNU Compiler" "C source file|C++ source file|Preprocess Assembly file" 1 -"GNU Library Generator" "" 0 -"GNU Linker" "Object file|Library file|Relocatable file" 0 -[BUILD_FILE_ORDER_Assembly source file] -"GNU Assembler" 1 -[BUILD_FILE_ORDER_C source file] -"GNU Compiler" 1 -[BUILD_FILE_ORDER_C++ source file] -"GNU Compiler" 1 -[BUILD_FILE_ORDER_Preprocess Assembly file] -"GNU Compiler" 1 -[SCRAP] -"Project Generator Setup File" "" -[MAPPINGS] -"Assembly source file" "GNU Assembler" "GNU Compiler" -"Object file" "GNU Linker" "GNU Assembler" -"Object file" "GNU Linker" "GNU Compiler" -[PROJECT_FILES] -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\BlockQ.c" "User" "C source file|Standard Demo Files" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\GenQTest.c" "User" "C source file|Standard Demo Files" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\IntQueue.c" "User" "C source file|Standard Demo Files" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\PollQ.c" "User" "C source file|Standard Demo Files" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\QPeek.c" "User" "C source file|Standard Demo Files" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\blocktim.c" "User" "C source file|Standard Demo Files" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\death.c" "User" "C source file|Standard Demo Files" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\flash.c" "User" "C source file|Standard Demo Files" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\flop.c" "User" "C source file|Standard Demo Files" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\integer.c" "User" "C source file|Standard Demo Files" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\recmutex.c" "User" "C source file|Standard Demo Files" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\semtest.c" "User" "C source file|Standard Demo Files" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\apps\httpd\http-strings.c" "User" "C source file|FreeTCPIP (based on uIP)|webserver|Common" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd-fs.c" "User" "C source file|FreeTCPIP (based on uIP)|webserver|Common" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd.c" "User" "C source file|FreeTCPIP (based on uIP)|webserver|Common" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\psock.c" "User" "C source file|FreeTCPIP (based on uIP)" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\timer.c" "User" "C source file|FreeTCPIP (based on uIP)" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\uip.c" "User" "C source file|FreeTCPIP (based on uIP)" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\uip_arp.c" "User" "C source file|FreeTCPIP (based on uIP)" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\GNU-Files\hwinit.c" "User" "C source file|GNU Files" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\GNU-Files\inthandler.c" "User" "C source file|GNU Files" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\GNU-Files\start.asm" "User" "Preprocess Assembly file" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\HighFrequencyTimerTest.c" "User" "C source file" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\IntQueueTimer.c" "User" "C source file" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\ParTest.c" "User" "C source file" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\Renesas-Files\hwsetup.c" "User" "C source file|Renesas Files" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\main-blinky.c" "User" "C source file" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\main-full.c" "User" "C source file" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\uIP_Task.c" "User" "C source file" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\vects.c" "User" "C source file" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\webserver\EMAC.c" "User" "C source file|FreeTCPIP (based on uIP)|webserver|Port Specific" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\webserver\httpd-cgi.c" "User" "C source file|FreeTCPIP (based on uIP)|webserver|Port Specific" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\webserver\phy.c" "User" "C source file|FreeTCPIP (based on uIP)|webserver|Port Specific" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\list.c" "User" "C source file|FreeRTOS Source" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\portable\GCC\RX600\port.c" "User" "C source file|FreeRTOS Source|Portable Layer" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\portable\MemMang\heap_2.c" "User" "C source file|FreeRTOS Source|Portable Layer" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\queue.c" "User" "C source file|FreeRTOS Source" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\tasks.c" "User" "C source file|FreeRTOS Source" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\timers.c" "User" "C source file|FreeRTOS Source" 2 -[FOLDER] -"C header file" "C header file" -"C source file" "C source file" -"C source file|FreeRTOS Source" "" -"C source file|FreeRTOS Source|Portable Layer" "" -"C source file|FreeTCPIP (based on uIP)" "" -"C source file|FreeTCPIP (based on uIP)|webserver" "" -"C source file|FreeTCPIP (based on uIP)|webserver|Common" "" -"C source file|FreeTCPIP (based on uIP)|webserver|Port Specific" "" -"C source file|GNU Files" "" -"C source file|Renesas Files" "" -"C source file|Standard Demo Files" "" -"Preprocess Assembly file" "Preprocess Assembly file" -[GENERAL_DATA_PROJECT] -"USE_CUSTOM_LINKAGE_ORDER" "0" -[ON_DEMAND_COMPONENTS_LOADED] -[SYNC_SESSION_NAMES] -[SESSIONS] -"DefaultSession" "C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\DefaultSession.hsf" 0 -"SessionRX600_E1_E20_SYSTEM" "C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\SessionRX600_E1_E20_SYSTEM.hsf" 0 -[GENERAL_DATA_SESSION_DefaultSession] -[GENERAL_DATA_SESSION_SessionRX600_E1_E20_SYSTEM] -[OPTIONS_Blinky_GNU Assembler] -"Assembly source file" "099d5a320aa5bc10" 3 -[OPTIONS_Blinky_GNU Compiler] -"C source file" "0af6c431a4b1fc10" 2 -"C++ source file" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\BlockQ.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\GenQTest.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\IntQueue.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\PollQ.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\QPeek.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\blocktim.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\death.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\flash.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\flop.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\integer.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\recmutex.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\semtest.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\apps\httpd\http-strings.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd-fs.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\psock.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\timer.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\uip.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\uip_arp.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\GNU-Files\hwinit.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\GNU-Files\inthandler.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\GNU-Files\start.asm" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\HighFrequencyTimerTest.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\IntQueueTimer.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\ParTest.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\Renesas-Files\hwsetup.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\main-blinky.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\main-full.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\uIP_Task.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\vects.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\webserver\EMAC.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\webserver\httpd-cgi.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\webserver\phy.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\list.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\portable\GCC\RX600\port.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\portable\MemMang\heap_2.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\queue.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\tasks.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\timers.c" "0af6c431a4b1fc10" 2 -"Preprocess Assembly file" "0af6c431a4b1fc10" 2 -[OPTIONS_Blinky_GNU Library Generator] -"Single Shot" "099d5a320aa5bc10" 1 -[OPTIONS_Blinky_GNU Linker] -"Single Shot" "083de136c811cc10" 4 -[OPTIONS_Blinky] -"" 0 -"[V|VERSION|2] [B|DOEXTF|1] [S|INCDIR|^"$(TCINSTALL)\rx-elf\lib\gcc\rx-elf\4.5-GNURX_v10.03^"|^"$(CONFIGDIR)^"] [B|RSARCH|1] [B|FIXUPLIBS|1] [S|ARCHIVE|lib$(PROJECTNAME).a*libgcc.a] [S|OUTFORM|BOTH] [B|MFILEGEN|1] [S|PLMFILE|^"$(CONFIGDIR)\$(PROJECTNAME).map^"] [S|OUTFILE|^"$(CONFIGDIR)\$(PROJECTNAME).x^"] [S|GROUPDET|.fvectors|0|0||1|0xFFFFFF80|0|1|0|.fvectors|All-files|<>|<>|<>|.text|0|0||1|0xFFF80000|0|0|0|.text|All-files|<>|0|.text.*|All-files|<>|0|P|All-files|<>|1|etext|<>|<>|<>|.rvectors|0|0||0||0|1|1|_rvectors_start|<>|0|.rvectors|All-files|<>|1|_rvectors_end|<>|<>|<>|.init|0|0||0||0|0|0|.init|All-files|<>|<>|<>|.fini|0|0||0||0|0|0|.fini|All-files|<>|<>|<>|.got|0|0||0||0|0|0|.got|All-files|<>|0|.got.plt|All-files|<>|<>|<>|.rodata|0|0||0||0|0|0|.rodata|All-files|<>|0|.rodata.*|All-files|<>|0|C_1|All-files|<>|0|C_2|All-files|<>|0|C|All-files|<>|1|_erodata|<>|<>|<>|.eh_frame_hdr|0|0||0||0|0|0|.eh_frame_hdr|All-files|<>|<>|<>|.eh_frame|0|0||0||0|0|0|.eh_frame|All-files|<>|<>|<>|.jcr|0|0||0||0|0|0|.jcr|All-files|<>|<>|<>|.tors|0|0||0||0|0|1|__CTOR_LIST__|<>|1|___ctors|<>|0|.ctors|All-files|<>|1|___ctors_end|<>|1|__CTOR_END__|<>|1|__DTOR_LIST__|<>|1|___dtors|<>|0|.dtors|All-files|<>|1|___dtors_end|<>|1|__DTOR_END__|<>|1|_mdata|<>|<>|<>|.istack|0|0||1|0x00017FFC|0|0|1|_istack|<>|<>|<>|.ustack|0|0||1|0x000179BC|0|0|1|_ustack|<>|<>|<>|.data|0|2|_mdata|1|0x00001000|0|0|1|_data|<>|0|.data|All-files|<>|0|.data.*|All-files|<>|0|D|All-files|<>|0|D_1|All-files|<>|0|D_2|All-files|<>|1|_edata|<>|<>|<>|.gcc_exc|0|0||0||0|0|0|.gcc_exc|All-files|<>|<>|<>|.bss|0|0||0||0|0|1|_bss|<>|0|.bss|All-files|<>|0|.bss.*|All-files|<>|0|COMMON|All-files|<>|0|B|All-files|<>|0|B_1|All-files|<>|0|B_2|All-files|<>|1|_ebss|<>|1|_end|<>|<>|<>|] [S|APPTXT|^"-e _start^"] [S|CPUTYPE|RX600] [S|ENDIAN|LITTLE] [S|CPU|Other] [I|RMINTREGVAL|0] [I|RMMAXCONSTVAL|0] [I|RMMAXVARSVAL|0] [S|PROJECTTYPE|CAPPPROJECT] [B|DOOPTLIB|1] [B|DOPROJBUILT|1] -" 4 -"[V|VERSION|2] [S|INCDIR|^"$(TCINSTALL)\rx-elf\rx-elf\optlibinc^"|^"$(TCINSTALL)\rx-elf\lib\gcc\rx-elf\4.5-GNURX_v10.03\optlibinc^"|^"$(PROJDIR)\include^"|^"$(PROJDIR)\..\..\..\Source\include^"|^"$(PROJDIR)\..\..\..\Source\portable\GCC\RX600^"|^"$(PROJDIR)^"|^"$(PROJDIR)\..\..\Common\include^"] [S|DEFINES|DEBUG] [S|OUTPUT|OBJECT] [S|OBJPATH|^"$(CONFIGDIR)\$(FILELEAF).o^"] [B|DEBUG|1] [S|DEBUGFT|Native] [I|DEBUGLV|2] [S|ALIGN4|ALL] [B|LINCSYM|1] [B|LOMITDD|1] [B|LOMITFP|1] [B|OPTIMIZE|0] [I|OPTLV|1] [S|APPTXT|^"-Wall^"] [S|CPUTYPE|RX600] [S|ENDIAN|LITTLE] [S|CPU|Other] [I|RMINTREGVAL|0] [I|RMMAXCONSTVAL|0] [I|RMMAXVARSVAL|0] [S|PROJECTTYPE|CAPPPROJECT] [B|DOOPTLIB|1] -" 2 -"[V|VERSION|2] [S|OBJPATH|^"$(CONFIGDIR)\$(FILELEAF).o^"] [I|DEBUGLV|2] [B|LINCHLS|1] [B|LINCASS|1] [B|LINCSYM|1] [S|LFILE|^"$(CONFIGDIR)\$(FILELEAF).^"] [S|PROJECTTYPE|CAPPPROJECT] [S|INCDIR|^"$(PROJDIR)^"] [S|CPUTYPE|RX600] [S|ENDIAN|LITTLE] [S|CPU|Other] " 3 -"[V|VERSION|2] [S|OUTPUTPATH|^"$(CONFIGDIR)\lib$(PROJECTNAME).a^"] [B|OPTIMIZE|1] [I|OPTTYPE|1] [S|MODE|BUILD/CHANGED] [S|CPUTYPE|RX600] [S|ENDIAN|LITTLE] [S|CPU|Other] [B|DOPROJBUILT|1] [B|DOOPTLIB|1] [B|MATH|1] [B|STDIO|1] [B|STDLIB|1] [B|STRING|1] " 1 -[EXCLUDED_FILES_Blinky] -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\apps\httpd\http-strings.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd-fs.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\psock.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\timer.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\uip.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\uip_arp.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\BlockQ.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\blocktim.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\death.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\flash.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\flop.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\GenQTest.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\integer.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\IntQueue.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\PollQ.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\QPeek.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\recmutex.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\semtest.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\HighFrequencyTimerTest.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\IntQueueTimer.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\main-full.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\uIP_Task.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\webserver\EMAC.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\webserver\httpd-cgi.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\webserver\phy.c" -[LINKAGE_ORDER_Blinky] -[GENERAL_DATA_CONFIGURATION_Blinky] -[OPTIONS_Debug_GNU Assembler] -"Assembly source file" "097f0a320aa5bc10" 3 -[OPTIONS_Debug_GNU Compiler] -"C source file" "0fed7fd684b1fc10" 2 -"C++ source file" "0fed7fd684b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\BlockQ.c" "0fed7fd684b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\GenQTest.c" "0fed7fd684b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\IntQueue.c" "0fed7fd684b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\PollQ.c" "0fed7fd684b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\QPeek.c" "0fed7fd684b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\blocktim.c" "0fed7fd684b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\death.c" "0fed7fd684b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\flash.c" "0fed7fd684b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\flop.c" "0fed7fd684b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\integer.c" "0fed7fd684b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\recmutex.c" "0fed7fd684b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\semtest.c" "0fed7fd684b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\apps\httpd\http-strings.c" "0fed7fd684b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd-fs.c" "0fed7fd684b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd.c" "0fed7fd684b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\psock.c" "0fed7fd684b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\timer.c" "0fed7fd684b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\uip.c" "0fed7fd684b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\uip_arp.c" "0fed7fd684b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\GNU-Files\hwinit.c" "0fed7fd684b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\GNU-Files\inthandler.c" "0fed7fd684b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\GNU-Files\start.asm" "0fed7fd684b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\HighFrequencyTimerTest.c" "0fed7fd684b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\IntQueueTimer.c" "0fed7fd684b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\ParTest.c" "0fed7fd684b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\Renesas-Files\hwsetup.c" "0fed7fd684b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\main-blinky.c" "0fed7fd684b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\main-full.c" "0fed7fd684b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\uIP_Task.c" "0fed7fd684b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\vects.c" "0fed7fd684b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\webserver\EMAC.c" "0fed7fd684b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\webserver\httpd-cgi.c" "0fed7fd684b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\webserver\phy.c" "0fed7fd684b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\list.c" "0fed7fd684b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\portable\GCC\RX600\port.c" "0fed7fd684b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\portable\MemMang\heap_2.c" "0fed7fd684b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\queue.c" "0fed7fd684b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\tasks.c" "0fed7fd684b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\timers.c" "0fed7fd684b1fc10" 2 -"Preprocess Assembly file" "0fed7fd684b1fc10" 2 -[OPTIONS_Debug_GNU Library Generator] -"Single Shot" "0adae9320aa5bc10" 1 -[OPTIONS_Debug_GNU Linker] -"Single Shot" "083de136c811cc10" 4 -[OPTIONS_Debug] -"" 0 -"[V|VERSION|2] [B|DOEXTF|1] [S|INCDIR|^"$(TCINSTALL)\rx-elf\lib\gcc\rx-elf\4.5-GNURX_v10.03^"|^"$(CONFIGDIR)^"] [B|RSARCH|1] [B|FIXUPLIBS|1] [S|ARCHIVE|libgcc.a*lib$(PROJECTNAME).a] [S|OUTFORM|BOTH] [B|MFILEGEN|1] [S|PLMFILE|^"$(CONFIGDIR)\$(PROJECTNAME).map^"] [S|OUTFILE|^"$(CONFIGDIR)\$(PROJECTNAME).x^"] [S|GROUPDET|.fvectors|0|0||1|0xFFFFFF80|0|1|0|.fvectors|All-files|<>|<>|<>|.text|0|0||1|0xFFF80000|0|0|0|.text|All-files|<>|0|.text.*|All-files|<>|0|P|All-files|<>|1|etext|<>|<>|<>|.rvectors|0|0||0||0|1|1|_rvectors_start|<>|0|.rvectors|All-files|<>|1|_rvectors_end|<>|<>|<>|.init|0|0||0||0|0|0|.init|All-files|<>|<>|<>|.fini|0|0||0||0|0|0|.fini|All-files|<>|<>|<>|.got|0|0||0||0|0|0|.got|All-files|<>|0|.got.plt|All-files|<>|<>|<>|.rodata|0|0||0||0|0|0|.rodata|All-files|<>|0|.rodata.*|All-files|<>|0|C_1|All-files|<>|0|C_2|All-files|<>|0|C|All-files|<>|1|_erodata|<>|<>|<>|.eh_frame_hdr|0|0||0||0|0|0|.eh_frame_hdr|All-files|<>|<>|<>|.eh_frame|0|0||0||0|0|0|.eh_frame|All-files|<>|<>|<>|.jcr|0|0||0||0|0|0|.jcr|All-files|<>|<>|<>|.tors|0|0||0||0|0|1|__CTOR_LIST__|<>|1|___ctors|<>|0|.ctors|All-files|<>|1|___ctors_end|<>|1|__CTOR_END__|<>|1|__DTOR_LIST__|<>|1|___dtors|<>|0|.dtors|All-files|<>|1|___dtors_end|<>|1|__DTOR_END__|<>|1|_mdata|<>|<>|<>|.istack|0|0||1|0x00017FFC|0|0|1|_istack|<>|<>|<>|.ustack|0|0||1|0x000179BC|0|0|1|_ustack|<>|<>|<>|.data|0|2|_mdata|1|0x00001000|0|0|1|_data|<>|0|.data|All-files|<>|0|.data.*|All-files|<>|0|D|All-files|<>|0|D_1|All-files|<>|0|D_2|All-files|<>|1|_edata|<>|<>|<>|.gcc_exc|0|0||0||0|0|0|.gcc_exc|All-files|<>|<>|<>|.bss|0|0||0||0|0|1|_bss|<>|0|.bss|All-files|<>|0|.bss.*|All-files|<>|0|COMMON|All-files|<>|0|B|All-files|<>|0|B_1|All-files|<>|0|B_2|All-files|<>|1|_ebss|<>|1|_end|<>|<>|<>|] [B|WONCEU|1] [B|OUTTRAD|1] [S|APPTXT|^"-e _start^"] [S|CPUTYPE|RX600] [S|ENDIAN|LITTLE] [S|CPU|Other] [I|RMINTREGVAL|0] [I|RMMAXCONSTVAL|0] [I|RMMAXVARSVAL|0] [S|PROJECTTYPE|CAPPPROJECT] [B|DOOPTLIB|1] [B|DOPROJBUILT|1] -" 4 -"[V|VERSION|2] [S|INCDIR|^"$(TCINSTALL)\rx-elf\rx-elf\optlibinc^"|^"$(TCINSTALL)\rx-elf\lib\gcc\rx-elf\4.5-GNURX_v10.03\optlibinc^"|^"$(PROJDIR)\include^"|^"$(PROJDIR)\..\..\..\Source\include^"|^"$(PROJDIR)\..\..\..\Source\portable\GCC\RX600^"|^"$(PROJDIR)^"|^"$(PROJDIR)\..\..\Common\include^"|^"$(PROJDIR)\..\..\Common\ethernet\FreeTCPIP^"|^"$(PROJDIR)\webserver^"] [S|DEFINES|DEBUG] [S|OUTPUT|OBJECT] [S|OBJPATH|^"$(CONFIGDIR)\$(FILELEAF).o^"] [B|DEBUG|1] [S|DEBUGFT|Native] [I|DEBUGLV|2] [S|ALIGN4|ALL] [B|OPTIMIZE|0] [I|OPTLV|2] [S|CPUTYPE|RX600] [S|ENDIAN|LITTLE] [S|CPU|Other] [I|RMINTREGVAL|0] [I|RMMAXCONSTVAL|0] [I|RMMAXVARSVAL|0] [S|PROJECTTYPE|CAPPPROJECT] [B|DOOPTLIB|1] -" 2 -"[V|VERSION|2] [S|MODE|BUILD/CHANGED] [B|MATH|1] [B|STDIO|1] [B|STDLIB|1] [B|STRING|1] [B|DOPROJBUILT|1] [B|DOOPTLIB|1] [S|OUTPUTPATH|^"$(CONFIGDIR)\lib$(PROJECTNAME).a^"] [B|OPTIMIZE|1] [I|OPTTYPE|0] [S|CPUTYPE|RX600] [S|ENDIAN|LITTLE] [S|CPU|Other] [I|RMINTREGVAL|0] [I|RMMAXCONSTVAL|0] [I|RMMAXVARSVAL|0] -" 1 -"[V|VERSION|2] [S|OBJPATH|^"$(CONFIGDIR)\$(FILELEAF).o^"] [I|DEBUGLV|2] [B|LINCHLS|1] [B|LINCASS|1] [B|LINCSYM|1] [S|LFILE|^"$(CONFIGDIR)\$(FILELEAF).^"] [S|PROJECTTYPE|CAPPPROJECT] [S|INCDIR|^"$(PROJDIR)^"] [S|CPUTYPE|RX600] [S|ENDIAN|LITTLE] [S|CPU|Other] " 3 -[EXCLUDED_FILES_Debug] -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\main-blinky.c" -[LINKAGE_ORDER_Debug] -[GENERAL_DATA_CONFIGURATION_Debug] -[OPTIONS_Debug_RX600_E1_E20_SYSTEM_GNU Assembler] -"Assembly source file" "08328a320aa5bc10" 3 -[OPTIONS_Debug_RX600_E1_E20_SYSTEM_GNU Compiler] -"C source file" "0af6c431a4b1fc10" 2 -"C++ source file" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\BlockQ.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\GenQTest.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\IntQueue.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\PollQ.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\QPeek.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\blocktim.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\death.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\flash.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\flop.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\integer.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\recmutex.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\semtest.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\apps\httpd\http-strings.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd-fs.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\psock.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\timer.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\uip.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\uip_arp.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\GNU-Files\hwinit.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\GNU-Files\inthandler.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\GNU-Files\start.asm" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\HighFrequencyTimerTest.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\IntQueueTimer.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\ParTest.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\Renesas-Files\hwsetup.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\main-blinky.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\main-full.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\uIP_Task.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\vects.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\webserver\EMAC.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\webserver\httpd-cgi.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\webserver\phy.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\list.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\portable\GCC\RX600\port.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\portable\MemMang\heap_2.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\queue.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\tasks.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\timers.c" "0af6c431a4b1fc10" 2 -"Preprocess Assembly file" "0af6c431a4b1fc10" 2 -[OPTIONS_Debug_RX600_E1_E20_SYSTEM_GNU Library Generator] -"Single Shot" "08328a320aa5bc10" 1 -[OPTIONS_Debug_RX600_E1_E20_SYSTEM_GNU Linker] -"Single Shot" "083de136c811cc10" 4 -[OPTIONS_Debug_RX600_E1_E20_SYSTEM] -"" 0 -"[V|VERSION|2] [S|INCDIR|^"$(TCINSTALL)\rx-elf\rx-elf\optlibinc^"|^"$(TCINSTALL)\rx-elf\lib\gcc\rx-elf\4.5-GNURX_v10.03\optlibinc^"] [S|DEFINES|DEBUG] [S|OUTPUT|OBJECT] [S|OBJPATH|^"$(CONFIGDIR)\$(FILELEAF).o^"] [B|DEBUG|1] [S|DEBUGFT|Native] [I|DEBUGLV|2] [S|ALIGN4|ALL] [B|OPTIMIZE|0] [I|OPTLV|2] [S|CPUTYPE|RX600] [S|ENDIAN|LITTLE] [S|CPU|Other] [I|RMINTREGVAL|0] [I|RMMAXCONSTVAL|0] [I|RMMAXVARSVAL|0] [S|PROJECTTYPE|CAPPPROJECT] [B|DOOPTLIB|1] -" 2 -"[V|VERSION|2] [S|OBJPATH|^"$(CONFIGDIR)\$(FILELEAF).o^"] [I|DEBUGLV|2] [B|LINCHLS|1] [B|LINCASS|1] [B|LINCSYM|1] [S|LFILE|^"$(CONFIGDIR)\$(FILELEAF).^"] [S|PROJECTTYPE|CAPPPROJECT] [S|INCDIR|^"$(PROJDIR)^"] [S|CPUTYPE|RX600] [S|ENDIAN|LITTLE] [S|CPU|Other] " 3 -"[V|VERSION|2] [S|OUTFORM|BOTH] [B|MFILEGEN|1] [S|PLMFILE|^"$(CONFIGDIR)\$(PROJECTNAME).map^"] [S|APPTXT|^"-e _start^"] [S|OUTFILE|^"$(CONFIGDIR)\$(PROJECTNAME).x^"] [B|RSARCH|1] [B|FIXUPLIBS|1] [B|SUBCOMMAND|0] [S|PROJECTTYPE|CAPPPROJECT] [S|ENDIAN|LITTLE] [S|CPUTYPE|RX600] [S|CPU|Other] [B|DOOPTLIB|1] [B|DOPROJBUILT|1] [S|ARCHIVE|libRTOSDemo.a*libgcc.a] [S|INCDIR|^"$(TCINSTALL)\rx-elf\lib\gcc\rx-elf\4.5-GNURX_v10.03^"|^"$(CONFIGDIR)^"] [S|GROUPDET|.fvectors|0|0||1|0xFFFFFF80|0|1|0|.fvectors|All-files|<>|<>|<>|.text|0|0||1|0xFFFF8000|0|0|0|.text|All-files|<>|0|.text.*|All-files|<>|0|P|All-files|<>|1|etext|<>|<>|<>|.rvectors|0|0||0||0|1|1|_rvectors_start|<>|0|.rvectors|All-files|<>|1|_rvectors_end|<>|<>|<>|.init|0|0||0||0|0|0|.init|All-files|<>|<>|<>|.fini|0|0||0||0|0|0|.fini|All-files|<>|<>|<>|.got|0|0||0||0|0|0|.got|All-files|<>|0|.got.plt|All-files|<>|<>|<>|.rodata|0|0||0||0|0|0|.rodata|All-files|<>|0|.rodata.*|All-files|<>|0|C_1|All-files|<>|0|C_2|All-files|<>|0|C|All-files|<>|1|_erodata|<>|<>|<>|.eh_frame_hdr|0|0||0||0|0|0|.eh_frame_hdr|All-files|<>|<>|<>|.eh_frame|0|0||0||0|0|0|.eh_frame|All-files|<>|<>|<>|.jcr|0|0||0||0|0|0|.jcr|All-files|<>|<>|<>|.tors|0|0||0||0|0|1|__CTOR_LIST__|<>|1|___ctors|<>|0|.ctors|All-files|<>|1|___ctors_end|<>|1|__CTOR_END__|<>|1|__DTOR_LIST__|<>|1|___dtors|<>|0|.dtors|All-files|<>|1|___dtors_end|<>|1|__DTOR_END__|<>|1|_mdata|<>|<>|<>|.istack|0|0||1|0x00001808|0|0|1|_istack|<>|<>|<>|.ustack|0|0||1|0x00001708|0|0|1|_ustack|<>|<>|<>|.data|0|2|_mdata|1|0x00001001|0|0|1|_data|<>|0|.data|All-files|<>|0|.data.*|All-files|<>|0|D|All-files|<>|0|D_1|All-files|<>|0|D_2|All-files|<>|1|_edata|<>|<>|<>|.gcc_exc|0|0||0||0|0|0|.gcc_exc|All-files|<>|<>|<>|.bss|0|0||0||0|0|1|_bss|<>|0|.bss|All-files|<>|0|.bss.*|All-files|<>|0|COMMON|All-files|<>|0|B|All-files|<>|0|B_1|All-files|<>|0|B_2|All-files|<>|1|_ebss|<>|1|_end|<>|<>|<>] " 4 -"[V|VERSION|2] [S|OUTPUTPATH|^"$(CONFIGDIR)\lib$(PROJECTNAME).a^"] [B|OPTIMIZE|1] [I|OPTTYPE|1] [S|MODE|BUILD/CHANGED] [S|CPUTYPE|RX600] [S|ENDIAN|LITTLE] [S|CPU|Other] [B|DOPROJBUILT|1] [B|DOOPTLIB|1] [B|MATH|1] [B|STDIO|1] [B|STDLIB|1] [B|STRING|1] " 1 -[EXCLUDED_FILES_Debug_RX600_E1_E20_SYSTEM] -[LINKAGE_ORDER_Debug_RX600_E1_E20_SYSTEM] -[GENERAL_DATA_CONFIGURATION_Debug_RX600_E1_E20_SYSTEM] -[OPTIONS_Debug_with_optimisation_GNU Assembler] -"Assembly source file" "09863a320aa5bc10" 3 -[OPTIONS_Debug_with_optimisation_GNU Compiler] -"C source file" "0af6c431a4b1fc10" 2 -"C++ source file" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\BlockQ.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\GenQTest.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\IntQueue.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\PollQ.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\QPeek.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\blocktim.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\death.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\flash.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\flop.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\integer.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\recmutex.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\semtest.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\apps\httpd\http-strings.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd-fs.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\psock.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\timer.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\uip.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\uip_arp.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\GNU-Files\hwinit.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\GNU-Files\inthandler.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\GNU-Files\start.asm" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\HighFrequencyTimerTest.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\IntQueueTimer.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\ParTest.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\Renesas-Files\hwsetup.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\main-blinky.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\main-full.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\uIP_Task.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\vects.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\webserver\EMAC.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\webserver\httpd-cgi.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\webserver\phy.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\list.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\portable\GCC\RX600\port.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\portable\MemMang\heap_2.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\queue.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\tasks.c" "0af6c431a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\timers.c" "0af6c431a4b1fc10" 2 -"Preprocess Assembly file" "0af6c431a4b1fc10" 2 -[OPTIONS_Debug_with_optimisation_GNU Library Generator] -"Single Shot" "097f0a320aa5bc10" 1 -[OPTIONS_Debug_with_optimisation_GNU Linker] -"Single Shot" "083de136c811cc10" 4 -[OPTIONS_Debug_with_optimisation] -"" 0 -"[V|VERSION|2] [B|DOEXTF|1] [S|INCDIR|^"$(TCINSTALL)\rx-elf\lib\gcc\rx-elf\4.5-GNURX_v10.03^"|^"$(CONFIGDIR)^"] [B|RSARCH|1] [B|FIXUPLIBS|1] [S|ARCHIVE|lib$(PROJECTNAME).a*libgcc.a] [S|OUTFORM|BOTH] [B|MFILEGEN|1] [S|PLMFILE|^"$(CONFIGDIR)\$(PROJECTNAME).map^"] [S|OUTFILE|^"$(CONFIGDIR)\$(PROJECTNAME).x^"] [S|GROUPDET|.fvectors|0|0||1|0xFFFFFF80|0|1|0|.fvectors|All-files|<>|<>|<>|.text|0|0||1|0xFFF80000|0|0|0|.text|All-files|<>|0|.text.*|All-files|<>|0|P|All-files|<>|1|etext|<>|<>|<>|.rvectors|0|0||0||0|1|1|_rvectors_start|<>|0|.rvectors|All-files|<>|1|_rvectors_end|<>|<>|<>|.init|0|0||0||0|0|0|.init|All-files|<>|<>|<>|.fini|0|0||0||0|0|0|.fini|All-files|<>|<>|<>|.got|0|0||0||0|0|0|.got|All-files|<>|0|.got.plt|All-files|<>|<>|<>|.rodata|0|0||0||0|0|0|.rodata|All-files|<>|0|.rodata.*|All-files|<>|0|C_1|All-files|<>|0|C_2|All-files|<>|0|C|All-files|<>|1|_erodata|<>|<>|<>|.eh_frame_hdr|0|0||0||0|0|0|.eh_frame_hdr|All-files|<>|<>|<>|.eh_frame|0|0||0||0|0|0|.eh_frame|All-files|<>|<>|<>|.jcr|0|0||0||0|0|0|.jcr|All-files|<>|<>|<>|.tors|0|0||0||0|0|1|__CTOR_LIST__|<>|1|___ctors|<>|0|.ctors|All-files|<>|1|___ctors_end|<>|1|__CTOR_END__|<>|1|__DTOR_LIST__|<>|1|___dtors|<>|0|.dtors|All-files|<>|1|___dtors_end|<>|1|__DTOR_END__|<>|1|_mdata|<>|<>|<>|.istack|0|0||1|0x00017FFC|0|0|1|_istack|<>|<>|<>|.ustack|0|0||1|0x000179BC|0|0|1|_ustack|<>|<>|<>|.data|0|2|_mdata|1|0x00001000|0|0|1|_data|<>|0|.data|All-files|<>|0|.data.*|All-files|<>|0|D|All-files|<>|0|D_1|All-files|<>|0|D_2|All-files|<>|1|_edata|<>|<>|<>|.gcc_exc|0|0||0||0|0|0|.gcc_exc|All-files|<>|<>|<>|.bss|0|0||0||0|0|1|_bss|<>|0|.bss|All-files|<>|0|.bss.*|All-files|<>|0|COMMON|All-files|<>|0|B|All-files|<>|0|B_1|All-files|<>|0|B_2|All-files|<>|1|_ebss|<>|1|_end|<>|<>|<>|] [S|APPTXT|^"-e _start^"] [S|CPUTYPE|RX600] [S|ENDIAN|LITTLE] [S|CPU|Other] [I|RMINTREGVAL|0] [I|RMMAXCONSTVAL|0] [I|RMMAXVARSVAL|0] [S|PROJECTTYPE|CAPPPROJECT] [B|DOOPTLIB|1] [B|DOPROJBUILT|1] -" 4 -"[V|VERSION|2] [S|INCDIR|^"$(TCINSTALL)\rx-elf\rx-elf\optlibinc^"|^"$(TCINSTALL)\rx-elf\lib\gcc\rx-elf\4.5-GNURX_v10.03\optlibinc^"|^"$(PROJDIR)\include^"|^"$(PROJDIR)\..\..\..\Source\include^"|^"$(PROJDIR)\..\..\..\Source\portable\GCC\RX600^"|^"$(PROJDIR)^"|^"$(PROJDIR)\..\..\Common\include^"|^"$(PROJDIR)\..\..\Common\Ethernet\FreeTCPIP^"|^"$(PROJDIR)\webserver^"] [S|DEFINES|DEBUG|INCLUDE_HIGH_FREQUENCY_TIMER_TEST] [S|OUTPUT|OBJECT] [S|OBJPATH|^"$(CONFIGDIR)\$(FILELEAF).o^"] [B|DEBUG|1] [S|DEBUGFT|Native] [I|DEBUGLV|2] [S|ALIGN4|ALL] [B|OPTIMIZE|1] [I|OPTLV|1] [S|APPTXT|^"-Wall^"] [S|CPUTYPE|RX600] [S|ENDIAN|LITTLE] [S|CPU|Other] [I|RMINTREGVAL|0] [I|RMMAXCONSTVAL|0] [I|RMMAXVARSVAL|0] [S|PROJECTTYPE|CAPPPROJECT] [B|DOOPTLIB|1] -" 2 -"[V|VERSION|2] [S|OBJPATH|^"$(CONFIGDIR)\$(FILELEAF).o^"] [I|DEBUGLV|2] [B|LINCHLS|1] [B|LINCASS|1] [B|LINCSYM|1] [S|LFILE|^"$(CONFIGDIR)\$(FILELEAF).^"] [S|PROJECTTYPE|CAPPPROJECT] [S|INCDIR|^"$(PROJDIR)^"] [S|CPUTYPE|RX600] [S|ENDIAN|LITTLE] [S|CPU|Other] " 3 -"[V|VERSION|2] [S|OUTPUTPATH|^"$(CONFIGDIR)\lib$(PROJECTNAME).a^"] [B|OPTIMIZE|1] [I|OPTTYPE|1] [S|MODE|BUILD/CHANGED] [S|CPUTYPE|RX600] [S|ENDIAN|LITTLE] [S|CPU|Other] [B|DOPROJBUILT|1] [B|DOOPTLIB|1] [B|MATH|1] [B|STDIO|1] [B|STDLIB|1] [B|STRING|1] " 1 -[EXCLUDED_FILES_Debug_with_optimisation] -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\main-blinky.c" -[LINKAGE_ORDER_Debug_with_optimisation] -[GENERAL_DATA_CONFIGURATION_Debug_with_optimisation] -[GENERAL_DATA_CONFIGURATION_SESSION_Blinky_DefaultSession] -[SESSION_DATA_CONFIGURATION_SESSION_Blinky_DefaultSession] -"MEMORY_MAPPING_OPTIONS" "" -[GENERAL_DATA_CONFIGURATION_SESSION_Blinky_SessionRX600_E1_E20_SYSTEM] -[SESSION_DATA_CONFIGURATION_SESSION_Blinky_SessionRX600_E1_E20_SYSTEM] -"MEMORY_MAPPING_OPTIONS" "Unknown Options" -[GENERAL_DATA_CONFIGURATION_SESSION_Debug_DefaultSession] -[SESSION_DATA_CONFIGURATION_SESSION_Debug_DefaultSession] -"MEMORY_MAPPING_OPTIONS" "" -[GENERAL_DATA_CONFIGURATION_SESSION_Debug_SessionRX600_E1_E20_SYSTEM] -[SESSION_DATA_CONFIGURATION_SESSION_Debug_SessionRX600_E1_E20_SYSTEM] -"MEMORY_MAPPING_OPTIONS" "Unknown Options" -[GENERAL_DATA_CONFIGURATION_SESSION_Debug_RX600_E1_E20_SYSTEM_DefaultSession] -[SESSION_DATA_CONFIGURATION_SESSION_Debug_RX600_E1_E20_SYSTEM_DefaultSession] -"MEMORY_MAPPING_OPTIONS" "" -[GENERAL_DATA_CONFIGURATION_SESSION_Debug_RX600_E1_E20_SYSTEM_SessionRX600_E1_E20_SYSTEM] -[SESSION_DATA_CONFIGURATION_SESSION_Debug_RX600_E1_E20_SYSTEM_SessionRX600_E1_E20_SYSTEM] -"MEMORY_MAPPING_OPTIONS" "Unknown Options" -[GENERAL_DATA_CONFIGURATION_SESSION_Debug_with_optimisation_DefaultSession] -[SESSION_DATA_CONFIGURATION_SESSION_Debug_with_optimisation_DefaultSession] -"MEMORY_MAPPING_OPTIONS" "" -[GENERAL_DATA_CONFIGURATION_SESSION_Debug_with_optimisation_SessionRX600_E1_E20_SYSTEM] -[SESSION_DATA_CONFIGURATION_SESSION_Debug_with_optimisation_SessionRX600_E1_E20_SYSTEM] -"MEMORY_MAPPING_OPTIONS" "Unknown Options" -[EXT_DEBUGGER_INFO] -0 "" "" "" "" -[END] diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/RTOSDemo.nav b/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/RTOSDemo.nav deleted file mode 100644 index 01cd05019..000000000 Binary files a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/RTOSDemo.nav and /dev/null differ diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/RTOSDemo.tps b/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/RTOSDemo.tps deleted file mode 100644 index fa3691409..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/RTOSDemo.tps +++ /dev/null @@ -1,48 +0,0 @@ -[HIMDBVersion] -2.0 -[DATABASE_VERSION] -"1.1" -[SESSIONS_] -"DefaultSession" -"SessionRX600_E1_E20_SYSTEM" -[CONFIGURATIONS] -"Blinky" -"Debug" -"Debug_RX600_E1_E20_SYSTEM" -"Debug_with_optimisation" -[CURRENT_CONFIGURATION] -"Blinky" -[CURRENT_SESSION] -"SessionRX600_E1_E20_SYSTEM" -[GENERAL_DATA_PROJECT] -[GENERAL_DATA_CONFIGURATION_Blinky] -"PROJECT_FILES_MODIFIED_DATA_TAG" "FALSE" -[SESSIONS_Blinky] -"DefaultSession" -"SessionRX600_E1_E20_SYSTEM" -[GENERAL_DATA_CONFIGURATION_Debug] -"PROJECT_FILES_MODIFIED_DATA_TAG" "FALSE" -[SESSIONS_Debug] -"DefaultSession" -"SessionRX600_E1_E20_SYSTEM" -[GENERAL_DATA_CONFIGURATION_Debug_RX600_E1_E20_SYSTEM] -"PROJECT_FILES_MODIFIED_DATA_TAG" "TRUE" -[SESSIONS_Debug_RX600_E1_E20_SYSTEM] -"DefaultSession" -"SessionRX600_E1_E20_SYSTEM" -[GENERAL_DATA_CONFIGURATION_Debug_with_optimisation] -"PROJECT_FILES_MODIFIED_DATA_TAG" "FALSE" -[SESSIONS_Debug_with_optimisation] -"DefaultSession" -"SessionRX600_E1_E20_SYSTEM" -[GENERAL_DATA_SESSION_DefaultSession] -[GENERAL_DATA_CONFIGURATION_SESSION_Blinky_SessionRX600_E1_E20_SYSTEM] -[GENERAL_DATA_CONFIGURATION_SESSION_Blinky_DefaultSession] -[GENERAL_DATA_CONFIGURATION_SESSION_Debug_RX600_E1_E20_SYSTEM_SessionRX600_E1_E20_SYSTEM] -[GENERAL_DATA_CONFIGURATION_SESSION_Debug_DefaultSession] -[GENERAL_DATA_CONFIGURATION_SESSION_Debug_RX600_E1_E20_SYSTEM_DefaultSession] -[GENERAL_DATA_CONFIGURATION_SESSION_Debug_SessionRX600_E1_E20_SYSTEM] -[GENERAL_DATA_CONFIGURATION_SESSION_Debug_with_optimisation_DefaultSession] -[GENERAL_DATA_CONFIGURATION_SESSION_Debug_with_optimisation_SessionRX600_E1_E20_SYSTEM] -[GENERAL_DATA_SESSION_SessionRX600_E1_E20_SYSTEM] -[END] diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/Renesas-Files/hwsetup.c b/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/Renesas-Files/hwsetup.c deleted file mode 100644 index f6e9bdc9a..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/Renesas-Files/hwsetup.c +++ /dev/null @@ -1,149 +0,0 @@ -/****************************************************************************** -* DISCLAIMER - -* This software is supplied by Renesas Technology Corp. and is only -* intended for use with Renesas products. No other uses are authorized. - -* This software is owned by Renesas Technology Corp. and is protected under -* all applicable laws, including copyright laws. - -* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES -* REGARDING THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, -* INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A -* PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY -* DISCLAIMED. - -* TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS -* TECHNOLOGY CORP. NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE -* FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES -* FOR ANY REASON RELATED TO THE THIS SOFTWARE, EVEN IF RENESAS OR ITS -* AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - -* Renesas reserves the right, without notice, to make changes to this -* software and to discontinue the availability of this software. -* By using this software, you agree to the additional terms and -* conditions found by accessing the following link: -* http://www.renesas.com/disclaimer -****************************************************************************** -* Copyright (C) 2008. Renesas Technology Corp., All Rights Reserved. -******************************************************************************* -* File Name : hwsetup.c -* Version : 1.00 -* Description : Power up hardware initializations -****************************************************************************** -* History : DD.MM.YYYY Version Description -* : 15.02.2010 1.00 First Release -******************************************************************************/ - - -/****************************************************************************** -Includes , "Project Includes" -******************************************************************************/ -#include "iodefine.h" -#include "yrdkrx62ndef.h" -// #include "lcd.h" Uncomment this if an LCD is present. - -/****************************************************************************** -Typedef definitions -******************************************************************************/ - -/****************************************************************************** -Macro definitions -******************************************************************************/ - -/****************************************************************************** -Imported global variables and functions (from other files) -******************************************************************************/ - -/****************************************************************************** -Exported global variables and functions (to be accessed by other files) -******************************************************************************/ - -/****************************************************************************** -Private global variables and functions -******************************************************************************/ - -/****************************************************************************** -* Function Name: HardwareSetup -* Description : This function does initial setting for CPG port pins used in -* : the Demo including the MII pins of the Ethernet PHY connection. -* Arguments : none -* Return Value : none -******************************************************************************/ -void HardwareSetup(void) -{ - unsigned long sckcr = 0; - - /* Configure system clocks based on header */ - sckcr += (ICLK_MUL==8) ? (0ul << 24) : (ICLK_MUL==4) ? (1ul << 24) : (ICLK_MUL==2) ? (2ul << 24) : (3ul << 24); - sckcr += (BCLK_MUL==8) ? (0ul << 16) : (BCLK_MUL==4) ? (1ul << 16) : (BCLK_MUL==2) ? (2ul << 16) : (3ul << 16); - sckcr += (PCLK_MUL==8) ? (0ul << 8) : (PCLK_MUL==4) ? (1ul << 8) : (PCLK_MUL==2) ? (2ul << 8) : (3ul << 8); - SYSTEM.SCKCR.LONG = sckcr; - - /* Module standby clear - EtherC, EDMAC */ - SYSTEM.MSTPCRB.BIT.MSTPB15 = 0; - - PORT0.DDR.BYTE = 0x00 ; // Port 0: inputs (IRQ's from ethernet & WiFi) - PORT1.DDR.BYTE = 0x00 ; // Port 1: inputs (IIC and USB settings will override these later) - PORT2.DDR.BYTE = 0x1A ; // Port 2: USB signals - PORT3.DDR.BYTE = 0x04 ; // Port 3: JTAG (P30, P31, P34), CAN (P32=Tx, P33=Rx), NMI (P35) - PORT4.DDR.BYTE = 0x00 ; // Port 4: Switches (P40-P42), AIN (P43-P47) - PORT5.DDR.BYTE = 0x3B ; // Port 5: Audio (P55,P54), BCLK (P53), SCI (P52=Rx, P50=Tx), LCD-RS (P51) - - PORTA.DR.BYTE = 0x00 ; // Port A outputs all LOW to start - PORTA.DDR.BYTE = 0xFF ; // Port A: Expansion (PA0-PA2), Ether (PA3-PA5), Audio (PA6-PA7) - - PORTB.DR.BYTE = 0x00 ; - PORTB.DDR.BYTE = 0x70 ; // Port B: Ether - - PORTC.DR.BYTE = 0xF7 ; // Port C: Chip selects, clock = high; IO reset = low (not reset, needed by Ether PHY) - PORTC.DDR.BYTE = 0x7F ; // Port C: SPI (PC0-2, PC4-7), IO reset (PC3) - - // Ethernet settings - IOPORT.PFENET.BYTE = 0x82; // Enable Ether poins, RMII mode, enable LINKSTA - PORTA.ICR.BIT.B5 = 1; // ET_LINKSTA - PORTA.ICR.BIT.B3 = 1; // ET_MDIO - PORTB.ICR.BIT.B0 = 1; // RMII_RXD1 - PORTB.ICR.BIT.B1 = 1; // RMII_RXD0 - PORTB.ICR.BIT.B2 = 1; // REF50CLK - PORTB.ICR.BIT.B3 = 1; // RMII_RX_ER - PORTB.ICR.BIT.B7 = 1; // RMII_CRS_DV - - - /* Configure LEDs */ - LED4 = LED_OFF; - LED5 = LED_OFF; - LED6 = LED_OFF; - LED7 = LED_OFF; - LED8 = LED_OFF; - LED9 = LED_OFF; - LED10 = LED_OFF; - LED11 = LED_OFF; - LED12 = LED_OFF; - LED13 = LED_OFF; - LED14 = LED_OFF; - LED15 = LED_OFF; - - LED4_DDR = 1; - LED5_DDR = 1; - LED6_DDR = 1; - LED7_DDR = 1; - LED8_DDR = 1; - LED9_DDR = 1; - LED10_DDR = 1; - LED11_DDR = 1; - LED12_DDR = 1; - LED13_DDR = 1; - LED14_DDR = 1; - LED15_DDR = 1; - - /* Configure push button switches */ - SW1_DDR = 0; - SW2_DDR = 0; - SW3_DDR = 0; - SW1_ICR = 1; - SW2_ICR = 1; - SW3_ICR = 1; -} - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/SessionRX600_E1_E20_SYSTEM.hsf b/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/SessionRX600_E1_E20_SYSTEM.hsf deleted file mode 100644 index 390406d83..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/SessionRX600_E1_E20_SYSTEM.hsf +++ /dev/null @@ -1,328 +0,0 @@ -[HIMDBVersion] -2.0 -[DATABASE_VERSION] -"2.3" -[SESSION_DETAILS] -"" -[INFORMATION] -"" -[GENERAL_DATA] -"FIRST_CONNECTION_TAG" "NO" -"MRULABELS_DATAMANAGER_KEY" "00000000|FFFFFFFF|FFFFFFFC|FFF80000" -"RESET_CPU_AFTER_DOWNLOAD_TAG" "VARIANT_TRUE_STORE_TAG" -"{0AF60212-1285-4767-AB8A-73DB62CC8DBD}R_ECXOS_0ECXOS_OBJECT01" " " -"{0AF60212-1285-4767-AB8A-73DB62CC8DBD}R_ECXOS_0ECXOS_OBJECT02" " " -"{0AF60212-1285-4767-AB8A-73DB62CC8DBD}R_ECXOS_0ECXOS_OBJECT03" " " -"{0AF60212-1285-4767-AB8A-73DB62CC8DBD}R_ECXOS_0ECXOS_OBJECT04" " " -"{0AF60212-1285-4767-AB8A-73DB62CC8DBD}R_ECXOS_0ECXOS_OBJECT05" " " -"{0AF60212-1285-4767-AB8A-73DB62CC8DBD}R_ECXOS_0ECXOS_OBJECT06" " " -"{0AF60212-1285-4767-AB8A-73DB62CC8DBD}R_ECXOS_0ECXOS_OBJECT07" " " -"{0AF60212-1285-4767-AB8A-73DB62CC8DBD}R_ECXOS_0ECXOS_OBJECT08" " " -"{0AF60212-1285-4767-AB8A-73DB62CC8DBD}R_ECXOS_0ECXOS_OBJECT09" " " -"{0AF60212-1285-4767-AB8A-73DB62CC8DBD}R_ECXOS_0ECXOS_OBJECT10" " " -"{0AF60212-1285-4767-AB8A-73DB62CC8DBD}R_ECXOS_0ECXOS_OBJECT_DEFINE_FILE" "" -"{0AF60212-1285-4767-AB8A-73DB62CC8DBD}R_ECXOS_0ECXOS_OBJECT_DEFINE_SELETCT" "1" -"{0AF60212-1285-4767-AB8A-73DB62CC8DBD}R_ECXOS_0ECXOS_OBJECT_MODIFIED" "1" -"{0AF60212-1285-4767-AB8A-73DB62CC8DBD}R_ECXOS_0ECXOS_OBJECT_NOREAD_OSOBJECT" "0" -"{0AF60212-1285-4767-AB8A-73DB62CC8DBD}R_ECXOS_0ECXOS_OBJECT_SAMPLING_PERIOD" "100" -"{228DB593-0AB2-4EBE-A098-A2CABF094E46}RamMonitorCtrlViews" "0" -"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapCtrlECX_MAP_FIND_SYMBOL_LIST" "" -"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapCtrlViews" "0" -"{2BA6A3EE-6488-11D5-80D4-00C04F68EAD7}ECXLABEL_ADDDLG_ADDR" "" -"{2BA6A3EE-6488-11D5-80D4-00C04F68EAD7}LabelCtrlSymbolFileDir" "" -"{2BA6A3EE-6488-11D5-80D4-00C04F68EAD7}LabelCtrlSymbolFileName" "" -"{2BA6A3EE-6488-11D5-80D4-00C04F68EAD7}LabelCtrlViews" "0" -"{2BA6A3EF-6488-11D5-80D4-00C04F68EAD7}StatusCtrlViews" "0" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlBatchFileName" "" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlBreakpointFlag" "-1 " -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlBreakpointStatus" "-1 " -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlBrowseDirectory" "" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlLogFileName" "" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlSplitterPosition" "242" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlViews" "1" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlWindowProperties" "17" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineWndInstanceKey0" "{WK_00000001_CmdLine}" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}TclTkCtrlLogFileName" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_COMPARE_END_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_COMPARE_START_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_DISPLAY_DEST_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_DISPLAY_END_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_DISPLAY_START_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_FILL_END_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_FILL_START_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_MOVE_END_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_MOVE_START_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_SEARCH_END_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_SEARCH_START_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_SET_DEST_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_TEST_END_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_TEST_START_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryCtrlViews" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0AutoRefreshEnableTopPane" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0AutoRefreshIntervalTopPane" "100" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0DataLength" "4" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0DispAddressTopPane" "-164" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0DispCode" "42208" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0DispColumnCount" "4" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0IsDispCode" "1" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0IsDispFloat" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0IsDispLabel" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0IsDispRegister" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0IsRegFollowEnableTopPane" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0LabelWidth" "96" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0Radix" "16" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0RegFollowRegTblIDTopPane" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0RegisterWidth" "96" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0ScrollEndAddress" "-1" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0ScrollStartAddress" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0StartUpSymbolTopPane" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewAInstanceKey0" "{WK_00000001_MEMORY}RTOSDemoSessionRX600_E1_E20_SYSTEM" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0AutoRefreshEnableTopPane" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0AutoRefreshIntervalTopPane" "100" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0DataLength" "4" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0DispAddressTopPane" "-4" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0DispCode" "42208" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0DispColumnCount" "4" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0IsDispCode" "1" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0IsDispFloat" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0IsDispLabel" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0IsDispRegister" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0IsRegFollowEnableTopPane" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0LabelWidth" "96" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0Radix" "16" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0RegFollowRegTblIDTopPane" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0RegisterWidth" "96" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0ScrollEndAddress" "-1" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0ScrollStartAddress" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0StartUpSymbolTopPane" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewBInstanceKey0" "{WK_00000001_MEMORY}RTOSDemoSessionRX600_E1_E20_SYSTEMViewB" -"{4F025ABC-BE66-4CB6-9CEE-06C61418278E}Trace2CtrlSaveFileDir" "" -"{4F025ABC-BE66-4CB6-9CEE-06C61418278E}Trace2CtrlSaveFileName" "" -"{4F025ABC-BE66-4CB6-9CEE-06C61418278E}Trace2CtrlViews" "0" -"{5F75FDA0-6FF0-11D5-B7CE-00E029352378}PACtrlSaveFileDir" "" -"{5F75FDA0-6FF0-11D5-B7CE-00E029352378}PACtrlSaveFileName" "" -"{5F75FDA0-6FF0-11D5-B7CE-00E029352378}PACtrlViews" "0" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_EVAL_DENORMAL_MODE" "16777216" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_EVAL_ROUND_MODE" "768" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_0" "000000000000BBB0" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_1" "000000000000C9BC" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_10" "0000000000000004" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_11" "0000000041180000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_12" "00000000A5A5A5A5" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_13" "00000000A5A5A5A5" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_14" "00000000A5A5A5A5" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_15" "00000000A5A5A5A5" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_16" "000000000000BBB0" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_17" "0000000000017FA0" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_18" "0000000000030000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_19" "00000000FFF8B898" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_2" "00000000A5A5A5A5" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_20" "00000000FFF8E908" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_21" "0000000080000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_22" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_23" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_24" "0000000000000100" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_25" "1234567887650000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_3" "00000000A5A5A5A5" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_4" "00000000A5A5A5A5" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_5" "00000000A5A5A5A5" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_6" "000000000000BBB0" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_7" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_8" "00000000A5A5A5A5" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_9" "00000000A5A5A5A5" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_COUNT" "26" -"{6C4D5B81-FD67-46A9-A089-EA44DCDE47FD}RAMMonitorManagerCtrlBlockInfoFileDir" "" -"{6C4D5B81-FD67-46A9-A089-EA44DCDE47FD}RAMMonitorManagerCtrlBlockInfoFileName" "" -"{7943C44E-7D44-422A-9140-4CF55C88F7D3}DifferenceCtrlViews" "0" -"{855C64C3-E49C-4450-9BCA-C9822566D214}OSObjectCtrlViews" "0" -"{8A898260-6F1D-11D5-8EB6-00004CC34E9D}ECX_WAVE" "00000000,00000000,0,0" -"{8A898260-6F1D-11D5-8EB6-00004CC34E9D}ECX_WAVE_ADDRESS_NAME" "" -"{8A898260-6F1D-11D5-8EB6-00004CC34E9D}ECX_WAVE_COMB_ADDRESS" ",,,," -"{8A898260-6F1D-11D5-8EB6-00004CC34E9D}ECX_WAVE_COMB_BUFFER" ",,,," -"{8A898260-6F1D-11D5-8EB6-00004CC34E9D}ECX_WAVE_SAMPLING_RATE" "1000" -"{8A898260-6F1D-11D5-8EB6-00004CC34E9D}WaveformCtrlViews" "0" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersCtrlViews" "0" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWnd0ColumnWidth" "47,153,48" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWnd0ECX_REGISTER_COUNT" "33" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWnd0ECX_REGISTER_DISPLAYED" "1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWnd0HideFLAGs" "0" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWnd0HideRadix" "0" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWnd0LastFileName" "" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWnd0RadixList" "16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,2,16,16,16,16,16,16,16," -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndInstanceKey0" "{WK_00000001_REGISTERS}RTOSDemoSessionRX600_E1_E20_SYSTEM" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndViewB0ColumnWidth" "47,153,35" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndViewB0ECX_REGISTER_COUNT" "33" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndViewB0ECX_REGISTER_DISPLAYED" "1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndViewB0HideFLAGs" "0" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndViewB0HideRadix" "0" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndViewB0LastFileName" "" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndViewB0RadixList" "16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,2,16,16,16,16,16,16,16," -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndViewBInstanceKey0" "{WK_00000001_REGISTERS}RTOSDemoSessionRX600_E1_E20_SYSTEMViewB" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_ADDRESS_NAME" "" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_BUFFER" "00000000,00000000,0,0" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_COLOR" "0,0,0,0" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_COMB_ADDRESS" ",,,," -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_COMB_PALETTE" ",,,," -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_PALETTE_NAME" "" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_REDRAW_CONTINUOUSLY" "0,2" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_SAMPLEING_RATE" "1000" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_VIEW" "0,0,0,0,0,0" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ImageCtrlViews" "0" -"{AFC216B4-0D8D-4096-9F27-9F29115F69B2}StartStopCheckAfter" "0" -"{AFC216B4-0D8D-4096-9F27-9F29115F69B2}StartStopCheckBefore" "0" -"{AFC216B4-0D8D-4096-9F27-9F29115F69B2}StartStopExpAfter" "" -"{AFC216B4-0D8D-4096-9F27-9F29115F69B2}StartStopExpBefore" "" -"{AFC216B4-0D8D-4096-9F27-9F29115F69B2}T_SESSION_IS_SAVED" "YES" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchCtrlViews" "0" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ColWidth0" "247" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ColWidth1" "150" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ColWidth12" "200" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ColWidth2" "120" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ColWidth3" "200" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEMCnt" "0" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd1ColWidth0" "120" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd1ColWidth1" "150" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd1ColWidth12" "200" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd1ColWidth2" "120" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd1ColWidth3" "200" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd1ECX_WATCH_ITEMCnt" "0" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd2ColWidth0" "120" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd2ColWidth1" "150" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd2ColWidth12" "200" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd2ColWidth2" "120" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd2ColWidth3" "200" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd2ECX_WATCH_ITEMCnt" "0" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd3ColWidth0" "120" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd3ColWidth1" "150" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd3ColWidth12" "200" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd3ColWidth2" "120" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd3ColWidth3" "200" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd3ECX_WATCH_ITEMCnt" "0" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWndInitial_Radix" "0" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWndInstanceKey0" "{WK_00000001_WATCH}RTOSDemoSessionRX600_E1_E20_SYSTEM" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWndRecentFile_WatchRecord" "" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWndRecentFile_WatchSave" "" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWndUpdate_Interval" "100" -"{B39CE26B-928D-4241-BF8F-E15980C81200}DebugConsoleCtrlDCEnable" "0" -"{B39CE26B-928D-4241-BF8F-E15980C81200}DebugConsoleCtrlLocalEchoEnable" "1" -"{B39CE26B-928D-4241-BF8F-E15980C81200}DebugConsoleCtrlLogFileName" "" -"{B39CE26B-928D-4241-BF8F-E15980C81200}DebugConsoleCtrlPortBaudIndex" "0" -"{B39CE26B-928D-4241-BF8F-E15980C81200}DebugConsoleCtrlPortName" "" -"{B39CE26B-928D-4241-BF8F-E15980C81200}DebugConsoleCtrlSendDataTimeout" "50" -"{B39CE26B-928D-4241-BF8F-E15980C81200}DebugConsoleCtrlViews" "1" -"{B39CE26B-928D-4241-BF8F-E15980C81200}DebugConsoleWndInstanceKey0" "{WK_00000001_DEBUGCONSOLE}RTOSDemoSessionRX600_E1_E20_SYSTEM" -"{B6AE2E1F-5221-4A44-91C2-8C3097B41A69}StartStopCheckAfter" "0" -"{B6AE2E1F-5221-4A44-91C2-8C3097B41A69}StartStopCheckBefore" "0" -"{B6AE2E1F-5221-4A44-91C2-8C3097B41A69}StartStopExpAfter" "" -"{B6AE2E1F-5221-4A44-91C2-8C3097B41A69}StartStopExpBefore" "" -"{B6AE2E1F-5221-4A44-91C2-8C3097B41A69}T_SESSION_IS_SAVED" "YES" -"{CBEBB610-1516-11D4-8F2D-00409545B67B}ElfDwarf2Objects" "1" -"{CBEBB610-1516-11D4-8F2D-00409545B67B}LoadModule0OBJ_ELFDWARF2_ARRAY_EXPAND_LIMIT" "-1" -"{CBEBB610-1516-11D4-8F2D-00409545B67B}LoadModule0OBJ_ELFDWARF2_STATIC_MEM_EXPAND" "1" -"{EEDC9300-6FBE-11D5-8613-00A024591A38}LocalsCtrlViews" "0" -"{EEDC9301-6FBE-11D5-8613-00A024591A38}StackTraceCtrlViews" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOCtrlIOFile" "" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOCtrlSaveFileDir" "$(CONFIGDIR)" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOCtrlSaveFileName" "" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOCtrlViews" "0" -"{F923CED3-3318-4B43-B931-0AE76B289176}TaskTraceCtrlAnalyzeViews" "0" -"{F923CED3-3318-4B43-B931-0AE76B289176}TaskTraceCtrlFileSaveDirectory" "" -"{F923CED3-3318-4B43-B931-0AE76B289176}TaskTraceCtrlTraceViews" "0" -[LANGUAGE] -"English" -[CONFIG_INFO_VD1] -0 -[CONFIG_INFO_VD2] -0 -[CONFIG_INFO_VD3] -0 -[CONFIG_INFO_VD4] -0 -[WINDOW_POSITION_STATE_DATA_VD1] -"Help" "TOOLBAR 0" 59419 1 5 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_00000001_CmdLine}" "WINDOW" 59422 0 1 "0.07" 216 0 0 100 100 17 0 "32771|32772|32778|<>|32773|32774|<>" "0.0" -"{WK_00000001_DEBUGCONSOLE}RTOSDemoSessionRX600_E1_E20_SYSTEM" "WINDOW" 59422 5 0 "1.00" 146 0 0 350 200 17 0 "57634|57637|57633|<>|32781|32782|<>|32780|32785|32787" "0.0" -"{WK_00000001_MEMORY}RTOSDemoSessionRX600_E1_E20_SYSTEM" "WINDOW" 59422 0 0 "0.27" 252 0 0 350 200 2065 0 "42202|42203|42204|42233|<>|42206|42205|42230|42229|42207|<>|42208|42209|42210|49076|42228|42227|<>|42231|42232|42234|42235|<>|42211|<>" "0.0" -"{WK_00000001_OUTPUT}" "WINDOW" 59422 0 0 "1.00" 216 560 340 350 200 18 0 "36756|36757|36758|36759|<>|36746|36747|<>|39531|<>|39500|39534|<>|36687" "0.0" -"{WK_00000001_REGISTERS}RTOSDemoSessionRX600_E1_E20_SYSTEM" "WINDOW" 59421 0 0 "1.00" 413 0 0 350 200 2065 0 "" "0.0" -"{WK_00000001_WATCH}RTOSDemoSessionRX600_E1_E20_SYSTEM" "WINDOW" 59421 0 0 "1.00" 441 0 0 853 610 17 0 "32781|32783|<>|32771|32829|32772|32827|32773|<>|32786|<>|32810|32811" "0.0" -"{WK_00000002_WORKSPACE}" "WINDOW" 59420 0 0 "1.00" 342 560 340 350 200 18 0 "" "0.0" -"{WK_TB00000001_STANDARD}" "TOOLBAR 0" 59419 0 2 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000002_EDITOR}" "TOOLBAR 0" 59419 0 0 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000003_BOOKMARKS}" "TOOLBAR 0" 59419 1 1 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000004_TEMPLATES}" "TOOLBAR 0" 59419 1 0 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000005_SEARCH}" "TOOLBAR 0" 59419 0 1 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000007_DEBUG}" "TOOLBAR 0" 59419 2 0 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000008_DEBUGRUN}" "TOOLBAR 0" 59419 2 1 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000009_VERSIONCONTROL}" "TOOLBAR 0" 59419 1 3 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000011_CPU}" "TOOLBAR 0" 59419 2 4 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000012_MAP}" "TOOLBAR 0" 59419 1 4 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000013_SYMBOL}" "TOOLBAR 0" 59419 2 6 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000014_CODE}" "TOOLBAR 0" 59419 2 8 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000015_PERFORMANCE}" "TOOLBAR 0" 59419 2 9 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000016_GRAPHIC}" "TOOLBAR 0" 59419 2 8 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000018_DEFAULTWINDOW}" "TOOLBAR 0" 59419 1 2 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000023_RTOS}" "TOOLBAR 0" 59419 2 10 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000025_HELPSYSTEMTOOL}" "TOOLBAR 0" 59419 2 3 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000026_MACRO}" "TOOLBAR 0" 59419 1 6 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000027_EVENT}" "TOOLBAR 0" 59419 2 7 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000028_RTOSDEBUG}" "TOOLBAR 0" 59419 2 2 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000029_SYSTEMTOOL}" "TOOLBAR 0" 59419 2 4 "0.00" 0 0 0 0 0 17 0 "" "0.0" -[WINDOW_POSITION_STATE_DATA_VD2] -[WINDOW_POSITION_STATE_DATA_VD3] -[WINDOW_POSITION_STATE_DATA_VD4] -[WINDOW_Z_ORDER] -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\main-blinky.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\main-full.c" -[TARGET_NAME] -"RX600 Segger J-Link" "" 0 -[STATUSBAR_STATEINFO_VD1] -"MasterShowState" 1 -"ApplicationShowState" 1 -"DebuggerShowState" 1 -[STATUSBAR_STATEINFO_VD2] -"MasterShowState" 1 -"ApplicationShowState" 1 -"DebuggerShowState" 1 -[STATUSBAR_STATEINFO_VD3] -"MasterShowState" 1 -"ApplicationShowState" 1 -"DebuggerShowState" 1 -[STATUSBAR_STATEINFO_VD4] -"MasterShowState" 1 -"ApplicationShowState" 1 -"DebuggerShowState" 1 -[STATUSBAR_DEBUGGER_PANESTATE_VD1] -"SBK_TAR_EMUE100|Exception" 1 -"SBK_TAR_EMUE100|BreakCondition" 1 -"SBK_TAR_EMUE100|TaskID" 1 -"SBK_TAR_EMUE100|PC" 1 -"SBK_TAR_EMUE100|ExecutionTime" 1 -[STATUSBAR_DEBUGGER_PANESTATE_VD2] -[STATUSBAR_DEBUGGER_PANESTATE_VD3] -[STATUSBAR_DEBUGGER_PANESTATE_VD4] -[DEBUGGER_OPTIONS] -"" -[DOWNLOAD_MODULES] -"$(CONFIGDIR)\$(PROJECTNAME).x" 0 "Elf/Dwarf2_KPIT" 0 1 1 0 -[CONNECT_ON_GO] -"FALSE" -[DOWNLOAD_MODULES_AFTER_BUILD] -"TRUE" -[REMOVE_BREAKPOINTS_ON_DOWNLOAD] -"FALSE" -[DISABLE_MEMORY_ACCESS_PRIOR_TO_COMMAND_FILE_EXECUTION] -"FALSE" -[LIMIT_DISASSEMBLY_MEMORY_ACCESS] -"FALSE" -[DISABLE_MEMORY_ACCESS_DURING_EXECUTION] -"FALSE" -[DEBUGGER_OPTIONS_PROPERTIES] -"1" -[COMMAND_FILES] -[DEFAULT_DEBUG_FORMAT] -"Elf/Dwarf2_KPIT" -[FLASH_DETAILS] -"" 0 0 "" 0 "" 0 0 "" 0 0 0 0 0 0 0 "" "" "" "" "" -[BREAKPOINTS] -[END] diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/SessionRX600_E1_E20_SYSTEM.ini b/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/SessionRX600_E1_E20_SYSTEM.ini deleted file mode 100644 index ee7dfebda..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/SessionRX600_E1_E20_SYSTEM.ini +++ /dev/null @@ -1,31 +0,0 @@ -[Init_DeviceSetting] -DebugMode=0 -PowerOut=0 -ResetRelease=0 -EmulatorSerial= -McuGroup=RX62N Group -Device=R5F562N8 -McuFileDir=RX62NGr -SupplyVoltage=-1 -[Init_CommunicationClock] -JtagClock=16.5 -JtagClockValue=10 -[Init_EmulatorSetting] -FirstStartUp=1 -HideNext=0 -ConnectionDlgAutoClose=1 -FirstStartUpV10200=0 -[CFG_MCU] -PrevDevice=R5F562N8 -ProcessorMode=0 -EXTAL=12.0000 -WorkRam=3000 -[CFG_SYSTEM] -CpuReWrite=0 -PerfCounterUser=0 -TraceDebugAs=0 -[CFG_FLASHCLEAR_R5F562N8_00] -BlockCount=54 -BlockData=000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -[Config_Property] -HideNext=0 diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/include/IntQueueTimer.h b/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/include/IntQueueTimer.h deleted file mode 100644 index a13dac500..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/include/IntQueueTimer.h +++ /dev/null @@ -1,36 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -#ifndef INT_QUEUE_TIMER_H -#define INT_QUEUE_TIMER_H - -void vInitialiseTimerForIntQueueTest( void ); -portBASE_TYPE xTimer0Handler( void ); -portBASE_TYPE xTimer1Handler( void ); - -#endif - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/include/inthandler.h b/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/include/inthandler.h deleted file mode 100644 index f55efcaf6..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/include/inthandler.h +++ /dev/null @@ -1,714 +0,0 @@ -/***********************************************************************/ -/* */ -/* FILE :inthandler.h */ -/* DATE :Wed, Aug 25, 2010 */ -/* DESCRIPTION :Interrupt Handler Declarations */ -/* CPU TYPE :Other */ -/* */ -/* This file is generated by KPIT GNU Project Generator. */ -/* */ -/***********************************************************************/ - - - -#ifndef INTHANDLER_H -#define INTHANDLER_H - -// Exception(Supervisor Instruction) -void INT_Excep_SuperVisorInst(void) __attribute__ ((interrupt)); - -// Exception(Undefined Instruction) -void INT_Excep_UndefinedInst(void) __attribute__ ((interrupt)); - -// Exception(Floating Point) -void INT_Excep_FloatingPoint(void) __attribute__ ((interrupt)); - -// NMI -void INT_NonMaskableInterrupt(void) __attribute__ ((interrupt)); - -// Dummy -void Dummy (void) __attribute__ ((interrupt)); - -// BRK -void INT_Excep_BRK(void) __attribute__ ((interrupt)); - -// vector 1 reserved -// vector 2 reserved -// vector 3 reserved -// vector 4 reserved -// vector 5 reserved -// vector 6 reserved -// vector 7 reserved -// vector 8 reserved -// vector 9 reserved -// vector 10 reserved -// vector 11 reserved -// vector 12 reserved -// vector 13 reserved -// vector 14 reserved -// vector 15 reserved - -// BUSERR - -void INT_Excep_BUSERR(void) __attribute__ ((interrupt)); - -// vector 17 reserved -// vector 18 reserved -// vector 19 reserved -// vector 20 reserved - -// FCU_FCUERR - -void INT_Excep_FCU_FCUERR(void) __attribute__ ((interrupt)); - -// vector 22 reserved - -// FCU_FRDYI - -void INT_Excep_FCU_FRDYI(void) __attribute__ ((interrupt)); - -// vector 24 reserved -// vector 25 reserved -// vector 26 reserved -// vector 27 reserved - -// CMTU0_CMT0 - -void INT_Excep_CMTU0_CMT0(void) __attribute__ ((interrupt)); - -// CMTU0_CMT1 - -void INT_Excep_CMTU0_CMT1(void) __attribute__ ((interrupt)); - -// CMTU1_CMT2 - -void INT_Excep_CMTU1_CMT2(void) __attribute__ ((interrupt)); - -// CMTU1_CMT3 - -void INT_Excep_CMTU1_CMT3(void) __attribute__ ((interrupt)); - -// vector 32 reserved -// vector 33 reserved -// vector 34 reserved -// vector 35 reserved -// vector 36 reserved -// vector 37 reserved -// vector 38 reserved -// vector 39 reserved -// vector 40 reserved -// vector 41 reserved -// vector 42 reserved -// vector 43 reserved -// vector 44 reserved -// vector 45 reserved -// vector 46 reserved -// vector 47 reserved -// vector 48 reserved -// vector 49 reserved -// vector 50 reserved -// vector 51 reserved -// vector 52 reserved -// vector 53 reserved -// vector 54 reserved -// vector 55 reserved -// vector 56 reserved -// vector 57 reserved -// vector 58 reserved -// vector 59 reserved -// vector 60 reserved -// vector 61 reserved -// vector 62 reserved -// vector 63 reserved - -// IRQ0 - -void INT_Excep_IRQ0(void) __attribute__ ((interrupt)); - -// IRQ1 - -void INT_Excep_IRQ1(void) __attribute__ ((interrupt)); - -// IRQ2 - -void INT_Excep_IRQ2(void) __attribute__ ((interrupt)); - -// IRQ3 - -void INT_Excep_IRQ3(void) __attribute__ ((interrupt)); - -// IRQ4 - -void INT_Excep_IRQ4(void) __attribute__ ((interrupt)); - -// IRQ5 - -void INT_Excep_IRQ5(void) __attribute__ ((interrupt)); - -// IRQ6 - -void INT_Excep_IRQ6(void) __attribute__ ((interrupt)); - -// IRQ7 - -void INT_Excep_IRQ7(void) __attribute__ ((interrupt)); - -// IRQ8 - -void INT_Excep_IRQ8(void) __attribute__ ((interrupt)); - -// IRQ9 - -void INT_Excep_IRQ9(void) __attribute__ ((interrupt)); - -// IRQ10 - -void INT_Excep_IRQ10(void) __attribute__ ((interrupt)); - -// IRQ11 - -void INT_Excep_IRQ11(void) __attribute__ ((interrupt)); - -// IRQ12 - -void INT_Excep_IRQ12(void) __attribute__ ((interrupt)); - -// IRQ13 - -void INT_Excep_IRQ13(void) __attribute__ ((interrupt)); - -// IRQ14 - -void INT_Excep_IRQ14(void) __attribute__ ((interrupt)); - -// IRQ15 - -void INT_Excep_IRQ15(void) __attribute__ ((interrupt)); - -// vector 80 reserved -// vector 81 reserved -// vector 82 reserved -// vector 83 reserved -// vector 84 reserved -// vector 85 reserved -// vector 86 reserved -// vector 87 reserved -// vector 88 reserved -// vector 89 reserved -// vector 90 reserved -// vector 91 reserved -// vector 92 reserved -// vector 93 reserved -// vector 94 reserved -// vector 95 reserved - -// WDT_WOVI - -void INT_Excep_WDT_WOVI(void) __attribute__ ((interrupt)); - -// vector 97 reserved - -// AD0_ADI0 - -void INT_Excep_AD0_ADI0(void) __attribute__ ((interrupt)); - -// AD1_ADI1 - -void INT_Excep_AD1_ADI1(void) __attribute__ ((interrupt)); - -// AD2_ADI2 - -void INT_Excep_AD2_ADI2(void) __attribute__ ((interrupt)); - -// AD3_ADI3 - -void INT_Excep_AD3_ADI3(void) __attribute__ ((interrupt)); - -// vector 102 reserved -// vector 103 reserved - -// TPU0_TGI0A - -void INT_Excep_TPU0_TGI0A(void) __attribute__ ((interrupt)); - -// TPU0_TGI0B - -void INT_Excep_TPU0_TGI0B(void) __attribute__ ((interrupt)); - -// TPU0_TGI0C - -void INT_Excep_TPU0_TGI0C(void) __attribute__ ((interrupt)); - -// TPU0_TGI0D - -void INT_Excep_TPU0_TGI0D(void) __attribute__ ((interrupt)); - -// TPU0_TCI0V - -void INT_Excep_TPU0_TCI0V(void) __attribute__ ((interrupt)); - -// vector 109 reserved -// vector 110 reserved - -// TPU1_TGI1A - -void INT_Excep_TPU1_TGI1A(void) __attribute__ ((interrupt)); - -// TPU1_TGI1B - -void INT_Excep_TPU1_TGI1B(void) __attribute__ ((interrupt)); - -// vector 113 reserved -// vector 114 reserved - -// TPU1_TCI1V - -void INT_Excep_TPU1_TCI1V(void) __attribute__ ((interrupt)); - -// TPU1_TCI1U - -void INT_Excep_TPU1_TCI1U(void) __attribute__ ((interrupt)); - -// TPU2_TGI2A - -void INT_Excep_TPU2_TGI2A(void) __attribute__ ((interrupt)); - -// TPU2_TGI2B - -void INT_Excep_TPU2_TGI2B(void) __attribute__ ((interrupt)); - -// vector 119 reserved - -// TPU2_TCI2V - -void INT_Excep_TPU2_TCI2V(void) __attribute__ ((interrupt)); - -// TPU2_TCI2U - -void INT_Excep_TPU2_TCI2U(void) __attribute__ ((interrupt)); - -// TPU3_TGI3A - -void INT_Excep_TPU3_TGI3A(void) __attribute__ ((interrupt)); - -// TPU3_TGI3B - -void INT_Excep_TPU3_TGI3B(void) __attribute__ ((interrupt)); - -// TPU3_TGI3C - -void INT_Excep_TPU3_TGI3C(void) __attribute__ ((interrupt)); - -// TPU3_TGI3D - -void INT_Excep_TPU3_TGI3D(void) __attribute__ ((interrupt)); - -// TPU3_TCI3V - -void INT_Excep_TPU3_TCI3V(void) __attribute__ ((interrupt)); - -// TPU4_TGI4A - -void INT_Excep_TPU4_TGI4A(void) __attribute__ ((interrupt)); - -// TPU4_TGI4B - -void INT_Excep_TPU4_TGI4B(void) __attribute__ ((interrupt)); - -// vector 129 reserved -// vector 130 reserved - -// TPU4_TCI4V - -void INT_Excep_TPU4_TCI4V(void) __attribute__ ((interrupt)); - -// TPU4_TCI4U - -void INT_Excep_TPU4_TCI4U(void) __attribute__ ((interrupt)); - -// TPU5_TGI5A - -void INT_Excep_TPU5_TGI5A(void) __attribute__ ((interrupt)); - -// TPU5_TGI5B - -void INT_Excep_TPU5_TGI5B(void) __attribute__ ((interrupt)); - -// vector 135 reserved - -// TPU5_TCI5V - -void INT_Excep_TPU5_TCI5V(void) __attribute__ ((interrupt)); - -// TPU5_TCI5U - -void INT_Excep_TPU5_TCI5U(void) __attribute__ ((interrupt)); - -// TPU6_TGI6A - -void INT_Excep_TPU6_TGI6A(void) __attribute__ ((interrupt)); - -// TPU6_TGI6B - -void INT_Excep_TPU6_TGI6B(void) __attribute__ ((interrupt)); - -// TPU6_TGI6C - -void INT_Excep_TPU6_TGI6C(void) __attribute__ ((interrupt)); - -// TPU6_TGI6D - -void INT_Excep_TPU6_TGI6D(void) __attribute__ ((interrupt)); - -// TPU6_TCI6V - -void INT_Excep_TPU6_TCI6V(void) __attribute__ ((interrupt)); - -// vector 143 reserved -// vector 144 reserved - -// TPU7_TGI7A - -void INT_Excep_TPU7_TGI7A(void) __attribute__ ((interrupt)); - -// TPU7_TGI7B - -void INT_Excep_TPU7_TGI7B(void) __attribute__ ((interrupt)); - -// vector 147 reserved -// vector 148 reserved - -// TPU7_TCI7V - -void INT_Excep_TPU7_TCI7V(void) __attribute__ ((interrupt)); - -// TPU7_TCI7U - -void INT_Excep_TPU7_TCI7U(void) __attribute__ ((interrupt)); - -// TPU8_TGI8A - -void INT_Excep_TPU8_TGI8A(void) __attribute__ ((interrupt)); - -// TPU8_TGI8B - -void INT_Excep_TPU8_TGI8B(void) __attribute__ ((interrupt)); - -// vector 153 reserved - -// TPU8_TCI8V - -void INT_Excep_TPU8_TCI8V(void) __attribute__ ((interrupt)); - -// TPU8_TCI8U - -void INT_Excep_TPU8_TCI8U(void) __attribute__ ((interrupt)); - -// TPU9_TGI9A - -void INT_Excep_TPU9_TGI9A(void) __attribute__ ((interrupt)); - -// TPU9_TGI9B - -void INT_Excep_TPU9_TGI9B(void) __attribute__ ((interrupt)); - -// TPU9_TGI9C - -void INT_Excep_TPU9_TGI9C(void) __attribute__ ((interrupt)); - -// TPU9_TGI9D - -void INT_Excep_TPU9_TGI9D(void) __attribute__ ((interrupt)); - -// TPU9_TCI9V - -void INT_Excep_TPU9_TCI9V(void) __attribute__ ((interrupt)); - -// TPU10_TGI10A - -void INT_Excep_TPU10_TGI10A(void) __attribute__ ((interrupt)); - -// TPU10_TGI10B - -void INT_Excep_TPU10_TGI10B(void) __attribute__ ((interrupt)); - -// vector 163 reserved -// vector 164 reserved - -// TPU10_TCI10V - -void INT_Excep_TPU10_TCI10V(void) __attribute__ ((interrupt)); - -// TPU10_TCI10U - -void INT_Excep_TPU10_TCI10U(void) __attribute__ ((interrupt)); - -// TPU11_TGI11A - -void INT_Excep_TPU11_TGI11A(void) __attribute__ ((interrupt)); - -// TPU11_TGI11B - -void INT_Excep_TPU11_TGI11B(void) __attribute__ ((interrupt)); - -// vector 169 reserved - -// TPU11_TCI11V - -void INT_Excep_TPU11_TCI11V(void) __attribute__ ((interrupt)); - -// TPU11_TCI11U - -void INT_Excep_TPU11_TCI11U(void) __attribute__ ((interrupt)); - -// vector 172 reserved -// vector 173 reserved - -// TMR0_CMI0A - -void INT_Excep_TMR0_CMI0A(void) __attribute__ ((interrupt)); - -// TMR0_CMI0B - -void INT_Excep_TMR0_CMI0B(void) __attribute__ ((interrupt)); - -// TMR0_OV0I - -void INT_Excep_TMR0_OV0I(void) __attribute__ ((interrupt)); - -// TMR1_CMI1A - -void INT_Excep_TMR1_CMI1A(void) __attribute__ ((interrupt)); - -// TMR1_CMI1B - -void INT_Excep_TMR1_CMI1B(void) __attribute__ ((interrupt)); - -// TMR1_OV1I - -void INT_Excep_TMR1_OV1I(void) __attribute__ ((interrupt)); - -// TMR2_CMI2A - -void INT_Excep_TMR2_CMI2A(void) __attribute__ ((interrupt)); - -// TMR2_CMI2B - -void INT_Excep_TMR2_CMI2B(void) __attribute__ ((interrupt)); - -// TMR2_OV2I - -void INT_Excep_TMR2_OV2I(void) __attribute__ ((interrupt)); - -// TMR3_CMI3A - -void INT_Excep_TMR3_CMI3A(void) __attribute__ ((interrupt)); - -// TMR3_CMI3B - -void INT_Excep_TMR3_CMI3B(void) __attribute__ ((interrupt)); - -// TMR3_OV3I - -void INT_Excep_TMR3_OV3I(void) __attribute__ ((interrupt)); - -// vector 186 reserved -// vector 187 reserved -// vector 188 reserved -// vector 189 reserved -// vector 190 reserved -// vector 191 reserved -// vector 192 reserved -// vector 193 reserved -// vector 194 reserved -// vector 195 reserved -// vector 196 reserved -// vector 197 reserved - -// DMAC_DMTEND0 - -void INT_Excep_DMAC_DMTEND0(void); - -// DMAC_DMTEND1 - -void INT_Excep_DMAC_DMTEND1(void) __attribute__ ((interrupt)); - -// DMAC_DMTEND2 - -void INT_Excep_DMAC_DMTEND2(void) __attribute__ ((interrupt)); - -// DMAC_DMTEND3 - -void INT_Excep_DMAC_DMTEND3(void) __attribute__ ((interrupt)); - -// vector 202 reserved -// vector 203 reserved -// vector 204 reserved -// vector 205 reserved -// vector 206 reserved -// vector 207 reserved -// vector 208 reserved -// vector 209 reserved -// vector 210 reserved -// vector 211 reserved -// vector 212 reserved -// vector 213 reserved - -// SCI0_ERI0 - -void INT_Excep_SCI0_ERI0(void) __attribute__ ((interrupt)); - -// SCI0_RXI0 - -void INT_Excep_SCI0_RXI0(void) __attribute__ ((interrupt)); - -// SCI0_TXI0 - -void INT_Excep_SCI0_TXI0(void) __attribute__ ((interrupt)); - -// SCI0_TEI0 - -void INT_Excep_SCI0_TEI0(void) __attribute__ ((interrupt)); - -// SCI1_ERI1 - -void INT_Excep_SCI1_ERI1(void) __attribute__ ((interrupt)); - -// SCI1_RXI1 - -void INT_Excep_SCI1_RXI1(void) __attribute__ ((interrupt)); - -// SCI1_TXI1 - -void INT_Excep_SCI1_TXI1(void) __attribute__ ((interrupt)); - -// SCI1_TEI1 - -void INT_Excep_SCI1_TEI1(void) __attribute__ ((interrupt)); - -// SCI2_ERI2 - -void INT_Excep_SCI2_ERI2(void) __attribute__ ((interrupt)); - -// SCI2_RXI2 - -void INT_Excep_SCI2_RXI2(void) __attribute__ ((interrupt)); - -// SCI2_TXI2 - -void INT_Excep_SCI2_TXI2(void) __attribute__ ((interrupt)); - -// SCI2_TEI2 - -void INT_Excep_SCI2_TEI2(void) __attribute__ ((interrupt)); - -// SCI3_ERI3 - -void INT_Excep_SCI3_ERI3(void) __attribute__ ((interrupt)); - -// SCI3_RXI3 - -void INT_Excep_SCI3_RXI3(void) __attribute__ ((interrupt)); - -// SCI3_TXI3 - -void INT_Excep_SCI3_TXI3(void) __attribute__ ((interrupt)); - -// SCI3_TEI3 - -void INT_Excep_SCI3_TEI3(void) __attribute__ ((interrupt)); - -// SCI4_ERI4 - -void INT_Excep_SCI4_ERI4(void) __attribute__ ((interrupt)); - -// SCI4_RXI4 - -void INT_Excep_SCI4_RXI4(void) __attribute__ ((interrupt)); - -// SCI4_TXI4 - -void INT_Excep_SCI4_TXI4(void) __attribute__ ((interrupt)); - -// SCI4_TEI4 - -void INT_Excep_SCI4_TEI4(void) __attribute__ ((interrupt)); - -// SCI5_ERI5 - -void INT_Excep_SCI5_ERI5(void) __attribute__ ((interrupt)); - -// SCI5_RXI5 - -void INT_Excep_SCI5_RXI5(void) __attribute__ ((interrupt)); - -// SCI5_TXI5 - -void INT_Excep_SCI5_TXI5(void) __attribute__ ((interrupt)); - -// SCI5_TEI5 - -void INT_Excep_SCI5_TEI5(void) __attribute__ ((interrupt)); - -// SCI6_ERI6 - -void INT_Excep_SCI6_ERI6(void) __attribute__ ((interrupt)); - -// SCI6_RXI6 - -void INT_Excep_SCI6_RXI6(void) __attribute__ ((interrupt)); - -// SCI6_TXI6 - -void INT_Excep_SCI6_TXI6(void) __attribute__ ((interrupt)); - -// SCI6_TEI6 - -void INT_Excep_SCI6_TEI6(void) __attribute__ ((interrupt)); - -// vector 242 reserved -// vector 243 reserved -// vector 244 reserved -// vector 245 reserved - -// RIIC0_EEI0 - -void INT_Excep_RIIC0_EEI0(void) __attribute__ ((interrupt)); - -// RIIC0_RXI0 - -void INT_Excep_RIIC0_RXI0(void) __attribute__ ((interrupt)); - -// RIIC0_TXI0 - -void INT_Excep_RIIC0_TXI0(void) __attribute__ ((interrupt)); - -// RIIC0_TEI0 - -void INT_Excep_RIIC0_TEI0(void) __attribute__ ((interrupt)); - -// RIIC1_EEI1 - -void INT_Excep_RIIC1_EEI1(void) __attribute__ ((interrupt)); - -// RIIC1_RXI1 - -void INT_Excep_RIIC1_RXI1(void) __attribute__ ((interrupt)); - -// RIIC1_TXI1 - -void INT_Excep_RIIC1_TXI1(void) __attribute__ ((interrupt)); - -// RIIC1_TEI1 - -void INT_Excep_RIIC1_TEI1(void) __attribute__ ((interrupt)); - -// vector 254 reserved -// vector 255 reserved - -//;<> -//;Power On Reset PC -extern void PowerON_Reset_PC(void) __attribute__ ((interrupt)); -//;<> - -#endif \ No newline at end of file diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/include/iodefine.h b/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/include/iodefine.h deleted file mode 100644 index bdff17965..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/include/iodefine.h +++ /dev/null @@ -1,14211 +0,0 @@ -/********************************************************************************/ -/* */ -/* Summary : Definition of I/O Register. */ -/* Version : V1.1 (2010-04-21) [Hardware Manual Revision : 0.50] */ -/* File Name : iodefine.h for KPIT GNURX */ -/* Device : RX/RX600/RX62N */ -/* */ -/* Copyright(c) 2010 Renesas Electronics Corp. */ -/* And Renesas Solutions Corp. ,All Rights Reserved. */ -/* */ -/********************************************************************************/ -/* */ -/* CPU TYPE : RX62N */ -/* DESCRIPTION : Definition of ICU Register */ -/* */ -/* Usage : IR,DTCER,IER,IPR of ICU Register */ -/* The following IR, DTCE, IEN, IPR macro functions simplify usage. */ -/* The bit access operation is "Bit_Name(interrupt source,name)". */ -/* A part of the name can be omitted. */ -/* IR(MTU0,TGIA0) = 0; expands to : */ -/* for example : */ -/* ICU.IR[114].BIT.IR = 0; */ -/* */ -/* DTCE(ICU,IRQ0) = 1; expands to : */ -/* ICU.DTCER[64].BIT.DTCE = 1; */ -/* */ -/* IEN(CMT0,CMI0) = 1; expands to : */ -/* ICU.IER[0x03].BIT.IEN4 = 1; */ -/* */ -/* IPR(MTU1,TGIA1) = 2; expands to : */ -/* IPR(MTU1,TGI ) = 2; // TGIA1,TGIB1 share IPR level. */ -/* ICU.IPR[0x53].BIT.IPR = 2; */ -/* */ -/* IPR(SCI0,ERI0) = 3; expands to : */ -/* IPR(SCI0, ) = 3; // SCI0 uses single IPR for all sources. */ -/* ICU.IPR[0x80].BIT.IPR = 3; */ -/* */ -/* Usage : #pragma interrupt Function_Identifier(vect=**) */ -/* The number of vector is "(interrupt source, name)". */ -/* #pragma interrupt INT_IRQ0(vect=VECT(ICU,IRQ0)) expands to : */ -/* for example : */ -/* #pragma interrupt INT_CMT0_CMI0(vect=VECT(CMT0,CMI0)) expands to : */ -/* #pragma interrupt INT_MTU0_TGIA0(vect=VECT(MTU0,TGIA0)) expands to : */ -/* */ -/* Usage : MSTPCRA,MSTPCRB,MSTPCRC of SYSTEM Register */ -/* The bit access operation is "MSTP(name)". */ -/* The name that can be used is a macro name defined with "iodefine.h". */ -/* MSTP(TMR2) = 0; // TMR2,TMR3,TMR23 expands to : */ -/* for example : */ -/* SYSTEM.MSTPCRA.BIT.MSTPA4 = 0; */ -/* MSTP(SCI0) = 0; // SCI0,SMCI0 expands to : */ -/* SYSTEM.MSTPCRB.BIT.MSTPB31 = 0; */ -/* MSTP(MTU4) = 0; // MTUA,MTU0,MTU1,MTU2,MTU3,MTU4,MTU5 expands to : */ -/* SYSTEM.MSTPCRA.BIT.MSTPA9 = 0; */ -/* MSTP(CMT3) = 0; // CMT2,CMT3 expands to : */ -/* SYSTEM.MSTPCRA.BIT.MSTPA14 = 0; */ -/* */ -/********************************************************************************/ - -#ifndef IODEFINE_H -#define IODEFINE_H - -#ifdef __RX_LITTLE_ENDIAN__ /*Little endian*/ - -struct st_system { - union { - unsigned short WORD; - struct { - unsigned short MD0:1; - unsigned short MD1:1; - unsigned short :5; - unsigned short MDE:1; - unsigned short :8; - } BIT; - } MDMONR; - union { - unsigned short WORD; - struct { - unsigned short IROM:1; - unsigned short EXB:1; - unsigned short BSW:2; - unsigned short BOTS:1; - unsigned short :1; - unsigned short UBTS:1; - unsigned short :9; - } BIT; - } MDSR; - unsigned char wk0[2]; - union { - unsigned short WORD; - struct { - unsigned short ROME:1; - unsigned short EXBE:1; - unsigned short :6; - unsigned short KEY:8; - } BIT; - } SYSCR0; - union { - unsigned short WORD; - struct { - unsigned short RAME:1; - unsigned short :15; - } BIT; - } SYSCR1; - unsigned char wk1[2]; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short STS:5; - unsigned short :1; - unsigned short OPE:1; - unsigned short SSBY:1; - } BIT; - } SBYCR; - unsigned char wk2[2]; - union { - unsigned long LONG; - struct { - unsigned long :4; - unsigned long MSTPA4:1; - unsigned long MSTPA5:1; - unsigned long :2; - unsigned long MSTPA8:1; - unsigned long MSTPA9:1; - unsigned long MSTPA10:1; - unsigned long MSTPA11:1; - unsigned long :2; - unsigned long MSTPA14:1; - unsigned long MSTPA15:1; - unsigned long :1; - unsigned long MSTPA17:1; - unsigned long :1; - unsigned long MSTPA19:1; - unsigned long :2; - unsigned long MSTPA22:1; - unsigned long MSTPA23:1; - unsigned long :4; - unsigned long MSTPA28:1; - unsigned long MSTPA29:1; - unsigned long :1; - unsigned long ACSE:1; - } BIT; - } MSTPCRA; - union { - unsigned long LONG; - struct { - unsigned long MSTPB0:1; - unsigned long :14; - unsigned long MSTPB15:1; - unsigned long MSTPB16:1; - unsigned long MSTPB17:1; - unsigned long MSTPB18:1; - unsigned long MSTPB19:1; - unsigned long MSTPB20:1; - unsigned long MSTPB21:1; - unsigned long :1; - unsigned long MSTPB23:1; - unsigned long :1; - unsigned long MSTPB25:1; - unsigned long MSTPB26:1; - unsigned long :1; - unsigned long MSTPB28:1; - unsigned long MSTPB29:1; - unsigned long MSTPB30:1; - unsigned long MSTPB31:1; - } BIT; - } MSTPCRB; - union { - unsigned long LONG; - struct { - unsigned long MSTPC0:1; - unsigned long MSTPC1:1; - unsigned long :30; - } BIT; - } MSTPCRC; - unsigned char wk3[4]; - union { - unsigned long LONG; - struct { - unsigned long :8; - unsigned long PCK:4; - unsigned long :4; - unsigned long BCK:4; - unsigned long :2; - unsigned long PSTOP0:1; - unsigned long PSTOP1:1; - unsigned long ICK:4; - unsigned long :4; - } BIT; - } SCKCR; - unsigned char wk4[12]; - union { - unsigned char BYTE; - struct { - unsigned char BCLKDIV:1; - unsigned char :7; - } BIT; - } BCKCR; - unsigned char wk5[15]; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short OSTDF:1; - unsigned short OSTDE:1; - unsigned short KEY:8; - } BIT; - } OSTDCR; - unsigned char wk6[49726]; - union { - unsigned char BYTE; - struct { - unsigned char RAMCUT0:1; - unsigned char :3; - unsigned char RAMCUT1:1; - unsigned char RAMCUT2:1; - unsigned char IOKEEP:1; - unsigned char DPSBY:1; - } BIT; - } DPSBYCR; - union { - unsigned char BYTE; - struct { - unsigned char WTSTS:6; - unsigned char :2; - } BIT; - } DPSWCR; - union { - unsigned char BYTE; - struct { - unsigned char DIRQ0E:1; - unsigned char DIRQ1E:1; - unsigned char DIRQ2E:1; - unsigned char DIRQ3E:1; - unsigned char DLVDE:1; - unsigned char DRTCE:1; - unsigned char DUSBE:1; - unsigned char DNMIE:1; - } BIT; - } DPSIER; - union { - unsigned char BYTE; - struct { - unsigned char DIRQ0F:1; - unsigned char DIRQ1F:1; - unsigned char DIRQ2F:1; - unsigned char DIRQ3F:1; - unsigned char DLVDF:1; - unsigned char DRTCFF:1; - unsigned char DUSBF:1; - unsigned char DNMIF:1; - } BIT; - } DPSIFR; - union { - unsigned char BYTE; - struct { - unsigned char DIRQ0EG:1; - unsigned char DIRQ1EG:1; - unsigned char DIRQ2EG:1; - unsigned char DIRQ3EG:1; - unsigned char :3; - unsigned char DNMIEG:1; - } BIT; - } DPSIEGR; - union { - unsigned char BYTE; - struct { - unsigned char PORF:1; - unsigned char LVD1F:1; - unsigned char LVD2F:1; - unsigned char :4; - unsigned char DPSRSTF:1; - } BIT; - } RSTSR; - unsigned char wk7[4]; - union { - unsigned char BYTE; - struct { - unsigned char SUBSTOP:1; - unsigned char :7; - } BIT; - } SUBOSCCR; - unsigned char wk8[1]; - unsigned char LVDKEYR; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char LVD1RI:1; - unsigned char LVD1E:1; - unsigned char :2; - unsigned char LVD2RI:1; - unsigned char LVD2E:1; - } BIT; - } LVDCR; - unsigned char wk9[2]; - unsigned char DPSBKR[32]; -}; - -struct st_bsc { - union { - unsigned char BYTE; - struct { - unsigned char STSCLR:1; - unsigned char :7; - } BIT; - } BERCLR; - unsigned char wk0[3]; - union { - unsigned char BYTE; - struct { - unsigned char IGAEN:1; - unsigned char TOEN:1; - unsigned char :6; - } BIT; - } BEREN; - unsigned char wk1[3]; - union { - unsigned char BYTE; - struct { - unsigned char IA:1; - unsigned char TO:1; - unsigned char :2; - unsigned char MST:3; - unsigned char :1; - } BIT; - } BERSR1; - unsigned char wk2[1]; - union { - unsigned short WORD; - struct { - unsigned short :3; - unsigned short ADDR:13; - } BIT; - } BERSR2; - unsigned char wk3[7414]; - union { - unsigned short WORD; - struct { - unsigned short WRMOD:1; - unsigned short :2; - unsigned short EWENB:1; - unsigned short :4; - unsigned short PRENB:1; - unsigned short PWENB:1; - unsigned short :5; - unsigned short PRMOD:1; - } BIT; - } CS0MOD; - union { - unsigned long LONG; - struct { - unsigned long CSPWWAIT:3; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSWWAIT:5; - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - } BIT; - } CS0WCR1; - union { - unsigned long LONG; - struct { - unsigned long CSROFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long WDOFF:3; - unsigned long :5; - unsigned long RDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - } BIT; - } CS0WCR2; - unsigned char wk4[6]; - union { - unsigned short WORD; - struct { - unsigned short WRMOD:1; - unsigned short :2; - unsigned short EWENB:1; - unsigned short :4; - unsigned short PRENB:1; - unsigned short PWENB:1; - unsigned short :5; - unsigned short PRMOD:1; - } BIT; - } CS1MOD; - union { - unsigned long LONG; - struct { - unsigned long CSPWWAIT:3; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSWWAIT:5; - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - } BIT; - } CS1WCR1; - union { - unsigned long LONG; - struct { - unsigned long CSROFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long WDOFF:3; - unsigned long :5; - unsigned long RDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - } BIT; - } CS1WCR2; - unsigned char wk5[6]; - union { - unsigned short WORD; - struct { - unsigned short WRMOD:1; - unsigned short :2; - unsigned short EWENB:1; - unsigned short :4; - unsigned short PRENB:1; - unsigned short PWENB:1; - unsigned short :5; - unsigned short PRMOD:1; - } BIT; - } CS2MOD; - union { - unsigned long LONG; - struct { - unsigned long CSPWWAIT:3; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSWWAIT:5; - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - } BIT; - } CS2WCR1; - union { - unsigned long LONG; - struct { - unsigned long CSROFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long WDOFF:3; - unsigned long :5; - unsigned long RDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - } BIT; - } CS2WCR2; - unsigned char wk6[6]; - union { - unsigned short WORD; - struct { - unsigned short WRMOD:1; - unsigned short :2; - unsigned short EWENB:1; - unsigned short :4; - unsigned short PRENB:1; - unsigned short PWENB:1; - unsigned short :5; - unsigned short PRMOD:1; - } BIT; - } CS3MOD; - union { - unsigned long LONG; - struct { - unsigned long CSPWWAIT:3; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSWWAIT:5; - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - } BIT; - } CS3WCR1; - union { - unsigned long LONG; - struct { - unsigned long CSROFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long WDOFF:3; - unsigned long :5; - unsigned long RDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - } BIT; - } CS3WCR2; - unsigned char wk7[6]; - union { - unsigned short WORD; - struct { - unsigned short WRMOD:1; - unsigned short :2; - unsigned short EWENB:1; - unsigned short :4; - unsigned short PRENB:1; - unsigned short PWENB:1; - unsigned short :5; - unsigned short PRMOD:1; - } BIT; - } CS4MOD; - union { - unsigned long LONG; - struct { - unsigned long CSPWWAIT:3; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSWWAIT:5; - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - } BIT; - } CS4WCR1; - union { - unsigned long LONG; - struct { - unsigned long CSROFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long WDOFF:3; - unsigned long :5; - unsigned long RDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - } BIT; - } CS4WCR2; - unsigned char wk8[6]; - union { - unsigned short WORD; - struct { - unsigned short WRMOD:1; - unsigned short :2; - unsigned short EWENB:1; - unsigned short :4; - unsigned short PRENB:1; - unsigned short PWENB:1; - unsigned short :5; - unsigned short PRMOD:1; - } BIT; - } CS5MOD; - union { - unsigned long LONG; - struct { - unsigned long CSPWWAIT:3; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSWWAIT:5; - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - } BIT; - } CS5WCR1; - union { - unsigned long LONG; - struct { - unsigned long CSROFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long WDOFF:3; - unsigned long :5; - unsigned long RDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - } BIT; - } CS5WCR2; - unsigned char wk9[6]; - union { - unsigned short WORD; - struct { - unsigned short WRMOD:1; - unsigned short :2; - unsigned short EWENB:1; - unsigned short :4; - unsigned short PRENB:1; - unsigned short PWENB:1; - unsigned short :5; - unsigned short PRMOD:1; - } BIT; - } CS6MOD; - union { - unsigned long LONG; - struct { - unsigned long CSPWWAIT:3; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSWWAIT:5; - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - } BIT; - } CS6WCR1; - union { - unsigned long LONG; - struct { - unsigned long CSROFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long WDOFF:3; - unsigned long :5; - unsigned long RDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - } BIT; - } CS6WCR2; - unsigned char wk10[6]; - union { - unsigned short WORD; - struct { - unsigned short WRMOD:1; - unsigned short :2; - unsigned short EWENB:1; - unsigned short :4; - unsigned short PRENB:1; - unsigned short PWENB:1; - unsigned short :5; - unsigned short PRMOD:1; - } BIT; - } CS7MOD; - union { - unsigned long LONG; - struct { - unsigned long CSPWWAIT:3; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSWWAIT:5; - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - } BIT; - } CS7WCR1; - union { - unsigned long LONG; - struct { - unsigned long CSROFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long WDOFF:3; - unsigned long :5; - unsigned long RDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - } BIT; - } CS7WCR2; - unsigned char wk11[1926]; - union { - unsigned short WORD; - struct { - unsigned short EXENB:1; - unsigned short :3; - unsigned short BSIZE:2; - unsigned short :2; - unsigned short EMODE:1; - unsigned short :7; - } BIT; - } CS0CR; - unsigned char wk12[6]; - union { - unsigned short WORD; - struct { - unsigned short RRCV:4; - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - } BIT; - } CS0REC; - unsigned char wk13[6]; - union { - unsigned short WORD; - struct { - unsigned short EXENB:1; - unsigned short :3; - unsigned short BSIZE:2; - unsigned short :2; - unsigned short EMODE:1; - unsigned short :7; - } BIT; - } CS1CR; - unsigned char wk14[6]; - union { - unsigned short WORD; - struct { - unsigned short RRCV:4; - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - } BIT; - } CS1REC; - unsigned char wk15[6]; - union { - unsigned short WORD; - struct { - unsigned short EXENB:1; - unsigned short :3; - unsigned short BSIZE:2; - unsigned short :2; - unsigned short EMODE:1; - unsigned short :7; - } BIT; - } CS2CR; - unsigned char wk16[6]; - union { - unsigned short WORD; - struct { - unsigned short RRCV:4; - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - } BIT; - } CS2REC; - unsigned char wk17[6]; - union { - unsigned short WORD; - struct { - unsigned short EXENB:1; - unsigned short :3; - unsigned short BSIZE:2; - unsigned short :2; - unsigned short EMODE:1; - unsigned short :7; - } BIT; - } CS3CR; - unsigned char wk18[6]; - union { - unsigned short WORD; - struct { - unsigned short RRCV:4; - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - } BIT; - } CS3REC; - unsigned char wk19[6]; - union { - unsigned short WORD; - struct { - unsigned short EXENB:1; - unsigned short :3; - unsigned short BSIZE:2; - unsigned short :2; - unsigned short EMODE:1; - unsigned short :7; - } BIT; - } CS4CR; - unsigned char wk20[6]; - union { - unsigned short WORD; - struct { - unsigned short RRCV:4; - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - } BIT; - } CS4REC; - unsigned char wk21[6]; - union { - unsigned short WORD; - struct { - unsigned short EXENB:1; - unsigned short :3; - unsigned short BSIZE:2; - unsigned short :2; - unsigned short EMODE:1; - unsigned short :7; - } BIT; - } CS5CR; - unsigned char wk22[6]; - union { - unsigned short WORD; - struct { - unsigned short RRCV:4; - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - } BIT; - } CS5REC; - unsigned char wk23[6]; - union { - unsigned short WORD; - struct { - unsigned short EXENB:1; - unsigned short :3; - unsigned short BSIZE:2; - unsigned short :2; - unsigned short EMODE:1; - unsigned short :7; - } BIT; - } CS6CR; - unsigned char wk24[6]; - union { - unsigned short WORD; - struct { - unsigned short RRCV:4; - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - } BIT; - } CS6REC; - unsigned char wk25[6]; - union { - unsigned short WORD; - struct { - unsigned short EXENB:1; - unsigned short :3; - unsigned short BSIZE:2; - unsigned short :2; - unsigned short EMODE:1; - unsigned short :7; - } BIT; - } CS7CR; - unsigned char wk26[6]; - union { - unsigned short WORD; - struct { - unsigned short RRCV:4; - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - } BIT; - } CS7REC; - unsigned char wk27[900]; - union { - unsigned char BYTE; - struct { - unsigned char EXENB:1; - unsigned char :3; - unsigned char BSIZE:2; - unsigned char :2; - } BIT; - } SDCCR; - union { - unsigned char BYTE; - struct { - unsigned char EMODE:1; - unsigned char :7; - } BIT; - } SDCMOD; - union { - unsigned char BYTE; - struct { - unsigned char BE:1; - unsigned char :7; - } BIT; - } SDAMOD; - unsigned char wk28[13]; - union { - unsigned char BYTE; - struct { - unsigned char SFEN:1; - unsigned char :7; - } BIT; - } SDSELF; - unsigned char wk29[3]; - union { - unsigned short WORD; - struct { - unsigned short RFC:12; - unsigned short REFW:4; - } BIT; - } SDRFCR; - union { - unsigned char BYTE; - struct { - unsigned char RFEN:1; - unsigned char :7; - } BIT; - } SDRFEN; - unsigned char wk30[9]; - union { - unsigned char BYTE; - struct { - unsigned char INIRQ:1; - unsigned char :7; - } BIT; - } SDICR; - unsigned char wk31[3]; - union { - unsigned short WORD; - struct { - unsigned short ARFI:4; - unsigned short ARFC:4; - unsigned short PRC:3; - unsigned short :5; - } BIT; - } SDIR; - unsigned char wk32[26]; - union { - unsigned char BYTE; - struct { - unsigned char MXC:2; - unsigned char :6; - } BIT; - } SDADR; - unsigned char wk33[3]; - union { - unsigned long LONG; - struct { - unsigned long CL:3; - unsigned long :5; - unsigned long WR:1; - unsigned long RP:3; - unsigned long RCD:2; - unsigned long :2; - unsigned long RAS:3; - unsigned long :13; - } BIT; - } SDTR; - union { - unsigned short WORD; - struct { - unsigned short MR:15; - unsigned short :1; - } BIT; - } SDMOD; - unsigned char wk34[6]; - union { - unsigned char BYTE; - struct { - unsigned char MRSST:1; - unsigned char :2; - unsigned char INIST:1; - unsigned char SRFST:1; - unsigned char :3; - } BIT; - } SDSR; -}; - -struct st_dmac0 { - void *DMSAR; - void *DMDAR; - unsigned long DMCRA; - unsigned short DMCRB; - unsigned char wk0[2]; - union { - unsigned short WORD; - struct { - unsigned short DCTG:2; - unsigned short :6; - unsigned short SZ:2; - unsigned short :2; - unsigned short DTS:2; - unsigned short MD:2; - } BIT; - } DMTMD; - unsigned char wk1[1]; - union { - unsigned char BYTE; - struct { - unsigned char DARIE:1; - unsigned char SARIE:1; - unsigned char RPTIE:1; - unsigned char ESIE:1; - unsigned char DTIE:1; - unsigned char :3; - } BIT; - } DMINT; - union { - unsigned short WORD; - struct { - unsigned short DARA:5; - unsigned short :1; - unsigned short DM:2; - unsigned short SARA:5; - unsigned short :1; - unsigned short SM:2; - } BIT; - } DMAMD; - unsigned char wk2[2]; - unsigned long DMOFR; - union { - unsigned char BYTE; - struct { - unsigned char DTE:1; - unsigned char :7; - } BIT; - } DMCNT; - union { - unsigned char BYTE; - struct { - unsigned char SWREQ:1; - unsigned char :3; - unsigned char CLRS:1; - unsigned char :3; - } BIT; - } DMREQ; - union { - unsigned char BYTE; - struct { - unsigned char ESIF:1; - unsigned char :3; - unsigned char DTIF:1; - unsigned char :2; - unsigned char ACT:1; - } BIT; - } DMSTS; - union { - unsigned char BYTE; - struct { - unsigned char DISEL:1; - unsigned char :7; - } BIT; - } DMCSL; -}; - -struct st_dmac1 { - void *DMSAR; - void *DMDAR; - unsigned long DMCRA; - unsigned short DMCRB; - unsigned char wk0[2]; - union { - unsigned short WORD; - struct { - unsigned short DCTG:2; - unsigned short :6; - unsigned short SZ:2; - unsigned short :2; - unsigned short DTS:2; - unsigned short MD:2; - } BIT; - } DMTMD; - unsigned char wk1[1]; - union { - unsigned char BYTE; - struct { - unsigned char DARIE:1; - unsigned char SARIE:1; - unsigned char RPTIE:1; - unsigned char ESIE:1; - unsigned char DTIE:1; - unsigned char :3; - } BIT; - } DMINT; - union { - unsigned short WORD; - struct { - unsigned short DARA:5; - unsigned short :1; - unsigned short DM:2; - unsigned short SARA:5; - unsigned short :1; - unsigned short SM:2; - } BIT; - } DMAMD; - unsigned char wk2[6]; - union { - unsigned char BYTE; - struct { - unsigned char DTE:1; - unsigned char :7; - } BIT; - } DMCNT; - union { - unsigned char BYTE; - struct { - unsigned char SWREQ:1; - unsigned char :3; - unsigned char CLRS:1; - unsigned char :3; - } BIT; - } DMREQ; - union { - unsigned char BYTE; - struct { - unsigned char ESIF:1; - unsigned char :3; - unsigned char DTIF:1; - unsigned char :2; - unsigned char ACT:1; - } BIT; - } DMSTS; - union { - unsigned char BYTE; - struct { - unsigned char DISEL:1; - unsigned char :7; - } BIT; - } DMCSL; -}; - -struct st_dmac { - union { - unsigned char BYTE; - struct { - unsigned char DMST:1; - unsigned char :7; - } BIT; - } DMAST; -}; - -struct st_dtc { - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char RRS:1; - unsigned char :3; - } BIT; - } DTCCR; - unsigned char wk0[3]; - void *DTCVBR; - union { - unsigned char BYTE; - struct { - unsigned char SHORT:1; - unsigned char :7; - } BIT; - } DTCADMOD; - unsigned char wk1[3]; - union { - unsigned char BYTE; - struct { - unsigned char DTCST:1; - unsigned char :7; - } BIT; - } DTCST; - unsigned char wk2[1]; - union { - unsigned short WORD; - struct { - unsigned short VECN:8; - unsigned short :7; - unsigned short ACT:1; - } BIT; - } DTCSTS; -}; - -struct st_exdmac0 { - void *EDMSAR; - void *EDMDAR; - unsigned long EDMCRA; - unsigned short EDMCRB; - unsigned char wk0[2]; - union { - unsigned short WORD; - struct { - unsigned short DCTG:2; - unsigned short :6; - unsigned short SZ:2; - unsigned short :2; - unsigned short DTS:2; - unsigned short MD:2; - } BIT; - } EDMTMD; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char DACKW:1; - unsigned char DACKE:1; - unsigned char DACKS:1; - unsigned char :4; - } BIT; - } EDMOMD; - union { - unsigned char BYTE; - struct { - unsigned char DARIE:1; - unsigned char SARIE:1; - unsigned char RPTIE:1; - unsigned char ESIE:1; - unsigned char DTIE:1; - unsigned char :3; - } BIT; - } EDMINT; - union { - unsigned long LONG; - struct { - unsigned long DARA:5; - unsigned long :1; - unsigned long DM:2; - unsigned long SARA:5; - unsigned long :1; - unsigned long SM:2; - unsigned long DIR:1; - unsigned long AMS:1; - unsigned long :14; - } BIT; - } EDMAMD; - unsigned long EDMOFR; - union { - unsigned char BYTE; - struct { - unsigned char DTE:1; - unsigned char :7; - } BIT; - } EDMCNT; - union { - unsigned char BYTE; - struct { - unsigned char SWREQ:1; - unsigned char :3; - unsigned char CLRS:1; - unsigned char :3; - } BIT; - } EDMREQ; - union { - unsigned char BYTE; - struct { - unsigned char ESIF:1; - unsigned char :3; - unsigned char DTIF:1; - unsigned char :2; - unsigned char ACT:1; - } BIT; - } EDMSTS; - unsigned char wk1[1]; - union { - unsigned char BYTE; - struct { - unsigned char DREQS:2; - unsigned char :6; - } BIT; - } EDMRMD; - union { - unsigned char BYTE; - struct { - unsigned char EREQ:1; - unsigned char :7; - } BIT; - } EDMERF; - union { - unsigned char BYTE; - struct { - unsigned char PREQ:1; - unsigned char :7; - } BIT; - } EDMPRF; -}; - -struct st_exdmac { - union { - unsigned char BYTE; - struct { - unsigned char DMST:1; - unsigned char :7; - } BIT; - } EDMAST; - unsigned char wk0[479]; - unsigned long CLSBR0; - unsigned long CLSBR1; - unsigned long CLSBR2; - unsigned long CLSBR3; - unsigned long CLSBR4; - unsigned long CLSBR5; - unsigned long CLSBR6; - unsigned long CLSBR7; -}; - -struct st_icu { - union { - unsigned char BYTE; - struct { - unsigned char IR:1; - unsigned char :7; - } BIT; - } IR[254]; - unsigned char wk17[2]; - union { - unsigned char BYTE; - struct { - unsigned char DTCE:1; - unsigned char :7; - } BIT; - } DTCER[254]; - unsigned char wk47[2]; - union { - unsigned char BYTE; - struct { - unsigned char IEN0:1; - unsigned char IEN1:1; - unsigned char IEN2:1; - unsigned char IEN3:1; - unsigned char IEN4:1; - unsigned char IEN5:1; - unsigned char IEN6:1; - unsigned char IEN7:1; - } BIT; - } IER[32]; - unsigned char wk50[192]; - union { - unsigned char BYTE; - struct { - unsigned char SWINT:1; - unsigned char :7; - } BIT; - } SWINTR; - unsigned char wk51[15]; - union { - unsigned short WORD; - struct { - unsigned short FVCT:8; - unsigned short :7; - unsigned short FIEN:1; - } BIT; - } FIR; - unsigned char wk52[14]; - union { - unsigned char BYTE; - struct { - unsigned char IPR:4; - unsigned char :4; - } BIT; - } IPR[144]; - unsigned char wk67[112]; - unsigned char DMRSR0; - unsigned char wk68[3]; - unsigned char DMRSR1; - unsigned char wk69[3]; - unsigned char DMRSR2; - unsigned char wk70[3]; - unsigned char DMRSR3; - unsigned char wk71[243]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char IRQMD:2; - unsigned char :4; - } BIT; - } IRQCR[16]; - unsigned char wk72[112]; - union { - unsigned char BYTE; - struct { - unsigned char NMIST:1; - unsigned char LVDST:1; - unsigned char OSTST:1; - unsigned char :5; - } BIT; - } NMISR; - union { - unsigned char BYTE; - struct { - unsigned char NMIEN:1; - unsigned char LVDEN:1; - unsigned char OSTEN:1; - unsigned char :5; - } BIT; - } NMIER; - union { - unsigned char BYTE; - struct { - unsigned char NMICLR:1; - unsigned char :1; - unsigned char OSTCLR:1; - unsigned char :5; - } BIT; - } NMICLR; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char NMIMD:1; - unsigned char :4; - } BIT; - } NMICR; -}; - -struct st_cmt { - union { - unsigned short WORD; - struct { - unsigned short STR0:1; - unsigned short STR1:1; - unsigned short :14; - } BIT; - } CMSTR0; - unsigned char wk0[14]; - union { - unsigned short WORD; - struct { - unsigned short STR2:1; - unsigned short STR3:1; - unsigned short :14; - } BIT; - } CMSTR1; -}; - -struct st_cmt0 { - union { - unsigned short WORD; - struct { - unsigned short CKS:2; - unsigned short :4; - unsigned short CMIE:1; - unsigned short :9; - } BIT; - } CMCR; - unsigned short CMCNT; - unsigned short CMCOR; -}; - -union un_wdt { - struct { - union { - unsigned char BYTE; - struct { - unsigned char CKS:3; - unsigned char :2; - unsigned char TME:1; - unsigned char TMS:1; - unsigned char :1; - } BIT; - } TCSR; - unsigned char TCNT; - unsigned char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char RSTE:1; - unsigned char WOVF:1; - } BIT; - } RSTCSR; - } READ; - struct { - unsigned short WINA; - unsigned short WINB; - } WRITE; -}; - -struct st_iwdt { - unsigned char IWDTRR; - unsigned char wk0[1]; - union { - unsigned short WORD; - struct { - unsigned short TOPS:2; - unsigned short :2; - unsigned short CKS:4; - unsigned short :8; - } BIT; - } IWDTCR; - union { - unsigned short WORD; - struct { - unsigned short CNTVAL:14; - unsigned short UNDFF:1; - unsigned short :1; - } BIT; - } IWDTSR; -}; - -struct st_ad { - unsigned short ADDRA; - unsigned short ADDRB; - unsigned short ADDRC; - unsigned short ADDRD; - unsigned char wk0[8]; - union { - unsigned char BYTE; - struct { - unsigned char CH:4; - unsigned char :1; - unsigned char ADST:1; - unsigned char ADIE:1; - unsigned char :1; - } BIT; - } ADCSR; - union { - unsigned char BYTE; - struct { - unsigned char MODE:2; - unsigned char CKS:2; - unsigned char :1; - unsigned char TRGS:3; - } BIT; - } ADCR; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DPSEL:1; - } BIT; - } ADDPR; - unsigned char ADSSTR; - unsigned char wk1[11]; - union { - unsigned char BYTE; - struct { - unsigned char DIAG:2; - unsigned char :6; - } BIT; - } ADDIAGR; -}; - -struct st_da { - unsigned short DADR0; - unsigned short DADR1; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char DAE:1; - unsigned char DAOE0:1; - unsigned char DAOE1:1; - } BIT; - } DACR; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DPSEL:1; - } BIT; - } DADPR; -}; - -struct st_ppg0 { - union { - unsigned char BYTE; - struct { - unsigned char G0CMS:2; - unsigned char G1CMS:2; - unsigned char G2CMS:2; - unsigned char G3CMS:2; - } BIT; - } PCR; - union { - unsigned char BYTE; - struct { - unsigned char G0NOV:1; - unsigned char G1NOV:1; - unsigned char G2NOV:1; - unsigned char G3NOV:1; - unsigned char G0INV:1; - unsigned char G1INV:1; - unsigned char G2INV:1; - unsigned char G3INV:1; - } BIT; - } PMR; - union { - unsigned char BYTE; - struct { - unsigned char NDER8:1; - unsigned char NDER9:1; - unsigned char NDER10:1; - unsigned char NDER11:1; - unsigned char NDER12:1; - unsigned char NDER13:1; - unsigned char NDER14:1; - unsigned char NDER15:1; - } BIT; - } NDERH; - union { - unsigned char BYTE; - struct { - unsigned char NDER0:1; - unsigned char NDER1:1; - unsigned char NDER2:1; - unsigned char NDER3:1; - unsigned char NDER4:1; - unsigned char NDER5:1; - unsigned char NDER6:1; - unsigned char NDER7:1; - } BIT; - } NDERL; - union { - unsigned char BYTE; - struct { - unsigned char POD8:1; - unsigned char POD9:1; - unsigned char POD10:1; - unsigned char POD11:1; - unsigned char POD12:1; - unsigned char POD13:1; - unsigned char POD14:1; - unsigned char POD15:1; - } BIT; - } PODRH; - union { - unsigned char BYTE; - struct { - unsigned char POD0:1; - unsigned char POD1:1; - unsigned char POD2:1; - unsigned char POD3:1; - unsigned char POD4:1; - unsigned char POD5:1; - unsigned char POD6:1; - unsigned char POD7:1; - } BIT; - } PODRL; - union { - unsigned char BYTE; - struct { - unsigned char NDR8:1; - unsigned char NDR9:1; - unsigned char NDR10:1; - unsigned char NDR11:1; - unsigned char NDR12:1; - unsigned char NDR13:1; - unsigned char NDR14:1; - unsigned char NDR15:1; - } BIT; - } NDRH; - union { - unsigned char BYTE; - struct { - unsigned char NDR0:1; - unsigned char NDR1:1; - unsigned char NDR2:1; - unsigned char NDR3:1; - unsigned char NDR4:1; - unsigned char NDR5:1; - unsigned char NDR6:1; - unsigned char NDR7:1; - } BIT; - } NDRL; - union { - unsigned char BYTE; - struct { - unsigned char NDR8:1; - unsigned char NDR9:1; - unsigned char NDR10:1; - unsigned char NDR11:1; - unsigned char :4; - } BIT; - } NDRH2; - union { - unsigned char BYTE; - struct { - unsigned char NDR0:1; - unsigned char NDR1:1; - unsigned char NDR2:1; - unsigned char NDR3:1; - unsigned char :4; - } BIT; - } NDRL2; -}; - -struct st_ppg1 { - union { - unsigned char BYTE; - struct { - unsigned char PTRSL:1; - unsigned char :7; - } BIT; - } PTRSLR; - unsigned char wk0[5]; - union { - unsigned char BYTE; - struct { - unsigned char G0CMS:2; - unsigned char G1CMS:2; - unsigned char G2CMS:2; - unsigned char G3CMS:2; - } BIT; - } PCR; - union { - unsigned char BYTE; - struct { - unsigned char G0NOV:1; - unsigned char G1NOV:1; - unsigned char G2NOV:1; - unsigned char G3NOV:1; - unsigned char G0INV:1; - unsigned char G1INV:1; - unsigned char G2INV:1; - unsigned char G3INV:1; - } BIT; - } PMR; - union { - unsigned char BYTE; - struct { - unsigned char NDER24:1; - unsigned char NDER25:1; - unsigned char NDER26:1; - unsigned char NDER27:1; - unsigned char NDER28:1; - unsigned char NDER29:1; - unsigned char NDER30:1; - unsigned char NDER31:1; - } BIT; - } NDERH; - union { - unsigned char BYTE; - struct { - unsigned char NDER16:1; - unsigned char NDER17:1; - unsigned char NDER18:1; - unsigned char NDER19:1; - unsigned char NDER20:1; - unsigned char NDER21:1; - unsigned char NDER22:1; - unsigned char NDER23:1; - } BIT; - } NDERL; - union { - unsigned char BYTE; - struct { - unsigned char POD24:1; - unsigned char POD25:1; - unsigned char POD26:1; - unsigned char POD27:1; - unsigned char POD28:1; - unsigned char POD29:1; - unsigned char POD30:1; - unsigned char POD31:1; - } BIT; - } PODRH; - union { - unsigned char BYTE; - struct { - unsigned char POD16:1; - unsigned char POD17:1; - unsigned char POD18:1; - unsigned char POD19:1; - unsigned char POD20:1; - unsigned char POD21:1; - unsigned char POD22:1; - unsigned char POD23:1; - } BIT; - } PODRL; - union { - unsigned char BYTE; - struct { - unsigned char NDR24:1; - unsigned char NDR25:1; - unsigned char NDR26:1; - unsigned char NDR27:1; - unsigned char NDR28:1; - unsigned char NDR29:1; - unsigned char NDR30:1; - unsigned char NDR31:1; - } BIT; - } NDRH; - union { - unsigned char BYTE; - struct { - unsigned char NDR16:1; - unsigned char NDR17:1; - unsigned char NDR18:1; - unsigned char NDR19:1; - unsigned char NDR20:1; - unsigned char NDR21:1; - unsigned char NDR22:1; - unsigned char NDR23:1; - } BIT; - } NDRL; - union { - unsigned char BYTE; - struct { - unsigned char NDR24:1; - unsigned char NDR25:1; - unsigned char NDR26:1; - unsigned char NDR27:1; - unsigned char :4; - } BIT; - } NDRH2; - union { - unsigned char BYTE; - struct { - unsigned char NDR16:1; - unsigned char NDR17:1; - unsigned char NDR18:1; - unsigned char NDR19:1; - unsigned char :4; - } BIT; - } NDRL2; -}; - -struct st_tmr0 { - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char CCLR:2; - unsigned char OVIE:1; - unsigned char CMIEA:1; - unsigned char CMIEB:1; - } BIT; - } TCR; - unsigned char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char OSA:2; - unsigned char OSB:2; - unsigned char ADTE:1; - unsigned char :3; - } BIT; - } TCSR; - unsigned char wk1[1]; - unsigned char TCORA; - unsigned char wk2[1]; - unsigned char TCORB; - unsigned char wk3[1]; - unsigned char TCNT; - unsigned char wk4[1]; - union { - unsigned char BYTE; - struct { - unsigned char CKS:3; - unsigned char CSS:2; - unsigned char :2; - unsigned char TMRIS:1; - } BIT; - } TCCR; -}; - -struct st_tmr1 { - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char CCLR:2; - unsigned char OVIE:1; - unsigned char CMIEA:1; - unsigned char CMIEB:1; - } BIT; - } TCR; - unsigned char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char OSA:2; - unsigned char OSB:2; - unsigned char :4; - } BIT; - } TCSR; - unsigned char wk1[1]; - unsigned char TCORA; - unsigned char wk2[1]; - unsigned char TCORB; - unsigned char wk3[1]; - unsigned char TCNT; - unsigned char wk4[1]; - union { - unsigned char BYTE; - struct { - unsigned char CKS:3; - unsigned char CSS:2; - unsigned char :2; - unsigned char TMRIS:1; - } BIT; - } TCCR; -}; - -struct st_tmr01 { - unsigned short TCORA; - unsigned short TCORB; - unsigned short TCNT; - unsigned short TCCR; -}; - -struct st_sci { - union { - unsigned char BYTE; - struct { - unsigned char CKS:2; - unsigned char MP:1; - unsigned char STOP:1; - unsigned char PM:1; - unsigned char PE:1; - unsigned char CHR:1; - unsigned char CM:1; - } BIT; - } SMR; - unsigned char BRR; - union { - unsigned char BYTE; - struct { - unsigned char CKE:2; - unsigned char TEIE:1; - unsigned char MPIE:1; - unsigned char RE:1; - unsigned char TE:1; - unsigned char RIE:1; - unsigned char TIE:1; - } BIT; - } SCR; - unsigned char TDR; - union { - unsigned char BYTE; - struct { - unsigned char MPBT:1; - unsigned char MPB:1; - unsigned char TEND:1; - unsigned char PER:1; - unsigned char FER:1; - unsigned char ORER:1; - unsigned char :2; - } BIT; - } SSR; - unsigned char RDR; - union { - unsigned char BYTE; - struct { - unsigned char SMIF:1; - unsigned char :1; - unsigned char SINV:1; - unsigned char SDIR:1; - unsigned char :4; - } BIT; - } SCMR; - union { - unsigned char BYTE; - struct { - unsigned char ACS0:1; - unsigned char :3; - unsigned char ABCS:1; - unsigned char :3; - } BIT; - } SEMR; -}; - -struct st_smci { - union { - unsigned char BYTE; - struct { - unsigned char CKS:2; - unsigned char BCP:2; - unsigned char PM:1; - unsigned char PE:1; - unsigned char BLK:1; - unsigned char GM:1; - } BIT; - } SMR; - unsigned char BRR; - union { - unsigned char BYTE; - struct { - unsigned char CKE:2; - unsigned char TEIE:1; - unsigned char :1; - unsigned char RE:1; - unsigned char TE:1; - unsigned char RIE:1; - unsigned char TIE:1; - } BIT; - } SCR; - unsigned char TDR; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char TEND:1; - unsigned char PER:1; - unsigned char ERS:1; - unsigned char ORER:1; - unsigned char :2; - } BIT; - } SSR; - unsigned char RDR; - union { - unsigned char BYTE; - struct { - unsigned char SMIF:1; - unsigned char :1; - unsigned char SINV:1; - unsigned char SDIR:1; - unsigned char :3; - unsigned char BCP2:1; - } BIT; - } SCMR; -}; - -struct st_crc { - union { - unsigned char BYTE; - struct { - unsigned char GPS:2; - unsigned char LMS:1; - unsigned char :4; - unsigned char DORCLR:1; - } BIT; - } CRCCR; - unsigned char CRCDIR; - unsigned short CRCDOR; -}; - -struct st_riic { - union { - unsigned char BYTE; - struct { - unsigned char SDAI:1; - unsigned char SCLI:1; - unsigned char SDAO:1; - unsigned char SCLO:1; - unsigned char SOWP:1; - unsigned char CLO:1; - unsigned char IICRST:1; - unsigned char ICE:1; - } BIT; - } ICCR1; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ST:1; - unsigned char RS:1; - unsigned char SP:1; - unsigned char :1; - unsigned char TRS:1; - unsigned char MST:1; - unsigned char BBSY:1; - } BIT; - } ICCR2; - union { - unsigned char BYTE; - struct { - unsigned char BC:3; - unsigned char BCWP:1; - unsigned char CKS:3; - unsigned char MTWP:1; - } BIT; - } ICMR1; - union { - unsigned char BYTE; - struct { - unsigned char TMOS:1; - unsigned char TMOL:1; - unsigned char TMOH:1; - unsigned char :1; - unsigned char SDDL:3; - unsigned char DLCS:1; - } BIT; - } ICMR2; - union { - unsigned char BYTE; - struct { - unsigned char NF:2; - unsigned char ACKBR:1; - unsigned char ACKBT:1; - unsigned char ACKWP:1; - unsigned char RDRFS:1; - unsigned char WAIT:1; - unsigned char SMBS:1; - } BIT; - } ICMR3; - union { - unsigned char BYTE; - struct { - unsigned char TMOE:1; - unsigned char MALE:1; - unsigned char NALE:1; - unsigned char SALE:1; - unsigned char NACKE:1; - unsigned char NFE:1; - unsigned char SCLE:1; - unsigned char FMPE:1; - } BIT; - } ICFER; - union { - unsigned char BYTE; - struct { - unsigned char SAR0E:1; - unsigned char SAR1E:1; - unsigned char SAR2E:1; - unsigned char GCAE:1; - unsigned char :1; - unsigned char DIDE:1; - unsigned char :1; - unsigned char HOAE:1; - } BIT; - } ICSER; - union { - unsigned char BYTE; - struct { - unsigned char TMOIE:1; - unsigned char ALIE:1; - unsigned char STIE:1; - unsigned char SPIE:1; - unsigned char NAKIE:1; - unsigned char RIE:1; - unsigned char TEIE:1; - unsigned char TIE:1; - } BIT; - } ICIER; - union { - unsigned char BYTE; - struct { - unsigned char AAS0:1; - unsigned char AAS1:1; - unsigned char AAS2:1; - unsigned char GCA:1; - unsigned char :1; - unsigned char DID:1; - unsigned char :1; - unsigned char HOA:1; - } BIT; - } ICSR1; - union { - unsigned char BYTE; - struct { - unsigned char TMOF:1; - unsigned char AL:1; - unsigned char START:1; - unsigned char STOP:1; - unsigned char NACKF:1; - unsigned char RDRF:1; - unsigned char TEND:1; - unsigned char TDRE:1; - } BIT; - } ICSR2; - union { - unsigned char BYTE; - struct { - unsigned char SVA0:1; - unsigned char SVA:7; - } BIT; - } SARL0; - union { - unsigned char BYTE; - struct { - unsigned char FS:1; - unsigned char SVA:2; - unsigned char :5; - } BIT; - } SARU0; - union { - unsigned char BYTE; - struct { - unsigned char SVA0:1; - unsigned char SVA:7; - } BIT; - } SARL1; - union { - unsigned char BYTE; - struct { - unsigned char FS:1; - unsigned char SVA:2; - unsigned char :5; - } BIT; - } SARU1; - union { - unsigned char BYTE; - struct { - unsigned char SVA0:1; - unsigned char SVA:7; - } BIT; - } SARL2; - union { - unsigned char BYTE; - struct { - unsigned char FS:1; - unsigned char SVA:2; - unsigned char :5; - } BIT; - } SARU2; - union { - unsigned char BYTE; - struct { - unsigned char BRL:5; - unsigned char :3; - } BIT; - } ICBRL; - union { - unsigned char BYTE; - struct { - unsigned char BRH:5; - unsigned char :3; - } BIT; - } ICBRH; - unsigned char ICDRT; - unsigned char ICDRR; -}; - -struct st_rspi { - union { - unsigned char BYTE; - struct { - unsigned char SPMS:1; - unsigned char TXMD:1; - unsigned char MODFEN:1; - unsigned char MSTR:1; - unsigned char SPEIE:1; - unsigned char SPTIE:1; - unsigned char SPE:1; - unsigned char SPRIE:1; - } BIT; - } SPCR; - union { - unsigned char BYTE; - struct { - unsigned char SSLP0:1; - unsigned char SSLP1:1; - unsigned char SSLP2:1; - unsigned char SSLP3:1; - unsigned char :4; - } BIT; - } SSLP; - union { - unsigned char BYTE; - struct { - unsigned char SPLP:1; - unsigned char SPLP2:1; - unsigned char SPOM:1; - unsigned char :1; - unsigned char MOIFV:1; - unsigned char MOIFE:1; - unsigned char :2; - } BIT; - } SPPCR; - union { - unsigned char BYTE; - struct { - unsigned char OVRF:1; - unsigned char IDLNF:1; - unsigned char MODF:1; - unsigned char PERF:1; - unsigned char :4; - } BIT; - } SPSR; - union { - unsigned long LONG; - struct { - unsigned short H; - unsigned short L; - } WORD; - } SPDR; - union { - unsigned char BYTE; - struct { - unsigned char SPSLN:3; - unsigned char :5; - } BIT; - } SPSCR; - union { - unsigned char BYTE; - struct { - unsigned char SPCP:3; - unsigned char :1; - unsigned char SPECM:3; - unsigned char :1; - } BIT; - } SPSSR; - union { - unsigned char BYTE; - struct { - unsigned char SPR0:1; - unsigned char SPR1:1; - unsigned char SPR2:1; - unsigned char SPR3:1; - unsigned char SPR4:1; - unsigned char SPR5:1; - unsigned char SPR6:1; - unsigned char SPR7:1; - } BIT; - } SPBR; - union { - unsigned char BYTE; - struct { - unsigned char SPFC:2; - unsigned char SLSEL:2; - unsigned char SPRDTD:1; - unsigned char SPLW:1; - unsigned char :2; - } BIT; - } SPDCR; - union { - unsigned char BYTE; - struct { - unsigned char SCKDL:3; - unsigned char :5; - } BIT; - } SPCKD; - union { - unsigned char BYTE; - struct { - unsigned char SLNDL:3; - unsigned char :5; - } BIT; - } SSLND; - union { - unsigned char BYTE; - struct { - unsigned char SPNDL:3; - unsigned char :5; - } BIT; - } SPND; - union { - unsigned char BYTE; - struct { - unsigned char SPPE:1; - unsigned char SPOE:1; - unsigned char SPIIE:1; - unsigned char PTE:1; - unsigned char :4; - } BIT; - } SPCR2; - union { - unsigned short WORD; - struct { - unsigned short CPHA:1; - unsigned short CPOL:1; - unsigned short BRDV:2; - unsigned short SSLA:3; - unsigned short SSLKP:1; - unsigned short SPB:4; - unsigned short LSBF:1; - unsigned short SPNDEN:1; - unsigned short SLNDEN:1; - unsigned short SCKDEN:1; - } BIT; - } SPCMD0; - union { - unsigned short WORD; - struct { - unsigned short CPHA:1; - unsigned short CPOL:1; - unsigned short BRDV:2; - unsigned short SSLA:3; - unsigned short SSLKP:1; - unsigned short SPB:4; - unsigned short LSBF:1; - unsigned short SPNDEN:1; - unsigned short SLNDEN:1; - unsigned short SCKDEN:1; - } BIT; - } SPCMD1; - union { - unsigned short WORD; - struct { - unsigned short CPHA:1; - unsigned short CPOL:1; - unsigned short BRDV:2; - unsigned short SSLA:3; - unsigned short SSLKP:1; - unsigned short SPB:4; - unsigned short LSBF:1; - unsigned short SPNDEN:1; - unsigned short SLNDEN:1; - unsigned short SCKDEN:1; - } BIT; - } SPCMD2; - union { - unsigned short WORD; - struct { - unsigned short CPHA:1; - unsigned short CPOL:1; - unsigned short BRDV:2; - unsigned short SSLA:3; - unsigned short SSLKP:1; - unsigned short SPB:4; - unsigned short LSBF:1; - unsigned short SPNDEN:1; - unsigned short SLNDEN:1; - unsigned short SCKDEN:1; - } BIT; - } SPCMD3; - union { - unsigned short WORD; - struct { - unsigned short CPHA:1; - unsigned short CPOL:1; - unsigned short BRDV:2; - unsigned short SSLA:3; - unsigned short SSLKP:1; - unsigned short SPB:4; - unsigned short LSBF:1; - unsigned short SPNDEN:1; - unsigned short SLNDEN:1; - unsigned short SCKDEN:1; - } BIT; - } SPCMD4; - union { - unsigned short WORD; - struct { - unsigned short CPHA:1; - unsigned short CPOL:1; - unsigned short BRDV:2; - unsigned short SSLA:3; - unsigned short SSLKP:1; - unsigned short SPB:4; - unsigned short LSBF:1; - unsigned short SPNDEN:1; - unsigned short SLNDEN:1; - unsigned short SCKDEN:1; - } BIT; - } SPCMD5; - union { - unsigned short WORD; - struct { - unsigned short CPHA:1; - unsigned short CPOL:1; - unsigned short BRDV:2; - unsigned short SSLA:3; - unsigned short SSLKP:1; - unsigned short SPB:4; - unsigned short LSBF:1; - unsigned short SPNDEN:1; - unsigned short SLNDEN:1; - unsigned short SCKDEN:1; - } BIT; - } SPCMD6; - union { - unsigned short WORD; - struct { - unsigned short CPHA:1; - unsigned short CPOL:1; - unsigned short BRDV:2; - unsigned short SSLA:3; - unsigned short SSLKP:1; - unsigned short SPB:4; - unsigned short LSBF:1; - unsigned short SPNDEN:1; - unsigned short SLNDEN:1; - unsigned short SCKDEN:1; - } BIT; - } SPCMD7; -}; - -struct st_mtu { - union { - unsigned char BYTE; - struct { - unsigned char OE3B:1; - unsigned char OE4A:1; - unsigned char OE4B:1; - unsigned char OE3D:1; - unsigned char OE4C:1; - unsigned char OE4D:1; - unsigned char :2; - } BIT; - } TOER; - unsigned char wk0[2]; - union { - unsigned char BYTE; - struct { - unsigned char UF:1; - unsigned char VF:1; - unsigned char WF:1; - unsigned char FB:1; - unsigned char P:1; - unsigned char N:1; - unsigned char BCD:1; - unsigned char :1; - } BIT; - } TGCR; - union { - unsigned char BYTE; - struct { - unsigned char OLSP:1; - unsigned char OLSN:1; - unsigned char TOCS:1; - unsigned char TOCL:1; - unsigned char :2; - unsigned char PSYE:1; - unsigned char :1; - } BIT; - } TOCR1; - union { - unsigned char BYTE; - struct { - unsigned char OLS1P:1; - unsigned char OLS1N:1; - unsigned char OLS2P:1; - unsigned char OLS2N:1; - unsigned char OLS3P:1; - unsigned char OLS3N:1; - unsigned char BF:2; - } BIT; - } TOCR2; - unsigned char wk1[4]; - unsigned short TCDR; - unsigned short TDDR; - unsigned char wk2[8]; - unsigned short TCNTS; - unsigned short TCBR; - unsigned char wk3[12]; - union { - unsigned char BYTE; - struct { - unsigned char T4VCOR:3; - unsigned char T4VEN:1; - unsigned char T3ACOR:3; - unsigned char T3AEN:1; - } BIT; - } TITCR; - union { - unsigned char BYTE; - struct { - unsigned char T4VCNT:3; - unsigned char :1; - unsigned char T3ACNT:3; - unsigned char :1; - } BIT; - } TITCNT; - union { - unsigned char BYTE; - struct { - unsigned char BTE:2; - unsigned char :6; - } BIT; - } TBTER; - unsigned char wk4[1]; - union { - unsigned char BYTE; - struct { - unsigned char TDRE:1; - unsigned char :7; - } BIT; - } TDER; - unsigned char wk5[1]; - union { - unsigned char BYTE; - struct { - unsigned char OLS1P:1; - unsigned char OLS1N:1; - unsigned char OLS2P:1; - unsigned char OLS2N:1; - unsigned char OLS3P:1; - unsigned char OLS3N:1; - unsigned char :2; - } BIT; - } TOLBR; - unsigned char wk6[41]; - union { - unsigned char BYTE; - struct { - unsigned char WRE:1; - unsigned char :6; - unsigned char CCE:1; - } BIT; - } TWCR; - unsigned char wk7[31]; - union { - unsigned char BYTE; - struct { - unsigned char CST0:1; - unsigned char CST1:1; - unsigned char CST2:1; - unsigned char :3; - unsigned char CST3:1; - unsigned char CST4:1; - } BIT; - } TSTR; - union { - unsigned char BYTE; - struct { - unsigned char SYNC0:1; - unsigned char SYNC1:1; - unsigned char SYNC2:1; - unsigned char :3; - unsigned char SYNC3:1; - unsigned char SYNC4:1; - } BIT; - } TSYR; - unsigned char wk8[2]; - union { - unsigned char BYTE; - struct { - unsigned char RWE:1; - unsigned char :7; - } BIT; - } TRWER; -}; - -struct st_mtu0 { - union { - unsigned char BYTE; - struct { - unsigned char TPSC:3; - unsigned char CKEG:2; - unsigned char CCLR:3; - } BIT; - } TCR; - union { - unsigned char BYTE; - struct { - unsigned char MD:4; - unsigned char BFA:1; - unsigned char BFB:1; - unsigned char BFE:1; - unsigned char :1; - } BIT; - } TMDR; - union { - unsigned char BYTE; - struct { - unsigned char IOA:4; - unsigned char IOB:4; - } BIT; - } TIORH; - union { - unsigned char BYTE; - struct { - unsigned char IOC:4; - unsigned char IOD:4; - } BIT; - } TIORL; - union { - unsigned char BYTE; - struct { - unsigned char TGIEA:1; - unsigned char TGIEB:1; - unsigned char TGIEC:1; - unsigned char TGIED:1; - unsigned char TCIEV:1; - unsigned char :2; - unsigned char TTGE:1; - } BIT; - } TIER; - unsigned char TSR; - unsigned short TCNT; - unsigned short TGRA; - unsigned short TGRB; - unsigned short TGRC; - unsigned short TGRD; - unsigned char wk0[16]; - unsigned short TGRE; - unsigned short TGRF; - union { - unsigned char BYTE; - struct { - unsigned char TGIEE:1; - unsigned char TGIEF:1; - unsigned char :6; - } BIT; - } TIER2; - unsigned char wk1[1]; - union { - unsigned char BYTE; - struct { - unsigned char TTSA:1; - unsigned char TTSB:1; - unsigned char TTSE:1; - unsigned char :5; - } BIT; - } TBTM; -}; - -struct st_mtu1 { - union { - unsigned char BYTE; - struct { - unsigned char TPSC:3; - unsigned char CKEG:2; - unsigned char CCLR:3; - } BIT; - } TCR; - union { - unsigned char BYTE; - struct { - unsigned char MD:4; - unsigned char :4; - } BIT; - } TMDR; - union { - unsigned char BYTE; - struct { - unsigned char IOA:4; - unsigned char IOB:4; - } BIT; - } TIOR; - unsigned char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char TGIEA:1; - unsigned char TGIEB:1; - unsigned char :2; - unsigned char TCIEV:1; - unsigned char TCIEU:1; - unsigned char :1; - unsigned char TTGE:1; - } BIT; - } TIER; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char TCFD:1; - } BIT; - } TSR; - unsigned short TCNT; - unsigned short TGRA; - unsigned short TGRB; - unsigned char wk1[4]; - union { - unsigned char BYTE; - struct { - unsigned char I1AE:1; - unsigned char I1BE:1; - unsigned char I2AE:1; - unsigned char I2BE:1; - unsigned char :4; - } BIT; - } TICCR; -}; - -struct st_mtu2 { - union { - unsigned char BYTE; - struct { - unsigned char TPSC:3; - unsigned char CKEG:2; - unsigned char CCLR:3; - } BIT; - } TCR; - union { - unsigned char BYTE; - struct { - unsigned char MD:4; - unsigned char :4; - } BIT; - } TMDR; - union { - unsigned char BYTE; - struct { - unsigned char IOA:4; - unsigned char IOB:4; - } BIT; - } TIOR; - unsigned char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char TGIEA:1; - unsigned char TGIEB:1; - unsigned char :2; - unsigned char TCIEV:1; - unsigned char TCIEU:1; - unsigned char :1; - unsigned char TTGE:1; - } BIT; - } TIER; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char TCFD:1; - } BIT; - } TSR; - unsigned short TCNT; - unsigned short TGRA; - unsigned short TGRB; -}; - -struct st_mtu3 { - union { - unsigned char BYTE; - struct { - unsigned char TPSC:3; - unsigned char CKEG:2; - unsigned char CCLR:3; - } BIT; - } TCR; - unsigned char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char MD:4; - unsigned char BFA:1; - unsigned char BFB:1; - unsigned char BFE:1; - unsigned char :1; - } BIT; - } TMDR; - unsigned char wk1[1]; - union { - unsigned char BYTE; - struct { - unsigned char IOA:4; - unsigned char IOB:4; - } BIT; - } TIORH; - union { - unsigned char BYTE; - struct { - unsigned char IOC:4; - unsigned char IOD:4; - } BIT; - } TIORL; - unsigned char wk2[2]; - union { - unsigned char BYTE; - struct { - unsigned char TGIEA:1; - unsigned char TGIEB:1; - unsigned char TGIEC:1; - unsigned char TGIED:1; - unsigned char TCIEV:1; - unsigned char TCIEU:1; - unsigned char TTGE2:1; - unsigned char TTGE:1; - } BIT; - } TIER; - unsigned char wk3[7]; - unsigned short TCNT; - unsigned char wk4[6]; - unsigned short TGRA; - unsigned short TGRB; - unsigned char wk5[8]; - unsigned short TGRC; - unsigned short TGRD; - unsigned char wk6[4]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char TCFD:1; - } BIT; - } TSR; - unsigned char wk7[11]; - union { - unsigned char BYTE; - struct { - unsigned char TTSA:1; - unsigned char TTSB:1; - unsigned char TTSE:1; - unsigned char :5; - } BIT; - } TBTM; -}; - -struct st_mtu4 { - unsigned char DMMY; - union { - unsigned char BYTE; - struct { - unsigned char TPSC:3; - unsigned char CKEG:2; - unsigned char CCLR:3; - } BIT; - } TCR; - unsigned char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char MD:4; - unsigned char BFA:1; - unsigned char BFB:1; - unsigned char BFE:1; - unsigned char :1; - } BIT; - } TMDR; - unsigned char wk1[2]; - union { - unsigned char BYTE; - struct { - unsigned char IOA:4; - unsigned char IOB:4; - } BIT; - } TIORH; - union { - unsigned char BYTE; - struct { - unsigned char IOC:4; - unsigned char IOD:4; - } BIT; - } TIORL; - unsigned char wk2[1]; - union { - unsigned char BYTE; - struct { - unsigned char TGIEA:1; - unsigned char TGIEB:1; - unsigned char TGIEC:1; - unsigned char TGIED:1; - unsigned char TCIEV:1; - unsigned char TCIEU:1; - unsigned char TTGE2:1; - unsigned char TTGE:1; - } BIT; - } TIER; - unsigned char wk3[8]; - unsigned short TCNT; - unsigned char wk4[8]; - unsigned short TGRA; - unsigned short TGRB; - unsigned char wk5[8]; - unsigned short TGRC; - unsigned short TGRD; - unsigned char wk6[1]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char TCFD:1; - } BIT; - } TSR; - unsigned char wk7[11]; - union { - unsigned char BYTE; - struct { - unsigned char TTSA:1; - unsigned char TTSB:1; - unsigned char TTSE:1; - unsigned char :5; - } BIT; - } TBTM; - unsigned char wk8[6]; - union { - unsigned short WORD; - struct { - unsigned short ITB4VE:1; - unsigned short ITB3AE:1; - unsigned short ITA4VE:1; - unsigned short ITA3AE:1; - unsigned short DT4BE:1; - unsigned short UT4BE:1; - unsigned short DT4AE:1; - unsigned short UT4AE:1; - unsigned short :6; - unsigned short BF:2; - } BIT; - } TADCR; - unsigned char wk9[2]; - unsigned short TADCORA; - unsigned short TADCORB; - unsigned short TADCOBRA; - unsigned short TADCOBRB; -}; - -struct st_mtu5 { - unsigned short TCNTU; - unsigned short TGRU; - union { - unsigned char BYTE; - struct { - unsigned char TPSC:3; - unsigned char CKEG:2; - unsigned char CCLR:3; - } BIT; - } TCRU; - unsigned char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char IOC:5; - unsigned char :3; - } BIT; - } TIORU; - unsigned char wk1[9]; - unsigned short TCNTV; - unsigned short TGRV; - union { - unsigned char BYTE; - struct { - unsigned char TPSC:3; - unsigned char CKEG:2; - unsigned char CCLR:3; - } BIT; - } TCRV; - union { - unsigned char BYTE; - struct { - unsigned char IOC:5; - unsigned char :3; - } BIT; - } TIORV; - unsigned char wk2[9]; - unsigned short TCNTW; - unsigned short TGRW; - union { - unsigned char BYTE; - struct { - unsigned char TPSC:3; - unsigned char CKEG:2; - unsigned char CCLR:3; - } BIT; - } TCRW; - unsigned char wk3[1]; - union { - unsigned char BYTE; - struct { - unsigned char IOC:5; - unsigned char :3; - } BIT; - } TIORW; - unsigned char wk4[11]; - union { - unsigned char BYTE; - struct { - unsigned char TGIE5W:1; - unsigned char TGIE5V:1; - unsigned char TGIE5U:1; - unsigned char :5; - } BIT; - } TIER; - unsigned char wk5[1]; - union { - unsigned char BYTE; - struct { - unsigned char CSTW5:1; - unsigned char CSTV5:1; - unsigned char CSTU5:1; - unsigned char :5; - } BIT; - } TSTR; - unsigned char wk6[1]; - union { - unsigned char BYTE; - struct { - unsigned char CMPCLR5W:1; - unsigned char CMPCLR5V:1; - unsigned char CMPCLR5U:1; - unsigned char :5; - } BIT; - } TCNTCMPCLR; -}; - -struct st_poe { - union { - unsigned short WORD; - struct { - unsigned short POE0M:2; - unsigned short POE1M:2; - unsigned short POE2M:2; - unsigned short POE3M:2; - unsigned short PIE1:1; - unsigned short :3; - unsigned short POE0F:1; - unsigned short POE1F:1; - unsigned short POE2F:1; - unsigned short POE3F:1; - } BIT; - } ICSR1; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short OIE1:1; - unsigned short OCE1:1; - unsigned short :5; - unsigned short OSF1:1; - } BIT; - } OCSR1; - union { - unsigned short WORD; - struct { - unsigned short POE4M:2; - unsigned short POE5M:2; - unsigned short POE6M:2; - unsigned short POE7M:2; - unsigned short PIE2:1; - unsigned short :3; - unsigned short POE4F:1; - unsigned short POE5F:1; - unsigned short POE6F:1; - unsigned short POE7F:1; - } BIT; - } ICSR2; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short OIE2:1; - unsigned short OCE2:1; - unsigned short :5; - unsigned short OSF2:1; - } BIT; - } OCSR2; - union { - unsigned short WORD; - struct { - unsigned short POE8M:2; - unsigned short :6; - unsigned short PIE3:1; - unsigned short POE8E:1; - unsigned short :2; - unsigned short POE8F:1; - unsigned short :3; - } BIT; - } ICSR3; - union { - unsigned char BYTE; - struct { - unsigned char CH34HIZ:1; - unsigned char CH0HIZ:1; - unsigned char CH910HIZ:1; - unsigned char CH6HIZ:1; - unsigned char :4; - } BIT; - } SPOER; - union { - unsigned char BYTE; - struct { - unsigned char PE0ZE:1; - unsigned char PE1ZE:1; - unsigned char PE2ZE:1; - unsigned char PE3ZE:1; - unsigned char PE4ZE:1; - unsigned char PE5ZE:1; - unsigned char PE6ZE:1; - unsigned char PE7ZE:1; - } BIT; - } POECR1; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short P6CZE:1; - unsigned short P5CZE:1; - unsigned short P4CZE:1; - unsigned short :1; - unsigned short P3CZEB:1; - unsigned short P2CZEB:1; - unsigned short P1CZEB:1; - unsigned short :1; - unsigned short P3CZEA:1; - unsigned short P2CZEA:1; - unsigned short P1CZEA:1; - unsigned short :1; - } BIT; - } POECR2; - union { - unsigned short WORD; - struct { - unsigned short POE9M:2; - unsigned short :6; - unsigned short PIE4:1; - unsigned short POE9E:1; - unsigned short :2; - unsigned short POE9F:1; - unsigned short :3; - } BIT; - } ICSR4; -}; - -struct st_s12ad { - union { - unsigned char BYTE; - struct { - unsigned char EXTRG:1; - unsigned char TRGE:1; - unsigned char CKS:2; - unsigned char ADIE:1; - unsigned char :1; - unsigned char ADCS:1; - unsigned char ADST:1; - } BIT; - } ADCSR; - unsigned char wk0[3]; - union { - unsigned short WORD; - struct { - unsigned short ANS:8; - unsigned short :8; - } BIT; - } ADANS; - unsigned char wk1[2]; - union { - unsigned short WORD; - struct { - unsigned short ADS:8; - unsigned short :8; - } BIT; - } ADADS; - unsigned char wk2[2]; - union { - unsigned char BYTE; - struct { - unsigned char ADC:2; - unsigned char :6; - } BIT; - } ADADC; - unsigned char wk3[1]; - union { - unsigned short WORD; - struct { - unsigned short :5; - unsigned short ACE:1; - unsigned short :9; - unsigned short ADRFMT:1; - } BIT; - } ADCER; - union { - unsigned char BYTE; - struct { - unsigned char ADSTRS:4; - unsigned char :4; - } BIT; - } ADSTRGR; - unsigned char wk4[15]; - unsigned short ADDRA; - unsigned short ADDRB; - unsigned short ADDRC; - unsigned short ADDRD; - unsigned short ADDRE; - unsigned short ADDRF; - unsigned short ADDRG; - unsigned short ADDRH; -}; - -struct st_port0 { - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char :1; - unsigned char B5:1; - unsigned char :1; - unsigned char B7:1; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char :1; - unsigned char B5:1; - unsigned char :1; - unsigned char B7:1; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char :1; - unsigned char B5:1; - unsigned char :1; - unsigned char B7:1; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char :1; - unsigned char B5:1; - unsigned char :1; - unsigned char B7:1; - } BIT; - } ICR; - unsigned char wk3[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char :1; - unsigned char B5:1; - unsigned char :1; - unsigned char B7:1; - } BIT; - } ODR; -}; - -struct st_port1 { - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } ICR; - unsigned char wk3[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } ODR; -}; - -struct st_port2 { - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } ICR; - unsigned char wk3[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } ODR; -}; - -struct st_port3 { - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char :3; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char :3; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char :2; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char :3; - } BIT; - } ICR; - unsigned char wk3[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char :3; - } BIT; - } ODR; -}; - -struct st_port4 { - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } ICR; -}; - -struct st_port5 { - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } ICR; -}; - -struct st_port6 { - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } ICR; -}; - -struct st_port7 { - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } ICR; -}; - -struct st_port8 { - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char :2; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char :2; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char :2; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char :2; - } BIT; - } ICR; -}; - -struct st_port9 { - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } ICR; - unsigned char wk3[95]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } PCR; -}; - -struct st_porta { - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } ICR; - unsigned char wk3[95]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } PCR; -}; - -struct st_portb { - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } ICR; - unsigned char wk3[95]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } PCR; -}; - -struct st_portc { - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } ICR; - unsigned char wk3[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } ODR; - unsigned char wk4[63]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } PCR; -}; - -struct st_portd { - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } ICR; - unsigned char wk3[95]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } PCR; -}; - -struct st_porte { - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } ICR; - unsigned char wk3[95]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } PCR; -}; - -struct st_portf { - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char :3; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char :3; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char :3; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char :3; - } BIT; - } ICR; -}; - -struct st_portg { - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } ICR; - unsigned char wk3[95]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } PCR; -}; - -struct st_ioport { - union { - unsigned char BYTE; - struct { - unsigned char CS0E:1; - unsigned char CS1E:1; - unsigned char CS2E:1; - unsigned char CS3E:1; - unsigned char CS4E:1; - unsigned char CS5E:1; - unsigned char CS6E:1; - unsigned char CS7E:1; - } BIT; - } PF0CSE; - union { - unsigned char BYTE; - struct { - unsigned char CS4S:2; - unsigned char CS5S:2; - unsigned char CS6S:2; - unsigned char CS7S:2; - } BIT; - } PF1CSS; - union { - unsigned char BYTE; - struct { - unsigned char CS0S:1; - unsigned char :1; - unsigned char CS1S:2; - unsigned char CS2S:2; - unsigned char CS3S:2; - } BIT; - } PF2CSS; - union { - unsigned char BYTE; - struct { - unsigned char A16E:1; - unsigned char A17E:1; - unsigned char A18E:1; - unsigned char A19E:1; - unsigned char A20E:1; - unsigned char A21E:1; - unsigned char A22E:1; - unsigned char A23E:1; - } BIT; - } PF3BUS; - union { - unsigned char BYTE; - struct { - unsigned char ADRLE:2; - unsigned char A10E:1; - unsigned char A11E:1; - unsigned char A12E:1; - unsigned char A13E:1; - unsigned char A14E:1; - unsigned char A15E:1; - } BIT; - } PF4BUS; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ADRHMS:1; - unsigned char :2; - unsigned char DHE:1; - unsigned char DH32E:1; - unsigned char WR1BC1E:1; - unsigned char WR32BC32E:1; - } BIT; - } PF5BUS; - union { - unsigned char BYTE; - struct { - unsigned char WAITS:2; - unsigned char :2; - unsigned char MDSDE:1; - unsigned char :1; - unsigned char DQM1E:1; - unsigned char SDCLKE:1; - } BIT; - } PF6BUS; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char EDMA0S:2; - unsigned char EDMA1S:2; - } BIT; - } PF7DMA; - union { - unsigned char BYTE; - struct { - unsigned char ITS8:1; - unsigned char ITS9:1; - unsigned char ITS10:1; - unsigned char ITS11:1; - unsigned char :1; - unsigned char ITS13:1; - unsigned char :1; - unsigned char ITS15:1; - } BIT; - } PF8IRQ; - union { - unsigned char BYTE; - struct { - unsigned char ITS0:1; - unsigned char ITS1:1; - unsigned char ITS2:1; - unsigned char ITS3:1; - unsigned char ITS4:1; - unsigned char ITS5:1; - unsigned char ITS6:1; - unsigned char ITS7:1; - } BIT; - } PF9IRQ; - union { - unsigned char BYTE; - struct { - unsigned char ADTRG0S:1; - unsigned char :7; - } BIT; - } PFAADC; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char TMR2S:1; - unsigned char TMR3S:1; - unsigned char :4; - } BIT; - } PFBTMR; - union { - unsigned char BYTE; - struct { - unsigned char MTUS0:1; - unsigned char MTUS1:1; - unsigned char MTUS2:1; - unsigned char MTUS3:1; - unsigned char MTUS4:1; - unsigned char MTUS5:1; - unsigned char MTUS6:1; - unsigned char TCLKS:1; - } BIT; - } PFCMTU; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char MTUS6:1; - unsigned char TCLKS:1; - } BIT; - } PFDMTU; - union { - unsigned char BYTE; - struct { - unsigned char ENETE0:1; - unsigned char ENETE1:1; - unsigned char ENETE2:1; - unsigned char ENETE3:1; - unsigned char PHYMODE:1; - unsigned char :2; - unsigned char EE:1; - } BIT; - } PFENET; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char SCI1S:1; - unsigned char SCI2S:1; - unsigned char SCI3S:1; - unsigned char :2; - unsigned char SCI6S:1; - unsigned char :1; - } BIT; - } PFFSCI; - union { - unsigned char BYTE; - struct { - unsigned char RSPIS:1; - unsigned char RSPCKE:1; - unsigned char MOSIE:1; - unsigned char MISOE:1; - unsigned char SSL0E:1; - unsigned char SSL1E:1; - unsigned char SSL2E:1; - unsigned char SSL3E:1; - } BIT; - } PFGSPI; - union { - unsigned char BYTE; - struct { - unsigned char RSPIS:1; - unsigned char RSPCKE:1; - unsigned char MOSIE:1; - unsigned char MISOE:1; - unsigned char SSL0E:1; - unsigned char SSL1E:1; - unsigned char SSL2E:1; - unsigned char SSL3E:1; - } BIT; - } PFHSPI; - unsigned char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char CAN0E:1; - unsigned char :7; - } BIT; - } PFJCAN; - union { - unsigned char BYTE; - struct { - unsigned char USBMD:2; - unsigned char PUPHZS:1; - unsigned char PDHZS:1; - unsigned char USBE:1; - unsigned char :3; - } BIT; - } PFKUSB; - union { - unsigned char BYTE; - struct { - unsigned char USBMD:2; - unsigned char PUPHZS:1; - unsigned char PDHZS:1; - unsigned char USBE:1; - unsigned char :3; - } BIT; - } PFLUSB; - union { - unsigned char BYTE; - struct { - unsigned char POE0E:1; - unsigned char POE1E:1; - unsigned char POE2E:1; - unsigned char POE3E:1; - unsigned char POE4E:1; - unsigned char POE5E:1; - unsigned char POE6E:1; - unsigned char POE7E:1; - } BIT; - } PFMPOE; - union { - unsigned char BYTE; - struct { - unsigned char POE8E:1; - unsigned char POE9E:1; - unsigned char :6; - } BIT; - } PFNPOE; -}; - -struct st_flash { - unsigned char DMMY; - union { - unsigned char BYTE; - struct { - unsigned char FLWE:2; - unsigned char :6; - } BIT; - } FWEPROR; - unsigned char wk0[7799160]; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char FRDMD:1; - unsigned char :3; - } BIT; - } FMODR; - unsigned char wk1[13]; - union { - unsigned char BYTE; - struct { - unsigned char DFLWPE:1; - unsigned char DFLRPE:1; - unsigned char :1; - unsigned char DFLAE:1; - unsigned char CMDLK:1; - unsigned char :2; - unsigned char ROMAE:1; - } BIT; - } FASTAT; - union { - unsigned char BYTE; - struct { - unsigned char DFLWPEIE:1; - unsigned char DFLRPEIE:1; - unsigned char :1; - unsigned char DFLAEIE:1; - unsigned char CMDLKIE:1; - unsigned char :2; - unsigned char ROMAEIE:1; - } BIT; - } FAEINT; - union { - unsigned char BYTE; - struct { - unsigned char FRDYIE:1; - unsigned char :7; - } BIT; - } FRDYIE; - unsigned char wk2[45]; - union { - unsigned short WORD; - struct { - unsigned short DBRE00:1; - unsigned short DBRE01:1; - unsigned short DBRE02:1; - unsigned short DBRE03:1; - unsigned short DBRE04:1; - unsigned short DBRE05:1; - unsigned short DBRE06:1; - unsigned short DBRE07:1; - unsigned short KEY:8; - } BIT; - } DFLRE0; - union { - unsigned short WORD; - struct { - unsigned short DBRE08:1; - unsigned short DBRE09:1; - unsigned short DBRE10:1; - unsigned short DBRE11:1; - unsigned short DBRE12:1; - unsigned short DBRE13:1; - unsigned short DBRE14:1; - unsigned short DBRE15:1; - unsigned short KEY:8; - } BIT; - } DFLRE1; - unsigned char wk3[12]; - union { - unsigned short WORD; - struct { - unsigned short DBWE00:1; - unsigned short DBWE01:1; - unsigned short DBWE02:1; - unsigned short DBWE03:1; - unsigned short DBWE04:1; - unsigned short DBWE05:1; - unsigned short DBWE06:1; - unsigned short DBWE07:1; - unsigned short KEY:8; - } BIT; - } DFLWE0; - union { - unsigned short WORD; - struct { - unsigned short DBWE08:1; - unsigned short DBWE09:1; - unsigned short DBWE10:1; - unsigned short DBWE11:1; - unsigned short DBWE12:1; - unsigned short DBWE13:1; - unsigned short DBWE14:1; - unsigned short DBWE15:1; - unsigned short KEY:8; - } BIT; - } DFLWE1; - union { - unsigned short WORD; - struct { - unsigned short FCRME:1; - unsigned short :7; - unsigned short KEY:8; - } BIT; - } FCURAME; - unsigned char wk4[15194]; - union { - unsigned char BYTE; - struct { - unsigned char PRGSPD:1; - unsigned char ERSSPD:1; - unsigned char :1; - unsigned char SUSRDY:1; - unsigned char PRGERR:1; - unsigned char ERSERR:1; - unsigned char ILGLERR:1; - unsigned char FRDY:1; - } BIT; - } FSTATR0; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char FLOCKST:1; - unsigned char :2; - unsigned char FCUERR:1; - } BIT; - } FSTATR1; - union { - unsigned short WORD; - struct { - unsigned short FENTRY0:1; - unsigned short :6; - unsigned short FENTRYD:1; - unsigned short FEKEY:8; - } BIT; - } FENTRYR; - union { - unsigned short WORD; - struct { - unsigned short FPROTCN:1; - unsigned short :7; - unsigned short FPKEY:8; - } BIT; - } FPROTR; - union { - unsigned short WORD; - struct { - unsigned short FRESET:1; - unsigned short :7; - unsigned short FPKEY:8; - } BIT; - } FRESETR; - unsigned char wk5[2]; - union { - unsigned short WORD; - struct { - unsigned short PCMDR:8; - unsigned short CMDR:8; - } BIT; - } FCMDR; - unsigned char wk6[12]; - union { - unsigned short WORD; - struct { - unsigned short ESUSPMD:1; - unsigned short :15; - } BIT; - } FCPSR; - union { - unsigned short WORD; - struct { - unsigned short BCSIZE:1; - unsigned short :2; - unsigned short BCADR:8; - unsigned short :5; - } BIT; - } DFLBCCNT; - union { - unsigned short WORD; - struct { - unsigned short PEERRST:8; - unsigned short :8; - } BIT; - } FPESTAT; - union { - unsigned short WORD; - struct { - unsigned short BCST:1; - unsigned short :15; - } BIT; - } DFLBCSTAT; - unsigned char wk7[24]; - union { - unsigned short WORD; - struct { - unsigned short PCKA:8; - unsigned short :8; - } BIT; - } PCKAR; -}; - -struct st_rtc { - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char F1HZ:1; - unsigned char F2HZ:1; - unsigned char F4HZ:1; - unsigned char F8HZ:1; - unsigned char F16HZ:1; - unsigned char F32HZ:1; - unsigned char F64HZ:1; - } BIT; - } R64CNT; - unsigned char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char SEC1:4; - unsigned char SEC10:3; - unsigned char :1; - } BIT; - } RSECCNT; - unsigned char wk1[1]; - union { - unsigned char BYTE; - struct { - unsigned char MIN1:4; - unsigned char MIN10:3; - unsigned char :1; - } BIT; - } RMINCNT; - unsigned char wk2[1]; - union { - unsigned char BYTE; - struct { - unsigned char HOUR1:4; - unsigned char HOUR10:2; - unsigned char :2; - } BIT; - } RHRCNT; - unsigned char wk3[1]; - union { - unsigned char BYTE; - struct { - unsigned char DAY:3; - unsigned char :5; - } BIT; - } RWKCNT; - unsigned char wk4[1]; - union { - unsigned char BYTE; - struct { - unsigned char DAY1:4; - unsigned char DAY10:2; - unsigned char :2; - } BIT; - } RDAYCNT; - unsigned char wk5[1]; - union { - unsigned char BYTE; - struct { - unsigned char MON1:4; - unsigned char MON10:1; - unsigned char :3; - } BIT; - } RMONCNT; - unsigned char wk6[1]; - union { - unsigned short WORD; - struct { - unsigned short YEAR1:4; - unsigned short YEAR10:4; - unsigned short YEAR100:4; - unsigned short YEAR1000:4; - } BIT; - } RYRCNT; - union { - unsigned char BYTE; - struct { - unsigned char SEC1:4; - unsigned char SEC10:3; - unsigned char ENB:1; - } BIT; - } RSECAR; - unsigned char wk7[1]; - union { - unsigned char BYTE; - struct { - unsigned char MIN1:4; - unsigned char MIN10:3; - unsigned char ENB:1; - } BIT; - } RMINAR; - unsigned char wk8[1]; - union { - unsigned char BYTE; - struct { - unsigned char HOUR1:4; - unsigned char HOUR10:2; - unsigned char :1; - unsigned char ENB:1; - } BIT; - } RHRAR; - unsigned char wk9[1]; - union { - unsigned char BYTE; - struct { - unsigned char DAY:3; - unsigned char :4; - unsigned char ENB:1; - } BIT; - } RWKAR; - unsigned char wk10[1]; - union { - unsigned char BYTE; - struct { - unsigned char DAY1:4; - unsigned char DAY10:2; - unsigned char :1; - unsigned char ENB:1; - } BIT; - } RDAYAR; - unsigned char wk11[1]; - union { - unsigned char BYTE; - struct { - unsigned char MON1:4; - unsigned char MON10:1; - unsigned char :2; - unsigned char ENB:1; - } BIT; - } RMONAR; - unsigned char wk12[1]; - union { - unsigned short WORD; - struct { - unsigned short YEAR1:4; - unsigned short YEAR10:4; - unsigned short YEAR100:4; - unsigned short YEAR1000:4; - } BIT; - } RYRAR; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char ENB:1; - } BIT; - } RYRAREN; - unsigned char wk13[3]; - union { - unsigned char BYTE; - struct { - unsigned char AIE:1; - unsigned char CIE:1; - unsigned char PIE:1; - unsigned char :1; - unsigned char PES:3; - unsigned char :1; - } BIT; - } RCR1; - unsigned char wk14[1]; - union { - unsigned char BYTE; - struct { - unsigned char START:1; - unsigned char RESET:1; - unsigned char ADJ:1; - unsigned char RTCOE:1; - unsigned char :4; - } BIT; - } RCR2; -}; - -struct st_can { - struct { - union { - unsigned long LONG; - union { - unsigned short H; - unsigned short L; - } WORD; - struct { - unsigned char HH; - unsigned char HL; - unsigned char LH; - unsigned char LL; - } BYTE; - struct { - unsigned long EID:18; - unsigned long SID:11; - unsigned long :1; - unsigned long RTR:1; - unsigned long IDE:1; - } BIT; - } ID; - union { - unsigned short WORD; - struct { - unsigned char DLC:4; - unsigned char :4; - unsigned char :8; - } BIT; - } DLC; - unsigned char DATA[8]; - union{ - unsigned short WORD; - struct { - unsigned char TSH; - unsigned char TSL; - } BYTE; - } TS; - } MB[32]; - union { - unsigned long LONG; - struct { - unsigned short H; - unsigned short L; - } WORD; - struct { - unsigned char HH; - unsigned char HL; - unsigned char LH; - unsigned char LL; - } BYTE; - struct { - unsigned long EID:18; - unsigned long SID:11; - unsigned long :3; - } BIT; - } MKR[8]; - union { - unsigned long LONG; - struct { - unsigned short H; - unsigned short L; - } WORD; - struct { - unsigned char HH; - unsigned char HL; - unsigned char LH; - unsigned char LL; - } BYTE; - struct { - unsigned long EID:18; - unsigned long SID:11; - unsigned long :1; - unsigned long RTR:1; - unsigned long IDE:1; - } BIT; - } FIDCR0; - union { - unsigned long LONG; - struct { - unsigned short H; - unsigned short L; - } WORD; - struct { - unsigned char HH; - unsigned char HL; - unsigned char LH; - unsigned char LL; - } BYTE; - struct { - unsigned long EID:18; - unsigned long SID:11; - unsigned long :1; - unsigned long RTR:1; - unsigned long IDE:1; - } BIT; - } FIDCR1; - unsigned long MKIVLR; - unsigned long MIER; - unsigned char wk32[1008]; - union { - unsigned char BYTE; - union { - struct { - unsigned char SENTDATA:1; - unsigned char TRMACTIVE:1; - unsigned char TRMABT:1; - unsigned char :1; - unsigned char ONESHOT:1; - unsigned char :1; - unsigned char RECREQ:1; - unsigned char TRMREQ:1; - } TX; - struct { - unsigned char NEWDATA:1; - unsigned char INVALDATA:1; - unsigned char MSGLOST:1; - unsigned char :1; - unsigned char ONESHOT:1; - unsigned char :1; - unsigned char RECREQ:1; - unsigned char TRMREQ:1; - } RX; - } BIT; - } MCTL[32]; - union { - unsigned short WORD; - struct { - unsigned char H; - unsigned char L; - } BYTE; - struct { - unsigned char MBM:1; - unsigned char IDFM:2; - unsigned char MLM:1; - unsigned char TPM:1; - unsigned char TSRC:1; - unsigned char TSPS:2; - unsigned char CANM:2; - unsigned char SLPM:1; - unsigned char BOM:2; - unsigned char RBOC:1; - unsigned char :2; - } BIT; - } CTLR; - union { - unsigned short WORD; - struct { - unsigned char H; - unsigned char L; - } BYTE; - struct { - unsigned char NDST:1; - unsigned char SDST:1; - unsigned char RFST:1; - unsigned char TFST:1; - unsigned char NMLST:1; - unsigned char FMLST:1; - unsigned char TABST:1; - unsigned char EST:1; - unsigned char RSTST:1; - unsigned char HLTST:1; - unsigned char SLPST:1; - unsigned char EPST:1; - unsigned char BOST:1; - unsigned char TRMST:1; - unsigned char RECST:1; - unsigned char :1; - } BIT; - } STR; - union { - unsigned long LONG; - struct { - unsigned short H; - unsigned short L; - } WORD; - struct { - unsigned char HH; - unsigned char HL; - unsigned char LH; - unsigned char LL; - } BYTE; - struct { - unsigned long :8; - unsigned long TSEG2:3; - unsigned long :1; - unsigned long SJW:2; - unsigned long :2; - unsigned long BRP:10; - unsigned long :2; - unsigned long TSEG1:4; - } BIT; - } BCR; - union { - unsigned char BYTE; - struct { - unsigned char RFE:1; - unsigned char RFUST:3; - unsigned char RFMLF:1; - unsigned char RFFST:1; - unsigned char RFWST:1; - unsigned char RFEST:1; - } BIT; - } RFCR; - unsigned char RFPCR; - union { - unsigned char BYTE; - struct { - unsigned char TFE:1; - unsigned char TFUST:3; - unsigned char :2; - unsigned char TFFST:1; - unsigned char TFEST:1; - } BIT; - } TFCR; - unsigned char TFPCR; - union { - unsigned char BYTE; - struct { - unsigned char BEIE:1; - unsigned char EWIE:1; - unsigned char EPIE:1; - unsigned char BOEIE:1; - unsigned char BORIE:1; - unsigned char ORIE:1; - unsigned char OLIE:1; - unsigned char BLIE:1; - } BIT; - } EIER; - union { - unsigned char BYTE; - struct { - unsigned char BEIF:1; - unsigned char EWIF:1; - unsigned char EPIF:1; - unsigned char BOEIF:1; - unsigned char BORIF:1; - unsigned char ORIF:1; - unsigned char OLIF:1; - unsigned char BLIF:1; - } BIT; - } EIFR; - unsigned char RECR; - unsigned char TECR; - union { - unsigned char BYTE; - struct { - unsigned char SEF:1; - unsigned char FEF:1; - unsigned char AEF:1; - unsigned char CEF:1; - unsigned char BE1F:1; - unsigned char BE0F:1; - unsigned char ADEF:1; - unsigned char EDPM:1; - } BIT; - } ECSR; - unsigned char CSSR; - union { - unsigned char BYTE; - struct { - unsigned char MBNST:5; - unsigned char :2; - unsigned char SEST:1; - } BIT; - } MSSR; - union { - unsigned char BYTE; - struct { - unsigned char MBSM:2; - unsigned char :6; - } BIT; - } MSMR; - unsigned short TSR; - unsigned short AFSR; - union { - unsigned char BYTE; - struct { - unsigned char TSTE:1; - unsigned char TSTM:2; - unsigned char :5; - } BIT; - } TCR; -}; - -struct st_usb0 { - union { - unsigned short WORD; - struct { - unsigned short USBE:1; - unsigned short :3; - unsigned short DPRPU:1; - unsigned short DRPD:1; - unsigned short DCFM:1; - unsigned short :3; - unsigned short SCKE:1; - unsigned short :5; - } BIT; - } SYSCFG; - unsigned char wk0[2]; - union { - unsigned short WORD; - struct { - unsigned short LNST:2; - unsigned short IDMON:1; - unsigned short :3; - unsigned short HTACT:1; - unsigned short :7; - unsigned short OVCMON:2; - } BIT; - } SYSSTS0; - unsigned char wk1[2]; - union { - unsigned short WORD; - struct { - unsigned short RHST:3; - unsigned short :1; - unsigned short UACT:1; - unsigned short RESUME:1; - unsigned short USBRST:1; - unsigned short RWUPE:1; - unsigned short WKUP:1; - unsigned short VBUSEN:1; - unsigned short EXICEN:1; - unsigned short HNPBTOA:1; - unsigned short :4; - } BIT; - } DVSTCTR0; - unsigned char wk2[10]; - union { - unsigned short WORD; - struct { - unsigned char L; - unsigned char H; - } BYTE; - } CFIFO; - unsigned char wk3[2]; - union { - unsigned short WORD; - struct { - unsigned char L; - unsigned char H; - } BYTE; - } D0FIFO; - unsigned char wk4[2]; - union { - unsigned short WORD; - struct { - unsigned char L; - unsigned char H; - } BYTE; - } D1FIFO; - unsigned char wk5[2]; - union { - unsigned short WORD; - struct { - unsigned short CURPIPE:4; - unsigned short :1; - unsigned short ISEL:1; - unsigned short :2; - unsigned short BIGEND:1; - unsigned short :1; - unsigned short MBW:1; - unsigned short :3; - unsigned short REW:1; - unsigned short RCNT:1; - } BIT; - } CFIFOSEL; - union { - unsigned short WORD; - struct { - unsigned short DTLN:8; - unsigned short TLN:1; - unsigned short :4; - unsigned short FRDY:1; - unsigned short BCLR:1; - unsigned short BVAL:1; - } BIT; - } CFIFOCTR; - unsigned char wk6[4]; - union { - unsigned short WORD; - struct { - unsigned short CURPIPE:4; - unsigned short :4; - unsigned short BIGEND:1; - unsigned short :1; - unsigned short MBW:1; - unsigned short :1; - unsigned short DREQE:1; - unsigned short DCLRM:1; - unsigned short REW:1; - unsigned short RCNT:1; - } BIT; - } D0FIFOSEL; - union { - unsigned short WORD; - struct { - unsigned short DTLN:8; - unsigned short TLN:1; - unsigned short :4; - unsigned short FRDY:1; - unsigned short BCLR:1; - unsigned short BVAL:1; - } BIT; - } D0FIFOCTR; - union { - unsigned short WORD; - struct { - unsigned short CURPIPE:4; - unsigned short :4; - unsigned short BIGEND:1; - unsigned short :1; - unsigned short MBW:1; - unsigned short :1; - unsigned short DREQE:1; - unsigned short DCLRM:1; - unsigned short REW:1; - unsigned short RCNT:1; - } BIT; - } D1FIFOSEL; - union { - unsigned short WORD; - struct { - unsigned short DTLN:8; - unsigned short TLN:1; - unsigned short :4; - unsigned short FRDY:1; - unsigned short BCLR:1; - unsigned short BVAL:1; - } BIT; - } D1FIFOCTR; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short BRDYE:1; - unsigned short NRDYE:1; - unsigned short BEMPE:1; - unsigned short CTRE:1; - unsigned short DVSE:1; - unsigned short SOFE:1; - unsigned short RSME:1; - unsigned short VBSE:1; - } BIT; - } INTENB0; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short SACKE:1; - unsigned short SIGNE:1; - unsigned short EOFERRE:1; - unsigned short :4; - unsigned short ATTCHE:1; - unsigned short DTCHE:1; - unsigned short :1; - unsigned short BCHGE:1; - unsigned short OVRCRE:1; - } BIT; - } INTENB1; - unsigned char wk7[2]; - union { - unsigned short WORD; - struct { - unsigned short PIPE0BRDYE:1; - unsigned short PIPE1BRDYE:1; - unsigned short PIPE2BRDYE:1; - unsigned short PIPE3BRDYE:1; - unsigned short PIPE4BRDYE:1; - unsigned short PIPE5BRDYE:1; - unsigned short PIPE6BRDYE:1; - unsigned short PIPE7BRDYE:1; - unsigned short PIPE8BRDYE:1; - unsigned short PIPE9BRDYE:1; - unsigned short :6; - } BIT; - } BRDYENB; - union { - unsigned short WORD; - struct { - unsigned short PIPE0BRDYE:1; - unsigned short PIPE1BRDYE:1; - unsigned short PIPE2BRDYE:1; - unsigned short PIPE3BRDYE:1; - unsigned short PIPE4BRDYE:1; - unsigned short PIPE5BRDYE:1; - unsigned short PIPE6BRDYE:1; - unsigned short PIPE7BRDYE:1; - unsigned short PIPE8BRDYE:1; - unsigned short PIPE9BRDYE:1; - unsigned short :6; - } BIT; - } NRDYENB; - union { - unsigned short WORD; - struct { - unsigned short PIPE0BEMPE:1; - unsigned short PIPE1BEMPE:1; - unsigned short PIPE2BEMPE:1; - unsigned short PIPE3BEMPE:1; - unsigned short PIPE4BEMPE:1; - unsigned short PIPE5BEMPE:1; - unsigned short PIPE6BEMPE:1; - unsigned short PIPE7BEMPE:1; - unsigned short PIPE8BEMPE:1; - unsigned short PIPE9BEMPE:1; - unsigned short :6; - } BIT; - } BEMPENB; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short EDGESTS:1; - unsigned short :1; - unsigned short BRDYM:1; - unsigned short :1; - unsigned short TRNENSEL:1; - unsigned short :7; - } BIT; - } SOFCFG; - unsigned char wk8[2]; - union { - unsigned short WORD; - struct { - unsigned short CTSQ:3; - unsigned short VALID:1; - unsigned short DVSQ:3; - unsigned short VBSTS:1; - unsigned short BRDY:1; - unsigned short NRDY:1; - unsigned short BEMP:1; - unsigned short CTRT:1; - unsigned short DVST:1; - unsigned short SOFR:1; - unsigned short RESM:1; - unsigned short VBINT:1; - } BIT; - } INTSTS0; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short SACK:1; - unsigned short SIGN:1; - unsigned short EOFERR:1; - unsigned short :4; - unsigned short ATTCH:1; - unsigned short DTCH:1; - unsigned short :1; - unsigned short BCHG:1; - unsigned short OVRCR:1; - } BIT; - } INTSTS1; - unsigned char wk9[2]; - union { - unsigned short WORD; - struct { - unsigned short PIPE0BRDY:1; - unsigned short PIPE1BRDY:1; - unsigned short PIPE2BRDY:1; - unsigned short PIPE3BRDY:1; - unsigned short PIPE4BRDY:1; - unsigned short PIPE5BRDY:1; - unsigned short PIPE6BRDY:1; - unsigned short PIPE7BRDY:1; - unsigned short PIPE8BRDY:1; - unsigned short PIPE9BRDY:1; - unsigned short :6; - } BIT; - } BRDYSTS; - union { - unsigned short WORD; - struct { - unsigned short PIPE0BRDY:1; - unsigned short PIPE1BRDY:1; - unsigned short PIPE2BRDY:1; - unsigned short PIPE3BRDY:1; - unsigned short PIPE4BRDY:1; - unsigned short PIPE5BRDY:1; - unsigned short PIPE6BRDY:1; - unsigned short PIPE7BRDY:1; - unsigned short PIPE8BRDY:1; - unsigned short PIPE9BRDY:1; - unsigned short :6; - } BIT; - } NRDYSTS; - union { - unsigned short WORD; - struct { - unsigned short PIPE0BENP:1; - unsigned short PIPE1BENP:1; - unsigned short PIPE2BENP:1; - unsigned short PIPE3BENP:1; - unsigned short PIPE4BENP:1; - unsigned short PIPE5BENP:1; - unsigned short PIPE6BENP:1; - unsigned short PIPE7BENP:1; - unsigned short PIPE8BENP:1; - unsigned short PIPE9BENP:1; - unsigned short :6; - } BIT; - } BEMPSTS; - union { - unsigned short WORD; - struct { - unsigned short FRNM:11; - unsigned short :3; - unsigned short CRCE:1; - unsigned short OVRN:1; - } BIT; - } FRMNUM; - union { - unsigned short WORD; - struct { - unsigned short :15; - unsigned short DVCHG:1; - } BIT; - } DVCHGR; - union { - unsigned short WORD; - struct { - unsigned short USBADDR:7; - unsigned short :1; - unsigned short STSRECOV:4; - unsigned short :4; - } BIT; - } USBADDR; - unsigned char wk10[2]; - union { - unsigned short WORD; - struct { - unsigned short BMREQUESTTYPE:8; - unsigned short BREQUEST:8; - } BIT; - } USBREQ; - unsigned short USBVAL; - unsigned short USBINDX; - unsigned short USBLENG; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short DIR:1; - unsigned short :2; - unsigned short SHTNAK:1; - unsigned short :8; - } BIT; - } DCPCFG; - union { - unsigned short WORD; - struct { - unsigned short MXPS:7; - unsigned short :5; - unsigned short DEVSEL:4; - } BIT; - } DCPMAXP; - union { - unsigned short WORD; - struct { - unsigned short PID:2; - unsigned short CCPL:1; - unsigned short :2; - unsigned short PBUSY:1; - unsigned short SQMON:1; - unsigned short SQSET:1; - unsigned short SQCLR:1; - unsigned short :2; - unsigned short SUREQCLR:1; - unsigned short :2; - unsigned short SUREQ:1; - unsigned short BSTS:1; - } BIT; - } DCPCTR; - unsigned char wk11[2]; - union { - unsigned short WORD; - struct { - unsigned short PIPESEL:4; - unsigned short :12; - } BIT; - } PIPESEL; - unsigned char wk12[2]; - union { - unsigned short WORD; - struct { - unsigned short EPNUM:4; - unsigned short DIR:1; - unsigned short :2; - unsigned short SHTNAK:1; - unsigned short :1; - unsigned short DBLB:1; - unsigned short BFRE:1; - unsigned short :3; - unsigned short TYPE:2; - } BIT; - } PIPECFG; - unsigned char wk13[2]; - union { - unsigned short WORD; - struct { - unsigned short MXPS:8; - unsigned short XPS:1; - unsigned short :3; - unsigned short DEVSEL:4; - } BIT; - } PIPEMAXP; - union { - unsigned short WORD; - struct { - unsigned short IITV:3; - unsigned short :9; - unsigned short IFIS:1; - unsigned short :3; - } BIT; - } PIPEPERI; - union { - unsigned short WORD; - struct { - unsigned short PID:2; - unsigned short :3; - unsigned short PBUSY:1; - unsigned short SQMON:1; - unsigned short SQSET:1; - unsigned short SQCLR:1; - unsigned short ACLRM:1; - unsigned short ATREPM:1; - unsigned short :3; - unsigned short INBUFM:1; - unsigned short BSTS:1; - } BIT; - } PIPE1CTR; - union { - unsigned short WORD; - struct { - unsigned short PID:2; - unsigned short :3; - unsigned short PBUSY:1; - unsigned short SQMON:1; - unsigned short SQSET:1; - unsigned short SQCLR:1; - unsigned short ACLRM:1; - unsigned short ATREPM:1; - unsigned short :3; - unsigned short INBUFM:1; - unsigned short BSTS:1; - } BIT; - } PIPE2CTR; - union { - unsigned short WORD; - struct { - unsigned short PID:2; - unsigned short :3; - unsigned short PBUSY:1; - unsigned short SQMON:1; - unsigned short SQSET:1; - unsigned short SQCLR:1; - unsigned short ACLRM:1; - unsigned short ATREPM:1; - unsigned short :3; - unsigned short INBUFM:1; - unsigned short BSTS:1; - } BIT; - } PIPE3CTR; - union { - unsigned short WORD; - struct { - unsigned short PID:2; - unsigned short :3; - unsigned short PBUSY:1; - unsigned short SQMON:1; - unsigned short SQSET:1; - unsigned short SQCLR:1; - unsigned short ACLRM:1; - unsigned short ATREPM:1; - unsigned short :3; - unsigned short INBUFM:1; - unsigned short BSTS:1; - } BIT; - } PIPE4CTR; - union { - unsigned short WORD; - struct { - unsigned short PID:2; - unsigned short :3; - unsigned short PBUSY:1; - unsigned short SQMON:1; - unsigned short SQSET:1; - unsigned short SQCLR:1; - unsigned short ACLRM:1; - unsigned short ATREPM:1; - unsigned short :3; - unsigned short INBUFM:1; - unsigned short BSTS:1; - } BIT; - } PIPE5CTR; - union { - unsigned short WORD; - struct { - unsigned short PID:2; - unsigned short :3; - unsigned short PBUSY:1; - unsigned short SQMON:1; - unsigned short SQSET:1; - unsigned short SQCLR:1; - unsigned short ACLRM:1; - unsigned short :5; - unsigned short BSTS:1; - } BIT; - } PIPE6CTR; - union { - unsigned short WORD; - struct { - unsigned short PID:2; - unsigned short :3; - unsigned short PBUSY:1; - unsigned short SQMON:1; - unsigned short SQSET:1; - unsigned short SQCLR:1; - unsigned short ACLRM:1; - unsigned short :5; - unsigned short BSTS:1; - } BIT; - } PIPE7CTR; - union { - unsigned short WORD; - struct { - unsigned short PID:2; - unsigned short :3; - unsigned short PBUSY:1; - unsigned short SQMON:1; - unsigned short SQSET:1; - unsigned short SQCLR:1; - unsigned short ACLRM:1; - unsigned short :5; - unsigned short BSTS:1; - } BIT; - } PIPE8CTR; - union { - unsigned short WORD; - struct { - unsigned short PID:2; - unsigned short :3; - unsigned short PBUSY:1; - unsigned short SQMON:1; - unsigned short SQSET:1; - unsigned short SQCLR:1; - unsigned short ACLRM:1; - unsigned short :5; - unsigned short BSTS:1; - } BIT; - } PIPE9CTR; - unsigned char wk14[14]; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short TRCLR:1; - unsigned short TRENB:1; - unsigned short :6; - } BIT; - } PIPE1TRE; - unsigned short PIPE1TRN; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short TRCLR:1; - unsigned short TRENB:1; - unsigned short :6; - } BIT; - } PIPE2TRE; - unsigned short PIPE2TRN; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short TRCLR:1; - unsigned short TRENB:1; - unsigned short :6; - } BIT; - } PIPE3TRE; - unsigned short PIPE3TRN; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short TRCLR:1; - unsigned short TRENB:1; - unsigned short :6; - } BIT; - } PIPE4TRE; - unsigned short PIPE4TRN; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short TRCLR:1; - unsigned short TRENB:1; - unsigned short :6; - } BIT; - } PIPE5TRE; - unsigned short PIPE5TRN; - unsigned char wk15[44]; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short USBSPD:2; - unsigned short :8; - } BIT; - } DEVADD0; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short USBSPD:2; - unsigned short :8; - } BIT; - } DEVADD1; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short USBSPD:2; - unsigned short :8; - } BIT; - } DEVADD2; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short USBSPD:2; - unsigned short :8; - } BIT; - } DEVADD3; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short USBSPD:2; - unsigned short :8; - } BIT; - } DEVADD4; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short USBSPD:2; - unsigned short :8; - } BIT; - } DEVADD5; -}; - -struct st_usb { - union { - unsigned long LONG; - struct { - unsigned long SRPC0:1; - unsigned long :3; - unsigned long FIXPHY0:1; - unsigned long :3; - unsigned long SRPC1:1; - unsigned long :3; - unsigned long FIXPHY1:1; - unsigned long :3; - unsigned long DP0:1; - unsigned long DM0:1; - unsigned long :2; - unsigned long DOVCA0:1; - unsigned long DOVCB0:1; - unsigned long :1; - unsigned long DVBSTS0:1; - unsigned long DP1:1; - unsigned long DM1:1; - unsigned long :2; - unsigned long DOVCA1:1; - unsigned long DOVCB1:1; - unsigned long :1; - unsigned long DVSTS1:1; - } BIT; - } DPUSR0R; - union { - unsigned long LONG; - struct { - unsigned long DPINTE0:1; - unsigned long DMINTE0:1; - unsigned long :2; - unsigned long DOVRCRAE0:1; - unsigned long DOVRCRBE0:1; - unsigned long :1; - unsigned long DVBSE0:1; - unsigned long DPINTE1:1; - unsigned long DMINTE1:1; - unsigned long :2; - unsigned long DOVRCRAE1:1; - unsigned long DOVRCRBE1:1; - unsigned long :1; - unsigned long DVBSE1:1; - unsigned long DPINT0:1; - unsigned long DMINT0:1; - unsigned long :2; - unsigned long DOVRCRA0:1; - unsigned long DOVRCRB0:1; - unsigned long :1; - unsigned long DVBINT0:1; - unsigned long DPINT1:1; - unsigned long DMINT1:1; - unsigned long :2; - unsigned long DOVRCRA1:1; - unsigned long DOVRCRB1:1; - unsigned long :1; - unsigned long DVBINT1:1; - } BIT; - } DPUSR1R; -}; - -struct st_edmac { - union { - unsigned long LONG; - struct { - unsigned long SWR:1; - unsigned long :3; - unsigned long DL:2; - unsigned long DE:1; - unsigned long :25; - } BIT; - } EDMR; - unsigned char wk0[4]; - union { - unsigned long LONG; - struct { - unsigned long TR:1; - unsigned long :31; - } BIT; - } EDTRR; - unsigned char wk1[4]; - union { - unsigned long LONG; - struct { - unsigned long RR:1; - unsigned long :31; - } BIT; - } EDRRR; - unsigned char wk2[4]; - void *TDLAR; - unsigned char wk3[4]; - void *RDLAR; - unsigned char wk4[4]; - union { - unsigned long LONG; - struct { - unsigned long CERF:1; - unsigned long PRE:1; - unsigned long RTSF:1; - unsigned long RTLF:1; - unsigned long RRF:1; - unsigned long :2; - unsigned long RMAF:1; - unsigned long TRO:1; - unsigned long CD:1; - unsigned long DLC:1; - unsigned long CND:1; - unsigned long :4; - unsigned long RFOF:1; - unsigned long RDE:1; - unsigned long FR:1; - unsigned long TFUF:1; - unsigned long TDE:1; - unsigned long TC:1; - unsigned long ECI:1; - unsigned long ADE:1; - unsigned long RFCOF:1; - unsigned long RABT:1; - unsigned long TABT:1; - unsigned long :3; - unsigned long TWB:1; - unsigned long :1; - } BIT; - } EESR; - unsigned char wk5[4]; - union { - unsigned long LONG; - struct { - unsigned long CERFIP:1; - unsigned long PREIP:1; - unsigned long RTSFIP:1; - unsigned long RTLFIP:1; - unsigned long RRFIP:1; - unsigned long :2; - unsigned long RMAFIP:1; - unsigned long TROIP:1; - unsigned long CDIP:1; - unsigned long DLCIP:1; - unsigned long CNDIP:1; - unsigned long :4; - unsigned long RFOFIP:1; - unsigned long RDEIP:1; - unsigned long FRIP:1; - unsigned long TFUFIP:1; - unsigned long TDEIP:1; - unsigned long TCIP:1; - unsigned long ECIIP:1; - unsigned long ADEIP:1; - unsigned long RFCOFIP:1; - unsigned long RABTIP:1; - unsigned long TABTIP:1; - unsigned long :3; - unsigned long TWBIP:1; - unsigned long :1; - } BIT; - } EESIPR; - unsigned char wk6[4]; - union { - unsigned long LONG; - struct { - unsigned long CERFCE:1; - unsigned long PRECE:1; - unsigned long RTSFCE:1; - unsigned long RTLFCE:1; - unsigned long RRFCE:1; - unsigned long :2; - unsigned long RMAFCE:1; - unsigned long TROCE:1; - unsigned long CDCE:1; - unsigned long DLCCE:1; - unsigned long CNDCE:1; - unsigned long :20; - } BIT; - } TRSCER; - unsigned char wk7[4]; - union { - unsigned long LONG; - struct { - unsigned long MFC:16; - unsigned long :16; - } BIT; - } RMFCR; - unsigned char wk8[4]; - union { - unsigned long LONG; - struct { - unsigned long TFT:11; - unsigned long :21; - } BIT; - } TFTR; - unsigned char wk9[4]; - union { - unsigned long LONG; - struct { - unsigned long RFD:5; - unsigned long :3; - unsigned long TFD:5; - unsigned long :19; - } BIT; - } FDR; - unsigned char wk10[4]; - union { - unsigned long LONG; - struct { - unsigned long RNR:1; - unsigned long RNC:1; - unsigned long :30; - } BIT; - } RMCR; - unsigned char wk11[8]; - union { - unsigned long LONG; - struct { - unsigned long UNDER:16; - unsigned long :16; - } BIT; - } TFUCR; - union { - unsigned long LONG; - struct { - unsigned long OVER:16; - unsigned long :16; - } BIT; - } RFOCR; - union { - unsigned long LONG; - struct { - unsigned long TLB:1; - unsigned long :31; - } BIT; - } IOSR; - union { - unsigned long LONG; - struct { - unsigned long RFDO:3; - unsigned long :13; - unsigned long RFFO:3; - unsigned long :13; - } BIT; - } FCFTR; - unsigned char wk12[4]; - union { - unsigned long LONG; - struct { - unsigned long PADR:6; - unsigned long :10; - unsigned long PADS:2; - unsigned long :14; - } BIT; - } RPADIR; - union { - unsigned long LONG; - struct { - unsigned long TIS:1; - unsigned long :3; - unsigned long TIM:1; - unsigned long :27; - } BIT; - } TRIMD; - unsigned char wk13[72]; - void *RBWAR; - void *RDFAR; - unsigned char wk14[4]; - void *TBRAR; - void *TDFAR; -}; - -struct st_etherc { - union { - unsigned long LONG; - struct { - unsigned long PRM:1; - unsigned long DM:1; - unsigned long RTM:1; - unsigned long ILB:1; - unsigned long :1; - unsigned long TE:1; - unsigned long RE:1; - unsigned long :2; - unsigned long MPDE:1; - unsigned long :2; - unsigned long PRCEF:1; - unsigned long :3; - unsigned long TXF:1; - unsigned long RXF:1; - unsigned long PFR:1; - unsigned long ZPE:1; - unsigned long TPC:1; - unsigned long :11; - } BIT; - } ECMR; - unsigned char wk0[4]; - union { - unsigned long LONG; - struct { - unsigned long RFL:12; - unsigned long :20; - } BIT; - } RFLR; - unsigned char wk1[4]; - union { - unsigned long LONG; - struct { - unsigned long ICD:1; - unsigned long MPD:1; - unsigned long LCHNG:1; - unsigned long :1; - unsigned long PSRTO:1; - unsigned long BFR:1; - unsigned long :26; - } BIT; - } ECSR; - unsigned char wk2[4]; - union { - unsigned long LONG; - struct { - unsigned long ICDIP:1; - unsigned long MPDIP:1; - unsigned long LCHNGIP:1; - unsigned long :1; - unsigned long PSRTOIP:1; - unsigned long BFSIPR:1; - unsigned long :26; - } BIT; - } ECSIPR; - unsigned char wk3[4]; - union { - unsigned long LONG; - struct { - unsigned long MDC:1; - unsigned long MMD:1; - unsigned long MDO:1; - unsigned long MDI:1; - unsigned long :28; - } BIT; - } PIR; - unsigned char wk4[4]; - union { - unsigned long LONG; - struct { - unsigned long LMON:1; - unsigned long :31; - } BIT; - } PSR; - unsigned char wk5[20]; - union { - unsigned long LONG; - struct { - unsigned long RMD:20; - unsigned long :12; - } BIT; - } RDMLR; - unsigned char wk6[12]; - union { - unsigned long LONG; - struct { - unsigned long IPG:5; - unsigned long :27; - } BIT; - } IPGR; - union { - unsigned long LONG; - struct { - unsigned long AP:16; - unsigned long :16; - } BIT; - } APR; - union { - unsigned long LONG; - struct { - unsigned long MP:16; - unsigned long :16; - } BIT; - } MPR; - unsigned char wk7[4]; - union { - unsigned long LONG; - struct { - unsigned long RPAUSE:8; - unsigned long :24; - } BIT; - } RFCF; - union { - unsigned long LONG; - struct { - unsigned long TPAUSE:16; - unsigned long :16; - } BIT; - } TPAUSER; - union { - unsigned long LONG; - struct { - unsigned long TXP:8; - unsigned long :24; - } BIT; - } TPAUSECR; - union { - unsigned long LONG; - struct { - unsigned long BCF:16; - unsigned long :16; - } BIT; - } BCFRR; - unsigned char wk8[80]; - unsigned long MAHR; - unsigned char wk9[4]; - union { - unsigned long LONG; - struct { - unsigned long MA:16; - unsigned long :16; - } BIT; - } MALR; - unsigned char wk10[4]; - unsigned long TROCR; - unsigned long CDCR; - unsigned long LCCR; - unsigned long CNDCR; - unsigned char wk11[4]; - unsigned long CEFCR; - unsigned long FRECR; - unsigned long TSFRCR; - unsigned long TLFRCR; - unsigned long RFCR; - unsigned long MAFCR; -}; - -enum enum_ir { -IR_BSC_BUSERR=16, -IR_FCU_FIFERR=21,IR_FCU_FRDYI=23, -IR_ICU_SWINT=27, -IR_CMT0_CMI0, -IR_CMT1_CMI1, -IR_CMT2_CMI2, -IR_CMT3_CMI3, -IR_ETHER_EINT, -IR_USB0_D0FIFO0=36,IR_USB0_D1FIFO0,IR_USB0_USBI0, -IR_USB1_D0FIFO1=40,IR_USB1_D1FIFO1,IR_USB1_USBI1, -IR_RSPI0_SPEI0=44,IR_RSPI0_SPRI0,IR_RSPI0_SPTI0,IR_RSPI0_SPII0, -IR_RSPI1_SPEI1,IR_RSPI1_SPRI1,IR_RSPI1_SPTI1,IR_RSPI1_SPII1, -IR_CAN0_ERS0=56,IR_CAN0_RXF0,IR_CAN0_TXF0,IR_CAN0_RXM0,IR_CAN0_TXM0, -IR_RTC_PRD=62,IR_RTC_CUP, -IR_ICU_IRQ0,IR_ICU_IRQ1,IR_ICU_IRQ2,IR_ICU_IRQ3,IR_ICU_IRQ4,IR_ICU_IRQ5,IR_ICU_IRQ6,IR_ICU_IRQ7,IR_ICU_IRQ8,IR_ICU_IRQ9,IR_ICU_IRQ10,IR_ICU_IRQ11,IR_ICU_IRQ12,IR_ICU_IRQ13,IR_ICU_IRQ14,IR_ICU_IRQ15, -IR_USB_USBR0=90,IR_USB_USBR1, -IR_RTC_ALM, -IR_WDT_WOVI=96, -IR_AD0_ADI0=98, -IR_AD1_ADI1, -IR_S12AD_ADI=102, -IR_MTU0_TGIA0=114,IR_MTU0_TGIB0,IR_MTU0_TGIC0,IR_MTU0_TGID0,IR_MTU0_TCIV0,IR_MTU0_TGIE0,IR_MTU0_TGIF0, -IR_MTU1_TGIA1,IR_MTU1_TGIB1,IR_MTU1_TCIV1,IR_MTU1_TCIU1, -IR_MTU2_TGIA2,IR_MTU2_TGIB2,IR_MTU2_TCIV2,IR_MTU2_TCIU2, -IR_MTU3_TGIA3,IR_MTU3_TGIB3,IR_MTU3_TGIC3,IR_MTU3_TGID3,IR_MTU3_TCIV3, -IR_MTU4_TGIA4,IR_MTU4_TGIB4,IR_MTU4_TGIC4,IR_MTU4_TGID4,IR_MTU4_TCIV4, -IR_MTU5_TGIU5,IR_MTU5_TGIV5,IR_MTU5_TGIW5, -IR_MTU6_TGIA6,IR_MTU6_TGIB6,IR_MTU6_TGIC6,IR_MTU6_TGID6,IR_MTU6_TCIV6,IR_MTU6_TGIE6,IR_MTU6_TGIF6, -IR_MTU7_TGIA7,IR_MTU7_TGIB7,IR_MTU7_TCIV7,IR_MTU7_TCIU7, -IR_MTU8_TGIA8,IR_MTU8_TGIB8,IR_MTU8_TCIV8,IR_MTU8_TCIU8, -IR_MTU9_TGIA9,IR_MTU9_TGIB9,IR_MTU9_TGIC9,IR_MTU9_TGID9,IR_MTU9_TCIV9, -IR_MTU10_TGIA10,IR_MTU10_TGIB10,IR_MTU10_TGIC10,IR_MTU10_TGID10,IR_MTU10_TCIV10, -IR_MTU11_TGIU11,IR_MTU11_TGIV11,IR_MTU11_TGIW11, -IR_POE_OEI1,IR_POE_OEI2,IR_POE_OEI3,IR_POE_OEI4, -IR_TMR0_CMIA0,IR_TMR0_CMIB0,IR_TMR0_OVI0, -IR_TMR1_CMIA1,IR_TMR1_CMIB1,IR_TMR1_OVI1, -IR_TMR2_CMIA2,IR_TMR2_CMIB2,IR_TMR2_OVI2, -IR_TMR3_CMIA3,IR_TMR3_CMIB3,IR_TMR3_OVI3, -IR_DMACA_DMAC0I=198,IR_DMACA_DMAC1I,IR_DMACA_DMAC2I,IR_DMACA_DMAC3I, -IR_EXDMAC_EXDMAC0I,IR_EXDMAC_EXDMAC1I, -IR_SCI0_ERI0=214,IR_SCI0_RXI0,IR_SCI0_TXI0,IR_SCI0_TEI0, -IR_SCI1_ERI1,IR_SCI1_RXI1,IR_SCI1_TXI1,IR_SCI1_TEI1, -IR_SCI2_ERI2,IR_SCI2_RXI2,IR_SCI2_TXI2,IR_SCI2_TEI2, -IR_SCI3_ERI3,IR_SCI3_RXI3,IR_SCI3_TXI3,IR_SCI3_TEI3, -IR_SCI5_ERI5=234,IR_SCI5_RXI5,IR_SCI5_TXI5,IR_SCI5_TEI5, -IR_SCI6_ERI6,IR_SCI6_RXI6,IR_SCI6_TXI6,IR_SCI6_TEI6, -IR_RIIC0_ICEEI0=246,IR_RIIC0_ICRXI0,IR_RIIC0_ICTXI0,IR_RIIC0_ICTEI0, -IR_RIIC1_ICEEI1,IR_RIIC1_ICRXI1,IR_RIIC1_ICTXI1,IR_RIIC1_ICTEI1 -}; - -enum enum_dtce { -DTCE_BSC_BUSERR=16, -DTCE_FCU_FIFERR=21,DTCE_FCU_FRDYI=23, -DTCE_ICU_SWINT=27, -DTCE_CMT0_CMI0, -DTCE_CMT1_CMI1, -DTCE_CMT2_CMI2, -DTCE_CMT3_CMI3, -DTCE_ETHER_EINT, -DTCE_USB0_D0FIFO0=36,DTCE_USB0_D1FIFO0,DTCE_USB0_USBI0, -DTCE_USB1_D0FIFO1=40,DTCE_USB1_D1FIFO1,DTCE_USB1_USBI1, -DTCE_RSPI0_SPEI0=44,DTCE_RSPI0_SPRI0,DTCE_RSPI0_SPTI0,DTCE_RSPI0_SPII0, -DTCE_RSPI1_SPEI1,DTCE_RSPI1_SPRI1,DTCE_RSPI1_SPTI1,DTCE_RSPI1_SPII1, -DTCE_CAN0_ERS0=56,DTCE_CAN0_RXF0,DTCE_CAN0_TXF0,DTCE_CAN0_RXM0,DTCE_CAN0_TXM0, -DTCE_RTC_PRD=62,DTCE_RTC_CUP, -DTCE_ICU_IRQ0,DTCE_ICU_IRQ1,DTCE_ICU_IRQ2,DTCE_ICU_IRQ3,DTCE_ICU_IRQ4,DTCE_ICU_IRQ5,DTCE_ICU_IRQ6,DTCE_ICU_IRQ7,DTCE_ICU_IRQ8,DTCE_ICU_IRQ9,DTCE_ICU_IRQ10,DTCE_ICU_IRQ11,DTCE_ICU_IRQ12,DTCE_ICU_IRQ13,DTCE_ICU_IRQ14,DTCE_ICU_IRQ15, -DTCE_USB_USBR0=90,DTCE_USB_USBR1, -DTCE_RTC_ALM, -DTCE_WDT_WOVI=96, -DTCE_AD0_ADI0=98, -DTCE_AD1_ADI1, -DTCE_S12AD_ADI=102, -DTCE_MTU0_TGIA0=114,DTCE_MTU0_TGIB0,DTCE_MTU0_TGIC0,DTCE_MTU0_TGID0,DTCE_MTU0_TCIV0,DTCE_MTU0_TGIE0,DTCE_MTU0_TGIF0, -DTCE_MTU1_TGIA1,DTCE_MTU1_TGIB1,DTCE_MTU1_TCIV1,DTCE_MTU1_TCIU1, -DTCE_MTU2_TGIA2,DTCE_MTU2_TGIB2,DTCE_MTU2_TCIV2,DTCE_MTU2_TCIU2, -DTCE_MTU3_TGIA3,DTCE_MTU3_TGIB3,DTCE_MTU3_TGIC3,DTCE_MTU3_TGID3,DTCE_MTU3_TCIV3, -DTCE_MTU4_TGIA4,DTCE_MTU4_TGIB4,DTCE_MTU4_TGIC4,DTCE_MTU4_TGID4,DTCE_MTU4_TCIV4, -DTCE_MTU5_TGIU5,DTCE_MTU5_TGIV5,DTCE_MTU5_TGIW5, -DTCE_MTU6_TGIA6,DTCE_MTU6_TGIB6,DTCE_MTU6_TGIC6,DTCE_MTU6_TGID6,DTCE_MTU6_TCIV6,DTCE_MTU6_TGIE6,DTCE_MTU6_TGIF6, -DTCE_MTU7_TGIA7,DTCE_MTU7_TGIB7,DTCE_MTU7_TCIV7,DTCE_MTU7_TCIU7, -DTCE_MTU8_TGIA8,DTCE_MTU8_TGIB8,DTCE_MTU8_TCIV8,DTCE_MTU8_TCIU8, -DTCE_MTU9_TGIA9,DTCE_MTU9_TGIB9,DTCE_MTU9_TGIC9,DTCE_MTU9_TGID9,DTCE_MTU9_TCIV9, -DTCE_MTU10_TGIA10,DTCE_MTU10_TGIB10,DTCE_MTU10_TGIC10,DTCE_MTU10_TGID10,DTCE_MTU10_TCIV10, -DTCE_MTU11_TGIU11,DTCE_MTU11_TGIV11,DTCE_MTU11_TGIW11, -DTCE_POE_OEI1,DTCE_POE_OEI2,DTCE_POE_OEI3,DTCE_POE_OEI4, -DTCE_TMR0_CMIA0,DTCE_TMR0_CMIB0,DTCE_TMR0_OVI0, -DTCE_TMR1_CMIA1,DTCE_TMR1_CMIB1,DTCE_TMR1_OVI1, -DTCE_TMR2_CMIA2,DTCE_TMR2_CMIB2,DTCE_TMR2_OVI2, -DTCE_TMR3_CMIA3,DTCE_TMR3_CMIB3,DTCE_TMR3_OVI3, -DTCE_DMACA_DMAC0I=198,DTCE_DMACA_DMAC1I,DTCE_DMACA_DMAC2I,DTCE_DMACA_DMAC3I, -DTCE_EXDMAC_EXDMAC0I,DTCE_EXDMAC_EXDMAC1I, -DTCE_SCI0_ERI0=214,DTCE_SCI0_RXI0,DTCE_SCI0_TXI0,DTCE_SCI0_TEI0, -DTCE_SCI1_ERI1,DTCE_SCI1_RXI1,DTCE_SCI1_TXI1,DTCE_SCI1_TEI1, -DTCE_SCI2_ERI2,DTCE_SCI2_RXI2,DTCE_SCI2_TXI2,DTCE_SCI2_TEI2, -DTCE_SCI3_ERI3,DTCE_SCI3_RXI3,DTCE_SCI3_TXI3,DTCE_SCI3_TEI3, -DTCE_SCI5_ERI5=234,DTCE_SCI5_RXI5,DTCE_SCI5_TXI5,DTCE_SCI5_TEI5, -DTCE_SCI6_ERI6,DTCE_SCI6_RXI6,DTCE_SCI6_TXI6,DTCE_SCI6_TEI6, -DTCE_RIIC0_ICEEI0=246,DTCE_RIIC0_ICRXI0,DTCE_RIIC0_ICTXI0,DTCE_RIIC0_ICTEI0, -DTCE_RIIC1_ICEEI1,DTCE_RIIC1_ICRXI1,DTCE_RIIC1_ICTXI1,DTCE_RIIC1_ICTEI1 -}; - -enum enum_ier { -IER_BSC_BUSERR=0x02, -IER_FCU_FIFERR=0x02,IER_FCU_FRDYI=0x02, -IER_ICU_SWINT=0x03, -IER_CMT0_CMI0=0x03, -IER_CMT1_CMI1=0x03, -IER_CMT2_CMI2=0x03, -IER_CMT3_CMI3=0x03, -IER_ETHER_EINT=0x04, -IER_USB0_D0FIFO0=0x04,IER_USB0_D1FIFO0=0x04,IER_USB0_USBI0=0x04, -IER_USB1_D0FIFO1=0x05,IER_USB1_D1FIFO1=0x05,IER_USB1_USBI1=0x05, -IER_RSPI0_SPEI0=0x05,IER_RSPI0_SPRI0=0x05,IER_RSPI0_SPTI0=0x05,IER_RSPI0_SPII0=0x05, -IER_RSPI1_SPEI1=0x06,IER_RSPI1_SPRI1=0x06,IER_RSPI1_SPTI1=0x06,IER_RSPI1_SPII1=0x06, -IER_CAN0_ERS0=0x07,IER_CAN0_RXF0=0x07,IER_CAN0_TXF0=0x07,IER_CAN0_RXM0=0x07,IER_CAN0_TXM0=0x07, -IER_RTC_PRD=0x07,IER_RTC_CUP=0x07, -IER_ICU_IRQ0=0x08,IER_ICU_IRQ1=0x08,IER_ICU_IRQ2=0x08,IER_ICU_IRQ3=0x08,IER_ICU_IRQ4=0x08,IER_ICU_IRQ5=0x08,IER_ICU_IRQ6=0x08,IER_ICU_IRQ7=0x08,IER_ICU_IRQ8=0x09,IER_ICU_IRQ9=0x09,IER_ICU_IRQ10=0x09,IER_ICU_IRQ11=0x09,IER_ICU_IRQ12=0x09,IER_ICU_IRQ13=0x09,IER_ICU_IRQ14=0x09,IER_ICU_IRQ15=0x09, -IER_USB_USBR0=0x0B,IER_USB_USBR1=0x0B, -IER_RTC_ALM=0x0B, -IER_WDT_WOVI=0x0C, -IER_AD0_ADI0=0x0C, -IER_AD1_ADI1=0x0C, -IER_S12AD_ADI=0x0C, -IER_MTU0_TGIA0=0x0E,IER_MTU0_TGIB0=0x0E,IER_MTU0_TGIC0=0x0E,IER_MTU0_TGID0=0x0E,IER_MTU0_TCIV0=0x0E,IER_MTU0_TGIE0=0x0E,IER_MTU0_TGIF0=0x0F, -IER_MTU1_TGIA1=0x0F,IER_MTU1_TGIB1=0x0F,IER_MTU1_TCIV1=0x0F,IER_MTU1_TCIU1=0x0F, -IER_MTU2_TGIA2=0x0F,IER_MTU2_TGIB2=0x0F,IER_MTU2_TCIV2=0x0F,IER_MTU2_TCIU2=0x10, -IER_MTU3_TGIA3=0x10,IER_MTU3_TGIB3=0x10,IER_MTU3_TGIC3=0x10,IER_MTU3_TGID3=0x10,IER_MTU3_TCIV3=0x10, -IER_MTU4_TGIA4=0x10,IER_MTU4_TGIB4=0x10,IER_MTU4_TGIC4=0x11,IER_MTU4_TGID4=0x11,IER_MTU4_TCIV4=0x11, -IER_MTU5_TGIU5=0x11,IER_MTU5_TGIV5=0x11,IER_MTU5_TGIW5=0x10, -IER_MTU6_TGIA6=0x11,IER_MTU6_TGIB6=0x11,IER_MTU6_TGIC6=0x12,IER_MTU6_TGID6=0x12,IER_MTU6_TCIV6=0x12,IER_MTU6_TGIE6=0x12,IER_MTU6_TGIF6=0x12, -IER_MTU7_TGIA7=0x12,IER_MTU7_TGIB7=0x12,IER_MTU7_TCIV7=0x12,IER_MTU7_TCIU7=0x13, -IER_MTU8_TGIA8=0x13,IER_MTU8_TGIB8=0x13,IER_MTU8_TCIV8=0x13,IER_MTU8_TCIU8=0x13, -IER_MTU9_TGIA9=0x13,IER_MTU9_TGIB9=0x13,IER_MTU9_TGIC9=0x13,IER_MTU9_TGID9=0x14,IER_MTU9_TCIV9=0x14, -IER_MTU10_TGIA10=0x14,IER_MTU10_TGIB10=0x14,IER_MTU10_TGIC10=0x14,IER_MTU10_TGID10=0x14,IER_MTU10_TCIV10=0x14, -IER_MTU11_TGIU11=0x14,IER_MTU11_TGIV11=0x15,IER_MTU11_TGIW11=0x15, -IER_POE_OEI1=0x15,IER_POE_OEI2=0x15,IER_POE_OEI3=0x15,IER_POE_OEI4=0x15, -IER_TMR0_CMIA0=0x15,IER_TMR0_CMIB0=0x15,IER_TMR0_OVI0=0x16, -IER_TMR1_CMIA1=0x16,IER_TMR1_CMIB1=0x16,IER_TMR1_OVI1=0x16, -IER_TMR2_CMIA2=0x16,IER_TMR2_CMIB2=0x16,IER_TMR2_OVI2=0x16, -IER_TMR3_CMIA3=0x16,IER_TMR3_CMIB3=0x17,IER_TMR3_OVI3=0x17, -IER_DMACA_DMAC0I=0x18,IER_DMACA_DMAC1I=0x18,IER_DMACA_DMAC2I=0x19,IER_DMACA_DMAC3I=0x19, -IER_EXDMAC_EXDMAC0I=0x19,IER_EXDMAC_EXDMAC1I=0x19, -IER_SCI0_ERI0=0x1A,IER_SCI0_RXI0=0x1A,IER_SCI0_TXI0=0x1B,IER_SCI0_TEI0=0x1B, -IER_SCI1_ERI1=0x1B,IER_SCI1_RXI1=0x1B,IER_SCI1_TXI1=0x1B,IER_SCI1_TEI1=0x1B, -IER_SCI2_ERI2=0x1B,IER_SCI2_RXI2=0x1B,IER_SCI2_TXI2=0x1C,IER_SCI2_TEI2=0x1C, -IER_SCI3_ERI3=0x1C,IER_SCI3_RXI3=0x1C,IER_SCI3_TXI3=0x1C,IER_SCI3_TEI3=0x1C, -IER_SCI5_ERI5=0x1D,IER_SCI5_RXI5=0x1D,IER_SCI5_TXI5=0x1D,IER_SCI5_TEI5=0x1D, -IER_SCI6_ERI6=0x1D,IER_SCI6_RXI6=0x1D,IER_SCI6_TXI6=0x1E,IER_SCI6_TEI6=0x1E, -IER_RIIC0_ICEEI0=0x1E,IER_RIIC0_ICRXI0=0x1E,IER_RIIC0_ICTXI0=0x1F,IER_RIIC0_ICTEI0=0x1F, -IER_RIIC1_ICEEI1=0x1F,IER_RIIC1_ICRXI1=0x1F,IER_RIIC1_ICTXI1=0x1F,IER_RIIC1_ICTEI1=0x1F -}; - -enum enum_ipr { -IPR_BSC_BUSERR=0x00, -IPR_FCU_FIFERR=0x01,IPR_FCU_FRDYI=0x02, -IPR_ICU_SWINT=0x03, -IPR_CMT0_CMI0=0x04, -IPR_CMT1_CMI1=0x05, -IPR_CMT2_CMI2=0x06, -IPR_CMT3_CMI3=0x07, -IPR_ETHER_EINT=0x08, -IPR_USB0_D0FIFO0=0x0C,IPR_USB0_D1FIFO0=0x0D,IPR_USB0_USBI0=0x0E, -IPR_USB1_D0FIFO1=0x10,IPR_USB1_D1FIFO1=0x11,IPR_USB1_USBI1=0x12, -IPR_RSPI0_SPEI0=0x14,IPR_RSPI0_SPRI0=0x14,IPR_RSPI0_SPTI0=0x14,IPR_RSPI0_SPII0=0x14, -IPR_RSPI1_SPEI1=0x15,IPR_RSPI1_SPRI1=0x15,IPR_RSPI1_SPTI1=0x15,IPR_RSPI1_SPII1=0x15, -IPR_CAN0_ERS0=0x18,IPR_CAN0_RXF0=0x18,IPR_CAN0_TXF0=0x18,IPR_CAN0_RXM0=0x18,IPR_CAN0_TXM0=0x18, -IPR_RTC_PRD=0x1E,IPR_RTC_CUP=0x1F, -IPR_ICU_IRQ0=0x20,IPR_ICU_IRQ1=0x21,IPR_ICU_IRQ2=0x22,IPR_ICU_IRQ3=0x23,IPR_ICU_IRQ4=0x24,IPR_ICU_IRQ5=0x25,IPR_ICU_IRQ6=0x26,IPR_ICU_IRQ7=0x27,IPR_ICU_IRQ8=0x28,IPR_ICU_IRQ9=0x29,IPR_ICU_IRQ10=0x2A,IPR_ICU_IRQ11=0x2B,IPR_ICU_IRQ12=0x2C,IPR_ICU_IRQ13=0x2D,IPR_ICU_IRQ14=0x2E,IPR_ICU_IRQ15=0x2F, -IPR_USB_USBR0=0x3A,IPR_USB_USBR1=0x3B, -IPR_RTC_ALM=0x3C, -IPR_WDT_WOVI=0x40, -IPR_AD0_ADI0=0x44, -IPR_AD1_ADI1=0x45, -IPR_S12AD_ADI=0x48, -IPR_MTU0_TGIA0=0x51,IPR_MTU0_TGIB0=0x51,IPR_MTU0_TGIC0=0x51,IPR_MTU0_TGID0=0x51,IPR_MTU0_TCIV0=0x52,IPR_MTU0_TGIE0=0x52,IPR_MTU0_TGIF0=0x52, -IPR_MTU1_TGIA1=0x53,IPR_MTU1_TGIB1=0x53,IPR_MTU1_TCIV1=0x54,IPR_MTU1_TCIU1=0x54, -IPR_MTU2_TGIA2=0x55,IPR_MTU2_TGIB2=0x55,IPR_MTU2_TCIV2=0x56,IPR_MTU2_TCIU2=0x56, -IPR_MTU3_TGIA3=0x57,IPR_MTU3_TGIB3=0x57,IPR_MTU3_TGIC3=0x57,IPR_MTU3_TGID3=0x57,IPR_MTU3_TCIV3=0x58, -IPR_MTU4_TGIA4=0x59,IPR_MTU4_TGIB4=0x59,IPR_MTU4_TGIC4=0x59,IPR_MTU4_TGID4=0x59,IPR_MTU4_TCIV4=0x5A, -IPR_MTU5_TGIU5=0x5B,IPR_MTU5_TGIV5=0x5B,IPR_MTU5_TGIW5=0x5B, -IPR_MTU6_TGIA6=0x5C,IPR_MTU6_TGIB6=0x5C,IPR_MTU6_TGIC6=0x5C,IPR_MTU6_TGID6=0x5C,IPR_MTU6_TCIV6=0x5D,IPR_MTU6_TGIE6=0x5D,IPR_MTU6_TGIF6=0x5D, -IPR_MTU7_TGIA7=0x5E,IPR_MTU7_TGIB7=0x5E,IPR_MTU7_TCIV7=0x5F,IPR_MTU7_TCIU7=0x5F, -IPR_MTU8_TGIA8=0x60,IPR_MTU8_TGIB8=0x60,IPR_MTU8_TCIV8=0x61,IPR_MTU8_TCIU8=0x61, -IPR_MTU9_TGIA9=0x62,IPR_MTU9_TGIB9=0x62,IPR_MTU9_TGIC9=0x62,IPR_MTU9_TGID9=0x62,IPR_MTU9_TCIV9=0x63, -IPR_MTU10_TGIA10=0x64,IPR_MTU10_TGIB10=0x64,IPR_MTU10_TGIC10=0x64,IPR_MTU10_TGID10=0x64,IPR_MTU10_TCIV10=0x65, -IPR_MTU11_TGIU11=0x66,IPR_MTU11_TGIV11=0x66,IPR_MTU11_TGIW11=0x66, -IPR_POE_OEI1=0x67,IPR_POE_OEI2=0x67,IPR_POE_OEI3=0x67,IPR_POE_OEI4=0x67, -IPR_TMR0_CMIA0=0x68,IPR_TMR0_CMIB0=0x68,IPR_TMR0_OVI0=0x68, -IPR_TMR1_CMIA1=0x69,IPR_TMR1_CMIB1=0x69,IPR_TMR1_OVI1=0x69, -IPR_TMR2_CMIA2=0x6A,IPR_TMR2_CMIB2=0x6A,IPR_TMR2_OVI2=0x6A, -IPR_TMR3_CMIA3=0x6B,IPR_TMR3_CMIB3=0x6B,IPR_TMR3_OVI3=0x6B, -IPR_DMACA_DMAC0I=0x70,IPR_DMACA_DMAC1I=0x71,IPR_DMACA_DMAC2I=0x72,IPR_DMACA_DMAC3I=0x73, -IPR_EXDMAC_EXDMAC0I=0x74,IPR_EXDMAC_EXDMAC1I=0x75, -IPR_SCI0_ERI0=0x80,IPR_SCI0_RXI0=0x80,IPR_SCI0_TXI0=0x80,IPR_SCI0_TEI0=0x80, -IPR_SCI1_ERI1=0x81,IPR_SCI1_RXI1=0x81,IPR_SCI1_TXI1=0x81,IPR_SCI1_TEI1=0x81, -IPR_SCI2_ERI2=0x82,IPR_SCI2_RXI2=0x82,IPR_SCI2_TXI2=0x82,IPR_SCI2_TEI2=0x82, -IPR_SCI3_ERI3=0x83,IPR_SCI3_RXI3=0x83,IPR_SCI3_TXI3=0x83,IPR_SCI3_TEI3=0x83, -IPR_SCI5_ERI5=0x85,IPR_SCI5_RXI5=0x85,IPR_SCI5_TXI5=0x85,IPR_SCI5_TEI5=0x85, -IPR_SCI6_ERI6=0x86,IPR_SCI6_RXI6=0x86,IPR_SCI6_TXI6=0x86,IPR_SCI6_TEI6=0x86, -IPR_RIIC0_ICEEI0=0x88,IPR_RIIC0_ICRXI0=0x89,IPR_RIIC0_ICTXI0=0x8A,IPR_RIIC0_ICTEI0=0x8B, -IPR_RIIC1_ICEEI1=0x8C,IPR_RIIC1_ICRXI1=0x8D,IPR_RIIC1_ICTXI1=0x8E,IPR_RIIC1_ICTEI1=0x8F, -IPR_BSC_=0x00, -IPR_CMT0_=0x04, -IPR_CMT1_=0x05, -IPR_CMT2_=0x06, -IPR_CMT3_=0x07, -IPR_ETHER_=0x08, -IPR_RSPI0_=0x14, -IPR_RSPI1_=0x15, -IPR_CAN0_=0x18, -IPR_WDT_=0x40, -IPR_AD0_=0x44, -IPR_AD1_=0x45, -IPR_S12AD_=0x48, -IPR_MTU1_TGI=0x53, -IPR_MTU1_TCI=0x54, -IPR_MTU2_TGI=0x55, -IPR_MTU2_TCI=0x56, -IPR_MTU3_TGI=0x57, -IPR_MTU4_TGI=0x59, -IPR_MTU5_=0x5B, -IPR_MTU5_TGI=0x5B, -IPR_MTU7_TGI=0x5E, -IPR_MTU7_TCI=0x5F, -IPR_MTU8_TGI=0x60, -IPR_MTU8_TCI=0x61, -IPR_MTU9_TGI=0x62, -IPR_MTU10_TGI=0x64, -IPR_MTU11_=0x66, -IPR_MTU11_TGI=0x66, -IPR_POE_=0x67, -IPR_POE_OEI=0x67, -IPR_TMR0_=0x68, -IPR_TMR1_=0x69, -IPR_TMR2_=0x6A, -IPR_TMR3_=0x6B, -IPR_SCI0_=0x80, -IPR_SCI1_=0x81, -IPR_SCI2_=0x82, -IPR_SCI3_=0x83, -IPR_SCI5_=0x85, -IPR_SCI6_=0x86 -}; - -#define IEN_BSC_BUSERR IEN0 -#define IEN_FCU_FIFERR IEN5 -#define IEN_FCU_FRDYI IEN7 -#define IEN_ICU_SWINT IEN3 -#define IEN_CMT0_CMI0 IEN4 -#define IEN_CMT1_CMI1 IEN5 -#define IEN_CMT2_CMI2 IEN6 -#define IEN_CMT3_CMI3 IEN7 -#define IEN_ETHER_EINT IEN0 -#define IEN_USB0_D0FIFO0 IEN4 -#define IEN_USB0_D1FIFO0 IEN5 -#define IEN_USB0_USBI0 IEN6 -#define IEN_USB1_D0FIFO1 IEN0 -#define IEN_USB1_D1FIFO1 IEN1 -#define IEN_USB1_USBI1 IEN2 -#define IEN_RSPI0_SPEI0 IEN4 -#define IEN_RSPI0_SPRI0 IEN5 -#define IEN_RSPI0_SPTI0 IEN6 -#define IEN_RSPI0_SPII0 IEN7 -#define IEN_RSPI1_SPEI1 IEN0 -#define IEN_RSPI1_SPRI1 IEN1 -#define IEN_RSPI1_SPTI1 IEN2 -#define IEN_RSPI1_SPII1 IEN3 -#define IEN_CAN0_ERS0 IEN0 -#define IEN_CAN0_RXF0 IEN1 -#define IEN_CAN0_TXF0 IEN2 -#define IEN_CAN0_RXM0 IEN3 -#define IEN_CAN0_TXM0 IEN4 -#define IEN_RTC_PRD IEN6 -#define IEN_RTC_CUP IEN7 -#define IEN_ICU_IRQ0 IEN0 -#define IEN_ICU_IRQ1 IEN1 -#define IEN_ICU_IRQ2 IEN2 -#define IEN_ICU_IRQ3 IEN3 -#define IEN_ICU_IRQ4 IEN4 -#define IEN_ICU_IRQ5 IEN5 -#define IEN_ICU_IRQ6 IEN6 -#define IEN_ICU_IRQ7 IEN7 -#define IEN_ICU_IRQ8 IEN0 -#define IEN_ICU_IRQ9 IEN1 -#define IEN_ICU_IRQ10 IEN2 -#define IEN_ICU_IRQ11 IEN3 -#define IEN_ICU_IRQ12 IEN4 -#define IEN_ICU_IRQ13 IEN5 -#define IEN_ICU_IRQ14 IEN6 -#define IEN_ICU_IRQ15 IEN7 -#define IEN_USB_USBR0 IEN2 -#define IEN_USB_USBR1 IEN3 -#define IEN_RTC_ALM IEN4 -#define IEN_WDT_WOVI IEN0 -#define IEN_AD0_ADI0 IEN2 -#define IEN_AD1_ADI1 IEN3 -#define IEN_S12AD_ADI IEN6 -#define IEN_MTU0_TGIA0 IEN2 -#define IEN_MTU0_TGIB0 IEN3 -#define IEN_MTU0_TGIC0 IEN4 -#define IEN_MTU0_TGID0 IEN5 -#define IEN_MTU0_TCIV0 IEN6 -#define IEN_MTU0_TGIE0 IEN7 -#define IEN_MTU0_TGIF0 IEN0 -#define IEN_MTU1_TGIA1 IEN1 -#define IEN_MTU1_TGIB1 IEN2 -#define IEN_MTU1_TCIV1 IEN3 -#define IEN_MTU1_TCIU1 IEN4 -#define IEN_MTU2_TGIA2 IEN5 -#define IEN_MTU2_TGIB2 IEN6 -#define IEN_MTU2_TCIV2 IEN7 -#define IEN_MTU2_TCIU2 IEN0 -#define IEN_MTU3_TGIA3 IEN1 -#define IEN_MTU3_TGIB3 IEN2 -#define IEN_MTU3_TGIC3 IEN3 -#define IEN_MTU3_TGID3 IEN4 -#define IEN_MTU3_TCIV3 IEN5 -#define IEN_MTU4_TGIA4 IEN6 -#define IEN_MTU4_TGIB4 IEN7 -#define IEN_MTU4_TGIC4 IEN0 -#define IEN_MTU4_TGID4 IEN1 -#define IEN_MTU4_TCIV4 IEN2 -#define IEN_MTU5_TGIU5 IEN3 -#define IEN_MTU5_TGIV5 IEN4 -#define IEN_MTU5_TGIW5 IEN7 -#define IEN_MTU6_TGIA6 IEN6 -#define IEN_MTU6_TGIB6 IEN7 -#define IEN_MTU6_TGIC6 IEN0 -#define IEN_MTU6_TGID6 IEN1 -#define IEN_MTU6_TCIV6 IEN2 -#define IEN_MTU6_TGIE6 IEN3 -#define IEN_MTU6_TGIF6 IEN4 -#define IEN_MTU7_TGIA7 IEN5 -#define IEN_MTU7_TGIB7 IEN6 -#define IEN_MTU7_TCIV7 IEN7 -#define IEN_MTU7_TCIU7 IEN0 -#define IEN_MTU8_TGIA8 IEN1 -#define IEN_MTU8_TGIB8 IEN2 -#define IEN_MTU8_TCIV8 IEN3 -#define IEN_MTU8_TCIU8 IEN4 -#define IEN_MTU9_TGIA9 IEN5 -#define IEN_MTU9_TGIB9 IEN6 -#define IEN_MTU9_TGIC9 IEN7 -#define IEN_MTU9_TGID9 IEN0 -#define IEN_MTU9_TCIV9 IEN1 -#define IEN_MTU10_TGIA10 IEN2 -#define IEN_MTU10_TGIB10 IEN3 -#define IEN_MTU10_TGIC10 IEN4 -#define IEN_MTU10_TGID10 IEN5 -#define IEN_MTU10_TCIV10 IEN6 -#define IEN_MTU11_TGIU11 IEN7 -#define IEN_MTU11_TGIV11 IEN0 -#define IEN_MTU11_TGIW11 IEN1 -#define IEN_POE_OEI1 IEN2 -#define IEN_POE_OEI2 IEN3 -#define IEN_POE_OEI3 IEN4 -#define IEN_POE_OEI4 IEN5 -#define IEN_TMR0_CMIA0 IEN6 -#define IEN_TMR0_CMIB0 IEN7 -#define IEN_TMR0_OVI0 IEN0 -#define IEN_TMR1_CMIA1 IEN1 -#define IEN_TMR1_CMIB1 IEN2 -#define IEN_TMR1_OVI1 IEN3 -#define IEN_TMR2_CMIA2 IEN4 -#define IEN_TMR2_CMIB2 IEN5 -#define IEN_TMR2_OVI2 IEN6 -#define IEN_TMR3_CMIA3 IEN7 -#define IEN_TMR3_CMIB3 IEN0 -#define IEN_TMR3_OVI3 IEN1 -#define IEN_DMACA_DMAC0I IEN6 -#define IEN_DMACA_DMAC1I IEN7 -#define IEN_DMACA_DMAC2I IEN0 -#define IEN_DMACA_DMAC3I IEN1 -#define IEN_EXDMAC_EXDMAC0I IEN2 -#define IEN_EXDMAC_EXDMAC1I IEN3 -#define IEN_SCI0_ERI0 IEN6 -#define IEN_SCI0_RXI0 IEN7 -#define IEN_SCI0_TXI0 IEN0 -#define IEN_SCI0_TEI0 IEN1 -#define IEN_SCI1_ERI1 IEN2 -#define IEN_SCI1_RXI1 IEN3 -#define IEN_SCI1_TXI1 IEN4 -#define IEN_SCI1_TEI1 IEN5 -#define IEN_SCI2_ERI2 IEN6 -#define IEN_SCI2_RXI2 IEN7 -#define IEN_SCI2_TXI2 IEN0 -#define IEN_SCI2_TEI2 IEN1 -#define IEN_SCI3_ERI3 IEN2 -#define IEN_SCI3_RXI3 IEN3 -#define IEN_SCI3_TXI3 IEN4 -#define IEN_SCI3_TEI3 IEN5 -#define IEN_SCI5_ERI5 IEN2 -#define IEN_SCI5_RXI5 IEN3 -#define IEN_SCI5_TXI5 IEN4 -#define IEN_SCI5_TEI5 IEN5 -#define IEN_SCI6_ERI6 IEN6 -#define IEN_SCI6_RXI6 IEN7 -#define IEN_SCI6_TXI6 IEN0 -#define IEN_SCI6_TEI6 IEN1 -#define IEN_RIIC0_ICEEI0 IEN6 -#define IEN_RIIC0_ICRXI0 IEN7 -#define IEN_RIIC0_ICTXI0 IEN0 -#define IEN_RIIC0_ICTEI0 IEN1 -#define IEN_RIIC1_ICEEI1 IEN2 -#define IEN_RIIC1_ICRXI1 IEN3 -#define IEN_RIIC1_ICTXI1 IEN4 -#define IEN_RIIC1_ICTEI1 IEN5 - -#define VECT_BSC_BUSERR 16 -#define VECT_FCU_FIFERR 21 -#define VECT_FCU_FRDYI 23 -#define VECT_ICU_SWINT 27 -#define VECT_CMT0_CMI0 28 -#define VECT_CMT1_CMI1 29 -#define VECT_CMT2_CMI2 30 -#define VECT_CMT3_CMI3 31 -#define VECT_ETHER_EINT 32 -#define VECT_USB0_D0FIFO0 36 -#define VECT_USB0_D1FIFO0 37 -#define VECT_USB0_USBI0 38 -#define VECT_USB1_D0FIFO1 40 -#define VECT_USB1_D1FIFO1 41 -#define VECT_USB1_USBI1 42 -#define VECT_RSPI0_SPEI0 44 -#define VECT_RSPI0_SPRI0 45 -#define VECT_RSPI0_SPTI0 46 -#define VECT_RSPI0_SPII0 47 -#define VECT_RSPI1_SPEI1 48 -#define VECT_RSPI1_SPRI1 49 -#define VECT_RSPI1_SPTI1 50 -#define VECT_RSPI1_SPII1 51 -#define VECT_CAN0_ERS0 56 -#define VECT_CAN0_RXF0 57 -#define VECT_CAN0_TXF0 58 -#define VECT_CAN0_RXM0 59 -#define VECT_CAN0_TXM0 60 -#define VECT_RTC_PRD 62 -#define VECT_RTC_CUP 63 -#define VECT_ICU_IRQ0 64 -#define VECT_ICU_IRQ1 65 -#define VECT_ICU_IRQ2 66 -#define VECT_ICU_IRQ3 67 -#define VECT_ICU_IRQ4 68 -#define VECT_ICU_IRQ5 69 -#define VECT_ICU_IRQ6 70 -#define VECT_ICU_IRQ7 71 -#define VECT_ICU_IRQ8 72 -#define VECT_ICU_IRQ9 73 -#define VECT_ICU_IRQ10 74 -#define VECT_ICU_IRQ11 75 -#define VECT_ICU_IRQ12 76 -#define VECT_ICU_IRQ13 77 -#define VECT_ICU_IRQ14 78 -#define VECT_ICU_IRQ15 79 -#define VECT_USB_USBR0 90 -#define VECT_USB_USBR1 91 -#define VECT_RTC_ALM 92 -#define VECT_WDT_WOVI 96 -#define VECT_AD0_ADI0 98 -#define VECT_AD1_ADI1 99 -#define VECT_S12AD_ADI 102 -#define VECT_MTU0_TGIA0 114 -#define VECT_MTU0_TGIB0 115 -#define VECT_MTU0_TGIC0 116 -#define VECT_MTU0_TGID0 117 -#define VECT_MTU0_TCIV0 118 -#define VECT_MTU0_TGIE0 119 -#define VECT_MTU0_TGIF0 120 -#define VECT_MTU1_TGIA1 121 -#define VECT_MTU1_TGIB1 122 -#define VECT_MTU1_TCIV1 123 -#define VECT_MTU1_TCIU1 124 -#define VECT_MTU2_TGIA2 125 -#define VECT_MTU2_TGIB2 126 -#define VECT_MTU2_TCIV2 127 -#define VECT_MTU2_TCIU2 128 -#define VECT_MTU3_TGIA3 129 -#define VECT_MTU3_TGIB3 130 -#define VECT_MTU3_TGIC3 131 -#define VECT_MTU3_TGID3 132 -#define VECT_MTU3_TCIV3 133 -#define VECT_MTU4_TGIA4 134 -#define VECT_MTU4_TGIB4 135 -#define VECT_MTU4_TGIC4 136 -#define VECT_MTU4_TGID4 137 -#define VECT_MTU4_TCIV4 138 -#define VECT_MTU5_TGIU5 139 -#define VECT_MTU5_TGIV5 140 -#define VECT_MTU5_TGIW5 141 -#define VECT_MTU6_TGIA6 142 -#define VECT_MTU6_TGIB6 143 -#define VECT_MTU6_TGIC6 144 -#define VECT_MTU6_TGID6 145 -#define VECT_MTU6_TCIV6 146 -#define VECT_MTU6_TGIE6 147 -#define VECT_MTU6_TGIF6 148 -#define VECT_MTU7_TGIA7 149 -#define VECT_MTU7_TGIB7 150 -#define VECT_MTU7_TCIV7 151 -#define VECT_MTU7_TCIU7 152 -#define VECT_MTU8_TGIA8 153 -#define VECT_MTU8_TGIB8 154 -#define VECT_MTU8_TCIV8 155 -#define VECT_MTU8_TCIU8 156 -#define VECT_MTU9_TGIA9 157 -#define VECT_MTU9_TGIB9 158 -#define VECT_MTU9_TGIC9 159 -#define VECT_MTU9_TGID9 160 -#define VECT_MTU9_TCIV9 161 -#define VECT_MTU10_TGIA10 162 -#define VECT_MTU10_TGIB10 163 -#define VECT_MTU10_TGIC10 164 -#define VECT_MTU10_TGID10 165 -#define VECT_MTU10_TCIV10 166 -#define VECT_MTU11_TGIU11 167 -#define VECT_MTU11_TGIV11 168 -#define VECT_MTU11_TGIW11 169 -#define VECT_POE_OEI1 170 -#define VECT_POE_OEI2 171 -#define VECT_POE_OEI3 172 -#define VECT_POE_OEI4 173 -#define VECT_TMR0_CMIA0 174 -#define VECT_TMR0_CMIB0 175 -#define VECT_TMR0_OVI0 176 -#define VECT_TMR1_CMIA1 177 -#define VECT_TMR1_CMIB1 178 -#define VECT_TMR1_OVI1 179 -#define VECT_TMR2_CMIA2 180 -#define VECT_TMR2_CMIB2 181 -#define VECT_TMR2_OVI2 182 -#define VECT_TMR3_CMIA3 183 -#define VECT_TMR3_CMIB3 184 -#define VECT_TMR3_OVI3 185 -#define VECT_DMACA_DMAC0I 198 -#define VECT_DMACA_DMAC1I 199 -#define VECT_DMACA_DMAC2I 200 -#define VECT_DMACA_DMAC3I 201 -#define VECT_EXDMAC_EXDMAC0I 202 -#define VECT_EXDMAC_EXDMAC1I 203 -#define VECT_SCI0_ERI0 214 -#define VECT_SCI0_RXI0 215 -#define VECT_SCI0_TXI0 216 -#define VECT_SCI0_TEI0 217 -#define VECT_SCI1_ERI1 218 -#define VECT_SCI1_RXI1 219 -#define VECT_SCI1_TXI1 220 -#define VECT_SCI1_TEI1 221 -#define VECT_SCI2_ERI2 222 -#define VECT_SCI2_RXI2 223 -#define VECT_SCI2_TXI2 224 -#define VECT_SCI2_TEI2 225 -#define VECT_SCI3_ERI3 226 -#define VECT_SCI3_RXI3 227 -#define VECT_SCI3_TXI3 228 -#define VECT_SCI3_TEI3 229 -#define VECT_SCI5_ERI5 234 -#define VECT_SCI5_RXI5 235 -#define VECT_SCI5_TXI5 236 -#define VECT_SCI5_TEI5 237 -#define VECT_SCI6_ERI6 238 -#define VECT_SCI6_RXI6 239 -#define VECT_SCI6_TXI6 240 -#define VECT_SCI6_TEI6 241 -#define VECT_RIIC0_ICEEI0 246 -#define VECT_RIIC0_ICRXI0 247 -#define VECT_RIIC0_ICTXI0 248 -#define VECT_RIIC0_ICTEI0 249 -#define VECT_RIIC1_ICEEI1 250 -#define VECT_RIIC1_ICRXI1 251 -#define VECT_RIIC1_ICTXI1 252 -#define VECT_RIIC1_ICTEI1 253 - -#define MSTP_EXDMAC SYSTEM.MSTPCRA.BIT.MSTPA29 -#define MSTP_DMACA SYSTEM.MSTPCRA.BIT.MSTPA28 -#define MSTP_DTC SYSTEM.MSTPCRA.BIT.MSTPA28 -#define MSTP_AD0 SYSTEM.MSTPCRA.BIT.MSTPA23 -#define MSTP_AD1 SYSTEM.MSTPCRA.BIT.MSTPA22 -#define MSTP_DA SYSTEM.MSTPCRA.BIT.MSTPA19 -#define MSTP_S12AD SYSTEM.MSTPCRA.BIT.MSTPA17 -#define MSTP_CMT0 SYSTEM.MSTPCRA.BIT.MSTPA15 -#define MSTP_CMT1 SYSTEM.MSTPCRA.BIT.MSTPA15 -#define MSTP_CMT2 SYSTEM.MSTPCRA.BIT.MSTPA14 -#define MSTP_CMT3 SYSTEM.MSTPCRA.BIT.MSTPA14 -#define MSTP_PPG0 SYSTEM.MSTPCRA.BIT.MSTPA11 -#define MSTP_PPG1 SYSTEM.MSTPCRA.BIT.MSTPA10 -#define MSTP_MTUA SYSTEM.MSTPCRA.BIT.MSTPA9 -#define MSTP_MTU0 SYSTEM.MSTPCRA.BIT.MSTPA9 -#define MSTP_MTU1 SYSTEM.MSTPCRA.BIT.MSTPA9 -#define MSTP_MTU2 SYSTEM.MSTPCRA.BIT.MSTPA9 -#define MSTP_MTU3 SYSTEM.MSTPCRA.BIT.MSTPA9 -#define MSTP_MTU4 SYSTEM.MSTPCRA.BIT.MSTPA9 -#define MSTP_MTU5 SYSTEM.MSTPCRA.BIT.MSTPA9 -#define MSTP_MTUB SYSTEM.MSTPCRA.BIT.MSTPA8 -#define MSTP_MTU6 SYSTEM.MSTPCRA.BIT.MSTPA8 -#define MSTP_MTU7 SYSTEM.MSTPCRA.BIT.MSTPA8 -#define MSTP_MTU8 SYSTEM.MSTPCRA.BIT.MSTPA8 -#define MSTP_MTU9 SYSTEM.MSTPCRA.BIT.MSTPA8 -#define MSTP_MTU10 SYSTEM.MSTPCRA.BIT.MSTPA8 -#define MSTP_MTU11 SYSTEM.MSTPCRA.BIT.MSTPA8 -#define MSTP_TMR0 SYSTEM.MSTPCRA.BIT.MSTPA5 -#define MSTP_TMR1 SYSTEM.MSTPCRA.BIT.MSTPA5 -#define MSTP_TMR01 SYSTEM.MSTPCRA.BIT.MSTPA5 -#define MSTP_TMR2 SYSTEM.MSTPCRA.BIT.MSTPA4 -#define MSTP_TMR3 SYSTEM.MSTPCRA.BIT.MSTPA4 -#define MSTP_TMR23 SYSTEM.MSTPCRA.BIT.MSTPA4 -#define MSTP_SCI0 SYSTEM.MSTPCRB.BIT.MSTPB31 -#define MSTP_SMCI0 SYSTEM.MSTPCRB.BIT.MSTPB31 -#define MSTP_SCI1 SYSTEM.MSTPCRB.BIT.MSTPB30 -#define MSTP_SMCI1 SYSTEM.MSTPCRB.BIT.MSTPB30 -#define MSTP_SCI2 SYSTEM.MSTPCRB.BIT.MSTPB29 -#define MSTP_SMCI2 SYSTEM.MSTPCRB.BIT.MSTPB29 -#define MSTP_SCI3 SYSTEM.MSTPCRB.BIT.MSTPB28 -#define MSTP_SMCI3 SYSTEM.MSTPCRB.BIT.MSTPB28 -#define MSTP_SCI5 SYSTEM.MSTPCRB.BIT.MSTPB26 -#define MSTP_SMCI5 SYSTEM.MSTPCRB.BIT.MSTPB26 -#define MSTP_SCI6 SYSTEM.MSTPCRB.BIT.MSTPB25 -#define MSTP_SMCI6 SYSTEM.MSTPCRB.BIT.MSTPB25 -#define MSTP_CRC SYSTEM.MSTPCRB.BIT.MSTPB23 -#define MSTP_RIIC0 SYSTEM.MSTPCRB.BIT.MSTPB21 -#define MSTP_RIIC1 SYSTEM.MSTPCRB.BIT.MSTPB20 -#define MSTP_USB0 SYSTEM.MSTPCRB.BIT.MSTPB19 -#define MSTP_USB1 SYSTEM.MSTPCRB.BIT.MSTPB18 -#define MSTP_RSPI0 SYSTEM.MSTPCRB.BIT.MSTPB17 -#define MSTP_RSPI1 SYSTEM.MSTPCRB.BIT.MSTPB16 -#define MSTP_EDMAC SYSTEM.MSTPCRB.BIT.MSTPB15 -#define MSTP_CAN0 SYSTEM.MSTPCRB.BIT.MSTPB0 -#define MSTP_RAM0 SYSTEM.MSTPCRC.BIT.MSTPC1 -#define MSTP_RAM1 SYSTEM.MSTPCRC.BIT.MSTPC0 - -#define __IR( x ) ICU.IR[ IR ## x ].BIT.IR -#define _IR( x ) __IR( x ) -#define IR( x , y ) _IR( _ ## x ## _ ## y ) -#define __DTCE( x ) ICU.DTCER[ DTCE ## x ].BIT.DTCE -#define _DTCE( x ) __DTCE( x ) -#define DTCE( x , y ) _DTCE( _ ## x ## _ ## y ) -#define __IEN( x ) ICU.IER[ IER ## x ].BIT.IEN ## x -#define _IEN( x ) __IEN( x ) -#define IEN( x , y ) _IEN( _ ## x ## _ ## y ) -#define __IPR( x ) ICU.IPR[ IPR ## x ].BIT.IPR -#define _IPR( x ) __IPR( x ) -#define IPR( x , y ) _IPR( _ ## x ## _ ## y ) -#define __VECT( x ) VECT ## x -#define _VECT( x ) __VECT( x ) -#define VECT( x , y ) _VECT( _ ## x ## _ ## y ) -#define __MSTP( x ) MSTP ## x -#define _MSTP( x ) __MSTP( x ) -#define MSTP( x ) _MSTP( _ ## x ) - -#define SYSTEM (*(volatile struct st_system *)0x80000) -#define BSC (*(volatile struct st_bsc *)0x81300) -#define DMAC0 (*(volatile struct st_dmac0 *)0x82000) -#define DMAC1 (*(volatile struct st_dmac1 *)0x82040) -#define DMAC2 (*(volatile struct st_dmac1 *)0x82080) -#define DMAC3 (*(volatile struct st_dmac1 *)0x820C0) -#define DMAC (*(volatile struct st_dmac *)0x82200) -#define DTC (*(volatile struct st_dtc *)0x82400) -#define EXDMAC0 (*(volatile struct st_exdmac0 *)0x82800) -#define EXDMAC1 (*(volatile struct st_exdmac0 *)0x82840) -#define EXDMAC (*(volatile struct st_exdmac *)0x82A00) -#define ICU (*(volatile struct st_icu *)0x87000) -#define CMT (*(volatile struct st_cmt *)0x88000) -#define CMT0 (*(volatile struct st_cmt0 *)0x88002) -#define CMT1 (*(volatile struct st_cmt0 *)0x88008) -#define CMT2 (*(volatile struct st_cmt0 *)0x88012) -#define CMT3 (*(volatile struct st_cmt0 *)0x88018) -#define WDT (*(volatile union un_wdt *)0x88028) -#define IWDT (*(volatile struct st_iwdt *)0x88030) -#define AD0 (*(volatile struct st_ad *)0x88040) -#define AD1 (*(volatile struct st_ad *)0x88060) -#define DA (*(volatile struct st_da *)0x880C0) -#define PPG0 (*(volatile struct st_ppg0 *)0x881E6) -#define PPG1 (*(volatile struct st_ppg1 *)0x881F0) -#define TMR0 (*(volatile struct st_tmr0 *)0x88200) -#define TMR1 (*(volatile struct st_tmr1 *)0x88201) -#define TMR01 (*(volatile struct st_tmr01 *)0x88204) -#define TMR2 (*(volatile struct st_tmr0 *)0x88210) -#define TMR3 (*(volatile struct st_tmr1 *)0x88211) -#define TMR23 (*(volatile struct st_tmr01 *)0x88214) -#define SCI0 (*(volatile struct st_sci *)0x88240) -#define SCI1 (*(volatile struct st_sci *)0x88248) -#define SCI2 (*(volatile struct st_sci *)0x88250) -#define SCI3 (*(volatile struct st_sci *)0x88258) -#define SCI5 (*(volatile struct st_sci *)0x88268) -#define SCI6 (*(volatile struct st_sci *)0x88270) -#define SMCI0 (*(volatile struct st_smci *)0x88240) -#define SMCI1 (*(volatile struct st_smci *)0x88248) -#define SMCI2 (*(volatile struct st_smci *)0x88250) -#define SMCI3 (*(volatile struct st_smci *)0x88258) -#define SMCI5 (*(volatile struct st_smci *)0x88268) -#define SMCI6 (*(volatile struct st_smci *)0x88270) -#define CRC (*(volatile struct st_crc *)0x88280) -#define RIIC0 (*(volatile struct st_riic *)0x88300) -#define RIIC1 (*(volatile struct st_riic *)0x88320) -#define RSPI0 (*(volatile struct st_rspi *)0x88380) -#define RSPI1 (*(volatile struct st_rspi *)0x883A0) -#define MTUA (*(volatile struct st_mtu *)0x8860A) -#define MTU0 (*(volatile struct st_mtu0 *)0x88700) -#define MTU1 (*(volatile struct st_mtu1 *)0x88780) -#define MTU2 (*(volatile struct st_mtu2 *)0x88800) -#define MTU3 (*(volatile struct st_mtu3 *)0x88600) -#define MTU4 (*(volatile struct st_mtu4 *)0x88600) -#define MTU5 (*(volatile struct st_mtu5 *)0x88880) -#define POE (*(volatile struct st_poe *)0x88900) -#define MTUB (*(volatile struct st_mtu *)0x88A0A) -#define MTU6 (*(volatile struct st_mtu0 *)0x88B00) -#define MTU7 (*(volatile struct st_mtu1 *)0x88B80) -#define MTU8 (*(volatile struct st_mtu2 *)0x88C00) -#define MTU9 (*(volatile struct st_mtu3 *)0x88A00) -#define MTU10 (*(volatile struct st_mtu4 *)0x88A00) -#define MTU11 (*(volatile struct st_mtu5 *)0x88C80) -#define S12AD (*(volatile struct st_s12ad *)0x89000) -#define PORT0 (*(volatile struct st_port0 *)0x8C000) -#define PORT1 (*(volatile struct st_port1 *)0x8C001) -#define PORT2 (*(volatile struct st_port2 *)0x8C002) -#define PORT3 (*(volatile struct st_port3 *)0x8C003) -#define PORT4 (*(volatile struct st_port4 *)0x8C004) -#define PORT5 (*(volatile struct st_port5 *)0x8C005) -#define PORT6 (*(volatile struct st_port6 *)0x8C006) -#define PORT7 (*(volatile struct st_port7 *)0x8C007) -#define PORT8 (*(volatile struct st_port8 *)0x8C008) -#define PORT9 (*(volatile struct st_port9 *)0x8C009) -#define PORTA (*(volatile struct st_porta *)0x8C00A) -#define PORTB (*(volatile struct st_portb *)0x8C00B) -#define PORTC (*(volatile struct st_portc *)0x8C00C) -#define PORTD (*(volatile struct st_portd *)0x8C00D) -#define PORTE (*(volatile struct st_porte *)0x8C00E) -#define PORTF (*(volatile struct st_portf *)0x8C00F) -#define PORTG (*(volatile struct st_portg *)0x8C010) -#define IOPORT (*(volatile struct st_ioport *)0x8C100) -#define FLASH (*(volatile struct st_flash *)0x8C288) -#define RTC (*(volatile struct st_rtc *)0x8C400) -#define CAN0 (*(volatile struct st_can *)0x90200) -#define USB0 (*(volatile struct st_usb0 *)0xA0000) -#define USB1 (*(volatile struct st_usb0 *)0xA0200) -#define USB (*(volatile struct st_usb *)0xA0400) -#define EDMAC (*(volatile struct st_edmac *)0xC0000) -#define ETHERC (*(volatile struct st_etherc *)0xC0100) - -#elif __RX_BIG_ENDIAN__ /*Big endian*/ - -struct st_system { - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short MDE:1; - unsigned short :5; - unsigned short MD1:1; - unsigned short MD0:1; - } BIT; - } MDMONR; - union { - unsigned short WORD; - struct { - unsigned short :9; - unsigned short UBTS:1; - unsigned short :1; - unsigned short BOTS:1; - unsigned short BSW:2; - unsigned short EXB:1; - unsigned short IROM:1; - } BIT; - } MDSR; - unsigned char wk0[2]; - union { - unsigned short WORD; - struct { - unsigned short KEY:8; - unsigned short :6; - unsigned short EXBE:1; - unsigned short ROME:1; - } BIT; - } SYSCR0; - union { - unsigned short WORD; - struct { - unsigned short :15; - unsigned short RAME:1; - } BIT; - } SYSCR1; - unsigned char wk1[2]; - union { - unsigned short WORD; - struct { - unsigned short SSBY:1; - unsigned short OPE:1; - unsigned short :1; - unsigned short STS:5; - unsigned short :8; - } BIT; - } SBYCR; - unsigned char wk2[2]; - union { - unsigned long LONG; - struct { - unsigned long ACSE:1; - unsigned long :1; - unsigned long MSTPA29:1; - unsigned long MSTPA28:1; - unsigned long :4; - unsigned long MSTPA23:1; - unsigned long MSTPA22:1; - unsigned long :2; - unsigned long MSTPA19:1; - unsigned long :1; - unsigned long MSTPA17:1; - unsigned long :1; - unsigned long MSTPA15:1; - unsigned long MSTPA14:1; - unsigned long :2; - unsigned long MSTPA11:1; - unsigned long MSTPA10:1; - unsigned long MSTPA9:1; - unsigned long MSTPA8:1; - unsigned long :2; - unsigned long MSTPA5:1; - unsigned long MSTPA4:1; - unsigned long :4; - } BIT; - } MSTPCRA; - union { - unsigned long LONG; - struct { - unsigned long MSTPB31:1; - unsigned long MSTPB30:1; - unsigned long MSTPB29:1; - unsigned long MSTPB28:1; - unsigned long :1; - unsigned long MSTPB26:1; - unsigned long MSTPB25:1; - unsigned long :1; - unsigned long MSTPB23:1; - unsigned long :1; - unsigned long MSTPB21:1; - unsigned long MSTPB20:1; - unsigned long MSTPB19:1; - unsigned long MSTPB18:1; - unsigned long MSTPB17:1; - unsigned long MSTPB16:1; - unsigned long MSTPB15:1; - unsigned long :14; - unsigned long MSTPB0:1; - } BIT; - } MSTPCRB; - union { - unsigned long LONG; - struct { - unsigned long :30; - unsigned long MSTPC1:1; - unsigned long MSTPC0:1; - } BIT; - } MSTPCRC; - unsigned char wk3[4]; - union { - unsigned long LONG; - struct { - unsigned long :4; - unsigned long ICK:4; - unsigned long PSTOP1:1; - unsigned long PSTOP0:1; - unsigned long :2; - unsigned long BCK:4; - unsigned long :4; - unsigned long PCK:4; - unsigned long :8; - } BIT; - } SCKCR; - unsigned char wk4[12]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char BCLKDIV:1; - } BIT; - } BCKCR; - unsigned char wk5[15]; - union { - unsigned short WORD; - struct { - unsigned short KEY:8; - unsigned short OSTDE:1; - unsigned short OSTDF:1; - unsigned short :6; - } BIT; - } OSTDCR; - unsigned char wk6[49726]; - union { - unsigned char BYTE; - struct { - unsigned char DPSBY:1; - unsigned char IOKEEP:1; - unsigned char RAMCUT2:1; - unsigned char RAMCUT1:1; - unsigned char :3; - unsigned char RAMCUT0:1; - } BIT; - } DPSBYCR; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char WTSTS:6; - } BIT; - } DPSWCR; - union { - unsigned char BYTE; - struct { - unsigned char DNMIE:1; - unsigned char DUSBE:1; - unsigned char DRTCE:1; - unsigned char DLVDE:1; - unsigned char DIRQ3E:1; - unsigned char DIRQ2E:1; - unsigned char DIRQ1E:1; - unsigned char DIRQ0E:1; - } BIT; - } DPSIER; - union { - unsigned char BYTE; - struct { - unsigned char DNMIF:1; - unsigned char DUSBF:1; - unsigned char DRTCFF:1; - unsigned char DLVDF:1; - unsigned char DIRQ3F:1; - unsigned char DIRQ2F:1; - unsigned char DIRQ1F:1; - unsigned char DIRQ0F:1; - } BIT; - } DPSIFR; - union { - unsigned char BYTE; - struct { - unsigned char DNMIEG:1; - unsigned char :3; - unsigned char DIRQ3EG:1; - unsigned char DIRQ2EG:1; - unsigned char DIRQ1EG:1; - unsigned char DIRQ0EG:1; - } BIT; - } DPSIEGR; - union { - unsigned char BYTE; - struct { - unsigned char DPSRSTF:1; - unsigned char :4; - unsigned char LVD2F:1; - unsigned char LVD1F:1; - unsigned char PORF:1; - } BIT; - } RSTSR; - unsigned char wk7[4]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char SUBSTOP:1; - } BIT; - } SUBOSCCR; - unsigned char wk8[1]; - unsigned char LVDKEYR; - union { - unsigned char BYTE; - struct { - unsigned char LVD2E:1; - unsigned char LVD2RI:1; - unsigned char :2; - unsigned char LVD1E:1; - unsigned char LVD1RI:1; - unsigned char :2; - } BIT; - } LVDCR; - unsigned char wk9[2]; - unsigned char DPSBKR[32]; -}; - -struct st_bsc { - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char STSCLR:1; - } BIT; - } BERCLR; - unsigned char wk0[3]; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char TOEN:1; - unsigned char IGAEN:1; - } BIT; - } BEREN; - unsigned char wk1[3]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char MST:3; - unsigned char :2; - unsigned char TO:1; - unsigned char IA:1; - } BIT; - } BERSR1; - unsigned char wk2[1]; - union { - unsigned short WORD; - struct { - unsigned short ADDR:13; - unsigned short :3; - } BIT; - } BERSR2; - unsigned char wk3[7414]; - union { - unsigned short WORD; - struct { - unsigned short PRMOD:1; - unsigned short :5; - unsigned short PWENB:1; - unsigned short PRENB:1; - unsigned short :4; - unsigned short EWENB:1; - unsigned short :2; - unsigned short WRMOD:1; - } BIT; - } CS0MOD; - union { - unsigned long LONG; - struct { - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - unsigned long CSWWAIT:5; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSPWWAIT:3; - } BIT; - } CS0WCR1; - union { - unsigned long LONG; - struct { - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long RDON:3; - unsigned long :5; - unsigned long WDOFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long CSROFF:3; - } BIT; - } CS0WCR2; - unsigned char wk4[6]; - union { - unsigned short WORD; - struct { - unsigned short PRMOD:1; - unsigned short :5; - unsigned short PWENB:1; - unsigned short PRENB:1; - unsigned short :4; - unsigned short EWENB:1; - unsigned short :2; - unsigned short WRMOD:1; - } BIT; - } CS1MOD; - union { - unsigned long LONG; - struct { - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - unsigned long CSWWAIT:5; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSPWWAIT:3; - } BIT; - } CS1WCR1; - union { - unsigned long LONG; - struct { - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long RDON:3; - unsigned long :5; - unsigned long WDOFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long CSROFF:3; - } BIT; - } CS1WCR2; - unsigned char wk5[6]; - union { - unsigned short WORD; - struct { - unsigned short PRMOD:1; - unsigned short :5; - unsigned short PWENB:1; - unsigned short PRENB:1; - unsigned short :4; - unsigned short EWENB:1; - unsigned short :2; - unsigned short WRMOD:1; - } BIT; - } CS2MOD; - union { - unsigned long LONG; - struct { - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - unsigned long CSWWAIT:5; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSPWWAIT:3; - } BIT; - } CS2WCR1; - union { - unsigned long LONG; - struct { - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long RDON:3; - unsigned long :5; - unsigned long WDOFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long CSROFF:3; - } BIT; - } CS2WCR2; - unsigned char wk6[6]; - union { - unsigned short WORD; - struct { - unsigned short PRMOD:1; - unsigned short :5; - unsigned short PWENB:1; - unsigned short PRENB:1; - unsigned short :4; - unsigned short EWENB:1; - unsigned short :2; - unsigned short WRMOD:1; - } BIT; - } CS3MOD; - union { - unsigned long LONG; - struct { - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - unsigned long CSWWAIT:5; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSPWWAIT:3; - } BIT; - } CS3WCR1; - union { - unsigned long LONG; - struct { - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long RDON:3; - unsigned long :5; - unsigned long WDOFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long CSROFF:3; - } BIT; - } CS3WCR2; - unsigned char wk7[6]; - union { - unsigned short WORD; - struct { - unsigned short PRMOD:1; - unsigned short :5; - unsigned short PWENB:1; - unsigned short PRENB:1; - unsigned short :4; - unsigned short EWENB:1; - unsigned short :2; - unsigned short WRMOD:1; - } BIT; - } CS4MOD; - union { - unsigned long LONG; - struct { - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - unsigned long CSWWAIT:5; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSPWWAIT:3; - } BIT; - } CS4WCR1; - union { - unsigned long LONG; - struct { - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long RDON:3; - unsigned long :5; - unsigned long WDOFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long CSROFF:3; - } BIT; - } CS4WCR2; - unsigned char wk8[6]; - union { - unsigned short WORD; - struct { - unsigned short PRMOD:1; - unsigned short :5; - unsigned short PWENB:1; - unsigned short PRENB:1; - unsigned short :4; - unsigned short EWENB:1; - unsigned short :2; - unsigned short WRMOD:1; - } BIT; - } CS5MOD; - union { - unsigned long LONG; - struct { - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - unsigned long CSWWAIT:5; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSPWWAIT:3; - } BIT; - } CS5WCR1; - union { - unsigned long LONG; - struct { - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long RDON:3; - unsigned long :5; - unsigned long WDOFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long CSROFF:3; - } BIT; - } CS5WCR2; - unsigned char wk9[6]; - union { - unsigned short WORD; - struct { - unsigned short PRMOD:1; - unsigned short :5; - unsigned short PWENB:1; - unsigned short PRENB:1; - unsigned short :4; - unsigned short EWENB:1; - unsigned short :2; - unsigned short WRMOD:1; - } BIT; - } CS6MOD; - union { - unsigned long LONG; - struct { - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - unsigned long CSWWAIT:5; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSPWWAIT:3; - } BIT; - } CS6WCR1; - union { - unsigned long LONG; - struct { - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long RDON:3; - unsigned long :5; - unsigned long WDOFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long CSROFF:3; - } BIT; - } CS6WCR2; - unsigned char wk10[6]; - union { - unsigned short WORD; - struct { - unsigned short PRMOD:1; - unsigned short :5; - unsigned short PWENB:1; - unsigned short PRENB:1; - unsigned short :4; - unsigned short EWENB:1; - unsigned short :2; - unsigned short WRMOD:1; - } BIT; - } CS7MOD; - union { - unsigned long LONG; - struct { - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - unsigned long CSWWAIT:5; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSPWWAIT:3; - } BIT; - } CS7WCR1; - union { - unsigned long LONG; - struct { - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long RDON:3; - unsigned long :5; - unsigned long WDOFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long CSROFF:3; - } BIT; - } CS7WCR2; - unsigned char wk11[1926]; - union { - unsigned short WORD; - struct { - unsigned short :7; - unsigned short EMODE:1; - unsigned short :2; - unsigned short BSIZE:2; - unsigned short :3; - unsigned short EXENB:1; - } BIT; - } CS0CR; - unsigned char wk12[6]; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - unsigned short RRCV:4; - } BIT; - } CS0REC; - unsigned char wk13[6]; - union { - unsigned short WORD; - struct { - unsigned short :7; - unsigned short EMODE:1; - unsigned short :2; - unsigned short BSIZE:2; - unsigned short :3; - unsigned short EXENB:1; - } BIT; - } CS1CR; - unsigned char wk14[6]; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - unsigned short RRCV:4; - } BIT; - } CS1REC; - unsigned char wk15[6]; - union { - unsigned short WORD; - struct { - unsigned short :7; - unsigned short EMODE:1; - unsigned short :2; - unsigned short BSIZE:2; - unsigned short :3; - unsigned short EXENB:1; - } BIT; - } CS2CR; - unsigned char wk16[6]; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - unsigned short RRCV:4; - } BIT; - } CS2REC; - unsigned char wk17[6]; - union { - unsigned short WORD; - struct { - unsigned short :7; - unsigned short EMODE:1; - unsigned short :2; - unsigned short BSIZE:2; - unsigned short :3; - unsigned short EXENB:1; - } BIT; - } CS3CR; - unsigned char wk18[6]; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - unsigned short RRCV:4; - } BIT; - } CS3REC; - unsigned char wk19[6]; - union { - unsigned short WORD; - struct { - unsigned short :7; - unsigned short EMODE:1; - unsigned short :2; - unsigned short BSIZE:2; - unsigned short :3; - unsigned short EXENB:1; - } BIT; - } CS4CR; - unsigned char wk20[6]; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - unsigned short RRCV:4; - } BIT; - } CS4REC; - unsigned char wk21[6]; - union { - unsigned short WORD; - struct { - unsigned short :7; - unsigned short EMODE:1; - unsigned short :2; - unsigned short BSIZE:2; - unsigned short :3; - unsigned short EXENB:1; - } BIT; - } CS5CR; - unsigned char wk22[6]; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - unsigned short RRCV:4; - } BIT; - } CS5REC; - unsigned char wk23[6]; - union { - unsigned short WORD; - struct { - unsigned short :7; - unsigned short EMODE:1; - unsigned short :2; - unsigned short BSIZE:2; - unsigned short :3; - unsigned short EXENB:1; - } BIT; - } CS6CR; - unsigned char wk24[6]; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - unsigned short RRCV:4; - } BIT; - } CS6REC; - unsigned char wk25[6]; - union { - unsigned short WORD; - struct { - unsigned short :7; - unsigned short EMODE:1; - unsigned short :2; - unsigned short BSIZE:2; - unsigned short :3; - unsigned short EXENB:1; - } BIT; - } CS7CR; - unsigned char wk26[6]; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - unsigned short RRCV:4; - } BIT; - } CS7REC; - unsigned char wk27[900]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char BSIZE:2; - unsigned char :3; - unsigned char EXENB:1; - } BIT; - } SDCCR; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char EMODE:1; - } BIT; - } SDCMOD; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char BE:1; - } BIT; - } SDAMOD; - unsigned char wk28[13]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char SFEN:1; - } BIT; - } SDSELF; - unsigned char wk29[3]; - union { - unsigned short WORD; - struct { - unsigned short REFW:4; - unsigned short RFC:12; - } BIT; - } SDRFCR; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char RFEN:1; - } BIT; - } SDRFEN; - unsigned char wk30[9]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char INIRQ:1; - } BIT; - } SDICR; - unsigned char wk31[3]; - union { - unsigned short WORD; - struct { - unsigned short :5; - unsigned short PRC:3; - unsigned short ARFC:4; - unsigned short ARFI:4; - } BIT; - } SDIR; - unsigned char wk32[26]; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char MXC:2; - } BIT; - } SDADR; - unsigned char wk33[3]; - union { - unsigned long LONG; - struct { - unsigned long :13; - unsigned long RAS:3; - unsigned long :2; - unsigned long RCD:2; - unsigned long RP:3; - unsigned long WR:1; - unsigned long :5; - unsigned long CL:3; - } BIT; - } SDTR; - union { - unsigned short WORD; - struct { - unsigned short :1; - unsigned short MR:15; - } BIT; - } SDMOD; - unsigned char wk34[6]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char SRFST:1; - unsigned char INIST:1; - unsigned char :2; - unsigned char MRSST:1; - } BIT; - } SDSR; -}; - -struct st_dmac0 { - void *DMSAR; - void *DMDAR; - unsigned long DMCRA; - unsigned short DMCRB; - unsigned char wk0[2]; - union { - unsigned short WORD; - struct { - unsigned short MD:2; - unsigned short DTS:2; - unsigned short :2; - unsigned short SZ:2; - unsigned short :6; - unsigned short DCTG:2; - } BIT; - } DMTMD; - unsigned char wk1[1]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char DTIE:1; - unsigned char ESIE:1; - unsigned char RPTIE:1; - unsigned char SARIE:1; - unsigned char DARIE:1; - } BIT; - } DMINT; - union { - unsigned short WORD; - struct { - unsigned short SM:2; - unsigned short :1; - unsigned short SARA:5; - unsigned short DM:2; - unsigned short :1; - unsigned short DARA:5; - } BIT; - } DMAMD; - unsigned char wk2[2]; - unsigned long DMOFR; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DTE:1; - } BIT; - } DMCNT; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char CLRS:1; - unsigned char :3; - unsigned char SWREQ:1; - } BIT; - } DMREQ; - union { - unsigned char BYTE; - struct { - unsigned char ACT:1; - unsigned char :2; - unsigned char DTIF:1; - unsigned char :3; - unsigned char ESIF:1; - } BIT; - } DMSTS; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DISEL:1; - } BIT; - } DMCSL; -}; - -struct st_dmac1 { - void *DMSAR; - void *DMDAR; - unsigned long DMCRA; - unsigned short DMCRB; - unsigned char wk0[2]; - union { - unsigned short WORD; - struct { - unsigned short MD:2; - unsigned short DTS:2; - unsigned short :2; - unsigned short SZ:2; - unsigned short :6; - unsigned short DCTG:2; - } BIT; - } DMTMD; - unsigned char wk1[1]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char DTIE:1; - unsigned char ESIE:1; - unsigned char RPTIE:1; - unsigned char SARIE:1; - unsigned char DARIE:1; - } BIT; - } DMINT; - union { - unsigned short WORD; - struct { - unsigned short SM:2; - unsigned short :1; - unsigned short SARA:5; - unsigned short DM:2; - unsigned short :1; - unsigned short DARA:5; - } BIT; - } DMAMD; - unsigned char wk2[6]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DTE:1; - } BIT; - } DMCNT; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char CLRS:1; - unsigned char :3; - unsigned char SWREQ:1; - } BIT; - } DMREQ; - union { - unsigned char BYTE; - struct { - unsigned char ACT:1; - unsigned char :2; - unsigned char DTIF:1; - unsigned char :3; - unsigned char ESIF:1; - } BIT; - } DMSTS; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DISEL:1; - } BIT; - } DMCSL; -}; - -struct st_dmac { - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DMST:1; - } BIT; - } DMAST; -}; - -struct st_dtc { - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char RRS:1; - unsigned char :4; - } BIT; - } DTCCR; - unsigned char wk0[3]; - void *DTCVBR; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char SHORT:1; - } BIT; - } DTCADMOD; - unsigned char wk1[3]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DTCST:1; - } BIT; - } DTCST; - unsigned char wk2[1]; - union { - unsigned short WORD; - struct { - unsigned short ACT:1; - unsigned short :7; - unsigned short VECN:8; - } BIT; - } DTCSTS; -}; - -struct st_exdmac0 { - void *EDMSAR; - void *EDMDAR; - unsigned long EDMCRA; - unsigned short EDMCRB; - unsigned char wk0[2]; - union { - unsigned short WORD; - struct { - unsigned short MD:2; - unsigned short DTS:2; - unsigned short :2; - unsigned short SZ:2; - unsigned short :6; - unsigned short DCTG:2; - } BIT; - } EDMTMD; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char DACKS:1; - unsigned char DACKE:1; - unsigned char DACKW:1; - unsigned char :1; - } BIT; - } EDMOMD; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char DTIE:1; - unsigned char ESIE:1; - unsigned char RPTIE:1; - unsigned char SARIE:1; - unsigned char DARIE:1; - } BIT; - } EDMINT; - union { - unsigned long LONG; - struct { - unsigned long :14; - unsigned long AMS:1; - unsigned long DIR:1; - unsigned long SM:2; - unsigned long :1; - unsigned long SARA:5; - unsigned long DM:2; - unsigned long :1; - unsigned long DARA:5; - } BIT; - } EDMAMD; - unsigned long EDMOFR; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DTE:1; - } BIT; - } EDMCNT; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char CLRS:1; - unsigned char :3; - unsigned char SWREQ:1; - } BIT; - } EDMREQ; - union { - unsigned char BYTE; - struct { - unsigned char ACT:1; - unsigned char :2; - unsigned char DTIF:1; - unsigned char :3; - unsigned char ESIF:1; - } BIT; - } EDMSTS; - unsigned char wk1[1]; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char DREQS:2; - } BIT; - } EDMRMD; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char EREQ:1; - } BIT; - } EDMERF; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char PREQ:1; - } BIT; - } EDMPRF; -}; - -struct st_exdmac { - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DMST:1; - } BIT; - } EDMAST; - unsigned char wk0[479]; - unsigned long CLSBR0; - unsigned long CLSBR1; - unsigned long CLSBR2; - unsigned long CLSBR3; - unsigned long CLSBR4; - unsigned long CLSBR5; - unsigned long CLSBR6; - unsigned long CLSBR7; -}; - -struct st_icu { - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char IR:1; - } BIT; - } IR[254]; - unsigned char wk17[2]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DTCE:1; - } BIT; - } DTCER[254]; - unsigned char wk47[2]; - union { - unsigned char BYTE; - struct { - unsigned char IEN7:1; - unsigned char IEN6:1; - unsigned char IEN5:1; - unsigned char IEN4:1; - unsigned char IEN3:1; - unsigned char IEN2:1; - unsigned char IEN1:1; - unsigned char IEN0:1; - } BIT; - } IER[32]; - unsigned char wk50[192]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char SWINT:1; - } BIT; - } SWINTR; - unsigned char wk51[15]; - union { - unsigned short WORD; - struct { - unsigned short FIEN:1; - unsigned short :7; - unsigned short FVCT:8; - } BIT; - } FIR; - unsigned char wk52[14]; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char IPR:4; - } BIT; - } IPR[144]; - unsigned char wk67[112]; - unsigned char DMRSR0; - unsigned char wk68[3]; - unsigned char DMRSR1; - unsigned char wk69[3]; - unsigned char DMRSR2; - unsigned char wk70[3]; - unsigned char DMRSR3; - unsigned char wk71[243]; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char IRQMD:2; - unsigned char :2; - } BIT; - } IRQCR[16]; - unsigned char wk72[112]; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char OSTST:1; - unsigned char LVDST:1; - unsigned char NMIST:1; - } BIT; - } NMISR; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char OSTEN:1; - unsigned char LVDEN:1; - unsigned char NMIEN:1; - } BIT; - } NMIER; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char OSTCLR:1; - unsigned char :1; - unsigned char NMICLR:1; - } BIT; - } NMICLR; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char NMIMD:1; - unsigned char :3; - } BIT; - } NMICR; -}; - -struct st_cmt { - union { - unsigned short WORD; - struct { - unsigned short :14; - unsigned short STR1:1; - unsigned short STR0:1; - } BIT; - } CMSTR0; - unsigned char wk0[14]; - union { - unsigned short WORD; - struct { - unsigned short :14; - unsigned short STR3:1; - unsigned short STR2:1; - } BIT; - } CMSTR1; -}; - -struct st_cmt0 { - union { - unsigned short WORD; - struct { - unsigned short :9; - unsigned short CMIE:1; - unsigned short :4; - unsigned short CKS:2; - } BIT; - } CMCR; - unsigned short CMCNT; - unsigned short CMCOR; -}; - -union un_wdt { - struct { - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char TMS:1; - unsigned char TME:1; - unsigned char :2; - unsigned char CKS:3; - } BIT; - } TCSR; - unsigned char TCNT; - unsigned char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char WOVF:1; - unsigned char RSTE:1; - unsigned char :6; - } BIT; - } RSTCSR; - } READ; - struct { - unsigned short WINA; - unsigned short WINB; - } WRITE; -}; - -struct st_iwdt { - unsigned char IWDTRR; - unsigned char wk0[1]; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short CKS:4; - unsigned short :2; - unsigned short TOPS:2; - } BIT; - } IWDTCR; - union { - unsigned short WORD; - struct { - unsigned short :1; - unsigned short UNDFF:1; - unsigned short CNTVAL:14; - } BIT; - } IWDTSR; -}; - -struct st_ad { - unsigned short ADDRA; - unsigned short ADDRB; - unsigned short ADDRC; - unsigned short ADDRD; - unsigned char wk0[8]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ADIE:1; - unsigned char ADST:1; - unsigned char :1; - unsigned char CH:4; - } BIT; - } ADCSR; - union { - unsigned char BYTE; - struct { - unsigned char TRGS:3; - unsigned char :1; - unsigned char CKS:2; - unsigned char MODE:2; - } BIT; - } ADCR; - union { - unsigned char BYTE; - struct { - unsigned char DPSEL:1; - unsigned char :7; - } BIT; - } ADDPR; - unsigned char ADSSTR; - unsigned char wk1[11]; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char DIAG:2; - } BIT; - } ADDIAGR; -}; - -struct st_da { - unsigned short DADR0; - unsigned short DADR1; - union { - unsigned char BYTE; - struct { - unsigned char DAOE1:1; - unsigned char DAOE0:1; - unsigned char DAE:1; - unsigned char :5; - } BIT; - } DACR; - union { - unsigned char BYTE; - struct { - unsigned char DPSEL:1; - unsigned char :7; - } BIT; - } DADPR; -}; - -struct st_ppg0 { - union { - unsigned char BYTE; - struct { - unsigned char G3CMS:2; - unsigned char G2CMS:2; - unsigned char G1CMS:2; - unsigned char G0CMS:2; - } BIT; - } PCR; - union { - unsigned char BYTE; - struct { - unsigned char G3INV:1; - unsigned char G2INV:1; - unsigned char G1INV:1; - unsigned char G0INV:1; - unsigned char G3NOV:1; - unsigned char G2NOV:1; - unsigned char G1NOV:1; - unsigned char G0NOV:1; - } BIT; - } PMR; - union { - unsigned char BYTE; - struct { - unsigned char NDER15:1; - unsigned char NDER14:1; - unsigned char NDER13:1; - unsigned char NDER12:1; - unsigned char NDER11:1; - unsigned char NDER10:1; - unsigned char NDER9:1; - unsigned char NDER8:1; - } BIT; - } NDERH; - union { - unsigned char BYTE; - struct { - unsigned char NDER7:1; - unsigned char NDER6:1; - unsigned char NDER5:1; - unsigned char NDER4:1; - unsigned char NDER3:1; - unsigned char NDER2:1; - unsigned char NDER1:1; - unsigned char NDER0:1; - } BIT; - } NDERL; - union { - unsigned char BYTE; - struct { - unsigned char POD15:1; - unsigned char POD14:1; - unsigned char POD13:1; - unsigned char POD12:1; - unsigned char POD11:1; - unsigned char POD10:1; - unsigned char POD9:1; - unsigned char POD8:1; - } BIT; - } PODRH; - union { - unsigned char BYTE; - struct { - unsigned char POD7:1; - unsigned char POD6:1; - unsigned char POD5:1; - unsigned char POD4:1; - unsigned char POD3:1; - unsigned char POD2:1; - unsigned char POD1:1; - unsigned char POD0:1; - } BIT; - } PODRL; - union { - unsigned char BYTE; - struct { - unsigned char NDR15:1; - unsigned char NDR14:1; - unsigned char NDR13:1; - unsigned char NDR12:1; - unsigned char NDR11:1; - unsigned char NDR10:1; - unsigned char NDR9:1; - unsigned char NDR8:1; - } BIT; - } NDRH; - union { - unsigned char BYTE; - struct { - unsigned char NDR7:1; - unsigned char NDR6:1; - unsigned char NDR5:1; - unsigned char NDR4:1; - unsigned char NDR3:1; - unsigned char NDR2:1; - unsigned char NDR1:1; - unsigned char NDR0:1; - } BIT; - } NDRL; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char NDR11:1; - unsigned char NDR10:1; - unsigned char NDR9:1; - unsigned char NDR8:1; - } BIT; - } NDRH2; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char NDR3:1; - unsigned char NDR2:1; - unsigned char NDR1:1; - unsigned char NDR0:1; - } BIT; - } NDRL2; -}; - -struct st_ppg1 { - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char PTRSL:1; - } BIT; - } PTRSLR; - unsigned char wk0[5]; - union { - unsigned char BYTE; - struct { - unsigned char G3CMS:2; - unsigned char G2CMS:2; - unsigned char G1CMS:2; - unsigned char G0CMS:2; - } BIT; - } PCR; - union { - unsigned char BYTE; - struct { - unsigned char G3INV:1; - unsigned char G2INV:1; - unsigned char G1INV:1; - unsigned char G0INV:1; - unsigned char G3NOV:1; - unsigned char G2NOV:1; - unsigned char G1NOV:1; - unsigned char G0NOV:1; - } BIT; - } PMR; - union { - unsigned char BYTE; - struct { - unsigned char NDER31:1; - unsigned char NDER30:1; - unsigned char NDER29:1; - unsigned char NDER28:1; - unsigned char NDER27:1; - unsigned char NDER26:1; - unsigned char NDER25:1; - unsigned char NDER24:1; - } BIT; - } NDERH; - union { - unsigned char BYTE; - struct { - unsigned char NDER23:1; - unsigned char NDER22:1; - unsigned char NDER21:1; - unsigned char NDER20:1; - unsigned char NDER19:1; - unsigned char NDER18:1; - unsigned char NDER17:1; - unsigned char NDER16:1; - } BIT; - } NDERL; - union { - unsigned char BYTE; - struct { - unsigned char POD31:1; - unsigned char POD30:1; - unsigned char POD29:1; - unsigned char POD28:1; - unsigned char POD27:1; - unsigned char POD26:1; - unsigned char POD25:1; - unsigned char POD24:1; - } BIT; - } PODRH; - union { - unsigned char BYTE; - struct { - unsigned char POD23:1; - unsigned char POD22:1; - unsigned char POD21:1; - unsigned char POD20:1; - unsigned char POD19:1; - unsigned char POD18:1; - unsigned char POD17:1; - unsigned char POD16:1; - } BIT; - } PODRL; - union { - unsigned char BYTE; - struct { - unsigned char NDR31:1; - unsigned char NDR30:1; - unsigned char NDR29:1; - unsigned char NDR28:1; - unsigned char NDR27:1; - unsigned char NDR26:1; - unsigned char NDR25:1; - unsigned char NDR24:1; - } BIT; - } NDRH; - union { - unsigned char BYTE; - struct { - unsigned char NDR23:1; - unsigned char NDR22:1; - unsigned char NDR21:1; - unsigned char NDR20:1; - unsigned char NDR19:1; - unsigned char NDR18:1; - unsigned char NDR17:1; - unsigned char NDR16:1; - } BIT; - } NDRL; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char NDR27:1; - unsigned char NDR26:1; - unsigned char NDR25:1; - unsigned char NDR24:1; - } BIT; - } NDRH2; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char NDR19:1; - unsigned char NDR18:1; - unsigned char NDR17:1; - unsigned char NDR16:1; - } BIT; - } NDRL2; -}; - -struct st_tmr0 { - union { - unsigned char BYTE; - struct { - unsigned char CMIEB:1; - unsigned char CMIEA:1; - unsigned char OVIE:1; - unsigned char CCLR:2; - unsigned char :3; - } BIT; - } TCR; - unsigned char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char ADTE:1; - unsigned char OSB:2; - unsigned char OSA:2; - } BIT; - } TCSR; - unsigned char wk1[1]; - unsigned char TCORA; - unsigned char wk2[1]; - unsigned char TCORB; - unsigned char wk3[1]; - unsigned char TCNT; - unsigned char wk4[1]; - union { - unsigned char BYTE; - struct { - unsigned char TMRIS:1; - unsigned char :2; - unsigned char CSS:2; - unsigned char CKS:3; - } BIT; - } TCCR; -}; - -struct st_tmr1 { - union { - unsigned char BYTE; - struct { - unsigned char CMIEB:1; - unsigned char CMIEA:1; - unsigned char OVIE:1; - unsigned char CCLR:2; - unsigned char :3; - } BIT; - } TCR; - unsigned char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char OSB:2; - unsigned char OSA:2; - } BIT; - } TCSR; - unsigned char wk1[1]; - unsigned char TCORA; - unsigned char wk2[1]; - unsigned char TCORB; - unsigned char wk3[1]; - unsigned char TCNT; - unsigned char wk4[1]; - union { - unsigned char BYTE; - struct { - unsigned char TMRIS:1; - unsigned char :2; - unsigned char CSS:2; - unsigned char CKS:3; - } BIT; - } TCCR; -}; - -struct st_tmr01 { - unsigned short TCORA; - unsigned short TCORB; - unsigned short TCNT; - unsigned short TCCR; -}; - -struct st_sci { - union { - unsigned char BYTE; - struct { - unsigned char CM:1; - unsigned char CHR:1; - unsigned char PE:1; - unsigned char PM:1; - unsigned char STOP:1; - unsigned char MP:1; - unsigned char CKS:2; - } BIT; - } SMR; - unsigned char BRR; - union { - unsigned char BYTE; - struct { - unsigned char TIE:1; - unsigned char RIE:1; - unsigned char TE:1; - unsigned char RE:1; - unsigned char MPIE:1; - unsigned char TEIE:1; - unsigned char CKE:2; - } BIT; - } SCR; - unsigned char TDR; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char ORER:1; - unsigned char FER:1; - unsigned char PER:1; - unsigned char TEND:1; - unsigned char MPB:1; - unsigned char MPBT:1; - } BIT; - } SSR; - unsigned char RDR; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char SDIR:1; - unsigned char SINV:1; - unsigned char :1; - unsigned char SMIF:1; - } BIT; - } SCMR; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char ABCS:1; - unsigned char :3; - unsigned char ACS0:1; - } BIT; - } SEMR; -}; - -struct st_smci { - union { - unsigned char BYTE; - struct { - unsigned char GM:1; - unsigned char BLK:1; - unsigned char PE:1; - unsigned char PM:1; - unsigned char BCP:2; - unsigned char CKS:2; - } BIT; - } SMR; - unsigned char BRR; - union { - unsigned char BYTE; - struct { - unsigned char TIE:1; - unsigned char RIE:1; - unsigned char TE:1; - unsigned char RE:1; - unsigned char :1; - unsigned char TEIE:1; - unsigned char CKE:2; - } BIT; - } SCR; - unsigned char TDR; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char ORER:1; - unsigned char ERS:1; - unsigned char PER:1; - unsigned char TEND:1; - unsigned char :2; - } BIT; - } SSR; - unsigned char RDR; - union { - unsigned char BYTE; - struct { - unsigned char BCP2:1; - unsigned char :3; - unsigned char SDIR:1; - unsigned char SINV:1; - unsigned char :1; - unsigned char SMIF:1; - } BIT; - } SCMR; -}; - -struct st_crc { - union { - unsigned char BYTE; - struct { - unsigned char DORCLR:1; - unsigned char :4; - unsigned char LMS:1; - unsigned char GPS:2; - } BIT; - } CRCCR; - unsigned char CRCDIR; - unsigned short CRCDOR; -}; - -struct st_riic { - union { - unsigned char BYTE; - struct { - unsigned char ICE:1; - unsigned char IICRST:1; - unsigned char CLO:1; - unsigned char SOWP:1; - unsigned char SCLO:1; - unsigned char SDAO:1; - unsigned char SCLI:1; - unsigned char SDAI:1; - } BIT; - } ICCR1; - union { - unsigned char BYTE; - struct { - unsigned char BBSY:1; - unsigned char MST:1; - unsigned char TRS:1; - unsigned char :1; - unsigned char SP:1; - unsigned char RS:1; - unsigned char ST:1; - unsigned char :1; - } BIT; - } ICCR2; - union { - unsigned char BYTE; - struct { - unsigned char MTWP:1; - unsigned char CKS:3; - unsigned char BCWP:1; - unsigned char BC:3; - } BIT; - } ICMR1; - union { - unsigned char BYTE; - struct { - unsigned char DLCS:1; - unsigned char SDDL:3; - unsigned char :1; - unsigned char TMOH:1; - unsigned char TMOL:1; - unsigned char TMOS:1; - } BIT; - } ICMR2; - union { - unsigned char BYTE; - struct { - unsigned char SMBS:1; - unsigned char WAIT:1; - unsigned char RDRFS:1; - unsigned char ACKWP:1; - unsigned char ACKBT:1; - unsigned char ACKBR:1; - unsigned char NF:2; - } BIT; - } ICMR3; - union { - unsigned char BYTE; - struct { - unsigned char FMPE:1; - unsigned char SCLE:1; - unsigned char NFE:1; - unsigned char NACKE:1; - unsigned char SALE:1; - unsigned char NALE:1; - unsigned char MALE:1; - unsigned char TMOE:1; - } BIT; - } ICFER; - union { - unsigned char BYTE; - struct { - unsigned char HOAE:1; - unsigned char :1; - unsigned char DIDE:1; - unsigned char :1; - unsigned char GCAE:1; - unsigned char SAR2E:1; - unsigned char SAR1E:1; - unsigned char SAR0E:1; - } BIT; - } ICSER; - union { - unsigned char BYTE; - struct { - unsigned char TIE:1; - unsigned char TEIE:1; - unsigned char RIE:1; - unsigned char NAKIE:1; - unsigned char SPIE:1; - unsigned char STIE:1; - unsigned char ALIE:1; - unsigned char TMOIE:1; - } BIT; - } ICIER; - union { - unsigned char BYTE; - struct { - unsigned char HOA:1; - unsigned char :1; - unsigned char DID:1; - unsigned char :1; - unsigned char GCA:1; - unsigned char AAS2:1; - unsigned char AAS1:1; - unsigned char AAS0:1; - } BIT; - } ICSR1; - union { - unsigned char BYTE; - struct { - unsigned char TDRE:1; - unsigned char TEND:1; - unsigned char RDRF:1; - unsigned char NACKF:1; - unsigned char STOP:1; - unsigned char START:1; - unsigned char AL:1; - unsigned char TMOF:1; - } BIT; - } ICSR2; - union { - unsigned char BYTE; - struct { - unsigned char SVA:7; - unsigned char SVA0:1; - } BIT; - } SARL0; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char SVA:2; - unsigned char FS:1; - } BIT; - } SARU0; - union { - unsigned char BYTE; - struct { - unsigned char SVA:7; - unsigned char SVA0:1; - } BIT; - } SARL1; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char SVA:2; - unsigned char FS:1; - } BIT; - } SARU1; - union { - unsigned char BYTE; - struct { - unsigned char SVA:7; - unsigned char SVA0:1; - } BIT; - } SARL2; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char SVA:2; - unsigned char FS:1; - } BIT; - } SARU2; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char BRL:5; - } BIT; - } ICBRL; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char BRH:5; - } BIT; - } ICBRH; - unsigned char ICDRT; - unsigned char ICDRR; -}; - -struct st_rspi { - union { - unsigned char BYTE; - struct { - unsigned char SPRIE:1; - unsigned char SPE:1; - unsigned char SPTIE:1; - unsigned char SPEIE:1; - unsigned char MSTR:1; - unsigned char MODFEN:1; - unsigned char TXMD:1; - unsigned char SPMS:1; - } BIT; - } SPCR; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char SSLP3:1; - unsigned char SSLP2:1; - unsigned char SSLP1:1; - unsigned char SSLP0:1; - } BIT; - } SSLP; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char MOIFE:1; - unsigned char MOIFV:1; - unsigned char :1; - unsigned char SPOM:1; - unsigned char SPLP2:1; - unsigned char SPLP:1; - } BIT; - } SPPCR; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char PERF:1; - unsigned char MODF:1; - unsigned char IDLNF:1; - unsigned char OVRF:1; - } BIT; - } SPSR; - union { - unsigned long LONG; - struct { - unsigned short H; - unsigned short L; - } WORD; - } SPDR; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char SPSLN:3; - } BIT; - } SPSCR; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char SPECM:3; - unsigned char :1; - unsigned char SPCP:3; - } BIT; - } SPSSR; - union { - unsigned char BYTE; - struct { - unsigned char SPR7:1; - unsigned char SPR6:1; - unsigned char SPR5:1; - unsigned char SPR4:1; - unsigned char SPR3:1; - unsigned char SPR2:1; - unsigned char SPR1:1; - unsigned char SPR0:1; - } BIT; - } SPBR; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char SPLW:1; - unsigned char SPRDTD:1; - unsigned char SLSEL:2; - unsigned char SPFC:2; - } BIT; - } SPDCR; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char SCKDL:3; - } BIT; - } SPCKD; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char SLNDL:3; - } BIT; - } SSLND; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char SPNDL:3; - } BIT; - } SPND; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char PTE:1; - unsigned char SPIIE:1; - unsigned char SPOE:1; - unsigned char SPPE:1; - } BIT; - } SPCR2; - union { - unsigned short WORD; - struct { - unsigned short SCKDEN:1; - unsigned short SLNDEN:1; - unsigned short SPNDEN:1; - unsigned short LSBF:1; - unsigned short SPB:4; - unsigned short SSLKP:1; - unsigned short SSLA:3; - unsigned short BRDV:2; - unsigned short CPOL:1; - unsigned short CPHA:1; - } BIT; - } SPCMD0; - union { - unsigned short WORD; - struct { - unsigned short SCKDEN:1; - unsigned short SLNDEN:1; - unsigned short SPNDEN:1; - unsigned short LSBF:1; - unsigned short SPB:4; - unsigned short SSLKP:1; - unsigned short SSLA:3; - unsigned short BRDV:2; - unsigned short CPOL:1; - unsigned short CPHA:1; - } BIT; - } SPCMD1; - union { - unsigned short WORD; - struct { - unsigned short SCKDEN:1; - unsigned short SLNDEN:1; - unsigned short SPNDEN:1; - unsigned short LSBF:1; - unsigned short SPB:4; - unsigned short SSLKP:1; - unsigned short SSLA:3; - unsigned short BRDV:2; - unsigned short CPOL:1; - unsigned short CPHA:1; - } BIT; - } SPCMD2; - union { - unsigned short WORD; - struct { - unsigned short SCKDEN:1; - unsigned short SLNDEN:1; - unsigned short SPNDEN:1; - unsigned short LSBF:1; - unsigned short SPB:4; - unsigned short SSLKP:1; - unsigned short SSLA:3; - unsigned short BRDV:2; - unsigned short CPOL:1; - unsigned short CPHA:1; - } BIT; - } SPCMD3; - union { - unsigned short WORD; - struct { - unsigned short SCKDEN:1; - unsigned short SLNDEN:1; - unsigned short SPNDEN:1; - unsigned short LSBF:1; - unsigned short SPB:4; - unsigned short SSLKP:1; - unsigned short SSLA:3; - unsigned short BRDV:2; - unsigned short CPOL:1; - unsigned short CPHA:1; - } BIT; - } SPCMD4; - union { - unsigned short WORD; - struct { - unsigned short SCKDEN:1; - unsigned short SLNDEN:1; - unsigned short SPNDEN:1; - unsigned short LSBF:1; - unsigned short SPB:4; - unsigned short SSLKP:1; - unsigned short SSLA:3; - unsigned short BRDV:2; - unsigned short CPOL:1; - unsigned short CPHA:1; - } BIT; - } SPCMD5; - union { - unsigned short WORD; - struct { - unsigned short SCKDEN:1; - unsigned short SLNDEN:1; - unsigned short SPNDEN:1; - unsigned short LSBF:1; - unsigned short SPB:4; - unsigned short SSLKP:1; - unsigned short SSLA:3; - unsigned short BRDV:2; - unsigned short CPOL:1; - unsigned short CPHA:1; - } BIT; - } SPCMD6; - union { - unsigned short WORD; - struct { - unsigned short SCKDEN:1; - unsigned short SLNDEN:1; - unsigned short SPNDEN:1; - unsigned short LSBF:1; - unsigned short SPB:4; - unsigned short SSLKP:1; - unsigned short SSLA:3; - unsigned short BRDV:2; - unsigned short CPOL:1; - unsigned short CPHA:1; - } BIT; - } SPCMD7; -}; - -struct st_mtu { - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char OE4D:1; - unsigned char OE4C:1; - unsigned char OE3D:1; - unsigned char OE4B:1; - unsigned char OE4A:1; - unsigned char OE3B:1; - } BIT; - } TOER; - unsigned char wk0[2]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char BCD:1; - unsigned char N:1; - unsigned char P:1; - unsigned char FB:1; - unsigned char WF:1; - unsigned char VF:1; - unsigned char UF:1; - } BIT; - } TGCR; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char PSYE:1; - unsigned char :2; - unsigned char TOCL:1; - unsigned char TOCS:1; - unsigned char OLSN:1; - unsigned char OLSP:1; - } BIT; - } TOCR1; - union { - unsigned char BYTE; - struct { - unsigned char BF:2; - unsigned char OLS3N:1; - unsigned char OLS3P:1; - unsigned char OLS2N:1; - unsigned char OLS2P:1; - unsigned char OLS1N:1; - unsigned char OLS1P:1; - } BIT; - } TOCR2; - unsigned char wk1[4]; - unsigned short TCDR; - unsigned short TDDR; - unsigned char wk2[8]; - unsigned short TCNTS; - unsigned short TCBR; - unsigned char wk3[12]; - union { - unsigned char BYTE; - struct { - unsigned char T3AEN:1; - unsigned char T3ACOR:3; - unsigned char T4VEN:1; - unsigned char T4VCOR:3; - } BIT; - } TITCR; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char T3ACNT:3; - unsigned char :1; - unsigned char T4VCNT:3; - } BIT; - } TITCNT; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char BTE:2; - } BIT; - } TBTER; - unsigned char wk4[1]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char TDRE:1; - } BIT; - } TDER; - unsigned char wk5[1]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char OLS3N:1; - unsigned char OLS3P:1; - unsigned char OLS2N:1; - unsigned char OLS2P:1; - unsigned char OLS1N:1; - unsigned char OLS1P:1; - } BIT; - } TOLBR; - unsigned char wk6[41]; - union { - unsigned char BYTE; - struct { - unsigned char CCE:1; - unsigned char :6; - unsigned char WRE:1; - } BIT; - } TWCR; - unsigned char wk7[31]; - union { - unsigned char BYTE; - struct { - unsigned char CST4:1; - unsigned char CST3:1; - unsigned char :3; - unsigned char CST2:1; - unsigned char CST1:1; - unsigned char CST0:1; - } BIT; - } TSTR; - union { - unsigned char BYTE; - struct { - unsigned char SYNC4:1; - unsigned char SYNC3:1; - unsigned char :3; - unsigned char SYNC2:1; - unsigned char SYNC1:1; - unsigned char SYNC0:1; - } BIT; - } TSYR; - unsigned char wk8[2]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char RWE:1; - } BIT; - } TRWER; -}; - -struct st_mtu0 { - union { - unsigned char BYTE; - struct { - unsigned char CCLR:3; - unsigned char CKEG:2; - unsigned char TPSC:3; - } BIT; - } TCR; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char BFE:1; - unsigned char BFB:1; - unsigned char BFA:1; - unsigned char MD:4; - } BIT; - } TMDR; - union { - unsigned char BYTE; - struct { - unsigned char IOB:4; - unsigned char IOA:4; - } BIT; - } TIORH; - union { - unsigned char BYTE; - struct { - unsigned char IOD:4; - unsigned char IOC:4; - } BIT; - } TIORL; - union { - unsigned char BYTE; - struct { - unsigned char TTGE:1; - unsigned char :2; - unsigned char TCIEV:1; - unsigned char TGIED:1; - unsigned char TGIEC:1; - unsigned char TGIEB:1; - unsigned char TGIEA:1; - } BIT; - } TIER; - unsigned char TSR; - unsigned short TCNT; - unsigned short TGRA; - unsigned short TGRB; - unsigned short TGRC; - unsigned short TGRD; - unsigned char wk0[16]; - unsigned short TGRE; - unsigned short TGRF; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char TGIEF:1; - unsigned char TGIEE:1; - } BIT; - } TIER2; - unsigned char wk1[1]; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char TTSE:1; - unsigned char TTSB:1; - unsigned char TTSA:1; - } BIT; - } TBTM; -}; - -struct st_mtu1 { - union { - unsigned char BYTE; - struct { - unsigned char CCLR:3; - unsigned char CKEG:2; - unsigned char TPSC:3; - } BIT; - } TCR; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char MD:4; - } BIT; - } TMDR; - union { - unsigned char BYTE; - struct { - unsigned char IOB:4; - unsigned char IOA:4; - } BIT; - } TIOR; - unsigned char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char TTGE:1; - unsigned char :1; - unsigned char TCIEU:1; - unsigned char TCIEV:1; - unsigned char :2; - unsigned char TGIEB:1; - unsigned char TGIEA:1; - } BIT; - } TIER; - union { - unsigned char BYTE; - struct { - unsigned char TCFD:1; - unsigned char :7; - } BIT; - } TSR; - unsigned short TCNT; - unsigned short TGRA; - unsigned short TGRB; - unsigned char wk1[4]; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char I2BE:1; - unsigned char I2AE:1; - unsigned char I1BE:1; - unsigned char I1AE:1; - } BIT; - } TICCR; -}; - -struct st_mtu2 { - union { - unsigned char BYTE; - struct { - unsigned char CCLR:3; - unsigned char CKEG:2; - unsigned char TPSC:3; - } BIT; - } TCR; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char MD:4; - } BIT; - } TMDR; - union { - unsigned char BYTE; - struct { - unsigned char IOB:4; - unsigned char IOA:4; - } BIT; - } TIOR; - unsigned char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char TTGE:1; - unsigned char :1; - unsigned char TCIEU:1; - unsigned char TCIEV:1; - unsigned char :2; - unsigned char TGIEB:1; - unsigned char TGIEA:1; - } BIT; - } TIER; - union { - unsigned char BYTE; - struct { - unsigned char TCFD:1; - unsigned char :7; - } BIT; - } TSR; - unsigned short TCNT; - unsigned short TGRA; - unsigned short TGRB; -}; - -struct st_mtu3 { - union { - unsigned char BYTE; - struct { - unsigned char CCLR:3; - unsigned char CKEG:2; - unsigned char TPSC:3; - } BIT; - } TCR; - unsigned char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char BFE:1; - unsigned char BFB:1; - unsigned char BFA:1; - unsigned char MD:4; - } BIT; - } TMDR; - unsigned char wk1[1]; - union { - unsigned char BYTE; - struct { - unsigned char IOB:4; - unsigned char IOA:4; - } BIT; - } TIORH; - union { - unsigned char BYTE; - struct { - unsigned char IOD:4; - unsigned char IOC:4; - } BIT; - } TIORL; - unsigned char wk2[2]; - union { - unsigned char BYTE; - struct { - unsigned char TTGE:1; - unsigned char TTGE2:1; - unsigned char TCIEU:1; - unsigned char TCIEV:1; - unsigned char TGIED:1; - unsigned char TGIEC:1; - unsigned char TGIEB:1; - unsigned char TGIEA:1; - } BIT; - } TIER; - unsigned char wk3[7]; - unsigned short TCNT; - unsigned char wk4[6]; - unsigned short TGRA; - unsigned short TGRB; - unsigned char wk5[8]; - unsigned short TGRC; - unsigned short TGRD; - unsigned char wk6[4]; - union { - unsigned char BYTE; - struct { - unsigned char TCFD:1; - unsigned char :7; - } BIT; - } TSR; - unsigned char wk7[11]; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char TTSE:1; - unsigned char TTSB:1; - unsigned char TTSA:1; - } BIT; - } TBTM; -}; - -struct st_mtu4 { - unsigned char DMMY; - union { - unsigned char BYTE; - struct { - unsigned char CCLR:3; - unsigned char CKEG:2; - unsigned char TPSC:3; - } BIT; - } TCR; - unsigned char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char BFE:1; - unsigned char BFB:1; - unsigned char BFA:1; - unsigned char MD:4; - } BIT; - } TMDR; - unsigned char wk1[2]; - union { - unsigned char BYTE; - struct { - unsigned char IOB:4; - unsigned char IOA:4; - } BIT; - } TIORH; - union { - unsigned char BYTE; - struct { - unsigned char IOD:4; - unsigned char IOC:4; - } BIT; - } TIORL; - unsigned char wk2[1]; - union { - unsigned char BYTE; - struct { - unsigned char TTGE:1; - unsigned char TTGE2:1; - unsigned char TCIEU:1; - unsigned char TCIEV:1; - unsigned char TGIED:1; - unsigned char TGIEC:1; - unsigned char TGIEB:1; - unsigned char TGIEA:1; - } BIT; - } TIER; - unsigned char wk3[8]; - unsigned short TCNT; - unsigned char wk4[8]; - unsigned short TGRA; - unsigned short TGRB; - unsigned char wk5[8]; - unsigned short TGRC; - unsigned short TGRD; - unsigned char wk6[1]; - union { - unsigned char BYTE; - struct { - unsigned char TCFD:1; - unsigned char :7; - } BIT; - } TSR; - unsigned char wk7[11]; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char TTSE:1; - unsigned char TTSB:1; - unsigned char TTSA:1; - } BIT; - } TBTM; - unsigned char wk8[6]; - union { - unsigned short WORD; - struct { - unsigned short BF:2; - unsigned short :6; - unsigned short UT4AE:1; - unsigned short DT4AE:1; - unsigned short UT4BE:1; - unsigned short DT4BE:1; - unsigned short ITA3AE:1; - unsigned short ITA4VE:1; - unsigned short ITB3AE:1; - unsigned short ITB4VE:1; - } BIT; - } TADCR; - unsigned char wk9[2]; - unsigned short TADCORA; - unsigned short TADCORB; - unsigned short TADCOBRA; - unsigned short TADCOBRB; -}; - -struct st_mtu5 { - unsigned short TCNTU; - unsigned short TGRU; - union { - unsigned char BYTE; - struct { - unsigned char CCLR:3; - unsigned char CKEG:2; - unsigned char TPSC:3; - } BIT; - } TCRU; - unsigned char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char IOC:5; - } BIT; - } TIORU; - unsigned char wk1[9]; - unsigned short TCNTV; - unsigned short TGRV; - union { - unsigned char BYTE; - struct { - unsigned char CCLR:3; - unsigned char CKEG:2; - unsigned char TPSC:3; - } BIT; - } TCRV; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char IOC:5; - } BIT; - } TIORV; - unsigned char wk2[9]; - unsigned short TCNTW; - unsigned short TGRW; - union { - unsigned char BYTE; - struct { - unsigned char CCLR:3; - unsigned char CKEG:2; - unsigned char TPSC:3; - } BIT; - } TCRW; - unsigned char wk3[1]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char IOC:5; - } BIT; - } TIORW; - unsigned char wk4[11]; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char TGIE5U:1; - unsigned char TGIE5V:1; - unsigned char TGIE5W:1; - } BIT; - } TIER; - unsigned char wk5[1]; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char CSTU5:1; - unsigned char CSTV5:1; - unsigned char CSTW5:1; - } BIT; - } TSTR; - unsigned char wk6[1]; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char CMPCLR5U:1; - unsigned char CMPCLR5V:1; - unsigned char CMPCLR5W:1; - } BIT; - } TCNTCMPCLR; -}; - -struct st_poe { - union { - unsigned short WORD; - struct { - unsigned short POE3F:1; - unsigned short POE2F:1; - unsigned short POE1F:1; - unsigned short POE0F:1; - unsigned short :3; - unsigned short PIE1:1; - unsigned short POE3M:2; - unsigned short POE2M:2; - unsigned short POE1M:2; - unsigned short POE0M:2; - } BIT; - } ICSR1; - union { - unsigned short WORD; - struct { - unsigned short OSF1:1; - unsigned short :5; - unsigned short OCE1:1; - unsigned short OIE1:1; - unsigned short :8; - } BIT; - } OCSR1; - union { - unsigned short WORD; - struct { - unsigned short POE7F:1; - unsigned short POE6F:1; - unsigned short POE5F:1; - unsigned short POE4F:1; - unsigned short :3; - unsigned short PIE2:1; - unsigned short POE7M:2; - unsigned short POE6M:2; - unsigned short POE5M:2; - unsigned short POE4M:2; - } BIT; - } ICSR2; - union { - unsigned short WORD; - struct { - unsigned short OSF2:1; - unsigned short :5; - unsigned short OCE2:1; - unsigned short OIE2:1; - unsigned short :8; - } BIT; - } OCSR2; - union { - unsigned short WORD; - struct { - unsigned short :3; - unsigned short POE8F:1; - unsigned short :2; - unsigned short POE8E:1; - unsigned short PIE3:1; - unsigned short :6; - unsigned short POE8M:2; - } BIT; - } ICSR3; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char CH6HIZ:1; - unsigned char CH910HIZ:1; - unsigned char CH0HIZ:1; - unsigned char CH34HIZ:1; - } BIT; - } SPOER; - union { - unsigned char BYTE; - struct { - unsigned char PE7ZE:1; - unsigned char PE6ZE:1; - unsigned char PE5ZE:1; - unsigned char PE4ZE:1; - unsigned char PE3ZE:1; - unsigned char PE2ZE:1; - unsigned char PE1ZE:1; - unsigned char PE0ZE:1; - } BIT; - } POECR1; - union { - unsigned short WORD; - struct { - unsigned short :1; - unsigned short P1CZEA:1; - unsigned short P2CZEA:1; - unsigned short P3CZEA:1; - unsigned short :1; - unsigned short P1CZEB:1; - unsigned short P2CZEB:1; - unsigned short P3CZEB:1; - unsigned short :1; - unsigned short P4CZE:1; - unsigned short P5CZE:1; - unsigned short P6CZE:1; - unsigned short :4; - } BIT; - } POECR2; - union { - unsigned short WORD; - struct { - unsigned short :3; - unsigned short POE9F:1; - unsigned short :2; - unsigned short POE9E:1; - unsigned short PIE4:1; - unsigned short :6; - unsigned short POE9M:2; - } BIT; - } ICSR4; -}; - -struct st_s12ad { - union { - unsigned char BYTE; - struct { - unsigned char ADST:1; - unsigned char ADCS:1; - unsigned char :1; - unsigned char ADIE:1; - unsigned char CKS:2; - unsigned char TRGE:1; - unsigned char EXTRG:1; - } BIT; - } ADCSR; - unsigned char wk0[3]; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short ANS:8; - } BIT; - } ADANS; - unsigned char wk1[2]; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short ADS:8; - } BIT; - } ADADS; - unsigned char wk2[2]; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char ADC:2; - } BIT; - } ADADC; - unsigned char wk3[1]; - union { - unsigned short WORD; - struct { - unsigned short ADRFMT:1; - unsigned short :9; - unsigned short ACE:1; - unsigned short :5; - } BIT; - } ADCER; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char ADSTRS:4; - } BIT; - } ADSTRGR; - unsigned char wk4[15]; - unsigned short ADDRA; - unsigned short ADDRB; - unsigned short ADDRC; - unsigned short ADDRD; - unsigned short ADDRE; - unsigned short ADDRF; - unsigned short ADDRG; - unsigned short ADDRH; -}; - -struct st_port0 { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char :1; - unsigned char B5:1; - unsigned char :1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char :1; - unsigned char B5:1; - unsigned char :1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char :1; - unsigned char B5:1; - unsigned char :1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char :1; - unsigned char B5:1; - unsigned char :1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; - unsigned char wk3[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char :1; - unsigned char B5:1; - unsigned char :1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ODR; -}; - -struct st_port1 { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; - unsigned char wk3[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ODR; -}; - -struct st_port2 { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; - unsigned char wk3[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ODR; -}; - -struct st_port3 { - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; - unsigned char wk3[31]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ODR; -}; - -struct st_port4 { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; -}; - -struct st_port5 { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; -}; - -struct st_port6 { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; -}; - -struct st_port7 { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; -}; - -struct st_port8 { - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; -}; - -struct st_port9 { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; - unsigned char wk3[95]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; -}; - -struct st_porta { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; - unsigned char wk3[95]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; -}; - -struct st_portb { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; - unsigned char wk3[95]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; -}; - -struct st_portc { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; - unsigned char wk3[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ODR; - unsigned char wk4[63]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; -}; - -struct st_portd { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; - unsigned char wk3[95]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; -}; - -struct st_porte { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; - unsigned char wk3[95]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; -}; - -struct st_portf { - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; -}; - -struct st_portg { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; - unsigned char wk3[95]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; -}; - -struct st_ioport { - union { - unsigned char BYTE; - struct { - unsigned char CS7E:1; - unsigned char CS6E:1; - unsigned char CS5E:1; - unsigned char CS4E:1; - unsigned char CS3E:1; - unsigned char CS2E:1; - unsigned char CS1E:1; - unsigned char CS0E:1; - } BIT; - } PF0CSE; - union { - unsigned char BYTE; - struct { - unsigned char CS7S:2; - unsigned char CS6S:2; - unsigned char CS5S:2; - unsigned char CS4S:2; - } BIT; - } PF1CSS; - union { - unsigned char BYTE; - struct { - unsigned char CS3S:2; - unsigned char CS2S:2; - unsigned char CS1S:2; - unsigned char :1; - unsigned char CS0S:1; - } BIT; - } PF2CSS; - union { - unsigned char BYTE; - struct { - unsigned char A23E:1; - unsigned char A22E:1; - unsigned char A21E:1; - unsigned char A20E:1; - unsigned char A19E:1; - unsigned char A18E:1; - unsigned char A17E:1; - unsigned char A16E:1; - } BIT; - } PF3BUS; - union { - unsigned char BYTE; - struct { - unsigned char A15E:1; - unsigned char A14E:1; - unsigned char A13E:1; - unsigned char A12E:1; - unsigned char A11E:1; - unsigned char A10E:1; - unsigned char ADRLE:2; - } BIT; - } PF4BUS; - union { - unsigned char BYTE; - struct { - unsigned char WR32BC32E:1; - unsigned char WR1BC1E:1; - unsigned char DH32E:1; - unsigned char DHE:1; - unsigned char :2; - unsigned char ADRHMS:1; - unsigned char :1; - } BIT; - } PF5BUS; - union { - unsigned char BYTE; - struct { - unsigned char SDCLKE:1; - unsigned char DQM1E:1; - unsigned char :1; - unsigned char MDSDE:1; - unsigned char :2; - unsigned char WAITS:2; - } BIT; - } PF6BUS; - union { - unsigned char BYTE; - struct { - unsigned char EDMA1S:2; - unsigned char EDMA0S:2; - unsigned char :4; - } BIT; - } PF7DMA; - union { - unsigned char BYTE; - struct { - unsigned char ITS15:1; - unsigned char :1; - unsigned char ITS13:1; - unsigned char :1; - unsigned char ITS11:1; - unsigned char ITS10:1; - unsigned char ITS9:1; - unsigned char ITS8:1; - } BIT; - } PF8IRQ; - union { - unsigned char BYTE; - struct { - unsigned char ITS7:1; - unsigned char ITS6:1; - unsigned char ITS5:1; - unsigned char ITS4:1; - unsigned char ITS3:1; - unsigned char ITS2:1; - unsigned char ITS1:1; - unsigned char ITS0:1; - } BIT; - } PF9IRQ; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char ADTRG0S:1; - } BIT; - } PFAADC; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char TMR3S:1; - unsigned char TMR2S:1; - unsigned char :2; - } BIT; - } PFBTMR; - union { - unsigned char BYTE; - struct { - unsigned char TCLKS:1; - unsigned char MTUS6:1; - unsigned char MTUS5:1; - unsigned char MTUS4:1; - unsigned char MTUS3:1; - unsigned char MTUS2:1; - unsigned char MTUS1:1; - unsigned char MTUS0:1; - } BIT; - } PFCMTU; - union { - unsigned char BYTE; - struct { - unsigned char TCLKS:1; - unsigned char MTUS6:1; - unsigned char :6; - } BIT; - } PFDMTU; - union { - unsigned char BYTE; - struct { - unsigned char EE:1; - unsigned char :2; - unsigned char PHYMODE:1; - unsigned char ENETE3:1; - unsigned char ENETE2:1; - unsigned char ENETE1:1; - unsigned char ENETE0:1; - } BIT; - } PFENET; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char SCI6S:1; - unsigned char :2; - unsigned char SCI3S:1; - unsigned char SCI2S:1; - unsigned char SCI1S:1; - unsigned char :1; - } BIT; - } PFFSCI; - union { - unsigned char BYTE; - struct { - unsigned char SSL3E:1; - unsigned char SSL2E:1; - unsigned char SSL1E:1; - unsigned char SSL0E:1; - unsigned char MISOE:1; - unsigned char MOSIE:1; - unsigned char RSPCKE:1; - unsigned char RSPIS:1; - } BIT; - } PFGSPI; - union { - unsigned char BYTE; - struct { - unsigned char SSL3E:1; - unsigned char SSL2E:1; - unsigned char SSL1E:1; - unsigned char SSL0E:1; - unsigned char MISOE:1; - unsigned char MOSIE:1; - unsigned char RSPCKE:1; - unsigned char RSPIS:1; - } BIT; - } PFHSPI; - unsigned char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char CAN0E:1; - } BIT; - } PFJCAN; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char USBE:1; - unsigned char PDHZS:1; - unsigned char PUPHZS:1; - unsigned char USBMD:2; - } BIT; - } PFKUSB; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char USBE:1; - unsigned char PDHZS:1; - unsigned char PUPHZS:1; - unsigned char USBMD:2; - } BIT; - } PFLUSB; - union { - unsigned char BYTE; - struct { - unsigned char POE7E:1; - unsigned char POE6E:1; - unsigned char POE5E:1; - unsigned char POE4E:1; - unsigned char POE3E:1; - unsigned char POE2E:1; - unsigned char POE1E:1; - unsigned char POE0E:1; - } BIT; - } PFMPOE; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char POE9E:1; - unsigned char POE8E:1; - } BIT; - } PFNPOE; -}; - -struct st_flash { - unsigned char DMMY; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char FLWE:2; - } BIT; - } FWEPROR; - unsigned char wk0[7799160]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char FRDMD:1; - unsigned char :4; - } BIT; - } FMODR; - unsigned char wk1[13]; - union { - unsigned char BYTE; - struct { - unsigned char ROMAE:1; - unsigned char :2; - unsigned char CMDLK:1; - unsigned char DFLAE:1; - unsigned char :1; - unsigned char DFLRPE:1; - unsigned char DFLWPE:1; - } BIT; - } FASTAT; - union { - unsigned char BYTE; - struct { - unsigned char ROMAEIE:1; - unsigned char :2; - unsigned char CMDLKIE:1; - unsigned char DFLAEIE:1; - unsigned char :1; - unsigned char DFLRPEIE:1; - unsigned char DFLWPEIE:1; - } BIT; - } FAEINT; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char FRDYIE:1; - } BIT; - } FRDYIE; - unsigned char wk2[45]; - union { - unsigned short WORD; - struct { - unsigned short KEY:8; - unsigned short DBRE07:1; - unsigned short DBRE06:1; - unsigned short DBRE05:1; - unsigned short DBRE04:1; - unsigned short DBRE03:1; - unsigned short DBRE02:1; - unsigned short DBRE01:1; - unsigned short DBRE00:1; - } BIT; - } DFLRE0; - union { - unsigned short WORD; - struct { - unsigned short KEY:8; - unsigned short DBRE15:1; - unsigned short DBRE14:1; - unsigned short DBRE13:1; - unsigned short DBRE12:1; - unsigned short DBRE11:1; - unsigned short DBRE10:1; - unsigned short DBRE09:1; - unsigned short DBRE08:1; - } BIT; - } DFLRE1; - unsigned char wk3[12]; - union { - unsigned short WORD; - struct { - unsigned short KEY:8; - unsigned short DBWE07:1; - unsigned short DBWE06:1; - unsigned short DBWE05:1; - unsigned short DBWE04:1; - unsigned short DBWE03:1; - unsigned short DBWE02:1; - unsigned short DBWE01:1; - unsigned short DBWE00:1; - } BIT; - } DFLWE0; - union { - unsigned short WORD; - struct { - unsigned short KEY:8; - unsigned short DBWE15:1; - unsigned short DBWE14:1; - unsigned short DBWE13:1; - unsigned short DBWE12:1; - unsigned short DBWE11:1; - unsigned short DBWE10:1; - unsigned short DBWE09:1; - unsigned short DBWE08:1; - } BIT; - } DFLWE1; - union { - unsigned short WORD; - struct { - unsigned short KEY:8; - unsigned short :7; - unsigned short FCRME:1; - } BIT; - } FCURAME; - unsigned char wk4[15194]; - union { - unsigned char BYTE; - struct { - unsigned char FRDY:1; - unsigned char ILGLERR:1; - unsigned char ERSERR:1; - unsigned char PRGERR:1; - unsigned char SUSRDY:1; - unsigned char :1; - unsigned char ERSSPD:1; - unsigned char PRGSPD:1; - } BIT; - } FSTATR0; - union { - unsigned char BYTE; - struct { - unsigned char FCUERR:1; - unsigned char :2; - unsigned char FLOCKST:1; - unsigned char :4; - } BIT; - } FSTATR1; - union { - unsigned short WORD; - struct { - unsigned short FEKEY:8; - unsigned short FENTRYD:1; - unsigned short :6; - unsigned short FENTRY0:1; - } BIT; - } FENTRYR; - union { - unsigned short WORD; - struct { - unsigned short FPKEY:8; - unsigned short :7; - unsigned short FPROTCN:1; - } BIT; - } FPROTR; - union { - unsigned short WORD; - struct { - unsigned short FPKEY:8; - unsigned short :7; - unsigned short FRESET:1; - } BIT; - } FRESETR; - unsigned char wk5[2]; - union { - unsigned short WORD; - struct { - unsigned short CMDR:8; - unsigned short PCMDR:8; - } BIT; - } FCMDR; - unsigned char wk6[12]; - union { - unsigned short WORD; - struct { - unsigned short :15; - unsigned short ESUSPMD:1; - } BIT; - } FCPSR; - union { - unsigned short WORD; - struct { - unsigned short :5; - unsigned short BCADR:8; - unsigned short :2; - unsigned short BCSIZE:1; - } BIT; - } DFLBCCNT; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short PEERRST:8; - } BIT; - } FPESTAT; - union { - unsigned short WORD; - struct { - unsigned short :15; - unsigned short BCST:1; - } BIT; - } DFLBCSTAT; - unsigned char wk7[24]; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short PCKA:8; - } BIT; - } PCKAR; -}; - -struct st_rtc { - union { - unsigned char BYTE; - struct { - unsigned char F64HZ:1; - unsigned char F32HZ:1; - unsigned char F16HZ:1; - unsigned char F8HZ:1; - unsigned char F4HZ:1; - unsigned char F2HZ:1; - unsigned char F1HZ:1; - unsigned char :1; - } BIT; - } R64CNT; - unsigned char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char SEC10:3; - unsigned char SEC1:4; - } BIT; - } RSECCNT; - unsigned char wk1[1]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char MIN10:3; - unsigned char MIN1:4; - } BIT; - } RMINCNT; - unsigned char wk2[1]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char HOUR10:2; - unsigned char HOUR1:4; - } BIT; - } RHRCNT; - unsigned char wk3[1]; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char DAY:3; - } BIT; - } RWKCNT; - unsigned char wk4[1]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char DAY10:2; - unsigned char DAY1:4; - } BIT; - } RDAYCNT; - unsigned char wk5[1]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char MON10:1; - unsigned char MON1:4; - } BIT; - } RMONCNT; - unsigned char wk6[1]; - union { - unsigned short WORD; - struct { - unsigned short YEAR1000:4; - unsigned short YEAR100:4; - unsigned short YEAR10:4; - unsigned short YEAR1:4; - } BIT; - } RYRCNT; - union { - unsigned char BYTE; - struct { - unsigned char ENB:1; - unsigned char SEC10:3; - unsigned char SEC1:4; - } BIT; - } RSECAR; - unsigned char wk7[1]; - union { - unsigned char BYTE; - struct { - unsigned char ENB:1; - unsigned char MIN10:3; - unsigned char MIN1:4; - } BIT; - } RMINAR; - unsigned char wk8[1]; - union { - unsigned char BYTE; - struct { - unsigned char ENB:1; - unsigned char :1; - unsigned char HOUR10:2; - unsigned char HOUR1:4; - } BIT; - } RHRAR; - unsigned char wk9[1]; - union { - unsigned char BYTE; - struct { - unsigned char ENB:1; - unsigned char :4; - unsigned char DAY:3; - } BIT; - } RWKAR; - unsigned char wk10[1]; - union { - unsigned char BYTE; - struct { - unsigned char ENB:1; - unsigned char :1; - unsigned char DAY10:2; - unsigned char DAY1:4; - } BIT; - } RDAYAR; - unsigned char wk11[1]; - union { - unsigned char BYTE; - struct { - unsigned char ENB:1; - unsigned char :2; - unsigned char MON10:1; - unsigned char MON1:4; - } BIT; - } RMONAR; - unsigned char wk12[1]; - union { - unsigned short WORD; - struct { - unsigned short YEAR1000:4; - unsigned short YEAR100:4; - unsigned short YEAR10:4; - unsigned short YEAR1:4; - } BIT; - } RYRAR; - union { - unsigned char BYTE; - struct { - unsigned char ENB:1; - unsigned char :7; - } BIT; - } RYRAREN; - unsigned char wk13[3]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char PES:3; - unsigned char :1; - unsigned char PIE:1; - unsigned char CIE:1; - unsigned char AIE:1; - } BIT; - } RCR1; - unsigned char wk14[1]; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char RTCOE:1; - unsigned char ADJ:1; - unsigned char RESET:1; - unsigned char START:1; - } BIT; - } RCR2; -}; - -struct st_can { - struct { - union { - unsigned long LONG; - union { - unsigned short H; - unsigned short L; - } WORD; - struct { - unsigned char HH; - unsigned char HL; - unsigned char LH; - unsigned char LL; - } BYTE; - struct { - unsigned long IDE:1; - unsigned long RTR:1; - unsigned long :1; - unsigned long SID:11; - unsigned long EID:18; - } BIT; - } ID; - union { - unsigned short WORD; - struct { - unsigned char :8; - unsigned char :4; - unsigned char DLC:4; - } BIT; - } DLC; - unsigned char DATA[8]; - union{ - unsigned short WORD; - struct { - unsigned char TSH; - unsigned char TSL; - } BYTE; - } TS; - } MB[32]; - union { - unsigned long LONG; - struct { - unsigned short H; - unsigned short L; - } WORD; - struct { - unsigned char HH; - unsigned char HL; - unsigned char LH; - unsigned char LL; - } BYTE; - struct { - unsigned long :3; - unsigned long SID:11; - unsigned long EID:18; - } BIT; - } MKR[8]; - union { - unsigned long LONG; - struct { - unsigned short H; - unsigned short L; - } WORD; - struct { - unsigned char HH; - unsigned char HL; - unsigned char LH; - unsigned char LL; - } BYTE; - struct { - unsigned long IDE:1; - unsigned long RTR:1; - unsigned long :1; - unsigned long SID:11; - unsigned long EID:18; - } BIT; - } FIDCR0; - union { - unsigned long LONG; - struct { - unsigned short H; - unsigned short L; - } WORD; - struct { - unsigned char HH; - unsigned char HL; - unsigned char LH; - unsigned char LL; - } BYTE; - struct { - unsigned long IDE:1; - unsigned long RTR:1; - unsigned long :1; - unsigned long SID:11; - unsigned long EID:18; - } BIT; - } FIDCR1; - unsigned long MKIVLR; - unsigned long MIER; - unsigned char wk32[1008]; - union { - unsigned char BYTE; - union { - struct { - unsigned char TRMREQ:1; - unsigned char RECREQ:1; - unsigned char :1; - unsigned char ONESHOT:1; - unsigned char :1; - unsigned char TRMABT:1; - unsigned char TRMACTIVE:1; - unsigned char SENTDATA:1; - } TX; - struct { - unsigned char TRMREQ:1; - unsigned char RECREQ:1; - unsigned char :1; - unsigned char ONESHOT:1; - unsigned char :1; - unsigned char MSGLOST:1; - unsigned char INVALDATA:1; - unsigned char NEWDATA:1; - } RX; - } BIT; - } MCTL[32]; - union { - unsigned short WORD; - struct { - unsigned char H; - unsigned char L; - } BYTE; - struct { - unsigned char :2; - unsigned char RBOC:1; - unsigned char BOM:2; - unsigned char SLPM:1; - unsigned char CANM:2; - unsigned char TSPS:2; - unsigned char TSRC:1; - unsigned char TPM:1; - unsigned char MLM:1; - unsigned char IDFM:2; - unsigned char MBM:1; - } BIT; - } CTLR; - union { - unsigned short WORD; - struct { - unsigned char H; - unsigned char L; - } BYTE; - struct { - unsigned char :1; - unsigned char RECST:1; - unsigned char TRMST:1; - unsigned char BOST:1; - unsigned char EPST:1; - unsigned char SLPST:1; - unsigned char HLTST:1; - unsigned char RSTST:1; - unsigned char EST:1; - unsigned char TABST:1; - unsigned char FMLST:1; - unsigned char NMLST:1; - unsigned char TFST:1; - unsigned char RFST:1; - unsigned char SDST:1; - unsigned char NDST:1; - } BIT; - } STR; - union { - unsigned long LONG; - struct { - unsigned short H; - unsigned short L; - } WORD; - struct { - unsigned char HH; - unsigned char HL; - unsigned char LH; - unsigned char LL; - } BYTE; - struct { - unsigned long TSEG1:4; - unsigned long :2; - unsigned long BRP:10; - unsigned long :2; - unsigned long SJW:2; - unsigned long :1; - unsigned long TSEG2:3; - unsigned long :8; - } BIT; - } BCR; - union { - unsigned char BYTE; - struct { - unsigned char RFEST:1; - unsigned char RFWST:1; - unsigned char RFFST:1; - unsigned char RFMLF:1; - unsigned char RFUST:3; - unsigned char RFE:1; - } BIT; - } RFCR; - unsigned char RFPCR; - union { - unsigned char BYTE; - struct { - unsigned char TFEST:1; - unsigned char TFFST:1; - unsigned char :2; - unsigned char TFUST:3; - unsigned char TFE:1; - } BIT; - } TFCR; - unsigned char TFPCR; - union { - unsigned char BYTE; - struct { - unsigned char BLIE:1; - unsigned char OLIE:1; - unsigned char ORIE:1; - unsigned char BORIE:1; - unsigned char BOEIE:1; - unsigned char EPIE:1; - unsigned char EWIE:1; - unsigned char BEIE:1; - } BIT; - } EIER; - union { - unsigned char BYTE; - struct { - unsigned char BLIF:1; - unsigned char OLIF:1; - unsigned char ORIF:1; - unsigned char BORIF:1; - unsigned char BOEIF:1; - unsigned char EPIF:1; - unsigned char EWIF:1; - unsigned char BEIF:1; - } BIT; - } EIFR; - unsigned char RECR; - unsigned char TECR; - union { - unsigned char BYTE; - struct { - unsigned char EDPM:1; - unsigned char ADEF:1; - unsigned char BE0F:1; - unsigned char BE1F:1; - unsigned char CEF:1; - unsigned char AEF:1; - unsigned char FEF:1; - unsigned char SEF:1; - } BIT; - } ECSR; - unsigned char CSSR; - union { - unsigned char BYTE; - struct { - unsigned char SEST:1; - unsigned char :2; - unsigned char MBNST:5; - } BIT; - } MSSR; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char MBSM:2; - } BIT; - } MSMR; - unsigned short TSR; - unsigned short AFSR; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char TSTM:2; - unsigned char TSTE:1; - } BIT; - } TCR; -}; - -struct st_usb0 { - union { - unsigned short WORD; - struct { - unsigned short :5; - unsigned short SCKE:1; - unsigned short :3; - unsigned short DCFM:1; - unsigned short DRPD:1; - unsigned short DPRPU:1; - unsigned short :3; - unsigned short USBE:1; - } BIT; - } SYSCFG; - unsigned char wk0[2]; - union { - unsigned short WORD; - struct { - unsigned short OVCMON:2; - unsigned short :7; - unsigned short HTACT:1; - unsigned short :3; - unsigned short IDMON:1; - unsigned short LNST:2; - } BIT; - } SYSSTS0; - unsigned char wk1[2]; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short HNPBTOA:1; - unsigned short EXICEN:1; - unsigned short VBUSEN:1; - unsigned short WKUP:1; - unsigned short RWUPE:1; - unsigned short USBRST:1; - unsigned short RESUME:1; - unsigned short UACT:1; - unsigned short :1; - unsigned short RHST:3; - } BIT; - } DVSTCTR0; - unsigned char wk2[10]; - union { - unsigned short WORD; - struct { - unsigned char L; - unsigned char H; - } BYTE; - } CFIFO; - unsigned char wk3[2]; - union { - unsigned short WORD; - struct { - unsigned char L; - unsigned char H; - } BYTE; - } D0FIFO; - unsigned char wk4[2]; - union { - unsigned short WORD; - struct { - unsigned char L; - unsigned char H; - } BYTE; - } D1FIFO; - unsigned char wk5[2]; - union { - unsigned short WORD; - struct { - unsigned short RCNT:1; - unsigned short REW:1; - unsigned short :3; - unsigned short MBW:1; - unsigned short :1; - unsigned short BIGEND:1; - unsigned short :2; - unsigned short ISEL:1; - unsigned short :1; - unsigned short CURPIPE:4; - } BIT; - } CFIFOSEL; - union { - unsigned short WORD; - struct { - unsigned short BVAL:1; - unsigned short BCLR:1; - unsigned short FRDY:1; - unsigned short :4; - unsigned short TLN:1; - unsigned short DTLN:8; - } BIT; - } CFIFOCTR; - unsigned char wk6[4]; - union { - unsigned short WORD; - struct { - unsigned short RCNT:1; - unsigned short REW:1; - unsigned short DCLRM:1; - unsigned short DREQE:1; - unsigned short :1; - unsigned short MBW:1; - unsigned short :1; - unsigned short BIGEND:1; - unsigned short :4; - unsigned short CURPIPE:4; - } BIT; - } D0FIFOSEL; - union { - unsigned short WORD; - struct { - unsigned short BVAL:1; - unsigned short BCLR:1; - unsigned short FRDY:1; - unsigned short :4; - unsigned short TLN:1; - unsigned short DTLN:8; - } BIT; - } D0FIFOCTR; - union { - unsigned short WORD; - struct { - unsigned short RCNT:1; - unsigned short REW:1; - unsigned short DCLRM:1; - unsigned short DREQE:1; - unsigned short :1; - unsigned short MBW:1; - unsigned short :1; - unsigned short BIGEND:1; - unsigned short :4; - unsigned short CURPIPE:4; - } BIT; - } D1FIFOSEL; - union { - unsigned short WORD; - struct { - unsigned short BVAL:1; - unsigned short BCLR:1; - unsigned short FRDY:1; - unsigned short :4; - unsigned short TLN:1; - unsigned short DTLN:8; - } BIT; - } D1FIFOCTR; - union { - unsigned short WORD; - struct { - unsigned short VBSE:1; - unsigned short RSME:1; - unsigned short SOFE:1; - unsigned short DVSE:1; - unsigned short CTRE:1; - unsigned short BEMPE:1; - unsigned short NRDYE:1; - unsigned short BRDYE:1; - unsigned short :8; - } BIT; - } INTENB0; - union { - unsigned short WORD; - struct { - unsigned short OVRCRE:1; - unsigned short BCHGE:1; - unsigned short :1; - unsigned short DTCHE:1; - unsigned short ATTCHE:1; - unsigned short :4; - unsigned short EOFERRE:1; - unsigned short SIGNE:1; - unsigned short SACKE:1; - unsigned short :4; - } BIT; - } INTENB1; - unsigned char wk7[2]; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short PIPE9BRDYE:1; - unsigned short PIPE8BRDYE:1; - unsigned short PIPE7BRDYE:1; - unsigned short PIPE6BRDYE:1; - unsigned short PIPE5BRDYE:1; - unsigned short PIPE4BRDYE:1; - unsigned short PIPE3BRDYE:1; - unsigned short PIPE2BRDYE:1; - unsigned short PIPE1BRDYE:1; - unsigned short PIPE0BRDYE:1; - } BIT; - } BRDYENB; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short PIPE9BRDYE:1; - unsigned short PIPE8BRDYE:1; - unsigned short PIPE7BRDYE:1; - unsigned short PIPE6BRDYE:1; - unsigned short PIPE5BRDYE:1; - unsigned short PIPE4BRDYE:1; - unsigned short PIPE3BRDYE:1; - unsigned short PIPE2BRDYE:1; - unsigned short PIPE1BRDYE:1; - unsigned short PIPE0BRDYE:1; - } BIT; - } NRDYENB; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short PIPE9BEMPE:1; - unsigned short PIPE8BEMPE:1; - unsigned short PIPE7BEMPE:1; - unsigned short PIPE6BEMPE:1; - unsigned short PIPE5BEMPE:1; - unsigned short PIPE4BEMPE:1; - unsigned short PIPE3BEMPE:1; - unsigned short PIPE2BEMPE:1; - unsigned short PIPE1BEMPE:1; - unsigned short PIPE0BEMPE:1; - } BIT; - } BEMPENB; - union { - unsigned short WORD; - struct { - unsigned short :7; - unsigned short TRNENSEL:1; - unsigned short :1; - unsigned short BRDYM:1; - unsigned short :1; - unsigned short EDGESTS:1; - unsigned short :4; - } BIT; - } SOFCFG; - unsigned char wk8[2]; - union { - unsigned short WORD; - struct { - unsigned short VBINT:1; - unsigned short RESM:1; - unsigned short SOFR:1; - unsigned short DVST:1; - unsigned short CTRT:1; - unsigned short BEMP:1; - unsigned short NRDY:1; - unsigned short BRDY:1; - unsigned short VBSTS:1; - unsigned short DVSQ:3; - unsigned short VALID:1; - unsigned short CTSQ:3; - } BIT; - } INTSTS0; - union { - unsigned short WORD; - struct { - unsigned short OVRCR:1; - unsigned short BCHG:1; - unsigned short :1; - unsigned short DTCH:1; - unsigned short ATTCH:1; - unsigned short :4; - unsigned short EOFERR:1; - unsigned short SIGN:1; - unsigned short SACK:1; - unsigned short :4; - } BIT; - } INTSTS1; - unsigned char wk9[2]; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short PIPE9BRDY:1; - unsigned short PIPE8BRDY:1; - unsigned short PIPE7BRDY:1; - unsigned short PIPE6BRDY:1; - unsigned short PIPE5BRDY:1; - unsigned short PIPE4BRDY:1; - unsigned short PIPE3BRDY:1; - unsigned short PIPE2BRDY:1; - unsigned short PIPE1BRDY:1; - unsigned short PIPE0BRDY:1; - } BIT; - } BRDYSTS; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short PIPE9BRDY:1; - unsigned short PIPE8BRDY:1; - unsigned short PIPE7BRDY:1; - unsigned short PIPE6BRDY:1; - unsigned short PIPE5BRDY:1; - unsigned short PIPE4BRDY:1; - unsigned short PIPE3BRDY:1; - unsigned short PIPE2BRDY:1; - unsigned short PIPE1BRDY:1; - unsigned short PIPE0BRDY:1; - } BIT; - } NRDYSTS; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short PIPE9BENP:1; - unsigned short PIPE8BENP:1; - unsigned short PIPE7BENP:1; - unsigned short PIPE6BENP:1; - unsigned short PIPE5BENP:1; - unsigned short PIPE4BENP:1; - unsigned short PIPE3BENP:1; - unsigned short PIPE2BENP:1; - unsigned short PIPE1BENP:1; - unsigned short PIPE0BENP:1; - } BIT; - } BEMPSTS; - union { - unsigned short WORD; - struct { - unsigned short OVRN:1; - unsigned short CRCE:1; - unsigned short :3; - unsigned short FRNM:11; - } BIT; - } FRMNUM; - union { - unsigned short WORD; - struct { - unsigned short DVCHG:1; - unsigned short :15; - } BIT; - } DVCHGR; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short STSRECOV:4; - unsigned short :1; - unsigned short USBADDR:7; - } BIT; - } USBADDR; - unsigned char wk10[2]; - union { - unsigned short WORD; - struct { - unsigned short BREQUEST:8; - unsigned short BMREQUESTTYPE:8; - } BIT; - } USBREQ; - unsigned short USBVAL; - unsigned short USBINDX; - unsigned short USBLENG; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short SHTNAK:1; - unsigned short :2; - unsigned short DIR:1; - unsigned short :4; - } BIT; - } DCPCFG; - union { - unsigned short WORD; - struct { - unsigned short DEVSEL:4; - unsigned short :5; - unsigned short MXPS:7; - } BIT; - } DCPMAXP; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short SUREQ:1; - unsigned short :2; - unsigned short SUREQCLR:1; - unsigned short :2; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :2; - unsigned short CCPL:1; - unsigned short PID:2; - } BIT; - } DCPCTR; - unsigned char wk11[2]; - union { - unsigned short WORD; - struct { - unsigned short :12; - unsigned short PIPESEL:4; - } BIT; - } PIPESEL; - unsigned char wk12[2]; - union { - unsigned short WORD; - struct { - unsigned short TYPE:2; - unsigned short :3; - unsigned short BFRE:1; - unsigned short DBLB:1; - unsigned short :1; - unsigned short SHTNAK:1; - unsigned short :2; - unsigned short DIR:1; - unsigned short EPNUM:4; - } BIT; - } PIPECFG; - unsigned char wk13[2]; - union { - unsigned short WORD; - struct { - unsigned short DEVSEL:4; - unsigned short :3; - unsigned short XPS:1; - unsigned short MXPS:8; - } BIT; - } PIPEMAXP; - union { - unsigned short WORD; - struct { - unsigned short :3; - unsigned short IFIS:1; - unsigned short :9; - unsigned short IITV:3; - } BIT; - } PIPEPERI; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short INBUFM:1; - unsigned short :3; - unsigned short ATREPM:1; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE1CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short INBUFM:1; - unsigned short :3; - unsigned short ATREPM:1; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE2CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short INBUFM:1; - unsigned short :3; - unsigned short ATREPM:1; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE3CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short INBUFM:1; - unsigned short :3; - unsigned short ATREPM:1; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE4CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short INBUFM:1; - unsigned short :3; - unsigned short ATREPM:1; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE5CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short :5; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE6CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short :5; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE7CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short :5; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE8CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short :5; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE9CTR; - unsigned char wk14[14]; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short TRENB:1; - unsigned short TRCLR:1; - unsigned short :8; - } BIT; - } PIPE1TRE; - unsigned short PIPE1TRN; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short TRENB:1; - unsigned short TRCLR:1; - unsigned short :8; - } BIT; - } PIPE2TRE; - unsigned short PIPE2TRN; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short TRENB:1; - unsigned short TRCLR:1; - unsigned short :8; - } BIT; - } PIPE3TRE; - unsigned short PIPE3TRN; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short TRENB:1; - unsigned short TRCLR:1; - unsigned short :8; - } BIT; - } PIPE4TRE; - unsigned short PIPE4TRN; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short TRENB:1; - unsigned short TRCLR:1; - unsigned short :8; - } BIT; - } PIPE5TRE; - unsigned short PIPE5TRN; - unsigned char wk15[44]; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short USBSPD:2; - unsigned short :6; - } BIT; - } DEVADD0; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short USBSPD:2; - unsigned short :6; - } BIT; - } DEVADD1; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short USBSPD:2; - unsigned short :6; - } BIT; - } DEVADD2; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short USBSPD:2; - unsigned short :6; - } BIT; - } DEVADD3; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short USBSPD:2; - unsigned short :6; - } BIT; - } DEVADD4; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short USBSPD:2; - unsigned short :6; - } BIT; - } DEVADD5; -}; - -struct st_usb { - union { - unsigned long LONG; - struct { - unsigned long DVSTS1:1; - unsigned long :1; - unsigned long DOVCB1:1; - unsigned long DOVCA1:1; - unsigned long :2; - unsigned long DM1:1; - unsigned long DP1:1; - unsigned long DVBSTS0:1; - unsigned long :1; - unsigned long DOVCB0:1; - unsigned long DOVCA0:1; - unsigned long :2; - unsigned long DM0:1; - unsigned long DP0:1; - unsigned long :3; - unsigned long FIXPHY1:1; - unsigned long :3; - unsigned long SRPC1:1; - unsigned long :3; - unsigned long FIXPHY0:1; - unsigned long :3; - unsigned long SRPC0:1; - } BIT; - } DPUSR0R; - union { - unsigned long LONG; - struct { - unsigned long DVBINT1:1; - unsigned long :1; - unsigned long DOVRCRB1:1; - unsigned long DOVRCRA1:1; - unsigned long :2; - unsigned long DMINT1:1; - unsigned long DPINT1:1; - unsigned long DVBINT0:1; - unsigned long :1; - unsigned long DOVRCRB0:1; - unsigned long DOVRCRA0:1; - unsigned long :2; - unsigned long DMINT0:1; - unsigned long DPINT0:1; - unsigned long DVBSE1:1; - unsigned long :1; - unsigned long DOVRCRBE1:1; - unsigned long DOVRCRAE1:1; - unsigned long :2; - unsigned long DMINTE1:1; - unsigned long DPINTE1:1; - unsigned long DVBSE0:1; - unsigned long :1; - unsigned long DOVRCRBE0:1; - unsigned long DOVRCRAE0:1; - unsigned long :2; - unsigned long DMINTE0:1; - unsigned long DPINTE0:1; - } BIT; - } DPUSR1R; -}; - -struct st_edmac { - union { - unsigned long LONG; - struct { - unsigned long :25; - unsigned long DE:1; - unsigned long DL:2; - unsigned long :3; - unsigned long SWR:1; - } BIT; - } EDMR; - unsigned char wk0[4]; - union { - unsigned long LONG; - struct { - unsigned long :31; - unsigned long TR:1; - } BIT; - } EDTRR; - unsigned char wk1[4]; - union { - unsigned long LONG; - struct { - unsigned long :31; - unsigned long RR:1; - } BIT; - } EDRRR; - unsigned char wk2[4]; - void *TDLAR; - unsigned char wk3[4]; - void *RDLAR; - unsigned char wk4[4]; - union { - unsigned long LONG; - struct { - unsigned long :1; - unsigned long TWB:1; - unsigned long :3; - unsigned long TABT:1; - unsigned long RABT:1; - unsigned long RFCOF:1; - unsigned long ADE:1; - unsigned long ECI:1; - unsigned long TC:1; - unsigned long TDE:1; - unsigned long TFUF:1; - unsigned long FR:1; - unsigned long RDE:1; - unsigned long RFOF:1; - unsigned long :4; - unsigned long CND:1; - unsigned long DLC:1; - unsigned long CD:1; - unsigned long TRO:1; - unsigned long RMAF:1; - unsigned long :2; - unsigned long RRF:1; - unsigned long RTLF:1; - unsigned long RTSF:1; - unsigned long PRE:1; - unsigned long CERF:1; - } BIT; - } EESR; - unsigned char wk5[4]; - union { - unsigned long LONG; - struct { - unsigned long :1; - unsigned long TWBIP:1; - unsigned long :3; - unsigned long TABTIP:1; - unsigned long RABTIP:1; - unsigned long RFCOFIP:1; - unsigned long ADEIP:1; - unsigned long ECIIP:1; - unsigned long TCIP:1; - unsigned long TDEIP:1; - unsigned long TFUFIP:1; - unsigned long FRIP:1; - unsigned long RDEIP:1; - unsigned long RFOFIP:1; - unsigned long :4; - unsigned long CNDIP:1; - unsigned long DLCIP:1; - unsigned long CDIP:1; - unsigned long TROIP:1; - unsigned long RMAFIP:1; - unsigned long :2; - unsigned long RRFIP:1; - unsigned long RTLFIP:1; - unsigned long RTSFIP:1; - unsigned long PREIP:1; - unsigned long CERFIP:1; - } BIT; - } EESIPR; - unsigned char wk6[4]; - union { - unsigned long LONG; - struct { - unsigned long :20; - unsigned long CNDCE:1; - unsigned long DLCCE:1; - unsigned long CDCE:1; - unsigned long TROCE:1; - unsigned long RMAFCE:1; - unsigned long :2; - unsigned long RRFCE:1; - unsigned long RTLFCE:1; - unsigned long RTSFCE:1; - unsigned long PRECE:1; - unsigned long CERFCE:1; - } BIT; - } TRSCER; - unsigned char wk7[4]; - union { - unsigned long LONG; - struct { - unsigned long :16; - unsigned long MFC:16; - } BIT; - } RMFCR; - unsigned char wk8[4]; - union { - unsigned long LONG; - struct { - unsigned long :21; - unsigned long TFT:11; - } BIT; - } TFTR; - unsigned char wk9[4]; - union { - unsigned long LONG; - struct { - unsigned long :19; - unsigned long TFD:5; - unsigned long :3; - unsigned long RFD:5; - } BIT; - } FDR; - unsigned char wk10[4]; - union { - unsigned long LONG; - struct { - unsigned long :30; - unsigned long RNC:1; - unsigned long RNR:1; - } BIT; - } RMCR; - unsigned char wk11[8]; - union { - unsigned long LONG; - struct { - unsigned long :16; - unsigned long UNDER:16; - } BIT; - } TFUCR; - union { - unsigned long LONG; - struct { - unsigned long :16; - unsigned long OVER:16; - } BIT; - } RFOCR; - union { - unsigned long LONG; - struct { - unsigned long :31; - unsigned long TLB:1; - } BIT; - } IOSR; - union { - unsigned long LONG; - struct { - unsigned long :13; - unsigned long RFFO:3; - unsigned long :13; - unsigned long RFDO:3; - } BIT; - } FCFTR; - unsigned char wk12[4]; - union { - unsigned long LONG; - struct { - unsigned long :14; - unsigned long PADS:2; - unsigned long :10; - unsigned long PADR:6; - } BIT; - } RPADIR; - union { - unsigned long LONG; - struct { - unsigned long :27; - unsigned long TIM:1; - unsigned long :3; - unsigned long TIS:1; - } BIT; - } TRIMD; - unsigned char wk13[72]; - void *RBWAR; - void *RDFAR; - unsigned char wk14[4]; - void *TBRAR; - void *TDFAR; -}; - -struct st_etherc { - union { - unsigned long LONG; - struct { - unsigned long :11; - unsigned long TPC:1; - unsigned long ZPE:1; - unsigned long PFR:1; - unsigned long RXF:1; - unsigned long TXF:1; - unsigned long :3; - unsigned long PRCEF:1; - unsigned long :2; - unsigned long MPDE:1; - unsigned long :2; - unsigned long RE:1; - unsigned long TE:1; - unsigned long :1; - unsigned long ILB:1; - unsigned long RTM:1; - unsigned long DM:1; - unsigned long PRM:1; - } BIT; - } ECMR; - unsigned char wk0[4]; - union { - unsigned long LONG; - struct { - unsigned long :20; - unsigned long RFL:12; - } BIT; - } RFLR; - unsigned char wk1[4]; - union { - unsigned long LONG; - struct { - unsigned long :26; - unsigned long BFR:1; - unsigned long PSRTO:1; - unsigned long :1; - unsigned long LCHNG:1; - unsigned long MPD:1; - unsigned long ICD:1; - } BIT; - } ECSR; - unsigned char wk2[4]; - union { - unsigned long LONG; - struct { - unsigned long :26; - unsigned long BFSIPR:1; - unsigned long PSRTOIP:1; - unsigned long :1; - unsigned long LCHNGIP:1; - unsigned long MPDIP:1; - unsigned long ICDIP:1; - } BIT; - } ECSIPR; - unsigned char wk3[4]; - union { - unsigned long LONG; - struct { - unsigned long :28; - unsigned long MDI:1; - unsigned long MDO:1; - unsigned long MMD:1; - unsigned long MDC:1; - } BIT; - } PIR; - unsigned char wk4[4]; - union { - unsigned long LONG; - struct { - unsigned long :31; - unsigned long LMON:1; - } BIT; - } PSR; - unsigned char wk5[20]; - union { - unsigned long LONG; - struct { - unsigned long :12; - unsigned long RMD:20; - } BIT; - } RDMLR; - unsigned char wk6[12]; - union { - unsigned long LONG; - struct { - unsigned long :27; - unsigned long IPG:5; - } BIT; - } IPGR; - union { - unsigned long LONG; - struct { - unsigned long :16; - unsigned long AP:16; - } BIT; - } APR; - union { - unsigned long LONG; - struct { - unsigned long :16; - unsigned long MP:16; - } BIT; - } MPR; - unsigned char wk7[4]; - union { - unsigned long LONG; - struct { - unsigned long :24; - unsigned long RPAUSE:8; - } BIT; - } RFCF; - union { - unsigned long LONG; - struct { - unsigned long :16; - unsigned long TPAUSE:16; - } BIT; - } TPAUSER; - union { - unsigned long LONG; - struct { - unsigned long :24; - unsigned long TXP:8; - } BIT; - } TPAUSECR; - union { - unsigned long LONG; - struct { - unsigned long :16; - unsigned long BCF:16; - } BIT; - } BCFRR; - unsigned char wk8[80]; - unsigned long MAHR; - unsigned char wk9[4]; - union { - unsigned long LONG; - struct { - unsigned long :16; - unsigned long MA:16; - } BIT; - } MALR; - unsigned char wk10[4]; - unsigned long TROCR; - unsigned long CDCR; - unsigned long LCCR; - unsigned long CNDCR; - unsigned char wk11[4]; - unsigned long CEFCR; - unsigned long FRECR; - unsigned long TSFRCR; - unsigned long TLFRCR; - unsigned long RFCR; - unsigned long MAFCR; -}; - -enum enum_ir { -IR_BSC_BUSERR=16, -IR_FCU_FIFERR=21,IR_FCU_FRDYI=23, -IR_ICU_SWINT=27, -IR_CMT0_CMI0, -IR_CMT1_CMI1, -IR_CMT2_CMI2, -IR_CMT3_CMI3, -IR_ETHER_EINT, -IR_USB0_D0FIFO0=36,IR_USB0_D1FIFO0,IR_USB0_USBI0, -IR_USB1_D0FIFO1=40,IR_USB1_D1FIFO1,IR_USB1_USBI1, -IR_RSPI0_SPEI0=44,IR_RSPI0_SPRI0,IR_RSPI0_SPTI0,IR_RSPI0_SPII0, -IR_RSPI1_SPEI1,IR_RSPI1_SPRI1,IR_RSPI1_SPTI1,IR_RSPI1_SPII1, -IR_CAN0_ERS0=56,IR_CAN0_RXF0,IR_CAN0_TXF0,IR_CAN0_RXM0,IR_CAN0_TXM0, -IR_RTC_PRD=62,IR_RTC_CUP, -IR_ICU_IRQ0,IR_ICU_IRQ1,IR_ICU_IRQ2,IR_ICU_IRQ3,IR_ICU_IRQ4,IR_ICU_IRQ5,IR_ICU_IRQ6,IR_ICU_IRQ7,IR_ICU_IRQ8,IR_ICU_IRQ9,IR_ICU_IRQ10,IR_ICU_IRQ11,IR_ICU_IRQ12,IR_ICU_IRQ13,IR_ICU_IRQ14,IR_ICU_IRQ15, -IR_USB_USBR0=90,IR_USB_USBR1, -IR_RTC_ALM, -IR_WDT_WOVI=96, -IR_AD0_ADI0=98, -IR_AD1_ADI1, -IR_S12AD_ADI=102, -IR_MTU0_TGIA0=114,IR_MTU0_TGIB0,IR_MTU0_TGIC0,IR_MTU0_TGID0,IR_MTU0_TCIV0,IR_MTU0_TGIE0,IR_MTU0_TGIF0, -IR_MTU1_TGIA1,IR_MTU1_TGIB1,IR_MTU1_TCIV1,IR_MTU1_TCIU1, -IR_MTU2_TGIA2,IR_MTU2_TGIB2,IR_MTU2_TCIV2,IR_MTU2_TCIU2, -IR_MTU3_TGIA3,IR_MTU3_TGIB3,IR_MTU3_TGIC3,IR_MTU3_TGID3,IR_MTU3_TCIV3, -IR_MTU4_TGIA4,IR_MTU4_TGIB4,IR_MTU4_TGIC4,IR_MTU4_TGID4,IR_MTU4_TCIV4, -IR_MTU5_TGIU5,IR_MTU5_TGIV5,IR_MTU5_TGIW5, -IR_MTU6_TGIA6,IR_MTU6_TGIB6,IR_MTU6_TGIC6,IR_MTU6_TGID6,IR_MTU6_TCIV6,IR_MTU6_TGIE6,IR_MTU6_TGIF6, -IR_MTU7_TGIA7,IR_MTU7_TGIB7,IR_MTU7_TCIV7,IR_MTU7_TCIU7, -IR_MTU8_TGIA8,IR_MTU8_TGIB8,IR_MTU8_TCIV8,IR_MTU8_TCIU8, -IR_MTU9_TGIA9,IR_MTU9_TGIB9,IR_MTU9_TGIC9,IR_MTU9_TGID9,IR_MTU9_TCIV9, -IR_MTU10_TGIA10,IR_MTU10_TGIB10,IR_MTU10_TGIC10,IR_MTU10_TGID10,IR_MTU10_TCIV10, -IR_MTU11_TGIU11,IR_MTU11_TGIV11,IR_MTU11_TGIW11, -IR_POE_OEI1,IR_POE_OEI2,IR_POE_OEI3,IR_POE_OEI4, -IR_TMR0_CMIA0,IR_TMR0_CMIB0,IR_TMR0_OVI0, -IR_TMR1_CMIA1,IR_TMR1_CMIB1,IR_TMR1_OVI1, -IR_TMR2_CMIA2,IR_TMR2_CMIB2,IR_TMR2_OVI2, -IR_TMR3_CMIA3,IR_TMR3_CMIB3,IR_TMR3_OVI3, -IR_DMACA_DMAC0I=198,IR_DMACA_DMAC1I,IR_DMACA_DMAC2I,IR_DMACA_DMAC3I, -IR_EXDMAC_EXDMAC0I,IR_EXDMAC_EXDMAC1I, -IR_SCI0_ERI0=214,IR_SCI0_RXI0,IR_SCI0_TXI0,IR_SCI0_TEI0, -IR_SCI1_ERI1,IR_SCI1_RXI1,IR_SCI1_TXI1,IR_SCI1_TEI1, -IR_SCI2_ERI2,IR_SCI2_RXI2,IR_SCI2_TXI2,IR_SCI2_TEI2, -IR_SCI3_ERI3,IR_SCI3_RXI3,IR_SCI3_TXI3,IR_SCI3_TEI3, -IR_SCI5_ERI5=234,IR_SCI5_RXI5,IR_SCI5_TXI5,IR_SCI5_TEI5, -IR_SCI6_ERI6,IR_SCI6_RXI6,IR_SCI6_TXI6,IR_SCI6_TEI6, -IR_RIIC0_ICEEI0=246,IR_RIIC0_ICRXI0,IR_RIIC0_ICTXI0,IR_RIIC0_ICTEI0, -IR_RIIC1_ICEEI1,IR_RIIC1_ICRXI1,IR_RIIC1_ICTXI1,IR_RIIC1_ICTEI1 -}; - -enum enum_dtce { -DTCE_BSC_BUSERR=16, -DTCE_FCU_FIFERR=21,DTCE_FCU_FRDYI=23, -DTCE_ICU_SWINT=27, -DTCE_CMT0_CMI0, -DTCE_CMT1_CMI1, -DTCE_CMT2_CMI2, -DTCE_CMT3_CMI3, -DTCE_ETHER_EINT, -DTCE_USB0_D0FIFO0=36,DTCE_USB0_D1FIFO0,DTCE_USB0_USBI0, -DTCE_USB1_D0FIFO1=40,DTCE_USB1_D1FIFO1,DTCE_USB1_USBI1, -DTCE_RSPI0_SPEI0=44,DTCE_RSPI0_SPRI0,DTCE_RSPI0_SPTI0,DTCE_RSPI0_SPII0, -DTCE_RSPI1_SPEI1,DTCE_RSPI1_SPRI1,DTCE_RSPI1_SPTI1,DTCE_RSPI1_SPII1, -DTCE_CAN0_ERS0=56,DTCE_CAN0_RXF0,DTCE_CAN0_TXF0,DTCE_CAN0_RXM0,DTCE_CAN0_TXM0, -DTCE_RTC_PRD=62,DTCE_RTC_CUP, -DTCE_ICU_IRQ0,DTCE_ICU_IRQ1,DTCE_ICU_IRQ2,DTCE_ICU_IRQ3,DTCE_ICU_IRQ4,DTCE_ICU_IRQ5,DTCE_ICU_IRQ6,DTCE_ICU_IRQ7,DTCE_ICU_IRQ8,DTCE_ICU_IRQ9,DTCE_ICU_IRQ10,DTCE_ICU_IRQ11,DTCE_ICU_IRQ12,DTCE_ICU_IRQ13,DTCE_ICU_IRQ14,DTCE_ICU_IRQ15, -DTCE_USB_USBR0=90,DTCE_USB_USBR1, -DTCE_RTC_ALM, -DTCE_WDT_WOVI=96, -DTCE_AD0_ADI0=98, -DTCE_AD1_ADI1, -DTCE_S12AD_ADI=102, -DTCE_MTU0_TGIA0=114,DTCE_MTU0_TGIB0,DTCE_MTU0_TGIC0,DTCE_MTU0_TGID0,DTCE_MTU0_TCIV0,DTCE_MTU0_TGIE0,DTCE_MTU0_TGIF0, -DTCE_MTU1_TGIA1,DTCE_MTU1_TGIB1,DTCE_MTU1_TCIV1,DTCE_MTU1_TCIU1, -DTCE_MTU2_TGIA2,DTCE_MTU2_TGIB2,DTCE_MTU2_TCIV2,DTCE_MTU2_TCIU2, -DTCE_MTU3_TGIA3,DTCE_MTU3_TGIB3,DTCE_MTU3_TGIC3,DTCE_MTU3_TGID3,DTCE_MTU3_TCIV3, -DTCE_MTU4_TGIA4,DTCE_MTU4_TGIB4,DTCE_MTU4_TGIC4,DTCE_MTU4_TGID4,DTCE_MTU4_TCIV4, -DTCE_MTU5_TGIU5,DTCE_MTU5_TGIV5,DTCE_MTU5_TGIW5, -DTCE_MTU6_TGIA6,DTCE_MTU6_TGIB6,DTCE_MTU6_TGIC6,DTCE_MTU6_TGID6,DTCE_MTU6_TCIV6,DTCE_MTU6_TGIE6,DTCE_MTU6_TGIF6, -DTCE_MTU7_TGIA7,DTCE_MTU7_TGIB7,DTCE_MTU7_TCIV7,DTCE_MTU7_TCIU7, -DTCE_MTU8_TGIA8,DTCE_MTU8_TGIB8,DTCE_MTU8_TCIV8,DTCE_MTU8_TCIU8, -DTCE_MTU9_TGIA9,DTCE_MTU9_TGIB9,DTCE_MTU9_TGIC9,DTCE_MTU9_TGID9,DTCE_MTU9_TCIV9, -DTCE_MTU10_TGIA10,DTCE_MTU10_TGIB10,DTCE_MTU10_TGIC10,DTCE_MTU10_TGID10,DTCE_MTU10_TCIV10, -DTCE_MTU11_TGIU11,DTCE_MTU11_TGIV11,DTCE_MTU11_TGIW11, -DTCE_POE_OEI1,DTCE_POE_OEI2,DTCE_POE_OEI3,DTCE_POE_OEI4, -DTCE_TMR0_CMIA0,DTCE_TMR0_CMIB0,DTCE_TMR0_OVI0, -DTCE_TMR1_CMIA1,DTCE_TMR1_CMIB1,DTCE_TMR1_OVI1, -DTCE_TMR2_CMIA2,DTCE_TMR2_CMIB2,DTCE_TMR2_OVI2, -DTCE_TMR3_CMIA3,DTCE_TMR3_CMIB3,DTCE_TMR3_OVI3, -DTCE_DMACA_DMAC0I=198,DTCE_DMACA_DMAC1I,DTCE_DMACA_DMAC2I,DTCE_DMACA_DMAC3I, -DTCE_EXDMAC_EXDMAC0I,DTCE_EXDMAC_EXDMAC1I, -DTCE_SCI0_ERI0=214,DTCE_SCI0_RXI0,DTCE_SCI0_TXI0,DTCE_SCI0_TEI0, -DTCE_SCI1_ERI1,DTCE_SCI1_RXI1,DTCE_SCI1_TXI1,DTCE_SCI1_TEI1, -DTCE_SCI2_ERI2,DTCE_SCI2_RXI2,DTCE_SCI2_TXI2,DTCE_SCI2_TEI2, -DTCE_SCI3_ERI3,DTCE_SCI3_RXI3,DTCE_SCI3_TXI3,DTCE_SCI3_TEI3, -DTCE_SCI5_ERI5=234,DTCE_SCI5_RXI5,DTCE_SCI5_TXI5,DTCE_SCI5_TEI5, -DTCE_SCI6_ERI6,DTCE_SCI6_RXI6,DTCE_SCI6_TXI6,DTCE_SCI6_TEI6, -DTCE_RIIC0_ICEEI0=246,DTCE_RIIC0_ICRXI0,DTCE_RIIC0_ICTXI0,DTCE_RIIC0_ICTEI0, -DTCE_RIIC1_ICEEI1,DTCE_RIIC1_ICRXI1,DTCE_RIIC1_ICTXI1,DTCE_RIIC1_ICTEI1 -}; - -enum enum_ier { -IER_BSC_BUSERR=0x02, -IER_FCU_FIFERR=0x02,IER_FCU_FRDYI=0x02, -IER_ICU_SWINT=0x03, -IER_CMT0_CMI0=0x03, -IER_CMT1_CMI1=0x03, -IER_CMT2_CMI2=0x03, -IER_CMT3_CMI3=0x03, -IER_ETHER_EINT=0x04, -IER_USB0_D0FIFO0=0x04,IER_USB0_D1FIFO0=0x04,IER_USB0_USBI0=0x04, -IER_USB1_D0FIFO1=0x05,IER_USB1_D1FIFO1=0x05,IER_USB1_USBI1=0x05, -IER_RSPI0_SPEI0=0x05,IER_RSPI0_SPRI0=0x05,IER_RSPI0_SPTI0=0x05,IER_RSPI0_SPII0=0x05, -IER_RSPI1_SPEI1=0x06,IER_RSPI1_SPRI1=0x06,IER_RSPI1_SPTI1=0x06,IER_RSPI1_SPII1=0x06, -IER_CAN0_ERS0=0x07,IER_CAN0_RXF0=0x07,IER_CAN0_TXF0=0x07,IER_CAN0_RXM0=0x07,IER_CAN0_TXM0=0x07, -IER_RTC_PRD=0x07,IER_RTC_CUP=0x07, -IER_ICU_IRQ0=0x08,IER_ICU_IRQ1=0x08,IER_ICU_IRQ2=0x08,IER_ICU_IRQ3=0x08,IER_ICU_IRQ4=0x08,IER_ICU_IRQ5=0x08,IER_ICU_IRQ6=0x08,IER_ICU_IRQ7=0x08,IER_ICU_IRQ8=0x09,IER_ICU_IRQ9=0x09,IER_ICU_IRQ10=0x09,IER_ICU_IRQ11=0x09,IER_ICU_IRQ12=0x09,IER_ICU_IRQ13=0x09,IER_ICU_IRQ14=0x09,IER_ICU_IRQ15=0x09, -IER_USB_USBR0=0x0B,IER_USB_USBR1=0x0B, -IER_RTC_ALM=0x0B, -IER_WDT_WOVI=0x0C, -IER_AD0_ADI0=0x0C, -IER_AD1_ADI1=0x0C, -IER_S12AD_ADI=0x0C, -IER_MTU0_TGIA0=0x0E,IER_MTU0_TGIB0=0x0E,IER_MTU0_TGIC0=0x0E,IER_MTU0_TGID0=0x0E,IER_MTU0_TCIV0=0x0E,IER_MTU0_TGIE0=0x0E,IER_MTU0_TGIF0=0x0F, -IER_MTU1_TGIA1=0x0F,IER_MTU1_TGIB1=0x0F,IER_MTU1_TCIV1=0x0F,IER_MTU1_TCIU1=0x0F, -IER_MTU2_TGIA2=0x0F,IER_MTU2_TGIB2=0x0F,IER_MTU2_TCIV2=0x0F,IER_MTU2_TCIU2=0x10, -IER_MTU3_TGIA3=0x10,IER_MTU3_TGIB3=0x10,IER_MTU3_TGIC3=0x10,IER_MTU3_TGID3=0x10,IER_MTU3_TCIV3=0x10, -IER_MTU4_TGIA4=0x10,IER_MTU4_TGIB4=0x10,IER_MTU4_TGIC4=0x11,IER_MTU4_TGID4=0x11,IER_MTU4_TCIV4=0x11, -IER_MTU5_TGIU5=0x11,IER_MTU5_TGIV5=0x11,IER_MTU5_TGIW5=0x10, -IER_MTU6_TGIA6=0x11,IER_MTU6_TGIB6=0x11,IER_MTU6_TGIC6=0x12,IER_MTU6_TGID6=0x12,IER_MTU6_TCIV6=0x12,IER_MTU6_TGIE6=0x12,IER_MTU6_TGIF6=0x12, -IER_MTU7_TGIA7=0x12,IER_MTU7_TGIB7=0x12,IER_MTU7_TCIV7=0x12,IER_MTU7_TCIU7=0x13, -IER_MTU8_TGIA8=0x13,IER_MTU8_TGIB8=0x13,IER_MTU8_TCIV8=0x13,IER_MTU8_TCIU8=0x13, -IER_MTU9_TGIA9=0x13,IER_MTU9_TGIB9=0x13,IER_MTU9_TGIC9=0x13,IER_MTU9_TGID9=0x14,IER_MTU9_TCIV9=0x14, -IER_MTU10_TGIA10=0x14,IER_MTU10_TGIB10=0x14,IER_MTU10_TGIC10=0x14,IER_MTU10_TGID10=0x14,IER_MTU10_TCIV10=0x14, -IER_MTU11_TGIU11=0x14,IER_MTU11_TGIV11=0x15,IER_MTU11_TGIW11=0x15, -IER_POE_OEI1=0x15,IER_POE_OEI2=0x15,IER_POE_OEI3=0x15,IER_POE_OEI4=0x15, -IER_TMR0_CMIA0=0x15,IER_TMR0_CMIB0=0x15,IER_TMR0_OVI0=0x16, -IER_TMR1_CMIA1=0x16,IER_TMR1_CMIB1=0x16,IER_TMR1_OVI1=0x16, -IER_TMR2_CMIA2=0x16,IER_TMR2_CMIB2=0x16,IER_TMR2_OVI2=0x16, -IER_TMR3_CMIA3=0x16,IER_TMR3_CMIB3=0x17,IER_TMR3_OVI3=0x17, -IER_DMACA_DMAC0I=0x18,IER_DMACA_DMAC1I=0x18,IER_DMACA_DMAC2I=0x19,IER_DMACA_DMAC3I=0x19, -IER_EXDMAC_EXDMAC0I=0x19,IER_EXDMAC_EXDMAC1I=0x19, -IER_SCI0_ERI0=0x1A,IER_SCI0_RXI0=0x1A,IER_SCI0_TXI0=0x1B,IER_SCI0_TEI0=0x1B, -IER_SCI1_ERI1=0x1B,IER_SCI1_RXI1=0x1B,IER_SCI1_TXI1=0x1B,IER_SCI1_TEI1=0x1B, -IER_SCI2_ERI2=0x1B,IER_SCI2_RXI2=0x1B,IER_SCI2_TXI2=0x1C,IER_SCI2_TEI2=0x1C, -IER_SCI3_ERI3=0x1C,IER_SCI3_RXI3=0x1C,IER_SCI3_TXI3=0x1C,IER_SCI3_TEI3=0x1C, -IER_SCI5_ERI5=0x1D,IER_SCI5_RXI5=0x1D,IER_SCI5_TXI5=0x1D,IER_SCI5_TEI5=0x1D, -IER_SCI6_ERI6=0x1D,IER_SCI6_RXI6=0x1D,IER_SCI6_TXI6=0x1E,IER_SCI6_TEI6=0x1E, -IER_RIIC0_ICEEI0=0x1E,IER_RIIC0_ICRXI0=0x1E,IER_RIIC0_ICTXI0=0x1F,IER_RIIC0_ICTEI0=0x1F, -IER_RIIC1_ICEEI1=0x1F,IER_RIIC1_ICRXI1=0x1F,IER_RIIC1_ICTXI1=0x1F,IER_RIIC1_ICTEI1=0x1F -}; - -enum enum_ipr { -IPR_BSC_BUSERR=0x00, -IPR_FCU_FIFERR=0x01,IPR_FCU_FRDYI=0x02, -IPR_ICU_SWINT=0x03, -IPR_CMT0_CMI0=0x04, -IPR_CMT1_CMI1=0x05, -IPR_CMT2_CMI2=0x06, -IPR_CMT3_CMI3=0x07, -IPR_ETHER_EINT=0x08, -IPR_USB0_D0FIFO0=0x0C,IPR_USB0_D1FIFO0=0x0D,IPR_USB0_USBI0=0x0E, -IPR_USB1_D0FIFO1=0x10,IPR_USB1_D1FIFO1=0x11,IPR_USB1_USBI1=0x12, -IPR_RSPI0_SPEI0=0x14,IPR_RSPI0_SPRI0=0x14,IPR_RSPI0_SPTI0=0x14,IPR_RSPI0_SPII0=0x14, -IPR_RSPI1_SPEI1=0x15,IPR_RSPI1_SPRI1=0x15,IPR_RSPI1_SPTI1=0x15,IPR_RSPI1_SPII1=0x15, -IPR_CAN0_ERS0=0x18,IPR_CAN0_RXF0=0x18,IPR_CAN0_TXF0=0x18,IPR_CAN0_RXM0=0x18,IPR_CAN0_TXM0=0x18, -IPR_RTC_PRD=0x1E,IPR_RTC_CUP=0x1F, -IPR_ICU_IRQ0=0x20,IPR_ICU_IRQ1=0x21,IPR_ICU_IRQ2=0x22,IPR_ICU_IRQ3=0x23,IPR_ICU_IRQ4=0x24,IPR_ICU_IRQ5=0x25,IPR_ICU_IRQ6=0x26,IPR_ICU_IRQ7=0x27,IPR_ICU_IRQ8=0x28,IPR_ICU_IRQ9=0x29,IPR_ICU_IRQ10=0x2A,IPR_ICU_IRQ11=0x2B,IPR_ICU_IRQ12=0x2C,IPR_ICU_IRQ13=0x2D,IPR_ICU_IRQ14=0x2E,IPR_ICU_IRQ15=0x2F, -IPR_USB_USBR0=0x3A,IPR_USB_USBR1=0x3B, -IPR_RTC_ALM=0x3C, -IPR_WDT_WOVI=0x40, -IPR_AD0_ADI0=0x44, -IPR_AD1_ADI1=0x45, -IPR_S12AD_ADI=0x48, -IPR_MTU0_TGIA0=0x51,IPR_MTU0_TGIB0=0x51,IPR_MTU0_TGIC0=0x51,IPR_MTU0_TGID0=0x51,IPR_MTU0_TCIV0=0x52,IPR_MTU0_TGIE0=0x52,IPR_MTU0_TGIF0=0x52, -IPR_MTU1_TGIA1=0x53,IPR_MTU1_TGIB1=0x53,IPR_MTU1_TCIV1=0x54,IPR_MTU1_TCIU1=0x54, -IPR_MTU2_TGIA2=0x55,IPR_MTU2_TGIB2=0x55,IPR_MTU2_TCIV2=0x56,IPR_MTU2_TCIU2=0x56, -IPR_MTU3_TGIA3=0x57,IPR_MTU3_TGIB3=0x57,IPR_MTU3_TGIC3=0x57,IPR_MTU3_TGID3=0x57,IPR_MTU3_TCIV3=0x58, -IPR_MTU4_TGIA4=0x59,IPR_MTU4_TGIB4=0x59,IPR_MTU4_TGIC4=0x59,IPR_MTU4_TGID4=0x59,IPR_MTU4_TCIV4=0x5A, -IPR_MTU5_TGIU5=0x5B,IPR_MTU5_TGIV5=0x5B,IPR_MTU5_TGIW5=0x5B, -IPR_MTU6_TGIA6=0x5C,IPR_MTU6_TGIB6=0x5C,IPR_MTU6_TGIC6=0x5C,IPR_MTU6_TGID6=0x5C,IPR_MTU6_TCIV6=0x5D,IPR_MTU6_TGIE6=0x5D,IPR_MTU6_TGIF6=0x5D, -IPR_MTU7_TGIA7=0x5E,IPR_MTU7_TGIB7=0x5E,IPR_MTU7_TCIV7=0x5F,IPR_MTU7_TCIU7=0x5F, -IPR_MTU8_TGIA8=0x60,IPR_MTU8_TGIB8=0x60,IPR_MTU8_TCIV8=0x61,IPR_MTU8_TCIU8=0x61, -IPR_MTU9_TGIA9=0x62,IPR_MTU9_TGIB9=0x62,IPR_MTU9_TGIC9=0x62,IPR_MTU9_TGID9=0x62,IPR_MTU9_TCIV9=0x63, -IPR_MTU10_TGIA10=0x64,IPR_MTU10_TGIB10=0x64,IPR_MTU10_TGIC10=0x64,IPR_MTU10_TGID10=0x64,IPR_MTU10_TCIV10=0x65, -IPR_MTU11_TGIU11=0x66,IPR_MTU11_TGIV11=0x66,IPR_MTU11_TGIW11=0x66, -IPR_POE_OEI1=0x67,IPR_POE_OEI2=0x67,IPR_POE_OEI3=0x67,IPR_POE_OEI4=0x67, -IPR_TMR0_CMIA0=0x68,IPR_TMR0_CMIB0=0x68,IPR_TMR0_OVI0=0x68, -IPR_TMR1_CMIA1=0x69,IPR_TMR1_CMIB1=0x69,IPR_TMR1_OVI1=0x69, -IPR_TMR2_CMIA2=0x6A,IPR_TMR2_CMIB2=0x6A,IPR_TMR2_OVI2=0x6A, -IPR_TMR3_CMIA3=0x6B,IPR_TMR3_CMIB3=0x6B,IPR_TMR3_OVI3=0x6B, -IPR_DMACA_DMAC0I=0x70,IPR_DMACA_DMAC1I=0x71,IPR_DMACA_DMAC2I=0x72,IPR_DMACA_DMAC3I=0x73, -IPR_EXDMAC_EXDMAC0I=0x74,IPR_EXDMAC_EXDMAC1I=0x75, -IPR_SCI0_ERI0=0x80,IPR_SCI0_RXI0=0x80,IPR_SCI0_TXI0=0x80,IPR_SCI0_TEI0=0x80, -IPR_SCI1_ERI1=0x81,IPR_SCI1_RXI1=0x81,IPR_SCI1_TXI1=0x81,IPR_SCI1_TEI1=0x81, -IPR_SCI2_ERI2=0x82,IPR_SCI2_RXI2=0x82,IPR_SCI2_TXI2=0x82,IPR_SCI2_TEI2=0x82, -IPR_SCI3_ERI3=0x83,IPR_SCI3_RXI3=0x83,IPR_SCI3_TXI3=0x83,IPR_SCI3_TEI3=0x83, -IPR_SCI5_ERI5=0x85,IPR_SCI5_RXI5=0x85,IPR_SCI5_TXI5=0x85,IPR_SCI5_TEI5=0x85, -IPR_SCI6_ERI6=0x86,IPR_SCI6_RXI6=0x86,IPR_SCI6_TXI6=0x86,IPR_SCI6_TEI6=0x86, -IPR_RIIC0_ICEEI0=0x88,IPR_RIIC0_ICRXI0=0x89,IPR_RIIC0_ICTXI0=0x8A,IPR_RIIC0_ICTEI0=0x8B, -IPR_RIIC1_ICEEI1=0x8C,IPR_RIIC1_ICRXI1=0x8D,IPR_RIIC1_ICTXI1=0x8E,IPR_RIIC1_ICTEI1=0x8F, -IPR_BSC_=0x00, -IPR_CMT0_=0x04, -IPR_CMT1_=0x05, -IPR_CMT2_=0x06, -IPR_CMT3_=0x07, -IPR_ETHER_=0x08, -IPR_RSPI0_=0x14, -IPR_RSPI1_=0x15, -IPR_CAN0_=0x18, -IPR_WDT_=0x40, -IPR_AD0_=0x44, -IPR_AD1_=0x45, -IPR_S12AD_=0x48, -IPR_MTU1_TGI=0x53, -IPR_MTU1_TCI=0x54, -IPR_MTU2_TGI=0x55, -IPR_MTU2_TCI=0x56, -IPR_MTU3_TGI=0x57, -IPR_MTU4_TGI=0x59, -IPR_MTU5_=0x5B, -IPR_MTU5_TGI=0x5B, -IPR_MTU7_TGI=0x5E, -IPR_MTU7_TCI=0x5F, -IPR_MTU8_TGI=0x60, -IPR_MTU8_TCI=0x61, -IPR_MTU9_TGI=0x62, -IPR_MTU10_TGI=0x64, -IPR_MTU11_=0x66, -IPR_MTU11_TGI=0x66, -IPR_POE_=0x67, -IPR_POE_OEI=0x67, -IPR_TMR0_=0x68, -IPR_TMR1_=0x69, -IPR_TMR2_=0x6A, -IPR_TMR3_=0x6B, -IPR_SCI0_=0x80, -IPR_SCI1_=0x81, -IPR_SCI2_=0x82, -IPR_SCI3_=0x83, -IPR_SCI5_=0x85, -IPR_SCI6_=0x86 -}; - -#define IEN_BSC_BUSERR IEN0 -#define IEN_FCU_FIFERR IEN5 -#define IEN_FCU_FRDYI IEN7 -#define IEN_ICU_SWINT IEN3 -#define IEN_CMT0_CMI0 IEN4 -#define IEN_CMT1_CMI1 IEN5 -#define IEN_CMT2_CMI2 IEN6 -#define IEN_CMT3_CMI3 IEN7 -#define IEN_ETHER_EINT IEN0 -#define IEN_USB0_D0FIFO0 IEN4 -#define IEN_USB0_D1FIFO0 IEN5 -#define IEN_USB0_USBI0 IEN6 -#define IEN_USB1_D0FIFO1 IEN0 -#define IEN_USB1_D1FIFO1 IEN1 -#define IEN_USB1_USBI1 IEN2 -#define IEN_RSPI0_SPEI0 IEN4 -#define IEN_RSPI0_SPRI0 IEN5 -#define IEN_RSPI0_SPTI0 IEN6 -#define IEN_RSPI0_SPII0 IEN7 -#define IEN_RSPI1_SPEI1 IEN0 -#define IEN_RSPI1_SPRI1 IEN1 -#define IEN_RSPI1_SPTI1 IEN2 -#define IEN_RSPI1_SPII1 IEN3 -#define IEN_CAN0_ERS0 IEN0 -#define IEN_CAN0_RXF0 IEN1 -#define IEN_CAN0_TXF0 IEN2 -#define IEN_CAN0_RXM0 IEN3 -#define IEN_CAN0_TXM0 IEN4 -#define IEN_RTC_PRD IEN6 -#define IEN_RTC_CUP IEN7 -#define IEN_ICU_IRQ0 IEN0 -#define IEN_ICU_IRQ1 IEN1 -#define IEN_ICU_IRQ2 IEN2 -#define IEN_ICU_IRQ3 IEN3 -#define IEN_ICU_IRQ4 IEN4 -#define IEN_ICU_IRQ5 IEN5 -#define IEN_ICU_IRQ6 IEN6 -#define IEN_ICU_IRQ7 IEN7 -#define IEN_ICU_IRQ8 IEN0 -#define IEN_ICU_IRQ9 IEN1 -#define IEN_ICU_IRQ10 IEN2 -#define IEN_ICU_IRQ11 IEN3 -#define IEN_ICU_IRQ12 IEN4 -#define IEN_ICU_IRQ13 IEN5 -#define IEN_ICU_IRQ14 IEN6 -#define IEN_ICU_IRQ15 IEN7 -#define IEN_USB_USBR0 IEN2 -#define IEN_USB_USBR1 IEN3 -#define IEN_RTC_ALM IEN4 -#define IEN_WDT_WOVI IEN0 -#define IEN_AD0_ADI0 IEN2 -#define IEN_AD1_ADI1 IEN3 -#define IEN_S12AD_ADI IEN6 -#define IEN_MTU0_TGIA0 IEN2 -#define IEN_MTU0_TGIB0 IEN3 -#define IEN_MTU0_TGIC0 IEN4 -#define IEN_MTU0_TGID0 IEN5 -#define IEN_MTU0_TCIV0 IEN6 -#define IEN_MTU0_TGIE0 IEN7 -#define IEN_MTU0_TGIF0 IEN0 -#define IEN_MTU1_TGIA1 IEN1 -#define IEN_MTU1_TGIB1 IEN2 -#define IEN_MTU1_TCIV1 IEN3 -#define IEN_MTU1_TCIU1 IEN4 -#define IEN_MTU2_TGIA2 IEN5 -#define IEN_MTU2_TGIB2 IEN6 -#define IEN_MTU2_TCIV2 IEN7 -#define IEN_MTU2_TCIU2 IEN0 -#define IEN_MTU3_TGIA3 IEN1 -#define IEN_MTU3_TGIB3 IEN2 -#define IEN_MTU3_TGIC3 IEN3 -#define IEN_MTU3_TGID3 IEN4 -#define IEN_MTU3_TCIV3 IEN5 -#define IEN_MTU4_TGIA4 IEN6 -#define IEN_MTU4_TGIB4 IEN7 -#define IEN_MTU4_TGIC4 IEN0 -#define IEN_MTU4_TGID4 IEN1 -#define IEN_MTU4_TCIV4 IEN2 -#define IEN_MTU5_TGIU5 IEN3 -#define IEN_MTU5_TGIV5 IEN4 -#define IEN_MTU5_TGIW5 IEN7 -#define IEN_MTU6_TGIA6 IEN6 -#define IEN_MTU6_TGIB6 IEN7 -#define IEN_MTU6_TGIC6 IEN0 -#define IEN_MTU6_TGID6 IEN1 -#define IEN_MTU6_TCIV6 IEN2 -#define IEN_MTU6_TGIE6 IEN3 -#define IEN_MTU6_TGIF6 IEN4 -#define IEN_MTU7_TGIA7 IEN5 -#define IEN_MTU7_TGIB7 IEN6 -#define IEN_MTU7_TCIV7 IEN7 -#define IEN_MTU7_TCIU7 IEN0 -#define IEN_MTU8_TGIA8 IEN1 -#define IEN_MTU8_TGIB8 IEN2 -#define IEN_MTU8_TCIV8 IEN3 -#define IEN_MTU8_TCIU8 IEN4 -#define IEN_MTU9_TGIA9 IEN5 -#define IEN_MTU9_TGIB9 IEN6 -#define IEN_MTU9_TGIC9 IEN7 -#define IEN_MTU9_TGID9 IEN0 -#define IEN_MTU9_TCIV9 IEN1 -#define IEN_MTU10_TGIA10 IEN2 -#define IEN_MTU10_TGIB10 IEN3 -#define IEN_MTU10_TGIC10 IEN4 -#define IEN_MTU10_TGID10 IEN5 -#define IEN_MTU10_TCIV10 IEN6 -#define IEN_MTU11_TGIU11 IEN7 -#define IEN_MTU11_TGIV11 IEN0 -#define IEN_MTU11_TGIW11 IEN1 -#define IEN_POE_OEI1 IEN2 -#define IEN_POE_OEI2 IEN3 -#define IEN_POE_OEI3 IEN4 -#define IEN_POE_OEI4 IEN5 -#define IEN_TMR0_CMIA0 IEN6 -#define IEN_TMR0_CMIB0 IEN7 -#define IEN_TMR0_OVI0 IEN0 -#define IEN_TMR1_CMIA1 IEN1 -#define IEN_TMR1_CMIB1 IEN2 -#define IEN_TMR1_OVI1 IEN3 -#define IEN_TMR2_CMIA2 IEN4 -#define IEN_TMR2_CMIB2 IEN5 -#define IEN_TMR2_OVI2 IEN6 -#define IEN_TMR3_CMIA3 IEN7 -#define IEN_TMR3_CMIB3 IEN0 -#define IEN_TMR3_OVI3 IEN1 -#define IEN_DMACA_DMAC0I IEN6 -#define IEN_DMACA_DMAC1I IEN7 -#define IEN_DMACA_DMAC2I IEN0 -#define IEN_DMACA_DMAC3I IEN1 -#define IEN_EXDMAC_EXDMAC0I IEN2 -#define IEN_EXDMAC_EXDMAC1I IEN3 -#define IEN_SCI0_ERI0 IEN6 -#define IEN_SCI0_RXI0 IEN7 -#define IEN_SCI0_TXI0 IEN0 -#define IEN_SCI0_TEI0 IEN1 -#define IEN_SCI1_ERI1 IEN2 -#define IEN_SCI1_RXI1 IEN3 -#define IEN_SCI1_TXI1 IEN4 -#define IEN_SCI1_TEI1 IEN5 -#define IEN_SCI2_ERI2 IEN6 -#define IEN_SCI2_RXI2 IEN7 -#define IEN_SCI2_TXI2 IEN0 -#define IEN_SCI2_TEI2 IEN1 -#define IEN_SCI3_ERI3 IEN2 -#define IEN_SCI3_RXI3 IEN3 -#define IEN_SCI3_TXI3 IEN4 -#define IEN_SCI3_TEI3 IEN5 -#define IEN_SCI5_ERI5 IEN2 -#define IEN_SCI5_RXI5 IEN3 -#define IEN_SCI5_TXI5 IEN4 -#define IEN_SCI5_TEI5 IEN5 -#define IEN_SCI6_ERI6 IEN6 -#define IEN_SCI6_RXI6 IEN7 -#define IEN_SCI6_TXI6 IEN0 -#define IEN_SCI6_TEI6 IEN1 -#define IEN_RIIC0_ICEEI0 IEN6 -#define IEN_RIIC0_ICRXI0 IEN7 -#define IEN_RIIC0_ICTXI0 IEN0 -#define IEN_RIIC0_ICTEI0 IEN1 -#define IEN_RIIC1_ICEEI1 IEN2 -#define IEN_RIIC1_ICRXI1 IEN3 -#define IEN_RIIC1_ICTXI1 IEN4 -#define IEN_RIIC1_ICTEI1 IEN5 - -#define VECT_BSC_BUSERR 16 -#define VECT_FCU_FIFERR 21 -#define VECT_FCU_FRDYI 23 -#define VECT_ICU_SWINT 27 -#define VECT_CMT0_CMI0 28 -#define VECT_CMT1_CMI1 29 -#define VECT_CMT2_CMI2 30 -#define VECT_CMT3_CMI3 31 -#define VECT_ETHER_EINT 32 -#define VECT_USB0_D0FIFO0 36 -#define VECT_USB0_D1FIFO0 37 -#define VECT_USB0_USBI0 38 -#define VECT_USB1_D0FIFO1 40 -#define VECT_USB1_D1FIFO1 41 -#define VECT_USB1_USBI1 42 -#define VECT_RSPI0_SPEI0 44 -#define VECT_RSPI0_SPRI0 45 -#define VECT_RSPI0_SPTI0 46 -#define VECT_RSPI0_SPII0 47 -#define VECT_RSPI1_SPEI1 48 -#define VECT_RSPI1_SPRI1 49 -#define VECT_RSPI1_SPTI1 50 -#define VECT_RSPI1_SPII1 51 -#define VECT_CAN0_ERS0 56 -#define VECT_CAN0_RXF0 57 -#define VECT_CAN0_TXF0 58 -#define VECT_CAN0_RXM0 59 -#define VECT_CAN0_TXM0 60 -#define VECT_RTC_PRD 62 -#define VECT_RTC_CUP 63 -#define VECT_ICU_IRQ0 64 -#define VECT_ICU_IRQ1 65 -#define VECT_ICU_IRQ2 66 -#define VECT_ICU_IRQ3 67 -#define VECT_ICU_IRQ4 68 -#define VECT_ICU_IRQ5 69 -#define VECT_ICU_IRQ6 70 -#define VECT_ICU_IRQ7 71 -#define VECT_ICU_IRQ8 72 -#define VECT_ICU_IRQ9 73 -#define VECT_ICU_IRQ10 74 -#define VECT_ICU_IRQ11 75 -#define VECT_ICU_IRQ12 76 -#define VECT_ICU_IRQ13 77 -#define VECT_ICU_IRQ14 78 -#define VECT_ICU_IRQ15 79 -#define VECT_USB_USBR0 90 -#define VECT_USB_USBR1 91 -#define VECT_RTC_ALM 92 -#define VECT_WDT_WOVI 96 -#define VECT_AD0_ADI0 98 -#define VECT_AD1_ADI1 99 -#define VECT_S12AD_ADI 102 -#define VECT_MTU0_TGIA0 114 -#define VECT_MTU0_TGIB0 115 -#define VECT_MTU0_TGIC0 116 -#define VECT_MTU0_TGID0 117 -#define VECT_MTU0_TCIV0 118 -#define VECT_MTU0_TGIE0 119 -#define VECT_MTU0_TGIF0 120 -#define VECT_MTU1_TGIA1 121 -#define VECT_MTU1_TGIB1 122 -#define VECT_MTU1_TCIV1 123 -#define VECT_MTU1_TCIU1 124 -#define VECT_MTU2_TGIA2 125 -#define VECT_MTU2_TGIB2 126 -#define VECT_MTU2_TCIV2 127 -#define VECT_MTU2_TCIU2 128 -#define VECT_MTU3_TGIA3 129 -#define VECT_MTU3_TGIB3 130 -#define VECT_MTU3_TGIC3 131 -#define VECT_MTU3_TGID3 132 -#define VECT_MTU3_TCIV3 133 -#define VECT_MTU4_TGIA4 134 -#define VECT_MTU4_TGIB4 135 -#define VECT_MTU4_TGIC4 136 -#define VECT_MTU4_TGID4 137 -#define VECT_MTU4_TCIV4 138 -#define VECT_MTU5_TGIU5 139 -#define VECT_MTU5_TGIV5 140 -#define VECT_MTU5_TGIW5 141 -#define VECT_MTU6_TGIA6 142 -#define VECT_MTU6_TGIB6 143 -#define VECT_MTU6_TGIC6 144 -#define VECT_MTU6_TGID6 145 -#define VECT_MTU6_TCIV6 146 -#define VECT_MTU6_TGIE6 147 -#define VECT_MTU6_TGIF6 148 -#define VECT_MTU7_TGIA7 149 -#define VECT_MTU7_TGIB7 150 -#define VECT_MTU7_TCIV7 151 -#define VECT_MTU7_TCIU7 152 -#define VECT_MTU8_TGIA8 153 -#define VECT_MTU8_TGIB8 154 -#define VECT_MTU8_TCIV8 155 -#define VECT_MTU8_TCIU8 156 -#define VECT_MTU9_TGIA9 157 -#define VECT_MTU9_TGIB9 158 -#define VECT_MTU9_TGIC9 159 -#define VECT_MTU9_TGID9 160 -#define VECT_MTU9_TCIV9 161 -#define VECT_MTU10_TGIA10 162 -#define VECT_MTU10_TGIB10 163 -#define VECT_MTU10_TGIC10 164 -#define VECT_MTU10_TGID10 165 -#define VECT_MTU10_TCIV10 166 -#define VECT_MTU11_TGIU11 167 -#define VECT_MTU11_TGIV11 168 -#define VECT_MTU11_TGIW11 169 -#define VECT_POE_OEI1 170 -#define VECT_POE_OEI2 171 -#define VECT_POE_OEI3 172 -#define VECT_POE_OEI4 173 -#define VECT_TMR0_CMIA0 174 -#define VECT_TMR0_CMIB0 175 -#define VECT_TMR0_OVI0 176 -#define VECT_TMR1_CMIA1 177 -#define VECT_TMR1_CMIB1 178 -#define VECT_TMR1_OVI1 179 -#define VECT_TMR2_CMIA2 180 -#define VECT_TMR2_CMIB2 181 -#define VECT_TMR2_OVI2 182 -#define VECT_TMR3_CMIA3 183 -#define VECT_TMR3_CMIB3 184 -#define VECT_TMR3_OVI3 185 -#define VECT_DMACA_DMAC0I 198 -#define VECT_DMACA_DMAC1I 199 -#define VECT_DMACA_DMAC2I 200 -#define VECT_DMACA_DMAC3I 201 -#define VECT_EXDMAC_EXDMAC0I 202 -#define VECT_EXDMAC_EXDMAC1I 203 -#define VECT_SCI0_ERI0 214 -#define VECT_SCI0_RXI0 215 -#define VECT_SCI0_TXI0 216 -#define VECT_SCI0_TEI0 217 -#define VECT_SCI1_ERI1 218 -#define VECT_SCI1_RXI1 219 -#define VECT_SCI1_TXI1 220 -#define VECT_SCI1_TEI1 221 -#define VECT_SCI2_ERI2 222 -#define VECT_SCI2_RXI2 223 -#define VECT_SCI2_TXI2 224 -#define VECT_SCI2_TEI2 225 -#define VECT_SCI3_ERI3 226 -#define VECT_SCI3_RXI3 227 -#define VECT_SCI3_TXI3 228 -#define VECT_SCI3_TEI3 229 -#define VECT_SCI5_ERI5 234 -#define VECT_SCI5_RXI5 235 -#define VECT_SCI5_TXI5 236 -#define VECT_SCI5_TEI5 237 -#define VECT_SCI6_ERI6 238 -#define VECT_SCI6_RXI6 239 -#define VECT_SCI6_TXI6 240 -#define VECT_SCI6_TEI6 241 -#define VECT_RIIC0_ICEEI0 246 -#define VECT_RIIC0_ICRXI0 247 -#define VECT_RIIC0_ICTXI0 248 -#define VECT_RIIC0_ICTEI0 249 -#define VECT_RIIC1_ICEEI1 250 -#define VECT_RIIC1_ICRXI1 251 -#define VECT_RIIC1_ICTXI1 252 -#define VECT_RIIC1_ICTEI1 253 - -#define MSTP_EXDMAC SYSTEM.MSTPCRA.BIT.MSTPA29 -#define MSTP_DMACA SYSTEM.MSTPCRA.BIT.MSTPA28 -#define MSTP_DTC SYSTEM.MSTPCRA.BIT.MSTPA28 -#define MSTP_AD0 SYSTEM.MSTPCRA.BIT.MSTPA23 -#define MSTP_AD1 SYSTEM.MSTPCRA.BIT.MSTPA22 -#define MSTP_DA SYSTEM.MSTPCRA.BIT.MSTPA19 -#define MSTP_S12AD SYSTEM.MSTPCRA.BIT.MSTPA17 -#define MSTP_CMT0 SYSTEM.MSTPCRA.BIT.MSTPA15 -#define MSTP_CMT1 SYSTEM.MSTPCRA.BIT.MSTPA15 -#define MSTP_CMT2 SYSTEM.MSTPCRA.BIT.MSTPA14 -#define MSTP_CMT3 SYSTEM.MSTPCRA.BIT.MSTPA14 -#define MSTP_PPG0 SYSTEM.MSTPCRA.BIT.MSTPA11 -#define MSTP_PPG1 SYSTEM.MSTPCRA.BIT.MSTPA10 -#define MSTP_MTUA SYSTEM.MSTPCRA.BIT.MSTPA9 -#define MSTP_MTU0 SYSTEM.MSTPCRA.BIT.MSTPA9 -#define MSTP_MTU1 SYSTEM.MSTPCRA.BIT.MSTPA9 -#define MSTP_MTU2 SYSTEM.MSTPCRA.BIT.MSTPA9 -#define MSTP_MTU3 SYSTEM.MSTPCRA.BIT.MSTPA9 -#define MSTP_MTU4 SYSTEM.MSTPCRA.BIT.MSTPA9 -#define MSTP_MTU5 SYSTEM.MSTPCRA.BIT.MSTPA9 -#define MSTP_MTUB SYSTEM.MSTPCRA.BIT.MSTPA8 -#define MSTP_MTU6 SYSTEM.MSTPCRA.BIT.MSTPA8 -#define MSTP_MTU7 SYSTEM.MSTPCRA.BIT.MSTPA8 -#define MSTP_MTU8 SYSTEM.MSTPCRA.BIT.MSTPA8 -#define MSTP_MTU9 SYSTEM.MSTPCRA.BIT.MSTPA8 -#define MSTP_MTU10 SYSTEM.MSTPCRA.BIT.MSTPA8 -#define MSTP_MTU11 SYSTEM.MSTPCRA.BIT.MSTPA8 -#define MSTP_TMR0 SYSTEM.MSTPCRA.BIT.MSTPA5 -#define MSTP_TMR1 SYSTEM.MSTPCRA.BIT.MSTPA5 -#define MSTP_TMR01 SYSTEM.MSTPCRA.BIT.MSTPA5 -#define MSTP_TMR2 SYSTEM.MSTPCRA.BIT.MSTPA4 -#define MSTP_TMR3 SYSTEM.MSTPCRA.BIT.MSTPA4 -#define MSTP_TMR23 SYSTEM.MSTPCRA.BIT.MSTPA4 -#define MSTP_SCI0 SYSTEM.MSTPCRB.BIT.MSTPB31 -#define MSTP_SMCI0 SYSTEM.MSTPCRB.BIT.MSTPB31 -#define MSTP_SCI1 SYSTEM.MSTPCRB.BIT.MSTPB30 -#define MSTP_SMCI1 SYSTEM.MSTPCRB.BIT.MSTPB30 -#define MSTP_SCI2 SYSTEM.MSTPCRB.BIT.MSTPB29 -#define MSTP_SMCI2 SYSTEM.MSTPCRB.BIT.MSTPB29 -#define MSTP_SCI3 SYSTEM.MSTPCRB.BIT.MSTPB28 -#define MSTP_SMCI3 SYSTEM.MSTPCRB.BIT.MSTPB28 -#define MSTP_SCI5 SYSTEM.MSTPCRB.BIT.MSTPB26 -#define MSTP_SMCI5 SYSTEM.MSTPCRB.BIT.MSTPB26 -#define MSTP_SCI6 SYSTEM.MSTPCRB.BIT.MSTPB25 -#define MSTP_SMCI6 SYSTEM.MSTPCRB.BIT.MSTPB25 -#define MSTP_CRC SYSTEM.MSTPCRB.BIT.MSTPB23 -#define MSTP_RIIC0 SYSTEM.MSTPCRB.BIT.MSTPB21 -#define MSTP_RIIC1 SYSTEM.MSTPCRB.BIT.MSTPB20 -#define MSTP_USB0 SYSTEM.MSTPCRB.BIT.MSTPB19 -#define MSTP_USB1 SYSTEM.MSTPCRB.BIT.MSTPB18 -#define MSTP_RSPI0 SYSTEM.MSTPCRB.BIT.MSTPB17 -#define MSTP_RSPI1 SYSTEM.MSTPCRB.BIT.MSTPB16 -#define MSTP_EDMAC SYSTEM.MSTPCRB.BIT.MSTPB15 -#define MSTP_CAN0 SYSTEM.MSTPCRB.BIT.MSTPB0 -#define MSTP_RAM0 SYSTEM.MSTPCRC.BIT.MSTPC1 -#define MSTP_RAM1 SYSTEM.MSTPCRC.BIT.MSTPC0 - -#define __IR( x ) ICU.IR[ IR ## x ].BIT.IR -#define _IR( x ) __IR( x ) -#define IR( x , y ) _IR( _ ## x ## _ ## y ) -#define __DTCE( x ) ICU.DTCER[ DTCE ## x ].BIT.DTCE -#define _DTCE( x ) __DTCE( x ) -#define DTCE( x , y ) _DTCE( _ ## x ## _ ## y ) -#define __IEN( x ) ICU.IER[ IER ## x ].BIT.IEN ## x -#define _IEN( x ) __IEN( x ) -#define IEN( x , y ) _IEN( _ ## x ## _ ## y ) -#define __IPR( x ) ICU.IPR[ IPR ## x ].BIT.IPR -#define _IPR( x ) __IPR( x ) -#define IPR( x , y ) _IPR( _ ## x ## _ ## y ) -#define __VECT( x ) VECT ## x -#define _VECT( x ) __VECT( x ) -#define VECT( x , y ) _VECT( _ ## x ## _ ## y ) -#define __MSTP( x ) MSTP ## x -#define _MSTP( x ) __MSTP( x ) -#define MSTP( x ) _MSTP( _ ## x ) - -#define SYSTEM (*(volatile struct st_system *)0x80000) -#define BSC (*(volatile struct st_bsc *)0x81300) -#define DMAC0 (*(volatile struct st_dmac0 *)0x82000) -#define DMAC1 (*(volatile struct st_dmac1 *)0x82040) -#define DMAC2 (*(volatile struct st_dmac1 *)0x82080) -#define DMAC3 (*(volatile struct st_dmac1 *)0x820C0) -#define DMAC (*(volatile struct st_dmac *)0x82200) -#define DTC (*(volatile struct st_dtc *)0x82400) -#define EXDMAC0 (*(volatile struct st_exdmac0 *)0x82800) -#define EXDMAC1 (*(volatile struct st_exdmac0 *)0x82840) -#define EXDMAC (*(volatile struct st_exdmac *)0x82A00) -#define ICU (*(volatile struct st_icu *)0x87000) -#define CMT (*(volatile struct st_cmt *)0x88000) -#define CMT0 (*(volatile struct st_cmt0 *)0x88002) -#define CMT1 (*(volatile struct st_cmt0 *)0x88008) -#define CMT2 (*(volatile struct st_cmt0 *)0x88012) -#define CMT3 (*(volatile struct st_cmt0 *)0x88018) -#define WDT (*(volatile union un_wdt *)0x88028) -#define IWDT (*(volatile struct st_iwdt *)0x88030) -#define AD0 (*(volatile struct st_ad *)0x88040) -#define AD1 (*(volatile struct st_ad *)0x88060) -#define DA (*(volatile struct st_da *)0x880C0) -#define PPG0 (*(volatile struct st_ppg0 *)0x881E6) -#define PPG1 (*(volatile struct st_ppg1 *)0x881F0) -#define TMR0 (*(volatile struct st_tmr0 *)0x88200) -#define TMR1 (*(volatile struct st_tmr1 *)0x88201) -#define TMR01 (*(volatile struct st_tmr01 *)0x88204) -#define TMR2 (*(volatile struct st_tmr0 *)0x88210) -#define TMR3 (*(volatile struct st_tmr1 *)0x88211) -#define TMR23 (*(volatile struct st_tmr01 *)0x88214) -#define SCI0 (*(volatile struct st_sci *)0x88240) -#define SCI1 (*(volatile struct st_sci *)0x88248) -#define SCI2 (*(volatile struct st_sci *)0x88250) -#define SCI3 (*(volatile struct st_sci *)0x88258) -#define SCI5 (*(volatile struct st_sci *)0x88268) -#define SCI6 (*(volatile struct st_sci *)0x88270) -#define SMCI0 (*(volatile struct st_smci *)0x88240) -#define SMCI1 (*(volatile struct st_smci *)0x88248) -#define SMCI2 (*(volatile struct st_smci *)0x88250) -#define SMCI3 (*(volatile struct st_smci *)0x88258) -#define SMCI5 (*(volatile struct st_smci *)0x88268) -#define SMCI6 (*(volatile struct st_smci *)0x88270) -#define CRC (*(volatile struct st_crc *)0x88280) -#define RIIC0 (*(volatile struct st_riic *)0x88300) -#define RIIC1 (*(volatile struct st_riic *)0x88320) -#define RSPI0 (*(volatile struct st_rspi *)0x88380) -#define RSPI1 (*(volatile struct st_rspi *)0x883A0) -#define MTUA (*(volatile struct st_mtu *)0x8860A) -#define MTU0 (*(volatile struct st_mtu0 *)0x88700) -#define MTU1 (*(volatile struct st_mtu1 *)0x88780) -#define MTU2 (*(volatile struct st_mtu2 *)0x88800) -#define MTU3 (*(volatile struct st_mtu3 *)0x88600) -#define MTU4 (*(volatile struct st_mtu4 *)0x88600) -#define MTU5 (*(volatile struct st_mtu5 *)0x88880) -#define POE (*(volatile struct st_poe *)0x88900) -#define MTUB (*(volatile struct st_mtu *)0x88A0A) -#define MTU6 (*(volatile struct st_mtu0 *)0x88B00) -#define MTU7 (*(volatile struct st_mtu1 *)0x88B80) -#define MTU8 (*(volatile struct st_mtu2 *)0x88C00) -#define MTU9 (*(volatile struct st_mtu3 *)0x88A00) -#define MTU10 (*(volatile struct st_mtu4 *)0x88A00) -#define MTU11 (*(volatile struct st_mtu5 *)0x88C80) -#define S12AD (*(volatile struct st_s12ad *)0x89000) -#define PORT0 (*(volatile struct st_port0 *)0x8C000) -#define PORT1 (*(volatile struct st_port1 *)0x8C001) -#define PORT2 (*(volatile struct st_port2 *)0x8C002) -#define PORT3 (*(volatile struct st_port3 *)0x8C003) -#define PORT4 (*(volatile struct st_port4 *)0x8C004) -#define PORT5 (*(volatile struct st_port5 *)0x8C005) -#define PORT6 (*(volatile struct st_port6 *)0x8C006) -#define PORT7 (*(volatile struct st_port7 *)0x8C007) -#define PORT8 (*(volatile struct st_port8 *)0x8C008) -#define PORT9 (*(volatile struct st_port9 *)0x8C009) -#define PORTA (*(volatile struct st_porta *)0x8C00A) -#define PORTB (*(volatile struct st_portb *)0x8C00B) -#define PORTC (*(volatile struct st_portc *)0x8C00C) -#define PORTD (*(volatile struct st_portd *)0x8C00D) -#define PORTE (*(volatile struct st_porte *)0x8C00E) -#define PORTF (*(volatile struct st_portf *)0x8C00F) -#define PORTG (*(volatile struct st_portg *)0x8C010) -#define IOPORT (*(volatile struct st_ioport *)0x8C100) -#define FLASH (*(volatile struct st_flash *)0x8C288) -#define RTC (*(volatile struct st_rtc *)0x8C400) -#define CAN0 (*(volatile struct st_can *)0x90200) -#define USB0 (*(volatile struct st_usb0 *)0xA0000) -#define USB1 (*(volatile struct st_usb0 *)0xA0200) -#define USB (*(volatile struct st_usb *)0xA0400) -#define EDMAC (*(volatile struct st_edmac *)0xC0000) -#define ETHERC (*(volatile struct st_etherc *)0xC0100) - -#endif /*endian*/ - -#endif /*IODEFINE_H*/ diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/include/typedefine.h b/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/include/typedefine.h deleted file mode 100644 index 49b303a56..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/include/typedefine.h +++ /dev/null @@ -1,23 +0,0 @@ -/***********************************************************************/ -/* */ -/* FILE :typedefine.h */ -/* DATE :Wed, Aug 25, 2010 */ -/* DESCRIPTION :Aliases of Integer Type */ -/* CPU TYPE :Other */ -/* */ -/* This file is generated by KPIT GNU Project Generator. */ -/* */ -/***********************************************************************/ - - - -typedef signed char _SBYTE; -typedef unsigned char _UBYTE; -typedef signed short _SWORD; -typedef unsigned short _UWORD; -typedef signed int _SINT; -typedef unsigned int _UINT; -typedef signed long _SDWORD; -typedef unsigned long _UDWORD; -typedef signed long long _SQWORD; -typedef unsigned long long _UQWORD; diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/include/yrdkrx62ndef.h b/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/include/yrdkrx62ndef.h deleted file mode 100644 index 779da3562..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/include/yrdkrx62ndef.h +++ /dev/null @@ -1,110 +0,0 @@ - -/****************************************************************************** -* DISCLAIMER -* Please refer to http://www.renesas.com/disclaimer -****************************************************************************** - Copyright (C) 2008. Renesas Technology Corp., All Rights Reserved. -******************************************************************************* -* File Name : rsksh7216.h -* Version : 1.00 -* Description : RSK 7216 board specific settings -****************************************************************************** -* History : DD.MM.YYYY Version Description -* : 06.10.2009 1.00 First Release -******************************************************************************/ - -#ifndef RDKRX62N_H -#define RDKRX62N_H - -/****************************************************************************** -Includes , "Project Includes" -******************************************************************************/ - -/****************************************************************************** -Typedef definitions -******************************************************************************/ - -/****************************************************************************** -Macro definitions -******************************************************************************/ - -/* System Clock Settings */ -#define XTAL_FREQUENCY (12000000L) -#define ICLK_MUL (8) -#define PCLK_MUL (4) -#define BCLK_MUL (4) -#define ICLK_FREQUENCY (XTAL_FREQUENCY * ICLK_MUL) -#define PCLK_FREQUENCY (XTAL_FREQUENCY * PCLK_MUL) -#define BCLK_FREQUENCY (XTAL_FREQUENCY * BCLK_MUL) - -#define CMT0_CLK_SELECT (512) - -/* General Values */ -#ifdef LED_POSITIVE_LOGIC - #define LED_ON (1) - #define LED_OFF (0) -#else -/* LEDs are using NEGATIVE LOGIC... */ - #define LED_ON (0) - #define LED_OFF (1) -#endif -#define SET_BIT_HIGH (1) -#define SET_BIT_LOW (0) -#define SET_BYTE_HIGH (0xFF) -#define SET_BYTE_LOW (0x00) - -/* Define switches to be polled if not available as interrupts */ -#define SW_ACTIVE FALSE -#define SW1 PORT4.PORT.BIT.B0 -#define SW2 PORT4.PORT.BIT.B1 -#define SW3 PORT4.PORT.BIT.B2 -#define SW1_DDR PORT4.DDR.BIT.B0 -#define SW2_DDR PORT4.DDR.BIT.B1 -#define SW3_DDR PORT4.DDR.BIT.B2 -#define SW1_ICR PORT4.ICR.BIT.B0 -#define SW2_ICR PORT4.ICR.BIT.B1 -#define SW3_ICR PORT4.ICR.BIT.B2 - -/* LEDs */ -#define LED4 PORTD.DR.BIT.B5 -#define LED5 PORTE.DR.BIT.B3 -#define LED6 PORTD.DR.BIT.B2 -#define LED7 PORTE.DR.BIT.B0 -#define LED8 PORTD.DR.BIT.B4 -#define LED9 PORTE.DR.BIT.B2 -#define LED10 PORTD.DR.BIT.B1 -#define LED11 PORTD.DR.BIT.B7 -#define LED12 PORTD.DR.BIT.B3 -#define LED13 PORTE.DR.BIT.B1 -#define LED14 PORTD.DR.BIT.B0 -#define LED15 PORTD.DR.BIT.B6 - -#define LED4_DDR PORTD.DDR.BIT.B5 -#define LED5_DDR PORTE.DDR.BIT.B3 -#define LED6_DDR PORTD.DDR.BIT.B2 -#define LED7_DDR PORTE.DDR.BIT.B0 -#define LED8_DDR PORTD.DDR.BIT.B4 -#define LED9_DDR PORTE.DDR.BIT.B2 -#define LED10_DDR PORTD.DDR.BIT.B1 -#define LED11_DDR PORTD.DDR.BIT.B7 -#define LED12_DDR PORTD.DDR.BIT.B3 -#define LED13_DDR PORTE.DDR.BIT.B1 -#define LED14_DDR PORTD.DDR.BIT.B0 -#define LED15_DDR PORTD.DDR.BIT.B6 - - - - -/****************************************************************************** -Variable Externs -******************************************************************************/ - -/****************************************************************************** -Functions Prototypes -******************************************************************************/ - - - -/* RDKRX62N_H */ -#endif - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/main-blinky.c b/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/main-blinky.c deleted file mode 100644 index 0abb8a674..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/main-blinky.c +++ /dev/null @@ -1,204 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* - * This is a very simple demo that creates two tasks and one queue. One task - * (the queue receive task) blocks on the queue to wait for data to arrive, - * toggling an LED each time '100' is received. The other task (the queue send - * task) repeatedly blocks for a fixed period before sending '100' to the queue - * (causing the first task to toggle the LED). - * - * For a much more complete and complex example select either the Debug or - * Debug_with_optimisation build configurations within the HEW IDE. -*/ - -/* Hardware specific includes. */ -#include "iodefine.h" - -/* Kernel includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "queue.h" - -/* Demo includes. */ -#include "ParTest.h" - -/* Priorities at which the tasks are created. */ -#define configQUEUE_RECEIVE_TASK_PRIORITY ( tskIDLE_PRIORITY + 2 ) -#define configQUEUE_SEND_TASK_PRIORITY ( tskIDLE_PRIORITY + 1 ) - -/* The rate at which data is sent to the queue, specified in milliseconds. */ -#define mainQUEUE_SEND_FREQUENCY_MS ( 500 / portTICK_PERIOD_MS ) - -/* The number of items the queue can hold. This is 1 as the receive task -will remove items as they are added so the send task should always find the -queue empty. */ -#define mainQUEUE_LENGTH ( 1 ) - -/* - * The tasks as defined at the top of this file. - */ -static void prvQueueReceiveTask( void *pvParameters ); -static void prvQueueSendTask( void *pvParameters ); - -/* The queue used by both tasks. */ -static QueueHandle_t xQueue = NULL; - -/*-----------------------------------------------------------*/ - -int main(void) -{ -extern void HardwareSetup( void ); - - /* Renesas provided CPU configuration routine. The clocks are configured in - here. */ - HardwareSetup(); - - /* Turn all LEDs off. */ - vParTestInitialise(); - - /* Create the queue. */ - xQueue = xQueueCreate( mainQUEUE_LENGTH, sizeof( unsigned long ) ); - - if( xQueue != NULL ) - { - /* Start the two tasks as described at the top of this file. */ - xTaskCreate( prvQueueReceiveTask, "Rx", configMINIMAL_STACK_SIZE, NULL, configQUEUE_RECEIVE_TASK_PRIORITY, NULL ); - xTaskCreate( prvQueueSendTask, "TX", configMINIMAL_STACK_SIZE, NULL, configQUEUE_SEND_TASK_PRIORITY, NULL ); - - /* Start the tasks running. */ - vTaskStartScheduler(); - } - - /* If all is well we will never reach here as the scheduler will now be - running. If we do reach here then it is likely that there was insufficient - heap available for the idle task to be created. */ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -static void prvQueueSendTask( void *pvParameters ) -{ -TickType_t xNextWakeTime; -const unsigned long ulValueToSend = 100UL; - - /* Initialise xNextWakeTime - this only needs to be done once. */ - xNextWakeTime = xTaskGetTickCount(); - - for( ;; ) - { - /* Place this task in the blocked state until it is time to run again. - The block state is specified in ticks, the constant used converts ticks - to ms. */ - vTaskDelayUntil( &xNextWakeTime, mainQUEUE_SEND_FREQUENCY_MS ); - - /* Send to the queue - causing the queue receive task to flash its LED. 0 - is used so the send does not block - it shouldn't need to as the queue - should always be empty here. */ - xQueueSend( xQueue, &ulValueToSend, 0 ); - } -} -/*-----------------------------------------------------------*/ - -static void prvQueueReceiveTask( void *pvParameters ) -{ -unsigned long ulReceivedValue; - - for( ;; ) - { - /* Wait until something arives in the queue - this will block - indefinitely provided INCLUDE_vTaskSuspend is set to 1 in - FreeRTOSConfig.h. */ - xQueueReceive( xQueue, &ulReceivedValue, portMAX_DELAY ); - - /* To get here something must have arrived, but is it the expected - value? If it is, toggle the LED. */ - if( ulReceivedValue == 100UL ) - { - vParTestToggleLED( 0 ); - } - } -} -/*-----------------------------------------------------------*/ - -void vApplicationSetupTimerInterrupt( void ) -{ - /* Enable compare match timer 0. */ - MSTP( CMT0 ) = 0; - - /* Interrupt on compare match. */ - CMT0.CMCR.BIT.CMIE = 1; - - /* Set the compare match value. */ - CMT0.CMCOR = ( unsigned short ) ( ( ( configPERIPHERAL_CLOCK_HZ / configTICK_RATE_HZ ) -1 ) / 8 ); - - /* Divide the PCLK by 8. */ - CMT0.CMCR.BIT.CKS = 0; - - /* Enable the interrupt... */ - _IEN( _CMT0_CMI0 ) = 1; - - /* ...and set its priority to the application defined kernel priority. */ - _IPR( _CMT0_CMI0 ) = configKERNEL_INTERRUPT_PRIORITY; - - /* Start the timer. */ - CMT.CMSTR0.BIT.STR0 = 1; -} -/*-----------------------------------------------------------*/ - -/* This function is explained by the comments above its prototype at the top -of this file. */ -void vApplicationMallocFailedHook( void ) -{ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -/* This function is explained by the comments above its prototype at the top -of this file. */ -void vApplicationStackOverflowHook( TaskHandle_t pxTask, char *pcTaskName ) -{ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -/* This function is explained by the comments above its prototype at the top -of this file. */ -void vApplicationIdleHook( void ) -{ -} -/*-----------------------------------------------------------*/ - -/* The following four functions are here just to allow all three build -configurations to use the same vector table. They are not used in this -demo, but linker errors will result if they are not defined. They can -be ignored. */ -void vT0_1_ISR_Handler( void ) {} -void vT2_3_ISR_Handler( void ) {} -void vEMAC_ISR_Handler( void ) {} -void vTimer2_ISR_Handler( void ) {} -volatile unsigned long ulHighFrequencyTickCount = 0; \ No newline at end of file diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/main-full.c b/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/main-full.c deleted file mode 100644 index bf6c385e7..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/main-full.c +++ /dev/null @@ -1,647 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* **************************************************************************** - * This project includes a lot of tasks and tests and is therefore complex. - * If you would prefer a much simpler project to get started with then select - * the 'Blinky' build configuration within the HEW IDE. - * **************************************************************************** - * - * Creates all the demo application tasks, then starts the scheduler. The web - * documentation provides more details of the standard demo application tasks, - * which provide no particular functionality but do provide a good example of - * how to use the FreeRTOS API. The tasks defined in flop.c are included in the - * set of standard demo tasks to ensure the floating point unit gets some - * exercise. - * - * In addition to the standard demo tasks, the following tasks and tests are - * defined and/or created within this file: - * - * Webserver ("uIP") task - This serves a number of dynamically generated WEB - * pages to a standard WEB browser. The IP and MAC addresses are configured by - * constants defined at the bottom of FreeRTOSConfig.h. Use either a standard - * Ethernet cable to connect through a hug, or a cross over (point to point) - * cable to connect directly. Ensure the IP address used is compatible with the - * IP address of the machine running the browser - the easiest way to achieve - * this is to ensure the first three octets of the IP addresses are the same. - * - * "Reg test" tasks - These fill the registers with known values, then check - * that each register still contains its expected value. Each task uses - * different values. The tasks run with very low priority so get preempted - * very frequently. A check variable is incremented on each iteration of the - * test loop. A register containing an unexpected value is indicative of an - * error in the context switching mechanism and will result in a branch to a - * null loop - which in turn will prevent the check variable from incrementing - * any further and allow the check task (described below) to determine that an - * error has occurred. The nature of the reg test tasks necessitates that they - * are written in assembly code. - * - * "Check" task - This only executes every five seconds but has a high priority - * to ensure it gets processor time. Its main function is to check that all the - * standard demo tasks are still operational. While no errors have been - * discovered the check task will toggle LED 5 every 5 seconds - the toggle - * rate increasing to 200ms being a visual indication that at least one task has - * reported unexpected behaviour. - * - * "High frequency timer test" - A high frequency periodic interrupt is - * generated using a timer - the interrupt is assigned a priority above - * configMAX_SYSCALL_INTERRUPT_PRIORITY so should not be effected by anything - * the kernel is doing. The frequency and priority of the interrupt, in - * combination with other standard tests executed in this demo, should result - * in interrupts nesting at least 3 and probably 4 deep. This test is only - * included in build configurations that have the optimiser switched on. In - * optimised builds the count of high frequency ticks is used as the time base - * for the run time stats. - * - * *NOTE 1* If LED5 is toggling every 5 seconds then all the demo application - * tasks are executing as expected and no errors have been reported in any - * tasks. The toggle rate increasing to 200ms indicates that at least one task - * has reported unexpected behaviour. - * - * *NOTE 2* vApplicationSetupTimerInterrupt() is called by the kernel to let - * the application set up a timer to generate the tick interrupt. In this - * example a compare match timer is used for this purpose. - * - * *NOTE 3* The CPU must be in Supervisor mode when the scheduler is started. - * The PowerON_Reset_PC() supplied in resetprg.c with this demo has - * Change_PSW_PM_to_UserMode() commented out to ensure this is the case. - * - * *NOTE 4* The IntQueue common demo tasks test interrupt nesting and make use - * of all the 8bit timers (as two cascaded 16bit units). -*/ - -/* Hardware specific includes. */ -#include "iodefine.h" - -/* Kernel includes. */ -#include "FreeRTOS.h" -#include "task.h" - -/* Standard demo includes. */ -#include "partest.h" -#include "flash.h" -#include "IntQueue.h" -#include "BlockQ.h" -#include "death.h" -#include "integer.h" -#include "blocktim.h" -#include "semtest.h" -#include "PollQ.h" -#include "GenQTest.h" -#include "QPeek.h" -#include "recmutex.h" -#include "flop.h" - -/* Values that are passed into the reg test tasks using the task parameter. The -tasks check that the values are passed in correctly. */ -#define mainREG_TEST_1_PARAMETER ( 0x12121212UL ) -#define mainREG_TEST_2_PARAMETER ( 0x12345678UL ) - -/* Priorities at which the tasks are created. */ -#define mainCHECK_TASK_PRIORITY ( configMAX_PRIORITIES - 1 ) -#define mainQUEUE_POLL_PRIORITY ( tskIDLE_PRIORITY + 1 ) -#define mainSEM_TEST_PRIORITY ( tskIDLE_PRIORITY + 1 ) -#define mainBLOCK_Q_PRIORITY ( tskIDLE_PRIORITY + 2 ) -#define mainCREATOR_TASK_PRIORITY ( tskIDLE_PRIORITY + 3 ) -#define mainFLASH_TASK_PRIORITY ( tskIDLE_PRIORITY + 1 ) -#define mainuIP_TASK_PRIORITY ( tskIDLE_PRIORITY + 2 ) -#define mainINTEGER_TASK_PRIORITY ( tskIDLE_PRIORITY ) -#define mainGEN_QUEUE_TASK_PRIORITY ( tskIDLE_PRIORITY ) -#define mainFLOP_TASK_PRIORITY ( tskIDLE_PRIORITY ) - -/* The WEB server uses string handling functions, which in turn use a bit more -stack than most of the other tasks. */ -#define mainuIP_STACK_SIZE ( configMINIMAL_STACK_SIZE * 3 ) - -/* The LED toggled by the check task. */ -#define mainCHECK_LED ( 5 ) - -/* The rate at which mainCHECK_LED will toggle when all the tasks are running -without error. Controlled by the check task as described at the top of this -file. */ -#define mainNO_ERROR_CYCLE_TIME ( 5000 / portTICK_PERIOD_MS ) - -/* The rate at which mainCHECK_LED will toggle when an error has been reported -by at least one task. Controlled by the check task as described at the top of -this file. */ -#define mainERROR_CYCLE_TIME ( 200 / portTICK_PERIOD_MS ) - - -/* - * vApplicationMallocFailedHook() will only be called if - * configUSE_MALLOC_FAILED_HOOK is set to 1 in FreeRTOSConfig.h. It is a hook - * function that will execute if a call to pvPortMalloc() fails. - * pvPortMalloc() is called internally by the kernel whenever a task, queue or - * semaphore is created. It is also called by various parts of the demo - * application. - */ -void vApplicationMallocFailedHook( void ); - -/* - * vApplicationIdleHook() will only be called if configUSE_IDLE_HOOK is set to 1 - * in FreeRTOSConfig.h. It is a hook function that is called on each iteration - * of the idle task. It is essential that code added to this hook function - * never attempts to block in any way (for example, call xQueueReceive() with - * a block time specified). If the application makes use of the vTaskDelete() - * API function (as this demo application does) then it is also important that - * vApplicationIdleHook() is permitted to return to its calling function because - * it is the responsibility of the idle task to clean up memory allocated by the - * kernel to any task that has since been deleted. - */ -void vApplicationIdleHook( void ); - -/* - * vApplicationStackOverflowHook() will only be called if - * configCHECK_FOR_STACK_OVERFLOW is set to a non-zero value. The handle and - * name of the offending task should be passed in the function parameters, but - * it is possible that the stack overflow will have corrupted these - in which - * case pxCurrentTCB can be inspected to find the same information. - */ -void vApplicationStackOverflowHook( TaskHandle_t pxTask, char *pcTaskName ); - -/* - * The reg test tasks as described at the top of this file. - */ -static void prvRegTest1Task( void *pvParameters ); -static void prvRegTest2Task( void *pvParameters ); - -/* - * The actual implementation of the reg test functionality, which, because of - * the direct register access, have to be in assembly. - */ -static void prvRegTest1Implementation( void ) __attribute__((naked)); -static void prvRegTest2Implementation( void ) __attribute__((naked)); - - -/* - * The check task as described at the top of this file. - */ -static void prvCheckTask( void *pvParameters ); - -/* - * Contains the implementation of the WEB server. - */ -extern void vuIP_Task( void *pvParameters ); - -/*-----------------------------------------------------------*/ - -/* Variables that are incremented on each iteration of the reg test tasks - -provided the tasks have not reported any errors. The check task inspects these -variables to ensure they are still incrementing as expected. If a variable -stops incrementing then it is likely that its associate task has stalled. */ -unsigned long ulRegTest1CycleCount = 0UL, ulRegTest2CycleCount = 0UL; - -/* The status message that is displayed at the bottom of the "task stats" web -page, which is served by the uIP task. This will report any errors picked up -by the reg test task. */ -static const char *pcStatusMessage = NULL; - -/*-----------------------------------------------------------*/ - -int main(void) -{ -extern void HardwareSetup( void ); - - /* Renesas provided CPU configuration routine. The clocks are configured in - here. */ - HardwareSetup(); - - /* Turn all LEDs off. */ - vParTestInitialise(); - - /* Start the reg test tasks which test the context switching mechanism. */ - xTaskCreate( prvRegTest1Task, "RegTst1", configMINIMAL_STACK_SIZE, ( void * ) mainREG_TEST_1_PARAMETER, tskIDLE_PRIORITY, NULL ); - xTaskCreate( prvRegTest2Task, "RegTst2", configMINIMAL_STACK_SIZE, ( void * ) mainREG_TEST_2_PARAMETER, tskIDLE_PRIORITY, NULL ); - - /* The web server task. */ - xTaskCreate( vuIP_Task, "uIP", mainuIP_STACK_SIZE, NULL, mainuIP_TASK_PRIORITY, NULL ); - - /* Start the check task as described at the top of this file. */ - xTaskCreate( prvCheckTask, "Check", configMINIMAL_STACK_SIZE, NULL, mainCHECK_TASK_PRIORITY, NULL ); - - /* Create the standard demo tasks. */ - vStartBlockingQueueTasks( mainBLOCK_Q_PRIORITY ); - vCreateBlockTimeTasks(); - vStartSemaphoreTasks( mainSEM_TEST_PRIORITY ); - vStartPolledQueueTasks( mainQUEUE_POLL_PRIORITY ); - vStartIntegerMathTasks( mainINTEGER_TASK_PRIORITY ); - vStartGenericQueueTasks( mainGEN_QUEUE_TASK_PRIORITY ); - vStartLEDFlashTasks( mainFLASH_TASK_PRIORITY ); - vStartQueuePeekTasks(); - vStartRecursiveMutexTasks(); - vStartInterruptQueueTasks(); - vStartMathTasks( mainFLOP_TASK_PRIORITY ); - - /* The suicide tasks must be created last as they need to know how many - tasks were running prior to their creation in order to ascertain whether - or not the correct/expected number of tasks are running at any given time. */ - vCreateSuicidalTasks( mainCREATOR_TASK_PRIORITY ); - - /* Start the tasks running. */ - vTaskStartScheduler(); - - /* If all is well we will never reach here as the scheduler will now be - running. If we do reach here then it is likely that there was insufficient - heap available for the idle task to be created. */ - for( ;; ); - - return 0; -} -/*-----------------------------------------------------------*/ - -static void prvCheckTask( void *pvParameters ) -{ -static volatile unsigned long ulLastRegTest1CycleCount = 0UL, ulLastRegTest2CycleCount = 0UL; -TickType_t xNextWakeTime, xCycleFrequency = mainNO_ERROR_CYCLE_TIME; -extern void vSetupHighFrequencyTimer( void ); - - /* If this is being executed then the kernel has been started. Start the high - frequency timer test as described at the top of this file. This is only - included in the optimised build configuration - otherwise it takes up too much - CPU time. */ - #ifdef INCLUDE_HIGH_FREQUENCY_TIMER_TEST - vSetupHighFrequencyTimer(); - #endif - - /* Initialise xNextWakeTime - this only needs to be done once. */ - xNextWakeTime = xTaskGetTickCount(); - - for( ;; ) - { - /* Place this task in the blocked state until it is time to run again. */ - vTaskDelayUntil( &xNextWakeTime, xCycleFrequency ); - - /* Check the standard demo tasks are running without error. */ - if( xAreGenericQueueTasksStillRunning() != pdTRUE ) - { - pcStatusMessage = "Error: GenQueue"; - } - else if( xAreQueuePeekTasksStillRunning() != pdTRUE ) - { - pcStatusMessage = "Error: QueuePeek\r\n"; - } - else if( xAreBlockingQueuesStillRunning() != pdTRUE ) - { - pcStatusMessage = "Error: BlockQueue\r\n"; - } - else if( xAreBlockTimeTestTasksStillRunning() != pdTRUE ) - { - pcStatusMessage = "Error: BlockTime\r\n"; - } - else if( xAreSemaphoreTasksStillRunning() != pdTRUE ) - { - pcStatusMessage = "Error: SemTest\r\n"; - } - else if( xArePollingQueuesStillRunning() != pdTRUE ) - { - pcStatusMessage = "Error: PollQueue\r\n"; - } - else if( xIsCreateTaskStillRunning() != pdTRUE ) - { - pcStatusMessage = "Error: Death\r\n"; - } - else if( xAreIntegerMathsTaskStillRunning() != pdTRUE ) - { - pcStatusMessage = "Error: IntMath\r\n"; - } - else if( xAreRecursiveMutexTasksStillRunning() != pdTRUE ) - { - pcStatusMessage = "Error: RecMutex\r\n"; - } - else if( xAreIntQueueTasksStillRunning() != pdPASS ) - { - pcStatusMessage = "Error: IntQueue\r\n"; - } - else if( xAreMathsTaskStillRunning() != pdPASS ) - { - pcStatusMessage = "Error: Flop\r\n"; - } - - /* Check the reg test tasks are still cycling. They will stop incrementing - their loop counters if they encounter an error. */ - if( ulRegTest1CycleCount == ulLastRegTest1CycleCount ) - { - pcStatusMessage = "Error: RegTest1\r\n"; - } - - if( ulRegTest2CycleCount == ulLastRegTest2CycleCount ) - { - pcStatusMessage = "Error: RegTest2\r\n"; - } - - ulLastRegTest1CycleCount = ulRegTest1CycleCount; - ulLastRegTest2CycleCount = ulRegTest2CycleCount; - - /* Toggle the check LED to give an indication of the system status. If - the LED toggles every 5 seconds then everything is ok. A faster toggle - indicates an error. */ - vParTestToggleLED( mainCHECK_LED ); - - /* Ensure the LED toggles at a faster rate if an error has occurred. */ - if( pcStatusMessage != NULL ) - { - /* Increase the rate at which this task cycles, which will increase the - rate at which mainCHECK_LED flashes to give visual feedback that an error - has occurred. */ - xCycleFrequency = mainERROR_CYCLE_TIME; - } - } -} -/*-----------------------------------------------------------*/ - -/* The RX port uses this callback function to configure its tick interrupt. -This allows the application to choose the tick interrupt source. */ -void vApplicationSetupTimerInterrupt( void ) -{ - /* Enable compare match timer 0. */ - MSTP( CMT0 ) = 0; - - /* Interrupt on compare match. */ - CMT0.CMCR.BIT.CMIE = 1; - - /* Set the compare match value. */ - CMT0.CMCOR = ( unsigned short ) ( ( ( configPERIPHERAL_CLOCK_HZ / configTICK_RATE_HZ ) -1 ) / 8 ); - - /* Divide the PCLK by 8. */ - CMT0.CMCR.BIT.CKS = 0; - - /* Enable the interrupt... */ - _IEN( _CMT0_CMI0 ) = 1; - - /* ...and set its priority to the application defined kernel priority. */ - _IPR( _CMT0_CMI0 ) = configKERNEL_INTERRUPT_PRIORITY; - - /* Start the timer. */ - CMT.CMSTR0.BIT.STR0 = 1; -} -/*-----------------------------------------------------------*/ - -/* This function is explained by the comments above its prototype at the top -of this file. */ -void vApplicationMallocFailedHook( void ) -{ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -/* This function is explained by the comments above its prototype at the top -of this file. */ -void vApplicationStackOverflowHook( TaskHandle_t pxTask, char *pcTaskName ) -{ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -/* This function is explained by the comments above its prototype at the top -of this file. */ -void vApplicationIdleHook( void ) -{ -} -/*-----------------------------------------------------------*/ - -/* This function is explained in the comments at the top of this file. */ -static void prvRegTest1Task( void *pvParameters ) -{ - if( ( ( unsigned long ) pvParameters ) != mainREG_TEST_1_PARAMETER ) - { - /* The parameter did not contain the expected value. */ - for( ;; ) - { - /* Stop the tick interrupt so its obvious something has gone wrong. */ - taskDISABLE_INTERRUPTS(); - } - } - - /* This is an asm function that never returns. */ - prvRegTest1Implementation(); -} -/*-----------------------------------------------------------*/ - -/* This function is explained in the comments at the top of this file. */ -static void prvRegTest2Task( void *pvParameters ) -{ - if( ( ( unsigned long ) pvParameters ) != mainREG_TEST_2_PARAMETER ) - { - /* The parameter did not contain the expected value. */ - for( ;; ) - { - /* Stop the tick interrupt so its obvious something has gone wrong. */ - taskDISABLE_INTERRUPTS(); - } - } - - /* This is an asm function that never returns. */ - prvRegTest2Implementation(); -} -/*-----------------------------------------------------------*/ - -char *pcGetTaskStatusMessage( void ) -{ - /* Not bothered about a critical section here although technically because of - the task priorities the pointer could change it will be atomic if not near - atomic and its not critical. */ - if( pcStatusMessage == NULL ) - { - return "All tasks running without error"; - } - else - { - return ( char * ) pcStatusMessage; - } -} -/*-----------------------------------------------------------*/ - -/* This function is explained in the comments at the top of this file. */ -static void prvRegTest1Implementation( void ) -{ - __asm volatile - ( - /* Put a known value in each register. */ - "MOV #1, R1 \n" \ - "MOV #2, R2 \n" \ - "MOV #3, R3 \n" \ - "MOV #4, R4 \n" \ - "MOV #5, R5 \n" \ - "MOV #6, R6 \n" \ - "MOV #7, R7 \n" \ - "MOV #8, R8 \n" \ - "MOV #9, R9 \n" \ - "MOV #10, R10 \n" \ - "MOV #11, R11 \n" \ - "MOV #12, R12 \n" \ - "MOV #13, R13 \n" \ - "MOV #14, R14 \n" \ - "MOV #15, R15 \n" \ - - /* Loop, checking each iteration that each register still contains the - expected value. */ - "TestLoop1: \n" \ - - /* Push the registers that are going to get clobbered. */ - "PUSHM R14-R15 \n" \ - - /* Increment the loop counter to show this task is still getting CPU time. */ - "MOV #_ulRegTest1CycleCount, R14 \n" \ - "MOV [ R14 ], R15 \n" \ - "ADD #1, R15 \n" \ - "MOV R15, [ R14 ] \n" \ - - /* Yield to extend the test coverage. Set the bit in the ITU SWINTR register. */ - "MOV #1, R14 \n" \ - "MOV #0872E0H, R15 \n" \ - "MOV.B R14, [R15] \n" \ - "NOP \n" \ - "NOP \n" \ - - /* Restore the clobbered registers. */ - "POPM R14-R15 \n" \ - - /* Now compare each register to ensure it still contains the value that was - set before this loop was entered. */ - "CMP #1, R1 \n" \ - "BNE RegTest1Error \n" \ - "CMP #2, R2 \n" \ - "BNE RegTest1Error \n" \ - "CMP #3, R3 \n" \ - "BNE RegTest1Error \n" \ - "CMP #4, R4 \n" \ - "BNE RegTest1Error \n" \ - "CMP #5, R5 \n" \ - "BNE RegTest1Error \n" \ - "CMP #6, R6 \n" \ - "BNE RegTest1Error \n" \ - "CMP #7, R7 \n" \ - "BNE RegTest1Error \n" \ - "CMP #8, R8 \n" \ - "BNE RegTest1Error \n" \ - "CMP #9, R9 \n" \ - "BNE RegTest1Error \n" \ - "CMP #10, R10 \n" \ - "BNE RegTest1Error \n" \ - "CMP #11, R11 \n" \ - "BNE RegTest1Error \n" \ - "CMP #12, R12 \n" \ - "BNE RegTest1Error \n" \ - "CMP #13, R13 \n" \ - "BNE RegTest1Error \n" \ - "CMP #14, R14 \n" \ - "BNE RegTest1Error \n" \ - "CMP #15, R15 \n" \ - "BNE RegTest1Error \n" \ - - /* All comparisons passed, start a new itteratio of this loop. */ - "BRA TestLoop1 \n" \ - - "RegTest1Error: \n" \ - /* A compare failed, just loop here so the loop counter stops incrementing - - causing the check task to indicate the error. */ - "BRA RegTest1Error " - ); -} -/*-----------------------------------------------------------*/ - -/* This function is explained in the comments at the top of this file. */ -static void prvRegTest2Implementation( void ) -{ - __asm volatile - ( - /* Put a known value in each register. */ - "MOV #10H, R1 \n" \ - "MOV #20H, R2 \n" \ - "MOV #30H, R3 \n" \ - "MOV #40H, R4 \n" \ - "MOV #50H, R5 \n" \ - "MOV #60H, R6 \n" \ - "MOV #70H, R7 \n" \ - "MOV #80H, R8 \n" \ - "MOV #90H, R9 \n" \ - "MOV #100H, R10 \n" \ - "MOV #110H, R11 \n" \ - "MOV #120H, R12 \n" \ - "MOV #130H, R13 \n" \ - "MOV #140H, R14 \n" \ - "MOV #150H, R15 \n" \ - - /* Loop, checking each iteration that each register still contains the - expected value. */ - "TestLoop2: \n" \ - - /* Push the registers that are going to get clobbered. */ - "PUSHM R14-R15 \n" \ - - /* Increment the loop counter to show this task is still getting CPU time. */ - "MOV #_ulRegTest2CycleCount, R14 \n" \ - "MOV [ R14 ], R15 \n" \ - "ADD #1, R15 \n" \ - "MOV R15, [ R14 ] \n" \ - - /* Restore the clobbered registers. */ - "POPM R14-R15 \n" \ - - /* Now compare each register to ensure it still contains the value that was - set before this loop was entered. */ - "CMP #10H, R1 \n" \ - "BNE RegTest2Error \n" \ - "CMP #20H, R2 \n" \ - "BNE RegTest2Error \n" \ - "CMP #30H, R3 \n" \ - "BNE RegTest2Error \n" \ - "CMP #40H, R4 \n" \ - "BNE RegTest2Error \n" \ - "CMP #50H, R5 \n" \ - "BNE RegTest2Error \n" \ - "CMP #60H, R6 \n" \ - "BNE RegTest2Error \n" \ - "CMP #70H, R7 \n" \ - "BNE RegTest2Error \n" \ - "CMP #80H, R8 \n" \ - "BNE RegTest2Error \n" \ - "CMP #90H, R9 \n" \ - "BNE RegTest2Error \n" \ - "CMP #100H, R10 \n" \ - "BNE RegTest2Error \n" \ - "CMP #110H, R11 \n" \ - "BNE RegTest2Error \n" \ - "CMP #120H, R12 \n" \ - "BNE RegTest2Error \n" \ - "CMP #130H, R13 \n" \ - "BNE RegTest2Error \n" \ - "CMP #140H, R14 \n" \ - "BNE RegTest2Error \n" \ - "CMP #150H, R15 \n" \ - "BNE RegTest2Error \n" \ - - /* All comparisons passed, start a new itteratio of this loop. */ - "BRA TestLoop2 \n" \ - - "RegTest2Error: \n" \ - /* A compare failed, just loop here so the loop counter stops incrementing - - causing the check task to indicate the error. */ - "BRA RegTest2Error " - ); -} - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/uIP_Task.c b/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/uIP_Task.c deleted file mode 100644 index 974381ef7..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/uIP_Task.c +++ /dev/null @@ -1,319 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* Standard includes. */ -#include - -/* Scheduler includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "timers.h" -#include "queue.h" - -/* uip includes. */ -#include "net/uip.h" -#include "net/uip_arp.h" -#include "apps/httpd/httpd.h" -#include "sys/timer.h" -#include "net/clock-arch.h" -#include "r_ether.h" - -/* Demo includes. */ -#include "ParTest.h" - -/*-----------------------------------------------------------*/ - -/* How long to wait before attempting to connect the MAC again. */ -#define uipINIT_WAIT ( 100 / portTICK_PERIOD_MS ) - -/* Shortcut to the header within the Rx buffer. */ -#define xHeader ((struct uip_eth_hdr *) &uip_buf[ 0 ]) - -/* Standard constant. */ -#define uipTOTAL_FRAME_HEADER_SIZE 54 - -/* The ARP timer and the periodic timer share a callback function, so the -respective timer IDs are used to determine which timer actually expired. These -constants are assigned to the timer IDs. */ -#define uipARP_TIMER 0 -#define uipPERIODIC_TIMER 1 - -/* A block time of zero ticks simply means, "don't block". */ -#define uipDONT_BLOCK 0UL - -/*-----------------------------------------------------------*/ - -/* - * Setup the MAC address in the MAC itself, and in the uIP stack. - */ -static void prvSetMACAddress( void ); - -/* - * Perform any uIP initialisation necessary. - */ -static void prvInitialise_uIP( void ); - -/* - * The callback function that is assigned to both the periodic timer and the - * ARP timer. - */ -static void prvUIPTimerCallback( TimerHandle_t xTimer ); - -/* - * Port functions required by the uIP stack. - */ -clock_time_t clock_time( void ); - -/*-----------------------------------------------------------*/ - -/* The queue used to send TCP/IP events to the uIP stack. */ -QueueHandle_t xEMACEventQueue = NULL; - -/*-----------------------------------------------------------*/ - -clock_time_t clock_time( void ) -{ - return xTaskGetTickCount(); -} -/*-----------------------------------------------------------*/ - -void vuIP_Task( void *pvParameters ) -{ -portBASE_TYPE i; -unsigned long ulNewEvent = 0UL; -unsigned long ulUIP_Events = 0UL; - - ( void ) pvParameters; - - /* Initialise the uIP stack. */ - prvInitialise_uIP(); - - /* Initialise the MAC. */ - vInitEmac(); - - while( lEMACWaitForLink() != pdPASS ) - { - vTaskDelay( uipINIT_WAIT ); - } - - for( ;; ) - { - if( ( ulUIP_Events & uipETHERNET_RX_EVENT ) != 0UL ) - { - /* Is there received data ready to be processed? */ - uip_len = ( unsigned short ) ulEMACRead(); - - if( ( uip_len > 0 ) && ( uip_buf != NULL ) ) - { - /* Standard uIP loop taken from the uIP manual. */ - if( xHeader->type == htons( UIP_ETHTYPE_IP ) ) - { - uip_arp_ipin(); - uip_input(); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - uip_arp_out(); - vEMACWrite(); - } - } - else if( xHeader->type == htons( UIP_ETHTYPE_ARP ) ) - { - uip_arp_arpin(); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - vEMACWrite(); - } - } - } - else - { - ulUIP_Events &= ~uipETHERNET_RX_EVENT; - } - } - - if( ( ulUIP_Events & uipPERIODIC_TIMER_EVENT ) != 0UL ) - { - ulUIP_Events &= ~uipPERIODIC_TIMER_EVENT; - - for( i = 0; i < UIP_CONNS; i++ ) - { - uip_periodic( i ); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - uip_arp_out(); - vEMACWrite(); - } - } - } - - /* Call the ARP timer function every 10 seconds. */ - if( ( ulUIP_Events & uipARP_TIMER_EVENT ) != 0 ) - { - ulUIP_Events &= ~uipARP_TIMER_EVENT; - uip_arp_timer(); - } - - if( ulUIP_Events == pdFALSE ) - { - xQueueReceive( xEMACEventQueue, &ulNewEvent, portMAX_DELAY ); - ulUIP_Events |= ulNewEvent; - } - } -} -/*-----------------------------------------------------------*/ - -static void prvInitialise_uIP( void ) -{ -TimerHandle_t xARPTimer, xPeriodicTimer; -uip_ipaddr_t xIPAddr; -const unsigned long ul_uIPEventQueueLength = 10UL; - - /* Initialise the uIP stack. */ - uip_init(); - uip_ipaddr( &xIPAddr, configIP_ADDR0, configIP_ADDR1, configIP_ADDR2, configIP_ADDR3 ); - uip_sethostaddr( &xIPAddr ); - uip_ipaddr( &xIPAddr, configNET_MASK0, configNET_MASK1, configNET_MASK2, configNET_MASK3 ); - uip_setnetmask( &xIPAddr ); - prvSetMACAddress(); - httpd_init(); - - /* Create the queue used to sent TCP/IP events to the uIP stack. */ - xEMACEventQueue = xQueueCreate( ul_uIPEventQueueLength, sizeof( unsigned long ) ); - - /* Create and start the uIP timers. */ - xARPTimer = xTimerCreate( "ARPTimer", /* Just a name that is helpful for debugging, not used by the kernel. */ - ( 10000UL / portTICK_PERIOD_MS ), /* Timer period. */ - pdTRUE, /* Autor-reload. */ - ( void * ) uipARP_TIMER, - prvUIPTimerCallback - ); - - xPeriodicTimer = xTimerCreate( "PeriodicTimer", - ( 50 / portTICK_PERIOD_MS ), - pdTRUE, /* Autor-reload. */ - ( void * ) uipPERIODIC_TIMER, - prvUIPTimerCallback - ); - - configASSERT( xARPTimer ); - configASSERT( xPeriodicTimer ); - - xTimerStart( xARPTimer, portMAX_DELAY ); - xTimerStart( xPeriodicTimer, portMAX_DELAY ); -} -/*-----------------------------------------------------------*/ - -static void prvUIPTimerCallback( TimerHandle_t xTimer ) -{ -static const unsigned long ulARPTimerExpired = uipARP_TIMER_EVENT; -static const unsigned long ulPeriodicTimerExpired = uipPERIODIC_TIMER_EVENT; - - /* This is a time callback, so calls to xQueueSend() must not attempt to - block. */ - switch( ( int ) pvTimerGetTimerID( xTimer ) ) - { - case uipARP_TIMER : xQueueSend( xEMACEventQueue, &ulARPTimerExpired, uipDONT_BLOCK ); - break; - - case uipPERIODIC_TIMER : xQueueSend( xEMACEventQueue, &ulPeriodicTimerExpired, uipDONT_BLOCK ); - break; - - default : /* Should not get here. */ - break; - } -} -/*-----------------------------------------------------------*/ - -static void prvSetMACAddress( void ) -{ -struct uip_eth_addr xAddr; - - /* Configure the MAC address in the uIP stack. */ - xAddr.addr[ 0 ] = configMAC_ADDR0; - xAddr.addr[ 1 ] = configMAC_ADDR1; - xAddr.addr[ 2 ] = configMAC_ADDR2; - xAddr.addr[ 3 ] = configMAC_ADDR3; - xAddr.addr[ 4 ] = configMAC_ADDR4; - xAddr.addr[ 5 ] = configMAC_ADDR5; - uip_setethaddr( xAddr ); -} -/*-----------------------------------------------------------*/ - -void vApplicationProcessFormInput( char *pcInputString ) -{ -char *c; - - /* Only interested in processing form input if this is the IO page. */ - c = strstr( pcInputString, "io.shtml" ); - - if( c ) - { - /* Is there a command in the string? */ - c = strstr( pcInputString, "?" ); - if( c ) - { - /* Turn the LED's on or off in accordance with the check box status. */ - if( strstr( c, "LED0=1" ) != NULL ) - { - /* Turn the LEDs on. */ - vParTestSetLED( 7, 1 ); - vParTestSetLED( 8, 1 ); - vParTestSetLED( 9, 1 ); - vParTestSetLED( 10, 1 ); - } - else - { - /* Turn the LEDs off. */ - vParTestSetLED( 7, 0 ); - vParTestSetLED( 8, 0 ); - vParTestSetLED( 9, 0 ); - vParTestSetLED( 10, 0 ); - } - } - else - { - /* Commands to turn LEDs off are not always explicit. */ - vParTestSetLED( 7, 0 ); - vParTestSetLED( 8, 0 ); - vParTestSetLED( 9, 0 ); - vParTestSetLED( 10, 0 ); - } - } -} - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/vects.c b/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/vects.c deleted file mode 100644 index a1a33fe16..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/vects.c +++ /dev/null @@ -1,614 +0,0 @@ -/***********************************************************************/ -/* */ -/* FILE :vects.c */ -/* DATE :Wed, Aug 25, 2010 */ -/* DESCRIPTION :Vector Table */ -/* CPU TYPE :Other */ -/* */ -/* This file is generated by KPIT GNU Project Generator. */ -/* */ -/***********************************************************************/ - - - - -#include "inthandler.h" - -typedef void (*fp) (void); -extern void start(void); -extern void stack (void); -extern void vTickISR( void ); -extern void vSoftwareInterruptISR( void ); -extern void vT0_1_ISR_Handler( void ); -extern void vT2_3_ISR_Handler( void ); -extern void vEMAC_ISR_Handler( void ); -extern void vTimer2_ISR_Handler( void ); - -#define FVECT_SECT __attribute__ ((section (".fvectors"))) - -const fp HardwareVectors[] FVECT_SECT = { -//;0xffffff80 Reserved - (fp)0, -//;0xffffff84 Reserved - (fp)0, -//;0xffffff88 Reserved - (fp)0, -//;0xffffff8C Reserved - (fp)0, -//;0xffffff90 Reserved - (fp)0, -//;0xffffff94 Reserved - (fp)0, -//;0xffffff98 Reserved - (fp)0, -//;0xffffff9C Reserved - (fp)0, -//;0xffffffA0 Reserved - (fp)0, -//;0xffffffA4 Reserved - (fp)0, -//;0xffffffA8 Reserved - (fp)0, -//;0xffffffAC Reserved - (fp)0, -//;0xffffffB0 Reserved - (fp)0, -//;0xffffffB4 Reserved - (fp)0, -//;0xffffffB8 Reserved - (fp)0, -//;0xffffffBC Reserved - (fp)0, -//;0xffffffC0 Reserved - (fp)0, -//;0xffffffC4 Reserved - (fp)0, -//;0xffffffC8 Reserved - (fp)0, -//;0xffffffCC Reserved - (fp)0, -//;0xffffffd0 Exception(Supervisor Instruction) - INT_Excep_SuperVisorInst, -//;0xffffffd4 Reserved - (fp)0, -//;0xffffffd8 Reserved - (fp)0, -//;0xffffffdc Exception(Undefined Instruction) - INT_Excep_UndefinedInst, -//;0xffffffe0 Reserved - (fp)0, -//;0xffffffe4 Exception(Floating Point) - INT_Excep_FloatingPoint, -//;0xffffffe8 Reserved - (fp)0, -//;0xffffffec Reserved - (fp)0, -//;0xfffffff0 Reserved - (fp)0, -//;0xfffffff4 Reserved - (fp)0, -//;0xfffffff8 NMI - INT_NonMaskableInterrupt, -//;0xfffffffc RESET -//;<> -//;Power On Reset PC - start -//;<> -}; - -#define RVECT_SECT __attribute__ ((section (".rvectors"))) - -const fp RelocatableVectors[] RVECT_SECT = { -//;0x0000 Reserved - (fp)0, -//;0x0004 Reserved - (fp)0, -//;0x0008 Reserved - (fp)0, -//;0x000C Reserved - (fp)0, -//;0x0010 Reserved - (fp)0, -//;0x0014 Reserved - (fp)0, -//;0x0018 Reserved - (fp)0, -//;0x001C Reserved - (fp)0, -//;0x0020 Reserved - (fp)0, -//;0x0024 Reserved - (fp)0, -//;0x0028 Reserved - (fp)0, -//;0x002C Reserved - (fp)0, -//;0x0030 Reserved - (fp)0, -//;0x0034 Reserved - (fp)0, -//;0x0038 Reserved - (fp)0, -//;0x003C Reserved - (fp)0, -//;0x0040 BUSERR - (fp)INT_Excep_BUSERR, -//;0x0044 Reserved - (fp)0, -//;0x0048 Reserved - (fp)0, -//;0x004C Reserved - (fp)0, -//;0x0050 Reserved - (fp)0, -//;0x0054 FCUERR - (fp)INT_Excep_FCU_FCUERR, -//;0x0058 Reserved - (fp)0, -//;0x005C FRDYI - (fp)INT_Excep_FCU_FRDYI, -//;0x0060 Reserved - (fp)0, -//;0x0064 Reserved - (fp)0, -//;0x0068 Reserved - (fp)0, -//;0x006C Reserved - (fp)vSoftwareInterruptISR, -//;0x0070 CMTU0_CMT0 - (fp)vTickISR, -//;0x0074 CMTU0_CMT1 - (fp)INT_Excep_CMTU0_CMT1, -//;0x0078 CMTU1_CMT2 - (fp)vTimer2_ISR_Handler, -//;0x007C CMTU1_CMT3 - (fp)INT_Excep_CMTU1_CMT3, -//;0x0080 Ether - (fp)vEMAC_ISR_Handler, -//;0x0084 Reserved - (fp)0, -//;0x0088 Reserved - (fp)0, -//;0x008C Reserved - (fp)0, -//;0x0090 Reserved - (fp)0, -//;0x0094 Reserved - (fp)0, -//;0x0098 Reserved - (fp)0, -//;0x009C Reserved - (fp)0, -//;0x00A0 Reserved - (fp)0, -//;0x00A4 Reserved - (fp)0, -//;0x00A8 Reserved - (fp)0, -//;0x00AC Reserved - (fp)0, -//;0x00B0 Reserved - (fp)0, -//;0x00B4 Reserved - (fp)0, -//;0x00B8 Reserved - (fp)0, -//;0x00BC Reserved - (fp)0, -//;0x00C0 Reserved - (fp)0, -//;0x00C4 Reserved - (fp)0, -//;0x00C8 Reserved - (fp)0, -//;0x00CC Reserved - (fp)0, -//;0x00D0 Reserved - (fp)0, -//;0x00D4 Reserved - (fp)0, -//;0x00D8 Reserved - (fp)0, -//;0x00DC Reserved - (fp)0, -//;0x00E0 Reserved - (fp)0, -//;0x00E4 Reserved - (fp)0, -//;0x00E8 Reserved - (fp)0, -//;0x00EC Reserved - (fp)0, -//;0x00F0 Reserved - (fp)0, -//;0x00F4 Reserved - (fp)0, -//;0x00F8 Reserved - (fp)0, -//;0x00FC Reserved - (fp)0, -//;0x0100 IRQ0 - (fp)INT_Excep_IRQ0, -//;0x0104 IRQ1 - (fp)INT_Excep_IRQ1, -//;0x0108 IRQ2 - (fp)INT_Excep_IRQ2, -//;0x010C IRQ3 - (fp)INT_Excep_IRQ3, -//;0x0110 IRQ4 - (fp)INT_Excep_IRQ4, -//;0x0114 IRQ5 - (fp)INT_Excep_IRQ5, -//;0x0118 IRQ6 - (fp)INT_Excep_IRQ6, -//;0x011C IRQ7 - (fp)INT_Excep_IRQ7, -//;0x0120 IRQ8 - (fp)INT_Excep_IRQ8, -//;0x0124 IRQ9 - (fp)INT_Excep_IRQ9, -//;0x0128 IRQ10 - (fp)INT_Excep_IRQ10, -//;0x012C IRQ11 - (fp)INT_Excep_IRQ11, -//;0x0130 IRQ12 - (fp)INT_Excep_IRQ12, -//;0x0134 IRQ13 - (fp)INT_Excep_IRQ13, -//;0x0138 IRQ14 - (fp)INT_Excep_IRQ14, -//;0x013C IRQ15 - (fp)INT_Excep_IRQ15, -//;0x0140 Reserved - (fp)0, -//;0x0144 Reserved - (fp)0, -//;0x0148 Reserved - (fp)0, -//;0x014C Reserved - (fp)0, -//;0x0150 Reserved - (fp)0, -//;0x0154 Reserved - (fp)0, -//;0x0158 Reserved - (fp)0, -//;0x015C Reserved - (fp)0, -//;0x0160 Reserved - (fp)0, -//;0x0164 Reserved - (fp)0, -//;0x0168 Reserved - (fp)0, -//;0x016C Reserved - (fp)0, -//;0x0170 Reserved - (fp)0, -//;0x0174 Reserved - (fp)0, -//;0x0178 Reserved - (fp)0, -//;0x017C Reserved - (fp)0, -//;0x0180 WDT_WOVI - (fp)INT_Excep_WDT_WOVI, -//;0x0184 Reserved - (fp)0, -//;0x0188 AD0_ADI0 - (fp)INT_Excep_AD0_ADI0, -//;0x018C AD1_ADI1 - (fp)INT_Excep_AD1_ADI1, -//;0x0190 AD2_ADI2 - (fp)INT_Excep_AD2_ADI2, -//;0x0194 AD3_ADI3 - (fp)INT_Excep_AD3_ADI3, -//;0x0198 Reserved - (fp)0, -//;0x019C Reserved - (fp)0, -//;0x01A0 TPU0_TGI0A - (fp)INT_Excep_TPU0_TGI0A, -//;0x01A4 TPU0_TGI0B - (fp)INT_Excep_TPU0_TGI0B, -//;0x01A8 TPU0_TGI0C - (fp)INT_Excep_TPU0_TGI0C, -//;0x01AC TPU0_TGI0D - (fp)INT_Excep_TPU0_TGI0D, -//;0x01B0 TPU0_TCI0V - (fp)INT_Excep_TPU0_TCI0V, -//;0x01B4 Reserved - (fp)0, -//;0x01B8 Reserved - (fp)0, -//;0x01BC TPU1_TGI1A - (fp)INT_Excep_TPU1_TGI1A, -//;0x01C0 TPU1_TGI1B - (fp)INT_Excep_TPU1_TGI1B, -//;0x01C4 Reserved - (fp)0, -//;0x01C8 Reserved - (fp)0, -//;0x01CC TPU1_TCI1V - (fp)INT_Excep_TPU1_TCI1V, -//;0x01D0 TPU1_TCI1U - (fp)INT_Excep_TPU1_TCI1U, -//;0x01D4 TPU2_TGI2A - (fp)INT_Excep_TPU2_TGI2A, -//;0x01D8 TPU2_TGI2B - (fp)INT_Excep_TPU2_TGI2B, -//;0x01DC Reserved - (fp)0, -//;0x01E0 TPU2_TCI2V - (fp)INT_Excep_TPU2_TCI2V, -//;0x01E4 TPU2_TCI2U - (fp)INT_Excep_TPU2_TCI2U, -//;0x01E8 TPU3_TGI3A - (fp)INT_Excep_TPU3_TGI3A, -//;0x01EC TPU3_TGI3B - (fp)INT_Excep_TPU3_TGI3B, -//;0x01F0 TPU3_TGI3C - (fp)INT_Excep_TPU3_TGI3C, -//;0x01F4 TPU3_TGI3D - (fp)INT_Excep_TPU3_TGI3D, -//;0x01F8 TPU3_TCI3V - (fp)INT_Excep_TPU3_TCI3V, -//;0x01FC TPU4_TGI4A - (fp)INT_Excep_TPU4_TGI4A, -//;0x0200 TPU4_TGI4B - (fp)INT_Excep_TPU4_TGI4B, -//;0x0204 Reserved - (fp)0, -//;0x0208 Reserved - (fp)0, -//;0x020C TPU4_TCI4V - (fp)INT_Excep_TPU4_TCI4V, -//;0x0210 TPU4_TCI4U - (fp)INT_Excep_TPU4_TCI4U, -//;0x0214 TPU5_TGI5A - (fp)INT_Excep_TPU5_TGI5A, -//;0x0218 TPU5_TGI5B - (fp)INT_Excep_TPU5_TGI5B, -//;0x021C Reserved - (fp)0, -//;0x0220 TPU5_TCI5V - (fp)INT_Excep_TPU5_TCI5V, -//;0x0224 TPU5_TCI5U - (fp)INT_Excep_TPU5_TCI5U, -//;0x0228 TPU6_TGI6A - (fp)INT_Excep_TPU6_TGI6A, -//;0x022C TPU6_TGI6B - (fp)INT_Excep_TPU6_TGI6B, -//;0x0230 TPU6_TGI6C - (fp)INT_Excep_TPU6_TGI6C, -//;0x0234 TPU6_TGI6D - (fp)INT_Excep_TPU6_TGI6D, -//;0x0238 TPU6_TCI6V - (fp)INT_Excep_TPU6_TCI6V, -//;0x023C Reserved - (fp)0, -//;0x0240 Reserved - (fp)0, -//;0x0244 TPU7_TGI7A - (fp)INT_Excep_TPU7_TGI7A, -//;0x0248 TPU7_TGI7B - (fp)INT_Excep_TPU7_TGI7B, -//;0x024C Reserved - (fp)0, -//;0x0250 Reserved - (fp)0, -//;0x0254 TPU7_TCI7V - (fp)INT_Excep_TPU7_TCI7V, -//;0x0258 TPU7_TCI7U - (fp)INT_Excep_TPU7_TCI7U, -//;0x025C TPU8_TGI8A - (fp)INT_Excep_TPU8_TGI8A, -//;0x0260 TPU8_TGI8B - (fp)INT_Excep_TPU8_TGI8B, -//;0x0264 Reserved - (fp)0, -//;0x0268 TPU8_TCI8V - (fp)INT_Excep_TPU8_TCI8V, -//;0x026C TPU8_TCI8U - (fp)INT_Excep_TPU8_TCI8U, -//;0x0270 TPU9_TGI9A - (fp)INT_Excep_TPU9_TGI9A, -//;0x0274 TPU9_TGI9B - (fp)INT_Excep_TPU9_TGI9B, -//;0x0278 TPU9_TGI9C - (fp)INT_Excep_TPU9_TGI9C, -//;0x027C TPU9_TGI9D - (fp)INT_Excep_TPU9_TGI9D, -//;0x0280 TPU9_TCI9V - (fp)INT_Excep_TPU9_TCI9V, -//;0x0284 TPU10_TGI10A - (fp)INT_Excep_TPU10_TGI10A, -//;0x0288 TPU10_TGI10B - (fp)INT_Excep_TPU10_TGI10B, -//;0x028C Reserved - (fp)0, -//;0x0290 Reserved - (fp)0, -//;0x0294 TPU10_TCI10V - (fp)INT_Excep_TPU10_TCI10V, -//;0x0298 TPU10_TCI10U - (fp)INT_Excep_TPU10_TCI10U, -//;0x029C TPU11_TGI11A - (fp)INT_Excep_TPU11_TGI11A, -//;0x02A0 TPU11_TGI11B - (fp)INT_Excep_TPU11_TGI11B, -//;0x02A4 Reserved - (fp)0, -//;0x02A8 TPU11_TCI11V - (fp)INT_Excep_TPU11_TCI11V, -//;0x02AC TPU11_TCI11U - (fp)INT_Excep_TPU11_TCI11U, -//;0x02B0 Reserved - (fp)0, -//;0x02B4 Reserved - (fp)0, -//;0x02B8 TMR0_CMI0A - (fp)vT0_1_ISR_Handler, -//;0x02BC TMR0_CMI0B - (fp)INT_Excep_TMR0_CMI0B, -//;0x02C0 TMR0_OV0I - (fp)INT_Excep_TMR0_OV0I, -//;0x02C4 TMR1_CMI1A - (fp)INT_Excep_TMR1_CMI1A, -//;0x02C8 TMR1_CMI1B - (fp)INT_Excep_TMR1_CMI1B, -//;0x02CC TMR1_OV1I - (fp)INT_Excep_TMR1_OV1I, -//;0x02D0 TMR2_CMI2A - (fp)vT2_3_ISR_Handler, -//;0x02D4 TMR2_CMI2B - (fp)INT_Excep_TMR2_CMI2B, -//;0x02D8 TMR2_OV2I - (fp)INT_Excep_TMR2_OV2I, -//;0x02DC TMR3_CMI3A - (fp)INT_Excep_TMR3_CMI3A, -//;0x02E0 TMR3_CMI3B - (fp)INT_Excep_TMR3_CMI3B, -//;0x02E4 TMR3_OV3I - (fp)INT_Excep_TMR3_OV3I, -//;0x02E8 Reserved - (fp)0, -//;0x02EC Reserved - (fp)0, -//;0x02F0 Reserved - (fp)0, -//;0x02F4 Reserved - (fp)0, -//;0x02F8 Reserved - (fp)0, -//;0x02FC Reserved - (fp)0, -//;0x0300 Reserved - (fp)0, -//;0x0304 Reserved - (fp)0, -//;0x0308 Reserved - (fp)0, -//;0x030C Reserved - (fp)0, -//;0x0310 Reserved - (fp)0, -//;0x0314 Reserved - (fp)0, -//;0x0318 DMAC_DMTEND0 - (fp)INT_Excep_DMAC_DMTEND0, -//;0x031C DMAC_DMTEND1 - (fp)INT_Excep_DMAC_DMTEND1, -//;0x0320 DMAC_DMTEND2 - (fp)INT_Excep_DMAC_DMTEND2, -//;0x0324 DMAC_DMTEND3 - (fp)INT_Excep_DMAC_DMTEND3, -//;0x0328 Reserved - (fp)0, -//;0x032C Reserved - (fp)0, -//;0x0330 Reserved - (fp)0, -//;0x0334 Reserved - (fp)0, -//;0x0338 Reserved - (fp)0, -//;0x033C Reserved - (fp)0, -//;0x0340 Reserved - (fp)0, -//;0x0344 Reserved - (fp)0, -//;0x0348 Reserved - (fp)0, -//;0x034C Reserved - (fp)0, -//;0x0350 Reserved - (fp)0, -//;0x0354 Reserved - (fp)0, -//;0x0358 SCI0_ERI0 - (fp)INT_Excep_SCI0_ERI0, -//;0x035C SCI0_RXI0 - (fp)INT_Excep_SCI0_RXI0, -//;0x0360 SCI0_TXI0 - (fp)INT_Excep_SCI0_TXI0, -//;0x0364 SCI0_TEI0 - (fp)INT_Excep_SCI0_TEI0, -//;0x0368 SCI1_ERI1 - (fp)INT_Excep_SCI1_ERI1, -//;0x036C SCI1_RXI1 - (fp)INT_Excep_SCI1_RXI1, -//;0x0370 SCI1_TXI1 - (fp)INT_Excep_SCI1_TXI1, -//;0x0374 SCI1_TEI1 - (fp)INT_Excep_SCI1_TEI1, -//;0x0378 SCI2_ERI2 - (fp)INT_Excep_SCI2_ERI2, -//;0x037C SCI2_RXI2 - (fp)INT_Excep_SCI2_RXI2, -//;0x0380 SCI2_TXI2 - (fp)INT_Excep_SCI2_TXI2, -//;0x0384 SCI2_TEI2 - (fp)INT_Excep_SCI2_TEI2, -//;0x0388 SCI3_ERI3 - (fp)INT_Excep_SCI3_ERI3, -//;0x038C SCI3_RXI3 - (fp)INT_Excep_SCI3_RXI3, -//;0x0390 SCI3_TXI3 - (fp)INT_Excep_SCI3_TXI3, -//;0x0394 SCI3_TEI3 - (fp)INT_Excep_SCI3_TEI3, -//;0x0398 SCI4_ERI4 - (fp)INT_Excep_SCI4_ERI4, -//;0x039C SCI4_RXI4 - (fp)INT_Excep_SCI4_RXI4, -//;0x03A0 SCI4_TXI4 - (fp)INT_Excep_SCI4_TXI4, -//;0x03A4 SCI4_TEI4 - (fp)INT_Excep_SCI4_TEI4, -//;0x03A8 SCI5_ERI5 - (fp)INT_Excep_SCI5_ERI5, -//;0x03AC SCI5_RXI5 - (fp)INT_Excep_SCI5_RXI5, -//;0x03B0 SCI5_TXI5 - (fp)INT_Excep_SCI5_TXI5, -//;0x03B4 SCI5_TEI5 - (fp)INT_Excep_SCI5_TEI5, -//;0x03B8 SCI6_ERI6 - (fp)INT_Excep_SCI6_ERI6, -//;0x03BC SCI6_RXI6 - (fp)INT_Excep_SCI6_RXI6, -//;0x03C0 SCI6_TXI6 - (fp)INT_Excep_SCI6_TXI6, -//;0x03C4 SCI6_TEI6 - (fp)INT_Excep_SCI6_TEI6, -//;0x03C8 Reserved - (fp)0, -//;0x03CC Reserved - (fp)0, -//;0x03D0 Reserved - (fp)0, -//;0x03D4 Reserved - (fp)0, -//;0x03D8 RIIC0_EEI0 - (fp)INT_Excep_RIIC0_EEI0, -//;0x03DC RIIC0_RXI0 - (fp)INT_Excep_RIIC0_RXI0, -//;0x03E0 RIIC0_TXI0 - (fp)INT_Excep_RIIC0_TXI0, -//;0x03E4 RIIC0_TEI0 - (fp)INT_Excep_RIIC0_TEI0, -//;0x03E8 RIIC1_EEI1 - (fp)INT_Excep_RIIC1_EEI1, -//;0x03EC RIIC1_RXI1 - (fp)INT_Excep_RIIC1_RXI1, -//;0x03F0 RIIC1_TXI1 - (fp)INT_Excep_RIIC1_TXI1, -//;0x03F4 RIIC1_TEI1 - (fp)INT_Excep_RIIC1_TEI1, -//;0x03F8 Reserved - (fp)0, -//;0x03FC Reserved - (fp)0, -}; diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/webserver/EMAC.c b/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/webserver/EMAC.c deleted file mode 100644 index 01ef9effb..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/webserver/EMAC.c +++ /dev/null @@ -1,534 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* Hardware specific includes. */ -#include "iodefine.h" -#include "typedefine.h" -#include "r_ether.h" -#include "phy.h" - -/* FreeRTOS includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "semphr.h" - -/* uIP includes. */ -#include "net/uip.h" - -/* The time to wait between attempts to obtain a free buffer. */ -#define emacBUFFER_WAIT_DELAY_ms ( 3 / portTICK_PERIOD_MS ) - -/* The number of times emacBUFFER_WAIT_DELAY_ms should be waited before giving -up on attempting to obtain a free buffer all together. */ -#define emacBUFFER_WAIT_ATTEMPTS ( 30 ) - -/* The number of Rx descriptors. */ -#define emacNUM_RX_DESCRIPTORS 8 - -/* The number of Tx descriptors. When using uIP there is not point in having -more than two. */ -#define emacNUM_TX_BUFFERS 2 - -/* The total number of EMAC buffers to allocate. */ -#define emacNUM_BUFFERS ( emacNUM_RX_DESCRIPTORS + emacNUM_TX_BUFFERS ) - -/* The time to wait for the Tx descriptor to become free. */ -#define emacTX_WAIT_DELAY_ms ( 10 / portTICK_PERIOD_MS ) - -/* The total number of times to wait emacTX_WAIT_DELAY_ms for the Tx descriptor to -become free. */ -#define emacTX_WAIT_ATTEMPTS ( 50 ) - -/* Only Rx end and Tx end interrupts are used by this driver. */ -#define emacTX_END_INTERRUPT ( 1UL << 21UL ) -#define emacRX_END_INTERRUPT ( 1UL << 18UL ) - -/*-----------------------------------------------------------*/ - -/* The buffers and descriptors themselves. */ -static volatile ethfifo xRxDescriptors[ emacNUM_RX_DESCRIPTORS ] __attribute__((aligned(16))); -static volatile ethfifo xTxDescriptors[ emacNUM_TX_BUFFERS ] __attribute__((aligned(16))); -static char xEthernetBuffers[ emacNUM_BUFFERS ][ UIP_BUFSIZE ] __attribute__((aligned(16))); - -/* Used to indicate which buffers are free and which are in use. If an index -contains 0 then the corresponding buffer in xEthernetBuffers is free, otherwise -the buffer is in use or about to be used. */ -static unsigned char ucBufferInUse[ emacNUM_BUFFERS ]; - -/*-----------------------------------------------------------*/ - -/* - * Initialise both the Rx and Tx descriptors. - */ -static void prvInitialiseDescriptors( void ); - -/* - * Return a pointer to a free buffer within xEthernetBuffers. - */ -static unsigned char *prvGetNextBuffer( void ); - -/* - * Return a buffer to the list of free buffers. - */ -static void prvReturnBuffer( unsigned char *pucBuffer ); - -/* - * Examine the status of the next Rx FIFO to see if it contains new data. - */ -static unsigned long prvCheckRxFifoStatus( void ); - -/* - * Setup the microcontroller for communication with the PHY. - */ -static void prvResetMAC( void ); - -/* - * Configure the Ethernet interface peripherals. - */ -static void prvConfigureEtherCAndEDMAC( void ); - -/* - * Something has gone wrong with the descriptor usage. Reset all the buffers - * and descriptors. - */ -static void prvResetEverything( void ); - -/* - * Handler for the EMAC peripheral. See the documentation for this - * port on http://www.FreeRTOS.org for more information on defining interrupt - * handlers. - */ -void vEMAC_ISR_Handler( void ) __attribute__((interrupt)); - -/*-----------------------------------------------------------*/ - -/* Points to the Rx descriptor currently in use. */ -static ethfifo *pxCurrentRxDesc = NULL; - -/* The buffer used by the uIP stack to both receive and send. This points to -one of the Ethernet buffers when its actually in use. */ -unsigned char *uip_buf = NULL; - -/*-----------------------------------------------------------*/ - -void vInitEmac( void ) -{ - /* Software reset. */ - prvResetMAC(); - - /* Set the Rx and Tx descriptors into their initial state. */ - prvInitialiseDescriptors(); - - /* Set the MAC address into the ETHERC */ - ETHERC.MAHR = ( ( unsigned long ) configMAC_ADDR0 << 24UL ) | - ( ( unsigned long ) configMAC_ADDR1 << 16UL ) | - ( ( unsigned long ) configMAC_ADDR2 << 8UL ) | - ( unsigned long ) configMAC_ADDR3; - - ETHERC.MALR.BIT.MA = ( ( unsigned long ) configMAC_ADDR4 << 8UL ) | - ( unsigned long ) configMAC_ADDR5; - - /* Perform rest of interface hardware configuration. */ - prvConfigureEtherCAndEDMAC(); - - /* Nothing received yet, so uip_buf points nowhere. */ - uip_buf = NULL; - - /* Initialize the PHY */ - phy_init(); -} -/*-----------------------------------------------------------*/ - -void vEMACWrite( void ) -{ -long x; - - /* Wait until the second transmission of the last packet has completed. */ - for( x = 0; x < emacTX_WAIT_ATTEMPTS; x++ ) - { - if( ( xTxDescriptors[ 1 ].status & ACT ) != 0 ) - { - /* Descriptor is still active. */ - vTaskDelay( emacTX_WAIT_DELAY_ms ); - } - else - { - break; - } - } - - /* Is the descriptor free after waiting for it? */ - if( ( xTxDescriptors[ 1 ].status & ACT ) != 0 ) - { - /* Something has gone wrong. */ - prvResetEverything(); - } - - /* Setup both descriptors to transmit the frame. */ - xTxDescriptors[ 0 ].buf_p = ( char * ) uip_buf; - xTxDescriptors[ 0 ].bufsize = uip_len; - xTxDescriptors[ 1 ].buf_p = ( char * ) uip_buf; - xTxDescriptors[ 1 ].bufsize = uip_len; - - /* uip_buf is being sent by the Tx descriptor. Allocate a new buffer - for use by the stack. */ - uip_buf = prvGetNextBuffer(); - - /* Clear previous settings and go. */ - xTxDescriptors[0].status &= ~( FP1 | FP0 ); - xTxDescriptors[0].status |= ( FP1 | FP0 | ACT ); - xTxDescriptors[1].status &= ~( FP1 | FP0 ); - xTxDescriptors[1].status |= ( FP1 | FP0 | ACT ); - - EDMAC.EDTRR.LONG = 0x00000001; -} -/*-----------------------------------------------------------*/ - -unsigned long ulEMACRead( void ) -{ -unsigned long ulBytesReceived; - - ulBytesReceived = prvCheckRxFifoStatus(); - - if( ulBytesReceived > 0 ) - { - /* Mark the pxDescriptor buffer as free as uip_buf is going to be set to - the buffer that contains the received data. */ - prvReturnBuffer( uip_buf ); - - /* Point uip_buf to the data about ot be processed. */ - uip_buf = ( void * ) pxCurrentRxDesc->buf_p; - - /* Allocate a new buffer to the descriptor, as uip_buf is now using it's - old descriptor. */ - pxCurrentRxDesc->buf_p = ( char * ) prvGetNextBuffer(); - - /* Prepare the descriptor to go again. */ - pxCurrentRxDesc->status &= ~( FP1 | FP0 ); - pxCurrentRxDesc->status |= ACT; - - /* Move onto the next buffer in the ring. */ - pxCurrentRxDesc = pxCurrentRxDesc->next; - - if( EDMAC.EDRRR.LONG == 0x00000000L ) - { - /* Restart Ethernet if it has stopped */ - EDMAC.EDRRR.LONG = 0x00000001L; - } - } - - return ulBytesReceived; -} -/*-----------------------------------------------------------*/ - -long lEMACWaitForLink( void ) -{ -long lReturn; - - /* Set the link status. */ - switch( phy_set_autonegotiate() ) - { - /* Half duplex link */ - case PHY_LINK_100H: - ETHERC.ECMR.BIT.DM = 0; - ETHERC.ECMR.BIT.RTM = 1; - lReturn = pdPASS; - break; - - case PHY_LINK_10H: - ETHERC.ECMR.BIT.DM = 0; - ETHERC.ECMR.BIT.RTM = 0; - lReturn = pdPASS; - break; - - - /* Full duplex link */ - case PHY_LINK_100F: - ETHERC.ECMR.BIT.DM = 1; - ETHERC.ECMR.BIT.RTM = 1; - lReturn = pdPASS; - break; - - case PHY_LINK_10F: - ETHERC.ECMR.BIT.DM = 1; - ETHERC.ECMR.BIT.RTM = 0; - lReturn = pdPASS; - break; - - default: - lReturn = pdFAIL; - break; - } - - if( lReturn == pdPASS ) - { - /* Enable receive and transmit. */ - ETHERC.ECMR.BIT.RE = 1; - ETHERC.ECMR.BIT.TE = 1; - - /* Enable EDMAC receive */ - EDMAC.EDRRR.LONG = 0x1; - } - - return lReturn; -} -/*-----------------------------------------------------------*/ - -static void prvInitialiseDescriptors( void ) -{ -volatile ethfifo *pxDescriptor; -long x; - - for( x = 0; x < emacNUM_BUFFERS; x++ ) - { - /* Ensure none of the buffers are shown as in use at the start. */ - ucBufferInUse[ x ] = pdFALSE; - } - - /* Initialise the Rx descriptors. */ - for( x = 0; x < emacNUM_RX_DESCRIPTORS; x++ ) - { - pxDescriptor = &( xRxDescriptors[ x ] ); - pxDescriptor->buf_p = &( xEthernetBuffers[ x ][ 0 ] ); - - pxDescriptor->bufsize = UIP_BUFSIZE; - pxDescriptor->size = 0; - pxDescriptor->status = ACT; - pxDescriptor->next = ( struct Descriptor * ) &xRxDescriptors[ x + 1 ]; - - /* Mark this buffer as in use. */ - ucBufferInUse[ x ] = pdTRUE; - } - - /* The last descriptor points back to the start. */ - pxDescriptor->status |= DL; - pxDescriptor->next = ( struct Descriptor * ) &xRxDescriptors[ 0 ]; - - /* Initialise the Tx descriptors. */ - for( x = 0; x < emacNUM_TX_BUFFERS; x++ ) - { - pxDescriptor = &( xTxDescriptors[ x ] ); - - /* A buffer is not allocated to the Tx descriptor until a send is - actually required. */ - pxDescriptor->buf_p = NULL; - - pxDescriptor->bufsize = UIP_BUFSIZE; - pxDescriptor->size = 0; - pxDescriptor->status = 0; - pxDescriptor->next = ( struct Descriptor * ) &xTxDescriptors[ x + 1 ]; - } - - /* The last descriptor points back to the start. */ - pxDescriptor->status |= DL; - pxDescriptor->next = ( struct Descriptor * ) &( xTxDescriptors[ 0 ] ); - - /* Use the first Rx descriptor to start with. */ - pxCurrentRxDesc = ( struct Descriptor * ) &( xRxDescriptors[ 0 ] ); -} -/*-----------------------------------------------------------*/ - -static unsigned char *prvGetNextBuffer( void ) -{ -long x; -unsigned char *pucReturn = NULL; -unsigned long ulAttempts = 0; - - while( pucReturn == NULL ) - { - /* Look through the buffers to find one that is not in use by - anything else. */ - for( x = 0; x < emacNUM_BUFFERS; x++ ) - { - if( ucBufferInUse[ x ] == pdFALSE ) - { - ucBufferInUse[ x ] = pdTRUE; - pucReturn = ( unsigned char * ) &( xEthernetBuffers[ x ][ 0 ] ); - break; - } - } - - /* Was a buffer found? */ - if( pucReturn == NULL ) - { - ulAttempts++; - - if( ulAttempts >= emacBUFFER_WAIT_ATTEMPTS ) - { - break; - } - - /* Wait then look again. */ - vTaskDelay( emacBUFFER_WAIT_DELAY_ms ); - } - } - - return pucReturn; -} -/*-----------------------------------------------------------*/ - -static void prvReturnBuffer( unsigned char *pucBuffer ) -{ -unsigned long ul; - - /* Return a buffer to the pool of free buffers. */ - for( ul = 0; ul < emacNUM_BUFFERS; ul++ ) - { - if( &( xEthernetBuffers[ ul ][ 0 ] ) == ( void * ) pucBuffer ) - { - ucBufferInUse[ ul ] = pdFALSE; - break; - } - } -} -/*-----------------------------------------------------------*/ - -static void prvResetEverything( void ) -{ - /* Temporary code just to see if this gets called. This function has not - been implemented. */ - portDISABLE_INTERRUPTS(); - for( ;; ); -} -/*-----------------------------------------------------------*/ - -static unsigned long prvCheckRxFifoStatus( void ) -{ -unsigned long ulReturn = 0; - - if( ( pxCurrentRxDesc->status & ACT ) != 0 ) - { - /* Current descriptor is still active. */ - } - else if( ( pxCurrentRxDesc->status & FE ) != 0 ) - { - /* Frame error. Clear the error. */ - pxCurrentRxDesc->status &= ~( FP1 | FP0 | FE ); - pxCurrentRxDesc->status &= ~( RMAF | RRF | RTLF | RTSF | PRE | CERF ); - pxCurrentRxDesc->status |= ACT; - pxCurrentRxDesc = pxCurrentRxDesc->next; - - if( EDMAC.EDRRR.LONG == 0x00000000UL ) - { - /* Restart Ethernet if it has stopped. */ - EDMAC.EDRRR.LONG = 0x00000001UL; - } - } - else - { - /* The descriptor contains a frame. Because of the size of the buffers - the frame should always be complete. */ - if( ( pxCurrentRxDesc->status & FP0 ) == FP0 ) - { - ulReturn = pxCurrentRxDesc->size; - } - else - { - /* Do not expect to get here. */ - prvResetEverything(); - } - } - - return ulReturn; -} -/*-----------------------------------------------------------*/ - -static void prvResetMAC( void ) -{ - /* Ensure the EtherC and EDMAC are enabled. */ - SYSTEM.MSTPCRB.BIT.MSTPB15 = 0; - vTaskDelay( 100 / portTICK_PERIOD_MS ); - - EDMAC.EDMR.BIT.SWR = 1; - - /* Crude wait for reset to complete. */ - vTaskDelay( 500 / portTICK_PERIOD_MS ); -} -/*-----------------------------------------------------------*/ - -static void prvConfigureEtherCAndEDMAC( void ) -{ - /* Initialisation code taken from Renesas example project. */ - - /* TODO: Check bit 5 */ - ETHERC.ECSR.LONG = 0x00000037; /* Clear all ETHERC statuS BFR, PSRTO, LCHNG, MPD, ICD */ - - /* Set the EDMAC interrupt priority. */ - _IPR( _ETHER_EINT ) = configKERNEL_INTERRUPT_PRIORITY; - - /* TODO: Check bit 5 */ - /* Enable interrupts of interest only. */ - EDMAC.EESIPR.LONG = emacTX_END_INTERRUPT | emacRX_END_INTERRUPT; - ETHERC.RFLR.LONG = 1518; /* Ether payload is 1500+ CRC */ - ETHERC.IPGR.LONG = 0x00000014; /* Intergap is 96-bit time */ - - /* EDMAC */ - EDMAC.EESR.LONG = 0x47FF0F9F; /* Clear all ETHERC and EDMAC status bits */ - #ifdef __RX_LITTLE_ENDIAN__ - EDMAC.EDMR.BIT.DE = 1; - #endif - EDMAC.RDLAR = ( void * ) pxCurrentRxDesc; /* Initialaize Rx Descriptor List Address */ - EDMAC.TDLAR = ( void * ) &( xTxDescriptors[ 0 ] ); /* Initialaize Tx Descriptor List Address */ - EDMAC.TRSCER.LONG = 0x00000000; /* Copy-back status is RFE & TFE only */ - EDMAC.TFTR.LONG = 0x00000000; /* Threshold of Tx_FIFO */ - EDMAC.FDR.LONG = 0x00000000; /* Transmit fifo & receive fifo is 256 bytes */ - EDMAC.RMCR.LONG = 0x00000003; /* Receive function is normal mode(continued) */ - ETHERC.ECMR.BIT.PRM = 0; /* Ensure promiscuous mode is off. */ - - /* Enable the interrupt... */ - _IEN( _ETHER_EINT ) = 1; -} -/*-----------------------------------------------------------*/ - -void vEMAC_ISR_Handler( void ) -{ -unsigned long ul = EDMAC.EESR.LONG; -long lHigherPriorityTaskWoken = pdFALSE; -extern QueueHandle_t xEMACEventQueue; -const unsigned long ulRxEvent = uipETHERNET_RX_EVENT; - - /* Re-enabled interrupts. */ - __asm volatile( "SETPSW I" ); - - /* Has a Tx end occurred? */ - if( ul & emacTX_END_INTERRUPT ) - { - /* Only return the buffer to the pool once both Txes have completed. */ - prvReturnBuffer( ( void * ) xTxDescriptors[ 0 ].buf_p ); - EDMAC.EESR.LONG = emacTX_END_INTERRUPT; - } - - /* Has an Rx end occurred? */ - if( ul & emacRX_END_INTERRUPT ) - { - /* Make sure the Ethernet task is not blocked waiting for a packet. */ - xQueueSendFromISR( xEMACEventQueue, &ulRxEvent, &lHigherPriorityTaskWoken ); - portYIELD_FROM_ISR( lHigherPriorityTaskWoken ); - EDMAC.EESR.LONG = emacRX_END_INTERRUPT; - } -} - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/webserver/httpd-cgi.c b/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/webserver/httpd-cgi.c deleted file mode 100644 index be4d71175..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/webserver/httpd-cgi.c +++ /dev/null @@ -1,277 +0,0 @@ -/** - * \addtogroup httpd - * @{ - */ - -/** - * \file - * Web server script interface - * \author - * Adam Dunkels - * - */ - -/* - * Copyright (c) 2001-2006, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: httpd-cgi.c,v 1.2 2006/06/11 21:46:37 adam Exp $ - * - */ -#include "net/uip.h" -#include "net/psock.h" -#include "apps/httpd/httpd.h" -#include "apps/httpd/httpd-cgi.h" -#include "apps/httpd/httpd-fs.h" - -#include -#include - -#include "FreeRTOS.h" -#include "task.h" - -HTTPD_CGI_CALL( file, "file-stats", file_stats ); -HTTPD_CGI_CALL( tcp, "tcp-connections", tcp_stats ); -HTTPD_CGI_CALL( net, "net-stats", net_stats ); -HTTPD_CGI_CALL( rtos, "rtos-stats", rtos_stats ); -HTTPD_CGI_CALL( run, "run-time", run_time ); -HTTPD_CGI_CALL( io, "led-io", led_io ); - -static const struct httpd_cgi_call *calls[] = { &file, &tcp, &net, &rtos, &run, &io, NULL }; - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( nullfunction ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - ( void ) PT_YIELD_FLAG; - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -httpd_cgifunction httpd_cgi( char *name ) -{ - const struct httpd_cgi_call **f; - - /* Find the matching name in the table, return the function. */ - for( f = calls; *f != NULL; ++f ) - { - if( strncmp((*f)->name, name, strlen((*f)->name)) == 0 ) - { - return( *f )->function; - } - } - - return nullfunction; -} - -/*---------------------------------------------------------------------------*/ -static unsigned short generate_file_stats( void *arg ) -{ - char *f = ( char * ) arg; - return sprintf( ( char * ) uip_appdata, "%5u", httpd_fs_count(f) ); -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( file_stats ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - - ( void ) PT_YIELD_FLAG; - - PSOCK_GENERATOR_SEND( &s->sout, generate_file_stats, strchr(ptr, ' ') + 1 ); - - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -static const char closed[] = /* "CLOSED",*/ { 0x43, 0x4c, 0x4f, 0x53, 0x45, 0x44, 0 }; -static const char syn_rcvd[] = /* "SYN-RCVD",*/ { 0x53, 0x59, 0x4e, 0x2d, 0x52, 0x43, 0x56, 0x44, 0 }; -static const char syn_sent[] = /* "SYN-SENT",*/ { 0x53, 0x59, 0x4e, 0x2d, 0x53, 0x45, 0x4e, 0x54, 0 }; -static const char established[] = /* "ESTABLISHED",*/ { 0x45, 0x53, 0x54, 0x41, 0x42, 0x4c, 0x49, 0x53, 0x48, 0x45, 0x44, 0 }; -static const char fin_wait_1[] = /* "FIN-WAIT-1",*/ { 0x46, 0x49, 0x4e, 0x2d, 0x57, 0x41, 0x49, 0x54, 0x2d, 0x31, 0 }; -static const char fin_wait_2[] = /* "FIN-WAIT-2",*/ { 0x46, 0x49, 0x4e, 0x2d, 0x57, 0x41, 0x49, 0x54, 0x2d, 0x32, 0 }; -static const char closing[] = /* "CLOSING",*/ { 0x43, 0x4c, 0x4f, 0x53, 0x49, 0x4e, 0x47, 0 }; -static const char time_wait[] = /* "TIME-WAIT,"*/ { 0x54, 0x49, 0x4d, 0x45, 0x2d, 0x57, 0x41, 0x49, 0x54, 0 }; -static const char last_ack[] = /* "LAST-ACK"*/ { 0x4c, 0x41, 0x53, 0x54, 0x2d, 0x41, 0x43, 0x4b, 0 }; - -static const char *states[] = { closed, syn_rcvd, syn_sent, established, fin_wait_1, fin_wait_2, closing, time_wait, last_ack }; - -static unsigned short generate_tcp_stats( void *arg ) -{ - struct uip_conn *conn; - struct httpd_state *s = ( struct httpd_state * ) arg; - - conn = &uip_conns[s->count]; - return sprintf( ( char * ) uip_appdata, - "\r\n", htons(conn->lport), - htons(conn->ripaddr.u16[0]) >> 8, htons(conn->ripaddr.u16[0]) & 0xff, htons(conn->ripaddr.u16[1]) >> 8, - htons(conn->ripaddr.u16[1]) & 0xff, htons(conn->rport), states[conn->tcpstateflags & UIP_TS_MASK], conn->nrtx, conn->timer, - (uip_outstanding(conn)) ? '*' : ' ', (uip_stopped(conn)) ? '!' : ' ' ); -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( tcp_stats ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - ( void ) PT_YIELD_FLAG; - for( s->count = 0; s->count < UIP_CONNS; ++s->count ) - { - if( (uip_conns[s->count].tcpstateflags & UIP_TS_MASK) != UIP_CLOSED ) - { - PSOCK_GENERATOR_SEND( &s->sout, generate_tcp_stats, s ); - } - } - - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -static unsigned short generate_net_stats( void *arg ) -{ - struct httpd_state *s = ( struct httpd_state * ) arg; - return sprintf( ( char * ) uip_appdata, "%5u\n", (( uip_stats_t * ) &uip_stat)[s->count] ); -} - -static PT_THREAD( net_stats ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - ( void ) PT_YIELD_FLAG; -#if UIP_STATISTICS - for( s->count = 0; s->count < sizeof(uip_stat) / sizeof(uip_stats_t); ++s->count ) - { - PSOCK_GENERATOR_SEND( &s->sout, generate_net_stats, s ); - } - -#endif /* UIP_STATISTICS */ - - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -extern void vTaskList( char *pcWriteBuffer ); -extern char *pcGetTaskStatusMessage( void ); -static char cCountBuf[128]; -long lRefreshCount = 0; -static unsigned short generate_rtos_stats( void *arg ) -{ - ( void ) arg; - lRefreshCount++; - sprintf( cCountBuf, "


Refresh count = %d


%s", ( int ) lRefreshCount, pcGetTaskStatusMessage() ); - vTaskList( ( char * ) uip_appdata ); - strcat( uip_appdata, cCountBuf ); - - return strlen( uip_appdata ); -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( rtos_stats ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - ( void ) PT_YIELD_FLAG; - PSOCK_GENERATOR_SEND( &s->sout, generate_rtos_stats, NULL ); - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -char *pcStatus; -unsigned long ulString; - -static unsigned short generate_io_state( void *arg ) -{ - extern long lParTestGetLEDState( unsigned long ulLED ); - ( void ) arg; - - /* Are the dynamically setable LEDs currently on or off? */ - if( lParTestGetLEDState( 8 ) ) - { - pcStatus = "checked"; - } - else - { - pcStatus = ""; - } - - sprintf( uip_appdata, "LED

", pcStatus ); - - return strlen( uip_appdata ); -} - -/*---------------------------------------------------------------------------*/ -extern void vTaskGetRunTimeStats( char *pcWriteBuffer ); -extern unsigned short usMaxJitter; -static char cJitterBuffer[ 200 ]; -static unsigned short generate_runtime_stats( void *arg ) -{ - ( void ) arg; - lRefreshCount++; - sprintf( cCountBuf, "


Refresh count = %d", ( int ) lRefreshCount ); - - #ifdef INCLUDE_HIGH_FREQUENCY_TIMER_TEST - { - sprintf( cJitterBuffer, "


Max high frequency timer jitter = %d peripheral clock periods.


", ( int ) usMaxJitter ); - vTaskGetRunTimeStats( ( char * ) uip_appdata ); - strcat( uip_appdata, cJitterBuffer ); - } - #else - { - ( void ) cJitterBuffer; - strcpy( uip_appdata, "

Run time stats are only available in the debug_with_optimisation build configuration.

" ); - } - #endif - - strcat( uip_appdata, cCountBuf ); - - return strlen( uip_appdata ); -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( run_time ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - ( void ) PT_YIELD_FLAG; - PSOCK_GENERATOR_SEND( &s->sout, generate_runtime_stats, NULL ); - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( led_io ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - ( void ) PT_YIELD_FLAG; - PSOCK_GENERATOR_SEND( &s->sout, generate_io_state, NULL ); - PSOCK_END( &s->sout ); -} - -/** @} */ diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/webserver/httpd-fs/404.html b/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/webserver/httpd-fs/404.html deleted file mode 100644 index 43e7f4cad..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/webserver/httpd-fs/404.html +++ /dev/null @@ -1,8 +0,0 @@ - - -

-

404 - file not found

-

Go here instead.

-
- - \ No newline at end of file diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/webserver/httpd-fs/index.html b/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/webserver/httpd-fs/index.html deleted file mode 100644 index 4937dc69a..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/webserver/httpd-fs/index.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Loading index.shtml. Click here if not automatically redirected. - - - - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/webserver/httpd-fs/index.shtml b/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/webserver/httpd-fs/index.shtml deleted file mode 100644 index 882d085ce..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/webserver/httpd-fs/index.shtml +++ /dev/null @@ -1,20 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS Homepage | IO | 37K jpg -

-


-

-

Task statistics

-Page will refresh every 2 seconds.

-

Task          State  Priority  Stack	#
************************************************
-%! rtos-stats -
-
- - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/webserver/httpd-fs/io.shtml b/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/webserver/httpd-fs/io.shtml deleted file mode 100644 index 819e2d39b..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/webserver/httpd-fs/io.shtml +++ /dev/null @@ -1,28 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS Homepage | IO | 37K jpg -

-


-LED and LCD IO
- -

- -Use the check box to turn on or off LED 4, then click "Update IO". - - -

-
-%! led-io -

- - -

- - - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/webserver/httpd-fs/runtime.shtml b/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/webserver/httpd-fs/runtime.shtml deleted file mode 100644 index 3464fd471..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/webserver/httpd-fs/runtime.shtml +++ /dev/null @@ -1,20 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS Homepage | IO | 37K jpg -

-


-

-

Run-time statistics

-Page will refresh every 2 seconds.

-

Task            Abs Time      % Time
****************************************
-%! run-time -
-
- - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/webserver/httpd-fs/stats.shtml b/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/webserver/httpd-fs/stats.shtml deleted file mode 100644 index f54118606..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/webserver/httpd-fs/stats.shtml +++ /dev/null @@ -1,47 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS Homepage | IO | 37K jpg -

-


-

-

Network statistics

-
LocalRemoteStateRetransmissionsTimerFlags
%d%u.%u.%u.%u:%u%s%u%u%c %c
-
-IP           Packets received
-             Packets sent
-             Forwaded
-             Dropped
-IP errors    IP version/header length
-             IP length, high byte
-             IP length, low byte
-             IP fragments
-             Header checksum
-             Wrong protocol
-ICMP	     Packets received
-             Packets sent
-             Packets dropped
-             Type errors
-             Checksum errors
-TCP          Packets received
-             Packets sent
-             Packets dropped
-             Checksum errors
-             Data packets without ACKs
-             Resets
-             Retransmissionsa
-             Syn to closed port
-UDP          Packets dropped
-             Packets received
-             Packets sent
-             Packets chkerr
-	     No connection avaliable
-
%! net-stats
-
- - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/webserver/httpd-fs/tcp.shtml b/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/webserver/httpd-fs/tcp.shtml deleted file mode 100644 index 23dcdcae3..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/webserver/httpd-fs/tcp.shtml +++ /dev/null @@ -1,21 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS Homepage | IO | 37K jpg -

-


-
-

Network connections

-

- - -%! tcp-connections - - - - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/webserver/httpd-fsdata.c b/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/webserver/httpd-fsdata.c deleted file mode 100644 index 47823d100..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/webserver/httpd-fsdata.c +++ /dev/null @@ -1,3871 +0,0 @@ -static const char data_404_html[] = { - /* /404.html */ - 0x2f, 0x34, 0x30, 0x34, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, 0xa, 0x20, 0x20, - 0x3c, 0x62, 0x6f, 0x64, 0x79, 0x20, 0x62, 0x67, 0x63, 0x6f, - 0x6c, 0x6f, 0x72, 0x3d, 0x22, 0x77, 0x68, 0x69, 0x74, 0x65, - 0x22, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x63, - 0x65, 0x6e, 0x74, 0x65, 0x72, 0x3e, 0xd, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x3c, 0x68, 0x31, 0x3e, 0x34, 0x30, - 0x34, 0x20, 0x2d, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x6e, - 0x6f, 0x74, 0x20, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x3c, 0x2f, - 0x68, 0x31, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x3c, 0x68, 0x33, 0x3e, 0x47, 0x6f, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x2f, 0x22, 0x3e, - 0x68, 0x65, 0x72, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x69, - 0x6e, 0x73, 0x74, 0x65, 0x61, 0x64, 0x2e, 0x3c, 0x2f, 0x68, - 0x33, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x2f, - 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x3e, 0xd, 0xa, 0x20, - 0x20, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xd, 0xa, - 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0}; - -static const char data_index_html[] = { - /* /index.html */ - 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x20, 0x6f, 0x6e, 0x4c, 0x6f, 0x61, 0x64, - 0x3d, 0x22, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x73, - 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x28, - 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x6c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x68, 0x72, 0x65, 0x66, 0x3d, - 0x27, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, - 0x6d, 0x6c, 0x27, 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x2c, - 0x31, 0x30, 0x30, 0x29, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x66, - 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, - 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xd, 0xa, 0x4c, - 0x6f, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x69, 0x6e, 0x64, - 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x2e, 0x20, - 0x20, 0x43, 0x6c, 0x69, 0x63, 0x6b, 0x20, 0x3c, 0x61, 0x20, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x68, - 0x65, 0x72, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x69, 0x66, - 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x61, 0x75, 0x74, 0x6f, 0x6d, - 0x61, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x6c, 0x79, 0x20, 0x72, - 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x65, 0x64, 0x2e, - 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xd, - 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xd, 0xa, - 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xd, 0xa, 0x3c, - 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, 0xa, 0xd, 0xa, -0}; - -static const char data_index_shtml[] = { - /* /index.shtml */ - 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x20, 0x6f, 0x6e, 0x4c, 0x6f, 0x61, 0x64, - 0x3d, 0x22, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x73, - 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x28, - 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x6c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x68, 0x72, 0x65, 0x66, 0x3d, - 0x27, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, - 0x6d, 0x6c, 0x27, 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x2c, - 0x32, 0x30, 0x30, 0x30, 0x29, 0x22, 0x3e, 0xd, 0xa, 0x3c, - 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, - 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xd, 0xa, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x53, 0x74, 0x61, - 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x72, 0x75, 0x6e, 0x74, 0x69, - 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x52, 0x75, 0x6e, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, - 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, - 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x54, 0x43, 0x50, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, - 0x6c, 0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, - 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, - 0x65, 0x65, 0x72, 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, - 0x2f, 0x22, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x20, 0x48, 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, - 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, - 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, - 0x66, 0x3d, 0x22, 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, - 0x6c, 0x22, 0x3e, 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0x20, - 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, - 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x6c, 0x6f, - 0x67, 0x6f, 0x2e, 0x6a, 0x70, 0x67, 0x22, 0x3e, 0x33, 0x37, - 0x4b, 0x20, 0x6a, 0x70, 0x67, 0x3c, 0x2f, 0x61, 0x3e, 0xd, - 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, - 0x3c, 0x68, 0x72, 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, - 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x32, 0x3e, 0x54, - 0x61, 0x73, 0x6b, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, - 0x74, 0x69, 0x63, 0x73, 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0xd, - 0xa, 0x50, 0x61, 0x67, 0x65, 0x20, 0x77, 0x69, 0x6c, 0x6c, - 0x20, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x20, 0x65, - 0x76, 0x65, 0x72, 0x79, 0x20, 0x32, 0x20, 0x73, 0x65, 0x63, - 0x6f, 0x6e, 0x64, 0x73, 0x2e, 0x3c, 0x70, 0x3e, 0xd, 0xa, - 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, - 0x3d, 0x22, 0x63, 0x6f, 0x75, 0x72, 0x69, 0x65, 0x72, 0x22, - 0x3e, 0x3c, 0x70, 0x72, 0x65, 0x3e, 0x54, 0x61, 0x73, 0x6b, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x53, 0x74, 0x61, 0x74, 0x65, 0x20, 0x20, 0x50, 0x72, 0x69, - 0x6f, 0x72, 0x69, 0x74, 0x79, 0x20, 0x20, 0x53, 0x74, 0x61, - 0x63, 0x6b, 0x9, 0x23, 0x3c, 0x62, 0x72, 0x3e, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x3c, 0x62, 0x72, 0x3e, - 0xd, 0xa, 0x25, 0x21, 0x20, 0x72, 0x74, 0x6f, 0x73, 0x2d, - 0x73, 0x74, 0x61, 0x74, 0x73, 0xd, 0xa, 0x3c, 0x2f, 0x70, - 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, - 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xd, - 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xd, 0xa, - 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, 0xa, 0xd, - 0xa, 0}; - -static const char data_io_shtml[] = { - /* /io.shtml */ - 0x2f, 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x6e, - 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, - 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x61, 0x20, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, - 0x61, 0x73, 0x6b, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x52, 0x75, 0x6e, - 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, 0x74, 0x61, 0x74, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x43, 0x50, - 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, - 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, - 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, 0x65, 0x65, 0x72, - 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x22, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x20, 0x48, - 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, - 0x6a, 0x70, 0x67, 0x22, 0x3e, 0x33, 0x37, 0x4b, 0x20, 0x6a, - 0x70, 0x67, 0x3c, 0x2f, 0x61, 0x3e, 0xd, 0xa, 0x3c, 0x62, - 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x72, - 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x3e, 0x4c, 0x45, 0x44, 0x20, - 0x61, 0x6e, 0x64, 0x20, 0x4c, 0x43, 0x44, 0x20, 0x49, 0x4f, - 0x3c, 0x2f, 0x62, 0x3e, 0x3c, 0x62, 0x72, 0x3e, 0xd, 0xa, - 0xd, 0xa, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0xd, 0xa, 0x55, - 0x73, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x68, 0x65, - 0x63, 0x6b, 0x20, 0x62, 0x6f, 0x78, 0x20, 0x74, 0x6f, 0x20, - 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6f, 0x6e, 0x20, 0x6f, 0x72, - 0x20, 0x6f, 0x66, 0x66, 0x20, 0x4c, 0x45, 0x44, 0x20, 0x34, - 0x2c, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x20, 0x63, 0x6c, 0x69, - 0x63, 0x6b, 0x20, 0x22, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x20, 0x49, 0x4f, 0x22, 0x2e, 0xd, 0xa, 0xd, 0xa, 0xd, - 0xa, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x72, - 0x6d, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x22, 0x61, 0x46, - 0x6f, 0x72, 0x6d, 0x22, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x3d, 0x22, 0x2f, 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, - 0x6d, 0x6c, 0x22, 0x20, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, - 0x3d, 0x22, 0x67, 0x65, 0x74, 0x22, 0x3e, 0xd, 0xa, 0x25, - 0x21, 0x20, 0x6c, 0x65, 0x64, 0x2d, 0x69, 0x6f, 0xd, 0xa, - 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x69, 0x6e, 0x70, 0x75, - 0x74, 0x20, 0x74, 0x79, 0x70, 0x65, 0x3d, 0x22, 0x73, 0x75, - 0x62, 0x6d, 0x69, 0x74, 0x22, 0x20, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x3d, 0x22, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, - 0x49, 0x4f, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, - 0x72, 0x6d, 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, - 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, - 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, - 0xd, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, - 0xa, 0xd, 0xa, 0}; - -static const char data_logo_jpg[] = { - /* /logo.jpg */ - 0x2f, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, 0x6a, 0x70, 0x67, 0, - 0xff, 0xd8, 0xff, 0xe0, 00, 0x10, 0x4a, 0x46, 0x49, 0x46, - 00, 0x1, 0x1, 00, 00, 0x1, 00, 0x1, 00, 00, - 0xff, 0xdb, 00, 0x43, 00, 0x3, 0x2, 0x2, 0x3, 0x2, - 0x2, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x3, 0x4, 0x5, - 0x8, 0x5, 0x5, 0x4, 0x4, 0x5, 0xa, 0x7, 0x7, 0x6, - 0x8, 0xc, 0xa, 0xc, 0xc, 0xb, 0xa, 0xb, 0xb, 0xd, - 0xe, 0x12, 0x10, 0xd, 0xe, 0x11, 0xe, 0xb, 0xb, 0x10, - 0x16, 0x10, 0x11, 0x13, 0x14, 0x15, 0x15, 0x15, 0xc, 0xf, - 0x17, 0x18, 0x16, 0x14, 0x18, 0x12, 0x14, 0x15, 0x14, 0xff, - 0xdb, 00, 0x43, 0x1, 0x3, 0x4, 0x4, 0x5, 0x4, 0x5, - 0x9, 0x5, 0x5, 0x9, 0x14, 0xd, 0xb, 0xd, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0xff, 0xc0, - 00, 0x11, 0x8, 0x1, 0x8, 0x2, 0xc2, 0x3, 0x1, 0x22, - 00, 0x2, 0x11, 0x1, 0x3, 0x11, 0x1, 0xff, 0xc4, 00, - 0x1f, 00, 00, 0x1, 0x5, 0x1, 0x1, 0x1, 0x1, 0x1, - 0x1, 00, 00, 00, 00, 00, 00, 00, 00, 0x1, - 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb, - 0xff, 0xc4, 00, 0xb5, 0x10, 00, 0x2, 0x1, 0x3, 0x3, - 0x2, 0x4, 0x3, 0x5, 0x5, 0x4, 0x4, 00, 00, 0x1, - 0x7d, 0x1, 0x2, 0x3, 00, 0x4, 0x11, 0x5, 0x12, 0x21, - 0x31, 0x41, 0x6, 0x13, 0x51, 0x61, 0x7, 0x22, 0x71, 0x14, - 0x32, 0x81, 0x91, 0xa1, 0x8, 0x23, 0x42, 0xb1, 0xc1, 0x15, - 0x52, 0xd1, 0xf0, 0x24, 0x33, 0x62, 0x72, 0x82, 0x9, 0xa, - 0x16, 0x17, 0x18, 0x19, 0x1a, 0x25, 0x26, 0x27, 0x28, 0x29, - 0x2a, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x43, 0x44, - 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x53, 0x54, 0x55, 0x56, - 0x57, 0x58, 0x59, 0x5a, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, - 0x69, 0x6a, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, - 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x92, 0x93, - 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0xa2, 0xa3, 0xa4, - 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xb2, 0xb3, 0xb4, 0xb5, - 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, - 0xc7, 0xc8, 0xc9, 0xca, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, - 0xd8, 0xd9, 0xda, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, - 0xe8, 0xe9, 0xea, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, - 0xf8, 0xf9, 0xfa, 0xff, 0xc4, 00, 0x1f, 0x1, 00, 0x3, - 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 00, - 00, 00, 00, 00, 00, 0x1, 0x2, 0x3, 0x4, 0x5, - 0x6, 0x7, 0x8, 0x9, 0xa, 0xb, 0xff, 0xc4, 00, 0xb5, - 0x11, 00, 0x2, 0x1, 0x2, 0x4, 0x4, 0x3, 0x4, 0x7, - 0x5, 0x4, 0x4, 00, 0x1, 0x2, 0x77, 00, 0x1, 0x2, - 0x3, 0x11, 0x4, 0x5, 0x21, 0x31, 0x6, 0x12, 0x41, 0x51, - 0x7, 0x61, 0x71, 0x13, 0x22, 0x32, 0x81, 0x8, 0x14, 0x42, - 0x91, 0xa1, 0xb1, 0xc1, 0x9, 0x23, 0x33, 0x52, 0xf0, 0x15, - 0x62, 0x72, 0xd1, 0xa, 0x16, 0x24, 0x34, 0xe1, 0x25, 0xf1, - 0x17, 0x18, 0x19, 0x1a, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x35, - 0x36, 0x37, 0x38, 0x39, 0x3a, 0x43, 0x44, 0x45, 0x46, 0x47, - 0x48, 0x49, 0x4a, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, - 0x5a, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x73, - 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x82, 0x83, 0x84, - 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x92, 0x93, 0x94, 0x95, - 0x96, 0x97, 0x98, 0x99, 0x9a, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, - 0xa7, 0xa8, 0xa9, 0xaa, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, - 0xb8, 0xb9, 0xba, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, - 0xc9, 0xca, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, - 0xda, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, - 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xff, - 0xda, 00, 0xc, 0x3, 0x1, 00, 0x2, 0x11, 0x3, 0x11, - 00, 0x3f, 00, 0xfd, 0x53, 0xa2, 0x8a, 0x28, 00, 0xa2, - 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, - 00, 0xaa, 0xf7, 0xfa, 0x85, 0xb6, 0x95, 0x67, 0x2d, 0xd5, - 0xe4, 0xf1, 0xdb, 0x5b, 0x44, 0xa5, 0x9e, 0x59, 0x58, 0x2a, - 0xa8, 0x1e, 0xf5, 0xc6, 0x7c, 0x4e, 0xf8, 0xb3, 0xa6, 0xfc, - 0x39, 0xb4, 0x48, 0xb0, 0xb7, 0xda, 0xd5, 0xc6, 0x5, 0xb6, - 0x9e, 0x8d, 0x86, 0x72, 0x4e, 0x37, 0x37, 0xf7, 0x57, 0xf9, - 0xf6, 0xaa, 0x16, 0x5f, 0xd, 0x9f, 0xc6, 0xd0, 0xc5, 0xa9, - 0xf8, 0xc6, 0xe1, 0xef, 0xa6, 0x99, 0x3, 0xa6, 0x9e, 0x84, - 0xad, 0xbd, 0xb6, 0x7b, 0x2a, 0xf7, 0x3e, 0xe7, 0x9a, 0xe0, - 0xa9, 0x89, 0xbc, 0xdd, 0x1a, 0xb, 0x9a, 0x6b, 0x7e, 0xcb, - 0xd5, 0xfe, 0x9b, 0x9c, 0xb2, 0xaf, 0x79, 0x3a, 0x74, 0xb5, - 0x92, 0xdf, 0xb2, 0xf5, 0xff, 00, 0x23, 0x93, 0xf1, 0xa7, - 0xed, 0x5f, 0xa1, 0x69, 0x1b, 0xa1, 0xd0, 0x2d, 0x64, 0xd6, - 0x2e, 0x1, 0xc7, 0x9b, 0x26, 0x62, 0x84, 0x7d, 0xf, 0x53, - 0xf9, 0x57, 0x91, 0x6b, 0x5f, 0xb5, 0xf, 0x8e, 0x35, 0x49, - 0x9, 0xb7, 0xba, 0xb7, 0xd3, 0x23, 0xec, 0x96, 0xd0, 0x29, - 0xfd, 0x5b, 0x26, 0xbe, 0x92, 0x7f, 0x81, 0x1e, 0xb, 0x7f, - 0xf9, 0x84, 0x46, 0x3e, 0x95, 0xb, 0xfe, 0xcf, 0xfe, 0xa, - 0x93, 0xae, 0x96, 0xa3, 0xe8, 0x6b, 0xc2, 0xaf, 0x84, 0xcd, - 0xab, 0xbb, 0xba, 0xa9, 0x2e, 0xc9, 0xb5, 0xfa, 0x5c, 0xf0, - 0xb1, 0x18, 0x4c, 0xce, 0xbb, 0xd2, 0xb2, 0x8a, 0xec, 0xb4, - 0xff, 00, 0x82, 0x7c, 0x91, 0x3f, 0xc6, 0xf, 0x19, 0x5c, - 0x48, 0x5d, 0xfc, 0x45, 0x7e, 0x58, 0xf5, 0xc4, 0xb8, 0x1f, - 0x90, 0xa7, 0x27, 0xc6, 0x5f, 0x1a, 0x46, 0xca, 0x57, 0xc4, - 0x57, 0xc0, 0xaf, 0x23, 0xf7, 0x99, 0xfe, 0x95, 0xf5, 0x73, - 0xfe, 0xce, 0x9e, 0x9, 0x7f, 0xf9, 0x87, 0x15, 0xfa, 0x35, - 0x43, 0x27, 0xec, 0xd7, 0xe0, 0xa7, 0xe9, 0x67, 0x2a, 0xfd, - 0x1e, 0xbc, 0xcf, 0xec, 0x7c, 0xc5, 0x3b, 0xa9, 0xff, 00, - 0xe4, 0xcc, 0xf3, 0x3f, 0xb1, 0xf3, 0x1d, 0xd5, 0x6f, 0xc5, - 0x9f, 0x31, 0x2f, 0xc7, 0x9f, 0x1e, 0x29, 0xcf, 0xfc, 0x24, - 0x77, 0x47, 0xea, 0x10, 0xff, 00, 0x4a, 0x9e, 0x2f, 0xda, - 0x17, 0xc7, 0xd1, 0xc, 0xf, 0x10, 0xcc, 0x7b, 0xfc, 0xd0, - 0xc6, 0x7f, 0x9a, 0xd7, 0xd1, 0xed, 0xfb, 0x31, 0xf8, 0x34, - 0xe7, 0x10, 0xce, 0x7, 0xfb, 0xff, 00, 0xfd, 0x6a, 0x81, - 0xff, 00, 0x65, 0xcf, 0x8, 0x37, 0x4f, 0xb4, 0x83, 0xfe, - 0xf0, 0xa7, 0xfd, 0x99, 0x9a, 0xad, 0xaa, 0x7f, 0xe4, 0xcc, - 0x3f, 0xb2, 0xf3, 0x45, 0xb5, 0x6f, 0xc5, 0x9f, 0x3d, 0xff, - 00, 0xc3, 0x46, 0x7c, 0x40, 0xff, 00, 0xa0, 0xfb, 0xff, - 00, 0xe0, 0x3c, 0x5f, 0xfc, 0x4d, 0x48, 0xbf, 0xb4, 0x8f, - 0x8f, 0xd4, 0xe7, 0xfb, 0x6f, 0x3e, 0xc6, 0xda, 0x2f, 0xfe, - 0x26, 0xbd, 0xe9, 0xff, 00, 0x65, 0x6f, 0x9, 0xb6, 0x71, - 0x25, 0xd0, 0xff, 00, 0x81, 0xa, 0x85, 0xff, 00, 0x64, - 0xff, 00, 0xb, 0x30, 0xe2, 0xe6, 0xed, 0x4f, 0xd4, 0x51, - 0xfd, 0x9d, 0x9b, 0x2f, 0xb6, 0xff, 00, 0xf0, 0x26, 0x1f, - 0xd9, 0xd9, 0xb2, 0xda, 0xb7, 0xfe, 0x4c, 0xcf, 0x11, 0x5f, - 0xda, 0x63, 0xc7, 0xca, 0x79, 0xd5, 0xa3, 0x6f, 0x63, 0x6b, - 0x1f, 0xf8, 0x54, 0xcb, 0xfb, 0x50, 0x78, 0xf1, 0x40, 0x1f, - 0x6f, 0xb6, 0x3e, 0xe6, 0xd5, 0x2b, 0xd8, 0x5b, 0xf6, 0x49, - 0xf0, 0xd1, 0xe9, 0x7f, 0x76, 0xbe, 0xdc, 0x54, 0xf, 0xfb, - 0x22, 0xe8, 0x24, 0x7c, 0xba, 0xa5, 0xd0, 0x3f, 0xee, 0x8a, - 0x5f, 0x52, 0xce, 0x17, 0xda, 0x7f, 0xf8, 0x17, 0xfc, 0x10, - 0xfa, 0x8e, 0x70, 0xbf, 0xe5, 0xef, 0xfe, 0x4c, 0x79, 0x7a, - 0xfe, 0xd5, 0x9e, 0x38, 0x4, 0x66, 0x4d, 0x3d, 0xb1, 0xd8, - 0xda, 0xf5, 0xfd, 0x6a, 0x55, 0xfd, 0xac, 0x7c, 0x6a, 0xbd, - 0x53, 0x4c, 0x6f, 0xad, 0xb3, 0x7f, 0xf1, 0x55, 0xe8, 0xcf, - 0xfb, 0x21, 0x68, 0xe7, 0xee, 0xea, 0xd7, 0x3, 0xea, 0xa2, - 0xa0, 0x7f, 0xd9, 0x3, 0x4e, 0x39, 0xdb, 0xac, 0x4c, 0x3e, - 0xa8, 0x29, 0xfd, 0x5b, 0x39, 0x5f, 0x69, 0xff, 00, 0xe0, - 0x48, 0x3e, 0xa9, 0x9d, 0x2f, 0xf9, 0x79, 0xf8, 0x9c, 0x18, - 0xfd, 0xad, 0x3c, 0x67, 0xff, 00, 0x3c, 0x74, 0xbf, 0xfc, - 0x7, 0x6f, 0xfe, 0x2e, 0x9e, 0x3f, 0x6b, 0x6f, 0x18, 0x77, - 0xb6, 0xd2, 0xcf, 0xfd, 0xb0, 0x7f, 0xfe, 0x2e, 0xbb, 0x37, - 0xfd, 0x8f, 0xac, 0xff, 00, 0x87, 0x5a, 0x93, 0xf1, 0x41, - 0x50, 0xbf, 0xec, 0x7b, 0x11, 0xfb, 0xba, 0xe3, 0xf, 0xac, - 0x74, 0x7b, 0x1c, 0xe9, 0x75, 0x7f, 0x7a, 0x17, 0xd5, 0xf3, - 0xb5, 0xf6, 0xff, 00, 0x14, 0x72, 0xc9, 0xfb, 0x5d, 0x78, - 0xb1, 0x4f, 0xcd, 0x63, 0xa5, 0xb0, 0xf4, 0xf2, 0x9c, 0x7f, - 0xec, 0xd5, 0x62, 0x2f, 0xda, 0xff, 00, 0xc4, 0x8a, 0xb8, - 0x7d, 0x27, 0x4d, 0x73, 0xea, 0x3, 0x8f, 0xfd, 0x9a, 0xb6, - 0x9f, 0xf6, 0x3d, 0x71, 0x8d, 0x9a, 0xd8, 0x3f, 0x58, 0xea, - 0x17, 0xfd, 0x8f, 0xee, 0x81, 0x3b, 0x75, 0x98, 0xcf, 0xa6, - 0x52, 0xa7, 0x93, 0x3a, 0x5f, 0xcd, 0xf7, 0xa0, 0xf6, 0x79, - 0xe2, 0xfb, 0x5f, 0x91, 0x4d, 0x7f, 0x6c, 0x4d, 0x6c, 0x1, - 0xbb, 0x42, 0xb0, 0x27, 0xb9, 0xe, 0xe3, 0x35, 0x3a, 0x7e, - 0xd8, 0xda, 0x98, 0x3f, 0x37, 0x87, 0x6d, 0x8, 0xf6, 0xb8, - 0x61, 0xfd, 0x29, 0xad, 0xfb, 0x21, 0x6a, 0x40, 0x71, 0xaa, - 0xc2, 0x4f, 0xa6, 0xda, 0x85, 0xff, 00, 0x64, 0x4d, 0x60, - 0x1f, 0x97, 0x53, 0x80, 0xfe, 0x14, 0xef, 0x9d, 0xae, 0xff, - 00, 0x80, 0x7f, 0xc2, 0xe2, 0xeb, 0xf9, 0x17, 0x7, 0xed, - 0x8f, 0x7b, 0xdf, 0xc3, 0x56, 0xdf, 0x85, 0xd3, 0x7f, 0xf1, - 0x35, 0x22, 0xfe, 0xd8, 0xf7, 0x3c, 0x6e, 0xf0, 0xd4, 0x3e, - 0xf8, 0xba, 0x3f, 0xfc, 0x4d, 0x64, 0x37, 0xec, 0x8f, 0xaf, - 0x1, 0xf2, 0xdf, 0xdb, 0x93, 0xe8, 0x6a, 0x16, 0xfd, 0x92, - 0xfc, 0x48, 0xf, 0xcb, 0x75, 0x6c, 0x47, 0xae, 0xea, 0x4e, - 0xae, 0x74, 0xbf, 0x9b, 0xee, 0x42, 0xe7, 0xcf, 0x17, 0xfc, - 0x32, 0x3a, 0x45, 0xfd, 0xb1, 0xf9, 0xf9, 0xbc, 0x32, 0x31, - 0xed, 0x77, 0xff, 00, 0xd8, 0xd4, 0xf1, 0xfe, 0xd8, 0xf6, - 0xd8, 0x3b, 0xfc, 0x37, 0x26, 0x7b, 0x6d, 0xba, 0x1f, 0xfc, - 0x4d, 0x71, 0x6f, 0xfb, 0x29, 0x78, 0xa9, 0x46, 0x43, 0xdb, - 0x93, 0xe9, 0xbc, 0x54, 0x2f, 0xfb, 0x2c, 0x78, 0xb5, 0x71, - 0x81, 0x9, 0xfa, 0x38, 0xa5, 0xf5, 0x9c, 0xe5, 0x74, 0x97, - 0xfe, 0x2, 0xbf, 0xc8, 0x7e, 0xdf, 0x3b, 0x5f, 0x67, 0xf0, - 0x47, 0xa2, 0x45, 0xfb, 0x62, 0xe9, 0x45, 0x7, 0x99, 0xe1, - 0xeb, 0xb0, 0xfe, 0x8b, 0x3a, 0x11, 0xfc, 0xaa, 0xc2, 0x7e, - 0xd8, 0x3a, 0x1, 0xc6, 0xfd, 0xf, 0x50, 0x5f, 0x5c, 0x3a, - 0x1f, 0xeb, 0x5e, 0x58, 0xff, 00, 0xb2, 0xff, 00, 0x8c, - 0x57, 0x38, 0x82, 0x26, 0xc7, 0xfb, 0x62, 0xa2, 0x6f, 0xd9, - 0x97, 0xc6, 0x63, 0x18, 0xb4, 0x43, 0xf4, 0x71, 0x4f, 0xeb, - 0xb9, 0xc2, 0xfb, 0x2f, 0xff, 00, 0x1, 0xff, 00, 0x80, - 0x1f, 0x5a, 0xce, 0x97, 0xd8, 0xfc, 0x11, 0xeb, 0xa3, 0xf6, - 0xbe, 0xf0, 0xd7, 0x7d, 0x23, 0x53, 0x1f, 0xf7, 0xef, 0xff, - 00, 0x8a, 0xa7, 0xaf, 0xed, 0x79, 0xe1, 0x72, 0x39, 0xd2, - 0xf5, 0x31, 0xff, 00, 0x1, 0x4f, 0xfe, 0x2a, 0xbc, 0x61, - 0xff, 00, 0x66, 0xcf, 0x1a, 0xa6, 0x71, 0xa7, 0x86, 0xc7, - 0xa3, 0x8a, 0x85, 0xff, 00, 0x67, 0x5f, 0x1b, 0xa0, 0xcf, - 0xf6, 0x53, 0x1f, 0xa3, 0xa, 0x3f, 0xb4, 0x33, 0x65, 0xf6, - 0x5f, 0xfe, 0x3, 0xff, 00, 00, 0x5f, 0x5e, 0xce, 0x56, - 0xf4, 0xff, 00, 0x3, 0xdc, 0x47, 0xed, 0x71, 0xe1, 0x42, - 0x46, 0x74, 0xfd, 0x4c, 0xf, 0xf7, 0x13, 0xff, 00, 0x8a, - 0xa9, 0xe3, 0xfd, 0xac, 0xfc, 0x1e, 0xc4, 0xee, 0xb6, 0xd4, - 0x90, 0x7f, 0xd7, 0x15, 0x3f, 0xfb, 0x35, 0x78, 0x3, 0x7e, - 0xcf, 0xfe, 0x36, 0x52, 0x47, 0xf6, 0x3c, 0x9f, 0x81, 0x15, - 0xb, 0xfc, 0x9, 0xf1, 0xa2, 0xc, 0xff, 00, 0x63, 0x4c, - 0x7e, 0x98, 0xa5, 0xfd, 0xa7, 0x9a, 0x2d, 0xe2, 0xff, 00, - 0xf0, 0x16, 0x1f, 0xda, 0x39, 0xba, 0xde, 0x9f, 0xe0, 0x7d, - 0x19, 0x1f, 0xed, 0x59, 0xe0, 0x97, 0x5c, 0xb7, 0xf6, 0x8a, - 0x1f, 0x43, 0x6c, 0xf, 0xfe, 0xcd, 0x53, 0xaf, 0xed, 0x4b, - 0xe0, 0x43, 0x8c, 0xdc, 0x5e, 0x8f, 0xad, 0xab, 0x71, 0x5f, - 0x33, 0xb7, 0xc1, 0x2f, 0x19, 0x29, 0xff, 00, 0x90, 0x2d, - 0xc7, 0xe5, 0x50, 0x37, 0xc1, 0xcf, 0x18, 0x20, 0xc9, 0xd1, - 0x2e, 0x71, 0xec, 0xb5, 0x5f, 0xda, 0xf9, 0x92, 0xde, 0x1f, - 0xf9, 0x2b, 0xf, 0xed, 0x5c, 0xd5, 0x6f, 0x4b, 0xf0, 0x7f, - 0xe6, 0x7d, 0x48, 0x3f, 0x69, 0xff, 00, 0x1, 0x1f, 0xf9, - 0x7f, 0xba, 0x1f, 0xf6, 0xe8, 0xff, 00, 0xe1, 0x4e, 0x1f, - 0xb4, 0xe7, 0x80, 0x4f, 0xfc, 0xc4, 0x6e, 0x7, 0xd6, 0xd1, - 0xff, 00, 0xc2, 0xbe, 0x54, 0x7f, 0x84, 0xde, 0x2d, 0x8f, - 0xae, 0x87, 0x77, 0xf8, 0x25, 0x40, 0xdf, 0xc, 0xfc, 0x50, - 0xa0, 0x93, 0xa3, 0x5d, 0xf1, 0xff, 00, 0x4c, 0xcd, 0x27, - 0x9d, 0x66, 0xb, 0xec, 0x2f, 0xfc, 0x5, 0xff, 00, 0x98, - 0xbf, 0xb6, 0x33, 0x35, 0xbd, 0x2f, 0xc1, 0xff, 00, 0x99, - 0xf5, 0xa8, 0xfd, 0xa5, 0xfc, 0x2, 0x46, 0x7f, 0xb5, 0x26, - 0x1f, 0x5b, 0x57, 0xff, 00, 0xa, 0x9d, 0x3f, 0x68, 0xdf, - 00, 0xb9, 0xc7, 0xf6, 0xd1, 0x5f, 0x76, 0xb7, 0x93, 0xff, - 00, 0x89, 0xaf, 0x8f, 0x9b, 0xe1, 0xe7, 0x89, 0x13, 0x19, - 0xd2, 0x2e, 0xc6, 0x7f, 0xe9, 0x99, 0xa8, 0xdb, 0xc0, 0xbe, - 0x20, 0x4c, 0xe7, 0x4a, 0xbb, 0x18, 0xeb, 0xfb, 0xb3, 0x4b, - 0xfb, 0x73, 0x1c, 0xb7, 0x82, 0xfb, 0x9f, 0xf9, 0x87, 0xf6, - 0xd6, 0x60, 0xb7, 0xa5, 0xf8, 0x3f, 0xf3, 0x3e, 0xcc, 0x8f, - 0xf6, 0x84, 0xf0, 0xc, 0x99, 0xff, 00, 0x89, 0xfc, 0x6b, - 0x8f, 0xef, 0x43, 0x20, 0xff, 00, 0xd9, 0x6a, 0x75, 0xf8, - 0xf1, 0xe0, 0x26, 0x50, 0x47, 0x88, 0xed, 0xb9, 0xf5, 0x57, - 0x1f, 0xd2, 0xbe, 0x27, 0x6f, 0x7, 0x6b, 0x8b, 0xd7, 0x4c, - 0xba, 0x1f, 0xf6, 0xcc, 0xd4, 0x6d, 0xe1, 0x6d, 0x65, 0x9, - 0x7, 0x4e, 0xba, 0x18, 0xff, 00, 0xa6, 0x66, 0x9f, 0xf6, - 0xfe, 0x2d, 0x6f, 0x5, 0xf7, 0x3f, 0xf3, 0x1f, 0xf6, 0xee, - 0x35, 0x6f, 0x47, 0xf0, 0x67, 0xdc, 0x23, 0xe3, 0x87, 0x81, - 0xf, 0xfc, 0xcc, 0xd6, 0x5f, 0x99, 0xff, 00, 0xa, 0x92, - 0x3f, 0x8d, 0x3e, 0x7, 0x90, 0x90, 0xbe, 0x26, 0xb0, 0xe3, - 0xd6, 0x4c, 0x7f, 0x4a, 0xf8, 0x54, 0xe8, 0x1a, 0xa2, 0x8c, - 0x9b, 0x1b, 0x80, 0x3f, 0xeb, 0x99, 0xa6, 0x1d, 0x1b, 0x51, - 0x5e, 0xb6, 0x93, 0x8f, 0xf8, 0x1, 0xa7, 0xfe, 0xb0, 0xe2, - 0x7f, 0x92, 0x3f, 0x8f, 0xf9, 0x87, 0xf6, 0xfe, 0x2f, 0xad, - 0x1f, 0xcc, 0xfb, 0xc9, 0x7e, 0x2f, 0x78, 0x2d, 0x86, 0x47, - 0x89, 0x74, 0xec, 0x7f, 0xd7, 0x61, 0x53, 0x47, 0xf1, 0x4f, - 0xc2, 0x12, 0x90, 0x17, 0xc4, 0x7a, 0x71, 0x27, 0xa7, 0xfa, - 0x42, 0xd7, 0xc0, 0xa7, 0x4b, 0xbe, 0x1d, 0x6d, 0xa5, 0x1f, - 0xf0, 0x3, 0x4d, 0x3a, 0x7d, 0xe2, 0xf5, 0xb7, 0x97, 0xfe, - 0xf8, 0x34, 0x7f, 0xac, 0x55, 0xfa, 0xc2, 0x3f, 0x88, 0xff, - 00, 0xd6, 0x1c, 0x42, 0xde, 0x8f, 0xe6, 0x7e, 0x82, 0xc3, - 0xf1, 0xb, 0xc3, 0x17, 0xd, 0xb6, 0x3f, 0x10, 0x69, 0xac, - 0x7a, 0xe3, 0xed, 0x28, 0x3f, 0xad, 0x5a, 0x4f, 0x17, 0xe8, - 0x52, 0x2e, 0x53, 0x59, 0xb0, 0x61, 0xea, 0x2e, 0x50, 0xff, - 00, 0x5a, 0xfc, 0xee, 0x36, 0xb7, 0x23, 0xac, 0x2e, 0x3f, - 0xe0, 0x26, 0x9a, 0x61, 0x98, 0x7f, 0xcb, 0x36, 0xfc, 0xaa, - 0xd7, 0x12, 0x54, 0xeb, 0x4d, 0x7d, 0xe5, 0x2e, 0x23, 0xab, - 0xd6, 0x8f, 0xe3, 0xff, 00, 00, 0xfd, 0x1c, 0x1a, 0xee, - 0x9a, 0x71, 0x8d, 0x42, 0xd4, 0xe7, 0xfe, 0x9b, 0x2f, 0xf8, - 0xd3, 0x86, 0xb3, 0xa7, 0x9e, 0x97, 0xd6, 0xc7, 0xfe, 0xdb, - 0x2f, 0xf8, 0xd7, 0xe7, 0x6, 0xc9, 0x47, 0xf0, 0x37, 0xe5, - 0x47, 0xef, 0x57, 0xb3, 0xa, 0xd3, 0xfd, 0x64, 0x97, 0xfc, - 0xfa, 0x5f, 0x7f, 0xfc, 0x1, 0xff, 00, 0xac, 0x92, 0xff, - 00, 0x9f, 0x3f, 0x8f, 0xfc, 0x3, 0xf4, 0x84, 0x6a, 0xb6, - 0x47, 0xa5, 0xe4, 0x7, 0xe9, 0x2a, 0xff, 00, 0x8d, 0x38, - 0x6a, 0x16, 0xad, 0x8c, 0x5c, 0xc2, 0x73, 0xe9, 0x20, 0xaf, - 0xcd, 0xc1, 0x24, 0xc3, 0xa1, 0x61, 0xf9, 0xd3, 0x85, 0xcd, - 0xc2, 0xf4, 0x77, 0x18, 0xff, 00, 0x68, 0xd3, 0x5c, 0x48, - 0xff, 00, 0xe7, 0xd7, 0xe3, 0xff, 00, 00, 0x7f, 0xeb, - 0x2f, 0x7a, 0x5f, 0x8f, 0xfc, 0x3, 0xf4, 0x95, 0x67, 0x8d, - 0xce, 0x16, 0x44, 0x63, 0xe8, 0x18, 0x1a, 0x7e, 0x47, 0xad, - 0x7e, 0x6d, 0xae, 0xa7, 0x7a, 0x87, 0x2b, 0x73, 0x32, 0x9f, - 0x51, 0x21, 0x1f, 0xd6, 0xa4, 0x1a, 0xe6, 0xa2, 0xbd, 0x2f, - 0x6e, 0x47, 0xd2, 0x66, 0xff, 00, 0x1a, 0xa5, 0xc4, 0x9d, - 0xe9, 0x7e, 0x3f, 0xf0, 0xa, 0xff, 00, 0x59, 0x63, 0xff, - 00, 0x3e, 0xbf, 0x1f, 0xf8, 0x7, 0xe9, 0x6, 0x45, 0x19, - 0xaf, 0xce, 0x31, 0xe2, 0x4d, 0x58, 0xc, 0xd, 0x4a, 0xf0, - 0xf, 0x69, 0xdf, 0xfc, 0x69, 0xc3, 0xc5, 0x3a, 0xc8, 0x3c, - 0x6a, 0x97, 0xc0, 0xff, 00, 0xd7, 0xc3, 0xff, 00, 0x8d, - 0x5f, 0xfa, 0xc7, 0x1f, 0xf9, 0xf5, 0xf8, 0xff, 00, 0xc0, - 0x1f, 0xfa, 0xcb, 0x4f, 0xfe, 0x7d, 0x3f, 0xbf, 0xfe, 0x1, - 0xfa, 0x35, 0x9a, 0x5a, 0xfc, 0xe8, 0x5f, 0x18, 0xeb, 0xb1, - 0xe4, 0x2e, 0xb1, 0x7e, 0xb9, 0xeb, 0x8b, 0x97, 0xe7, 0xf5, - 0xa9, 0x53, 0xc7, 0x7e, 0x22, 0x89, 0x76, 0xae, 0xb9, 0xa9, - 0x28, 0xf4, 0x17, 0x6f, 0xfe, 0x34, 0x7f, 0xac, 0x71, 0xff, - 00, 0x9f, 0x5f, 0x8f, 0xfc, 0x2, 0x97, 0x12, 0xd2, 0xeb, - 0x4d, 0xfd, 0xe7, 0xe8, 0x95, 0x15, 0xf9, 0xe8, 0x9f, 0x12, - 0xbc, 0x55, 0x19, 0x5, 0x7c, 0x43, 0xaa, 0x2, 0x3a, 0x7f, - 0xa5, 0xbf, 0xf8, 0xd4, 0xf1, 0xfc, 0x57, 0xf1, 0x84, 0x59, - 0xdb, 0xe2, 0x5d, 0x50, 0x67, 0xfe, 0x9e, 0x9f, 0xfc, 0x6a, - 0xd7, 0x11, 0xd3, 0xeb, 0x4d, 0xfd, 0xe8, 0xb5, 0xc4, 0x94, - 0x3a, 0xc1, 0xfe, 0x7, 0xe8, 0x25, 0x15, 0xf0, 00, 0xf8, - 0xc3, 0xe3, 0x40, 0x38, 0xf1, 0x3e, 0xa9, 0xff, 00, 0x81, - 0xd, 0x4f, 0x1f, 0x19, 0xbc, 0x6c, 0xe, 0x7f, 0xe1, 0x26, - 0xd4, 0x7f, 0xef, 0xf1, 0xaa, 0xff, 00, 0x58, 0xa8, 0xff, - 00, 0xcf, 0xb7, 0xf8, 0xf, 0xfd, 0x64, 0xc3, 0xff, 00, - 0x23, 0xfc, 0xf, 0xbf, 0x28, 0xaf, 0x82, 0x57, 0xe3, 0x8f, - 0x8e, 0x54, 0xe4, 0x78, 0x92, 0xf8, 0xfd, 0x5c, 0x7f, 0x85, - 0x4a, 0x9f, 0x1e, 0x3c, 0x74, 0x99, 0xc7, 0x88, 0xae, 0xcf, - 0xd7, 0x7, 0xfa, 0x53, 0xff, 00, 0x58, 0xa8, 0x7f, 0xcf, - 0xb9, 0x7e, 0x1f, 0xe6, 0x5a, 0xe2, 0x3c, 0x2f, 0xf2, 0xbf, - 0xc3, 0xfc, 0xcf, 0xbc, 0x68, 0xaf, 0x86, 0x23, 0xfd, 0xa1, - 0xfc, 0x7b, 0x18, 0x51, 0xfd, 0xbd, 0x23, 0x6d, 0xfe, 0xf4, - 0x48, 0x73, 0xf5, 0xe2, 0xac, 0xc7, 0xfb, 0x4a, 0xf8, 0xf6, - 0x37, 0xdd, 0xfd, 0xae, 0x8d, 0xec, 0xd6, 0xd1, 0x91, 0xfc, - 0xaa, 0xd7, 0x10, 0xe1, 0xba, 0xc2, 0x5f, 0x87, 0xf9, 0x96, - 0xb8, 0x8b, 0x9, 0xd9, 0xfd, 0xcb, 0xfc, 0xcf, 0xb7, 0xa8, - 0xaf, 0x8a, 0x17, 0xf6, 0x9f, 0xf1, 0xe8, 0x1c, 0xea, 0x36, - 0xed, 0xf5, 0xb4, 0x4f, 0xf0, 0xa7, 0x8f, 0xda, 0x8b, 0xc7, - 0x7f, 0xf3, 0xfb, 0x69, 0xff, 00, 0x80, 0xab, 0x57, 0xfe, - 0xb0, 0x61, 0x7b, 0x4b, 0xee, 0x5f, 0xe6, 0x57, 0xfa, 0xc3, - 0x83, 0xf3, 0xfb, 0xbf, 0xe0, 0x9f, 0x6a, 0x51, 0x5f, 0x17, - 0xaf, 0xed, 0x4f, 0xe3, 0x90, 0x46, 0x6e, 0x2c, 0xdb, 0xd8, - 0xdb, 0xa, 0x9e, 0x2f, 0xda, 0xb7, 0xc6, 0xb1, 0xb1, 0x2c, - 0x74, 0xf9, 0x6, 0x3a, 0x35, 0xb9, 0xfe, 0x86, 0x9f, 0xfa, - 0xc1, 0x84, 0xed, 0x2f, 0xbb, 0xfe, 0x9, 0x4b, 0x88, 0x30, - 0x5d, 0xdf, 0xdc, 0x7d, 0x93, 0x45, 0x7c, 0x7e, 0xbf, 0xb5, - 0xbf, 0x8b, 0x82, 0x80, 0x6d, 0x34, 0xb6, 0x3e, 0xbe, 0x4b, - 0xff, 00, 0xf1, 0x55, 0x3a, 0x7e, 0xd7, 0x9e, 0x29, 0xc, - 0xb, 0x69, 0xba, 0x5b, 0xe, 0xe3, 0x63, 0x8f, 0xfd, 0x9a, - 0xad, 0x67, 0xd8, 0x3f, 0x3f, 0xb8, 0xb5, 0x9f, 0x60, 0x7f, - 0x99, 0xfd, 0xc7, 0xd7, 0x34, 0x57, 0xc9, 0xab, 0xfb, 0x60, - 0xf8, 0x88, 0x67, 0x76, 0x8d, 0xa6, 0x1f, 0xa1, 0x90, 0x7f, - 0xec, 0xd4, 0xf1, 0xfb, 0x61, 0xeb, 0xdd, 0xf4, 0x3d, 0x37, - 0xfe, 0xfa, 0x93, 0xfc, 0x6a, 0xbf, 0xb7, 0x70, 0x5f, 0xcc, - 0xfe, 0xe6, 0x57, 0xf6, 0xee, 0x7, 0xf9, 0x9f, 0xdc, 0xcf, - 0xab, 0xe8, 0xaf, 0x94, 0xd7, 0xf6, 0xc4, 0xd6, 0xf8, 0xce, - 0x85, 0xa7, 0x9f, 0xa4, 0x8f, 0xfe, 0x35, 0x22, 0xfe, 0xd8, - 0x9a, 0xb6, 0x79, 0xd0, 0x2c, 0x88, 0xf6, 0x99, 0xe9, 0xff, - 00, 0x6e, 0x60, 0xbf, 0x99, 0xfd, 0xcc, 0x7f, 0xdb, 0x98, - 0x1f, 0xe7, 0xfc, 0x19, 0xf5, 0x45, 0x15, 0xf2, 0xf4, 0x7f, - 0xb6, 0x35, 0xe8, 0x5f, 0x9f, 0xc3, 0x76, 0xe5, 0xbd, 0x56, - 0xe9, 0x80, 0xff, 00, 0xd0, 0x6a, 0x65, 0xfd, 0xb2, 0x26, - 0xe3, 0x3e, 0x18, 0x8f, 0xdf, 0x17, 0x87, 0xff, 00, 0x88, - 0xaa, 0x59, 0xde, 0x7, 0xf9, 0xff, 00, 0x7, 0xfe, 0x45, - 0x2c, 0xeb, 0x2, 0xff, 00, 0xe5, 0xe7, 0xe0, 0xff, 00, - 0xc8, 0xfa, 0x6e, 0x8a, 0xf9, 0xba, 0x3f, 0xdb, 0x22, 0xc, - 0xfc, 0xfe, 0x17, 0x90, 0xf, 0xf6, 0x6f, 0x47, 0xff, 00, - 0x11, 0x5b, 0xda, 0x47, 0xed, 0x6f, 0xe1, 0x6b, 0xb8, 0xd7, - 0xed, 0xf6, 0x37, 0xf6, 0x12, 0x13, 0x82, 0x15, 0x56, 0x55, - 0x3, 0xd7, 0x20, 0x83, 0xfa, 0x56, 0xb0, 0xcd, 0xf0, 0x33, - 0x76, 0x55, 0x3f, 0x35, 0xf9, 0xa3, 0x58, 0x66, 0xd8, 0x29, - 0xbb, 0x2a, 0x8b, 0xf1, 0x5f, 0x99, 0xee, 0x74, 0x57, 0x31, - 0xe1, 0xaf, 0x89, 0x9e, 0x17, 0xf1, 0x7b, 0x4, 0xd2, 0x75, - 0xbb, 0x4b, 0xb9, 0x8f, 0x3e, 0x4e, 0xfd, 0xb2, 0x7f, 0xdf, - 0x2d, 0x83, 0xfa, 0x57, 0x4f, 0x5e, 0xac, 0x2a, 0x42, 0xa2, - 0xe6, 0x83, 0xba, 0xf2, 0x3d, 0x48, 0x4e, 0x15, 0x17, 0x34, - 0x1d, 0xd7, 0x90, 0x51, 0x45, 0x15, 0x65, 0x85, 0x14, 0x51, - 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, - 0x14, 0x51, 0x40, 0x5, 0x70, 0x7f, 0x18, 0x7e, 0x28, 0xdb, - 0x7c, 0x2f, 0xf0, 0xc3, 0xdd, 0xfe, 0xee, 0x7d, 0x4e, 0x73, - 0xe5, 0xda, 0x5a, 0xbb, 0x63, 0x7b, 0x77, 0x62, 0x3a, 0xed, - 0x1d, 0x4f, 0xe0, 0x3b, 0xd7, 0x75, 0x24, 0x8b, 0x12, 0x33, - 0xbb, 0x5, 0x45, 0x4, 0x96, 0x3d, 00, 0xaf, 0x82, 0x7e, - 0x32, 0x7c, 0x40, 0x7f, 0x88, 0xde, 0x3a, 0xbd, 0xbf, 0x57, - 0x26, 0xc2, 0x13, 0xf6, 0x7b, 0x34, 0xcf, 0x2, 0x35, 0x3d, - 0x7f, 0xe0, 0x47, 0x27, 0xf1, 0xaf, 0x17, 0x35, 0xc6, 0xbc, - 0x1d, 0xf, 0x73, 0xe2, 0x96, 0x8b, 0xfc, 0xcf, 0xf, 0x37, - 0xc7, 0xfd, 0x46, 0x87, 0xb9, 0xf1, 0xcb, 0x45, 0xfe, 0x7f, - 0x23, 0xa3, 0xf8, 0x39, 0xa7, 0xea, 0x1f, 0x13, 0x7e, 0x2a, - 0xc5, 0xa9, 0x6a, 0x92, 0xbd, 0xe3, 0xac, 0x86, 0xe2, 0x79, - 0x24, 0x39, 0xfa, 0xf, 0x61, 0xe8, 0x2b, 0xed, 0x40, 0x2, - 0x80, 0x7, 00, 0x57, 0x83, 0xfe, 0xca, 0x7e, 0x10, 0xfe, - 0xcc, 0xf0, 0xd5, 0xce, 0xb1, 0x34, 0x78, 0x9a, 0xe9, 0xf6, - 0xa1, 0x23, 0xf8, 0x45, 0x7b, 0xcd, 0x63, 0x92, 0x50, 0x74, - 0xb0, 0xbe, 0xd2, 0x5b, 0xcd, 0xdf, 0xfc, 0x83, 0x27, 0xa0, - 0xe9, 0x61, 0x54, 0xa7, 0xf1, 0x4b, 0x56, 0x14, 0x51, 0x45, - 0x7d, 0x1, 0xee, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x84, - 0x64, 0x70, 0x71, 0xef, 0x40, 0x18, 0x1c, 0x92, 0x7e, 0xb4, - 00, 0xb4, 0x53, 0x2, 0xed, 0x39, 0xde, 0x48, 0xf4, 0x3d, - 0x29, 0xc0, 0x83, 0xd0, 0xe6, 0x80, 0x16, 0x8a, 0x28, 0xa0, - 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, - 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, - 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, - 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x93, 0x2, 0x96, - 0x8a, 00, 0x4c, 0xf, 0x4a, 0x4d, 0x8a, 0x7b, 0xf, 0xca, - 0x9d, 0x45, 00, 0x37, 0xca, 0x43, 0xfc, 0xb, 0xf9, 0x53, - 0x4c, 0x11, 0x1e, 0xb1, 0xa7, 0xfd, 0xf2, 0x2a, 0x4a, 0x29, - 0x58, 0x8, 0xbe, 0xcb, 0xf, 0xfc, 0xf1, 0x8f, 0xfe, 0xf9, - 0x14, 0xd3, 0x65, 0x6e, 0x7a, 0xc1, 0x17, 0xfd, 0xf0, 0x2a, - 0x7a, 0x28, 0xb2, 0x15, 0x91, 0x59, 0xb4, 0xeb, 0x46, 0xeb, - 0x6b, 0x9, 0xfa, 0xc6, 0x29, 0x87, 0x47, 0xb1, 0x6e, 0xb6, - 0x70, 0x1f, 0xac, 0x63, 0xfc, 0x2a, 0xe5, 0x14, 0xb9, 0x63, - 0xd8, 0x2c, 0xbb, 0x19, 0xe7, 0x40, 0xd3, 0x1b, 0xad, 0x85, - 0xb1, 0xff, 00, 0xb6, 0x4b, 0xfe, 0x14, 0xc6, 0xf0, 0xce, - 0x92, 0xdd, 0x74, 0xdb, 0x53, 0xff, 00, 0x6c, 0x85, 0x69, - 0xd1, 0x4b, 0xd9, 0xc3, 0xb2, 0x17, 0x2c, 0x7b, 0x19, 0x7, - 0xc2, 0x3a, 0x2b, 0x75, 0xd2, 0xed, 0x4f, 0xfd, 0xb2, 0x15, - 0x1b, 0x78, 0x2b, 0x41, 0x73, 0x93, 0xa4, 0x59, 0x93, 0xef, - 0xa, 0xd6, 0xdd, 0x15, 0x3e, 0xca, 0x9b, 0xfb, 0x2b, 0xee, - 0x17, 0x24, 0x3b, 0x1c, 0xf3, 0x7c, 0x3f, 0xf0, 0xe3, 0x75, - 0xd1, 0xed, 0x3f, 0xef, 0xd0, 0xa8, 0x9b, 0xe1, 0xaf, 0x86, - 0x1f, 0xae, 0x8b, 0x69, 0xff, 00, 0x7e, 0xc5, 0x74, 0xd4, - 0x54, 0xfd, 0x5e, 0x8b, 0xfb, 0xb, 0xee, 0x44, 0xfb, 0x2a, - 0x6f, 0xec, 0xaf, 0xb8, 0xe4, 0xdf, 0xe1, 0x5f, 0x85, 0x5f, - 0x39, 0xd1, 0x6d, 0xb9, 0xff, 00, 0x60, 0x54, 0x2d, 0xf0, - 0x87, 0xc2, 0x4f, 0xd7, 0x45, 0xb7, 0xff, 00, 0xbe, 0x6b, - 0xb2, 0xa2, 0xa3, 0xea, 0xb4, 0x1f, 0xd8, 0x5f, 0x72, 0x17, - 0xb0, 0xa5, 0xfc, 0xab, 0xee, 0x38, 0x76, 0xf8, 0x2f, 0xe0, - 0xf7, 0xeb, 0xa3, 0x41, 0xf9, 0x54, 0x2f, 0xf0, 0x2f, 0xc1, - 0x8f, 0xff, 00, 0x30, 0x78, 0xc7, 0xd2, 0xbb, 0xea, 0x2a, - 0x5e, 0xb, 0xc, 0xf7, 0xa6, 0xbe, 0xe4, 0x4f, 0xd5, 0xa8, - 0xbf, 0xb0, 0xbe, 0xe3, 0xce, 0x9f, 0xe0, 0x17, 0x83, 0x1f, - 0xfe, 0x61, 0x6a, 0x3e, 0x86, 0xa0, 0x7f, 0xd9, 0xe3, 0xc1, - 0x8f, 0xff, 00, 0x2e, 0x4, 0x7d, 0xd, 0x7a, 0x65, 0x15, - 0xf, 0x1, 0x84, 0x7f, 0xf2, 0xe9, 0x7d, 0xc8, 0x9f, 0xaa, - 0x50, 0x7f, 0x61, 0x7d, 0xc7, 0x96, 0xbf, 0xec, 0xe1, 0xe0, - 0xd7, 0xff, 00, 0x97, 0x37, 0x1f, 0xf0, 0x2a, 0x81, 0xff, - 00, 0x66, 0x7f, 0x7, 0x37, 0xfc, 0xb0, 0x94, 0x7d, 0x1a, - 0xbd, 0x66, 0x8a, 0x9f, 0xec, 0xdc, 0x1b, 0xff, 00, 0x97, - 0x4b, 0xee, 0x23, 0xea, 0x58, 0x67, 0xff, 00, 0x2e, 0xd7, - 0xdc, 0x79, 0x3, 0xfe, 0xcb, 0xfe, 0xf, 0x7f, 0xe0, 0xb8, - 0x5f, 0xa3, 0xd4, 0xd, 0xfb, 0x2c, 0x78, 0x4c, 0xf4, 0x7b, - 0x81, 0xf8, 0x8a, 0xf6, 0x6a, 0x2a, 0x1e, 0x57, 0x82, 0x7f, - 0xf2, 0xe9, 0x12, 0xf0, 0x18, 0x57, 0xff, 00, 0x2e, 0xd7, - 0xdc, 0x78, 0x9b, 0xfe, 0xca, 0x7e, 0x16, 0x6e, 0x97, 0x17, - 0x23, 0xf1, 0x15, 0xb, 0xfe, 0xc9, 0xbe, 0x1b, 0x6f, 0xbb, - 0x79, 0x72, 0x3f, 0x2a, 0xf7, 0x2a, 0x2a, 0x7f, 0xb2, 0x70, - 0x3f, 0xf3, 0xe9, 0x12, 0xf2, 0xec, 0x23, 0xff, 00, 0x97, - 0x68, 0xf0, 0x76, 0xfd, 0x92, 0x74, 0x3, 0xd3, 0x50, 0xb9, - 0x1f, 0x80, 0xa8, 0x5b, 0xf6, 0x45, 0xd1, 0xf, 0x4d, 0x52, - 0xe0, 0x7f, 0xc0, 0x45, 0x7b, 0xf5, 0x15, 0x3f, 0xd9, 0x18, - 0x1f, 0xf9, 0xf7, 0xf9, 0x90, 0xf2, 0xbc, 0x1b, 0xff, 00, - 0x97, 0x68, 0xf9, 0xe9, 0xff, 00, 0x64, 0x2d, 0x2c, 0xfd, - 0xdd, 0x62, 0x7f, 0xc5, 0x5, 0x40, 0xff, 00, 0xb2, 0x5, - 0x97, 0xf0, 0xeb, 0x12, 0x7e, 0x28, 0x2b, 0xe8, 0xca, 0x2a, - 0x3f, 0xb1, 0xb0, 0x3f, 0xf3, 0xef, 0xf1, 0x7f, 0xe6, 0x4b, - 0xca, 0x70, 0x4f, 0xfe, 0x5d, 0xa3, 0xe6, 0xd6, 0xfd, 0x90, - 0x21, 0xfe, 0x1d, 0x65, 0xbf, 0x14, 0xa8, 0x5f, 0xf6, 0x40, - 0x3f, 0xc3, 0xac, 0x7e, 0x69, 0x5f, 0x4c, 0x51, 0x53, 0xfd, - 0x89, 0x81, 0xfe, 0x4f, 0xc5, 0x91, 0xfd, 0x91, 0x82, 0xff, - 00, 0x9f, 0x67, 0xcc, 0xf, 0xfb, 0x20, 0x4f, 0xfc, 0x3a, - 0xba, 0xfe, 0x2b, 0x50, 0xbf, 0xec, 0x83, 0x7e, 0x3e, 0xee, - 0xaf, 0x11, 0xfa, 0xad, 0x7d, 0x4b, 0x45, 0x4f, 0xf6, 0x1e, - 0x7, 0xf9, 0x5f, 0xde, 0xc9, 0x79, 0x36, 0x5, 0xfd, 0x83, - 0xe5, 0x37, 0xfd, 0x91, 0x35, 0x51, 0xd3, 0x53, 0x84, 0xfe, - 0x15, 0x3, 0xfe, 0xc9, 0x1a, 0xd8, 0xe9, 0x7d, 0xb, 0x57, - 0xd6, 0x74, 0x54, 0xbc, 0x87, 0x5, 0xd9, 0xfd, 0xec, 0x87, - 0x92, 0x60, 0x7f, 0x93, 0xf1, 0x3e, 0x46, 0x7f, 0xd9, 0x33, - 0xc4, 0x23, 0xa5, 0xd4, 0x7, 0xf1, 0xa8, 0x1f, 0xf6, 0x51, - 0xf1, 0x28, 0xfb, 0xb2, 0xc2, 0x7f, 0x1a, 0xfb, 0x2, 0x8a, - 0x8f, 0xec, 0xc, 0x1f, 0x9f, 0xde, 0x4f, 0xf6, 0x16, 0xb, - 0xf9, 0x7f, 0x13, 0xe3, 0x87, 0xfd, 0x95, 0x7c, 0x54, 0x3e, - 0xe9, 0x85, 0xbf, 0xe0, 0x42, 0xa1, 0x7f, 0xd9, 0x6f, 0xc5, - 0xeb, 0xd2, 0x38, 0x8f, 0xd1, 0xc5, 0x7d, 0x9b, 0x45, 0x4f, - 0xfa, 0xbf, 0x84, 0xee, 0xfe, 0xff, 00, 0xf8, 0x4, 0xff, - 00, 0x60, 0xe0, 0xbb, 0x3f, 0xbc, 0xf8, 0xad, 0xff, 00, - 0x66, 0x3f, 0x18, 0xaf, 0x4b, 0x64, 0x3f, 0xf0, 0x31, 0x50, - 0xbf, 0xec, 0xd7, 0xe3, 0x35, 0xff, 00, 0x97, 0x20, 0x7f, - 0xe0, 0x42, 0xbe, 0xda, 0xa2, 0xa7, 0xfd, 0x5e, 0xc3, 0x7f, - 0x34, 0xbf, 0xf, 0xf2, 0x23, 0xfd, 0x5f, 0xc1, 0xf9, 0xfd, - 0xe7, 0xc3, 0xcd, 0xfb, 0x39, 0xf8, 0xd1, 0x7f, 0xe6, 0x1a, - 0x4f, 0xfc, 0x8, 0x54, 0x2f, 0xfb, 0x3d, 0xf8, 0xd1, 0x7f, - 0xe6, 0x14, 0xe7, 0xf1, 0x15, 0xf7, 0x3d, 0x15, 0x3f, 0xea, - 0xee, 0x1f, 0xf9, 0xe5, 0xf8, 0x7f, 0x91, 0x3f, 0xea, 0xf6, - 0x13, 0xcf, 0xef, 0x3e, 0x12, 0x3f, 0x1, 0xbc, 0x6d, 0xb, - 0x6, 0x5d, 0x22, 0x60, 0xc3, 0xa3, 0x29, 0xc1, 0x15, 0xde, - 0x78, 0x43, 0xc6, 0xbf, 0x14, 0xfe, 0x15, 0x6c, 0x5d, 0x57, - 0x4c, 0xbc, 0xd7, 0x34, 0x55, 0xfb, 0xf0, 0x5d, 0x12, 0xd2, - 0xa2, 0xff, 00, 0xb1, 0x27, 0x5f, 0xc0, 0xe4, 0x7d, 0x2b, - 0xeb, 0x1a, 0x82, 0xf2, 0xde, 0x2b, 0x9b, 0x69, 0x12, 0x64, - 0x59, 0x10, 0xa9, 0xc8, 0x61, 0x5a, 0xd2, 0xc9, 0x56, 0x19, - 0xf3, 0xd0, 0xab, 0x24, 0xfe, 0x45, 0x53, 0xc8, 0xe9, 0xd0, - 0x7c, 0xf8, 0x7a, 0x92, 0x8b, 0xfe, 0xb7, 0xee, 0x73, 0xbe, - 00, 0xf8, 0x91, 0xa2, 0x7c, 0x48, 0xd2, 0x8d, 0xe6, 0x91, - 0x73, 0xba, 0x58, 0xf0, 0x2e, 0x2d, 0x24, 0xf9, 0x66, 0xb7, - 0x63, 0xfc, 0x2e, 0xbd, 0xbe, 0xbd, 0xd, 0x75, 0x35, 0xf1, - 0x7, 0xc4, 0x6d, 0x72, 0xff, 00, 0xe1, 0x4f, 0xc4, 0x43, - 0xae, 0x78, 0x66, 0x63, 0x69, 0x74, 0x24, 0xfd, 0xfc, 0x20, - 0xfe, 0xee, 0xe1, 0x1, 0xc9, 0x8d, 0xc7, 0x70, 0x7f, 0x31, - 0xda, 0xbe, 0xae, 0xf8, 0x4f, 0xf1, 0x3b, 0x4d, 0xf8, 0xb7, - 0xe0, 0xcb, 0x5d, 0x7f, 0x4d, 0x47, 0x80, 0x3b, 0x34, 0x53, - 0xda, 0xca, 0x46, 0xf8, 0x25, 0x5e, 0x19, 0xf, 0xaf, 0xa8, - 0x3d, 0xc1, 0x6, 0xbd, 0xc, 0xe, 0x35, 0x62, 0x79, 0xa9, - 0xcb, 0xe2, 0x8e, 0x8c, 0xe8, 0xc0, 0x66, 0x4a, 0xbd, 0x59, - 0x61, 0x6a, 0xe9, 0x52, 0x3f, 0x73, 0x5d, 0xd7, 0xea, 0x8e, - 0xc6, 0x8a, 0x28, 0xaf, 0x54, 0xf7, 0x42, 0x8a, 0x28, 0xa0, - 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0xf, 0x37, - 0xfd, 0xa0, 0x7c, 0x6a, 0x3c, 0x17, 0xf0, 0xd7, 0x51, 0x74, - 0x72, 0x97, 0x97, 0xe3, 0xec, 0x56, 0xfb, 0x4e, 0x8, 0x67, - 0x7, 0x24, 0x7d, 0x17, 0x26, 0xbe, 0x25, 0xd0, 0xb4, 0xb9, - 0x35, 0x8d, 0x56, 0xd2, 0xca, 0x15, 0xdc, 0xf3, 0x48, 0x10, - 0x1, 0x5e, 0xd3, 0xfb, 0x5a, 0xf8, 0xcb, 0xfb, 0x5b, 0xc6, - 0x16, 0x7e, 0x1f, 0x85, 0xf3, 0x6, 0x97, 0x1f, 0x99, 0x28, - 0x7, 0x83, 0x33, 0x8c, 0xfe, 0x8b, 0x8f, 0xfb, 0xe8, 0xd6, - 0x77, 0xec, 0xc3, 0xe1, 0x1, 0xaf, 0x78, 0xd8, 0x5f, 0x4d, - 0x1e, 0xeb, 0x7b, 0x25, 0x2f, 0x93, 0xd3, 0x77, 0x6a, 0xfc, - 0xf7, 0x33, 0x93, 0xc7, 0x63, 0xd6, 0x1e, 0x3b, 0x2d, 0x3f, - 0xcc, 0xfc, 0xef, 0x1e, 0xde, 0x63, 0x9a, 0x2a, 0x11, 0xda, - 0x3a, 0x7f, 0x9f, 0xf5, 0xe4, 0x7d, 0x67, 0xe1, 0x3d, 0x12, - 0x3f, 0xe, 0xf8, 0x72, 0xc3, 0x4f, 0x8d, 0x42, 0x88, 0x22, - 0x55, 0x38, 0xf5, 0xc7, 0x35, 0xaf, 0x45, 0x15, 0xfa, 0x4, - 0x62, 0xa1, 0x15, 0x18, 0xec, 0x8f, 0xd0, 0xa2, 0x94, 0x52, - 0x48, 0x28, 0xa2, 0x8a, 0xa2, 0x82, 0x8a, 0x2b, 0xcd, 0xbf, - 0x68, 0xaf, 0x8d, 0xda, 0x47, 0xec, 0xf1, 0xf0, 0x83, 0xc4, - 0x1e, 0x39, 0xd6, 0xe, 0xe8, 0xf4, 0xf8, 0x71, 0x6d, 0x6e, - 0x3e, 0xf5, 0xc5, 0xc3, 0x7c, 0xb1, 0x44, 0x3e, 0xac, 0x46, - 0x7d, 0x6, 0x4f, 0x6a, 00, 0xe7, 0x3f, 0x69, 0x9f, 0xda, - 0xf3, 0xe1, 0xf7, 0xec, 0xaf, 0xa0, 0x47, 0x79, 0xe2, 0xcb, - 0xe7, 0x9f, 0x55, 0xba, 0x52, 0xd6, 0x3a, 0x25, 0x88, 0xf, - 0x77, 0x73, 0x8e, 0xe0, 0x67, 0xa, 0x99, 0xfe, 0x36, 0x20, - 0x7d, 0x4f, 0x15, 0xf9, 0x5d, 0xf1, 0x87, 0xfe, 0xa, 0xd5, - 0xf1, 0x9b, 0xe2, 0x5, 0xc5, 0xdd, 0xbf, 0x85, 0xe5, 0xb1, - 0xf0, 0x1e, 0x90, 0xec, 0x44, 0x4b, 0xa7, 0xc2, 0x26, 0xbb, - 0x9, 0x9e, 0x37, 0x4d, 0x26, 0x46, 0x71, 0xfd, 0xd5, 0x5a, - 0xf9, 0xb3, 0x5d, 0xd7, 0xfc, 0x7d, 0xfb, 0x57, 0x7c, 0x67, - 0x4b, 0x8b, 0xc9, 0x2e, 0x3c, 0x4b, 0xe3, 0x3f, 0x11, 0xdd, - 0xac, 0x10, 0x44, 0xf, 00, 0x93, 0xf2, 0xc6, 0x83, 0xa2, - 0x46, 0xa3, 0x3c, 0x74, 00, 0x13, 0xea, 0x6b, 0xf4, 0x67, - 0xc1, 0x1f, 0xf0, 0x48, 0xaf, 0x87, 0xff, 00, 0xf, 0x7e, - 0x1c, 0xdf, 0x78, 0x9b, 0xe2, 0xf7, 0x8b, 0x75, 0x1b, 0xeb, - 0x9d, 0x3e, 0xca, 0x4b, 0xeb, 0xe8, 0x74, 0x69, 0x56, 0xda, - 0xd6, 0xd9, 0x11, 0xb, 0xb0, 0xe, 0xca, 0x59, 0xf0, 0x1, - 0xe7, 0xe5, 0xcf, 0xa5, 0x32, 0x6e, 0xde, 0xc7, 0xe7, 0x17, - 0x88, 0x7f, 0x68, 0xbf, 0x8a, 0x7e, 0x2b, 0xb9, 0x92, 0x7d, - 0x5b, 0xe2, 0x37, 0x8a, 0x2f, 0x64, 0x90, 0xe5, 0x83, 0xea, - 0xf3, 0x85, 0x27, 0xfd, 0xd0, 0xc0, 0xf, 0xca, 0xbf, 0x5a, - 0xbf, 0xe0, 0x92, 0x3e, 0xb, 0xd6, 0xed, 0xfe, 0x3, 0xea, - 0x3e, 0x39, 0xf1, 0x6, 0xad, 0xa9, 0x6a, 0xb7, 0x9e, 0x23, - 0xbe, 0x74, 0xb3, 0x17, 0xf7, 0x52, 0x4c, 0x22, 0xb6, 0x80, - 0x94, 0x1b, 0x43, 0x13, 0x8d, 0xd2, 0x79, 0x84, 0x91, 0xd4, - 0x5, 0xaf, 0xc7, 0x4d, 0x1b, 0xc3, 0x7f, 0xf0, 0x9e, 0xfc, - 0x44, 0xb2, 0xd0, 0x7c, 0x39, 0x6f, 0x24, 0x4b, 0xac, 0x6a, - 0x89, 0x67, 0xa7, 0xc1, 0x2b, 0x6f, 0x64, 0x12, 0xca, 0x16, - 0x30, 0xcd, 0x8e, 0x70, 0x18, 0x64, 0xfb, 0x13, 0x5f, 0xd1, - 0xcf, 0x86, 0xb4, 0x4d, 0x3, 0xf6, 0x7b, 0xf8, 0x2d, 0x65, - 0xa6, 0xc6, 0x52, 0xcf, 0xc3, 0xfe, 0x13, 0xd1, 0xc0, 0x67, - 0x3c, 0x1, 0x1c, 0x31, 0xe5, 0xdc, 0xfb, 0x9c, 0x12, 0x7d, - 0xcd, 0xc, 0x48, 0xf8, 0xf, 0xc4, 0x7f, 0xf0, 0x59, 0xa9, - 0xfc, 0x25, 0xe2, 0xcd, 0x6b, 0x42, 0xd4, 0x3e, 0x14, 0xab, - 0xcd, 0xa6, 0x5e, 0xcf, 0x65, 0x24, 0x90, 0x6b, 0x7c, 0x33, - 0x47, 0x23, 0x21, 0x20, 0x18, 0x7d, 0x56, 0xbe, 0xec, 0xfd, - 0x9c, 0x3e, 0x34, 0x47, 0xfb, 0x42, 0x7c, 0x1b, 0xf0, 0xff, - 00, 0x8f, 0x62, 0xd2, 0xdf, 0x46, 0x4d, 0x59, 0x24, 0x61, - 0x64, 0xf2, 0xf9, 0xa6, 0x3d, 0xb2, 0x32, 0x7d, 0xec, 0xc, - 0xe7, 0x6e, 0x7a, 0x77, 0xaf, 0xe7, 0x2f, 0xc6, 0x7a, 0xf9, - 0xf1, 0x5f, 0x8b, 0xf5, 0xdd, 0x6d, 0x86, 0xd6, 0xd4, 0xaf, - 0xe7, 0xbd, 0x23, 0xd0, 0xc9, 0x23, 0x3f, 0xfe, 0xcd, 0x5f, - 0xd1, 0x27, 0xec, 0x91, 0xf0, 0xfe, 0x4f, 0x85, 0xff, 00, - 0xb3, 0x57, 0xc3, 0x9f, 0xd, 0xce, 0x9e, 0x5d, 0xdd, 0xae, - 0x8d, 0x3, 0xdc, 0xaf, 0xa4, 0xd2, 0x2f, 0x99, 0x27, 0xfe, - 0x3c, 0xe6, 0x81, 0xa7, 0x73, 0xd6, 0xc9, 0xc0, 0xc9, 0xe0, - 0x57, 0xce, 0xda, 0xff, 00, 0xed, 0xf, 0xae, 0x43, 0xae, - 0x5f, 0x47, 0xa6, 0xc7, 0x64, 0xda, 0x7a, 0x4a, 0xcb, 0x9, - 0x96, 0x26, 0x2c, 0x54, 0x1c, 0x64, 0x9d, 0xc3, 0xaf, 0x5f, - 0xc6, 0xbd, 0x7b, 0xe2, 0x97, 0x89, 0x47, 0x85, 0xbc, 0x11, - 0xa9, 0x5d, 0xab, 0x6d, 0x9d, 0xd3, 0xc8, 0x87, 0xfd, 0xf7, - 0xe0, 0x7e, 0x5c, 0x9f, 0xc2, 0xbe, 0x40, 0xaf, 0x86, 0xe2, - 0x2c, 0xca, 0xae, 0x1a, 0x70, 0xa3, 0x42, 0x5c, 0xaf, 0x77, - 0x6f, 0xc3, 0xf5, 0x3c, 0x9c, 0x75, 0x79, 0x53, 0x6a, 0x10, - 0x76, 0x3d, 0x5d, 0x3f, 0x69, 0xf, 0x12, 0xaf, 0xde, 0xb3, - 0xd3, 0x9b, 0xfe, 0xd9, 0xb8, 0xff, 00, 0xd9, 0xaa, 0x74, - 0xfd, 0xa5, 0x75, 0xe1, 0xf7, 0xb4, 0xdd, 0x3d, 0xbe, 0x81, - 0xc7, 0xfe, 0xcd, 0x5e, 0x43, 0x45, 0x7c, 0x82, 0xce, 0x73, - 0x5, 0xff, 00, 0x2f, 0x5f, 0xe0, 0x79, 0x9f, 0x5a, 0xad, - 0xfc, 0xc7, 0xb3, 0x47, 0xfb, 0x4c, 0xea, 0x83, 0xef, 0xe8, - 0xb6, 0x8d, 0xfe, 0xec, 0xac, 0x3f, 0xc6, 0xa7, 0x4f, 0xda, - 0x72, 0xef, 0xf8, 0xbc, 0x3f, 0x9, 0xfa, 0x5d, 0x11, 0xff, - 00, 0xb2, 0xd7, 0x89, 0x51, 0x5a, 0x2c, 0xf3, 0x31, 0x5f, - 0xf2, 0xf7, 0xf0, 0x5f, 0xe4, 0x57, 0xd7, 0x2b, 0xff, 00, - 0x31, 0xee, 0xd1, 0x7e, 0xd3, 0x83, 0xfe, 0x5a, 0x78, 0x7f, - 0x1f, 0xee, 0xdd, 0x7f, 0xf6, 0x35, 0x66, 0x3f, 0xda, 0x6e, - 0xc8, 0xfd, 0xfd, 0xa, 0x71, 0xfe, 0xec, 0xea, 0x7f, 0xa5, - 0x78, 0x5, 0x15, 0xaa, 0xe2, 0xc, 0xc5, 0x7f, 0xcb, 0xcf, - 0xc1, 0x7f, 0x91, 0x5f, 0x5d, 0xaf, 0xfc, 0xdf, 0x91, 0xf4, - 0x3c, 0x7f, 0xb4, 0xc6, 0x90, 0x7e, 0xfe, 0x91, 0x7a, 0xbf, - 0xee, 0xb2, 0x1f, 0xeb, 0x5a, 0x56, 0x7f, 0xb4, 0x5f, 0x85, - 0xee, 0x8, 0x13, 0x45, 0x7f, 0x6b, 0xee, 0xf0, 0x86, 0x1f, - 0xf8, 0xeb, 0x1a, 0xf9, 0x9a, 0x8a, 0xd6, 0x3c, 0x47, 0x8f, - 0x8e, 0xed, 0x3f, 0x97, 0xf9, 0x14, 0xb1, 0xf5, 0x97, 0x53, - 0xec, 0x4d, 0x7, 0xe2, 0x67, 0x86, 0x7c, 0x48, 0xeb, 0x1d, - 0x8e, 0xaf, 0x3, 0x4c, 0xdd, 0x22, 0x97, 0x31, 0xb9, 0xfa, - 0x6, 0xc6, 0x7f, 0xa, 0xe9, 0xeb, 0xe1, 0x4a, 0xed, 0x7c, - 0x17, 0xf1, 0x6b, 0x5f, 0xf0, 0x6c, 0xa8, 0x89, 0x72, 0xd7, - 0xd6, 00, 0xfc, 0xd6, 0x97, 0x2c, 0x59, 0x71, 0xfe, 0xc9, - 0xea, 0xbf, 0x87, 0x1e, 0xd5, 0xed, 0xe1, 0x38, 0xa1, 0x36, - 0xa3, 0x8a, 0x85, 0xbc, 0xd7, 0xf9, 0x7f, 0xc1, 0x3a, 0xe9, - 0x66, 0x37, 0x76, 0xa8, 0xbe, 0xe3, 0xeb, 0x6a, 0x2b, 0x13, - 0xc2, 0x1e, 0x2f, 0xd3, 0xfc, 0x6b, 0xa3, 0xa6, 0xa1, 0xa7, - 0xc8, 0x4a, 0x13, 0xb6, 0x48, 0xdb, 0x86, 0x8d, 0xfb, 0xa9, - 0x15, 0xb7, 0x5f, 0x75, 0x4e, 0xa4, 0x6a, 0xc5, 0x4e, 0xe, - 0xe9, 0x9e, 0xc4, 0x64, 0xa4, 0xae, 0xb6, 0xa, 0xc0, 0xf1, - 0x17, 0x8e, 0xb4, 0x2f, 0x9, 0xdc, 0x43, 0x6, 0xab, 0xa8, - 0x25, 0xa4, 0xb3, 0x29, 0x74, 0x56, 0x56, 0x39, 00, 0xe3, - 0x3c, 0x3, 0x5b, 0xf5, 0xf2, 0x87, 0xc6, 0xed, 0x74, 0x6b, - 0x9f, 0x10, 0xaf, 0xc2, 0x36, 0xe8, 0xac, 0xc2, 0xda, 0xa7, - 0xfc, 0x7, 0xef, 0x7f, 0xe3, 0xc5, 0xab, 0xc8, 0xcd, 0xf3, - 0x7, 0x97, 0x61, 0xd5, 0x48, 0x24, 0xe4, 0xdd, 0x95, 0xce, - 0x5c, 0x55, 0x77, 0x42, 0x1c, 0xcb, 0x73, 0xe8, 0x4, 0xf8, - 0xb9, 0xe0, 0xf7, 0xe9, 0xaf, 0x5b, 0xf, 0xf7, 0xb7, 0xf, - 0xe6, 0x2a, 0x74, 0xf8, 0xa1, 0xe1, 0x37, 0xe9, 0xe2, 0xb, - 0x1f, 0xc6, 0x50, 0x2b, 0xe3, 0xca, 0x2b, 0xe3, 0x97, 0x14, - 0xe2, 0x7a, 0xd3, 0x8f, 0xe3, 0xfe, 0x67, 0x97, 0xfd, 0xa3, - 0x53, 0xb2, 0x3e, 0xca, 0x8f, 0xe2, 0x17, 0x86, 0x25, 0xfb, - 0xba, 0xfe, 0x9c, 0x7f, 0xed, 0xe5, 0x3f, 0xc6, 0xad, 0x47, - 0xe3, 0xd, 0xa, 0x6f, 0xb9, 0xac, 0xd8, 0x37, 0xd2, 0xe5, - 0x3f, 0xc6, 0xbe, 0x2b, 0xa2, 0xb5, 0x5c, 0x55, 0x5b, 0xad, - 0x25, 0xf7, 0xb2, 0xbf, 0xb4, 0x67, 0xd6, 0x27, 0xdb, 0x89, - 0xaf, 0x69, 0x92, 0x7d, 0xdd, 0x46, 0xd1, 0xbe, 0x93, 0xaf, - 0xf8, 0xd4, 0xc9, 0xa9, 0x5a, 0x49, 0xf7, 0x2e, 0xa0, 0x6f, - 0xa4, 0x80, 0xff, 00, 0x5a, 0xf8, 0x76, 0x8c, 0x91, 0x5a, - 0x2e, 0x2b, 0x97, 0x5a, 0x3f, 0x8f, 0xfc, 0x2, 0xbf, 0xb4, - 0x9f, 0xf2, 0xfe, 0x27, 0xdd, 0xb, 0x2a, 0x37, 0xdd, 0x75, - 0x3f, 0x43, 0x4e, 0xdc, 0x3d, 0x45, 0x7c, 0x30, 0x25, 0x75, - 0xe8, 0xec, 0x3e, 0x86, 0xa4, 0x4b, 0xeb, 0x98, 0xfe, 0xed, - 0xc4, 0xab, 0xf4, 0x72, 0x2b, 0x45, 0xc5, 0x6b, 0xad, 0x1f, - 0xfc, 0x9b, 0xfe, 0x1, 0x5f, 0xda, 0x5f, 0xdc, 0xfc, 0x7f, - 0xe0, 0x1f, 0x72, 0x51, 0x5f, 0x10, 0xa6, 0xb9, 0xa9, 0x47, - 0xf7, 0x75, 0xb, 0xa5, 0xfa, 0x4c, 0xdf, 0xe3, 0x52, 0xaf, - 0x89, 0xb5, 0x84, 0xfb, 0xba, 0xad, 0xf2, 0xfd, 0x2e, 0x5c, - 0x7f, 0x5a, 0xd1, 0x71, 0x5d, 0x3e, 0xb4, 0x5f, 0xdf, 0xff, - 00, 00, 0x7f, 0xda, 0x4b, 0xf9, 0x7f, 0x13, 0xed, 0x9a, - 0x2b, 0xe2, 0xc4, 0xf1, 0x96, 0xbf, 0x1f, 0xdd, 0xd7, 0x35, - 0x25, 0xfa, 0x5d, 0xc9, 0xfe, 0x35, 0xda, 0x7c, 0x25, 0xf1, - 0x7, 0x88, 0x75, 0xff, 00, 0x1e, 0xe9, 0x76, 0x93, 0x6b, - 0x3a, 0x84, 0xf6, 0xc1, 0xda, 0x59, 0x52, 0x4b, 0x97, 0x65, - 0x2a, 0xaa, 0x4e, 0x8, 0x27, 0xa6, 0x70, 0x3f, 0x1a, 0xe9, - 0xa1, 0xc4, 0xb4, 0xab, 0xd5, 0x8d, 0x25, 0x49, 0xde, 0x4d, - 0x2d, 0xd7, 0x53, 0x48, 0x63, 0xe3, 0x39, 0x28, 0xa8, 0xee, - 0x7d, 0x3f, 0x45, 0x14, 0x57, 0xd9, 0x1e, 0xa8, 0x51, 0x45, - 0x14, 00, 0x51, 0x5c, 0xf7, 0x88, 0xfc, 0x7f, 0xa0, 0x78, - 0x4f, 0x8d, 0x4f, 0x52, 0x86, 0x9, 0x7f, 0xe7, 0x8a, 0xe5, - 0xe4, 0xff, 00, 0xbe, 0x57, 0x26, 0xbc, 0xef, 0x5b, 0xfd, - 0xa5, 0x74, 0xcb, 0x70, 0xcb, 0xa5, 0xe9, 0x97, 0x17, 0x6f, - 0xd9, 0xee, 0x18, 0x44, 0xbf, 0x90, 0xc9, 0xfe, 0x55, 0xe6, - 0xe2, 0x33, 0x2c, 0x26, 0x17, 0x4a, 0xb5, 0x12, 0x7d, 0xb7, - 0x7f, 0x72, 0x39, 0xe7, 0x5e, 0x95, 0x3f, 0x8a, 0x47, 0xb2, - 0xd1, 0x5f, 0x34, 0x5f, 0x7e, 0xd1, 0x9e, 0x26, 0xb8, 0x63, - 0xf6, 0x78, 0x2c, 0x2d, 0x13, 0xb6, 0x22, 0x67, 0x23, 0xf1, - 0x2d, 0x8f, 0xd2, 0xb1, 0xae, 0x3e, 0x37, 0xf8, 0xce, 0x72, - 0x7f, 0xe2, 0x6d, 0xe5, 0x3, 0xda, 0x38, 0x23, 0x18, 0xff, - 00, 0xc7, 0x6b, 0xc5, 0x9f, 0x13, 0x60, 0x63, 0xf0, 0xa9, - 0x3f, 0x97, 0xf9, 0xb4, 0x72, 0x3c, 0xc2, 0x8a, 0xda, 0xec, - 0xfa, 0xbc, 0x8c, 0xd2, 0x79, 0x63, 0xdf, 0xf3, 0x35, 0xf2, - 0x2b, 0x7c, 0x5d, 0xf1, 0x83, 0x1c, 0x9d, 0x76, 0xe4, 0x7d, - 0x2, 0x8f, 0xe9, 0x52, 0x45, 0xf1, 0x8b, 0xc6, 0x31, 0x1c, - 0x8d, 0x72, 0x63, 0xfe, 0xf4, 0x68, 0xdf, 0xcd, 0x6b, 0xf, - 0xf5, 0xa3, 0x9, 0xfc, 0x92, 0xfc, 0x3f, 0xcc, 0x9f, 0xed, - 0x1a, 0x7d, 0x99, 0xf5, 0xc5, 0x15, 0xf2, 0xb5, 0xb7, 0xc7, - 0x9f, 0x18, 0xdb, 0xfd, 0xeb, 0xf8, 0x6e, 0x3f, 0xeb, 0xad, - 0xba, 0x7f, 0x40, 0x2b, 0x7f, 0x4d, 0xfd, 0xa5, 0x75, 0xa8, - 0x58, 0xb, 0xed, 0x32, 0xce, 0xe9, 0x7b, 0xf9, 0x25, 0xa2, - 0x3f, 0xa9, 0x61, 0x5d, 0x54, 0xf8, 0x93, 0x1, 0x3f, 0x8a, - 0xeb, 0xd5, 0x7f, 0x95, 0xcd, 0x16, 0x3e, 0x8b, 0xde, 0xe8, - 0xfa, 0x2a, 0x8a, 0xf2, 0xdd, 0x17, 0xf6, 0x87, 0xf0, 0xd6, - 0xa3, 0xb5, 0x6f, 0x52, 0xeb, 0x4c, 0x90, 0xf5, 0x32, 0x26, - 0xf4, 0xfc, 0xd7, 0x27, 0xf4, 0xaf, 0x45, 0xd2, 0xb5, 0x9b, - 0x1d, 0x72, 0xd5, 0x6e, 0x74, 0xfb, 0xb8, 0x6f, 0x20, 0x6e, - 0x8f, 0xb, 0x86, 0x1f, 0x8f, 0xa5, 0x7b, 0x98, 0x7c, 0x6e, - 0x1f, 0x15, 0xfc, 0x19, 0xa9, 0x7e, 0x7f, 0x76, 0xe7, 0x64, - 0x2a, 0xd3, 0xa9, 0xf0, 0x3b, 0x97, 0x68, 0xa2, 0x8a, 0xed, - 0x35, 0xa, 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa2, 0x80, 0xa, - 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa6, 0xbc, 0x8b, 0x12, 0x96, - 0x76, 0x8, 0xa3, 0xa9, 0x63, 0x81, 0x40, 0xe, 0xa2, 0xb0, - 0xb5, 0xf, 0x1d, 0xf8, 0x77, 0x4b, 0x24, 0x5d, 0x6b, 0x56, - 0x30, 0xb0, 0xea, 0xa6, 0x75, 0x27, 0xf2, 0x7, 0x35, 0x8b, - 0x71, 0xf1, 0xa7, 0xc1, 0xb6, 0xe7, 0x7, 0x5a, 0x47, 0xff, - 00, 0xae, 0x70, 0xc8, 0xff, 00, 0xc9, 0x6b, 0x92, 0x78, - 0xbc, 0x35, 0x3d, 0x27, 0x52, 0x2b, 0xd5, 0xa3, 0x27, 0x56, - 0x9c, 0x77, 0x92, 0xfb, 0xce, 0xde, 0x98, 0x5d, 0xb3, 0xf7, - 0xf, 0xe6, 0x2b, 0x82, 0x3f, 0x1d, 0xfc, 0x18, 0xf, 0xfc, - 0x84, 0xe4, 0x3f, 0xf6, 0xed, 0x2f, 0xff, 00, 0x13, 0x4a, - 0xbf, 0x1d, 0x7c, 0x18, 0xc7, 0xfe, 0x42, 0x8e, 0x3e, 0xb6, - 0xb2, 0xff, 00, 0xf1, 0x35, 0x8f, 0xf6, 0x8e, 0xb, 0xfe, - 0x7f, 0x47, 0xff, 00, 0x2, 0x44, 0xfb, 0x7a, 0x5f, 0xce, - 0xbe, 0xf3, 0xbe, 0xc9, 0xc7, 0x4a, 0x4d, 0xc7, 0xfb, 0xa7, - 0xf4, 0xae, 0x3e, 0xdf, 0xe3, 0xf, 0x83, 0xae, 0x7e, 0xee, - 0xb9, 0x2, 0x7f, 0xd7, 0x45, 0x74, 0xfe, 0x60, 0x56, 0xcd, - 0x8f, 0x8c, 0xb4, 0x1d, 0x4f, 0x1f, 0x65, 0xd6, 0x2c, 0x67, - 0x27, 0xa0, 0x59, 0xd7, 0x3f, 0x96, 0x6b, 0x78, 0x62, 0xb0, - 0xf5, 0x3e, 0xa, 0x89, 0xfa, 0x34, 0x5a, 0xa9, 0x9, 0x6d, - 0x24, 0x6c, 0xd1, 0x4d, 0x47, 0x59, 0x17, 0x2a, 0xc1, 0x87, - 0xa8, 0x39, 0xa7, 0x57, 0x51, 0xa0, 0x51, 0x45, 0x30, 0x31, - 0xf3, 0x4a, 0x9e, 0x98, 0xc8, 0x34, 00, 0xfa, 0x28, 0xa2, - 0x80, 0xa, 0x82, 0xf5, 0xfc, 0xbb, 0x39, 0xdb, 0xd1, 0x9, - 0xfd, 0x2a, 0x7a, 0xa3, 0xad, 0xbf, 0x97, 0xa4, 0x5d, 0xb1, - 0x38, 0xc4, 0x66, 0xa6, 0x4e, 0xc9, 0xb1, 0x3d, 0x13, 0x3e, - 0x1c, 0xf8, 0xdf, 0x37, 0xda, 0x3c, 0x49, 0x28, 0xeb, 0x82, - 0x6b, 0x2f, 0xf6, 0x63, 0xf8, 0x99, 0x27, 0xc3, 0x6f, 0x8d, - 0x16, 0xba, 0x44, 0xf2, 0x95, 0xd1, 0x3c, 0x4a, 0x45, 0xa4, - 0x88, 0x71, 0x84, 0xb8, 0x19, 0xf2, 0x9f, 0xdb, 0xba, 0x9f, - 0xf7, 0x85, 0x49, 0xf1, 0x56, 0x7f, 0x3f, 0xc4, 0xd7, 0x3d, - 0xf0, 0x4d, 0x78, 0x7, 0xc5, 0x7b, 0x89, 0x2c, 0xb4, 0xe1, - 0x75, 0x6e, 0xed, 0x15, 0xcd, 0xbb, 0x9, 0xa2, 0x91, 0x4e, - 0xa, 0xba, 0x9c, 0xa9, 0x1f, 0x88, 0xaf, 0xce, 0x32, 0xfa, - 0xce, 0x38, 0xc9, 0x49, 0x77, 0x67, 0xe3, 0x98, 0xbc, 0x4c, - 0xb0, 0xd9, 0xac, 0x31, 0x11, 0xe9, 0x24, 0xbe, 0x4f, 0x46, - 0x7e, 0xc0, 0x51, 0x5c, 0x1f, 0x80, 0xfe, 0x28, 0xe9, 0x5e, - 0x21, 0xf0, 0x37, 0x87, 0x75, 0x59, 0x2e, 0xcb, 0x49, 0x7d, - 0xa7, 0x5b, 0x5c, 0xb1, 0x2a, 0x72, 0x4b, 0xc4, 0xac, 0x7f, - 0x9d, 0x15, 0xfa, 0x45, 0xcf, 0xd8, 0xee, 0x99, 0xde, 0x51, - 0x45, 0x14, 0xc6, 0x14, 0x51, 0x45, 00, 0x15, 0x53, 0x56, - 0xd4, 0xed, 0xf4, 0x5d, 0x2e, 0xee, 0xfe, 0xea, 0x41, 0x15, - 0xb5, 0xb4, 0x4d, 0x2c, 0x8e, 0x7b, 0x2a, 0x8c, 0x9a, 0xb7, - 0x5e, 0x2b, 0xfb, 0x55, 0x78, 0xc4, 0x68, 0x1f, 0xf, 0x86, - 0x93, 0x13, 0xe2, 0xeb, 0x58, 0x93, 0xca, 0xc0, 0xff, 00, - 0x9e, 0x4b, 0x86, 0x73, 0xff, 00, 0xa0, 0x8f, 0xc6, 0xb9, - 0xb1, 0x35, 0x96, 0x1e, 0x8c, 0xaa, 0xbe, 0x88, 0xe4, 0xc5, - 0xd7, 0x58, 0x5a, 0x13, 0xac, 0xfa, 0x2f, 0xf8, 0x63, 0xe4, - 0xcf, 0x12, 0xeb, 0x93, 0xf8, 0xa7, 0xc4, 0x7a, 0x8e, 0xad, - 0x71, 0x8f, 0x3e, 0xfa, 0xe1, 0xe6, 0x60, 0x3a, 0xc, 0x9e, - 00, 0xf6, 0x3, 0x2, 0xbe, 0xc2, 0xfd, 0x9b, 0x3c, 0x23, - 0xff, 00, 0x8, 0xe7, 0x80, 0xa3, 0xb9, 0x91, 0x36, 0xdc, - 0x5e, 0xb1, 0x90, 0xe4, 0x73, 0xb7, 0xb5, 0x7c, 0x91, 0xe0, - 0x6f, 0xf, 0xc9, 0xe2, 0x6f, 0x14, 0x69, 0xda, 0x7c, 0x6a, - 0x5b, 0xcd, 0x95, 0x41, 0xc7, 0xa6, 0x79, 0xaf, 0xd0, 0x8d, - 0x32, 0xc2, 0x2d, 0x2f, 0x4f, 0xb7, 0xb4, 0x85, 0x42, 0x47, - 0xa, 0x4, 0x50, 0x3d, 0x85, 0x7c, 0x6e, 0x43, 0x45, 0xd6, - 0xaf, 0x3c, 0x4c, 0xfa, 0x7e, 0x6c, 0xf8, 0xfe, 0x1d, 0xa0, - 0xea, 0x4e, 0x78, 0xa9, 0xef, 0xfa, 0xbd, 0xcb, 0x54, 0x51, - 0x45, 0x7d, 0xd9, 0xf7, 0x61, 0x45, 0x14, 0x50, 0x1, 0x5f, - 0x98, 0xbf, 0xf0, 0x5b, 0x2f, 0x1d, 0xdc, 0x5a, 0xf8, 0x77, - 0xe1, 0xaf, 0x83, 0x62, 0x25, 0x6d, 0xaf, 0x6e, 0x6e, 0xb5, - 0x59, 0xf0, 0x48, 0xc9, 0x89, 0x52, 0x34, 0x7, 0xd4, 0x7e, - 0xf9, 0xcf, 0xe1, 0x5f, 0xa7, 0x55, 0xf9, 0xe5, 0xff, 00, - 0x5, 0x88, 0xf8, 0x15, 0xab, 0x78, 0xf7, 0xe1, 0x97, 0x86, - 0x3c, 0x79, 0xa2, 0x59, 0xcd, 0x7f, 0x2f, 0x85, 0xa6, 0x9a, - 0x2b, 0xf8, 0x60, 0x42, 0xcc, 0x96, 0x93, 0x5, 0x26, 0x5c, - 0xe, 0x70, 0x8f, 0x1a, 0xe7, 0xd0, 0x31, 0x3d, 0xa8, 0x13, - 0xd8, 0xf8, 0x57, 0xfe, 0x9, 0xbb, 0xf1, 0x4b, 0xc1, 0xff, - 00, 0x8, 0x7f, 0x6a, 0x4d, 0x1f, 0x5d, 0xf1, 0xb5, 0xec, - 0x1a, 0x5e, 0x92, 0xf6, 0x37, 0x36, 0x91, 0xea, 0x17, 0x23, - 0xf7, 0x56, 0xd3, 0xc8, 0xa0, 0x23, 0xb1, 0xfe, 0x10, 0x40, - 0x65, 0xdd, 0xdb, 0x77, 0x3c, 0x57, 0xe8, 0x87, 0xfc, 0x15, - 0x1f, 0xf6, 0x8d, 0xd2, 0x7c, 0x31, 0xfb, 0x2e, 0x36, 0x8b, - 0xe1, 0xed, 0x62, 0xcf, 0x51, 0xbb, 0xf1, 0xb4, 0xc2, 0xc2, - 0x29, 0x6c, 0xae, 0x16, 0x55, 0xfb, 0x2a, 0xe1, 0xe7, 0x70, - 0x54, 0x91, 0x82, 0x36, 0xa7, 0xfd, 0xb4, 0xaf, 0xc4, 0xea, - 0x37, 0x12, 00, 0xc9, 0xc0, 0xe8, 0x2a, 0xac, 0x45, 0xcf, - 0xb5, 0x7f, 0xe0, 0x94, 0x9f, 0xc, 0xb4, 0xcf, 0x13, 0xfe, - 0xd0, 0x57, 0x3e, 0x35, 0xd7, 0xee, 0x6d, 0xac, 0xf4, 0x4f, - 0x5, 0x59, 0x1b, 0xe3, 0x3d, 0xe4, 0x8b, 0x1c, 0x42, 0xe6, - 0x4c, 0xa4, 0x59, 0x66, 0xc0, 0xe0, 0x79, 0x8d, 0xf5, 0x51, - 0x5e, 0xd9, 0xff, 00, 0x5, 0x2f, 0xff, 00, 0x82, 0x80, - 0xf8, 0x77, 0xc6, 0x7e, 0x11, 0xbb, 0xf8, 0x4f, 0xf0, 0xd7, - 0x53, 0x8f, 0x59, 0xb6, 0xbe, 0x64, 0x3a, 0xd6, 0xbd, 0x65, - 0x29, 0x30, 0x6c, 0x56, 0xd, 0xf6, 0x78, 0x98, 0x7d, 0xfc, - 0x90, 0x37, 0x30, 0xf9, 0x71, 0xc7, 0x39, 0x38, 0xfc, 0xc0, - 0x12, 0xba, 0xc6, 0xd1, 0x87, 0x61, 0x1b, 0x10, 0x59, 0x1, - 0xe0, 0x91, 0xd3, 0x22, 0xbd, 0x33, 0xe0, 0x1f, 0xec, 0xe5, - 0xe3, 0x9f, 0xda, 0x43, 0xc6, 0x50, 0x78, 0x7f, 0xc1, 0xba, - 0x4c, 0x97, 0x44, 0xb7, 0xfa, 0x4e, 0xa3, 0x2a, 0x95, 0xb4, - 0xb3, 0x4e, 0xed, 0x2c, 0x98, 0xc0, 0xf6, 0x1d, 0x4f, 0x60, - 0x68, 0xb, 0xf4, 0x3b, 0xbf, 0xd8, 0x3f, 0xf6, 0x70, 0x9f, - 0xf6, 0x92, 0xf8, 0xff, 00, 0xa3, 0x69, 0x33, 0xc2, 0xe7, - 0xc3, 0x7a, 0x53, 0x2e, 0xa7, 0xac, 0x4e, 0x17, 0x2a, 0x21, - 0x46, 0x5, 0x62, 0xcf, 0x4c, 0xc8, 0xd8, 0x5c, 0x7a, 0x16, - 0x3d, 0xab, 0xfa, 0xd, 0x44, 0x58, 0x91, 0x51, 0x14, 0x2a, - 0xa8, 0xc0, 0x3, 0xa0, 0x15, 0xe2, 0xff, 00, 0xb2, 0x8f, - 0xec, 0xb7, 0xe1, 0xaf, 0xd9, 0x53, 0xe1, 0xa4, 0x3e, 0x1b, - 0xd1, 0x7f, 0xd3, 0x35, 0x3b, 0x82, 0x27, 0xd5, 0x75, 0x67, - 0x5c, 0x49, 0x79, 0x3e, 0x31, 0x9f, 0x64, 0x1d, 0x15, 0x7b, - 0xf, 0x72, 0x4d, 0x7b, 0x43, 0xba, 0xc6, 0x8c, 0xec, 0x42, - 0xaa, 0x8c, 0x92, 0x7b, 0xa, 0x96, 0xcb, 0x4a, 0xc7, 0x81, - 0xfe, 0xd2, 0x9e, 0x23, 0x13, 0x5e, 0xe9, 0x9a, 0x24, 0x6f, - 0x91, 0x8, 0x37, 0x33, 0x1, 0xfd, 0xe3, 0xc2, 0x8f, 0xcb, - 0x77, 0xe7, 0x5e, 0x25, 0x5b, 0xbe, 0x39, 0xd7, 0xcf, 0x8a, - 0x3c, 0x5b, 0xaa, 0x6a, 0x79, 0x26, 0x39, 0xa6, 0x3e, 0x5e, - 0x7f, 0xb8, 0x3e, 0x55, 0xfd, 00, 0xac, 0x2a, 0xfc, 0x4b, - 0x33, 0xc4, 0xfd, 0x6f, 0x17, 0x52, 0xaf, 0x4b, 0xe9, 0xe8, - 0xb4, 0x47, 0xc9, 0x62, 0x2a, 0x7b, 0x5a, 0xb2, 0x90, 0x51, - 0x45, 0x15, 0xe6, 0x18, 0x16, 0xec, 0x74, 0x8b, 0xed, 0x50, - 0x39, 0xb3, 0xb2, 0xb8, 0xbb, 0x9, 0x8d, 0xde, 0x44, 0x4c, - 0xfb, 0x73, 0xd3, 0x38, 0x1c, 0x54, 0xd2, 0x78, 0x6f, 0x57, - 0x88, 0x65, 0xf4, 0xab, 0xd4, 0x1e, 0xad, 0x6c, 0xe3, 0xfa, - 0x57, 0xd2, 0x1f, 00, 0x74, 0xf, 0xec, 0x8f, 0x2, 0x47, - 0x74, 0xe9, 0xb6, 0x6d, 0x42, 0x56, 0x9c, 0x92, 0x39, 0xd8, - 0x3e, 0x55, 0xfd, 0x1, 0x3f, 0x8d, 0x7a, 0x55, 0x7d, 0xd6, - 0x13, 0x86, 0xa3, 0x88, 0xc3, 0xc2, 0xac, 0xea, 0x34, 0xe4, - 0xaf, 0x6b, 0x77, 0x3d, 0x8a, 0x58, 0x5, 0x38, 0x29, 0x39, - 0x5a, 0xe7, 0xc3, 0x12, 0xc1, 0x2c, 0x7, 0x12, 0xc6, 0xf1, - 0x9f, 0x47, 0x52, 0x2a, 0x3a, 0xfb, 0x96, 0xe2, 0xce, 0xde, - 0xed, 0xa, 0x4f, 0x4, 0x73, 0x21, 0xfe, 0x19, 0x10, 0x30, - 0xfd, 0x6b, 0x8c, 0xf1, 0x3f, 0xc1, 0xaf, 0xc, 0xf8, 0x8e, - 0xde, 0x40, 0x96, 0x11, 0xe9, 0xb7, 0x44, 0x1d, 0xb7, 0x16, - 0x6a, 0x10, 0x83, 0xee, 0xa3, 0x83, 0xf9, 0x54, 0xd6, 0xe1, - 0x6a, 0xb1, 0x57, 0xa3, 0x51, 0x3f, 0x26, 0xad, 0xfe, 0x62, - 0x9e, 0x5d, 0x24, 0xbd, 0xd9, 0x5c, 0xf9, 0x36, 0x8a, 0xd4, - 0xf1, 0x3f, 0x87, 0xae, 0x7c, 0x2b, 0xaf, 0x5e, 0x69, 0x57, - 0x78, 0x33, 0x5b, 0x3e, 0xd2, 0xcb, 0xd1, 0x81, 0x19, 0xc, - 0x3e, 0xa0, 0x83, 0x59, 0x75, 0xf1, 0x53, 0x84, 0xa9, 0xc9, - 0xc2, 0x4a, 0xcd, 0x68, 0x79, 0x2d, 0x34, 0xec, 0xc2, 0x8a, - 0x28, 0xa8, 0x11, 0xe9, 0xbf, 00, 0x3c, 0x49, 0x36, 0x93, - 0xe3, 0x68, 0xf4, 0xed, 0xc7, 0xec, 0xba, 0x8a, 0x32, 0x32, - 0x76, 0xe, 0xa0, 0xb2, 0x9f, 0xd0, 0x8f, 0xc6, 0xbe, 0x9e, - 0xaf, 0x92, 0xbe, 0xb, 0xda, 0x3d, 0xdf, 0xc4, 0xad, 0x1b, - 0x68, 0x24, 0x46, 0xcf, 0x23, 0x11, 0xd8, 0x4, 0x6f, 0xfe, - 0xb5, 0x7d, 0x6b, 0x5f, 0xa9, 0xf0, 0xcc, 0xe7, 0x2c, 0x13, - 0x52, 0xd9, 0x49, 0xdb, 0xee, 0x4c, 0xfa, 0x2c, 0xbd, 0xb7, - 0x49, 0xa7, 0xdc, 0xa5, 0xad, 0xea, 0x71, 0xe8, 0xda, 0x3d, - 0xed, 0xfc, 0xa7, 0x11, 0xdb, 0x42, 0xf2, 0x9c, 0xff, 00, - 0xb2, 0x9, 0xaf, 0x89, 0xae, 0xae, 0x64, 0xbd, 0xb9, 0x9a, - 0xe2, 0x56, 0xdd, 0x2c, 0xae, 0x64, 0x76, 0xf5, 0x24, 0xe4, - 0xd7, 0xda, 0x3e, 0x28, 0xf0, 0xf4, 0x3e, 0x2a, 0xd0, 0xee, - 0x74, 0xbb, 0x89, 0xa6, 0x82, 0xb, 0x80, 0x3, 0xbc, 0x4, - 0x6, 0xc0, 0x20, 0xe3, 0x90, 0x7d, 0x2b, 0xcd, 0xa4, 0xfd, - 0x9a, 0xb4, 0x16, 0xfb, 0x9a, 0x9e, 0xa0, 0xbf, 0x52, 0x87, - 0xff, 00, 0x65, 0xa8, 0xcf, 0x72, 0xfc, 0x5e, 0x61, 0x28, - 0x2a, 0x9, 0x72, 0xc6, 0xfd, 0x7a, 0xb1, 0x63, 0x28, 0x55, - 0xac, 0xd7, 0x22, 0xd1, 0x1f, 0x39, 0x51, 0x5f, 0x42, 0x49, - 0xfb, 0x33, 0x69, 0x87, 0xee, 0x6b, 0x57, 0x6b, 0xfe, 0xf4, - 0x6a, 0x6a, 0xb4, 0x9f, 0xb3, 0x1c, 0x7, 0xee, 0x6b, 0xf2, - 0xf, 0xf7, 0xad, 0x81, 0xff, 00, 0xd9, 0xab, 0xe4, 0x9f, - 0xf, 0xe6, 0x2b, 0xec, 0x7e, 0x2b, 0xfc, 0xcf, 0x33, 0xea, - 0x55, 0xfb, 0x7e, 0x27, 0x82, 0x51, 0x5e, 0x9b, 0xf1, 0x17, - 0xe0, 0xd2, 0x78, 0x3, 0x42, 0x1a, 0x8b, 0x6b, 0x3f, 0x6b, - 0x2f, 0x32, 0xc2, 0x90, 0xfd, 0x9f, 0x61, 0x62, 0x72, 0x7a, - 0xee, 0x3d, 00, 0x3d, 0xab, 0xcc, 0xab, 0xc7, 0xc4, 0xe1, - 0x6b, 0x60, 0xea, 0x7b, 0x2a, 0xca, 0xcf, 0xe4, 0xff, 00, - 0x23, 0x96, 0xa5, 0x39, 0x52, 0x97, 0x2c, 0xd6, 0xa1, 0x45, - 0x14, 0x57, 0x21, 0x98, 0x51, 0x45, 0x7a, 0x44, 0x1f, 00, - 0x7c, 0x55, 0x73, 0x6b, 0xd, 0xc4, 0x6b, 0x66, 0x56, 0x54, - 0x59, 0x2, 0x99, 0xc8, 0x20, 0x11, 0x9c, 0x1e, 0x3a, 0xd7, - 0x55, 0xc, 0x2d, 0x7c, 0x4d, 0xfd, 0x8c, 0x1c, 0xad, 0xbd, - 0x8d, 0x21, 0x4e, 0x75, 0x3e, 0x5, 0x73, 0xcd, 0xe8, 0xaf, - 0x46, 0x93, 0xe0, 0xf, 0x8c, 0x13, 0xa5, 0xa5, 0xb3, 0xff, - 00, 0xbb, 0x72, 0xb5, 0x56, 0x5f, 0x81, 0xfe, 0x32, 0x8b, - 0xa6, 0x94, 0x1f, 0xfd, 0xcb, 0x88, 0xff, 00, 0xf8, 0xaa, - 0xe8, 0x79, 0x6e, 0x35, 0x6f, 0x46, 0x5f, 0x73, 0x2f, 0xd8, - 0x55, 0x5f, 0x65, 0xfd, 0xc7, 0x7, 0x5e, 0xd3, 0xfb, 0x34, - 0x69, 0x3e, 0x6e, 0xaf, 0xab, 0xea, 0x4c, 0xbc, 0x43, 0xa, - 0xc0, 0x8d, 0xee, 0xc7, 0x27, 0xf4, 0x51, 0xf9, 0xd7, 0x12, - 0xff, 00, 0x7, 0x3c, 0x64, 0x9d, 0x74, 0x29, 0x8f, 0xfb, - 0xb2, 0x46, 0x7f, 0xf6, 0x6a, 0xf7, 0x9f, 0x82, 0x9e, 0x12, - 0xb9, 0xf0, 0x9f, 0x83, 0x84, 0x77, 0xd0, 0x1b, 0x6b, 0xeb, - 0x89, 0x9e, 0x59, 0x63, 0x6e, 0xab, 0xfc, 0x2a, 0xf, 0xe0, - 0x33, 0xf8, 0xd7, 0xb7, 0x91, 0xe0, 0x2b, 0xac, 0x74, 0x67, - 0x56, 0xd, 0x28, 0xdd, 0xea, 0x9a, 0xf2, 0xfd, 0x4e, 0xbc, - 0x1d, 0x19, 0xfb, 0x64, 0xe4, 0xad, 0x63, 0xbf, 0xa2, 0x8a, - 0xf3, 0x4f, 0x8a, 0xff, 00, 0x17, 0xa0, 0xf0, 0x54, 0x6d, - 0xa7, 0x69, 0xfb, 0x6e, 0x35, 0xa7, 0x5c, 0xf3, 0xca, 0x40, - 0xf, 0x76, 0xf5, 0x3e, 0x83, 0xf3, 0xf7, 0xfd, 0x27, 0x13, - 0x89, 0xa5, 0x84, 0xa4, 0xea, 0xd6, 0x76, 0x48, 0xf7, 0xea, - 0x54, 0x8d, 0x28, 0xf3, 0x49, 0xe8, 0x74, 0xde, 0x33, 0xf8, - 0x83, 0xa3, 0xf8, 0x1a, 0xd3, 0xcc, 0xd4, 0x2e, 0x33, 0x70, - 0xcb, 0x98, 0xad, 0x63, 0xe6, 0x59, 0x3e, 0x83, 0xb0, 0xf7, - 0x3c, 0x57, 0xcf, 0xde, 0x32, 0xf8, 0xe3, 0xaf, 0xf8, 0xa3, - 0x7c, 0x36, 0xaf, 0xfd, 0x91, 0x62, 0x4f, 0xfa, 0xbb, 0x66, - 0x3e, 0x63, 0xf, 0xf6, 0x9f, 0xaf, 0xe5, 0x8a, 0xe1, 0x35, - 0x3d, 0x4e, 0xef, 0x59, 0xbd, 0x96, 0xf2, 0xfa, 0xe2, 0x4b, - 0xab, 0x99, 0x4e, 0x5e, 0x49, 0xe, 0x49, 0xff, 00, 0x3e, - 0x95, 0x56, 0xbf, 0x2f, 0xcc, 0x33, 0xec, 0x46, 0x31, 0xb8, - 0x53, 0x7c, 0x90, 0xec, 0xb7, 0x7e, 0xac, 0xf9, 0xda, 0xf8, - 0xca, 0x95, 0x74, 0x8e, 0x88, 0x57, 0x76, 0x91, 0x8b, 0x33, - 0x16, 0x62, 0x72, 0x49, 0x39, 0x26, 0x92, 0x8a, 0x2b, 0xe6, - 0x4e, 00, 0xa2, 0x8a, 0x96, 0xde, 0xd2, 0x7b, 0xc7, 0xd9, - 0x4, 0x32, 0x4e, 0xdf, 0xdd, 0x8d, 0xb, 0x1f, 0xd2, 0x9a, - 0x4d, 0xbb, 0x20, 0x22, 0xa2, 0xb5, 0x47, 0x84, 0xb5, 0xc2, - 0x32, 0x34, 0x5d, 0x47, 0x1e, 0xbf, 0x64, 0x93, 0xfc, 0x2a, - 0x95, 0xd6, 0x9f, 0x75, 0x62, 0x71, 0x73, 0x6d, 0x35, 0xb9, - 0xf4, 0x96, 0x32, 0xbf, 0xce, 0xae, 0x54, 0xe7, 0x15, 0x79, - 0x45, 0xaf, 0x90, 0xdc, 0x5a, 0xdd, 0x15, 0xe8, 0xa2, 0x8a, - 0xcc, 0x41, 0x57, 0x34, 0xad, 0x66, 0xfb, 0x43, 0xba, 0x5b, - 0x9d, 0x3e, 0xee, 0x6b, 0x39, 0xd4, 0xe7, 0x7c, 0x2e, 0x57, - 0x3f, 0x5f, 0x5f, 0xa1, 0xaa, 0x74, 0x55, 0x46, 0x4e, 0x2f, - 0x9a, 0x2e, 0xcc, 0x13, 0x6b, 0x54, 0x7b, 0xef, 0xc3, 0xef, - 0xda, 0x9, 0x2e, 0xe5, 0x8e, 0xc7, 0xc4, 0xc1, 0x20, 0x73, - 0x85, 0x5b, 0xf8, 0xc6, 0x14, 0x9f, 0xf6, 0xc7, 0x6f, 0xa8, - 0xe3, 0xd8, 0x57, 0xb6, 0x47, 0x22, 0x4d, 0x1a, 0xc9, 0x1b, - 0x7, 0x46, 0x19, 0x56, 0x53, 0x90, 0x47, 0xa8, 0x35, 0xf0, - 0xb5, 0x7a, 0xc7, 0xc1, 0x9f, 0x8b, 0x12, 0x78, 0x76, 0xf2, - 0x1d, 0x17, 0x55, 0x98, 0xbe, 0x93, 0x2b, 0x6d, 0x8a, 0x47, - 0x3f, 0xf1, 0xee, 0xc7, 0xa7, 0x3f, 0xdd, 0x3f, 0xa7, 0xe7, - 0x5f, 0x77, 0x94, 0x67, 0xf2, 0xe6, 0x58, 0x7c, 0x63, 0xba, - 0x7b, 0x4b, 0xfc, 0xff, 00, 0xcf, 0xef, 0x3d, 0x9c, 0x2e, - 0x35, 0xdd, 0x42, 0xaf, 0xde, 0x7d, 0x27, 0x45, 0x20, 0x20, - 0x8c, 0x8e, 0x41, 0xa5, 0xaf, 0xd0, 0xcf, 0x70, 0x28, 0xa2, - 0xaa, 0xea, 0x7a, 0x9d, 0xb6, 0x8d, 0xa7, 0xcf, 0x7b, 0x79, - 0x32, 0xc1, 0x6d, 0x2, 0x17, 0x92, 0x46, 0xe8, 00, 0xa4, - 0xda, 0x8a, 0xbb, 0xd8, 0x4d, 0xdb, 0x56, 0x59, 0x66, 0x8, - 0xa5, 0x98, 0x80, 0x7, 0x24, 0x9e, 0xd5, 0xe6, 0xfe, 0x30, - 0xf8, 0xed, 0xa0, 0x78, 0x6f, 0x7c, 0x36, 0x4d, 0xfd, 0xb1, - 0x7a, 0x38, 0xd9, 0x6e, 0xd8, 0x8d, 0x4f, 0xbb, 0xf4, 0xfc, - 0xb3, 0x5e, 0x45, 0xf1, 0x27, 0xe3, 0x16, 0xa1, 0xe3, 0x29, - 0xe5, 0xb4, 0xb1, 0x79, 0x2c, 0x34, 0x60, 0x70, 0x22, 0x53, - 0x87, 0x98, 0x7a, 0xb9, 0x1d, 0xbf, 0xd9, 0xe9, 0xf5, 0xaf, - 0x3a, 0xaf, 0x80, 0xcc, 0x78, 0x95, 0xa6, 0xe9, 0xe0, 0xd7, - 0xfd, 0xbc, 0xff, 00, 0x45, 0xfe, 0x7f, 0x71, 0xe2, 0xd7, - 0xc7, 0xbb, 0xf2, 0xd2, 0xfb, 0xcf, 0x47, 0xf1, 0x7, 0xc7, - 0xbf, 0x14, 0x6b, 0x3b, 0x92, 0xda, 0x68, 0xb4, 0xa8, 0x4f, - 0xf0, 0xda, 0xaf, 0xcd, 0xff, 00, 0x7d, 0x36, 0x4f, 0xe5, - 0x8a, 0xe1, 0x6f, 0xf5, 0xad, 0x43, 0x54, 0x62, 0xd7, 0x97, - 0xd7, 0x37, 0x64, 0xf7, 0x9a, 0x56, 0x7f, 0xe6, 0x6a, 0x95, - 0x15, 0xf1, 0x75, 0xf1, 0x98, 0x8c, 0x4b, 0xbd, 0x69, 0xb7, - 0xf3, 0xfd, 0xf, 0x26, 0x75, 0x67, 0x53, 0xe2, 0x77, 0xa, - 0x28, 0xa2, 0xb8, 0xcc, 0xc2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, - 0x28, 0xa0, 0xb, 0x76, 0x7a, 0xbd, 0xf6, 0x9c, 0xc1, 0xad, - 0x6f, 0x6e, 0x2d, 0x88, 0xef, 0xc, 0xac, 0x9f, 0xc8, 0xd7, - 0x5b, 0xa2, 0x7c, 0x68, 0xf1, 0x6e, 0x8a, 0x55, 0x57, 0x53, - 0x6b, 0xd8, 0xc7, 0x1e, 0x5d, 0xe2, 0x89, 0x33, 0xf8, 0xfd, - 0xef, 0xd6, 0xb8, 0x7a, 0xdb, 0xf0, 0x4e, 0x96, 0x75, 0xaf, - 0x17, 0x68, 0xf6, 0x41, 0x77, 0x9, 0x6e, 0xa3, 0xc, 0x3f, - 0xd9, 0x7, 0x2d, 0xfa, 0x3, 0x5d, 0xd8, 0x6a, 0xf8, 0x88, - 0x54, 0x8c, 0x68, 0xcd, 0xa6, 0xdd, 0xb4, 0x66, 0xb4, 0xe7, - 0x35, 0x24, 0xa0, 0xec, 0x7d, 0x8d, 0xa5, 0xcb, 0x71, 0x3e, - 0x9b, 0x6b, 0x25, 0xda, 0xaa, 0x5d, 0x3c, 0x4a, 0xd2, 0xaa, - 0xc, 00, 0xc4, 0xc, 0x81, 0xf8, 0xd5, 0x9c, 0x73, 0x9a, - 0x5a, 0x2b, 0xf7, 0x14, 0xac, 0x92, 0x3e, 0xbd, 0x5, 0x14, - 0x51, 0x4c, 0x61, 0x58, 0xfe, 0x2e, 0x97, 0xca, 0xf0, 0xed, - 0xeb, 0x74, 0xf9, 0xd, 0x6c, 0x57, 0x33, 0xf1, 0x12, 0x6f, - 0x27, 0xc2, 0xb7, 0x7d, 0xb2, 0x31, 0x58, 0xd6, 0x7c, 0xb4, - 0xe4, 0xfc, 0x8c, 0xea, 0x3b, 0x41, 0xb3, 0xe1, 0x4f, 0x88, - 0x13, 0x79, 0xde, 0x22, 0xbb, 0x6f, 0xf6, 0x8d, 0x78, 0x7, - 0xc6, 0x8b, 0x8f, 0x2f, 0x47, 0x9b, 0x9f, 0xe1, 0x35, 0xee, - 0x5e, 0x2e, 0x97, 0xcd, 0xd6, 0x6f, 0x1b, 0xfd, 0xb3, 0x5f, - 0x3c, 0x7c, 0x78, 0xb9, 0xf2, 0xb4, 0x6b, 0x9f, 0x68, 0xcf, - 0xf2, 0xaf, 0xcd, 0xb2, 0xc5, 0xcd, 0x5e, 0xfe, 0xa7, 0xe2, - 0x18, 0xbf, 0xde, 0xe3, 0xe9, 0xc7, 0xbc, 0xd7, 0xe6, 0x7e, - 0x94, 0xfc, 0xc, 0xf0, 0x98, 0x5f, 0x82, 0x7f, 0xf, 0x84, - 0x90, 0xb0, 0x90, 0x78, 0x7b, 0x4f, 0xd, 0x91, 0xce, 0x7e, - 0xcd, 0x1e, 0x68, 0xaf, 0x59, 0xf8, 0x75, 0x66, 0x2c, 0xfe, - 0x1f, 0x78, 0x62, 0xdc, 0xc6, 0x10, 0xc5, 0xa5, 0xda, 0xc7, - 0xb7, 0x1d, 0x31, 0x12, 0x8c, 0x51, 0x5f, 0xa6, 0x24, 0x7e, - 0xe0, 0xa3, 0xa1, 0xd1, 0xd1, 0x45, 0x15, 0x65, 0x85, 0x14, - 0x51, 0x40, 0x5, 0x7c, 0x4d, 0xfb, 0x4b, 0xf8, 0xc4, 0xf8, - 0xa3, 0xe2, 0x65, 0xcd, 0xac, 0x6e, 0x1a, 0xd3, 0x49, 0x51, - 0x69, 0x1e, 0x31, 0x8d, 0xfd, 0x5c, 0xe4, 0x7b, 0x9c, 0x7e, - 0x15, 0xf5, 0xdf, 0x8e, 0xfc, 0x51, 0xf, 0x82, 0xfc, 0x21, - 0xaa, 0xeb, 0x33, 0x9f, 0x96, 0xd2, 0x6, 0x75, 0x5c, 0xe3, - 0x73, 0xe3, 0xa, 0xa3, 0xdc, 0x9c, 0x57, 0xe7, 0x9b, 0xcb, - 0x3e, 0xa5, 0x7a, 0xf3, 0x4c, 0xc6, 0x5b, 0x9b, 0x89, 0xb, - 0xbb, 0x1e, 0xac, 0xcc, 0x72, 0x4f, 0xe6, 0x6b, 0xe4, 0x78, - 0x83, 0x13, 0xcb, 0x4e, 0x34, 0x17, 0x5d, 0x5f, 0xa2, 0x3e, - 0x33, 0x88, 0xf1, 0x36, 0x84, 0x30, 0xd1, 0xde, 0x5a, 0xbf, - 0x45, 0xb7, 0xe3, 0xf9, 0x1e, 0xfb, 0xfb, 0x27, 0x78, 0x3f, - 0xed, 0xba, 0xdd, 0xe6, 0xb5, 0x32, 0xe6, 0x3b, 0x65, 0xdb, - 0x1e, 0x47, 0xf1, 0x1a, 0xfa, 0xb6, 0xbc, 0xff, 00, 0xe0, - 0x77, 0x85, 0x7, 0x85, 0x7e, 0x1f, 0xe9, 0xf1, 0x32, 0x6d, - 0x9e, 0x75, 0xf3, 0xa4, 0xfa, 0x9a, 0xf4, 0xa, 0xf5, 0xf2, - 0xac, 0x3f, 0xd5, 0xb0, 0x90, 0x8b, 0xdd, 0xea, 0xfe, 0x67, - 0xd0, 0x65, 0xb8, 0x7f, 0xaa, 0xe1, 0x61, 0xe, 0xbb, 0xbf, - 0x98, 0x51, 0x45, 0x15, 0xeb, 0x9e, 0x98, 0x51, 0x45, 0x14, - 00, 0x53, 0x26, 0x86, 0x3b, 0x98, 0x64, 0x86, 0x68, 0xd6, - 0x58, 0xa4, 0x52, 0xae, 0x8e, 0x32, 0xac, 0xf, 0x4, 0x11, - 0xdc, 0x56, 0x5f, 0x8a, 0xfc, 0x5b, 0xa3, 0x78, 0x1b, 0xc3, - 0xf7, 0xba, 0xe7, 0x88, 0x35, 0x3b, 0x5d, 0x1f, 0x48, 0xb2, - 0x8c, 0xcb, 0x71, 0x7b, 0x79, 0x20, 0x8e, 0x38, 0xd4, 0x77, - 0x24, 0xd7, 0xe7, 0xf7, 0xc6, 0xdf, 0xf8, 0x2c, 0x9f, 0x82, - 0xfc, 0x31, 0x3c, 0xd6, 0x1f, 0xd, 0xbc, 0x39, 0x73, 0xe3, - 0xb, 0x84, 0x3b, 0x7f, 0xb4, 0xb5, 0x16, 0x36, 0x96, 0x9f, - 0x55, 0x5c, 0x19, 0x1f, 0xf1, 0xb, 0x40, 0x1e, 0x85, 0xf1, - 0x93, 0xfe, 0x9, 0x37, 0xf0, 0x6b, 0xe2, 0x76, 0xa3, 0x73, - 0xa9, 0xe8, 0x9f, 0xda, 0x3e, 0x3, 0xd4, 0x6e, 0x1c, 0xc9, - 0x20, 0xd2, 0x1d, 0x5e, 0xd4, 0xb1, 0xeb, 0xfb, 0x97, 0x4, - 0x2f, 0xd1, 0xa, 0x8a, 0xf0, 0xd9, 0xbf, 0xe0, 0x88, 0xb0, - 0xfd, 0xb3, 0x31, 0x7c, 0x58, 0x90, 0x5a, 0x67, 0xa3, 0xe8, - 0xa0, 0xc9, 0x8f, 0xa8, 0x9b, 0x15, 0xe2, 0x1a, 0xa7, 0xfc, - 0x16, 0xf, 0xe3, 0xc5, 0xf4, 0xcc, 0xd6, 0xd0, 0x78, 0x57, - 0x4e, 0x8c, 0xfd, 0xd4, 0x87, 0x4c, 0x76, 0xc7, 0xe2, 0xf2, - 0xb6, 0x6b, 0xed, 0xf, 0xf8, 0x26, 0xc7, 0xed, 0x35, 0xf1, - 0x77, 0xf6, 0xa3, 0x93, 0xc5, 0xba, 0xcf, 0x8e, 0x2e, 0xb4, - 0xb6, 0xf0, 0xde, 0x91, 0xe5, 0x5a, 0x5b, 0x8b, 0x1b, 0x11, - 0xb, 0xcb, 0x74, 0xff, 00, 0x33, 0x65, 0xb2, 0x78, 0x54, - 0x3, 0x81, 0xfd, 0xf1, 0x4f, 0x52, 0x74, 0x65, 0xf, 0x87, - 0x1f, 0xf0, 0x47, 0x3f, 0x84, 0x5e, 0x16, 0xb8, 0x4b, 0x8f, - 0x13, 0xeb, 0x1a, 0xef, 0x8c, 0xa4, 0x52, 0xf, 0x91, 0x2c, - 0xab, 0x67, 0x6e, 0x48, 0xf5, 0x58, 0xfe, 0x7f, 0xfc, 0x7e, - 0xbe, 0xd5, 0xf0, 0x27, 0xc3, 0xef, 0xd, 0xfc, 0x31, 0xf0, - 0xe5, 0xb6, 0x81, 0xe1, 0x4d, 0x12, 0xcb, 0x40, 0xd1, 0xed, - 0x86, 0x23, 0xb4, 0xb1, 0x88, 0x46, 0x83, 0xd4, 0x9c, 0x75, - 0x27, 0xb9, 0x39, 0x26, 0xbc, 0x43, 0xc5, 0x7f, 0xf0, 0x50, - 0xef, 0x80, 0xbe, 0x6, 0xf1, 0x76, 0xaf, 0xe1, 0x8d, 0x7b, - 0xc6, 0xaf, 0xa6, 0x6b, 0x5a, 0x55, 0xd4, 0x96, 0x77, 0x96, - 0xd2, 0xe9, 0x77, 0x67, 0xcb, 0x95, 0x1b, 0x6b, 0xd, 0xc2, - 0x22, 0xa7, 0x91, 0xd4, 0x1c, 0x1a, 0xf5, 0xbf, 0x84, 0xbf, - 0x19, 0xbc, 0x1d, 0xf1, 0xcf, 0xc2, 0xed, 0xe2, 0x2f, 0x3, - 0xeb, 0x51, 0xeb, 0xba, 0x3a, 0xdc, 0x35, 0xab, 0x5c, 0xc7, - 0x1b, 0xc6, 0x4, 0x8a, 0x1, 0x65, 0xc3, 0xa8, 0x3c, 0x6, - 0x1d, 0xbb, 0xd2, 0x19, 0xda, 0xd7, 0x11, 0xf1, 0x93, 0xc4, - 0x43, 0xc3, 0xbe, 0x1, 0xd4, 0x59, 0x5f, 0x6c, 0xf7, 0x4b, - 0xf6, 0x58, 0xb9, 0xe7, 0x2f, 0xc1, 0xfc, 0x97, 0x71, 0xae, - 0xde, 0xbe, 0x76, 0xfd, 0xa4, 0x7c, 0x43, 0xf6, 0xcd, 0x7e, - 0xc3, 0x48, 0x8d, 0xf2, 0x96, 0x91, 0x19, 0x64, 0x3, 0xfb, - 0xef, 0xd3, 0xf2, 00, 0x7e, 0x75, 0xe2, 0xe7, 0x18, 0x9f, - 0xaa, 0xe0, 0xa7, 0x35, 0xbb, 0xd1, 0x7a, 0xbf, 0xea, 0xe7, - 0x2e, 0x2a, 0xa7, 0xb3, 0xa4, 0xdf, 0xc8, 0xf1, 0xda, 0x28, - 0xa2, 0xbf, 0x19, 0x3e, 0x54, 0x2a, 0xe6, 0x8f, 0xa6, 0x49, - 0xac, 0xea, 0xd6, 0x76, 0x10, 0x82, 0x65, 0xb9, 0x99, 0x22, - 0x5c, 0x76, 0xdc, 0x40, 0xcd, 0x53, 0xaf, 0x44, 0xf8, 0x18, - 0x9a, 0x64, 0x3e, 0x33, 0xfb, 0x7e, 0xa9, 0x79, 0x6d, 0x67, - 0x15, 0x9c, 0x4c, 0xf1, 0x1b, 0x89, 0x42, 0x6, 0x90, 0xfc, - 0xa3, 0x19, 0xeb, 0x80, 0x58, 0xfe, 0x55, 0xd7, 0x84, 0xa2, - 0xb1, 0x18, 0x88, 0x52, 0x6e, 0xc9, 0xbd, 0x7d, 0x3a, 0x9a, - 0x52, 0x8f, 0x3c, 0xd4, 0x59, 0xf4, 0xfe, 0x9f, 0x63, 0x16, - 0x99, 0x61, 0x6f, 0x69, 0x2, 0xec, 0x86, 0x8, 0xd6, 0x24, - 0x51, 0xd8, 0x1, 0x81, 0x56, 0x2b, 0x2a, 0x3f, 0x16, 0x68, - 0x93, 0x7d, 0xcd, 0x5e, 0xc5, 0xff, 00, 0xdd, 0xb9, 0x43, - 0xfd, 0x6a, 0x43, 0xe2, 0x4d, 0x25, 0x46, 0x4e, 0xa9, 0x66, - 0x7, 0xaf, 0x9e, 0x9f, 0xe3, 0x5f, 0xb7, 0xc6, 0xa5, 0x24, - 0xac, 0xa4, 0xad, 0xea, 0x7d, 0x72, 0x94, 0x6d, 0xa3, 0x34, - 0x69, 0x9, 0xa, 0x9, 0x27, 00, 0x72, 0x49, 0xae, 0x5b, - 0x55, 0xf8, 0xa5, 0xe1, 0x5d, 0x1a, 0x36, 0x69, 0xf5, 0xbb, - 0x57, 0x23, 0xf8, 0x20, 0x7f, 0x35, 0xbf, 0x25, 0xcd, 0x78, - 0xf7, 0xc4, 0x9f, 0x8f, 0x12, 0x6b, 0xf6, 0xb2, 0xe9, 0x9a, - 0xa, 0x49, 0x69, 0x67, 0x20, 0x29, 0x2d, 0xd4, 0x9c, 0x49, - 0x22, 0x9e, 0xa1, 0x47, 0xf0, 0x8f, 0x7e, 0xbf, 0x4a, 0xf3, - 0x71, 0x99, 0xb6, 0x13, 0x7, 0x6, 0xe5, 0x34, 0xdf, 0x64, - 0xee, 0xcc, 0x2a, 0xe2, 0x69, 0xd2, 0x57, 0x6e, 0xec, 0xe2, - 0x3e, 0x27, 0x78, 0x82, 0x2f, 0x13, 0xf8, 0xe7, 0x55, 0xbf, - 0x80, 0x83, 0x6e, 0xd2, 0x8, 0xe3, 0x61, 0xfc, 0x4a, 0x80, - 0x28, 0x3f, 0x8e, 0x33, 0xf8, 0xd7, 0x2d, 0x45, 0x15, 0xf8, - 0xed, 0x6a, 0xb2, 0xaf, 0x52, 0x55, 0x65, 0xbc, 0x9b, 0x7f, - 0x79, 0xf2, 0xd2, 0x93, 0x9c, 0x9c, 0x9f, 0x50, 0xa2, 0x8a, - 0xe9, 0x3c, 0x7, 0xe0, 0x6b, 0xdf, 0x1e, 0x6b, 0x69, 0x65, - 0x6a, 0xc, 0x70, 0x2f, 0xcd, 0x3d, 0xc1, 0x1f, 0x2c, 0x49, - 0xfe, 0x27, 0xb0, 0xa5, 0x4a, 0x94, 0xeb, 0xcd, 0x53, 0xa6, - 0xae, 0xd8, 0x46, 0x2e, 0x6d, 0x46, 0x3b, 0x9e, 0xab, 0xfb, - 0x36, 0xf8, 0x58, 0xa4, 0x57, 0xfa, 0xfc, 0xc8, 0x41, 0x7f, - 0xf4, 0x6b, 0x72, 0x47, 0x51, 0xc1, 0x72, 0x3f, 0x1c, 0xf, - 0xc0, 0xd7, 0xb9, 0x55, 0x3d, 0x23, 0x4a, 0xb6, 0xd0, 0xf4, - 0xcb, 0x6b, 0xb, 0x38, 0xc4, 0x56, 0xd6, 0xf1, 0x88, 0xd1, - 0x47, 0xa0, 0xfe, 0xb5, 0x72, 0xbf, 0x6a, 0xcb, 0xf0, 0x8b, - 0x3, 0x86, 0x85, 0x5, 0xba, 0xdf, 0xd7, 0xa9, 0xf5, 0x94, - 0x29, 0x7b, 0x1a, 0x6a, 0x1, 0x45, 0x14, 0x57, 0xa2, 0x6e, - 0x14, 0x51, 0x45, 00, 0x7c, 0xf7, 0xfb, 0x4a, 0xeb, 0xa6, - 0x7d, 0x67, 0x4c, 0xd2, 0x11, 0xbe, 0x4b, 0x78, 0x8d, 0xc3, - 0x8f, 0xf6, 0x98, 0xe0, 0x7e, 0x41, 0x4f, 0xe7, 0x5e, 0x31, - 0x5d, 0x3f, 0xc4, 0xcd, 0x77, 0xfe, 0x12, 0x3f, 0x1c, 0xea, - 0xf7, 0x81, 0xb7, 0x45, 0xe7, 0x18, 0xa3, 0x3f, 0xec, 0x27, - 0xca, 0x3f, 0x96, 0x7f, 0x1a, 0xe6, 0x2b, 0xf1, 0x3c, 0xcf, - 0x11, 0xf5, 0x9c, 0x65, 0x4a, 0x8b, 0x6b, 0xe9, 0xe8, 0xb4, - 0x47, 0xc9, 0x62, 0x27, 0xed, 0x2a, 0xca, 0x41, 0x45, 0x14, - 0x57, 0x96, 0x73, 0x9b, 0x3e, 0xd, 0xd0, 0xcf, 0x89, 0x3c, - 0x55, 0xa5, 0xe9, 0xb8, 0xca, 0xdc, 0x4e, 0xaa, 0xff, 00, - 0xee, 0xe, 0x5b, 0xf4, 0x6, 0xbe, 0xd1, 0x55, 0xa, 0xa0, - 0x1, 0x80, 0x6, 00, 0xaf, 0x9a, 0xff, 00, 0x67, 0x4d, - 0x18, 0xdf, 0x78, 0xce, 0x7b, 0xf6, 0x5c, 0xc7, 0x63, 0x6e, - 0xc4, 0x1f, 0xf6, 0xdf, 0xe5, 0x1f, 0xa6, 0xea, 0xfa, 0x56, - 0xbf, 0x50, 0xe1, 0x8a, 0x1e, 0xcf, 0xb, 0x2a, 0xaf, 0x79, - 0x3f, 0xc1, 0x7f, 0xc1, 0xb9, 0xf4, 0x19, 0x7c, 0x2d, 0x4d, - 0xcb, 0xb8, 0x51, 0x45, 0x15, 0xf6, 0x7, 0xaa, 0x14, 0x51, - 0x55, 0xb5, 0x1d, 0x42, 0xd, 0x2a, 0xc2, 0xe2, 0xf6, 0xe5, - 0xc4, 0x76, 0xf6, 0xf1, 0xb4, 0xb2, 0x39, 0xec, 0xa0, 0x64, - 0xd2, 0x6d, 0x45, 0x5d, 0x83, 0x76, 0xd4, 0xe3, 0x3e, 0x2d, - 0x7c, 0x47, 0x4f, 0x1, 0x68, 0xaa, 0xb6, 0xfb, 0x5f, 0x55, - 0xba, 0x5, 0x60, 0x43, 0xce, 0xc1, 0xdd, 0xc8, 0xf4, 0x1d, - 0xbd, 0x4d, 0x7c, 0xab, 0x73, 0x73, 0x2d, 0xe5, 0xc4, 0xb3, - 0xcf, 0x23, 0x4b, 0x34, 0xac, 0x5d, 0xe4, 0x73, 0x92, 0xc4, - 0xf5, 0x26, 0xb6, 0x3c, 0x6d, 0xe2, 0xa9, 0xfc, 0x65, 0xe2, - 0x4b, 0xcd, 0x52, 0x72, 0x42, 0xc8, 0xdb, 0x62, 0x8c, 0xff, - 00, 0xcb, 0x38, 0xc7, 0xdd, 0x5f, 0xcb, 0xf5, 0x26, 0xb0, - 0xab, 0xf1, 0xdc, 0xdf, 0x32, 0x96, 0x61, 0x5d, 0xb4, 0xfd, - 0xc5, 0xb2, 0xfd, 0x7e, 0x67, 0xcb, 0x62, 0x6b, 0xba, 0xf3, - 0xf2, 0x5b, 0x5, 0x14, 0x51, 0x5e, 0x11, 0xc6, 0x15, 0xa7, - 0xe1, 0xdf, 0xe, 0x6a, 0x1e, 0x2a, 0xd5, 0x22, 0xb0, 0xd3, - 0x6d, 0xda, 0x79, 0xdc, 0xf6, 0xfb, 0xa8, 0x3f, 0xbc, 0xc7, - 0xb0, 0xf7, 0xa8, 0x34, 0x7d, 0x22, 0xeb, 0x5e, 0xd4, 0xed, - 0xb4, 0xfb, 0x28, 0x8c, 0xd7, 0x57, 0xe, 0x11, 0x10, 0x7a, - 0xfb, 0xfb, 0xe, 0xb5, 0xf5, 0xc7, 0xc3, 0xff, 00, 0x1, - 0xd9, 0x78, 0xb, 0x45, 0x5b, 0x4b, 0x71, 0xbe, 0xe6, 0x40, - 0x1a, 0xe6, 0xe0, 0xf5, 0x91, 0xf1, 0xfa, 0x1, 0xd8, 0x57, - 0xbf, 0x94, 0xe5, 0x52, 0xcc, 0xaa, 0x5d, 0xe9, 0x5, 0xbb, - 0xfd, 0x17, 0xf5, 0xa1, 0xdb, 0x86, 0xc3, 0x3a, 0xf2, 0xd7, - 0x64, 0x71, 0xde, 0xf, 0xfd, 0x9f, 0x34, 0x6d, 0x26, 0x28, - 0xe6, 0xd6, 0x98, 0xea, 0xd7, 0x9d, 0x4c, 0x79, 0x2b, 0xa, - 0x9f, 0x4c, 0x75, 0x6f, 0xc7, 0xf2, 0xaf, 0x50, 0xb2, 0xd3, - 0xed, 0x74, 0xd8, 0x16, 0x1b, 0x4b, 0x68, 0xad, 0xa2, 0x51, - 0x80, 0x91, 0x20, 0x50, 0x3f, 0x1, 0x56, 0x28, 0xaf, 0xd5, - 0x30, 0xd8, 0x2c, 0x3e, 0x12, 0x3c, 0xb4, 0x60, 0x97, 0xe7, - 0xf7, 0x9f, 0x45, 0x4e, 0x94, 0x29, 0x2b, 0x41, 0x58, 0x2a, - 0x2b, 0x8b, 0x58, 0x6e, 0xe2, 0x68, 0xe7, 0x89, 0x26, 0x8d, - 0x86, 0xa, 0x48, 0xa1, 0x81, 0xfc, 0xd, 0x4b, 0x45, 0x76, - 0x34, 0x9e, 0x8c, 0xd8, 0xf2, 0xef, 0x1a, 0xfc, 0x5, 0xd1, - 0x75, 0xe8, 0x65, 0x9f, 0x49, 0x51, 0xa4, 0xea, 0x7, 0x2c, - 0x2, 0x67, 0xc9, 0x73, 0xe8, 0x57, 0xb7, 0xd4, 0x7e, 0x46, - 0xbe, 0x72, 0xd6, 0x74, 0x6b, 0xcf, 0xf, 0xea, 0x73, 0xd8, - 0x5f, 0xc0, 0xd6, 0xf7, 0x50, 0xb6, 0xd7, 0x46, 0xfe, 0x63, - 0xd4, 0x1f, 0x5a, 0xfb, 0x7a, 0xbc, 0x83, 0xf6, 0x87, 0xf0, - 0x7c, 0x5a, 0x87, 0x87, 0xd3, 0x5e, 0x89, 0x31, 0x77, 0x64, - 0x55, 0x25, 0x61, 0xfc, 0x51, 0x31, 0xc7, 0x3f, 0x42, 0x47, - 0xe6, 0x6b, 0xe2, 0xf3, 0xcc, 0x9a, 0x94, 0xa8, 0xcb, 0x13, - 0x87, 0x8f, 0x2c, 0xa3, 0xab, 0x4b, 0x66, 0xba, 0xfc, 0xcf, - 0x23, 0x19, 0x85, 0x8b, 0x8b, 0xa9, 0x5, 0x66, 0x8f, 0x9c, - 0xe8, 0xa2, 0x8a, 0xfc, 0xd0, 0xf0, 0x42, 0x8a, 0x28, 0xa0, - 0xf, 0xa8, 0x7e, 0x5, 0x78, 0xd2, 0x4f, 0x14, 0x78, 0x54, - 0xd9, 0xdd, 0x3e, 0xfb, 0xcd, 0x34, 0xac, 0x25, 0x89, 0xe5, - 0xe3, 0xc7, 0xc8, 0x4f, 0xbf, 0x4, 0x7e, 0x15, 0xe9, 0x55, - 0xf2, 0xd7, 0xc0, 0x5d, 0x71, 0xf4, 0x9f, 0x88, 0x16, 0xd6, - 0xfb, 0xb1, 0xd, 0xfa, 0x34, 0xe, 0x3b, 0x67, 0x1b, 0x94, - 0xfe, 0x63, 0x1f, 0x8d, 0x7d, 0x4b, 0x5f, 0xb0, 0x64, 0x58, - 0xb7, 0x8b, 0xc1, 0x45, 0xc9, 0xeb, 0x1d, 0x1f, 0xcb, 0x6f, - 0xc0, 0xfa, 0x7c, 0x1d, 0x47, 0x52, 0x92, 0xbe, 0xeb, 0x40, - 0xaf, 0x9c, 0x7e, 0x3f, 0xf8, 0xf1, 0xf5, 0x6d, 0x67, 0xfb, - 0x2, 0xd2, 0x42, 0x2c, 0xac, 0x88, 0x33, 0xed, 0x3c, 0x49, - 0x2f, 0xa7, 0xd1, 0x7f, 0x9e, 0x7d, 0x2b, 0xe8, 0x6d, 0x42, - 0xf1, 0x34, 0xfb, 0xb, 0x9b, 0xa9, 0xe, 0x12, 0x8, 0x9a, - 0x46, 0xfa, 00, 0x4f, 0xf4, 0xaf, 0x88, 0xef, 0xef, 0x24, - 0xd4, 0x6f, 0xae, 0x2e, 0xe6, 0x39, 0x96, 0x79, 0x1a, 0x57, - 0x3e, 0xec, 0x72, 0x7f, 0x9d, 0x79, 0x9c, 0x4d, 0x8b, 0x95, - 0x1a, 0x11, 0xa1, 0x7, 0xf1, 0xef, 0xe8, 0x8e, 0x7c, 0xc2, - 0xab, 0x8c, 0x14, 0x17, 0x52, 0xa, 0x28, 0xa2, 0xbf, 0x32, - 0x3c, 00, 0xa2, 0x8a, 0x96, 0xd2, 0xdd, 0xae, 0xee, 0xa1, - 0x81, 0x8, 0xf, 0x2b, 0xac, 0x60, 0x9e, 0x99, 0x27, 0x14, - 0xd2, 0x6d, 0xd9, 0x1, 0x7f, 0x40, 0xf0, 0xc6, 0xab, 0xe2, - 0x8b, 0xaf, 0xb3, 0xe9, 0x76, 0x33, 0x5e, 0x48, 0x3e, 0xf7, - 0x96, 0xbf, 0x2a, 0xff, 00, 0xbc, 0xdd, 0x7, 0xe3, 0x5e, - 0x8d, 0xa7, 0x7e, 0xcd, 0xfe, 0x20, 0xb9, 0x40, 0xd7, 0x57, - 0xb6, 0x56, 0x79, 0xfe, 0x1d, 0xcd, 0x23, 0xf, 0xc8, 0x63, - 0xf5, 0xaf, 0x7a, 0xf0, 0xb7, 0x86, 0xac, 0xfc, 0x27, 0xa1, - 0xda, 0xe9, 0xb6, 0x51, 0x85, 0x8e, 0x25, 0x1, 0x9b, 0x1c, - 0xc8, 0xdd, 0xd8, 0xfb, 0x93, 0x5a, 0xf5, 0xfa, 0x5e, 0x13, - 0x86, 0x70, 0xf0, 0x82, 0x78, 0x96, 0xe5, 0x2f, 0xb9, 0x7f, - 0x99, 0xef, 0xd2, 0xcb, 0xe0, 0x95, 0xea, 0x6a, 0xcf, 0x2, - 0x5f, 0xd9, 0x8e, 0xeb, 0x1f, 0x36, 0xbf, 0x8, 0x3e, 0xd6, - 0xc4, 0xff, 00, 0xec, 0xd4, 0xd7, 0xfd, 0x98, 0xef, 00, - 0xf9, 0x35, 0xe8, 0x9, 0xff, 00, 0x6a, 0xd9, 0x87, 0xfe, - 0xcd, 0x5e, 0xff, 00, 0x45, 0x7a, 0x5f, 0xea, 0xfe, 0x5d, - 0xff, 00, 0x3e, 0xff, 00, 0x17, 0xfe, 0x67, 0x47, 0xd4, - 0xa8, 0x76, 0xfc, 0x59, 0xf3, 0x8d, 0xd7, 0xec, 0xd7, 0xaf, - 0x44, 0x9, 0x83, 0x51, 0xb0, 0x9f, 0xd9, 0x8b, 0xa1, 0xff, - 00, 0xd0, 0x4d, 0x73, 0x3a, 0xb7, 0xc1, 0x7f, 0x17, 0x69, - 0x21, 0x99, 0xb4, 0xa6, 0xba, 0x41, 0xfc, 0x56, 0x8e, 0x24, - 0xfd, 0x7, 0x3f, 0xa5, 0x7d, 0x69, 0x45, 0x73, 0x54, 0xe1, - 0xac, 0xc, 0xd7, 0xb9, 0x78, 0xfc, 0xff, 00, 0xcc, 0xce, - 0x59, 0x7d, 0x17, 0xb5, 0xd1, 0xf0, 0xe5, 0xee, 0x9d, 0x77, - 0xa6, 0xc9, 0xe5, 0xdd, 0xda, 0xcd, 0x6b, 0x27, 0xf7, 0x66, - 0x8c, 0xa1, 0xfc, 0x8d, 0x7a, 0x5f, 0xec, 0xed, 0xa3, 0xb, - 0xff, 00, 0x1b, 0xcb, 0x78, 0xe3, 0x2b, 0x63, 0x6e, 0xce, - 0xa7, 0xd1, 0x9b, 0xe5, 0x1f, 0xa1, 0x6a, 0xfa, 0x3e, 0xff, - 00, 0x4d, 0xb4, 0xd5, 0x6d, 0xda, 0xb, 0xcb, 0x68, 0xae, - 0xa1, 0x61, 0x83, 0x1c, 0xc8, 0x18, 0x1f, 0xc0, 0xd6, 0x4f, - 0x86, 0xfc, 0xd, 0xa3, 0x78, 0x46, 0xea, 0xf6, 0x7d, 0x26, - 0xd3, 0xec, 0x8d, 0x77, 0xb7, 0xcc, 0x55, 0x62, 0x57, 0xe5, - 0xce, 0x30, 0xf, 0x4e, 0xa7, 0xa5, 0x71, 0x61, 0xb8, 0x71, - 0xe1, 0x71, 0x74, 0xeb, 0x29, 0xa9, 0x45, 0x3b, 0xeb, 0xa3, - 0xf2, 0xfc, 0x4c, 0x69, 0xe0, 0x1d, 0x3a, 0x91, 0x95, 0xee, - 0x91, 0xbf, 0x45, 0x14, 0x57, 0xdc, 0x1e, 0xc0, 0x51, 0x45, - 0x14, 00, 0x57, 0x13, 0xf1, 0x6e, 0xe3, 0xc8, 0xf0, 0xa4, - 0xe3, 0xfb, 0xc0, 0xd7, 0x6d, 0x5e, 0x6b, 0xf1, 0xca, 0xe3, - 0xc9, 0xf0, 0xbb, 0xc, 0xe3, 0x2a, 0xd5, 0xc5, 0x8d, 0x97, - 0x2e, 0x1e, 0x6f, 0xc8, 0xe7, 0xc4, 0x3b, 0x52, 0x93, 0xf2, - 0x3e, 0x20, 0xf1, 0x4, 0xbe, 0x65, 0xfd, 0xd3, 0x7a, 0xb9, - 0xaf, 0x9e, 0xfe, 0x34, 0xc4, 0x75, 0x29, 0x6d, 0xec, 0x14, - 0xe0, 0xdd, 0x4f, 0x1c, 00, 0xff, 00, 0xbc, 0xc1, 0x7f, - 0xad, 0x7b, 0xe6, 0xae, 0xfb, 0xa5, 0x98, 0xfa, 0xb1, 0xaf, - 0x12, 0xf1, 0x1d, 0xa7, 0xf6, 0xd7, 0xc5, 0x2f, 0x6, 0xe9, - 0xa3, 0xfe, 0x5e, 0xb5, 0xdb, 0x18, 0x78, 0xf7, 0x9d, 0x5, - 0x7c, 0x1e, 0x4d, 0x1b, 0xd4, 0x47, 0xe2, 0xf4, 0xd7, 0xb4, - 0xcd, 0x28, 0xaf, 0xef, 0x1f, 0xb2, 0xba, 0x6c, 0x1f, 0x65, - 0xd3, 0xed, 0x61, 0xff, 00, 0x9e, 0x71, 0x2a, 0x7e, 0x40, - 0xa, 0x2a, 0xcd, 0x15, 0xfa, 0x49, 0xfb, 0x80, 0x51, 0x45, - 0x14, 00, 0x51, 0x45, 0x21, 0x21, 0x41, 0x24, 0xe0, 0xe, - 0x49, 0xa0, 0xf, 0x9d, 0x7f, 0x6b, 0xdf, 0x1a, 0x2d, 0xb6, - 0x93, 0xa6, 0x78, 0x5e, 0x16, 0x6, 0x5b, 0xa7, 0xfb, 0x5d, - 0xc0, 0xd, 0xc8, 0x45, 0x38, 0x50, 0x47, 0xbb, 0x64, 0xff, - 00, 0xc0, 0x6b, 0xc3, 0xbe, 0x10, 0xf8, 0x59, 0xbc, 0x59, - 0xe3, 0xad, 0x36, 0xcf, 0x69, 0x68, 0x84, 0x81, 0xdf, 0x3, - 0xb0, 0xe6, 0x9d, 0xf1, 0xa3, 0xc6, 0x63, 0xc7, 0x7f, 0x11, - 0xf5, 0x5d, 0x46, 0x27, 0xdf, 0x67, 0x1b, 0x7d, 0x9a, 0xd8, - 0x83, 0x91, 0xe5, 0xa7, 00, 0x8f, 0x62, 0x77, 0x37, 0xe3, - 0x5e, 0xd3, 0xfb, 0x25, 0xf8, 0x3f, 0xca, 0xb7, 0xbe, 0xd7, - 0x66, 0x8c, 0x65, 0x8f, 0x95, 0x13, 0x11, 0xf9, 0xd7, 0xe7, - 0x55, 0x3f, 0xe1, 0x4f, 0x33, 0x51, 0x5a, 0xc6, 0xff, 00, - 0x82, 0xff, 00, 0x3f, 0xd4, 0xfc, 0xe6, 0x2f, 0xfb, 0x53, - 0x35, 0x72, 0xde, 0x29, 0xfe, 0xb, 0xfc, 0xcf, 0xa3, 0x60, - 0x85, 0x6d, 0xe1, 0x8e, 0x24, 0x18, 0x44, 0x50, 0xa0, 0x7b, - 0xa, 0x92, 0x8a, 0x2b, 0xf4, 0x5d, 0x8f, 0xd1, 0x82, 0x8a, - 0x28, 0xa0, 0x2, 0xb3, 0x3c, 0x4d, 0xe2, 0x4d, 0x33, 0xc1, - 0xde, 0x1e, 0xd4, 0x75, 0xcd, 0x66, 0xf2, 0x2d, 0x3f, 0x4a, - 0xd3, 0xe0, 0x7b, 0x9b, 0xab, 0xa9, 0x9b, 0x6a, 0x45, 0x1a, - 0x8c, 0xb3, 0x13, 0xf4, 0x15, 0xa7, 0x5f, 0x1, 0xff, 00, - 0xc1, 0x62, 0x3e, 0x30, 0xc9, 0xe0, 0xdf, 0x81, 0x1a, 0x3f, - 0x82, 0x2c, 0xa7, 0x31, 0xde, 0x78, 0xae, 0xfb, 0xfd, 0x20, - 0x2b, 0x60, 0xfd, 0x92, 0xc, 0x3b, 0xf, 0xa1, 0x73, 0x10, - 0xfa, 0x3, 0x40, 0x1f, 0x9e, 0x9f, 0xb6, 0x97, 0xed, 0x9b, - 0xe2, 0x4f, 0xda, 0xaf, 0xc7, 0x93, 0xb7, 0x9f, 0x36, 0x9b, - 0xe0, 0x8b, 0x9, 0x5e, 0x3d, 0x2b, 0x47, 0x8e, 0x42, 0x11, - 0x90, 0x37, 0x13, 0xcc, 0x3a, 0x34, 0x8c, 00, 0x3c, 0xfd, - 0xde, 0x83, 0xb9, 0x3a, 0x7f, 0x7, 0xbf, 0xe0, 0x9b, 0x1f, - 0x1c, 0x7e, 0x32, 0x68, 0x56, 0xfa, 0xdd, 0x9e, 0x81, 0x6b, - 0xe1, 0xdd, 0x1e, 0xe6, 0x31, 0x35, 0xbd, 0xd7, 0x88, 0x2e, - 0x7e, 0xcc, 0x66, 0x43, 0xc8, 0x65, 0x8c, 0x6, 0x7c, 0x63, - 0x9c, 0x95, 00, 0xd6, 0x6f, 0xfc, 0x13, 0xbb, 0xe1, 0xbe, - 0x87, 0xf1, 0x4b, 0xf6, 0xb4, 0xf0, 0x66, 0x93, 0xe2, 0x25, - 0x82, 0x7d, 0x32, 0xdc, 0xcd, 0xa8, 0x1b, 0x4b, 0x90, 0xa, - 0x5d, 0x3c, 0x31, 0x97, 0x48, 0xf0, 0x7a, 0xfc, 0xc0, 0x36, - 0x3b, 0x85, 0x35, 0xfb, 0x39, 0xfb, 0x62, 0x7c, 0x66, 0xb7, - 0xf8, 0x5, 0xfb, 0x39, 0x78, 0xc3, 0xc5, 0x2, 0x45, 0x86, - 0xf9, 0x2c, 0xcd, 0x96, 0x9a, 0x83, 0x8d, 0xd7, 0x52, 0x8d, - 0x91, 00, 0x3d, 0x89, 0xdd, 0xf4, 0x53, 0x4c, 0x84, 0xaf, - 0xab, 0x3f, 0x9e, 0x6f, 0x16, 0x78, 0x7d, 0xbc, 0x27, 0xe2, - 0x7d, 0x5b, 0x45, 0x7b, 0xcb, 0x6d, 0x41, 0xf4, 0xeb, 0xa9, - 0x2d, 0x5a, 0xea, 0xcd, 0x8b, 0x43, 0x29, 0x46, 0x2a, 0x59, - 0x9, 00, 0x95, 0x24, 0x70, 0x70, 0x2b, 0xf7, 0xe7, 0xf6, - 0x3, 0xf8, 0x22, 0x3e, 0x5, 0x7e, 0xcc, 0x3e, 0x14, 0xd2, - 0x67, 0x8b, 0xcb, 0xd6, 0x35, 0x38, 0xbf, 0xb6, 0x35, 0x1c, - 0x8f, 0x9b, 0xce, 0x9c, 0x6, 0xda, 0x7f, 0xdd, 0x4d, 0x89, - 0xff, 00, 0x1, 0xaf, 0xc5, 0x9f, 0xd8, 0xf3, 0xe0, 0xb4, - 0xbf, 0xb4, 0xf, 0xed, 0x17, 0xe1, 0xf, 0xa, 0x3a, 0x79, - 0xb6, 0x12, 0x5d, 0xb, 0xdd, 0x49, 0x98, 0x64, 0xb, 0x58, - 0xbf, 0x79, 0x2e, 0x7f, 0xde, 00, 0x27, 0xd5, 0xc5, 0x7e, - 0xd9, 0xfe, 0xd9, 0x7f, 0xb4, 0x8e, 0x8d, 0xfb, 0x30, 0x7c, - 0xf, 0xd5, 0xf5, 0x56, 0xbb, 0x82, 0x1f, 0x11, 0x5d, 0x5b, - 0x3d, 0x9e, 0x83, 0xa7, 0xe4, 0x6f, 0x9a, 0xe0, 0xae, 0xd5, - 0x60, 0xbd, 0x76, 0x26, 0x43, 0x31, 0xec, 0x6, 0x3a, 0x91, - 0x43, 0x5, 0xdc, 0xfc, 0x4a, 0xfd, 0xb3, 0x75, 0xfb, 0x5f, - 0x13, 0x7e, 0xd5, 0x7f, 0x14, 0xf5, 0x1b, 0x26, 0x57, 0xb5, - 0x93, 0x5e, 0xb9, 0x44, 0x74, 0xe8, 0xdb, 0x1b, 0x61, 0x3f, - 0x89, 0x52, 0x6b, 0xf5, 0x7f, 0xfe, 0x9, 0x19, 0xa1, 0x49, - 0xa4, 0xfe, 0xc8, 0x36, 0x77, 0x72, 0x2e, 0xdf, 0xed, 0x3d, - 0x66, 0xf6, 0xe5, 0x33, 0xdd, 0x43, 0x2c, 0x59, 0xfc, 0xe3, - 0x6a, 0xfc, 0x50, 0xd1, 0xf4, 0x9d, 0x57, 0xc7, 0x5e, 0x2a, - 0xb3, 0xd3, 0x6c, 0xd2, 0x4d, 0x43, 0x5a, 0xd5, 0xef, 0x12, - 0x8, 0x97, 0xab, 0xcd, 0x3c, 0xaf, 0x81, 0xf8, 0x96, 0x6a, - 0xfe, 0x91, 0x3e, 0x2, 0xfc, 0x2c, 0xb5, 0xf8, 0x27, 0xf0, - 0x73, 0xc2, 0x3e, 0x8, 0xb4, 0xda, 0x53, 0x46, 0xd3, 0xe3, - 0xb7, 0x92, 0x45, 0x1c, 0x49, 0x2e, 0x37, 0x4a, 0xff, 00, - 0xf0, 0x27, 0x2c, 0x7f, 0x1a, 0x18, 0x2d, 0xee, 0x77, 0x53, - 0xcc, 0x96, 0xd0, 0xc9, 0x34, 0x8c, 0x12, 0x38, 0xd4, 0xb3, - 0x31, 0xe8, 00, 0x19, 0x26, 0xbe, 0x2c, 0xf1, 0x46, 0xb5, - 0x27, 0x88, 0xfc, 0x45, 0xa8, 0xea, 0x52, 0x12, 0x4d, 0xcc, - 0xed, 0x20, 0xcf, 0x65, 0xcf, 0xca, 0x3f, 0x1, 0x81, 0x5f, - 0x4a, 0xfc, 0x73, 0xf1, 0x11, 0xd0, 0x7c, 0x3, 0x75, 0x1c, - 0x6f, 0xb2, 0xe2, 0xf9, 0x85, 0xaa, 0x63, 0xae, 0xf, 0x2f, - 0xff, 00, 0x8e, 0x82, 0x3f, 0x1a, 0xf9, 0x5a, 0xbf, 0x38, - 0xe2, 0x8c, 0x4f, 0x35, 0x48, 0x61, 0x97, 0x4d, 0x5f, 0xcf, - 0x6f, 0xeb, 0xcc, 0xf1, 0x33, 0x1a, 0x97, 0x92, 0xa6, 0xba, - 0x5, 0x14, 0x51, 0x5f, 0xa, 0x79, 0x1, 0x45, 0x14, 0x50, - 0x1, 0x46, 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa2, 0x80, 0xa, - 0x7c, 0x10, 0x49, 0x73, 0x32, 0xc5, 0xc, 0x6f, 0x2c, 0xae, - 0x70, 0xa8, 0x8a, 0x59, 0x89, 0xf6, 0x2, 0xb4, 0x3c, 0x3f, - 0xa9, 0xd9, 0xe9, 0x5a, 0x82, 0xcd, 0x7d, 0xa5, 0xc3, 0xab, - 0x5b, 0xff, 00, 0x14, 0x12, 0xc8, 0xc9, 0xf9, 0x15, 0x3d, - 0x7e, 0xb9, 0xaf, 0xa9, 0xbe, 0x1a, 0x5c, 0xf8, 0x5f, 0x58, - 0xd1, 0x56, 0xff, 00, 0xc3, 0xda, 0x7d, 0xbd, 0x90, 0xce, - 0xc9, 0x63, 0x58, 0x82, 0xc9, 0x1b, 0xe3, 0xee, 0xb1, 0xea, - 0x7e, 0xb9, 0xe6, 0xbd, 0xdc, 0xb3, 0x2c, 0x8e, 0x63, 0x2e, - 0x5f, 0x6a, 0xa2, 0xfb, 0x6b, 0x7f, 0xf2, 0xfc, 0x4e, 0xbc, - 0x3e, 0x1d, 0x57, 0x76, 0xe6, 0xb1, 0xe2, 0xbe, 0x9, 0xf8, - 0xd, 0xad, 0x78, 0x86, 0x54, 0x9b, 0x55, 0x56, 0xd1, 0xec, - 0x3a, 0x9f, 0x30, 0x7e, 0xf9, 0xc7, 0xa0, 0x5e, 0xdf, 0x53, - 0xf9, 0x1a, 0xfa, 0x1f, 0xc3, 0x5e, 0x18, 0xd3, 0xbc, 0x25, - 0xa5, 0xc7, 0x61, 0xa6, 0xc0, 0x20, 0x81, 0x79, 0x27, 0xab, - 0x39, 0xee, 0xcc, 0x7b, 0x9a, 0xd5, 0xa2, 0xbf, 0x4b, 0xc0, - 0x65, 0x58, 0x6c, 0xbd, 0x5e, 0x92, 0xbc, 0xbb, 0xbd, 0xff, - 00, 0xe0, 0x1f, 0x41, 0x47, 0xd, 0x4e, 0x87, 0xc3, 0xbf, - 0x70, 0xa2, 0x8a, 0x2b, 0xd8, 0x3a, 0x82, 0x8a, 0x28, 0xa0, - 0x2, 0xb1, 0x3c, 0x69, 0xac, 0xaf, 0x87, 0xbc, 0x27, 0xaa, - 0xea, 0x5, 0xb6, 0x98, 0x2d, 0xdc, 0xa7, 0xfb, 0xe4, 0x61, - 0x47, 0xe6, 0x45, 0x6d, 0xd7, 0x91, 0xfe, 0xd1, 0xfa, 0xd9, - 0xb2, 0xf0, 0xa5, 0x9e, 0x9c, 0x8d, 0x87, 0xbd, 0xb8, 0xcb, - 0xf, 0x54, 0x41, 0x93, 0xff, 00, 0x8f, 0x15, 0xaf, 0x3f, - 0x30, 0xaf, 0xf5, 0x5c, 0x2d, 0x4a, 0xdd, 0x97, 0xe3, 0xd3, - 0xf1, 0x30, 0xaf, 0x3f, 0x67, 0x4e, 0x52, 0x3e, 0x70, 0x24, - 0x93, 0x93, 0xc9, 0xa2, 0x8a, 0x2b, 0xf0, 0xf3, 0xe4, 0x42, - 0x8a, 0x29, 0x42, 0x96, 0x20, 0x1, 0x92, 0x78, 0x2, 0x80, - 0x3e, 0x93, 0xfd, 0x9c, 0xf4, 0x71, 0x65, 0xe0, 0xcb, 0x8b, - 0xe6, 0x5c, 0x49, 0x7b, 0x72, 0xc4, 0x1f, 0xf6, 0x13, 0xe5, - 0x1f, 0xae, 0xea, 0xf5, 0x7a, 0xc4, 0xf0, 0x5e, 0x88, 0x3c, - 0x39, 0xe1, 0x4d, 0x2f, 0x4e, 00, 0x6, 0x82, 0x5, 0xf, - 0x8e, 0xec, 0x79, 0x63, 0xf9, 0x93, 0x5b, 0x75, 0xfb, 0x8e, - 0x2, 0x87, 0xd5, 0xb0, 0xb4, 0xe9, 0x76, 0x4b, 0xef, 0xeb, - 0xf8, 0x9f, 0x5d, 0x42, 0x1e, 0xce, 0x9c, 0x62, 0x14, 0x51, - 0x45, 0x77, 0x9b, 0x85, 0x79, 0x1f, 0xed, 0x15, 0xe2, 0x86, - 0xd3, 0x3c, 0x35, 0x6d, 0xa4, 0x42, 0xfb, 0x65, 0xd4, 0x1f, - 0x32, 0x1, 0xd7, 0xca, 0x5c, 0x13, 0xf9, 0x9c, 0x7e, 0x46, - 0xbd, 0x72, 0xbe, 0x51, 0xf8, 0xdd, 0xae, 0xb6, 0xb7, 0xf1, - 0xb, 0x50, 0x4d, 0xdb, 0xa1, 0xb3, 0xc5, 0xac, 0x63, 0x3d, - 0x36, 0x8f, 0x9b, 0xff, 00, 0x1e, 0x2d, 0x5f, 0x37, 0x9f, - 0xe2, 0x9e, 0x1b, 0x5, 0x25, 0x1d, 0xe5, 0xa7, 0xf9, 0xfe, - 0x7, 0x6, 0x36, 0xa7, 0x25, 0x16, 0x97, 0x5d, 0xe, 0xa, - 0x8a, 0x28, 0xaf, 0xc8, 0xcf, 0x99, 0xa, 0x28, 0xa9, 0x2d, - 0xe0, 0x7b, 0xab, 0x88, 0xa1, 0x88, 0x6e, 0x92, 0x46, 0x8, - 0xab, 0xea, 0x49, 0xc0, 0x14, 0xd2, 0xbe, 0x88, 0xf, 0x79, - 0xfd, 0x9c, 0xfc, 0x18, 0xb1, 0x5a, 0x5c, 0x78, 0x92, 0xe1, - 0x33, 0x24, 0xa5, 0xa0, 0xb6, 0xc8, 0xe8, 0xa3, 0xef, 0x30, - 0xfa, 0x9e, 0x3f, 0x3, 0xeb, 0x5e, 0xdd, 0x59, 0xbe, 0x1b, - 0xd1, 0x62, 0xf0, 0xee, 0x83, 0x61, 0xa6, 0xc2, 00, 0x4b, - 0x68, 0x56, 0x3c, 0x8e, 0xe4, 0xe, 0x4f, 0xe2, 0x72, 0x7f, - 0x1a, 0xd2, 0xaf, 0xdb, 0xb2, 0xfc, 0x2a, 0xc1, 0x61, 0xa1, - 0x45, 0x6e, 0x96, 0xbe, 0xbd, 0x4f, 0xae, 0xa1, 0x4d, 0x52, - 0xa6, 0xa2, 0x14, 0x51, 0x45, 0x7a, 0x26, 0xe1, 0x45, 0x14, - 0x50, 0x1, 0x59, 0x1e, 0x2e, 0xd3, 0xd7, 0x56, 0xf0, 0xb6, - 0xad, 0x66, 0xe3, 0x2b, 0x35, 0xac, 0x8b, 0xf8, 0xed, 0x38, - 0xfd, 0x6b, 0x5e, 0xaa, 0x6a, 0xf2, 0x88, 0x34, 0x9b, 0xd9, - 0x1b, 0xee, 0xa4, 0xe, 0xc7, 0xf0, 0x53, 0x59, 0xd5, 0x4a, - 0x50, 0x92, 0x7b, 0x59, 0x93, 0x25, 0x78, 0xb4, 0xcf, 0x87, - 0xe8, 0xa2, 0x8a, 0xfc, 0xc, 0xf8, 0xc0, 0xa2, 0x8a, 0x28, - 0x3, 0x7b, 0xc0, 0x57, 0x26, 0xd3, 0xc6, 0xda, 0x14, 0xa0, - 0xe3, 0x17, 0xb0, 0x8f, 0xc0, 0xb8, 0x7, 0xf9, 0xd7, 0xd9, - 0xb5, 0xf1, 0x67, 0x83, 0x62, 0x33, 0x78, 0xbb, 0x44, 0x45, - 0xea, 0xd7, 0xb0, 0x8f, 0xfc, 0x7c, 0x57, 0xda, 0x75, 0xfa, - 0x47, 0xa, 0xb7, 0xec, 0x6a, 0xae, 0x97, 0x5f, 0x91, 0xee, - 0xe5, 0xbf, 0xc, 0x8c, 0x3f, 0x1c, 0x86, 0x6f, 0x5, 0xeb, - 0xa1, 0x33, 0xbb, 0xec, 0x33, 0x63, 0x1f, 0xee, 0x1a, 0xf8, - 0xc2, 0xbe, 0xe6, 0xb9, 0xb7, 0x4b, 0xbb, 0x69, 0x60, 0x90, - 0x6e, 0x8e, 0x54, 0x28, 0xc0, 0xf7, 0x4, 0x60, 0xd7, 0xc5, - 0x9e, 0x25, 0xd0, 0xa7, 0xf0, 0xd6, 0xbd, 0x7d, 0xa6, 0x5c, - 0x29, 0x59, 0x2d, 0xe5, 0x28, 0x9, 0x1f, 0x79, 0x7f, 0x85, - 0xbf, 0x11, 0x83, 0xf8, 0xd7, 0x37, 0x15, 0x52, 0x95, 0xe9, - 0x55, 0xe9, 0xaa, 0x23, 0x32, 0x8b, 0xbc, 0x64, 0x66, 0x51, - 0x45, 0x15, 0xf0, 0x7, 0x8a, 0x14, 0xaa, 0xc5, 0x18, 0x32, - 0x92, 0x18, 0x1c, 0x82, 0x3b, 0x52, 0x51, 0x40, 0x1f, 0x49, - 0xfc, 0x39, 0xf8, 0xe5, 0xa6, 0x6b, 0x16, 0x30, 0x59, 0x6b, - 0x93, 0xae, 0x9f, 0xa9, 0x46, 0xa1, 0xc, 0xf2, 0x9c, 0x45, - 0x37, 0x6c, 0xe7, 0xf8, 0x4f, 0xa8, 0x3f, 0x85, 0x7a, 0xac, - 0x53, 0x47, 0x3c, 0x6b, 0x24, 0x4e, 0xb2, 0x46, 0xc3, 0x21, - 0x90, 0xe4, 0x11, 0xf5, 0xaf, 0x85, 0xeb, 0x63, 0x43, 0xf1, - 0x86, 0xb7, 0xe1, 0xa3, 0xff, 00, 0x12, 0xcd, 0x4e, 0xe6, - 0xd1, 0x7f, 0xe7, 0x9a, 0x3e, 0x50, 0xff, 00, 0xc0, 0x4f, - 0x1f, 0xa5, 0x7d, 0xbe, 0xb, 0x89, 0xaa, 0x52, 0x8a, 0x86, - 0x26, 0x3c, 0xd6, 0xea, 0xb7, 0xff, 00, 0x83, 0xf8, 0x1e, - 0xbd, 0x2c, 0xc2, 0x51, 0x56, 0xa8, 0xae, 0x7d, 0xa7, 0x45, - 0x7c, 0xdf, 0xa0, 0xfe, 0xd1, 0xda, 0xed, 0x8e, 0xd4, 0xd4, - 0xed, 0x2d, 0xf5, 0x38, 0xc7, 0x56, 0x5f, 0xdd, 0x49, 0xf9, - 0x8c, 0x8f, 0xd2, 0xbb, 0xed, 0x13, 0xf6, 0x87, 0xf0, 0xd6, - 0xa4, 0xc1, 0x2f, 0x52, 0xe7, 0x4b, 0x73, 0xfc, 0x52, 0xa6, - 0xf4, 0xfc, 0xd7, 0x27, 0xf3, 0x15, 0xf5, 0x74, 0x33, 0xcc, - 0x5, 0x7f, 0xf9, 0x79, 0xca, 0xfc, 0xf4, 0xff, 00, 0x81, - 0xf8, 0x9e, 0x8c, 0x31, 0x94, 0x67, 0xd6, 0xde, 0xa7, 0xa9, - 0x51, 0x59, 0xba, 0x3f, 0x89, 0x34, 0xaf, 0x10, 0x45, 0xe6, - 0x69, 0xba, 0x85, 0xbd, 0xea, 0xf7, 0xf2, 0x64, 0xc, 0x47, - 0xd4, 0x75, 0x15, 0xa5, 0x5e, 0xe4, 0x65, 0x19, 0xae, 0x68, - 0xbb, 0xa3, 0xb1, 0x34, 0xd5, 0xd0, 0x51, 0x45, 0x15, 0x43, - 0xa, 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa2, 0x80, 0xa, 0xf2, - 0xf, 0xda, 0x1e, 0xeb, 0xca, 0xd0, 0x36, 0xe7, 0xfe, 0x59, - 0x9a, 0xf5, 0xfa, 0xf0, 0x6f, 0xda, 0x5e, 0xf8, 0x47, 0x61, - 0xe5, 0x67, 0x91, 0x1d, 0x79, 0x19, 0xb4, 0xb9, 0x30, 0x75, - 0x1f, 0x91, 0xc1, 0x8e, 0x97, 0x2e, 0x1e, 0x4c, 0xf9, 0x7, - 0x53, 0x6f, 0x95, 0xcf, 0xb9, 0xaf, 0x34, 0xf0, 0x2d, 0x92, - 0xeb, 0x9f, 0xb5, 0x7, 0xc3, 0x3b, 0x26, 0x1b, 0x81, 0xd7, - 0xad, 0xe4, 0xc7, 0xfb, 0x84, 0xbf, 0xfe, 0xcb, 0x5e, 0x8d, - 0xaa, 0x36, 0x22, 0x63, 0xec, 0x6b, 0x94, 0xfd, 0x9b, 0xec, - 0xff, 00, 0xb6, 0x3f, 0x6c, 0xbf, 0x87, 0xf1, 0xe3, 0x70, - 0x86, 0x7b, 0x9b, 0x93, 0xed, 0xb2, 0xda, 0x53, 0x9f, 0xcf, - 0x15, 0xf2, 0xd9, 0x24, 0x7d, 0xf3, 0xf2, 0x3c, 0xb1, 0x7b, - 0x4c, 0xe2, 0x97, 0x95, 0xd9, 0xfa, 0xcf, 0x45, 0x14, 0x57, - 0xe8, 0x7, 0xed, 0x61, 0x45, 0x14, 0x50, 0x1, 0x5c, 0x3f, - 0xc6, 0x8f, 0x18, 0xf, 0x4, 0x7c, 0x37, 0xd6, 0x35, 0x5, - 0x62, 0xb7, 0xf, 0x17, 0xd9, 0xad, 0xf6, 0xf5, 0xf3, 0x1f, - 0xe5, 0x53, 0xf8, 0x64, 0x9f, 0xc2, 0xbb, 0x8a, 0xf9, 0x5f, - 0xf6, 0xbf, 0xf1, 0x87, 0xda, 0xb5, 0x6d, 0x2b, 0xc3, 0x31, - 0x1f, 0x92, 0xd9, 0x3e, 0xd9, 0x39, 0xe7, 0xef, 0x36, 0x42, - 0x8f, 0xcb, 0x27, 0xf1, 0xaf, 0x37, 0x31, 0xc4, 0x7d, 0x5b, - 0xd, 0x39, 0xf5, 0xd9, 0x7a, 0xb3, 0xca, 0xcd, 0x31, 0x3f, - 0x54, 0xc2, 0x4e, 0xa2, 0xdf, 0x65, 0xea, 0xff, 00, 0xab, - 0x9f, 0x3e, 0x58, 0x5a, 0xbd, 0xe5, 0xd4, 0x30, 0x46, 0x37, - 0x3b, 0xb0, 0x50, 0x7, 0xa9, 0xaf, 0xd0, 0x3f, 0x86, 0x9e, - 0x19, 0x8f, 0xc2, 0x7e, 0xc, 0xd3, 0x6c, 0x11, 0x2, 0xb8, - 0x88, 0x34, 0x9e, 0xec, 0x47, 0x35, 0xf2, 0x27, 0xec, 0xf7, - 0xe1, 0x13, 0xe2, 0x9f, 0x1f, 0x5a, 0x97, 0x5c, 0xdb, 0xdb, - 0x7e, 0xf5, 0xcf, 0xd3, 0xa5, 0x7d, 0xc4, 0xa0, 0x28, 00, - 0x70, 0x7, 0x15, 0xf3, 0xdc, 0x3d, 0x87, 0xd2, 0x78, 0x87, - 0xe8, 0xbf, 0x53, 0xc2, 0xe1, 0xcc, 0x37, 0x25, 0x39, 0x57, - 0x7d, 0x74, 0x42, 0xd1, 0x45, 0x15, 0xf6, 0x67, 0xd9, 0x5, - 0x14, 0x51, 0x40, 0x5, 0x7e, 0x55, 0x7f, 0xc1, 0x6d, 0x3c, - 0x2b, 0xa8, 0x36, 0xa3, 0xf0, 0xc7, 0xc4, 0x81, 0x19, 0xb4, - 0xa5, 0x8a, 0xef, 0x4f, 0x67, 0x1d, 0x12, 0x62, 0x52, 0x40, - 0xf, 0xd5, 0x43, 0x7f, 0xdf, 0x26, 0xbf, 0x52, 0xb5, 0x4d, - 0x5e, 0xc7, 0x43, 0xb3, 0x6b, 0xbd, 0x46, 0xf6, 0xde, 0xc2, - 0xd5, 0x48, 0x56, 0x9e, 0xea, 0x55, 0x8d, 0x1, 0x27, 00, - 0x16, 0x62, 0x7, 0x24, 0x81, 0x5e, 0x73, 0xf1, 0xc7, 0xe1, - 0xf, 0x82, 0xff, 00, 0x69, 0xef, 0x86, 0x1a, 0x8f, 0x83, - 0x35, 0xeb, 0x98, 0xee, 0xf4, 0xeb, 0xbd, 0xb2, 0xc5, 0x73, - 0x63, 0x3a, 0x99, 0x6d, 0xa6, 0x5e, 0x52, 0x54, 0x23, 0x3c, - 0x83, 0xdb, 0xa1, 0x4, 0x83, 0xc1, 0xa0, 0x4f, 0x53, 0xf9, - 0xcd, 0xf0, 0xaf, 0x8a, 0xb5, 0x8f, 0x3, 0xf8, 0x8b, 0x4f, - 0xd7, 0xb4, 0xd, 0x46, 0xe3, 0x49, 0xd6, 0x74, 0xf9, 0x44, - 0xf6, 0xb7, 0xb6, 0xaf, 0xb6, 0x48, 0x9c, 0x74, 0x20, 0xfe, - 0x9e, 0xe0, 0x90, 0x6b, 0xd8, 0x7e, 0x39, 0x7e, 0xda, 0xdf, - 0x14, 0xbf, 0x68, 0xbf, 0x1, 0x68, 0xfe, 0x13, 0xf1, 0xce, - 0xa9, 0x69, 0xa9, 0x58, 0x69, 0x97, 0x42, 0xf1, 0x27, 0x86, - 0xd1, 0x60, 0x9a, 0x69, 0x2, 0x32, 0x3, 0x29, 0x5c, 0x2b, - 0x60, 0x33, 0x74, 0x51, 0xc9, 0xaf, 0x44, 0xf8, 0xd9, 0xff, - 00, 0x4, 0xbf, 0xf8, 0xd9, 0xf0, 0xa2, 0xfa, 0xea, 0x5d, - 0x27, 0x44, 0x1e, 0x39, 0xd0, 0x91, 0xd8, 0xc5, 0x7d, 0xa1, - 0xb6, 0xf9, 0x76, 0x67, 0x82, 0xf0, 0x1c, 0x38, 0x6c, 0x76, - 0x50, 0xc3, 0xde, 0xbe, 0x79, 0xb8, 0xf8, 0x25, 0xf1, 0x12, - 0xd2, 0xe4, 0xdb, 0xcd, 0xe0, 0x3f, 0x12, 0xc5, 0x38, 0x38, - 0xf2, 0xdb, 0x48, 0xb8, 0xd, 0x9f, 0xa6, 0xca, 0xa2, 0x35, - 0x3a, 0x5f, 0xd9, 0xdb, 0xf6, 0x95, 0xf1, 0x47, 0xec, 0xc5, - 0xe2, 0xd, 0x5f, 0x5f, 0xf0, 0x7d, 0xa6, 0x96, 0xfa, 0xe5, - 0xfd, 0x9f, 0xd8, 0x56, 0xf7, 0x51, 0xb7, 0x33, 0x1b, 0x68, - 0xcb, 0x6, 0x6f, 0x2c, 0x6e, 0x3, 0x2c, 0x55, 0x73, 0x9c, - 0xfd, 0xd1, 0x5c, 0xdf, 0xc5, 0x9f, 0x8d, 0x1e, 0x35, 0xf8, - 0xe5, 0xe2, 0x63, 0xaf, 0xf8, 0xe3, 0xc4, 0x37, 0x7e, 0x20, - 0xd4, 0x82, 0x94, 0x8d, 0xee, 0x8, 0x9, 0xa, 0x67, 0x3b, - 0x23, 0x45, 0x1, 0x51, 0x7d, 0x94, 0xa, 0xf4, 0xdf, 0x86, - 0x7f, 0xb0, 0x3f, 0xc7, 0x6f, 0x8a, 0x97, 0x31, 0x2e, 0x99, - 0xe0, 0xd, 0x47, 0x4c, 0xb5, 0x7e, 0xb7, 0xba, 0xda, 0xfd, - 0x86, 0x15, 0x1e, 0xa7, 0xcc, 0xc3, 0x1f, 0xc1, 0x4d, 0x7e, - 0x8b, 0xfe, 0xc9, 0xff, 00, 0xf0, 0x4a, 0xf, 0xb, 0xfc, - 0x27, 0xbd, 0xb2, 0xf1, 0x37, 0xc4, 0xbb, 0xb8, 0x3c, 0x65, - 0xe2, 0x6b, 0x79, 0x16, 0x6b, 0x7d, 0x3e, 0x10, 0x46, 0x9d, - 0x6a, 0xe3, 0x90, 0x48, 0x60, 0xc, 0xcc, 0xf, 0x76, 0x1, - 0x78, 0x1f, 0x2f, 0x7a, 0x2, 0xcc, 0xf3, 0xaf, 0xf8, 0x25, - 0x8f, 0xec, 0x3b, 0x79, 0xa4, 0xdd, 0xda, 0xfc, 0x65, 0xf1, - 0xde, 0x9b, 0xf6, 0x79, 0xc, 0x64, 0xf8, 0x73, 0x4d, 0xba, - 0x8c, 0x89, 0x13, 0x3c, 0x1b, 0xb7, 0x53, 0xd3, 0x23, 0x21, - 0x7, 0x5e, 0x4b, 0x7a, 0x57, 0xea, 0x25, 0x22, 0xa8, 0x45, - 0xa, 0xa0, 0x2a, 0x81, 0x80, 00, 0xc0, 0x2, 0xa2, 0xbc, - 0xbb, 0x8e, 0xc6, 0xd2, 0x6b, 0x99, 0x9b, 0x64, 0x30, 0xa1, - 0x91, 0xd8, 0xf6, 00, 0x64, 0xd4, 0xb7, 0x6d, 0x59, 0x7b, - 0x23, 0xe7, 0x5f, 0xda, 0x33, 0xc4, 0x23, 0x50, 0xf1, 0x4d, - 0xae, 0x97, 0x1b, 0xe6, 0x3b, 0x8, 0xb2, 0xe0, 0x1e, 0x3c, - 0xc7, 0xe4, 0xff, 00, 0xe3, 0xa1, 0x7f, 0x3a, 0xf2, 0x4a, - 0xbf, 0xaf, 0x6a, 0xb2, 0x6b, 0xba, 0xd5, 0xf6, 0xa1, 0x29, - 0x26, 0x4b, 0x99, 0x9e, 0x53, 0x9e, 0xd9, 0x39, 0x3, 0xf0, - 0x1c, 0x55, 0xa, 0xfc, 0x3b, 0x1f, 0x89, 0x78, 0xbc, 0x4c, - 0xeb, 0x77, 0x7f, 0x87, 0x4f, 0xc0, 0xf9, 0x1a, 0xd5, 0x3d, - 0xad, 0x47, 0x3e, 0xe1, 0x45, 0x14, 0x57, 0x1, 0x89, 0xdd, - 0x7c, 0x28, 0xf8, 0x72, 0x9f, 0x10, 0xf5, 0x4b, 0xc8, 0xae, - 0x66, 0x96, 0xda, 0xce, 0xda, 0x20, 0xcd, 0x24, 0x20, 0x67, - 0x79, 0x3f, 0x28, 0xe4, 0x63, 0xb3, 0x7e, 0x55, 0xe8, 0xf3, - 0x7e, 0xcc, 0x96, 0x4, 0x1f, 0x27, 0x5c, 0xb9, 0x43, 0xdb, - 0x7c, 0x2a, 0xdf, 0xc8, 0x8a, 0xde, 0xf8, 0x1, 0xe1, 0xd6, - 0xd1, 0xbc, 0xe, 0x2e, 0xe5, 0x5d, 0xb3, 0x6a, 0x32, 0x99, - 0xf9, 0xeb, 0xb0, 0x70, 0xbf, 0xc8, 0x9f, 0xc6, 0xbd, 0x32, - 0xbf, 0x50, 0xcb, 0x32, 0x5c, 0x2c, 0xf0, 0x70, 0x96, 0x22, - 0x9d, 0xe4, 0xf5, 0xeb, 0xd7, 0x6f, 0xc0, 0xfa, 0x1c, 0x3e, - 0x12, 0x9b, 0xa4, 0x9c, 0xd6, 0xac, 0xf9, 0xa7, 0xc5, 0x1f, - 0xb3, 0xd6, 0xb7, 0xa2, 0x59, 0xc9, 0x75, 0xa7, 0xdc, 0xc7, - 0xab, 0xa4, 0x63, 0x2d, 0x14, 0x68, 0x52, 0x5c, 0x7b, 0x2e, - 0x48, 0x3f, 0x9e, 0x6b, 0xca, 0xd9, 0x4a, 0xb1, 0x56, 0x4, - 0x10, 0x70, 0x41, 0xea, 0x2b, 0xee, 0xaa, 0xf9, 0x77, 0xe3, - 0xd7, 0x85, 0xe2, 0xf0, 0xff, 00, 0x8d, 0x3e, 0xd3, 0x6c, - 0x81, 0x20, 0xd4, 0x63, 0xfb, 0x41, 0x51, 0xd0, 0x49, 0x92, - 0x1f, 0x1f, 0xa1, 0xfc, 0x6b, 0xc5, 0xcf, 0x32, 0x5a, 0x58, - 0x3a, 0x4b, 0x11, 0x87, 0xd1, 0x6c, 0xd6, 0xff, 00, 0x33, - 0x93, 0x17, 0x84, 0x8d, 0x28, 0xf3, 0xc3, 0x63, 0xcd, 0xa8, - 0xa2, 0x8a, 0xf8, 0x93, 0xc9, 0xa, 0xf5, 0xdf, 0xd9, 0xbf, - 0x5b, 0x7b, 0x5f, 0x14, 0xde, 0xe9, 0x85, 0xbf, 0x73, 0x77, - 0x6f, 0xe6, 0x5, 0xff, 00, 0x6d, 0xf, 0x1f, 0xa1, 0x6a, - 0xf2, 0x2a, 0xed, 0xbe, 0xc, 0x5d, 0x7d, 0x93, 0xe2, 0x5e, - 0x8a, 0x73, 0x80, 0xee, 0xf1, 0x9f, 0xc5, 0x18, 0xf, 0xd7, - 0x15, 0xea, 0x65, 0x75, 0x5d, 0x1c, 0x6d, 0x29, 0x2e, 0xe9, - 0x7d, 0xfa, 0x1d, 0x18, 0x79, 0x72, 0xd6, 0x8b, 0xf3, 0x3e, - 0xb5, 0xa2, 0x8a, 0x2b, 0xf6, 0xc3, 0xeb, 0x42, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0xbe, 0x61, 0xfd, 0xa0, - 0xb5, 0xef, 0xed, 0x5f, 0x1d, 0x1b, 0x35, 0x6c, 0xc5, 0xa7, - 0xc2, 0xb1, 0x63, 0xfd, 0xb6, 0xf9, 0x9b, 0xf9, 0xa8, 0xfc, - 0x2b, 0xe9, 0xa9, 0xe7, 0x4b, 0x68, 0x24, 0x9a, 0x43, 0xb6, - 0x38, 0xd4, 0xbb, 0x13, 0xd8, 0x1, 0x93, 0x5f, 0x14, 0xf8, - 0x8f, 0x57, 0x6d, 0x7b, 0x5e, 0xd4, 0x35, 0x17, 0xce, 0x6e, - 0xa7, 0x79, 0x70, 0x7b, 0x2, 0x78, 0x1f, 0x96, 0x2b, 0xe3, - 0x38, 0x9f, 0x11, 0xc9, 0x86, 0x85, 0x15, 0xf6, 0x9f, 0xe0, - 0xbf, 0xe0, 0xd8, 0xf2, 0x73, 0x19, 0xda, 0xa, 0x1d, 0xcc, - 0xea, 0x28, 0xa2, 0xbf, 0x32, 0x3c, 00, 0xae, 0x8f, 0xe1, - 0xd6, 0x8c, 0x75, 0xff, 00, 0x1b, 0xe8, 0xd6, 0x7b, 0x77, - 0x23, 0x5c, 0x2b, 0xb8, 0xc7, 0xf0, 0x2f, 0xcc, 0xdf, 0xa0, - 0x35, 0xce, 0x57, 0xb0, 0x7e, 0xcd, 0x9a, 0x3f, 0xda, 0x7c, - 0x49, 0xa9, 0x6a, 0x2c, 0x32, 0xb6, 0xb6, 0xe2, 0x35, 0x3f, - 0xed, 0x39, 0xff, 00, 0x5, 0x3f, 0x9d, 0x7a, 0x59, 0x6d, - 0xf, 0xac, 0xe3, 0x29, 0xd2, 0xee, 0xff, 00, 0x5, 0xab, - 0x37, 0xa1, 0xf, 0x69, 0x56, 0x31, 0x3e, 0x8b, 0xa2, 0x8a, - 0x2b, 0xf6, 0xe3, 0xeb, 0x82, 0x8a, 0x28, 0xa0, 0x8, 0xee, - 0x26, 0x5b, 0x6b, 0x79, 0x65, 0x73, 0x84, 0x8d, 0x4b, 0x13, - 0xec, 0x6, 0x6b, 0xe2, 0x2d, 0x52, 0xf9, 0xf5, 0x3d, 0x4e, - 0xee, 0xf2, 0x43, 0x97, 0xb8, 0x95, 0xe5, 0x6f, 0xab, 0x12, - 0x7f, 0xad, 0x7d, 0x89, 0xe3, 0xa9, 0xda, 0xd7, 0xc1, 0x5a, - 0xf4, 0xa8, 0x70, 0xc9, 0x63, 0x31, 0x7, 0xdf, 0x61, 0xaf, - 0x8c, 0x6b, 0xf3, 0xce, 0x2a, 0xa8, 0xf9, 0xa9, 0x53, 0xf5, - 0x7f, 0x91, 0xe1, 0xe6, 0x52, 0xd6, 0x31, 0xa, 0x28, 0xa2, - 0xbe, 0x8, 0xf1, 0x82, 0xba, 0xbf, 0x85, 0x9a, 0x60, 0xd5, - 0xbe, 0x20, 0xe8, 0x70, 0x30, 0xca, 0x2d, 0xc0, 0x95, 0xbe, - 0x88, 0xb, 0x7f, 0xec, 0xb5, 0xca, 0x57, 0xa2, 0x7c, 0x4, - 0x50, 0x7e, 0x24, 0xd9, 0x13, 0xd4, 0x45, 0x29, 0x1f, 0xf7, - 0xc1, 0xaf, 0x43, 0x2f, 0x82, 0xa9, 0x8b, 0xa5, 0x17, 0xd6, - 0x4b, 0xf3, 0x36, 0xa2, 0xb9, 0xaa, 0xc5, 0x79, 0xa3, 0xea, - 0x7a, 0x28, 0xa2, 0xbf, 0x70, 0x3e, 0xbc, 0x28, 0xa2, 0x8a, - 00, 0x28, 0xa2, 0x8a, 00, 0x2b, 0x95, 0xf8, 0xa3, 0xaa, - 0xd, 0x1f, 0xe1, 0xfe, 0xb9, 0x71, 0x9c, 0x31, 0xb7, 0x68, - 0x97, 0xfd, 0xe7, 0xf9, 0x47, 0xf3, 0xae, 0xaa, 0xbc, 0x67, - 0xf6, 0x92, 0xf1, 0x1a, 0xdb, 0x68, 0xb6, 0x1a, 0x2a, 0x37, - 0xef, 0x6e, 0xa4, 0xf3, 0xe4, 0x1e, 0x88, 0xbd, 0x3f, 0x36, - 0x3f, 0xf8, 0xed, 0x79, 0x99, 0x9d, 0x75, 0x86, 0xc1, 0xd4, - 0xa8, 0xfb, 0x69, 0xea, 0xf4, 0x47, 0x3e, 0x22, 0x7e, 0xce, - 0x94, 0xa4, 0x7c, 0xf5, 0x45, 0x14, 0x57, 0xe2, 0x47, 0xc9, - 0x5, 0x14, 0x51, 0x40, 0x1d, 0x6f, 0xc2, 0x7b, 0x3f, 0xb7, - 0x7c, 0x45, 0xd0, 0xa3, 0xc6, 0x42, 0xdc, 0x9, 0xf, 0xfc, - 0x4, 0x16, 0xfe, 0x95, 0xf5, 0xf5, 0x7c, 0xe3, 0xfb, 0x37, - 0xe8, 0x7f, 0x6c, 0xf1, 0x45, 0xee, 0xa6, 0xcb, 0x94, 0xb2, - 0x83, 0x62, 0x9f, 0xf6, 0xdc, 0xe3, 0xf9, 0x6, 0xfc, 0xeb, - 0xe8, 0xea, 0xfd, 0x4f, 0x86, 0x68, 0xba, 0x78, 0x27, 0x37, - 0xf6, 0x9b, 0x7f, 0x76, 0x87, 0xd1, 0x65, 0xf1, 0xb5, 0x2b, - 0xf7, 0x61, 0x5e, 0x6b, 0xf1, 0x7f, 0xe1, 0x58, 0xf1, 0xbd, - 0xa2, 0xdf, 0xd8, 0x5, 0x8f, 0x58, 0xb7, 0x42, 00, 0x3c, - 0x9, 0xd7, 0xfb, 0xa4, 0xfa, 0xfa, 0x1f, 0xc3, 0xe9, 0xe9, - 0x54, 0x57, 0xd1, 0xe2, 0x70, 0xd4, 0xf1, 0x74, 0x9d, 0x1a, - 0xaa, 0xe9, 0x9d, 0xf5, 0x29, 0xc6, 0xac, 0x5c, 0x65, 0xb1, - 0xf0, 0xdd, 0xed, 0x8d, 0xc6, 0x9b, 0x75, 0x25, 0xb5, 0xd4, - 0x32, 0x5b, 0xdc, 0x46, 0x76, 0xbc, 0x52, 0x2e, 0xd6, 0x53, - 0xee, 0x2a, 0xa, 0xfb, 0x17, 0xc6, 0x3f, 0xf, 0x34, 0x4f, - 0x1c, 0x42, 0xa3, 0x52, 0xb6, 0xfd, 0xfa, 0xc, 0x25, 0xcc, - 0x47, 0x6c, 0x8b, 0xf8, 0xf7, 0x1e, 0xc7, 0x22, 0xbc, 0x3f, - 0xc5, 0x3f, 0xb3, 0xde, 0xbb, 0xa4, 0x34, 0x92, 0xe9, 0x4f, - 0x1e, 0xaf, 0x6a, 0x39, 0xa, 0xe, 0xc9, 0x80, 0xff, 00, - 0x74, 0xf0, 0x7f, 0x3, 0xf8, 0x57, 0xe6, 0x38, 0xee, 0x1f, - 0xc5, 0x61, 0x5b, 0x95, 0x25, 0xcf, 0x1f, 0x2d, 0xfe, 0x6b, - 0xfc, 0x8f, 0x9e, 0xad, 0x82, 0xa9, 0x4f, 0x58, 0xea, 0x8f, - 0x2a, 0xa2, 0xac, 0x5f, 0x69, 0xf7, 0x5a, 0x65, 0xc3, 0x41, - 0x79, 0x6f, 0x2d, 0xac, 0xcb, 0xd6, 0x39, 0x90, 0xab, 0xf, - 0xc0, 0xd5, 0x7a, 0xf9, 0x86, 0x9c, 0x5d, 0x99, 0xe7, 0xec, - 0x14, 0x51, 0x45, 0x20, 0xa, 0x28, 0xa2, 0x80, 0x25, 0xb5, - 0xbb, 0x9e, 0xc6, 0x75, 0x9a, 0xda, 0x69, 0x2d, 0xe6, 0x5e, - 0x56, 0x48, 0x9c, 0xab, 0xf, 0xa1, 0x15, 0xe9, 0x5e, 0x11, - 0xf8, 0xfb, 0xaf, 0x68, 0x6e, 0x91, 0x6a, 0x64, 0x6b, 0x36, - 0x9d, 0xf, 0x98, 0x42, 0xca, 0xbf, 0x46, 0xc7, 0x3f, 0x8e, - 0x7e, 0xb5, 0xe6, 0x14, 0x57, 0x66, 0x1b, 0x19, 0x5f, 0x9, - 0x2e, 0x6a, 0x13, 0x6b, 0xf2, 0xfb, 0xb6, 0x35, 0xa7, 0x56, - 0x74, 0x9d, 0xe0, 0xec, 0x7d, 0x8f, 0xe0, 0xdf, 0x1f, 0xe8, - 0xfe, 0x38, 0xb4, 0xf3, 0x74, 0xeb, 0x8f, 0xdf, 0x28, 0xfd, - 0xe5, 0xb4, 0xbf, 0x2c, 0xa9, 0xf5, 0x1d, 0xc7, 0xb8, 0xe2, - 0xba, 0x4a, 0xf8, 0x7b, 0x4b, 0xd5, 0x2e, 0xf4, 0x5d, 0x42, - 0xb, 0xdb, 0x19, 0xda, 0xde, 0xea, 0x16, 0xdc, 0x92, 0x27, - 0x50, 0x7f, 0xcf, 0x6a, 0xfa, 0xa3, 0xe1, 0x4f, 0xc4, 0x88, - 0xbc, 0x7d, 0xa3, 0x91, 0x36, 0x23, 0xd5, 0x6d, 0x80, 0x17, - 0x31, 0x81, 0x85, 0x6c, 0xf4, 0x75, 0xf6, 0x38, 0xfc, 0xf, - 0xe1, 0x5f, 0xa4, 0xe5, 0x19, 0xdc, 0x71, 0xcf, 0xd8, 0xd6, - 0x56, 0x9f, 0xe0, 0xff, 00, 0xe0, 0xf9, 0x1e, 0xf6, 0x17, - 0x16, 0xab, 0x7b, 0x93, 0xd1, 0xfe, 0x67, 0x73, 0x45, 0x14, - 0x57, 0xd5, 0x9e, 0x90, 0x51, 0x45, 0x14, 00, 0x57, 0xcc, - 0xff, 00, 0xb4, 0xf5, 0xdf, 0xef, 0xd9, 0x33, 0xd1, 0x71, - 0x5f, 0x4c, 0x57, 0xc9, 0xbf, 0xb4, 0xbd, 0xd1, 0x7d, 0x52, - 0x55, 0xcf, 0xf1, 0x1a, 0xf9, 0xdc, 0xf6, 0x56, 0xc1, 0xb5, - 0xdc, 0xf1, 0xb3, 0x69, 0x72, 0xe1, 0x64, 0x7c, 0xdf, 0xac, - 0x36, 0xdb, 0x77, 0x3e, 0xd5, 0x4f, 0xf6, 0x27, 0xb6, 0xfe, - 0xd1, 0xfd, 0xb2, 0xf4, 0xc7, 0x20, 0x37, 0xd9, 0x34, 0xab, - 0xe9, 0xf9, 0xed, 0x95, 0x54, 0xcf, 0xfe, 0x3f, 0x53, 0x78, - 0x81, 0xf6, 0xd9, 0xc8, 0x7f, 0xd9, 0x35, 0x77, 0xfe, 0x9, - 0xe7, 0x69, 0xf6, 0xef, 0xda, 0xbb, 0x5c, 0xb9, 0xea, 0x2d, - 0x3c, 0x3b, 0x3f, 0xe6, 0xd3, 0xc2, 0x3f, 0xa1, 0xaf, 0x27, - 0x23, 0x8e, 0xb7, 0x3f, 0x34, 0xc8, 0x23, 0xcf, 0x9b, 0xa7, - 0xd9, 0x33, 0xf4, 0xee, 0x8a, 0x28, 0xaf, 0xb8, 0x3f, 0x64, - 0xa, 0x28, 0xa2, 0x80, 0x23, 0xb9, 0xb8, 0x8e, 0xd2, 0xde, - 0x59, 0xe5, 0x60, 0x91, 0x44, 0xa5, 0xdd, 0x8f, 0x40, 00, - 0xc9, 0x35, 0xf9, 0xe1, 0xe3, 0xcf, 0x13, 0xc9, 0xe3, 0x3f, - 0x19, 0xea, 0xfa, 0xcb, 0x9c, 0x8b, 0xbb, 0x86, 0x68, 0xfd, - 0xa3, 0x1c, 0x20, 0xff, 00, 0xbe, 0x40, 0xaf, 0xaf, 0x3f, - 0x69, 0x7f, 0x18, 0x9f, 0xa, 0x7c, 0x33, 0xbb, 0x82, 0x17, - 0xdb, 0x77, 0xaa, 0xb7, 0xd8, 0xa3, 0xf5, 0xda, 0xc0, 0x97, - 0x3f, 0xf7, 0xc8, 0x3f, 0x98, 0xaf, 0x8d, 0x7c, 0x3d, 0xa5, - 0x3e, 0xb3, 0xac, 0xd9, 0xd9, 0x46, 0x9, 0x69, 0xa4, 0x54, - 00, 0x7b, 0x9a, 0xf8, 0x7e, 0x20, 0xc4, 0x39, 0x4e, 0x18, - 0x78, 0xf4, 0xd7, 0xe6, 0xf6, 0x3e, 0xb, 0x88, 0x6b, 0xba, - 0xb5, 0xa9, 0xe1, 0x21, 0xd3, 0x57, 0xea, 0xf6, 0xfe, 0xbc, - 0xcf, 0xab, 0x3f, 0x65, 0x6f, 0x8, 0x7f, 0x65, 0x78, 0x5a, - 0x6d, 0x5e, 0x58, 0xf6, 0xcd, 0x76, 0xc5, 0x54, 0x91, 0xfc, - 0x22, 0xbd, 0xd6, 0xb2, 0xbc, 0x2d, 0xa2, 0xc7, 0xe1, 0xef, - 0xf, 0xd8, 0xe9, 0xf1, 0x28, 0x55, 0x82, 0x20, 0xbc, 0xe, - 0xfd, 0xeb, 0x56, 0xbe, 0xab, 0x5, 0x87, 0x58, 0x5c, 0x3c, - 0x29, 0x76, 0x5f, 0x8f, 0x53, 0xec, 0xb0, 0x94, 0x16, 0x1e, - 0x84, 0x69, 0x2e, 0x88, 0x28, 0xa2, 0x8a, 0xee, 0x3a, 0xc2, - 0x8a, 0x28, 0xa0, 0xf, 0xcb, 0xbf, 0xf8, 0x2d, 0x1f, 0xc6, - 0x4b, 0xfb, 0x3b, 0x6f, 0x5, 0xfc, 0x31, 0xb3, 0x73, 0x15, - 0x8d, 0xea, 0x36, 0xb5, 0xa8, 0x60, 0x90, 0x65, 0xda, 0xc6, - 0x38, 0x50, 0xf6, 0x20, 0x1d, 0xed, 0xf5, 0xb, 0xe9, 0x5f, - 0x9b, 0x5f, 0xb, 0x34, 0xfd, 0x7b, 0xc5, 0x3e, 0x3e, 0xf0, - 0xe7, 0x86, 0xb4, 0x3d, 0x52, 0xf3, 0x4f, 0xbc, 0xd5, 0xf5, - 0x8, 0x2c, 0x22, 0x92, 0xda, 0x77, 0x8f, 0x61, 0x92, 0x40, - 0x9b, 0xbe, 0x52, 0x3a, 0x67, 0x3f, 0x85, 0x7e, 0x9a, 0xff, - 00, 0xc1, 0x49, 0xec, 0xfe, 0xd, 0xfe, 0xd2, 0xba, 0x1d, - 0xa6, 0xa7, 0xe1, 0xbf, 0x8a, 0xfe, 0x12, 0xb7, 0xf8, 0x87, - 0xe1, 0x7f, 0x36, 0xd9, 0x74, 0xfb, 0xbd, 0x52, 0x28, 0x56, - 0xee, 0x2d, 0xdf, 0x3c, 0x5, 0x98, 0x80, 0xae, 0xac, 0x9, - 0x5c, 0x9c, 0x64, 0xb0, 0x38, 0xce, 0x47, 0xe5, 0xa7, 0x85, - 0xfc, 0x47, 0xa8, 0x78, 0xb, 0xc5, 0xfa, 0x56, 0xb9, 0xa6, - 0xca, 0xb1, 0xea, 0x9a, 0x3d, 0xec, 0x77, 0x70, 0x48, 0xac, - 0x1d, 0x44, 0x91, 0x38, 0x65, 0xe4, 0x1c, 0x30, 0xca, 0xf6, - 0x38, 0x22, 0xa9, 0x10, 0xf7, 0x3f, 0xa6, 0x8f, 0x9, 0x78, - 0x6a, 0xd7, 0xc1, 0xde, 0x17, 0xd2, 0xb4, 0x2b, 0x22, 0xe6, - 0xd7, 0x4e, 0xb6, 0x8e, 0xd6, 0x36, 0x91, 0x8b, 0x3b, 0x4, - 0x50, 0x37, 0x31, 0x3c, 0x92, 0x71, 0x92, 0x4f, 0x52, 0x6b, - 0x5e, 0xbe, 0x30, 0xf8, 0x1b, 0xff, 00, 0x5, 0x54, 0xf8, - 0x37, 0xf1, 0x2b, 0x43, 0xb4, 0x5f, 0x15, 0xea, 0xa7, 0xc0, - 0x3e, 0x22, 0xd8, 0x5, 0xc5, 0xa6, 0xa6, 0x8c, 0xd6, 0xc5, - 0xf1, 0xc9, 0x8e, 0x75, 0x5, 0x76, 0xfa, 0x6e, 0xda, 0x7d, - 0xab, 0xd9, 0xad, 0x7f, 0x6d, 0x3f, 0x80, 0xf7, 0x87, 0x11, - 0xfc, 0x5b, 0xf0, 0x88, 0x3f, 0xf4, 0xd3, 0x55, 0x89, 0x3f, - 0xf4, 0x22, 0x2a, 0x4b, 0x3d, 0xa6, 0x8a, 0xf3, 0x1d, 0x3f, - 0xf6, 0xa0, 0xf8, 0x3d, 0xab, 0x48, 0x12, 0xcb, 0xe2, 0x97, - 0x83, 0xee, 0x9c, 0xf4, 0x58, 0xb5, 0xcb, 0x66, 0x3f, 0xfa, - 0x1d, 0x77, 0x7a, 0xf, 0x89, 0xb4, 0x8f, 0x14, 0xda, 0x35, - 0xd6, 0x8d, 0xaa, 0xd9, 0x6a, 0xd6, 0xaa, 0xdb, 0xc, 0xd6, - 0x37, 0x9, 0x32, 0x6, 0xc6, 0x70, 0x4a, 0x92, 0x33, 0x82, - 0x3f, 0x3a, 00, 0xd3, 0xaf, 0x36, 0xf8, 0xf9, 0xe2, 0x1f, - 0xec, 0x6f, 0x2, 0x4b, 0x6b, 0x1c, 0x9b, 0x27, 0xd4, 0x24, - 0x10, 00, 0xf, 0x3b, 0x3a, 0xbf, 0xe8, 0x31, 0xff, 00, - 0x2, 0xaf, 0x49, 0xaf, 0x98, 0xff, 00, 0x68, 0x3f, 0x10, - 0x7f, 0x6a, 0xf8, 0xdf, 0xec, 0x28, 0xfb, 0xa0, 0xd3, 0xe2, - 0x11, 0xe0, 0x74, 0xde, 0xdf, 0x33, 0x7f, 0xec, 0xa3, 0xf0, - 0xaf, 0x3, 0x3c, 0xc5, 0x7d, 0x57, 0x3, 0x36, 0xb7, 0x96, - 0x8b, 0xe7, 0xff, 00, 0x2, 0xe7, 0x16, 0x32, 0xa7, 0xb3, - 0xa2, 0xfc, 0xf4, 0x3c, 0xc2, 0x8a, 0x28, 0xaf, 0xc7, 0x8f, - 0x97, 0xa, 0xb7, 0xa4, 0xe9, 0xb3, 0x6b, 0x3a, 0xa5, 0xa5, - 0x8c, 00, 0xb4, 0xd7, 0x32, 0xac, 0x4a, 00, 0xee, 0x4e, - 0x2a, 0xa5, 0x7a, 0x8f, 0xec, 0xf3, 0xa0, 0x1d, 0x4f, 0xc6, - 0xad, 0x7e, 0xe9, 0x98, 0x74, 0xf8, 0x4b, 0xee, 0x23, 0x8f, - 0x31, 0xbe, 0x55, 0x1f, 0x96, 0xe3, 0xf8, 0x57, 0x6e, 0xb, - 0xe, 0xf1, 0x58, 0x98, 0x51, 0x5d, 0x5f, 0xe1, 0xd7, 0xf0, - 0x35, 0xa5, 0xf, 0x69, 0x35, 0xe, 0xe7, 0xd2, 0x3a, 0x75, - 0x8c, 0x7a, 0x66, 0x9f, 0x6d, 0x69, 0x8, 0xdb, 0x14, 0x11, - 0xac, 0x48, 0x3d, 0x80, 0xc0, 0xfe, 0x55, 0x66, 0x8a, 0x2b, - 0xf7, 0x24, 0x94, 0x55, 0x91, 0xf6, 0x9, 0x5b, 0x40, 0xaf, - 0x11, 0xfd, 0xa6, 0xec, 0x43, 0x58, 0x68, 0x57, 0x9d, 0xd2, - 0x59, 0x62, 0x3f, 0xf0, 0x20, 0xf, 0xfe, 0xcb, 0x5e, 0xdd, - 0x5e, 0x4f, 0xfb, 0x48, 0xc3, 0xe6, 0x78, 0x26, 0xce, 0x4c, - 0x7f, 0xab, 0xbe, 0x43, 0xf9, 0xa3, 0x8a, 0xf1, 0xb3, 0xa8, - 0x73, 0xe5, 0xf5, 0x57, 0x95, 0xfe, 0xe7, 0x73, 0x93, 0x16, - 0xaf, 0x42, 0x47, 0xcd, 0x94, 0x51, 0x45, 0x7e, 0x32, 0x7c, - 0xa8, 0x56, 0xc7, 0x83, 0x6f, 0x8e, 0x9b, 0xe2, 0xdd, 0x1a, - 0xe8, 0x1c, 0x79, 0x57, 0x71, 0x31, 0x3e, 0xdb, 0x86, 0x7f, - 0x4a, 0xc7, 0xa7, 0x47, 0x21, 0x86, 0x45, 0x91, 0x7e, 0xf2, - 0x90, 0xc3, 0xf0, 0xad, 0x29, 0xcf, 0xd9, 0xce, 0x33, 0x5d, - 0x1d, 0xc7, 0x17, 0x66, 0x99, 0xf7, 0x4d, 0x15, 0x5b, 0x4c, - 0xb9, 0x17, 0xba, 0x75, 0xad, 0xc0, 0xe9, 0x2c, 0x49, 0x20, - 0xfc, 0x40, 0x35, 0x66, 0xbf, 0x7b, 0x4e, 0xe9, 0x34, 0x7d, - 0x9a, 0xd4, 0x28, 0xa2, 0x8a, 0x63, 0xa, 0x28, 0xa2, 0x80, - 0x38, 0xbf, 0x8c, 0x3a, 0xc8, 0xd1, 0x3e, 0x1e, 0x6a, 0xd2, - 0x6, 0xdb, 0x24, 0xf1, 0xfd, 0x99, 0x30, 0x79, 0x25, 0xce, - 0xe, 0x3f, 0xc, 0x9f, 0xc2, 0xbe, 0x48, 0xaf, 0x75, 0xfd, - 0xa6, 0x35, 0xa3, 0x9d, 0x1f, 0x49, 0x46, 0xf9, 0x7e, 0x7b, - 0x99, 0x14, 0x7f, 0xdf, 0x2b, 0xff, 00, 0xb3, 0x57, 0x85, - 0x57, 0xe5, 0x1c, 0x47, 0x88, 0xf6, 0xd8, 0xde, 0x45, 0xb4, - 0x12, 0x5f, 0xaf, 0xea, 0x7c, 0xde, 0x3e, 0x7c, 0xd5, 0xad, - 0xd8, 0x28, 0xa2, 0x8a, 0xf9, 0x63, 0xce, 0xa, 0xfa, 0x7b, - 0xf6, 0x7d, 0xd0, 0xff, 00, 0xb2, 0xfc, 0x8, 0x2e, 0xd9, - 0x71, 0x2d, 0xfc, 0xcd, 0x2e, 0x48, 0xe7, 0x68, 0xf9, 0x57, - 0xf9, 0x13, 0xf8, 0xd7, 0xcc, 0x71, 0x44, 0xd3, 0x4a, 0x91, - 0xa0, 0x2c, 0xee, 0x42, 0xa8, 0x1d, 0xc9, 0xe9, 0x5f, 0x6b, - 0x78, 0x67, 0x49, 0x5d, 0xb, 0xc3, 0xda, 0x6e, 0x9c, 0xbf, - 0xf2, 0xed, 0x6e, 0x91, 0x1f, 0x72, 0x14, 0x64, 0xfe, 0x75, - 0xf6, 0x9c, 0x2f, 0x43, 0x9f, 0x11, 0x3a, 0xcf, 0xec, 0xaf, - 0xc5, 0xff, 00, 0xc0, 0x3d, 0x5c, 0xbe, 0x17, 0xa8, 0xe5, - 0xd8, 0xd3, 0xa2, 0x8a, 0x2b, 0xf4, 0xc3, 0xe8, 0x2, 0x8a, - 0x28, 0xa0, 0xc, 0x3f, 0x1c, 0xdb, 0xb5, 0xd7, 0x82, 0xf5, - 0xd8, 0x50, 0x65, 0xde, 0xc6, 0x65, 00, 0x7a, 0xec, 0x35, - 0xf1, 0x87, 0x5a, 0xfb, 0xa2, 0x58, 0x96, 0x78, 0x9e, 0x37, - 0x19, 0x47, 0x52, 0xa4, 0x1e, 0xe0, 0xd7, 0xc4, 0xfe, 0x21, - 0xd2, 0x5f, 0x42, 0xd7, 0x75, 0xd, 0x3a, 0x40, 0x77, 0x5b, - 0x4e, 0xf1, 0x73, 0xdc, 0x3, 0xc1, 0xfc, 0x46, 0xd, 0x7e, - 0x7d, 0xc5, 0x54, 0x9d, 0xe9, 0x55, 0xe9, 0xaa, 0xfd, 0x4f, - 0x13, 0x32, 0x8e, 0xb1, 0x91, 0x9f, 0x45, 0x14, 0x57, 0xc0, - 0x1e, 0x28, 0x57, 0x5f, 0xf0, 0x97, 0x55, 0x5d, 0x1f, 0xe2, - 0x1e, 0x8b, 0x33, 0x9c, 0x23, 0xcd, 0xe4, 0x31, 0x3f, 0xed, - 0x82, 0xa3, 0xf5, 0x22, 0xb9, 0xa, 0x74, 0x52, 0xbc, 0x32, - 0xa4, 0x91, 0xb1, 0x57, 0x42, 0x19, 0x58, 0x75, 0x4, 0x74, - 0x35, 0xbd, 0xa, 0xae, 0x85, 0x58, 0x55, 0x5f, 0x65, 0xa7, - 0xf7, 0x15, 0x9, 0x72, 0x49, 0x4b, 0xb1, 0xf7, 0x4d, 0x15, - 0xcb, 0x7c, 0x38, 0xf1, 0xb4, 0x1e, 0x39, 0xf0, 0xcd, 0xbd, - 0xea, 0xb2, 0xad, 0xda, 0xf, 0x2e, 0xe6, 0x10, 0x79, 0x47, - 0x1f, 0xd0, 0xf5, 0x1f, 0x5a, 0xea, 0x6b, 0xf7, 0x3a, 0x35, - 0x61, 0x5e, 0x9c, 0x6a, 0xd3, 0x77, 0x4f, 0x53, 0xec, 0x63, - 0x25, 0x38, 0xa9, 0x47, 0x66, 0x14, 0x51, 0x45, 0x6c, 0x50, - 0x51, 0x45, 0x23, 0x30, 0x45, 0x2c, 0xc4, 0x2a, 0x81, 0x92, - 0x4f, 0x41, 0x40, 0x11, 0xdd, 0x5d, 0x45, 0x63, 0x6d, 0x2d, - 0xc4, 0xf2, 0x2c, 0x50, 0x44, 0x85, 0xdd, 0xd8, 0xe0, 0x2a, - 0x81, 0x92, 0x4d, 0x7c, 0x79, 0xf1, 0x7, 0xc5, 0xaf, 0xe3, - 0x5f, 0x15, 0x5e, 0x6a, 0x64, 0x15, 0x85, 0x8f, 0x97, 0x2, - 0x1f, 0xe1, 0x8d, 0x78, 0x5f, 0xcf, 0xaf, 0xd4, 0x9a, 0xef, - 0xfe, 0x36, 0x7c, 0x58, 0x4d, 0x74, 0xbe, 0x83, 0xa3, 0xcd, - 0xba, 0xc1, 0x1b, 0xfd, 0x22, 0xe5, 0x1b, 0x89, 0x88, 0xfe, - 0x11, 0xfe, 0xc8, 0xf5, 0xee, 0x7d, 0xba, 0xf8, 0xed, 0x7e, - 0x63, 0xc4, 0x39, 0x9c, 0x71, 0x33, 0x58, 0x6a, 0x2e, 0xf1, - 0x8e, 0xef, 0xbb, 0xff, 00, 0x80, 0x7c, 0xf6, 0x3b, 0x10, - 0xaa, 0x3f, 0x67, 0x1d, 0x90, 0x51, 0x45, 0x15, 0xf1, 0xa7, - 0x96, 0x14, 0x51, 0x5d, 0x67, 0xc3, 0x2f, 0x6, 0x3f, 0x8d, - 0xfc, 0x57, 0x6d, 0x66, 0xca, 0xdf, 0x63, 0x8f, 0xf7, 0xd7, - 0x2e, 0x7, 0x44, 0x1d, 0xbf, 0x13, 0x81, 0xf8, 0xfb, 0x56, - 0xd4, 0x68, 0xcf, 0x11, 0x52, 0x34, 0xa9, 0xad, 0x5b, 0xb1, - 0x51, 0x8b, 0x9c, 0x94, 0x56, 0xec, 0xf7, 0xbf, 0x81, 0x7e, - 0x17, 0x6f, 0xe, 0xf8, 0x1e, 0x19, 0xa6, 0x5d, 0xb7, 0x3a, - 0x83, 0x7d, 0xa9, 0x81, 0x1c, 0x85, 0x20, 0x4, 0x1f, 0x90, - 0xcf, 0xe3, 0x5e, 0x89, 0x4d, 0x8e, 0x35, 0x8a, 0x35, 0x44, - 0x50, 0xa8, 0xa0, 0x28, 0x51, 0xd0, 0xa, 0x75, 0x7e, 0xe3, - 0x86, 0xa1, 0x1c, 0x2d, 0x18, 0x51, 0x8e, 0xd1, 0x56, 0x3e, - 0xbe, 0x9c, 0x15, 0x38, 0x28, 0x2e, 0x81, 0x45, 0x14, 0x57, - 0x49, 0xa0, 0x51, 0x45, 0x14, 0x1, 0x53, 0x51, 0xd2, 0x2c, - 0x75, 0x78, 0x4c, 0x37, 0xd6, 0x70, 0x5e, 0x44, 0x7a, 0xa4, - 0xf1, 0x87, 0x1f, 0xad, 0x79, 0xf6, 0xbf, 0xfb, 0x3f, 0xf8, - 0x63, 0x57, 0x2d, 0x25, 0xa2, 0xcf, 0xa5, 0x4a, 0x7f, 0xe7, - 0xdd, 0xf2, 0x99, 0xff, 00, 0x75, 0xb3, 0xfa, 0x11, 0x5e, - 0x99, 0x45, 0x72, 0x57, 0xc1, 0xe1, 0xf1, 0x2a, 0xd5, 0xa0, - 0xa5, 0xfd, 0x77, 0x32, 0x9d, 0x28, 0x54, 0xf8, 0xd5, 0xcf, - 0x9b, 0x3c, 0x45, 0xfb, 0x3a, 0xeb, 0xba, 0x68, 0x69, 0x34, - 0xbb, 0x88, 0x75, 0x58, 0x87, 0x44, 0xff, 00, 0x55, 0x26, - 0x3e, 0x84, 0xe0, 0xfe, 0x75, 0xe6, 0xba, 0xb6, 0x87, 0xa8, - 0x68, 0x37, 0x3f, 0x67, 0xd4, 0x6c, 0xa7, 0xb2, 0x9b, 0xfb, - 0xb3, 0x21, 0x5c, 0xfd, 0x3d, 0x7f, 0xa, 0xfb, 0x76, 0xa9, - 0xea, 0x9a, 0x45, 0x96, 0xb7, 0x68, 0xf6, 0xb7, 0xf6, 0xb1, - 0x5d, 0xdb, 0xb7, 0x58, 0xe5, 0x50, 0xc3, 0xff, 00, 0xad, - 0x5f, 0x2f, 0x8a, 0xe1, 0x8c, 0x3d, 0x4b, 0xbc, 0x3c, 0x9c, - 0x5f, 0x6d, 0xd7, 0xf9, 0x9e, 0x75, 0x4c, 0xbe, 0x12, 0xd6, - 0xe, 0xc7, 0xc4, 0x14, 0x57, 0xa5, 0x7c, 0x60, 0xf8, 0x56, - 0xbe, 0x5, 0xb8, 0x8a, 0xfb, 0x4f, 0x2f, 0x26, 0x93, 0x72, - 0xe5, 0x70, 0xfc, 0x98, 0x5f, 0xa8, 0x5c, 0xf7, 0x4, 0x67, - 0x7, 0xda, 0xbc, 0xd6, 0xbf, 0x3c, 0xc5, 0x61, 0xaa, 0xe0, - 0xea, 0xba, 0x35, 0x55, 0x9a, 0x3c, 0x4a, 0x94, 0xe5, 0x4a, - 0x4e, 0x32, 0xdc, 0x28, 0xa2, 0x8a, 0xe5, 0x33, 0xa, 0xea, - 0x7e, 0x19, 0x78, 0x96, 0x5f, 0xb, 0x78, 0xd3, 0x4d, 0xba, - 0x46, 0x22, 0x19, 0x25, 0x10, 0x4e, 0xb9, 0xe1, 0xa3, 0x62, - 0x1, 0xcf, 0xd3, 0x83, 0xf8, 0x57, 0x2d, 0x4a, 0xac, 0x55, - 0x81, 0x7, 0x4, 0x1c, 0x82, 0x2b, 0x6a, 0x35, 0x65, 0x42, - 0xac, 0x6a, 0xc7, 0x74, 0xee, 0x54, 0x24, 0xe1, 0x25, 0x25, - 0xd0, 0xfb, 0xaa, 0x8a, 0x82, 0xc5, 0xda, 0x5b, 0x2b, 0x77, - 0x6e, 0x19, 0xa3, 0x52, 0x7e, 0xb8, 0xa9, 0xeb, 0xf7, 0x94, - 0xee, 0xae, 0x7d, 0x9a, 0xd4, 0x28, 0xa2, 0x8a, 0x60, 0x21, - 0x38, 0x15, 0xf1, 0xaf, 0xed, 0xf, 0x77, 0xe7, 0x6b, 0xb2, - 0x8f, 0x57, 0x3f, 0xce, 0xbe, 0xc8, 0x94, 0xed, 0x89, 0xcf, - 0xa2, 0x93, 0x5f, 0x10, 0x7c, 0x73, 0xb9, 0xf3, 0xbc, 0x45, - 0x2f, 0xfb, 0xed, 0xfc, 0xeb, 0xe5, 0x78, 0x86, 0x56, 0xc3, - 0xc6, 0x3d, 0xd9, 0xf3, 0xb9, 0xec, 0xb9, 0x70, 0xac, 0xf1, - 0x1f, 0x14, 0xc9, 0xb2, 0xc2, 0x6f, 0xf7, 0x4d, 0x76, 0x9f, - 0xf0, 0x4c, 0x9d, 0x3c, 0x5d, 0x7c, 0x65, 0xf8, 0x91, 0xa9, - 0x11, 0x9f, 0xb3, 0xe9, 0x96, 0xd6, 0xe1, 0xb1, 0xfd, 0xf9, - 0x59, 0x8f, 0xfe, 0x81, 0x5c, 0xf, 0x8d, 0x25, 0xd9, 0xa6, - 0x4d, 0xf4, 0x35, 0xeb, 0xff, 00, 0xf0, 0x4b, 0x2b, 0xd, - 0xf7, 0x3f, 0x15, 0x35, 0x22, 0x3e, 0xfd, 0xcd, 0x95, 0xba, - 0x9f, 0xf7, 0x52, 0x46, 0x3f, 0xfa, 0x10, 0xac, 0x72, 0x38, - 0xe9, 0x73, 0xe1, 0xb8, 0x5e, 0x3c, 0xd9, 0x95, 0x49, 0x76, - 0x47, 0xdf, 0x74, 0x51, 0x45, 0x7d, 0x81, 0xfa, 0xd8, 0x51, - 0x45, 0x66, 0x78, 0x9b, 0x5d, 0x83, 0xc3, 0x1e, 0x1e, 0xd4, - 0x75, 0x6b, 0x93, 0x88, 0x6c, 0xe0, 0x79, 0xd8, 0x67, 0x19, - 0xda, 0x33, 0x8f, 0xa9, 0xe9, 0x4a, 0x4d, 0x45, 0x36, 0xfa, - 0x13, 0x29, 0x28, 0xa7, 0x27, 0xb2, 0x3e, 0x49, 0xfd, 0xaa, - 0xfc, 0x62, 0xda, 0xef, 0xc4, 0x25, 0xd1, 0xe3, 0x72, 0x6d, - 0x34, 0x88, 0x82, 0x15, 0xc8, 0x20, 0xca, 0xe0, 0x33, 0x1f, - 0xcb, 0x68, 0xfc, 0xd, 0x27, 0xec, 0xc1, 0xe1, 0xf, 0xed, - 0xcf, 0x1b, 0xad, 0xfc, 0xd1, 0xee, 0xb7, 0xb2, 0x52, 0xf9, - 0x23, 0x8d, 0xdd, 0xab, 0xc8, 0xf5, 0x6d, 0x52, 0xe3, 0x5e, - 0xd5, 0xef, 0x35, 0x1b, 0xa7, 0x32, 0x5c, 0xdd, 0xcc, 0xd3, - 0x48, 0xc7, 0xd5, 0x8e, 0x6b, 0xec, 0x9f, 0xd9, 0xaf, 0xc2, - 0x3f, 0xf0, 0x8f, 0x78, 0x12, 0x3b, 0xb9, 0x13, 0x6d, 0xc5, - 0xe3, 0x17, 0x39, 0xfe, 0xef, 0x6a, 0xfc, 0xef, 0x8, 0x9e, - 0x63, 0x99, 0x7b, 0x49, 0x6d, 0x7b, 0xfc, 0x96, 0xdf, 0xa1, - 0xf9, 0xd6, 0x5c, 0x9e, 0x63, 0x99, 0x4b, 0x11, 0x2d, 0x93, - 0xbf, 0xf9, 0x1e, 0xbb, 0x45, 0x14, 0x57, 0xe8, 0xa7, 0xe8, - 0xe1, 0x45, 0x79, 0xef, 0xed, 0x1, 0xf1, 0x6a, 0xcb, 0xe0, - 0x67, 0xc1, 0xbf, 0x15, 0xf8, 0xde, 0xf9, 0x94, 0x2e, 0x93, - 0x62, 0xf2, 0xc2, 0x8d, 0xd2, 0x59, 0xc8, 0xdb, 0xa, 0x7f, - 0xc0, 0x9c, 0xa8, 0xfc, 0x6b, 0xf2, 0x66, 0xc3, 0xfe, 0xb, - 0x29, 0xf1, 0xba, 0xdd, 0x97, 0xed, 0x5a, 0x2f, 0x83, 0xae, - 0xd0, 0x75, 0x2, 0xc2, 0xe2, 0x32, 0x7f, 0x11, 0x39, 0xfe, - 0x54, 0xa, 0xf6, 0x3f, 0x6a, 0x2b, 0xc7, 0x7f, 0x6b, 0xaf, - 0x8c, 0xf0, 0x7c, 0x4, 0xfd, 0x9e, 0xbc, 0x63, 0xe2, 0xe7, - 0x90, 0x2d, 0xe4, 0x36, 0x8d, 0x6d, 0x60, 0xb9, 0xc1, 0x7b, - 0xa9, 0x7f, 0x77, 0x10, 0x1f, 0x46, 0x6d, 0xc7, 0xd9, 0x4d, - 0x5f, 0xfd, 0x98, 0xbe, 0x21, 0x78, 0xaf, 0xe2, 0xc7, 0xc1, - 0x1f, 0xc, 0xf8, 0xc3, 0xc6, 0x5a, 0x5d, 0x96, 0x8b, 0xac, - 0x6b, 0x50, 0x7d, 0xb1, 0x6c, 0x6c, 0x43, 0xec, 0x8e, 0x6, - 0x3f, 0xba, 0x27, 0x79, 0x27, 0x2c, 0xb8, 0x6f, 0xf8, 0x10, - 0x15, 0x6f, 0xe3, 0x9f, 0xec, 0xf9, 0xe0, 0xaf, 0xda, 0x37, - 0xc3, 0x16, 0x9e, 0x1e, 0xf1, 0xd5, 0x85, 0xce, 0xa5, 0xa4, - 0xdb, 0x5c, 0x8b, 0xc8, 0xe0, 0xb7, 0xbc, 0x96, 0xdf, 0xf7, - 0xa1, 0x59, 0x43, 0x13, 0x1b, 0x2, 0x70, 0x19, 0xb8, 0x3c, - 0x73, 0x40, 0xcf, 0xe6, 0xc6, 0x59, 0x5e, 0x79, 0x5e, 0x49, - 0x18, 0xbc, 0x8e, 0x4b, 0x33, 0x31, 0xc9, 0x24, 0xf5, 0x26, - 0x9b, 0x5f, 0xba, 0x57, 0x5f, 0xf0, 0x49, 0xbf, 0xd9, 0xda, - 0xe1, 0x8, 0x8f, 0x40, 0xd6, 0x2d, 0x4f, 0xf7, 0xa2, 0xd6, - 0x67, 0x27, 0xff, 00, 0x1e, 0x26, 0xb0, 0x6f, 0x7f, 0xe0, - 0x8f, 0x3f, 0x2, 0x6e, 0x3, 0x79, 0x17, 0x5e, 0x2a, 0xb4, - 0x27, 0xa6, 0xdd, 0x4a, 0x36, 0x3, 0xf3, 0x8a, 0xaa, 0xe4, - 0x72, 0xb3, 0xf1, 0x2e, 0x8a, 0xfd, 0x8a, 0xd4, 0x7f, 0xe0, - 0x8b, 0x1f, 0xc, 0x27, 0x2c, 0x6c, 0xfc, 0x6d, 0xe2, 0xab, - 0x4f, 0x40, 0xff, 00, 0x67, 0x90, 0xf, 0xfc, 0x86, 0xd, - 0x72, 0xf7, 0xdf, 0xf0, 0x44, 0x8d, 0x5, 0xd9, 0xbe, 0xc5, - 0xf1, 0x4b, 0x51, 0x88, 0x76, 0x13, 0xe9, 0x51, 0xbf, 0xf2, - 0x91, 0x68, 0xb8, 0xb9, 0x59, 0xf9, 0x39, 0x8f, 0x6a, 0xfe, - 0x88, 0x7f, 0x62, 0xf, 0x82, 0xb1, 0xfc, 0x7, 0xfd, 0x9a, - 0xbc, 0x1f, 0xe1, 0xd6, 0x89, 0x53, 0x53, 0xb8, 0xb6, 0x1a, - 0x96, 0xa2, 0xc0, 0x60, 0xb5, 0xcc, 0xe0, 0x3b, 0x3, 0xfe, - 0xe8, 0x2a, 0x9f, 0x45, 0x15, 0xf1, 0xe7, 0x83, 0xff, 00, - 0xe0, 0x8b, 0xe9, 0xe1, 0xcf, 0x1e, 0x68, 0x3a, 0xad, 0xff, - 00, 0xc4, 0x68, 0x75, 0x8d, 0x16, 0xc6, 0xfa, 0x1b, 0x9b, - 0xab, 0x6, 0xd2, 0x8c, 0x4f, 0x71, 0x1a, 0x38, 0x63, 0x1e, - 0xef, 0x34, 0x81, 0xbb, 0x18, 0xe9, 0xde, 0xbf, 0x4e, 0x95, - 0x42, 0x28, 0x55, 0x1, 0x54, 0xc, 00, 0x3a, 0x1, 0x49, - 0x94, 0x95, 0x8a, 0x9a, 0xbe, 0xa5, 0x16, 0x8f, 0xa5, 0x5d, - 0xdf, 0x4c, 0x40, 0x8a, 0xda, 0x26, 0x95, 0x89, 0xf4, 0x3, - 0x35, 0xf1, 0x4e, 0xa5, 0xa8, 0x4d, 0xaa, 0xea, 0x17, 0x37, - 0xb7, 0xd, 0xbe, 0x7b, 0x89, 0x1a, 0x57, 0x3e, 0xe4, 0xe4, - 0xd7, 0xd6, 0x7f, 0x14, 0xf4, 0xd, 0x5f, 0xc5, 0x1e, 0x13, - 0x97, 0x4b, 0xd1, 0xcc, 0x2b, 0x2d, 0xc4, 0x8a, 0x25, 0x33, - 0x39, 0x51, 0xe5, 0x8e, 0x48, 0x1c, 0x1e, 0xa4, 0xf, 0xd6, - 0xbc, 0x32, 0x4f, 0xd9, 0xfb, 0xc5, 0xc8, 0x38, 0x82, 0xd2, - 0x4f, 0xf7, 0x6e, 0x7, 0xf5, 0xc5, 0x7c, 0x17, 0x11, 0x51, - 0xc5, 0x62, 0xaa, 0x42, 0x9d, 0x1a, 0x6d, 0xc6, 0x2a, 0xfa, - 0x2e, 0xaf, 0xfc, 0x8f, 0x23, 0x1d, 0x1a, 0x95, 0x24, 0x94, - 0x62, 0xda, 0x47, 0x9b, 0x51, 0x5d, 0xec, 0xdf, 0x3, 0x7c, - 0x67, 0xf, 0xfc, 0xc2, 0x84, 0x9f, 0xee, 0x5c, 0x46, 0x7f, - 0xf6, 0x6a, 0xa5, 0x2f, 0xc2, 0x2f, 0x18, 0x43, 0xf7, 0xb4, - 0x2b, 0x83, 0xfe, 0xe9, 0x56, 0xfe, 0x46, 0xbe, 0x2a, 0x58, - 0xc, 0x5c, 0x77, 0xa5, 0x2f, 0xb9, 0x9e, 0x4b, 0xa3, 0x55, - 0x7d, 0x97, 0xf7, 0x1c, 0x7d, 0x7d, 0x3f, 0xfb, 0x3f, 0xe8, - 0x1f, 0xd9, 0x3e, 0x4, 0x4b, 0xb7, 0x4d, 0xb3, 0x6a, 0x12, - 0xb4, 0xc4, 0x91, 0xce, 0xc1, 0xf2, 0xaf, 0xf2, 0x27, 0xf1, - 0xaf, 0x9, 0xb7, 0xf8, 0x63, 0xe2, 0x79, 0x6f, 0x60, 0xb7, - 0x93, 0x44, 0xbd, 0x84, 0x49, 0x22, 0xa1, 0x91, 0xa1, 0x3b, - 0x57, 0x27, 0x19, 0x27, 0xd0, 0x57, 0xd7, 0x3a, 0x75, 0x8c, - 0x5a, 0x5d, 0x85, 0xb5, 0x9c, 0xb, 0xb6, 0x18, 0x23, 0x58, - 0x90, 0x7a, 00, 0x30, 0x2b, 0xeb, 0x38, 0x6b, 0x5, 0x38, - 0xd7, 0x9d, 0x7a, 0xb1, 0x6b, 0x95, 0x59, 0x5d, 0x5b, 0x57, - 0xff, 00, 0x3, 0xf3, 0x3d, 0x2c, 0x5, 0x26, 0xa6, 0xe7, - 0x25, 0xb1, 0x66, 0x8a, 0x28, 0xaf, 0xd1, 0x4f, 0x74, 0x2b, - 0xcd, 0x7f, 0x68, 0x38, 0xbc, 0xcf, 0x87, 0x53, 0x36, 0x3e, - 0xe5, 0xcc, 0x4d, 0xfa, 0xe3, 0xfa, 0xd7, 0xa5, 0x57, 0x3, - 0xf1, 0xce, 0x2f, 0x37, 0xe1, 0x9e, 0xa8, 0x7f, 0xb8, 0xd1, - 0x37, 0xfe, 0x44, 0x5f, 0xf1, 0xaf, 0x37, 0x32, 0x5c, 0xd8, - 0x2a, 0xcb, 0xfb, 0xaf, 0xf2, 0x39, 0xf1, 0xa, 0xf4, 0xa5, - 0xe8, 0x7c, 0xa5, 0x45, 0x14, 0x57, 0xe2, 0x27, 0xc9, 0x5, - 0x14, 0x51, 0x40, 0x1f, 0x64, 0x7c, 0x3a, 0xba, 0xfb, 0x67, - 0x80, 0xf4, 0x9, 0x49, 0xc9, 0x36, 0x51, 0x3, 0xf5, 0xa, - 0x7, 0xf4, 0xae, 0x8e, 0xb8, 0x4f, 0x82, 0x17, 0x86, 0xf3, - 0xe1, 0xa6, 0x95, 0x93, 0x93, 0x17, 0x99, 0x11, 0xfc, 0x1d, - 0xb1, 0xfa, 0x62, 0xbb, 0xba, 0xfd, 0xd3, 0x5, 0x3f, 0x69, - 0x86, 0xa5, 0x3e, 0xf1, 0x5f, 0x91, 0xf6, 0x14, 0x5f, 0x35, - 0x38, 0xbf, 0x24, 0x14, 0x51, 0x45, 0x76, 0x1a, 0x85, 0x14, - 0x56, 0x7f, 0x88, 0x35, 0x68, 0xf4, 0x1d, 0xe, 0xff, 00, - 0x51, 0x97, 0xee, 0x5a, 0xc2, 0xf2, 0x9f, 0x7c, 0xe, 0x5, - 0x4c, 0xa4, 0xa1, 0x17, 0x29, 0x6c, 0x84, 0xdd, 0x95, 0xd9, - 0xf2, 0xbf, 0xc6, 0xd, 0x78, 0xf8, 0x83, 0xe2, 0x6, 0xa9, - 0x20, 0x6d, 0xd0, 0xdb, 0xbf, 0xd9, 0x63, 0xfa, 0x27, 0x7, - 0xff, 00, 0x1e, 0xdc, 0x7f, 0x1a, 0xe3, 0x2a, 0x4b, 0x89, - 0xde, 0xea, 0x79, 0x66, 0x90, 0xee, 0x92, 0x46, 0x2e, 0xc7, - 0xd4, 0x93, 0x93, 0x51, 0xd7, 0xe1, 0x38, 0x8a, 0xcf, 0x11, - 0x5a, 0x75, 0x65, 0xf6, 0x9b, 0x67, 0xc7, 0x4e, 0x4e, 0x72, - 0x72, 0x7d, 0x42, 0x8a, 0x28, 0xae, 0x72, 0xe, 0xb7, 0xe1, - 0x46, 0x8f, 0xfd, 0xb7, 0xf1, 0x7, 0x46, 0x81, 0x97, 0x7c, - 0x69, 0x37, 0x9e, 0xe3, 0xb6, 0x10, 0x16, 0xfe, 0x60, 0x57, - 0xd7, 0xd5, 0xf3, 0xdf, 0xec, 0xd1, 0xa3, 0xf9, 0xfa, 0xd6, - 0xad, 0xa9, 0xb2, 0xf1, 0x6f, 0xa, 0xc0, 0x87, 0xdd, 0xce, - 0x4f, 0xe8, 0xbf, 0xad, 0x7d, 0x9, 0x5f, 0xaa, 0xf0, 0xd5, - 0xf, 0x67, 0x82, 0xf6, 0x8f, 0x79, 0x36, 0xfe, 0x4b, 0x43, - 0xe8, 0xf0, 0x10, 0xe5, 0xa5, 0xcd, 0xdc, 0x28, 0xa2, 0x8a, - 0xfa, 0xb3, 0xd2, 0xa, 0x28, 0xa2, 0x80, 0xa, 0xf9, 0xdb, - 0xf6, 0x88, 0xf0, 0x69, 0xd3, 0xf5, 0x98, 0x7c, 0x41, 0x6e, - 0x9f, 0xe8, 0xf7, 0x98, 0x8e, 0x7c, 0xf, 0xbb, 0x28, 0x1c, - 0x1f, 0xc4, 0xf, 0xfc, 0x77, 0xde, 0xbe, 0x89, 0xac, 0xdf, - 0x10, 0xe8, 0x36, 0x9e, 0x27, 0xd1, 0xae, 0xb4, 0xcb, 0xd4, - 0xdf, 0x6f, 0x70, 0xbb, 0x5b, 0x1d, 0x54, 0xf5, 0x4, 0x7b, - 0x83, 0xcd, 0x79, 0x59, 0x9e, 0x9, 0x63, 0xf0, 0xd2, 0xa3, - 0xd7, 0x75, 0xeb, 0xfd, 0x68, 0x73, 0x62, 0x28, 0xfb, 0x6a, - 0x6e, 0x3d, 0x4f, 0x89, 0xa8, 0xae, 0x8b, 0xc7, 0x1e, 0x8, - 0xbf, 0xf0, 0x2e, 0xb5, 0x25, 0x95, 0xe2, 0x16, 0x88, 0x92, - 0x60, 0xb8, 0x3, 0xe5, 0x95, 0x3d, 0x47, 0xbf, 0xa8, 0xed, - 0x5c, 0xed, 0x7e, 0x33, 0x56, 0x94, 0xe8, 0xcd, 0xd3, 0xa8, - 0xac, 0xd1, 0xf2, 0xb2, 0x8b, 0x8b, 0xe5, 0x96, 0xe1, 0x45, - 0x14, 0x56, 0x44, 0x9b, 0x7e, 0x12, 0xf1, 0x86, 0xa7, 0xe0, - 0xbd, 0x51, 0x6f, 0xb4, 0xd9, 0xb6, 0x3f, 0xdd, 0x92, 0x36, - 0xe5, 0x25, 0x5f, 0x46, 0x15, 0xf4, 0x1f, 0x85, 0x3e, 0x3e, - 0x78, 0x7b, 0x5d, 0x44, 0x8f, 0x50, 0x66, 0xd1, 0xee, 0xb8, - 0x4, 0x4f, 0xcc, 0x44, 0xfb, 0x38, 0xe9, 0xf8, 0xe2, 0xbe, - 0x61, 0xa2, 0xbd, 0xac, 0x6, 0x6d, 0x89, 0xcb, 0xfd, 0xda, - 0x6e, 0xf1, 0xec, 0xf6, 0xff, 00, 0x80, 0x75, 0x51, 0xc4, - 0xd4, 0xa1, 0xa4, 0x76, 0xec, 0x7d, 0xb7, 0x69, 0xe2, 0xd, - 0x2e, 0xfd, 0x3, 0x5b, 0x6a, 0x36, 0x97, 0xa, 0x46, 0x73, - 0x1c, 0xea, 0xdf, 0xc8, 0xd4, 0xb3, 0x6a, 0xf6, 0x36, 0xeb, - 0xba, 0x5b, 0xdb, 0x78, 0x97, 0xd5, 0xe5, 0x50, 0x3f, 0x9d, - 0x7c, 0x3f, 0x8a, 0x31, 0x5f, 0x46, 0xb8, 0xae, 0x76, 0xd6, - 0x8e, 0xbe, 0xbf, 0xf0, 0xe, 0xff, 00, 0xed, 0x27, 0xfc, - 0xbf, 0x89, 0xf5, 0x9f, 0x88, 0xbe, 0x32, 0xf8, 0x5b, 0xc3, - 0xb1, 0x9c, 0xea, 0x2b, 0x7f, 0x38, 0xe9, 0xd, 0x96, 0x24, - 0x3f, 0x98, 0xe0, 0x7e, 0x26, 0xbc, 0x47, 0xe2, 0x7, 0xc6, - 0xad, 0x5b, 0xc6, 0x4b, 0x25, 0xa5, 0xa8, 0x3a, 0x66, 0x96, - 0xc0, 0xab, 0x43, 0x1b, 0x65, 0xe5, 0x1f, 0xed, 0xb7, 0xa7, - 0xb0, 0xe3, 0xeb, 0x5e, 0x75, 0x45, 0x78, 0x98, 0xdc, 0xf7, - 0x17, 0x8c, 0x8b, 0x85, 0xf9, 0x62, 0xfa, 0x2f, 0xf3, 0x39, - 0x2a, 0xe3, 0x2a, 0xd5, 0x56, 0xd9, 0x5, 0x14, 0x51, 0x5f, - 0x3a, 0x70, 0x85, 0x14, 0x55, 0x8b, 0xd, 0x3e, 0xe7, 0x55, - 0xbc, 0x86, 0xd2, 0xd2, 0x17, 0xb8, 0xb9, 0x95, 0x82, 0xa4, - 0x68, 0x32, 0x58, 0xd3, 0x49, 0xc9, 0xd9, 0x6e, 0x1b, 0x89, - 0x65, 0x65, 0x3e, 0xa3, 0x77, 0xd, 0xad, 0xb4, 0x4d, 0x35, - 0xc4, 0xcc, 0x11, 0x23, 0x41, 0x92, 0xc4, 0xf6, 0xaf, 0xad, - 0x3e, 0x18, 0xf8, 0x6, 0x2f, 00, 0xf8, 0x7d, 0x6d, 0xdb, - 0x64, 0x9a, 0x84, 0xe7, 0xcc, 0xb9, 0x99, 0x7b, 0xb7, 0x65, - 0x1e, 0xc3, 0xfc, 0x4f, 0x7a, 0xc6, 0xf8, 0x4b, 0xf0, 0x9a, - 0x2f, 0x4, 0x5b, 0xfd, 0xbf, 0x50, 0x9, 0x36, 0xb5, 0x2a, - 0xe0, 0x95, 0x39, 0x58, 0x14, 0xff, 00, 0xa, 0xfb, 0xfa, - 0x9f, 0xc3, 0xeb, 0xe9, 0x35, 0xfa, 0x86, 0x47, 0x94, 0x3c, - 0x1a, 0xfa, 0xc5, 0x75, 0xef, 0xbd, 0x97, 0x65, 0xfe, 0x67, - 0xd0, 0xe0, 0xf0, 0xbe, 0xcb, 0xdf, 0x9e, 0xff, 00, 0x90, - 0x51, 0x45, 0x23, 0x30, 0x55, 0x24, 0x9c, 0x1, 0xc9, 0x35, - 0xf5, 0xe7, 0xa8, 0x71, 0xba, 0xef, 0xc5, 0x8d, 0xf, 0xc3, - 0x5e, 0x29, 0xfe, 0xc4, 0xd4, 0x64, 0x7b, 0x77, 0xf2, 0x96, - 0x43, 0x73, 0xb7, 0x31, 0xa9, 0x39, 0xf9, 0x5b, 0x1c, 0x8e, - 0x30, 0x73, 0x8c, 0x73, 0x5d, 0x55, 0x8e, 0xa3, 0x6b, 0xaa, - 0x40, 0xb3, 0xd9, 0xdc, 0xc5, 0x75, 0xb, 0x72, 0x24, 0x85, - 0xc3, 0x29, 0xfc, 0x45, 0x7c, 0x75, 0xe3, 0x8d, 0x78, 0xf8, - 0x9b, 0xc5, 0xba, 0xa6, 0xa5, 0x9c, 0xa4, 0xd3, 0xb7, 0x97, - 0xfe, 0xe0, 0xe1, 0x7f, 0x40, 0x2a, 0x86, 0x93, 0xae, 0x6a, - 0x1a, 0xd, 0xc8, 0xb8, 0xd3, 0xaf, 0x67, 0xb2, 0x97, 0xfb, - 0xd0, 0xb9, 0x5c, 0xfd, 0x7d, 0x7f, 0x1a, 0xfc, 0xf5, 0x71, - 0x3c, 0xa9, 0xd7, 0x9c, 0x67, 0xe, 0x68, 0x5d, 0xda, 0xda, - 0x3b, 0x7e, 0xbf, 0x81, 0xe1, 0xac, 0xc1, 0xa9, 0xb4, 0xd5, - 0xd1, 0xf6, 0xed, 0x15, 0xf3, 0x26, 0x8d, 0xfb, 0x43, 0x78, - 0x9f, 0x4e, 0xda, 0xb7, 0x82, 0xd7, 0x53, 0x8c, 0x75, 0xf3, - 0x63, 0xd8, 0xe7, 0xf1, 0x5c, 0xf, 0xd2, 0xbb, 0x6d, 0x2f, - 0xf6, 0x96, 0xd2, 0xa6, 0x55, 0x1a, 0x86, 0x95, 0x77, 0x6c, - 0xdd, 0xcc, 0xc, 0xb2, 0x2f, 0xeb, 0xb4, 0xd7, 0xd0, 0x51, - 0xcf, 0xf0, 0x15, 0xb7, 0x9f, 0x2b, 0xf3, 0x5f, 0xd2, 0x3b, - 0x61, 0x8d, 0xa3, 0x2e, 0xb6, 0x3d, 0x96, 0x8a, 0xf3, 0xcb, - 0x5f, 0x8f, 0x5e, 0xe, 0xb8, 0xc6, 0xeb, 0xe9, 0xad, 0xcf, - 0xa4, 0xb6, 0xef, 0xfd, 0x1, 0xad, 0x8, 0xbe, 0x31, 0x78, - 0x3a, 0x51, 0xc6, 0xb9, 0x2, 0xff, 00, 0xbc, 0xae, 0x3f, - 0x98, 0xaf, 0x4a, 0x39, 0x86, 0xe, 0x7f, 0xd, 0x58, 0xfd, - 0xe8, 0xe8, 0x55, 0xe9, 0x3d, 0xa4, 0xbe, 0xf3, 0xb3, 0xa2, - 0xb8, 0xa9, 0xfe, 0x32, 0xf8, 0x36, 0x1, 0x93, 0xad, 0xc4, - 0xff, 00, 0xf5, 0xce, 0x37, 0x6f, 0xe4, 0x2b, 0x9b, 0xd7, - 0x7f, 0x68, 0xcd, 0x2, 0xca, 0x16, 0x1a, 0x65, 0xbd, 0xce, - 0xa3, 0x3f, 0xf0, 0xee, 0x5f, 0x2a, 0x3f, 0xc4, 0x9e, 0x7f, - 0x4a, 0x8a, 0x99, 0x9e, 0xa, 0x92, 0xbc, 0xaa, 0xc7, 0xef, - 0xbf, 0xe4, 0x29, 0x62, 0x29, 0x45, 0x5d, 0xc9, 0x16, 0xbf, - 0x68, 0x6d, 0x4a, 0xde, 0xd7, 0xc0, 0x46, 0xd6, 0x42, 0x3e, - 0xd1, 0x75, 0x71, 0x18, 0x89, 0x7b, 0xfc, 0xa7, 0x73, 0x1f, - 0xc8, 0x63, 0xf1, 0xaf, 0x98, 0xeb, 0x7b, 0xc6, 0x3e, 0x35, - 0xd4, 0xfc, 0x71, 0xaa, 0x7d, 0xb7, 0x52, 0x90, 0x12, 0xa3, - 0x6c, 0x50, 0xc6, 0x30, 0x91, 0xaf, 0xa0, 0x1f, 0xd7, 0xad, - 0x60, 0xd7, 0xe5, 0x99, 0xbe, 0x3a, 0x38, 0xfc, 0x53, 0xab, - 0x5, 0xee, 0xa5, 0x64, 0x7c, 0xe6, 0x26, 0xb2, 0xad, 0x53, - 0x99, 0x6c, 0x14, 0x51, 0x45, 0x78, 0xa7, 0x28, 0x55, 0xcd, - 0x1e, 0xc5, 0xb5, 0x3d, 0x5e, 0xca, 0xcd, 0x46, 0x5a, 0xe2, - 0x74, 0x88, 0x1, 0xfe, 0xd3, 0x1, 0xfd, 0x6a, 0x9d, 0x7a, - 0x77, 0xc0, 0x1f, 0xa, 0x9d, 0x73, 0xc6, 0x1f, 0xda, 0x12, - 0xa9, 0x36, 0xda, 0x6a, 0xf9, 0xb9, 0xec, 0x64, 0x3c, 0x20, - 0xfe, 0x67, 0xf0, 0x15, 0xdb, 0x82, 0xc3, 0xcb, 0x15, 0x88, - 0x85, 0x18, 0xf5, 0x7f, 0x87, 0x5f, 0xc0, 0xd6, 0x94, 0x1d, - 0x49, 0xa8, 0xae, 0xa7, 0xd3, 0x68, 0xa1, 0x14, 0x28, 0xe8, - 0x6, 0x29, 0xd4, 0x51, 0x5f, 0xb9, 0x9f, 0x60, 0x14, 0x51, - 0x45, 00, 0x56, 0xd4, 0x5f, 0xcb, 0xb0, 0xb8, 0x6e, 0x98, - 0x43, 0xfc, 0xab, 0xe1, 0x1f, 0x8b, 0xd7, 0x1e, 0x77, 0x88, - 0xe5, 0xef, 0xf3, 0x1f, 0xe7, 0x5f, 0x72, 0xf8, 0x92, 0x5f, - 0x27, 0x43, 0xbc, 0x6e, 0x98, 0x8c, 0xd7, 0xc1, 0x5f, 0x12, - 0xa6, 0xf3, 0xbc, 0x45, 0x3f, 0xb3, 0x1a, 0xf8, 0xce, 0x22, - 0x97, 0xbb, 0x4e, 0x3e, 0x67, 0xc9, 0xf1, 0xc, 0xad, 0x41, - 0x23, 0xc8, 0x3e, 0x20, 0x4b, 0xb3, 0x4a, 0x9b, 0xe8, 0x6b, - 0xe9, 0x1f, 0xf8, 0x25, 0xa6, 0x9e, 0x23, 0xf8, 0x57, 0xe3, - 0x5b, 0xfc, 0x7c, 0xd7, 0x5e, 0x20, 0x64, 0xcf, 0xb2, 0x41, - 0x1f, 0xff, 00, 0x14, 0x6b, 0xe6, 0x1f, 0x89, 0x93, 0x6c, - 0xd2, 0x65, 0xfa, 0x1f, 0xe5, 0x5f, 0x60, 0x7f, 0xc1, 0x32, - 0x6c, 0x3e, 0xcd, 0xfb, 0x35, 0x1b, 0xad, 0xb8, 0x37, 0xba, - 0xe5, 0xec, 0xd9, 0xf5, 00, 0xaa, 0x7f, 0xec, 0x95, 0xd9, - 0x92, 0xc6, 0xd4, 0xcf, 0x99, 0xe1, 0x18, 0xdf, 0x13, 0x5e, - 0x7e, 0x87, 0xd6, 0x74, 0x51, 0x45, 0x7d, 0x39, 0xfa, 0x90, - 0x57, 0x82, 0xfe, 0xd6, 0xde, 0x35, 0x3a, 0x3f, 0x84, 0x6d, - 0x3c, 0x3f, 0x3, 0x62, 0x7d, 0x56, 0x4d, 0xd2, 0xe0, 0xf2, - 0x22, 0x42, 0xf, 0xea, 0xd8, 0x1f, 0x81, 0xaf, 0x7a, 0xaf, - 0x85, 0xbf, 0x68, 0x3f, 0x1a, 0x1f, 0x1a, 0x7c, 0x4b, 0xd4, - 0x1a, 0x29, 0x4, 0x96, 0x5a, 0x79, 0xfb, 0x15, 0xbe, 0xd2, - 0x70, 0x42, 0x9f, 0x98, 0xfe, 0x2d, 0x9f, 0xc8, 0x57, 0x85, - 0x9c, 0xe2, 0x3d, 0x86, 0x15, 0xa5, 0xbc, 0xb4, 0xff, 00, - 0x33, 0xe7, 0xb3, 0xdc, 0x4f, 0xd5, 0xf0, 0x6e, 0x29, 0xeb, - 0x2d, 0x3f, 0xcf, 0xf0, 0x39, 0x5f, 0x2, 0xf8, 0x7e, 0x4f, - 0x12, 0xf8, 0xa3, 0x4f, 0xd3, 0xe3, 0x5d, 0xde, 0x6c, 0xaa, - 0xf, 0xd3, 0x3c, 0xd7, 0xe8, 0x46, 0x95, 0xa7, 0xc7, 0xa5, - 0x69, 0xd6, 0xf6, 0x91, 00, 0xb1, 0xc2, 0x81, 00, 0x1e, - 0xd5, 0xf2, 0xef, 0xec, 0x9d, 0xe0, 0xff, 00, 0xb6, 0x6b, - 0x77, 0x7a, 0xd4, 0xc9, 0x98, 0xed, 0xd3, 0x6c, 0x64, 0x8e, - 0x37, 0x1a, 0xfa, 0xb6, 0xb8, 0xb8, 0x7f, 0xf, 0xc9, 0x46, - 0x55, 0xde, 0xf2, 0xfc, 0x91, 0x87, 0xf, 0xe1, 0xbd, 0x8e, - 0x1b, 0xda, 0x3d, 0xe5, 0xf9, 0x5, 0x14, 0x51, 0x5f, 0x54, - 0x7d, 0x41, 0xf9, 0x87, 0xff, 00, 0x5, 0x9e, 0xf8, 0xdd, - 0x1d, 0xb6, 0x8b, 0xe1, 0x2f, 0x85, 0x76, 0x17, 0x2c, 0x2e, - 0x2e, 0x65, 0xfe, 0xda, 0xd4, 0xe3, 0x46, 0xc0, 0xf2, 0x97, - 0x72, 0x40, 0x8d, 0xeb, 0x96, 0xde, 0xd8, 0xff, 00, 0x61, - 0x4d, 0x7e, 0x72, 0xfe, 0xcf, 0x7f, 0xa, 0xe5, 0xf8, 0xdb, - 0xf1, 0xb3, 0xc1, 0xbe, 0x7, 0x89, 0xfc, 0xb5, 0xd6, 0x75, - 0x8, 0xe0, 0x99, 0xf3, 0x8d, 0xb0, 0x8c, 0xbc, 0xa4, 0x7b, - 0x88, 0xd5, 0xc8, 0xf7, 0xaf, 0x55, 0xff, 00, 0x82, 0x90, - 0x6b, 0xf7, 0x9a, 0xff, 00, 0xed, 0x9f, 0xf1, 0x1c, 0xdd, - 0xc8, 0xce, 0xb6, 0x77, 0x30, 0x59, 0x40, 0xac, 0x73, 0xb2, - 0x34, 0xb7, 0x8c, 00, 0x3d, 0xb2, 0x58, 0xff, 00, 0xc0, - 0x8d, 0x7c, 0xfb, 0xe1, 0x5f, 0x15, 0x6a, 0xfe, 0x7, 0xf1, - 0x1e, 0x9d, 0xaf, 0xe8, 0x3a, 0x84, 0xfa, 0x56, 0xb3, 0xa7, - 0xcc, 0xb7, 0x16, 0xb7, 0x96, 0xcd, 0xb6, 0x48, 0x9c, 0x74, - 0x20, 0xff, 00, 0x9c, 0xf4, 0xaa, 0x33, 0x6f, 0x53, 0xfa, - 0x71, 0x51, 0xa7, 0xf8, 0x4b, 0xc3, 0xc0, 0x7c, 0x96, 0x7a, - 0x5e, 0x99, 0x6b, 0x8f, 0x45, 0x8a, 0x18, 0xd3, 0xf9, 0x5, - 0x5f, 0xd2, 0xbf, 0xe, 0xbe, 0x24, 0x7f, 0xc1, 0x4e, 0x7e, - 0x37, 0x6a, 0x3f, 0x13, 0x7c, 0x4b, 0xa8, 0xf8, 0x57, 0xc6, - 0xd3, 0xe9, 0x9e, 0x1a, 0x9a, 0xfe, 0x66, 0xd3, 0x74, 0xe3, - 0x67, 0x6e, 0xe9, 0xd, 0xbe, 0xe2, 0x23, 0x1f, 0x34, 0x64, - 0xe7, 0x68, 0x4, 0xe4, 0x9e, 0x49, 0xa8, 0x3c, 0x61, 0xff, - 00, 0x5, 0x45, 0xf8, 0xd9, 0xe3, 0xcf, 0x86, 0xda, 0xd7, - 0x83, 0x35, 0x89, 0xf4, 0x49, 0xac, 0xf5, 0x6b, 0x17, 0xb0, - 0xb9, 0xbe, 0x86, 0xc5, 0xa2, 0xba, 0xf2, 0xdd, 0x76, 0xb1, - 0xc, 0xae, 0x14, 0x31, 0x19, 0x19, 0xdb, 0xdc, 0xd7, 0xc8, - 0xb4, 0x92, 0x1b, 0x7d, 0x8f, 0xdf, 0x7f, 0xf8, 0x27, 0x7f, - 0xc4, 0x8f, 0x88, 0xff, 00, 0x18, 0xbe, 0x1, 0x47, 0xe3, - 0x6f, 0x88, 0xfa, 0xc2, 0xea, 0xb7, 0x7a, 0xad, 0xf4, 0xa3, - 0x4f, 0x9, 0x69, 0x1d, 0xb8, 0x8e, 0xda, 0x33, 0xe5, 0xe4, - 0x84, 0x51, 0x92, 0xce, 0xae, 0x72, 0x7b, 0x1, 0x5f, 0x50, - 0xd7, 0xe3, 0xaf, 0xc3, 0xf, 0xf8, 0x2b, 0xf6, 0xa3, 0xf0, - 0xbf, 0xc0, 0xfa, 0x7, 0x85, 0x34, 0xff, 00, 0x84, 0xda, - 0x50, 0xd2, 0xb4, 0x6b, 0x38, 0xac, 0xa0, 0x58, 0x75, 0x69, - 0x23, 0x25, 0x51, 0x40, 0xc9, 0xfd, 0xd1, 0xe4, 0xf2, 0x4f, - 0xb9, 0x35, 0xe8, 0x5a, 0x7f, 0xfc, 0x16, 0xee, 0x16, 0x61, - 0xf6, 0xef, 0x84, 0xb2, 0x46, 0xbd, 0xcd, 0xbe, 0xb8, 0x1f, - 0xf9, 0xc0, 0x28, 0xb1, 0x57, 0x47, 0xea, 0x45, 0x15, 0xf9, - 0xbd, 0x65, 0xff, 00, 0x5, 0xb1, 0xf0, 0x3c, 0x85, 0x7e, - 0xd7, 0xf0, 0xe3, 0xc4, 0x10, 0xe, 0xe6, 0x1b, 0xc8, 0x24, - 0xc7, 0xe7, 0xb6, 0xba, 0xed, 0x3, 0xfe, 0xb, 0x19, 0xf0, - 0x8b, 0x5c, 0xbd, 0xb6, 0xb3, 0x3e, 0x19, 0xf1, 0x84, 0x17, - 0x57, 0x12, 0x2c, 0x51, 0xc6, 0x2d, 0x20, 0x93, 0x73, 0xb1, - 0xc0, 0x51, 0xb6, 0x6e, 0x72, 0x48, 0xed, 0x48, 0x2e, 0x8f, - 0xbc, 0xe8, 0xa8, 0xad, 0xa6, 0x37, 0x16, 0xd1, 0x4a, 0x63, - 0x78, 0x4b, 0xa0, 0x63, 0x1c, 0x98, 0xdc, 0xb9, 0x19, 0xc1, - 0xc7, 0x71, 0x59, 0x1e, 0x36, 0xf1, 0xae, 0x89, 0xf0, 0xe7, - 0xc2, 0x9a, 0x9f, 0x89, 0x7c, 0x47, 0x7f, 0x1e, 0x97, 0xa2, - 0x69, 0xb0, 0x99, 0xee, 0xee, 0xe5, 0x4, 0xac, 0x48, 0x3b, - 0xe0, 0x2, 0x4f, 0x5e, 0x80, 0x50, 0x33, 0x72, 0x8a, 0xf0, - 0x2b, 0xf, 0xdb, 0xdb, 0xf6, 0x7d, 0xd4, 0x63, 0xf, 0x1f, - 0xc5, 0x6f, 0xf, 0xc6, 0xf, 0x6b, 0x89, 0x9a, 0x23, 0xf9, - 0x32, 0x8a, 0xdc, 0xb1, 0xfd, 0xb1, 0x7e, 0x6, 0xea, 0x3f, - 0xea, 0x3e, 0x2d, 0x78, 0x40, 0xff, 00, 0xbf, 0xac, 0x42, - 0x9f, 0xfa, 0x13, 0xa, 00, 0xf6, 0x1a, 0x2b, 0x82, 0xd2, - 0x7e, 0x3e, 0x7c, 0x33, 0xd7, 0xbf, 0xe4, 0x1d, 0xf1, 0xb, - 0xc2, 0xf7, 0xdf, 0xf5, 0xc3, 0x58, 0xb7, 0x7f, 0xe4, 0xf5, - 0xd1, 0xd9, 0x78, 0xd7, 0xc3, 0xda, 0x91, 0x2, 0xd3, 0x5e, - 0xd3, 0x2e, 0x89, 0xe8, 0x21, 0xbc, 0x8d, 0xf3, 0xf9, 0x35, - 00, 0x6d, 0x51, 0x51, 0xa5, 0xc4, 0x52, 0x7d, 0xc9, 0x51, - 0xbf, 0xdd, 0x60, 0x6a, 0x4a, 00, 0x28, 0xa2, 0x8a, 00, - 0x2a, 0xbd, 0xfe, 0x9f, 0x6d, 0xaa, 0x5a, 0x49, 0x6b, 0x79, - 0x6f, 0x1d, 0xd5, 0xb4, 0x98, 0xdf, 0x14, 0xca, 0x19, 0x5b, - 0x9c, 0xf2, 0xf, 0xbd, 0x58, 0xa2, 0x93, 0x49, 0xab, 0x30, - 0x6a, 0xfa, 0x33, 0x96, 0x9b, 0xe1, 0x77, 0x84, 0xe7, 0x1f, - 0x36, 0x81, 0x62, 0x3f, 0xdc, 0x8b, 0x6f, 0xf2, 0xaa, 0x53, - 0x7c, 0x17, 0xf0, 0x6c, 0xfd, 0x74, 0x54, 0x5f, 0xf7, 0x25, - 0x91, 0x7f, 0x93, 0x57, 0x6d, 0x45, 0x72, 0x4b, 0x5, 0x85, - 0x96, 0xf4, 0xa3, 0xf7, 0x23, 0x27, 0x46, 0x9b, 0xde, 0x2b, - 0xee, 0x3c, 0xf6, 0x4f, 0x80, 0xde, 0xc, 0x7e, 0x9a, 0x74, - 0xa9, 0xfe, 0xed, 0xd4, 0x9f, 0xd5, 0xaa, 0xac, 0x9f, 0xb3, - 0xd7, 0x84, 0x9f, 0xee, 0xa5, 0xe4, 0x7f, 0xee, 0xdc, 0x7f, - 0x88, 0xaf, 0x4c, 0xa2, 0xb0, 0x79, 0x66, 0x9, 0xef, 0x46, - 0x3f, 0x72, 0x23, 0xea, 0xf4, 0x7f, 0x95, 0x18, 0x7e, 0xf, - 0xf0, 0x85, 0x97, 0x82, 0x74, 0x93, 0xa7, 0x58, 0x3c, 0xcf, - 0x6f, 0xe6, 0x34, 0xa3, 0xcf, 0x60, 0xc4, 0x13, 0x8c, 0x8c, - 0x80, 0x38, 0xe2, 0xb7, 0x28, 0xa2, 0xbb, 0xe9, 0xd3, 0x8d, - 0x28, 0xa8, 0x41, 0x59, 0x23, 0x68, 0xc5, 0x45, 0x59, 0x6c, - 0x14, 0x51, 0x45, 0x68, 0x50, 0x57, 0x25, 0xf1, 0x4b, 0xc3, - 0xfa, 0x9f, 0x8a, 0x7c, 0x1f, 0x73, 0xa5, 0xe9, 0x46, 0x21, - 0x3c, 0xee, 0x81, 0xcc, 0xce, 0x50, 0x6c, 0x7, 0x27, 0x9c, - 0x1f, 0x41, 0x5d, 0x6d, 0x15, 0x8d, 0x6a, 0x51, 0xaf, 0x4e, - 0x54, 0xa5, 0xb3, 0x56, 0x22, 0x71, 0x53, 0x8b, 0x8b, 0xea, - 0x7c, 0xb5, 0x2f, 0xc0, 0xf, 0x18, 0x47, 0xd2, 0xd6, 0xda, - 0x4f, 0xf7, 0x2e, 0x17, 0xfa, 0xe2, 0xa9, 0xcb, 0xf0, 0x47, - 0xc6, 0x71, 0xff, 00, 0xcc, 0x1f, 0x7f, 0xfb, 0xb3, 0xc7, - 0xff, 00, 0xc5, 0x57, 0xd6, 0x34, 0x57, 0xcb, 0xcb, 0x86, - 0x30, 0x4f, 0x69, 0x49, 0x7c, 0xd7, 0xf9, 0x1e, 0x7b, 0xcb, - 0xe9, 0x77, 0x67, 0xc8, 0x53, 0x7c, 0x25, 0xf1, 0x7c, 0x7, - 0xe6, 0xd0, 0x6e, 0x8f, 0xfb, 0x9b, 0x5b, 0xf9, 0x1a, 0xa3, - 0x3f, 0xc3, 0xef, 0x13, 0x5b, 0xff, 00, 0xac, 0xd0, 0x75, - 0x1, 0xf4, 0xb7, 0x63, 0xfc, 0x85, 0x7d, 0x97, 0x45, 0x61, - 0x2e, 0x16, 0xc3, 0x7d, 0x9a, 0x92, 0xfc, 0x3f, 0xc8, 0x87, - 0x97, 0x43, 0xa4, 0x99, 0xe7, 0xdf, 0x3, 0xbc, 0x37, 0x2f, - 0x87, 0x7c, 0xb, 0xf, 0xda, 0x61, 0x78, 0x2e, 0xee, 0xe5, - 0x79, 0xe4, 0x49, 0x14, 0xab, 0x2f, 0x3b, 0x54, 0x10, 0x7a, - 0x70, 0xa0, 0xfe, 0x35, 0xe8, 0x34, 0x51, 0x5f, 0x59, 0x86, - 0xa1, 0x1c, 0x35, 0x18, 0xd1, 0x8e, 0xd1, 0x56, 0x3d, 0x2a, - 0x70, 0x54, 0xe0, 0xa0, 0xba, 0x5, 0x14, 0x51, 0x5d, 0x26, - 0x81, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x6, 0x57, - 0x88, 0xfc, 0x33, 0xa6, 0xf8, 0xb3, 0x4d, 0x7b, 0x1d, 0x4e, - 0xd9, 0x6e, 0x20, 0x6e, 0x46, 0x78, 0x64, 0x3e, 0xaa, 0x7a, - 0x83, 0x5f, 0x3a, 0xf8, 0xef, 0xe0, 0x66, 0xb1, 0xe1, 0x97, - 0x96, 0xe7, 0x4d, 0x56, 0xd5, 0xb4, 0xd1, 0xc8, 0x31, 0x8c, - 0xcc, 0x83, 0xfd, 0xa5, 0x1d, 0x7e, 0xa3, 0xf2, 0x15, 0xf4, - 0xfd, 0x15, 0xe3, 0xe3, 0xf2, 0xac, 0x3e, 0x60, 0xbf, 0x78, - 0xad, 0x2e, 0xeb, 0x7f, 0xf8, 0x27, 0x2d, 0x6c, 0x34, 0x2b, - 0xfc, 0x5b, 0xf7, 0x3e, 0x15, 0x20, 0xa9, 0x20, 0x8c, 0x11, - 0xc1, 0x7, 0xb5, 0x25, 0x7d, 0x89, 0xe2, 0x7f, 0x86, 0xde, - 0x1e, 0xf1, 0x70, 0x63, 0x7f, 0xa7, 0x47, 0xe7, 0x9f, 0xf9, - 0x78, 0x87, 0xe4, 0x90, 0x7e, 0x23, 0xaf, 0xe3, 0x9a, 0xf3, - 0x2d, 0x6b, 0xf6, 0x66, 0x53, 0xb9, 0xb4, 0x9d, 0x64, 0x8f, - 0x48, 0xaf, 0x23, 0xcf, 0xfe, 0x3c, 0xbf, 0xe1, 0x5f, 0x5, - 0x89, 0xe1, 0xbc, 0x65, 0x17, 0x7a, 0x56, 0x9a, 0xfb, 0x9f, - 0xdc, 0xff, 00, 0xcc, 0xf1, 0xaa, 0x60, 0x2a, 0xc7, 0xe1, - 0xd4, 0xf0, 0x8a, 0x2b, 0xd0, 0x35, 0x3f, 0x81, 0x5e, 0x30, - 0xd3, 0xdc, 0x84, 0xb0, 0x8e, 0xf5, 0x7, 0xf1, 0xdb, 0x4c, - 0xa7, 0xf4, 0x62, 0xf, 0xe9, 0x58, 0x57, 0x3f, 0xe, 0x3c, - 0x53, 0x68, 0x71, 0x26, 0x81, 0x7f, 0xff, 00, 00, 0x81, - 0x9c, 0x7e, 0x99, 0xaf, 0xa, 0xa6, 0x7, 0x15, 0x49, 0xda, - 0x74, 0xa4, 0xbe, 0x4c, 0xe2, 0x74, 0x6a, 0x47, 0x78, 0xb3, - 0x9c, 0xa2, 0xb4, 0xe4, 0xf0, 0xc6, 0xb3, 0x11, 0xc3, 0xe9, - 0x37, 0xca, 0x7d, 0xd, 0xb3, 0xff, 00, 0x85, 0x35, 0x7c, - 0x39, 0xab, 0x31, 0xc0, 0xd2, 0xaf, 0x4f, 0xd2, 0xd9, 0xff, - 00, 0xc2, 0xb9, 0xbd, 0x95, 0x4f, 0xe5, 0x7f, 0x71, 0x1c, - 0xb2, 0xec, 0x67, 0x51, 0x5b, 0xf6, 0xfe, 00, 0xf1, 0x2d, - 0xd1, 0x1e, 0x56, 0x83, 0xa8, 0xb6, 0x7a, 0x13, 0x6c, 0xe0, - 0x7e, 0x64, 0x56, 0xe6, 0x9d, 0xf0, 0x47, 0xc6, 0x3a, 0x83, - 0xa8, 0x3a, 0x5f, 0xd9, 0x50, 0xff, 00, 0x1d, 0xc4, 0xa8, - 0xa0, 0x7e, 0x19, 0x27, 0xf4, 0xae, 0x88, 0x60, 0xb1, 0x35, - 0x3e, 0xa, 0x52, 0x7f, 0x26, 0x5a, 0xa5, 0x52, 0x5b, 0x45, - 0x9c, 0x25, 0x15, 0xee, 0x3a, 0x2f, 0xec, 0xcf, 0x2b, 0x6d, - 0x6d, 0x5b, 0x58, 0x54, 0xf5, 0x8a, 0xce, 0x3c, 0x9f, 0xfb, - 0xe9, 0xbf, 0xc2, 0xbd, 0x2f, 0xc3, 0x1f, 0xa, 0x7c, 0x35, - 0xe1, 0x4d, 0xaf, 0x6b, 0xa7, 0xac, 0xf7, 0x2b, 0xff, 00, - 0x2f, 0x17, 0x5f, 0xbc, 0x7f, 0xc3, 0x3c, 0xf, 0xc0, 0xa, - 0xf7, 0x30, 0xdc, 0x39, 0x8d, 0xac, 0xef, 0x51, 0x28, 0x2f, - 0x3d, 0x5f, 0xdc, 0xbf, 0xe0, 0x1d, 0x94, 0xf0, 0x35, 0x67, - 0xf1, 0x68, 0x7c, 0xfd, 0xe0, 0xbf, 0x83, 0x9a, 0xff, 00, - 0x8c, 0xc, 0x73, 0x18, 0x7f, 0xb3, 0xb4, 0xf6, 0x23, 0x37, - 0x37, 0x20, 0x82, 0x47, 0xaa, 0xaf, 0x56, 0xfd, 0x7, 0xbd, - 0x7d, 0xf, 0xe0, 0x9f, 0x87, 0x3a, 0x37, 0x81, 0x6d, 0xb6, - 0xd8, 0xc1, 0xe6, 0x5d, 0x32, 0xe2, 0x5b, 0xb9, 0x79, 0x91, - 0xff, 00, 0xc0, 0x7b, 0xa, 0xea, 0x68, 0xaf, 0xba, 0xc0, - 0x64, 0xd8, 0x6c, 0x7, 0xbd, 0x15, 0xcd, 0x2e, 0xef, 0xf4, - 0xec, 0x7b, 0x14, 0x30, 0xb4, 0xe8, 0xea, 0xb5, 0x7d, 0xc2, - 0x8a, 0x28, 0xaf, 0x74, 0xec, 0xa, 0xe5, 0x7e, 0x28, 0x6b, - 0xe3, 0xc3, 0x7e, 0x5, 0xd5, 0xae, 0xc3, 0x6d, 0x95, 0xa2, - 0x30, 0xc4, 0x7b, 0xef, 0x7f, 0x94, 0x7e, 0x59, 0xcf, 0xe1, - 0x5d, 0x55, 0x78, 0xc7, 0xed, 0x29, 0x71, 0x76, 0xfa, 0x46, - 0x95, 0x69, 0xd, 0xbc, 0xcf, 0x6d, 0xe6, 0xb4, 0xf3, 0x4a, - 0x88, 0x4a, 0x29, 0x3, 0xa, 0x9, 0xe9, 0xfc, 0x4d, 0xf9, - 0x57, 0x99, 0x99, 0xd7, 0x78, 0x7c, 0x1d, 0x4a, 0x91, 0xde, - 0xda, 0x7c, 0xf4, 0x39, 0xf1, 0x13, 0x70, 0xa5, 0x29, 0x23, - 0xe7, 0xba, 0x28, 0xa2, 0xbf, 0x12, 0x3e, 0x48, 0x28, 0xa2, - 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, - 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0xbb, 0x3f, 0x5, 0x7c, - 0x27, 0xd7, 0xbc, 0x69, 0x2c, 0x4f, 0x15, 0xbb, 0x59, 0x69, - 0xed, 0xc9, 0xbd, 0xb8, 0x5c, 0x2e, 0x3f, 0xd9, 0x1d, 0x5b, - 0xf0, 0xe3, 0xde, 0xb7, 0xa3, 0x42, 0xae, 0x22, 0x6a, 0x9d, - 0x18, 0xb6, 0xfc, 0x8b, 0x84, 0x25, 0x37, 0x68, 0xab, 0xb3, - 0x9c, 0xd0, 0x34, 0x1b, 0xdf, 0x13, 0x6a, 0xd6, 0xfa, 0x76, - 0x9f, 0x17, 0x9d, 0x73, 0x33, 0x60, 0xe, 0xca, 0x3b, 0xb1, - 0x3d, 0x80, 0xf5, 0xaf, 0xae, 0xbc, 0xb, 0xe0, 0xeb, 0x5f, - 0x3, 0xf8, 0x7a, 0xd, 0x3a, 0xdc, 0x6, 0x90, 0xd, 0xf3, - 0xcc, 0x6, 0xc, 0xb2, 0x1e, 0xa7, 0xfa, 0xf, 0x6a, 0x87, - 0xc0, 0xdf, 0xf, 0xb4, 0xbf, 0x1, 0x58, 0x18, 0x2c, 0x50, - 0xc9, 0x71, 0x26, 0x3c, 0xeb, 0xa9, 00, 0xdf, 0x21, 0xfe, - 0x83, 0xd8, 0x57, 0x4f, 0x5f, 0xa9, 0x64, 0xd9, 0x3a, 0xcb, - 0xe3, 0xed, 0x6a, 0xeb, 0x51, 0xfe, 0xb, 0xb7, 0xf9, 0x9f, - 0x43, 0x85, 0xc2, 0xfb, 0x5, 0xcd, 0x2f, 0x88, 0x28, 0xa2, - 0x8a, 0xfa, 0x73, 0xd1, 0xa, 0x28, 0xa2, 0x80, 0x30, 0x7c, - 0x73, 0x37, 0x91, 0xe1, 0x8b, 0xd6, 0xe9, 0xf2, 0xe2, 0xbe, - 0x8, 0xf1, 0xc4, 0xbe, 0x66, 0xbd, 0x72, 0x73, 0xfc, 0x46, - 0xbe, 0xe8, 0xf8, 0x9f, 0x37, 0x93, 0xe1, 0x2b, 0xa3, 0x9a, - 0xf8, 0x2f, 0xc5, 0xd, 0xbf, 0x55, 0xba, 0x6c, 0xff, 00, - 0x11, 0xaf, 0x84, 0xe2, 0x19, 0x7e, 0xfa, 0x9c, 0x4f, 0x88, - 0xe2, 0x49, 0x7b, 0x91, 0x47, 0x8f, 0x7c, 0x59, 0x9f, 0xcb, - 0xd2, 0x64, 0xe7, 0xb1, 0xfe, 0x55, 0xf7, 0x67, 0xfc, 0x13, - 0xa2, 0xc9, 0xad, 0x3f, 0x64, 0xaf, 0x8, 0xbb, 0xc, 0x1b, - 0x89, 0xaf, 0x67, 0xfc, 0xd, 0xd4, 0xa3, 0xfa, 0x57, 0xc0, - 0x5f, 0x19, 0xa6, 0xf2, 0xf4, 0xa9, 0x79, 0xe3, 0x69, 0xaf, - 0xd2, 0x7f, 0xd8, 0xaf, 0x4a, 0x1a, 0x3f, 0xec, 0xaf, 0xf0, - 0xda, 00, 0x41, 0xdf, 0xa5, 0x25, 0xc1, 0xc7, 0xac, 0x8c, - 0xd2, 0x7f, 0xec, 0xd5, 0xed, 0xe5, 0xa, 0xd4, 0x91, 0xe6, - 0xf0, 0x74, 0x7d, 0xda, 0xf3, 0xf3, 0x3d, 0xb2, 0x8a, 0x28, - 0xaf, 0xa0, 0x3f, 0x49, 0x39, 0x5f, 0x8a, 0x1e, 0x30, 0x4f, - 0x2, 0x78, 0x13, 0x56, 0xd6, 0x18, 0xfe, 0xf2, 0x18, 0xb6, - 0xc2, 0x3d, 0x65, 0x6f, 0x95, 0x7, 0xe6, 0x45, 0x7e, 0x7e, - 0xa7, 0x99, 0x77, 0x71, 0x96, 0x26, 0x49, 0xa5, 0x6c, 0xb3, - 0x1e, 0x4b, 0x31, 0x3c, 0x9f, 0xce, 0xbe, 0x93, 0xfd, 0xaf, - 0xfc, 0x64, 0xf, 0xf6, 0x4f, 0x85, 0xa1, 0x3c, 0xff, 00, - 0xc7, 0xf5, 0xc1, 0xf6, 0xe5, 0x50, 0x7f, 0xe8, 0x47, 0xf0, - 0x15, 0xe3, 0xbf, 0x8, 0x3c, 0x2a, 0xde, 0x2d, 0xf1, 0xd6, - 0x9b, 0x69, 0xb4, 0xb4, 0x42, 0x40, 0xf2, 0x7b, 0x28, 0xe6, - 0xbf, 0x3e, 0xce, 0xab, 0x4b, 0x13, 0x8b, 0x8e, 0x1e, 0x1d, - 0x34, 0xf9, 0xb3, 0xf3, 0xbc, 0xe2, 0xa3, 0xc6, 0xe3, 0xe3, - 0x86, 0x86, 0xd1, 0xd3, 0xe6, 0xf7, 0xfd, 0xf, 0xae, 0xfe, - 0x7, 0x78, 0x51, 0x7c, 0x2b, 0xf0, 0xff, 00, 0x4f, 0x8c, - 0xa8, 0x59, 0xe7, 0x5f, 0x36, 0x43, 0x8e, 0xe6, 0xbd, 0x2, - 0xa3, 0xb7, 0x81, 0x2d, 0xa0, 0x8e, 0x14, 0x1b, 0x51, 0x14, - 0x28, 0x3, 0xd0, 0x54, 0x95, 0xf7, 0x54, 0x29, 0x2a, 0x14, - 0xa3, 0x4a, 0x3b, 0x25, 0x63, 0xef, 0xe9, 0x53, 0x54, 0xa1, - 0x18, 0x47, 0x64, 0x14, 0x51, 0x45, 0x6e, 0x6a, 0x7e, 0x70, - 0xff, 00, 0xc1, 0x43, 0xbf, 0xe0, 0x9c, 0x3a, 0xf7, 0xc6, - 0x5f, 0x19, 0x5d, 0x7c, 0x4c, 0xf8, 0x6b, 0xf6, 0x7b, 0x8d, - 0x7a, 0xea, 0x24, 0x1a, 0xae, 0x87, 0x33, 0x88, 0x9a, 0xe9, - 0xd1, 0x42, 0xac, 0xb1, 0x39, 0xf9, 0x77, 0x95, 0x55, 0x52, - 0xad, 0x8c, 0xed, 0x4, 0x1e, 0xb5, 0xf9, 0x9d, 0xe2, 0x4f, - 0xd9, 0xa7, 0xe2, 0xcf, 0x84, 0x2e, 0xe4, 0xb6, 0xd5, 0xfe, - 0x1b, 0x78, 0xaa, 0xce, 0x54, 0xfb, 0xc4, 0xe9, 0x13, 0xba, - 0x7e, 0xe, 0xaa, 0x54, 0xfe, 0x6, 0xbf, 0xa4, 0xfa, 0xe7, - 0xbe, 0x21, 0x78, 0xca, 0xdb, 0xe1, 0xe7, 0x81, 0xb5, 0xef, - 0x13, 0x5e, 0x47, 0x24, 0xd6, 0xfa, 0x55, 0x9c, 0xb7, 0x6d, - 0x14, 0x2a, 0x59, 0xe4, 0xda, 0xa4, 0x84, 0x50, 0x39, 0x2c, - 0xc7, 00, 0x1, 0xdc, 0xd3, 0xb9, 0x2d, 0x5c, 0xfe, 0x63, - 0xef, 0xac, 0x6e, 0x74, 0xcb, 0xb9, 0x6d, 0x6f, 0x2d, 0xe5, - 0xb4, 0xba, 0x85, 0xb6, 0x49, 0x4, 0xe8, 0x51, 0xd1, 0xbd, - 0xa, 0x9e, 0x41, 0xfa, 0xd5, 0x7a, 0xeb, 0x3e, 0x21, 0x5c, - 0x78, 0x93, 0xc5, 0xbe, 0x32, 0xd7, 0x7c, 0x49, 0xae, 0x69, - 0xb7, 0xb0, 0xea, 0x1a, 0xb5, 0xf4, 0xd7, 0xf7, 0x6, 0x68, - 0x1d, 0x70, 0xf2, 0x39, 0x72, 0x39, 0x1d, 0x1, 0x38, 0xaf, - 0xd9, 0xef, 0xf8, 0x27, 0x3f, 0xec, 0xbd, 0xe1, 0xaf, 0x8, - 0x7e, 0xcb, 0x5e, 0x1e, 0xbd, 0xf1, 0x2f, 0x86, 0xf4, 0xcd, - 0x5b, 0x58, 0xf1, 0x29, 0x3a, 0xcc, 0xe7, 0x52, 0xb1, 0x49, - 0x9a, 0x38, 0xe4, 00, 0x42, 0x9f, 0x38, 0x38, 0xc4, 0x6a, - 0xa7, 0x1e, 0xac, 0x69, 0xdc, 0x9b, 0x5c, 0xfc, 0x36, 0xa2, - 0xbf, 0xa4, 0x3d, 0x67, 0xf6, 0x53, 0xf8, 0x37, 0xe2, 0x2, - 0x7f, 0xb4, 0x3e, 0x17, 0xf8, 0x52, 0xe7, 0x3e, 0xba, 0x4c, - 0x23, 0xf9, 0x28, 0xae, 0x53, 0x54, 0xfd, 0x81, 0x7f, 0x67, - 0xbd, 0x5c, 0x62, 0x6f, 0x85, 0x5a, 0xc, 0x5f, 0xf5, 0xeb, - 0x1b, 0xc1, 0xff, 00, 0xa0, 0x30, 0xa5, 0x71, 0xf2, 0x9f, - 0xcf, 0x3d, 0x7d, 0x3f, 0xff, 00, 0x4, 0xe1, 0xf8, 0x2a, - 0x7e, 0x34, 0x7e, 0xd4, 0xfe, 0x18, 0x8e, 0xe2, 0x3, 0x2e, - 0x8f, 0xe1, 0xf6, 0xfe, 0xdc, 0xbe, 0xc8, 0x3b, 0x71, 0x9, - 0x6, 0x25, 0x27, 0xde, 0x53, 0x1f, 0xe0, 0xd, 0x7e, 0xa9, - 0x6a, 0x5f, 0xf0, 0x4c, 0x4f, 0xd9, 0xc3, 0x51, 0x18, 0xff, - 00, 0x84, 00, 0xda, 0xfb, 0xdb, 0x6a, 0x97, 0x69, 0xff, - 00, 0xb5, 0x6b, 0xd0, 0x3e, 00, 0xfe, 0xc8, 0x5f, 0xc, - 0xbf, 0x66, 0x6d, 0x43, 0x59, 0xbd, 0xf0, 0xe, 0x8d, 0x71, - 0xa6, 0xdc, 0xea, 0xd1, 0xc7, 0xd, 0xd3, 0xdc, 0x5e, 0xcb, - 0x72, 0x4a, 0x21, 0x62, 0xa1, 0x7c, 0xc2, 0x76, 0x8c, 0xb1, - 0xce, 0x3a, 0xf1, 0xe9, 0x45, 0xc3, 0x94, 0xf6, 0x7a, 0xfc, - 0xf8, 0xff, 00, 0x82, 0xc6, 0xfc, 0x66, 0x3e, 0x11, 0xf8, - 0x31, 0xa1, 0x7c, 0x3f, 0xb3, 0x98, 0xa5, 0xef, 0x8a, 0x6e, - 0xfc, 0xeb, 0x90, 0xa7, 0x9f, 0xb2, 0x5b, 0x95, 0x62, 0xf, - 0xd6, 0x46, 0x8f, 0xfe, 0xf9, 0x35, 0xfa, 0xf, 0x5f, 0x23, - 0xfe, 0xd6, 0x9f, 0xf0, 0x4f, 0x2d, 0x1b, 0xf6, 0xb2, 0xf1, - 0xd5, 0xaf, 0x8a, 0x35, 0x7f, 0x1c, 0x6b, 0x1a, 0x34, 0xf6, - 0x96, 0x6b, 0x65, 0x6d, 0x65, 0x6f, 0x6f, 0x14, 0x90, 0x44, - 0x80, 0x96, 0x24, 0x3, 0x83, 0x96, 0x66, 0x24, 0xf3, 0xd8, - 0x7a, 0x52, 0x29, 0x9f, 0x83, 0xf4, 0x57, 0xea, 0x9e, 0xa5, - 0xff, 00, 0x4, 0x45, 0xb5, 0x20, 0xfd, 0x83, 0xe2, 0xc4, - 0xca, 0x7b, 0xb, 0x9d, 0x10, 0x1f, 0xd5, 0x66, 0x15, 0xcf, - 0x5d, 0xff, 00, 0xc1, 0x11, 0xbc, 0x42, 0xaa, 0x4d, 0xaf, - 0xc5, 0x6d, 0x32, 0x46, 0xec, 0x26, 0xd1, 0xe4, 0x41, 0xf9, - 0x89, 0x4f, 0xf2, 0xaa, 0xb9, 0x16, 0x67, 0xe6, 0x66, 0x7, - 0xa5, 0x49, 0x14, 0xf2, 0x42, 0x7f, 0x77, 0x23, 0xc7, 0xfe, - 0xeb, 0x11, 0x5f, 0xa2, 0x1a, 0x87, 0xfc, 0x11, 0x57, 0xe2, - 0x44, 0x8, 0x4d, 0x9f, 0x8f, 0x3c, 0x31, 0x74, 0x7b, 0x2c, - 0x91, 0xdc, 0x47, 0xff, 00, 0xb2, 0x1a, 0xe3, 0xf5, 0x4f, - 0xf8, 0x23, 0xd7, 0xc7, 0x5b, 0x32, 0xdf, 0x65, 0xb9, 0xf0, - 0xb5, 0xfa, 0x8e, 0x9e, 0x5e, 0xa4, 0xe8, 0x4f, 0xfd, 0xf5, - 0x10, 0xa2, 0xe1, 0x66, 0x7c, 0x69, 0xa6, 0xf8, 0xcf, 0xc4, - 0x1a, 0x3b, 0x87, 0xb0, 0xd7, 0x75, 0x3b, 0x17, 0x1d, 0x1a, - 0xda, 0xf2, 0x48, 0xcf, 0xe8, 0xc2, 0xba, 0x9d, 0x3f, 0xf6, - 0x87, 0xf8, 0xa7, 0xa5, 0x38, 0x6b, 0x4f, 0x89, 0x1e, 0x2c, - 0x84, 0x8e, 0x9b, 0x75, 0xab, 0x9c, 0xf, 0xc3, 0x7d, 0x7b, - 0xce, 0xa5, 0xff, 00, 0x4, 0xab, 0xfd, 0xa2, 0x74, 0xf0, - 0x4a, 0x78, 0x5b, 0x4f, 0xbd, 0x3, 0xfe, 0x7d, 0x75, 0x68, - 0xe, 0x7f, 0xef, 0xa6, 0x15, 0xc9, 0xea, 0x7f, 0xf0, 0x4e, - 0xbf, 0xda, 0x27, 0x4a, 0x4, 0xbf, 0xc3, 0x2d, 0x46, 0x75, - 0x1d, 0xed, 0xae, 0x2d, 0xe5, 0xfd, 0x16, 0x4c, 0xd0, 0x16, - 0x67, 0x33, 0x61, 0xfb, 0x69, 0x7c, 0x76, 0xd3, 0x48, 0xf2, - 0x3e, 0x2b, 0xf8, 0xa7, 0x8e, 0x82, 0x4d, 0x41, 0xe4, 0x1f, - 0xf8, 0xf6, 0x6b, 0xa1, 0xb4, 0xff, 00, 0x82, 0x86, 0xfe, - 0xd1, 0x56, 0x61, 0x44, 0x7f, 0x14, 0xb5, 0x56, 0x3, 0xfe, - 0x7a, 0xc1, 0x6f, 0x27, 0xfe, 0x85, 0x19, 0xae, 0x67, 0x53, - 0xfd, 0x8d, 0xfe, 0x39, 0x69, 0x19, 0xfb, 0x4f, 0xc2, 0x9f, - 0x15, 0xe0, 0x75, 0x31, 0x69, 0x92, 0x4b, 0xff, 00, 0xa0, - 0x3, 0x5c, 0xdd, 0xd7, 0xec, 0xf7, 0xf1, 0x4a, 0xc7, 0x3f, - 0x68, 0xf8, 0x6f, 0xe2, 0xd8, 0x71, 0xd7, 0x7e, 0x87, 0x72, - 0x3f, 0xf6, 0x4a, 0x3, 0x53, 0xda, 0x2c, 0xbf, 0xe0, 0xa7, - 0x9f, 0xb4, 0x7d, 0x96, 0x3f, 0xe2, 0xbf, 0x17, 00, 0x76, - 0x9f, 0x4a, 0xb4, 0x6c, 0xff, 00, 0xe4, 0x2a, 0xea, 0x34, - 0xff, 00, 0xf8, 0x2b, 0x87, 0xed, 0x5, 0x64, 0x81, 0x65, - 0xd4, 0x3c, 0x3f, 0x7d, 0x8e, 0xf7, 0x1a, 0x4a, 0x82, 0x7f, - 0xef, 0x96, 0x5a, 0xf9, 0x4e, 0xf7, 0xe1, 0xaf, 0x8b, 0xf4, - 0xd0, 0x4d, 0xdf, 0x85, 0x75, 0xbb, 0x50, 0x3a, 0xf9, 0xfa, - 0x74, 0xc9, 0x8f, 0xcd, 0x6b, 0xe, 0xeb, 0x4f, 0xba, 0xb2, - 0x38, 0xb8, 0xb6, 0x9a, 0x3, 0xe9, 0x2c, 0x65, 0x7f, 0x9d, - 0x1, 0x76, 0x7d, 0xe7, 0xa5, 0x7f, 0xc1, 0x66, 0x3e, 0x30, - 0xda, 0x15, 0xfb, 0x6f, 0x87, 0x7c, 0x2b, 0x7e, 0x7, 0x5f, - 0xf4, 0x79, 0xa2, 0xcf, 0xe5, 0x25, 0x75, 0x76, 0x1f, 0xf0, - 0x5b, 0x3f, 0x18, 0xc5, 0x8f, 0xb6, 0xfc, 0x33, 0xd0, 0xee, - 0x3d, 0x7c, 0x8d, 0x42, 0x68, 0xbf, 0x9a, 0xb5, 0x7e, 0x6c, - 0xe4, 0x52, 0xd1, 0x60, 0xbb, 0x3f, 0x53, 0x74, 0xef, 0xf8, - 0x2d, 0xd0, 0x38, 0xfb, 0x7f, 0xc2, 0x82, 0xbe, 0xbf, 0x66, - 0xd6, 0xb3, 0xfc, 0xe1, 0x15, 0xd2, 0xd9, 0xff, 00, 0xc1, - 0x6c, 0xfc, 0x1a, 0xe0, 0x7d, 0xaf, 0xe1, 0xae, 0xbb, 0x11, - 0xef, 0xe4, 0xdf, 0x42, 0xff, 00, 0xcc, 0x2d, 0x7e, 0x46, - 0xd1, 0x45, 0x82, 0xec, 0xfd, 0x8f, 0xb1, 0xff, 00, 0x82, - 0xd2, 0xfc, 0x29, 0x9b, 0x2, 0xe7, 0xc1, 0x9e, 0x2e, 0xb6, - 0xf5, 0x2b, 0x1d, 0xb3, 0x8f, 0xfd, 0x1c, 0x2b, 0xa4, 0xd3, - 0xbf, 0xe0, 0xb0, 0xff, 00, 0x2, 0xef, 0x31, 0xf6, 0x9b, - 0x5f, 0x14, 0xd8, 0x13, 0xff, 00, 0x3d, 0x74, 0xd4, 0x70, - 0x3f, 0xef, 0x89, 0xd, 0x7e, 0x26, 0x51, 0x45, 0x87, 0xcc, - 0xcf, 0xdd, 0xdd, 0x3f, 0xfe, 0xa, 0xad, 0xfb, 0x3a, 0x5f, - 0x85, 0xdd, 0xe2, 0xbb, 0xfb, 0x46, 0x3f, 0xc3, 0x71, 0xa3, - 0xdc, 0x8c, 0x7e, 0x21, 0x8, 0xae, 0xb7, 0x4b, 0xff, 00, - 0x82, 0x89, 0x7e, 0xce, 0xfa, 0xaa, 0x6, 0x4f, 0x89, 0xba, - 0x6d, 0xb9, 0x3f, 0xc3, 0x75, 0xc, 0xd1, 0x1f, 0xd5, 0x2b, - 0xf9, 0xf5, 0xa2, 0x8b, 0x7, 0x31, 0xfd, 0x18, 0x69, 0xdf, - 0xb6, 0x8f, 0xc0, 0x8d, 0x51, 0x41, 0x83, 0xe2, 0xcf, 0x84, - 0xf9, 0xe8, 0x25, 0xd4, 0xe3, 0x88, 0xfe, 0x4e, 0x41, 0xae, - 0xa3, 0x4a, 0xfd, 0xa0, 0xbe, 0x18, 0x6b, 0x60, 0x7d, 0x83, - 0xe2, 0x1f, 0x85, 0xee, 0xf3, 0xff, 00, 0x3c, 0xb5, 0x7b, - 0x73, 0xff, 00, 0xb3, 0xd7, 0xf3, 0x4f, 0x45, 0x2b, 0x7, - 0x31, 0xfd, 0x3c, 0xd9, 0xf8, 0xff, 00, 0xc2, 0xfa, 0x81, - 0xc5, 0xaf, 0x89, 0x34, 0x8b, 0x92, 0x7b, 0x43, 0x7d, 0x13, - 0xff, 00, 0x26, 0xad, 0x58, 0x75, 0x5b, 0x2b, 0x83, 0x88, - 0xaf, 0x2d, 0xe4, 0x3e, 0x89, 0x2a, 0x9f, 0xeb, 0x5f, 0xcb, - 0x86, 0x7, 0xa5, 0x5a, 0xb4, 0xd5, 0x2f, 0x34, 0xf6, 0x6, - 0xd6, 0xee, 0x7b, 0x62, 0x3a, 0x18, 0x65, 0x64, 0xfe, 0x46, - 0x8b, 0xf, 0x98, 0xfe, 0xa3, 0x83, 0x3, 0xd0, 0x83, 0x4b, - 0x5f, 0xcc, 0x86, 0x9f, 0xf1, 0x5b, 0xc6, 0xda, 0x49, 0x6, - 0xc7, 0xc6, 0x3a, 0xfd, 0x91, 0x1d, 0xd, 0xbe, 0xa9, 0x3c, - 0x7f, 0xc9, 0xeb, 0xa8, 0xd2, 0xff, 00, 0x6a, 0x6f, 0x8c, - 0x5a, 0x2c, 0x8a, 0xf6, 0x9f, 0x14, 0x3c, 0x5a, 0x85, 0x7a, - 0x6f, 0xd6, 0x27, 0x90, 0x7e, 0x4c, 0xc4, 0x51, 0x60, 0xe6, - 0x3f, 0xa4, 0x7a, 0x2b, 0xf9, 0xe6, 0xb3, 0xfd, 0xbf, 0x3f, - 0x68, 0x4b, 0x12, 0xbe, 0x5f, 0xc5, 0x5d, 0x71, 0xb6, 0xf4, - 0x12, 0x98, 0xe4, 0x1f, 0xf8, 0xf2, 0x1a, 0xe8, 0xec, 0x7f, - 0xe0, 0xa6, 0x9f, 0xb4, 0x7d, 0x96, 0xd1, 0xff, 00, 0xb, - 0xd, 0xee, 0x15, 0x7b, 0x4f, 0xa6, 0x5a, 0x36, 0x7e, 0xa7, - 0xca, 0xcd, 0x16, 0xe, 0x64, 0x7e, 0xfb, 0x51, 0x5f, 0x86, - 0x76, 0x3f, 0xf0, 0x56, 0xcf, 0xda, 0x12, 0xce, 0x35, 0x57, - 0xd5, 0x34, 0x2b, 0xbc, 0x7f, 0x14, 0xfa, 0x42, 0x64, 0xff, - 00, 0xdf, 0x24, 0x56, 0xdd, 0x97, 0xfc, 0x16, 0x33, 0xe3, - 0xad, 0xb6, 0x4, 0xda, 0x7f, 0x84, 0x2e, 0xfd, 0xe4, 0xd3, - 0x66, 0x53, 0xff, 00, 0x8e, 0xce, 0x28, 0xb0, 0x5d, 0x1f, - 0xb6, 0x34, 0x57, 0xe3, 0xb6, 0x9d, 0xff, 00, 0x5, 0xa8, - 0xf8, 0x9b, 0x2, 0xa8, 0xbd, 0xf0, 0x3f, 0x85, 0xee, 0xdb, - 0xb9, 0x8d, 0xae, 0x22, 0xcf, 0xfe, 0x3e, 0x6b, 0xa5, 0xd3, - 0xff, 00, 0xe0, 0xb7, 0x1a, 0xfc, 0x78, 0xfb, 0x77, 0xc2, - 0xbd, 0x36, 0x7f, 0xfa, 0xf7, 0xd5, 0xe4, 0x8f, 0xf9, 0xc4, - 0xd4, 0x58, 0x77, 0x47, 0xeb, 0x25, 0x15, 0xf9, 0x8b, 0xa5, - 0x7f, 0xc1, 0x6e, 0x34, 0x77, 0x51, 0xfd, 0xa5, 0xf0, 0xae, - 0xfa, 0x16, 0xef, 0xf6, 0x5d, 0x5d, 0x24, 0x1f, 0xf8, 0xf4, - 0x6b, 0x5d, 0xd, 0xaf, 0xfc, 0x16, 0xbf, 0xe1, 0xe3, 0x91, - 0xf6, 0x9f, 0x87, 0xbe, 0x27, 0x88, 0x7a, 0xc5, 0x35, 0xb3, - 0xff, 00, 0x37, 0x5a, 0x2, 0xe8, 0xfd, 0x19, 0xa2, 0xbe, - 0x1, 0xd3, 0x7f, 0xe0, 0xb3, 0xbf, 0x7, 0xae, 0xdc, 0xb, - 0xaf, 0xc, 0x78, 0xc2, 0xc4, 0x7f, 0x79, 0xed, 0xad, 0x9c, - 0x7f, 0xe3, 0xb3, 0x1a, 0xeb, 0x74, 0xef, 0xf8, 0x2b, 0x87, - 0xec, 0xfb, 0x79, 0x8f, 0x3b, 0x50, 0xd7, 0xac, 0x49, 0xff, - 00, 0x9e, 0xfa, 0x4b, 0x9c, 0x7f, 0xdf, 0x24, 0xd2, 0xb, - 0xa3, 0xed, 0x1a, 0x2b, 0xe5, 0x5d, 0x33, 0xfe, 0xa, 0x7d, - 0xfb, 0x39, 0xea, 0x78, 0x1f, 0xf0, 0x9d, 0x3d, 0xa1, 0x3d, - 0xae, 0xb4, 0xcb, 0x94, 0xfd, 0x7c, 0xbc, 0x57, 0x57, 0xa6, - 0xfe, 0xdf, 0x1f, 0xb3, 0xee, 0xa8, 0x7, 0x95, 0xf1, 0x4f, - 0x42, 0x8c, 0x9e, 0xd7, 0x12, 0x3c, 0x47, 0xff, 00, 0x1e, - 0x51, 0x40, 0xcf, 0x7f, 0xa2, 0xbc, 0x9b, 0x4e, 0xfd, 0xad, - 0x7e, 0xb, 0x6a, 0xc4, 0xb, 0x5f, 0x8a, 0x7e, 0x13, 0x90, - 0x9e, 0xcd, 0xab, 0xc2, 0xa7, 0xf5, 0x61, 0x5d, 0x4d, 0x87, - 0xc6, 0x4f, 00, 0xea, 0xb8, 0xfb, 0x17, 0x8d, 0xbc, 0x3b, - 0x77, 0x9e, 0x9e, 0x4e, 0xab, 0x3, 0x67, 0xf2, 0x7a, 00, - 0xec, 0x28, 0xac, 0x9b, 0x7f, 0x17, 0x68, 0x57, 0x78, 0xf2, - 0x35, 0xad, 0x3a, 0x6c, 0xff, 00, 0xcf, 0x3b, 0xa8, 0xdb, - 0xf9, 0x1a, 0xd0, 0x8a, 0xf2, 0x9, 0xff, 00, 0xd5, 0xcf, - 0x1c, 0x9f, 0xee, 0xb8, 0x34, 0x1, 0x35, 0x14, 0x51, 0x40, - 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, - 0x51, 0x40, 0x5, 0x23, 0x28, 0x60, 0x41, 00, 0x83, 0xd4, - 0x1a, 0x5a, 0x28, 0x3, 0x97, 0xd5, 0xbe, 0x19, 0x78, 0x5b, - 0x5b, 0x2c, 0xd7, 0x5a, 0x25, 0xae, 0xf6, 0xeb, 0x24, 0x4b, - 0xe5, 0x31, 0xfc, 0x57, 0x15, 0xc5, 0xea, 0xff, 00, 0xb3, - 0x7e, 0x83, 0x76, 0x4b, 0x58, 0x5e, 0xdd, 0xd8, 0x1e, 0xca, - 0xc4, 0x4a, 0xbf, 0xae, 0xf, 0xeb, 0x5e, 0xb9, 0x45, 0x79, - 0xd5, 0xb2, 0xec, 0x1e, 0x23, 0xf8, 0x94, 0x93, 0xf9, 0x59, - 0xfd, 0xe8, 0xc2, 0x74, 0x29, 0x4f, 0xe2, 0x8a, 0x3e, 0x7b, - 0xbd, 0xfd, 0x99, 0xb5, 0x38, 0xf2, 0x6d, 0x35, 0x9b, 0x59, - 0x87, 0x61, 0x34, 0x4d, 0x1f, 0xf2, 0xdd, 0x58, 0x17, 0xbf, - 0xb3, 0xff, 00, 0x8b, 0xad, 0x9, 0xf2, 0xe0, 0xb5, 0xbb, - 0x3, 0xbc, 0x33, 0x8f, 0xfd, 0x9b, 0x15, 0xf5, 0x1d, 0x15, - 0xe4, 0x54, 0xe1, 0xcc, 0x4, 0xfe, 0x14, 0xd7, 0xa3, 0xff, - 00, 0x3b, 0x9c, 0xb2, 0xc0, 0x51, 0x7b, 0x68, 0x7c, 0x87, - 0x3f, 0xc2, 0x3f, 0x18, 0x5b, 0xe7, 0x76, 0x83, 0x72, 0xc3, - 0xd5, 0xa, 0xb7, 0xf2, 0x35, 0x49, 0xfe, 0x1d, 0x78, 0xa2, - 0x33, 0xcf, 0x87, 0xf5, 0x1f, 0xc2, 0xd9, 0xcf, 0xf4, 0xaf, - 0xb2, 0x68, 0xae, 0x27, 0xc2, 0xd8, 0x6e, 0x95, 0x25, 0xf8, - 0x7f, 0x91, 0x93, 0xcb, 0xa1, 0xd2, 0x4c, 0xf8, 0xd0, 0x7c, - 0x3d, 0xf1, 0x3b, 0x1e, 0x3c, 0x3f, 0xa9, 0x7f, 0xe0, 0x2b, - 0xff, 00, 0x85, 0x5c, 0xb7, 0xf8, 0x53, 0xe2, 0xeb, 0xaf, - 0xb9, 0xa0, 0x5d, 0x8f, 0xfa, 0xe8, 0x2, 0x7f, 0xe8, 0x44, - 0x57, 0xd7, 0xf4, 0x50, 0xb8, 0x5b, 0xf, 0xd6, 0xa4, 0xbf, - 0xf, 0xf2, 0x5, 0x97, 0x43, 0xac, 0x99, 0xf2, 0xe6, 0x9f, - 0xf0, 0x3, 0xc5, 0xb7, 0xa4, 0x79, 0xb0, 0x5b, 0x59, 0x2f, - 0xac, 0xf3, 0x83, 0xfa, 0x2e, 0x6b, 0xa9, 0xd2, 0xbf, 0x66, - 0x59, 0x4b, 0x2b, 0x6a, 0x5a, 0xda, 0x2a, 0xf7, 0x4b, 0x58, - 0x72, 0x7f, 0xef, 0xa6, 0x3f, 0xd2, 0xbd, 0xea, 0x8a, 0xef, - 0xa5, 0xc3, 0xb8, 0xa, 0x7a, 0xca, 0x2e, 0x5e, 0xaf, 0xfc, - 0xac, 0x6d, 0x1c, 0xd, 0x18, 0xee, 0xae, 0x71, 0x5e, 0x1e, - 0xf8, 0x3d, 0xe1, 0x6f, 0xe, 0xec, 0x78, 0xf4, 0xd5, 0xbc, - 0xb8, 0x5e, 0x7c, 0xeb, 0xc3, 0xe6, 0x1c, 0xfa, 0xe0, 0xf0, - 0x3f, 0x1, 0x5d, 0xa0, 0x1, 0x40, 00, 0x60, 0xe, 0x80, - 0x52, 0xd1, 0x5e, 0xfd, 0x1a, 0x14, 0xb0, 0xf1, 0xe5, 0xa5, - 0x15, 0x15, 0xe4, 0x8e, 0xd8, 0xc2, 0x30, 0x56, 0x8a, 0xb0, - 0x51, 0x45, 0x15, 0xb9, 0x61, 0x45, 0x14, 0x50, 0x1, 0x45, - 0x14, 0x50, 0x7, 0x1, 0xf1, 0xa6, 0xef, 0xec, 0xde, 0x11, - 0x7f, 0x73, 0x5f, 0xa, 0x6b, 0x72, 0x79, 0x97, 0x97, 0xc, - 0x7b, 0xb1, 0xaf, 0xb5, 0x7f, 0x68, 0x1b, 0x9f, 0x27, 0xc3, - 0x8, 0x9e, 0xb9, 0x35, 0xf1, 0x1e, 0xa8, 0xfb, 0xa4, 0x94, - 0xfa, 0xb1, 0xaf, 0xce, 0xf3, 0xd9, 0x73, 0x63, 0x23, 0x1e, - 0xc8, 0xfc, 0xfb, 0x89, 0x67, 0xef, 0x24, 0x78, 0x67, 0xc7, - 0x2b, 0x8d, 0x9a, 0x5c, 0xe3, 0xfd, 0x93, 0xfc, 0xab, 0xf5, - 0x97, 0xf6, 0x7f, 0xd2, 0x46, 0x85, 0xf0, 0x37, 0xc0, 0x16, - 0xb, 0x9c, 0x41, 0xa1, 0x59, 0xaf, 0x3e, 0xbe, 0x4a, 0xe6, - 0xbf, 0x22, 0xfe, 0x38, 0x39, 0x9a, 0x23, 0xa, 0xe5, 0x9a, - 0x46, 0x8, 00, 0xea, 0x49, 0xe2, 0xbf, 0x68, 0x3c, 0x33, - 0x62, 0x9a, 0x5f, 0x86, 0xf4, 0xab, 0x38, 0xc6, 0xd4, 0xb7, - 0xb4, 0x8a, 0x25, 0x7, 0xb0, 0x54, 0x3, 0xfa, 0x57, 0xd5, - 0xe5, 0x6a, 0xd4, 0x51, 0x5c, 0x1d, 0x1b, 0x61, 0x27, 0x2e, - 0xf2, 0x66, 0x9d, 0x14, 0x51, 0x5e, 0xc9, 0xf7, 0xe7, 0xe7, - 0xef, 0xc5, 0xdf, 0x13, 0x3f, 0x8b, 0x3e, 0x26, 0xf8, 0x82, - 0xf9, 0xf8, 0xb, 0x72, 0x6d, 0x90, 0x7a, 0x2c, 0x7f, 0x20, - 0xff, 00, 0xd0, 0x49, 0xfc, 0x6b, 0xdc, 0xbf, 0x64, 0xbf, - 0x8, 0xf9, 0x76, 0xd7, 0xda, 0xe4, 0xa9, 0xc9, 0x3e, 0x54, - 0x44, 0xfe, 0xb5, 0xf3, 0x7d, 0xfc, 0x6f, 0xa9, 0xf8, 0xdf, - 0x58, 0x86, 0x31, 0xba, 0x49, 0x35, 0x3b, 0x85, 00, 0x7a, - 0xf9, 0xad, 0x5f, 0x7c, 0x7c, 0x35, 0xf0, 0xd2, 0x78, 0x53, - 0xc1, 0x9a, 0x6d, 0x82, 0xa0, 0x46, 0x58, 0x83, 0x3f, 0xfb, - 0xc4, 0x57, 0xc1, 0x65, 0x94, 0x25, 0x5f, 0x30, 0x95, 0x59, - 0xfd, 0x9b, 0xbf, 0x9b, 0x3f, 0x39, 0xe1, 0xfa, 0x6f, 0x17, - 0x89, 0x9e, 0x2a, 0x7d, 0x2e, 0xfe, 0x6c, 0xea, 0x28, 0xa2, - 0x8a, 0xfb, 0xd3, 0xf4, 0x60, 0xa2, 0x8a, 0x28, 00, 0xa2, - 0x9a, 0xe8, 0x1c, 0x60, 0xe7, 0xd7, 0x83, 0x8a, 0x5c, 0x7b, - 0x9a, 00, 0xaf, 0x73, 0xa6, 0xda, 0x5e, 0x29, 0x17, 0x16, - 0xb0, 0xce, 0xf, 0x69, 0x23, 0xd, 0xfc, 0xc5, 0x4f, 0x1c, - 0x49, 0xc, 0x6b, 0x1c, 0x68, 0xb1, 0xc6, 0x80, 0x2a, 0xaa, - 0x8c, 00, 0x7, 0x40, 0x5, 0x3a, 0x8a, 00, 0x28, 0xa2, - 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, - 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, - 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x46, 0x50, 0xc3, 0x4, - 0x2, 0x3d, 0xd, 0x67, 0x5e, 0x78, 0x6b, 0x48, 0xd4, 0x3f, - 0xe3, 0xeb, 0x4a, 0xb2, 0xb9, 0xff, 00, 0xae, 0xd6, 0xe8, - 0xff, 00, 0xcc, 0x56, 0x95, 0x14, 0x1, 0xc5, 0x6a, 0x9f, - 0x4, 0xfe, 0x1e, 0xeb, 0x60, 0x8d, 0x43, 0xc0, 0xde, 0x1c, - 0xbd, 0xdd, 0xd7, 0xcf, 0xd2, 0xa0, 0x7c, 0xfe, 0x6b, 0x5c, - 0xa6, 0xa7, 0xfb, 0x1f, 0x7c, 0x10, 0xd6, 0x14, 0x8b, 0xbf, - 0x85, 0x5e, 0x13, 0x70, 0x7a, 0xec, 0xd2, 0xa2, 0x4f, 0xfd, - 0x4, 0xa, 0xf6, 0xa, 0x28, 0x3, 0xe7, 0x4d, 0x57, 0xfe, - 0x9, 0xe5, 0xfb, 0x3c, 0x6a, 0xe0, 0x89, 0x7e, 0x18, 0x69, - 0x50, 0xe7, 0xfe, 0x7d, 0x64, 0x9a, 0xf, 0xfd, 0x1, 0xc5, - 0x72, 0xb7, 0x9f, 0xf0, 0x4a, 0xff, 00, 0xd9, 0xbe, 0xe8, - 0xb1, 0x5f, 0x5, 0xdd, 0xdb, 0x13, 0xff, 00, 0x3c, 0x75, - 0xab, 0xce, 0x3f, 0x3, 0x29, 0x15, 0xf5, 0xad, 0x14, 0x1, - 0xf1, 0x76, 0xa3, 0xff, 00, 0x4, 0x8e, 0xfd, 0x9f, 0x6f, - 0x50, 0xac, 0x1a, 0x7e, 0xbf, 0xa7, 0x9f, 0xef, 0x41, 0xab, - 0xbb, 0x1f, 0xfc, 0x7c, 0x35, 0x72, 0xba, 0x97, 0xfc, 0x11, - 0x97, 0xe0, 0xe5, 0xca, 0x9f, 0xb1, 0x78, 0x93, 0xc5, 0xd6, - 0x4d, 0xfe, 0xd5, 0xd5, 0xbc, 0x80, 0x7e, 0x70, 0x8a, 0xfb, - 0xee, 0x8a, 0x5, 0x64, 0x7e, 0x6d, 0xea, 0x1f, 0xf0, 0x44, - 0xdf, 0x5, 0xbc, 0x6d, 0xf6, 0x1f, 0x89, 0x1a, 0xf4, 0x2f, - 0xfc, 0x3f, 0x68, 0xb3, 0x82, 0x40, 0x3f, 0x2d, 0xb5, 0xc8, - 0xea, 0x1f, 0xf0, 0x44, 0x5b, 0x80, 0x18, 0xd8, 0xfc, 0x58, - 0x8c, 0x9f, 0xe1, 0x5b, 0x8d, 0x10, 0x8f, 0xcc, 0x89, 0xbf, - 0xa5, 0x7e, 0xa9, 0x51, 0x4c, 0x2c, 0x8f, 0xc8, 0x5b, 0xff, - 00, 0xf8, 0x22, 0x7f, 0x8e, 0xe2, 0xc, 0x6c, 0xfe, 0x22, - 0xf8, 0x7e, 0xe3, 0xfb, 0xa2, 0x6b, 0x49, 0xe3, 0xcf, 0xe5, - 0xba, 0xb9, 0x1d, 0x43, 0xfe, 0x8, 0xd9, 0xf1, 0xba, 0xd9, - 0x9b, 0xec, 0xba, 0xcf, 0x83, 0xef, 0x10, 0x74, 0xcd, 0xfc, - 0xf1, 0xb1, 0xfc, 0xc, 0x18, 0xfd, 0x6b, 0xf6, 0xa2, 0x8a, - 0x2e, 0x16, 0x47, 0xe1, 0xd5, 0xd7, 0xfc, 0x12, 0x2b, 0xf6, - 0x81, 0xb7, 0x56, 0x29, 0x69, 0xe1, 0xcb, 0x9c, 0x76, 0x8b, - 0x56, 0x19, 0x3f, 0xf7, 0xd2, 0xa, 0xe6, 0x35, 0x1f, 0xf8, - 0x25, 0xef, 0xed, 0x1b, 0x60, 0x5b, 0x6f, 0x81, 0xa2, 0xbc, - 0xb, 0xde, 0xdb, 0x55, 0xb5, 0x39, 0xfa, 0x66, 0x40, 0x6b, - 0xf7, 0xb2, 0x8a, 0x2e, 0x2e, 0x54, 0x7f, 0x3d, 0x77, 0xdf, - 0xf0, 0x4f, 0xdf, 0xda, 0x1b, 0x4f, 0x24, 0x49, 0xf0, 0xb3, - 0x59, 0x7c, 0x77, 0x80, 0xc5, 0x2f, 0xfe, 0x82, 0xe6, 0xb9, - 0x2d, 0x53, 0xf6, 0x4e, 0xf8, 0xd1, 0xa3, 0xbb, 0x25, 0xd7, - 0xc2, 0xdf, 0x16, 0x23, 0x2f, 0x5f, 0x2f, 0x48, 0x9a, 0x4f, - 0xfd, 0x5, 0x4d, 0x7f, 0x48, 0x34, 0x51, 0x70, 0xe5, 0x3f, - 0x99, 0x4d, 0x47, 0xe1, 0xf, 0x8e, 0xf4, 0x76, 0x2b, 0x7d, - 0xe0, 0xaf, 0x11, 0x59, 0xb0, 0xea, 0x27, 0xd2, 0xa7, 0x4c, - 0x7e, 0x69, 0x5c, 0xf5, 0xe6, 0x8d, 0xa8, 0x69, 0xcc, 0x56, - 0xee, 0xc6, 0xe6, 0xd4, 0x8e, 0xa2, 0x68, 0x59, 0x3f, 0x98, - 0xaf, 0xea, 0x2c, 0x80, 0x7a, 0x8a, 0xad, 0x71, 0xa5, 0x59, - 0x5d, 0xff, 00, 0xaf, 0xb3, 0xb7, 0x9b, 0xfe, 0xba, 0x44, - 0xad, 0xfc, 0xc5, 0x17, 0xe, 0x53, 0xf9, 0x70, 0xc8, 0xf5, - 0xa5, 0xaf, 0xe9, 0xe6, 0xeb, 0xe1, 0xf7, 0x85, 0xaf, 0xb3, - 0xf6, 0x9f, 0xd, 0x69, 0x17, 0x19, 0xeb, 0xe6, 0xd8, 0x44, - 0xd9, 0xfc, 0xd6, 0xb9, 0xcd, 0x4f, 0xf6, 0x78, 0xf8, 0x5b, - 0xac, 0xe7, 0xed, 0xdf, 0xe, 0xbc, 0x2d, 0x73, 0x9e, 0xbe, - 0x66, 0x91, 0x1, 0xcf, 0xfe, 0x39, 0x45, 0xc5, 0xca, 0x7f, - 0x35, 0x34, 0x57, 0xf4, 0x53, 0xa8, 0xfe, 0xc4, 0x7f, 0x1, - 0x75, 0x56, 0x2d, 0x3f, 0xc2, 0x7f, 0xb, 0x86, 0x3d, 0x4c, - 0x36, 0xb, 0x17, 0xfe, 0x83, 0x8a, 0xe5, 0xb5, 0x3f, 0xf8, - 0x26, 0xf7, 0xec, 0xeb, 0xaa, 0x67, 0x77, 0xc3, 0x8b, 0x4b, - 0x62, 0x7f, 0xe7, 0xd6, 0xee, 0xe2, 0x2f, 0xe5, 0x25, 0x17, - 0xe, 0x53, 0xf9, 0xff, 00, 0xa2, 0xbf, 0x75, 0x35, 0x5f, - 0xf8, 0x24, 0xf7, 0xec, 0xf1, 0xa8, 0xee, 0x31, 0x78, 0x7f, - 0x56, 0xd3, 0xc9, 0xef, 0x6b, 0xab, 0xcd, 0xc7, 0xe0, 0xe5, - 0xab, 0x91, 0xd4, 0x3f, 0xe0, 0x8d, 0x9f, 0x5, 0x2e, 0x77, - 0x7d, 0x9b, 0x5a, 0xf1, 0x75, 0x91, 0x3d, 0x36, 0xdf, 0x42, - 0xe0, 0x7f, 0xdf, 0x50, 0xd3, 0xb8, 0x72, 0x9f, 0x8b, 0x34, - 0x57, 0xec, 0x35, 0xd7, 0xfc, 0x11, 0x53, 0xe1, 0x9b, 0x83, - 0xf6, 0x7f, 0x1e, 0x78, 0xae, 0x13, 0xdb, 0xcc, 0x5b, 0x67, - 0x3, 0xf2, 0x8c, 0x57, 0x3f, 0xa8, 0x7f, 0xc1, 0x12, 0x7c, - 0x3a, 0xc0, 0xfd, 0x87, 0xe2, 0x8e, 0xa9, 0x19, 0xec, 0x2e, - 0x34, 0xb8, 0xdf, 0xf5, 0xe, 0x28, 0xb8, 0xac, 0xcf, 0xc9, - 0x9a, 0x2b, 0xf4, 0xeb, 0x51, 0xff, 00, 0x82, 0x23, 0x6a, - 0xe1, 0x98, 0xd8, 0x7c, 0x56, 0xb2, 0x65, 0xec, 0xb7, 0x1a, - 0x33, 0x83, 0xf9, 0x89, 0x4f, 0xf2, 0xae, 0x5b, 0x52, 0xff, - 00, 0x82, 0x2b, 0x7c, 0x4a, 0x81, 0x8f, 0xd8, 0x7c, 0x75, - 0xe1, 0x8b, 0xb5, 0x1d, 0x3c, 0xe4, 0xb8, 0x88, 0x9f, 0xc9, - 0x1a, 0x8b, 0x85, 0x99, 0xf9, 0xdd, 0x49, 0x5f, 0x73, 0xea, - 0x7f, 0xf0, 0x47, 0x7f, 0x8e, 0x76, 0x84, 0xfd, 0x92, 0xf7, - 0xc2, 0xb7, 0xeb, 0xfe, 0xce, 0xa3, 0x22, 0x1f, 0xfc, 0x7a, - 0x2a, 0xe3, 0xb5, 0x4f, 0xf8, 0x25, 0x87, 0xed, 0x1b, 0xa7, - 0x48, 0x56, 0x2f, 0x7, 0xd9, 0xea, 00, 0x7f, 0x1d, 0xae, - 0xaf, 0x6d, 0x83, 0xff, 00, 0x7d, 0xba, 0x9a, 0x2e, 0x16, - 0x67, 0xc9, 0x40, 0xed, 0x39, 0x1c, 0x1f, 0x51, 0x5a, 0xda, - 0x77, 0x8b, 0xb5, 0xdd, 0x1d, 0x81, 0xb0, 0xd6, 0xb5, 0x1b, - 0x12, 0x3a, 0x1b, 0x6b, 0xb9, 0x23, 0xc7, 0xe4, 0x45, 0x7b, - 0xe5, 0xdf, 0xfc, 0x13, 0x8f, 0xf6, 0x8e, 0xb3, 0x7d, 0xad, - 0xf0, 0xc2, 0xfe, 0x4f, 0x78, 0x6f, 0x2d, 0x5c, 0x7e, 0x92, - 0xd6, 0xe, 0xa3, 0xfb, 0xc, 0x7c, 0x7e, 0xd2, 0x89, 0x13, - 0xfc, 0x28, 0xf1, 0x23, 0x63, 0xbc, 0x16, 0xbe, 0x70, 0xfc, - 0xd0, 0x9a, 0x3, 0x53, 0x85, 0xb0, 0xf8, 0xf3, 0xf1, 0x2f, - 0x4b, 0x60, 0xd6, 0x9f, 0x10, 0x7c, 0x53, 0x6e, 0x47, 0x4d, - 0x9a, 0xcd, 0xc0, 0xc7, 0xfe, 0x3f, 0x5d, 0x4e, 0x9f, 0xfb, - 0x63, 0xfc, 0x71, 0xd2, 0xd9, 0x4d, 0xbf, 0xc5, 0x5f, 0x15, - 0x64, 0x74, 0xf3, 0x75, 0x29, 0x25, 0x1f, 0x93, 0x13, 0x58, - 0xfa, 0xaf, 0xec, 0xcb, 0xf1, 0x73, 0x44, 0x24, 0x5e, 0xfc, - 0x32, 0xf1, 0x64, 0x4, 0x7a, 0xe8, 0xd7, 0x7, 0xf9, 0x25, - 0x73, 0x1a, 0x9f, 0xc3, 0x3f, 0x18, 0x68, 0x80, 0x9d, 0x47, - 0xc2, 0x7a, 0xe5, 0x80, 0x1d, 0x4d, 0xd6, 0x9b, 0x34, 0x7f, - 0xfa, 0x12, 0x8a, 0x3, 0x53, 0xda, 0x6c, 0x7f, 0xe0, 0xa2, - 0x5f, 0xb4, 0x55, 0x86, 0xd0, 0xbf, 0x13, 0xf5, 0x39, 0x40, - 0xed, 0x3c, 0x16, 0xf2, 0x7f, 0x38, 0xeb, 0xa8, 0xd3, 0xbf, - 0xe0, 0xa9, 0xdf, 0xb4, 0x66, 0x9e, 0x81, 0x4f, 0x8c, 0x6d, - 0x2e, 0xc0, 0xff, 00, 0x9f, 0x8d, 0x22, 0xd5, 0x89, 0xfc, - 0x42, 0x3, 0x5f, 0x28, 0x4f, 0x65, 0x71, 0x6a, 0x71, 0x34, - 0x12, 0xc2, 0x7f, 0xe9, 0xa2, 0x15, 0xfe, 0x75, 0x6, 0x47, - 0xad, 0x1, 0x76, 0x7d, 0xb1, 0x67, 0xff, 00, 0x5, 0x79, - 0xf8, 0xff, 00, 0x6a, 0xa0, 0x49, 0x37, 0x86, 0xae, 0xcf, - 0xf7, 0xa6, 0xd2, 0x70, 0x4f, 0xfd, 0xf2, 0xeb, 0x5b, 0x96, - 0x3f, 0xf0, 0x59, 0x6f, 0x8d, 0x76, 0xe0, 0xb, 0x8d, 0x7, - 0xc1, 0xb7, 0x63, 0xb9, 0x36, 0x37, 0x8, 0x4f, 0xe5, 0x3d, - 0x7c, 0x19, 0x45, 0x16, 0xb, 0xb3, 0xf4, 0x7f, 0x4a, 0xff, - 00, 0x82, 0xd8, 0x78, 0xe6, 0x8, 0xf1, 0xa8, 0xfc, 0x39, - 0xd0, 0x2f, 0x1f, 0xfb, 0xd6, 0xf7, 0x93, 0x40, 0x3f, 0x22, - 0x1e, 0xba, 0x8d, 0x27, 0xfe, 0xb, 0x73, 0x37, 0xfc, 0xc4, - 0xfe, 0x14, 0x47, 0xff, 00, 0x6e, 0x9a, 0xc9, 0xff, 00, - 0xd9, 0xa1, 0xaf, 0xcb, 0x8a, 0x28, 0xb0, 0x5d, 0x9f, 0xad, - 0xfa, 0x5f, 0xfc, 0x16, 0xcf, 0xc2, 0x12, 0x11, 0xfd, 0xa3, - 0xf0, 0xd3, 0x5b, 0xb7, 0x1d, 0xcd, 0xad, 0xf4, 0x32, 0xff, - 00, 0xe8, 0x41, 0x6b, 0xa8, 0xd3, 0x3f, 0xe0, 0xb3, 0xdf, - 0x8, 0xae, 0xdc, 0xb, 0xbf, 0xa, 0xf8, 0xb6, 0xc4, 0x7f, - 0x78, 0xc1, 0x6f, 0x27, 0xf2, 0x96, 0xbf, 0x1a, 0x28, 0xa2, - 0xc1, 0xcc, 0xcf, 0xdc, 0x3b, 0x1f, 0xf8, 0x2b, 0xb7, 0xec, - 0xff, 00, 0x76, 0x47, 0x9d, 0x75, 0xe2, 0x3b, 0x2f, 0x79, - 0xb4, 0x92, 0x7f, 0xf4, 0x6, 0x6a, 0xdc, 0xb3, 0xff, 00, - 0x82, 0xaa, 0x7e, 0xce, 0x57, 0x6c, 0x14, 0xf8, 0xbe, 0xfa, - 0xdf, 0x3d, 0xe6, 0xd1, 0xae, 0x80, 0x1f, 0x94, 0x66, 0xbf, - 0x8, 0x28, 0xa2, 0xc3, 0xe6, 0x3f, 0xa0, 0xd, 0x3f, 0xfe, - 0xa, 0x47, 0xfb, 0x39, 0x6a, 0x2c, 0x15, 0x3e, 0x25, 0x5a, - 0x42, 0x4f, 0xfc, 0xfc, 0x59, 0x5d, 0x44, 0x3f, 0x36, 0x88, - 0xa, 0xea, 0x6c, 0x3f, 0x6d, 0xef, 0x80, 0x9a, 0x88, 0x5f, - 0x27, 0xe2, 0xcf, 0x85, 0x81, 0x6e, 0x82, 0x5d, 0x41, 0x63, - 0x3f, 0x93, 0x62, 0xbf, 0x9d, 0x6a, 0x29, 0x58, 0x39, 0x8f, - 0xe9, 0x53, 0x4e, 0xfd, 0xa2, 0xfe, 0x16, 0x6a, 0xca, 0xd, - 0x9f, 0xc4, 0x6f, 0xb, 0x4e, 0xf, 0x4d, 0xba, 0xc4, 0x1c, - 0xff, 00, 0xe3, 0xf5, 0xd3, 0xd8, 0x78, 0xf3, 0xc3, 0x5a, - 0xa8, 0x6, 0xcb, 0xc4, 0x3a, 0x55, 0xd8, 0x3d, 0xc, 0x17, - 0xb1, 0xbe, 0x7f, 0x26, 0xaf, 0xe6, 0x12, 0x95, 0x58, 0xa9, - 0xc8, 0x24, 0x1f, 0x6a, 0x2c, 0x1c, 0xc7, 0xf5, 0x23, 0xd, - 0xed, 0xbd, 0xc8, 0x6, 0x29, 0xe2, 0x94, 0x1f, 0xee, 0x38, - 0x3f, 0xca, 0xa6, 0xaf, 0xe5, 0xf2, 0xc7, 0xc5, 0x9a, 0xde, - 0x96, 00, 0xb3, 0xd6, 0x75, 0xb, 0x40, 0x3a, 0x79, 0x17, - 0x4e, 0x98, 0xfc, 0x8d, 0x6e, 0x5a, 0xfc, 0x66, 0xf8, 0x83, - 0x63, 0x8f, 0xb3, 0x78, 0xef, 0xc4, 0xd6, 0xf8, 0xe9, 0xe5, - 0x6b, 0x17, 0xb, 0xfc, 0x9e, 0x8b, 0xf, 0x98, 0xfe, 0x99, - 0xe8, 0xaf, 0xe6, 0xd6, 0xc7, 0xf6, 0xa0, 0xf8, 0xc1, 0xa6, - 0xe3, 0xec, 0xff, 00, 0x14, 0x3c, 0x5c, 0x98, 0xe9, 0x9d, - 0x6a, 0xe1, 0xbf, 0x9b, 0x9a, 0xe9, 0xb4, 0xef, 0xdb, 0x9f, - 0xe3, 0xf6, 0x96, 00, 0x83, 0xe2, 0xbf, 0x88, 0xc8, 0x1d, - 0xa6, 0xb9, 0x12, 0xff, 00, 0xe8, 0x60, 0xd1, 0x60, 0xe6, - 0x3f, 0xa2, 0x4a, 0x2b, 0xf0, 0x7, 0x4d, 0xff, 00, 0x82, - 0x94, 0x7e, 0xd1, 0xba, 0x6e, 0x31, 0xf1, 0x1e, 0xe2, 0xe8, - 0xe, 0xd7, 0x36, 0x36, 0xaf, 0xfa, 0xf9, 0x79, 0xae, 0xb7, - 0x4c, 0xff, 00, 0x82, 0xb2, 0x7e, 0xd0, 0xba, 0x78, 0x51, - 0x2e, 0xb5, 0xa3, 0x5f, 0x81, 0xff, 00, 0x3f, 0x3a, 0x4c, - 0x79, 0x3f, 0xf7, 0xce, 0xda, 0x2c, 0x1c, 0xc8, 0xfd, 0xd1, - 0xa2, 0xbf, 0x16, 0x74, 0xdf, 0xf8, 0x2c, 0x9f, 0xc6, 0xbb, - 0x45, 0xb, 0x75, 0xa2, 0x78, 0x46, 0xfb, 0x1d, 0x59, 0xac, - 0xa7, 0x42, 0x7f, 0xef, 0x99, 0xb1, 0xfa, 0x57, 0xeb, 0x5f, - 0xc0, 0x9f, 0x1c, 0x6a, 0x7f, 0x13, 0x3e, 0xc, 0xf8, 0x2b, - 0xc5, 0xba, 0xcd, 0xb4, 0x16, 0x5a, 0xa6, 0xb7, 0xa4, 0xdb, - 0x6a, 0x17, 0x16, 0xf6, 0xc0, 0x88, 0xe3, 0x79, 0x23, 0xe, - 0x55, 0x72, 0x49, 0xc0, 0xcf, 0x73, 0x48, 0x77, 0xb9, 0xdd, - 0xd1, 0x45, 0x14, 0xc, 0x28, 0xa2, 0x8a, 00, 0xf1, 0x4f, - 0xda, 0x4e, 0xe7, 0xcb, 0xd1, 0xa1, 0x4c, 0xff, 00, 0x9, - 0x35, 0xf1, 0xa6, 0xa0, 0xdc, 0x39, 0xf5, 0x26, 0xbe, 0xb3, - 0xfd, 0xa7, 0x6e, 0xb6, 0xc0, 0x89, 0x9e, 0x89, 0x8a, 0xf9, - 0x23, 0x51, 0x6c, 0x46, 0xdf, 0x8d, 0x7e, 0x69, 0x9b, 0x3e, - 0x7c, 0xc2, 0x5e, 0x56, 0x3f, 0x31, 0xe2, 0x59, 0xfe, 0xf4, - 0xf0, 0xdf, 0x1d, 0xc4, 0xda, 0x9f, 0x8e, 0x3c, 0x39, 0x62, - 0x83, 0x73, 0xdc, 0xea, 0xd6, 0xb0, 0x85, 0xf5, 0x2d, 0x2a, - 0xc, 0x7e, 0xb5, 0xfb, 0x56, 00, 00, 0x1, 0xd0, 0x57, - 0xe3, 0x1d, 0x9d, 0xa3, 0xeb, 0x5f, 0xb4, 0x7, 0xc3, 0x8b, - 0x18, 0xcf, 0xcf, 0x2f, 0x89, 0x6c, 0x3f, 0x49, 0xd1, 0x8f, - 0xf2, 0xaf, 0xd9, 0xda, 0xfb, 0x8c, 0xbd, 0x5a, 0x8a, 0x3d, - 0xae, 0x13, 0x8f, 0x2e, 0x5a, 0x9f, 0x76, 0xc2, 0x8a, 0x28, - 0xaf, 0x4c, 0xfb, 0x43, 0xf3, 0xa6, 0xf6, 0x59, 0x3e, 0x1f, - 0x7c, 0x74, 0xd7, 0xac, 0xb5, 0x48, 0xb6, 0xc9, 0x6d, 0xa9, - 0xc9, 0x72, 0x23, 0x27, 0x21, 0x92, 0x43, 0xe6, 0x21, 0xfc, - 0x98, 0x57, 0xd7, 0x5a, 0x47, 0xed, 0x13, 0xe1, 0xdb, 0x8b, - 0x48, 0x7c, 0xd9, 0x15, 0x1f, 0x68, 0xc8, 0xd, 0xd3, 0x8a, - 0xf0, 0x9f, 0xdb, 0xc7, 0xe1, 0x85, 0xed, 0x86, 0xa5, 0xa7, - 0x7c, 0x48, 0xd2, 0xd5, 0x9e, 0x25, 0x44, 0xb1, 0xd4, 0x63, - 0x41, 0xf7, 0x70, 0x4f, 0x97, 0x21, 0xf6, 0xe7, 0x69, 0x3f, - 0xee, 0xd7, 0xce, 0xfe, 0x1f, 0xf1, 0x7c, 0x37, 0xf1, 0x28, - 0xf3, 0x36, 0xc9, 0xdd, 0x49, 0xaf, 0x8a, 0xaf, 0xf5, 0x9c, - 0xb6, 0xac, 0xe5, 0x87, 0xd5, 0x33, 0xf2, 0x6f, 0xaf, 0xd5, - 0xe1, 0xcc, 0x55, 0x5c, 0x2b, 0x8f, 0xb8, 0xdd, 0xd3, 0xf2, - 0x67, 0xe8, 0xc4, 0x3f, 0x1c, 0x7c, 0x33, 0x2f, 0xfc, 0xbd, - 0x1, 0xff, 00, 0x2, 0x15, 0xa1, 0x7, 0xc5, 0x9f, 0xe, - 0x4f, 0xd2, 0xf5, 0x47, 0xe3, 0x5f, 0x9f, 0xb0, 0xea, 0x21, - 0xc6, 0x44, 0xa4, 0x7e, 0x35, 0x65, 0x35, 0x29, 0xd7, 0xee, - 0xdc, 0xb8, 0xfa, 0x35, 0x72, 0x2c, 0xff, 00, 0x15, 0x1f, - 0x8a, 0x8, 0xf6, 0x21, 0xc4, 0xf2, 0x7f, 0x65, 0x1f, 0xa0, - 0xd0, 0xfc, 0x44, 0xd0, 0x26, 0xc6, 0x2f, 0xe3, 0xe7, 0xde, - 0xae, 0x47, 0xe2, 0xfd, 0x1e, 0x50, 0xa, 0xdf, 0xc2, 0x73, - 0xfe, 0xd5, 0x7e, 0x7a, 0x26, 0xb9, 0x7d, 0x18, 0xf9, 0x6f, - 0x25, 0x1f, 0xf0, 0x3a, 0xb5, 0x1f, 0x8b, 0x35, 0x68, 0xbe, - 0xed, 0xfc, 0xdf, 0xf7, 0xd5, 0x6c, 0xb8, 0x8a, 0xaa, 0xf8, - 0xa9, 0xaf, 0xbc, 0xea, 0x8f, 0x12, 0xc7, 0xac, 0xf, 0xd0, - 0xa4, 0xd7, 0xf4, 0xe9, 0x3e, 0xed, 0xe4, 0x27, 0xfe, 0x5, - 0x53, 0xae, 0xa3, 0x6a, 0xdd, 0x2e, 0x22, 0x3f, 0x47, 0x15, - 0xf9, 0xf3, 0x17, 0x8f, 0xf5, 0xd8, 0x47, 0xcb, 0x7f, 0x2f, - 0xe2, 0x6a, 0xf4, 0x3f, 0x15, 0x3c, 0x45, 0xf, 0x4b, 0xe7, - 0x3f, 0x8d, 0x6e, 0xb8, 0x8d, 0x7d, 0xaa, 0x7f, 0x89, 0xd1, - 0x1e, 0x23, 0xa0, 0xf7, 0x8b, 0x3e, 0xfd, 0x59, 0xe3, 0x6e, - 0x92, 0x29, 0xfa, 0x30, 0xa7, 0xee, 0x1e, 0xa2, 0xbe, 0xf, - 0xb7, 0xf8, 0xd9, 0xe2, 0x48, 0x31, 0xfe, 0x92, 0xcd, 0xf5, - 0x35, 0xa3, 0x6f, 0xfb, 0x40, 0xf8, 0x8a, 0x12, 0x33, 0x33, - 0x1c, 0x7a, 0x35, 0x6e, 0xb8, 0x8a, 0x8f, 0x58, 0x33, 0xa2, - 0x3c, 0x41, 0x85, 0x7b, 0xdc, 0xfb, 0x82, 0x8a, 0xf8, 0xd2, - 0xdb, 0xf6, 0x97, 0xd7, 0x62, 0x18, 0x62, 0xed, 0xff, 00, - 0x2, 0xad, 0x3b, 0x6f, 0xda, 0x93, 0x54, 0x4f, 0xbe, 0xae, - 0x7f, 0x1c, 0xd6, 0xeb, 0x3f, 0xc2, 0x3d, 0xee, 0xbe, 0x46, - 0xf1, 0xcf, 0x30, 0x72, 0xfb, 0x47, 0xd7, 0x14, 0x57, 0xcb, - 0x96, 0xff, 00, 0xb5, 0x64, 0xe0, 00, 0xf1, 0x37, 0xe4, - 0x2b, 0x52, 0xd7, 0xf6, 0xab, 0x84, 0xe3, 0xcd, 0x8b, 0xf3, - 0x15, 0xbc, 0x73, 0xbc, 0x13, 0xfb, 0x5f, 0x81, 0xd1, 0x1c, - 0xdb, 0x7, 0x2f, 0xb6, 0x7d, 0x1f, 0x45, 0x78, 0x34, 0x1f, - 0xb5, 0x2e, 0x9a, 0xff, 00, 0x7a, 0x35, 0x15, 0xab, 0x6b, - 0xfb, 0x4a, 0x68, 0x72, 0x91, 0xb8, 0x28, 0xff, 00, 0x81, - 0x62, 0xb7, 0x8e, 0x6d, 0x82, 0x97, 0xfc, 0xbc, 0x47, 0x44, - 0x73, 0xc, 0x34, 0xb6, 0x9a, 0x3d, 0x92, 0x8a, 0xf2, 0xdb, - 0x7f, 0xda, 0x7, 0xc3, 0xf3, 0x11, 0xf3, 0x81, 0xff, 00, - 0x3, 0x15, 0xa7, 0x7, 0xc6, 0xaf, 0xe, 0xcc, 0x33, 0xe7, - 0x81, 0xff, 00, 0x2, 0x15, 0xd1, 0x1c, 0x7e, 0x16, 0x5b, - 0x54, 0x46, 0xcb, 0x15, 0x46, 0x5b, 0x49, 0x1d, 0xfd, 0x15, - 0xc7, 0xc1, 0xf1, 0x53, 0xc3, 0xf3, 0x8e, 0x2e, 0xc0, 0xfa, - 0x91, 0x57, 0xe2, 0xf1, 0xee, 0x89, 0x30, 0x4, 0x5e, 0xa7, - 0xe7, 0x5b, 0xac, 0x45, 0x19, 0x6d, 0x35, 0xf7, 0x9a, 0xaa, - 0xb4, 0xde, 0xd2, 0x47, 0x43, 0x45, 0x64, 0xc7, 0xe2, 0xad, - 0x2a, 0x51, 0xf2, 0xde, 0xc5, 0xff, 00, 0x7d, 0x55, 0x95, - 0xd6, 0xac, 0x1f, 0xa5, 0xdc, 0x27, 0xfe, 0x6, 0x2b, 0x55, - 0x38, 0x3d, 0x99, 0x6a, 0x51, 0x7d, 0x4b, 0xb4, 0x54, 0x9, - 0x7d, 0x6f, 0x27, 0xdd, 0x9e, 0x33, 0xf4, 0x61, 0x52, 0x9, - 0xa3, 0x3d, 0x1d, 0x4f, 0xd0, 0xd5, 0x5d, 0xe, 0xe3, 0xe8, - 0xa4, 0x4, 0x1e, 0x87, 0x34, 0xb4, 0xc6, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0xc7, 0x89, - 0x24, 0xfb, 0xe8, 0xad, 0xfe, 0xf0, 0xcd, 0x3e, 0x8a, 00, - 0xcb, 0xbc, 0xf0, 0xbe, 0x8d, 0xa8, 0x9c, 0xdd, 0xe9, 0x16, - 0x37, 0x47, 0xd6, 0x6b, 0x64, 0x7f, 0xe6, 0x2b, 0x9a, 0xd5, - 0xfe, 0x5, 0xfc, 0x38, 0xd7, 0xc1, 0xfe, 0xd2, 0xf0, 0x17, - 0x86, 0xaf, 0xb3, 0xd7, 0xed, 0x1a, 0x4c, 0xf, 0xfc, 0xd2, - 0xbb, 0x9a, 0x28, 0x3, 0xc7, 0x6f, 0x7f, 0x63, 0x9f, 0x81, - 0x9a, 0x89, 0x26, 0x7f, 0x84, 0x9e, 0xe, 0x24, 0xf7, 0x4d, - 0x1a, 0x4, 0x3f, 0xf8, 0xea, 0x8a, 0xc5, 0xd4, 0x3f, 0x60, - 0xaf, 0xd9, 0xf7, 0x52, 0x42, 0x92, 0xfc, 0x29, 0xf0, 0xfc, - 0x60, 0xf7, 0xb7, 0x85, 0xa1, 0x3f, 0x9a, 0x30, 0xaf, 0x7c, - 0xa2, 0x80, 0x3e, 0x5a, 0xd4, 0xff, 00, 0xe0, 0x99, 0x3f, - 0xb3, 0x96, 0xa4, 0xf, 0xfc, 0x5b, 0xf1, 0x68, 0x4f, 0xf1, - 0x5b, 0x6a, 0x57, 0x49, 0xff, 00, 0xb5, 0x48, 0xae, 0x4b, - 0x52, 0xff, 00, 0x82, 0x47, 0x7e, 0xcf, 0xf7, 0xa0, 0xf9, - 0x16, 0x1a, 0xf5, 0x81, 0xf5, 0x83, 0x56, 0x76, 0xff, 00, - 0xd0, 0xc1, 0xaf, 0xb4, 0xa8, 0xa0, 0x56, 0x3e, 0x1, 0xd5, - 0x7f, 0xe0, 0x8c, 0x9f, 0x8, 0x6e, 0xb2, 0x6c, 0xbc, 0x4d, - 0xe2, 0xcb, 0x3, 0xe8, 0x67, 0x82, 0x50, 0x3f, 0x38, 0xbf, - 0xad, 0x72, 0x9a, 0x9f, 0xfc, 0x11, 0x33, 0xc2, 0x32, 0x3, - 0xfd, 0x9f, 0xf1, 0x2f, 0x5a, 0x80, 0xf6, 0x17, 0x36, 0x10, - 0xc8, 0x3f, 0x42, 0xb5, 0xfa, 0x53, 0x45, 0x1, 0x64, 0x7e, - 0x56, 0x6a, 0x1f, 0xf0, 0x44, 0x4b, 0x92, 0x49, 0xb1, 0xf8, - 0xb7, 0x10, 0x1d, 0x85, 0xc6, 0x84, 0x4f, 0xea, 0x27, 0xac, - 0x2b, 0xcf, 0xf8, 0x22, 0x57, 0x8b, 0xa3, 0x52, 0x6d, 0x7e, - 0x27, 0x68, 0xb3, 0x9e, 0xc2, 0x5d, 0x36, 0x68, 0xf3, 0xf9, - 0x3b, 0x57, 0xeb, 0x85, 0x14, 0xee, 0x16, 0x47, 0xe3, 0x4e, - 0xa7, 0xff, 00, 0x4, 0x60, 0xf8, 0xb5, 0x6e, 0x9, 0xb1, - 0xf1, 0x5f, 0x85, 0x2f, 0x71, 0xd0, 0x3c, 0xb7, 0x11, 0x67, - 0xff, 00, 0x21, 0x1a, 0xe4, 0xf5, 0xf, 0xf8, 0x24, 0x47, - 0xc7, 0xfb, 0x36, 0x22, 0xb, 0x6f, 0xe, 0x5f, 0x1, 0xde, - 0xd, 0x58, 0x2e, 0x7f, 0xef, 0xb4, 0x5a, 0xfd, 0xc2, 0xa2, - 0x8b, 0x8a, 0xc8, 0xfc, 0x14, 0xd5, 0x3f, 0xe0, 0x97, 0x9f, - 0xb4, 0x76, 0x9a, 0x7e, 0x4f, 0x3, 0x45, 0x7d, 0xef, 0x6b, - 0xaa, 0xda, 0x9f, 0xfd, 0xa, 0x41, 0x5c, 0xed, 0xe7, 0xfc, - 0x13, 0xbf, 0xf6, 0x8b, 0xb1, 0xcf, 0x99, 0xf0, 0xb7, 0x54, - 0x7c, 0x7f, 0xcf, 0x1b, 0x8b, 0x69, 0x3f, 0xf4, 0x19, 0x4d, - 0x7f, 0x41, 0xb4, 0x51, 0x70, 0xe5, 0x47, 0xf3, 0xa5, 0xa9, - 0xfe, 0xc5, 0x3f, 0x1d, 0xf4, 0x8c, 0xfd, 0xa7, 0xe1, 0x4f, - 0x89, 0xf8, 0xff, 00, 0x9e, 0x36, 0x2d, 0x2f, 0xfe, 0x81, - 0x9a, 0xe5, 0xf5, 0x1f, 0xd9, 0xd7, 0xe2, 0xa6, 0x90, 0x9, - 0xbd, 0xf8, 0x6d, 0xe2, 0xcb, 0x60, 0x3a, 0x99, 0x34, 0x5b, - 0x91, 0xff, 00, 0xb2, 0x57, 0xf4, 0xab, 0x45, 0x17, 0xe, - 0x53, 0xf9, 0x81, 0xd4, 0xfc, 0x11, 0xe2, 0x3d, 0x10, 0x13, - 0xa8, 0xe8, 0x1a, 0xa5, 0x80, 0x1d, 0x7e, 0xd5, 0x65, 0x24, - 0x78, 0xff, 00, 0xbe, 0x94, 0x56, 0x29, 0xf9, 0x4e, 0xf, - 0x7, 0xd0, 0xd7, 0xf5, 0x25, 0x3d, 0x9c, 0x17, 0x23, 0x13, - 0x41, 0x1c, 0xbf, 0xef, 0xa0, 0x3f, 0xce, 0xb2, 0xb5, 0xf, - 0x3, 0xf8, 0x73, 0x57, 0x4d, 0xb7, 0xde, 0x1f, 0xd2, 0xef, - 0x57, 0xd2, 0xe2, 0xca, 0x39, 0x7, 0xea, 0xb4, 0x5c, 0x39, - 0x4f, 0xe6, 0xa, 0x8a, 0xfe, 0x95, 0xf5, 0x2f, 0xd9, 0xe7, - 0xe1, 0x6e, 0xae, 0x85, 0x2f, 0x7e, 0x1c, 0xf8, 0x56, 0xe5, - 0x4f, 0x50, 0xfa, 0x35, 0xb9, 0xff, 00, 0xd9, 0x2b, 0x99, - 0xbc, 0xfd, 0x8b, 0xfe, 0x4, 0x5f, 0x82, 0x25, 0xf8, 0x49, - 0xe1, 0x1e, 0x7a, 0x98, 0xf4, 0x98, 0xa3, 0x3f, 0x9a, 0x81, - 0x45, 0xc5, 0xca, 0x7f, 0x3a, 0x30, 0xc0, 0xf7, 0x33, 0x47, - 0xc, 0x4a, 0x5e, 0x49, 0x18, 0x22, 0xa8, 0xea, 0x49, 0x38, - 0x2, 0xbf, 0xa7, 0xf, 0x86, 0x5e, 0x1f, 0x1e, 0x14, 0xf8, - 0x6f, 0xe1, 0x5d, 0x10, 0x74, 0xd3, 0xb4, 0xab, 0x5b, 0x4e, - 0x98, 0xfb, 0x91, 0x2a, 0xff, 00, 0x4a, 0xf2, 0x56, 0xfd, - 0x81, 0xbf, 0x67, 0xef, 0x3e, 0x29, 0xe3, 0xf8, 0x5d, 0xa3, - 0x5b, 0xcd, 0x13, 0x89, 0x12, 0x4b, 0x7f, 0x32, 0x32, 0xac, - 0xe, 0x41, 0x1b, 0x5c, 0x77, 0xaf, 0x7e, 00, 0x28, 00, - 0x70, 0x5, 0x5, 0x25, 0x61, 0x68, 0xa2, 0x8a, 0x43, 0xa, - 0x28, 0xa2, 0x80, 0x3e, 0x65, 0xfd, 0xa7, 0xae, 0xf3, 0x74, - 0xc9, 0x9e, 0x80, 0xa, 0xf9, 0x6f, 0x55, 0x6c, 0x40, 0xdf, - 0x4a, 0xfa, 0x2b, 0xf6, 0x96, 0xbb, 0xdf, 0xab, 0xca, 0xb9, - 0xe8, 0xd8, 0xaf, 0x9b, 0xf5, 0xa7, 0xdb, 0x6c, 0xe7, 0xfd, - 0x93, 0x5f, 0x97, 0x63, 0x5f, 0x3e, 0x61, 0x37, 0xe6, 0x7e, - 0x49, 0xc4, 0x93, 0xbd, 0x59, 0x1c, 0x17, 0xc1, 0x6b, 0x21, - 0xad, 0xfe, 0xd7, 0xdf, 0xc, 0x2d, 0x58, 0xf0, 0xba, 0xbf, - 0xda, 0x3f, 0x18, 0xe2, 0x79, 0x7, 0xfe, 0x81, 0x5f, 0xb0, - 0x35, 0xf9, 0x3d, 0xfb, 0x20, 0x69, 0x8b, 0xad, 0xfe, 0xd9, - 0xde, 0x16, 0x2c, 0x37, 0xb, 0x1b, 0x7b, 0xcb, 0xb1, 0xec, - 0x44, 0x25, 0x41, 0xff, 00, 0xc7, 0xeb, 0xf5, 0x86, 0xbf, - 0x44, 0xc1, 0xab, 0x52, 0x47, 0xda, 0x70, 0xdc, 0x39, 0x32, - 0xca, 0x41, 0x45, 0x14, 0x57, 0x69, 0xf4, 0xe5, 0x1d, 0x6b, - 0x45, 0xb1, 0xf1, 0x1e, 0x93, 0x75, 0xa6, 0x6a, 0x56, 0xb1, - 0xde, 0xd8, 0x5d, 0x46, 0x62, 0x9a, 0x9, 0x57, 0x2a, 0xea, - 0x7a, 0x83, 0x5f, 0x9e, 0x3f, 0x1f, 0x3f, 0x63, 0x7d, 0x73, - 0xe1, 0xc6, 0xa7, 0x73, 0xac, 0x78, 0x5c, 0x4b, 0xa8, 0xf8, - 0x71, 0x98, 0xba, 0x94, 0x3b, 0xa5, 0xb5, 0x1f, 0xdd, 0x71, - 0xdc, 0xf, 0xef, 0x7e, 0x78, 0xaf, 0xd1, 0xca, 0x42, 0x3, - 0x2, 0x8, 0xc8, 0x3d, 0x41, 0xae, 0x6a, 0xd4, 0x15, 0x65, - 0xd9, 0x9e, 0x2e, 0x67, 0x94, 0xd0, 0xcd, 0x29, 0xa8, 0xd5, - 0xd1, 0xad, 0x9a, 0xe9, 0xfe, 0x6b, 0xc8, 0xfc, 0x79, 0x4f, - 0xf8, 0x49, 0xb4, 0xae, 0x1e, 0x13, 0x22, 0x8e, 0x3a, 0x73, - 0x52, 0xf, 0x16, 0x6a, 0xb0, 0xff, 00, 0xac, 0xb4, 0x90, - 0x7f, 0xc0, 0x4d, 0x7e, 0xa5, 0x78, 0xa7, 0xe0, 0xb7, 0x84, - 0x3c, 0x5b, 0xbd, 0xaf, 0x34, 0x88, 0xa1, 0x99, 0x8e, 0x4c, - 0xd6, 0xa0, 0x46, 0xc4, 0xfa, 0x9c, 0x70, 0x7f, 0x11, 0x5e, - 0x7f, 0x7f, 0xfb, 0x1e, 0xf8, 0x4a, 0xe9, 0xcb, 0x45, 0x77, - 0x77, 0x8, 0x3d, 0x1, 0x54, 0x6c, 0x7e, 0x82, 0xbc, 0xa, - 0x99, 0x75, 0x5b, 0xfc, 0x29, 0xfe, 0x7, 0xc4, 0xcf, 0x84, - 0x9c, 0x3e, 0x1d, 0x7d, 0x1d, 0xbf, 0x3, 0xf3, 0xe5, 0x7c, - 0x79, 0x75, 0x1f, 0xdf, 0xb7, 0x71, 0xf5, 0x6, 0xa6, 0x4f, - 0x88, 0xc4, 0x70, 0xc8, 0xc3, 0xf0, 0xaf, 0xb9, 0x6e, 0xff, - 00, 0x62, 0x6d, 0x12, 0x40, 0x7c, 0x9d, 0x65, 0xd4, 0xff, - 00, 0xb7, 0x6c, 0xf, 0xfe, 0xcd, 0x58, 0x57, 0x9f, 0xb0, - 0xcc, 0x4e, 0xf, 0x93, 0xac, 0xdb, 0x39, 0xf4, 0x78, 0xa, - 0x8f, 0xeb, 0x5c, 0xaf, 0x2e, 0x9f, 0x5a, 0x5f, 0x8a, 0xff, - 00, 0x33, 0x96, 0x5c, 0x2f, 0x5e, 0x3b, 0x29, 0x7d, 0xeb, - 0xfc, 0xcf, 0x8f, 0xe3, 0xf8, 0x8f, 0x9, 0xeb, 0xb8, 0x55, - 0xa8, 0xfe, 0x22, 0x5b, 0x37, 0xf1, 0xd7, 0xd2, 0x97, 0xff, - 00, 0xb0, 0xbe, 0xa6, 0xa7, 0xf7, 0x33, 0x69, 0xd3, 0x8f, - 0x5d, 0xc5, 0x7f, 0x9a, 0xd7, 0x3f, 0x7f, 0xfb, 0xe, 0x78, - 0x89, 0xf, 0xee, 0xec, 0x6d, 0xa7, 0xf7, 0x8e, 0x64, 0x1f, - 0xcc, 0x8a, 0xe7, 0x96, 0x5f, 0xde, 0x93, 0x39, 0xa5, 0xc3, - 0xf8, 0xa8, 0xec, 0xe5, 0xf7, 0x5c, 0xf1, 0x48, 0xfc, 0x79, - 0x6a, 0xd8, 0xfd, 0xe0, 0xfc, 0x45, 0x59, 0x8f, 0xc6, 0x96, - 0x8d, 0xff, 00, 0x2d, 0x56, 0xbd, 0xe, 0xf3, 0xf6, 0x2d, - 0xf1, 0x44, 0x4c, 0x40, 0xd1, 0x25, 0x6c, 0x77, 0x49, 0x10, - 0xff, 00, 0x26, 0xac, 0x2b, 0xcf, 0xd9, 0x13, 0xc5, 0x96, - 0xec, 0x47, 0xf6, 0x16, 0xa3, 0xc7, 0xfc, 0xf3, 0x89, 0x9b, - 0xf9, 0x56, 0x2f, 0x3, 0x4f, 0xac, 0x24, 0xbe, 0x47, 0x3b, - 0xc9, 0xf1, 0x91, 0xfb, 0x4f, 0xe7, 0x16, 0x60, 0xa7, 0x8a, - 0xed, 0x1f, 0xfe, 0x5a, 0xa7, 0xe7, 0x56, 0x13, 0xc4, 0x56, - 0xcc, 0x3e, 0xfa, 0xfe, 0x75, 0x5e, 0xf7, 0xf6, 0x6c, 0xf1, - 0x2d, 0x96, 0xe2, 0xfa, 0x6e, 0xa7, 0x10, 0x1d, 0xda, 0x16, - 00, 0x7e, 0x95, 0x87, 0x71, 0xf0, 0x6f, 0x5a, 0xb5, 0x62, - 0x18, 0xdc, 0x21, 0x1d, 0x99, 0x6b, 0x9d, 0xe0, 0xa8, 0xf7, - 0x68, 0xe7, 0x78, 0xc, 0x64, 0x7e, 0xda, 0xf9, 0xa3, 0xa9, - 0x5d, 0x66, 0xdd, 0xbf, 0x88, 0x54, 0x83, 0x53, 0x80, 0xff, - 00, 0x10, 0xae, 0x16, 0x4f, 0x86, 0xfa, 0xec, 0x1f, 0x76, - 0x49, 0x4f, 0xd5, 0x6a, 0xbb, 0xf8, 0x43, 0xc4, 0x56, 0xfd, - 0x1d, 0x8f, 0xd4, 0x1a, 0xcf, 0xea, 0x34, 0x9e, 0xd3, 0x32, - 0xfa, 0xbe, 0x35, 0x7f, 0x2b, 0x3d, 0x18, 0x5f, 0x42, 0x7f, - 0x88, 0x53, 0x85, 0xd4, 0x47, 0xa3, 0xd7, 0x98, 0x9d, 0x2b, - 0xc4, 0xb0, 0xff, 00, 0xb, 0x37, 0xe3, 0x4d, 0xdf, 0xe2, - 0x38, 0x3a, 0xc0, 0xc7, 0xf1, 0xa9, 0xfe, 0xcf, 0x8b, 0xda, - 0x62, 0xf6, 0x78, 0xd5, 0xf6, 0x13, 0xf9, 0x9e, 0xa6, 0xb7, - 0x2b, 0xd9, 0xff, 00, 0x5a, 0x91, 0x6e, 0xd8, 0x74, 0x94, - 0xfe, 0x75, 0xe5, 0x3, 0x59, 0xd7, 0xa1, 0xfb, 0xd6, 0x92, - 0x1f, 0xc2, 0x9c, 0x3c, 0x59, 0xaa, 0xc5, 0xf7, 0xed, 0x24, - 0x1f, 0x81, 0xa8, 0x79, 0x6b, 0x7b, 0x34, 0x2e, 0x6c, 0x5c, - 0x77, 0xa4, 0xfe, 0xf3, 0xd6, 0xd3, 0x52, 0xb8, 0x4f, 0xbb, - 0x70, 0xe3, 0xe8, 0xd5, 0x62, 0x3d, 0x7f, 0x50, 0x8f, 0xee, - 0xdd, 0xc8, 0x3f, 0xe0, 0x55, 0xe4, 0xb, 0xe3, 0xbb, 0xb8, - 0xfe, 0xfd, 0xbb, 0x8f, 0xc0, 0xd4, 0xc9, 0xf1, 0xc, 0xaf, - 0xde, 0x8d, 0x87, 0xe7, 0x59, 0xbc, 0xba, 0xa2, 0xda, 0xc3, - 0xfa, 0xd6, 0x26, 0x1b, 0xc2, 0x48, 0xf6, 0x38, 0xbc, 0x63, - 0xac, 0x43, 0x8d, 0x97, 0xb2, 0xc, 0x7b, 0xd5, 0xb8, 0xbe, - 0x22, 0x6b, 0xb0, 0x9e, 0x2f, 0x58, 0xfd, 0x6b, 0xc6, 0x63, - 0xf8, 0x8d, 0x17, 0x7c, 0x8f, 0xc6, 0xac, 0xc7, 0xf1, 0xe, - 0xd8, 0xf5, 0x7a, 0x5f, 0x52, 0xc4, 0x47, 0x6f, 0xcc, 0xb5, - 0x99, 0xd6, 0x8e, 0xfc, 0xcb, 0xef, 0x3d, 0xb2, 0xf, 0x8b, - 0x7e, 0x21, 0x83, 0xa5, 0xd6, 0x7e, 0xb5, 0xa1, 0x6f, 0xf1, - 0xc3, 0xc4, 0x50, 0x11, 0x99, 0xb7, 0x62, 0xbc, 0x36, 0x3f, - 0x1e, 0xda, 0x37, 0xfc, 0xb5, 0x15, 0x66, 0x3f, 0x1a, 0xda, - 0x37, 0xfc, 0xb5, 0x5a, 0x7e, 0xcb, 0x17, 0x1d, 0x9b, 0xfb, - 0xd9, 0xb4, 0x73, 0xba, 0xb1, 0xfb, 0x6d, 0x1e, 0xf9, 0x6f, - 0xfb, 0x43, 0x78, 0x82, 0x10, 0x1, 0x73, 0xf9, 0xd6, 0xa5, - 0xaf, 0xed, 0x2f, 0xac, 0xc5, 0xf7, 0xb2, 0x6b, 0xe7, 0x74, - 0xf1, 0x6d, 0xa3, 0x7f, 0xcb, 0x54, 0xfc, 0xea, 0x74, 0xf1, - 0x25, 0xab, 0xff, 00, 0x1a, 0xfe, 0x75, 0x4a, 0xae, 0x3a, - 0x1b, 0x4e, 0x47, 0x4c, 0x78, 0x86, 0xaa, 0xff, 00, 0x97, - 0xa7, 0xd2, 0xd0, 0x7e, 0xd4, 0xfa, 0x82, 0xe3, 0x7a, 0xb6, - 0x3e, 0x95, 0xab, 0x6b, 0xfb, 0x55, 0xb8, 0xc7, 0x98, 0x9f, - 0x9a, 0xd7, 0xcb, 0x4b, 0xad, 0xdb, 0xb7, 0xf1, 0x8f, 0xce, - 0xa5, 0x5d, 0x56, 0x3, 0xfc, 0x43, 0xf3, 0xab, 0x58, 0xec, - 0x7c, 0x7e, 0xdb, 0x3a, 0xe3, 0xc4, 0x75, 0xff, 00, 0xe7, - 0xe2, 0x3e, 0xb4, 0xb6, 0xfd, 0xaa, 0xad, 0x9c, 0xfc, 0xe8, - 0xa3, 0xfe, 0x3, 0x5a, 0xb6, 0xdf, 0xb4, 0xfe, 0x94, 0xf8, - 0xde, 0x13, 0xf2, 0x22, 0xbe, 0x39, 0x17, 0xf0, 0xb7, 0xf1, - 0xa, 0x78, 0xbb, 0x88, 0xf4, 0x71, 0x5a, 0xac, 0xdb, 0x1f, - 0x1f, 0xb5, 0xf8, 0x1d, 0x91, 0xe2, 0x4a, 0xfd, 0xd3, 0x3e, - 0xd6, 0xb6, 0xfd, 0xa4, 0x34, 0x29, 0xb1, 0xb8, 0xa8, 0xfc, - 0x6b, 0x52, 0xf, 0x8f, 0x5e, 0x1d, 0x94, 0xc, 0xca, 0x6, - 0x7d, 0xd, 0x7c, 0x2e, 0x2e, 0x53, 0xb3, 0xfe, 0xb5, 0x22, - 0xdd, 0x63, 0xa4, 0xa7, 0xf0, 0x35, 0xaa, 0xcf, 0x31, 0xb1, - 0xde, 0xcf, 0xe4, 0x75, 0x47, 0x89, 0x6a, 0xf5, 0x8a, 0x3e, - 0xf5, 0xb7, 0xf8, 0xcb, 0xe1, 0xd9, 0xff, 00, 0xe5, 0xe3, - 0x15, 0xa1, 0x17, 0xc4, 0xed, 0x2, 0x5e, 0x97, 0x80, 0x7d, - 0x6b, 0xf3, 0xf9, 0x2f, 0x65, 0x5f, 0xbb, 0x3b, 0x8f, 0xa3, - 0x54, 0xc9, 0xab, 0xdd, 0xc7, 0xf7, 0x6e, 0xa4, 0x1f, 0xf0, - 0x23, 0x5b, 0xae, 0x20, 0xc4, 0x2d, 0xe0, 0x8e, 0x98, 0xf1, - 0x2c, 0xba, 0xc0, 0xfd, 0x7, 0x8b, 0xc7, 0x3a, 0x2c, 0xdf, - 0x76, 0xf5, 0x3f, 0x1a, 0xb4, 0x9e, 0x28, 0xd2, 0xe4, 0xfb, - 0xb7, 0xb1, 0x9f, 0xc6, 0xbf, 0x3d, 0xa3, 0xf1, 0x2e, 0xa7, - 0x1f, 0xdd, 0xbd, 0x97, 0xfe, 0xfa, 0x35, 0x6a, 0x2f, 0x1b, - 0x6b, 0x30, 0x91, 0xb6, 0xf6, 0x4e, 0x3d, 0x58, 0xd6, 0xcb, - 0x88, 0xa7, 0xd6, 0x9f, 0xe2, 0x74, 0x2e, 0x24, 0x87, 0x58, - 0x1f, 0xa1, 0x11, 0xea, 0xf6, 0x52, 0xfd, 0xdb, 0x98, 0xcf, - 0xfc, 0xa, 0xa6, 0x5b, 0xc8, 0x1b, 0xa4, 0xc8, 0x7e, 0x8c, - 0x2b, 0xf3, 0xfa, 0x1f, 0x89, 0x7a, 0xf4, 0x23, 0x8b, 0xc7, - 0xfc, 0xcd, 0x5e, 0x83, 0xe3, 0x7, 0x88, 0x20, 0xc6, 0x2e, - 0x58, 0xe3, 0xfd, 0xa3, 0x5b, 0xc7, 0x88, 0xa3, 0xd6, 0x9b, - 0x3a, 0x23, 0xc4, 0x58, 0x77, 0xba, 0x67, 0xde, 0xe2, 0x45, - 0x6e, 0x8c, 0xf, 0xd0, 0xd2, 0xe6, 0xbe, 0x18, 0x87, 0xe3, - 0xb7, 0x88, 0x22, 0xc0, 0xf3, 0xf, 0xfd, 0xf4, 0x6b, 0x4e, - 0xdf, 0xf6, 0x8a, 0xd7, 0x21, 0x23, 0x3b, 0x8e, 0x3f, 0xda, - 0x35, 0xba, 0xe2, 0x1a, 0x1d, 0x62, 0xce, 0x88, 0xe7, 0xf8, - 0x47, 0xbb, 0x3e, 0xd5, 0xa2, 0xbe, 0x3e, 0x83, 0xf6, 0x9c, - 0xd5, 0xd0, 0x8d, 0xe1, 0xb1, 0xfe, 0xf1, 0xad, 0x5b, 0x5f, - 0xda, 0x9a, 0xed, 0x71, 0xbd, 0xf, 0x15, 0xbc, 0x73, 0xec, - 0x23, 0xde, 0xeb, 0xe4, 0x74, 0x47, 0x3a, 0xc1, 0xcb, 0xed, - 0x1f, 0x56, 0x51, 0x5f, 0x33, 0xdb, 0x7e, 0xd5, 0x44, 0x91, - 0xe6, 0x20, 0x1f, 0x51, 0x5a, 0xd6, 0xff, 00, 0xb5, 0x35, - 0x91, 0x3, 0x7a, 0xa7, 0xe4, 0x6b, 0xa2, 0x39, 0xd6, 0xa, - 0x5f, 0x6c, 0xe8, 0x8e, 0x69, 0x84, 0x96, 0xd3, 0x47, 0xd0, - 0x54, 0x57, 0x88, 0xdb, 0x7e, 0xd3, 0x5a, 0x4c, 0xa4, 0x6f, - 0x11, 0x8f, 0xc4, 0xd6, 0x9c, 0x1f, 0xb4, 0x56, 0x83, 0x26, - 0x32, 0xf1, 0xe7, 0xd9, 0xeb, 0x78, 0xe6, 0xb8, 0x39, 0x6d, - 0x51, 0x1b, 0xac, 0x76, 0x1e, 0x5b, 0x4d, 0x1e, 0xb7, 0x45, - 0x79, 0xbd, 0xbf, 0xc7, 0x4f, 0xf, 0xcf, 0xff, 00, 0x2d, - 0x94, 0x7f, 0xc0, 0xeb, 0x46, 0x1f, 0x8b, 0xfe, 0x1e, 0x9b, - 0x3, 0xed, 0x40, 0x1f, 0xad, 0x74, 0x47, 0x1b, 0x86, 0x96, - 0xd5, 0x17, 0xde, 0x6c, 0xb1, 0x14, 0x5e, 0xd2, 0x47, 0x6f, - 0x45, 0x72, 0xf0, 0x7c, 0x49, 0xd0, 0x67, 0xe9, 0x7a, 0x83, - 0xea, 0x6a, 0xdc, 0x7e, 0x36, 0xd1, 0x65, 0xfb, 0xb7, 0xf1, - 0x9f, 0xc6, 0xb6, 0x55, 0xe9, 0x3d, 0xa4, 0xbe, 0xf2, 0xd5, - 0x58, 0x3d, 0xa4, 0x8d, 0xda, 0x2b, 0x32, 0x3f, 0x12, 0x69, - 0x92, 0xfd, 0xdb, 0xd8, 0xbf, 0xef, 0xaa, 0x9d, 0x35, 0x7b, - 0x29, 0x3e, 0xed, 0xd4, 0x47, 0xfe, 0x4, 0x2b, 0x45, 0x38, - 0xbd, 0x99, 0x7c, 0xd1, 0xee, 0x5c, 0xa2, 0xa1, 0x5b, 0xb8, - 0x1f, 0xee, 0xca, 0x87, 0xfe, 0x4, 0x2a, 0x41, 0x22, 0x37, - 0x46, 0x53, 0xf4, 0x35, 0x57, 0x45, 0xe, 0xa2, 0x93, 0x39, - 0xa5, 0xa6, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, - 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, - 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, - 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, - 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, - 0x1, 0x45, 0x14, 0x50, 0x1, 0x48, 0x78, 0x14, 0xb4, 0xc9, - 0x5b, 0x64, 0x4e, 0xde, 0x80, 0x9a, 00, 0xf8, 0xdb, 0xf6, - 0x85, 0xba, 0xf3, 0x75, 0xd9, 0x87, 0xfb, 0x67, 0xf9, 0xd7, - 0x80, 0x78, 0x89, 0xf6, 0x59, 0x4d, 0xfe, 0xe9, 0xaf, 0x68, - 0xf8, 0xe1, 0x73, 0xe6, 0xf8, 0x82, 0x50, 0x4f, 0xf1, 0x93, - 0xfa, 0xd7, 0x84, 0x78, 0xc6, 0xf0, 0x41, 0xa7, 0x4c, 0x72, - 0x7, 0xca, 0x6b, 0xf2, 0xb7, 0xfb, 0xcc, 0x6c, 0xdf, 0x99, - 0xf8, 0xb7, 0x10, 0xce, 0xf5, 0x66, 0x6f, 0x7f, 0xc1, 0x3d, - 0xac, 0x1b, 0x50, 0xfd, 0xab, 0x75, 0x8b, 0xbd, 0xb9, 0x8e, - 0xcb, 0xc3, 0xf7, 0x4, 0x9f, 0x46, 0x79, 0xa1, 0x51, 0xfa, - 0x66, 0xbf, 0x4f, 0x2b, 0xf3, 0x97, 0xfe, 0x9, 0x81, 0x68, - 0x6f, 0xfe, 0x2d, 0x7c, 0x4d, 0xd5, 0xa, 0x9d, 0xb6, 0xfa, - 0x75, 0xa5, 0xb0, 0x6c, 0x71, 0x99, 0x25, 0x91, 0x88, 0xcf, - 0xfd, 0xb3, 0x15, 0xfa, 0x35, 0x5f, 0xa5, 0xe1, 0xd5, 0xa9, - 0xa3, 0xf5, 0xc, 0x9e, 0x1e, 0xcf, 0x1, 0x4a, 0x3e, 0x48, - 0x28, 0xa2, 0x8a, 0xe9, 0x3d, 0x90, 0xa2, 0x8a, 0x28, 00, - 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, - 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa8, 0xe4, 0x82, 0x29, - 0x46, 0x1e, 0x34, 0x71, 0xe8, 0xca, 0xd, 0x49, 0x45, 00, - 0x50, 0x9f, 0x41, 0xd3, 0x2e, 0x46, 0x26, 0xd3, 0xad, 0x25, - 0x1e, 0x8f, 0x2, 0x9f, 0xe6, 0x2b, 0x3e, 0xe3, 0xc0, 0x1e, - 0x19, 0xbb, 0xff, 00, 0x5b, 0xa0, 0x69, 0xad, 0xff, 00, - 0x6e, 0xa8, 0x3f, 0x90, 0xad, 0xfa, 0x2a, 0x1c, 0x20, 0xf7, - 0x46, 0x6e, 0x9c, 0x25, 0xbc, 0x51, 0xc5, 0xdd, 0xfc, 0x19, - 0xf0, 0x55, 0xe9, 0xcc, 0x9e, 0x1e, 0xb4, 0x1f, 0xf5, 0xcc, - 0x14, 0xfe, 0x44, 0x56, 0x45, 0xdf, 0xec, 0xe9, 0xe0, 0x4b, - 0xbc, 0xff, 00, 0xc4, 0xa0, 0xc3, 0x9f, 0xf9, 0xe7, 0x33, - 0x71, 0xf9, 0x93, 0x5e, 0x97, 0x45, 0x62, 0xf0, 0xd4, 0x65, - 0xbc, 0x17, 0xdc, 0x63, 0x2c, 0x26, 0x1e, 0x5b, 0xd3, 0x5f, - 0x72, 0x3c, 0x66, 0xef, 0xf6, 0x51, 0xf0, 0x4d, 0xce, 0x76, - 0x8b, 0xc8, 0x73, 0xfd, 0xd9, 0x10, 0xff, 00, 0x35, 0xac, - 0x9b, 0xaf, 0xd8, 0xeb, 0xc2, 0x93, 0x3, 0xe5, 0xdf, 0x5d, - 0xc6, 0x7f, 0xda, 0x54, 0x6f, 0xe8, 0x2b, 0xdf, 0x28, 0xac, - 0x9e, 0xb, 0xe, 0xfe, 0xc2, 0x30, 0x79, 0x76, 0x11, 0xff, - 00, 0xcb, 0xb4, 0x7c, 0xd5, 0x79, 0xfb, 0x13, 0xe8, 0xd2, - 0xff, 00, 0xa9, 0xd6, 0x9d, 0x7d, 0x9e, 0xd8, 0x1f, 0xfd, - 0x9a, 0xb0, 0xaf, 0x7f, 0x61, 0xa4, 0x6c, 0xf9, 0x1a, 0xbd, - 0xb3, 0xff, 00, 0xd7, 0x48, 0x4a, 0xff, 00, 0x8d, 0x7d, - 0x65, 0x45, 0x66, 0xf2, 0xfc, 0x3b, 0xfb, 0x3f, 0x8b, 0x32, - 0x79, 0x56, 0x11, 0xfd, 0x9f, 0xc5, 0xff, 00, 0x99, 0xf1, - 0x6d, 0xef, 0xec, 0x2f, 0xa9, 0xe0, 0x98, 0xee, 0x34, 0xe9, - 0x7d, 0x83, 0x11, 0xfc, 0xd6, 0xb9, 0xeb, 0xdf, 0xd8, 0x7f, - 0xc4, 0x28, 0xe, 0xcb, 0xb, 0x79, 0x7f, 0xdc, 0x99, 0x3f, - 0xa9, 0x15, 0xf7, 0x9d, 0x15, 0x9b, 0xcb, 0x68, 0xf4, 0x6d, - 0x7c, 0xcc, 0x25, 0x93, 0x61, 0x9e, 0xd7, 0x5f, 0x33, 0xf3, - 0xb6, 0xf3, 0xf6, 0x2d, 0xf1, 0x4c, 0x4a, 0x48, 0xd0, 0xe4, - 0x3f, 0xf5, 0xce, 0x44, 0x6f, 0xe4, 0xd5, 0x87, 0x7d, 0xfb, - 0x22, 0x78, 0xae, 0xd7, 0x27, 0xfb, 0xb, 0x50, 0xff, 00, - 0x80, 0x46, 0xcd, 0xfc, 0xab, 0xf4, 0xba, 0x8a, 0x8f, 0xec, - 0xc8, 0xf4, 0x9b, 0xfc, 0xe, 0x79, 0x64, 0x54, 0x1e, 0xd2, - 0x7f, 0x87, 0xf9, 0x1f, 0x96, 0x37, 0xbf, 0xb3, 0x77, 0x88, - 0xec, 0x98, 0xac, 0x9a, 0x6e, 0xa5, 0xb, 0x7a, 0x34, 0x2c, - 0x3f, 0xa5, 0x62, 0xdd, 0x7c, 0x18, 0xd6, 0xad, 0x1b, 0x69, - 0x17, 0x31, 0x91, 0xd9, 0x97, 0x15, 0xfa, 0xd1, 0x51, 0xbd, - 0xbc, 0x52, 0xe7, 0x7c, 0x48, 0xf9, 0xfe, 0xf2, 0x83, 0x50, - 0xf2, 0xd9, 0x74, 0xa9, 0xf8, 0x7f, 0xc1, 0x39, 0x65, 0xc3, - 0xb4, 0xa5, 0xf6, 0x97, 0xfe, 0x3, 0xff, 00, 0x4, 0xfc, - 0x8c, 0x97, 0xe1, 0xa6, 0xb9, 0x7, 0xdd, 0x92, 0x5f, 0xc5, - 0x4d, 0x57, 0x7f, 0x6, 0xf8, 0x86, 0xe, 0x8e, 0xdc, 0x7a, - 0x82, 0x2b, 0xf5, 0xae, 0x7f, 0xb, 0xe8, 0xd7, 0x24, 0x99, - 0xb4, 0x9b, 0x19, 0x49, 0xea, 0x5e, 0xdd, 0xf, 0xf4, 0xac, - 0xd9, 0xbe, 0x19, 0xf8, 0x4e, 0xe0, 0x93, 0x27, 0x87, 0x74, - 0xd2, 0x4f, 0x53, 0xf6, 0x65, 0x1f, 0xd2, 0xb3, 0x79, 0x75, - 0x6e, 0x93, 0x5f, 0x71, 0xc7, 0x3e, 0x18, 0xa6, 0xff, 00, - 0x97, 0xee, 0x3f, 0x28, 0xe, 0x8f, 0xe2, 0x38, 0x3d, 0x4f, - 0xe2, 0x69, 0x9f, 0xf1, 0x51, 0xc1, 0xd6, 0x26, 0x6f, 0xc6, - 0xbf, 0x54, 0x67, 0xf8, 0x29, 0xe0, 0x8b, 0x90, 0x43, 0xf8, - 0x76, 0xd0, 0x67, 0xba, 0xee, 0x5f, 0xe4, 0x6b, 0x1e, 0xef, - 0xf6, 0x6e, 0xf0, 0xd, 0xd0, 0xe3, 0x48, 0x68, 0x4f, 0xac, - 0x73, 0xbf, 0xf5, 0x26, 0xb2, 0x79, 0x75, 0x7f, 0xee, 0xbf, - 0xeb, 0xd0, 0xe4, 0x9f, 0xa, 0x45, 0xed, 0x18, 0xfd, 0xef, - 0xfc, 0x8f, 0xcc, 0x7f, 0xed, 0x6d, 0x7a, 0x1f, 0xbd, 0x6c, - 0xe6, 0x94, 0x78, 0xa7, 0x56, 0x8b, 0xef, 0xda, 0xc9, 0xff, - 00, 0x7c, 0x9a, 0xfd, 0x1f, 0xbc, 0xfd, 0x93, 0xbc, 0xf, - 0x73, 0xfe, 0xad, 0x2f, 0x20, 0xff, 00, 0x76, 0x45, 0x3f, - 0xcd, 0x6b, 0x12, 0xf7, 0xf6, 0x35, 0xf0, 0xbc, 0xf9, 0xf2, - 0x35, 0xb, 0x98, 0xbf, 0xdf, 0x8d, 0x5b, 0xf9, 0x62, 0xb1, - 0x96, 0x5f, 0x5b, 0xf9, 0x13, 0x38, 0xe5, 0xc2, 0x8d, 0x6d, - 0x1f, 0xba, 0x47, 0xe7, 0xf0, 0xf1, 0xcd, 0xe4, 0x63, 0xe7, - 0xb7, 0x71, 0xf5, 0x6, 0xa6, 0x4f, 0x88, 0x4e, 0xbf, 0x7a, - 0x32, 0x3f, 0x3a, 0xfb, 0x82, 0xef, 0xf6, 0x24, 0xd3, 0x64, - 0x3f, 0xb9, 0xd6, 0x94, 0xf, 0xf6, 0xed, 0x7f, 0xfb, 0x2a, - 0xc5, 0xbd, 0xfd, 0x86, 0x4b, 0x67, 0xc9, 0xd5, 0xac, 0xe4, - 0xf4, 0xf3, 0x22, 0x65, 0xff, 00, 0x1a, 0xc1, 0xe0, 0x2a, - 0x75, 0xa3, 0xf8, 0xaf, 0xf3, 0x39, 0x65, 0xc3, 0x15, 0x56, - 0xd1, 0x97, 0xde, 0xbf, 0xcc, 0xf9, 0x6, 0x3f, 0x88, 0xa9, - 0xfc, 0x40, 0x8a, 0xb5, 0x1f, 0xc4, 0x4b, 0x73, 0xd5, 0xb1, - 0xf8, 0xd7, 0xd2, 0xb7, 0xbf, 0xb0, 0xae, 0xaa, 0x1, 0xf2, - 0xa7, 0xd3, 0x26, 0xff, 00, 0x81, 0x11, 0xfc, 0xd6, 0xb9, - 0xfb, 0xef, 0xd8, 0x77, 0xc4, 0x71, 0x3, 0xb2, 0xc2, 0xd6, - 0x6f, 0xfa, 0xe7, 0x32, 0xff, 00, 0x52, 0x2b, 0x9, 0x60, - 0x7b, 0xd2, 0x67, 0x3c, 0xb8, 0x7b, 0x13, 0x1d, 0x9c, 0xfe, - 0xeb, 0x9e, 0x27, 0x1f, 0x8f, 0xad, 0x5b, 0x1f, 0xbc, 0xc5, - 0x59, 0x4f, 0x1b, 0x5a, 0xb7, 0xfc, 0xb5, 0x5f, 0xc6, 0xbd, - 0xe, 0xff, 00, 0xf6, 0x31, 0xf1, 0x4d, 0xbe, 0x4f, 0xf6, - 0x1c, 0x8c, 0x3d, 0x63, 0x60, 0xdf, 0xc8, 0xd7, 0x3f, 0x7b, - 0xfb, 0x28, 0xf8, 0x9a, 0xd4, 0x9c, 0xe8, 0x5a, 0x8a, 0xfb, - 0xac, 0xe, 0x7f, 0xa5, 0x61, 0x2c, 0x15, 0x35, 0xbc, 0x1a, - 0xf9, 0x1c, 0xd2, 0xc9, 0xb1, 0x70, 0xfb, 0x6f, 0xe7, 0x16, - 0x62, 0x27, 0x8b, 0xed, 0x5b, 0xfe, 0x5a, 0xa7, 0xe7, 0x53, - 0xa7, 0x89, 0xad, 0x9f, 0xa4, 0x89, 0xf9, 0xd5, 0x7b, 0xcf, - 0xd9, 0xd7, 0xc4, 0x36, 0x79, 0x2f, 0xa7, 0xea, 0x11, 0x1, - 0xfd, 0xe8, 0x58, 0x7f, 0x4a, 0xc6, 0xb8, 0xf8, 0x3b, 0xac, - 0xdb, 0x67, 0xfe, 0x3e, 0x13, 0x1f, 0xde, 0x43, 0x58, 0x3c, - 0x1d, 0xf, 0x34, 0x60, 0xf2, 0xfc, 0x64, 0x7e, 0xda, 0xf9, - 0xa3, 0xa8, 0x5d, 0x7a, 0xdd, 0xbf, 0x8d, 0x7f, 0x3a, 0x95, - 0x75, 0x78, 0xf, 0xf1, 0xa, 0xe1, 0x24, 0xf8, 0x6f, 0xad, - 0xc3, 0x9d, 0xb2, 0xc9, 0xf8, 0xa1, 0xaa, 0xef, 0xe0, 0xfd, - 0x7e, 0xe, 0x92, 0x31, 0xfc, 0xd, 0x47, 0xd4, 0xa8, 0xbd, - 0xa4, 0x67, 0xf5, 0x5c, 0x6a, 0xeb, 0x16, 0x7a, 0x38, 0xd4, - 0xa1, 0x6f, 0xe2, 0x14, 0xe1, 0x7d, 0x9, 0xfe, 0x31, 0x5e, - 0x62, 0xda, 0x47, 0x88, 0xa0, 0xe8, 0x49, 0xfc, 0x4d, 0x34, - 0xff, 00, 0xc2, 0x43, 0x7, 0x58, 0xd9, 0xbf, 0x1a, 0x87, - 0x97, 0xc7, 0xa4, 0x89, 0xf6, 0x58, 0xe5, 0xf6, 0x13, 0xf9, - 0x9e, 0xa6, 0x2e, 0xa3, 0x3f, 0xc4, 0x29, 0xc2, 0xe1, 0x4f, - 0x47, 0xfd, 0x6b, 0xca, 0x7f, 0xb5, 0xb5, 0xd8, 0x7e, 0xf5, - 0xb4, 0x87, 0xf0, 0xa7, 0xf, 0x14, 0xea, 0xb1, 0x7d, 0xeb, - 0x69, 0x3f, 0xef, 0x9a, 0x97, 0x97, 0x3e, 0x92, 0x44, 0xff, - 00, 0xb5, 0xc7, 0x7a, 0x47, 0xab, 0x8b, 0x93, 0xda, 0x53, - 0xf9, 0xd4, 0x89, 0x7d, 0x32, 0xfd, 0xd9, 0xd8, 0x7f, 0xc0, - 0xab, 0xc9, 0xd7, 0xc7, 0x17, 0x91, 0xfd, 0xfb, 0x77, 0x1f, - 0x81, 0xa9, 0x93, 0xe2, 0x13, 0xaf, 0xde, 0x8d, 0x85, 0x64, - 0xf2, 0xd9, 0xf4, 0xb0, 0x7b, 0x7c, 0x44, 0x77, 0xa7, 0x23, - 0xd6, 0x53, 0x58, 0xbd, 0x4f, 0xbb, 0x75, 0x28, 0xff, 00, - 0x81, 0x1a, 0xb1, 0x1f, 0x89, 0xb5, 0x38, 0xbe, 0xed, 0xe4, - 0xa3, 0xfe, 0x4, 0x6b, 0xc9, 0xa3, 0xf8, 0x88, 0x9d, 0xc3, - 0xf, 0xc6, 0xac, 0xc7, 0xf1, 0xa, 0x3, 0xfc, 0x44, 0x54, - 0x7f, 0x67, 0xd6, 0x5b, 0x21, 0xac, 0xc2, 0xac, 0x77, 0x52, - 0x5f, 0x79, 0xeb, 0x71, 0xf8, 0xe3, 0x5a, 0x8b, 0xa5, 0xf4, - 0x9f, 0xf7, 0xd5, 0x5c, 0x83, 0xe2, 0x6e, 0xbd, 0x6, 0x31, - 0x74, 0xc7, 0xea, 0x4d, 0x79, 0x14, 0x7e, 0x3e, 0xb6, 0x6e, - 0xaf, 0x8a, 0xb3, 0x1f, 0x8d, 0xad, 0x5b, 0xfe, 0x5a, 0x8a, - 0x5f, 0x55, 0xc4, 0x47, 0x6b, 0xfd, 0xec, 0xd5, 0x66, 0xf3, - 0x8f, 0xdb, 0x92, 0x3d, 0x8e, 0x1f, 0x8c, 0x3e, 0x20, 0x8b, - 0x1f, 0xe9, 0x4, 0xe3, 0xdc, 0xd6, 0x8d, 0xbf, 0xc7, 0x7d, - 0x7a, 0x1c, 0x7c, 0xe4, 0xff, 00, 0xc0, 0x8d, 0x78, 0x9a, - 0x78, 0xbe, 0xd5, 0xbf, 0xe5, 0xaa, 0xfe, 0x75, 0x3a, 0x78, - 0x9e, 0xd9, 0xff, 00, 0xe5, 0xa2, 0xfe, 0x74, 0x72, 0xe2, - 0xe1, 0xb3, 0x7f, 0x7b, 0x3a, 0x23, 0x9e, 0x54, 0x5f, 0xf2, - 0xf5, 0x9e, 0xef, 0x6f, 0xfb, 0x45, 0x6b, 0x71, 0x63, 0x73, - 0x31, 0xff, 00, 0x81, 0x1a, 0xd6, 0xb6, 0xfd, 0xa6, 0xf5, - 0x48, 0xb1, 0xb8, 0x39, 0xff, 00, 0x81, 0x57, 0xcf, 0x29, - 0xaf, 0xdb, 0xb7, 0xf1, 0xaf, 0xe7, 0x52, 0xae, 0xb1, 0x3, - 0x7f, 0x10, 0xfc, 0xea, 0xd6, 0x23, 0x1b, 0xd, 0xa6, 0xce, - 0xb8, 0x71, 0x5, 0x65, 0xb5, 0x53, 0xe9, 0x4b, 0x6f, 0xda, - 0x92, 0xec, 0x7f, 0xac, 0xdd, 0x5a, 0xd6, 0xdf, 0xb5, 0x42, - 0xf1, 0xbd, 0x41, 0xfa, 0x8a, 0xf9, 0x65, 0x75, 0x38, 0x4f, - 0xf1, 0xf, 0xce, 0x9e, 0x2f, 0xa1, 0x6f, 0xe2, 0x15, 0xa2, - 0xcc, 0x71, 0xf1, 0xfb, 0x6c, 0xeb, 0x8f, 0x11, 0x62, 0x3f, - 0x9d, 0x1f, 0x5b, 0xdb, 0x7e, 0xd4, 0x56, 0x6f, 0x8f, 0x30, - 0x20, 0xfc, 0x2b, 0x56, 0xf, 0xda, 0x63, 0x49, 0x93, 0x19, - 0xf2, 0xfe, 0xb9, 0x22, 0xbe, 0x35, 0x17, 0x31, 0x1f, 0xe2, - 0x14, 0xf1, 0x3a, 0x1e, 0x8f, 0xfa, 0xd6, 0xcb, 0x38, 0xc7, - 0x47, 0xed, 0x7e, 0x7, 0x5c, 0x78, 0x8f, 0x11, 0xe4, 0xcf, - 0xb6, 0xad, 0xff, 00, 0x68, 0x6d, 0xe, 0x5c, 0x6e, 0x78, - 0xc7, 0xfc, 0xa, 0xb4, 0xa0, 0xf8, 0xe7, 0xe1, 0xf9, 0xb1, - 0x89, 0x57, 0xfe, 0xfa, 0xaf, 0x85, 0x44, 0xe3, 0xb3, 0xfe, - 0xb4, 0xf5, 0xba, 0x91, 0x7a, 0x4a, 0xc3, 0xe8, 0xd5, 0xb2, - 0xcf, 0x71, 0x8b, 0x74, 0x8e, 0xa8, 0xf1, 0x25, 0x5e, 0xb1, - 0x3e, 0xf8, 0xb7, 0xf8, 0xb9, 0xa0, 0x4c, 0x1, 0xfb, 0x48, - 0x1f, 0x8d, 0x5d, 0x8b, 0xe2, 0x4e, 0x83, 0x37, 0xdd, 0xbc, - 0x5a, 0xfc, 0xff, 00, 0x5d, 0x46, 0xe5, 0x7a, 0x5c, 0x3f, - 0xfd, 0xf5, 0x53, 0xc7, 0xae, 0xea, 0x11, 0xfd, 0xdb, 0xb9, - 0x7, 0xd1, 0xab, 0x75, 0xc4, 0x35, 0xd6, 0xf0, 0x47, 0x44, - 0x78, 0x91, 0xf5, 0x81, 0xfa, 0xd, 0x1f, 0x8d, 0x74, 0x69, - 0x7a, 0x5f, 0x46, 0x3e, 0xa6, 0xac, 0xc7, 0xe2, 0x5d, 0x32, - 0x5f, 0xbb, 0x7b, 0x11, 0xfc, 0x6b, 0xf3, 0xe5, 0x3c, 0x5b, - 0xab, 0x47, 0x8c, 0x5e, 0xcb, 0xff, 00, 0x7d, 0x55, 0xb8, - 0x7c, 0x7f, 0xad, 0xc3, 0xf7, 0x6f, 0x5f, 0xf1, 0x35, 0xb2, - 0xe2, 0x29, 0x7d, 0xaa, 0x7f, 0x89, 0xd1, 0x1e, 0x24, 0xa6, - 0xf7, 0x89, 0xfa, 0x6, 0x9a, 0xb5, 0x9b, 0xfd, 0xdb, 0xa8, - 0x8f, 0xfc, 0x8, 0x54, 0xa9, 0x79, 0x3, 0xfd, 0xd9, 0x91, - 0xbe, 0x8c, 0x2b, 0xe0, 0x48, 0x7e, 0x29, 0xeb, 0xf1, 0x1f, - 0xf8, 0xfb, 0x73, 0xf8, 0xd6, 0x84, 0x1f, 0x1a, 0x7c, 0x41, - 0x7, 0xfc, 0xb7, 0x27, 0xf1, 0xad, 0xe3, 0xc4, 0x50, 0xeb, - 0x4d, 0xfe, 0x7, 0x44, 0x78, 0x87, 0xe, 0xf7, 0x4c, 0xfb, - 0xbc, 0x3a, 0x9e, 0x8c, 0xf, 0xe3, 0x4b, 0x90, 0x7b, 0xd7, - 0xc3, 0xf6, 0xff, 00, 0x1f, 0x35, 0xc8, 0xb1, 0xba, 0x47, - 0x6f, 0xf8, 0x15, 0x6a, 0x5b, 0xfe, 0xd2, 0x1a, 0xc4, 0x3d, - 0x4b, 0xff, 00, 0xdf, 0x55, 0xd1, 0x1e, 0x21, 0xc3, 0xbd, - 0xe2, 0xd1, 0xd1, 0x1c, 0xfb, 0x8, 0xfa, 0x9f, 0x66, 0xd1, - 0x5f, 0x22, 0xdb, 0x7e, 0xd3, 0xba, 0x8a, 0xe3, 0xcc, 0x32, - 0x1f, 0x6c, 0xd6, 0xad, 0xbf, 0xed, 0x4d, 0x38, 0xc6, 0xe0, - 0xdf, 0x8e, 0x2b, 0x68, 0xe7, 0xd8, 0x37, 0xbb, 0x6b, 0xe4, - 0x6f, 0x1c, 0xe7, 0x7, 0x2f, 0xb4, 0x7d, 0x4b, 0x45, 0x7c, - 0xdf, 0x6b, 0xfb, 0x52, 0x46, 0x71, 0xe6, 0x7e, 0xa2, 0xb5, - 0x2d, 0xff, 00, 0x69, 0xfb, 0x17, 0xc0, 0x65, 0x5f, 0xa9, - 0xad, 0xe3, 0x9d, 0x60, 0xa5, 0xf6, 0xce, 0x88, 0xe6, 0x78, - 0x59, 0x6d, 0x33, 0xdf, 0x28, 0xaf, 0x18, 0xb7, 0xfd, 0xa4, - 0x74, 0x87, 0xc6, 0xf3, 0x18, 0xff, 00, 0x81, 0x56, 0x9d, - 0xbf, 0xed, 0x3, 0xa1, 0xcd, 0x8e, 0x57, 0xfe, 0xfb, 0xae, - 0x88, 0xe6, 0x78, 0x39, 0x6d, 0x51, 0x1b, 0xac, 0x6e, 0x1e, - 0x5b, 0x4d, 0x1e, 0xa9, 0x45, 0x79, 0xec, 0x1f, 0x1a, 0xf4, - 0x9, 0x40, 0xcc, 0xa0, 0x7f, 0xc0, 0x85, 0x5f, 0x83, 0xe2, - 0xc6, 0x83, 0x39, 0xe2, 0xe3, 0x1f, 0x88, 0xae, 0x85, 0x8c, - 0xc3, 0xcb, 0x69, 0xa3, 0x55, 0x88, 0xa4, 0xf6, 0x92, 0x3b, - 0x3a, 0x2b, 0x9a, 0x8f, 0xe2, 0x16, 0x87, 0x27, 0xfc, 0xbe, - 0x28, 0xfc, 0x6a, 0xdc, 0x5e, 0x32, 0xd2, 0x26, 0x3f, 0x2d, - 0xec, 0x7f, 0x9d, 0x6c, 0xab, 0x52, 0x7b, 0x49, 0x1a, 0x2a, - 0x90, 0x7d, 0x4d, 0xaa, 0x2b, 0x39, 0x3c, 0x41, 0xa7, 0x3f, - 0x4b, 0xc8, 0xbf, 0xef, 0xaa, 0x9d, 0x35, 0x4b, 0x49, 0x3e, - 0xed, 0xcc, 0x67, 0xfe, 0x4, 0x2a, 0xd4, 0xe2, 0xf6, 0x65, - 0x73, 0x27, 0xd4, 0xb5, 0x55, 0xb5, 0x27, 0xf2, 0xac, 0x2e, - 0x1b, 0xd1, 0x9, 0xfd, 0x2a, 0x41, 0x73, 0xb, 0x74, 0x95, - 0xf, 0xfc, 0x8, 0x56, 0x4f, 0x8b, 0xb5, 0x58, 0x34, 0xef, - 0xf, 0x5e, 0xcd, 0x24, 0xaa, 0x2, 0xc6, 0x7f, 0x88, 0x52, - 0x9c, 0x92, 0x8b, 0x62, 0x94, 0x92, 0x8b, 0x67, 0xc3, 0xff, - 00, 0x18, 0xef, 0x47, 0xf6, 0xe4, 0xc4, 0x9f, 0xe2, 0x3f, - 0xce, 0xbe, 0x6a, 0xf8, 0x9d, 0xe2, 0x25, 0x8a, 0xdd, 0xe2, - 0x57, 0xc1, 0xc1, 0xef, 0x5e, 0xa7, 0xf1, 0xaf, 0xc6, 0xf0, - 0x7f, 0x69, 0x5c, 0x4a, 0xae, 0x32, 0x58, 0xe0, 0x66, 0xbe, - 0x67, 0xbe, 0x87, 0x53, 0xf8, 0x83, 0xe2, 0x5b, 0x1d, 0x13, - 0x4b, 0x89, 0xee, 0x75, 0x2d, 0x4a, 0xe1, 0x6d, 0xad, 0xe2, - 0x5e, 0x4b, 0x33, 0x1c, 0xa, 0xf8, 0x3c, 0xbf, 0xc, 0xe5, - 0x39, 0x56, 0x7d, 0x5b, 0xb1, 0xf8, 0x9d, 0x78, 0x4b, 0x33, - 0xcc, 0xb9, 0x21, 0xf0, 0xa6, 0x7e, 0x80, 0x7f, 0xc1, 0x2d, - 0xbc, 0x19, 0x36, 0x97, 0xf0, 0xa3, 0xc5, 0x3e, 0x28, 0xb8, - 0x8c, 0xab, 0x6b, 0xda, 0xb6, 0xd8, 0x58, 0xff, 00, 0x14, - 0x30, 0x26, 0xc0, 0x7f, 0xef, 0xb6, 0x93, 0xf2, 0xaf, 0xb5, - 0x6b, 0x88, 0xf8, 0x27, 0xf0, 0xda, 0xdf, 0xe1, 0xf, 0xc2, - 0x9f, 0xc, 0xf8, 0x42, 0xdc, 0xab, 0x8d, 0x2e, 0xcd, 0x22, - 0x92, 0x45, 0x18, 0xf3, 0x25, 0x3f, 0x34, 0x8d, 0xf8, 0xb1, - 0x63, 0x5d, 0xbd, 0x7d, 0xec, 0x23, 0xcb, 0x14, 0x8f, 0xda, - 0x68, 0xc3, 0xd9, 0x53, 0x8c, 0x3b, 0x20, 0xa2, 0x8a, 0x2a, - 0xcd, 0x82, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0xa3, 0x92, - 0xde, 0x29, 0x86, 0x24, 0x89, 0x1c, 0x7f, 0xb4, 0xa0, 0xd4, - 0x94, 0x51, 0xb8, 0x19, 0x97, 0x3e, 0x19, 0xd1, 0xef, 0x41, - 0x17, 0x1a, 0x55, 0x94, 0xc0, 0xf6, 0x92, 0xdd, 0xf, 0xf3, - 0x15, 0x97, 0x75, 0xf0, 0xcb, 0xc2, 0x77, 0x83, 0x12, 0xf8, - 0x7b, 0x4f, 0x3f, 0xee, 0xc0, 0xab, 0xfc, 0xb1, 0x5d, 0x3d, - 0x15, 0x9b, 0xa7, 0x9, 0x6f, 0x14, 0x64, 0xe9, 0x53, 0x97, - 0xc5, 0x14, 0xfe, 0x47, 0x5, 0x75, 0xf0, 0x2b, 0xc0, 0xd7, - 0x9f, 0x7f, 0x40, 0x85, 0x7f, 0xdc, 0x91, 0xd7, 0xf9, 0x35, - 0x64, 0xdc, 0x7e, 0xcd, 0x1e, 0x2, 0xb8, 0x24, 0xff, 00, - 0x65, 0xcb, 0x1e, 0x7b, 0x24, 0xed, 0xfd, 0x73, 0x5e, 0xa7, - 0x45, 0x62, 0xf0, 0xb4, 0x1e, 0xf0, 0x5f, 0x71, 0x83, 0xc1, - 0xe1, 0xa5, 0xbd, 0x35, 0xf7, 0x23, 0xc5, 0xae, 0x7f, 0x64, - 0xbf, 0x3, 0x5c, 0x64, 0xa8, 0xbe, 0x8b, 0x3d, 0x2, 0xca, - 0xa4, 0xf, 0xcd, 0x6b, 0x16, 0xeb, 0xf6, 0x32, 0xf0, 0xb4, - 0xa1, 0xbc, 0xad, 0x46, 0xee, 0x33, 0xdb, 0x72, 0x29, 0xff, - 00, 0xa, 0xfa, 0xe, 0x8a, 0xcd, 0xe0, 0x70, 0xef, 0xec, - 0x19, 0x3c, 0xbb, 0x8, 0xff, 00, 0xe5, 0xda, 0x3e, 0x61, - 0xbb, 0xfd, 0x88, 0xb4, 0xe7, 0x53, 0xe4, 0xeb, 0x99, 0x3d, - 0x83, 0xdb, 0x60, 0x7f, 0xe8, 0x55, 0xcf, 0xdf, 0x7e, 0xc3, - 0x77, 0x27, 0xfd, 0x46, 0xa5, 0x63, 0x2f, 0xfb, 0xe1, 0x97, - 0xff, 00, 0x65, 0x35, 0xf5, 0xf5, 0x15, 0x93, 0xcb, 0xb0, - 0xef, 0x64, 0xd7, 0xcd, 0x98, 0xbc, 0xab, 0x8, 0xfe, 0xcd, - 0xbe, 0x6c, 0xf8, 0x92, 0xf7, 0xf6, 0x18, 0xd6, 0xb9, 0xf2, - 0xdb, 0x4e, 0x97, 0xfd, 0xd9, 0x48, 0xfe, 0x6a, 0x2b, 0x6, - 0xfb, 0xf6, 0x1e, 0xf1, 0x2c, 0x64, 0xec, 0xd3, 0xad, 0xa6, - 0xf7, 0x4b, 0x84, 0xfe, 0xa4, 0x57, 0xdf, 0x34, 0x54, 0x3c, - 0xb2, 0x8f, 0x46, 0xfe, 0xf3, 0x7, 0x93, 0x61, 0x9f, 0x57, - 0xf7, 0xff, 00, 0xc0, 0x3f, 0x39, 0xaf, 0x7f, 0x63, 0x1f, - 0x15, 0xdb, 0x92, 0x3f, 0xb0, 0x65, 0x6f, 0xfa, 0xe7, 0x22, - 0xb7, 0xf2, 0x26, 0xb0, 0x2f, 0x7f, 0x65, 0xf, 0x14, 0x5a, - 0x12, 0xe, 0x83, 0xa8, 0xae, 0x3f, 0xbb, 0x13, 0x37, 0xf2, - 0x15, 0xfa, 0x71, 0x45, 0x43, 0xcb, 0x23, 0xd2, 0x6c, 0xc2, - 0x59, 0x15, 0x7, 0xb4, 0x9f, 0xe1, 0xfe, 0x47, 0xe5, 0x3d, - 0xef, 0xec, 0xfd, 0xad, 0xd9, 0x13, 0xe6, 0x59, 0x5e, 0xc3, - 0xfe, 0xfa, 0x11, 0xfc, 0xc5, 0x64, 0x4f, 0xf0, 0x8f, 0x56, - 0xb7, 0x24, 0x3, 0x32, 0xff, 00, 0xbc, 0x2b, 0xf5, 0xb8, - 0xa8, 0x3d, 0x40, 0x35, 0xc, 0x96, 0x16, 0xd3, 0xc, 0x49, - 0x6f, 0x14, 0x83, 0xfd, 0xa4, 0x6, 0xb3, 0x79, 0x6c, 0xfa, - 0x54, 0xfc, 0x3f, 0xe0, 0x9c, 0x92, 0xe1, 0xda, 0x72, 0xfb, - 0x4b, 0xff, 00, 0x1, 0xff, 00, 0x82, 0x7e, 0x45, 0xc9, - 0xf0, 0xeb, 0x5a, 0x83, 0xa4, 0x8f, 0xf8, 0xa9, 0xaa, 0xcf, - 0xe1, 0x1d, 0x7e, 0x1e, 0x8f, 0xf9, 0xe4, 0x57, 0xeb, 0x7c, - 0xfe, 0x15, 0xd1, 0x6e, 0xbf, 0xd7, 0x69, 0x16, 0x32, 0xff, - 00, 0xbf, 0x6c, 0x87, 0xfa, 0x56, 0x65, 0xcf, 0xc3, 0xf, - 0x9, 0x5d, 0xff, 00, 0xad, 0xf0, 0xee, 0x9c, 0x7d, 0xc5, - 0xba, 0xaf, 0xf2, 0xa8, 0x79, 0x75, 0x6e, 0x93, 0x4f, 0xe4, - 0x72, 0x4f, 0x86, 0x29, 0xbd, 0xb9, 0x7e, 0xe3, 0xf2, 0x7c, - 0xe9, 0x3e, 0x22, 0x83, 0xa7, 0x3f, 0xf0, 0x23, 0x4d, 0xff, - 00, 0x8a, 0x8a, 0x1f, 0xf9, 0x66, 0x5b, 0x1e, 0xf5, 0xfa, - 0x9b, 0x75, 0xf0, 0x2b, 0xc0, 0xb7, 0x79, 0xdf, 0xe1, 0xeb, - 0x75, 0xcf, 0xfc, 0xf3, 0x77, 0x5f, 0xe4, 0x6b, 0x26, 0xe7, - 0xf6, 0x67, 0xf0, 0x5, 0xc0, 0x23, 0xfb, 0x2a, 0x48, 0xb3, - 0xdd, 0x27, 0x6f, 0xeb, 0x9a, 0xc9, 0xe5, 0xf5, 0xff, 00, - 0xba, 0xff, 00, 0xaf, 0x43, 0x8e, 0x7c, 0x29, 0x17, 0xf6, - 0x63, 0xf7, 0xbf, 0xf2, 0x3f, 0x32, 0x3f, 0xb5, 0xb5, 0xc8, - 0x4f, 0xcd, 0x6e, 0xe7, 0xf0, 0xcd, 0x28, 0xf1, 0x46, 0xab, - 0x17, 0xdf, 0xb7, 0x7f, 0xfb, 0xe6, 0xbf, 0x48, 0x2e, 0xff, - 00, 0x64, 0xbf, 0x2, 0xdc, 0x8f, 0x91, 0x2f, 0x61, 0xff, - 00, 0x76, 0x55, 0x3f, 0xcd, 0x6b, 0x1e, 0xf3, 0xf6, 0x33, - 0xf0, 0xa4, 0xc3, 0xf7, 0x1a, 0x85, 0xe4, 0x47, 0xfd, 0xb5, - 0x56, 0xff, 00, 0xa, 0xc9, 0xe0, 0x2b, 0x7f, 0x22, 0x67, - 0x24, 0xb8, 0x51, 0xad, 0xa1, 0xf7, 0x48, 0xfc, 0xfa, 0x5f, - 0x1c, 0x5d, 0xc7, 0xf7, 0xe1, 0x61, 0xff, 00, 0x1, 0x35, - 0x32, 0x7c, 0x41, 0x71, 0xf7, 0x90, 0x8f, 0xce, 0xbe, 0xe2, - 0xbd, 0xfd, 0x88, 0x74, 0xc9, 0x3f, 0xe3, 0xdf, 0x5b, 0xc0, - 0xff, 00, 0xa6, 0x96, 0xdf, 0xe0, 0xd5, 0x81, 0x79, 0xfb, - 0xc, 0x4e, 0xcc, 0x7c, 0x9d, 0x52, 0xc5, 0xd7, 0xb6, 0xf5, - 0x65, 0x3f, 0xfa, 0x9, 0xac, 0x1e, 0x2, 0xa7, 0x5a, 0x5f, - 0x91, 0xcb, 0x2e, 0x17, 0xab, 0x1d, 0xa3, 0x2f, 0xbd, 0x7f, - 0x99, 0xf2, 0x24, 0x7f, 0x11, 0x13, 0xbe, 0x6a, 0xd4, 0x7f, - 0x10, 0xa0, 0x38, 0xcb, 0x11, 0x5f, 0x4a, 0x5d, 0xfe, 0xc2, - 0xfa, 0xcf, 0x3e, 0x5b, 0xe9, 0xb2, 0xe, 0xd8, 0x90, 0x8f, - 0xe6, 0xb5, 0x83, 0x79, 0xfb, 0xe, 0xf8, 0x99, 0x41, 0x29, - 0xa7, 0xdb, 0x49, 0xfe, 0xe5, 0xc2, 0xf, 0xeb, 0x58, 0x3c, - 0xf, 0x7a, 0x4c, 0xe6, 0x97, 0xe, 0xe2, 0x23, 0xb7, 0x3f, - 0xdd, 0x73, 0xc4, 0xa3, 0xf1, 0xed, 0xb3, 0x7f, 0xcb, 0x4f, - 0xd2, 0xac, 0xc7, 0xe3, 0x7b, 0x66, 0xff, 00, 0x96, 0xa2, - 0xbd, 0x16, 0xf7, 0xf6, 0x2e, 0xf1, 0x64, 0xa, 0xcd, 0xfd, - 0x83, 0x23, 0x1, 0xff, 00, 0x3c, 0xe5, 0x56, 0xfd, 0x3, - 0x57, 0x3f, 0x7d, 0xfb, 0x28, 0x78, 0xa6, 0xd0, 0x16, 0x7d, - 0x3, 0x51, 0x50, 0x3b, 0xac, 0x4c, 0x7f, 0xa5, 0x60, 0xf0, - 0x54, 0xd6, 0xf0, 0x6b, 0xe4, 0x73, 0xcb, 0x25, 0xc5, 0xc3, - 0xed, 0xc9, 0x7a, 0xa6, 0x61, 0x27, 0x8c, 0x2d, 0x5b, 0xfe, - 0x5a, 0xad, 0x58, 0x4f, 0x14, 0x5b, 0x3f, 0xfc, 0xb4, 0x5f, - 0xce, 0xaa, 0x5f, 0x7e, 0xcf, 0xda, 0xe5, 0x8e, 0x7c, 0xdb, - 0x1b, 0xf8, 0xf, 0xfb, 0x71, 0xb0, 0xfe, 0x62, 0xb2, 0x27, - 0xf8, 0x47, 0xaa, 0xdb, 0xe7, 0x99, 0xd7, 0xea, 0xb5, 0x83, - 0xc2, 0x50, 0xf4, 0x39, 0xde, 0x5f, 0x8b, 0x8f, 0xfc, 0xbc, - 0x5f, 0x34, 0x75, 0x2b, 0xaf, 0xdb, 0xb7, 0xf1, 0x8f, 0xce, - 0xa5, 0x5d, 0x62, 0x16, 0xee, 0x2b, 0x83, 0x93, 0xe1, 0xd6, - 0xb3, 0xf, 0xdd, 0x95, 0xc7, 0xd5, 0x6a, 0xbb, 0xf8, 0x3f, - 0x5e, 0x83, 0xa4, 0x9f, 0xce, 0xb3, 0xfa, 0x95, 0x17, 0xb4, - 0x88, 0xfa, 0xae, 0x35, 0x6d, 0x28, 0xb3, 0xd2, 0x6, 0xa9, - 0x9, 0xfe, 0x2a, 0x78, 0xbf, 0x84, 0xff, 00, 0x10, 0xaf, - 0x2f, 0x3a, 0x37, 0x88, 0x61, 0xe8, 0x73, 0xff, 00, 0x2, - 0xa6, 0x95, 0xf1, 0xc, 0x3d, 0x50, 0x9f, 0xa3, 0x54, 0xbc, - 0xbe, 0x1d, 0x24, 0x4f, 0xb1, 0xc7, 0x2f, 0xb2, 0x9f, 0xcc, - 0xf5, 0x51, 0x77, 0x11, 0xfe, 0x2a, 0x70, 0x9e, 0x33, 0xfc, - 0x55, 0xe5, 0x3, 0x52, 0xd7, 0xa1, 0xfb, 0xd0, 0x39, 0xa7, - 0x7f, 0xc2, 0x4d, 0xaa, 0xc5, 0xf7, 0xe0, 0x93, 0xfe, 0xf9, - 0xa9, 0x79, 0x77, 0x69, 0x12, 0xd6, 0x32, 0x3b, 0xd2, 0x3d, - 0x58, 0x4c, 0xbd, 0x9a, 0x9e, 0xb3, 0x11, 0xd2, 0x43, 0xf9, - 0xd7, 0x94, 0x2f, 0x8d, 0x6f, 0x53, 0xef, 0x42, 0xff, 00, - 0x8a, 0x9a, 0x95, 0x3e, 0x20, 0x4a, 0xbf, 0x79, 0x18, 0x7e, - 0x6, 0xb3, 0x79, 0x6c, 0xfa, 0x32, 0x7d, 0xae, 0x22, 0x3b, - 0xd2, 0x67, 0xaa, 0xad, 0xd4, 0x8b, 0xd2, 0x56, 0x1f, 0x8d, - 0x4c, 0x9a, 0xa5, 0xda, 0x7d, 0xdb, 0x89, 0x7, 0xd1, 0xab, - 0xcb, 0x23, 0xf8, 0x88, 0xbd, 0xc1, 0x15, 0x66, 0x3f, 0x88, - 0x50, 0x9e, 0xac, 0x6b, 0x37, 0x97, 0x55, 0x5d, 0x3, 0xeb, - 0xb5, 0x23, 0xbc, 0x64, 0x8f, 0x51, 0x8f, 0xc4, 0x3a, 0x8c, - 0x47, 0x2b, 0x75, 0x27, 0xfd, 0xf4, 0x6a, 0xdc, 0x5e, 0x33, - 0xd6, 0x22, 0xfb, 0xb7, 0x8e, 0x3f, 0x1a, 0xf2, 0xd8, 0xfc, - 0x7d, 0x6e, 0x7f, 0x8c, 0xd4, 0xeb, 0xe3, 0xab, 0x6c, 0x64, - 0xcb, 0x8a, 0xcf, 0xea, 0x35, 0xa3, 0xb2, 0x34, 0x59, 0xa4, - 0xa3, 0xd6, 0x4b, 0xef, 0x3d, 0x56, 0x1f, 0x88, 0x9a, 0xe4, - 0x3d, 0x2e, 0xd8, 0xfd, 0x4d, 0x5e, 0x8f, 0xe2, 0xe6, 0xbd, - 0x7, 0xfc, 0xbc, 0xd7, 0x8b, 0x5c, 0x7c, 0x42, 0xb4, 0x88, - 0x1f, 0xde, 0xd6, 0x16, 0xa7, 0xf1, 0x4e, 0xde, 0x30, 0x76, - 0x36, 0xe3, 0x5d, 0x14, 0xf0, 0x78, 0xa7, 0xb3, 0x6b, 0xe6, - 0xcd, 0x16, 0x73, 0x5f, 0x6a, 0x6e, 0x4c, 0xfa, 0x2f, 0xfe, - 0x17, 0xe6, 0xb1, 0x62, 0x32, 0xd3, 0xee, 0x23, 0xde, 0xb8, - 0x5f, 0x88, 0x3f, 0xb4, 0xad, 0xfd, 0xed, 0x94, 0xd0, 0xbd, - 0xe3, 0x7c, 0xc3, 0x5, 0x1, 0xe2, 0xbe, 0x7b, 0xd6, 0x7e, - 0x22, 0xde, 0x5f, 0x16, 0x58, 0x89, 0x55, 0x35, 0x99, 0xe1, - 0xdf, 0xb, 0xf8, 0x87, 0xe2, 0x26, 0xbb, 0x6f, 0xa5, 0xe8, - 0xd6, 0x17, 0x3a, 0xae, 0xa3, 0x70, 0xdb, 0x63, 0x82, 0x4, - 0x2c, 0x4f, 0xf8, 0x1, 0xea, 0x78, 0x15, 0xed, 0xd0, 0xc0, - 0xd4, 0x4a, 0xd5, 0x66, 0xdf, 0x95, 0xcd, 0xe3, 0x8b, 0xcc, - 0x71, 0x5e, 0xe5, 0x49, 0xf2, 0xc5, 0xf4, 0xea, 0xc8, 0x7c, - 0x53, 0xe2, 0xcb, 0x9f, 0x10, 0x5d, 0x33, 0xb3, 0x33, 0x64, - 0xf0, 0x7, 0x7a, 0xfb, 0xf3, 0xf6, 0x15, 0xfd, 0x91, 0x66, - 0xf0, 0x1a, 0x45, 0xf1, 0xf, 0xc6, 0x76, 0x5e, 0x5f, 0x88, - 0xee, 0x13, 0x3a, 0x5d, 0x94, 0x87, 0x26, 0xce, 0x26, 0x5e, - 0x64, 0x71, 0xda, 0x46, 0x7, 0xa7, 0xf0, 0x8f, 0x73, 0xc6, - 0xcf, 0xec, 0xb3, 0xfb, 0xb, 0xe9, 0xff, 00, 0xc, 0x65, - 0xb7, 0xf1, 0x37, 0x8d, 0xd2, 0xdf, 0x57, 0xf1, 0x3a, 0x10, - 0xf6, 0xd6, 0x6a, 0x7c, 0xcb, 0x7b, 0x2e, 0x3a, 0x9c, 0x8c, - 0x3c, 0x9e, 0xfd, 0x7, 0x6c, 0xf5, 0xaf, 0xae, 0xab, 0xe9, - 0xf0, 0xf8, 0x75, 0x4, 0x9b, 0x5e, 0x88, 0xfd, 0xf, 0x26, - 0xca, 0x56, 0x12, 0x2a, 0xa5, 0x45, 0x67, 0xd1, 0x7f, 0x9f, - 0x98, 0x51, 0x45, 0x15, 0xe8, 0x1f, 0x58, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x21, 00, 0xf5, 0xa8, 0xa5, 0xb3, 0xb7, - 0x9b, 0xfd, 0x64, 0x11, 0xc9, 0xfe, 0xf2, 0x3, 0x45, 0x14, - 0xad, 0x71, 0x5a, 0xe5, 0x19, 0xfc, 0x2d, 0xa3, 0x5c, 0x92, - 0x66, 0xd2, 0x2c, 0x65, 0x27, 0xbb, 0xdb, 0x21, 0xfe, 0x95, - 0x9b, 0x71, 0xf0, 0xcf, 0xc2, 0x77, 0x44, 0x99, 0x7c, 0x3b, - 0xa6, 0xb1, 0x3f, 0xf4, 0xec, 0xa3, 0xf9, 0xa, 0x28, 0xa8, - 0x74, 0xe0, 0xf7, 0x8a, 0x33, 0x74, 0xa9, 0xcb, 0x78, 0xaf, - 0xb8, 0xc7, 0xbb, 0xf8, 0x13, 0xe0, 0x5b, 0xdc, 0xef, 0xf0, - 0xfd, 0xba, 0x93, 0xde, 0x36, 0x65, 0xfe, 0x46, 0xb1, 0xee, - 0xff, 00, 0x66, 0x4f, 0x1, 0x5d, 0x74, 0xd3, 0xa5, 0x87, - 0xfe, 0xb9, 0xcc, 0x7f, 0xae, 0x68, 0xa2, 0xb1, 0x78, 0x5a, - 0xf, 0x78, 0x2f, 0xb8, 0xc2, 0x58, 0x3c, 0x34, 0xb7, 0xa6, - 0xbe, 0xe4, 0x63, 0x5d, 0x7e, 0xc8, 0xbe, 0xa, 0x9f, 0xee, - 0x49, 0x7d, 0x17, 0xb0, 0x74, 0x3f, 0xfb, 0x2d, 0x64, 0x5d, - 0x7e, 0xc6, 0x1e, 0x19, 0x97, 0x3e, 0x4e, 0xa9, 0x77, 0x17, - 0xfb, 0xd1, 0xab, 0x7f, 0x85, 0x14, 0x56, 0x6f, 0x3, 0x86, - 0x7f, 0x60, 0xc5, 0xe5, 0xd8, 0x47, 0xff, 00, 0x2e, 0xd1, - 0x8b, 0x7b, 0xfb, 0x10, 0x69, 0xd2, 0x3, 0xe4, 0x6b, 0xdc, - 0xf6, 0x12, 0x5a, 0xff, 00, 0x83, 0x56, 0xd, 0xf7, 0xec, - 0x31, 0x71, 0x83, 0xf6, 0x7d, 0x5a, 0xca, 0x53, 0xd8, 0x49, - 0x1b, 0x2f, 0xf4, 0x34, 0x51, 0x59, 0xbc, 0xbb, 0xe, 0xf6, - 0x56, 0xf9, 0xb3, 0x27, 0x95, 0x61, 0x1f, 0xd9, 0xb7, 0xcd, - 0x98, 0x17, 0xdf, 0xb0, 0xce, 0xb8, 0xa0, 0xf9, 0x6d, 0xa7, - 0x4f, 0xec, 0xb2, 0x63, 0xf9, 0xa8, 0xae, 0x7e, 0xff, 00, - 0xf6, 0x24, 0xf1, 0x44, 0x59, 0xd9, 0xa5, 0xc1, 0x37, 0xbc, - 0x73, 0x47, 0xfd, 0x5a, 0x8a, 0x2b, 0x29, 0x65, 0xb4, 0xba, - 0x37, 0xf7, 0xff, 00, 0xc0, 0x39, 0xe5, 0x93, 0x61, 0xba, - 0x37, 0xf7, 0xff, 00, 0xc0, 0x30, 0x2f, 0x3f, 0x63, 0x6f, - 0x16, 0x43, 0xff, 00, 0x32, 0xfc, 0xed, 0xff, 00, 0x5c, - 0xd9, 0x5b, 0xf9, 0x1a, 0xc1, 0xbf, 0xfd, 0x94, 0x3c, 0x55, - 0x6d, 0x90, 0x7c, 0x3f, 0xa9, 0x8f, 0x75, 0x85, 0x98, 0x7e, - 0x82, 0x8a, 0x2b, 0x86, 0xa6, 0x16, 0x34, 0xf6, 0x93, 0xfe, - 0xbe, 0x47, 0x97, 0x5f, 0x2c, 0xa3, 0x4d, 0x68, 0xdf, 0xe1, - 0xfe, 0x46, 0xb, 0x7e, 0xcc, 0x1e, 0x23, 0xb9, 0x9f, 0xcb, - 0x5d, 0x1e, 0xfc, 0xbe, 0x7a, 0x1b, 0x77, 0x3f, 0xd2, 0xb4, - 0x34, 0xff, 00, 0xd8, 0x8f, 0xc7, 0x7a, 0xc4, 0xaa, 0xb0, - 0xe8, 0x57, 0x10, 0x8c, 0xfd, 0xfb, 0x8c, 0x44, 0xb8, 0xf5, - 0xf9, 0x88, 0xa2, 0x8a, 0x58, 0x7a, 0x4e, 0xa4, 0xac, 0xe4, - 0xff, 00, 0xf, 0xf2, 0x38, 0x68, 0x65, 0x54, 0x31, 0x4e, - 0xd3, 0x6d, 0x7a, 0x5b, 0xfc, 0x8f, 0x62, 0xf8, 0x79, 0xff, - 00, 0x4, 0xdc, 0x88, 0x3a, 0x5c, 0x78, 0xc3, 0x5c, 0x8, - 0xa0, 0x83, 0xf6, 0x3d, 0x34, 0x6e, 0x63, 0xec, 0x64, 0x61, - 0x81, 0xf8, 0x3, 0xf5, 0xaf, 0xae, 0x3e, 0x1d, 0xfc, 0x27, - 0xf0, 0xaf, 0xc2, 0xad, 0x29, 0x6c, 0x3c, 0x33, 0xa3, 0xdb, - 0xe9, 0xc9, 0x8c, 0x3c, 0xca, 0xbb, 0xa6, 0x97, 0xdd, 0xdc, - 0xf2, 0x68, 0xa2, 0xbe, 0x82, 0x14, 0x61, 0x4f, 0x6d, 0xcf, - 0xac, 0xc1, 0xe5, 0x98, 0x5c, 0xe, 0xb4, 0x61, 0xaf, 0x77, - 0xab, 0xfb, 0xff, 00, 0xc8, 0xeb, 0xa8, 0xa2, 0x8a, 0xd8, - 0xf5, 0x42, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0xf, - 0xff, 0xd9, 0}; - -static const char data_runtime_shtml[] = { - /* /runtime.shtml */ - 0x2f, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x20, 0x6f, 0x6e, 0x4c, 0x6f, 0x61, 0x64, - 0x3d, 0x22, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x73, - 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x28, - 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x6c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x68, 0x72, 0x65, 0x66, 0x3d, - 0x27, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x73, - 0x68, 0x74, 0x6d, 0x6c, 0x27, 0x26, 0x71, 0x75, 0x6f, 0x74, - 0x3b, 0x2c, 0x32, 0x30, 0x30, 0x30, 0x29, 0x22, 0x3e, 0xd, - 0xa, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, - 0x65, 0x3d, 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x3e, - 0xd, 0xa, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, - 0x22, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, - 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x53, - 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x72, 0x75, 0x6e, - 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x52, 0x75, 0x6e, 0x20, 0x54, 0x69, 0x6d, 0x65, - 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, - 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x73, - 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x54, 0x43, 0x50, 0x20, 0x53, 0x74, 0x61, 0x74, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, - 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61, 0x3e, - 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, - 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, - 0x66, 0x72, 0x65, 0x65, 0x72, 0x74, 0x6f, 0x73, 0x2e, 0x6f, - 0x72, 0x67, 0x2f, 0x22, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, - 0x54, 0x4f, 0x53, 0x20, 0x48, 0x6f, 0x6d, 0x65, 0x70, 0x61, - 0x67, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6f, 0x2e, 0x73, 0x68, - 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x49, 0x4f, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x6c, 0x6f, 0x67, 0x6f, 0x2e, 0x6a, 0x70, 0x67, 0x22, 0x3e, - 0x33, 0x37, 0x4b, 0x20, 0x6a, 0x70, 0x67, 0x3c, 0x2f, 0x61, - 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, - 0xd, 0xa, 0x3c, 0x68, 0x72, 0x3e, 0xd, 0xa, 0x3c, 0x62, - 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x32, - 0x3e, 0x52, 0x75, 0x6e, 0x2d, 0x74, 0x69, 0x6d, 0x65, 0x20, - 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, - 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0xd, 0xa, 0x50, 0x61, 0x67, - 0x65, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x72, 0x65, 0x66, - 0x72, 0x65, 0x73, 0x68, 0x20, 0x65, 0x76, 0x65, 0x72, 0x79, - 0x20, 0x32, 0x20, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, - 0x2e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x6e, - 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x63, 0x6f, - 0x75, 0x72, 0x69, 0x65, 0x72, 0x22, 0x3e, 0x3c, 0x70, 0x72, - 0x65, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x41, 0x62, - 0x73, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x25, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x3c, 0x62, - 0x72, 0x3e, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x3c, 0x62, 0x72, 0x3e, 0xd, 0xa, 0x25, 0x21, - 0x20, 0x72, 0x75, 0x6e, 0x2d, 0x74, 0x69, 0x6d, 0x65, 0xd, - 0xa, 0x3c, 0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, - 0x6f, 0x6e, 0x74, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, - 0x6e, 0x74, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, - 0x79, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, - 0x3e, 0xd, 0xa, 0xd, 0xa, 0}; - -static const char data_stats_shtml[] = { - /* /stats.shtml */ - 0x2f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x6e, - 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, - 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x61, 0x20, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, - 0x61, 0x73, 0x6b, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x52, 0x75, 0x6e, - 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, 0x74, 0x61, 0x74, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x43, 0x50, - 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, - 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, - 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, 0x65, 0x65, 0x72, - 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x22, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x20, 0x48, - 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, - 0x6a, 0x70, 0x67, 0x22, 0x3e, 0x33, 0x37, 0x4b, 0x20, 0x6a, - 0x70, 0x67, 0x3c, 0x2f, 0x61, 0x3e, 0xd, 0xa, 0x3c, 0x62, - 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x72, - 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, - 0xd, 0xa, 0x3c, 0x68, 0x32, 0x3e, 0x4e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, - 0x74, 0x69, 0x63, 0x73, 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0xd, - 0xa, 0x3c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x77, 0x69, - 0x64, 0x74, 0x68, 0x3d, 0x22, 0x33, 0x30, 0x30, 0x22, 0x20, - 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x3d, 0x22, 0x30, 0x22, - 0x3e, 0xd, 0xa, 0x3c, 0x74, 0x72, 0x3e, 0x3c, 0x74, 0x64, - 0x20, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x3d, 0x22, 0x6c, 0x65, - 0x66, 0x74, 0x22, 0x3e, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, - 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x63, 0x6f, 0x75, 0x72, - 0x69, 0x65, 0x72, 0x22, 0x3e, 0x3c, 0x70, 0x72, 0x65, 0x3e, - 0xd, 0xa, 0x49, 0x50, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, - 0x74, 0x73, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, - 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, 0xd, 0xa, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x64, 0x65, - 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x44, 0x72, 0x6f, 0x70, - 0x70, 0x65, 0x64, 0xd, 0xa, 0x49, 0x50, 0x20, 0x65, 0x72, - 0x72, 0x6f, 0x72, 0x73, 0x20, 0x20, 0x20, 0x20, 0x49, 0x50, - 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, 0x6c, 0x65, 0x6e, 0x67, - 0x74, 0x68, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x49, 0x50, 0x20, - 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x2c, 0x20, 0x68, 0x69, - 0x67, 0x68, 0x20, 0x62, 0x79, 0x74, 0x65, 0xd, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x49, 0x50, 0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, - 0x68, 0x2c, 0x20, 0x6c, 0x6f, 0x77, 0x20, 0x62, 0x79, 0x74, - 0x65, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x49, 0x50, 0x20, 0x66, - 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0xd, 0xa, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, - 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0xd, 0xa, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x57, 0x72, 0x6f, 0x6e, 0x67, 0x20, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0xd, 0xa, 0x49, - 0x43, 0x4d, 0x50, 0x9, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, - 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x72, 0x65, 0x63, - 0x65, 0x69, 0x76, 0x65, 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x73, 0x65, - 0x6e, 0x74, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, - 0x6b, 0x65, 0x74, 0x73, 0x20, 0x64, 0x72, 0x6f, 0x70, 0x70, - 0x65, 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x54, 0x79, 0x70, - 0x65, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0xd, 0xa, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, - 0x6d, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0xd, 0xa, - 0x54, 0x43, 0x50, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, - 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0xd, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, 0xd, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x64, - 0x72, 0x6f, 0x70, 0x70, 0x65, 0x64, 0xd, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x20, - 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0xd, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x44, 0x61, 0x74, 0x61, 0x20, 0x70, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x73, 0x20, 0x77, 0x69, 0x74, 0x68, 0x6f, 0x75, - 0x74, 0x20, 0x41, 0x43, 0x4b, 0x73, 0xd, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x52, 0x65, 0x73, 0x65, 0x74, 0x73, 0xd, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x52, 0x65, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, - 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x61, 0xd, 0xa, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x53, 0x79, 0x6e, 0x20, 0x74, 0x6f, 0x20, - 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x64, 0x20, 0x70, 0x6f, 0x72, - 0x74, 0xd, 0xa, 0x55, 0x44, 0x50, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x73, 0x20, 0x64, 0x72, 0x6f, 0x70, 0x70, 0x65, - 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x73, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, - 0x65, 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, - 0x6b, 0x65, 0x74, 0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, 0xd, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x73, 0x20, 0x63, 0x68, 0x6b, 0x65, 0x72, 0x72, 0xd, 0xa, - 0x9, 0x20, 0x20, 0x20, 0x20, 0x20, 0x4e, 0x6f, 0x20, 0x63, - 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, - 0x61, 0x76, 0x61, 0x6c, 0x69, 0x61, 0x62, 0x6c, 0x65, 0xd, - 0xa, 0x3c, 0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, - 0x6f, 0x6e, 0x74, 0x3e, 0x3c, 0x2f, 0x74, 0x64, 0x3e, 0x3c, - 0x74, 0x64, 0x3e, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, - 0x61, 0x63, 0x65, 0x3d, 0x22, 0x63, 0x6f, 0x75, 0x72, 0x69, - 0x65, 0x72, 0x22, 0x3e, 0x3c, 0x70, 0x72, 0x65, 0x3e, 0x25, - 0x21, 0x20, 0x6e, 0x65, 0x74, 0x2d, 0x73, 0x74, 0x61, 0x74, - 0x73, 0xd, 0xa, 0x3c, 0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, - 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0x3c, 0x2f, 0x74, 0x64, - 0x3e, 0x3c, 0x2f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x3e, 0xd, - 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xd, 0xa, - 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xd, 0xa, 0x3c, - 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, 0xa, 0}; - -static const char data_tcp_shtml[] = { - /* /tcp.shtml */ - 0x2f, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x6e, - 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, - 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x61, 0x20, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, - 0x61, 0x73, 0x6b, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x52, 0x75, 0x6e, - 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, 0x74, 0x61, 0x74, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x43, 0x50, - 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, - 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, - 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, 0x65, 0x65, 0x72, - 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x22, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x20, 0x48, - 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, - 0x6a, 0x70, 0x67, 0x22, 0x3e, 0x33, 0x37, 0x4b, 0x20, 0x6a, - 0x70, 0x67, 0x3c, 0x2f, 0x61, 0x3e, 0xd, 0xa, 0x3c, 0x62, - 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x72, - 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0xd, 0xa, 0x3c, - 0x68, 0x32, 0x3e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, - 0x20, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0xd, 0xa, 0x3c, - 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x74, 0x61, 0x62, 0x6c, 0x65, - 0x3e, 0xd, 0xa, 0x3c, 0x74, 0x72, 0x3e, 0x3c, 0x74, 0x68, - 0x3e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x3c, 0x2f, 0x74, 0x68, - 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x52, 0x65, 0x6d, 0x6f, 0x74, - 0x65, 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, - 0x53, 0x74, 0x61, 0x74, 0x65, 0x3c, 0x2f, 0x74, 0x68, 0x3e, - 0x3c, 0x74, 0x68, 0x3e, 0x52, 0x65, 0x74, 0x72, 0x61, 0x6e, - 0x73, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x3c, - 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x54, 0x69, - 0x6d, 0x65, 0x72, 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, - 0x68, 0x3e, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x3c, 0x2f, 0x74, - 0x68, 0x3e, 0x3c, 0x2f, 0x74, 0x72, 0x3e, 0xd, 0xa, 0x25, - 0x21, 0x20, 0x74, 0x63, 0x70, 0x2d, 0x63, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0xd, 0xa, 0x3c, - 0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, - 0x74, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, - 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, - 0xd, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, - 0xa, 0xd, 0xa, 0}; - -const struct httpd_fsdata_file file_404_html[] = {{NULL, data_404_html, data_404_html + 10, sizeof(data_404_html) - 10}}; - -const struct httpd_fsdata_file file_index_html[] = {{file_404_html, data_index_html, data_index_html + 12, sizeof(data_index_html) - 12}}; - -const struct httpd_fsdata_file file_index_shtml[] = {{file_index_html, data_index_shtml, data_index_shtml + 13, sizeof(data_index_shtml) - 13}}; - -const struct httpd_fsdata_file file_io_shtml[] = {{file_index_shtml, data_io_shtml, data_io_shtml + 10, sizeof(data_io_shtml) - 10}}; - -const struct httpd_fsdata_file file_logo_jpg[] = {{file_io_shtml, data_logo_jpg, data_logo_jpg + 10, sizeof(data_logo_jpg) - 10}}; - -const struct httpd_fsdata_file file_runtime_shtml[] = {{file_logo_jpg, data_runtime_shtml, data_runtime_shtml + 15, sizeof(data_runtime_shtml) - 15}}; - -const struct httpd_fsdata_file file_stats_shtml[] = {{file_runtime_shtml, data_stats_shtml, data_stats_shtml + 13, sizeof(data_stats_shtml) - 13}}; - -const struct httpd_fsdata_file file_tcp_shtml[] = {{file_stats_shtml, data_tcp_shtml, data_tcp_shtml + 11, sizeof(data_tcp_shtml) - 11}}; - -#define HTTPD_FS_ROOT file_tcp_shtml - -#define HTTPD_FS_NUMFILES 8 diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/webserver/makefsdata b/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/webserver/makefsdata deleted file mode 100644 index a953cdd76..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/webserver/makefsdata +++ /dev/null @@ -1,79 +0,0 @@ -#!/usr/bin/perl - -open(OUTPUT, "> httpd-fsdata.c"); - -chdir("httpd-fs"); - -opendir(DIR, "."); -@files = grep { !/^\./ && !/(CVS|~)/ } readdir(DIR); -closedir(DIR); - -foreach $file (@files) { - - if(-d $file && $file !~ /^\./) { - print "Processing directory $file\n"; - opendir(DIR, $file); - @newfiles = grep { !/^\./ && !/(CVS|~)/ } readdir(DIR); - closedir(DIR); - printf "Adding files @newfiles\n"; - @files = (@files, map { $_ = "$file/$_" } @newfiles); - next; - } -} - -foreach $file (@files) { - if(-f $file) { - - print "Adding file $file\n"; - - open(FILE, $file) || die "Could not open file $file\n"; - binmode FILE; - - $file =~ s-^-/-; - $fvar = $file; - $fvar =~ s-/-_-g; - $fvar =~ s-\.-_-g; - # for AVR, add PROGMEM here - print(OUTPUT "static const char data".$fvar."[] = {\n"); - print(OUTPUT "\t/* $file */\n\t"); - for($j = 0; $j < length($file); $j++) { - printf(OUTPUT "%#02x, ", unpack("C", substr($file, $j, 1))); - } - printf(OUTPUT "0,\n"); - - - $i = 0; - while(read(FILE, $data, 1)) { - if($i == 0) { - print(OUTPUT "\t"); - } - printf(OUTPUT "%#02x, ", unpack("C", $data)); - $i++; - if($i == 10) { - print(OUTPUT "\n"); - $i = 0; - } - } - print(OUTPUT "0};\n\n"); - close(FILE); - push(@fvars, $fvar); - push(@pfiles, $file); - } -} - -for($i = 0; $i < @fvars; $i++) { - $file = $pfiles[$i]; - $fvar = $fvars[$i]; - - if($i == 0) { - $prevfile = "NULL"; - } else { - $prevfile = "file" . $fvars[$i - 1]; - } - print(OUTPUT "const struct httpd_fsdata_file file".$fvar."[] = {{$prevfile, data$fvar, "); - print(OUTPUT "data$fvar + ". (length($file) + 1) .", "); - print(OUTPUT "sizeof(data$fvar) - ". (length($file) + 1) ."}};\n\n"); -} - -print(OUTPUT "#define HTTPD_FS_ROOT file$fvars[$i - 1]\n\n"); -print(OUTPUT "#define HTTPD_FS_NUMFILES $i\n"); diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/webserver/phy.c b/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/webserver/phy.c deleted file mode 100644 index 7c02ddf8a..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/webserver/phy.c +++ /dev/null @@ -1,474 +0,0 @@ -/****************************************************************************** -* DISCLAIMER - -* This software is supplied by Renesas Technology Corp. and is only -* intended for use with Renesas products. No other uses are authorized. - -* This software is owned by Renesas Technology Corp. and is protected under -* all applicable laws, including copyright laws. - -* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES -* REGARDING THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, -* INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A -* PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY -* DISCLAIMED. - -* TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS -* TECHNOLOGY CORP. NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE -* FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES -* FOR ANY REASON RELATED TO THE THIS SOFTWARE, EVEN IF RENESAS OR ITS -* AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - -* Renesas reserves the right, without notice, to make changes to this -* software and to discontinue the availability of this software. -* By using this software, you agree to the additional terms and -* conditions found by accessing the following link: -* http://www.renesas.com/disclaimer -****************************************************************************** -* Copyright (C) 2008. Renesas Technology Corp., All Rights Reserved. -******************************************************************************* -* File Name : phy.c -* Version : 1.01 -* Description : Ethernet PHY device driver -****************************************************************************** -* History : DD.MM.YYYY Version Description -* : 15.02.2010 1.00 First Release -* : 06.04.2010 1.01 RX62N changes -******************************************************************************/ - - -/****************************************************************************** -Includes , "Project Includes" -******************************************************************************/ -#include -#include "r_ether.h" -#include "phy.h" - -#include "FreeRTOS.h" -#include "task.h" -/****************************************************************************** -Typedef definitions -******************************************************************************/ - -/****************************************************************************** -Macro definitions -******************************************************************************/ - -/****************************************************************************** -Imported global variables and functions (from other files) -******************************************************************************/ - -/****************************************************************************** -Exported global variables and functions (to be accessed by other files) -******************************************************************************/ - -/****************************************************************************** -Private global variables and functions -******************************************************************************/ -unsigned short _phy_read( unsigned short reg_addr ); -void _phy_write( unsigned short reg_addr, unsigned short data ); -void _phy_preamble( void ); -void _phy_reg_set( unsigned short reg_addr, long option ); -void _phy_reg_read( unsigned short *data ); -void _phy_reg_write( unsigned short data ); -void _phy_ta_z0( void ); -void _phy_ta_10( void ); -void _phy_mii_write_1( void ); -void _phy_mii_write_0( void ); - -/** - * External functions - */ - -/****************************************************************************** -* Function Name: phy_init -* Description : Resets Ethernet PHY device -* Arguments : none -* Return Value : none -******************************************************************************/ -short phy_init( void ) -{ - unsigned short reg; - unsigned long count; - - /* Reset PHY */ - _phy_write(BASIC_MODE_CONTROL_REG, 0x8000); - - count = 0; - - do - { - vTaskDelay( 2 / portTICK_PERIOD_MS ); - reg = _phy_read(BASIC_MODE_CONTROL_REG); - count++; - } while (reg & 0x8000 && count < PHY_RESET_WAIT); - - if( count < PHY_RESET_WAIT ) - { - return R_PHY_OK; - } - - return R_PHY_ERROR; -} - -/****************************************************************************** -* Function Name: phy_set_100full -* Description : Set Ethernet PHY device to 100 Mbps full duplex -* Arguments : none -* Return Value : none -******************************************************************************/ -void phy_set_100full( void ) -{ - _phy_write(BASIC_MODE_CONTROL_REG, 0x2100); -} - -/****************************************************************************** -* Function Name: phy_set_10half -* Description : Sets Ethernet PHY device to 10 Mbps half duplexR -* Arguments : none -* Return Value : none -******************************************************************************/ -void phy_set_10half( void ) -{ - _phy_write(BASIC_MODE_CONTROL_REG, 0x0000); -} - -/****************************************************************************** -* Function Name: phy_set_autonegotiate -* Description : Starts autonegotiate and reports the other side's -* : physical capability -* Arguments : none -* Return Value : bit 8 - Full duplex 100 mbps -* : bit 7 - Half duplex 100 mbps -* : bit 6 - Full duplex 10 mbps -* : bit 5 - Half duplex 10 mbps -* : bit 4:0 - Always set to 00001 (IEEE 802.3) -* : -1 if error -******************************************************************************/ -short phy_set_autonegotiate( void ) -{ - unsigned short reg; - unsigned long count; - - _phy_write(AN_ADVERTISEMENT_REG, 0x01E1); - _phy_write(BASIC_MODE_CONTROL_REG, 0x1200); - - count = 0; - - do - { - reg = _phy_read(BASIC_MODE_STATUS_REG); - count++; - vTaskDelay( 100 / portTICK_PERIOD_MS ); - - /* Make sure we don't break out if reg just contains 0xffff. */ - if( reg == 0xffff ) - { - reg = 0; - } - - } while (!(reg & 0x0020) && (count < PHY_AUTO_NEGOTIATON_WAIT)); - - if (count >= PHY_AUTO_NEGOTIATON_WAIT) - { - return R_PHY_ERROR; - } - else - { - /* National DP83640 fix */ - _phy_write(0x13, 0x0006); - reg = _phy_read(0x14); - _phy_write(0x14, (reg&0x7FFF)); - _phy_write(0x13, 0x0000); - - /* Get the link partner response */ - reg = (short)_phy_read(AN_LINK_PARTNER_ABILITY_REG); - - if (reg & ( 1 << 8 ) ) - { - return PHY_LINK_100F; - } - if (reg & ( 1 << 7 ) ) - { - return PHY_LINK_100H; - } - if (reg & ( 1 << 6 ) ) - { - return PHY_LINK_10F; - } - if (reg & 1 << 5 ) - { - return PHY_LINK_10H; - } - - return (-1); - } -} - - -/** - * Internal functions - */ - -/****************************************************************************** -* Function Name: _phy_read -* Description : Reads a PHY register -* Arguments : reg_addr - address of the PHY register -* Return Value : read value -******************************************************************************/ -unsigned short _phy_read( unsigned short reg_addr ) -{ - unsigned short data; - - _phy_preamble(); - _phy_reg_set( reg_addr, PHY_READ ); - _phy_ta_z0(); - _phy_reg_read( &data ); - _phy_ta_z0(); - - return( data ); -} - -/****************************************************************************** -* Function Name: _phy_write -* Description : Writes to a PHY register -* Arguments : reg_addr - address of the PHY register -* : data - value -* Return Value : none -******************************************************************************/ -void _phy_write( unsigned short reg_addr, unsigned short data ) -{ - _phy_preamble(); - _phy_reg_set( reg_addr, PHY_WRITE ); - _phy_ta_10(); - _phy_reg_write( data ); - _phy_ta_z0(); -} - -/****************************************************************************** -* Function Name: _phy_preamble -* Description : As preliminary preparation for access to the PHY module register, -* "1" is output via the MII management interface. -* Arguments : none -* Return Value : none -******************************************************************************/ -void _phy_preamble( void ) -{ - short i; - - i = 32; - while( i > 0 ) - { - _phy_mii_write_1(); - i--; - } -} - -/****************************************************************************** -* Function Name: _phy_reg_set -* Description : Sets a PHY device to read or write mode -* Arguments : reg_addr - address of the PHY register -* : option - mode -* Return Value : none -******************************************************************************/ -void _phy_reg_set( unsigned short reg_addr, long option ) -{ - long i; - unsigned short data; - - data = 0; - data = (PHY_ST << 14); /* ST code */ - - if( option == PHY_READ ) - { - data |= (PHY_READ << 12); /* OP code(RD) */ - } - else - { - data |= (PHY_WRITE << 12); /* OP code(WT) */ - } - - data |= (PHY_ADDR << 7); /* PHY Address */ - data |= (reg_addr << 2); /* Reg Address */ - - i = 14; - while( i > 0 ) - { - if( (data & 0x8000) == 0 ) - { - _phy_mii_write_0(); - } - else - { - _phy_mii_write_1(); - } - data <<= 1; - i--; - } -} - -/****************************************************************************** -* Function Name: _phy_reg_read -* Description : Reads PHY register through MII interface -* Arguments : data - pointer to store the data read -* Return Value : none -******************************************************************************/ -void _phy_reg_read( unsigned short *data ) -{ - long i, j; - unsigned short reg_data; - - reg_data = 0; - i = 16; - while( i > 0 ) - { - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000000; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000001; - } - - reg_data <<= 1; - reg_data |= (unsigned short)((ETHERC.PIR.LONG & 0x00000008) >> 3); /* MDI read */ - - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000001; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000000; - } - i--; - } - *data = reg_data; -} - -/****************************************************************************** -* Function Name: _phy_reg_write -* Description : Writes to PHY register through MII interface -* Arguments : data - value to write -* Return Value : none -******************************************************************************/ -void _phy_reg_write( unsigned short data ) -{ - long i; - - i = 16; - while( i > 0 ) - { - if( (data & 0x8000) == 0 ) - { - _phy_mii_write_0(); - } - else - { - _phy_mii_write_1(); - } - i--; - data <<= 1; - } -} - -/****************************************************************************** -* Function Name: _phy_ta_z0 -* Description : Performs bus release so that PHY can drive data -* : for read operation -* Arguments : none -* Return Value : none -******************************************************************************/ -void _phy_ta_z0( void ) -{ - long j; - - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000000; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000001; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000001; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000000; - } -} - -/****************************************************************************** -* Function Name: _phy_ta_10 -* Description : Switches data bus so MII interface can drive data -* : for write operation -* Arguments : none -* Return Value : none -******************************************************************************/ -void _phy_ta_10(void) -{ - _phy_mii_write_1(); - _phy_mii_write_0(); -} - -/****************************************************************************** -* Function Name: _phy_mii_write_1 -* Description : Outputs 1 to the MII interface -* Arguments : none -* Return Value : none -******************************************************************************/ -void _phy_mii_write_1( void ) -{ - long j; - - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000006; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000007; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000007; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000006; - } -} - -/****************************************************************************** -* Function Name: _phy_mii_write_0 -* Description : Outputs 0 to the MII interface -* Arguments : none -* Return Value : none -******************************************************************************/ -void _phy_mii_write_0( void ) -{ - long j; - - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000002; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000003; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000003; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000002; - } -} - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/webserver/phy.h b/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/webserver/phy.h deleted file mode 100644 index 6c0894ed9..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/webserver/phy.h +++ /dev/null @@ -1,83 +0,0 @@ -/****************************************************************************** -* DISCLAIMER -* Please refer to http://www.renesas.com/disclaimer -****************************************************************************** - Copyright (C) 2008. Renesas Technology Corp., All Rights Reserved. -******************************************************************************* -* File Name : phy.h -* Version : 1.02 -* Description : Ethernet PHY device driver -****************************************************************************** -* History : DD.MM.YYYY Version Description -* : 15.02.2010 1.00 First Release -* : 17.03.2010 1.01 Modification of macro definitions for access timing -* : 06.04.2010 1.02 RX62N changes -******************************************************************************/ - -#ifndef PHY_H -#define PHY_H - -/****************************************************************************** -Includes , "Project Includes" -******************************************************************************/ - -/****************************************************************************** -Typedef definitions -******************************************************************************/ - -/****************************************************************************** -Macro definitions -******************************************************************************/ -/* Standard PHY Registers */ -#define BASIC_MODE_CONTROL_REG 0 -#define BASIC_MODE_STATUS_REG 1 -#define PHY_IDENTIFIER1_REG 2 -#define PHY_IDENTIFIER2_REG 3 -#define AN_ADVERTISEMENT_REG 4 -#define AN_LINK_PARTNER_ABILITY_REG 5 -#define AN_EXPANSION_REG 6 - -/* Media Independent Interface */ -#define PHY_ST 1 -#define PHY_READ 2 -#define PHY_WRITE 1 -#define PHY_ADDR 0x01 - -#define MDC_WAIT 2 - -/* PHY return definitions */ -#define R_PHY_OK 0 -#define R_PHY_ERROR -1 - -/* Auto-Negotiation Link Partner Status */ -#define PHY_AN_LINK_PARTNER_100BASE 0x0180 -#define PHY_AN_LINK_PARTNER_FULL 0x0140 -#define PHY_AN_COMPLETE ( 1 << 5 ) - -/* - * Wait counter definitions of PHY-LSI initialization - * ICLK = 96MHz -*/ -#define PHY_RESET_WAIT 0x00000020L -#define PHY_AUTO_NEGOTIATON_WAIT 75 - -#define PHY_AN_ENABLE 0x1200 -#define PHY_AN_10_100_F_H 0xde1 - -/****************************************************************************** -Variable Externs -******************************************************************************/ - -/****************************************************************************** -Functions Prototypes -******************************************************************************/ -/** - * External prototypes - **/ -short phy_init( void ); -void phy_set_100full( void ); -void phy_set_10half( void ); -short phy_set_autonegotiate( void ); - -#endif /* PHY_H */ - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/webserver/r_ether.h b/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/webserver/r_ether.h deleted file mode 100644 index f6633e1d7..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/webserver/r_ether.h +++ /dev/null @@ -1,185 +0,0 @@ -/****************************************************************************** -* DISCLAIMER -* Please refer to http://www.renesas.com/disclaimer -****************************************************************************** - Copyright (C) 2008. Renesas Technology Corp., All Rights Reserved. -******************************************************************************* -* File Name : r_ether.h -* Version : 1.02 -* Description : Ethernet module device driver -****************************************************************************** -* History : DD.MM.YYYY Version Description -* : 15.02.2010 1.00 First Release -* : 03.03.2010 1.01 Buffer size is aligned on the 32-byte boundary. -* : 04.06.2010 1.02 RX62N changes -******************************************************************************/ - -#ifndef R_ETHER_H -#define R_ETHER_H - -/****************************************************************************** -Includes , "Project Includes" -******************************************************************************/ - - -/****************************************************************************** -Typedef definitions -******************************************************************************/ -struct Descriptor -{ - unsigned long status; -#if __RX_LITTLE_ENDIAN__ == 1 -/* Little endian */ - unsigned short size; - unsigned short bufsize; -#else -/* Big endian */ - unsigned short bufsize; - unsigned short size; - -#endif - char *buf_p; - struct Descriptor *next; -}; - -typedef struct Descriptor ethfifo; - -typedef enum _NETLNK -{ - PHY_NO_LINK = 0, - PHY_LINK_10H, - PHY_LINK_10F, - PHY_LINK_100H, - PHY_LINK_100F - -} NETLNK; - -/****************************************************************************** -Macro definitions -******************************************************************************/ -#define BUFSIZE 256 /* Must be 32-bit aligned */ -#define ENTRY 8 /* Number of RX and TX buffers */ - -#define ACT 0x80000000 -#define DL 0x40000000 -#define FP1 0x20000000 -#define FP0 0x10000000 -#define FE 0x08000000 - -#define RFOVER 0x00000200 -#define RAD 0x00000100 -#define RMAF 0x00000080 -#define RRF 0x00000010 -#define RTLF 0x00000008 -#define RTSF 0x00000004 -#define PRE 0x00000002 -#define CERF 0x00000001 - -#define TAD 0x00000100 -#define CND 0x00000008 -#define DLC 0x00000004 -#define CD 0x00000002 -#define TRO 0x00000001 - -/** - * Renesas Ethernet API return defines - **/ -#define R_ETHER_OK 0 -#define R_ETHER_ERROR -1 - -/* Ether Interface definitions */ -#define ETH_RMII_MODE 0 -#define ETH_MII_MODE 1 -/* Select Ether Interface Mode */ -#define ETH_MODE_SEL ETH_MII_MODE - -/****************************************************************************** -Variable Externs -******************************************************************************/ - -/****************************************************************************** -Functions Prototypes -******************************************************************************/ -/** - * Renesas Ethernet API prototypes - **/ -long R_Ether_Open(unsigned long ch, unsigned char mac_addr[]); -long R_Ether_Close(unsigned long ch); -long R_Ether_Write(unsigned long ch, void *buf, unsigned long len); -long R_Ether_Read(unsigned long ch, void *buf); - -/** - * FreeRTOS Ethernet API prototypes. - */ - -/* - * Configure all the ethernet components (MAC, DMA, PHY) ready for communication. - */ -void vInitEmac( void ); - -/* - * Auto negotiate the link, returning pass or fail depending on whether a link - * was established or not. - */ -long lEMACWaitForLink( void ); - -/* - * Check the Rx status, and return the number of bytes received if any. - */ -unsigned long ulEMACRead( void ); - -/* - * Send uip_len bytes from uip_buf to the Tx descriptors and initiate a Tx. - */ -void vEMACWrite( void ); - - - - -/****************************************************/ -/* Ethernet statistic collection data */ -struct enet_stats -{ - unsigned long rx_packets; /* total packets received */ - unsigned long tx_packets; /* total packets transmitted */ - unsigned long rx_errors; /* bad packets received */ - unsigned long tx_errors; /* packet transmit problems */ - unsigned long rx_dropped; /* no space in buffers */ - unsigned long tx_dropped; /* no space available */ - unsigned long multicast; /* multicast packets received */ - unsigned long collisions; - - /* detailed rx_errors: */ - unsigned long rx_length_errors; - unsigned long rx_over_errors; /* receiver ring buffer overflow */ - unsigned long rx_crc_errors; /* recved pkt with crc error */ - unsigned long rx_frame_errors; /* recv'd frame alignment error */ - unsigned long rx_fifo_errors; /* recv'r fifo overrun */ - unsigned long rx_missed_errors; /* receiver missed packet */ - - /* detailed tx_errors */ - unsigned long tx_aborted_errors; - unsigned long tx_carrier_errors; - unsigned long tx_fifo_errors; - unsigned long tx_heartbeat_errors; - unsigned long tx_window_errors; -}; - -struct ei_device -{ - const char *name; - unsigned char open; - unsigned char Tx_act; - unsigned char Rx_act; - unsigned char txing; /* Transmit Active */ - unsigned char irqlock; /* EDMAC's interrupt disabled when '1'. */ - unsigned char dmaing; /* EDMAC Active */ - ethfifo *rxcurrent; /* current receive discripter */ - ethfifo *txcurrent; /* current transmit discripter */ - unsigned char save_irq; /* Original dev->irq value. */ - struct enet_stats stat; - unsigned char mac_addr[6]; -}; - -#endif /* R_ETHER_H */ - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/webserver/uip-conf.h b/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/webserver/uip-conf.h deleted file mode 100644 index 47d17fdcb..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/webserver/uip-conf.h +++ /dev/null @@ -1,167 +0,0 @@ -/** - * \addtogroup uipopt - * @{ - */ - -/** - * \name Project-specific configuration options - * @{ - * - * uIP has a number of configuration options that can be overridden - * for each project. These are kept in a project-specific uip-conf.h - * file and all configuration names have the prefix UIP_CONF. - */ - -/* - * Copyright (c) 2006, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: uip-conf.h,v 1.6 2006/06/12 08:00:31 adam Exp $ - */ - -/** - * \file - * An example uIP configuration file - * \author - * Adam Dunkels - */ - -#ifndef __UIP_CONF_H__ -#define __UIP_CONF_H__ - -#define UIP_CONF_EXTERNAL_BUFFER -#define UIP_CONF_PROCESS_HTTPD_FORMS 1 - -/** - * 8 bit datatype - * - * This typedef defines the 8-bit type used throughout uIP. - * - * \hideinitializer - */ -typedef unsigned char u8_t; - -/** - * 16 bit datatype - * - * This typedef defines the 16-bit type used throughout uIP. - * - * \hideinitializer - */ -typedef unsigned short u16_t; - -typedef unsigned long u32_t; - -/** - * Statistics datatype - * - * This typedef defines the dataype used for keeping statistics in - * uIP. - * - * \hideinitializer - */ -typedef unsigned short uip_stats_t; - -/** - * Maximum number of TCP connections. - * - * \hideinitializer - */ -#define UIP_CONF_MAX_CONNECTIONS 40 - -/** - * Maximum number of listening TCP ports. - * - * \hideinitializer - */ -#define UIP_CONF_MAX_LISTENPORTS 40 - -/** - * uIP buffer size. - * - * \hideinitializer - */ -#define UIP_CONF_BUFFER_SIZE 1480 - -/** - * CPU byte order. - * - * \hideinitializer - */ -#ifdef __RX_LITTLE_ENDIAN__ -#define UIP_CONF_BYTE_ORDER UIP_LITTLE_ENDIAN -#else -#define UIP_CONF_BYTE_ORDER UIP_BIG_ENDIAN -#endif - -/** - * Logging on or off - * - * \hideinitializer - */ -#define UIP_CONF_LOGGING 0 - -/** - * UDP support on or off - * - * \hideinitializer - */ -#define UIP_CONF_UDP 0 - -/** - * UDP checksums on or off - * - * \hideinitializer - */ -#define UIP_CONF_UDP_CHECKSUMS 1 - -/** - * uIP statistics on or off - * - * \hideinitializer - */ -#define UIP_CONF_STATISTICS 1 - -/* Here we include the header file for the application(s) we use in - our project. */ -/*#include "smtp.h"*/ -/*#include "hello-world.h"*/ -/*#include "telnetd.h"*/ -#include "webserver.h" -/*#include "dhcpc.h"*/ -/*#include "resolv.h"*/ -/*#include "webclient.h"*/ - -#define CCIF -#define CC_REGISTER_ARG - -#endif /* __UIP_CONF_H__ */ - -/** @} */ -/** @} */ diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/webserver/webserver.h b/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/webserver/webserver.h deleted file mode 100644 index 5267f0587..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/webserver/webserver.h +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright (c) 2002, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials provided - * with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: webserver.h,v 1.2 2006/06/11 21:46:38 adam Exp $ - * - */ -#ifndef __WEBSERVER_H__ -#define __WEBSERVER_H__ - -#include "apps/httpd/httpd.h" - -typedef struct httpd_state uip_tcp_appstate_t; -/* UIP_APPCALL: the name of the application function. This function - must return void and take no arguments (i.e., C type "void - appfunc(void)"). */ -#define UIP_APPCALL httpd_appcall - - -#endif /* __WEBSERVER_H__ */ diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RX600_RX62N_RDK_GNURX.Hbp b/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RX600_RX62N_RDK_GNURX.Hbp deleted file mode 100644 index 241474974..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RX600_RX62N_RDK_GNURX.Hbp +++ /dev/null @@ -1,2 +0,0 @@ -[Setting] -ToolChain=0 diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RX600_RX62N_RDK_GNURX.hws b/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RX600_RX62N_RDK_GNURX.hws deleted file mode 100644 index 1c1c3961f..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RX600_RX62N_RDK_GNURX.hws +++ /dev/null @@ -1,40 +0,0 @@ -[HIMDBVersion] -2.0 -[DATABASE_VERSION] -"11.0" -[WORKSPACE_DETAILS] -"RX600_RX62N_RDK_GNURX" "C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX" "C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RX600_RX62N_RDK_GNURX.hws" "RX" "KPIT GNURX [ELF]" -[SHARED_WORKSPACE_CONTROL_STATUS] -"" "" "" -"" "" "" -[PROJECTS] -"RTOSDemo" "C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo" "C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\RTOSDemo.hwp" 0 -[INFORMATION] -"No workspace information available" -[SCRAP] -[PROJECT_DEPENDENCY] -[WORKSPACE_PROPERTIES] -[HELP_FILES] -[GENERAL_DATA_PROJECT] -[USERMENUTOOLS] -[CUSTOMPLACEHOLDERS] -[MAKEFILE_BUILD_INFO] -"$(WORKSPDIR)\make\$(PROJECTNAME)_$(CONFIGNAME).mak" "" "$(WORKSPDIR)\make" 0 0 0 -[VD_CONFIGURATION_OPTIONS] -"ACTIVE_DESKTOP" "0" -[VD_CONFIGURATIONS] -"0" "Default1" "1" -"1" "Default2" "1" -"2" "Default3" "1" -"3" "Default4" "1" -[OPTIONS_DEBUG_TAB] -0 0 0 0 0 -[VCS] -"" "" "" 0 -[VCS_PROJECT] -[MAKEFILE_ENV_STRINGS] -[MAKEFILE_ENV_FLAGS] -1 0 0 -[MAKEFILE_CLEAN_INFO] -"" -[END] diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RX600_RX62N_RDK_GNURX.tws b/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RX600_RX62N_RDK_GNURX.tws deleted file mode 100644 index 4ed474ecd..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/RX600_RX62N_RDK_GNURX.tws +++ /dev/null @@ -1,17 +0,0 @@ -[HIMDBVersion] -2.0 -[DATABASE_VERSION] -"1.2" -[CURRENT_PROJECT] -"RTOSDemo" -[GENERAL_DATA] -[BREAKPOINTS] -[OPEN_WORKSPACE_FILES] -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\main-blinky.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\main-full.c" -[WORKSPACE_FILE_STATES] -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\main-blinky.c" 22 22 792 271 0 1 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\main-full.c" 0 0 792 271 0 0 -[LOADED_PROJECTS] -"RTOSDemo" -[END] diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/ReadMe.txt b/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/ReadMe.txt new file mode 100644 index 000000000..12c70d213 --- /dev/null +++ b/FreeRTOS/Demo/RX600_RX62N-RDK_GNURX/ReadMe.txt @@ -0,0 +1 @@ +The third party uIP TCP/IP stack and the demo project that used to be in this directory was removed in FreeRTOS version V10.4.3 due to security vulnerabilities identified in uIP. In a future version this demo may be replaced by a version which does not use TCP/IP or uses FreeRTOS’s own TCP/IP stack in place of the original third party stack. \ No newline at end of file diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/FreeRTOSConfig.h b/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/FreeRTOSConfig.h deleted file mode 100644 index 42dd6cec9..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/FreeRTOSConfig.h +++ /dev/null @@ -1,153 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -#ifndef FREERTOS_CONFIG_H -#define FREERTOS_CONFIG_H - -/* Board specifics. */ -#include "yrdkrx62ndef.h" - -/*----------------------------------------------------------- - * Application specific definitions. - * - * These definitions should be adjusted for your particular hardware and - * application requirements. - * - * THESE PARAMETERS ARE DESCRIBED WITHIN THE 'CONFIGURATION' SECTION OF THE - * FreeRTOS API DOCUMENTATION AVAILABLE ON THE FreeRTOS.org WEB SITE. - * - * See http://www.freertos.org/a00110.html - *----------------------------------------------------------*/ - -#define configUSE_PREEMPTION 1 -#define configUSE_IDLE_HOOK 0 -#define configUSE_TICK_HOOK 0 -#define configCPU_CLOCK_HZ ( ICLK_FREQUENCY ) /* Set in rskrx62ndef.h. */ -#define configPERIPHERAL_CLOCK_HZ ( PCLK_FREQUENCY ) /* Set in rskrx62ndef.h. */ -#define configTICK_RATE_HZ ( ( TickType_t ) 1000 ) -#define configMINIMAL_STACK_SIZE ( ( unsigned short ) 140 ) -#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 45 * 1024 ) ) -#define configMAX_TASK_NAME_LEN ( 12 ) -#define configUSE_TRACE_FACILITY 1 -#define configUSE_16_BIT_TICKS 0 -#define configIDLE_SHOULD_YIELD 1 -#define configUSE_CO_ROUTINES 0 -#define configUSE_MUTEXES 1 -#define configGENERATE_RUN_TIME_STATS 1 -#define configCHECK_FOR_STACK_OVERFLOW 2 -#define configUSE_RECURSIVE_MUTEXES 1 -#define configQUEUE_REGISTRY_SIZE 0 -#define configUSE_MALLOC_FAILED_HOOK 1 -#define configUSE_APPLICATION_TASK_TAG 0 - -#define configMAX_PRIORITIES ( 7 ) -#define configMAX_CO_ROUTINE_PRIORITIES ( 2 ) - -/* Software timer definitions. */ -#define configUSE_TIMERS 1 -#define configTIMER_TASK_PRIORITY ( 3 ) -#define configTIMER_QUEUE_LENGTH 5 -#define configTIMER_TASK_STACK_DEPTH ( configMINIMAL_STACK_SIZE ) - -/* -The interrupt priority used by the kernel itself for the tick interrupt and -the pended interrupt is set by configKERNEL_INTERRUPT_PRIORITY. This would -normally be the lowest priority (1 in this case). The maximum interrupt -priority from which FreeRTOS API calls can be made is set by -configMAX_SYSCALL_INTERRUPT_PRIORITY. Interrupts that use a priority above this -will not be effected by anything the kernel is doing. Interrupts at or below -this priority can use FreeRTOS API functions - but *only* those that end in -"FromISR". Both these constants are defined in 'PriorityDefinitions.h' so they -can also be included in assembly source files. -*/ -#include "PriorityDefinitions.h" - - -/* The peripheral used to generate the tick interrupt is configured as part of -the application code. This constant should be set to the vector number of the -peripheral chosen. As supplied this is CMT0. */ -#define configTICK_VECTOR 28 /*VECT_CMT0_CMI0*/ - -/* Set the following definitions to 1 to include the API function, or zero -to exclude the API function. */ - -#define INCLUDE_vTaskPrioritySet 1 -#define INCLUDE_uxTaskPriorityGet 1 -#define INCLUDE_vTaskDelete 1 -#define INCLUDE_vTaskCleanUpResources 0 -#define INCLUDE_vTaskSuspend 1 -#define INCLUDE_vTaskDelayUntil 1 -#define INCLUDE_vTaskDelay 1 -#define INCLUDE_uxTaskGetStackHighWaterMark 1 -#define INCLUDE_xTaskGetSchedulerState 1 -#define INCLUDE_eTaskGetState 1 - -/* This demo makes use of one or more example stats formatting functions. These -format the raw data provided by the uxTaskGetSystemState() function in to human -readable ASCII form. See the notes in the implementation of vTaskList() within -FreeRTOS/Source/tasks.c for limitations. */ -#define configUSE_STATS_FORMATTING_FUNCTIONS 1 - -#define configASSERT( x ) if( ( x ) == pdFALSE ) { taskDISABLE_INTERRUPTS(); for( ;; ); } - -extern volatile unsigned long ulHighFrequencyTickCount; -#define portCONFIGURE_TIMER_FOR_RUN_TIME_STATS() portNOP() /* Run time stats use the same timer as the high frequency timer test. */ -#define portGET_RUN_TIME_COUNTER_VALUE() ulHighFrequencyTickCount - - -/* Override some of the priorities set in the common demo tasks. This is -required to ensure false positive timing errors are not reported. */ -#define bktPRIMARY_PRIORITY ( configMAX_PRIORITIES - 3 ) -#define bktSECONDARY_PRIORITY ( configMAX_PRIORITIES - 4 ) -#define intqHIGHER_PRIORITY ( configMAX_PRIORITIES - 3 ) - - -/*----------------------------------------------------------- - * Ethernet configuration. - *-----------------------------------------------------------*/ - -/* MAC address configuration. */ -#define configMAC_ADDR0 0x00 -#define configMAC_ADDR1 0x12 -#define configMAC_ADDR2 0x13 -#define configMAC_ADDR3 0x10 -#define configMAC_ADDR4 0x15 -#define configMAC_ADDR5 0x11 - -/* IP address configuration. */ -#define configIP_ADDR0 192 -#define configIP_ADDR1 168 -#define configIP_ADDR2 0 -#define configIP_ADDR3 200 - -/* Netmask configuration. */ -#define configNET_MASK0 255 -#define configNET_MASK1 255 -#define configNET_MASK2 255 -#define configNET_MASK3 0 - -#endif /* FREERTOS_CONFIG_H */ diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/HighFrequencyTimerTest.c b/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/HighFrequencyTimerTest.c deleted file mode 100644 index fdd006000..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/HighFrequencyTimerTest.c +++ /dev/null @@ -1,143 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* - * High frequency timer test as described in main.c. - */ - -/* Scheduler includes. */ -#include "FreeRTOS.h" - -/* Hardware specifics. */ -#include - -/* The set frequency of the interrupt. Deviations from this are measured as -the jitter. */ -#define timerINTERRUPT_FREQUENCY ( 20000UL ) - -/* The expected time between each of the timer interrupts - if the jitter was -zero. */ -#define timerEXPECTED_DIFFERENCE_VALUE ( ( unsigned short ) ( ( configPERIPHERAL_CLOCK_HZ / 8UL ) / timerINTERRUPT_FREQUENCY ) ) - -/* The highest available interrupt priority. */ -#define timerHIGHEST_PRIORITY ( 15 ) - -/* Misc defines. */ -#define timerTIMER_3_COUNT_VALUE ( *( ( unsigned short * ) 0x8801a ) ) /*( CMT3.CMCNT )*/ - -/*-----------------------------------------------------------*/ - -/* Interrupt handler in which the jitter is measured. */ -__interrupt void vTimer2IntHandler( void ); - -/* Stores the value of the maximum recorded jitter between interrupts. */ -volatile unsigned short usMaxJitter = 0; - -/* Counts the number of high frequency interrupts - used to generate the run -time stats. */ -volatile unsigned long ulHighFrequencyTickCount = 0UL; - -/*-----------------------------------------------------------*/ - -void vSetupHighFrequencyTimer( void ) -{ - /* Timer CMT2 is used to generate the interrupts, and CMT3 is used - to measure the jitter. */ - - /* Enable compare match timer 2 and 3. */ - MSTP( CMT2 ) = 0; - MSTP( CMT3 ) = 0; - - /* Interrupt on compare match. */ - CMT2.CMCR.BIT.CMIE = 1; - - /* Set the compare match value. */ - CMT2.CMCOR = ( unsigned short ) ( ( ( configPERIPHERAL_CLOCK_HZ / timerINTERRUPT_FREQUENCY ) -1 ) / 8 ); - - /* Divide the PCLK by 8. */ - CMT2.CMCR.BIT.CKS = 0; - CMT3.CMCR.BIT.CKS = 0; - - /* Enable the interrupt... */ - _IEN( _CMT2_CMI2 ) = 1; - - /* ...and set its priority to the maximum possible, this is above the priority - set by configMAX_SYSCALL_INTERRUPT_PRIORITY so will nest. */ - _IPR( _CMT2_CMI2 ) = timerHIGHEST_PRIORITY; - - /* Start the timers. */ - CMT.CMSTR1.BIT.STR2 = 1; - CMT.CMSTR1.BIT.STR3 = 1; -} -/*-----------------------------------------------------------*/ - -#pragma vector = VECT_CMT2_CMI2 -__interrupt void vTimer2IntHandler( void ) -{ -volatile unsigned short usCurrentCount; -static unsigned short usMaxCount = 0; -static unsigned long ulErrorCount = 0UL; - - /* We use the timer 1 counter value to measure the clock cycles between - the timer 0 interrupts. First stop the clock. */ - CMT.CMSTR1.BIT.STR3 = 0; - portNOP(); - portNOP(); - usCurrentCount = timerTIMER_3_COUNT_VALUE; - - /* Is this the largest count we have measured yet? */ - if( usCurrentCount > usMaxCount ) - { - if( usCurrentCount > timerEXPECTED_DIFFERENCE_VALUE ) - { - usMaxJitter = usCurrentCount - timerEXPECTED_DIFFERENCE_VALUE; - } - else - { - /* This should not happen! */ - ulErrorCount++; - } - - usMaxCount = usCurrentCount; - } - - /* Used to generate the run time stats. */ - ulHighFrequencyTickCount++; - - /* Clear the timer. */ - timerTIMER_3_COUNT_VALUE = 0; - - /* Then start the clock again. */ - CMT.CMSTR1.BIT.STR3 = 1; -} - - - - - - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/IntQueueTimer.c b/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/IntQueueTimer.c deleted file mode 100644 index 404241c35..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/IntQueueTimer.c +++ /dev/null @@ -1,123 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* - * This file contains the non-portable and therefore RX62N specific parts of - * the IntQueue standard demo task - namely the configuration of the timers - * that generate the interrupts and the interrupt entry points. - */ - -/* Scheduler includes. */ -#include "FreeRTOS.h" -#include "task.h" - -/* Demo includes. */ -#include "IntQueueTimer.h" -#include "IntQueue.h" - -/* Hardware specifics. */ -#include - -#define tmrTIMER_0_1_FREQUENCY ( 2000UL ) -#define tmrTIMER_2_3_FREQUENCY ( 2001UL ) - -/* Handlers for the two timers used. */ -__interrupt void vT0_1InterruptHandler( void ); -__interrupt void vT2_3InterruptHandler( void ); - -void vInitialiseTimerForIntQueueTest( void ) -{ - /* Ensure interrupts do not start until full configuration is complete. */ - portENTER_CRITICAL(); - { - /* Cascade two 8bit timer channels to generate the interrupts. - 8bit timer unit 1 (TMR0 and TMR1) and 8bit timer unit 2 (TMR2 and TMR3 are - utilised for this test. */ - - /* Enable the timers. */ - SYSTEM.MSTPCRA.BIT.MSTPA5 = 0; - SYSTEM.MSTPCRA.BIT.MSTPA4 = 0; - - /* Enable compare match A interrupt request. */ - TMR0.TCR.BIT.CMIEA = 1; - TMR2.TCR.BIT.CMIEA = 1; - - /* Clear the timer on compare match A. */ - TMR0.TCR.BIT.CCLR = 1; - TMR2.TCR.BIT.CCLR = 1; - - /* Set the compare match value. */ - TMR01.TCORA = ( unsigned short ) ( ( ( configPERIPHERAL_CLOCK_HZ / tmrTIMER_0_1_FREQUENCY ) -1 ) / 8 ); - TMR23.TCORA = ( unsigned short ) ( ( ( configPERIPHERAL_CLOCK_HZ / tmrTIMER_0_1_FREQUENCY ) -1 ) / 8 ); - - /* 16 bit operation ( count from timer 1,2 ). */ - TMR0.TCCR.BIT.CSS = 3; - TMR2.TCCR.BIT.CSS = 3; - - /* Use PCLK as the input. */ - TMR1.TCCR.BIT.CSS = 1; - TMR3.TCCR.BIT.CSS = 1; - - /* Divide PCLK by 8. */ - TMR1.TCCR.BIT.CKS = 2; - TMR3.TCCR.BIT.CKS = 2; - - /* Enable TMR 0, 2 interrupts. */ - IEN( TMR0, CMIA0 ) = 1; - IEN( TMR2, CMIA2 ) = 1; - - /* Set the timer interrupts to be above the kernel. The interrupts are - assigned different priorities so they nest with each other. */ - IPR( TMR0, CMIA0 ) = configMAX_SYSCALL_INTERRUPT_PRIORITY - 1; - IPR( TMR2, CMIA2 ) = ( configMAX_SYSCALL_INTERRUPT_PRIORITY - 2 ); - } - portEXIT_CRITICAL(); - - /* Ensure the interrupts are clear as they are edge detected. */ - IR( TMR0, CMIA0 ) = 0; - IR( TMR2, CMIA2 ) = 0; -} -/*-----------------------------------------------------------*/ - -#pragma vector = VECT_TMR0_CMIA0 -__interrupt void vT0_1InterruptHandler( void ) -{ - __enable_interrupt(); - portYIELD_FROM_ISR( xFirstTimerHandler() ); -} -/*-----------------------------------------------------------*/ - -#pragma vector = VECT_TMR2_CMIA2 -__interrupt void vT2_3InterruptHandler( void ) -{ - __enable_interrupt(); - portYIELD_FROM_ISR( xSecondTimerHandler() ); -} - - - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/ParTest.c b/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/ParTest.c deleted file mode 100644 index 38d4a653c..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/ParTest.c +++ /dev/null @@ -1,228 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/*----------------------------------------------------------- - * Simple IO routines to control the LEDs. - *-----------------------------------------------------------*/ - -/* Scheduler includes. */ -#include "FreeRTOS.h" -#include "task.h" - -/* Demo includes. */ -#include "partest.h" - -/* Hardware specifics. */ -#include - -#define partestNUM_LEDS ( 12 ) - -long lParTestGetLEDState( unsigned long ulLED ); - -/*-----------------------------------------------------------*/ - -void vParTestInitialise( void ) -{ - /* Port pin configuration is done by the low level set up prior to this - function being called. */ -} -/*-----------------------------------------------------------*/ - -void vParTestSetLED( unsigned long ulLED, signed long xValue ) -{ - if( ulLED < partestNUM_LEDS ) - { - if( xValue != 0 ) - { - /* Turn the LED on. */ - taskENTER_CRITICAL(); - { - switch( ulLED ) - { - case 0: LED4 = LED_ON; - break; - case 1: LED5 = LED_ON; - break; - case 2: LED6 = LED_ON; - break; - case 3: LED7 = LED_ON; - break; - case 4: LED8 = LED_ON; - break; - case 5: LED9 = LED_ON; - break; - case 6: LED10 = LED_ON; - break; - case 7: LED11 = LED_ON; - break; - case 8: LED12 = LED_ON; - break; - case 9: LED13 = LED_ON; - break; - case 10:LED14 = LED_ON; - break; - case 11:LED15 = LED_ON; - break; - } - } - taskEXIT_CRITICAL(); - } - else - { - /* Turn the LED off. */ - taskENTER_CRITICAL(); - { - switch( ulLED ) - { - case 0: LED4 = LED_OFF; - break; - case 1: LED5 = LED_OFF; - break; - case 2: LED6 = LED_OFF; - break; - case 3: LED7 = LED_OFF; - break; - case 4: LED8 = LED_OFF; - break; - case 5: LED9 = LED_OFF; - break; - case 6: LED10 = LED_OFF; - break; - case 7: LED11 = LED_OFF; - break; - case 8: LED12 = LED_OFF; - break; - case 9: LED13 = LED_OFF; - break; - case 10:LED14 = LED_OFF; - break; - case 11:LED15 = LED_OFF; - break; - } - - } - taskEXIT_CRITICAL(); - } - } -} -/*-----------------------------------------------------------*/ - -void vParTestToggleLED( unsigned long ulLED ) -{ - if( ulLED < partestNUM_LEDS ) - { - taskENTER_CRITICAL(); - { - if( lParTestGetLEDState( ulLED ) != 0x00 ) - { - vParTestSetLED( ulLED, 0 ); - } - else - { - vParTestSetLED( ulLED, 1 ); - } - } - taskEXIT_CRITICAL(); - } -} -/*-----------------------------------------------------------*/ - -long lParTestGetLEDState( unsigned long ulLED ) -{ -long lReturn = pdFALSE; - - if( ulLED < partestNUM_LEDS ) - { - switch( ulLED ) - { - case 0 : if( LED4 != LED_OFF ) - { - lReturn = pdTRUE; - } - break; - case 1 : if( LED5 != LED_OFF ) - { - lReturn = pdTRUE; - } - break; - case 2 : if( LED6 != LED_OFF ) - { - lReturn = pdTRUE; - } - break; - case 3 : if( LED7 != LED_OFF ) - { - lReturn = pdTRUE; - } - break; - case 4 : if( LED8 != LED_OFF ) - { - lReturn = pdTRUE; - } - break; - case 5 : if( LED9 != LED_OFF ) - { - lReturn = pdTRUE; - } - break; - case 6 : if( LED10 != LED_OFF ) - { - lReturn = pdTRUE; - } - break; - case 7 : if( LED11 != LED_OFF ) - { - lReturn = pdTRUE; - } - break; - case 8 : if( LED12 != LED_OFF ) - { - lReturn = pdTRUE; - } - break; - case 9 : if( LED13 != LED_OFF ) - { - lReturn = pdTRUE; - } - break; - case 10 : if( LED14 != LED_OFF ) - { - lReturn = pdTRUE; - } - break; - case 11 : if( LED15 != LED_OFF ) - { - lReturn = pdTRUE; - } - break; - } - } - - return lReturn; -} -/*-----------------------------------------------------------*/ - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/PriorityDefinitions.h b/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/PriorityDefinitions.h deleted file mode 100644 index 96fd278fa..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/PriorityDefinitions.h +++ /dev/null @@ -1,41 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -#ifndef PRIORITY_DEFINITIONS_H -#define PRIORITY_DEFINITIONS_H - - -/* The interrupt priority used by the kernel itself for the tick interrupt and -the pended interrupt. This would normally be the lowest priority. */ -#define configKERNEL_INTERRUPT_PRIORITY 1 - -/* The maximum interrupt priority from which FreeRTOS API calls can be made. -Interrupts that use a priority above this will not be effected by anything the -kernel is doing. */ -#define configMAX_SYSCALL_INTERRUPT_PRIORITY 4 - -#endif /* PRIORITY_DEFINITIONS_H */ diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/RSKRX62N_Demo.c b/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/RSKRX62N_Demo.c deleted file mode 100644 index 38457cc5e..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/RSKRX62N_Demo.c +++ /dev/null @@ -1,260 +0,0 @@ -/* - * Copyright (c) 20010 IAR Systems AB. - * - * Permission to use, copy, modify, and distribute this software for any - * purpose with or without fee is hereby granted, provided that the above - * copyright notice and this permission notice appear in all copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - */ - -/* - * IAR Embedded Workbench tutorial - * - * Test Program for the RSKRX62N Board. - * LED's perform different display according to - * which switch is pressed. - * Used to check that all the LED's, switches, - * clock function and AD trigger are working fine. - * - * $Revision: 1556 $ - */ - -#include "iorx62n.h" -#include "intrinsics.h" - -void ScrollLedsLowHigh(void); -void ScrollLedsHighLow(void); - -unsigned long pause; -unsigned long off_set; - -#define ON 0 -#define OFF 1 -#define LED0 PORT0.DR.BIT.B2 // P02 LED0 -#define LED1 PORT0.DR.BIT.B3 // P03 LED1 -#define LED2 PORT0.DR.BIT.B5 // P05 LED2 -#define LED3 PORT3.DR.BIT.B4 // P34 LED3 -#define LED4 PORT6.DR.BIT.B0 // P50 LED4 -#define LED5 PORT7.DR.BIT.B3 // P73 LED5 - -/* defined words used in this program */ -enum { - SW1, - SW2, - SW3, - NONE -}GetKey; - -/* SW1 ISR */ -#pragma vector = 72 -__interrupt void isr_sw1(void) -{ - GetKey=SW1; - - CMT.CMSTR0.BIT.STR0 = 0; // stop timer - ICU.IR[72].BIT.IR = 0; // clear interrupt request flag -} - -/* SW2 ISR */ -#pragma vector = 73 -__interrupt void isr_sw2(void) -{ - GetKey=SW2; - - CMT.CMSTR0.BIT.STR0 = 0; // stop timer - ICU.IR[73].BIT.IR = 0; // clear interrupt request flag -} - -/* SW3 ISR */ -#pragma vector = 79 -__interrupt void isr_sw3(void) -{ - GetKey=SW3; - - CMT.CMSTR0.BIT.STR0 = 1; // start timer - ICU.IR[79].BIT.IR = 0; // clear interrupt request flag -} - -/* Timer ISR */ -#pragma vector = 0x1c -__interrupt void isr_cmt0(void) -{ - // Toggle LED's - LED0 = ~LED0; - LED1 = ~LED1; - LED2 = ~LED2; - LED3 = ~LED3; - LED4 = ~LED4; - LED5 = ~LED5; - ICU.IR[70].BIT.IR = 0; // clear interrupt request flag -} - -/* Main program. */ -void main (void) -{ - // enable modules - SYSTEM.MSTPCRA.BIT.MSTPA23 = 0; // A/D Converter (Unit 0) Module - - // Set up RV1 (potentiometer) - AD0.ADCR.BIT.MODE = 2; // Continuous scan mode - AD0.ADCSR.BIT.CH = 0; // only AD0 - AD0.ADCSR.BIT.ADST = 1; // Start A/D - - // Set up SW1, SW2, SW3 - PORT0.DDR.BIT.B0 = 0; // SW1 input on P00 - PORT0.DDR.BIT.B1 = 0; // SW2 input on P01 - PORT0.DDR.BIT.B7 = 0; // SW3 input on P07 - - PORT0.ICR.BIT.B0 = 1; // Enable input buffer - PORT0.ICR.BIT.B1 = 1; // Enable input buffer - PORT0.ICR.BIT.B7 = 1; // Enable input buffer - - // IRQ8-A used for SW1 - IOPORT.PF8IRQ.BIT.ITS8 = 0; // P00 is designated as the IRQ8-A input pin. - IEN(ICU,IRQ8) = 1; - IPR(ICU,IRQ8) = 3; - - // IRQ9-A used for SW2 - IOPORT.PF8IRQ.BIT.ITS9 = 0; // P01 is designated as IRQ9-A input pin. - IEN(ICU,IRQ9) = 1; - IPR(ICU,IRQ9) = 3; - - // IRQ15-A used for SW3 - IOPORT.PF8IRQ.BIT.ITS15 = 0; // P07 is designated as the IRQ15-A input pin. - IEN(ICU,IRQ15) = 1; - IPR(ICU,IRQ15) = 3; - - // Set up LED's - PORT0.DDR.BIT.B2 = 1; // P02 LED0 - PORT0.DDR.BIT.B3 = 1; // P03 LED1 - PORT0.DDR.BIT.B5 = 1; // P05 LED2 - PORT3.DDR.BIT.B4 = 1; // P34 LED3 - PORT6.DDR.BIT.B0 = 1; // P50 LED4 - PORT7.DDR.BIT.B3 = 1; // P73 LED5 - - // Turn al LED's off - LED0 = LED1 = LED2 = LED3 = LED4 = LED5 = OFF; - - // Set up Timer - SYSTEM.MSTPCRA.BIT.MSTPA15 = 0; // CMT timers 0, - CMT0.CMCR.BIT.CKS = 3; // 25MHz/512 = 48.8kHz - CMT0.CMCR.BIT.CMIE = 1; // enable peripheral interrupt source - CMT0.CMCOR = 12212; // 4 Hz operation - ICU.IER[3].BIT.IEN4 = 1; // enable timer 0 interrupt - IPR(CMT0,CMI0) = 1; // LED level 1 - - __enable_interrupt(); - - GetKey=SW1; - - for (;;) - { - switch (GetKey) - { - case SW1: - ScrollLedsLowHigh(); - break; - case SW2: - ScrollLedsHighLow(); - break; - case SW3: - GetKey=NONE; - break; - } - } -} - -/* scrolls the LED's from low to high */ -void ScrollLedsLowHigh() -{ - char led_number = 0; - - while (GetKey == SW1) - { - if (led_number > 5) - led_number = 0; - - switch(led_number) - { - case 0: - LED0=ON; - LED1=LED2=LED3=LED4=LED5=OFF; - break; - case 1: - LED1=ON; - LED0=LED2=LED3=LED4=LED5=OFF; - break; - case 2: - LED2=ON; - LED0=LED1=LED3=LED4=LED5=OFF; - break; - case 3: - LED3=ON; - LED0=LED1=LED2=LED4=LED5=OFF; - break; - case 4: - LED4=ON; - LED0=LED1=LED2=LED3=LED5=OFF; - break; - case 5: - LED5=ON; - LED0=LED1=LED2=LED3=LED4=OFF; - break; - } - led_number++; - - off_set = AD0.ADDRA*1000; - for (pause = off_set; pause != 0; pause --); - } -} - -/* scrolls the LED's from high to low */ -void ScrollLedsHighLow() -{ - signed char led_number = 3; - - while (GetKey == SW2) - { - if (led_number < 0) - led_number = 5; - - switch(led_number) - { - case 0: - LED0=ON; - LED1=LED2=LED3=LED4=LED5=OFF; - break; - case 1: - LED1=ON; - LED0=LED2=LED3=LED4=LED5=OFF; - break; - case 2: - LED2=ON; - LED0=LED1=LED3=LED4=LED5=OFF; - break; - case 3: - LED3=ON; - LED0=LED1=LED2=LED4=LED5=OFF; - break; - case 4: - LED4=ON; - LED0=LED1=LED2=LED3=LED5=OFF; - break; - case 5: - LED5=ON; - LED0=LED1=LED2=LED3=LED4=OFF; - break; - } - led_number--; - - off_set = AD0.ADDRA*1000; - for (pause = off_set; pause != 0; pause --); - } -} diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/RTOSDemo.ewd b/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/RTOSDemo.ewd deleted file mode 100644 index 9272a12b0..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/RTOSDemo.ewd +++ /dev/null @@ -1,898 +0,0 @@ - - - - 2 - - Debug - - RX - - 1 - - C-SPY - 2 - - 5 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - RXEMUE20 - 3 - - 3 - 1 - 1 - - - - - - - - - - - - - RXJLINK - 3 - - 4 - 1 - 1 - - - - - - - - - - - - - - SIMRX - 1 - - 1 - 1 - 1 - - - - - - - - - $TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\OpenRTOS\OpenRTOSPlugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\Quadros\Quadros_EWB6_Plugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\SafeRTOS\SafeRTOSPlugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXRxPlugin.ENU.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-286-KA-CSpy.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-KA-CSpy.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\uCOS-III\uCOS-III-KA-CSpy.ewplugin - 0 - - - $EW_DIR$\common\plugins\CodeCoverage\CodeCoverage.ENU.ewplugin - 1 - - - $EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin - 0 - - - $EW_DIR$\common\plugins\SymList\SymList.ENU.ewplugin - 1 - - - $EW_DIR$\common\plugins\uCProbe\uCProbePlugin.ENU.ewplugin - 0 - - - - - Blinky - - RX - - 1 - - C-SPY - 2 - - 5 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - RXEMUE20 - 3 - - 3 - 1 - 1 - - - - - - - - - - - - - RXJLINK - 3 - - 4 - 1 - 1 - - - - - - - - - - - - - - SIMRX - 1 - - 1 - 1 - 1 - - - - - - - - - $TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\OpenRTOS\OpenRTOSPlugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\Quadros\Quadros_EWB6_Plugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\SafeRTOS\SafeRTOSPlugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXRxPlugin.ENU.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-286-KA-CSpy.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-KA-CSpy.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\uCOS-III\uCOS-III-KA-CSpy.ewplugin - 0 - - - $EW_DIR$\common\plugins\CodeCoverage\CodeCoverage.ENU.ewplugin - 1 - - - $EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin - 0 - - - $EW_DIR$\common\plugins\SymList\SymList.ENU.ewplugin - 1 - - - $EW_DIR$\common\plugins\uCProbe\uCProbePlugin.ENU.ewplugin - 0 - - - - - Debug-with-optimisation - - RX - - 1 - - C-SPY - 2 - - 5 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - RXEMUE20 - 3 - - 3 - 1 - 1 - - - - - - - - - - - - - RXJLINK - 3 - - 4 - 1 - 1 - - - - - - - - - - - - - - SIMRX - 1 - - 1 - 1 - 1 - - - - - - - - - $TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\OpenRTOS\OpenRTOSPlugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\Quadros\Quadros_EWB6_Plugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\SafeRTOS\SafeRTOSPlugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXRxPlugin.ENU.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-286-KA-CSpy.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-KA-CSpy.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\uCOS-III\uCOS-III-KA-CSpy.ewplugin - 0 - - - $EW_DIR$\common\plugins\CodeCoverage\CodeCoverage.ENU.ewplugin - 1 - - - $EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin - 0 - - - $EW_DIR$\common\plugins\SymList\SymList.ENU.ewplugin - 1 - - - $EW_DIR$\common\plugins\uCProbe\uCProbePlugin.ENU.ewplugin - 0 - - - - - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/RTOSDemo.ewp b/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/RTOSDemo.ewp deleted file mode 100644 index 152a86330..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/RTOSDemo.ewp +++ /dev/null @@ -1,2905 +0,0 @@ - - - - 2 - - Debug - - RX - - 1 - - General - 3 - - 4 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ICCRX - 5 - - 14 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ARX - 3 - - 6 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - OBJCOPY - 1 - - 0 - 1 - 1 - - - - - - - - - CUSTOM - 3 - - - - - - - BICOMP - 0 - - - - BUILDACTION - 1 - - - - - - - ILINK - 3 - - 4 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - IARCHIVE - 1 - - 0 - 1 - 1 - - - - - - - BILINK - 0 - - - - - Blinky - - RX - - 1 - - General - 3 - - 4 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ICCRX - 5 - - 14 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ARX - 3 - - 6 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - OBJCOPY - 1 - - 0 - 1 - 1 - - - - - - - - - CUSTOM - 3 - - - - - - - BICOMP - 0 - - - - BUILDACTION - 1 - - - - - - - ILINK - 3 - - 4 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - IARCHIVE - 1 - - 0 - 1 - 1 - - - - - - - BILINK - 0 - - - - - Debug-with-optimisation - - RX - - 1 - - General - 3 - - 4 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ICCRX - 5 - - 14 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ARX - 3 - - 6 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - OBJCOPY - 1 - - 0 - 1 - 1 - - - - - - - - - CUSTOM - 3 - - - - - - - BICOMP - 0 - - - - BUILDACTION - 1 - - - - - - - ILINK - 3 - - 4 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - IARCHIVE - 1 - - 0 - 1 - 1 - - - - - - - BILINK - 0 - - - - - Common Demo Files - - Blinky - - - $PROJ_DIR$\..\Common\Minimal\BlockQ.c - - - $PROJ_DIR$\..\Common\Minimal\blocktim.c - - - $PROJ_DIR$\..\Common\Minimal\death.c - - - $PROJ_DIR$\..\Common\Minimal\flash.c - - - $PROJ_DIR$\..\Common\Minimal\flop.c - - - $PROJ_DIR$\..\Common\Minimal\GenQTest.c - - - $PROJ_DIR$\..\Common\Minimal\integer.c - - - $PROJ_DIR$\..\Common\Minimal\IntQueue.c - - - $PROJ_DIR$\..\Common\Minimal\PollQ.c - - - $PROJ_DIR$\..\Common\Minimal\QPeek.c - - - $PROJ_DIR$\..\Common\Minimal\recmutex.c - - - $PROJ_DIR$\..\Common\Minimal\semtest.c - - - - FreeRTOS Source - - Portable Layer - - $PROJ_DIR$\..\..\Source\portable\MemMang\heap_2.c - - - $PROJ_DIR$\..\..\Source\portable\IAR\RX600\port.c - - - $PROJ_DIR$\..\..\Source\portable\IAR\RX600\port_asm.s - - - - $PROJ_DIR$\..\..\Source\list.c - - - $PROJ_DIR$\..\..\Source\queue.c - - - $PROJ_DIR$\..\..\Source\tasks.c - - - $PROJ_DIR$\..\..\Source\timers.c - - - - FreeTCPIP (based on uIP) - - webserver - - Common - - $PROJ_DIR$\..\Common\ethernet\FreeTCPIP\apps\httpd\http-strings.c - - Blinky - - - - $PROJ_DIR$\..\Common\ethernet\FreeTCPIP\apps\httpd\httpd-fs.c - - Blinky - - - - $PROJ_DIR$\..\Common\ethernet\FreeTCPIP\apps\httpd\httpd.c - - Blinky - - - - - Port specific - - $PROJ_DIR$\webserver\EMAC.c - - Blinky - - - - $PROJ_DIR$\webserver\httpd-cgi.c - - Blinky - - - - $PROJ_DIR$\webserver\phy.c - - Blinky - - - - - - $PROJ_DIR$\..\Common\ethernet\FreeTCPIP\psock.c - - Blinky - - - - $PROJ_DIR$\..\Common\ethernet\FreeTCPIP\timer.c - - Blinky - - - - $PROJ_DIR$\..\Common\ethernet\FreeTCPIP\uip.c - - Blinky - - - - $PROJ_DIR$\..\Common\ethernet\FreeTCPIP\uip_arp.c - - Blinky - - - - - Renesas Files - - $PROJ_DIR$\Renesas-Files\hwsetup.c - - - - $PROJ_DIR$\HighFrequencyTimerTest.c - - Blinky - - - - $PROJ_DIR$\IntQueueTimer.c - - Blinky - - - - $PROJ_DIR$\main-blinky.c - - Debug - Debug-with-optimisation - - - - $PROJ_DIR$\main-full.c - - Blinky - - - - $PROJ_DIR$\ParTest.c - - - $PROJ_DIR$\RegTest.s - - Blinky - - - - $PROJ_DIR$\uIP_Task.c - - Blinky - - - - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/RTOSDemo.eww b/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/RTOSDemo.eww deleted file mode 100644 index 239a9381e..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/RTOSDemo.eww +++ /dev/null @@ -1,10 +0,0 @@ - - - - - $WS_DIR$\RTOSDemo.ewp - - - - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/ReadMe.txt b/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/ReadMe.txt new file mode 100644 index 000000000..12c70d213 --- /dev/null +++ b/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/ReadMe.txt @@ -0,0 +1 @@ +The third party uIP TCP/IP stack and the demo project that used to be in this directory was removed in FreeRTOS version V10.4.3 due to security vulnerabilities identified in uIP. In a future version this demo may be replaced by a version which does not use TCP/IP or uses FreeRTOS’s own TCP/IP stack in place of the original third party stack. \ No newline at end of file diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/RegTest.s b/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/RegTest.s deleted file mode 100644 index e07183900..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/RegTest.s +++ /dev/null @@ -1,199 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - - PUBLIC _prvRegTest1Implementation - PUBLIC _prvRegTest2Implementation - - EXTERN _ulRegTest1CycleCount - EXTERN _ulRegTest2CycleCount - - RSEG CODE:CODE(4) - -/* This function is explained in the comments at the top of main.c. */ -_prvRegTest1Implementation: - - /* Put a known value in each register. */ - MOV #1, R1 - MOV #2, R2 - MOV #3, R3 - MOV #4, R4 - MOV #5, R5 - MOV #6, R6 - MOV #7, R7 - MOV #8, R8 - MOV #9, R9 - MOV #10, R10 - MOV #11, R11 - MOV #12, R12 - MOV #13, R13 - MOV #14, R14 - MOV #15, R15 - - /* Loop, checking each iteration that each register still contains the - expected value. */ -TestLoop1: - - /* Push the registers that are going to get clobbered. */ - PUSHM R14-R15 - - /* Increment the loop counter to show this task is still getting CPU time. */ - MOV #_ulRegTest1CycleCount, R14 - MOV [ R14 ], R15 - ADD #1, R15 - MOV R15, [ R14 ] - - /* Yield to extend the text coverage. Set the bit in the ITU SWINTR register. */ - MOV #1, R14 - MOV #0872E0H, R15 - MOV.B R14, [R15] - NOP - NOP - - /* Restore the clobbered registers. */ - POPM R14-R15 - - /* Now compare each register to ensure it still contains the value that was - set before this loop was entered. */ - CMP #1, R1 - BNE RegTest1Error - CMP #2, R2 - BNE RegTest1Error - CMP #3, R3 - BNE RegTest1Error - CMP #4, R4 - BNE RegTest1Error - CMP #5, R5 - BNE RegTest1Error - CMP #6, R6 - BNE RegTest1Error - CMP #7, R7 - BNE RegTest1Error - CMP #8, R8 - BNE RegTest1Error - CMP #9, R9 - BNE RegTest1Error - CMP #10, R10 - BNE RegTest1Error - CMP #11, R11 - BNE RegTest1Error - CMP #12, R12 - BNE RegTest1Error - CMP #13, R13 - BNE RegTest1Error - CMP #14, R14 - BNE RegTest1Error - CMP #15, R15 - BNE RegTest1Error - - /* All comparisons passed, start a new itteratio of this loop. */ - BRA TestLoop1 - -RegTest1Error: - /* A compare failed, just loop here so the loop counter stops incrementing - - causing the check task to indicate the error. */ - BRA RegTest1Error -/*-----------------------------------------------------------*/ - -/* This function is explained in the comments at the top of main.c. */ -_prvRegTest2Implementation: - - /* Put a known value in each register. */ - MOV #10H, R1 - MOV #20H, R2 - MOV #30H, R3 - MOV #40H, R4 - MOV #50H, R5 - MOV #60H, R6 - MOV #70H, R7 - MOV #80H, R8 - MOV #90H, R9 - MOV #100H, R10 - MOV #110H, R11 - MOV #120H, R12 - MOV #130H, R13 - MOV #140H, R14 - MOV #150H, R15 - - /* Loop, checking each iteration that each register still contains the - expected value. */ -TestLoop2: - - /* Push the registers that are going to get clobbered. */ - PUSHM R14-R15 - - /* Increment the loop counter to show this task is still getting CPU time. */ - MOV #_ulRegTest2CycleCount, R14 - MOV [ R14 ], R15 - ADD #1, R15 - MOV R15, [ R14 ] - - /* Restore the clobbered registers. */ - POPM R14-R15 - - /* Now compare each register to ensure it still contains the value that was - set before this loop was entered. */ - CMP #10H, R1 - BNE RegTest2Error - CMP #20H, R2 - BNE RegTest2Error - CMP #30H, R3 - BNE RegTest2Error - CMP #40H, R4 - BNE RegTest2Error - CMP #50H, R5 - BNE RegTest2Error - CMP #60H, R6 - BNE RegTest2Error - CMP #70H, R7 - BNE RegTest2Error - CMP #80H, R8 - BNE RegTest2Error - CMP #90H, R9 - BNE RegTest2Error - CMP #100H, R10 - BNE RegTest2Error - CMP #110H, R11 - BNE RegTest2Error - CMP #120H, R12 - BNE RegTest2Error - CMP #130H, R13 - BNE RegTest2Error - CMP #140H, R14 - BNE RegTest2Error - CMP #150H, R15 - BNE RegTest2Error - - /* All comparisons passed, start a new itteratio of this loop. */ - BRA TestLoop2 - -RegTest2Error: - /* A compare failed, just loop here so the loop counter stops incrementing - - causing the check task to indicate the error. */ - BRA RegTest2Error - - - END diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/Renesas-Files/hwsetup.c b/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/Renesas-Files/hwsetup.c deleted file mode 100644 index e177682f3..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/Renesas-Files/hwsetup.c +++ /dev/null @@ -1,150 +0,0 @@ -/****************************************************************************** -* DISCLAIMER - -* This software is supplied by Renesas Technology Corp. and is only -* intended for use with Renesas products. No other uses are authorized. - -* This software is owned by Renesas Technology Corp. and is protected under -* all applicable laws, including copyright laws. - -* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES -* REGARDING THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, -* INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A -* PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY -* DISCLAIMED. - -* TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS -* TECHNOLOGY CORP. NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE -* FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES -* FOR ANY REASON RELATED TO THE THIS SOFTWARE, EVEN IF RENESAS OR ITS -* AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - -* Renesas reserves the right, without notice, to make changes to this -* software and to discontinue the availability of this software. -* By using this software, you agree to the additional terms and -* conditions found by accessing the following link: -* http://www.renesas.com/disclaimer -****************************************************************************** -* Copyright (C) 2008. Renesas Technology Corp., All Rights Reserved. -******************************************************************************* -* File Name : hwsetup.c -* Version : 1.00 -* Description : Power up hardware initializations -****************************************************************************** -* History : DD.MM.YYYY Version Description -* : 15.02.2010 1.00 First Release -******************************************************************************/ - - -/****************************************************************************** -Includes , "Project Includes" -******************************************************************************/ -#include -#include -#include "yrdkrx62ndef.h" -// #include "lcd.h" Uncomment this if an LCD is present. - -/****************************************************************************** -Typedef definitions -******************************************************************************/ - -/****************************************************************************** -Macro definitions -******************************************************************************/ - -/****************************************************************************** -Imported global variables and functions (from other files) -******************************************************************************/ - -/****************************************************************************** -Exported global variables and functions (to be accessed by other files) -******************************************************************************/ - -/****************************************************************************** -Private global variables and functions -******************************************************************************/ - -/****************************************************************************** -* Function Name: HardwareSetup -* Description : This function does initial setting for CPG port pins used in -* : the Demo including the MII pins of the Ethernet PHY connection. -* Arguments : none -* Return Value : none -******************************************************************************/ -void HardwareSetup(void) -{ - uint32_t sckcr = 0; - - /* Configure system clocks based on header */ - sckcr += (ICLK_MUL==8) ? (0ul << 24) : (ICLK_MUL==4) ? (1ul << 24) : (ICLK_MUL==2) ? (2ul << 24) : (3ul << 24); - sckcr += (BCLK_MUL==8) ? (0ul << 16) : (BCLK_MUL==4) ? (1ul << 16) : (BCLK_MUL==2) ? (2ul << 16) : (3ul << 16); - sckcr += (PCLK_MUL==8) ? (0ul << 8) : (PCLK_MUL==4) ? (1ul << 8) : (PCLK_MUL==2) ? (2ul << 8) : (3ul << 8); - SYSTEM.SCKCR.LONG = sckcr; - - /* Module standby clear - EtherC, EDMAC */ - SYSTEM.MSTPCRB.BIT.MSTPB15 = 0; - - PORT0.DDR.BYTE = 0x00 ; // Port 0: inputs (IRQ's from ethernet & WiFi) - PORT1.DDR.BYTE = 0x00 ; // Port 1: inputs (IIC and USB settings will override these later) - PORT2.DDR.BYTE = 0x1A ; // Port 2: USB signals - PORT3.DDR.BYTE = 0x04 ; // Port 3: JTAG (P30, P31, P34), CAN (P32=Tx, P33=Rx), NMI (P35) - PORT4.DDR.BYTE = 0x00 ; // Port 4: Switches (P40-P42), AIN (P43-P47) - PORT5.DDR.BYTE = 0x3B ; // Port 5: Audio (P55,P54), BCLK (P53), SCI (P52=Rx, P50=Tx), LCD-RS (P51) - - PORTA.DR.BYTE = 0x00 ; // Port A outputs all LOW to start - PORTA.DDR.BYTE = 0xFF ; // Port A: Expansion (PA0-PA2), Ether (PA3-PA5), Audio (PA6-PA7) - - PORTB.DR.BYTE = 0x00 ; - PORTB.DDR.BYTE = 0x70 ; // Port B: Ether - - PORTC.DR.BYTE = 0xF7 ; // Port C: Chip selects, clock = high; IO reset = low (not reset, needed by Ether PHY) - PORTC.DDR.BYTE = 0x7F ; // Port C: SPI (PC0-2, PC4-7), IO reset (PC3) - - // Ethernet settings - IOPORT.PFENET.BYTE = 0x82; // Enable Ether poins, RMII mode, enable LINKSTA - PORTA.ICR.BIT.B5 = 1; // ET_LINKSTA - PORTA.ICR.BIT.B3 = 1; // ET_MDIO - PORTB.ICR.BIT.B0 = 1; // RMII_RXD1 - PORTB.ICR.BIT.B1 = 1; // RMII_RXD0 - PORTB.ICR.BIT.B2 = 1; // REF50CLK - PORTB.ICR.BIT.B3 = 1; // RMII_RX_ER - PORTB.ICR.BIT.B7 = 1; // RMII_CRS_DV - - - /* Configure LEDs */ - LED4 = LED_OFF; - LED5 = LED_OFF; - LED6 = LED_OFF; - LED7 = LED_OFF; - LED8 = LED_OFF; - LED9 = LED_OFF; - LED10 = LED_OFF; - LED11 = LED_OFF; - LED12 = LED_OFF; - LED13 = LED_OFF; - LED14 = LED_OFF; - LED15 = LED_OFF; - - LED4_DDR = 1; - LED5_DDR = 1; - LED6_DDR = 1; - LED7_DDR = 1; - LED8_DDR = 1; - LED9_DDR = 1; - LED10_DDR = 1; - LED11_DDR = 1; - LED12_DDR = 1; - LED13_DDR = 1; - LED14_DDR = 1; - LED15_DDR = 1; - - /* Configure push button switches */ - SW1_DDR = 0; - SW2_DDR = 0; - SW3_DDR = 0; - SW1_ICR = 1; - SW2_ICR = 1; - SW3_ICR = 1; -} - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/include/IntQueueTimer.h b/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/include/IntQueueTimer.h deleted file mode 100644 index a13dac500..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/include/IntQueueTimer.h +++ /dev/null @@ -1,36 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -#ifndef INT_QUEUE_TIMER_H -#define INT_QUEUE_TIMER_H - -void vInitialiseTimerForIntQueueTest( void ); -portBASE_TYPE xTimer0Handler( void ); -portBASE_TYPE xTimer1Handler( void ); - -#endif - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/include/inthandler.h b/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/include/inthandler.h deleted file mode 100644 index f55efcaf6..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/include/inthandler.h +++ /dev/null @@ -1,714 +0,0 @@ -/***********************************************************************/ -/* */ -/* FILE :inthandler.h */ -/* DATE :Wed, Aug 25, 2010 */ -/* DESCRIPTION :Interrupt Handler Declarations */ -/* CPU TYPE :Other */ -/* */ -/* This file is generated by KPIT GNU Project Generator. */ -/* */ -/***********************************************************************/ - - - -#ifndef INTHANDLER_H -#define INTHANDLER_H - -// Exception(Supervisor Instruction) -void INT_Excep_SuperVisorInst(void) __attribute__ ((interrupt)); - -// Exception(Undefined Instruction) -void INT_Excep_UndefinedInst(void) __attribute__ ((interrupt)); - -// Exception(Floating Point) -void INT_Excep_FloatingPoint(void) __attribute__ ((interrupt)); - -// NMI -void INT_NonMaskableInterrupt(void) __attribute__ ((interrupt)); - -// Dummy -void Dummy (void) __attribute__ ((interrupt)); - -// BRK -void INT_Excep_BRK(void) __attribute__ ((interrupt)); - -// vector 1 reserved -// vector 2 reserved -// vector 3 reserved -// vector 4 reserved -// vector 5 reserved -// vector 6 reserved -// vector 7 reserved -// vector 8 reserved -// vector 9 reserved -// vector 10 reserved -// vector 11 reserved -// vector 12 reserved -// vector 13 reserved -// vector 14 reserved -// vector 15 reserved - -// BUSERR - -void INT_Excep_BUSERR(void) __attribute__ ((interrupt)); - -// vector 17 reserved -// vector 18 reserved -// vector 19 reserved -// vector 20 reserved - -// FCU_FCUERR - -void INT_Excep_FCU_FCUERR(void) __attribute__ ((interrupt)); - -// vector 22 reserved - -// FCU_FRDYI - -void INT_Excep_FCU_FRDYI(void) __attribute__ ((interrupt)); - -// vector 24 reserved -// vector 25 reserved -// vector 26 reserved -// vector 27 reserved - -// CMTU0_CMT0 - -void INT_Excep_CMTU0_CMT0(void) __attribute__ ((interrupt)); - -// CMTU0_CMT1 - -void INT_Excep_CMTU0_CMT1(void) __attribute__ ((interrupt)); - -// CMTU1_CMT2 - -void INT_Excep_CMTU1_CMT2(void) __attribute__ ((interrupt)); - -// CMTU1_CMT3 - -void INT_Excep_CMTU1_CMT3(void) __attribute__ ((interrupt)); - -// vector 32 reserved -// vector 33 reserved -// vector 34 reserved -// vector 35 reserved -// vector 36 reserved -// vector 37 reserved -// vector 38 reserved -// vector 39 reserved -// vector 40 reserved -// vector 41 reserved -// vector 42 reserved -// vector 43 reserved -// vector 44 reserved -// vector 45 reserved -// vector 46 reserved -// vector 47 reserved -// vector 48 reserved -// vector 49 reserved -// vector 50 reserved -// vector 51 reserved -// vector 52 reserved -// vector 53 reserved -// vector 54 reserved -// vector 55 reserved -// vector 56 reserved -// vector 57 reserved -// vector 58 reserved -// vector 59 reserved -// vector 60 reserved -// vector 61 reserved -// vector 62 reserved -// vector 63 reserved - -// IRQ0 - -void INT_Excep_IRQ0(void) __attribute__ ((interrupt)); - -// IRQ1 - -void INT_Excep_IRQ1(void) __attribute__ ((interrupt)); - -// IRQ2 - -void INT_Excep_IRQ2(void) __attribute__ ((interrupt)); - -// IRQ3 - -void INT_Excep_IRQ3(void) __attribute__ ((interrupt)); - -// IRQ4 - -void INT_Excep_IRQ4(void) __attribute__ ((interrupt)); - -// IRQ5 - -void INT_Excep_IRQ5(void) __attribute__ ((interrupt)); - -// IRQ6 - -void INT_Excep_IRQ6(void) __attribute__ ((interrupt)); - -// IRQ7 - -void INT_Excep_IRQ7(void) __attribute__ ((interrupt)); - -// IRQ8 - -void INT_Excep_IRQ8(void) __attribute__ ((interrupt)); - -// IRQ9 - -void INT_Excep_IRQ9(void) __attribute__ ((interrupt)); - -// IRQ10 - -void INT_Excep_IRQ10(void) __attribute__ ((interrupt)); - -// IRQ11 - -void INT_Excep_IRQ11(void) __attribute__ ((interrupt)); - -// IRQ12 - -void INT_Excep_IRQ12(void) __attribute__ ((interrupt)); - -// IRQ13 - -void INT_Excep_IRQ13(void) __attribute__ ((interrupt)); - -// IRQ14 - -void INT_Excep_IRQ14(void) __attribute__ ((interrupt)); - -// IRQ15 - -void INT_Excep_IRQ15(void) __attribute__ ((interrupt)); - -// vector 80 reserved -// vector 81 reserved -// vector 82 reserved -// vector 83 reserved -// vector 84 reserved -// vector 85 reserved -// vector 86 reserved -// vector 87 reserved -// vector 88 reserved -// vector 89 reserved -// vector 90 reserved -// vector 91 reserved -// vector 92 reserved -// vector 93 reserved -// vector 94 reserved -// vector 95 reserved - -// WDT_WOVI - -void INT_Excep_WDT_WOVI(void) __attribute__ ((interrupt)); - -// vector 97 reserved - -// AD0_ADI0 - -void INT_Excep_AD0_ADI0(void) __attribute__ ((interrupt)); - -// AD1_ADI1 - -void INT_Excep_AD1_ADI1(void) __attribute__ ((interrupt)); - -// AD2_ADI2 - -void INT_Excep_AD2_ADI2(void) __attribute__ ((interrupt)); - -// AD3_ADI3 - -void INT_Excep_AD3_ADI3(void) __attribute__ ((interrupt)); - -// vector 102 reserved -// vector 103 reserved - -// TPU0_TGI0A - -void INT_Excep_TPU0_TGI0A(void) __attribute__ ((interrupt)); - -// TPU0_TGI0B - -void INT_Excep_TPU0_TGI0B(void) __attribute__ ((interrupt)); - -// TPU0_TGI0C - -void INT_Excep_TPU0_TGI0C(void) __attribute__ ((interrupt)); - -// TPU0_TGI0D - -void INT_Excep_TPU0_TGI0D(void) __attribute__ ((interrupt)); - -// TPU0_TCI0V - -void INT_Excep_TPU0_TCI0V(void) __attribute__ ((interrupt)); - -// vector 109 reserved -// vector 110 reserved - -// TPU1_TGI1A - -void INT_Excep_TPU1_TGI1A(void) __attribute__ ((interrupt)); - -// TPU1_TGI1B - -void INT_Excep_TPU1_TGI1B(void) __attribute__ ((interrupt)); - -// vector 113 reserved -// vector 114 reserved - -// TPU1_TCI1V - -void INT_Excep_TPU1_TCI1V(void) __attribute__ ((interrupt)); - -// TPU1_TCI1U - -void INT_Excep_TPU1_TCI1U(void) __attribute__ ((interrupt)); - -// TPU2_TGI2A - -void INT_Excep_TPU2_TGI2A(void) __attribute__ ((interrupt)); - -// TPU2_TGI2B - -void INT_Excep_TPU2_TGI2B(void) __attribute__ ((interrupt)); - -// vector 119 reserved - -// TPU2_TCI2V - -void INT_Excep_TPU2_TCI2V(void) __attribute__ ((interrupt)); - -// TPU2_TCI2U - -void INT_Excep_TPU2_TCI2U(void) __attribute__ ((interrupt)); - -// TPU3_TGI3A - -void INT_Excep_TPU3_TGI3A(void) __attribute__ ((interrupt)); - -// TPU3_TGI3B - -void INT_Excep_TPU3_TGI3B(void) __attribute__ ((interrupt)); - -// TPU3_TGI3C - -void INT_Excep_TPU3_TGI3C(void) __attribute__ ((interrupt)); - -// TPU3_TGI3D - -void INT_Excep_TPU3_TGI3D(void) __attribute__ ((interrupt)); - -// TPU3_TCI3V - -void INT_Excep_TPU3_TCI3V(void) __attribute__ ((interrupt)); - -// TPU4_TGI4A - -void INT_Excep_TPU4_TGI4A(void) __attribute__ ((interrupt)); - -// TPU4_TGI4B - -void INT_Excep_TPU4_TGI4B(void) __attribute__ ((interrupt)); - -// vector 129 reserved -// vector 130 reserved - -// TPU4_TCI4V - -void INT_Excep_TPU4_TCI4V(void) __attribute__ ((interrupt)); - -// TPU4_TCI4U - -void INT_Excep_TPU4_TCI4U(void) __attribute__ ((interrupt)); - -// TPU5_TGI5A - -void INT_Excep_TPU5_TGI5A(void) __attribute__ ((interrupt)); - -// TPU5_TGI5B - -void INT_Excep_TPU5_TGI5B(void) __attribute__ ((interrupt)); - -// vector 135 reserved - -// TPU5_TCI5V - -void INT_Excep_TPU5_TCI5V(void) __attribute__ ((interrupt)); - -// TPU5_TCI5U - -void INT_Excep_TPU5_TCI5U(void) __attribute__ ((interrupt)); - -// TPU6_TGI6A - -void INT_Excep_TPU6_TGI6A(void) __attribute__ ((interrupt)); - -// TPU6_TGI6B - -void INT_Excep_TPU6_TGI6B(void) __attribute__ ((interrupt)); - -// TPU6_TGI6C - -void INT_Excep_TPU6_TGI6C(void) __attribute__ ((interrupt)); - -// TPU6_TGI6D - -void INT_Excep_TPU6_TGI6D(void) __attribute__ ((interrupt)); - -// TPU6_TCI6V - -void INT_Excep_TPU6_TCI6V(void) __attribute__ ((interrupt)); - -// vector 143 reserved -// vector 144 reserved - -// TPU7_TGI7A - -void INT_Excep_TPU7_TGI7A(void) __attribute__ ((interrupt)); - -// TPU7_TGI7B - -void INT_Excep_TPU7_TGI7B(void) __attribute__ ((interrupt)); - -// vector 147 reserved -// vector 148 reserved - -// TPU7_TCI7V - -void INT_Excep_TPU7_TCI7V(void) __attribute__ ((interrupt)); - -// TPU7_TCI7U - -void INT_Excep_TPU7_TCI7U(void) __attribute__ ((interrupt)); - -// TPU8_TGI8A - -void INT_Excep_TPU8_TGI8A(void) __attribute__ ((interrupt)); - -// TPU8_TGI8B - -void INT_Excep_TPU8_TGI8B(void) __attribute__ ((interrupt)); - -// vector 153 reserved - -// TPU8_TCI8V - -void INT_Excep_TPU8_TCI8V(void) __attribute__ ((interrupt)); - -// TPU8_TCI8U - -void INT_Excep_TPU8_TCI8U(void) __attribute__ ((interrupt)); - -// TPU9_TGI9A - -void INT_Excep_TPU9_TGI9A(void) __attribute__ ((interrupt)); - -// TPU9_TGI9B - -void INT_Excep_TPU9_TGI9B(void) __attribute__ ((interrupt)); - -// TPU9_TGI9C - -void INT_Excep_TPU9_TGI9C(void) __attribute__ ((interrupt)); - -// TPU9_TGI9D - -void INT_Excep_TPU9_TGI9D(void) __attribute__ ((interrupt)); - -// TPU9_TCI9V - -void INT_Excep_TPU9_TCI9V(void) __attribute__ ((interrupt)); - -// TPU10_TGI10A - -void INT_Excep_TPU10_TGI10A(void) __attribute__ ((interrupt)); - -// TPU10_TGI10B - -void INT_Excep_TPU10_TGI10B(void) __attribute__ ((interrupt)); - -// vector 163 reserved -// vector 164 reserved - -// TPU10_TCI10V - -void INT_Excep_TPU10_TCI10V(void) __attribute__ ((interrupt)); - -// TPU10_TCI10U - -void INT_Excep_TPU10_TCI10U(void) __attribute__ ((interrupt)); - -// TPU11_TGI11A - -void INT_Excep_TPU11_TGI11A(void) __attribute__ ((interrupt)); - -// TPU11_TGI11B - -void INT_Excep_TPU11_TGI11B(void) __attribute__ ((interrupt)); - -// vector 169 reserved - -// TPU11_TCI11V - -void INT_Excep_TPU11_TCI11V(void) __attribute__ ((interrupt)); - -// TPU11_TCI11U - -void INT_Excep_TPU11_TCI11U(void) __attribute__ ((interrupt)); - -// vector 172 reserved -// vector 173 reserved - -// TMR0_CMI0A - -void INT_Excep_TMR0_CMI0A(void) __attribute__ ((interrupt)); - -// TMR0_CMI0B - -void INT_Excep_TMR0_CMI0B(void) __attribute__ ((interrupt)); - -// TMR0_OV0I - -void INT_Excep_TMR0_OV0I(void) __attribute__ ((interrupt)); - -// TMR1_CMI1A - -void INT_Excep_TMR1_CMI1A(void) __attribute__ ((interrupt)); - -// TMR1_CMI1B - -void INT_Excep_TMR1_CMI1B(void) __attribute__ ((interrupt)); - -// TMR1_OV1I - -void INT_Excep_TMR1_OV1I(void) __attribute__ ((interrupt)); - -// TMR2_CMI2A - -void INT_Excep_TMR2_CMI2A(void) __attribute__ ((interrupt)); - -// TMR2_CMI2B - -void INT_Excep_TMR2_CMI2B(void) __attribute__ ((interrupt)); - -// TMR2_OV2I - -void INT_Excep_TMR2_OV2I(void) __attribute__ ((interrupt)); - -// TMR3_CMI3A - -void INT_Excep_TMR3_CMI3A(void) __attribute__ ((interrupt)); - -// TMR3_CMI3B - -void INT_Excep_TMR3_CMI3B(void) __attribute__ ((interrupt)); - -// TMR3_OV3I - -void INT_Excep_TMR3_OV3I(void) __attribute__ ((interrupt)); - -// vector 186 reserved -// vector 187 reserved -// vector 188 reserved -// vector 189 reserved -// vector 190 reserved -// vector 191 reserved -// vector 192 reserved -// vector 193 reserved -// vector 194 reserved -// vector 195 reserved -// vector 196 reserved -// vector 197 reserved - -// DMAC_DMTEND0 - -void INT_Excep_DMAC_DMTEND0(void); - -// DMAC_DMTEND1 - -void INT_Excep_DMAC_DMTEND1(void) __attribute__ ((interrupt)); - -// DMAC_DMTEND2 - -void INT_Excep_DMAC_DMTEND2(void) __attribute__ ((interrupt)); - -// DMAC_DMTEND3 - -void INT_Excep_DMAC_DMTEND3(void) __attribute__ ((interrupt)); - -// vector 202 reserved -// vector 203 reserved -// vector 204 reserved -// vector 205 reserved -// vector 206 reserved -// vector 207 reserved -// vector 208 reserved -// vector 209 reserved -// vector 210 reserved -// vector 211 reserved -// vector 212 reserved -// vector 213 reserved - -// SCI0_ERI0 - -void INT_Excep_SCI0_ERI0(void) __attribute__ ((interrupt)); - -// SCI0_RXI0 - -void INT_Excep_SCI0_RXI0(void) __attribute__ ((interrupt)); - -// SCI0_TXI0 - -void INT_Excep_SCI0_TXI0(void) __attribute__ ((interrupt)); - -// SCI0_TEI0 - -void INT_Excep_SCI0_TEI0(void) __attribute__ ((interrupt)); - -// SCI1_ERI1 - -void INT_Excep_SCI1_ERI1(void) __attribute__ ((interrupt)); - -// SCI1_RXI1 - -void INT_Excep_SCI1_RXI1(void) __attribute__ ((interrupt)); - -// SCI1_TXI1 - -void INT_Excep_SCI1_TXI1(void) __attribute__ ((interrupt)); - -// SCI1_TEI1 - -void INT_Excep_SCI1_TEI1(void) __attribute__ ((interrupt)); - -// SCI2_ERI2 - -void INT_Excep_SCI2_ERI2(void) __attribute__ ((interrupt)); - -// SCI2_RXI2 - -void INT_Excep_SCI2_RXI2(void) __attribute__ ((interrupt)); - -// SCI2_TXI2 - -void INT_Excep_SCI2_TXI2(void) __attribute__ ((interrupt)); - -// SCI2_TEI2 - -void INT_Excep_SCI2_TEI2(void) __attribute__ ((interrupt)); - -// SCI3_ERI3 - -void INT_Excep_SCI3_ERI3(void) __attribute__ ((interrupt)); - -// SCI3_RXI3 - -void INT_Excep_SCI3_RXI3(void) __attribute__ ((interrupt)); - -// SCI3_TXI3 - -void INT_Excep_SCI3_TXI3(void) __attribute__ ((interrupt)); - -// SCI3_TEI3 - -void INT_Excep_SCI3_TEI3(void) __attribute__ ((interrupt)); - -// SCI4_ERI4 - -void INT_Excep_SCI4_ERI4(void) __attribute__ ((interrupt)); - -// SCI4_RXI4 - -void INT_Excep_SCI4_RXI4(void) __attribute__ ((interrupt)); - -// SCI4_TXI4 - -void INT_Excep_SCI4_TXI4(void) __attribute__ ((interrupt)); - -// SCI4_TEI4 - -void INT_Excep_SCI4_TEI4(void) __attribute__ ((interrupt)); - -// SCI5_ERI5 - -void INT_Excep_SCI5_ERI5(void) __attribute__ ((interrupt)); - -// SCI5_RXI5 - -void INT_Excep_SCI5_RXI5(void) __attribute__ ((interrupt)); - -// SCI5_TXI5 - -void INT_Excep_SCI5_TXI5(void) __attribute__ ((interrupt)); - -// SCI5_TEI5 - -void INT_Excep_SCI5_TEI5(void) __attribute__ ((interrupt)); - -// SCI6_ERI6 - -void INT_Excep_SCI6_ERI6(void) __attribute__ ((interrupt)); - -// SCI6_RXI6 - -void INT_Excep_SCI6_RXI6(void) __attribute__ ((interrupt)); - -// SCI6_TXI6 - -void INT_Excep_SCI6_TXI6(void) __attribute__ ((interrupt)); - -// SCI6_TEI6 - -void INT_Excep_SCI6_TEI6(void) __attribute__ ((interrupt)); - -// vector 242 reserved -// vector 243 reserved -// vector 244 reserved -// vector 245 reserved - -// RIIC0_EEI0 - -void INT_Excep_RIIC0_EEI0(void) __attribute__ ((interrupt)); - -// RIIC0_RXI0 - -void INT_Excep_RIIC0_RXI0(void) __attribute__ ((interrupt)); - -// RIIC0_TXI0 - -void INT_Excep_RIIC0_TXI0(void) __attribute__ ((interrupt)); - -// RIIC0_TEI0 - -void INT_Excep_RIIC0_TEI0(void) __attribute__ ((interrupt)); - -// RIIC1_EEI1 - -void INT_Excep_RIIC1_EEI1(void) __attribute__ ((interrupt)); - -// RIIC1_RXI1 - -void INT_Excep_RIIC1_RXI1(void) __attribute__ ((interrupt)); - -// RIIC1_TXI1 - -void INT_Excep_RIIC1_TXI1(void) __attribute__ ((interrupt)); - -// RIIC1_TEI1 - -void INT_Excep_RIIC1_TEI1(void) __attribute__ ((interrupt)); - -// vector 254 reserved -// vector 255 reserved - -//;<> -//;Power On Reset PC -extern void PowerON_Reset_PC(void) __attribute__ ((interrupt)); -//;<> - -#endif \ No newline at end of file diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/include/typedefine.h b/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/include/typedefine.h deleted file mode 100644 index 49b303a56..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/include/typedefine.h +++ /dev/null @@ -1,23 +0,0 @@ -/***********************************************************************/ -/* */ -/* FILE :typedefine.h */ -/* DATE :Wed, Aug 25, 2010 */ -/* DESCRIPTION :Aliases of Integer Type */ -/* CPU TYPE :Other */ -/* */ -/* This file is generated by KPIT GNU Project Generator. */ -/* */ -/***********************************************************************/ - - - -typedef signed char _SBYTE; -typedef unsigned char _UBYTE; -typedef signed short _SWORD; -typedef unsigned short _UWORD; -typedef signed int _SINT; -typedef unsigned int _UINT; -typedef signed long _SDWORD; -typedef unsigned long _UDWORD; -typedef signed long long _SQWORD; -typedef unsigned long long _UQWORD; diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/include/yrdkrx62ndef.h b/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/include/yrdkrx62ndef.h deleted file mode 100644 index 779da3562..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/include/yrdkrx62ndef.h +++ /dev/null @@ -1,110 +0,0 @@ - -/****************************************************************************** -* DISCLAIMER -* Please refer to http://www.renesas.com/disclaimer -****************************************************************************** - Copyright (C) 2008. Renesas Technology Corp., All Rights Reserved. -******************************************************************************* -* File Name : rsksh7216.h -* Version : 1.00 -* Description : RSK 7216 board specific settings -****************************************************************************** -* History : DD.MM.YYYY Version Description -* : 06.10.2009 1.00 First Release -******************************************************************************/ - -#ifndef RDKRX62N_H -#define RDKRX62N_H - -/****************************************************************************** -Includes , "Project Includes" -******************************************************************************/ - -/****************************************************************************** -Typedef definitions -******************************************************************************/ - -/****************************************************************************** -Macro definitions -******************************************************************************/ - -/* System Clock Settings */ -#define XTAL_FREQUENCY (12000000L) -#define ICLK_MUL (8) -#define PCLK_MUL (4) -#define BCLK_MUL (4) -#define ICLK_FREQUENCY (XTAL_FREQUENCY * ICLK_MUL) -#define PCLK_FREQUENCY (XTAL_FREQUENCY * PCLK_MUL) -#define BCLK_FREQUENCY (XTAL_FREQUENCY * BCLK_MUL) - -#define CMT0_CLK_SELECT (512) - -/* General Values */ -#ifdef LED_POSITIVE_LOGIC - #define LED_ON (1) - #define LED_OFF (0) -#else -/* LEDs are using NEGATIVE LOGIC... */ - #define LED_ON (0) - #define LED_OFF (1) -#endif -#define SET_BIT_HIGH (1) -#define SET_BIT_LOW (0) -#define SET_BYTE_HIGH (0xFF) -#define SET_BYTE_LOW (0x00) - -/* Define switches to be polled if not available as interrupts */ -#define SW_ACTIVE FALSE -#define SW1 PORT4.PORT.BIT.B0 -#define SW2 PORT4.PORT.BIT.B1 -#define SW3 PORT4.PORT.BIT.B2 -#define SW1_DDR PORT4.DDR.BIT.B0 -#define SW2_DDR PORT4.DDR.BIT.B1 -#define SW3_DDR PORT4.DDR.BIT.B2 -#define SW1_ICR PORT4.ICR.BIT.B0 -#define SW2_ICR PORT4.ICR.BIT.B1 -#define SW3_ICR PORT4.ICR.BIT.B2 - -/* LEDs */ -#define LED4 PORTD.DR.BIT.B5 -#define LED5 PORTE.DR.BIT.B3 -#define LED6 PORTD.DR.BIT.B2 -#define LED7 PORTE.DR.BIT.B0 -#define LED8 PORTD.DR.BIT.B4 -#define LED9 PORTE.DR.BIT.B2 -#define LED10 PORTD.DR.BIT.B1 -#define LED11 PORTD.DR.BIT.B7 -#define LED12 PORTD.DR.BIT.B3 -#define LED13 PORTE.DR.BIT.B1 -#define LED14 PORTD.DR.BIT.B0 -#define LED15 PORTD.DR.BIT.B6 - -#define LED4_DDR PORTD.DDR.BIT.B5 -#define LED5_DDR PORTE.DDR.BIT.B3 -#define LED6_DDR PORTD.DDR.BIT.B2 -#define LED7_DDR PORTE.DDR.BIT.B0 -#define LED8_DDR PORTD.DDR.BIT.B4 -#define LED9_DDR PORTE.DDR.BIT.B2 -#define LED10_DDR PORTD.DDR.BIT.B1 -#define LED11_DDR PORTD.DDR.BIT.B7 -#define LED12_DDR PORTD.DDR.BIT.B3 -#define LED13_DDR PORTE.DDR.BIT.B1 -#define LED14_DDR PORTD.DDR.BIT.B0 -#define LED15_DDR PORTD.DDR.BIT.B6 - - - - -/****************************************************************************** -Variable Externs -******************************************************************************/ - -/****************************************************************************** -Functions Prototypes -******************************************************************************/ - - - -/* RDKRX62N_H */ -#endif - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/main-blinky.c b/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/main-blinky.c deleted file mode 100644 index a5fef696d..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/main-blinky.c +++ /dev/null @@ -1,204 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* - * This is a very simple demo that creates two tasks and one queue. One task - * (the queue receive task) blocks on the queue to wait for data to arrive, - * toggling an LED each time '100' is received. The other task (the queue send - * task) repeatedly blocks for a fixed period before sending '100' to the queue - * (causing the first task to toggle the LED). - * - * For a much more complete and complex example select either the Debug or - * Debug_with_optimisation build configurations within the Embedded Workbench - * IDE. -*/ - -/* Hardware specific includes. */ -#include - -/* Kernel includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "queue.h" - -/* Demo includes. */ -#include "partest.h" - -/* Priorities at which the tasks are created. */ -#define configQUEUE_RECEIVE_TASK_PRIORITY ( tskIDLE_PRIORITY + 1 ) -#define configQUEUE_SEND_TASK_PRIORITY ( tskIDLE_PRIORITY + 2 ) - -/* The rate at which data is sent to the queue, specified in milliseconds. */ -#define mainQUEUE_SEND_FREQUENCY_MS ( 500 / portTICK_PERIOD_MS ) - -/* The number of items the queue can hold. This is 1 as the receive task -will remove items as they are added so the send task should always find the -queue empty. */ -#define mainQUEUE_LENGTH ( 1 ) - -/* - * The tasks as defined at the top of this file. - */ -static void prvQueueReceiveTask( void *pvParameters ); -static void prvQueueSendTask( void *pvParameters ); - -/* The queue used by both tasks. */ -static QueueHandle_t xQueue = NULL; - -/* This variable is not used by this simple Blinky example. It is defined -purely to allow the project to link as it is used by the full project. */ -volatile unsigned long ulHighFrequencyTickCount = 0UL; -/*-----------------------------------------------------------*/ - -void main(void) -{ -extern void HardwareSetup( void ); - - /* Renesas provided CPU configuration routine. The clocks are configured in - here. */ - HardwareSetup(); - - /* Create the queue. */ - xQueue = xQueueCreate( mainQUEUE_LENGTH, sizeof( unsigned long ) ); - - if( xQueue != NULL ) - { - /* Start the two tasks as described at the top of this file. */ - xTaskCreate( prvQueueReceiveTask, "Rx", configMINIMAL_STACK_SIZE, NULL, configQUEUE_RECEIVE_TASK_PRIORITY, NULL ); - xTaskCreate( prvQueueSendTask, "TX", configMINIMAL_STACK_SIZE, NULL, configQUEUE_SEND_TASK_PRIORITY, NULL ); - - /* Start the tasks running. */ - vTaskStartScheduler(); - } - - /* If all is well we will never reach here as the scheduler will now be - running. If we do reach here then it is likely that there was insufficient - heap available for the idle task to be created. */ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -static void prvQueueSendTask( void *pvParameters ) -{ -TickType_t xNextWakeTime; -const unsigned long ulValueToSend = 100UL; - - /* Initialise xNextWakeTime - this only needs to be done once. */ - xNextWakeTime = xTaskGetTickCount(); - - for( ;; ) - { - /* Place this task in the blocked state until it is time to run again. - The block state is specified in ticks, the constant used converts ticks - to ms. */ - vTaskDelayUntil( &xNextWakeTime, mainQUEUE_SEND_FREQUENCY_MS ); - - /* Send to the queue - causing the queue receive task to flash its LED. 0 - is used so the send does not block - it shouldn't need to as the queue - should always be empty here. */ - xQueueSend( xQueue, &ulValueToSend, 0 ); - } -} -/*-----------------------------------------------------------*/ - -static void prvQueueReceiveTask( void *pvParameters ) -{ -unsigned long ulReceivedValue; - - for( ;; ) - { - /* Wait until something arives in the queue - this will block - indefinitely provided INCLUDE_vTaskSuspend is set to 1 in - FreeRTOSConfig.h. */ - xQueueReceive( xQueue, &ulReceivedValue, portMAX_DELAY ); - - /* To get here something must have arrived, but is it the expected - value? If it is, toggle the LED. */ - if( ulReceivedValue == 100UL ) - { - vParTestToggleLED( 0 ); - } - } -} -/*-----------------------------------------------------------*/ - -void vApplicationSetupTimerInterrupt( void ) -{ - /* Enable compare match timer 0. */ - MSTP( CMT0 ) = 0; - - /* Interrupt on compare match. */ - CMT0.CMCR.BIT.CMIE = 1; - - /* Set the compare match value. */ - CMT0.CMCOR = ( unsigned short ) ( ( ( configPERIPHERAL_CLOCK_HZ / configTICK_RATE_HZ ) -1 ) / 8 ); - - /* Divide the PCLK by 8. */ - CMT0.CMCR.BIT.CKS = 0; - - /* Enable the interrupt... */ - _IEN( _CMT0_CMI0 ) = 1; - - /* ...and set its priority to the application defined kernel priority. */ - _IPR( _CMT0_CMI0 ) = configKERNEL_INTERRUPT_PRIORITY; - - /* Start the timer. */ - CMT.CMSTR0.BIT.STR0 = 1; -} -/*-----------------------------------------------------------*/ - -/* This function is explained by the comments above its prototype at the top -of this file. */ -void vApplicationMallocFailedHook( void ) -{ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -/* This function is explained by the comments above its prototype at the top -of this file. */ -void vApplicationStackOverflowHook( TaskHandle_t pxTask, char *pcTaskName ) -{ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -/* This function is explained by the comments above its prototype at the top -of this file. */ -void vApplicationIdleHook( void ) -{ - /* Just to prevent the variable getting optimised away. */ - ( void ) ulHighFrequencyTickCount; -} -/*-----------------------------------------------------------*/ - -/* The following two functions are here just to allow all three build -configurations to use the same vector table. They are not used in this -demo, but linker errors will result if they are not defined. They can -be ignored. */ -void vT0_1InterruptHandler( void ) {} -void vT2_3InterruptHandler( void ) {} \ No newline at end of file diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/main-full.c b/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/main-full.c deleted file mode 100644 index c542e2d7a..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/main-full.c +++ /dev/null @@ -1,508 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* **************************************************************************** - * This project includes a lot of tasks and tests and is therefore complex. - * If you would prefer a much simpler project to get started with then select - * the 'Blinky' build configuration within the Embedded Workbench IDE. - * **************************************************************************** - * - * Creates all the demo application tasks, then starts the scheduler. The web - * documentation provides more details of the standard demo application tasks, - * which provide no particular functionality but do provide a good example of - * how to use the FreeRTOS API. The tasks defined in flop.c are included in the - * set of standard demo tasks to ensure the floating point unit gets some - * exercise. - * - * In addition to the standard demo tasks, the following tasks and tests are - * defined and/or created within this file: - * - * Webserver ("uIP") task - This serves a number of dynamically generated WEB - * pages to a standard WEB browser. The IP and MAC addresses are configured by - * constants defined at the bottom of FreeRTOSConfig.h. Use either a standard - * Ethernet cable to connect through a hug, or a cross over (point to point) - * cable to connect directly. Ensure the IP address used is compatible with the - * IP address of the machine running the browser - the easiest way to achieve - * this is to ensure the first three octets of the IP addresses are the same. - * - * "Reg test" tasks - These fill the registers with known values, then check - * that each register still contains its expected value. Each task uses - * different values. The tasks run with very low priority so get preempted - * very frequently. A check variable is incremented on each iteration of the - * test loop. A register containing an unexpected value is indicative of an - * error in the context switching mechanism and will result in a branch to a - * null loop - which in turn will prevent the check variable from incrementing - * any further and allow the check task (described below) to determine that an - * error has occurred. The nature of the reg test tasks necessitates that they - * are written in assembly code. - * - * "Check" task - This only executes every five seconds but has a high priority - * to ensure it gets processor time. Its main function is to check that all the - * standard demo tasks are still operational. While no errors have been - * discovered the check task will toggle LED 5 every 5 seconds - the toggle - * rate increasing to 200ms being a visual indication that at least one task has - * reported unexpected behaviour. - * - * "High frequency timer test" - A high frequency periodic interrupt is - * generated using a timer - the interrupt is assigned a priority above - * configMAX_SYSCALL_INTERRUPT_PRIORITY so should not be effected by anything - * the kernel is doing. The frequency and priority of the interrupt, in - * combination with other standard tests executed in this demo, should result - * in interrupts nesting at least 3 and probably 4 deep. This test is only - * included in build configurations that have the optimiser switched on. In - * optimised builds the count of high frequency ticks is used as the time base - * for the run time stats. - * - * *NOTE 1* If LED5 is toggling every 5 seconds then all the demo application - * tasks are executing as expected and no errors have been reported in any - * tasks. The toggle rate increasing to 200ms indicates that at least one task - * has reported unexpected behaviour. - * - * *NOTE 2* vApplicationSetupTimerInterrupt() is called by the kernel to let - * the application set up a timer to generate the tick interrupt. In this - * example a compare match timer is used for this purpose. - * - * *NOTE 3* The CPU must be in Supervisor mode when the scheduler is started. - * The PowerON_Reset_PC() supplied in resetprg.c with this demo has - * Change_PSW_PM_to_UserMode() commented out to ensure this is the case. - * - * *NOTE 4* The IntQueue common demo tasks test interrupt nesting and make use - * of all the 8bit timers (as two cascaded 16bit units). -*/ - -/* Standard includes. */ -#include -#include - -/* Hardware specific includes. */ -#include - -/* Kernel includes. */ -#include "FreeRTOS.h" -#include "task.h" - -/* Standard demo includes. */ -#include "partest.h" -#include "flash.h" -#include "IntQueue.h" -#include "BlockQ.h" -#include "death.h" -#include "integer.h" -#include "blocktim.h" -#include "semtest.h" -#include "PollQ.h" -#include "GenQTest.h" -#include "QPeek.h" -#include "recmutex.h" -#include "flop.h" - -/* Values that are passed into the reg test tasks using the task parameter. The -tasks check that the values are passed in correctly. */ -#define mainREG_TEST_1_PARAMETER ( 0x12121212UL ) -#define mainREG_TEST_2_PARAMETER ( 0x12345678UL ) - -/* Priorities at which the tasks are created. */ -#define mainCHECK_TASK_PRIORITY ( configMAX_PRIORITIES - 1 ) -#define mainQUEUE_POLL_PRIORITY ( tskIDLE_PRIORITY + 1 ) -#define mainSEM_TEST_PRIORITY ( tskIDLE_PRIORITY + 1 ) -#define mainBLOCK_Q_PRIORITY ( tskIDLE_PRIORITY + 2 ) -#define mainCREATOR_TASK_PRIORITY ( tskIDLE_PRIORITY + 3 ) -#define mainFLASH_TASK_PRIORITY ( tskIDLE_PRIORITY + 1 ) -#define mainuIP_TASK_PRIORITY ( tskIDLE_PRIORITY + 2 ) -#define mainINTEGER_TASK_PRIORITY ( tskIDLE_PRIORITY ) -#define mainGEN_QUEUE_TASK_PRIORITY ( tskIDLE_PRIORITY ) -#define mainFLOP_TASK_PRIORITY ( tskIDLE_PRIORITY ) - -/* The WEB server uses string handling functions, which in turn use a bit more -stack than most of the other tasks. */ -#define mainuIP_STACK_SIZE ( configMINIMAL_STACK_SIZE * 3 ) - -/* The LED toggled by the check task. */ -#define mainCHECK_LED ( 5 ) - -/* The rate at which mainCHECK_LED will toggle when all the tasks are running -without error. Controlled by the check task as described at the top of this -file. */ -#define mainNO_ERROR_CYCLE_TIME ( 5000 / portTICK_PERIOD_MS ) - -/* The rate at which mainCHECK_LED will toggle when an error has been reported -by at least one task. Controlled by the check task as described at the top of -this file. */ -#define mainERROR_CYCLE_TIME ( 200 / portTICK_PERIOD_MS ) - -/* For outputing debug console messages - just maps to printf. */ -#ifdef DEBUG_BUILD - #define xPrintf( x ) printf( x ) -#else - #define xPrintf( x ) ( void ) x -#endif - -/* - * vApplicationMallocFailedHook() will only be called if - * configUSE_MALLOC_FAILED_HOOK is set to 1 in FreeRTOSConfig.h. It is a hook - * function that will execute if a call to pvPortMalloc() fails. - * pvPortMalloc() is called internally by the kernel whenever a task, queue or - * semaphore is created. It is also called by various parts of the demo - * application. - */ -void vApplicationMallocFailedHook( void ); - -/* - * vApplicationIdleHook() will only be called if configUSE_IDLE_HOOK is set to 1 - * in FreeRTOSConfig.h. It is a hook function that is called on each iteration - * of the idle task. It is essential that code added to this hook function - * never attempts to block in any way (for example, call xQueueReceive() with - * a block time specified). If the application makes use of the vTaskDelete() - * API function (as this demo application does) then it is also important that - * vApplicationIdleHook() is permitted to return to its calling function because - * it is the responsibility of the idle task to clean up memory allocated by the - * kernel to any task that has since been deleted. - */ -void vApplicationIdleHook( void ); - -/* - * vApplicationStackOverflowHook() will only be called if - * configCHECK_FOR_STACK_OVERFLOW is set to a non-zero value. The handle and - * name of the offending task should be passed in the function parameters, but - * it is possible that the stack overflow will have corrupted these - in which - * case pxCurrentTCB can be inspected to find the same information. - */ -void vApplicationStackOverflowHook( TaskHandle_t pxTask, char *pcTaskName ); - -/* - * The reg test tasks as described at the top of this file. - */ -static void prvRegTest1Task( void *pvParameters ); -static void prvRegTest2Task( void *pvParameters ); - -/* - * The actual implementation of the reg test functionality, which, because of - * the direct register access, have to be in assembly. - */ -extern void prvRegTest1Implementation( void ); -extern void prvRegTest2Implementation( void ); - - -/* - * The check task as described at the top of this file. - */ -static void prvCheckTask( void *pvParameters ); - -/* - * Contains the implementation of the WEB server. - */ -extern void vuIP_Task( void *pvParameters ); - -/*-----------------------------------------------------------*/ - -/* Variables that are incremented on each iteration of the reg test tasks - -provided the tasks have not reported any errors. The check task inspects these -variables to ensure they are still incrementing as expected. If a variable -stops incrementing then it is likely that its associate task has stalled. */ -unsigned long ulRegTest1CycleCount = 0UL, ulRegTest2CycleCount = 0UL; - -/* The status message that is displayed at the bottom of the "task stats" web -page, which is served by the uIP task. This will report any errors picked up -by the reg test task. */ -static const char *pcStatusMessage = NULL; - -/*-----------------------------------------------------------*/ - -void main(void) -{ -extern void HardwareSetup( void ); - - /* Renesas provided CPU configuration routine. The clocks are configured in - here. */ - HardwareSetup(); - - xPrintf( "http://www.FreeRTOS.org\r\n" ); - - /* Start the reg test tasks which test the context switching mechanism. */ - xTaskCreate( prvRegTest1Task, "RegTst1", configMINIMAL_STACK_SIZE, ( void * ) mainREG_TEST_1_PARAMETER, tskIDLE_PRIORITY, NULL ); - xTaskCreate( prvRegTest2Task, "RegTst2", configMINIMAL_STACK_SIZE, ( void * ) mainREG_TEST_2_PARAMETER, tskIDLE_PRIORITY, NULL ); - - /* The web server task. */ - xTaskCreate( vuIP_Task, "uIP", mainuIP_STACK_SIZE, NULL, mainuIP_TASK_PRIORITY, NULL ); - - /* Start the check task as described at the top of this file. */ - xTaskCreate( prvCheckTask, "Check", configMINIMAL_STACK_SIZE * 3, NULL, mainCHECK_TASK_PRIORITY, NULL ); - - /* Create the standard demo tasks. */ - vStartBlockingQueueTasks( mainBLOCK_Q_PRIORITY ); - vCreateBlockTimeTasks(); - vStartSemaphoreTasks( mainSEM_TEST_PRIORITY ); - vStartPolledQueueTasks( mainQUEUE_POLL_PRIORITY ); - vStartIntegerMathTasks( mainINTEGER_TASK_PRIORITY ); - vStartGenericQueueTasks( mainGEN_QUEUE_TASK_PRIORITY ); - vStartLEDFlashTasks( mainFLASH_TASK_PRIORITY ); - vStartQueuePeekTasks(); - vStartRecursiveMutexTasks(); - vStartInterruptQueueTasks(); - vStartMathTasks( mainFLOP_TASK_PRIORITY ); - - /* The suicide tasks must be created last as they need to know how many - tasks were running prior to their creation in order to ascertain whether - or not the correct/expected number of tasks are running at any given time. */ - vCreateSuicidalTasks( mainCREATOR_TASK_PRIORITY ); - - /* Start the tasks running. */ - vTaskStartScheduler(); - - /* If all is well we will never reach here as the scheduler will now be - running. If we do reach here then it is likely that there was insufficient - heap available for the idle task to be created. */ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -static void prvCheckTask( void *pvParameters ) -{ -static volatile unsigned long ulLastRegTest1CycleCount = 0UL, ulLastRegTest2CycleCount = 0UL; -TickType_t xNextWakeTime, xCycleFrequency = mainNO_ERROR_CYCLE_TIME; -extern void vSetupHighFrequencyTimer( void ); - - /* If this is being executed then the kernel has been started. Start the high - frequency timer test as described at the top of this file. This is only - included in the optimised build configuration - otherwise it takes up too much - CPU time. */ - #ifdef INCLUDE_HIGH_FREQUENCY_TIMER_TEST - vSetupHighFrequencyTimer(); - #endif - - /* Initialise xNextWakeTime - this only needs to be done once. */ - xNextWakeTime = xTaskGetTickCount(); - - for( ;; ) - { - /* Place this task in the blocked state until it is time to run again. */ - vTaskDelayUntil( &xNextWakeTime, xCycleFrequency ); - - /* Check the standard demo tasks are running without error. */ - if( xAreGenericQueueTasksStillRunning() != pdTRUE ) - { - /* Increase the rate at which this task cycles, which will increase the - rate at which mainCHECK_LED flashes to give visual feedback that an error - has occurred. */ - pcStatusMessage = "Error: GenQueue"; - xPrintf( pcStatusMessage ); - } - - if( xAreQueuePeekTasksStillRunning() != pdTRUE ) - { - pcStatusMessage = "Error: QueuePeek\r\n"; - xPrintf( pcStatusMessage ); - } - - if( xAreBlockingQueuesStillRunning() != pdTRUE ) - { - pcStatusMessage = "Error: BlockQueue\r\n"; - xPrintf( pcStatusMessage ); - } - - if( xAreBlockTimeTestTasksStillRunning() != pdTRUE ) - { - pcStatusMessage = "Error: BlockTime\r\n"; - xPrintf( pcStatusMessage ); - } - - if( xAreSemaphoreTasksStillRunning() != pdTRUE ) - { - pcStatusMessage = "Error: SemTest\r\n"; - xPrintf( pcStatusMessage ); - } - - if( xArePollingQueuesStillRunning() != pdTRUE ) - { - pcStatusMessage = "Error: PollQueue\r\n"; - xPrintf( pcStatusMessage ); - } - - if( xIsCreateTaskStillRunning() != pdTRUE ) - { - pcStatusMessage = "Error: Death\r\n"; - xPrintf( pcStatusMessage ); - } - - if( xAreIntegerMathsTaskStillRunning() != pdTRUE ) - { - pcStatusMessage = "Error: IntMath\r\n"; - xPrintf( pcStatusMessage ); - } - - if( xAreRecursiveMutexTasksStillRunning() != pdTRUE ) - { - pcStatusMessage = "Error: RecMutex\r\n"; - xPrintf( pcStatusMessage ); - } - - if( xAreIntQueueTasksStillRunning() != pdPASS ) - { - pcStatusMessage = "Error: IntQueue\r\n"; - xPrintf( pcStatusMessage ); - } - - if( xAreMathsTaskStillRunning() != pdPASS ) - { - pcStatusMessage = "Error: Flop\r\n"; - xPrintf( pcStatusMessage ); - } - - /* Check the reg test tasks are still cycling. They will stop incrementing - their loop counters if they encounter an error. */ - if( ulRegTest1CycleCount == ulLastRegTest1CycleCount ) - { - pcStatusMessage = "Error: RegTest1\r\n"; - xPrintf( pcStatusMessage ); - } - - if( ulRegTest2CycleCount == ulLastRegTest2CycleCount ) - { - pcStatusMessage = "Error: RegTest2\r\n"; - xPrintf( pcStatusMessage ); - } - - ulLastRegTest1CycleCount = ulRegTest1CycleCount; - ulLastRegTest2CycleCount = ulRegTest2CycleCount; - - /* Toggle the check LED to give an indication of the system status. If - the LED toggles every 5 seconds then everything is ok. A faster toggle - indicates an error. */ - vParTestToggleLED( mainCHECK_LED ); - - /* Ensure the LED toggles at a faster rate if an error has occurred. */ - if( pcStatusMessage != NULL ) - { - xCycleFrequency = mainERROR_CYCLE_TIME; - } - } -} -/*-----------------------------------------------------------*/ - -/* The RX port uses this callback function to configure its tick interrupt. -This allows the application to choose the tick interrupt source. */ -void vApplicationSetupTimerInterrupt( void ) -{ - /* Enable compare match timer 0. */ - MSTP( CMT0 ) = 0; - - /* Interrupt on compare match. */ - CMT0.CMCR.BIT.CMIE = 1; - - /* Set the compare match value. */ - CMT0.CMCOR = ( unsigned short ) ( ( ( configPERIPHERAL_CLOCK_HZ / configTICK_RATE_HZ ) -1 ) / 8 ); - - /* Divide the PCLK by 8. */ - CMT0.CMCR.BIT.CKS = 0; - - /* Enable the interrupt... */ - _IEN( _CMT0_CMI0 ) = 1; - - /* ...and set its priority to the application defined kernel priority. */ - _IPR( _CMT0_CMI0 ) = configKERNEL_INTERRUPT_PRIORITY; - - /* Start the timer. */ - CMT.CMSTR0.BIT.STR0 = 1; -} -/*-----------------------------------------------------------*/ - -/* This function is explained by the comments above its prototype at the top -of this file. */ -void vApplicationMallocFailedHook( void ) -{ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -/* This function is explained by the comments above its prototype at the top -of this file. */ -void vApplicationStackOverflowHook( TaskHandle_t pxTask, char *pcTaskName ) -{ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -/* This function is explained by the comments above its prototype at the top -of this file. */ -void vApplicationIdleHook( void ) -{ -} -/*-----------------------------------------------------------*/ - -/* This function is explained in the comments at the top of this file. */ -static void prvRegTest1Task( void *pvParameters ) -{ - if( ( ( unsigned long ) pvParameters ) != mainREG_TEST_1_PARAMETER ) - { - /* The parameter did not contain the expected value. */ - for( ;; ) - { - /* Stop the tick interrupt so its obvious something has gone wrong. */ - taskDISABLE_INTERRUPTS(); - } - } - - /* This is an asm function that never returns. */ - prvRegTest1Implementation(); -} -/*-----------------------------------------------------------*/ - -/* This function is explained in the comments at the top of this file. */ -static void prvRegTest2Task( void *pvParameters ) -{ - if( ( ( unsigned long ) pvParameters ) != mainREG_TEST_2_PARAMETER ) - { - /* The parameter did not contain the expected value. */ - for( ;; ) - { - /* Stop the tick interrupt so its obvious something has gone wrong. */ - taskDISABLE_INTERRUPTS(); - } - } - - /* This is an asm function that never returns. */ - prvRegTest2Implementation(); -} -/*-----------------------------------------------------------*/ - -char *pcGetTaskStatusMessage( void ) -{ - /* Not bothered about a critical section here although technically because of - the task priorities the pointer could change it will be atomic if not near - atomic and its not critical. */ - if( pcStatusMessage == NULL ) - { - return "All tasks running without error"; - } - else - { - return ( char * ) pcStatusMessage; - } -} -/*-----------------------------------------------------------*/ - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/settings/RTOSDemo.cspy.bat b/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/settings/RTOSDemo.cspy.bat deleted file mode 100644 index f156635c0..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/settings/RTOSDemo.cspy.bat +++ /dev/null @@ -1,24 +0,0 @@ -@REM This batch file has been generated by the IAR Embedded Workbench -@REM C-SPY Debugger, as an aid to preparing a command line for running -@REM the cspybat command line utility using the appropriate settings. -@REM -@REM Note that this file is generated every time a new debug session -@REM is initialized, so you may want to move or rename the file before -@REM making changes. -@REM -@REM You can launch cspybat by typing the name of this batch file followed -@REM by the name of the debug file (usually an ELF/DWARF or UBROF file). -@REM -@REM Read about available command line parameters in the C-SPY Debugging -@REM Guide. Hints about additional command line parameters that may be -@REM useful in specific cases: -@REM --download_only Downloads a code image without starting a debug -@REM session afterwards. -@REM --silent Omits the sign-on message. -@REM --timeout Limits the maximum allowed execution time. -@REM - - -"C:\devtools\IAR Systems\Embedded Workbench 6.5\common\bin\cspybat" "C:\devtools\IAR Systems\Embedded Workbench 6.5\rx\bin\rxproc.dll" "C:\devtools\IAR Systems\Embedded Workbench 6.5\rx\bin\rxjlink.dll" %1 --plugin "C:\devtools\IAR Systems\Embedded Workbench 6.5\rx\bin\rxbat.dll" --backend -B "--core" "RX600" "-p" "C:\devtools\IAR Systems\Embedded Workbench 6.5\rx\config\debugger\ior5f562n8.ddf" "--double" "32" "--endian" "l" "--int" "32" "-d" "jlink" "--drv_mode" "debugging" "--verify_download" "all" - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/settings/RTOSDemo.dbgdt b/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/settings/RTOSDemo.dbgdt deleted file mode 100644 index ea81e7e01..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/settings/RTOSDemo.dbgdt +++ /dev/null @@ -1,63 +0,0 @@ - - - - - - - - - 300BuildBreakpoints201622 - - - - - - 20121632481300Debug-LogBreakpoints - - - - - - - 164272727 - - - - - - 20010011Disassembly_I050020 - 200ethfifo-status4struct Descriptor-status420020916610010030010300Debug-LogBuild200110$PROJ_DIR$\TermIOInput.txt10 - - - - - - - - TabID-20000-3827 - Workspace - Workspace - - - RTOSDemoRTOSDemo/FreeRTOS SourceRTOSDemo/FreeRTOS Source/Portable Layer - - - - 0TabID-2655-13188Debug LogDebug-Log0 - - - - - - TextEditor$WS_DIR$\main-full.c0000026113773137730TextEditor$WS_DIR$\main-blinky.c00000000TextEditor$WS_DIR$\..\Common\Minimal\flop.c000002941206412064TextEditor$WS_DIR$\..\..\Source\portable\IAR\RX600\portmacro.h000009955655565TextEditor$WS_DIR$\..\..\Source\queue.c0000058522892228920100000010000001 - - - - - - - iaridepm.enu1debuggergui.enu1-2-2740238-2-212114172024143585142857755601-2-21981682-2-216842001002381203666119048203666 - - - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/settings/RTOSDemo.dni b/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/settings/RTOSDemo.dni deleted file mode 100644 index 14f88bc28..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/settings/RTOSDemo.dni +++ /dev/null @@ -1,141 +0,0 @@ -[E20] -TimeConnected=1305306990 -ComuniDllSave=194838528 -FfwnsdDllSave=194969600 -ChipName=R5F562N8 -CpuMode=0 -InputClock=12.500000 -WorkRamStart=12288 -JtagClock=10 -DebugFlags=0,0 -EmulatorMode=0 -NeedInit=1 -BlockBits=0 -B0=0,0 -B1=0,0 -B2=0,0 -B3=0,0 -TraceMode=0 -TraceOutput=2 -TraceCapacity=0 -TraceRestart=0 -OperatingFrequency=12.500000 -[DebugChecksum] -Checksum=-128387701 -[DisAssemblyWindow] -NumStates=_ 1 -State 1=_ 1 -[InstructionProfiling] -Enabled=_ 0 -[CodeCoverage] -Enabled=_ 0 -[Profiling] -Enabled=0 -[StackPlugin] -Enabled=1 -OverflowWarningsEnabled=1 -WarningThreshold=90 -SpWarningsEnabled=0 -WarnHow=0 -UseTrigger=1 -TriggerName=main -LimitSize=0 -ByteLimit=50 -[Stack] -FillEnabled=0 -OverflowWarningsEnabled=1 -WarningThreshold=90 -SpWarningsEnabled=1 -WarnLogOnly=1 -UseTrigger=1 -TriggerName=main -LimitSize=0 -ByteLimit=50 -[CallStack] -ShowArgs=0 -[TraceHelper] -Enabled=0 -ShowSource=1 -[J-Link] -TraceMode=0 -TraceOutput=2 -TraceCapacity=0 -TraceRestart=0 -OperatingFrequency=12.500000 -PerfEnabled=0 -PerfCondition=0,0 -PerfDisplayTime=0,0 -PerfOnlyOnce=0,0 -PerfUse64Bit=0 -ChipName=R5F562N8 -PinMode=0 -RegMode=0 -Endian=1 -ExtMemBlockNum=8 -ExtMemEndian_000=0 -ExtMemCondAccess_000=0 -ExtMemEndian_001=0 -ExtMemCondAccess_001=0 -ExtMemEndian_002=0 -ExtMemCondAccess_002=0 -ExtMemEndian_003=0 -ExtMemCondAccess_003=0 -ExtMemEndian_004=0 -ExtMemCondAccess_004=0 -ExtMemEndian_005=0 -ExtMemCondAccess_005=0 -ExtMemEndian_006=0 -ExtMemCondAccess_006=0 -ExtMemEndian_007=0 -ExtMemCondAccess_007=0 -InputClock=12.500000 -AllowClkSrcChange=0 -WorkRamStart=12288 -ComunicationSelect=0 -JtagClock=10 -FINE=0 -FlashOvrNum=0 -DebugFlags=0,0 -EmulatorMode=0 -NeedInit=1 -[Disassembly] -MixedMode=1 -[PowerLog] -LogEnabled=0 -GraphEnabled=0 -ShowTimeLog=1 -ShowTimeSum=0 -Title0=ID0 -Symbol0=0 4 -LiveEnabled=0 -LiveFile=PowerLogLive.log -[Log file] -LoggingEnabled=_ 0 -LogFile=_ "" -Category=_ 0 -[TermIOLog] -LoggingEnabled=_ 0 -LogFile=_ "" -[PowerProbe] -Frequency=10000 -Probe0=ID0 -ProbeSetup0=2 1 1 2 0 0 -[CallStackLog] -Enabled=0 -[DriverProfiling] -Enabled=0 -Mode=3 -Graph=0 -Symbiont=0 -Exclusions= -[Breakpoints] -Count=0 -[Monitor Execution] -Leave target running=0 -Release target=0 -[Aliases] -Count=0 -SuppressDialog=0 -[Trace1] -Enabled=0 -ShowSource=1 diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/settings/RTOSDemo.wsdt b/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/settings/RTOSDemo.wsdt deleted file mode 100644 index c22e7832b..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/settings/RTOSDemo.wsdt +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - RTOSDemo/Debug - - - - - - - - - 277272727 - - - - - - - 20121632481 - - 181624 - - - - - - - TabID-10758-3386 - Workspace - Workspace - - - RTOSDemo - - - - 0 - - - TabID-16801-3477 - Build - Build - - - TabID-414-15843BreakpointsBreakpointsTabID-3320-15993Debug LogDebug-Log - - 0 - - - - - - TextEditor$WS_DIR$\main-full.c00000721377313773TextEditor$WS_DIR$\main-blinky.c00000720010100000010000001 - - - - - - - iaridepm.enu1-2-2706351-2-2331284197024289206210119720978-2-22321682-2-216842341002381238289197024289206 - - - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/uIP_Task.c b/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/uIP_Task.c deleted file mode 100644 index df730a3c0..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/uIP_Task.c +++ /dev/null @@ -1,319 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* Standard includes. */ -#include - -/* Scheduler includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "timers.h" -#include "queue.h" - -/* uip includes. */ -#include "net/uip.h" -#include "net/uip_arp.h" -#include "apps/httpd/httpd.h" -#include "sys/timer.h" -#include "net/clock-arch.h" -#include "r_ether.h" - -/* Demo includes. */ -#include "ParTest.h" - -/*-----------------------------------------------------------*/ - -/* How long to wait before attempting to connect the MAC again. */ -#define uipINIT_WAIT ( 100 / portTICK_PERIOD_MS ) - -/* Shortcut to the header within the Rx buffer. */ -#define xHeader ((struct uip_eth_hdr *) &uip_buf[ 0 ]) - -/* Standard constant. */ -#define uipTOTAL_FRAME_HEADER_SIZE 54 - -/* The ARP timer and the periodic timer share a callback function, so the -respective timer IDs are used to determine which timer actually expired. These -constants are assigned to the timer IDs. */ -#define uipARP_TIMER 0 -#define uipPERIODIC_TIMER 1 - -/* A block time of zero ticks simply means, "don't block". */ -#define uipDONT_BLOCK 0UL - -/*-----------------------------------------------------------*/ - -/* - * Setup the MAC address in the MAC itself, and in the uIP stack. - */ -static void prvSetMACAddress( void ); - -/* - * Perform any uIP initialisation necessary. - */ -static void prvInitialise_uIP( void ); - -/* - * The callback function that is assigned to both the periodic timer and the - * ARP timer. - */ -static void prvUIPTimerCallback( TimerHandle_t xTimer ); - -/* - * Port functions required by the uIP stack. - */ -clock_time_t clock_time( void ); - -/*-----------------------------------------------------------*/ - -/* The queue used to send TCP/IP events to the uIP stack. */ -QueueHandle_t xEMACEventQueue = NULL; - -/*-----------------------------------------------------------*/ - -clock_time_t clock_time( void ) -{ - return xTaskGetTickCount(); -} -/*-----------------------------------------------------------*/ - -void vuIP_Task( void *pvParameters ) -{ -portBASE_TYPE i; -unsigned long ulNewEvent = 0UL; -unsigned long ulUIP_Events = 0UL; - - ( void ) pvParameters; - - /* Initialise the uIP stack. */ - prvInitialise_uIP(); - - /* Initialise the MAC. */ - vInitEmac(); - - while( lEMACWaitForLink() != pdPASS ) - { - vTaskDelay( uipINIT_WAIT ); - } - - for( ;; ) - { - if( ( ulUIP_Events & uipETHERNET_RX_EVENT ) != 0UL ) - { - /* Is there received data ready to be processed? */ - uip_len = ( unsigned short ) ulEMACRead(); - - if( ( uip_len > 0 ) && ( uip_buf != NULL ) ) - { - /* Standard uIP loop taken from the uIP manual. */ - if( xHeader->type == htons( UIP_ETHTYPE_IP ) ) - { - uip_arp_ipin(); - uip_input(); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - uip_arp_out(); - vEMACWrite(); - } - } - else if( xHeader->type == htons( UIP_ETHTYPE_ARP ) ) - { - uip_arp_arpin(); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - vEMACWrite(); - } - } - } - else - { - ulUIP_Events &= ~uipETHERNET_RX_EVENT; - } - } - - if( ( ulUIP_Events & uipPERIODIC_TIMER_EVENT ) != 0UL ) - { - ulUIP_Events &= ~uipPERIODIC_TIMER_EVENT; - - for( i = 0; i < UIP_CONNS; i++ ) - { - uip_periodic( i ); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - uip_arp_out(); - vEMACWrite(); - } - } - } - - /* Call the ARP timer function every 10 seconds. */ - if( ( ulUIP_Events & uipARP_TIMER_EVENT ) != 0 ) - { - ulUIP_Events &= ~uipARP_TIMER_EVENT; - uip_arp_timer(); - } - - if( ulUIP_Events == pdFALSE ) - { - xQueueReceive( xEMACEventQueue, &ulNewEvent, portMAX_DELAY ); - ulUIP_Events |= ulNewEvent; - } - } -} -/*-----------------------------------------------------------*/ - -static void prvInitialise_uIP( void ) -{ -TimerHandle_t xARPTimer, xPeriodicTimer; -uip_ipaddr_t xIPAddr; -const unsigned long ul_uIPEventQueueLength = 10UL; - - /* Initialise the uIP stack. */ - uip_init(); - uip_ipaddr( &xIPAddr, configIP_ADDR0, configIP_ADDR1, configIP_ADDR2, configIP_ADDR3 ); - uip_sethostaddr( &xIPAddr ); - uip_ipaddr( &xIPAddr, configNET_MASK0, configNET_MASK1, configNET_MASK2, configNET_MASK3 ); - uip_setnetmask( &xIPAddr ); - prvSetMACAddress(); - httpd_init(); - - /* Create the queue used to sent TCP/IP events to the uIP stack. */ - xEMACEventQueue = xQueueCreate( ul_uIPEventQueueLength, sizeof( unsigned long ) ); - - /* Create and start the uIP timers. */ - xARPTimer = xTimerCreate( "ARPTimer", /* Just a name that is helpful for debugging, not used by the kernel. */ - ( 10000UL / portTICK_PERIOD_MS ), /* Timer period. */ - pdTRUE, /* Autor-reload. */ - ( void * ) uipARP_TIMER, - prvUIPTimerCallback - ); - - xPeriodicTimer = xTimerCreate( "PeriodicTimer", - ( 50 / portTICK_PERIOD_MS ), - pdTRUE, /* Autor-reload. */ - ( void * ) uipPERIODIC_TIMER, - prvUIPTimerCallback - ); - - configASSERT( xARPTimer ); - configASSERT( xPeriodicTimer ); - - xTimerStart( xARPTimer, portMAX_DELAY ); - xTimerStart( xPeriodicTimer, portMAX_DELAY ); -} -/*-----------------------------------------------------------*/ - -static void prvUIPTimerCallback( TimerHandle_t xTimer ) -{ -static const unsigned long ulARPTimerExpired = uipARP_TIMER_EVENT; -static const unsigned long ulPeriodicTimerExpired = uipPERIODIC_TIMER_EVENT; - - /* This is a time callback, so calls to xQueueSend() must not attempt to - block. */ - switch( ( int ) pvTimerGetTimerID( xTimer ) ) - { - case uipARP_TIMER : xQueueSend( xEMACEventQueue, &ulARPTimerExpired, uipDONT_BLOCK ); - break; - - case uipPERIODIC_TIMER : xQueueSend( xEMACEventQueue, &ulPeriodicTimerExpired, uipDONT_BLOCK ); - break; - - default : /* Should not get here. */ - break; - } -} -/*-----------------------------------------------------------*/ - -static void prvSetMACAddress( void ) -{ -struct uip_eth_addr xAddr; - - /* Configure the MAC address in the uIP stack. */ - xAddr.addr[ 0 ] = configMAC_ADDR0; - xAddr.addr[ 1 ] = configMAC_ADDR1; - xAddr.addr[ 2 ] = configMAC_ADDR2; - xAddr.addr[ 3 ] = configMAC_ADDR3; - xAddr.addr[ 4 ] = configMAC_ADDR4; - xAddr.addr[ 5 ] = configMAC_ADDR5; - uip_setethaddr( xAddr ); -} -/*-----------------------------------------------------------*/ - -void vApplicationProcessFormInput( char *pcInputString ) -{ -char *c; - - /* Only interested in processing form input if this is the IO page. */ - c = strstr( pcInputString, "io.shtml" ); - - if( c ) - { - /* Is there a command in the string? */ - c = strstr( pcInputString, "?" ); - if( c ) - { - /* Turn the LED's on or off in accordance with the check box status. */ - if( strstr( c, "LED0=1" ) != NULL ) - { - /* Turn the LEDs on. */ - vParTestSetLED( 7, 1 ); - vParTestSetLED( 8, 1 ); - vParTestSetLED( 9, 1 ); - vParTestSetLED( 10, 1 ); - } - else - { - /* Turn the LEDs off. */ - vParTestSetLED( 7, 0 ); - vParTestSetLED( 8, 0 ); - vParTestSetLED( 9, 0 ); - vParTestSetLED( 10, 0 ); - } - } - else - { - /* Commands to turn LEDs off are not always explicit. */ - vParTestSetLED( 7, 0 ); - vParTestSetLED( 8, 0 ); - vParTestSetLED( 9, 0 ); - vParTestSetLED( 10, 0 ); - } - } -} - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/webserver/EMAC.c b/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/webserver/EMAC.c deleted file mode 100644 index 72336d35c..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/webserver/EMAC.c +++ /dev/null @@ -1,533 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* Hardware specific includes. */ -#include -#include "typedefine.h" -#include "r_ether.h" -#include "phy.h" - -/* FreeRTOS includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "semphr.h" - -/* uIP includes. */ -#include "net/uip.h" - -/* The time to wait between attempts to obtain a free buffer. */ -#define emacBUFFER_WAIT_DELAY_ms ( 3 / portTICK_PERIOD_MS ) - -/* The number of times emacBUFFER_WAIT_DELAY_ms should be waited before giving -up on attempting to obtain a free buffer all together. */ -#define emacBUFFER_WAIT_ATTEMPTS ( 30 ) - -/* The number of Rx descriptors. */ -#define emacNUM_RX_DESCRIPTORS 8 - -/* The number of Tx descriptors. When using uIP there is not point in having -more than two. */ -#define emacNUM_TX_BUFFERS 2 - -/* The total number of EMAC buffers to allocate. */ -#define emacNUM_BUFFERS ( emacNUM_RX_DESCRIPTORS + emacNUM_TX_BUFFERS ) - -/* The time to wait for the Tx descriptor to become free. */ -#define emacTX_WAIT_DELAY_ms ( 10 / portTICK_PERIOD_MS ) - -/* The total number of times to wait emacTX_WAIT_DELAY_ms for the Tx descriptor to -become free. */ -#define emacTX_WAIT_ATTEMPTS ( 50 ) - -/* Only Rx end and Tx end interrupts are used by this driver. */ -#define emacTX_END_INTERRUPT ( 1UL << 21UL ) -#define emacRX_END_INTERRUPT ( 1UL << 18UL ) - -/*-----------------------------------------------------------*/ - -/* The buffers and descriptors themselves. */ -#pragma data_alignment=32 -volatile ethfifo xRxDescriptors[ emacNUM_RX_DESCRIPTORS ]; - -#pragma data_alignment=32 -volatile ethfifo xTxDescriptors[ emacNUM_TX_BUFFERS ]; - -#pragma data_alignment=32 -char xEthernetBuffers[ emacNUM_BUFFERS ][ UIP_BUFSIZE ]; - - -/* Used to indicate which buffers are free and which are in use. If an index -contains 0 then the corresponding buffer in xEthernetBuffers is free, otherwise -the buffer is in use or about to be used. */ -static unsigned char ucBufferInUse[ emacNUM_BUFFERS ]; - -/*-----------------------------------------------------------*/ - -/* - * Initialise both the Rx and Tx descriptors. - */ -static void prvInitialiseDescriptors( void ); - -/* - * Return a pointer to a free buffer within xEthernetBuffers. - */ -static unsigned char *prvGetNextBuffer( void ); - -/* - * Return a buffer to the list of free buffers. - */ -static void prvReturnBuffer( unsigned char *pucBuffer ); - -/* - * Examine the status of the next Rx FIFO to see if it contains new data. - */ -static unsigned long prvCheckRxFifoStatus( void ); - -/* - * Setup the microcontroller for communication with the PHY. - */ -static void prvResetMAC( void ); - -/* - * Configure the Ethernet interface peripherals. - */ -static void prvConfigureEtherCAndEDMAC( void ); - -/* - * Something has gone wrong with the descriptor usage. Reset all the buffers - * and descriptors. - */ -static void prvResetEverything( void ); - -/*-----------------------------------------------------------*/ - -/* Points to the Rx descriptor currently in use. */ -static volatile ethfifo *pxCurrentRxDesc = NULL; - -/* The buffer used by the uIP stack to both receive and send. This points to -one of the Ethernet buffers when its actually in use. */ -unsigned char *uip_buf = NULL; - -/*-----------------------------------------------------------*/ - -void vInitEmac( void ) -{ - /* Software reset. */ - prvResetMAC(); - - /* Set the Rx and Tx descriptors into their initial state. */ - prvInitialiseDescriptors(); - - /* Set the MAC address into the ETHERC */ - ETHERC.MAHR = ( ( unsigned long ) configMAC_ADDR0 << 24UL ) | - ( ( unsigned long ) configMAC_ADDR1 << 16UL ) | - ( ( unsigned long ) configMAC_ADDR2 << 8UL ) | - ( unsigned long ) configMAC_ADDR3; - - ETHERC.MALR.BIT.MA = ( ( unsigned long ) configMAC_ADDR4 << 8UL ) | - ( unsigned long ) configMAC_ADDR5; - - /* Perform rest of interface hardware configuration. */ - prvConfigureEtherCAndEDMAC(); - - /* Nothing received yet, so uip_buf points nowhere. */ - uip_buf = NULL; - - /* Initialize the PHY */ - phy_init(); -} -/*-----------------------------------------------------------*/ - -void vEMACWrite( void ) -{ -long x; - - /* Wait until the second transmission of the last packet has completed. */ - for( x = 0; x < emacTX_WAIT_ATTEMPTS; x++ ) - { - if( ( xTxDescriptors[ 1 ].status & ACT ) != 0 ) - { - /* Descriptor is still active. */ - vTaskDelay( emacTX_WAIT_DELAY_ms ); - } - else - { - break; - } - } - - /* Is the descriptor free after waiting for it? */ - if( ( xTxDescriptors[ 1 ].status & ACT ) != 0 ) - { - /* Something has gone wrong. */ - prvResetEverything(); - } - - /* Setup both descriptors to transmit the frame. */ - xTxDescriptors[ 0 ].buf_p = ( char * ) uip_buf; - xTxDescriptors[ 0 ].bufsize = uip_len; - xTxDescriptors[ 1 ].buf_p = ( char * ) uip_buf; - xTxDescriptors[ 1 ].bufsize = uip_len; - - /* uip_buf is being sent by the Tx descriptor. Allocate a new buffer - for use by the stack. */ - uip_buf = prvGetNextBuffer(); - - /* Clear previous settings and go. */ - xTxDescriptors[0].status &= ~( FP1 | FP0 ); - xTxDescriptors[0].status |= ( FP1 | FP0 | ACT ); - xTxDescriptors[1].status &= ~( FP1 | FP0 ); - xTxDescriptors[1].status |= ( FP1 | FP0 | ACT ); - - EDMAC.EDTRR.LONG = 0x00000001; -} -/*-----------------------------------------------------------*/ - -unsigned long ulEMACRead( void ) -{ -unsigned long ulBytesReceived; - - ulBytesReceived = prvCheckRxFifoStatus(); - - if( ulBytesReceived > 0 ) - { - /* Mark the pxDescriptor buffer as free as uip_buf is going to be set to - the buffer that contains the received data. */ - prvReturnBuffer( uip_buf ); - - /* Point uip_buf to the data about ot be processed. */ - uip_buf = ( void * ) pxCurrentRxDesc->buf_p; - - /* Allocate a new buffer to the descriptor, as uip_buf is now using it's - old descriptor. */ - pxCurrentRxDesc->buf_p = ( char * ) prvGetNextBuffer(); - - /* Prepare the descriptor to go again. */ - pxCurrentRxDesc->status &= ~( FP1 | FP0 ); - pxCurrentRxDesc->status |= ACT; - - /* Move onto the next buffer in the ring. */ - pxCurrentRxDesc = pxCurrentRxDesc->next; - - if( EDMAC.EDRRR.LONG == 0x00000000L ) - { - /* Restart Ethernet if it has stopped */ - EDMAC.EDRRR.LONG = 0x00000001L; - } - } - - return ulBytesReceived; -} -/*-----------------------------------------------------------*/ - -long lEMACWaitForLink( void ) -{ -long lReturn; - - /* Set the link status. */ - switch( phy_set_autonegotiate() ) - { - /* Half duplex link */ - case PHY_LINK_100H: - ETHERC.ECMR.BIT.DM = 0; - ETHERC.ECMR.BIT.RTM = 1; - lReturn = pdPASS; - break; - - case PHY_LINK_10H: - ETHERC.ECMR.BIT.DM = 0; - ETHERC.ECMR.BIT.RTM = 0; - lReturn = pdPASS; - break; - - - /* Full duplex link */ - case PHY_LINK_100F: - ETHERC.ECMR.BIT.DM = 1; - ETHERC.ECMR.BIT.RTM = 1; - lReturn = pdPASS; - break; - - case PHY_LINK_10F: - ETHERC.ECMR.BIT.DM = 1; - ETHERC.ECMR.BIT.RTM = 0; - lReturn = pdPASS; - break; - - default: - lReturn = pdFAIL; - break; - } - - if( lReturn == pdPASS ) - { - /* Enable receive and transmit. */ - ETHERC.ECMR.BIT.RE = 1; - ETHERC.ECMR.BIT.TE = 1; - - /* Enable EDMAC receive */ - EDMAC.EDRRR.LONG = 0x1; - } - - return lReturn; -} -/*-----------------------------------------------------------*/ - -static void prvInitialiseDescriptors( void ) -{ -volatile ethfifo *pxDescriptor; -long x; - - for( x = 0; x < emacNUM_BUFFERS; x++ ) - { - /* Ensure none of the buffers are shown as in use at the start. */ - ucBufferInUse[ x ] = pdFALSE; - } - - /* Initialise the Rx descriptors. */ - for( x = 0; x < emacNUM_RX_DESCRIPTORS; x++ ) - { - pxDescriptor = &( xRxDescriptors[ x ] ); - pxDescriptor->buf_p = &( xEthernetBuffers[ x ][ 0 ] ); - - pxDescriptor->bufsize = UIP_BUFSIZE; - pxDescriptor->size = 0; - pxDescriptor->status = ACT; - pxDescriptor->next = ( ethfifo * ) &xRxDescriptors[ x + 1 ]; - - /* Mark this buffer as in use. */ - ucBufferInUse[ x ] = pdTRUE; - } - - /* The last descriptor points back to the start. */ - pxDescriptor->status |= DL; - pxDescriptor->next = ( ethfifo * ) &xRxDescriptors[ 0 ]; - - /* Initialise the Tx descriptors. */ - for( x = 0; x < emacNUM_TX_BUFFERS; x++ ) - { - pxDescriptor = &( xTxDescriptors[ x ] ); - - /* A buffer is not allocated to the Tx descriptor until a send is - actually required. */ - pxDescriptor->buf_p = NULL; - - pxDescriptor->bufsize = UIP_BUFSIZE; - pxDescriptor->size = 0; - pxDescriptor->status = 0; - pxDescriptor->next = ( ethfifo * ) &xTxDescriptors[ x + 1 ]; - } - - /* The last descriptor points back to the start. */ - pxDescriptor->status |= DL; - pxDescriptor->next = ( ethfifo * ) &( xTxDescriptors[ 0 ] ); - - /* Use the first Rx descriptor to start with. */ - pxCurrentRxDesc = &( xRxDescriptors[ 0 ] ); -} -/*-----------------------------------------------------------*/ - -static unsigned char *prvGetNextBuffer( void ) -{ -long x; -unsigned char *pucReturn = NULL; -unsigned long ulAttempts = 0; - - while( pucReturn == NULL ) - { - /* Look through the buffers to find one that is not in use by - anything else. */ - for( x = 0; x < emacNUM_BUFFERS; x++ ) - { - if( ucBufferInUse[ x ] == pdFALSE ) - { - ucBufferInUse[ x ] = pdTRUE; - pucReturn = ( unsigned char * ) &( xEthernetBuffers[ x ][ 0 ] ); - break; - } - } - - /* Was a buffer found? */ - if( pucReturn == NULL ) - { - ulAttempts++; - - if( ulAttempts >= emacBUFFER_WAIT_ATTEMPTS ) - { - break; - } - - /* Wait then look again. */ - vTaskDelay( emacBUFFER_WAIT_DELAY_ms ); - } - } - - return pucReturn; -} -/*-----------------------------------------------------------*/ - -static void prvReturnBuffer( unsigned char *pucBuffer ) -{ -unsigned long ul; - - /* Return a buffer to the pool of free buffers. */ - for( ul = 0; ul < emacNUM_BUFFERS; ul++ ) - { - if( &( xEthernetBuffers[ ul ][ 0 ] ) == ( void * ) pucBuffer ) - { - ucBufferInUse[ ul ] = pdFALSE; - break; - } - } -} -/*-----------------------------------------------------------*/ - -static void prvResetEverything( void ) -{ - /* Temporary code just to see if this gets called. This function has not - been implemented. */ - portDISABLE_INTERRUPTS(); - for( ;; ); -} -/*-----------------------------------------------------------*/ - -static unsigned long prvCheckRxFifoStatus( void ) -{ -unsigned long ulReturn = 0; - - if( ( pxCurrentRxDesc->status & ACT ) != 0 ) - { - /* Current descriptor is still active. */ - } - else if( ( pxCurrentRxDesc->status & FE ) != 0 ) - { - /* Frame error. Clear the error. */ - pxCurrentRxDesc->status &= ~( FP1 | FP0 | FE ); - pxCurrentRxDesc->status &= ~( RMAF | RRF | RTLF | RTSF | PRE | CERF ); - pxCurrentRxDesc->status |= ACT; - pxCurrentRxDesc = pxCurrentRxDesc->next; - - if( EDMAC.EDRRR.LONG == 0x00000000UL ) - { - /* Restart Ethernet if it has stopped. */ - EDMAC.EDRRR.LONG = 0x00000001UL; - } - } - else - { - /* The descriptor contains a frame. Because of the size of the buffers - the frame should always be complete. */ - if( ( pxCurrentRxDesc->status & FP0 ) == FP0 ) - { - ulReturn = pxCurrentRxDesc->size; - } - else - { - /* Do not expect to get here. */ - prvResetEverything(); - } - } - - return ulReturn; -} -/*-----------------------------------------------------------*/ - -static void prvResetMAC( void ) -{ - /* Ensure the EtherC and EDMAC are enabled. */ - SYSTEM.MSTPCRB.BIT.MSTPB15 = 0; - vTaskDelay( 100 / portTICK_PERIOD_MS ); - - EDMAC.EDMR.BIT.SWR = 1; - - /* Crude wait for reset to complete. */ - vTaskDelay( 500 / portTICK_PERIOD_MS ); -} -/*-----------------------------------------------------------*/ - -static void prvConfigureEtherCAndEDMAC( void ) -{ - /* Initialisation code taken from Renesas example project. */ - - /* TODO: Check bit 5 */ - ETHERC.ECSR.LONG = 0x00000037; /* Clear all ETHERC statuS BFR, PSRTO, LCHNG, MPD, ICD */ - - /* Set the EDMAC interrupt priority. */ - _IPR( _ETHER_EINT ) = configKERNEL_INTERRUPT_PRIORITY; - - /* TODO: Check bit 5 */ - /* Enable interrupts of interest only. */ - EDMAC.EESIPR.LONG = emacTX_END_INTERRUPT | emacRX_END_INTERRUPT; - ETHERC.RFLR.LONG = 1518; /* Ether payload is 1500+ CRC */ - ETHERC.IPGR.LONG = 0x00000014; /* Intergap is 96-bit time */ - - /* EDMAC */ - EDMAC.EESR.LONG = 0x47FF0F9F; /* Clear all ETHERC and EDMAC status bits */ - #if __LITTLE_ENDIAN__ == 1 - EDMAC.EDMR.BIT.DE = 1; - #endif - EDMAC.RDLAR = ( void * ) pxCurrentRxDesc; /* Initialaize Rx Descriptor List Address */ - EDMAC.TDLAR = ( void * ) &( xTxDescriptors[ 0 ] );/* Initialaize Tx Descriptor List Address */ - EDMAC.TRSCER.LONG = 0x00000000; /* Copy-back status is RFE & TFE only */ - EDMAC.TFTR.LONG = 0x00000000; /* Threshold of Tx_FIFO */ - EDMAC.FDR.LONG = 0x00000000; /* Transmit fifo & receive fifo is 256 bytes */ - EDMAC.RMCR.LONG = 0x00000003; /* Receive function is normal mode(continued) */ - ETHERC.ECMR.BIT.PRM = 0; /* Ensure promiscuous mode is off. */ - - /* Enable the interrupt... */ - _IEN( _ETHER_EINT ) = 1; -} -/*-----------------------------------------------------------*/ - -#pragma vector = VECT_ETHER_EINT -__interrupt void vEMAC_ISR_Handler( void ) -{ -unsigned long ul = EDMAC.EESR.LONG; -long lHigherPriorityTaskWoken = pdFALSE; -extern QueueHandle_t xEMACEventQueue; -const unsigned long ulRxEvent = uipETHERNET_RX_EVENT; - - __enable_interrupt(); - - /* Has a Tx end occurred? */ - if( ul & emacTX_END_INTERRUPT ) - { - /* Only return the buffer to the pool once both Txes have completed. */ - prvReturnBuffer( ( void * ) xTxDescriptors[ 0 ].buf_p ); - EDMAC.EESR.LONG = emacTX_END_INTERRUPT; - } - - /* Has an Rx end occurred? */ - if( ul & emacRX_END_INTERRUPT ) - { - /* Make sure the Ethernet task is not blocked waiting for a packet. */ - xQueueSendFromISR( xEMACEventQueue, &ulRxEvent, &lHigherPriorityTaskWoken ); - portYIELD_FROM_ISR( lHigherPriorityTaskWoken ); - EDMAC.EESR.LONG = emacRX_END_INTERRUPT; - } -} - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/webserver/httpd-cgi.c b/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/webserver/httpd-cgi.c deleted file mode 100644 index be4d71175..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/webserver/httpd-cgi.c +++ /dev/null @@ -1,277 +0,0 @@ -/** - * \addtogroup httpd - * @{ - */ - -/** - * \file - * Web server script interface - * \author - * Adam Dunkels - * - */ - -/* - * Copyright (c) 2001-2006, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: httpd-cgi.c,v 1.2 2006/06/11 21:46:37 adam Exp $ - * - */ -#include "net/uip.h" -#include "net/psock.h" -#include "apps/httpd/httpd.h" -#include "apps/httpd/httpd-cgi.h" -#include "apps/httpd/httpd-fs.h" - -#include -#include - -#include "FreeRTOS.h" -#include "task.h" - -HTTPD_CGI_CALL( file, "file-stats", file_stats ); -HTTPD_CGI_CALL( tcp, "tcp-connections", tcp_stats ); -HTTPD_CGI_CALL( net, "net-stats", net_stats ); -HTTPD_CGI_CALL( rtos, "rtos-stats", rtos_stats ); -HTTPD_CGI_CALL( run, "run-time", run_time ); -HTTPD_CGI_CALL( io, "led-io", led_io ); - -static const struct httpd_cgi_call *calls[] = { &file, &tcp, &net, &rtos, &run, &io, NULL }; - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( nullfunction ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - ( void ) PT_YIELD_FLAG; - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -httpd_cgifunction httpd_cgi( char *name ) -{ - const struct httpd_cgi_call **f; - - /* Find the matching name in the table, return the function. */ - for( f = calls; *f != NULL; ++f ) - { - if( strncmp((*f)->name, name, strlen((*f)->name)) == 0 ) - { - return( *f )->function; - } - } - - return nullfunction; -} - -/*---------------------------------------------------------------------------*/ -static unsigned short generate_file_stats( void *arg ) -{ - char *f = ( char * ) arg; - return sprintf( ( char * ) uip_appdata, "%5u", httpd_fs_count(f) ); -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( file_stats ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - - ( void ) PT_YIELD_FLAG; - - PSOCK_GENERATOR_SEND( &s->sout, generate_file_stats, strchr(ptr, ' ') + 1 ); - - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -static const char closed[] = /* "CLOSED",*/ { 0x43, 0x4c, 0x4f, 0x53, 0x45, 0x44, 0 }; -static const char syn_rcvd[] = /* "SYN-RCVD",*/ { 0x53, 0x59, 0x4e, 0x2d, 0x52, 0x43, 0x56, 0x44, 0 }; -static const char syn_sent[] = /* "SYN-SENT",*/ { 0x53, 0x59, 0x4e, 0x2d, 0x53, 0x45, 0x4e, 0x54, 0 }; -static const char established[] = /* "ESTABLISHED",*/ { 0x45, 0x53, 0x54, 0x41, 0x42, 0x4c, 0x49, 0x53, 0x48, 0x45, 0x44, 0 }; -static const char fin_wait_1[] = /* "FIN-WAIT-1",*/ { 0x46, 0x49, 0x4e, 0x2d, 0x57, 0x41, 0x49, 0x54, 0x2d, 0x31, 0 }; -static const char fin_wait_2[] = /* "FIN-WAIT-2",*/ { 0x46, 0x49, 0x4e, 0x2d, 0x57, 0x41, 0x49, 0x54, 0x2d, 0x32, 0 }; -static const char closing[] = /* "CLOSING",*/ { 0x43, 0x4c, 0x4f, 0x53, 0x49, 0x4e, 0x47, 0 }; -static const char time_wait[] = /* "TIME-WAIT,"*/ { 0x54, 0x49, 0x4d, 0x45, 0x2d, 0x57, 0x41, 0x49, 0x54, 0 }; -static const char last_ack[] = /* "LAST-ACK"*/ { 0x4c, 0x41, 0x53, 0x54, 0x2d, 0x41, 0x43, 0x4b, 0 }; - -static const char *states[] = { closed, syn_rcvd, syn_sent, established, fin_wait_1, fin_wait_2, closing, time_wait, last_ack }; - -static unsigned short generate_tcp_stats( void *arg ) -{ - struct uip_conn *conn; - struct httpd_state *s = ( struct httpd_state * ) arg; - - conn = &uip_conns[s->count]; - return sprintf( ( char * ) uip_appdata, - "\r\n", htons(conn->lport), - htons(conn->ripaddr.u16[0]) >> 8, htons(conn->ripaddr.u16[0]) & 0xff, htons(conn->ripaddr.u16[1]) >> 8, - htons(conn->ripaddr.u16[1]) & 0xff, htons(conn->rport), states[conn->tcpstateflags & UIP_TS_MASK], conn->nrtx, conn->timer, - (uip_outstanding(conn)) ? '*' : ' ', (uip_stopped(conn)) ? '!' : ' ' ); -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( tcp_stats ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - ( void ) PT_YIELD_FLAG; - for( s->count = 0; s->count < UIP_CONNS; ++s->count ) - { - if( (uip_conns[s->count].tcpstateflags & UIP_TS_MASK) != UIP_CLOSED ) - { - PSOCK_GENERATOR_SEND( &s->sout, generate_tcp_stats, s ); - } - } - - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -static unsigned short generate_net_stats( void *arg ) -{ - struct httpd_state *s = ( struct httpd_state * ) arg; - return sprintf( ( char * ) uip_appdata, "%5u\n", (( uip_stats_t * ) &uip_stat)[s->count] ); -} - -static PT_THREAD( net_stats ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - ( void ) PT_YIELD_FLAG; -#if UIP_STATISTICS - for( s->count = 0; s->count < sizeof(uip_stat) / sizeof(uip_stats_t); ++s->count ) - { - PSOCK_GENERATOR_SEND( &s->sout, generate_net_stats, s ); - } - -#endif /* UIP_STATISTICS */ - - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -extern void vTaskList( char *pcWriteBuffer ); -extern char *pcGetTaskStatusMessage( void ); -static char cCountBuf[128]; -long lRefreshCount = 0; -static unsigned short generate_rtos_stats( void *arg ) -{ - ( void ) arg; - lRefreshCount++; - sprintf( cCountBuf, "


Refresh count = %d


%s", ( int ) lRefreshCount, pcGetTaskStatusMessage() ); - vTaskList( ( char * ) uip_appdata ); - strcat( uip_appdata, cCountBuf ); - - return strlen( uip_appdata ); -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( rtos_stats ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - ( void ) PT_YIELD_FLAG; - PSOCK_GENERATOR_SEND( &s->sout, generate_rtos_stats, NULL ); - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -char *pcStatus; -unsigned long ulString; - -static unsigned short generate_io_state( void *arg ) -{ - extern long lParTestGetLEDState( unsigned long ulLED ); - ( void ) arg; - - /* Are the dynamically setable LEDs currently on or off? */ - if( lParTestGetLEDState( 8 ) ) - { - pcStatus = "checked"; - } - else - { - pcStatus = ""; - } - - sprintf( uip_appdata, "LED

", pcStatus ); - - return strlen( uip_appdata ); -} - -/*---------------------------------------------------------------------------*/ -extern void vTaskGetRunTimeStats( char *pcWriteBuffer ); -extern unsigned short usMaxJitter; -static char cJitterBuffer[ 200 ]; -static unsigned short generate_runtime_stats( void *arg ) -{ - ( void ) arg; - lRefreshCount++; - sprintf( cCountBuf, "


Refresh count = %d", ( int ) lRefreshCount ); - - #ifdef INCLUDE_HIGH_FREQUENCY_TIMER_TEST - { - sprintf( cJitterBuffer, "


Max high frequency timer jitter = %d peripheral clock periods.


", ( int ) usMaxJitter ); - vTaskGetRunTimeStats( ( char * ) uip_appdata ); - strcat( uip_appdata, cJitterBuffer ); - } - #else - { - ( void ) cJitterBuffer; - strcpy( uip_appdata, "

Run time stats are only available in the debug_with_optimisation build configuration.

" ); - } - #endif - - strcat( uip_appdata, cCountBuf ); - - return strlen( uip_appdata ); -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( run_time ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - ( void ) PT_YIELD_FLAG; - PSOCK_GENERATOR_SEND( &s->sout, generate_runtime_stats, NULL ); - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( led_io ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - ( void ) PT_YIELD_FLAG; - PSOCK_GENERATOR_SEND( &s->sout, generate_io_state, NULL ); - PSOCK_END( &s->sout ); -} - -/** @} */ diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/webserver/httpd-fs/404.html b/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/webserver/httpd-fs/404.html deleted file mode 100644 index 43e7f4cad..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/webserver/httpd-fs/404.html +++ /dev/null @@ -1,8 +0,0 @@ - - -

-

404 - file not found

-

Go here instead.

-
- - \ No newline at end of file diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/webserver/httpd-fs/index.html b/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/webserver/httpd-fs/index.html deleted file mode 100644 index 4937dc69a..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/webserver/httpd-fs/index.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Loading index.shtml. Click here if not automatically redirected. - - - - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/webserver/httpd-fs/index.shtml b/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/webserver/httpd-fs/index.shtml deleted file mode 100644 index 882d085ce..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/webserver/httpd-fs/index.shtml +++ /dev/null @@ -1,20 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS Homepage | IO | 37K jpg -

-


-

-

Task statistics

-Page will refresh every 2 seconds.

-

Task          State  Priority  Stack	#
************************************************
-%! rtos-stats -
-
- - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/webserver/httpd-fs/io.shtml b/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/webserver/httpd-fs/io.shtml deleted file mode 100644 index 819e2d39b..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/webserver/httpd-fs/io.shtml +++ /dev/null @@ -1,28 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS Homepage | IO | 37K jpg -

-


-LED and LCD IO
- -

- -Use the check box to turn on or off LED 4, then click "Update IO". - - -

-
-%! led-io -

- - -

- - - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/webserver/httpd-fs/runtime.shtml b/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/webserver/httpd-fs/runtime.shtml deleted file mode 100644 index 3464fd471..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/webserver/httpd-fs/runtime.shtml +++ /dev/null @@ -1,20 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS Homepage | IO | 37K jpg -

-


-

-

Run-time statistics

-Page will refresh every 2 seconds.

-

Task            Abs Time      % Time
****************************************
-%! run-time -
-
- - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/webserver/httpd-fs/stats.shtml b/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/webserver/httpd-fs/stats.shtml deleted file mode 100644 index f54118606..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/webserver/httpd-fs/stats.shtml +++ /dev/null @@ -1,47 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS Homepage | IO | 37K jpg -

-


-

-

Network statistics

-
LocalRemoteStateRetransmissionsTimerFlags
%d%u.%u.%u.%u:%u%s%u%u%c %c
-
-IP           Packets received
-             Packets sent
-             Forwaded
-             Dropped
-IP errors    IP version/header length
-             IP length, high byte
-             IP length, low byte
-             IP fragments
-             Header checksum
-             Wrong protocol
-ICMP	     Packets received
-             Packets sent
-             Packets dropped
-             Type errors
-             Checksum errors
-TCP          Packets received
-             Packets sent
-             Packets dropped
-             Checksum errors
-             Data packets without ACKs
-             Resets
-             Retransmissionsa
-             Syn to closed port
-UDP          Packets dropped
-             Packets received
-             Packets sent
-             Packets chkerr
-	     No connection avaliable
-
%! net-stats
-
- - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/webserver/httpd-fs/tcp.shtml b/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/webserver/httpd-fs/tcp.shtml deleted file mode 100644 index 23dcdcae3..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/webserver/httpd-fs/tcp.shtml +++ /dev/null @@ -1,21 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS Homepage | IO | 37K jpg -

-


-
-

Network connections

-

- - -%! tcp-connections - - - - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/webserver/httpd-fsdata.c b/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/webserver/httpd-fsdata.c deleted file mode 100644 index 47823d100..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/webserver/httpd-fsdata.c +++ /dev/null @@ -1,3871 +0,0 @@ -static const char data_404_html[] = { - /* /404.html */ - 0x2f, 0x34, 0x30, 0x34, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, 0xa, 0x20, 0x20, - 0x3c, 0x62, 0x6f, 0x64, 0x79, 0x20, 0x62, 0x67, 0x63, 0x6f, - 0x6c, 0x6f, 0x72, 0x3d, 0x22, 0x77, 0x68, 0x69, 0x74, 0x65, - 0x22, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x63, - 0x65, 0x6e, 0x74, 0x65, 0x72, 0x3e, 0xd, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x3c, 0x68, 0x31, 0x3e, 0x34, 0x30, - 0x34, 0x20, 0x2d, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x6e, - 0x6f, 0x74, 0x20, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x3c, 0x2f, - 0x68, 0x31, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x3c, 0x68, 0x33, 0x3e, 0x47, 0x6f, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x2f, 0x22, 0x3e, - 0x68, 0x65, 0x72, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x69, - 0x6e, 0x73, 0x74, 0x65, 0x61, 0x64, 0x2e, 0x3c, 0x2f, 0x68, - 0x33, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x2f, - 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x3e, 0xd, 0xa, 0x20, - 0x20, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xd, 0xa, - 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0}; - -static const char data_index_html[] = { - /* /index.html */ - 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x20, 0x6f, 0x6e, 0x4c, 0x6f, 0x61, 0x64, - 0x3d, 0x22, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x73, - 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x28, - 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x6c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x68, 0x72, 0x65, 0x66, 0x3d, - 0x27, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, - 0x6d, 0x6c, 0x27, 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x2c, - 0x31, 0x30, 0x30, 0x29, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x66, - 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, - 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xd, 0xa, 0x4c, - 0x6f, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x69, 0x6e, 0x64, - 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x2e, 0x20, - 0x20, 0x43, 0x6c, 0x69, 0x63, 0x6b, 0x20, 0x3c, 0x61, 0x20, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x68, - 0x65, 0x72, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x69, 0x66, - 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x61, 0x75, 0x74, 0x6f, 0x6d, - 0x61, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x6c, 0x79, 0x20, 0x72, - 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x65, 0x64, 0x2e, - 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xd, - 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xd, 0xa, - 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xd, 0xa, 0x3c, - 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, 0xa, 0xd, 0xa, -0}; - -static const char data_index_shtml[] = { - /* /index.shtml */ - 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x20, 0x6f, 0x6e, 0x4c, 0x6f, 0x61, 0x64, - 0x3d, 0x22, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x73, - 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x28, - 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x6c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x68, 0x72, 0x65, 0x66, 0x3d, - 0x27, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, - 0x6d, 0x6c, 0x27, 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x2c, - 0x32, 0x30, 0x30, 0x30, 0x29, 0x22, 0x3e, 0xd, 0xa, 0x3c, - 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, - 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xd, 0xa, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x53, 0x74, 0x61, - 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x72, 0x75, 0x6e, 0x74, 0x69, - 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x52, 0x75, 0x6e, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, - 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, - 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x54, 0x43, 0x50, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, - 0x6c, 0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, - 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, - 0x65, 0x65, 0x72, 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, - 0x2f, 0x22, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x20, 0x48, 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, - 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, - 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, - 0x66, 0x3d, 0x22, 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, - 0x6c, 0x22, 0x3e, 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0x20, - 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, - 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x6c, 0x6f, - 0x67, 0x6f, 0x2e, 0x6a, 0x70, 0x67, 0x22, 0x3e, 0x33, 0x37, - 0x4b, 0x20, 0x6a, 0x70, 0x67, 0x3c, 0x2f, 0x61, 0x3e, 0xd, - 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, - 0x3c, 0x68, 0x72, 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, - 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x32, 0x3e, 0x54, - 0x61, 0x73, 0x6b, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, - 0x74, 0x69, 0x63, 0x73, 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0xd, - 0xa, 0x50, 0x61, 0x67, 0x65, 0x20, 0x77, 0x69, 0x6c, 0x6c, - 0x20, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x20, 0x65, - 0x76, 0x65, 0x72, 0x79, 0x20, 0x32, 0x20, 0x73, 0x65, 0x63, - 0x6f, 0x6e, 0x64, 0x73, 0x2e, 0x3c, 0x70, 0x3e, 0xd, 0xa, - 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, - 0x3d, 0x22, 0x63, 0x6f, 0x75, 0x72, 0x69, 0x65, 0x72, 0x22, - 0x3e, 0x3c, 0x70, 0x72, 0x65, 0x3e, 0x54, 0x61, 0x73, 0x6b, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x53, 0x74, 0x61, 0x74, 0x65, 0x20, 0x20, 0x50, 0x72, 0x69, - 0x6f, 0x72, 0x69, 0x74, 0x79, 0x20, 0x20, 0x53, 0x74, 0x61, - 0x63, 0x6b, 0x9, 0x23, 0x3c, 0x62, 0x72, 0x3e, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x3c, 0x62, 0x72, 0x3e, - 0xd, 0xa, 0x25, 0x21, 0x20, 0x72, 0x74, 0x6f, 0x73, 0x2d, - 0x73, 0x74, 0x61, 0x74, 0x73, 0xd, 0xa, 0x3c, 0x2f, 0x70, - 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, - 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xd, - 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xd, 0xa, - 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, 0xa, 0xd, - 0xa, 0}; - -static const char data_io_shtml[] = { - /* /io.shtml */ - 0x2f, 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x6e, - 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, - 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x61, 0x20, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, - 0x61, 0x73, 0x6b, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x52, 0x75, 0x6e, - 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, 0x74, 0x61, 0x74, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x43, 0x50, - 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, - 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, - 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, 0x65, 0x65, 0x72, - 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x22, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x20, 0x48, - 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, - 0x6a, 0x70, 0x67, 0x22, 0x3e, 0x33, 0x37, 0x4b, 0x20, 0x6a, - 0x70, 0x67, 0x3c, 0x2f, 0x61, 0x3e, 0xd, 0xa, 0x3c, 0x62, - 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x72, - 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x3e, 0x4c, 0x45, 0x44, 0x20, - 0x61, 0x6e, 0x64, 0x20, 0x4c, 0x43, 0x44, 0x20, 0x49, 0x4f, - 0x3c, 0x2f, 0x62, 0x3e, 0x3c, 0x62, 0x72, 0x3e, 0xd, 0xa, - 0xd, 0xa, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0xd, 0xa, 0x55, - 0x73, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x68, 0x65, - 0x63, 0x6b, 0x20, 0x62, 0x6f, 0x78, 0x20, 0x74, 0x6f, 0x20, - 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6f, 0x6e, 0x20, 0x6f, 0x72, - 0x20, 0x6f, 0x66, 0x66, 0x20, 0x4c, 0x45, 0x44, 0x20, 0x34, - 0x2c, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x20, 0x63, 0x6c, 0x69, - 0x63, 0x6b, 0x20, 0x22, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x20, 0x49, 0x4f, 0x22, 0x2e, 0xd, 0xa, 0xd, 0xa, 0xd, - 0xa, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x72, - 0x6d, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x22, 0x61, 0x46, - 0x6f, 0x72, 0x6d, 0x22, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x3d, 0x22, 0x2f, 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, - 0x6d, 0x6c, 0x22, 0x20, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, - 0x3d, 0x22, 0x67, 0x65, 0x74, 0x22, 0x3e, 0xd, 0xa, 0x25, - 0x21, 0x20, 0x6c, 0x65, 0x64, 0x2d, 0x69, 0x6f, 0xd, 0xa, - 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x69, 0x6e, 0x70, 0x75, - 0x74, 0x20, 0x74, 0x79, 0x70, 0x65, 0x3d, 0x22, 0x73, 0x75, - 0x62, 0x6d, 0x69, 0x74, 0x22, 0x20, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x3d, 0x22, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, - 0x49, 0x4f, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, - 0x72, 0x6d, 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, - 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, - 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, - 0xd, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, - 0xa, 0xd, 0xa, 0}; - -static const char data_logo_jpg[] = { - /* /logo.jpg */ - 0x2f, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, 0x6a, 0x70, 0x67, 0, - 0xff, 0xd8, 0xff, 0xe0, 00, 0x10, 0x4a, 0x46, 0x49, 0x46, - 00, 0x1, 0x1, 00, 00, 0x1, 00, 0x1, 00, 00, - 0xff, 0xdb, 00, 0x43, 00, 0x3, 0x2, 0x2, 0x3, 0x2, - 0x2, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x3, 0x4, 0x5, - 0x8, 0x5, 0x5, 0x4, 0x4, 0x5, 0xa, 0x7, 0x7, 0x6, - 0x8, 0xc, 0xa, 0xc, 0xc, 0xb, 0xa, 0xb, 0xb, 0xd, - 0xe, 0x12, 0x10, 0xd, 0xe, 0x11, 0xe, 0xb, 0xb, 0x10, - 0x16, 0x10, 0x11, 0x13, 0x14, 0x15, 0x15, 0x15, 0xc, 0xf, - 0x17, 0x18, 0x16, 0x14, 0x18, 0x12, 0x14, 0x15, 0x14, 0xff, - 0xdb, 00, 0x43, 0x1, 0x3, 0x4, 0x4, 0x5, 0x4, 0x5, - 0x9, 0x5, 0x5, 0x9, 0x14, 0xd, 0xb, 0xd, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0xff, 0xc0, - 00, 0x11, 0x8, 0x1, 0x8, 0x2, 0xc2, 0x3, 0x1, 0x22, - 00, 0x2, 0x11, 0x1, 0x3, 0x11, 0x1, 0xff, 0xc4, 00, - 0x1f, 00, 00, 0x1, 0x5, 0x1, 0x1, 0x1, 0x1, 0x1, - 0x1, 00, 00, 00, 00, 00, 00, 00, 00, 0x1, - 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb, - 0xff, 0xc4, 00, 0xb5, 0x10, 00, 0x2, 0x1, 0x3, 0x3, - 0x2, 0x4, 0x3, 0x5, 0x5, 0x4, 0x4, 00, 00, 0x1, - 0x7d, 0x1, 0x2, 0x3, 00, 0x4, 0x11, 0x5, 0x12, 0x21, - 0x31, 0x41, 0x6, 0x13, 0x51, 0x61, 0x7, 0x22, 0x71, 0x14, - 0x32, 0x81, 0x91, 0xa1, 0x8, 0x23, 0x42, 0xb1, 0xc1, 0x15, - 0x52, 0xd1, 0xf0, 0x24, 0x33, 0x62, 0x72, 0x82, 0x9, 0xa, - 0x16, 0x17, 0x18, 0x19, 0x1a, 0x25, 0x26, 0x27, 0x28, 0x29, - 0x2a, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x43, 0x44, - 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x53, 0x54, 0x55, 0x56, - 0x57, 0x58, 0x59, 0x5a, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, - 0x69, 0x6a, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, - 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x92, 0x93, - 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0xa2, 0xa3, 0xa4, - 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xb2, 0xb3, 0xb4, 0xb5, - 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, - 0xc7, 0xc8, 0xc9, 0xca, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, - 0xd8, 0xd9, 0xda, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, - 0xe8, 0xe9, 0xea, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, - 0xf8, 0xf9, 0xfa, 0xff, 0xc4, 00, 0x1f, 0x1, 00, 0x3, - 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 00, - 00, 00, 00, 00, 00, 0x1, 0x2, 0x3, 0x4, 0x5, - 0x6, 0x7, 0x8, 0x9, 0xa, 0xb, 0xff, 0xc4, 00, 0xb5, - 0x11, 00, 0x2, 0x1, 0x2, 0x4, 0x4, 0x3, 0x4, 0x7, - 0x5, 0x4, 0x4, 00, 0x1, 0x2, 0x77, 00, 0x1, 0x2, - 0x3, 0x11, 0x4, 0x5, 0x21, 0x31, 0x6, 0x12, 0x41, 0x51, - 0x7, 0x61, 0x71, 0x13, 0x22, 0x32, 0x81, 0x8, 0x14, 0x42, - 0x91, 0xa1, 0xb1, 0xc1, 0x9, 0x23, 0x33, 0x52, 0xf0, 0x15, - 0x62, 0x72, 0xd1, 0xa, 0x16, 0x24, 0x34, 0xe1, 0x25, 0xf1, - 0x17, 0x18, 0x19, 0x1a, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x35, - 0x36, 0x37, 0x38, 0x39, 0x3a, 0x43, 0x44, 0x45, 0x46, 0x47, - 0x48, 0x49, 0x4a, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, - 0x5a, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x73, - 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x82, 0x83, 0x84, - 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x92, 0x93, 0x94, 0x95, - 0x96, 0x97, 0x98, 0x99, 0x9a, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, - 0xa7, 0xa8, 0xa9, 0xaa, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, - 0xb8, 0xb9, 0xba, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, - 0xc9, 0xca, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, - 0xda, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, - 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xff, - 0xda, 00, 0xc, 0x3, 0x1, 00, 0x2, 0x11, 0x3, 0x11, - 00, 0x3f, 00, 0xfd, 0x53, 0xa2, 0x8a, 0x28, 00, 0xa2, - 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, - 00, 0xaa, 0xf7, 0xfa, 0x85, 0xb6, 0x95, 0x67, 0x2d, 0xd5, - 0xe4, 0xf1, 0xdb, 0x5b, 0x44, 0xa5, 0x9e, 0x59, 0x58, 0x2a, - 0xa8, 0x1e, 0xf5, 0xc6, 0x7c, 0x4e, 0xf8, 0xb3, 0xa6, 0xfc, - 0x39, 0xb4, 0x48, 0xb0, 0xb7, 0xda, 0xd5, 0xc6, 0x5, 0xb6, - 0x9e, 0x8d, 0x86, 0x72, 0x4e, 0x37, 0x37, 0xf7, 0x57, 0xf9, - 0xf6, 0xaa, 0x16, 0x5f, 0xd, 0x9f, 0xc6, 0xd0, 0xc5, 0xa9, - 0xf8, 0xc6, 0xe1, 0xef, 0xa6, 0x99, 0x3, 0xa6, 0x9e, 0x84, - 0xad, 0xbd, 0xb6, 0x7b, 0x2a, 0xf7, 0x3e, 0xe7, 0x9a, 0xe0, - 0xa9, 0x89, 0xbc, 0xdd, 0x1a, 0xb, 0x9a, 0x6b, 0x7e, 0xcb, - 0xd5, 0xfe, 0x9b, 0x9c, 0xb2, 0xaf, 0x79, 0x3a, 0x74, 0xb5, - 0x92, 0xdf, 0xb2, 0xf5, 0xff, 00, 0x23, 0x93, 0xf1, 0xa7, - 0xed, 0x5f, 0xa1, 0x69, 0x1b, 0xa1, 0xd0, 0x2d, 0x64, 0xd6, - 0x2e, 0x1, 0xc7, 0x9b, 0x26, 0x62, 0x84, 0x7d, 0xf, 0x53, - 0xf9, 0x57, 0x91, 0x6b, 0x5f, 0xb5, 0xf, 0x8e, 0x35, 0x49, - 0x9, 0xb7, 0xba, 0xb7, 0xd3, 0x23, 0xec, 0x96, 0xd0, 0x29, - 0xfd, 0x5b, 0x26, 0xbe, 0x92, 0x7f, 0x81, 0x1e, 0xb, 0x7f, - 0xf9, 0x84, 0x46, 0x3e, 0x95, 0xb, 0xfe, 0xcf, 0xfe, 0xa, - 0x93, 0xae, 0x96, 0xa3, 0xe8, 0x6b, 0xc2, 0xaf, 0x84, 0xcd, - 0xab, 0xbb, 0xba, 0xa9, 0x2e, 0xc9, 0xb5, 0xfa, 0x5c, 0xf0, - 0xb1, 0x18, 0x4c, 0xce, 0xbb, 0xd2, 0xb2, 0x8a, 0xec, 0xb4, - 0xff, 00, 0x82, 0x7c, 0x91, 0x3f, 0xc6, 0xf, 0x19, 0x5c, - 0x48, 0x5d, 0xfc, 0x45, 0x7e, 0x58, 0xf5, 0xc4, 0xb8, 0x1f, - 0x90, 0xa7, 0x27, 0xc6, 0x5f, 0x1a, 0x46, 0xca, 0x57, 0xc4, - 0x57, 0xc0, 0xaf, 0x23, 0xf7, 0x99, 0xfe, 0x95, 0xf5, 0x73, - 0xfe, 0xce, 0x9e, 0x9, 0x7f, 0xf9, 0x87, 0x15, 0xfa, 0x35, - 0x43, 0x27, 0xec, 0xd7, 0xe0, 0xa7, 0xe9, 0x67, 0x2a, 0xfd, - 0x1e, 0xbc, 0xcf, 0xec, 0x7c, 0xc5, 0x3b, 0xa9, 0xff, 00, - 0xe4, 0xcc, 0xf3, 0x3f, 0xb1, 0xf3, 0x1d, 0xd5, 0x6f, 0xc5, - 0x9f, 0x31, 0x2f, 0xc7, 0x9f, 0x1e, 0x29, 0xcf, 0xfc, 0x24, - 0x77, 0x47, 0xea, 0x10, 0xff, 00, 0x4a, 0x9e, 0x2f, 0xda, - 0x17, 0xc7, 0xd1, 0xc, 0xf, 0x10, 0xcc, 0x7b, 0xfc, 0xd0, - 0xc6, 0x7f, 0x9a, 0xd7, 0xd1, 0xed, 0xfb, 0x31, 0xf8, 0x34, - 0xe7, 0x10, 0xce, 0x7, 0xfb, 0xff, 00, 0xfd, 0x6a, 0x81, - 0xff, 00, 0x65, 0xcf, 0x8, 0x37, 0x4f, 0xb4, 0x83, 0xfe, - 0xf0, 0xa7, 0xfd, 0x99, 0x9a, 0xad, 0xaa, 0x7f, 0xe4, 0xcc, - 0x3f, 0xb2, 0xf3, 0x45, 0xb5, 0x6f, 0xc5, 0x9f, 0x3d, 0xff, - 00, 0xc3, 0x46, 0x7c, 0x40, 0xff, 00, 0xa0, 0xfb, 0xff, - 00, 0xe0, 0x3c, 0x5f, 0xfc, 0x4d, 0x48, 0xbf, 0xb4, 0x8f, - 0x8f, 0xd4, 0xe7, 0xfb, 0x6f, 0x3e, 0xc6, 0xda, 0x2f, 0xfe, - 0x26, 0xbd, 0xe9, 0xff, 00, 0x65, 0x6f, 0x9, 0xb6, 0x71, - 0x25, 0xd0, 0xff, 00, 0x81, 0xa, 0x85, 0xff, 00, 0x64, - 0xff, 00, 0xb, 0x30, 0xe2, 0xe6, 0xed, 0x4f, 0xd4, 0x51, - 0xfd, 0x9d, 0x9b, 0x2f, 0xb6, 0xff, 00, 0xf0, 0x26, 0x1f, - 0xd9, 0xd9, 0xb2, 0xda, 0xb7, 0xfe, 0x4c, 0xcf, 0x11, 0x5f, - 0xda, 0x63, 0xc7, 0xca, 0x79, 0xd5, 0xa3, 0x6f, 0x63, 0x6b, - 0x1f, 0xf8, 0x54, 0xcb, 0xfb, 0x50, 0x78, 0xf1, 0x40, 0x1f, - 0x6f, 0xb6, 0x3e, 0xe6, 0xd5, 0x2b, 0xd8, 0x5b, 0xf6, 0x49, - 0xf0, 0xd1, 0xe9, 0x7f, 0x76, 0xbe, 0xdc, 0x54, 0xf, 0xfb, - 0x22, 0xe8, 0x24, 0x7c, 0xba, 0xa5, 0xd0, 0x3f, 0xee, 0x8a, - 0x5f, 0x52, 0xce, 0x17, 0xda, 0x7f, 0xf8, 0x17, 0xfc, 0x10, - 0xfa, 0x8e, 0x70, 0xbf, 0xe5, 0xef, 0xfe, 0x4c, 0x79, 0x7a, - 0xfe, 0xd5, 0x9e, 0x38, 0x4, 0x66, 0x4d, 0x3d, 0xb1, 0xd8, - 0xda, 0xf5, 0xfd, 0x6a, 0x55, 0xfd, 0xac, 0x7c, 0x6a, 0xbd, - 0x53, 0x4c, 0x6f, 0xad, 0xb3, 0x7f, 0xf1, 0x55, 0xe8, 0xcf, - 0xfb, 0x21, 0x68, 0xe7, 0xee, 0xea, 0xd7, 0x3, 0xea, 0xa2, - 0xa0, 0x7f, 0xd9, 0x3, 0x4e, 0x39, 0xdb, 0xac, 0x4c, 0x3e, - 0xa8, 0x29, 0xfd, 0x5b, 0x39, 0x5f, 0x69, 0xff, 00, 0xe0, - 0x48, 0x3e, 0xa9, 0x9d, 0x2f, 0xf9, 0x79, 0xf8, 0x9c, 0x18, - 0xfd, 0xad, 0x3c, 0x67, 0xff, 00, 0x3c, 0x74, 0xbf, 0xfc, - 0x7, 0x6f, 0xfe, 0x2e, 0x9e, 0x3f, 0x6b, 0x6f, 0x18, 0x77, - 0xb6, 0xd2, 0xcf, 0xfd, 0xb0, 0x7f, 0xfe, 0x2e, 0xbb, 0x37, - 0xfd, 0x8f, 0xac, 0xff, 00, 0x87, 0x5a, 0x93, 0xf1, 0x41, - 0x50, 0xbf, 0xec, 0x7b, 0x11, 0xfb, 0xba, 0xe3, 0xf, 0xac, - 0x74, 0x7b, 0x1c, 0xe9, 0x75, 0x7f, 0x7a, 0x17, 0xd5, 0xf3, - 0xb5, 0xf6, 0xff, 00, 0x14, 0x72, 0xc9, 0xfb, 0x5d, 0x78, - 0xb1, 0x4f, 0xcd, 0x63, 0xa5, 0xb0, 0xf4, 0xf2, 0x9c, 0x7f, - 0xec, 0xd5, 0x62, 0x2f, 0xda, 0xff, 00, 0xc4, 0x8a, 0xb8, - 0x7d, 0x27, 0x4d, 0x73, 0xea, 0x3, 0x8f, 0xfd, 0x9a, 0xb6, - 0x9f, 0xf6, 0x3d, 0x71, 0x8d, 0x9a, 0xd8, 0x3f, 0x58, 0xea, - 0x17, 0xfd, 0x8f, 0xee, 0x81, 0x3b, 0x75, 0x98, 0xcf, 0xa6, - 0x52, 0xa7, 0x93, 0x3a, 0x5f, 0xcd, 0xf7, 0xa0, 0xf6, 0x79, - 0xe2, 0xfb, 0x5f, 0x91, 0x4d, 0x7f, 0x6c, 0x4d, 0x6c, 0x1, - 0xbb, 0x42, 0xb0, 0x27, 0xb9, 0xe, 0xe3, 0x35, 0x3a, 0x7e, - 0xd8, 0xda, 0x98, 0x3f, 0x37, 0x87, 0x6d, 0x8, 0xf6, 0xb8, - 0x61, 0xfd, 0x29, 0xad, 0xfb, 0x21, 0x6a, 0x40, 0x71, 0xaa, - 0xc2, 0x4f, 0xa6, 0xda, 0x85, 0xff, 00, 0x64, 0x4d, 0x60, - 0x1f, 0x97, 0x53, 0x80, 0xfe, 0x14, 0xef, 0x9d, 0xae, 0xff, - 00, 0x80, 0x7f, 0xc2, 0xe2, 0xeb, 0xf9, 0x17, 0x7, 0xed, - 0x8f, 0x7b, 0xdf, 0xc3, 0x56, 0xdf, 0x85, 0xd3, 0x7f, 0xf1, - 0x35, 0x22, 0xfe, 0xd8, 0xf7, 0x3c, 0x6e, 0xf0, 0xd4, 0x3e, - 0xf8, 0xba, 0x3f, 0xfc, 0x4d, 0x64, 0x37, 0xec, 0x8f, 0xaf, - 0x1, 0xf2, 0xdf, 0xdb, 0x93, 0xe8, 0x6a, 0x16, 0xfd, 0x92, - 0xfc, 0x48, 0xf, 0xcb, 0x75, 0x6c, 0x47, 0xae, 0xea, 0x4e, - 0xae, 0x74, 0xbf, 0x9b, 0xee, 0x42, 0xe7, 0xcf, 0x17, 0xfc, - 0x32, 0x3a, 0x45, 0xfd, 0xb1, 0xf9, 0xf9, 0xbc, 0x32, 0x31, - 0xed, 0x77, 0xff, 00, 0xd8, 0xd4, 0xf1, 0xfe, 0xd8, 0xf6, - 0xd8, 0x3b, 0xfc, 0x37, 0x26, 0x7b, 0x6d, 0xba, 0x1f, 0xfc, - 0x4d, 0x71, 0x6f, 0xfb, 0x29, 0x78, 0xa9, 0x46, 0x43, 0xdb, - 0x93, 0xe9, 0xbc, 0x54, 0x2f, 0xfb, 0x2c, 0x78, 0xb5, 0x71, - 0x81, 0x9, 0xfa, 0x38, 0xa5, 0xf5, 0x9c, 0xe5, 0x74, 0x97, - 0xfe, 0x2, 0xbf, 0xc8, 0x7e, 0xdf, 0x3b, 0x5f, 0x67, 0xf0, - 0x47, 0xa2, 0x45, 0xfb, 0x62, 0xe9, 0x45, 0x7, 0x99, 0xe1, - 0xeb, 0xb0, 0xfe, 0x8b, 0x3a, 0x11, 0xfc, 0xaa, 0xc2, 0x7e, - 0xd8, 0x3a, 0x1, 0xc6, 0xfd, 0xf, 0x50, 0x5f, 0x5c, 0x3a, - 0x1f, 0xeb, 0x5e, 0x58, 0xff, 00, 0xb2, 0xff, 00, 0x8c, - 0x57, 0x38, 0x82, 0x26, 0xc7, 0xfb, 0x62, 0xa2, 0x6f, 0xd9, - 0x97, 0xc6, 0x63, 0x18, 0xb4, 0x43, 0xf4, 0x71, 0x4f, 0xeb, - 0xb9, 0xc2, 0xfb, 0x2f, 0xff, 00, 0x1, 0xff, 00, 0x80, - 0x1f, 0x5a, 0xce, 0x97, 0xd8, 0xfc, 0x11, 0xeb, 0xa3, 0xf6, - 0xbe, 0xf0, 0xd7, 0x7d, 0x23, 0x53, 0x1f, 0xf7, 0xef, 0xff, - 00, 0x8a, 0xa7, 0xaf, 0xed, 0x79, 0xe1, 0x72, 0x39, 0xd2, - 0xf5, 0x31, 0xff, 00, 0x1, 0x4f, 0xfe, 0x2a, 0xbc, 0x61, - 0xff, 00, 0x66, 0xcf, 0x1a, 0xa6, 0x71, 0xa7, 0x86, 0xc7, - 0xa3, 0x8a, 0x85, 0xff, 00, 0x67, 0x5f, 0x1b, 0xa0, 0xcf, - 0xf6, 0x53, 0x1f, 0xa3, 0xa, 0x3f, 0xb4, 0x33, 0x65, 0xf6, - 0x5f, 0xfe, 0x3, 0xff, 00, 00, 0x5f, 0x5e, 0xce, 0x56, - 0xf4, 0xff, 00, 0x3, 0xdc, 0x47, 0xed, 0x71, 0xe1, 0x42, - 0x46, 0x74, 0xfd, 0x4c, 0xf, 0xf7, 0x13, 0xff, 00, 0x8a, - 0xa9, 0xe3, 0xfd, 0xac, 0xfc, 0x1e, 0xc4, 0xee, 0xb6, 0xd4, - 0x90, 0x7f, 0xd7, 0x15, 0x3f, 0xfb, 0x35, 0x78, 0x3, 0x7e, - 0xcf, 0xfe, 0x36, 0x52, 0x47, 0xf6, 0x3c, 0x9f, 0x81, 0x15, - 0xb, 0xfc, 0x9, 0xf1, 0xa2, 0xc, 0xff, 00, 0x63, 0x4c, - 0x7e, 0x98, 0xa5, 0xfd, 0xa7, 0x9a, 0x2d, 0xe2, 0xff, 00, - 0xf0, 0x16, 0x1f, 0xda, 0x39, 0xba, 0xde, 0x9f, 0xe0, 0x7d, - 0x19, 0x1f, 0xed, 0x59, 0xe0, 0x97, 0x5c, 0xb7, 0xf6, 0x8a, - 0x1f, 0x43, 0x6c, 0xf, 0xfe, 0xcd, 0x53, 0xaf, 0xed, 0x4b, - 0xe0, 0x43, 0x8c, 0xdc, 0x5e, 0x8f, 0xad, 0xab, 0x71, 0x5f, - 0x33, 0xb7, 0xc1, 0x2f, 0x19, 0x29, 0xff, 00, 0x90, 0x2d, - 0xc7, 0xe5, 0x50, 0x37, 0xc1, 0xcf, 0x18, 0x20, 0xc9, 0xd1, - 0x2e, 0x71, 0xec, 0xb5, 0x5f, 0xda, 0xf9, 0x92, 0xde, 0x1f, - 0xf9, 0x2b, 0xf, 0xed, 0x5c, 0xd5, 0x6f, 0x4b, 0xf0, 0x7f, - 0xe6, 0x7d, 0x48, 0x3f, 0x69, 0xff, 00, 0x1, 0x1f, 0xf9, - 0x7f, 0xba, 0x1f, 0xf6, 0xe8, 0xff, 00, 0xe1, 0x4e, 0x1f, - 0xb4, 0xe7, 0x80, 0x4f, 0xfc, 0xc4, 0x6e, 0x7, 0xd6, 0xd1, - 0xff, 00, 0xc2, 0xbe, 0x54, 0x7f, 0x84, 0xde, 0x2d, 0x8f, - 0xae, 0x87, 0x77, 0xf8, 0x25, 0x40, 0xdf, 0xc, 0xfc, 0x50, - 0xa0, 0x93, 0xa3, 0x5d, 0xf1, 0xff, 00, 0x4c, 0xcd, 0x27, - 0x9d, 0x66, 0xb, 0xec, 0x2f, 0xfc, 0x5, 0xff, 00, 0x98, - 0xbf, 0xb6, 0x33, 0x35, 0xbd, 0x2f, 0xc1, 0xff, 00, 0x99, - 0xf5, 0xa8, 0xfd, 0xa5, 0xfc, 0x2, 0x46, 0x7f, 0xb5, 0x26, - 0x1f, 0x5b, 0x57, 0xff, 00, 0xa, 0x9d, 0x3f, 0x68, 0xdf, - 00, 0xb9, 0xc7, 0xf6, 0xd1, 0x5f, 0x76, 0xb7, 0x93, 0xff, - 00, 0x89, 0xaf, 0x8f, 0x9b, 0xe1, 0xe7, 0x89, 0x13, 0x19, - 0xd2, 0x2e, 0xc6, 0x7f, 0xe9, 0x99, 0xa8, 0xdb, 0xc0, 0xbe, - 0x20, 0x4c, 0xe7, 0x4a, 0xbb, 0x18, 0xeb, 0xfb, 0xb3, 0x4b, - 0xfb, 0x73, 0x1c, 0xb7, 0x82, 0xfb, 0x9f, 0xf9, 0x87, 0xf6, - 0xd6, 0x60, 0xb7, 0xa5, 0xf8, 0x3f, 0xf3, 0x3e, 0xcc, 0x8f, - 0xf6, 0x84, 0xf0, 0xc, 0x99, 0xff, 00, 0x89, 0xfc, 0x6b, - 0x8f, 0xef, 0x43, 0x20, 0xff, 00, 0xd9, 0x6a, 0x75, 0xf8, - 0xf1, 0xe0, 0x26, 0x50, 0x47, 0x88, 0xed, 0xb9, 0xf5, 0x57, - 0x1f, 0xd2, 0xbe, 0x27, 0x6f, 0x7, 0x6b, 0x8b, 0xd7, 0x4c, - 0xba, 0x1f, 0xf6, 0xcc, 0xd4, 0x6d, 0xe1, 0x6d, 0x65, 0x9, - 0x7, 0x4e, 0xba, 0x18, 0xff, 00, 0xa6, 0x66, 0x9f, 0xf6, - 0xfe, 0x2d, 0x6f, 0x5, 0xf7, 0x3f, 0xf3, 0x1f, 0xf6, 0xee, - 0x35, 0x6f, 0x47, 0xf0, 0x67, 0xdc, 0x23, 0xe3, 0x87, 0x81, - 0xf, 0xfc, 0xcc, 0xd6, 0x5f, 0x99, 0xff, 00, 0xa, 0x92, - 0x3f, 0x8d, 0x3e, 0x7, 0x90, 0x90, 0xbe, 0x26, 0xb0, 0xe3, - 0xd6, 0x4c, 0x7f, 0x4a, 0xf8, 0x54, 0xe8, 0x1a, 0xa2, 0x8c, - 0x9b, 0x1b, 0x80, 0x3f, 0xeb, 0x99, 0xa6, 0x1d, 0x1b, 0x51, - 0x5e, 0xb6, 0x93, 0x8f, 0xf8, 0x1, 0xa7, 0xfe, 0xb0, 0xe2, - 0x7f, 0x92, 0x3f, 0x8f, 0xf9, 0x87, 0xf6, 0xfe, 0x2f, 0xad, - 0x1f, 0xcc, 0xfb, 0xc9, 0x7e, 0x2f, 0x78, 0x2d, 0x86, 0x47, - 0x89, 0x74, 0xec, 0x7f, 0xd7, 0x61, 0x53, 0x47, 0xf1, 0x4f, - 0xc2, 0x12, 0x90, 0x17, 0xc4, 0x7a, 0x71, 0x27, 0xa7, 0xfa, - 0x42, 0xd7, 0xc0, 0xa7, 0x4b, 0xbe, 0x1d, 0x6d, 0xa5, 0x1f, - 0xf0, 0x3, 0x4d, 0x3a, 0x7d, 0xe2, 0xf5, 0xb7, 0x97, 0xfe, - 0xf8, 0x34, 0x7f, 0xac, 0x55, 0xfa, 0xc2, 0x3f, 0x88, 0xff, - 00, 0xd6, 0x1c, 0x42, 0xde, 0x8f, 0xe6, 0x7e, 0x82, 0xc3, - 0xf1, 0xb, 0xc3, 0x17, 0xd, 0xb6, 0x3f, 0x10, 0x69, 0xac, - 0x7a, 0xe3, 0xed, 0x28, 0x3f, 0xad, 0x5a, 0x4f, 0x17, 0xe8, - 0x52, 0x2e, 0x53, 0x59, 0xb0, 0x61, 0xea, 0x2e, 0x50, 0xff, - 00, 0x5a, 0xfc, 0xee, 0x36, 0xb7, 0x23, 0xac, 0x2e, 0x3f, - 0xe0, 0x26, 0x9a, 0x61, 0x98, 0x7f, 0xcb, 0x36, 0xfc, 0xaa, - 0xd7, 0x12, 0x54, 0xeb, 0x4d, 0x7d, 0xe5, 0x2e, 0x23, 0xab, - 0xd6, 0x8f, 0xe3, 0xff, 00, 00, 0xfd, 0x1c, 0x1a, 0xee, - 0x9a, 0x71, 0x8d, 0x42, 0xd4, 0xe7, 0xfe, 0x9b, 0x2f, 0xf8, - 0xd3, 0x86, 0xb3, 0xa7, 0x9e, 0x97, 0xd6, 0xc7, 0xfe, 0xdb, - 0x2f, 0xf8, 0xd7, 0xe7, 0x6, 0xc9, 0x47, 0xf0, 0x37, 0xe5, - 0x47, 0xef, 0x57, 0xb3, 0xa, 0xd3, 0xfd, 0x64, 0x97, 0xfc, - 0xfa, 0x5f, 0x7f, 0xfc, 0x1, 0xff, 00, 0xac, 0x92, 0xff, - 00, 0x9f, 0x3f, 0x8f, 0xfc, 0x3, 0xf4, 0x84, 0x6a, 0xb6, - 0x47, 0xa5, 0xe4, 0x7, 0xe9, 0x2a, 0xff, 00, 0x8d, 0x38, - 0x6a, 0x16, 0xad, 0x8c, 0x5c, 0xc2, 0x73, 0xe9, 0x20, 0xaf, - 0xcd, 0xc1, 0x24, 0xc3, 0xa1, 0x61, 0xf9, 0xd3, 0x85, 0xcd, - 0xc2, 0xf4, 0x77, 0x18, 0xff, 00, 0x68, 0xd3, 0x5c, 0x48, - 0xff, 00, 0xe7, 0xd7, 0xe3, 0xff, 00, 00, 0x7f, 0xeb, - 0x2f, 0x7a, 0x5f, 0x8f, 0xfc, 0x3, 0xf4, 0x95, 0x67, 0x8d, - 0xce, 0x16, 0x44, 0x63, 0xe8, 0x18, 0x1a, 0x7e, 0x47, 0xad, - 0x7e, 0x6d, 0xae, 0xa7, 0x7a, 0x87, 0x2b, 0x73, 0x32, 0x9f, - 0x51, 0x21, 0x1f, 0xd6, 0xa4, 0x1a, 0xe6, 0xa2, 0xbd, 0x2f, - 0x6e, 0x47, 0xd2, 0x66, 0xff, 00, 0x1a, 0xa5, 0xc4, 0x9d, - 0xe9, 0x7e, 0x3f, 0xf0, 0xa, 0xff, 00, 0x59, 0x63, 0xff, - 00, 0x3e, 0xbf, 0x1f, 0xf8, 0x7, 0xe9, 0x6, 0x45, 0x19, - 0xaf, 0xce, 0x31, 0xe2, 0x4d, 0x58, 0xc, 0xd, 0x4a, 0xf0, - 0xf, 0x69, 0xdf, 0xfc, 0x69, 0xc3, 0xc5, 0x3a, 0xc8, 0x3c, - 0x6a, 0x97, 0xc0, 0xff, 00, 0xd7, 0xc3, 0xff, 00, 0x8d, - 0x5f, 0xfa, 0xc7, 0x1f, 0xf9, 0xf5, 0xf8, 0xff, 00, 0xc0, - 0x1f, 0xfa, 0xcb, 0x4f, 0xfe, 0x7d, 0x3f, 0xbf, 0xfe, 0x1, - 0xfa, 0x35, 0x9a, 0x5a, 0xfc, 0xe8, 0x5f, 0x18, 0xeb, 0xb1, - 0xe4, 0x2e, 0xb1, 0x7e, 0xb9, 0xeb, 0x8b, 0x97, 0xe7, 0xf5, - 0xa9, 0x53, 0xc7, 0x7e, 0x22, 0x89, 0x76, 0xae, 0xb9, 0xa9, - 0x28, 0xf4, 0x17, 0x6f, 0xfe, 0x34, 0x7f, 0xac, 0x71, 0xff, - 00, 0x9f, 0x5f, 0x8f, 0xfc, 0x2, 0x97, 0x12, 0xd2, 0xeb, - 0x4d, 0xfd, 0xe7, 0xe8, 0x95, 0x15, 0xf9, 0xe8, 0x9f, 0x12, - 0xbc, 0x55, 0x19, 0x5, 0x7c, 0x43, 0xaa, 0x2, 0x3a, 0x7f, - 0xa5, 0xbf, 0xf8, 0xd4, 0xf1, 0xfc, 0x57, 0xf1, 0x84, 0x59, - 0xdb, 0xe2, 0x5d, 0x50, 0x67, 0xfe, 0x9e, 0x9f, 0xfc, 0x6a, - 0xd7, 0x11, 0xd3, 0xeb, 0x4d, 0xfd, 0xe8, 0xb5, 0xc4, 0x94, - 0x3a, 0xc1, 0xfe, 0x7, 0xe8, 0x25, 0x15, 0xf0, 00, 0xf8, - 0xc3, 0xe3, 0x40, 0x38, 0xf1, 0x3e, 0xa9, 0xff, 00, 0x81, - 0xd, 0x4f, 0x1f, 0x19, 0xbc, 0x6c, 0xe, 0x7f, 0xe1, 0x26, - 0xd4, 0x7f, 0xef, 0xf1, 0xaa, 0xff, 00, 0x58, 0xa8, 0xff, - 00, 0xcf, 0xb7, 0xf8, 0xf, 0xfd, 0x64, 0xc3, 0xff, 00, - 0x23, 0xfc, 0xf, 0xbf, 0x28, 0xaf, 0x82, 0x57, 0xe3, 0x8f, - 0x8e, 0x54, 0xe4, 0x78, 0x92, 0xf8, 0xfd, 0x5c, 0x7f, 0x85, - 0x4a, 0x9f, 0x1e, 0x3c, 0x74, 0x99, 0xc7, 0x88, 0xae, 0xcf, - 0xd7, 0x7, 0xfa, 0x53, 0xff, 00, 0x58, 0xa8, 0x7f, 0xcf, - 0xb9, 0x7e, 0x1f, 0xe6, 0x5a, 0xe2, 0x3c, 0x2f, 0xf2, 0xbf, - 0xc3, 0xfc, 0xcf, 0xbc, 0x68, 0xaf, 0x86, 0x23, 0xfd, 0xa1, - 0xfc, 0x7b, 0x18, 0x51, 0xfd, 0xbd, 0x23, 0x6d, 0xfe, 0xf4, - 0x48, 0x73, 0xf5, 0xe2, 0xac, 0xc7, 0xfb, 0x4a, 0xf8, 0xf6, - 0x37, 0xdd, 0xfd, 0xae, 0x8d, 0xec, 0xd6, 0xd1, 0x91, 0xfc, - 0xaa, 0xd7, 0x10, 0xe1, 0xba, 0xc2, 0x5f, 0x87, 0xf9, 0x96, - 0xb8, 0x8b, 0x9, 0xd9, 0xfd, 0xcb, 0xfc, 0xcf, 0xb7, 0xa8, - 0xaf, 0x8a, 0x17, 0xf6, 0x9f, 0xf1, 0xe8, 0x1c, 0xea, 0x36, - 0xed, 0xf5, 0xb4, 0x4f, 0xf0, 0xa7, 0x8f, 0xda, 0x8b, 0xc7, - 0x7f, 0xf3, 0xfb, 0x69, 0xff, 00, 0x80, 0xab, 0x57, 0xfe, - 0xb0, 0x61, 0x7b, 0x4b, 0xee, 0x5f, 0xe6, 0x57, 0xfa, 0xc3, - 0x83, 0xf3, 0xfb, 0xbf, 0xe0, 0x9f, 0x6a, 0x51, 0x5f, 0x17, - 0xaf, 0xed, 0x4f, 0xe3, 0x90, 0x46, 0x6e, 0x2c, 0xdb, 0xd8, - 0xdb, 0xa, 0x9e, 0x2f, 0xda, 0xb7, 0xc6, 0xb1, 0xb1, 0x2c, - 0x74, 0xf9, 0x6, 0x3a, 0x35, 0xb9, 0xfe, 0x86, 0x9f, 0xfa, - 0xc1, 0x84, 0xed, 0x2f, 0xbb, 0xfe, 0x9, 0x4b, 0x88, 0x30, - 0x5d, 0xdf, 0xdc, 0x7d, 0x93, 0x45, 0x7c, 0x7e, 0xbf, 0xb5, - 0xbf, 0x8b, 0x82, 0x80, 0x6d, 0x34, 0xb6, 0x3e, 0xbe, 0x4b, - 0xff, 00, 0xf1, 0x55, 0x3a, 0x7e, 0xd7, 0x9e, 0x29, 0xc, - 0xb, 0x69, 0xba, 0x5b, 0xe, 0xe3, 0x63, 0x8f, 0xfd, 0x9a, - 0xad, 0x67, 0xd8, 0x3f, 0x3f, 0xb8, 0xb5, 0x9f, 0x60, 0x7f, - 0x99, 0xfd, 0xc7, 0xd7, 0x34, 0x57, 0xc9, 0xab, 0xfb, 0x60, - 0xf8, 0x88, 0x67, 0x76, 0x8d, 0xa6, 0x1f, 0xa1, 0x90, 0x7f, - 0xec, 0xd4, 0xf1, 0xfb, 0x61, 0xeb, 0xdd, 0xf4, 0x3d, 0x37, - 0xfe, 0xfa, 0x93, 0xfc, 0x6a, 0xbf, 0xb7, 0x70, 0x5f, 0xcc, - 0xfe, 0xe6, 0x57, 0xf6, 0xee, 0x7, 0xf9, 0x9f, 0xdc, 0xcf, - 0xab, 0xe8, 0xaf, 0x94, 0xd7, 0xf6, 0xc4, 0xd6, 0xf8, 0xce, - 0x85, 0xa7, 0x9f, 0xa4, 0x8f, 0xfe, 0x35, 0x22, 0xfe, 0xd8, - 0x9a, 0xb6, 0x79, 0xd0, 0x2c, 0x88, 0xf6, 0x99, 0xe9, 0xff, - 00, 0x6e, 0x60, 0xbf, 0x99, 0xfd, 0xcc, 0x7f, 0xdb, 0x98, - 0x1f, 0xe7, 0xfc, 0x19, 0xf5, 0x45, 0x15, 0xf2, 0xf4, 0x7f, - 0xb6, 0x35, 0xe8, 0x5f, 0x9f, 0xc3, 0x76, 0xe5, 0xbd, 0x56, - 0xe9, 0x80, 0xff, 00, 0xd0, 0x6a, 0x65, 0xfd, 0xb2, 0x26, - 0xe3, 0x3e, 0x18, 0x8f, 0xdf, 0x17, 0x87, 0xff, 00, 0x88, - 0xaa, 0x59, 0xde, 0x7, 0xf9, 0xff, 00, 0x7, 0xfe, 0x45, - 0x2c, 0xeb, 0x2, 0xff, 00, 0xe5, 0xe7, 0xe0, 0xff, 00, - 0xc8, 0xfa, 0x6e, 0x8a, 0xf9, 0xba, 0x3f, 0xdb, 0x22, 0xc, - 0xfc, 0xfe, 0x17, 0x90, 0xf, 0xf6, 0x6f, 0x47, 0xff, 00, - 0x11, 0x5b, 0xda, 0x47, 0xed, 0x6f, 0xe1, 0x6b, 0xb8, 0xd7, - 0xed, 0xf6, 0x37, 0xf6, 0x12, 0x13, 0x82, 0x15, 0x56, 0x55, - 0x3, 0xd7, 0x20, 0x83, 0xfa, 0x56, 0xb0, 0xcd, 0xf0, 0x33, - 0x76, 0x55, 0x3f, 0x35, 0xf9, 0xa3, 0x58, 0x66, 0xd8, 0x29, - 0xbb, 0x2a, 0x8b, 0xf1, 0x5f, 0x99, 0xee, 0x74, 0x57, 0x31, - 0xe1, 0xaf, 0x89, 0x9e, 0x17, 0xf1, 0x7b, 0x4, 0xd2, 0x75, - 0xbb, 0x4b, 0xb9, 0x8f, 0x3e, 0x4e, 0xfd, 0xb2, 0x7f, 0xdf, - 0x2d, 0x83, 0xfa, 0x57, 0x4f, 0x5e, 0xac, 0x2a, 0x42, 0xa2, - 0xe6, 0x83, 0xba, 0xf2, 0x3d, 0x48, 0x4e, 0x15, 0x17, 0x34, - 0x1d, 0xd7, 0x90, 0x51, 0x45, 0x15, 0x65, 0x85, 0x14, 0x51, - 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, - 0x14, 0x51, 0x40, 0x5, 0x70, 0x7f, 0x18, 0x7e, 0x28, 0xdb, - 0x7c, 0x2f, 0xf0, 0xc3, 0xdd, 0xfe, 0xee, 0x7d, 0x4e, 0x73, - 0xe5, 0xda, 0x5a, 0xbb, 0x63, 0x7b, 0x77, 0x62, 0x3a, 0xed, - 0x1d, 0x4f, 0xe0, 0x3b, 0xd7, 0x75, 0x24, 0x8b, 0x12, 0x33, - 0xbb, 0x5, 0x45, 0x4, 0x96, 0x3d, 00, 0xaf, 0x82, 0x7e, - 0x32, 0x7c, 0x40, 0x7f, 0x88, 0xde, 0x3a, 0xbd, 0xbf, 0x57, - 0x26, 0xc2, 0x13, 0xf6, 0x7b, 0x34, 0xcf, 0x2, 0x35, 0x3d, - 0x7f, 0xe0, 0x47, 0x27, 0xf1, 0xaf, 0x17, 0x35, 0xc6, 0xbc, - 0x1d, 0xf, 0x73, 0xe2, 0x96, 0x8b, 0xfc, 0xcf, 0xf, 0x37, - 0xc7, 0xfd, 0x46, 0x87, 0xb9, 0xf1, 0xcb, 0x45, 0xfe, 0x7f, - 0x23, 0xa3, 0xf8, 0x39, 0xa7, 0xea, 0x1f, 0x13, 0x7e, 0x2a, - 0xc5, 0xa9, 0x6a, 0x92, 0xbd, 0xe3, 0xac, 0x86, 0xe2, 0x79, - 0x24, 0x39, 0xfa, 0xf, 0x61, 0xe8, 0x2b, 0xed, 0x40, 0x2, - 0x80, 0x7, 00, 0x57, 0x83, 0xfe, 0xca, 0x7e, 0x10, 0xfe, - 0xcc, 0xf0, 0xd5, 0xce, 0xb1, 0x34, 0x78, 0x9a, 0xe9, 0xf6, - 0xa1, 0x23, 0xf8, 0x45, 0x7b, 0xcd, 0x63, 0x92, 0x50, 0x74, - 0xb0, 0xbe, 0xd2, 0x5b, 0xcd, 0xdf, 0xfc, 0x83, 0x27, 0xa0, - 0xe9, 0x61, 0x54, 0xa7, 0xf1, 0x4b, 0x56, 0x14, 0x51, 0x45, - 0x7d, 0x1, 0xee, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x84, - 0x64, 0x70, 0x71, 0xef, 0x40, 0x18, 0x1c, 0x92, 0x7e, 0xb4, - 00, 0xb4, 0x53, 0x2, 0xed, 0x39, 0xde, 0x48, 0xf4, 0x3d, - 0x29, 0xc0, 0x83, 0xd0, 0xe6, 0x80, 0x16, 0x8a, 0x28, 0xa0, - 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, - 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, - 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, - 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x93, 0x2, 0x96, - 0x8a, 00, 0x4c, 0xf, 0x4a, 0x4d, 0x8a, 0x7b, 0xf, 0xca, - 0x9d, 0x45, 00, 0x37, 0xca, 0x43, 0xfc, 0xb, 0xf9, 0x53, - 0x4c, 0x11, 0x1e, 0xb1, 0xa7, 0xfd, 0xf2, 0x2a, 0x4a, 0x29, - 0x58, 0x8, 0xbe, 0xcb, 0xf, 0xfc, 0xf1, 0x8f, 0xfe, 0xf9, - 0x14, 0xd3, 0x65, 0x6e, 0x7a, 0xc1, 0x17, 0xfd, 0xf0, 0x2a, - 0x7a, 0x28, 0xb2, 0x15, 0x91, 0x59, 0xb4, 0xeb, 0x46, 0xeb, - 0x6b, 0x9, 0xfa, 0xc6, 0x29, 0x87, 0x47, 0xb1, 0x6e, 0xb6, - 0x70, 0x1f, 0xac, 0x63, 0xfc, 0x2a, 0xe5, 0x14, 0xb9, 0x63, - 0xd8, 0x2c, 0xbb, 0x19, 0xe7, 0x40, 0xd3, 0x1b, 0xad, 0x85, - 0xb1, 0xff, 00, 0xb6, 0x4b, 0xfe, 0x14, 0xc6, 0xf0, 0xce, - 0x92, 0xdd, 0x74, 0xdb, 0x53, 0xff, 00, 0x6c, 0x85, 0x69, - 0xd1, 0x4b, 0xd9, 0xc3, 0xb2, 0x17, 0x2c, 0x7b, 0x19, 0x7, - 0xc2, 0x3a, 0x2b, 0x75, 0xd2, 0xed, 0x4f, 0xfd, 0xb2, 0x15, - 0x1b, 0x78, 0x2b, 0x41, 0x73, 0x93, 0xa4, 0x59, 0x93, 0xef, - 0xa, 0xd6, 0xdd, 0x15, 0x3e, 0xca, 0x9b, 0xfb, 0x2b, 0xee, - 0x17, 0x24, 0x3b, 0x1c, 0xf3, 0x7c, 0x3f, 0xf0, 0xe3, 0x75, - 0xd1, 0xed, 0x3f, 0xef, 0xd0, 0xa8, 0x9b, 0xe1, 0xaf, 0x86, - 0x1f, 0xae, 0x8b, 0x69, 0xff, 00, 0x7e, 0xc5, 0x74, 0xd4, - 0x54, 0xfd, 0x5e, 0x8b, 0xfb, 0xb, 0xee, 0x44, 0xfb, 0x2a, - 0x6f, 0xec, 0xaf, 0xb8, 0xe4, 0xdf, 0xe1, 0x5f, 0x85, 0x5f, - 0x39, 0xd1, 0x6d, 0xb9, 0xff, 00, 0x60, 0x54, 0x2d, 0xf0, - 0x87, 0xc2, 0x4f, 0xd7, 0x45, 0xb7, 0xff, 00, 0xbe, 0x6b, - 0xb2, 0xa2, 0xa3, 0xea, 0xb4, 0x1f, 0xd8, 0x5f, 0x72, 0x17, - 0xb0, 0xa5, 0xfc, 0xab, 0xee, 0x38, 0x76, 0xf8, 0x2f, 0xe0, - 0xf7, 0xeb, 0xa3, 0x41, 0xf9, 0x54, 0x2f, 0xf0, 0x2f, 0xc1, - 0x8f, 0xff, 00, 0x30, 0x78, 0xc7, 0xd2, 0xbb, 0xea, 0x2a, - 0x5e, 0xb, 0xc, 0xf7, 0xa6, 0xbe, 0xe4, 0x4f, 0xd5, 0xa8, - 0xbf, 0xb0, 0xbe, 0xe3, 0xce, 0x9f, 0xe0, 0x17, 0x83, 0x1f, - 0xfe, 0x61, 0x6a, 0x3e, 0x86, 0xa0, 0x7f, 0xd9, 0xe3, 0xc1, - 0x8f, 0xff, 00, 0x2e, 0x4, 0x7d, 0xd, 0x7a, 0x65, 0x15, - 0xf, 0x1, 0x84, 0x7f, 0xf2, 0xe9, 0x7d, 0xc8, 0x9f, 0xaa, - 0x50, 0x7f, 0x61, 0x7d, 0xc7, 0x96, 0xbf, 0xec, 0xe1, 0xe0, - 0xd7, 0xff, 00, 0x97, 0x37, 0x1f, 0xf0, 0x2a, 0x81, 0xff, - 00, 0x66, 0x7f, 0x7, 0x37, 0xfc, 0xb0, 0x94, 0x7d, 0x1a, - 0xbd, 0x66, 0x8a, 0x9f, 0xec, 0xdc, 0x1b, 0xff, 00, 0x97, - 0x4b, 0xee, 0x23, 0xea, 0x58, 0x67, 0xff, 00, 0x2e, 0xd7, - 0xdc, 0x79, 0x3, 0xfe, 0xcb, 0xfe, 0xf, 0x7f, 0xe0, 0xb8, - 0x5f, 0xa3, 0xd4, 0xd, 0xfb, 0x2c, 0x78, 0x4c, 0xf4, 0x7b, - 0x81, 0xf8, 0x8a, 0xf6, 0x6a, 0x2a, 0x1e, 0x57, 0x82, 0x7f, - 0xf2, 0xe9, 0x12, 0xf0, 0x18, 0x57, 0xff, 00, 0x2e, 0xd7, - 0xdc, 0x78, 0x9b, 0xfe, 0xca, 0x7e, 0x16, 0x6e, 0x97, 0x17, - 0x23, 0xf1, 0x15, 0xb, 0xfe, 0xc9, 0xbe, 0x1b, 0x6f, 0xbb, - 0x79, 0x72, 0x3f, 0x2a, 0xf7, 0x2a, 0x2a, 0x7f, 0xb2, 0x70, - 0x3f, 0xf3, 0xe9, 0x12, 0xf2, 0xec, 0x23, 0xff, 00, 0x97, - 0x68, 0xf0, 0x76, 0xfd, 0x92, 0x74, 0x3, 0xd3, 0x50, 0xb9, - 0x1f, 0x80, 0xa8, 0x5b, 0xf6, 0x45, 0xd1, 0xf, 0x4d, 0x52, - 0xe0, 0x7f, 0xc0, 0x45, 0x7b, 0xf5, 0x15, 0x3f, 0xd9, 0x18, - 0x1f, 0xf9, 0xf7, 0xf9, 0x90, 0xf2, 0xbc, 0x1b, 0xff, 00, - 0x97, 0x68, 0xf9, 0xe9, 0xff, 00, 0x64, 0x2d, 0x2c, 0xfd, - 0xdd, 0x62, 0x7f, 0xc5, 0x5, 0x40, 0xff, 00, 0xb2, 0x5, - 0x97, 0xf0, 0xeb, 0x12, 0x7e, 0x28, 0x2b, 0xe8, 0xca, 0x2a, - 0x3f, 0xb1, 0xb0, 0x3f, 0xf3, 0xef, 0xf1, 0x7f, 0xe6, 0x4b, - 0xca, 0x70, 0x4f, 0xfe, 0x5d, 0xa3, 0xe6, 0xd6, 0xfd, 0x90, - 0x21, 0xfe, 0x1d, 0x65, 0xbf, 0x14, 0xa8, 0x5f, 0xf6, 0x40, - 0x3f, 0xc3, 0xac, 0x7e, 0x69, 0x5f, 0x4c, 0x51, 0x53, 0xfd, - 0x89, 0x81, 0xfe, 0x4f, 0xc5, 0x91, 0xfd, 0x91, 0x82, 0xff, - 00, 0x9f, 0x67, 0xcc, 0xf, 0xfb, 0x20, 0x4f, 0xfc, 0x3a, - 0xba, 0xfe, 0x2b, 0x50, 0xbf, 0xec, 0x83, 0x7e, 0x3e, 0xee, - 0xaf, 0x11, 0xfa, 0xad, 0x7d, 0x4b, 0x45, 0x4f, 0xf6, 0x1e, - 0x7, 0xf9, 0x5f, 0xde, 0xc9, 0x79, 0x36, 0x5, 0xfd, 0x83, - 0xe5, 0x37, 0xfd, 0x91, 0x35, 0x51, 0xd3, 0x53, 0x84, 0xfe, - 0x15, 0x3, 0xfe, 0xc9, 0x1a, 0xd8, 0xe9, 0x7d, 0xb, 0x57, - 0xd6, 0x74, 0x54, 0xbc, 0x87, 0x5, 0xd9, 0xfd, 0xec, 0x87, - 0x92, 0x60, 0x7f, 0x93, 0xf1, 0x3e, 0x46, 0x7f, 0xd9, 0x33, - 0xc4, 0x23, 0xa5, 0xd4, 0x7, 0xf1, 0xa8, 0x1f, 0xf6, 0x51, - 0xf1, 0x28, 0xfb, 0xb2, 0xc2, 0x7f, 0x1a, 0xfb, 0x2, 0x8a, - 0x8f, 0xec, 0xc, 0x1f, 0x9f, 0xde, 0x4f, 0xf6, 0x16, 0xb, - 0xf9, 0x7f, 0x13, 0xe3, 0x87, 0xfd, 0x95, 0x7c, 0x54, 0x3e, - 0xe9, 0x85, 0xbf, 0xe0, 0x42, 0xa1, 0x7f, 0xd9, 0x6f, 0xc5, - 0xeb, 0xd2, 0x38, 0x8f, 0xd1, 0xc5, 0x7d, 0x9b, 0x45, 0x4f, - 0xfa, 0xbf, 0x84, 0xee, 0xfe, 0xff, 00, 0xf8, 0x4, 0xff, - 00, 0x60, 0xe0, 0xbb, 0x3f, 0xbc, 0xf8, 0xad, 0xff, 00, - 0x66, 0x3f, 0x18, 0xaf, 0x4b, 0x64, 0x3f, 0xf0, 0x31, 0x50, - 0xbf, 0xec, 0xd7, 0xe3, 0x35, 0xff, 00, 0x97, 0x20, 0x7f, - 0xe0, 0x42, 0xbe, 0xda, 0xa2, 0xa7, 0xfd, 0x5e, 0xc3, 0x7f, - 0x34, 0xbf, 0xf, 0xf2, 0x23, 0xfd, 0x5f, 0xc1, 0xf9, 0xfd, - 0xe7, 0xc3, 0xcd, 0xfb, 0x39, 0xf8, 0xd1, 0x7f, 0xe6, 0x1a, - 0x4f, 0xfc, 0x8, 0x54, 0x2f, 0xfb, 0x3d, 0xf8, 0xd1, 0x7f, - 0xe6, 0x14, 0xe7, 0xf1, 0x15, 0xf7, 0x3d, 0x15, 0x3f, 0xea, - 0xee, 0x1f, 0xf9, 0xe5, 0xf8, 0x7f, 0x91, 0x3f, 0xea, 0xf6, - 0x13, 0xcf, 0xef, 0x3e, 0x12, 0x3f, 0x1, 0xbc, 0x6d, 0xb, - 0x6, 0x5d, 0x22, 0x60, 0xc3, 0xa3, 0x29, 0xc1, 0x15, 0xde, - 0x78, 0x43, 0xc6, 0xbf, 0x14, 0xfe, 0x15, 0x6c, 0x5d, 0x57, - 0x4c, 0xbc, 0xd7, 0x34, 0x55, 0xfb, 0xf0, 0x5d, 0x12, 0xd2, - 0xa2, 0xff, 00, 0xb1, 0x27, 0x5f, 0xc0, 0xe4, 0x7d, 0x2b, - 0xeb, 0x1a, 0x82, 0xf2, 0xde, 0x2b, 0x9b, 0x69, 0x12, 0x64, - 0x59, 0x10, 0xa9, 0xc8, 0x61, 0x5a, 0xd2, 0xc9, 0x56, 0x19, - 0xf3, 0xd0, 0xab, 0x24, 0xfe, 0x45, 0x53, 0xc8, 0xe9, 0xd0, - 0x7c, 0xf8, 0x7a, 0x92, 0x8b, 0xfe, 0xb7, 0xee, 0x73, 0xbe, - 00, 0xf8, 0x91, 0xa2, 0x7c, 0x48, 0xd2, 0x8d, 0xe6, 0x91, - 0x73, 0xba, 0x58, 0xf0, 0x2e, 0x2d, 0x24, 0xf9, 0x66, 0xb7, - 0x63, 0xfc, 0x2e, 0xbd, 0xbe, 0xbd, 0xd, 0x75, 0x35, 0xf1, - 0x7, 0xc4, 0x6d, 0x72, 0xff, 00, 0xe1, 0x4f, 0xc4, 0x43, - 0xae, 0x78, 0x66, 0x63, 0x69, 0x74, 0x24, 0xfd, 0xfc, 0x20, - 0xfe, 0xee, 0xe1, 0x1, 0xc9, 0x8d, 0xc7, 0x70, 0x7f, 0x31, - 0xda, 0xbe, 0xae, 0xf8, 0x4f, 0xf1, 0x3b, 0x4d, 0xf8, 0xb7, - 0xe0, 0xcb, 0x5d, 0x7f, 0x4d, 0x47, 0x80, 0x3b, 0x34, 0x53, - 0xda, 0xca, 0x46, 0xf8, 0x25, 0x5e, 0x19, 0xf, 0xaf, 0xa8, - 0x3d, 0xc1, 0x6, 0xbd, 0xc, 0xe, 0x35, 0x62, 0x79, 0xa9, - 0xcb, 0xe2, 0x8e, 0x8c, 0xe8, 0xc0, 0x66, 0x4a, 0xbd, 0x59, - 0x61, 0x6a, 0xe9, 0x52, 0x3f, 0x73, 0x5d, 0xd7, 0xea, 0x8e, - 0xc6, 0x8a, 0x28, 0xaf, 0x54, 0xf7, 0x42, 0x8a, 0x28, 0xa0, - 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0xf, 0x37, - 0xfd, 0xa0, 0x7c, 0x6a, 0x3c, 0x17, 0xf0, 0xd7, 0x51, 0x74, - 0x72, 0x97, 0x97, 0xe3, 0xec, 0x56, 0xfb, 0x4e, 0x8, 0x67, - 0x7, 0x24, 0x7d, 0x17, 0x26, 0xbe, 0x25, 0xd0, 0xb4, 0xb9, - 0x35, 0x8d, 0x56, 0xd2, 0xca, 0x15, 0xdc, 0xf3, 0x48, 0x10, - 0x1, 0x5e, 0xd3, 0xfb, 0x5a, 0xf8, 0xcb, 0xfb, 0x5b, 0xc6, - 0x16, 0x7e, 0x1f, 0x85, 0xf3, 0x6, 0x97, 0x1f, 0x99, 0x28, - 0x7, 0x83, 0x33, 0x8c, 0xfe, 0x8b, 0x8f, 0xfb, 0xe8, 0xd6, - 0x77, 0xec, 0xc3, 0xe1, 0x1, 0xaf, 0x78, 0xd8, 0x5f, 0x4d, - 0x1e, 0xeb, 0x7b, 0x25, 0x2f, 0x93, 0xd3, 0x77, 0x6a, 0xfc, - 0xf7, 0x33, 0x93, 0xc7, 0x63, 0xd6, 0x1e, 0x3b, 0x2d, 0x3f, - 0xcc, 0xfc, 0xef, 0x1e, 0xde, 0x63, 0x9a, 0x2a, 0x11, 0xda, - 0x3a, 0x7f, 0x9f, 0xf5, 0xe4, 0x7d, 0x67, 0xe1, 0x3d, 0x12, - 0x3f, 0xe, 0xf8, 0x72, 0xc3, 0x4f, 0x8d, 0x42, 0x88, 0x22, - 0x55, 0x38, 0xf5, 0xc7, 0x35, 0xaf, 0x45, 0x15, 0xfa, 0x4, - 0x62, 0xa1, 0x15, 0x18, 0xec, 0x8f, 0xd0, 0xa2, 0x94, 0x52, - 0x48, 0x28, 0xa2, 0x8a, 0xa2, 0x82, 0x8a, 0x2b, 0xcd, 0xbf, - 0x68, 0xaf, 0x8d, 0xda, 0x47, 0xec, 0xf1, 0xf0, 0x83, 0xc4, - 0x1e, 0x39, 0xd6, 0xe, 0xe8, 0xf4, 0xf8, 0x71, 0x6d, 0x6e, - 0x3e, 0xf5, 0xc5, 0xc3, 0x7c, 0xb1, 0x44, 0x3e, 0xac, 0x46, - 0x7d, 0x6, 0x4f, 0x6a, 00, 0xe7, 0x3f, 0x69, 0x9f, 0xda, - 0xf3, 0xe1, 0xf7, 0xec, 0xaf, 0xa0, 0x47, 0x79, 0xe2, 0xcb, - 0xe7, 0x9f, 0x55, 0xba, 0x52, 0xd6, 0x3a, 0x25, 0x88, 0xf, - 0x77, 0x73, 0x8e, 0xe0, 0x67, 0xa, 0x99, 0xfe, 0x36, 0x20, - 0x7d, 0x4f, 0x15, 0xf9, 0x5d, 0xf1, 0x87, 0xfe, 0xa, 0xd5, - 0xf1, 0x9b, 0xe2, 0x5, 0xc5, 0xdd, 0xbf, 0x85, 0xe5, 0xb1, - 0xf0, 0x1e, 0x90, 0xec, 0x44, 0x4b, 0xa7, 0xc2, 0x26, 0xbb, - 0x9, 0x9e, 0x37, 0x4d, 0x26, 0x46, 0x71, 0xfd, 0xd5, 0x5a, - 0xf9, 0xb3, 0x5d, 0xd7, 0xfc, 0x7d, 0xfb, 0x57, 0x7c, 0x67, - 0x4b, 0x8b, 0xc9, 0x2e, 0x3c, 0x4b, 0xe3, 0x3f, 0x11, 0xdd, - 0xac, 0x10, 0x44, 0xf, 00, 0x93, 0xf2, 0xc6, 0x83, 0xa2, - 0x46, 0xa3, 0x3c, 0x74, 00, 0x13, 0xea, 0x6b, 0xf4, 0x67, - 0xc1, 0x1f, 0xf0, 0x48, 0xaf, 0x87, 0xff, 00, 0xf, 0x7e, - 0x1c, 0xdf, 0x78, 0x9b, 0xe2, 0xf7, 0x8b, 0x75, 0x1b, 0xeb, - 0x9d, 0x3e, 0xca, 0x4b, 0xeb, 0xe8, 0x74, 0x69, 0x56, 0xda, - 0xd6, 0xd9, 0x11, 0xb, 0xb0, 0xe, 0xca, 0x59, 0xf0, 0x1, - 0xe7, 0xe5, 0xcf, 0xa5, 0x32, 0x6e, 0xde, 0xc7, 0xe7, 0x17, - 0x88, 0x7f, 0x68, 0xbf, 0x8a, 0x7e, 0x2b, 0xb9, 0x92, 0x7d, - 0x5b, 0xe2, 0x37, 0x8a, 0x2f, 0x64, 0x90, 0xe5, 0x83, 0xea, - 0xf3, 0x85, 0x27, 0xfd, 0xd0, 0xc0, 0xf, 0xca, 0xbf, 0x5a, - 0xbf, 0xe0, 0x92, 0x3e, 0xb, 0xd6, 0xed, 0xfe, 0x3, 0xea, - 0x3e, 0x39, 0xf1, 0x6, 0xad, 0xa9, 0x6a, 0xb7, 0x9e, 0x23, - 0xbe, 0x74, 0xb3, 0x17, 0xf7, 0x52, 0x4c, 0x22, 0xb6, 0x80, - 0x94, 0x1b, 0x43, 0x13, 0x8d, 0xd2, 0x79, 0x84, 0x91, 0xd4, - 0x5, 0xaf, 0xc7, 0x4d, 0x1b, 0xc3, 0x7f, 0xf0, 0x9e, 0xfc, - 0x44, 0xb2, 0xd0, 0x7c, 0x39, 0x6f, 0x24, 0x4b, 0xac, 0x6a, - 0x89, 0x67, 0xa7, 0xc1, 0x2b, 0x6f, 0x64, 0x12, 0xca, 0x16, - 0x30, 0xcd, 0x8e, 0x70, 0x18, 0x64, 0xfb, 0x13, 0x5f, 0xd1, - 0xcf, 0x86, 0xb4, 0x4d, 0x3, 0xf6, 0x7b, 0xf8, 0x2d, 0x65, - 0xa6, 0xc6, 0x52, 0xcf, 0xc3, 0xfe, 0x13, 0xd1, 0xc0, 0x67, - 0x3c, 0x1, 0x1c, 0x31, 0xe5, 0xdc, 0xfb, 0x9c, 0x12, 0x7d, - 0xcd, 0xc, 0x48, 0xf8, 0xf, 0xc4, 0x7f, 0xf0, 0x59, 0xa9, - 0xfc, 0x25, 0xe2, 0xcd, 0x6b, 0x42, 0xd4, 0x3e, 0x14, 0xab, - 0xcd, 0xa6, 0x5e, 0xcf, 0x65, 0x24, 0x90, 0x6b, 0x7c, 0x33, - 0x47, 0x23, 0x21, 0x20, 0x18, 0x7d, 0x56, 0xbe, 0xec, 0xfd, - 0x9c, 0x3e, 0x34, 0x47, 0xfb, 0x42, 0x7c, 0x1b, 0xf0, 0xff, - 00, 0x8f, 0x62, 0xd2, 0xdf, 0x46, 0x4d, 0x59, 0x24, 0x61, - 0x64, 0xf2, 0xf9, 0xa6, 0x3d, 0xb2, 0x32, 0x7d, 0xec, 0xc, - 0xe7, 0x6e, 0x7a, 0x77, 0xaf, 0xe7, 0x2f, 0xc6, 0x7a, 0xf9, - 0xf1, 0x5f, 0x8b, 0xf5, 0xdd, 0x6d, 0x86, 0xd6, 0xd4, 0xaf, - 0xe7, 0xbd, 0x23, 0xd0, 0xc9, 0x23, 0x3f, 0xfe, 0xcd, 0x5f, - 0xd1, 0x27, 0xec, 0x91, 0xf0, 0xfe, 0x4f, 0x85, 0xff, 00, - 0xb3, 0x57, 0xc3, 0x9f, 0xd, 0xce, 0x9e, 0x5d, 0xdd, 0xae, - 0x8d, 0x3, 0xdc, 0xaf, 0xa4, 0xd2, 0x2f, 0x99, 0x27, 0xfe, - 0x3c, 0xe6, 0x81, 0xa7, 0x73, 0xd6, 0xc9, 0xc0, 0xc9, 0xe0, - 0x57, 0xce, 0xda, 0xff, 00, 0xed, 0xf, 0xae, 0x43, 0xae, - 0x5f, 0x47, 0xa6, 0xc7, 0x64, 0xda, 0x7a, 0x4a, 0xcb, 0x9, - 0x96, 0x26, 0x2c, 0x54, 0x1c, 0x64, 0x9d, 0xc3, 0xaf, 0x5f, - 0xc6, 0xbd, 0x7b, 0xe2, 0x97, 0x89, 0x47, 0x85, 0xbc, 0x11, - 0xa9, 0x5d, 0xab, 0x6d, 0x9d, 0xd3, 0xc8, 0x87, 0xfd, 0xf7, - 0xe0, 0x7e, 0x5c, 0x9f, 0xc2, 0xbe, 0x40, 0xaf, 0x86, 0xe2, - 0x2c, 0xca, 0xae, 0x1a, 0x70, 0xa3, 0x42, 0x5c, 0xaf, 0x77, - 0x6f, 0xc3, 0xf5, 0x3c, 0x9c, 0x75, 0x79, 0x53, 0x6a, 0x10, - 0x76, 0x3d, 0x5d, 0x3f, 0x69, 0xf, 0x12, 0xaf, 0xde, 0xb3, - 0xd3, 0x9b, 0xfe, 0xd9, 0xb8, 0xff, 00, 0xd9, 0xaa, 0x74, - 0xfd, 0xa5, 0x75, 0xe1, 0xf7, 0xb4, 0xdd, 0x3d, 0xbe, 0x81, - 0xc7, 0xfe, 0xcd, 0x5e, 0x43, 0x45, 0x7c, 0x82, 0xce, 0x73, - 0x5, 0xff, 00, 0x2f, 0x5f, 0xe0, 0x79, 0x9f, 0x5a, 0xad, - 0xfc, 0xc7, 0xb3, 0x47, 0xfb, 0x4c, 0xea, 0x83, 0xef, 0xe8, - 0xb6, 0x8d, 0xfe, 0xec, 0xac, 0x3f, 0xc6, 0xa7, 0x4f, 0xda, - 0x72, 0xef, 0xf8, 0xbc, 0x3f, 0x9, 0xfa, 0x5d, 0x11, 0xff, - 00, 0xb2, 0xd7, 0x89, 0x51, 0x5a, 0x2c, 0xf3, 0x31, 0x5f, - 0xf2, 0xf7, 0xf0, 0x5f, 0xe4, 0x57, 0xd7, 0x2b, 0xff, 00, - 0x31, 0xee, 0xd1, 0x7e, 0xd3, 0x83, 0xfe, 0x5a, 0x78, 0x7f, - 0x1f, 0xee, 0xdd, 0x7f, 0xf6, 0x35, 0x66, 0x3f, 0xda, 0x6e, - 0xc8, 0xfd, 0xfd, 0xa, 0x71, 0xfe, 0xec, 0xea, 0x7f, 0xa5, - 0x78, 0x5, 0x15, 0xaa, 0xe2, 0xc, 0xc5, 0x7f, 0xcb, 0xcf, - 0xc1, 0x7f, 0x91, 0x5f, 0x5d, 0xaf, 0xfc, 0xdf, 0x91, 0xf4, - 0x3c, 0x7f, 0xb4, 0xc6, 0x90, 0x7e, 0xfe, 0x91, 0x7a, 0xbf, - 0xee, 0xb2, 0x1f, 0xeb, 0x5a, 0x56, 0x7f, 0xb4, 0x5f, 0x85, - 0xee, 0x8, 0x13, 0x45, 0x7f, 0x6b, 0xee, 0xf0, 0x86, 0x1f, - 0xf8, 0xeb, 0x1a, 0xf9, 0x9a, 0x8a, 0xd6, 0x3c, 0x47, 0x8f, - 0x8e, 0xed, 0x3f, 0x97, 0xf9, 0x14, 0xb1, 0xf5, 0x97, 0x53, - 0xec, 0x4d, 0x7, 0xe2, 0x67, 0x86, 0x7c, 0x48, 0xeb, 0x1d, - 0x8e, 0xaf, 0x3, 0x4c, 0xdd, 0x22, 0x97, 0x31, 0xb9, 0xfa, - 0x6, 0xc6, 0x7f, 0xa, 0xe9, 0xeb, 0xe1, 0x4a, 0xed, 0x7c, - 0x17, 0xf1, 0x6b, 0x5f, 0xf0, 0x6c, 0xa8, 0x89, 0x72, 0xd7, - 0xd6, 00, 0xfc, 0xd6, 0x97, 0x2c, 0x59, 0x71, 0xfe, 0xc9, - 0xea, 0xbf, 0x87, 0x1e, 0xd5, 0xed, 0xe1, 0x38, 0xa1, 0x36, - 0xa3, 0x8a, 0x85, 0xbc, 0xd7, 0xf9, 0x7f, 0xc1, 0x3a, 0xe9, - 0x66, 0x37, 0x76, 0xa8, 0xbe, 0xe3, 0xeb, 0x6a, 0x2b, 0x13, - 0xc2, 0x1e, 0x2f, 0xd3, 0xfc, 0x6b, 0xa3, 0xa6, 0xa1, 0xa7, - 0xc8, 0x4a, 0x13, 0xb6, 0x48, 0xdb, 0x86, 0x8d, 0xfb, 0xa9, - 0x15, 0xb7, 0x5f, 0x75, 0x4e, 0xa4, 0x6a, 0xc5, 0x4e, 0xe, - 0xe9, 0x9e, 0xc4, 0x64, 0xa4, 0xae, 0xb6, 0xa, 0xc0, 0xf1, - 0x17, 0x8e, 0xb4, 0x2f, 0x9, 0xdc, 0x43, 0x6, 0xab, 0xa8, - 0x25, 0xa4, 0xb3, 0x29, 0x74, 0x56, 0x56, 0x39, 00, 0xe3, - 0x3c, 0x3, 0x5b, 0xf5, 0xf2, 0x87, 0xc6, 0xed, 0x74, 0x6b, - 0x9f, 0x10, 0xaf, 0xc2, 0x36, 0xe8, 0xac, 0xc2, 0xda, 0xa7, - 0xfc, 0x7, 0xef, 0x7f, 0xe3, 0xc5, 0xab, 0xc8, 0xcd, 0xf3, - 0x7, 0x97, 0x61, 0xd5, 0x48, 0x24, 0xe4, 0xdd, 0x95, 0xce, - 0x5c, 0x55, 0x77, 0x42, 0x1c, 0xcb, 0x73, 0xe8, 0x4, 0xf8, - 0xb9, 0xe0, 0xf7, 0xe9, 0xaf, 0x5b, 0xf, 0xf7, 0xb7, 0xf, - 0xe6, 0x2a, 0x74, 0xf8, 0xa1, 0xe1, 0x37, 0xe9, 0xe2, 0xb, - 0x1f, 0xc6, 0x50, 0x2b, 0xe3, 0xca, 0x2b, 0xe3, 0x97, 0x14, - 0xe2, 0x7a, 0xd3, 0x8f, 0xe3, 0xfe, 0x67, 0x97, 0xfd, 0xa3, - 0x53, 0xb2, 0x3e, 0xca, 0x8f, 0xe2, 0x17, 0x86, 0x25, 0xfb, - 0xba, 0xfe, 0x9c, 0x7f, 0xed, 0xe5, 0x3f, 0xc6, 0xad, 0x47, - 0xe3, 0xd, 0xa, 0x6f, 0xb9, 0xac, 0xd8, 0x37, 0xd2, 0xe5, - 0x3f, 0xc6, 0xbe, 0x2b, 0xa2, 0xb5, 0x5c, 0x55, 0x5b, 0xad, - 0x25, 0xf7, 0xb2, 0xbf, 0xb4, 0x67, 0xd6, 0x27, 0xdb, 0x89, - 0xaf, 0x69, 0x92, 0x7d, 0xdd, 0x46, 0xd1, 0xbe, 0x93, 0xaf, - 0xf8, 0xd4, 0xc9, 0xa9, 0x5a, 0x49, 0xf7, 0x2e, 0xa0, 0x6f, - 0xa4, 0x80, 0xff, 00, 0x5a, 0xf8, 0x76, 0x8c, 0x91, 0x5a, - 0x2e, 0x2b, 0x97, 0x5a, 0x3f, 0x8f, 0xfc, 0x2, 0xbf, 0xb4, - 0x9f, 0xf2, 0xfe, 0x27, 0xdd, 0xb, 0x2a, 0x37, 0xdd, 0x75, - 0x3f, 0x43, 0x4e, 0xdc, 0x3d, 0x45, 0x7c, 0x30, 0x25, 0x75, - 0xe8, 0xec, 0x3e, 0x86, 0xa4, 0x4b, 0xeb, 0x98, 0xfe, 0xed, - 0xc4, 0xab, 0xf4, 0x72, 0x2b, 0x45, 0xc5, 0x6b, 0xad, 0x1f, - 0xfc, 0x9b, 0xfe, 0x1, 0x5f, 0xda, 0x5f, 0xdc, 0xfc, 0x7f, - 0xe0, 0x1f, 0x72, 0x51, 0x5f, 0x10, 0xa6, 0xb9, 0xa9, 0x47, - 0xf7, 0x75, 0xb, 0xa5, 0xfa, 0x4c, 0xdf, 0xe3, 0x52, 0xaf, - 0x89, 0xb5, 0x84, 0xfb, 0xba, 0xad, 0xf2, 0xfd, 0x2e, 0x5c, - 0x7f, 0x5a, 0xd1, 0x71, 0x5d, 0x3e, 0xb4, 0x5f, 0xdf, 0xff, - 00, 00, 0x7f, 0xda, 0x4b, 0xf9, 0x7f, 0x13, 0xed, 0x9a, - 0x2b, 0xe2, 0xc4, 0xf1, 0x96, 0xbf, 0x1f, 0xdd, 0xd7, 0x35, - 0x25, 0xfa, 0x5d, 0xc9, 0xfe, 0x35, 0xda, 0x7c, 0x25, 0xf1, - 0x7, 0x88, 0x75, 0xff, 00, 0x1e, 0xe9, 0x76, 0x93, 0x6b, - 0x3a, 0x84, 0xf6, 0xc1, 0xda, 0x59, 0x52, 0x4b, 0x97, 0x65, - 0x2a, 0xaa, 0x4e, 0x8, 0x27, 0xa6, 0x70, 0x3f, 0x1a, 0xe9, - 0xa1, 0xc4, 0xb4, 0xab, 0xd5, 0x8d, 0x25, 0x49, 0xde, 0x4d, - 0x2d, 0xd7, 0x53, 0x48, 0x63, 0xe3, 0x39, 0x28, 0xa8, 0xee, - 0x7d, 0x3f, 0x45, 0x14, 0x57, 0xd9, 0x1e, 0xa8, 0x51, 0x45, - 0x14, 00, 0x51, 0x5c, 0xf7, 0x88, 0xfc, 0x7f, 0xa0, 0x78, - 0x4f, 0x8d, 0x4f, 0x52, 0x86, 0x9, 0x7f, 0xe7, 0x8a, 0xe5, - 0xe4, 0xff, 00, 0xbe, 0x57, 0x26, 0xbc, 0xef, 0x5b, 0xfd, - 0xa5, 0x74, 0xcb, 0x70, 0xcb, 0xa5, 0xe9, 0x97, 0x17, 0x6f, - 0xd9, 0xee, 0x18, 0x44, 0xbf, 0x90, 0xc9, 0xfe, 0x55, 0xe6, - 0xe2, 0x33, 0x2c, 0x26, 0x17, 0x4a, 0xb5, 0x12, 0x7d, 0xb7, - 0x7f, 0x72, 0x39, 0xe7, 0x5e, 0x95, 0x3f, 0x8a, 0x47, 0xb2, - 0xd1, 0x5f, 0x34, 0x5f, 0x7e, 0xd1, 0x9e, 0x26, 0xb8, 0x63, - 0xf6, 0x78, 0x2c, 0x2d, 0x13, 0xb6, 0x22, 0x67, 0x23, 0xf1, - 0x2d, 0x8f, 0xd2, 0xb1, 0xae, 0x3e, 0x37, 0xf8, 0xce, 0x72, - 0x7f, 0xe2, 0x6d, 0xe5, 0x3, 0xda, 0x38, 0x23, 0x18, 0xff, - 00, 0xc7, 0x6b, 0xc5, 0x9f, 0x13, 0x60, 0x63, 0xf0, 0xa9, - 0x3f, 0x97, 0xf9, 0xb4, 0x72, 0x3c, 0xc2, 0x8a, 0xda, 0xec, - 0xfa, 0xbc, 0x8c, 0xd2, 0x79, 0x63, 0xdf, 0xf3, 0x35, 0xf2, - 0x2b, 0x7c, 0x5d, 0xf1, 0x83, 0x1c, 0x9d, 0x76, 0xe4, 0x7d, - 0x2, 0x8f, 0xe9, 0x52, 0x45, 0xf1, 0x8b, 0xc6, 0x31, 0x1c, - 0x8d, 0x72, 0x63, 0xfe, 0xf4, 0x68, 0xdf, 0xcd, 0x6b, 0xf, - 0xf5, 0xa3, 0x9, 0xfc, 0x92, 0xfc, 0x3f, 0xcc, 0x9f, 0xed, - 0x1a, 0x7d, 0x99, 0xf5, 0xc5, 0x15, 0xf2, 0xb5, 0xb7, 0xc7, - 0x9f, 0x18, 0xdb, 0xfd, 0xeb, 0xf8, 0x6e, 0x3f, 0xeb, 0xad, - 0xba, 0x7f, 0x40, 0x2b, 0x7f, 0x4d, 0xfd, 0xa5, 0x75, 0xa8, - 0x58, 0xb, 0xed, 0x32, 0xce, 0xe9, 0x7b, 0xf9, 0x25, 0xa2, - 0x3f, 0xa9, 0x61, 0x5d, 0x54, 0xf8, 0x93, 0x1, 0x3f, 0x8a, - 0xeb, 0xd5, 0x7f, 0x95, 0xcd, 0x16, 0x3e, 0x8b, 0xde, 0xe8, - 0xfa, 0x2a, 0x8a, 0xf2, 0xdd, 0x17, 0xf6, 0x87, 0xf0, 0xd6, - 0xa3, 0xb5, 0x6f, 0x52, 0xeb, 0x4c, 0x90, 0xf5, 0x32, 0x26, - 0xf4, 0xfc, 0xd7, 0x27, 0xf4, 0xaf, 0x45, 0xd2, 0xb5, 0x9b, - 0x1d, 0x72, 0xd5, 0x6e, 0x74, 0xfb, 0xb8, 0x6f, 0x20, 0x6e, - 0x8f, 0xb, 0x86, 0x1f, 0x8f, 0xa5, 0x7b, 0x98, 0x7c, 0x6e, - 0x1f, 0x15, 0xfc, 0x19, 0xa9, 0x7e, 0x7f, 0x76, 0xe7, 0x64, - 0x2a, 0xd3, 0xa9, 0xf0, 0x3b, 0x97, 0x68, 0xa2, 0x8a, 0xed, - 0x35, 0xa, 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa2, 0x80, 0xa, - 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa6, 0xbc, 0x8b, 0x12, 0x96, - 0x76, 0x8, 0xa3, 0xa9, 0x63, 0x81, 0x40, 0xe, 0xa2, 0xb0, - 0xb5, 0xf, 0x1d, 0xf8, 0x77, 0x4b, 0x24, 0x5d, 0x6b, 0x56, - 0x30, 0xb0, 0xea, 0xa6, 0x75, 0x27, 0xf2, 0x7, 0x35, 0x8b, - 0x71, 0xf1, 0xa7, 0xc1, 0xb6, 0xe7, 0x7, 0x5a, 0x47, 0xff, - 00, 0xae, 0x70, 0xc8, 0xff, 00, 0xc9, 0x6b, 0x92, 0x78, - 0xbc, 0x35, 0x3d, 0x27, 0x52, 0x2b, 0xd5, 0xa3, 0x27, 0x56, - 0x9c, 0x77, 0x92, 0xfb, 0xce, 0xde, 0x98, 0x5d, 0xb3, 0xf7, - 0xf, 0xe6, 0x2b, 0x82, 0x3f, 0x1d, 0xfc, 0x18, 0xf, 0xfc, - 0x84, 0xe4, 0x3f, 0xf6, 0xed, 0x2f, 0xff, 00, 0x13, 0x4a, - 0xbf, 0x1d, 0x7c, 0x18, 0xc7, 0xfe, 0x42, 0x8e, 0x3e, 0xb6, - 0xb2, 0xff, 00, 0xf1, 0x35, 0x8f, 0xf6, 0x8e, 0xb, 0xfe, - 0x7f, 0x47, 0xff, 00, 0x2, 0x44, 0xfb, 0x7a, 0x5f, 0xce, - 0xbe, 0xf3, 0xbe, 0xc9, 0xc7, 0x4a, 0x4d, 0xc7, 0xfb, 0xa7, - 0xf4, 0xae, 0x3e, 0xdf, 0xe3, 0xf, 0x83, 0xae, 0x7e, 0xee, - 0xb9, 0x2, 0x7f, 0xd7, 0x45, 0x74, 0xfe, 0x60, 0x56, 0xcd, - 0x8f, 0x8c, 0xb4, 0x1d, 0x4f, 0x1f, 0x65, 0xd6, 0x2c, 0x67, - 0x27, 0xa0, 0x59, 0xd7, 0x3f, 0x96, 0x6b, 0x78, 0x62, 0xb0, - 0xf5, 0x3e, 0xa, 0x89, 0xfa, 0x34, 0x5a, 0xa9, 0x9, 0x6d, - 0x24, 0x6c, 0xd1, 0x4d, 0x47, 0x59, 0x17, 0x2a, 0xc1, 0x87, - 0xa8, 0x39, 0xa7, 0x57, 0x51, 0xa0, 0x51, 0x45, 0x30, 0x31, - 0xf3, 0x4a, 0x9e, 0x98, 0xc8, 0x34, 00, 0xfa, 0x28, 0xa2, - 0x80, 0xa, 0x82, 0xf5, 0xfc, 0xbb, 0x39, 0xdb, 0xd1, 0x9, - 0xfd, 0x2a, 0x7a, 0xa3, 0xad, 0xbf, 0x97, 0xa4, 0x5d, 0xb1, - 0x38, 0xc4, 0x66, 0xa6, 0x4e, 0xc9, 0xb1, 0x3d, 0x13, 0x3e, - 0x1c, 0xf8, 0xdf, 0x37, 0xda, 0x3c, 0x49, 0x28, 0xeb, 0x82, - 0x6b, 0x2f, 0xf6, 0x63, 0xf8, 0x99, 0x27, 0xc3, 0x6f, 0x8d, - 0x16, 0xba, 0x44, 0xf2, 0x95, 0xd1, 0x3c, 0x4a, 0x45, 0xa4, - 0x88, 0x71, 0x84, 0xb8, 0x19, 0xf2, 0x9f, 0xdb, 0xba, 0x9f, - 0xf7, 0x85, 0x49, 0xf1, 0x56, 0x7f, 0x3f, 0xc4, 0xd7, 0x3d, - 0xf0, 0x4d, 0x78, 0x7, 0xc5, 0x7b, 0x89, 0x2c, 0xb4, 0xe1, - 0x75, 0x6e, 0xed, 0x15, 0xcd, 0xbb, 0x9, 0xa2, 0x91, 0x4e, - 0xa, 0xba, 0x9c, 0xa9, 0x1f, 0x88, 0xaf, 0xce, 0x32, 0xfa, - 0xce, 0x38, 0xc9, 0x49, 0x77, 0x67, 0xe3, 0x98, 0xbc, 0x4c, - 0xb0, 0xd9, 0xac, 0x31, 0x11, 0xe9, 0x24, 0xbe, 0x4f, 0x46, - 0x7e, 0xc0, 0x51, 0x5c, 0x1f, 0x80, 0xfe, 0x28, 0xe9, 0x5e, - 0x21, 0xf0, 0x37, 0x87, 0x75, 0x59, 0x2e, 0xcb, 0x49, 0x7d, - 0xa7, 0x5b, 0x5c, 0xb1, 0x2a, 0x72, 0x4b, 0xc4, 0xac, 0x7f, - 0x9d, 0x15, 0xfa, 0x45, 0xcf, 0xd8, 0xee, 0x99, 0xde, 0x51, - 0x45, 0x14, 0xc6, 0x14, 0x51, 0x45, 00, 0x15, 0x53, 0x56, - 0xd4, 0xed, 0xf4, 0x5d, 0x2e, 0xee, 0xfe, 0xea, 0x41, 0x15, - 0xb5, 0xb4, 0x4d, 0x2c, 0x8e, 0x7b, 0x2a, 0x8c, 0x9a, 0xb7, - 0x5e, 0x2b, 0xfb, 0x55, 0x78, 0xc4, 0x68, 0x1f, 0xf, 0x86, - 0x93, 0x13, 0xe2, 0xeb, 0x58, 0x93, 0xca, 0xc0, 0xff, 00, - 0x9e, 0x4b, 0x86, 0x73, 0xff, 00, 0xa0, 0x8f, 0xc6, 0xb9, - 0xb1, 0x35, 0x96, 0x1e, 0x8c, 0xaa, 0xbe, 0x88, 0xe4, 0xc5, - 0xd7, 0x58, 0x5a, 0x13, 0xac, 0xfa, 0x2f, 0xf8, 0x63, 0xe4, - 0xcf, 0x12, 0xeb, 0x93, 0xf8, 0xa7, 0xc4, 0x7a, 0x8e, 0xad, - 0x71, 0x8f, 0x3e, 0xfa, 0xe1, 0xe6, 0x60, 0x3a, 0xc, 0x9e, - 00, 0xf6, 0x3, 0x2, 0xbe, 0xc2, 0xfd, 0x9b, 0x3c, 0x23, - 0xff, 00, 0x8, 0xe7, 0x80, 0xa3, 0xb9, 0x91, 0x36, 0xdc, - 0x5e, 0xb1, 0x90, 0xe4, 0x73, 0xb7, 0xb5, 0x7c, 0x91, 0xe0, - 0x6f, 0xf, 0xc9, 0xe2, 0x6f, 0x14, 0x69, 0xda, 0x7c, 0x6a, - 0x5b, 0xcd, 0x95, 0x41, 0xc7, 0xa6, 0x79, 0xaf, 0xd0, 0x8d, - 0x32, 0xc2, 0x2d, 0x2f, 0x4f, 0xb7, 0xb4, 0x85, 0x42, 0x47, - 0xa, 0x4, 0x50, 0x3d, 0x85, 0x7c, 0x6e, 0x43, 0x45, 0xd6, - 0xaf, 0x3c, 0x4c, 0xfa, 0x7e, 0x6c, 0xf8, 0xfe, 0x1d, 0xa0, - 0xea, 0x4e, 0x78, 0xa9, 0xef, 0xfa, 0xbd, 0xcb, 0x54, 0x51, - 0x45, 0x7d, 0xd9, 0xf7, 0x61, 0x45, 0x14, 0x50, 0x1, 0x5f, - 0x98, 0xbf, 0xf0, 0x5b, 0x2f, 0x1d, 0xdc, 0x5a, 0xf8, 0x77, - 0xe1, 0xaf, 0x83, 0x62, 0x25, 0x6d, 0xaf, 0x6e, 0x6e, 0xb5, - 0x59, 0xf0, 0x48, 0xc9, 0x89, 0x52, 0x34, 0x7, 0xd4, 0x7e, - 0xf9, 0xcf, 0xe1, 0x5f, 0xa7, 0x55, 0xf9, 0xe5, 0xff, 00, - 0x5, 0x88, 0xf8, 0x15, 0xab, 0x78, 0xf7, 0xe1, 0x97, 0x86, - 0x3c, 0x79, 0xa2, 0x59, 0xcd, 0x7f, 0x2f, 0x85, 0xa6, 0x9a, - 0x2b, 0xf8, 0x60, 0x42, 0xcc, 0x96, 0x93, 0x5, 0x26, 0x5c, - 0xe, 0x70, 0x8f, 0x1a, 0xe7, 0xd0, 0x31, 0x3d, 0xa8, 0x13, - 0xd8, 0xf8, 0x57, 0xfe, 0x9, 0xbb, 0xf1, 0x4b, 0xc1, 0xff, - 00, 0x8, 0x7f, 0x6a, 0x4d, 0x1f, 0x5d, 0xf1, 0xb5, 0xec, - 0x1a, 0x5e, 0x92, 0xf6, 0x37, 0x36, 0x91, 0xea, 0x17, 0x23, - 0xf7, 0x56, 0xd3, 0xc8, 0xa0, 0x23, 0xb1, 0xfe, 0x10, 0x40, - 0x65, 0xdd, 0xdb, 0x77, 0x3c, 0x57, 0xe8, 0x87, 0xfc, 0x15, - 0x1f, 0xf6, 0x8d, 0xd2, 0x7c, 0x31, 0xfb, 0x2e, 0x36, 0x8b, - 0xe1, 0xed, 0x62, 0xcf, 0x51, 0xbb, 0xf1, 0xb4, 0xc2, 0xc2, - 0x29, 0x6c, 0xae, 0x16, 0x55, 0xfb, 0x2a, 0xe1, 0xe7, 0x70, - 0x54, 0x91, 0x82, 0x36, 0xa7, 0xfd, 0xb4, 0xaf, 0xc4, 0xea, - 0x37, 0x12, 00, 0xc9, 0xc0, 0xe8, 0x2a, 0xac, 0x45, 0xcf, - 0xb5, 0x7f, 0xe0, 0x94, 0x9f, 0xc, 0xb4, 0xcf, 0x13, 0xfe, - 0xd0, 0x57, 0x3e, 0x35, 0xd7, 0xee, 0x6d, 0xac, 0xf4, 0x4f, - 0x5, 0x59, 0x1b, 0xe3, 0x3d, 0xe4, 0x8b, 0x1c, 0x42, 0xe6, - 0x4c, 0xa4, 0x59, 0x66, 0xc0, 0xe0, 0x79, 0x8d, 0xf5, 0x51, - 0x5e, 0xd9, 0xff, 00, 0x5, 0x2f, 0xff, 00, 0x82, 0x80, - 0xf8, 0x77, 0xc6, 0x7e, 0x11, 0xbb, 0xf8, 0x4f, 0xf0, 0xd7, - 0x53, 0x8f, 0x59, 0xb6, 0xbe, 0x64, 0x3a, 0xd6, 0xbd, 0x65, - 0x29, 0x30, 0x6c, 0x56, 0xd, 0xf6, 0x78, 0x98, 0x7d, 0xfc, - 0x90, 0x37, 0x30, 0xf9, 0x71, 0xc7, 0x39, 0x38, 0xfc, 0xc0, - 0x12, 0xba, 0xc6, 0xd1, 0x87, 0x61, 0x1b, 0x10, 0x59, 0x1, - 0xe0, 0x91, 0xd3, 0x22, 0xbd, 0x33, 0xe0, 0x1f, 0xec, 0xe5, - 0xe3, 0x9f, 0xda, 0x43, 0xc6, 0x50, 0x78, 0x7f, 0xc1, 0xba, - 0x4c, 0x97, 0x44, 0xb7, 0xfa, 0x4e, 0xa3, 0x2a, 0x95, 0xb4, - 0xb3, 0x4e, 0xed, 0x2c, 0x98, 0xc0, 0xf6, 0x1d, 0x4f, 0x60, - 0x68, 0xb, 0xf4, 0x3b, 0xbf, 0xd8, 0x3f, 0xf6, 0x70, 0x9f, - 0xf6, 0x92, 0xf8, 0xff, 00, 0xa3, 0x69, 0x33, 0xc2, 0xe7, - 0xc3, 0x7a, 0x53, 0x2e, 0xa7, 0xac, 0x4e, 0x17, 0x2a, 0x21, - 0x46, 0x5, 0x62, 0xcf, 0x4c, 0xc8, 0xd8, 0x5c, 0x7a, 0x16, - 0x3d, 0xab, 0xfa, 0xd, 0x44, 0x58, 0x91, 0x51, 0x14, 0x2a, - 0xa8, 0xc0, 0x3, 0xa0, 0x15, 0xe2, 0xff, 00, 0xb2, 0x8f, - 0xec, 0xb7, 0xe1, 0xaf, 0xd9, 0x53, 0xe1, 0xa4, 0x3e, 0x1b, - 0xd1, 0x7f, 0xd3, 0x35, 0x3b, 0x82, 0x27, 0xd5, 0x75, 0x67, - 0x5c, 0x49, 0x79, 0x3e, 0x31, 0x9f, 0x64, 0x1d, 0x15, 0x7b, - 0xf, 0x72, 0x4d, 0x7b, 0x43, 0xba, 0xc6, 0x8c, 0xec, 0x42, - 0xaa, 0x8c, 0x92, 0x7b, 0xa, 0x96, 0xcb, 0x4a, 0xc7, 0x81, - 0xfe, 0xd2, 0x9e, 0x23, 0x13, 0x5e, 0xe9, 0x9a, 0x24, 0x6f, - 0x91, 0x8, 0x37, 0x33, 0x1, 0xfd, 0xe3, 0xc2, 0x8f, 0xcb, - 0x77, 0xe7, 0x5e, 0x25, 0x5b, 0xbe, 0x39, 0xd7, 0xcf, 0x8a, - 0x3c, 0x5b, 0xaa, 0x6a, 0x79, 0x26, 0x39, 0xa6, 0x3e, 0x5e, - 0x7f, 0xb8, 0x3e, 0x55, 0xfd, 00, 0xac, 0x2a, 0xfc, 0x4b, - 0x33, 0xc4, 0xfd, 0x6f, 0x17, 0x52, 0xaf, 0x4b, 0xe9, 0xe8, - 0xb4, 0x47, 0xc9, 0x62, 0x2a, 0x7b, 0x5a, 0xb2, 0x90, 0x51, - 0x45, 0x15, 0xe6, 0x18, 0x16, 0xec, 0x74, 0x8b, 0xed, 0x50, - 0x39, 0xb3, 0xb2, 0xb8, 0xbb, 0x9, 0x8d, 0xde, 0x44, 0x4c, - 0xfb, 0x73, 0xd3, 0x38, 0x1c, 0x54, 0xd2, 0x78, 0x6f, 0x57, - 0x88, 0x65, 0xf4, 0xab, 0xd4, 0x1e, 0xad, 0x6c, 0xe3, 0xfa, - 0x57, 0xd2, 0x1f, 00, 0x74, 0xf, 0xec, 0x8f, 0x2, 0x47, - 0x74, 0xe9, 0xb6, 0x6d, 0x42, 0x56, 0x9c, 0x92, 0x39, 0xd8, - 0x3e, 0x55, 0xfd, 0x1, 0x3f, 0x8d, 0x7a, 0x55, 0x7d, 0xd6, - 0x13, 0x86, 0xa3, 0x88, 0xc3, 0xc2, 0xac, 0xea, 0x34, 0xe4, - 0xaf, 0x6b, 0x77, 0x3d, 0x8a, 0x58, 0x5, 0x38, 0x29, 0x39, - 0x5a, 0xe7, 0xc3, 0x12, 0xc1, 0x2c, 0x7, 0x12, 0xc6, 0xf1, - 0x9f, 0x47, 0x52, 0x2a, 0x3a, 0xfb, 0x96, 0xe2, 0xce, 0xde, - 0xed, 0xa, 0x4f, 0x4, 0x73, 0x21, 0xfe, 0x19, 0x10, 0x30, - 0xfd, 0x6b, 0x8c, 0xf1, 0x3f, 0xc1, 0xaf, 0xc, 0xf8, 0x8e, - 0xde, 0x40, 0x96, 0x11, 0xe9, 0xb7, 0x44, 0x1d, 0xb7, 0x16, - 0x6a, 0x10, 0x83, 0xee, 0xa3, 0x83, 0xf9, 0x54, 0xd6, 0xe1, - 0x6a, 0xb1, 0x57, 0xa3, 0x51, 0x3f, 0x26, 0xad, 0xfe, 0x62, - 0x9e, 0x5d, 0x24, 0xbd, 0xd9, 0x5c, 0xf9, 0x36, 0x8a, 0xd4, - 0xf1, 0x3f, 0x87, 0xae, 0x7c, 0x2b, 0xaf, 0x5e, 0x69, 0x57, - 0x78, 0x33, 0x5b, 0x3e, 0xd2, 0xcb, 0xd1, 0x81, 0x19, 0xc, - 0x3e, 0xa0, 0x83, 0x59, 0x75, 0xf1, 0x53, 0x84, 0xa9, 0xc9, - 0xc2, 0x4a, 0xcd, 0x68, 0x79, 0x2d, 0x34, 0xec, 0xc2, 0x8a, - 0x28, 0xa8, 0x11, 0xe9, 0xbf, 00, 0x3c, 0x49, 0x36, 0x93, - 0xe3, 0x68, 0xf4, 0xed, 0xc7, 0xec, 0xba, 0x8a, 0x32, 0x32, - 0x76, 0xe, 0xa0, 0xb2, 0x9f, 0xd0, 0x8f, 0xc6, 0xbe, 0x9e, - 0xaf, 0x92, 0xbe, 0xb, 0xda, 0x3d, 0xdf, 0xc4, 0xad, 0x1b, - 0x68, 0x24, 0x46, 0xcf, 0x23, 0x11, 0xd8, 0x4, 0x6f, 0xfe, - 0xb5, 0x7d, 0x6b, 0x5f, 0xa9, 0xf0, 0xcc, 0xe7, 0x2c, 0x13, - 0x52, 0xd9, 0x49, 0xdb, 0xee, 0x4c, 0xfa, 0x2c, 0xbd, 0xb7, - 0x49, 0xa7, 0xdc, 0xa5, 0xad, 0xea, 0x71, 0xe8, 0xda, 0x3d, - 0xed, 0xfc, 0xa7, 0x11, 0xdb, 0x42, 0xf2, 0x9c, 0xff, 00, - 0xb2, 0x9, 0xaf, 0x89, 0xae, 0xae, 0x64, 0xbd, 0xb9, 0x9a, - 0xe2, 0x56, 0xdd, 0x2c, 0xae, 0x64, 0x76, 0xf5, 0x24, 0xe4, - 0xd7, 0xda, 0x3e, 0x28, 0xf0, 0xf4, 0x3e, 0x2a, 0xd0, 0xee, - 0x74, 0xbb, 0x89, 0xa6, 0x82, 0xb, 0x80, 0x3, 0xbc, 0x4, - 0x6, 0xc0, 0x20, 0xe3, 0x90, 0x7d, 0x2b, 0xcd, 0xa4, 0xfd, - 0x9a, 0xb4, 0x16, 0xfb, 0x9a, 0x9e, 0xa0, 0xbf, 0x52, 0x87, - 0xff, 00, 0x65, 0xa8, 0xcf, 0x72, 0xfc, 0x5e, 0x61, 0x28, - 0x2a, 0x9, 0x72, 0xc6, 0xfd, 0x7a, 0xb1, 0x63, 0x28, 0x55, - 0xac, 0xd7, 0x22, 0xd1, 0x1f, 0x39, 0x51, 0x5f, 0x42, 0x49, - 0xfb, 0x33, 0x69, 0x87, 0xee, 0x6b, 0x57, 0x6b, 0xfe, 0xf4, - 0x6a, 0x6a, 0xb4, 0x9f, 0xb3, 0x1c, 0x7, 0xee, 0x6b, 0xf2, - 0xf, 0xf7, 0xad, 0x81, 0xff, 00, 0xd9, 0xab, 0xe4, 0x9f, - 0xf, 0xe6, 0x2b, 0xec, 0x7e, 0x2b, 0xfc, 0xcf, 0x33, 0xea, - 0x55, 0xfb, 0x7e, 0x27, 0x82, 0x51, 0x5e, 0x9b, 0xf1, 0x17, - 0xe0, 0xd2, 0x78, 0x3, 0x42, 0x1a, 0x8b, 0x6b, 0x3f, 0x6b, - 0x2f, 0x32, 0xc2, 0x90, 0xfd, 0x9f, 0x61, 0x62, 0x72, 0x7a, - 0xee, 0x3d, 00, 0x3d, 0xab, 0xcc, 0xab, 0xc7, 0xc4, 0xe1, - 0x6b, 0x60, 0xea, 0x7b, 0x2a, 0xca, 0xcf, 0xe4, 0xff, 00, - 0x23, 0x96, 0xa5, 0x39, 0x52, 0x97, 0x2c, 0xd6, 0xa1, 0x45, - 0x14, 0x57, 0x21, 0x98, 0x51, 0x45, 0x7a, 0x44, 0x1f, 00, - 0x7c, 0x55, 0x73, 0x6b, 0xd, 0xc4, 0x6b, 0x66, 0x56, 0x54, - 0x59, 0x2, 0x99, 0xc8, 0x20, 0x11, 0x9c, 0x1e, 0x3a, 0xd7, - 0x55, 0xc, 0x2d, 0x7c, 0x4d, 0xfd, 0x8c, 0x1c, 0xad, 0xbd, - 0x8d, 0x21, 0x4e, 0x75, 0x3e, 0x5, 0x73, 0xcd, 0xe8, 0xaf, - 0x46, 0x93, 0xe0, 0xf, 0x8c, 0x13, 0xa5, 0xa5, 0xb3, 0xff, - 00, 0xbb, 0x72, 0xb5, 0x56, 0x5f, 0x81, 0xfe, 0x32, 0x8b, - 0xa6, 0x94, 0x1f, 0xfd, 0xcb, 0x88, 0xff, 00, 0xf8, 0xaa, - 0xe8, 0x79, 0x6e, 0x35, 0x6f, 0x46, 0x5f, 0x73, 0x2f, 0xd8, - 0x55, 0x5f, 0x65, 0xfd, 0xc7, 0x7, 0x5e, 0xd3, 0xfb, 0x34, - 0x69, 0x3e, 0x6e, 0xaf, 0xab, 0xea, 0x4c, 0xbc, 0x43, 0xa, - 0xc0, 0x8d, 0xee, 0xc7, 0x27, 0xf4, 0x51, 0xf9, 0xd7, 0x12, - 0xff, 00, 0x7, 0x3c, 0x64, 0x9d, 0x74, 0x29, 0x8f, 0xfb, - 0xb2, 0x46, 0x7f, 0xf6, 0x6a, 0xf7, 0x9f, 0x82, 0x9e, 0x12, - 0xb9, 0xf0, 0x9f, 0x83, 0x84, 0x77, 0xd0, 0x1b, 0x6b, 0xeb, - 0x89, 0x9e, 0x59, 0x63, 0x6e, 0xab, 0xfc, 0x2a, 0xf, 0xe0, - 0x33, 0xf8, 0xd7, 0xb7, 0x91, 0xe0, 0x2b, 0xac, 0x74, 0x67, - 0x56, 0xd, 0x28, 0xdd, 0xea, 0x9a, 0xf2, 0xfd, 0x4e, 0xbc, - 0x1d, 0x19, 0xfb, 0x64, 0xe4, 0xad, 0x63, 0xbf, 0xa2, 0x8a, - 0xf3, 0x4f, 0x8a, 0xff, 00, 0x17, 0xa0, 0xf0, 0x54, 0x6d, - 0xa7, 0x69, 0xfb, 0x6e, 0x35, 0xa7, 0x5c, 0xf3, 0xca, 0x40, - 0xf, 0x76, 0xf5, 0x3e, 0x83, 0xf3, 0xf7, 0xfd, 0x27, 0x13, - 0x89, 0xa5, 0x84, 0xa4, 0xea, 0xd6, 0x76, 0x48, 0xf7, 0xea, - 0x54, 0x8d, 0x28, 0xf3, 0x49, 0xe8, 0x74, 0xde, 0x33, 0xf8, - 0x83, 0xa3, 0xf8, 0x1a, 0xd3, 0xcc, 0xd4, 0x2e, 0x33, 0x70, - 0xcb, 0x98, 0xad, 0x63, 0xe6, 0x59, 0x3e, 0x83, 0xb0, 0xf7, - 0x3c, 0x57, 0xcf, 0xde, 0x32, 0xf8, 0xe3, 0xaf, 0xf8, 0xa3, - 0x7c, 0x36, 0xaf, 0xfd, 0x91, 0x62, 0x4f, 0xfa, 0xbb, 0x66, - 0x3e, 0x63, 0xf, 0xf6, 0x9f, 0xaf, 0xe5, 0x8a, 0xe1, 0x35, - 0x3d, 0x4e, 0xef, 0x59, 0xbd, 0x96, 0xf2, 0xfa, 0xe2, 0x4b, - 0xab, 0x99, 0x4e, 0x5e, 0x49, 0xe, 0x49, 0xff, 00, 0x3e, - 0x95, 0x56, 0xbf, 0x2f, 0xcc, 0x33, 0xec, 0x46, 0x31, 0xb8, - 0x53, 0x7c, 0x90, 0xec, 0xb7, 0x7e, 0xac, 0xf9, 0xda, 0xf8, - 0xca, 0x95, 0x74, 0x8e, 0x88, 0x57, 0x76, 0x91, 0x8b, 0x33, - 0x16, 0x62, 0x72, 0x49, 0x39, 0x26, 0x92, 0x8a, 0x2b, 0xe6, - 0x4e, 00, 0xa2, 0x8a, 0x96, 0xde, 0xd2, 0x7b, 0xc7, 0xd9, - 0x4, 0x32, 0x4e, 0xdf, 0xdd, 0x8d, 0xb, 0x1f, 0xd2, 0x9a, - 0x4d, 0xbb, 0x20, 0x22, 0xa2, 0xb5, 0x47, 0x84, 0xb5, 0xc2, - 0x32, 0x34, 0x5d, 0x47, 0x1e, 0xbf, 0x64, 0x93, 0xfc, 0x2a, - 0x95, 0xd6, 0x9f, 0x75, 0x62, 0x71, 0x73, 0x6d, 0x35, 0xb9, - 0xf4, 0x96, 0x32, 0xbf, 0xce, 0xae, 0x54, 0xe7, 0x15, 0x79, - 0x45, 0xaf, 0x90, 0xdc, 0x5a, 0xdd, 0x15, 0xe8, 0xa2, 0x8a, - 0xcc, 0x41, 0x57, 0x34, 0xad, 0x66, 0xfb, 0x43, 0xba, 0x5b, - 0x9d, 0x3e, 0xee, 0x6b, 0x39, 0xd4, 0xe7, 0x7c, 0x2e, 0x57, - 0x3f, 0x5f, 0x5f, 0xa1, 0xaa, 0x74, 0x55, 0x46, 0x4e, 0x2f, - 0x9a, 0x2e, 0xcc, 0x13, 0x6b, 0x54, 0x7b, 0xef, 0xc3, 0xef, - 0xda, 0x9, 0x2e, 0xe5, 0x8e, 0xc7, 0xc4, 0xc1, 0x20, 0x73, - 0x85, 0x5b, 0xf8, 0xc6, 0x14, 0x9f, 0xf6, 0xc7, 0x6f, 0xa8, - 0xe3, 0xd8, 0x57, 0xb6, 0x47, 0x22, 0x4d, 0x1a, 0xc9, 0x1b, - 0x7, 0x46, 0x19, 0x56, 0x53, 0x90, 0x47, 0xa8, 0x35, 0xf0, - 0xb5, 0x7a, 0xc7, 0xc1, 0x9f, 0x8b, 0x12, 0x78, 0x76, 0xf2, - 0x1d, 0x17, 0x55, 0x98, 0xbe, 0x93, 0x2b, 0x6d, 0x8a, 0x47, - 0x3f, 0xf1, 0xee, 0xc7, 0xa7, 0x3f, 0xdd, 0x3f, 0xa7, 0xe7, - 0x5f, 0x77, 0x94, 0x67, 0xf2, 0xe6, 0x58, 0x7c, 0x63, 0xba, - 0x7b, 0x4b, 0xfc, 0xff, 00, 0xcf, 0xef, 0x3d, 0x9c, 0x2e, - 0x35, 0xdd, 0x42, 0xaf, 0xde, 0x7d, 0x27, 0x45, 0x20, 0x20, - 0x8c, 0x8e, 0x41, 0xa5, 0xaf, 0xd0, 0xcf, 0x70, 0x28, 0xa2, - 0xaa, 0xea, 0x7a, 0x9d, 0xb6, 0x8d, 0xa7, 0xcf, 0x7b, 0x79, - 0x32, 0xc1, 0x6d, 0x2, 0x17, 0x92, 0x46, 0xe8, 00, 0xa4, - 0xda, 0x8a, 0xbb, 0xd8, 0x4d, 0xdb, 0x56, 0x59, 0x66, 0x8, - 0xa5, 0x98, 0x80, 0x7, 0x24, 0x9e, 0xd5, 0xe6, 0xfe, 0x30, - 0xf8, 0xed, 0xa0, 0x78, 0x6f, 0x7c, 0x36, 0x4d, 0xfd, 0xb1, - 0x7a, 0x38, 0xd9, 0x6e, 0xd8, 0x8d, 0x4f, 0xbb, 0xf4, 0xfc, - 0xb3, 0x5e, 0x45, 0xf1, 0x27, 0xe3, 0x16, 0xa1, 0xe3, 0x29, - 0xe5, 0xb4, 0xb1, 0x79, 0x2c, 0x34, 0x60, 0x70, 0x22, 0x53, - 0x87, 0x98, 0x7a, 0xb9, 0x1d, 0xbf, 0xd9, 0xe9, 0xf5, 0xaf, - 0x3a, 0xaf, 0x80, 0xcc, 0x78, 0x95, 0xa6, 0xe9, 0xe0, 0xd7, - 0xfd, 0xbc, 0xff, 00, 0x45, 0xfe, 0x7f, 0x71, 0xe2, 0xd7, - 0xc7, 0xbb, 0xf2, 0xd2, 0xfb, 0xcf, 0x47, 0xf1, 0x7, 0xc7, - 0xbf, 0x14, 0x6b, 0x3b, 0x92, 0xda, 0x68, 0xb4, 0xa8, 0x4f, - 0xf0, 0xda, 0xaf, 0xcd, 0xff, 00, 0x7d, 0x36, 0x4f, 0xe5, - 0x8a, 0xe1, 0x6f, 0xf5, 0xad, 0x43, 0x54, 0x62, 0xd7, 0x97, - 0xd7, 0x37, 0x64, 0xf7, 0x9a, 0x56, 0x7f, 0xe6, 0x6a, 0x95, - 0x15, 0xf1, 0x75, 0xf1, 0x98, 0x8c, 0x4b, 0xbd, 0x69, 0xb7, - 0xf3, 0xfd, 0xf, 0x26, 0x75, 0x67, 0x53, 0xe2, 0x77, 0xa, - 0x28, 0xa2, 0xb8, 0xcc, 0xc2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, - 0x28, 0xa0, 0xb, 0x76, 0x7a, 0xbd, 0xf6, 0x9c, 0xc1, 0xad, - 0x6f, 0x6e, 0x2d, 0x88, 0xef, 0xc, 0xac, 0x9f, 0xc8, 0xd7, - 0x5b, 0xa2, 0x7c, 0x68, 0xf1, 0x6e, 0x8a, 0x55, 0x57, 0x53, - 0x6b, 0xd8, 0xc7, 0x1e, 0x5d, 0xe2, 0x89, 0x33, 0xf8, 0xfd, - 0xef, 0xd6, 0xb8, 0x7a, 0xdb, 0xf0, 0x4e, 0x96, 0x75, 0xaf, - 0x17, 0x68, 0xf6, 0x41, 0x77, 0x9, 0x6e, 0xa3, 0xc, 0x3f, - 0xd9, 0x7, 0x2d, 0xfa, 0x3, 0x5d, 0xd8, 0x6a, 0xf8, 0x88, - 0x54, 0x8c, 0x68, 0xcd, 0xa6, 0xdd, 0xb4, 0x66, 0xb4, 0xe7, - 0x35, 0x24, 0xa0, 0xec, 0x7d, 0x8d, 0xa5, 0xcb, 0x71, 0x3e, - 0x9b, 0x6b, 0x25, 0xda, 0xaa, 0x5d, 0x3c, 0x4a, 0xd2, 0xaa, - 0xc, 00, 0xc4, 0xc, 0x81, 0xf8, 0xd5, 0x9c, 0x73, 0x9a, - 0x5a, 0x2b, 0xf7, 0x14, 0xac, 0x92, 0x3e, 0xbd, 0x5, 0x14, - 0x51, 0x4c, 0x61, 0x58, 0xfe, 0x2e, 0x97, 0xca, 0xf0, 0xed, - 0xeb, 0x74, 0xf9, 0xd, 0x6c, 0x57, 0x33, 0xf1, 0x12, 0x6f, - 0x27, 0xc2, 0xb7, 0x7d, 0xb2, 0x31, 0x58, 0xd6, 0x7c, 0xb4, - 0xe4, 0xfc, 0x8c, 0xea, 0x3b, 0x41, 0xb3, 0xe1, 0x4f, 0x88, - 0x13, 0x79, 0xde, 0x22, 0xbb, 0x6f, 0xf6, 0x8d, 0x78, 0x7, - 0xc6, 0x8b, 0x8f, 0x2f, 0x47, 0x9b, 0x9f, 0xe1, 0x35, 0xee, - 0x5e, 0x2e, 0x97, 0xcd, 0xd6, 0x6f, 0x1b, 0xfd, 0xb3, 0x5f, - 0x3c, 0x7c, 0x78, 0xb9, 0xf2, 0xb4, 0x6b, 0x9f, 0x68, 0xcf, - 0xf2, 0xaf, 0xcd, 0xb2, 0xc5, 0xcd, 0x5e, 0xfe, 0xa7, 0xe2, - 0x18, 0xbf, 0xde, 0xe3, 0xe9, 0xc7, 0xbc, 0xd7, 0xe6, 0x7e, - 0x94, 0xfc, 0xc, 0xf0, 0x98, 0x5f, 0x82, 0x7f, 0xf, 0x84, - 0x90, 0xb0, 0x90, 0x78, 0x7b, 0x4f, 0xd, 0x91, 0xce, 0x7e, - 0xcd, 0x1e, 0x68, 0xaf, 0x59, 0xf8, 0x75, 0x66, 0x2c, 0xfe, - 0x1f, 0x78, 0x62, 0xdc, 0xc6, 0x10, 0xc5, 0xa5, 0xda, 0xc7, - 0xb7, 0x1d, 0x31, 0x12, 0x8c, 0x51, 0x5f, 0xa6, 0x24, 0x7e, - 0xe0, 0xa3, 0xa1, 0xd1, 0xd1, 0x45, 0x15, 0x65, 0x85, 0x14, - 0x51, 0x40, 0x5, 0x7c, 0x4d, 0xfb, 0x4b, 0xf8, 0xc4, 0xf8, - 0xa3, 0xe2, 0x65, 0xcd, 0xac, 0x6e, 0x1a, 0xd3, 0x49, 0x51, - 0x69, 0x1e, 0x31, 0x8d, 0xfd, 0x5c, 0xe4, 0x7b, 0x9c, 0x7e, - 0x15, 0xf5, 0xdf, 0x8e, 0xfc, 0x51, 0xf, 0x82, 0xfc, 0x21, - 0xaa, 0xeb, 0x33, 0x9f, 0x96, 0xd2, 0x6, 0x75, 0x5c, 0xe3, - 0x73, 0xe3, 0xa, 0xa3, 0xdc, 0x9c, 0x57, 0xe7, 0x9b, 0xcb, - 0x3e, 0xa5, 0x7a, 0xf3, 0x4c, 0xc6, 0x5b, 0x9b, 0x89, 0xb, - 0xbb, 0x1e, 0xac, 0xcc, 0x72, 0x4f, 0xe6, 0x6b, 0xe4, 0x78, - 0x83, 0x13, 0xcb, 0x4e, 0x34, 0x17, 0x5d, 0x5f, 0xa2, 0x3e, - 0x33, 0x88, 0xf1, 0x36, 0x84, 0x30, 0xd1, 0xde, 0x5a, 0xbf, - 0x45, 0xb7, 0xe3, 0xf9, 0x1e, 0xfb, 0xfb, 0x27, 0x78, 0x3f, - 0xed, 0xba, 0xdd, 0xe6, 0xb5, 0x32, 0xe6, 0x3b, 0x65, 0xdb, - 0x1e, 0x47, 0xf1, 0x1a, 0xfa, 0xb6, 0xbc, 0xff, 00, 0xe0, - 0x77, 0x85, 0x7, 0x85, 0x7e, 0x1f, 0xe9, 0xf1, 0x32, 0x6d, - 0x9e, 0x75, 0xf3, 0xa4, 0xfa, 0x9a, 0xf4, 0xa, 0xf5, 0xf2, - 0xac, 0x3f, 0xd5, 0xb0, 0x90, 0x8b, 0xdd, 0xea, 0xfe, 0x67, - 0xd0, 0x65, 0xb8, 0x7f, 0xaa, 0xe1, 0x61, 0xe, 0xbb, 0xbf, - 0x98, 0x51, 0x45, 0x15, 0xeb, 0x9e, 0x98, 0x51, 0x45, 0x14, - 00, 0x53, 0x26, 0x86, 0x3b, 0x98, 0x64, 0x86, 0x68, 0xd6, - 0x58, 0xa4, 0x52, 0xae, 0x8e, 0x32, 0xac, 0xf, 0x4, 0x11, - 0xdc, 0x56, 0x5f, 0x8a, 0xfc, 0x5b, 0xa3, 0x78, 0x1b, 0xc3, - 0xf7, 0xba, 0xe7, 0x88, 0x35, 0x3b, 0x5d, 0x1f, 0x48, 0xb2, - 0x8c, 0xcb, 0x71, 0x7b, 0x79, 0x20, 0x8e, 0x38, 0xd4, 0x77, - 0x24, 0xd7, 0xe7, 0xf7, 0xc6, 0xdf, 0xf8, 0x2c, 0x9f, 0x82, - 0xfc, 0x31, 0x3c, 0xd6, 0x1f, 0xd, 0xbc, 0x39, 0x73, 0xe3, - 0xb, 0x84, 0x3b, 0x7f, 0xb4, 0xb5, 0x16, 0x36, 0x96, 0x9f, - 0x55, 0x5c, 0x19, 0x1f, 0xf1, 0xb, 0x40, 0x1e, 0x85, 0xf1, - 0x93, 0xfe, 0x9, 0x37, 0xf0, 0x6b, 0xe2, 0x76, 0xa3, 0x73, - 0xa9, 0xe8, 0x9f, 0xda, 0x3e, 0x3, 0xd4, 0x6e, 0x1c, 0xc9, - 0x20, 0xd2, 0x1d, 0x5e, 0xd4, 0xb1, 0xeb, 0xfb, 0x97, 0x4, - 0x2f, 0xd1, 0xa, 0x8a, 0xf0, 0xd9, 0xbf, 0xe0, 0x88, 0xb0, - 0xfd, 0xb3, 0x31, 0x7c, 0x58, 0x90, 0x5a, 0x67, 0xa3, 0xe8, - 0xa0, 0xc9, 0x8f, 0xa8, 0x9b, 0x15, 0xe2, 0x1a, 0xa7, 0xfc, - 0x16, 0xf, 0xe3, 0xc5, 0xf4, 0xcc, 0xd6, 0xd0, 0x78, 0x57, - 0x4e, 0x8c, 0xfd, 0xd4, 0x87, 0x4c, 0x76, 0xc7, 0xe2, 0xf2, - 0xb6, 0x6b, 0xed, 0xf, 0xf8, 0x26, 0xc7, 0xed, 0x35, 0xf1, - 0x77, 0xf6, 0xa3, 0x93, 0xc5, 0xba, 0xcf, 0x8e, 0x2e, 0xb4, - 0xb6, 0xf0, 0xde, 0x91, 0xe5, 0x5a, 0x5b, 0x8b, 0x1b, 0x11, - 0xb, 0xcb, 0x74, 0xff, 00, 0x33, 0x65, 0xb2, 0x78, 0x54, - 0x3, 0x81, 0xfd, 0xf1, 0x4f, 0x52, 0x74, 0x65, 0xf, 0x87, - 0x1f, 0xf0, 0x47, 0x3f, 0x84, 0x5e, 0x16, 0xb8, 0x4b, 0x8f, - 0x13, 0xeb, 0x1a, 0xef, 0x8c, 0xa4, 0x52, 0xf, 0x91, 0x2c, - 0xab, 0x67, 0x6e, 0x48, 0xf5, 0x58, 0xfe, 0x7f, 0xfc, 0x7e, - 0xbe, 0xd5, 0xf0, 0x27, 0xc3, 0xef, 0xd, 0xfc, 0x31, 0xf0, - 0xe5, 0xb6, 0x81, 0xe1, 0x4d, 0x12, 0xcb, 0x40, 0xd1, 0xed, - 0x86, 0x23, 0xb4, 0xb1, 0x88, 0x46, 0x83, 0xd4, 0x9c, 0x75, - 0x27, 0xb9, 0x39, 0x26, 0xbc, 0x43, 0xc5, 0x7f, 0xf0, 0x50, - 0xef, 0x80, 0xbe, 0x6, 0xf1, 0x76, 0xaf, 0xe1, 0x8d, 0x7b, - 0xc6, 0xaf, 0xa6, 0x6b, 0x5a, 0x55, 0xd4, 0x96, 0x77, 0x96, - 0xd2, 0xe9, 0x77, 0x67, 0xcb, 0x95, 0x1b, 0x6b, 0xd, 0xc2, - 0x22, 0xa7, 0x91, 0xd4, 0x1c, 0x1a, 0xf5, 0xbf, 0x84, 0xbf, - 0x19, 0xbc, 0x1d, 0xf1, 0xcf, 0xc2, 0xed, 0xe2, 0x2f, 0x3, - 0xeb, 0x51, 0xeb, 0xba, 0x3a, 0xdc, 0x35, 0xab, 0x5c, 0xc7, - 0x1b, 0xc6, 0x4, 0x8a, 0x1, 0x65, 0xc3, 0xa8, 0x3c, 0x6, - 0x1d, 0xbb, 0xd2, 0x19, 0xda, 0xd7, 0x11, 0xf1, 0x93, 0xc4, - 0x43, 0xc3, 0xbe, 0x1, 0xd4, 0x59, 0x5f, 0x6c, 0xf7, 0x4b, - 0xf6, 0x58, 0xb9, 0xe7, 0x2f, 0xc1, 0xfc, 0x97, 0x71, 0xae, - 0xde, 0xbe, 0x76, 0xfd, 0xa4, 0x7c, 0x43, 0xf6, 0xcd, 0x7e, - 0xc3, 0x48, 0x8d, 0xf2, 0x96, 0x91, 0x19, 0x64, 0x3, 0xfb, - 0xef, 0xd3, 0xf2, 00, 0x7e, 0x75, 0xe2, 0xe7, 0x18, 0x9f, - 0xaa, 0xe0, 0xa7, 0x35, 0xbb, 0xd1, 0x7a, 0xbf, 0xea, 0xe7, - 0x2e, 0x2a, 0xa7, 0xb3, 0xa4, 0xdf, 0xc8, 0xf1, 0xda, 0x28, - 0xa2, 0xbf, 0x19, 0x3e, 0x54, 0x2a, 0xe6, 0x8f, 0xa6, 0x49, - 0xac, 0xea, 0xd6, 0x76, 0x10, 0x82, 0x65, 0xb9, 0x99, 0x22, - 0x5c, 0x76, 0xdc, 0x40, 0xcd, 0x53, 0xaf, 0x44, 0xf8, 0x18, - 0x9a, 0x64, 0x3e, 0x33, 0xfb, 0x7e, 0xa9, 0x79, 0x6d, 0x67, - 0x15, 0x9c, 0x4c, 0xf1, 0x1b, 0x89, 0x42, 0x6, 0x90, 0xfc, - 0xa3, 0x19, 0xeb, 0x80, 0x58, 0xfe, 0x55, 0xd7, 0x84, 0xa2, - 0xb1, 0x18, 0x88, 0x52, 0x6e, 0xc9, 0xbd, 0x7d, 0x3a, 0x9a, - 0x52, 0x8f, 0x3c, 0xd4, 0x59, 0xf4, 0xfe, 0x9f, 0x63, 0x16, - 0x99, 0x61, 0x6f, 0x69, 0x2, 0xec, 0x86, 0x8, 0xd6, 0x24, - 0x51, 0xd8, 0x1, 0x81, 0x56, 0x2b, 0x2a, 0x3f, 0x16, 0x68, - 0x93, 0x7d, 0xcd, 0x5e, 0xc5, 0xff, 00, 0xdd, 0xb9, 0x43, - 0xfd, 0x6a, 0x43, 0xe2, 0x4d, 0x25, 0x46, 0x4e, 0xa9, 0x66, - 0x7, 0xaf, 0x9e, 0x9f, 0xe3, 0x5f, 0xb7, 0xc6, 0xa5, 0x24, - 0xac, 0xa4, 0xad, 0xea, 0x7d, 0x72, 0x94, 0x6d, 0xa3, 0x34, - 0x69, 0x9, 0xa, 0x9, 0x27, 00, 0x72, 0x49, 0xae, 0x5b, - 0x55, 0xf8, 0xa5, 0xe1, 0x5d, 0x1a, 0x36, 0x69, 0xf5, 0xbb, - 0x57, 0x23, 0xf8, 0x20, 0x7f, 0x35, 0xbf, 0x25, 0xcd, 0x78, - 0xf7, 0xc4, 0x9f, 0x8f, 0x12, 0x6b, 0xf6, 0xb2, 0xe9, 0x9a, - 0xa, 0x49, 0x69, 0x67, 0x20, 0x29, 0x2d, 0xd4, 0x9c, 0x49, - 0x22, 0x9e, 0xa1, 0x47, 0xf0, 0x8f, 0x7e, 0xbf, 0x4a, 0xf3, - 0x71, 0x99, 0xb6, 0x13, 0x7, 0x6, 0xe5, 0x34, 0xdf, 0x64, - 0xee, 0xcc, 0x2a, 0xe2, 0x69, 0xd2, 0x57, 0x6e, 0xec, 0xe2, - 0x3e, 0x27, 0x78, 0x82, 0x2f, 0x13, 0xf8, 0xe7, 0x55, 0xbf, - 0x80, 0x83, 0x6e, 0xd2, 0x8, 0xe3, 0x61, 0xfc, 0x4a, 0x80, - 0x28, 0x3f, 0x8e, 0x33, 0xf8, 0xd7, 0x2d, 0x45, 0x15, 0xf8, - 0xed, 0x6a, 0xb2, 0xaf, 0x52, 0x55, 0x65, 0xbc, 0x9b, 0x7f, - 0x79, 0xf2, 0xd2, 0x93, 0x9c, 0x9c, 0x9f, 0x50, 0xa2, 0x8a, - 0xe9, 0x3c, 0x7, 0xe0, 0x6b, 0xdf, 0x1e, 0x6b, 0x69, 0x65, - 0x6a, 0xc, 0x70, 0x2f, 0xcd, 0x3d, 0xc1, 0x1f, 0x2c, 0x49, - 0xfe, 0x27, 0xb0, 0xa5, 0x4a, 0x94, 0xeb, 0xcd, 0x53, 0xa6, - 0xae, 0xd8, 0x46, 0x2e, 0x6d, 0x46, 0x3b, 0x9e, 0xab, 0xfb, - 0x36, 0xf8, 0x58, 0xa4, 0x57, 0xfa, 0xfc, 0xc8, 0x41, 0x7f, - 0xf4, 0x6b, 0x72, 0x47, 0x51, 0xc1, 0x72, 0x3f, 0x1c, 0xf, - 0xc0, 0xd7, 0xb9, 0x55, 0x3d, 0x23, 0x4a, 0xb6, 0xd0, 0xf4, - 0xcb, 0x6b, 0xb, 0x38, 0xc4, 0x56, 0xd6, 0xf1, 0x88, 0xd1, - 0x47, 0xa0, 0xfe, 0xb5, 0x72, 0xbf, 0x6a, 0xcb, 0xf0, 0x8b, - 0x3, 0x86, 0x85, 0x5, 0xba, 0xdf, 0xd7, 0xa9, 0xf5, 0x94, - 0x29, 0x7b, 0x1a, 0x6a, 0x1, 0x45, 0x14, 0x57, 0xa2, 0x6e, - 0x14, 0x51, 0x45, 00, 0x7c, 0xf7, 0xfb, 0x4a, 0xeb, 0xa6, - 0x7d, 0x67, 0x4c, 0xd2, 0x11, 0xbe, 0x4b, 0x78, 0x8d, 0xc3, - 0x8f, 0xf6, 0x98, 0xe0, 0x7e, 0x41, 0x4f, 0xe7, 0x5e, 0x31, - 0x5d, 0x3f, 0xc4, 0xcd, 0x77, 0xfe, 0x12, 0x3f, 0x1c, 0xea, - 0xf7, 0x81, 0xb7, 0x45, 0xe7, 0x18, 0xa3, 0x3f, 0xec, 0x27, - 0xca, 0x3f, 0x96, 0x7f, 0x1a, 0xe6, 0x2b, 0xf1, 0x3c, 0xcf, - 0x11, 0xf5, 0x9c, 0x65, 0x4a, 0x8b, 0x6b, 0xe9, 0xe8, 0xb4, - 0x47, 0xc9, 0x62, 0x27, 0xed, 0x2a, 0xca, 0x41, 0x45, 0x14, - 0x57, 0x96, 0x73, 0x9b, 0x3e, 0xd, 0xd0, 0xcf, 0x89, 0x3c, - 0x55, 0xa5, 0xe9, 0xb8, 0xca, 0xdc, 0x4e, 0xaa, 0xff, 00, - 0xee, 0xe, 0x5b, 0xf4, 0x6, 0xbe, 0xd1, 0x55, 0xa, 0xa0, - 0x1, 0x80, 0x6, 00, 0xaf, 0x9a, 0xff, 00, 0x67, 0x4d, - 0x18, 0xdf, 0x78, 0xce, 0x7b, 0xf6, 0x5c, 0xc7, 0x63, 0x6e, - 0xc4, 0x1f, 0xf6, 0xdf, 0xe5, 0x1f, 0xa6, 0xea, 0xfa, 0x56, - 0xbf, 0x50, 0xe1, 0x8a, 0x1e, 0xcf, 0xb, 0x2a, 0xaf, 0x79, - 0x3f, 0xc1, 0x7f, 0xc1, 0xb9, 0xf4, 0x19, 0x7c, 0x2d, 0x4d, - 0xcb, 0xb8, 0x51, 0x45, 0x15, 0xf6, 0x7, 0xaa, 0x14, 0x51, - 0x55, 0xb5, 0x1d, 0x42, 0xd, 0x2a, 0xc2, 0xe2, 0xf6, 0xe5, - 0xc4, 0x76, 0xf6, 0xf1, 0xb4, 0xb2, 0x39, 0xec, 0xa0, 0x64, - 0xd2, 0x6d, 0x45, 0x5d, 0x83, 0x76, 0xd4, 0xe3, 0x3e, 0x2d, - 0x7c, 0x47, 0x4f, 0x1, 0x68, 0xaa, 0xb6, 0xfb, 0x5f, 0x55, - 0xba, 0x5, 0x60, 0x43, 0xce, 0xc1, 0xdd, 0xc8, 0xf4, 0x1d, - 0xbd, 0x4d, 0x7c, 0xab, 0x73, 0x73, 0x2d, 0xe5, 0xc4, 0xb3, - 0xcf, 0x23, 0x4b, 0x34, 0xac, 0x5d, 0xe4, 0x73, 0x92, 0xc4, - 0xf5, 0x26, 0xb6, 0x3c, 0x6d, 0xe2, 0xa9, 0xfc, 0x65, 0xe2, - 0x4b, 0xcd, 0x52, 0x72, 0x42, 0xc8, 0xdb, 0x62, 0x8c, 0xff, - 00, 0xcb, 0x38, 0xc7, 0xdd, 0x5f, 0xcb, 0xf5, 0x26, 0xb0, - 0xab, 0xf1, 0xdc, 0xdf, 0x32, 0x96, 0x61, 0x5d, 0xb4, 0xfd, - 0xc5, 0xb2, 0xfd, 0x7e, 0x67, 0xcb, 0x62, 0x6b, 0xba, 0xf3, - 0xf2, 0x5b, 0x5, 0x14, 0x51, 0x5e, 0x11, 0xc6, 0x15, 0xa7, - 0xe1, 0xdf, 0xe, 0x6a, 0x1e, 0x2a, 0xd5, 0x22, 0xb0, 0xd3, - 0x6d, 0xda, 0x79, 0xdc, 0xf6, 0xfb, 0xa8, 0x3f, 0xbc, 0xc7, - 0xb0, 0xf7, 0xa8, 0x34, 0x7d, 0x22, 0xeb, 0x5e, 0xd4, 0xed, - 0xb4, 0xfb, 0x28, 0x8c, 0xd7, 0x57, 0xe, 0x11, 0x10, 0x7a, - 0xfb, 0xfb, 0xe, 0xb5, 0xf5, 0xc7, 0xc3, 0xff, 00, 0x1, - 0xd9, 0x78, 0xb, 0x45, 0x5b, 0x4b, 0x71, 0xbe, 0xe6, 0x40, - 0x1a, 0xe6, 0xe0, 0xf5, 0x91, 0xf1, 0xfa, 0x1, 0xd8, 0x57, - 0xbf, 0x94, 0xe5, 0x52, 0xcc, 0xaa, 0x5d, 0xe9, 0x5, 0xbb, - 0xfd, 0x17, 0xf5, 0xa1, 0xdb, 0x86, 0xc3, 0x3a, 0xf2, 0xd7, - 0x64, 0x71, 0xde, 0xf, 0xfd, 0x9f, 0x34, 0x6d, 0x26, 0x28, - 0xe6, 0xd6, 0x98, 0xea, 0xd7, 0x9d, 0x4c, 0x79, 0x2b, 0xa, - 0x9f, 0x4c, 0x75, 0x6f, 0xc7, 0xf2, 0xaf, 0x50, 0xb2, 0xd3, - 0xed, 0x74, 0xd8, 0x16, 0x1b, 0x4b, 0x68, 0xad, 0xa2, 0x51, - 0x80, 0x91, 0x20, 0x50, 0x3f, 0x1, 0x56, 0x28, 0xaf, 0xd5, - 0x30, 0xd8, 0x2c, 0x3e, 0x12, 0x3c, 0xb4, 0x60, 0x97, 0xe7, - 0xf7, 0x9f, 0x45, 0x4e, 0x94, 0x29, 0x2b, 0x41, 0x58, 0x2a, - 0x2b, 0x8b, 0x58, 0x6e, 0xe2, 0x68, 0xe7, 0x89, 0x26, 0x8d, - 0x86, 0xa, 0x48, 0xa1, 0x81, 0xfc, 0xd, 0x4b, 0x45, 0x76, - 0x34, 0x9e, 0x8c, 0xd8, 0xf2, 0xef, 0x1a, 0xfc, 0x5, 0xd1, - 0x75, 0xe8, 0x65, 0x9f, 0x49, 0x51, 0xa4, 0xea, 0x7, 0x2c, - 0x2, 0x67, 0xc9, 0x73, 0xe8, 0x57, 0xb7, 0xd4, 0x7e, 0x46, - 0xbe, 0x72, 0xd6, 0x74, 0x6b, 0xcf, 0xf, 0xea, 0x73, 0xd8, - 0x5f, 0xc0, 0xd6, 0xf7, 0x50, 0xb6, 0xd7, 0x46, 0xfe, 0x63, - 0xd4, 0x1f, 0x5a, 0xfb, 0x7a, 0xbc, 0x83, 0xf6, 0x87, 0xf0, - 0x7c, 0x5a, 0x87, 0x87, 0xd3, 0x5e, 0x89, 0x31, 0x77, 0x64, - 0x55, 0x25, 0x61, 0xfc, 0x51, 0x31, 0xc7, 0x3f, 0x42, 0x47, - 0xe6, 0x6b, 0xe2, 0xf3, 0xcc, 0x9a, 0x94, 0xa8, 0xcb, 0x13, - 0x87, 0x8f, 0x2c, 0xa3, 0xab, 0x4b, 0x66, 0xba, 0xfc, 0xcf, - 0x23, 0x19, 0x85, 0x8b, 0x8b, 0xa9, 0x5, 0x66, 0x8f, 0x9c, - 0xe8, 0xa2, 0x8a, 0xfc, 0xd0, 0xf0, 0x42, 0x8a, 0x28, 0xa0, - 0xf, 0xa8, 0x7e, 0x5, 0x78, 0xd2, 0x4f, 0x14, 0x78, 0x54, - 0xd9, 0xdd, 0x3e, 0xfb, 0xcd, 0x34, 0xac, 0x25, 0x89, 0xe5, - 0xe3, 0xc7, 0xc8, 0x4f, 0xbf, 0x4, 0x7e, 0x15, 0xe9, 0x55, - 0xf2, 0xd7, 0xc0, 0x5d, 0x71, 0xf4, 0x9f, 0x88, 0x16, 0xd6, - 0xfb, 0xb1, 0xd, 0xfa, 0x34, 0xe, 0x3b, 0x67, 0x1b, 0x94, - 0xfe, 0x63, 0x1f, 0x8d, 0x7d, 0x4b, 0x5f, 0xb0, 0x64, 0x58, - 0xb7, 0x8b, 0xc1, 0x45, 0xc9, 0xeb, 0x1d, 0x1f, 0xcb, 0x6f, - 0xc0, 0xfa, 0x7c, 0x1d, 0x47, 0x52, 0x92, 0xbe, 0xeb, 0x40, - 0xaf, 0x9c, 0x7e, 0x3f, 0xf8, 0xf1, 0xf5, 0x6d, 0x67, 0xfb, - 0x2, 0xd2, 0x42, 0x2c, 0xac, 0x88, 0x33, 0xed, 0x3c, 0x49, - 0x2f, 0xa7, 0xd1, 0x7f, 0x9e, 0x7d, 0x2b, 0xe8, 0x6d, 0x42, - 0xf1, 0x34, 0xfb, 0xb, 0x9b, 0xa9, 0xe, 0x12, 0x8, 0x9a, - 0x46, 0xfa, 00, 0x4f, 0xf4, 0xaf, 0x88, 0xef, 0xef, 0x24, - 0xd4, 0x6f, 0xae, 0x2e, 0xe6, 0x39, 0x96, 0x79, 0x1a, 0x57, - 0x3e, 0xec, 0x72, 0x7f, 0x9d, 0x79, 0x9c, 0x4d, 0x8b, 0x95, - 0x1a, 0x11, 0xa1, 0x7, 0xf1, 0xef, 0xe8, 0x8e, 0x7c, 0xc2, - 0xab, 0x8c, 0x14, 0x17, 0x52, 0xa, 0x28, 0xa2, 0xbf, 0x32, - 0x3c, 00, 0xa2, 0x8a, 0x96, 0xd2, 0xdd, 0xae, 0xee, 0xa1, - 0x81, 0x8, 0xf, 0x2b, 0xac, 0x60, 0x9e, 0x99, 0x27, 0x14, - 0xd2, 0x6d, 0xd9, 0x1, 0x7f, 0x40, 0xf0, 0xc6, 0xab, 0xe2, - 0x8b, 0xaf, 0xb3, 0xe9, 0x76, 0x33, 0x5e, 0x48, 0x3e, 0xf7, - 0x96, 0xbf, 0x2a, 0xff, 00, 0xbc, 0xdd, 0x7, 0xe3, 0x5e, - 0x8d, 0xa7, 0x7e, 0xcd, 0xfe, 0x20, 0xb9, 0x40, 0xd7, 0x57, - 0xb6, 0x56, 0x79, 0xfe, 0x1d, 0xcd, 0x23, 0xf, 0xc8, 0x63, - 0xf5, 0xaf, 0x7a, 0xf0, 0xb7, 0x86, 0xac, 0xfc, 0x27, 0xa1, - 0xda, 0xe9, 0xb6, 0x51, 0x85, 0x8e, 0x25, 0x1, 0x9b, 0x1c, - 0xc8, 0xdd, 0xd8, 0xfb, 0x93, 0x5a, 0xf5, 0xfa, 0x5e, 0x13, - 0x86, 0x70, 0xf0, 0x82, 0x78, 0x96, 0xe5, 0x2f, 0xb9, 0x7f, - 0x99, 0xef, 0xd2, 0xcb, 0xe0, 0x95, 0xea, 0x6a, 0xcf, 0x2, - 0x5f, 0xd9, 0x8e, 0xeb, 0x1f, 0x36, 0xbf, 0x8, 0x3e, 0xd6, - 0xc4, 0xff, 00, 0xec, 0xd4, 0xd7, 0xfd, 0x98, 0xef, 00, - 0xf9, 0x35, 0xe8, 0x9, 0xff, 00, 0x6a, 0xd9, 0x87, 0xfe, - 0xcd, 0x5e, 0xff, 00, 0x45, 0x7a, 0x5f, 0xea, 0xfe, 0x5d, - 0xff, 00, 0x3e, 0xff, 00, 0x17, 0xfe, 0x67, 0x47, 0xd4, - 0xa8, 0x76, 0xfc, 0x59, 0xf3, 0x8d, 0xd7, 0xec, 0xd7, 0xaf, - 0x44, 0x9, 0x83, 0x51, 0xb0, 0x9f, 0xd9, 0x8b, 0xa1, 0xff, - 00, 0xd0, 0x4d, 0x73, 0x3a, 0xb7, 0xc1, 0x7f, 0x17, 0x69, - 0x21, 0x99, 0xb4, 0xa6, 0xba, 0x41, 0xfc, 0x56, 0x8e, 0x24, - 0xfd, 0x7, 0x3f, 0xa5, 0x7d, 0x69, 0x45, 0x73, 0x54, 0xe1, - 0xac, 0xc, 0xd7, 0xb9, 0x78, 0xfc, 0xff, 00, 0xcc, 0xce, - 0x59, 0x7d, 0x17, 0xb5, 0xd1, 0xf0, 0xe5, 0xee, 0x9d, 0x77, - 0xa6, 0xc9, 0xe5, 0xdd, 0xda, 0xcd, 0x6b, 0x27, 0xf7, 0x66, - 0x8c, 0xa1, 0xfc, 0x8d, 0x7a, 0x5f, 0xec, 0xed, 0xa3, 0xb, - 0xff, 00, 0x1b, 0xcb, 0x78, 0xe3, 0x2b, 0x63, 0x6e, 0xce, - 0xa7, 0xd1, 0x9b, 0xe5, 0x1f, 0xa1, 0x6a, 0xfa, 0x3e, 0xff, - 00, 0x4d, 0xb4, 0xd5, 0x6d, 0xda, 0xb, 0xcb, 0x68, 0xae, - 0xa1, 0x61, 0x83, 0x1c, 0xc8, 0x18, 0x1f, 0xc0, 0xd6, 0x4f, - 0x86, 0xfc, 0xd, 0xa3, 0x78, 0x46, 0xea, 0xf6, 0x7d, 0x26, - 0xd3, 0xec, 0x8d, 0x77, 0xb7, 0xcc, 0x55, 0x62, 0x57, 0xe5, - 0xce, 0x30, 0xf, 0x4e, 0xa7, 0xa5, 0x71, 0x61, 0xb8, 0x71, - 0xe1, 0x71, 0x74, 0xeb, 0x29, 0xa9, 0x45, 0x3b, 0xeb, 0xa3, - 0xf2, 0xfc, 0x4c, 0x69, 0xe0, 0x1d, 0x3a, 0x91, 0x95, 0xee, - 0x91, 0xbf, 0x45, 0x14, 0x57, 0xdc, 0x1e, 0xc0, 0x51, 0x45, - 0x14, 00, 0x57, 0x13, 0xf1, 0x6e, 0xe3, 0xc8, 0xf0, 0xa4, - 0xe3, 0xfb, 0xc0, 0xd7, 0x6d, 0x5e, 0x6b, 0xf1, 0xca, 0xe3, - 0xc9, 0xf0, 0xbb, 0xc, 0xe3, 0x2a, 0xd5, 0xc5, 0x8d, 0x97, - 0x2e, 0x1e, 0x6f, 0xc8, 0xe7, 0xc4, 0x3b, 0x52, 0x93, 0xf2, - 0x3e, 0x20, 0xf1, 0x4, 0xbe, 0x65, 0xfd, 0xd3, 0x7a, 0xb9, - 0xaf, 0x9e, 0xfe, 0x34, 0xc4, 0x75, 0x29, 0x6d, 0xec, 0x14, - 0xe0, 0xdd, 0x4f, 0x1c, 00, 0xff, 00, 0xbc, 0xc1, 0x7f, - 0xad, 0x7b, 0xe6, 0xae, 0xfb, 0xa5, 0x98, 0xfa, 0xb1, 0xaf, - 0x12, 0xf1, 0x1d, 0xa7, 0xf6, 0xd7, 0xc5, 0x2f, 0x6, 0xe9, - 0xa3, 0xfe, 0x5e, 0xb5, 0xdb, 0x18, 0x78, 0xf7, 0x9d, 0x5, - 0x7c, 0x1e, 0x4d, 0x1b, 0xd4, 0x47, 0xe2, 0xf4, 0xd7, 0xb4, - 0xcd, 0x28, 0xaf, 0xef, 0x1f, 0xb2, 0xba, 0x6c, 0x1f, 0x65, - 0xd3, 0xed, 0x61, 0xff, 00, 0x9e, 0x71, 0x2a, 0x7e, 0x40, - 0xa, 0x2a, 0xcd, 0x15, 0xfa, 0x49, 0xfb, 0x80, 0x51, 0x45, - 0x14, 00, 0x51, 0x45, 0x21, 0x21, 0x41, 0x24, 0xe0, 0xe, - 0x49, 0xa0, 0xf, 0x9d, 0x7f, 0x6b, 0xdf, 0x1a, 0x2d, 0xb6, - 0x93, 0xa6, 0x78, 0x5e, 0x16, 0x6, 0x5b, 0xa7, 0xfb, 0x5d, - 0xc0, 0xd, 0xc8, 0x45, 0x38, 0x50, 0x47, 0xbb, 0x64, 0xff, - 00, 0xc0, 0x6b, 0xc3, 0xbe, 0x10, 0xf8, 0x59, 0xbc, 0x59, - 0xe3, 0xad, 0x36, 0xcf, 0x69, 0x68, 0x84, 0x81, 0xdf, 0x3, - 0xb0, 0xe6, 0x9d, 0xf1, 0xa3, 0xc6, 0x63, 0xc7, 0x7f, 0x11, - 0xf5, 0x5d, 0x46, 0x27, 0xdf, 0x67, 0x1b, 0x7d, 0x9a, 0xd8, - 0x83, 0x91, 0xe5, 0xa7, 00, 0x8f, 0x62, 0x77, 0x37, 0xe3, - 0x5e, 0xd3, 0xfb, 0x25, 0xf8, 0x3f, 0xca, 0xb7, 0xbe, 0xd7, - 0x66, 0x8c, 0x65, 0x8f, 0x95, 0x13, 0x11, 0xf9, 0xd7, 0xe7, - 0x55, 0x3f, 0xe1, 0x4f, 0x33, 0x51, 0x5a, 0xc6, 0xff, 00, - 0x82, 0xff, 00, 0x3f, 0xd4, 0xfc, 0xe6, 0x2f, 0xfb, 0x53, - 0x35, 0x72, 0xde, 0x29, 0xfe, 0xb, 0xfc, 0xcf, 0xa3, 0x60, - 0x85, 0x6d, 0xe1, 0x8e, 0x24, 0x18, 0x44, 0x50, 0xa0, 0x7b, - 0xa, 0x92, 0x8a, 0x2b, 0xf4, 0x5d, 0x8f, 0xd1, 0x82, 0x8a, - 0x28, 0xa0, 0x2, 0xb3, 0x3c, 0x4d, 0xe2, 0x4d, 0x33, 0xc1, - 0xde, 0x1e, 0xd4, 0x75, 0xcd, 0x66, 0xf2, 0x2d, 0x3f, 0x4a, - 0xd3, 0xe0, 0x7b, 0x9b, 0xab, 0xa9, 0x9b, 0x6a, 0x45, 0x1a, - 0x8c, 0xb3, 0x13, 0xf4, 0x15, 0xa7, 0x5f, 0x1, 0xff, 00, - 0xc1, 0x62, 0x3e, 0x30, 0xc9, 0xe0, 0xdf, 0x81, 0x1a, 0x3f, - 0x82, 0x2c, 0xa7, 0x31, 0xde, 0x78, 0xae, 0xfb, 0xfd, 0x20, - 0x2b, 0x60, 0xfd, 0x92, 0xc, 0x3b, 0xf, 0xa1, 0x73, 0x10, - 0xfa, 0x3, 0x40, 0x1f, 0x9e, 0x9f, 0xb6, 0x97, 0xed, 0x9b, - 0xe2, 0x4f, 0xda, 0xaf, 0xc7, 0x93, 0xb7, 0x9f, 0x36, 0x9b, - 0xe0, 0x8b, 0x9, 0x5e, 0x3d, 0x2b, 0x47, 0x8e, 0x42, 0x11, - 0x90, 0x37, 0x13, 0xcc, 0x3a, 0x34, 0x8c, 00, 0x3c, 0xfd, - 0xde, 0x83, 0xb9, 0x3a, 0x7f, 0x7, 0xbf, 0xe0, 0x9b, 0x1f, - 0x1c, 0x7e, 0x32, 0x68, 0x56, 0xfa, 0xdd, 0x9e, 0x81, 0x6b, - 0xe1, 0xdd, 0x1e, 0xe6, 0x31, 0x35, 0xbd, 0xd7, 0x88, 0x2e, - 0x7e, 0xcc, 0x66, 0x43, 0xc8, 0x65, 0x8c, 0x6, 0x7c, 0x63, - 0x9c, 0x95, 00, 0xd6, 0x6f, 0xfc, 0x13, 0xbb, 0xe1, 0xbe, - 0x87, 0xf1, 0x4b, 0xf6, 0xb4, 0xf0, 0x66, 0x93, 0xe2, 0x25, - 0x82, 0x7d, 0x32, 0xdc, 0xcd, 0xa8, 0x1b, 0x4b, 0x90, 0xa, - 0x5d, 0x3c, 0x31, 0x97, 0x48, 0xf0, 0x7a, 0xfc, 0xc0, 0x36, - 0x3b, 0x85, 0x35, 0xfb, 0x39, 0xfb, 0x62, 0x7c, 0x66, 0xb7, - 0xf8, 0x5, 0xfb, 0x39, 0x78, 0xc3, 0xc5, 0x2, 0x45, 0x86, - 0xf9, 0x2c, 0xcd, 0x96, 0x9a, 0x83, 0x8d, 0xd7, 0x52, 0x8d, - 0x91, 00, 0x3d, 0x89, 0xdd, 0xf4, 0x53, 0x4c, 0x84, 0xaf, - 0xab, 0x3f, 0x9e, 0x6f, 0x16, 0x78, 0x7d, 0xbc, 0x27, 0xe2, - 0x7d, 0x5b, 0x45, 0x7b, 0xcb, 0x6d, 0x41, 0xf4, 0xeb, 0xa9, - 0x2d, 0x5a, 0xea, 0xcd, 0x8b, 0x43, 0x29, 0x46, 0x2a, 0x59, - 0x9, 00, 0x95, 0x24, 0x70, 0x70, 0x2b, 0xf7, 0xe7, 0xf6, - 0x3, 0xf8, 0x22, 0x3e, 0x5, 0x7e, 0xcc, 0x3e, 0x14, 0xd2, - 0x67, 0x8b, 0xcb, 0xd6, 0x35, 0x38, 0xbf, 0xb6, 0x35, 0x1c, - 0x8f, 0x9b, 0xce, 0x9c, 0x6, 0xda, 0x7f, 0xdd, 0x4d, 0x89, - 0xff, 00, 0x1, 0xaf, 0xc5, 0x9f, 0xd8, 0xf3, 0xe0, 0xb4, - 0xbf, 0xb4, 0xf, 0xed, 0x17, 0xe1, 0xf, 0xa, 0x3a, 0x79, - 0xb6, 0x12, 0x5d, 0xb, 0xdd, 0x49, 0x98, 0x64, 0xb, 0x58, - 0xbf, 0x79, 0x2e, 0x7f, 0xde, 00, 0x27, 0xd5, 0xc5, 0x7e, - 0xd9, 0xfe, 0xd9, 0x7f, 0xb4, 0x8e, 0x8d, 0xfb, 0x30, 0x7c, - 0xf, 0xd5, 0xf5, 0x56, 0xbb, 0x82, 0x1f, 0x11, 0x5d, 0x5b, - 0x3d, 0x9e, 0x83, 0xa7, 0xe4, 0x6f, 0x9a, 0xe0, 0xae, 0xd5, - 0x60, 0xbd, 0x76, 0x26, 0x43, 0x31, 0xec, 0x6, 0x3a, 0x91, - 0x43, 0x5, 0xdc, 0xfc, 0x4a, 0xfd, 0xb3, 0x75, 0xfb, 0x5f, - 0x13, 0x7e, 0xd5, 0x7f, 0x14, 0xf5, 0x1b, 0x26, 0x57, 0xb5, - 0x93, 0x5e, 0xb9, 0x44, 0x74, 0xe8, 0xdb, 0x1b, 0x61, 0x3f, - 0x89, 0x52, 0x6b, 0xf5, 0x7f, 0xfe, 0x9, 0x19, 0xa1, 0x49, - 0xa4, 0xfe, 0xc8, 0x36, 0x77, 0x72, 0x2e, 0xdf, 0xed, 0x3d, - 0x66, 0xf6, 0xe5, 0x33, 0xdd, 0x43, 0x2c, 0x59, 0xfc, 0xe3, - 0x6a, 0xfc, 0x50, 0xd1, 0xf4, 0x9d, 0x57, 0xc7, 0x5e, 0x2a, - 0xb3, 0xd3, 0x6c, 0xd2, 0x4d, 0x43, 0x5a, 0xd5, 0xef, 0x12, - 0x8, 0x97, 0xab, 0xcd, 0x3c, 0xaf, 0x81, 0xf8, 0x96, 0x6a, - 0xfe, 0x91, 0x3e, 0x2, 0xfc, 0x2c, 0xb5, 0xf8, 0x27, 0xf0, - 0x73, 0xc2, 0x3e, 0x8, 0xb4, 0xda, 0x53, 0x46, 0xd3, 0xe3, - 0xb7, 0x92, 0x45, 0x1c, 0x49, 0x2e, 0x37, 0x4a, 0xff, 00, - 0xf0, 0x27, 0x2c, 0x7f, 0x1a, 0x18, 0x2d, 0xee, 0x77, 0x53, - 0xcc, 0x96, 0xd0, 0xc9, 0x34, 0x8c, 0x12, 0x38, 0xd4, 0xb3, - 0x31, 0xe8, 00, 0x19, 0x26, 0xbe, 0x2c, 0xf1, 0x46, 0xb5, - 0x27, 0x88, 0xfc, 0x45, 0xa8, 0xea, 0x52, 0x12, 0x4d, 0xcc, - 0xed, 0x20, 0xcf, 0x65, 0xcf, 0xca, 0x3f, 0x1, 0x81, 0x5f, - 0x4a, 0xfc, 0x73, 0xf1, 0x11, 0xd0, 0x7c, 0x3, 0x75, 0x1c, - 0x6f, 0xb2, 0xe2, 0xf9, 0x85, 0xaa, 0x63, 0xae, 0xf, 0x2f, - 0xff, 00, 0x8e, 0x82, 0x3f, 0x1a, 0xf9, 0x5a, 0xbf, 0x38, - 0xe2, 0x8c, 0x4f, 0x35, 0x48, 0x61, 0x97, 0x4d, 0x5f, 0xcf, - 0x6f, 0xeb, 0xcc, 0xf1, 0x33, 0x1a, 0x97, 0x92, 0xa6, 0xba, - 0x5, 0x14, 0x51, 0x5f, 0xa, 0x79, 0x1, 0x45, 0x14, 0x50, - 0x1, 0x46, 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa2, 0x80, 0xa, - 0x7c, 0x10, 0x49, 0x73, 0x32, 0xc5, 0xc, 0x6f, 0x2c, 0xae, - 0x70, 0xa8, 0x8a, 0x59, 0x89, 0xf6, 0x2, 0xb4, 0x3c, 0x3f, - 0xa9, 0xd9, 0xe9, 0x5a, 0x82, 0xcd, 0x7d, 0xa5, 0xc3, 0xab, - 0x5b, 0xff, 00, 0x14, 0x12, 0xc8, 0xc9, 0xf9, 0x15, 0x3d, - 0x7e, 0xb9, 0xaf, 0xa9, 0xbe, 0x1a, 0x5c, 0xf8, 0x5f, 0x58, - 0xd1, 0x56, 0xff, 00, 0xc3, 0xda, 0x7d, 0xbd, 0x90, 0xce, - 0xc9, 0x63, 0x58, 0x82, 0xc9, 0x1b, 0xe3, 0xee, 0xb1, 0xea, - 0x7e, 0xb9, 0xe6, 0xbd, 0xdc, 0xb3, 0x2c, 0x8e, 0x63, 0x2e, - 0x5f, 0x6a, 0xa2, 0xfb, 0x6b, 0x7f, 0xf2, 0xfc, 0x4e, 0xbc, - 0x3e, 0x1d, 0x57, 0x76, 0xe6, 0xb1, 0xe2, 0xbe, 0x9, 0xf8, - 0xd, 0xad, 0x78, 0x86, 0x54, 0x9b, 0x55, 0x56, 0xd1, 0xec, - 0x3a, 0x9f, 0x30, 0x7e, 0xf9, 0xc7, 0xa0, 0x5e, 0xdf, 0x53, - 0xf9, 0x1a, 0xfa, 0x1f, 0xc3, 0x5e, 0x18, 0xd3, 0xbc, 0x25, - 0xa5, 0xc7, 0x61, 0xa6, 0xc0, 0x20, 0x81, 0x79, 0x27, 0xab, - 0x39, 0xee, 0xcc, 0x7b, 0x9a, 0xd5, 0xa2, 0xbf, 0x4b, 0xc0, - 0x65, 0x58, 0x6c, 0xbd, 0x5e, 0x92, 0xbc, 0xbb, 0xbd, 0xff, - 00, 0xe0, 0x1f, 0x41, 0x47, 0xd, 0x4e, 0x87, 0xc3, 0xbf, - 0x70, 0xa2, 0x8a, 0x2b, 0xd8, 0x3a, 0x82, 0x8a, 0x28, 0xa0, - 0x2, 0xb1, 0x3c, 0x69, 0xac, 0xaf, 0x87, 0xbc, 0x27, 0xaa, - 0xea, 0x5, 0xb6, 0x98, 0x2d, 0xdc, 0xa7, 0xfb, 0xe4, 0x61, - 0x47, 0xe6, 0x45, 0x6d, 0xd7, 0x91, 0xfe, 0xd1, 0xfa, 0xd9, - 0xb2, 0xf0, 0xa5, 0x9e, 0x9c, 0x8d, 0x87, 0xbd, 0xb8, 0xcb, - 0xf, 0x54, 0x41, 0x93, 0xff, 00, 0x8f, 0x15, 0xaf, 0x3f, - 0x30, 0xaf, 0xf5, 0x5c, 0x2d, 0x4a, 0xdd, 0x97, 0xe3, 0xd3, - 0xf1, 0x30, 0xaf, 0x3f, 0x67, 0x4e, 0x52, 0x3e, 0x70, 0x24, - 0x93, 0x93, 0xc9, 0xa2, 0x8a, 0x2b, 0xf0, 0xf3, 0xe4, 0x42, - 0x8a, 0x29, 0x42, 0x96, 0x20, 0x1, 0x92, 0x78, 0x2, 0x80, - 0x3e, 0x93, 0xfd, 0x9c, 0xf4, 0x71, 0x65, 0xe0, 0xcb, 0x8b, - 0xe6, 0x5c, 0x49, 0x7b, 0x72, 0xc4, 0x1f, 0xf6, 0x13, 0xe5, - 0x1f, 0xae, 0xea, 0xf5, 0x7a, 0xc4, 0xf0, 0x5e, 0x88, 0x3c, - 0x39, 0xe1, 0x4d, 0x2f, 0x4e, 00, 0x6, 0x82, 0x5, 0xf, - 0x8e, 0xec, 0x79, 0x63, 0xf9, 0x93, 0x5b, 0x75, 0xfb, 0x8e, - 0x2, 0x87, 0xd5, 0xb0, 0xb4, 0xe9, 0x76, 0x4b, 0xef, 0xeb, - 0xf8, 0x9f, 0x5d, 0x42, 0x1e, 0xce, 0x9c, 0x62, 0x14, 0x51, - 0x45, 0x77, 0x9b, 0x85, 0x79, 0x1f, 0xed, 0x15, 0xe2, 0x86, - 0xd3, 0x3c, 0x35, 0x6d, 0xa4, 0x42, 0xfb, 0x65, 0xd4, 0x1f, - 0x32, 0x1, 0xd7, 0xca, 0x5c, 0x13, 0xf9, 0x9c, 0x7e, 0x46, - 0xbd, 0x72, 0xbe, 0x51, 0xf8, 0xdd, 0xae, 0xb6, 0xb7, 0xf1, - 0xb, 0x50, 0x4d, 0xdb, 0xa1, 0xb3, 0xc5, 0xac, 0x63, 0x3d, - 0x36, 0x8f, 0x9b, 0xff, 00, 0x1e, 0x2d, 0x5f, 0x37, 0x9f, - 0xe2, 0x9e, 0x1b, 0x5, 0x25, 0x1d, 0xe5, 0xa7, 0xf9, 0xfe, - 0x7, 0x6, 0x36, 0xa7, 0x25, 0x16, 0x97, 0x5d, 0xe, 0xa, - 0x8a, 0x28, 0xaf, 0xc8, 0xcf, 0x99, 0xa, 0x28, 0xa9, 0x2d, - 0xe0, 0x7b, 0xab, 0x88, 0xa1, 0x88, 0x6e, 0x92, 0x46, 0x8, - 0xab, 0xea, 0x49, 0xc0, 0x14, 0xd2, 0xbe, 0x88, 0xf, 0x79, - 0xfd, 0x9c, 0xfc, 0x18, 0xb1, 0x5a, 0x5c, 0x78, 0x92, 0xe1, - 0x33, 0x24, 0xa5, 0xa0, 0xb6, 0xc8, 0xe8, 0xa3, 0xef, 0x30, - 0xfa, 0x9e, 0x3f, 0x3, 0xeb, 0x5e, 0xdd, 0x59, 0xbe, 0x1b, - 0xd1, 0x62, 0xf0, 0xee, 0x83, 0x61, 0xa6, 0xc2, 00, 0x4b, - 0x68, 0x56, 0x3c, 0x8e, 0xe4, 0xe, 0x4f, 0xe2, 0x72, 0x7f, - 0x1a, 0xd2, 0xaf, 0xdb, 0xb2, 0xfc, 0x2a, 0xc1, 0x61, 0xa1, - 0x45, 0x6e, 0x96, 0xbe, 0xbd, 0x4f, 0xae, 0xa1, 0x4d, 0x52, - 0xa6, 0xa2, 0x14, 0x51, 0x45, 0x7a, 0x26, 0xe1, 0x45, 0x14, - 0x50, 0x1, 0x59, 0x1e, 0x2e, 0xd3, 0xd7, 0x56, 0xf0, 0xb6, - 0xad, 0x66, 0xe3, 0x2b, 0x35, 0xac, 0x8b, 0xf8, 0xed, 0x38, - 0xfd, 0x6b, 0x5e, 0xaa, 0x6a, 0xf2, 0x88, 0x34, 0x9b, 0xd9, - 0x1b, 0xee, 0xa4, 0xe, 0xc7, 0xf0, 0x53, 0x59, 0xd5, 0x4a, - 0x50, 0x92, 0x7b, 0x59, 0x93, 0x25, 0x78, 0xb4, 0xcf, 0x87, - 0xe8, 0xa2, 0x8a, 0xfc, 0xc, 0xf8, 0xc0, 0xa2, 0x8a, 0x28, - 0x3, 0x7b, 0xc0, 0x57, 0x26, 0xd3, 0xc6, 0xda, 0x14, 0xa0, - 0xe3, 0x17, 0xb0, 0x8f, 0xc0, 0xb8, 0x7, 0xf9, 0xd7, 0xd9, - 0xb5, 0xf1, 0x67, 0x83, 0x62, 0x33, 0x78, 0xbb, 0x44, 0x45, - 0xea, 0xd7, 0xb0, 0x8f, 0xfc, 0x7c, 0x57, 0xda, 0x75, 0xfa, - 0x47, 0xa, 0xb7, 0xec, 0x6a, 0xae, 0x97, 0x5f, 0x91, 0xee, - 0xe5, 0xbf, 0xc, 0x8c, 0x3f, 0x1c, 0x86, 0x6f, 0x5, 0xeb, - 0xa1, 0x33, 0xbb, 0xec, 0x33, 0x63, 0x1f, 0xee, 0x1a, 0xf8, - 0xc2, 0xbe, 0xe6, 0xb9, 0xb7, 0x4b, 0xbb, 0x69, 0x60, 0x90, - 0x6e, 0x8e, 0x54, 0x28, 0xc0, 0xf7, 0x4, 0x60, 0xd7, 0xc5, - 0x9e, 0x25, 0xd0, 0xa7, 0xf0, 0xd6, 0xbd, 0x7d, 0xa6, 0x5c, - 0x29, 0x59, 0x2d, 0xe5, 0x28, 0x9, 0x1f, 0x79, 0x7f, 0x85, - 0xbf, 0x11, 0x83, 0xf8, 0xd7, 0x37, 0x15, 0x52, 0x95, 0xe9, - 0x55, 0xe9, 0xaa, 0x23, 0x32, 0x8b, 0xbc, 0x64, 0x66, 0x51, - 0x45, 0x15, 0xf0, 0x7, 0x8a, 0x14, 0xaa, 0xc5, 0x18, 0x32, - 0x92, 0x18, 0x1c, 0x82, 0x3b, 0x52, 0x51, 0x40, 0x1f, 0x49, - 0xfc, 0x39, 0xf8, 0xe5, 0xa6, 0x6b, 0x16, 0x30, 0x59, 0x6b, - 0x93, 0xae, 0x9f, 0xa9, 0x46, 0xa1, 0xc, 0xf2, 0x9c, 0x45, - 0x37, 0x6c, 0xe7, 0xf8, 0x4f, 0xa8, 0x3f, 0x85, 0x7a, 0xac, - 0x53, 0x47, 0x3c, 0x6b, 0x24, 0x4e, 0xb2, 0x46, 0xc3, 0x21, - 0x90, 0xe4, 0x11, 0xf5, 0xaf, 0x85, 0xeb, 0x63, 0x43, 0xf1, - 0x86, 0xb7, 0xe1, 0xa3, 0xff, 00, 0x12, 0xcd, 0x4e, 0xe6, - 0xd1, 0x7f, 0xe7, 0x9a, 0x3e, 0x50, 0xff, 00, 0xc0, 0x4f, - 0x1f, 0xa5, 0x7d, 0xbe, 0xb, 0x89, 0xaa, 0x52, 0x8a, 0x86, - 0x26, 0x3c, 0xd6, 0xea, 0xb7, 0xff, 00, 0x83, 0xf8, 0x1e, - 0xbd, 0x2c, 0xc2, 0x51, 0x56, 0xa8, 0xae, 0x7d, 0xa7, 0x45, - 0x7c, 0xdf, 0xa0, 0xfe, 0xd1, 0xda, 0xed, 0x8e, 0xd4, 0xd4, - 0xed, 0x2d, 0xf5, 0x38, 0xc7, 0x56, 0x5f, 0xdd, 0x49, 0xf9, - 0x8c, 0x8f, 0xd2, 0xbb, 0xed, 0x13, 0xf6, 0x87, 0xf0, 0xd6, - 0xa4, 0xc1, 0x2f, 0x52, 0xe7, 0x4b, 0x73, 0xfc, 0x52, 0xa6, - 0xf4, 0xfc, 0xd7, 0x27, 0xf3, 0x15, 0xf5, 0x74, 0x33, 0xcc, - 0x5, 0x7f, 0xf9, 0x79, 0xca, 0xfc, 0xf4, 0xff, 00, 0x81, - 0xf8, 0x9e, 0x8c, 0x31, 0x94, 0x67, 0xd6, 0xde, 0xa7, 0xa9, - 0x51, 0x59, 0xba, 0x3f, 0x89, 0x34, 0xaf, 0x10, 0x45, 0xe6, - 0x69, 0xba, 0x85, 0xbd, 0xea, 0xf7, 0xf2, 0x64, 0xc, 0x47, - 0xd4, 0x75, 0x15, 0xa5, 0x5e, 0xe4, 0x65, 0x19, 0xae, 0x68, - 0xbb, 0xa3, 0xb1, 0x34, 0xd5, 0xd0, 0x51, 0x45, 0x15, 0x43, - 0xa, 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa2, 0x80, 0xa, 0xf2, - 0xf, 0xda, 0x1e, 0xeb, 0xca, 0xd0, 0x36, 0xe7, 0xfe, 0x59, - 0x9a, 0xf5, 0xfa, 0xf0, 0x6f, 0xda, 0x5e, 0xf8, 0x47, 0x61, - 0xe5, 0x67, 0x91, 0x1d, 0x79, 0x19, 0xb4, 0xb9, 0x30, 0x75, - 0x1f, 0x91, 0xc1, 0x8e, 0x97, 0x2e, 0x1e, 0x4c, 0xf9, 0x7, - 0x53, 0x6f, 0x95, 0xcf, 0xb9, 0xaf, 0x34, 0xf0, 0x2d, 0x92, - 0xeb, 0x9f, 0xb5, 0x7, 0xc3, 0x3b, 0x26, 0x1b, 0x81, 0xd7, - 0xad, 0xe4, 0xc7, 0xfb, 0x84, 0xbf, 0xfe, 0xcb, 0x5e, 0x8d, - 0xaa, 0x36, 0x22, 0x63, 0xec, 0x6b, 0x94, 0xfd, 0x9b, 0xec, - 0xff, 00, 0xb6, 0x3f, 0x6c, 0xbf, 0x87, 0xf1, 0xe3, 0x70, - 0x86, 0x7b, 0x9b, 0x93, 0xed, 0xb2, 0xda, 0x53, 0x9f, 0xcf, - 0x15, 0xf2, 0xd9, 0x24, 0x7d, 0xf3, 0xf2, 0x3c, 0xb1, 0x7b, - 0x4c, 0xe2, 0x97, 0x95, 0xd9, 0xfa, 0xcf, 0x45, 0x14, 0x57, - 0xe8, 0x7, 0xed, 0x61, 0x45, 0x14, 0x50, 0x1, 0x5c, 0x3f, - 0xc6, 0x8f, 0x18, 0xf, 0x4, 0x7c, 0x37, 0xd6, 0x35, 0x5, - 0x62, 0xb7, 0xf, 0x17, 0xd9, 0xad, 0xf6, 0xf5, 0xf3, 0x1f, - 0xe5, 0x53, 0xf8, 0x64, 0x9f, 0xc2, 0xbb, 0x8a, 0xf9, 0x5f, - 0xf6, 0xbf, 0xf1, 0x87, 0xda, 0xb5, 0x6d, 0x2b, 0xc3, 0x31, - 0x1f, 0x92, 0xd9, 0x3e, 0xd9, 0x39, 0xe7, 0xef, 0x36, 0x42, - 0x8f, 0xcb, 0x27, 0xf1, 0xaf, 0x37, 0x31, 0xc4, 0x7d, 0x5b, - 0xd, 0x39, 0xf5, 0xd9, 0x7a, 0xb3, 0xca, 0xcd, 0x31, 0x3f, - 0x54, 0xc2, 0x4e, 0xa2, 0xdf, 0x65, 0xea, 0xff, 00, 0xab, - 0x9f, 0x3e, 0x58, 0x5a, 0xbd, 0xe5, 0xd4, 0x30, 0x46, 0x37, - 0x3b, 0xb0, 0x50, 0x7, 0xa9, 0xaf, 0xd0, 0x3f, 0x86, 0x9e, - 0x19, 0x8f, 0xc2, 0x7e, 0xc, 0xd3, 0x6c, 0x11, 0x2, 0xb8, - 0x88, 0x34, 0x9e, 0xec, 0x47, 0x35, 0xf2, 0x27, 0xec, 0xf7, - 0xe1, 0x13, 0xe2, 0x9f, 0x1f, 0x5a, 0x97, 0x5c, 0xdb, 0xdb, - 0x7e, 0xf5, 0xcf, 0xd3, 0xa5, 0x7d, 0xc4, 0xa0, 0x28, 00, - 0x70, 0x7, 0x15, 0xf3, 0xdc, 0x3d, 0x87, 0xd2, 0x78, 0x87, - 0xe8, 0xbf, 0x53, 0xc2, 0xe1, 0xcc, 0x37, 0x25, 0x39, 0x57, - 0x7d, 0x74, 0x42, 0xd1, 0x45, 0x15, 0xf6, 0x67, 0xd9, 0x5, - 0x14, 0x51, 0x40, 0x5, 0x7e, 0x55, 0x7f, 0xc1, 0x6d, 0x3c, - 0x2b, 0xa8, 0x36, 0xa3, 0xf0, 0xc7, 0xc4, 0x81, 0x19, 0xb4, - 0xa5, 0x8a, 0xef, 0x4f, 0x67, 0x1d, 0x12, 0x62, 0x52, 0x40, - 0xf, 0xd5, 0x43, 0x7f, 0xdf, 0x26, 0xbf, 0x52, 0xb5, 0x4d, - 0x5e, 0xc7, 0x43, 0xb3, 0x6b, 0xbd, 0x46, 0xf6, 0xde, 0xc2, - 0xd5, 0x48, 0x56, 0x9e, 0xea, 0x55, 0x8d, 0x1, 0x27, 00, - 0x16, 0x62, 0x7, 0x24, 0x81, 0x5e, 0x73, 0xf1, 0xc7, 0xe1, - 0xf, 0x82, 0xff, 00, 0x69, 0xef, 0x86, 0x1a, 0x8f, 0x83, - 0x35, 0xeb, 0x98, 0xee, 0xf4, 0xeb, 0xbd, 0xb2, 0xc5, 0x73, - 0x63, 0x3a, 0x99, 0x6d, 0xa6, 0x5e, 0x52, 0x54, 0x23, 0x3c, - 0x83, 0xdb, 0xa1, 0x4, 0x83, 0xc1, 0xa0, 0x4f, 0x53, 0xf9, - 0xcd, 0xf0, 0xaf, 0x8a, 0xb5, 0x8f, 0x3, 0xf8, 0x8b, 0x4f, - 0xd7, 0xb4, 0xd, 0x46, 0xe3, 0x49, 0xd6, 0x74, 0xf9, 0x44, - 0xf6, 0xb7, 0xb6, 0xaf, 0xb6, 0x48, 0x9c, 0x74, 0x20, 0xfe, - 0x9e, 0xe0, 0x90, 0x6b, 0xd8, 0x7e, 0x39, 0x7e, 0xda, 0xdf, - 0x14, 0xbf, 0x68, 0xbf, 0x1, 0x68, 0xfe, 0x13, 0xf1, 0xce, - 0xa9, 0x69, 0xa9, 0x58, 0x69, 0x97, 0x42, 0xf1, 0x27, 0x86, - 0xd1, 0x60, 0x9a, 0x69, 0x2, 0x32, 0x3, 0x29, 0x5c, 0x2b, - 0x60, 0x33, 0x74, 0x51, 0xc9, 0xaf, 0x44, 0xf8, 0xd9, 0xff, - 00, 0x4, 0xbf, 0xf8, 0xd9, 0xf0, 0xa2, 0xfa, 0xea, 0x5d, - 0x27, 0x44, 0x1e, 0x39, 0xd0, 0x91, 0xd8, 0xc5, 0x7d, 0xa1, - 0xb6, 0xf9, 0x76, 0x67, 0x82, 0xf0, 0x1c, 0x38, 0x6c, 0x76, - 0x50, 0xc3, 0xde, 0xbe, 0x79, 0xb8, 0xf8, 0x25, 0xf1, 0x12, - 0xd2, 0xe4, 0xdb, 0xcd, 0xe0, 0x3f, 0x12, 0xc5, 0x38, 0x38, - 0xf2, 0xdb, 0x48, 0xb8, 0xd, 0x9f, 0xa6, 0xca, 0xa2, 0x35, - 0x3a, 0x5f, 0xd9, 0xdb, 0xf6, 0x95, 0xf1, 0x47, 0xec, 0xc5, - 0xe2, 0xd, 0x5f, 0x5f, 0xf0, 0x7d, 0xa6, 0x96, 0xfa, 0xe5, - 0xfd, 0x9f, 0xd8, 0x56, 0xf7, 0x51, 0xb7, 0x33, 0x1b, 0x68, - 0xcb, 0x6, 0x6f, 0x2c, 0x6e, 0x3, 0x2c, 0x55, 0x73, 0x9c, - 0xfd, 0xd1, 0x5c, 0xdf, 0xc5, 0x9f, 0x8d, 0x1e, 0x35, 0xf8, - 0xe5, 0xe2, 0x63, 0xaf, 0xf8, 0xe3, 0xc4, 0x37, 0x7e, 0x20, - 0xd4, 0x82, 0x94, 0x8d, 0xee, 0x8, 0x9, 0xa, 0x67, 0x3b, - 0x23, 0x45, 0x1, 0x51, 0x7d, 0x94, 0xa, 0xf4, 0xdf, 0x86, - 0x7f, 0xb0, 0x3f, 0xc7, 0x6f, 0x8a, 0x97, 0x31, 0x2e, 0x99, - 0xe0, 0xd, 0x47, 0x4c, 0xb5, 0x7e, 0xb7, 0xba, 0xda, 0xfd, - 0x86, 0x15, 0x1e, 0xa7, 0xcc, 0xc3, 0x1f, 0xc1, 0x4d, 0x7e, - 0x8b, 0xfe, 0xc9, 0xff, 00, 0xf0, 0x4a, 0xf, 0xb, 0xfc, - 0x27, 0xbd, 0xb2, 0xf1, 0x37, 0xc4, 0xbb, 0xb8, 0x3c, 0x65, - 0xe2, 0x6b, 0x79, 0x16, 0x6b, 0x7d, 0x3e, 0x10, 0x46, 0x9d, - 0x6a, 0xe3, 0x90, 0x48, 0x60, 0xc, 0xcc, 0xf, 0x76, 0x1, - 0x78, 0x1f, 0x2f, 0x7a, 0x2, 0xcc, 0xf3, 0xaf, 0xf8, 0x25, - 0x8f, 0xec, 0x3b, 0x79, 0xa4, 0xdd, 0xda, 0xfc, 0x65, 0xf1, - 0xde, 0x9b, 0xf6, 0x79, 0xc, 0x64, 0xf8, 0x73, 0x4d, 0xba, - 0x8c, 0x89, 0x13, 0x3c, 0x1b, 0xb7, 0x53, 0xd3, 0x23, 0x21, - 0x7, 0x5e, 0x4b, 0x7a, 0x57, 0xea, 0x25, 0x22, 0xa8, 0x45, - 0xa, 0xa0, 0x2a, 0x81, 0x80, 00, 0xc0, 0x2, 0xa2, 0xbc, - 0xbb, 0x8e, 0xc6, 0xd2, 0x6b, 0x99, 0x9b, 0x64, 0x30, 0xa1, - 0x91, 0xd8, 0xf6, 00, 0x64, 0xd4, 0xb7, 0x6d, 0x59, 0x7b, - 0x23, 0xe7, 0x5f, 0xda, 0x33, 0xc4, 0x23, 0x50, 0xf1, 0x4d, - 0xae, 0x97, 0x1b, 0xe6, 0x3b, 0x8, 0xb2, 0xe0, 0x1e, 0x3c, - 0xc7, 0xe4, 0xff, 00, 0xe3, 0xa1, 0x7f, 0x3a, 0xf2, 0x4a, - 0xbf, 0xaf, 0x6a, 0xb2, 0x6b, 0xba, 0xd5, 0xf6, 0xa1, 0x29, - 0x26, 0x4b, 0x99, 0x9e, 0x53, 0x9e, 0xd9, 0x39, 0x3, 0xf0, - 0x1c, 0x55, 0xa, 0xfc, 0x3b, 0x1f, 0x89, 0x78, 0xbc, 0x4c, - 0xeb, 0x77, 0x7f, 0x87, 0x4f, 0xc0, 0xf9, 0x1a, 0xd5, 0x3d, - 0xad, 0x47, 0x3e, 0xe1, 0x45, 0x14, 0x57, 0x1, 0x89, 0xdd, - 0x7c, 0x28, 0xf8, 0x72, 0x9f, 0x10, 0xf5, 0x4b, 0xc8, 0xae, - 0x66, 0x96, 0xda, 0xce, 0xda, 0x20, 0xcd, 0x24, 0x20, 0x67, - 0x79, 0x3f, 0x28, 0xe4, 0x63, 0xb3, 0x7e, 0x55, 0xe8, 0xf3, - 0x7e, 0xcc, 0x96, 0x4, 0x1f, 0x27, 0x5c, 0xb9, 0x43, 0xdb, - 0x7c, 0x2a, 0xdf, 0xc8, 0x8a, 0xde, 0xf8, 0x1, 0xe1, 0xd6, - 0xd1, 0xbc, 0xe, 0x2e, 0xe5, 0x5d, 0xb3, 0x6a, 0x32, 0x99, - 0xf9, 0xeb, 0xb0, 0x70, 0xbf, 0xc8, 0x9f, 0xc6, 0xbd, 0x32, - 0xbf, 0x50, 0xcb, 0x32, 0x5c, 0x2c, 0xf0, 0x70, 0x96, 0x22, - 0x9d, 0xe4, 0xf5, 0xeb, 0xd7, 0x6f, 0xc0, 0xfa, 0x1c, 0x3e, - 0x12, 0x9b, 0xa4, 0x9c, 0xd6, 0xac, 0xf9, 0xa7, 0xc5, 0x1f, - 0xb3, 0xd6, 0xb7, 0xa2, 0x59, 0xc9, 0x75, 0xa7, 0xdc, 0xc7, - 0xab, 0xa4, 0x63, 0x2d, 0x14, 0x68, 0x52, 0x5c, 0x7b, 0x2e, - 0x48, 0x3f, 0x9e, 0x6b, 0xca, 0xd9, 0x4a, 0xb1, 0x56, 0x4, - 0x10, 0x70, 0x41, 0xea, 0x2b, 0xee, 0xaa, 0xf9, 0x77, 0xe3, - 0xd7, 0x85, 0xe2, 0xf0, 0xff, 00, 0x8d, 0x3e, 0xd3, 0x6c, - 0x81, 0x20, 0xd4, 0x63, 0xfb, 0x41, 0x51, 0xd0, 0x49, 0x92, - 0x1f, 0x1f, 0xa1, 0xfc, 0x6b, 0xc5, 0xcf, 0x32, 0x5a, 0x58, - 0x3a, 0x4b, 0x11, 0x87, 0xd1, 0x6c, 0xd6, 0xff, 00, 0x33, - 0x93, 0x17, 0x84, 0x8d, 0x28, 0xf3, 0xc3, 0x63, 0xcd, 0xa8, - 0xa2, 0x8a, 0xf8, 0x93, 0xc9, 0xa, 0xf5, 0xdf, 0xd9, 0xbf, - 0x5b, 0x7b, 0x5f, 0x14, 0xde, 0xe9, 0x85, 0xbf, 0x73, 0x77, - 0x6f, 0xe6, 0x5, 0xff, 00, 0x6d, 0xf, 0x1f, 0xa1, 0x6a, - 0xf2, 0x2a, 0xed, 0xbe, 0xc, 0x5d, 0x7d, 0x93, 0xe2, 0x5e, - 0x8a, 0x73, 0x80, 0xee, 0xf1, 0x9f, 0xc5, 0x18, 0xf, 0xd7, - 0x15, 0xea, 0x65, 0x75, 0x5d, 0x1c, 0x6d, 0x29, 0x2e, 0xe9, - 0x7d, 0xfa, 0x1d, 0x18, 0x79, 0x72, 0xd6, 0x8b, 0xf3, 0x3e, - 0xb5, 0xa2, 0x8a, 0x2b, 0xf6, 0xc3, 0xeb, 0x42, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0xbe, 0x61, 0xfd, 0xa0, - 0xb5, 0xef, 0xed, 0x5f, 0x1d, 0x1b, 0x35, 0x6c, 0xc5, 0xa7, - 0xc2, 0xb1, 0x63, 0xfd, 0xb6, 0xf9, 0x9b, 0xf9, 0xa8, 0xfc, - 0x2b, 0xe9, 0xa9, 0xe7, 0x4b, 0x68, 0x24, 0x9a, 0x43, 0xb6, - 0x38, 0xd4, 0xbb, 0x13, 0xd8, 0x1, 0x93, 0x5f, 0x14, 0xf8, - 0x8f, 0x57, 0x6d, 0x7b, 0x5e, 0xd4, 0x35, 0x17, 0xce, 0x6e, - 0xa7, 0x79, 0x70, 0x7b, 0x2, 0x78, 0x1f, 0x96, 0x2b, 0xe3, - 0x38, 0x9f, 0x11, 0xc9, 0x86, 0x85, 0x15, 0xf6, 0x9f, 0xe0, - 0xbf, 0xe0, 0xd8, 0xf2, 0x73, 0x19, 0xda, 0xa, 0x1d, 0xcc, - 0xea, 0x28, 0xa2, 0xbf, 0x32, 0x3c, 00, 0xae, 0x8f, 0xe1, - 0xd6, 0x8c, 0x75, 0xff, 00, 0x1b, 0xe8, 0xd6, 0x7b, 0x77, - 0x23, 0x5c, 0x2b, 0xb8, 0xc7, 0xf0, 0x2f, 0xcc, 0xdf, 0xa0, - 0x35, 0xce, 0x57, 0xb0, 0x7e, 0xcd, 0x9a, 0x3f, 0xda, 0x7c, - 0x49, 0xa9, 0x6a, 0x2c, 0x32, 0xb6, 0xb6, 0xe2, 0x35, 0x3f, - 0xed, 0x39, 0xff, 00, 0x5, 0x3f, 0x9d, 0x7a, 0x59, 0x6d, - 0xf, 0xac, 0xe3, 0x29, 0xd2, 0xee, 0xff, 00, 0x5, 0xab, - 0x37, 0xa1, 0xf, 0x69, 0x56, 0x31, 0x3e, 0x8b, 0xa2, 0x8a, - 0x2b, 0xf6, 0xe3, 0xeb, 0x82, 0x8a, 0x28, 0xa0, 0x8, 0xee, - 0x26, 0x5b, 0x6b, 0x79, 0x65, 0x73, 0x84, 0x8d, 0x4b, 0x13, - 0xec, 0x6, 0x6b, 0xe2, 0x2d, 0x52, 0xf9, 0xf5, 0x3d, 0x4e, - 0xee, 0xf2, 0x43, 0x97, 0xb8, 0x95, 0xe5, 0x6f, 0xab, 0x12, - 0x7f, 0xad, 0x7d, 0x89, 0xe3, 0xa9, 0xda, 0xd7, 0xc1, 0x5a, - 0xf4, 0xa8, 0x70, 0xc9, 0x63, 0x31, 0x7, 0xdf, 0x61, 0xaf, - 0x8c, 0x6b, 0xf3, 0xce, 0x2a, 0xa8, 0xf9, 0xa9, 0x53, 0xf5, - 0x7f, 0x91, 0xe1, 0xe6, 0x52, 0xd6, 0x31, 0xa, 0x28, 0xa2, - 0xbe, 0x8, 0xf1, 0x82, 0xba, 0xbf, 0x85, 0x9a, 0x60, 0xd5, - 0xbe, 0x20, 0xe8, 0x70, 0x30, 0xca, 0x2d, 0xc0, 0x95, 0xbe, - 0x88, 0xb, 0x7f, 0xec, 0xb5, 0xca, 0x57, 0xa2, 0x7c, 0x4, - 0x50, 0x7e, 0x24, 0xd9, 0x13, 0xd4, 0x45, 0x29, 0x1f, 0xf7, - 0xc1, 0xaf, 0x43, 0x2f, 0x82, 0xa9, 0x8b, 0xa5, 0x17, 0xd6, - 0x4b, 0xf3, 0x36, 0xa2, 0xb9, 0xaa, 0xc5, 0x79, 0xa3, 0xea, - 0x7a, 0x28, 0xa2, 0xbf, 0x70, 0x3e, 0xbc, 0x28, 0xa2, 0x8a, - 00, 0x28, 0xa2, 0x8a, 00, 0x2b, 0x95, 0xf8, 0xa3, 0xaa, - 0xd, 0x1f, 0xe1, 0xfe, 0xb9, 0x71, 0x9c, 0x31, 0xb7, 0x68, - 0x97, 0xfd, 0xe7, 0xf9, 0x47, 0xf3, 0xae, 0xaa, 0xbc, 0x67, - 0xf6, 0x92, 0xf1, 0x1a, 0xdb, 0x68, 0xb6, 0x1a, 0x2a, 0x37, - 0xef, 0x6e, 0xa4, 0xf3, 0xe4, 0x1e, 0x88, 0xbd, 0x3f, 0x36, - 0x3f, 0xf8, 0xed, 0x79, 0x99, 0x9d, 0x75, 0x86, 0xc1, 0xd4, - 0xa8, 0xfb, 0x69, 0xea, 0xf4, 0x47, 0x3e, 0x22, 0x7e, 0xce, - 0x94, 0xa4, 0x7c, 0xf5, 0x45, 0x14, 0x57, 0xe2, 0x47, 0xc9, - 0x5, 0x14, 0x51, 0x40, 0x1d, 0x6f, 0xc2, 0x7b, 0x3f, 0xb7, - 0x7c, 0x45, 0xd0, 0xa3, 0xc6, 0x42, 0xdc, 0x9, 0xf, 0xfc, - 0x4, 0x16, 0xfe, 0x95, 0xf5, 0xf5, 0x7c, 0xe3, 0xfb, 0x37, - 0xe8, 0x7f, 0x6c, 0xf1, 0x45, 0xee, 0xa6, 0xcb, 0x94, 0xb2, - 0x83, 0x62, 0x9f, 0xf6, 0xdc, 0xe3, 0xf9, 0x6, 0xfc, 0xeb, - 0xe8, 0xea, 0xfd, 0x4f, 0x86, 0x68, 0xba, 0x78, 0x27, 0x37, - 0xf6, 0x9b, 0x7f, 0x76, 0x87, 0xd1, 0x65, 0xf1, 0xb5, 0x2b, - 0xf7, 0x61, 0x5e, 0x6b, 0xf1, 0x7f, 0xe1, 0x58, 0xf1, 0xbd, - 0xa2, 0xdf, 0xd8, 0x5, 0x8f, 0x58, 0xb7, 0x42, 00, 0x3c, - 0x9, 0xd7, 0xfb, 0xa4, 0xfa, 0xfa, 0x1f, 0xc3, 0xe9, 0xe9, - 0x54, 0x57, 0xd1, 0xe2, 0x70, 0xd4, 0xf1, 0x74, 0x9d, 0x1a, - 0xaa, 0xe9, 0x9d, 0xf5, 0x29, 0xc6, 0xac, 0x5c, 0x65, 0xb1, - 0xf0, 0xdd, 0xed, 0x8d, 0xc6, 0x9b, 0x75, 0x25, 0xb5, 0xd4, - 0x32, 0x5b, 0xdc, 0x46, 0x76, 0xbc, 0x52, 0x2e, 0xd6, 0x53, - 0xee, 0x2a, 0xa, 0xfb, 0x17, 0xc6, 0x3f, 0xf, 0x34, 0x4f, - 0x1c, 0x42, 0xa3, 0x52, 0xb6, 0xfd, 0xfa, 0xc, 0x25, 0xcc, - 0x47, 0x6c, 0x8b, 0xf8, 0xf7, 0x1e, 0xc7, 0x22, 0xbc, 0x3f, - 0xc5, 0x3f, 0xb3, 0xde, 0xbb, 0xa4, 0x34, 0x92, 0xe9, 0x4f, - 0x1e, 0xaf, 0x6a, 0x39, 0xa, 0xe, 0xc9, 0x80, 0xff, 00, - 0x74, 0xf0, 0x7f, 0x3, 0xf8, 0x57, 0xe6, 0x38, 0xee, 0x1f, - 0xc5, 0x61, 0x5b, 0x95, 0x25, 0xcf, 0x1f, 0x2d, 0xfe, 0x6b, - 0xfc, 0x8f, 0x9e, 0xad, 0x82, 0xa9, 0x4f, 0x58, 0xea, 0x8f, - 0x2a, 0xa2, 0xac, 0x5f, 0x69, 0xf7, 0x5a, 0x65, 0xc3, 0x41, - 0x79, 0x6f, 0x2d, 0xac, 0xcb, 0xd6, 0x39, 0x90, 0xab, 0xf, - 0xc0, 0xd5, 0x7a, 0xf9, 0x86, 0x9c, 0x5d, 0x99, 0xe7, 0xec, - 0x14, 0x51, 0x45, 0x20, 0xa, 0x28, 0xa2, 0x80, 0x25, 0xb5, - 0xbb, 0x9e, 0xc6, 0x75, 0x9a, 0xda, 0x69, 0x2d, 0xe6, 0x5e, - 0x56, 0x48, 0x9c, 0xab, 0xf, 0xa1, 0x15, 0xe9, 0x5e, 0x11, - 0xf8, 0xfb, 0xaf, 0x68, 0x6e, 0x91, 0x6a, 0x64, 0x6b, 0x36, - 0x9d, 0xf, 0x98, 0x42, 0xca, 0xbf, 0x46, 0xc7, 0x3f, 0x8e, - 0x7e, 0xb5, 0xe6, 0x14, 0x57, 0x66, 0x1b, 0x19, 0x5f, 0x9, - 0x2e, 0x6a, 0x13, 0x6b, 0xf2, 0xfb, 0xb6, 0x35, 0xa7, 0x56, - 0x74, 0x9d, 0xe0, 0xec, 0x7d, 0x8f, 0xe0, 0xdf, 0x1f, 0xe8, - 0xfe, 0x38, 0xb4, 0xf3, 0x74, 0xeb, 0x8f, 0xdf, 0x28, 0xfd, - 0xe5, 0xb4, 0xbf, 0x2c, 0xa9, 0xf5, 0x1d, 0xc7, 0xb8, 0xe2, - 0xba, 0x4a, 0xf8, 0x7b, 0x4b, 0xd5, 0x2e, 0xf4, 0x5d, 0x42, - 0xb, 0xdb, 0x19, 0xda, 0xde, 0xea, 0x16, 0xdc, 0x92, 0x27, - 0x50, 0x7f, 0xcf, 0x6a, 0xfa, 0xa3, 0xe1, 0x4f, 0xc4, 0x88, - 0xbc, 0x7d, 0xa3, 0x91, 0x36, 0x23, 0xd5, 0x6d, 0x80, 0x17, - 0x31, 0x81, 0x85, 0x6c, 0xf4, 0x75, 0xf6, 0x38, 0xfc, 0xf, - 0xe1, 0x5f, 0xa4, 0xe5, 0x19, 0xdc, 0x71, 0xcf, 0xd8, 0xd6, - 0x56, 0x9f, 0xe0, 0xff, 00, 0xe0, 0xf9, 0x1e, 0xf6, 0x17, - 0x16, 0xab, 0x7b, 0x93, 0xd1, 0xfe, 0x67, 0x73, 0x45, 0x14, - 0x57, 0xd5, 0x9e, 0x90, 0x51, 0x45, 0x14, 00, 0x57, 0xcc, - 0xff, 00, 0xb4, 0xf5, 0xdf, 0xef, 0xd9, 0x33, 0xd1, 0x71, - 0x5f, 0x4c, 0x57, 0xc9, 0xbf, 0xb4, 0xbd, 0xd1, 0x7d, 0x52, - 0x55, 0xcf, 0xf1, 0x1a, 0xf9, 0xdc, 0xf6, 0x56, 0xc1, 0xb5, - 0xdc, 0xf1, 0xb3, 0x69, 0x72, 0xe1, 0x64, 0x7c, 0xdf, 0xac, - 0x36, 0xdb, 0x77, 0x3e, 0xd5, 0x4f, 0xf6, 0x27, 0xb6, 0xfe, - 0xd1, 0xfd, 0xb2, 0xf4, 0xc7, 0x20, 0x37, 0xd9, 0x34, 0xab, - 0xe9, 0xf9, 0xed, 0x95, 0x54, 0xcf, 0xfe, 0x3f, 0x53, 0x78, - 0x81, 0xf6, 0xd9, 0xc8, 0x7f, 0xd9, 0x35, 0x77, 0xfe, 0x9, - 0xe7, 0x69, 0xf6, 0xef, 0xda, 0xbb, 0x5c, 0xb9, 0xea, 0x2d, - 0x3c, 0x3b, 0x3f, 0xe6, 0xd3, 0xc2, 0x3f, 0xa1, 0xaf, 0x27, - 0x23, 0x8e, 0xb7, 0x3f, 0x34, 0xc8, 0x23, 0xcf, 0x9b, 0xa7, - 0xd9, 0x33, 0xf4, 0xee, 0x8a, 0x28, 0xaf, 0xb8, 0x3f, 0x64, - 0xa, 0x28, 0xa2, 0x80, 0x23, 0xb9, 0xb8, 0x8e, 0xd2, 0xde, - 0x59, 0xe5, 0x60, 0x91, 0x44, 0xa5, 0xdd, 0x8f, 0x40, 00, - 0xc9, 0x35, 0xf9, 0xe1, 0xe3, 0xcf, 0x13, 0xc9, 0xe3, 0x3f, - 0x19, 0xea, 0xfa, 0xcb, 0x9c, 0x8b, 0xbb, 0x86, 0x68, 0xfd, - 0xa3, 0x1c, 0x20, 0xff, 00, 0xbe, 0x40, 0xaf, 0xaf, 0x3f, - 0x69, 0x7f, 0x18, 0x9f, 0xa, 0x7c, 0x33, 0xbb, 0x82, 0x17, - 0xdb, 0x77, 0xaa, 0xb7, 0xd8, 0xa3, 0xf5, 0xda, 0xc0, 0x97, - 0x3f, 0xf7, 0xc8, 0x3f, 0x98, 0xaf, 0x8d, 0x7c, 0x3d, 0xa5, - 0x3e, 0xb3, 0xac, 0xd9, 0xd9, 0x46, 0x9, 0x69, 0xa4, 0x54, - 00, 0x7b, 0x9a, 0xf8, 0x7e, 0x20, 0xc4, 0x39, 0x4e, 0x18, - 0x78, 0xf4, 0xd7, 0xe6, 0xf6, 0x3e, 0xb, 0x88, 0x6b, 0xba, - 0xb5, 0xa9, 0xe1, 0x21, 0xd3, 0x57, 0xea, 0xf6, 0xfe, 0xbc, - 0xcf, 0xab, 0x3f, 0x65, 0x6f, 0x8, 0x7f, 0x65, 0x78, 0x5a, - 0x6d, 0x5e, 0x58, 0xf6, 0xcd, 0x76, 0xc5, 0x54, 0x91, 0xfc, - 0x22, 0xbd, 0xd6, 0xb2, 0xbc, 0x2d, 0xa2, 0xc7, 0xe1, 0xef, - 0xf, 0xd8, 0xe9, 0xf1, 0x28, 0x55, 0x82, 0x20, 0xbc, 0xe, - 0xfd, 0xeb, 0x56, 0xbe, 0xab, 0x5, 0x87, 0x58, 0x5c, 0x3c, - 0x29, 0x76, 0x5f, 0x8f, 0x53, 0xec, 0xb0, 0x94, 0x16, 0x1e, - 0x84, 0x69, 0x2e, 0x88, 0x28, 0xa2, 0x8a, 0xee, 0x3a, 0xc2, - 0x8a, 0x28, 0xa0, 0xf, 0xcb, 0xbf, 0xf8, 0x2d, 0x1f, 0xc6, - 0x4b, 0xfb, 0x3b, 0x6f, 0x5, 0xfc, 0x31, 0xb3, 0x73, 0x15, - 0x8d, 0xea, 0x36, 0xb5, 0xa8, 0x60, 0x90, 0x65, 0xda, 0xc6, - 0x38, 0x50, 0xf6, 0x20, 0x1d, 0xed, 0xf5, 0xb, 0xe9, 0x5f, - 0x9b, 0x5f, 0xb, 0x34, 0xfd, 0x7b, 0xc5, 0x3e, 0x3e, 0xf0, - 0xe7, 0x86, 0xb4, 0x3d, 0x52, 0xf3, 0x4f, 0xbc, 0xd5, 0xf5, - 0x8, 0x2c, 0x22, 0x92, 0xda, 0x77, 0x8f, 0x61, 0x92, 0x40, - 0x9b, 0xbe, 0x52, 0x3a, 0x67, 0x3f, 0x85, 0x7e, 0x9a, 0xff, - 00, 0xc1, 0x49, 0xec, 0xfe, 0xd, 0xfe, 0xd2, 0xba, 0x1d, - 0xa6, 0xa7, 0xe1, 0xbf, 0x8a, 0xfe, 0x12, 0xb7, 0xf8, 0x87, - 0xe1, 0x7f, 0x36, 0xd9, 0x74, 0xfb, 0xbd, 0x52, 0x28, 0x56, - 0xee, 0x2d, 0xdf, 0x3c, 0x5, 0x98, 0x80, 0xae, 0xac, 0x9, - 0x5c, 0x9c, 0x64, 0xb0, 0x38, 0xce, 0x47, 0xe5, 0xa7, 0x85, - 0xfc, 0x47, 0xa8, 0x78, 0xb, 0xc5, 0xfa, 0x56, 0xb9, 0xa6, - 0xca, 0xb1, 0xea, 0x9a, 0x3d, 0xec, 0x77, 0x70, 0x48, 0xac, - 0x1d, 0x44, 0x91, 0x38, 0x65, 0xe4, 0x1c, 0x30, 0xca, 0xf6, - 0x38, 0x22, 0xa9, 0x10, 0xf7, 0x3f, 0xa6, 0x8f, 0x9, 0x78, - 0x6a, 0xd7, 0xc1, 0xde, 0x17, 0xd2, 0xb4, 0x2b, 0x22, 0xe6, - 0xd7, 0x4e, 0xb6, 0x8e, 0xd6, 0x36, 0x91, 0x8b, 0x3b, 0x4, - 0x50, 0x37, 0x31, 0x3c, 0x92, 0x71, 0x92, 0x4f, 0x52, 0x6b, - 0x5e, 0xbe, 0x30, 0xf8, 0x1b, 0xff, 00, 0x5, 0x54, 0xf8, - 0x37, 0xf1, 0x2b, 0x43, 0xb4, 0x5f, 0x15, 0xea, 0xa7, 0xc0, - 0x3e, 0x22, 0xd8, 0x5, 0xc5, 0xa6, 0xa6, 0x8c, 0xd6, 0xc5, - 0xf1, 0xc9, 0x8e, 0x75, 0x5, 0x76, 0xfa, 0x6e, 0xda, 0x7d, - 0xab, 0xd9, 0xad, 0x7f, 0x6d, 0x3f, 0x80, 0xf7, 0x87, 0x11, - 0xfc, 0x5b, 0xf0, 0x88, 0x3f, 0xf4, 0xd3, 0x55, 0x89, 0x3f, - 0xf4, 0x22, 0x2a, 0x4b, 0x3d, 0xa6, 0x8a, 0xf3, 0x1d, 0x3f, - 0xf6, 0xa0, 0xf8, 0x3d, 0xab, 0x48, 0x12, 0xcb, 0xe2, 0x97, - 0x83, 0xee, 0x9c, 0xf4, 0x58, 0xb5, 0xcb, 0x66, 0x3f, 0xfa, - 0x1d, 0x77, 0x7a, 0xf, 0x89, 0xb4, 0x8f, 0x14, 0xda, 0x35, - 0xd6, 0x8d, 0xaa, 0xd9, 0x6a, 0xd6, 0xaa, 0xdb, 0xc, 0xd6, - 0x37, 0x9, 0x32, 0x6, 0xc6, 0x70, 0x4a, 0x92, 0x33, 0x82, - 0x3f, 0x3a, 00, 0xd3, 0xaf, 0x36, 0xf8, 0xf9, 0xe2, 0x1f, - 0xec, 0x6f, 0x2, 0x4b, 0x6b, 0x1c, 0x9b, 0x27, 0xd4, 0x24, - 0x10, 00, 0xf, 0x3b, 0x3a, 0xbf, 0xe8, 0x31, 0xff, 00, - 0x2, 0xaf, 0x49, 0xaf, 0x98, 0xff, 00, 0x68, 0x3f, 0x10, - 0x7f, 0x6a, 0xf8, 0xdf, 0xec, 0x28, 0xfb, 0xa0, 0xd3, 0xe2, - 0x11, 0xe0, 0x74, 0xde, 0xdf, 0x33, 0x7f, 0xec, 0xa3, 0xf0, - 0xaf, 0x3, 0x3c, 0xc5, 0x7d, 0x57, 0x3, 0x36, 0xb7, 0x96, - 0x8b, 0xe7, 0xff, 00, 0x2, 0xe7, 0x16, 0x32, 0xa7, 0xb3, - 0xa2, 0xfc, 0xf4, 0x3c, 0xc2, 0x8a, 0x28, 0xaf, 0xc7, 0x8f, - 0x97, 0xa, 0xb7, 0xa4, 0xe9, 0xb3, 0x6b, 0x3a, 0xa5, 0xa5, - 0x8c, 00, 0xb4, 0xd7, 0x32, 0xac, 0x4a, 00, 0xee, 0x4e, - 0x2a, 0xa5, 0x7a, 0x8f, 0xec, 0xf3, 0xa0, 0x1d, 0x4f, 0xc6, - 0xad, 0x7e, 0xe9, 0x98, 0x74, 0xf8, 0x4b, 0xee, 0x23, 0x8f, - 0x31, 0xbe, 0x55, 0x1f, 0x96, 0xe3, 0xf8, 0x57, 0x6e, 0xb, - 0xe, 0xf1, 0x58, 0x98, 0x51, 0x5d, 0x5f, 0xe1, 0xd7, 0xf0, - 0x35, 0xa5, 0xf, 0x69, 0x35, 0xe, 0xe7, 0xd2, 0x3a, 0x75, - 0x8c, 0x7a, 0x66, 0x9f, 0x6d, 0x69, 0x8, 0xdb, 0x14, 0x11, - 0xac, 0x48, 0x3d, 0x80, 0xc0, 0xfe, 0x55, 0x66, 0x8a, 0x2b, - 0xf7, 0x24, 0x94, 0x55, 0x91, 0xf6, 0x9, 0x5b, 0x40, 0xaf, - 0x11, 0xfd, 0xa6, 0xec, 0x43, 0x58, 0x68, 0x57, 0x9d, 0xd2, - 0x59, 0x62, 0x3f, 0xf0, 0x20, 0xf, 0xfe, 0xcb, 0x5e, 0xdd, - 0x5e, 0x4f, 0xfb, 0x48, 0xc3, 0xe6, 0x78, 0x26, 0xce, 0x4c, - 0x7f, 0xab, 0xbe, 0x43, 0xf9, 0xa3, 0x8a, 0xf1, 0xb3, 0xa8, - 0x73, 0xe5, 0xf5, 0x57, 0x95, 0xfe, 0xe7, 0x73, 0x93, 0x16, - 0xaf, 0x42, 0x47, 0xcd, 0x94, 0x51, 0x45, 0x7e, 0x32, 0x7c, - 0xa8, 0x56, 0xc7, 0x83, 0x6f, 0x8e, 0x9b, 0xe2, 0xdd, 0x1a, - 0xe8, 0x1c, 0x79, 0x57, 0x71, 0x31, 0x3e, 0xdb, 0x86, 0x7f, - 0x4a, 0xc7, 0xa7, 0x47, 0x21, 0x86, 0x45, 0x91, 0x7e, 0xf2, - 0x90, 0xc3, 0xf0, 0xad, 0x29, 0xcf, 0xd9, 0xce, 0x33, 0x5d, - 0x1d, 0xc7, 0x17, 0x66, 0x99, 0xf7, 0x4d, 0x15, 0x5b, 0x4c, - 0xb9, 0x17, 0xba, 0x75, 0xad, 0xc0, 0xe9, 0x2c, 0x49, 0x20, - 0xfc, 0x40, 0x35, 0x66, 0xbf, 0x7b, 0x4e, 0xe9, 0x34, 0x7d, - 0x9a, 0xd4, 0x28, 0xa2, 0x8a, 0x63, 0xa, 0x28, 0xa2, 0x80, - 0x38, 0xbf, 0x8c, 0x3a, 0xc8, 0xd1, 0x3e, 0x1e, 0x6a, 0xd2, - 0x6, 0xdb, 0x24, 0xf1, 0xfd, 0x99, 0x30, 0x79, 0x25, 0xce, - 0xe, 0x3f, 0xc, 0x9f, 0xc2, 0xbe, 0x48, 0xaf, 0x75, 0xfd, - 0xa6, 0x35, 0xa3, 0x9d, 0x1f, 0x49, 0x46, 0xf9, 0x7e, 0x7b, - 0x99, 0x14, 0x7f, 0xdf, 0x2b, 0xff, 00, 0xb3, 0x57, 0x85, - 0x57, 0xe5, 0x1c, 0x47, 0x88, 0xf6, 0xd8, 0xde, 0x45, 0xb4, - 0x12, 0x5f, 0xaf, 0xea, 0x7c, 0xde, 0x3e, 0x7c, 0xd5, 0xad, - 0xd8, 0x28, 0xa2, 0x8a, 0xf9, 0x63, 0xce, 0xa, 0xfa, 0x7b, - 0xf6, 0x7d, 0xd0, 0xff, 00, 0xb2, 0xfc, 0x8, 0x2e, 0xd9, - 0x71, 0x2d, 0xfc, 0xcd, 0x2e, 0x48, 0xe7, 0x68, 0xf9, 0x57, - 0xf9, 0x13, 0xf8, 0xd7, 0xcc, 0x71, 0x44, 0xd3, 0x4a, 0x91, - 0xa0, 0x2c, 0xee, 0x42, 0xa8, 0x1d, 0xc9, 0xe9, 0x5f, 0x6b, - 0x78, 0x67, 0x49, 0x5d, 0xb, 0xc3, 0xda, 0x6e, 0x9c, 0xbf, - 0xf2, 0xed, 0x6e, 0x91, 0x1f, 0x72, 0x14, 0x64, 0xfe, 0x75, - 0xf6, 0x9c, 0x2f, 0x43, 0x9f, 0x11, 0x3a, 0xcf, 0xec, 0xaf, - 0xc5, 0xff, 00, 0xc0, 0x3d, 0x5c, 0xbe, 0x17, 0xa8, 0xe5, - 0xd8, 0xd3, 0xa2, 0x8a, 0x2b, 0xf4, 0xc3, 0xe8, 0x2, 0x8a, - 0x28, 0xa0, 0xc, 0x3f, 0x1c, 0xdb, 0xb5, 0xd7, 0x82, 0xf5, - 0xd8, 0x50, 0x65, 0xde, 0xc6, 0x65, 00, 0x7a, 0xec, 0x35, - 0xf1, 0x87, 0x5a, 0xfb, 0xa2, 0x58, 0x96, 0x78, 0x9e, 0x37, - 0x19, 0x47, 0x52, 0xa4, 0x1e, 0xe0, 0xd7, 0xc4, 0xfe, 0x21, - 0xd2, 0x5f, 0x42, 0xd7, 0x75, 0xd, 0x3a, 0x40, 0x77, 0x5b, - 0x4e, 0xf1, 0x73, 0xdc, 0x3, 0xc1, 0xfc, 0x46, 0xd, 0x7e, - 0x7d, 0xc5, 0x54, 0x9d, 0xe9, 0x55, 0xe9, 0xaa, 0xfd, 0x4f, - 0x13, 0x32, 0x8e, 0xb1, 0x91, 0x9f, 0x45, 0x14, 0x57, 0xc0, - 0x1e, 0x28, 0x57, 0x5f, 0xf0, 0x97, 0x55, 0x5d, 0x1f, 0xe2, - 0x1e, 0x8b, 0x33, 0x9c, 0x23, 0xcd, 0xe4, 0x31, 0x3f, 0xed, - 0x82, 0xa3, 0xf5, 0x22, 0xb9, 0xa, 0x74, 0x52, 0xbc, 0x32, - 0xa4, 0x91, 0xb1, 0x57, 0x42, 0x19, 0x58, 0x75, 0x4, 0x74, - 0x35, 0xbd, 0xa, 0xae, 0x85, 0x58, 0x55, 0x5f, 0x65, 0xa7, - 0xf7, 0x15, 0x9, 0x72, 0x49, 0x4b, 0xb1, 0xf7, 0x4d, 0x15, - 0xcb, 0x7c, 0x38, 0xf1, 0xb4, 0x1e, 0x39, 0xf0, 0xcd, 0xbd, - 0xea, 0xb2, 0xad, 0xda, 0xf, 0x2e, 0xe6, 0x10, 0x79, 0x47, - 0x1f, 0xd0, 0xf5, 0x1f, 0x5a, 0xea, 0x6b, 0xf7, 0x3a, 0x35, - 0x61, 0x5e, 0x9c, 0x6a, 0xd3, 0x77, 0x4f, 0x53, 0xec, 0x63, - 0x25, 0x38, 0xa9, 0x47, 0x66, 0x14, 0x51, 0x45, 0x6c, 0x50, - 0x51, 0x45, 0x23, 0x30, 0x45, 0x2c, 0xc4, 0x2a, 0x81, 0x92, - 0x4f, 0x41, 0x40, 0x11, 0xdd, 0x5d, 0x45, 0x63, 0x6d, 0x2d, - 0xc4, 0xf2, 0x2c, 0x50, 0x44, 0x85, 0xdd, 0xd8, 0xe0, 0x2a, - 0x81, 0x92, 0x4d, 0x7c, 0x79, 0xf1, 0x7, 0xc5, 0xaf, 0xe3, - 0x5f, 0x15, 0x5e, 0x6a, 0x64, 0x15, 0x85, 0x8f, 0x97, 0x2, - 0x1f, 0xe1, 0x8d, 0x78, 0x5f, 0xcf, 0xaf, 0xd4, 0x9a, 0xef, - 0xfe, 0x36, 0x7c, 0x58, 0x4d, 0x74, 0xbe, 0x83, 0xa3, 0xcd, - 0xba, 0xc1, 0x1b, 0xfd, 0x22, 0xe5, 0x1b, 0x89, 0x88, 0xfe, - 0x11, 0xfe, 0xc8, 0xf5, 0xee, 0x7d, 0xba, 0xf8, 0xed, 0x7e, - 0x63, 0xc4, 0x39, 0x9c, 0x71, 0x33, 0x58, 0x6a, 0x2e, 0xf1, - 0x8e, 0xef, 0xbb, 0xff, 00, 0x80, 0x7c, 0xf6, 0x3b, 0x10, - 0xaa, 0x3f, 0x67, 0x1d, 0x90, 0x51, 0x45, 0x15, 0xf1, 0xa7, - 0x96, 0x14, 0x51, 0x5d, 0x67, 0xc3, 0x2f, 0x6, 0x3f, 0x8d, - 0xfc, 0x57, 0x6d, 0x66, 0xca, 0xdf, 0x63, 0x8f, 0xf7, 0xd7, - 0x2e, 0x7, 0x44, 0x1d, 0xbf, 0x13, 0x81, 0xf8, 0xfb, 0x56, - 0xd4, 0x68, 0xcf, 0x11, 0x52, 0x34, 0xa9, 0xad, 0x5b, 0xb1, - 0x51, 0x8b, 0x9c, 0x94, 0x56, 0xec, 0xf7, 0xbf, 0x81, 0x7e, - 0x17, 0x6f, 0xe, 0xf8, 0x1e, 0x19, 0xa6, 0x5d, 0xb7, 0x3a, - 0x83, 0x7d, 0xa9, 0x81, 0x1c, 0x85, 0x20, 0x4, 0x1f, 0x90, - 0xcf, 0xe3, 0x5e, 0x89, 0x4d, 0x8e, 0x35, 0x8a, 0x35, 0x44, - 0x50, 0xa8, 0xa0, 0x28, 0x51, 0xd0, 0xa, 0x75, 0x7e, 0xe3, - 0x86, 0xa1, 0x1c, 0x2d, 0x18, 0x51, 0x8e, 0xd1, 0x56, 0x3e, - 0xbe, 0x9c, 0x15, 0x38, 0x28, 0x2e, 0x81, 0x45, 0x14, 0x57, - 0x49, 0xa0, 0x51, 0x45, 0x14, 0x1, 0x53, 0x51, 0xd2, 0x2c, - 0x75, 0x78, 0x4c, 0x37, 0xd6, 0x70, 0x5e, 0x44, 0x7a, 0xa4, - 0xf1, 0x87, 0x1f, 0xad, 0x79, 0xf6, 0xbf, 0xfb, 0x3f, 0xf8, - 0x63, 0x57, 0x2d, 0x25, 0xa2, 0xcf, 0xa5, 0x4a, 0x7f, 0xe7, - 0xdd, 0xf2, 0x99, 0xff, 00, 0x75, 0xb3, 0xfa, 0x11, 0x5e, - 0x99, 0x45, 0x72, 0x57, 0xc1, 0xe1, 0xf1, 0x2a, 0xd5, 0xa0, - 0xa5, 0xfd, 0x77, 0x32, 0x9d, 0x28, 0x54, 0xf8, 0xd5, 0xcf, - 0x9b, 0x3c, 0x45, 0xfb, 0x3a, 0xeb, 0xba, 0x68, 0x69, 0x34, - 0xbb, 0x88, 0x75, 0x58, 0x87, 0x44, 0xff, 00, 0x55, 0x26, - 0x3e, 0x84, 0xe0, 0xfe, 0x75, 0xe6, 0xba, 0xb6, 0x87, 0xa8, - 0x68, 0x37, 0x3f, 0x67, 0xd4, 0x6c, 0xa7, 0xb2, 0x9b, 0xfb, - 0xb3, 0x21, 0x5c, 0xfd, 0x3d, 0x7f, 0xa, 0xfb, 0x76, 0xa9, - 0xea, 0x9a, 0x45, 0x96, 0xb7, 0x68, 0xf6, 0xb7, 0xf6, 0xb1, - 0x5d, 0xdb, 0xb7, 0x58, 0xe5, 0x50, 0xc3, 0xff, 00, 0xad, - 0x5f, 0x2f, 0x8a, 0xe1, 0x8c, 0x3d, 0x4b, 0xbc, 0x3c, 0x9c, - 0x5f, 0x6d, 0xd7, 0xf9, 0x9e, 0x75, 0x4c, 0xbe, 0x12, 0xd6, - 0xe, 0xc7, 0xc4, 0x14, 0x57, 0xa5, 0x7c, 0x60, 0xf8, 0x56, - 0xbe, 0x5, 0xb8, 0x8a, 0xfb, 0x4f, 0x2f, 0x26, 0x93, 0x72, - 0xe5, 0x70, 0xfc, 0x98, 0x5f, 0xa8, 0x5c, 0xf7, 0x4, 0x67, - 0x7, 0xda, 0xbc, 0xd6, 0xbf, 0x3c, 0xc5, 0x61, 0xaa, 0xe0, - 0xea, 0xba, 0x35, 0x55, 0x9a, 0x3c, 0x4a, 0x94, 0xe5, 0x4a, - 0x4e, 0x32, 0xdc, 0x28, 0xa2, 0x8a, 0xe5, 0x33, 0xa, 0xea, - 0x7e, 0x19, 0x78, 0x96, 0x5f, 0xb, 0x78, 0xd3, 0x4d, 0xba, - 0x46, 0x22, 0x19, 0x25, 0x10, 0x4e, 0xb9, 0xe1, 0xa3, 0x62, - 0x1, 0xcf, 0xd3, 0x83, 0xf8, 0x57, 0x2d, 0x4a, 0xac, 0x55, - 0x81, 0x7, 0x4, 0x1c, 0x82, 0x2b, 0x6a, 0x35, 0x65, 0x42, - 0xac, 0x6a, 0xc7, 0x74, 0xee, 0x54, 0x24, 0xe1, 0x25, 0x25, - 0xd0, 0xfb, 0xaa, 0x8a, 0x82, 0xc5, 0xda, 0x5b, 0x2b, 0x77, - 0x6e, 0x19, 0xa3, 0x52, 0x7e, 0xb8, 0xa9, 0xeb, 0xf7, 0x94, - 0xee, 0xae, 0x7d, 0x9a, 0xd4, 0x28, 0xa2, 0x8a, 0x60, 0x21, - 0x38, 0x15, 0xf1, 0xaf, 0xed, 0xf, 0x77, 0xe7, 0x6b, 0xb2, - 0x8f, 0x57, 0x3f, 0xce, 0xbe, 0xc8, 0x94, 0xed, 0x89, 0xcf, - 0xa2, 0x93, 0x5f, 0x10, 0x7c, 0x73, 0xb9, 0xf3, 0xbc, 0x45, - 0x2f, 0xfb, 0xed, 0xfc, 0xeb, 0xe5, 0x78, 0x86, 0x56, 0xc3, - 0xc6, 0x3d, 0xd9, 0xf3, 0xb9, 0xec, 0xb9, 0x70, 0xac, 0xf1, - 0x1f, 0x14, 0xc9, 0xb2, 0xc2, 0x6f, 0xf7, 0x4d, 0x76, 0x9f, - 0xf0, 0x4c, 0x9d, 0x3c, 0x5d, 0x7c, 0x65, 0xf8, 0x91, 0xa9, - 0x11, 0x9f, 0xb3, 0xe9, 0x96, 0xd6, 0xe1, 0xb1, 0xfd, 0xf9, - 0x59, 0x8f, 0xfe, 0x81, 0x5c, 0xf, 0x8d, 0x25, 0xd9, 0xa6, - 0x4d, 0xf4, 0x35, 0xeb, 0xff, 00, 0xf0, 0x4b, 0x2b, 0xd, - 0xf7, 0x3f, 0x15, 0x35, 0x22, 0x3e, 0xfd, 0xcd, 0x95, 0xba, - 0x9f, 0xf7, 0x52, 0x46, 0x3f, 0xfa, 0x10, 0xac, 0x72, 0x38, - 0xe9, 0x73, 0xe1, 0xb8, 0x5e, 0x3c, 0xd9, 0x95, 0x49, 0x76, - 0x47, 0xdf, 0x74, 0x51, 0x45, 0x7d, 0x81, 0xfa, 0xd8, 0x51, - 0x45, 0x66, 0x78, 0x9b, 0x5d, 0x83, 0xc3, 0x1e, 0x1e, 0xd4, - 0x75, 0x6b, 0x93, 0x88, 0x6c, 0xe0, 0x79, 0xd8, 0x67, 0x19, - 0xda, 0x33, 0x8f, 0xa9, 0xe9, 0x4a, 0x4d, 0x45, 0x36, 0xfa, - 0x13, 0x29, 0x28, 0xa7, 0x27, 0xb2, 0x3e, 0x49, 0xfd, 0xaa, - 0xfc, 0x62, 0xda, 0xef, 0xc4, 0x25, 0xd1, 0xe3, 0x72, 0x6d, - 0x34, 0x88, 0x82, 0x15, 0xc8, 0x20, 0xca, 0xe0, 0x33, 0x1f, - 0xcb, 0x68, 0xfc, 0xd, 0x27, 0xec, 0xc1, 0xe1, 0xf, 0xed, - 0xcf, 0x1b, 0xad, 0xfc, 0xd1, 0xee, 0xb7, 0xb2, 0x52, 0xf9, - 0x23, 0x8d, 0xdd, 0xab, 0xc8, 0xf5, 0x6d, 0x52, 0xe3, 0x5e, - 0xd5, 0xef, 0x35, 0x1b, 0xa7, 0x32, 0x5c, 0xdd, 0xcc, 0xd3, - 0x48, 0xc7, 0xd5, 0x8e, 0x6b, 0xec, 0x9f, 0xd9, 0xaf, 0xc2, - 0x3f, 0xf0, 0x8f, 0x78, 0x12, 0x3b, 0xb9, 0x13, 0x6d, 0xc5, - 0xe3, 0x17, 0x39, 0xfe, 0xef, 0x6a, 0xfc, 0xef, 0x8, 0x9e, - 0x63, 0x99, 0x7b, 0x49, 0x6d, 0x7b, 0xfc, 0x96, 0xdf, 0xa1, - 0xf9, 0xd6, 0x5c, 0x9e, 0x63, 0x99, 0x4b, 0x11, 0x2d, 0x93, - 0xbf, 0xf9, 0x1e, 0xbb, 0x45, 0x14, 0x57, 0xe8, 0xa7, 0xe8, - 0xe1, 0x45, 0x79, 0xef, 0xed, 0x1, 0xf1, 0x6a, 0xcb, 0xe0, - 0x67, 0xc1, 0xbf, 0x15, 0xf8, 0xde, 0xf9, 0x94, 0x2e, 0x93, - 0x62, 0xf2, 0xc2, 0x8d, 0xd2, 0x59, 0xc8, 0xdb, 0xa, 0x7f, - 0xc0, 0x9c, 0xa8, 0xfc, 0x6b, 0xf2, 0x66, 0xc3, 0xfe, 0xb, - 0x29, 0xf1, 0xba, 0xdd, 0x97, 0xed, 0x5a, 0x2f, 0x83, 0xae, - 0xd0, 0x75, 0x2, 0xc2, 0xe2, 0x32, 0x7f, 0x11, 0x39, 0xfe, - 0x54, 0xa, 0xf6, 0x3f, 0x6a, 0x2b, 0xc7, 0x7f, 0x6b, 0xaf, - 0x8c, 0xf0, 0x7c, 0x4, 0xfd, 0x9e, 0xbc, 0x63, 0xe2, 0xe7, - 0x90, 0x2d, 0xe4, 0x36, 0x8d, 0x6d, 0x60, 0xb9, 0xc1, 0x7b, - 0xa9, 0x7f, 0x77, 0x10, 0x1f, 0x46, 0x6d, 0xc7, 0xd9, 0x4d, - 0x5f, 0xfd, 0x98, 0xbe, 0x21, 0x78, 0xaf, 0xe2, 0xc7, 0xc1, - 0x1f, 0xc, 0xf8, 0xc3, 0xc6, 0x5a, 0x5d, 0x96, 0x8b, 0xac, - 0x6b, 0x50, 0x7d, 0xb1, 0x6c, 0x6c, 0x43, 0xec, 0x8e, 0x6, - 0x3f, 0xba, 0x27, 0x79, 0x27, 0x2c, 0xb8, 0x6f, 0xf8, 0x10, - 0x15, 0x6f, 0xe3, 0x9f, 0xec, 0xf9, 0xe0, 0xaf, 0xda, 0x37, - 0xc3, 0x16, 0x9e, 0x1e, 0xf1, 0xd5, 0x85, 0xce, 0xa5, 0xa4, - 0xdb, 0x5c, 0x8b, 0xc8, 0xe0, 0xb7, 0xbc, 0x96, 0xdf, 0xf7, - 0xa1, 0x59, 0x43, 0x13, 0x1b, 0x2, 0x70, 0x19, 0xb8, 0x3c, - 0x73, 0x40, 0xcf, 0xe6, 0xc6, 0x59, 0x5e, 0x79, 0x5e, 0x49, - 0x18, 0xbc, 0x8e, 0x4b, 0x33, 0x31, 0xc9, 0x24, 0xf5, 0x26, - 0x9b, 0x5f, 0xba, 0x57, 0x5f, 0xf0, 0x49, 0xbf, 0xd9, 0xda, - 0xe1, 0x8, 0x8f, 0x40, 0xd6, 0x2d, 0x4f, 0xf7, 0xa2, 0xd6, - 0x67, 0x27, 0xff, 00, 0x1e, 0x26, 0xb0, 0x6f, 0x7f, 0xe0, - 0x8f, 0x3f, 0x2, 0x6e, 0x3, 0x79, 0x17, 0x5e, 0x2a, 0xb4, - 0x27, 0xa6, 0xdd, 0x4a, 0x36, 0x3, 0xf3, 0x8a, 0xaa, 0xe4, - 0x72, 0xb3, 0xf1, 0x2e, 0x8a, 0xfd, 0x8a, 0xd4, 0x7f, 0xe0, - 0x8b, 0x1f, 0xc, 0x27, 0x2c, 0x6c, 0xfc, 0x6d, 0xe2, 0xab, - 0x4f, 0x40, 0xff, 00, 0x67, 0x90, 0xf, 0xfc, 0x86, 0xd, - 0x72, 0xf7, 0xdf, 0xf0, 0x44, 0x8d, 0x5, 0xd9, 0xbe, 0xc5, - 0xf1, 0x4b, 0x51, 0x88, 0x76, 0x13, 0xe9, 0x51, 0xbf, 0xf2, - 0x91, 0x68, 0xb8, 0xb9, 0x59, 0xf9, 0x39, 0x8f, 0x6a, 0xfe, - 0x88, 0x7f, 0x62, 0xf, 0x82, 0xb1, 0xfc, 0x7, 0xfd, 0x9a, - 0xbc, 0x1f, 0xe1, 0xd6, 0x89, 0x53, 0x53, 0xb8, 0xb6, 0x1a, - 0x96, 0xa2, 0xc0, 0x60, 0xb5, 0xcc, 0xe0, 0x3b, 0x3, 0xfe, - 0xe8, 0x2a, 0x9f, 0x45, 0x15, 0xf1, 0xe7, 0x83, 0xff, 00, - 0xe0, 0x8b, 0xe9, 0xe1, 0xcf, 0x1e, 0x68, 0x3a, 0xad, 0xff, - 00, 0xc4, 0x68, 0x75, 0x8d, 0x16, 0xc6, 0xfa, 0x1b, 0x9b, - 0xab, 0x6, 0xd2, 0x8c, 0x4f, 0x71, 0x1a, 0x38, 0x63, 0x1e, - 0xef, 0x34, 0x81, 0xbb, 0x18, 0xe9, 0xde, 0xbf, 0x4e, 0x95, - 0x42, 0x28, 0x55, 0x1, 0x54, 0xc, 00, 0x3a, 0x1, 0x49, - 0x94, 0x95, 0x8a, 0x9a, 0xbe, 0xa5, 0x16, 0x8f, 0xa5, 0x5d, - 0xdf, 0x4c, 0x40, 0x8a, 0xda, 0x26, 0x95, 0x89, 0xf4, 0x3, - 0x35, 0xf1, 0x4e, 0xa5, 0xa8, 0x4d, 0xaa, 0xea, 0x17, 0x37, - 0xb7, 0xd, 0xbe, 0x7b, 0x89, 0x1a, 0x57, 0x3e, 0xe4, 0xe4, - 0xd7, 0xd6, 0x7f, 0x14, 0xf4, 0xd, 0x5f, 0xc5, 0x1e, 0x13, - 0x97, 0x4b, 0xd1, 0xcc, 0x2b, 0x2d, 0xc4, 0x8a, 0x25, 0x33, - 0x39, 0x51, 0xe5, 0x8e, 0x48, 0x1c, 0x1e, 0xa4, 0xf, 0xd6, - 0xbc, 0x32, 0x4f, 0xd9, 0xfb, 0xc5, 0xc8, 0x38, 0x82, 0xd2, - 0x4f, 0xf7, 0x6e, 0x7, 0xf5, 0xc5, 0x7c, 0x17, 0x11, 0x51, - 0xc5, 0x62, 0xaa, 0x42, 0x9d, 0x1a, 0x6d, 0xc6, 0x2a, 0xfa, - 0x2e, 0xaf, 0xfc, 0x8f, 0x23, 0x1d, 0x1a, 0x95, 0x24, 0x94, - 0x62, 0xda, 0x47, 0x9b, 0x51, 0x5d, 0xec, 0xdf, 0x3, 0x7c, - 0x67, 0xf, 0xfc, 0xc2, 0x84, 0x9f, 0xee, 0x5c, 0x46, 0x7f, - 0xf6, 0x6a, 0xa5, 0x2f, 0xc2, 0x2f, 0x18, 0x43, 0xf7, 0xb4, - 0x2b, 0x83, 0xfe, 0xe9, 0x56, 0xfe, 0x46, 0xbe, 0x2a, 0x58, - 0xc, 0x5c, 0x77, 0xa5, 0x2f, 0xb9, 0x9e, 0x4b, 0xa3, 0x55, - 0x7d, 0x97, 0xf7, 0x1c, 0x7d, 0x7d, 0x3f, 0xfb, 0x3f, 0xe8, - 0x1f, 0xd9, 0x3e, 0x4, 0x4b, 0xb7, 0x4d, 0xb3, 0x6a, 0x12, - 0xb4, 0xc4, 0x91, 0xce, 0xc1, 0xf2, 0xaf, 0xf2, 0x27, 0xf1, - 0xaf, 0x9, 0xb7, 0xf8, 0x63, 0xe2, 0x79, 0x6f, 0x60, 0xb7, - 0x93, 0x44, 0xbd, 0x84, 0x49, 0x22, 0xa1, 0x91, 0xa1, 0x3b, - 0x57, 0x27, 0x19, 0x27, 0xd0, 0x57, 0xd7, 0x3a, 0x75, 0x8c, - 0x5a, 0x5d, 0x85, 0xb5, 0x9c, 0xb, 0xb6, 0x18, 0x23, 0x58, - 0x90, 0x7a, 00, 0x30, 0x2b, 0xeb, 0x38, 0x6b, 0x5, 0x38, - 0xd7, 0x9d, 0x7a, 0xb1, 0x6b, 0x95, 0x59, 0x5d, 0x5b, 0x57, - 0xff, 00, 0x3, 0xf3, 0x3d, 0x2c, 0x5, 0x26, 0xa6, 0xe7, - 0x25, 0xb1, 0x66, 0x8a, 0x28, 0xaf, 0xd1, 0x4f, 0x74, 0x2b, - 0xcd, 0x7f, 0x68, 0x38, 0xbc, 0xcf, 0x87, 0x53, 0x36, 0x3e, - 0xe5, 0xcc, 0x4d, 0xfa, 0xe3, 0xfa, 0xd7, 0xa5, 0x57, 0x3, - 0xf1, 0xce, 0x2f, 0x37, 0xe1, 0x9e, 0xa8, 0x7f, 0xb8, 0xd1, - 0x37, 0xfe, 0x44, 0x5f, 0xf1, 0xaf, 0x37, 0x32, 0x5c, 0xd8, - 0x2a, 0xcb, 0xfb, 0xaf, 0xf2, 0x39, 0xf1, 0xa, 0xf4, 0xa5, - 0xe8, 0x7c, 0xa5, 0x45, 0x14, 0x57, 0xe2, 0x27, 0xc9, 0x5, - 0x14, 0x51, 0x40, 0x1f, 0x64, 0x7c, 0x3a, 0xba, 0xfb, 0x67, - 0x80, 0xf4, 0x9, 0x49, 0xc9, 0x36, 0x51, 0x3, 0xf5, 0xa, - 0x7, 0xf4, 0xae, 0x8e, 0xb8, 0x4f, 0x82, 0x17, 0x86, 0xf3, - 0xe1, 0xa6, 0x95, 0x93, 0x93, 0x17, 0x99, 0x11, 0xfc, 0x1d, - 0xb1, 0xfa, 0x62, 0xbb, 0xba, 0xfd, 0xd3, 0x5, 0x3f, 0x69, - 0x86, 0xa5, 0x3e, 0xf1, 0x5f, 0x91, 0xf6, 0x14, 0x5f, 0x35, - 0x38, 0xbf, 0x24, 0x14, 0x51, 0x45, 0x76, 0x1a, 0x85, 0x14, - 0x56, 0x7f, 0x88, 0x35, 0x68, 0xf4, 0x1d, 0xe, 0xff, 00, - 0x51, 0x97, 0xee, 0x5a, 0xc2, 0xf2, 0x9f, 0x7c, 0xe, 0x5, - 0x4c, 0xa4, 0xa1, 0x17, 0x29, 0x6c, 0x84, 0xdd, 0x95, 0xd9, - 0xf2, 0xbf, 0xc6, 0xd, 0x78, 0xf8, 0x83, 0xe2, 0x6, 0xa9, - 0x20, 0x6d, 0xd0, 0xdb, 0xbf, 0xd9, 0x63, 0xfa, 0x27, 0x7, - 0xff, 00, 0x1e, 0xdc, 0x7f, 0x1a, 0xe3, 0x2a, 0x4b, 0x89, - 0xde, 0xea, 0x79, 0x66, 0x90, 0xee, 0x92, 0x46, 0x2e, 0xc7, - 0xd4, 0x93, 0x93, 0x51, 0xd7, 0xe1, 0x38, 0x8a, 0xcf, 0x11, - 0x5a, 0x75, 0x65, 0xf6, 0x9b, 0x67, 0xc7, 0x4e, 0x4e, 0x72, - 0x72, 0x7d, 0x42, 0x8a, 0x28, 0xae, 0x72, 0xe, 0xb7, 0xe1, - 0x46, 0x8f, 0xfd, 0xb7, 0xf1, 0x7, 0x46, 0x81, 0x97, 0x7c, - 0x69, 0x37, 0x9e, 0xe3, 0xb6, 0x10, 0x16, 0xfe, 0x60, 0x57, - 0xd7, 0xd5, 0xf3, 0xdf, 0xec, 0xd1, 0xa3, 0xf9, 0xfa, 0xd6, - 0xad, 0xa9, 0xb2, 0xf1, 0x6f, 0xa, 0xc0, 0x87, 0xdd, 0xce, - 0x4f, 0xe8, 0xbf, 0xad, 0x7d, 0x9, 0x5f, 0xaa, 0xf0, 0xd5, - 0xf, 0x67, 0x82, 0xf6, 0x8f, 0x79, 0x36, 0xfe, 0x4b, 0x43, - 0xe8, 0xf0, 0x10, 0xe5, 0xa5, 0xcd, 0xdc, 0x28, 0xa2, 0x8a, - 0xfa, 0xb3, 0xd2, 0xa, 0x28, 0xa2, 0x80, 0xa, 0xf9, 0xdb, - 0xf6, 0x88, 0xf0, 0x69, 0xd3, 0xf5, 0x98, 0x7c, 0x41, 0x6e, - 0x9f, 0xe8, 0xf7, 0x98, 0x8e, 0x7c, 0xf, 0xbb, 0x28, 0x1c, - 0x1f, 0xc4, 0xf, 0xfc, 0x77, 0xde, 0xbe, 0x89, 0xac, 0xdf, - 0x10, 0xe8, 0x36, 0x9e, 0x27, 0xd1, 0xae, 0xb4, 0xcb, 0xd4, - 0xdf, 0x6f, 0x70, 0xbb, 0x5b, 0x1d, 0x54, 0xf5, 0x4, 0x7b, - 0x83, 0xcd, 0x79, 0x59, 0x9e, 0x9, 0x63, 0xf0, 0xd2, 0xa3, - 0xd7, 0x75, 0xeb, 0xfd, 0x68, 0x73, 0x62, 0x28, 0xfb, 0x6a, - 0x6e, 0x3d, 0x4f, 0x89, 0xa8, 0xae, 0x8b, 0xc7, 0x1e, 0x8, - 0xbf, 0xf0, 0x2e, 0xb5, 0x25, 0x95, 0xe2, 0x16, 0x88, 0x92, - 0x60, 0xb8, 0x3, 0xe5, 0x95, 0x3d, 0x47, 0xbf, 0xa8, 0xed, - 0x5c, 0xed, 0x7e, 0x33, 0x56, 0x94, 0xe8, 0xcd, 0xd3, 0xa8, - 0xac, 0xd1, 0xf2, 0xb2, 0x8b, 0x8b, 0xe5, 0x96, 0xe1, 0x45, - 0x14, 0x56, 0x44, 0x9b, 0x7e, 0x12, 0xf1, 0x86, 0xa7, 0xe0, - 0xbd, 0x51, 0x6f, 0xb4, 0xd9, 0xb6, 0x3f, 0xdd, 0x92, 0x36, - 0xe5, 0x25, 0x5f, 0x46, 0x15, 0xf4, 0x1f, 0x85, 0x3e, 0x3e, - 0x78, 0x7b, 0x5d, 0x44, 0x8f, 0x50, 0x66, 0xd1, 0xee, 0xb8, - 0x4, 0x4f, 0xcc, 0x44, 0xfb, 0x38, 0xe9, 0xf8, 0xe2, 0xbe, - 0x61, 0xa2, 0xbd, 0xac, 0x6, 0x6d, 0x89, 0xcb, 0xfd, 0xda, - 0x6e, 0xf1, 0xec, 0xf6, 0xff, 00, 0x80, 0x75, 0x51, 0xc4, - 0xd4, 0xa1, 0xa4, 0x76, 0xec, 0x7d, 0xb7, 0x69, 0xe2, 0xd, - 0x2e, 0xfd, 0x3, 0x5b, 0x6a, 0x36, 0x97, 0xa, 0x46, 0x73, - 0x1c, 0xea, 0xdf, 0xc8, 0xd4, 0xb3, 0x6a, 0xf6, 0x36, 0xeb, - 0xba, 0x5b, 0xdb, 0x78, 0x97, 0xd5, 0xe5, 0x50, 0x3f, 0x9d, - 0x7c, 0x3f, 0x8a, 0x31, 0x5f, 0x46, 0xb8, 0xae, 0x76, 0xd6, - 0x8e, 0xbe, 0xbf, 0xf0, 0xe, 0xff, 00, 0xed, 0x27, 0xfc, - 0xbf, 0x89, 0xf5, 0x9f, 0x88, 0xbe, 0x32, 0xf8, 0x5b, 0xc3, - 0xb1, 0x9c, 0xea, 0x2b, 0x7f, 0x38, 0xe9, 0xd, 0x96, 0x24, - 0x3f, 0x98, 0xe0, 0x7e, 0x26, 0xbc, 0x47, 0xe2, 0x7, 0xc6, - 0xad, 0x5b, 0xc6, 0x4b, 0x25, 0xa5, 0xa8, 0x3a, 0x66, 0x96, - 0xc0, 0xab, 0x43, 0x1b, 0x65, 0xe5, 0x1f, 0xed, 0xb7, 0xa7, - 0xb0, 0xe3, 0xeb, 0x5e, 0x75, 0x45, 0x78, 0x98, 0xdc, 0xf7, - 0x17, 0x8c, 0x8b, 0x85, 0xf9, 0x62, 0xfa, 0x2f, 0xf3, 0x39, - 0x2a, 0xe3, 0x2a, 0xd5, 0x56, 0xd9, 0x5, 0x14, 0x51, 0x5f, - 0x3a, 0x70, 0x85, 0x14, 0x55, 0x8b, 0xd, 0x3e, 0xe7, 0x55, - 0xbc, 0x86, 0xd2, 0xd2, 0x17, 0xb8, 0xb9, 0x95, 0x82, 0xa4, - 0x68, 0x32, 0x58, 0xd3, 0x49, 0xc9, 0xd9, 0x6e, 0x1b, 0x89, - 0x65, 0x65, 0x3e, 0xa3, 0x77, 0xd, 0xad, 0xb4, 0x4d, 0x35, - 0xc4, 0xcc, 0x11, 0x23, 0x41, 0x92, 0xc4, 0xf6, 0xaf, 0xad, - 0x3e, 0x18, 0xf8, 0x6, 0x2f, 00, 0xf8, 0x7d, 0x6d, 0xdb, - 0x64, 0x9a, 0x84, 0xe7, 0xcc, 0xb9, 0x99, 0x7b, 0xb7, 0x65, - 0x1e, 0xc3, 0xfc, 0x4f, 0x7a, 0xc6, 0xf8, 0x4b, 0xf0, 0x9a, - 0x2f, 0x4, 0x5b, 0xfd, 0xbf, 0x50, 0x9, 0x36, 0xb5, 0x2a, - 0xe0, 0x95, 0x39, 0x58, 0x14, 0xff, 00, 0xa, 0xfb, 0xfa, - 0x9f, 0xc3, 0xeb, 0xe9, 0x35, 0xfa, 0x86, 0x47, 0x94, 0x3c, - 0x1a, 0xfa, 0xc5, 0x75, 0xef, 0xbd, 0x97, 0x65, 0xfe, 0x67, - 0xd0, 0xe0, 0xf0, 0xbe, 0xcb, 0xdf, 0x9e, 0xff, 00, 0x90, - 0x51, 0x45, 0x23, 0x30, 0x55, 0x24, 0x9c, 0x1, 0xc9, 0x35, - 0xf5, 0xe7, 0xa8, 0x71, 0xba, 0xef, 0xc5, 0x8d, 0xf, 0xc3, - 0x5e, 0x29, 0xfe, 0xc4, 0xd4, 0x64, 0x7b, 0x77, 0xf2, 0x96, - 0x43, 0x73, 0xb7, 0x31, 0xa9, 0x39, 0xf9, 0x5b, 0x1c, 0x8e, - 0x30, 0x73, 0x8c, 0x73, 0x5d, 0x55, 0x8e, 0xa3, 0x6b, 0xaa, - 0x40, 0xb3, 0xd9, 0xdc, 0xc5, 0x75, 0xb, 0x72, 0x24, 0x85, - 0xc3, 0x29, 0xfc, 0x45, 0x7c, 0x75, 0xe3, 0x8d, 0x78, 0xf8, - 0x9b, 0xc5, 0xba, 0xa6, 0xa5, 0x9c, 0xa4, 0xd3, 0xb7, 0x97, - 0xfe, 0xe0, 0xe1, 0x7f, 0x40, 0x2a, 0x86, 0x93, 0xae, 0x6a, - 0x1a, 0xd, 0xc8, 0xb8, 0xd3, 0xaf, 0x67, 0xb2, 0x97, 0xfb, - 0xd0, 0xb9, 0x5c, 0xfd, 0x7d, 0x7f, 0x1a, 0xfc, 0xf5, 0x71, - 0x3c, 0xa9, 0xd7, 0x9c, 0x67, 0xe, 0x68, 0x5d, 0xda, 0xda, - 0x3b, 0x7e, 0xbf, 0x81, 0xe1, 0xac, 0xc1, 0xa9, 0xb4, 0xd5, - 0xd1, 0xf6, 0xed, 0x15, 0xf3, 0x26, 0x8d, 0xfb, 0x43, 0x78, - 0x9f, 0x4e, 0xda, 0xb7, 0x82, 0xd7, 0x53, 0x8c, 0x75, 0xf3, - 0x63, 0xd8, 0xe7, 0xf1, 0x5c, 0xf, 0xd2, 0xbb, 0x6d, 0x2f, - 0xf6, 0x96, 0xd2, 0xa6, 0x55, 0x1a, 0x86, 0x95, 0x77, 0x6c, - 0xdd, 0xcc, 0xc, 0xb2, 0x2f, 0xeb, 0xb4, 0xd7, 0xd0, 0x51, - 0xcf, 0xf0, 0x15, 0xb7, 0x9f, 0x2b, 0xf3, 0x5f, 0xd2, 0x3b, - 0x61, 0x8d, 0xa3, 0x2e, 0xb6, 0x3d, 0x96, 0x8a, 0xf3, 0xcb, - 0x5f, 0x8f, 0x5e, 0xe, 0xb8, 0xc6, 0xeb, 0xe9, 0xad, 0xcf, - 0xa4, 0xb6, 0xef, 0xfd, 0x1, 0xad, 0x8, 0xbe, 0x31, 0x78, - 0x3a, 0x51, 0xc6, 0xb9, 0x2, 0xff, 00, 0xbc, 0xae, 0x3f, - 0x98, 0xaf, 0x4a, 0x39, 0x86, 0xe, 0x7f, 0xd, 0x58, 0xfd, - 0xe8, 0xe8, 0x55, 0xe9, 0x3d, 0xa4, 0xbe, 0xf3, 0xb3, 0xa2, - 0xb8, 0xa9, 0xfe, 0x32, 0xf8, 0x36, 0x1, 0x93, 0xad, 0xc4, - 0xff, 00, 0xf5, 0xce, 0x37, 0x6f, 0xe4, 0x2b, 0x9b, 0xd7, - 0x7f, 0x68, 0xcd, 0x2, 0xca, 0x16, 0x1a, 0x65, 0xbd, 0xce, - 0xa3, 0x3f, 0xf0, 0xee, 0x5f, 0x2a, 0x3f, 0xc4, 0x9e, 0x7f, - 0x4a, 0x8a, 0x99, 0x9e, 0xa, 0x92, 0xbc, 0xaa, 0xc7, 0xef, - 0xbf, 0xe4, 0x29, 0x62, 0x29, 0x45, 0x5d, 0xc9, 0x16, 0xbf, - 0x68, 0x6d, 0x4a, 0xde, 0xd7, 0xc0, 0x46, 0xd6, 0x42, 0x3e, - 0xd1, 0x75, 0x71, 0x18, 0x89, 0x7b, 0xfc, 0xa7, 0x73, 0x1f, - 0xc8, 0x63, 0xf1, 0xaf, 0x98, 0xeb, 0x7b, 0xc6, 0x3e, 0x35, - 0xd4, 0xfc, 0x71, 0xaa, 0x7d, 0xb7, 0x52, 0x90, 0x12, 0xa3, - 0x6c, 0x50, 0xc6, 0x30, 0x91, 0xaf, 0xa0, 0x1f, 0xd7, 0xad, - 0x60, 0xd7, 0xe5, 0x99, 0xbe, 0x3a, 0x38, 0xfc, 0x53, 0xab, - 0x5, 0xee, 0xa5, 0x64, 0x7c, 0xe6, 0x26, 0xb2, 0xad, 0x53, - 0x99, 0x6c, 0x14, 0x51, 0x45, 0x78, 0xa7, 0x28, 0x55, 0xcd, - 0x1e, 0xc5, 0xb5, 0x3d, 0x5e, 0xca, 0xcd, 0x46, 0x5a, 0xe2, - 0x74, 0x88, 0x1, 0xfe, 0xd3, 0x1, 0xfd, 0x6a, 0x9d, 0x7a, - 0x77, 0xc0, 0x1f, 0xa, 0x9d, 0x73, 0xc6, 0x1f, 0xda, 0x12, - 0xa9, 0x36, 0xda, 0x6a, 0xf9, 0xb9, 0xec, 0x64, 0x3c, 0x20, - 0xfe, 0x67, 0xf0, 0x15, 0xdb, 0x82, 0xc3, 0xcb, 0x15, 0x88, - 0x85, 0x18, 0xf5, 0x7f, 0x87, 0x5f, 0xc0, 0xd6, 0x94, 0x1d, - 0x49, 0xa8, 0xae, 0xa7, 0xd3, 0x68, 0xa1, 0x14, 0x28, 0xe8, - 0x6, 0x29, 0xd4, 0x51, 0x5f, 0xb9, 0x9f, 0x60, 0x14, 0x51, - 0x45, 00, 0x56, 0xd4, 0x5f, 0xcb, 0xb0, 0xb8, 0x6e, 0x98, - 0x43, 0xfc, 0xab, 0xe1, 0x1f, 0x8b, 0xd7, 0x1e, 0x77, 0x88, - 0xe5, 0xef, 0xf3, 0x1f, 0xe7, 0x5f, 0x72, 0xf8, 0x92, 0x5f, - 0x27, 0x43, 0xbc, 0x6e, 0x98, 0x8c, 0xd7, 0xc1, 0x5f, 0x12, - 0xa6, 0xf3, 0xbc, 0x45, 0x3f, 0xb3, 0x1a, 0xf8, 0xce, 0x22, - 0x97, 0xbb, 0x4e, 0x3e, 0x67, 0xc9, 0xf1, 0xc, 0xad, 0x41, - 0x23, 0xc8, 0x3e, 0x20, 0x4b, 0xb3, 0x4a, 0x9b, 0xe8, 0x6b, - 0xe9, 0x1f, 0xf8, 0x25, 0xa6, 0x9e, 0x23, 0xf8, 0x57, 0xe3, - 0x5b, 0xfc, 0x7c, 0xd7, 0x5e, 0x20, 0x64, 0xcf, 0xb2, 0x41, - 0x1f, 0xff, 00, 0x14, 0x6b, 0xe6, 0x1f, 0x89, 0x93, 0x6c, - 0xd2, 0x65, 0xfa, 0x1f, 0xe5, 0x5f, 0x60, 0x7f, 0xc1, 0x32, - 0x6c, 0x3e, 0xcd, 0xfb, 0x35, 0x1b, 0xad, 0xb8, 0x37, 0xba, - 0xe5, 0xec, 0xd9, 0xf5, 00, 0xaa, 0x7f, 0xec, 0x95, 0xd9, - 0x92, 0xc6, 0xd4, 0xcf, 0x99, 0xe1, 0x18, 0xdf, 0x13, 0x5e, - 0x7e, 0x87, 0xd6, 0x74, 0x51, 0x45, 0x7d, 0x39, 0xfa, 0x90, - 0x57, 0x82, 0xfe, 0xd6, 0xde, 0x35, 0x3a, 0x3f, 0x84, 0x6d, - 0x3c, 0x3f, 0x3, 0x62, 0x7d, 0x56, 0x4d, 0xd2, 0xe0, 0xf2, - 0x22, 0x42, 0xf, 0xea, 0xd8, 0x1f, 0x81, 0xaf, 0x7a, 0xaf, - 0x85, 0xbf, 0x68, 0x3f, 0x1a, 0x1f, 0x1a, 0x7c, 0x4b, 0xd4, - 0x1a, 0x29, 0x4, 0x96, 0x5a, 0x79, 0xfb, 0x15, 0xbe, 0xd2, - 0x70, 0x42, 0x9f, 0x98, 0xfe, 0x2d, 0x9f, 0xc8, 0x57, 0x85, - 0x9c, 0xe2, 0x3d, 0x86, 0x15, 0xa5, 0xbc, 0xb4, 0xff, 00, - 0x33, 0xe7, 0xb3, 0xdc, 0x4f, 0xd5, 0xf0, 0x6e, 0x29, 0xeb, - 0x2d, 0x3f, 0xcf, 0xf0, 0x39, 0x5f, 0x2, 0xf8, 0x7e, 0x4f, - 0x12, 0xf8, 0xa3, 0x4f, 0xd3, 0xe3, 0x5d, 0xde, 0x6c, 0xaa, - 0xf, 0xd3, 0x3c, 0xd7, 0xe8, 0x46, 0x95, 0xa7, 0xc7, 0xa5, - 0x69, 0xd6, 0xf6, 0x91, 00, 0xb1, 0xc2, 0x81, 00, 0x1e, - 0xd5, 0xf2, 0xef, 0xec, 0x9d, 0xe0, 0xff, 00, 0xb6, 0x6b, - 0x77, 0x7a, 0xd4, 0xc9, 0x98, 0xed, 0xd3, 0x6c, 0x64, 0x8e, - 0x37, 0x1a, 0xfa, 0xb6, 0xb8, 0xb8, 0x7f, 0xf, 0xc9, 0x46, - 0x55, 0xde, 0xf2, 0xfc, 0x91, 0x87, 0xf, 0xe1, 0xbd, 0x8e, - 0x1b, 0xda, 0x3d, 0xe5, 0xf9, 0x5, 0x14, 0x51, 0x5f, 0x54, - 0x7d, 0x41, 0xf9, 0x87, 0xff, 00, 0x5, 0x9e, 0xf8, 0xdd, - 0x1d, 0xb6, 0x8b, 0xe1, 0x2f, 0x85, 0x76, 0x17, 0x2c, 0x2e, - 0x2e, 0x65, 0xfe, 0xda, 0xd4, 0xe3, 0x46, 0xc0, 0xf2, 0x97, - 0x72, 0x40, 0x8d, 0xeb, 0x96, 0xde, 0xd8, 0xff, 00, 0x61, - 0x4d, 0x7e, 0x72, 0xfe, 0xcf, 0x7f, 0xa, 0xe5, 0xf8, 0xdb, - 0xf1, 0xb3, 0xc1, 0xbe, 0x7, 0x89, 0xfc, 0xb5, 0xd6, 0x75, - 0x8, 0xe0, 0x99, 0xf3, 0x8d, 0xb0, 0x8c, 0xbc, 0xa4, 0x7b, - 0x88, 0xd5, 0xc8, 0xf7, 0xaf, 0x55, 0xff, 00, 0x82, 0x90, - 0x6b, 0xf7, 0x9a, 0xff, 00, 0xed, 0x9f, 0xf1, 0x1c, 0xdd, - 0xc8, 0xce, 0xb6, 0x77, 0x30, 0x59, 0x40, 0xac, 0x73, 0xb2, - 0x34, 0xb7, 0x8c, 00, 0x3d, 0xb2, 0x58, 0xff, 00, 0xc0, - 0x8d, 0x7c, 0xfb, 0xe1, 0x5f, 0x15, 0x6a, 0xfe, 0x7, 0xf1, - 0x1e, 0x9d, 0xaf, 0xe8, 0x3a, 0x84, 0xfa, 0x56, 0xb3, 0xa7, - 0xcc, 0xb7, 0x16, 0xb7, 0x96, 0xcd, 0xb6, 0x48, 0x9c, 0x74, - 0x20, 0xff, 00, 0x9c, 0xf4, 0xaa, 0x33, 0x6f, 0x53, 0xfa, - 0x71, 0x51, 0xa7, 0xf8, 0x4b, 0xc3, 0xc0, 0x7c, 0x96, 0x7a, - 0x5e, 0x99, 0x6b, 0x8f, 0x45, 0x8a, 0x18, 0xd3, 0xf9, 0x5, - 0x5f, 0xd2, 0xbf, 0xe, 0xbe, 0x24, 0x7f, 0xc1, 0x4e, 0x7e, - 0x37, 0x6a, 0x3f, 0x13, 0x7c, 0x4b, 0xa8, 0xf8, 0x57, 0xc6, - 0xd3, 0xe9, 0x9e, 0x1a, 0x9a, 0xfe, 0x66, 0xd3, 0x74, 0xe3, - 0x67, 0x6e, 0xe9, 0xd, 0xbe, 0xe2, 0x23, 0x1f, 0x34, 0x64, - 0xe7, 0x68, 0x4, 0xe4, 0x9e, 0x49, 0xa8, 0x3c, 0x61, 0xff, - 00, 0x5, 0x45, 0xf8, 0xd9, 0xe3, 0xcf, 0x86, 0xda, 0xd7, - 0x83, 0x35, 0x89, 0xf4, 0x49, 0xac, 0xf5, 0x6b, 0x17, 0xb0, - 0xb9, 0xbe, 0x86, 0xc5, 0xa2, 0xba, 0xf2, 0xdd, 0x76, 0xb1, - 0xc, 0xae, 0x14, 0x31, 0x19, 0x19, 0xdb, 0xdc, 0xd7, 0xc8, - 0xb4, 0x92, 0x1b, 0x7d, 0x8f, 0xdf, 0x7f, 0xf8, 0x27, 0x7f, - 0xc4, 0x8f, 0x88, 0xff, 00, 0x18, 0xbe, 0x1, 0x47, 0xe3, - 0x6f, 0x88, 0xfa, 0xc2, 0xea, 0xb7, 0x7a, 0xad, 0xf4, 0xa3, - 0x4f, 0x9, 0x69, 0x1d, 0xb8, 0x8e, 0xda, 0x33, 0xe5, 0xe4, - 0x84, 0x51, 0x92, 0xce, 0xae, 0x72, 0x7b, 0x1, 0x5f, 0x50, - 0xd7, 0xe3, 0xaf, 0xc3, 0xf, 0xf8, 0x2b, 0xf6, 0xa3, 0xf0, - 0xbf, 0xc0, 0xfa, 0x7, 0x85, 0x34, 0xff, 00, 0x84, 0xda, - 0x50, 0xd2, 0xb4, 0x6b, 0x38, 0xac, 0xa0, 0x58, 0x75, 0x69, - 0x23, 0x25, 0x51, 0x40, 0xc9, 0xfd, 0xd1, 0xe4, 0xf2, 0x4f, - 0xb9, 0x35, 0xe8, 0x5a, 0x7f, 0xfc, 0x16, 0xee, 0x16, 0x61, - 0xf6, 0xef, 0x84, 0xb2, 0x46, 0xbd, 0xcd, 0xbe, 0xb8, 0x1f, - 0xf9, 0xc0, 0x28, 0xb1, 0x57, 0x47, 0xea, 0x45, 0x15, 0xf9, - 0xbd, 0x65, 0xff, 00, 0x5, 0xb1, 0xf0, 0x3c, 0x85, 0x7e, - 0xd7, 0xf0, 0xe3, 0xc4, 0x10, 0xe, 0xe6, 0x1b, 0xc8, 0x24, - 0xc7, 0xe7, 0xb6, 0xba, 0xed, 0x3, 0xfe, 0xb, 0x19, 0xf0, - 0x8b, 0x5c, 0xbd, 0xb6, 0xb3, 0x3e, 0x19, 0xf1, 0x84, 0x17, - 0x57, 0x12, 0x2c, 0x51, 0xc6, 0x2d, 0x20, 0x93, 0x73, 0xb1, - 0xc0, 0x51, 0xb6, 0x6e, 0x72, 0x48, 0xed, 0x48, 0x2e, 0x8f, - 0xbc, 0xe8, 0xa8, 0xad, 0xa6, 0x37, 0x16, 0xd1, 0x4a, 0x63, - 0x78, 0x4b, 0xa0, 0x63, 0x1c, 0x98, 0xdc, 0xb9, 0x19, 0xc1, - 0xc7, 0x71, 0x59, 0x1e, 0x36, 0xf1, 0xae, 0x89, 0xf0, 0xe7, - 0xc2, 0x9a, 0x9f, 0x89, 0x7c, 0x47, 0x7f, 0x1e, 0x97, 0xa2, - 0x69, 0xb0, 0x99, 0xee, 0xee, 0xe5, 0x4, 0xac, 0x48, 0x3b, - 0xe0, 0x2, 0x4f, 0x5e, 0x80, 0x50, 0x33, 0x72, 0x8a, 0xf0, - 0x2b, 0xf, 0xdb, 0xdb, 0xf6, 0x7d, 0xd4, 0x63, 0xf, 0x1f, - 0xc5, 0x6f, 0xf, 0xc6, 0xf, 0x6b, 0x89, 0x9a, 0x23, 0xf9, - 0x32, 0x8a, 0xdc, 0xb1, 0xfd, 0xb1, 0x7e, 0x6, 0xea, 0x3f, - 0xea, 0x3e, 0x2d, 0x78, 0x40, 0xff, 00, 0xbf, 0xac, 0x42, - 0x9f, 0xfa, 0x13, 0xa, 00, 0xf6, 0x1a, 0x2b, 0x82, 0xd2, - 0x7e, 0x3e, 0x7c, 0x33, 0xd7, 0xbf, 0xe4, 0x1d, 0xf1, 0xb, - 0xc2, 0xf7, 0xdf, 0xf5, 0xc3, 0x58, 0xb7, 0x7f, 0xe4, 0xf5, - 0xd1, 0xd9, 0x78, 0xd7, 0xc3, 0xda, 0x91, 0x2, 0xd3, 0x5e, - 0xd3, 0x2e, 0x89, 0xe8, 0x21, 0xbc, 0x8d, 0xf3, 0xf9, 0x35, - 00, 0x6d, 0x51, 0x51, 0xa5, 0xc4, 0x52, 0x7d, 0xc9, 0x51, - 0xbf, 0xdd, 0x60, 0x6a, 0x4a, 00, 0x28, 0xa2, 0x8a, 00, - 0x2a, 0xbd, 0xfe, 0x9f, 0x6d, 0xaa, 0x5a, 0x49, 0x6b, 0x79, - 0x6f, 0x1d, 0xd5, 0xb4, 0x98, 0xdf, 0x14, 0xca, 0x19, 0x5b, - 0x9c, 0xf2, 0xf, 0xbd, 0x58, 0xa2, 0x93, 0x49, 0xab, 0x30, - 0x6a, 0xfa, 0x33, 0x96, 0x9b, 0xe1, 0x77, 0x84, 0xe7, 0x1f, - 0x36, 0x81, 0x62, 0x3f, 0xdc, 0x8b, 0x6f, 0xf2, 0xaa, 0x53, - 0x7c, 0x17, 0xf0, 0x6c, 0xfd, 0x74, 0x54, 0x5f, 0xf7, 0x25, - 0x91, 0x7f, 0x93, 0x57, 0x6d, 0x45, 0x72, 0x4b, 0x5, 0x85, - 0x96, 0xf4, 0xa3, 0xf7, 0x23, 0x27, 0x46, 0x9b, 0xde, 0x2b, - 0xee, 0x3c, 0xf6, 0x4f, 0x80, 0xde, 0xc, 0x7e, 0x9a, 0x74, - 0xa9, 0xfe, 0xed, 0xd4, 0x9f, 0xd5, 0xaa, 0xac, 0x9f, 0xb3, - 0xd7, 0x84, 0x9f, 0xee, 0xa5, 0xe4, 0x7f, 0xee, 0xdc, 0x7f, - 0x88, 0xaf, 0x4c, 0xa2, 0xb0, 0x79, 0x66, 0x9, 0xef, 0x46, - 0x3f, 0x72, 0x23, 0xea, 0xf4, 0x7f, 0x95, 0x18, 0x7e, 0xf, - 0xf0, 0x85, 0x97, 0x82, 0x74, 0x93, 0xa7, 0x58, 0x3c, 0xcf, - 0x6f, 0xe6, 0x34, 0xa3, 0xcf, 0x60, 0xc4, 0x13, 0x8c, 0x8c, - 0x80, 0x38, 0xe2, 0xb7, 0x28, 0xa2, 0xbb, 0xe9, 0xd3, 0x8d, - 0x28, 0xa8, 0x41, 0x59, 0x23, 0x68, 0xc5, 0x45, 0x59, 0x6c, - 0x14, 0x51, 0x45, 0x68, 0x50, 0x57, 0x25, 0xf1, 0x4b, 0xc3, - 0xfa, 0x9f, 0x8a, 0x7c, 0x1f, 0x73, 0xa5, 0xe9, 0x46, 0x21, - 0x3c, 0xee, 0x81, 0xcc, 0xce, 0x50, 0x6c, 0x7, 0x27, 0x9c, - 0x1f, 0x41, 0x5d, 0x6d, 0x15, 0x8d, 0x6a, 0x51, 0xaf, 0x4e, - 0x54, 0xa5, 0xb3, 0x56, 0x22, 0x71, 0x53, 0x8b, 0x8b, 0xea, - 0x7c, 0xb5, 0x2f, 0xc0, 0xf, 0x18, 0x47, 0xd2, 0xd6, 0xda, - 0x4f, 0xf7, 0x2e, 0x17, 0xfa, 0xe2, 0xa9, 0xcb, 0xf0, 0x47, - 0xc6, 0x71, 0xff, 00, 0xcc, 0x1f, 0x7f, 0xfb, 0xb3, 0xc7, - 0xff, 00, 0xc5, 0x57, 0xd6, 0x34, 0x57, 0xcb, 0xcb, 0x86, - 0x30, 0x4f, 0x69, 0x49, 0x7c, 0xd7, 0xf9, 0x1e, 0x7b, 0xcb, - 0xe9, 0x77, 0x67, 0xc8, 0x53, 0x7c, 0x25, 0xf1, 0x7c, 0x7, - 0xe6, 0xd0, 0x6e, 0x8f, 0xfb, 0x9b, 0x5b, 0xf9, 0x1a, 0xa3, - 0x3f, 0xc3, 0xef, 0x13, 0x5b, 0xff, 00, 0xac, 0xd0, 0x75, - 0x1, 0xf4, 0xb7, 0x63, 0xfc, 0x85, 0x7d, 0x97, 0x45, 0x61, - 0x2e, 0x16, 0xc3, 0x7d, 0x9a, 0x92, 0xfc, 0x3f, 0xc8, 0x87, - 0x97, 0x43, 0xa4, 0x99, 0xe7, 0xdf, 0x3, 0xbc, 0x37, 0x2f, - 0x87, 0x7c, 0xb, 0xf, 0xda, 0x61, 0x78, 0x2e, 0xee, 0xe5, - 0x79, 0xe4, 0x49, 0x14, 0xab, 0x2f, 0x3b, 0x54, 0x10, 0x7a, - 0x70, 0xa0, 0xfe, 0x35, 0xe8, 0x34, 0x51, 0x5f, 0x59, 0x86, - 0xa1, 0x1c, 0x35, 0x18, 0xd1, 0x8e, 0xd1, 0x56, 0x3d, 0x2a, - 0x70, 0x54, 0xe0, 0xa0, 0xba, 0x5, 0x14, 0x51, 0x5d, 0x26, - 0x81, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x6, 0x57, - 0x88, 0xfc, 0x33, 0xa6, 0xf8, 0xb3, 0x4d, 0x7b, 0x1d, 0x4e, - 0xd9, 0x6e, 0x20, 0x6e, 0x46, 0x78, 0x64, 0x3e, 0xaa, 0x7a, - 0x83, 0x5f, 0x3a, 0xf8, 0xef, 0xe0, 0x66, 0xb1, 0xe1, 0x97, - 0x96, 0xe7, 0x4d, 0x56, 0xd5, 0xb4, 0xd1, 0xc8, 0x31, 0x8c, - 0xcc, 0x83, 0xfd, 0xa5, 0x1d, 0x7e, 0xa3, 0xf2, 0x15, 0xf4, - 0xfd, 0x15, 0xe3, 0xe3, 0xf2, 0xac, 0x3e, 0x60, 0xbf, 0x78, - 0xad, 0x2e, 0xeb, 0x7f, 0xf8, 0x27, 0x2d, 0x6c, 0x34, 0x2b, - 0xfc, 0x5b, 0xf7, 0x3e, 0x15, 0x20, 0xa9, 0x20, 0x8c, 0x11, - 0xc1, 0x7, 0xb5, 0x25, 0x7d, 0x89, 0xe2, 0x7f, 0x86, 0xde, - 0x1e, 0xf1, 0x70, 0x63, 0x7f, 0xa7, 0x47, 0xe7, 0x9f, 0xf9, - 0x78, 0x87, 0xe4, 0x90, 0x7e, 0x23, 0xaf, 0xe3, 0x9a, 0xf3, - 0x2d, 0x6b, 0xf6, 0x66, 0x53, 0xb9, 0xb4, 0x9d, 0x64, 0x8f, - 0x48, 0xaf, 0x23, 0xcf, 0xfe, 0x3c, 0xbf, 0xe1, 0x5f, 0x5, - 0x89, 0xe1, 0xbc, 0x65, 0x17, 0x7a, 0x56, 0x9a, 0xfb, 0x9f, - 0xdc, 0xff, 00, 0xcc, 0xf1, 0xaa, 0x60, 0x2a, 0xc7, 0xe1, - 0xd4, 0xf0, 0x8a, 0x2b, 0xd0, 0x35, 0x3f, 0x81, 0x5e, 0x30, - 0xd3, 0xdc, 0x84, 0xb0, 0x8e, 0xf5, 0x7, 0xf1, 0xdb, 0x4c, - 0xa7, 0xf4, 0x62, 0xf, 0xe9, 0x58, 0x57, 0x3f, 0xe, 0x3c, - 0x53, 0x68, 0x71, 0x26, 0x81, 0x7f, 0xff, 00, 00, 0x81, - 0x9c, 0x7e, 0x99, 0xaf, 0xa, 0xa6, 0x7, 0x15, 0x49, 0xda, - 0x74, 0xa4, 0xbe, 0x4c, 0xe2, 0x74, 0x6a, 0x47, 0x78, 0xb3, - 0x9c, 0xa2, 0xb4, 0xe4, 0xf0, 0xc6, 0xb3, 0x11, 0xc3, 0xe9, - 0x37, 0xca, 0x7d, 0xd, 0xb3, 0xff, 00, 0x85, 0x35, 0x7c, - 0x39, 0xab, 0x31, 0xc0, 0xd2, 0xaf, 0x4f, 0xd2, 0xd9, 0xff, - 00, 0xc2, 0xb9, 0xbd, 0x95, 0x4f, 0xe5, 0x7f, 0x71, 0x1c, - 0xb2, 0xec, 0x67, 0x51, 0x5b, 0xf6, 0xfe, 00, 0xf1, 0x2d, - 0xd1, 0x1e, 0x56, 0x83, 0xa8, 0xb6, 0x7a, 0x13, 0x6c, 0xe0, - 0x7e, 0x64, 0x56, 0xe6, 0x9d, 0xf0, 0x47, 0xc6, 0x3a, 0x83, - 0xa8, 0x3a, 0x5f, 0xd9, 0x50, 0xff, 00, 0x1d, 0xc4, 0xa8, - 0xa0, 0x7e, 0x19, 0x27, 0xf4, 0xae, 0x88, 0x60, 0xb1, 0x35, - 0x3e, 0xa, 0x52, 0x7f, 0x26, 0x5a, 0xa5, 0x52, 0x5b, 0x45, - 0x9c, 0x25, 0x15, 0xee, 0x3a, 0x2f, 0xec, 0xcf, 0x2b, 0x6d, - 0x6d, 0x5b, 0x58, 0x54, 0xf5, 0x8a, 0xce, 0x3c, 0x9f, 0xfb, - 0xe9, 0xbf, 0xc2, 0xbd, 0x2f, 0xc3, 0x1f, 0xa, 0x7c, 0x35, - 0xe1, 0x4d, 0xaf, 0x6b, 0xa7, 0xac, 0xf7, 0x2b, 0xff, 00, - 0x2f, 0x17, 0x5f, 0xbc, 0x7f, 0xc3, 0x3c, 0xf, 0xc0, 0xa, - 0xf7, 0x30, 0xdc, 0x39, 0x8d, 0xac, 0xef, 0x51, 0x28, 0x2f, - 0x3d, 0x5f, 0xdc, 0xbf, 0xe0, 0x1d, 0x94, 0xf0, 0x35, 0x67, - 0xf1, 0x68, 0x7c, 0xfd, 0xe0, 0xbf, 0x83, 0x9a, 0xff, 00, - 0x8c, 0xc, 0x73, 0x18, 0x7f, 0xb3, 0xb4, 0xf6, 0x23, 0x37, - 0x37, 0x20, 0x82, 0x47, 0xaa, 0xaf, 0x56, 0xfd, 0x7, 0xbd, - 0x7d, 0xf, 0xe0, 0x9f, 0x87, 0x3a, 0x37, 0x81, 0x6d, 0xb6, - 0xd8, 0xc1, 0xe6, 0x5d, 0x32, 0xe2, 0x5b, 0xb9, 0x79, 0x91, - 0xff, 00, 0xc0, 0x7b, 0xa, 0xea, 0x68, 0xaf, 0xba, 0xc0, - 0x64, 0xd8, 0x6c, 0x7, 0xbd, 0x15, 0xcd, 0x2e, 0xef, 0xf4, - 0xec, 0x7b, 0x14, 0x30, 0xb4, 0xe8, 0xea, 0xb5, 0x7d, 0xc2, - 0x8a, 0x28, 0xaf, 0x74, 0xec, 0xa, 0xe5, 0x7e, 0x28, 0x6b, - 0xe3, 0xc3, 0x7e, 0x5, 0xd5, 0xae, 0xc3, 0x6d, 0x95, 0xa2, - 0x30, 0xc4, 0x7b, 0xef, 0x7f, 0x94, 0x7e, 0x59, 0xcf, 0xe1, - 0x5d, 0x55, 0x78, 0xc7, 0xed, 0x29, 0x71, 0x76, 0xfa, 0x46, - 0x95, 0x69, 0xd, 0xbc, 0xcf, 0x6d, 0xe6, 0xb4, 0xf3, 0x4a, - 0x88, 0x4a, 0x29, 0x3, 0xa, 0x9, 0xe9, 0xfc, 0x4d, 0xf9, - 0x57, 0x99, 0x99, 0xd7, 0x78, 0x7c, 0x1d, 0x4a, 0x91, 0xde, - 0xda, 0x7c, 0xf4, 0x39, 0xf1, 0x13, 0x70, 0xa5, 0x29, 0x23, - 0xe7, 0xba, 0x28, 0xa2, 0xbf, 0x12, 0x3e, 0x48, 0x28, 0xa2, - 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, - 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0xbb, 0x3f, 0x5, 0x7c, - 0x27, 0xd7, 0xbc, 0x69, 0x2c, 0x4f, 0x15, 0xbb, 0x59, 0x69, - 0xed, 0xc9, 0xbd, 0xb8, 0x5c, 0x2e, 0x3f, 0xd9, 0x1d, 0x5b, - 0xf0, 0xe3, 0xde, 0xb7, 0xa3, 0x42, 0xae, 0x22, 0x6a, 0x9d, - 0x18, 0xb6, 0xfc, 0x8b, 0x84, 0x25, 0x37, 0x68, 0xab, 0xb3, - 0x9c, 0xd0, 0x34, 0x1b, 0xdf, 0x13, 0x6a, 0xd6, 0xfa, 0x76, - 0x9f, 0x17, 0x9d, 0x73, 0x33, 0x60, 0xe, 0xca, 0x3b, 0xb1, - 0x3d, 0x80, 0xf5, 0xaf, 0xae, 0xbc, 0xb, 0xe0, 0xeb, 0x5f, - 0x3, 0xf8, 0x7a, 0xd, 0x3a, 0xdc, 0x6, 0x90, 0xd, 0xf3, - 0xcc, 0x6, 0xc, 0xb2, 0x1e, 0xa7, 0xfa, 0xf, 0x6a, 0x87, - 0xc0, 0xdf, 0xf, 0xb4, 0xbf, 0x1, 0x58, 0x18, 0x2c, 0x50, - 0xc9, 0x71, 0x26, 0x3c, 0xeb, 0xa9, 00, 0xdf, 0x21, 0xfe, - 0x83, 0xd8, 0x57, 0x4f, 0x5f, 0xa9, 0x64, 0xd9, 0x3a, 0xcb, - 0xe3, 0xed, 0x6a, 0xeb, 0x51, 0xfe, 0xb, 0xb7, 0xf9, 0x9f, - 0x43, 0x85, 0xc2, 0xfb, 0x5, 0xcd, 0x2f, 0x88, 0x28, 0xa2, - 0x8a, 0xfa, 0x73, 0xd1, 0xa, 0x28, 0xa2, 0x80, 0x30, 0x7c, - 0x73, 0x37, 0x91, 0xe1, 0x8b, 0xd6, 0xe9, 0xf2, 0xe2, 0xbe, - 0x8, 0xf1, 0xc4, 0xbe, 0x66, 0xbd, 0x72, 0x73, 0xfc, 0x46, - 0xbe, 0xe8, 0xf8, 0x9f, 0x37, 0x93, 0xe1, 0x2b, 0xa3, 0x9a, - 0xf8, 0x2f, 0xc5, 0xd, 0xbf, 0x55, 0xba, 0x6c, 0xff, 00, - 0x11, 0xaf, 0x84, 0xe2, 0x19, 0x7e, 0xfa, 0x9c, 0x4f, 0x88, - 0xe2, 0x49, 0x7b, 0x91, 0x47, 0x8f, 0x7c, 0x59, 0x9f, 0xcb, - 0xd2, 0x64, 0xe7, 0xb1, 0xfe, 0x55, 0xf7, 0x67, 0xfc, 0x13, - 0xa2, 0xc9, 0xad, 0x3f, 0x64, 0xaf, 0x8, 0xbb, 0xc, 0x1b, - 0x89, 0xaf, 0x67, 0xfc, 0xd, 0xd4, 0xa3, 0xfa, 0x57, 0xc0, - 0x5f, 0x19, 0xa6, 0xf2, 0xf4, 0xa9, 0x79, 0xe3, 0x69, 0xaf, - 0xd2, 0x7f, 0xd8, 0xaf, 0x4a, 0x1a, 0x3f, 0xec, 0xaf, 0xf0, - 0xda, 00, 0x41, 0xdf, 0xa5, 0x25, 0xc1, 0xc7, 0xac, 0x8c, - 0xd2, 0x7f, 0xec, 0xd5, 0xed, 0xe5, 0xa, 0xd4, 0x91, 0xe6, - 0xf0, 0x74, 0x7d, 0xda, 0xf3, 0xf3, 0x3d, 0xb2, 0x8a, 0x28, - 0xaf, 0xa0, 0x3f, 0x49, 0x39, 0x5f, 0x8a, 0x1e, 0x30, 0x4f, - 0x2, 0x78, 0x13, 0x56, 0xd6, 0x18, 0xfe, 0xf2, 0x18, 0xb6, - 0xc2, 0x3d, 0x65, 0x6f, 0x95, 0x7, 0xe6, 0x45, 0x7e, 0x7e, - 0xa7, 0x99, 0x77, 0x71, 0x96, 0x26, 0x49, 0xa5, 0x6c, 0xb3, - 0x1e, 0x4b, 0x31, 0x3c, 0x9f, 0xce, 0xbe, 0x93, 0xfd, 0xaf, - 0xfc, 0x64, 0xf, 0xf6, 0x4f, 0x85, 0xa1, 0x3c, 0xff, 00, - 0xc7, 0xf5, 0xc1, 0xf6, 0xe5, 0x50, 0x7f, 0xe8, 0x47, 0xf0, - 0x15, 0xe3, 0xbf, 0x8, 0x3c, 0x2a, 0xde, 0x2d, 0xf1, 0xd6, - 0x9b, 0x69, 0xb4, 0xb4, 0x42, 0x40, 0xf2, 0x7b, 0x28, 0xe6, - 0xbf, 0x3e, 0xce, 0xab, 0x4b, 0x13, 0x8b, 0x8e, 0x1e, 0x1d, - 0x34, 0xf9, 0xb3, 0xf3, 0xbc, 0xe2, 0xa3, 0xc6, 0xe3, 0xe3, - 0x86, 0x86, 0xd1, 0xd3, 0xe6, 0xf7, 0xfd, 0xf, 0xae, 0xfe, - 0x7, 0x78, 0x51, 0x7c, 0x2b, 0xf0, 0xff, 00, 0x4f, 0x8c, - 0xa8, 0x59, 0xe7, 0x5f, 0x36, 0x43, 0x8e, 0xe6, 0xbd, 0x2, - 0xa3, 0xb7, 0x81, 0x2d, 0xa0, 0x8e, 0x14, 0x1b, 0x51, 0x14, - 0x28, 0x3, 0xd0, 0x54, 0x95, 0xf7, 0x54, 0x29, 0x2a, 0x14, - 0xa3, 0x4a, 0x3b, 0x25, 0x63, 0xef, 0xe9, 0x53, 0x54, 0xa1, - 0x18, 0x47, 0x64, 0x14, 0x51, 0x45, 0x6e, 0x6a, 0x7e, 0x70, - 0xff, 00, 0xc1, 0x43, 0xbf, 0xe0, 0x9c, 0x3a, 0xf7, 0xc6, - 0x5f, 0x19, 0x5d, 0x7c, 0x4c, 0xf8, 0x6b, 0xf6, 0x7b, 0x8d, - 0x7a, 0xea, 0x24, 0x1a, 0xae, 0x87, 0x33, 0x88, 0x9a, 0xe9, - 0xd1, 0x42, 0xac, 0xb1, 0x39, 0xf9, 0x77, 0x95, 0x55, 0x52, - 0xad, 0x8c, 0xed, 0x4, 0x1e, 0xb5, 0xf9, 0x9d, 0xe2, 0x4f, - 0xd9, 0xa7, 0xe2, 0xcf, 0x84, 0x2e, 0xe4, 0xb6, 0xd5, 0xfe, - 0x1b, 0x78, 0xaa, 0xce, 0x54, 0xfb, 0xc4, 0xe9, 0x13, 0xba, - 0x7e, 0xe, 0xaa, 0x54, 0xfe, 0x6, 0xbf, 0xa4, 0xfa, 0xe7, - 0xbe, 0x21, 0x78, 0xca, 0xdb, 0xe1, 0xe7, 0x81, 0xb5, 0xef, - 0x13, 0x5e, 0x47, 0x24, 0xd6, 0xfa, 0x55, 0x9c, 0xb7, 0x6d, - 0x14, 0x2a, 0x59, 0xe4, 0xda, 0xa4, 0x84, 0x50, 0x39, 0x2c, - 0xc7, 00, 0x1, 0xdc, 0xd3, 0xb9, 0x2d, 0x5c, 0xfe, 0x63, - 0xef, 0xac, 0x6e, 0x74, 0xcb, 0xb9, 0x6d, 0x6f, 0x2d, 0xe5, - 0xb4, 0xba, 0x85, 0xb6, 0x49, 0x4, 0xe8, 0x51, 0xd1, 0xbd, - 0xa, 0x9e, 0x41, 0xfa, 0xd5, 0x7a, 0xeb, 0x3e, 0x21, 0x5c, - 0x78, 0x93, 0xc5, 0xbe, 0x32, 0xd7, 0x7c, 0x49, 0xae, 0x69, - 0xb7, 0xb0, 0xea, 0x1a, 0xb5, 0xf4, 0xd7, 0xf7, 0x6, 0x68, - 0x1d, 0x70, 0xf2, 0x39, 0x72, 0x39, 0x1d, 0x1, 0x38, 0xaf, - 0xd9, 0xef, 0xf8, 0x27, 0x3f, 0xec, 0xbd, 0xe1, 0xaf, 0x8, - 0x7e, 0xcb, 0x5e, 0x1e, 0xbd, 0xf1, 0x2f, 0x86, 0xf4, 0xcd, - 0x5b, 0x58, 0xf1, 0x29, 0x3a, 0xcc, 0xe7, 0x52, 0xb1, 0x49, - 0x9a, 0x38, 0xe4, 00, 0x42, 0x9f, 0x38, 0x38, 0xc4, 0x6a, - 0xa7, 0x1e, 0xac, 0x69, 0xdc, 0x9b, 0x5c, 0xfc, 0x36, 0xa2, - 0xbf, 0xa4, 0x3d, 0x67, 0xf6, 0x53, 0xf8, 0x37, 0xe2, 0x2, - 0x7f, 0xb4, 0x3e, 0x17, 0xf8, 0x52, 0xe7, 0x3e, 0xba, 0x4c, - 0x23, 0xf9, 0x28, 0xae, 0x53, 0x54, 0xfd, 0x81, 0x7f, 0x67, - 0xbd, 0x5c, 0x62, 0x6f, 0x85, 0x5a, 0xc, 0x5f, 0xf5, 0xeb, - 0x1b, 0xc1, 0xff, 00, 0xa0, 0x30, 0xa5, 0x71, 0xf2, 0x9f, - 0xcf, 0x3d, 0x7d, 0x3f, 0xff, 00, 0x4, 0xe1, 0xf8, 0x2a, - 0x7e, 0x34, 0x7e, 0xd4, 0xfe, 0x18, 0x8e, 0xe2, 0x3, 0x2e, - 0x8f, 0xe1, 0xf6, 0xfe, 0xdc, 0xbe, 0xc8, 0x3b, 0x71, 0x9, - 0x6, 0x25, 0x27, 0xde, 0x53, 0x1f, 0xe0, 0xd, 0x7e, 0xa9, - 0x6a, 0x5f, 0xf0, 0x4c, 0x4f, 0xd9, 0xc3, 0x51, 0x18, 0xff, - 00, 0x84, 00, 0xda, 0xfb, 0xdb, 0x6a, 0x97, 0x69, 0xff, - 00, 0xb5, 0x6b, 0xd0, 0x3e, 00, 0xfe, 0xc8, 0x5f, 0xc, - 0xbf, 0x66, 0x6d, 0x43, 0x59, 0xbd, 0xf0, 0xe, 0x8d, 0x71, - 0xa6, 0xdc, 0xea, 0xd1, 0xc7, 0xd, 0xd3, 0xdc, 0x5e, 0xcb, - 0x72, 0x4a, 0x21, 0x62, 0xa1, 0x7c, 0xc2, 0x76, 0x8c, 0xb1, - 0xce, 0x3a, 0xf1, 0xe9, 0x45, 0xc3, 0x94, 0xf6, 0x7a, 0xfc, - 0xf8, 0xff, 00, 0x82, 0xc6, 0xfc, 0x66, 0x3e, 0x11, 0xf8, - 0x31, 0xa1, 0x7c, 0x3f, 0xb3, 0x98, 0xa5, 0xef, 0x8a, 0x6e, - 0xfc, 0xeb, 0x90, 0xa7, 0x9f, 0xb2, 0x5b, 0x95, 0x62, 0xf, - 0xd6, 0x46, 0x8f, 0xfe, 0xf9, 0x35, 0xfa, 0xf, 0x5f, 0x23, - 0xfe, 0xd6, 0x9f, 0xf0, 0x4f, 0x2d, 0x1b, 0xf6, 0xb2, 0xf1, - 0xd5, 0xaf, 0x8a, 0x35, 0x7f, 0x1c, 0x6b, 0x1a, 0x34, 0xf6, - 0x96, 0x6b, 0x65, 0x6d, 0x65, 0x6f, 0x6f, 0x14, 0x90, 0x44, - 0x80, 0x96, 0x24, 0x3, 0x83, 0x96, 0x66, 0x24, 0xf3, 0xd8, - 0x7a, 0x52, 0x29, 0x9f, 0x83, 0xf4, 0x57, 0xea, 0x9e, 0xa5, - 0xff, 00, 0x4, 0x45, 0xb5, 0x20, 0xfd, 0x83, 0xe2, 0xc4, - 0xca, 0x7b, 0xb, 0x9d, 0x10, 0x1f, 0xd5, 0x66, 0x15, 0xcf, - 0x5d, 0xff, 00, 0xc1, 0x11, 0xbc, 0x42, 0xaa, 0x4d, 0xaf, - 0xc5, 0x6d, 0x32, 0x46, 0xec, 0x26, 0xd1, 0xe4, 0x41, 0xf9, - 0x89, 0x4f, 0xf2, 0xaa, 0xb9, 0x16, 0x67, 0xe6, 0x66, 0x7, - 0xa5, 0x49, 0x14, 0xf2, 0x42, 0x7f, 0x77, 0x23, 0xc7, 0xfe, - 0xeb, 0x11, 0x5f, 0xa2, 0x1a, 0x87, 0xfc, 0x11, 0x57, 0xe2, - 0x44, 0x8, 0x4d, 0x9f, 0x8f, 0x3c, 0x31, 0x74, 0x7b, 0x2c, - 0x91, 0xdc, 0x47, 0xff, 00, 0xb2, 0x1a, 0xe3, 0xf5, 0x4f, - 0xf8, 0x23, 0xd7, 0xc7, 0x5b, 0x32, 0xdf, 0x65, 0xb9, 0xf0, - 0xb5, 0xfa, 0x8e, 0x9e, 0x5e, 0xa4, 0xe8, 0x4f, 0xfd, 0xf5, - 0x10, 0xa2, 0xe1, 0x66, 0x7c, 0x69, 0xa6, 0xf8, 0xcf, 0xc4, - 0x1a, 0x3b, 0x87, 0xb0, 0xd7, 0x75, 0x3b, 0x17, 0x1d, 0x1a, - 0xda, 0xf2, 0x48, 0xcf, 0xe8, 0xc2, 0xba, 0x9d, 0x3f, 0xf6, - 0x87, 0xf8, 0xa7, 0xa5, 0x38, 0x6b, 0x4f, 0x89, 0x1e, 0x2c, - 0x84, 0x8e, 0x9b, 0x75, 0xab, 0x9c, 0xf, 0xc3, 0x7d, 0x7b, - 0xce, 0xa5, 0xff, 00, 0x4, 0xab, 0xfd, 0xa2, 0x74, 0xf0, - 0x4a, 0x78, 0x5b, 0x4f, 0xbd, 0x3, 0xfe, 0x7d, 0x75, 0x68, - 0xe, 0x7f, 0xef, 0xa6, 0x15, 0xc9, 0xea, 0x7f, 0xf0, 0x4e, - 0xbf, 0xda, 0x27, 0x4a, 0x4, 0xbf, 0xc3, 0x2d, 0x46, 0x75, - 0x1d, 0xed, 0xae, 0x2d, 0xe5, 0xfd, 0x16, 0x4c, 0xd0, 0x16, - 0x67, 0x33, 0x61, 0xfb, 0x69, 0x7c, 0x76, 0xd3, 0x48, 0xf2, - 0x3e, 0x2b, 0xf8, 0xa7, 0x8e, 0x82, 0x4d, 0x41, 0xe4, 0x1f, - 0xf8, 0xf6, 0x6b, 0xa1, 0xb4, 0xff, 00, 0x82, 0x86, 0xfe, - 0xd1, 0x56, 0x61, 0x44, 0x7f, 0x14, 0xb5, 0x56, 0x3, 0xfe, - 0x7a, 0xc1, 0x6f, 0x27, 0xfe, 0x85, 0x19, 0xae, 0x67, 0x53, - 0xfd, 0x8d, 0xfe, 0x39, 0x69, 0x19, 0xfb, 0x4f, 0xc2, 0x9f, - 0x15, 0xe0, 0x75, 0x31, 0x69, 0x92, 0x4b, 0xff, 00, 0xa0, - 0x3, 0x5c, 0xdd, 0xd7, 0xec, 0xf7, 0xf1, 0x4a, 0xc7, 0x3f, - 0x68, 0xf8, 0x6f, 0xe2, 0xd8, 0x71, 0xd7, 0x7e, 0x87, 0x72, - 0x3f, 0xf6, 0x4a, 0x3, 0x53, 0xda, 0x2c, 0xbf, 0xe0, 0xa7, - 0x9f, 0xb4, 0x7d, 0x96, 0x3f, 0xe2, 0xbf, 0x17, 00, 0x76, - 0x9f, 0x4a, 0xb4, 0x6c, 0xff, 00, 0xe4, 0x2a, 0xea, 0x34, - 0xff, 00, 0xf8, 0x2b, 0x87, 0xed, 0x5, 0x64, 0x81, 0x65, - 0xd4, 0x3c, 0x3f, 0x7d, 0x8e, 0xf7, 0x1a, 0x4a, 0x82, 0x7f, - 0xef, 0x96, 0x5a, 0xf9, 0x4e, 0xf7, 0xe1, 0xaf, 0x8b, 0xf4, - 0xd0, 0x4d, 0xdf, 0x85, 0x75, 0xbb, 0x50, 0x3a, 0xf9, 0xfa, - 0x74, 0xc9, 0x8f, 0xcd, 0x6b, 0xe, 0xeb, 0x4f, 0xba, 0xb2, - 0x38, 0xb8, 0xb6, 0x9a, 0x3, 0xe9, 0x2c, 0x65, 0x7f, 0x9d, - 0x1, 0x76, 0x7d, 0xe7, 0xa5, 0x7f, 0xc1, 0x66, 0x3e, 0x30, - 0xda, 0x15, 0xfb, 0x6f, 0x87, 0x7c, 0x2b, 0x7e, 0x7, 0x5f, - 0xf4, 0x79, 0xa2, 0xcf, 0xe5, 0x25, 0x75, 0x76, 0x1f, 0xf0, - 0x5b, 0x3f, 0x18, 0xc5, 0x8f, 0xb6, 0xfc, 0x33, 0xd0, 0xee, - 0x3d, 0x7c, 0x8d, 0x42, 0x68, 0xbf, 0x9a, 0xb5, 0x7e, 0x6c, - 0xe4, 0x52, 0xd1, 0x60, 0xbb, 0x3f, 0x53, 0x74, 0xef, 0xf8, - 0x2d, 0xd0, 0x38, 0xfb, 0x7f, 0xc2, 0x82, 0xbe, 0xbf, 0x66, - 0xd6, 0xb3, 0xfc, 0xe1, 0x15, 0xd2, 0xd9, 0xff, 00, 0xc1, - 0x6c, 0xfc, 0x1a, 0xe0, 0x7d, 0xaf, 0xe1, 0xae, 0xbb, 0x11, - 0xef, 0xe4, 0xdf, 0x42, 0xff, 00, 0xcc, 0x2d, 0x7e, 0x46, - 0xd1, 0x45, 0x82, 0xec, 0xfd, 0x8f, 0xb1, 0xff, 00, 0x82, - 0xd2, 0xfc, 0x29, 0x9b, 0x2, 0xe7, 0xc1, 0x9e, 0x2e, 0xb6, - 0xf5, 0x2b, 0x1d, 0xb3, 0x8f, 0xfd, 0x1c, 0x2b, 0xa4, 0xd3, - 0xbf, 0xe0, 0xb0, 0xff, 00, 0x2, 0xef, 0x31, 0xf6, 0x9b, - 0x5f, 0x14, 0xd8, 0x13, 0xff, 00, 0x3d, 0x74, 0xd4, 0x70, - 0x3f, 0xef, 0x89, 0xd, 0x7e, 0x26, 0x51, 0x45, 0x87, 0xcc, - 0xcf, 0xdd, 0xdd, 0x3f, 0xfe, 0xa, 0xad, 0xfb, 0x3a, 0x5f, - 0x85, 0xdd, 0xe2, 0xbb, 0xfb, 0x46, 0x3f, 0xc3, 0x71, 0xa3, - 0xdc, 0x8c, 0x7e, 0x21, 0x8, 0xae, 0xb7, 0x4b, 0xff, 00, - 0x82, 0x89, 0x7e, 0xce, 0xfa, 0xaa, 0x6, 0x4f, 0x89, 0xba, - 0x6d, 0xb9, 0x3f, 0xc3, 0x75, 0xc, 0xd1, 0x1f, 0xd5, 0x2b, - 0xf9, 0xf5, 0xa2, 0x8b, 0x7, 0x31, 0xfd, 0x18, 0x69, 0xdf, - 0xb6, 0x8f, 0xc0, 0x8d, 0x51, 0x41, 0x83, 0xe2, 0xcf, 0x84, - 0xf9, 0xe8, 0x25, 0xd4, 0xe3, 0x88, 0xfe, 0x4e, 0x41, 0xae, - 0xa3, 0x4a, 0xfd, 0xa0, 0xbe, 0x18, 0x6b, 0x60, 0x7d, 0x83, - 0xe2, 0x1f, 0x85, 0xee, 0xf3, 0xff, 00, 0x3c, 0xb5, 0x7b, - 0x73, 0xff, 00, 0xb3, 0xd7, 0xf3, 0x4f, 0x45, 0x2b, 0x7, - 0x31, 0xfd, 0x3c, 0xd9, 0xf8, 0xff, 00, 0xc2, 0xfa, 0x81, - 0xc5, 0xaf, 0x89, 0x34, 0x8b, 0x92, 0x7b, 0x43, 0x7d, 0x13, - 0xff, 00, 0x26, 0xad, 0x58, 0x75, 0x5b, 0x2b, 0x83, 0x88, - 0xaf, 0x2d, 0xe4, 0x3e, 0x89, 0x2a, 0x9f, 0xeb, 0x5f, 0xcb, - 0x86, 0x7, 0xa5, 0x5a, 0xb4, 0xd5, 0x2f, 0x34, 0xf6, 0x6, - 0xd6, 0xee, 0x7b, 0x62, 0x3a, 0x18, 0x65, 0x64, 0xfe, 0x46, - 0x8b, 0xf, 0x98, 0xfe, 0xa3, 0x83, 0x3, 0xd0, 0x83, 0x4b, - 0x5f, 0xcc, 0x86, 0x9f, 0xf1, 0x5b, 0xc6, 0xda, 0x49, 0x6, - 0xc7, 0xc6, 0x3a, 0xfd, 0x91, 0x1d, 0xd, 0xbe, 0xa9, 0x3c, - 0x7f, 0xc9, 0xeb, 0xa8, 0xd2, 0xff, 00, 0x6a, 0x6f, 0x8c, - 0x5a, 0x2c, 0x8a, 0xf6, 0x9f, 0x14, 0x3c, 0x5a, 0x85, 0x7a, - 0x6f, 0xd6, 0x27, 0x90, 0x7e, 0x4c, 0xc4, 0x51, 0x60, 0xe6, - 0x3f, 0xa4, 0x7a, 0x2b, 0xf9, 0xe6, 0xb3, 0xfd, 0xbf, 0x3f, - 0x68, 0x4b, 0x12, 0xbe, 0x5f, 0xc5, 0x5d, 0x71, 0xb6, 0xf4, - 0x12, 0x98, 0xe4, 0x1f, 0xf8, 0xf2, 0x1a, 0xe8, 0xec, 0x7f, - 0xe0, 0xa6, 0x9f, 0xb4, 0x7d, 0x96, 0xd1, 0xff, 00, 0xb, - 0xd, 0xee, 0x15, 0x7b, 0x4f, 0xa6, 0x5a, 0x36, 0x7e, 0xa7, - 0xca, 0xcd, 0x16, 0xe, 0x64, 0x7e, 0xfb, 0x51, 0x5f, 0x86, - 0x76, 0x3f, 0xf0, 0x56, 0xcf, 0xda, 0x12, 0xce, 0x35, 0x57, - 0xd5, 0x34, 0x2b, 0xbc, 0x7f, 0x14, 0xfa, 0x42, 0x64, 0xff, - 00, 0xdf, 0x24, 0x56, 0xdd, 0x97, 0xfc, 0x16, 0x33, 0xe3, - 0xad, 0xb6, 0x4, 0xda, 0x7f, 0x84, 0x2e, 0xfd, 0xe4, 0xd3, - 0x66, 0x53, 0xff, 00, 0x8e, 0xce, 0x28, 0xb0, 0x5d, 0x1f, - 0xb6, 0x34, 0x57, 0xe3, 0xb6, 0x9d, 0xff, 00, 0x5, 0xa8, - 0xf8, 0x9b, 0x2, 0xa8, 0xbd, 0xf0, 0x3f, 0x85, 0xee, 0xdb, - 0xb9, 0x8d, 0xae, 0x22, 0xcf, 0xfe, 0x3e, 0x6b, 0xa5, 0xd3, - 0xff, 00, 0xe0, 0xb7, 0x1a, 0xfc, 0x78, 0xfb, 0x77, 0xc2, - 0xbd, 0x36, 0x7f, 0xfa, 0xf7, 0xd5, 0xe4, 0x8f, 0xf9, 0xc4, - 0xd4, 0x58, 0x77, 0x47, 0xeb, 0x25, 0x15, 0xf9, 0x8b, 0xa5, - 0x7f, 0xc1, 0x6e, 0x34, 0x77, 0x51, 0xfd, 0xa5, 0xf0, 0xae, - 0xfa, 0x16, 0xef, 0xf6, 0x5d, 0x5d, 0x24, 0x1f, 0xf8, 0xf4, - 0x6b, 0x5d, 0xd, 0xaf, 0xfc, 0x16, 0xbf, 0xe1, 0xe3, 0x91, - 0xf6, 0x9f, 0x87, 0xbe, 0x27, 0x88, 0x7a, 0xc5, 0x35, 0xb3, - 0xff, 00, 0x37, 0x5a, 0x2, 0xe8, 0xfd, 0x19, 0xa2, 0xbe, - 0x1, 0xd3, 0x7f, 0xe0, 0xb3, 0xbf, 0x7, 0xae, 0xdc, 0xb, - 0xaf, 0xc, 0x78, 0xc2, 0xc4, 0x7f, 0x79, 0xed, 0xad, 0x9c, - 0x7f, 0xe3, 0xb3, 0x1a, 0xeb, 0x74, 0xef, 0xf8, 0x2b, 0x87, - 0xec, 0xfb, 0x79, 0x8f, 0x3b, 0x50, 0xd7, 0xac, 0x49, 0xff, - 00, 0x9e, 0xfa, 0x4b, 0x9c, 0x7f, 0xdf, 0x24, 0xd2, 0xb, - 0xa3, 0xed, 0x1a, 0x2b, 0xe5, 0x5d, 0x33, 0xfe, 0xa, 0x7d, - 0xfb, 0x39, 0xea, 0x78, 0x1f, 0xf0, 0x9d, 0x3d, 0xa1, 0x3d, - 0xae, 0xb4, 0xcb, 0x94, 0xfd, 0x7c, 0xbc, 0x57, 0x57, 0xa6, - 0xfe, 0xdf, 0x1f, 0xb3, 0xee, 0xa8, 0x7, 0x95, 0xf1, 0x4f, - 0x42, 0x8c, 0x9e, 0xd7, 0x12, 0x3c, 0x47, 0xff, 00, 0x1e, - 0x51, 0x40, 0xcf, 0x7f, 0xa2, 0xbc, 0x9b, 0x4e, 0xfd, 0xad, - 0x7e, 0xb, 0x6a, 0xc4, 0xb, 0x5f, 0x8a, 0x7e, 0x13, 0x90, - 0x9e, 0xcd, 0xab, 0xc2, 0xa7, 0xf5, 0x61, 0x5d, 0x4d, 0x87, - 0xc6, 0x4f, 00, 0xea, 0xb8, 0xfb, 0x17, 0x8d, 0xbc, 0x3b, - 0x77, 0x9e, 0x9e, 0x4e, 0xab, 0x3, 0x67, 0xf2, 0x7a, 00, - 0xec, 0x28, 0xac, 0x9b, 0x7f, 0x17, 0x68, 0x57, 0x78, 0xf2, - 0x35, 0xad, 0x3a, 0x6c, 0xff, 00, 0xcf, 0x3b, 0xa8, 0xdb, - 0xf9, 0x1a, 0xd0, 0x8a, 0xf2, 0x9, 0xff, 00, 0xd5, 0xcf, - 0x1c, 0x9f, 0xee, 0xb8, 0x34, 0x1, 0x35, 0x14, 0x51, 0x40, - 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, - 0x51, 0x40, 0x5, 0x23, 0x28, 0x60, 0x41, 00, 0x83, 0xd4, - 0x1a, 0x5a, 0x28, 0x3, 0x97, 0xd5, 0xbe, 0x19, 0x78, 0x5b, - 0x5b, 0x2c, 0xd7, 0x5a, 0x25, 0xae, 0xf6, 0xeb, 0x24, 0x4b, - 0xe5, 0x31, 0xfc, 0x57, 0x15, 0xc5, 0xea, 0xff, 00, 0xb3, - 0x7e, 0x83, 0x76, 0x4b, 0x58, 0x5e, 0xdd, 0xd8, 0x1e, 0xca, - 0xc4, 0x4a, 0xbf, 0xae, 0xf, 0xeb, 0x5e, 0xb9, 0x45, 0x79, - 0xd5, 0xb2, 0xec, 0x1e, 0x23, 0xf8, 0x94, 0x93, 0xf9, 0x59, - 0xfd, 0xe8, 0xc2, 0x74, 0x29, 0x4f, 0xe2, 0x8a, 0x3e, 0x7b, - 0xbd, 0xfd, 0x99, 0xb5, 0x38, 0xf2, 0x6d, 0x35, 0x9b, 0x59, - 0x87, 0x61, 0x34, 0x4d, 0x1f, 0xf2, 0xdd, 0x58, 0x17, 0xbf, - 0xb3, 0xff, 00, 0x8b, 0xad, 0x9, 0xf2, 0xe0, 0xb5, 0xbb, - 0x3, 0xbc, 0x33, 0x8f, 0xfd, 0x9b, 0x15, 0xf5, 0x1d, 0x15, - 0xe4, 0x54, 0xe1, 0xcc, 0x4, 0xfe, 0x14, 0xd7, 0xa3, 0xff, - 00, 0x3b, 0x9c, 0xb2, 0xc0, 0x51, 0x7b, 0x68, 0x7c, 0x87, - 0x3f, 0xc2, 0x3f, 0x18, 0x5b, 0xe7, 0x76, 0x83, 0x72, 0xc3, - 0xd5, 0xa, 0xb7, 0xf2, 0x35, 0x49, 0xfe, 0x1d, 0x78, 0xa2, - 0x33, 0xcf, 0x87, 0xf5, 0x1f, 0xc2, 0xd9, 0xcf, 0xf4, 0xaf, - 0xb2, 0x68, 0xae, 0x27, 0xc2, 0xd8, 0x6e, 0x95, 0x25, 0xf8, - 0x7f, 0x91, 0x93, 0xcb, 0xa1, 0xd2, 0x4c, 0xf8, 0xd0, 0x7c, - 0x3d, 0xf1, 0x3b, 0x1e, 0x3c, 0x3f, 0xa9, 0x7f, 0xe0, 0x2b, - 0xff, 00, 0x85, 0x5c, 0xb7, 0xf8, 0x53, 0xe2, 0xeb, 0xaf, - 0xb9, 0xa0, 0x5d, 0x8f, 0xfa, 0xe8, 0x2, 0x7f, 0xe8, 0x44, - 0x57, 0xd7, 0xf4, 0x50, 0xb8, 0x5b, 0xf, 0xd6, 0xa4, 0xbf, - 0xf, 0xf2, 0x5, 0x97, 0x43, 0xac, 0x99, 0xf2, 0xe6, 0x9f, - 0xf0, 0x3, 0xc5, 0xb7, 0xa4, 0x79, 0xb0, 0x5b, 0x59, 0x2f, - 0xac, 0xf3, 0x83, 0xfa, 0x2e, 0x6b, 0xa9, 0xd2, 0xbf, 0x66, - 0x59, 0x4b, 0x2b, 0x6a, 0x5a, 0xda, 0x2a, 0xf7, 0x4b, 0x58, - 0x72, 0x7f, 0xef, 0xa6, 0x3f, 0xd2, 0xbd, 0xea, 0x8a, 0xef, - 0xa5, 0xc3, 0xb8, 0xa, 0x7a, 0xca, 0x2e, 0x5e, 0xaf, 0xfc, - 0xac, 0x6d, 0x1c, 0xd, 0x18, 0xee, 0xae, 0x71, 0x5e, 0x1e, - 0xf8, 0x3d, 0xe1, 0x6f, 0xe, 0xec, 0x78, 0xf4, 0xd5, 0xbc, - 0xb8, 0x5e, 0x7c, 0xeb, 0xc3, 0xe6, 0x1c, 0xfa, 0xe0, 0xf0, - 0x3f, 0x1, 0x5d, 0xa0, 0x1, 0x40, 00, 0x60, 0xe, 0x80, - 0x52, 0xd1, 0x5e, 0xfd, 0x1a, 0x14, 0xb0, 0xf1, 0xe5, 0xa5, - 0x15, 0x15, 0xe4, 0x8e, 0xd8, 0xc2, 0x30, 0x56, 0x8a, 0xb0, - 0x51, 0x45, 0x15, 0xb9, 0x61, 0x45, 0x14, 0x50, 0x1, 0x45, - 0x14, 0x50, 0x7, 0x1, 0xf1, 0xa6, 0xef, 0xec, 0xde, 0x11, - 0x7f, 0x73, 0x5f, 0xa, 0x6b, 0x72, 0x79, 0x97, 0x97, 0xc, - 0x7b, 0xb1, 0xaf, 0xb5, 0x7f, 0x68, 0x1b, 0x9f, 0x27, 0xc3, - 0x8, 0x9e, 0xb9, 0x35, 0xf1, 0x1e, 0xa8, 0xfb, 0xa4, 0x94, - 0xfa, 0xb1, 0xaf, 0xce, 0xf3, 0xd9, 0x73, 0x63, 0x23, 0x1e, - 0xc8, 0xfc, 0xfb, 0x89, 0x67, 0xef, 0x24, 0x78, 0x67, 0xc7, - 0x2b, 0x8d, 0x9a, 0x5c, 0xe3, 0xfd, 0x93, 0xfc, 0xab, 0xf5, - 0x97, 0xf6, 0x7f, 0xd2, 0x46, 0x85, 0xf0, 0x37, 0xc0, 0x16, - 0xb, 0x9c, 0x41, 0xa1, 0x59, 0xaf, 0x3e, 0xbe, 0x4a, 0xe6, - 0xbf, 0x22, 0xfe, 0x38, 0x39, 0x9a, 0x23, 0xa, 0xe5, 0x9a, - 0x46, 0x8, 00, 0xea, 0x49, 0xe2, 0xbf, 0x68, 0x3c, 0x33, - 0x62, 0x9a, 0x5f, 0x86, 0xf4, 0xab, 0x38, 0xc6, 0xd4, 0xb7, - 0xb4, 0x8a, 0x25, 0x7, 0xb0, 0x54, 0x3, 0xfa, 0x57, 0xd5, - 0xe5, 0x6a, 0xd4, 0x51, 0x5c, 0x1d, 0x1b, 0x61, 0x27, 0x2e, - 0xf2, 0x66, 0x9d, 0x14, 0x51, 0x5e, 0xc9, 0xf7, 0xe7, 0xe7, - 0xef, 0xc5, 0xdf, 0x13, 0x3f, 0x8b, 0x3e, 0x26, 0xf8, 0x82, - 0xf9, 0xf8, 0xb, 0x72, 0x6d, 0x90, 0x7a, 0x2c, 0x7f, 0x20, - 0xff, 00, 0xd0, 0x49, 0xfc, 0x6b, 0xdc, 0xbf, 0x64, 0xbf, - 0x8, 0xf9, 0x76, 0xd7, 0xda, 0xe4, 0xa9, 0xc9, 0x3e, 0x54, - 0x44, 0xfe, 0xb5, 0xf3, 0x7d, 0xfc, 0x6f, 0xa9, 0xf8, 0xdf, - 0x58, 0x86, 0x31, 0xba, 0x49, 0x35, 0x3b, 0x85, 00, 0x7a, - 0xf9, 0xad, 0x5f, 0x7c, 0x7c, 0x35, 0xf0, 0xd2, 0x78, 0x53, - 0xc1, 0x9a, 0x6d, 0x82, 0xa0, 0x46, 0x58, 0x83, 0x3f, 0xfb, - 0xc4, 0x57, 0xc1, 0x65, 0x94, 0x25, 0x5f, 0x30, 0x95, 0x59, - 0xfd, 0x9b, 0xbf, 0x9b, 0x3f, 0x39, 0xe1, 0xfa, 0x6f, 0x17, - 0x89, 0x9e, 0x2a, 0x7d, 0x2e, 0xfe, 0x6c, 0xea, 0x28, 0xa2, - 0x8a, 0xfb, 0xd3, 0xf4, 0x60, 0xa2, 0x8a, 0x28, 00, 0xa2, - 0x9a, 0xe8, 0x1c, 0x60, 0xe7, 0xd7, 0x83, 0x8a, 0x5c, 0x7b, - 0x9a, 00, 0xaf, 0x73, 0xa6, 0xda, 0x5e, 0x29, 0x17, 0x16, - 0xb0, 0xce, 0xf, 0x69, 0x23, 0xd, 0xfc, 0xc5, 0x4f, 0x1c, - 0x49, 0xc, 0x6b, 0x1c, 0x68, 0xb1, 0xc6, 0x80, 0x2a, 0xaa, - 0x8c, 00, 0x7, 0x40, 0x5, 0x3a, 0x8a, 00, 0x28, 0xa2, - 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, - 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, - 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x46, 0x50, 0xc3, 0x4, - 0x2, 0x3d, 0xd, 0x67, 0x5e, 0x78, 0x6b, 0x48, 0xd4, 0x3f, - 0xe3, 0xeb, 0x4a, 0xb2, 0xb9, 0xff, 00, 0xae, 0xd6, 0xe8, - 0xff, 00, 0xcc, 0x56, 0x95, 0x14, 0x1, 0xc5, 0x6a, 0x9f, - 0x4, 0xfe, 0x1e, 0xeb, 0x60, 0x8d, 0x43, 0xc0, 0xde, 0x1c, - 0xbd, 0xdd, 0xd7, 0xcf, 0xd2, 0xa0, 0x7c, 0xfe, 0x6b, 0x5c, - 0xa6, 0xa7, 0xfb, 0x1f, 0x7c, 0x10, 0xd6, 0x14, 0x8b, 0xbf, - 0x85, 0x5e, 0x13, 0x70, 0x7a, 0xec, 0xd2, 0xa2, 0x4f, 0xfd, - 0x4, 0xa, 0xf6, 0xa, 0x28, 0x3, 0xe7, 0x4d, 0x57, 0xfe, - 0x9, 0xe5, 0xfb, 0x3c, 0x6a, 0xe0, 0x89, 0x7e, 0x18, 0x69, - 0x50, 0xe7, 0xfe, 0x7d, 0x64, 0x9a, 0xf, 0xfd, 0x1, 0xc5, - 0x72, 0xb7, 0x9f, 0xf0, 0x4a, 0xff, 00, 0xd9, 0xbe, 0xe8, - 0xb1, 0x5f, 0x5, 0xdd, 0xdb, 0x13, 0xff, 00, 0x3c, 0x75, - 0xab, 0xce, 0x3f, 0x3, 0x29, 0x15, 0xf5, 0xad, 0x14, 0x1, - 0xf1, 0x76, 0xa3, 0xff, 00, 0x4, 0x8e, 0xfd, 0x9f, 0x6f, - 0x50, 0xac, 0x1a, 0x7e, 0xbf, 0xa7, 0x9f, 0xef, 0x41, 0xab, - 0xbb, 0x1f, 0xfc, 0x7c, 0x35, 0x72, 0xba, 0x97, 0xfc, 0x11, - 0x97, 0xe0, 0xe5, 0xca, 0x9f, 0xb1, 0x78, 0x93, 0xc5, 0xd6, - 0x4d, 0xfe, 0xd5, 0xd5, 0xbc, 0x80, 0x7e, 0x70, 0x8a, 0xfb, - 0xee, 0x8a, 0x5, 0x64, 0x7e, 0x6d, 0xea, 0x1f, 0xf0, 0x44, - 0xdf, 0x5, 0xbc, 0x6d, 0xf6, 0x1f, 0x89, 0x1a, 0xf4, 0x2f, - 0xfc, 0x3f, 0x68, 0xb3, 0x82, 0x40, 0x3f, 0x2d, 0xb5, 0xc8, - 0xea, 0x1f, 0xf0, 0x44, 0x5b, 0x80, 0x18, 0xd8, 0xfc, 0x58, - 0x8c, 0x9f, 0xe1, 0x5b, 0x8d, 0x10, 0x8f, 0xcc, 0x89, 0xbf, - 0xa5, 0x7e, 0xa9, 0x51, 0x4c, 0x2c, 0x8f, 0xc8, 0x5b, 0xff, - 00, 0xf8, 0x22, 0x7f, 0x8e, 0xe2, 0xc, 0x6c, 0xfe, 0x22, - 0xf8, 0x7e, 0xe3, 0xfb, 0xa2, 0x6b, 0x49, 0xe3, 0xcf, 0xe5, - 0xba, 0xb9, 0x1d, 0x43, 0xfe, 0x8, 0xd9, 0xf1, 0xba, 0xd9, - 0x9b, 0xec, 0xba, 0xcf, 0x83, 0xef, 0x10, 0x74, 0xcd, 0xfc, - 0xf1, 0xb1, 0xfc, 0xc, 0x18, 0xfd, 0x6b, 0xf6, 0xa2, 0x8a, - 0x2e, 0x16, 0x47, 0xe1, 0xd5, 0xd7, 0xfc, 0x12, 0x2b, 0xf6, - 0x81, 0xb7, 0x56, 0x29, 0x69, 0xe1, 0xcb, 0x9c, 0x76, 0x8b, - 0x56, 0x19, 0x3f, 0xf7, 0xd2, 0xa, 0xe6, 0x35, 0x1f, 0xf8, - 0x25, 0xef, 0xed, 0x1b, 0x60, 0x5b, 0x6f, 0x81, 0xa2, 0xbc, - 0xb, 0xde, 0xdb, 0x55, 0xb5, 0x39, 0xfa, 0x66, 0x40, 0x6b, - 0xf7, 0xb2, 0x8a, 0x2e, 0x2e, 0x54, 0x7f, 0x3d, 0x77, 0xdf, - 0xf0, 0x4f, 0xdf, 0xda, 0x1b, 0x4f, 0x24, 0x49, 0xf0, 0xb3, - 0x59, 0x7c, 0x77, 0x80, 0xc5, 0x2f, 0xfe, 0x82, 0xe6, 0xb9, - 0x2d, 0x53, 0xf6, 0x4e, 0xf8, 0xd1, 0xa3, 0xbb, 0x25, 0xd7, - 0xc2, 0xdf, 0x16, 0x23, 0x2f, 0x5f, 0x2f, 0x48, 0x9a, 0x4f, - 0xfd, 0x5, 0x4d, 0x7f, 0x48, 0x34, 0x51, 0x70, 0xe5, 0x3f, - 0x99, 0x4d, 0x47, 0xe1, 0xf, 0x8e, 0xf4, 0x76, 0x2b, 0x7d, - 0xe0, 0xaf, 0x11, 0x59, 0xb0, 0xea, 0x27, 0xd2, 0xa7, 0x4c, - 0x7e, 0x69, 0x5c, 0xf5, 0xe6, 0x8d, 0xa8, 0x69, 0xcc, 0x56, - 0xee, 0xc6, 0xe6, 0xd4, 0x8e, 0xa2, 0x68, 0x59, 0x3f, 0x98, - 0xaf, 0xea, 0x2c, 0x80, 0x7a, 0x8a, 0xad, 0x71, 0xa5, 0x59, - 0x5d, 0xff, 00, 0xaf, 0xb3, 0xb7, 0x9b, 0xfe, 0xba, 0x44, - 0xad, 0xfc, 0xc5, 0x17, 0xe, 0x53, 0xf9, 0x70, 0xc8, 0xf5, - 0xa5, 0xaf, 0xe9, 0xe6, 0xeb, 0xe1, 0xf7, 0x85, 0xaf, 0xb3, - 0xf6, 0x9f, 0xd, 0x69, 0x17, 0x19, 0xeb, 0xe6, 0xd8, 0x44, - 0xd9, 0xfc, 0xd6, 0xb9, 0xcd, 0x4f, 0xf6, 0x78, 0xf8, 0x5b, - 0xac, 0xe7, 0xed, 0xdf, 0xe, 0xbc, 0x2d, 0x73, 0x9e, 0xbe, - 0x66, 0x91, 0x1, 0xcf, 0xfe, 0x39, 0x45, 0xc5, 0xca, 0x7f, - 0x35, 0x34, 0x57, 0xf4, 0x53, 0xa8, 0xfe, 0xc4, 0x7f, 0x1, - 0x75, 0x56, 0x2d, 0x3f, 0xc2, 0x7f, 0xb, 0x86, 0x3d, 0x4c, - 0x36, 0xb, 0x17, 0xfe, 0x83, 0x8a, 0xe5, 0xb5, 0x3f, 0xf8, - 0x26, 0xf7, 0xec, 0xeb, 0xaa, 0x67, 0x77, 0xc3, 0x8b, 0x4b, - 0x62, 0x7f, 0xe7, 0xd6, 0xee, 0xe2, 0x2f, 0xe5, 0x25, 0x17, - 0xe, 0x53, 0xf9, 0xff, 00, 0xa2, 0xbf, 0x75, 0x35, 0x5f, - 0xf8, 0x24, 0xf7, 0xec, 0xf1, 0xa8, 0xee, 0x31, 0x78, 0x7f, - 0x56, 0xd3, 0xc9, 0xef, 0x6b, 0xab, 0xcd, 0xc7, 0xe0, 0xe5, - 0xab, 0x91, 0xd4, 0x3f, 0xe0, 0x8d, 0x9f, 0x5, 0x2e, 0x77, - 0x7d, 0x9b, 0x5a, 0xf1, 0x75, 0x91, 0x3d, 0x36, 0xdf, 0x42, - 0xe0, 0x7f, 0xdf, 0x50, 0xd3, 0xb8, 0x72, 0x9f, 0x8b, 0x34, - 0x57, 0xec, 0x35, 0xd7, 0xfc, 0x11, 0x53, 0xe1, 0x9b, 0x83, - 0xf6, 0x7f, 0x1e, 0x78, 0xae, 0x13, 0xdb, 0xcc, 0x5b, 0x67, - 0x3, 0xf2, 0x8c, 0x57, 0x3f, 0xa8, 0x7f, 0xc1, 0x12, 0x7c, - 0x3a, 0xc0, 0xfd, 0x87, 0xe2, 0x8e, 0xa9, 0x19, 0xec, 0x2e, - 0x34, 0xb8, 0xdf, 0xf5, 0xe, 0x28, 0xb8, 0xac, 0xcf, 0xc9, - 0x9a, 0x2b, 0xf4, 0xeb, 0x51, 0xff, 00, 0x82, 0x23, 0x6a, - 0xe1, 0x98, 0xd8, 0x7c, 0x56, 0xb2, 0x65, 0xec, 0xb7, 0x1a, - 0x33, 0x83, 0xf9, 0x89, 0x4f, 0xf2, 0xae, 0x5b, 0x52, 0xff, - 00, 0x82, 0x2b, 0x7c, 0x4a, 0x81, 0x8f, 0xd8, 0x7c, 0x75, - 0xe1, 0x8b, 0xb5, 0x1d, 0x3c, 0xe4, 0xb8, 0x88, 0x9f, 0xc9, - 0x1a, 0x8b, 0x85, 0x99, 0xf9, 0xdd, 0x49, 0x5f, 0x73, 0xea, - 0x7f, 0xf0, 0x47, 0x7f, 0x8e, 0x76, 0x84, 0xfd, 0x92, 0xf7, - 0xc2, 0xb7, 0xeb, 0xfe, 0xce, 0xa3, 0x22, 0x1f, 0xfc, 0x7a, - 0x2a, 0xe3, 0xb5, 0x4f, 0xf8, 0x25, 0x87, 0xed, 0x1b, 0xa7, - 0x48, 0x56, 0x2f, 0x7, 0xd9, 0xea, 00, 0x7f, 0x1d, 0xae, - 0xaf, 0x6d, 0x83, 0xff, 00, 0x7d, 0xba, 0x9a, 0x2e, 0x16, - 0x67, 0xc9, 0x40, 0xed, 0x39, 0x1c, 0x1f, 0x51, 0x5a, 0xda, - 0x77, 0x8b, 0xb5, 0xdd, 0x1d, 0x81, 0xb0, 0xd6, 0xb5, 0x1b, - 0x12, 0x3a, 0x1b, 0x6b, 0xb9, 0x23, 0xc7, 0xe4, 0x45, 0x7b, - 0xe5, 0xdf, 0xfc, 0x13, 0x8f, 0xf6, 0x8e, 0xb3, 0x7d, 0xad, - 0xf0, 0xc2, 0xfe, 0x4f, 0x78, 0x6f, 0x2d, 0x5c, 0x7e, 0x92, - 0xd6, 0xe, 0xa3, 0xfb, 0xc, 0x7c, 0x7e, 0xd2, 0x89, 0x13, - 0xfc, 0x28, 0xf1, 0x23, 0x63, 0xbc, 0x16, 0xbe, 0x70, 0xfc, - 0xd0, 0x9a, 0x3, 0x53, 0x85, 0xb0, 0xf8, 0xf3, 0xf1, 0x2f, - 0x4b, 0x60, 0xd6, 0x9f, 0x10, 0x7c, 0x53, 0x6e, 0x47, 0x4d, - 0x9a, 0xcd, 0xc0, 0xc7, 0xfe, 0x3f, 0x5d, 0x4e, 0x9f, 0xfb, - 0x63, 0xfc, 0x71, 0xd2, 0xd9, 0x4d, 0xbf, 0xc5, 0x5f, 0x15, - 0x64, 0x74, 0xf3, 0x75, 0x29, 0x25, 0x1f, 0x93, 0x13, 0x58, - 0xfa, 0xaf, 0xec, 0xcb, 0xf1, 0x73, 0x44, 0x24, 0x5e, 0xfc, - 0x32, 0xf1, 0x64, 0x4, 0x7a, 0xe8, 0xd7, 0x7, 0xf9, 0x25, - 0x73, 0x1a, 0x9f, 0xc3, 0x3f, 0x18, 0x68, 0x80, 0x9d, 0x47, - 0xc2, 0x7a, 0xe5, 0x80, 0x1d, 0x4d, 0xd6, 0x9b, 0x34, 0x7f, - 0xfa, 0x12, 0x8a, 0x3, 0x53, 0xda, 0x6c, 0x7f, 0xe0, 0xa2, - 0x5f, 0xb4, 0x55, 0x86, 0xd0, 0xbf, 0x13, 0xf5, 0x39, 0x40, - 0xed, 0x3c, 0x16, 0xf2, 0x7f, 0x38, 0xeb, 0xa8, 0xd3, 0xbf, - 0xe0, 0xa9, 0xdf, 0xb4, 0x66, 0x9e, 0x81, 0x4f, 0x8c, 0x6d, - 0x2e, 0xc0, 0xff, 00, 0x9f, 0x8d, 0x22, 0xd5, 0x89, 0xfc, - 0x42, 0x3, 0x5f, 0x28, 0x4f, 0x65, 0x71, 0x6a, 0x71, 0x34, - 0x12, 0xc2, 0x7f, 0xe9, 0xa2, 0x15, 0xfe, 0x75, 0x6, 0x47, - 0xad, 0x1, 0x76, 0x7d, 0xb1, 0x67, 0xff, 00, 0x5, 0x79, - 0xf8, 0xff, 00, 0x6a, 0xa0, 0x49, 0x37, 0x86, 0xae, 0xcf, - 0xf7, 0xa6, 0xd2, 0x70, 0x4f, 0xfd, 0xf2, 0xeb, 0x5b, 0x96, - 0x3f, 0xf0, 0x59, 0x6f, 0x8d, 0x76, 0xe0, 0xb, 0x8d, 0x7, - 0xc1, 0xb7, 0x63, 0xb9, 0x36, 0x37, 0x8, 0x4f, 0xe5, 0x3d, - 0x7c, 0x19, 0x45, 0x16, 0xb, 0xb3, 0xf4, 0x7f, 0x4a, 0xff, - 00, 0x82, 0xd8, 0x78, 0xe6, 0x8, 0xf1, 0xa8, 0xfc, 0x39, - 0xd0, 0x2f, 0x1f, 0xfb, 0xd6, 0xf7, 0x93, 0x40, 0x3f, 0x22, - 0x1e, 0xba, 0x8d, 0x27, 0xfe, 0xb, 0x73, 0x37, 0xfc, 0xc4, - 0xfe, 0x14, 0x47, 0xff, 00, 0x6e, 0x9a, 0xc9, 0xff, 00, - 0xd9, 0xa1, 0xaf, 0xcb, 0x8a, 0x28, 0xb0, 0x5d, 0x9f, 0xad, - 0xfa, 0x5f, 0xfc, 0x16, 0xcf, 0xc2, 0x12, 0x11, 0xfd, 0xa3, - 0xf0, 0xd3, 0x5b, 0xb7, 0x1d, 0xcd, 0xad, 0xf4, 0x32, 0xff, - 00, 0xe8, 0x41, 0x6b, 0xa8, 0xd3, 0x3f, 0xe0, 0xb3, 0xdf, - 0x8, 0xae, 0xdc, 0xb, 0xbf, 0xa, 0xf8, 0xb6, 0xc4, 0x7f, - 0x78, 0xc1, 0x6f, 0x27, 0xf2, 0x96, 0xbf, 0x1a, 0x28, 0xa2, - 0xc1, 0xcc, 0xcf, 0xdc, 0x3b, 0x1f, 0xf8, 0x2b, 0xb7, 0xec, - 0xff, 00, 0x76, 0x47, 0x9d, 0x75, 0xe2, 0x3b, 0x2f, 0x79, - 0xb4, 0x92, 0x7f, 0xf4, 0x6, 0x6a, 0xdc, 0xb3, 0xff, 00, - 0x82, 0xaa, 0x7e, 0xce, 0x57, 0x6c, 0x14, 0xf8, 0xbe, 0xfa, - 0xdf, 0x3d, 0xe6, 0xd1, 0xae, 0x80, 0x1f, 0x94, 0x66, 0xbf, - 0x8, 0x28, 0xa2, 0xc3, 0xe6, 0x3f, 0xa0, 0xd, 0x3f, 0xfe, - 0xa, 0x47, 0xfb, 0x39, 0x6a, 0x2c, 0x15, 0x3e, 0x25, 0x5a, - 0x42, 0x4f, 0xfc, 0xfc, 0x59, 0x5d, 0x44, 0x3f, 0x36, 0x88, - 0xa, 0xea, 0x6c, 0x3f, 0x6d, 0xef, 0x80, 0x9a, 0x88, 0x5f, - 0x27, 0xe2, 0xcf, 0x85, 0x81, 0x6e, 0x82, 0x5d, 0x41, 0x63, - 0x3f, 0x93, 0x62, 0xbf, 0x9d, 0x6a, 0x29, 0x58, 0x39, 0x8f, - 0xe9, 0x53, 0x4e, 0xfd, 0xa2, 0xfe, 0x16, 0x6a, 0xca, 0xd, - 0x9f, 0xc4, 0x6f, 0xb, 0x4e, 0xf, 0x4d, 0xba, 0xc4, 0x1c, - 0xff, 00, 0xe3, 0xf5, 0xd3, 0xd8, 0x78, 0xf3, 0xc3, 0x5a, - 0xa8, 0x6, 0xcb, 0xc4, 0x3a, 0x55, 0xd8, 0x3d, 0xc, 0x17, - 0xb1, 0xbe, 0x7f, 0x26, 0xaf, 0xe6, 0x12, 0x95, 0x58, 0xa9, - 0xc8, 0x24, 0x1f, 0x6a, 0x2c, 0x1c, 0xc7, 0xf5, 0x23, 0xd, - 0xed, 0xbd, 0xc8, 0x6, 0x29, 0xe2, 0x94, 0x1f, 0xee, 0x38, - 0x3f, 0xca, 0xa6, 0xaf, 0xe5, 0xf2, 0xc7, 0xc5, 0x9a, 0xde, - 0x96, 00, 0xb3, 0xd6, 0x75, 0xb, 0x40, 0x3a, 0x79, 0x17, - 0x4e, 0x98, 0xfc, 0x8d, 0x6e, 0x5a, 0xfc, 0x66, 0xf8, 0x83, - 0x63, 0x8f, 0xb3, 0x78, 0xef, 0xc4, 0xd6, 0xf8, 0xe9, 0xe5, - 0x6b, 0x17, 0xb, 0xfc, 0x9e, 0x8b, 0xf, 0x98, 0xfe, 0x99, - 0xe8, 0xaf, 0xe6, 0xd6, 0xc7, 0xf6, 0xa0, 0xf8, 0xc1, 0xa6, - 0xe3, 0xec, 0xff, 00, 0x14, 0x3c, 0x5c, 0x98, 0xe9, 0x9d, - 0x6a, 0xe1, 0xbf, 0x9b, 0x9a, 0xe9, 0xb4, 0xef, 0xdb, 0x9f, - 0xe3, 0xf6, 0x96, 00, 0x83, 0xe2, 0xbf, 0x88, 0xc8, 0x1d, - 0xa6, 0xb9, 0x12, 0xff, 00, 0xe8, 0x60, 0xd1, 0x60, 0xe6, - 0x3f, 0xa2, 0x4a, 0x2b, 0xf0, 0x7, 0x4d, 0xff, 00, 0x82, - 0x94, 0x7e, 0xd1, 0xba, 0x6e, 0x31, 0xf1, 0x1e, 0xe2, 0xe8, - 0xe, 0xd7, 0x36, 0x36, 0xaf, 0xfa, 0xf9, 0x79, 0xae, 0xb7, - 0x4c, 0xff, 00, 0x82, 0xb2, 0x7e, 0xd0, 0xba, 0x78, 0x51, - 0x2e, 0xb5, 0xa3, 0x5f, 0x81, 0xff, 00, 0x3f, 0x3a, 0x4c, - 0x79, 0x3f, 0xf7, 0xce, 0xda, 0x2c, 0x1c, 0xc8, 0xfd, 0xd1, - 0xa2, 0xbf, 0x16, 0x74, 0xdf, 0xf8, 0x2c, 0x9f, 0xc6, 0xbb, - 0x45, 0xb, 0x75, 0xa2, 0x78, 0x46, 0xfb, 0x1d, 0x59, 0xac, - 0xa7, 0x42, 0x7f, 0xef, 0x99, 0xb1, 0xfa, 0x57, 0xeb, 0x5f, - 0xc0, 0x9f, 0x1c, 0x6a, 0x7f, 0x13, 0x3e, 0xc, 0xf8, 0x2b, - 0xc5, 0xba, 0xcd, 0xb4, 0x16, 0x5a, 0xa6, 0xb7, 0xa4, 0xdb, - 0x6a, 0x17, 0x16, 0xf6, 0xc0, 0x88, 0xe3, 0x79, 0x23, 0xe, - 0x55, 0x72, 0x49, 0xc0, 0xcf, 0x73, 0x48, 0x77, 0xb9, 0xdd, - 0xd1, 0x45, 0x14, 0xc, 0x28, 0xa2, 0x8a, 00, 0xf1, 0x4f, - 0xda, 0x4e, 0xe7, 0xcb, 0xd1, 0xa1, 0x4c, 0xff, 00, 0x9, - 0x35, 0xf1, 0xa6, 0xa0, 0xdc, 0x39, 0xf5, 0x26, 0xbe, 0xb3, - 0xfd, 0xa7, 0x6e, 0xb6, 0xc0, 0x89, 0x9e, 0x89, 0x8a, 0xf9, - 0x23, 0x51, 0x6c, 0x46, 0xdf, 0x8d, 0x7e, 0x69, 0x9b, 0x3e, - 0x7c, 0xc2, 0x5e, 0x56, 0x3f, 0x31, 0xe2, 0x59, 0xfe, 0xf4, - 0xf0, 0xdf, 0x1d, 0xc4, 0xda, 0x9f, 0x8e, 0x3c, 0x39, 0x62, - 0x83, 0x73, 0xdc, 0xea, 0xd6, 0xb0, 0x85, 0xf5, 0x2d, 0x2a, - 0xc, 0x7e, 0xb5, 0xfb, 0x56, 00, 00, 0x1, 0xd0, 0x57, - 0xe3, 0x1d, 0x9d, 0xa3, 0xeb, 0x5f, 0xb4, 0x7, 0xc3, 0x8b, - 0x18, 0xcf, 0xcf, 0x2f, 0x89, 0x6c, 0x3f, 0x49, 0xd1, 0x8f, - 0xf2, 0xaf, 0xd9, 0xda, 0xfb, 0x8c, 0xbd, 0x5a, 0x8a, 0x3d, - 0xae, 0x13, 0x8f, 0x2e, 0x5a, 0x9f, 0x76, 0xc2, 0x8a, 0x28, - 0xaf, 0x4c, 0xfb, 0x43, 0xf3, 0xa6, 0xf6, 0x59, 0x3e, 0x1f, - 0x7c, 0x74, 0xd7, 0xac, 0xb5, 0x48, 0xb6, 0xc9, 0x6d, 0xa9, - 0xc9, 0x72, 0x23, 0x27, 0x21, 0x92, 0x43, 0xe6, 0x21, 0xfc, - 0x98, 0x57, 0xd7, 0x5a, 0x47, 0xed, 0x13, 0xe1, 0xdb, 0x8b, - 0x48, 0x7c, 0xd9, 0x15, 0x1f, 0x68, 0xc8, 0xd, 0xd3, 0x8a, - 0xf0, 0x9f, 0xdb, 0xc7, 0xe1, 0x85, 0xed, 0x86, 0xa5, 0xa7, - 0x7c, 0x48, 0xd2, 0xd5, 0x9e, 0x25, 0x44, 0xb1, 0xd4, 0x63, - 0x41, 0xf7, 0x70, 0x4f, 0x97, 0x21, 0xf6, 0xe7, 0x69, 0x3f, - 0xee, 0xd7, 0xce, 0xfe, 0x1f, 0xf1, 0x7c, 0x37, 0xf1, 0x28, - 0xf3, 0x36, 0xc9, 0xdd, 0x49, 0xaf, 0x8a, 0xaf, 0xf5, 0x9c, - 0xb6, 0xac, 0xe5, 0x87, 0xd5, 0x33, 0xf2, 0x6f, 0xaf, 0xd5, - 0xe1, 0xcc, 0x55, 0x5c, 0x2b, 0x8f, 0xb8, 0xdd, 0xd3, 0xf2, - 0x67, 0xe8, 0xc4, 0x3f, 0x1c, 0x7c, 0x33, 0x2f, 0xfc, 0xbd, - 0x1, 0xff, 00, 0x2, 0x15, 0xa1, 0x7, 0xc5, 0x9f, 0xe, - 0x4f, 0xd2, 0xf5, 0x47, 0xe3, 0x5f, 0x9f, 0xb0, 0xea, 0x21, - 0xc6, 0x44, 0xa4, 0x7e, 0x35, 0x65, 0x35, 0x29, 0xd7, 0xee, - 0xdc, 0xb8, 0xfa, 0x35, 0x72, 0x2c, 0xff, 00, 0x15, 0x1f, - 0x8a, 0x8, 0xf6, 0x21, 0xc4, 0xf2, 0x7f, 0x65, 0x1f, 0xa0, - 0xd0, 0xfc, 0x44, 0xd0, 0x26, 0xc6, 0x2f, 0xe3, 0xe7, 0xde, - 0xae, 0x47, 0xe2, 0xfd, 0x1e, 0x50, 0xa, 0xdf, 0xc2, 0x73, - 0xfe, 0xd5, 0x7e, 0x7a, 0x26, 0xb9, 0x7d, 0x18, 0xf9, 0x6f, - 0x25, 0x1f, 0xf0, 0x3a, 0xb5, 0x1f, 0x8b, 0x35, 0x68, 0xbe, - 0xed, 0xfc, 0xdf, 0xf7, 0xd5, 0x6c, 0xb8, 0x8a, 0xaa, 0xf8, - 0xa9, 0xaf, 0xbc, 0xea, 0x8f, 0x12, 0xc7, 0xac, 0xf, 0xd0, - 0xa4, 0xd7, 0xf4, 0xe9, 0x3e, 0xed, 0xe4, 0x27, 0xfe, 0x5, - 0x53, 0xae, 0xa3, 0x6a, 0xdd, 0x2e, 0x22, 0x3f, 0x47, 0x15, - 0xf9, 0xf3, 0x17, 0x8f, 0xf5, 0xd8, 0x47, 0xcb, 0x7f, 0x2f, - 0xe2, 0x6a, 0xf4, 0x3f, 0x15, 0x3c, 0x45, 0xf, 0x4b, 0xe7, - 0x3f, 0x8d, 0x6e, 0xb8, 0x8d, 0x7d, 0xaa, 0x7f, 0x89, 0xd1, - 0x1e, 0x23, 0xa0, 0xf7, 0x8b, 0x3e, 0xfd, 0x59, 0xe3, 0x6e, - 0x92, 0x29, 0xfa, 0x30, 0xa7, 0xee, 0x1e, 0xa2, 0xbe, 0xf, - 0xb7, 0xf8, 0xd9, 0xe2, 0x48, 0x31, 0xfe, 0x92, 0xcd, 0xf5, - 0x35, 0xa3, 0x6f, 0xfb, 0x40, 0xf8, 0x8a, 0x12, 0x33, 0x33, - 0x1c, 0x7a, 0x35, 0x6e, 0xb8, 0x8a, 0x8f, 0x58, 0x33, 0xa2, - 0x3c, 0x41, 0x85, 0x7b, 0xdc, 0xfb, 0x82, 0x8a, 0xf8, 0xd2, - 0xdb, 0xf6, 0x97, 0xd7, 0x62, 0x18, 0x62, 0xed, 0xff, 00, - 0x2, 0xad, 0x3b, 0x6f, 0xda, 0x93, 0x54, 0x4f, 0xbe, 0xae, - 0x7f, 0x1c, 0xd6, 0xeb, 0x3f, 0xc2, 0x3d, 0xee, 0xbe, 0x46, - 0xf1, 0xcf, 0x30, 0x72, 0xfb, 0x47, 0xd7, 0x14, 0x57, 0xcb, - 0x96, 0xff, 00, 0xb5, 0x64, 0xe0, 00, 0xf1, 0x37, 0xe4, - 0x2b, 0x52, 0xd7, 0xf6, 0xab, 0x84, 0xe3, 0xcd, 0x8b, 0xf3, - 0x15, 0xbc, 0x73, 0xbc, 0x13, 0xfb, 0x5f, 0x81, 0xd1, 0x1c, - 0xdb, 0x7, 0x2f, 0xb6, 0x7d, 0x1f, 0x45, 0x78, 0x34, 0x1f, - 0xb5, 0x2e, 0x9a, 0xff, 00, 0x7a, 0x35, 0x15, 0xab, 0x6b, - 0xfb, 0x4a, 0x68, 0x72, 0x91, 0xb8, 0x28, 0xff, 00, 0x81, - 0x62, 0xb7, 0x8e, 0x6d, 0x82, 0x97, 0xfc, 0xbc, 0x47, 0x44, - 0x73, 0xc, 0x34, 0xb6, 0x9a, 0x3d, 0x92, 0x8a, 0xf2, 0xdb, - 0x7f, 0xda, 0x7, 0xc3, 0xf3, 0x11, 0xf3, 0x81, 0xff, 00, - 0x3, 0x15, 0xa7, 0x7, 0xc6, 0xaf, 0xe, 0xcc, 0x33, 0xe7, - 0x81, 0xff, 00, 0x2, 0x15, 0xd1, 0x1c, 0x7e, 0x16, 0x5b, - 0x54, 0x46, 0xcb, 0x15, 0x46, 0x5b, 0x49, 0x1d, 0xfd, 0x15, - 0xc7, 0xc1, 0xf1, 0x53, 0xc3, 0xf3, 0x8e, 0x2e, 0xc0, 0xfa, - 0x91, 0x57, 0xe2, 0xf1, 0xee, 0x89, 0x30, 0x4, 0x5e, 0xa7, - 0xe7, 0x5b, 0xac, 0x45, 0x19, 0x6d, 0x35, 0xf7, 0x9a, 0xaa, - 0xb4, 0xde, 0xd2, 0x47, 0x43, 0x45, 0x64, 0xc7, 0xe2, 0xad, - 0x2a, 0x51, 0xf2, 0xde, 0xc5, 0xff, 00, 0x7d, 0x55, 0x95, - 0xd6, 0xac, 0x1f, 0xa5, 0xdc, 0x27, 0xfe, 0x6, 0x2b, 0x55, - 0x38, 0x3d, 0x99, 0x6a, 0x51, 0x7d, 0x4b, 0xb4, 0x54, 0x9, - 0x7d, 0x6f, 0x27, 0xdd, 0x9e, 0x33, 0xf4, 0x61, 0x52, 0x9, - 0xa3, 0x3d, 0x1d, 0x4f, 0xd0, 0xd5, 0x5d, 0xe, 0xe3, 0xe8, - 0xa4, 0x4, 0x1e, 0x87, 0x34, 0xb4, 0xc6, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0xc7, 0x89, - 0x24, 0xfb, 0xe8, 0xad, 0xfe, 0xf0, 0xcd, 0x3e, 0x8a, 00, - 0xcb, 0xbc, 0xf0, 0xbe, 0x8d, 0xa8, 0x9c, 0xdd, 0xe9, 0x16, - 0x37, 0x47, 0xd6, 0x6b, 0x64, 0x7f, 0xe6, 0x2b, 0x9a, 0xd5, - 0xfe, 0x5, 0xfc, 0x38, 0xd7, 0xc1, 0xfe, 0xd2, 0xf0, 0x17, - 0x86, 0xaf, 0xb3, 0xd7, 0xed, 0x1a, 0x4c, 0xf, 0xfc, 0xd2, - 0xbb, 0x9a, 0x28, 0x3, 0xc7, 0x6f, 0x7f, 0x63, 0x9f, 0x81, - 0x9a, 0x89, 0x26, 0x7f, 0x84, 0x9e, 0xe, 0x24, 0xf7, 0x4d, - 0x1a, 0x4, 0x3f, 0xf8, 0xea, 0x8a, 0xc5, 0xd4, 0x3f, 0x60, - 0xaf, 0xd9, 0xf7, 0x52, 0x42, 0x92, 0xfc, 0x29, 0xf0, 0xfc, - 0x60, 0xf7, 0xb7, 0x85, 0xa1, 0x3f, 0x9a, 0x30, 0xaf, 0x7c, - 0xa2, 0x80, 0x3e, 0x5a, 0xd4, 0xff, 00, 0xe0, 0x99, 0x3f, - 0xb3, 0x96, 0xa4, 0xf, 0xfc, 0x5b, 0xf1, 0x68, 0x4f, 0xf1, - 0x5b, 0x6a, 0x57, 0x49, 0xff, 00, 0xb5, 0x48, 0xae, 0x4b, - 0x52, 0xff, 00, 0x82, 0x47, 0x7e, 0xcf, 0xf7, 0xa0, 0xf9, - 0x16, 0x1a, 0xf5, 0x81, 0xf5, 0x83, 0x56, 0x76, 0xff, 00, - 0xd0, 0xc1, 0xaf, 0xb4, 0xa8, 0xa0, 0x56, 0x3e, 0x1, 0xd5, - 0x7f, 0xe0, 0x8c, 0x9f, 0x8, 0x6e, 0xb2, 0x6c, 0xbc, 0x4d, - 0xe2, 0xcb, 0x3, 0xe8, 0x67, 0x82, 0x50, 0x3f, 0x38, 0xbf, - 0xad, 0x72, 0x9a, 0x9f, 0xfc, 0x11, 0x33, 0xc2, 0x32, 0x3, - 0xfd, 0x9f, 0xf1, 0x2f, 0x5a, 0x80, 0xf6, 0x17, 0x36, 0x10, - 0xc8, 0x3f, 0x42, 0xb5, 0xfa, 0x53, 0x45, 0x1, 0x64, 0x7e, - 0x56, 0x6a, 0x1f, 0xf0, 0x44, 0x4b, 0x92, 0x49, 0xb1, 0xf8, - 0xb7, 0x10, 0x1d, 0x85, 0xc6, 0x84, 0x4f, 0xea, 0x27, 0xac, - 0x2b, 0xcf, 0xf8, 0x22, 0x57, 0x8b, 0xa3, 0x52, 0x6d, 0x7e, - 0x27, 0x68, 0xb3, 0x9e, 0xc2, 0x5d, 0x36, 0x68, 0xf3, 0xf9, - 0x3b, 0x57, 0xeb, 0x85, 0x14, 0xee, 0x16, 0x47, 0xe3, 0x4e, - 0xa7, 0xff, 00, 0x4, 0x60, 0xf8, 0xb5, 0x6e, 0x9, 0xb1, - 0xf1, 0x5f, 0x85, 0x2f, 0x71, 0xd0, 0x3c, 0xb7, 0x11, 0x67, - 0xff, 00, 0x21, 0x1a, 0xe4, 0xf5, 0xf, 0xf8, 0x24, 0x47, - 0xc7, 0xfb, 0x36, 0x22, 0xb, 0x6f, 0xe, 0x5f, 0x1, 0xde, - 0xd, 0x58, 0x2e, 0x7f, 0xef, 0xb4, 0x5a, 0xfd, 0xc2, 0xa2, - 0x8b, 0x8a, 0xc8, 0xfc, 0x14, 0xd5, 0x3f, 0xe0, 0x97, 0x9f, - 0xb4, 0x76, 0x9a, 0x7e, 0x4f, 0x3, 0x45, 0x7d, 0xef, 0x6b, - 0xaa, 0xda, 0x9f, 0xfd, 0xa, 0x41, 0x5c, 0xed, 0xe7, 0xfc, - 0x13, 0xbf, 0xf6, 0x8b, 0xb1, 0xcf, 0x99, 0xf0, 0xb7, 0x54, - 0x7c, 0x7f, 0xcf, 0x1b, 0x8b, 0x69, 0x3f, 0xf4, 0x19, 0x4d, - 0x7f, 0x41, 0xb4, 0x51, 0x70, 0xe5, 0x47, 0xf3, 0xa5, 0xa9, - 0xfe, 0xc5, 0x3f, 0x1d, 0xf4, 0x8c, 0xfd, 0xa7, 0xe1, 0x4f, - 0x89, 0xf8, 0xff, 00, 0x9e, 0x36, 0x2d, 0x2f, 0xfe, 0x81, - 0x9a, 0xe5, 0xf5, 0x1f, 0xd9, 0xd7, 0xe2, 0xa6, 0x90, 0x9, - 0xbd, 0xf8, 0x6d, 0xe2, 0xcb, 0x60, 0x3a, 0x99, 0x34, 0x5b, - 0x91, 0xff, 00, 0xb2, 0x57, 0xf4, 0xab, 0x45, 0x17, 0xe, - 0x53, 0xf9, 0x81, 0xd4, 0xfc, 0x11, 0xe2, 0x3d, 0x10, 0x13, - 0xa8, 0xe8, 0x1a, 0xa5, 0x80, 0x1d, 0x7e, 0xd5, 0x65, 0x24, - 0x78, 0xff, 00, 0xbe, 0x94, 0x56, 0x29, 0xf9, 0x4e, 0xf, - 0x7, 0xd0, 0xd7, 0xf5, 0x25, 0x3d, 0x9c, 0x17, 0x23, 0x13, - 0x41, 0x1c, 0xbf, 0xef, 0xa0, 0x3f, 0xce, 0xb2, 0xb5, 0xf, - 0x3, 0xf8, 0x73, 0x57, 0x4d, 0xb7, 0xde, 0x1f, 0xd2, 0xef, - 0x57, 0xd2, 0xe2, 0xca, 0x39, 0x7, 0xea, 0xb4, 0x5c, 0x39, - 0x4f, 0xe6, 0xa, 0x8a, 0xfe, 0x95, 0xf5, 0x2f, 0xd9, 0xe7, - 0xe1, 0x6e, 0xae, 0x85, 0x2f, 0x7e, 0x1c, 0xf8, 0x56, 0xe5, - 0x4f, 0x50, 0xfa, 0x35, 0xb9, 0xff, 00, 0xd9, 0x2b, 0x99, - 0xbc, 0xfd, 0x8b, 0xfe, 0x4, 0x5f, 0x82, 0x25, 0xf8, 0x49, - 0xe1, 0x1e, 0x7a, 0x98, 0xf4, 0x98, 0xa3, 0x3f, 0x9a, 0x81, - 0x45, 0xc5, 0xca, 0x7f, 0x3a, 0x30, 0xc0, 0xf7, 0x33, 0x47, - 0xc, 0x4a, 0x5e, 0x49, 0x18, 0x22, 0xa8, 0xea, 0x49, 0x38, - 0x2, 0xbf, 0xa7, 0xf, 0x86, 0x5e, 0x1f, 0x1e, 0x14, 0xf8, - 0x6f, 0xe1, 0x5d, 0x10, 0x74, 0xd3, 0xb4, 0xab, 0x5b, 0x4e, - 0x98, 0xfb, 0x91, 0x2a, 0xff, 00, 0x4a, 0xf2, 0x56, 0xfd, - 0x81, 0xbf, 0x67, 0xef, 0x3e, 0x29, 0xe3, 0xf8, 0x5d, 0xa3, - 0x5b, 0xcd, 0x13, 0x89, 0x12, 0x4b, 0x7f, 0x32, 0x32, 0xac, - 0xe, 0x41, 0x1b, 0x5c, 0x77, 0xaf, 0x7e, 00, 0x28, 00, - 0x70, 0x5, 0x5, 0x25, 0x61, 0x68, 0xa2, 0x8a, 0x43, 0xa, - 0x28, 0xa2, 0x80, 0x3e, 0x65, 0xfd, 0xa7, 0xae, 0xf3, 0x74, - 0xc9, 0x9e, 0x80, 0xa, 0xf9, 0x6f, 0x55, 0x6c, 0x40, 0xdf, - 0x4a, 0xfa, 0x2b, 0xf6, 0x96, 0xbb, 0xdf, 0xab, 0xca, 0xb9, - 0xe8, 0xd8, 0xaf, 0x9b, 0xf5, 0xa7, 0xdb, 0x6c, 0xe7, 0xfd, - 0x93, 0x5f, 0x97, 0x63, 0x5f, 0x3e, 0x61, 0x37, 0xe6, 0x7e, - 0x49, 0xc4, 0x93, 0xbd, 0x59, 0x1c, 0x17, 0xc1, 0x6b, 0x21, - 0xad, 0xfe, 0xd7, 0xdf, 0xc, 0x2d, 0x58, 0xf0, 0xba, 0xbf, - 0xda, 0x3f, 0x18, 0xe2, 0x79, 0x7, 0xfe, 0x81, 0x5f, 0xb0, - 0x35, 0xf9, 0x3d, 0xfb, 0x20, 0x69, 0x8b, 0xad, 0xfe, 0xd9, - 0xde, 0x16, 0x2c, 0x37, 0xb, 0x1b, 0x7b, 0xcb, 0xb1, 0xec, - 0x44, 0x25, 0x41, 0xff, 00, 0xc7, 0xeb, 0xf5, 0x86, 0xbf, - 0x44, 0xc1, 0xab, 0x52, 0x47, 0xda, 0x70, 0xdc, 0x39, 0x32, - 0xca, 0x41, 0x45, 0x14, 0x57, 0x69, 0xf4, 0xe5, 0x1d, 0x6b, - 0x45, 0xb1, 0xf1, 0x1e, 0x93, 0x75, 0xa6, 0x6a, 0x56, 0xb1, - 0xde, 0xd8, 0x5d, 0x46, 0x62, 0x9a, 0x9, 0x57, 0x2a, 0xea, - 0x7a, 0x83, 0x5f, 0x9e, 0x3f, 0x1f, 0x3f, 0x63, 0x7d, 0x73, - 0xe1, 0xc6, 0xa7, 0x73, 0xac, 0x78, 0x5c, 0x4b, 0xa8, 0xf8, - 0x71, 0x98, 0xba, 0x94, 0x3b, 0xa5, 0xb5, 0x1f, 0xdd, 0x71, - 0xdc, 0xf, 0xef, 0x7e, 0x78, 0xaf, 0xd1, 0xca, 0x42, 0x3, - 0x2, 0x8, 0xc8, 0x3d, 0x41, 0xae, 0x6a, 0xd4, 0x15, 0x65, - 0xd9, 0x9e, 0x2e, 0x67, 0x94, 0xd0, 0xcd, 0x29, 0xa8, 0xd5, - 0xd1, 0xad, 0x9a, 0xe9, 0xfe, 0x6b, 0xc8, 0xfc, 0x79, 0x4f, - 0xf8, 0x49, 0xb4, 0xae, 0x1e, 0x13, 0x22, 0x8e, 0x3a, 0x73, - 0x52, 0xf, 0x16, 0x6a, 0xb0, 0xff, 00, 0xac, 0xb4, 0x90, - 0x7f, 0xc0, 0x4d, 0x7e, 0xa5, 0x78, 0xa7, 0xe0, 0xb7, 0x84, - 0x3c, 0x5b, 0xbd, 0xaf, 0x34, 0x88, 0xa1, 0x99, 0x8e, 0x4c, - 0xd6, 0xa0, 0x46, 0xc4, 0xfa, 0x9c, 0x70, 0x7f, 0x11, 0x5e, - 0x7f, 0x7f, 0xfb, 0x1e, 0xf8, 0x4a, 0xe9, 0xcb, 0x45, 0x77, - 0x77, 0x8, 0x3d, 0x1, 0x54, 0x6c, 0x7e, 0x82, 0xbc, 0xa, - 0x99, 0x75, 0x5b, 0xfc, 0x29, 0xfe, 0x7, 0xc4, 0xcf, 0x84, - 0x9c, 0x3e, 0x1d, 0x7d, 0x1d, 0xbf, 0x3, 0xf3, 0xe5, 0x7c, - 0x79, 0x75, 0x1f, 0xdf, 0xb7, 0x71, 0xf5, 0x6, 0xa6, 0x4f, - 0x88, 0xc4, 0x70, 0xc8, 0xc3, 0xf0, 0xaf, 0xb9, 0x6e, 0xff, - 00, 0x62, 0x6d, 0x12, 0x40, 0x7c, 0x9d, 0x65, 0xd4, 0xff, - 00, 0xb7, 0x6c, 0xf, 0xfe, 0xcd, 0x58, 0x57, 0x9f, 0xb0, - 0xcc, 0x4e, 0xf, 0x93, 0xac, 0xdb, 0x39, 0xf4, 0x78, 0xa, - 0x8f, 0xeb, 0x5c, 0xaf, 0x2e, 0x9f, 0x5a, 0x5f, 0x8a, 0xff, - 00, 0x33, 0x96, 0x5c, 0x2f, 0x5e, 0x3b, 0x29, 0x7d, 0xeb, - 0xfc, 0xcf, 0x8f, 0xe3, 0xf8, 0x8f, 0x9, 0xeb, 0xb8, 0x55, - 0xa8, 0xfe, 0x22, 0x5b, 0x37, 0xf1, 0xd7, 0xd2, 0x97, 0xff, - 00, 0xb0, 0xbe, 0xa6, 0xa7, 0xf7, 0x33, 0x69, 0xd3, 0x8f, - 0x5d, 0xc5, 0x7f, 0x9a, 0xd7, 0x3f, 0x7f, 0xfb, 0xe, 0x78, - 0x89, 0xf, 0xee, 0xec, 0x6d, 0xa7, 0xf7, 0x8e, 0x64, 0x1f, - 0xcc, 0x8a, 0xe7, 0x96, 0x5f, 0xde, 0x93, 0x39, 0xa5, 0xc3, - 0xf8, 0xa8, 0xec, 0xe5, 0xf7, 0x5c, 0xf1, 0x48, 0xfc, 0x79, - 0x6a, 0xd8, 0xfd, 0xe0, 0xfc, 0x45, 0x59, 0x8f, 0xc6, 0x96, - 0x8d, 0xff, 00, 0x2d, 0x56, 0xbd, 0xe, 0xf3, 0xf6, 0x2d, - 0xf1, 0x44, 0x4c, 0x40, 0xd1, 0x25, 0x6c, 0x77, 0x49, 0x10, - 0xff, 00, 0x26, 0xac, 0x2b, 0xcf, 0xd9, 0x13, 0xc5, 0x96, - 0xec, 0x47, 0xf6, 0x16, 0xa3, 0xc7, 0xfc, 0xf3, 0x89, 0x9b, - 0xf9, 0x56, 0x2f, 0x3, 0x4f, 0xac, 0x24, 0xbe, 0x47, 0x3b, - 0xc9, 0xf1, 0x91, 0xfb, 0x4f, 0xe7, 0x16, 0x60, 0xa7, 0x8a, - 0xed, 0x1f, 0xfe, 0x5a, 0xa7, 0xe7, 0x56, 0x13, 0xc4, 0x56, - 0xcc, 0x3e, 0xfa, 0xfe, 0x75, 0x5e, 0xf7, 0xf6, 0x6c, 0xf1, - 0x2d, 0x96, 0xe2, 0xfa, 0x6e, 0xa7, 0x10, 0x1d, 0xda, 0x16, - 00, 0x7e, 0x95, 0x87, 0x71, 0xf0, 0x6f, 0x5a, 0xb5, 0x62, - 0x18, 0xdc, 0x21, 0x1d, 0x99, 0x6b, 0x9d, 0xe0, 0xa8, 0xf7, - 0x68, 0xe7, 0x78, 0xc, 0x64, 0x7e, 0xda, 0xf9, 0xa3, 0xa9, - 0x5d, 0x66, 0xdd, 0xbf, 0x88, 0x54, 0x83, 0x53, 0x80, 0xff, - 00, 0x10, 0xae, 0x16, 0x4f, 0x86, 0xfa, 0xec, 0x1f, 0x76, - 0x49, 0x4f, 0xd5, 0x6a, 0xbb, 0xf8, 0x43, 0xc4, 0x56, 0xfd, - 0x1d, 0x8f, 0xd4, 0x1a, 0xcf, 0xea, 0x34, 0x9e, 0xd3, 0x32, - 0xfa, 0xbe, 0x35, 0x7f, 0x2b, 0x3d, 0x18, 0x5f, 0x42, 0x7f, - 0x88, 0x53, 0x85, 0xd4, 0x47, 0xa3, 0xd7, 0x98, 0x9d, 0x2b, - 0xc4, 0xb0, 0xff, 00, 0xb, 0x37, 0xe3, 0x4d, 0xdf, 0xe2, - 0x38, 0x3a, 0xc0, 0xc7, 0xf1, 0xa9, 0xfe, 0xcf, 0x8b, 0xda, - 0x62, 0xf6, 0x78, 0xd5, 0xf6, 0x13, 0xf9, 0x9e, 0xa6, 0xb7, - 0x2b, 0xd9, 0xff, 00, 0x5a, 0x91, 0x6e, 0xd8, 0x74, 0x94, - 0xfe, 0x75, 0xe5, 0x3, 0x59, 0xd7, 0xa1, 0xfb, 0xd6, 0x92, - 0x1f, 0xc2, 0x9c, 0x3c, 0x59, 0xaa, 0xc5, 0xf7, 0xed, 0x24, - 0x1f, 0x81, 0xa8, 0x79, 0x6b, 0x7b, 0x34, 0x2e, 0x6c, 0x5c, - 0x77, 0xa4, 0xfe, 0xf3, 0xd6, 0xd3, 0x52, 0xb8, 0x4f, 0xbb, - 0x70, 0xe3, 0xe8, 0xd5, 0x62, 0x3d, 0x7f, 0x50, 0x8f, 0xee, - 0xdd, 0xc8, 0x3f, 0xe0, 0x55, 0xe4, 0xb, 0xe3, 0xbb, 0xb8, - 0xfe, 0xfd, 0xbb, 0x8f, 0xc0, 0xd4, 0xc9, 0xf1, 0xc, 0xaf, - 0xde, 0x8d, 0x87, 0xe7, 0x59, 0xbc, 0xba, 0xa2, 0xda, 0xc3, - 0xfa, 0xd6, 0x26, 0x1b, 0xc2, 0x48, 0xf6, 0x38, 0xbc, 0x63, - 0xac, 0x43, 0x8d, 0x97, 0xb2, 0xc, 0x7b, 0xd5, 0xb8, 0xbe, - 0x22, 0x6b, 0xb0, 0x9e, 0x2f, 0x58, 0xfd, 0x6b, 0xc6, 0x63, - 0xf8, 0x8d, 0x17, 0x7c, 0x8f, 0xc6, 0xac, 0xc7, 0xf1, 0xe, - 0xd8, 0xf5, 0x7a, 0x5f, 0x52, 0xc4, 0x47, 0x6f, 0xcc, 0xb5, - 0x99, 0xd6, 0x8e, 0xfc, 0xcb, 0xef, 0x3d, 0xb2, 0xf, 0x8b, - 0x7e, 0x21, 0x83, 0xa5, 0xd6, 0x7e, 0xb5, 0xa1, 0x6f, 0xf1, - 0xc3, 0xc4, 0x50, 0x11, 0x99, 0xb7, 0x62, 0xbc, 0x36, 0x3f, - 0x1e, 0xda, 0x37, 0xfc, 0xb5, 0x15, 0x66, 0x3f, 0x1a, 0xda, - 0x37, 0xfc, 0xb5, 0x5a, 0x7e, 0xcb, 0x17, 0x1d, 0x9b, 0xfb, - 0xd9, 0xb4, 0x73, 0xba, 0xb1, 0xfb, 0x6d, 0x1e, 0xf9, 0x6f, - 0xfb, 0x43, 0x78, 0x82, 0x10, 0x1, 0x73, 0xf9, 0xd6, 0xa5, - 0xaf, 0xed, 0x2f, 0xac, 0xc5, 0xf7, 0xb2, 0x6b, 0xe7, 0x74, - 0xf1, 0x6d, 0xa3, 0x7f, 0xcb, 0x54, 0xfc, 0xea, 0x74, 0xf1, - 0x25, 0xab, 0xff, 00, 0x1a, 0xfe, 0x75, 0x4a, 0xae, 0x3a, - 0x1b, 0x4e, 0x47, 0x4c, 0x78, 0x86, 0xaa, 0xff, 00, 0x97, - 0xa7, 0xd2, 0xd0, 0x7e, 0xd4, 0xfa, 0x82, 0xe3, 0x7a, 0xb6, - 0x3e, 0x95, 0xab, 0x6b, 0xfb, 0x55, 0xb8, 0xc7, 0x98, 0x9f, - 0x9a, 0xd7, 0xcb, 0x4b, 0xad, 0xdb, 0xb7, 0xf1, 0x8f, 0xce, - 0xa5, 0x5d, 0x56, 0x3, 0xfc, 0x43, 0xf3, 0xab, 0x58, 0xec, - 0x7c, 0x7e, 0xdb, 0x3a, 0xe3, 0xc4, 0x75, 0xff, 00, 0xe7, - 0xe2, 0x3e, 0xb4, 0xb6, 0xfd, 0xaa, 0xad, 0x9c, 0xfc, 0xe8, - 0xa3, 0xfe, 0x3, 0x5a, 0xb6, 0xdf, 0xb4, 0xfe, 0x94, 0xf8, - 0xde, 0x13, 0xf2, 0x22, 0xbe, 0x39, 0x17, 0xf0, 0xb7, 0xf1, - 0xa, 0x78, 0xbb, 0x88, 0xf4, 0x71, 0x5a, 0xac, 0xdb, 0x1f, - 0x1f, 0xb5, 0xf8, 0x1d, 0x91, 0xe2, 0x4a, 0xfd, 0xd3, 0x3e, - 0xd6, 0xb6, 0xfd, 0xa4, 0x34, 0x29, 0xb1, 0xb8, 0xa8, 0xfc, - 0x6b, 0x52, 0xf, 0x8f, 0x5e, 0x1d, 0x94, 0xc, 0xca, 0x6, - 0x7d, 0xd, 0x7c, 0x2e, 0x2e, 0x53, 0xb3, 0xfe, 0xb5, 0x22, - 0xdd, 0x63, 0xa4, 0xa7, 0xf0, 0x35, 0xaa, 0xcf, 0x31, 0xb1, - 0xde, 0xcf, 0xe4, 0x75, 0x47, 0x89, 0x6a, 0xf5, 0x8a, 0x3e, - 0xf5, 0xb7, 0xf8, 0xcb, 0xe1, 0xd9, 0xff, 00, 0xe5, 0xe3, - 0x15, 0xa1, 0x17, 0xc4, 0xed, 0x2, 0x5e, 0x97, 0x80, 0x7d, - 0x6b, 0xf3, 0xf9, 0x2f, 0x65, 0x5f, 0xbb, 0x3b, 0x8f, 0xa3, - 0x54, 0xc9, 0xab, 0xdd, 0xc7, 0xf7, 0x6e, 0xa4, 0x1f, 0xf0, - 0x23, 0x5b, 0xae, 0x20, 0xc4, 0x2d, 0xe0, 0x8e, 0x98, 0xf1, - 0x2c, 0xba, 0xc0, 0xfd, 0x7, 0x8b, 0xc7, 0x3a, 0x2c, 0xdf, - 0x76, 0xf5, 0x3f, 0x1a, 0xb4, 0x9e, 0x28, 0xd2, 0xe4, 0xfb, - 0xb7, 0xb1, 0x9f, 0xc6, 0xbf, 0x3d, 0xa3, 0xf1, 0x2e, 0xa7, - 0x1f, 0xdd, 0xbd, 0x97, 0xfe, 0xfa, 0x35, 0x6a, 0x2f, 0x1b, - 0x6b, 0x30, 0x91, 0xb6, 0xf6, 0x4e, 0x3d, 0x58, 0xd6, 0xcb, - 0x88, 0xa7, 0xd6, 0x9f, 0xe2, 0x74, 0x2e, 0x24, 0x87, 0x58, - 0x1f, 0xa1, 0x11, 0xea, 0xf6, 0x52, 0xfd, 0xdb, 0x98, 0xcf, - 0xfc, 0xa, 0xa6, 0x5b, 0xc8, 0x1b, 0xa4, 0xc8, 0x7e, 0x8c, - 0x2b, 0xf3, 0xfa, 0x1f, 0x89, 0x7a, 0xf4, 0x23, 0x8b, 0xc7, - 0xfc, 0xcd, 0x5e, 0x83, 0xe3, 0x7, 0x88, 0x20, 0xc6, 0x2e, - 0x58, 0xe3, 0xfd, 0xa3, 0x5b, 0xc7, 0x88, 0xa3, 0xd6, 0x9b, - 0x3a, 0x23, 0xc4, 0x58, 0x77, 0xba, 0x67, 0xde, 0xe2, 0x45, - 0x6e, 0x8c, 0xf, 0xd0, 0xd2, 0xe6, 0xbe, 0x18, 0x87, 0xe3, - 0xb7, 0x88, 0x22, 0xc0, 0xf3, 0xf, 0xfd, 0xf4, 0x6b, 0x4e, - 0xdf, 0xf6, 0x8a, 0xd7, 0x21, 0x23, 0x3b, 0x8e, 0x3f, 0xda, - 0x35, 0xba, 0xe2, 0x1a, 0x1d, 0x62, 0xce, 0x88, 0xe7, 0xf8, - 0x47, 0xbb, 0x3e, 0xd5, 0xa2, 0xbe, 0x3e, 0x83, 0xf6, 0x9c, - 0xd5, 0xd0, 0x8d, 0xe1, 0xb1, 0xfe, 0xf1, 0xad, 0x5b, 0x5f, - 0xda, 0x9a, 0xed, 0x71, 0xbd, 0xf, 0x15, 0xbc, 0x73, 0xec, - 0x23, 0xde, 0xeb, 0xe4, 0x74, 0x47, 0x3a, 0xc1, 0xcb, 0xed, - 0x1f, 0x56, 0x51, 0x5f, 0x33, 0xdb, 0x7e, 0xd5, 0x44, 0x91, - 0xe6, 0x20, 0x1f, 0x51, 0x5a, 0xd6, 0xff, 00, 0xb5, 0x35, - 0x91, 0x3, 0x7a, 0xa7, 0xe4, 0x6b, 0xa2, 0x39, 0xd6, 0xa, - 0x5f, 0x6c, 0xe8, 0x8e, 0x69, 0x84, 0x96, 0xd3, 0x47, 0xd0, - 0x54, 0x57, 0x88, 0xdb, 0x7e, 0xd3, 0x5a, 0x4c, 0xa4, 0x6f, - 0x11, 0x8f, 0xc4, 0xd6, 0x9c, 0x1f, 0xb4, 0x56, 0x83, 0x26, - 0x32, 0xf1, 0xe7, 0xd9, 0xeb, 0x78, 0xe6, 0xb8, 0x39, 0x6d, - 0x51, 0x1b, 0xac, 0x76, 0x1e, 0x5b, 0x4d, 0x1e, 0xb7, 0x45, - 0x79, 0xbd, 0xbf, 0xc7, 0x4f, 0xf, 0xcf, 0xff, 00, 0x2d, - 0x94, 0x7f, 0xc0, 0xeb, 0x46, 0x1f, 0x8b, 0xfe, 0x1e, 0x9b, - 0x3, 0xed, 0x40, 0x1f, 0xad, 0x74, 0x47, 0x1b, 0x86, 0x96, - 0xd5, 0x17, 0xde, 0x6c, 0xb1, 0x14, 0x5e, 0xd2, 0x47, 0x6f, - 0x45, 0x72, 0xf0, 0x7c, 0x49, 0xd0, 0x67, 0xe9, 0x7a, 0x83, - 0xea, 0x6a, 0xdc, 0x7e, 0x36, 0xd1, 0x65, 0xfb, 0xb7, 0xf1, - 0x9f, 0xc6, 0xb6, 0x55, 0xe9, 0x3d, 0xa4, 0xbe, 0xf2, 0xd5, - 0x58, 0x3d, 0xa4, 0x8d, 0xda, 0x2b, 0x32, 0x3f, 0x12, 0x69, - 0x92, 0xfd, 0xdb, 0xd8, 0xbf, 0xef, 0xaa, 0x9d, 0x35, 0x7b, - 0x29, 0x3e, 0xed, 0xd4, 0x47, 0xfe, 0x4, 0x2b, 0x45, 0x38, - 0xbd, 0x99, 0x7c, 0xd1, 0xee, 0x5c, 0xa2, 0xa1, 0x5b, 0xb8, - 0x1f, 0xee, 0xca, 0x87, 0xfe, 0x4, 0x2a, 0x41, 0x22, 0x37, - 0x46, 0x53, 0xf4, 0x35, 0x57, 0x45, 0xe, 0xa2, 0x93, 0x39, - 0xa5, 0xa6, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, - 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, - 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, - 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, - 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, - 0x1, 0x45, 0x14, 0x50, 0x1, 0x48, 0x78, 0x14, 0xb4, 0xc9, - 0x5b, 0x64, 0x4e, 0xde, 0x80, 0x9a, 00, 0xf8, 0xdb, 0xf6, - 0x85, 0xba, 0xf3, 0x75, 0xd9, 0x87, 0xfb, 0x67, 0xf9, 0xd7, - 0x80, 0x78, 0x89, 0xf6, 0x59, 0x4d, 0xfe, 0xe9, 0xaf, 0x68, - 0xf8, 0xe1, 0x73, 0xe6, 0xf8, 0x82, 0x50, 0x4f, 0xf1, 0x93, - 0xfa, 0xd7, 0x84, 0x78, 0xc6, 0xf0, 0x41, 0xa7, 0x4c, 0x72, - 0x7, 0xca, 0x6b, 0xf2, 0xb7, 0xfb, 0xcc, 0x6c, 0xdf, 0x99, - 0xf8, 0xb7, 0x10, 0xce, 0xf5, 0x66, 0x6f, 0x7f, 0xc1, 0x3d, - 0xac, 0x1b, 0x50, 0xfd, 0xab, 0x75, 0x8b, 0xbd, 0xb9, 0x8e, - 0xcb, 0xc3, 0xf7, 0x4, 0x9f, 0x46, 0x79, 0xa1, 0x51, 0xfa, - 0x66, 0xbf, 0x4f, 0x2b, 0xf3, 0x97, 0xfe, 0x9, 0x81, 0x68, - 0x6f, 0xfe, 0x2d, 0x7c, 0x4d, 0xd5, 0xa, 0x9d, 0xb6, 0xfa, - 0x75, 0xa5, 0xb0, 0x6c, 0x71, 0x99, 0x25, 0x91, 0x88, 0xcf, - 0xfd, 0xb3, 0x15, 0xfa, 0x35, 0x5f, 0xa5, 0xe1, 0xd5, 0xa9, - 0xa3, 0xf5, 0xc, 0x9e, 0x1e, 0xcf, 0x1, 0x4a, 0x3e, 0x48, - 0x28, 0xa2, 0x8a, 0xe9, 0x3d, 0x90, 0xa2, 0x8a, 0x28, 00, - 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, - 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa8, 0xe4, 0x82, 0x29, - 0x46, 0x1e, 0x34, 0x71, 0xe8, 0xca, 0xd, 0x49, 0x45, 00, - 0x50, 0x9f, 0x41, 0xd3, 0x2e, 0x46, 0x26, 0xd3, 0xad, 0x25, - 0x1e, 0x8f, 0x2, 0x9f, 0xe6, 0x2b, 0x3e, 0xe3, 0xc0, 0x1e, - 0x19, 0xbb, 0xff, 00, 0x5b, 0xa0, 0x69, 0xad, 0xff, 00, - 0x6e, 0xa8, 0x3f, 0x90, 0xad, 0xfa, 0x2a, 0x1c, 0x20, 0xf7, - 0x46, 0x6e, 0x9c, 0x25, 0xbc, 0x51, 0xc5, 0xdd, 0xfc, 0x19, - 0xf0, 0x55, 0xe9, 0xcc, 0x9e, 0x1e, 0xb4, 0x1f, 0xf5, 0xcc, - 0x14, 0xfe, 0x44, 0x56, 0x45, 0xdf, 0xec, 0xe9, 0xe0, 0x4b, - 0xbc, 0xff, 00, 0xc4, 0xa0, 0xc3, 0x9f, 0xf9, 0xe7, 0x33, - 0x71, 0xf9, 0x93, 0x5e, 0x97, 0x45, 0x62, 0xf0, 0xd4, 0x65, - 0xbc, 0x17, 0xdc, 0x63, 0x2c, 0x26, 0x1e, 0x5b, 0xd3, 0x5f, - 0x72, 0x3c, 0x66, 0xef, 0xf6, 0x51, 0xf0, 0x4d, 0xce, 0x76, - 0x8b, 0xc8, 0x73, 0xfd, 0xd9, 0x10, 0xff, 00, 0x35, 0xac, - 0x9b, 0xaf, 0xd8, 0xeb, 0xc2, 0x93, 0x3, 0xe5, 0xdf, 0x5d, - 0xc6, 0x7f, 0xda, 0x54, 0x6f, 0xe8, 0x2b, 0xdf, 0x28, 0xac, - 0x9e, 0xb, 0xe, 0xfe, 0xc2, 0x30, 0x79, 0x76, 0x11, 0xff, - 00, 0xcb, 0xb4, 0x7c, 0xd5, 0x79, 0xfb, 0x13, 0xe8, 0xd2, - 0xff, 00, 0xa9, 0xd6, 0x9d, 0x7d, 0x9e, 0xd8, 0x1f, 0xfd, - 0x9a, 0xb0, 0xaf, 0x7f, 0x61, 0xa4, 0x6c, 0xf9, 0x1a, 0xbd, - 0xb3, 0xff, 00, 0xd7, 0x48, 0x4a, 0xff, 00, 0x8d, 0x7d, - 0x65, 0x45, 0x66, 0xf2, 0xfc, 0x3b, 0xfb, 0x3f, 0x8b, 0x32, - 0x79, 0x56, 0x11, 0xfd, 0x9f, 0xc5, 0xff, 00, 0x99, 0xf1, - 0x6d, 0xef, 0xec, 0x2f, 0xa9, 0xe0, 0x98, 0xee, 0x34, 0xe9, - 0x7d, 0x83, 0x11, 0xfc, 0xd6, 0xb9, 0xeb, 0xdf, 0xd8, 0x7f, - 0xc4, 0x28, 0xe, 0xcb, 0xb, 0x79, 0x7f, 0xdc, 0x99, 0x3f, - 0xa9, 0x15, 0xf7, 0x9d, 0x15, 0x9b, 0xcb, 0x68, 0xf4, 0x6d, - 0x7c, 0xcc, 0x25, 0x93, 0x61, 0x9e, 0xd7, 0x5f, 0x33, 0xf3, - 0xb6, 0xf3, 0xf6, 0x2d, 0xf1, 0x4c, 0x4a, 0x48, 0xd0, 0xe4, - 0x3f, 0xf5, 0xce, 0x44, 0x6f, 0xe4, 0xd5, 0x87, 0x7d, 0xfb, - 0x22, 0x78, 0xae, 0xd7, 0x27, 0xfb, 0xb, 0x50, 0xff, 00, - 0x80, 0x46, 0xcd, 0xfc, 0xab, 0xf4, 0xba, 0x8a, 0x8f, 0xec, - 0xc8, 0xf4, 0x9b, 0xfc, 0xe, 0x79, 0x64, 0x54, 0x1e, 0xd2, - 0x7f, 0x87, 0xf9, 0x1f, 0x96, 0x37, 0xbf, 0xb3, 0x77, 0x88, - 0xec, 0x98, 0xac, 0x9a, 0x6e, 0xa5, 0xb, 0x7a, 0x34, 0x2c, - 0x3f, 0xa5, 0x62, 0xdd, 0x7c, 0x18, 0xd6, 0xad, 0x1b, 0x69, - 0x17, 0x31, 0x91, 0xd9, 0x97, 0x15, 0xfa, 0xd1, 0x51, 0xbd, - 0xbc, 0x52, 0xe7, 0x7c, 0x48, 0xf9, 0xfe, 0xf2, 0x83, 0x50, - 0xf2, 0xd9, 0x74, 0xa9, 0xf8, 0x7f, 0xc1, 0x39, 0x65, 0xc3, - 0xb4, 0xa5, 0xf6, 0x97, 0xfe, 0x3, 0xff, 00, 0x4, 0xfc, - 0x8c, 0x97, 0xe1, 0xa6, 0xb9, 0x7, 0xdd, 0x92, 0x5f, 0xc5, - 0x4d, 0x57, 0x7f, 0x6, 0xf8, 0x86, 0xe, 0x8e, 0xdc, 0x7a, - 0x82, 0x2b, 0xf5, 0xae, 0x7f, 0xb, 0xe8, 0xd7, 0x24, 0x99, - 0xb4, 0x9b, 0x19, 0x49, 0xea, 0x5e, 0xdd, 0xf, 0xf4, 0xac, - 0xd9, 0xbe, 0x19, 0xf8, 0x4e, 0xe0, 0x93, 0x27, 0x87, 0x74, - 0xd2, 0x4f, 0x53, 0xf6, 0x65, 0x1f, 0xd2, 0xb3, 0x79, 0x75, - 0x6e, 0x93, 0x5f, 0x71, 0xc7, 0x3e, 0x18, 0xa6, 0xff, 00, - 0x97, 0xee, 0x3f, 0x28, 0xe, 0x8f, 0xe2, 0x38, 0x3d, 0x4f, - 0xe2, 0x69, 0x9f, 0xf1, 0x51, 0xc1, 0xd6, 0x26, 0x6f, 0xc6, - 0xbf, 0x54, 0x67, 0xf8, 0x29, 0xe0, 0x8b, 0x90, 0x43, 0xf8, - 0x76, 0xd0, 0x67, 0xba, 0xee, 0x5f, 0xe4, 0x6b, 0x1e, 0xef, - 0xf6, 0x6e, 0xf0, 0xd, 0xd0, 0xe3, 0x48, 0x68, 0x4f, 0xac, - 0x73, 0xbf, 0xf5, 0x26, 0xb2, 0x79, 0x75, 0x7f, 0xee, 0xbf, - 0xeb, 0xd0, 0xe4, 0x9f, 0xa, 0x45, 0xed, 0x18, 0xfd, 0xef, - 0xfc, 0x8f, 0xcc, 0x7f, 0xed, 0x6d, 0x7a, 0x1f, 0xbd, 0x6c, - 0xe6, 0x94, 0x78, 0xa7, 0x56, 0x8b, 0xef, 0xda, 0xc9, 0xff, - 00, 0x7c, 0x9a, 0xfd, 0x1f, 0xbc, 0xfd, 0x93, 0xbc, 0xf, - 0x73, 0xfe, 0xad, 0x2f, 0x20, 0xff, 00, 0x76, 0x45, 0x3f, - 0xcd, 0x6b, 0x12, 0xf7, 0xf6, 0x35, 0xf0, 0xbc, 0xf9, 0xf2, - 0x35, 0xb, 0x98, 0xbf, 0xdf, 0x8d, 0x5b, 0xf9, 0x62, 0xb1, - 0x96, 0x5f, 0x5b, 0xf9, 0x13, 0x38, 0xe5, 0xc2, 0x8d, 0x6d, - 0x1f, 0xba, 0x47, 0xe7, 0xf0, 0xf1, 0xcd, 0xe4, 0x63, 0xe7, - 0xb7, 0x71, 0xf5, 0x6, 0xa6, 0x4f, 0x88, 0x4e, 0xbf, 0x7a, - 0x32, 0x3f, 0x3a, 0xfb, 0x82, 0xef, 0xf6, 0x24, 0xd3, 0x64, - 0x3f, 0xb9, 0xd6, 0x94, 0xf, 0xf6, 0xed, 0x7f, 0xfb, 0x2a, - 0xc5, 0xbd, 0xfd, 0x86, 0x4b, 0x67, 0xc9, 0xd5, 0xac, 0xe4, - 0xf4, 0xf3, 0x22, 0x65, 0xff, 00, 0x1a, 0xc1, 0xe0, 0x2a, - 0x75, 0xa3, 0xf8, 0xaf, 0xf3, 0x39, 0x65, 0xc3, 0x15, 0x56, - 0xd1, 0x97, 0xde, 0xbf, 0xcc, 0xf9, 0x6, 0x3f, 0x88, 0xa9, - 0xfc, 0x40, 0x8a, 0xb5, 0x1f, 0xc4, 0x4b, 0x73, 0xd5, 0xb1, - 0xf8, 0xd7, 0xd2, 0xb7, 0xbf, 0xb0, 0xae, 0xaa, 0x1, 0xf2, - 0xa7, 0xd3, 0x26, 0xff, 00, 0x81, 0x11, 0xfc, 0xd6, 0xb9, - 0xfb, 0xef, 0xd8, 0x77, 0xc4, 0x71, 0x3, 0xb2, 0xc2, 0xd6, - 0x6f, 0xfa, 0xe7, 0x32, 0xff, 00, 0x52, 0x2b, 0x9, 0x60, - 0x7b, 0xd2, 0x67, 0x3c, 0xb8, 0x7b, 0x13, 0x1d, 0x9c, 0xfe, - 0xeb, 0x9e, 0x27, 0x1f, 0x8f, 0xad, 0x5b, 0x1f, 0xbc, 0xc5, - 0x59, 0x4f, 0x1b, 0x5a, 0xb7, 0xfc, 0xb5, 0x5f, 0xc6, 0xbd, - 0xe, 0xff, 00, 0xf6, 0x31, 0xf1, 0x4d, 0xbe, 0x4f, 0xf6, - 0x1c, 0x8c, 0x3d, 0x63, 0x60, 0xdf, 0xc8, 0xd7, 0x3f, 0x7b, - 0xfb, 0x28, 0xf8, 0x9a, 0xd4, 0x9c, 0xe8, 0x5a, 0x8a, 0xfb, - 0xac, 0xe, 0x7f, 0xa5, 0x61, 0x2c, 0x15, 0x35, 0xbc, 0x1a, - 0xf9, 0x1c, 0xd2, 0xc9, 0xb1, 0x70, 0xfb, 0x6f, 0xe7, 0x16, - 0x62, 0x27, 0x8b, 0xed, 0x5b, 0xfe, 0x5a, 0xa7, 0xe7, 0x53, - 0xa7, 0x89, 0xad, 0x9f, 0xa4, 0x89, 0xf9, 0xd5, 0x7b, 0xcf, - 0xd9, 0xd7, 0xc4, 0x36, 0x79, 0x2f, 0xa7, 0xea, 0x11, 0x1, - 0xfd, 0xe8, 0x58, 0x7f, 0x4a, 0xc6, 0xb8, 0xf8, 0x3b, 0xac, - 0xdb, 0x67, 0xfe, 0x3e, 0x13, 0x1f, 0xde, 0x43, 0x58, 0x3c, - 0x1d, 0xf, 0x34, 0x60, 0xf2, 0xfc, 0x64, 0x7e, 0xda, 0xf9, - 0xa3, 0xa8, 0x5d, 0x7a, 0xdd, 0xbf, 0x8d, 0x7f, 0x3a, 0x95, - 0x75, 0x78, 0xf, 0xf1, 0xa, 0xe1, 0x24, 0xf8, 0x6f, 0xad, - 0xc3, 0x9d, 0xb2, 0xc9, 0xf8, 0xa1, 0xaa, 0xef, 0xe0, 0xfd, - 0x7e, 0xe, 0x92, 0x31, 0xfc, 0xd, 0x47, 0xd4, 0xa8, 0xbd, - 0xa4, 0x67, 0xf5, 0x5c, 0x6a, 0xeb, 0x16, 0x7a, 0x38, 0xd4, - 0xa1, 0x6f, 0xe2, 0x14, 0xe1, 0x7d, 0x9, 0xfe, 0x31, 0x5e, - 0x62, 0xda, 0x47, 0x88, 0xa0, 0xe8, 0x49, 0xfc, 0x4d, 0x34, - 0xff, 00, 0xc2, 0x43, 0x7, 0x58, 0xd9, 0xbf, 0x1a, 0x87, - 0x97, 0xc7, 0xa4, 0x89, 0xf6, 0x58, 0xe5, 0xf6, 0x13, 0xf9, - 0x9e, 0xa6, 0x2e, 0xa3, 0x3f, 0xc4, 0x29, 0xc2, 0xe1, 0x4f, - 0x47, 0xfd, 0x6b, 0xca, 0x7f, 0xb5, 0xb5, 0xd8, 0x7e, 0xf5, - 0xb4, 0x87, 0xf0, 0xa7, 0xf, 0x14, 0xea, 0xb1, 0x7d, 0xeb, - 0x69, 0x3f, 0xef, 0x9a, 0x97, 0x97, 0x3e, 0x92, 0x44, 0xff, - 00, 0xb5, 0xc7, 0x7a, 0x47, 0xab, 0x8b, 0x93, 0xda, 0x53, - 0xf9, 0xd4, 0x89, 0x7d, 0x32, 0xfd, 0xd9, 0xd8, 0x7f, 0xc0, - 0xab, 0xc9, 0xd7, 0xc7, 0x17, 0x91, 0xfd, 0xfb, 0x77, 0x1f, - 0x81, 0xa9, 0x93, 0xe2, 0x13, 0xaf, 0xde, 0x8d, 0x85, 0x64, - 0xf2, 0xd9, 0xf4, 0xb0, 0x7b, 0x7c, 0x44, 0x77, 0xa7, 0x23, - 0xd6, 0x53, 0x58, 0xbd, 0x4f, 0xbb, 0x75, 0x28, 0xff, 00, - 0x81, 0x1a, 0xb1, 0x1f, 0x89, 0xb5, 0x38, 0xbe, 0xed, 0xe4, - 0xa3, 0xfe, 0x4, 0x6b, 0xc9, 0xa3, 0xf8, 0x88, 0x9d, 0xc3, - 0xf, 0xc6, 0xac, 0xc7, 0xf1, 0xa, 0x3, 0xfc, 0x44, 0x54, - 0x7f, 0x67, 0xd6, 0x5b, 0x21, 0xac, 0xc2, 0xac, 0x77, 0x52, - 0x5f, 0x79, 0xeb, 0x71, 0xf8, 0xe3, 0x5a, 0x8b, 0xa5, 0xf4, - 0x9f, 0xf7, 0xd5, 0x5c, 0x83, 0xe2, 0x6e, 0xbd, 0x6, 0x31, - 0x74, 0xc7, 0xea, 0x4d, 0x79, 0x14, 0x7e, 0x3e, 0xb6, 0x6e, - 0xaf, 0x8a, 0xb3, 0x1f, 0x8d, 0xad, 0x5b, 0xfe, 0x5a, 0x8a, - 0x5f, 0x55, 0xc4, 0x47, 0x6b, 0xfd, 0xec, 0xd5, 0x66, 0xf3, - 0x8f, 0xdb, 0x92, 0x3d, 0x8e, 0x1f, 0x8c, 0x3e, 0x20, 0x8b, - 0x1f, 0xe9, 0x4, 0xe3, 0xdc, 0xd6, 0x8d, 0xbf, 0xc7, 0x7d, - 0x7a, 0x1c, 0x7c, 0xe4, 0xff, 00, 0xc0, 0x8d, 0x78, 0x9a, - 0x78, 0xbe, 0xd5, 0xbf, 0xe5, 0xaa, 0xfe, 0x75, 0x3a, 0x78, - 0x9e, 0xd9, 0xff, 00, 0xe5, 0xa2, 0xfe, 0x74, 0x72, 0xe2, - 0xe1, 0xb3, 0x7f, 0x7b, 0x3a, 0x23, 0x9e, 0x54, 0x5f, 0xf2, - 0xf5, 0x9e, 0xef, 0x6f, 0xfb, 0x45, 0x6b, 0x71, 0x63, 0x73, - 0x31, 0xff, 00, 0x81, 0x1a, 0xd6, 0xb6, 0xfd, 0xa6, 0xf5, - 0x48, 0xb1, 0xb8, 0x39, 0xff, 00, 0x81, 0x57, 0xcf, 0x29, - 0xaf, 0xdb, 0xb7, 0xf1, 0xaf, 0xe7, 0x52, 0xae, 0xb1, 0x3, - 0x7f, 0x10, 0xfc, 0xea, 0xd6, 0x23, 0x1b, 0xd, 0xa6, 0xce, - 0xb8, 0x71, 0x5, 0x65, 0xb5, 0x53, 0xe9, 0x4b, 0x6f, 0xda, - 0x92, 0xec, 0x7f, 0xac, 0xdd, 0x5a, 0xd6, 0xdf, 0xb5, 0x42, - 0xf1, 0xbd, 0x41, 0xfa, 0x8a, 0xf9, 0x65, 0x75, 0x38, 0x4f, - 0xf1, 0xf, 0xce, 0x9e, 0x2f, 0xa1, 0x6f, 0xe2, 0x15, 0xa2, - 0xcc, 0x71, 0xf1, 0xfb, 0x6c, 0xeb, 0x8f, 0x11, 0x62, 0x3f, - 0x9d, 0x1f, 0x5b, 0xdb, 0x7e, 0xd4, 0x56, 0x6f, 0x8f, 0x30, - 0x20, 0xfc, 0x2b, 0x56, 0xf, 0xda, 0x63, 0x49, 0x93, 0x19, - 0xf2, 0xfe, 0xb9, 0x22, 0xbe, 0x35, 0x17, 0x31, 0x1f, 0xe2, - 0x14, 0xf1, 0x3a, 0x1e, 0x8f, 0xfa, 0xd6, 0xcb, 0x38, 0xc7, - 0x47, 0xed, 0x7e, 0x7, 0x5c, 0x78, 0x8f, 0x11, 0xe4, 0xcf, - 0xb6, 0xad, 0xff, 00, 0x68, 0x6d, 0xe, 0x5c, 0x6e, 0x78, - 0xc7, 0xfc, 0xa, 0xb4, 0xa0, 0xf8, 0xe7, 0xe1, 0xf9, 0xb1, - 0x89, 0x57, 0xfe, 0xfa, 0xaf, 0x85, 0x44, 0xe3, 0xb3, 0xfe, - 0xb4, 0xf5, 0xba, 0x91, 0x7a, 0x4a, 0xc3, 0xe8, 0xd5, 0xb2, - 0xcf, 0x71, 0x8b, 0x74, 0x8e, 0xa8, 0xf1, 0x25, 0x5e, 0xb1, - 0x3e, 0xf8, 0xb7, 0xf8, 0xb9, 0xa0, 0x4c, 0x1, 0xfb, 0x48, - 0x1f, 0x8d, 0x5d, 0x8b, 0xe2, 0x4e, 0x83, 0x37, 0xdd, 0xbc, - 0x5a, 0xfc, 0xff, 00, 0x5d, 0x46, 0xe5, 0x7a, 0x5c, 0x3f, - 0xfd, 0xf5, 0x53, 0xc7, 0xae, 0xea, 0x11, 0xfd, 0xdb, 0xb9, - 0x7, 0xd1, 0xab, 0x75, 0xc4, 0x35, 0xd6, 0xf0, 0x47, 0x44, - 0x78, 0x91, 0xf5, 0x81, 0xfa, 0xd, 0x1f, 0x8d, 0x74, 0x69, - 0x7a, 0x5f, 0x46, 0x3e, 0xa6, 0xac, 0xc7, 0xe2, 0x5d, 0x32, - 0x5f, 0xbb, 0x7b, 0x11, 0xfc, 0x6b, 0xf3, 0xe5, 0x3c, 0x5b, - 0xab, 0x47, 0x8c, 0x5e, 0xcb, 0xff, 00, 0x7d, 0x55, 0xb8, - 0x7c, 0x7f, 0xad, 0xc3, 0xf7, 0x6f, 0x5f, 0xf1, 0x35, 0xb2, - 0xe2, 0x29, 0x7d, 0xaa, 0x7f, 0x89, 0xd1, 0x1e, 0x24, 0xa6, - 0xf7, 0x89, 0xfa, 0x6, 0x9a, 0xb5, 0x9b, 0xfd, 0xdb, 0xa8, - 0x8f, 0xfc, 0x8, 0x54, 0xa9, 0x79, 0x3, 0xfd, 0xd9, 0x91, - 0xbe, 0x8c, 0x2b, 0xe0, 0x48, 0x7e, 0x29, 0xeb, 0xf1, 0x1f, - 0xf8, 0xfb, 0x73, 0xf8, 0xd6, 0x84, 0x1f, 0x1a, 0x7c, 0x41, - 0x7, 0xfc, 0xb7, 0x27, 0xf1, 0xad, 0xe3, 0xc4, 0x50, 0xeb, - 0x4d, 0xfe, 0x7, 0x44, 0x78, 0x87, 0xe, 0xf7, 0x4c, 0xfb, - 0xbc, 0x3a, 0x9e, 0x8c, 0xf, 0xe3, 0x4b, 0x90, 0x7b, 0xd7, - 0xc3, 0xf6, 0xff, 00, 0x1f, 0x35, 0xc8, 0xb1, 0xba, 0x47, - 0x6f, 0xf8, 0x15, 0x6a, 0x5b, 0xfe, 0xd2, 0x1a, 0xc4, 0x3d, - 0x4b, 0xff, 00, 0xdf, 0x55, 0xd1, 0x1e, 0x21, 0xc3, 0xbd, - 0xe2, 0xd1, 0xd1, 0x1c, 0xfb, 0x8, 0xfa, 0x9f, 0x66, 0xd1, - 0x5f, 0x22, 0xdb, 0x7e, 0xd3, 0xba, 0x8a, 0xe3, 0xcc, 0x32, - 0x1f, 0x6c, 0xd6, 0xad, 0xbf, 0xed, 0x4d, 0x38, 0xc6, 0xe0, - 0xdf, 0x8e, 0x2b, 0x68, 0xe7, 0xd8, 0x37, 0xbb, 0x6b, 0xe4, - 0x6f, 0x1c, 0xe7, 0x7, 0x2f, 0xb4, 0x7d, 0x4b, 0x45, 0x7c, - 0xdf, 0x6b, 0xfb, 0x52, 0x46, 0x71, 0xe6, 0x7e, 0xa2, 0xb5, - 0x2d, 0xff, 00, 0x69, 0xfb, 0x17, 0xc0, 0x65, 0x5f, 0xa9, - 0xad, 0xe3, 0x9d, 0x60, 0xa5, 0xf6, 0xce, 0x88, 0xe6, 0x78, - 0x59, 0x6d, 0x33, 0xdf, 0x28, 0xaf, 0x18, 0xb7, 0xfd, 0xa4, - 0x74, 0x87, 0xc6, 0xf3, 0x18, 0xff, 00, 0x81, 0x56, 0x9d, - 0xbf, 0xed, 0x3, 0xa1, 0xcd, 0x8e, 0x57, 0xfe, 0xfb, 0xae, - 0x88, 0xe6, 0x78, 0x39, 0x6d, 0x51, 0x1b, 0xac, 0x6e, 0x1e, - 0x5b, 0x4d, 0x1e, 0xa9, 0x45, 0x79, 0xec, 0x1f, 0x1a, 0xf4, - 0x9, 0x40, 0xcc, 0xa0, 0x7f, 0xc0, 0x85, 0x5f, 0x83, 0xe2, - 0xc6, 0x83, 0x39, 0xe2, 0xe3, 0x1f, 0x88, 0xae, 0x85, 0x8c, - 0xc3, 0xcb, 0x69, 0xa3, 0x55, 0x88, 0xa4, 0xf6, 0x92, 0x3b, - 0x3a, 0x2b, 0x9a, 0x8f, 0xe2, 0x16, 0x87, 0x27, 0xfc, 0xbe, - 0x28, 0xfc, 0x6a, 0xdc, 0x5e, 0x32, 0xd2, 0x26, 0x3f, 0x2d, - 0xec, 0x7f, 0x9d, 0x6c, 0xab, 0x52, 0x7b, 0x49, 0x1a, 0x2a, - 0x90, 0x7d, 0x4d, 0xaa, 0x2b, 0x39, 0x3c, 0x41, 0xa7, 0x3f, - 0x4b, 0xc8, 0xbf, 0xef, 0xaa, 0x9d, 0x35, 0x4b, 0x49, 0x3e, - 0xed, 0xcc, 0x67, 0xfe, 0x4, 0x2a, 0xd4, 0xe2, 0xf6, 0x65, - 0x73, 0x27, 0xd4, 0xb5, 0x55, 0xb5, 0x27, 0xf2, 0xac, 0x2e, - 0x1b, 0xd1, 0x9, 0xfd, 0x2a, 0x41, 0x73, 0xb, 0x74, 0x95, - 0xf, 0xfc, 0x8, 0x56, 0x4f, 0x8b, 0xb5, 0x58, 0x34, 0xef, - 0xf, 0x5e, 0xcd, 0x24, 0xaa, 0x2, 0xc6, 0x7f, 0x88, 0x52, - 0x9c, 0x92, 0x8b, 0x62, 0x94, 0x92, 0x8b, 0x67, 0xc3, 0xff, - 00, 0x18, 0xef, 0x47, 0xf6, 0xe4, 0xc4, 0x9f, 0xe2, 0x3f, - 0xce, 0xbe, 0x6a, 0xf8, 0x9d, 0xe2, 0x25, 0x8a, 0xdd, 0xe2, - 0x57, 0xc1, 0xc1, 0xef, 0x5e, 0xa7, 0xf1, 0xaf, 0xc6, 0xf0, - 0x7f, 0x69, 0x5c, 0x4a, 0xae, 0x32, 0x58, 0xe0, 0x66, 0xbe, - 0x67, 0xbe, 0x87, 0x53, 0xf8, 0x83, 0xe2, 0x5b, 0x1d, 0x13, - 0x4b, 0x89, 0xee, 0x75, 0x2d, 0x4a, 0xe1, 0x6d, 0xad, 0xe2, - 0x5e, 0x4b, 0x33, 0x1c, 0xa, 0xf8, 0x3c, 0xbf, 0xc, 0xe5, - 0x39, 0x56, 0x7d, 0x5b, 0xb1, 0xf8, 0x9d, 0x78, 0x4b, 0x33, - 0xcc, 0xb9, 0x21, 0xf0, 0xa6, 0x7e, 0x80, 0x7f, 0xc1, 0x2d, - 0xbc, 0x19, 0x36, 0x97, 0xf0, 0xa3, 0xc5, 0x3e, 0x28, 0xb8, - 0x8c, 0xab, 0x6b, 0xda, 0xb6, 0xd8, 0x58, 0xff, 00, 0x14, - 0x30, 0x26, 0xc0, 0x7f, 0xef, 0xb6, 0x93, 0xf2, 0xaf, 0xb5, - 0x6b, 0x88, 0xf8, 0x27, 0xf0, 0xda, 0xdf, 0xe1, 0xf, 0xc2, - 0x9f, 0xc, 0xf8, 0x42, 0xdc, 0xab, 0x8d, 0x2e, 0xcd, 0x22, - 0x92, 0x45, 0x18, 0xf3, 0x25, 0x3f, 0x34, 0x8d, 0xf8, 0xb1, - 0x63, 0x5d, 0xbd, 0x7d, 0xec, 0x23, 0xcb, 0x14, 0x8f, 0xda, - 0x68, 0xc3, 0xd9, 0x53, 0x8c, 0x3b, 0x20, 0xa2, 0x8a, 0x2a, - 0xcd, 0x82, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0xa3, 0x92, - 0xde, 0x29, 0x86, 0x24, 0x89, 0x1c, 0x7f, 0xb4, 0xa0, 0xd4, - 0x94, 0x51, 0xb8, 0x19, 0x97, 0x3e, 0x19, 0xd1, 0xef, 0x41, - 0x17, 0x1a, 0x55, 0x94, 0xc0, 0xf6, 0x92, 0xdd, 0xf, 0xf3, - 0x15, 0x97, 0x75, 0xf0, 0xcb, 0xc2, 0x77, 0x83, 0x12, 0xf8, - 0x7b, 0x4f, 0x3f, 0xee, 0xc0, 0xab, 0xfc, 0xb1, 0x5d, 0x3d, - 0x15, 0x9b, 0xa7, 0x9, 0x6f, 0x14, 0x64, 0xe9, 0x53, 0x97, - 0xc5, 0x14, 0xfe, 0x47, 0x5, 0x75, 0xf0, 0x2b, 0xc0, 0xd7, - 0x9f, 0x7f, 0x40, 0x85, 0x7f, 0xdc, 0x91, 0xd7, 0xf9, 0x35, - 0x64, 0xdc, 0x7e, 0xcd, 0x1e, 0x2, 0xb8, 0x24, 0xff, 00, - 0x65, 0xcb, 0x1e, 0x7b, 0x24, 0xed, 0xfd, 0x73, 0x5e, 0xa7, - 0x45, 0x62, 0xf0, 0xb4, 0x1e, 0xf0, 0x5f, 0x71, 0x83, 0xc1, - 0xe1, 0xa5, 0xbd, 0x35, 0xf7, 0x23, 0xc5, 0xae, 0x7f, 0x64, - 0xbf, 0x3, 0x5c, 0x64, 0xa8, 0xbe, 0x8b, 0x3d, 0x2, 0xca, - 0xa4, 0xf, 0xcd, 0x6b, 0x16, 0xeb, 0xf6, 0x32, 0xf0, 0xb4, - 0xa1, 0xbc, 0xad, 0x46, 0xee, 0x33, 0xdb, 0x72, 0x29, 0xff, - 00, 0xa, 0xfa, 0xe, 0x8a, 0xcd, 0xe0, 0x70, 0xef, 0xec, - 0x19, 0x3c, 0xbb, 0x8, 0xff, 00, 0xe5, 0xda, 0x3e, 0x61, - 0xbb, 0xfd, 0x88, 0xb4, 0xe7, 0x53, 0xe4, 0xeb, 0x99, 0x3d, - 0x83, 0xdb, 0x60, 0x7f, 0xe8, 0x55, 0xcf, 0xdf, 0x7e, 0xc3, - 0x77, 0x27, 0xfd, 0x46, 0xa5, 0x63, 0x2f, 0xfb, 0xe1, 0x97, - 0xff, 00, 0x65, 0x35, 0xf5, 0xf5, 0x15, 0x93, 0xcb, 0xb0, - 0xef, 0x64, 0xd7, 0xcd, 0x98, 0xbc, 0xab, 0x8, 0xfe, 0xcd, - 0xbe, 0x6c, 0xf8, 0x92, 0xf7, 0xf6, 0x18, 0xd6, 0xb9, 0xf2, - 0xdb, 0x4e, 0x97, 0xfd, 0xd9, 0x48, 0xfe, 0x6a, 0x2b, 0x6, - 0xfb, 0xf6, 0x1e, 0xf1, 0x2c, 0x64, 0xec, 0xd3, 0xad, 0xa6, - 0xf7, 0x4b, 0x84, 0xfe, 0xa4, 0x57, 0xdf, 0x34, 0x54, 0x3c, - 0xb2, 0x8f, 0x46, 0xfe, 0xf3, 0x7, 0x93, 0x61, 0x9f, 0x57, - 0xf7, 0xff, 00, 0xc0, 0x3f, 0x39, 0xaf, 0x7f, 0x63, 0x1f, - 0x15, 0xdb, 0x92, 0x3f, 0xb0, 0x65, 0x6f, 0xfa, 0xe7, 0x22, - 0xb7, 0xf2, 0x26, 0xb0, 0x2f, 0x7f, 0x65, 0xf, 0x14, 0x5a, - 0x12, 0xe, 0x83, 0xa8, 0xae, 0x3f, 0xbb, 0x13, 0x37, 0xf2, - 0x15, 0xfa, 0x71, 0x45, 0x43, 0xcb, 0x23, 0xd2, 0x6c, 0xc2, - 0x59, 0x15, 0x7, 0xb4, 0x9f, 0xe1, 0xfe, 0x47, 0xe5, 0x3d, - 0xef, 0xec, 0xfd, 0xad, 0xd9, 0x13, 0xe6, 0x59, 0x5e, 0xc3, - 0xfe, 0xfa, 0x11, 0xfc, 0xc5, 0x64, 0x4f, 0xf0, 0x8f, 0x56, - 0xb7, 0x24, 0x3, 0x32, 0xff, 00, 0xbc, 0x2b, 0xf5, 0xb8, - 0xa8, 0x3d, 0x40, 0x35, 0xc, 0x96, 0x16, 0xd3, 0xc, 0x49, - 0x6f, 0x14, 0x83, 0xfd, 0xa4, 0x6, 0xb3, 0x79, 0x6c, 0xfa, - 0x54, 0xfc, 0x3f, 0xe0, 0x9c, 0x92, 0xe1, 0xda, 0x72, 0xfb, - 0x4b, 0xff, 00, 0x1, 0xff, 00, 0x82, 0x7e, 0x45, 0xc9, - 0xf0, 0xeb, 0x5a, 0x83, 0xa4, 0x8f, 0xf8, 0xa9, 0xaa, 0xcf, - 0xe1, 0x1d, 0x7e, 0x1e, 0x8f, 0xf9, 0xe4, 0x57, 0xeb, 0x7c, - 0xfe, 0x15, 0xd1, 0x6e, 0xbf, 0xd7, 0x69, 0x16, 0x32, 0xff, - 00, 0xbf, 0x6c, 0x87, 0xfa, 0x56, 0x65, 0xcf, 0xc3, 0xf, - 0x9, 0x5d, 0xff, 00, 0xad, 0xf0, 0xee, 0x9c, 0x7d, 0xc5, - 0xba, 0xaf, 0xf2, 0xa8, 0x79, 0x75, 0x6e, 0x93, 0x4f, 0xe4, - 0x72, 0x4f, 0x86, 0x29, 0xbd, 0xb9, 0x7e, 0xe3, 0xf2, 0x7c, - 0xe9, 0x3e, 0x22, 0x83, 0xa7, 0x3f, 0xf0, 0x23, 0x4d, 0xff, - 00, 0x8a, 0x8a, 0x1f, 0xf9, 0x66, 0x5b, 0x1e, 0xf5, 0xfa, - 0x9b, 0x75, 0xf0, 0x2b, 0xc0, 0xb7, 0x79, 0xdf, 0xe1, 0xeb, - 0x75, 0xcf, 0xfc, 0xf3, 0x77, 0x5f, 0xe4, 0x6b, 0x26, 0xe7, - 0xf6, 0x67, 0xf0, 0x5, 0xc0, 0x23, 0xfb, 0x2a, 0x48, 0xb3, - 0xdd, 0x27, 0x6f, 0xeb, 0x9a, 0xc9, 0xe5, 0xf5, 0xff, 00, - 0xba, 0xff, 00, 0xaf, 0x43, 0x8e, 0x7c, 0x29, 0x17, 0xf6, - 0x63, 0xf7, 0xbf, 0xf2, 0x3f, 0x32, 0x3f, 0xb5, 0xb5, 0xc8, - 0x4f, 0xcd, 0x6e, 0xe7, 0xf0, 0xcd, 0x28, 0xf1, 0x46, 0xab, - 0x17, 0xdf, 0xb7, 0x7f, 0xfb, 0xe6, 0xbf, 0x48, 0x2e, 0xff, - 00, 0x64, 0xbf, 0x2, 0xdc, 0x8f, 0x91, 0x2f, 0x61, 0xff, - 00, 0x76, 0x55, 0x3f, 0xcd, 0x6b, 0x1e, 0xf3, 0xf6, 0x33, - 0xf0, 0xa4, 0xc3, 0xf7, 0x1a, 0x85, 0xe4, 0x47, 0xfd, 0xb5, - 0x56, 0xff, 00, 0xa, 0xc9, 0xe0, 0x2b, 0x7f, 0x22, 0x67, - 0x24, 0xb8, 0x51, 0xad, 0xa1, 0xf7, 0x48, 0xfc, 0xfa, 0x5f, - 0x1c, 0x5d, 0xc7, 0xf7, 0xe1, 0x61, 0xff, 00, 0x1, 0x35, - 0x32, 0x7c, 0x41, 0x71, 0xf7, 0x90, 0x8f, 0xce, 0xbe, 0xe2, - 0xbd, 0xfd, 0x88, 0x74, 0xc9, 0x3f, 0xe3, 0xdf, 0x5b, 0xc0, - 0xff, 00, 0xa6, 0x96, 0xdf, 0xe0, 0xd5, 0x81, 0x79, 0xfb, - 0xc, 0x4e, 0xcc, 0x7c, 0x9d, 0x52, 0xc5, 0xd7, 0xb6, 0xf5, - 0x65, 0x3f, 0xfa, 0x9, 0xac, 0x1e, 0x2, 0xa7, 0x5a, 0x5f, - 0x91, 0xcb, 0x2e, 0x17, 0xab, 0x1d, 0xa3, 0x2f, 0xbd, 0x7f, - 0x99, 0xf2, 0x24, 0x7f, 0x11, 0x13, 0xbe, 0x6a, 0xd4, 0x7f, - 0x10, 0xa0, 0x38, 0xcb, 0x11, 0x5f, 0x4a, 0x5d, 0xfe, 0xc2, - 0xfa, 0xcf, 0x3e, 0x5b, 0xe9, 0xb2, 0xe, 0xd8, 0x90, 0x8f, - 0xe6, 0xb5, 0x83, 0x79, 0xfb, 0xe, 0xf8, 0x99, 0x41, 0x29, - 0xa7, 0xdb, 0x49, 0xfe, 0xe5, 0xc2, 0xf, 0xeb, 0x58, 0x3c, - 0xf, 0x7a, 0x4c, 0xe6, 0x97, 0xe, 0xe2, 0x23, 0xb7, 0x3f, - 0xdd, 0x73, 0xc4, 0xa3, 0xf1, 0xed, 0xb3, 0x7f, 0xcb, 0x4f, - 0xd2, 0xac, 0xc7, 0xe3, 0x7b, 0x66, 0xff, 00, 0x96, 0xa2, - 0xbd, 0x16, 0xf7, 0xf6, 0x2e, 0xf1, 0x64, 0xa, 0xcd, 0xfd, - 0x83, 0x23, 0x1, 0xff, 00, 0x3c, 0xe5, 0x56, 0xfd, 0x3, - 0x57, 0x3f, 0x7d, 0xfb, 0x28, 0x78, 0xa6, 0xd0, 0x16, 0x7d, - 0x3, 0x51, 0x50, 0x3b, 0xac, 0x4c, 0x7f, 0xa5, 0x60, 0xf0, - 0x54, 0xd6, 0xf0, 0x6b, 0xe4, 0x73, 0xcb, 0x25, 0xc5, 0xc3, - 0xed, 0xc9, 0x7a, 0xa6, 0x61, 0x27, 0x8c, 0x2d, 0x5b, 0xfe, - 0x5a, 0xad, 0x58, 0x4f, 0x14, 0x5b, 0x3f, 0xfc, 0xb4, 0x5f, - 0xce, 0xaa, 0x5f, 0x7e, 0xcf, 0xda, 0xe5, 0x8e, 0x7c, 0xdb, - 0x1b, 0xf8, 0xf, 0xfb, 0x71, 0xb0, 0xfe, 0x62, 0xb2, 0x27, - 0xf8, 0x47, 0xaa, 0xdb, 0xe7, 0x99, 0xd7, 0xea, 0xb5, 0x83, - 0xc2, 0x50, 0xf4, 0x39, 0xde, 0x5f, 0x8b, 0x8f, 0xfc, 0xbc, - 0x5f, 0x34, 0x75, 0x2b, 0xaf, 0xdb, 0xb7, 0xf1, 0x8f, 0xce, - 0xa5, 0x5d, 0x62, 0x16, 0xee, 0x2b, 0x83, 0x93, 0xe1, 0xd6, - 0xb3, 0xf, 0xdd, 0x95, 0xc7, 0xd5, 0x6a, 0xbb, 0xf8, 0x3f, - 0x5e, 0x83, 0xa4, 0x9f, 0xce, 0xb3, 0xfa, 0x95, 0x17, 0xb4, - 0x88, 0xfa, 0xae, 0x35, 0x6d, 0x28, 0xb3, 0xd2, 0x6, 0xa9, - 0x9, 0xfe, 0x2a, 0x78, 0xbf, 0x84, 0xff, 00, 0x10, 0xaf, - 0x2f, 0x3a, 0x37, 0x88, 0x61, 0xe8, 0x73, 0xff, 00, 0x2, - 0xa6, 0x95, 0xf1, 0xc, 0x3d, 0x50, 0x9f, 0xa3, 0x54, 0xbc, - 0xbe, 0x1d, 0x24, 0x4f, 0xb1, 0xc7, 0x2f, 0xb2, 0x9f, 0xcc, - 0xf5, 0x51, 0x77, 0x11, 0xfe, 0x2a, 0x70, 0x9e, 0x33, 0xfc, - 0x55, 0xe5, 0x3, 0x52, 0xd7, 0xa1, 0xfb, 0xd0, 0x39, 0xa7, - 0x7f, 0xc2, 0x4d, 0xaa, 0xc5, 0xf7, 0xe0, 0x93, 0xfe, 0xf9, - 0xa9, 0x79, 0x77, 0x69, 0x12, 0xd6, 0x32, 0x3b, 0xd2, 0x3d, - 0x58, 0x4c, 0xbd, 0x9a, 0x9e, 0xb3, 0x11, 0xd2, 0x43, 0xf9, - 0xd7, 0x94, 0x2f, 0x8d, 0x6f, 0x53, 0xef, 0x42, 0xff, 00, - 0x8a, 0x9a, 0x95, 0x3e, 0x20, 0x4a, 0xbf, 0x79, 0x18, 0x7e, - 0x6, 0xb3, 0x79, 0x6c, 0xfa, 0x32, 0x7d, 0xae, 0x22, 0x3b, - 0xd2, 0x67, 0xaa, 0xad, 0xd4, 0x8b, 0xd2, 0x56, 0x1f, 0x8d, - 0x4c, 0x9a, 0xa5, 0xda, 0x7d, 0xdb, 0x89, 0x7, 0xd1, 0xab, - 0xcb, 0x23, 0xf8, 0x88, 0xbd, 0xc1, 0x15, 0x66, 0x3f, 0x88, - 0x50, 0x9e, 0xac, 0x6b, 0x37, 0x97, 0x55, 0x5d, 0x3, 0xeb, - 0xb5, 0x23, 0xbc, 0x64, 0x8f, 0x51, 0x8f, 0xc4, 0x3a, 0x8c, - 0x47, 0x2b, 0x75, 0x27, 0xfd, 0xf4, 0x6a, 0xdc, 0x5e, 0x33, - 0xd6, 0x22, 0xfb, 0xb7, 0x8e, 0x3f, 0x1a, 0xf2, 0xd8, 0xfc, - 0x7d, 0x6e, 0x7f, 0x8c, 0xd4, 0xeb, 0xe3, 0xab, 0x6c, 0x64, - 0xcb, 0x8a, 0xcf, 0xea, 0x35, 0xa3, 0xb2, 0x34, 0x59, 0xa4, - 0xa3, 0xd6, 0x4b, 0xef, 0x3d, 0x56, 0x1f, 0x88, 0x9a, 0xe4, - 0x3d, 0x2e, 0xd8, 0xfd, 0x4d, 0x5e, 0x8f, 0xe2, 0xe6, 0xbd, - 0x7, 0xfc, 0xbc, 0xd7, 0x8b, 0x5c, 0x7c, 0x42, 0xb4, 0x88, - 0x1f, 0xde, 0xd6, 0x16, 0xa7, 0xf1, 0x4e, 0xde, 0x30, 0x76, - 0x36, 0xe3, 0x5d, 0x14, 0xf0, 0x78, 0xa7, 0xb3, 0x6b, 0xe6, - 0xcd, 0x16, 0x73, 0x5f, 0x6a, 0x6e, 0x4c, 0xfa, 0x2f, 0xfe, - 0x17, 0xe6, 0xb1, 0x62, 0x32, 0xd3, 0xee, 0x23, 0xde, 0xb8, - 0x5f, 0x88, 0x3f, 0xb4, 0xad, 0xfd, 0xed, 0x94, 0xd0, 0xbd, - 0xe3, 0x7c, 0xc3, 0x5, 0x1, 0xe2, 0xbe, 0x7b, 0xd6, 0x7e, - 0x22, 0xde, 0x5f, 0x16, 0x58, 0x89, 0x55, 0x35, 0x99, 0xe1, - 0xdf, 0xb, 0xf8, 0x87, 0xe2, 0x26, 0xbb, 0x6f, 0xa5, 0xe8, - 0xd6, 0x17, 0x3a, 0xae, 0xa3, 0x70, 0xdb, 0x63, 0x82, 0x4, - 0x2c, 0x4f, 0xf8, 0x1, 0xea, 0x78, 0x15, 0xed, 0xd0, 0xc0, - 0xd4, 0x4a, 0xd5, 0x66, 0xdf, 0x95, 0xcd, 0xe3, 0x8b, 0xcc, - 0x71, 0x5e, 0xe5, 0x49, 0xf2, 0xc5, 0xf4, 0xea, 0xc8, 0x7c, - 0x53, 0xe2, 0xcb, 0x9f, 0x10, 0x5d, 0x33, 0xb3, 0x33, 0x64, - 0xf0, 0x7, 0x7a, 0xfb, 0xf3, 0xf6, 0x15, 0xfd, 0x91, 0x66, - 0xf0, 0x1a, 0x45, 0xf1, 0xf, 0xc6, 0x76, 0x5e, 0x5f, 0x88, - 0xee, 0x13, 0x3a, 0x5d, 0x94, 0x87, 0x26, 0xce, 0x26, 0x5e, - 0x64, 0x71, 0xda, 0x46, 0x7, 0xa7, 0xf0, 0x8f, 0x73, 0xc6, - 0xcf, 0xec, 0xb3, 0xfb, 0xb, 0xe9, 0xff, 00, 0xc, 0x65, - 0xb7, 0xf1, 0x37, 0x8d, 0xd2, 0xdf, 0x57, 0xf1, 0x3a, 0x10, - 0xf6, 0xd6, 0x6a, 0x7c, 0xcb, 0x7b, 0x2e, 0x3a, 0x9c, 0x8c, - 0x3c, 0x9e, 0xfd, 0x7, 0x6c, 0xf5, 0xaf, 0xae, 0xab, 0xe9, - 0xf0, 0xf8, 0x75, 0x4, 0x9b, 0x5e, 0x88, 0xfd, 0xf, 0x26, - 0xca, 0x56, 0x12, 0x2a, 0xa5, 0x45, 0x67, 0xd1, 0x7f, 0x9f, - 0x98, 0x51, 0x45, 0x15, 0xe8, 0x1f, 0x58, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x21, 00, 0xf5, 0xa8, 0xa5, 0xb3, 0xb7, - 0x9b, 0xfd, 0x64, 0x11, 0xc9, 0xfe, 0xf2, 0x3, 0x45, 0x14, - 0xad, 0x71, 0x5a, 0xe5, 0x19, 0xfc, 0x2d, 0xa3, 0x5c, 0x92, - 0x66, 0xd2, 0x2c, 0x65, 0x27, 0xbb, 0xdb, 0x21, 0xfe, 0x95, - 0x9b, 0x71, 0xf0, 0xcf, 0xc2, 0x77, 0x44, 0x99, 0x7c, 0x3b, - 0xa6, 0xb1, 0x3f, 0xf4, 0xec, 0xa3, 0xf9, 0xa, 0x28, 0xa8, - 0x74, 0xe0, 0xf7, 0x8a, 0x33, 0x74, 0xa9, 0xcb, 0x78, 0xaf, - 0xb8, 0xc7, 0xbb, 0xf8, 0x13, 0xe0, 0x5b, 0xdc, 0xef, 0xf0, - 0xfd, 0xba, 0x93, 0xde, 0x36, 0x65, 0xfe, 0x46, 0xb1, 0xee, - 0xff, 00, 0x66, 0x4f, 0x1, 0x5d, 0x74, 0xd3, 0xa5, 0x87, - 0xfe, 0xb9, 0xcc, 0x7f, 0xae, 0x68, 0xa2, 0xb1, 0x78, 0x5a, - 0xf, 0x78, 0x2f, 0xb8, 0xc2, 0x58, 0x3c, 0x34, 0xb7, 0xa6, - 0xbe, 0xe4, 0x63, 0x5d, 0x7e, 0xc8, 0xbe, 0xa, 0x9f, 0xee, - 0x49, 0x7d, 0x17, 0xb0, 0x74, 0x3f, 0xfb, 0x2d, 0x64, 0x5d, - 0x7e, 0xc6, 0x1e, 0x19, 0x97, 0x3e, 0x4e, 0xa9, 0x77, 0x17, - 0xfb, 0xd1, 0xab, 0x7f, 0x85, 0x14, 0x56, 0x6f, 0x3, 0x86, - 0x7f, 0x60, 0xc5, 0xe5, 0xd8, 0x47, 0xff, 00, 0x2e, 0xd1, - 0x8b, 0x7b, 0xfb, 0x10, 0x69, 0xd2, 0x3, 0xe4, 0x6b, 0xdc, - 0xf6, 0x12, 0x5a, 0xff, 00, 0x83, 0x56, 0xd, 0xf7, 0xec, - 0x31, 0x71, 0x83, 0xf6, 0x7d, 0x5a, 0xca, 0x53, 0xd8, 0x49, - 0x1b, 0x2f, 0xf4, 0x34, 0x51, 0x59, 0xbc, 0xbb, 0xe, 0xf6, - 0x56, 0xf9, 0xb3, 0x27, 0x95, 0x61, 0x1f, 0xd9, 0xb7, 0xcd, - 0x98, 0x17, 0xdf, 0xb0, 0xce, 0xb8, 0xa0, 0xf9, 0x6d, 0xa7, - 0x4f, 0xec, 0xb2, 0x63, 0xf9, 0xa8, 0xae, 0x7e, 0xff, 00, - 0xf6, 0x24, 0xf1, 0x44, 0x59, 0xd9, 0xa5, 0xc1, 0x37, 0xbc, - 0x73, 0x47, 0xfd, 0x5a, 0x8a, 0x2b, 0x29, 0x65, 0xb4, 0xba, - 0x37, 0xf7, 0xff, 00, 0xc0, 0x39, 0xe5, 0x93, 0x61, 0xba, - 0x37, 0xf7, 0xff, 00, 0xc0, 0x30, 0x2f, 0x3f, 0x63, 0x6f, - 0x16, 0x43, 0xff, 00, 0x32, 0xfc, 0xed, 0xff, 00, 0x5c, - 0xd9, 0x5b, 0xf9, 0x1a, 0xc1, 0xbf, 0xfd, 0x94, 0x3c, 0x55, - 0x6d, 0x90, 0x7c, 0x3f, 0xa9, 0x8f, 0x75, 0x85, 0x98, 0x7e, - 0x82, 0x8a, 0x2b, 0x86, 0xa6, 0x16, 0x34, 0xf6, 0x93, 0xfe, - 0xbe, 0x47, 0x97, 0x5f, 0x2c, 0xa3, 0x4d, 0x68, 0xdf, 0xe1, - 0xfe, 0x46, 0xb, 0x7e, 0xcc, 0x1e, 0x23, 0xb9, 0x9f, 0xcb, - 0x5d, 0x1e, 0xfc, 0xbe, 0x7a, 0x1b, 0x77, 0x3f, 0xd2, 0xb4, - 0x34, 0xff, 00, 0xd8, 0x8f, 0xc7, 0x7a, 0xc4, 0xaa, 0xb0, - 0xe8, 0x57, 0x10, 0x8c, 0xfd, 0xfb, 0x8c, 0x44, 0xb8, 0xf5, - 0xf9, 0x88, 0xa2, 0x8a, 0x58, 0x7a, 0x4e, 0xa4, 0xac, 0xe4, - 0xff, 00, 0xf, 0xf2, 0x38, 0x68, 0x65, 0x54, 0x31, 0x4e, - 0xd3, 0x6d, 0x7a, 0x5b, 0xfc, 0x8f, 0x62, 0xf8, 0x79, 0xff, - 00, 0x4, 0xdc, 0x88, 0x3a, 0x5c, 0x78, 0xc3, 0x5c, 0x8, - 0xa0, 0x83, 0xf6, 0x3d, 0x34, 0x6e, 0x63, 0xec, 0x64, 0x61, - 0x81, 0xf8, 0x3, 0xf5, 0xaf, 0xae, 0x3e, 0x1d, 0xfc, 0x27, - 0xf0, 0xaf, 0xc2, 0xad, 0x29, 0x6c, 0x3c, 0x33, 0xa3, 0xdb, - 0xe9, 0xc9, 0x8c, 0x3c, 0xca, 0xbb, 0xa6, 0x97, 0xdd, 0xdc, - 0xf2, 0x68, 0xa2, 0xbe, 0x82, 0x14, 0x61, 0x4f, 0x6d, 0xcf, - 0xac, 0xc1, 0xe5, 0x98, 0x5c, 0xe, 0xb4, 0x61, 0xaf, 0x77, - 0xab, 0xfb, 0xff, 00, 0xc8, 0xeb, 0xa8, 0xa2, 0x8a, 0xd8, - 0xf5, 0x42, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0xf, - 0xff, 0xd9, 0}; - -static const char data_runtime_shtml[] = { - /* /runtime.shtml */ - 0x2f, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x20, 0x6f, 0x6e, 0x4c, 0x6f, 0x61, 0x64, - 0x3d, 0x22, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x73, - 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x28, - 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x6c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x68, 0x72, 0x65, 0x66, 0x3d, - 0x27, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x73, - 0x68, 0x74, 0x6d, 0x6c, 0x27, 0x26, 0x71, 0x75, 0x6f, 0x74, - 0x3b, 0x2c, 0x32, 0x30, 0x30, 0x30, 0x29, 0x22, 0x3e, 0xd, - 0xa, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, - 0x65, 0x3d, 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x3e, - 0xd, 0xa, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, - 0x22, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, - 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x53, - 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x72, 0x75, 0x6e, - 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x52, 0x75, 0x6e, 0x20, 0x54, 0x69, 0x6d, 0x65, - 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, - 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x73, - 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x54, 0x43, 0x50, 0x20, 0x53, 0x74, 0x61, 0x74, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, - 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61, 0x3e, - 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, - 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, - 0x66, 0x72, 0x65, 0x65, 0x72, 0x74, 0x6f, 0x73, 0x2e, 0x6f, - 0x72, 0x67, 0x2f, 0x22, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, - 0x54, 0x4f, 0x53, 0x20, 0x48, 0x6f, 0x6d, 0x65, 0x70, 0x61, - 0x67, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6f, 0x2e, 0x73, 0x68, - 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x49, 0x4f, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x6c, 0x6f, 0x67, 0x6f, 0x2e, 0x6a, 0x70, 0x67, 0x22, 0x3e, - 0x33, 0x37, 0x4b, 0x20, 0x6a, 0x70, 0x67, 0x3c, 0x2f, 0x61, - 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, - 0xd, 0xa, 0x3c, 0x68, 0x72, 0x3e, 0xd, 0xa, 0x3c, 0x62, - 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x32, - 0x3e, 0x52, 0x75, 0x6e, 0x2d, 0x74, 0x69, 0x6d, 0x65, 0x20, - 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, - 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0xd, 0xa, 0x50, 0x61, 0x67, - 0x65, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x72, 0x65, 0x66, - 0x72, 0x65, 0x73, 0x68, 0x20, 0x65, 0x76, 0x65, 0x72, 0x79, - 0x20, 0x32, 0x20, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, - 0x2e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x6e, - 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x63, 0x6f, - 0x75, 0x72, 0x69, 0x65, 0x72, 0x22, 0x3e, 0x3c, 0x70, 0x72, - 0x65, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x41, 0x62, - 0x73, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x25, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x3c, 0x62, - 0x72, 0x3e, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x3c, 0x62, 0x72, 0x3e, 0xd, 0xa, 0x25, 0x21, - 0x20, 0x72, 0x75, 0x6e, 0x2d, 0x74, 0x69, 0x6d, 0x65, 0xd, - 0xa, 0x3c, 0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, - 0x6f, 0x6e, 0x74, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, - 0x6e, 0x74, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, - 0x79, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, - 0x3e, 0xd, 0xa, 0xd, 0xa, 0}; - -static const char data_stats_shtml[] = { - /* /stats.shtml */ - 0x2f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x6e, - 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, - 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x61, 0x20, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, - 0x61, 0x73, 0x6b, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x52, 0x75, 0x6e, - 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, 0x74, 0x61, 0x74, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x43, 0x50, - 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, - 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, - 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, 0x65, 0x65, 0x72, - 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x22, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x20, 0x48, - 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, - 0x6a, 0x70, 0x67, 0x22, 0x3e, 0x33, 0x37, 0x4b, 0x20, 0x6a, - 0x70, 0x67, 0x3c, 0x2f, 0x61, 0x3e, 0xd, 0xa, 0x3c, 0x62, - 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x72, - 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, - 0xd, 0xa, 0x3c, 0x68, 0x32, 0x3e, 0x4e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, - 0x74, 0x69, 0x63, 0x73, 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0xd, - 0xa, 0x3c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x77, 0x69, - 0x64, 0x74, 0x68, 0x3d, 0x22, 0x33, 0x30, 0x30, 0x22, 0x20, - 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x3d, 0x22, 0x30, 0x22, - 0x3e, 0xd, 0xa, 0x3c, 0x74, 0x72, 0x3e, 0x3c, 0x74, 0x64, - 0x20, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x3d, 0x22, 0x6c, 0x65, - 0x66, 0x74, 0x22, 0x3e, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, - 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x63, 0x6f, 0x75, 0x72, - 0x69, 0x65, 0x72, 0x22, 0x3e, 0x3c, 0x70, 0x72, 0x65, 0x3e, - 0xd, 0xa, 0x49, 0x50, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, - 0x74, 0x73, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, - 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, 0xd, 0xa, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x64, 0x65, - 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x44, 0x72, 0x6f, 0x70, - 0x70, 0x65, 0x64, 0xd, 0xa, 0x49, 0x50, 0x20, 0x65, 0x72, - 0x72, 0x6f, 0x72, 0x73, 0x20, 0x20, 0x20, 0x20, 0x49, 0x50, - 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, 0x6c, 0x65, 0x6e, 0x67, - 0x74, 0x68, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x49, 0x50, 0x20, - 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x2c, 0x20, 0x68, 0x69, - 0x67, 0x68, 0x20, 0x62, 0x79, 0x74, 0x65, 0xd, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x49, 0x50, 0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, - 0x68, 0x2c, 0x20, 0x6c, 0x6f, 0x77, 0x20, 0x62, 0x79, 0x74, - 0x65, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x49, 0x50, 0x20, 0x66, - 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0xd, 0xa, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, - 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0xd, 0xa, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x57, 0x72, 0x6f, 0x6e, 0x67, 0x20, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0xd, 0xa, 0x49, - 0x43, 0x4d, 0x50, 0x9, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, - 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x72, 0x65, 0x63, - 0x65, 0x69, 0x76, 0x65, 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x73, 0x65, - 0x6e, 0x74, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, - 0x6b, 0x65, 0x74, 0x73, 0x20, 0x64, 0x72, 0x6f, 0x70, 0x70, - 0x65, 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x54, 0x79, 0x70, - 0x65, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0xd, 0xa, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, - 0x6d, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0xd, 0xa, - 0x54, 0x43, 0x50, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, - 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0xd, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, 0xd, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x64, - 0x72, 0x6f, 0x70, 0x70, 0x65, 0x64, 0xd, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x20, - 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0xd, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x44, 0x61, 0x74, 0x61, 0x20, 0x70, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x73, 0x20, 0x77, 0x69, 0x74, 0x68, 0x6f, 0x75, - 0x74, 0x20, 0x41, 0x43, 0x4b, 0x73, 0xd, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x52, 0x65, 0x73, 0x65, 0x74, 0x73, 0xd, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x52, 0x65, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, - 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x61, 0xd, 0xa, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x53, 0x79, 0x6e, 0x20, 0x74, 0x6f, 0x20, - 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x64, 0x20, 0x70, 0x6f, 0x72, - 0x74, 0xd, 0xa, 0x55, 0x44, 0x50, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x73, 0x20, 0x64, 0x72, 0x6f, 0x70, 0x70, 0x65, - 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x73, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, - 0x65, 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, - 0x6b, 0x65, 0x74, 0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, 0xd, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x73, 0x20, 0x63, 0x68, 0x6b, 0x65, 0x72, 0x72, 0xd, 0xa, - 0x9, 0x20, 0x20, 0x20, 0x20, 0x20, 0x4e, 0x6f, 0x20, 0x63, - 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, - 0x61, 0x76, 0x61, 0x6c, 0x69, 0x61, 0x62, 0x6c, 0x65, 0xd, - 0xa, 0x3c, 0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, - 0x6f, 0x6e, 0x74, 0x3e, 0x3c, 0x2f, 0x74, 0x64, 0x3e, 0x3c, - 0x74, 0x64, 0x3e, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, - 0x61, 0x63, 0x65, 0x3d, 0x22, 0x63, 0x6f, 0x75, 0x72, 0x69, - 0x65, 0x72, 0x22, 0x3e, 0x3c, 0x70, 0x72, 0x65, 0x3e, 0x25, - 0x21, 0x20, 0x6e, 0x65, 0x74, 0x2d, 0x73, 0x74, 0x61, 0x74, - 0x73, 0xd, 0xa, 0x3c, 0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, - 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0x3c, 0x2f, 0x74, 0x64, - 0x3e, 0x3c, 0x2f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x3e, 0xd, - 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xd, 0xa, - 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xd, 0xa, 0x3c, - 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, 0xa, 0}; - -static const char data_tcp_shtml[] = { - /* /tcp.shtml */ - 0x2f, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x6e, - 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, - 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x61, 0x20, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, - 0x61, 0x73, 0x6b, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x52, 0x75, 0x6e, - 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, 0x74, 0x61, 0x74, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x43, 0x50, - 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, - 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, - 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, 0x65, 0x65, 0x72, - 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x22, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x20, 0x48, - 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, - 0x6a, 0x70, 0x67, 0x22, 0x3e, 0x33, 0x37, 0x4b, 0x20, 0x6a, - 0x70, 0x67, 0x3c, 0x2f, 0x61, 0x3e, 0xd, 0xa, 0x3c, 0x62, - 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x72, - 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0xd, 0xa, 0x3c, - 0x68, 0x32, 0x3e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, - 0x20, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0xd, 0xa, 0x3c, - 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x74, 0x61, 0x62, 0x6c, 0x65, - 0x3e, 0xd, 0xa, 0x3c, 0x74, 0x72, 0x3e, 0x3c, 0x74, 0x68, - 0x3e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x3c, 0x2f, 0x74, 0x68, - 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x52, 0x65, 0x6d, 0x6f, 0x74, - 0x65, 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, - 0x53, 0x74, 0x61, 0x74, 0x65, 0x3c, 0x2f, 0x74, 0x68, 0x3e, - 0x3c, 0x74, 0x68, 0x3e, 0x52, 0x65, 0x74, 0x72, 0x61, 0x6e, - 0x73, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x3c, - 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x54, 0x69, - 0x6d, 0x65, 0x72, 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, - 0x68, 0x3e, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x3c, 0x2f, 0x74, - 0x68, 0x3e, 0x3c, 0x2f, 0x74, 0x72, 0x3e, 0xd, 0xa, 0x25, - 0x21, 0x20, 0x74, 0x63, 0x70, 0x2d, 0x63, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0xd, 0xa, 0x3c, - 0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, - 0x74, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, - 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, - 0xd, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, - 0xa, 0xd, 0xa, 0}; - -const struct httpd_fsdata_file file_404_html[] = {{NULL, data_404_html, data_404_html + 10, sizeof(data_404_html) - 10}}; - -const struct httpd_fsdata_file file_index_html[] = {{file_404_html, data_index_html, data_index_html + 12, sizeof(data_index_html) - 12}}; - -const struct httpd_fsdata_file file_index_shtml[] = {{file_index_html, data_index_shtml, data_index_shtml + 13, sizeof(data_index_shtml) - 13}}; - -const struct httpd_fsdata_file file_io_shtml[] = {{file_index_shtml, data_io_shtml, data_io_shtml + 10, sizeof(data_io_shtml) - 10}}; - -const struct httpd_fsdata_file file_logo_jpg[] = {{file_io_shtml, data_logo_jpg, data_logo_jpg + 10, sizeof(data_logo_jpg) - 10}}; - -const struct httpd_fsdata_file file_runtime_shtml[] = {{file_logo_jpg, data_runtime_shtml, data_runtime_shtml + 15, sizeof(data_runtime_shtml) - 15}}; - -const struct httpd_fsdata_file file_stats_shtml[] = {{file_runtime_shtml, data_stats_shtml, data_stats_shtml + 13, sizeof(data_stats_shtml) - 13}}; - -const struct httpd_fsdata_file file_tcp_shtml[] = {{file_stats_shtml, data_tcp_shtml, data_tcp_shtml + 11, sizeof(data_tcp_shtml) - 11}}; - -#define HTTPD_FS_ROOT file_tcp_shtml - -#define HTTPD_FS_NUMFILES 8 diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/webserver/makefsdata b/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/webserver/makefsdata deleted file mode 100644 index a953cdd76..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/webserver/makefsdata +++ /dev/null @@ -1,79 +0,0 @@ -#!/usr/bin/perl - -open(OUTPUT, "> httpd-fsdata.c"); - -chdir("httpd-fs"); - -opendir(DIR, "."); -@files = grep { !/^\./ && !/(CVS|~)/ } readdir(DIR); -closedir(DIR); - -foreach $file (@files) { - - if(-d $file && $file !~ /^\./) { - print "Processing directory $file\n"; - opendir(DIR, $file); - @newfiles = grep { !/^\./ && !/(CVS|~)/ } readdir(DIR); - closedir(DIR); - printf "Adding files @newfiles\n"; - @files = (@files, map { $_ = "$file/$_" } @newfiles); - next; - } -} - -foreach $file (@files) { - if(-f $file) { - - print "Adding file $file\n"; - - open(FILE, $file) || die "Could not open file $file\n"; - binmode FILE; - - $file =~ s-^-/-; - $fvar = $file; - $fvar =~ s-/-_-g; - $fvar =~ s-\.-_-g; - # for AVR, add PROGMEM here - print(OUTPUT "static const char data".$fvar."[] = {\n"); - print(OUTPUT "\t/* $file */\n\t"); - for($j = 0; $j < length($file); $j++) { - printf(OUTPUT "%#02x, ", unpack("C", substr($file, $j, 1))); - } - printf(OUTPUT "0,\n"); - - - $i = 0; - while(read(FILE, $data, 1)) { - if($i == 0) { - print(OUTPUT "\t"); - } - printf(OUTPUT "%#02x, ", unpack("C", $data)); - $i++; - if($i == 10) { - print(OUTPUT "\n"); - $i = 0; - } - } - print(OUTPUT "0};\n\n"); - close(FILE); - push(@fvars, $fvar); - push(@pfiles, $file); - } -} - -for($i = 0; $i < @fvars; $i++) { - $file = $pfiles[$i]; - $fvar = $fvars[$i]; - - if($i == 0) { - $prevfile = "NULL"; - } else { - $prevfile = "file" . $fvars[$i - 1]; - } - print(OUTPUT "const struct httpd_fsdata_file file".$fvar."[] = {{$prevfile, data$fvar, "); - print(OUTPUT "data$fvar + ". (length($file) + 1) .", "); - print(OUTPUT "sizeof(data$fvar) - ". (length($file) + 1) ."}};\n\n"); -} - -print(OUTPUT "#define HTTPD_FS_ROOT file$fvars[$i - 1]\n\n"); -print(OUTPUT "#define HTTPD_FS_NUMFILES $i\n"); diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/webserver/phy.c b/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/webserver/phy.c deleted file mode 100644 index b074aae4d..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/webserver/phy.c +++ /dev/null @@ -1,474 +0,0 @@ -/****************************************************************************** -* DISCLAIMER - -* This software is supplied by Renesas Technology Corp. and is only -* intended for use with Renesas products. No other uses are authorized. - -* This software is owned by Renesas Technology Corp. and is protected under -* all applicable laws, including copyright laws. - -* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES -* REGARDING THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, -* INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A -* PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY -* DISCLAIMED. - -* TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS -* TECHNOLOGY CORP. NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE -* FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES -* FOR ANY REASON RELATED TO THE THIS SOFTWARE, EVEN IF RENESAS OR ITS -* AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - -* Renesas reserves the right, without notice, to make changes to this -* software and to discontinue the availability of this software. -* By using this software, you agree to the additional terms and -* conditions found by accessing the following link: -* http://www.renesas.com/disclaimer -****************************************************************************** -* Copyright (C) 2008. Renesas Technology Corp., All Rights Reserved. -******************************************************************************* -* File Name : phy.c -* Version : 1.01 -* Description : Ethernet PHY device driver -****************************************************************************** -* History : DD.MM.YYYY Version Description -* : 15.02.2010 1.00 First Release -* : 06.04.2010 1.01 RX62N changes -******************************************************************************/ - - -/****************************************************************************** -Includes , "Project Includes" -******************************************************************************/ -#include -#include "r_ether.h" -#include "phy.h" - -#include "FreeRTOS.h" -#include "task.h" -/****************************************************************************** -Typedef definitions -******************************************************************************/ - -/****************************************************************************** -Macro definitions -******************************************************************************/ - -/****************************************************************************** -Imported global variables and functions (from other files) -******************************************************************************/ - -/****************************************************************************** -Exported global variables and functions (to be accessed by other files) -******************************************************************************/ - -/****************************************************************************** -Private global variables and functions -******************************************************************************/ -uint16_t _phy_read( uint16_t reg_addr ); -void _phy_write( uint16_t reg_addr, uint16_t data ); -void _phy_preamble( void ); -void _phy_reg_set( uint16_t reg_addr, int32_t option ); -void _phy_reg_read( uint16_t *data ); -void _phy_reg_write( uint16_t data ); -void _phy_ta_z0( void ); -void _phy_ta_10( void ); -void _phy_mii_write_1( void ); -void _phy_mii_write_0( void ); - -/** - * External functions - */ - -/****************************************************************************** -* Function Name: phy_init -* Description : Resets Ethernet PHY device -* Arguments : none -* Return Value : none -******************************************************************************/ -int16_t phy_init( void ) -{ - uint16_t reg; - uint32_t count; - - /* Reset PHY */ - _phy_write(BASIC_MODE_CONTROL_REG, 0x8000); - - count = 0; - - do - { - vTaskDelay( 2 / portTICK_PERIOD_MS ); - reg = _phy_read(BASIC_MODE_CONTROL_REG); - count++; - } while (reg & 0x8000 && count < PHY_RESET_WAIT); - - if( count < PHY_RESET_WAIT ) - { - return R_PHY_OK; - } - - return R_PHY_ERROR; -} - -/****************************************************************************** -* Function Name: phy_set_100full -* Description : Set Ethernet PHY device to 100 Mbps full duplex -* Arguments : none -* Return Value : none -******************************************************************************/ -void phy_set_100full( void ) -{ - _phy_write(BASIC_MODE_CONTROL_REG, 0x2100); -} - -/****************************************************************************** -* Function Name: phy_set_10half -* Description : Sets Ethernet PHY device to 10 Mbps half duplexR -* Arguments : none -* Return Value : none -******************************************************************************/ -void phy_set_10half( void ) -{ - _phy_write(BASIC_MODE_CONTROL_REG, 0x0000); -} - -/****************************************************************************** -* Function Name: phy_set_autonegotiate -* Description : Starts autonegotiate and reports the other side's -* : physical capability -* Arguments : none -* Return Value : bit 8 - Full duplex 100 mbps -* : bit 7 - Half duplex 100 mbps -* : bit 6 - Full duplex 10 mbps -* : bit 5 - Half duplex 10 mbps -* : bit 4:0 - Always set to 00001 (IEEE 802.3) -* : -1 if error -******************************************************************************/ -int16_t phy_set_autonegotiate( void ) -{ - uint16_t reg; - uint32_t count; - - _phy_write(AN_ADVERTISEMENT_REG, 0x01E1); - _phy_write(BASIC_MODE_CONTROL_REG, 0x1200); - - count = 0; - - do - { - reg = _phy_read(BASIC_MODE_STATUS_REG); - count++; - vTaskDelay( 100 / portTICK_PERIOD_MS ); - - /* Make sure we don't break out if reg just contains 0xffff. */ - if( reg == 0xffff ) - { - reg = 0; - } - - } while (!(reg & 0x0020) && (count < PHY_AUTO_NEGOTIATON_WAIT)); - - if (count >= PHY_AUTO_NEGOTIATON_WAIT) - { - return R_PHY_ERROR; - } - else - { - /* National DP83640 fix */ - _phy_write(0x13, 0x0006); - reg = _phy_read(0x14); - _phy_write(0x14, (reg&0x7FFF)); - _phy_write(0x13, 0x0000); - - /* Get the link partner response */ - reg = (int16_t)_phy_read(AN_LINK_PARTNER_ABILITY_REG); - - if (reg & ( 1 << 8 ) ) - { - return PHY_LINK_100F; - } - if (reg & ( 1 << 7 ) ) - { - return PHY_LINK_100H; - } - if (reg & ( 1 << 6 ) ) - { - return PHY_LINK_10F; - } - if (reg & 1 << 5 ) - { - return PHY_LINK_10H; - } - - return (-1); - } -} - - -/** - * Internal functions - */ - -/****************************************************************************** -* Function Name: _phy_read -* Description : Reads a PHY register -* Arguments : reg_addr - address of the PHY register -* Return Value : read value -******************************************************************************/ -uint16_t _phy_read( uint16_t reg_addr ) -{ - uint16_t data; - - _phy_preamble(); - _phy_reg_set( reg_addr, PHY_READ ); - _phy_ta_z0(); - _phy_reg_read( &data ); - _phy_ta_z0(); - - return( data ); -} - -/****************************************************************************** -* Function Name: _phy_write -* Description : Writes to a PHY register -* Arguments : reg_addr - address of the PHY register -* : data - value -* Return Value : none -******************************************************************************/ -void _phy_write( uint16_t reg_addr, uint16_t data ) -{ - _phy_preamble(); - _phy_reg_set( reg_addr, PHY_WRITE ); - _phy_ta_10(); - _phy_reg_write( data ); - _phy_ta_z0(); -} - -/****************************************************************************** -* Function Name: _phy_preamble -* Description : As preliminary preparation for access to the PHY module register, -* "1" is output via the MII management interface. -* Arguments : none -* Return Value : none -******************************************************************************/ -void _phy_preamble( void ) -{ - int16_t i; - - i = 32; - while( i > 0 ) - { - _phy_mii_write_1(); - i--; - } -} - -/****************************************************************************** -* Function Name: _phy_reg_set -* Description : Sets a PHY device to read or write mode -* Arguments : reg_addr - address of the PHY register -* : option - mode -* Return Value : none -******************************************************************************/ -void _phy_reg_set( uint16_t reg_addr, int32_t option ) -{ - int32_t i; - uint16_t data; - - data = 0; - data = (PHY_ST << 14); /* ST code */ - - if( option == PHY_READ ) - { - data |= (PHY_READ << 12); /* OP code(RD) */ - } - else - { - data |= (PHY_WRITE << 12); /* OP code(WT) */ - } - - data |= (PHY_ADDR << 7); /* PHY Address */ - data |= (reg_addr << 2); /* Reg Address */ - - i = 14; - while( i > 0 ) - { - if( (data & 0x8000) == 0 ) - { - _phy_mii_write_0(); - } - else - { - _phy_mii_write_1(); - } - data <<= 1; - i--; - } -} - -/****************************************************************************** -* Function Name: _phy_reg_read -* Description : Reads PHY register through MII interface -* Arguments : data - pointer to store the data read -* Return Value : none -******************************************************************************/ -void _phy_reg_read( uint16_t *data ) -{ - int32_t i, j; - uint16_t reg_data; - - reg_data = 0; - i = 16; - while( i > 0 ) - { - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000000; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000001; - } - - reg_data <<= 1; - reg_data |= (uint16_t)((ETHERC.PIR.LONG & 0x00000008) >> 3); /* MDI read */ - - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000001; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000000; - } - i--; - } - *data = reg_data; -} - -/****************************************************************************** -* Function Name: _phy_reg_write -* Description : Writes to PHY register through MII interface -* Arguments : data - value to write -* Return Value : none -******************************************************************************/ -void _phy_reg_write( uint16_t data ) -{ - int32_t i; - - i = 16; - while( i > 0 ) - { - if( (data & 0x8000) == 0 ) - { - _phy_mii_write_0(); - } - else - { - _phy_mii_write_1(); - } - i--; - data <<= 1; - } -} - -/****************************************************************************** -* Function Name: _phy_ta_z0 -* Description : Performs bus release so that PHY can drive data -* : for read operation -* Arguments : none -* Return Value : none -******************************************************************************/ -void _phy_ta_z0( void ) -{ - int32_t j; - - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000000; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000001; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000001; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000000; - } -} - -/****************************************************************************** -* Function Name: _phy_ta_10 -* Description : Switches data bus so MII interface can drive data -* : for write operation -* Arguments : none -* Return Value : none -******************************************************************************/ -void _phy_ta_10(void) -{ - _phy_mii_write_1(); - _phy_mii_write_0(); -} - -/****************************************************************************** -* Function Name: _phy_mii_write_1 -* Description : Outputs 1 to the MII interface -* Arguments : none -* Return Value : none -******************************************************************************/ -void _phy_mii_write_1( void ) -{ - int32_t j; - - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000006; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000007; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000007; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000006; - } -} - -/****************************************************************************** -* Function Name: _phy_mii_write_0 -* Description : Outputs 0 to the MII interface -* Arguments : none -* Return Value : none -******************************************************************************/ -void _phy_mii_write_0( void ) -{ - int32_t j; - - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000002; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000003; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000003; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000002; - } -} - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/webserver/phy.h b/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/webserver/phy.h deleted file mode 100644 index e2429d932..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/webserver/phy.h +++ /dev/null @@ -1,84 +0,0 @@ -/****************************************************************************** -* DISCLAIMER -* Please refer to http://www.renesas.com/disclaimer -****************************************************************************** - Copyright (C) 2008. Renesas Technology Corp., All Rights Reserved. -******************************************************************************* -* File Name : phy.h -* Version : 1.02 -* Description : Ethernet PHY device driver -****************************************************************************** -* History : DD.MM.YYYY Version Description -* : 15.02.2010 1.00 First Release -* : 17.03.2010 1.01 Modification of macro definitions for access timing -* : 06.04.2010 1.02 RX62N changes -******************************************************************************/ - -#ifndef PHY_H -#define PHY_H - -/****************************************************************************** -Includes , "Project Includes" -******************************************************************************/ -#include - -/****************************************************************************** -Typedef definitions -******************************************************************************/ - -/****************************************************************************** -Macro definitions -******************************************************************************/ -/* Standard PHY Registers */ -#define BASIC_MODE_CONTROL_REG 0 -#define BASIC_MODE_STATUS_REG 1 -#define PHY_IDENTIFIER1_REG 2 -#define PHY_IDENTIFIER2_REG 3 -#define AN_ADVERTISEMENT_REG 4 -#define AN_LINK_PARTNER_ABILITY_REG 5 -#define AN_EXPANSION_REG 6 - -/* Media Independent Interface */ -#define PHY_ST 1 -#define PHY_READ 2 -#define PHY_WRITE 1 -#define PHY_ADDR 0x01 - -#define MDC_WAIT 2 - -/* PHY return definitions */ -#define R_PHY_OK 0 -#define R_PHY_ERROR -1 - -/* Auto-Negotiation Link Partner Status */ -#define PHY_AN_LINK_PARTNER_100BASE 0x0180 -#define PHY_AN_LINK_PARTNER_FULL 0x0140 -#define PHY_AN_COMPLETE ( 1 << 5 ) - -/* - * Wait counter definitions of PHY-LSI initialization - * ICLK = 96MHz -*/ -#define PHY_RESET_WAIT 0x00000020L -#define PHY_AUTO_NEGOTIATON_WAIT 75 - -#define PHY_AN_ENABLE 0x1200 -#define PHY_AN_10_100_F_H 0xde1 - -/****************************************************************************** -Variable Externs -******************************************************************************/ - -/****************************************************************************** -Functions Prototypes -******************************************************************************/ -/** - * External prototypes - **/ -int16_t phy_init( void ); -void phy_set_100full( void ); -void phy_set_10half( void ); -int16_t phy_set_autonegotiate( void ); - -#endif /* PHY_H */ - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/webserver/r_ether.h b/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/webserver/r_ether.h deleted file mode 100644 index 1dcc46865..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/webserver/r_ether.h +++ /dev/null @@ -1,185 +0,0 @@ -/****************************************************************************** -* DISCLAIMER -* Please refer to http://www.renesas.com/disclaimer -****************************************************************************** - Copyright (C) 2008. Renesas Technology Corp., All Rights Reserved. -******************************************************************************* -* File Name : r_ether.h -* Version : 1.02 -* Description : Ethernet module device driver -****************************************************************************** -* History : DD.MM.YYYY Version Description -* : 15.02.2010 1.00 First Release -* : 03.03.2010 1.01 Buffer size is aligned on the 32-byte boundary. -* : 04.06.2010 1.02 RX62N changes -******************************************************************************/ - -#ifndef R_ETHER_H -#define R_ETHER_H - -/****************************************************************************** -Includes , "Project Includes" -******************************************************************************/ -#include - -/****************************************************************************** -Typedef definitions -******************************************************************************/ -struct Descriptor -{ - unsigned long status; -#if __LITTLE_ENDIAN__ == 1 -/* Little endian */ - unsigned short size; - unsigned short bufsize; -#else -/* Big endian */ - unsigned short bufsize; - unsigned short size; - -#endif - char *buf_p; - struct Descriptor *next; -}; - -typedef struct Descriptor ethfifo; - -typedef enum _NETLNK -{ - PHY_NO_LINK = 0, - PHY_LINK_10H, - PHY_LINK_10F, - PHY_LINK_100H, - PHY_LINK_100F - -} NETLNK; - -/****************************************************************************** -Macro definitions -******************************************************************************/ -#define BUFSIZE 256 /* Must be 32-bit aligned */ -#define ENTRY 8 /* Number of RX and TX buffers */ - -#define ACT 0x80000000 -#define DL 0x40000000 -#define FP1 0x20000000 -#define FP0 0x10000000 -#define FE 0x08000000 - -#define RFOVER 0x00000200 -#define RAD 0x00000100 -#define RMAF 0x00000080 -#define RRF 0x00000010 -#define RTLF 0x00000008 -#define RTSF 0x00000004 -#define PRE 0x00000002 -#define CERF 0x00000001 - -#define TAD 0x00000100 -#define CND 0x00000008 -#define DLC 0x00000004 -#define CD 0x00000002 -#define TRO 0x00000001 - -/** - * Renesas Ethernet API return defines - **/ -#define R_ETHER_OK 0 -#define R_ETHER_ERROR -1 - -/* Ether Interface definitions */ -#define ETH_RMII_MODE 0 -#define ETH_MII_MODE 1 -/* Select Ether Interface Mode */ -#define ETH_MODE_SEL ETH_MII_MODE - -/****************************************************************************** -Variable Externs -******************************************************************************/ - -/****************************************************************************** -Functions Prototypes -******************************************************************************/ -/** - * Renesas Ethernet API prototypes - **/ -int32_t R_Ether_Open(unsigned long ch, unsigned char mac_addr[]); -int32_t R_Ether_Close(unsigned long ch); -int32_t R_Ether_Write(unsigned long ch, void *buf, unsigned long len); -int32_t R_Ether_Read(unsigned long ch, void *buf); - -/** - * FreeRTOS Ethernet API prototypes. - */ - -/* - * Configure all the ethernet components (MAC, DMA, PHY) ready for communication. - */ -void vInitEmac( void ); - -/* - * Auto negotiate the link, returning pass or fail depending on whether a link - * was established or not. - */ -long lEMACWaitForLink( void ); - -/* - * Check the Rx status, and return the number of bytes received if any. - */ -unsigned long ulEMACRead( void ); - -/* - * Send uip_len bytes from uip_buf to the Tx descriptors and initiate a Tx. - */ -void vEMACWrite( void ); - - - - -/****************************************************/ -/* Ethernet statistic collection data */ -struct enet_stats -{ - unsigned long rx_packets; /* total packets received */ - unsigned long tx_packets; /* total packets transmitted */ - unsigned long rx_errors; /* bad packets received */ - unsigned long tx_errors; /* packet transmit problems */ - unsigned long rx_dropped; /* no space in buffers */ - unsigned long tx_dropped; /* no space available */ - unsigned long multicast; /* multicast packets received */ - unsigned long collisions; - - /* detailed rx_errors: */ - unsigned long rx_length_errors; - unsigned long rx_over_errors; /* receiver ring buffer overflow */ - unsigned long rx_crc_errors; /* recved pkt with crc error */ - unsigned long rx_frame_errors; /* recv'd frame alignment error */ - unsigned long rx_fifo_errors; /* recv'r fifo overrun */ - unsigned long rx_missed_errors; /* receiver missed packet */ - - /* detailed tx_errors */ - unsigned long tx_aborted_errors; - unsigned long tx_carrier_errors; - unsigned long tx_fifo_errors; - unsigned long tx_heartbeat_errors; - unsigned long tx_window_errors; -}; - -struct ei_device -{ - const char *name; - unsigned char open; - unsigned char Tx_act; - unsigned char Rx_act; - unsigned char txing; /* Transmit Active */ - unsigned char irqlock; /* EDMAC's interrupt disabled when '1'. */ - unsigned char dmaing; /* EDMAC Active */ - ethfifo *rxcurrent; /* current receive discripter */ - ethfifo *txcurrent; /* current transmit discripter */ - unsigned char save_irq; /* Original dev->irq value. */ - struct enet_stats stat; - unsigned char mac_addr[6]; -}; - -#endif /* R_ETHER_H */ - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/webserver/uip-conf.h b/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/webserver/uip-conf.h deleted file mode 100644 index e5597d232..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/webserver/uip-conf.h +++ /dev/null @@ -1,167 +0,0 @@ -/** - * \addtogroup uipopt - * @{ - */ - -/** - * \name Project-specific configuration options - * @{ - * - * uIP has a number of configuration options that can be overridden - * for each project. These are kept in a project-specific uip-conf.h - * file and all configuration names have the prefix UIP_CONF. - */ - -/* - * Copyright (c) 2006, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: uip-conf.h,v 1.6 2006/06/12 08:00:31 adam Exp $ - */ - -/** - * \file - * An example uIP configuration file - * \author - * Adam Dunkels - */ - -#ifndef __UIP_CONF_H__ -#define __UIP_CONF_H__ - -#define UIP_CONF_EXTERNAL_BUFFER -#define UIP_CONF_PROCESS_HTTPD_FORMS 1 - -/** - * 8 bit datatype - * - * This typedef defines the 8-bit type used throughout uIP. - * - * \hideinitializer - */ -typedef unsigned char u8_t; - -/** - * 16 bit datatype - * - * This typedef defines the 16-bit type used throughout uIP. - * - * \hideinitializer - */ -typedef unsigned short u16_t; - -typedef unsigned long u32_t; - -/** - * Statistics datatype - * - * This typedef defines the dataype used for keeping statistics in - * uIP. - * - * \hideinitializer - */ -typedef unsigned short uip_stats_t; - -/** - * Maximum number of TCP connections. - * - * \hideinitializer - */ -#define UIP_CONF_MAX_CONNECTIONS 40 - -/** - * Maximum number of listening TCP ports. - * - * \hideinitializer - */ -#define UIP_CONF_MAX_LISTENPORTS 40 - -/** - * uIP buffer size. - * - * \hideinitializer - */ -#define UIP_CONF_BUFFER_SIZE 1480 - -/** - * CPU byte order. - * - * \hideinitializer - */ -#if __LITTLE_ENDIAN__ == 1 - #define UIP_CONF_BYTE_ORDER UIP_LITTLE_ENDIAN -#else - #define UIP_CONF_BYTE_ORDER UIP_BIG_ENDIAN -#endif - -/** - * Logging on or off - * - * \hideinitializer - */ -#define UIP_CONF_LOGGING 0 - -/** - * UDP support on or off - * - * \hideinitializer - */ -#define UIP_CONF_UDP 0 - -/** - * UDP checksums on or off - * - * \hideinitializer - */ -#define UIP_CONF_UDP_CHECKSUMS 1 - -/** - * uIP statistics on or off - * - * \hideinitializer - */ -#define UIP_CONF_STATISTICS 1 - -/* Here we include the header file for the application(s) we use in - our project. */ -/*#include "smtp.h"*/ -/*#include "hello-world.h"*/ -/*#include "telnetd.h"*/ -#include "webserver.h" -/*#include "dhcpc.h"*/ -/*#include "resolv.h"*/ -/*#include "webclient.h"*/ - -#define CCIF -#define CC_REGISTER_ARG - -#endif /* __UIP_CONF_H__ */ - -/** @} */ -/** @} */ diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/webserver/webserver.h b/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/webserver/webserver.h deleted file mode 100644 index 5267f0587..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_IAR/webserver/webserver.h +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright (c) 2002, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials provided - * with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: webserver.h,v 1.2 2006/06/11 21:46:38 adam Exp $ - * - */ -#ifndef __WEBSERVER_H__ -#define __WEBSERVER_H__ - -#include "apps/httpd/httpd.h" - -typedef struct httpd_state uip_tcp_appstate_t; -/* UIP_APPCALL: the name of the application function. This function - must return void and take no arguments (i.e., C type "void - appfunc(void)"). */ -#define UIP_APPCALL httpd_appcall - - -#endif /* __WEBSERVER_H__ */ diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo.Hbp b/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo.Hbp deleted file mode 100644 index 0d3910dbc..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo.Hbp +++ /dev/null @@ -1,4 +0,0 @@ -[Setting] -ToolChain=0 -[Section] -WindowSize=726,544 diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo.hws b/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo.hws deleted file mode 100644 index d9db19603..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo.hws +++ /dev/null @@ -1,46 +0,0 @@ -[HIMDBVersion] -2.0 -[DATABASE_VERSION] -"11.0" -[WORKSPACE_DETAILS] -"RTOSDemo" "C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas" "C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo.hws" "RX" "Renesas RX Standard" -[SHARED_WORKSPACE_CONTROL_STATUS] -"" "" "" -"" "" "" -[PROJECTS] -"RTOSDemo" "C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo" "C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\RTOSDemo.hwp" 0 -[INFORMATION] -"No workspace information available" -[SCRAP] -[PROJECT_DEPENDENCY] -[WORKSPACE_PROPERTIES] -[HELP_FILES] -"c:\devtools\renesas\hew\tools\renesas\rx\1_0_0\hew\stdlib.chm" "C/C++ Standard Library Help" 0 -"c:\devtools\renesas\hew\tools\renesas\rx\1_0_1\hew\stdlib.chm" "C/C++ Standard Library Help" 0 -"c:\devtools\renesas\hew\tools\renesas\rx\1_0_2\hew\stdlib.chm" "C/C++ Standard Library Help" 0 -"c:\devtools\renesas\hew\tools\renesas\rx\1_1_0\hew\stdlib.chm" "C/C++ Standard Library Help" 0 -"c:\devtools\renesas\hew\tools\renesas\rx\1_2_1\hew\stdlib.chm" "C/C++ Standard Library Help" 1 -"c:\devtools\renesas\hewforrx210-w1\tools\renesas\rx\1_1_0\hew\stdlib.chm" "C/C++ Standard Library Help" 0 -[GENERAL_DATA_PROJECT] -[USERMENUTOOLS] -[CUSTOMPLACEHOLDERS] -[MAKEFILE_BUILD_INFO] -"$(WORKSPDIR)\make\$(PROJECTNAME)_$(CONFIGNAME).mak" "" "$(WORKSPDIR)\make" 0 0 0 -[VD_CONFIGURATION_OPTIONS] -"ACTIVE_DESKTOP" "0" -[VD_CONFIGURATIONS] -"0" "Default1" "1" -"1" "Default2" "1" -"2" "Default3" "1" -"3" "Default4" "1" -[OPTIONS_DEBUG_TAB] -0 0 0 0 0 -[VCS] -"" "" "" 0 -[VCS_PROJECT] -[MAKEFILE_ENV_STRINGS] -[MAKEFILE_ENV_FLAGS] -1 0 0 -[MAKEFILE_CLEAN_INFO] -"" -[END] diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo.tws b/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo.tws deleted file mode 100644 index ef666fddb..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo.tws +++ /dev/null @@ -1,13 +0,0 @@ -[HIMDBVersion] -2.0 -[DATABASE_VERSION] -"1.2" -[CURRENT_PROJECT] -"RTOSDemo" -[GENERAL_DATA] -[BREAKPOINTS] -[OPEN_WORKSPACE_FILES] -[WORKSPACE_FILE_STATES] -[LOADED_PROJECTS] -"RTOSDemo" -[END] diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/DefaultSession.hsf b/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/DefaultSession.hsf deleted file mode 100644 index 49a2c5fc2..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/DefaultSession.hsf +++ /dev/null @@ -1,101 +0,0 @@ -[HIMDBVersion] -2.0 -[DATABASE_VERSION] -"2.3" -[SESSION_DETAILS] -"" -[INFORMATION] -"" -[GENERAL_DATA] -"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapCtrlECX_MAP_FIND_SYMBOL_LIST" "" -"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapCtrlViews" "0" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlBatchFileName" "" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlBreakpointFlag" "-1 " -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlBreakpointStatus" "-1 " -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlBrowseDirectory" "" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlLogFileName" "" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlSplitterPosition" "242" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlViews" "0" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}TclTkCtrlLogFileName" "" -"{6C4D5B81-FD67-46A9-A089-EA44DCDE47FD}RAMMonitorManagerCtrlBlockInfoFileDir" "" -"{6C4D5B81-FD67-46A9-A089-EA44DCDE47FD}RAMMonitorManagerCtrlBlockInfoFileName" "" -"{7943C44E-7D44-422A-9140-4CF55C88F7D3}DifferenceCtrlViews" "0" -[LANGUAGE] -"English" -[CONFIG_INFO_VD1] -1 -[CONFIG_INFO_VD2] -0 -[CONFIG_INFO_VD3] -0 -[CONFIG_INFO_VD4] -0 -[WINDOW_POSITION_STATE_DATA_VD1] -"Help" "TOOLBAR 0" 59419 1 5 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_00000001_OUTPUT}" "WINDOW" 59422 0 0 "1.00" 289 560 340 350 200 18 0 "36756|36757|36758|36759|<>|36746|36747|<>|39531|<>|39500|39534|<>|36687" "0.0" -"{WK_00000002_WORKSPACE}" "WINDOW" 59420 0 0 "1.00" 206 560 340 350 200 18 0 "" "0.0" -"{WK_TB00000001_STANDARD}" "TOOLBAR 0" 59419 0 2 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000002_EDITOR}" "TOOLBAR 0" 59419 0 0 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000003_BOOKMARKS}" "TOOLBAR 0" 59419 1 1 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000004_TEMPLATES}" "TOOLBAR 0" 59419 1 0 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000005_SEARCH}" "TOOLBAR 0" 59419 0 1 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000007_DEBUG}" "TOOLBAR 0" 59419 2 0 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000008_DEBUGRUN}" "TOOLBAR 0" 59419 2 1 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000009_VERSIONCONTROL}" "TOOLBAR 0" 59419 1 3 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000012_MAP}" "TOOLBAR 0" 59419 1 4 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000018_DEFAULTWINDOW}" "TOOLBAR 0" 59419 1 2 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000025_HELPSYSTEMTOOL}" "TOOLBAR 0" 59419 2 3 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000026_MACRO}" "TOOLBAR 0" 59419 1 6 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000028_RTOSDEBUG}" "TOOLBAR 0" 59419 2 2 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000029_SYSTEMTOOL}" "TOOLBAR 0" 59419 2 4 "0.00" 0 0 0 0 0 17 0 "" "0.0" -[WINDOW_POSITION_STATE_DATA_VD2] -[WINDOW_POSITION_STATE_DATA_VD3] -[WINDOW_POSITION_STATE_DATA_VD4] -[WINDOW_Z_ORDER] -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N_Renesas\RTOSDemo\RTOSDemo.c" -[TARGET_NAME] -"" "" 1229201492 -[STATUSBAR_STATEINFO_VD1] -"MasterShowState" 1 -"ApplicationShowState" 1 -"DebuggerShowState" 1 -[STATUSBAR_STATEINFO_VD2] -"MasterShowState" 1 -"ApplicationShowState" 1 -"DebuggerShowState" 1 -[STATUSBAR_STATEINFO_VD3] -"MasterShowState" 1 -"ApplicationShowState" 1 -"DebuggerShowState" 1 -[STATUSBAR_STATEINFO_VD4] -"MasterShowState" 1 -"ApplicationShowState" 1 -"DebuggerShowState" 1 -[STATUSBAR_DEBUGGER_PANESTATE_VD1] -[STATUSBAR_DEBUGGER_PANESTATE_VD2] -[STATUSBAR_DEBUGGER_PANESTATE_VD3] -[STATUSBAR_DEBUGGER_PANESTATE_VD4] -[DEBUGGER_OPTIONS] -"" -[DOWNLOAD_MODULES] -[CONNECT_ON_GO] -"FALSE" -[DOWNLOAD_MODULES_AFTER_BUILD] -"TRUE" -[REMOVE_BREAKPOINTS_ON_DOWNLOAD] -"FALSE" -[DISABLE_MEMORY_ACCESS_PRIOR_TO_COMMAND_FILE_EXECUTION] -"FALSE" -[LIMIT_DISASSEMBLY_MEMORY_ACCESS] -"FALSE" -[DISABLE_MEMORY_ACCESS_DURING_EXECUTION] -"FALSE" -[DEBUGGER_OPTIONS_PROPERTIES] -"1" -[COMMAND_FILES] -[DEFAULT_DEBUG_FORMAT] -"" -[FLASH_DETAILS] -"" 0 0 "" 0 "" 0 0 "" 0 0 0 0 0 0 0 "" "" "" "" "" -[BREAKPOINTS] -[END] diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/FreeRTOSConfig.h b/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/FreeRTOSConfig.h deleted file mode 100644 index 8fea3a2cc..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/FreeRTOSConfig.h +++ /dev/null @@ -1,148 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -#ifndef FREERTOS_CONFIG_H -#define FREERTOS_CONFIG_H - -/* Board specifics. */ -#include "yrdkrx62ndef.h" - -/*----------------------------------------------------------- - * Application specific definitions. - * - * These definitions should be adjusted for your particular hardware and - * application requirements. - * - * THESE PARAMETERS ARE DESCRIBED WITHIN THE 'CONFIGURATION' SECTION OF THE - * FreeRTOS API DOCUMENTATION AVAILABLE ON THE FreeRTOS.org WEB SITE. - * - * See http://www.freertos.org/a00110.html - *----------------------------------------------------------*/ - -#define configUSE_PREEMPTION 1 -#define configUSE_IDLE_HOOK 0 -#define configUSE_TICK_HOOK 0 -#define configCPU_CLOCK_HZ ( ICLK_FREQUENCY ) /* Set in rskrx62ndef.h. */ -#define configPERIPHERAL_CLOCK_HZ ( PCLK_FREQUENCY ) /* Set in rskrx62ndef.h. */ -#define configTICK_RATE_HZ ( ( TickType_t ) 1000 ) -#define configMINIMAL_STACK_SIZE ( ( unsigned short ) 140 ) -#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 45 * 1024 ) ) -#define configMAX_TASK_NAME_LEN ( 12 ) -#define configUSE_TRACE_FACILITY 1 -#define configUSE_16_BIT_TICKS 0 -#define configIDLE_SHOULD_YIELD 1 -#define configUSE_CO_ROUTINES 0 -#define configUSE_MUTEXES 1 -#define configGENERATE_RUN_TIME_STATS 1 -#define configCHECK_FOR_STACK_OVERFLOW 2 -#define configUSE_RECURSIVE_MUTEXES 1 -#define configQUEUE_REGISTRY_SIZE 0 -#define configUSE_MALLOC_FAILED_HOOK 1 -#define configUSE_APPLICATION_TASK_TAG 0 - -#define configMAX_PRIORITIES ( 7 ) -#define configMAX_CO_ROUTINE_PRIORITIES ( 2 ) - -/* Software timer definitions. */ -#define configUSE_TIMERS 1 -#define configTIMER_TASK_PRIORITY ( 3 ) -#define configTIMER_QUEUE_LENGTH 5 -#define configTIMER_TASK_STACK_DEPTH ( configMINIMAL_STACK_SIZE ) - -/* The interrupt priority used by the kernel itself for the tick interrupt and -the pended interrupt. This would normally be the lowest priority. */ -#define configKERNEL_INTERRUPT_PRIORITY 1 - -/* The maximum interrupt priority from which FreeRTOS API calls can be made. -Interrupts that use a priority above this will not be effected by anything the -kernel is doing. */ -#define configMAX_SYSCALL_INTERRUPT_PRIORITY 4 - -/* The peripheral used to generate the tick interrupt is configured as part of -the application code. This constant should be set to the vector number of the -peripheral chosen. As supplied this is CMT0. */ -#define configTICK_VECTOR _CMT0_CMI0 - -/* Set the following definitions to 1 to include the API function, or zero -to exclude the API function. */ - -#define INCLUDE_vTaskPrioritySet 1 -#define INCLUDE_uxTaskPriorityGet 1 -#define INCLUDE_vTaskDelete 1 -#define INCLUDE_vTaskCleanUpResources 0 -#define INCLUDE_vTaskSuspend 1 -#define INCLUDE_vTaskDelayUntil 1 -#define INCLUDE_vTaskDelay 1 -#define INCLUDE_uxTaskGetStackHighWaterMark 1 -#define INCLUDE_xTaskGetSchedulerState 1 -#define INCLUDE_eTaskGetState 1 - -/* This demo makes use of one or more example stats formatting functions. These -format the raw data provided by the uxTaskGetSystemState() function in to human -readable ASCII form. See the notes in the implementation of vTaskList() within -FreeRTOS/Source/tasks.c for limitations. */ -#define configUSE_STATS_FORMATTING_FUNCTIONS 1 - -#define configASSERT( x ) if( ( x ) == 0 ) { taskDISABLE_INTERRUPTS(); for( ;; ); } - -extern volatile unsigned long ulHighFrequencyTickCount; -#define portCONFIGURE_TIMER_FOR_RUN_TIME_STATS() nop() /* Run time stats use the same timer as the high frequency timer test. */ -#define portGET_RUN_TIME_COUNTER_VALUE() ulHighFrequencyTickCount - - -/* Override some of the priorities set in the common demo tasks. This is -required to ensure flase positive timing errors are not reported. */ -#define bktPRIMARY_PRIORITY ( configMAX_PRIORITIES - 3 ) -#define bktSECONDARY_PRIORITY ( configMAX_PRIORITIES - 4 ) -#define intqHIGHER_PRIORITY ( configMAX_PRIORITIES - 3 ) - - -/*----------------------------------------------------------- - * Ethernet configuration. - *-----------------------------------------------------------*/ - -/* MAC address configuration. */ -#define configMAC_ADDR0 0x00 -#define configMAC_ADDR1 0x12 -#define configMAC_ADDR2 0x13 -#define configMAC_ADDR3 0x10 -#define configMAC_ADDR4 0x15 -#define configMAC_ADDR5 0x11 - -/* IP address configuration. */ -#define configIP_ADDR0 192 -#define configIP_ADDR1 168 -#define configIP_ADDR2 0 -#define configIP_ADDR3 200 - -/* Netmask configuration. */ -#define configNET_MASK0 255 -#define configNET_MASK1 255 -#define configNET_MASK2 255 -#define configNET_MASK3 0 - -#endif /* FREERTOS_CONFIG_H */ diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/HighFrequencyTimerTest.c b/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/HighFrequencyTimerTest.c deleted file mode 100644 index b97be45c0..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/HighFrequencyTimerTest.c +++ /dev/null @@ -1,144 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* - * High frequency timer test as described in main.c. - */ - -/* Scheduler includes. */ -#include "FreeRTOS.h" - -/* Hardware specifics. */ -#include "iodefine.h" - -/* The set frequency of the interrupt. Deviations from this are measured as -the jitter. */ -#define timerINTERRUPT_FREQUENCY ( 20000UL ) - -/* The expected time between each of the timer interrupts - if the jitter was -zero. */ -#define timerEXPECTED_DIFFERENCE_VALUE ( ( unsigned short ) ( ( configPERIPHERAL_CLOCK_HZ / 8UL ) / timerINTERRUPT_FREQUENCY ) ) - -/* The highest available interrupt priority. */ -#define timerHIGHEST_PRIORITY ( 15 ) - -/* Misc defines. */ -#define timerTIMER_3_COUNT_VALUE ( *( ( unsigned short * ) 0x8801a ) ) /*( CMT3.CMCNT )*/ - -/*-----------------------------------------------------------*/ - -/* Interrupt handler in which the jitter is measured. */ -static void prvTimer2IntHandler( void ); - -/* Stores the value of the maximum recorded jitter between interrupts. This is -displayed on one of the served web pages. */ -volatile unsigned short usMaxJitter = 0; - -/* Counts the number of high frequency interrupts - used to generate the run -time stats. */ -volatile unsigned long ulHighFrequencyTickCount = 0UL; - -/*-----------------------------------------------------------*/ - -void vSetupHighFrequencyTimer( void ) -{ - /* Timer CMT2 is used to generate the interrupts, and CMT3 is used - to measure the jitter. */ - - /* Enable compare match timer 2 and 3. */ - MSTP( CMT2 ) = 0; - MSTP( CMT3 ) = 0; - - /* Interrupt on compare match. */ - CMT2.CMCR.BIT.CMIE = 1; - - /* Set the compare match value. */ - CMT2.CMCOR = ( unsigned short ) ( ( ( configPERIPHERAL_CLOCK_HZ / timerINTERRUPT_FREQUENCY ) -1 ) / 8 ); - - /* Divide the PCLK by 8. */ - CMT2.CMCR.BIT.CKS = 0; - CMT3.CMCR.BIT.CKS = 0; - - /* Enable the interrupt... */ - _IEN( _CMT2_CMI2 ) = 1; - - /* ...and set its priority to the maximum possible, this is above the priority - set by configMAX_SYSCALL_INTERRUPT_PRIORITY so will nest. */ - _IPR( _CMT2_CMI2 ) = timerHIGHEST_PRIORITY; - - /* Start the timers. */ - CMT.CMSTR1.BIT.STR2 = 1; - CMT.CMSTR1.BIT.STR3 = 1; -} -/*-----------------------------------------------------------*/ - -#pragma interrupt ( prvTimer2IntHandler( vect = _VECT( _CMT2_CMI2 ), enable ) ) -static void prvTimer2IntHandler( void ) -{ -volatile unsigned short usCurrentCount; -static unsigned short usMaxCount = 0; -static unsigned long ulErrorCount = 0UL; - - /* We use the timer 1 counter value to measure the clock cycles between - the timer 0 interrupts. First stop the clock. */ - CMT.CMSTR1.BIT.STR3 = 0; - nop(); - nop(); - usCurrentCount = timerTIMER_3_COUNT_VALUE; - - /* Is this the largest count we have measured yet? */ - if( usCurrentCount > usMaxCount ) - { - if( usCurrentCount > timerEXPECTED_DIFFERENCE_VALUE ) - { - usMaxJitter = usCurrentCount - timerEXPECTED_DIFFERENCE_VALUE; - } - else - { - /* This should not happen! */ - ulErrorCount++; - } - - usMaxCount = usCurrentCount; - } - - /* Used to generate the run time stats. */ - ulHighFrequencyTickCount++; - - /* Clear the timer. */ - timerTIMER_3_COUNT_VALUE = 0; - - /* Then start the clock again. */ - CMT.CMSTR1.BIT.STR3 = 1; -} - - - - - - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/IntQueueTimer.c b/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/IntQueueTimer.c deleted file mode 100644 index fcbc233eb..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/IntQueueTimer.c +++ /dev/null @@ -1,117 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* - * This file contains the non-portable and therefore RX62N specific parts of - * the IntQueue standard demo task - namely the configuration of the timers - * that generate the interrupts and the interrupt entry points. - */ - -/* Scheduler includes. */ -#include "FreeRTOS.h" -#include "task.h" - -/* Demo includes. */ -#include "IntQueueTimer.h" -#include "IntQueue.h" - -/* Hardware specifics. */ -#include "iodefine.h" - -#define tmrTIMER_0_1_FREQUENCY ( 2000UL ) -#define tmrTIMER_2_3_FREQUENCY ( 2001UL ) - -void vInitialiseTimerForIntQueueTest( void ) -{ - /* Ensure interrupts do not start until full configuration is complete. */ - portENTER_CRITICAL(); - { - /* Cascade two 8bit timer channels to generate the interrupts. - 8bit timer unit 1 (TMR0 and TMR1) and 8bit timer unit 2 (TMR2 and TMR3 are - utilised for this test. */ - - /* Enable the timers. */ - SYSTEM.MSTPCRA.BIT.MSTPA5 = 0; - SYSTEM.MSTPCRA.BIT.MSTPA4 = 0; - - /* Enable compare match A interrupt request. */ - TMR0.TCR.BIT.CMIEA = 1; - TMR2.TCR.BIT.CMIEA = 1; - - /* Clear the timer on compare match A. */ - TMR0.TCR.BIT.CCLR = 1; - TMR2.TCR.BIT.CCLR = 1; - - /* Set the compare match value. */ - TMR01.TCORA = ( unsigned short ) ( ( ( configPERIPHERAL_CLOCK_HZ / tmrTIMER_0_1_FREQUENCY ) -1 ) / 8 ); - TMR23.TCORA = ( unsigned short ) ( ( ( configPERIPHERAL_CLOCK_HZ / tmrTIMER_0_1_FREQUENCY ) -1 ) / 8 ); - - /* 16 bit operation ( count from timer 1,2 ). */ - TMR0.TCCR.BIT.CSS = 3; - TMR2.TCCR.BIT.CSS = 3; - - /* Use PCLK as the input. */ - TMR1.TCCR.BIT.CSS = 1; - TMR3.TCCR.BIT.CSS = 1; - - /* Divide PCLK by 8. */ - TMR1.TCCR.BIT.CKS = 2; - TMR3.TCCR.BIT.CKS = 2; - - /* Enable TMR 0, 2 interrupts. */ - IEN( TMR0, CMIA0 ) = 1; - IEN( TMR2, CMIA2 ) = 1; - - /* Set the timer interrupts to be above the kernel. The interrupts are - assigned different priorities so they nest with each other. */ - IPR( TMR0, CMIA0 ) = configMAX_SYSCALL_INTERRUPT_PRIORITY - 1; - IPR( TMR2, CMIA2 ) = ( configMAX_SYSCALL_INTERRUPT_PRIORITY - 2 ); - } - portEXIT_CRITICAL(); - - /* Ensure the interrupts are clear as they are edge detected. */ - IR( TMR0, CMIA0 ) = 0; - IR( TMR2, CMIA2 ) = 0; -} -/*-----------------------------------------------------------*/ - -#pragma interrupt ( vT0_1InterruptHandler( vect = VECT_TMR0_CMIA0, enable ) ) -void vT0_1InterruptHandler( void ) -{ - portYIELD_FROM_ISR( xFirstTimerHandler() ); -} -/*-----------------------------------------------------------*/ - -#pragma interrupt ( vT2_3InterruptHandler( vect = VECT_TMR2_CMIA2, enable ) ) -void vT2_3InterruptHandler( void ) -{ - portYIELD_FROM_ISR( xSecondTimerHandler() ); -} - - - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/ParTest.c b/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/ParTest.c deleted file mode 100644 index 9b76b0213..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/ParTest.c +++ /dev/null @@ -1,228 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/*----------------------------------------------------------- - * Simple IO routines to control the LEDs. - *-----------------------------------------------------------*/ - -/* Scheduler includes. */ -#include "FreeRTOS.h" -#include "task.h" - -/* Demo includes. */ -#include "partest.h" - -/* Hardware specifics. */ -#include "iodefine.h" - -#define partestNUM_LEDS ( 12 ) - -long lParTestGetLEDState( unsigned long ulLED ); - -/*-----------------------------------------------------------*/ - -void vParTestInitialise( void ) -{ - /* Port pin configuration is done by the low level set up prior to this - function being called. */ -} -/*-----------------------------------------------------------*/ - -void vParTestSetLED( unsigned long ulLED, signed long xValue ) -{ - if( ulLED < partestNUM_LEDS ) - { - if( xValue != 0 ) - { - /* Turn the LED on. */ - taskENTER_CRITICAL(); - { - switch( ulLED ) - { - case 0: LED4 = LED_ON; - break; - case 1: LED5 = LED_ON; - break; - case 2: LED6 = LED_ON; - break; - case 3: LED7 = LED_ON; - break; - case 4: LED8 = LED_ON; - break; - case 5: LED9 = LED_ON; - break; - case 6: LED10 = LED_ON; - break; - case 7: LED11 = LED_ON; - break; - case 8: LED12 = LED_ON; - break; - case 9: LED13 = LED_ON; - break; - case 10:LED14 = LED_ON; - break; - case 11:LED15 = LED_ON; - break; - } - } - taskEXIT_CRITICAL(); - } - else - { - /* Turn the LED off. */ - taskENTER_CRITICAL(); - { - switch( ulLED ) - { - case 0: LED4 = LED_OFF; - break; - case 1: LED5 = LED_OFF; - break; - case 2: LED6 = LED_OFF; - break; - case 3: LED7 = LED_OFF; - break; - case 4: LED8 = LED_OFF; - break; - case 5: LED9 = LED_OFF; - break; - case 6: LED10 = LED_OFF; - break; - case 7: LED11 = LED_OFF; - break; - case 8: LED12 = LED_OFF; - break; - case 9: LED13 = LED_OFF; - break; - case 10:LED14 = LED_OFF; - break; - case 11:LED15 = LED_OFF; - break; - } - - } - taskEXIT_CRITICAL(); - } - } -} -/*-----------------------------------------------------------*/ - -void vParTestToggleLED( unsigned long ulLED ) -{ - if( ulLED < partestNUM_LEDS ) - { - taskENTER_CRITICAL(); - { - if( lParTestGetLEDState( ulLED ) != 0x00 ) - { - vParTestSetLED( ulLED, 0 ); - } - else - { - vParTestSetLED( ulLED, 1 ); - } - } - taskEXIT_CRITICAL(); - } -} -/*-----------------------------------------------------------*/ - -long lParTestGetLEDState( unsigned long ulLED ) -{ -long lReturn = pdFALSE; - - if( ulLED < partestNUM_LEDS ) - { - switch( ulLED ) - { - case 0 : if( LED4 != LED_OFF ) - { - lReturn = pdTRUE; - } - break; - case 1 : if( LED5 != LED_OFF ) - { - lReturn = pdTRUE; - } - break; - case 2 : if( LED6 != LED_OFF ) - { - lReturn = pdTRUE; - } - break; - case 3 : if( LED7 != LED_OFF ) - { - lReturn = pdTRUE; - } - break; - case 4 : if( LED8 != LED_OFF ) - { - lReturn = pdTRUE; - } - break; - case 5 : if( LED9 != LED_OFF ) - { - lReturn = pdTRUE; - } - break; - case 6 : if( LED10 != LED_OFF ) - { - lReturn = pdTRUE; - } - break; - case 7 : if( LED11 != LED_OFF ) - { - lReturn = pdTRUE; - } - break; - case 8 : if( LED12 != LED_OFF ) - { - lReturn = pdTRUE; - } - break; - case 9 : if( LED13 != LED_OFF ) - { - lReturn = pdTRUE; - } - break; - case 10 : if( LED14 != LED_OFF ) - { - lReturn = pdTRUE; - } - break; - case 11 : if( LED15 != LED_OFF ) - { - lReturn = pdTRUE; - } - break; - } - } - - return lReturn; -} -/*-----------------------------------------------------------*/ - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/RTOSDemo.hwp b/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/RTOSDemo.hwp deleted file mode 100644 index 34a8806b8..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/RTOSDemo.hwp +++ /dev/null @@ -1,629 +0,0 @@ -[HIMDBVersion] -2.0 -[DATABASE_VERSION] -"2.8" -[PROJECT_DETAILS] -"RTOSDemo" "C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo" "C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\RTOSDemo.hwp" "RX" "Renesas RX Standard" "Application" "RX600" "Other" -[INFORMATION] -"No project information available" -[TOOL_CHAIN] -"Renesas RX Standard Toolchain" "1.2.1.0" -[CONFIGURATIONS] -"Blinky" "C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\Blinky" -"Debug" "C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\Debug" -"Debug_RX600_E1_E20_SYSTEM" "C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\Debug_RX600_E1_E20_SYSTEM" -"Debug_with_optimisation" "C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\Debug_with_optimisation" -"SimDebug_RX600" "C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\SimDebug_RX600" -[BUILD_PHASES] -"Renesas OptLinker" 1 -"Renesas RX Assembler" 1 -"Renesas RX C/C++ Compiler" 1 -"Renesas RX C/C++ Library Generator" 1 -"Renesas RX Configurator" 1 -[TOOL_ENVIRONMENT] -[EXTENSIONS] -"Absolute file" "ABS" -"Assembly include file" "INC" -"Assembly list file" "LST" -"Assembly source file" "S" -"Assembly source file" "SRC" -"Binary file" "BIN" -"C header file" "H" -"C source file" "C" -"C++ header file" "HPP" -"C++ source file" "CC" -"C++ source file" "CP" -"C++ source file" "CPP" -"CPU information file" "CPU" -"Calling information file" "CAL" -"Configuration file" "CFG" -"Debug information file" "DBG" -"Hex file" "HEX" -"Library file" "LIB" -"Library information file" "LBP" -"Linkage map file" "MAP" -"Linkage symbol file" "FSY" -"Object file" "OBJ" -"Optimize map file" "bls" -"Preprocessed C source file" "P" -"Preprocessed C++ source file" "PP" -"Relocatable file" "REL" -"Rts information file" "RTS" -"S-Record file" "MOT" -"Stack information file" "SNI" -"TD include object file" "RTI" -[FILE_GROUPS] -"Absolute file" "BIN" "NONE" "" -"Assembly include file" "TEXT" "EDITOR" "" -"Assembly list file" "TEXT" "EDITOR" "" -"Assembly source file" "TEXT" "EDITOR" "" -"Binary file" "BIN" "NONE" "" -"C header file" "TEXT" "EDITOR" "" -"C source file" "TEXT" "EDITOR" "" -"C++ header file" "TEXT" "EDITOR" "" -"C++ source file" "TEXT" "EDITOR" "" -"CPU information file" "BIN" "NONE" "" -"Calling information file" "BIN" "NONE" "" -"Configuration file" "TEXT" "EDITOR" "" -"Debug information file" "BIN" "NONE" "" -"Hex file" "TEXT" "EDITOR" "" -"Library file" "BIN" "NONE" "" -"Library information file" "TEXT" "EDITOR" "" -"Linkage map file" "TEXT" "EDITOR" "" -"Linkage symbol file" "TEXT" "EDITOR" "" -"Object file" "BIN" "NONE" "" -"Optimize map file" "BIN" "NONE" "" -"Preprocessed C source file" "TEXT" "EDITOR" "" -"Preprocessed C++ source file" "TEXT" "EDITOR" "" -"Relocatable file" "BIN" "NONE" "" -"Rts information file" "BIN" "NONE" "" -"S-Record file" "TEXT" "EDITOR" "" -"Stack information file" "BIN" "NONE" "" -"TD include object file" "BIN" "NONE" "" -[ASSOCIATED_APPLICATIONS] -[TOOLCHAIN_PHASE] -"Renesas OptLinker" -"Renesas RX Assembler" -"Renesas RX C/C++ Compiler" -"Renesas RX C/C++ Library Generator" -"Renesas RX Configurator" -[UTILITY_PHASE] -[CUSTOM_PHASES] -[CUSTOM_PHASE_INPUT_GROUP] -[CUSTOM_PHASE_OUTPUT_SYNTAX] -[BUILD_ORDER] -"Renesas RX C/C++ Library Generator" 1 -"Renesas RX C/C++ Compiler" 1 -"Renesas RX Assembler" 1 -"Renesas OptLinker" 1 -"Renesas RX Configurator" 0 -[BUILD_PHASE_DETAILS] -"Renesas OptLinker" "Object file|Library file|Relocatable file" 0 -"Renesas RX Assembler" "Assembly source file|Linkage symbol file" 1 -"Renesas RX C/C++ Compiler" "C source file|C++ source file" 1 -"Renesas RX C/C++ Library Generator" "" 0 -"Renesas RX Configurator" "Configuration file" 0 -[BUILD_FILE_ORDER_Assembly source file] -"Renesas RX Assembler" 1 -[BUILD_FILE_ORDER_C source file] -"Renesas RX C/C++ Compiler" 1 -[BUILD_FILE_ORDER_C++ source file] -"Renesas RX C/C++ Compiler" 1 -[BUILD_FILE_ORDER_Linkage symbol file] -"Renesas RX Assembler" 1 -[SCRAP] -"Project Generator Setup File" "" -[MAPPINGS] -"Assembly source file" "Renesas RX Assembler" "Renesas RX C/C++ Compiler" -"Library file" "Renesas OptLinker" "Renesas RX C/C++ Library Generator" -"Object file" "Renesas OptLinker" "Renesas RX Assembler" -"Object file" "Renesas OptLinker" "Renesas RX C/C++ Compiler" -[PROJECT_FILES] -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\BlockQ.c" "User" "C source file|Common demo tasks" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\GenQTest.c" "User" "C source file|Common demo tasks" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\IntQueue.c" "User" "C source file|Common demo tasks" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\PollQ.c" "User" "C source file|Common demo tasks" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\QPeek.c" "User" "C source file|Common demo tasks" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\blocktim.c" "User" "C source file|Common demo tasks" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\death.c" "User" "C source file|Common demo tasks" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\flash.c" "User" "C source file|Common demo tasks" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\flop.c" "User" "C source file|Common demo tasks" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\integer.c" "User" "C source file|Common demo tasks" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\recmutex.c" "User" "C source file|Common demo tasks" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\semtest.c" "User" "C source file|Common demo tasks" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\apps\httpd\http-strings.c" "User" "C source file|FreeTCP (based on uIP)|webserver|Common" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd-fs.c" "User" "C source file|FreeTCP (based on uIP)|webserver|Common" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd.c" "User" "C source file|FreeTCP (based on uIP)|webserver|Common" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\psock.c" "User" "C source file|FreeTCP (based on uIP)" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\timer.c" "User" "C source file|FreeTCP (based on uIP)" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\uip.c" "User" "C source file|FreeTCP (based on uIP)" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\uip_arp.c" "User" "C source file|FreeTCP (based on uIP)" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\HighFrequencyTimerTest.c" "User" "C source file" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\IntQueueTimer.c" "User" "C source file" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\ParTest.c" "User" "C source file" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\Renesas-Files\dbsct.c" "User" "C source file|Renesas Files" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\Renesas-Files\hwsetup.c" "User" "C source file|Renesas Files" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\Renesas-Files\intprg.c" "User" "C source file|Renesas Files" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\Renesas-Files\lowlvl.src" "User" "C source file|Renesas Files" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\Renesas-Files\lowsrc.c" "User" "C source file|Renesas Files" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\Renesas-Files\resetprg.c" "User" "C source file|Renesas Files" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\Renesas-Files\sbrk.c" "User" "C source file|Renesas Files" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\Renesas-Files\vecttbl.c" "User" "C source file|Renesas Files" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\main-blinky.c" "User" "C source file" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\main-full.c" "User" "C source file" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\uIP_Task.c" "User" "C source file" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\webserver\EMAC.c" "User" "C source file|FreeTCP (based on uIP)|webserver|Port specific" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\webserver\httpd-cgi.c" "User" "C source file|FreeTCP (based on uIP)|webserver|Port specific" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\webserver\httpd-fsdata.c" "User" "C source file|FreeTCP (based on uIP)|webserver|Port specific" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\webserver\phy.c" "User" "C source file|FreeTCP (based on uIP)|webserver|Port specific" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\list.c" "User" "C source file|FreeRTOS" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\portable\MemMang\heap_2.c" "User" "C source file|FreeRTOS|Portable layer" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\portable\Renesas\RX600\port.c" "User" "C source file|FreeRTOS|Portable layer" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\portable\Renesas\RX600\port_asm.src" "User" "C source file|FreeRTOS|Portable layer" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\queue.c" "User" "C source file|FreeRTOS" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\tasks.c" "User" "C source file|FreeRTOS" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\timers.c" "User" "C source file|FreeRTOS" 2 -[FOLDER] -"Assembly source file" "Assembly source file" -"C source file" "C source file" -"C source file|Common demo tasks" "" -"C source file|FreeRTOS" "" -"C source file|FreeRTOS|Portable layer" "" -"C source file|FreeTCP (based on uIP)" "" -"C source file|FreeTCP (based on uIP)|webserver" "" -"C source file|FreeTCP (based on uIP)|webserver|Common" "" -"C source file|FreeTCP (based on uIP)|webserver|Port specific" "" -"C source file|Renesas Files" "" -[GENERAL_DATA_PROJECT] -"MAKEGEN_GENERATE_MAKEFILE_FOR" "0" -"MAKEGEN_MAKEFILE_FORMAT" "2" -"MAKEGEN_MAKEFILE_RELATIVITY" "1" -"MAKEGEN_SCAN_DEPENDENCIES_WHILST_BUILDING_MAKEFILE" "1" -"MAKEGEN_USE_STATIC_SUBCOMMAND_FILES" "1" -"USE_CUSTOM_LINKAGE_ORDER" "0" -[ON_DEMAND_COMPONENTS_LOADED] -[SYNC_SESSION_NAMES] -[SESSIONS] -"DefaultSession" "C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\DefaultSession.hsf" 0 -"SessionRX600_E1_E20_SYSTEM" "C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\SessionRX600_E1_E20_SYSTEM.hsf" 0 -"SimSessionRX600" "C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\SimSessionRX600.hsf" 0 -[GENERAL_DATA_SESSION_DefaultSession] -[GENERAL_DATA_SESSION_SessionRX600_E1_E20_SYSTEM] -[GENERAL_DATA_SESSION_SimSessionRX600] -[OPTIONS_Blinky_Renesas OptLinker] -"Single Shot" "0875a156ef7aec10" 5 -[OPTIONS_Blinky_Renesas RX Assembler] -"Assembly source file" "0875a156ef7aec10" 4 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\Renesas-Files\lowlvl.src" "0875a156ef7aec10" 4 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\portable\Renesas\RX600\port_asm.src" "0875a156ef7aec10" 4 -"Linkage symbol file" "0875a156ef7aec10" 4 -[OPTIONS_Blinky_Renesas RX C/C++ Compiler] -"C source file" "0ae89056ef7aec10" 2 -"C++ source file" "0ae89056ef7aec10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\BlockQ.c" "0ae89056ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\GenQTest.c" "0ae89056ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\IntQueue.c" "0ae89056ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\PollQ.c" "0ae89056ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\QPeek.c" "0ae89056ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\blocktim.c" "0ae89056ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\death.c" "0ae89056ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\flash.c" "0ae89056ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\flop.c" "0ae89056ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\integer.c" "0ae89056ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\recmutex.c" "0ae89056ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\semtest.c" "0ae89056ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\apps\httpd\http-strings.c" "0ae89056ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd-fs.c" "0ae89056ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd.c" "0ae89056ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\psock.c" "0ae89056ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\timer.c" "0ae89056ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\uip.c" "0ae89056ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\uip_arp.c" "0ae89056ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\HighFrequencyTimerTest.c" "0ae89056ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\IntQueueTimer.c" "0ae89056ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\ParTest.c" "0ae89056ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\Renesas-Files\dbsct.c" "0ae89056ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\Renesas-Files\hwsetup.c" "0ae89056ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\Renesas-Files\intprg.c" "0ae89056ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\Renesas-Files\lowsrc.c" "0ae89056ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\Renesas-Files\resetprg.c" "0ae89056ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\Renesas-Files\sbrk.c" "0ae89056ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\Renesas-Files\vecttbl.c" "0ae89056ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\main-blinky.c" "0ae89056ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\main-full.c" "0ae89056ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\uIP_Task.c" "0ae89056ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\webserver\EMAC.c" "0ae89056ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\webserver\httpd-cgi.c" "0ae89056ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\webserver\httpd-fsdata.c" "0ae89056ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\webserver\phy.c" "0ae89056ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\list.c" "0ae89056ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\portable\MemMang\heap_2.c" "0ae89056ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\portable\Renesas\RX600\port.c" "0ae89056ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\queue.c" "0ae89056ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\tasks.c" "0ae89056ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\timers.c" "0ae89056ef7aec10" 2 -[OPTIONS_Blinky_Renesas RX C/C++ Library Generator] -"Single Shot" "0ae89056ef7aec10" 1 -[OPTIONS_Blinky_Renesas RX Configurator] -"Single Shot" "0875a156ef7aec10" 6 -[OPTIONS_Blinky] -"" 0 -"[V|VERSION|1] [B|COMMAND|1] [S|SPEC|UITRON4] [S|OUTPUTPATH|^"$(CONFIGDIR)^"] [S|CPU|RX600] [S|ENDIAN|LITTLE] [S|FINT_REGISTER|0]" 6 -"[V|VERSION|1] [B|SJIS|1] [B|DEBUG|1] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(FILELEAF).obj^"] [S|CPU|RX600] [S|BASE|00000000=NONE] [B|SKIPDEPENDENCY|1] -" 4 -"[V|VERSION|1] [S|LANG|CPP] [B|SJIS|1] [S|INCLUDE|^"$(PROJDIR)\..\..\..\Source\portable\Renesas\RX600^"|^"$(PROJDIR)\..\..\..\Source\include^"|^"$(PROJDIR)\.^"|^"$(PROJDIR)\..\..\include^"|^"$(PROJDIR)\..\..\Common\include^"|^"$(PROJDIR)\.\include^"] [S|CHANGE_MESSAGE|INFORMATION|] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(FILELEAF).obj^"] [B|DEBUG|1] [S|OPTIMIZE|0] [B|SIZE|1] [B|MAP|0] [I|INLINE|100] [I|LOOP|2] [S|MISRA2004_CHECK_RULE|ALL] [S|MISRA2004_RULE|1.1|3.4|4.1|5.2|5.3|5.4|5.5|5.6|5.7|6.1|6.2|6.3|6.4|6.5|7.1|8.1|8.2|8.3|8.5|8.6|8.7|8.8|8.11|8.12|9.2|9.3|10.1|10.2|10.3|10.4|10.5|10.6|11.1|11.2|11.3|11.4|11.5|12.1|12.2|12.3|12.4|12.5|12.6|12.7|12.8|12.9|12.10|12.11|12.12|12.13|13.1|13.2|13.3|13.4|13.7|14.1|14.2|14.3|14.4|14.5|14.6|14.7|14.8|14.9|14.10|15.1|15.2|15.3|15.4|15.5|16.1|16.2|16.3|16.4|16.5|16.6|16.8|16.9|17.3|17.4|17.5|17.6|18.1|18.2|18.4|19.1|20.2|20.4|20.5|20.7|20.8|20.9|20.10|20.11|20.12] [S|MISRA1998_CHECK_RULE|ALL] [S|MISRA1998_RULE|1|5|8|12|13|14|17|18|19|20|21|22|24|28|29|31|32|33|34|35|36|37|38|39|40|42|43|44|45|46|48|49|50|51|53|54|55|56|57|58|59|60|61|62|63|64|65|68|69|70|71|72|73|74|75|76|77|78|79|80|82|83|84|85|99|101|102|103|104|105|106|108|110|111|112|113|115|118|119|121|122|123|124|125|126|127] [S|MISRA_GROUP_FILE_PATH|^"$(PROJDIR)\$(PROJECTNAME).rde^"] [S|CPU|RX600] [S|BASE|00000000=NONE] [B|SKIPDEPENDENCY|1] [N|DEPENDSCAN|1] -" 3 -"[V|VERSION|1] [S|LANG|C] [B|SJIS|1] [S|INCLUDE|^"$(PROJDIR)\..\..\..\Source\portable\Renesas\RX600^"|^"$(PROJDIR)\..\..\..\Source\include^"|^"$(PROJDIR)\.^"|^"$(PROJDIR)\..\..\include^"|^"$(PROJDIR)\..\..\Common\include^"|^"$(PROJDIR)\.\include^"] [S|CHANGE_MESSAGE|INFORMATION|] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(FILELEAF).obj^"] [B|DEBUG|1] [S|OPTIMIZE|0] [B|SIZE|1] [B|MAP|0] [I|INLINE|100] [I|LOOP|2] [S|MISRA2004_CHECK_RULE|ALL] [S|MISRA2004_RULE|1.1|3.4|4.1|5.2|5.3|5.4|5.5|5.6|5.7|6.1|6.2|6.3|6.4|6.5|7.1|8.1|8.2|8.3|8.5|8.6|8.7|8.8|8.11|8.12|9.2|9.3|10.1|10.2|10.3|10.4|10.5|10.6|11.1|11.2|11.3|11.4|11.5|12.1|12.2|12.3|12.4|12.5|12.6|12.7|12.8|12.9|12.10|12.11|12.12|12.13|13.1|13.2|13.3|13.4|13.7|14.1|14.2|14.3|14.4|14.5|14.6|14.7|14.8|14.9|14.10|15.1|15.2|15.3|15.4|15.5|16.1|16.2|16.3|16.4|16.5|16.6|16.8|16.9|17.3|17.4|17.5|17.6|18.1|18.2|18.4|19.1|20.2|20.4|20.5|20.7|20.8|20.9|20.10|20.11|20.12] [S|MISRA1998_CHECK_RULE|ALL] [S|MISRA1998_RULE|1|5|8|12|13|14|17|18|19|20|21|22|24|28|29|31|32|33|34|35|36|37|38|39|40|42|43|44|45|46|48|49|50|51|53|54|55|56|57|58|59|60|61|62|63|64|65|68|69|70|71|72|73|74|75|76|77|78|79|80|82|83|84|85|99|101|102|103|104|105|106|108|110|111|112|113|115|118|119|121|122|123|124|125|126|127] [S|MISRA_GROUP_FILE_PATH|^"$(PROJDIR)\$(PROJECTNAME).rde^"] [S|CPU|RX600] [S|BASE|00000000=NONE] [B|SKIPDEPENDENCY|1] [N|DEPENDSCAN|1] -" 2 -"[V|VERSION|1] [S|MODE|BUILD/CHANGED] [S|EXISTOUTPUTPATH|^"$(CONFIGDIR)\$(PROJECTNAME).lib^"] [B|RUNTIME|1] [B|MATH|1] [B|STDIO|1] [B|STDLIB|1] [B|STRING|1] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(PROJECTNAME).lib^"] [B|SIZE|1] [I|INLINE|100] [I|LOOP|2] [S|CPU|RX600] [S|BASE|00000000=NONE] [I|PID|16] [B|SKIPDEPENDENCY|1] -" 1 -"[V|VERSION|6] [S|FORM|STYPE] [S|BYTE_COUNT_VALUE|FF] [B|DEBUG|1] [S|ROM|(D,R)|(D_1,R_1)|(D_2,R_2)] [S|CRC|NONE|DEFAULT|00000000] [B|LIST|1] [S|LIST|^"$(CONFIGDIR)\$(PROJECTNAME).map^"] [S|SHOW|METHODCUSTOM|] [S|OUTPUT|^"$(CONFIGDIR)\$(PROJECTNAME).mot^"] [I|SPACE|^"FF^"] [B|OPTIMIZE|0] [S|START|B_1,R_1,B_2,R_2,B,R,SU,SI(01000)|PResetPRG(0FFF80000)|C_1,C_2,C,L*,C$*,D*,P,PIntPRG,W*(0FFF81000)|FIXEDVECT(0FFFFFFD0)] [B|SKIPDEPENDENCY|1] -" 5 -[EXCLUDED_FILES_Blinky] -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\apps\httpd\http-strings.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd-fs.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\psock.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\timer.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\uip.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\uip_arp.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\BlockQ.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\blocktim.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\death.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\flash.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\flop.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\GenQTest.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\integer.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\IntQueue.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\PollQ.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\QPeek.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\recmutex.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\semtest.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\HighFrequencyTimerTest.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\IntQueueTimer.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\main-full.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\uIP_Task.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\webserver\EMAC.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\webserver\httpd-cgi.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\webserver\httpd-fsdata.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\webserver\phy.c" -[LINKAGE_ORDER_Blinky] -[GENERAL_DATA_CONFIGURATION_Blinky] -[OPTIONS_Debug_Renesas OptLinker] -"Single Shot" "02d70456ef7aec10" 6 -[OPTIONS_Debug_Renesas RX Assembler] -"Assembly source file" "02d70456ef7aec10" 5 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\Renesas-Files\lowlvl.src" "02d70456ef7aec10" 5 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\portable\Renesas\RX600\port_asm.src" "02d70456ef7aec10" 5 -"Linkage symbol file" "02d70456ef7aec10" 4 -[OPTIONS_Debug_Renesas RX C/C++ Compiler] -"C source file" "030e6356ef7aec10" 2 -"C++ source file" "030e6356ef7aec10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\BlockQ.c" "030e6356ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\GenQTest.c" "030e6356ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\IntQueue.c" "030e6356ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\PollQ.c" "030e6356ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\QPeek.c" "030e6356ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\blocktim.c" "030e6356ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\death.c" "030e6356ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\flash.c" "030e6356ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\flop.c" "030e6356ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\integer.c" "030e6356ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\recmutex.c" "030e6356ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\semtest.c" "030e6356ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\apps\httpd\http-strings.c" "030e6356ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd-fs.c" "030e6356ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd.c" "030e6356ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\psock.c" "030e6356ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\timer.c" "030e6356ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\uip.c" "030e6356ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\uip_arp.c" "030e6356ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\HighFrequencyTimerTest.c" "030e6356ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\IntQueueTimer.c" "030e6356ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\ParTest.c" "030e6356ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\Renesas-Files\dbsct.c" "030e6356ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\Renesas-Files\hwsetup.c" "030e6356ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\Renesas-Files\intprg.c" "030e6356ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\Renesas-Files\lowsrc.c" "030e6356ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\Renesas-Files\resetprg.c" "030e6356ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\Renesas-Files\sbrk.c" "030e6356ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\Renesas-Files\vecttbl.c" "030e6356ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\main-blinky.c" "030e6356ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\main-full.c" "030e6356ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\uIP_Task.c" "030e6356ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\webserver\EMAC.c" "030e6356ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\webserver\httpd-cgi.c" "030e6356ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\webserver\httpd-fsdata.c" "030e6356ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\webserver\phy.c" "030e6356ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\list.c" "030e6356ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\portable\MemMang\heap_2.c" "030e6356ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\portable\Renesas\RX600\port.c" "030e6356ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\queue.c" "030e6356ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\tasks.c" "030e6356ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\timers.c" "030e6356ef7aec10" 2 -[OPTIONS_Debug_Renesas RX C/C++ Library Generator] -"Single Shot" "030e6356ef7aec10" 1 -[OPTIONS_Debug_Renesas RX Configurator] -"Single Shot" "02d70456ef7aec10" 7 -[OPTIONS_Debug] -"" 0 -"[V|VERSION|1] [B|COMMAND|1] [S|SPEC|UITRON4] [S|OUTPUTPATH|^"$(CONFIGDIR)^"] [S|CPU|RX600] [S|ENDIAN|LITTLE] [S|FINT_REGISTER|0]" 7 -"[V|VERSION|1] [B|SJIS|1] [B|DEBUG|1] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(FILELEAF).obj^"] [S|CPU|RX600] [S|BASE|00000000=NONE] -" 4 -"[V|VERSION|1] [B|SJIS|1] [S|INCLUDE|^"$(PROJDIR)^"] [B|DEBUG|1] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(FILELEAF).obj^"] [S|CPU|RX600] [S|BASE|00000000=NONE] -" 5 -"[V|VERSION|1] [S|LANG|C99] [B|SJIS|1] [S|INCLUDE|^"$(PROJDIR)\..\..\..\Source\portable\Renesas\RX600^"|^"$(PROJDIR)\..\..\..\Source\include^"|^"$(PROJDIR)\.^"|^"$(PROJDIR)\..\..\include^"|^"$(PROJDIR)\..\..\Common\include^"|^"$(PROJDIR)\.\include^"|^"$(PROJDIR)\..\..\Common\ethernet\FreeTCPIP^"|^"$(PROJDIR)\webserver^"] [S|CHANGE_MESSAGE|INFORMATION|] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(FILELEAF).obj^"] [B|DEBUG|1] [S|OPTIMIZE|0] [B|SIZE|1] [B|MAP|0] [I|INLINE|100] [I|LOOP|2] [S|MISRA2004_CHECK_RULE|ALL] [S|MISRA2004_RULE|1.1|3.4|4.1|5.2|5.3|5.4|5.5|5.6|5.7|6.1|6.2|6.3|6.4|6.5|7.1|8.1|8.2|8.3|8.5|8.6|8.7|8.8|8.11|8.12|9.2|9.3|10.1|10.2|10.3|10.4|10.5|10.6|11.1|11.2|11.3|11.4|11.5|12.1|12.2|12.3|12.4|12.5|12.6|12.7|12.8|12.9|12.10|12.11|12.12|12.13|13.1|13.2|13.3|13.4|13.7|14.1|14.2|14.3|14.4|14.5|14.6|14.7|14.8|14.9|14.10|15.1|15.2|15.3|15.4|15.5|16.1|16.2|16.3|16.4|16.5|16.6|16.8|16.9|17.3|17.4|17.5|17.6|18.1|18.2|18.4|19.1|20.2|20.4|20.5|20.7|20.8|20.9|20.10|20.11|20.12] [S|MISRA1998_CHECK_RULE|ALL] [S|MISRA1998_RULE|1|5|8|12|13|14|17|18|19|20|21|22|24|28|29|31|32|33|34|35|36|37|38|39|40|42|43|44|45|46|48|49|50|51|53|54|55|56|57|58|59|60|61|62|63|64|65|68|69|70|71|72|73|74|75|76|77|78|79|80|82|83|84|85|99|101|102|103|104|105|106|108|110|111|112|113|115|118|119|121|122|123|124|125|126|127] [S|MISRA_GROUP_FILE_PATH|^"$(PROJDIR)\$(PROJECTNAME).rde^"] [S|CPU|RX600] [S|BASE|00000000=NONE] -" 2 -"[V|VERSION|1] [S|LANG|CPP] [B|SJIS|1] [S|INCLUDE|^"$(PROJDIR)\..\..\..\Source\portable\Renesas\RX600^"|^"$(PROJDIR)\..\..\..\Source\include^"|^"$(PROJDIR)\.^"|^"$(PROJDIR)\..\..\include^"|^"$(PROJDIR)\..\..\Common\include^"|^"$(PROJDIR)\.\include^"|^"$(PROJDIR)\..\..\Common\ethernet\FreeTCPIP^"|^"$(PROJDIR)\webserver^"] [S|CHANGE_MESSAGE|INFORMATION|] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(FILELEAF).obj^"] [B|DEBUG|1] [S|OPTIMIZE|0] [B|SIZE|1] [B|MAP|0] [I|INLINE|100] [I|LOOP|2] [S|MISRA2004_CHECK_RULE|ALL] [S|MISRA2004_RULE|1.1|3.4|4.1|5.2|5.3|5.4|5.5|5.6|5.7|6.1|6.2|6.3|6.4|6.5|7.1|8.1|8.2|8.3|8.5|8.6|8.7|8.8|8.11|8.12|9.2|9.3|10.1|10.2|10.3|10.4|10.5|10.6|11.1|11.2|11.3|11.4|11.5|12.1|12.2|12.3|12.4|12.5|12.6|12.7|12.8|12.9|12.10|12.11|12.12|12.13|13.1|13.2|13.3|13.4|13.7|14.1|14.2|14.3|14.4|14.5|14.6|14.7|14.8|14.9|14.10|15.1|15.2|15.3|15.4|15.5|16.1|16.2|16.3|16.4|16.5|16.6|16.8|16.9|17.3|17.4|17.5|17.6|18.1|18.2|18.4|19.1|20.2|20.4|20.5|20.7|20.8|20.9|20.10|20.11|20.12] [S|MISRA1998_CHECK_RULE|ALL] [S|MISRA1998_RULE|1|5|8|12|13|14|17|18|19|20|21|22|24|28|29|31|32|33|34|35|36|37|38|39|40|42|43|44|45|46|48|49|50|51|53|54|55|56|57|58|59|60|61|62|63|64|65|68|69|70|71|72|73|74|75|76|77|78|79|80|82|83|84|85|99|101|102|103|104|105|106|108|110|111|112|113|115|118|119|121|122|123|124|125|126|127] [S|MISRA_GROUP_FILE_PATH|^"$(PROJDIR)\$(PROJECTNAME).rde^"] [S|CPU|RX600] [S|BASE|00000000=NONE] -" 3 -"[V|VERSION|1] [S|MODE|BUILD/CHANGED] [S|EXISTOUTPUTPATH|^"$(CONFIGDIR)\$(PROJECTNAME).lib^"] [B|RUNTIME|1] [B|MATH|1] [B|STDIO|1] [B|STDLIB|1] [B|STRING|1] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(PROJECTNAME).lib^"] [B|SIZE|1] [I|INLINE|100] [I|LOOP|2] [S|CPU|RX600] [S|BASE|00000000=NONE] -" 1 -"[V|VERSION|6] [S|PRELINK|SKIP] [S|FORM|STYPE] [S|BYTE_COUNT_VALUE|FF] [B|DEBUG|1] [S|ROM|(D,R)|(D_1,R_1)|(D_2,R_2)] [S|CRC|NONE|DEFAULT|00000000] [B|LIST|1] [S|LIST|^"$(CONFIGDIR)\$(PROJECTNAME).map^"] [S|SHOW|METHODALL|] [S|OUTPUT|^"$(CONFIGDIR)\$(PROJECTNAME).mot^"] [I|SPACE|^"FF^"] [B|OPTIMIZE|0] [S|START|B_RX_DESC,B_TX_DESC,B_ETHERNET_BUFFERS,B_1,R_1,B_2,R_2,B,R,SU,SI(01000)|PResetPRG(0FFF80000)|C_1,C_2,C,L*,C$*,D*,P,PIntPRG,W*(0FFF81000)|FIXEDVECT(0FFFFFFD0)] -" 6 -[EXCLUDED_FILES_Debug] -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\main-blinky.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\Renesas-Files\lowlvl.src" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\Renesas-Files\lowsrc.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\webserver\httpd-fsdata.c" -[LINKAGE_ORDER_Debug] -[GENERAL_DATA_CONFIGURATION_Debug] -[OPTIONS_Debug_RX600_E1_E20_SYSTEM_Renesas OptLinker] -"Single Shot" "05a6d256ef7aec10" 5 -[OPTIONS_Debug_RX600_E1_E20_SYSTEM_Renesas RX Assembler] -"Assembly source file" "05a6d256ef7aec10" 4 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\Renesas-Files\lowlvl.src" "05a6d256ef7aec10" 4 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\portable\Renesas\RX600\port_asm.src" "05a6d256ef7aec10" 4 -"Linkage symbol file" "05a6d256ef7aec10" 4 -[OPTIONS_Debug_RX600_E1_E20_SYSTEM_Renesas RX C/C++ Compiler] -"C source file" "06e36256ef7aec10" 2 -"C++ source file" "06e36256ef7aec10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\BlockQ.c" "06e36256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\GenQTest.c" "06e36256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\IntQueue.c" "06e36256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\PollQ.c" "06e36256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\QPeek.c" "06e36256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\blocktim.c" "06e36256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\death.c" "06e36256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\flash.c" "06e36256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\flop.c" "06e36256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\integer.c" "06e36256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\recmutex.c" "06e36256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\semtest.c" "06e36256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\apps\httpd\http-strings.c" "06e36256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd-fs.c" "06e36256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd.c" "06e36256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\psock.c" "06e36256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\timer.c" "06e36256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\uip.c" "06e36256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\uip_arp.c" "06e36256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\HighFrequencyTimerTest.c" "06e36256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\IntQueueTimer.c" "06e36256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\ParTest.c" "06e36256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\Renesas-Files\dbsct.c" "06e36256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\Renesas-Files\hwsetup.c" "06e36256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\Renesas-Files\intprg.c" "06e36256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\Renesas-Files\lowsrc.c" "06e36256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\Renesas-Files\resetprg.c" "06e36256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\Renesas-Files\sbrk.c" "06e36256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\Renesas-Files\vecttbl.c" "06e36256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\main-blinky.c" "06e36256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\main-full.c" "06e36256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\uIP_Task.c" "06e36256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\webserver\EMAC.c" "06e36256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\webserver\httpd-cgi.c" "06e36256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\webserver\httpd-fsdata.c" "06e36256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\webserver\phy.c" "06e36256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\list.c" "06e36256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\portable\MemMang\heap_2.c" "06e36256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\portable\Renesas\RX600\port.c" "06e36256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\queue.c" "06e36256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\tasks.c" "06e36256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\timers.c" "06e36256ef7aec10" 2 -[OPTIONS_Debug_RX600_E1_E20_SYSTEM_Renesas RX C/C++ Library Generator] -"Single Shot" "06e36256ef7aec10" 1 -[OPTIONS_Debug_RX600_E1_E20_SYSTEM_Renesas RX Configurator] -"Single Shot" "05a6d256ef7aec10" 6 -[OPTIONS_Debug_RX600_E1_E20_SYSTEM] -"" 0 -"[S|OUTPUTPATH|^"$(CONFIGDIR)\$(PROJECTNAME).lib^"] [V|VERSION|1] [S|CPU|RX600] [S|ENDIAN|LITTLE] [S|ROUND|NEAREST] [S|DBL_SIZE|4] [B|SIGNED_CHAR|0] [B|SIGNED_BITFIELD|0] [S|BIT_ORDER|RIGHT] [S|FINT_REGISTER|0] [S|BRANCH|24] [S|LANG|C] [B|RUNTIME|1] [B|CTYPE|0] [B|MATH|0] [B|MATHF|0] [B|STDARG|0] [B|STDIO|0] [B|STDLIB|0] [B|STRING|0] [B|IOS|0] [B|NEW|1] [B|COMPLEX|0] [B|CPPSTRING|0] [S|MODE|BUILD/CHANGED]" 1 -"[V|VERSION|1] [B|COMMAND|1] [S|SPEC|UITRON4] [S|OUTPUTPATH|^"$(CONFIGDIR)^"] [S|CPU|RX600] [S|ENDIAN|LITTLE] [S|FINT_REGISTER|0]" 6 -"[V|VERSION|1] [B|DEBUG|1] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(FILELEAF).obj^"] [B|LISTFILE|0] [S|CPU|RX600] [S|ENDIAN|LITTLE] [S|FINT_REGISTER|0]" 4 -"[V|VERSION|1] [S|LANG|CPP] [B|SJIS|1] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(FILELEAF).obj^"] [B|DEBUG|1] [B|SIZE|1] [B|MAP|0] [I|INLINE|100] [I|LOOP|2] [S|MISRA2004_CHECK_RULE|ALL] [S|MISRA2004_RULE|1.1|3.4|4.1|5.2|5.3|5.4|5.5|5.6|5.7|6.1|6.2|6.3|6.4|6.5|7.1|8.1|8.2|8.3|8.5|8.6|8.7|8.8|8.11|8.12|9.2|9.3|10.1|10.2|10.3|10.4|10.5|10.6|11.1|11.2|11.3|11.4|11.5|12.1|12.2|12.3|12.4|12.5|12.6|12.7|12.8|12.9|12.10|12.11|12.12|12.13|13.1|13.2|13.3|13.4|13.7|14.1|14.2|14.3|14.4|14.5|14.6|14.7|14.8|14.9|14.10|15.1|15.2|15.3|15.4|15.5|16.1|16.2|16.3|16.4|16.5|16.6|16.8|16.9|17.3|17.4|17.5|17.6|18.1|18.2|18.4|19.1|20.2|20.4|20.5|20.7|20.8|20.9|20.10|20.11|20.12] [S|MISRA1998_CHECK_RULE|ALL] [S|MISRA1998_RULE|1|5|8|12|13|14|17|18|19|20|21|22|24|28|29|31|32|33|34|35|36|37|38|39|40|42|43|44|45|46|48|49|50|51|53|54|55|56|57|58|59|60|61|62|63|64|65|68|69|70|71|72|73|74|75|76|77|78|79|80|82|83|84|85|99|101|102|103|104|105|106|108|110|111|112|113|115|118|119|121|122|123|124|125|126|127] [S|MISRA_GROUP_FILE_PATH|^"$(PROJDIR)\$(PROJECTNAME).rde^"] [S|CPU|RX600] [S|BASE|00000000=NONE] -" 3 -"[V|VERSION|1] [S|LANG|C] [B|SJIS|1] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(FILELEAF).obj^"] [B|DEBUG|1] [B|SIZE|1] [B|MAP|0] [I|INLINE|100] [I|LOOP|2] [S|MISRA2004_CHECK_RULE|ALL] [S|MISRA2004_RULE|1.1|3.4|4.1|5.2|5.3|5.4|5.5|5.6|5.7|6.1|6.2|6.3|6.4|6.5|7.1|8.1|8.2|8.3|8.5|8.6|8.7|8.8|8.11|8.12|9.2|9.3|10.1|10.2|10.3|10.4|10.5|10.6|11.1|11.2|11.3|11.4|11.5|12.1|12.2|12.3|12.4|12.5|12.6|12.7|12.8|12.9|12.10|12.11|12.12|12.13|13.1|13.2|13.3|13.4|13.7|14.1|14.2|14.3|14.4|14.5|14.6|14.7|14.8|14.9|14.10|15.1|15.2|15.3|15.4|15.5|16.1|16.2|16.3|16.4|16.5|16.6|16.8|16.9|17.3|17.4|17.5|17.6|18.1|18.2|18.4|19.1|20.2|20.4|20.5|20.7|20.8|20.9|20.10|20.11|20.12] [S|MISRA1998_CHECK_RULE|ALL] [S|MISRA1998_RULE|1|5|8|12|13|14|17|18|19|20|21|22|24|28|29|31|32|33|34|35|36|37|38|39|40|42|43|44|45|46|48|49|50|51|53|54|55|56|57|58|59|60|61|62|63|64|65|68|69|70|71|72|73|74|75|76|77|78|79|80|82|83|84|85|99|101|102|103|104|105|106|108|110|111|112|113|115|118|119|121|122|123|124|125|126|127] [S|MISRA_GROUP_FILE_PATH|^"$(PROJDIR)\$(PROJECTNAME).rde^"] [S|CPU|RX600] [S|BASE|00000000=NONE] -" 2 -"[V|VERSION|6] [B|DEBUG|1] [S|OUTPUT|^"$(CONFIGDIR)\$(PROJECTNAME).abs^"] [B|LIST|1] [S|LIST|^"$(CONFIGDIR)\$(PROJECTNAME).map^"] [B|OPTIMIZE|0] [S|ROM|(D,R)|(D_1,R_1)|(D_2,R_2)] [S|FORM|STYPE] [S|OUTPUT|^"$(CONFIGDIR)\$(PROJECTNAME).mot^"] [S|START|B_1,R_1,B_2,R_2,B,R,SU,SI(1000)|PResetPRG(FFFF8000)|C_1,C_2,C,C$*,D*,P,PIntPRG,W*(FFFF8100)|FIXEDVECT(FFFFFFD0)] [S|ENDIAN|LITTLE]" 5 -[EXCLUDED_FILES_Debug_RX600_E1_E20_SYSTEM] -[LINKAGE_ORDER_Debug_RX600_E1_E20_SYSTEM] -[GENERAL_DATA_CONFIGURATION_Debug_RX600_E1_E20_SYSTEM] -[OPTIONS_Debug_with_optimisation_Renesas OptLinker] -"Single Shot" "06e36256ef7aec10" 5 -[OPTIONS_Debug_with_optimisation_Renesas RX Assembler] -"Assembly source file" "06dc3256ef7aec10" 4 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\Renesas-Files\lowlvl.src" "06dc3256ef7aec10" 4 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\portable\Renesas\RX600\port_asm.src" "06dc3256ef7aec10" 4 -"Linkage symbol file" "06dc3256ef7aec10" 4 -[OPTIONS_Debug_with_optimisation_Renesas RX C/C++ Compiler] -"C source file" "0875a156ef7aec10" 2 -"C++ source file" "0875a156ef7aec10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\BlockQ.c" "0875a156ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\GenQTest.c" "0875a156ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\IntQueue.c" "0875a156ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\PollQ.c" "0875a156ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\QPeek.c" "0875a156ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\blocktim.c" "0875a156ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\death.c" "0875a156ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\flash.c" "0875a156ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\flop.c" "0875a156ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\integer.c" "0875a156ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\recmutex.c" "0875a156ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\semtest.c" "0875a156ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\apps\httpd\http-strings.c" "0875a156ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd-fs.c" "0875a156ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd.c" "0875a156ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\psock.c" "0875a156ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\timer.c" "0875a156ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\uip.c" "0875a156ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\uip_arp.c" "0875a156ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\HighFrequencyTimerTest.c" "0875a156ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\IntQueueTimer.c" "0875a156ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\ParTest.c" "0875a156ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\Renesas-Files\dbsct.c" "0875a156ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\Renesas-Files\hwsetup.c" "0875a156ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\Renesas-Files\intprg.c" "0875a156ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\Renesas-Files\lowsrc.c" "0875a156ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\Renesas-Files\resetprg.c" "0875a156ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\Renesas-Files\sbrk.c" "0875a156ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\Renesas-Files\vecttbl.c" "0875a156ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\main-blinky.c" "0875a156ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\main-full.c" "0875a156ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\uIP_Task.c" "0875a156ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\webserver\EMAC.c" "0875a156ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\webserver\httpd-cgi.c" "0875a156ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\webserver\httpd-fsdata.c" "0875a156ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\webserver\phy.c" "0875a156ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\list.c" "0875a156ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\portable\MemMang\heap_2.c" "0875a156ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\portable\Renesas\RX600\port.c" "0875a156ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\queue.c" "0875a156ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\tasks.c" "0875a156ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\timers.c" "0875a156ef7aec10" 2 -[OPTIONS_Debug_with_optimisation_Renesas RX C/C++ Library Generator] -"Single Shot" "0875a156ef7aec10" 1 -[OPTIONS_Debug_with_optimisation_Renesas RX Configurator] -"Single Shot" "06e36256ef7aec10" 6 -[OPTIONS_Debug_with_optimisation] -"" 0 -"[V|VERSION|1] [B|COMMAND|1] [S|SPEC|UITRON4] [S|OUTPUTPATH|^"$(CONFIGDIR)^"] [S|CPU|RX600] [S|ENDIAN|LITTLE] [S|FINT_REGISTER|0]" 6 -"[V|VERSION|1] [B|SJIS|1] [B|DEBUG|1] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(FILELEAF).obj^"] [S|CPU|RX600] [S|BASE|00000000=NONE] [B|SKIPDEPENDENCY|1] -" 4 -"[V|VERSION|1] [S|LANG|CPP] [B|SJIS|1] [S|INCLUDE|^"$(PROJDIR)\..\..\..\Source\portable\Renesas\RX600^"|^"$(PROJDIR)\..\..\..\Source\include^"|^"$(PROJDIR)\.^"|^"$(PROJDIR)\..\..\include^"|^"$(PROJDIR)\..\..\Common\include^"|^"$(PROJDIR)\.\include^"|^"$(PROJDIR)\..\..\Common\ethernet\FreeTCPIP^"|^"$(PROJDIR)\webserver^"] [S|DEFINE|INCLUDE_HIGH_FREQUENCY_TIMER_TEST=1] [S|CHANGE_MESSAGE|INFORMATION|] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(FILELEAF).obj^"] [B|DEBUG|1] [S|OPTIMIZE|MAX] [B|SIZE|1] [B|MAP|0] [I|INLINE|100] [I|LOOP|2] [S|MISRA2004_CHECK_RULE|ALL] [S|MISRA2004_RULE|1.1|3.4|4.1|5.2|5.3|5.4|5.5|5.6|5.7|6.1|6.2|6.3|6.4|6.5|7.1|8.1|8.2|8.3|8.5|8.6|8.7|8.8|8.11|8.12|9.2|9.3|10.1|10.2|10.3|10.4|10.5|10.6|11.1|11.2|11.3|11.4|11.5|12.1|12.2|12.3|12.4|12.5|12.6|12.7|12.8|12.9|12.10|12.11|12.12|12.13|13.1|13.2|13.3|13.4|13.7|14.1|14.2|14.3|14.4|14.5|14.6|14.7|14.8|14.9|14.10|15.1|15.2|15.3|15.4|15.5|16.1|16.2|16.3|16.4|16.5|16.6|16.8|16.9|17.3|17.4|17.5|17.6|18.1|18.2|18.4|19.1|20.2|20.4|20.5|20.7|20.8|20.9|20.10|20.11|20.12] [S|MISRA1998_CHECK_RULE|ALL] [S|MISRA1998_RULE|1|5|8|12|13|14|17|18|19|20|21|22|24|28|29|31|32|33|34|35|36|37|38|39|40|42|43|44|45|46|48|49|50|51|53|54|55|56|57|58|59|60|61|62|63|64|65|68|69|70|71|72|73|74|75|76|77|78|79|80|82|83|84|85|99|101|102|103|104|105|106|108|110|111|112|113|115|118|119|121|122|123|124|125|126|127] [S|MISRA_GROUP_FILE_PATH|^"$(PROJDIR)\$(PROJECTNAME).rde^"] [S|CPU|RX600] [S|BASE|00000000=NONE] [I|PID|16] [B|SKIPDEPENDENCY|1] [N|DEPENDSCAN|1] -" 3 -"[V|VERSION|1] [S|LANG|C] [B|SJIS|1] [S|INCLUDE|^"$(PROJDIR)\..\..\..\Source\portable\Renesas\RX600^"|^"$(PROJDIR)\..\..\..\Source\include^"|^"$(PROJDIR)\.^"|^"$(PROJDIR)\..\..\include^"|^"$(PROJDIR)\..\..\Common\include^"|^"$(PROJDIR)\.\include^"|^"$(PROJDIR)\..\..\Common\ethernet\FreeTCPIP^"|^"$(PROJDIR)\webserver^"] [S|DEFINE|INCLUDE_HIGH_FREQUENCY_TIMER_TEST=1] [S|CHANGE_MESSAGE|INFORMATION|] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(FILELEAF).obj^"] [B|DEBUG|1] [S|OPTIMIZE|MAX] [B|SIZE|1] [B|MAP|0] [I|INLINE|100] [I|LOOP|2] [S|MISRA2004_CHECK_RULE|ALL] [S|MISRA2004_RULE|1.1|3.4|4.1|5.2|5.3|5.4|5.5|5.6|5.7|6.1|6.2|6.3|6.4|6.5|7.1|8.1|8.2|8.3|8.5|8.6|8.7|8.8|8.11|8.12|9.2|9.3|10.1|10.2|10.3|10.4|10.5|10.6|11.1|11.2|11.3|11.4|11.5|12.1|12.2|12.3|12.4|12.5|12.6|12.7|12.8|12.9|12.10|12.11|12.12|12.13|13.1|13.2|13.3|13.4|13.7|14.1|14.2|14.3|14.4|14.5|14.6|14.7|14.8|14.9|14.10|15.1|15.2|15.3|15.4|15.5|16.1|16.2|16.3|16.4|16.5|16.6|16.8|16.9|17.3|17.4|17.5|17.6|18.1|18.2|18.4|19.1|20.2|20.4|20.5|20.7|20.8|20.9|20.10|20.11|20.12] [S|MISRA1998_CHECK_RULE|ALL] [S|MISRA1998_RULE|1|5|8|12|13|14|17|18|19|20|21|22|24|28|29|31|32|33|34|35|36|37|38|39|40|42|43|44|45|46|48|49|50|51|53|54|55|56|57|58|59|60|61|62|63|64|65|68|69|70|71|72|73|74|75|76|77|78|79|80|82|83|84|85|99|101|102|103|104|105|106|108|110|111|112|113|115|118|119|121|122|123|124|125|126|127] [S|MISRA_GROUP_FILE_PATH|^"$(PROJDIR)\$(PROJECTNAME).rde^"] [S|CPU|RX600] [S|BASE|00000000=NONE] [I|PID|16] [B|SKIPDEPENDENCY|1] [N|DEPENDSCAN|1] -" 2 -"[V|VERSION|1] [S|MODE|BUILD/CHANGED] [S|EXISTOUTPUTPATH|^"$(CONFIGDIR)\$(PROJECTNAME).lib^"] [B|RUNTIME|1] [B|MATH|1] [B|STDIO|1] [B|STDLIB|1] [B|STRING|1] [B|NOFLOAT|1] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(PROJECTNAME).lib^"] [B|SIZE|1] [I|INLINE|100] [I|LOOP|2] [S|CPU|RX600] [S|BASE|00000000=NONE] [I|PID|16] [B|SKIPDEPENDENCY|1] -" 1 -"[V|VERSION|6] [S|FORM|STYPE] [S|BYTE_COUNT_VALUE|FF] [B|DEBUG|1] [S|ROM|(D,R)|(D_1,R_1)|(D_2,R_2)] [S|CRC|NONE|DEFAULT|00000000] [B|LIST|1] [S|LIST|^"$(CONFIGDIR)\$(PROJECTNAME).map^"] [S|SHOW|METHODCUSTOM|] [S|OUTPUT|^"$(CONFIGDIR)\$(PROJECTNAME).mot^"] [I|SPACE|^"FF^"] [S|OPTIMIZEITEMS|SPEED] [S|START|B_RX_DESC,B_TX_DESC,B_ETHERNET_BUFFERS,B_1,R_1,B_2,R_2,B,R,SU,SI(01000)|PResetPRG(0FFF80000)|C_1,C_2,C,L*,C$*,D*,P,PIntPRG,W*(0FFF81000)|FIXEDVECT(0FFFFFFD0)] [B|SKIPDEPENDENCY|1] -" 5 -[EXCLUDED_FILES_Debug_with_optimisation] -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\main-blinky.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\webserver\httpd-fsdata.c" -[LINKAGE_ORDER_Debug_with_optimisation] -[GENERAL_DATA_CONFIGURATION_Debug_with_optimisation] -[OPTIONS_SimDebug_RX600_Renesas OptLinker] -"Single Shot" "04694356ef7aec10" 5 -[OPTIONS_SimDebug_RX600_Renesas RX Assembler] -"Assembly source file" "04694356ef7aec10" 4 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\Renesas-Files\lowlvl.src" "04694356ef7aec10" 4 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\portable\Renesas\RX600\port_asm.src" "04694356ef7aec10" 4 -"Linkage symbol file" "04694356ef7aec10" 4 -[OPTIONS_SimDebug_RX600_Renesas RX C/C++ Compiler] -"C source file" "05a6d256ef7aec10" 2 -"C++ source file" "05a6d256ef7aec10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\BlockQ.c" "05a6d256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\GenQTest.c" "05a6d256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\IntQueue.c" "05a6d256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\PollQ.c" "05a6d256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\QPeek.c" "05a6d256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\blocktim.c" "05a6d256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\death.c" "05a6d256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\flash.c" "05a6d256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\flop.c" "05a6d256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\integer.c" "05a6d256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\recmutex.c" "05a6d256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\semtest.c" "05a6d256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\apps\httpd\http-strings.c" "05a6d256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd-fs.c" "05a6d256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd.c" "05a6d256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\psock.c" "05a6d256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\timer.c" "05a6d256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\uip.c" "05a6d256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\uip_arp.c" "05a6d256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\HighFrequencyTimerTest.c" "05a6d256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\IntQueueTimer.c" "05a6d256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\ParTest.c" "05a6d256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\Renesas-Files\dbsct.c" "05a6d256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\Renesas-Files\hwsetup.c" "05a6d256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\Renesas-Files\intprg.c" "05a6d256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\Renesas-Files\lowsrc.c" "05a6d256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\Renesas-Files\resetprg.c" "05a6d256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\Renesas-Files\sbrk.c" "05a6d256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\Renesas-Files\vecttbl.c" "05a6d256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\main-blinky.c" "05a6d256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\main-full.c" "05a6d256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\uIP_Task.c" "05a6d256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\webserver\EMAC.c" "05a6d256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\webserver\httpd-cgi.c" "05a6d256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\webserver\httpd-fsdata.c" "05a6d256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RDK_Renesas\RTOSDemo\webserver\phy.c" "05a6d256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\list.c" "05a6d256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\portable\MemMang\heap_2.c" "05a6d256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\portable\Renesas\RX600\port.c" "05a6d256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\queue.c" "05a6d256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\tasks.c" "05a6d256ef7aec10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\timers.c" "05a6d256ef7aec10" 2 -[OPTIONS_SimDebug_RX600_Renesas RX C/C++ Library Generator] -"Single Shot" "05a6d256ef7aec10" 1 -[OPTIONS_SimDebug_RX600_Renesas RX Configurator] -"Single Shot" "030e6356ef7aec10" 6 -[OPTIONS_SimDebug_RX600] -"" 0 -"[S|OUTPUTPATH|^"$(CONFIGDIR)\$(PROJECTNAME).lib^"] [V|VERSION|1] [S|CPU|RX600] [S|ENDIAN|LITTLE] [S|ROUND|NEAREST] [S|DBL_SIZE|4] [B|SIGNED_CHAR|0] [B|SIGNED_BITFIELD|0] [S|BIT_ORDER|RIGHT] [S|FINT_REGISTER|0] [S|BRANCH|24] [S|LANG|C] [B|RUNTIME|1] [B|CTYPE|0] [B|MATH|0] [B|MATHF|0] [B|STDARG|0] [B|STDIO|0] [B|STDLIB|0] [B|STRING|0] [B|IOS|0] [B|NEW|1] [B|COMPLEX|0] [B|CPPSTRING|0] [S|MODE|BUILD/CHANGED]" 1 -"[V|VERSION|1] [B|COMMAND|1] [S|SPEC|UITRON4] [S|OUTPUTPATH|^"$(CONFIGDIR)^"] [S|CPU|RX600] [S|ENDIAN|LITTLE] [S|FINT_REGISTER|0]" 6 -"[V|VERSION|1] [B|DEBUG|1] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(FILELEAF).obj^"] [B|LISTFILE|0] [S|CPU|RX600] [S|ENDIAN|LITTLE] [S|FINT_REGISTER|0]" 4 -"[V|VERSION|1] [S|LANG|CPP] [B|SJIS|1] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(FILELEAF).obj^"] [B|DEBUG|1] [B|SIZE|1] [B|MAP|0] [I|INLINE|100] [I|LOOP|2] [S|MISRA2004_CHECK_RULE|ALL] [S|MISRA2004_RULE|1.1|3.4|4.1|5.2|5.3|5.4|5.5|5.6|5.7|6.1|6.2|6.3|6.4|6.5|7.1|8.1|8.2|8.3|8.5|8.6|8.7|8.8|8.11|8.12|9.2|9.3|10.1|10.2|10.3|10.4|10.5|10.6|11.1|11.2|11.3|11.4|11.5|12.1|12.2|12.3|12.4|12.5|12.6|12.7|12.8|12.9|12.10|12.11|12.12|12.13|13.1|13.2|13.3|13.4|13.7|14.1|14.2|14.3|14.4|14.5|14.6|14.7|14.8|14.9|14.10|15.1|15.2|15.3|15.4|15.5|16.1|16.2|16.3|16.4|16.5|16.6|16.8|16.9|17.3|17.4|17.5|17.6|18.1|18.2|18.4|19.1|20.2|20.4|20.5|20.7|20.8|20.9|20.10|20.11|20.12] [S|MISRA1998_CHECK_RULE|ALL] [S|MISRA1998_RULE|1|5|8|12|13|14|17|18|19|20|21|22|24|28|29|31|32|33|34|35|36|37|38|39|40|42|43|44|45|46|48|49|50|51|53|54|55|56|57|58|59|60|61|62|63|64|65|68|69|70|71|72|73|74|75|76|77|78|79|80|82|83|84|85|99|101|102|103|104|105|106|108|110|111|112|113|115|118|119|121|122|123|124|125|126|127] [S|MISRA_GROUP_FILE_PATH|^"$(PROJDIR)\$(PROJECTNAME).rde^"] [S|CPU|RX600] [S|BASE|00000000=NONE] -" 3 -"[V|VERSION|1] [S|LANG|C] [B|SJIS|1] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(FILELEAF).obj^"] [B|DEBUG|1] [B|SIZE|1] [B|MAP|0] [I|INLINE|100] [I|LOOP|2] [S|MISRA2004_CHECK_RULE|ALL] [S|MISRA2004_RULE|1.1|3.4|4.1|5.2|5.3|5.4|5.5|5.6|5.7|6.1|6.2|6.3|6.4|6.5|7.1|8.1|8.2|8.3|8.5|8.6|8.7|8.8|8.11|8.12|9.2|9.3|10.1|10.2|10.3|10.4|10.5|10.6|11.1|11.2|11.3|11.4|11.5|12.1|12.2|12.3|12.4|12.5|12.6|12.7|12.8|12.9|12.10|12.11|12.12|12.13|13.1|13.2|13.3|13.4|13.7|14.1|14.2|14.3|14.4|14.5|14.6|14.7|14.8|14.9|14.10|15.1|15.2|15.3|15.4|15.5|16.1|16.2|16.3|16.4|16.5|16.6|16.8|16.9|17.3|17.4|17.5|17.6|18.1|18.2|18.4|19.1|20.2|20.4|20.5|20.7|20.8|20.9|20.10|20.11|20.12] [S|MISRA1998_CHECK_RULE|ALL] [S|MISRA1998_RULE|1|5|8|12|13|14|17|18|19|20|21|22|24|28|29|31|32|33|34|35|36|37|38|39|40|42|43|44|45|46|48|49|50|51|53|54|55|56|57|58|59|60|61|62|63|64|65|68|69|70|71|72|73|74|75|76|77|78|79|80|82|83|84|85|99|101|102|103|104|105|106|108|110|111|112|113|115|118|119|121|122|123|124|125|126|127] [S|MISRA_GROUP_FILE_PATH|^"$(PROJDIR)\$(PROJECTNAME).rde^"] [S|CPU|RX600] [S|BASE|00000000=NONE] -" 2 -"[V|VERSION|6] [B|DEBUG|1] [S|OUTPUT|^"$(CONFIGDIR)\$(PROJECTNAME).abs^"] [B|LIST|1] [S|LIST|^"$(CONFIGDIR)\$(PROJECTNAME).map^"] [B|OPTIMIZE|0] [S|ROM|(D,R)|(D_1,R_1)|(D_2,R_2)] [S|FORM|STYPE] [S|OUTPUT|^"$(CONFIGDIR)\$(PROJECTNAME).mot^"] [S|START|B_1,R_1,B_2,R_2,B,R,SU,SI(1000)|PResetPRG(FFFF8000)|C_1,C_2,C,C$*,D*,P,PIntPRG,W*(FFFF8100)|FIXEDVECT(FFFFFFD0)] [S|ENDIAN|LITTLE]" 5 -[EXCLUDED_FILES_SimDebug_RX600] -[LINKAGE_ORDER_SimDebug_RX600] -[GENERAL_DATA_CONFIGURATION_SimDebug_RX600] -[GENERAL_DATA_CONFIGURATION_SESSION_Blinky_DefaultSession] -[SESSION_DATA_CONFIGURATION_SESSION_Blinky_DefaultSession] -"MEMORY_MAPPING_OPTIONS" "" -[GENERAL_DATA_CONFIGURATION_SESSION_Blinky_SessionRX600_E1_E20_SYSTEM] -[SESSION_DATA_CONFIGURATION_SESSION_Blinky_SessionRX600_E1_E20_SYSTEM] -"MEMORY_MAPPING_OPTIONS" "Unknown Options" -[GENERAL_DATA_CONFIGURATION_SESSION_Blinky_SimSessionRX600] -[SESSION_DATA_CONFIGURATION_SESSION_Blinky_SimSessionRX600] -"MEMORY_MAPPING_OPTIONS" "[V|VERSION|1] [S|CPUTYPE|^"Other (RX600)^"] [S|MAP|^"0x00000000,0x0001FFFF,RAM,32,0101,2 0x00080000,0x000FFFFF,I/O,32,0101,2 0x00100000,0x00107FFF,ROM,32,0101,2 0x007F8000,0x007F9FFF,RAM,32,0101,2 0x007FC000,0x007FC4FF,I/O,32,0101,2 0x007FFC00,0x007FFFFF,I/O,32,0101,2 0x00E00000,0x00FFFFFF,ROM,32,0101,2 0xFEFFE000,0xFEFFFFFF,ROM,32,0101,2 0xFF7FC000,0xFF7FFFFF,ROM,32,0101,2 0xFFE00000,0xFFFFFFFF,ROM,32,0101,2^"] [S|RESOURCE|^"0x00000000,0x0001FFFF,R/W 0x00080000,0x000FFFFF,R/W 0x007FC000,0x007FC4FF,R/W 0x007FFC00,0x007FFFFF,R/W 0xFFFF8000,0xFFFFFFFF,R/W ^"] [B|SIMIOF|0] [I|SIMIOADR|0x0] [I|BUS_MODE|0] [S|ENDIAN|^"LITTLE^"] [S|PATCH|^"OFF^"]" -[GENERAL_DATA_CONFIGURATION_SESSION_Debug_DefaultSession] -[SESSION_DATA_CONFIGURATION_SESSION_Debug_DefaultSession] -"MEMORY_MAPPING_OPTIONS" "" -[GENERAL_DATA_CONFIGURATION_SESSION_Debug_SessionRX600_E1_E20_SYSTEM] -[SESSION_DATA_CONFIGURATION_SESSION_Debug_SessionRX600_E1_E20_SYSTEM] -"MEMORY_MAPPING_OPTIONS" "Unknown Options" -[GENERAL_DATA_CONFIGURATION_SESSION_Debug_SimSessionRX600] -[SESSION_DATA_CONFIGURATION_SESSION_Debug_SimSessionRX600] -"MEMORY_MAPPING_OPTIONS" "[V|VERSION|1] [S|CPUTYPE|^"Other (RX600)^"] [S|MAP|^"0x00000000,0x0001FFFF,RAM,32,0101,2 0x00080000,0x000FFFFF,I/O,32,0101,2 0x00100000,0x00107FFF,ROM,32,0101,2 0x007F8000,0x007F9FFF,RAM,32,0101,2 0x007FC000,0x007FC4FF,I/O,32,0101,2 0x007FFC00,0x007FFFFF,I/O,32,0101,2 0x00E00000,0x00FFFFFF,ROM,32,0101,2 0xFEFFE000,0xFEFFFFFF,ROM,32,0101,2 0xFF7FC000,0xFF7FFFFF,ROM,32,0101,2 0xFFE00000,0xFFFFFFFF,ROM,32,0101,2^"] [S|RESOURCE|^"0x00000000,0x0001FFFF,R/W 0x00080000,0x000FFFFF,R/W 0x007FC000,0x007FC4FF,R/W 0x007FFC00,0x007FFFFF,R/W 0xFFFF8000,0xFFFFFFFF,R/W ^"] [B|SIMIOF|0] [I|SIMIOADR|0x0] [I|BUS_MODE|0] [S|ENDIAN|^"LITTLE^"] [S|PATCH|^"OFF^"]" -[GENERAL_DATA_CONFIGURATION_SESSION_Debug_RX600_E1_E20_SYSTEM_DefaultSession] -[SESSION_DATA_CONFIGURATION_SESSION_Debug_RX600_E1_E20_SYSTEM_DefaultSession] -"MEMORY_MAPPING_OPTIONS" "" -[GENERAL_DATA_CONFIGURATION_SESSION_Debug_RX600_E1_E20_SYSTEM_SessionRX600_E1_E20_SYSTEM] -[SESSION_DATA_CONFIGURATION_SESSION_Debug_RX600_E1_E20_SYSTEM_SessionRX600_E1_E20_SYSTEM] -"MEMORY_MAPPING_OPTIONS" "Unknown Options" -[GENERAL_DATA_CONFIGURATION_SESSION_Debug_RX600_E1_E20_SYSTEM_SimSessionRX600] -[SESSION_DATA_CONFIGURATION_SESSION_Debug_RX600_E1_E20_SYSTEM_SimSessionRX600] -"MEMORY_MAPPING_OPTIONS" "[V|VERSION|1] [S|CPUTYPE|^"Other (RX600)^"] [S|MAP|^"0x00000000,0x0001FFFF,RAM,32,0101,2 0x00080000,0x000FFFFF,I/O,32,0101,2 0x00100000,0x00107FFF,ROM,32,0101,2 0x007F8000,0x007F9FFF,RAM,32,0101,2 0x007FC000,0x007FC4FF,I/O,32,0101,2 0x007FFC00,0x007FFFFF,I/O,32,0101,2 0x00E00000,0x00FFFFFF,ROM,32,0101,2 0xFEFFE000,0xFEFFFFFF,ROM,32,0101,2 0xFF7FC000,0xFF7FFFFF,ROM,32,0101,2 0xFFE00000,0xFFFFFFFF,ROM,32,0101,2^"] [S|RESOURCE|^"0x00000000,0x0001FFFF,R/W 0x00080000,0x000FFFFF,R/W 0x007FC000,0x007FC4FF,R/W 0x007FFC00,0x007FFFFF,R/W 0xFFFF8000,0xFFFFFFFF,R/W ^"] [B|SIMIOF|0] [I|SIMIOADR|0x0] [I|BUS_MODE|0] [S|ENDIAN|^"LITTLE^"] [S|PATCH|^"OFF^"]" -[GENERAL_DATA_CONFIGURATION_SESSION_Debug_with_optimisation_DefaultSession] -[SESSION_DATA_CONFIGURATION_SESSION_Debug_with_optimisation_DefaultSession] -"MEMORY_MAPPING_OPTIONS" "" -[GENERAL_DATA_CONFIGURATION_SESSION_Debug_with_optimisation_SessionRX600_E1_E20_SYSTEM] -[SESSION_DATA_CONFIGURATION_SESSION_Debug_with_optimisation_SessionRX600_E1_E20_SYSTEM] -"MEMORY_MAPPING_OPTIONS" "Unknown Options" -[GENERAL_DATA_CONFIGURATION_SESSION_Debug_with_optimisation_SimSessionRX600] -[SESSION_DATA_CONFIGURATION_SESSION_Debug_with_optimisation_SimSessionRX600] -"MEMORY_MAPPING_OPTIONS" "[V|VERSION|1] [S|CPUTYPE|^"Other (RX600)^"] [S|MAP|^"0x00000000,0x0001FFFF,RAM,32,0101,2 0x00080000,0x000FFFFF,I/O,32,0101,2 0x00100000,0x00107FFF,ROM,32,0101,2 0x007F8000,0x007F9FFF,RAM,32,0101,2 0x007FC000,0x007FC4FF,I/O,32,0101,2 0x007FFC00,0x007FFFFF,I/O,32,0101,2 0x00E00000,0x00FFFFFF,ROM,32,0101,2 0xFEFFE000,0xFEFFFFFF,ROM,32,0101,2 0xFF7FC000,0xFF7FFFFF,ROM,32,0101,2 0xFFE00000,0xFFFFFFFF,ROM,32,0101,2^"] [S|RESOURCE|^"0x00000000,0x0001FFFF,R/W 0x00080000,0x000FFFFF,R/W 0x007FC000,0x007FC4FF,R/W 0x007FFC00,0x007FFFFF,R/W 0xFFFF8000,0xFFFFFFFF,R/W ^"] [B|SIMIOF|0] [I|SIMIOADR|0x0] [I|BUS_MODE|0] [S|ENDIAN|^"LITTLE^"] [S|PATCH|^"OFF^"]" -[GENERAL_DATA_CONFIGURATION_SESSION_SimDebug_RX600_DefaultSession] -[SESSION_DATA_CONFIGURATION_SESSION_SimDebug_RX600_DefaultSession] -"MEMORY_MAPPING_OPTIONS" "" -[GENERAL_DATA_CONFIGURATION_SESSION_SimDebug_RX600_SessionRX600_E1_E20_SYSTEM] -[SESSION_DATA_CONFIGURATION_SESSION_SimDebug_RX600_SessionRX600_E1_E20_SYSTEM] -"MEMORY_MAPPING_OPTIONS" "Unknown Options" -[GENERAL_DATA_CONFIGURATION_SESSION_SimDebug_RX600_SimSessionRX600] -[SESSION_DATA_CONFIGURATION_SESSION_SimDebug_RX600_SimSessionRX600] -"MEMORY_MAPPING_OPTIONS" "[V|VERSION|1] [S|CPUTYPE|^"Other (RX600)^"] [S|MAP|^"0x00000000,0x0001FFFF,RAM,32,0101,2 0x00080000,0x000FFFFF,I/O,32,0101,2 0x00100000,0x00107FFF,ROM,32,0101,2 0x007F8000,0x007F9FFF,RAM,32,0101,2 0x007FC000,0x007FC4FF,I/O,32,0101,2 0x007FFC00,0x007FFFFF,I/O,32,0101,2 0x00E00000,0x00FFFFFF,ROM,32,0101,2 0xFEFFE000,0xFEFFFFFF,ROM,32,0101,2 0xFF7FC000,0xFF7FFFFF,ROM,32,0101,2 0xFFE00000,0xFFFFFFFF,ROM,32,0101,2^"] [S|RESOURCE|^"0x00000000,0x0001FFFF,R/W 0x00080000,0x000FFFFF,R/W 0x007FC000,0x007FC4FF,R/W 0x007FFC00,0x007FFFFF,R/W 0xFFFF8000,0xFFFFFFFF,R/W ^"] [B|SIMIOF|0] [I|SIMIOADR|0x0] [I|BUS_MODE|0] [S|ENDIAN|^"LITTLE^"] [S|PATCH|^"OFF^"]" -[EXT_DEBUGGER_INFO] -0 "" "" "" "" -[END] diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/RTOSDemo.nav b/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/RTOSDemo.nav deleted file mode 100644 index 41b478438..000000000 Binary files a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/RTOSDemo.nav and /dev/null differ diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/RTOSDemo.tps b/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/RTOSDemo.tps deleted file mode 100644 index cd6a070f7..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/RTOSDemo.tps +++ /dev/null @@ -1,68 +0,0 @@ -[HIMDBVersion] -2.0 -[DATABASE_VERSION] -"1.1" -[SESSIONS_] -"DefaultSession" -"SessionRX600_E1_E20_SYSTEM" -"SimSessionRX600" -[CONFIGURATIONS] -"Blinky" -"Debug" -"Debug_RX600_E1_E20_SYSTEM" -"Debug_with_optimisation" -"SimDebug_RX600" -[CURRENT_CONFIGURATION] -"Debug" -[CURRENT_SESSION] -"SessionRX600_E1_E20_SYSTEM" -[GENERAL_DATA_PROJECT] -[GENERAL_DATA_CONFIGURATION_Blinky] -"PROJECT_FILES_MODIFIED_DATA_TAG" "FALSE" -[SESSIONS_Blinky] -"DefaultSession" -"SessionRX600_E1_E20_SYSTEM" -"SimSessionRX600" -[GENERAL_DATA_CONFIGURATION_Debug] -"PROJECT_FILES_MODIFIED_DATA_TAG" "FALSE" -[SESSIONS_Debug] -"DefaultSession" -"SessionRX600_E1_E20_SYSTEM" -"SimSessionRX600" -[GENERAL_DATA_CONFIGURATION_Debug_RX600_E1_E20_SYSTEM] -"PROJECT_FILES_MODIFIED_DATA_TAG" "TRUE" -[SESSIONS_Debug_RX600_E1_E20_SYSTEM] -"DefaultSession" -"SessionRX600_E1_E20_SYSTEM" -"SimSessionRX600" -[GENERAL_DATA_CONFIGURATION_Debug_with_optimisation] -"PROJECT_FILES_MODIFIED_DATA_TAG" "FALSE" -[SESSIONS_Debug_with_optimisation] -"DefaultSession" -"SessionRX600_E1_E20_SYSTEM" -"SimSessionRX600" -[GENERAL_DATA_CONFIGURATION_SimDebug_RX600] -"PROJECT_FILES_MODIFIED_DATA_TAG" "TRUE" -[SESSIONS_SimDebug_RX600] -"DefaultSession" -"SessionRX600_E1_E20_SYSTEM" -"SimSessionRX600" -[GENERAL_DATA_SESSION_SimSessionRX600] -[GENERAL_DATA_SESSION_DefaultSession] -[GENERAL_DATA_CONFIGURATION_SESSION_Debug_with_optimisation_SimSessionRX600] -[GENERAL_DATA_CONFIGURATION_SESSION_Debug_RX600_E1_E20_SYSTEM_SimSessionRX600] -[GENERAL_DATA_CONFIGURATION_SESSION_Blinky_SessionRX600_E1_E20_SYSTEM] -[GENERAL_DATA_CONFIGURATION_SESSION_Blinky_DefaultSession] -[GENERAL_DATA_CONFIGURATION_SESSION_Debug_RX600_E1_E20_SYSTEM_SessionRX600_E1_E20_SYSTEM] -[GENERAL_DATA_CONFIGURATION_SESSION_Debug_DefaultSession] -[GENERAL_DATA_CONFIGURATION_SESSION_SimDebug_RX600_SessionRX600_E1_E20_SYSTEM] -[GENERAL_DATA_CONFIGURATION_SESSION_Debug_RX600_E1_E20_SYSTEM_DefaultSession] -[GENERAL_DATA_CONFIGURATION_SESSION_SimDebug_RX600_DefaultSession] -[GENERAL_DATA_CONFIGURATION_SESSION_Debug_SessionRX600_E1_E20_SYSTEM] -[GENERAL_DATA_CONFIGURATION_SESSION_Debug_SimSessionRX600] -[GENERAL_DATA_CONFIGURATION_SESSION_SimDebug_RX600_SimSessionRX600] -[GENERAL_DATA_CONFIGURATION_SESSION_Debug_with_optimisation_DefaultSession] -[GENERAL_DATA_CONFIGURATION_SESSION_Blinky_SimSessionRX600] -[GENERAL_DATA_CONFIGURATION_SESSION_Debug_with_optimisation_SessionRX600_E1_E20_SYSTEM] -[GENERAL_DATA_SESSION_SessionRX600_E1_E20_SYSTEM] -[END] diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/Renesas-Files/dbsct.c b/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/Renesas-Files/dbsct.c deleted file mode 100644 index 156f0b8f3..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/Renesas-Files/dbsct.c +++ /dev/null @@ -1,66 +0,0 @@ -/***********************************************************************/ -/* */ -/* FILE :dbsct.c */ -/* DATE :Wed, Aug 11, 2010 */ -/* DESCRIPTION :Setting of B,R Section */ -/* CPU TYPE :Other */ -/* */ -/* This file is generated by Renesas Project Generator (Ver.4.50). */ -/* NOTE:THIS IS A TYPICAL EXAMPLE. */ -/* */ -/***********************************************************************/ - - -/********************************************************************* -* -* Device : RX -* -* File Name : dbsct.c -* -* Abstract : Setting of B,R Section. -* -* History : 1.00 (2009-08-07) -* -* NOTE : THIS IS A TYPICAL EXAMPLE. -* -* Copyright(c) 2009 Renesas Technology Corp. -* And Renesas Solutions Corp.,All Rights Reserved. -* -*********************************************************************/ - -#include "typedefine.h" - -#pragma unpack - -#pragma section C C$DSEC -extern const struct { - _UBYTE *rom_s; /* Start address of the initialized data section in ROM */ - _UBYTE *rom_e; /* End address of the initialized data section in ROM */ - _UBYTE *ram_s; /* Start address of the initialized data section in RAM */ -} _DTBL[] = { - { __sectop("D"), __secend("D"), __sectop("R") }, - { __sectop("D_2"), __secend("D_2"), __sectop("R_2") }, - { __sectop("D_1"), __secend("D_1"), __sectop("R_1") } -}; -#pragma section C C$BSEC -extern const struct { - _UBYTE *b_s; /* Start address of non-initialized data section */ - _UBYTE *b_e; /* End address of non-initialized data section */ -} _BTBL[] = { - { __sectop("B"), __secend("B") }, - { __sectop("B_2"), __secend("B_2") }, - { __sectop("B_1"), __secend("B_1") } -}; - -#pragma section - -/* -** CTBL prevents excessive output of L1100 messages when linking. -** Even if CTBL is deleted, the operation of the program does not change. -*/ -_UBYTE * const _CTBL[] = { - __sectop("C_1"), __sectop("C_2"), __sectop("C"), - __sectop("W_1"), __sectop("W_2"), __sectop("W") -}; - -#pragma packoption diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/Renesas-Files/hwsetup.c b/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/Renesas-Files/hwsetup.c deleted file mode 100644 index d8085c12a..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/Renesas-Files/hwsetup.c +++ /dev/null @@ -1,150 +0,0 @@ -/****************************************************************************** -* DISCLAIMER - -* This software is supplied by Renesas Technology Corp. and is only -* intended for use with Renesas products. No other uses are authorized. - -* This software is owned by Renesas Technology Corp. and is protected under -* all applicable laws, including copyright laws. - -* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES -* REGARDING THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, -* INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A -* PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY -* DISCLAIMED. - -* TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS -* TECHNOLOGY CORP. NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE -* FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES -* FOR ANY REASON RELATED TO THE THIS SOFTWARE, EVEN IF RENESAS OR ITS -* AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - -* Renesas reserves the right, without notice, to make changes to this -* software and to discontinue the availability of this software. -* By using this software, you agree to the additional terms and -* conditions found by accessing the following link: -* http://www.renesas.com/disclaimer -****************************************************************************** -* Copyright (C) 2008. Renesas Technology Corp., All Rights Reserved. -******************************************************************************* -* File Name : hwsetup.c -* Version : 1.00 -* Description : Power up hardware initializations -****************************************************************************** -* History : DD.MM.YYYY Version Description -* : 15.02.2010 1.00 First Release -******************************************************************************/ - - -/****************************************************************************** -Includes , "Project Includes" -******************************************************************************/ -#include -#include "iodefine.h" -#include "yrdkrx62ndef.h" -// #include "lcd.h" Uncomment this if an LCD is present. - -/****************************************************************************** -Typedef definitions -******************************************************************************/ - -/****************************************************************************** -Macro definitions -******************************************************************************/ - -/****************************************************************************** -Imported global variables and functions (from other files) -******************************************************************************/ - -/****************************************************************************** -Exported global variables and functions (to be accessed by other files) -******************************************************************************/ - -/****************************************************************************** -Private global variables and functions -******************************************************************************/ - -/****************************************************************************** -* Function Name: HardwareSetup -* Description : This function does initial setting for CPG port pins used in -* : the Demo including the MII pins of the Ethernet PHY connection. -* Arguments : none -* Return Value : none -******************************************************************************/ -void HardwareSetup(void) -{ - uint32_t sckcr = 0; - - /* Configure system clocks based on header */ - sckcr += (ICLK_MUL==8) ? (0ul << 24) : (ICLK_MUL==4) ? (1ul << 24) : (ICLK_MUL==2) ? (2ul << 24) : (3ul << 24); - sckcr += (BCLK_MUL==8) ? (0ul << 16) : (BCLK_MUL==4) ? (1ul << 16) : (BCLK_MUL==2) ? (2ul << 16) : (3ul << 16); - sckcr += (PCLK_MUL==8) ? (0ul << 8) : (PCLK_MUL==4) ? (1ul << 8) : (PCLK_MUL==2) ? (2ul << 8) : (3ul << 8); - SYSTEM.SCKCR.LONG = sckcr; - - /* Module standby clear - EtherC, EDMAC */ - SYSTEM.MSTPCRB.BIT.MSTPB15 = 0; - - PORT0.DDR.BYTE = 0x00 ; // Port 0: inputs (IRQ's from ethernet & WiFi) - PORT1.DDR.BYTE = 0x00 ; // Port 1: inputs (IIC and USB settings will override these later) - PORT2.DDR.BYTE = 0x1A ; // Port 2: USB signals - PORT3.DDR.BYTE = 0x04 ; // Port 3: JTAG (P30, P31, P34), CAN (P32=Tx, P33=Rx), NMI (P35) - PORT4.DDR.BYTE = 0x00 ; // Port 4: Switches (P40-P42), AIN (P43-P47) - PORT5.DDR.BYTE = 0x3B ; // Port 5: Audio (P55,P54), BCLK (P53), SCI (P52=Rx, P50=Tx), LCD-RS (P51) - - PORTA.DR.BYTE = 0x00 ; // Port A outputs all LOW to start - PORTA.DDR.BYTE = 0xFF ; // Port A: Expansion (PA0-PA2), Ether (PA3-PA5), Audio (PA6-PA7) - - PORTB.DR.BYTE = 0x00 ; - PORTB.DDR.BYTE = 0x70 ; // Port B: Ether - - PORTC.DR.BYTE = 0xF7 ; // Port C: Chip selects, clock = high; IO reset = low (not reset, needed by Ether PHY) - PORTC.DDR.BYTE = 0x7F ; // Port C: SPI (PC0-2, PC4-7), IO reset (PC3) - - // Ethernet settings - IOPORT.PFENET.BYTE = 0x82; // Enable Ether poins, RMII mode, enable LINKSTA - PORTA.ICR.BIT.B5 = 1; // ET_LINKSTA - PORTA.ICR.BIT.B3 = 1; // ET_MDIO - PORTB.ICR.BIT.B0 = 1; // RMII_RXD1 - PORTB.ICR.BIT.B1 = 1; // RMII_RXD0 - PORTB.ICR.BIT.B2 = 1; // REF50CLK - PORTB.ICR.BIT.B3 = 1; // RMII_RX_ER - PORTB.ICR.BIT.B7 = 1; // RMII_CRS_DV - - - /* Configure LEDs */ - LED4 = LED_OFF; - LED5 = LED_OFF; - LED6 = LED_OFF; - LED7 = LED_OFF; - LED8 = LED_OFF; - LED9 = LED_OFF; - LED10 = LED_OFF; - LED11 = LED_OFF; - LED12 = LED_OFF; - LED13 = LED_OFF; - LED14 = LED_OFF; - LED15 = LED_OFF; - - LED4_DDR = 1; - LED5_DDR = 1; - LED6_DDR = 1; - LED7_DDR = 1; - LED8_DDR = 1; - LED9_DDR = 1; - LED10_DDR = 1; - LED11_DDR = 1; - LED12_DDR = 1; - LED13_DDR = 1; - LED14_DDR = 1; - LED15_DDR = 1; - - /* Configure push button switches */ - SW1_DDR = 0; - SW2_DDR = 0; - SW3_DDR = 0; - SW1_ICR = 1; - SW2_ICR = 1; - SW3_ICR = 1; -} - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/Renesas-Files/intprg.c b/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/Renesas-Files/intprg.c deleted file mode 100644 index b5ef3862f..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/Renesas-Files/intprg.c +++ /dev/null @@ -1,53 +0,0 @@ -/***********************************************************************/ -/* */ -/* FILE :intprg.c */ -/* DATE :Wed, Aug 11, 2010 */ -/* DESCRIPTION :Interrupt Program */ -/* CPU TYPE :Other */ -/* */ -/* This file is generated by Renesas Project Generator (Ver.4.50). */ -/* NOTE:THIS IS A TYPICAL EXAMPLE. */ -/* */ -/***********************************************************************/ - - - -/********************************************************************* -* -* Device : RX/RX600 -* -* File Name : intprg.c -* -* Abstract : Interrupt Program. -* -* History : 1.00 (2009-08-07) -* -* NOTE : THIS IS A TYPICAL EXAMPLE. -* -* Copyright(c) 2009 Renesas Technology Corp. -* And Renesas Solutions Corp.,All Rights Reserved. -* -*********************************************************************/ - -#include -#include "vect.h" -#pragma section IntPRG - -// Exception(Supervisor Instruction) -void Excep_SuperVisorInst(void){/* brk(); */} - -// Exception(Undefined Instruction) -void Excep_UndefinedInst(void){/* brk(); */} - -// Exception(Floating Point) -void Excep_FloatingPoint(void){/* brk(); */} - -// NMI -void NonMaskableInterrupt(void){/* brk(); */} - -// Dummy -void Dummy(void){/* brk(); */} - -// BRK -void Excep_BRK(void){ wait(); } - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/Renesas-Files/lowlvl.src b/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/Renesas-Files/lowlvl.src deleted file mode 100644 index 70330dadd..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/Renesas-Files/lowlvl.src +++ /dev/null @@ -1,120 +0,0 @@ - -; Comment out the orginal code - .IF 0 - -;------------------------------------------------------------------------ -; | -; FILE :lowlvl.src | -; DATE :Wed, Jun 16, 2010 | -; DESCRIPTION :Program of Low level | -; CPU TYPE :Other | -; | -; This file is generated by Renesas Project Generator (Ver.4.50). | -; NOTE:THIS IS A TYPICAL EXAMPLE. | -; | -;------------------------------------------------------------------------ - - - .GLB _charput - .GLB _charget - -SIM_IO .EQU 0h - - .SECTION P,CODE -;----------------------------------------------------------------------- -; _charput: -;----------------------------------------------------------------------- -_charput: - MOV.L #IO_BUF,R2 - MOV.B R1,[R2] - MOV.L #1220000h,R1 - MOV.L #PARM,R3 - MOV.L R2,[R3] - MOV.L R3,R2 - MOV.L #SIM_IO,R3 - JSR R3 - RTS - -;----------------------------------------------------------------------- -; _charget: -;----------------------------------------------------------------------- -_charget: - MOV.L #1210000h,R1 - MOV.L #IO_BUF,R2 - MOV.L #PARM,R3 - MOV.L R2,[R3] - MOV.L R3,R2 - MOV.L #SIM_IO,R3 - JSR R3 - MOV.L #IO_BUF,R2 - MOVU.B [R2],R1 - RTS - -;----------------------------------------------------------------------- -; I/O Buffer -;----------------------------------------------------------------------- - .SECTION B,DATA,ALIGN=4 -PARM: .BLKL 1 - .SECTION B_1,DATA -IO_BUF: .BLKB 1 -; .END ; Commented out for conditional assembly - -; Code below is for debug console - .ELSE - -;----------------------------------------------------------------------- -; -; FILE :lowlvl.src -; DATE :Wed, Jul 01, 2009 -; DESCRIPTION :Program of Low level -; CPU TYPE :RX -; -;----------------------------------------------------------------------- - .GLB _charput - .GLB _charget - -FC2E0 .EQU 00084080h -FE2C0 .EQU 00084090h -DBGSTAT .EQU 000840C0h -RXFL0EN .EQU 00001000h -TXFL0EN .EQU 00000100h - - .SECTION P,CODE - -;----------------------------------------------------------------------- -; _charput: -;----------------------------------------------------------------------- -_charput: - .STACK _charput = 00000000h -__C2ESTART: MOV.L #TXFL0EN,R3 - MOV.L #DBGSTAT,R4 -__TXLOOP: MOV.L [R4],R5 - AND R3,R5 - BNZ __TXLOOP -__WRITEFC2E0: MOV.L #FC2E0,R2 - MOV.L R1,[R2] -__CHARPUTEXIT: RTS - -;----------------------------------------------------------------------- -; _charget: -;----------------------------------------------------------------------- -_charget: - .STACK _charget = 00000000h -__E2CSTART: MOV.L #RXFL0EN,R3 - MOV.L #DBGSTAT,R4 -__RXLOOP: MOV.L [R4],R5 - AND R3,R5 - BZ __RXLOOP -__READFE2C0: MOV.L #FE2C0,R2 - MOV.L [R2],R1 -__CHARGETEXIT: RTS - -;----------------------------------------------------------------------- - -; End of conditional code - .ENDIF - - .END - - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/Renesas-Files/lowsrc.c b/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/Renesas-Files/lowsrc.c deleted file mode 100644 index 2d02ccad9..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/Renesas-Files/lowsrc.c +++ /dev/null @@ -1,329 +0,0 @@ -/***********************************************************************/ -/* */ -/* FILE :lowsrc.c */ -/* DATE :Wed, Jun 16, 2010 */ -/* DESCRIPTION :Program of I/O Stream */ -/* CPU TYPE :Other */ -/* */ -/* This file is generated by Renesas Project Generator (Ver.4.50). */ -/* NOTE:THIS IS A TYPICAL EXAMPLE. */ -/* */ -/***********************************************************************/ - - - -/********************************************************************* -* -* Device : RX -* -* File Name : lowsrc.c -* -* Abstract : Program of I/O Stream. -* -* History : 1.00 (2009-08-07) -* -* NOTE : THIS IS A TYPICAL EXAMPLE. -* -* Copyright(c) 2009 Renesas Technology Corp. -* And Renesas Solutions Corp.,All Rights Reserved. -* -*********************************************************************/ - -#include -#include -#include -#include "lowsrc.h" - -/* file number */ -#define STDIN 0 /* Standard input (console) */ -#define STDOUT 1 /* Standard output (console) */ -#define STDERR 2 /* Standard error output (console) */ - -#define FLMIN 0 /* Minimum file number */ -#define _MOPENR 0x1 -#define _MOPENW 0x2 -#define _MOPENA 0x4 -#define _MTRUNC 0x8 -#define _MCREAT 0x10 -#define _MBIN 0x20 -#define _MEXCL 0x40 -#define _MALBUF 0x40 -#define _MALFIL 0x80 -#define _MEOF 0x100 -#define _MERR 0x200 -#define _MLBF 0x400 -#define _MNBF 0x800 -#define _MREAD 0x1000 -#define _MWRITE 0x2000 -#define _MBYTE 0x4000 -#define _MWIDE 0x8000 -/* File Flags */ -#define O_RDONLY 0x0001 /* Read only */ -#define O_WRONLY 0x0002 /* Write only */ -#define O_RDWR 0x0004 /* Both read and Write */ -#define O_CREAT 0x0008 /* A file is created if it is not existed */ -#define O_TRUNC 0x0010 /* The file size is changed to 0 if it is existed. */ -#define O_APPEND 0x0020 /* The position is set for next reading/writing */ - /* 0: Top of the file 1: End of file */ - -/* Special character code */ -#define CR 0x0d /* Carriage return */ -#define LF 0x0a /* Line feed */ - -#if defined( __RX ) -const long _nfiles = IOSTREAM; /* The number of files for input/output files */ -#else -const int _nfiles = IOSTREAM; /* The number of files for input/output files */ -#endif -char flmod[IOSTREAM]; /* The location for the mode of opened file. */ - -unsigned char sml_buf[IOSTREAM]; - -#define FPATH_STDIN "C:\\stdin" -#define FPATH_STDOUT "C:\\stdout" -#define FPATH_STDERR "C:\\stderr" - -/* H8 Normal mode ,SH and RX */ -#if defined( __2000N__ ) || defined( __2600N__ ) || defined( __300HN__ ) || defined( _SH ) -/* Output one character to standard output */ -extern void charput(char); -/* Input one character from standard input */ -extern char charget(void); -/* Output one character to the file */ -extern char fcharput(char, unsigned char); -/* Input one character from the file */ -extern char fcharget(char*, unsigned char); -/* Open the file */ -extern char fileopen(char*, unsigned char, unsigned char*); -/* Close the file */ -extern char fileclose(unsigned char); -/* Move the file offset */ -extern char fpseek(unsigned char, long, unsigned char); -/* Get the file offset */ -extern char fptell(unsigned char, long*); - -/* RX */ -#elif defined( __RX ) -/* Output one character to standard output */ -extern void charput(unsigned char); -/* Input one character from standard input */ -extern unsigned char charget(void); - -/* H8 Advanced mode */ -#elif defined( __2000A__ ) || defined( __2600A__ ) || defined( __300HA__ ) || defined( __H8SXN__ ) || defined( __H8SXA__ ) || defined( __H8SXM__ ) || defined( __H8SXX__ ) -/* Output one character to standard output */ -extern void charput(char); -/* Input one character from standard input */ -extern char charget(void); -/* Output one character to the file */ -extern char fcharput(char, unsigned char); -/* Input one character from the file */ -extern char fcharget(char*, unsigned char); -/* Open the file */ -/* Specified as the number of register which stored paramter is 3 */ -extern char __regparam3 fileopen(char*, unsigned char, unsigned char*); -/* Close the file */ -extern char fileclose(unsigned char); -/* Move the file offset */ -extern char fpseek(unsigned char, long, unsigned char); -/* Get the file offset */ -extern char fptell(unsigned char, long*); - -/* H8300 and H8300L */ -#elif defined( __300__ ) || defined( __300L__ ) -/* Output one character to standard output */ -extern void charput(char); -/* Input one character from standard input */ -extern char charget(void); -/* Output one character to the file */ -extern char fcharput(char, unsigned char); -/* Input one character from the file */ -extern char fcharget(char*, unsigned char); -/* Open the file */ -/* Specified as the number of register which stored paramter is 3 */ -extern char __regparam3 fileopen(char*, unsigned char, unsigned char*); -/* Close the file */ -extern char fileclose(unsigned char); -/* Move the file offset */ -/* Move the file offset */ -extern char __regparam3 fpseek(unsigned char, long, unsigned char); -/* Get the file offset */ -extern char fptell(unsigned char, long*); -#endif - -#include -FILE *_Files[IOSTREAM]; // structure for FILE -char *env_list[] = { // Array for environment variables(**environ) - "ENV1=temp01", - "ENV2=temp02", - "ENV9=end", - '\0' // Terminal for environment variables -}; - -char **environ = env_list; - -/****************************************************************************/ -/* _INIT_IOLIB */ -/* Initialize C library Functions, if necessary. */ -/* Define USES_SIMIO on Assembler Option. */ -/****************************************************************************/ -void _INIT_IOLIB( void ) -{ - /* A file for standard input/output is opened or created. Each FILE */ - /* structure members are initialized by the library. Each _Buf member */ - /* in it is re-set the end of buffer pointer. */ - - /* Standard Input File */ - if( freopen( FPATH_STDIN, "r", stdin ) == NULL ) - stdin->_Mode = 0xffff; /* Not allow the access if it fails to open */ - stdin->_Mode = _MOPENR; /* Read only attribute */ - stdin->_Mode |= _MNBF; /* Non-buffering for data */ - stdin->_Bend = stdin->_Buf + 1; /* Re-set pointer to the end of buffer */ - - /* Standard Output File */ - if( freopen( FPATH_STDOUT, "w", stdout ) == NULL ) - stdout->_Mode = 0xffff; /* Not allow the access if it fails to open */ - stdout->_Mode |= _MNBF; /* Non-buffering for data */ - stdout->_Bend = stdout->_Buf + 1;/* Re-set pointer to the end of buffer */ - - /* Standard Error File */ - if( freopen( FPATH_STDERR, "w", stderr ) == NULL ) - stderr->_Mode = 0xffff; /* Not allow the access if it fails to open */ - stderr->_Mode |= _MNBF; /* Non-buffering for data */ - stderr->_Bend = stderr->_Buf + 1;/* Re-set pointer to the end of buffer */ -} - -/****************************************************************************/ -/* _CLOSEALL */ -/****************************************************************************/ -void _CLOSEALL( void ) -{ - long i; - - for( i=0; i < _nfiles; i++ ) - { - /* Checks if the file is opened or not */ - if( _Files[i]->_Mode & (_MOPENR | _MOPENW | _MOPENA ) ) - fclose( _Files[i] ); /* Closes the file */ - } -} - -/**************************************************************************/ -/* open:file open */ -/* Return value:File number (Pass) */ -/* -1 (Failure) */ -/**************************************************************************/ -#if defined( __RX ) -long open(const char *name, /* File name */ - long mode, /* Open mode */ - long flg) /* Open flag */ -#else -int open(char *name, /* File name */ - int mode, /* Open mode */ - int flg) /* Open flag */ -#endif -{ - - - if( strcmp( name, FPATH_STDIN ) == 0 ) /* Standard Input file? */ - { - if( ( mode & O_RDONLY ) == 0 ) return -1; - flmod[STDIN] = mode; - return STDIN; - } - else if( strcmp( name, FPATH_STDOUT ) == 0 )/* Standard Output file? */ - { - if( ( mode & O_WRONLY ) == 0 ) return -1; - flmod[STDOUT] = mode; - return STDOUT; - } - else if(strcmp(name, FPATH_STDERR ) == 0 ) /* Standard Error file? */ - { - if( ( mode & O_WRONLY ) == 0 ) return -1; - flmod[STDERR] = mode; - return STDERR; - } - else return -1; /*Others */ -} - -#if defined( __RX ) -long close( long fileno ) -#else -int close( int fileno ) -#endif -{ - return 1; -} - -/**************************************************************************/ -/* write:Data write */ -/* Return value:Number of write characters (Pass) */ -/* -1 (Failure) */ -/**************************************************************************/ -#if defined( __RX ) -long write(long fileno, /* File number */ - const unsigned char *buf, /* The address of destination buffer */ - long count) /* The number of chacter to write */ -#else -int write(int fileno, /* File number */ - char *buf, /* The address of destination buffer */ - int count) /* The number of chacter to write */ -#endif -{ - long i; /* A variable for counter */ - unsigned char c; /* An output character */ - - /* Checking the mode of file , output each character */ - /* Checking the attribute for Write-Only, Read-Only or Read-Write */ - if(flmod[fileno]&O_WRONLY || flmod[fileno]&O_RDWR) - { - if( fileno == STDIN ) return -1; /* Standard Input */ - else if( (fileno == STDOUT) || (fileno == STDERR) ) - /* Standard Error/output */ - { - for( i = count; i > 0; --i ) - { - c = *buf++; - charput(c); - } - return count; /*Return the number of written characters */ - } - else return -1; /* Incorrect file number */ - } - else return -1; /* An error */ -} - -#if defined( __RX ) -long read( long fileno, unsigned char *buf, long count ) -#else -int read( int fileno, char *buf, unsigned int count ) -#endif -{ - long i; - - /* Checking the file mode with the file number, each character is input and stored the buffer */ - - if((flmod[fileno]&_MOPENR) || (flmod[fileno]&O_RDWR)){ - for(i = count; i > 0; i--){ - *buf = charget(); - if(*buf==CR){ /* Replace the new line character */ - *buf = LF; - } - buf++; - } - return count; - } - else { - return -1; - } -} - -#if defined( __RX ) -long lseek( long fileno, long offset, long base ) -#else -long lseek( int fileno, long offset, int base ) -#endif -{ - return -1L; -} - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/Renesas-Files/resetprg.c b/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/Renesas-Files/resetprg.c deleted file mode 100644 index 0404ac406..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/Renesas-Files/resetprg.c +++ /dev/null @@ -1,129 +0,0 @@ -/***********************************************************************/ -/* */ -/* FILE :resetprg.c */ -/* DATE :Wed, Aug 11, 2010 */ -/* DESCRIPTION :Reset Program */ -/* CPU TYPE :Other */ -/* */ -/* This file is generated by Renesas Project Generator (Ver.4.50). */ -/* NOTE:THIS IS A TYPICAL EXAMPLE. */ -/* */ -/***********************************************************************/ - - - -/********************************************************************* -* -* Device : RX/RX600 -* -* File Name : resetprg.c -* -* Abstract : Reset Program. -* -* History : 1.00 (2009-08-07) -* -* NOTE : THIS IS A TYPICAL EXAMPLE. -* -* Copyright(c) 2009 Renesas Technology Corp. -* And Renesas Solutions Corp.,All Rights Reserved. -* -*********************************************************************/ - -#include -#include <_h_c_lib.h> -//#include // Remove the comment when you use errno -//#include // Remove the comment when you use rand() -#include "typedefine.h" -#include "stacksct.h" - -#pragma inline_asm Change_PSW_PM_to_UserMode -static void Change_PSW_PM_to_UserMode(void); - -#ifdef __cplusplus -extern "C" { -#endif -void PowerON_Reset_PC(void); -void main(void); -#ifdef __cplusplus -} -#endif - -#ifdef __cplusplus // Use SIM I/O -extern "C" { -#endif -extern void _INIT_IOLIB(void); -extern void _CLOSEALL(void); -#ifdef __cplusplus -} -#endif - -#define PSW_init 0x00010000 -#define FPSW_init 0x00000100 - -//extern void srand(_UINT); // Remove the comment when you use rand() -//extern _SBYTE *_s1ptr; // Remove the comment when you use strtok() - -//#ifdef __cplusplus // Use Hardware Setup -//extern "C" { -//#endif -//extern void HardwareSetup(void); -//#ifdef __cplusplus -//} -//#endif - -//#ifdef __cplusplus // Remove the comment when you use global class object -//extern "C" { // Sections C$INIT and C$END will be generated -//#endif -//extern void _CALL_INIT(void); -//extern void _CALL_END(void); -//#ifdef __cplusplus -//} -//#endif - -#pragma section ResetPRG - -#pragma entry PowerON_Reset_PC - -void PowerON_Reset_PC(void) -{ - set_intb((unsigned long)__sectop("C$VECT")); - set_fpsw(FPSW_init); - - _INITSCT(); - -// _INIT_IOLIB(); // Remove the comment when you use SIM I/O - -// errno=0; // Remove the comment when you use errno -// srand((_UINT)1); // Remove the comment when you use rand() -// _s1ptr=NULL; // Remove the comment when you use strtok() - -// HardwareSetup(); // Use Hardware Setup - nop(); - -// _CALL_INIT(); // Remove the comment when you use global class object - - set_psw(PSW_init); // Set Ubit & Ibit for PSW -// Change_PSW_PM_to_UserMode(); // DO NOT CHANGE TO USER MODE IF USING FREERTOS! - ( void ) Change_PSW_PM_to_UserMode; // Just to avoid compiler warnings. - - main(); - -// _CLOSEALL(); // Use SIM I/O - -// _CALL_END(); // Remove the comment when you use global class object - - brk(); -} - -static void Change_PSW_PM_to_UserMode(void) -{ - MVFC PSW,R1 - OR #00100000h,R1 - PUSH.L R1 - MVFC PC,R1 - ADD #10,R1 - PUSH.L R1 - RTE - NOP - NOP -} diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/Renesas-Files/sbrk.c b/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/Renesas-Files/sbrk.c deleted file mode 100644 index 98e5bcbeb..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/Renesas-Files/sbrk.c +++ /dev/null @@ -1,28 +0,0 @@ -#include -#include -#define HEAPSIZE 0x400 -signed char *sbrk( size_t size ); -union HEAP_TYPE -{ - signed long dummy; - signed char heap[HEAPSIZE]; -}; -static union HEAP_TYPE heap_area; - -/* End address allocated by sbrk */ -static signed char *brk = ( signed char * ) &heap_area; -signed char *sbrk( size_t size ) -{ - signed char *p; - if( brk + size > heap_area.heap + HEAPSIZE ) - { - p = ( signed char * ) - 1; - } - else - { - p = brk; - brk += size; - } - - return p; -} diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/Renesas-Files/vecttbl.c b/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/Renesas-Files/vecttbl.c deleted file mode 100644 index d2dec0b3b..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/Renesas-Files/vecttbl.c +++ /dev/null @@ -1,64 +0,0 @@ -/***********************************************************************/ -/* */ -/* FILE :vecttbl.c */ -/* DATE :Wed, Aug 11, 2010 */ -/* DESCRIPTION :Initialize of Vector Table */ -/* CPU TYPE :Other */ -/* */ -/* This file is generated by Renesas Project Generator (Ver.4.50). */ -/* NOTE:THIS IS A TYPICAL EXAMPLE. */ -/* */ -/***********************************************************************/ - - - -/********************************************************************* -* -* Device : RX/RX600 -* -* File Name : vecttbl.c -* -* Abstract : Initialize of Vector Table. -* -* History : 1.00 (2009-08-07) -* -* NOTE : THIS IS A TYPICAL EXAMPLE. -* -* Copyright(c) 2009 Renesas Technology Corp. -* And Renesas Solutions Corp.,All Rights Reserved. -* -*********************************************************************/ - -#include "vect.h" - -#pragma section C FIXEDVECT - -void* const Fixed_Vectors[] = { -//;0xffffffd0 Exception(Supervisor Instruction) - (void*) Excep_SuperVisorInst, -//;0xffffffd4 Reserved - Dummy, -//;0xffffffd8 Reserved - Dummy, -//;0xffffffdc Exception(Undefined Instruction) - (void*) Excep_UndefinedInst, -//;0xffffffe0 Reserved - Dummy, -//;0xffffffe4 Exception(Floating Point) - (void*) Excep_FloatingPoint, -//;0xffffffe8 Reserved - Dummy, -//;0xffffffec Reserved - Dummy, -//;0xfffffff0 Reserved - Dummy, -//;0xfffffff4 Reserved - Dummy, -//;0xfffffff8 NMI - (void*) NonMaskableInterrupt, -//;0xfffffffc RESET -//;<> -//;Power On Reset PC -PowerON_Reset_PC -//;<> -}; diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/SessionRX600_E1_E20_SYSTEM.hsf b/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/SessionRX600_E1_E20_SYSTEM.hsf deleted file mode 100644 index 9933054b7..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/SessionRX600_E1_E20_SYSTEM.hsf +++ /dev/null @@ -1,466 +0,0 @@ -[HIMDBVersion] -2.0 -[DATABASE_VERSION] -"2.3" -[SESSION_DETAILS] -"" -[INFORMATION] -"" -[GENERAL_DATA] -"FIRST_CONNECTION_TAG" "NO" -"MRULABELS_DATAMANAGER_KEY" "108a|FFFFFFFF|00000000|1054|fff8cd9e|1050|fff8c484|88218|000870B4|000870AE|88204|88208|18b8" -"RESET_CPU_AFTER_DOWNLOAD_TAG" "VARIANT_TRUE_STORE_TAG" -"{228DB593-0AB2-4EBE-A098-A2CABF094E46}RamMonitorCtrlViews" "0" -"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapCtrlECX_MAP_FIND_SYMBOL_LIST" "" -"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapCtrlViews" "0" -"{2BA6A3EE-6488-11D5-80D4-00C04F68EAD7}ECXLABEL_ADDDLG_ADDR" "" -"{2BA6A3EE-6488-11D5-80D4-00C04F68EAD7}LabelCtrlSymbolFileDir" "" -"{2BA6A3EE-6488-11D5-80D4-00C04F68EAD7}LabelCtrlSymbolFileName" "" -"{2BA6A3EE-6488-11D5-80D4-00C04F68EAD7}LabelCtrlViews" "0" -"{2BA6A3EF-6488-11D5-80D4-00C04F68EAD7}StatusCtrlViews" "0" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlBatchFileName" "" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlBreakpointFlag" "-1 " -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlBreakpointStatus" "-1 " -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlBrowseDirectory" "" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlLogFileName" "" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlSplitterPosition" "242" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlViews" "1" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlWindowProperties" "17" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineWndInstanceKey0" "{WK_00000001_CmdLine}" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}TclTkCtrlLogFileName" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_COMPARE_END_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_COMPARE_START_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_DISPLAY_DEST_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_DISPLAY_END_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_DISPLAY_START_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_FILL_END_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_FILL_START_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_MOVE_END_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_MOVE_START_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_SEARCH_END_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_SEARCH_START_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_SET_DEST_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_TEST_END_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_TEST_START_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryCtrlViews" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0AutoRefreshEnableTopPane" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0AutoRefreshIntervalTopPane" "100" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0DataLength" "4" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0DispAddressTopPane" "4180" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0DispCode" "42208" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0DispColumnCount" "4" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0IsDispCode" "1" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0IsDispFloat" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0IsDispLabel" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0IsDispRegister" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0IsRegFollowEnableTopPane" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0LabelWidth" "96" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0Radix" "16" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0RegFollowRegTblIDTopPane" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0RegisterWidth" "96" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0ScrollEndAddress" "-1" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0ScrollStartAddress" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0StartUpSymbolTopPane" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewAInstanceKey0" "{WK_00000001_MEMORY}RTOSDemoSessionRX600_E1_E20_SYSTEM" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0AutoRefreshEnableTopPane" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0AutoRefreshIntervalTopPane" "100" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0DataLength" "4" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0DispAddressTopPane" "4180" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0DispCode" "42208" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0DispColumnCount" "4" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0IsDispCode" "1" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0IsDispFloat" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0IsDispLabel" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0IsDispRegister" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0IsRegFollowEnableTopPane" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0LabelWidth" "96" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0Radix" "16" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0RegFollowRegTblIDTopPane" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0RegisterWidth" "96" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0ScrollEndAddress" "-1" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0ScrollStartAddress" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0StartUpSymbolTopPane" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewBInstanceKey0" "{WK_00000001_MEMORY}RTOSDemoSessionRX600_E1_E20_SYSTEMViewB" -"{4F025ABC-BE66-4CB6-9CEE-06C61418278E}Trace2CtrlSaveFileDir" "" -"{4F025ABC-BE66-4CB6-9CEE-06C61418278E}Trace2CtrlSaveFileName" "" -"{4F025ABC-BE66-4CB6-9CEE-06C61418278E}Trace2CtrlViews" "0" -"{5F75FDA0-6FF0-11D5-B7CE-00E029352378}PACtrlSaveFileDir" "" -"{5F75FDA0-6FF0-11D5-B7CE-00E029352378}PACtrlSaveFileName" "" -"{5F75FDA0-6FF0-11D5-B7CE-00E029352378}PACtrlViews" "0" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_EVAL_DENORMAL_MODE" "16777216" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_EVAL_ROUND_MODE" "768" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_0" "000000000000B58C" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_1" "000000000000AD9C" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_10" "00000000A5A5A5A5" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_11" "00000000A5A5A5A5" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_12" "00000000A5A5A5A5" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_13" "00000000A5A5A5A5" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_14" "000000000000AD9C" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_15" "000000000000B33C" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_16" "000000000000B58C" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_17" "0000000000013104" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_18" "0000000000030001" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_19" "00000000FFF92894" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_2" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_20" "00000000FFF8B0F0" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_21" "0000000080000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_22" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_23" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_24" "0000000000000100" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_25" "1234567887650000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_3" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_4" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_5" "000000000000B33C" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_6" "00000000A5A5A5A5" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_7" "00000000A5A5A5A5" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_8" "00000000A5A5A5A5" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_9" "00000000A5A5A5A5" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_COUNT" "26" -"{6C4D5B81-FD67-46A9-A089-EA44DCDE47FD}RAMMonitorManagerCtrlBlockInfoFileDir" "" -"{6C4D5B81-FD67-46A9-A089-EA44DCDE47FD}RAMMonitorManagerCtrlBlockInfoFileName" "" -"{7943C44E-7D44-422A-9140-4CF55C88F7D3}DifferenceCtrlViews" "0" -"{855C64C3-E49C-4450-9BCA-C9822566D214}OSObjectCtrlViews" "0" -"{8A898260-6F1D-11D5-8EB6-00004CC34E9D}ECX_WAVE" "00000000,00000000,0,0" -"{8A898260-6F1D-11D5-8EB6-00004CC34E9D}ECX_WAVE_ADDRESS_NAME" "" -"{8A898260-6F1D-11D5-8EB6-00004CC34E9D}ECX_WAVE_COMB_ADDRESS" ",,,," -"{8A898260-6F1D-11D5-8EB6-00004CC34E9D}ECX_WAVE_COMB_BUFFER" ",,,," -"{8A898260-6F1D-11D5-8EB6-00004CC34E9D}ECX_WAVE_SAMPLING_RATE" "1000" -"{8A898260-6F1D-11D5-8EB6-00004CC34E9D}WaveformCtrlViews" "0" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersCtrlViews" "0" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWnd0ColumnWidth" "47,153,35" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWnd0ECX_REGISTER_COUNT" "33" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWnd0ECX_REGISTER_DISPLAYED" "1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWnd0HideFLAGs" "0" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWnd0HideRadix" "0" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWnd0LastFileName" "" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWnd0RadixList" "16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,2,16,16,16,16,16,16,16," -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndInstanceKey0" "{WK_00000001_REGISTERS}RTOSDemoSessionRX600_E1_E20_SYSTEM" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndViewB0ColumnWidth" "47,153,35" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndViewB0ECX_REGISTER_COUNT" "33" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndViewB0ECX_REGISTER_DISPLAYED" "1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndViewB0HideFLAGs" "0" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndViewB0HideRadix" "0" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndViewB0LastFileName" "" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndViewB0RadixList" "16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,2,16,16,16,16,16,16,16," -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndViewBInstanceKey0" "{WK_00000001_REGISTERS}RTOSDemoSessionRX600_E1_E20_SYSTEMViewB" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_ADDRESS_NAME" "" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_BUFFER" "00000000,00000000,0,0" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_COLOR" "0,0,0,0" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_COMB_ADDRESS" ",,,," -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_COMB_PALETTE" ",,,," -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_PALETTE_NAME" "" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_REDRAW_CONTINUOUSLY" "0,2" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_SAMPLEING_RATE" "1000" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_VIEW" "0,0,0,0,0,0" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ImageCtrlViews" "0" -"{AFC216B4-0D8D-4096-9F27-9F29115F69B2}StartStopCheckAfter" "0" -"{AFC216B4-0D8D-4096-9F27-9F29115F69B2}StartStopCheckBefore" "0" -"{AFC216B4-0D8D-4096-9F27-9F29115F69B2}StartStopExpAfter" "" -"{AFC216B4-0D8D-4096-9F27-9F29115F69B2}StartStopExpBefore" "" -"{AFC216B4-0D8D-4096-9F27-9F29115F69B2}T_SESSION_IS_SAVED" "YES" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchCtrlViews" "4" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ColWidth0" "228" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ColWidth1" "150" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ColWidth12" "200" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ColWidth2" "120" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ColWidth3" "200" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0000" "ucBufferInUse, 10, 0, P, Col, Hex, N" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0000_SCOPE" "Current Scope," -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0001" "usCond2, 2, 0, P, Col, Hex, N" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0001_SCOPE" "Current Scope," -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0002" "usCond3, 2, 0, P, Col, Hex, N" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0002_SCOPE" "Current Scope," -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0003" "count, 2, 0, P, Col, Hex, N" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0003_SCOPE" "Current Scope," -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0004" "*datalen, 10, 0, P, Col, Hex, N" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0004_SCOPE" "Current Scope," -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0005" "buf->left, 10, 0, P, Col, Hex, N" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0005_SCOPE" "Current Scope," -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEMCnt" "0" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd1ColWidth0" "120" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd1ColWidth1" "150" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd1ColWidth12" "200" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd1ColWidth2" "120" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd1ColWidth3" "200" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd1ECX_WATCH_ITEMCnt" "0" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd2ColWidth0" "120" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd2ColWidth1" "150" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd2ColWidth12" "200" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd2ColWidth2" "120" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd2ColWidth3" "200" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd2ECX_WATCH_ITEMCnt" "0" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd3ColWidth0" "120" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd3ColWidth1" "150" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd3ColWidth12" "200" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd3ColWidth2" "120" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd3ColWidth3" "200" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd3ECX_WATCH_ITEMCnt" "0" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWndInitial_Radix" "0" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWndInstanceKey0" "{WK_00000001_WATCH}RTOSDemoSessionRX600_E1_E20_SYSTEM" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWndRecentFile_WatchRecord" "" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWndRecentFile_WatchSave" "" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWndUpdate_Interval" "100" -"{B39CE26B-928D-4241-BF8F-E15980C81200}DebugConsoleCtrlDCEnable" "0" -"{B39CE26B-928D-4241-BF8F-E15980C81200}DebugConsoleCtrlLocalEchoEnable" "1" -"{B39CE26B-928D-4241-BF8F-E15980C81200}DebugConsoleCtrlLogFileName" "" -"{B39CE26B-928D-4241-BF8F-E15980C81200}DebugConsoleCtrlPortBaudIndex" "0" -"{B39CE26B-928D-4241-BF8F-E15980C81200}DebugConsoleCtrlPortName" "" -"{B39CE26B-928D-4241-BF8F-E15980C81200}DebugConsoleCtrlSendDataTimeout" "50" -"{B39CE26B-928D-4241-BF8F-E15980C81200}DebugConsoleCtrlViews" "1" -"{B39CE26B-928D-4241-BF8F-E15980C81200}DebugConsoleWndInstanceKey0" "{WK_00000001_DEBUGCONSOLE}RTOSDemoSessionRX600_E1_E20_SYSTEM" -"{B6AE2E1F-5221-4A44-91C2-8C3097B41A69}StartStopCheckAfter" "0" -"{B6AE2E1F-5221-4A44-91C2-8C3097B41A69}StartStopCheckBefore" "0" -"{B6AE2E1F-5221-4A44-91C2-8C3097B41A69}StartStopExpAfter" "" -"{B6AE2E1F-5221-4A44-91C2-8C3097B41A69}StartStopExpBefore" "" -"{B6AE2E1F-5221-4A44-91C2-8C3097B41A69}T_SESSION_IS_SAVED" "YES" -"{CBEBB610-1516-11D4-8F2D-00409545B67B}ElfDwarf2Objects" "1" -"{CBEBB610-1516-11D4-8F2D-00409545B67B}LoadModule0OBJ_ELFDWARF2_ARRAY_EXPAND_LIMIT" "-1" -"{CBEBB610-1516-11D4-8F2D-00409545B67B}LoadModule0OBJ_ELFDWARF2_STATIC_MEM_EXPAND" "1" -"{EEDC9300-6FBE-11D5-8613-00A024591A38}LocalsCtrlViews" "0" -"{EEDC9301-6FBE-11D5-8613-00A024591A38}StackTraceCtrlViews" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOCtrlIOFile" "" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOCtrlSaveFileDir" "$(CONFIGDIR)" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOCtrlSaveFileName" "" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOCtrlViews" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOSelection IOWnd0" "" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0ColWidth0" "200" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0ColWidth1" "100" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0ColWidth2" "108" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0ColWidth3" "100" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp0" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp1" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp10" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp100" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp101" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp102" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp103" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp104" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp105" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp106" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp107" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp108" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp109" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp11" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp110" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp111" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp112" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp113" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp114" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp115" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp116" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp117" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp118" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp119" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp12" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp120" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp121" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp122" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp123" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp13" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp14" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp15" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp16" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp17" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp18" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp19" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp2" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp20" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp21" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp22" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp23" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp24" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp25" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp26" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp27" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp28" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp29" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp3" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp30" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp31" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp32" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp33" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp34" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp35" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp36" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp37" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp38" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp39" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp4" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp40" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp41" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp42" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp43" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp44" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp45" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp46" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp47" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp48" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp49" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp5" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp50" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp51" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp52" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp53" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp54" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp55" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp56" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp57" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp58" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp59" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp6" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp60" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp61" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp62" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp63" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp64" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp65" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp66" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp67" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp68" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp69" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp7" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp70" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp71" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp72" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp73" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp74" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp75" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp76" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp77" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp78" "1" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp79" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp8" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp80" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp81" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp82" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp83" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp84" "1" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp85" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp86" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp87" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp88" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp89" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp9" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp90" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp91" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp92" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp93" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp94" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp95" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp96" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp97" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp98" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp99" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0ScrollHorz" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0ScrollVert" "84" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd1ColWidth0" "200" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd1ColWidth1" "100" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd1ColWidth2" "100" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd1ColWidth3" "100" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd1ScrollHorz" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd1ScrollVert" "0" -"{F923CED3-3318-4B43-B931-0AE76B289176}TaskTraceCtrlAnalyzeViews" "0" -"{F923CED3-3318-4B43-B931-0AE76B289176}TaskTraceCtrlFileSaveDirectory" "" -"{F923CED3-3318-4B43-B931-0AE76B289176}TaskTraceCtrlTraceViews" "0" -[LANGUAGE] -"English" -[CONFIG_INFO_VD1] -0 -[CONFIG_INFO_VD2] -0 -[CONFIG_INFO_VD3] -0 -[CONFIG_INFO_VD4] -0 -[WINDOW_POSITION_STATE_DATA_VD1] -"Help" "TOOLBAR 0" 59419 1 5 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_00000001_CmdLine}" "WINDOW" 59422 0 1 "0.07" 241 0 0 100 100 17 0 "32771|32772|32778|<>|32773|32774|<>" "0.0" -"{WK_00000001_DEBUGCONSOLE}RTOSDemoSessionRX600_E1_E20_SYSTEM" "WINDOW" 59421 0 1 "1.00" 381 0 0 350 200 17 0 "57634|57637|57633|<>|32781|32782|<>|32780|32785|32787" "0.0" -"{WK_00000001_DISASSEMBLY}" "WINDOW" 0 0 0 "0.00" 0 132 132 1126 354 9 0 "" "0.0" -"{WK_00000001_IO}RTOSDemoSessionRX600_E1_E20_SYSTEM" "WINDOW" 59422 0 2 "0.39" 170 0 0 350 200 17 0 "32817|32826|32819|32820|32821" "0.0" -"{WK_00000001_MEMORY}RTOSDemoSessionRX600_E1_E20_SYSTEM" "WINDOW" 59422 0 0 "0.54" 277 0 0 350 200 2065 0 "42202|42203|42204|42233|<>|42206|42205|42230|42229|42207|<>|42208|42209|42210|49076|42228|42227|<>|42231|42232|42234|42235|<>|42211|<>" "0.0" -"{WK_00000001_OUTPUT}" "WINDOW" 59422 0 0 "1.00" 241 560 340 350 200 18 0 "36756|36757|36758|36759|<>|36746|36747|<>|39531|<>|39500|39534|<>|36687" "0.0" -"{WK_00000001_REGISTERS}RTOSDemoSessionRX600_E1_E20_SYSTEM" "WINDOW" 59421 0 0 "0.87" 413 0 0 350 200 2065 0 "" "0.0" -"{WK_00000001_STACKTRACE}RTOSDemoSessionRX600_E1_E20_SYSTEM" "WINDOW" 59422 0 0 "0.50" 277 0 0 350 200 2065 0 "" "0.0" -"{WK_00000001_WATCH}RTOSDemoSessionRX600_E1_E20_SYSTEM" "WINDOW" 59421 0 0 "1.00" 381 0 0 853 610 17 0 "32781|32783|<>|32771|32829|32772|32827|32773|<>|32786|<>|32810|32811" "0.0" -"{WK_00000002_WORKSPACE}" "WINDOW" 59420 0 0 "1.00" 344 560 340 350 200 18 0 "" "0.0" -"{WK_TB00000001_STANDARD}" "TOOLBAR 0" 59419 0 2 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000002_EDITOR}" "TOOLBAR 0" 59419 0 0 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000003_BOOKMARKS}" "TOOLBAR 0" 59419 1 1 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000004_TEMPLATES}" "TOOLBAR 0" 59419 1 0 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000005_SEARCH}" "TOOLBAR 0" 59419 0 1 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000007_DEBUG}" "TOOLBAR 0" 59419 3 0 "0.00" 0 914 231 0 0 18 0 "" "0.0" -"{WK_TB00000008_DEBUGRUN}" "TOOLBAR 0" 59419 0 3 "0.00" 0 298 189 0 0 18 0 "" "0.0" -"{WK_TB00000009_VERSIONCONTROL}" "TOOLBAR 0" 59419 1 3 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000011_CPU}" "TOOLBAR 0" 0 0 0 "0.00" 0 427 225 0 0 5 0 "" "0.0" -"{WK_TB00000012_MAP}" "TOOLBAR 0" 59419 1 4 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000013_SYMBOL}" "TOOLBAR 0" 0 0 0 "0.00" 0 800 233 0 0 5 0 "" "0.0" -"{WK_TB00000014_CODE}" "TOOLBAR 0" 59419 2 2 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000015_PERFORMANCE}" "TOOLBAR 0" 59419 2 3 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000016_GRAPHIC}" "TOOLBAR 0" 59419 2 2 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000018_DEFAULTWINDOW}" "TOOLBAR 0" 59419 1 2 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000023_RTOS}" "TOOLBAR 0" 59419 2 4 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000025_HELPSYSTEMTOOL}" "TOOLBAR 0" 59419 0 0 "0.00" 0 788 192 0 0 5 0 "" "0.0" -"{WK_TB00000026_MACRO}" "TOOLBAR 0" 59419 1 6 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000027_EVENT}" "TOOLBAR 0" 59419 2 1 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000028_RTOSDEBUG}" "TOOLBAR 0" 59419 0 0 "0.00" 0 559 254 0 0 5 0 "" "0.0" -"{WK_TB00000029_SYSTEMTOOL}" "TOOLBAR 0" 59419 2 0 "0.00" 0 0 0 0 0 17 0 "" "0.0" -[WINDOW_POSITION_STATE_DATA_VD2] -[WINDOW_POSITION_STATE_DATA_VD3] -[WINDOW_POSITION_STATE_DATA_VD4] -[WINDOW_Z_ORDER] -"{WK_TB00000028_RTOSDEBUG} TOOLBAR 0" -"{WK_TB00000025_HELPSYSTEMTOOL} TOOLBAR 0" -[TARGET_NAME] -"RX600 Segger J-Link" "" 0 -[STATUSBAR_STATEINFO_VD1] -"MasterShowState" 1 -"ApplicationShowState" 1 -"DebuggerShowState" 1 -[STATUSBAR_STATEINFO_VD2] -"MasterShowState" 1 -"ApplicationShowState" 1 -"DebuggerShowState" 1 -[STATUSBAR_STATEINFO_VD3] -"MasterShowState" 1 -"ApplicationShowState" 1 -"DebuggerShowState" 1 -[STATUSBAR_STATEINFO_VD4] -"MasterShowState" 1 -"ApplicationShowState" 1 -"DebuggerShowState" 1 -[STATUSBAR_DEBUGGER_PANESTATE_VD1] -"SBK_TAR_EMUE100|Exception" 1 -"SBK_TAR_EMUE100|BreakCondition" 1 -"SBK_TAR_EMUE100|TaskID" 1 -"SBK_TAR_EMUE100|ExecutionTime" 1 -"SBK_TAR_EMUE100|PC" 1 -[STATUSBAR_DEBUGGER_PANESTATE_VD2] -[STATUSBAR_DEBUGGER_PANESTATE_VD3] -[STATUSBAR_DEBUGGER_PANESTATE_VD4] -[DEBUGGER_OPTIONS] -"" -[DOWNLOAD_MODULES] -"$(CONFIGDIR)\$(PROJECTNAME).abs" 0 "Elf/Dwarf2" 0 1 1 0 -[CONNECT_ON_GO] -"FALSE" -[DOWNLOAD_MODULES_AFTER_BUILD] -"TRUE" -[REMOVE_BREAKPOINTS_ON_DOWNLOAD] -"FALSE" -[DISABLE_MEMORY_ACCESS_PRIOR_TO_COMMAND_FILE_EXECUTION] -"FALSE" -[LIMIT_DISASSEMBLY_MEMORY_ACCESS] -"FALSE" -[DISABLE_MEMORY_ACCESS_DURING_EXECUTION] -"FALSE" -[DEBUGGER_OPTIONS_PROPERTIES] -"1" -[COMMAND_FILES] -[DEFAULT_DEBUG_FORMAT] -"Elf/Dwarf2" -[FLASH_DETAILS] -"" 0 0 "" 0 "" 0 0 "" 0 0 0 0 0 0 0 "" "" "" "" "" -[BREAKPOINTS] -"c:\e\dev\freertos\workingcopy\demo\rx600_rx62n-rdk_renesas\rtosdemo\webserver\emac.c" 413 0 1 "{00000000-0000-0000-C000-000000000046}" "" -[END] diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/SessionRX600_E1_E20_SYSTEM.ini b/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/SessionRX600_E1_E20_SYSTEM.ini deleted file mode 100644 index ee7dfebda..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/SessionRX600_E1_E20_SYSTEM.ini +++ /dev/null @@ -1,31 +0,0 @@ -[Init_DeviceSetting] -DebugMode=0 -PowerOut=0 -ResetRelease=0 -EmulatorSerial= -McuGroup=RX62N Group -Device=R5F562N8 -McuFileDir=RX62NGr -SupplyVoltage=-1 -[Init_CommunicationClock] -JtagClock=16.5 -JtagClockValue=10 -[Init_EmulatorSetting] -FirstStartUp=1 -HideNext=0 -ConnectionDlgAutoClose=1 -FirstStartUpV10200=0 -[CFG_MCU] -PrevDevice=R5F562N8 -ProcessorMode=0 -EXTAL=12.0000 -WorkRam=3000 -[CFG_SYSTEM] -CpuReWrite=0 -PerfCounterUser=0 -TraceDebugAs=0 -[CFG_FLASHCLEAR_R5F562N8_00] -BlockCount=54 -BlockData=000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -[Config_Property] -HideNext=0 diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/SimSessionRX600.hsf b/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/SimSessionRX600.hsf deleted file mode 100644 index 00cf3324e..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/SimSessionRX600.hsf +++ /dev/null @@ -1,72 +0,0 @@ -[HIMDBVersion] -2.0 -[DATABASE_VERSION] -"2.3" -[SESSION_DETAILS] -"" -[INFORMATION] -"" -[GENERAL_DATA] -"RESET_CPU_AFTER_DOWNLOAD_TAG" "VARIANT_FALSE_STORE_TAG" -[LANGUAGE] -"English" -[CONFIG_INFO_VD1] -0 -[CONFIG_INFO_VD2] -0 -[CONFIG_INFO_VD3] -0 -[CONFIG_INFO_VD4] -0 -[WINDOW_POSITION_STATE_DATA_VD1] -[WINDOW_POSITION_STATE_DATA_VD2] -[WINDOW_POSITION_STATE_DATA_VD3] -[WINDOW_POSITION_STATE_DATA_VD4] -[WINDOW_Z_ORDER] -[TARGET_NAME] -"RX600 Simulator" "" 0 -[STATUSBAR_STATEINFO_VD1] -"MasterShowState" 1 -"ApplicationShowState" 1 -"DebuggerShowState" 1 -[STATUSBAR_STATEINFO_VD2] -"MasterShowState" 1 -"ApplicationShowState" 1 -"DebuggerShowState" 1 -[STATUSBAR_STATEINFO_VD3] -"MasterShowState" 1 -"ApplicationShowState" 1 -"DebuggerShowState" 1 -[STATUSBAR_STATEINFO_VD4] -"MasterShowState" 1 -"ApplicationShowState" 1 -"DebuggerShowState" 1 -[STATUSBAR_DEBUGGER_PANESTATE_VD1] -[STATUSBAR_DEBUGGER_PANESTATE_VD2] -[STATUSBAR_DEBUGGER_PANESTATE_VD3] -[STATUSBAR_DEBUGGER_PANESTATE_VD4] -[DEBUGGER_OPTIONS] -"[V|VERSION|1] [S|CPUTYPE|^"Other (RX600)^"] [S|MAP|^"0x00000000,0x0001FFFF,RAM,32,0101,2 0x00080000,0x000FFFFF,I/O,32,0101,2 0x00100000,0x00107FFF,ROM,32,0101,2 0x007F8000,0x007F9FFF,RAM,32,0101,2 0x007FC000,0x007FC4FF,I/O,32,0101,2 0x007FFC00,0x007FFFFF,I/O,32,0101,2 0x00E00000,0x00FFFFFF,ROM,32,0101,2 0xFEFFE000,0xFEFFFFFF,ROM,32,0101,2 0xFF7FC000,0xFF7FFFFF,ROM,32,0101,2 0xFFE00000,0xFFFFFFFF,ROM,32,0101,2^"] [S|RESOURCE|^"0x00000000,0x0001FFFF,R/W 0x00080000,0x000FFFFF,R/W 0x007FC000,0x007FC4FF,R/W 0x007FFC00,0x007FFFFF,R/W 0xFFFF8000,0xFFFFFFFF,R/W ^"] [B|SIMIOF|0] [I|SIMIOADR|0x0] [I|BUS_MODE|0] [S|ENDIAN|^"LITTLE^"] [S|PATCH|^"OFF^"]" -[DOWNLOAD_MODULES] -"$(CONFIGDIR)\$(PROJECTNAME).abs" 0 "Elf/Dwarf2" 0 0 1 0 -[CONNECT_ON_GO] -"FALSE" -[DOWNLOAD_MODULES_AFTER_BUILD] -"TRUE" -[REMOVE_BREAKPOINTS_ON_DOWNLOAD] -"FALSE" -[DISABLE_MEMORY_ACCESS_PRIOR_TO_COMMAND_FILE_EXECUTION] -"FALSE" -[LIMIT_DISASSEMBLY_MEMORY_ACCESS] -"FALSE" -[DISABLE_MEMORY_ACCESS_DURING_EXECUTION] -"FALSE" -[DEBUGGER_OPTIONS_PROPERTIES] -"1" -[COMMAND_FILES] -[DEFAULT_DEBUG_FORMAT] -"" -[FLASH_DETAILS] -"" 0 0 "" 0 "" 0 0 "" 0 0 0 0 0 0 0 "" "" "" "" "" -[BREAKPOINTS] -[END] diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/include/IntQueueTimer.h b/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/include/IntQueueTimer.h deleted file mode 100644 index a13dac500..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/include/IntQueueTimer.h +++ /dev/null @@ -1,36 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -#ifndef INT_QUEUE_TIMER_H -#define INT_QUEUE_TIMER_H - -void vInitialiseTimerForIntQueueTest( void ); -portBASE_TYPE xTimer0Handler( void ); -portBASE_TYPE xTimer1Handler( void ); - -#endif - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/include/iodefine.h b/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/include/iodefine.h deleted file mode 100644 index 7787987ee..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/include/iodefine.h +++ /dev/null @@ -1,7181 +0,0 @@ -/********************************************************************************/ -/* */ -/* Device : RX/RX600/RX62N */ -/* File Name : ioedfine.h */ -/* Abstract : Definition of I/O Register. */ -/* History : V2.0 (2010-08-21) [Hardware Manual Revision : 1.00] */ -/* Note : This is a typical example. */ -/* */ -/* Copyright(c) 2010 Renesas Electronics Corp. */ -/* And Renesas Solutions Corp. ,All Rights Reserved. */ -/* */ -/********************************************************************************/ -/* */ -/* DESCRIPTION : Definition of ICU Register */ -/* CPU TYPE : RX62N */ -/* */ -/* Usage : IR,DTCER,IER,IPR of ICU Register */ -/* The following IR, DTCE, IEN, IPR macro functions simplify usage. */ -/* The bit access operation is "Bit_Name(interrupt source,name)". */ -/* A part of the name can be omitted. */ -/* for example : */ -/* IR(MTU0,TGIA0) = 0; expands to : */ -/* ICU.IR[114].BIT.IR = 0; */ -/* */ -/* DTCE(ICU,IRQ0) = 1; expands to : */ -/* ICU.DTCER[64].BIT.DTCE = 1; */ -/* */ -/* IEN(CMT0,CMI0) = 1; expands to : */ -/* ICU.IER[0x03].BIT.IEN4 = 1; */ -/* */ -/* IPR(MTU1,TGIA1) = 2; expands to : */ -/* IPR(MTU1,TGI ) = 2; // TGIA1,TGIB1 share IPR level. */ -/* ICU.IPR[0x53].BIT.IPR = 2; */ -/* */ -/* IPR(SCI0,ERI0) = 3; expands to : */ -/* IPR(SCI0, ) = 3; // SCI0 uses single IPR for all sources. */ -/* ICU.IPR[0x80].BIT.IPR = 3; */ -/* */ -/* Usage : #pragma interrupt Function_Identifier(vect=**) */ -/* The number of vector is "(interrupt source, name)". */ -/* for example : */ -/* #pragma interrupt INT_IRQ0(vect=VECT(ICU,IRQ0)) expands to : */ -/* #pragma interrupt INT_IRQ0(vect=64) */ -/* #pragma interrupt INT_CMT0_CMI0(vect=VECT(CMT0,CMI0)) expands to : */ -/* #pragma interrupt INT_CMT0_CMI0(vect=28) */ -/* #pragma interrupt INT_MTU0_TGIA0(vect=VECT(MTU0,TGIA0)) expands to : */ -/* #pragma interrupt INT_MTU0_TGIA0(vect=114) */ -/* */ -/* Usage : MSTPCRA,MSTPCRB,MSTPCRC of SYSTEM Register */ -/* The bit access operation is "MSTP(name)". */ -/* The name that can be used is a macro name defined with "iodefine.h". */ -/* for example : */ -/* MSTP(TMR2) = 0; // TMR2,TMR3,TMR23 expands to : */ -/* SYSTEM.MSTPCRA.BIT.MSTPA4 = 0; */ -/* MSTP(SCI0) = 0; // SCI0,SMCI0 expands to : */ -/* SYSTEM.MSTPCRB.BIT.MSTPB31 = 0; */ -/* MSTP(MTU4) = 0; // MTUA,MTU0,MTU1,MTU2,MTU3,MTU4,MTU5 expands to : */ -/* SYSTEM.MSTPCRA.BIT.MSTPA9 = 0; */ -/* MSTP(CMT3) = 0; // CMT2,CMT3 expands to : */ -/* SYSTEM.MSTPCRA.BIT.MSTPA14 = 0; */ -/* */ -/* */ -/********************************************************************************/ -#ifndef __RX62NIODEFINE_HEADER__ -#define __RX62NIODEFINE_HEADER__ -#pragma bit_order left -#pragma unpack -struct st_ad { - unsigned short ADDRA; - unsigned short ADDRB; - unsigned short ADDRC; - unsigned short ADDRD; - char wk0[8]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ADIE:1; - unsigned char ADST:1; - unsigned char :1; - unsigned char CH:4; - } BIT; - } ADCSR; - union { - unsigned char BYTE; - struct { - unsigned char TRGS:3; - unsigned char :1; - unsigned char CKS:2; - unsigned char MODE:2; - } BIT; - } ADCR; - union { - unsigned char BYTE; - struct { - unsigned char DPSEL:1; - } BIT; - } ADDPR; - unsigned char ADSSTR; - char wk1[11]; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char DIAG:2; - } BIT; - } ADDIAGR; -}; - -struct st_bsc { - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char STSCLR:1; - } BIT; - } BERCLR; - char wk0[3]; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char TOEN:1; - unsigned char IGAEN:1; - } BIT; - } BEREN; - char wk1[3]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char MST:3; - unsigned char :2; - unsigned char TO:1; - unsigned char IA:1; - } BIT; - } BERSR1; - char wk2[1]; - union { - unsigned short WORD; - struct { - unsigned short ADDR:13; - } BIT; - } BERSR2; - char wk3[7414]; - union { - unsigned short WORD; - struct { - unsigned short PRMOD:1; - unsigned short :5; - unsigned short PWENB:1; - unsigned short PRENB:1; - unsigned short :4; - unsigned short EWENB:1; - unsigned short :2; - unsigned short WRMOD:1; - } BIT; - } CS0MOD; - union { - unsigned long LONG; - struct { - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - unsigned long CSWWAIT:5; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSPWWAIT:3; - } BIT; - } CS0WCR1; - union { - unsigned long LONG; - struct { - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long RDON:3; - unsigned long :5; - unsigned long WDOFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long CSROFF:3; - } BIT; - } CS0WCR2; - char wk4[6]; - union { - unsigned short WORD; - struct { - unsigned short PRMOD:1; - unsigned short :5; - unsigned short PWENB:1; - unsigned short PRENB:1; - unsigned short :4; - unsigned short EWENB:1; - unsigned short :2; - unsigned short WRMOD:1; - } BIT; - } CS1MOD; - union { - unsigned long LONG; - struct { - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - unsigned long CSWWAIT:5; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSPWWAIT:3; - } BIT; - } CS1WCR1; - union { - unsigned long LONG; - struct { - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long RDON:3; - unsigned long :5; - unsigned long WDOFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long CSROFF:3; - } BIT; - } CS1WCR2; - char wk5[6]; - union { - unsigned short WORD; - struct { - unsigned short PRMOD:1; - unsigned short :5; - unsigned short PWENB:1; - unsigned short PRENB:1; - unsigned short :4; - unsigned short EWENB:1; - unsigned short :2; - unsigned short WRMOD:1; - } BIT; - } CS2MOD; - union { - unsigned long LONG; - struct { - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - unsigned long CSWWAIT:5; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSPWWAIT:3; - } BIT; - } CS2WCR1; - union { - unsigned long LONG; - struct { - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long RDON:3; - unsigned long :5; - unsigned long WDOFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long CSROFF:3; - } BIT; - } CS2WCR2; - char wk6[6]; - union { - unsigned short WORD; - struct { - unsigned short PRMOD:1; - unsigned short :5; - unsigned short PWENB:1; - unsigned short PRENB:1; - unsigned short :4; - unsigned short EWENB:1; - unsigned short :2; - unsigned short WRMOD:1; - } BIT; - } CS3MOD; - union { - unsigned long LONG; - struct { - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - unsigned long CSWWAIT:5; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSPWWAIT:3; - } BIT; - } CS3WCR1; - union { - unsigned long LONG; - struct { - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long RDON:3; - unsigned long :5; - unsigned long WDOFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long CSROFF:3; - } BIT; - } CS3WCR2; - char wk7[6]; - union { - unsigned short WORD; - struct { - unsigned short PRMOD:1; - unsigned short :5; - unsigned short PWENB:1; - unsigned short PRENB:1; - unsigned short :4; - unsigned short EWENB:1; - unsigned short :2; - unsigned short WRMOD:1; - } BIT; - } CS4MOD; - union { - unsigned long LONG; - struct { - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - unsigned long CSWWAIT:5; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSPWWAIT:3; - } BIT; - } CS4WCR1; - union { - unsigned long LONG; - struct { - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long RDON:3; - unsigned long :5; - unsigned long WDOFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long CSROFF:3; - } BIT; - } CS4WCR2; - char wk8[6]; - union { - unsigned short WORD; - struct { - unsigned short PRMOD:1; - unsigned short :5; - unsigned short PWENB:1; - unsigned short PRENB:1; - unsigned short :4; - unsigned short EWENB:1; - unsigned short :2; - unsigned short WRMOD:1; - } BIT; - } CS5MOD; - union { - unsigned long LONG; - struct { - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - unsigned long CSWWAIT:5; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSPWWAIT:3; - } BIT; - } CS5WCR1; - union { - unsigned long LONG; - struct { - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long RDON:3; - unsigned long :5; - unsigned long WDOFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long CSROFF:3; - } BIT; - } CS5WCR2; - char wk9[6]; - union { - unsigned short WORD; - struct { - unsigned short PRMOD:1; - unsigned short :5; - unsigned short PWENB:1; - unsigned short PRENB:1; - unsigned short :4; - unsigned short EWENB:1; - unsigned short :2; - unsigned short WRMOD:1; - } BIT; - } CS6MOD; - union { - unsigned long LONG; - struct { - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - unsigned long CSWWAIT:5; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSPWWAIT:3; - } BIT; - } CS6WCR1; - union { - unsigned long LONG; - struct { - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long RDON:3; - unsigned long :5; - unsigned long WDOFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long CSROFF:3; - } BIT; - } CS6WCR2; - char wk10[6]; - union { - unsigned short WORD; - struct { - unsigned short PRMOD:1; - unsigned short :5; - unsigned short PWENB:1; - unsigned short PRENB:1; - unsigned short :4; - unsigned short EWENB:1; - unsigned short :2; - unsigned short WRMOD:1; - } BIT; - } CS7MOD; - union { - unsigned long LONG; - struct { - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - unsigned long CSWWAIT:5; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSPWWAIT:3; - } BIT; - } CS7WCR1; - union { - unsigned long LONG; - struct { - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long RDON:3; - unsigned long :5; - unsigned long WDOFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long CSROFF:3; - } BIT; - } CS7WCR2; - char wk11[1926]; - union { - unsigned short WORD; - struct { - unsigned short :7; - unsigned short EMODE:1; - unsigned short :2; - unsigned short BSIZE:2; - unsigned short :3; - unsigned short EXENB:1; - } BIT; - } CS0CR; - char wk12[6]; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - unsigned short RRCV:4; - } BIT; - } CS0REC; - char wk13[6]; - union { - unsigned short WORD; - struct { - unsigned short :7; - unsigned short EMODE:1; - unsigned short :2; - unsigned short BSIZE:2; - unsigned short :3; - unsigned short EXENB:1; - } BIT; - } CS1CR; - char wk14[6]; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - unsigned short RRCV:4; - } BIT; - } CS1REC; - char wk15[6]; - union { - unsigned short WORD; - struct { - unsigned short :7; - unsigned short EMODE:1; - unsigned short :2; - unsigned short BSIZE:2; - unsigned short :3; - unsigned short EXENB:1; - } BIT; - } CS2CR; - char wk16[6]; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - unsigned short RRCV:4; - } BIT; - } CS2REC; - char wk17[6]; - union { - unsigned short WORD; - struct { - unsigned short :7; - unsigned short EMODE:1; - unsigned short :2; - unsigned short BSIZE:2; - unsigned short :3; - unsigned short EXENB:1; - } BIT; - } CS3CR; - char wk18[6]; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - unsigned short RRCV:4; - } BIT; - } CS3REC; - char wk19[6]; - union { - unsigned short WORD; - struct { - unsigned short :7; - unsigned short EMODE:1; - unsigned short :2; - unsigned short BSIZE:2; - unsigned short :3; - unsigned short EXENB:1; - } BIT; - } CS4CR; - char wk20[6]; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - unsigned short RRCV:4; - } BIT; - } CS4REC; - char wk21[6]; - union { - unsigned short WORD; - struct { - unsigned short :7; - unsigned short EMODE:1; - unsigned short :2; - unsigned short BSIZE:2; - unsigned short :3; - unsigned short EXENB:1; - } BIT; - } CS5CR; - char wk22[6]; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - unsigned short RRCV:4; - } BIT; - } CS5REC; - char wk23[6]; - union { - unsigned short WORD; - struct { - unsigned short :7; - unsigned short EMODE:1; - unsigned short :2; - unsigned short BSIZE:2; - unsigned short :3; - unsigned short EXENB:1; - } BIT; - } CS6CR; - char wk24[6]; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - unsigned short RRCV:4; - } BIT; - } CS6REC; - char wk25[6]; - union { - unsigned short WORD; - struct { - unsigned short :7; - unsigned short EMODE:1; - unsigned short :2; - unsigned short BSIZE:2; - unsigned short :3; - unsigned short EXENB:1; - } BIT; - } CS7CR; - char wk26[6]; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - unsigned short RRCV:4; - } BIT; - } CS7REC; - char wk27[900]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char BSIZE:2; - unsigned char :3; - unsigned char EXENB:1; - } BIT; - } SDCCR; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char EMODE:1; - } BIT; - } SDCMOD; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char BE:1; - } BIT; - } SDAMOD; - char wk28[13]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char SFEN:1; - } BIT; - } SDSELF; - char wk29[3]; - union { - unsigned short WORD; - struct { - unsigned short REFW:4; - unsigned short RFC:12; - } BIT; - } SDRFCR; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char RFEN:1; - } BIT; - } SDRFEN; - char wk30[9]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char INIRQ:1; - } BIT; - } SDICR; - char wk31[3]; - union { - unsigned short WORD; - struct { - unsigned short :5; - unsigned short PRC:3; - unsigned short ARFC:4; - unsigned short ARFI:4; - } BIT; - } SDIR; - char wk32[26]; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char MXC:2; - } BIT; - } SDADR; - char wk33[3]; - union { - unsigned long LONG; - struct { - unsigned long :13; - unsigned long RAS:3; - unsigned long :2; - unsigned long RCD:2; - unsigned long RP:3; - unsigned long WR:1; - unsigned long :5; - unsigned long CL:3; - } BIT; - } SDTR; - union { - unsigned short WORD; - struct { - unsigned short :1; - unsigned short MR:15; - } BIT; - } SDMOD; - char wk34[6]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char SRFST:1; - unsigned char INIST:1; - unsigned char :2; - unsigned char MRSST:1; - } BIT; - } SDSR; -}; - -struct st_can { - struct { - union { - unsigned long LONG; - struct { - unsigned short H; - unsigned short L; - } WORD; - struct { - unsigned char HH; - unsigned char HL; - unsigned char LH; - unsigned char LL; - } BYTE; - struct { - unsigned long IDE:1; - unsigned long RTR:1; - unsigned long :1; - unsigned long SID:11; - unsigned long EID:18; - } BIT; - } ID; - union { - unsigned short WORD; - struct { - unsigned char H; - unsigned char L; - } BYTE; - struct { - unsigned char :8; - unsigned char :4; - unsigned char DLC:4; - } BIT; - } DLC; - unsigned char DATA[8]; - union { - unsigned short WORD; - struct { - unsigned char TSH; - unsigned char TSL; - } BYTE; - } TS; - } MB[32]; - union { - unsigned long LONG; - struct { - unsigned short H; - unsigned short L; - } WORD; - struct { - unsigned char HH; - unsigned char HL; - unsigned char LH; - unsigned char LL; - } BYTE; - struct { - unsigned long :3; - unsigned long SID:11; - unsigned long EID:18; - } BIT; - } MKR[8]; - union { - unsigned long LONG; - struct { - unsigned short H; - unsigned short L; - } WORD; - struct { - unsigned char HH; - unsigned char HL; - unsigned char LH; - unsigned char LL; - } BYTE; - struct { - unsigned long IDE:1; - unsigned long RTR:1; - unsigned long :1; - unsigned long SID:11; - unsigned long EID:18; - } BIT; - } FIDCR0; - union { - unsigned long LONG; - struct { - unsigned short H; - unsigned short L; - } WORD; - struct { - unsigned char HH; - unsigned char HL; - unsigned char LH; - unsigned char LL; - } BYTE; - struct { - unsigned long IDE:1; - unsigned long RTR:1; - unsigned long :1; - unsigned long SID:11; - unsigned long EID:18; - } BIT; - } FIDCR1; - unsigned long MKIVLR; - unsigned long MIER; - char wk0[1008]; - union { - unsigned char BYTE; - union { - struct { - unsigned char TRMREQ:1; - unsigned char RECREQ:1; - unsigned char :1; - unsigned char ONESHOT:1; - unsigned char :1; - unsigned char TRMABT:1; - unsigned char TRMACTIVE:1; - unsigned char SENTDATA:1; - } TX; - struct { - unsigned char :5; - unsigned char MSGLOST:1; - unsigned char INVALDATA:1; - unsigned char NEWDATA:1; - } RX; - } BIT; - } MCTL[32]; - union { - unsigned short WORD; - struct { - unsigned char H; - unsigned char L; - } BYTE; - struct { - unsigned char :2; - unsigned char RBOC:1; - unsigned char BOM:2; - unsigned char SLPM:1; - unsigned char CANM:2; - unsigned char TSPS:2; - unsigned char TSRC:1; - unsigned char TPM:1; - unsigned char MLM:1; - unsigned char IDFM:2; - unsigned char MBM:1; - } BIT; - } CTLR; - union { - unsigned short WORD; - struct { - unsigned char H; - unsigned char L; - } BYTE; - struct { - unsigned char :1; - unsigned char RECST:1; - unsigned char TRMST:1; - unsigned char BOST:1; - unsigned char EPST:1; - unsigned char SLPST:1; - unsigned char HLTST:1; - unsigned char RSTST:1; - unsigned char EST:1; - unsigned char TABST:1; - unsigned char FMLST:1; - unsigned char NMLST:1; - unsigned char TFST:1; - unsigned char RFST:1; - unsigned char SDST:1; - unsigned char NDST:1; - } BIT; - } STR; - union { - unsigned long LONG; - struct { - unsigned short H; - unsigned short L; - } WORD; - struct { - unsigned char HH; - unsigned char HL; - unsigned char LH; - unsigned char LL; - } BYTE; - struct { - unsigned long TSEG1:4; - unsigned long :2; - unsigned long BRP:10; - unsigned long :2; - unsigned long SJW:2; - unsigned long :1; - unsigned long TSEG2:3; - } BIT; - } BCR; - union { - unsigned char BYTE; - struct { - unsigned char RFEST:1; - unsigned char RFWST:1; - unsigned char RFFST:1; - unsigned char RFMLF:1; - unsigned char RFUST:3; - unsigned char RFE:1; - } BIT; - } RFCR; - unsigned char RFPCR; - union { - unsigned char BYTE; - struct { - unsigned char TFEST:1; - unsigned char TFFST:1; - unsigned char :2; - unsigned char TFUST:3; - unsigned char TFE:1; - } BIT; - } TFCR; - unsigned char TFPCR; - union { - unsigned char BYTE; - struct { - unsigned char BLIE:1; - unsigned char OLIE:1; - unsigned char ORIE:1; - unsigned char BORIE:1; - unsigned char BOEIE:1; - unsigned char EPIE:1; - unsigned char EWIE:1; - unsigned char BEIE:1; - } BIT; - } EIER; - union { - unsigned char BYTE; - struct { - unsigned char BLIF:1; - unsigned char OLIF:1; - unsigned char ORIF:1; - unsigned char BORIF:1; - unsigned char BOEIF:1; - unsigned char EPIF:1; - unsigned char EWIF:1; - unsigned char BEIF:1; - } BIT; - } EIFR; - unsigned char RECR; - unsigned char TECR; - union { - unsigned char BYTE; - struct { - unsigned char EDPM:1; - unsigned char ADEF:1; - unsigned char BE0F:1; - unsigned char BE1F:1; - unsigned char CEF:1; - unsigned char AEF:1; - unsigned char FEF:1; - unsigned char SEF:1; - } BIT; - } ECSR; - unsigned char CSSR; - union { - unsigned char BYTE; - struct { - unsigned char SEST:1; - unsigned char :2; - unsigned char MBNST:5; - } BIT; - } MSSR; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char MBSM:2; - } BIT; - } MSMR; - unsigned short TSR; - unsigned short AFSR; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char TSTM:2; - unsigned char TSTE:1; - } BIT; - } TCR; -}; - -struct st_cmt { - union { - unsigned short WORD; - struct { - unsigned short :14; - unsigned short STR1:1; - unsigned short STR0:1; - } BIT; - } CMSTR0; - char wk0[14]; - union { - unsigned short WORD; - struct { - unsigned short :14; - unsigned short STR3:1; - unsigned short STR2:1; - } BIT; - } CMSTR1; -}; - -struct st_cmt0 { - union { - unsigned short WORD; - struct { - unsigned short :9; - unsigned short CMIE:1; - unsigned short :4; - unsigned short CKS:2; - } BIT; - } CMCR; - unsigned short CMCNT; - unsigned short CMCOR; -}; - -struct st_crc { - union { - unsigned char BYTE; - struct { - unsigned char DORCLR:1; - unsigned char :4; - unsigned char LMS:1; - unsigned char GPS:2; - } BIT; - } CRCCR; - unsigned char CRCDIR; - unsigned short CRCDOR; -}; - -struct st_da { - unsigned short DADR0; - unsigned short DADR1; - union { - unsigned char BYTE; - struct { - unsigned char DAOE1:1; - unsigned char DAOE0:1; - unsigned char DAE:1; - } BIT; - } DACR; - union { - unsigned char BYTE; - struct { - unsigned char DPSEL:1; - } BIT; - } DADPR; -}; - -struct st_dmac { - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DMST:1; - } BIT; - } DMAST; -}; - -struct st_dmac0 { - void *DMSAR; - void *DMDAR; - unsigned long DMCRA; - unsigned short DMCRB; - char wk0[2]; - union { - unsigned short WORD; - struct { - unsigned short MD:2; - unsigned short DTS:2; - unsigned short :2; - unsigned short SZ:2; - unsigned short :6; - unsigned short DCTG:2; - } BIT; - } DMTMD; - char wk1[1]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char DTIE:1; - unsigned char ESIE:1; - unsigned char RPTIE:1; - unsigned char SARIE:1; - unsigned char DARIE:1; - } BIT; - } DMINT; - union { - unsigned short WORD; - struct { - unsigned short SM:2; - unsigned short :1; - unsigned short SARA:5; - unsigned short DM:2; - unsigned short :1; - unsigned short DARA:5; - } BIT; - } DMAMD; - char wk2[2]; - unsigned long DMOFR; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DTE:1; - } BIT; - } DMCNT; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char CLRS:1; - unsigned char :3; - unsigned char SWREQ:1; - } BIT; - } DMREQ; - union { - unsigned char BYTE; - struct { - unsigned char ACT:1; - unsigned char :2; - unsigned char DTIF:1; - unsigned char :3; - unsigned char ESIF:1; - } BIT; - } DMSTS; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DISEL:1; - } BIT; - } DMCSL; -}; - -struct st_dmac1 { - void *DMSAR; - void *DMDAR; - unsigned long DMCRA; - unsigned short DMCRB; - char wk0[2]; - union { - unsigned short WORD; - struct { - unsigned short MD:2; - unsigned short DTS:2; - unsigned short :2; - unsigned short SZ:2; - unsigned short :6; - unsigned short DCTG:2; - } BIT; - } DMTMD; - char wk1[1]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char DTIE:1; - unsigned char ESIE:1; - unsigned char RPTIE:1; - unsigned char SARIE:1; - unsigned char DARIE:1; - } BIT; - } DMINT; - union { - unsigned short WORD; - struct { - unsigned short SM:2; - unsigned short :1; - unsigned short SARA:5; - unsigned short DM:2; - unsigned short :1; - unsigned short DARA:5; - } BIT; - } DMAMD; - char wk2[6]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DTE:1; - } BIT; - } DMCNT; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char CLRS:1; - unsigned char :3; - unsigned char SWREQ:1; - } BIT; - } DMREQ; - union { - unsigned char BYTE; - struct { - unsigned char ACT:1; - unsigned char :2; - unsigned char DTIF:1; - unsigned char :3; - unsigned char ESIF:1; - } BIT; - } DMSTS; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DISEL:1; - } BIT; - } DMCSL; -}; - -struct st_dtc { - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char RRS:1; - } BIT; - } DTCCR; - char wk0[3]; - void *DTCVBR; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char SHORT:1; - } BIT; - } DTCADMOD; - char wk1[3]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DTCST:1; - } BIT; - } DTCST; - char wk2[1]; - union { - unsigned short WORD; - struct { - unsigned short ACT:1; - unsigned short :7; - unsigned short VECN:8; - } BIT; - } DTCSTS; -}; - -struct st_edmac { - union { - unsigned long LONG; - struct { - unsigned long :25; - unsigned long DE:1; - unsigned long DL:2; - unsigned long :3; - unsigned long SWR:1; - } BIT; - } EDMR; - char wk0[4]; - union { - unsigned long LONG; - struct { - unsigned long :31; - unsigned long TR:1; - } BIT; - } EDTRR; - char wk1[4]; - union { - unsigned long LONG; - struct { - unsigned long :31; - unsigned long RR:1; - } BIT; - } EDRRR; - char wk2[4]; - void *TDLAR; - char wk3[4]; - void *RDLAR; - char wk4[4]; - union { - unsigned long LONG; - struct { - unsigned long :1; - unsigned long TWB:1; - unsigned long :3; - unsigned long TABT:1; - unsigned long RABT:1; - unsigned long RFCOF:1; - unsigned long ADE:1; - unsigned long ECI:1; - unsigned long TC:1; - unsigned long TDE:1; - unsigned long TFUF:1; - unsigned long FR:1; - unsigned long RDE:1; - unsigned long RFOF:1; - unsigned long :4; - unsigned long CND:1; - unsigned long DLC:1; - unsigned long CD:1; - unsigned long TRO:1; - unsigned long RMAF:1; - unsigned long :2; - unsigned long RRF:1; - unsigned long RTLF:1; - unsigned long RTSF:1; - unsigned long PRE:1; - unsigned long CERF:1; - } BIT; - } EESR; - char wk5[4]; - union { - unsigned long LONG; - struct { - unsigned long :1; - unsigned long TWBIP:1; - unsigned long :3; - unsigned long TABTIP:1; - unsigned long RABTIP:1; - unsigned long RFCOFIP:1; - unsigned long ADEIP:1; - unsigned long ECIIP:1; - unsigned long TCIP:1; - unsigned long TDEIP:1; - unsigned long TFUFIP:1; - unsigned long FRIP:1; - unsigned long RDEIP:1; - unsigned long RFOFIP:1; - unsigned long :4; - unsigned long CNDIP:1; - unsigned long DLCIP:1; - unsigned long CDIP:1; - unsigned long TROIP:1; - unsigned long RMAFIP:1; - unsigned long :2; - unsigned long RRFIP:1; - unsigned long RTLFIP:1; - unsigned long RTSFIP:1; - unsigned long PREIP:1; - unsigned long CERFIP:1; - } BIT; - } EESIPR; - char wk6[4]; - union { - unsigned long LONG; - struct { - unsigned long :20; - unsigned long CNDCE:1; - unsigned long DLCCE:1; - unsigned long CDCE:1; - unsigned long TROCE:1; - unsigned long RMAFCE:1; - unsigned long :2; - unsigned long RRFCE:1; - unsigned long RTLFCE:1; - unsigned long RTSFCE:1; - unsigned long PRECE:1; - unsigned long CERFCE:1; - } BIT; - } TRSCER; - char wk7[4]; - union { - unsigned long LONG; - struct { - unsigned long :16; - unsigned long MFC:16; - } BIT; - } RMFCR; - char wk8[4]; - union { - unsigned long LONG; - struct { - unsigned long :21; - unsigned long TFT:11; - } BIT; - } TFTR; - char wk9[4]; - union { - unsigned long LONG; - struct { - unsigned long :19; - unsigned long TFD:5; - unsigned long :3; - unsigned long RFD:5; - } BIT; - } FDR; - char wk10[4]; - union { - unsigned long LONG; - struct { - unsigned long :30; - unsigned long RNC:1; - unsigned long RNR:1; - } BIT; - } RMCR; - char wk11[8]; - union { - unsigned long LONG; - struct { - unsigned long :16; - unsigned long UNDER:16; - } BIT; - } TFUCR; - union { - unsigned long LONG; - struct { - unsigned long :16; - unsigned long OVER:16; - } BIT; - } RFOCR; - union { - unsigned long LONG; - struct { - unsigned long :31; - unsigned long TLB:1; - } BIT; - } IOSR; - union { - unsigned long LONG; - struct { - unsigned long :13; - unsigned long RFFO:3; - unsigned long :13; - unsigned long RFDO:3; - } BIT; - } FCFTR; - char wk12[4]; - union { - unsigned long LONG; - struct { - unsigned long :14; - unsigned long PADS:2; - unsigned long :10; - unsigned long PADR:6; - } BIT; - } RPADIR; - union { - unsigned long LONG; - struct { - unsigned long :27; - unsigned long TIM:1; - unsigned long :3; - unsigned long TIS:1; - } BIT; - } TRIMD; - char wk13[72]; - void *RBWAR; - void *RDFAR; - char wk14[4]; - void *TBRAR; - void *TDFAR; -}; - -struct st_etherc { - union { - unsigned long LONG; - struct { - unsigned long :11; - unsigned long TPC:1; - unsigned long ZPE:1; - unsigned long PFR:1; - unsigned long RXF:1; - unsigned long TXF:1; - unsigned long :3; - unsigned long PRCEF:1; - unsigned long :2; - unsigned long MPDE:1; - unsigned long :2; - unsigned long RE:1; - unsigned long TE:1; - unsigned long :1; - unsigned long ILB:1; - unsigned long RTM:1; - unsigned long DM:1; - unsigned long PRM:1; - } BIT; - } ECMR; - char wk0[4]; - union { - unsigned long LONG; - struct { - unsigned long :20; - unsigned long RFL:12; - } BIT; - } RFLR; - char wk1[4]; - union { - unsigned long LONG; - struct { - unsigned long :26; - unsigned long BFR:1; - unsigned long PSRTO:1; - unsigned long :1; - unsigned long LCHNG:1; - unsigned long MPD:1; - unsigned long ICD:1; - } BIT; - } ECSR; - char wk2[4]; - union { - unsigned long LONG; - struct { - unsigned long :26; - unsigned long BFSIPR:1; - unsigned long PSRTOIP:1; - unsigned long :1; - unsigned long LCHNGIP:1; - unsigned long MPDIP:1; - unsigned long ICDIP:1; - } BIT; - } ECSIPR; - char wk3[4]; - union { - unsigned long LONG; - struct { - unsigned long :28; - unsigned long MDI:1; - unsigned long MDO:1; - unsigned long MMD:1; - unsigned long MDC:1; - } BIT; - } PIR; - char wk4[4]; - union { - unsigned long LONG; - struct { - unsigned long :31; - unsigned long LMON:1; - } BIT; - } PSR; - char wk5[20]; - union { - unsigned long LONG; - struct { - unsigned long :12; - unsigned long RMD:20; - } BIT; - } RDMLR; - char wk6[12]; - union { - unsigned long LONG; - struct { - unsigned long :27; - unsigned long IPG:5; - } BIT; - } IPGR; - union { - unsigned long LONG; - struct { - unsigned long :16; - unsigned long AP:16; - } BIT; - } APR; - union { - unsigned long LONG; - struct { - unsigned long :16; - unsigned long MP:16; - } BIT; - } MPR; - char wk7[4]; - union { - unsigned long LONG; - struct { - unsigned long :24; - unsigned long RPAUSE:8; - } BIT; - } RFCF; - union { - unsigned long LONG; - struct { - unsigned long :16; - unsigned long TPAUSE:16; - } BIT; - } TPAUSER; - union { - unsigned long LONG; - struct { - unsigned long :24; - unsigned long TXP:8; - } BIT; - } TPAUSECR; - union { - unsigned long LONG; - struct { - unsigned long :16; - unsigned long BCF:16; - } BIT; - } BCFRR; - char wk8[80]; - unsigned long MAHR; - char wk9[4]; - union { - unsigned long LONG; - struct { - unsigned long :16; - unsigned long MA:16; - } BIT; - } MALR; - char wk10[4]; - unsigned long TROCR; - unsigned long CDCR; - unsigned long LCCR; - unsigned long CNDCR; - char wk11[4]; - unsigned long CEFCR; - unsigned long FRECR; - unsigned long TSFRCR; - unsigned long TLFRCR; - unsigned long RFCR; - unsigned long MAFCR; -}; - -struct st_exdmac { - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DMST:1; - } BIT; - } EDMAST; - char wk0[479]; - unsigned long CLSBR0; - unsigned long CLSBR1; - unsigned long CLSBR2; - unsigned long CLSBR3; - unsigned long CLSBR4; - unsigned long CLSBR5; - unsigned long CLSBR6; - unsigned long CLSBR7; -}; - -struct st_exdmac0 { - void *EDMSAR; - void *EDMDAR; - unsigned long EDMCRA; - unsigned short EDMCRB; - char wk0[2]; - union { - unsigned short WORD; - struct { - unsigned short MD:2; - unsigned short DTS:2; - unsigned short :2; - unsigned short SZ:2; - unsigned short :6; - unsigned short DCTG:2; - } BIT; - } EDMTMD; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char DACKS:1; - unsigned char DACKE:1; - unsigned char DACKW:1; - } BIT; - } EDMOMD; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char DTIE:1; - unsigned char ESIE:1; - unsigned char RPTIE:1; - unsigned char SARIE:1; - unsigned char DARIE:1; - } BIT; - } EDMINT; - union { - unsigned long LONG; - struct { - unsigned long :14; - unsigned long AMS:1; - unsigned long DIR:1; - unsigned long SM:2; - unsigned long :1; - unsigned long SARA:5; - unsigned long DM:2; - unsigned long :1; - unsigned long DARA:5; - } BIT; - } EDMAMD; - unsigned long EDMOFR; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DTE:1; - } BIT; - } EDMCNT; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char CLRS:1; - unsigned char :3; - unsigned char SWREQ:1; - } BIT; - } EDMREQ; - union { - unsigned char BYTE; - struct { - unsigned char ACT:1; - unsigned char :2; - unsigned char DTIF:1; - unsigned char :3; - unsigned char ESIF:1; - } BIT; - } EDMSTS; - char wk1[1]; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char DREQS:2; - } BIT; - } EDMRMD; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char EREQ:1; - } BIT; - } EDMERF; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char PREQ:1; - } BIT; - } EDMPRF; -}; - -struct st_exdmac1 { - void *EDMSAR; - void *EDMDAR; - unsigned long EDMCRA; - unsigned short EDMCRB; - char wk0[2]; - union { - unsigned short WORD; - struct { - unsigned short MD:2; - unsigned short DTS:2; - unsigned short :2; - unsigned short SZ:2; - unsigned short :6; - unsigned short DCTG:2; - } BIT; - } EDMTMD; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char DACKS:1; - unsigned char DACKE:1; - unsigned char DACKW:1; - } BIT; - } EDMOMD; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char DTIE:1; - unsigned char ESIE:1; - unsigned char RPTIE:1; - unsigned char SARIE:1; - unsigned char DARIE:1; - } BIT; - } EDMINT; - union { - unsigned long LONG; - struct { - unsigned long :14; - unsigned long AMS:1; - unsigned long DIR:1; - unsigned long SM:2; - unsigned long :1; - unsigned long SARA:5; - unsigned long DM:2; - unsigned long :1; - unsigned long DARA:5; - } BIT; - } EDMAMD; - char wk1[4]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DTE:1; - } BIT; - } EDMCNT; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char CLRS:1; - unsigned char :3; - unsigned char SWREQ:1; - } BIT; - } EDMREQ; - union { - unsigned char BYTE; - struct { - unsigned char ACT:1; - unsigned char :2; - unsigned char DTIF:1; - unsigned char :3; - unsigned char ESIF:1; - } BIT; - } EDMSTS; - char wk2[1]; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char DREQS:2; - } BIT; - } EDMRMD; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char EREQ:1; - } BIT; - } EDMERF; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char PREQ:1; - } BIT; - } EDMPRF; -}; - -struct st_flash { - char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char FLWE:2; - } BIT; - } FWEPROR; - char wk1[7799160]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char FRDMD:1; - } BIT; - } FMODR; - char wk2[13]; - union { - unsigned char BYTE; - struct { - unsigned char ROMAE:1; - unsigned char :2; - unsigned char CMDLK:1; - unsigned char DFLAE:1; - unsigned char :1; - unsigned char DFLRPE:1; - unsigned char DFLWPE:1; - } BIT; - } FASTAT; - union { - unsigned char BYTE; - struct { - unsigned char ROMAEIE:1; - unsigned char :2; - unsigned char CMDLKIE:1; - unsigned char DFLAEIE:1; - unsigned char :1; - unsigned char DFLRPEIE:1; - unsigned char DFLWPEIE:1; - } BIT; - } FAEINT; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char FRDYIE:1; - } BIT; - } FRDYIE; - char wk3[45]; - union { - unsigned short WORD; - struct { - unsigned short KEY:8; - unsigned short DBRE07:1; - unsigned short DBRE06:1; - unsigned short DBRE05:1; - unsigned short DBRE04:1; - unsigned short DBRE03:1; - unsigned short DBRE02:1; - unsigned short DBRE01:1; - unsigned short DBRE00:1; - } BIT; - } DFLRE0; - union { - unsigned short WORD; - struct { - unsigned short KEY:8; - unsigned short DBRE15:1; - unsigned short DBRE14:1; - unsigned short DBRE13:1; - unsigned short DBRE12:1; - unsigned short DBRE11:1; - unsigned short DBRE10:1; - unsigned short DBRE09:1; - unsigned short DBRE08:1; - } BIT; - } DFLRE1; - char wk4[12]; - union { - unsigned short WORD; - struct { - unsigned short KEY:8; - unsigned short DBWE07:1; - unsigned short DBWE06:1; - unsigned short DBWE05:1; - unsigned short DBWE04:1; - unsigned short DBWE03:1; - unsigned short DBWE02:1; - unsigned short DBWE01:1; - unsigned short DBWE00:1; - } BIT; - } DFLWE0; - union { - unsigned short WORD; - struct { - unsigned short KEY:8; - unsigned short DBWE15:1; - unsigned short DBWE14:1; - unsigned short DBWE13:1; - unsigned short DBWE12:1; - unsigned short DBWE11:1; - unsigned short DBWE10:1; - unsigned short DBWE09:1; - unsigned short DBWE08:1; - } BIT; - } DFLWE1; - union { - unsigned short WORD; - struct { - unsigned short KEY:8; - unsigned short :7; - unsigned short FCRME:1; - } BIT; - } FCURAME; - char wk5[15194]; - union { - unsigned char BYTE; - struct { - unsigned char FRDY:1; - unsigned char ILGLERR:1; - unsigned char ERSERR:1; - unsigned char PRGERR:1; - unsigned char SUSRDY:1; - unsigned char :1; - unsigned char ERSSPD:1; - unsigned char PRGSPD:1; - } BIT; - } FSTATR0; - union { - unsigned char BYTE; - struct { - unsigned char FCUERR:1; - unsigned char :2; - unsigned char FLOCKST:1; - } BIT; - } FSTATR1; - union { - unsigned short WORD; - struct { - unsigned short FEKEY:8; - unsigned short FENTRYD:1; - unsigned short :6; - unsigned short FENTRY0:1; - } BIT; - } FENTRYR; - union { - unsigned short WORD; - struct { - unsigned short FPKEY:8; - unsigned short :7; - unsigned short FPROTCN:1; - } BIT; - } FPROTR; - union { - unsigned short WORD; - struct { - unsigned short FPKEY:8; - unsigned short :7; - unsigned short FRESET:1; - } BIT; - } FRESETR; - char wk6[2]; - union { - unsigned short WORD; - struct { - unsigned short CMDR:8; - unsigned short PCMDR:8; - } BIT; - } FCMDR; - char wk7[12]; - union { - unsigned short WORD; - struct { - unsigned short :15; - unsigned short ESUSPMD:1; - } BIT; - } FCPSR; - union { - unsigned short WORD; - struct { - unsigned short :5; - unsigned short BCADR:8; - unsigned short :2; - unsigned short BCSIZE:1; - } BIT; - } DFLBCCNT; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short PEERRST:8; - } BIT; - } FPESTAT; - union { - unsigned short WORD; - struct { - unsigned short :15; - unsigned short BCST:1; - } BIT; - } DFLBCSTAT; - char wk8[24]; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short PCKA:8; - } BIT; - } PCKAR; -}; - -struct st_icu { - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char IR:1; - } BIT; - } IR[255]; - char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DTCE:1; - } BIT; - } DTCER[255]; - char wk1[1]; - union { - unsigned char BYTE; - struct { - unsigned char IEN7:1; - unsigned char IEN6:1; - unsigned char IEN5:1; - unsigned char IEN4:1; - unsigned char IEN3:1; - unsigned char IEN2:1; - unsigned char IEN1:1; - unsigned char IEN0:1; - } BIT; - } IER[32]; - char wk2[192]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char SWINT:1; - } BIT; - } SWINTR; - char wk3[15]; - union { - unsigned short WORD; - struct { - unsigned short FIEN:1; - unsigned short :7; - unsigned short FVCT:8; - } BIT; - } FIR; - char wk4[14]; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char IPR:4; - } BIT; - } IPR[144]; - char wk5[112]; - unsigned char DMRSR0; - char wk6[3]; - unsigned char DMRSR1; - char wk7[3]; - unsigned char DMRSR2; - char wk8[3]; - unsigned char DMRSR3; - char wk9[243]; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char IRQMD:2; - } BIT; - } IRQCR[16]; - char wk10[112]; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char OSTST:1; - unsigned char LVDST:1; - unsigned char NMIST:1; - } BIT; - } NMISR; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char OSTEN:1; - unsigned char LVDEN:1; - unsigned char NMIEN:1; - } BIT; - } NMIER; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char OSTCLR:1; - unsigned char :1; - unsigned char NMICLR:1; - } BIT; - } NMICLR; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char NMIMD:1; - } BIT; - } NMICR; -}; - -struct st_ioport { - union { - unsigned char BYTE; - struct { - unsigned char CS7E:1; - unsigned char CS6E:1; - unsigned char CS5E:1; - unsigned char CS4E:1; - unsigned char CS3E:1; - unsigned char CS2E:1; - unsigned char CS1E:1; - unsigned char CS0E:1; - } BIT; - } PF0CSE; - union { - unsigned char BYTE; - struct { - unsigned char CS7S:2; - unsigned char CS6S:2; - unsigned char CS5S:2; - unsigned char CS4S:2; - } BIT; - } PF1CSS; - union { - unsigned char BYTE; - struct { - unsigned char CS3S:2; - unsigned char CS2S:2; - unsigned char CS1S:2; - unsigned char :1; - unsigned char CS0S:1; - } BIT; - } PF2CSS; - union { - unsigned char BYTE; - struct { - unsigned char A23E:1; - unsigned char A22E:1; - unsigned char A21E:1; - unsigned char A20E:1; - unsigned char A19E:1; - unsigned char A18E:1; - unsigned char A17E:1; - unsigned char A16E:1; - } BIT; - } PF3BUS; - union { - unsigned char BYTE; - struct { - unsigned char A15E:1; - unsigned char A14E:1; - unsigned char A13E:1; - unsigned char A12E:1; - unsigned char A11E:1; - unsigned char A10E:1; - unsigned char ADRLE:2; - } BIT; - } PF4BUS; - union { - unsigned char BYTE; - struct { - unsigned char WR32BC32E:1; - unsigned char WR1BC1E:1; - unsigned char DH32E:1; - unsigned char DHE:1; - unsigned char :2; - unsigned char ADRHMS:1; - } BIT; - } PF5BUS; - union { - unsigned char BYTE; - struct { - unsigned char SDCLKE:1; - unsigned char DQM1E:1; - unsigned char :1; - unsigned char MDSDE:1; - unsigned char :2; - unsigned char WAITS:2; - } BIT; - } PF6BUS; - union { - unsigned char BYTE; - struct { - unsigned char EDMA1S:2; - unsigned char EDMA0S:2; - } BIT; - } PF7DMA; - union { - unsigned char BYTE; - struct { - unsigned char ITS15:1; - unsigned char :1; - unsigned char ITS13:1; - unsigned char :1; - unsigned char ITS11:1; - unsigned char ITS10:1; - unsigned char ITS9:1; - unsigned char ITS8:1; - } BIT; - } PF8IRQ; - union { - unsigned char BYTE; - struct { - unsigned char ITS7:1; - unsigned char ITS6:1; - unsigned char ITS5:1; - unsigned char ITS4:1; - unsigned char ITS3:1; - unsigned char ITS2:1; - unsigned char ITS1:1; - unsigned char ITS0:1; - } BIT; - } PF9IRQ; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char ADTRG0S:1; - } BIT; - } PFAADC; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char TMR3S:1; - unsigned char TMR2S:1; - unsigned char TMR1S:1; - unsigned char TMR0S:1; - } BIT; - } PFBTMR; - union { - unsigned char BYTE; - struct { - unsigned char TCLKS:1; - unsigned char MTUS6:1; - unsigned char MTUS5:1; - unsigned char MTUS4:1; - unsigned char MTUS3:1; - unsigned char MTUS2:1; - unsigned char MTUS1:1; - unsigned char MTUS0:1; - } BIT; - } PFCMTU; - union { - unsigned char BYTE; - struct { - unsigned char TCLKS:1; - unsigned char MTUS6:1; - } BIT; - } PFDMTU; - union { - unsigned char BYTE; - struct { - unsigned char EE:1; - unsigned char :2; - unsigned char PHYMODE:1; - unsigned char ENETE3:1; - unsigned char ENETE2:1; - unsigned char ENETE1:1; - unsigned char ENETE0:1; - } BIT; - } PFENET; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char SCI6S:1; - unsigned char :2; - unsigned char SCI3S:1; - unsigned char SCI2S:1; - unsigned char SCI1S:1; - } BIT; - } PFFSCI; - union { - unsigned char BYTE; - struct { - unsigned char SSL3E:1; - unsigned char SSL2E:1; - unsigned char SSL1E:1; - unsigned char SSL0E:1; - unsigned char MISOE:1; - unsigned char MOSIE:1; - unsigned char RSPCKE:1; - unsigned char RSPIS:1; - } BIT; - } PFGSPI; - union { - unsigned char BYTE; - struct { - unsigned char SSL3E:1; - unsigned char SSL2E:1; - unsigned char SSL1E:1; - unsigned char SSL0E:1; - unsigned char MISOE:1; - unsigned char MOSIE:1; - unsigned char RSPCKE:1; - unsigned char RSPIS:1; - } BIT; - } PFHSPI; - char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char CAN0E:1; - } BIT; - } PFJCAN; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char USBE:1; - unsigned char PDHZS:1; - unsigned char PUPHZS:1; - unsigned char USBMD:2; - } BIT; - } PFKUSB; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char USBE:1; - unsigned char PDHZS:1; - unsigned char PUPHZS:1; - unsigned char USBMD:2; - } BIT; - } PFLUSB; - union { - unsigned char BYTE; - struct { - unsigned char POE7E:1; - unsigned char POE6E:1; - unsigned char POE5E:1; - unsigned char POE4E:1; - unsigned char POE3E:1; - unsigned char POE2E:1; - unsigned char POE1E:1; - unsigned char POE0E:1; - } BIT; - } PFMPOE; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char POE9E:1; - unsigned char POE8E:1; - } BIT; - } PFNPOE; -}; - -struct st_iwdt { - unsigned char IWDTRR; - char wk0[1]; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short CKS:4; - unsigned short :2; - unsigned short TOPS:2; - } BIT; - } IWDTCR; - union { - unsigned short WORD; - struct { - unsigned short :1; - unsigned short UNDFF:1; - unsigned short CNTVAL:14; - } BIT; - } IWDTSR; -}; - -struct st_mtu0 { - union { - unsigned char BYTE; - struct { - unsigned char CCLR:3; - unsigned char CKEG:2; - unsigned char TPSC:3; - } BIT; - } TCR; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char BFE:1; - unsigned char BFB:1; - unsigned char BFA:1; - unsigned char MD:4; - } BIT; - } TMDR; - union { - unsigned char BYTE; - struct { - unsigned char IOB:4; - unsigned char IOA:4; - } BIT; - } TIORH; - union { - unsigned char BYTE; - struct { - unsigned char IOD:4; - unsigned char IOC:4; - } BIT; - } TIORL; - union { - unsigned char BYTE; - struct { - unsigned char TTGE:1; - unsigned char :2; - unsigned char TCIEV:1; - unsigned char TGIED:1; - unsigned char TGIEC:1; - unsigned char TGIEB:1; - unsigned char TGIEA:1; - } BIT; - } TIER; - unsigned char TSR; - unsigned short TCNT; - unsigned short TGRA; - unsigned short TGRB; - unsigned short TGRC; - unsigned short TGRD; - char wk0[16]; - unsigned short TGRE; - unsigned short TGRF; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char TGIEF:1; - unsigned char TGIEE:1; - } BIT; - } TIER2; - char wk1[1]; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char TTSE:1; - unsigned char TTSB:1; - unsigned char TTSA:1; - } BIT; - } TBTM; -}; - -struct st_mtu1 { - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char CCLR:2; - unsigned char CKEG:2; - unsigned char TPSC:3; - } BIT; - } TCR; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char MD:4; - } BIT; - } TMDR; - union { - unsigned char BYTE; - struct { - unsigned char IOB:4; - unsigned char IOA:4; - } BIT; - } TIOR; - char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char TTGE:1; - unsigned char :1; - unsigned char TCIEU:1; - unsigned char TCIEV:1; - unsigned char :2; - unsigned char TGIEB:1; - unsigned char TGIEA:1; - } BIT; - } TIER; - union { - unsigned char BYTE; - struct { - unsigned char TCFD:1; - } BIT; - } TSR; - unsigned short TCNT; - unsigned short TGRA; - unsigned short TGRB; - char wk1[4]; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char I2BE:1; - unsigned char I2AE:1; - unsigned char I1BE:1; - unsigned char I1AE:1; - } BIT; - } TICCR; -}; - -struct st_mtu2 { - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char CCLR:2; - unsigned char CKEG:2; - unsigned char TPSC:3; - } BIT; - } TCR; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char MD:4; - } BIT; - } TMDR; - union { - unsigned char BYTE; - struct { - unsigned char IOB:4; - unsigned char IOA:4; - } BIT; - } TIOR; - char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char TTGE:1; - unsigned char :1; - unsigned char TCIEU:1; - unsigned char TCIEV:1; - unsigned char :2; - unsigned char TGIEB:1; - unsigned char TGIEA:1; - } BIT; - } TIER; - union { - unsigned char BYTE; - struct { - unsigned char TCFD:1; - } BIT; - } TSR; - unsigned short TCNT; - unsigned short TGRA; - unsigned short TGRB; -}; - -struct st_mtu3 { - union { - unsigned char BYTE; - struct { - unsigned char CCLR:3; - unsigned char CKEG:2; - unsigned char TPSC:3; - } BIT; - } TCR; - char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char BFB:1; - unsigned char BFA:1; - unsigned char MD:4; - } BIT; - } TMDR; - char wk1[1]; - union { - unsigned char BYTE; - struct { - unsigned char IOB:4; - unsigned char IOA:4; - } BIT; - } TIORH; - union { - unsigned char BYTE; - struct { - unsigned char IOD:4; - unsigned char IOC:4; - } BIT; - } TIORL; - char wk2[2]; - union { - unsigned char BYTE; - struct { - unsigned char TTGE:1; - unsigned char :2; - unsigned char TCIEV:1; - unsigned char TGIED:1; - unsigned char TGIEC:1; - unsigned char TGIEB:1; - unsigned char TGIEA:1; - } BIT; - } TIER; - char wk3[7]; - unsigned short TCNT; - char wk4[6]; - unsigned short TGRA; - unsigned short TGRB; - char wk5[8]; - unsigned short TGRC; - unsigned short TGRD; - char wk6[4]; - union { - unsigned char BYTE; - struct { - unsigned char TCFD:1; - } BIT; - } TSR; - char wk7[11]; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char TTSB:1; - unsigned char TTSA:1; - } BIT; - } TBTM; -}; - -struct st_mtu4 { - char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char CCLR:3; - unsigned char CKEG:2; - unsigned char TPSC:3; - } BIT; - } TCR; - char wk1[1]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char BFB:1; - unsigned char BFA:1; - unsigned char MD:4; - } BIT; - } TMDR; - char wk2[2]; - union { - unsigned char BYTE; - struct { - unsigned char IOB:4; - unsigned char IOA:4; - } BIT; - } TIORH; - union { - unsigned char BYTE; - struct { - unsigned char IOD:4; - unsigned char IOC:4; - } BIT; - } TIORL; - char wk3[1]; - union { - unsigned char BYTE; - struct { - unsigned char TTGE:1; - unsigned char TTGE2:1; - unsigned char :1; - unsigned char TCIEV:1; - unsigned char TGIED:1; - unsigned char TGIEC:1; - unsigned char TGIEB:1; - unsigned char TGIEA:1; - } BIT; - } TIER; - char wk4[8]; - unsigned short TCNT; - char wk5[8]; - unsigned short TGRA; - unsigned short TGRB; - char wk6[8]; - unsigned short TGRC; - unsigned short TGRD; - char wk7[1]; - union { - unsigned char BYTE; - struct { - unsigned char TCFD:1; - } BIT; - } TSR; - char wk8[11]; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char TTSB:1; - unsigned char TTSA:1; - } BIT; - } TBTM; - char wk9[6]; - union { - unsigned short WORD; - struct { - unsigned short BF:2; - unsigned short :6; - unsigned short UT4AE:1; - unsigned short DT4AE:1; - unsigned short UT4BE:1; - unsigned short DT4BE:1; - unsigned short ITA3AE:1; - unsigned short ITA4VE:1; - unsigned short ITB3AE:1; - unsigned short ITB4VE:1; - } BIT; - } TADCR; - char wk10[2]; - unsigned short TADCORA; - unsigned short TADCORB; - unsigned short TADCOBRA; - unsigned short TADCOBRB; -}; - -struct st_mtu5 { - unsigned short TCNTU; - unsigned short TGRU; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char TPSC:2; - } BIT; - } TCRU; - char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char IOC:5; - } BIT; - } TIORU; - char wk1[9]; - unsigned short TCNTV; - unsigned short TGRV; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char TPSC:2; - } BIT; - } TCRV; - char wk2[1]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char IOC:5; - } BIT; - } TIORV; - char wk3[9]; - unsigned short TCNTW; - unsigned short TGRW; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char TPSC:2; - } BIT; - } TCRW; - char wk4[1]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char IOC:5; - } BIT; - } TIORW; - char wk5[11]; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char TGIE5U:1; - unsigned char TGIE5V:1; - unsigned char TGIE5W:1; - } BIT; - } TIER; - char wk6[1]; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char CSTU5:1; - unsigned char CSTV5:1; - unsigned char CSTW5:1; - } BIT; - } TSTR; - char wk7[1]; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char CMPCLR5U:1; - unsigned char CMPCLR5V:1; - unsigned char CMPCLR5W:1; - } BIT; - } TCNTCMPCLR; -}; - -struct st_mtua { - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char OE4D:1; - unsigned char OE4C:1; - unsigned char OE3D:1; - unsigned char OE4B:1; - unsigned char OE4A:1; - unsigned char OE3B:1; - } BIT; - } TOER; - char wk0[2]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char BDC:1; - unsigned char N:1; - unsigned char P:1; - unsigned char FB:1; - unsigned char WF:1; - unsigned char VF:1; - unsigned char UF:1; - } BIT; - } TGCR; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char PSYE:1; - unsigned char :2; - unsigned char TOCL:1; - unsigned char TOCS:1; - unsigned char OLSN:1; - unsigned char OLSP:1; - } BIT; - } TOCR1; - union { - unsigned char BYTE; - struct { - unsigned char BF:2; - unsigned char OLS3N:1; - unsigned char OLS3P:1; - unsigned char OLS2N:1; - unsigned char OLS2P:1; - unsigned char OLS1N:1; - unsigned char OLS1P:1; - } BIT; - } TOCR2; - char wk1[4]; - unsigned short TCDR; - unsigned short TDDR; - char wk2[8]; - unsigned short TCNTS; - unsigned short TCBR; - char wk3[12]; - union { - unsigned char BYTE; - struct { - unsigned char T3AEN:1; - unsigned char T3ACOR:3; - unsigned char T4VEN:1; - unsigned char T4VCOR:3; - } BIT; - } TITCR; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char T3ACNT:3; - unsigned char :1; - unsigned char T4VCNT:3; - } BIT; - } TITCNT; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char BTE:2; - } BIT; - } TBTER; - char wk4[1]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char TDER:1; - } BIT; - } TDER; - char wk5[1]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char OLS3N:1; - unsigned char OLS3P:1; - unsigned char OLS2N:1; - unsigned char OLS2P:1; - unsigned char OLS1N:1; - unsigned char OLS1P:1; - } BIT; - } TOLBR; - char wk6[41]; - union { - unsigned char BYTE; - struct { - unsigned char CCE:1; - unsigned char :6; - unsigned char WRE:1; - } BIT; - } TWCR; - char wk7[31]; - union { - unsigned char BYTE; - struct { - unsigned char CST4:1; - unsigned char CST3:1; - unsigned char :3; - unsigned char CST2:1; - unsigned char CST1:1; - unsigned char CST0:1; - } BIT; - } TSTR; - union { - unsigned char BYTE; - struct { - unsigned char SYNC4:1; - unsigned char SYNC3:1; - unsigned char :3; - unsigned char SYNC2:1; - unsigned char SYNC1:1; - unsigned char SYNC0:1; - } BIT; - } TSYR; - char wk8[2]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char RWE:1; - } BIT; - } TRWER; -}; - -struct st_poe { - union { - unsigned short WORD; - struct { - unsigned short POE3F:1; - unsigned short POE2F:1; - unsigned short POE1F:1; - unsigned short POE0F:1; - unsigned short :3; - unsigned short PIE1:1; - unsigned short POE3M:2; - unsigned short POE2M:2; - unsigned short POE1M:2; - unsigned short POE0M:2; - } BIT; - } ICSR1; - union { - unsigned short WORD; - struct { - unsigned short OSF1:1; - unsigned short :5; - unsigned short OCE1:1; - unsigned short OIE1:1; - } BIT; - } OCSR1; - union { - unsigned short WORD; - struct { - unsigned short POE7F:1; - unsigned short POE6F:1; - unsigned short POE5F:1; - unsigned short POE4F:1; - unsigned short :3; - unsigned short PIE2:1; - unsigned short POE7M:2; - unsigned short POE6M:2; - unsigned short POE5M:2; - unsigned short POE4M:2; - } BIT; - } ICSR2; - union { - unsigned short WORD; - struct { - unsigned short OSF2:1; - unsigned short :5; - unsigned short OCE2:1; - unsigned short OIE2:1; - } BIT; - } OCSR2; - union { - unsigned short WORD; - struct { - unsigned short :3; - unsigned short POE8F:1; - unsigned short :2; - unsigned short POE8E:1; - unsigned short PIE3:1; - unsigned short :6; - unsigned short POE8M:2; - } BIT; - } ICSR3; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char CH6HIZ:1; - unsigned char CH910HIZ:1; - unsigned char CH0HIZ:1; - unsigned char CH34HIZ:1; - } BIT; - } SPOER; - union { - unsigned char BYTE; - struct { - unsigned char PE7ZE:1; - unsigned char PE6ZE:1; - unsigned char PE5ZE:1; - unsigned char PE4ZE:1; - unsigned char PE3ZE:1; - unsigned char PE2ZE:1; - unsigned char PE1ZE:1; - unsigned char PE0ZE:1; - } BIT; - } POECR1; - union { - unsigned short WORD; - struct { - unsigned short :1; - unsigned short P1CZEA:1; - unsigned short P2CZEA:1; - unsigned short P3CZEA:1; - unsigned short :1; - unsigned short P1CZEB:1; - unsigned short P2CZEB:1; - unsigned short P3CZEB:1; - unsigned short :1; - unsigned short P4CZE:1; - unsigned short P5CZE:1; - unsigned short P6CZE:1; - } BIT; - } POECR2; - union { - unsigned short WORD; - struct { - unsigned short :3; - unsigned short POE9F:1; - unsigned short :2; - unsigned short POE9E:1; - unsigned short PIE4:1; - unsigned short :6; - unsigned short POE9M:2; - } BIT; - } ICSR4; -}; - -struct st_port0 { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char :1; - unsigned char B5:1; - unsigned char :1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char :1; - unsigned char B5:1; - unsigned char :1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char :1; - unsigned char B5:1; - unsigned char :1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char :1; - unsigned char B5:1; - unsigned char :1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; - char wk3[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char :1; - unsigned char B5:1; - unsigned char :1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ODR; -}; - -struct st_port1 { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; - char wk3[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ODR; -}; - -struct st_port2 { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; - char wk3[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ODR; -}; - -struct st_port3 { - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; - char wk3[31]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ODR; -}; - -struct st_port4 { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; -}; - -struct st_port5 { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; -}; - -struct st_port6 { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; -}; - -struct st_port7 { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; -}; - -struct st_port8 { - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; -}; - -struct st_port9 { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; - char wk3[95]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; -}; - -struct st_porta { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; - char wk3[95]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; -}; - -struct st_portb { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; - char wk3[95]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; -}; - -struct st_portc { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; - char wk3[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ODR; - char wk4[63]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; -}; - -struct st_portd { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; - char wk3[95]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; -}; - -struct st_porte { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; - char wk3[95]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; -}; - -struct st_portf { - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; -}; - -struct st_portg { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; - char wk3[95]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; -}; - -struct st_ppg0 { - union { - unsigned char BYTE; - struct { - unsigned char G3CMS:2; - unsigned char G2CMS:2; - unsigned char G1CMS:2; - unsigned char G0CMS:2; - } BIT; - } PCR; - union { - unsigned char BYTE; - struct { - unsigned char G3INV:1; - unsigned char G2INV:1; - unsigned char G1INV:1; - unsigned char G0INV:1; - unsigned char G3NOV:1; - unsigned char G2NOV:1; - unsigned char G1NOV:1; - unsigned char G0NOV:1; - } BIT; - } PMR; - union { - unsigned char BYTE; - struct { - unsigned char NDER15:1; - unsigned char NDER14:1; - unsigned char NDER13:1; - unsigned char NDER12:1; - unsigned char NDER11:1; - unsigned char NDER10:1; - unsigned char NDER9:1; - unsigned char NDER8:1; - } BIT; - } NDERH; - union { - unsigned char BYTE; - struct { - unsigned char NDER7:1; - unsigned char NDER6:1; - unsigned char NDER5:1; - unsigned char NDER4:1; - unsigned char NDER3:1; - unsigned char NDER2:1; - unsigned char NDER1:1; - unsigned char NDER0:1; - } BIT; - } NDERL; - union { - unsigned char BYTE; - struct { - unsigned char POD15:1; - unsigned char POD14:1; - unsigned char POD13:1; - unsigned char POD12:1; - unsigned char POD11:1; - unsigned char POD10:1; - unsigned char POD9:1; - unsigned char POD8:1; - } BIT; - } PODRH; - union { - unsigned char BYTE; - struct { - unsigned char POD7:1; - unsigned char POD6:1; - unsigned char POD5:1; - unsigned char POD4:1; - unsigned char POD3:1; - unsigned char POD2:1; - unsigned char POD1:1; - unsigned char POD0:1; - } BIT; - } PODRL; - union { - unsigned char BYTE; - struct { - unsigned char NDR15:1; - unsigned char NDR14:1; - unsigned char NDR13:1; - unsigned char NDR12:1; - unsigned char NDR11:1; - unsigned char NDR10:1; - unsigned char NDR9:1; - unsigned char NDR8:1; - } BIT; - } NDRH; - union { - unsigned char BYTE; - struct { - unsigned char NDR7:1; - unsigned char NDR6:1; - unsigned char NDR5:1; - unsigned char NDR4:1; - unsigned char NDR3:1; - unsigned char NDR2:1; - unsigned char NDR1:1; - unsigned char NDR0:1; - } BIT; - } NDRL; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char NDR11:1; - unsigned char NDR10:1; - unsigned char NDR9:1; - unsigned char NDR8:1; - } BIT; - } NDRH2; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char NDR3:1; - unsigned char NDR2:1; - unsigned char NDR1:1; - unsigned char NDR0:1; - } BIT; - } NDRL2; -}; - -struct st_ppg1 { - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char PTRSL:1; - } BIT; - } PTRSLR; - char wk0[5]; - union { - unsigned char BYTE; - struct { - unsigned char G3CMS:2; - unsigned char G2CMS:2; - unsigned char G1CMS:2; - unsigned char G0CMS:2; - } BIT; - } PCR; - union { - unsigned char BYTE; - struct { - unsigned char G3INV:1; - unsigned char G2INV:1; - unsigned char G1INV:1; - unsigned char G0INV:1; - unsigned char G3NOV:1; - unsigned char G2NOV:1; - unsigned char G1NOV:1; - unsigned char G0NOV:1; - } BIT; - } PMR; - union { - unsigned char BYTE; - struct { - unsigned char NDER31:1; - unsigned char NDER30:1; - unsigned char NDER29:1; - unsigned char NDER28:1; - unsigned char NDER27:1; - unsigned char NDER26:1; - unsigned char NDER25:1; - unsigned char NDER24:1; - } BIT; - } NDERH; - union { - unsigned char BYTE; - struct { - unsigned char NDER23:1; - unsigned char NDER22:1; - unsigned char NDER21:1; - unsigned char NDER20:1; - unsigned char NDER19:1; - unsigned char NDER18:1; - unsigned char NDER17:1; - unsigned char NDER16:1; - } BIT; - } NDERL; - union { - unsigned char BYTE; - struct { - unsigned char POD31:1; - unsigned char POD30:1; - unsigned char POD29:1; - unsigned char POD28:1; - unsigned char POD27:1; - unsigned char POD26:1; - unsigned char POD25:1; - unsigned char POD24:1; - } BIT; - } PODRH; - union { - unsigned char BYTE; - struct { - unsigned char POD23:1; - unsigned char POD22:1; - unsigned char POD21:1; - unsigned char POD20:1; - unsigned char POD19:1; - unsigned char POD18:1; - unsigned char POD17:1; - unsigned char POD16:1; - } BIT; - } PODRL; - union { - unsigned char BYTE; - struct { - unsigned char NDR31:1; - unsigned char NDR30:1; - unsigned char NDR29:1; - unsigned char NDR28:1; - unsigned char NDR27:1; - unsigned char NDR26:1; - unsigned char NDR25:1; - unsigned char NDR24:1; - } BIT; - } NDRH; - union { - unsigned char BYTE; - struct { - unsigned char NDR23:1; - unsigned char NDR22:1; - unsigned char NDR21:1; - unsigned char NDR20:1; - unsigned char NDR19:1; - unsigned char NDR18:1; - unsigned char NDR17:1; - unsigned char NDR16:1; - } BIT; - } NDRL; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char NDR27:1; - unsigned char NDR26:1; - unsigned char NDR25:1; - unsigned char NDR24:1; - } BIT; - } NDRH2; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char NDR19:1; - unsigned char NDR18:1; - unsigned char NDR17:1; - unsigned char NDR16:1; - } BIT; - } NDRL2; -}; - -struct st_riic { - union { - unsigned char BYTE; - struct { - unsigned char ICE:1; - unsigned char IICRST:1; - unsigned char CLO:1; - unsigned char SOWP:1; - unsigned char SCLO:1; - unsigned char SDAO:1; - unsigned char SCLI:1; - unsigned char SDAI:1; - } BIT; - } ICCR1; - union { - unsigned char BYTE; - struct { - unsigned char BBSY:1; - unsigned char MST:1; - unsigned char TRS:1; - unsigned char :1; - unsigned char SP:1; - unsigned char RS:1; - unsigned char ST:1; - } BIT; - } ICCR2; - union { - unsigned char BYTE; - struct { - unsigned char MTWP:1; - unsigned char CKS:3; - unsigned char BCWP:1; - unsigned char BC:3; - } BIT; - } ICMR1; - union { - unsigned char BYTE; - struct { - unsigned char DLCS:1; - unsigned char SDDL:3; - unsigned char :1; - unsigned char TMOH:1; - unsigned char TMOL:1; - unsigned char TMOS:1; - } BIT; - } ICMR2; - union { - unsigned char BYTE; - struct { - unsigned char SMBS:1; - unsigned char WAIT:1; - unsigned char RDRFS:1; - unsigned char ACKWP:1; - unsigned char ACKBT:1; - unsigned char ACKBR:1; - unsigned char NF:2; - } BIT; - } ICMR3; - union { - unsigned char BYTE; - struct { - unsigned char FMPE:1; - unsigned char SCLE:1; - unsigned char NFE:1; - unsigned char NACKE:1; - unsigned char SALE:1; - unsigned char NALE:1; - unsigned char MALE:1; - unsigned char TMOE:1; - } BIT; - } ICFER; - union { - unsigned char BYTE; - struct { - unsigned char HOAE:1; - unsigned char :1; - unsigned char DIDE:1; - unsigned char :1; - unsigned char GCAE:1; - unsigned char SAR2E:1; - unsigned char SAR1E:1; - unsigned char SAR0E:1; - } BIT; - } ICSER; - union { - unsigned char BYTE; - struct { - unsigned char TIE:1; - unsigned char TEIE:1; - unsigned char RIE:1; - unsigned char NAKIE:1; - unsigned char SPIE:1; - unsigned char STIE:1; - unsigned char ALIE:1; - unsigned char TMOIE:1; - } BIT; - } ICIER; - union { - unsigned char BYTE; - struct { - unsigned char HOA:1; - unsigned char :1; - unsigned char DID:1; - unsigned char :1; - unsigned char GCA:1; - unsigned char AAS2:1; - unsigned char AAS1:1; - unsigned char AAS0:1; - } BIT; - } ICSR1; - union { - unsigned char BYTE; - struct { - unsigned char TDRE:1; - unsigned char TEND:1; - unsigned char RDRF:1; - unsigned char NACKF:1; - unsigned char STOP:1; - unsigned char START:1; - unsigned char AL:1; - unsigned char TMOF:1; - } BIT; - } ICSR2; - union { - unsigned char BYTE; - struct { - unsigned char SVA:7; - unsigned char SVA0:1; - } BIT; - } SARL0; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char SVA:2; - unsigned char FS:1; - } BIT; - } SARU0; - union { - unsigned char BYTE; - struct { - unsigned char SVA:7; - unsigned char SVA0:1; - } BIT; - } SARL1; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char SVA:2; - unsigned char FS:1; - } BIT; - } SARU1; - union { - unsigned char BYTE; - struct { - unsigned char SVA:7; - unsigned char SVA0:1; - } BIT; - } SARL2; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char SVA:2; - unsigned char FS:1; - } BIT; - } SARU2; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char BRL:5; - } BIT; - } ICBRL; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char BRH:5; - } BIT; - } ICBRH; - unsigned char ICDRT; - unsigned char ICDRR; -}; - -struct st_rspi { - union { - unsigned char BYTE; - struct { - unsigned char SPRIE:1; - unsigned char SPE:1; - unsigned char SPTIE:1; - unsigned char SPEIE:1; - unsigned char MSTR:1; - unsigned char MODFEN:1; - unsigned char TXMD:1; - unsigned char SPMS:1; - } BIT; - } SPCR; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char SSLP3:1; - unsigned char SSLP2:1; - unsigned char SSLP1:1; - unsigned char SSLP0:1; - } BIT; - } SSLP; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char MOIFE:1; - unsigned char MOIFV:1; - unsigned char :1; - unsigned char SPOM:1; - unsigned char SPLP2:1; - unsigned char SPLP:1; - } BIT; - } SPPCR; - union { - unsigned char BYTE; - struct { - unsigned char SPRF:1; - unsigned char :1; - unsigned char SPTEF:1; - unsigned char :1; - unsigned char PERF:1; - unsigned char MODF:1; - unsigned char IDLNF:1; - unsigned char OVRF:1; - } BIT; - } SPSR; - union { - unsigned long LONG; - struct { - unsigned short H; - unsigned short L; - } WORD; - } SPDR; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char SPSLN:3; - } BIT; - } SPSCR; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char SPECM:3; - unsigned char :1; - unsigned char SPCP:3; - } BIT; - } SPSSR; - union { - unsigned char BYTE; - struct { - unsigned char SPR7:1; - unsigned char SPR6:1; - unsigned char SPR5:1; - unsigned char SPR4:1; - unsigned char SPR3:1; - unsigned char SPR2:1; - unsigned char SPR1:1; - unsigned char SPR0:1; - } BIT; - } SPBR; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char SPLW:1; - unsigned char SPRDTD:1; - unsigned char SLSEL:2; - unsigned char SPFC:2; - } BIT; - } SPDCR; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char SCKDL:3; - } BIT; - } SPCKD; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char SLNDL:3; - } BIT; - } SSLND; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char SPNDL:3; - } BIT; - } SPND; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char PTE:1; - unsigned char SPIIE:1; - unsigned char SPOE:1; - unsigned char SPPE:1; - } BIT; - } SPCR2; - union { - unsigned short WORD; - struct { - unsigned short SCKDEN:1; - unsigned short SLNDEN:1; - unsigned short SPNDEN:1; - unsigned short LSBF:1; - unsigned short SPB:4; - unsigned short SSLKP:1; - unsigned short SSLA:3; - unsigned short BRDV:2; - unsigned short CPOL:1; - unsigned short CPHA:1; - } BIT; - } SPCMD0; - union { - unsigned short WORD; - struct { - unsigned short SCKDEN:1; - unsigned short SLNDEN:1; - unsigned short SPNDEN:1; - unsigned short LSBF:1; - unsigned short SPB:4; - unsigned short SSLKP:1; - unsigned short SSLA:3; - unsigned short BRDV:2; - unsigned short CPOL:1; - unsigned short CPHA:1; - } BIT; - } SPCMD1; - union { - unsigned short WORD; - struct { - unsigned short SCKDEN:1; - unsigned short SLNDEN:1; - unsigned short SPNDEN:1; - unsigned short LSBF:1; - unsigned short SPB:4; - unsigned short SSLKP:1; - unsigned short SSLA:3; - unsigned short BRDV:2; - unsigned short CPOL:1; - unsigned short CPHA:1; - } BIT; - } SPCMD2; - union { - unsigned short WORD; - struct { - unsigned short SCKDEN:1; - unsigned short SLNDEN:1; - unsigned short SPNDEN:1; - unsigned short LSBF:1; - unsigned short SPB:4; - unsigned short SSLKP:1; - unsigned short SSLA:3; - unsigned short BRDV:2; - unsigned short CPOL:1; - unsigned short CPHA:1; - } BIT; - } SPCMD3; - union { - unsigned short WORD; - struct { - unsigned short SCKDEN:1; - unsigned short SLNDEN:1; - unsigned short SPNDEN:1; - unsigned short LSBF:1; - unsigned short SPB:4; - unsigned short SSLKP:1; - unsigned short SSLA:3; - unsigned short BRDV:2; - unsigned short CPOL:1; - unsigned short CPHA:1; - } BIT; - } SPCMD4; - union { - unsigned short WORD; - struct { - unsigned short SCKDEN:1; - unsigned short SLNDEN:1; - unsigned short SPNDEN:1; - unsigned short LSBF:1; - unsigned short SPB:4; - unsigned short SSLKP:1; - unsigned short SSLA:3; - unsigned short BRDV:2; - unsigned short CPOL:1; - unsigned short CPHA:1; - } BIT; - } SPCMD5; - union { - unsigned short WORD; - struct { - unsigned short SCKDEN:1; - unsigned short SLNDEN:1; - unsigned short SPNDEN:1; - unsigned short LSBF:1; - unsigned short SPB:4; - unsigned short SSLKP:1; - unsigned short SSLA:3; - unsigned short BRDV:2; - unsigned short CPOL:1; - unsigned short CPHA:1; - } BIT; - } SPCMD6; - union { - unsigned short WORD; - struct { - unsigned short SCKDEN:1; - unsigned short SLNDEN:1; - unsigned short SPNDEN:1; - unsigned short LSBF:1; - unsigned short SPB:4; - unsigned short SSLKP:1; - unsigned short SSLA:3; - unsigned short BRDV:2; - unsigned short CPOL:1; - unsigned short CPHA:1; - } BIT; - } SPCMD7; -}; - -struct st_rtc { - union { - unsigned char BYTE; - struct { - unsigned char F64HZ:1; - unsigned char F32HZ:1; - unsigned char F16HZ:1; - unsigned char F8HZ:1; - unsigned char F4HZ:1; - unsigned char F2HZ:1; - unsigned char F1HZ:1; - } BIT; - } R64CNT; - char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char SEC10:3; - unsigned char SEC1:4; - } BIT; - } RSECCNT; - char wk1[1]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char MIN10:3; - unsigned char MIN1:4; - } BIT; - } RMINCNT; - char wk2[1]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char HOUR10:2; - unsigned char HOUR1:4; - } BIT; - } RHRCNT; - char wk3[1]; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char DAY:3; - } BIT; - } RWKCNT; - char wk4[1]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char DAY10:2; - unsigned char DAY1:4; - } BIT; - } RDAYCNT; - char wk5[1]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char MON10:1; - unsigned char MON1:4; - } BIT; - } RMONCNT; - char wk6[1]; - union { - unsigned short WORD; - struct { - unsigned short YEAR1000:4; - unsigned short YEAR100:4; - unsigned short YEAR10:4; - unsigned short YEAR1:4; - } BIT; - } RYRCNT; - union { - unsigned char BYTE; - struct { - unsigned char ENB:1; - unsigned char SEC10:3; - unsigned char SEC1:4; - } BIT; - } RSECAR; - char wk7[1]; - union { - unsigned char BYTE; - struct { - unsigned char ENB:1; - unsigned char MIN10:3; - unsigned char MIN1:4; - } BIT; - } RMINAR; - char wk8[1]; - union { - unsigned char BYTE; - struct { - unsigned char ENB:1; - unsigned char :1; - unsigned char HOUR10:2; - unsigned char HOUR1:4; - } BIT; - } RHRAR; - char wk9[1]; - union { - unsigned char BYTE; - struct { - unsigned char ENB:1; - unsigned char :4; - unsigned char DAY:3; - } BIT; - } RWKAR; - char wk10[1]; - union { - unsigned char BYTE; - struct { - unsigned char ENB:1; - unsigned char :1; - unsigned char DAY10:2; - unsigned char DAY1:4; - } BIT; - } RDAYAR; - char wk11[1]; - union { - unsigned char BYTE; - struct { - unsigned char ENB:1; - unsigned char :2; - unsigned char MON10:1; - unsigned char MON1:4; - } BIT; - } RMONAR; - char wk12[1]; - union { - unsigned short WORD; - struct { - unsigned short YEAR1000:4; - unsigned short YEAR100:4; - unsigned short YEAR10:4; - unsigned short YEAR1:4; - } BIT; - } RYRAR; - union { - unsigned char BYTE; - struct { - unsigned char ENB:1; - } BIT; - } RYRAREN; - char wk13[3]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char PES:3; - unsigned char :1; - unsigned char PIE:1; - unsigned char CIE:1; - unsigned char AIE:1; - } BIT; - } RCR1; - char wk14[1]; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char RTCOE:1; - unsigned char ADJ:1; - unsigned char RESET:1; - unsigned char START:1; - } BIT; - } RCR2; -}; - -struct st_s12ad { - union { - unsigned char BYTE; - struct { - unsigned char ADST:1; - unsigned char ADCS:1; - unsigned char :1; - unsigned char ADIE:1; - unsigned char CKS:2; - unsigned char TRGE:1; - unsigned char EXTRG:1; - } BIT; - } ADCSR; - char wk0[3]; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short ANS:8; - } BIT; - } ADANS; - char wk1[2]; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short ADS:8; - } BIT; - } ADADS; - char wk2[2]; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char ADC:2; - } BIT; - } ADADC; - char wk3[1]; - union { - unsigned short WORD; - struct { - unsigned short ADRFMT:1; - unsigned short :9; - unsigned short ACE:1; - } BIT; - } ADCER; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char ADSTRS:4; - } BIT; - } ADSTRGR; - char wk4[15]; - unsigned short ADDR0; - unsigned short ADDR1; - unsigned short ADDR2; - unsigned short ADDR3; - unsigned short ADDR4; - unsigned short ADDR5; - unsigned short ADDR6; - unsigned short ADDR7; -}; - -struct st_sci { - union { - unsigned char BYTE; - struct { - unsigned char CM:1; - unsigned char CHR:1; - unsigned char PE:1; - unsigned char PM:1; - unsigned char STOP:1; - unsigned char MP:1; - unsigned char CKS:2; - } BIT; - } SMR; - unsigned char BRR; - union { - unsigned char BYTE; - struct { - unsigned char TIE:1; - unsigned char RIE:1; - unsigned char TE:1; - unsigned char RE:1; - unsigned char MPIE:1; - unsigned char TEIE:1; - unsigned char CKE:2; - } BIT; - } SCR; - unsigned char TDR; - union { - unsigned char BYTE; - struct { - unsigned char TDRE:1; - unsigned char RDRF:1; - unsigned char ORER:1; - unsigned char FER:1; - unsigned char PER:1; - unsigned char TEND:1; - unsigned char MPB:1; - unsigned char MPBT:1; - } BIT; - } SSR; - unsigned char RDR; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char SDIR:1; - unsigned char SINV:1; - unsigned char :1; - unsigned char SMIF:1; - } BIT; - } SCMR; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char ABCS:1; - unsigned char :3; - unsigned char ACS0:1; - } BIT; - } SEMR; -}; - -struct st_smci { - union { - unsigned char BYTE; - struct { - unsigned char GM:1; - unsigned char BLK:1; - unsigned char PE:1; - unsigned char PM:1; - unsigned char BCP:2; - unsigned char CKS:2; - } BIT; - } SMR; - unsigned char BRR; - union { - unsigned char BYTE; - struct { - unsigned char TIE:1; - unsigned char RIE:1; - unsigned char TE:1; - unsigned char RE:1; - unsigned char :1; - unsigned char TEIE:1; - unsigned char CKE:2; - } BIT; - } SCR; - unsigned char TDR; - union { - unsigned char BYTE; - struct { - unsigned char TDRE:1; - unsigned char RDRF:1; - unsigned char ORER:1; - unsigned char ERS:1; - unsigned char PER:1; - unsigned char TEND:1; - } BIT; - } SSR; - unsigned char RDR; - union { - unsigned char BYTE; - struct { - unsigned char BCP2:1; - unsigned char :3; - unsigned char SDIR:1; - unsigned char SINV:1; - unsigned char :1; - unsigned char SMIF:1; - } BIT; - } SCMR; -}; - -struct st_system { - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short MDE:1; - unsigned short :5; - unsigned short MD1:1; - unsigned short MD0:1; - } BIT; - } MDMONR; - union { - unsigned short WORD; - struct { - unsigned short :9; - unsigned short UBTS:1; - unsigned short :1; - unsigned short BOTS:1; - unsigned short BSW:2; - unsigned short EXB:1; - unsigned short IROM:1; - } BIT; - } MDSR; - char wk0[2]; - union { - unsigned short WORD; - struct { - unsigned short KEY:8; - unsigned short :6; - unsigned short EXBE:1; - unsigned short ROME:1; - } BIT; - } SYSCR0; - union { - unsigned short WORD; - struct { - unsigned short :15; - unsigned short RAME:1; - } BIT; - } SYSCR1; - char wk1[2]; - union { - unsigned short WORD; - struct { - unsigned short SSBY:1; - unsigned short OPE:1; - unsigned short :1; - unsigned short STS:5; - } BIT; - } SBYCR; - char wk2[2]; - union { - unsigned long LONG; - struct { - unsigned long ACSE:1; - unsigned long :1; - unsigned long MSTPA29:1; - unsigned long MSTPA28:1; - unsigned long :4; - unsigned long MSTPA23:1; - unsigned long MSTPA22:1; - unsigned long :2; - unsigned long MSTPA19:1; - unsigned long :1; - unsigned long MSTPA17:1; - unsigned long :1; - unsigned long MSTPA15:1; - unsigned long MSTPA14:1; - unsigned long :2; - unsigned long MSTPA11:1; - unsigned long MSTPA10:1; - unsigned long MSTPA9:1; - unsigned long MSTPA8:1; - unsigned long :2; - unsigned long MSTPA5:1; - unsigned long MSTPA4:1; - } BIT; - } MSTPCRA; - union { - unsigned long LONG; - struct { - unsigned long MSTPB31:1; - unsigned long MSTPB30:1; - unsigned long MSTPB29:1; - unsigned long MSTPB28:1; - unsigned long :1; - unsigned long MSTPB26:1; - unsigned long MSTPB25:1; - unsigned long :1; - unsigned long MSTPB23:1; - unsigned long :1; - unsigned long MSTPB21:1; - unsigned long MSTPB20:1; - unsigned long MSTPB19:1; - unsigned long MSTPB18:1; - unsigned long MSTPB17:1; - unsigned long MSTPB16:1; - unsigned long MSTPB15:1; - unsigned long :14; - unsigned long MSTPB0:1; - } BIT; - } MSTPCRB; - union { - unsigned long LONG; - struct { - unsigned long :30; - unsigned long MSTPC1:1; - unsigned long MSTPC0:1; - } BIT; - } MSTPCRC; - char wk3[4]; - union { - unsigned long LONG; - struct { - unsigned long :4; - unsigned long ICK:4; - unsigned long PSTOP1:1; - unsigned long PSTOP0:1; - unsigned long :2; - unsigned long BCK:4; - unsigned long :4; - unsigned long PCK:4; - } BIT; - } SCKCR; - char wk4[12]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char BCLKDIV:1; - } BIT; - } BCKCR; - char wk5[15]; - union { - unsigned short WORD; - struct { - unsigned short KEY:8; - unsigned short OSTDE:1; - unsigned short OSTDF:1; - } BIT; - } OSTDCR; - char wk6[49726]; - union { - unsigned char BYTE; - struct { - unsigned char DPSBY:1; - unsigned char IOKEEP:1; - unsigned char RAMCUT2:1; - unsigned char RAMCUT1:1; - unsigned char :3; - unsigned char RAMCUT0:1; - } BIT; - } DPSBYCR; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char WTSTS:6; - } BIT; - } DPSWCR; - union { - unsigned char BYTE; - struct { - unsigned char DNMIE:1; - unsigned char DUSBE:1; - unsigned char DRTCE:1; - unsigned char DLVDE:1; - unsigned char DIRQ3E:1; - unsigned char DIRQ2E:1; - unsigned char DIRQ1E:1; - unsigned char DIRQ0E:1; - } BIT; - } DPSIER; - union { - unsigned char BYTE; - struct { - unsigned char DNMIF:1; - unsigned char DUSBF:1; - unsigned char DRTCFF:1; - unsigned char DLVDF:1; - unsigned char DIRQ3F:1; - unsigned char DIRQ2F:1; - unsigned char DIRQ1F:1; - unsigned char DIRQ0F:1; - } BIT; - } DPSIFR; - union { - unsigned char BYTE; - struct { - unsigned char DNMIEG:1; - unsigned char :3; - unsigned char DIRQ3EG:1; - unsigned char DIRQ2EG:1; - unsigned char DIRQ1EG:1; - unsigned char DIRQ0EG:1; - } BIT; - } DPSIEGR; - union { - unsigned char BYTE; - struct { - unsigned char DPSRSTF:1; - unsigned char :4; - unsigned char LVD2F:1; - unsigned char LVD1F:1; - unsigned char PORF:1; - } BIT; - } RSTSR; - char wk7[4]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char SUBSTOP:1; - } BIT; - } SUBOSCCR; - char wk8[1]; - unsigned char LVDKEYR; - union { - unsigned char BYTE; - struct { - unsigned char LVD2E:1; - unsigned char LVD2RI:1; - unsigned char :2; - unsigned char LVD1E:1; - unsigned char LVD1RI:1; - } BIT; - } LVDCR; - char wk9[2]; - unsigned char DPSBKR[32]; -}; - -struct st_tmr0 { - union { - unsigned char BYTE; - struct { - unsigned char CMIEB:1; - unsigned char CMIEA:1; - unsigned char OVIE:1; - unsigned char CCLR:2; - } BIT; - } TCR; - char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char ADTE:1; - unsigned char OSB:2; - unsigned char OSA:2; - } BIT; - } TCSR; - char wk1[1]; - unsigned char TCORA; - char wk2[1]; - unsigned char TCORB; - char wk3[1]; - unsigned char TCNT; - char wk4[1]; - union { - unsigned char BYTE; - struct { - unsigned char TMRIS:1; - unsigned char :2; - unsigned char CSS:2; - unsigned char CKS:3; - } BIT; - } TCCR; -}; - -struct st_tmr1 { - union { - unsigned char BYTE; - struct { - unsigned char CMIEB:1; - unsigned char CMIEA:1; - unsigned char OVIE:1; - unsigned char CCLR:2; - } BIT; - } TCR; - char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char OSB:2; - unsigned char OSA:2; - } BIT; - } TCSR; - char wk1[1]; - unsigned char TCORA; - char wk2[1]; - unsigned char TCORB; - char wk3[1]; - unsigned char TCNT; - char wk4[1]; - union { - unsigned char BYTE; - struct { - unsigned char TMRIS:1; - unsigned char :2; - unsigned char CSS:2; - unsigned char CKS:3; - } BIT; - } TCCR; -}; - -struct st_tmr01 { - unsigned short TCORA; - unsigned short TCORB; - unsigned short TCNT; - unsigned short TCCR; -}; - -struct st_usb { - union { - unsigned long LONG; - struct { - unsigned long DVSTS1:1; - unsigned long :1; - unsigned long DOVCB1:1; - unsigned long DOVCA1:1; - unsigned long :2; - unsigned long DM1:1; - unsigned long DP1:1; - unsigned long DVBSTS0:1; - unsigned long :1; - unsigned long DOVCB0:1; - unsigned long DOVCA0:1; - unsigned long :2; - unsigned long DM0:1; - unsigned long DP0:1; - unsigned long :3; - unsigned long FIXPHY1:1; - unsigned long :3; - unsigned long SRPC1:1; - unsigned long :3; - unsigned long FIXPHY0:1; - unsigned long :3; - unsigned long SRPC0:1; - } BIT; - } DPUSR0R; - union { - unsigned long LONG; - struct { - unsigned long DVBINT1:1; - unsigned long :1; - unsigned long DOVRCRB1:1; - unsigned long DOVRCRA1:1; - unsigned long :2; - unsigned long DMINT1:1; - unsigned long DPINT1:1; - unsigned long DVBINT0:1; - unsigned long :1; - unsigned long DOVRCRB0:1; - unsigned long DOVRCRA0:1; - unsigned long :2; - unsigned long DMINT0:1; - unsigned long DPINT0:1; - unsigned long DVBSE1:1; - unsigned long :1; - unsigned long DOVRCRBE1:1; - unsigned long DOVRCRAE1:1; - unsigned long :2; - unsigned long DMINTE1:1; - unsigned long DPINTE1:1; - unsigned long DVBSE0:1; - unsigned long :1; - unsigned long DOVRCRBE0:1; - unsigned long DOVRCRAE0:1; - unsigned long :2; - unsigned long DMINTE0:1; - unsigned long DPINTE0:1; - } BIT; - } DPUSR1R; -}; - -struct st_usb0 { - union { - unsigned short WORD; - struct { - unsigned short :5; - unsigned short SCKE:1; - unsigned short :3; - unsigned short DCFM:1; - unsigned short DRPD:1; - unsigned short DPRPU:1; - unsigned short :3; - unsigned short USBE:1; - } BIT; - } SYSCFG; - char wk0[2]; - union { - unsigned short WORD; - struct { - unsigned short OVCMON:2; - unsigned short :7; - unsigned short HTACT:1; - unsigned short :3; - unsigned short IDMON:1; - unsigned short LNST:2; - } BIT; - } SYSSTS0; - char wk1[2]; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short HNPBTOA:1; - unsigned short EXICEN:1; - unsigned short VBUSEN:1; - unsigned short WKUP:1; - unsigned short RWUPE:1; - unsigned short USBRST:1; - unsigned short RESUME:1; - unsigned short UACT:1; - unsigned short :1; - unsigned short RHST:3; - } BIT; - } DVSTCTR0; - char wk2[10]; - union { - unsigned short WORD; - struct { - unsigned char L; - unsigned char H; - } BYTE; - } CFIFO; - char wk3[2]; - union { - unsigned short WORD; - struct { - unsigned char L; - unsigned char H; - } BYTE; - } D0FIFO; - char wk4[2]; - union { - unsigned short WORD; - struct { - unsigned char L; - unsigned char H; - } BYTE; - } D1FIFO; - char wk5[2]; - union { - unsigned short WORD; - struct { - unsigned short RCNT:1; - unsigned short REW:1; - unsigned short :3; - unsigned short MBW:1; - unsigned short :1; - unsigned short BIGEND:1; - unsigned short :2; - unsigned short ISEL:1; - unsigned short :1; - unsigned short CURPIPE:4; - } BIT; - } CFIFOSEL; - union { - unsigned short WORD; - struct { - unsigned short BVAL:1; - unsigned short BCLR:1; - unsigned short FRDY:1; - unsigned short :4; - unsigned short DTLN:9; - } BIT; - } CFIFOCTR; - char wk6[4]; - union { - unsigned short WORD; - struct { - unsigned short RCNT:1; - unsigned short REW:1; - unsigned short DCLRM:1; - unsigned short DREQE:1; - unsigned short :1; - unsigned short MBW:1; - unsigned short :1; - unsigned short BIGEND:1; - unsigned short :4; - unsigned short CURPIPE:4; - } BIT; - } D0FIFOSEL; - union { - unsigned short WORD; - struct { - unsigned short BVAL:1; - unsigned short BCLR:1; - unsigned short FRDY:1; - unsigned short :4; - unsigned short DTLN:9; - } BIT; - } D0FIFOCTR; - union { - unsigned short WORD; - struct { - unsigned short RCNT:1; - unsigned short REW:1; - unsigned short DCLRM:1; - unsigned short DREQE:1; - unsigned short :1; - unsigned short MBW:1; - unsigned short :1; - unsigned short BIGEND:1; - unsigned short :4; - unsigned short CURPIPE:4; - } BIT; - } D1FIFOSEL; - union { - unsigned short WORD; - struct { - unsigned short BVAL:1; - unsigned short BCLR:1; - unsigned short FRDY:1; - unsigned short :4; - unsigned short DTLN:9; - } BIT; - } D1FIFOCTR; - union { - unsigned short WORD; - struct { - unsigned short VBSE:1; - unsigned short RSME:1; - unsigned short SOFE:1; - unsigned short DVSE:1; - unsigned short CTRE:1; - unsigned short BEMPE:1; - unsigned short NRDYE:1; - unsigned short BRDYE:1; - } BIT; - } INTENB0; - union { - unsigned short WORD; - struct { - unsigned short OVRCRE:1; - unsigned short BCHGE:1; - unsigned short :1; - unsigned short DTCHE:1; - unsigned short ATTCHE:1; - unsigned short :4; - unsigned short EOFERRE:1; - unsigned short SIGNE:1; - unsigned short SACKE:1; - } BIT; - } INTENB1; - char wk7[2]; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short PIPE9BRDYE:1; - unsigned short PIPE8BRDYE:1; - unsigned short PIPE7BRDYE:1; - unsigned short PIPE6BRDYE:1; - unsigned short PIPE5BRDYE:1; - unsigned short PIPE4BRDYE:1; - unsigned short PIPE3BRDYE:1; - unsigned short PIPE2BRDYE:1; - unsigned short PIPE1BRDYE:1; - unsigned short PIPE0BRDYE:1; - } BIT; - } BRDYENB; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short PIPE9BRDYE:1; - unsigned short PIPE8BRDYE:1; - unsigned short PIPE7BRDYE:1; - unsigned short PIPE6BRDYE:1; - unsigned short PIPE5BRDYE:1; - unsigned short PIPE4BRDYE:1; - unsigned short PIPE3BRDYE:1; - unsigned short PIPE2BRDYE:1; - unsigned short PIPE1BRDYE:1; - unsigned short PIPE0BRDYE:1; - } BIT; - } NRDYENB; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short PIPE9BEMPE:1; - unsigned short PIPE8BEMPE:1; - unsigned short PIPE7BEMPE:1; - unsigned short PIPE6BEMPE:1; - unsigned short PIPE5BEMPE:1; - unsigned short PIPE4BEMPE:1; - unsigned short PIPE3BEMPE:1; - unsigned short PIPE2BEMPE:1; - unsigned short PIPE1BEMPE:1; - unsigned short PIPE0BEMPE:1; - } BIT; - } BEMPENB; - union { - unsigned short WORD; - struct { - unsigned short :7; - unsigned short TRNENSEL:1; - unsigned short :1; - unsigned short BRDYM:1; - unsigned short :1; - unsigned short EDGESTS:1; - } BIT; - } SOFCFG; - char wk8[2]; - union { - unsigned short WORD; - struct { - unsigned short VBINT:1; - unsigned short RESM:1; - unsigned short SOFR:1; - unsigned short DVST:1; - unsigned short CTRT:1; - unsigned short BEMP:1; - unsigned short NRDY:1; - unsigned short BRDY:1; - unsigned short VBSTS:1; - unsigned short DVSQ:3; - unsigned short VALID:1; - unsigned short CTSQ:3; - } BIT; - } INTSTS0; - union { - unsigned short WORD; - struct { - unsigned short OVRCR:1; - unsigned short BCHG:1; - unsigned short :1; - unsigned short DTCH:1; - unsigned short ATTCH:1; - unsigned short :4; - unsigned short EOFERR:1; - unsigned short SIGN:1; - unsigned short SACK:1; - } BIT; - } INTSTS1; - char wk9[2]; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short PIPE9BRDY:1; - unsigned short PIPE8BRDY:1; - unsigned short PIPE7BRDY:1; - unsigned short PIPE6BRDY:1; - unsigned short PIPE5BRDY:1; - unsigned short PIPE4BRDY:1; - unsigned short PIPE3BRDY:1; - unsigned short PIPE2BRDY:1; - unsigned short PIPE1BRDY:1; - unsigned short PIPE0BRDY:1; - } BIT; - } BRDYSTS; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short PIPE9BRDY:1; - unsigned short PIPE8BRDY:1; - unsigned short PIPE7BRDY:1; - unsigned short PIPE6BRDY:1; - unsigned short PIPE5BRDY:1; - unsigned short PIPE4BRDY:1; - unsigned short PIPE3BRDY:1; - unsigned short PIPE2BRDY:1; - unsigned short PIPE1BRDY:1; - unsigned short PIPE0BRDY:1; - } BIT; - } NRDYSTS; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short PIPE9BENP:1; - unsigned short PIPE8BENP:1; - unsigned short PIPE7BENP:1; - unsigned short PIPE6BENP:1; - unsigned short PIPE5BENP:1; - unsigned short PIPE4BENP:1; - unsigned short PIPE3BENP:1; - unsigned short PIPE2BENP:1; - unsigned short PIPE1BENP:1; - unsigned short PIPE0BENP:1; - } BIT; - } BEMPSTS; - union { - unsigned short WORD; - struct { - unsigned short OVRN:1; - unsigned short CRCE:1; - unsigned short :3; - unsigned short FRNM:11; - } BIT; - } FRMNUM; - union { - unsigned short WORD; - struct { - unsigned short DVCHG:1; - } BIT; - } DVCHGR; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short STSRECOV:4; - unsigned short :1; - unsigned short USBADDR:7; - } BIT; - } USBADDR; - char wk10[2]; - union { - unsigned short WORD; - struct { - unsigned short BREQUEST:8; - unsigned short BMREQUESTTYPE:8; - } BIT; - } USBREQ; - unsigned short USBVAL; - unsigned short USBINDX; - unsigned short USBLENG; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short SHTNAK:1; - unsigned short :2; - unsigned short DIR:1; - } BIT; - } DCPCFG; - union { - unsigned short WORD; - struct { - unsigned short DEVSEL:4; - unsigned short :5; - unsigned short MXPS:7; - } BIT; - } DCPMAXP; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short SUREQ:1; - unsigned short :2; - unsigned short SUREQCLR:1; - unsigned short :2; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :2; - unsigned short CCPL:1; - unsigned short PID:2; - } BIT; - } DCPCTR; - char wk11[2]; - union { - unsigned short WORD; - struct { - unsigned short :12; - unsigned short PIPESEL:4; - } BIT; - } PIPESEL; - char wk12[2]; - union { - unsigned short WORD; - struct { - unsigned short TYPE:2; - unsigned short :3; - unsigned short BFRE:1; - unsigned short DBLB:1; - unsigned short :1; - unsigned short SHTNAK:1; - unsigned short :2; - unsigned short DIR:1; - unsigned short EPNUM:4; - } BIT; - } PIPECFG; - char wk13[2]; - union { - unsigned short WORD; - struct { - unsigned short DEVSEL:4; - unsigned short :3; - unsigned short MXPS:9; - } BIT; - } PIPEMAXP; - union { - unsigned short WORD; - struct { - unsigned short :3; - unsigned short IFIS:1; - unsigned short :9; - unsigned short IITV:3; - } BIT; - } PIPEPERI; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short INBUFM:1; - unsigned short :3; - unsigned short ATREPM:1; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE1CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short INBUFM:1; - unsigned short :3; - unsigned short ATREPM:1; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE2CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short INBUFM:1; - unsigned short :3; - unsigned short ATREPM:1; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE3CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short INBUFM:1; - unsigned short :3; - unsigned short ATREPM:1; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE4CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short INBUFM:1; - unsigned short :3; - unsigned short ATREPM:1; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE5CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short :5; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE6CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short :5; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE7CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short :5; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE8CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short :5; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE9CTR; - char wk14[14]; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short TRENB:1; - unsigned short TRCLR:1; - } BIT; - } PIPE1TRE; - unsigned short PIPE1TRN; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short TRENB:1; - unsigned short TRCLR:1; - } BIT; - } PIPE2TRE; - unsigned short PIPE2TRN; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short TRENB:1; - unsigned short TRCLR:1; - } BIT; - } PIPE3TRE; - unsigned short PIPE3TRN; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short TRENB:1; - unsigned short TRCLR:1; - } BIT; - } PIPE4TRE; - unsigned short PIPE4TRN; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short TRENB:1; - unsigned short TRCLR:1; - } BIT; - } PIPE5TRE; - unsigned short PIPE5TRN; - char wk15[44]; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short USBSPD:2; - } BIT; - } DEVADD0; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short USBSPD:2; - } BIT; - } DEVADD1; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short USBSPD:2; - } BIT; - } DEVADD2; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short USBSPD:2; - } BIT; - } DEVADD3; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short USBSPD:2; - } BIT; - } DEVADD4; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short USBSPD:2; - } BIT; - } DEVADD5; -}; - -union un_wdt { - struct { - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char TMS:1; - unsigned char TME:1; - unsigned char :2; - unsigned char CKS:3; - } BIT; - } TCSR; - unsigned char TCNT; - char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char WOVF:1; - unsigned char RSTE:1; - } BIT; - } RSTCSR; - } READ; - struct { - unsigned short WINA; - unsigned short WINB; - } WRITE; -}; - -enum enum_ir { -IR_BSC_BUSERR=16,IR_FCU_FIFERR=21,IR_FCU_FRDYI=23, -IR_ICU_SWINT=27, -IR_CMT0_CMI0, -IR_CMT1_CMI1, -IR_CMT2_CMI2, -IR_CMT3_CMI3, -IR_ETHER_EINT, -IR_USB0_D0FIFO0=36,IR_USB0_D1FIFO0,IR_USB0_USBI0, -IR_USB1_D0FIFO1=40,IR_USB1_D1FIFO1,IR_USB1_USBI1, -IR_RSPI0_SPEI0=44,IR_RSPI0_SPRI0,IR_RSPI0_SPTI0,IR_RSPI0_SPII0, -IR_RSPI1_SPEI1,IR_RSPI1_SPRI1,IR_RSPI1_SPTI1,IR_RSPI1_SPII1, -IR_CAN0_ERS0=56,IR_CAN0_RXF0,IR_CAN0_TXF0,IR_CAN0_RXM0,IR_CAN0_TXM0, -IR_RTC_PRD=62,IR_RTC_CUP, -IR_ICU_IRQ0,IR_ICU_IRQ1,IR_ICU_IRQ2,IR_ICU_IRQ3,IR_ICU_IRQ4,IR_ICU_IRQ5,IR_ICU_IRQ6,IR_ICU_IRQ7,IR_ICU_IRQ8,IR_ICU_IRQ9,IR_ICU_IRQ10,IR_ICU_IRQ11,IR_ICU_IRQ12,IR_ICU_IRQ13,IR_ICU_IRQ14,IR_ICU_IRQ15, -IR_USB_USBR0=90,IR_USB_USBR1, -IR_RTC_ALM, -IR_WDT_WOVI=96, -IR_AD0_ADI0=98, -IR_AD1_ADI1, -IR_S12AD_ADI=102, -IR_MTU0_TGIA0=114,IR_MTU0_TGIB0,IR_MTU0_TGIC0,IR_MTU0_TGID0,IR_MTU0_TCIV0,IR_MTU0_TGIE0,IR_MTU0_TGIF0, -IR_MTU1_TGIA1,IR_MTU1_TGIB1,IR_MTU1_TCIV1,IR_MTU1_TCIU1, -IR_MTU2_TGIA2,IR_MTU2_TGIB2,IR_MTU2_TCIV2,IR_MTU2_TCIU2, -IR_MTU3_TGIA3,IR_MTU3_TGIB3,IR_MTU3_TGIC3,IR_MTU3_TGID3,IR_MTU3_TCIV3, -IR_MTU4_TGIA4,IR_MTU4_TGIB4,IR_MTU4_TGIC4,IR_MTU4_TGID4,IR_MTU4_TCIV4, -IR_MTU5_TGIU5,IR_MTU5_TGIV5,IR_MTU5_TGIW5, -IR_MTU6_TGIA6,IR_MTU6_TGIB6,IR_MTU6_TGIC6,IR_MTU6_TGID6,IR_MTU6_TCIV6,IR_MTU6_TGIE6,IR_MTU6_TGIF6, -IR_MTU7_TGIA7,IR_MTU7_TGIB7,IR_MTU7_TCIV7,IR_MTU7_TCIU7, -IR_MTU8_TGIA8,IR_MTU8_TGIB8,IR_MTU8_TCIV8,IR_MTU8_TCIU8, -IR_MTU9_TGIA9,IR_MTU9_TGIB9,IR_MTU9_TGIC9,IR_MTU9_TGID9,IR_MTU9_TCIV9, -IR_MTU10_TGIA10,IR_MTU10_TGIB10,IR_MTU10_TGIC10,IR_MTU10_TGID10,IR_MTU10_TCIV10, -IR_MTU11_TGIU11,IR_MTU11_TGIV11,IR_MTU11_TGIW11, -IR_POE_OEI1,IR_POE_OEI2,IR_POE_OEI3,IR_POE_OEI4, -IR_TMR0_CMIA0,IR_TMR0_CMIB0,IR_TMR0_OVI0, -IR_TMR1_CMIA1,IR_TMR1_CMIB1,IR_TMR1_OVI1, -IR_TMR2_CMIA2,IR_TMR2_CMIB2,IR_TMR2_OVI2, -IR_TMR3_CMIA3,IR_TMR3_CMIB3,IR_TMR3_OVI3, -IR_DMAC_DMAC0I=198,IR_DMAC_DMAC1I,IR_DMAC_DMAC2I,IR_DMAC_DMAC3I, -IR_EXDMAC_EXDMAC0I,IR_EXDMAC_EXDMAC1I, -IR_SCI0_ERI0=214,IR_SCI0_RXI0,IR_SCI0_TXI0,IR_SCI0_TEI0, -IR_SCI1_ERI1,IR_SCI1_RXI1,IR_SCI1_TXI1,IR_SCI1_TEI1, -IR_SCI2_ERI2,IR_SCI2_RXI2,IR_SCI2_TXI2,IR_SCI2_TEI2, -IR_SCI3_ERI3,IR_SCI3_RXI3,IR_SCI3_TXI3,IR_SCI3_TEI3, -IR_SCI5_ERI5=234,IR_SCI5_RXI5,IR_SCI5_TXI5,IR_SCI5_TEI5, -IR_SCI6_ERI6,IR_SCI6_RXI6,IR_SCI6_TXI6,IR_SCI6_TEI6, -IR_RIIC0_ICEEI0=246,IR_RIIC0_ICRXI0,IR_RIIC0_ICTXI0,IR_RIIC0_ICTEI0, -IR_RIIC1_ICEEI1,IR_RIIC1_ICRXI1,IR_RIIC1_ICTXI1,IR_RIIC1_ICTEI1 -}; - -enum enum_dtce { -DTCE_ICU_SWINT=27, -DTCE_CMT0_CMI0, -DTCE_CMT1_CMI1, -DTCE_CMT2_CMI2, -DTCE_CMT3_CMI3, -DTCE_USB0_D0FIFO0=36,DTCE_USB0_D1FIFO0, -DTCE_USB1_D0FIFO1=40,DTCE_USB1_D1FIFO1, -DTCE_RSPI0_SPRI0=45,DTCE_RSPI0_SPTI0, -DTCE_RSPI1_SPRI1=49,DTCE_RSPI1_SPTI1, -DTCE_ICU_IRQ0=64,DTCE_ICU_IRQ1,DTCE_ICU_IRQ2,DTCE_ICU_IRQ3,DTCE_ICU_IRQ4,DTCE_ICU_IRQ5,DTCE_ICU_IRQ6,DTCE_ICU_IRQ7,DTCE_ICU_IRQ8,DTCE_ICU_IRQ9,DTCE_ICU_IRQ10,DTCE_ICU_IRQ11,DTCE_ICU_IRQ12,DTCE_ICU_IRQ13,DTCE_ICU_IRQ14,DTCE_ICU_IRQ15, -DTCE_AD0_ADI0=98, -DTCE_AD1_ADI1, -DTCE_S12AD_ADI=102, -DTCE_MTU0_TGIA0=114,DTCE_MTU0_TGIB0,DTCE_MTU0_TGIC0,DTCE_MTU0_TGID0, -DTCE_MTU1_TGIA1=121,DTCE_MTU1_TGIB1, -DTCE_MTU2_TGIA2=125,DTCE_MTU2_TGIB2, -DTCE_MTU3_TGIA3=129,DTCE_MTU3_TGIB3,DTCE_MTU3_TGIC3,DTCE_MTU3_TGID3, -DTCE_MTU4_TGIA4=134,DTCE_MTU4_TGIB4,DTCE_MTU4_TGIC4,DTCE_MTU4_TGID4,DTCE_MTU4_TCIV4, -DTCE_MTU5_TGIU5,DTCE_MTU5_TGIV5,DTCE_MTU5_TGIW5, -DTCE_MTU6_TGIA6,DTCE_MTU6_TGIB6,DTCE_MTU6_TGIC6,DTCE_MTU6_TGID6, -DTCE_MTU7_TGIA7=149,DTCE_MTU7_TGIB7, -DTCE_MTU8_TGIA8=153,DTCE_MTU8_TGIB8, -DTCE_MTU9_TGIA9=157,DTCE_MTU9_TGIB9,DTCE_MTU9_TGIC9,DTCE_MTU9_TGID9, -DTCE_MTU10_TGIA10=162,DTCE_MTU10_TGIB10,DTCE_MTU10_TGIC10,DTCE_MTU10_TGID10,DTCE_MTU10_TCIV10, -DTCE_MTU11_TGIU11,DTCE_MTU11_TGIV11,DTCE_MTU11_TGIW11, -DTCE_TMR0_CMIA0=174,DTCE_TMR0_CMIB0, -DTCE_TMR1_CMIA1=177,DTCE_TMR1_CMIB1, -DTCE_TMR2_CMIA2=180,DTCE_TMR2_CMIB2, -DTCE_TMR3_CMIA3=183,DTCE_TMR3_CMIB3, -DTCE_DMAC_DMAC0I=198,DTCE_DMAC_DMAC1I,DTCE_DMAC_DMAC2I,DTCE_DMAC_DMAC3I, -DTCE_EXDMAC_EXDMAC0I,DTCE_EXDMAC_EXDMAC1I, -DTCE_SCI0_RXI0=215,DTCE_SCI0_TXI0, -DTCE_SCI1_RXI1=219,DTCE_SCI1_TXI1, -DTCE_SCI2_RXI2=223,DTCE_SCI2_TXI2, -DTCE_SCI3_RXI3=227,DTCE_SCI3_TXI3, -DTCE_SCI5_RXI5=235,DTCE_SCI5_TXI5, -DTCE_SCI6_RXI6=239,DTCE_SCI6_TXI6, -DTCE_RIIC0_ICRXI0=247,DTCE_RIIC0_ICTXI0, -DTCE_RIIC1_ICRXI1=251,DTCE_RIIC1_ICTXI1 -}; - -enum enum_ier { -IER_BSC_BUSERR=0x02, -IER_FCU_FIFERR=0x02,IER_FCU_FRDYI=0x02, -IER_ICU_SWINT=0x03, -IER_CMT0_CMI0=0x03, -IER_CMT1_CMI1=0x03, -IER_CMT2_CMI2=0x03, -IER_CMT3_CMI3=0x03, -IER_ETHER_EINT=0x04, -IER_USB0_D0FIFO0=0x04,IER_USB0_D1FIFO0=0x04,IER_USB0_USBI0=0x04, -IER_USB1_D0FIFO1=0x05,IER_USB1_D1FIFO1=0x05,IER_USB1_USBI1=0x05, -IER_RSPI0_SPEI0=0x05,IER_RSPI0_SPRI0=0x05,IER_RSPI0_SPTI0=0x05,IER_RSPI0_SPII0=0x05, -IER_RSPI1_SPEI1=0x06,IER_RSPI1_SPRI1=0x06,IER_RSPI1_SPTI1=0x06,IER_RSPI1_SPII1=0x06, -IER_CAN0_ERS0=0x07,IER_CAN0_RXF0=0x07,IER_CAN0_TXF0=0x07,IER_CAN0_RXM0=0x07,IER_CAN0_TXM0=0x07, -IER_RTC_PRD=0x07,IER_RTC_CUP=0x07, -IER_ICU_IRQ0=0x08,IER_ICU_IRQ1=0x08,IER_ICU_IRQ2=0x08,IER_ICU_IRQ3=0x08,IER_ICU_IRQ4=0x08,IER_ICU_IRQ5=0x08,IER_ICU_IRQ6=0x08,IER_ICU_IRQ7=0x08,IER_ICU_IRQ8=0x09,IER_ICU_IRQ9=0x09,IER_ICU_IRQ10=0x09,IER_ICU_IRQ11=0x09,IER_ICU_IRQ12=0x09,IER_ICU_IRQ13=0x09,IER_ICU_IRQ14=0x09,IER_ICU_IRQ15=0x09, -IER_USB_USBR0=0x0B,IER_USB_USBR1=0x0B, -IER_RTC_ALM=0x0B, -IER_WDT_WOVI=0x0C, -IER_AD0_ADI0=0x0C, -IER_AD1_ADI1=0x0C, -IER_S12AD_ADI=0x0C, -IER_MTU0_TGIA0=0x0E,IER_MTU0_TGIB0=0x0E,IER_MTU0_TGIC0=0x0E,IER_MTU0_TGID0=0x0E,IER_MTU0_TCIV0=0x0E,IER_MTU0_TGIE0=0x0E,IER_MTU0_TGIF0=0x0F, -IER_MTU1_TGIA1=0x0F,IER_MTU1_TGIB1=0x0F,IER_MTU1_TCIV1=0x0F,IER_MTU1_TCIU1=0x0F, -IER_MTU2_TGIA2=0x0F,IER_MTU2_TGIB2=0x0F,IER_MTU2_TCIV2=0x0F,IER_MTU2_TCIU2=0x10, -IER_MTU3_TGIA3=0x10,IER_MTU3_TGIB3=0x10,IER_MTU3_TGIC3=0x10,IER_MTU3_TGID3=0x10,IER_MTU3_TCIV3=0x10, -IER_MTU4_TGIA4=0x10,IER_MTU4_TGIB4=0x10,IER_MTU4_TGIC4=0x11,IER_MTU4_TGID4=0x11,IER_MTU4_TCIV4=0x11, -IER_MTU5_TGIU5=0x11,IER_MTU5_TGIV5=0x11,IER_MTU5_TGIW5=0x10, -IER_MTU6_TGIA6=0x11,IER_MTU6_TGIB6=0x11,IER_MTU6_TGIC6=0x12,IER_MTU6_TGID6=0x12,IER_MTU6_TCIV6=0x12,IER_MTU6_TGIE6=0x12,IER_MTU6_TGIF6=0x12, -IER_MTU7_TGIA7=0x12,IER_MTU7_TGIB7=0x12,IER_MTU7_TCIV7=0x12,IER_MTU7_TCIU7=0x13, -IER_MTU8_TGIA8=0x13,IER_MTU8_TGIB8=0x13,IER_MTU8_TCIV8=0x13,IER_MTU8_TCIU8=0x13, -IER_MTU9_TGIA9=0x13,IER_MTU9_TGIB9=0x13,IER_MTU9_TGIC9=0x13,IER_MTU9_TGID9=0x14,IER_MTU9_TCIV9=0x14, -IER_MTU10_TGIA10=0x14,IER_MTU10_TGIB10=0x14,IER_MTU10_TGIC10=0x14,IER_MTU10_TGID10=0x14,IER_MTU10_TCIV10=0x14, -IER_MTU11_TGIU11=0x14,IER_MTU11_TGIV11=0x15,IER_MTU11_TGIW11=0x15, -IER_POE_OEI1=0x15,IER_POE_OEI2=0x15,IER_POE_OEI3=0x15,IER_POE_OEI4=0x15, -IER_TMR0_CMIA0=0x15,IER_TMR0_CMIB0=0x15,IER_TMR0_OVI0=0x16, -IER_TMR1_CMIA1=0x16,IER_TMR1_CMIB1=0x16,IER_TMR1_OVI1=0x16, -IER_TMR2_CMIA2=0x16,IER_TMR2_CMIB2=0x16,IER_TMR2_OVI2=0x16, -IER_TMR3_CMIA3=0x16,IER_TMR3_CMIB3=0x17,IER_TMR3_OVI3=0x17, -IER_DMAC_DMAC0I=0x18,IER_DMAC_DMAC1I=0x18,IER_DMAC_DMAC2I=0x19,IER_DMAC_DMAC3I=0x19, -IER_EXDMAC_EXDMAC0I=0x19,IER_EXDMAC_EXDMAC1I=0x19, -IER_SCI0_ERI0=0x1A,IER_SCI0_RXI0=0x1A,IER_SCI0_TXI0=0x1B,IER_SCI0_TEI0=0x1B, -IER_SCI1_ERI1=0x1B,IER_SCI1_RXI1=0x1B,IER_SCI1_TXI1=0x1B,IER_SCI1_TEI1=0x1B, -IER_SCI2_ERI2=0x1B,IER_SCI2_RXI2=0x1B,IER_SCI2_TXI2=0x1C,IER_SCI2_TEI2=0x1C, -IER_SCI3_ERI3=0x1C,IER_SCI3_RXI3=0x1C,IER_SCI3_TXI3=0x1C,IER_SCI3_TEI3=0x1C, -IER_SCI5_ERI5=0x1D,IER_SCI5_RXI5=0x1D,IER_SCI5_TXI5=0x1D,IER_SCI5_TEI5=0x1D, -IER_SCI6_ERI6=0x1D,IER_SCI6_RXI6=0x1D,IER_SCI6_TXI6=0x1E,IER_SCI6_TEI6=0x1E, -IER_RIIC0_ICEEI0=0x1E,IER_RIIC0_ICRXI0=0x1E,IER_RIIC0_ICTXI0=0x1F,IER_RIIC0_ICTEI0=0x1F, -IER_RIIC1_ICEEI1=0x1F,IER_RIIC1_ICRXI1=0x1F,IER_RIIC1_ICTXI1=0x1F,IER_RIIC1_ICTEI1=0x1F -}; - -enum enum_ipr { -IPR_BSC_BUSERR=0x00, -IPR_FCU_FIFERR=0x01,IPR_FCU_FRDYI=0x02, -IPR_ICU_SWINT=0x03, -IPR_CMT0_CMI0=0x04, -IPR_CMT1_CMI1=0x05, -IPR_CMT2_CMI2=0x06, -IPR_CMT3_CMI3=0x07, -IPR_ETHER_EINT=0x08, -IPR_USB0_D0FIFO0=0x0C,IPR_USB0_D1FIFO0=0x0D,IPR_USB0_USBI0=0x0E, -IPR_USB1_D0FIFO1=0x10,IPR_USB1_D1FIFO1=0x11,IPR_USB1_USBI1=0x12, -IPR_RSPI0_SPEI0=0x14,IPR_RSPI0_SPRI0=0x14,IPR_RSPI0_SPTI0=0x14,IPR_RSPI0_SPII0=0x14, -IPR_RSPI1_SPEI1=0x15,IPR_RSPI1_SPRI1=0x15,IPR_RSPI1_SPTI1=0x15,IPR_RSPI1_SPII1=0x15, -IPR_CAN0_ERS0=0x18,IPR_CAN0_RXF0=0x18,IPR_CAN0_TXF0=0x18,IPR_CAN0_RXM0=0x18,IPR_CAN0_TXM0=0x18, -IPR_RTC_PRD=0x1E,IPR_RTC_CUP=0x1F, -IPR_ICU_IRQ0=0x20,IPR_ICU_IRQ1=0x21,IPR_ICU_IRQ2=0x22,IPR_ICU_IRQ3=0x23,IPR_ICU_IRQ4=0x24,IPR_ICU_IRQ5=0x25,IPR_ICU_IRQ6=0x26,IPR_ICU_IRQ7=0x27,IPR_ICU_IRQ8=0x28,IPR_ICU_IRQ9=0x29,IPR_ICU_IRQ10=0x2A,IPR_ICU_IRQ11=0x2B,IPR_ICU_IRQ12=0x2C,IPR_ICU_IRQ13=0x2D,IPR_ICU_IRQ14=0x2E,IPR_ICU_IRQ15=0x2F, -IPR_USB_USBR0=0x3A,IPR_USB_USBR1=0x3B, -IPR_RTC_ALM=0x3C, -IPR_WDT_WOVI=0x40, -IPR_AD0_ADI0=0x44, -IPR_AD1_ADI1=0x45, -IPR_S12AD_ADI=0x48, -IPR_MTU0_TGIA0=0x51,IPR_MTU0_TGIB0=0x51,IPR_MTU0_TGIC0=0x51,IPR_MTU0_TGID0=0x51,IPR_MTU0_TCIV0=0x52,IPR_MTU0_TGIE0=0x52,IPR_MTU0_TGIF0=0x52, -IPR_MTU1_TGIA1=0x53,IPR_MTU1_TGIB1=0x53,IPR_MTU1_TCIV1=0x54,IPR_MTU1_TCIU1=0x54, -IPR_MTU2_TGIA2=0x55,IPR_MTU2_TGIB2=0x55,IPR_MTU2_TCIV2=0x56,IPR_MTU2_TCIU2=0x56, -IPR_MTU3_TGIA3=0x57,IPR_MTU3_TGIB3=0x57,IPR_MTU3_TGIC3=0x57,IPR_MTU3_TGID3=0x57,IPR_MTU3_TCIV3=0x58, -IPR_MTU4_TGIA4=0x59,IPR_MTU4_TGIB4=0x59,IPR_MTU4_TGIC4=0x59,IPR_MTU4_TGID4=0x59,IPR_MTU4_TCIV4=0x5A, -IPR_MTU5_TGIU5=0x5B,IPR_MTU5_TGIV5=0x5B,IPR_MTU5_TGIW5=0x5B, -IPR_MTU6_TGIA6=0x5C,IPR_MTU6_TGIB6=0x5C,IPR_MTU6_TGIC6=0x5C,IPR_MTU6_TGID6=0x5C,IPR_MTU6_TCIV6=0x5D,IPR_MTU6_TGIE6=0x5D,IPR_MTU6_TGIF6=0x5D, -IPR_MTU7_TGIA7=0x5E,IPR_MTU7_TGIB7=0x5E,IPR_MTU7_TCIV7=0x5F,IPR_MTU7_TCIU7=0x5F, -IPR_MTU8_TGIA8=0x60,IPR_MTU8_TGIB8=0x60,IPR_MTU8_TCIV8=0x61,IPR_MTU8_TCIU8=0x61, -IPR_MTU9_TGIA9=0x62,IPR_MTU9_TGIB9=0x62,IPR_MTU9_TGIC9=0x62,IPR_MTU9_TGID9=0x62,IPR_MTU9_TCIV9=0x63, -IPR_MTU10_TGIA10=0x64,IPR_MTU10_TGIB10=0x64,IPR_MTU10_TGIC10=0x64,IPR_MTU10_TGID10=0x64,IPR_MTU10_TCIV10=0x65, -IPR_MTU11_TGIU11=0x66,IPR_MTU11_TGIV11=0x66,IPR_MTU11_TGIW11=0x66, -IPR_POE_OEI1=0x67,IPR_POE_OEI2=0x67,IPR_POE_OEI3=0x67,IPR_POE_OEI4=0x67, -IPR_TMR0_CMIA0=0x68,IPR_TMR0_CMIB0=0x68,IPR_TMR0_OVI0=0x68, -IPR_TMR1_CMIA1=0x69,IPR_TMR1_CMIB1=0x69,IPR_TMR1_OVI1=0x69, -IPR_TMR2_CMIA2=0x6A,IPR_TMR2_CMIB2=0x6A,IPR_TMR2_OVI2=0x6A, -IPR_TMR3_CMIA3=0x6B,IPR_TMR3_CMIB3=0x6B,IPR_TMR3_OVI3=0x6B, -IPR_DMAC_DMAC0I=0x70,IPR_DMAC_DMAC1I=0x71,IPR_DMAC_DMAC2I=0x72,IPR_DMAC_DMAC3I=0x73, -IPR_EXDMAC_EXDMAC0I=0x74,IPR_EXDMAC_EXDMAC1I=0x75, -IPR_SCI0_ERI0=0x80,IPR_SCI0_RXI0=0x80,IPR_SCI0_TXI0=0x80,IPR_SCI0_TEI0=0x80, -IPR_SCI1_ERI1=0x81,IPR_SCI1_RXI1=0x81,IPR_SCI1_TXI1=0x81,IPR_SCI1_TEI1=0x81, -IPR_SCI2_ERI2=0x82,IPR_SCI2_RXI2=0x82,IPR_SCI2_TXI2=0x82,IPR_SCI2_TEI2=0x82, -IPR_SCI3_ERI3=0x83,IPR_SCI3_RXI3=0x83,IPR_SCI3_TXI3=0x83,IPR_SCI3_TEI3=0x83, -IPR_SCI5_ERI5=0x85,IPR_SCI5_RXI5=0x85,IPR_SCI5_TXI5=0x85,IPR_SCI5_TEI5=0x85, -IPR_SCI6_ERI6=0x86,IPR_SCI6_RXI6=0x86,IPR_SCI6_TXI6=0x86,IPR_SCI6_TEI6=0x86, -IPR_RIIC0_ICEEI0=0x88,IPR_RIIC0_ICRXI0=0x89,IPR_RIIC0_ICTXI0=0x8A,IPR_RIIC0_ICTEI0=0x8B, -IPR_RIIC1_ICEEI1=0x8C,IPR_RIIC1_ICRXI1=0x8D,IPR_RIIC1_ICTXI1=0x8E,IPR_RIIC1_ICTEI1=0x8F, -IPR_BSC_=0x00, -IPR_CMT0_=0x04, -IPR_CMT1_=0x05, -IPR_CMT2_=0x06, -IPR_CMT3_=0x07, -IPR_ETHER_=0x08, -IPR_RSPI0_=0x14, -IPR_RSPI1_=0x15, -IPR_CAN0_=0x18, -IPR_WDT_=0x40, -IPR_AD0_=0x44, -IPR_AD1_=0x45, -IPR_S12AD_=0x48, -IPR_MTU1_TGI=0x53, -IPR_MTU1_TCI=0x54, -IPR_MTU2_TGI=0x55, -IPR_MTU2_TCI=0x56, -IPR_MTU3_TGI=0x57, -IPR_MTU4_TGI=0x59, -IPR_MTU5_=0x5B, -IPR_MTU5_TGI=0x5B, -IPR_MTU7_TGI=0x5E, -IPR_MTU7_TCI=0x5F, -IPR_MTU8_TGI=0x60, -IPR_MTU8_TCI=0x61, -IPR_MTU9_TGI=0x62, -IPR_MTU10_TGI=0x64, -IPR_MTU11_=0x66, -IPR_MTU11_TGI=0x66, -IPR_POE_=0x67, -IPR_POE_OEI=0x67, -IPR_TMR0_=0x68, -IPR_TMR1_=0x69, -IPR_TMR2_=0x6A, -IPR_TMR3_=0x6B, -IPR_SCI0_=0x80, -IPR_SCI1_=0x81, -IPR_SCI2_=0x82, -IPR_SCI3_=0x83, -IPR_SCI5_=0x85, -IPR_SCI6_=0x86 -}; - -#define IEN_BSC_BUSERR IEN0 -#define IEN_FCU_FIFERR IEN5 -#define IEN_FCU_FRDYI IEN7 -#define IEN_ICU_SWINT IEN3 -#define IEN_CMT0_CMI0 IEN4 -#define IEN_CMT1_CMI1 IEN5 -#define IEN_CMT2_CMI2 IEN6 -#define IEN_CMT3_CMI3 IEN7 -#define IEN_ETHER_EINT IEN0 -#define IEN_USB0_D0FIFO0 IEN4 -#define IEN_USB0_D1FIFO0 IEN5 -#define IEN_USB0_USBI0 IEN6 -#define IEN_USB1_D0FIFO1 IEN0 -#define IEN_USB1_D1FIFO1 IEN1 -#define IEN_USB1_USBI1 IEN2 -#define IEN_RSPI0_SPEI0 IEN4 -#define IEN_RSPI0_SPRI0 IEN5 -#define IEN_RSPI0_SPTI0 IEN6 -#define IEN_RSPI0_SPII0 IEN7 -#define IEN_RSPI1_SPEI1 IEN0 -#define IEN_RSPI1_SPRI1 IEN1 -#define IEN_RSPI1_SPTI1 IEN2 -#define IEN_RSPI1_SPII1 IEN3 -#define IEN_CAN0_ERS0 IEN0 -#define IEN_CAN0_RXF0 IEN1 -#define IEN_CAN0_TXF0 IEN2 -#define IEN_CAN0_RXM0 IEN3 -#define IEN_CAN0_TXM0 IEN4 -#define IEN_RTC_PRD IEN6 -#define IEN_RTC_CUP IEN7 -#define IEN_ICU_IRQ0 IEN0 -#define IEN_ICU_IRQ1 IEN1 -#define IEN_ICU_IRQ2 IEN2 -#define IEN_ICU_IRQ3 IEN3 -#define IEN_ICU_IRQ4 IEN4 -#define IEN_ICU_IRQ5 IEN5 -#define IEN_ICU_IRQ6 IEN6 -#define IEN_ICU_IRQ7 IEN7 -#define IEN_ICU_IRQ8 IEN0 -#define IEN_ICU_IRQ9 IEN1 -#define IEN_ICU_IRQ10 IEN2 -#define IEN_ICU_IRQ11 IEN3 -#define IEN_ICU_IRQ12 IEN4 -#define IEN_ICU_IRQ13 IEN5 -#define IEN_ICU_IRQ14 IEN6 -#define IEN_ICU_IRQ15 IEN7 -#define IEN_USB_USBR0 IEN2 -#define IEN_USB_USBR1 IEN3 -#define IEN_RTC_ALM IEN4 -#define IEN_WDT_WOVI IEN0 -#define IEN_AD0_ADI0 IEN2 -#define IEN_AD1_ADI1 IEN3 -#define IEN_S12AD_ADI IEN6 -#define IEN_MTU0_TGIA0 IEN2 -#define IEN_MTU0_TGIB0 IEN3 -#define IEN_MTU0_TGIC0 IEN4 -#define IEN_MTU0_TGID0 IEN5 -#define IEN_MTU0_TCIV0 IEN6 -#define IEN_MTU0_TGIE0 IEN7 -#define IEN_MTU0_TGIF0 IEN0 -#define IEN_MTU1_TGIA1 IEN1 -#define IEN_MTU1_TGIB1 IEN2 -#define IEN_MTU1_TCIV1 IEN3 -#define IEN_MTU1_TCIU1 IEN4 -#define IEN_MTU2_TGIA2 IEN5 -#define IEN_MTU2_TGIB2 IEN6 -#define IEN_MTU2_TCIV2 IEN7 -#define IEN_MTU2_TCIU2 IEN0 -#define IEN_MTU3_TGIA3 IEN1 -#define IEN_MTU3_TGIB3 IEN2 -#define IEN_MTU3_TGIC3 IEN3 -#define IEN_MTU3_TGID3 IEN4 -#define IEN_MTU3_TCIV3 IEN5 -#define IEN_MTU4_TGIA4 IEN6 -#define IEN_MTU4_TGIB4 IEN7 -#define IEN_MTU4_TGIC4 IEN0 -#define IEN_MTU4_TGID4 IEN1 -#define IEN_MTU4_TCIV4 IEN2 -#define IEN_MTU5_TGIU5 IEN3 -#define IEN_MTU5_TGIV5 IEN4 -#define IEN_MTU5_TGIW5 IEN7 -#define IEN_MTU6_TGIA6 IEN6 -#define IEN_MTU6_TGIB6 IEN7 -#define IEN_MTU6_TGIC6 IEN0 -#define IEN_MTU6_TGID6 IEN1 -#define IEN_MTU6_TCIV6 IEN2 -#define IEN_MTU6_TGIE6 IEN3 -#define IEN_MTU6_TGIF6 IEN4 -#define IEN_MTU7_TGIA7 IEN5 -#define IEN_MTU7_TGIB7 IEN6 -#define IEN_MTU7_TCIV7 IEN7 -#define IEN_MTU7_TCIU7 IEN0 -#define IEN_MTU8_TGIA8 IEN1 -#define IEN_MTU8_TGIB8 IEN2 -#define IEN_MTU8_TCIV8 IEN3 -#define IEN_MTU8_TCIU8 IEN4 -#define IEN_MTU9_TGIA9 IEN5 -#define IEN_MTU9_TGIB9 IEN6 -#define IEN_MTU9_TGIC9 IEN7 -#define IEN_MTU9_TGID9 IEN0 -#define IEN_MTU9_TCIV9 IEN1 -#define IEN_MTU10_TGIA10 IEN2 -#define IEN_MTU10_TGIB10 IEN3 -#define IEN_MTU10_TGIC10 IEN4 -#define IEN_MTU10_TGID10 IEN5 -#define IEN_MTU10_TCIV10 IEN6 -#define IEN_MTU11_TGIU11 IEN7 -#define IEN_MTU11_TGIV11 IEN0 -#define IEN_MTU11_TGIW11 IEN1 -#define IEN_POE_OEI1 IEN2 -#define IEN_POE_OEI2 IEN3 -#define IEN_POE_OEI3 IEN4 -#define IEN_POE_OEI4 IEN5 -#define IEN_TMR0_CMIA0 IEN6 -#define IEN_TMR0_CMIB0 IEN7 -#define IEN_TMR0_OVI0 IEN0 -#define IEN_TMR1_CMIA1 IEN1 -#define IEN_TMR1_CMIB1 IEN2 -#define IEN_TMR1_OVI1 IEN3 -#define IEN_TMR2_CMIA2 IEN4 -#define IEN_TMR2_CMIB2 IEN5 -#define IEN_TMR2_OVI2 IEN6 -#define IEN_TMR3_CMIA3 IEN7 -#define IEN_TMR3_CMIB3 IEN0 -#define IEN_TMR3_OVI3 IEN1 -#define IEN_DMAC_DMAC0I IEN6 -#define IEN_DMAC_DMAC1I IEN7 -#define IEN_DMAC_DMAC2I IEN0 -#define IEN_DMAC_DMAC3I IEN1 -#define IEN_EXDMAC_EXDMAC0I IEN2 -#define IEN_EXDMAC_EXDMAC1I IEN3 -#define IEN_SCI0_ERI0 IEN6 -#define IEN_SCI0_RXI0 IEN7 -#define IEN_SCI0_TXI0 IEN0 -#define IEN_SCI0_TEI0 IEN1 -#define IEN_SCI1_ERI1 IEN2 -#define IEN_SCI1_RXI1 IEN3 -#define IEN_SCI1_TXI1 IEN4 -#define IEN_SCI1_TEI1 IEN5 -#define IEN_SCI2_ERI2 IEN6 -#define IEN_SCI2_RXI2 IEN7 -#define IEN_SCI2_TXI2 IEN0 -#define IEN_SCI2_TEI2 IEN1 -#define IEN_SCI3_ERI3 IEN2 -#define IEN_SCI3_RXI3 IEN3 -#define IEN_SCI3_TXI3 IEN4 -#define IEN_SCI3_TEI3 IEN5 -#define IEN_SCI5_ERI5 IEN2 -#define IEN_SCI5_RXI5 IEN3 -#define IEN_SCI5_TXI5 IEN4 -#define IEN_SCI5_TEI5 IEN5 -#define IEN_SCI6_ERI6 IEN6 -#define IEN_SCI6_RXI6 IEN7 -#define IEN_SCI6_TXI6 IEN0 -#define IEN_SCI6_TEI6 IEN1 -#define IEN_RIIC0_ICEEI0 IEN6 -#define IEN_RIIC0_ICRXI0 IEN7 -#define IEN_RIIC0_ICTXI0 IEN0 -#define IEN_RIIC0_ICTEI0 IEN1 -#define IEN_RIIC1_ICEEI1 IEN2 -#define IEN_RIIC1_ICRXI1 IEN3 -#define IEN_RIIC1_ICTXI1 IEN4 -#define IEN_RIIC1_ICTEI1 IEN5 - -#define VECT_BSC_BUSERR 16 -#define VECT_FCU_FIFERR 21 -#define VECT_FCU_FRDYI 23 -#define VECT_ICU_SWINT 27 -#define VECT_CMT0_CMI0 28 -#define VECT_CMT1_CMI1 29 -#define VECT_CMT2_CMI2 30 -#define VECT_CMT3_CMI3 31 -#define VECT_ETHER_EINT 32 -#define VECT_USB0_D0FIFO0 36 -#define VECT_USB0_D1FIFO0 37 -#define VECT_USB0_USBI0 38 -#define VECT_USB1_D0FIFO1 40 -#define VECT_USB1_D1FIFO1 41 -#define VECT_USB1_USBI1 42 -#define VECT_RSPI0_SPEI0 44 -#define VECT_RSPI0_SPRI0 45 -#define VECT_RSPI0_SPTI0 46 -#define VECT_RSPI0_SPII0 47 -#define VECT_RSPI1_SPEI1 48 -#define VECT_RSPI1_SPRI1 49 -#define VECT_RSPI1_SPTI1 50 -#define VECT_RSPI1_SPII1 51 -#define VECT_CAN0_ERS0 56 -#define VECT_CAN0_RXF0 57 -#define VECT_CAN0_TXF0 58 -#define VECT_CAN0_RXM0 59 -#define VECT_CAN0_TXM0 60 -#define VECT_RTC_PRD 62 -#define VECT_RTC_CUP 63 -#define VECT_ICU_IRQ0 64 -#define VECT_ICU_IRQ1 65 -#define VECT_ICU_IRQ2 66 -#define VECT_ICU_IRQ3 67 -#define VECT_ICU_IRQ4 68 -#define VECT_ICU_IRQ5 69 -#define VECT_ICU_IRQ6 70 -#define VECT_ICU_IRQ7 71 -#define VECT_ICU_IRQ8 72 -#define VECT_ICU_IRQ9 73 -#define VECT_ICU_IRQ10 74 -#define VECT_ICU_IRQ11 75 -#define VECT_ICU_IRQ12 76 -#define VECT_ICU_IRQ13 77 -#define VECT_ICU_IRQ14 78 -#define VECT_ICU_IRQ15 79 -#define VECT_USB_USBR0 90 -#define VECT_USB_USBR1 91 -#define VECT_RTC_ALM 92 -#define VECT_WDT_WOVI 96 -#define VECT_AD0_ADI0 98 -#define VECT_AD1_ADI1 99 -#define VECT_S12AD_ADI 102 -#define VECT_MTU0_TGIA0 114 -#define VECT_MTU0_TGIB0 115 -#define VECT_MTU0_TGIC0 116 -#define VECT_MTU0_TGID0 117 -#define VECT_MTU0_TCIV0 118 -#define VECT_MTU0_TGIE0 119 -#define VECT_MTU0_TGIF0 120 -#define VECT_MTU1_TGIA1 121 -#define VECT_MTU1_TGIB1 122 -#define VECT_MTU1_TCIV1 123 -#define VECT_MTU1_TCIU1 124 -#define VECT_MTU2_TGIA2 125 -#define VECT_MTU2_TGIB2 126 -#define VECT_MTU2_TCIV2 127 -#define VECT_MTU2_TCIU2 128 -#define VECT_MTU3_TGIA3 129 -#define VECT_MTU3_TGIB3 130 -#define VECT_MTU3_TGIC3 131 -#define VECT_MTU3_TGID3 132 -#define VECT_MTU3_TCIV3 133 -#define VECT_MTU4_TGIA4 134 -#define VECT_MTU4_TGIB4 135 -#define VECT_MTU4_TGIC4 136 -#define VECT_MTU4_TGID4 137 -#define VECT_MTU4_TCIV4 138 -#define VECT_MTU5_TGIU5 139 -#define VECT_MTU5_TGIV5 140 -#define VECT_MTU5_TGIW5 141 -#define VECT_MTU6_TGIA6 142 -#define VECT_MTU6_TGIB6 143 -#define VECT_MTU6_TGIC6 144 -#define VECT_MTU6_TGID6 145 -#define VECT_MTU6_TCIV6 146 -#define VECT_MTU6_TGIE6 147 -#define VECT_MTU6_TGIF6 148 -#define VECT_MTU7_TGIA7 149 -#define VECT_MTU7_TGIB7 150 -#define VECT_MTU7_TCIV7 151 -#define VECT_MTU7_TCIU7 152 -#define VECT_MTU8_TGIA8 153 -#define VECT_MTU8_TGIB8 154 -#define VECT_MTU8_TCIV8 155 -#define VECT_MTU8_TCIU8 156 -#define VECT_MTU9_TGIA9 157 -#define VECT_MTU9_TGIB9 158 -#define VECT_MTU9_TGIC9 159 -#define VECT_MTU9_TGID9 160 -#define VECT_MTU9_TCIV9 161 -#define VECT_MTU10_TGIA10 162 -#define VECT_MTU10_TGIB10 163 -#define VECT_MTU10_TGIC10 164 -#define VECT_MTU10_TGID10 165 -#define VECT_MTU10_TCIV10 166 -#define VECT_MTU11_TGIU11 167 -#define VECT_MTU11_TGIV11 168 -#define VECT_MTU11_TGIW11 169 -#define VECT_POE_OEI1 170 -#define VECT_POE_OEI2 171 -#define VECT_POE_OEI3 172 -#define VECT_POE_OEI4 173 -#define VECT_TMR0_CMIA0 174 -#define VECT_TMR0_CMIB0 175 -#define VECT_TMR0_OVI0 176 -#define VECT_TMR1_CMIA1 177 -#define VECT_TMR1_CMIB1 178 -#define VECT_TMR1_OVI1 179 -#define VECT_TMR2_CMIA2 180 -#define VECT_TMR2_CMIB2 181 -#define VECT_TMR2_OVI2 182 -#define VECT_TMR3_CMIA3 183 -#define VECT_TMR3_CMIB3 184 -#define VECT_TMR3_OVI3 185 -#define VECT_DMAC_DMAC0I 198 -#define VECT_DMAC_DMAC1I 199 -#define VECT_DMAC_DMAC2I 200 -#define VECT_DMAC_DMAC3I 201 -#define VECT_EXDMAC_EXDMAC0I 202 -#define VECT_EXDMAC_EXDMAC1I 203 -#define VECT_SCI0_ERI0 214 -#define VECT_SCI0_RXI0 215 -#define VECT_SCI0_TXI0 216 -#define VECT_SCI0_TEI0 217 -#define VECT_SCI1_ERI1 218 -#define VECT_SCI1_RXI1 219 -#define VECT_SCI1_TXI1 220 -#define VECT_SCI1_TEI1 221 -#define VECT_SCI2_ERI2 222 -#define VECT_SCI2_RXI2 223 -#define VECT_SCI2_TXI2 224 -#define VECT_SCI2_TEI2 225 -#define VECT_SCI3_ERI3 226 -#define VECT_SCI3_RXI3 227 -#define VECT_SCI3_TXI3 228 -#define VECT_SCI3_TEI3 229 -#define VECT_SCI5_ERI5 234 -#define VECT_SCI5_RXI5 235 -#define VECT_SCI5_TXI5 236 -#define VECT_SCI5_TEI5 237 -#define VECT_SCI6_ERI6 238 -#define VECT_SCI6_RXI6 239 -#define VECT_SCI6_TXI6 240 -#define VECT_SCI6_TEI6 241 -#define VECT_RIIC0_ICEEI0 246 -#define VECT_RIIC0_ICRXI0 247 -#define VECT_RIIC0_ICTXI0 248 -#define VECT_RIIC0_ICTEI0 249 -#define VECT_RIIC1_ICEEI1 250 -#define VECT_RIIC1_ICRXI1 251 -#define VECT_RIIC1_ICTXI1 252 -#define VECT_RIIC1_ICTEI1 253 - -#define MSTP_EXDMAC SYSTEM.MSTPCRA.BIT.MSTPA29 -#define MSTP_DMAC SYSTEM.MSTPCRA.BIT.MSTPA28 -#define MSTP_DMAC0 SYSTEM.MSTPCRA.BIT.MSTPA28 -#define MSTP_DMAC1 SYSTEM.MSTPCRA.BIT.MSTPA28 -#define MSTP_DMAC2 SYSTEM.MSTPCRA.BIT.MSTPA28 -#define MSTP_DMAC3 SYSTEM.MSTPCRA.BIT.MSTPA28 -#define MSTP_DTC SYSTEM.MSTPCRA.BIT.MSTPA28 -#define MSTP_AD0 SYSTEM.MSTPCRA.BIT.MSTPA23 -#define MSTP_AD1 SYSTEM.MSTPCRA.BIT.MSTPA22 -#define MSTP_DA SYSTEM.MSTPCRA.BIT.MSTPA19 -#define MSTP_S12AD SYSTEM.MSTPCRA.BIT.MSTPA17 -#define MSTP_CMT0 SYSTEM.MSTPCRA.BIT.MSTPA15 -#define MSTP_CMT1 SYSTEM.MSTPCRA.BIT.MSTPA15 -#define MSTP_CMT2 SYSTEM.MSTPCRA.BIT.MSTPA14 -#define MSTP_CMT3 SYSTEM.MSTPCRA.BIT.MSTPA14 -#define MSTP_PPG0 SYSTEM.MSTPCRA.BIT.MSTPA11 -#define MSTP_PPG1 SYSTEM.MSTPCRA.BIT.MSTPA10 -#define MSTP_MTUA SYSTEM.MSTPCRA.BIT.MSTPA9 -#define MSTP_MTU0 SYSTEM.MSTPCRA.BIT.MSTPA9 -#define MSTP_MTU1 SYSTEM.MSTPCRA.BIT.MSTPA9 -#define MSTP_MTU2 SYSTEM.MSTPCRA.BIT.MSTPA9 -#define MSTP_MTU3 SYSTEM.MSTPCRA.BIT.MSTPA9 -#define MSTP_MTU4 SYSTEM.MSTPCRA.BIT.MSTPA9 -#define MSTP_MTU5 SYSTEM.MSTPCRA.BIT.MSTPA9 -#define MSTP_MTUB SYSTEM.MSTPCRA.BIT.MSTPA8 -#define MSTP_MTU6 SYSTEM.MSTPCRA.BIT.MSTPA8 -#define MSTP_MTU7 SYSTEM.MSTPCRA.BIT.MSTPA8 -#define MSTP_MTU8 SYSTEM.MSTPCRA.BIT.MSTPA8 -#define MSTP_MTU9 SYSTEM.MSTPCRA.BIT.MSTPA8 -#define MSTP_MTU10 SYSTEM.MSTPCRA.BIT.MSTPA8 -#define MSTP_MTU11 SYSTEM.MSTPCRA.BIT.MSTPA8 -#define MSTP_TMR0 SYSTEM.MSTPCRA.BIT.MSTPA5 -#define MSTP_TMR1 SYSTEM.MSTPCRA.BIT.MSTPA5 -#define MSTP_TMR01 SYSTEM.MSTPCRA.BIT.MSTPA5 -#define MSTP_TMR2 SYSTEM.MSTPCRA.BIT.MSTPA4 -#define MSTP_TMR3 SYSTEM.MSTPCRA.BIT.MSTPA4 -#define MSTP_TMR23 SYSTEM.MSTPCRA.BIT.MSTPA4 -#define MSTP_SCI0 SYSTEM.MSTPCRB.BIT.MSTPB31 -#define MSTP_SMCI0 SYSTEM.MSTPCRB.BIT.MSTPB31 -#define MSTP_SCI1 SYSTEM.MSTPCRB.BIT.MSTPB30 -#define MSTP_SMCI1 SYSTEM.MSTPCRB.BIT.MSTPB30 -#define MSTP_SCI2 SYSTEM.MSTPCRB.BIT.MSTPB29 -#define MSTP_SMCI2 SYSTEM.MSTPCRB.BIT.MSTPB29 -#define MSTP_SCI3 SYSTEM.MSTPCRB.BIT.MSTPB28 -#define MSTP_SMCI3 SYSTEM.MSTPCRB.BIT.MSTPB28 -#define MSTP_SCI5 SYSTEM.MSTPCRB.BIT.MSTPB26 -#define MSTP_SMCI5 SYSTEM.MSTPCRB.BIT.MSTPB26 -#define MSTP_SCI6 SYSTEM.MSTPCRB.BIT.MSTPB25 -#define MSTP_SMCI6 SYSTEM.MSTPCRB.BIT.MSTPB25 -#define MSTP_CRC SYSTEM.MSTPCRB.BIT.MSTPB23 -#define MSTP_RIIC0 SYSTEM.MSTPCRB.BIT.MSTPB21 -#define MSTP_RIIC1 SYSTEM.MSTPCRB.BIT.MSTPB20 -#define MSTP_USB0 SYSTEM.MSTPCRB.BIT.MSTPB19 -#define MSTP_USB1 SYSTEM.MSTPCRB.BIT.MSTPB18 -#define MSTP_RSPI0 SYSTEM.MSTPCRB.BIT.MSTPB17 -#define MSTP_RSPI1 SYSTEM.MSTPCRB.BIT.MSTPB16 -#define MSTP_EDMAC SYSTEM.MSTPCRB.BIT.MSTPB15 -#define MSTP_CAN0 SYSTEM.MSTPCRB.BIT.MSTPB0 -#define MSTP_RAM0 SYSTEM.MSTPCRC.BIT.MSTPC1 -#define MSTP_RAM1 SYSTEM.MSTPCRC.BIT.MSTPC0 - -#define __IR( x ) ICU.IR[ IR ## x ].BIT.IR -#define _IR( x ) __IR( x ) -#define IR( x , y ) _IR( _ ## x ## _ ## y ) -#define __DTCE( x ) ICU.DTCER[ DTCE ## x ].BIT.DTCE -#define _DTCE( x ) __DTCE( x ) -#define DTCE( x , y ) _DTCE( _ ## x ## _ ## y ) -#define __IEN( x ) ICU.IER[ IER ## x ].BIT.IEN ## x -#define _IEN( x ) __IEN( x ) -#define IEN( x , y ) _IEN( _ ## x ## _ ## y ) -#define __IPR( x ) ICU.IPR[ IPR ## x ].BIT.IPR -#define _IPR( x ) __IPR( x ) -#define IPR( x , y ) _IPR( _ ## x ## _ ## y ) -#define __VECT( x ) VECT ## x -#define _VECT( x ) __VECT( x ) -#define VECT( x , y ) _VECT( _ ## x ## _ ## y ) -#define __MSTP( x ) MSTP ## x -#define _MSTP( x ) __MSTP( x ) -#define MSTP( x ) _MSTP( _ ## x ) - -#define AD0 (*(volatile struct st_ad __evenaccess *)0x88040) -#define AD1 (*(volatile struct st_ad __evenaccess *)0x88060) -#define BSC (*(volatile struct st_bsc __evenaccess *)0x81300) -#define CAN0 (*(volatile struct st_can __evenaccess *)0x90200) -#define CMT (*(volatile struct st_cmt __evenaccess *)0x88000) -#define CMT0 (*(volatile struct st_cmt0 __evenaccess *)0x88002) -#define CMT1 (*(volatile struct st_cmt0 __evenaccess *)0x88008) -#define CMT2 (*(volatile struct st_cmt0 __evenaccess *)0x88012) -#define CMT3 (*(volatile struct st_cmt0 __evenaccess *)0x88018) -#define CRC (*(volatile struct st_crc __evenaccess *)0x88280) -#define DA (*(volatile struct st_da __evenaccess *)0x880C0) -#define DMAC (*(volatile struct st_dmac __evenaccess *)0x82200) -#define DMAC0 (*(volatile struct st_dmac0 __evenaccess *)0x82000) -#define DMAC1 (*(volatile struct st_dmac1 __evenaccess *)0x82040) -#define DMAC2 (*(volatile struct st_dmac1 __evenaccess *)0x82080) -#define DMAC3 (*(volatile struct st_dmac1 __evenaccess *)0x820C0) -#define DTC (*(volatile struct st_dtc __evenaccess *)0x82400) -#define EDMAC (*(volatile struct st_edmac __evenaccess *)0xC0000) -#define ETHERC (*(volatile struct st_etherc __evenaccess *)0xC0100) -#define EXDMAC (*(volatile struct st_exdmac __evenaccess *)0x82A00) -#define EXDMAC0 (*(volatile struct st_exdmac0 __evenaccess *)0x82800) -#define EXDMAC1 (*(volatile struct st_exdmac1 __evenaccess *)0x82840) -#define FLASH (*(volatile struct st_flash __evenaccess *)0x8C288) -#define ICU (*(volatile struct st_icu __evenaccess *)0x87000) -#define IOPORT (*(volatile struct st_ioport __evenaccess *)0x8C100) -#define IWDT (*(volatile struct st_iwdt __evenaccess *)0x88030) -#define MTU0 (*(volatile struct st_mtu0 __evenaccess *)0x88700) -#define MTU1 (*(volatile struct st_mtu1 __evenaccess *)0x88780) -#define MTU2 (*(volatile struct st_mtu2 __evenaccess *)0x88800) -#define MTU3 (*(volatile struct st_mtu3 __evenaccess *)0x88600) -#define MTU4 (*(volatile struct st_mtu4 __evenaccess *)0x88600) -#define MTU5 (*(volatile struct st_mtu5 __evenaccess *)0x88880) -#define MTU6 (*(volatile struct st_mtu0 __evenaccess *)0x88B00) -#define MTU7 (*(volatile struct st_mtu1 __evenaccess *)0x88B80) -#define MTU8 (*(volatile struct st_mtu2 __evenaccess *)0x88C00) -#define MTU9 (*(volatile struct st_mtu3 __evenaccess *)0x88A00) -#define MTU10 (*(volatile struct st_mtu4 __evenaccess *)0x88A00) -#define MTU11 (*(volatile struct st_mtu5 __evenaccess *)0x88C80) -#define MTUA (*(volatile struct st_mtua __evenaccess *)0x8860A) -#define MTUB (*(volatile struct st_mtua __evenaccess *)0x88A0A) -#define POE (*(volatile struct st_poe __evenaccess *)0x88900) -#define PORT0 (*(volatile struct st_port0 __evenaccess *)0x8C000) -#define PORT1 (*(volatile struct st_port1 __evenaccess *)0x8C001) -#define PORT2 (*(volatile struct st_port2 __evenaccess *)0x8C002) -#define PORT3 (*(volatile struct st_port3 __evenaccess *)0x8C003) -#define PORT4 (*(volatile struct st_port4 __evenaccess *)0x8C004) -#define PORT5 (*(volatile struct st_port5 __evenaccess *)0x8C005) -#define PORT6 (*(volatile struct st_port6 __evenaccess *)0x8C006) -#define PORT7 (*(volatile struct st_port7 __evenaccess *)0x8C007) -#define PORT8 (*(volatile struct st_port8 __evenaccess *)0x8C008) -#define PORT9 (*(volatile struct st_port9 __evenaccess *)0x8C009) -#define PORTA (*(volatile struct st_porta __evenaccess *)0x8C00A) -#define PORTB (*(volatile struct st_portb __evenaccess *)0x8C00B) -#define PORTC (*(volatile struct st_portc __evenaccess *)0x8C00C) -#define PORTD (*(volatile struct st_portd __evenaccess *)0x8C00D) -#define PORTE (*(volatile struct st_porte __evenaccess *)0x8C00E) -#define PORTF (*(volatile struct st_portf __evenaccess *)0x8C00F) -#define PORTG (*(volatile struct st_portg __evenaccess *)0x8C010) -#define PPG0 (*(volatile struct st_ppg0 __evenaccess *)0x881E6) -#define PPG1 (*(volatile struct st_ppg1 __evenaccess *)0x881F0) -#define RIIC0 (*(volatile struct st_riic __evenaccess *)0x88300) -#define RIIC1 (*(volatile struct st_riic __evenaccess *)0x88320) -#define RSPI0 (*(volatile struct st_rspi __evenaccess *)0x88380) -#define RSPI1 (*(volatile struct st_rspi __evenaccess *)0x883A0) -#define RTC (*(volatile struct st_rtc __evenaccess *)0x8C400) -#define S12AD (*(volatile struct st_s12ad __evenaccess *)0x89000) -#define SCI0 (*(volatile struct st_sci __evenaccess *)0x88240) -#define SCI1 (*(volatile struct st_sci __evenaccess *)0x88248) -#define SCI2 (*(volatile struct st_sci __evenaccess *)0x88250) -#define SCI3 (*(volatile struct st_sci __evenaccess *)0x88258) -#define SCI5 (*(volatile struct st_sci __evenaccess *)0x88268) -#define SCI6 (*(volatile struct st_sci __evenaccess *)0x88270) -#define SMCI0 (*(volatile struct st_smci __evenaccess *)0x88240) -#define SMCI1 (*(volatile struct st_smci __evenaccess *)0x88248) -#define SMCI2 (*(volatile struct st_smci __evenaccess *)0x88250) -#define SMCI3 (*(volatile struct st_smci __evenaccess *)0x88258) -#define SMCI5 (*(volatile struct st_smci __evenaccess *)0x88268) -#define SMCI6 (*(volatile struct st_smci __evenaccess *)0x88270) -#define SYSTEM (*(volatile struct st_system __evenaccess *)0x80000) -#define TMR0 (*(volatile struct st_tmr0 __evenaccess *)0x88200) -#define TMR1 (*(volatile struct st_tmr1 __evenaccess *)0x88201) -#define TMR2 (*(volatile struct st_tmr0 __evenaccess *)0x88210) -#define TMR3 (*(volatile struct st_tmr1 __evenaccess *)0x88211) -#define TMR01 (*(volatile struct st_tmr01 __evenaccess *)0x88204) -#define TMR23 (*(volatile struct st_tmr01 __evenaccess *)0x88214) -#define USB (*(volatile struct st_usb __evenaccess *)0xA0400) -#define USB0 (*(volatile struct st_usb0 __evenaccess *)0xA0000) -#define USB1 (*(volatile struct st_usb0 __evenaccess *)0xA0200) -#define WDT (*(volatile union un_wdt __evenaccess *)0x88028) -#pragma bit_order -#pragma packoption -#endif diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/include/lowsrc.h b/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/include/lowsrc.h deleted file mode 100644 index 4d2aabfc7..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/include/lowsrc.h +++ /dev/null @@ -1,13 +0,0 @@ -/***********************************************************************/ -/* */ -/* FILE :lowsrc.h */ -/* DATE :Wed, Aug 11, 2010 */ -/* DESCRIPTION :Header file of I/O Stream file */ -/* CPU TYPE :Other */ -/* */ -/* This file is generated by Renesas Project Generator (Ver.4.50). */ -/* NOTE:THIS IS A TYPICAL EXAMPLE. */ -/* */ -/***********************************************************************/ -/*Number of I/O Stream*/ -#define IOSTREAM 20 diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/include/stacksct.h b/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/include/stacksct.h deleted file mode 100644 index 1d5db830d..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/include/stacksct.h +++ /dev/null @@ -1,13 +0,0 @@ -/***********************************************************************/ -/* */ -/* FILE :stacksct.h */ -/* DATE :Wed, Aug 11, 2010 */ -/* DESCRIPTION :Setting of Stack area */ -/* CPU TYPE :Other */ -/* */ -/* This file is generated by Renesas Project Generator (Ver.4.50). */ -/* NOTE:THIS IS A TYPICAL EXAMPLE. */ -/* */ -/***********************************************************************/ -#pragma stacksize su=0x300 -#pragma stacksize si=0x100 diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/include/typedefine.h b/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/include/typedefine.h deleted file mode 100644 index d3ad67fec..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/include/typedefine.h +++ /dev/null @@ -1,41 +0,0 @@ -/***********************************************************************/ -/* */ -/* FILE :typedefine.h */ -/* DATE :Wed, Aug 11, 2010 */ -/* DESCRIPTION :Aliases of Integer Type */ -/* CPU TYPE :Other */ -/* */ -/* This file is generated by Renesas Project Generator (Ver.4.50). */ -/* NOTE:THIS IS A TYPICAL EXAMPLE. */ -/* */ -/***********************************************************************/ - - - -/********************************************************************* -* -* Device : RX -* -* File Name : typedefine.h -* -* Abstract : Aliases of Integer Type. -* -* History : 1.00 (2009-08-07) -* -* NOTE : THIS IS A TYPICAL EXAMPLE. -* -* Copyright(c) 2009 Renesas Technology Corp. -* And Renesas Solutions Corp.,All Rights Reserved. -* -*********************************************************************/ - -typedef signed char _SBYTE; -typedef unsigned char _UBYTE; -typedef signed short _SWORD; -typedef unsigned short _UWORD; -typedef signed int _SINT; -typedef unsigned int _UINT; -typedef signed long _SDWORD; -typedef unsigned long _UDWORD; -typedef signed long long _SQWORD; -typedef unsigned long long _UQWORD; diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/include/vect.h b/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/include/vect.h deleted file mode 100644 index a6a48946b..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/include/vect.h +++ /dev/null @@ -1,60 +0,0 @@ -/***********************************************************************/ -/* */ -/* FILE :vect.h */ -/* DATE :Wed, Aug 11, 2010 */ -/* DESCRIPTION :Definition of Vector */ -/* CPU TYPE :Other */ -/* */ -/* This file is generated by Renesas Project Generator (Ver.4.50). */ -/* NOTE:THIS IS A TYPICAL EXAMPLE. */ -/* */ -/***********************************************************************/ - - - -/********************************************************************* -* -* Device : RX/RX600 -* -* File Name : vect.h -* -* Abstract : Definition of Vector. -* -* History : 1.00 (2009-08-07) -* -* NOTE : THIS IS A TYPICAL EXAMPLE. -* -* Copyright(c) 2009 Renesas Technology Corp. -* And Renesas Solutions Corp.,All Rights Reserved. -* -*********************************************************************/ - -// Exception(Supervisor Instruction) -#pragma interrupt (Excep_SuperVisorInst) -void Excep_SuperVisorInst(void); - -// Exception(Undefined Instruction) -#pragma interrupt (Excep_UndefinedInst) -void Excep_UndefinedInst(void); - -// Exception(Floating Point) -#pragma interrupt (Excep_FloatingPoint) -void Excep_FloatingPoint(void); - -// NMI -#pragma interrupt (NonMaskableInterrupt) -void NonMaskableInterrupt(void); - -// Dummy -#pragma interrupt (Dummy) -void Dummy(void); - -// BRK -#pragma interrupt (Excep_BRK(vect=0)) -void Excep_BRK(void); - -//;<> -//;Power On Reset PC -extern void PowerON_Reset_PC(void); -//;<> - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/include/yrdkrx62ndef.h b/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/include/yrdkrx62ndef.h deleted file mode 100644 index 779da3562..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/include/yrdkrx62ndef.h +++ /dev/null @@ -1,110 +0,0 @@ - -/****************************************************************************** -* DISCLAIMER -* Please refer to http://www.renesas.com/disclaimer -****************************************************************************** - Copyright (C) 2008. Renesas Technology Corp., All Rights Reserved. -******************************************************************************* -* File Name : rsksh7216.h -* Version : 1.00 -* Description : RSK 7216 board specific settings -****************************************************************************** -* History : DD.MM.YYYY Version Description -* : 06.10.2009 1.00 First Release -******************************************************************************/ - -#ifndef RDKRX62N_H -#define RDKRX62N_H - -/****************************************************************************** -Includes , "Project Includes" -******************************************************************************/ - -/****************************************************************************** -Typedef definitions -******************************************************************************/ - -/****************************************************************************** -Macro definitions -******************************************************************************/ - -/* System Clock Settings */ -#define XTAL_FREQUENCY (12000000L) -#define ICLK_MUL (8) -#define PCLK_MUL (4) -#define BCLK_MUL (4) -#define ICLK_FREQUENCY (XTAL_FREQUENCY * ICLK_MUL) -#define PCLK_FREQUENCY (XTAL_FREQUENCY * PCLK_MUL) -#define BCLK_FREQUENCY (XTAL_FREQUENCY * BCLK_MUL) - -#define CMT0_CLK_SELECT (512) - -/* General Values */ -#ifdef LED_POSITIVE_LOGIC - #define LED_ON (1) - #define LED_OFF (0) -#else -/* LEDs are using NEGATIVE LOGIC... */ - #define LED_ON (0) - #define LED_OFF (1) -#endif -#define SET_BIT_HIGH (1) -#define SET_BIT_LOW (0) -#define SET_BYTE_HIGH (0xFF) -#define SET_BYTE_LOW (0x00) - -/* Define switches to be polled if not available as interrupts */ -#define SW_ACTIVE FALSE -#define SW1 PORT4.PORT.BIT.B0 -#define SW2 PORT4.PORT.BIT.B1 -#define SW3 PORT4.PORT.BIT.B2 -#define SW1_DDR PORT4.DDR.BIT.B0 -#define SW2_DDR PORT4.DDR.BIT.B1 -#define SW3_DDR PORT4.DDR.BIT.B2 -#define SW1_ICR PORT4.ICR.BIT.B0 -#define SW2_ICR PORT4.ICR.BIT.B1 -#define SW3_ICR PORT4.ICR.BIT.B2 - -/* LEDs */ -#define LED4 PORTD.DR.BIT.B5 -#define LED5 PORTE.DR.BIT.B3 -#define LED6 PORTD.DR.BIT.B2 -#define LED7 PORTE.DR.BIT.B0 -#define LED8 PORTD.DR.BIT.B4 -#define LED9 PORTE.DR.BIT.B2 -#define LED10 PORTD.DR.BIT.B1 -#define LED11 PORTD.DR.BIT.B7 -#define LED12 PORTD.DR.BIT.B3 -#define LED13 PORTE.DR.BIT.B1 -#define LED14 PORTD.DR.BIT.B0 -#define LED15 PORTD.DR.BIT.B6 - -#define LED4_DDR PORTD.DDR.BIT.B5 -#define LED5_DDR PORTE.DDR.BIT.B3 -#define LED6_DDR PORTD.DDR.BIT.B2 -#define LED7_DDR PORTE.DDR.BIT.B0 -#define LED8_DDR PORTD.DDR.BIT.B4 -#define LED9_DDR PORTE.DDR.BIT.B2 -#define LED10_DDR PORTD.DDR.BIT.B1 -#define LED11_DDR PORTD.DDR.BIT.B7 -#define LED12_DDR PORTD.DDR.BIT.B3 -#define LED13_DDR PORTE.DDR.BIT.B1 -#define LED14_DDR PORTD.DDR.BIT.B0 -#define LED15_DDR PORTD.DDR.BIT.B6 - - - - -/****************************************************************************** -Variable Externs -******************************************************************************/ - -/****************************************************************************** -Functions Prototypes -******************************************************************************/ - - - -/* RDKRX62N_H */ -#endif - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/main-blinky.c b/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/main-blinky.c deleted file mode 100644 index 5fa0159c0..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/main-blinky.c +++ /dev/null @@ -1,196 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* - * This is a very simple demo that creates two tasks and one queue. One task - * (the queue receive task) blocks on the queue to wait for data to arrive, - * toggling an LED each time '100' is received. The other task (the queue send - * task) repeatedly blocks for a fixed period before sending '100' to the queue - * (causing the first task to toggle the LED). - * - * For a much more complete and complex example select either the Debug or - * Debug_with_optimisation build configurations within the HEW IDE. -*/ - -/* Hardware specific includes. */ -#include "iodefine.h" - -/* Kernel includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "queue.h" - -/* Priorities at which the tasks are created. */ -#define configQUEUE_RECEIVE_TASK_PRIORITY ( tskIDLE_PRIORITY + 1 ) -#define configQUEUE_SEND_TASK_PRIORITY ( tskIDLE_PRIORITY + 2 ) - -/* The rate at which data is sent to the queue, specified in milliseconds. */ -#define mainQUEUE_SEND_FREQUENCY_MS ( 500 / portTICK_PERIOD_MS ) - -/* The number of items the queue can hold. This is 1 as the receive task -will remove items as they are added so the send task should always find the -queue empty. */ -#define mainQUEUE_LENGTH ( 1 ) - -/* - * The tasks as defined at the top of this file. - */ -static void prvQueueReceiveTask( void *pvParameters ); -static void prvQueueSendTask( void *pvParameters ); - -/* The queue used by both tasks. */ -static QueueHandle_t xQueue = NULL; - -/* This variable is not used by this simple Blinky example. It is defined -purely to allow the project to link as it is used by the full project. */ -volatile unsigned long ulHighFrequencyTickCount = 0UL; -/*-----------------------------------------------------------*/ - -void main(void) -{ -extern void HardwareSetup( void ); - - /* Renesas provided CPU configuration routine. The clocks are configured in - here. */ - HardwareSetup(); - - /* Turn all LEDs off. */ - vParTestInitialise(); - - /* Create the queue. */ - xQueue = xQueueCreate( mainQUEUE_LENGTH, sizeof( unsigned long ) ); - - if( xQueue != NULL ) - { - /* Start the two tasks as described at the top of this file. */ - xTaskCreate( prvQueueReceiveTask, "Rx", configMINIMAL_STACK_SIZE, NULL, configQUEUE_RECEIVE_TASK_PRIORITY, NULL ); - xTaskCreate( prvQueueSendTask, "TX", configMINIMAL_STACK_SIZE, NULL, configQUEUE_SEND_TASK_PRIORITY, NULL ); - - /* Start the tasks running. */ - vTaskStartScheduler(); - } - - /* If all is well we will never reach here as the scheduler will now be - running. If we do reach here then it is likely that there was insufficient - heap available for the idle task to be created. */ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -static void prvQueueSendTask( void *pvParameters ) -{ -TickType_t xNextWakeTime; -const unsigned long ulValueToSend = 100UL; - - /* Initialise xNextWakeTime - this only needs to be done once. */ - xNextWakeTime = xTaskGetTickCount(); - - for( ;; ) - { - /* Place this task in the blocked state until it is time to run again. - The block state is specified in ticks, the constant used converts ticks - to ms. */ - vTaskDelayUntil( &xNextWakeTime, mainQUEUE_SEND_FREQUENCY_MS ); - - /* Send to the queue - causing the queue receive task to flash its LED. 0 - is used so the send does not block - it shouldn't need to as the queue - should always be empty here. */ - xQueueSend( xQueue, &ulValueToSend, 0 ); - } -} -/*-----------------------------------------------------------*/ - -static void prvQueueReceiveTask( void *pvParameters ) -{ -unsigned long ulReceivedValue; - - for( ;; ) - { - /* Wait until something arives in the queue - this will block - indefinitely provided INCLUDE_vTaskSuspend is set to 1 in - FreeRTOSConfig.h. */ - xQueueReceive( xQueue, &ulReceivedValue, portMAX_DELAY ); - - /* To get here something must have arrived, but is it the expected - value? If it is, toggle the LED. */ - if( ulReceivedValue == 100UL ) - { - vParTestToggleLED( 0 ); - } - } -} -/*-----------------------------------------------------------*/ - -void vApplicationSetupTimerInterrupt( void ) -{ - /* Enable compare match timer 0. */ - MSTP( CMT0 ) = 0; - - /* Interrupt on compare match. */ - CMT0.CMCR.BIT.CMIE = 1; - - /* Set the compare match value. */ - CMT0.CMCOR = ( unsigned short ) ( ( ( configPERIPHERAL_CLOCK_HZ / configTICK_RATE_HZ ) -1 ) / 8 ); - - /* Divide the PCLK by 8. */ - CMT0.CMCR.BIT.CKS = 0; - - /* Enable the interrupt... */ - _IEN( _CMT0_CMI0 ) = 1; - - /* ...and set its priority to the application defined kernel priority. */ - _IPR( _CMT0_CMI0 ) = configKERNEL_INTERRUPT_PRIORITY; - - /* Start the timer. */ - CMT.CMSTR0.BIT.STR0 = 1; -} -/*-----------------------------------------------------------*/ - -/* This function is explained by the comments above its prototype at the top -of this file. */ -void vApplicationMallocFailedHook( void ) -{ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -/* This function is explained by the comments above its prototype at the top -of this file. */ -void vApplicationStackOverflowHook( TaskHandle_t pxTask, char *pcTaskName ) -{ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -/* This function is explained by the comments above its prototype at the top -of this file. */ -void vApplicationIdleHook( void ) -{ - /* Just to prevent the variable getting optimised away. */ - ( void ) ulHighFrequencyTickCount; -} -/*-----------------------------------------------------------*/ diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/main-full.c b/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/main-full.c deleted file mode 100644 index 1ee679274..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/main-full.c +++ /dev/null @@ -1,639 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* **************************************************************************** - * This project includes a lot of tasks and tests and is therefore complex. - * If you would prefer a much simpler project to get started with then select - * the 'Blinky' build configuration within the HEW IDE. - * **************************************************************************** - * - * Creates all the demo application tasks, then starts the scheduler. The web - * documentation provides more details of the standard demo application tasks, - * which provide no particular functionality but do provide a good example of - * how to use the FreeRTOS API. The tasks defined in flop.c are included in the - * set of standard demo tasks to ensure the floating point unit gets some - * exercise. - * - * In addition to the standard demo tasks, the following tasks and tests are - * defined and/or created within this file: - * - * Webserver ("uIP") task - This serves a number of dynamically generated WEB - * pages to a standard WEB browser. The IP and MAC addresses are configured by - * constants defined at the bottom of FreeRTOSConfig.h. Use either a standard - * Ethernet cable to connect through a hug, or a cross over (point to point) - * cable to connect directly. Ensure the IP address used is compatible with the - * IP address of the machine running the browser - the easiest way to achieve - * this is to ensure the first three octets of the IP addresses are the same. - * - * "Reg test" tasks - These fill the registers with known values, then check - * that each register still contains its expected value. Each task uses - * different values. The tasks run with very low priority so get preempted - * very frequently. A check variable is incremented on each iteration of the - * test loop. A register containing an unexpected value is indicative of an - * error in the context switching mechanism and will result in a branch to a - * null loop - which in turn will prevent the check variable from incrementing - * any further and allow the check task (described below) to determine that an - * error has occurred. The nature of the reg test tasks necessitates that they - * are written in assembly code. - * - * "Check" task - This only executes every five seconds but has a high priority - * to ensure it gets processor time. Its main function is to check that all the - * standard demo tasks are still operational. While no errors have been - * discovered the check task will toggle LED 5 (marked LED 9 on the silk - * screen!) every 5 seconds - the toggle rate increasing to 200ms being a visual - * indication that at least one task has reported unexpected behaviour. - * - * "High frequency timer test" - A high frequency periodic interrupt is - * generated using a timer - the interrupt is assigned a priority above - * configMAX_SYSCALL_INTERRUPT_PRIORITY so should not be effected by anything - * the kernel is doing. The frequency and priority of the interrupt, in - * combination with other standard tests executed in this demo, should result - * in interrupts nesting at least 3 and probably 4 deep. This test is only - * included in build configurations that have the optimiser switched on. In - * optimised builds the count of high frequency ticks is used as the time base - * for the run time stats. - * - * *NOTE 1* If LED5 is toggling every 5 seconds then all the demo application - * tasks are executing as expected and no errors have been reported in any - * tasks. The toggle rate increasing to 200ms indicates that at least one task - * has reported unexpected behaviour. - * - * *NOTE 2* vApplicationSetupTimerInterrupt() is called by the kernel to let - * the application set up a timer to generate the tick interrupt. In this - * example a compare match timer is used for this purpose. - * - * *NOTE 3* The CPU must be in Supervisor mode when the scheduler is started. - * The PowerON_Reset_PC() supplied in resetprg.c with this demo has - * Change_PSW_PM_to_UserMode() commented out to ensure this is the case. - * - * *NOTE 4* The IntQueue common demo tasks test interrupt nesting and make use - * of all the 8bit timers (as two cascaded 16bit units). -*/ - -/* Hardware specific includes. */ -#include "iodefine.h" - -/* Kernel includes. */ -#include "FreeRTOS.h" -#include "task.h" - -/* Standard demo includes. */ -#include "partest.h" -#include "flash.h" -#include "IntQueue.h" -#include "BlockQ.h" -#include "death.h" -#include "integer.h" -#include "blocktim.h" -#include "semtest.h" -#include "PollQ.h" -#include "GenQTest.h" -#include "QPeek.h" -#include "recmutex.h" -#include "flop.h" - -/* Values that are passed into the reg test tasks using the task parameter. The -tasks check that the values are passed in correctly. */ -#define mainREG_TEST_1_PARAMETER ( 0x12121212UL ) -#define mainREG_TEST_2_PARAMETER ( 0x12345678UL ) - -/* Priorities at which the tasks are created. */ -#define mainCHECK_TASK_PRIORITY ( configMAX_PRIORITIES - 1 ) -#define mainQUEUE_POLL_PRIORITY ( tskIDLE_PRIORITY + 1 ) -#define mainSEM_TEST_PRIORITY ( tskIDLE_PRIORITY + 1 ) -#define mainBLOCK_Q_PRIORITY ( tskIDLE_PRIORITY + 2 ) -#define mainCREATOR_TASK_PRIORITY ( tskIDLE_PRIORITY + 3 ) -#define mainFLASH_TASK_PRIORITY ( tskIDLE_PRIORITY + 1 ) -#define mainuIP_TASK_PRIORITY ( tskIDLE_PRIORITY + 2 ) -#define mainINTEGER_TASK_PRIORITY ( tskIDLE_PRIORITY ) -#define mainGEN_QUEUE_TASK_PRIORITY ( tskIDLE_PRIORITY ) -#define mainFLOP_TASK_PRIORITY ( tskIDLE_PRIORITY ) - -/* The WEB server uses string handling functions, which in turn use a bit more -stack than most of the other tasks. */ -#define mainuIP_STACK_SIZE ( configMINIMAL_STACK_SIZE * 3 ) - -/* The LED toggled by the check task. */ -#define mainCHECK_LED ( 5 ) /* Marked LED 9 on the RDK silk screen. */ - -/* The rate at which mainCHECK_LED will toggle when all the tasks are running -without error. Controlled by the check task as described at the top of this -file. */ -#define mainNO_ERROR_CYCLE_TIME ( 5000 / portTICK_PERIOD_MS ) - -/* The rate at which mainCHECK_LED will toggle when an error has been reported -by at least one task. Controlled by the check task as described at the top of -this file. */ -#define mainERROR_CYCLE_TIME ( 200 / portTICK_PERIOD_MS ) - -/* - * vApplicationMallocFailedHook() will only be called if - * configUSE_MALLOC_FAILED_HOOK is set to 1 in FreeRTOSConfig.h. It is a hook - * function that will execute if a call to pvPortMalloc() fails. - * pvPortMalloc() is called internally by the kernel whenever a task, queue or - * semaphore is created. It is also called by various parts of the demo - * application. - */ -void vApplicationMallocFailedHook( void ); - -/* - * vApplicationIdleHook() will only be called if configUSE_IDLE_HOOK is set to 1 - * in FreeRTOSConfig.h. It is a hook function that is called on each iteration - * of the idle task. It is essential that code added to this hook function - * never attempts to block in any way (for example, call xQueueReceive() with - * a block time specified). If the application makes use of the vTaskDelete() - * API function (as this demo application does) then it is also important that - * vApplicationIdleHook() is permitted to return to its calling function because - * it is the responsibility of the idle task to clean up memory allocated by the - * kernel to any task that has since been deleted. - */ -void vApplicationIdleHook( void ); - -/* - * vApplicationStackOverflowHook() will only be called if - * configCHECK_FOR_STACK_OVERFLOW is set to a non-zero value. The handle and - * name of the offending task should be passed in the function parameters, but - * it is possible that the stack overflow will have corrupted these - in which - * case pxCurrentTCB can be inspected to find the same information. - */ -void vApplicationStackOverflowHook( TaskHandle_t pxTask, char *pcTaskName ); - -/* - * The reg test tasks as described at the top of this file. - */ -static void prvRegTest1Task( void *pvParameters ); -static void prvRegTest2Task( void *pvParameters ); - -/* - * The actual implementation of the reg test functionality, which, because of - * the direct register access, have to be in assembly. - */ -static void prvRegTest1Implementation( void ); -static void prvRegTest2Implementation( void ); - -/* - * The check task as described at the top of this file. - */ -static void prvCheckTask( void *pvParameters ); - -/* - * Contains the implementation of the WEB server. - */ -extern void vuIP_Task( void *pvParameters ); - -/*-----------------------------------------------------------*/ - -/* Variables that are incremented on each iteration of the reg test tasks - -provided the tasks have not reported any errors. The check task inspects these -variables to ensure they are still incrementing as expected. If a variable -stops incrementing then it is likely that its associate task has stalled. */ -unsigned long ulRegTest1CycleCount = 0UL, ulRegTest2CycleCount = 0UL; - -/* The status message that is displayed at the bottom of the "task stats" web -page, which is served by the uIP task. This will report any errors picked up -by the reg test task. */ -const char *pcStatusMessage = "All tasks executing without error."; - -/*-----------------------------------------------------------*/ - -void main(void) -{ -extern void HardwareSetup( void ); - - /* Renesas provided CPU configuration routine. The clocks are configured in - here. */ - HardwareSetup(); - - /* Turn all LEDs off. */ - vParTestInitialise(); - - /* Start the reg test tasks which test the context switching mechanism. */ - xTaskCreate( prvRegTest1Task, "RegTst1", configMINIMAL_STACK_SIZE, ( void * ) mainREG_TEST_1_PARAMETER, tskIDLE_PRIORITY, NULL ); - xTaskCreate( prvRegTest2Task, "RegTst2", configMINIMAL_STACK_SIZE, ( void * ) mainREG_TEST_2_PARAMETER, tskIDLE_PRIORITY, NULL ); - - /* The web server task. */ - xTaskCreate( vuIP_Task, "uIP", mainuIP_STACK_SIZE, NULL, mainuIP_TASK_PRIORITY, NULL ); - - /* Start the check task as described at the top of this file. */ - xTaskCreate( prvCheckTask, "Check", configMINIMAL_STACK_SIZE * 3, NULL, mainCHECK_TASK_PRIORITY, NULL ); - - /* Create the standard demo tasks. */ - vStartBlockingQueueTasks( mainBLOCK_Q_PRIORITY ); - vCreateBlockTimeTasks(); - vStartSemaphoreTasks( mainSEM_TEST_PRIORITY ); - vStartPolledQueueTasks( mainQUEUE_POLL_PRIORITY ); - vStartIntegerMathTasks( mainINTEGER_TASK_PRIORITY ); - vStartGenericQueueTasks( mainGEN_QUEUE_TASK_PRIORITY ); - vStartLEDFlashTasks( mainFLASH_TASK_PRIORITY ); - vStartQueuePeekTasks(); - vStartRecursiveMutexTasks(); - vStartInterruptQueueTasks(); - vStartMathTasks( mainFLOP_TASK_PRIORITY ); - - /* The suicide tasks must be created last as they need to know how many - tasks were running prior to their creation in order to ascertain whether - or not the correct/expected number of tasks are running at any given time. */ - vCreateSuicidalTasks( mainCREATOR_TASK_PRIORITY ); - - /* Start the tasks running. */ - vTaskStartScheduler(); - - /* If all is well we will never reach here as the scheduler will now be - running. If we do reach here then it is likely that there was insufficient - heap available for the idle task to be created. */ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -static void prvCheckTask( void *pvParameters ) -{ -static volatile unsigned long ulLastRegTest1CycleCount = 0UL, ulLastRegTest2CycleCount = 0UL; -TickType_t xNextWakeTime, xCycleFrequency = mainNO_ERROR_CYCLE_TIME; -extern void vSetupHighFrequencyTimer( void ); - - /* If this is being executed then the kernel has been started. Start the high - frequency timer test as described at the top of this file. This is only - included in the optimised build configuration - otherwise it takes up too much - CPU time and can disrupt other tests. */ - #ifdef INCLUDE_HIGH_FREQUENCY_TIMER_TEST - vSetupHighFrequencyTimer(); - #endif - - /* Initialise xNextWakeTime - this only needs to be done once. */ - xNextWakeTime = xTaskGetTickCount(); - - for( ;; ) - { - /* Place this task in the blocked state until it is time to run again. */ - vTaskDelayUntil( &xNextWakeTime, xCycleFrequency ); - - /* Check the standard demo tasks are running without error. */ - if( xAreGenericQueueTasksStillRunning() != pdTRUE ) - { - /* Increase the rate at which this task cycles, which will increase the - rate at which mainCHECK_LED flashes to give visual feedback that an error - has occurred. */ - xCycleFrequency = mainERROR_CYCLE_TIME; - pcStatusMessage = "Error: GenQueue"; - } - else if( xAreQueuePeekTasksStillRunning() != pdTRUE ) - { - xCycleFrequency = mainERROR_CYCLE_TIME; - pcStatusMessage = "Error: QueuePeek"; - } - else if( xAreBlockingQueuesStillRunning() != pdTRUE ) - { - xCycleFrequency = mainERROR_CYCLE_TIME; - pcStatusMessage = "Error: BlockQueue"; - } - else if( xAreBlockTimeTestTasksStillRunning() != pdTRUE ) - { - xCycleFrequency = mainERROR_CYCLE_TIME; - pcStatusMessage = "Error: BlockTime"; - } - else if( xAreSemaphoreTasksStillRunning() != pdTRUE ) - { - xCycleFrequency = mainERROR_CYCLE_TIME; - pcStatusMessage = "Error: SemTest"; - } - else if( xArePollingQueuesStillRunning() != pdTRUE ) - { - xCycleFrequency = mainERROR_CYCLE_TIME; - pcStatusMessage = "Error: PollQueue"; - } - else if( xIsCreateTaskStillRunning() != pdTRUE ) - { - xCycleFrequency = mainERROR_CYCLE_TIME; - pcStatusMessage = "Error: Death"; - } - else if( xAreIntegerMathsTaskStillRunning() != pdTRUE ) - { - xCycleFrequency = mainERROR_CYCLE_TIME; - pcStatusMessage = "Error: IntMath"; - } - else if( xAreRecursiveMutexTasksStillRunning() != pdTRUE ) - { - xCycleFrequency = mainERROR_CYCLE_TIME; - pcStatusMessage = "Error: RecMutex"; - } - else if( xAreIntQueueTasksStillRunning() != pdPASS ) - { - xCycleFrequency = mainERROR_CYCLE_TIME; - pcStatusMessage = "Error: IntQueue"; - } - else if( xAreMathsTaskStillRunning() != pdPASS ) - { - xCycleFrequency = mainERROR_CYCLE_TIME; - pcStatusMessage = "Error: Flop"; - } - - /* Check the reg test tasks are still cycling. They will stop incrementing - their loop counters if they encounter an error. */ - if( ulRegTest1CycleCount == ulLastRegTest1CycleCount ) - { - xCycleFrequency = mainERROR_CYCLE_TIME; - pcStatusMessage = "Error: RegTest1"; - } - - if( ulRegTest2CycleCount == ulLastRegTest2CycleCount ) - { - xCycleFrequency = mainERROR_CYCLE_TIME; - pcStatusMessage = "Error: RegTest2"; - } - - ulLastRegTest1CycleCount = ulRegTest1CycleCount; - ulLastRegTest2CycleCount = ulRegTest2CycleCount; - - /* Toggle the check LED to give an indication of the system status. If - the LED toggles every 5 seconds then everything is ok. A faster toggle - indicates an error. */ - vParTestToggleLED( mainCHECK_LED ); - } -} -/*-----------------------------------------------------------*/ - -/* The RX port uses this callback function to configure its tick interrupt. -This allows the application to choose the tick interrupt source. */ -void vApplicationSetupTimerInterrupt( void ) -{ - /* Enable compare match timer 0. */ - MSTP( CMT0 ) = 0; - - /* Interrupt on compare match. */ - CMT0.CMCR.BIT.CMIE = 1; - - /* Set the compare match value. */ - CMT0.CMCOR = ( unsigned short ) ( ( ( configPERIPHERAL_CLOCK_HZ / configTICK_RATE_HZ ) -1 ) / 8 ); - - /* Divide the PCLK by 8. */ - CMT0.CMCR.BIT.CKS = 0; - - /* Enable the interrupt... */ - _IEN( _CMT0_CMI0 ) = 1; - - /* ...and set its priority to the application defined kernel priority. */ - _IPR( _CMT0_CMI0 ) = configKERNEL_INTERRUPT_PRIORITY; - - /* Start the timer. */ - CMT.CMSTR0.BIT.STR0 = 1; -} -/*-----------------------------------------------------------*/ - -/* This function is explained by the comments above its prototype at the top -of this file. */ -void vApplicationMallocFailedHook( void ) -{ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -/* This function is explained by the comments above its prototype at the top -of this file. */ -void vApplicationStackOverflowHook( TaskHandle_t pxTask, char *pcTaskName ) -{ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -/* This function is explained by the comments above its prototype at the top -of this file. */ -void vApplicationIdleHook( void ) -{ -} -/*-----------------------------------------------------------*/ - -/* This function is explained in the comments at the top of this file. */ -static void prvRegTest1Task( void *pvParameters ) -{ - if( ( ( unsigned long ) pvParameters ) != mainREG_TEST_1_PARAMETER ) - { - /* The parameter did not contain the expected value. */ - for( ;; ) - { - /* Stop the tick interrupt so its obvious something has gone wrong. */ - taskDISABLE_INTERRUPTS(); - } - } - - /* This is an inline asm function that never returns. */ - prvRegTest1Implementation(); -} -/*-----------------------------------------------------------*/ - -/* This function is explained in the comments at the top of this file. */ -static void prvRegTest2Task( void *pvParameters ) -{ - if( ( ( unsigned long ) pvParameters ) != mainREG_TEST_2_PARAMETER ) - { - /* The parameter did not contain the expected value. */ - for( ;; ) - { - /* Stop the tick interrupt so its obvious something has gone wrong. */ - taskDISABLE_INTERRUPTS(); - } - } - - /* This is an inline asm function that never returns. */ - prvRegTest2Implementation(); -} -/*-----------------------------------------------------------*/ - -/* This function is explained in the comments at the top of this file. */ -#pragma inline_asm prvRegTest1Implementation -static void prvRegTest1Implementation( void ) -{ - ; Put a known value in each register. - MOV.L #1, R1 - MOV.L #2, R2 - MOV.L #3, R3 - MOV.L #4, R4 - MOV.L #5, R5 - MOV.L #6, R6 - MOV.L #7, R7 - MOV.L #8, R8 - MOV.L #9, R9 - MOV.L #10, R10 - MOV.L #11, R11 - MOV.L #12, R12 - MOV.L #13, R13 - MOV.L #14, R14 - MOV.L #15, R15 - - ; Loop, checking each iteration that each register still contains the - ; expected value. -TestLoop1: - - ; Push the registers that are going to get clobbered. - PUSHM R14-R15 - - ; Increment the loop counter to show this task is still getting CPU time. - MOV.L #_ulRegTest1CycleCount, R14 - MOV.L [ R14 ], R15 - ADD #1, R15 - MOV.L R15, [ R14 ] - - ; Yield to extend the text coverage. Set the bit in the ITU SWINTR register. - MOV.L #1, R14 - MOV.L #0872E0H, R15 - MOV.B R14, [R15] - NOP - NOP - - ; Restore the clobbered registers. - POPM R14-R15 - - ; Now compare each register to ensure it still contains the value that was - ; set before this loop was entered. - CMP #1, R1 - BNE RegTest1Error - CMP #2, R2 - BNE RegTest1Error - CMP #3, R3 - BNE RegTest1Error - CMP #4, R4 - BNE RegTest1Error - CMP #5, R5 - BNE RegTest1Error - CMP #6, R6 - BNE RegTest1Error - CMP #7, R7 - BNE RegTest1Error - CMP #8, R8 - BNE RegTest1Error - CMP #9, R9 - BNE RegTest1Error - CMP #10, R10 - BNE RegTest1Error - CMP #11, R11 - BNE RegTest1Error - CMP #12, R12 - BNE RegTest1Error - CMP #13, R13 - BNE RegTest1Error - CMP #14, R14 - BNE RegTest1Error - CMP #15, R15 - BNE RegTest1Error - - ; All comparisons passed, start a new itteratio of this loop. - BRA TestLoop1 - -RegTest1Error: - ; A compare failed, just loop here so the loop counter stops incrementing - ; causing the check task to indicate the error. - BRA RegTest1Error -} -/*-----------------------------------------------------------*/ - -/* This function is explained in the comments at the top of this file. */ -#pragma inline_asm prvRegTest2Implementation -static void prvRegTest2Implementation( void ) -{ - ; Put a known value in each register. - MOV.L #10, R1 - MOV.L #20, R2 - MOV.L #30, R3 - MOV.L #40, R4 - MOV.L #50, R5 - MOV.L #60, R6 - MOV.L #70, R7 - MOV.L #80, R8 - MOV.L #90, R9 - MOV.L #100, R10 - MOV.L #110, R11 - MOV.L #120, R12 - MOV.L #130, R13 - MOV.L #140, R14 - MOV.L #150, R15 - - ; Loop, checking on each iteration that each register still contains the - ; expected value. -TestLoop2: - - ; Push the registers that are going to get clobbered. - PUSHM R14-R15 - - ; Increment the loop counter to show this task is still getting CPU time. - MOV.L #_ulRegTest2CycleCount, R14 - MOV.L [ R14 ], R15 - ADD #1, R15 - MOV.L R15, [ R14 ] - - ; Restore the clobbered registers. - POPM R14-R15 - - CMP #10, R1 - BNE RegTest2Error - CMP #20, R2 - BNE RegTest2Error - CMP #30, R3 - BNE RegTest2Error - CMP #40, R4 - BNE RegTest2Error - CMP #50, R5 - BNE RegTest2Error - CMP #60, R6 - BNE RegTest2Error - CMP #70, R7 - BNE RegTest2Error - CMP #80, R8 - BNE RegTest2Error - CMP #90, R9 - BNE RegTest2Error - CMP #100, R10 - BNE RegTest2Error - CMP #110, R11 - BNE RegTest2Error - CMP #120, R12 - BNE RegTest2Error - CMP #130, R13 - BNE RegTest2Error - CMP #140, R14 - BNE RegTest2Error - CMP #150, R15 - BNE RegTest2Error - - ; All comparisons passed, start a new itteratio of this loop. - BRA TestLoop2 - -RegTest2Error: - ; A compare failed, just loop here so the loop counter stops incrementing - ; - causing the check task to indicate the error. - BRA RegTest2Error -} -/*-----------------------------------------------------------*/ - -char *pcGetTaskStatusMessage( void ) -{ - /* Not bothered about a critical section here although technically because of - the task priorities the pointer could change it will be atomic if not near - atomic and its not critical. */ - return ( char * ) pcStatusMessage; -} -/*-----------------------------------------------------------*/ - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/uIP_Task.c b/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/uIP_Task.c deleted file mode 100644 index 974381ef7..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/uIP_Task.c +++ /dev/null @@ -1,319 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* Standard includes. */ -#include - -/* Scheduler includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "timers.h" -#include "queue.h" - -/* uip includes. */ -#include "net/uip.h" -#include "net/uip_arp.h" -#include "apps/httpd/httpd.h" -#include "sys/timer.h" -#include "net/clock-arch.h" -#include "r_ether.h" - -/* Demo includes. */ -#include "ParTest.h" - -/*-----------------------------------------------------------*/ - -/* How long to wait before attempting to connect the MAC again. */ -#define uipINIT_WAIT ( 100 / portTICK_PERIOD_MS ) - -/* Shortcut to the header within the Rx buffer. */ -#define xHeader ((struct uip_eth_hdr *) &uip_buf[ 0 ]) - -/* Standard constant. */ -#define uipTOTAL_FRAME_HEADER_SIZE 54 - -/* The ARP timer and the periodic timer share a callback function, so the -respective timer IDs are used to determine which timer actually expired. These -constants are assigned to the timer IDs. */ -#define uipARP_TIMER 0 -#define uipPERIODIC_TIMER 1 - -/* A block time of zero ticks simply means, "don't block". */ -#define uipDONT_BLOCK 0UL - -/*-----------------------------------------------------------*/ - -/* - * Setup the MAC address in the MAC itself, and in the uIP stack. - */ -static void prvSetMACAddress( void ); - -/* - * Perform any uIP initialisation necessary. - */ -static void prvInitialise_uIP( void ); - -/* - * The callback function that is assigned to both the periodic timer and the - * ARP timer. - */ -static void prvUIPTimerCallback( TimerHandle_t xTimer ); - -/* - * Port functions required by the uIP stack. - */ -clock_time_t clock_time( void ); - -/*-----------------------------------------------------------*/ - -/* The queue used to send TCP/IP events to the uIP stack. */ -QueueHandle_t xEMACEventQueue = NULL; - -/*-----------------------------------------------------------*/ - -clock_time_t clock_time( void ) -{ - return xTaskGetTickCount(); -} -/*-----------------------------------------------------------*/ - -void vuIP_Task( void *pvParameters ) -{ -portBASE_TYPE i; -unsigned long ulNewEvent = 0UL; -unsigned long ulUIP_Events = 0UL; - - ( void ) pvParameters; - - /* Initialise the uIP stack. */ - prvInitialise_uIP(); - - /* Initialise the MAC. */ - vInitEmac(); - - while( lEMACWaitForLink() != pdPASS ) - { - vTaskDelay( uipINIT_WAIT ); - } - - for( ;; ) - { - if( ( ulUIP_Events & uipETHERNET_RX_EVENT ) != 0UL ) - { - /* Is there received data ready to be processed? */ - uip_len = ( unsigned short ) ulEMACRead(); - - if( ( uip_len > 0 ) && ( uip_buf != NULL ) ) - { - /* Standard uIP loop taken from the uIP manual. */ - if( xHeader->type == htons( UIP_ETHTYPE_IP ) ) - { - uip_arp_ipin(); - uip_input(); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - uip_arp_out(); - vEMACWrite(); - } - } - else if( xHeader->type == htons( UIP_ETHTYPE_ARP ) ) - { - uip_arp_arpin(); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - vEMACWrite(); - } - } - } - else - { - ulUIP_Events &= ~uipETHERNET_RX_EVENT; - } - } - - if( ( ulUIP_Events & uipPERIODIC_TIMER_EVENT ) != 0UL ) - { - ulUIP_Events &= ~uipPERIODIC_TIMER_EVENT; - - for( i = 0; i < UIP_CONNS; i++ ) - { - uip_periodic( i ); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - uip_arp_out(); - vEMACWrite(); - } - } - } - - /* Call the ARP timer function every 10 seconds. */ - if( ( ulUIP_Events & uipARP_TIMER_EVENT ) != 0 ) - { - ulUIP_Events &= ~uipARP_TIMER_EVENT; - uip_arp_timer(); - } - - if( ulUIP_Events == pdFALSE ) - { - xQueueReceive( xEMACEventQueue, &ulNewEvent, portMAX_DELAY ); - ulUIP_Events |= ulNewEvent; - } - } -} -/*-----------------------------------------------------------*/ - -static void prvInitialise_uIP( void ) -{ -TimerHandle_t xARPTimer, xPeriodicTimer; -uip_ipaddr_t xIPAddr; -const unsigned long ul_uIPEventQueueLength = 10UL; - - /* Initialise the uIP stack. */ - uip_init(); - uip_ipaddr( &xIPAddr, configIP_ADDR0, configIP_ADDR1, configIP_ADDR2, configIP_ADDR3 ); - uip_sethostaddr( &xIPAddr ); - uip_ipaddr( &xIPAddr, configNET_MASK0, configNET_MASK1, configNET_MASK2, configNET_MASK3 ); - uip_setnetmask( &xIPAddr ); - prvSetMACAddress(); - httpd_init(); - - /* Create the queue used to sent TCP/IP events to the uIP stack. */ - xEMACEventQueue = xQueueCreate( ul_uIPEventQueueLength, sizeof( unsigned long ) ); - - /* Create and start the uIP timers. */ - xARPTimer = xTimerCreate( "ARPTimer", /* Just a name that is helpful for debugging, not used by the kernel. */ - ( 10000UL / portTICK_PERIOD_MS ), /* Timer period. */ - pdTRUE, /* Autor-reload. */ - ( void * ) uipARP_TIMER, - prvUIPTimerCallback - ); - - xPeriodicTimer = xTimerCreate( "PeriodicTimer", - ( 50 / portTICK_PERIOD_MS ), - pdTRUE, /* Autor-reload. */ - ( void * ) uipPERIODIC_TIMER, - prvUIPTimerCallback - ); - - configASSERT( xARPTimer ); - configASSERT( xPeriodicTimer ); - - xTimerStart( xARPTimer, portMAX_DELAY ); - xTimerStart( xPeriodicTimer, portMAX_DELAY ); -} -/*-----------------------------------------------------------*/ - -static void prvUIPTimerCallback( TimerHandle_t xTimer ) -{ -static const unsigned long ulARPTimerExpired = uipARP_TIMER_EVENT; -static const unsigned long ulPeriodicTimerExpired = uipPERIODIC_TIMER_EVENT; - - /* This is a time callback, so calls to xQueueSend() must not attempt to - block. */ - switch( ( int ) pvTimerGetTimerID( xTimer ) ) - { - case uipARP_TIMER : xQueueSend( xEMACEventQueue, &ulARPTimerExpired, uipDONT_BLOCK ); - break; - - case uipPERIODIC_TIMER : xQueueSend( xEMACEventQueue, &ulPeriodicTimerExpired, uipDONT_BLOCK ); - break; - - default : /* Should not get here. */ - break; - } -} -/*-----------------------------------------------------------*/ - -static void prvSetMACAddress( void ) -{ -struct uip_eth_addr xAddr; - - /* Configure the MAC address in the uIP stack. */ - xAddr.addr[ 0 ] = configMAC_ADDR0; - xAddr.addr[ 1 ] = configMAC_ADDR1; - xAddr.addr[ 2 ] = configMAC_ADDR2; - xAddr.addr[ 3 ] = configMAC_ADDR3; - xAddr.addr[ 4 ] = configMAC_ADDR4; - xAddr.addr[ 5 ] = configMAC_ADDR5; - uip_setethaddr( xAddr ); -} -/*-----------------------------------------------------------*/ - -void vApplicationProcessFormInput( char *pcInputString ) -{ -char *c; - - /* Only interested in processing form input if this is the IO page. */ - c = strstr( pcInputString, "io.shtml" ); - - if( c ) - { - /* Is there a command in the string? */ - c = strstr( pcInputString, "?" ); - if( c ) - { - /* Turn the LED's on or off in accordance with the check box status. */ - if( strstr( c, "LED0=1" ) != NULL ) - { - /* Turn the LEDs on. */ - vParTestSetLED( 7, 1 ); - vParTestSetLED( 8, 1 ); - vParTestSetLED( 9, 1 ); - vParTestSetLED( 10, 1 ); - } - else - { - /* Turn the LEDs off. */ - vParTestSetLED( 7, 0 ); - vParTestSetLED( 8, 0 ); - vParTestSetLED( 9, 0 ); - vParTestSetLED( 10, 0 ); - } - } - else - { - /* Commands to turn LEDs off are not always explicit. */ - vParTestSetLED( 7, 0 ); - vParTestSetLED( 8, 0 ); - vParTestSetLED( 9, 0 ); - vParTestSetLED( 10, 0 ); - } - } -} - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/webserver/EMAC.c b/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/webserver/EMAC.c deleted file mode 100644 index ebc6afe2e..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/webserver/EMAC.c +++ /dev/null @@ -1,535 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* Hardware specific includes. */ -#include "iodefine.h" -#include "typedefine.h" -#include "r_ether.h" -#include "phy.h" - -/* FreeRTOS includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "semphr.h" - -/* uIP includes. */ -#include "net/uip.h" - -/* The time to wait between attempts to obtain a free buffer. */ -#define emacBUFFER_WAIT_DELAY_ms ( 3 / portTICK_PERIOD_MS ) - -/* The number of times emacBUFFER_WAIT_DELAY_ms should be waited before giving -up on attempting to obtain a free buffer all together. */ -#define emacBUFFER_WAIT_ATTEMPTS ( 30 ) - -/* The number of Rx descriptors. */ -#define emacNUM_RX_DESCRIPTORS 8 - -/* The number of Tx descriptors. When using uIP there is not point in having -more than two. */ -#define emacNUM_TX_BUFFERS 2 - -/* The total number of EMAC buffers to allocate. */ -#define emacNUM_BUFFERS ( emacNUM_RX_DESCRIPTORS + emacNUM_TX_BUFFERS ) - -/* The time to wait for the Tx descriptor to become free. */ -#define emacTX_WAIT_DELAY_ms ( 10 / portTICK_PERIOD_MS ) - -/* The total number of times to wait emacTX_WAIT_DELAY_ms for the Tx descriptor to -become free. */ -#define emacTX_WAIT_ATTEMPTS ( 50 ) - -/* Only Rx end and Tx end interrupts are used by this driver. */ -#define emacTX_END_INTERRUPT ( 1UL << 21UL ) -#define emacRX_END_INTERRUPT ( 1UL << 18UL ) - -/*-----------------------------------------------------------*/ - -/* The buffers and descriptors themselves. */ -#pragma section _RX_DESC - volatile ethfifo xRxDescriptors[ emacNUM_RX_DESCRIPTORS ]; -#pragma section _TX_DESC - volatile ethfifo xTxDescriptors[ emacNUM_TX_BUFFERS ]; -#pragma section _ETHERNET_BUFFERS - struct - { - unsigned long ulAlignmentVariable; - char cBuffer[ emacNUM_BUFFERS ][ UIP_BUFSIZE ]; - } xEthernetBuffers; -#pragma section - - - - -/* Used to indicate which buffers are free and which are in use. If an index -contains 0 then the corresponding buffer in xEthernetBuffers is free, otherwise -the buffer is in use or about to be used. */ -static unsigned char ucBufferInUse[ emacNUM_BUFFERS ]; - -/*-----------------------------------------------------------*/ - -/* - * Initialise both the Rx and Tx descriptors. - */ -static void prvInitialiseDescriptors( void ); - -/* - * Return a pointer to a free buffer within xEthernetBuffers. - */ -static unsigned char *prvGetNextBuffer( void ); - -/* - * Return a buffer to the list of free buffers. - */ -static void prvReturnBuffer( unsigned char *pucBuffer ); - -/* - * Examine the status of the next Rx FIFO to see if it contains new data. - */ -static unsigned long prvCheckRxFifoStatus( void ); - -/* - * Setup the microcontroller for communication with the PHY. - */ -static void prvResetMAC( void ); - -/* - * Configure the Ethernet interface peripherals. - */ -static void prvConfigureEtherCAndEDMAC( void ); - -/* - * Something has gone wrong with the descriptor usage. Reset all the buffers - * and descriptors. - */ -static void prvResetEverything( void ); - -/*-----------------------------------------------------------*/ - -/* Points to the Rx descriptor currently in use. */ -static ethfifo *pxCurrentRxDesc = NULL; - -/* The buffer used by the uIP stack to both receive and send. This points to -one of the Ethernet buffers when its actually in use. */ -unsigned char *uip_buf = NULL; - -/*-----------------------------------------------------------*/ - -void vInitEmac( void ) -{ - /* Software reset. */ - prvResetMAC(); - - /* Set the Rx and Tx descriptors into their initial state. */ - prvInitialiseDescriptors(); - - /* Set the MAC address into the ETHERC */ - ETHERC.MAHR = ( ( unsigned long ) configMAC_ADDR0 << 24UL ) | - ( ( unsigned long ) configMAC_ADDR1 << 16UL ) | - ( ( unsigned long ) configMAC_ADDR2 << 8UL ) | - ( unsigned long ) configMAC_ADDR3; - - ETHERC.MALR.BIT.MA = ( ( unsigned long ) configMAC_ADDR4 << 8UL ) | - ( unsigned long ) configMAC_ADDR5; - - /* Perform rest of interface hardware configuration. */ - prvConfigureEtherCAndEDMAC(); - - /* Nothing received yet, so uip_buf points nowhere. */ - uip_buf = NULL; - - /* Initialize the PHY */ - phy_init(); -} -/*-----------------------------------------------------------*/ - -void vEMACWrite( void ) -{ -long x; - - /* Wait until the second transmission of the last packet has completed. */ - for( x = 0; x < emacTX_WAIT_ATTEMPTS; x++ ) - { - if( ( xTxDescriptors[ 1 ].status & ACT ) != 0 ) - { - /* Descriptor is still active. */ - vTaskDelay( emacTX_WAIT_DELAY_ms ); - } - else - { - break; - } - } - - /* Is the descriptor free after waiting for it? */ - if( ( xTxDescriptors[ 1 ].status & ACT ) != 0 ) - { - /* Something has gone wrong. */ - prvResetEverything(); - } - - /* Setup both descriptors to transmit the frame. */ - xTxDescriptors[ 0 ].buf_p = ( char * ) uip_buf; - xTxDescriptors[ 0 ].bufsize = uip_len; - xTxDescriptors[ 1 ].buf_p = ( char * ) uip_buf; - xTxDescriptors[ 1 ].bufsize = uip_len; - - /* uip_buf is being sent by the Tx descriptor. Allocate a new buffer - for use by the stack. */ - uip_buf = prvGetNextBuffer(); - - /* Clear previous settings and go. */ - xTxDescriptors[0].status &= ~( FP1 | FP0 ); - xTxDescriptors[0].status |= ( FP1 | FP0 | ACT ); - xTxDescriptors[1].status &= ~( FP1 | FP0 ); - xTxDescriptors[1].status |= ( FP1 | FP0 | ACT ); - - EDMAC.EDTRR.LONG = 0x00000001; -} -/*-----------------------------------------------------------*/ - -unsigned long ulEMACRead( void ) -{ -unsigned long ulBytesReceived; - - ulBytesReceived = prvCheckRxFifoStatus(); - - if( ulBytesReceived > 0 ) - { - /* Mark the pxDescriptor buffer as free as uip_buf is going to be set to - the buffer that contains the received data. */ - prvReturnBuffer( uip_buf ); - - /* Point uip_buf to the data about ot be processed. */ - uip_buf = ( void * ) pxCurrentRxDesc->buf_p; - - /* Allocate a new buffer to the descriptor, as uip_buf is now using it's - old descriptor. */ - pxCurrentRxDesc->buf_p = prvGetNextBuffer(); - - /* Prepare the descriptor to go again. */ - pxCurrentRxDesc->status &= ~( FP1 | FP0 ); - pxCurrentRxDesc->status |= ACT; - - /* Move onto the next buffer in the ring. */ - pxCurrentRxDesc = pxCurrentRxDesc->next; - - if( EDMAC.EDRRR.LONG == 0x00000000L ) - { - /* Restart Ethernet if it has stopped */ - EDMAC.EDRRR.LONG = 0x00000001L; - } - } - - return ulBytesReceived; -} -/*-----------------------------------------------------------*/ - -long lEMACWaitForLink( void ) -{ -long lReturn; - - /* Set the link status. */ - switch( phy_set_autonegotiate() ) - { - /* Half duplex link */ - case PHY_LINK_100H: - ETHERC.ECMR.BIT.DM = 0; - ETHERC.ECMR.BIT.RTM = 1; - lReturn = pdPASS; - break; - - case PHY_LINK_10H: - ETHERC.ECMR.BIT.DM = 0; - ETHERC.ECMR.BIT.RTM = 0; - lReturn = pdPASS; - break; - - - /* Full duplex link */ - case PHY_LINK_100F: - ETHERC.ECMR.BIT.DM = 1; - ETHERC.ECMR.BIT.RTM = 1; - lReturn = pdPASS; - break; - - case PHY_LINK_10F: - ETHERC.ECMR.BIT.DM = 1; - ETHERC.ECMR.BIT.RTM = 0; - lReturn = pdPASS; - break; - - default: - lReturn = pdFAIL; - break; - } - - if( lReturn == pdPASS ) - { - /* Enable receive and transmit. */ - ETHERC.ECMR.BIT.RE = 1; - ETHERC.ECMR.BIT.TE = 1; - - /* Enable EDMAC receive */ - EDMAC.EDRRR.LONG = 0x1; - } - - return lReturn; -} -/*-----------------------------------------------------------*/ - -static void prvInitialiseDescriptors( void ) -{ -ethfifo *pxDescriptor; -long x; - - for( x = 0; x < emacNUM_BUFFERS; x++ ) - { - /* Ensure none of the buffers are shown as in use at the start. */ - ucBufferInUse[ x ] = pdFALSE; - } - - /* Initialise the Rx descriptors. */ - for( x = 0; x < emacNUM_RX_DESCRIPTORS; x++ ) - { - pxDescriptor = &( xRxDescriptors[ x ] ); - pxDescriptor->buf_p = &( xEthernetBuffers.cBuffer[ x ][ 0 ] ); - - pxDescriptor->bufsize = UIP_BUFSIZE; - pxDescriptor->size = 0; - pxDescriptor->status = ACT; - pxDescriptor->next = &xRxDescriptors[ x + 1 ]; - - /* Mark this buffer as in use. */ - ucBufferInUse[ x ] = pdTRUE; - } - - /* The last descriptor points back to the start. */ - pxDescriptor->status |= DL; - pxDescriptor->next = &xRxDescriptors[ 0 ]; - - /* Initialise the Tx descriptors. */ - for( x = 0; x < emacNUM_TX_BUFFERS; x++ ) - { - pxDescriptor = &( xTxDescriptors[ x ] ); - - /* A buffer is not allocated to the Tx descriptor until a send is - actually required. */ - pxDescriptor->buf_p = NULL; - - pxDescriptor->bufsize = UIP_BUFSIZE; - pxDescriptor->size = 0; - pxDescriptor->status = 0; - pxDescriptor->next = &xTxDescriptors[ x + 1 ]; - } - - /* The last descriptor points back to the start. */ - pxDescriptor->status |= DL; - pxDescriptor->next = &( xTxDescriptors[ 0 ] ); - - /* Use the first Rx descriptor to start with. */ - pxCurrentRxDesc = &( xRxDescriptors[ 0 ] ); -} -/*-----------------------------------------------------------*/ - -static unsigned char *prvGetNextBuffer( void ) -{ -long x; -unsigned char *pucReturn = NULL; -unsigned long ulAttempts = 0; - - while( pucReturn == NULL ) - { - /* Look through the buffers to find one that is not in use by - anything else. */ - for( x = 0; x < emacNUM_BUFFERS; x++ ) - { - if( ucBufferInUse[ x ] == pdFALSE ) - { - ucBufferInUse[ x ] = pdTRUE; - pucReturn = ( unsigned char * ) &( xEthernetBuffers.cBuffer[ x ][ 0 ] ); - break; - } - } - - /* Was a buffer found? */ - if( pucReturn == NULL ) - { - ulAttempts++; - - if( ulAttempts >= emacBUFFER_WAIT_ATTEMPTS ) - { - break; - } - - /* Wait then look again. */ - vTaskDelay( emacBUFFER_WAIT_DELAY_ms ); - } - } - - return pucReturn; -} -/*-----------------------------------------------------------*/ - -static void prvReturnBuffer( unsigned char *pucBuffer ) -{ -unsigned long ul; - - /* Return a buffer to the pool of free buffers. */ - for( ul = 0; ul < emacNUM_BUFFERS; ul++ ) - { - if( &( xEthernetBuffers.cBuffer[ ul ][ 0 ] ) == ( void * ) pucBuffer ) - { - ucBufferInUse[ ul ] = pdFALSE; - break; - } - } -} -/*-----------------------------------------------------------*/ - -static void prvResetEverything( void ) -{ - /* Temporary code just to see if this gets called. This function has not - been implemented. */ - portDISABLE_INTERRUPTS(); - for( ;; ); -} -/*-----------------------------------------------------------*/ - -static unsigned long prvCheckRxFifoStatus( void ) -{ -unsigned long ulReturn = 0; - - if( ( pxCurrentRxDesc->status & ACT ) != 0 ) - { - /* Current descriptor is still active. */ - } - else if( ( pxCurrentRxDesc->status & FE ) != 0 ) - { - /* Frame error. Clear the error. */ - pxCurrentRxDesc->status &= ~( FP1 | FP0 | FE ); - pxCurrentRxDesc->status &= ~( RMAF | RRF | RTLF | RTSF | PRE | CERF ); - pxCurrentRxDesc->status |= ACT; - pxCurrentRxDesc = pxCurrentRxDesc->next; - - if( EDMAC.EDRRR.LONG == 0x00000000UL ) - { - /* Restart Ethernet if it has stopped. */ - EDMAC.EDRRR.LONG = 0x00000001UL; - } - } - else - { - /* The descriptor contains a frame. Because of the size of the buffers - the frame should always be complete. */ - if( ( pxCurrentRxDesc->status & FP0 ) == FP0 ) - { - ulReturn = pxCurrentRxDesc->size; - } - else - { - /* Do not expect to get here. */ - prvResetEverything(); - } - } - - return ulReturn; -} -/*-----------------------------------------------------------*/ - -static void prvResetMAC( void ) -{ - /* Ensure the EtherC and EDMAC are enabled. */ - SYSTEM.MSTPCRB.BIT.MSTPB15 = 0; - vTaskDelay( 100 / portTICK_PERIOD_MS ); - - EDMAC.EDMR.BIT.SWR = 1; - - /* Crude wait for reset to complete. */ - vTaskDelay( 500 / portTICK_PERIOD_MS ); -} -/*-----------------------------------------------------------*/ - -static void prvConfigureEtherCAndEDMAC( void ) -{ - /* Initialisation code taken from Renesas example project. */ - - /* TODO: Check bit 5 */ - ETHERC.ECSR.LONG = 0x00000037; /* Clear all ETHERC statuS BFR, PSRTO, LCHNG, MPD, ICD */ - - /* Set the EDMAC interrupt priority. */ - _IPR( _ETHER_EINT ) = configKERNEL_INTERRUPT_PRIORITY; - - /* Enable interrupts of interest only. */ - EDMAC.EESIPR.LONG = emacTX_END_INTERRUPT | emacRX_END_INTERRUPT; - ETHERC.RFLR.LONG = 1518; /* Ether payload is 1500+ CRC */ - ETHERC.IPGR.LONG = 0x00000014; /* Intergap is 96-bit time */ - - /* EDMAC */ - EDMAC.EESR.LONG = 0x47FF0F9F; /* Clear all ETHERC and EDMAC status bits */ - #ifdef __LIT - EDMAC.EDMR.BIT.DE = 1; - #endif - EDMAC.RDLAR = ( void * ) pxCurrentRxDesc; /* Initialaize Rx Descriptor List Address */ - EDMAC.TDLAR = &( xTxDescriptors[ 0 ] ); /* Initialaize Tx Descriptor List Address */ - EDMAC.TRSCER.LONG = 0x00000000; /* Copy-back status is RFE & TFE only */ - EDMAC.TFTR.LONG = 0x00000000; /* Threshold of Tx_FIFO */ - EDMAC.FDR.LONG = 0x00000000; /* Transmit fifo & receive fifo is 256 bytes */ - EDMAC.RMCR.LONG = 0x00000003; /* Receive function is normal mode(continued) */ - ETHERC.ECMR.BIT.PRM = 0; /* Ensure promiscuous mode is off. */ - - /* Enable the interrupt... */ - _IEN( _ETHER_EINT ) = 1; -} -/*-----------------------------------------------------------*/ - -#pragma interrupt ( vEMAC_ISR_Handler( vect = VECT_ETHER_EINT, enable ) ) -void vEMAC_ISR_Handler( void ) -{ -unsigned long ul = EDMAC.EESR.LONG; -long lHigherPriorityTaskWoken = pdFALSE; -extern QueueHandle_t xEMACEventQueue; -const unsigned long ulRxEvent = uipETHERNET_RX_EVENT; - - /* Has a Tx end occurred? */ - if( ul & emacTX_END_INTERRUPT ) - { - /* Only return the buffer to the pool once both Txes have completed. */ - prvReturnBuffer( ( void * ) xTxDescriptors[ 0 ].buf_p ); - EDMAC.EESR.LONG = emacTX_END_INTERRUPT; - } - - /* Has an Rx end occurred? */ - if( ul & emacRX_END_INTERRUPT ) - { - /* Make sure the Ethernet task is not blocked waiting for a packet. */ - xQueueSendFromISR( xEMACEventQueue, &ulRxEvent, &lHigherPriorityTaskWoken ); - portYIELD_FROM_ISR( lHigherPriorityTaskWoken ); - EDMAC.EESR.LONG = emacRX_END_INTERRUPT; - } -} - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/webserver/httpd-cgi.c b/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/webserver/httpd-cgi.c deleted file mode 100644 index be4d71175..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/webserver/httpd-cgi.c +++ /dev/null @@ -1,277 +0,0 @@ -/** - * \addtogroup httpd - * @{ - */ - -/** - * \file - * Web server script interface - * \author - * Adam Dunkels - * - */ - -/* - * Copyright (c) 2001-2006, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: httpd-cgi.c,v 1.2 2006/06/11 21:46:37 adam Exp $ - * - */ -#include "net/uip.h" -#include "net/psock.h" -#include "apps/httpd/httpd.h" -#include "apps/httpd/httpd-cgi.h" -#include "apps/httpd/httpd-fs.h" - -#include -#include - -#include "FreeRTOS.h" -#include "task.h" - -HTTPD_CGI_CALL( file, "file-stats", file_stats ); -HTTPD_CGI_CALL( tcp, "tcp-connections", tcp_stats ); -HTTPD_CGI_CALL( net, "net-stats", net_stats ); -HTTPD_CGI_CALL( rtos, "rtos-stats", rtos_stats ); -HTTPD_CGI_CALL( run, "run-time", run_time ); -HTTPD_CGI_CALL( io, "led-io", led_io ); - -static const struct httpd_cgi_call *calls[] = { &file, &tcp, &net, &rtos, &run, &io, NULL }; - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( nullfunction ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - ( void ) PT_YIELD_FLAG; - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -httpd_cgifunction httpd_cgi( char *name ) -{ - const struct httpd_cgi_call **f; - - /* Find the matching name in the table, return the function. */ - for( f = calls; *f != NULL; ++f ) - { - if( strncmp((*f)->name, name, strlen((*f)->name)) == 0 ) - { - return( *f )->function; - } - } - - return nullfunction; -} - -/*---------------------------------------------------------------------------*/ -static unsigned short generate_file_stats( void *arg ) -{ - char *f = ( char * ) arg; - return sprintf( ( char * ) uip_appdata, "%5u", httpd_fs_count(f) ); -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( file_stats ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - - ( void ) PT_YIELD_FLAG; - - PSOCK_GENERATOR_SEND( &s->sout, generate_file_stats, strchr(ptr, ' ') + 1 ); - - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -static const char closed[] = /* "CLOSED",*/ { 0x43, 0x4c, 0x4f, 0x53, 0x45, 0x44, 0 }; -static const char syn_rcvd[] = /* "SYN-RCVD",*/ { 0x53, 0x59, 0x4e, 0x2d, 0x52, 0x43, 0x56, 0x44, 0 }; -static const char syn_sent[] = /* "SYN-SENT",*/ { 0x53, 0x59, 0x4e, 0x2d, 0x53, 0x45, 0x4e, 0x54, 0 }; -static const char established[] = /* "ESTABLISHED",*/ { 0x45, 0x53, 0x54, 0x41, 0x42, 0x4c, 0x49, 0x53, 0x48, 0x45, 0x44, 0 }; -static const char fin_wait_1[] = /* "FIN-WAIT-1",*/ { 0x46, 0x49, 0x4e, 0x2d, 0x57, 0x41, 0x49, 0x54, 0x2d, 0x31, 0 }; -static const char fin_wait_2[] = /* "FIN-WAIT-2",*/ { 0x46, 0x49, 0x4e, 0x2d, 0x57, 0x41, 0x49, 0x54, 0x2d, 0x32, 0 }; -static const char closing[] = /* "CLOSING",*/ { 0x43, 0x4c, 0x4f, 0x53, 0x49, 0x4e, 0x47, 0 }; -static const char time_wait[] = /* "TIME-WAIT,"*/ { 0x54, 0x49, 0x4d, 0x45, 0x2d, 0x57, 0x41, 0x49, 0x54, 0 }; -static const char last_ack[] = /* "LAST-ACK"*/ { 0x4c, 0x41, 0x53, 0x54, 0x2d, 0x41, 0x43, 0x4b, 0 }; - -static const char *states[] = { closed, syn_rcvd, syn_sent, established, fin_wait_1, fin_wait_2, closing, time_wait, last_ack }; - -static unsigned short generate_tcp_stats( void *arg ) -{ - struct uip_conn *conn; - struct httpd_state *s = ( struct httpd_state * ) arg; - - conn = &uip_conns[s->count]; - return sprintf( ( char * ) uip_appdata, - "\r\n", htons(conn->lport), - htons(conn->ripaddr.u16[0]) >> 8, htons(conn->ripaddr.u16[0]) & 0xff, htons(conn->ripaddr.u16[1]) >> 8, - htons(conn->ripaddr.u16[1]) & 0xff, htons(conn->rport), states[conn->tcpstateflags & UIP_TS_MASK], conn->nrtx, conn->timer, - (uip_outstanding(conn)) ? '*' : ' ', (uip_stopped(conn)) ? '!' : ' ' ); -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( tcp_stats ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - ( void ) PT_YIELD_FLAG; - for( s->count = 0; s->count < UIP_CONNS; ++s->count ) - { - if( (uip_conns[s->count].tcpstateflags & UIP_TS_MASK) != UIP_CLOSED ) - { - PSOCK_GENERATOR_SEND( &s->sout, generate_tcp_stats, s ); - } - } - - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -static unsigned short generate_net_stats( void *arg ) -{ - struct httpd_state *s = ( struct httpd_state * ) arg; - return sprintf( ( char * ) uip_appdata, "%5u\n", (( uip_stats_t * ) &uip_stat)[s->count] ); -} - -static PT_THREAD( net_stats ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - ( void ) PT_YIELD_FLAG; -#if UIP_STATISTICS - for( s->count = 0; s->count < sizeof(uip_stat) / sizeof(uip_stats_t); ++s->count ) - { - PSOCK_GENERATOR_SEND( &s->sout, generate_net_stats, s ); - } - -#endif /* UIP_STATISTICS */ - - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -extern void vTaskList( char *pcWriteBuffer ); -extern char *pcGetTaskStatusMessage( void ); -static char cCountBuf[128]; -long lRefreshCount = 0; -static unsigned short generate_rtos_stats( void *arg ) -{ - ( void ) arg; - lRefreshCount++; - sprintf( cCountBuf, "


Refresh count = %d


%s", ( int ) lRefreshCount, pcGetTaskStatusMessage() ); - vTaskList( ( char * ) uip_appdata ); - strcat( uip_appdata, cCountBuf ); - - return strlen( uip_appdata ); -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( rtos_stats ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - ( void ) PT_YIELD_FLAG; - PSOCK_GENERATOR_SEND( &s->sout, generate_rtos_stats, NULL ); - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -char *pcStatus; -unsigned long ulString; - -static unsigned short generate_io_state( void *arg ) -{ - extern long lParTestGetLEDState( unsigned long ulLED ); - ( void ) arg; - - /* Are the dynamically setable LEDs currently on or off? */ - if( lParTestGetLEDState( 8 ) ) - { - pcStatus = "checked"; - } - else - { - pcStatus = ""; - } - - sprintf( uip_appdata, "LED

", pcStatus ); - - return strlen( uip_appdata ); -} - -/*---------------------------------------------------------------------------*/ -extern void vTaskGetRunTimeStats( char *pcWriteBuffer ); -extern unsigned short usMaxJitter; -static char cJitterBuffer[ 200 ]; -static unsigned short generate_runtime_stats( void *arg ) -{ - ( void ) arg; - lRefreshCount++; - sprintf( cCountBuf, "


Refresh count = %d", ( int ) lRefreshCount ); - - #ifdef INCLUDE_HIGH_FREQUENCY_TIMER_TEST - { - sprintf( cJitterBuffer, "


Max high frequency timer jitter = %d peripheral clock periods.


", ( int ) usMaxJitter ); - vTaskGetRunTimeStats( ( char * ) uip_appdata ); - strcat( uip_appdata, cJitterBuffer ); - } - #else - { - ( void ) cJitterBuffer; - strcpy( uip_appdata, "

Run time stats are only available in the debug_with_optimisation build configuration.

" ); - } - #endif - - strcat( uip_appdata, cCountBuf ); - - return strlen( uip_appdata ); -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( run_time ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - ( void ) PT_YIELD_FLAG; - PSOCK_GENERATOR_SEND( &s->sout, generate_runtime_stats, NULL ); - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( led_io ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - ( void ) PT_YIELD_FLAG; - PSOCK_GENERATOR_SEND( &s->sout, generate_io_state, NULL ); - PSOCK_END( &s->sout ); -} - -/** @} */ diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/webserver/httpd-fs/404.html b/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/webserver/httpd-fs/404.html deleted file mode 100644 index 43e7f4cad..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/webserver/httpd-fs/404.html +++ /dev/null @@ -1,8 +0,0 @@ - - -

-

404 - file not found

-

Go here instead.

-
- - \ No newline at end of file diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/webserver/httpd-fs/index.html b/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/webserver/httpd-fs/index.html deleted file mode 100644 index 4937dc69a..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/webserver/httpd-fs/index.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Loading index.shtml. Click here if not automatically redirected. - - - - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/webserver/httpd-fs/index.shtml b/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/webserver/httpd-fs/index.shtml deleted file mode 100644 index 882d085ce..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/webserver/httpd-fs/index.shtml +++ /dev/null @@ -1,20 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS Homepage | IO | 37K jpg -

-


-

-

Task statistics

-Page will refresh every 2 seconds.

-

Task          State  Priority  Stack	#
************************************************
-%! rtos-stats -
-
- - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/webserver/httpd-fs/io.shtml b/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/webserver/httpd-fs/io.shtml deleted file mode 100644 index 819e2d39b..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/webserver/httpd-fs/io.shtml +++ /dev/null @@ -1,28 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS Homepage | IO | 37K jpg -

-


-LED and LCD IO
- -

- -Use the check box to turn on or off LED 4, then click "Update IO". - - -

-
-%! led-io -

- - -

- - - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/webserver/httpd-fs/runtime.shtml b/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/webserver/httpd-fs/runtime.shtml deleted file mode 100644 index 3464fd471..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/webserver/httpd-fs/runtime.shtml +++ /dev/null @@ -1,20 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS Homepage | IO | 37K jpg -

-


-

-

Run-time statistics

-Page will refresh every 2 seconds.

-

Task            Abs Time      % Time
****************************************
-%! run-time -
-
- - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/webserver/httpd-fs/stats.shtml b/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/webserver/httpd-fs/stats.shtml deleted file mode 100644 index f54118606..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/webserver/httpd-fs/stats.shtml +++ /dev/null @@ -1,47 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS Homepage | IO | 37K jpg -

-


-

-

Network statistics

-
LocalRemoteStateRetransmissionsTimerFlags
%d%u.%u.%u.%u:%u%s%u%u%c %c
-
-IP           Packets received
-             Packets sent
-             Forwaded
-             Dropped
-IP errors    IP version/header length
-             IP length, high byte
-             IP length, low byte
-             IP fragments
-             Header checksum
-             Wrong protocol
-ICMP	     Packets received
-             Packets sent
-             Packets dropped
-             Type errors
-             Checksum errors
-TCP          Packets received
-             Packets sent
-             Packets dropped
-             Checksum errors
-             Data packets without ACKs
-             Resets
-             Retransmissionsa
-             Syn to closed port
-UDP          Packets dropped
-             Packets received
-             Packets sent
-             Packets chkerr
-	     No connection avaliable
-
%! net-stats
-
- - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/webserver/httpd-fs/tcp.shtml b/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/webserver/httpd-fs/tcp.shtml deleted file mode 100644 index 23dcdcae3..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/webserver/httpd-fs/tcp.shtml +++ /dev/null @@ -1,21 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS Homepage | IO | 37K jpg -

-


-
-

Network connections

-

- - -%! tcp-connections - - - - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/webserver/httpd-fsdata.c b/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/webserver/httpd-fsdata.c deleted file mode 100644 index 47823d100..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/webserver/httpd-fsdata.c +++ /dev/null @@ -1,3871 +0,0 @@ -static const char data_404_html[] = { - /* /404.html */ - 0x2f, 0x34, 0x30, 0x34, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, 0xa, 0x20, 0x20, - 0x3c, 0x62, 0x6f, 0x64, 0x79, 0x20, 0x62, 0x67, 0x63, 0x6f, - 0x6c, 0x6f, 0x72, 0x3d, 0x22, 0x77, 0x68, 0x69, 0x74, 0x65, - 0x22, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x63, - 0x65, 0x6e, 0x74, 0x65, 0x72, 0x3e, 0xd, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x3c, 0x68, 0x31, 0x3e, 0x34, 0x30, - 0x34, 0x20, 0x2d, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x6e, - 0x6f, 0x74, 0x20, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x3c, 0x2f, - 0x68, 0x31, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x3c, 0x68, 0x33, 0x3e, 0x47, 0x6f, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x2f, 0x22, 0x3e, - 0x68, 0x65, 0x72, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x69, - 0x6e, 0x73, 0x74, 0x65, 0x61, 0x64, 0x2e, 0x3c, 0x2f, 0x68, - 0x33, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x2f, - 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x3e, 0xd, 0xa, 0x20, - 0x20, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xd, 0xa, - 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0}; - -static const char data_index_html[] = { - /* /index.html */ - 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x20, 0x6f, 0x6e, 0x4c, 0x6f, 0x61, 0x64, - 0x3d, 0x22, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x73, - 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x28, - 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x6c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x68, 0x72, 0x65, 0x66, 0x3d, - 0x27, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, - 0x6d, 0x6c, 0x27, 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x2c, - 0x31, 0x30, 0x30, 0x29, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x66, - 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, - 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xd, 0xa, 0x4c, - 0x6f, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x69, 0x6e, 0x64, - 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x2e, 0x20, - 0x20, 0x43, 0x6c, 0x69, 0x63, 0x6b, 0x20, 0x3c, 0x61, 0x20, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x68, - 0x65, 0x72, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x69, 0x66, - 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x61, 0x75, 0x74, 0x6f, 0x6d, - 0x61, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x6c, 0x79, 0x20, 0x72, - 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x65, 0x64, 0x2e, - 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xd, - 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xd, 0xa, - 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xd, 0xa, 0x3c, - 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, 0xa, 0xd, 0xa, -0}; - -static const char data_index_shtml[] = { - /* /index.shtml */ - 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x20, 0x6f, 0x6e, 0x4c, 0x6f, 0x61, 0x64, - 0x3d, 0x22, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x73, - 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x28, - 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x6c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x68, 0x72, 0x65, 0x66, 0x3d, - 0x27, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, - 0x6d, 0x6c, 0x27, 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x2c, - 0x32, 0x30, 0x30, 0x30, 0x29, 0x22, 0x3e, 0xd, 0xa, 0x3c, - 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, - 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xd, 0xa, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x53, 0x74, 0x61, - 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x72, 0x75, 0x6e, 0x74, 0x69, - 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x52, 0x75, 0x6e, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, - 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, - 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x54, 0x43, 0x50, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, - 0x6c, 0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, - 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, - 0x65, 0x65, 0x72, 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, - 0x2f, 0x22, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x20, 0x48, 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, - 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, - 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, - 0x66, 0x3d, 0x22, 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, - 0x6c, 0x22, 0x3e, 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0x20, - 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, - 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x6c, 0x6f, - 0x67, 0x6f, 0x2e, 0x6a, 0x70, 0x67, 0x22, 0x3e, 0x33, 0x37, - 0x4b, 0x20, 0x6a, 0x70, 0x67, 0x3c, 0x2f, 0x61, 0x3e, 0xd, - 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, - 0x3c, 0x68, 0x72, 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, - 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x32, 0x3e, 0x54, - 0x61, 0x73, 0x6b, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, - 0x74, 0x69, 0x63, 0x73, 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0xd, - 0xa, 0x50, 0x61, 0x67, 0x65, 0x20, 0x77, 0x69, 0x6c, 0x6c, - 0x20, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x20, 0x65, - 0x76, 0x65, 0x72, 0x79, 0x20, 0x32, 0x20, 0x73, 0x65, 0x63, - 0x6f, 0x6e, 0x64, 0x73, 0x2e, 0x3c, 0x70, 0x3e, 0xd, 0xa, - 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, - 0x3d, 0x22, 0x63, 0x6f, 0x75, 0x72, 0x69, 0x65, 0x72, 0x22, - 0x3e, 0x3c, 0x70, 0x72, 0x65, 0x3e, 0x54, 0x61, 0x73, 0x6b, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x53, 0x74, 0x61, 0x74, 0x65, 0x20, 0x20, 0x50, 0x72, 0x69, - 0x6f, 0x72, 0x69, 0x74, 0x79, 0x20, 0x20, 0x53, 0x74, 0x61, - 0x63, 0x6b, 0x9, 0x23, 0x3c, 0x62, 0x72, 0x3e, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x3c, 0x62, 0x72, 0x3e, - 0xd, 0xa, 0x25, 0x21, 0x20, 0x72, 0x74, 0x6f, 0x73, 0x2d, - 0x73, 0x74, 0x61, 0x74, 0x73, 0xd, 0xa, 0x3c, 0x2f, 0x70, - 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, - 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xd, - 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xd, 0xa, - 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, 0xa, 0xd, - 0xa, 0}; - -static const char data_io_shtml[] = { - /* /io.shtml */ - 0x2f, 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x6e, - 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, - 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x61, 0x20, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, - 0x61, 0x73, 0x6b, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x52, 0x75, 0x6e, - 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, 0x74, 0x61, 0x74, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x43, 0x50, - 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, - 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, - 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, 0x65, 0x65, 0x72, - 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x22, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x20, 0x48, - 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, - 0x6a, 0x70, 0x67, 0x22, 0x3e, 0x33, 0x37, 0x4b, 0x20, 0x6a, - 0x70, 0x67, 0x3c, 0x2f, 0x61, 0x3e, 0xd, 0xa, 0x3c, 0x62, - 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x72, - 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x3e, 0x4c, 0x45, 0x44, 0x20, - 0x61, 0x6e, 0x64, 0x20, 0x4c, 0x43, 0x44, 0x20, 0x49, 0x4f, - 0x3c, 0x2f, 0x62, 0x3e, 0x3c, 0x62, 0x72, 0x3e, 0xd, 0xa, - 0xd, 0xa, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0xd, 0xa, 0x55, - 0x73, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x68, 0x65, - 0x63, 0x6b, 0x20, 0x62, 0x6f, 0x78, 0x20, 0x74, 0x6f, 0x20, - 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6f, 0x6e, 0x20, 0x6f, 0x72, - 0x20, 0x6f, 0x66, 0x66, 0x20, 0x4c, 0x45, 0x44, 0x20, 0x34, - 0x2c, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x20, 0x63, 0x6c, 0x69, - 0x63, 0x6b, 0x20, 0x22, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x20, 0x49, 0x4f, 0x22, 0x2e, 0xd, 0xa, 0xd, 0xa, 0xd, - 0xa, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x72, - 0x6d, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x22, 0x61, 0x46, - 0x6f, 0x72, 0x6d, 0x22, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x3d, 0x22, 0x2f, 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, - 0x6d, 0x6c, 0x22, 0x20, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, - 0x3d, 0x22, 0x67, 0x65, 0x74, 0x22, 0x3e, 0xd, 0xa, 0x25, - 0x21, 0x20, 0x6c, 0x65, 0x64, 0x2d, 0x69, 0x6f, 0xd, 0xa, - 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x69, 0x6e, 0x70, 0x75, - 0x74, 0x20, 0x74, 0x79, 0x70, 0x65, 0x3d, 0x22, 0x73, 0x75, - 0x62, 0x6d, 0x69, 0x74, 0x22, 0x20, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x3d, 0x22, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, - 0x49, 0x4f, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, - 0x72, 0x6d, 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, - 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, - 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, - 0xd, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, - 0xa, 0xd, 0xa, 0}; - -static const char data_logo_jpg[] = { - /* /logo.jpg */ - 0x2f, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, 0x6a, 0x70, 0x67, 0, - 0xff, 0xd8, 0xff, 0xe0, 00, 0x10, 0x4a, 0x46, 0x49, 0x46, - 00, 0x1, 0x1, 00, 00, 0x1, 00, 0x1, 00, 00, - 0xff, 0xdb, 00, 0x43, 00, 0x3, 0x2, 0x2, 0x3, 0x2, - 0x2, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x3, 0x4, 0x5, - 0x8, 0x5, 0x5, 0x4, 0x4, 0x5, 0xa, 0x7, 0x7, 0x6, - 0x8, 0xc, 0xa, 0xc, 0xc, 0xb, 0xa, 0xb, 0xb, 0xd, - 0xe, 0x12, 0x10, 0xd, 0xe, 0x11, 0xe, 0xb, 0xb, 0x10, - 0x16, 0x10, 0x11, 0x13, 0x14, 0x15, 0x15, 0x15, 0xc, 0xf, - 0x17, 0x18, 0x16, 0x14, 0x18, 0x12, 0x14, 0x15, 0x14, 0xff, - 0xdb, 00, 0x43, 0x1, 0x3, 0x4, 0x4, 0x5, 0x4, 0x5, - 0x9, 0x5, 0x5, 0x9, 0x14, 0xd, 0xb, 0xd, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0xff, 0xc0, - 00, 0x11, 0x8, 0x1, 0x8, 0x2, 0xc2, 0x3, 0x1, 0x22, - 00, 0x2, 0x11, 0x1, 0x3, 0x11, 0x1, 0xff, 0xc4, 00, - 0x1f, 00, 00, 0x1, 0x5, 0x1, 0x1, 0x1, 0x1, 0x1, - 0x1, 00, 00, 00, 00, 00, 00, 00, 00, 0x1, - 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb, - 0xff, 0xc4, 00, 0xb5, 0x10, 00, 0x2, 0x1, 0x3, 0x3, - 0x2, 0x4, 0x3, 0x5, 0x5, 0x4, 0x4, 00, 00, 0x1, - 0x7d, 0x1, 0x2, 0x3, 00, 0x4, 0x11, 0x5, 0x12, 0x21, - 0x31, 0x41, 0x6, 0x13, 0x51, 0x61, 0x7, 0x22, 0x71, 0x14, - 0x32, 0x81, 0x91, 0xa1, 0x8, 0x23, 0x42, 0xb1, 0xc1, 0x15, - 0x52, 0xd1, 0xf0, 0x24, 0x33, 0x62, 0x72, 0x82, 0x9, 0xa, - 0x16, 0x17, 0x18, 0x19, 0x1a, 0x25, 0x26, 0x27, 0x28, 0x29, - 0x2a, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x43, 0x44, - 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x53, 0x54, 0x55, 0x56, - 0x57, 0x58, 0x59, 0x5a, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, - 0x69, 0x6a, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, - 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x92, 0x93, - 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0xa2, 0xa3, 0xa4, - 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xb2, 0xb3, 0xb4, 0xb5, - 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, - 0xc7, 0xc8, 0xc9, 0xca, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, - 0xd8, 0xd9, 0xda, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, - 0xe8, 0xe9, 0xea, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, - 0xf8, 0xf9, 0xfa, 0xff, 0xc4, 00, 0x1f, 0x1, 00, 0x3, - 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 00, - 00, 00, 00, 00, 00, 0x1, 0x2, 0x3, 0x4, 0x5, - 0x6, 0x7, 0x8, 0x9, 0xa, 0xb, 0xff, 0xc4, 00, 0xb5, - 0x11, 00, 0x2, 0x1, 0x2, 0x4, 0x4, 0x3, 0x4, 0x7, - 0x5, 0x4, 0x4, 00, 0x1, 0x2, 0x77, 00, 0x1, 0x2, - 0x3, 0x11, 0x4, 0x5, 0x21, 0x31, 0x6, 0x12, 0x41, 0x51, - 0x7, 0x61, 0x71, 0x13, 0x22, 0x32, 0x81, 0x8, 0x14, 0x42, - 0x91, 0xa1, 0xb1, 0xc1, 0x9, 0x23, 0x33, 0x52, 0xf0, 0x15, - 0x62, 0x72, 0xd1, 0xa, 0x16, 0x24, 0x34, 0xe1, 0x25, 0xf1, - 0x17, 0x18, 0x19, 0x1a, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x35, - 0x36, 0x37, 0x38, 0x39, 0x3a, 0x43, 0x44, 0x45, 0x46, 0x47, - 0x48, 0x49, 0x4a, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, - 0x5a, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x73, - 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x82, 0x83, 0x84, - 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x92, 0x93, 0x94, 0x95, - 0x96, 0x97, 0x98, 0x99, 0x9a, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, - 0xa7, 0xa8, 0xa9, 0xaa, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, - 0xb8, 0xb9, 0xba, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, - 0xc9, 0xca, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, - 0xda, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, - 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xff, - 0xda, 00, 0xc, 0x3, 0x1, 00, 0x2, 0x11, 0x3, 0x11, - 00, 0x3f, 00, 0xfd, 0x53, 0xa2, 0x8a, 0x28, 00, 0xa2, - 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, - 00, 0xaa, 0xf7, 0xfa, 0x85, 0xb6, 0x95, 0x67, 0x2d, 0xd5, - 0xe4, 0xf1, 0xdb, 0x5b, 0x44, 0xa5, 0x9e, 0x59, 0x58, 0x2a, - 0xa8, 0x1e, 0xf5, 0xc6, 0x7c, 0x4e, 0xf8, 0xb3, 0xa6, 0xfc, - 0x39, 0xb4, 0x48, 0xb0, 0xb7, 0xda, 0xd5, 0xc6, 0x5, 0xb6, - 0x9e, 0x8d, 0x86, 0x72, 0x4e, 0x37, 0x37, 0xf7, 0x57, 0xf9, - 0xf6, 0xaa, 0x16, 0x5f, 0xd, 0x9f, 0xc6, 0xd0, 0xc5, 0xa9, - 0xf8, 0xc6, 0xe1, 0xef, 0xa6, 0x99, 0x3, 0xa6, 0x9e, 0x84, - 0xad, 0xbd, 0xb6, 0x7b, 0x2a, 0xf7, 0x3e, 0xe7, 0x9a, 0xe0, - 0xa9, 0x89, 0xbc, 0xdd, 0x1a, 0xb, 0x9a, 0x6b, 0x7e, 0xcb, - 0xd5, 0xfe, 0x9b, 0x9c, 0xb2, 0xaf, 0x79, 0x3a, 0x74, 0xb5, - 0x92, 0xdf, 0xb2, 0xf5, 0xff, 00, 0x23, 0x93, 0xf1, 0xa7, - 0xed, 0x5f, 0xa1, 0x69, 0x1b, 0xa1, 0xd0, 0x2d, 0x64, 0xd6, - 0x2e, 0x1, 0xc7, 0x9b, 0x26, 0x62, 0x84, 0x7d, 0xf, 0x53, - 0xf9, 0x57, 0x91, 0x6b, 0x5f, 0xb5, 0xf, 0x8e, 0x35, 0x49, - 0x9, 0xb7, 0xba, 0xb7, 0xd3, 0x23, 0xec, 0x96, 0xd0, 0x29, - 0xfd, 0x5b, 0x26, 0xbe, 0x92, 0x7f, 0x81, 0x1e, 0xb, 0x7f, - 0xf9, 0x84, 0x46, 0x3e, 0x95, 0xb, 0xfe, 0xcf, 0xfe, 0xa, - 0x93, 0xae, 0x96, 0xa3, 0xe8, 0x6b, 0xc2, 0xaf, 0x84, 0xcd, - 0xab, 0xbb, 0xba, 0xa9, 0x2e, 0xc9, 0xb5, 0xfa, 0x5c, 0xf0, - 0xb1, 0x18, 0x4c, 0xce, 0xbb, 0xd2, 0xb2, 0x8a, 0xec, 0xb4, - 0xff, 00, 0x82, 0x7c, 0x91, 0x3f, 0xc6, 0xf, 0x19, 0x5c, - 0x48, 0x5d, 0xfc, 0x45, 0x7e, 0x58, 0xf5, 0xc4, 0xb8, 0x1f, - 0x90, 0xa7, 0x27, 0xc6, 0x5f, 0x1a, 0x46, 0xca, 0x57, 0xc4, - 0x57, 0xc0, 0xaf, 0x23, 0xf7, 0x99, 0xfe, 0x95, 0xf5, 0x73, - 0xfe, 0xce, 0x9e, 0x9, 0x7f, 0xf9, 0x87, 0x15, 0xfa, 0x35, - 0x43, 0x27, 0xec, 0xd7, 0xe0, 0xa7, 0xe9, 0x67, 0x2a, 0xfd, - 0x1e, 0xbc, 0xcf, 0xec, 0x7c, 0xc5, 0x3b, 0xa9, 0xff, 00, - 0xe4, 0xcc, 0xf3, 0x3f, 0xb1, 0xf3, 0x1d, 0xd5, 0x6f, 0xc5, - 0x9f, 0x31, 0x2f, 0xc7, 0x9f, 0x1e, 0x29, 0xcf, 0xfc, 0x24, - 0x77, 0x47, 0xea, 0x10, 0xff, 00, 0x4a, 0x9e, 0x2f, 0xda, - 0x17, 0xc7, 0xd1, 0xc, 0xf, 0x10, 0xcc, 0x7b, 0xfc, 0xd0, - 0xc6, 0x7f, 0x9a, 0xd7, 0xd1, 0xed, 0xfb, 0x31, 0xf8, 0x34, - 0xe7, 0x10, 0xce, 0x7, 0xfb, 0xff, 00, 0xfd, 0x6a, 0x81, - 0xff, 00, 0x65, 0xcf, 0x8, 0x37, 0x4f, 0xb4, 0x83, 0xfe, - 0xf0, 0xa7, 0xfd, 0x99, 0x9a, 0xad, 0xaa, 0x7f, 0xe4, 0xcc, - 0x3f, 0xb2, 0xf3, 0x45, 0xb5, 0x6f, 0xc5, 0x9f, 0x3d, 0xff, - 00, 0xc3, 0x46, 0x7c, 0x40, 0xff, 00, 0xa0, 0xfb, 0xff, - 00, 0xe0, 0x3c, 0x5f, 0xfc, 0x4d, 0x48, 0xbf, 0xb4, 0x8f, - 0x8f, 0xd4, 0xe7, 0xfb, 0x6f, 0x3e, 0xc6, 0xda, 0x2f, 0xfe, - 0x26, 0xbd, 0xe9, 0xff, 00, 0x65, 0x6f, 0x9, 0xb6, 0x71, - 0x25, 0xd0, 0xff, 00, 0x81, 0xa, 0x85, 0xff, 00, 0x64, - 0xff, 00, 0xb, 0x30, 0xe2, 0xe6, 0xed, 0x4f, 0xd4, 0x51, - 0xfd, 0x9d, 0x9b, 0x2f, 0xb6, 0xff, 00, 0xf0, 0x26, 0x1f, - 0xd9, 0xd9, 0xb2, 0xda, 0xb7, 0xfe, 0x4c, 0xcf, 0x11, 0x5f, - 0xda, 0x63, 0xc7, 0xca, 0x79, 0xd5, 0xa3, 0x6f, 0x63, 0x6b, - 0x1f, 0xf8, 0x54, 0xcb, 0xfb, 0x50, 0x78, 0xf1, 0x40, 0x1f, - 0x6f, 0xb6, 0x3e, 0xe6, 0xd5, 0x2b, 0xd8, 0x5b, 0xf6, 0x49, - 0xf0, 0xd1, 0xe9, 0x7f, 0x76, 0xbe, 0xdc, 0x54, 0xf, 0xfb, - 0x22, 0xe8, 0x24, 0x7c, 0xba, 0xa5, 0xd0, 0x3f, 0xee, 0x8a, - 0x5f, 0x52, 0xce, 0x17, 0xda, 0x7f, 0xf8, 0x17, 0xfc, 0x10, - 0xfa, 0x8e, 0x70, 0xbf, 0xe5, 0xef, 0xfe, 0x4c, 0x79, 0x7a, - 0xfe, 0xd5, 0x9e, 0x38, 0x4, 0x66, 0x4d, 0x3d, 0xb1, 0xd8, - 0xda, 0xf5, 0xfd, 0x6a, 0x55, 0xfd, 0xac, 0x7c, 0x6a, 0xbd, - 0x53, 0x4c, 0x6f, 0xad, 0xb3, 0x7f, 0xf1, 0x55, 0xe8, 0xcf, - 0xfb, 0x21, 0x68, 0xe7, 0xee, 0xea, 0xd7, 0x3, 0xea, 0xa2, - 0xa0, 0x7f, 0xd9, 0x3, 0x4e, 0x39, 0xdb, 0xac, 0x4c, 0x3e, - 0xa8, 0x29, 0xfd, 0x5b, 0x39, 0x5f, 0x69, 0xff, 00, 0xe0, - 0x48, 0x3e, 0xa9, 0x9d, 0x2f, 0xf9, 0x79, 0xf8, 0x9c, 0x18, - 0xfd, 0xad, 0x3c, 0x67, 0xff, 00, 0x3c, 0x74, 0xbf, 0xfc, - 0x7, 0x6f, 0xfe, 0x2e, 0x9e, 0x3f, 0x6b, 0x6f, 0x18, 0x77, - 0xb6, 0xd2, 0xcf, 0xfd, 0xb0, 0x7f, 0xfe, 0x2e, 0xbb, 0x37, - 0xfd, 0x8f, 0xac, 0xff, 00, 0x87, 0x5a, 0x93, 0xf1, 0x41, - 0x50, 0xbf, 0xec, 0x7b, 0x11, 0xfb, 0xba, 0xe3, 0xf, 0xac, - 0x74, 0x7b, 0x1c, 0xe9, 0x75, 0x7f, 0x7a, 0x17, 0xd5, 0xf3, - 0xb5, 0xf6, 0xff, 00, 0x14, 0x72, 0xc9, 0xfb, 0x5d, 0x78, - 0xb1, 0x4f, 0xcd, 0x63, 0xa5, 0xb0, 0xf4, 0xf2, 0x9c, 0x7f, - 0xec, 0xd5, 0x62, 0x2f, 0xda, 0xff, 00, 0xc4, 0x8a, 0xb8, - 0x7d, 0x27, 0x4d, 0x73, 0xea, 0x3, 0x8f, 0xfd, 0x9a, 0xb6, - 0x9f, 0xf6, 0x3d, 0x71, 0x8d, 0x9a, 0xd8, 0x3f, 0x58, 0xea, - 0x17, 0xfd, 0x8f, 0xee, 0x81, 0x3b, 0x75, 0x98, 0xcf, 0xa6, - 0x52, 0xa7, 0x93, 0x3a, 0x5f, 0xcd, 0xf7, 0xa0, 0xf6, 0x79, - 0xe2, 0xfb, 0x5f, 0x91, 0x4d, 0x7f, 0x6c, 0x4d, 0x6c, 0x1, - 0xbb, 0x42, 0xb0, 0x27, 0xb9, 0xe, 0xe3, 0x35, 0x3a, 0x7e, - 0xd8, 0xda, 0x98, 0x3f, 0x37, 0x87, 0x6d, 0x8, 0xf6, 0xb8, - 0x61, 0xfd, 0x29, 0xad, 0xfb, 0x21, 0x6a, 0x40, 0x71, 0xaa, - 0xc2, 0x4f, 0xa6, 0xda, 0x85, 0xff, 00, 0x64, 0x4d, 0x60, - 0x1f, 0x97, 0x53, 0x80, 0xfe, 0x14, 0xef, 0x9d, 0xae, 0xff, - 00, 0x80, 0x7f, 0xc2, 0xe2, 0xeb, 0xf9, 0x17, 0x7, 0xed, - 0x8f, 0x7b, 0xdf, 0xc3, 0x56, 0xdf, 0x85, 0xd3, 0x7f, 0xf1, - 0x35, 0x22, 0xfe, 0xd8, 0xf7, 0x3c, 0x6e, 0xf0, 0xd4, 0x3e, - 0xf8, 0xba, 0x3f, 0xfc, 0x4d, 0x64, 0x37, 0xec, 0x8f, 0xaf, - 0x1, 0xf2, 0xdf, 0xdb, 0x93, 0xe8, 0x6a, 0x16, 0xfd, 0x92, - 0xfc, 0x48, 0xf, 0xcb, 0x75, 0x6c, 0x47, 0xae, 0xea, 0x4e, - 0xae, 0x74, 0xbf, 0x9b, 0xee, 0x42, 0xe7, 0xcf, 0x17, 0xfc, - 0x32, 0x3a, 0x45, 0xfd, 0xb1, 0xf9, 0xf9, 0xbc, 0x32, 0x31, - 0xed, 0x77, 0xff, 00, 0xd8, 0xd4, 0xf1, 0xfe, 0xd8, 0xf6, - 0xd8, 0x3b, 0xfc, 0x37, 0x26, 0x7b, 0x6d, 0xba, 0x1f, 0xfc, - 0x4d, 0x71, 0x6f, 0xfb, 0x29, 0x78, 0xa9, 0x46, 0x43, 0xdb, - 0x93, 0xe9, 0xbc, 0x54, 0x2f, 0xfb, 0x2c, 0x78, 0xb5, 0x71, - 0x81, 0x9, 0xfa, 0x38, 0xa5, 0xf5, 0x9c, 0xe5, 0x74, 0x97, - 0xfe, 0x2, 0xbf, 0xc8, 0x7e, 0xdf, 0x3b, 0x5f, 0x67, 0xf0, - 0x47, 0xa2, 0x45, 0xfb, 0x62, 0xe9, 0x45, 0x7, 0x99, 0xe1, - 0xeb, 0xb0, 0xfe, 0x8b, 0x3a, 0x11, 0xfc, 0xaa, 0xc2, 0x7e, - 0xd8, 0x3a, 0x1, 0xc6, 0xfd, 0xf, 0x50, 0x5f, 0x5c, 0x3a, - 0x1f, 0xeb, 0x5e, 0x58, 0xff, 00, 0xb2, 0xff, 00, 0x8c, - 0x57, 0x38, 0x82, 0x26, 0xc7, 0xfb, 0x62, 0xa2, 0x6f, 0xd9, - 0x97, 0xc6, 0x63, 0x18, 0xb4, 0x43, 0xf4, 0x71, 0x4f, 0xeb, - 0xb9, 0xc2, 0xfb, 0x2f, 0xff, 00, 0x1, 0xff, 00, 0x80, - 0x1f, 0x5a, 0xce, 0x97, 0xd8, 0xfc, 0x11, 0xeb, 0xa3, 0xf6, - 0xbe, 0xf0, 0xd7, 0x7d, 0x23, 0x53, 0x1f, 0xf7, 0xef, 0xff, - 00, 0x8a, 0xa7, 0xaf, 0xed, 0x79, 0xe1, 0x72, 0x39, 0xd2, - 0xf5, 0x31, 0xff, 00, 0x1, 0x4f, 0xfe, 0x2a, 0xbc, 0x61, - 0xff, 00, 0x66, 0xcf, 0x1a, 0xa6, 0x71, 0xa7, 0x86, 0xc7, - 0xa3, 0x8a, 0x85, 0xff, 00, 0x67, 0x5f, 0x1b, 0xa0, 0xcf, - 0xf6, 0x53, 0x1f, 0xa3, 0xa, 0x3f, 0xb4, 0x33, 0x65, 0xf6, - 0x5f, 0xfe, 0x3, 0xff, 00, 00, 0x5f, 0x5e, 0xce, 0x56, - 0xf4, 0xff, 00, 0x3, 0xdc, 0x47, 0xed, 0x71, 0xe1, 0x42, - 0x46, 0x74, 0xfd, 0x4c, 0xf, 0xf7, 0x13, 0xff, 00, 0x8a, - 0xa9, 0xe3, 0xfd, 0xac, 0xfc, 0x1e, 0xc4, 0xee, 0xb6, 0xd4, - 0x90, 0x7f, 0xd7, 0x15, 0x3f, 0xfb, 0x35, 0x78, 0x3, 0x7e, - 0xcf, 0xfe, 0x36, 0x52, 0x47, 0xf6, 0x3c, 0x9f, 0x81, 0x15, - 0xb, 0xfc, 0x9, 0xf1, 0xa2, 0xc, 0xff, 00, 0x63, 0x4c, - 0x7e, 0x98, 0xa5, 0xfd, 0xa7, 0x9a, 0x2d, 0xe2, 0xff, 00, - 0xf0, 0x16, 0x1f, 0xda, 0x39, 0xba, 0xde, 0x9f, 0xe0, 0x7d, - 0x19, 0x1f, 0xed, 0x59, 0xe0, 0x97, 0x5c, 0xb7, 0xf6, 0x8a, - 0x1f, 0x43, 0x6c, 0xf, 0xfe, 0xcd, 0x53, 0xaf, 0xed, 0x4b, - 0xe0, 0x43, 0x8c, 0xdc, 0x5e, 0x8f, 0xad, 0xab, 0x71, 0x5f, - 0x33, 0xb7, 0xc1, 0x2f, 0x19, 0x29, 0xff, 00, 0x90, 0x2d, - 0xc7, 0xe5, 0x50, 0x37, 0xc1, 0xcf, 0x18, 0x20, 0xc9, 0xd1, - 0x2e, 0x71, 0xec, 0xb5, 0x5f, 0xda, 0xf9, 0x92, 0xde, 0x1f, - 0xf9, 0x2b, 0xf, 0xed, 0x5c, 0xd5, 0x6f, 0x4b, 0xf0, 0x7f, - 0xe6, 0x7d, 0x48, 0x3f, 0x69, 0xff, 00, 0x1, 0x1f, 0xf9, - 0x7f, 0xba, 0x1f, 0xf6, 0xe8, 0xff, 00, 0xe1, 0x4e, 0x1f, - 0xb4, 0xe7, 0x80, 0x4f, 0xfc, 0xc4, 0x6e, 0x7, 0xd6, 0xd1, - 0xff, 00, 0xc2, 0xbe, 0x54, 0x7f, 0x84, 0xde, 0x2d, 0x8f, - 0xae, 0x87, 0x77, 0xf8, 0x25, 0x40, 0xdf, 0xc, 0xfc, 0x50, - 0xa0, 0x93, 0xa3, 0x5d, 0xf1, 0xff, 00, 0x4c, 0xcd, 0x27, - 0x9d, 0x66, 0xb, 0xec, 0x2f, 0xfc, 0x5, 0xff, 00, 0x98, - 0xbf, 0xb6, 0x33, 0x35, 0xbd, 0x2f, 0xc1, 0xff, 00, 0x99, - 0xf5, 0xa8, 0xfd, 0xa5, 0xfc, 0x2, 0x46, 0x7f, 0xb5, 0x26, - 0x1f, 0x5b, 0x57, 0xff, 00, 0xa, 0x9d, 0x3f, 0x68, 0xdf, - 00, 0xb9, 0xc7, 0xf6, 0xd1, 0x5f, 0x76, 0xb7, 0x93, 0xff, - 00, 0x89, 0xaf, 0x8f, 0x9b, 0xe1, 0xe7, 0x89, 0x13, 0x19, - 0xd2, 0x2e, 0xc6, 0x7f, 0xe9, 0x99, 0xa8, 0xdb, 0xc0, 0xbe, - 0x20, 0x4c, 0xe7, 0x4a, 0xbb, 0x18, 0xeb, 0xfb, 0xb3, 0x4b, - 0xfb, 0x73, 0x1c, 0xb7, 0x82, 0xfb, 0x9f, 0xf9, 0x87, 0xf6, - 0xd6, 0x60, 0xb7, 0xa5, 0xf8, 0x3f, 0xf3, 0x3e, 0xcc, 0x8f, - 0xf6, 0x84, 0xf0, 0xc, 0x99, 0xff, 00, 0x89, 0xfc, 0x6b, - 0x8f, 0xef, 0x43, 0x20, 0xff, 00, 0xd9, 0x6a, 0x75, 0xf8, - 0xf1, 0xe0, 0x26, 0x50, 0x47, 0x88, 0xed, 0xb9, 0xf5, 0x57, - 0x1f, 0xd2, 0xbe, 0x27, 0x6f, 0x7, 0x6b, 0x8b, 0xd7, 0x4c, - 0xba, 0x1f, 0xf6, 0xcc, 0xd4, 0x6d, 0xe1, 0x6d, 0x65, 0x9, - 0x7, 0x4e, 0xba, 0x18, 0xff, 00, 0xa6, 0x66, 0x9f, 0xf6, - 0xfe, 0x2d, 0x6f, 0x5, 0xf7, 0x3f, 0xf3, 0x1f, 0xf6, 0xee, - 0x35, 0x6f, 0x47, 0xf0, 0x67, 0xdc, 0x23, 0xe3, 0x87, 0x81, - 0xf, 0xfc, 0xcc, 0xd6, 0x5f, 0x99, 0xff, 00, 0xa, 0x92, - 0x3f, 0x8d, 0x3e, 0x7, 0x90, 0x90, 0xbe, 0x26, 0xb0, 0xe3, - 0xd6, 0x4c, 0x7f, 0x4a, 0xf8, 0x54, 0xe8, 0x1a, 0xa2, 0x8c, - 0x9b, 0x1b, 0x80, 0x3f, 0xeb, 0x99, 0xa6, 0x1d, 0x1b, 0x51, - 0x5e, 0xb6, 0x93, 0x8f, 0xf8, 0x1, 0xa7, 0xfe, 0xb0, 0xe2, - 0x7f, 0x92, 0x3f, 0x8f, 0xf9, 0x87, 0xf6, 0xfe, 0x2f, 0xad, - 0x1f, 0xcc, 0xfb, 0xc9, 0x7e, 0x2f, 0x78, 0x2d, 0x86, 0x47, - 0x89, 0x74, 0xec, 0x7f, 0xd7, 0x61, 0x53, 0x47, 0xf1, 0x4f, - 0xc2, 0x12, 0x90, 0x17, 0xc4, 0x7a, 0x71, 0x27, 0xa7, 0xfa, - 0x42, 0xd7, 0xc0, 0xa7, 0x4b, 0xbe, 0x1d, 0x6d, 0xa5, 0x1f, - 0xf0, 0x3, 0x4d, 0x3a, 0x7d, 0xe2, 0xf5, 0xb7, 0x97, 0xfe, - 0xf8, 0x34, 0x7f, 0xac, 0x55, 0xfa, 0xc2, 0x3f, 0x88, 0xff, - 00, 0xd6, 0x1c, 0x42, 0xde, 0x8f, 0xe6, 0x7e, 0x82, 0xc3, - 0xf1, 0xb, 0xc3, 0x17, 0xd, 0xb6, 0x3f, 0x10, 0x69, 0xac, - 0x7a, 0xe3, 0xed, 0x28, 0x3f, 0xad, 0x5a, 0x4f, 0x17, 0xe8, - 0x52, 0x2e, 0x53, 0x59, 0xb0, 0x61, 0xea, 0x2e, 0x50, 0xff, - 00, 0x5a, 0xfc, 0xee, 0x36, 0xb7, 0x23, 0xac, 0x2e, 0x3f, - 0xe0, 0x26, 0x9a, 0x61, 0x98, 0x7f, 0xcb, 0x36, 0xfc, 0xaa, - 0xd7, 0x12, 0x54, 0xeb, 0x4d, 0x7d, 0xe5, 0x2e, 0x23, 0xab, - 0xd6, 0x8f, 0xe3, 0xff, 00, 00, 0xfd, 0x1c, 0x1a, 0xee, - 0x9a, 0x71, 0x8d, 0x42, 0xd4, 0xe7, 0xfe, 0x9b, 0x2f, 0xf8, - 0xd3, 0x86, 0xb3, 0xa7, 0x9e, 0x97, 0xd6, 0xc7, 0xfe, 0xdb, - 0x2f, 0xf8, 0xd7, 0xe7, 0x6, 0xc9, 0x47, 0xf0, 0x37, 0xe5, - 0x47, 0xef, 0x57, 0xb3, 0xa, 0xd3, 0xfd, 0x64, 0x97, 0xfc, - 0xfa, 0x5f, 0x7f, 0xfc, 0x1, 0xff, 00, 0xac, 0x92, 0xff, - 00, 0x9f, 0x3f, 0x8f, 0xfc, 0x3, 0xf4, 0x84, 0x6a, 0xb6, - 0x47, 0xa5, 0xe4, 0x7, 0xe9, 0x2a, 0xff, 00, 0x8d, 0x38, - 0x6a, 0x16, 0xad, 0x8c, 0x5c, 0xc2, 0x73, 0xe9, 0x20, 0xaf, - 0xcd, 0xc1, 0x24, 0xc3, 0xa1, 0x61, 0xf9, 0xd3, 0x85, 0xcd, - 0xc2, 0xf4, 0x77, 0x18, 0xff, 00, 0x68, 0xd3, 0x5c, 0x48, - 0xff, 00, 0xe7, 0xd7, 0xe3, 0xff, 00, 00, 0x7f, 0xeb, - 0x2f, 0x7a, 0x5f, 0x8f, 0xfc, 0x3, 0xf4, 0x95, 0x67, 0x8d, - 0xce, 0x16, 0x44, 0x63, 0xe8, 0x18, 0x1a, 0x7e, 0x47, 0xad, - 0x7e, 0x6d, 0xae, 0xa7, 0x7a, 0x87, 0x2b, 0x73, 0x32, 0x9f, - 0x51, 0x21, 0x1f, 0xd6, 0xa4, 0x1a, 0xe6, 0xa2, 0xbd, 0x2f, - 0x6e, 0x47, 0xd2, 0x66, 0xff, 00, 0x1a, 0xa5, 0xc4, 0x9d, - 0xe9, 0x7e, 0x3f, 0xf0, 0xa, 0xff, 00, 0x59, 0x63, 0xff, - 00, 0x3e, 0xbf, 0x1f, 0xf8, 0x7, 0xe9, 0x6, 0x45, 0x19, - 0xaf, 0xce, 0x31, 0xe2, 0x4d, 0x58, 0xc, 0xd, 0x4a, 0xf0, - 0xf, 0x69, 0xdf, 0xfc, 0x69, 0xc3, 0xc5, 0x3a, 0xc8, 0x3c, - 0x6a, 0x97, 0xc0, 0xff, 00, 0xd7, 0xc3, 0xff, 00, 0x8d, - 0x5f, 0xfa, 0xc7, 0x1f, 0xf9, 0xf5, 0xf8, 0xff, 00, 0xc0, - 0x1f, 0xfa, 0xcb, 0x4f, 0xfe, 0x7d, 0x3f, 0xbf, 0xfe, 0x1, - 0xfa, 0x35, 0x9a, 0x5a, 0xfc, 0xe8, 0x5f, 0x18, 0xeb, 0xb1, - 0xe4, 0x2e, 0xb1, 0x7e, 0xb9, 0xeb, 0x8b, 0x97, 0xe7, 0xf5, - 0xa9, 0x53, 0xc7, 0x7e, 0x22, 0x89, 0x76, 0xae, 0xb9, 0xa9, - 0x28, 0xf4, 0x17, 0x6f, 0xfe, 0x34, 0x7f, 0xac, 0x71, 0xff, - 00, 0x9f, 0x5f, 0x8f, 0xfc, 0x2, 0x97, 0x12, 0xd2, 0xeb, - 0x4d, 0xfd, 0xe7, 0xe8, 0x95, 0x15, 0xf9, 0xe8, 0x9f, 0x12, - 0xbc, 0x55, 0x19, 0x5, 0x7c, 0x43, 0xaa, 0x2, 0x3a, 0x7f, - 0xa5, 0xbf, 0xf8, 0xd4, 0xf1, 0xfc, 0x57, 0xf1, 0x84, 0x59, - 0xdb, 0xe2, 0x5d, 0x50, 0x67, 0xfe, 0x9e, 0x9f, 0xfc, 0x6a, - 0xd7, 0x11, 0xd3, 0xeb, 0x4d, 0xfd, 0xe8, 0xb5, 0xc4, 0x94, - 0x3a, 0xc1, 0xfe, 0x7, 0xe8, 0x25, 0x15, 0xf0, 00, 0xf8, - 0xc3, 0xe3, 0x40, 0x38, 0xf1, 0x3e, 0xa9, 0xff, 00, 0x81, - 0xd, 0x4f, 0x1f, 0x19, 0xbc, 0x6c, 0xe, 0x7f, 0xe1, 0x26, - 0xd4, 0x7f, 0xef, 0xf1, 0xaa, 0xff, 00, 0x58, 0xa8, 0xff, - 00, 0xcf, 0xb7, 0xf8, 0xf, 0xfd, 0x64, 0xc3, 0xff, 00, - 0x23, 0xfc, 0xf, 0xbf, 0x28, 0xaf, 0x82, 0x57, 0xe3, 0x8f, - 0x8e, 0x54, 0xe4, 0x78, 0x92, 0xf8, 0xfd, 0x5c, 0x7f, 0x85, - 0x4a, 0x9f, 0x1e, 0x3c, 0x74, 0x99, 0xc7, 0x88, 0xae, 0xcf, - 0xd7, 0x7, 0xfa, 0x53, 0xff, 00, 0x58, 0xa8, 0x7f, 0xcf, - 0xb9, 0x7e, 0x1f, 0xe6, 0x5a, 0xe2, 0x3c, 0x2f, 0xf2, 0xbf, - 0xc3, 0xfc, 0xcf, 0xbc, 0x68, 0xaf, 0x86, 0x23, 0xfd, 0xa1, - 0xfc, 0x7b, 0x18, 0x51, 0xfd, 0xbd, 0x23, 0x6d, 0xfe, 0xf4, - 0x48, 0x73, 0xf5, 0xe2, 0xac, 0xc7, 0xfb, 0x4a, 0xf8, 0xf6, - 0x37, 0xdd, 0xfd, 0xae, 0x8d, 0xec, 0xd6, 0xd1, 0x91, 0xfc, - 0xaa, 0xd7, 0x10, 0xe1, 0xba, 0xc2, 0x5f, 0x87, 0xf9, 0x96, - 0xb8, 0x8b, 0x9, 0xd9, 0xfd, 0xcb, 0xfc, 0xcf, 0xb7, 0xa8, - 0xaf, 0x8a, 0x17, 0xf6, 0x9f, 0xf1, 0xe8, 0x1c, 0xea, 0x36, - 0xed, 0xf5, 0xb4, 0x4f, 0xf0, 0xa7, 0x8f, 0xda, 0x8b, 0xc7, - 0x7f, 0xf3, 0xfb, 0x69, 0xff, 00, 0x80, 0xab, 0x57, 0xfe, - 0xb0, 0x61, 0x7b, 0x4b, 0xee, 0x5f, 0xe6, 0x57, 0xfa, 0xc3, - 0x83, 0xf3, 0xfb, 0xbf, 0xe0, 0x9f, 0x6a, 0x51, 0x5f, 0x17, - 0xaf, 0xed, 0x4f, 0xe3, 0x90, 0x46, 0x6e, 0x2c, 0xdb, 0xd8, - 0xdb, 0xa, 0x9e, 0x2f, 0xda, 0xb7, 0xc6, 0xb1, 0xb1, 0x2c, - 0x74, 0xf9, 0x6, 0x3a, 0x35, 0xb9, 0xfe, 0x86, 0x9f, 0xfa, - 0xc1, 0x84, 0xed, 0x2f, 0xbb, 0xfe, 0x9, 0x4b, 0x88, 0x30, - 0x5d, 0xdf, 0xdc, 0x7d, 0x93, 0x45, 0x7c, 0x7e, 0xbf, 0xb5, - 0xbf, 0x8b, 0x82, 0x80, 0x6d, 0x34, 0xb6, 0x3e, 0xbe, 0x4b, - 0xff, 00, 0xf1, 0x55, 0x3a, 0x7e, 0xd7, 0x9e, 0x29, 0xc, - 0xb, 0x69, 0xba, 0x5b, 0xe, 0xe3, 0x63, 0x8f, 0xfd, 0x9a, - 0xad, 0x67, 0xd8, 0x3f, 0x3f, 0xb8, 0xb5, 0x9f, 0x60, 0x7f, - 0x99, 0xfd, 0xc7, 0xd7, 0x34, 0x57, 0xc9, 0xab, 0xfb, 0x60, - 0xf8, 0x88, 0x67, 0x76, 0x8d, 0xa6, 0x1f, 0xa1, 0x90, 0x7f, - 0xec, 0xd4, 0xf1, 0xfb, 0x61, 0xeb, 0xdd, 0xf4, 0x3d, 0x37, - 0xfe, 0xfa, 0x93, 0xfc, 0x6a, 0xbf, 0xb7, 0x70, 0x5f, 0xcc, - 0xfe, 0xe6, 0x57, 0xf6, 0xee, 0x7, 0xf9, 0x9f, 0xdc, 0xcf, - 0xab, 0xe8, 0xaf, 0x94, 0xd7, 0xf6, 0xc4, 0xd6, 0xf8, 0xce, - 0x85, 0xa7, 0x9f, 0xa4, 0x8f, 0xfe, 0x35, 0x22, 0xfe, 0xd8, - 0x9a, 0xb6, 0x79, 0xd0, 0x2c, 0x88, 0xf6, 0x99, 0xe9, 0xff, - 00, 0x6e, 0x60, 0xbf, 0x99, 0xfd, 0xcc, 0x7f, 0xdb, 0x98, - 0x1f, 0xe7, 0xfc, 0x19, 0xf5, 0x45, 0x15, 0xf2, 0xf4, 0x7f, - 0xb6, 0x35, 0xe8, 0x5f, 0x9f, 0xc3, 0x76, 0xe5, 0xbd, 0x56, - 0xe9, 0x80, 0xff, 00, 0xd0, 0x6a, 0x65, 0xfd, 0xb2, 0x26, - 0xe3, 0x3e, 0x18, 0x8f, 0xdf, 0x17, 0x87, 0xff, 00, 0x88, - 0xaa, 0x59, 0xde, 0x7, 0xf9, 0xff, 00, 0x7, 0xfe, 0x45, - 0x2c, 0xeb, 0x2, 0xff, 00, 0xe5, 0xe7, 0xe0, 0xff, 00, - 0xc8, 0xfa, 0x6e, 0x8a, 0xf9, 0xba, 0x3f, 0xdb, 0x22, 0xc, - 0xfc, 0xfe, 0x17, 0x90, 0xf, 0xf6, 0x6f, 0x47, 0xff, 00, - 0x11, 0x5b, 0xda, 0x47, 0xed, 0x6f, 0xe1, 0x6b, 0xb8, 0xd7, - 0xed, 0xf6, 0x37, 0xf6, 0x12, 0x13, 0x82, 0x15, 0x56, 0x55, - 0x3, 0xd7, 0x20, 0x83, 0xfa, 0x56, 0xb0, 0xcd, 0xf0, 0x33, - 0x76, 0x55, 0x3f, 0x35, 0xf9, 0xa3, 0x58, 0x66, 0xd8, 0x29, - 0xbb, 0x2a, 0x8b, 0xf1, 0x5f, 0x99, 0xee, 0x74, 0x57, 0x31, - 0xe1, 0xaf, 0x89, 0x9e, 0x17, 0xf1, 0x7b, 0x4, 0xd2, 0x75, - 0xbb, 0x4b, 0xb9, 0x8f, 0x3e, 0x4e, 0xfd, 0xb2, 0x7f, 0xdf, - 0x2d, 0x83, 0xfa, 0x57, 0x4f, 0x5e, 0xac, 0x2a, 0x42, 0xa2, - 0xe6, 0x83, 0xba, 0xf2, 0x3d, 0x48, 0x4e, 0x15, 0x17, 0x34, - 0x1d, 0xd7, 0x90, 0x51, 0x45, 0x15, 0x65, 0x85, 0x14, 0x51, - 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, - 0x14, 0x51, 0x40, 0x5, 0x70, 0x7f, 0x18, 0x7e, 0x28, 0xdb, - 0x7c, 0x2f, 0xf0, 0xc3, 0xdd, 0xfe, 0xee, 0x7d, 0x4e, 0x73, - 0xe5, 0xda, 0x5a, 0xbb, 0x63, 0x7b, 0x77, 0x62, 0x3a, 0xed, - 0x1d, 0x4f, 0xe0, 0x3b, 0xd7, 0x75, 0x24, 0x8b, 0x12, 0x33, - 0xbb, 0x5, 0x45, 0x4, 0x96, 0x3d, 00, 0xaf, 0x82, 0x7e, - 0x32, 0x7c, 0x40, 0x7f, 0x88, 0xde, 0x3a, 0xbd, 0xbf, 0x57, - 0x26, 0xc2, 0x13, 0xf6, 0x7b, 0x34, 0xcf, 0x2, 0x35, 0x3d, - 0x7f, 0xe0, 0x47, 0x27, 0xf1, 0xaf, 0x17, 0x35, 0xc6, 0xbc, - 0x1d, 0xf, 0x73, 0xe2, 0x96, 0x8b, 0xfc, 0xcf, 0xf, 0x37, - 0xc7, 0xfd, 0x46, 0x87, 0xb9, 0xf1, 0xcb, 0x45, 0xfe, 0x7f, - 0x23, 0xa3, 0xf8, 0x39, 0xa7, 0xea, 0x1f, 0x13, 0x7e, 0x2a, - 0xc5, 0xa9, 0x6a, 0x92, 0xbd, 0xe3, 0xac, 0x86, 0xe2, 0x79, - 0x24, 0x39, 0xfa, 0xf, 0x61, 0xe8, 0x2b, 0xed, 0x40, 0x2, - 0x80, 0x7, 00, 0x57, 0x83, 0xfe, 0xca, 0x7e, 0x10, 0xfe, - 0xcc, 0xf0, 0xd5, 0xce, 0xb1, 0x34, 0x78, 0x9a, 0xe9, 0xf6, - 0xa1, 0x23, 0xf8, 0x45, 0x7b, 0xcd, 0x63, 0x92, 0x50, 0x74, - 0xb0, 0xbe, 0xd2, 0x5b, 0xcd, 0xdf, 0xfc, 0x83, 0x27, 0xa0, - 0xe9, 0x61, 0x54, 0xa7, 0xf1, 0x4b, 0x56, 0x14, 0x51, 0x45, - 0x7d, 0x1, 0xee, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x84, - 0x64, 0x70, 0x71, 0xef, 0x40, 0x18, 0x1c, 0x92, 0x7e, 0xb4, - 00, 0xb4, 0x53, 0x2, 0xed, 0x39, 0xde, 0x48, 0xf4, 0x3d, - 0x29, 0xc0, 0x83, 0xd0, 0xe6, 0x80, 0x16, 0x8a, 0x28, 0xa0, - 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, - 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, - 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, - 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x93, 0x2, 0x96, - 0x8a, 00, 0x4c, 0xf, 0x4a, 0x4d, 0x8a, 0x7b, 0xf, 0xca, - 0x9d, 0x45, 00, 0x37, 0xca, 0x43, 0xfc, 0xb, 0xf9, 0x53, - 0x4c, 0x11, 0x1e, 0xb1, 0xa7, 0xfd, 0xf2, 0x2a, 0x4a, 0x29, - 0x58, 0x8, 0xbe, 0xcb, 0xf, 0xfc, 0xf1, 0x8f, 0xfe, 0xf9, - 0x14, 0xd3, 0x65, 0x6e, 0x7a, 0xc1, 0x17, 0xfd, 0xf0, 0x2a, - 0x7a, 0x28, 0xb2, 0x15, 0x91, 0x59, 0xb4, 0xeb, 0x46, 0xeb, - 0x6b, 0x9, 0xfa, 0xc6, 0x29, 0x87, 0x47, 0xb1, 0x6e, 0xb6, - 0x70, 0x1f, 0xac, 0x63, 0xfc, 0x2a, 0xe5, 0x14, 0xb9, 0x63, - 0xd8, 0x2c, 0xbb, 0x19, 0xe7, 0x40, 0xd3, 0x1b, 0xad, 0x85, - 0xb1, 0xff, 00, 0xb6, 0x4b, 0xfe, 0x14, 0xc6, 0xf0, 0xce, - 0x92, 0xdd, 0x74, 0xdb, 0x53, 0xff, 00, 0x6c, 0x85, 0x69, - 0xd1, 0x4b, 0xd9, 0xc3, 0xb2, 0x17, 0x2c, 0x7b, 0x19, 0x7, - 0xc2, 0x3a, 0x2b, 0x75, 0xd2, 0xed, 0x4f, 0xfd, 0xb2, 0x15, - 0x1b, 0x78, 0x2b, 0x41, 0x73, 0x93, 0xa4, 0x59, 0x93, 0xef, - 0xa, 0xd6, 0xdd, 0x15, 0x3e, 0xca, 0x9b, 0xfb, 0x2b, 0xee, - 0x17, 0x24, 0x3b, 0x1c, 0xf3, 0x7c, 0x3f, 0xf0, 0xe3, 0x75, - 0xd1, 0xed, 0x3f, 0xef, 0xd0, 0xa8, 0x9b, 0xe1, 0xaf, 0x86, - 0x1f, 0xae, 0x8b, 0x69, 0xff, 00, 0x7e, 0xc5, 0x74, 0xd4, - 0x54, 0xfd, 0x5e, 0x8b, 0xfb, 0xb, 0xee, 0x44, 0xfb, 0x2a, - 0x6f, 0xec, 0xaf, 0xb8, 0xe4, 0xdf, 0xe1, 0x5f, 0x85, 0x5f, - 0x39, 0xd1, 0x6d, 0xb9, 0xff, 00, 0x60, 0x54, 0x2d, 0xf0, - 0x87, 0xc2, 0x4f, 0xd7, 0x45, 0xb7, 0xff, 00, 0xbe, 0x6b, - 0xb2, 0xa2, 0xa3, 0xea, 0xb4, 0x1f, 0xd8, 0x5f, 0x72, 0x17, - 0xb0, 0xa5, 0xfc, 0xab, 0xee, 0x38, 0x76, 0xf8, 0x2f, 0xe0, - 0xf7, 0xeb, 0xa3, 0x41, 0xf9, 0x54, 0x2f, 0xf0, 0x2f, 0xc1, - 0x8f, 0xff, 00, 0x30, 0x78, 0xc7, 0xd2, 0xbb, 0xea, 0x2a, - 0x5e, 0xb, 0xc, 0xf7, 0xa6, 0xbe, 0xe4, 0x4f, 0xd5, 0xa8, - 0xbf, 0xb0, 0xbe, 0xe3, 0xce, 0x9f, 0xe0, 0x17, 0x83, 0x1f, - 0xfe, 0x61, 0x6a, 0x3e, 0x86, 0xa0, 0x7f, 0xd9, 0xe3, 0xc1, - 0x8f, 0xff, 00, 0x2e, 0x4, 0x7d, 0xd, 0x7a, 0x65, 0x15, - 0xf, 0x1, 0x84, 0x7f, 0xf2, 0xe9, 0x7d, 0xc8, 0x9f, 0xaa, - 0x50, 0x7f, 0x61, 0x7d, 0xc7, 0x96, 0xbf, 0xec, 0xe1, 0xe0, - 0xd7, 0xff, 00, 0x97, 0x37, 0x1f, 0xf0, 0x2a, 0x81, 0xff, - 00, 0x66, 0x7f, 0x7, 0x37, 0xfc, 0xb0, 0x94, 0x7d, 0x1a, - 0xbd, 0x66, 0x8a, 0x9f, 0xec, 0xdc, 0x1b, 0xff, 00, 0x97, - 0x4b, 0xee, 0x23, 0xea, 0x58, 0x67, 0xff, 00, 0x2e, 0xd7, - 0xdc, 0x79, 0x3, 0xfe, 0xcb, 0xfe, 0xf, 0x7f, 0xe0, 0xb8, - 0x5f, 0xa3, 0xd4, 0xd, 0xfb, 0x2c, 0x78, 0x4c, 0xf4, 0x7b, - 0x81, 0xf8, 0x8a, 0xf6, 0x6a, 0x2a, 0x1e, 0x57, 0x82, 0x7f, - 0xf2, 0xe9, 0x12, 0xf0, 0x18, 0x57, 0xff, 00, 0x2e, 0xd7, - 0xdc, 0x78, 0x9b, 0xfe, 0xca, 0x7e, 0x16, 0x6e, 0x97, 0x17, - 0x23, 0xf1, 0x15, 0xb, 0xfe, 0xc9, 0xbe, 0x1b, 0x6f, 0xbb, - 0x79, 0x72, 0x3f, 0x2a, 0xf7, 0x2a, 0x2a, 0x7f, 0xb2, 0x70, - 0x3f, 0xf3, 0xe9, 0x12, 0xf2, 0xec, 0x23, 0xff, 00, 0x97, - 0x68, 0xf0, 0x76, 0xfd, 0x92, 0x74, 0x3, 0xd3, 0x50, 0xb9, - 0x1f, 0x80, 0xa8, 0x5b, 0xf6, 0x45, 0xd1, 0xf, 0x4d, 0x52, - 0xe0, 0x7f, 0xc0, 0x45, 0x7b, 0xf5, 0x15, 0x3f, 0xd9, 0x18, - 0x1f, 0xf9, 0xf7, 0xf9, 0x90, 0xf2, 0xbc, 0x1b, 0xff, 00, - 0x97, 0x68, 0xf9, 0xe9, 0xff, 00, 0x64, 0x2d, 0x2c, 0xfd, - 0xdd, 0x62, 0x7f, 0xc5, 0x5, 0x40, 0xff, 00, 0xb2, 0x5, - 0x97, 0xf0, 0xeb, 0x12, 0x7e, 0x28, 0x2b, 0xe8, 0xca, 0x2a, - 0x3f, 0xb1, 0xb0, 0x3f, 0xf3, 0xef, 0xf1, 0x7f, 0xe6, 0x4b, - 0xca, 0x70, 0x4f, 0xfe, 0x5d, 0xa3, 0xe6, 0xd6, 0xfd, 0x90, - 0x21, 0xfe, 0x1d, 0x65, 0xbf, 0x14, 0xa8, 0x5f, 0xf6, 0x40, - 0x3f, 0xc3, 0xac, 0x7e, 0x69, 0x5f, 0x4c, 0x51, 0x53, 0xfd, - 0x89, 0x81, 0xfe, 0x4f, 0xc5, 0x91, 0xfd, 0x91, 0x82, 0xff, - 00, 0x9f, 0x67, 0xcc, 0xf, 0xfb, 0x20, 0x4f, 0xfc, 0x3a, - 0xba, 0xfe, 0x2b, 0x50, 0xbf, 0xec, 0x83, 0x7e, 0x3e, 0xee, - 0xaf, 0x11, 0xfa, 0xad, 0x7d, 0x4b, 0x45, 0x4f, 0xf6, 0x1e, - 0x7, 0xf9, 0x5f, 0xde, 0xc9, 0x79, 0x36, 0x5, 0xfd, 0x83, - 0xe5, 0x37, 0xfd, 0x91, 0x35, 0x51, 0xd3, 0x53, 0x84, 0xfe, - 0x15, 0x3, 0xfe, 0xc9, 0x1a, 0xd8, 0xe9, 0x7d, 0xb, 0x57, - 0xd6, 0x74, 0x54, 0xbc, 0x87, 0x5, 0xd9, 0xfd, 0xec, 0x87, - 0x92, 0x60, 0x7f, 0x93, 0xf1, 0x3e, 0x46, 0x7f, 0xd9, 0x33, - 0xc4, 0x23, 0xa5, 0xd4, 0x7, 0xf1, 0xa8, 0x1f, 0xf6, 0x51, - 0xf1, 0x28, 0xfb, 0xb2, 0xc2, 0x7f, 0x1a, 0xfb, 0x2, 0x8a, - 0x8f, 0xec, 0xc, 0x1f, 0x9f, 0xde, 0x4f, 0xf6, 0x16, 0xb, - 0xf9, 0x7f, 0x13, 0xe3, 0x87, 0xfd, 0x95, 0x7c, 0x54, 0x3e, - 0xe9, 0x85, 0xbf, 0xe0, 0x42, 0xa1, 0x7f, 0xd9, 0x6f, 0xc5, - 0xeb, 0xd2, 0x38, 0x8f, 0xd1, 0xc5, 0x7d, 0x9b, 0x45, 0x4f, - 0xfa, 0xbf, 0x84, 0xee, 0xfe, 0xff, 00, 0xf8, 0x4, 0xff, - 00, 0x60, 0xe0, 0xbb, 0x3f, 0xbc, 0xf8, 0xad, 0xff, 00, - 0x66, 0x3f, 0x18, 0xaf, 0x4b, 0x64, 0x3f, 0xf0, 0x31, 0x50, - 0xbf, 0xec, 0xd7, 0xe3, 0x35, 0xff, 00, 0x97, 0x20, 0x7f, - 0xe0, 0x42, 0xbe, 0xda, 0xa2, 0xa7, 0xfd, 0x5e, 0xc3, 0x7f, - 0x34, 0xbf, 0xf, 0xf2, 0x23, 0xfd, 0x5f, 0xc1, 0xf9, 0xfd, - 0xe7, 0xc3, 0xcd, 0xfb, 0x39, 0xf8, 0xd1, 0x7f, 0xe6, 0x1a, - 0x4f, 0xfc, 0x8, 0x54, 0x2f, 0xfb, 0x3d, 0xf8, 0xd1, 0x7f, - 0xe6, 0x14, 0xe7, 0xf1, 0x15, 0xf7, 0x3d, 0x15, 0x3f, 0xea, - 0xee, 0x1f, 0xf9, 0xe5, 0xf8, 0x7f, 0x91, 0x3f, 0xea, 0xf6, - 0x13, 0xcf, 0xef, 0x3e, 0x12, 0x3f, 0x1, 0xbc, 0x6d, 0xb, - 0x6, 0x5d, 0x22, 0x60, 0xc3, 0xa3, 0x29, 0xc1, 0x15, 0xde, - 0x78, 0x43, 0xc6, 0xbf, 0x14, 0xfe, 0x15, 0x6c, 0x5d, 0x57, - 0x4c, 0xbc, 0xd7, 0x34, 0x55, 0xfb, 0xf0, 0x5d, 0x12, 0xd2, - 0xa2, 0xff, 00, 0xb1, 0x27, 0x5f, 0xc0, 0xe4, 0x7d, 0x2b, - 0xeb, 0x1a, 0x82, 0xf2, 0xde, 0x2b, 0x9b, 0x69, 0x12, 0x64, - 0x59, 0x10, 0xa9, 0xc8, 0x61, 0x5a, 0xd2, 0xc9, 0x56, 0x19, - 0xf3, 0xd0, 0xab, 0x24, 0xfe, 0x45, 0x53, 0xc8, 0xe9, 0xd0, - 0x7c, 0xf8, 0x7a, 0x92, 0x8b, 0xfe, 0xb7, 0xee, 0x73, 0xbe, - 00, 0xf8, 0x91, 0xa2, 0x7c, 0x48, 0xd2, 0x8d, 0xe6, 0x91, - 0x73, 0xba, 0x58, 0xf0, 0x2e, 0x2d, 0x24, 0xf9, 0x66, 0xb7, - 0x63, 0xfc, 0x2e, 0xbd, 0xbe, 0xbd, 0xd, 0x75, 0x35, 0xf1, - 0x7, 0xc4, 0x6d, 0x72, 0xff, 00, 0xe1, 0x4f, 0xc4, 0x43, - 0xae, 0x78, 0x66, 0x63, 0x69, 0x74, 0x24, 0xfd, 0xfc, 0x20, - 0xfe, 0xee, 0xe1, 0x1, 0xc9, 0x8d, 0xc7, 0x70, 0x7f, 0x31, - 0xda, 0xbe, 0xae, 0xf8, 0x4f, 0xf1, 0x3b, 0x4d, 0xf8, 0xb7, - 0xe0, 0xcb, 0x5d, 0x7f, 0x4d, 0x47, 0x80, 0x3b, 0x34, 0x53, - 0xda, 0xca, 0x46, 0xf8, 0x25, 0x5e, 0x19, 0xf, 0xaf, 0xa8, - 0x3d, 0xc1, 0x6, 0xbd, 0xc, 0xe, 0x35, 0x62, 0x79, 0xa9, - 0xcb, 0xe2, 0x8e, 0x8c, 0xe8, 0xc0, 0x66, 0x4a, 0xbd, 0x59, - 0x61, 0x6a, 0xe9, 0x52, 0x3f, 0x73, 0x5d, 0xd7, 0xea, 0x8e, - 0xc6, 0x8a, 0x28, 0xaf, 0x54, 0xf7, 0x42, 0x8a, 0x28, 0xa0, - 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0xf, 0x37, - 0xfd, 0xa0, 0x7c, 0x6a, 0x3c, 0x17, 0xf0, 0xd7, 0x51, 0x74, - 0x72, 0x97, 0x97, 0xe3, 0xec, 0x56, 0xfb, 0x4e, 0x8, 0x67, - 0x7, 0x24, 0x7d, 0x17, 0x26, 0xbe, 0x25, 0xd0, 0xb4, 0xb9, - 0x35, 0x8d, 0x56, 0xd2, 0xca, 0x15, 0xdc, 0xf3, 0x48, 0x10, - 0x1, 0x5e, 0xd3, 0xfb, 0x5a, 0xf8, 0xcb, 0xfb, 0x5b, 0xc6, - 0x16, 0x7e, 0x1f, 0x85, 0xf3, 0x6, 0x97, 0x1f, 0x99, 0x28, - 0x7, 0x83, 0x33, 0x8c, 0xfe, 0x8b, 0x8f, 0xfb, 0xe8, 0xd6, - 0x77, 0xec, 0xc3, 0xe1, 0x1, 0xaf, 0x78, 0xd8, 0x5f, 0x4d, - 0x1e, 0xeb, 0x7b, 0x25, 0x2f, 0x93, 0xd3, 0x77, 0x6a, 0xfc, - 0xf7, 0x33, 0x93, 0xc7, 0x63, 0xd6, 0x1e, 0x3b, 0x2d, 0x3f, - 0xcc, 0xfc, 0xef, 0x1e, 0xde, 0x63, 0x9a, 0x2a, 0x11, 0xda, - 0x3a, 0x7f, 0x9f, 0xf5, 0xe4, 0x7d, 0x67, 0xe1, 0x3d, 0x12, - 0x3f, 0xe, 0xf8, 0x72, 0xc3, 0x4f, 0x8d, 0x42, 0x88, 0x22, - 0x55, 0x38, 0xf5, 0xc7, 0x35, 0xaf, 0x45, 0x15, 0xfa, 0x4, - 0x62, 0xa1, 0x15, 0x18, 0xec, 0x8f, 0xd0, 0xa2, 0x94, 0x52, - 0x48, 0x28, 0xa2, 0x8a, 0xa2, 0x82, 0x8a, 0x2b, 0xcd, 0xbf, - 0x68, 0xaf, 0x8d, 0xda, 0x47, 0xec, 0xf1, 0xf0, 0x83, 0xc4, - 0x1e, 0x39, 0xd6, 0xe, 0xe8, 0xf4, 0xf8, 0x71, 0x6d, 0x6e, - 0x3e, 0xf5, 0xc5, 0xc3, 0x7c, 0xb1, 0x44, 0x3e, 0xac, 0x46, - 0x7d, 0x6, 0x4f, 0x6a, 00, 0xe7, 0x3f, 0x69, 0x9f, 0xda, - 0xf3, 0xe1, 0xf7, 0xec, 0xaf, 0xa0, 0x47, 0x79, 0xe2, 0xcb, - 0xe7, 0x9f, 0x55, 0xba, 0x52, 0xd6, 0x3a, 0x25, 0x88, 0xf, - 0x77, 0x73, 0x8e, 0xe0, 0x67, 0xa, 0x99, 0xfe, 0x36, 0x20, - 0x7d, 0x4f, 0x15, 0xf9, 0x5d, 0xf1, 0x87, 0xfe, 0xa, 0xd5, - 0xf1, 0x9b, 0xe2, 0x5, 0xc5, 0xdd, 0xbf, 0x85, 0xe5, 0xb1, - 0xf0, 0x1e, 0x90, 0xec, 0x44, 0x4b, 0xa7, 0xc2, 0x26, 0xbb, - 0x9, 0x9e, 0x37, 0x4d, 0x26, 0x46, 0x71, 0xfd, 0xd5, 0x5a, - 0xf9, 0xb3, 0x5d, 0xd7, 0xfc, 0x7d, 0xfb, 0x57, 0x7c, 0x67, - 0x4b, 0x8b, 0xc9, 0x2e, 0x3c, 0x4b, 0xe3, 0x3f, 0x11, 0xdd, - 0xac, 0x10, 0x44, 0xf, 00, 0x93, 0xf2, 0xc6, 0x83, 0xa2, - 0x46, 0xa3, 0x3c, 0x74, 00, 0x13, 0xea, 0x6b, 0xf4, 0x67, - 0xc1, 0x1f, 0xf0, 0x48, 0xaf, 0x87, 0xff, 00, 0xf, 0x7e, - 0x1c, 0xdf, 0x78, 0x9b, 0xe2, 0xf7, 0x8b, 0x75, 0x1b, 0xeb, - 0x9d, 0x3e, 0xca, 0x4b, 0xeb, 0xe8, 0x74, 0x69, 0x56, 0xda, - 0xd6, 0xd9, 0x11, 0xb, 0xb0, 0xe, 0xca, 0x59, 0xf0, 0x1, - 0xe7, 0xe5, 0xcf, 0xa5, 0x32, 0x6e, 0xde, 0xc7, 0xe7, 0x17, - 0x88, 0x7f, 0x68, 0xbf, 0x8a, 0x7e, 0x2b, 0xb9, 0x92, 0x7d, - 0x5b, 0xe2, 0x37, 0x8a, 0x2f, 0x64, 0x90, 0xe5, 0x83, 0xea, - 0xf3, 0x85, 0x27, 0xfd, 0xd0, 0xc0, 0xf, 0xca, 0xbf, 0x5a, - 0xbf, 0xe0, 0x92, 0x3e, 0xb, 0xd6, 0xed, 0xfe, 0x3, 0xea, - 0x3e, 0x39, 0xf1, 0x6, 0xad, 0xa9, 0x6a, 0xb7, 0x9e, 0x23, - 0xbe, 0x74, 0xb3, 0x17, 0xf7, 0x52, 0x4c, 0x22, 0xb6, 0x80, - 0x94, 0x1b, 0x43, 0x13, 0x8d, 0xd2, 0x79, 0x84, 0x91, 0xd4, - 0x5, 0xaf, 0xc7, 0x4d, 0x1b, 0xc3, 0x7f, 0xf0, 0x9e, 0xfc, - 0x44, 0xb2, 0xd0, 0x7c, 0x39, 0x6f, 0x24, 0x4b, 0xac, 0x6a, - 0x89, 0x67, 0xa7, 0xc1, 0x2b, 0x6f, 0x64, 0x12, 0xca, 0x16, - 0x30, 0xcd, 0x8e, 0x70, 0x18, 0x64, 0xfb, 0x13, 0x5f, 0xd1, - 0xcf, 0x86, 0xb4, 0x4d, 0x3, 0xf6, 0x7b, 0xf8, 0x2d, 0x65, - 0xa6, 0xc6, 0x52, 0xcf, 0xc3, 0xfe, 0x13, 0xd1, 0xc0, 0x67, - 0x3c, 0x1, 0x1c, 0x31, 0xe5, 0xdc, 0xfb, 0x9c, 0x12, 0x7d, - 0xcd, 0xc, 0x48, 0xf8, 0xf, 0xc4, 0x7f, 0xf0, 0x59, 0xa9, - 0xfc, 0x25, 0xe2, 0xcd, 0x6b, 0x42, 0xd4, 0x3e, 0x14, 0xab, - 0xcd, 0xa6, 0x5e, 0xcf, 0x65, 0x24, 0x90, 0x6b, 0x7c, 0x33, - 0x47, 0x23, 0x21, 0x20, 0x18, 0x7d, 0x56, 0xbe, 0xec, 0xfd, - 0x9c, 0x3e, 0x34, 0x47, 0xfb, 0x42, 0x7c, 0x1b, 0xf0, 0xff, - 00, 0x8f, 0x62, 0xd2, 0xdf, 0x46, 0x4d, 0x59, 0x24, 0x61, - 0x64, 0xf2, 0xf9, 0xa6, 0x3d, 0xb2, 0x32, 0x7d, 0xec, 0xc, - 0xe7, 0x6e, 0x7a, 0x77, 0xaf, 0xe7, 0x2f, 0xc6, 0x7a, 0xf9, - 0xf1, 0x5f, 0x8b, 0xf5, 0xdd, 0x6d, 0x86, 0xd6, 0xd4, 0xaf, - 0xe7, 0xbd, 0x23, 0xd0, 0xc9, 0x23, 0x3f, 0xfe, 0xcd, 0x5f, - 0xd1, 0x27, 0xec, 0x91, 0xf0, 0xfe, 0x4f, 0x85, 0xff, 00, - 0xb3, 0x57, 0xc3, 0x9f, 0xd, 0xce, 0x9e, 0x5d, 0xdd, 0xae, - 0x8d, 0x3, 0xdc, 0xaf, 0xa4, 0xd2, 0x2f, 0x99, 0x27, 0xfe, - 0x3c, 0xe6, 0x81, 0xa7, 0x73, 0xd6, 0xc9, 0xc0, 0xc9, 0xe0, - 0x57, 0xce, 0xda, 0xff, 00, 0xed, 0xf, 0xae, 0x43, 0xae, - 0x5f, 0x47, 0xa6, 0xc7, 0x64, 0xda, 0x7a, 0x4a, 0xcb, 0x9, - 0x96, 0x26, 0x2c, 0x54, 0x1c, 0x64, 0x9d, 0xc3, 0xaf, 0x5f, - 0xc6, 0xbd, 0x7b, 0xe2, 0x97, 0x89, 0x47, 0x85, 0xbc, 0x11, - 0xa9, 0x5d, 0xab, 0x6d, 0x9d, 0xd3, 0xc8, 0x87, 0xfd, 0xf7, - 0xe0, 0x7e, 0x5c, 0x9f, 0xc2, 0xbe, 0x40, 0xaf, 0x86, 0xe2, - 0x2c, 0xca, 0xae, 0x1a, 0x70, 0xa3, 0x42, 0x5c, 0xaf, 0x77, - 0x6f, 0xc3, 0xf5, 0x3c, 0x9c, 0x75, 0x79, 0x53, 0x6a, 0x10, - 0x76, 0x3d, 0x5d, 0x3f, 0x69, 0xf, 0x12, 0xaf, 0xde, 0xb3, - 0xd3, 0x9b, 0xfe, 0xd9, 0xb8, 0xff, 00, 0xd9, 0xaa, 0x74, - 0xfd, 0xa5, 0x75, 0xe1, 0xf7, 0xb4, 0xdd, 0x3d, 0xbe, 0x81, - 0xc7, 0xfe, 0xcd, 0x5e, 0x43, 0x45, 0x7c, 0x82, 0xce, 0x73, - 0x5, 0xff, 00, 0x2f, 0x5f, 0xe0, 0x79, 0x9f, 0x5a, 0xad, - 0xfc, 0xc7, 0xb3, 0x47, 0xfb, 0x4c, 0xea, 0x83, 0xef, 0xe8, - 0xb6, 0x8d, 0xfe, 0xec, 0xac, 0x3f, 0xc6, 0xa7, 0x4f, 0xda, - 0x72, 0xef, 0xf8, 0xbc, 0x3f, 0x9, 0xfa, 0x5d, 0x11, 0xff, - 00, 0xb2, 0xd7, 0x89, 0x51, 0x5a, 0x2c, 0xf3, 0x31, 0x5f, - 0xf2, 0xf7, 0xf0, 0x5f, 0xe4, 0x57, 0xd7, 0x2b, 0xff, 00, - 0x31, 0xee, 0xd1, 0x7e, 0xd3, 0x83, 0xfe, 0x5a, 0x78, 0x7f, - 0x1f, 0xee, 0xdd, 0x7f, 0xf6, 0x35, 0x66, 0x3f, 0xda, 0x6e, - 0xc8, 0xfd, 0xfd, 0xa, 0x71, 0xfe, 0xec, 0xea, 0x7f, 0xa5, - 0x78, 0x5, 0x15, 0xaa, 0xe2, 0xc, 0xc5, 0x7f, 0xcb, 0xcf, - 0xc1, 0x7f, 0x91, 0x5f, 0x5d, 0xaf, 0xfc, 0xdf, 0x91, 0xf4, - 0x3c, 0x7f, 0xb4, 0xc6, 0x90, 0x7e, 0xfe, 0x91, 0x7a, 0xbf, - 0xee, 0xb2, 0x1f, 0xeb, 0x5a, 0x56, 0x7f, 0xb4, 0x5f, 0x85, - 0xee, 0x8, 0x13, 0x45, 0x7f, 0x6b, 0xee, 0xf0, 0x86, 0x1f, - 0xf8, 0xeb, 0x1a, 0xf9, 0x9a, 0x8a, 0xd6, 0x3c, 0x47, 0x8f, - 0x8e, 0xed, 0x3f, 0x97, 0xf9, 0x14, 0xb1, 0xf5, 0x97, 0x53, - 0xec, 0x4d, 0x7, 0xe2, 0x67, 0x86, 0x7c, 0x48, 0xeb, 0x1d, - 0x8e, 0xaf, 0x3, 0x4c, 0xdd, 0x22, 0x97, 0x31, 0xb9, 0xfa, - 0x6, 0xc6, 0x7f, 0xa, 0xe9, 0xeb, 0xe1, 0x4a, 0xed, 0x7c, - 0x17, 0xf1, 0x6b, 0x5f, 0xf0, 0x6c, 0xa8, 0x89, 0x72, 0xd7, - 0xd6, 00, 0xfc, 0xd6, 0x97, 0x2c, 0x59, 0x71, 0xfe, 0xc9, - 0xea, 0xbf, 0x87, 0x1e, 0xd5, 0xed, 0xe1, 0x38, 0xa1, 0x36, - 0xa3, 0x8a, 0x85, 0xbc, 0xd7, 0xf9, 0x7f, 0xc1, 0x3a, 0xe9, - 0x66, 0x37, 0x76, 0xa8, 0xbe, 0xe3, 0xeb, 0x6a, 0x2b, 0x13, - 0xc2, 0x1e, 0x2f, 0xd3, 0xfc, 0x6b, 0xa3, 0xa6, 0xa1, 0xa7, - 0xc8, 0x4a, 0x13, 0xb6, 0x48, 0xdb, 0x86, 0x8d, 0xfb, 0xa9, - 0x15, 0xb7, 0x5f, 0x75, 0x4e, 0xa4, 0x6a, 0xc5, 0x4e, 0xe, - 0xe9, 0x9e, 0xc4, 0x64, 0xa4, 0xae, 0xb6, 0xa, 0xc0, 0xf1, - 0x17, 0x8e, 0xb4, 0x2f, 0x9, 0xdc, 0x43, 0x6, 0xab, 0xa8, - 0x25, 0xa4, 0xb3, 0x29, 0x74, 0x56, 0x56, 0x39, 00, 0xe3, - 0x3c, 0x3, 0x5b, 0xf5, 0xf2, 0x87, 0xc6, 0xed, 0x74, 0x6b, - 0x9f, 0x10, 0xaf, 0xc2, 0x36, 0xe8, 0xac, 0xc2, 0xda, 0xa7, - 0xfc, 0x7, 0xef, 0x7f, 0xe3, 0xc5, 0xab, 0xc8, 0xcd, 0xf3, - 0x7, 0x97, 0x61, 0xd5, 0x48, 0x24, 0xe4, 0xdd, 0x95, 0xce, - 0x5c, 0x55, 0x77, 0x42, 0x1c, 0xcb, 0x73, 0xe8, 0x4, 0xf8, - 0xb9, 0xe0, 0xf7, 0xe9, 0xaf, 0x5b, 0xf, 0xf7, 0xb7, 0xf, - 0xe6, 0x2a, 0x74, 0xf8, 0xa1, 0xe1, 0x37, 0xe9, 0xe2, 0xb, - 0x1f, 0xc6, 0x50, 0x2b, 0xe3, 0xca, 0x2b, 0xe3, 0x97, 0x14, - 0xe2, 0x7a, 0xd3, 0x8f, 0xe3, 0xfe, 0x67, 0x97, 0xfd, 0xa3, - 0x53, 0xb2, 0x3e, 0xca, 0x8f, 0xe2, 0x17, 0x86, 0x25, 0xfb, - 0xba, 0xfe, 0x9c, 0x7f, 0xed, 0xe5, 0x3f, 0xc6, 0xad, 0x47, - 0xe3, 0xd, 0xa, 0x6f, 0xb9, 0xac, 0xd8, 0x37, 0xd2, 0xe5, - 0x3f, 0xc6, 0xbe, 0x2b, 0xa2, 0xb5, 0x5c, 0x55, 0x5b, 0xad, - 0x25, 0xf7, 0xb2, 0xbf, 0xb4, 0x67, 0xd6, 0x27, 0xdb, 0x89, - 0xaf, 0x69, 0x92, 0x7d, 0xdd, 0x46, 0xd1, 0xbe, 0x93, 0xaf, - 0xf8, 0xd4, 0xc9, 0xa9, 0x5a, 0x49, 0xf7, 0x2e, 0xa0, 0x6f, - 0xa4, 0x80, 0xff, 00, 0x5a, 0xf8, 0x76, 0x8c, 0x91, 0x5a, - 0x2e, 0x2b, 0x97, 0x5a, 0x3f, 0x8f, 0xfc, 0x2, 0xbf, 0xb4, - 0x9f, 0xf2, 0xfe, 0x27, 0xdd, 0xb, 0x2a, 0x37, 0xdd, 0x75, - 0x3f, 0x43, 0x4e, 0xdc, 0x3d, 0x45, 0x7c, 0x30, 0x25, 0x75, - 0xe8, 0xec, 0x3e, 0x86, 0xa4, 0x4b, 0xeb, 0x98, 0xfe, 0xed, - 0xc4, 0xab, 0xf4, 0x72, 0x2b, 0x45, 0xc5, 0x6b, 0xad, 0x1f, - 0xfc, 0x9b, 0xfe, 0x1, 0x5f, 0xda, 0x5f, 0xdc, 0xfc, 0x7f, - 0xe0, 0x1f, 0x72, 0x51, 0x5f, 0x10, 0xa6, 0xb9, 0xa9, 0x47, - 0xf7, 0x75, 0xb, 0xa5, 0xfa, 0x4c, 0xdf, 0xe3, 0x52, 0xaf, - 0x89, 0xb5, 0x84, 0xfb, 0xba, 0xad, 0xf2, 0xfd, 0x2e, 0x5c, - 0x7f, 0x5a, 0xd1, 0x71, 0x5d, 0x3e, 0xb4, 0x5f, 0xdf, 0xff, - 00, 00, 0x7f, 0xda, 0x4b, 0xf9, 0x7f, 0x13, 0xed, 0x9a, - 0x2b, 0xe2, 0xc4, 0xf1, 0x96, 0xbf, 0x1f, 0xdd, 0xd7, 0x35, - 0x25, 0xfa, 0x5d, 0xc9, 0xfe, 0x35, 0xda, 0x7c, 0x25, 0xf1, - 0x7, 0x88, 0x75, 0xff, 00, 0x1e, 0xe9, 0x76, 0x93, 0x6b, - 0x3a, 0x84, 0xf6, 0xc1, 0xda, 0x59, 0x52, 0x4b, 0x97, 0x65, - 0x2a, 0xaa, 0x4e, 0x8, 0x27, 0xa6, 0x70, 0x3f, 0x1a, 0xe9, - 0xa1, 0xc4, 0xb4, 0xab, 0xd5, 0x8d, 0x25, 0x49, 0xde, 0x4d, - 0x2d, 0xd7, 0x53, 0x48, 0x63, 0xe3, 0x39, 0x28, 0xa8, 0xee, - 0x7d, 0x3f, 0x45, 0x14, 0x57, 0xd9, 0x1e, 0xa8, 0x51, 0x45, - 0x14, 00, 0x51, 0x5c, 0xf7, 0x88, 0xfc, 0x7f, 0xa0, 0x78, - 0x4f, 0x8d, 0x4f, 0x52, 0x86, 0x9, 0x7f, 0xe7, 0x8a, 0xe5, - 0xe4, 0xff, 00, 0xbe, 0x57, 0x26, 0xbc, 0xef, 0x5b, 0xfd, - 0xa5, 0x74, 0xcb, 0x70, 0xcb, 0xa5, 0xe9, 0x97, 0x17, 0x6f, - 0xd9, 0xee, 0x18, 0x44, 0xbf, 0x90, 0xc9, 0xfe, 0x55, 0xe6, - 0xe2, 0x33, 0x2c, 0x26, 0x17, 0x4a, 0xb5, 0x12, 0x7d, 0xb7, - 0x7f, 0x72, 0x39, 0xe7, 0x5e, 0x95, 0x3f, 0x8a, 0x47, 0xb2, - 0xd1, 0x5f, 0x34, 0x5f, 0x7e, 0xd1, 0x9e, 0x26, 0xb8, 0x63, - 0xf6, 0x78, 0x2c, 0x2d, 0x13, 0xb6, 0x22, 0x67, 0x23, 0xf1, - 0x2d, 0x8f, 0xd2, 0xb1, 0xae, 0x3e, 0x37, 0xf8, 0xce, 0x72, - 0x7f, 0xe2, 0x6d, 0xe5, 0x3, 0xda, 0x38, 0x23, 0x18, 0xff, - 00, 0xc7, 0x6b, 0xc5, 0x9f, 0x13, 0x60, 0x63, 0xf0, 0xa9, - 0x3f, 0x97, 0xf9, 0xb4, 0x72, 0x3c, 0xc2, 0x8a, 0xda, 0xec, - 0xfa, 0xbc, 0x8c, 0xd2, 0x79, 0x63, 0xdf, 0xf3, 0x35, 0xf2, - 0x2b, 0x7c, 0x5d, 0xf1, 0x83, 0x1c, 0x9d, 0x76, 0xe4, 0x7d, - 0x2, 0x8f, 0xe9, 0x52, 0x45, 0xf1, 0x8b, 0xc6, 0x31, 0x1c, - 0x8d, 0x72, 0x63, 0xfe, 0xf4, 0x68, 0xdf, 0xcd, 0x6b, 0xf, - 0xf5, 0xa3, 0x9, 0xfc, 0x92, 0xfc, 0x3f, 0xcc, 0x9f, 0xed, - 0x1a, 0x7d, 0x99, 0xf5, 0xc5, 0x15, 0xf2, 0xb5, 0xb7, 0xc7, - 0x9f, 0x18, 0xdb, 0xfd, 0xeb, 0xf8, 0x6e, 0x3f, 0xeb, 0xad, - 0xba, 0x7f, 0x40, 0x2b, 0x7f, 0x4d, 0xfd, 0xa5, 0x75, 0xa8, - 0x58, 0xb, 0xed, 0x32, 0xce, 0xe9, 0x7b, 0xf9, 0x25, 0xa2, - 0x3f, 0xa9, 0x61, 0x5d, 0x54, 0xf8, 0x93, 0x1, 0x3f, 0x8a, - 0xeb, 0xd5, 0x7f, 0x95, 0xcd, 0x16, 0x3e, 0x8b, 0xde, 0xe8, - 0xfa, 0x2a, 0x8a, 0xf2, 0xdd, 0x17, 0xf6, 0x87, 0xf0, 0xd6, - 0xa3, 0xb5, 0x6f, 0x52, 0xeb, 0x4c, 0x90, 0xf5, 0x32, 0x26, - 0xf4, 0xfc, 0xd7, 0x27, 0xf4, 0xaf, 0x45, 0xd2, 0xb5, 0x9b, - 0x1d, 0x72, 0xd5, 0x6e, 0x74, 0xfb, 0xb8, 0x6f, 0x20, 0x6e, - 0x8f, 0xb, 0x86, 0x1f, 0x8f, 0xa5, 0x7b, 0x98, 0x7c, 0x6e, - 0x1f, 0x15, 0xfc, 0x19, 0xa9, 0x7e, 0x7f, 0x76, 0xe7, 0x64, - 0x2a, 0xd3, 0xa9, 0xf0, 0x3b, 0x97, 0x68, 0xa2, 0x8a, 0xed, - 0x35, 0xa, 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa2, 0x80, 0xa, - 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa6, 0xbc, 0x8b, 0x12, 0x96, - 0x76, 0x8, 0xa3, 0xa9, 0x63, 0x81, 0x40, 0xe, 0xa2, 0xb0, - 0xb5, 0xf, 0x1d, 0xf8, 0x77, 0x4b, 0x24, 0x5d, 0x6b, 0x56, - 0x30, 0xb0, 0xea, 0xa6, 0x75, 0x27, 0xf2, 0x7, 0x35, 0x8b, - 0x71, 0xf1, 0xa7, 0xc1, 0xb6, 0xe7, 0x7, 0x5a, 0x47, 0xff, - 00, 0xae, 0x70, 0xc8, 0xff, 00, 0xc9, 0x6b, 0x92, 0x78, - 0xbc, 0x35, 0x3d, 0x27, 0x52, 0x2b, 0xd5, 0xa3, 0x27, 0x56, - 0x9c, 0x77, 0x92, 0xfb, 0xce, 0xde, 0x98, 0x5d, 0xb3, 0xf7, - 0xf, 0xe6, 0x2b, 0x82, 0x3f, 0x1d, 0xfc, 0x18, 0xf, 0xfc, - 0x84, 0xe4, 0x3f, 0xf6, 0xed, 0x2f, 0xff, 00, 0x13, 0x4a, - 0xbf, 0x1d, 0x7c, 0x18, 0xc7, 0xfe, 0x42, 0x8e, 0x3e, 0xb6, - 0xb2, 0xff, 00, 0xf1, 0x35, 0x8f, 0xf6, 0x8e, 0xb, 0xfe, - 0x7f, 0x47, 0xff, 00, 0x2, 0x44, 0xfb, 0x7a, 0x5f, 0xce, - 0xbe, 0xf3, 0xbe, 0xc9, 0xc7, 0x4a, 0x4d, 0xc7, 0xfb, 0xa7, - 0xf4, 0xae, 0x3e, 0xdf, 0xe3, 0xf, 0x83, 0xae, 0x7e, 0xee, - 0xb9, 0x2, 0x7f, 0xd7, 0x45, 0x74, 0xfe, 0x60, 0x56, 0xcd, - 0x8f, 0x8c, 0xb4, 0x1d, 0x4f, 0x1f, 0x65, 0xd6, 0x2c, 0x67, - 0x27, 0xa0, 0x59, 0xd7, 0x3f, 0x96, 0x6b, 0x78, 0x62, 0xb0, - 0xf5, 0x3e, 0xa, 0x89, 0xfa, 0x34, 0x5a, 0xa9, 0x9, 0x6d, - 0x24, 0x6c, 0xd1, 0x4d, 0x47, 0x59, 0x17, 0x2a, 0xc1, 0x87, - 0xa8, 0x39, 0xa7, 0x57, 0x51, 0xa0, 0x51, 0x45, 0x30, 0x31, - 0xf3, 0x4a, 0x9e, 0x98, 0xc8, 0x34, 00, 0xfa, 0x28, 0xa2, - 0x80, 0xa, 0x82, 0xf5, 0xfc, 0xbb, 0x39, 0xdb, 0xd1, 0x9, - 0xfd, 0x2a, 0x7a, 0xa3, 0xad, 0xbf, 0x97, 0xa4, 0x5d, 0xb1, - 0x38, 0xc4, 0x66, 0xa6, 0x4e, 0xc9, 0xb1, 0x3d, 0x13, 0x3e, - 0x1c, 0xf8, 0xdf, 0x37, 0xda, 0x3c, 0x49, 0x28, 0xeb, 0x82, - 0x6b, 0x2f, 0xf6, 0x63, 0xf8, 0x99, 0x27, 0xc3, 0x6f, 0x8d, - 0x16, 0xba, 0x44, 0xf2, 0x95, 0xd1, 0x3c, 0x4a, 0x45, 0xa4, - 0x88, 0x71, 0x84, 0xb8, 0x19, 0xf2, 0x9f, 0xdb, 0xba, 0x9f, - 0xf7, 0x85, 0x49, 0xf1, 0x56, 0x7f, 0x3f, 0xc4, 0xd7, 0x3d, - 0xf0, 0x4d, 0x78, 0x7, 0xc5, 0x7b, 0x89, 0x2c, 0xb4, 0xe1, - 0x75, 0x6e, 0xed, 0x15, 0xcd, 0xbb, 0x9, 0xa2, 0x91, 0x4e, - 0xa, 0xba, 0x9c, 0xa9, 0x1f, 0x88, 0xaf, 0xce, 0x32, 0xfa, - 0xce, 0x38, 0xc9, 0x49, 0x77, 0x67, 0xe3, 0x98, 0xbc, 0x4c, - 0xb0, 0xd9, 0xac, 0x31, 0x11, 0xe9, 0x24, 0xbe, 0x4f, 0x46, - 0x7e, 0xc0, 0x51, 0x5c, 0x1f, 0x80, 0xfe, 0x28, 0xe9, 0x5e, - 0x21, 0xf0, 0x37, 0x87, 0x75, 0x59, 0x2e, 0xcb, 0x49, 0x7d, - 0xa7, 0x5b, 0x5c, 0xb1, 0x2a, 0x72, 0x4b, 0xc4, 0xac, 0x7f, - 0x9d, 0x15, 0xfa, 0x45, 0xcf, 0xd8, 0xee, 0x99, 0xde, 0x51, - 0x45, 0x14, 0xc6, 0x14, 0x51, 0x45, 00, 0x15, 0x53, 0x56, - 0xd4, 0xed, 0xf4, 0x5d, 0x2e, 0xee, 0xfe, 0xea, 0x41, 0x15, - 0xb5, 0xb4, 0x4d, 0x2c, 0x8e, 0x7b, 0x2a, 0x8c, 0x9a, 0xb7, - 0x5e, 0x2b, 0xfb, 0x55, 0x78, 0xc4, 0x68, 0x1f, 0xf, 0x86, - 0x93, 0x13, 0xe2, 0xeb, 0x58, 0x93, 0xca, 0xc0, 0xff, 00, - 0x9e, 0x4b, 0x86, 0x73, 0xff, 00, 0xa0, 0x8f, 0xc6, 0xb9, - 0xb1, 0x35, 0x96, 0x1e, 0x8c, 0xaa, 0xbe, 0x88, 0xe4, 0xc5, - 0xd7, 0x58, 0x5a, 0x13, 0xac, 0xfa, 0x2f, 0xf8, 0x63, 0xe4, - 0xcf, 0x12, 0xeb, 0x93, 0xf8, 0xa7, 0xc4, 0x7a, 0x8e, 0xad, - 0x71, 0x8f, 0x3e, 0xfa, 0xe1, 0xe6, 0x60, 0x3a, 0xc, 0x9e, - 00, 0xf6, 0x3, 0x2, 0xbe, 0xc2, 0xfd, 0x9b, 0x3c, 0x23, - 0xff, 00, 0x8, 0xe7, 0x80, 0xa3, 0xb9, 0x91, 0x36, 0xdc, - 0x5e, 0xb1, 0x90, 0xe4, 0x73, 0xb7, 0xb5, 0x7c, 0x91, 0xe0, - 0x6f, 0xf, 0xc9, 0xe2, 0x6f, 0x14, 0x69, 0xda, 0x7c, 0x6a, - 0x5b, 0xcd, 0x95, 0x41, 0xc7, 0xa6, 0x79, 0xaf, 0xd0, 0x8d, - 0x32, 0xc2, 0x2d, 0x2f, 0x4f, 0xb7, 0xb4, 0x85, 0x42, 0x47, - 0xa, 0x4, 0x50, 0x3d, 0x85, 0x7c, 0x6e, 0x43, 0x45, 0xd6, - 0xaf, 0x3c, 0x4c, 0xfa, 0x7e, 0x6c, 0xf8, 0xfe, 0x1d, 0xa0, - 0xea, 0x4e, 0x78, 0xa9, 0xef, 0xfa, 0xbd, 0xcb, 0x54, 0x51, - 0x45, 0x7d, 0xd9, 0xf7, 0x61, 0x45, 0x14, 0x50, 0x1, 0x5f, - 0x98, 0xbf, 0xf0, 0x5b, 0x2f, 0x1d, 0xdc, 0x5a, 0xf8, 0x77, - 0xe1, 0xaf, 0x83, 0x62, 0x25, 0x6d, 0xaf, 0x6e, 0x6e, 0xb5, - 0x59, 0xf0, 0x48, 0xc9, 0x89, 0x52, 0x34, 0x7, 0xd4, 0x7e, - 0xf9, 0xcf, 0xe1, 0x5f, 0xa7, 0x55, 0xf9, 0xe5, 0xff, 00, - 0x5, 0x88, 0xf8, 0x15, 0xab, 0x78, 0xf7, 0xe1, 0x97, 0x86, - 0x3c, 0x79, 0xa2, 0x59, 0xcd, 0x7f, 0x2f, 0x85, 0xa6, 0x9a, - 0x2b, 0xf8, 0x60, 0x42, 0xcc, 0x96, 0x93, 0x5, 0x26, 0x5c, - 0xe, 0x70, 0x8f, 0x1a, 0xe7, 0xd0, 0x31, 0x3d, 0xa8, 0x13, - 0xd8, 0xf8, 0x57, 0xfe, 0x9, 0xbb, 0xf1, 0x4b, 0xc1, 0xff, - 00, 0x8, 0x7f, 0x6a, 0x4d, 0x1f, 0x5d, 0xf1, 0xb5, 0xec, - 0x1a, 0x5e, 0x92, 0xf6, 0x37, 0x36, 0x91, 0xea, 0x17, 0x23, - 0xf7, 0x56, 0xd3, 0xc8, 0xa0, 0x23, 0xb1, 0xfe, 0x10, 0x40, - 0x65, 0xdd, 0xdb, 0x77, 0x3c, 0x57, 0xe8, 0x87, 0xfc, 0x15, - 0x1f, 0xf6, 0x8d, 0xd2, 0x7c, 0x31, 0xfb, 0x2e, 0x36, 0x8b, - 0xe1, 0xed, 0x62, 0xcf, 0x51, 0xbb, 0xf1, 0xb4, 0xc2, 0xc2, - 0x29, 0x6c, 0xae, 0x16, 0x55, 0xfb, 0x2a, 0xe1, 0xe7, 0x70, - 0x54, 0x91, 0x82, 0x36, 0xa7, 0xfd, 0xb4, 0xaf, 0xc4, 0xea, - 0x37, 0x12, 00, 0xc9, 0xc0, 0xe8, 0x2a, 0xac, 0x45, 0xcf, - 0xb5, 0x7f, 0xe0, 0x94, 0x9f, 0xc, 0xb4, 0xcf, 0x13, 0xfe, - 0xd0, 0x57, 0x3e, 0x35, 0xd7, 0xee, 0x6d, 0xac, 0xf4, 0x4f, - 0x5, 0x59, 0x1b, 0xe3, 0x3d, 0xe4, 0x8b, 0x1c, 0x42, 0xe6, - 0x4c, 0xa4, 0x59, 0x66, 0xc0, 0xe0, 0x79, 0x8d, 0xf5, 0x51, - 0x5e, 0xd9, 0xff, 00, 0x5, 0x2f, 0xff, 00, 0x82, 0x80, - 0xf8, 0x77, 0xc6, 0x7e, 0x11, 0xbb, 0xf8, 0x4f, 0xf0, 0xd7, - 0x53, 0x8f, 0x59, 0xb6, 0xbe, 0x64, 0x3a, 0xd6, 0xbd, 0x65, - 0x29, 0x30, 0x6c, 0x56, 0xd, 0xf6, 0x78, 0x98, 0x7d, 0xfc, - 0x90, 0x37, 0x30, 0xf9, 0x71, 0xc7, 0x39, 0x38, 0xfc, 0xc0, - 0x12, 0xba, 0xc6, 0xd1, 0x87, 0x61, 0x1b, 0x10, 0x59, 0x1, - 0xe0, 0x91, 0xd3, 0x22, 0xbd, 0x33, 0xe0, 0x1f, 0xec, 0xe5, - 0xe3, 0x9f, 0xda, 0x43, 0xc6, 0x50, 0x78, 0x7f, 0xc1, 0xba, - 0x4c, 0x97, 0x44, 0xb7, 0xfa, 0x4e, 0xa3, 0x2a, 0x95, 0xb4, - 0xb3, 0x4e, 0xed, 0x2c, 0x98, 0xc0, 0xf6, 0x1d, 0x4f, 0x60, - 0x68, 0xb, 0xf4, 0x3b, 0xbf, 0xd8, 0x3f, 0xf6, 0x70, 0x9f, - 0xf6, 0x92, 0xf8, 0xff, 00, 0xa3, 0x69, 0x33, 0xc2, 0xe7, - 0xc3, 0x7a, 0x53, 0x2e, 0xa7, 0xac, 0x4e, 0x17, 0x2a, 0x21, - 0x46, 0x5, 0x62, 0xcf, 0x4c, 0xc8, 0xd8, 0x5c, 0x7a, 0x16, - 0x3d, 0xab, 0xfa, 0xd, 0x44, 0x58, 0x91, 0x51, 0x14, 0x2a, - 0xa8, 0xc0, 0x3, 0xa0, 0x15, 0xe2, 0xff, 00, 0xb2, 0x8f, - 0xec, 0xb7, 0xe1, 0xaf, 0xd9, 0x53, 0xe1, 0xa4, 0x3e, 0x1b, - 0xd1, 0x7f, 0xd3, 0x35, 0x3b, 0x82, 0x27, 0xd5, 0x75, 0x67, - 0x5c, 0x49, 0x79, 0x3e, 0x31, 0x9f, 0x64, 0x1d, 0x15, 0x7b, - 0xf, 0x72, 0x4d, 0x7b, 0x43, 0xba, 0xc6, 0x8c, 0xec, 0x42, - 0xaa, 0x8c, 0x92, 0x7b, 0xa, 0x96, 0xcb, 0x4a, 0xc7, 0x81, - 0xfe, 0xd2, 0x9e, 0x23, 0x13, 0x5e, 0xe9, 0x9a, 0x24, 0x6f, - 0x91, 0x8, 0x37, 0x33, 0x1, 0xfd, 0xe3, 0xc2, 0x8f, 0xcb, - 0x77, 0xe7, 0x5e, 0x25, 0x5b, 0xbe, 0x39, 0xd7, 0xcf, 0x8a, - 0x3c, 0x5b, 0xaa, 0x6a, 0x79, 0x26, 0x39, 0xa6, 0x3e, 0x5e, - 0x7f, 0xb8, 0x3e, 0x55, 0xfd, 00, 0xac, 0x2a, 0xfc, 0x4b, - 0x33, 0xc4, 0xfd, 0x6f, 0x17, 0x52, 0xaf, 0x4b, 0xe9, 0xe8, - 0xb4, 0x47, 0xc9, 0x62, 0x2a, 0x7b, 0x5a, 0xb2, 0x90, 0x51, - 0x45, 0x15, 0xe6, 0x18, 0x16, 0xec, 0x74, 0x8b, 0xed, 0x50, - 0x39, 0xb3, 0xb2, 0xb8, 0xbb, 0x9, 0x8d, 0xde, 0x44, 0x4c, - 0xfb, 0x73, 0xd3, 0x38, 0x1c, 0x54, 0xd2, 0x78, 0x6f, 0x57, - 0x88, 0x65, 0xf4, 0xab, 0xd4, 0x1e, 0xad, 0x6c, 0xe3, 0xfa, - 0x57, 0xd2, 0x1f, 00, 0x74, 0xf, 0xec, 0x8f, 0x2, 0x47, - 0x74, 0xe9, 0xb6, 0x6d, 0x42, 0x56, 0x9c, 0x92, 0x39, 0xd8, - 0x3e, 0x55, 0xfd, 0x1, 0x3f, 0x8d, 0x7a, 0x55, 0x7d, 0xd6, - 0x13, 0x86, 0xa3, 0x88, 0xc3, 0xc2, 0xac, 0xea, 0x34, 0xe4, - 0xaf, 0x6b, 0x77, 0x3d, 0x8a, 0x58, 0x5, 0x38, 0x29, 0x39, - 0x5a, 0xe7, 0xc3, 0x12, 0xc1, 0x2c, 0x7, 0x12, 0xc6, 0xf1, - 0x9f, 0x47, 0x52, 0x2a, 0x3a, 0xfb, 0x96, 0xe2, 0xce, 0xde, - 0xed, 0xa, 0x4f, 0x4, 0x73, 0x21, 0xfe, 0x19, 0x10, 0x30, - 0xfd, 0x6b, 0x8c, 0xf1, 0x3f, 0xc1, 0xaf, 0xc, 0xf8, 0x8e, - 0xde, 0x40, 0x96, 0x11, 0xe9, 0xb7, 0x44, 0x1d, 0xb7, 0x16, - 0x6a, 0x10, 0x83, 0xee, 0xa3, 0x83, 0xf9, 0x54, 0xd6, 0xe1, - 0x6a, 0xb1, 0x57, 0xa3, 0x51, 0x3f, 0x26, 0xad, 0xfe, 0x62, - 0x9e, 0x5d, 0x24, 0xbd, 0xd9, 0x5c, 0xf9, 0x36, 0x8a, 0xd4, - 0xf1, 0x3f, 0x87, 0xae, 0x7c, 0x2b, 0xaf, 0x5e, 0x69, 0x57, - 0x78, 0x33, 0x5b, 0x3e, 0xd2, 0xcb, 0xd1, 0x81, 0x19, 0xc, - 0x3e, 0xa0, 0x83, 0x59, 0x75, 0xf1, 0x53, 0x84, 0xa9, 0xc9, - 0xc2, 0x4a, 0xcd, 0x68, 0x79, 0x2d, 0x34, 0xec, 0xc2, 0x8a, - 0x28, 0xa8, 0x11, 0xe9, 0xbf, 00, 0x3c, 0x49, 0x36, 0x93, - 0xe3, 0x68, 0xf4, 0xed, 0xc7, 0xec, 0xba, 0x8a, 0x32, 0x32, - 0x76, 0xe, 0xa0, 0xb2, 0x9f, 0xd0, 0x8f, 0xc6, 0xbe, 0x9e, - 0xaf, 0x92, 0xbe, 0xb, 0xda, 0x3d, 0xdf, 0xc4, 0xad, 0x1b, - 0x68, 0x24, 0x46, 0xcf, 0x23, 0x11, 0xd8, 0x4, 0x6f, 0xfe, - 0xb5, 0x7d, 0x6b, 0x5f, 0xa9, 0xf0, 0xcc, 0xe7, 0x2c, 0x13, - 0x52, 0xd9, 0x49, 0xdb, 0xee, 0x4c, 0xfa, 0x2c, 0xbd, 0xb7, - 0x49, 0xa7, 0xdc, 0xa5, 0xad, 0xea, 0x71, 0xe8, 0xda, 0x3d, - 0xed, 0xfc, 0xa7, 0x11, 0xdb, 0x42, 0xf2, 0x9c, 0xff, 00, - 0xb2, 0x9, 0xaf, 0x89, 0xae, 0xae, 0x64, 0xbd, 0xb9, 0x9a, - 0xe2, 0x56, 0xdd, 0x2c, 0xae, 0x64, 0x76, 0xf5, 0x24, 0xe4, - 0xd7, 0xda, 0x3e, 0x28, 0xf0, 0xf4, 0x3e, 0x2a, 0xd0, 0xee, - 0x74, 0xbb, 0x89, 0xa6, 0x82, 0xb, 0x80, 0x3, 0xbc, 0x4, - 0x6, 0xc0, 0x20, 0xe3, 0x90, 0x7d, 0x2b, 0xcd, 0xa4, 0xfd, - 0x9a, 0xb4, 0x16, 0xfb, 0x9a, 0x9e, 0xa0, 0xbf, 0x52, 0x87, - 0xff, 00, 0x65, 0xa8, 0xcf, 0x72, 0xfc, 0x5e, 0x61, 0x28, - 0x2a, 0x9, 0x72, 0xc6, 0xfd, 0x7a, 0xb1, 0x63, 0x28, 0x55, - 0xac, 0xd7, 0x22, 0xd1, 0x1f, 0x39, 0x51, 0x5f, 0x42, 0x49, - 0xfb, 0x33, 0x69, 0x87, 0xee, 0x6b, 0x57, 0x6b, 0xfe, 0xf4, - 0x6a, 0x6a, 0xb4, 0x9f, 0xb3, 0x1c, 0x7, 0xee, 0x6b, 0xf2, - 0xf, 0xf7, 0xad, 0x81, 0xff, 00, 0xd9, 0xab, 0xe4, 0x9f, - 0xf, 0xe6, 0x2b, 0xec, 0x7e, 0x2b, 0xfc, 0xcf, 0x33, 0xea, - 0x55, 0xfb, 0x7e, 0x27, 0x82, 0x51, 0x5e, 0x9b, 0xf1, 0x17, - 0xe0, 0xd2, 0x78, 0x3, 0x42, 0x1a, 0x8b, 0x6b, 0x3f, 0x6b, - 0x2f, 0x32, 0xc2, 0x90, 0xfd, 0x9f, 0x61, 0x62, 0x72, 0x7a, - 0xee, 0x3d, 00, 0x3d, 0xab, 0xcc, 0xab, 0xc7, 0xc4, 0xe1, - 0x6b, 0x60, 0xea, 0x7b, 0x2a, 0xca, 0xcf, 0xe4, 0xff, 00, - 0x23, 0x96, 0xa5, 0x39, 0x52, 0x97, 0x2c, 0xd6, 0xa1, 0x45, - 0x14, 0x57, 0x21, 0x98, 0x51, 0x45, 0x7a, 0x44, 0x1f, 00, - 0x7c, 0x55, 0x73, 0x6b, 0xd, 0xc4, 0x6b, 0x66, 0x56, 0x54, - 0x59, 0x2, 0x99, 0xc8, 0x20, 0x11, 0x9c, 0x1e, 0x3a, 0xd7, - 0x55, 0xc, 0x2d, 0x7c, 0x4d, 0xfd, 0x8c, 0x1c, 0xad, 0xbd, - 0x8d, 0x21, 0x4e, 0x75, 0x3e, 0x5, 0x73, 0xcd, 0xe8, 0xaf, - 0x46, 0x93, 0xe0, 0xf, 0x8c, 0x13, 0xa5, 0xa5, 0xb3, 0xff, - 00, 0xbb, 0x72, 0xb5, 0x56, 0x5f, 0x81, 0xfe, 0x32, 0x8b, - 0xa6, 0x94, 0x1f, 0xfd, 0xcb, 0x88, 0xff, 00, 0xf8, 0xaa, - 0xe8, 0x79, 0x6e, 0x35, 0x6f, 0x46, 0x5f, 0x73, 0x2f, 0xd8, - 0x55, 0x5f, 0x65, 0xfd, 0xc7, 0x7, 0x5e, 0xd3, 0xfb, 0x34, - 0x69, 0x3e, 0x6e, 0xaf, 0xab, 0xea, 0x4c, 0xbc, 0x43, 0xa, - 0xc0, 0x8d, 0xee, 0xc7, 0x27, 0xf4, 0x51, 0xf9, 0xd7, 0x12, - 0xff, 00, 0x7, 0x3c, 0x64, 0x9d, 0x74, 0x29, 0x8f, 0xfb, - 0xb2, 0x46, 0x7f, 0xf6, 0x6a, 0xf7, 0x9f, 0x82, 0x9e, 0x12, - 0xb9, 0xf0, 0x9f, 0x83, 0x84, 0x77, 0xd0, 0x1b, 0x6b, 0xeb, - 0x89, 0x9e, 0x59, 0x63, 0x6e, 0xab, 0xfc, 0x2a, 0xf, 0xe0, - 0x33, 0xf8, 0xd7, 0xb7, 0x91, 0xe0, 0x2b, 0xac, 0x74, 0x67, - 0x56, 0xd, 0x28, 0xdd, 0xea, 0x9a, 0xf2, 0xfd, 0x4e, 0xbc, - 0x1d, 0x19, 0xfb, 0x64, 0xe4, 0xad, 0x63, 0xbf, 0xa2, 0x8a, - 0xf3, 0x4f, 0x8a, 0xff, 00, 0x17, 0xa0, 0xf0, 0x54, 0x6d, - 0xa7, 0x69, 0xfb, 0x6e, 0x35, 0xa7, 0x5c, 0xf3, 0xca, 0x40, - 0xf, 0x76, 0xf5, 0x3e, 0x83, 0xf3, 0xf7, 0xfd, 0x27, 0x13, - 0x89, 0xa5, 0x84, 0xa4, 0xea, 0xd6, 0x76, 0x48, 0xf7, 0xea, - 0x54, 0x8d, 0x28, 0xf3, 0x49, 0xe8, 0x74, 0xde, 0x33, 0xf8, - 0x83, 0xa3, 0xf8, 0x1a, 0xd3, 0xcc, 0xd4, 0x2e, 0x33, 0x70, - 0xcb, 0x98, 0xad, 0x63, 0xe6, 0x59, 0x3e, 0x83, 0xb0, 0xf7, - 0x3c, 0x57, 0xcf, 0xde, 0x32, 0xf8, 0xe3, 0xaf, 0xf8, 0xa3, - 0x7c, 0x36, 0xaf, 0xfd, 0x91, 0x62, 0x4f, 0xfa, 0xbb, 0x66, - 0x3e, 0x63, 0xf, 0xf6, 0x9f, 0xaf, 0xe5, 0x8a, 0xe1, 0x35, - 0x3d, 0x4e, 0xef, 0x59, 0xbd, 0x96, 0xf2, 0xfa, 0xe2, 0x4b, - 0xab, 0x99, 0x4e, 0x5e, 0x49, 0xe, 0x49, 0xff, 00, 0x3e, - 0x95, 0x56, 0xbf, 0x2f, 0xcc, 0x33, 0xec, 0x46, 0x31, 0xb8, - 0x53, 0x7c, 0x90, 0xec, 0xb7, 0x7e, 0xac, 0xf9, 0xda, 0xf8, - 0xca, 0x95, 0x74, 0x8e, 0x88, 0x57, 0x76, 0x91, 0x8b, 0x33, - 0x16, 0x62, 0x72, 0x49, 0x39, 0x26, 0x92, 0x8a, 0x2b, 0xe6, - 0x4e, 00, 0xa2, 0x8a, 0x96, 0xde, 0xd2, 0x7b, 0xc7, 0xd9, - 0x4, 0x32, 0x4e, 0xdf, 0xdd, 0x8d, 0xb, 0x1f, 0xd2, 0x9a, - 0x4d, 0xbb, 0x20, 0x22, 0xa2, 0xb5, 0x47, 0x84, 0xb5, 0xc2, - 0x32, 0x34, 0x5d, 0x47, 0x1e, 0xbf, 0x64, 0x93, 0xfc, 0x2a, - 0x95, 0xd6, 0x9f, 0x75, 0x62, 0x71, 0x73, 0x6d, 0x35, 0xb9, - 0xf4, 0x96, 0x32, 0xbf, 0xce, 0xae, 0x54, 0xe7, 0x15, 0x79, - 0x45, 0xaf, 0x90, 0xdc, 0x5a, 0xdd, 0x15, 0xe8, 0xa2, 0x8a, - 0xcc, 0x41, 0x57, 0x34, 0xad, 0x66, 0xfb, 0x43, 0xba, 0x5b, - 0x9d, 0x3e, 0xee, 0x6b, 0x39, 0xd4, 0xe7, 0x7c, 0x2e, 0x57, - 0x3f, 0x5f, 0x5f, 0xa1, 0xaa, 0x74, 0x55, 0x46, 0x4e, 0x2f, - 0x9a, 0x2e, 0xcc, 0x13, 0x6b, 0x54, 0x7b, 0xef, 0xc3, 0xef, - 0xda, 0x9, 0x2e, 0xe5, 0x8e, 0xc7, 0xc4, 0xc1, 0x20, 0x73, - 0x85, 0x5b, 0xf8, 0xc6, 0x14, 0x9f, 0xf6, 0xc7, 0x6f, 0xa8, - 0xe3, 0xd8, 0x57, 0xb6, 0x47, 0x22, 0x4d, 0x1a, 0xc9, 0x1b, - 0x7, 0x46, 0x19, 0x56, 0x53, 0x90, 0x47, 0xa8, 0x35, 0xf0, - 0xb5, 0x7a, 0xc7, 0xc1, 0x9f, 0x8b, 0x12, 0x78, 0x76, 0xf2, - 0x1d, 0x17, 0x55, 0x98, 0xbe, 0x93, 0x2b, 0x6d, 0x8a, 0x47, - 0x3f, 0xf1, 0xee, 0xc7, 0xa7, 0x3f, 0xdd, 0x3f, 0xa7, 0xe7, - 0x5f, 0x77, 0x94, 0x67, 0xf2, 0xe6, 0x58, 0x7c, 0x63, 0xba, - 0x7b, 0x4b, 0xfc, 0xff, 00, 0xcf, 0xef, 0x3d, 0x9c, 0x2e, - 0x35, 0xdd, 0x42, 0xaf, 0xde, 0x7d, 0x27, 0x45, 0x20, 0x20, - 0x8c, 0x8e, 0x41, 0xa5, 0xaf, 0xd0, 0xcf, 0x70, 0x28, 0xa2, - 0xaa, 0xea, 0x7a, 0x9d, 0xb6, 0x8d, 0xa7, 0xcf, 0x7b, 0x79, - 0x32, 0xc1, 0x6d, 0x2, 0x17, 0x92, 0x46, 0xe8, 00, 0xa4, - 0xda, 0x8a, 0xbb, 0xd8, 0x4d, 0xdb, 0x56, 0x59, 0x66, 0x8, - 0xa5, 0x98, 0x80, 0x7, 0x24, 0x9e, 0xd5, 0xe6, 0xfe, 0x30, - 0xf8, 0xed, 0xa0, 0x78, 0x6f, 0x7c, 0x36, 0x4d, 0xfd, 0xb1, - 0x7a, 0x38, 0xd9, 0x6e, 0xd8, 0x8d, 0x4f, 0xbb, 0xf4, 0xfc, - 0xb3, 0x5e, 0x45, 0xf1, 0x27, 0xe3, 0x16, 0xa1, 0xe3, 0x29, - 0xe5, 0xb4, 0xb1, 0x79, 0x2c, 0x34, 0x60, 0x70, 0x22, 0x53, - 0x87, 0x98, 0x7a, 0xb9, 0x1d, 0xbf, 0xd9, 0xe9, 0xf5, 0xaf, - 0x3a, 0xaf, 0x80, 0xcc, 0x78, 0x95, 0xa6, 0xe9, 0xe0, 0xd7, - 0xfd, 0xbc, 0xff, 00, 0x45, 0xfe, 0x7f, 0x71, 0xe2, 0xd7, - 0xc7, 0xbb, 0xf2, 0xd2, 0xfb, 0xcf, 0x47, 0xf1, 0x7, 0xc7, - 0xbf, 0x14, 0x6b, 0x3b, 0x92, 0xda, 0x68, 0xb4, 0xa8, 0x4f, - 0xf0, 0xda, 0xaf, 0xcd, 0xff, 00, 0x7d, 0x36, 0x4f, 0xe5, - 0x8a, 0xe1, 0x6f, 0xf5, 0xad, 0x43, 0x54, 0x62, 0xd7, 0x97, - 0xd7, 0x37, 0x64, 0xf7, 0x9a, 0x56, 0x7f, 0xe6, 0x6a, 0x95, - 0x15, 0xf1, 0x75, 0xf1, 0x98, 0x8c, 0x4b, 0xbd, 0x69, 0xb7, - 0xf3, 0xfd, 0xf, 0x26, 0x75, 0x67, 0x53, 0xe2, 0x77, 0xa, - 0x28, 0xa2, 0xb8, 0xcc, 0xc2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, - 0x28, 0xa0, 0xb, 0x76, 0x7a, 0xbd, 0xf6, 0x9c, 0xc1, 0xad, - 0x6f, 0x6e, 0x2d, 0x88, 0xef, 0xc, 0xac, 0x9f, 0xc8, 0xd7, - 0x5b, 0xa2, 0x7c, 0x68, 0xf1, 0x6e, 0x8a, 0x55, 0x57, 0x53, - 0x6b, 0xd8, 0xc7, 0x1e, 0x5d, 0xe2, 0x89, 0x33, 0xf8, 0xfd, - 0xef, 0xd6, 0xb8, 0x7a, 0xdb, 0xf0, 0x4e, 0x96, 0x75, 0xaf, - 0x17, 0x68, 0xf6, 0x41, 0x77, 0x9, 0x6e, 0xa3, 0xc, 0x3f, - 0xd9, 0x7, 0x2d, 0xfa, 0x3, 0x5d, 0xd8, 0x6a, 0xf8, 0x88, - 0x54, 0x8c, 0x68, 0xcd, 0xa6, 0xdd, 0xb4, 0x66, 0xb4, 0xe7, - 0x35, 0x24, 0xa0, 0xec, 0x7d, 0x8d, 0xa5, 0xcb, 0x71, 0x3e, - 0x9b, 0x6b, 0x25, 0xda, 0xaa, 0x5d, 0x3c, 0x4a, 0xd2, 0xaa, - 0xc, 00, 0xc4, 0xc, 0x81, 0xf8, 0xd5, 0x9c, 0x73, 0x9a, - 0x5a, 0x2b, 0xf7, 0x14, 0xac, 0x92, 0x3e, 0xbd, 0x5, 0x14, - 0x51, 0x4c, 0x61, 0x58, 0xfe, 0x2e, 0x97, 0xca, 0xf0, 0xed, - 0xeb, 0x74, 0xf9, 0xd, 0x6c, 0x57, 0x33, 0xf1, 0x12, 0x6f, - 0x27, 0xc2, 0xb7, 0x7d, 0xb2, 0x31, 0x58, 0xd6, 0x7c, 0xb4, - 0xe4, 0xfc, 0x8c, 0xea, 0x3b, 0x41, 0xb3, 0xe1, 0x4f, 0x88, - 0x13, 0x79, 0xde, 0x22, 0xbb, 0x6f, 0xf6, 0x8d, 0x78, 0x7, - 0xc6, 0x8b, 0x8f, 0x2f, 0x47, 0x9b, 0x9f, 0xe1, 0x35, 0xee, - 0x5e, 0x2e, 0x97, 0xcd, 0xd6, 0x6f, 0x1b, 0xfd, 0xb3, 0x5f, - 0x3c, 0x7c, 0x78, 0xb9, 0xf2, 0xb4, 0x6b, 0x9f, 0x68, 0xcf, - 0xf2, 0xaf, 0xcd, 0xb2, 0xc5, 0xcd, 0x5e, 0xfe, 0xa7, 0xe2, - 0x18, 0xbf, 0xde, 0xe3, 0xe9, 0xc7, 0xbc, 0xd7, 0xe6, 0x7e, - 0x94, 0xfc, 0xc, 0xf0, 0x98, 0x5f, 0x82, 0x7f, 0xf, 0x84, - 0x90, 0xb0, 0x90, 0x78, 0x7b, 0x4f, 0xd, 0x91, 0xce, 0x7e, - 0xcd, 0x1e, 0x68, 0xaf, 0x59, 0xf8, 0x75, 0x66, 0x2c, 0xfe, - 0x1f, 0x78, 0x62, 0xdc, 0xc6, 0x10, 0xc5, 0xa5, 0xda, 0xc7, - 0xb7, 0x1d, 0x31, 0x12, 0x8c, 0x51, 0x5f, 0xa6, 0x24, 0x7e, - 0xe0, 0xa3, 0xa1, 0xd1, 0xd1, 0x45, 0x15, 0x65, 0x85, 0x14, - 0x51, 0x40, 0x5, 0x7c, 0x4d, 0xfb, 0x4b, 0xf8, 0xc4, 0xf8, - 0xa3, 0xe2, 0x65, 0xcd, 0xac, 0x6e, 0x1a, 0xd3, 0x49, 0x51, - 0x69, 0x1e, 0x31, 0x8d, 0xfd, 0x5c, 0xe4, 0x7b, 0x9c, 0x7e, - 0x15, 0xf5, 0xdf, 0x8e, 0xfc, 0x51, 0xf, 0x82, 0xfc, 0x21, - 0xaa, 0xeb, 0x33, 0x9f, 0x96, 0xd2, 0x6, 0x75, 0x5c, 0xe3, - 0x73, 0xe3, 0xa, 0xa3, 0xdc, 0x9c, 0x57, 0xe7, 0x9b, 0xcb, - 0x3e, 0xa5, 0x7a, 0xf3, 0x4c, 0xc6, 0x5b, 0x9b, 0x89, 0xb, - 0xbb, 0x1e, 0xac, 0xcc, 0x72, 0x4f, 0xe6, 0x6b, 0xe4, 0x78, - 0x83, 0x13, 0xcb, 0x4e, 0x34, 0x17, 0x5d, 0x5f, 0xa2, 0x3e, - 0x33, 0x88, 0xf1, 0x36, 0x84, 0x30, 0xd1, 0xde, 0x5a, 0xbf, - 0x45, 0xb7, 0xe3, 0xf9, 0x1e, 0xfb, 0xfb, 0x27, 0x78, 0x3f, - 0xed, 0xba, 0xdd, 0xe6, 0xb5, 0x32, 0xe6, 0x3b, 0x65, 0xdb, - 0x1e, 0x47, 0xf1, 0x1a, 0xfa, 0xb6, 0xbc, 0xff, 00, 0xe0, - 0x77, 0x85, 0x7, 0x85, 0x7e, 0x1f, 0xe9, 0xf1, 0x32, 0x6d, - 0x9e, 0x75, 0xf3, 0xa4, 0xfa, 0x9a, 0xf4, 0xa, 0xf5, 0xf2, - 0xac, 0x3f, 0xd5, 0xb0, 0x90, 0x8b, 0xdd, 0xea, 0xfe, 0x67, - 0xd0, 0x65, 0xb8, 0x7f, 0xaa, 0xe1, 0x61, 0xe, 0xbb, 0xbf, - 0x98, 0x51, 0x45, 0x15, 0xeb, 0x9e, 0x98, 0x51, 0x45, 0x14, - 00, 0x53, 0x26, 0x86, 0x3b, 0x98, 0x64, 0x86, 0x68, 0xd6, - 0x58, 0xa4, 0x52, 0xae, 0x8e, 0x32, 0xac, 0xf, 0x4, 0x11, - 0xdc, 0x56, 0x5f, 0x8a, 0xfc, 0x5b, 0xa3, 0x78, 0x1b, 0xc3, - 0xf7, 0xba, 0xe7, 0x88, 0x35, 0x3b, 0x5d, 0x1f, 0x48, 0xb2, - 0x8c, 0xcb, 0x71, 0x7b, 0x79, 0x20, 0x8e, 0x38, 0xd4, 0x77, - 0x24, 0xd7, 0xe7, 0xf7, 0xc6, 0xdf, 0xf8, 0x2c, 0x9f, 0x82, - 0xfc, 0x31, 0x3c, 0xd6, 0x1f, 0xd, 0xbc, 0x39, 0x73, 0xe3, - 0xb, 0x84, 0x3b, 0x7f, 0xb4, 0xb5, 0x16, 0x36, 0x96, 0x9f, - 0x55, 0x5c, 0x19, 0x1f, 0xf1, 0xb, 0x40, 0x1e, 0x85, 0xf1, - 0x93, 0xfe, 0x9, 0x37, 0xf0, 0x6b, 0xe2, 0x76, 0xa3, 0x73, - 0xa9, 0xe8, 0x9f, 0xda, 0x3e, 0x3, 0xd4, 0x6e, 0x1c, 0xc9, - 0x20, 0xd2, 0x1d, 0x5e, 0xd4, 0xb1, 0xeb, 0xfb, 0x97, 0x4, - 0x2f, 0xd1, 0xa, 0x8a, 0xf0, 0xd9, 0xbf, 0xe0, 0x88, 0xb0, - 0xfd, 0xb3, 0x31, 0x7c, 0x58, 0x90, 0x5a, 0x67, 0xa3, 0xe8, - 0xa0, 0xc9, 0x8f, 0xa8, 0x9b, 0x15, 0xe2, 0x1a, 0xa7, 0xfc, - 0x16, 0xf, 0xe3, 0xc5, 0xf4, 0xcc, 0xd6, 0xd0, 0x78, 0x57, - 0x4e, 0x8c, 0xfd, 0xd4, 0x87, 0x4c, 0x76, 0xc7, 0xe2, 0xf2, - 0xb6, 0x6b, 0xed, 0xf, 0xf8, 0x26, 0xc7, 0xed, 0x35, 0xf1, - 0x77, 0xf6, 0xa3, 0x93, 0xc5, 0xba, 0xcf, 0x8e, 0x2e, 0xb4, - 0xb6, 0xf0, 0xde, 0x91, 0xe5, 0x5a, 0x5b, 0x8b, 0x1b, 0x11, - 0xb, 0xcb, 0x74, 0xff, 00, 0x33, 0x65, 0xb2, 0x78, 0x54, - 0x3, 0x81, 0xfd, 0xf1, 0x4f, 0x52, 0x74, 0x65, 0xf, 0x87, - 0x1f, 0xf0, 0x47, 0x3f, 0x84, 0x5e, 0x16, 0xb8, 0x4b, 0x8f, - 0x13, 0xeb, 0x1a, 0xef, 0x8c, 0xa4, 0x52, 0xf, 0x91, 0x2c, - 0xab, 0x67, 0x6e, 0x48, 0xf5, 0x58, 0xfe, 0x7f, 0xfc, 0x7e, - 0xbe, 0xd5, 0xf0, 0x27, 0xc3, 0xef, 0xd, 0xfc, 0x31, 0xf0, - 0xe5, 0xb6, 0x81, 0xe1, 0x4d, 0x12, 0xcb, 0x40, 0xd1, 0xed, - 0x86, 0x23, 0xb4, 0xb1, 0x88, 0x46, 0x83, 0xd4, 0x9c, 0x75, - 0x27, 0xb9, 0x39, 0x26, 0xbc, 0x43, 0xc5, 0x7f, 0xf0, 0x50, - 0xef, 0x80, 0xbe, 0x6, 0xf1, 0x76, 0xaf, 0xe1, 0x8d, 0x7b, - 0xc6, 0xaf, 0xa6, 0x6b, 0x5a, 0x55, 0xd4, 0x96, 0x77, 0x96, - 0xd2, 0xe9, 0x77, 0x67, 0xcb, 0x95, 0x1b, 0x6b, 0xd, 0xc2, - 0x22, 0xa7, 0x91, 0xd4, 0x1c, 0x1a, 0xf5, 0xbf, 0x84, 0xbf, - 0x19, 0xbc, 0x1d, 0xf1, 0xcf, 0xc2, 0xed, 0xe2, 0x2f, 0x3, - 0xeb, 0x51, 0xeb, 0xba, 0x3a, 0xdc, 0x35, 0xab, 0x5c, 0xc7, - 0x1b, 0xc6, 0x4, 0x8a, 0x1, 0x65, 0xc3, 0xa8, 0x3c, 0x6, - 0x1d, 0xbb, 0xd2, 0x19, 0xda, 0xd7, 0x11, 0xf1, 0x93, 0xc4, - 0x43, 0xc3, 0xbe, 0x1, 0xd4, 0x59, 0x5f, 0x6c, 0xf7, 0x4b, - 0xf6, 0x58, 0xb9, 0xe7, 0x2f, 0xc1, 0xfc, 0x97, 0x71, 0xae, - 0xde, 0xbe, 0x76, 0xfd, 0xa4, 0x7c, 0x43, 0xf6, 0xcd, 0x7e, - 0xc3, 0x48, 0x8d, 0xf2, 0x96, 0x91, 0x19, 0x64, 0x3, 0xfb, - 0xef, 0xd3, 0xf2, 00, 0x7e, 0x75, 0xe2, 0xe7, 0x18, 0x9f, - 0xaa, 0xe0, 0xa7, 0x35, 0xbb, 0xd1, 0x7a, 0xbf, 0xea, 0xe7, - 0x2e, 0x2a, 0xa7, 0xb3, 0xa4, 0xdf, 0xc8, 0xf1, 0xda, 0x28, - 0xa2, 0xbf, 0x19, 0x3e, 0x54, 0x2a, 0xe6, 0x8f, 0xa6, 0x49, - 0xac, 0xea, 0xd6, 0x76, 0x10, 0x82, 0x65, 0xb9, 0x99, 0x22, - 0x5c, 0x76, 0xdc, 0x40, 0xcd, 0x53, 0xaf, 0x44, 0xf8, 0x18, - 0x9a, 0x64, 0x3e, 0x33, 0xfb, 0x7e, 0xa9, 0x79, 0x6d, 0x67, - 0x15, 0x9c, 0x4c, 0xf1, 0x1b, 0x89, 0x42, 0x6, 0x90, 0xfc, - 0xa3, 0x19, 0xeb, 0x80, 0x58, 0xfe, 0x55, 0xd7, 0x84, 0xa2, - 0xb1, 0x18, 0x88, 0x52, 0x6e, 0xc9, 0xbd, 0x7d, 0x3a, 0x9a, - 0x52, 0x8f, 0x3c, 0xd4, 0x59, 0xf4, 0xfe, 0x9f, 0x63, 0x16, - 0x99, 0x61, 0x6f, 0x69, 0x2, 0xec, 0x86, 0x8, 0xd6, 0x24, - 0x51, 0xd8, 0x1, 0x81, 0x56, 0x2b, 0x2a, 0x3f, 0x16, 0x68, - 0x93, 0x7d, 0xcd, 0x5e, 0xc5, 0xff, 00, 0xdd, 0xb9, 0x43, - 0xfd, 0x6a, 0x43, 0xe2, 0x4d, 0x25, 0x46, 0x4e, 0xa9, 0x66, - 0x7, 0xaf, 0x9e, 0x9f, 0xe3, 0x5f, 0xb7, 0xc6, 0xa5, 0x24, - 0xac, 0xa4, 0xad, 0xea, 0x7d, 0x72, 0x94, 0x6d, 0xa3, 0x34, - 0x69, 0x9, 0xa, 0x9, 0x27, 00, 0x72, 0x49, 0xae, 0x5b, - 0x55, 0xf8, 0xa5, 0xe1, 0x5d, 0x1a, 0x36, 0x69, 0xf5, 0xbb, - 0x57, 0x23, 0xf8, 0x20, 0x7f, 0x35, 0xbf, 0x25, 0xcd, 0x78, - 0xf7, 0xc4, 0x9f, 0x8f, 0x12, 0x6b, 0xf6, 0xb2, 0xe9, 0x9a, - 0xa, 0x49, 0x69, 0x67, 0x20, 0x29, 0x2d, 0xd4, 0x9c, 0x49, - 0x22, 0x9e, 0xa1, 0x47, 0xf0, 0x8f, 0x7e, 0xbf, 0x4a, 0xf3, - 0x71, 0x99, 0xb6, 0x13, 0x7, 0x6, 0xe5, 0x34, 0xdf, 0x64, - 0xee, 0xcc, 0x2a, 0xe2, 0x69, 0xd2, 0x57, 0x6e, 0xec, 0xe2, - 0x3e, 0x27, 0x78, 0x82, 0x2f, 0x13, 0xf8, 0xe7, 0x55, 0xbf, - 0x80, 0x83, 0x6e, 0xd2, 0x8, 0xe3, 0x61, 0xfc, 0x4a, 0x80, - 0x28, 0x3f, 0x8e, 0x33, 0xf8, 0xd7, 0x2d, 0x45, 0x15, 0xf8, - 0xed, 0x6a, 0xb2, 0xaf, 0x52, 0x55, 0x65, 0xbc, 0x9b, 0x7f, - 0x79, 0xf2, 0xd2, 0x93, 0x9c, 0x9c, 0x9f, 0x50, 0xa2, 0x8a, - 0xe9, 0x3c, 0x7, 0xe0, 0x6b, 0xdf, 0x1e, 0x6b, 0x69, 0x65, - 0x6a, 0xc, 0x70, 0x2f, 0xcd, 0x3d, 0xc1, 0x1f, 0x2c, 0x49, - 0xfe, 0x27, 0xb0, 0xa5, 0x4a, 0x94, 0xeb, 0xcd, 0x53, 0xa6, - 0xae, 0xd8, 0x46, 0x2e, 0x6d, 0x46, 0x3b, 0x9e, 0xab, 0xfb, - 0x36, 0xf8, 0x58, 0xa4, 0x57, 0xfa, 0xfc, 0xc8, 0x41, 0x7f, - 0xf4, 0x6b, 0x72, 0x47, 0x51, 0xc1, 0x72, 0x3f, 0x1c, 0xf, - 0xc0, 0xd7, 0xb9, 0x55, 0x3d, 0x23, 0x4a, 0xb6, 0xd0, 0xf4, - 0xcb, 0x6b, 0xb, 0x38, 0xc4, 0x56, 0xd6, 0xf1, 0x88, 0xd1, - 0x47, 0xa0, 0xfe, 0xb5, 0x72, 0xbf, 0x6a, 0xcb, 0xf0, 0x8b, - 0x3, 0x86, 0x85, 0x5, 0xba, 0xdf, 0xd7, 0xa9, 0xf5, 0x94, - 0x29, 0x7b, 0x1a, 0x6a, 0x1, 0x45, 0x14, 0x57, 0xa2, 0x6e, - 0x14, 0x51, 0x45, 00, 0x7c, 0xf7, 0xfb, 0x4a, 0xeb, 0xa6, - 0x7d, 0x67, 0x4c, 0xd2, 0x11, 0xbe, 0x4b, 0x78, 0x8d, 0xc3, - 0x8f, 0xf6, 0x98, 0xe0, 0x7e, 0x41, 0x4f, 0xe7, 0x5e, 0x31, - 0x5d, 0x3f, 0xc4, 0xcd, 0x77, 0xfe, 0x12, 0x3f, 0x1c, 0xea, - 0xf7, 0x81, 0xb7, 0x45, 0xe7, 0x18, 0xa3, 0x3f, 0xec, 0x27, - 0xca, 0x3f, 0x96, 0x7f, 0x1a, 0xe6, 0x2b, 0xf1, 0x3c, 0xcf, - 0x11, 0xf5, 0x9c, 0x65, 0x4a, 0x8b, 0x6b, 0xe9, 0xe8, 0xb4, - 0x47, 0xc9, 0x62, 0x27, 0xed, 0x2a, 0xca, 0x41, 0x45, 0x14, - 0x57, 0x96, 0x73, 0x9b, 0x3e, 0xd, 0xd0, 0xcf, 0x89, 0x3c, - 0x55, 0xa5, 0xe9, 0xb8, 0xca, 0xdc, 0x4e, 0xaa, 0xff, 00, - 0xee, 0xe, 0x5b, 0xf4, 0x6, 0xbe, 0xd1, 0x55, 0xa, 0xa0, - 0x1, 0x80, 0x6, 00, 0xaf, 0x9a, 0xff, 00, 0x67, 0x4d, - 0x18, 0xdf, 0x78, 0xce, 0x7b, 0xf6, 0x5c, 0xc7, 0x63, 0x6e, - 0xc4, 0x1f, 0xf6, 0xdf, 0xe5, 0x1f, 0xa6, 0xea, 0xfa, 0x56, - 0xbf, 0x50, 0xe1, 0x8a, 0x1e, 0xcf, 0xb, 0x2a, 0xaf, 0x79, - 0x3f, 0xc1, 0x7f, 0xc1, 0xb9, 0xf4, 0x19, 0x7c, 0x2d, 0x4d, - 0xcb, 0xb8, 0x51, 0x45, 0x15, 0xf6, 0x7, 0xaa, 0x14, 0x51, - 0x55, 0xb5, 0x1d, 0x42, 0xd, 0x2a, 0xc2, 0xe2, 0xf6, 0xe5, - 0xc4, 0x76, 0xf6, 0xf1, 0xb4, 0xb2, 0x39, 0xec, 0xa0, 0x64, - 0xd2, 0x6d, 0x45, 0x5d, 0x83, 0x76, 0xd4, 0xe3, 0x3e, 0x2d, - 0x7c, 0x47, 0x4f, 0x1, 0x68, 0xaa, 0xb6, 0xfb, 0x5f, 0x55, - 0xba, 0x5, 0x60, 0x43, 0xce, 0xc1, 0xdd, 0xc8, 0xf4, 0x1d, - 0xbd, 0x4d, 0x7c, 0xab, 0x73, 0x73, 0x2d, 0xe5, 0xc4, 0xb3, - 0xcf, 0x23, 0x4b, 0x34, 0xac, 0x5d, 0xe4, 0x73, 0x92, 0xc4, - 0xf5, 0x26, 0xb6, 0x3c, 0x6d, 0xe2, 0xa9, 0xfc, 0x65, 0xe2, - 0x4b, 0xcd, 0x52, 0x72, 0x42, 0xc8, 0xdb, 0x62, 0x8c, 0xff, - 00, 0xcb, 0x38, 0xc7, 0xdd, 0x5f, 0xcb, 0xf5, 0x26, 0xb0, - 0xab, 0xf1, 0xdc, 0xdf, 0x32, 0x96, 0x61, 0x5d, 0xb4, 0xfd, - 0xc5, 0xb2, 0xfd, 0x7e, 0x67, 0xcb, 0x62, 0x6b, 0xba, 0xf3, - 0xf2, 0x5b, 0x5, 0x14, 0x51, 0x5e, 0x11, 0xc6, 0x15, 0xa7, - 0xe1, 0xdf, 0xe, 0x6a, 0x1e, 0x2a, 0xd5, 0x22, 0xb0, 0xd3, - 0x6d, 0xda, 0x79, 0xdc, 0xf6, 0xfb, 0xa8, 0x3f, 0xbc, 0xc7, - 0xb0, 0xf7, 0xa8, 0x34, 0x7d, 0x22, 0xeb, 0x5e, 0xd4, 0xed, - 0xb4, 0xfb, 0x28, 0x8c, 0xd7, 0x57, 0xe, 0x11, 0x10, 0x7a, - 0xfb, 0xfb, 0xe, 0xb5, 0xf5, 0xc7, 0xc3, 0xff, 00, 0x1, - 0xd9, 0x78, 0xb, 0x45, 0x5b, 0x4b, 0x71, 0xbe, 0xe6, 0x40, - 0x1a, 0xe6, 0xe0, 0xf5, 0x91, 0xf1, 0xfa, 0x1, 0xd8, 0x57, - 0xbf, 0x94, 0xe5, 0x52, 0xcc, 0xaa, 0x5d, 0xe9, 0x5, 0xbb, - 0xfd, 0x17, 0xf5, 0xa1, 0xdb, 0x86, 0xc3, 0x3a, 0xf2, 0xd7, - 0x64, 0x71, 0xde, 0xf, 0xfd, 0x9f, 0x34, 0x6d, 0x26, 0x28, - 0xe6, 0xd6, 0x98, 0xea, 0xd7, 0x9d, 0x4c, 0x79, 0x2b, 0xa, - 0x9f, 0x4c, 0x75, 0x6f, 0xc7, 0xf2, 0xaf, 0x50, 0xb2, 0xd3, - 0xed, 0x74, 0xd8, 0x16, 0x1b, 0x4b, 0x68, 0xad, 0xa2, 0x51, - 0x80, 0x91, 0x20, 0x50, 0x3f, 0x1, 0x56, 0x28, 0xaf, 0xd5, - 0x30, 0xd8, 0x2c, 0x3e, 0x12, 0x3c, 0xb4, 0x60, 0x97, 0xe7, - 0xf7, 0x9f, 0x45, 0x4e, 0x94, 0x29, 0x2b, 0x41, 0x58, 0x2a, - 0x2b, 0x8b, 0x58, 0x6e, 0xe2, 0x68, 0xe7, 0x89, 0x26, 0x8d, - 0x86, 0xa, 0x48, 0xa1, 0x81, 0xfc, 0xd, 0x4b, 0x45, 0x76, - 0x34, 0x9e, 0x8c, 0xd8, 0xf2, 0xef, 0x1a, 0xfc, 0x5, 0xd1, - 0x75, 0xe8, 0x65, 0x9f, 0x49, 0x51, 0xa4, 0xea, 0x7, 0x2c, - 0x2, 0x67, 0xc9, 0x73, 0xe8, 0x57, 0xb7, 0xd4, 0x7e, 0x46, - 0xbe, 0x72, 0xd6, 0x74, 0x6b, 0xcf, 0xf, 0xea, 0x73, 0xd8, - 0x5f, 0xc0, 0xd6, 0xf7, 0x50, 0xb6, 0xd7, 0x46, 0xfe, 0x63, - 0xd4, 0x1f, 0x5a, 0xfb, 0x7a, 0xbc, 0x83, 0xf6, 0x87, 0xf0, - 0x7c, 0x5a, 0x87, 0x87, 0xd3, 0x5e, 0x89, 0x31, 0x77, 0x64, - 0x55, 0x25, 0x61, 0xfc, 0x51, 0x31, 0xc7, 0x3f, 0x42, 0x47, - 0xe6, 0x6b, 0xe2, 0xf3, 0xcc, 0x9a, 0x94, 0xa8, 0xcb, 0x13, - 0x87, 0x8f, 0x2c, 0xa3, 0xab, 0x4b, 0x66, 0xba, 0xfc, 0xcf, - 0x23, 0x19, 0x85, 0x8b, 0x8b, 0xa9, 0x5, 0x66, 0x8f, 0x9c, - 0xe8, 0xa2, 0x8a, 0xfc, 0xd0, 0xf0, 0x42, 0x8a, 0x28, 0xa0, - 0xf, 0xa8, 0x7e, 0x5, 0x78, 0xd2, 0x4f, 0x14, 0x78, 0x54, - 0xd9, 0xdd, 0x3e, 0xfb, 0xcd, 0x34, 0xac, 0x25, 0x89, 0xe5, - 0xe3, 0xc7, 0xc8, 0x4f, 0xbf, 0x4, 0x7e, 0x15, 0xe9, 0x55, - 0xf2, 0xd7, 0xc0, 0x5d, 0x71, 0xf4, 0x9f, 0x88, 0x16, 0xd6, - 0xfb, 0xb1, 0xd, 0xfa, 0x34, 0xe, 0x3b, 0x67, 0x1b, 0x94, - 0xfe, 0x63, 0x1f, 0x8d, 0x7d, 0x4b, 0x5f, 0xb0, 0x64, 0x58, - 0xb7, 0x8b, 0xc1, 0x45, 0xc9, 0xeb, 0x1d, 0x1f, 0xcb, 0x6f, - 0xc0, 0xfa, 0x7c, 0x1d, 0x47, 0x52, 0x92, 0xbe, 0xeb, 0x40, - 0xaf, 0x9c, 0x7e, 0x3f, 0xf8, 0xf1, 0xf5, 0x6d, 0x67, 0xfb, - 0x2, 0xd2, 0x42, 0x2c, 0xac, 0x88, 0x33, 0xed, 0x3c, 0x49, - 0x2f, 0xa7, 0xd1, 0x7f, 0x9e, 0x7d, 0x2b, 0xe8, 0x6d, 0x42, - 0xf1, 0x34, 0xfb, 0xb, 0x9b, 0xa9, 0xe, 0x12, 0x8, 0x9a, - 0x46, 0xfa, 00, 0x4f, 0xf4, 0xaf, 0x88, 0xef, 0xef, 0x24, - 0xd4, 0x6f, 0xae, 0x2e, 0xe6, 0x39, 0x96, 0x79, 0x1a, 0x57, - 0x3e, 0xec, 0x72, 0x7f, 0x9d, 0x79, 0x9c, 0x4d, 0x8b, 0x95, - 0x1a, 0x11, 0xa1, 0x7, 0xf1, 0xef, 0xe8, 0x8e, 0x7c, 0xc2, - 0xab, 0x8c, 0x14, 0x17, 0x52, 0xa, 0x28, 0xa2, 0xbf, 0x32, - 0x3c, 00, 0xa2, 0x8a, 0x96, 0xd2, 0xdd, 0xae, 0xee, 0xa1, - 0x81, 0x8, 0xf, 0x2b, 0xac, 0x60, 0x9e, 0x99, 0x27, 0x14, - 0xd2, 0x6d, 0xd9, 0x1, 0x7f, 0x40, 0xf0, 0xc6, 0xab, 0xe2, - 0x8b, 0xaf, 0xb3, 0xe9, 0x76, 0x33, 0x5e, 0x48, 0x3e, 0xf7, - 0x96, 0xbf, 0x2a, 0xff, 00, 0xbc, 0xdd, 0x7, 0xe3, 0x5e, - 0x8d, 0xa7, 0x7e, 0xcd, 0xfe, 0x20, 0xb9, 0x40, 0xd7, 0x57, - 0xb6, 0x56, 0x79, 0xfe, 0x1d, 0xcd, 0x23, 0xf, 0xc8, 0x63, - 0xf5, 0xaf, 0x7a, 0xf0, 0xb7, 0x86, 0xac, 0xfc, 0x27, 0xa1, - 0xda, 0xe9, 0xb6, 0x51, 0x85, 0x8e, 0x25, 0x1, 0x9b, 0x1c, - 0xc8, 0xdd, 0xd8, 0xfb, 0x93, 0x5a, 0xf5, 0xfa, 0x5e, 0x13, - 0x86, 0x70, 0xf0, 0x82, 0x78, 0x96, 0xe5, 0x2f, 0xb9, 0x7f, - 0x99, 0xef, 0xd2, 0xcb, 0xe0, 0x95, 0xea, 0x6a, 0xcf, 0x2, - 0x5f, 0xd9, 0x8e, 0xeb, 0x1f, 0x36, 0xbf, 0x8, 0x3e, 0xd6, - 0xc4, 0xff, 00, 0xec, 0xd4, 0xd7, 0xfd, 0x98, 0xef, 00, - 0xf9, 0x35, 0xe8, 0x9, 0xff, 00, 0x6a, 0xd9, 0x87, 0xfe, - 0xcd, 0x5e, 0xff, 00, 0x45, 0x7a, 0x5f, 0xea, 0xfe, 0x5d, - 0xff, 00, 0x3e, 0xff, 00, 0x17, 0xfe, 0x67, 0x47, 0xd4, - 0xa8, 0x76, 0xfc, 0x59, 0xf3, 0x8d, 0xd7, 0xec, 0xd7, 0xaf, - 0x44, 0x9, 0x83, 0x51, 0xb0, 0x9f, 0xd9, 0x8b, 0xa1, 0xff, - 00, 0xd0, 0x4d, 0x73, 0x3a, 0xb7, 0xc1, 0x7f, 0x17, 0x69, - 0x21, 0x99, 0xb4, 0xa6, 0xba, 0x41, 0xfc, 0x56, 0x8e, 0x24, - 0xfd, 0x7, 0x3f, 0xa5, 0x7d, 0x69, 0x45, 0x73, 0x54, 0xe1, - 0xac, 0xc, 0xd7, 0xb9, 0x78, 0xfc, 0xff, 00, 0xcc, 0xce, - 0x59, 0x7d, 0x17, 0xb5, 0xd1, 0xf0, 0xe5, 0xee, 0x9d, 0x77, - 0xa6, 0xc9, 0xe5, 0xdd, 0xda, 0xcd, 0x6b, 0x27, 0xf7, 0x66, - 0x8c, 0xa1, 0xfc, 0x8d, 0x7a, 0x5f, 0xec, 0xed, 0xa3, 0xb, - 0xff, 00, 0x1b, 0xcb, 0x78, 0xe3, 0x2b, 0x63, 0x6e, 0xce, - 0xa7, 0xd1, 0x9b, 0xe5, 0x1f, 0xa1, 0x6a, 0xfa, 0x3e, 0xff, - 00, 0x4d, 0xb4, 0xd5, 0x6d, 0xda, 0xb, 0xcb, 0x68, 0xae, - 0xa1, 0x61, 0x83, 0x1c, 0xc8, 0x18, 0x1f, 0xc0, 0xd6, 0x4f, - 0x86, 0xfc, 0xd, 0xa3, 0x78, 0x46, 0xea, 0xf6, 0x7d, 0x26, - 0xd3, 0xec, 0x8d, 0x77, 0xb7, 0xcc, 0x55, 0x62, 0x57, 0xe5, - 0xce, 0x30, 0xf, 0x4e, 0xa7, 0xa5, 0x71, 0x61, 0xb8, 0x71, - 0xe1, 0x71, 0x74, 0xeb, 0x29, 0xa9, 0x45, 0x3b, 0xeb, 0xa3, - 0xf2, 0xfc, 0x4c, 0x69, 0xe0, 0x1d, 0x3a, 0x91, 0x95, 0xee, - 0x91, 0xbf, 0x45, 0x14, 0x57, 0xdc, 0x1e, 0xc0, 0x51, 0x45, - 0x14, 00, 0x57, 0x13, 0xf1, 0x6e, 0xe3, 0xc8, 0xf0, 0xa4, - 0xe3, 0xfb, 0xc0, 0xd7, 0x6d, 0x5e, 0x6b, 0xf1, 0xca, 0xe3, - 0xc9, 0xf0, 0xbb, 0xc, 0xe3, 0x2a, 0xd5, 0xc5, 0x8d, 0x97, - 0x2e, 0x1e, 0x6f, 0xc8, 0xe7, 0xc4, 0x3b, 0x52, 0x93, 0xf2, - 0x3e, 0x20, 0xf1, 0x4, 0xbe, 0x65, 0xfd, 0xd3, 0x7a, 0xb9, - 0xaf, 0x9e, 0xfe, 0x34, 0xc4, 0x75, 0x29, 0x6d, 0xec, 0x14, - 0xe0, 0xdd, 0x4f, 0x1c, 00, 0xff, 00, 0xbc, 0xc1, 0x7f, - 0xad, 0x7b, 0xe6, 0xae, 0xfb, 0xa5, 0x98, 0xfa, 0xb1, 0xaf, - 0x12, 0xf1, 0x1d, 0xa7, 0xf6, 0xd7, 0xc5, 0x2f, 0x6, 0xe9, - 0xa3, 0xfe, 0x5e, 0xb5, 0xdb, 0x18, 0x78, 0xf7, 0x9d, 0x5, - 0x7c, 0x1e, 0x4d, 0x1b, 0xd4, 0x47, 0xe2, 0xf4, 0xd7, 0xb4, - 0xcd, 0x28, 0xaf, 0xef, 0x1f, 0xb2, 0xba, 0x6c, 0x1f, 0x65, - 0xd3, 0xed, 0x61, 0xff, 00, 0x9e, 0x71, 0x2a, 0x7e, 0x40, - 0xa, 0x2a, 0xcd, 0x15, 0xfa, 0x49, 0xfb, 0x80, 0x51, 0x45, - 0x14, 00, 0x51, 0x45, 0x21, 0x21, 0x41, 0x24, 0xe0, 0xe, - 0x49, 0xa0, 0xf, 0x9d, 0x7f, 0x6b, 0xdf, 0x1a, 0x2d, 0xb6, - 0x93, 0xa6, 0x78, 0x5e, 0x16, 0x6, 0x5b, 0xa7, 0xfb, 0x5d, - 0xc0, 0xd, 0xc8, 0x45, 0x38, 0x50, 0x47, 0xbb, 0x64, 0xff, - 00, 0xc0, 0x6b, 0xc3, 0xbe, 0x10, 0xf8, 0x59, 0xbc, 0x59, - 0xe3, 0xad, 0x36, 0xcf, 0x69, 0x68, 0x84, 0x81, 0xdf, 0x3, - 0xb0, 0xe6, 0x9d, 0xf1, 0xa3, 0xc6, 0x63, 0xc7, 0x7f, 0x11, - 0xf5, 0x5d, 0x46, 0x27, 0xdf, 0x67, 0x1b, 0x7d, 0x9a, 0xd8, - 0x83, 0x91, 0xe5, 0xa7, 00, 0x8f, 0x62, 0x77, 0x37, 0xe3, - 0x5e, 0xd3, 0xfb, 0x25, 0xf8, 0x3f, 0xca, 0xb7, 0xbe, 0xd7, - 0x66, 0x8c, 0x65, 0x8f, 0x95, 0x13, 0x11, 0xf9, 0xd7, 0xe7, - 0x55, 0x3f, 0xe1, 0x4f, 0x33, 0x51, 0x5a, 0xc6, 0xff, 00, - 0x82, 0xff, 00, 0x3f, 0xd4, 0xfc, 0xe6, 0x2f, 0xfb, 0x53, - 0x35, 0x72, 0xde, 0x29, 0xfe, 0xb, 0xfc, 0xcf, 0xa3, 0x60, - 0x85, 0x6d, 0xe1, 0x8e, 0x24, 0x18, 0x44, 0x50, 0xa0, 0x7b, - 0xa, 0x92, 0x8a, 0x2b, 0xf4, 0x5d, 0x8f, 0xd1, 0x82, 0x8a, - 0x28, 0xa0, 0x2, 0xb3, 0x3c, 0x4d, 0xe2, 0x4d, 0x33, 0xc1, - 0xde, 0x1e, 0xd4, 0x75, 0xcd, 0x66, 0xf2, 0x2d, 0x3f, 0x4a, - 0xd3, 0xe0, 0x7b, 0x9b, 0xab, 0xa9, 0x9b, 0x6a, 0x45, 0x1a, - 0x8c, 0xb3, 0x13, 0xf4, 0x15, 0xa7, 0x5f, 0x1, 0xff, 00, - 0xc1, 0x62, 0x3e, 0x30, 0xc9, 0xe0, 0xdf, 0x81, 0x1a, 0x3f, - 0x82, 0x2c, 0xa7, 0x31, 0xde, 0x78, 0xae, 0xfb, 0xfd, 0x20, - 0x2b, 0x60, 0xfd, 0x92, 0xc, 0x3b, 0xf, 0xa1, 0x73, 0x10, - 0xfa, 0x3, 0x40, 0x1f, 0x9e, 0x9f, 0xb6, 0x97, 0xed, 0x9b, - 0xe2, 0x4f, 0xda, 0xaf, 0xc7, 0x93, 0xb7, 0x9f, 0x36, 0x9b, - 0xe0, 0x8b, 0x9, 0x5e, 0x3d, 0x2b, 0x47, 0x8e, 0x42, 0x11, - 0x90, 0x37, 0x13, 0xcc, 0x3a, 0x34, 0x8c, 00, 0x3c, 0xfd, - 0xde, 0x83, 0xb9, 0x3a, 0x7f, 0x7, 0xbf, 0xe0, 0x9b, 0x1f, - 0x1c, 0x7e, 0x32, 0x68, 0x56, 0xfa, 0xdd, 0x9e, 0x81, 0x6b, - 0xe1, 0xdd, 0x1e, 0xe6, 0x31, 0x35, 0xbd, 0xd7, 0x88, 0x2e, - 0x7e, 0xcc, 0x66, 0x43, 0xc8, 0x65, 0x8c, 0x6, 0x7c, 0x63, - 0x9c, 0x95, 00, 0xd6, 0x6f, 0xfc, 0x13, 0xbb, 0xe1, 0xbe, - 0x87, 0xf1, 0x4b, 0xf6, 0xb4, 0xf0, 0x66, 0x93, 0xe2, 0x25, - 0x82, 0x7d, 0x32, 0xdc, 0xcd, 0xa8, 0x1b, 0x4b, 0x90, 0xa, - 0x5d, 0x3c, 0x31, 0x97, 0x48, 0xf0, 0x7a, 0xfc, 0xc0, 0x36, - 0x3b, 0x85, 0x35, 0xfb, 0x39, 0xfb, 0x62, 0x7c, 0x66, 0xb7, - 0xf8, 0x5, 0xfb, 0x39, 0x78, 0xc3, 0xc5, 0x2, 0x45, 0x86, - 0xf9, 0x2c, 0xcd, 0x96, 0x9a, 0x83, 0x8d, 0xd7, 0x52, 0x8d, - 0x91, 00, 0x3d, 0x89, 0xdd, 0xf4, 0x53, 0x4c, 0x84, 0xaf, - 0xab, 0x3f, 0x9e, 0x6f, 0x16, 0x78, 0x7d, 0xbc, 0x27, 0xe2, - 0x7d, 0x5b, 0x45, 0x7b, 0xcb, 0x6d, 0x41, 0xf4, 0xeb, 0xa9, - 0x2d, 0x5a, 0xea, 0xcd, 0x8b, 0x43, 0x29, 0x46, 0x2a, 0x59, - 0x9, 00, 0x95, 0x24, 0x70, 0x70, 0x2b, 0xf7, 0xe7, 0xf6, - 0x3, 0xf8, 0x22, 0x3e, 0x5, 0x7e, 0xcc, 0x3e, 0x14, 0xd2, - 0x67, 0x8b, 0xcb, 0xd6, 0x35, 0x38, 0xbf, 0xb6, 0x35, 0x1c, - 0x8f, 0x9b, 0xce, 0x9c, 0x6, 0xda, 0x7f, 0xdd, 0x4d, 0x89, - 0xff, 00, 0x1, 0xaf, 0xc5, 0x9f, 0xd8, 0xf3, 0xe0, 0xb4, - 0xbf, 0xb4, 0xf, 0xed, 0x17, 0xe1, 0xf, 0xa, 0x3a, 0x79, - 0xb6, 0x12, 0x5d, 0xb, 0xdd, 0x49, 0x98, 0x64, 0xb, 0x58, - 0xbf, 0x79, 0x2e, 0x7f, 0xde, 00, 0x27, 0xd5, 0xc5, 0x7e, - 0xd9, 0xfe, 0xd9, 0x7f, 0xb4, 0x8e, 0x8d, 0xfb, 0x30, 0x7c, - 0xf, 0xd5, 0xf5, 0x56, 0xbb, 0x82, 0x1f, 0x11, 0x5d, 0x5b, - 0x3d, 0x9e, 0x83, 0xa7, 0xe4, 0x6f, 0x9a, 0xe0, 0xae, 0xd5, - 0x60, 0xbd, 0x76, 0x26, 0x43, 0x31, 0xec, 0x6, 0x3a, 0x91, - 0x43, 0x5, 0xdc, 0xfc, 0x4a, 0xfd, 0xb3, 0x75, 0xfb, 0x5f, - 0x13, 0x7e, 0xd5, 0x7f, 0x14, 0xf5, 0x1b, 0x26, 0x57, 0xb5, - 0x93, 0x5e, 0xb9, 0x44, 0x74, 0xe8, 0xdb, 0x1b, 0x61, 0x3f, - 0x89, 0x52, 0x6b, 0xf5, 0x7f, 0xfe, 0x9, 0x19, 0xa1, 0x49, - 0xa4, 0xfe, 0xc8, 0x36, 0x77, 0x72, 0x2e, 0xdf, 0xed, 0x3d, - 0x66, 0xf6, 0xe5, 0x33, 0xdd, 0x43, 0x2c, 0x59, 0xfc, 0xe3, - 0x6a, 0xfc, 0x50, 0xd1, 0xf4, 0x9d, 0x57, 0xc7, 0x5e, 0x2a, - 0xb3, 0xd3, 0x6c, 0xd2, 0x4d, 0x43, 0x5a, 0xd5, 0xef, 0x12, - 0x8, 0x97, 0xab, 0xcd, 0x3c, 0xaf, 0x81, 0xf8, 0x96, 0x6a, - 0xfe, 0x91, 0x3e, 0x2, 0xfc, 0x2c, 0xb5, 0xf8, 0x27, 0xf0, - 0x73, 0xc2, 0x3e, 0x8, 0xb4, 0xda, 0x53, 0x46, 0xd3, 0xe3, - 0xb7, 0x92, 0x45, 0x1c, 0x49, 0x2e, 0x37, 0x4a, 0xff, 00, - 0xf0, 0x27, 0x2c, 0x7f, 0x1a, 0x18, 0x2d, 0xee, 0x77, 0x53, - 0xcc, 0x96, 0xd0, 0xc9, 0x34, 0x8c, 0x12, 0x38, 0xd4, 0xb3, - 0x31, 0xe8, 00, 0x19, 0x26, 0xbe, 0x2c, 0xf1, 0x46, 0xb5, - 0x27, 0x88, 0xfc, 0x45, 0xa8, 0xea, 0x52, 0x12, 0x4d, 0xcc, - 0xed, 0x20, 0xcf, 0x65, 0xcf, 0xca, 0x3f, 0x1, 0x81, 0x5f, - 0x4a, 0xfc, 0x73, 0xf1, 0x11, 0xd0, 0x7c, 0x3, 0x75, 0x1c, - 0x6f, 0xb2, 0xe2, 0xf9, 0x85, 0xaa, 0x63, 0xae, 0xf, 0x2f, - 0xff, 00, 0x8e, 0x82, 0x3f, 0x1a, 0xf9, 0x5a, 0xbf, 0x38, - 0xe2, 0x8c, 0x4f, 0x35, 0x48, 0x61, 0x97, 0x4d, 0x5f, 0xcf, - 0x6f, 0xeb, 0xcc, 0xf1, 0x33, 0x1a, 0x97, 0x92, 0xa6, 0xba, - 0x5, 0x14, 0x51, 0x5f, 0xa, 0x79, 0x1, 0x45, 0x14, 0x50, - 0x1, 0x46, 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa2, 0x80, 0xa, - 0x7c, 0x10, 0x49, 0x73, 0x32, 0xc5, 0xc, 0x6f, 0x2c, 0xae, - 0x70, 0xa8, 0x8a, 0x59, 0x89, 0xf6, 0x2, 0xb4, 0x3c, 0x3f, - 0xa9, 0xd9, 0xe9, 0x5a, 0x82, 0xcd, 0x7d, 0xa5, 0xc3, 0xab, - 0x5b, 0xff, 00, 0x14, 0x12, 0xc8, 0xc9, 0xf9, 0x15, 0x3d, - 0x7e, 0xb9, 0xaf, 0xa9, 0xbe, 0x1a, 0x5c, 0xf8, 0x5f, 0x58, - 0xd1, 0x56, 0xff, 00, 0xc3, 0xda, 0x7d, 0xbd, 0x90, 0xce, - 0xc9, 0x63, 0x58, 0x82, 0xc9, 0x1b, 0xe3, 0xee, 0xb1, 0xea, - 0x7e, 0xb9, 0xe6, 0xbd, 0xdc, 0xb3, 0x2c, 0x8e, 0x63, 0x2e, - 0x5f, 0x6a, 0xa2, 0xfb, 0x6b, 0x7f, 0xf2, 0xfc, 0x4e, 0xbc, - 0x3e, 0x1d, 0x57, 0x76, 0xe6, 0xb1, 0xe2, 0xbe, 0x9, 0xf8, - 0xd, 0xad, 0x78, 0x86, 0x54, 0x9b, 0x55, 0x56, 0xd1, 0xec, - 0x3a, 0x9f, 0x30, 0x7e, 0xf9, 0xc7, 0xa0, 0x5e, 0xdf, 0x53, - 0xf9, 0x1a, 0xfa, 0x1f, 0xc3, 0x5e, 0x18, 0xd3, 0xbc, 0x25, - 0xa5, 0xc7, 0x61, 0xa6, 0xc0, 0x20, 0x81, 0x79, 0x27, 0xab, - 0x39, 0xee, 0xcc, 0x7b, 0x9a, 0xd5, 0xa2, 0xbf, 0x4b, 0xc0, - 0x65, 0x58, 0x6c, 0xbd, 0x5e, 0x92, 0xbc, 0xbb, 0xbd, 0xff, - 00, 0xe0, 0x1f, 0x41, 0x47, 0xd, 0x4e, 0x87, 0xc3, 0xbf, - 0x70, 0xa2, 0x8a, 0x2b, 0xd8, 0x3a, 0x82, 0x8a, 0x28, 0xa0, - 0x2, 0xb1, 0x3c, 0x69, 0xac, 0xaf, 0x87, 0xbc, 0x27, 0xaa, - 0xea, 0x5, 0xb6, 0x98, 0x2d, 0xdc, 0xa7, 0xfb, 0xe4, 0x61, - 0x47, 0xe6, 0x45, 0x6d, 0xd7, 0x91, 0xfe, 0xd1, 0xfa, 0xd9, - 0xb2, 0xf0, 0xa5, 0x9e, 0x9c, 0x8d, 0x87, 0xbd, 0xb8, 0xcb, - 0xf, 0x54, 0x41, 0x93, 0xff, 00, 0x8f, 0x15, 0xaf, 0x3f, - 0x30, 0xaf, 0xf5, 0x5c, 0x2d, 0x4a, 0xdd, 0x97, 0xe3, 0xd3, - 0xf1, 0x30, 0xaf, 0x3f, 0x67, 0x4e, 0x52, 0x3e, 0x70, 0x24, - 0x93, 0x93, 0xc9, 0xa2, 0x8a, 0x2b, 0xf0, 0xf3, 0xe4, 0x42, - 0x8a, 0x29, 0x42, 0x96, 0x20, 0x1, 0x92, 0x78, 0x2, 0x80, - 0x3e, 0x93, 0xfd, 0x9c, 0xf4, 0x71, 0x65, 0xe0, 0xcb, 0x8b, - 0xe6, 0x5c, 0x49, 0x7b, 0x72, 0xc4, 0x1f, 0xf6, 0x13, 0xe5, - 0x1f, 0xae, 0xea, 0xf5, 0x7a, 0xc4, 0xf0, 0x5e, 0x88, 0x3c, - 0x39, 0xe1, 0x4d, 0x2f, 0x4e, 00, 0x6, 0x82, 0x5, 0xf, - 0x8e, 0xec, 0x79, 0x63, 0xf9, 0x93, 0x5b, 0x75, 0xfb, 0x8e, - 0x2, 0x87, 0xd5, 0xb0, 0xb4, 0xe9, 0x76, 0x4b, 0xef, 0xeb, - 0xf8, 0x9f, 0x5d, 0x42, 0x1e, 0xce, 0x9c, 0x62, 0x14, 0x51, - 0x45, 0x77, 0x9b, 0x85, 0x79, 0x1f, 0xed, 0x15, 0xe2, 0x86, - 0xd3, 0x3c, 0x35, 0x6d, 0xa4, 0x42, 0xfb, 0x65, 0xd4, 0x1f, - 0x32, 0x1, 0xd7, 0xca, 0x5c, 0x13, 0xf9, 0x9c, 0x7e, 0x46, - 0xbd, 0x72, 0xbe, 0x51, 0xf8, 0xdd, 0xae, 0xb6, 0xb7, 0xf1, - 0xb, 0x50, 0x4d, 0xdb, 0xa1, 0xb3, 0xc5, 0xac, 0x63, 0x3d, - 0x36, 0x8f, 0x9b, 0xff, 00, 0x1e, 0x2d, 0x5f, 0x37, 0x9f, - 0xe2, 0x9e, 0x1b, 0x5, 0x25, 0x1d, 0xe5, 0xa7, 0xf9, 0xfe, - 0x7, 0x6, 0x36, 0xa7, 0x25, 0x16, 0x97, 0x5d, 0xe, 0xa, - 0x8a, 0x28, 0xaf, 0xc8, 0xcf, 0x99, 0xa, 0x28, 0xa9, 0x2d, - 0xe0, 0x7b, 0xab, 0x88, 0xa1, 0x88, 0x6e, 0x92, 0x46, 0x8, - 0xab, 0xea, 0x49, 0xc0, 0x14, 0xd2, 0xbe, 0x88, 0xf, 0x79, - 0xfd, 0x9c, 0xfc, 0x18, 0xb1, 0x5a, 0x5c, 0x78, 0x92, 0xe1, - 0x33, 0x24, 0xa5, 0xa0, 0xb6, 0xc8, 0xe8, 0xa3, 0xef, 0x30, - 0xfa, 0x9e, 0x3f, 0x3, 0xeb, 0x5e, 0xdd, 0x59, 0xbe, 0x1b, - 0xd1, 0x62, 0xf0, 0xee, 0x83, 0x61, 0xa6, 0xc2, 00, 0x4b, - 0x68, 0x56, 0x3c, 0x8e, 0xe4, 0xe, 0x4f, 0xe2, 0x72, 0x7f, - 0x1a, 0xd2, 0xaf, 0xdb, 0xb2, 0xfc, 0x2a, 0xc1, 0x61, 0xa1, - 0x45, 0x6e, 0x96, 0xbe, 0xbd, 0x4f, 0xae, 0xa1, 0x4d, 0x52, - 0xa6, 0xa2, 0x14, 0x51, 0x45, 0x7a, 0x26, 0xe1, 0x45, 0x14, - 0x50, 0x1, 0x59, 0x1e, 0x2e, 0xd3, 0xd7, 0x56, 0xf0, 0xb6, - 0xad, 0x66, 0xe3, 0x2b, 0x35, 0xac, 0x8b, 0xf8, 0xed, 0x38, - 0xfd, 0x6b, 0x5e, 0xaa, 0x6a, 0xf2, 0x88, 0x34, 0x9b, 0xd9, - 0x1b, 0xee, 0xa4, 0xe, 0xc7, 0xf0, 0x53, 0x59, 0xd5, 0x4a, - 0x50, 0x92, 0x7b, 0x59, 0x93, 0x25, 0x78, 0xb4, 0xcf, 0x87, - 0xe8, 0xa2, 0x8a, 0xfc, 0xc, 0xf8, 0xc0, 0xa2, 0x8a, 0x28, - 0x3, 0x7b, 0xc0, 0x57, 0x26, 0xd3, 0xc6, 0xda, 0x14, 0xa0, - 0xe3, 0x17, 0xb0, 0x8f, 0xc0, 0xb8, 0x7, 0xf9, 0xd7, 0xd9, - 0xb5, 0xf1, 0x67, 0x83, 0x62, 0x33, 0x78, 0xbb, 0x44, 0x45, - 0xea, 0xd7, 0xb0, 0x8f, 0xfc, 0x7c, 0x57, 0xda, 0x75, 0xfa, - 0x47, 0xa, 0xb7, 0xec, 0x6a, 0xae, 0x97, 0x5f, 0x91, 0xee, - 0xe5, 0xbf, 0xc, 0x8c, 0x3f, 0x1c, 0x86, 0x6f, 0x5, 0xeb, - 0xa1, 0x33, 0xbb, 0xec, 0x33, 0x63, 0x1f, 0xee, 0x1a, 0xf8, - 0xc2, 0xbe, 0xe6, 0xb9, 0xb7, 0x4b, 0xbb, 0x69, 0x60, 0x90, - 0x6e, 0x8e, 0x54, 0x28, 0xc0, 0xf7, 0x4, 0x60, 0xd7, 0xc5, - 0x9e, 0x25, 0xd0, 0xa7, 0xf0, 0xd6, 0xbd, 0x7d, 0xa6, 0x5c, - 0x29, 0x59, 0x2d, 0xe5, 0x28, 0x9, 0x1f, 0x79, 0x7f, 0x85, - 0xbf, 0x11, 0x83, 0xf8, 0xd7, 0x37, 0x15, 0x52, 0x95, 0xe9, - 0x55, 0xe9, 0xaa, 0x23, 0x32, 0x8b, 0xbc, 0x64, 0x66, 0x51, - 0x45, 0x15, 0xf0, 0x7, 0x8a, 0x14, 0xaa, 0xc5, 0x18, 0x32, - 0x92, 0x18, 0x1c, 0x82, 0x3b, 0x52, 0x51, 0x40, 0x1f, 0x49, - 0xfc, 0x39, 0xf8, 0xe5, 0xa6, 0x6b, 0x16, 0x30, 0x59, 0x6b, - 0x93, 0xae, 0x9f, 0xa9, 0x46, 0xa1, 0xc, 0xf2, 0x9c, 0x45, - 0x37, 0x6c, 0xe7, 0xf8, 0x4f, 0xa8, 0x3f, 0x85, 0x7a, 0xac, - 0x53, 0x47, 0x3c, 0x6b, 0x24, 0x4e, 0xb2, 0x46, 0xc3, 0x21, - 0x90, 0xe4, 0x11, 0xf5, 0xaf, 0x85, 0xeb, 0x63, 0x43, 0xf1, - 0x86, 0xb7, 0xe1, 0xa3, 0xff, 00, 0x12, 0xcd, 0x4e, 0xe6, - 0xd1, 0x7f, 0xe7, 0x9a, 0x3e, 0x50, 0xff, 00, 0xc0, 0x4f, - 0x1f, 0xa5, 0x7d, 0xbe, 0xb, 0x89, 0xaa, 0x52, 0x8a, 0x86, - 0x26, 0x3c, 0xd6, 0xea, 0xb7, 0xff, 00, 0x83, 0xf8, 0x1e, - 0xbd, 0x2c, 0xc2, 0x51, 0x56, 0xa8, 0xae, 0x7d, 0xa7, 0x45, - 0x7c, 0xdf, 0xa0, 0xfe, 0xd1, 0xda, 0xed, 0x8e, 0xd4, 0xd4, - 0xed, 0x2d, 0xf5, 0x38, 0xc7, 0x56, 0x5f, 0xdd, 0x49, 0xf9, - 0x8c, 0x8f, 0xd2, 0xbb, 0xed, 0x13, 0xf6, 0x87, 0xf0, 0xd6, - 0xa4, 0xc1, 0x2f, 0x52, 0xe7, 0x4b, 0x73, 0xfc, 0x52, 0xa6, - 0xf4, 0xfc, 0xd7, 0x27, 0xf3, 0x15, 0xf5, 0x74, 0x33, 0xcc, - 0x5, 0x7f, 0xf9, 0x79, 0xca, 0xfc, 0xf4, 0xff, 00, 0x81, - 0xf8, 0x9e, 0x8c, 0x31, 0x94, 0x67, 0xd6, 0xde, 0xa7, 0xa9, - 0x51, 0x59, 0xba, 0x3f, 0x89, 0x34, 0xaf, 0x10, 0x45, 0xe6, - 0x69, 0xba, 0x85, 0xbd, 0xea, 0xf7, 0xf2, 0x64, 0xc, 0x47, - 0xd4, 0x75, 0x15, 0xa5, 0x5e, 0xe4, 0x65, 0x19, 0xae, 0x68, - 0xbb, 0xa3, 0xb1, 0x34, 0xd5, 0xd0, 0x51, 0x45, 0x15, 0x43, - 0xa, 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa2, 0x80, 0xa, 0xf2, - 0xf, 0xda, 0x1e, 0xeb, 0xca, 0xd0, 0x36, 0xe7, 0xfe, 0x59, - 0x9a, 0xf5, 0xfa, 0xf0, 0x6f, 0xda, 0x5e, 0xf8, 0x47, 0x61, - 0xe5, 0x67, 0x91, 0x1d, 0x79, 0x19, 0xb4, 0xb9, 0x30, 0x75, - 0x1f, 0x91, 0xc1, 0x8e, 0x97, 0x2e, 0x1e, 0x4c, 0xf9, 0x7, - 0x53, 0x6f, 0x95, 0xcf, 0xb9, 0xaf, 0x34, 0xf0, 0x2d, 0x92, - 0xeb, 0x9f, 0xb5, 0x7, 0xc3, 0x3b, 0x26, 0x1b, 0x81, 0xd7, - 0xad, 0xe4, 0xc7, 0xfb, 0x84, 0xbf, 0xfe, 0xcb, 0x5e, 0x8d, - 0xaa, 0x36, 0x22, 0x63, 0xec, 0x6b, 0x94, 0xfd, 0x9b, 0xec, - 0xff, 00, 0xb6, 0x3f, 0x6c, 0xbf, 0x87, 0xf1, 0xe3, 0x70, - 0x86, 0x7b, 0x9b, 0x93, 0xed, 0xb2, 0xda, 0x53, 0x9f, 0xcf, - 0x15, 0xf2, 0xd9, 0x24, 0x7d, 0xf3, 0xf2, 0x3c, 0xb1, 0x7b, - 0x4c, 0xe2, 0x97, 0x95, 0xd9, 0xfa, 0xcf, 0x45, 0x14, 0x57, - 0xe8, 0x7, 0xed, 0x61, 0x45, 0x14, 0x50, 0x1, 0x5c, 0x3f, - 0xc6, 0x8f, 0x18, 0xf, 0x4, 0x7c, 0x37, 0xd6, 0x35, 0x5, - 0x62, 0xb7, 0xf, 0x17, 0xd9, 0xad, 0xf6, 0xf5, 0xf3, 0x1f, - 0xe5, 0x53, 0xf8, 0x64, 0x9f, 0xc2, 0xbb, 0x8a, 0xf9, 0x5f, - 0xf6, 0xbf, 0xf1, 0x87, 0xda, 0xb5, 0x6d, 0x2b, 0xc3, 0x31, - 0x1f, 0x92, 0xd9, 0x3e, 0xd9, 0x39, 0xe7, 0xef, 0x36, 0x42, - 0x8f, 0xcb, 0x27, 0xf1, 0xaf, 0x37, 0x31, 0xc4, 0x7d, 0x5b, - 0xd, 0x39, 0xf5, 0xd9, 0x7a, 0xb3, 0xca, 0xcd, 0x31, 0x3f, - 0x54, 0xc2, 0x4e, 0xa2, 0xdf, 0x65, 0xea, 0xff, 00, 0xab, - 0x9f, 0x3e, 0x58, 0x5a, 0xbd, 0xe5, 0xd4, 0x30, 0x46, 0x37, - 0x3b, 0xb0, 0x50, 0x7, 0xa9, 0xaf, 0xd0, 0x3f, 0x86, 0x9e, - 0x19, 0x8f, 0xc2, 0x7e, 0xc, 0xd3, 0x6c, 0x11, 0x2, 0xb8, - 0x88, 0x34, 0x9e, 0xec, 0x47, 0x35, 0xf2, 0x27, 0xec, 0xf7, - 0xe1, 0x13, 0xe2, 0x9f, 0x1f, 0x5a, 0x97, 0x5c, 0xdb, 0xdb, - 0x7e, 0xf5, 0xcf, 0xd3, 0xa5, 0x7d, 0xc4, 0xa0, 0x28, 00, - 0x70, 0x7, 0x15, 0xf3, 0xdc, 0x3d, 0x87, 0xd2, 0x78, 0x87, - 0xe8, 0xbf, 0x53, 0xc2, 0xe1, 0xcc, 0x37, 0x25, 0x39, 0x57, - 0x7d, 0x74, 0x42, 0xd1, 0x45, 0x15, 0xf6, 0x67, 0xd9, 0x5, - 0x14, 0x51, 0x40, 0x5, 0x7e, 0x55, 0x7f, 0xc1, 0x6d, 0x3c, - 0x2b, 0xa8, 0x36, 0xa3, 0xf0, 0xc7, 0xc4, 0x81, 0x19, 0xb4, - 0xa5, 0x8a, 0xef, 0x4f, 0x67, 0x1d, 0x12, 0x62, 0x52, 0x40, - 0xf, 0xd5, 0x43, 0x7f, 0xdf, 0x26, 0xbf, 0x52, 0xb5, 0x4d, - 0x5e, 0xc7, 0x43, 0xb3, 0x6b, 0xbd, 0x46, 0xf6, 0xde, 0xc2, - 0xd5, 0x48, 0x56, 0x9e, 0xea, 0x55, 0x8d, 0x1, 0x27, 00, - 0x16, 0x62, 0x7, 0x24, 0x81, 0x5e, 0x73, 0xf1, 0xc7, 0xe1, - 0xf, 0x82, 0xff, 00, 0x69, 0xef, 0x86, 0x1a, 0x8f, 0x83, - 0x35, 0xeb, 0x98, 0xee, 0xf4, 0xeb, 0xbd, 0xb2, 0xc5, 0x73, - 0x63, 0x3a, 0x99, 0x6d, 0xa6, 0x5e, 0x52, 0x54, 0x23, 0x3c, - 0x83, 0xdb, 0xa1, 0x4, 0x83, 0xc1, 0xa0, 0x4f, 0x53, 0xf9, - 0xcd, 0xf0, 0xaf, 0x8a, 0xb5, 0x8f, 0x3, 0xf8, 0x8b, 0x4f, - 0xd7, 0xb4, 0xd, 0x46, 0xe3, 0x49, 0xd6, 0x74, 0xf9, 0x44, - 0xf6, 0xb7, 0xb6, 0xaf, 0xb6, 0x48, 0x9c, 0x74, 0x20, 0xfe, - 0x9e, 0xe0, 0x90, 0x6b, 0xd8, 0x7e, 0x39, 0x7e, 0xda, 0xdf, - 0x14, 0xbf, 0x68, 0xbf, 0x1, 0x68, 0xfe, 0x13, 0xf1, 0xce, - 0xa9, 0x69, 0xa9, 0x58, 0x69, 0x97, 0x42, 0xf1, 0x27, 0x86, - 0xd1, 0x60, 0x9a, 0x69, 0x2, 0x32, 0x3, 0x29, 0x5c, 0x2b, - 0x60, 0x33, 0x74, 0x51, 0xc9, 0xaf, 0x44, 0xf8, 0xd9, 0xff, - 00, 0x4, 0xbf, 0xf8, 0xd9, 0xf0, 0xa2, 0xfa, 0xea, 0x5d, - 0x27, 0x44, 0x1e, 0x39, 0xd0, 0x91, 0xd8, 0xc5, 0x7d, 0xa1, - 0xb6, 0xf9, 0x76, 0x67, 0x82, 0xf0, 0x1c, 0x38, 0x6c, 0x76, - 0x50, 0xc3, 0xde, 0xbe, 0x79, 0xb8, 0xf8, 0x25, 0xf1, 0x12, - 0xd2, 0xe4, 0xdb, 0xcd, 0xe0, 0x3f, 0x12, 0xc5, 0x38, 0x38, - 0xf2, 0xdb, 0x48, 0xb8, 0xd, 0x9f, 0xa6, 0xca, 0xa2, 0x35, - 0x3a, 0x5f, 0xd9, 0xdb, 0xf6, 0x95, 0xf1, 0x47, 0xec, 0xc5, - 0xe2, 0xd, 0x5f, 0x5f, 0xf0, 0x7d, 0xa6, 0x96, 0xfa, 0xe5, - 0xfd, 0x9f, 0xd8, 0x56, 0xf7, 0x51, 0xb7, 0x33, 0x1b, 0x68, - 0xcb, 0x6, 0x6f, 0x2c, 0x6e, 0x3, 0x2c, 0x55, 0x73, 0x9c, - 0xfd, 0xd1, 0x5c, 0xdf, 0xc5, 0x9f, 0x8d, 0x1e, 0x35, 0xf8, - 0xe5, 0xe2, 0x63, 0xaf, 0xf8, 0xe3, 0xc4, 0x37, 0x7e, 0x20, - 0xd4, 0x82, 0x94, 0x8d, 0xee, 0x8, 0x9, 0xa, 0x67, 0x3b, - 0x23, 0x45, 0x1, 0x51, 0x7d, 0x94, 0xa, 0xf4, 0xdf, 0x86, - 0x7f, 0xb0, 0x3f, 0xc7, 0x6f, 0x8a, 0x97, 0x31, 0x2e, 0x99, - 0xe0, 0xd, 0x47, 0x4c, 0xb5, 0x7e, 0xb7, 0xba, 0xda, 0xfd, - 0x86, 0x15, 0x1e, 0xa7, 0xcc, 0xc3, 0x1f, 0xc1, 0x4d, 0x7e, - 0x8b, 0xfe, 0xc9, 0xff, 00, 0xf0, 0x4a, 0xf, 0xb, 0xfc, - 0x27, 0xbd, 0xb2, 0xf1, 0x37, 0xc4, 0xbb, 0xb8, 0x3c, 0x65, - 0xe2, 0x6b, 0x79, 0x16, 0x6b, 0x7d, 0x3e, 0x10, 0x46, 0x9d, - 0x6a, 0xe3, 0x90, 0x48, 0x60, 0xc, 0xcc, 0xf, 0x76, 0x1, - 0x78, 0x1f, 0x2f, 0x7a, 0x2, 0xcc, 0xf3, 0xaf, 0xf8, 0x25, - 0x8f, 0xec, 0x3b, 0x79, 0xa4, 0xdd, 0xda, 0xfc, 0x65, 0xf1, - 0xde, 0x9b, 0xf6, 0x79, 0xc, 0x64, 0xf8, 0x73, 0x4d, 0xba, - 0x8c, 0x89, 0x13, 0x3c, 0x1b, 0xb7, 0x53, 0xd3, 0x23, 0x21, - 0x7, 0x5e, 0x4b, 0x7a, 0x57, 0xea, 0x25, 0x22, 0xa8, 0x45, - 0xa, 0xa0, 0x2a, 0x81, 0x80, 00, 0xc0, 0x2, 0xa2, 0xbc, - 0xbb, 0x8e, 0xc6, 0xd2, 0x6b, 0x99, 0x9b, 0x64, 0x30, 0xa1, - 0x91, 0xd8, 0xf6, 00, 0x64, 0xd4, 0xb7, 0x6d, 0x59, 0x7b, - 0x23, 0xe7, 0x5f, 0xda, 0x33, 0xc4, 0x23, 0x50, 0xf1, 0x4d, - 0xae, 0x97, 0x1b, 0xe6, 0x3b, 0x8, 0xb2, 0xe0, 0x1e, 0x3c, - 0xc7, 0xe4, 0xff, 00, 0xe3, 0xa1, 0x7f, 0x3a, 0xf2, 0x4a, - 0xbf, 0xaf, 0x6a, 0xb2, 0x6b, 0xba, 0xd5, 0xf6, 0xa1, 0x29, - 0x26, 0x4b, 0x99, 0x9e, 0x53, 0x9e, 0xd9, 0x39, 0x3, 0xf0, - 0x1c, 0x55, 0xa, 0xfc, 0x3b, 0x1f, 0x89, 0x78, 0xbc, 0x4c, - 0xeb, 0x77, 0x7f, 0x87, 0x4f, 0xc0, 0xf9, 0x1a, 0xd5, 0x3d, - 0xad, 0x47, 0x3e, 0xe1, 0x45, 0x14, 0x57, 0x1, 0x89, 0xdd, - 0x7c, 0x28, 0xf8, 0x72, 0x9f, 0x10, 0xf5, 0x4b, 0xc8, 0xae, - 0x66, 0x96, 0xda, 0xce, 0xda, 0x20, 0xcd, 0x24, 0x20, 0x67, - 0x79, 0x3f, 0x28, 0xe4, 0x63, 0xb3, 0x7e, 0x55, 0xe8, 0xf3, - 0x7e, 0xcc, 0x96, 0x4, 0x1f, 0x27, 0x5c, 0xb9, 0x43, 0xdb, - 0x7c, 0x2a, 0xdf, 0xc8, 0x8a, 0xde, 0xf8, 0x1, 0xe1, 0xd6, - 0xd1, 0xbc, 0xe, 0x2e, 0xe5, 0x5d, 0xb3, 0x6a, 0x32, 0x99, - 0xf9, 0xeb, 0xb0, 0x70, 0xbf, 0xc8, 0x9f, 0xc6, 0xbd, 0x32, - 0xbf, 0x50, 0xcb, 0x32, 0x5c, 0x2c, 0xf0, 0x70, 0x96, 0x22, - 0x9d, 0xe4, 0xf5, 0xeb, 0xd7, 0x6f, 0xc0, 0xfa, 0x1c, 0x3e, - 0x12, 0x9b, 0xa4, 0x9c, 0xd6, 0xac, 0xf9, 0xa7, 0xc5, 0x1f, - 0xb3, 0xd6, 0xb7, 0xa2, 0x59, 0xc9, 0x75, 0xa7, 0xdc, 0xc7, - 0xab, 0xa4, 0x63, 0x2d, 0x14, 0x68, 0x52, 0x5c, 0x7b, 0x2e, - 0x48, 0x3f, 0x9e, 0x6b, 0xca, 0xd9, 0x4a, 0xb1, 0x56, 0x4, - 0x10, 0x70, 0x41, 0xea, 0x2b, 0xee, 0xaa, 0xf9, 0x77, 0xe3, - 0xd7, 0x85, 0xe2, 0xf0, 0xff, 00, 0x8d, 0x3e, 0xd3, 0x6c, - 0x81, 0x20, 0xd4, 0x63, 0xfb, 0x41, 0x51, 0xd0, 0x49, 0x92, - 0x1f, 0x1f, 0xa1, 0xfc, 0x6b, 0xc5, 0xcf, 0x32, 0x5a, 0x58, - 0x3a, 0x4b, 0x11, 0x87, 0xd1, 0x6c, 0xd6, 0xff, 00, 0x33, - 0x93, 0x17, 0x84, 0x8d, 0x28, 0xf3, 0xc3, 0x63, 0xcd, 0xa8, - 0xa2, 0x8a, 0xf8, 0x93, 0xc9, 0xa, 0xf5, 0xdf, 0xd9, 0xbf, - 0x5b, 0x7b, 0x5f, 0x14, 0xde, 0xe9, 0x85, 0xbf, 0x73, 0x77, - 0x6f, 0xe6, 0x5, 0xff, 00, 0x6d, 0xf, 0x1f, 0xa1, 0x6a, - 0xf2, 0x2a, 0xed, 0xbe, 0xc, 0x5d, 0x7d, 0x93, 0xe2, 0x5e, - 0x8a, 0x73, 0x80, 0xee, 0xf1, 0x9f, 0xc5, 0x18, 0xf, 0xd7, - 0x15, 0xea, 0x65, 0x75, 0x5d, 0x1c, 0x6d, 0x29, 0x2e, 0xe9, - 0x7d, 0xfa, 0x1d, 0x18, 0x79, 0x72, 0xd6, 0x8b, 0xf3, 0x3e, - 0xb5, 0xa2, 0x8a, 0x2b, 0xf6, 0xc3, 0xeb, 0x42, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0xbe, 0x61, 0xfd, 0xa0, - 0xb5, 0xef, 0xed, 0x5f, 0x1d, 0x1b, 0x35, 0x6c, 0xc5, 0xa7, - 0xc2, 0xb1, 0x63, 0xfd, 0xb6, 0xf9, 0x9b, 0xf9, 0xa8, 0xfc, - 0x2b, 0xe9, 0xa9, 0xe7, 0x4b, 0x68, 0x24, 0x9a, 0x43, 0xb6, - 0x38, 0xd4, 0xbb, 0x13, 0xd8, 0x1, 0x93, 0x5f, 0x14, 0xf8, - 0x8f, 0x57, 0x6d, 0x7b, 0x5e, 0xd4, 0x35, 0x17, 0xce, 0x6e, - 0xa7, 0x79, 0x70, 0x7b, 0x2, 0x78, 0x1f, 0x96, 0x2b, 0xe3, - 0x38, 0x9f, 0x11, 0xc9, 0x86, 0x85, 0x15, 0xf6, 0x9f, 0xe0, - 0xbf, 0xe0, 0xd8, 0xf2, 0x73, 0x19, 0xda, 0xa, 0x1d, 0xcc, - 0xea, 0x28, 0xa2, 0xbf, 0x32, 0x3c, 00, 0xae, 0x8f, 0xe1, - 0xd6, 0x8c, 0x75, 0xff, 00, 0x1b, 0xe8, 0xd6, 0x7b, 0x77, - 0x23, 0x5c, 0x2b, 0xb8, 0xc7, 0xf0, 0x2f, 0xcc, 0xdf, 0xa0, - 0x35, 0xce, 0x57, 0xb0, 0x7e, 0xcd, 0x9a, 0x3f, 0xda, 0x7c, - 0x49, 0xa9, 0x6a, 0x2c, 0x32, 0xb6, 0xb6, 0xe2, 0x35, 0x3f, - 0xed, 0x39, 0xff, 00, 0x5, 0x3f, 0x9d, 0x7a, 0x59, 0x6d, - 0xf, 0xac, 0xe3, 0x29, 0xd2, 0xee, 0xff, 00, 0x5, 0xab, - 0x37, 0xa1, 0xf, 0x69, 0x56, 0x31, 0x3e, 0x8b, 0xa2, 0x8a, - 0x2b, 0xf6, 0xe3, 0xeb, 0x82, 0x8a, 0x28, 0xa0, 0x8, 0xee, - 0x26, 0x5b, 0x6b, 0x79, 0x65, 0x73, 0x84, 0x8d, 0x4b, 0x13, - 0xec, 0x6, 0x6b, 0xe2, 0x2d, 0x52, 0xf9, 0xf5, 0x3d, 0x4e, - 0xee, 0xf2, 0x43, 0x97, 0xb8, 0x95, 0xe5, 0x6f, 0xab, 0x12, - 0x7f, 0xad, 0x7d, 0x89, 0xe3, 0xa9, 0xda, 0xd7, 0xc1, 0x5a, - 0xf4, 0xa8, 0x70, 0xc9, 0x63, 0x31, 0x7, 0xdf, 0x61, 0xaf, - 0x8c, 0x6b, 0xf3, 0xce, 0x2a, 0xa8, 0xf9, 0xa9, 0x53, 0xf5, - 0x7f, 0x91, 0xe1, 0xe6, 0x52, 0xd6, 0x31, 0xa, 0x28, 0xa2, - 0xbe, 0x8, 0xf1, 0x82, 0xba, 0xbf, 0x85, 0x9a, 0x60, 0xd5, - 0xbe, 0x20, 0xe8, 0x70, 0x30, 0xca, 0x2d, 0xc0, 0x95, 0xbe, - 0x88, 0xb, 0x7f, 0xec, 0xb5, 0xca, 0x57, 0xa2, 0x7c, 0x4, - 0x50, 0x7e, 0x24, 0xd9, 0x13, 0xd4, 0x45, 0x29, 0x1f, 0xf7, - 0xc1, 0xaf, 0x43, 0x2f, 0x82, 0xa9, 0x8b, 0xa5, 0x17, 0xd6, - 0x4b, 0xf3, 0x36, 0xa2, 0xb9, 0xaa, 0xc5, 0x79, 0xa3, 0xea, - 0x7a, 0x28, 0xa2, 0xbf, 0x70, 0x3e, 0xbc, 0x28, 0xa2, 0x8a, - 00, 0x28, 0xa2, 0x8a, 00, 0x2b, 0x95, 0xf8, 0xa3, 0xaa, - 0xd, 0x1f, 0xe1, 0xfe, 0xb9, 0x71, 0x9c, 0x31, 0xb7, 0x68, - 0x97, 0xfd, 0xe7, 0xf9, 0x47, 0xf3, 0xae, 0xaa, 0xbc, 0x67, - 0xf6, 0x92, 0xf1, 0x1a, 0xdb, 0x68, 0xb6, 0x1a, 0x2a, 0x37, - 0xef, 0x6e, 0xa4, 0xf3, 0xe4, 0x1e, 0x88, 0xbd, 0x3f, 0x36, - 0x3f, 0xf8, 0xed, 0x79, 0x99, 0x9d, 0x75, 0x86, 0xc1, 0xd4, - 0xa8, 0xfb, 0x69, 0xea, 0xf4, 0x47, 0x3e, 0x22, 0x7e, 0xce, - 0x94, 0xa4, 0x7c, 0xf5, 0x45, 0x14, 0x57, 0xe2, 0x47, 0xc9, - 0x5, 0x14, 0x51, 0x40, 0x1d, 0x6f, 0xc2, 0x7b, 0x3f, 0xb7, - 0x7c, 0x45, 0xd0, 0xa3, 0xc6, 0x42, 0xdc, 0x9, 0xf, 0xfc, - 0x4, 0x16, 0xfe, 0x95, 0xf5, 0xf5, 0x7c, 0xe3, 0xfb, 0x37, - 0xe8, 0x7f, 0x6c, 0xf1, 0x45, 0xee, 0xa6, 0xcb, 0x94, 0xb2, - 0x83, 0x62, 0x9f, 0xf6, 0xdc, 0xe3, 0xf9, 0x6, 0xfc, 0xeb, - 0xe8, 0xea, 0xfd, 0x4f, 0x86, 0x68, 0xba, 0x78, 0x27, 0x37, - 0xf6, 0x9b, 0x7f, 0x76, 0x87, 0xd1, 0x65, 0xf1, 0xb5, 0x2b, - 0xf7, 0x61, 0x5e, 0x6b, 0xf1, 0x7f, 0xe1, 0x58, 0xf1, 0xbd, - 0xa2, 0xdf, 0xd8, 0x5, 0x8f, 0x58, 0xb7, 0x42, 00, 0x3c, - 0x9, 0xd7, 0xfb, 0xa4, 0xfa, 0xfa, 0x1f, 0xc3, 0xe9, 0xe9, - 0x54, 0x57, 0xd1, 0xe2, 0x70, 0xd4, 0xf1, 0x74, 0x9d, 0x1a, - 0xaa, 0xe9, 0x9d, 0xf5, 0x29, 0xc6, 0xac, 0x5c, 0x65, 0xb1, - 0xf0, 0xdd, 0xed, 0x8d, 0xc6, 0x9b, 0x75, 0x25, 0xb5, 0xd4, - 0x32, 0x5b, 0xdc, 0x46, 0x76, 0xbc, 0x52, 0x2e, 0xd6, 0x53, - 0xee, 0x2a, 0xa, 0xfb, 0x17, 0xc6, 0x3f, 0xf, 0x34, 0x4f, - 0x1c, 0x42, 0xa3, 0x52, 0xb6, 0xfd, 0xfa, 0xc, 0x25, 0xcc, - 0x47, 0x6c, 0x8b, 0xf8, 0xf7, 0x1e, 0xc7, 0x22, 0xbc, 0x3f, - 0xc5, 0x3f, 0xb3, 0xde, 0xbb, 0xa4, 0x34, 0x92, 0xe9, 0x4f, - 0x1e, 0xaf, 0x6a, 0x39, 0xa, 0xe, 0xc9, 0x80, 0xff, 00, - 0x74, 0xf0, 0x7f, 0x3, 0xf8, 0x57, 0xe6, 0x38, 0xee, 0x1f, - 0xc5, 0x61, 0x5b, 0x95, 0x25, 0xcf, 0x1f, 0x2d, 0xfe, 0x6b, - 0xfc, 0x8f, 0x9e, 0xad, 0x82, 0xa9, 0x4f, 0x58, 0xea, 0x8f, - 0x2a, 0xa2, 0xac, 0x5f, 0x69, 0xf7, 0x5a, 0x65, 0xc3, 0x41, - 0x79, 0x6f, 0x2d, 0xac, 0xcb, 0xd6, 0x39, 0x90, 0xab, 0xf, - 0xc0, 0xd5, 0x7a, 0xf9, 0x86, 0x9c, 0x5d, 0x99, 0xe7, 0xec, - 0x14, 0x51, 0x45, 0x20, 0xa, 0x28, 0xa2, 0x80, 0x25, 0xb5, - 0xbb, 0x9e, 0xc6, 0x75, 0x9a, 0xda, 0x69, 0x2d, 0xe6, 0x5e, - 0x56, 0x48, 0x9c, 0xab, 0xf, 0xa1, 0x15, 0xe9, 0x5e, 0x11, - 0xf8, 0xfb, 0xaf, 0x68, 0x6e, 0x91, 0x6a, 0x64, 0x6b, 0x36, - 0x9d, 0xf, 0x98, 0x42, 0xca, 0xbf, 0x46, 0xc7, 0x3f, 0x8e, - 0x7e, 0xb5, 0xe6, 0x14, 0x57, 0x66, 0x1b, 0x19, 0x5f, 0x9, - 0x2e, 0x6a, 0x13, 0x6b, 0xf2, 0xfb, 0xb6, 0x35, 0xa7, 0x56, - 0x74, 0x9d, 0xe0, 0xec, 0x7d, 0x8f, 0xe0, 0xdf, 0x1f, 0xe8, - 0xfe, 0x38, 0xb4, 0xf3, 0x74, 0xeb, 0x8f, 0xdf, 0x28, 0xfd, - 0xe5, 0xb4, 0xbf, 0x2c, 0xa9, 0xf5, 0x1d, 0xc7, 0xb8, 0xe2, - 0xba, 0x4a, 0xf8, 0x7b, 0x4b, 0xd5, 0x2e, 0xf4, 0x5d, 0x42, - 0xb, 0xdb, 0x19, 0xda, 0xde, 0xea, 0x16, 0xdc, 0x92, 0x27, - 0x50, 0x7f, 0xcf, 0x6a, 0xfa, 0xa3, 0xe1, 0x4f, 0xc4, 0x88, - 0xbc, 0x7d, 0xa3, 0x91, 0x36, 0x23, 0xd5, 0x6d, 0x80, 0x17, - 0x31, 0x81, 0x85, 0x6c, 0xf4, 0x75, 0xf6, 0x38, 0xfc, 0xf, - 0xe1, 0x5f, 0xa4, 0xe5, 0x19, 0xdc, 0x71, 0xcf, 0xd8, 0xd6, - 0x56, 0x9f, 0xe0, 0xff, 00, 0xe0, 0xf9, 0x1e, 0xf6, 0x17, - 0x16, 0xab, 0x7b, 0x93, 0xd1, 0xfe, 0x67, 0x73, 0x45, 0x14, - 0x57, 0xd5, 0x9e, 0x90, 0x51, 0x45, 0x14, 00, 0x57, 0xcc, - 0xff, 00, 0xb4, 0xf5, 0xdf, 0xef, 0xd9, 0x33, 0xd1, 0x71, - 0x5f, 0x4c, 0x57, 0xc9, 0xbf, 0xb4, 0xbd, 0xd1, 0x7d, 0x52, - 0x55, 0xcf, 0xf1, 0x1a, 0xf9, 0xdc, 0xf6, 0x56, 0xc1, 0xb5, - 0xdc, 0xf1, 0xb3, 0x69, 0x72, 0xe1, 0x64, 0x7c, 0xdf, 0xac, - 0x36, 0xdb, 0x77, 0x3e, 0xd5, 0x4f, 0xf6, 0x27, 0xb6, 0xfe, - 0xd1, 0xfd, 0xb2, 0xf4, 0xc7, 0x20, 0x37, 0xd9, 0x34, 0xab, - 0xe9, 0xf9, 0xed, 0x95, 0x54, 0xcf, 0xfe, 0x3f, 0x53, 0x78, - 0x81, 0xf6, 0xd9, 0xc8, 0x7f, 0xd9, 0x35, 0x77, 0xfe, 0x9, - 0xe7, 0x69, 0xf6, 0xef, 0xda, 0xbb, 0x5c, 0xb9, 0xea, 0x2d, - 0x3c, 0x3b, 0x3f, 0xe6, 0xd3, 0xc2, 0x3f, 0xa1, 0xaf, 0x27, - 0x23, 0x8e, 0xb7, 0x3f, 0x34, 0xc8, 0x23, 0xcf, 0x9b, 0xa7, - 0xd9, 0x33, 0xf4, 0xee, 0x8a, 0x28, 0xaf, 0xb8, 0x3f, 0x64, - 0xa, 0x28, 0xa2, 0x80, 0x23, 0xb9, 0xb8, 0x8e, 0xd2, 0xde, - 0x59, 0xe5, 0x60, 0x91, 0x44, 0xa5, 0xdd, 0x8f, 0x40, 00, - 0xc9, 0x35, 0xf9, 0xe1, 0xe3, 0xcf, 0x13, 0xc9, 0xe3, 0x3f, - 0x19, 0xea, 0xfa, 0xcb, 0x9c, 0x8b, 0xbb, 0x86, 0x68, 0xfd, - 0xa3, 0x1c, 0x20, 0xff, 00, 0xbe, 0x40, 0xaf, 0xaf, 0x3f, - 0x69, 0x7f, 0x18, 0x9f, 0xa, 0x7c, 0x33, 0xbb, 0x82, 0x17, - 0xdb, 0x77, 0xaa, 0xb7, 0xd8, 0xa3, 0xf5, 0xda, 0xc0, 0x97, - 0x3f, 0xf7, 0xc8, 0x3f, 0x98, 0xaf, 0x8d, 0x7c, 0x3d, 0xa5, - 0x3e, 0xb3, 0xac, 0xd9, 0xd9, 0x46, 0x9, 0x69, 0xa4, 0x54, - 00, 0x7b, 0x9a, 0xf8, 0x7e, 0x20, 0xc4, 0x39, 0x4e, 0x18, - 0x78, 0xf4, 0xd7, 0xe6, 0xf6, 0x3e, 0xb, 0x88, 0x6b, 0xba, - 0xb5, 0xa9, 0xe1, 0x21, 0xd3, 0x57, 0xea, 0xf6, 0xfe, 0xbc, - 0xcf, 0xab, 0x3f, 0x65, 0x6f, 0x8, 0x7f, 0x65, 0x78, 0x5a, - 0x6d, 0x5e, 0x58, 0xf6, 0xcd, 0x76, 0xc5, 0x54, 0x91, 0xfc, - 0x22, 0xbd, 0xd6, 0xb2, 0xbc, 0x2d, 0xa2, 0xc7, 0xe1, 0xef, - 0xf, 0xd8, 0xe9, 0xf1, 0x28, 0x55, 0x82, 0x20, 0xbc, 0xe, - 0xfd, 0xeb, 0x56, 0xbe, 0xab, 0x5, 0x87, 0x58, 0x5c, 0x3c, - 0x29, 0x76, 0x5f, 0x8f, 0x53, 0xec, 0xb0, 0x94, 0x16, 0x1e, - 0x84, 0x69, 0x2e, 0x88, 0x28, 0xa2, 0x8a, 0xee, 0x3a, 0xc2, - 0x8a, 0x28, 0xa0, 0xf, 0xcb, 0xbf, 0xf8, 0x2d, 0x1f, 0xc6, - 0x4b, 0xfb, 0x3b, 0x6f, 0x5, 0xfc, 0x31, 0xb3, 0x73, 0x15, - 0x8d, 0xea, 0x36, 0xb5, 0xa8, 0x60, 0x90, 0x65, 0xda, 0xc6, - 0x38, 0x50, 0xf6, 0x20, 0x1d, 0xed, 0xf5, 0xb, 0xe9, 0x5f, - 0x9b, 0x5f, 0xb, 0x34, 0xfd, 0x7b, 0xc5, 0x3e, 0x3e, 0xf0, - 0xe7, 0x86, 0xb4, 0x3d, 0x52, 0xf3, 0x4f, 0xbc, 0xd5, 0xf5, - 0x8, 0x2c, 0x22, 0x92, 0xda, 0x77, 0x8f, 0x61, 0x92, 0x40, - 0x9b, 0xbe, 0x52, 0x3a, 0x67, 0x3f, 0x85, 0x7e, 0x9a, 0xff, - 00, 0xc1, 0x49, 0xec, 0xfe, 0xd, 0xfe, 0xd2, 0xba, 0x1d, - 0xa6, 0xa7, 0xe1, 0xbf, 0x8a, 0xfe, 0x12, 0xb7, 0xf8, 0x87, - 0xe1, 0x7f, 0x36, 0xd9, 0x74, 0xfb, 0xbd, 0x52, 0x28, 0x56, - 0xee, 0x2d, 0xdf, 0x3c, 0x5, 0x98, 0x80, 0xae, 0xac, 0x9, - 0x5c, 0x9c, 0x64, 0xb0, 0x38, 0xce, 0x47, 0xe5, 0xa7, 0x85, - 0xfc, 0x47, 0xa8, 0x78, 0xb, 0xc5, 0xfa, 0x56, 0xb9, 0xa6, - 0xca, 0xb1, 0xea, 0x9a, 0x3d, 0xec, 0x77, 0x70, 0x48, 0xac, - 0x1d, 0x44, 0x91, 0x38, 0x65, 0xe4, 0x1c, 0x30, 0xca, 0xf6, - 0x38, 0x22, 0xa9, 0x10, 0xf7, 0x3f, 0xa6, 0x8f, 0x9, 0x78, - 0x6a, 0xd7, 0xc1, 0xde, 0x17, 0xd2, 0xb4, 0x2b, 0x22, 0xe6, - 0xd7, 0x4e, 0xb6, 0x8e, 0xd6, 0x36, 0x91, 0x8b, 0x3b, 0x4, - 0x50, 0x37, 0x31, 0x3c, 0x92, 0x71, 0x92, 0x4f, 0x52, 0x6b, - 0x5e, 0xbe, 0x30, 0xf8, 0x1b, 0xff, 00, 0x5, 0x54, 0xf8, - 0x37, 0xf1, 0x2b, 0x43, 0xb4, 0x5f, 0x15, 0xea, 0xa7, 0xc0, - 0x3e, 0x22, 0xd8, 0x5, 0xc5, 0xa6, 0xa6, 0x8c, 0xd6, 0xc5, - 0xf1, 0xc9, 0x8e, 0x75, 0x5, 0x76, 0xfa, 0x6e, 0xda, 0x7d, - 0xab, 0xd9, 0xad, 0x7f, 0x6d, 0x3f, 0x80, 0xf7, 0x87, 0x11, - 0xfc, 0x5b, 0xf0, 0x88, 0x3f, 0xf4, 0xd3, 0x55, 0x89, 0x3f, - 0xf4, 0x22, 0x2a, 0x4b, 0x3d, 0xa6, 0x8a, 0xf3, 0x1d, 0x3f, - 0xf6, 0xa0, 0xf8, 0x3d, 0xab, 0x48, 0x12, 0xcb, 0xe2, 0x97, - 0x83, 0xee, 0x9c, 0xf4, 0x58, 0xb5, 0xcb, 0x66, 0x3f, 0xfa, - 0x1d, 0x77, 0x7a, 0xf, 0x89, 0xb4, 0x8f, 0x14, 0xda, 0x35, - 0xd6, 0x8d, 0xaa, 0xd9, 0x6a, 0xd6, 0xaa, 0xdb, 0xc, 0xd6, - 0x37, 0x9, 0x32, 0x6, 0xc6, 0x70, 0x4a, 0x92, 0x33, 0x82, - 0x3f, 0x3a, 00, 0xd3, 0xaf, 0x36, 0xf8, 0xf9, 0xe2, 0x1f, - 0xec, 0x6f, 0x2, 0x4b, 0x6b, 0x1c, 0x9b, 0x27, 0xd4, 0x24, - 0x10, 00, 0xf, 0x3b, 0x3a, 0xbf, 0xe8, 0x31, 0xff, 00, - 0x2, 0xaf, 0x49, 0xaf, 0x98, 0xff, 00, 0x68, 0x3f, 0x10, - 0x7f, 0x6a, 0xf8, 0xdf, 0xec, 0x28, 0xfb, 0xa0, 0xd3, 0xe2, - 0x11, 0xe0, 0x74, 0xde, 0xdf, 0x33, 0x7f, 0xec, 0xa3, 0xf0, - 0xaf, 0x3, 0x3c, 0xc5, 0x7d, 0x57, 0x3, 0x36, 0xb7, 0x96, - 0x8b, 0xe7, 0xff, 00, 0x2, 0xe7, 0x16, 0x32, 0xa7, 0xb3, - 0xa2, 0xfc, 0xf4, 0x3c, 0xc2, 0x8a, 0x28, 0xaf, 0xc7, 0x8f, - 0x97, 0xa, 0xb7, 0xa4, 0xe9, 0xb3, 0x6b, 0x3a, 0xa5, 0xa5, - 0x8c, 00, 0xb4, 0xd7, 0x32, 0xac, 0x4a, 00, 0xee, 0x4e, - 0x2a, 0xa5, 0x7a, 0x8f, 0xec, 0xf3, 0xa0, 0x1d, 0x4f, 0xc6, - 0xad, 0x7e, 0xe9, 0x98, 0x74, 0xf8, 0x4b, 0xee, 0x23, 0x8f, - 0x31, 0xbe, 0x55, 0x1f, 0x96, 0xe3, 0xf8, 0x57, 0x6e, 0xb, - 0xe, 0xf1, 0x58, 0x98, 0x51, 0x5d, 0x5f, 0xe1, 0xd7, 0xf0, - 0x35, 0xa5, 0xf, 0x69, 0x35, 0xe, 0xe7, 0xd2, 0x3a, 0x75, - 0x8c, 0x7a, 0x66, 0x9f, 0x6d, 0x69, 0x8, 0xdb, 0x14, 0x11, - 0xac, 0x48, 0x3d, 0x80, 0xc0, 0xfe, 0x55, 0x66, 0x8a, 0x2b, - 0xf7, 0x24, 0x94, 0x55, 0x91, 0xf6, 0x9, 0x5b, 0x40, 0xaf, - 0x11, 0xfd, 0xa6, 0xec, 0x43, 0x58, 0x68, 0x57, 0x9d, 0xd2, - 0x59, 0x62, 0x3f, 0xf0, 0x20, 0xf, 0xfe, 0xcb, 0x5e, 0xdd, - 0x5e, 0x4f, 0xfb, 0x48, 0xc3, 0xe6, 0x78, 0x26, 0xce, 0x4c, - 0x7f, 0xab, 0xbe, 0x43, 0xf9, 0xa3, 0x8a, 0xf1, 0xb3, 0xa8, - 0x73, 0xe5, 0xf5, 0x57, 0x95, 0xfe, 0xe7, 0x73, 0x93, 0x16, - 0xaf, 0x42, 0x47, 0xcd, 0x94, 0x51, 0x45, 0x7e, 0x32, 0x7c, - 0xa8, 0x56, 0xc7, 0x83, 0x6f, 0x8e, 0x9b, 0xe2, 0xdd, 0x1a, - 0xe8, 0x1c, 0x79, 0x57, 0x71, 0x31, 0x3e, 0xdb, 0x86, 0x7f, - 0x4a, 0xc7, 0xa7, 0x47, 0x21, 0x86, 0x45, 0x91, 0x7e, 0xf2, - 0x90, 0xc3, 0xf0, 0xad, 0x29, 0xcf, 0xd9, 0xce, 0x33, 0x5d, - 0x1d, 0xc7, 0x17, 0x66, 0x99, 0xf7, 0x4d, 0x15, 0x5b, 0x4c, - 0xb9, 0x17, 0xba, 0x75, 0xad, 0xc0, 0xe9, 0x2c, 0x49, 0x20, - 0xfc, 0x40, 0x35, 0x66, 0xbf, 0x7b, 0x4e, 0xe9, 0x34, 0x7d, - 0x9a, 0xd4, 0x28, 0xa2, 0x8a, 0x63, 0xa, 0x28, 0xa2, 0x80, - 0x38, 0xbf, 0x8c, 0x3a, 0xc8, 0xd1, 0x3e, 0x1e, 0x6a, 0xd2, - 0x6, 0xdb, 0x24, 0xf1, 0xfd, 0x99, 0x30, 0x79, 0x25, 0xce, - 0xe, 0x3f, 0xc, 0x9f, 0xc2, 0xbe, 0x48, 0xaf, 0x75, 0xfd, - 0xa6, 0x35, 0xa3, 0x9d, 0x1f, 0x49, 0x46, 0xf9, 0x7e, 0x7b, - 0x99, 0x14, 0x7f, 0xdf, 0x2b, 0xff, 00, 0xb3, 0x57, 0x85, - 0x57, 0xe5, 0x1c, 0x47, 0x88, 0xf6, 0xd8, 0xde, 0x45, 0xb4, - 0x12, 0x5f, 0xaf, 0xea, 0x7c, 0xde, 0x3e, 0x7c, 0xd5, 0xad, - 0xd8, 0x28, 0xa2, 0x8a, 0xf9, 0x63, 0xce, 0xa, 0xfa, 0x7b, - 0xf6, 0x7d, 0xd0, 0xff, 00, 0xb2, 0xfc, 0x8, 0x2e, 0xd9, - 0x71, 0x2d, 0xfc, 0xcd, 0x2e, 0x48, 0xe7, 0x68, 0xf9, 0x57, - 0xf9, 0x13, 0xf8, 0xd7, 0xcc, 0x71, 0x44, 0xd3, 0x4a, 0x91, - 0xa0, 0x2c, 0xee, 0x42, 0xa8, 0x1d, 0xc9, 0xe9, 0x5f, 0x6b, - 0x78, 0x67, 0x49, 0x5d, 0xb, 0xc3, 0xda, 0x6e, 0x9c, 0xbf, - 0xf2, 0xed, 0x6e, 0x91, 0x1f, 0x72, 0x14, 0x64, 0xfe, 0x75, - 0xf6, 0x9c, 0x2f, 0x43, 0x9f, 0x11, 0x3a, 0xcf, 0xec, 0xaf, - 0xc5, 0xff, 00, 0xc0, 0x3d, 0x5c, 0xbe, 0x17, 0xa8, 0xe5, - 0xd8, 0xd3, 0xa2, 0x8a, 0x2b, 0xf4, 0xc3, 0xe8, 0x2, 0x8a, - 0x28, 0xa0, 0xc, 0x3f, 0x1c, 0xdb, 0xb5, 0xd7, 0x82, 0xf5, - 0xd8, 0x50, 0x65, 0xde, 0xc6, 0x65, 00, 0x7a, 0xec, 0x35, - 0xf1, 0x87, 0x5a, 0xfb, 0xa2, 0x58, 0x96, 0x78, 0x9e, 0x37, - 0x19, 0x47, 0x52, 0xa4, 0x1e, 0xe0, 0xd7, 0xc4, 0xfe, 0x21, - 0xd2, 0x5f, 0x42, 0xd7, 0x75, 0xd, 0x3a, 0x40, 0x77, 0x5b, - 0x4e, 0xf1, 0x73, 0xdc, 0x3, 0xc1, 0xfc, 0x46, 0xd, 0x7e, - 0x7d, 0xc5, 0x54, 0x9d, 0xe9, 0x55, 0xe9, 0xaa, 0xfd, 0x4f, - 0x13, 0x32, 0x8e, 0xb1, 0x91, 0x9f, 0x45, 0x14, 0x57, 0xc0, - 0x1e, 0x28, 0x57, 0x5f, 0xf0, 0x97, 0x55, 0x5d, 0x1f, 0xe2, - 0x1e, 0x8b, 0x33, 0x9c, 0x23, 0xcd, 0xe4, 0x31, 0x3f, 0xed, - 0x82, 0xa3, 0xf5, 0x22, 0xb9, 0xa, 0x74, 0x52, 0xbc, 0x32, - 0xa4, 0x91, 0xb1, 0x57, 0x42, 0x19, 0x58, 0x75, 0x4, 0x74, - 0x35, 0xbd, 0xa, 0xae, 0x85, 0x58, 0x55, 0x5f, 0x65, 0xa7, - 0xf7, 0x15, 0x9, 0x72, 0x49, 0x4b, 0xb1, 0xf7, 0x4d, 0x15, - 0xcb, 0x7c, 0x38, 0xf1, 0xb4, 0x1e, 0x39, 0xf0, 0xcd, 0xbd, - 0xea, 0xb2, 0xad, 0xda, 0xf, 0x2e, 0xe6, 0x10, 0x79, 0x47, - 0x1f, 0xd0, 0xf5, 0x1f, 0x5a, 0xea, 0x6b, 0xf7, 0x3a, 0x35, - 0x61, 0x5e, 0x9c, 0x6a, 0xd3, 0x77, 0x4f, 0x53, 0xec, 0x63, - 0x25, 0x38, 0xa9, 0x47, 0x66, 0x14, 0x51, 0x45, 0x6c, 0x50, - 0x51, 0x45, 0x23, 0x30, 0x45, 0x2c, 0xc4, 0x2a, 0x81, 0x92, - 0x4f, 0x41, 0x40, 0x11, 0xdd, 0x5d, 0x45, 0x63, 0x6d, 0x2d, - 0xc4, 0xf2, 0x2c, 0x50, 0x44, 0x85, 0xdd, 0xd8, 0xe0, 0x2a, - 0x81, 0x92, 0x4d, 0x7c, 0x79, 0xf1, 0x7, 0xc5, 0xaf, 0xe3, - 0x5f, 0x15, 0x5e, 0x6a, 0x64, 0x15, 0x85, 0x8f, 0x97, 0x2, - 0x1f, 0xe1, 0x8d, 0x78, 0x5f, 0xcf, 0xaf, 0xd4, 0x9a, 0xef, - 0xfe, 0x36, 0x7c, 0x58, 0x4d, 0x74, 0xbe, 0x83, 0xa3, 0xcd, - 0xba, 0xc1, 0x1b, 0xfd, 0x22, 0xe5, 0x1b, 0x89, 0x88, 0xfe, - 0x11, 0xfe, 0xc8, 0xf5, 0xee, 0x7d, 0xba, 0xf8, 0xed, 0x7e, - 0x63, 0xc4, 0x39, 0x9c, 0x71, 0x33, 0x58, 0x6a, 0x2e, 0xf1, - 0x8e, 0xef, 0xbb, 0xff, 00, 0x80, 0x7c, 0xf6, 0x3b, 0x10, - 0xaa, 0x3f, 0x67, 0x1d, 0x90, 0x51, 0x45, 0x15, 0xf1, 0xa7, - 0x96, 0x14, 0x51, 0x5d, 0x67, 0xc3, 0x2f, 0x6, 0x3f, 0x8d, - 0xfc, 0x57, 0x6d, 0x66, 0xca, 0xdf, 0x63, 0x8f, 0xf7, 0xd7, - 0x2e, 0x7, 0x44, 0x1d, 0xbf, 0x13, 0x81, 0xf8, 0xfb, 0x56, - 0xd4, 0x68, 0xcf, 0x11, 0x52, 0x34, 0xa9, 0xad, 0x5b, 0xb1, - 0x51, 0x8b, 0x9c, 0x94, 0x56, 0xec, 0xf7, 0xbf, 0x81, 0x7e, - 0x17, 0x6f, 0xe, 0xf8, 0x1e, 0x19, 0xa6, 0x5d, 0xb7, 0x3a, - 0x83, 0x7d, 0xa9, 0x81, 0x1c, 0x85, 0x20, 0x4, 0x1f, 0x90, - 0xcf, 0xe3, 0x5e, 0x89, 0x4d, 0x8e, 0x35, 0x8a, 0x35, 0x44, - 0x50, 0xa8, 0xa0, 0x28, 0x51, 0xd0, 0xa, 0x75, 0x7e, 0xe3, - 0x86, 0xa1, 0x1c, 0x2d, 0x18, 0x51, 0x8e, 0xd1, 0x56, 0x3e, - 0xbe, 0x9c, 0x15, 0x38, 0x28, 0x2e, 0x81, 0x45, 0x14, 0x57, - 0x49, 0xa0, 0x51, 0x45, 0x14, 0x1, 0x53, 0x51, 0xd2, 0x2c, - 0x75, 0x78, 0x4c, 0x37, 0xd6, 0x70, 0x5e, 0x44, 0x7a, 0xa4, - 0xf1, 0x87, 0x1f, 0xad, 0x79, 0xf6, 0xbf, 0xfb, 0x3f, 0xf8, - 0x63, 0x57, 0x2d, 0x25, 0xa2, 0xcf, 0xa5, 0x4a, 0x7f, 0xe7, - 0xdd, 0xf2, 0x99, 0xff, 00, 0x75, 0xb3, 0xfa, 0x11, 0x5e, - 0x99, 0x45, 0x72, 0x57, 0xc1, 0xe1, 0xf1, 0x2a, 0xd5, 0xa0, - 0xa5, 0xfd, 0x77, 0x32, 0x9d, 0x28, 0x54, 0xf8, 0xd5, 0xcf, - 0x9b, 0x3c, 0x45, 0xfb, 0x3a, 0xeb, 0xba, 0x68, 0x69, 0x34, - 0xbb, 0x88, 0x75, 0x58, 0x87, 0x44, 0xff, 00, 0x55, 0x26, - 0x3e, 0x84, 0xe0, 0xfe, 0x75, 0xe6, 0xba, 0xb6, 0x87, 0xa8, - 0x68, 0x37, 0x3f, 0x67, 0xd4, 0x6c, 0xa7, 0xb2, 0x9b, 0xfb, - 0xb3, 0x21, 0x5c, 0xfd, 0x3d, 0x7f, 0xa, 0xfb, 0x76, 0xa9, - 0xea, 0x9a, 0x45, 0x96, 0xb7, 0x68, 0xf6, 0xb7, 0xf6, 0xb1, - 0x5d, 0xdb, 0xb7, 0x58, 0xe5, 0x50, 0xc3, 0xff, 00, 0xad, - 0x5f, 0x2f, 0x8a, 0xe1, 0x8c, 0x3d, 0x4b, 0xbc, 0x3c, 0x9c, - 0x5f, 0x6d, 0xd7, 0xf9, 0x9e, 0x75, 0x4c, 0xbe, 0x12, 0xd6, - 0xe, 0xc7, 0xc4, 0x14, 0x57, 0xa5, 0x7c, 0x60, 0xf8, 0x56, - 0xbe, 0x5, 0xb8, 0x8a, 0xfb, 0x4f, 0x2f, 0x26, 0x93, 0x72, - 0xe5, 0x70, 0xfc, 0x98, 0x5f, 0xa8, 0x5c, 0xf7, 0x4, 0x67, - 0x7, 0xda, 0xbc, 0xd6, 0xbf, 0x3c, 0xc5, 0x61, 0xaa, 0xe0, - 0xea, 0xba, 0x35, 0x55, 0x9a, 0x3c, 0x4a, 0x94, 0xe5, 0x4a, - 0x4e, 0x32, 0xdc, 0x28, 0xa2, 0x8a, 0xe5, 0x33, 0xa, 0xea, - 0x7e, 0x19, 0x78, 0x96, 0x5f, 0xb, 0x78, 0xd3, 0x4d, 0xba, - 0x46, 0x22, 0x19, 0x25, 0x10, 0x4e, 0xb9, 0xe1, 0xa3, 0x62, - 0x1, 0xcf, 0xd3, 0x83, 0xf8, 0x57, 0x2d, 0x4a, 0xac, 0x55, - 0x81, 0x7, 0x4, 0x1c, 0x82, 0x2b, 0x6a, 0x35, 0x65, 0x42, - 0xac, 0x6a, 0xc7, 0x74, 0xee, 0x54, 0x24, 0xe1, 0x25, 0x25, - 0xd0, 0xfb, 0xaa, 0x8a, 0x82, 0xc5, 0xda, 0x5b, 0x2b, 0x77, - 0x6e, 0x19, 0xa3, 0x52, 0x7e, 0xb8, 0xa9, 0xeb, 0xf7, 0x94, - 0xee, 0xae, 0x7d, 0x9a, 0xd4, 0x28, 0xa2, 0x8a, 0x60, 0x21, - 0x38, 0x15, 0xf1, 0xaf, 0xed, 0xf, 0x77, 0xe7, 0x6b, 0xb2, - 0x8f, 0x57, 0x3f, 0xce, 0xbe, 0xc8, 0x94, 0xed, 0x89, 0xcf, - 0xa2, 0x93, 0x5f, 0x10, 0x7c, 0x73, 0xb9, 0xf3, 0xbc, 0x45, - 0x2f, 0xfb, 0xed, 0xfc, 0xeb, 0xe5, 0x78, 0x86, 0x56, 0xc3, - 0xc6, 0x3d, 0xd9, 0xf3, 0xb9, 0xec, 0xb9, 0x70, 0xac, 0xf1, - 0x1f, 0x14, 0xc9, 0xb2, 0xc2, 0x6f, 0xf7, 0x4d, 0x76, 0x9f, - 0xf0, 0x4c, 0x9d, 0x3c, 0x5d, 0x7c, 0x65, 0xf8, 0x91, 0xa9, - 0x11, 0x9f, 0xb3, 0xe9, 0x96, 0xd6, 0xe1, 0xb1, 0xfd, 0xf9, - 0x59, 0x8f, 0xfe, 0x81, 0x5c, 0xf, 0x8d, 0x25, 0xd9, 0xa6, - 0x4d, 0xf4, 0x35, 0xeb, 0xff, 00, 0xf0, 0x4b, 0x2b, 0xd, - 0xf7, 0x3f, 0x15, 0x35, 0x22, 0x3e, 0xfd, 0xcd, 0x95, 0xba, - 0x9f, 0xf7, 0x52, 0x46, 0x3f, 0xfa, 0x10, 0xac, 0x72, 0x38, - 0xe9, 0x73, 0xe1, 0xb8, 0x5e, 0x3c, 0xd9, 0x95, 0x49, 0x76, - 0x47, 0xdf, 0x74, 0x51, 0x45, 0x7d, 0x81, 0xfa, 0xd8, 0x51, - 0x45, 0x66, 0x78, 0x9b, 0x5d, 0x83, 0xc3, 0x1e, 0x1e, 0xd4, - 0x75, 0x6b, 0x93, 0x88, 0x6c, 0xe0, 0x79, 0xd8, 0x67, 0x19, - 0xda, 0x33, 0x8f, 0xa9, 0xe9, 0x4a, 0x4d, 0x45, 0x36, 0xfa, - 0x13, 0x29, 0x28, 0xa7, 0x27, 0xb2, 0x3e, 0x49, 0xfd, 0xaa, - 0xfc, 0x62, 0xda, 0xef, 0xc4, 0x25, 0xd1, 0xe3, 0x72, 0x6d, - 0x34, 0x88, 0x82, 0x15, 0xc8, 0x20, 0xca, 0xe0, 0x33, 0x1f, - 0xcb, 0x68, 0xfc, 0xd, 0x27, 0xec, 0xc1, 0xe1, 0xf, 0xed, - 0xcf, 0x1b, 0xad, 0xfc, 0xd1, 0xee, 0xb7, 0xb2, 0x52, 0xf9, - 0x23, 0x8d, 0xdd, 0xab, 0xc8, 0xf5, 0x6d, 0x52, 0xe3, 0x5e, - 0xd5, 0xef, 0x35, 0x1b, 0xa7, 0x32, 0x5c, 0xdd, 0xcc, 0xd3, - 0x48, 0xc7, 0xd5, 0x8e, 0x6b, 0xec, 0x9f, 0xd9, 0xaf, 0xc2, - 0x3f, 0xf0, 0x8f, 0x78, 0x12, 0x3b, 0xb9, 0x13, 0x6d, 0xc5, - 0xe3, 0x17, 0x39, 0xfe, 0xef, 0x6a, 0xfc, 0xef, 0x8, 0x9e, - 0x63, 0x99, 0x7b, 0x49, 0x6d, 0x7b, 0xfc, 0x96, 0xdf, 0xa1, - 0xf9, 0xd6, 0x5c, 0x9e, 0x63, 0x99, 0x4b, 0x11, 0x2d, 0x93, - 0xbf, 0xf9, 0x1e, 0xbb, 0x45, 0x14, 0x57, 0xe8, 0xa7, 0xe8, - 0xe1, 0x45, 0x79, 0xef, 0xed, 0x1, 0xf1, 0x6a, 0xcb, 0xe0, - 0x67, 0xc1, 0xbf, 0x15, 0xf8, 0xde, 0xf9, 0x94, 0x2e, 0x93, - 0x62, 0xf2, 0xc2, 0x8d, 0xd2, 0x59, 0xc8, 0xdb, 0xa, 0x7f, - 0xc0, 0x9c, 0xa8, 0xfc, 0x6b, 0xf2, 0x66, 0xc3, 0xfe, 0xb, - 0x29, 0xf1, 0xba, 0xdd, 0x97, 0xed, 0x5a, 0x2f, 0x83, 0xae, - 0xd0, 0x75, 0x2, 0xc2, 0xe2, 0x32, 0x7f, 0x11, 0x39, 0xfe, - 0x54, 0xa, 0xf6, 0x3f, 0x6a, 0x2b, 0xc7, 0x7f, 0x6b, 0xaf, - 0x8c, 0xf0, 0x7c, 0x4, 0xfd, 0x9e, 0xbc, 0x63, 0xe2, 0xe7, - 0x90, 0x2d, 0xe4, 0x36, 0x8d, 0x6d, 0x60, 0xb9, 0xc1, 0x7b, - 0xa9, 0x7f, 0x77, 0x10, 0x1f, 0x46, 0x6d, 0xc7, 0xd9, 0x4d, - 0x5f, 0xfd, 0x98, 0xbe, 0x21, 0x78, 0xaf, 0xe2, 0xc7, 0xc1, - 0x1f, 0xc, 0xf8, 0xc3, 0xc6, 0x5a, 0x5d, 0x96, 0x8b, 0xac, - 0x6b, 0x50, 0x7d, 0xb1, 0x6c, 0x6c, 0x43, 0xec, 0x8e, 0x6, - 0x3f, 0xba, 0x27, 0x79, 0x27, 0x2c, 0xb8, 0x6f, 0xf8, 0x10, - 0x15, 0x6f, 0xe3, 0x9f, 0xec, 0xf9, 0xe0, 0xaf, 0xda, 0x37, - 0xc3, 0x16, 0x9e, 0x1e, 0xf1, 0xd5, 0x85, 0xce, 0xa5, 0xa4, - 0xdb, 0x5c, 0x8b, 0xc8, 0xe0, 0xb7, 0xbc, 0x96, 0xdf, 0xf7, - 0xa1, 0x59, 0x43, 0x13, 0x1b, 0x2, 0x70, 0x19, 0xb8, 0x3c, - 0x73, 0x40, 0xcf, 0xe6, 0xc6, 0x59, 0x5e, 0x79, 0x5e, 0x49, - 0x18, 0xbc, 0x8e, 0x4b, 0x33, 0x31, 0xc9, 0x24, 0xf5, 0x26, - 0x9b, 0x5f, 0xba, 0x57, 0x5f, 0xf0, 0x49, 0xbf, 0xd9, 0xda, - 0xe1, 0x8, 0x8f, 0x40, 0xd6, 0x2d, 0x4f, 0xf7, 0xa2, 0xd6, - 0x67, 0x27, 0xff, 00, 0x1e, 0x26, 0xb0, 0x6f, 0x7f, 0xe0, - 0x8f, 0x3f, 0x2, 0x6e, 0x3, 0x79, 0x17, 0x5e, 0x2a, 0xb4, - 0x27, 0xa6, 0xdd, 0x4a, 0x36, 0x3, 0xf3, 0x8a, 0xaa, 0xe4, - 0x72, 0xb3, 0xf1, 0x2e, 0x8a, 0xfd, 0x8a, 0xd4, 0x7f, 0xe0, - 0x8b, 0x1f, 0xc, 0x27, 0x2c, 0x6c, 0xfc, 0x6d, 0xe2, 0xab, - 0x4f, 0x40, 0xff, 00, 0x67, 0x90, 0xf, 0xfc, 0x86, 0xd, - 0x72, 0xf7, 0xdf, 0xf0, 0x44, 0x8d, 0x5, 0xd9, 0xbe, 0xc5, - 0xf1, 0x4b, 0x51, 0x88, 0x76, 0x13, 0xe9, 0x51, 0xbf, 0xf2, - 0x91, 0x68, 0xb8, 0xb9, 0x59, 0xf9, 0x39, 0x8f, 0x6a, 0xfe, - 0x88, 0x7f, 0x62, 0xf, 0x82, 0xb1, 0xfc, 0x7, 0xfd, 0x9a, - 0xbc, 0x1f, 0xe1, 0xd6, 0x89, 0x53, 0x53, 0xb8, 0xb6, 0x1a, - 0x96, 0xa2, 0xc0, 0x60, 0xb5, 0xcc, 0xe0, 0x3b, 0x3, 0xfe, - 0xe8, 0x2a, 0x9f, 0x45, 0x15, 0xf1, 0xe7, 0x83, 0xff, 00, - 0xe0, 0x8b, 0xe9, 0xe1, 0xcf, 0x1e, 0x68, 0x3a, 0xad, 0xff, - 00, 0xc4, 0x68, 0x75, 0x8d, 0x16, 0xc6, 0xfa, 0x1b, 0x9b, - 0xab, 0x6, 0xd2, 0x8c, 0x4f, 0x71, 0x1a, 0x38, 0x63, 0x1e, - 0xef, 0x34, 0x81, 0xbb, 0x18, 0xe9, 0xde, 0xbf, 0x4e, 0x95, - 0x42, 0x28, 0x55, 0x1, 0x54, 0xc, 00, 0x3a, 0x1, 0x49, - 0x94, 0x95, 0x8a, 0x9a, 0xbe, 0xa5, 0x16, 0x8f, 0xa5, 0x5d, - 0xdf, 0x4c, 0x40, 0x8a, 0xda, 0x26, 0x95, 0x89, 0xf4, 0x3, - 0x35, 0xf1, 0x4e, 0xa5, 0xa8, 0x4d, 0xaa, 0xea, 0x17, 0x37, - 0xb7, 0xd, 0xbe, 0x7b, 0x89, 0x1a, 0x57, 0x3e, 0xe4, 0xe4, - 0xd7, 0xd6, 0x7f, 0x14, 0xf4, 0xd, 0x5f, 0xc5, 0x1e, 0x13, - 0x97, 0x4b, 0xd1, 0xcc, 0x2b, 0x2d, 0xc4, 0x8a, 0x25, 0x33, - 0x39, 0x51, 0xe5, 0x8e, 0x48, 0x1c, 0x1e, 0xa4, 0xf, 0xd6, - 0xbc, 0x32, 0x4f, 0xd9, 0xfb, 0xc5, 0xc8, 0x38, 0x82, 0xd2, - 0x4f, 0xf7, 0x6e, 0x7, 0xf5, 0xc5, 0x7c, 0x17, 0x11, 0x51, - 0xc5, 0x62, 0xaa, 0x42, 0x9d, 0x1a, 0x6d, 0xc6, 0x2a, 0xfa, - 0x2e, 0xaf, 0xfc, 0x8f, 0x23, 0x1d, 0x1a, 0x95, 0x24, 0x94, - 0x62, 0xda, 0x47, 0x9b, 0x51, 0x5d, 0xec, 0xdf, 0x3, 0x7c, - 0x67, 0xf, 0xfc, 0xc2, 0x84, 0x9f, 0xee, 0x5c, 0x46, 0x7f, - 0xf6, 0x6a, 0xa5, 0x2f, 0xc2, 0x2f, 0x18, 0x43, 0xf7, 0xb4, - 0x2b, 0x83, 0xfe, 0xe9, 0x56, 0xfe, 0x46, 0xbe, 0x2a, 0x58, - 0xc, 0x5c, 0x77, 0xa5, 0x2f, 0xb9, 0x9e, 0x4b, 0xa3, 0x55, - 0x7d, 0x97, 0xf7, 0x1c, 0x7d, 0x7d, 0x3f, 0xfb, 0x3f, 0xe8, - 0x1f, 0xd9, 0x3e, 0x4, 0x4b, 0xb7, 0x4d, 0xb3, 0x6a, 0x12, - 0xb4, 0xc4, 0x91, 0xce, 0xc1, 0xf2, 0xaf, 0xf2, 0x27, 0xf1, - 0xaf, 0x9, 0xb7, 0xf8, 0x63, 0xe2, 0x79, 0x6f, 0x60, 0xb7, - 0x93, 0x44, 0xbd, 0x84, 0x49, 0x22, 0xa1, 0x91, 0xa1, 0x3b, - 0x57, 0x27, 0x19, 0x27, 0xd0, 0x57, 0xd7, 0x3a, 0x75, 0x8c, - 0x5a, 0x5d, 0x85, 0xb5, 0x9c, 0xb, 0xb6, 0x18, 0x23, 0x58, - 0x90, 0x7a, 00, 0x30, 0x2b, 0xeb, 0x38, 0x6b, 0x5, 0x38, - 0xd7, 0x9d, 0x7a, 0xb1, 0x6b, 0x95, 0x59, 0x5d, 0x5b, 0x57, - 0xff, 00, 0x3, 0xf3, 0x3d, 0x2c, 0x5, 0x26, 0xa6, 0xe7, - 0x25, 0xb1, 0x66, 0x8a, 0x28, 0xaf, 0xd1, 0x4f, 0x74, 0x2b, - 0xcd, 0x7f, 0x68, 0x38, 0xbc, 0xcf, 0x87, 0x53, 0x36, 0x3e, - 0xe5, 0xcc, 0x4d, 0xfa, 0xe3, 0xfa, 0xd7, 0xa5, 0x57, 0x3, - 0xf1, 0xce, 0x2f, 0x37, 0xe1, 0x9e, 0xa8, 0x7f, 0xb8, 0xd1, - 0x37, 0xfe, 0x44, 0x5f, 0xf1, 0xaf, 0x37, 0x32, 0x5c, 0xd8, - 0x2a, 0xcb, 0xfb, 0xaf, 0xf2, 0x39, 0xf1, 0xa, 0xf4, 0xa5, - 0xe8, 0x7c, 0xa5, 0x45, 0x14, 0x57, 0xe2, 0x27, 0xc9, 0x5, - 0x14, 0x51, 0x40, 0x1f, 0x64, 0x7c, 0x3a, 0xba, 0xfb, 0x67, - 0x80, 0xf4, 0x9, 0x49, 0xc9, 0x36, 0x51, 0x3, 0xf5, 0xa, - 0x7, 0xf4, 0xae, 0x8e, 0xb8, 0x4f, 0x82, 0x17, 0x86, 0xf3, - 0xe1, 0xa6, 0x95, 0x93, 0x93, 0x17, 0x99, 0x11, 0xfc, 0x1d, - 0xb1, 0xfa, 0x62, 0xbb, 0xba, 0xfd, 0xd3, 0x5, 0x3f, 0x69, - 0x86, 0xa5, 0x3e, 0xf1, 0x5f, 0x91, 0xf6, 0x14, 0x5f, 0x35, - 0x38, 0xbf, 0x24, 0x14, 0x51, 0x45, 0x76, 0x1a, 0x85, 0x14, - 0x56, 0x7f, 0x88, 0x35, 0x68, 0xf4, 0x1d, 0xe, 0xff, 00, - 0x51, 0x97, 0xee, 0x5a, 0xc2, 0xf2, 0x9f, 0x7c, 0xe, 0x5, - 0x4c, 0xa4, 0xa1, 0x17, 0x29, 0x6c, 0x84, 0xdd, 0x95, 0xd9, - 0xf2, 0xbf, 0xc6, 0xd, 0x78, 0xf8, 0x83, 0xe2, 0x6, 0xa9, - 0x20, 0x6d, 0xd0, 0xdb, 0xbf, 0xd9, 0x63, 0xfa, 0x27, 0x7, - 0xff, 00, 0x1e, 0xdc, 0x7f, 0x1a, 0xe3, 0x2a, 0x4b, 0x89, - 0xde, 0xea, 0x79, 0x66, 0x90, 0xee, 0x92, 0x46, 0x2e, 0xc7, - 0xd4, 0x93, 0x93, 0x51, 0xd7, 0xe1, 0x38, 0x8a, 0xcf, 0x11, - 0x5a, 0x75, 0x65, 0xf6, 0x9b, 0x67, 0xc7, 0x4e, 0x4e, 0x72, - 0x72, 0x7d, 0x42, 0x8a, 0x28, 0xae, 0x72, 0xe, 0xb7, 0xe1, - 0x46, 0x8f, 0xfd, 0xb7, 0xf1, 0x7, 0x46, 0x81, 0x97, 0x7c, - 0x69, 0x37, 0x9e, 0xe3, 0xb6, 0x10, 0x16, 0xfe, 0x60, 0x57, - 0xd7, 0xd5, 0xf3, 0xdf, 0xec, 0xd1, 0xa3, 0xf9, 0xfa, 0xd6, - 0xad, 0xa9, 0xb2, 0xf1, 0x6f, 0xa, 0xc0, 0x87, 0xdd, 0xce, - 0x4f, 0xe8, 0xbf, 0xad, 0x7d, 0x9, 0x5f, 0xaa, 0xf0, 0xd5, - 0xf, 0x67, 0x82, 0xf6, 0x8f, 0x79, 0x36, 0xfe, 0x4b, 0x43, - 0xe8, 0xf0, 0x10, 0xe5, 0xa5, 0xcd, 0xdc, 0x28, 0xa2, 0x8a, - 0xfa, 0xb3, 0xd2, 0xa, 0x28, 0xa2, 0x80, 0xa, 0xf9, 0xdb, - 0xf6, 0x88, 0xf0, 0x69, 0xd3, 0xf5, 0x98, 0x7c, 0x41, 0x6e, - 0x9f, 0xe8, 0xf7, 0x98, 0x8e, 0x7c, 0xf, 0xbb, 0x28, 0x1c, - 0x1f, 0xc4, 0xf, 0xfc, 0x77, 0xde, 0xbe, 0x89, 0xac, 0xdf, - 0x10, 0xe8, 0x36, 0x9e, 0x27, 0xd1, 0xae, 0xb4, 0xcb, 0xd4, - 0xdf, 0x6f, 0x70, 0xbb, 0x5b, 0x1d, 0x54, 0xf5, 0x4, 0x7b, - 0x83, 0xcd, 0x79, 0x59, 0x9e, 0x9, 0x63, 0xf0, 0xd2, 0xa3, - 0xd7, 0x75, 0xeb, 0xfd, 0x68, 0x73, 0x62, 0x28, 0xfb, 0x6a, - 0x6e, 0x3d, 0x4f, 0x89, 0xa8, 0xae, 0x8b, 0xc7, 0x1e, 0x8, - 0xbf, 0xf0, 0x2e, 0xb5, 0x25, 0x95, 0xe2, 0x16, 0x88, 0x92, - 0x60, 0xb8, 0x3, 0xe5, 0x95, 0x3d, 0x47, 0xbf, 0xa8, 0xed, - 0x5c, 0xed, 0x7e, 0x33, 0x56, 0x94, 0xe8, 0xcd, 0xd3, 0xa8, - 0xac, 0xd1, 0xf2, 0xb2, 0x8b, 0x8b, 0xe5, 0x96, 0xe1, 0x45, - 0x14, 0x56, 0x44, 0x9b, 0x7e, 0x12, 0xf1, 0x86, 0xa7, 0xe0, - 0xbd, 0x51, 0x6f, 0xb4, 0xd9, 0xb6, 0x3f, 0xdd, 0x92, 0x36, - 0xe5, 0x25, 0x5f, 0x46, 0x15, 0xf4, 0x1f, 0x85, 0x3e, 0x3e, - 0x78, 0x7b, 0x5d, 0x44, 0x8f, 0x50, 0x66, 0xd1, 0xee, 0xb8, - 0x4, 0x4f, 0xcc, 0x44, 0xfb, 0x38, 0xe9, 0xf8, 0xe2, 0xbe, - 0x61, 0xa2, 0xbd, 0xac, 0x6, 0x6d, 0x89, 0xcb, 0xfd, 0xda, - 0x6e, 0xf1, 0xec, 0xf6, 0xff, 00, 0x80, 0x75, 0x51, 0xc4, - 0xd4, 0xa1, 0xa4, 0x76, 0xec, 0x7d, 0xb7, 0x69, 0xe2, 0xd, - 0x2e, 0xfd, 0x3, 0x5b, 0x6a, 0x36, 0x97, 0xa, 0x46, 0x73, - 0x1c, 0xea, 0xdf, 0xc8, 0xd4, 0xb3, 0x6a, 0xf6, 0x36, 0xeb, - 0xba, 0x5b, 0xdb, 0x78, 0x97, 0xd5, 0xe5, 0x50, 0x3f, 0x9d, - 0x7c, 0x3f, 0x8a, 0x31, 0x5f, 0x46, 0xb8, 0xae, 0x76, 0xd6, - 0x8e, 0xbe, 0xbf, 0xf0, 0xe, 0xff, 00, 0xed, 0x27, 0xfc, - 0xbf, 0x89, 0xf5, 0x9f, 0x88, 0xbe, 0x32, 0xf8, 0x5b, 0xc3, - 0xb1, 0x9c, 0xea, 0x2b, 0x7f, 0x38, 0xe9, 0xd, 0x96, 0x24, - 0x3f, 0x98, 0xe0, 0x7e, 0x26, 0xbc, 0x47, 0xe2, 0x7, 0xc6, - 0xad, 0x5b, 0xc6, 0x4b, 0x25, 0xa5, 0xa8, 0x3a, 0x66, 0x96, - 0xc0, 0xab, 0x43, 0x1b, 0x65, 0xe5, 0x1f, 0xed, 0xb7, 0xa7, - 0xb0, 0xe3, 0xeb, 0x5e, 0x75, 0x45, 0x78, 0x98, 0xdc, 0xf7, - 0x17, 0x8c, 0x8b, 0x85, 0xf9, 0x62, 0xfa, 0x2f, 0xf3, 0x39, - 0x2a, 0xe3, 0x2a, 0xd5, 0x56, 0xd9, 0x5, 0x14, 0x51, 0x5f, - 0x3a, 0x70, 0x85, 0x14, 0x55, 0x8b, 0xd, 0x3e, 0xe7, 0x55, - 0xbc, 0x86, 0xd2, 0xd2, 0x17, 0xb8, 0xb9, 0x95, 0x82, 0xa4, - 0x68, 0x32, 0x58, 0xd3, 0x49, 0xc9, 0xd9, 0x6e, 0x1b, 0x89, - 0x65, 0x65, 0x3e, 0xa3, 0x77, 0xd, 0xad, 0xb4, 0x4d, 0x35, - 0xc4, 0xcc, 0x11, 0x23, 0x41, 0x92, 0xc4, 0xf6, 0xaf, 0xad, - 0x3e, 0x18, 0xf8, 0x6, 0x2f, 00, 0xf8, 0x7d, 0x6d, 0xdb, - 0x64, 0x9a, 0x84, 0xe7, 0xcc, 0xb9, 0x99, 0x7b, 0xb7, 0x65, - 0x1e, 0xc3, 0xfc, 0x4f, 0x7a, 0xc6, 0xf8, 0x4b, 0xf0, 0x9a, - 0x2f, 0x4, 0x5b, 0xfd, 0xbf, 0x50, 0x9, 0x36, 0xb5, 0x2a, - 0xe0, 0x95, 0x39, 0x58, 0x14, 0xff, 00, 0xa, 0xfb, 0xfa, - 0x9f, 0xc3, 0xeb, 0xe9, 0x35, 0xfa, 0x86, 0x47, 0x94, 0x3c, - 0x1a, 0xfa, 0xc5, 0x75, 0xef, 0xbd, 0x97, 0x65, 0xfe, 0x67, - 0xd0, 0xe0, 0xf0, 0xbe, 0xcb, 0xdf, 0x9e, 0xff, 00, 0x90, - 0x51, 0x45, 0x23, 0x30, 0x55, 0x24, 0x9c, 0x1, 0xc9, 0x35, - 0xf5, 0xe7, 0xa8, 0x71, 0xba, 0xef, 0xc5, 0x8d, 0xf, 0xc3, - 0x5e, 0x29, 0xfe, 0xc4, 0xd4, 0x64, 0x7b, 0x77, 0xf2, 0x96, - 0x43, 0x73, 0xb7, 0x31, 0xa9, 0x39, 0xf9, 0x5b, 0x1c, 0x8e, - 0x30, 0x73, 0x8c, 0x73, 0x5d, 0x55, 0x8e, 0xa3, 0x6b, 0xaa, - 0x40, 0xb3, 0xd9, 0xdc, 0xc5, 0x75, 0xb, 0x72, 0x24, 0x85, - 0xc3, 0x29, 0xfc, 0x45, 0x7c, 0x75, 0xe3, 0x8d, 0x78, 0xf8, - 0x9b, 0xc5, 0xba, 0xa6, 0xa5, 0x9c, 0xa4, 0xd3, 0xb7, 0x97, - 0xfe, 0xe0, 0xe1, 0x7f, 0x40, 0x2a, 0x86, 0x93, 0xae, 0x6a, - 0x1a, 0xd, 0xc8, 0xb8, 0xd3, 0xaf, 0x67, 0xb2, 0x97, 0xfb, - 0xd0, 0xb9, 0x5c, 0xfd, 0x7d, 0x7f, 0x1a, 0xfc, 0xf5, 0x71, - 0x3c, 0xa9, 0xd7, 0x9c, 0x67, 0xe, 0x68, 0x5d, 0xda, 0xda, - 0x3b, 0x7e, 0xbf, 0x81, 0xe1, 0xac, 0xc1, 0xa9, 0xb4, 0xd5, - 0xd1, 0xf6, 0xed, 0x15, 0xf3, 0x26, 0x8d, 0xfb, 0x43, 0x78, - 0x9f, 0x4e, 0xda, 0xb7, 0x82, 0xd7, 0x53, 0x8c, 0x75, 0xf3, - 0x63, 0xd8, 0xe7, 0xf1, 0x5c, 0xf, 0xd2, 0xbb, 0x6d, 0x2f, - 0xf6, 0x96, 0xd2, 0xa6, 0x55, 0x1a, 0x86, 0x95, 0x77, 0x6c, - 0xdd, 0xcc, 0xc, 0xb2, 0x2f, 0xeb, 0xb4, 0xd7, 0xd0, 0x51, - 0xcf, 0xf0, 0x15, 0xb7, 0x9f, 0x2b, 0xf3, 0x5f, 0xd2, 0x3b, - 0x61, 0x8d, 0xa3, 0x2e, 0xb6, 0x3d, 0x96, 0x8a, 0xf3, 0xcb, - 0x5f, 0x8f, 0x5e, 0xe, 0xb8, 0xc6, 0xeb, 0xe9, 0xad, 0xcf, - 0xa4, 0xb6, 0xef, 0xfd, 0x1, 0xad, 0x8, 0xbe, 0x31, 0x78, - 0x3a, 0x51, 0xc6, 0xb9, 0x2, 0xff, 00, 0xbc, 0xae, 0x3f, - 0x98, 0xaf, 0x4a, 0x39, 0x86, 0xe, 0x7f, 0xd, 0x58, 0xfd, - 0xe8, 0xe8, 0x55, 0xe9, 0x3d, 0xa4, 0xbe, 0xf3, 0xb3, 0xa2, - 0xb8, 0xa9, 0xfe, 0x32, 0xf8, 0x36, 0x1, 0x93, 0xad, 0xc4, - 0xff, 00, 0xf5, 0xce, 0x37, 0x6f, 0xe4, 0x2b, 0x9b, 0xd7, - 0x7f, 0x68, 0xcd, 0x2, 0xca, 0x16, 0x1a, 0x65, 0xbd, 0xce, - 0xa3, 0x3f, 0xf0, 0xee, 0x5f, 0x2a, 0x3f, 0xc4, 0x9e, 0x7f, - 0x4a, 0x8a, 0x99, 0x9e, 0xa, 0x92, 0xbc, 0xaa, 0xc7, 0xef, - 0xbf, 0xe4, 0x29, 0x62, 0x29, 0x45, 0x5d, 0xc9, 0x16, 0xbf, - 0x68, 0x6d, 0x4a, 0xde, 0xd7, 0xc0, 0x46, 0xd6, 0x42, 0x3e, - 0xd1, 0x75, 0x71, 0x18, 0x89, 0x7b, 0xfc, 0xa7, 0x73, 0x1f, - 0xc8, 0x63, 0xf1, 0xaf, 0x98, 0xeb, 0x7b, 0xc6, 0x3e, 0x35, - 0xd4, 0xfc, 0x71, 0xaa, 0x7d, 0xb7, 0x52, 0x90, 0x12, 0xa3, - 0x6c, 0x50, 0xc6, 0x30, 0x91, 0xaf, 0xa0, 0x1f, 0xd7, 0xad, - 0x60, 0xd7, 0xe5, 0x99, 0xbe, 0x3a, 0x38, 0xfc, 0x53, 0xab, - 0x5, 0xee, 0xa5, 0x64, 0x7c, 0xe6, 0x26, 0xb2, 0xad, 0x53, - 0x99, 0x6c, 0x14, 0x51, 0x45, 0x78, 0xa7, 0x28, 0x55, 0xcd, - 0x1e, 0xc5, 0xb5, 0x3d, 0x5e, 0xca, 0xcd, 0x46, 0x5a, 0xe2, - 0x74, 0x88, 0x1, 0xfe, 0xd3, 0x1, 0xfd, 0x6a, 0x9d, 0x7a, - 0x77, 0xc0, 0x1f, 0xa, 0x9d, 0x73, 0xc6, 0x1f, 0xda, 0x12, - 0xa9, 0x36, 0xda, 0x6a, 0xf9, 0xb9, 0xec, 0x64, 0x3c, 0x20, - 0xfe, 0x67, 0xf0, 0x15, 0xdb, 0x82, 0xc3, 0xcb, 0x15, 0x88, - 0x85, 0x18, 0xf5, 0x7f, 0x87, 0x5f, 0xc0, 0xd6, 0x94, 0x1d, - 0x49, 0xa8, 0xae, 0xa7, 0xd3, 0x68, 0xa1, 0x14, 0x28, 0xe8, - 0x6, 0x29, 0xd4, 0x51, 0x5f, 0xb9, 0x9f, 0x60, 0x14, 0x51, - 0x45, 00, 0x56, 0xd4, 0x5f, 0xcb, 0xb0, 0xb8, 0x6e, 0x98, - 0x43, 0xfc, 0xab, 0xe1, 0x1f, 0x8b, 0xd7, 0x1e, 0x77, 0x88, - 0xe5, 0xef, 0xf3, 0x1f, 0xe7, 0x5f, 0x72, 0xf8, 0x92, 0x5f, - 0x27, 0x43, 0xbc, 0x6e, 0x98, 0x8c, 0xd7, 0xc1, 0x5f, 0x12, - 0xa6, 0xf3, 0xbc, 0x45, 0x3f, 0xb3, 0x1a, 0xf8, 0xce, 0x22, - 0x97, 0xbb, 0x4e, 0x3e, 0x67, 0xc9, 0xf1, 0xc, 0xad, 0x41, - 0x23, 0xc8, 0x3e, 0x20, 0x4b, 0xb3, 0x4a, 0x9b, 0xe8, 0x6b, - 0xe9, 0x1f, 0xf8, 0x25, 0xa6, 0x9e, 0x23, 0xf8, 0x57, 0xe3, - 0x5b, 0xfc, 0x7c, 0xd7, 0x5e, 0x20, 0x64, 0xcf, 0xb2, 0x41, - 0x1f, 0xff, 00, 0x14, 0x6b, 0xe6, 0x1f, 0x89, 0x93, 0x6c, - 0xd2, 0x65, 0xfa, 0x1f, 0xe5, 0x5f, 0x60, 0x7f, 0xc1, 0x32, - 0x6c, 0x3e, 0xcd, 0xfb, 0x35, 0x1b, 0xad, 0xb8, 0x37, 0xba, - 0xe5, 0xec, 0xd9, 0xf5, 00, 0xaa, 0x7f, 0xec, 0x95, 0xd9, - 0x92, 0xc6, 0xd4, 0xcf, 0x99, 0xe1, 0x18, 0xdf, 0x13, 0x5e, - 0x7e, 0x87, 0xd6, 0x74, 0x51, 0x45, 0x7d, 0x39, 0xfa, 0x90, - 0x57, 0x82, 0xfe, 0xd6, 0xde, 0x35, 0x3a, 0x3f, 0x84, 0x6d, - 0x3c, 0x3f, 0x3, 0x62, 0x7d, 0x56, 0x4d, 0xd2, 0xe0, 0xf2, - 0x22, 0x42, 0xf, 0xea, 0xd8, 0x1f, 0x81, 0xaf, 0x7a, 0xaf, - 0x85, 0xbf, 0x68, 0x3f, 0x1a, 0x1f, 0x1a, 0x7c, 0x4b, 0xd4, - 0x1a, 0x29, 0x4, 0x96, 0x5a, 0x79, 0xfb, 0x15, 0xbe, 0xd2, - 0x70, 0x42, 0x9f, 0x98, 0xfe, 0x2d, 0x9f, 0xc8, 0x57, 0x85, - 0x9c, 0xe2, 0x3d, 0x86, 0x15, 0xa5, 0xbc, 0xb4, 0xff, 00, - 0x33, 0xe7, 0xb3, 0xdc, 0x4f, 0xd5, 0xf0, 0x6e, 0x29, 0xeb, - 0x2d, 0x3f, 0xcf, 0xf0, 0x39, 0x5f, 0x2, 0xf8, 0x7e, 0x4f, - 0x12, 0xf8, 0xa3, 0x4f, 0xd3, 0xe3, 0x5d, 0xde, 0x6c, 0xaa, - 0xf, 0xd3, 0x3c, 0xd7, 0xe8, 0x46, 0x95, 0xa7, 0xc7, 0xa5, - 0x69, 0xd6, 0xf6, 0x91, 00, 0xb1, 0xc2, 0x81, 00, 0x1e, - 0xd5, 0xf2, 0xef, 0xec, 0x9d, 0xe0, 0xff, 00, 0xb6, 0x6b, - 0x77, 0x7a, 0xd4, 0xc9, 0x98, 0xed, 0xd3, 0x6c, 0x64, 0x8e, - 0x37, 0x1a, 0xfa, 0xb6, 0xb8, 0xb8, 0x7f, 0xf, 0xc9, 0x46, - 0x55, 0xde, 0xf2, 0xfc, 0x91, 0x87, 0xf, 0xe1, 0xbd, 0x8e, - 0x1b, 0xda, 0x3d, 0xe5, 0xf9, 0x5, 0x14, 0x51, 0x5f, 0x54, - 0x7d, 0x41, 0xf9, 0x87, 0xff, 00, 0x5, 0x9e, 0xf8, 0xdd, - 0x1d, 0xb6, 0x8b, 0xe1, 0x2f, 0x85, 0x76, 0x17, 0x2c, 0x2e, - 0x2e, 0x65, 0xfe, 0xda, 0xd4, 0xe3, 0x46, 0xc0, 0xf2, 0x97, - 0x72, 0x40, 0x8d, 0xeb, 0x96, 0xde, 0xd8, 0xff, 00, 0x61, - 0x4d, 0x7e, 0x72, 0xfe, 0xcf, 0x7f, 0xa, 0xe5, 0xf8, 0xdb, - 0xf1, 0xb3, 0xc1, 0xbe, 0x7, 0x89, 0xfc, 0xb5, 0xd6, 0x75, - 0x8, 0xe0, 0x99, 0xf3, 0x8d, 0xb0, 0x8c, 0xbc, 0xa4, 0x7b, - 0x88, 0xd5, 0xc8, 0xf7, 0xaf, 0x55, 0xff, 00, 0x82, 0x90, - 0x6b, 0xf7, 0x9a, 0xff, 00, 0xed, 0x9f, 0xf1, 0x1c, 0xdd, - 0xc8, 0xce, 0xb6, 0x77, 0x30, 0x59, 0x40, 0xac, 0x73, 0xb2, - 0x34, 0xb7, 0x8c, 00, 0x3d, 0xb2, 0x58, 0xff, 00, 0xc0, - 0x8d, 0x7c, 0xfb, 0xe1, 0x5f, 0x15, 0x6a, 0xfe, 0x7, 0xf1, - 0x1e, 0x9d, 0xaf, 0xe8, 0x3a, 0x84, 0xfa, 0x56, 0xb3, 0xa7, - 0xcc, 0xb7, 0x16, 0xb7, 0x96, 0xcd, 0xb6, 0x48, 0x9c, 0x74, - 0x20, 0xff, 00, 0x9c, 0xf4, 0xaa, 0x33, 0x6f, 0x53, 0xfa, - 0x71, 0x51, 0xa7, 0xf8, 0x4b, 0xc3, 0xc0, 0x7c, 0x96, 0x7a, - 0x5e, 0x99, 0x6b, 0x8f, 0x45, 0x8a, 0x18, 0xd3, 0xf9, 0x5, - 0x5f, 0xd2, 0xbf, 0xe, 0xbe, 0x24, 0x7f, 0xc1, 0x4e, 0x7e, - 0x37, 0x6a, 0x3f, 0x13, 0x7c, 0x4b, 0xa8, 0xf8, 0x57, 0xc6, - 0xd3, 0xe9, 0x9e, 0x1a, 0x9a, 0xfe, 0x66, 0xd3, 0x74, 0xe3, - 0x67, 0x6e, 0xe9, 0xd, 0xbe, 0xe2, 0x23, 0x1f, 0x34, 0x64, - 0xe7, 0x68, 0x4, 0xe4, 0x9e, 0x49, 0xa8, 0x3c, 0x61, 0xff, - 00, 0x5, 0x45, 0xf8, 0xd9, 0xe3, 0xcf, 0x86, 0xda, 0xd7, - 0x83, 0x35, 0x89, 0xf4, 0x49, 0xac, 0xf5, 0x6b, 0x17, 0xb0, - 0xb9, 0xbe, 0x86, 0xc5, 0xa2, 0xba, 0xf2, 0xdd, 0x76, 0xb1, - 0xc, 0xae, 0x14, 0x31, 0x19, 0x19, 0xdb, 0xdc, 0xd7, 0xc8, - 0xb4, 0x92, 0x1b, 0x7d, 0x8f, 0xdf, 0x7f, 0xf8, 0x27, 0x7f, - 0xc4, 0x8f, 0x88, 0xff, 00, 0x18, 0xbe, 0x1, 0x47, 0xe3, - 0x6f, 0x88, 0xfa, 0xc2, 0xea, 0xb7, 0x7a, 0xad, 0xf4, 0xa3, - 0x4f, 0x9, 0x69, 0x1d, 0xb8, 0x8e, 0xda, 0x33, 0xe5, 0xe4, - 0x84, 0x51, 0x92, 0xce, 0xae, 0x72, 0x7b, 0x1, 0x5f, 0x50, - 0xd7, 0xe3, 0xaf, 0xc3, 0xf, 0xf8, 0x2b, 0xf6, 0xa3, 0xf0, - 0xbf, 0xc0, 0xfa, 0x7, 0x85, 0x34, 0xff, 00, 0x84, 0xda, - 0x50, 0xd2, 0xb4, 0x6b, 0x38, 0xac, 0xa0, 0x58, 0x75, 0x69, - 0x23, 0x25, 0x51, 0x40, 0xc9, 0xfd, 0xd1, 0xe4, 0xf2, 0x4f, - 0xb9, 0x35, 0xe8, 0x5a, 0x7f, 0xfc, 0x16, 0xee, 0x16, 0x61, - 0xf6, 0xef, 0x84, 0xb2, 0x46, 0xbd, 0xcd, 0xbe, 0xb8, 0x1f, - 0xf9, 0xc0, 0x28, 0xb1, 0x57, 0x47, 0xea, 0x45, 0x15, 0xf9, - 0xbd, 0x65, 0xff, 00, 0x5, 0xb1, 0xf0, 0x3c, 0x85, 0x7e, - 0xd7, 0xf0, 0xe3, 0xc4, 0x10, 0xe, 0xe6, 0x1b, 0xc8, 0x24, - 0xc7, 0xe7, 0xb6, 0xba, 0xed, 0x3, 0xfe, 0xb, 0x19, 0xf0, - 0x8b, 0x5c, 0xbd, 0xb6, 0xb3, 0x3e, 0x19, 0xf1, 0x84, 0x17, - 0x57, 0x12, 0x2c, 0x51, 0xc6, 0x2d, 0x20, 0x93, 0x73, 0xb1, - 0xc0, 0x51, 0xb6, 0x6e, 0x72, 0x48, 0xed, 0x48, 0x2e, 0x8f, - 0xbc, 0xe8, 0xa8, 0xad, 0xa6, 0x37, 0x16, 0xd1, 0x4a, 0x63, - 0x78, 0x4b, 0xa0, 0x63, 0x1c, 0x98, 0xdc, 0xb9, 0x19, 0xc1, - 0xc7, 0x71, 0x59, 0x1e, 0x36, 0xf1, 0xae, 0x89, 0xf0, 0xe7, - 0xc2, 0x9a, 0x9f, 0x89, 0x7c, 0x47, 0x7f, 0x1e, 0x97, 0xa2, - 0x69, 0xb0, 0x99, 0xee, 0xee, 0xe5, 0x4, 0xac, 0x48, 0x3b, - 0xe0, 0x2, 0x4f, 0x5e, 0x80, 0x50, 0x33, 0x72, 0x8a, 0xf0, - 0x2b, 0xf, 0xdb, 0xdb, 0xf6, 0x7d, 0xd4, 0x63, 0xf, 0x1f, - 0xc5, 0x6f, 0xf, 0xc6, 0xf, 0x6b, 0x89, 0x9a, 0x23, 0xf9, - 0x32, 0x8a, 0xdc, 0xb1, 0xfd, 0xb1, 0x7e, 0x6, 0xea, 0x3f, - 0xea, 0x3e, 0x2d, 0x78, 0x40, 0xff, 00, 0xbf, 0xac, 0x42, - 0x9f, 0xfa, 0x13, 0xa, 00, 0xf6, 0x1a, 0x2b, 0x82, 0xd2, - 0x7e, 0x3e, 0x7c, 0x33, 0xd7, 0xbf, 0xe4, 0x1d, 0xf1, 0xb, - 0xc2, 0xf7, 0xdf, 0xf5, 0xc3, 0x58, 0xb7, 0x7f, 0xe4, 0xf5, - 0xd1, 0xd9, 0x78, 0xd7, 0xc3, 0xda, 0x91, 0x2, 0xd3, 0x5e, - 0xd3, 0x2e, 0x89, 0xe8, 0x21, 0xbc, 0x8d, 0xf3, 0xf9, 0x35, - 00, 0x6d, 0x51, 0x51, 0xa5, 0xc4, 0x52, 0x7d, 0xc9, 0x51, - 0xbf, 0xdd, 0x60, 0x6a, 0x4a, 00, 0x28, 0xa2, 0x8a, 00, - 0x2a, 0xbd, 0xfe, 0x9f, 0x6d, 0xaa, 0x5a, 0x49, 0x6b, 0x79, - 0x6f, 0x1d, 0xd5, 0xb4, 0x98, 0xdf, 0x14, 0xca, 0x19, 0x5b, - 0x9c, 0xf2, 0xf, 0xbd, 0x58, 0xa2, 0x93, 0x49, 0xab, 0x30, - 0x6a, 0xfa, 0x33, 0x96, 0x9b, 0xe1, 0x77, 0x84, 0xe7, 0x1f, - 0x36, 0x81, 0x62, 0x3f, 0xdc, 0x8b, 0x6f, 0xf2, 0xaa, 0x53, - 0x7c, 0x17, 0xf0, 0x6c, 0xfd, 0x74, 0x54, 0x5f, 0xf7, 0x25, - 0x91, 0x7f, 0x93, 0x57, 0x6d, 0x45, 0x72, 0x4b, 0x5, 0x85, - 0x96, 0xf4, 0xa3, 0xf7, 0x23, 0x27, 0x46, 0x9b, 0xde, 0x2b, - 0xee, 0x3c, 0xf6, 0x4f, 0x80, 0xde, 0xc, 0x7e, 0x9a, 0x74, - 0xa9, 0xfe, 0xed, 0xd4, 0x9f, 0xd5, 0xaa, 0xac, 0x9f, 0xb3, - 0xd7, 0x84, 0x9f, 0xee, 0xa5, 0xe4, 0x7f, 0xee, 0xdc, 0x7f, - 0x88, 0xaf, 0x4c, 0xa2, 0xb0, 0x79, 0x66, 0x9, 0xef, 0x46, - 0x3f, 0x72, 0x23, 0xea, 0xf4, 0x7f, 0x95, 0x18, 0x7e, 0xf, - 0xf0, 0x85, 0x97, 0x82, 0x74, 0x93, 0xa7, 0x58, 0x3c, 0xcf, - 0x6f, 0xe6, 0x34, 0xa3, 0xcf, 0x60, 0xc4, 0x13, 0x8c, 0x8c, - 0x80, 0x38, 0xe2, 0xb7, 0x28, 0xa2, 0xbb, 0xe9, 0xd3, 0x8d, - 0x28, 0xa8, 0x41, 0x59, 0x23, 0x68, 0xc5, 0x45, 0x59, 0x6c, - 0x14, 0x51, 0x45, 0x68, 0x50, 0x57, 0x25, 0xf1, 0x4b, 0xc3, - 0xfa, 0x9f, 0x8a, 0x7c, 0x1f, 0x73, 0xa5, 0xe9, 0x46, 0x21, - 0x3c, 0xee, 0x81, 0xcc, 0xce, 0x50, 0x6c, 0x7, 0x27, 0x9c, - 0x1f, 0x41, 0x5d, 0x6d, 0x15, 0x8d, 0x6a, 0x51, 0xaf, 0x4e, - 0x54, 0xa5, 0xb3, 0x56, 0x22, 0x71, 0x53, 0x8b, 0x8b, 0xea, - 0x7c, 0xb5, 0x2f, 0xc0, 0xf, 0x18, 0x47, 0xd2, 0xd6, 0xda, - 0x4f, 0xf7, 0x2e, 0x17, 0xfa, 0xe2, 0xa9, 0xcb, 0xf0, 0x47, - 0xc6, 0x71, 0xff, 00, 0xcc, 0x1f, 0x7f, 0xfb, 0xb3, 0xc7, - 0xff, 00, 0xc5, 0x57, 0xd6, 0x34, 0x57, 0xcb, 0xcb, 0x86, - 0x30, 0x4f, 0x69, 0x49, 0x7c, 0xd7, 0xf9, 0x1e, 0x7b, 0xcb, - 0xe9, 0x77, 0x67, 0xc8, 0x53, 0x7c, 0x25, 0xf1, 0x7c, 0x7, - 0xe6, 0xd0, 0x6e, 0x8f, 0xfb, 0x9b, 0x5b, 0xf9, 0x1a, 0xa3, - 0x3f, 0xc3, 0xef, 0x13, 0x5b, 0xff, 00, 0xac, 0xd0, 0x75, - 0x1, 0xf4, 0xb7, 0x63, 0xfc, 0x85, 0x7d, 0x97, 0x45, 0x61, - 0x2e, 0x16, 0xc3, 0x7d, 0x9a, 0x92, 0xfc, 0x3f, 0xc8, 0x87, - 0x97, 0x43, 0xa4, 0x99, 0xe7, 0xdf, 0x3, 0xbc, 0x37, 0x2f, - 0x87, 0x7c, 0xb, 0xf, 0xda, 0x61, 0x78, 0x2e, 0xee, 0xe5, - 0x79, 0xe4, 0x49, 0x14, 0xab, 0x2f, 0x3b, 0x54, 0x10, 0x7a, - 0x70, 0xa0, 0xfe, 0x35, 0xe8, 0x34, 0x51, 0x5f, 0x59, 0x86, - 0xa1, 0x1c, 0x35, 0x18, 0xd1, 0x8e, 0xd1, 0x56, 0x3d, 0x2a, - 0x70, 0x54, 0xe0, 0xa0, 0xba, 0x5, 0x14, 0x51, 0x5d, 0x26, - 0x81, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x6, 0x57, - 0x88, 0xfc, 0x33, 0xa6, 0xf8, 0xb3, 0x4d, 0x7b, 0x1d, 0x4e, - 0xd9, 0x6e, 0x20, 0x6e, 0x46, 0x78, 0x64, 0x3e, 0xaa, 0x7a, - 0x83, 0x5f, 0x3a, 0xf8, 0xef, 0xe0, 0x66, 0xb1, 0xe1, 0x97, - 0x96, 0xe7, 0x4d, 0x56, 0xd5, 0xb4, 0xd1, 0xc8, 0x31, 0x8c, - 0xcc, 0x83, 0xfd, 0xa5, 0x1d, 0x7e, 0xa3, 0xf2, 0x15, 0xf4, - 0xfd, 0x15, 0xe3, 0xe3, 0xf2, 0xac, 0x3e, 0x60, 0xbf, 0x78, - 0xad, 0x2e, 0xeb, 0x7f, 0xf8, 0x27, 0x2d, 0x6c, 0x34, 0x2b, - 0xfc, 0x5b, 0xf7, 0x3e, 0x15, 0x20, 0xa9, 0x20, 0x8c, 0x11, - 0xc1, 0x7, 0xb5, 0x25, 0x7d, 0x89, 0xe2, 0x7f, 0x86, 0xde, - 0x1e, 0xf1, 0x70, 0x63, 0x7f, 0xa7, 0x47, 0xe7, 0x9f, 0xf9, - 0x78, 0x87, 0xe4, 0x90, 0x7e, 0x23, 0xaf, 0xe3, 0x9a, 0xf3, - 0x2d, 0x6b, 0xf6, 0x66, 0x53, 0xb9, 0xb4, 0x9d, 0x64, 0x8f, - 0x48, 0xaf, 0x23, 0xcf, 0xfe, 0x3c, 0xbf, 0xe1, 0x5f, 0x5, - 0x89, 0xe1, 0xbc, 0x65, 0x17, 0x7a, 0x56, 0x9a, 0xfb, 0x9f, - 0xdc, 0xff, 00, 0xcc, 0xf1, 0xaa, 0x60, 0x2a, 0xc7, 0xe1, - 0xd4, 0xf0, 0x8a, 0x2b, 0xd0, 0x35, 0x3f, 0x81, 0x5e, 0x30, - 0xd3, 0xdc, 0x84, 0xb0, 0x8e, 0xf5, 0x7, 0xf1, 0xdb, 0x4c, - 0xa7, 0xf4, 0x62, 0xf, 0xe9, 0x58, 0x57, 0x3f, 0xe, 0x3c, - 0x53, 0x68, 0x71, 0x26, 0x81, 0x7f, 0xff, 00, 00, 0x81, - 0x9c, 0x7e, 0x99, 0xaf, 0xa, 0xa6, 0x7, 0x15, 0x49, 0xda, - 0x74, 0xa4, 0xbe, 0x4c, 0xe2, 0x74, 0x6a, 0x47, 0x78, 0xb3, - 0x9c, 0xa2, 0xb4, 0xe4, 0xf0, 0xc6, 0xb3, 0x11, 0xc3, 0xe9, - 0x37, 0xca, 0x7d, 0xd, 0xb3, 0xff, 00, 0x85, 0x35, 0x7c, - 0x39, 0xab, 0x31, 0xc0, 0xd2, 0xaf, 0x4f, 0xd2, 0xd9, 0xff, - 00, 0xc2, 0xb9, 0xbd, 0x95, 0x4f, 0xe5, 0x7f, 0x71, 0x1c, - 0xb2, 0xec, 0x67, 0x51, 0x5b, 0xf6, 0xfe, 00, 0xf1, 0x2d, - 0xd1, 0x1e, 0x56, 0x83, 0xa8, 0xb6, 0x7a, 0x13, 0x6c, 0xe0, - 0x7e, 0x64, 0x56, 0xe6, 0x9d, 0xf0, 0x47, 0xc6, 0x3a, 0x83, - 0xa8, 0x3a, 0x5f, 0xd9, 0x50, 0xff, 00, 0x1d, 0xc4, 0xa8, - 0xa0, 0x7e, 0x19, 0x27, 0xf4, 0xae, 0x88, 0x60, 0xb1, 0x35, - 0x3e, 0xa, 0x52, 0x7f, 0x26, 0x5a, 0xa5, 0x52, 0x5b, 0x45, - 0x9c, 0x25, 0x15, 0xee, 0x3a, 0x2f, 0xec, 0xcf, 0x2b, 0x6d, - 0x6d, 0x5b, 0x58, 0x54, 0xf5, 0x8a, 0xce, 0x3c, 0x9f, 0xfb, - 0xe9, 0xbf, 0xc2, 0xbd, 0x2f, 0xc3, 0x1f, 0xa, 0x7c, 0x35, - 0xe1, 0x4d, 0xaf, 0x6b, 0xa7, 0xac, 0xf7, 0x2b, 0xff, 00, - 0x2f, 0x17, 0x5f, 0xbc, 0x7f, 0xc3, 0x3c, 0xf, 0xc0, 0xa, - 0xf7, 0x30, 0xdc, 0x39, 0x8d, 0xac, 0xef, 0x51, 0x28, 0x2f, - 0x3d, 0x5f, 0xdc, 0xbf, 0xe0, 0x1d, 0x94, 0xf0, 0x35, 0x67, - 0xf1, 0x68, 0x7c, 0xfd, 0xe0, 0xbf, 0x83, 0x9a, 0xff, 00, - 0x8c, 0xc, 0x73, 0x18, 0x7f, 0xb3, 0xb4, 0xf6, 0x23, 0x37, - 0x37, 0x20, 0x82, 0x47, 0xaa, 0xaf, 0x56, 0xfd, 0x7, 0xbd, - 0x7d, 0xf, 0xe0, 0x9f, 0x87, 0x3a, 0x37, 0x81, 0x6d, 0xb6, - 0xd8, 0xc1, 0xe6, 0x5d, 0x32, 0xe2, 0x5b, 0xb9, 0x79, 0x91, - 0xff, 00, 0xc0, 0x7b, 0xa, 0xea, 0x68, 0xaf, 0xba, 0xc0, - 0x64, 0xd8, 0x6c, 0x7, 0xbd, 0x15, 0xcd, 0x2e, 0xef, 0xf4, - 0xec, 0x7b, 0x14, 0x30, 0xb4, 0xe8, 0xea, 0xb5, 0x7d, 0xc2, - 0x8a, 0x28, 0xaf, 0x74, 0xec, 0xa, 0xe5, 0x7e, 0x28, 0x6b, - 0xe3, 0xc3, 0x7e, 0x5, 0xd5, 0xae, 0xc3, 0x6d, 0x95, 0xa2, - 0x30, 0xc4, 0x7b, 0xef, 0x7f, 0x94, 0x7e, 0x59, 0xcf, 0xe1, - 0x5d, 0x55, 0x78, 0xc7, 0xed, 0x29, 0x71, 0x76, 0xfa, 0x46, - 0x95, 0x69, 0xd, 0xbc, 0xcf, 0x6d, 0xe6, 0xb4, 0xf3, 0x4a, - 0x88, 0x4a, 0x29, 0x3, 0xa, 0x9, 0xe9, 0xfc, 0x4d, 0xf9, - 0x57, 0x99, 0x99, 0xd7, 0x78, 0x7c, 0x1d, 0x4a, 0x91, 0xde, - 0xda, 0x7c, 0xf4, 0x39, 0xf1, 0x13, 0x70, 0xa5, 0x29, 0x23, - 0xe7, 0xba, 0x28, 0xa2, 0xbf, 0x12, 0x3e, 0x48, 0x28, 0xa2, - 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, - 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0xbb, 0x3f, 0x5, 0x7c, - 0x27, 0xd7, 0xbc, 0x69, 0x2c, 0x4f, 0x15, 0xbb, 0x59, 0x69, - 0xed, 0xc9, 0xbd, 0xb8, 0x5c, 0x2e, 0x3f, 0xd9, 0x1d, 0x5b, - 0xf0, 0xe3, 0xde, 0xb7, 0xa3, 0x42, 0xae, 0x22, 0x6a, 0x9d, - 0x18, 0xb6, 0xfc, 0x8b, 0x84, 0x25, 0x37, 0x68, 0xab, 0xb3, - 0x9c, 0xd0, 0x34, 0x1b, 0xdf, 0x13, 0x6a, 0xd6, 0xfa, 0x76, - 0x9f, 0x17, 0x9d, 0x73, 0x33, 0x60, 0xe, 0xca, 0x3b, 0xb1, - 0x3d, 0x80, 0xf5, 0xaf, 0xae, 0xbc, 0xb, 0xe0, 0xeb, 0x5f, - 0x3, 0xf8, 0x7a, 0xd, 0x3a, 0xdc, 0x6, 0x90, 0xd, 0xf3, - 0xcc, 0x6, 0xc, 0xb2, 0x1e, 0xa7, 0xfa, 0xf, 0x6a, 0x87, - 0xc0, 0xdf, 0xf, 0xb4, 0xbf, 0x1, 0x58, 0x18, 0x2c, 0x50, - 0xc9, 0x71, 0x26, 0x3c, 0xeb, 0xa9, 00, 0xdf, 0x21, 0xfe, - 0x83, 0xd8, 0x57, 0x4f, 0x5f, 0xa9, 0x64, 0xd9, 0x3a, 0xcb, - 0xe3, 0xed, 0x6a, 0xeb, 0x51, 0xfe, 0xb, 0xb7, 0xf9, 0x9f, - 0x43, 0x85, 0xc2, 0xfb, 0x5, 0xcd, 0x2f, 0x88, 0x28, 0xa2, - 0x8a, 0xfa, 0x73, 0xd1, 0xa, 0x28, 0xa2, 0x80, 0x30, 0x7c, - 0x73, 0x37, 0x91, 0xe1, 0x8b, 0xd6, 0xe9, 0xf2, 0xe2, 0xbe, - 0x8, 0xf1, 0xc4, 0xbe, 0x66, 0xbd, 0x72, 0x73, 0xfc, 0x46, - 0xbe, 0xe8, 0xf8, 0x9f, 0x37, 0x93, 0xe1, 0x2b, 0xa3, 0x9a, - 0xf8, 0x2f, 0xc5, 0xd, 0xbf, 0x55, 0xba, 0x6c, 0xff, 00, - 0x11, 0xaf, 0x84, 0xe2, 0x19, 0x7e, 0xfa, 0x9c, 0x4f, 0x88, - 0xe2, 0x49, 0x7b, 0x91, 0x47, 0x8f, 0x7c, 0x59, 0x9f, 0xcb, - 0xd2, 0x64, 0xe7, 0xb1, 0xfe, 0x55, 0xf7, 0x67, 0xfc, 0x13, - 0xa2, 0xc9, 0xad, 0x3f, 0x64, 0xaf, 0x8, 0xbb, 0xc, 0x1b, - 0x89, 0xaf, 0x67, 0xfc, 0xd, 0xd4, 0xa3, 0xfa, 0x57, 0xc0, - 0x5f, 0x19, 0xa6, 0xf2, 0xf4, 0xa9, 0x79, 0xe3, 0x69, 0xaf, - 0xd2, 0x7f, 0xd8, 0xaf, 0x4a, 0x1a, 0x3f, 0xec, 0xaf, 0xf0, - 0xda, 00, 0x41, 0xdf, 0xa5, 0x25, 0xc1, 0xc7, 0xac, 0x8c, - 0xd2, 0x7f, 0xec, 0xd5, 0xed, 0xe5, 0xa, 0xd4, 0x91, 0xe6, - 0xf0, 0x74, 0x7d, 0xda, 0xf3, 0xf3, 0x3d, 0xb2, 0x8a, 0x28, - 0xaf, 0xa0, 0x3f, 0x49, 0x39, 0x5f, 0x8a, 0x1e, 0x30, 0x4f, - 0x2, 0x78, 0x13, 0x56, 0xd6, 0x18, 0xfe, 0xf2, 0x18, 0xb6, - 0xc2, 0x3d, 0x65, 0x6f, 0x95, 0x7, 0xe6, 0x45, 0x7e, 0x7e, - 0xa7, 0x99, 0x77, 0x71, 0x96, 0x26, 0x49, 0xa5, 0x6c, 0xb3, - 0x1e, 0x4b, 0x31, 0x3c, 0x9f, 0xce, 0xbe, 0x93, 0xfd, 0xaf, - 0xfc, 0x64, 0xf, 0xf6, 0x4f, 0x85, 0xa1, 0x3c, 0xff, 00, - 0xc7, 0xf5, 0xc1, 0xf6, 0xe5, 0x50, 0x7f, 0xe8, 0x47, 0xf0, - 0x15, 0xe3, 0xbf, 0x8, 0x3c, 0x2a, 0xde, 0x2d, 0xf1, 0xd6, - 0x9b, 0x69, 0xb4, 0xb4, 0x42, 0x40, 0xf2, 0x7b, 0x28, 0xe6, - 0xbf, 0x3e, 0xce, 0xab, 0x4b, 0x13, 0x8b, 0x8e, 0x1e, 0x1d, - 0x34, 0xf9, 0xb3, 0xf3, 0xbc, 0xe2, 0xa3, 0xc6, 0xe3, 0xe3, - 0x86, 0x86, 0xd1, 0xd3, 0xe6, 0xf7, 0xfd, 0xf, 0xae, 0xfe, - 0x7, 0x78, 0x51, 0x7c, 0x2b, 0xf0, 0xff, 00, 0x4f, 0x8c, - 0xa8, 0x59, 0xe7, 0x5f, 0x36, 0x43, 0x8e, 0xe6, 0xbd, 0x2, - 0xa3, 0xb7, 0x81, 0x2d, 0xa0, 0x8e, 0x14, 0x1b, 0x51, 0x14, - 0x28, 0x3, 0xd0, 0x54, 0x95, 0xf7, 0x54, 0x29, 0x2a, 0x14, - 0xa3, 0x4a, 0x3b, 0x25, 0x63, 0xef, 0xe9, 0x53, 0x54, 0xa1, - 0x18, 0x47, 0x64, 0x14, 0x51, 0x45, 0x6e, 0x6a, 0x7e, 0x70, - 0xff, 00, 0xc1, 0x43, 0xbf, 0xe0, 0x9c, 0x3a, 0xf7, 0xc6, - 0x5f, 0x19, 0x5d, 0x7c, 0x4c, 0xf8, 0x6b, 0xf6, 0x7b, 0x8d, - 0x7a, 0xea, 0x24, 0x1a, 0xae, 0x87, 0x33, 0x88, 0x9a, 0xe9, - 0xd1, 0x42, 0xac, 0xb1, 0x39, 0xf9, 0x77, 0x95, 0x55, 0x52, - 0xad, 0x8c, 0xed, 0x4, 0x1e, 0xb5, 0xf9, 0x9d, 0xe2, 0x4f, - 0xd9, 0xa7, 0xe2, 0xcf, 0x84, 0x2e, 0xe4, 0xb6, 0xd5, 0xfe, - 0x1b, 0x78, 0xaa, 0xce, 0x54, 0xfb, 0xc4, 0xe9, 0x13, 0xba, - 0x7e, 0xe, 0xaa, 0x54, 0xfe, 0x6, 0xbf, 0xa4, 0xfa, 0xe7, - 0xbe, 0x21, 0x78, 0xca, 0xdb, 0xe1, 0xe7, 0x81, 0xb5, 0xef, - 0x13, 0x5e, 0x47, 0x24, 0xd6, 0xfa, 0x55, 0x9c, 0xb7, 0x6d, - 0x14, 0x2a, 0x59, 0xe4, 0xda, 0xa4, 0x84, 0x50, 0x39, 0x2c, - 0xc7, 00, 0x1, 0xdc, 0xd3, 0xb9, 0x2d, 0x5c, 0xfe, 0x63, - 0xef, 0xac, 0x6e, 0x74, 0xcb, 0xb9, 0x6d, 0x6f, 0x2d, 0xe5, - 0xb4, 0xba, 0x85, 0xb6, 0x49, 0x4, 0xe8, 0x51, 0xd1, 0xbd, - 0xa, 0x9e, 0x41, 0xfa, 0xd5, 0x7a, 0xeb, 0x3e, 0x21, 0x5c, - 0x78, 0x93, 0xc5, 0xbe, 0x32, 0xd7, 0x7c, 0x49, 0xae, 0x69, - 0xb7, 0xb0, 0xea, 0x1a, 0xb5, 0xf4, 0xd7, 0xf7, 0x6, 0x68, - 0x1d, 0x70, 0xf2, 0x39, 0x72, 0x39, 0x1d, 0x1, 0x38, 0xaf, - 0xd9, 0xef, 0xf8, 0x27, 0x3f, 0xec, 0xbd, 0xe1, 0xaf, 0x8, - 0x7e, 0xcb, 0x5e, 0x1e, 0xbd, 0xf1, 0x2f, 0x86, 0xf4, 0xcd, - 0x5b, 0x58, 0xf1, 0x29, 0x3a, 0xcc, 0xe7, 0x52, 0xb1, 0x49, - 0x9a, 0x38, 0xe4, 00, 0x42, 0x9f, 0x38, 0x38, 0xc4, 0x6a, - 0xa7, 0x1e, 0xac, 0x69, 0xdc, 0x9b, 0x5c, 0xfc, 0x36, 0xa2, - 0xbf, 0xa4, 0x3d, 0x67, 0xf6, 0x53, 0xf8, 0x37, 0xe2, 0x2, - 0x7f, 0xb4, 0x3e, 0x17, 0xf8, 0x52, 0xe7, 0x3e, 0xba, 0x4c, - 0x23, 0xf9, 0x28, 0xae, 0x53, 0x54, 0xfd, 0x81, 0x7f, 0x67, - 0xbd, 0x5c, 0x62, 0x6f, 0x85, 0x5a, 0xc, 0x5f, 0xf5, 0xeb, - 0x1b, 0xc1, 0xff, 00, 0xa0, 0x30, 0xa5, 0x71, 0xf2, 0x9f, - 0xcf, 0x3d, 0x7d, 0x3f, 0xff, 00, 0x4, 0xe1, 0xf8, 0x2a, - 0x7e, 0x34, 0x7e, 0xd4, 0xfe, 0x18, 0x8e, 0xe2, 0x3, 0x2e, - 0x8f, 0xe1, 0xf6, 0xfe, 0xdc, 0xbe, 0xc8, 0x3b, 0x71, 0x9, - 0x6, 0x25, 0x27, 0xde, 0x53, 0x1f, 0xe0, 0xd, 0x7e, 0xa9, - 0x6a, 0x5f, 0xf0, 0x4c, 0x4f, 0xd9, 0xc3, 0x51, 0x18, 0xff, - 00, 0x84, 00, 0xda, 0xfb, 0xdb, 0x6a, 0x97, 0x69, 0xff, - 00, 0xb5, 0x6b, 0xd0, 0x3e, 00, 0xfe, 0xc8, 0x5f, 0xc, - 0xbf, 0x66, 0x6d, 0x43, 0x59, 0xbd, 0xf0, 0xe, 0x8d, 0x71, - 0xa6, 0xdc, 0xea, 0xd1, 0xc7, 0xd, 0xd3, 0xdc, 0x5e, 0xcb, - 0x72, 0x4a, 0x21, 0x62, 0xa1, 0x7c, 0xc2, 0x76, 0x8c, 0xb1, - 0xce, 0x3a, 0xf1, 0xe9, 0x45, 0xc3, 0x94, 0xf6, 0x7a, 0xfc, - 0xf8, 0xff, 00, 0x82, 0xc6, 0xfc, 0x66, 0x3e, 0x11, 0xf8, - 0x31, 0xa1, 0x7c, 0x3f, 0xb3, 0x98, 0xa5, 0xef, 0x8a, 0x6e, - 0xfc, 0xeb, 0x90, 0xa7, 0x9f, 0xb2, 0x5b, 0x95, 0x62, 0xf, - 0xd6, 0x46, 0x8f, 0xfe, 0xf9, 0x35, 0xfa, 0xf, 0x5f, 0x23, - 0xfe, 0xd6, 0x9f, 0xf0, 0x4f, 0x2d, 0x1b, 0xf6, 0xb2, 0xf1, - 0xd5, 0xaf, 0x8a, 0x35, 0x7f, 0x1c, 0x6b, 0x1a, 0x34, 0xf6, - 0x96, 0x6b, 0x65, 0x6d, 0x65, 0x6f, 0x6f, 0x14, 0x90, 0x44, - 0x80, 0x96, 0x24, 0x3, 0x83, 0x96, 0x66, 0x24, 0xf3, 0xd8, - 0x7a, 0x52, 0x29, 0x9f, 0x83, 0xf4, 0x57, 0xea, 0x9e, 0xa5, - 0xff, 00, 0x4, 0x45, 0xb5, 0x20, 0xfd, 0x83, 0xe2, 0xc4, - 0xca, 0x7b, 0xb, 0x9d, 0x10, 0x1f, 0xd5, 0x66, 0x15, 0xcf, - 0x5d, 0xff, 00, 0xc1, 0x11, 0xbc, 0x42, 0xaa, 0x4d, 0xaf, - 0xc5, 0x6d, 0x32, 0x46, 0xec, 0x26, 0xd1, 0xe4, 0x41, 0xf9, - 0x89, 0x4f, 0xf2, 0xaa, 0xb9, 0x16, 0x67, 0xe6, 0x66, 0x7, - 0xa5, 0x49, 0x14, 0xf2, 0x42, 0x7f, 0x77, 0x23, 0xc7, 0xfe, - 0xeb, 0x11, 0x5f, 0xa2, 0x1a, 0x87, 0xfc, 0x11, 0x57, 0xe2, - 0x44, 0x8, 0x4d, 0x9f, 0x8f, 0x3c, 0x31, 0x74, 0x7b, 0x2c, - 0x91, 0xdc, 0x47, 0xff, 00, 0xb2, 0x1a, 0xe3, 0xf5, 0x4f, - 0xf8, 0x23, 0xd7, 0xc7, 0x5b, 0x32, 0xdf, 0x65, 0xb9, 0xf0, - 0xb5, 0xfa, 0x8e, 0x9e, 0x5e, 0xa4, 0xe8, 0x4f, 0xfd, 0xf5, - 0x10, 0xa2, 0xe1, 0x66, 0x7c, 0x69, 0xa6, 0xf8, 0xcf, 0xc4, - 0x1a, 0x3b, 0x87, 0xb0, 0xd7, 0x75, 0x3b, 0x17, 0x1d, 0x1a, - 0xda, 0xf2, 0x48, 0xcf, 0xe8, 0xc2, 0xba, 0x9d, 0x3f, 0xf6, - 0x87, 0xf8, 0xa7, 0xa5, 0x38, 0x6b, 0x4f, 0x89, 0x1e, 0x2c, - 0x84, 0x8e, 0x9b, 0x75, 0xab, 0x9c, 0xf, 0xc3, 0x7d, 0x7b, - 0xce, 0xa5, 0xff, 00, 0x4, 0xab, 0xfd, 0xa2, 0x74, 0xf0, - 0x4a, 0x78, 0x5b, 0x4f, 0xbd, 0x3, 0xfe, 0x7d, 0x75, 0x68, - 0xe, 0x7f, 0xef, 0xa6, 0x15, 0xc9, 0xea, 0x7f, 0xf0, 0x4e, - 0xbf, 0xda, 0x27, 0x4a, 0x4, 0xbf, 0xc3, 0x2d, 0x46, 0x75, - 0x1d, 0xed, 0xae, 0x2d, 0xe5, 0xfd, 0x16, 0x4c, 0xd0, 0x16, - 0x67, 0x33, 0x61, 0xfb, 0x69, 0x7c, 0x76, 0xd3, 0x48, 0xf2, - 0x3e, 0x2b, 0xf8, 0xa7, 0x8e, 0x82, 0x4d, 0x41, 0xe4, 0x1f, - 0xf8, 0xf6, 0x6b, 0xa1, 0xb4, 0xff, 00, 0x82, 0x86, 0xfe, - 0xd1, 0x56, 0x61, 0x44, 0x7f, 0x14, 0xb5, 0x56, 0x3, 0xfe, - 0x7a, 0xc1, 0x6f, 0x27, 0xfe, 0x85, 0x19, 0xae, 0x67, 0x53, - 0xfd, 0x8d, 0xfe, 0x39, 0x69, 0x19, 0xfb, 0x4f, 0xc2, 0x9f, - 0x15, 0xe0, 0x75, 0x31, 0x69, 0x92, 0x4b, 0xff, 00, 0xa0, - 0x3, 0x5c, 0xdd, 0xd7, 0xec, 0xf7, 0xf1, 0x4a, 0xc7, 0x3f, - 0x68, 0xf8, 0x6f, 0xe2, 0xd8, 0x71, 0xd7, 0x7e, 0x87, 0x72, - 0x3f, 0xf6, 0x4a, 0x3, 0x53, 0xda, 0x2c, 0xbf, 0xe0, 0xa7, - 0x9f, 0xb4, 0x7d, 0x96, 0x3f, 0xe2, 0xbf, 0x17, 00, 0x76, - 0x9f, 0x4a, 0xb4, 0x6c, 0xff, 00, 0xe4, 0x2a, 0xea, 0x34, - 0xff, 00, 0xf8, 0x2b, 0x87, 0xed, 0x5, 0x64, 0x81, 0x65, - 0xd4, 0x3c, 0x3f, 0x7d, 0x8e, 0xf7, 0x1a, 0x4a, 0x82, 0x7f, - 0xef, 0x96, 0x5a, 0xf9, 0x4e, 0xf7, 0xe1, 0xaf, 0x8b, 0xf4, - 0xd0, 0x4d, 0xdf, 0x85, 0x75, 0xbb, 0x50, 0x3a, 0xf9, 0xfa, - 0x74, 0xc9, 0x8f, 0xcd, 0x6b, 0xe, 0xeb, 0x4f, 0xba, 0xb2, - 0x38, 0xb8, 0xb6, 0x9a, 0x3, 0xe9, 0x2c, 0x65, 0x7f, 0x9d, - 0x1, 0x76, 0x7d, 0xe7, 0xa5, 0x7f, 0xc1, 0x66, 0x3e, 0x30, - 0xda, 0x15, 0xfb, 0x6f, 0x87, 0x7c, 0x2b, 0x7e, 0x7, 0x5f, - 0xf4, 0x79, 0xa2, 0xcf, 0xe5, 0x25, 0x75, 0x76, 0x1f, 0xf0, - 0x5b, 0x3f, 0x18, 0xc5, 0x8f, 0xb6, 0xfc, 0x33, 0xd0, 0xee, - 0x3d, 0x7c, 0x8d, 0x42, 0x68, 0xbf, 0x9a, 0xb5, 0x7e, 0x6c, - 0xe4, 0x52, 0xd1, 0x60, 0xbb, 0x3f, 0x53, 0x74, 0xef, 0xf8, - 0x2d, 0xd0, 0x38, 0xfb, 0x7f, 0xc2, 0x82, 0xbe, 0xbf, 0x66, - 0xd6, 0xb3, 0xfc, 0xe1, 0x15, 0xd2, 0xd9, 0xff, 00, 0xc1, - 0x6c, 0xfc, 0x1a, 0xe0, 0x7d, 0xaf, 0xe1, 0xae, 0xbb, 0x11, - 0xef, 0xe4, 0xdf, 0x42, 0xff, 00, 0xcc, 0x2d, 0x7e, 0x46, - 0xd1, 0x45, 0x82, 0xec, 0xfd, 0x8f, 0xb1, 0xff, 00, 0x82, - 0xd2, 0xfc, 0x29, 0x9b, 0x2, 0xe7, 0xc1, 0x9e, 0x2e, 0xb6, - 0xf5, 0x2b, 0x1d, 0xb3, 0x8f, 0xfd, 0x1c, 0x2b, 0xa4, 0xd3, - 0xbf, 0xe0, 0xb0, 0xff, 00, 0x2, 0xef, 0x31, 0xf6, 0x9b, - 0x5f, 0x14, 0xd8, 0x13, 0xff, 00, 0x3d, 0x74, 0xd4, 0x70, - 0x3f, 0xef, 0x89, 0xd, 0x7e, 0x26, 0x51, 0x45, 0x87, 0xcc, - 0xcf, 0xdd, 0xdd, 0x3f, 0xfe, 0xa, 0xad, 0xfb, 0x3a, 0x5f, - 0x85, 0xdd, 0xe2, 0xbb, 0xfb, 0x46, 0x3f, 0xc3, 0x71, 0xa3, - 0xdc, 0x8c, 0x7e, 0x21, 0x8, 0xae, 0xb7, 0x4b, 0xff, 00, - 0x82, 0x89, 0x7e, 0xce, 0xfa, 0xaa, 0x6, 0x4f, 0x89, 0xba, - 0x6d, 0xb9, 0x3f, 0xc3, 0x75, 0xc, 0xd1, 0x1f, 0xd5, 0x2b, - 0xf9, 0xf5, 0xa2, 0x8b, 0x7, 0x31, 0xfd, 0x18, 0x69, 0xdf, - 0xb6, 0x8f, 0xc0, 0x8d, 0x51, 0x41, 0x83, 0xe2, 0xcf, 0x84, - 0xf9, 0xe8, 0x25, 0xd4, 0xe3, 0x88, 0xfe, 0x4e, 0x41, 0xae, - 0xa3, 0x4a, 0xfd, 0xa0, 0xbe, 0x18, 0x6b, 0x60, 0x7d, 0x83, - 0xe2, 0x1f, 0x85, 0xee, 0xf3, 0xff, 00, 0x3c, 0xb5, 0x7b, - 0x73, 0xff, 00, 0xb3, 0xd7, 0xf3, 0x4f, 0x45, 0x2b, 0x7, - 0x31, 0xfd, 0x3c, 0xd9, 0xf8, 0xff, 00, 0xc2, 0xfa, 0x81, - 0xc5, 0xaf, 0x89, 0x34, 0x8b, 0x92, 0x7b, 0x43, 0x7d, 0x13, - 0xff, 00, 0x26, 0xad, 0x58, 0x75, 0x5b, 0x2b, 0x83, 0x88, - 0xaf, 0x2d, 0xe4, 0x3e, 0x89, 0x2a, 0x9f, 0xeb, 0x5f, 0xcb, - 0x86, 0x7, 0xa5, 0x5a, 0xb4, 0xd5, 0x2f, 0x34, 0xf6, 0x6, - 0xd6, 0xee, 0x7b, 0x62, 0x3a, 0x18, 0x65, 0x64, 0xfe, 0x46, - 0x8b, 0xf, 0x98, 0xfe, 0xa3, 0x83, 0x3, 0xd0, 0x83, 0x4b, - 0x5f, 0xcc, 0x86, 0x9f, 0xf1, 0x5b, 0xc6, 0xda, 0x49, 0x6, - 0xc7, 0xc6, 0x3a, 0xfd, 0x91, 0x1d, 0xd, 0xbe, 0xa9, 0x3c, - 0x7f, 0xc9, 0xeb, 0xa8, 0xd2, 0xff, 00, 0x6a, 0x6f, 0x8c, - 0x5a, 0x2c, 0x8a, 0xf6, 0x9f, 0x14, 0x3c, 0x5a, 0x85, 0x7a, - 0x6f, 0xd6, 0x27, 0x90, 0x7e, 0x4c, 0xc4, 0x51, 0x60, 0xe6, - 0x3f, 0xa4, 0x7a, 0x2b, 0xf9, 0xe6, 0xb3, 0xfd, 0xbf, 0x3f, - 0x68, 0x4b, 0x12, 0xbe, 0x5f, 0xc5, 0x5d, 0x71, 0xb6, 0xf4, - 0x12, 0x98, 0xe4, 0x1f, 0xf8, 0xf2, 0x1a, 0xe8, 0xec, 0x7f, - 0xe0, 0xa6, 0x9f, 0xb4, 0x7d, 0x96, 0xd1, 0xff, 00, 0xb, - 0xd, 0xee, 0x15, 0x7b, 0x4f, 0xa6, 0x5a, 0x36, 0x7e, 0xa7, - 0xca, 0xcd, 0x16, 0xe, 0x64, 0x7e, 0xfb, 0x51, 0x5f, 0x86, - 0x76, 0x3f, 0xf0, 0x56, 0xcf, 0xda, 0x12, 0xce, 0x35, 0x57, - 0xd5, 0x34, 0x2b, 0xbc, 0x7f, 0x14, 0xfa, 0x42, 0x64, 0xff, - 00, 0xdf, 0x24, 0x56, 0xdd, 0x97, 0xfc, 0x16, 0x33, 0xe3, - 0xad, 0xb6, 0x4, 0xda, 0x7f, 0x84, 0x2e, 0xfd, 0xe4, 0xd3, - 0x66, 0x53, 0xff, 00, 0x8e, 0xce, 0x28, 0xb0, 0x5d, 0x1f, - 0xb6, 0x34, 0x57, 0xe3, 0xb6, 0x9d, 0xff, 00, 0x5, 0xa8, - 0xf8, 0x9b, 0x2, 0xa8, 0xbd, 0xf0, 0x3f, 0x85, 0xee, 0xdb, - 0xb9, 0x8d, 0xae, 0x22, 0xcf, 0xfe, 0x3e, 0x6b, 0xa5, 0xd3, - 0xff, 00, 0xe0, 0xb7, 0x1a, 0xfc, 0x78, 0xfb, 0x77, 0xc2, - 0xbd, 0x36, 0x7f, 0xfa, 0xf7, 0xd5, 0xe4, 0x8f, 0xf9, 0xc4, - 0xd4, 0x58, 0x77, 0x47, 0xeb, 0x25, 0x15, 0xf9, 0x8b, 0xa5, - 0x7f, 0xc1, 0x6e, 0x34, 0x77, 0x51, 0xfd, 0xa5, 0xf0, 0xae, - 0xfa, 0x16, 0xef, 0xf6, 0x5d, 0x5d, 0x24, 0x1f, 0xf8, 0xf4, - 0x6b, 0x5d, 0xd, 0xaf, 0xfc, 0x16, 0xbf, 0xe1, 0xe3, 0x91, - 0xf6, 0x9f, 0x87, 0xbe, 0x27, 0x88, 0x7a, 0xc5, 0x35, 0xb3, - 0xff, 00, 0x37, 0x5a, 0x2, 0xe8, 0xfd, 0x19, 0xa2, 0xbe, - 0x1, 0xd3, 0x7f, 0xe0, 0xb3, 0xbf, 0x7, 0xae, 0xdc, 0xb, - 0xaf, 0xc, 0x78, 0xc2, 0xc4, 0x7f, 0x79, 0xed, 0xad, 0x9c, - 0x7f, 0xe3, 0xb3, 0x1a, 0xeb, 0x74, 0xef, 0xf8, 0x2b, 0x87, - 0xec, 0xfb, 0x79, 0x8f, 0x3b, 0x50, 0xd7, 0xac, 0x49, 0xff, - 00, 0x9e, 0xfa, 0x4b, 0x9c, 0x7f, 0xdf, 0x24, 0xd2, 0xb, - 0xa3, 0xed, 0x1a, 0x2b, 0xe5, 0x5d, 0x33, 0xfe, 0xa, 0x7d, - 0xfb, 0x39, 0xea, 0x78, 0x1f, 0xf0, 0x9d, 0x3d, 0xa1, 0x3d, - 0xae, 0xb4, 0xcb, 0x94, 0xfd, 0x7c, 0xbc, 0x57, 0x57, 0xa6, - 0xfe, 0xdf, 0x1f, 0xb3, 0xee, 0xa8, 0x7, 0x95, 0xf1, 0x4f, - 0x42, 0x8c, 0x9e, 0xd7, 0x12, 0x3c, 0x47, 0xff, 00, 0x1e, - 0x51, 0x40, 0xcf, 0x7f, 0xa2, 0xbc, 0x9b, 0x4e, 0xfd, 0xad, - 0x7e, 0xb, 0x6a, 0xc4, 0xb, 0x5f, 0x8a, 0x7e, 0x13, 0x90, - 0x9e, 0xcd, 0xab, 0xc2, 0xa7, 0xf5, 0x61, 0x5d, 0x4d, 0x87, - 0xc6, 0x4f, 00, 0xea, 0xb8, 0xfb, 0x17, 0x8d, 0xbc, 0x3b, - 0x77, 0x9e, 0x9e, 0x4e, 0xab, 0x3, 0x67, 0xf2, 0x7a, 00, - 0xec, 0x28, 0xac, 0x9b, 0x7f, 0x17, 0x68, 0x57, 0x78, 0xf2, - 0x35, 0xad, 0x3a, 0x6c, 0xff, 00, 0xcf, 0x3b, 0xa8, 0xdb, - 0xf9, 0x1a, 0xd0, 0x8a, 0xf2, 0x9, 0xff, 00, 0xd5, 0xcf, - 0x1c, 0x9f, 0xee, 0xb8, 0x34, 0x1, 0x35, 0x14, 0x51, 0x40, - 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, - 0x51, 0x40, 0x5, 0x23, 0x28, 0x60, 0x41, 00, 0x83, 0xd4, - 0x1a, 0x5a, 0x28, 0x3, 0x97, 0xd5, 0xbe, 0x19, 0x78, 0x5b, - 0x5b, 0x2c, 0xd7, 0x5a, 0x25, 0xae, 0xf6, 0xeb, 0x24, 0x4b, - 0xe5, 0x31, 0xfc, 0x57, 0x15, 0xc5, 0xea, 0xff, 00, 0xb3, - 0x7e, 0x83, 0x76, 0x4b, 0x58, 0x5e, 0xdd, 0xd8, 0x1e, 0xca, - 0xc4, 0x4a, 0xbf, 0xae, 0xf, 0xeb, 0x5e, 0xb9, 0x45, 0x79, - 0xd5, 0xb2, 0xec, 0x1e, 0x23, 0xf8, 0x94, 0x93, 0xf9, 0x59, - 0xfd, 0xe8, 0xc2, 0x74, 0x29, 0x4f, 0xe2, 0x8a, 0x3e, 0x7b, - 0xbd, 0xfd, 0x99, 0xb5, 0x38, 0xf2, 0x6d, 0x35, 0x9b, 0x59, - 0x87, 0x61, 0x34, 0x4d, 0x1f, 0xf2, 0xdd, 0x58, 0x17, 0xbf, - 0xb3, 0xff, 00, 0x8b, 0xad, 0x9, 0xf2, 0xe0, 0xb5, 0xbb, - 0x3, 0xbc, 0x33, 0x8f, 0xfd, 0x9b, 0x15, 0xf5, 0x1d, 0x15, - 0xe4, 0x54, 0xe1, 0xcc, 0x4, 0xfe, 0x14, 0xd7, 0xa3, 0xff, - 00, 0x3b, 0x9c, 0xb2, 0xc0, 0x51, 0x7b, 0x68, 0x7c, 0x87, - 0x3f, 0xc2, 0x3f, 0x18, 0x5b, 0xe7, 0x76, 0x83, 0x72, 0xc3, - 0xd5, 0xa, 0xb7, 0xf2, 0x35, 0x49, 0xfe, 0x1d, 0x78, 0xa2, - 0x33, 0xcf, 0x87, 0xf5, 0x1f, 0xc2, 0xd9, 0xcf, 0xf4, 0xaf, - 0xb2, 0x68, 0xae, 0x27, 0xc2, 0xd8, 0x6e, 0x95, 0x25, 0xf8, - 0x7f, 0x91, 0x93, 0xcb, 0xa1, 0xd2, 0x4c, 0xf8, 0xd0, 0x7c, - 0x3d, 0xf1, 0x3b, 0x1e, 0x3c, 0x3f, 0xa9, 0x7f, 0xe0, 0x2b, - 0xff, 00, 0x85, 0x5c, 0xb7, 0xf8, 0x53, 0xe2, 0xeb, 0xaf, - 0xb9, 0xa0, 0x5d, 0x8f, 0xfa, 0xe8, 0x2, 0x7f, 0xe8, 0x44, - 0x57, 0xd7, 0xf4, 0x50, 0xb8, 0x5b, 0xf, 0xd6, 0xa4, 0xbf, - 0xf, 0xf2, 0x5, 0x97, 0x43, 0xac, 0x99, 0xf2, 0xe6, 0x9f, - 0xf0, 0x3, 0xc5, 0xb7, 0xa4, 0x79, 0xb0, 0x5b, 0x59, 0x2f, - 0xac, 0xf3, 0x83, 0xfa, 0x2e, 0x6b, 0xa9, 0xd2, 0xbf, 0x66, - 0x59, 0x4b, 0x2b, 0x6a, 0x5a, 0xda, 0x2a, 0xf7, 0x4b, 0x58, - 0x72, 0x7f, 0xef, 0xa6, 0x3f, 0xd2, 0xbd, 0xea, 0x8a, 0xef, - 0xa5, 0xc3, 0xb8, 0xa, 0x7a, 0xca, 0x2e, 0x5e, 0xaf, 0xfc, - 0xac, 0x6d, 0x1c, 0xd, 0x18, 0xee, 0xae, 0x71, 0x5e, 0x1e, - 0xf8, 0x3d, 0xe1, 0x6f, 0xe, 0xec, 0x78, 0xf4, 0xd5, 0xbc, - 0xb8, 0x5e, 0x7c, 0xeb, 0xc3, 0xe6, 0x1c, 0xfa, 0xe0, 0xf0, - 0x3f, 0x1, 0x5d, 0xa0, 0x1, 0x40, 00, 0x60, 0xe, 0x80, - 0x52, 0xd1, 0x5e, 0xfd, 0x1a, 0x14, 0xb0, 0xf1, 0xe5, 0xa5, - 0x15, 0x15, 0xe4, 0x8e, 0xd8, 0xc2, 0x30, 0x56, 0x8a, 0xb0, - 0x51, 0x45, 0x15, 0xb9, 0x61, 0x45, 0x14, 0x50, 0x1, 0x45, - 0x14, 0x50, 0x7, 0x1, 0xf1, 0xa6, 0xef, 0xec, 0xde, 0x11, - 0x7f, 0x73, 0x5f, 0xa, 0x6b, 0x72, 0x79, 0x97, 0x97, 0xc, - 0x7b, 0xb1, 0xaf, 0xb5, 0x7f, 0x68, 0x1b, 0x9f, 0x27, 0xc3, - 0x8, 0x9e, 0xb9, 0x35, 0xf1, 0x1e, 0xa8, 0xfb, 0xa4, 0x94, - 0xfa, 0xb1, 0xaf, 0xce, 0xf3, 0xd9, 0x73, 0x63, 0x23, 0x1e, - 0xc8, 0xfc, 0xfb, 0x89, 0x67, 0xef, 0x24, 0x78, 0x67, 0xc7, - 0x2b, 0x8d, 0x9a, 0x5c, 0xe3, 0xfd, 0x93, 0xfc, 0xab, 0xf5, - 0x97, 0xf6, 0x7f, 0xd2, 0x46, 0x85, 0xf0, 0x37, 0xc0, 0x16, - 0xb, 0x9c, 0x41, 0xa1, 0x59, 0xaf, 0x3e, 0xbe, 0x4a, 0xe6, - 0xbf, 0x22, 0xfe, 0x38, 0x39, 0x9a, 0x23, 0xa, 0xe5, 0x9a, - 0x46, 0x8, 00, 0xea, 0x49, 0xe2, 0xbf, 0x68, 0x3c, 0x33, - 0x62, 0x9a, 0x5f, 0x86, 0xf4, 0xab, 0x38, 0xc6, 0xd4, 0xb7, - 0xb4, 0x8a, 0x25, 0x7, 0xb0, 0x54, 0x3, 0xfa, 0x57, 0xd5, - 0xe5, 0x6a, 0xd4, 0x51, 0x5c, 0x1d, 0x1b, 0x61, 0x27, 0x2e, - 0xf2, 0x66, 0x9d, 0x14, 0x51, 0x5e, 0xc9, 0xf7, 0xe7, 0xe7, - 0xef, 0xc5, 0xdf, 0x13, 0x3f, 0x8b, 0x3e, 0x26, 0xf8, 0x82, - 0xf9, 0xf8, 0xb, 0x72, 0x6d, 0x90, 0x7a, 0x2c, 0x7f, 0x20, - 0xff, 00, 0xd0, 0x49, 0xfc, 0x6b, 0xdc, 0xbf, 0x64, 0xbf, - 0x8, 0xf9, 0x76, 0xd7, 0xda, 0xe4, 0xa9, 0xc9, 0x3e, 0x54, - 0x44, 0xfe, 0xb5, 0xf3, 0x7d, 0xfc, 0x6f, 0xa9, 0xf8, 0xdf, - 0x58, 0x86, 0x31, 0xba, 0x49, 0x35, 0x3b, 0x85, 00, 0x7a, - 0xf9, 0xad, 0x5f, 0x7c, 0x7c, 0x35, 0xf0, 0xd2, 0x78, 0x53, - 0xc1, 0x9a, 0x6d, 0x82, 0xa0, 0x46, 0x58, 0x83, 0x3f, 0xfb, - 0xc4, 0x57, 0xc1, 0x65, 0x94, 0x25, 0x5f, 0x30, 0x95, 0x59, - 0xfd, 0x9b, 0xbf, 0x9b, 0x3f, 0x39, 0xe1, 0xfa, 0x6f, 0x17, - 0x89, 0x9e, 0x2a, 0x7d, 0x2e, 0xfe, 0x6c, 0xea, 0x28, 0xa2, - 0x8a, 0xfb, 0xd3, 0xf4, 0x60, 0xa2, 0x8a, 0x28, 00, 0xa2, - 0x9a, 0xe8, 0x1c, 0x60, 0xe7, 0xd7, 0x83, 0x8a, 0x5c, 0x7b, - 0x9a, 00, 0xaf, 0x73, 0xa6, 0xda, 0x5e, 0x29, 0x17, 0x16, - 0xb0, 0xce, 0xf, 0x69, 0x23, 0xd, 0xfc, 0xc5, 0x4f, 0x1c, - 0x49, 0xc, 0x6b, 0x1c, 0x68, 0xb1, 0xc6, 0x80, 0x2a, 0xaa, - 0x8c, 00, 0x7, 0x40, 0x5, 0x3a, 0x8a, 00, 0x28, 0xa2, - 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, - 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, - 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x46, 0x50, 0xc3, 0x4, - 0x2, 0x3d, 0xd, 0x67, 0x5e, 0x78, 0x6b, 0x48, 0xd4, 0x3f, - 0xe3, 0xeb, 0x4a, 0xb2, 0xb9, 0xff, 00, 0xae, 0xd6, 0xe8, - 0xff, 00, 0xcc, 0x56, 0x95, 0x14, 0x1, 0xc5, 0x6a, 0x9f, - 0x4, 0xfe, 0x1e, 0xeb, 0x60, 0x8d, 0x43, 0xc0, 0xde, 0x1c, - 0xbd, 0xdd, 0xd7, 0xcf, 0xd2, 0xa0, 0x7c, 0xfe, 0x6b, 0x5c, - 0xa6, 0xa7, 0xfb, 0x1f, 0x7c, 0x10, 0xd6, 0x14, 0x8b, 0xbf, - 0x85, 0x5e, 0x13, 0x70, 0x7a, 0xec, 0xd2, 0xa2, 0x4f, 0xfd, - 0x4, 0xa, 0xf6, 0xa, 0x28, 0x3, 0xe7, 0x4d, 0x57, 0xfe, - 0x9, 0xe5, 0xfb, 0x3c, 0x6a, 0xe0, 0x89, 0x7e, 0x18, 0x69, - 0x50, 0xe7, 0xfe, 0x7d, 0x64, 0x9a, 0xf, 0xfd, 0x1, 0xc5, - 0x72, 0xb7, 0x9f, 0xf0, 0x4a, 0xff, 00, 0xd9, 0xbe, 0xe8, - 0xb1, 0x5f, 0x5, 0xdd, 0xdb, 0x13, 0xff, 00, 0x3c, 0x75, - 0xab, 0xce, 0x3f, 0x3, 0x29, 0x15, 0xf5, 0xad, 0x14, 0x1, - 0xf1, 0x76, 0xa3, 0xff, 00, 0x4, 0x8e, 0xfd, 0x9f, 0x6f, - 0x50, 0xac, 0x1a, 0x7e, 0xbf, 0xa7, 0x9f, 0xef, 0x41, 0xab, - 0xbb, 0x1f, 0xfc, 0x7c, 0x35, 0x72, 0xba, 0x97, 0xfc, 0x11, - 0x97, 0xe0, 0xe5, 0xca, 0x9f, 0xb1, 0x78, 0x93, 0xc5, 0xd6, - 0x4d, 0xfe, 0xd5, 0xd5, 0xbc, 0x80, 0x7e, 0x70, 0x8a, 0xfb, - 0xee, 0x8a, 0x5, 0x64, 0x7e, 0x6d, 0xea, 0x1f, 0xf0, 0x44, - 0xdf, 0x5, 0xbc, 0x6d, 0xf6, 0x1f, 0x89, 0x1a, 0xf4, 0x2f, - 0xfc, 0x3f, 0x68, 0xb3, 0x82, 0x40, 0x3f, 0x2d, 0xb5, 0xc8, - 0xea, 0x1f, 0xf0, 0x44, 0x5b, 0x80, 0x18, 0xd8, 0xfc, 0x58, - 0x8c, 0x9f, 0xe1, 0x5b, 0x8d, 0x10, 0x8f, 0xcc, 0x89, 0xbf, - 0xa5, 0x7e, 0xa9, 0x51, 0x4c, 0x2c, 0x8f, 0xc8, 0x5b, 0xff, - 00, 0xf8, 0x22, 0x7f, 0x8e, 0xe2, 0xc, 0x6c, 0xfe, 0x22, - 0xf8, 0x7e, 0xe3, 0xfb, 0xa2, 0x6b, 0x49, 0xe3, 0xcf, 0xe5, - 0xba, 0xb9, 0x1d, 0x43, 0xfe, 0x8, 0xd9, 0xf1, 0xba, 0xd9, - 0x9b, 0xec, 0xba, 0xcf, 0x83, 0xef, 0x10, 0x74, 0xcd, 0xfc, - 0xf1, 0xb1, 0xfc, 0xc, 0x18, 0xfd, 0x6b, 0xf6, 0xa2, 0x8a, - 0x2e, 0x16, 0x47, 0xe1, 0xd5, 0xd7, 0xfc, 0x12, 0x2b, 0xf6, - 0x81, 0xb7, 0x56, 0x29, 0x69, 0xe1, 0xcb, 0x9c, 0x76, 0x8b, - 0x56, 0x19, 0x3f, 0xf7, 0xd2, 0xa, 0xe6, 0x35, 0x1f, 0xf8, - 0x25, 0xef, 0xed, 0x1b, 0x60, 0x5b, 0x6f, 0x81, 0xa2, 0xbc, - 0xb, 0xde, 0xdb, 0x55, 0xb5, 0x39, 0xfa, 0x66, 0x40, 0x6b, - 0xf7, 0xb2, 0x8a, 0x2e, 0x2e, 0x54, 0x7f, 0x3d, 0x77, 0xdf, - 0xf0, 0x4f, 0xdf, 0xda, 0x1b, 0x4f, 0x24, 0x49, 0xf0, 0xb3, - 0x59, 0x7c, 0x77, 0x80, 0xc5, 0x2f, 0xfe, 0x82, 0xe6, 0xb9, - 0x2d, 0x53, 0xf6, 0x4e, 0xf8, 0xd1, 0xa3, 0xbb, 0x25, 0xd7, - 0xc2, 0xdf, 0x16, 0x23, 0x2f, 0x5f, 0x2f, 0x48, 0x9a, 0x4f, - 0xfd, 0x5, 0x4d, 0x7f, 0x48, 0x34, 0x51, 0x70, 0xe5, 0x3f, - 0x99, 0x4d, 0x47, 0xe1, 0xf, 0x8e, 0xf4, 0x76, 0x2b, 0x7d, - 0xe0, 0xaf, 0x11, 0x59, 0xb0, 0xea, 0x27, 0xd2, 0xa7, 0x4c, - 0x7e, 0x69, 0x5c, 0xf5, 0xe6, 0x8d, 0xa8, 0x69, 0xcc, 0x56, - 0xee, 0xc6, 0xe6, 0xd4, 0x8e, 0xa2, 0x68, 0x59, 0x3f, 0x98, - 0xaf, 0xea, 0x2c, 0x80, 0x7a, 0x8a, 0xad, 0x71, 0xa5, 0x59, - 0x5d, 0xff, 00, 0xaf, 0xb3, 0xb7, 0x9b, 0xfe, 0xba, 0x44, - 0xad, 0xfc, 0xc5, 0x17, 0xe, 0x53, 0xf9, 0x70, 0xc8, 0xf5, - 0xa5, 0xaf, 0xe9, 0xe6, 0xeb, 0xe1, 0xf7, 0x85, 0xaf, 0xb3, - 0xf6, 0x9f, 0xd, 0x69, 0x17, 0x19, 0xeb, 0xe6, 0xd8, 0x44, - 0xd9, 0xfc, 0xd6, 0xb9, 0xcd, 0x4f, 0xf6, 0x78, 0xf8, 0x5b, - 0xac, 0xe7, 0xed, 0xdf, 0xe, 0xbc, 0x2d, 0x73, 0x9e, 0xbe, - 0x66, 0x91, 0x1, 0xcf, 0xfe, 0x39, 0x45, 0xc5, 0xca, 0x7f, - 0x35, 0x34, 0x57, 0xf4, 0x53, 0xa8, 0xfe, 0xc4, 0x7f, 0x1, - 0x75, 0x56, 0x2d, 0x3f, 0xc2, 0x7f, 0xb, 0x86, 0x3d, 0x4c, - 0x36, 0xb, 0x17, 0xfe, 0x83, 0x8a, 0xe5, 0xb5, 0x3f, 0xf8, - 0x26, 0xf7, 0xec, 0xeb, 0xaa, 0x67, 0x77, 0xc3, 0x8b, 0x4b, - 0x62, 0x7f, 0xe7, 0xd6, 0xee, 0xe2, 0x2f, 0xe5, 0x25, 0x17, - 0xe, 0x53, 0xf9, 0xff, 00, 0xa2, 0xbf, 0x75, 0x35, 0x5f, - 0xf8, 0x24, 0xf7, 0xec, 0xf1, 0xa8, 0xee, 0x31, 0x78, 0x7f, - 0x56, 0xd3, 0xc9, 0xef, 0x6b, 0xab, 0xcd, 0xc7, 0xe0, 0xe5, - 0xab, 0x91, 0xd4, 0x3f, 0xe0, 0x8d, 0x9f, 0x5, 0x2e, 0x77, - 0x7d, 0x9b, 0x5a, 0xf1, 0x75, 0x91, 0x3d, 0x36, 0xdf, 0x42, - 0xe0, 0x7f, 0xdf, 0x50, 0xd3, 0xb8, 0x72, 0x9f, 0x8b, 0x34, - 0x57, 0xec, 0x35, 0xd7, 0xfc, 0x11, 0x53, 0xe1, 0x9b, 0x83, - 0xf6, 0x7f, 0x1e, 0x78, 0xae, 0x13, 0xdb, 0xcc, 0x5b, 0x67, - 0x3, 0xf2, 0x8c, 0x57, 0x3f, 0xa8, 0x7f, 0xc1, 0x12, 0x7c, - 0x3a, 0xc0, 0xfd, 0x87, 0xe2, 0x8e, 0xa9, 0x19, 0xec, 0x2e, - 0x34, 0xb8, 0xdf, 0xf5, 0xe, 0x28, 0xb8, 0xac, 0xcf, 0xc9, - 0x9a, 0x2b, 0xf4, 0xeb, 0x51, 0xff, 00, 0x82, 0x23, 0x6a, - 0xe1, 0x98, 0xd8, 0x7c, 0x56, 0xb2, 0x65, 0xec, 0xb7, 0x1a, - 0x33, 0x83, 0xf9, 0x89, 0x4f, 0xf2, 0xae, 0x5b, 0x52, 0xff, - 00, 0x82, 0x2b, 0x7c, 0x4a, 0x81, 0x8f, 0xd8, 0x7c, 0x75, - 0xe1, 0x8b, 0xb5, 0x1d, 0x3c, 0xe4, 0xb8, 0x88, 0x9f, 0xc9, - 0x1a, 0x8b, 0x85, 0x99, 0xf9, 0xdd, 0x49, 0x5f, 0x73, 0xea, - 0x7f, 0xf0, 0x47, 0x7f, 0x8e, 0x76, 0x84, 0xfd, 0x92, 0xf7, - 0xc2, 0xb7, 0xeb, 0xfe, 0xce, 0xa3, 0x22, 0x1f, 0xfc, 0x7a, - 0x2a, 0xe3, 0xb5, 0x4f, 0xf8, 0x25, 0x87, 0xed, 0x1b, 0xa7, - 0x48, 0x56, 0x2f, 0x7, 0xd9, 0xea, 00, 0x7f, 0x1d, 0xae, - 0xaf, 0x6d, 0x83, 0xff, 00, 0x7d, 0xba, 0x9a, 0x2e, 0x16, - 0x67, 0xc9, 0x40, 0xed, 0x39, 0x1c, 0x1f, 0x51, 0x5a, 0xda, - 0x77, 0x8b, 0xb5, 0xdd, 0x1d, 0x81, 0xb0, 0xd6, 0xb5, 0x1b, - 0x12, 0x3a, 0x1b, 0x6b, 0xb9, 0x23, 0xc7, 0xe4, 0x45, 0x7b, - 0xe5, 0xdf, 0xfc, 0x13, 0x8f, 0xf6, 0x8e, 0xb3, 0x7d, 0xad, - 0xf0, 0xc2, 0xfe, 0x4f, 0x78, 0x6f, 0x2d, 0x5c, 0x7e, 0x92, - 0xd6, 0xe, 0xa3, 0xfb, 0xc, 0x7c, 0x7e, 0xd2, 0x89, 0x13, - 0xfc, 0x28, 0xf1, 0x23, 0x63, 0xbc, 0x16, 0xbe, 0x70, 0xfc, - 0xd0, 0x9a, 0x3, 0x53, 0x85, 0xb0, 0xf8, 0xf3, 0xf1, 0x2f, - 0x4b, 0x60, 0xd6, 0x9f, 0x10, 0x7c, 0x53, 0x6e, 0x47, 0x4d, - 0x9a, 0xcd, 0xc0, 0xc7, 0xfe, 0x3f, 0x5d, 0x4e, 0x9f, 0xfb, - 0x63, 0xfc, 0x71, 0xd2, 0xd9, 0x4d, 0xbf, 0xc5, 0x5f, 0x15, - 0x64, 0x74, 0xf3, 0x75, 0x29, 0x25, 0x1f, 0x93, 0x13, 0x58, - 0xfa, 0xaf, 0xec, 0xcb, 0xf1, 0x73, 0x44, 0x24, 0x5e, 0xfc, - 0x32, 0xf1, 0x64, 0x4, 0x7a, 0xe8, 0xd7, 0x7, 0xf9, 0x25, - 0x73, 0x1a, 0x9f, 0xc3, 0x3f, 0x18, 0x68, 0x80, 0x9d, 0x47, - 0xc2, 0x7a, 0xe5, 0x80, 0x1d, 0x4d, 0xd6, 0x9b, 0x34, 0x7f, - 0xfa, 0x12, 0x8a, 0x3, 0x53, 0xda, 0x6c, 0x7f, 0xe0, 0xa2, - 0x5f, 0xb4, 0x55, 0x86, 0xd0, 0xbf, 0x13, 0xf5, 0x39, 0x40, - 0xed, 0x3c, 0x16, 0xf2, 0x7f, 0x38, 0xeb, 0xa8, 0xd3, 0xbf, - 0xe0, 0xa9, 0xdf, 0xb4, 0x66, 0x9e, 0x81, 0x4f, 0x8c, 0x6d, - 0x2e, 0xc0, 0xff, 00, 0x9f, 0x8d, 0x22, 0xd5, 0x89, 0xfc, - 0x42, 0x3, 0x5f, 0x28, 0x4f, 0x65, 0x71, 0x6a, 0x71, 0x34, - 0x12, 0xc2, 0x7f, 0xe9, 0xa2, 0x15, 0xfe, 0x75, 0x6, 0x47, - 0xad, 0x1, 0x76, 0x7d, 0xb1, 0x67, 0xff, 00, 0x5, 0x79, - 0xf8, 0xff, 00, 0x6a, 0xa0, 0x49, 0x37, 0x86, 0xae, 0xcf, - 0xf7, 0xa6, 0xd2, 0x70, 0x4f, 0xfd, 0xf2, 0xeb, 0x5b, 0x96, - 0x3f, 0xf0, 0x59, 0x6f, 0x8d, 0x76, 0xe0, 0xb, 0x8d, 0x7, - 0xc1, 0xb7, 0x63, 0xb9, 0x36, 0x37, 0x8, 0x4f, 0xe5, 0x3d, - 0x7c, 0x19, 0x45, 0x16, 0xb, 0xb3, 0xf4, 0x7f, 0x4a, 0xff, - 00, 0x82, 0xd8, 0x78, 0xe6, 0x8, 0xf1, 0xa8, 0xfc, 0x39, - 0xd0, 0x2f, 0x1f, 0xfb, 0xd6, 0xf7, 0x93, 0x40, 0x3f, 0x22, - 0x1e, 0xba, 0x8d, 0x27, 0xfe, 0xb, 0x73, 0x37, 0xfc, 0xc4, - 0xfe, 0x14, 0x47, 0xff, 00, 0x6e, 0x9a, 0xc9, 0xff, 00, - 0xd9, 0xa1, 0xaf, 0xcb, 0x8a, 0x28, 0xb0, 0x5d, 0x9f, 0xad, - 0xfa, 0x5f, 0xfc, 0x16, 0xcf, 0xc2, 0x12, 0x11, 0xfd, 0xa3, - 0xf0, 0xd3, 0x5b, 0xb7, 0x1d, 0xcd, 0xad, 0xf4, 0x32, 0xff, - 00, 0xe8, 0x41, 0x6b, 0xa8, 0xd3, 0x3f, 0xe0, 0xb3, 0xdf, - 0x8, 0xae, 0xdc, 0xb, 0xbf, 0xa, 0xf8, 0xb6, 0xc4, 0x7f, - 0x78, 0xc1, 0x6f, 0x27, 0xf2, 0x96, 0xbf, 0x1a, 0x28, 0xa2, - 0xc1, 0xcc, 0xcf, 0xdc, 0x3b, 0x1f, 0xf8, 0x2b, 0xb7, 0xec, - 0xff, 00, 0x76, 0x47, 0x9d, 0x75, 0xe2, 0x3b, 0x2f, 0x79, - 0xb4, 0x92, 0x7f, 0xf4, 0x6, 0x6a, 0xdc, 0xb3, 0xff, 00, - 0x82, 0xaa, 0x7e, 0xce, 0x57, 0x6c, 0x14, 0xf8, 0xbe, 0xfa, - 0xdf, 0x3d, 0xe6, 0xd1, 0xae, 0x80, 0x1f, 0x94, 0x66, 0xbf, - 0x8, 0x28, 0xa2, 0xc3, 0xe6, 0x3f, 0xa0, 0xd, 0x3f, 0xfe, - 0xa, 0x47, 0xfb, 0x39, 0x6a, 0x2c, 0x15, 0x3e, 0x25, 0x5a, - 0x42, 0x4f, 0xfc, 0xfc, 0x59, 0x5d, 0x44, 0x3f, 0x36, 0x88, - 0xa, 0xea, 0x6c, 0x3f, 0x6d, 0xef, 0x80, 0x9a, 0x88, 0x5f, - 0x27, 0xe2, 0xcf, 0x85, 0x81, 0x6e, 0x82, 0x5d, 0x41, 0x63, - 0x3f, 0x93, 0x62, 0xbf, 0x9d, 0x6a, 0x29, 0x58, 0x39, 0x8f, - 0xe9, 0x53, 0x4e, 0xfd, 0xa2, 0xfe, 0x16, 0x6a, 0xca, 0xd, - 0x9f, 0xc4, 0x6f, 0xb, 0x4e, 0xf, 0x4d, 0xba, 0xc4, 0x1c, - 0xff, 00, 0xe3, 0xf5, 0xd3, 0xd8, 0x78, 0xf3, 0xc3, 0x5a, - 0xa8, 0x6, 0xcb, 0xc4, 0x3a, 0x55, 0xd8, 0x3d, 0xc, 0x17, - 0xb1, 0xbe, 0x7f, 0x26, 0xaf, 0xe6, 0x12, 0x95, 0x58, 0xa9, - 0xc8, 0x24, 0x1f, 0x6a, 0x2c, 0x1c, 0xc7, 0xf5, 0x23, 0xd, - 0xed, 0xbd, 0xc8, 0x6, 0x29, 0xe2, 0x94, 0x1f, 0xee, 0x38, - 0x3f, 0xca, 0xa6, 0xaf, 0xe5, 0xf2, 0xc7, 0xc5, 0x9a, 0xde, - 0x96, 00, 0xb3, 0xd6, 0x75, 0xb, 0x40, 0x3a, 0x79, 0x17, - 0x4e, 0x98, 0xfc, 0x8d, 0x6e, 0x5a, 0xfc, 0x66, 0xf8, 0x83, - 0x63, 0x8f, 0xb3, 0x78, 0xef, 0xc4, 0xd6, 0xf8, 0xe9, 0xe5, - 0x6b, 0x17, 0xb, 0xfc, 0x9e, 0x8b, 0xf, 0x98, 0xfe, 0x99, - 0xe8, 0xaf, 0xe6, 0xd6, 0xc7, 0xf6, 0xa0, 0xf8, 0xc1, 0xa6, - 0xe3, 0xec, 0xff, 00, 0x14, 0x3c, 0x5c, 0x98, 0xe9, 0x9d, - 0x6a, 0xe1, 0xbf, 0x9b, 0x9a, 0xe9, 0xb4, 0xef, 0xdb, 0x9f, - 0xe3, 0xf6, 0x96, 00, 0x83, 0xe2, 0xbf, 0x88, 0xc8, 0x1d, - 0xa6, 0xb9, 0x12, 0xff, 00, 0xe8, 0x60, 0xd1, 0x60, 0xe6, - 0x3f, 0xa2, 0x4a, 0x2b, 0xf0, 0x7, 0x4d, 0xff, 00, 0x82, - 0x94, 0x7e, 0xd1, 0xba, 0x6e, 0x31, 0xf1, 0x1e, 0xe2, 0xe8, - 0xe, 0xd7, 0x36, 0x36, 0xaf, 0xfa, 0xf9, 0x79, 0xae, 0xb7, - 0x4c, 0xff, 00, 0x82, 0xb2, 0x7e, 0xd0, 0xba, 0x78, 0x51, - 0x2e, 0xb5, 0xa3, 0x5f, 0x81, 0xff, 00, 0x3f, 0x3a, 0x4c, - 0x79, 0x3f, 0xf7, 0xce, 0xda, 0x2c, 0x1c, 0xc8, 0xfd, 0xd1, - 0xa2, 0xbf, 0x16, 0x74, 0xdf, 0xf8, 0x2c, 0x9f, 0xc6, 0xbb, - 0x45, 0xb, 0x75, 0xa2, 0x78, 0x46, 0xfb, 0x1d, 0x59, 0xac, - 0xa7, 0x42, 0x7f, 0xef, 0x99, 0xb1, 0xfa, 0x57, 0xeb, 0x5f, - 0xc0, 0x9f, 0x1c, 0x6a, 0x7f, 0x13, 0x3e, 0xc, 0xf8, 0x2b, - 0xc5, 0xba, 0xcd, 0xb4, 0x16, 0x5a, 0xa6, 0xb7, 0xa4, 0xdb, - 0x6a, 0x17, 0x16, 0xf6, 0xc0, 0x88, 0xe3, 0x79, 0x23, 0xe, - 0x55, 0x72, 0x49, 0xc0, 0xcf, 0x73, 0x48, 0x77, 0xb9, 0xdd, - 0xd1, 0x45, 0x14, 0xc, 0x28, 0xa2, 0x8a, 00, 0xf1, 0x4f, - 0xda, 0x4e, 0xe7, 0xcb, 0xd1, 0xa1, 0x4c, 0xff, 00, 0x9, - 0x35, 0xf1, 0xa6, 0xa0, 0xdc, 0x39, 0xf5, 0x26, 0xbe, 0xb3, - 0xfd, 0xa7, 0x6e, 0xb6, 0xc0, 0x89, 0x9e, 0x89, 0x8a, 0xf9, - 0x23, 0x51, 0x6c, 0x46, 0xdf, 0x8d, 0x7e, 0x69, 0x9b, 0x3e, - 0x7c, 0xc2, 0x5e, 0x56, 0x3f, 0x31, 0xe2, 0x59, 0xfe, 0xf4, - 0xf0, 0xdf, 0x1d, 0xc4, 0xda, 0x9f, 0x8e, 0x3c, 0x39, 0x62, - 0x83, 0x73, 0xdc, 0xea, 0xd6, 0xb0, 0x85, 0xf5, 0x2d, 0x2a, - 0xc, 0x7e, 0xb5, 0xfb, 0x56, 00, 00, 0x1, 0xd0, 0x57, - 0xe3, 0x1d, 0x9d, 0xa3, 0xeb, 0x5f, 0xb4, 0x7, 0xc3, 0x8b, - 0x18, 0xcf, 0xcf, 0x2f, 0x89, 0x6c, 0x3f, 0x49, 0xd1, 0x8f, - 0xf2, 0xaf, 0xd9, 0xda, 0xfb, 0x8c, 0xbd, 0x5a, 0x8a, 0x3d, - 0xae, 0x13, 0x8f, 0x2e, 0x5a, 0x9f, 0x76, 0xc2, 0x8a, 0x28, - 0xaf, 0x4c, 0xfb, 0x43, 0xf3, 0xa6, 0xf6, 0x59, 0x3e, 0x1f, - 0x7c, 0x74, 0xd7, 0xac, 0xb5, 0x48, 0xb6, 0xc9, 0x6d, 0xa9, - 0xc9, 0x72, 0x23, 0x27, 0x21, 0x92, 0x43, 0xe6, 0x21, 0xfc, - 0x98, 0x57, 0xd7, 0x5a, 0x47, 0xed, 0x13, 0xe1, 0xdb, 0x8b, - 0x48, 0x7c, 0xd9, 0x15, 0x1f, 0x68, 0xc8, 0xd, 0xd3, 0x8a, - 0xf0, 0x9f, 0xdb, 0xc7, 0xe1, 0x85, 0xed, 0x86, 0xa5, 0xa7, - 0x7c, 0x48, 0xd2, 0xd5, 0x9e, 0x25, 0x44, 0xb1, 0xd4, 0x63, - 0x41, 0xf7, 0x70, 0x4f, 0x97, 0x21, 0xf6, 0xe7, 0x69, 0x3f, - 0xee, 0xd7, 0xce, 0xfe, 0x1f, 0xf1, 0x7c, 0x37, 0xf1, 0x28, - 0xf3, 0x36, 0xc9, 0xdd, 0x49, 0xaf, 0x8a, 0xaf, 0xf5, 0x9c, - 0xb6, 0xac, 0xe5, 0x87, 0xd5, 0x33, 0xf2, 0x6f, 0xaf, 0xd5, - 0xe1, 0xcc, 0x55, 0x5c, 0x2b, 0x8f, 0xb8, 0xdd, 0xd3, 0xf2, - 0x67, 0xe8, 0xc4, 0x3f, 0x1c, 0x7c, 0x33, 0x2f, 0xfc, 0xbd, - 0x1, 0xff, 00, 0x2, 0x15, 0xa1, 0x7, 0xc5, 0x9f, 0xe, - 0x4f, 0xd2, 0xf5, 0x47, 0xe3, 0x5f, 0x9f, 0xb0, 0xea, 0x21, - 0xc6, 0x44, 0xa4, 0x7e, 0x35, 0x65, 0x35, 0x29, 0xd7, 0xee, - 0xdc, 0xb8, 0xfa, 0x35, 0x72, 0x2c, 0xff, 00, 0x15, 0x1f, - 0x8a, 0x8, 0xf6, 0x21, 0xc4, 0xf2, 0x7f, 0x65, 0x1f, 0xa0, - 0xd0, 0xfc, 0x44, 0xd0, 0x26, 0xc6, 0x2f, 0xe3, 0xe7, 0xde, - 0xae, 0x47, 0xe2, 0xfd, 0x1e, 0x50, 0xa, 0xdf, 0xc2, 0x73, - 0xfe, 0xd5, 0x7e, 0x7a, 0x26, 0xb9, 0x7d, 0x18, 0xf9, 0x6f, - 0x25, 0x1f, 0xf0, 0x3a, 0xb5, 0x1f, 0x8b, 0x35, 0x68, 0xbe, - 0xed, 0xfc, 0xdf, 0xf7, 0xd5, 0x6c, 0xb8, 0x8a, 0xaa, 0xf8, - 0xa9, 0xaf, 0xbc, 0xea, 0x8f, 0x12, 0xc7, 0xac, 0xf, 0xd0, - 0xa4, 0xd7, 0xf4, 0xe9, 0x3e, 0xed, 0xe4, 0x27, 0xfe, 0x5, - 0x53, 0xae, 0xa3, 0x6a, 0xdd, 0x2e, 0x22, 0x3f, 0x47, 0x15, - 0xf9, 0xf3, 0x17, 0x8f, 0xf5, 0xd8, 0x47, 0xcb, 0x7f, 0x2f, - 0xe2, 0x6a, 0xf4, 0x3f, 0x15, 0x3c, 0x45, 0xf, 0x4b, 0xe7, - 0x3f, 0x8d, 0x6e, 0xb8, 0x8d, 0x7d, 0xaa, 0x7f, 0x89, 0xd1, - 0x1e, 0x23, 0xa0, 0xf7, 0x8b, 0x3e, 0xfd, 0x59, 0xe3, 0x6e, - 0x92, 0x29, 0xfa, 0x30, 0xa7, 0xee, 0x1e, 0xa2, 0xbe, 0xf, - 0xb7, 0xf8, 0xd9, 0xe2, 0x48, 0x31, 0xfe, 0x92, 0xcd, 0xf5, - 0x35, 0xa3, 0x6f, 0xfb, 0x40, 0xf8, 0x8a, 0x12, 0x33, 0x33, - 0x1c, 0x7a, 0x35, 0x6e, 0xb8, 0x8a, 0x8f, 0x58, 0x33, 0xa2, - 0x3c, 0x41, 0x85, 0x7b, 0xdc, 0xfb, 0x82, 0x8a, 0xf8, 0xd2, - 0xdb, 0xf6, 0x97, 0xd7, 0x62, 0x18, 0x62, 0xed, 0xff, 00, - 0x2, 0xad, 0x3b, 0x6f, 0xda, 0x93, 0x54, 0x4f, 0xbe, 0xae, - 0x7f, 0x1c, 0xd6, 0xeb, 0x3f, 0xc2, 0x3d, 0xee, 0xbe, 0x46, - 0xf1, 0xcf, 0x30, 0x72, 0xfb, 0x47, 0xd7, 0x14, 0x57, 0xcb, - 0x96, 0xff, 00, 0xb5, 0x64, 0xe0, 00, 0xf1, 0x37, 0xe4, - 0x2b, 0x52, 0xd7, 0xf6, 0xab, 0x84, 0xe3, 0xcd, 0x8b, 0xf3, - 0x15, 0xbc, 0x73, 0xbc, 0x13, 0xfb, 0x5f, 0x81, 0xd1, 0x1c, - 0xdb, 0x7, 0x2f, 0xb6, 0x7d, 0x1f, 0x45, 0x78, 0x34, 0x1f, - 0xb5, 0x2e, 0x9a, 0xff, 00, 0x7a, 0x35, 0x15, 0xab, 0x6b, - 0xfb, 0x4a, 0x68, 0x72, 0x91, 0xb8, 0x28, 0xff, 00, 0x81, - 0x62, 0xb7, 0x8e, 0x6d, 0x82, 0x97, 0xfc, 0xbc, 0x47, 0x44, - 0x73, 0xc, 0x34, 0xb6, 0x9a, 0x3d, 0x92, 0x8a, 0xf2, 0xdb, - 0x7f, 0xda, 0x7, 0xc3, 0xf3, 0x11, 0xf3, 0x81, 0xff, 00, - 0x3, 0x15, 0xa7, 0x7, 0xc6, 0xaf, 0xe, 0xcc, 0x33, 0xe7, - 0x81, 0xff, 00, 0x2, 0x15, 0xd1, 0x1c, 0x7e, 0x16, 0x5b, - 0x54, 0x46, 0xcb, 0x15, 0x46, 0x5b, 0x49, 0x1d, 0xfd, 0x15, - 0xc7, 0xc1, 0xf1, 0x53, 0xc3, 0xf3, 0x8e, 0x2e, 0xc0, 0xfa, - 0x91, 0x57, 0xe2, 0xf1, 0xee, 0x89, 0x30, 0x4, 0x5e, 0xa7, - 0xe7, 0x5b, 0xac, 0x45, 0x19, 0x6d, 0x35, 0xf7, 0x9a, 0xaa, - 0xb4, 0xde, 0xd2, 0x47, 0x43, 0x45, 0x64, 0xc7, 0xe2, 0xad, - 0x2a, 0x51, 0xf2, 0xde, 0xc5, 0xff, 00, 0x7d, 0x55, 0x95, - 0xd6, 0xac, 0x1f, 0xa5, 0xdc, 0x27, 0xfe, 0x6, 0x2b, 0x55, - 0x38, 0x3d, 0x99, 0x6a, 0x51, 0x7d, 0x4b, 0xb4, 0x54, 0x9, - 0x7d, 0x6f, 0x27, 0xdd, 0x9e, 0x33, 0xf4, 0x61, 0x52, 0x9, - 0xa3, 0x3d, 0x1d, 0x4f, 0xd0, 0xd5, 0x5d, 0xe, 0xe3, 0xe8, - 0xa4, 0x4, 0x1e, 0x87, 0x34, 0xb4, 0xc6, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0xc7, 0x89, - 0x24, 0xfb, 0xe8, 0xad, 0xfe, 0xf0, 0xcd, 0x3e, 0x8a, 00, - 0xcb, 0xbc, 0xf0, 0xbe, 0x8d, 0xa8, 0x9c, 0xdd, 0xe9, 0x16, - 0x37, 0x47, 0xd6, 0x6b, 0x64, 0x7f, 0xe6, 0x2b, 0x9a, 0xd5, - 0xfe, 0x5, 0xfc, 0x38, 0xd7, 0xc1, 0xfe, 0xd2, 0xf0, 0x17, - 0x86, 0xaf, 0xb3, 0xd7, 0xed, 0x1a, 0x4c, 0xf, 0xfc, 0xd2, - 0xbb, 0x9a, 0x28, 0x3, 0xc7, 0x6f, 0x7f, 0x63, 0x9f, 0x81, - 0x9a, 0x89, 0x26, 0x7f, 0x84, 0x9e, 0xe, 0x24, 0xf7, 0x4d, - 0x1a, 0x4, 0x3f, 0xf8, 0xea, 0x8a, 0xc5, 0xd4, 0x3f, 0x60, - 0xaf, 0xd9, 0xf7, 0x52, 0x42, 0x92, 0xfc, 0x29, 0xf0, 0xfc, - 0x60, 0xf7, 0xb7, 0x85, 0xa1, 0x3f, 0x9a, 0x30, 0xaf, 0x7c, - 0xa2, 0x80, 0x3e, 0x5a, 0xd4, 0xff, 00, 0xe0, 0x99, 0x3f, - 0xb3, 0x96, 0xa4, 0xf, 0xfc, 0x5b, 0xf1, 0x68, 0x4f, 0xf1, - 0x5b, 0x6a, 0x57, 0x49, 0xff, 00, 0xb5, 0x48, 0xae, 0x4b, - 0x52, 0xff, 00, 0x82, 0x47, 0x7e, 0xcf, 0xf7, 0xa0, 0xf9, - 0x16, 0x1a, 0xf5, 0x81, 0xf5, 0x83, 0x56, 0x76, 0xff, 00, - 0xd0, 0xc1, 0xaf, 0xb4, 0xa8, 0xa0, 0x56, 0x3e, 0x1, 0xd5, - 0x7f, 0xe0, 0x8c, 0x9f, 0x8, 0x6e, 0xb2, 0x6c, 0xbc, 0x4d, - 0xe2, 0xcb, 0x3, 0xe8, 0x67, 0x82, 0x50, 0x3f, 0x38, 0xbf, - 0xad, 0x72, 0x9a, 0x9f, 0xfc, 0x11, 0x33, 0xc2, 0x32, 0x3, - 0xfd, 0x9f, 0xf1, 0x2f, 0x5a, 0x80, 0xf6, 0x17, 0x36, 0x10, - 0xc8, 0x3f, 0x42, 0xb5, 0xfa, 0x53, 0x45, 0x1, 0x64, 0x7e, - 0x56, 0x6a, 0x1f, 0xf0, 0x44, 0x4b, 0x92, 0x49, 0xb1, 0xf8, - 0xb7, 0x10, 0x1d, 0x85, 0xc6, 0x84, 0x4f, 0xea, 0x27, 0xac, - 0x2b, 0xcf, 0xf8, 0x22, 0x57, 0x8b, 0xa3, 0x52, 0x6d, 0x7e, - 0x27, 0x68, 0xb3, 0x9e, 0xc2, 0x5d, 0x36, 0x68, 0xf3, 0xf9, - 0x3b, 0x57, 0xeb, 0x85, 0x14, 0xee, 0x16, 0x47, 0xe3, 0x4e, - 0xa7, 0xff, 00, 0x4, 0x60, 0xf8, 0xb5, 0x6e, 0x9, 0xb1, - 0xf1, 0x5f, 0x85, 0x2f, 0x71, 0xd0, 0x3c, 0xb7, 0x11, 0x67, - 0xff, 00, 0x21, 0x1a, 0xe4, 0xf5, 0xf, 0xf8, 0x24, 0x47, - 0xc7, 0xfb, 0x36, 0x22, 0xb, 0x6f, 0xe, 0x5f, 0x1, 0xde, - 0xd, 0x58, 0x2e, 0x7f, 0xef, 0xb4, 0x5a, 0xfd, 0xc2, 0xa2, - 0x8b, 0x8a, 0xc8, 0xfc, 0x14, 0xd5, 0x3f, 0xe0, 0x97, 0x9f, - 0xb4, 0x76, 0x9a, 0x7e, 0x4f, 0x3, 0x45, 0x7d, 0xef, 0x6b, - 0xaa, 0xda, 0x9f, 0xfd, 0xa, 0x41, 0x5c, 0xed, 0xe7, 0xfc, - 0x13, 0xbf, 0xf6, 0x8b, 0xb1, 0xcf, 0x99, 0xf0, 0xb7, 0x54, - 0x7c, 0x7f, 0xcf, 0x1b, 0x8b, 0x69, 0x3f, 0xf4, 0x19, 0x4d, - 0x7f, 0x41, 0xb4, 0x51, 0x70, 0xe5, 0x47, 0xf3, 0xa5, 0xa9, - 0xfe, 0xc5, 0x3f, 0x1d, 0xf4, 0x8c, 0xfd, 0xa7, 0xe1, 0x4f, - 0x89, 0xf8, 0xff, 00, 0x9e, 0x36, 0x2d, 0x2f, 0xfe, 0x81, - 0x9a, 0xe5, 0xf5, 0x1f, 0xd9, 0xd7, 0xe2, 0xa6, 0x90, 0x9, - 0xbd, 0xf8, 0x6d, 0xe2, 0xcb, 0x60, 0x3a, 0x99, 0x34, 0x5b, - 0x91, 0xff, 00, 0xb2, 0x57, 0xf4, 0xab, 0x45, 0x17, 0xe, - 0x53, 0xf9, 0x81, 0xd4, 0xfc, 0x11, 0xe2, 0x3d, 0x10, 0x13, - 0xa8, 0xe8, 0x1a, 0xa5, 0x80, 0x1d, 0x7e, 0xd5, 0x65, 0x24, - 0x78, 0xff, 00, 0xbe, 0x94, 0x56, 0x29, 0xf9, 0x4e, 0xf, - 0x7, 0xd0, 0xd7, 0xf5, 0x25, 0x3d, 0x9c, 0x17, 0x23, 0x13, - 0x41, 0x1c, 0xbf, 0xef, 0xa0, 0x3f, 0xce, 0xb2, 0xb5, 0xf, - 0x3, 0xf8, 0x73, 0x57, 0x4d, 0xb7, 0xde, 0x1f, 0xd2, 0xef, - 0x57, 0xd2, 0xe2, 0xca, 0x39, 0x7, 0xea, 0xb4, 0x5c, 0x39, - 0x4f, 0xe6, 0xa, 0x8a, 0xfe, 0x95, 0xf5, 0x2f, 0xd9, 0xe7, - 0xe1, 0x6e, 0xae, 0x85, 0x2f, 0x7e, 0x1c, 0xf8, 0x56, 0xe5, - 0x4f, 0x50, 0xfa, 0x35, 0xb9, 0xff, 00, 0xd9, 0x2b, 0x99, - 0xbc, 0xfd, 0x8b, 0xfe, 0x4, 0x5f, 0x82, 0x25, 0xf8, 0x49, - 0xe1, 0x1e, 0x7a, 0x98, 0xf4, 0x98, 0xa3, 0x3f, 0x9a, 0x81, - 0x45, 0xc5, 0xca, 0x7f, 0x3a, 0x30, 0xc0, 0xf7, 0x33, 0x47, - 0xc, 0x4a, 0x5e, 0x49, 0x18, 0x22, 0xa8, 0xea, 0x49, 0x38, - 0x2, 0xbf, 0xa7, 0xf, 0x86, 0x5e, 0x1f, 0x1e, 0x14, 0xf8, - 0x6f, 0xe1, 0x5d, 0x10, 0x74, 0xd3, 0xb4, 0xab, 0x5b, 0x4e, - 0x98, 0xfb, 0x91, 0x2a, 0xff, 00, 0x4a, 0xf2, 0x56, 0xfd, - 0x81, 0xbf, 0x67, 0xef, 0x3e, 0x29, 0xe3, 0xf8, 0x5d, 0xa3, - 0x5b, 0xcd, 0x13, 0x89, 0x12, 0x4b, 0x7f, 0x32, 0x32, 0xac, - 0xe, 0x41, 0x1b, 0x5c, 0x77, 0xaf, 0x7e, 00, 0x28, 00, - 0x70, 0x5, 0x5, 0x25, 0x61, 0x68, 0xa2, 0x8a, 0x43, 0xa, - 0x28, 0xa2, 0x80, 0x3e, 0x65, 0xfd, 0xa7, 0xae, 0xf3, 0x74, - 0xc9, 0x9e, 0x80, 0xa, 0xf9, 0x6f, 0x55, 0x6c, 0x40, 0xdf, - 0x4a, 0xfa, 0x2b, 0xf6, 0x96, 0xbb, 0xdf, 0xab, 0xca, 0xb9, - 0xe8, 0xd8, 0xaf, 0x9b, 0xf5, 0xa7, 0xdb, 0x6c, 0xe7, 0xfd, - 0x93, 0x5f, 0x97, 0x63, 0x5f, 0x3e, 0x61, 0x37, 0xe6, 0x7e, - 0x49, 0xc4, 0x93, 0xbd, 0x59, 0x1c, 0x17, 0xc1, 0x6b, 0x21, - 0xad, 0xfe, 0xd7, 0xdf, 0xc, 0x2d, 0x58, 0xf0, 0xba, 0xbf, - 0xda, 0x3f, 0x18, 0xe2, 0x79, 0x7, 0xfe, 0x81, 0x5f, 0xb0, - 0x35, 0xf9, 0x3d, 0xfb, 0x20, 0x69, 0x8b, 0xad, 0xfe, 0xd9, - 0xde, 0x16, 0x2c, 0x37, 0xb, 0x1b, 0x7b, 0xcb, 0xb1, 0xec, - 0x44, 0x25, 0x41, 0xff, 00, 0xc7, 0xeb, 0xf5, 0x86, 0xbf, - 0x44, 0xc1, 0xab, 0x52, 0x47, 0xda, 0x70, 0xdc, 0x39, 0x32, - 0xca, 0x41, 0x45, 0x14, 0x57, 0x69, 0xf4, 0xe5, 0x1d, 0x6b, - 0x45, 0xb1, 0xf1, 0x1e, 0x93, 0x75, 0xa6, 0x6a, 0x56, 0xb1, - 0xde, 0xd8, 0x5d, 0x46, 0x62, 0x9a, 0x9, 0x57, 0x2a, 0xea, - 0x7a, 0x83, 0x5f, 0x9e, 0x3f, 0x1f, 0x3f, 0x63, 0x7d, 0x73, - 0xe1, 0xc6, 0xa7, 0x73, 0xac, 0x78, 0x5c, 0x4b, 0xa8, 0xf8, - 0x71, 0x98, 0xba, 0x94, 0x3b, 0xa5, 0xb5, 0x1f, 0xdd, 0x71, - 0xdc, 0xf, 0xef, 0x7e, 0x78, 0xaf, 0xd1, 0xca, 0x42, 0x3, - 0x2, 0x8, 0xc8, 0x3d, 0x41, 0xae, 0x6a, 0xd4, 0x15, 0x65, - 0xd9, 0x9e, 0x2e, 0x67, 0x94, 0xd0, 0xcd, 0x29, 0xa8, 0xd5, - 0xd1, 0xad, 0x9a, 0xe9, 0xfe, 0x6b, 0xc8, 0xfc, 0x79, 0x4f, - 0xf8, 0x49, 0xb4, 0xae, 0x1e, 0x13, 0x22, 0x8e, 0x3a, 0x73, - 0x52, 0xf, 0x16, 0x6a, 0xb0, 0xff, 00, 0xac, 0xb4, 0x90, - 0x7f, 0xc0, 0x4d, 0x7e, 0xa5, 0x78, 0xa7, 0xe0, 0xb7, 0x84, - 0x3c, 0x5b, 0xbd, 0xaf, 0x34, 0x88, 0xa1, 0x99, 0x8e, 0x4c, - 0xd6, 0xa0, 0x46, 0xc4, 0xfa, 0x9c, 0x70, 0x7f, 0x11, 0x5e, - 0x7f, 0x7f, 0xfb, 0x1e, 0xf8, 0x4a, 0xe9, 0xcb, 0x45, 0x77, - 0x77, 0x8, 0x3d, 0x1, 0x54, 0x6c, 0x7e, 0x82, 0xbc, 0xa, - 0x99, 0x75, 0x5b, 0xfc, 0x29, 0xfe, 0x7, 0xc4, 0xcf, 0x84, - 0x9c, 0x3e, 0x1d, 0x7d, 0x1d, 0xbf, 0x3, 0xf3, 0xe5, 0x7c, - 0x79, 0x75, 0x1f, 0xdf, 0xb7, 0x71, 0xf5, 0x6, 0xa6, 0x4f, - 0x88, 0xc4, 0x70, 0xc8, 0xc3, 0xf0, 0xaf, 0xb9, 0x6e, 0xff, - 00, 0x62, 0x6d, 0x12, 0x40, 0x7c, 0x9d, 0x65, 0xd4, 0xff, - 00, 0xb7, 0x6c, 0xf, 0xfe, 0xcd, 0x58, 0x57, 0x9f, 0xb0, - 0xcc, 0x4e, 0xf, 0x93, 0xac, 0xdb, 0x39, 0xf4, 0x78, 0xa, - 0x8f, 0xeb, 0x5c, 0xaf, 0x2e, 0x9f, 0x5a, 0x5f, 0x8a, 0xff, - 00, 0x33, 0x96, 0x5c, 0x2f, 0x5e, 0x3b, 0x29, 0x7d, 0xeb, - 0xfc, 0xcf, 0x8f, 0xe3, 0xf8, 0x8f, 0x9, 0xeb, 0xb8, 0x55, - 0xa8, 0xfe, 0x22, 0x5b, 0x37, 0xf1, 0xd7, 0xd2, 0x97, 0xff, - 00, 0xb0, 0xbe, 0xa6, 0xa7, 0xf7, 0x33, 0x69, 0xd3, 0x8f, - 0x5d, 0xc5, 0x7f, 0x9a, 0xd7, 0x3f, 0x7f, 0xfb, 0xe, 0x78, - 0x89, 0xf, 0xee, 0xec, 0x6d, 0xa7, 0xf7, 0x8e, 0x64, 0x1f, - 0xcc, 0x8a, 0xe7, 0x96, 0x5f, 0xde, 0x93, 0x39, 0xa5, 0xc3, - 0xf8, 0xa8, 0xec, 0xe5, 0xf7, 0x5c, 0xf1, 0x48, 0xfc, 0x79, - 0x6a, 0xd8, 0xfd, 0xe0, 0xfc, 0x45, 0x59, 0x8f, 0xc6, 0x96, - 0x8d, 0xff, 00, 0x2d, 0x56, 0xbd, 0xe, 0xf3, 0xf6, 0x2d, - 0xf1, 0x44, 0x4c, 0x40, 0xd1, 0x25, 0x6c, 0x77, 0x49, 0x10, - 0xff, 00, 0x26, 0xac, 0x2b, 0xcf, 0xd9, 0x13, 0xc5, 0x96, - 0xec, 0x47, 0xf6, 0x16, 0xa3, 0xc7, 0xfc, 0xf3, 0x89, 0x9b, - 0xf9, 0x56, 0x2f, 0x3, 0x4f, 0xac, 0x24, 0xbe, 0x47, 0x3b, - 0xc9, 0xf1, 0x91, 0xfb, 0x4f, 0xe7, 0x16, 0x60, 0xa7, 0x8a, - 0xed, 0x1f, 0xfe, 0x5a, 0xa7, 0xe7, 0x56, 0x13, 0xc4, 0x56, - 0xcc, 0x3e, 0xfa, 0xfe, 0x75, 0x5e, 0xf7, 0xf6, 0x6c, 0xf1, - 0x2d, 0x96, 0xe2, 0xfa, 0x6e, 0xa7, 0x10, 0x1d, 0xda, 0x16, - 00, 0x7e, 0x95, 0x87, 0x71, 0xf0, 0x6f, 0x5a, 0xb5, 0x62, - 0x18, 0xdc, 0x21, 0x1d, 0x99, 0x6b, 0x9d, 0xe0, 0xa8, 0xf7, - 0x68, 0xe7, 0x78, 0xc, 0x64, 0x7e, 0xda, 0xf9, 0xa3, 0xa9, - 0x5d, 0x66, 0xdd, 0xbf, 0x88, 0x54, 0x83, 0x53, 0x80, 0xff, - 00, 0x10, 0xae, 0x16, 0x4f, 0x86, 0xfa, 0xec, 0x1f, 0x76, - 0x49, 0x4f, 0xd5, 0x6a, 0xbb, 0xf8, 0x43, 0xc4, 0x56, 0xfd, - 0x1d, 0x8f, 0xd4, 0x1a, 0xcf, 0xea, 0x34, 0x9e, 0xd3, 0x32, - 0xfa, 0xbe, 0x35, 0x7f, 0x2b, 0x3d, 0x18, 0x5f, 0x42, 0x7f, - 0x88, 0x53, 0x85, 0xd4, 0x47, 0xa3, 0xd7, 0x98, 0x9d, 0x2b, - 0xc4, 0xb0, 0xff, 00, 0xb, 0x37, 0xe3, 0x4d, 0xdf, 0xe2, - 0x38, 0x3a, 0xc0, 0xc7, 0xf1, 0xa9, 0xfe, 0xcf, 0x8b, 0xda, - 0x62, 0xf6, 0x78, 0xd5, 0xf6, 0x13, 0xf9, 0x9e, 0xa6, 0xb7, - 0x2b, 0xd9, 0xff, 00, 0x5a, 0x91, 0x6e, 0xd8, 0x74, 0x94, - 0xfe, 0x75, 0xe5, 0x3, 0x59, 0xd7, 0xa1, 0xfb, 0xd6, 0x92, - 0x1f, 0xc2, 0x9c, 0x3c, 0x59, 0xaa, 0xc5, 0xf7, 0xed, 0x24, - 0x1f, 0x81, 0xa8, 0x79, 0x6b, 0x7b, 0x34, 0x2e, 0x6c, 0x5c, - 0x77, 0xa4, 0xfe, 0xf3, 0xd6, 0xd3, 0x52, 0xb8, 0x4f, 0xbb, - 0x70, 0xe3, 0xe8, 0xd5, 0x62, 0x3d, 0x7f, 0x50, 0x8f, 0xee, - 0xdd, 0xc8, 0x3f, 0xe0, 0x55, 0xe4, 0xb, 0xe3, 0xbb, 0xb8, - 0xfe, 0xfd, 0xbb, 0x8f, 0xc0, 0xd4, 0xc9, 0xf1, 0xc, 0xaf, - 0xde, 0x8d, 0x87, 0xe7, 0x59, 0xbc, 0xba, 0xa2, 0xda, 0xc3, - 0xfa, 0xd6, 0x26, 0x1b, 0xc2, 0x48, 0xf6, 0x38, 0xbc, 0x63, - 0xac, 0x43, 0x8d, 0x97, 0xb2, 0xc, 0x7b, 0xd5, 0xb8, 0xbe, - 0x22, 0x6b, 0xb0, 0x9e, 0x2f, 0x58, 0xfd, 0x6b, 0xc6, 0x63, - 0xf8, 0x8d, 0x17, 0x7c, 0x8f, 0xc6, 0xac, 0xc7, 0xf1, 0xe, - 0xd8, 0xf5, 0x7a, 0x5f, 0x52, 0xc4, 0x47, 0x6f, 0xcc, 0xb5, - 0x99, 0xd6, 0x8e, 0xfc, 0xcb, 0xef, 0x3d, 0xb2, 0xf, 0x8b, - 0x7e, 0x21, 0x83, 0xa5, 0xd6, 0x7e, 0xb5, 0xa1, 0x6f, 0xf1, - 0xc3, 0xc4, 0x50, 0x11, 0x99, 0xb7, 0x62, 0xbc, 0x36, 0x3f, - 0x1e, 0xda, 0x37, 0xfc, 0xb5, 0x15, 0x66, 0x3f, 0x1a, 0xda, - 0x37, 0xfc, 0xb5, 0x5a, 0x7e, 0xcb, 0x17, 0x1d, 0x9b, 0xfb, - 0xd9, 0xb4, 0x73, 0xba, 0xb1, 0xfb, 0x6d, 0x1e, 0xf9, 0x6f, - 0xfb, 0x43, 0x78, 0x82, 0x10, 0x1, 0x73, 0xf9, 0xd6, 0xa5, - 0xaf, 0xed, 0x2f, 0xac, 0xc5, 0xf7, 0xb2, 0x6b, 0xe7, 0x74, - 0xf1, 0x6d, 0xa3, 0x7f, 0xcb, 0x54, 0xfc, 0xea, 0x74, 0xf1, - 0x25, 0xab, 0xff, 00, 0x1a, 0xfe, 0x75, 0x4a, 0xae, 0x3a, - 0x1b, 0x4e, 0x47, 0x4c, 0x78, 0x86, 0xaa, 0xff, 00, 0x97, - 0xa7, 0xd2, 0xd0, 0x7e, 0xd4, 0xfa, 0x82, 0xe3, 0x7a, 0xb6, - 0x3e, 0x95, 0xab, 0x6b, 0xfb, 0x55, 0xb8, 0xc7, 0x98, 0x9f, - 0x9a, 0xd7, 0xcb, 0x4b, 0xad, 0xdb, 0xb7, 0xf1, 0x8f, 0xce, - 0xa5, 0x5d, 0x56, 0x3, 0xfc, 0x43, 0xf3, 0xab, 0x58, 0xec, - 0x7c, 0x7e, 0xdb, 0x3a, 0xe3, 0xc4, 0x75, 0xff, 00, 0xe7, - 0xe2, 0x3e, 0xb4, 0xb6, 0xfd, 0xaa, 0xad, 0x9c, 0xfc, 0xe8, - 0xa3, 0xfe, 0x3, 0x5a, 0xb6, 0xdf, 0xb4, 0xfe, 0x94, 0xf8, - 0xde, 0x13, 0xf2, 0x22, 0xbe, 0x39, 0x17, 0xf0, 0xb7, 0xf1, - 0xa, 0x78, 0xbb, 0x88, 0xf4, 0x71, 0x5a, 0xac, 0xdb, 0x1f, - 0x1f, 0xb5, 0xf8, 0x1d, 0x91, 0xe2, 0x4a, 0xfd, 0xd3, 0x3e, - 0xd6, 0xb6, 0xfd, 0xa4, 0x34, 0x29, 0xb1, 0xb8, 0xa8, 0xfc, - 0x6b, 0x52, 0xf, 0x8f, 0x5e, 0x1d, 0x94, 0xc, 0xca, 0x6, - 0x7d, 0xd, 0x7c, 0x2e, 0x2e, 0x53, 0xb3, 0xfe, 0xb5, 0x22, - 0xdd, 0x63, 0xa4, 0xa7, 0xf0, 0x35, 0xaa, 0xcf, 0x31, 0xb1, - 0xde, 0xcf, 0xe4, 0x75, 0x47, 0x89, 0x6a, 0xf5, 0x8a, 0x3e, - 0xf5, 0xb7, 0xf8, 0xcb, 0xe1, 0xd9, 0xff, 00, 0xe5, 0xe3, - 0x15, 0xa1, 0x17, 0xc4, 0xed, 0x2, 0x5e, 0x97, 0x80, 0x7d, - 0x6b, 0xf3, 0xf9, 0x2f, 0x65, 0x5f, 0xbb, 0x3b, 0x8f, 0xa3, - 0x54, 0xc9, 0xab, 0xdd, 0xc7, 0xf7, 0x6e, 0xa4, 0x1f, 0xf0, - 0x23, 0x5b, 0xae, 0x20, 0xc4, 0x2d, 0xe0, 0x8e, 0x98, 0xf1, - 0x2c, 0xba, 0xc0, 0xfd, 0x7, 0x8b, 0xc7, 0x3a, 0x2c, 0xdf, - 0x76, 0xf5, 0x3f, 0x1a, 0xb4, 0x9e, 0x28, 0xd2, 0xe4, 0xfb, - 0xb7, 0xb1, 0x9f, 0xc6, 0xbf, 0x3d, 0xa3, 0xf1, 0x2e, 0xa7, - 0x1f, 0xdd, 0xbd, 0x97, 0xfe, 0xfa, 0x35, 0x6a, 0x2f, 0x1b, - 0x6b, 0x30, 0x91, 0xb6, 0xf6, 0x4e, 0x3d, 0x58, 0xd6, 0xcb, - 0x88, 0xa7, 0xd6, 0x9f, 0xe2, 0x74, 0x2e, 0x24, 0x87, 0x58, - 0x1f, 0xa1, 0x11, 0xea, 0xf6, 0x52, 0xfd, 0xdb, 0x98, 0xcf, - 0xfc, 0xa, 0xa6, 0x5b, 0xc8, 0x1b, 0xa4, 0xc8, 0x7e, 0x8c, - 0x2b, 0xf3, 0xfa, 0x1f, 0x89, 0x7a, 0xf4, 0x23, 0x8b, 0xc7, - 0xfc, 0xcd, 0x5e, 0x83, 0xe3, 0x7, 0x88, 0x20, 0xc6, 0x2e, - 0x58, 0xe3, 0xfd, 0xa3, 0x5b, 0xc7, 0x88, 0xa3, 0xd6, 0x9b, - 0x3a, 0x23, 0xc4, 0x58, 0x77, 0xba, 0x67, 0xde, 0xe2, 0x45, - 0x6e, 0x8c, 0xf, 0xd0, 0xd2, 0xe6, 0xbe, 0x18, 0x87, 0xe3, - 0xb7, 0x88, 0x22, 0xc0, 0xf3, 0xf, 0xfd, 0xf4, 0x6b, 0x4e, - 0xdf, 0xf6, 0x8a, 0xd7, 0x21, 0x23, 0x3b, 0x8e, 0x3f, 0xda, - 0x35, 0xba, 0xe2, 0x1a, 0x1d, 0x62, 0xce, 0x88, 0xe7, 0xf8, - 0x47, 0xbb, 0x3e, 0xd5, 0xa2, 0xbe, 0x3e, 0x83, 0xf6, 0x9c, - 0xd5, 0xd0, 0x8d, 0xe1, 0xb1, 0xfe, 0xf1, 0xad, 0x5b, 0x5f, - 0xda, 0x9a, 0xed, 0x71, 0xbd, 0xf, 0x15, 0xbc, 0x73, 0xec, - 0x23, 0xde, 0xeb, 0xe4, 0x74, 0x47, 0x3a, 0xc1, 0xcb, 0xed, - 0x1f, 0x56, 0x51, 0x5f, 0x33, 0xdb, 0x7e, 0xd5, 0x44, 0x91, - 0xe6, 0x20, 0x1f, 0x51, 0x5a, 0xd6, 0xff, 00, 0xb5, 0x35, - 0x91, 0x3, 0x7a, 0xa7, 0xe4, 0x6b, 0xa2, 0x39, 0xd6, 0xa, - 0x5f, 0x6c, 0xe8, 0x8e, 0x69, 0x84, 0x96, 0xd3, 0x47, 0xd0, - 0x54, 0x57, 0x88, 0xdb, 0x7e, 0xd3, 0x5a, 0x4c, 0xa4, 0x6f, - 0x11, 0x8f, 0xc4, 0xd6, 0x9c, 0x1f, 0xb4, 0x56, 0x83, 0x26, - 0x32, 0xf1, 0xe7, 0xd9, 0xeb, 0x78, 0xe6, 0xb8, 0x39, 0x6d, - 0x51, 0x1b, 0xac, 0x76, 0x1e, 0x5b, 0x4d, 0x1e, 0xb7, 0x45, - 0x79, 0xbd, 0xbf, 0xc7, 0x4f, 0xf, 0xcf, 0xff, 00, 0x2d, - 0x94, 0x7f, 0xc0, 0xeb, 0x46, 0x1f, 0x8b, 0xfe, 0x1e, 0x9b, - 0x3, 0xed, 0x40, 0x1f, 0xad, 0x74, 0x47, 0x1b, 0x86, 0x96, - 0xd5, 0x17, 0xde, 0x6c, 0xb1, 0x14, 0x5e, 0xd2, 0x47, 0x6f, - 0x45, 0x72, 0xf0, 0x7c, 0x49, 0xd0, 0x67, 0xe9, 0x7a, 0x83, - 0xea, 0x6a, 0xdc, 0x7e, 0x36, 0xd1, 0x65, 0xfb, 0xb7, 0xf1, - 0x9f, 0xc6, 0xb6, 0x55, 0xe9, 0x3d, 0xa4, 0xbe, 0xf2, 0xd5, - 0x58, 0x3d, 0xa4, 0x8d, 0xda, 0x2b, 0x32, 0x3f, 0x12, 0x69, - 0x92, 0xfd, 0xdb, 0xd8, 0xbf, 0xef, 0xaa, 0x9d, 0x35, 0x7b, - 0x29, 0x3e, 0xed, 0xd4, 0x47, 0xfe, 0x4, 0x2b, 0x45, 0x38, - 0xbd, 0x99, 0x7c, 0xd1, 0xee, 0x5c, 0xa2, 0xa1, 0x5b, 0xb8, - 0x1f, 0xee, 0xca, 0x87, 0xfe, 0x4, 0x2a, 0x41, 0x22, 0x37, - 0x46, 0x53, 0xf4, 0x35, 0x57, 0x45, 0xe, 0xa2, 0x93, 0x39, - 0xa5, 0xa6, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, - 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, - 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, - 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, - 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, - 0x1, 0x45, 0x14, 0x50, 0x1, 0x48, 0x78, 0x14, 0xb4, 0xc9, - 0x5b, 0x64, 0x4e, 0xde, 0x80, 0x9a, 00, 0xf8, 0xdb, 0xf6, - 0x85, 0xba, 0xf3, 0x75, 0xd9, 0x87, 0xfb, 0x67, 0xf9, 0xd7, - 0x80, 0x78, 0x89, 0xf6, 0x59, 0x4d, 0xfe, 0xe9, 0xaf, 0x68, - 0xf8, 0xe1, 0x73, 0xe6, 0xf8, 0x82, 0x50, 0x4f, 0xf1, 0x93, - 0xfa, 0xd7, 0x84, 0x78, 0xc6, 0xf0, 0x41, 0xa7, 0x4c, 0x72, - 0x7, 0xca, 0x6b, 0xf2, 0xb7, 0xfb, 0xcc, 0x6c, 0xdf, 0x99, - 0xf8, 0xb7, 0x10, 0xce, 0xf5, 0x66, 0x6f, 0x7f, 0xc1, 0x3d, - 0xac, 0x1b, 0x50, 0xfd, 0xab, 0x75, 0x8b, 0xbd, 0xb9, 0x8e, - 0xcb, 0xc3, 0xf7, 0x4, 0x9f, 0x46, 0x79, 0xa1, 0x51, 0xfa, - 0x66, 0xbf, 0x4f, 0x2b, 0xf3, 0x97, 0xfe, 0x9, 0x81, 0x68, - 0x6f, 0xfe, 0x2d, 0x7c, 0x4d, 0xd5, 0xa, 0x9d, 0xb6, 0xfa, - 0x75, 0xa5, 0xb0, 0x6c, 0x71, 0x99, 0x25, 0x91, 0x88, 0xcf, - 0xfd, 0xb3, 0x15, 0xfa, 0x35, 0x5f, 0xa5, 0xe1, 0xd5, 0xa9, - 0xa3, 0xf5, 0xc, 0x9e, 0x1e, 0xcf, 0x1, 0x4a, 0x3e, 0x48, - 0x28, 0xa2, 0x8a, 0xe9, 0x3d, 0x90, 0xa2, 0x8a, 0x28, 00, - 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, - 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa8, 0xe4, 0x82, 0x29, - 0x46, 0x1e, 0x34, 0x71, 0xe8, 0xca, 0xd, 0x49, 0x45, 00, - 0x50, 0x9f, 0x41, 0xd3, 0x2e, 0x46, 0x26, 0xd3, 0xad, 0x25, - 0x1e, 0x8f, 0x2, 0x9f, 0xe6, 0x2b, 0x3e, 0xe3, 0xc0, 0x1e, - 0x19, 0xbb, 0xff, 00, 0x5b, 0xa0, 0x69, 0xad, 0xff, 00, - 0x6e, 0xa8, 0x3f, 0x90, 0xad, 0xfa, 0x2a, 0x1c, 0x20, 0xf7, - 0x46, 0x6e, 0x9c, 0x25, 0xbc, 0x51, 0xc5, 0xdd, 0xfc, 0x19, - 0xf0, 0x55, 0xe9, 0xcc, 0x9e, 0x1e, 0xb4, 0x1f, 0xf5, 0xcc, - 0x14, 0xfe, 0x44, 0x56, 0x45, 0xdf, 0xec, 0xe9, 0xe0, 0x4b, - 0xbc, 0xff, 00, 0xc4, 0xa0, 0xc3, 0x9f, 0xf9, 0xe7, 0x33, - 0x71, 0xf9, 0x93, 0x5e, 0x97, 0x45, 0x62, 0xf0, 0xd4, 0x65, - 0xbc, 0x17, 0xdc, 0x63, 0x2c, 0x26, 0x1e, 0x5b, 0xd3, 0x5f, - 0x72, 0x3c, 0x66, 0xef, 0xf6, 0x51, 0xf0, 0x4d, 0xce, 0x76, - 0x8b, 0xc8, 0x73, 0xfd, 0xd9, 0x10, 0xff, 00, 0x35, 0xac, - 0x9b, 0xaf, 0xd8, 0xeb, 0xc2, 0x93, 0x3, 0xe5, 0xdf, 0x5d, - 0xc6, 0x7f, 0xda, 0x54, 0x6f, 0xe8, 0x2b, 0xdf, 0x28, 0xac, - 0x9e, 0xb, 0xe, 0xfe, 0xc2, 0x30, 0x79, 0x76, 0x11, 0xff, - 00, 0xcb, 0xb4, 0x7c, 0xd5, 0x79, 0xfb, 0x13, 0xe8, 0xd2, - 0xff, 00, 0xa9, 0xd6, 0x9d, 0x7d, 0x9e, 0xd8, 0x1f, 0xfd, - 0x9a, 0xb0, 0xaf, 0x7f, 0x61, 0xa4, 0x6c, 0xf9, 0x1a, 0xbd, - 0xb3, 0xff, 00, 0xd7, 0x48, 0x4a, 0xff, 00, 0x8d, 0x7d, - 0x65, 0x45, 0x66, 0xf2, 0xfc, 0x3b, 0xfb, 0x3f, 0x8b, 0x32, - 0x79, 0x56, 0x11, 0xfd, 0x9f, 0xc5, 0xff, 00, 0x99, 0xf1, - 0x6d, 0xef, 0xec, 0x2f, 0xa9, 0xe0, 0x98, 0xee, 0x34, 0xe9, - 0x7d, 0x83, 0x11, 0xfc, 0xd6, 0xb9, 0xeb, 0xdf, 0xd8, 0x7f, - 0xc4, 0x28, 0xe, 0xcb, 0xb, 0x79, 0x7f, 0xdc, 0x99, 0x3f, - 0xa9, 0x15, 0xf7, 0x9d, 0x15, 0x9b, 0xcb, 0x68, 0xf4, 0x6d, - 0x7c, 0xcc, 0x25, 0x93, 0x61, 0x9e, 0xd7, 0x5f, 0x33, 0xf3, - 0xb6, 0xf3, 0xf6, 0x2d, 0xf1, 0x4c, 0x4a, 0x48, 0xd0, 0xe4, - 0x3f, 0xf5, 0xce, 0x44, 0x6f, 0xe4, 0xd5, 0x87, 0x7d, 0xfb, - 0x22, 0x78, 0xae, 0xd7, 0x27, 0xfb, 0xb, 0x50, 0xff, 00, - 0x80, 0x46, 0xcd, 0xfc, 0xab, 0xf4, 0xba, 0x8a, 0x8f, 0xec, - 0xc8, 0xf4, 0x9b, 0xfc, 0xe, 0x79, 0x64, 0x54, 0x1e, 0xd2, - 0x7f, 0x87, 0xf9, 0x1f, 0x96, 0x37, 0xbf, 0xb3, 0x77, 0x88, - 0xec, 0x98, 0xac, 0x9a, 0x6e, 0xa5, 0xb, 0x7a, 0x34, 0x2c, - 0x3f, 0xa5, 0x62, 0xdd, 0x7c, 0x18, 0xd6, 0xad, 0x1b, 0x69, - 0x17, 0x31, 0x91, 0xd9, 0x97, 0x15, 0xfa, 0xd1, 0x51, 0xbd, - 0xbc, 0x52, 0xe7, 0x7c, 0x48, 0xf9, 0xfe, 0xf2, 0x83, 0x50, - 0xf2, 0xd9, 0x74, 0xa9, 0xf8, 0x7f, 0xc1, 0x39, 0x65, 0xc3, - 0xb4, 0xa5, 0xf6, 0x97, 0xfe, 0x3, 0xff, 00, 0x4, 0xfc, - 0x8c, 0x97, 0xe1, 0xa6, 0xb9, 0x7, 0xdd, 0x92, 0x5f, 0xc5, - 0x4d, 0x57, 0x7f, 0x6, 0xf8, 0x86, 0xe, 0x8e, 0xdc, 0x7a, - 0x82, 0x2b, 0xf5, 0xae, 0x7f, 0xb, 0xe8, 0xd7, 0x24, 0x99, - 0xb4, 0x9b, 0x19, 0x49, 0xea, 0x5e, 0xdd, 0xf, 0xf4, 0xac, - 0xd9, 0xbe, 0x19, 0xf8, 0x4e, 0xe0, 0x93, 0x27, 0x87, 0x74, - 0xd2, 0x4f, 0x53, 0xf6, 0x65, 0x1f, 0xd2, 0xb3, 0x79, 0x75, - 0x6e, 0x93, 0x5f, 0x71, 0xc7, 0x3e, 0x18, 0xa6, 0xff, 00, - 0x97, 0xee, 0x3f, 0x28, 0xe, 0x8f, 0xe2, 0x38, 0x3d, 0x4f, - 0xe2, 0x69, 0x9f, 0xf1, 0x51, 0xc1, 0xd6, 0x26, 0x6f, 0xc6, - 0xbf, 0x54, 0x67, 0xf8, 0x29, 0xe0, 0x8b, 0x90, 0x43, 0xf8, - 0x76, 0xd0, 0x67, 0xba, 0xee, 0x5f, 0xe4, 0x6b, 0x1e, 0xef, - 0xf6, 0x6e, 0xf0, 0xd, 0xd0, 0xe3, 0x48, 0x68, 0x4f, 0xac, - 0x73, 0xbf, 0xf5, 0x26, 0xb2, 0x79, 0x75, 0x7f, 0xee, 0xbf, - 0xeb, 0xd0, 0xe4, 0x9f, 0xa, 0x45, 0xed, 0x18, 0xfd, 0xef, - 0xfc, 0x8f, 0xcc, 0x7f, 0xed, 0x6d, 0x7a, 0x1f, 0xbd, 0x6c, - 0xe6, 0x94, 0x78, 0xa7, 0x56, 0x8b, 0xef, 0xda, 0xc9, 0xff, - 00, 0x7c, 0x9a, 0xfd, 0x1f, 0xbc, 0xfd, 0x93, 0xbc, 0xf, - 0x73, 0xfe, 0xad, 0x2f, 0x20, 0xff, 00, 0x76, 0x45, 0x3f, - 0xcd, 0x6b, 0x12, 0xf7, 0xf6, 0x35, 0xf0, 0xbc, 0xf9, 0xf2, - 0x35, 0xb, 0x98, 0xbf, 0xdf, 0x8d, 0x5b, 0xf9, 0x62, 0xb1, - 0x96, 0x5f, 0x5b, 0xf9, 0x13, 0x38, 0xe5, 0xc2, 0x8d, 0x6d, - 0x1f, 0xba, 0x47, 0xe7, 0xf0, 0xf1, 0xcd, 0xe4, 0x63, 0xe7, - 0xb7, 0x71, 0xf5, 0x6, 0xa6, 0x4f, 0x88, 0x4e, 0xbf, 0x7a, - 0x32, 0x3f, 0x3a, 0xfb, 0x82, 0xef, 0xf6, 0x24, 0xd3, 0x64, - 0x3f, 0xb9, 0xd6, 0x94, 0xf, 0xf6, 0xed, 0x7f, 0xfb, 0x2a, - 0xc5, 0xbd, 0xfd, 0x86, 0x4b, 0x67, 0xc9, 0xd5, 0xac, 0xe4, - 0xf4, 0xf3, 0x22, 0x65, 0xff, 00, 0x1a, 0xc1, 0xe0, 0x2a, - 0x75, 0xa3, 0xf8, 0xaf, 0xf3, 0x39, 0x65, 0xc3, 0x15, 0x56, - 0xd1, 0x97, 0xde, 0xbf, 0xcc, 0xf9, 0x6, 0x3f, 0x88, 0xa9, - 0xfc, 0x40, 0x8a, 0xb5, 0x1f, 0xc4, 0x4b, 0x73, 0xd5, 0xb1, - 0xf8, 0xd7, 0xd2, 0xb7, 0xbf, 0xb0, 0xae, 0xaa, 0x1, 0xf2, - 0xa7, 0xd3, 0x26, 0xff, 00, 0x81, 0x11, 0xfc, 0xd6, 0xb9, - 0xfb, 0xef, 0xd8, 0x77, 0xc4, 0x71, 0x3, 0xb2, 0xc2, 0xd6, - 0x6f, 0xfa, 0xe7, 0x32, 0xff, 00, 0x52, 0x2b, 0x9, 0x60, - 0x7b, 0xd2, 0x67, 0x3c, 0xb8, 0x7b, 0x13, 0x1d, 0x9c, 0xfe, - 0xeb, 0x9e, 0x27, 0x1f, 0x8f, 0xad, 0x5b, 0x1f, 0xbc, 0xc5, - 0x59, 0x4f, 0x1b, 0x5a, 0xb7, 0xfc, 0xb5, 0x5f, 0xc6, 0xbd, - 0xe, 0xff, 00, 0xf6, 0x31, 0xf1, 0x4d, 0xbe, 0x4f, 0xf6, - 0x1c, 0x8c, 0x3d, 0x63, 0x60, 0xdf, 0xc8, 0xd7, 0x3f, 0x7b, - 0xfb, 0x28, 0xf8, 0x9a, 0xd4, 0x9c, 0xe8, 0x5a, 0x8a, 0xfb, - 0xac, 0xe, 0x7f, 0xa5, 0x61, 0x2c, 0x15, 0x35, 0xbc, 0x1a, - 0xf9, 0x1c, 0xd2, 0xc9, 0xb1, 0x70, 0xfb, 0x6f, 0xe7, 0x16, - 0x62, 0x27, 0x8b, 0xed, 0x5b, 0xfe, 0x5a, 0xa7, 0xe7, 0x53, - 0xa7, 0x89, 0xad, 0x9f, 0xa4, 0x89, 0xf9, 0xd5, 0x7b, 0xcf, - 0xd9, 0xd7, 0xc4, 0x36, 0x79, 0x2f, 0xa7, 0xea, 0x11, 0x1, - 0xfd, 0xe8, 0x58, 0x7f, 0x4a, 0xc6, 0xb8, 0xf8, 0x3b, 0xac, - 0xdb, 0x67, 0xfe, 0x3e, 0x13, 0x1f, 0xde, 0x43, 0x58, 0x3c, - 0x1d, 0xf, 0x34, 0x60, 0xf2, 0xfc, 0x64, 0x7e, 0xda, 0xf9, - 0xa3, 0xa8, 0x5d, 0x7a, 0xdd, 0xbf, 0x8d, 0x7f, 0x3a, 0x95, - 0x75, 0x78, 0xf, 0xf1, 0xa, 0xe1, 0x24, 0xf8, 0x6f, 0xad, - 0xc3, 0x9d, 0xb2, 0xc9, 0xf8, 0xa1, 0xaa, 0xef, 0xe0, 0xfd, - 0x7e, 0xe, 0x92, 0x31, 0xfc, 0xd, 0x47, 0xd4, 0xa8, 0xbd, - 0xa4, 0x67, 0xf5, 0x5c, 0x6a, 0xeb, 0x16, 0x7a, 0x38, 0xd4, - 0xa1, 0x6f, 0xe2, 0x14, 0xe1, 0x7d, 0x9, 0xfe, 0x31, 0x5e, - 0x62, 0xda, 0x47, 0x88, 0xa0, 0xe8, 0x49, 0xfc, 0x4d, 0x34, - 0xff, 00, 0xc2, 0x43, 0x7, 0x58, 0xd9, 0xbf, 0x1a, 0x87, - 0x97, 0xc7, 0xa4, 0x89, 0xf6, 0x58, 0xe5, 0xf6, 0x13, 0xf9, - 0x9e, 0xa6, 0x2e, 0xa3, 0x3f, 0xc4, 0x29, 0xc2, 0xe1, 0x4f, - 0x47, 0xfd, 0x6b, 0xca, 0x7f, 0xb5, 0xb5, 0xd8, 0x7e, 0xf5, - 0xb4, 0x87, 0xf0, 0xa7, 0xf, 0x14, 0xea, 0xb1, 0x7d, 0xeb, - 0x69, 0x3f, 0xef, 0x9a, 0x97, 0x97, 0x3e, 0x92, 0x44, 0xff, - 00, 0xb5, 0xc7, 0x7a, 0x47, 0xab, 0x8b, 0x93, 0xda, 0x53, - 0xf9, 0xd4, 0x89, 0x7d, 0x32, 0xfd, 0xd9, 0xd8, 0x7f, 0xc0, - 0xab, 0xc9, 0xd7, 0xc7, 0x17, 0x91, 0xfd, 0xfb, 0x77, 0x1f, - 0x81, 0xa9, 0x93, 0xe2, 0x13, 0xaf, 0xde, 0x8d, 0x85, 0x64, - 0xf2, 0xd9, 0xf4, 0xb0, 0x7b, 0x7c, 0x44, 0x77, 0xa7, 0x23, - 0xd6, 0x53, 0x58, 0xbd, 0x4f, 0xbb, 0x75, 0x28, 0xff, 00, - 0x81, 0x1a, 0xb1, 0x1f, 0x89, 0xb5, 0x38, 0xbe, 0xed, 0xe4, - 0xa3, 0xfe, 0x4, 0x6b, 0xc9, 0xa3, 0xf8, 0x88, 0x9d, 0xc3, - 0xf, 0xc6, 0xac, 0xc7, 0xf1, 0xa, 0x3, 0xfc, 0x44, 0x54, - 0x7f, 0x67, 0xd6, 0x5b, 0x21, 0xac, 0xc2, 0xac, 0x77, 0x52, - 0x5f, 0x79, 0xeb, 0x71, 0xf8, 0xe3, 0x5a, 0x8b, 0xa5, 0xf4, - 0x9f, 0xf7, 0xd5, 0x5c, 0x83, 0xe2, 0x6e, 0xbd, 0x6, 0x31, - 0x74, 0xc7, 0xea, 0x4d, 0x79, 0x14, 0x7e, 0x3e, 0xb6, 0x6e, - 0xaf, 0x8a, 0xb3, 0x1f, 0x8d, 0xad, 0x5b, 0xfe, 0x5a, 0x8a, - 0x5f, 0x55, 0xc4, 0x47, 0x6b, 0xfd, 0xec, 0xd5, 0x66, 0xf3, - 0x8f, 0xdb, 0x92, 0x3d, 0x8e, 0x1f, 0x8c, 0x3e, 0x20, 0x8b, - 0x1f, 0xe9, 0x4, 0xe3, 0xdc, 0xd6, 0x8d, 0xbf, 0xc7, 0x7d, - 0x7a, 0x1c, 0x7c, 0xe4, 0xff, 00, 0xc0, 0x8d, 0x78, 0x9a, - 0x78, 0xbe, 0xd5, 0xbf, 0xe5, 0xaa, 0xfe, 0x75, 0x3a, 0x78, - 0x9e, 0xd9, 0xff, 00, 0xe5, 0xa2, 0xfe, 0x74, 0x72, 0xe2, - 0xe1, 0xb3, 0x7f, 0x7b, 0x3a, 0x23, 0x9e, 0x54, 0x5f, 0xf2, - 0xf5, 0x9e, 0xef, 0x6f, 0xfb, 0x45, 0x6b, 0x71, 0x63, 0x73, - 0x31, 0xff, 00, 0x81, 0x1a, 0xd6, 0xb6, 0xfd, 0xa6, 0xf5, - 0x48, 0xb1, 0xb8, 0x39, 0xff, 00, 0x81, 0x57, 0xcf, 0x29, - 0xaf, 0xdb, 0xb7, 0xf1, 0xaf, 0xe7, 0x52, 0xae, 0xb1, 0x3, - 0x7f, 0x10, 0xfc, 0xea, 0xd6, 0x23, 0x1b, 0xd, 0xa6, 0xce, - 0xb8, 0x71, 0x5, 0x65, 0xb5, 0x53, 0xe9, 0x4b, 0x6f, 0xda, - 0x92, 0xec, 0x7f, 0xac, 0xdd, 0x5a, 0xd6, 0xdf, 0xb5, 0x42, - 0xf1, 0xbd, 0x41, 0xfa, 0x8a, 0xf9, 0x65, 0x75, 0x38, 0x4f, - 0xf1, 0xf, 0xce, 0x9e, 0x2f, 0xa1, 0x6f, 0xe2, 0x15, 0xa2, - 0xcc, 0x71, 0xf1, 0xfb, 0x6c, 0xeb, 0x8f, 0x11, 0x62, 0x3f, - 0x9d, 0x1f, 0x5b, 0xdb, 0x7e, 0xd4, 0x56, 0x6f, 0x8f, 0x30, - 0x20, 0xfc, 0x2b, 0x56, 0xf, 0xda, 0x63, 0x49, 0x93, 0x19, - 0xf2, 0xfe, 0xb9, 0x22, 0xbe, 0x35, 0x17, 0x31, 0x1f, 0xe2, - 0x14, 0xf1, 0x3a, 0x1e, 0x8f, 0xfa, 0xd6, 0xcb, 0x38, 0xc7, - 0x47, 0xed, 0x7e, 0x7, 0x5c, 0x78, 0x8f, 0x11, 0xe4, 0xcf, - 0xb6, 0xad, 0xff, 00, 0x68, 0x6d, 0xe, 0x5c, 0x6e, 0x78, - 0xc7, 0xfc, 0xa, 0xb4, 0xa0, 0xf8, 0xe7, 0xe1, 0xf9, 0xb1, - 0x89, 0x57, 0xfe, 0xfa, 0xaf, 0x85, 0x44, 0xe3, 0xb3, 0xfe, - 0xb4, 0xf5, 0xba, 0x91, 0x7a, 0x4a, 0xc3, 0xe8, 0xd5, 0xb2, - 0xcf, 0x71, 0x8b, 0x74, 0x8e, 0xa8, 0xf1, 0x25, 0x5e, 0xb1, - 0x3e, 0xf8, 0xb7, 0xf8, 0xb9, 0xa0, 0x4c, 0x1, 0xfb, 0x48, - 0x1f, 0x8d, 0x5d, 0x8b, 0xe2, 0x4e, 0x83, 0x37, 0xdd, 0xbc, - 0x5a, 0xfc, 0xff, 00, 0x5d, 0x46, 0xe5, 0x7a, 0x5c, 0x3f, - 0xfd, 0xf5, 0x53, 0xc7, 0xae, 0xea, 0x11, 0xfd, 0xdb, 0xb9, - 0x7, 0xd1, 0xab, 0x75, 0xc4, 0x35, 0xd6, 0xf0, 0x47, 0x44, - 0x78, 0x91, 0xf5, 0x81, 0xfa, 0xd, 0x1f, 0x8d, 0x74, 0x69, - 0x7a, 0x5f, 0x46, 0x3e, 0xa6, 0xac, 0xc7, 0xe2, 0x5d, 0x32, - 0x5f, 0xbb, 0x7b, 0x11, 0xfc, 0x6b, 0xf3, 0xe5, 0x3c, 0x5b, - 0xab, 0x47, 0x8c, 0x5e, 0xcb, 0xff, 00, 0x7d, 0x55, 0xb8, - 0x7c, 0x7f, 0xad, 0xc3, 0xf7, 0x6f, 0x5f, 0xf1, 0x35, 0xb2, - 0xe2, 0x29, 0x7d, 0xaa, 0x7f, 0x89, 0xd1, 0x1e, 0x24, 0xa6, - 0xf7, 0x89, 0xfa, 0x6, 0x9a, 0xb5, 0x9b, 0xfd, 0xdb, 0xa8, - 0x8f, 0xfc, 0x8, 0x54, 0xa9, 0x79, 0x3, 0xfd, 0xd9, 0x91, - 0xbe, 0x8c, 0x2b, 0xe0, 0x48, 0x7e, 0x29, 0xeb, 0xf1, 0x1f, - 0xf8, 0xfb, 0x73, 0xf8, 0xd6, 0x84, 0x1f, 0x1a, 0x7c, 0x41, - 0x7, 0xfc, 0xb7, 0x27, 0xf1, 0xad, 0xe3, 0xc4, 0x50, 0xeb, - 0x4d, 0xfe, 0x7, 0x44, 0x78, 0x87, 0xe, 0xf7, 0x4c, 0xfb, - 0xbc, 0x3a, 0x9e, 0x8c, 0xf, 0xe3, 0x4b, 0x90, 0x7b, 0xd7, - 0xc3, 0xf6, 0xff, 00, 0x1f, 0x35, 0xc8, 0xb1, 0xba, 0x47, - 0x6f, 0xf8, 0x15, 0x6a, 0x5b, 0xfe, 0xd2, 0x1a, 0xc4, 0x3d, - 0x4b, 0xff, 00, 0xdf, 0x55, 0xd1, 0x1e, 0x21, 0xc3, 0xbd, - 0xe2, 0xd1, 0xd1, 0x1c, 0xfb, 0x8, 0xfa, 0x9f, 0x66, 0xd1, - 0x5f, 0x22, 0xdb, 0x7e, 0xd3, 0xba, 0x8a, 0xe3, 0xcc, 0x32, - 0x1f, 0x6c, 0xd6, 0xad, 0xbf, 0xed, 0x4d, 0x38, 0xc6, 0xe0, - 0xdf, 0x8e, 0x2b, 0x68, 0xe7, 0xd8, 0x37, 0xbb, 0x6b, 0xe4, - 0x6f, 0x1c, 0xe7, 0x7, 0x2f, 0xb4, 0x7d, 0x4b, 0x45, 0x7c, - 0xdf, 0x6b, 0xfb, 0x52, 0x46, 0x71, 0xe6, 0x7e, 0xa2, 0xb5, - 0x2d, 0xff, 00, 0x69, 0xfb, 0x17, 0xc0, 0x65, 0x5f, 0xa9, - 0xad, 0xe3, 0x9d, 0x60, 0xa5, 0xf6, 0xce, 0x88, 0xe6, 0x78, - 0x59, 0x6d, 0x33, 0xdf, 0x28, 0xaf, 0x18, 0xb7, 0xfd, 0xa4, - 0x74, 0x87, 0xc6, 0xf3, 0x18, 0xff, 00, 0x81, 0x56, 0x9d, - 0xbf, 0xed, 0x3, 0xa1, 0xcd, 0x8e, 0x57, 0xfe, 0xfb, 0xae, - 0x88, 0xe6, 0x78, 0x39, 0x6d, 0x51, 0x1b, 0xac, 0x6e, 0x1e, - 0x5b, 0x4d, 0x1e, 0xa9, 0x45, 0x79, 0xec, 0x1f, 0x1a, 0xf4, - 0x9, 0x40, 0xcc, 0xa0, 0x7f, 0xc0, 0x85, 0x5f, 0x83, 0xe2, - 0xc6, 0x83, 0x39, 0xe2, 0xe3, 0x1f, 0x88, 0xae, 0x85, 0x8c, - 0xc3, 0xcb, 0x69, 0xa3, 0x55, 0x88, 0xa4, 0xf6, 0x92, 0x3b, - 0x3a, 0x2b, 0x9a, 0x8f, 0xe2, 0x16, 0x87, 0x27, 0xfc, 0xbe, - 0x28, 0xfc, 0x6a, 0xdc, 0x5e, 0x32, 0xd2, 0x26, 0x3f, 0x2d, - 0xec, 0x7f, 0x9d, 0x6c, 0xab, 0x52, 0x7b, 0x49, 0x1a, 0x2a, - 0x90, 0x7d, 0x4d, 0xaa, 0x2b, 0x39, 0x3c, 0x41, 0xa7, 0x3f, - 0x4b, 0xc8, 0xbf, 0xef, 0xaa, 0x9d, 0x35, 0x4b, 0x49, 0x3e, - 0xed, 0xcc, 0x67, 0xfe, 0x4, 0x2a, 0xd4, 0xe2, 0xf6, 0x65, - 0x73, 0x27, 0xd4, 0xb5, 0x55, 0xb5, 0x27, 0xf2, 0xac, 0x2e, - 0x1b, 0xd1, 0x9, 0xfd, 0x2a, 0x41, 0x73, 0xb, 0x74, 0x95, - 0xf, 0xfc, 0x8, 0x56, 0x4f, 0x8b, 0xb5, 0x58, 0x34, 0xef, - 0xf, 0x5e, 0xcd, 0x24, 0xaa, 0x2, 0xc6, 0x7f, 0x88, 0x52, - 0x9c, 0x92, 0x8b, 0x62, 0x94, 0x92, 0x8b, 0x67, 0xc3, 0xff, - 00, 0x18, 0xef, 0x47, 0xf6, 0xe4, 0xc4, 0x9f, 0xe2, 0x3f, - 0xce, 0xbe, 0x6a, 0xf8, 0x9d, 0xe2, 0x25, 0x8a, 0xdd, 0xe2, - 0x57, 0xc1, 0xc1, 0xef, 0x5e, 0xa7, 0xf1, 0xaf, 0xc6, 0xf0, - 0x7f, 0x69, 0x5c, 0x4a, 0xae, 0x32, 0x58, 0xe0, 0x66, 0xbe, - 0x67, 0xbe, 0x87, 0x53, 0xf8, 0x83, 0xe2, 0x5b, 0x1d, 0x13, - 0x4b, 0x89, 0xee, 0x75, 0x2d, 0x4a, 0xe1, 0x6d, 0xad, 0xe2, - 0x5e, 0x4b, 0x33, 0x1c, 0xa, 0xf8, 0x3c, 0xbf, 0xc, 0xe5, - 0x39, 0x56, 0x7d, 0x5b, 0xb1, 0xf8, 0x9d, 0x78, 0x4b, 0x33, - 0xcc, 0xb9, 0x21, 0xf0, 0xa6, 0x7e, 0x80, 0x7f, 0xc1, 0x2d, - 0xbc, 0x19, 0x36, 0x97, 0xf0, 0xa3, 0xc5, 0x3e, 0x28, 0xb8, - 0x8c, 0xab, 0x6b, 0xda, 0xb6, 0xd8, 0x58, 0xff, 00, 0x14, - 0x30, 0x26, 0xc0, 0x7f, 0xef, 0xb6, 0x93, 0xf2, 0xaf, 0xb5, - 0x6b, 0x88, 0xf8, 0x27, 0xf0, 0xda, 0xdf, 0xe1, 0xf, 0xc2, - 0x9f, 0xc, 0xf8, 0x42, 0xdc, 0xab, 0x8d, 0x2e, 0xcd, 0x22, - 0x92, 0x45, 0x18, 0xf3, 0x25, 0x3f, 0x34, 0x8d, 0xf8, 0xb1, - 0x63, 0x5d, 0xbd, 0x7d, 0xec, 0x23, 0xcb, 0x14, 0x8f, 0xda, - 0x68, 0xc3, 0xd9, 0x53, 0x8c, 0x3b, 0x20, 0xa2, 0x8a, 0x2a, - 0xcd, 0x82, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0xa3, 0x92, - 0xde, 0x29, 0x86, 0x24, 0x89, 0x1c, 0x7f, 0xb4, 0xa0, 0xd4, - 0x94, 0x51, 0xb8, 0x19, 0x97, 0x3e, 0x19, 0xd1, 0xef, 0x41, - 0x17, 0x1a, 0x55, 0x94, 0xc0, 0xf6, 0x92, 0xdd, 0xf, 0xf3, - 0x15, 0x97, 0x75, 0xf0, 0xcb, 0xc2, 0x77, 0x83, 0x12, 0xf8, - 0x7b, 0x4f, 0x3f, 0xee, 0xc0, 0xab, 0xfc, 0xb1, 0x5d, 0x3d, - 0x15, 0x9b, 0xa7, 0x9, 0x6f, 0x14, 0x64, 0xe9, 0x53, 0x97, - 0xc5, 0x14, 0xfe, 0x47, 0x5, 0x75, 0xf0, 0x2b, 0xc0, 0xd7, - 0x9f, 0x7f, 0x40, 0x85, 0x7f, 0xdc, 0x91, 0xd7, 0xf9, 0x35, - 0x64, 0xdc, 0x7e, 0xcd, 0x1e, 0x2, 0xb8, 0x24, 0xff, 00, - 0x65, 0xcb, 0x1e, 0x7b, 0x24, 0xed, 0xfd, 0x73, 0x5e, 0xa7, - 0x45, 0x62, 0xf0, 0xb4, 0x1e, 0xf0, 0x5f, 0x71, 0x83, 0xc1, - 0xe1, 0xa5, 0xbd, 0x35, 0xf7, 0x23, 0xc5, 0xae, 0x7f, 0x64, - 0xbf, 0x3, 0x5c, 0x64, 0xa8, 0xbe, 0x8b, 0x3d, 0x2, 0xca, - 0xa4, 0xf, 0xcd, 0x6b, 0x16, 0xeb, 0xf6, 0x32, 0xf0, 0xb4, - 0xa1, 0xbc, 0xad, 0x46, 0xee, 0x33, 0xdb, 0x72, 0x29, 0xff, - 00, 0xa, 0xfa, 0xe, 0x8a, 0xcd, 0xe0, 0x70, 0xef, 0xec, - 0x19, 0x3c, 0xbb, 0x8, 0xff, 00, 0xe5, 0xda, 0x3e, 0x61, - 0xbb, 0xfd, 0x88, 0xb4, 0xe7, 0x53, 0xe4, 0xeb, 0x99, 0x3d, - 0x83, 0xdb, 0x60, 0x7f, 0xe8, 0x55, 0xcf, 0xdf, 0x7e, 0xc3, - 0x77, 0x27, 0xfd, 0x46, 0xa5, 0x63, 0x2f, 0xfb, 0xe1, 0x97, - 0xff, 00, 0x65, 0x35, 0xf5, 0xf5, 0x15, 0x93, 0xcb, 0xb0, - 0xef, 0x64, 0xd7, 0xcd, 0x98, 0xbc, 0xab, 0x8, 0xfe, 0xcd, - 0xbe, 0x6c, 0xf8, 0x92, 0xf7, 0xf6, 0x18, 0xd6, 0xb9, 0xf2, - 0xdb, 0x4e, 0x97, 0xfd, 0xd9, 0x48, 0xfe, 0x6a, 0x2b, 0x6, - 0xfb, 0xf6, 0x1e, 0xf1, 0x2c, 0x64, 0xec, 0xd3, 0xad, 0xa6, - 0xf7, 0x4b, 0x84, 0xfe, 0xa4, 0x57, 0xdf, 0x34, 0x54, 0x3c, - 0xb2, 0x8f, 0x46, 0xfe, 0xf3, 0x7, 0x93, 0x61, 0x9f, 0x57, - 0xf7, 0xff, 00, 0xc0, 0x3f, 0x39, 0xaf, 0x7f, 0x63, 0x1f, - 0x15, 0xdb, 0x92, 0x3f, 0xb0, 0x65, 0x6f, 0xfa, 0xe7, 0x22, - 0xb7, 0xf2, 0x26, 0xb0, 0x2f, 0x7f, 0x65, 0xf, 0x14, 0x5a, - 0x12, 0xe, 0x83, 0xa8, 0xae, 0x3f, 0xbb, 0x13, 0x37, 0xf2, - 0x15, 0xfa, 0x71, 0x45, 0x43, 0xcb, 0x23, 0xd2, 0x6c, 0xc2, - 0x59, 0x15, 0x7, 0xb4, 0x9f, 0xe1, 0xfe, 0x47, 0xe5, 0x3d, - 0xef, 0xec, 0xfd, 0xad, 0xd9, 0x13, 0xe6, 0x59, 0x5e, 0xc3, - 0xfe, 0xfa, 0x11, 0xfc, 0xc5, 0x64, 0x4f, 0xf0, 0x8f, 0x56, - 0xb7, 0x24, 0x3, 0x32, 0xff, 00, 0xbc, 0x2b, 0xf5, 0xb8, - 0xa8, 0x3d, 0x40, 0x35, 0xc, 0x96, 0x16, 0xd3, 0xc, 0x49, - 0x6f, 0x14, 0x83, 0xfd, 0xa4, 0x6, 0xb3, 0x79, 0x6c, 0xfa, - 0x54, 0xfc, 0x3f, 0xe0, 0x9c, 0x92, 0xe1, 0xda, 0x72, 0xfb, - 0x4b, 0xff, 00, 0x1, 0xff, 00, 0x82, 0x7e, 0x45, 0xc9, - 0xf0, 0xeb, 0x5a, 0x83, 0xa4, 0x8f, 0xf8, 0xa9, 0xaa, 0xcf, - 0xe1, 0x1d, 0x7e, 0x1e, 0x8f, 0xf9, 0xe4, 0x57, 0xeb, 0x7c, - 0xfe, 0x15, 0xd1, 0x6e, 0xbf, 0xd7, 0x69, 0x16, 0x32, 0xff, - 00, 0xbf, 0x6c, 0x87, 0xfa, 0x56, 0x65, 0xcf, 0xc3, 0xf, - 0x9, 0x5d, 0xff, 00, 0xad, 0xf0, 0xee, 0x9c, 0x7d, 0xc5, - 0xba, 0xaf, 0xf2, 0xa8, 0x79, 0x75, 0x6e, 0x93, 0x4f, 0xe4, - 0x72, 0x4f, 0x86, 0x29, 0xbd, 0xb9, 0x7e, 0xe3, 0xf2, 0x7c, - 0xe9, 0x3e, 0x22, 0x83, 0xa7, 0x3f, 0xf0, 0x23, 0x4d, 0xff, - 00, 0x8a, 0x8a, 0x1f, 0xf9, 0x66, 0x5b, 0x1e, 0xf5, 0xfa, - 0x9b, 0x75, 0xf0, 0x2b, 0xc0, 0xb7, 0x79, 0xdf, 0xe1, 0xeb, - 0x75, 0xcf, 0xfc, 0xf3, 0x77, 0x5f, 0xe4, 0x6b, 0x26, 0xe7, - 0xf6, 0x67, 0xf0, 0x5, 0xc0, 0x23, 0xfb, 0x2a, 0x48, 0xb3, - 0xdd, 0x27, 0x6f, 0xeb, 0x9a, 0xc9, 0xe5, 0xf5, 0xff, 00, - 0xba, 0xff, 00, 0xaf, 0x43, 0x8e, 0x7c, 0x29, 0x17, 0xf6, - 0x63, 0xf7, 0xbf, 0xf2, 0x3f, 0x32, 0x3f, 0xb5, 0xb5, 0xc8, - 0x4f, 0xcd, 0x6e, 0xe7, 0xf0, 0xcd, 0x28, 0xf1, 0x46, 0xab, - 0x17, 0xdf, 0xb7, 0x7f, 0xfb, 0xe6, 0xbf, 0x48, 0x2e, 0xff, - 00, 0x64, 0xbf, 0x2, 0xdc, 0x8f, 0x91, 0x2f, 0x61, 0xff, - 00, 0x76, 0x55, 0x3f, 0xcd, 0x6b, 0x1e, 0xf3, 0xf6, 0x33, - 0xf0, 0xa4, 0xc3, 0xf7, 0x1a, 0x85, 0xe4, 0x47, 0xfd, 0xb5, - 0x56, 0xff, 00, 0xa, 0xc9, 0xe0, 0x2b, 0x7f, 0x22, 0x67, - 0x24, 0xb8, 0x51, 0xad, 0xa1, 0xf7, 0x48, 0xfc, 0xfa, 0x5f, - 0x1c, 0x5d, 0xc7, 0xf7, 0xe1, 0x61, 0xff, 00, 0x1, 0x35, - 0x32, 0x7c, 0x41, 0x71, 0xf7, 0x90, 0x8f, 0xce, 0xbe, 0xe2, - 0xbd, 0xfd, 0x88, 0x74, 0xc9, 0x3f, 0xe3, 0xdf, 0x5b, 0xc0, - 0xff, 00, 0xa6, 0x96, 0xdf, 0xe0, 0xd5, 0x81, 0x79, 0xfb, - 0xc, 0x4e, 0xcc, 0x7c, 0x9d, 0x52, 0xc5, 0xd7, 0xb6, 0xf5, - 0x65, 0x3f, 0xfa, 0x9, 0xac, 0x1e, 0x2, 0xa7, 0x5a, 0x5f, - 0x91, 0xcb, 0x2e, 0x17, 0xab, 0x1d, 0xa3, 0x2f, 0xbd, 0x7f, - 0x99, 0xf2, 0x24, 0x7f, 0x11, 0x13, 0xbe, 0x6a, 0xd4, 0x7f, - 0x10, 0xa0, 0x38, 0xcb, 0x11, 0x5f, 0x4a, 0x5d, 0xfe, 0xc2, - 0xfa, 0xcf, 0x3e, 0x5b, 0xe9, 0xb2, 0xe, 0xd8, 0x90, 0x8f, - 0xe6, 0xb5, 0x83, 0x79, 0xfb, 0xe, 0xf8, 0x99, 0x41, 0x29, - 0xa7, 0xdb, 0x49, 0xfe, 0xe5, 0xc2, 0xf, 0xeb, 0x58, 0x3c, - 0xf, 0x7a, 0x4c, 0xe6, 0x97, 0xe, 0xe2, 0x23, 0xb7, 0x3f, - 0xdd, 0x73, 0xc4, 0xa3, 0xf1, 0xed, 0xb3, 0x7f, 0xcb, 0x4f, - 0xd2, 0xac, 0xc7, 0xe3, 0x7b, 0x66, 0xff, 00, 0x96, 0xa2, - 0xbd, 0x16, 0xf7, 0xf6, 0x2e, 0xf1, 0x64, 0xa, 0xcd, 0xfd, - 0x83, 0x23, 0x1, 0xff, 00, 0x3c, 0xe5, 0x56, 0xfd, 0x3, - 0x57, 0x3f, 0x7d, 0xfb, 0x28, 0x78, 0xa6, 0xd0, 0x16, 0x7d, - 0x3, 0x51, 0x50, 0x3b, 0xac, 0x4c, 0x7f, 0xa5, 0x60, 0xf0, - 0x54, 0xd6, 0xf0, 0x6b, 0xe4, 0x73, 0xcb, 0x25, 0xc5, 0xc3, - 0xed, 0xc9, 0x7a, 0xa6, 0x61, 0x27, 0x8c, 0x2d, 0x5b, 0xfe, - 0x5a, 0xad, 0x58, 0x4f, 0x14, 0x5b, 0x3f, 0xfc, 0xb4, 0x5f, - 0xce, 0xaa, 0x5f, 0x7e, 0xcf, 0xda, 0xe5, 0x8e, 0x7c, 0xdb, - 0x1b, 0xf8, 0xf, 0xfb, 0x71, 0xb0, 0xfe, 0x62, 0xb2, 0x27, - 0xf8, 0x47, 0xaa, 0xdb, 0xe7, 0x99, 0xd7, 0xea, 0xb5, 0x83, - 0xc2, 0x50, 0xf4, 0x39, 0xde, 0x5f, 0x8b, 0x8f, 0xfc, 0xbc, - 0x5f, 0x34, 0x75, 0x2b, 0xaf, 0xdb, 0xb7, 0xf1, 0x8f, 0xce, - 0xa5, 0x5d, 0x62, 0x16, 0xee, 0x2b, 0x83, 0x93, 0xe1, 0xd6, - 0xb3, 0xf, 0xdd, 0x95, 0xc7, 0xd5, 0x6a, 0xbb, 0xf8, 0x3f, - 0x5e, 0x83, 0xa4, 0x9f, 0xce, 0xb3, 0xfa, 0x95, 0x17, 0xb4, - 0x88, 0xfa, 0xae, 0x35, 0x6d, 0x28, 0xb3, 0xd2, 0x6, 0xa9, - 0x9, 0xfe, 0x2a, 0x78, 0xbf, 0x84, 0xff, 00, 0x10, 0xaf, - 0x2f, 0x3a, 0x37, 0x88, 0x61, 0xe8, 0x73, 0xff, 00, 0x2, - 0xa6, 0x95, 0xf1, 0xc, 0x3d, 0x50, 0x9f, 0xa3, 0x54, 0xbc, - 0xbe, 0x1d, 0x24, 0x4f, 0xb1, 0xc7, 0x2f, 0xb2, 0x9f, 0xcc, - 0xf5, 0x51, 0x77, 0x11, 0xfe, 0x2a, 0x70, 0x9e, 0x33, 0xfc, - 0x55, 0xe5, 0x3, 0x52, 0xd7, 0xa1, 0xfb, 0xd0, 0x39, 0xa7, - 0x7f, 0xc2, 0x4d, 0xaa, 0xc5, 0xf7, 0xe0, 0x93, 0xfe, 0xf9, - 0xa9, 0x79, 0x77, 0x69, 0x12, 0xd6, 0x32, 0x3b, 0xd2, 0x3d, - 0x58, 0x4c, 0xbd, 0x9a, 0x9e, 0xb3, 0x11, 0xd2, 0x43, 0xf9, - 0xd7, 0x94, 0x2f, 0x8d, 0x6f, 0x53, 0xef, 0x42, 0xff, 00, - 0x8a, 0x9a, 0x95, 0x3e, 0x20, 0x4a, 0xbf, 0x79, 0x18, 0x7e, - 0x6, 0xb3, 0x79, 0x6c, 0xfa, 0x32, 0x7d, 0xae, 0x22, 0x3b, - 0xd2, 0x67, 0xaa, 0xad, 0xd4, 0x8b, 0xd2, 0x56, 0x1f, 0x8d, - 0x4c, 0x9a, 0xa5, 0xda, 0x7d, 0xdb, 0x89, 0x7, 0xd1, 0xab, - 0xcb, 0x23, 0xf8, 0x88, 0xbd, 0xc1, 0x15, 0x66, 0x3f, 0x88, - 0x50, 0x9e, 0xac, 0x6b, 0x37, 0x97, 0x55, 0x5d, 0x3, 0xeb, - 0xb5, 0x23, 0xbc, 0x64, 0x8f, 0x51, 0x8f, 0xc4, 0x3a, 0x8c, - 0x47, 0x2b, 0x75, 0x27, 0xfd, 0xf4, 0x6a, 0xdc, 0x5e, 0x33, - 0xd6, 0x22, 0xfb, 0xb7, 0x8e, 0x3f, 0x1a, 0xf2, 0xd8, 0xfc, - 0x7d, 0x6e, 0x7f, 0x8c, 0xd4, 0xeb, 0xe3, 0xab, 0x6c, 0x64, - 0xcb, 0x8a, 0xcf, 0xea, 0x35, 0xa3, 0xb2, 0x34, 0x59, 0xa4, - 0xa3, 0xd6, 0x4b, 0xef, 0x3d, 0x56, 0x1f, 0x88, 0x9a, 0xe4, - 0x3d, 0x2e, 0xd8, 0xfd, 0x4d, 0x5e, 0x8f, 0xe2, 0xe6, 0xbd, - 0x7, 0xfc, 0xbc, 0xd7, 0x8b, 0x5c, 0x7c, 0x42, 0xb4, 0x88, - 0x1f, 0xde, 0xd6, 0x16, 0xa7, 0xf1, 0x4e, 0xde, 0x30, 0x76, - 0x36, 0xe3, 0x5d, 0x14, 0xf0, 0x78, 0xa7, 0xb3, 0x6b, 0xe6, - 0xcd, 0x16, 0x73, 0x5f, 0x6a, 0x6e, 0x4c, 0xfa, 0x2f, 0xfe, - 0x17, 0xe6, 0xb1, 0x62, 0x32, 0xd3, 0xee, 0x23, 0xde, 0xb8, - 0x5f, 0x88, 0x3f, 0xb4, 0xad, 0xfd, 0xed, 0x94, 0xd0, 0xbd, - 0xe3, 0x7c, 0xc3, 0x5, 0x1, 0xe2, 0xbe, 0x7b, 0xd6, 0x7e, - 0x22, 0xde, 0x5f, 0x16, 0x58, 0x89, 0x55, 0x35, 0x99, 0xe1, - 0xdf, 0xb, 0xf8, 0x87, 0xe2, 0x26, 0xbb, 0x6f, 0xa5, 0xe8, - 0xd6, 0x17, 0x3a, 0xae, 0xa3, 0x70, 0xdb, 0x63, 0x82, 0x4, - 0x2c, 0x4f, 0xf8, 0x1, 0xea, 0x78, 0x15, 0xed, 0xd0, 0xc0, - 0xd4, 0x4a, 0xd5, 0x66, 0xdf, 0x95, 0xcd, 0xe3, 0x8b, 0xcc, - 0x71, 0x5e, 0xe5, 0x49, 0xf2, 0xc5, 0xf4, 0xea, 0xc8, 0x7c, - 0x53, 0xe2, 0xcb, 0x9f, 0x10, 0x5d, 0x33, 0xb3, 0x33, 0x64, - 0xf0, 0x7, 0x7a, 0xfb, 0xf3, 0xf6, 0x15, 0xfd, 0x91, 0x66, - 0xf0, 0x1a, 0x45, 0xf1, 0xf, 0xc6, 0x76, 0x5e, 0x5f, 0x88, - 0xee, 0x13, 0x3a, 0x5d, 0x94, 0x87, 0x26, 0xce, 0x26, 0x5e, - 0x64, 0x71, 0xda, 0x46, 0x7, 0xa7, 0xf0, 0x8f, 0x73, 0xc6, - 0xcf, 0xec, 0xb3, 0xfb, 0xb, 0xe9, 0xff, 00, 0xc, 0x65, - 0xb7, 0xf1, 0x37, 0x8d, 0xd2, 0xdf, 0x57, 0xf1, 0x3a, 0x10, - 0xf6, 0xd6, 0x6a, 0x7c, 0xcb, 0x7b, 0x2e, 0x3a, 0x9c, 0x8c, - 0x3c, 0x9e, 0xfd, 0x7, 0x6c, 0xf5, 0xaf, 0xae, 0xab, 0xe9, - 0xf0, 0xf8, 0x75, 0x4, 0x9b, 0x5e, 0x88, 0xfd, 0xf, 0x26, - 0xca, 0x56, 0x12, 0x2a, 0xa5, 0x45, 0x67, 0xd1, 0x7f, 0x9f, - 0x98, 0x51, 0x45, 0x15, 0xe8, 0x1f, 0x58, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x21, 00, 0xf5, 0xa8, 0xa5, 0xb3, 0xb7, - 0x9b, 0xfd, 0x64, 0x11, 0xc9, 0xfe, 0xf2, 0x3, 0x45, 0x14, - 0xad, 0x71, 0x5a, 0xe5, 0x19, 0xfc, 0x2d, 0xa3, 0x5c, 0x92, - 0x66, 0xd2, 0x2c, 0x65, 0x27, 0xbb, 0xdb, 0x21, 0xfe, 0x95, - 0x9b, 0x71, 0xf0, 0xcf, 0xc2, 0x77, 0x44, 0x99, 0x7c, 0x3b, - 0xa6, 0xb1, 0x3f, 0xf4, 0xec, 0xa3, 0xf9, 0xa, 0x28, 0xa8, - 0x74, 0xe0, 0xf7, 0x8a, 0x33, 0x74, 0xa9, 0xcb, 0x78, 0xaf, - 0xb8, 0xc7, 0xbb, 0xf8, 0x13, 0xe0, 0x5b, 0xdc, 0xef, 0xf0, - 0xfd, 0xba, 0x93, 0xde, 0x36, 0x65, 0xfe, 0x46, 0xb1, 0xee, - 0xff, 00, 0x66, 0x4f, 0x1, 0x5d, 0x74, 0xd3, 0xa5, 0x87, - 0xfe, 0xb9, 0xcc, 0x7f, 0xae, 0x68, 0xa2, 0xb1, 0x78, 0x5a, - 0xf, 0x78, 0x2f, 0xb8, 0xc2, 0x58, 0x3c, 0x34, 0xb7, 0xa6, - 0xbe, 0xe4, 0x63, 0x5d, 0x7e, 0xc8, 0xbe, 0xa, 0x9f, 0xee, - 0x49, 0x7d, 0x17, 0xb0, 0x74, 0x3f, 0xfb, 0x2d, 0x64, 0x5d, - 0x7e, 0xc6, 0x1e, 0x19, 0x97, 0x3e, 0x4e, 0xa9, 0x77, 0x17, - 0xfb, 0xd1, 0xab, 0x7f, 0x85, 0x14, 0x56, 0x6f, 0x3, 0x86, - 0x7f, 0x60, 0xc5, 0xe5, 0xd8, 0x47, 0xff, 00, 0x2e, 0xd1, - 0x8b, 0x7b, 0xfb, 0x10, 0x69, 0xd2, 0x3, 0xe4, 0x6b, 0xdc, - 0xf6, 0x12, 0x5a, 0xff, 00, 0x83, 0x56, 0xd, 0xf7, 0xec, - 0x31, 0x71, 0x83, 0xf6, 0x7d, 0x5a, 0xca, 0x53, 0xd8, 0x49, - 0x1b, 0x2f, 0xf4, 0x34, 0x51, 0x59, 0xbc, 0xbb, 0xe, 0xf6, - 0x56, 0xf9, 0xb3, 0x27, 0x95, 0x61, 0x1f, 0xd9, 0xb7, 0xcd, - 0x98, 0x17, 0xdf, 0xb0, 0xce, 0xb8, 0xa0, 0xf9, 0x6d, 0xa7, - 0x4f, 0xec, 0xb2, 0x63, 0xf9, 0xa8, 0xae, 0x7e, 0xff, 00, - 0xf6, 0x24, 0xf1, 0x44, 0x59, 0xd9, 0xa5, 0xc1, 0x37, 0xbc, - 0x73, 0x47, 0xfd, 0x5a, 0x8a, 0x2b, 0x29, 0x65, 0xb4, 0xba, - 0x37, 0xf7, 0xff, 00, 0xc0, 0x39, 0xe5, 0x93, 0x61, 0xba, - 0x37, 0xf7, 0xff, 00, 0xc0, 0x30, 0x2f, 0x3f, 0x63, 0x6f, - 0x16, 0x43, 0xff, 00, 0x32, 0xfc, 0xed, 0xff, 00, 0x5c, - 0xd9, 0x5b, 0xf9, 0x1a, 0xc1, 0xbf, 0xfd, 0x94, 0x3c, 0x55, - 0x6d, 0x90, 0x7c, 0x3f, 0xa9, 0x8f, 0x75, 0x85, 0x98, 0x7e, - 0x82, 0x8a, 0x2b, 0x86, 0xa6, 0x16, 0x34, 0xf6, 0x93, 0xfe, - 0xbe, 0x47, 0x97, 0x5f, 0x2c, 0xa3, 0x4d, 0x68, 0xdf, 0xe1, - 0xfe, 0x46, 0xb, 0x7e, 0xcc, 0x1e, 0x23, 0xb9, 0x9f, 0xcb, - 0x5d, 0x1e, 0xfc, 0xbe, 0x7a, 0x1b, 0x77, 0x3f, 0xd2, 0xb4, - 0x34, 0xff, 00, 0xd8, 0x8f, 0xc7, 0x7a, 0xc4, 0xaa, 0xb0, - 0xe8, 0x57, 0x10, 0x8c, 0xfd, 0xfb, 0x8c, 0x44, 0xb8, 0xf5, - 0xf9, 0x88, 0xa2, 0x8a, 0x58, 0x7a, 0x4e, 0xa4, 0xac, 0xe4, - 0xff, 00, 0xf, 0xf2, 0x38, 0x68, 0x65, 0x54, 0x31, 0x4e, - 0xd3, 0x6d, 0x7a, 0x5b, 0xfc, 0x8f, 0x62, 0xf8, 0x79, 0xff, - 00, 0x4, 0xdc, 0x88, 0x3a, 0x5c, 0x78, 0xc3, 0x5c, 0x8, - 0xa0, 0x83, 0xf6, 0x3d, 0x34, 0x6e, 0x63, 0xec, 0x64, 0x61, - 0x81, 0xf8, 0x3, 0xf5, 0xaf, 0xae, 0x3e, 0x1d, 0xfc, 0x27, - 0xf0, 0xaf, 0xc2, 0xad, 0x29, 0x6c, 0x3c, 0x33, 0xa3, 0xdb, - 0xe9, 0xc9, 0x8c, 0x3c, 0xca, 0xbb, 0xa6, 0x97, 0xdd, 0xdc, - 0xf2, 0x68, 0xa2, 0xbe, 0x82, 0x14, 0x61, 0x4f, 0x6d, 0xcf, - 0xac, 0xc1, 0xe5, 0x98, 0x5c, 0xe, 0xb4, 0x61, 0xaf, 0x77, - 0xab, 0xfb, 0xff, 00, 0xc8, 0xeb, 0xa8, 0xa2, 0x8a, 0xd8, - 0xf5, 0x42, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0xf, - 0xff, 0xd9, 0}; - -static const char data_runtime_shtml[] = { - /* /runtime.shtml */ - 0x2f, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x20, 0x6f, 0x6e, 0x4c, 0x6f, 0x61, 0x64, - 0x3d, 0x22, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x73, - 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x28, - 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x6c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x68, 0x72, 0x65, 0x66, 0x3d, - 0x27, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x73, - 0x68, 0x74, 0x6d, 0x6c, 0x27, 0x26, 0x71, 0x75, 0x6f, 0x74, - 0x3b, 0x2c, 0x32, 0x30, 0x30, 0x30, 0x29, 0x22, 0x3e, 0xd, - 0xa, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, - 0x65, 0x3d, 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x3e, - 0xd, 0xa, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, - 0x22, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, - 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x53, - 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x72, 0x75, 0x6e, - 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x52, 0x75, 0x6e, 0x20, 0x54, 0x69, 0x6d, 0x65, - 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, - 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x73, - 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x54, 0x43, 0x50, 0x20, 0x53, 0x74, 0x61, 0x74, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, - 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61, 0x3e, - 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, - 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, - 0x66, 0x72, 0x65, 0x65, 0x72, 0x74, 0x6f, 0x73, 0x2e, 0x6f, - 0x72, 0x67, 0x2f, 0x22, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, - 0x54, 0x4f, 0x53, 0x20, 0x48, 0x6f, 0x6d, 0x65, 0x70, 0x61, - 0x67, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6f, 0x2e, 0x73, 0x68, - 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x49, 0x4f, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x6c, 0x6f, 0x67, 0x6f, 0x2e, 0x6a, 0x70, 0x67, 0x22, 0x3e, - 0x33, 0x37, 0x4b, 0x20, 0x6a, 0x70, 0x67, 0x3c, 0x2f, 0x61, - 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, - 0xd, 0xa, 0x3c, 0x68, 0x72, 0x3e, 0xd, 0xa, 0x3c, 0x62, - 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x32, - 0x3e, 0x52, 0x75, 0x6e, 0x2d, 0x74, 0x69, 0x6d, 0x65, 0x20, - 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, - 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0xd, 0xa, 0x50, 0x61, 0x67, - 0x65, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x72, 0x65, 0x66, - 0x72, 0x65, 0x73, 0x68, 0x20, 0x65, 0x76, 0x65, 0x72, 0x79, - 0x20, 0x32, 0x20, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, - 0x2e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x6e, - 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x63, 0x6f, - 0x75, 0x72, 0x69, 0x65, 0x72, 0x22, 0x3e, 0x3c, 0x70, 0x72, - 0x65, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x41, 0x62, - 0x73, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x25, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x3c, 0x62, - 0x72, 0x3e, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x3c, 0x62, 0x72, 0x3e, 0xd, 0xa, 0x25, 0x21, - 0x20, 0x72, 0x75, 0x6e, 0x2d, 0x74, 0x69, 0x6d, 0x65, 0xd, - 0xa, 0x3c, 0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, - 0x6f, 0x6e, 0x74, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, - 0x6e, 0x74, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, - 0x79, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, - 0x3e, 0xd, 0xa, 0xd, 0xa, 0}; - -static const char data_stats_shtml[] = { - /* /stats.shtml */ - 0x2f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x6e, - 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, - 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x61, 0x20, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, - 0x61, 0x73, 0x6b, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x52, 0x75, 0x6e, - 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, 0x74, 0x61, 0x74, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x43, 0x50, - 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, - 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, - 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, 0x65, 0x65, 0x72, - 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x22, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x20, 0x48, - 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, - 0x6a, 0x70, 0x67, 0x22, 0x3e, 0x33, 0x37, 0x4b, 0x20, 0x6a, - 0x70, 0x67, 0x3c, 0x2f, 0x61, 0x3e, 0xd, 0xa, 0x3c, 0x62, - 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x72, - 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, - 0xd, 0xa, 0x3c, 0x68, 0x32, 0x3e, 0x4e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, - 0x74, 0x69, 0x63, 0x73, 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0xd, - 0xa, 0x3c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x77, 0x69, - 0x64, 0x74, 0x68, 0x3d, 0x22, 0x33, 0x30, 0x30, 0x22, 0x20, - 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x3d, 0x22, 0x30, 0x22, - 0x3e, 0xd, 0xa, 0x3c, 0x74, 0x72, 0x3e, 0x3c, 0x74, 0x64, - 0x20, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x3d, 0x22, 0x6c, 0x65, - 0x66, 0x74, 0x22, 0x3e, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, - 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x63, 0x6f, 0x75, 0x72, - 0x69, 0x65, 0x72, 0x22, 0x3e, 0x3c, 0x70, 0x72, 0x65, 0x3e, - 0xd, 0xa, 0x49, 0x50, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, - 0x74, 0x73, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, - 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, 0xd, 0xa, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x64, 0x65, - 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x44, 0x72, 0x6f, 0x70, - 0x70, 0x65, 0x64, 0xd, 0xa, 0x49, 0x50, 0x20, 0x65, 0x72, - 0x72, 0x6f, 0x72, 0x73, 0x20, 0x20, 0x20, 0x20, 0x49, 0x50, - 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, 0x6c, 0x65, 0x6e, 0x67, - 0x74, 0x68, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x49, 0x50, 0x20, - 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x2c, 0x20, 0x68, 0x69, - 0x67, 0x68, 0x20, 0x62, 0x79, 0x74, 0x65, 0xd, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x49, 0x50, 0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, - 0x68, 0x2c, 0x20, 0x6c, 0x6f, 0x77, 0x20, 0x62, 0x79, 0x74, - 0x65, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x49, 0x50, 0x20, 0x66, - 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0xd, 0xa, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, - 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0xd, 0xa, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x57, 0x72, 0x6f, 0x6e, 0x67, 0x20, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0xd, 0xa, 0x49, - 0x43, 0x4d, 0x50, 0x9, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, - 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x72, 0x65, 0x63, - 0x65, 0x69, 0x76, 0x65, 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x73, 0x65, - 0x6e, 0x74, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, - 0x6b, 0x65, 0x74, 0x73, 0x20, 0x64, 0x72, 0x6f, 0x70, 0x70, - 0x65, 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x54, 0x79, 0x70, - 0x65, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0xd, 0xa, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, - 0x6d, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0xd, 0xa, - 0x54, 0x43, 0x50, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, - 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0xd, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, 0xd, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x64, - 0x72, 0x6f, 0x70, 0x70, 0x65, 0x64, 0xd, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x20, - 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0xd, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x44, 0x61, 0x74, 0x61, 0x20, 0x70, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x73, 0x20, 0x77, 0x69, 0x74, 0x68, 0x6f, 0x75, - 0x74, 0x20, 0x41, 0x43, 0x4b, 0x73, 0xd, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x52, 0x65, 0x73, 0x65, 0x74, 0x73, 0xd, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x52, 0x65, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, - 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x61, 0xd, 0xa, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x53, 0x79, 0x6e, 0x20, 0x74, 0x6f, 0x20, - 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x64, 0x20, 0x70, 0x6f, 0x72, - 0x74, 0xd, 0xa, 0x55, 0x44, 0x50, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x73, 0x20, 0x64, 0x72, 0x6f, 0x70, 0x70, 0x65, - 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x73, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, - 0x65, 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, - 0x6b, 0x65, 0x74, 0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, 0xd, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x73, 0x20, 0x63, 0x68, 0x6b, 0x65, 0x72, 0x72, 0xd, 0xa, - 0x9, 0x20, 0x20, 0x20, 0x20, 0x20, 0x4e, 0x6f, 0x20, 0x63, - 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, - 0x61, 0x76, 0x61, 0x6c, 0x69, 0x61, 0x62, 0x6c, 0x65, 0xd, - 0xa, 0x3c, 0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, - 0x6f, 0x6e, 0x74, 0x3e, 0x3c, 0x2f, 0x74, 0x64, 0x3e, 0x3c, - 0x74, 0x64, 0x3e, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, - 0x61, 0x63, 0x65, 0x3d, 0x22, 0x63, 0x6f, 0x75, 0x72, 0x69, - 0x65, 0x72, 0x22, 0x3e, 0x3c, 0x70, 0x72, 0x65, 0x3e, 0x25, - 0x21, 0x20, 0x6e, 0x65, 0x74, 0x2d, 0x73, 0x74, 0x61, 0x74, - 0x73, 0xd, 0xa, 0x3c, 0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, - 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0x3c, 0x2f, 0x74, 0x64, - 0x3e, 0x3c, 0x2f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x3e, 0xd, - 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xd, 0xa, - 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xd, 0xa, 0x3c, - 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, 0xa, 0}; - -static const char data_tcp_shtml[] = { - /* /tcp.shtml */ - 0x2f, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x6e, - 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, - 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x61, 0x20, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, - 0x61, 0x73, 0x6b, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x52, 0x75, 0x6e, - 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, 0x74, 0x61, 0x74, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x43, 0x50, - 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, - 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, - 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, 0x65, 0x65, 0x72, - 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x22, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x20, 0x48, - 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, - 0x6a, 0x70, 0x67, 0x22, 0x3e, 0x33, 0x37, 0x4b, 0x20, 0x6a, - 0x70, 0x67, 0x3c, 0x2f, 0x61, 0x3e, 0xd, 0xa, 0x3c, 0x62, - 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x72, - 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0xd, 0xa, 0x3c, - 0x68, 0x32, 0x3e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, - 0x20, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0xd, 0xa, 0x3c, - 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x74, 0x61, 0x62, 0x6c, 0x65, - 0x3e, 0xd, 0xa, 0x3c, 0x74, 0x72, 0x3e, 0x3c, 0x74, 0x68, - 0x3e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x3c, 0x2f, 0x74, 0x68, - 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x52, 0x65, 0x6d, 0x6f, 0x74, - 0x65, 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, - 0x53, 0x74, 0x61, 0x74, 0x65, 0x3c, 0x2f, 0x74, 0x68, 0x3e, - 0x3c, 0x74, 0x68, 0x3e, 0x52, 0x65, 0x74, 0x72, 0x61, 0x6e, - 0x73, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x3c, - 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x54, 0x69, - 0x6d, 0x65, 0x72, 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, - 0x68, 0x3e, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x3c, 0x2f, 0x74, - 0x68, 0x3e, 0x3c, 0x2f, 0x74, 0x72, 0x3e, 0xd, 0xa, 0x25, - 0x21, 0x20, 0x74, 0x63, 0x70, 0x2d, 0x63, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0xd, 0xa, 0x3c, - 0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, - 0x74, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, - 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, - 0xd, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, - 0xa, 0xd, 0xa, 0}; - -const struct httpd_fsdata_file file_404_html[] = {{NULL, data_404_html, data_404_html + 10, sizeof(data_404_html) - 10}}; - -const struct httpd_fsdata_file file_index_html[] = {{file_404_html, data_index_html, data_index_html + 12, sizeof(data_index_html) - 12}}; - -const struct httpd_fsdata_file file_index_shtml[] = {{file_index_html, data_index_shtml, data_index_shtml + 13, sizeof(data_index_shtml) - 13}}; - -const struct httpd_fsdata_file file_io_shtml[] = {{file_index_shtml, data_io_shtml, data_io_shtml + 10, sizeof(data_io_shtml) - 10}}; - -const struct httpd_fsdata_file file_logo_jpg[] = {{file_io_shtml, data_logo_jpg, data_logo_jpg + 10, sizeof(data_logo_jpg) - 10}}; - -const struct httpd_fsdata_file file_runtime_shtml[] = {{file_logo_jpg, data_runtime_shtml, data_runtime_shtml + 15, sizeof(data_runtime_shtml) - 15}}; - -const struct httpd_fsdata_file file_stats_shtml[] = {{file_runtime_shtml, data_stats_shtml, data_stats_shtml + 13, sizeof(data_stats_shtml) - 13}}; - -const struct httpd_fsdata_file file_tcp_shtml[] = {{file_stats_shtml, data_tcp_shtml, data_tcp_shtml + 11, sizeof(data_tcp_shtml) - 11}}; - -#define HTTPD_FS_ROOT file_tcp_shtml - -#define HTTPD_FS_NUMFILES 8 diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/webserver/makefsdata b/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/webserver/makefsdata deleted file mode 100644 index a953cdd76..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/webserver/makefsdata +++ /dev/null @@ -1,79 +0,0 @@ -#!/usr/bin/perl - -open(OUTPUT, "> httpd-fsdata.c"); - -chdir("httpd-fs"); - -opendir(DIR, "."); -@files = grep { !/^\./ && !/(CVS|~)/ } readdir(DIR); -closedir(DIR); - -foreach $file (@files) { - - if(-d $file && $file !~ /^\./) { - print "Processing directory $file\n"; - opendir(DIR, $file); - @newfiles = grep { !/^\./ && !/(CVS|~)/ } readdir(DIR); - closedir(DIR); - printf "Adding files @newfiles\n"; - @files = (@files, map { $_ = "$file/$_" } @newfiles); - next; - } -} - -foreach $file (@files) { - if(-f $file) { - - print "Adding file $file\n"; - - open(FILE, $file) || die "Could not open file $file\n"; - binmode FILE; - - $file =~ s-^-/-; - $fvar = $file; - $fvar =~ s-/-_-g; - $fvar =~ s-\.-_-g; - # for AVR, add PROGMEM here - print(OUTPUT "static const char data".$fvar."[] = {\n"); - print(OUTPUT "\t/* $file */\n\t"); - for($j = 0; $j < length($file); $j++) { - printf(OUTPUT "%#02x, ", unpack("C", substr($file, $j, 1))); - } - printf(OUTPUT "0,\n"); - - - $i = 0; - while(read(FILE, $data, 1)) { - if($i == 0) { - print(OUTPUT "\t"); - } - printf(OUTPUT "%#02x, ", unpack("C", $data)); - $i++; - if($i == 10) { - print(OUTPUT "\n"); - $i = 0; - } - } - print(OUTPUT "0};\n\n"); - close(FILE); - push(@fvars, $fvar); - push(@pfiles, $file); - } -} - -for($i = 0; $i < @fvars; $i++) { - $file = $pfiles[$i]; - $fvar = $fvars[$i]; - - if($i == 0) { - $prevfile = "NULL"; - } else { - $prevfile = "file" . $fvars[$i - 1]; - } - print(OUTPUT "const struct httpd_fsdata_file file".$fvar."[] = {{$prevfile, data$fvar, "); - print(OUTPUT "data$fvar + ". (length($file) + 1) .", "); - print(OUTPUT "sizeof(data$fvar) - ". (length($file) + 1) ."}};\n\n"); -} - -print(OUTPUT "#define HTTPD_FS_ROOT file$fvars[$i - 1]\n\n"); -print(OUTPUT "#define HTTPD_FS_NUMFILES $i\n"); diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/webserver/phy.c b/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/webserver/phy.c deleted file mode 100644 index afd6e31d0..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/webserver/phy.c +++ /dev/null @@ -1,474 +0,0 @@ -/****************************************************************************** -* DISCLAIMER - -* This software is supplied by Renesas Technology Corp. and is only -* intended for use with Renesas products. No other uses are authorized. - -* This software is owned by Renesas Technology Corp. and is protected under -* all applicable laws, including copyright laws. - -* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES -* REGARDING THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, -* INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A -* PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY -* DISCLAIMED. - -* TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS -* TECHNOLOGY CORP. NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE -* FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES -* FOR ANY REASON RELATED TO THE THIS SOFTWARE, EVEN IF RENESAS OR ITS -* AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - -* Renesas reserves the right, without notice, to make changes to this -* software and to discontinue the availability of this software. -* By using this software, you agree to the additional terms and -* conditions found by accessing the following link: -* http://www.renesas.com/disclaimer -****************************************************************************** -* Copyright (C) 2008. Renesas Technology Corp., All Rights Reserved. -******************************************************************************* -* File Name : phy.c -* Version : 1.01 -* Description : Ethernet PHY device driver -****************************************************************************** -* History : DD.MM.YYYY Version Description -* : 15.02.2010 1.00 First Release -* : 06.04.2010 1.01 RX62N changes -******************************************************************************/ - - -/****************************************************************************** -Includes , "Project Includes" -******************************************************************************/ -#include "iodefine.h" -#include "r_ether.h" -#include "phy.h" - -#include "FreeRTOS.h" -#include "task.h" -/****************************************************************************** -Typedef definitions -******************************************************************************/ - -/****************************************************************************** -Macro definitions -******************************************************************************/ - -/****************************************************************************** -Imported global variables and functions (from other files) -******************************************************************************/ - -/****************************************************************************** -Exported global variables and functions (to be accessed by other files) -******************************************************************************/ - -/****************************************************************************** -Private global variables and functions -******************************************************************************/ -uint16_t _phy_read( uint16_t reg_addr ); -void _phy_write( uint16_t reg_addr, uint16_t data ); -void _phy_preamble( void ); -void _phy_reg_set( uint16_t reg_addr, int32_t option ); -void _phy_reg_read( uint16_t *data ); -void _phy_reg_write( uint16_t data ); -void _phy_ta_z0( void ); -void _phy_ta_10( void ); -void _phy_mii_write_1( void ); -void _phy_mii_write_0( void ); - -/** - * External functions - */ - -/****************************************************************************** -* Function Name: phy_init -* Description : Resets Ethernet PHY device -* Arguments : none -* Return Value : none -******************************************************************************/ -int16_t phy_init( void ) -{ - uint16_t reg; - uint32_t count; - - /* Reset PHY */ - _phy_write(BASIC_MODE_CONTROL_REG, 0x8000); - - count = 0; - - do - { - vTaskDelay( 2 / portTICK_PERIOD_MS ); - reg = _phy_read(BASIC_MODE_CONTROL_REG); - count++; - } while (reg & 0x8000 && count < PHY_RESET_WAIT); - - if( count < PHY_RESET_WAIT ) - { - return R_PHY_OK; - } - - return R_PHY_ERROR; -} - -/****************************************************************************** -* Function Name: phy_set_100full -* Description : Set Ethernet PHY device to 100 Mbps full duplex -* Arguments : none -* Return Value : none -******************************************************************************/ -void phy_set_100full( void ) -{ - _phy_write(BASIC_MODE_CONTROL_REG, 0x2100); -} - -/****************************************************************************** -* Function Name: phy_set_10half -* Description : Sets Ethernet PHY device to 10 Mbps half duplexR -* Arguments : none -* Return Value : none -******************************************************************************/ -void phy_set_10half( void ) -{ - _phy_write(BASIC_MODE_CONTROL_REG, 0x0000); -} - -/****************************************************************************** -* Function Name: phy_set_autonegotiate -* Description : Starts autonegotiate and reports the other side's -* : physical capability -* Arguments : none -* Return Value : bit 8 - Full duplex 100 mbps -* : bit 7 - Half duplex 100 mbps -* : bit 6 - Full duplex 10 mbps -* : bit 5 - Half duplex 10 mbps -* : bit 4:0 - Always set to 00001 (IEEE 802.3) -* : -1 if error -******************************************************************************/ -int16_t phy_set_autonegotiate( void ) -{ - uint16_t reg; - uint32_t count; - - _phy_write(AN_ADVERTISEMENT_REG, 0x01E1); - _phy_write(BASIC_MODE_CONTROL_REG, 0x1200); - - count = 0; - - do - { - reg = _phy_read(BASIC_MODE_STATUS_REG); - count++; - vTaskDelay( 100 / portTICK_PERIOD_MS ); - - /* Make sure we don't break out if reg just contains 0xffff. */ - if( reg == 0xffff ) - { - reg = 0; - } - - } while (!(reg & 0x0020) && (count < PHY_AUTO_NEGOTIATON_WAIT)); - - if (count >= PHY_AUTO_NEGOTIATON_WAIT) - { - return R_PHY_ERROR; - } - else - { - /* National DP83640 fix */ - _phy_write(0x13, 0x0006); - reg = _phy_read(0x14); - _phy_write(0x14, (reg&0x7FFF)); - _phy_write(0x13, 0x0000); - - /* Get the link partner response */ - reg = (int16_t)_phy_read(AN_LINK_PARTNER_ABILITY_REG); - - if (reg & ( 1 << 8 ) ) - { - return PHY_LINK_100F; - } - if (reg & ( 1 << 7 ) ) - { - return PHY_LINK_100H; - } - if (reg & ( 1 << 6 ) ) - { - return PHY_LINK_10F; - } - if (reg & 1 << 5 ) - { - return PHY_LINK_10H; - } - - return (-1); - } -} - - -/** - * Internal functions - */ - -/****************************************************************************** -* Function Name: _phy_read -* Description : Reads a PHY register -* Arguments : reg_addr - address of the PHY register -* Return Value : read value -******************************************************************************/ -uint16_t _phy_read( uint16_t reg_addr ) -{ - uint16_t data; - - _phy_preamble(); - _phy_reg_set( reg_addr, PHY_READ ); - _phy_ta_z0(); - _phy_reg_read( &data ); - _phy_ta_z0(); - - return( data ); -} - -/****************************************************************************** -* Function Name: _phy_write -* Description : Writes to a PHY register -* Arguments : reg_addr - address of the PHY register -* : data - value -* Return Value : none -******************************************************************************/ -void _phy_write( uint16_t reg_addr, uint16_t data ) -{ - _phy_preamble(); - _phy_reg_set( reg_addr, PHY_WRITE ); - _phy_ta_10(); - _phy_reg_write( data ); - _phy_ta_z0(); -} - -/****************************************************************************** -* Function Name: _phy_preamble -* Description : As preliminary preparation for access to the PHY module register, -* "1" is output via the MII management interface. -* Arguments : none -* Return Value : none -******************************************************************************/ -void _phy_preamble( void ) -{ - int16_t i; - - i = 32; - while( i > 0 ) - { - _phy_mii_write_1(); - i--; - } -} - -/****************************************************************************** -* Function Name: _phy_reg_set -* Description : Sets a PHY device to read or write mode -* Arguments : reg_addr - address of the PHY register -* : option - mode -* Return Value : none -******************************************************************************/ -void _phy_reg_set( uint16_t reg_addr, int32_t option ) -{ - int32_t i; - uint16_t data; - - data = 0; - data = (PHY_ST << 14); /* ST code */ - - if( option == PHY_READ ) - { - data |= (PHY_READ << 12); /* OP code(RD) */ - } - else - { - data |= (PHY_WRITE << 12); /* OP code(WT) */ - } - - data |= (PHY_ADDR << 7); /* PHY Address */ - data |= (reg_addr << 2); /* Reg Address */ - - i = 14; - while( i > 0 ) - { - if( (data & 0x8000) == 0 ) - { - _phy_mii_write_0(); - } - else - { - _phy_mii_write_1(); - } - data <<= 1; - i--; - } -} - -/****************************************************************************** -* Function Name: _phy_reg_read -* Description : Reads PHY register through MII interface -* Arguments : data - pointer to store the data read -* Return Value : none -******************************************************************************/ -void _phy_reg_read( uint16_t *data ) -{ - int32_t i, j; - uint16_t reg_data; - - reg_data = 0; - i = 16; - while( i > 0 ) - { - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000000; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000001; - } - - reg_data <<= 1; - reg_data |= (uint16_t)((ETHERC.PIR.LONG & 0x00000008) >> 3); /* MDI read */ - - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000001; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000000; - } - i--; - } - *data = reg_data; -} - -/****************************************************************************** -* Function Name: _phy_reg_write -* Description : Writes to PHY register through MII interface -* Arguments : data - value to write -* Return Value : none -******************************************************************************/ -void _phy_reg_write( uint16_t data ) -{ - int32_t i; - - i = 16; - while( i > 0 ) - { - if( (data & 0x8000) == 0 ) - { - _phy_mii_write_0(); - } - else - { - _phy_mii_write_1(); - } - i--; - data <<= 1; - } -} - -/****************************************************************************** -* Function Name: _phy_ta_z0 -* Description : Performs bus release so that PHY can drive data -* : for read operation -* Arguments : none -* Return Value : none -******************************************************************************/ -void _phy_ta_z0( void ) -{ - int32_t j; - - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000000; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000001; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000001; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000000; - } -} - -/****************************************************************************** -* Function Name: _phy_ta_10 -* Description : Switches data bus so MII interface can drive data -* : for write operation -* Arguments : none -* Return Value : none -******************************************************************************/ -void _phy_ta_10(void) -{ - _phy_mii_write_1(); - _phy_mii_write_0(); -} - -/****************************************************************************** -* Function Name: _phy_mii_write_1 -* Description : Outputs 1 to the MII interface -* Arguments : none -* Return Value : none -******************************************************************************/ -void _phy_mii_write_1( void ) -{ - int32_t j; - - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000006; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000007; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000007; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000006; - } -} - -/****************************************************************************** -* Function Name: _phy_mii_write_0 -* Description : Outputs 0 to the MII interface -* Arguments : none -* Return Value : none -******************************************************************************/ -void _phy_mii_write_0( void ) -{ - int32_t j; - - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000002; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000003; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000003; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000002; - } -} - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/webserver/phy.h b/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/webserver/phy.h deleted file mode 100644 index e2429d932..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/webserver/phy.h +++ /dev/null @@ -1,84 +0,0 @@ -/****************************************************************************** -* DISCLAIMER -* Please refer to http://www.renesas.com/disclaimer -****************************************************************************** - Copyright (C) 2008. Renesas Technology Corp., All Rights Reserved. -******************************************************************************* -* File Name : phy.h -* Version : 1.02 -* Description : Ethernet PHY device driver -****************************************************************************** -* History : DD.MM.YYYY Version Description -* : 15.02.2010 1.00 First Release -* : 17.03.2010 1.01 Modification of macro definitions for access timing -* : 06.04.2010 1.02 RX62N changes -******************************************************************************/ - -#ifndef PHY_H -#define PHY_H - -/****************************************************************************** -Includes , "Project Includes" -******************************************************************************/ -#include - -/****************************************************************************** -Typedef definitions -******************************************************************************/ - -/****************************************************************************** -Macro definitions -******************************************************************************/ -/* Standard PHY Registers */ -#define BASIC_MODE_CONTROL_REG 0 -#define BASIC_MODE_STATUS_REG 1 -#define PHY_IDENTIFIER1_REG 2 -#define PHY_IDENTIFIER2_REG 3 -#define AN_ADVERTISEMENT_REG 4 -#define AN_LINK_PARTNER_ABILITY_REG 5 -#define AN_EXPANSION_REG 6 - -/* Media Independent Interface */ -#define PHY_ST 1 -#define PHY_READ 2 -#define PHY_WRITE 1 -#define PHY_ADDR 0x01 - -#define MDC_WAIT 2 - -/* PHY return definitions */ -#define R_PHY_OK 0 -#define R_PHY_ERROR -1 - -/* Auto-Negotiation Link Partner Status */ -#define PHY_AN_LINK_PARTNER_100BASE 0x0180 -#define PHY_AN_LINK_PARTNER_FULL 0x0140 -#define PHY_AN_COMPLETE ( 1 << 5 ) - -/* - * Wait counter definitions of PHY-LSI initialization - * ICLK = 96MHz -*/ -#define PHY_RESET_WAIT 0x00000020L -#define PHY_AUTO_NEGOTIATON_WAIT 75 - -#define PHY_AN_ENABLE 0x1200 -#define PHY_AN_10_100_F_H 0xde1 - -/****************************************************************************** -Variable Externs -******************************************************************************/ - -/****************************************************************************** -Functions Prototypes -******************************************************************************/ -/** - * External prototypes - **/ -int16_t phy_init( void ); -void phy_set_100full( void ); -void phy_set_10half( void ); -int16_t phy_set_autonegotiate( void ); - -#endif /* PHY_H */ - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/webserver/r_ether.h b/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/webserver/r_ether.h deleted file mode 100644 index 13157ab5c..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/webserver/r_ether.h +++ /dev/null @@ -1,185 +0,0 @@ -/****************************************************************************** -* DISCLAIMER -* Please refer to http://www.renesas.com/disclaimer -****************************************************************************** - Copyright (C) 2008. Renesas Technology Corp., All Rights Reserved. -******************************************************************************* -* File Name : r_ether.h -* Version : 1.02 -* Description : Ethernet module device driver -****************************************************************************** -* History : DD.MM.YYYY Version Description -* : 15.02.2010 1.00 First Release -* : 03.03.2010 1.01 Buffer size is aligned on the 32-byte boundary. -* : 04.06.2010 1.02 RX62N changes -******************************************************************************/ - -#ifndef R_ETHER_H -#define R_ETHER_H - -/****************************************************************************** -Includes , "Project Includes" -******************************************************************************/ -#include - -/****************************************************************************** -Typedef definitions -******************************************************************************/ -struct Descriptor -{ - __evenaccess uint32_t status; -#if __LIT -/* Little endian */ - __evenaccess uint16_t size; - __evenaccess uint16_t bufsize; -#else -/* Big endian */ - __evenaccess uint16_t bufsize; - __evenaccess uint16_t size; - -#endif - int8_t *buf_p; - struct Descriptor *next; -}; - -typedef struct Descriptor ethfifo; - -typedef enum _NETLNK -{ - PHY_NO_LINK = 0, - PHY_LINK_10H, - PHY_LINK_10F, - PHY_LINK_100H, - PHY_LINK_100F - -} NETLNK; - -/****************************************************************************** -Macro definitions -******************************************************************************/ -#define BUFSIZE 256 /* Must be 32-bit aligned */ -#define ENTRY 8 /* Number of RX and TX buffers */ - -#define ACT 0x80000000 -#define DL 0x40000000 -#define FP1 0x20000000 -#define FP0 0x10000000 -#define FE 0x08000000 - -#define RFOVER 0x00000200 -#define RAD 0x00000100 -#define RMAF 0x00000080 -#define RRF 0x00000010 -#define RTLF 0x00000008 -#define RTSF 0x00000004 -#define PRE 0x00000002 -#define CERF 0x00000001 - -#define TAD 0x00000100 -#define CND 0x00000008 -#define DLC 0x00000004 -#define CD 0x00000002 -#define TRO 0x00000001 - -/** - * Renesas Ethernet API return defines - **/ -#define R_ETHER_OK 0 -#define R_ETHER_ERROR -1 - -/* Ether Interface definitions */ -#define ETH_RMII_MODE 0 -#define ETH_MII_MODE 1 -/* Select Ether Interface Mode */ -#define ETH_MODE_SEL ETH_MII_MODE - -/****************************************************************************** -Variable Externs -******************************************************************************/ - -/****************************************************************************** -Functions Prototypes -******************************************************************************/ -/** - * Renesas Ethernet API prototypes - **/ -int32_t R_Ether_Open(uint32_t ch, uint8_t mac_addr[]); -int32_t R_Ether_Close(uint32_t ch); -int32_t R_Ether_Write(uint32_t ch, void *buf, uint32_t len); -int32_t R_Ether_Read(uint32_t ch, void *buf); - -/** - * FreeRTOS Ethernet API prototypes. - */ - -/* - * Configure all the ethernet components (MAC, DMA, PHY) ready for communication. - */ -void vInitEmac( void ); - -/* - * Auto negotiate the link, returning pass or fail depending on whether a link - * was established or not. - */ -long lEMACWaitForLink( void ); - -/* - * Check the Rx status, and return the number of bytes received if any. - */ -unsigned long ulEMACRead( void ); - -/* - * Send uip_len bytes from uip_buf to the Tx descriptors and initiate a Tx. - */ -void vEMACWrite( void ); - - - - -/****************************************************/ -/* Ethernet statistic collection data */ -struct enet_stats -{ - uint32_t rx_packets; /* total packets received */ - uint32_t tx_packets; /* total packets transmitted */ - uint32_t rx_errors; /* bad packets received */ - uint32_t tx_errors; /* packet transmit problems */ - uint32_t rx_dropped; /* no space in buffers */ - uint32_t tx_dropped; /* no space available */ - uint32_t multicast; /* multicast packets received */ - uint32_t collisions; - - /* detailed rx_errors: */ - uint32_t rx_length_errors; - uint32_t rx_over_errors; /* receiver ring buffer overflow */ - uint32_t rx_crc_errors; /* recved pkt with crc error */ - uint32_t rx_frame_errors; /* recv'd frame alignment error */ - uint32_t rx_fifo_errors; /* recv'r fifo overrun */ - uint32_t rx_missed_errors; /* receiver missed packet */ - - /* detailed tx_errors */ - uint32_t tx_aborted_errors; - uint32_t tx_carrier_errors; - uint32_t tx_fifo_errors; - uint32_t tx_heartbeat_errors; - uint32_t tx_window_errors; -}; - -struct ei_device -{ - const int8_t *name; - uint8_t open; - uint8_t Tx_act; - uint8_t Rx_act; - uint8_t txing; /* Transmit Active */ - uint8_t irqlock; /* EDMAC's interrupt disabled when '1'. */ - uint8_t dmaing; /* EDMAC Active */ - ethfifo *rxcurrent; /* current receive discripter */ - ethfifo *txcurrent; /* current transmit discripter */ - uint8_t save_irq; /* Original dev->irq value. */ - struct enet_stats stat; - uint8_t mac_addr[6]; -}; - -#endif /* R_ETHER_H */ - diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/webserver/uip-conf.h b/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/webserver/uip-conf.h deleted file mode 100644 index 00f739647..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/webserver/uip-conf.h +++ /dev/null @@ -1,167 +0,0 @@ -/** - * \addtogroup uipopt - * @{ - */ - -/** - * \name Project-specific configuration options - * @{ - * - * uIP has a number of configuration options that can be overridden - * for each project. These are kept in a project-specific uip-conf.h - * file and all configuration names have the prefix UIP_CONF. - */ - -/* - * Copyright (c) 2006, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: uip-conf.h,v 1.6 2006/06/12 08:00:31 adam Exp $ - */ - -/** - * \file - * An example uIP configuration file - * \author - * Adam Dunkels - */ - -#ifndef __UIP_CONF_H__ -#define __UIP_CONF_H__ - -#define UIP_CONF_EXTERNAL_BUFFER -#define UIP_CONF_PROCESS_HTTPD_FORMS 1 - -/** - * 8 bit datatype - * - * This typedef defines the 8-bit type used throughout uIP. - * - * \hideinitializer - */ -typedef unsigned char u8_t; - -/** - * 16 bit datatype - * - * This typedef defines the 16-bit type used throughout uIP. - * - * \hideinitializer - */ -typedef unsigned short u16_t; - -typedef unsigned long u32_t; - -/** - * Statistics datatype - * - * This typedef defines the dataype used for keeping statistics in - * uIP. - * - * \hideinitializer - */ -typedef unsigned short uip_stats_t; - -/** - * Maximum number of TCP connections. - * - * \hideinitializer - */ -#define UIP_CONF_MAX_CONNECTIONS 40 - -/** - * Maximum number of listening TCP ports. - * - * \hideinitializer - */ -#define UIP_CONF_MAX_LISTENPORTS 40 - -/** - * uIP buffer size. - * - * \hideinitializer - */ -#define UIP_CONF_BUFFER_SIZE 1480 - -/** - * CPU byte order. - * - * \hideinitializer - */ -#ifdef __LIT -#define UIP_CONF_BYTE_ORDER UIP_LITTLE_ENDIAN -#else -#define UIP_CONF_BYTE_ORDER UIP_BIG_ENDIAN -#endif - -/** - * Logging on or off - * - * \hideinitializer - */ -#define UIP_CONF_LOGGING 0 - -/** - * UDP support on or off - * - * \hideinitializer - */ -#define UIP_CONF_UDP 0 - -/** - * UDP checksums on or off - * - * \hideinitializer - */ -#define UIP_CONF_UDP_CHECKSUMS 1 - -/** - * uIP statistics on or off - * - * \hideinitializer - */ -#define UIP_CONF_STATISTICS 1 - -/* Here we include the header file for the application(s) we use in - our project. */ -/*#include "smtp.h"*/ -/*#include "hello-world.h"*/ -/*#include "telnetd.h"*/ -#include "webserver.h" -/*#include "dhcpc.h"*/ -/*#include "resolv.h"*/ -/*#include "webclient.h"*/ - -#define CCIF -#define CC_REGISTER_ARG - -#endif /* __UIP_CONF_H__ */ - -/** @} */ -/** @} */ diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/webserver/webserver.h b/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/webserver/webserver.h deleted file mode 100644 index 5267f0587..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/RTOSDemo/webserver/webserver.h +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright (c) 2002, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials provided - * with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: webserver.h,v 1.2 2006/06/11 21:46:38 adam Exp $ - * - */ -#ifndef __WEBSERVER_H__ -#define __WEBSERVER_H__ - -#include "apps/httpd/httpd.h" - -typedef struct httpd_state uip_tcp_appstate_t; -/* UIP_APPCALL: the name of the application function. This function - must return void and take no arguments (i.e., C type "void - appfunc(void)"). */ -#define UIP_APPCALL httpd_appcall - - -#endif /* __WEBSERVER_H__ */ diff --git a/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/ReadMe.txt b/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/ReadMe.txt new file mode 100644 index 000000000..12c70d213 --- /dev/null +++ b/FreeRTOS/Demo/RX600_RX62N-RDK_Renesas/ReadMe.txt @@ -0,0 +1 @@ +The third party uIP TCP/IP stack and the demo project that used to be in this directory was removed in FreeRTOS version V10.4.3 due to security vulnerabilities identified in uIP. In a future version this demo may be replaced by a version which does not use TCP/IP or uses FreeRTOS’s own TCP/IP stack in place of the original third party stack. \ No newline at end of file diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/DefaultSession.hsf b/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/DefaultSession.hsf deleted file mode 100644 index 6de54b590..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/DefaultSession.hsf +++ /dev/null @@ -1,965 +0,0 @@ -[HIMDBVersion] -2.0 -[DATABASE_VERSION] -"2.3" -[SESSION_DETAILS] -"" -[INFORMATION] -"" -[GENERAL_DATA] -"FIRST_CONNECTION_TAG" "NO" -"MRULABELS_DATAMANAGER_KEY" "FFFFFFFF|00000000|fff83a05|103c|1710|14cc" -"RESET_CPU_AFTER_DOWNLOAD_TAG" "VARIANT_TRUE_STORE_TAG" -"{0AF60212-1285-4767-AB8A-73DB62CC8DBD}R_ECXOS_0ECXOS_OBJECT01" " " -"{0AF60212-1285-4767-AB8A-73DB62CC8DBD}R_ECXOS_0ECXOS_OBJECT02" " " -"{0AF60212-1285-4767-AB8A-73DB62CC8DBD}R_ECXOS_0ECXOS_OBJECT03" " " -"{0AF60212-1285-4767-AB8A-73DB62CC8DBD}R_ECXOS_0ECXOS_OBJECT04" " " -"{0AF60212-1285-4767-AB8A-73DB62CC8DBD}R_ECXOS_0ECXOS_OBJECT05" " " -"{0AF60212-1285-4767-AB8A-73DB62CC8DBD}R_ECXOS_0ECXOS_OBJECT06" " " -"{0AF60212-1285-4767-AB8A-73DB62CC8DBD}R_ECXOS_0ECXOS_OBJECT07" " " -"{0AF60212-1285-4767-AB8A-73DB62CC8DBD}R_ECXOS_0ECXOS_OBJECT08" " " -"{0AF60212-1285-4767-AB8A-73DB62CC8DBD}R_ECXOS_0ECXOS_OBJECT09" " " -"{0AF60212-1285-4767-AB8A-73DB62CC8DBD}R_ECXOS_0ECXOS_OBJECT10" " " -"{0AF60212-1285-4767-AB8A-73DB62CC8DBD}R_ECXOS_0ECXOS_OBJECT_DEFINE_FILE" "" -"{0AF60212-1285-4767-AB8A-73DB62CC8DBD}R_ECXOS_0ECXOS_OBJECT_DEFINE_SELETCT" "1" -"{0AF60212-1285-4767-AB8A-73DB62CC8DBD}R_ECXOS_0ECXOS_OBJECT_MODIFIED" "1" -"{0AF60212-1285-4767-AB8A-73DB62CC8DBD}R_ECXOS_0ECXOS_OBJECT_NOREAD_OSOBJECT" "0" -"{0AF60212-1285-4767-AB8A-73DB62CC8DBD}R_ECXOS_0ECXOS_OBJECT_SAMPLING_PERIOD" "100" -"{228DB593-0AB2-4EBE-A098-A2CABF094E46}RamMonitorCtrlViews" "0" -"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapCtrlECX_MAP_FIND_SYMBOL_LIST" "" -"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapCtrlViews" "0" -"{2BA6A3EE-6488-11D5-80D4-00C04F68EAD7}ECXLABEL_ADDDLG_ADDR" "" -"{2BA6A3EE-6488-11D5-80D4-00C04F68EAD7}LabelCtrlSymbolFileDir" "" -"{2BA6A3EE-6488-11D5-80D4-00C04F68EAD7}LabelCtrlSymbolFileName" "" -"{2BA6A3EE-6488-11D5-80D4-00C04F68EAD7}LabelCtrlViews" "0" -"{2BA6A3EF-6488-11D5-80D4-00C04F68EAD7}StatusCtrlViews" "0" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlBatchFileName" "" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlBreakpointFlag" "-1 " -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlBreakpointStatus" "-1 " -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlBrowseDirectory" "" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlLogFileName" "" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlSplitterPosition" "242" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlViews" "1" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlWindowProperties" "17" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineWndInstanceKey0" "{WK_00000001_CmdLine}" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}TclTkCtrlLogFileName" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_COMPARE_END_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_COMPARE_START_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_DISPLAY_DEST_ADDRESS" "103c" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_DISPLAY_END_ADDRESS" "FFFFFFFF" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_DISPLAY_START_ADDRESS" "00000000" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_FILL_END_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_FILL_START_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_MOVE_END_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_MOVE_START_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_SEARCH_END_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_SEARCH_START_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_SET_DEST_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_TEST_END_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_TEST_START_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryCtrlViews" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0AutoRefreshEnableTopPane" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0AutoRefreshIntervalTopPane" "100" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0DataLength" "4" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0DispAddressTopPane" "5904" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0DispCode" "42208" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0DispColumnCount" "4" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0IsDispCode" "1" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0IsDispFloat" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0IsDispLabel" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0IsDispRegister" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0IsRegFollowEnableTopPane" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0LabelWidth" "96" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0Radix" "16" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0RegFollowRegTblIDTopPane" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0RegisterWidth" "96" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0ScrollEndAddress" "-1" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0ScrollStartAddress" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0StartUpSymbolTopPane" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewAInstanceKey0" "{WK_00000001_MEMORY}RTOSDemoDefaultSession" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0AutoRefreshEnableTopPane" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0AutoRefreshIntervalTopPane" "100" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0DataLength" "4" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0DispAddressTopPane" "5324" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0DispCode" "42208" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0DispColumnCount" "4" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0IsDispCode" "1" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0IsDispFloat" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0IsDispLabel" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0IsDispRegister" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0IsRegFollowEnableTopPane" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0LabelWidth" "96" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0Radix" "16" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0RegFollowRegTblIDTopPane" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0RegisterWidth" "96" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0ScrollEndAddress" "-1" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0ScrollStartAddress" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0StartUpSymbolTopPane" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewBInstanceKey0" "{WK_00000001_MEMORY}RTOSDemoDefaultSessionViewB" -"{4F025ABC-BE66-4CB6-9CEE-06C61418278E}Trace2CtrlSaveFileDir" "" -"{4F025ABC-BE66-4CB6-9CEE-06C61418278E}Trace2CtrlSaveFileName" "" -"{4F025ABC-BE66-4CB6-9CEE-06C61418278E}Trace2CtrlViews" "0" -"{5F75FDA0-6FF0-11D5-B7CE-00E029352378}PACtrlSaveFileDir" "" -"{5F75FDA0-6FF0-11D5-B7CE-00E029352378}PACtrlSaveFileName" "" -"{5F75FDA0-6FF0-11D5-B7CE-00E029352378}PACtrlViews" "0" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_EVAL_DENORMAL_MODE" "16777216" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_EVAL_ROUND_MODE" "768" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_0" "0000000000001AC8" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_1" "000000000000106C" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_10" "0000000000001AE0" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_11" "0000000063656843" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_12" "000000000000006B" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_13" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_14" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_15" "0000000000000002" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_16" "0000000000001AC8" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_17" "000000000000FF9C" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_18" "0000000004020001" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_19" "00000000FFF80178" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_2" "0000000000001A80" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_20" "00000000FFF868F0" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_21" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_22" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_23" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_24" "0000000000001000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_25" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_3" "0000000000001064" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_4" "0000000000000001" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_5" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_6" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_7" "0000000000001A80" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_8" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_9" "0000000000000004" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_COUNT" "26" -"{6C4D5B81-FD67-46A9-A089-EA44DCDE47FD}RAMMonitorManagerCtrlBlockInfoFileDir" "" -"{6C4D5B81-FD67-46A9-A089-EA44DCDE47FD}RAMMonitorManagerCtrlBlockInfoFileName" "" -"{7943C44E-7D44-422A-9140-4CF55C88F7D3}DifferenceCtrlViews" "0" -"{855C64C3-E49C-4450-9BCA-C9822566D214}OSObjectCtrlViews" "0" -"{8A898260-6F1D-11D5-8EB6-00004CC34E9D}ECX_WAVE" "00000000,00000000,0,0" -"{8A898260-6F1D-11D5-8EB6-00004CC34E9D}ECX_WAVE_ADDRESS_NAME" "" -"{8A898260-6F1D-11D5-8EB6-00004CC34E9D}ECX_WAVE_COMB_ADDRESS" ",,,," -"{8A898260-6F1D-11D5-8EB6-00004CC34E9D}ECX_WAVE_COMB_BUFFER" ",,,," -"{8A898260-6F1D-11D5-8EB6-00004CC34E9D}ECX_WAVE_SAMPLING_RATE" "1000" -"{8A898260-6F1D-11D5-8EB6-00004CC34E9D}WaveformCtrlViews" "0" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersCtrlViews" "1" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWnd0ColumnWidth" "47,153,35" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWnd0ECX_REGISTER_COUNT" "33" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWnd0ECX_REGISTER_DISPLAYED" "1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWnd0HideFLAGs" "0" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWnd0HideRadix" "0" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWnd0LastFileName" "" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWnd0RadixList" "16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,2,16,16,16,16,16,16,16," -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndInstanceKey0" "{WK_00000001_REGISTERS}RTOSDemoDefaultSession" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndViewB0ColumnWidth" "47,153,35" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndViewB0ECX_REGISTER_COUNT" "33" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndViewB0ECX_REGISTER_DISPLAYED" "1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndViewB0HideFLAGs" "0" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndViewB0HideRadix" "0" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndViewB0LastFileName" "" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndViewB0RadixList" "16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,2,16,16,16,16,16,16,16," -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndViewBInstanceKey0" "{WK_00000001_REGISTERS}RTOSDemoDefaultSessionViewB" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_ADDRESS_NAME" "" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_BUFFER" "00000000,00000000,0,0" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_COLOR" "0,0,0,0" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_COMB_ADDRESS" ",,,," -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_COMB_PALETTE" ",,,," -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_PALETTE_NAME" "" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_REDRAW_CONTINUOUSLY" "0,2" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_SAMPLEING_RATE" "1000" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_VIEW" "0,0,0,0,0,0" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ImageCtrlViews" "0" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchCtrlViews" "4" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ColWidth0" "255" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ColWidth1" "150" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ColWidth12" "200" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ColWidth2" "120" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ColWidth3" "200" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0000" "ulRegTest2CycleCount, 2, 0, P, Col, Hex, MN" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0000_SCOPE" "Current Scope," -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0001" "ulRegTest1CycleCount, 2, 0, P, Col, Hex, MN" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0001_SCOPE" "Current Scope," -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0002" "ulIdleLoopCount, 2, 0, P, Col, Hex, MN" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0002_SCOPE" "Current Scope," -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0003" "xEnd, 10, 0, P, Col, Hex, N" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0003_SCOPE" "Current Scope," -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0004" "pxNewBlockLink, 10, 0, P, Col, Hex, N" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0004_SCOPE" "Current Scope," -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEMCnt" "3" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd1ColWidth0" "120" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd1ColWidth1" "150" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd1ColWidth12" "200" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd1ColWidth2" "120" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd1ColWidth3" "200" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd1ECX_WATCH_ITEMCnt" "0" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd2ColWidth0" "120" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd2ColWidth1" "150" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd2ColWidth12" "200" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd2ColWidth2" "120" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd2ColWidth3" "200" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd2ECX_WATCH_ITEMCnt" "0" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd3ColWidth0" "120" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd3ColWidth1" "150" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd3ColWidth12" "200" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd3ColWidth2" "120" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd3ColWidth3" "200" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd3ECX_WATCH_ITEMCnt" "0" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWndInitial_Radix" "0" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWndInstanceKey0" "{WK_00000001_WATCH}RTOSDemoDefaultSession" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWndRecentFile_WatchRecord" "" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWndRecentFile_WatchSave" "" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWndUpdate_Interval" "100" -"{B39CE26B-928D-4241-BF8F-E15980C81200}DebugConsoleCtrlDCEnable" "1" -"{B39CE26B-928D-4241-BF8F-E15980C81200}DebugConsoleCtrlLocalEchoEnable" "1" -"{B39CE26B-928D-4241-BF8F-E15980C81200}DebugConsoleCtrlLogFileName" "" -"{B39CE26B-928D-4241-BF8F-E15980C81200}DebugConsoleCtrlPortBaudIndex" "0" -"{B39CE26B-928D-4241-BF8F-E15980C81200}DebugConsoleCtrlPortName" "" -"{B39CE26B-928D-4241-BF8F-E15980C81200}DebugConsoleCtrlSendDataTimeout" "50" -"{B39CE26B-928D-4241-BF8F-E15980C81200}DebugConsoleCtrlViews" "1" -"{B39CE26B-928D-4241-BF8F-E15980C81200}DebugConsoleWndInstanceKey0" "{WK_00000001_DEBUGCONSOLE}" -"{B6AE2E1F-5221-4A44-91C2-8C3097B41A69}StartStopCheckAfter" "0" -"{B6AE2E1F-5221-4A44-91C2-8C3097B41A69}StartStopCheckBefore" "0" -"{B6AE2E1F-5221-4A44-91C2-8C3097B41A69}StartStopExpAfter" "" -"{B6AE2E1F-5221-4A44-91C2-8C3097B41A69}StartStopExpBefore" "" -"{B6AE2E1F-5221-4A44-91C2-8C3097B41A69}T_SESSION_IS_SAVED" "YES" -"{CBEBB610-1516-11D4-8F2D-00409545B67B}ElfDwarf2Objects" "1" -"{CBEBB610-1516-11D4-8F2D-00409545B67B}LoadModule0OBJ_ELFDWARF2_ARRAY_EXPAND_LIMIT" "-1" -"{CBEBB610-1516-11D4-8F2D-00409545B67B}LoadModule0OBJ_ELFDWARF2_STATIC_MEM_EXPAND" "1" -"{EEDC9300-6FBE-11D5-8613-00A024591A38}LocalsCtrlViews" "0" -"{EEDC9301-6FBE-11D5-8613-00A024591A38}StackTraceCtrlViews" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOCtrlIOFile" "" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOCtrlSaveFileDir" "C:\temp" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOCtrlSaveFileName" "GCC io.txt" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOCtrlViews" "1" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOSelection IOWnd0" "" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0ColWidth0" "200" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0ColWidth1" "100" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0ColWidth2" "100" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0ColWidth3" "100" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp0" "1" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp1" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp10" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp100" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp101" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp102" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp103" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp104" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp105" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp106" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp107" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp108" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp109" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp11" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp110" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp111" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp112" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp113" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp114" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp115" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp116" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp117" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp118" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp119" "1" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp12" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp120" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp121" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp122" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp123" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp124" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp125" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp126" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp127" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp128" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp129" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp13" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp130" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp131" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp132" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp133" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp134" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp135" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp136" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp137" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp138" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp139" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp14" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp140" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp141" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp142" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp143" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp144" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp145" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp146" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp147" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp148" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp149" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp15" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp150" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp151" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp152" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp153" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp154" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp155" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp156" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp157" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp158" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp159" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp16" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp160" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp161" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp162" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp163" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp164" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp165" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp166" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp167" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp168" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp169" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp17" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp170" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp171" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp172" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp173" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp174" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp175" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp176" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp177" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp178" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp179" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp18" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp180" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp181" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp182" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp183" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp184" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp185" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp186" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp187" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp188" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp189" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp19" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp190" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp191" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp192" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp193" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp194" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp195" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp196" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp197" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp198" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp199" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp2" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp20" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp200" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp201" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp202" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp203" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp204" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp205" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp206" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp207" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp208" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp209" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp21" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp210" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp211" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp212" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp213" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp214" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp215" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp216" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp217" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp218" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp219" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp22" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp220" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp221" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp222" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp223" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp224" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp225" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp226" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp227" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp228" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp229" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp23" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp230" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp231" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp232" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp233" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp234" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp235" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp236" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp237" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp238" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp239" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp24" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp240" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp241" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp242" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp243" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp244" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp245" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp246" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp247" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp248" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp249" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp25" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp250" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp251" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp252" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp253" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp254" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp255" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp256" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp257" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp258" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp259" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp26" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp260" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp261" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp262" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp263" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp264" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp265" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp266" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp267" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp268" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp269" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp27" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp270" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp271" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp272" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp273" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp274" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp275" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp276" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp277" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp278" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp279" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp28" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp280" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp281" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp282" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp283" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp284" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp285" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp286" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp287" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp288" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp289" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp29" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp290" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp291" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp292" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp293" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp294" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp295" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp296" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp297" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp298" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp299" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp3" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp30" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp300" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp301" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp302" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp303" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp304" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp305" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp306" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp307" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp308" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp309" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp31" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp310" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp311" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp312" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp313" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp314" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp315" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp316" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp317" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp318" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp319" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp32" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp320" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp321" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp322" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp323" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp324" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp325" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp326" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp327" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp328" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp329" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp33" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp330" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp331" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp332" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp333" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp334" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp335" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp336" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp337" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp338" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp339" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp34" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp340" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp341" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp342" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp343" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp344" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp345" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp346" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp347" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp348" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp349" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp35" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp350" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp351" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp352" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp353" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp354" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp355" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp356" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp357" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp358" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp359" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp36" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp360" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp361" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp362" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp363" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp364" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp365" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp366" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp367" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp368" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp369" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp37" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp370" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp371" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp372" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp373" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp374" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp375" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp376" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp377" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp378" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp379" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp38" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp380" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp381" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp382" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp383" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp384" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp385" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp386" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp387" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp388" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp389" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp39" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp390" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp391" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp392" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp393" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp394" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp395" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp396" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp397" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp398" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp399" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp4" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp40" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp400" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp401" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp402" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp403" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp404" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp405" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp406" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp407" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp408" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp409" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp41" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp410" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp411" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp412" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp413" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp414" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp415" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp416" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp417" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp418" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp419" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp42" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp420" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp421" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp422" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp423" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp424" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp425" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp426" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp427" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp428" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp429" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp43" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp430" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp431" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp432" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp433" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp434" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp435" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp436" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp437" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp438" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp439" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp44" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp440" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp441" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp442" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp443" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp444" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp445" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp446" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp447" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp448" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp449" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp45" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp450" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp451" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp452" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp453" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp454" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp455" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp456" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp457" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp458" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp459" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp46" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp460" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp461" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp462" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp463" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp464" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp465" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp466" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp467" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp468" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp469" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp47" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp470" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp471" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp472" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp473" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp474" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp475" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp476" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp477" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp478" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp479" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp48" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp480" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp481" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp482" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp483" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp484" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp485" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp486" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp487" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp488" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp489" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp49" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp490" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp491" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp492" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp493" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp494" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp495" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp496" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp497" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp498" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp499" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp5" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp50" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp500" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp501" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp502" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp503" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp504" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp505" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp506" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp507" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp508" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp509" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp51" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp510" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp511" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp512" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp513" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp514" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp515" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp516" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp517" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp518" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp519" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp52" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp520" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp521" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp522" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp523" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp524" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp525" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp526" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp527" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp528" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp529" "1" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp53" "1" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp530" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp531" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp532" "1" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp533" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp534" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp535" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp536" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp537" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp538" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp539" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp54" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp540" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp541" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp542" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp543" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp544" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp545" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp546" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp547" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp548" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp549" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp55" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp550" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp551" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp552" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp553" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp554" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp555" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp556" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp557" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp558" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp559" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp56" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp560" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp561" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp562" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp563" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp564" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp565" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp566" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp567" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp568" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp569" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp57" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp570" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp571" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp572" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp573" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp574" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp575" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp576" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp577" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp578" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp579" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp58" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp580" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp581" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp582" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp583" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp584" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp585" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp586" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp587" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp588" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp589" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp59" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp590" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp591" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp592" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp593" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp594" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp595" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp596" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp597" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp598" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp599" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp6" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp60" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp600" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp601" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp61" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp62" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp63" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp64" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp65" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp66" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp67" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp68" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp69" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp7" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp70" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp71" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp72" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp73" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp74" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp75" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp76" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp77" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp78" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp79" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp8" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp80" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp81" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp82" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp83" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp84" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp85" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp86" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp87" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp88" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp89" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp9" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp90" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp91" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp92" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp93" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp94" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp95" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp96" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp97" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp98" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp99" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0ScrollHorz" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0ScrollVert" "532" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd1ColWidth0" "200" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd1ColWidth1" "100" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd1ColWidth2" "100" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd1ColWidth3" "100" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd1ScrollHorz" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd1ScrollVert" "0" -"{F923CED3-3318-4B43-B931-0AE76B289176}TaskTraceCtrlAnalyzeViews" "0" -"{F923CED3-3318-4B43-B931-0AE76B289176}TaskTraceCtrlFileSaveDirectory" "" -"{F923CED3-3318-4B43-B931-0AE76B289176}TaskTraceCtrlTraceViews" "0" -[LANGUAGE] -"English" -[CONFIG_INFO_VD1] -1 -[CONFIG_INFO_VD2] -0 -[CONFIG_INFO_VD3] -0 -[CONFIG_INFO_VD4] -0 -[WINDOW_POSITION_STATE_DATA_VD1] -"Help" "TOOLBAR 0" 59419 1 5 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_00000001_CmdLine}" "WINDOW" 59422 0 2 "0.07" 306 0 0 100 100 17 0 "32771|32772|32778|<>|32773|32774|<>" "0.0" -"{WK_00000001_DEBUGCONSOLE}" "WINDOW" 59422 5 0 "1.00" 146 0 0 350 200 17 0 "57634|57637|57633|<>|32781|32782|<>|32780|32785|32787" "0.0" -"{WK_00000001_DISASSEMBLY}" "WINDOW" 0 0 0 "0.00" 0 44 44 816 406 9 0 "" "0.0" -"{WK_00000001_IO}RTOSDemoDefaultSession" "WINDOW" 59422 0 3 "0.49" 306 0 0 350 200 17 0 "32817|32826|32819|32820|32821" "0.0" -"{WK_00000001_MEMORY}RTOSDemoDefaultSession" "WINDOW" 59422 0 0 "0.21" 251 0 0 350 200 17 0 "42202|42203|42204|42233|<>|42206|42205|42230|42229|42207|<>|42208|42209|42210|49076|42228|42227|<>|42231|42232|42234|42235|<>|42211|<>" "0.0" -"{WK_00000001_OUTPUT}" "WINDOW" 59422 0 0 "0.57" 306 560 340 350 200 18 0 "36756|36757|36758|36759|<>|36746|36747|<>|39531|<>|39500|39534|<>|36687" "0.0" -"{WK_00000001_REGISTERS}RTOSDemoDefaultSession" "WINDOW" 59421 0 0 "1.00" 307 0 0 350 200 18 0 "" "0.0" -"{WK_00000001_WATCH}RTOSDemoDefaultSession" "WINDOW" 59422 0 1 "0.43" 306 0 0 853 610 18 0 "32781|32783|<>|32771|32829|32772|32827|32773|<>|32786|<>|32810|32811" "0.0" -"{WK_00000002_WORKSPACE}" "WINDOW" 59420 0 0 "1.00" 342 560 340 350 200 18 0 "" "0.0" -"{WK_TB00000001_STANDARD}" "TOOLBAR 0" 59419 0 2 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000002_EDITOR}" "TOOLBAR 0" 59419 0 0 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000003_BOOKMARKS}" "TOOLBAR 0" 59419 1 1 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000004_TEMPLATES}" "TOOLBAR 0" 59419 1 0 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000005_SEARCH}" "TOOLBAR 0" 59419 0 1 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000007_DEBUG}" "TOOLBAR 0" 59419 2 0 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000008_DEBUGRUN}" "TOOLBAR 0" 59419 2 1 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000009_VERSIONCONTROL}" "TOOLBAR 0" 59419 1 3 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000011_CPU}" "TOOLBAR 0" 59419 2 2 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000012_MAP}" "TOOLBAR 0" 59419 1 4 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000013_SYMBOL}" "TOOLBAR 0" 59419 2 5 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000014_CODE}" "TOOLBAR 0" 59419 2 9 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000015_PERFORMANCE}" "TOOLBAR 0" 59419 2 10 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000016_GRAPHIC}" "TOOLBAR 0" 59419 2 8 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000018_DEFAULTWINDOW}" "TOOLBAR 0" 59419 1 2 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000023_RTOS}" "TOOLBAR 0" 59419 2 11 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000025_HELPSYSTEMTOOL}" "TOOLBAR 0" 59419 2 4 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000026_MACRO}" "TOOLBAR 0" 59419 1 6 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000027_EVENT}" "TOOLBAR 0" 59419 2 7 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000028_RTOSDEBUG}" "TOOLBAR 0" 59419 2 3 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000029_SYSTEMTOOL}" "TOOLBAR 0" 59419 2 6 "0.00" 0 0 0 0 0 17 0 "" "0.0" -[WINDOW_POSITION_STATE_DATA_VD2] -[WINDOW_POSITION_STATE_DATA_VD3] -[WINDOW_POSITION_STATE_DATA_VD4] -[WINDOW_Z_ORDER] -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\GCC\RX600\port_asm.asm" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-MDK_GNURX\RTOSDemo\GNU-Files\start.asm" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-MDK_GNURX\RTOSDemo\main-full.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\GCC\RX600\port.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\tasks.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-MDK_GNURX\RTOSDemo\RegTest.asm" -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\GCC\RX600\portmacro.h" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-MDK_GNURX\RTOSDemo\FreeRTOSConfig.h" -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\MemMang\heap_2.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\list.c" -[TARGET_NAME] -"RX600 E1/E20 SYSTEM" "" 0 -[STATUSBAR_STATEINFO_VD1] -"MasterShowState" 1 -"ApplicationShowState" 1 -"DebuggerShowState" 1 -[STATUSBAR_STATEINFO_VD2] -"MasterShowState" 1 -"ApplicationShowState" 1 -"DebuggerShowState" 1 -[STATUSBAR_STATEINFO_VD3] -"MasterShowState" 1 -"ApplicationShowState" 1 -"DebuggerShowState" 1 -[STATUSBAR_STATEINFO_VD4] -"MasterShowState" 1 -"ApplicationShowState" 1 -"DebuggerShowState" 1 -[STATUSBAR_DEBUGGER_PANESTATE_VD1] -"SBK_TAR_EMUE100|Exception" 1 -"SBK_TAR_EMUE100|BreakCondition" 1 -"SBK_TAR_EMUE100|TaskID" 1 -"SBK_TAR_EMUE100|PC" 1 -"SBK_TAR_EMUE100|ExecutionTime" 1 -[STATUSBAR_DEBUGGER_PANESTATE_VD2] -[STATUSBAR_DEBUGGER_PANESTATE_VD3] -[STATUSBAR_DEBUGGER_PANESTATE_VD4] -[DEBUGGER_OPTIONS] -"" -[DOWNLOAD_MODULES] -"$(CONFIGDIR)\$(PROJECTNAME).x" 0 "Elf/Dwarf2_KPIT" 0 1 1 0 -[CONNECT_ON_GO] -"FALSE" -[DOWNLOAD_MODULES_AFTER_BUILD] -"TRUE" -[REMOVE_BREAKPOINTS_ON_DOWNLOAD] -"FALSE" -[DISABLE_MEMORY_ACCESS_PRIOR_TO_COMMAND_FILE_EXECUTION] -"FALSE" -[LIMIT_DISASSEMBLY_MEMORY_ACCESS] -"FALSE" -[DISABLE_MEMORY_ACCESS_DURING_EXECUTION] -"FALSE" -[DEBUGGER_OPTIONS_PROPERTIES] -"1" -[COMMAND_FILES] -[DEFAULT_DEBUG_FORMAT] -"Elf/Dwarf2_KPIT" -[FLASH_DETAILS] -"" 0 0 "" 0 "" 0 0 "" 0 0 0 0 0 0 0 "" "" "" "" "" -[BREAKPOINTS] -"c:\e\dev\freertos\workingcopy\demo\rx600_rx62n-mdk_gnurx\rtosdemo\main-full.c" 298 -510103 1 "{00000000-0000-0000-C000-000000000046}" "" -"c:\e\dev\freertos\workingcopy\demo\rx600_rx62n-mdk_gnurx\rtosdemo\main-full.c" 581 33414224 1 "{00000000-0000-0000-C000-000000000046}" "" -"c:\e\dev\freertos\workingcopy\demo\rx600_rx62n-mdk_gnurx\rtosdemo\regtest.asm" 144 -524093 1 "{00000000-0000-0000-C000-000000000046}" "" -"c:\e\dev\freertos\workingcopy\demo\rx600_rx62n-mdk_gnurx\rtosdemo\regtest.asm" 222 -523943 1 "{00000000-0000-0000-C000-000000000046}" "" -"c:\e\dev\freertos\workingcopy\source\portable\gcc\rx600\port.c" 255 -511337 1 "{00000000-0000-0000-C000-000000000046}" "" -"" -1 -523932 1 "{110BABEB-6DCB-4265-8236-8888EECAB6AB}" "" -"" -1 -509967 1 "{110BABEB-6DCB-4265-8236-8888EECAB6AB}" "" -[END] diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/DefaultSession.ini b/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/DefaultSession.ini deleted file mode 100644 index 5e7c5edd5..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/DefaultSession.ini +++ /dev/null @@ -1,30 +0,0 @@ -[Init_DeviceSetting] -DebugMode=0 -PowerOut=0 -ResetRelease=0 -EmulatorSerial= -McuGroup=RX62N Group -Device=R5F562N8 -McuFileDir=RX62NGr -SupplyVoltage=-1 -[Init_CommunicationClock] -JtagClock=16.5 -JtagClockValue=10 -[Init_EmulatorSetting] -FirstStartUp=0 -HideNext=0 -ConnectionDlgAutoClose=1 -[CFG_MCU] -PrevDevice=R5F562N8 -ProcessorMode=0 -EXTAL=12.0000 -WorkRam=0x17000 -[CFG_SYSTEM] -CpuReWrite=0 -PerfCounterUser=0 -TraceDebugAs=0 -[CFG_FLASHCLEAR_R5F562N8_00] -BlockCount=54 -BlockData=000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -[Config_Property] -HideNext=0 diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/FreeRTOSConfig.h b/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/FreeRTOSConfig.h deleted file mode 100644 index 9476d0452..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/FreeRTOSConfig.h +++ /dev/null @@ -1,143 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -#ifndef FREERTOS_CONFIG_H -#define FREERTOS_CONFIG_H - -/* Board specifics. */ -#include "rskrx62ndef.h" - -/*----------------------------------------------------------- - * Application specific definitions. - * - * These definitions should be adjusted for your particular hardware and - * application requirements. - * - * THESE PARAMETERS ARE DESCRIBED WITHIN THE 'CONFIGURATION' SECTION OF THE - * FreeRTOS API DOCUMENTATION AVAILABLE ON THE FreeRTOS.org WEB SITE. - * - * See http://www.freertos.org/a00110.html - *----------------------------------------------------------*/ - -#define configUSE_PREEMPTION 1 -#define configUSE_IDLE_HOOK 0 -#define configUSE_TICK_HOOK 0 -#define configCPU_CLOCK_HZ ( ICLK_FREQUENCY ) /* Set in rskrx62ndef.h. */ -#define configPERIPHERAL_CLOCK_HZ ( PCLK_FREQUENCY ) /* Set in rskrx62ndef.h. */ -#define configTICK_RATE_HZ ( ( TickType_t ) 1000 ) -#define configMINIMAL_STACK_SIZE ( ( unsigned short ) 140 ) -#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 45 * 1024 ) ) -#define configMAX_TASK_NAME_LEN ( 12 ) -#define configUSE_TRACE_FACILITY 1 -#define configUSE_16_BIT_TICKS 0 -#define configIDLE_SHOULD_YIELD 1 -#define configUSE_CO_ROUTINES 0 -#define configUSE_MUTEXES 1 -#define configGENERATE_RUN_TIME_STATS 1 -#define configCHECK_FOR_STACK_OVERFLOW 2 -#define configUSE_RECURSIVE_MUTEXES 1 -#define configQUEUE_REGISTRY_SIZE 0 -#define configUSE_MALLOC_FAILED_HOOK 1 -#define configUSE_APPLICATION_TASK_TAG 0 - -#define configMAX_PRIORITIES ( 7 ) -#define configMAX_CO_ROUTINE_PRIORITIES ( 2 ) - -/* Software timer definitions. */ -#define configUSE_TIMERS 1 -#define configTIMER_TASK_PRIORITY ( 3 ) -#define configTIMER_QUEUE_LENGTH 5 -#define configTIMER_TASK_STACK_DEPTH ( configMINIMAL_STACK_SIZE ) - -/* The interrupt priority used by the kernel itself for the tick interrupt and -the pended interrupt. This would normally be the lowest priority. */ -#define configKERNEL_INTERRUPT_PRIORITY 1 - -/* The maximum interrupt priority from which FreeRTOS API calls can be made. -Interrupts that use a priority above this will not be effected by anything the -kernel is doing. */ -#define configMAX_SYSCALL_INTERRUPT_PRIORITY 4 - -/* Set the following definitions to 1 to include the API function, or zero -to exclude the API function. */ - -#define INCLUDE_vTaskPrioritySet 1 -#define INCLUDE_uxTaskPriorityGet 1 -#define INCLUDE_vTaskDelete 1 -#define INCLUDE_vTaskCleanUpResources 0 -#define INCLUDE_vTaskSuspend 1 -#define INCLUDE_vTaskDelayUntil 1 -#define INCLUDE_vTaskDelay 1 -#define INCLUDE_uxTaskGetStackHighWaterMark 1 -#define INCLUDE_xTaskGetSchedulerState 1 -#define INCLUDE_eTaskGetState 1 - -/* This demo makes use of one or more example stats formatting functions. These -format the raw data provided by the uxTaskGetSystemState() function in to human -readable ASCII form. See the notes in the implementation of vTaskList() within -FreeRTOS/Source/tasks.c for limitations. */ -#define configUSE_STATS_FORMATTING_FUNCTIONS 1 - -#define configASSERT( x ) if( ( x ) == 0 ) { taskDISABLE_INTERRUPTS(); for( ;; ); } - -extern volatile unsigned long ulHighFrequencyTickCount; -#define portCONFIGURE_TIMER_FOR_RUN_TIME_STATS() portNOP() /* Run time stats use the same timer as the high frequency timer test. */ -#define portGET_RUN_TIME_COUNTER_VALUE() ulHighFrequencyTickCount - - -/* Override some of the priorities set in the common demo tasks. This is -required to ensure flase positive timing errors are not reported. */ -#define bktPRIMARY_PRIORITY ( configMAX_PRIORITIES - 3 ) -#define bktSECONDARY_PRIORITY ( configMAX_PRIORITIES - 4 ) -#define intqHIGHER_PRIORITY ( configMAX_PRIORITIES - 3 ) - - -/*----------------------------------------------------------- - * Ethernet configuration. - *-----------------------------------------------------------*/ - -/* MAC address configuration. */ -#define configMAC_ADDR0 0x00 -#define configMAC_ADDR1 0x12 -#define configMAC_ADDR2 0x13 -#define configMAC_ADDR3 0x10 -#define configMAC_ADDR4 0x15 -#define configMAC_ADDR5 0x11 - -/* IP address configuration. */ -#define configIP_ADDR0 192 -#define configIP_ADDR1 168 -#define configIP_ADDR2 0 -#define configIP_ADDR3 200 - -/* Netmask configuration. */ -#define configNET_MASK0 255 -#define configNET_MASK1 255 -#define configNET_MASK2 255 -#define configNET_MASK3 0 - -#endif /* FREERTOS_CONFIG_H */ diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/GNU-Files/hwinit.c b/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/GNU-Files/hwinit.c deleted file mode 100644 index b6660aaa0..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/GNU-Files/hwinit.c +++ /dev/null @@ -1,55 +0,0 @@ -/***********************************************************************/ -/* */ -/* FILE :hwinit.c */ -/* DATE :Wed, Aug 25, 2010 */ -/* DESCRIPTION :Hardware Setup file */ -/* CPU TYPE :Other */ -/* */ -/* This file is generated by KPIT GNU Project Generator. */ -/* */ -/***********************************************************************/ - - - -#include "iodefine.h" -#ifdef __cplusplus -extern "C" { -#endif -extern void hw_initialise(void); -#ifdef __cplusplus -} -#endif - -void hw_initialise(void) -{ -/* - SCI.SMR.BYTE = 0; - SCI.SMR.BIT.CA = 1; - SCI.SMR.BIT.CHR = 1; - SCI.SMR.BIT.OE = 1; - SCI.SMR.BIT.STOP = 1; - SCI.SMR.BIT.MP = 1; - SCI.SMR.BIT.CKS = 3; - SCI.BRR = 0; - SCI.SCR.BYTE = 0; - SCI.SCR.BIT.TIE = 1; - SCI.SCR.BIT.RIE = 1; - SCI.SCR.BIT.TE = 1; - SCI.SCR.BIT.RE = 1; - SCI.SCR.BIT.MPIE = 1; - SCI.SCR.BIT.TEIE = 1; - SCI.SCR.BIT.CKE = 3; - SCI.TDR = 0; - SCI.SSR.BYTE = 0; - SCI.SSR.BIT.TDRE = 1; - SCI.SSR.BIT.RDRF = 1; - SCI.SSR.BIT.ORER = 1; - SCI.SSR.BIT.FER = 1; - SCI.SSR.BIT.PER = 1; - SCI.SSR.BIT.TEND = 1; - SCI.SSR.BIT.MPB = 1; - SCI.SSR.BIT.MPBT = 1; - SCI.RDR = 0; - -*/ -} diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/GNU-Files/inthandler.c b/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/GNU-Files/inthandler.c deleted file mode 100644 index 7334d3e9c..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/GNU-Files/inthandler.c +++ /dev/null @@ -1,431 +0,0 @@ -/***********************************************************************/ -/* */ -/* FILE :inthandler.c */ -/* DATE :Wed, Aug 25, 2010 */ -/* DESCRIPTION :Interrupt Handler */ -/* CPU TYPE :Other */ -/* */ -/* This file is generated by KPIT GNU Project Generator. */ -/* */ -/***********************************************************************/ - - - - -#include "inthandler.h" - -// Exception(Supervisor Instruction) -void INT_Excep_SuperVisorInst(void){/* brk(); */} - -// Exception(Undefined Instruction) -void INT_Excep_UndefinedInst(void){ __asm volatile ("brk"); } - -// Exception(Floating Point) -void INT_Excep_FloatingPoint(void){/* brk(); */} - -// NMI -void INT_NonMaskableInterrupt(void){/* brk(); */} - -// Dummy -void Dummy(void){/* brk(); */} - -// BRK -void INT_Excep_BRK(void){ /*wait(); */} - -// BUSERR -void INT_Excep_BUSERR(void){ } - -// FCU_FCUERR -void INT_Excep_FCU_FCUERR(void){ } - -// FCU_FRDYI -void INT_Excep_FCU_FRDYI(void){ } - -// CMTU0_CMT0 - (RB) NOTE This has been replaced in the vector table with vTickISR(). -void INT_Excep_CMTU0_CMT0(void){ } - -// CMTU0_CMT1 -void INT_Excep_CMTU0_CMT1(void){ } - -// CMTU1_CMT2 -void INT_Excep_CMTU1_CMT2(void){ } - -// CMTU1_CMT3 -void INT_Excep_CMTU1_CMT3(void){ } - -// IRQ0 -void INT_Excep_IRQ0(void){ } - -// IRQ1 -void INT_Excep_IRQ1(void){ } - -// IRQ2 -void INT_Excep_IRQ2(void){ } - -// IRQ3 -void INT_Excep_IRQ3(void){ } - -// IRQ4 -void INT_Excep_IRQ4(void){ } - -// IRQ5 -void INT_Excep_IRQ5(void){ } - -// IRQ6 -void INT_Excep_IRQ6(void){ } - -// IRQ7 -void INT_Excep_IRQ7(void){ } - -// IRQ8 -void INT_Excep_IRQ8(void){ } - -// IRQ9 -void INT_Excep_IRQ9(void){ } - -// IRQ10 -void INT_Excep_IRQ10(void){ } - -// IRQ11 -void INT_Excep_IRQ11(void){ } - -// IRQ12 -void INT_Excep_IRQ12(void){ } - -// IRQ13 -void INT_Excep_IRQ13(void){ } - -// IRQ14 -void INT_Excep_IRQ14(void){ } - -// IRQ15 -void INT_Excep_IRQ15(void){ } - -// WDT_WOVI -void INT_Excep_WDT_WOVI(void){ } - -// AD0_ADI0 -void INT_Excep_AD0_ADI0(void){ } - -// AD1_ADI1 -void INT_Excep_AD1_ADI1(void){ } - -// AD2_ADI2 -void INT_Excep_AD2_ADI2(void){ } - -// AD3_ADI3 -void INT_Excep_AD3_ADI3(void){ } - -// TPU0_TGI0A -void INT_Excep_TPU0_TGI0A(void){ } - -// TPU0_TGI0B -void INT_Excep_TPU0_TGI0B(void){ } - -// TPU0_TGI0C -void INT_Excep_TPU0_TGI0C(void){ } - -// TPU0_TGI0D -void INT_Excep_TPU0_TGI0D(void){ } - -// TPU0_TCI0V -void INT_Excep_TPU0_TCI0V(void){ } - -// TPU1_TGI1A -void INT_Excep_TPU1_TGI1A(void){ } - -// TPU1_TGI1B -void INT_Excep_TPU1_TGI1B(void){ } - -// TPU1_TCI1V -void INT_Excep_TPU1_TCI1V(void){ } - -// TPU1_TCI1U -void INT_Excep_TPU1_TCI1U(void){ } - -// TPU2_TGI2A -void INT_Excep_TPU2_TGI2A(void){ } - -// TPU2_TGI2B -void INT_Excep_TPU2_TGI2B(void){ } - -// TPU2_TCI2V -void INT_Excep_TPU2_TCI2V(void){ } - -// TPU2_TCI2U -void INT_Excep_TPU2_TCI2U(void){ } - -// TPU3_TGI3A -void INT_Excep_TPU3_TGI3A(void){ } - -// TPU3_TGI3B -void INT_Excep_TPU3_TGI3B(void){ } - -// TPU3_TGI3C -void INT_Excep_TPU3_TGI3C(void){ } - -// TPU3_TGI3D -void INT_Excep_TPU3_TGI3D(void){ } - -// TPU3_TCI3V -void INT_Excep_TPU3_TCI3V(void){ } - -// TPU4_TGI4A -void INT_Excep_TPU4_TGI4A(void){ } - -// TPU4_TGI4B -void INT_Excep_TPU4_TGI4B(void){ } - -// TPU4_TCI4V -void INT_Excep_TPU4_TCI4V(void){ } - -// TPU4_TCI4U -void INT_Excep_TPU4_TCI4U(void){ } - -// TPU5_TGI5A -void INT_Excep_TPU5_TGI5A(void){ } - -// TPU5_TGI5B -void INT_Excep_TPU5_TGI5B(void){ } - -// TPU5_TCI5V -void INT_Excep_TPU5_TCI5V(void){ } - -// TPU5_TCI5U -void INT_Excep_TPU5_TCI5U(void){ } - -// TPU6_TGI6A -void INT_Excep_TPU6_TGI6A(void){ } - -// TPU6_TGI6B -void INT_Excep_TPU6_TGI6B(void){ } - -// TPU6_TGI6C -void INT_Excep_TPU6_TGI6C(void){ } - -// TPU6_TGI6D -void INT_Excep_TPU6_TGI6D(void){ } - -// TPU6_TCI6V -void INT_Excep_TPU6_TCI6V(void){ } - -// TPU7_TGI7A -void INT_Excep_TPU7_TGI7A(void){ } - -// TPU7_TGI7B -void INT_Excep_TPU7_TGI7B(void){ } - -// TPU7_TCI7V -void INT_Excep_TPU7_TCI7V(void){ } - -// TPU7_TCI7U -void INT_Excep_TPU7_TCI7U(void){ } - -// TPU8_TGI8A -void INT_Excep_TPU8_TGI8A(void){ } - -// TPU8_TGI8B -void INT_Excep_TPU8_TGI8B(void){ } - -// TPU8_TCI8V -void INT_Excep_TPU8_TCI8V(void){ } - -// TPU8_TCI8U -void INT_Excep_TPU8_TCI8U(void){ } - -// TPU9_TGI9A -void INT_Excep_TPU9_TGI9A(void){ } - -// TPU9_TGI9B -void INT_Excep_TPU9_TGI9B(void){ } - -// TPU9_TGI9C -void INT_Excep_TPU9_TGI9C(void){ } - -// TPU9_TGI9D -void INT_Excep_TPU9_TGI9D(void){ } - -// TPU9_TCI9V -void INT_Excep_TPU9_TCI9V(void){ } - -// TPU10_TGI10A -void INT_Excep_TPU10_TGI10A(void){ } - -// TPU10_TGI10B -void INT_Excep_TPU10_TGI10B(void){ } - -// TPU10_TCI10V -void INT_Excep_TPU10_TCI10V(void){ } - -// TPU10_TCI10U -void INT_Excep_TPU10_TCI10U(void){ } - -// TPU11_TGI11A -void INT_Excep_TPU11_TGI11A(void){ } - -// TPU11_TGI11B -void INT_Excep_TPU11_TGI11B(void){ } - -// TPU11_TCI11V -void INT_Excep_TPU11_TCI11V(void){ } - -// TPU11_TCI11U -void INT_Excep_TPU11_TCI11U(void){ } - -// TMR0_CMI0A -void INT_Excep_TMR0_CMI0A(void){ } - -// TMR0_CMI0B -void INT_Excep_TMR0_CMI0B(void){ } - -// TMR0_OV0I -void INT_Excep_TMR0_OV0I(void){ } - -// TMR1_CMI1A -void INT_Excep_TMR1_CMI1A(void){ } - -// TMR1_CMI1B -void INT_Excep_TMR1_CMI1B(void){ } - -// TMR1_OV1I -void INT_Excep_TMR1_OV1I(void){ } - -// TMR2_CMI2A -void INT_Excep_TMR2_CMI2A(void){ } - -// TMR2_CMI2B -void INT_Excep_TMR2_CMI2B(void){ } - -// TMR2_OV2I -void INT_Excep_TMR2_OV2I(void){ } - -// TMR3_CMI3A -void INT_Excep_TMR3_CMI3A(void){ } - -// TMR3_CMI3B -void INT_Excep_TMR3_CMI3B(void){ } - -// TMR3_OV3I -void INT_Excep_TMR3_OV3I(void){ } - -// DMAC_DMTEND0 -void INT_Excep_DMAC_DMTEND0(void){ } - -// DMAC_DMTEND1 -void INT_Excep_DMAC_DMTEND1(void){ } - -// DMAC_DMTEND2 -void INT_Excep_DMAC_DMTEND2(void){ } - -// DMAC_DMTEND3 -void INT_Excep_DMAC_DMTEND3(void){ } - -// SCI0_ERI0 -void INT_Excep_SCI0_ERI0(void){ } - -// SCI0_RXI0 -void INT_Excep_SCI0_RXI0(void){ } - -// SCI0_TXI0 -void INT_Excep_SCI0_TXI0(void){ } - -// SCI0_TEI0 -void INT_Excep_SCI0_TEI0(void){ } - -// SCI1_ERI1 -void INT_Excep_SCI1_ERI1(void){ } - -// SCI1_RXI1 -void INT_Excep_SCI1_RXI1(void){ } - -// SCI1_TXI1 -void INT_Excep_SCI1_TXI1(void){ } - -// SCI1_TEI1 -void INT_Excep_SCI1_TEI1(void){ } - -// SCI2_ERI2 -void INT_Excep_SCI2_ERI2(void){ } - -// SCI2_RXI2 -void INT_Excep_SCI2_RXI2(void){ } - -// SCI2_TXI2 -void INT_Excep_SCI2_TXI2(void){ } - -// SCI2_TEI2 -void INT_Excep_SCI2_TEI2(void){ } - -// SCI3_ERI3 -void INT_Excep_SCI3_ERI3(void){ } - -// SCI3_RXI3 -void INT_Excep_SCI3_RXI3(void){ } - -// SCI3_TXI3 -void INT_Excep_SCI3_TXI3(void){ } - -// SCI3_TEI3 -void INT_Excep_SCI3_TEI3(void){ } - -// SCI4_ERI4 -void INT_Excep_SCI4_ERI4(void){ } - -// SCI4_RXI4 -void INT_Excep_SCI4_RXI4(void){ } - -// SCI4_TXI4 -void INT_Excep_SCI4_TXI4(void){ } - -// SCI4_TEI4 -void INT_Excep_SCI4_TEI4(void){ } - -// SCI5_ERI5 -void INT_Excep_SCI5_ERI5(void){ } - -// SCI5_RXI5 -void INT_Excep_SCI5_RXI5(void){ } - -// SCI5_TXI5 -void INT_Excep_SCI5_TXI5(void){ } - -// SCI5_TEI5 -void INT_Excep_SCI5_TEI5(void){ } - -// SCI6_ERI6 -void INT_Excep_SCI6_ERI6(void){ } - -// SCI6_RXI6 -void INT_Excep_SCI6_RXI6(void){ } - -// SCI6_TXI6 -void INT_Excep_SCI6_TXI6(void){ } - -// SCI6_TEI6 -void INT_Excep_SCI6_TEI6(void){ } - -// RIIC0_EEI0 -void INT_Excep_RIIC0_EEI0(void){ } - -// RIIC0_RXI0 -void INT_Excep_RIIC0_RXI0(void){ } - -// RIIC0_TXI0 -void INT_Excep_RIIC0_TXI0(void){ } - -// RIIC0_TEI0 -void INT_Excep_RIIC0_TEI0(void){ } - -// RIIC1_EEI1 -void INT_Excep_RIIC1_EEI1(void){ } - -// RIIC1_RXI1 -void INT_Excep_RIIC1_RXI1(void){ } - -// RIIC1_TXI1 -void INT_Excep_RIIC1_TXI1(void){ } - -// RIIC1_TEI1 -void INT_Excep_RIIC1_TEI1(void){ } - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/GNU-Files/start.asm b/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/GNU-Files/start.asm deleted file mode 100644 index 677b81f41..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/GNU-Files/start.asm +++ /dev/null @@ -1,94 +0,0 @@ -/*------------------------------------------------------------------------ - | - FILE : start.asm | - DATE : Wed, Aug 25, 2010 | - DESCRIPTION : Reset Program | - CPU TYPE : Other | - | - This file is generated by KPIT GNU Project Generator (Ver.4.5). | - | -------------------------------------------------------------------------*/ - - - - /*Start.asm*/ - - .list - .section .text - .global _start /*global Start routine */ - -#ifdef CPPAPP -___dso_handle: - .global ___dso_handle -#endif - - .extern _hw_initialise /*external Sub-routine to initialise Hardware*/ - .extern _data - .extern _mdata - .extern _ebss - .extern _bss - .extern _edata - .extern _main - .extern _ustack - .extern _istack - .extern _rvectors -#if DEBUG - .extern _exit -#endif - - -_start: -/* initialise user stack pointer */ - mvtc #_ustack,USP - -/* initialise interrupt stack pointer */ - mvtc #_istack,ISP - -/* setup intb */ - mvtc #_rvectors_start, intb /* INTERRUPT VECTOR ADDRESS definition */ - -/* setup FPSW */ - mvtc #100h, fpsw - -/* load data section from ROM to RAM */ - - mov #_mdata,r2 /* src ROM address of data section in R2 */ - mov #_data,r1 /* dest start RAM address of data section in R1 */ - mov #_edata,r3 /* end RAM address of data section in R3 */ - sub r1,r3 /* size of data section in R3 (R3=R3-R1) */ - smovf /* block copy R3 bytes from R2 to R1 */ - -/* bss initialisation : zero out bss */ - - mov #00h,r2 /* load R2 reg with zero */ - mov #_ebss, r3 /* store the end address of bss in R3 */ - mov #_bss, r1 /* store the start address of bss in R1 */ - sub r1,r3 /* size of bss section in R3 (R3=R3-R1) */ - sstr.b - -/* call the hardware initialiser */ - bsr.a _hw_initialise - nop - -/* setup PSW */ -// mvtc #10000h, psw /* Set Ubit & Ibit for PSW */ - -/* change PSW PM to user-mode */ -// MVFC PSW,R1 -// OR #00100000h,R1 -// PUSH.L R1 -// MVFC PC,R1 -// ADD #10,R1 -// PUSH.L R1 -// RTE -// NOP -// NOP - -/* start user program */ - bsr.a _main - -/* call to exit*/ -_exit: - bsr.a _exit - - .end diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/HighFrequencyTimerTest.c b/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/HighFrequencyTimerTest.c deleted file mode 100644 index af3cf2511..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/HighFrequencyTimerTest.c +++ /dev/null @@ -1,146 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* - * High frequency timer test as described in main.c. - */ - -/* Scheduler includes. */ -#include "FreeRTOS.h" - -/* Hardware specifics. */ -#include "iodefine.h" - -/* The set frequency of the interrupt. Deviations from this are measured as -the jitter. */ -#define timerINTERRUPT_FREQUENCY ( 20000UL ) - -/* The expected time between each of the timer interrupts - if the jitter was -zero. */ -#define timerEXPECTED_DIFFERENCE_VALUE ( ( unsigned short ) ( ( configPERIPHERAL_CLOCK_HZ / 8UL ) / timerINTERRUPT_FREQUENCY ) ) - -/* The highest available interrupt priority. */ -#define timerHIGHEST_PRIORITY ( 15 ) - -/* Misc defines. */ -#define timerTIMER_3_COUNT_VALUE ( *( ( unsigned short * ) 0x8801a ) ) /*( CMT3.CMCNT )*/ - -/*-----------------------------------------------------------*/ - -/* Interrupt handler in which the jitter is measured. */ -void vTimer2_ISR_Handler( void ) __attribute__((interrupt)); - -/* Stores the value of the maximum recorded jitter between interrupts. This is -displayed on one of the served web pages. */ -volatile unsigned short usMaxJitter = 0; - -/* Counts the number of high frequency interrupts - used to generate the run -time stats. */ -volatile unsigned long ulHighFrequencyTickCount = 0UL; - -/*-----------------------------------------------------------*/ - -void vSetupHighFrequencyTimer( void ) -{ - /* Timer CMT2 is used to generate the interrupts, and CMT3 is used - to measure the jitter. */ - - /* Enable compare match timer 2 and 3. */ - MSTP( CMT2 ) = 0; - MSTP( CMT3 ) = 0; - - /* Interrupt on compare match. */ - CMT2.CMCR.BIT.CMIE = 1; - - /* Set the compare match value. */ - CMT2.CMCOR = ( unsigned short ) ( ( ( configPERIPHERAL_CLOCK_HZ / timerINTERRUPT_FREQUENCY ) -1 ) / 8 ); - - /* Divide the PCLK by 8. */ - CMT2.CMCR.BIT.CKS = 0; - CMT3.CMCR.BIT.CKS = 0; - - /* Enable the interrupt... */ - _IEN( _CMT2_CMI2 ) = 1; - - /* ...and set its priority to the maximum possible, this is above the priority - set by configMAX_SYSCALL_INTERRUPT_PRIORITY so will nest. */ - _IPR( _CMT2_CMI2 ) = timerHIGHEST_PRIORITY; - - /* Start the timers. */ - CMT.CMSTR1.BIT.STR2 = 1; - CMT.CMSTR1.BIT.STR3 = 1; -} -/*-----------------------------------------------------------*/ - -void vTimer2_ISR_Handler( void ) -{ -volatile unsigned short usCurrentCount; -static unsigned short usMaxCount = 0; -static unsigned long ulErrorCount = 0UL; - - /* This is the highest priority interrupt in the system, so there is no - advantage to re-enabling interrupts here. - - We use the timer 1 counter value to measure the clock cycles between - the timer 0 interrupts. First stop the clock. */ - CMT.CMSTR1.BIT.STR3 = 0; - portNOP(); - portNOP(); - usCurrentCount = timerTIMER_3_COUNT_VALUE; - - /* Is this the largest count we have measured yet? */ - if( usCurrentCount > usMaxCount ) - { - if( usCurrentCount > timerEXPECTED_DIFFERENCE_VALUE ) - { - usMaxJitter = usCurrentCount - timerEXPECTED_DIFFERENCE_VALUE; - } - else - { - /* This should not happen! */ - ulErrorCount++; - } - - usMaxCount = usCurrentCount; - } - - /* Used to generate the run time stats. */ - ulHighFrequencyTickCount++; - - /* Clear the timer. */ - timerTIMER_3_COUNT_VALUE = 0; - - /* Then start the clock again. */ - CMT.CMSTR1.BIT.STR3 = 1; -} - - - - - - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/IntQueueTimer.c b/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/IntQueueTimer.c deleted file mode 100644 index ea02e3dbf..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/IntQueueTimer.c +++ /dev/null @@ -1,134 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* - * This file contains the non-portable and therefore RX62N specific parts of - * the IntQueue standard demo task - namely the configuration of the timers - * that generate the interrupts and the interrupt entry points. - */ - -/* Scheduler includes. */ -#include "FreeRTOS.h" -#include "task.h" - -/* Demo includes. */ -#include "IntQueueTimer.h" -#include "IntQueue.h" - -/* Hardware specifics. */ -#include "iodefine.h" - -#define tmrTIMER_0_1_FREQUENCY ( 2000UL ) -#define tmrTIMER_2_3_FREQUENCY ( 2001UL ) - -/* Handlers for the two timers used. See the documentation page -for this port on http://www.FreeRTOS.org for more information on writing -interrupt handlers. */ -void vT0_1_ISR_Handler( void ) __attribute((interrupt)); -void vT2_3_ISR_Handler( void ) __attribute((interrupt)); - -void vInitialiseTimerForIntQueueTest( void ) -{ - /* Ensure interrupts do not start until full configuration is complete. */ - portENTER_CRITICAL(); - { - /* Cascade two 8bit timer channels to generate the interrupts. - 8bit timer unit 1 (TMR0 and TMR1) and 8bit timer unit 2 (TMR2 and TMR3 are - utilised for this test. */ - - /* Enable the timers. */ - SYSTEM.MSTPCRA.BIT.MSTPA5 = 0; - SYSTEM.MSTPCRA.BIT.MSTPA4 = 0; - - /* Enable compare match A interrupt request. */ - TMR0.TCR.BIT.CMIEA = 1; - TMR2.TCR.BIT.CMIEA = 1; - - /* Clear the timer on compare match A. */ - TMR0.TCR.BIT.CCLR = 1; - TMR2.TCR.BIT.CCLR = 1; - - /* Set the compare match value. */ - TMR01.TCORA = ( unsigned short ) ( ( ( configPERIPHERAL_CLOCK_HZ / tmrTIMER_0_1_FREQUENCY ) -1 ) / 8 ); - TMR23.TCORA = ( unsigned short ) ( ( ( configPERIPHERAL_CLOCK_HZ / tmrTIMER_0_1_FREQUENCY ) -1 ) / 8 ); - - /* 16 bit operation ( count from timer 1,2 ). */ - TMR0.TCCR.BIT.CSS = 3; - TMR2.TCCR.BIT.CSS = 3; - - /* Use PCLK as the input. */ - TMR1.TCCR.BIT.CSS = 1; - TMR3.TCCR.BIT.CSS = 1; - - /* Divide PCLK by 8. */ - TMR1.TCCR.BIT.CKS = 2; - TMR3.TCCR.BIT.CKS = 2; - - /* Enable TMR 0, 2 interrupts. */ - IEN( TMR0, CMIA0 ) = 1; - IEN( TMR2, CMIA2 ) = 1; - - /* Set the timer interrupts to be above the kernel. The interrupts are - assigned different priorities so they nest with each other. */ - IPR( TMR0, CMIA0 ) = configMAX_SYSCALL_INTERRUPT_PRIORITY - 1; - IPR( TMR2, CMIA2 ) = ( configMAX_SYSCALL_INTERRUPT_PRIORITY - 2 ); - } - portEXIT_CRITICAL(); - - /* Ensure the interrupts are clear as they are edge detected. */ - IR( TMR0, CMIA0 ) = 0; - IR( TMR2, CMIA2 ) = 0; -} -/*-----------------------------------------------------------*/ - -void vT0_1_ISR_Handler( void ) -{ - /* Re-enabled interrupts. */ - __asm volatile( "SETPSW I" ); - - /* Call the handler that is part of the common code - this is where the - non-portable code ends and the actual test is performed. */ - portYIELD_FROM_ISR( xFirstTimerHandler() ); -} -/*-----------------------------------------------------------*/ - -void vT2_3_ISR_Handler( void ) -{ - /* Re-enabled interrupts. */ - __asm volatile( "SETPSW I" ); - - /* Call the handler that is part of the common code - this is where the - non-portable code ends and the actual test is performed. */ - portYIELD_FROM_ISR( xSecondTimerHandler() ); -} -/*-----------------------------------------------------------*/ - - - - - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/ParTest.c b/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/ParTest.c deleted file mode 100644 index 72bdd65dd..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/ParTest.c +++ /dev/null @@ -1,175 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/*----------------------------------------------------------- - * Simple IO routines to control the LEDs. - *-----------------------------------------------------------*/ - -/* Scheduler includes. */ -#include "FreeRTOS.h" -#include "task.h" - -/* Demo includes. */ -#include "partest.h" - -/* Hardware specifics. */ -#include "iodefine.h" - -#define partestNUM_LEDS ( 6 ) - -long lParTestGetLEDState( unsigned long ulLED ); - -/*-----------------------------------------------------------*/ - -void vParTestInitialise( void ) -{ - /* Port pin configuration is done by the low level set up prior to this - function being called. */ -} -/*-----------------------------------------------------------*/ - -void vParTestSetLED( unsigned long ulLED, signed long xValue ) -{ - if( ulLED < partestNUM_LEDS ) - { - if( xValue != 0 ) - { - /* Turn the LED on. */ - taskENTER_CRITICAL(); - { - switch( ulLED ) - { - case 0: LED0 = LED_ON; - break; - case 1: LED1 = LED_ON; - break; - case 2: LED2 = LED_ON; - break; - case 3: LED3 = LED_ON; - break; - case 4: LED4 = LED_ON; - break; - case 5: LED5 = LED_ON; - break; - } - } - taskEXIT_CRITICAL(); - } - else - { - /* Turn the LED off. */ - taskENTER_CRITICAL(); - { - switch( ulLED ) - { - case 0: LED0 = LED_OFF; - break; - case 1: LED1 = LED_OFF; - break; - case 2: LED2 = LED_OFF; - break; - case 3: LED3 = LED_OFF; - break; - case 4: LED4 = LED_OFF; - break; - case 5: LED5 = LED_OFF; - break; - } - - } - taskEXIT_CRITICAL(); - } - } -} -/*-----------------------------------------------------------*/ - -void vParTestToggleLED( unsigned long ulLED ) -{ - if( ulLED < partestNUM_LEDS ) - { - taskENTER_CRITICAL(); - { - if( lParTestGetLEDState( ulLED ) != 0x00 ) - { - vParTestSetLED( ulLED, 0 ); - } - else - { - vParTestSetLED( ulLED, 1 ); - } - } - taskEXIT_CRITICAL(); - } -} -/*-----------------------------------------------------------*/ - -long lParTestGetLEDState( unsigned long ulLED ) -{ -long lReturn = pdTRUE; - - if( ulLED < partestNUM_LEDS ) - { - switch( ulLED ) - { - case 0 : if( LED0 != 0 ) - { - lReturn = pdFALSE; - } - break; - case 1 : if( LED1 != 0 ) - { - lReturn = pdFALSE; - } - break; - case 2 : if( LED2 != 0 ) - { - lReturn = pdFALSE; - } - break; - case 3 : if( LED3 != 0 ) - { - lReturn = pdFALSE; - } - break; - case 4 : if( LED4 != 0 ) - { - lReturn = pdFALSE; - } - break; - case 5 : if( LED5 != 0 ) - { - lReturn = pdFALSE; - } - break; - } - } - - return lReturn; -} -/*-----------------------------------------------------------*/ - - \ No newline at end of file diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/RTOSDemo.hwp b/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/RTOSDemo.hwp deleted file mode 100644 index 64a895a26..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/RTOSDemo.hwp +++ /dev/null @@ -1,483 +0,0 @@ -[HIMDBVersion] -2.0 -[DATABASE_VERSION] -"2.8" -[PROJECT_DETAILS] -"RTOSDemo" "C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo" "C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\RTOSDemo.hwp" "RX" "KPIT GNURX [ELF]" "C Application" "RX600" "Other" -[INFORMATION] -"No project information available" -[TOOL_CHAIN] -"KPIT GNURX [ELF] Toolchain" "v10.03" -[CONFIGURATIONS] -"Blinky" "C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\Blinky" -"Debug" "C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\Debug" -"Debug_RX600_E1_E20_SYSTEM" "C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\Debug_RX600_E1_E20_SYSTEM" -"Debug_with_optimisation" "C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\Debug_with_optimisation" -[BUILD_PHASES] -"GNU Assembler" 1 -"GNU Compiler" 1 -"GNU Library Generator" 1 -"GNU Linker" 1 -[TOOL_ENVIRONMENT] -[EXTENSIONS] -"Absolute file" "ABS" -"Archive File" "A" -"Assembly include file" "INC" -"Assembly list file" "LIS" -"Assembly source file" "S" -"Assembly source file" "SRC" -"Binary file" "BIN" -"C header file" "H" -"C list file" "LST" -"C source file" "C" -"C++ header file" "HPP" -"C++ list file" "LPP" -"C++ source file" "CC" -"C++ source file" "CP" -"C++ source file" "CPP" -"CPU information file" "CPU" -"Calling information file" "CAL" -"Debug information file" "DBG" -"Expanded assembly source file" "EXP" -"Hex file" "HEX" -"Library file" "LIB" -"Library information file" "LBP" -"Linkage map file" "MAP" -"Object file" "OBJ" -"Optimize map file" "bls" -"Preprocess Assembly file" "ASM" -"Preprocessed C source file" "P" -"Preprocessed C++ source file" "PP" -"Profile file" "PRO" -"Relocatable file" "REL" -"Rts information file" "RTS" -"S-Record file" "MOT" -"Stack information file" "SNI" -"TD include object file" "RTI" -[FILE_GROUPS] -"Absolute file" "BIN" "NONE" "" -"Archive File" "BIN" "NONE" "" -"Assembly include file" "TEXT" "EDITOR" "" -"Assembly list file" "TEXT" "EDITOR" "" -"Assembly source file" "TEXT" "EDITOR" "" -"Binary file" "BIN" "NONE" "" -"C header file" "TEXT" "EDITOR" "" -"C list file" "TEXT" "EDITOR" "" -"C source file" "TEXT" "EDITOR" "" -"C++ header file" "TEXT" "EDITOR" "" -"C++ list file" "TEXT" "EDITOR" "" -"C++ source file" "TEXT" "EDITOR" "" -"CPU information file" "BIN" "NONE" "" -"Calling information file" "BIN" "NONE" "" -"Debug information file" "BIN" "NONE" "" -"Expanded assembly source file" "TEXT" "EDITOR" "" -"Hex file" "TEXT" "EDITOR" "" -"Library file" "BIN" "NONE" "" -"Library information file" "TEXT" "EDITOR" "" -"Linkage map file" "TEXT" "EDITOR" "" -"Object file" "BIN" "NONE" "" -"Optimize map file" "BIN" "NONE" "" -"Preprocess Assembly file" "TEXT" "EDITOR" "" -"Preprocessed C source file" "TEXT" "EDITOR" "" -"Preprocessed C++ source file" "TEXT" "EDITOR" "" -"Profile file" "BIN" "NONE" "" -"Relocatable file" "BIN" "NONE" "" -"Rts information file" "BIN" "NONE" "" -"S-Record file" "TEXT" "EDITOR" "" -"Stack information file" "BIN" "NONE" "" -"TD include object file" "BIN" "NONE" "" -[ASSOCIATED_APPLICATIONS] -[TOOLCHAIN_PHASE] -"GNU Assembler" -"GNU Compiler" -"GNU Library Generator" -"GNU Linker" -[UTILITY_PHASE] -[CUSTOM_PHASES] -[CUSTOM_PHASE_INPUT_GROUP] -[CUSTOM_PHASE_OUTPUT_SYNTAX] -[BUILD_ORDER] -"GNU Library Generator" 1 -"GNU Compiler" 1 -"GNU Assembler" 1 -"GNU Linker" 1 -[BUILD_PHASE_DETAILS] -"GNU Assembler" "Assembly source file" 1 -"GNU Compiler" "C source file|C++ source file|Preprocess Assembly file" 1 -"GNU Library Generator" "" 0 -"GNU Linker" "Object file|Library file|Relocatable file" 0 -[BUILD_FILE_ORDER_Assembly source file] -"GNU Assembler" 1 -[BUILD_FILE_ORDER_C source file] -"GNU Compiler" 1 -[BUILD_FILE_ORDER_C++ source file] -"GNU Compiler" 1 -[BUILD_FILE_ORDER_Preprocess Assembly file] -"GNU Compiler" 1 -[SCRAP] -"Project Generator Setup File" "" -[MAPPINGS] -"Assembly source file" "GNU Assembler" "GNU Compiler" -"Object file" "GNU Linker" "GNU Assembler" -"Object file" "GNU Linker" "GNU Compiler" -[PROJECT_FILES] -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\BlockQ.c" "User" "C source file|Standard Demo Files" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\GenQTest.c" "User" "C source file|Standard Demo Files" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\IntQueue.c" "User" "C source file|Standard Demo Files" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\PollQ.c" "User" "C source file|Standard Demo Files" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\QPeek.c" "User" "C source file|Standard Demo Files" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\blocktim.c" "User" "C source file|Standard Demo Files" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\death.c" "User" "C source file|Standard Demo Files" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\flash.c" "User" "C source file|Standard Demo Files" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\flop.c" "User" "C source file|Standard Demo Files" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\integer.c" "User" "C source file|Standard Demo Files" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\recmutex.c" "User" "C source file|Standard Demo Files" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\semtest.c" "User" "C source file|Standard Demo Files" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\apps\httpd\http-strings.c" "User" "C source file|FreeTCPIP (based on uIP)|webserver|Common" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd-fs.c" "User" "C source file|FreeTCPIP (based on uIP)|webserver|Common" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd.c" "User" "C source file|FreeTCPIP (based on uIP)|webserver|Common" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\psock.c" "User" "C source file|FreeTCPIP (based on uIP)" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\timer.c" "User" "C source file|FreeTCPIP (based on uIP)" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\uip.c" "User" "C source file|FreeTCPIP (based on uIP)" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\uip_arp.c" "User" "C source file|FreeTCPIP (based on uIP)" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\GNU-Files\hwinit.c" "User" "C source file|GNU Files" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\GNU-Files\inthandler.c" "User" "C source file|GNU Files" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\GNU-Files\start.asm" "User" "Preprocess Assembly file" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\HighFrequencyTimerTest.c" "User" "C source file" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\IntQueueTimer.c" "User" "C source file" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\ParTest.c" "User" "C source file" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\Renesas-Files\hwsetup.c" "User" "C source file|Renesas Files" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\main-blinky.c" "User" "C source file" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\main-full.c" "User" "C source file" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\uIP_Task.c" "User" "C source file" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\vects.c" "User" "C source file" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\webserver\EMAC.c" "User" "C source file|FreeTCPIP (based on uIP)|webserver|Port Specific" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\webserver\httpd-cgi.c" "User" "C source file|FreeTCPIP (based on uIP)|webserver|Port Specific" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\webserver\phy.c" "User" "C source file|FreeTCPIP (based on uIP)|webserver|Port Specific" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\list.c" "User" "C source file|FreeRTOS Source" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\portable\GCC\RX600\port.c" "User" "C source file|FreeRTOS Source|Portable Layer" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\portable\MemMang\heap_2.c" "User" "C source file|FreeRTOS Source|Portable Layer" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\queue.c" "User" "C source file|FreeRTOS Source" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\tasks.c" "User" "C source file|FreeRTOS Source" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\timers.c" "User" "C source file" 2 -[FOLDER] -"C header file" "C header file" -"C source file" "C source file" -"C source file|FreeRTOS Source" "" -"C source file|FreeRTOS Source|Portable Layer" "" -"C source file|FreeTCPIP (based on uIP)" "" -"C source file|FreeTCPIP (based on uIP)|webserver" "" -"C source file|FreeTCPIP (based on uIP)|webserver|Common" "" -"C source file|FreeTCPIP (based on uIP)|webserver|Port Specific" "" -"C source file|GNU Files" "" -"C source file|Renesas Files" "" -"C source file|Standard Demo Files" "" -"Preprocess Assembly file" "Preprocess Assembly file" -[GENERAL_DATA_PROJECT] -"USE_CUSTOM_LINKAGE_ORDER" "0" -[ON_DEMAND_COMPONENTS_LOADED] -[SYNC_SESSION_NAMES] -[SESSIONS] -"DefaultSession" "C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\DefaultSession.hsf" 0 -"SessionRX600_E1_E20_SYSTEM" "C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\SessionRX600_E1_E20_SYSTEM.hsf" 0 -[GENERAL_DATA_SESSION_DefaultSession] -[GENERAL_DATA_SESSION_SessionRX600_E1_E20_SYSTEM] -[OPTIONS_Blinky_GNU Assembler] -"Assembly source file" "0f757b5b0aa5bc10" 4 -[OPTIONS_Blinky_GNU Compiler] -"C source file" "0f29ab09a4b1fc10" 3 -"C++ source file" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\BlockQ.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\GenQTest.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\IntQueue.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\PollQ.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\QPeek.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\blocktim.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\death.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\flash.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\flop.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\integer.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\recmutex.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\semtest.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\apps\httpd\http-strings.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd-fs.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\psock.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\timer.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\uip.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\uip_arp.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\GNU-Files\hwinit.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\GNU-Files\inthandler.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\GNU-Files\start.asm" "0f29ab09a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\HighFrequencyTimerTest.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\IntQueueTimer.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\ParTest.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\Renesas-Files\hwsetup.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\main-blinky.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\main-full.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\uIP_Task.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\vects.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\webserver\EMAC.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\webserver\httpd-cgi.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\webserver\phy.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\list.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\portable\GCC\RX600\port.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\portable\MemMang\heap_2.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\queue.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\tasks.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\timers.c" "0f29ab09a4b1fc10" 3 -"Preprocess Assembly file" "0f29ab09a4b1fc10" 2 -[OPTIONS_Blinky_GNU Library Generator] -"Single Shot" "00e05b5b0aa5bc10" 1 -[OPTIONS_Blinky_GNU Linker] -"Single Shot" "04611067f811cc10" 5 -[OPTIONS_Blinky] -"" 0 -"[V|VERSION|2] [B|DOEXTF|1] [S|INCDIR|^"$(TCINSTALL)\rx-elf\lib\gcc\rx-elf\4.5-GNURX_v10.03^"|^"$(CONFIGDIR)^"] [B|RSARCH|1] [B|FIXUPLIBS|1] [S|ARCHIVE|lib$(PROJECTNAME).a*libgcc.a] [S|OUTFORM|BOTH] [B|MFILEGEN|1] [S|PLMFILE|^"$(CONFIGDIR)\$(PROJECTNAME).map^"] [S|OUTFILE|^"$(CONFIGDIR)\$(PROJECTNAME).x^"] [S|GROUPDET|.fvectors|0|0||1|0xFFFFFF80|0|1|0|.fvectors|All-files|<>|<>|<>|.text|0|0||1|0xFFF80000|0|0|0|.text|All-files|<>|0|.text.*|All-files|<>|0|P|All-files|<>|1|etext|<>|<>|<>|.rvectors|0|0||0||0|1|1|_rvectors_start|<>|0|.rvectors|All-files|<>|1|_rvectors_end|<>|<>|<>|.init|0|0||0||0|0|0|.init|All-files|<>|<>|<>|.fini|0|0||0||0|0|0|.fini|All-files|<>|<>|<>|.got|0|0||0||0|0|0|.got|All-files|<>|0|.got.plt|All-files|<>|<>|<>|.rodata|0|0||0||0|0|0|.rodata|All-files|<>|0|.rodata.*|All-files|<>|0|C_1|All-files|<>|0|C_2|All-files|<>|0|C|All-files|<>|1|_erodata|<>|<>|<>|.eh_frame_hdr|0|0||0||0|0|0|.eh_frame_hdr|All-files|<>|<>|<>|.eh_frame|0|0||0||0|0|0|.eh_frame|All-files|<>|<>|<>|.jcr|0|0||0||0|0|0|.jcr|All-files|<>|<>|<>|.tors|0|0||0||0|0|1|__CTOR_LIST__|<>|1|___ctors|<>|0|.ctors|All-files|<>|1|___ctors_end|<>|1|__CTOR_END__|<>|1|__DTOR_LIST__|<>|1|___dtors|<>|0|.dtors|All-files|<>|1|___dtors_end|<>|1|__DTOR_END__|<>|1|_mdata|<>|<>|<>|.istack|0|0||1|0x00017FFC|0|0|1|_istack|<>|<>|<>|.ustack|0|0||1|0x000179BC|0|0|1|_ustack|<>|<>|<>|.data|0|2|_mdata|1|0x00001000|0|0|1|_data|<>|0|.data|All-files|<>|0|.data.*|All-files|<>|0|D|All-files|<>|0|D_1|All-files|<>|0|D_2|All-files|<>|1|_edata|<>|<>|<>|.gcc_exc|0|0||0||0|0|0|.gcc_exc|All-files|<>|<>|<>|.bss|0|0||0||0|0|1|_bss|<>|0|.bss|All-files|<>|0|.bss.*|All-files|<>|0|COMMON|All-files|<>|0|B|All-files|<>|0|B_1|All-files|<>|0|B_2|All-files|<>|1|_ebss|<>|1|_end|<>|<>|<>|] [S|APPTXT|^"-e _start^"] [S|CPUTYPE|RX600] [S|ENDIAN|LITTLE] [S|CPU|Other] [I|RMINTREGVAL|0] [I|RMMAXCONSTVAL|0] [I|RMMAXVARSVAL|0] [S|PROJECTTYPE|CAPPPROJECT] [B|DOOPTLIB|1] [B|DOPROJBUILT|1] -" 5 -"[V|VERSION|2] [S|INCDIR|^"$(TCINSTALL)\rx-elf\rx-elf\optlibinc^"|^"$(TCINSTALL)\rx-elf\lib\gcc\rx-elf\4.5-GNURX_v10.03\optlibinc^"|^"$(PROJDIR)\include^"|^"$(PROJDIR)\..\..\..\Source\include^"|^"$(PROJDIR)\..\..\..\Source\portable\GCC\RX600^"|^"$(PROJDIR)^"|^"$(PROJDIR)\..\..\Common\include^"] [S|DEFINES|DEBUG] [S|OUTPUT|OBJECT] [S|OBJPATH|^"$(CONFIGDIR)\$(FILELEAF).o^"] [B|DEBUG|1] [S|DEBUGFT|Native] [I|DEBUGLV|2] [S|ALIGN4|ALL] [B|LINCSYM|1] [B|LOMITDD|1] [B|LOMITFP|1] [B|OPTIMIZE|0] [I|OPTLV|1] [S|APPTXT|^"-Wa,-gdwarf2^"] [S|CPUTYPE|RX600] [S|ENDIAN|LITTLE] [S|CPU|Other] [I|RMINTREGVAL|0] [I|RMMAXCONSTVAL|0] [I|RMMAXVARSVAL|0] [S|PROJECTTYPE|CAPPPROJECT] [B|DOOPTLIB|1] -" 2 -"[V|VERSION|2] [S|INCDIR|^"$(TCINSTALL)\rx-elf\rx-elf\optlibinc^"|^"$(TCINSTALL)\rx-elf\lib\gcc\rx-elf\4.5-GNURX_v10.03\optlibinc^"|^"$(PROJDIR)\include^"|^"$(PROJDIR)\..\..\..\Source\include^"|^"$(PROJDIR)\..\..\..\Source\portable\GCC\RX600^"|^"$(PROJDIR)^"|^"$(PROJDIR)\..\..\Common\include^"] [S|DEFINES|DEBUG] [S|OUTPUT|OBJECT] [S|OBJPATH|^"$(CONFIGDIR)\$(FILELEAF).o^"] [B|DEBUG|1] [S|DEBUGFT|Native] [I|DEBUGLV|2] [S|ALIGN4|ALL] [B|LINCSYM|1] [B|LOMITDD|1] [B|LOMITFP|1] [B|OPTIMIZE|0] [I|OPTLV|1] [S|CPUTYPE|RX600] [S|ENDIAN|LITTLE] [S|CPU|Other] [I|RMINTREGVAL|0] [I|RMMAXCONSTVAL|0] [I|RMMAXVARSVAL|0] [S|PROJECTTYPE|CAPPPROJECT] [B|DOOPTLIB|1] -" 3 -"[V|VERSION|2] [S|OBJPATH|^"$(CONFIGDIR)\$(FILELEAF).o^"] [I|DEBUGLV|2] [B|LINCHLS|1] [B|LINCASS|1] [B|LINCSYM|1] [S|LFILE|^"$(CONFIGDIR)\$(FILELEAF).^"] [S|PROJECTTYPE|CAPPPROJECT] [S|INCDIR|^"$(PROJDIR)^"] [S|CPUTYPE|RX600] [S|ENDIAN|LITTLE] [S|CPU|Other] " 4 -"[V|VERSION|2] [S|OUTPUTPATH|^"$(CONFIGDIR)\lib$(PROJECTNAME).a^"] [B|OPTIMIZE|1] [I|OPTTYPE|1] [S|MODE|BUILD/CHANGED] [S|CPUTYPE|RX600] [S|ENDIAN|LITTLE] [S|CPU|Other] [B|DOPROJBUILT|1] [B|DOOPTLIB|1] [B|MATH|1] [B|STDIO|1] [B|STDLIB|1] [B|STRING|1] " 1 -[EXCLUDED_FILES_Blinky] -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\apps\httpd\http-strings.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd-fs.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\psock.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\timer.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\uip.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\uip_arp.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\BlockQ.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\blocktim.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\death.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\flash.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\flop.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\GenQTest.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\integer.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\IntQueue.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\PollQ.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\QPeek.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\recmutex.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\semtest.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\HighFrequencyTimerTest.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\IntQueueTimer.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\main-full.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\uIP_Task.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\webserver\EMAC.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\webserver\httpd-cgi.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\webserver\phy.c" -[LINKAGE_ORDER_Blinky] -[GENERAL_DATA_CONFIGURATION_Blinky] -[OPTIONS_Debug_GNU Assembler] -"Assembly source file" "00d92b5b0aa5bc10" 3 -[OPTIONS_Debug_GNU Compiler] -"C source file" "02307b3c84b1fc10" 2 -"C++ source file" "02307b3c84b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\BlockQ.c" "02307b3c84b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\GenQTest.c" "02307b3c84b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\IntQueue.c" "02307b3c84b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\PollQ.c" "02307b3c84b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\QPeek.c" "02307b3c84b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\blocktim.c" "02307b3c84b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\death.c" "02307b3c84b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\flash.c" "02307b3c84b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\flop.c" "02307b3c84b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\integer.c" "02307b3c84b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\recmutex.c" "02307b3c84b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\semtest.c" "02307b3c84b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\apps\httpd\http-strings.c" "02307b3c84b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd-fs.c" "02307b3c84b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd.c" "02307b3c84b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\psock.c" "02307b3c84b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\timer.c" "02307b3c84b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\uip.c" "02307b3c84b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\uip_arp.c" "02307b3c84b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\GNU-Files\hwinit.c" "02307b3c84b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\GNU-Files\inthandler.c" "02307b3c84b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\GNU-Files\start.asm" "02307b3c84b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\HighFrequencyTimerTest.c" "02307b3c84b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\IntQueueTimer.c" "02307b3c84b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\ParTest.c" "02307b3c84b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\Renesas-Files\hwsetup.c" "02307b3c84b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\main-blinky.c" "02307b3c84b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\main-full.c" "02307b3c84b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\uIP_Task.c" "02307b3c84b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\vects.c" "02307b3c84b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\webserver\EMAC.c" "02307b3c84b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\webserver\httpd-cgi.c" "02307b3c84b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\webserver\phy.c" "02307b3c84b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\list.c" "02307b3c84b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\portable\GCC\RX600\port.c" "02307b3c84b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\portable\MemMang\heap_2.c" "02307b3c84b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\queue.c" "02307b3c84b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\tasks.c" "02307b3c84b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\timers.c" "02307b3c84b1fc10" 2 -"Preprocess Assembly file" "02307b3c84b1fc10" 2 -[OPTIONS_Debug_GNU Library Generator] -"Single Shot" "00c20b5b0aa5bc10" 1 -[OPTIONS_Debug_GNU Linker] -"Single Shot" "04611067f811cc10" 4 -[OPTIONS_Debug] -"" 0 -"[V|VERSION|2] [B|DOEXTF|1] [S|INCDIR|^"$(TCINSTALL)\rx-elf\lib\gcc\rx-elf\4.5-GNURX_v10.03^"|^"$(CONFIGDIR)^"] [B|RSARCH|1] [B|FIXUPLIBS|1] [S|ARCHIVE|libgcc.a*lib$(PROJECTNAME).a] [S|OUTFORM|BOTH] [B|MFILEGEN|1] [S|PLMFILE|^"$(CONFIGDIR)\$(PROJECTNAME).map^"] [S|OUTFILE|^"$(CONFIGDIR)\$(PROJECTNAME).x^"] [S|GROUPDET|.fvectors|0|0||1|0xFFFFFF80|0|1|0|.fvectors|All-files|<>|<>|<>|.text|0|0||1|0xFFF80000|0|0|0|.text|All-files|<>|0|.text.*|All-files|<>|0|P|All-files|<>|1|etext|<>|<>|<>|.rvectors|0|0||0||0|1|1|_rvectors_start|<>|0|.rvectors|All-files|<>|1|_rvectors_end|<>|<>|<>|.init|0|0||0||0|0|0|.init|All-files|<>|<>|<>|.fini|0|0||0||0|0|0|.fini|All-files|<>|<>|<>|.got|0|0||0||0|0|0|.got|All-files|<>|0|.got.plt|All-files|<>|<>|<>|.rodata|0|0||0||0|0|0|.rodata|All-files|<>|0|.rodata.*|All-files|<>|0|C_1|All-files|<>|0|C_2|All-files|<>|0|C|All-files|<>|1|_erodata|<>|<>|<>|.eh_frame_hdr|0|0||0||0|0|0|.eh_frame_hdr|All-files|<>|<>|<>|.eh_frame|0|0||0||0|0|0|.eh_frame|All-files|<>|<>|<>|.jcr|0|0||0||0|0|0|.jcr|All-files|<>|<>|<>|.tors|0|0||0||0|0|1|__CTOR_LIST__|<>|1|___ctors|<>|0|.ctors|All-files|<>|1|___ctors_end|<>|1|__CTOR_END__|<>|1|__DTOR_LIST__|<>|1|___dtors|<>|0|.dtors|All-files|<>|1|___dtors_end|<>|1|__DTOR_END__|<>|1|_mdata|<>|<>|<>|.istack|0|0||1|0x00017FFC|0|0|1|_istack|<>|<>|<>|.ustack|0|0||1|0x000179BC|0|0|1|_ustack|<>|<>|<>|.data|0|2|_mdata|1|0x00001000|0|0|1|_data|<>|0|.data|All-files|<>|0|.data.*|All-files|<>|0|D|All-files|<>|0|D_1|All-files|<>|0|D_2|All-files|<>|1|_edata|<>|<>|<>|.gcc_exc|0|0||0||0|0|0|.gcc_exc|All-files|<>|<>|<>|.bss|0|0||0||0|0|1|_bss|<>|0|.bss|All-files|<>|0|.bss.*|All-files|<>|0|COMMON|All-files|<>|0|B|All-files|<>|0|B_1|All-files|<>|0|B_2|All-files|<>|1|_ebss|<>|1|_end|<>|<>|<>|] [B|WONCEU|1] [B|OUTTRAD|1] [S|APPTXT|^"-e _start^"] [S|CPUTYPE|RX600] [S|ENDIAN|LITTLE] [S|CPU|Other] [I|RMINTREGVAL|0] [I|RMMAXCONSTVAL|0] [I|RMMAXVARSVAL|0] [S|PROJECTTYPE|CAPPPROJECT] [B|DOOPTLIB|1] [B|DOPROJBUILT|1] -" 4 -"[V|VERSION|2] [S|INCDIR|^"$(TCINSTALL)\rx-elf\rx-elf\optlibinc^"|^"$(TCINSTALL)\rx-elf\lib\gcc\rx-elf\4.5-GNURX_v10.03\optlibinc^"|^"$(PROJDIR)\include^"|^"$(PROJDIR)\..\..\..\Source\include^"|^"$(PROJDIR)\..\..\..\Source\portable\GCC\RX600^"|^"$(PROJDIR)^"|^"$(PROJDIR)\..\..\Common\include^"|^"$(PROJDIR)\..\..\Common\ethernet\FreeTCPIP^"|^"$(PROJDIR)\webserver^"] [S|DEFINES|DEBUG] [S|OUTPUT|OBJECT] [S|OBJPATH|^"$(CONFIGDIR)\$(FILELEAF).o^"] [B|DEBUG|1] [S|DEBUGFT|Native] [I|DEBUGLV|2] [S|ALIGN4|ALL] [B|OPTIMIZE|0] [I|OPTLV|2] [S|APPTXT|^"-Wall^"] [S|CPUTYPE|RX600] [S|ENDIAN|LITTLE] [S|CPU|Other] [I|RMINTREGVAL|0] [I|RMMAXCONSTVAL|0] [I|RMMAXVARSVAL|0] [S|PROJECTTYPE|CAPPPROJECT] [B|DOOPTLIB|1] -" 2 -"[V|VERSION|2] [S|MODE|BUILD/CHANGED] [B|MATH|1] [B|STDIO|1] [B|STDLIB|1] [B|STRING|1] [B|DOPROJBUILT|1] [B|DOOPTLIB|1] [S|OUTPUTPATH|^"$(CONFIGDIR)\lib$(PROJECTNAME).a^"] [B|OPTIMIZE|1] [I|OPTTYPE|0] [S|CPUTYPE|RX600] [S|ENDIAN|LITTLE] [S|CPU|Other] [I|RMINTREGVAL|0] [I|RMMAXCONSTVAL|0] [I|RMMAXVARSVAL|0] -" 1 -"[V|VERSION|2] [S|OBJPATH|^"$(CONFIGDIR)\$(FILELEAF).o^"] [I|DEBUGLV|2] [B|LINCHLS|1] [B|LINCASS|1] [B|LINCSYM|1] [S|LFILE|^"$(CONFIGDIR)\$(FILELEAF).^"] [S|PROJECTTYPE|CAPPPROJECT] [S|INCDIR|^"$(PROJDIR)^"] [S|CPUTYPE|RX600] [S|ENDIAN|LITTLE] [S|CPU|Other] " 3 -[EXCLUDED_FILES_Debug] -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\main-blinky.c" -[LINKAGE_ORDER_Debug] -[GENERAL_DATA_CONFIGURATION_Debug] -[OPTIONS_Debug_RX600_E1_E20_SYSTEM_GNU Assembler] -"Assembly source file" "00e05b5b0aa5bc10" 3 -[OPTIONS_Debug_RX600_E1_E20_SYSTEM_GNU Compiler] -"C source file" "0f29ab09a4b1fc10" 2 -"C++ source file" "0f29ab09a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\BlockQ.c" "0f29ab09a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\GenQTest.c" "0f29ab09a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\IntQueue.c" "0f29ab09a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\PollQ.c" "0f29ab09a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\QPeek.c" "0f29ab09a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\blocktim.c" "0f29ab09a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\death.c" "0f29ab09a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\flash.c" "0f29ab09a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\flop.c" "0f29ab09a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\integer.c" "0f29ab09a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\recmutex.c" "0f29ab09a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\semtest.c" "0f29ab09a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\apps\httpd\http-strings.c" "0f29ab09a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd-fs.c" "0f29ab09a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd.c" "0f29ab09a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\psock.c" "0f29ab09a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\timer.c" "0f29ab09a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\uip.c" "0f29ab09a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\uip_arp.c" "0f29ab09a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\GNU-Files\hwinit.c" "0f29ab09a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\GNU-Files\inthandler.c" "0f29ab09a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\GNU-Files\start.asm" "0f29ab09a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\HighFrequencyTimerTest.c" "0f29ab09a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\IntQueueTimer.c" "0f29ab09a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\ParTest.c" "0f29ab09a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\Renesas-Files\hwsetup.c" "0f29ab09a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\main-blinky.c" "0f29ab09a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\main-full.c" "0f29ab09a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\uIP_Task.c" "0f29ab09a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\vects.c" "0f29ab09a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\webserver\EMAC.c" "0f29ab09a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\webserver\httpd-cgi.c" "0f29ab09a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\webserver\phy.c" "0f29ab09a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\list.c" "0f29ab09a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\portable\GCC\RX600\port.c" "0f29ab09a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\portable\MemMang\heap_2.c" "0f29ab09a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\queue.c" "0f29ab09a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\tasks.c" "0f29ab09a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\timers.c" "0f29ab09a4b1fc10" 2 -"Preprocess Assembly file" "0f29ab09a4b1fc10" 2 -[OPTIONS_Debug_RX600_E1_E20_SYSTEM_GNU Library Generator] -"Single Shot" "00e05b5b0aa5bc10" 1 -[OPTIONS_Debug_RX600_E1_E20_SYSTEM_GNU Linker] -"Single Shot" "04611067f811cc10" 4 -[OPTIONS_Debug_RX600_E1_E20_SYSTEM] -"" 0 -"[V|VERSION|2] [S|INCDIR|^"$(TCINSTALL)\rx-elf\rx-elf\optlibinc^"|^"$(TCINSTALL)\rx-elf\lib\gcc\rx-elf\4.5-GNURX_v10.03\optlibinc^"] [S|DEFINES|DEBUG] [S|OUTPUT|OBJECT] [S|OBJPATH|^"$(CONFIGDIR)\$(FILELEAF).o^"] [B|DEBUG|1] [S|DEBUGFT|Native] [I|DEBUGLV|2] [S|ALIGN4|ALL] [B|OPTIMIZE|0] [I|OPTLV|2] [S|CPUTYPE|RX600] [S|ENDIAN|LITTLE] [S|CPU|Other] [I|RMINTREGVAL|0] [I|RMMAXCONSTVAL|0] [I|RMMAXVARSVAL|0] [S|PROJECTTYPE|CAPPPROJECT] [B|DOOPTLIB|1] -" 2 -"[V|VERSION|2] [S|OBJPATH|^"$(CONFIGDIR)\$(FILELEAF).o^"] [I|DEBUGLV|2] [B|LINCHLS|1] [B|LINCASS|1] [B|LINCSYM|1] [S|LFILE|^"$(CONFIGDIR)\$(FILELEAF).^"] [S|PROJECTTYPE|CAPPPROJECT] [S|INCDIR|^"$(PROJDIR)^"] [S|CPUTYPE|RX600] [S|ENDIAN|LITTLE] [S|CPU|Other] " 3 -"[V|VERSION|2] [S|OUTFORM|BOTH] [B|MFILEGEN|1] [S|PLMFILE|^"$(CONFIGDIR)\$(PROJECTNAME).map^"] [S|APPTXT|^"-e _start^"] [S|OUTFILE|^"$(CONFIGDIR)\$(PROJECTNAME).x^"] [B|RSARCH|1] [B|FIXUPLIBS|1] [B|SUBCOMMAND|0] [S|PROJECTTYPE|CAPPPROJECT] [S|ENDIAN|LITTLE] [S|CPUTYPE|RX600] [S|CPU|Other] [B|DOOPTLIB|1] [B|DOPROJBUILT|1] [S|ARCHIVE|libRTOSDemo.a*libgcc.a] [S|INCDIR|^"$(TCINSTALL)\rx-elf\lib\gcc\rx-elf\4.5-GNURX_v10.03^"|^"$(CONFIGDIR)^"] [S|GROUPDET|.fvectors|0|0||1|0xFFFFFF80|0|1|0|.fvectors|All-files|<>|<>|<>|.text|0|0||1|0xFFFF8000|0|0|0|.text|All-files|<>|0|.text.*|All-files|<>|0|P|All-files|<>|1|etext|<>|<>|<>|.rvectors|0|0||0||0|1|1|_rvectors_start|<>|0|.rvectors|All-files|<>|1|_rvectors_end|<>|<>|<>|.init|0|0||0||0|0|0|.init|All-files|<>|<>|<>|.fini|0|0||0||0|0|0|.fini|All-files|<>|<>|<>|.got|0|0||0||0|0|0|.got|All-files|<>|0|.got.plt|All-files|<>|<>|<>|.rodata|0|0||0||0|0|0|.rodata|All-files|<>|0|.rodata.*|All-files|<>|0|C_1|All-files|<>|0|C_2|All-files|<>|0|C|All-files|<>|1|_erodata|<>|<>|<>|.eh_frame_hdr|0|0||0||0|0|0|.eh_frame_hdr|All-files|<>|<>|<>|.eh_frame|0|0||0||0|0|0|.eh_frame|All-files|<>|<>|<>|.jcr|0|0||0||0|0|0|.jcr|All-files|<>|<>|<>|.tors|0|0||0||0|0|1|__CTOR_LIST__|<>|1|___ctors|<>|0|.ctors|All-files|<>|1|___ctors_end|<>|1|__CTOR_END__|<>|1|__DTOR_LIST__|<>|1|___dtors|<>|0|.dtors|All-files|<>|1|___dtors_end|<>|1|__DTOR_END__|<>|1|_mdata|<>|<>|<>|.istack|0|0||1|0x00001808|0|0|1|_istack|<>|<>|<>|.ustack|0|0||1|0x00001708|0|0|1|_ustack|<>|<>|<>|.data|0|2|_mdata|1|0x00001001|0|0|1|_data|<>|0|.data|All-files|<>|0|.data.*|All-files|<>|0|D|All-files|<>|0|D_1|All-files|<>|0|D_2|All-files|<>|1|_edata|<>|<>|<>|.gcc_exc|0|0||0||0|0|0|.gcc_exc|All-files|<>|<>|<>|.bss|0|0||0||0|0|1|_bss|<>|0|.bss|All-files|<>|0|.bss.*|All-files|<>|0|COMMON|All-files|<>|0|B|All-files|<>|0|B_1|All-files|<>|0|B_2|All-files|<>|1|_ebss|<>|1|_end|<>|<>|<>] " 4 -"[V|VERSION|2] [S|OUTPUTPATH|^"$(CONFIGDIR)\lib$(PROJECTNAME).a^"] [B|OPTIMIZE|1] [I|OPTTYPE|1] [S|MODE|BUILD/CHANGED] [S|CPUTYPE|RX600] [S|ENDIAN|LITTLE] [S|CPU|Other] [B|DOPROJBUILT|1] [B|DOOPTLIB|1] [B|MATH|1] [B|STDIO|1] [B|STDLIB|1] [B|STRING|1] " 1 -[EXCLUDED_FILES_Debug_RX600_E1_E20_SYSTEM] -[LINKAGE_ORDER_Debug_RX600_E1_E20_SYSTEM] -[GENERAL_DATA_CONFIGURATION_Debug_RX600_E1_E20_SYSTEM] -[OPTIONS_Debug_with_optimisation_GNU Assembler] -"Assembly source file" "00d92b5b0aa5bc10" 4 -[OPTIONS_Debug_with_optimisation_GNU Compiler] -"C source file" "0f29ab09a4b1fc10" 3 -"C++ source file" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\BlockQ.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\GenQTest.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\IntQueue.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\PollQ.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\QPeek.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\blocktim.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\death.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\flash.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\flop.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\integer.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\recmutex.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\Minimal\semtest.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\apps\httpd\http-strings.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd-fs.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\psock.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\timer.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\uip.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\Common\ethernet\FreeTCPIP\uip_arp.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\GNU-Files\hwinit.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\GNU-Files\inthandler.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\GNU-Files\start.asm" "0f29ab09a4b1fc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\HighFrequencyTimerTest.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\IntQueueTimer.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\ParTest.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\Renesas-Files\hwsetup.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\main-blinky.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\main-full.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\uIP_Task.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\vects.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\webserver\EMAC.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\webserver\httpd-cgi.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\webserver\phy.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\list.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\portable\GCC\RX600\port.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\portable\MemMang\heap_2.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\queue.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\tasks.c" "0f29ab09a4b1fc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\timers.c" "0f29ab09a4b1fc10" 3 -"Preprocess Assembly file" "0f29ab09a4b1fc10" 2 -[OPTIONS_Debug_with_optimisation_GNU Library Generator] -"Single Shot" "00d92b5b0aa5bc10" 1 -[OPTIONS_Debug_with_optimisation_GNU Linker] -"Single Shot" "04611067f811cc10" 5 -[OPTIONS_Debug_with_optimisation] -"" 0 -"[V|VERSION|2] [B|DOEXTF|1] [S|INCDIR|^"$(TCINSTALL)\rx-elf\lib\gcc\rx-elf\4.5-GNURX_v10.03^"|^"$(CONFIGDIR)^"] [B|RSARCH|1] [B|FIXUPLIBS|1] [S|ARCHIVE|lib$(PROJECTNAME).a*libgcc.a] [S|OUTFORM|BOTH] [B|MFILEGEN|1] [S|PLMFILE|^"$(CONFIGDIR)\$(PROJECTNAME).map^"] [S|OUTFILE|^"$(CONFIGDIR)\$(PROJECTNAME).x^"] [S|GROUPDET|.fvectors|0|0||1|0xFFFFFF80|0|1|0|.fvectors|All-files|<>|<>|<>|.text|0|0||1|0xFFF80000|0|0|0|.text|All-files|<>|0|.text.*|All-files|<>|0|P|All-files|<>|1|etext|<>|<>|<>|.rvectors|0|0||0||0|1|1|_rvectors_start|<>|0|.rvectors|All-files|<>|1|_rvectors_end|<>|<>|<>|.init|0|0||0||0|0|0|.init|All-files|<>|<>|<>|.fini|0|0||0||0|0|0|.fini|All-files|<>|<>|<>|.got|0|0||0||0|0|0|.got|All-files|<>|0|.got.plt|All-files|<>|<>|<>|.rodata|0|0||0||0|0|0|.rodata|All-files|<>|0|.rodata.*|All-files|<>|0|C_1|All-files|<>|0|C_2|All-files|<>|0|C|All-files|<>|1|_erodata|<>|<>|<>|.eh_frame_hdr|0|0||0||0|0|0|.eh_frame_hdr|All-files|<>|<>|<>|.eh_frame|0|0||0||0|0|0|.eh_frame|All-files|<>|<>|<>|.jcr|0|0||0||0|0|0|.jcr|All-files|<>|<>|<>|.tors|0|0||0||0|0|1|__CTOR_LIST__|<>|1|___ctors|<>|0|.ctors|All-files|<>|1|___ctors_end|<>|1|__CTOR_END__|<>|1|__DTOR_LIST__|<>|1|___dtors|<>|0|.dtors|All-files|<>|1|___dtors_end|<>|1|__DTOR_END__|<>|1|_mdata|<>|<>|<>|.istack|0|0||1|0x00017FFC|0|0|1|_istack|<>|<>|<>|.ustack|0|0||1|0x000179BC|0|0|1|_ustack|<>|<>|<>|.data|0|2|_mdata|1|0x00001000|0|0|1|_data|<>|0|.data|All-files|<>|0|.data.*|All-files|<>|0|D|All-files|<>|0|D_1|All-files|<>|0|D_2|All-files|<>|1|_edata|<>|<>|<>|.gcc_exc|0|0||0||0|0|0|.gcc_exc|All-files|<>|<>|<>|.bss|0|0||0||0|0|1|_bss|<>|0|.bss|All-files|<>|0|.bss.*|All-files|<>|0|COMMON|All-files|<>|0|B|All-files|<>|0|B_1|All-files|<>|0|B_2|All-files|<>|1|_ebss|<>|1|_end|<>|<>|<>|] [S|APPTXT|^"-e _start^"] [S|CPUTYPE|RX600] [S|ENDIAN|LITTLE] [S|CPU|Other] [I|RMINTREGVAL|0] [I|RMMAXCONSTVAL|0] [I|RMMAXVARSVAL|0] [S|PROJECTTYPE|CAPPPROJECT] [B|DOOPTLIB|1] [B|DOPROJBUILT|1] -" 5 -"[V|VERSION|2] [S|INCDIR|^"$(TCINSTALL)\rx-elf\rx-elf\optlibinc^"|^"$(TCINSTALL)\rx-elf\lib\gcc\rx-elf\4.5-GNURX_v10.03\optlibinc^"|^"$(PROJDIR)\include^"|^"$(PROJDIR)\..\..\..\Source\include^"|^"$(PROJDIR)\..\..\..\Source\portable\GCC\RX600^"|^"$(PROJDIR)^"|^"$(PROJDIR)\..\..\Common\include^"|^"$(PROJDIR)\..\..\Common\Ethernet\FreeTCPIP^"|^"$(PROJDIR)\webserver^"] [S|DEFINES|DEBUG|INCLUDE_HIGH_FREQUENCY_TIMER_TEST] [S|OUTPUT|OBJECT] [S|OBJPATH|^"$(CONFIGDIR)\$(FILELEAF).o^"] [B|DEBUG|1] [S|DEBUGFT|Native] [I|DEBUGLV|2] [S|ALIGN4|ALL] [B|OPTIMIZE|1] [I|OPTLV|1] [S|APPTXT|^"-Wa,-gdwarf2^"] [S|CPUTYPE|RX600] [S|ENDIAN|LITTLE] [S|CPU|Other] [I|RMINTREGVAL|0] [I|RMMAXCONSTVAL|0] [I|RMMAXVARSVAL|0] [S|PROJECTTYPE|CAPPPROJECT] [B|DOOPTLIB|1] -" 2 -"[V|VERSION|2] [S|INCDIR|^"$(TCINSTALL)\rx-elf\rx-elf\optlibinc^"|^"$(TCINSTALL)\rx-elf\lib\gcc\rx-elf\4.5-GNURX_v10.03\optlibinc^"|^"$(PROJDIR)\include^"|^"$(PROJDIR)\..\..\..\Source\include^"|^"$(PROJDIR)\..\..\..\Source\portable\GCC\RX600^"|^"$(PROJDIR)^"|^"$(PROJDIR)\..\..\Common\include^"|^"$(PROJDIR)\..\..\Common\Ethernet\FreeTCPIP^"|^"$(PROJDIR)\webserver^"] [S|DEFINES|DEBUG|INCLUDE_HIGH_FREQUENCY_TIMER_TEST] [S|OUTPUT|OBJECT] [S|OBJPATH|^"$(CONFIGDIR)\$(FILELEAF).o^"] [B|DEBUG|1] [S|DEBUGFT|Native] [I|DEBUGLV|2] [S|ALIGN4|ALL] [B|OPTIMIZE|1] [I|OPTLV|1] [S|CPUTYPE|RX600] [S|ENDIAN|LITTLE] [S|CPU|Other] [I|RMINTREGVAL|0] [I|RMMAXCONSTVAL|0] [I|RMMAXVARSVAL|0] [S|PROJECTTYPE|CAPPPROJECT] [B|DOOPTLIB|1] -" 3 -"[V|VERSION|2] [S|OBJPATH|^"$(CONFIGDIR)\$(FILELEAF).o^"] [I|DEBUGLV|2] [B|LINCHLS|1] [B|LINCASS|1] [B|LINCSYM|1] [S|LFILE|^"$(CONFIGDIR)\$(FILELEAF).^"] [S|PROJECTTYPE|CAPPPROJECT] [S|INCDIR|^"$(PROJDIR)^"] [S|CPUTYPE|RX600] [S|ENDIAN|LITTLE] [S|CPU|Other] " 4 -"[V|VERSION|2] [S|OUTPUTPATH|^"$(CONFIGDIR)\lib$(PROJECTNAME).a^"] [B|OPTIMIZE|1] [I|OPTTYPE|1] [S|MODE|BUILD/CHANGED] [S|CPUTYPE|RX600] [S|ENDIAN|LITTLE] [S|CPU|Other] [B|DOPROJBUILT|1] [B|DOOPTLIB|1] [B|MATH|1] [B|STDIO|1] [B|STDLIB|1] [B|STRING|1] " 1 -[EXCLUDED_FILES_Debug_with_optimisation] -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\main-blinky.c" -[LINKAGE_ORDER_Debug_with_optimisation] -[GENERAL_DATA_CONFIGURATION_Debug_with_optimisation] -[GENERAL_DATA_CONFIGURATION_SESSION_Blinky_DefaultSession] -[SESSION_DATA_CONFIGURATION_SESSION_Blinky_DefaultSession] -"MEMORY_MAPPING_OPTIONS" "" -[GENERAL_DATA_CONFIGURATION_SESSION_Blinky_SessionRX600_E1_E20_SYSTEM] -[SESSION_DATA_CONFIGURATION_SESSION_Blinky_SessionRX600_E1_E20_SYSTEM] -"MEMORY_MAPPING_OPTIONS" "Unknown Options" -[GENERAL_DATA_CONFIGURATION_SESSION_Debug_DefaultSession] -[SESSION_DATA_CONFIGURATION_SESSION_Debug_DefaultSession] -"MEMORY_MAPPING_OPTIONS" "" -[GENERAL_DATA_CONFIGURATION_SESSION_Debug_SessionRX600_E1_E20_SYSTEM] -[SESSION_DATA_CONFIGURATION_SESSION_Debug_SessionRX600_E1_E20_SYSTEM] -"MEMORY_MAPPING_OPTIONS" "Unknown Options" -[GENERAL_DATA_CONFIGURATION_SESSION_Debug_RX600_E1_E20_SYSTEM_DefaultSession] -[SESSION_DATA_CONFIGURATION_SESSION_Debug_RX600_E1_E20_SYSTEM_DefaultSession] -"MEMORY_MAPPING_OPTIONS" "" -[GENERAL_DATA_CONFIGURATION_SESSION_Debug_RX600_E1_E20_SYSTEM_SessionRX600_E1_E20_SYSTEM] -[SESSION_DATA_CONFIGURATION_SESSION_Debug_RX600_E1_E20_SYSTEM_SessionRX600_E1_E20_SYSTEM] -"MEMORY_MAPPING_OPTIONS" "Unknown Options" -[GENERAL_DATA_CONFIGURATION_SESSION_Debug_with_optimisation_DefaultSession] -[SESSION_DATA_CONFIGURATION_SESSION_Debug_with_optimisation_DefaultSession] -"MEMORY_MAPPING_OPTIONS" "" -[GENERAL_DATA_CONFIGURATION_SESSION_Debug_with_optimisation_SessionRX600_E1_E20_SYSTEM] -[SESSION_DATA_CONFIGURATION_SESSION_Debug_with_optimisation_SessionRX600_E1_E20_SYSTEM] -"MEMORY_MAPPING_OPTIONS" "Unknown Options" -[EXT_DEBUGGER_INFO] -0 "" "" "" "" -[END] diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/RTOSDemo.nav b/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/RTOSDemo.nav deleted file mode 100644 index dd731a5e2..000000000 Binary files a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/RTOSDemo.nav and /dev/null differ diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/RTOSDemo.tps b/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/RTOSDemo.tps deleted file mode 100644 index fa3691409..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/RTOSDemo.tps +++ /dev/null @@ -1,48 +0,0 @@ -[HIMDBVersion] -2.0 -[DATABASE_VERSION] -"1.1" -[SESSIONS_] -"DefaultSession" -"SessionRX600_E1_E20_SYSTEM" -[CONFIGURATIONS] -"Blinky" -"Debug" -"Debug_RX600_E1_E20_SYSTEM" -"Debug_with_optimisation" -[CURRENT_CONFIGURATION] -"Blinky" -[CURRENT_SESSION] -"SessionRX600_E1_E20_SYSTEM" -[GENERAL_DATA_PROJECT] -[GENERAL_DATA_CONFIGURATION_Blinky] -"PROJECT_FILES_MODIFIED_DATA_TAG" "FALSE" -[SESSIONS_Blinky] -"DefaultSession" -"SessionRX600_E1_E20_SYSTEM" -[GENERAL_DATA_CONFIGURATION_Debug] -"PROJECT_FILES_MODIFIED_DATA_TAG" "FALSE" -[SESSIONS_Debug] -"DefaultSession" -"SessionRX600_E1_E20_SYSTEM" -[GENERAL_DATA_CONFIGURATION_Debug_RX600_E1_E20_SYSTEM] -"PROJECT_FILES_MODIFIED_DATA_TAG" "TRUE" -[SESSIONS_Debug_RX600_E1_E20_SYSTEM] -"DefaultSession" -"SessionRX600_E1_E20_SYSTEM" -[GENERAL_DATA_CONFIGURATION_Debug_with_optimisation] -"PROJECT_FILES_MODIFIED_DATA_TAG" "FALSE" -[SESSIONS_Debug_with_optimisation] -"DefaultSession" -"SessionRX600_E1_E20_SYSTEM" -[GENERAL_DATA_SESSION_DefaultSession] -[GENERAL_DATA_CONFIGURATION_SESSION_Blinky_SessionRX600_E1_E20_SYSTEM] -[GENERAL_DATA_CONFIGURATION_SESSION_Blinky_DefaultSession] -[GENERAL_DATA_CONFIGURATION_SESSION_Debug_RX600_E1_E20_SYSTEM_SessionRX600_E1_E20_SYSTEM] -[GENERAL_DATA_CONFIGURATION_SESSION_Debug_DefaultSession] -[GENERAL_DATA_CONFIGURATION_SESSION_Debug_RX600_E1_E20_SYSTEM_DefaultSession] -[GENERAL_DATA_CONFIGURATION_SESSION_Debug_SessionRX600_E1_E20_SYSTEM] -[GENERAL_DATA_CONFIGURATION_SESSION_Debug_with_optimisation_DefaultSession] -[GENERAL_DATA_CONFIGURATION_SESSION_Debug_with_optimisation_SessionRX600_E1_E20_SYSTEM] -[GENERAL_DATA_SESSION_SessionRX600_E1_E20_SYSTEM] -[END] diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/Renesas-Files/hwsetup.c b/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/Renesas-Files/hwsetup.c deleted file mode 100644 index 2259a0c90..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/Renesas-Files/hwsetup.c +++ /dev/null @@ -1,227 +0,0 @@ -/****************************************************************************** -* DISCLAIMER - -* This software is supplied by Renesas Technology Corp. and is only -* intended for use with Renesas products. No other uses are authorized. - -* This software is owned by Renesas Technology Corp. and is protected under -* all applicable laws, including copyright laws. - -* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES -* REGARDING THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, -* INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A -* PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY -* DISCLAIMED. - -* TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS -* TECHNOLOGY CORP. NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE -* FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES -* FOR ANY REASON RELATED TO THE THIS SOFTWARE, EVEN IF RENESAS OR ITS -* AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - -* Renesas reserves the right, without notice, to make changes to this -* software and to discontinue the availability of this software. -* By using this software, you agree to the additional terms and -* conditions found by accessing the following link: -* http://www.renesas.com/disclaimer -****************************************************************************** -* Copyright (C) 2008. Renesas Technology Corp., All Rights Reserved. -******************************************************************************* -* File Name : hwsetup.c -* Version : 1.00 -* Description : Power up hardware initializations -****************************************************************************** -* History : DD.MM.YYYY Version Description -* : 15.02.2010 1.00 First Release -******************************************************************************/ - - -/****************************************************************************** -Includes , "Project Includes" -******************************************************************************/ -#include "iodefine.h" -#include "rskrx62ndef.h" -// #include "lcd.h" Uncomment this if an LCD is present. - -/****************************************************************************** -Typedef definitions -******************************************************************************/ - -/****************************************************************************** -Macro definitions -******************************************************************************/ - -/****************************************************************************** -Imported global variables and functions (from other files) -******************************************************************************/ - -/****************************************************************************** -Exported global variables and functions (to be accessed by other files) -******************************************************************************/ - -/****************************************************************************** -Private global variables and functions -******************************************************************************/ -void io_set_cpg(void); -void ConfigurePortPins(void); -void EnablePeripheralModules(void); - -/****************************************************************************** -* Function Name: HardwareSetup -* Description : This function does initial setting for CPG port pins used in -* : the Demo including the MII pins of the Ethernet PHY connection. -* Arguments : none -* Return Value : none -******************************************************************************/ -void HardwareSetup(void) -{ - /* CPG setting */ - io_set_cpg(); - - /* Setup the port pins */ - ConfigurePortPins(); - - /* Enables peripherals */ - EnablePeripheralModules(); - -#if INCLUDE_LCD == 1 - /* Initialize display */ - InitialiseDisplay(); -#endif -} - -/****************************************************************************** -* Function Name: EnablePeripheralModules -* Description : Enables Peripheral Modules before use -* Arguments : none -* Return Value : none -******************************************************************************/ -void EnablePeripheralModules(void) -{ - /* Module standby clear */ - SYSTEM.MSTPCRB.BIT.MSTPB15 = 0; /* EtherC, EDMAC */ - SYSTEM.MSTPCRA.BIT.MSTPA15 = 0; /* CMT0 */ -} - -/****************************************************************************** -* Function Name: ConfigurePortPins -* Description : Configures port pins. -* Arguments : none -* Return Value : none -******************************************************************************/ -void ConfigurePortPins(void) -{ -/* Port pins default to inputs. To ensure safe initialisation set the pin states -before changing the data direction registers. This will avoid any unintentional -state changes on the external ports. -Many peripheral modules will override the setting of the port registers. Ensure -that the state is safe for external devices if the internal peripheral module is -disabled or powered down. */ - - /* ==== MII/RMII Pins setting ==== */ - /*--------------------------------------*/ - /* Port Function Control Register */ - /*--------------------------------------*/ -#if ETH_MODE_SEL == ETH_MII_MODE - /* EE=1, PHYMODE=1, ENETE3=1, ENETE2=0, ENETE1=1, ENETE0=0 (Ethernet) */ - IOPORT.PFENET.BYTE = 0x9A; -#else /* ETH_MODE_SEL */ - /* EE=1, PHYMODE=0, ENETE3=0, ENETE2=0, ENETE1=1, ENETE0=0 (Ethernet) */ - IOPORT.PFENET.BYTE = 0x82; -#endif /* ETH_MODE_SEL */ - /*-------------------------------------------*/ - /* Input Buffer Control Register (ICR) */ - /*-------------------------------------------*/ -#if ETH_MODE_SEL == ETH_MII_MODE - /* P54=1 Set ET_LINKSTA input */ - PORT5.ICR.BIT.B4 = 1; - /* P71=1 Set ET_MDIO input */ - PORT7.ICR.BIT.B1 = 1; - /* P74=1 Set ET_ERXD1 input */ - PORT7.ICR.BIT.B4 = 1; - /* P75=1 Set ET_ERXD0 input */ - PORT7.ICR.BIT.B5 = 1; - /* P76=1 Set ET_RX_CLK input */ - PORT7.ICR.BIT.B6 = 1; - /* P77=1 Set ET_RX_ER input */ - PORT7.ICR.BIT.B7 = 1; - /* P83=1 Set ET_CRS input */ - PORT8.ICR.BIT.B3 = 1; - /* PC0=1 Set ET_ERXD3 input */ - PORTC.ICR.BIT.B0 = 1; - /* PC1=1 Set ET_ERXD2 input */ - PORTC.ICR.BIT.B1 = 1; - /* PC2=1 Set ET_RX_DV input */ - PORTC.ICR.BIT.B2 = 1; - /* PC4=1 Set EX_TX_CLK input */ - PORTC.ICR.BIT.B4 = 1; - /* PC7=1 Set ET_COL input */ - PORTC.ICR.BIT.B7 = 1; -#else /* ETH_MODE_SEL */ - /* P54=1 Set ET_LINKSTA input */ - PORT5.ICR.BIT.B4 = 1; - /* P71=1 Set ET_MDIO input */ - PORT7.ICR.BIT.B1 = 1; - /* P74=1 Set RMII_RXD1 input */ - PORT7.ICR.BIT.B4 = 1; - /* P75=1 Set RMII_RXD0 input */ - PORT7.ICR.BIT.B5 = 1; - /* P76=1 Set REF50CLK input */ - PORT7.ICR.BIT.B6 = 1; - /* P77=1 Set RMII_RX_ER input */ - PORT7.ICR.BIT.B7 = 1; - /* P83=1 Set RMII_CRS_DV input */ - PORT8.ICR.BIT.B3 = 1; -#endif /* ETH_MODE_SEL */ - - /* Configure LED 0-5 pin settings */ - PORT0.DR.BIT.B2 = 1; - PORT0.DR.BIT.B3 = 1; - PORT0.DR.BIT.B5 = 1; - PORT3.DR.BIT.B4 = 1; - PORT6.DR.BIT.B0 = 1; - PORT7.DR.BIT.B3 = 1; - PORT0.DDR.BIT.B2 = 1; - PORT0.DDR.BIT.B3 = 1; - PORT0.DDR.BIT.B5 = 1; - PORT3.DDR.BIT.B4 = 1; - PORT6.DDR.BIT.B0 = 1; - PORT7.DDR.BIT.B3 = 1; - - /* Configure SW 1-3 pin settings */ - PORT0.DDR.BIT.B0 = 0; - PORT0.DDR.BIT.B1 = 0; - PORT0.DDR.BIT.B7 = 0; - PORT0.ICR.BIT.B0 = 1; - PORT0.ICR.BIT.B1 = 1; - PORT0.ICR.BIT.B7 = 1; - -#if INCLUDE_LCD == 1 - /* Set LCD pins as outputs */ - /* LCD-RS */ - PORT8.DDR.BIT.B4 = 1; - /* LCD-EN */ - PORT8.DDR.BIT.B5 = 1; - /*LCD-data */ - PORT9.DDR.BYTE = 0xF0; -#endif -} - -/****************************************************************************** -* Function Name: io_set_cpg -* Description : Sets up operating speed -* Arguments : none -* Return Value : none -******************************************************************************/ -void io_set_cpg(void) -{ -/* Set CPU PLL operating frequencies. Changes to the peripheral clock will require -changes to the debugger and flash kernel BRR settings. */ - - /* ==== CPG setting ==== */ - SYSTEM.SCKCR.LONG = 0x00020100; /* Clockin = 12MHz */ - /* I Clock = 96MHz, B Clock = 24MHz, */ - /* P Clock = 48MHz */ - -} - diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/SessionRX600_E1_E20_SYSTEM.hsf b/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/SessionRX600_E1_E20_SYSTEM.hsf deleted file mode 100644 index 5451fee0b..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/SessionRX600_E1_E20_SYSTEM.hsf +++ /dev/null @@ -1,268 +0,0 @@ -[HIMDBVersion] -2.0 -[DATABASE_VERSION] -"2.3" -[SESSION_DETAILS] -"" -[INFORMATION] -"" -[GENERAL_DATA] -"FIRST_CONNECTION_TAG" "NO" -"RESET_CPU_AFTER_DOWNLOAD_TAG" "VARIANT_TRUE_STORE_TAG" -"{228DB593-0AB2-4EBE-A098-A2CABF094E46}RamMonitorCtrlViews" "0" -"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapCtrlECX_MAP_FIND_SYMBOL_LIST" "" -"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapCtrlViews" "0" -"{2BA6A3EE-6488-11D5-80D4-00C04F68EAD7}ECXLABEL_ADDDLG_ADDR" "" -"{2BA6A3EE-6488-11D5-80D4-00C04F68EAD7}LabelCtrlSymbolFileDir" "" -"{2BA6A3EE-6488-11D5-80D4-00C04F68EAD7}LabelCtrlSymbolFileName" "" -"{2BA6A3EE-6488-11D5-80D4-00C04F68EAD7}LabelCtrlViews" "0" -"{2BA6A3EF-6488-11D5-80D4-00C04F68EAD7}StatusCtrlViews" "0" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlBatchFileName" "" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlBreakpointFlag" "-1 " -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlBreakpointStatus" "-1 " -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlBrowseDirectory" "" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlLogFileName" "" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlSplitterPosition" "242" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlViews" "1" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlWindowProperties" "17" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineWndInstanceKey0" "{WK_00000001_CmdLine}" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}TclTkCtrlLogFileName" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_COMPARE_END_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_COMPARE_START_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_DISPLAY_DEST_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_DISPLAY_END_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_DISPLAY_START_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_FILL_END_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_FILL_START_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_MOVE_END_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_MOVE_START_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_SEARCH_END_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_SEARCH_START_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_SET_DEST_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_TEST_END_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_TEST_START_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryCtrlViews" "0" -"{4F025ABC-BE66-4CB6-9CEE-06C61418278E}Trace2CtrlSaveFileDir" "" -"{4F025ABC-BE66-4CB6-9CEE-06C61418278E}Trace2CtrlSaveFileName" "" -"{4F025ABC-BE66-4CB6-9CEE-06C61418278E}Trace2CtrlViews" "0" -"{5F75FDA0-6FF0-11D5-B7CE-00E029352378}PACtrlSaveFileDir" "" -"{5F75FDA0-6FF0-11D5-B7CE-00E029352378}PACtrlSaveFileName" "" -"{5F75FDA0-6FF0-11D5-B7CE-00E029352378}PACtrlViews" "0" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_EVAL_DENORMAL_MODE" "16777216" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_EVAL_ROUND_MODE" "768" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_0" "000000000000B678" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_1" "000000000000EB60" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_10" "000000000000EB60" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_11" "00000000FFFFDCDA" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_12" "00000000A5A5A5A5" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_13" "00000000A5A5A5A5" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_14" "00000000A5A5A5A5" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_15" "00000000A5A5A5A5" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_16" "000000000000B678" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_17" "0000000000017FA0" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_18" "0000000000030004" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_19" "00000000FFF8B4BD" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_2" "00000000A5A5A5A5" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_20" "00000000FFF8E6D8" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_21" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_22" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_23" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_24" "0000000040000100" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_25" "00008A613AE30000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_3" "00000000A5A5A5A5" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_4" "00000000A5A5A5A5" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_5" "00000000A5A5A5A5" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_6" "000000000000B678" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_7" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_8" "00000000A5A5A5A5" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_9" "00000000A5A5A5A5" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_COUNT" "26" -"{6C4D5B81-FD67-46A9-A089-EA44DCDE47FD}RAMMonitorManagerCtrlBlockInfoFileDir" "" -"{6C4D5B81-FD67-46A9-A089-EA44DCDE47FD}RAMMonitorManagerCtrlBlockInfoFileName" "" -"{7943C44E-7D44-422A-9140-4CF55C88F7D3}DifferenceCtrlViews" "0" -"{855C64C3-E49C-4450-9BCA-C9822566D214}OSObjectCtrlViews" "0" -"{8A898260-6F1D-11D5-8EB6-00004CC34E9D}ECX_WAVE" "00000000,00000000,0,0" -"{8A898260-6F1D-11D5-8EB6-00004CC34E9D}ECX_WAVE_ADDRESS_NAME" "" -"{8A898260-6F1D-11D5-8EB6-00004CC34E9D}ECX_WAVE_COMB_ADDRESS" ",,,," -"{8A898260-6F1D-11D5-8EB6-00004CC34E9D}ECX_WAVE_COMB_BUFFER" ",,,," -"{8A898260-6F1D-11D5-8EB6-00004CC34E9D}ECX_WAVE_SAMPLING_RATE" "1000" -"{8A898260-6F1D-11D5-8EB6-00004CC34E9D}WaveformCtrlViews" "0" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersCtrlViews" "0" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWnd0ColumnWidth" "47,153,48" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWnd0ECX_REGISTER_COUNT" "33" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWnd0ECX_REGISTER_DISPLAYED" "1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWnd0HideFLAGs" "0" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWnd0HideRadix" "0" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWnd0LastFileName" "" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWnd0RadixList" "16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,2,16,16,16,16,16,16,16," -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndInstanceKey0" "{WK_00000001_REGISTERS}RTOSDemoSessionRX600_E1_E20_SYSTEM" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndViewB0ColumnWidth" "47,153,35" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndViewB0ECX_REGISTER_COUNT" "33" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndViewB0ECX_REGISTER_DISPLAYED" "1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndViewB0HideFLAGs" "0" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndViewB0HideRadix" "0" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndViewB0LastFileName" "" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndViewB0RadixList" "16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,2,16,16,16,16,16,16,16," -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndViewBInstanceKey0" "{WK_00000001_REGISTERS}RTOSDemoSessionRX600_E1_E20_SYSTEMViewB" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_ADDRESS_NAME" "" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_BUFFER" "00000000,00000000,0,0" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_COLOR" "0,0,0,0" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_COMB_ADDRESS" ",,,," -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_COMB_PALETTE" ",,,," -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_PALETTE_NAME" "" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_REDRAW_CONTINUOUSLY" "0,2" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_SAMPLEING_RATE" "1000" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_VIEW" "0,0,0,0,0,0" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ImageCtrlViews" "0" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchCtrlViews" "4" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ColWidth0" "247" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ColWidth1" "150" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ColWidth12" "200" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ColWidth2" "120" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ColWidth3" "200" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEMCnt" "0" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd1ColWidth0" "120" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd1ColWidth1" "150" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd1ColWidth12" "200" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd1ColWidth2" "120" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd1ColWidth3" "200" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd1ECX_WATCH_ITEMCnt" "0" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd2ColWidth0" "120" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd2ColWidth1" "150" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd2ColWidth12" "200" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd2ColWidth2" "120" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd2ColWidth3" "200" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd2ECX_WATCH_ITEMCnt" "0" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd3ColWidth0" "120" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd3ColWidth1" "150" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd3ColWidth12" "200" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd3ColWidth2" "120" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd3ColWidth3" "200" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd3ECX_WATCH_ITEMCnt" "0" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWndInitial_Radix" "0" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWndInstanceKey0" "{WK_00000001_WATCH}RTOSDemoSessionRX600_E1_E20_SYSTEM" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWndRecentFile_WatchRecord" "" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWndRecentFile_WatchSave" "" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWndUpdate_Interval" "100" -"{B39CE26B-928D-4241-BF8F-E15980C81200}DebugConsoleCtrlDCEnable" "1" -"{B39CE26B-928D-4241-BF8F-E15980C81200}DebugConsoleCtrlLocalEchoEnable" "1" -"{B39CE26B-928D-4241-BF8F-E15980C81200}DebugConsoleCtrlLogFileName" "" -"{B39CE26B-928D-4241-BF8F-E15980C81200}DebugConsoleCtrlPortBaudIndex" "0" -"{B39CE26B-928D-4241-BF8F-E15980C81200}DebugConsoleCtrlPortName" "" -"{B39CE26B-928D-4241-BF8F-E15980C81200}DebugConsoleCtrlSendDataTimeout" "50" -"{B39CE26B-928D-4241-BF8F-E15980C81200}DebugConsoleCtrlViews" "1" -"{B39CE26B-928D-4241-BF8F-E15980C81200}DebugConsoleWndInstanceKey0" "{WK_00000001_DEBUGCONSOLE}RTOSDemoSessionRX600_E1_E20_SYSTEM" -"{B6AE2E1F-5221-4A44-91C2-8C3097B41A69}StartStopCheckAfter" "0" -"{B6AE2E1F-5221-4A44-91C2-8C3097B41A69}StartStopCheckBefore" "0" -"{B6AE2E1F-5221-4A44-91C2-8C3097B41A69}StartStopExpAfter" "" -"{B6AE2E1F-5221-4A44-91C2-8C3097B41A69}StartStopExpBefore" "" -"{B6AE2E1F-5221-4A44-91C2-8C3097B41A69}T_SESSION_IS_SAVED" "YES" -"{CBEBB610-1516-11D4-8F2D-00409545B67B}ElfDwarf2Objects" "1" -"{CBEBB610-1516-11D4-8F2D-00409545B67B}LoadModule0OBJ_ELFDWARF2_ARRAY_EXPAND_LIMIT" "-1" -"{CBEBB610-1516-11D4-8F2D-00409545B67B}LoadModule0OBJ_ELFDWARF2_STATIC_MEM_EXPAND" "1" -"{EEDC9300-6FBE-11D5-8613-00A024591A38}LocalsCtrlViews" "0" -"{EEDC9301-6FBE-11D5-8613-00A024591A38}StackTraceCtrlViews" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOCtrlIOFile" "" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOCtrlSaveFileDir" "$(CONFIGDIR)" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOCtrlSaveFileName" "" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOCtrlViews" "0" -"{F923CED3-3318-4B43-B931-0AE76B289176}TaskTraceCtrlAnalyzeViews" "0" -"{F923CED3-3318-4B43-B931-0AE76B289176}TaskTraceCtrlFileSaveDirectory" "" -"{F923CED3-3318-4B43-B931-0AE76B289176}TaskTraceCtrlTraceViews" "0" -[LANGUAGE] -"English" -[CONFIG_INFO_VD1] -0 -[CONFIG_INFO_VD2] -0 -[CONFIG_INFO_VD3] -0 -[CONFIG_INFO_VD4] -0 -[WINDOW_POSITION_STATE_DATA_VD1] -"Help" "TOOLBAR 0" 59419 1 5 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_00000001_CmdLine}" "WINDOW" 59422 0 1 "0.07" 252 0 0 100 100 17 0 "32771|32772|32778|<>|32773|32774|<>" "0.0" -"{WK_00000001_DEBUGCONSOLE}RTOSDemoSessionRX600_E1_E20_SYSTEM" "WINDOW" 59422 5 0 "1.00" 146 0 0 350 200 17 0 "57634|57637|57633|<>|32781|32782|<>|32780|32785|32787" "0.0" -"{WK_00000001_OUTPUT}" "WINDOW" 59422 0 0 "1.00" 252 560 340 350 200 18 0 "36756|36757|36758|36759|<>|36746|36747|<>|39531|<>|39500|39534|<>|36687" "0.0" -"{WK_00000001_REGISTERS}RTOSDemoSessionRX600_E1_E20_SYSTEM" "WINDOW" 59421 0 0 "1.00" 413 0 0 350 200 2065 0 "" "0.0" -"{WK_00000001_WATCH}RTOSDemoSessionRX600_E1_E20_SYSTEM" "WINDOW" 59421 0 0 "1.00" 441 0 0 853 610 17 0 "32781|32783|<>|32771|32829|32772|32827|32773|<>|32786|<>|32810|32811" "0.0" -"{WK_00000002_WORKSPACE}" "WINDOW" 59420 0 0 "1.00" 342 560 340 350 200 18 0 "" "0.0" -"{WK_TB00000001_STANDARD}" "TOOLBAR 0" 59419 0 2 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000002_EDITOR}" "TOOLBAR 0" 59419 0 0 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000003_BOOKMARKS}" "TOOLBAR 0" 59419 1 1 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000004_TEMPLATES}" "TOOLBAR 0" 59419 1 0 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000005_SEARCH}" "TOOLBAR 0" 59419 0 1 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000007_DEBUG}" "TOOLBAR 0" 59419 2 0 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000008_DEBUGRUN}" "TOOLBAR 0" 59419 2 1 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000009_VERSIONCONTROL}" "TOOLBAR 0" 59419 1 3 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000011_CPU}" "TOOLBAR 0" 59419 2 2 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000012_MAP}" "TOOLBAR 0" 59419 1 4 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000013_SYMBOL}" "TOOLBAR 0" 59419 2 4 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000014_CODE}" "TOOLBAR 0" 59419 2 9 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000015_PERFORMANCE}" "TOOLBAR 0" 59419 2 10 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000016_GRAPHIC}" "TOOLBAR 0" 59419 2 8 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000018_DEFAULTWINDOW}" "TOOLBAR 0" 59419 1 2 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000023_RTOS}" "TOOLBAR 0" 59419 2 11 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000025_HELPSYSTEMTOOL}" "TOOLBAR 0" 59419 2 3 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000026_MACRO}" "TOOLBAR 0" 59419 1 6 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000027_EVENT}" "TOOLBAR 0" 59419 2 7 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000028_RTOSDEBUG}" "TOOLBAR 0" 59419 2 2 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000029_SYSTEMTOOL}" "TOOLBAR 0" 59419 2 4 "0.00" 0 0 0 0 0 17 0 "" "0.0" -[WINDOW_POSITION_STATE_DATA_VD2] -[WINDOW_POSITION_STATE_DATA_VD3] -[WINDOW_POSITION_STATE_DATA_VD4] -[WINDOW_Z_ORDER] -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\main-blinky.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\main-full.c" -[TARGET_NAME] -"RX600 E1/E20 SYSTEM" "" 0 -[STATUSBAR_STATEINFO_VD1] -"MasterShowState" 1 -"ApplicationShowState" 1 -"DebuggerShowState" 1 -[STATUSBAR_STATEINFO_VD2] -"MasterShowState" 1 -"ApplicationShowState" 1 -"DebuggerShowState" 1 -[STATUSBAR_STATEINFO_VD3] -"MasterShowState" 1 -"ApplicationShowState" 1 -"DebuggerShowState" 1 -[STATUSBAR_STATEINFO_VD4] -"MasterShowState" 1 -"ApplicationShowState" 1 -"DebuggerShowState" 1 -[STATUSBAR_DEBUGGER_PANESTATE_VD1] -"SBK_TAR_EMUE100|Exception" 1 -"SBK_TAR_EMUE100|BreakCondition" 1 -"SBK_TAR_EMUE100|TaskID" 1 -"SBK_TAR_EMUE100|PC" 1 -"SBK_TAR_EMUE100|ExecutionTime" 1 -[STATUSBAR_DEBUGGER_PANESTATE_VD2] -[STATUSBAR_DEBUGGER_PANESTATE_VD3] -[STATUSBAR_DEBUGGER_PANESTATE_VD4] -[DEBUGGER_OPTIONS] -"Unknown Options" -[DOWNLOAD_MODULES] -"$(CONFIGDIR)\$(PROJECTNAME).x" 0 "Elf/Dwarf2_KPIT" 0 0 1 0 -[CONNECT_ON_GO] -"FALSE" -[DOWNLOAD_MODULES_AFTER_BUILD] -"TRUE" -[REMOVE_BREAKPOINTS_ON_DOWNLOAD] -"FALSE" -[DISABLE_MEMORY_ACCESS_PRIOR_TO_COMMAND_FILE_EXECUTION] -"FALSE" -[LIMIT_DISASSEMBLY_MEMORY_ACCESS] -"FALSE" -[DISABLE_MEMORY_ACCESS_DURING_EXECUTION] -"TRUE" -[DEBUGGER_OPTIONS_PROPERTIES] -"1" -[COMMAND_FILES] -[DEFAULT_DEBUG_FORMAT] -"Elf/Dwarf2_KPIT" -[FLASH_DETAILS] -"" 0 0 "" 0 "" 0 0 "" 0 0 0 0 0 0 0 "" "" "" "" "" -[BREAKPOINTS] -[END] diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/SessionRX600_E1_E20_SYSTEM.ini b/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/SessionRX600_E1_E20_SYSTEM.ini deleted file mode 100644 index cc95f9211..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/SessionRX600_E1_E20_SYSTEM.ini +++ /dev/null @@ -1,31 +0,0 @@ -[Init_DeviceSetting] -DebugMode=0 -PowerOut=0 -ResetRelease=0 -EmulatorSerial=E1:_9KM000237 -McuGroup=RX62N Group -Device=R5F562N8 -McuFileDir=RX62NGr -SupplyVoltage=-1 -[Init_CommunicationClock] -JtagClock=16.5 -JtagClockValue=10 -[Init_EmulatorSetting] -FirstStartUp=1 -HideNext=0 -ConnectionDlgAutoClose=1 -FirstStartUpV10200=0 -[CFG_MCU] -PrevDevice=R5F562N8 -ProcessorMode=0 -EXTAL=12.0000 -WorkRam=3000 -[CFG_SYSTEM] -CpuReWrite=0 -PerfCounterUser=0 -TraceDebugAs=0 -[CFG_FLASHCLEAR_R5F562N8_00] -BlockCount=54 -BlockData=000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -[Config_Property] -HideNext=0 diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/include/IntQueueTimer.h b/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/include/IntQueueTimer.h deleted file mode 100644 index a13dac500..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/include/IntQueueTimer.h +++ /dev/null @@ -1,36 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -#ifndef INT_QUEUE_TIMER_H -#define INT_QUEUE_TIMER_H - -void vInitialiseTimerForIntQueueTest( void ); -portBASE_TYPE xTimer0Handler( void ); -portBASE_TYPE xTimer1Handler( void ); - -#endif - diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/include/inthandler.h b/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/include/inthandler.h deleted file mode 100644 index f55efcaf6..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/include/inthandler.h +++ /dev/null @@ -1,714 +0,0 @@ -/***********************************************************************/ -/* */ -/* FILE :inthandler.h */ -/* DATE :Wed, Aug 25, 2010 */ -/* DESCRIPTION :Interrupt Handler Declarations */ -/* CPU TYPE :Other */ -/* */ -/* This file is generated by KPIT GNU Project Generator. */ -/* */ -/***********************************************************************/ - - - -#ifndef INTHANDLER_H -#define INTHANDLER_H - -// Exception(Supervisor Instruction) -void INT_Excep_SuperVisorInst(void) __attribute__ ((interrupt)); - -// Exception(Undefined Instruction) -void INT_Excep_UndefinedInst(void) __attribute__ ((interrupt)); - -// Exception(Floating Point) -void INT_Excep_FloatingPoint(void) __attribute__ ((interrupt)); - -// NMI -void INT_NonMaskableInterrupt(void) __attribute__ ((interrupt)); - -// Dummy -void Dummy (void) __attribute__ ((interrupt)); - -// BRK -void INT_Excep_BRK(void) __attribute__ ((interrupt)); - -// vector 1 reserved -// vector 2 reserved -// vector 3 reserved -// vector 4 reserved -// vector 5 reserved -// vector 6 reserved -// vector 7 reserved -// vector 8 reserved -// vector 9 reserved -// vector 10 reserved -// vector 11 reserved -// vector 12 reserved -// vector 13 reserved -// vector 14 reserved -// vector 15 reserved - -// BUSERR - -void INT_Excep_BUSERR(void) __attribute__ ((interrupt)); - -// vector 17 reserved -// vector 18 reserved -// vector 19 reserved -// vector 20 reserved - -// FCU_FCUERR - -void INT_Excep_FCU_FCUERR(void) __attribute__ ((interrupt)); - -// vector 22 reserved - -// FCU_FRDYI - -void INT_Excep_FCU_FRDYI(void) __attribute__ ((interrupt)); - -// vector 24 reserved -// vector 25 reserved -// vector 26 reserved -// vector 27 reserved - -// CMTU0_CMT0 - -void INT_Excep_CMTU0_CMT0(void) __attribute__ ((interrupt)); - -// CMTU0_CMT1 - -void INT_Excep_CMTU0_CMT1(void) __attribute__ ((interrupt)); - -// CMTU1_CMT2 - -void INT_Excep_CMTU1_CMT2(void) __attribute__ ((interrupt)); - -// CMTU1_CMT3 - -void INT_Excep_CMTU1_CMT3(void) __attribute__ ((interrupt)); - -// vector 32 reserved -// vector 33 reserved -// vector 34 reserved -// vector 35 reserved -// vector 36 reserved -// vector 37 reserved -// vector 38 reserved -// vector 39 reserved -// vector 40 reserved -// vector 41 reserved -// vector 42 reserved -// vector 43 reserved -// vector 44 reserved -// vector 45 reserved -// vector 46 reserved -// vector 47 reserved -// vector 48 reserved -// vector 49 reserved -// vector 50 reserved -// vector 51 reserved -// vector 52 reserved -// vector 53 reserved -// vector 54 reserved -// vector 55 reserved -// vector 56 reserved -// vector 57 reserved -// vector 58 reserved -// vector 59 reserved -// vector 60 reserved -// vector 61 reserved -// vector 62 reserved -// vector 63 reserved - -// IRQ0 - -void INT_Excep_IRQ0(void) __attribute__ ((interrupt)); - -// IRQ1 - -void INT_Excep_IRQ1(void) __attribute__ ((interrupt)); - -// IRQ2 - -void INT_Excep_IRQ2(void) __attribute__ ((interrupt)); - -// IRQ3 - -void INT_Excep_IRQ3(void) __attribute__ ((interrupt)); - -// IRQ4 - -void INT_Excep_IRQ4(void) __attribute__ ((interrupt)); - -// IRQ5 - -void INT_Excep_IRQ5(void) __attribute__ ((interrupt)); - -// IRQ6 - -void INT_Excep_IRQ6(void) __attribute__ ((interrupt)); - -// IRQ7 - -void INT_Excep_IRQ7(void) __attribute__ ((interrupt)); - -// IRQ8 - -void INT_Excep_IRQ8(void) __attribute__ ((interrupt)); - -// IRQ9 - -void INT_Excep_IRQ9(void) __attribute__ ((interrupt)); - -// IRQ10 - -void INT_Excep_IRQ10(void) __attribute__ ((interrupt)); - -// IRQ11 - -void INT_Excep_IRQ11(void) __attribute__ ((interrupt)); - -// IRQ12 - -void INT_Excep_IRQ12(void) __attribute__ ((interrupt)); - -// IRQ13 - -void INT_Excep_IRQ13(void) __attribute__ ((interrupt)); - -// IRQ14 - -void INT_Excep_IRQ14(void) __attribute__ ((interrupt)); - -// IRQ15 - -void INT_Excep_IRQ15(void) __attribute__ ((interrupt)); - -// vector 80 reserved -// vector 81 reserved -// vector 82 reserved -// vector 83 reserved -// vector 84 reserved -// vector 85 reserved -// vector 86 reserved -// vector 87 reserved -// vector 88 reserved -// vector 89 reserved -// vector 90 reserved -// vector 91 reserved -// vector 92 reserved -// vector 93 reserved -// vector 94 reserved -// vector 95 reserved - -// WDT_WOVI - -void INT_Excep_WDT_WOVI(void) __attribute__ ((interrupt)); - -// vector 97 reserved - -// AD0_ADI0 - -void INT_Excep_AD0_ADI0(void) __attribute__ ((interrupt)); - -// AD1_ADI1 - -void INT_Excep_AD1_ADI1(void) __attribute__ ((interrupt)); - -// AD2_ADI2 - -void INT_Excep_AD2_ADI2(void) __attribute__ ((interrupt)); - -// AD3_ADI3 - -void INT_Excep_AD3_ADI3(void) __attribute__ ((interrupt)); - -// vector 102 reserved -// vector 103 reserved - -// TPU0_TGI0A - -void INT_Excep_TPU0_TGI0A(void) __attribute__ ((interrupt)); - -// TPU0_TGI0B - -void INT_Excep_TPU0_TGI0B(void) __attribute__ ((interrupt)); - -// TPU0_TGI0C - -void INT_Excep_TPU0_TGI0C(void) __attribute__ ((interrupt)); - -// TPU0_TGI0D - -void INT_Excep_TPU0_TGI0D(void) __attribute__ ((interrupt)); - -// TPU0_TCI0V - -void INT_Excep_TPU0_TCI0V(void) __attribute__ ((interrupt)); - -// vector 109 reserved -// vector 110 reserved - -// TPU1_TGI1A - -void INT_Excep_TPU1_TGI1A(void) __attribute__ ((interrupt)); - -// TPU1_TGI1B - -void INT_Excep_TPU1_TGI1B(void) __attribute__ ((interrupt)); - -// vector 113 reserved -// vector 114 reserved - -// TPU1_TCI1V - -void INT_Excep_TPU1_TCI1V(void) __attribute__ ((interrupt)); - -// TPU1_TCI1U - -void INT_Excep_TPU1_TCI1U(void) __attribute__ ((interrupt)); - -// TPU2_TGI2A - -void INT_Excep_TPU2_TGI2A(void) __attribute__ ((interrupt)); - -// TPU2_TGI2B - -void INT_Excep_TPU2_TGI2B(void) __attribute__ ((interrupt)); - -// vector 119 reserved - -// TPU2_TCI2V - -void INT_Excep_TPU2_TCI2V(void) __attribute__ ((interrupt)); - -// TPU2_TCI2U - -void INT_Excep_TPU2_TCI2U(void) __attribute__ ((interrupt)); - -// TPU3_TGI3A - -void INT_Excep_TPU3_TGI3A(void) __attribute__ ((interrupt)); - -// TPU3_TGI3B - -void INT_Excep_TPU3_TGI3B(void) __attribute__ ((interrupt)); - -// TPU3_TGI3C - -void INT_Excep_TPU3_TGI3C(void) __attribute__ ((interrupt)); - -// TPU3_TGI3D - -void INT_Excep_TPU3_TGI3D(void) __attribute__ ((interrupt)); - -// TPU3_TCI3V - -void INT_Excep_TPU3_TCI3V(void) __attribute__ ((interrupt)); - -// TPU4_TGI4A - -void INT_Excep_TPU4_TGI4A(void) __attribute__ ((interrupt)); - -// TPU4_TGI4B - -void INT_Excep_TPU4_TGI4B(void) __attribute__ ((interrupt)); - -// vector 129 reserved -// vector 130 reserved - -// TPU4_TCI4V - -void INT_Excep_TPU4_TCI4V(void) __attribute__ ((interrupt)); - -// TPU4_TCI4U - -void INT_Excep_TPU4_TCI4U(void) __attribute__ ((interrupt)); - -// TPU5_TGI5A - -void INT_Excep_TPU5_TGI5A(void) __attribute__ ((interrupt)); - -// TPU5_TGI5B - -void INT_Excep_TPU5_TGI5B(void) __attribute__ ((interrupt)); - -// vector 135 reserved - -// TPU5_TCI5V - -void INT_Excep_TPU5_TCI5V(void) __attribute__ ((interrupt)); - -// TPU5_TCI5U - -void INT_Excep_TPU5_TCI5U(void) __attribute__ ((interrupt)); - -// TPU6_TGI6A - -void INT_Excep_TPU6_TGI6A(void) __attribute__ ((interrupt)); - -// TPU6_TGI6B - -void INT_Excep_TPU6_TGI6B(void) __attribute__ ((interrupt)); - -// TPU6_TGI6C - -void INT_Excep_TPU6_TGI6C(void) __attribute__ ((interrupt)); - -// TPU6_TGI6D - -void INT_Excep_TPU6_TGI6D(void) __attribute__ ((interrupt)); - -// TPU6_TCI6V - -void INT_Excep_TPU6_TCI6V(void) __attribute__ ((interrupt)); - -// vector 143 reserved -// vector 144 reserved - -// TPU7_TGI7A - -void INT_Excep_TPU7_TGI7A(void) __attribute__ ((interrupt)); - -// TPU7_TGI7B - -void INT_Excep_TPU7_TGI7B(void) __attribute__ ((interrupt)); - -// vector 147 reserved -// vector 148 reserved - -// TPU7_TCI7V - -void INT_Excep_TPU7_TCI7V(void) __attribute__ ((interrupt)); - -// TPU7_TCI7U - -void INT_Excep_TPU7_TCI7U(void) __attribute__ ((interrupt)); - -// TPU8_TGI8A - -void INT_Excep_TPU8_TGI8A(void) __attribute__ ((interrupt)); - -// TPU8_TGI8B - -void INT_Excep_TPU8_TGI8B(void) __attribute__ ((interrupt)); - -// vector 153 reserved - -// TPU8_TCI8V - -void INT_Excep_TPU8_TCI8V(void) __attribute__ ((interrupt)); - -// TPU8_TCI8U - -void INT_Excep_TPU8_TCI8U(void) __attribute__ ((interrupt)); - -// TPU9_TGI9A - -void INT_Excep_TPU9_TGI9A(void) __attribute__ ((interrupt)); - -// TPU9_TGI9B - -void INT_Excep_TPU9_TGI9B(void) __attribute__ ((interrupt)); - -// TPU9_TGI9C - -void INT_Excep_TPU9_TGI9C(void) __attribute__ ((interrupt)); - -// TPU9_TGI9D - -void INT_Excep_TPU9_TGI9D(void) __attribute__ ((interrupt)); - -// TPU9_TCI9V - -void INT_Excep_TPU9_TCI9V(void) __attribute__ ((interrupt)); - -// TPU10_TGI10A - -void INT_Excep_TPU10_TGI10A(void) __attribute__ ((interrupt)); - -// TPU10_TGI10B - -void INT_Excep_TPU10_TGI10B(void) __attribute__ ((interrupt)); - -// vector 163 reserved -// vector 164 reserved - -// TPU10_TCI10V - -void INT_Excep_TPU10_TCI10V(void) __attribute__ ((interrupt)); - -// TPU10_TCI10U - -void INT_Excep_TPU10_TCI10U(void) __attribute__ ((interrupt)); - -// TPU11_TGI11A - -void INT_Excep_TPU11_TGI11A(void) __attribute__ ((interrupt)); - -// TPU11_TGI11B - -void INT_Excep_TPU11_TGI11B(void) __attribute__ ((interrupt)); - -// vector 169 reserved - -// TPU11_TCI11V - -void INT_Excep_TPU11_TCI11V(void) __attribute__ ((interrupt)); - -// TPU11_TCI11U - -void INT_Excep_TPU11_TCI11U(void) __attribute__ ((interrupt)); - -// vector 172 reserved -// vector 173 reserved - -// TMR0_CMI0A - -void INT_Excep_TMR0_CMI0A(void) __attribute__ ((interrupt)); - -// TMR0_CMI0B - -void INT_Excep_TMR0_CMI0B(void) __attribute__ ((interrupt)); - -// TMR0_OV0I - -void INT_Excep_TMR0_OV0I(void) __attribute__ ((interrupt)); - -// TMR1_CMI1A - -void INT_Excep_TMR1_CMI1A(void) __attribute__ ((interrupt)); - -// TMR1_CMI1B - -void INT_Excep_TMR1_CMI1B(void) __attribute__ ((interrupt)); - -// TMR1_OV1I - -void INT_Excep_TMR1_OV1I(void) __attribute__ ((interrupt)); - -// TMR2_CMI2A - -void INT_Excep_TMR2_CMI2A(void) __attribute__ ((interrupt)); - -// TMR2_CMI2B - -void INT_Excep_TMR2_CMI2B(void) __attribute__ ((interrupt)); - -// TMR2_OV2I - -void INT_Excep_TMR2_OV2I(void) __attribute__ ((interrupt)); - -// TMR3_CMI3A - -void INT_Excep_TMR3_CMI3A(void) __attribute__ ((interrupt)); - -// TMR3_CMI3B - -void INT_Excep_TMR3_CMI3B(void) __attribute__ ((interrupt)); - -// TMR3_OV3I - -void INT_Excep_TMR3_OV3I(void) __attribute__ ((interrupt)); - -// vector 186 reserved -// vector 187 reserved -// vector 188 reserved -// vector 189 reserved -// vector 190 reserved -// vector 191 reserved -// vector 192 reserved -// vector 193 reserved -// vector 194 reserved -// vector 195 reserved -// vector 196 reserved -// vector 197 reserved - -// DMAC_DMTEND0 - -void INT_Excep_DMAC_DMTEND0(void); - -// DMAC_DMTEND1 - -void INT_Excep_DMAC_DMTEND1(void) __attribute__ ((interrupt)); - -// DMAC_DMTEND2 - -void INT_Excep_DMAC_DMTEND2(void) __attribute__ ((interrupt)); - -// DMAC_DMTEND3 - -void INT_Excep_DMAC_DMTEND3(void) __attribute__ ((interrupt)); - -// vector 202 reserved -// vector 203 reserved -// vector 204 reserved -// vector 205 reserved -// vector 206 reserved -// vector 207 reserved -// vector 208 reserved -// vector 209 reserved -// vector 210 reserved -// vector 211 reserved -// vector 212 reserved -// vector 213 reserved - -// SCI0_ERI0 - -void INT_Excep_SCI0_ERI0(void) __attribute__ ((interrupt)); - -// SCI0_RXI0 - -void INT_Excep_SCI0_RXI0(void) __attribute__ ((interrupt)); - -// SCI0_TXI0 - -void INT_Excep_SCI0_TXI0(void) __attribute__ ((interrupt)); - -// SCI0_TEI0 - -void INT_Excep_SCI0_TEI0(void) __attribute__ ((interrupt)); - -// SCI1_ERI1 - -void INT_Excep_SCI1_ERI1(void) __attribute__ ((interrupt)); - -// SCI1_RXI1 - -void INT_Excep_SCI1_RXI1(void) __attribute__ ((interrupt)); - -// SCI1_TXI1 - -void INT_Excep_SCI1_TXI1(void) __attribute__ ((interrupt)); - -// SCI1_TEI1 - -void INT_Excep_SCI1_TEI1(void) __attribute__ ((interrupt)); - -// SCI2_ERI2 - -void INT_Excep_SCI2_ERI2(void) __attribute__ ((interrupt)); - -// SCI2_RXI2 - -void INT_Excep_SCI2_RXI2(void) __attribute__ ((interrupt)); - -// SCI2_TXI2 - -void INT_Excep_SCI2_TXI2(void) __attribute__ ((interrupt)); - -// SCI2_TEI2 - -void INT_Excep_SCI2_TEI2(void) __attribute__ ((interrupt)); - -// SCI3_ERI3 - -void INT_Excep_SCI3_ERI3(void) __attribute__ ((interrupt)); - -// SCI3_RXI3 - -void INT_Excep_SCI3_RXI3(void) __attribute__ ((interrupt)); - -// SCI3_TXI3 - -void INT_Excep_SCI3_TXI3(void) __attribute__ ((interrupt)); - -// SCI3_TEI3 - -void INT_Excep_SCI3_TEI3(void) __attribute__ ((interrupt)); - -// SCI4_ERI4 - -void INT_Excep_SCI4_ERI4(void) __attribute__ ((interrupt)); - -// SCI4_RXI4 - -void INT_Excep_SCI4_RXI4(void) __attribute__ ((interrupt)); - -// SCI4_TXI4 - -void INT_Excep_SCI4_TXI4(void) __attribute__ ((interrupt)); - -// SCI4_TEI4 - -void INT_Excep_SCI4_TEI4(void) __attribute__ ((interrupt)); - -// SCI5_ERI5 - -void INT_Excep_SCI5_ERI5(void) __attribute__ ((interrupt)); - -// SCI5_RXI5 - -void INT_Excep_SCI5_RXI5(void) __attribute__ ((interrupt)); - -// SCI5_TXI5 - -void INT_Excep_SCI5_TXI5(void) __attribute__ ((interrupt)); - -// SCI5_TEI5 - -void INT_Excep_SCI5_TEI5(void) __attribute__ ((interrupt)); - -// SCI6_ERI6 - -void INT_Excep_SCI6_ERI6(void) __attribute__ ((interrupt)); - -// SCI6_RXI6 - -void INT_Excep_SCI6_RXI6(void) __attribute__ ((interrupt)); - -// SCI6_TXI6 - -void INT_Excep_SCI6_TXI6(void) __attribute__ ((interrupt)); - -// SCI6_TEI6 - -void INT_Excep_SCI6_TEI6(void) __attribute__ ((interrupt)); - -// vector 242 reserved -// vector 243 reserved -// vector 244 reserved -// vector 245 reserved - -// RIIC0_EEI0 - -void INT_Excep_RIIC0_EEI0(void) __attribute__ ((interrupt)); - -// RIIC0_RXI0 - -void INT_Excep_RIIC0_RXI0(void) __attribute__ ((interrupt)); - -// RIIC0_TXI0 - -void INT_Excep_RIIC0_TXI0(void) __attribute__ ((interrupt)); - -// RIIC0_TEI0 - -void INT_Excep_RIIC0_TEI0(void) __attribute__ ((interrupt)); - -// RIIC1_EEI1 - -void INT_Excep_RIIC1_EEI1(void) __attribute__ ((interrupt)); - -// RIIC1_RXI1 - -void INT_Excep_RIIC1_RXI1(void) __attribute__ ((interrupt)); - -// RIIC1_TXI1 - -void INT_Excep_RIIC1_TXI1(void) __attribute__ ((interrupt)); - -// RIIC1_TEI1 - -void INT_Excep_RIIC1_TEI1(void) __attribute__ ((interrupt)); - -// vector 254 reserved -// vector 255 reserved - -//;<> -//;Power On Reset PC -extern void PowerON_Reset_PC(void) __attribute__ ((interrupt)); -//;<> - -#endif \ No newline at end of file diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/include/iodefine.h b/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/include/iodefine.h deleted file mode 100644 index bdff17965..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/include/iodefine.h +++ /dev/null @@ -1,14211 +0,0 @@ -/********************************************************************************/ -/* */ -/* Summary : Definition of I/O Register. */ -/* Version : V1.1 (2010-04-21) [Hardware Manual Revision : 0.50] */ -/* File Name : iodefine.h for KPIT GNURX */ -/* Device : RX/RX600/RX62N */ -/* */ -/* Copyright(c) 2010 Renesas Electronics Corp. */ -/* And Renesas Solutions Corp. ,All Rights Reserved. */ -/* */ -/********************************************************************************/ -/* */ -/* CPU TYPE : RX62N */ -/* DESCRIPTION : Definition of ICU Register */ -/* */ -/* Usage : IR,DTCER,IER,IPR of ICU Register */ -/* The following IR, DTCE, IEN, IPR macro functions simplify usage. */ -/* The bit access operation is "Bit_Name(interrupt source,name)". */ -/* A part of the name can be omitted. */ -/* IR(MTU0,TGIA0) = 0; expands to : */ -/* for example : */ -/* ICU.IR[114].BIT.IR = 0; */ -/* */ -/* DTCE(ICU,IRQ0) = 1; expands to : */ -/* ICU.DTCER[64].BIT.DTCE = 1; */ -/* */ -/* IEN(CMT0,CMI0) = 1; expands to : */ -/* ICU.IER[0x03].BIT.IEN4 = 1; */ -/* */ -/* IPR(MTU1,TGIA1) = 2; expands to : */ -/* IPR(MTU1,TGI ) = 2; // TGIA1,TGIB1 share IPR level. */ -/* ICU.IPR[0x53].BIT.IPR = 2; */ -/* */ -/* IPR(SCI0,ERI0) = 3; expands to : */ -/* IPR(SCI0, ) = 3; // SCI0 uses single IPR for all sources. */ -/* ICU.IPR[0x80].BIT.IPR = 3; */ -/* */ -/* Usage : #pragma interrupt Function_Identifier(vect=**) */ -/* The number of vector is "(interrupt source, name)". */ -/* #pragma interrupt INT_IRQ0(vect=VECT(ICU,IRQ0)) expands to : */ -/* for example : */ -/* #pragma interrupt INT_CMT0_CMI0(vect=VECT(CMT0,CMI0)) expands to : */ -/* #pragma interrupt INT_MTU0_TGIA0(vect=VECT(MTU0,TGIA0)) expands to : */ -/* */ -/* Usage : MSTPCRA,MSTPCRB,MSTPCRC of SYSTEM Register */ -/* The bit access operation is "MSTP(name)". */ -/* The name that can be used is a macro name defined with "iodefine.h". */ -/* MSTP(TMR2) = 0; // TMR2,TMR3,TMR23 expands to : */ -/* for example : */ -/* SYSTEM.MSTPCRA.BIT.MSTPA4 = 0; */ -/* MSTP(SCI0) = 0; // SCI0,SMCI0 expands to : */ -/* SYSTEM.MSTPCRB.BIT.MSTPB31 = 0; */ -/* MSTP(MTU4) = 0; // MTUA,MTU0,MTU1,MTU2,MTU3,MTU4,MTU5 expands to : */ -/* SYSTEM.MSTPCRA.BIT.MSTPA9 = 0; */ -/* MSTP(CMT3) = 0; // CMT2,CMT3 expands to : */ -/* SYSTEM.MSTPCRA.BIT.MSTPA14 = 0; */ -/* */ -/********************************************************************************/ - -#ifndef IODEFINE_H -#define IODEFINE_H - -#ifdef __RX_LITTLE_ENDIAN__ /*Little endian*/ - -struct st_system { - union { - unsigned short WORD; - struct { - unsigned short MD0:1; - unsigned short MD1:1; - unsigned short :5; - unsigned short MDE:1; - unsigned short :8; - } BIT; - } MDMONR; - union { - unsigned short WORD; - struct { - unsigned short IROM:1; - unsigned short EXB:1; - unsigned short BSW:2; - unsigned short BOTS:1; - unsigned short :1; - unsigned short UBTS:1; - unsigned short :9; - } BIT; - } MDSR; - unsigned char wk0[2]; - union { - unsigned short WORD; - struct { - unsigned short ROME:1; - unsigned short EXBE:1; - unsigned short :6; - unsigned short KEY:8; - } BIT; - } SYSCR0; - union { - unsigned short WORD; - struct { - unsigned short RAME:1; - unsigned short :15; - } BIT; - } SYSCR1; - unsigned char wk1[2]; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short STS:5; - unsigned short :1; - unsigned short OPE:1; - unsigned short SSBY:1; - } BIT; - } SBYCR; - unsigned char wk2[2]; - union { - unsigned long LONG; - struct { - unsigned long :4; - unsigned long MSTPA4:1; - unsigned long MSTPA5:1; - unsigned long :2; - unsigned long MSTPA8:1; - unsigned long MSTPA9:1; - unsigned long MSTPA10:1; - unsigned long MSTPA11:1; - unsigned long :2; - unsigned long MSTPA14:1; - unsigned long MSTPA15:1; - unsigned long :1; - unsigned long MSTPA17:1; - unsigned long :1; - unsigned long MSTPA19:1; - unsigned long :2; - unsigned long MSTPA22:1; - unsigned long MSTPA23:1; - unsigned long :4; - unsigned long MSTPA28:1; - unsigned long MSTPA29:1; - unsigned long :1; - unsigned long ACSE:1; - } BIT; - } MSTPCRA; - union { - unsigned long LONG; - struct { - unsigned long MSTPB0:1; - unsigned long :14; - unsigned long MSTPB15:1; - unsigned long MSTPB16:1; - unsigned long MSTPB17:1; - unsigned long MSTPB18:1; - unsigned long MSTPB19:1; - unsigned long MSTPB20:1; - unsigned long MSTPB21:1; - unsigned long :1; - unsigned long MSTPB23:1; - unsigned long :1; - unsigned long MSTPB25:1; - unsigned long MSTPB26:1; - unsigned long :1; - unsigned long MSTPB28:1; - unsigned long MSTPB29:1; - unsigned long MSTPB30:1; - unsigned long MSTPB31:1; - } BIT; - } MSTPCRB; - union { - unsigned long LONG; - struct { - unsigned long MSTPC0:1; - unsigned long MSTPC1:1; - unsigned long :30; - } BIT; - } MSTPCRC; - unsigned char wk3[4]; - union { - unsigned long LONG; - struct { - unsigned long :8; - unsigned long PCK:4; - unsigned long :4; - unsigned long BCK:4; - unsigned long :2; - unsigned long PSTOP0:1; - unsigned long PSTOP1:1; - unsigned long ICK:4; - unsigned long :4; - } BIT; - } SCKCR; - unsigned char wk4[12]; - union { - unsigned char BYTE; - struct { - unsigned char BCLKDIV:1; - unsigned char :7; - } BIT; - } BCKCR; - unsigned char wk5[15]; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short OSTDF:1; - unsigned short OSTDE:1; - unsigned short KEY:8; - } BIT; - } OSTDCR; - unsigned char wk6[49726]; - union { - unsigned char BYTE; - struct { - unsigned char RAMCUT0:1; - unsigned char :3; - unsigned char RAMCUT1:1; - unsigned char RAMCUT2:1; - unsigned char IOKEEP:1; - unsigned char DPSBY:1; - } BIT; - } DPSBYCR; - union { - unsigned char BYTE; - struct { - unsigned char WTSTS:6; - unsigned char :2; - } BIT; - } DPSWCR; - union { - unsigned char BYTE; - struct { - unsigned char DIRQ0E:1; - unsigned char DIRQ1E:1; - unsigned char DIRQ2E:1; - unsigned char DIRQ3E:1; - unsigned char DLVDE:1; - unsigned char DRTCE:1; - unsigned char DUSBE:1; - unsigned char DNMIE:1; - } BIT; - } DPSIER; - union { - unsigned char BYTE; - struct { - unsigned char DIRQ0F:1; - unsigned char DIRQ1F:1; - unsigned char DIRQ2F:1; - unsigned char DIRQ3F:1; - unsigned char DLVDF:1; - unsigned char DRTCFF:1; - unsigned char DUSBF:1; - unsigned char DNMIF:1; - } BIT; - } DPSIFR; - union { - unsigned char BYTE; - struct { - unsigned char DIRQ0EG:1; - unsigned char DIRQ1EG:1; - unsigned char DIRQ2EG:1; - unsigned char DIRQ3EG:1; - unsigned char :3; - unsigned char DNMIEG:1; - } BIT; - } DPSIEGR; - union { - unsigned char BYTE; - struct { - unsigned char PORF:1; - unsigned char LVD1F:1; - unsigned char LVD2F:1; - unsigned char :4; - unsigned char DPSRSTF:1; - } BIT; - } RSTSR; - unsigned char wk7[4]; - union { - unsigned char BYTE; - struct { - unsigned char SUBSTOP:1; - unsigned char :7; - } BIT; - } SUBOSCCR; - unsigned char wk8[1]; - unsigned char LVDKEYR; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char LVD1RI:1; - unsigned char LVD1E:1; - unsigned char :2; - unsigned char LVD2RI:1; - unsigned char LVD2E:1; - } BIT; - } LVDCR; - unsigned char wk9[2]; - unsigned char DPSBKR[32]; -}; - -struct st_bsc { - union { - unsigned char BYTE; - struct { - unsigned char STSCLR:1; - unsigned char :7; - } BIT; - } BERCLR; - unsigned char wk0[3]; - union { - unsigned char BYTE; - struct { - unsigned char IGAEN:1; - unsigned char TOEN:1; - unsigned char :6; - } BIT; - } BEREN; - unsigned char wk1[3]; - union { - unsigned char BYTE; - struct { - unsigned char IA:1; - unsigned char TO:1; - unsigned char :2; - unsigned char MST:3; - unsigned char :1; - } BIT; - } BERSR1; - unsigned char wk2[1]; - union { - unsigned short WORD; - struct { - unsigned short :3; - unsigned short ADDR:13; - } BIT; - } BERSR2; - unsigned char wk3[7414]; - union { - unsigned short WORD; - struct { - unsigned short WRMOD:1; - unsigned short :2; - unsigned short EWENB:1; - unsigned short :4; - unsigned short PRENB:1; - unsigned short PWENB:1; - unsigned short :5; - unsigned short PRMOD:1; - } BIT; - } CS0MOD; - union { - unsigned long LONG; - struct { - unsigned long CSPWWAIT:3; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSWWAIT:5; - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - } BIT; - } CS0WCR1; - union { - unsigned long LONG; - struct { - unsigned long CSROFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long WDOFF:3; - unsigned long :5; - unsigned long RDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - } BIT; - } CS0WCR2; - unsigned char wk4[6]; - union { - unsigned short WORD; - struct { - unsigned short WRMOD:1; - unsigned short :2; - unsigned short EWENB:1; - unsigned short :4; - unsigned short PRENB:1; - unsigned short PWENB:1; - unsigned short :5; - unsigned short PRMOD:1; - } BIT; - } CS1MOD; - union { - unsigned long LONG; - struct { - unsigned long CSPWWAIT:3; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSWWAIT:5; - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - } BIT; - } CS1WCR1; - union { - unsigned long LONG; - struct { - unsigned long CSROFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long WDOFF:3; - unsigned long :5; - unsigned long RDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - } BIT; - } CS1WCR2; - unsigned char wk5[6]; - union { - unsigned short WORD; - struct { - unsigned short WRMOD:1; - unsigned short :2; - unsigned short EWENB:1; - unsigned short :4; - unsigned short PRENB:1; - unsigned short PWENB:1; - unsigned short :5; - unsigned short PRMOD:1; - } BIT; - } CS2MOD; - union { - unsigned long LONG; - struct { - unsigned long CSPWWAIT:3; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSWWAIT:5; - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - } BIT; - } CS2WCR1; - union { - unsigned long LONG; - struct { - unsigned long CSROFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long WDOFF:3; - unsigned long :5; - unsigned long RDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - } BIT; - } CS2WCR2; - unsigned char wk6[6]; - union { - unsigned short WORD; - struct { - unsigned short WRMOD:1; - unsigned short :2; - unsigned short EWENB:1; - unsigned short :4; - unsigned short PRENB:1; - unsigned short PWENB:1; - unsigned short :5; - unsigned short PRMOD:1; - } BIT; - } CS3MOD; - union { - unsigned long LONG; - struct { - unsigned long CSPWWAIT:3; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSWWAIT:5; - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - } BIT; - } CS3WCR1; - union { - unsigned long LONG; - struct { - unsigned long CSROFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long WDOFF:3; - unsigned long :5; - unsigned long RDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - } BIT; - } CS3WCR2; - unsigned char wk7[6]; - union { - unsigned short WORD; - struct { - unsigned short WRMOD:1; - unsigned short :2; - unsigned short EWENB:1; - unsigned short :4; - unsigned short PRENB:1; - unsigned short PWENB:1; - unsigned short :5; - unsigned short PRMOD:1; - } BIT; - } CS4MOD; - union { - unsigned long LONG; - struct { - unsigned long CSPWWAIT:3; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSWWAIT:5; - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - } BIT; - } CS4WCR1; - union { - unsigned long LONG; - struct { - unsigned long CSROFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long WDOFF:3; - unsigned long :5; - unsigned long RDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - } BIT; - } CS4WCR2; - unsigned char wk8[6]; - union { - unsigned short WORD; - struct { - unsigned short WRMOD:1; - unsigned short :2; - unsigned short EWENB:1; - unsigned short :4; - unsigned short PRENB:1; - unsigned short PWENB:1; - unsigned short :5; - unsigned short PRMOD:1; - } BIT; - } CS5MOD; - union { - unsigned long LONG; - struct { - unsigned long CSPWWAIT:3; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSWWAIT:5; - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - } BIT; - } CS5WCR1; - union { - unsigned long LONG; - struct { - unsigned long CSROFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long WDOFF:3; - unsigned long :5; - unsigned long RDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - } BIT; - } CS5WCR2; - unsigned char wk9[6]; - union { - unsigned short WORD; - struct { - unsigned short WRMOD:1; - unsigned short :2; - unsigned short EWENB:1; - unsigned short :4; - unsigned short PRENB:1; - unsigned short PWENB:1; - unsigned short :5; - unsigned short PRMOD:1; - } BIT; - } CS6MOD; - union { - unsigned long LONG; - struct { - unsigned long CSPWWAIT:3; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSWWAIT:5; - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - } BIT; - } CS6WCR1; - union { - unsigned long LONG; - struct { - unsigned long CSROFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long WDOFF:3; - unsigned long :5; - unsigned long RDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - } BIT; - } CS6WCR2; - unsigned char wk10[6]; - union { - unsigned short WORD; - struct { - unsigned short WRMOD:1; - unsigned short :2; - unsigned short EWENB:1; - unsigned short :4; - unsigned short PRENB:1; - unsigned short PWENB:1; - unsigned short :5; - unsigned short PRMOD:1; - } BIT; - } CS7MOD; - union { - unsigned long LONG; - struct { - unsigned long CSPWWAIT:3; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSWWAIT:5; - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - } BIT; - } CS7WCR1; - union { - unsigned long LONG; - struct { - unsigned long CSROFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long WDOFF:3; - unsigned long :5; - unsigned long RDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - } BIT; - } CS7WCR2; - unsigned char wk11[1926]; - union { - unsigned short WORD; - struct { - unsigned short EXENB:1; - unsigned short :3; - unsigned short BSIZE:2; - unsigned short :2; - unsigned short EMODE:1; - unsigned short :7; - } BIT; - } CS0CR; - unsigned char wk12[6]; - union { - unsigned short WORD; - struct { - unsigned short RRCV:4; - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - } BIT; - } CS0REC; - unsigned char wk13[6]; - union { - unsigned short WORD; - struct { - unsigned short EXENB:1; - unsigned short :3; - unsigned short BSIZE:2; - unsigned short :2; - unsigned short EMODE:1; - unsigned short :7; - } BIT; - } CS1CR; - unsigned char wk14[6]; - union { - unsigned short WORD; - struct { - unsigned short RRCV:4; - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - } BIT; - } CS1REC; - unsigned char wk15[6]; - union { - unsigned short WORD; - struct { - unsigned short EXENB:1; - unsigned short :3; - unsigned short BSIZE:2; - unsigned short :2; - unsigned short EMODE:1; - unsigned short :7; - } BIT; - } CS2CR; - unsigned char wk16[6]; - union { - unsigned short WORD; - struct { - unsigned short RRCV:4; - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - } BIT; - } CS2REC; - unsigned char wk17[6]; - union { - unsigned short WORD; - struct { - unsigned short EXENB:1; - unsigned short :3; - unsigned short BSIZE:2; - unsigned short :2; - unsigned short EMODE:1; - unsigned short :7; - } BIT; - } CS3CR; - unsigned char wk18[6]; - union { - unsigned short WORD; - struct { - unsigned short RRCV:4; - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - } BIT; - } CS3REC; - unsigned char wk19[6]; - union { - unsigned short WORD; - struct { - unsigned short EXENB:1; - unsigned short :3; - unsigned short BSIZE:2; - unsigned short :2; - unsigned short EMODE:1; - unsigned short :7; - } BIT; - } CS4CR; - unsigned char wk20[6]; - union { - unsigned short WORD; - struct { - unsigned short RRCV:4; - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - } BIT; - } CS4REC; - unsigned char wk21[6]; - union { - unsigned short WORD; - struct { - unsigned short EXENB:1; - unsigned short :3; - unsigned short BSIZE:2; - unsigned short :2; - unsigned short EMODE:1; - unsigned short :7; - } BIT; - } CS5CR; - unsigned char wk22[6]; - union { - unsigned short WORD; - struct { - unsigned short RRCV:4; - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - } BIT; - } CS5REC; - unsigned char wk23[6]; - union { - unsigned short WORD; - struct { - unsigned short EXENB:1; - unsigned short :3; - unsigned short BSIZE:2; - unsigned short :2; - unsigned short EMODE:1; - unsigned short :7; - } BIT; - } CS6CR; - unsigned char wk24[6]; - union { - unsigned short WORD; - struct { - unsigned short RRCV:4; - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - } BIT; - } CS6REC; - unsigned char wk25[6]; - union { - unsigned short WORD; - struct { - unsigned short EXENB:1; - unsigned short :3; - unsigned short BSIZE:2; - unsigned short :2; - unsigned short EMODE:1; - unsigned short :7; - } BIT; - } CS7CR; - unsigned char wk26[6]; - union { - unsigned short WORD; - struct { - unsigned short RRCV:4; - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - } BIT; - } CS7REC; - unsigned char wk27[900]; - union { - unsigned char BYTE; - struct { - unsigned char EXENB:1; - unsigned char :3; - unsigned char BSIZE:2; - unsigned char :2; - } BIT; - } SDCCR; - union { - unsigned char BYTE; - struct { - unsigned char EMODE:1; - unsigned char :7; - } BIT; - } SDCMOD; - union { - unsigned char BYTE; - struct { - unsigned char BE:1; - unsigned char :7; - } BIT; - } SDAMOD; - unsigned char wk28[13]; - union { - unsigned char BYTE; - struct { - unsigned char SFEN:1; - unsigned char :7; - } BIT; - } SDSELF; - unsigned char wk29[3]; - union { - unsigned short WORD; - struct { - unsigned short RFC:12; - unsigned short REFW:4; - } BIT; - } SDRFCR; - union { - unsigned char BYTE; - struct { - unsigned char RFEN:1; - unsigned char :7; - } BIT; - } SDRFEN; - unsigned char wk30[9]; - union { - unsigned char BYTE; - struct { - unsigned char INIRQ:1; - unsigned char :7; - } BIT; - } SDICR; - unsigned char wk31[3]; - union { - unsigned short WORD; - struct { - unsigned short ARFI:4; - unsigned short ARFC:4; - unsigned short PRC:3; - unsigned short :5; - } BIT; - } SDIR; - unsigned char wk32[26]; - union { - unsigned char BYTE; - struct { - unsigned char MXC:2; - unsigned char :6; - } BIT; - } SDADR; - unsigned char wk33[3]; - union { - unsigned long LONG; - struct { - unsigned long CL:3; - unsigned long :5; - unsigned long WR:1; - unsigned long RP:3; - unsigned long RCD:2; - unsigned long :2; - unsigned long RAS:3; - unsigned long :13; - } BIT; - } SDTR; - union { - unsigned short WORD; - struct { - unsigned short MR:15; - unsigned short :1; - } BIT; - } SDMOD; - unsigned char wk34[6]; - union { - unsigned char BYTE; - struct { - unsigned char MRSST:1; - unsigned char :2; - unsigned char INIST:1; - unsigned char SRFST:1; - unsigned char :3; - } BIT; - } SDSR; -}; - -struct st_dmac0 { - void *DMSAR; - void *DMDAR; - unsigned long DMCRA; - unsigned short DMCRB; - unsigned char wk0[2]; - union { - unsigned short WORD; - struct { - unsigned short DCTG:2; - unsigned short :6; - unsigned short SZ:2; - unsigned short :2; - unsigned short DTS:2; - unsigned short MD:2; - } BIT; - } DMTMD; - unsigned char wk1[1]; - union { - unsigned char BYTE; - struct { - unsigned char DARIE:1; - unsigned char SARIE:1; - unsigned char RPTIE:1; - unsigned char ESIE:1; - unsigned char DTIE:1; - unsigned char :3; - } BIT; - } DMINT; - union { - unsigned short WORD; - struct { - unsigned short DARA:5; - unsigned short :1; - unsigned short DM:2; - unsigned short SARA:5; - unsigned short :1; - unsigned short SM:2; - } BIT; - } DMAMD; - unsigned char wk2[2]; - unsigned long DMOFR; - union { - unsigned char BYTE; - struct { - unsigned char DTE:1; - unsigned char :7; - } BIT; - } DMCNT; - union { - unsigned char BYTE; - struct { - unsigned char SWREQ:1; - unsigned char :3; - unsigned char CLRS:1; - unsigned char :3; - } BIT; - } DMREQ; - union { - unsigned char BYTE; - struct { - unsigned char ESIF:1; - unsigned char :3; - unsigned char DTIF:1; - unsigned char :2; - unsigned char ACT:1; - } BIT; - } DMSTS; - union { - unsigned char BYTE; - struct { - unsigned char DISEL:1; - unsigned char :7; - } BIT; - } DMCSL; -}; - -struct st_dmac1 { - void *DMSAR; - void *DMDAR; - unsigned long DMCRA; - unsigned short DMCRB; - unsigned char wk0[2]; - union { - unsigned short WORD; - struct { - unsigned short DCTG:2; - unsigned short :6; - unsigned short SZ:2; - unsigned short :2; - unsigned short DTS:2; - unsigned short MD:2; - } BIT; - } DMTMD; - unsigned char wk1[1]; - union { - unsigned char BYTE; - struct { - unsigned char DARIE:1; - unsigned char SARIE:1; - unsigned char RPTIE:1; - unsigned char ESIE:1; - unsigned char DTIE:1; - unsigned char :3; - } BIT; - } DMINT; - union { - unsigned short WORD; - struct { - unsigned short DARA:5; - unsigned short :1; - unsigned short DM:2; - unsigned short SARA:5; - unsigned short :1; - unsigned short SM:2; - } BIT; - } DMAMD; - unsigned char wk2[6]; - union { - unsigned char BYTE; - struct { - unsigned char DTE:1; - unsigned char :7; - } BIT; - } DMCNT; - union { - unsigned char BYTE; - struct { - unsigned char SWREQ:1; - unsigned char :3; - unsigned char CLRS:1; - unsigned char :3; - } BIT; - } DMREQ; - union { - unsigned char BYTE; - struct { - unsigned char ESIF:1; - unsigned char :3; - unsigned char DTIF:1; - unsigned char :2; - unsigned char ACT:1; - } BIT; - } DMSTS; - union { - unsigned char BYTE; - struct { - unsigned char DISEL:1; - unsigned char :7; - } BIT; - } DMCSL; -}; - -struct st_dmac { - union { - unsigned char BYTE; - struct { - unsigned char DMST:1; - unsigned char :7; - } BIT; - } DMAST; -}; - -struct st_dtc { - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char RRS:1; - unsigned char :3; - } BIT; - } DTCCR; - unsigned char wk0[3]; - void *DTCVBR; - union { - unsigned char BYTE; - struct { - unsigned char SHORT:1; - unsigned char :7; - } BIT; - } DTCADMOD; - unsigned char wk1[3]; - union { - unsigned char BYTE; - struct { - unsigned char DTCST:1; - unsigned char :7; - } BIT; - } DTCST; - unsigned char wk2[1]; - union { - unsigned short WORD; - struct { - unsigned short VECN:8; - unsigned short :7; - unsigned short ACT:1; - } BIT; - } DTCSTS; -}; - -struct st_exdmac0 { - void *EDMSAR; - void *EDMDAR; - unsigned long EDMCRA; - unsigned short EDMCRB; - unsigned char wk0[2]; - union { - unsigned short WORD; - struct { - unsigned short DCTG:2; - unsigned short :6; - unsigned short SZ:2; - unsigned short :2; - unsigned short DTS:2; - unsigned short MD:2; - } BIT; - } EDMTMD; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char DACKW:1; - unsigned char DACKE:1; - unsigned char DACKS:1; - unsigned char :4; - } BIT; - } EDMOMD; - union { - unsigned char BYTE; - struct { - unsigned char DARIE:1; - unsigned char SARIE:1; - unsigned char RPTIE:1; - unsigned char ESIE:1; - unsigned char DTIE:1; - unsigned char :3; - } BIT; - } EDMINT; - union { - unsigned long LONG; - struct { - unsigned long DARA:5; - unsigned long :1; - unsigned long DM:2; - unsigned long SARA:5; - unsigned long :1; - unsigned long SM:2; - unsigned long DIR:1; - unsigned long AMS:1; - unsigned long :14; - } BIT; - } EDMAMD; - unsigned long EDMOFR; - union { - unsigned char BYTE; - struct { - unsigned char DTE:1; - unsigned char :7; - } BIT; - } EDMCNT; - union { - unsigned char BYTE; - struct { - unsigned char SWREQ:1; - unsigned char :3; - unsigned char CLRS:1; - unsigned char :3; - } BIT; - } EDMREQ; - union { - unsigned char BYTE; - struct { - unsigned char ESIF:1; - unsigned char :3; - unsigned char DTIF:1; - unsigned char :2; - unsigned char ACT:1; - } BIT; - } EDMSTS; - unsigned char wk1[1]; - union { - unsigned char BYTE; - struct { - unsigned char DREQS:2; - unsigned char :6; - } BIT; - } EDMRMD; - union { - unsigned char BYTE; - struct { - unsigned char EREQ:1; - unsigned char :7; - } BIT; - } EDMERF; - union { - unsigned char BYTE; - struct { - unsigned char PREQ:1; - unsigned char :7; - } BIT; - } EDMPRF; -}; - -struct st_exdmac { - union { - unsigned char BYTE; - struct { - unsigned char DMST:1; - unsigned char :7; - } BIT; - } EDMAST; - unsigned char wk0[479]; - unsigned long CLSBR0; - unsigned long CLSBR1; - unsigned long CLSBR2; - unsigned long CLSBR3; - unsigned long CLSBR4; - unsigned long CLSBR5; - unsigned long CLSBR6; - unsigned long CLSBR7; -}; - -struct st_icu { - union { - unsigned char BYTE; - struct { - unsigned char IR:1; - unsigned char :7; - } BIT; - } IR[254]; - unsigned char wk17[2]; - union { - unsigned char BYTE; - struct { - unsigned char DTCE:1; - unsigned char :7; - } BIT; - } DTCER[254]; - unsigned char wk47[2]; - union { - unsigned char BYTE; - struct { - unsigned char IEN0:1; - unsigned char IEN1:1; - unsigned char IEN2:1; - unsigned char IEN3:1; - unsigned char IEN4:1; - unsigned char IEN5:1; - unsigned char IEN6:1; - unsigned char IEN7:1; - } BIT; - } IER[32]; - unsigned char wk50[192]; - union { - unsigned char BYTE; - struct { - unsigned char SWINT:1; - unsigned char :7; - } BIT; - } SWINTR; - unsigned char wk51[15]; - union { - unsigned short WORD; - struct { - unsigned short FVCT:8; - unsigned short :7; - unsigned short FIEN:1; - } BIT; - } FIR; - unsigned char wk52[14]; - union { - unsigned char BYTE; - struct { - unsigned char IPR:4; - unsigned char :4; - } BIT; - } IPR[144]; - unsigned char wk67[112]; - unsigned char DMRSR0; - unsigned char wk68[3]; - unsigned char DMRSR1; - unsigned char wk69[3]; - unsigned char DMRSR2; - unsigned char wk70[3]; - unsigned char DMRSR3; - unsigned char wk71[243]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char IRQMD:2; - unsigned char :4; - } BIT; - } IRQCR[16]; - unsigned char wk72[112]; - union { - unsigned char BYTE; - struct { - unsigned char NMIST:1; - unsigned char LVDST:1; - unsigned char OSTST:1; - unsigned char :5; - } BIT; - } NMISR; - union { - unsigned char BYTE; - struct { - unsigned char NMIEN:1; - unsigned char LVDEN:1; - unsigned char OSTEN:1; - unsigned char :5; - } BIT; - } NMIER; - union { - unsigned char BYTE; - struct { - unsigned char NMICLR:1; - unsigned char :1; - unsigned char OSTCLR:1; - unsigned char :5; - } BIT; - } NMICLR; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char NMIMD:1; - unsigned char :4; - } BIT; - } NMICR; -}; - -struct st_cmt { - union { - unsigned short WORD; - struct { - unsigned short STR0:1; - unsigned short STR1:1; - unsigned short :14; - } BIT; - } CMSTR0; - unsigned char wk0[14]; - union { - unsigned short WORD; - struct { - unsigned short STR2:1; - unsigned short STR3:1; - unsigned short :14; - } BIT; - } CMSTR1; -}; - -struct st_cmt0 { - union { - unsigned short WORD; - struct { - unsigned short CKS:2; - unsigned short :4; - unsigned short CMIE:1; - unsigned short :9; - } BIT; - } CMCR; - unsigned short CMCNT; - unsigned short CMCOR; -}; - -union un_wdt { - struct { - union { - unsigned char BYTE; - struct { - unsigned char CKS:3; - unsigned char :2; - unsigned char TME:1; - unsigned char TMS:1; - unsigned char :1; - } BIT; - } TCSR; - unsigned char TCNT; - unsigned char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char RSTE:1; - unsigned char WOVF:1; - } BIT; - } RSTCSR; - } READ; - struct { - unsigned short WINA; - unsigned short WINB; - } WRITE; -}; - -struct st_iwdt { - unsigned char IWDTRR; - unsigned char wk0[1]; - union { - unsigned short WORD; - struct { - unsigned short TOPS:2; - unsigned short :2; - unsigned short CKS:4; - unsigned short :8; - } BIT; - } IWDTCR; - union { - unsigned short WORD; - struct { - unsigned short CNTVAL:14; - unsigned short UNDFF:1; - unsigned short :1; - } BIT; - } IWDTSR; -}; - -struct st_ad { - unsigned short ADDRA; - unsigned short ADDRB; - unsigned short ADDRC; - unsigned short ADDRD; - unsigned char wk0[8]; - union { - unsigned char BYTE; - struct { - unsigned char CH:4; - unsigned char :1; - unsigned char ADST:1; - unsigned char ADIE:1; - unsigned char :1; - } BIT; - } ADCSR; - union { - unsigned char BYTE; - struct { - unsigned char MODE:2; - unsigned char CKS:2; - unsigned char :1; - unsigned char TRGS:3; - } BIT; - } ADCR; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DPSEL:1; - } BIT; - } ADDPR; - unsigned char ADSSTR; - unsigned char wk1[11]; - union { - unsigned char BYTE; - struct { - unsigned char DIAG:2; - unsigned char :6; - } BIT; - } ADDIAGR; -}; - -struct st_da { - unsigned short DADR0; - unsigned short DADR1; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char DAE:1; - unsigned char DAOE0:1; - unsigned char DAOE1:1; - } BIT; - } DACR; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DPSEL:1; - } BIT; - } DADPR; -}; - -struct st_ppg0 { - union { - unsigned char BYTE; - struct { - unsigned char G0CMS:2; - unsigned char G1CMS:2; - unsigned char G2CMS:2; - unsigned char G3CMS:2; - } BIT; - } PCR; - union { - unsigned char BYTE; - struct { - unsigned char G0NOV:1; - unsigned char G1NOV:1; - unsigned char G2NOV:1; - unsigned char G3NOV:1; - unsigned char G0INV:1; - unsigned char G1INV:1; - unsigned char G2INV:1; - unsigned char G3INV:1; - } BIT; - } PMR; - union { - unsigned char BYTE; - struct { - unsigned char NDER8:1; - unsigned char NDER9:1; - unsigned char NDER10:1; - unsigned char NDER11:1; - unsigned char NDER12:1; - unsigned char NDER13:1; - unsigned char NDER14:1; - unsigned char NDER15:1; - } BIT; - } NDERH; - union { - unsigned char BYTE; - struct { - unsigned char NDER0:1; - unsigned char NDER1:1; - unsigned char NDER2:1; - unsigned char NDER3:1; - unsigned char NDER4:1; - unsigned char NDER5:1; - unsigned char NDER6:1; - unsigned char NDER7:1; - } BIT; - } NDERL; - union { - unsigned char BYTE; - struct { - unsigned char POD8:1; - unsigned char POD9:1; - unsigned char POD10:1; - unsigned char POD11:1; - unsigned char POD12:1; - unsigned char POD13:1; - unsigned char POD14:1; - unsigned char POD15:1; - } BIT; - } PODRH; - union { - unsigned char BYTE; - struct { - unsigned char POD0:1; - unsigned char POD1:1; - unsigned char POD2:1; - unsigned char POD3:1; - unsigned char POD4:1; - unsigned char POD5:1; - unsigned char POD6:1; - unsigned char POD7:1; - } BIT; - } PODRL; - union { - unsigned char BYTE; - struct { - unsigned char NDR8:1; - unsigned char NDR9:1; - unsigned char NDR10:1; - unsigned char NDR11:1; - unsigned char NDR12:1; - unsigned char NDR13:1; - unsigned char NDR14:1; - unsigned char NDR15:1; - } BIT; - } NDRH; - union { - unsigned char BYTE; - struct { - unsigned char NDR0:1; - unsigned char NDR1:1; - unsigned char NDR2:1; - unsigned char NDR3:1; - unsigned char NDR4:1; - unsigned char NDR5:1; - unsigned char NDR6:1; - unsigned char NDR7:1; - } BIT; - } NDRL; - union { - unsigned char BYTE; - struct { - unsigned char NDR8:1; - unsigned char NDR9:1; - unsigned char NDR10:1; - unsigned char NDR11:1; - unsigned char :4; - } BIT; - } NDRH2; - union { - unsigned char BYTE; - struct { - unsigned char NDR0:1; - unsigned char NDR1:1; - unsigned char NDR2:1; - unsigned char NDR3:1; - unsigned char :4; - } BIT; - } NDRL2; -}; - -struct st_ppg1 { - union { - unsigned char BYTE; - struct { - unsigned char PTRSL:1; - unsigned char :7; - } BIT; - } PTRSLR; - unsigned char wk0[5]; - union { - unsigned char BYTE; - struct { - unsigned char G0CMS:2; - unsigned char G1CMS:2; - unsigned char G2CMS:2; - unsigned char G3CMS:2; - } BIT; - } PCR; - union { - unsigned char BYTE; - struct { - unsigned char G0NOV:1; - unsigned char G1NOV:1; - unsigned char G2NOV:1; - unsigned char G3NOV:1; - unsigned char G0INV:1; - unsigned char G1INV:1; - unsigned char G2INV:1; - unsigned char G3INV:1; - } BIT; - } PMR; - union { - unsigned char BYTE; - struct { - unsigned char NDER24:1; - unsigned char NDER25:1; - unsigned char NDER26:1; - unsigned char NDER27:1; - unsigned char NDER28:1; - unsigned char NDER29:1; - unsigned char NDER30:1; - unsigned char NDER31:1; - } BIT; - } NDERH; - union { - unsigned char BYTE; - struct { - unsigned char NDER16:1; - unsigned char NDER17:1; - unsigned char NDER18:1; - unsigned char NDER19:1; - unsigned char NDER20:1; - unsigned char NDER21:1; - unsigned char NDER22:1; - unsigned char NDER23:1; - } BIT; - } NDERL; - union { - unsigned char BYTE; - struct { - unsigned char POD24:1; - unsigned char POD25:1; - unsigned char POD26:1; - unsigned char POD27:1; - unsigned char POD28:1; - unsigned char POD29:1; - unsigned char POD30:1; - unsigned char POD31:1; - } BIT; - } PODRH; - union { - unsigned char BYTE; - struct { - unsigned char POD16:1; - unsigned char POD17:1; - unsigned char POD18:1; - unsigned char POD19:1; - unsigned char POD20:1; - unsigned char POD21:1; - unsigned char POD22:1; - unsigned char POD23:1; - } BIT; - } PODRL; - union { - unsigned char BYTE; - struct { - unsigned char NDR24:1; - unsigned char NDR25:1; - unsigned char NDR26:1; - unsigned char NDR27:1; - unsigned char NDR28:1; - unsigned char NDR29:1; - unsigned char NDR30:1; - unsigned char NDR31:1; - } BIT; - } NDRH; - union { - unsigned char BYTE; - struct { - unsigned char NDR16:1; - unsigned char NDR17:1; - unsigned char NDR18:1; - unsigned char NDR19:1; - unsigned char NDR20:1; - unsigned char NDR21:1; - unsigned char NDR22:1; - unsigned char NDR23:1; - } BIT; - } NDRL; - union { - unsigned char BYTE; - struct { - unsigned char NDR24:1; - unsigned char NDR25:1; - unsigned char NDR26:1; - unsigned char NDR27:1; - unsigned char :4; - } BIT; - } NDRH2; - union { - unsigned char BYTE; - struct { - unsigned char NDR16:1; - unsigned char NDR17:1; - unsigned char NDR18:1; - unsigned char NDR19:1; - unsigned char :4; - } BIT; - } NDRL2; -}; - -struct st_tmr0 { - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char CCLR:2; - unsigned char OVIE:1; - unsigned char CMIEA:1; - unsigned char CMIEB:1; - } BIT; - } TCR; - unsigned char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char OSA:2; - unsigned char OSB:2; - unsigned char ADTE:1; - unsigned char :3; - } BIT; - } TCSR; - unsigned char wk1[1]; - unsigned char TCORA; - unsigned char wk2[1]; - unsigned char TCORB; - unsigned char wk3[1]; - unsigned char TCNT; - unsigned char wk4[1]; - union { - unsigned char BYTE; - struct { - unsigned char CKS:3; - unsigned char CSS:2; - unsigned char :2; - unsigned char TMRIS:1; - } BIT; - } TCCR; -}; - -struct st_tmr1 { - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char CCLR:2; - unsigned char OVIE:1; - unsigned char CMIEA:1; - unsigned char CMIEB:1; - } BIT; - } TCR; - unsigned char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char OSA:2; - unsigned char OSB:2; - unsigned char :4; - } BIT; - } TCSR; - unsigned char wk1[1]; - unsigned char TCORA; - unsigned char wk2[1]; - unsigned char TCORB; - unsigned char wk3[1]; - unsigned char TCNT; - unsigned char wk4[1]; - union { - unsigned char BYTE; - struct { - unsigned char CKS:3; - unsigned char CSS:2; - unsigned char :2; - unsigned char TMRIS:1; - } BIT; - } TCCR; -}; - -struct st_tmr01 { - unsigned short TCORA; - unsigned short TCORB; - unsigned short TCNT; - unsigned short TCCR; -}; - -struct st_sci { - union { - unsigned char BYTE; - struct { - unsigned char CKS:2; - unsigned char MP:1; - unsigned char STOP:1; - unsigned char PM:1; - unsigned char PE:1; - unsigned char CHR:1; - unsigned char CM:1; - } BIT; - } SMR; - unsigned char BRR; - union { - unsigned char BYTE; - struct { - unsigned char CKE:2; - unsigned char TEIE:1; - unsigned char MPIE:1; - unsigned char RE:1; - unsigned char TE:1; - unsigned char RIE:1; - unsigned char TIE:1; - } BIT; - } SCR; - unsigned char TDR; - union { - unsigned char BYTE; - struct { - unsigned char MPBT:1; - unsigned char MPB:1; - unsigned char TEND:1; - unsigned char PER:1; - unsigned char FER:1; - unsigned char ORER:1; - unsigned char :2; - } BIT; - } SSR; - unsigned char RDR; - union { - unsigned char BYTE; - struct { - unsigned char SMIF:1; - unsigned char :1; - unsigned char SINV:1; - unsigned char SDIR:1; - unsigned char :4; - } BIT; - } SCMR; - union { - unsigned char BYTE; - struct { - unsigned char ACS0:1; - unsigned char :3; - unsigned char ABCS:1; - unsigned char :3; - } BIT; - } SEMR; -}; - -struct st_smci { - union { - unsigned char BYTE; - struct { - unsigned char CKS:2; - unsigned char BCP:2; - unsigned char PM:1; - unsigned char PE:1; - unsigned char BLK:1; - unsigned char GM:1; - } BIT; - } SMR; - unsigned char BRR; - union { - unsigned char BYTE; - struct { - unsigned char CKE:2; - unsigned char TEIE:1; - unsigned char :1; - unsigned char RE:1; - unsigned char TE:1; - unsigned char RIE:1; - unsigned char TIE:1; - } BIT; - } SCR; - unsigned char TDR; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char TEND:1; - unsigned char PER:1; - unsigned char ERS:1; - unsigned char ORER:1; - unsigned char :2; - } BIT; - } SSR; - unsigned char RDR; - union { - unsigned char BYTE; - struct { - unsigned char SMIF:1; - unsigned char :1; - unsigned char SINV:1; - unsigned char SDIR:1; - unsigned char :3; - unsigned char BCP2:1; - } BIT; - } SCMR; -}; - -struct st_crc { - union { - unsigned char BYTE; - struct { - unsigned char GPS:2; - unsigned char LMS:1; - unsigned char :4; - unsigned char DORCLR:1; - } BIT; - } CRCCR; - unsigned char CRCDIR; - unsigned short CRCDOR; -}; - -struct st_riic { - union { - unsigned char BYTE; - struct { - unsigned char SDAI:1; - unsigned char SCLI:1; - unsigned char SDAO:1; - unsigned char SCLO:1; - unsigned char SOWP:1; - unsigned char CLO:1; - unsigned char IICRST:1; - unsigned char ICE:1; - } BIT; - } ICCR1; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ST:1; - unsigned char RS:1; - unsigned char SP:1; - unsigned char :1; - unsigned char TRS:1; - unsigned char MST:1; - unsigned char BBSY:1; - } BIT; - } ICCR2; - union { - unsigned char BYTE; - struct { - unsigned char BC:3; - unsigned char BCWP:1; - unsigned char CKS:3; - unsigned char MTWP:1; - } BIT; - } ICMR1; - union { - unsigned char BYTE; - struct { - unsigned char TMOS:1; - unsigned char TMOL:1; - unsigned char TMOH:1; - unsigned char :1; - unsigned char SDDL:3; - unsigned char DLCS:1; - } BIT; - } ICMR2; - union { - unsigned char BYTE; - struct { - unsigned char NF:2; - unsigned char ACKBR:1; - unsigned char ACKBT:1; - unsigned char ACKWP:1; - unsigned char RDRFS:1; - unsigned char WAIT:1; - unsigned char SMBS:1; - } BIT; - } ICMR3; - union { - unsigned char BYTE; - struct { - unsigned char TMOE:1; - unsigned char MALE:1; - unsigned char NALE:1; - unsigned char SALE:1; - unsigned char NACKE:1; - unsigned char NFE:1; - unsigned char SCLE:1; - unsigned char FMPE:1; - } BIT; - } ICFER; - union { - unsigned char BYTE; - struct { - unsigned char SAR0E:1; - unsigned char SAR1E:1; - unsigned char SAR2E:1; - unsigned char GCAE:1; - unsigned char :1; - unsigned char DIDE:1; - unsigned char :1; - unsigned char HOAE:1; - } BIT; - } ICSER; - union { - unsigned char BYTE; - struct { - unsigned char TMOIE:1; - unsigned char ALIE:1; - unsigned char STIE:1; - unsigned char SPIE:1; - unsigned char NAKIE:1; - unsigned char RIE:1; - unsigned char TEIE:1; - unsigned char TIE:1; - } BIT; - } ICIER; - union { - unsigned char BYTE; - struct { - unsigned char AAS0:1; - unsigned char AAS1:1; - unsigned char AAS2:1; - unsigned char GCA:1; - unsigned char :1; - unsigned char DID:1; - unsigned char :1; - unsigned char HOA:1; - } BIT; - } ICSR1; - union { - unsigned char BYTE; - struct { - unsigned char TMOF:1; - unsigned char AL:1; - unsigned char START:1; - unsigned char STOP:1; - unsigned char NACKF:1; - unsigned char RDRF:1; - unsigned char TEND:1; - unsigned char TDRE:1; - } BIT; - } ICSR2; - union { - unsigned char BYTE; - struct { - unsigned char SVA0:1; - unsigned char SVA:7; - } BIT; - } SARL0; - union { - unsigned char BYTE; - struct { - unsigned char FS:1; - unsigned char SVA:2; - unsigned char :5; - } BIT; - } SARU0; - union { - unsigned char BYTE; - struct { - unsigned char SVA0:1; - unsigned char SVA:7; - } BIT; - } SARL1; - union { - unsigned char BYTE; - struct { - unsigned char FS:1; - unsigned char SVA:2; - unsigned char :5; - } BIT; - } SARU1; - union { - unsigned char BYTE; - struct { - unsigned char SVA0:1; - unsigned char SVA:7; - } BIT; - } SARL2; - union { - unsigned char BYTE; - struct { - unsigned char FS:1; - unsigned char SVA:2; - unsigned char :5; - } BIT; - } SARU2; - union { - unsigned char BYTE; - struct { - unsigned char BRL:5; - unsigned char :3; - } BIT; - } ICBRL; - union { - unsigned char BYTE; - struct { - unsigned char BRH:5; - unsigned char :3; - } BIT; - } ICBRH; - unsigned char ICDRT; - unsigned char ICDRR; -}; - -struct st_rspi { - union { - unsigned char BYTE; - struct { - unsigned char SPMS:1; - unsigned char TXMD:1; - unsigned char MODFEN:1; - unsigned char MSTR:1; - unsigned char SPEIE:1; - unsigned char SPTIE:1; - unsigned char SPE:1; - unsigned char SPRIE:1; - } BIT; - } SPCR; - union { - unsigned char BYTE; - struct { - unsigned char SSLP0:1; - unsigned char SSLP1:1; - unsigned char SSLP2:1; - unsigned char SSLP3:1; - unsigned char :4; - } BIT; - } SSLP; - union { - unsigned char BYTE; - struct { - unsigned char SPLP:1; - unsigned char SPLP2:1; - unsigned char SPOM:1; - unsigned char :1; - unsigned char MOIFV:1; - unsigned char MOIFE:1; - unsigned char :2; - } BIT; - } SPPCR; - union { - unsigned char BYTE; - struct { - unsigned char OVRF:1; - unsigned char IDLNF:1; - unsigned char MODF:1; - unsigned char PERF:1; - unsigned char :4; - } BIT; - } SPSR; - union { - unsigned long LONG; - struct { - unsigned short H; - unsigned short L; - } WORD; - } SPDR; - union { - unsigned char BYTE; - struct { - unsigned char SPSLN:3; - unsigned char :5; - } BIT; - } SPSCR; - union { - unsigned char BYTE; - struct { - unsigned char SPCP:3; - unsigned char :1; - unsigned char SPECM:3; - unsigned char :1; - } BIT; - } SPSSR; - union { - unsigned char BYTE; - struct { - unsigned char SPR0:1; - unsigned char SPR1:1; - unsigned char SPR2:1; - unsigned char SPR3:1; - unsigned char SPR4:1; - unsigned char SPR5:1; - unsigned char SPR6:1; - unsigned char SPR7:1; - } BIT; - } SPBR; - union { - unsigned char BYTE; - struct { - unsigned char SPFC:2; - unsigned char SLSEL:2; - unsigned char SPRDTD:1; - unsigned char SPLW:1; - unsigned char :2; - } BIT; - } SPDCR; - union { - unsigned char BYTE; - struct { - unsigned char SCKDL:3; - unsigned char :5; - } BIT; - } SPCKD; - union { - unsigned char BYTE; - struct { - unsigned char SLNDL:3; - unsigned char :5; - } BIT; - } SSLND; - union { - unsigned char BYTE; - struct { - unsigned char SPNDL:3; - unsigned char :5; - } BIT; - } SPND; - union { - unsigned char BYTE; - struct { - unsigned char SPPE:1; - unsigned char SPOE:1; - unsigned char SPIIE:1; - unsigned char PTE:1; - unsigned char :4; - } BIT; - } SPCR2; - union { - unsigned short WORD; - struct { - unsigned short CPHA:1; - unsigned short CPOL:1; - unsigned short BRDV:2; - unsigned short SSLA:3; - unsigned short SSLKP:1; - unsigned short SPB:4; - unsigned short LSBF:1; - unsigned short SPNDEN:1; - unsigned short SLNDEN:1; - unsigned short SCKDEN:1; - } BIT; - } SPCMD0; - union { - unsigned short WORD; - struct { - unsigned short CPHA:1; - unsigned short CPOL:1; - unsigned short BRDV:2; - unsigned short SSLA:3; - unsigned short SSLKP:1; - unsigned short SPB:4; - unsigned short LSBF:1; - unsigned short SPNDEN:1; - unsigned short SLNDEN:1; - unsigned short SCKDEN:1; - } BIT; - } SPCMD1; - union { - unsigned short WORD; - struct { - unsigned short CPHA:1; - unsigned short CPOL:1; - unsigned short BRDV:2; - unsigned short SSLA:3; - unsigned short SSLKP:1; - unsigned short SPB:4; - unsigned short LSBF:1; - unsigned short SPNDEN:1; - unsigned short SLNDEN:1; - unsigned short SCKDEN:1; - } BIT; - } SPCMD2; - union { - unsigned short WORD; - struct { - unsigned short CPHA:1; - unsigned short CPOL:1; - unsigned short BRDV:2; - unsigned short SSLA:3; - unsigned short SSLKP:1; - unsigned short SPB:4; - unsigned short LSBF:1; - unsigned short SPNDEN:1; - unsigned short SLNDEN:1; - unsigned short SCKDEN:1; - } BIT; - } SPCMD3; - union { - unsigned short WORD; - struct { - unsigned short CPHA:1; - unsigned short CPOL:1; - unsigned short BRDV:2; - unsigned short SSLA:3; - unsigned short SSLKP:1; - unsigned short SPB:4; - unsigned short LSBF:1; - unsigned short SPNDEN:1; - unsigned short SLNDEN:1; - unsigned short SCKDEN:1; - } BIT; - } SPCMD4; - union { - unsigned short WORD; - struct { - unsigned short CPHA:1; - unsigned short CPOL:1; - unsigned short BRDV:2; - unsigned short SSLA:3; - unsigned short SSLKP:1; - unsigned short SPB:4; - unsigned short LSBF:1; - unsigned short SPNDEN:1; - unsigned short SLNDEN:1; - unsigned short SCKDEN:1; - } BIT; - } SPCMD5; - union { - unsigned short WORD; - struct { - unsigned short CPHA:1; - unsigned short CPOL:1; - unsigned short BRDV:2; - unsigned short SSLA:3; - unsigned short SSLKP:1; - unsigned short SPB:4; - unsigned short LSBF:1; - unsigned short SPNDEN:1; - unsigned short SLNDEN:1; - unsigned short SCKDEN:1; - } BIT; - } SPCMD6; - union { - unsigned short WORD; - struct { - unsigned short CPHA:1; - unsigned short CPOL:1; - unsigned short BRDV:2; - unsigned short SSLA:3; - unsigned short SSLKP:1; - unsigned short SPB:4; - unsigned short LSBF:1; - unsigned short SPNDEN:1; - unsigned short SLNDEN:1; - unsigned short SCKDEN:1; - } BIT; - } SPCMD7; -}; - -struct st_mtu { - union { - unsigned char BYTE; - struct { - unsigned char OE3B:1; - unsigned char OE4A:1; - unsigned char OE4B:1; - unsigned char OE3D:1; - unsigned char OE4C:1; - unsigned char OE4D:1; - unsigned char :2; - } BIT; - } TOER; - unsigned char wk0[2]; - union { - unsigned char BYTE; - struct { - unsigned char UF:1; - unsigned char VF:1; - unsigned char WF:1; - unsigned char FB:1; - unsigned char P:1; - unsigned char N:1; - unsigned char BCD:1; - unsigned char :1; - } BIT; - } TGCR; - union { - unsigned char BYTE; - struct { - unsigned char OLSP:1; - unsigned char OLSN:1; - unsigned char TOCS:1; - unsigned char TOCL:1; - unsigned char :2; - unsigned char PSYE:1; - unsigned char :1; - } BIT; - } TOCR1; - union { - unsigned char BYTE; - struct { - unsigned char OLS1P:1; - unsigned char OLS1N:1; - unsigned char OLS2P:1; - unsigned char OLS2N:1; - unsigned char OLS3P:1; - unsigned char OLS3N:1; - unsigned char BF:2; - } BIT; - } TOCR2; - unsigned char wk1[4]; - unsigned short TCDR; - unsigned short TDDR; - unsigned char wk2[8]; - unsigned short TCNTS; - unsigned short TCBR; - unsigned char wk3[12]; - union { - unsigned char BYTE; - struct { - unsigned char T4VCOR:3; - unsigned char T4VEN:1; - unsigned char T3ACOR:3; - unsigned char T3AEN:1; - } BIT; - } TITCR; - union { - unsigned char BYTE; - struct { - unsigned char T4VCNT:3; - unsigned char :1; - unsigned char T3ACNT:3; - unsigned char :1; - } BIT; - } TITCNT; - union { - unsigned char BYTE; - struct { - unsigned char BTE:2; - unsigned char :6; - } BIT; - } TBTER; - unsigned char wk4[1]; - union { - unsigned char BYTE; - struct { - unsigned char TDRE:1; - unsigned char :7; - } BIT; - } TDER; - unsigned char wk5[1]; - union { - unsigned char BYTE; - struct { - unsigned char OLS1P:1; - unsigned char OLS1N:1; - unsigned char OLS2P:1; - unsigned char OLS2N:1; - unsigned char OLS3P:1; - unsigned char OLS3N:1; - unsigned char :2; - } BIT; - } TOLBR; - unsigned char wk6[41]; - union { - unsigned char BYTE; - struct { - unsigned char WRE:1; - unsigned char :6; - unsigned char CCE:1; - } BIT; - } TWCR; - unsigned char wk7[31]; - union { - unsigned char BYTE; - struct { - unsigned char CST0:1; - unsigned char CST1:1; - unsigned char CST2:1; - unsigned char :3; - unsigned char CST3:1; - unsigned char CST4:1; - } BIT; - } TSTR; - union { - unsigned char BYTE; - struct { - unsigned char SYNC0:1; - unsigned char SYNC1:1; - unsigned char SYNC2:1; - unsigned char :3; - unsigned char SYNC3:1; - unsigned char SYNC4:1; - } BIT; - } TSYR; - unsigned char wk8[2]; - union { - unsigned char BYTE; - struct { - unsigned char RWE:1; - unsigned char :7; - } BIT; - } TRWER; -}; - -struct st_mtu0 { - union { - unsigned char BYTE; - struct { - unsigned char TPSC:3; - unsigned char CKEG:2; - unsigned char CCLR:3; - } BIT; - } TCR; - union { - unsigned char BYTE; - struct { - unsigned char MD:4; - unsigned char BFA:1; - unsigned char BFB:1; - unsigned char BFE:1; - unsigned char :1; - } BIT; - } TMDR; - union { - unsigned char BYTE; - struct { - unsigned char IOA:4; - unsigned char IOB:4; - } BIT; - } TIORH; - union { - unsigned char BYTE; - struct { - unsigned char IOC:4; - unsigned char IOD:4; - } BIT; - } TIORL; - union { - unsigned char BYTE; - struct { - unsigned char TGIEA:1; - unsigned char TGIEB:1; - unsigned char TGIEC:1; - unsigned char TGIED:1; - unsigned char TCIEV:1; - unsigned char :2; - unsigned char TTGE:1; - } BIT; - } TIER; - unsigned char TSR; - unsigned short TCNT; - unsigned short TGRA; - unsigned short TGRB; - unsigned short TGRC; - unsigned short TGRD; - unsigned char wk0[16]; - unsigned short TGRE; - unsigned short TGRF; - union { - unsigned char BYTE; - struct { - unsigned char TGIEE:1; - unsigned char TGIEF:1; - unsigned char :6; - } BIT; - } TIER2; - unsigned char wk1[1]; - union { - unsigned char BYTE; - struct { - unsigned char TTSA:1; - unsigned char TTSB:1; - unsigned char TTSE:1; - unsigned char :5; - } BIT; - } TBTM; -}; - -struct st_mtu1 { - union { - unsigned char BYTE; - struct { - unsigned char TPSC:3; - unsigned char CKEG:2; - unsigned char CCLR:3; - } BIT; - } TCR; - union { - unsigned char BYTE; - struct { - unsigned char MD:4; - unsigned char :4; - } BIT; - } TMDR; - union { - unsigned char BYTE; - struct { - unsigned char IOA:4; - unsigned char IOB:4; - } BIT; - } TIOR; - unsigned char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char TGIEA:1; - unsigned char TGIEB:1; - unsigned char :2; - unsigned char TCIEV:1; - unsigned char TCIEU:1; - unsigned char :1; - unsigned char TTGE:1; - } BIT; - } TIER; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char TCFD:1; - } BIT; - } TSR; - unsigned short TCNT; - unsigned short TGRA; - unsigned short TGRB; - unsigned char wk1[4]; - union { - unsigned char BYTE; - struct { - unsigned char I1AE:1; - unsigned char I1BE:1; - unsigned char I2AE:1; - unsigned char I2BE:1; - unsigned char :4; - } BIT; - } TICCR; -}; - -struct st_mtu2 { - union { - unsigned char BYTE; - struct { - unsigned char TPSC:3; - unsigned char CKEG:2; - unsigned char CCLR:3; - } BIT; - } TCR; - union { - unsigned char BYTE; - struct { - unsigned char MD:4; - unsigned char :4; - } BIT; - } TMDR; - union { - unsigned char BYTE; - struct { - unsigned char IOA:4; - unsigned char IOB:4; - } BIT; - } TIOR; - unsigned char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char TGIEA:1; - unsigned char TGIEB:1; - unsigned char :2; - unsigned char TCIEV:1; - unsigned char TCIEU:1; - unsigned char :1; - unsigned char TTGE:1; - } BIT; - } TIER; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char TCFD:1; - } BIT; - } TSR; - unsigned short TCNT; - unsigned short TGRA; - unsigned short TGRB; -}; - -struct st_mtu3 { - union { - unsigned char BYTE; - struct { - unsigned char TPSC:3; - unsigned char CKEG:2; - unsigned char CCLR:3; - } BIT; - } TCR; - unsigned char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char MD:4; - unsigned char BFA:1; - unsigned char BFB:1; - unsigned char BFE:1; - unsigned char :1; - } BIT; - } TMDR; - unsigned char wk1[1]; - union { - unsigned char BYTE; - struct { - unsigned char IOA:4; - unsigned char IOB:4; - } BIT; - } TIORH; - union { - unsigned char BYTE; - struct { - unsigned char IOC:4; - unsigned char IOD:4; - } BIT; - } TIORL; - unsigned char wk2[2]; - union { - unsigned char BYTE; - struct { - unsigned char TGIEA:1; - unsigned char TGIEB:1; - unsigned char TGIEC:1; - unsigned char TGIED:1; - unsigned char TCIEV:1; - unsigned char TCIEU:1; - unsigned char TTGE2:1; - unsigned char TTGE:1; - } BIT; - } TIER; - unsigned char wk3[7]; - unsigned short TCNT; - unsigned char wk4[6]; - unsigned short TGRA; - unsigned short TGRB; - unsigned char wk5[8]; - unsigned short TGRC; - unsigned short TGRD; - unsigned char wk6[4]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char TCFD:1; - } BIT; - } TSR; - unsigned char wk7[11]; - union { - unsigned char BYTE; - struct { - unsigned char TTSA:1; - unsigned char TTSB:1; - unsigned char TTSE:1; - unsigned char :5; - } BIT; - } TBTM; -}; - -struct st_mtu4 { - unsigned char DMMY; - union { - unsigned char BYTE; - struct { - unsigned char TPSC:3; - unsigned char CKEG:2; - unsigned char CCLR:3; - } BIT; - } TCR; - unsigned char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char MD:4; - unsigned char BFA:1; - unsigned char BFB:1; - unsigned char BFE:1; - unsigned char :1; - } BIT; - } TMDR; - unsigned char wk1[2]; - union { - unsigned char BYTE; - struct { - unsigned char IOA:4; - unsigned char IOB:4; - } BIT; - } TIORH; - union { - unsigned char BYTE; - struct { - unsigned char IOC:4; - unsigned char IOD:4; - } BIT; - } TIORL; - unsigned char wk2[1]; - union { - unsigned char BYTE; - struct { - unsigned char TGIEA:1; - unsigned char TGIEB:1; - unsigned char TGIEC:1; - unsigned char TGIED:1; - unsigned char TCIEV:1; - unsigned char TCIEU:1; - unsigned char TTGE2:1; - unsigned char TTGE:1; - } BIT; - } TIER; - unsigned char wk3[8]; - unsigned short TCNT; - unsigned char wk4[8]; - unsigned short TGRA; - unsigned short TGRB; - unsigned char wk5[8]; - unsigned short TGRC; - unsigned short TGRD; - unsigned char wk6[1]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char TCFD:1; - } BIT; - } TSR; - unsigned char wk7[11]; - union { - unsigned char BYTE; - struct { - unsigned char TTSA:1; - unsigned char TTSB:1; - unsigned char TTSE:1; - unsigned char :5; - } BIT; - } TBTM; - unsigned char wk8[6]; - union { - unsigned short WORD; - struct { - unsigned short ITB4VE:1; - unsigned short ITB3AE:1; - unsigned short ITA4VE:1; - unsigned short ITA3AE:1; - unsigned short DT4BE:1; - unsigned short UT4BE:1; - unsigned short DT4AE:1; - unsigned short UT4AE:1; - unsigned short :6; - unsigned short BF:2; - } BIT; - } TADCR; - unsigned char wk9[2]; - unsigned short TADCORA; - unsigned short TADCORB; - unsigned short TADCOBRA; - unsigned short TADCOBRB; -}; - -struct st_mtu5 { - unsigned short TCNTU; - unsigned short TGRU; - union { - unsigned char BYTE; - struct { - unsigned char TPSC:3; - unsigned char CKEG:2; - unsigned char CCLR:3; - } BIT; - } TCRU; - unsigned char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char IOC:5; - unsigned char :3; - } BIT; - } TIORU; - unsigned char wk1[9]; - unsigned short TCNTV; - unsigned short TGRV; - union { - unsigned char BYTE; - struct { - unsigned char TPSC:3; - unsigned char CKEG:2; - unsigned char CCLR:3; - } BIT; - } TCRV; - union { - unsigned char BYTE; - struct { - unsigned char IOC:5; - unsigned char :3; - } BIT; - } TIORV; - unsigned char wk2[9]; - unsigned short TCNTW; - unsigned short TGRW; - union { - unsigned char BYTE; - struct { - unsigned char TPSC:3; - unsigned char CKEG:2; - unsigned char CCLR:3; - } BIT; - } TCRW; - unsigned char wk3[1]; - union { - unsigned char BYTE; - struct { - unsigned char IOC:5; - unsigned char :3; - } BIT; - } TIORW; - unsigned char wk4[11]; - union { - unsigned char BYTE; - struct { - unsigned char TGIE5W:1; - unsigned char TGIE5V:1; - unsigned char TGIE5U:1; - unsigned char :5; - } BIT; - } TIER; - unsigned char wk5[1]; - union { - unsigned char BYTE; - struct { - unsigned char CSTW5:1; - unsigned char CSTV5:1; - unsigned char CSTU5:1; - unsigned char :5; - } BIT; - } TSTR; - unsigned char wk6[1]; - union { - unsigned char BYTE; - struct { - unsigned char CMPCLR5W:1; - unsigned char CMPCLR5V:1; - unsigned char CMPCLR5U:1; - unsigned char :5; - } BIT; - } TCNTCMPCLR; -}; - -struct st_poe { - union { - unsigned short WORD; - struct { - unsigned short POE0M:2; - unsigned short POE1M:2; - unsigned short POE2M:2; - unsigned short POE3M:2; - unsigned short PIE1:1; - unsigned short :3; - unsigned short POE0F:1; - unsigned short POE1F:1; - unsigned short POE2F:1; - unsigned short POE3F:1; - } BIT; - } ICSR1; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short OIE1:1; - unsigned short OCE1:1; - unsigned short :5; - unsigned short OSF1:1; - } BIT; - } OCSR1; - union { - unsigned short WORD; - struct { - unsigned short POE4M:2; - unsigned short POE5M:2; - unsigned short POE6M:2; - unsigned short POE7M:2; - unsigned short PIE2:1; - unsigned short :3; - unsigned short POE4F:1; - unsigned short POE5F:1; - unsigned short POE6F:1; - unsigned short POE7F:1; - } BIT; - } ICSR2; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short OIE2:1; - unsigned short OCE2:1; - unsigned short :5; - unsigned short OSF2:1; - } BIT; - } OCSR2; - union { - unsigned short WORD; - struct { - unsigned short POE8M:2; - unsigned short :6; - unsigned short PIE3:1; - unsigned short POE8E:1; - unsigned short :2; - unsigned short POE8F:1; - unsigned short :3; - } BIT; - } ICSR3; - union { - unsigned char BYTE; - struct { - unsigned char CH34HIZ:1; - unsigned char CH0HIZ:1; - unsigned char CH910HIZ:1; - unsigned char CH6HIZ:1; - unsigned char :4; - } BIT; - } SPOER; - union { - unsigned char BYTE; - struct { - unsigned char PE0ZE:1; - unsigned char PE1ZE:1; - unsigned char PE2ZE:1; - unsigned char PE3ZE:1; - unsigned char PE4ZE:1; - unsigned char PE5ZE:1; - unsigned char PE6ZE:1; - unsigned char PE7ZE:1; - } BIT; - } POECR1; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short P6CZE:1; - unsigned short P5CZE:1; - unsigned short P4CZE:1; - unsigned short :1; - unsigned short P3CZEB:1; - unsigned short P2CZEB:1; - unsigned short P1CZEB:1; - unsigned short :1; - unsigned short P3CZEA:1; - unsigned short P2CZEA:1; - unsigned short P1CZEA:1; - unsigned short :1; - } BIT; - } POECR2; - union { - unsigned short WORD; - struct { - unsigned short POE9M:2; - unsigned short :6; - unsigned short PIE4:1; - unsigned short POE9E:1; - unsigned short :2; - unsigned short POE9F:1; - unsigned short :3; - } BIT; - } ICSR4; -}; - -struct st_s12ad { - union { - unsigned char BYTE; - struct { - unsigned char EXTRG:1; - unsigned char TRGE:1; - unsigned char CKS:2; - unsigned char ADIE:1; - unsigned char :1; - unsigned char ADCS:1; - unsigned char ADST:1; - } BIT; - } ADCSR; - unsigned char wk0[3]; - union { - unsigned short WORD; - struct { - unsigned short ANS:8; - unsigned short :8; - } BIT; - } ADANS; - unsigned char wk1[2]; - union { - unsigned short WORD; - struct { - unsigned short ADS:8; - unsigned short :8; - } BIT; - } ADADS; - unsigned char wk2[2]; - union { - unsigned char BYTE; - struct { - unsigned char ADC:2; - unsigned char :6; - } BIT; - } ADADC; - unsigned char wk3[1]; - union { - unsigned short WORD; - struct { - unsigned short :5; - unsigned short ACE:1; - unsigned short :9; - unsigned short ADRFMT:1; - } BIT; - } ADCER; - union { - unsigned char BYTE; - struct { - unsigned char ADSTRS:4; - unsigned char :4; - } BIT; - } ADSTRGR; - unsigned char wk4[15]; - unsigned short ADDRA; - unsigned short ADDRB; - unsigned short ADDRC; - unsigned short ADDRD; - unsigned short ADDRE; - unsigned short ADDRF; - unsigned short ADDRG; - unsigned short ADDRH; -}; - -struct st_port0 { - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char :1; - unsigned char B5:1; - unsigned char :1; - unsigned char B7:1; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char :1; - unsigned char B5:1; - unsigned char :1; - unsigned char B7:1; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char :1; - unsigned char B5:1; - unsigned char :1; - unsigned char B7:1; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char :1; - unsigned char B5:1; - unsigned char :1; - unsigned char B7:1; - } BIT; - } ICR; - unsigned char wk3[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char :1; - unsigned char B5:1; - unsigned char :1; - unsigned char B7:1; - } BIT; - } ODR; -}; - -struct st_port1 { - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } ICR; - unsigned char wk3[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } ODR; -}; - -struct st_port2 { - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } ICR; - unsigned char wk3[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } ODR; -}; - -struct st_port3 { - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char :3; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char :3; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char :2; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char :3; - } BIT; - } ICR; - unsigned char wk3[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char :3; - } BIT; - } ODR; -}; - -struct st_port4 { - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } ICR; -}; - -struct st_port5 { - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } ICR; -}; - -struct st_port6 { - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } ICR; -}; - -struct st_port7 { - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } ICR; -}; - -struct st_port8 { - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char :2; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char :2; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char :2; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char :2; - } BIT; - } ICR; -}; - -struct st_port9 { - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } ICR; - unsigned char wk3[95]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } PCR; -}; - -struct st_porta { - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } ICR; - unsigned char wk3[95]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } PCR; -}; - -struct st_portb { - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } ICR; - unsigned char wk3[95]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } PCR; -}; - -struct st_portc { - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } ICR; - unsigned char wk3[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } ODR; - unsigned char wk4[63]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } PCR; -}; - -struct st_portd { - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } ICR; - unsigned char wk3[95]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } PCR; -}; - -struct st_porte { - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } ICR; - unsigned char wk3[95]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } PCR; -}; - -struct st_portf { - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char :3; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char :3; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char :3; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char :3; - } BIT; - } ICR; -}; - -struct st_portg { - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } ICR; - unsigned char wk3[95]; - union { - unsigned char BYTE; - struct { - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - } BIT; - } PCR; -}; - -struct st_ioport { - union { - unsigned char BYTE; - struct { - unsigned char CS0E:1; - unsigned char CS1E:1; - unsigned char CS2E:1; - unsigned char CS3E:1; - unsigned char CS4E:1; - unsigned char CS5E:1; - unsigned char CS6E:1; - unsigned char CS7E:1; - } BIT; - } PF0CSE; - union { - unsigned char BYTE; - struct { - unsigned char CS4S:2; - unsigned char CS5S:2; - unsigned char CS6S:2; - unsigned char CS7S:2; - } BIT; - } PF1CSS; - union { - unsigned char BYTE; - struct { - unsigned char CS0S:1; - unsigned char :1; - unsigned char CS1S:2; - unsigned char CS2S:2; - unsigned char CS3S:2; - } BIT; - } PF2CSS; - union { - unsigned char BYTE; - struct { - unsigned char A16E:1; - unsigned char A17E:1; - unsigned char A18E:1; - unsigned char A19E:1; - unsigned char A20E:1; - unsigned char A21E:1; - unsigned char A22E:1; - unsigned char A23E:1; - } BIT; - } PF3BUS; - union { - unsigned char BYTE; - struct { - unsigned char ADRLE:2; - unsigned char A10E:1; - unsigned char A11E:1; - unsigned char A12E:1; - unsigned char A13E:1; - unsigned char A14E:1; - unsigned char A15E:1; - } BIT; - } PF4BUS; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ADRHMS:1; - unsigned char :2; - unsigned char DHE:1; - unsigned char DH32E:1; - unsigned char WR1BC1E:1; - unsigned char WR32BC32E:1; - } BIT; - } PF5BUS; - union { - unsigned char BYTE; - struct { - unsigned char WAITS:2; - unsigned char :2; - unsigned char MDSDE:1; - unsigned char :1; - unsigned char DQM1E:1; - unsigned char SDCLKE:1; - } BIT; - } PF6BUS; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char EDMA0S:2; - unsigned char EDMA1S:2; - } BIT; - } PF7DMA; - union { - unsigned char BYTE; - struct { - unsigned char ITS8:1; - unsigned char ITS9:1; - unsigned char ITS10:1; - unsigned char ITS11:1; - unsigned char :1; - unsigned char ITS13:1; - unsigned char :1; - unsigned char ITS15:1; - } BIT; - } PF8IRQ; - union { - unsigned char BYTE; - struct { - unsigned char ITS0:1; - unsigned char ITS1:1; - unsigned char ITS2:1; - unsigned char ITS3:1; - unsigned char ITS4:1; - unsigned char ITS5:1; - unsigned char ITS6:1; - unsigned char ITS7:1; - } BIT; - } PF9IRQ; - union { - unsigned char BYTE; - struct { - unsigned char ADTRG0S:1; - unsigned char :7; - } BIT; - } PFAADC; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char TMR2S:1; - unsigned char TMR3S:1; - unsigned char :4; - } BIT; - } PFBTMR; - union { - unsigned char BYTE; - struct { - unsigned char MTUS0:1; - unsigned char MTUS1:1; - unsigned char MTUS2:1; - unsigned char MTUS3:1; - unsigned char MTUS4:1; - unsigned char MTUS5:1; - unsigned char MTUS6:1; - unsigned char TCLKS:1; - } BIT; - } PFCMTU; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char MTUS6:1; - unsigned char TCLKS:1; - } BIT; - } PFDMTU; - union { - unsigned char BYTE; - struct { - unsigned char ENETE0:1; - unsigned char ENETE1:1; - unsigned char ENETE2:1; - unsigned char ENETE3:1; - unsigned char PHYMODE:1; - unsigned char :2; - unsigned char EE:1; - } BIT; - } PFENET; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char SCI1S:1; - unsigned char SCI2S:1; - unsigned char SCI3S:1; - unsigned char :2; - unsigned char SCI6S:1; - unsigned char :1; - } BIT; - } PFFSCI; - union { - unsigned char BYTE; - struct { - unsigned char RSPIS:1; - unsigned char RSPCKE:1; - unsigned char MOSIE:1; - unsigned char MISOE:1; - unsigned char SSL0E:1; - unsigned char SSL1E:1; - unsigned char SSL2E:1; - unsigned char SSL3E:1; - } BIT; - } PFGSPI; - union { - unsigned char BYTE; - struct { - unsigned char RSPIS:1; - unsigned char RSPCKE:1; - unsigned char MOSIE:1; - unsigned char MISOE:1; - unsigned char SSL0E:1; - unsigned char SSL1E:1; - unsigned char SSL2E:1; - unsigned char SSL3E:1; - } BIT; - } PFHSPI; - unsigned char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char CAN0E:1; - unsigned char :7; - } BIT; - } PFJCAN; - union { - unsigned char BYTE; - struct { - unsigned char USBMD:2; - unsigned char PUPHZS:1; - unsigned char PDHZS:1; - unsigned char USBE:1; - unsigned char :3; - } BIT; - } PFKUSB; - union { - unsigned char BYTE; - struct { - unsigned char USBMD:2; - unsigned char PUPHZS:1; - unsigned char PDHZS:1; - unsigned char USBE:1; - unsigned char :3; - } BIT; - } PFLUSB; - union { - unsigned char BYTE; - struct { - unsigned char POE0E:1; - unsigned char POE1E:1; - unsigned char POE2E:1; - unsigned char POE3E:1; - unsigned char POE4E:1; - unsigned char POE5E:1; - unsigned char POE6E:1; - unsigned char POE7E:1; - } BIT; - } PFMPOE; - union { - unsigned char BYTE; - struct { - unsigned char POE8E:1; - unsigned char POE9E:1; - unsigned char :6; - } BIT; - } PFNPOE; -}; - -struct st_flash { - unsigned char DMMY; - union { - unsigned char BYTE; - struct { - unsigned char FLWE:2; - unsigned char :6; - } BIT; - } FWEPROR; - unsigned char wk0[7799160]; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char FRDMD:1; - unsigned char :3; - } BIT; - } FMODR; - unsigned char wk1[13]; - union { - unsigned char BYTE; - struct { - unsigned char DFLWPE:1; - unsigned char DFLRPE:1; - unsigned char :1; - unsigned char DFLAE:1; - unsigned char CMDLK:1; - unsigned char :2; - unsigned char ROMAE:1; - } BIT; - } FASTAT; - union { - unsigned char BYTE; - struct { - unsigned char DFLWPEIE:1; - unsigned char DFLRPEIE:1; - unsigned char :1; - unsigned char DFLAEIE:1; - unsigned char CMDLKIE:1; - unsigned char :2; - unsigned char ROMAEIE:1; - } BIT; - } FAEINT; - union { - unsigned char BYTE; - struct { - unsigned char FRDYIE:1; - unsigned char :7; - } BIT; - } FRDYIE; - unsigned char wk2[45]; - union { - unsigned short WORD; - struct { - unsigned short DBRE00:1; - unsigned short DBRE01:1; - unsigned short DBRE02:1; - unsigned short DBRE03:1; - unsigned short DBRE04:1; - unsigned short DBRE05:1; - unsigned short DBRE06:1; - unsigned short DBRE07:1; - unsigned short KEY:8; - } BIT; - } DFLRE0; - union { - unsigned short WORD; - struct { - unsigned short DBRE08:1; - unsigned short DBRE09:1; - unsigned short DBRE10:1; - unsigned short DBRE11:1; - unsigned short DBRE12:1; - unsigned short DBRE13:1; - unsigned short DBRE14:1; - unsigned short DBRE15:1; - unsigned short KEY:8; - } BIT; - } DFLRE1; - unsigned char wk3[12]; - union { - unsigned short WORD; - struct { - unsigned short DBWE00:1; - unsigned short DBWE01:1; - unsigned short DBWE02:1; - unsigned short DBWE03:1; - unsigned short DBWE04:1; - unsigned short DBWE05:1; - unsigned short DBWE06:1; - unsigned short DBWE07:1; - unsigned short KEY:8; - } BIT; - } DFLWE0; - union { - unsigned short WORD; - struct { - unsigned short DBWE08:1; - unsigned short DBWE09:1; - unsigned short DBWE10:1; - unsigned short DBWE11:1; - unsigned short DBWE12:1; - unsigned short DBWE13:1; - unsigned short DBWE14:1; - unsigned short DBWE15:1; - unsigned short KEY:8; - } BIT; - } DFLWE1; - union { - unsigned short WORD; - struct { - unsigned short FCRME:1; - unsigned short :7; - unsigned short KEY:8; - } BIT; - } FCURAME; - unsigned char wk4[15194]; - union { - unsigned char BYTE; - struct { - unsigned char PRGSPD:1; - unsigned char ERSSPD:1; - unsigned char :1; - unsigned char SUSRDY:1; - unsigned char PRGERR:1; - unsigned char ERSERR:1; - unsigned char ILGLERR:1; - unsigned char FRDY:1; - } BIT; - } FSTATR0; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char FLOCKST:1; - unsigned char :2; - unsigned char FCUERR:1; - } BIT; - } FSTATR1; - union { - unsigned short WORD; - struct { - unsigned short FENTRY0:1; - unsigned short :6; - unsigned short FENTRYD:1; - unsigned short FEKEY:8; - } BIT; - } FENTRYR; - union { - unsigned short WORD; - struct { - unsigned short FPROTCN:1; - unsigned short :7; - unsigned short FPKEY:8; - } BIT; - } FPROTR; - union { - unsigned short WORD; - struct { - unsigned short FRESET:1; - unsigned short :7; - unsigned short FPKEY:8; - } BIT; - } FRESETR; - unsigned char wk5[2]; - union { - unsigned short WORD; - struct { - unsigned short PCMDR:8; - unsigned short CMDR:8; - } BIT; - } FCMDR; - unsigned char wk6[12]; - union { - unsigned short WORD; - struct { - unsigned short ESUSPMD:1; - unsigned short :15; - } BIT; - } FCPSR; - union { - unsigned short WORD; - struct { - unsigned short BCSIZE:1; - unsigned short :2; - unsigned short BCADR:8; - unsigned short :5; - } BIT; - } DFLBCCNT; - union { - unsigned short WORD; - struct { - unsigned short PEERRST:8; - unsigned short :8; - } BIT; - } FPESTAT; - union { - unsigned short WORD; - struct { - unsigned short BCST:1; - unsigned short :15; - } BIT; - } DFLBCSTAT; - unsigned char wk7[24]; - union { - unsigned short WORD; - struct { - unsigned short PCKA:8; - unsigned short :8; - } BIT; - } PCKAR; -}; - -struct st_rtc { - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char F1HZ:1; - unsigned char F2HZ:1; - unsigned char F4HZ:1; - unsigned char F8HZ:1; - unsigned char F16HZ:1; - unsigned char F32HZ:1; - unsigned char F64HZ:1; - } BIT; - } R64CNT; - unsigned char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char SEC1:4; - unsigned char SEC10:3; - unsigned char :1; - } BIT; - } RSECCNT; - unsigned char wk1[1]; - union { - unsigned char BYTE; - struct { - unsigned char MIN1:4; - unsigned char MIN10:3; - unsigned char :1; - } BIT; - } RMINCNT; - unsigned char wk2[1]; - union { - unsigned char BYTE; - struct { - unsigned char HOUR1:4; - unsigned char HOUR10:2; - unsigned char :2; - } BIT; - } RHRCNT; - unsigned char wk3[1]; - union { - unsigned char BYTE; - struct { - unsigned char DAY:3; - unsigned char :5; - } BIT; - } RWKCNT; - unsigned char wk4[1]; - union { - unsigned char BYTE; - struct { - unsigned char DAY1:4; - unsigned char DAY10:2; - unsigned char :2; - } BIT; - } RDAYCNT; - unsigned char wk5[1]; - union { - unsigned char BYTE; - struct { - unsigned char MON1:4; - unsigned char MON10:1; - unsigned char :3; - } BIT; - } RMONCNT; - unsigned char wk6[1]; - union { - unsigned short WORD; - struct { - unsigned short YEAR1:4; - unsigned short YEAR10:4; - unsigned short YEAR100:4; - unsigned short YEAR1000:4; - } BIT; - } RYRCNT; - union { - unsigned char BYTE; - struct { - unsigned char SEC1:4; - unsigned char SEC10:3; - unsigned char ENB:1; - } BIT; - } RSECAR; - unsigned char wk7[1]; - union { - unsigned char BYTE; - struct { - unsigned char MIN1:4; - unsigned char MIN10:3; - unsigned char ENB:1; - } BIT; - } RMINAR; - unsigned char wk8[1]; - union { - unsigned char BYTE; - struct { - unsigned char HOUR1:4; - unsigned char HOUR10:2; - unsigned char :1; - unsigned char ENB:1; - } BIT; - } RHRAR; - unsigned char wk9[1]; - union { - unsigned char BYTE; - struct { - unsigned char DAY:3; - unsigned char :4; - unsigned char ENB:1; - } BIT; - } RWKAR; - unsigned char wk10[1]; - union { - unsigned char BYTE; - struct { - unsigned char DAY1:4; - unsigned char DAY10:2; - unsigned char :1; - unsigned char ENB:1; - } BIT; - } RDAYAR; - unsigned char wk11[1]; - union { - unsigned char BYTE; - struct { - unsigned char MON1:4; - unsigned char MON10:1; - unsigned char :2; - unsigned char ENB:1; - } BIT; - } RMONAR; - unsigned char wk12[1]; - union { - unsigned short WORD; - struct { - unsigned short YEAR1:4; - unsigned short YEAR10:4; - unsigned short YEAR100:4; - unsigned short YEAR1000:4; - } BIT; - } RYRAR; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char ENB:1; - } BIT; - } RYRAREN; - unsigned char wk13[3]; - union { - unsigned char BYTE; - struct { - unsigned char AIE:1; - unsigned char CIE:1; - unsigned char PIE:1; - unsigned char :1; - unsigned char PES:3; - unsigned char :1; - } BIT; - } RCR1; - unsigned char wk14[1]; - union { - unsigned char BYTE; - struct { - unsigned char START:1; - unsigned char RESET:1; - unsigned char ADJ:1; - unsigned char RTCOE:1; - unsigned char :4; - } BIT; - } RCR2; -}; - -struct st_can { - struct { - union { - unsigned long LONG; - union { - unsigned short H; - unsigned short L; - } WORD; - struct { - unsigned char HH; - unsigned char HL; - unsigned char LH; - unsigned char LL; - } BYTE; - struct { - unsigned long EID:18; - unsigned long SID:11; - unsigned long :1; - unsigned long RTR:1; - unsigned long IDE:1; - } BIT; - } ID; - union { - unsigned short WORD; - struct { - unsigned char DLC:4; - unsigned char :4; - unsigned char :8; - } BIT; - } DLC; - unsigned char DATA[8]; - union{ - unsigned short WORD; - struct { - unsigned char TSH; - unsigned char TSL; - } BYTE; - } TS; - } MB[32]; - union { - unsigned long LONG; - struct { - unsigned short H; - unsigned short L; - } WORD; - struct { - unsigned char HH; - unsigned char HL; - unsigned char LH; - unsigned char LL; - } BYTE; - struct { - unsigned long EID:18; - unsigned long SID:11; - unsigned long :3; - } BIT; - } MKR[8]; - union { - unsigned long LONG; - struct { - unsigned short H; - unsigned short L; - } WORD; - struct { - unsigned char HH; - unsigned char HL; - unsigned char LH; - unsigned char LL; - } BYTE; - struct { - unsigned long EID:18; - unsigned long SID:11; - unsigned long :1; - unsigned long RTR:1; - unsigned long IDE:1; - } BIT; - } FIDCR0; - union { - unsigned long LONG; - struct { - unsigned short H; - unsigned short L; - } WORD; - struct { - unsigned char HH; - unsigned char HL; - unsigned char LH; - unsigned char LL; - } BYTE; - struct { - unsigned long EID:18; - unsigned long SID:11; - unsigned long :1; - unsigned long RTR:1; - unsigned long IDE:1; - } BIT; - } FIDCR1; - unsigned long MKIVLR; - unsigned long MIER; - unsigned char wk32[1008]; - union { - unsigned char BYTE; - union { - struct { - unsigned char SENTDATA:1; - unsigned char TRMACTIVE:1; - unsigned char TRMABT:1; - unsigned char :1; - unsigned char ONESHOT:1; - unsigned char :1; - unsigned char RECREQ:1; - unsigned char TRMREQ:1; - } TX; - struct { - unsigned char NEWDATA:1; - unsigned char INVALDATA:1; - unsigned char MSGLOST:1; - unsigned char :1; - unsigned char ONESHOT:1; - unsigned char :1; - unsigned char RECREQ:1; - unsigned char TRMREQ:1; - } RX; - } BIT; - } MCTL[32]; - union { - unsigned short WORD; - struct { - unsigned char H; - unsigned char L; - } BYTE; - struct { - unsigned char MBM:1; - unsigned char IDFM:2; - unsigned char MLM:1; - unsigned char TPM:1; - unsigned char TSRC:1; - unsigned char TSPS:2; - unsigned char CANM:2; - unsigned char SLPM:1; - unsigned char BOM:2; - unsigned char RBOC:1; - unsigned char :2; - } BIT; - } CTLR; - union { - unsigned short WORD; - struct { - unsigned char H; - unsigned char L; - } BYTE; - struct { - unsigned char NDST:1; - unsigned char SDST:1; - unsigned char RFST:1; - unsigned char TFST:1; - unsigned char NMLST:1; - unsigned char FMLST:1; - unsigned char TABST:1; - unsigned char EST:1; - unsigned char RSTST:1; - unsigned char HLTST:1; - unsigned char SLPST:1; - unsigned char EPST:1; - unsigned char BOST:1; - unsigned char TRMST:1; - unsigned char RECST:1; - unsigned char :1; - } BIT; - } STR; - union { - unsigned long LONG; - struct { - unsigned short H; - unsigned short L; - } WORD; - struct { - unsigned char HH; - unsigned char HL; - unsigned char LH; - unsigned char LL; - } BYTE; - struct { - unsigned long :8; - unsigned long TSEG2:3; - unsigned long :1; - unsigned long SJW:2; - unsigned long :2; - unsigned long BRP:10; - unsigned long :2; - unsigned long TSEG1:4; - } BIT; - } BCR; - union { - unsigned char BYTE; - struct { - unsigned char RFE:1; - unsigned char RFUST:3; - unsigned char RFMLF:1; - unsigned char RFFST:1; - unsigned char RFWST:1; - unsigned char RFEST:1; - } BIT; - } RFCR; - unsigned char RFPCR; - union { - unsigned char BYTE; - struct { - unsigned char TFE:1; - unsigned char TFUST:3; - unsigned char :2; - unsigned char TFFST:1; - unsigned char TFEST:1; - } BIT; - } TFCR; - unsigned char TFPCR; - union { - unsigned char BYTE; - struct { - unsigned char BEIE:1; - unsigned char EWIE:1; - unsigned char EPIE:1; - unsigned char BOEIE:1; - unsigned char BORIE:1; - unsigned char ORIE:1; - unsigned char OLIE:1; - unsigned char BLIE:1; - } BIT; - } EIER; - union { - unsigned char BYTE; - struct { - unsigned char BEIF:1; - unsigned char EWIF:1; - unsigned char EPIF:1; - unsigned char BOEIF:1; - unsigned char BORIF:1; - unsigned char ORIF:1; - unsigned char OLIF:1; - unsigned char BLIF:1; - } BIT; - } EIFR; - unsigned char RECR; - unsigned char TECR; - union { - unsigned char BYTE; - struct { - unsigned char SEF:1; - unsigned char FEF:1; - unsigned char AEF:1; - unsigned char CEF:1; - unsigned char BE1F:1; - unsigned char BE0F:1; - unsigned char ADEF:1; - unsigned char EDPM:1; - } BIT; - } ECSR; - unsigned char CSSR; - union { - unsigned char BYTE; - struct { - unsigned char MBNST:5; - unsigned char :2; - unsigned char SEST:1; - } BIT; - } MSSR; - union { - unsigned char BYTE; - struct { - unsigned char MBSM:2; - unsigned char :6; - } BIT; - } MSMR; - unsigned short TSR; - unsigned short AFSR; - union { - unsigned char BYTE; - struct { - unsigned char TSTE:1; - unsigned char TSTM:2; - unsigned char :5; - } BIT; - } TCR; -}; - -struct st_usb0 { - union { - unsigned short WORD; - struct { - unsigned short USBE:1; - unsigned short :3; - unsigned short DPRPU:1; - unsigned short DRPD:1; - unsigned short DCFM:1; - unsigned short :3; - unsigned short SCKE:1; - unsigned short :5; - } BIT; - } SYSCFG; - unsigned char wk0[2]; - union { - unsigned short WORD; - struct { - unsigned short LNST:2; - unsigned short IDMON:1; - unsigned short :3; - unsigned short HTACT:1; - unsigned short :7; - unsigned short OVCMON:2; - } BIT; - } SYSSTS0; - unsigned char wk1[2]; - union { - unsigned short WORD; - struct { - unsigned short RHST:3; - unsigned short :1; - unsigned short UACT:1; - unsigned short RESUME:1; - unsigned short USBRST:1; - unsigned short RWUPE:1; - unsigned short WKUP:1; - unsigned short VBUSEN:1; - unsigned short EXICEN:1; - unsigned short HNPBTOA:1; - unsigned short :4; - } BIT; - } DVSTCTR0; - unsigned char wk2[10]; - union { - unsigned short WORD; - struct { - unsigned char L; - unsigned char H; - } BYTE; - } CFIFO; - unsigned char wk3[2]; - union { - unsigned short WORD; - struct { - unsigned char L; - unsigned char H; - } BYTE; - } D0FIFO; - unsigned char wk4[2]; - union { - unsigned short WORD; - struct { - unsigned char L; - unsigned char H; - } BYTE; - } D1FIFO; - unsigned char wk5[2]; - union { - unsigned short WORD; - struct { - unsigned short CURPIPE:4; - unsigned short :1; - unsigned short ISEL:1; - unsigned short :2; - unsigned short BIGEND:1; - unsigned short :1; - unsigned short MBW:1; - unsigned short :3; - unsigned short REW:1; - unsigned short RCNT:1; - } BIT; - } CFIFOSEL; - union { - unsigned short WORD; - struct { - unsigned short DTLN:8; - unsigned short TLN:1; - unsigned short :4; - unsigned short FRDY:1; - unsigned short BCLR:1; - unsigned short BVAL:1; - } BIT; - } CFIFOCTR; - unsigned char wk6[4]; - union { - unsigned short WORD; - struct { - unsigned short CURPIPE:4; - unsigned short :4; - unsigned short BIGEND:1; - unsigned short :1; - unsigned short MBW:1; - unsigned short :1; - unsigned short DREQE:1; - unsigned short DCLRM:1; - unsigned short REW:1; - unsigned short RCNT:1; - } BIT; - } D0FIFOSEL; - union { - unsigned short WORD; - struct { - unsigned short DTLN:8; - unsigned short TLN:1; - unsigned short :4; - unsigned short FRDY:1; - unsigned short BCLR:1; - unsigned short BVAL:1; - } BIT; - } D0FIFOCTR; - union { - unsigned short WORD; - struct { - unsigned short CURPIPE:4; - unsigned short :4; - unsigned short BIGEND:1; - unsigned short :1; - unsigned short MBW:1; - unsigned short :1; - unsigned short DREQE:1; - unsigned short DCLRM:1; - unsigned short REW:1; - unsigned short RCNT:1; - } BIT; - } D1FIFOSEL; - union { - unsigned short WORD; - struct { - unsigned short DTLN:8; - unsigned short TLN:1; - unsigned short :4; - unsigned short FRDY:1; - unsigned short BCLR:1; - unsigned short BVAL:1; - } BIT; - } D1FIFOCTR; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short BRDYE:1; - unsigned short NRDYE:1; - unsigned short BEMPE:1; - unsigned short CTRE:1; - unsigned short DVSE:1; - unsigned short SOFE:1; - unsigned short RSME:1; - unsigned short VBSE:1; - } BIT; - } INTENB0; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short SACKE:1; - unsigned short SIGNE:1; - unsigned short EOFERRE:1; - unsigned short :4; - unsigned short ATTCHE:1; - unsigned short DTCHE:1; - unsigned short :1; - unsigned short BCHGE:1; - unsigned short OVRCRE:1; - } BIT; - } INTENB1; - unsigned char wk7[2]; - union { - unsigned short WORD; - struct { - unsigned short PIPE0BRDYE:1; - unsigned short PIPE1BRDYE:1; - unsigned short PIPE2BRDYE:1; - unsigned short PIPE3BRDYE:1; - unsigned short PIPE4BRDYE:1; - unsigned short PIPE5BRDYE:1; - unsigned short PIPE6BRDYE:1; - unsigned short PIPE7BRDYE:1; - unsigned short PIPE8BRDYE:1; - unsigned short PIPE9BRDYE:1; - unsigned short :6; - } BIT; - } BRDYENB; - union { - unsigned short WORD; - struct { - unsigned short PIPE0BRDYE:1; - unsigned short PIPE1BRDYE:1; - unsigned short PIPE2BRDYE:1; - unsigned short PIPE3BRDYE:1; - unsigned short PIPE4BRDYE:1; - unsigned short PIPE5BRDYE:1; - unsigned short PIPE6BRDYE:1; - unsigned short PIPE7BRDYE:1; - unsigned short PIPE8BRDYE:1; - unsigned short PIPE9BRDYE:1; - unsigned short :6; - } BIT; - } NRDYENB; - union { - unsigned short WORD; - struct { - unsigned short PIPE0BEMPE:1; - unsigned short PIPE1BEMPE:1; - unsigned short PIPE2BEMPE:1; - unsigned short PIPE3BEMPE:1; - unsigned short PIPE4BEMPE:1; - unsigned short PIPE5BEMPE:1; - unsigned short PIPE6BEMPE:1; - unsigned short PIPE7BEMPE:1; - unsigned short PIPE8BEMPE:1; - unsigned short PIPE9BEMPE:1; - unsigned short :6; - } BIT; - } BEMPENB; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short EDGESTS:1; - unsigned short :1; - unsigned short BRDYM:1; - unsigned short :1; - unsigned short TRNENSEL:1; - unsigned short :7; - } BIT; - } SOFCFG; - unsigned char wk8[2]; - union { - unsigned short WORD; - struct { - unsigned short CTSQ:3; - unsigned short VALID:1; - unsigned short DVSQ:3; - unsigned short VBSTS:1; - unsigned short BRDY:1; - unsigned short NRDY:1; - unsigned short BEMP:1; - unsigned short CTRT:1; - unsigned short DVST:1; - unsigned short SOFR:1; - unsigned short RESM:1; - unsigned short VBINT:1; - } BIT; - } INTSTS0; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short SACK:1; - unsigned short SIGN:1; - unsigned short EOFERR:1; - unsigned short :4; - unsigned short ATTCH:1; - unsigned short DTCH:1; - unsigned short :1; - unsigned short BCHG:1; - unsigned short OVRCR:1; - } BIT; - } INTSTS1; - unsigned char wk9[2]; - union { - unsigned short WORD; - struct { - unsigned short PIPE0BRDY:1; - unsigned short PIPE1BRDY:1; - unsigned short PIPE2BRDY:1; - unsigned short PIPE3BRDY:1; - unsigned short PIPE4BRDY:1; - unsigned short PIPE5BRDY:1; - unsigned short PIPE6BRDY:1; - unsigned short PIPE7BRDY:1; - unsigned short PIPE8BRDY:1; - unsigned short PIPE9BRDY:1; - unsigned short :6; - } BIT; - } BRDYSTS; - union { - unsigned short WORD; - struct { - unsigned short PIPE0BRDY:1; - unsigned short PIPE1BRDY:1; - unsigned short PIPE2BRDY:1; - unsigned short PIPE3BRDY:1; - unsigned short PIPE4BRDY:1; - unsigned short PIPE5BRDY:1; - unsigned short PIPE6BRDY:1; - unsigned short PIPE7BRDY:1; - unsigned short PIPE8BRDY:1; - unsigned short PIPE9BRDY:1; - unsigned short :6; - } BIT; - } NRDYSTS; - union { - unsigned short WORD; - struct { - unsigned short PIPE0BENP:1; - unsigned short PIPE1BENP:1; - unsigned short PIPE2BENP:1; - unsigned short PIPE3BENP:1; - unsigned short PIPE4BENP:1; - unsigned short PIPE5BENP:1; - unsigned short PIPE6BENP:1; - unsigned short PIPE7BENP:1; - unsigned short PIPE8BENP:1; - unsigned short PIPE9BENP:1; - unsigned short :6; - } BIT; - } BEMPSTS; - union { - unsigned short WORD; - struct { - unsigned short FRNM:11; - unsigned short :3; - unsigned short CRCE:1; - unsigned short OVRN:1; - } BIT; - } FRMNUM; - union { - unsigned short WORD; - struct { - unsigned short :15; - unsigned short DVCHG:1; - } BIT; - } DVCHGR; - union { - unsigned short WORD; - struct { - unsigned short USBADDR:7; - unsigned short :1; - unsigned short STSRECOV:4; - unsigned short :4; - } BIT; - } USBADDR; - unsigned char wk10[2]; - union { - unsigned short WORD; - struct { - unsigned short BMREQUESTTYPE:8; - unsigned short BREQUEST:8; - } BIT; - } USBREQ; - unsigned short USBVAL; - unsigned short USBINDX; - unsigned short USBLENG; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short DIR:1; - unsigned short :2; - unsigned short SHTNAK:1; - unsigned short :8; - } BIT; - } DCPCFG; - union { - unsigned short WORD; - struct { - unsigned short MXPS:7; - unsigned short :5; - unsigned short DEVSEL:4; - } BIT; - } DCPMAXP; - union { - unsigned short WORD; - struct { - unsigned short PID:2; - unsigned short CCPL:1; - unsigned short :2; - unsigned short PBUSY:1; - unsigned short SQMON:1; - unsigned short SQSET:1; - unsigned short SQCLR:1; - unsigned short :2; - unsigned short SUREQCLR:1; - unsigned short :2; - unsigned short SUREQ:1; - unsigned short BSTS:1; - } BIT; - } DCPCTR; - unsigned char wk11[2]; - union { - unsigned short WORD; - struct { - unsigned short PIPESEL:4; - unsigned short :12; - } BIT; - } PIPESEL; - unsigned char wk12[2]; - union { - unsigned short WORD; - struct { - unsigned short EPNUM:4; - unsigned short DIR:1; - unsigned short :2; - unsigned short SHTNAK:1; - unsigned short :1; - unsigned short DBLB:1; - unsigned short BFRE:1; - unsigned short :3; - unsigned short TYPE:2; - } BIT; - } PIPECFG; - unsigned char wk13[2]; - union { - unsigned short WORD; - struct { - unsigned short MXPS:8; - unsigned short XPS:1; - unsigned short :3; - unsigned short DEVSEL:4; - } BIT; - } PIPEMAXP; - union { - unsigned short WORD; - struct { - unsigned short IITV:3; - unsigned short :9; - unsigned short IFIS:1; - unsigned short :3; - } BIT; - } PIPEPERI; - union { - unsigned short WORD; - struct { - unsigned short PID:2; - unsigned short :3; - unsigned short PBUSY:1; - unsigned short SQMON:1; - unsigned short SQSET:1; - unsigned short SQCLR:1; - unsigned short ACLRM:1; - unsigned short ATREPM:1; - unsigned short :3; - unsigned short INBUFM:1; - unsigned short BSTS:1; - } BIT; - } PIPE1CTR; - union { - unsigned short WORD; - struct { - unsigned short PID:2; - unsigned short :3; - unsigned short PBUSY:1; - unsigned short SQMON:1; - unsigned short SQSET:1; - unsigned short SQCLR:1; - unsigned short ACLRM:1; - unsigned short ATREPM:1; - unsigned short :3; - unsigned short INBUFM:1; - unsigned short BSTS:1; - } BIT; - } PIPE2CTR; - union { - unsigned short WORD; - struct { - unsigned short PID:2; - unsigned short :3; - unsigned short PBUSY:1; - unsigned short SQMON:1; - unsigned short SQSET:1; - unsigned short SQCLR:1; - unsigned short ACLRM:1; - unsigned short ATREPM:1; - unsigned short :3; - unsigned short INBUFM:1; - unsigned short BSTS:1; - } BIT; - } PIPE3CTR; - union { - unsigned short WORD; - struct { - unsigned short PID:2; - unsigned short :3; - unsigned short PBUSY:1; - unsigned short SQMON:1; - unsigned short SQSET:1; - unsigned short SQCLR:1; - unsigned short ACLRM:1; - unsigned short ATREPM:1; - unsigned short :3; - unsigned short INBUFM:1; - unsigned short BSTS:1; - } BIT; - } PIPE4CTR; - union { - unsigned short WORD; - struct { - unsigned short PID:2; - unsigned short :3; - unsigned short PBUSY:1; - unsigned short SQMON:1; - unsigned short SQSET:1; - unsigned short SQCLR:1; - unsigned short ACLRM:1; - unsigned short ATREPM:1; - unsigned short :3; - unsigned short INBUFM:1; - unsigned short BSTS:1; - } BIT; - } PIPE5CTR; - union { - unsigned short WORD; - struct { - unsigned short PID:2; - unsigned short :3; - unsigned short PBUSY:1; - unsigned short SQMON:1; - unsigned short SQSET:1; - unsigned short SQCLR:1; - unsigned short ACLRM:1; - unsigned short :5; - unsigned short BSTS:1; - } BIT; - } PIPE6CTR; - union { - unsigned short WORD; - struct { - unsigned short PID:2; - unsigned short :3; - unsigned short PBUSY:1; - unsigned short SQMON:1; - unsigned short SQSET:1; - unsigned short SQCLR:1; - unsigned short ACLRM:1; - unsigned short :5; - unsigned short BSTS:1; - } BIT; - } PIPE7CTR; - union { - unsigned short WORD; - struct { - unsigned short PID:2; - unsigned short :3; - unsigned short PBUSY:1; - unsigned short SQMON:1; - unsigned short SQSET:1; - unsigned short SQCLR:1; - unsigned short ACLRM:1; - unsigned short :5; - unsigned short BSTS:1; - } BIT; - } PIPE8CTR; - union { - unsigned short WORD; - struct { - unsigned short PID:2; - unsigned short :3; - unsigned short PBUSY:1; - unsigned short SQMON:1; - unsigned short SQSET:1; - unsigned short SQCLR:1; - unsigned short ACLRM:1; - unsigned short :5; - unsigned short BSTS:1; - } BIT; - } PIPE9CTR; - unsigned char wk14[14]; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short TRCLR:1; - unsigned short TRENB:1; - unsigned short :6; - } BIT; - } PIPE1TRE; - unsigned short PIPE1TRN; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short TRCLR:1; - unsigned short TRENB:1; - unsigned short :6; - } BIT; - } PIPE2TRE; - unsigned short PIPE2TRN; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short TRCLR:1; - unsigned short TRENB:1; - unsigned short :6; - } BIT; - } PIPE3TRE; - unsigned short PIPE3TRN; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short TRCLR:1; - unsigned short TRENB:1; - unsigned short :6; - } BIT; - } PIPE4TRE; - unsigned short PIPE4TRN; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short TRCLR:1; - unsigned short TRENB:1; - unsigned short :6; - } BIT; - } PIPE5TRE; - unsigned short PIPE5TRN; - unsigned char wk15[44]; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short USBSPD:2; - unsigned short :8; - } BIT; - } DEVADD0; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short USBSPD:2; - unsigned short :8; - } BIT; - } DEVADD1; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short USBSPD:2; - unsigned short :8; - } BIT; - } DEVADD2; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short USBSPD:2; - unsigned short :8; - } BIT; - } DEVADD3; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short USBSPD:2; - unsigned short :8; - } BIT; - } DEVADD4; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short USBSPD:2; - unsigned short :8; - } BIT; - } DEVADD5; -}; - -struct st_usb { - union { - unsigned long LONG; - struct { - unsigned long SRPC0:1; - unsigned long :3; - unsigned long FIXPHY0:1; - unsigned long :3; - unsigned long SRPC1:1; - unsigned long :3; - unsigned long FIXPHY1:1; - unsigned long :3; - unsigned long DP0:1; - unsigned long DM0:1; - unsigned long :2; - unsigned long DOVCA0:1; - unsigned long DOVCB0:1; - unsigned long :1; - unsigned long DVBSTS0:1; - unsigned long DP1:1; - unsigned long DM1:1; - unsigned long :2; - unsigned long DOVCA1:1; - unsigned long DOVCB1:1; - unsigned long :1; - unsigned long DVSTS1:1; - } BIT; - } DPUSR0R; - union { - unsigned long LONG; - struct { - unsigned long DPINTE0:1; - unsigned long DMINTE0:1; - unsigned long :2; - unsigned long DOVRCRAE0:1; - unsigned long DOVRCRBE0:1; - unsigned long :1; - unsigned long DVBSE0:1; - unsigned long DPINTE1:1; - unsigned long DMINTE1:1; - unsigned long :2; - unsigned long DOVRCRAE1:1; - unsigned long DOVRCRBE1:1; - unsigned long :1; - unsigned long DVBSE1:1; - unsigned long DPINT0:1; - unsigned long DMINT0:1; - unsigned long :2; - unsigned long DOVRCRA0:1; - unsigned long DOVRCRB0:1; - unsigned long :1; - unsigned long DVBINT0:1; - unsigned long DPINT1:1; - unsigned long DMINT1:1; - unsigned long :2; - unsigned long DOVRCRA1:1; - unsigned long DOVRCRB1:1; - unsigned long :1; - unsigned long DVBINT1:1; - } BIT; - } DPUSR1R; -}; - -struct st_edmac { - union { - unsigned long LONG; - struct { - unsigned long SWR:1; - unsigned long :3; - unsigned long DL:2; - unsigned long DE:1; - unsigned long :25; - } BIT; - } EDMR; - unsigned char wk0[4]; - union { - unsigned long LONG; - struct { - unsigned long TR:1; - unsigned long :31; - } BIT; - } EDTRR; - unsigned char wk1[4]; - union { - unsigned long LONG; - struct { - unsigned long RR:1; - unsigned long :31; - } BIT; - } EDRRR; - unsigned char wk2[4]; - void *TDLAR; - unsigned char wk3[4]; - void *RDLAR; - unsigned char wk4[4]; - union { - unsigned long LONG; - struct { - unsigned long CERF:1; - unsigned long PRE:1; - unsigned long RTSF:1; - unsigned long RTLF:1; - unsigned long RRF:1; - unsigned long :2; - unsigned long RMAF:1; - unsigned long TRO:1; - unsigned long CD:1; - unsigned long DLC:1; - unsigned long CND:1; - unsigned long :4; - unsigned long RFOF:1; - unsigned long RDE:1; - unsigned long FR:1; - unsigned long TFUF:1; - unsigned long TDE:1; - unsigned long TC:1; - unsigned long ECI:1; - unsigned long ADE:1; - unsigned long RFCOF:1; - unsigned long RABT:1; - unsigned long TABT:1; - unsigned long :3; - unsigned long TWB:1; - unsigned long :1; - } BIT; - } EESR; - unsigned char wk5[4]; - union { - unsigned long LONG; - struct { - unsigned long CERFIP:1; - unsigned long PREIP:1; - unsigned long RTSFIP:1; - unsigned long RTLFIP:1; - unsigned long RRFIP:1; - unsigned long :2; - unsigned long RMAFIP:1; - unsigned long TROIP:1; - unsigned long CDIP:1; - unsigned long DLCIP:1; - unsigned long CNDIP:1; - unsigned long :4; - unsigned long RFOFIP:1; - unsigned long RDEIP:1; - unsigned long FRIP:1; - unsigned long TFUFIP:1; - unsigned long TDEIP:1; - unsigned long TCIP:1; - unsigned long ECIIP:1; - unsigned long ADEIP:1; - unsigned long RFCOFIP:1; - unsigned long RABTIP:1; - unsigned long TABTIP:1; - unsigned long :3; - unsigned long TWBIP:1; - unsigned long :1; - } BIT; - } EESIPR; - unsigned char wk6[4]; - union { - unsigned long LONG; - struct { - unsigned long CERFCE:1; - unsigned long PRECE:1; - unsigned long RTSFCE:1; - unsigned long RTLFCE:1; - unsigned long RRFCE:1; - unsigned long :2; - unsigned long RMAFCE:1; - unsigned long TROCE:1; - unsigned long CDCE:1; - unsigned long DLCCE:1; - unsigned long CNDCE:1; - unsigned long :20; - } BIT; - } TRSCER; - unsigned char wk7[4]; - union { - unsigned long LONG; - struct { - unsigned long MFC:16; - unsigned long :16; - } BIT; - } RMFCR; - unsigned char wk8[4]; - union { - unsigned long LONG; - struct { - unsigned long TFT:11; - unsigned long :21; - } BIT; - } TFTR; - unsigned char wk9[4]; - union { - unsigned long LONG; - struct { - unsigned long RFD:5; - unsigned long :3; - unsigned long TFD:5; - unsigned long :19; - } BIT; - } FDR; - unsigned char wk10[4]; - union { - unsigned long LONG; - struct { - unsigned long RNR:1; - unsigned long RNC:1; - unsigned long :30; - } BIT; - } RMCR; - unsigned char wk11[8]; - union { - unsigned long LONG; - struct { - unsigned long UNDER:16; - unsigned long :16; - } BIT; - } TFUCR; - union { - unsigned long LONG; - struct { - unsigned long OVER:16; - unsigned long :16; - } BIT; - } RFOCR; - union { - unsigned long LONG; - struct { - unsigned long TLB:1; - unsigned long :31; - } BIT; - } IOSR; - union { - unsigned long LONG; - struct { - unsigned long RFDO:3; - unsigned long :13; - unsigned long RFFO:3; - unsigned long :13; - } BIT; - } FCFTR; - unsigned char wk12[4]; - union { - unsigned long LONG; - struct { - unsigned long PADR:6; - unsigned long :10; - unsigned long PADS:2; - unsigned long :14; - } BIT; - } RPADIR; - union { - unsigned long LONG; - struct { - unsigned long TIS:1; - unsigned long :3; - unsigned long TIM:1; - unsigned long :27; - } BIT; - } TRIMD; - unsigned char wk13[72]; - void *RBWAR; - void *RDFAR; - unsigned char wk14[4]; - void *TBRAR; - void *TDFAR; -}; - -struct st_etherc { - union { - unsigned long LONG; - struct { - unsigned long PRM:1; - unsigned long DM:1; - unsigned long RTM:1; - unsigned long ILB:1; - unsigned long :1; - unsigned long TE:1; - unsigned long RE:1; - unsigned long :2; - unsigned long MPDE:1; - unsigned long :2; - unsigned long PRCEF:1; - unsigned long :3; - unsigned long TXF:1; - unsigned long RXF:1; - unsigned long PFR:1; - unsigned long ZPE:1; - unsigned long TPC:1; - unsigned long :11; - } BIT; - } ECMR; - unsigned char wk0[4]; - union { - unsigned long LONG; - struct { - unsigned long RFL:12; - unsigned long :20; - } BIT; - } RFLR; - unsigned char wk1[4]; - union { - unsigned long LONG; - struct { - unsigned long ICD:1; - unsigned long MPD:1; - unsigned long LCHNG:1; - unsigned long :1; - unsigned long PSRTO:1; - unsigned long BFR:1; - unsigned long :26; - } BIT; - } ECSR; - unsigned char wk2[4]; - union { - unsigned long LONG; - struct { - unsigned long ICDIP:1; - unsigned long MPDIP:1; - unsigned long LCHNGIP:1; - unsigned long :1; - unsigned long PSRTOIP:1; - unsigned long BFSIPR:1; - unsigned long :26; - } BIT; - } ECSIPR; - unsigned char wk3[4]; - union { - unsigned long LONG; - struct { - unsigned long MDC:1; - unsigned long MMD:1; - unsigned long MDO:1; - unsigned long MDI:1; - unsigned long :28; - } BIT; - } PIR; - unsigned char wk4[4]; - union { - unsigned long LONG; - struct { - unsigned long LMON:1; - unsigned long :31; - } BIT; - } PSR; - unsigned char wk5[20]; - union { - unsigned long LONG; - struct { - unsigned long RMD:20; - unsigned long :12; - } BIT; - } RDMLR; - unsigned char wk6[12]; - union { - unsigned long LONG; - struct { - unsigned long IPG:5; - unsigned long :27; - } BIT; - } IPGR; - union { - unsigned long LONG; - struct { - unsigned long AP:16; - unsigned long :16; - } BIT; - } APR; - union { - unsigned long LONG; - struct { - unsigned long MP:16; - unsigned long :16; - } BIT; - } MPR; - unsigned char wk7[4]; - union { - unsigned long LONG; - struct { - unsigned long RPAUSE:8; - unsigned long :24; - } BIT; - } RFCF; - union { - unsigned long LONG; - struct { - unsigned long TPAUSE:16; - unsigned long :16; - } BIT; - } TPAUSER; - union { - unsigned long LONG; - struct { - unsigned long TXP:8; - unsigned long :24; - } BIT; - } TPAUSECR; - union { - unsigned long LONG; - struct { - unsigned long BCF:16; - unsigned long :16; - } BIT; - } BCFRR; - unsigned char wk8[80]; - unsigned long MAHR; - unsigned char wk9[4]; - union { - unsigned long LONG; - struct { - unsigned long MA:16; - unsigned long :16; - } BIT; - } MALR; - unsigned char wk10[4]; - unsigned long TROCR; - unsigned long CDCR; - unsigned long LCCR; - unsigned long CNDCR; - unsigned char wk11[4]; - unsigned long CEFCR; - unsigned long FRECR; - unsigned long TSFRCR; - unsigned long TLFRCR; - unsigned long RFCR; - unsigned long MAFCR; -}; - -enum enum_ir { -IR_BSC_BUSERR=16, -IR_FCU_FIFERR=21,IR_FCU_FRDYI=23, -IR_ICU_SWINT=27, -IR_CMT0_CMI0, -IR_CMT1_CMI1, -IR_CMT2_CMI2, -IR_CMT3_CMI3, -IR_ETHER_EINT, -IR_USB0_D0FIFO0=36,IR_USB0_D1FIFO0,IR_USB0_USBI0, -IR_USB1_D0FIFO1=40,IR_USB1_D1FIFO1,IR_USB1_USBI1, -IR_RSPI0_SPEI0=44,IR_RSPI0_SPRI0,IR_RSPI0_SPTI0,IR_RSPI0_SPII0, -IR_RSPI1_SPEI1,IR_RSPI1_SPRI1,IR_RSPI1_SPTI1,IR_RSPI1_SPII1, -IR_CAN0_ERS0=56,IR_CAN0_RXF0,IR_CAN0_TXF0,IR_CAN0_RXM0,IR_CAN0_TXM0, -IR_RTC_PRD=62,IR_RTC_CUP, -IR_ICU_IRQ0,IR_ICU_IRQ1,IR_ICU_IRQ2,IR_ICU_IRQ3,IR_ICU_IRQ4,IR_ICU_IRQ5,IR_ICU_IRQ6,IR_ICU_IRQ7,IR_ICU_IRQ8,IR_ICU_IRQ9,IR_ICU_IRQ10,IR_ICU_IRQ11,IR_ICU_IRQ12,IR_ICU_IRQ13,IR_ICU_IRQ14,IR_ICU_IRQ15, -IR_USB_USBR0=90,IR_USB_USBR1, -IR_RTC_ALM, -IR_WDT_WOVI=96, -IR_AD0_ADI0=98, -IR_AD1_ADI1, -IR_S12AD_ADI=102, -IR_MTU0_TGIA0=114,IR_MTU0_TGIB0,IR_MTU0_TGIC0,IR_MTU0_TGID0,IR_MTU0_TCIV0,IR_MTU0_TGIE0,IR_MTU0_TGIF0, -IR_MTU1_TGIA1,IR_MTU1_TGIB1,IR_MTU1_TCIV1,IR_MTU1_TCIU1, -IR_MTU2_TGIA2,IR_MTU2_TGIB2,IR_MTU2_TCIV2,IR_MTU2_TCIU2, -IR_MTU3_TGIA3,IR_MTU3_TGIB3,IR_MTU3_TGIC3,IR_MTU3_TGID3,IR_MTU3_TCIV3, -IR_MTU4_TGIA4,IR_MTU4_TGIB4,IR_MTU4_TGIC4,IR_MTU4_TGID4,IR_MTU4_TCIV4, -IR_MTU5_TGIU5,IR_MTU5_TGIV5,IR_MTU5_TGIW5, -IR_MTU6_TGIA6,IR_MTU6_TGIB6,IR_MTU6_TGIC6,IR_MTU6_TGID6,IR_MTU6_TCIV6,IR_MTU6_TGIE6,IR_MTU6_TGIF6, -IR_MTU7_TGIA7,IR_MTU7_TGIB7,IR_MTU7_TCIV7,IR_MTU7_TCIU7, -IR_MTU8_TGIA8,IR_MTU8_TGIB8,IR_MTU8_TCIV8,IR_MTU8_TCIU8, -IR_MTU9_TGIA9,IR_MTU9_TGIB9,IR_MTU9_TGIC9,IR_MTU9_TGID9,IR_MTU9_TCIV9, -IR_MTU10_TGIA10,IR_MTU10_TGIB10,IR_MTU10_TGIC10,IR_MTU10_TGID10,IR_MTU10_TCIV10, -IR_MTU11_TGIU11,IR_MTU11_TGIV11,IR_MTU11_TGIW11, -IR_POE_OEI1,IR_POE_OEI2,IR_POE_OEI3,IR_POE_OEI4, -IR_TMR0_CMIA0,IR_TMR0_CMIB0,IR_TMR0_OVI0, -IR_TMR1_CMIA1,IR_TMR1_CMIB1,IR_TMR1_OVI1, -IR_TMR2_CMIA2,IR_TMR2_CMIB2,IR_TMR2_OVI2, -IR_TMR3_CMIA3,IR_TMR3_CMIB3,IR_TMR3_OVI3, -IR_DMACA_DMAC0I=198,IR_DMACA_DMAC1I,IR_DMACA_DMAC2I,IR_DMACA_DMAC3I, -IR_EXDMAC_EXDMAC0I,IR_EXDMAC_EXDMAC1I, -IR_SCI0_ERI0=214,IR_SCI0_RXI0,IR_SCI0_TXI0,IR_SCI0_TEI0, -IR_SCI1_ERI1,IR_SCI1_RXI1,IR_SCI1_TXI1,IR_SCI1_TEI1, -IR_SCI2_ERI2,IR_SCI2_RXI2,IR_SCI2_TXI2,IR_SCI2_TEI2, -IR_SCI3_ERI3,IR_SCI3_RXI3,IR_SCI3_TXI3,IR_SCI3_TEI3, -IR_SCI5_ERI5=234,IR_SCI5_RXI5,IR_SCI5_TXI5,IR_SCI5_TEI5, -IR_SCI6_ERI6,IR_SCI6_RXI6,IR_SCI6_TXI6,IR_SCI6_TEI6, -IR_RIIC0_ICEEI0=246,IR_RIIC0_ICRXI0,IR_RIIC0_ICTXI0,IR_RIIC0_ICTEI0, -IR_RIIC1_ICEEI1,IR_RIIC1_ICRXI1,IR_RIIC1_ICTXI1,IR_RIIC1_ICTEI1 -}; - -enum enum_dtce { -DTCE_BSC_BUSERR=16, -DTCE_FCU_FIFERR=21,DTCE_FCU_FRDYI=23, -DTCE_ICU_SWINT=27, -DTCE_CMT0_CMI0, -DTCE_CMT1_CMI1, -DTCE_CMT2_CMI2, -DTCE_CMT3_CMI3, -DTCE_ETHER_EINT, -DTCE_USB0_D0FIFO0=36,DTCE_USB0_D1FIFO0,DTCE_USB0_USBI0, -DTCE_USB1_D0FIFO1=40,DTCE_USB1_D1FIFO1,DTCE_USB1_USBI1, -DTCE_RSPI0_SPEI0=44,DTCE_RSPI0_SPRI0,DTCE_RSPI0_SPTI0,DTCE_RSPI0_SPII0, -DTCE_RSPI1_SPEI1,DTCE_RSPI1_SPRI1,DTCE_RSPI1_SPTI1,DTCE_RSPI1_SPII1, -DTCE_CAN0_ERS0=56,DTCE_CAN0_RXF0,DTCE_CAN0_TXF0,DTCE_CAN0_RXM0,DTCE_CAN0_TXM0, -DTCE_RTC_PRD=62,DTCE_RTC_CUP, -DTCE_ICU_IRQ0,DTCE_ICU_IRQ1,DTCE_ICU_IRQ2,DTCE_ICU_IRQ3,DTCE_ICU_IRQ4,DTCE_ICU_IRQ5,DTCE_ICU_IRQ6,DTCE_ICU_IRQ7,DTCE_ICU_IRQ8,DTCE_ICU_IRQ9,DTCE_ICU_IRQ10,DTCE_ICU_IRQ11,DTCE_ICU_IRQ12,DTCE_ICU_IRQ13,DTCE_ICU_IRQ14,DTCE_ICU_IRQ15, -DTCE_USB_USBR0=90,DTCE_USB_USBR1, -DTCE_RTC_ALM, -DTCE_WDT_WOVI=96, -DTCE_AD0_ADI0=98, -DTCE_AD1_ADI1, -DTCE_S12AD_ADI=102, -DTCE_MTU0_TGIA0=114,DTCE_MTU0_TGIB0,DTCE_MTU0_TGIC0,DTCE_MTU0_TGID0,DTCE_MTU0_TCIV0,DTCE_MTU0_TGIE0,DTCE_MTU0_TGIF0, -DTCE_MTU1_TGIA1,DTCE_MTU1_TGIB1,DTCE_MTU1_TCIV1,DTCE_MTU1_TCIU1, -DTCE_MTU2_TGIA2,DTCE_MTU2_TGIB2,DTCE_MTU2_TCIV2,DTCE_MTU2_TCIU2, -DTCE_MTU3_TGIA3,DTCE_MTU3_TGIB3,DTCE_MTU3_TGIC3,DTCE_MTU3_TGID3,DTCE_MTU3_TCIV3, -DTCE_MTU4_TGIA4,DTCE_MTU4_TGIB4,DTCE_MTU4_TGIC4,DTCE_MTU4_TGID4,DTCE_MTU4_TCIV4, -DTCE_MTU5_TGIU5,DTCE_MTU5_TGIV5,DTCE_MTU5_TGIW5, -DTCE_MTU6_TGIA6,DTCE_MTU6_TGIB6,DTCE_MTU6_TGIC6,DTCE_MTU6_TGID6,DTCE_MTU6_TCIV6,DTCE_MTU6_TGIE6,DTCE_MTU6_TGIF6, -DTCE_MTU7_TGIA7,DTCE_MTU7_TGIB7,DTCE_MTU7_TCIV7,DTCE_MTU7_TCIU7, -DTCE_MTU8_TGIA8,DTCE_MTU8_TGIB8,DTCE_MTU8_TCIV8,DTCE_MTU8_TCIU8, -DTCE_MTU9_TGIA9,DTCE_MTU9_TGIB9,DTCE_MTU9_TGIC9,DTCE_MTU9_TGID9,DTCE_MTU9_TCIV9, -DTCE_MTU10_TGIA10,DTCE_MTU10_TGIB10,DTCE_MTU10_TGIC10,DTCE_MTU10_TGID10,DTCE_MTU10_TCIV10, -DTCE_MTU11_TGIU11,DTCE_MTU11_TGIV11,DTCE_MTU11_TGIW11, -DTCE_POE_OEI1,DTCE_POE_OEI2,DTCE_POE_OEI3,DTCE_POE_OEI4, -DTCE_TMR0_CMIA0,DTCE_TMR0_CMIB0,DTCE_TMR0_OVI0, -DTCE_TMR1_CMIA1,DTCE_TMR1_CMIB1,DTCE_TMR1_OVI1, -DTCE_TMR2_CMIA2,DTCE_TMR2_CMIB2,DTCE_TMR2_OVI2, -DTCE_TMR3_CMIA3,DTCE_TMR3_CMIB3,DTCE_TMR3_OVI3, -DTCE_DMACA_DMAC0I=198,DTCE_DMACA_DMAC1I,DTCE_DMACA_DMAC2I,DTCE_DMACA_DMAC3I, -DTCE_EXDMAC_EXDMAC0I,DTCE_EXDMAC_EXDMAC1I, -DTCE_SCI0_ERI0=214,DTCE_SCI0_RXI0,DTCE_SCI0_TXI0,DTCE_SCI0_TEI0, -DTCE_SCI1_ERI1,DTCE_SCI1_RXI1,DTCE_SCI1_TXI1,DTCE_SCI1_TEI1, -DTCE_SCI2_ERI2,DTCE_SCI2_RXI2,DTCE_SCI2_TXI2,DTCE_SCI2_TEI2, -DTCE_SCI3_ERI3,DTCE_SCI3_RXI3,DTCE_SCI3_TXI3,DTCE_SCI3_TEI3, -DTCE_SCI5_ERI5=234,DTCE_SCI5_RXI5,DTCE_SCI5_TXI5,DTCE_SCI5_TEI5, -DTCE_SCI6_ERI6,DTCE_SCI6_RXI6,DTCE_SCI6_TXI6,DTCE_SCI6_TEI6, -DTCE_RIIC0_ICEEI0=246,DTCE_RIIC0_ICRXI0,DTCE_RIIC0_ICTXI0,DTCE_RIIC0_ICTEI0, -DTCE_RIIC1_ICEEI1,DTCE_RIIC1_ICRXI1,DTCE_RIIC1_ICTXI1,DTCE_RIIC1_ICTEI1 -}; - -enum enum_ier { -IER_BSC_BUSERR=0x02, -IER_FCU_FIFERR=0x02,IER_FCU_FRDYI=0x02, -IER_ICU_SWINT=0x03, -IER_CMT0_CMI0=0x03, -IER_CMT1_CMI1=0x03, -IER_CMT2_CMI2=0x03, -IER_CMT3_CMI3=0x03, -IER_ETHER_EINT=0x04, -IER_USB0_D0FIFO0=0x04,IER_USB0_D1FIFO0=0x04,IER_USB0_USBI0=0x04, -IER_USB1_D0FIFO1=0x05,IER_USB1_D1FIFO1=0x05,IER_USB1_USBI1=0x05, -IER_RSPI0_SPEI0=0x05,IER_RSPI0_SPRI0=0x05,IER_RSPI0_SPTI0=0x05,IER_RSPI0_SPII0=0x05, -IER_RSPI1_SPEI1=0x06,IER_RSPI1_SPRI1=0x06,IER_RSPI1_SPTI1=0x06,IER_RSPI1_SPII1=0x06, -IER_CAN0_ERS0=0x07,IER_CAN0_RXF0=0x07,IER_CAN0_TXF0=0x07,IER_CAN0_RXM0=0x07,IER_CAN0_TXM0=0x07, -IER_RTC_PRD=0x07,IER_RTC_CUP=0x07, -IER_ICU_IRQ0=0x08,IER_ICU_IRQ1=0x08,IER_ICU_IRQ2=0x08,IER_ICU_IRQ3=0x08,IER_ICU_IRQ4=0x08,IER_ICU_IRQ5=0x08,IER_ICU_IRQ6=0x08,IER_ICU_IRQ7=0x08,IER_ICU_IRQ8=0x09,IER_ICU_IRQ9=0x09,IER_ICU_IRQ10=0x09,IER_ICU_IRQ11=0x09,IER_ICU_IRQ12=0x09,IER_ICU_IRQ13=0x09,IER_ICU_IRQ14=0x09,IER_ICU_IRQ15=0x09, -IER_USB_USBR0=0x0B,IER_USB_USBR1=0x0B, -IER_RTC_ALM=0x0B, -IER_WDT_WOVI=0x0C, -IER_AD0_ADI0=0x0C, -IER_AD1_ADI1=0x0C, -IER_S12AD_ADI=0x0C, -IER_MTU0_TGIA0=0x0E,IER_MTU0_TGIB0=0x0E,IER_MTU0_TGIC0=0x0E,IER_MTU0_TGID0=0x0E,IER_MTU0_TCIV0=0x0E,IER_MTU0_TGIE0=0x0E,IER_MTU0_TGIF0=0x0F, -IER_MTU1_TGIA1=0x0F,IER_MTU1_TGIB1=0x0F,IER_MTU1_TCIV1=0x0F,IER_MTU1_TCIU1=0x0F, -IER_MTU2_TGIA2=0x0F,IER_MTU2_TGIB2=0x0F,IER_MTU2_TCIV2=0x0F,IER_MTU2_TCIU2=0x10, -IER_MTU3_TGIA3=0x10,IER_MTU3_TGIB3=0x10,IER_MTU3_TGIC3=0x10,IER_MTU3_TGID3=0x10,IER_MTU3_TCIV3=0x10, -IER_MTU4_TGIA4=0x10,IER_MTU4_TGIB4=0x10,IER_MTU4_TGIC4=0x11,IER_MTU4_TGID4=0x11,IER_MTU4_TCIV4=0x11, -IER_MTU5_TGIU5=0x11,IER_MTU5_TGIV5=0x11,IER_MTU5_TGIW5=0x10, -IER_MTU6_TGIA6=0x11,IER_MTU6_TGIB6=0x11,IER_MTU6_TGIC6=0x12,IER_MTU6_TGID6=0x12,IER_MTU6_TCIV6=0x12,IER_MTU6_TGIE6=0x12,IER_MTU6_TGIF6=0x12, -IER_MTU7_TGIA7=0x12,IER_MTU7_TGIB7=0x12,IER_MTU7_TCIV7=0x12,IER_MTU7_TCIU7=0x13, -IER_MTU8_TGIA8=0x13,IER_MTU8_TGIB8=0x13,IER_MTU8_TCIV8=0x13,IER_MTU8_TCIU8=0x13, -IER_MTU9_TGIA9=0x13,IER_MTU9_TGIB9=0x13,IER_MTU9_TGIC9=0x13,IER_MTU9_TGID9=0x14,IER_MTU9_TCIV9=0x14, -IER_MTU10_TGIA10=0x14,IER_MTU10_TGIB10=0x14,IER_MTU10_TGIC10=0x14,IER_MTU10_TGID10=0x14,IER_MTU10_TCIV10=0x14, -IER_MTU11_TGIU11=0x14,IER_MTU11_TGIV11=0x15,IER_MTU11_TGIW11=0x15, -IER_POE_OEI1=0x15,IER_POE_OEI2=0x15,IER_POE_OEI3=0x15,IER_POE_OEI4=0x15, -IER_TMR0_CMIA0=0x15,IER_TMR0_CMIB0=0x15,IER_TMR0_OVI0=0x16, -IER_TMR1_CMIA1=0x16,IER_TMR1_CMIB1=0x16,IER_TMR1_OVI1=0x16, -IER_TMR2_CMIA2=0x16,IER_TMR2_CMIB2=0x16,IER_TMR2_OVI2=0x16, -IER_TMR3_CMIA3=0x16,IER_TMR3_CMIB3=0x17,IER_TMR3_OVI3=0x17, -IER_DMACA_DMAC0I=0x18,IER_DMACA_DMAC1I=0x18,IER_DMACA_DMAC2I=0x19,IER_DMACA_DMAC3I=0x19, -IER_EXDMAC_EXDMAC0I=0x19,IER_EXDMAC_EXDMAC1I=0x19, -IER_SCI0_ERI0=0x1A,IER_SCI0_RXI0=0x1A,IER_SCI0_TXI0=0x1B,IER_SCI0_TEI0=0x1B, -IER_SCI1_ERI1=0x1B,IER_SCI1_RXI1=0x1B,IER_SCI1_TXI1=0x1B,IER_SCI1_TEI1=0x1B, -IER_SCI2_ERI2=0x1B,IER_SCI2_RXI2=0x1B,IER_SCI2_TXI2=0x1C,IER_SCI2_TEI2=0x1C, -IER_SCI3_ERI3=0x1C,IER_SCI3_RXI3=0x1C,IER_SCI3_TXI3=0x1C,IER_SCI3_TEI3=0x1C, -IER_SCI5_ERI5=0x1D,IER_SCI5_RXI5=0x1D,IER_SCI5_TXI5=0x1D,IER_SCI5_TEI5=0x1D, -IER_SCI6_ERI6=0x1D,IER_SCI6_RXI6=0x1D,IER_SCI6_TXI6=0x1E,IER_SCI6_TEI6=0x1E, -IER_RIIC0_ICEEI0=0x1E,IER_RIIC0_ICRXI0=0x1E,IER_RIIC0_ICTXI0=0x1F,IER_RIIC0_ICTEI0=0x1F, -IER_RIIC1_ICEEI1=0x1F,IER_RIIC1_ICRXI1=0x1F,IER_RIIC1_ICTXI1=0x1F,IER_RIIC1_ICTEI1=0x1F -}; - -enum enum_ipr { -IPR_BSC_BUSERR=0x00, -IPR_FCU_FIFERR=0x01,IPR_FCU_FRDYI=0x02, -IPR_ICU_SWINT=0x03, -IPR_CMT0_CMI0=0x04, -IPR_CMT1_CMI1=0x05, -IPR_CMT2_CMI2=0x06, -IPR_CMT3_CMI3=0x07, -IPR_ETHER_EINT=0x08, -IPR_USB0_D0FIFO0=0x0C,IPR_USB0_D1FIFO0=0x0D,IPR_USB0_USBI0=0x0E, -IPR_USB1_D0FIFO1=0x10,IPR_USB1_D1FIFO1=0x11,IPR_USB1_USBI1=0x12, -IPR_RSPI0_SPEI0=0x14,IPR_RSPI0_SPRI0=0x14,IPR_RSPI0_SPTI0=0x14,IPR_RSPI0_SPII0=0x14, -IPR_RSPI1_SPEI1=0x15,IPR_RSPI1_SPRI1=0x15,IPR_RSPI1_SPTI1=0x15,IPR_RSPI1_SPII1=0x15, -IPR_CAN0_ERS0=0x18,IPR_CAN0_RXF0=0x18,IPR_CAN0_TXF0=0x18,IPR_CAN0_RXM0=0x18,IPR_CAN0_TXM0=0x18, -IPR_RTC_PRD=0x1E,IPR_RTC_CUP=0x1F, -IPR_ICU_IRQ0=0x20,IPR_ICU_IRQ1=0x21,IPR_ICU_IRQ2=0x22,IPR_ICU_IRQ3=0x23,IPR_ICU_IRQ4=0x24,IPR_ICU_IRQ5=0x25,IPR_ICU_IRQ6=0x26,IPR_ICU_IRQ7=0x27,IPR_ICU_IRQ8=0x28,IPR_ICU_IRQ9=0x29,IPR_ICU_IRQ10=0x2A,IPR_ICU_IRQ11=0x2B,IPR_ICU_IRQ12=0x2C,IPR_ICU_IRQ13=0x2D,IPR_ICU_IRQ14=0x2E,IPR_ICU_IRQ15=0x2F, -IPR_USB_USBR0=0x3A,IPR_USB_USBR1=0x3B, -IPR_RTC_ALM=0x3C, -IPR_WDT_WOVI=0x40, -IPR_AD0_ADI0=0x44, -IPR_AD1_ADI1=0x45, -IPR_S12AD_ADI=0x48, -IPR_MTU0_TGIA0=0x51,IPR_MTU0_TGIB0=0x51,IPR_MTU0_TGIC0=0x51,IPR_MTU0_TGID0=0x51,IPR_MTU0_TCIV0=0x52,IPR_MTU0_TGIE0=0x52,IPR_MTU0_TGIF0=0x52, -IPR_MTU1_TGIA1=0x53,IPR_MTU1_TGIB1=0x53,IPR_MTU1_TCIV1=0x54,IPR_MTU1_TCIU1=0x54, -IPR_MTU2_TGIA2=0x55,IPR_MTU2_TGIB2=0x55,IPR_MTU2_TCIV2=0x56,IPR_MTU2_TCIU2=0x56, -IPR_MTU3_TGIA3=0x57,IPR_MTU3_TGIB3=0x57,IPR_MTU3_TGIC3=0x57,IPR_MTU3_TGID3=0x57,IPR_MTU3_TCIV3=0x58, -IPR_MTU4_TGIA4=0x59,IPR_MTU4_TGIB4=0x59,IPR_MTU4_TGIC4=0x59,IPR_MTU4_TGID4=0x59,IPR_MTU4_TCIV4=0x5A, -IPR_MTU5_TGIU5=0x5B,IPR_MTU5_TGIV5=0x5B,IPR_MTU5_TGIW5=0x5B, -IPR_MTU6_TGIA6=0x5C,IPR_MTU6_TGIB6=0x5C,IPR_MTU6_TGIC6=0x5C,IPR_MTU6_TGID6=0x5C,IPR_MTU6_TCIV6=0x5D,IPR_MTU6_TGIE6=0x5D,IPR_MTU6_TGIF6=0x5D, -IPR_MTU7_TGIA7=0x5E,IPR_MTU7_TGIB7=0x5E,IPR_MTU7_TCIV7=0x5F,IPR_MTU7_TCIU7=0x5F, -IPR_MTU8_TGIA8=0x60,IPR_MTU8_TGIB8=0x60,IPR_MTU8_TCIV8=0x61,IPR_MTU8_TCIU8=0x61, -IPR_MTU9_TGIA9=0x62,IPR_MTU9_TGIB9=0x62,IPR_MTU9_TGIC9=0x62,IPR_MTU9_TGID9=0x62,IPR_MTU9_TCIV9=0x63, -IPR_MTU10_TGIA10=0x64,IPR_MTU10_TGIB10=0x64,IPR_MTU10_TGIC10=0x64,IPR_MTU10_TGID10=0x64,IPR_MTU10_TCIV10=0x65, -IPR_MTU11_TGIU11=0x66,IPR_MTU11_TGIV11=0x66,IPR_MTU11_TGIW11=0x66, -IPR_POE_OEI1=0x67,IPR_POE_OEI2=0x67,IPR_POE_OEI3=0x67,IPR_POE_OEI4=0x67, -IPR_TMR0_CMIA0=0x68,IPR_TMR0_CMIB0=0x68,IPR_TMR0_OVI0=0x68, -IPR_TMR1_CMIA1=0x69,IPR_TMR1_CMIB1=0x69,IPR_TMR1_OVI1=0x69, -IPR_TMR2_CMIA2=0x6A,IPR_TMR2_CMIB2=0x6A,IPR_TMR2_OVI2=0x6A, -IPR_TMR3_CMIA3=0x6B,IPR_TMR3_CMIB3=0x6B,IPR_TMR3_OVI3=0x6B, -IPR_DMACA_DMAC0I=0x70,IPR_DMACA_DMAC1I=0x71,IPR_DMACA_DMAC2I=0x72,IPR_DMACA_DMAC3I=0x73, -IPR_EXDMAC_EXDMAC0I=0x74,IPR_EXDMAC_EXDMAC1I=0x75, -IPR_SCI0_ERI0=0x80,IPR_SCI0_RXI0=0x80,IPR_SCI0_TXI0=0x80,IPR_SCI0_TEI0=0x80, -IPR_SCI1_ERI1=0x81,IPR_SCI1_RXI1=0x81,IPR_SCI1_TXI1=0x81,IPR_SCI1_TEI1=0x81, -IPR_SCI2_ERI2=0x82,IPR_SCI2_RXI2=0x82,IPR_SCI2_TXI2=0x82,IPR_SCI2_TEI2=0x82, -IPR_SCI3_ERI3=0x83,IPR_SCI3_RXI3=0x83,IPR_SCI3_TXI3=0x83,IPR_SCI3_TEI3=0x83, -IPR_SCI5_ERI5=0x85,IPR_SCI5_RXI5=0x85,IPR_SCI5_TXI5=0x85,IPR_SCI5_TEI5=0x85, -IPR_SCI6_ERI6=0x86,IPR_SCI6_RXI6=0x86,IPR_SCI6_TXI6=0x86,IPR_SCI6_TEI6=0x86, -IPR_RIIC0_ICEEI0=0x88,IPR_RIIC0_ICRXI0=0x89,IPR_RIIC0_ICTXI0=0x8A,IPR_RIIC0_ICTEI0=0x8B, -IPR_RIIC1_ICEEI1=0x8C,IPR_RIIC1_ICRXI1=0x8D,IPR_RIIC1_ICTXI1=0x8E,IPR_RIIC1_ICTEI1=0x8F, -IPR_BSC_=0x00, -IPR_CMT0_=0x04, -IPR_CMT1_=0x05, -IPR_CMT2_=0x06, -IPR_CMT3_=0x07, -IPR_ETHER_=0x08, -IPR_RSPI0_=0x14, -IPR_RSPI1_=0x15, -IPR_CAN0_=0x18, -IPR_WDT_=0x40, -IPR_AD0_=0x44, -IPR_AD1_=0x45, -IPR_S12AD_=0x48, -IPR_MTU1_TGI=0x53, -IPR_MTU1_TCI=0x54, -IPR_MTU2_TGI=0x55, -IPR_MTU2_TCI=0x56, -IPR_MTU3_TGI=0x57, -IPR_MTU4_TGI=0x59, -IPR_MTU5_=0x5B, -IPR_MTU5_TGI=0x5B, -IPR_MTU7_TGI=0x5E, -IPR_MTU7_TCI=0x5F, -IPR_MTU8_TGI=0x60, -IPR_MTU8_TCI=0x61, -IPR_MTU9_TGI=0x62, -IPR_MTU10_TGI=0x64, -IPR_MTU11_=0x66, -IPR_MTU11_TGI=0x66, -IPR_POE_=0x67, -IPR_POE_OEI=0x67, -IPR_TMR0_=0x68, -IPR_TMR1_=0x69, -IPR_TMR2_=0x6A, -IPR_TMR3_=0x6B, -IPR_SCI0_=0x80, -IPR_SCI1_=0x81, -IPR_SCI2_=0x82, -IPR_SCI3_=0x83, -IPR_SCI5_=0x85, -IPR_SCI6_=0x86 -}; - -#define IEN_BSC_BUSERR IEN0 -#define IEN_FCU_FIFERR IEN5 -#define IEN_FCU_FRDYI IEN7 -#define IEN_ICU_SWINT IEN3 -#define IEN_CMT0_CMI0 IEN4 -#define IEN_CMT1_CMI1 IEN5 -#define IEN_CMT2_CMI2 IEN6 -#define IEN_CMT3_CMI3 IEN7 -#define IEN_ETHER_EINT IEN0 -#define IEN_USB0_D0FIFO0 IEN4 -#define IEN_USB0_D1FIFO0 IEN5 -#define IEN_USB0_USBI0 IEN6 -#define IEN_USB1_D0FIFO1 IEN0 -#define IEN_USB1_D1FIFO1 IEN1 -#define IEN_USB1_USBI1 IEN2 -#define IEN_RSPI0_SPEI0 IEN4 -#define IEN_RSPI0_SPRI0 IEN5 -#define IEN_RSPI0_SPTI0 IEN6 -#define IEN_RSPI0_SPII0 IEN7 -#define IEN_RSPI1_SPEI1 IEN0 -#define IEN_RSPI1_SPRI1 IEN1 -#define IEN_RSPI1_SPTI1 IEN2 -#define IEN_RSPI1_SPII1 IEN3 -#define IEN_CAN0_ERS0 IEN0 -#define IEN_CAN0_RXF0 IEN1 -#define IEN_CAN0_TXF0 IEN2 -#define IEN_CAN0_RXM0 IEN3 -#define IEN_CAN0_TXM0 IEN4 -#define IEN_RTC_PRD IEN6 -#define IEN_RTC_CUP IEN7 -#define IEN_ICU_IRQ0 IEN0 -#define IEN_ICU_IRQ1 IEN1 -#define IEN_ICU_IRQ2 IEN2 -#define IEN_ICU_IRQ3 IEN3 -#define IEN_ICU_IRQ4 IEN4 -#define IEN_ICU_IRQ5 IEN5 -#define IEN_ICU_IRQ6 IEN6 -#define IEN_ICU_IRQ7 IEN7 -#define IEN_ICU_IRQ8 IEN0 -#define IEN_ICU_IRQ9 IEN1 -#define IEN_ICU_IRQ10 IEN2 -#define IEN_ICU_IRQ11 IEN3 -#define IEN_ICU_IRQ12 IEN4 -#define IEN_ICU_IRQ13 IEN5 -#define IEN_ICU_IRQ14 IEN6 -#define IEN_ICU_IRQ15 IEN7 -#define IEN_USB_USBR0 IEN2 -#define IEN_USB_USBR1 IEN3 -#define IEN_RTC_ALM IEN4 -#define IEN_WDT_WOVI IEN0 -#define IEN_AD0_ADI0 IEN2 -#define IEN_AD1_ADI1 IEN3 -#define IEN_S12AD_ADI IEN6 -#define IEN_MTU0_TGIA0 IEN2 -#define IEN_MTU0_TGIB0 IEN3 -#define IEN_MTU0_TGIC0 IEN4 -#define IEN_MTU0_TGID0 IEN5 -#define IEN_MTU0_TCIV0 IEN6 -#define IEN_MTU0_TGIE0 IEN7 -#define IEN_MTU0_TGIF0 IEN0 -#define IEN_MTU1_TGIA1 IEN1 -#define IEN_MTU1_TGIB1 IEN2 -#define IEN_MTU1_TCIV1 IEN3 -#define IEN_MTU1_TCIU1 IEN4 -#define IEN_MTU2_TGIA2 IEN5 -#define IEN_MTU2_TGIB2 IEN6 -#define IEN_MTU2_TCIV2 IEN7 -#define IEN_MTU2_TCIU2 IEN0 -#define IEN_MTU3_TGIA3 IEN1 -#define IEN_MTU3_TGIB3 IEN2 -#define IEN_MTU3_TGIC3 IEN3 -#define IEN_MTU3_TGID3 IEN4 -#define IEN_MTU3_TCIV3 IEN5 -#define IEN_MTU4_TGIA4 IEN6 -#define IEN_MTU4_TGIB4 IEN7 -#define IEN_MTU4_TGIC4 IEN0 -#define IEN_MTU4_TGID4 IEN1 -#define IEN_MTU4_TCIV4 IEN2 -#define IEN_MTU5_TGIU5 IEN3 -#define IEN_MTU5_TGIV5 IEN4 -#define IEN_MTU5_TGIW5 IEN7 -#define IEN_MTU6_TGIA6 IEN6 -#define IEN_MTU6_TGIB6 IEN7 -#define IEN_MTU6_TGIC6 IEN0 -#define IEN_MTU6_TGID6 IEN1 -#define IEN_MTU6_TCIV6 IEN2 -#define IEN_MTU6_TGIE6 IEN3 -#define IEN_MTU6_TGIF6 IEN4 -#define IEN_MTU7_TGIA7 IEN5 -#define IEN_MTU7_TGIB7 IEN6 -#define IEN_MTU7_TCIV7 IEN7 -#define IEN_MTU7_TCIU7 IEN0 -#define IEN_MTU8_TGIA8 IEN1 -#define IEN_MTU8_TGIB8 IEN2 -#define IEN_MTU8_TCIV8 IEN3 -#define IEN_MTU8_TCIU8 IEN4 -#define IEN_MTU9_TGIA9 IEN5 -#define IEN_MTU9_TGIB9 IEN6 -#define IEN_MTU9_TGIC9 IEN7 -#define IEN_MTU9_TGID9 IEN0 -#define IEN_MTU9_TCIV9 IEN1 -#define IEN_MTU10_TGIA10 IEN2 -#define IEN_MTU10_TGIB10 IEN3 -#define IEN_MTU10_TGIC10 IEN4 -#define IEN_MTU10_TGID10 IEN5 -#define IEN_MTU10_TCIV10 IEN6 -#define IEN_MTU11_TGIU11 IEN7 -#define IEN_MTU11_TGIV11 IEN0 -#define IEN_MTU11_TGIW11 IEN1 -#define IEN_POE_OEI1 IEN2 -#define IEN_POE_OEI2 IEN3 -#define IEN_POE_OEI3 IEN4 -#define IEN_POE_OEI4 IEN5 -#define IEN_TMR0_CMIA0 IEN6 -#define IEN_TMR0_CMIB0 IEN7 -#define IEN_TMR0_OVI0 IEN0 -#define IEN_TMR1_CMIA1 IEN1 -#define IEN_TMR1_CMIB1 IEN2 -#define IEN_TMR1_OVI1 IEN3 -#define IEN_TMR2_CMIA2 IEN4 -#define IEN_TMR2_CMIB2 IEN5 -#define IEN_TMR2_OVI2 IEN6 -#define IEN_TMR3_CMIA3 IEN7 -#define IEN_TMR3_CMIB3 IEN0 -#define IEN_TMR3_OVI3 IEN1 -#define IEN_DMACA_DMAC0I IEN6 -#define IEN_DMACA_DMAC1I IEN7 -#define IEN_DMACA_DMAC2I IEN0 -#define IEN_DMACA_DMAC3I IEN1 -#define IEN_EXDMAC_EXDMAC0I IEN2 -#define IEN_EXDMAC_EXDMAC1I IEN3 -#define IEN_SCI0_ERI0 IEN6 -#define IEN_SCI0_RXI0 IEN7 -#define IEN_SCI0_TXI0 IEN0 -#define IEN_SCI0_TEI0 IEN1 -#define IEN_SCI1_ERI1 IEN2 -#define IEN_SCI1_RXI1 IEN3 -#define IEN_SCI1_TXI1 IEN4 -#define IEN_SCI1_TEI1 IEN5 -#define IEN_SCI2_ERI2 IEN6 -#define IEN_SCI2_RXI2 IEN7 -#define IEN_SCI2_TXI2 IEN0 -#define IEN_SCI2_TEI2 IEN1 -#define IEN_SCI3_ERI3 IEN2 -#define IEN_SCI3_RXI3 IEN3 -#define IEN_SCI3_TXI3 IEN4 -#define IEN_SCI3_TEI3 IEN5 -#define IEN_SCI5_ERI5 IEN2 -#define IEN_SCI5_RXI5 IEN3 -#define IEN_SCI5_TXI5 IEN4 -#define IEN_SCI5_TEI5 IEN5 -#define IEN_SCI6_ERI6 IEN6 -#define IEN_SCI6_RXI6 IEN7 -#define IEN_SCI6_TXI6 IEN0 -#define IEN_SCI6_TEI6 IEN1 -#define IEN_RIIC0_ICEEI0 IEN6 -#define IEN_RIIC0_ICRXI0 IEN7 -#define IEN_RIIC0_ICTXI0 IEN0 -#define IEN_RIIC0_ICTEI0 IEN1 -#define IEN_RIIC1_ICEEI1 IEN2 -#define IEN_RIIC1_ICRXI1 IEN3 -#define IEN_RIIC1_ICTXI1 IEN4 -#define IEN_RIIC1_ICTEI1 IEN5 - -#define VECT_BSC_BUSERR 16 -#define VECT_FCU_FIFERR 21 -#define VECT_FCU_FRDYI 23 -#define VECT_ICU_SWINT 27 -#define VECT_CMT0_CMI0 28 -#define VECT_CMT1_CMI1 29 -#define VECT_CMT2_CMI2 30 -#define VECT_CMT3_CMI3 31 -#define VECT_ETHER_EINT 32 -#define VECT_USB0_D0FIFO0 36 -#define VECT_USB0_D1FIFO0 37 -#define VECT_USB0_USBI0 38 -#define VECT_USB1_D0FIFO1 40 -#define VECT_USB1_D1FIFO1 41 -#define VECT_USB1_USBI1 42 -#define VECT_RSPI0_SPEI0 44 -#define VECT_RSPI0_SPRI0 45 -#define VECT_RSPI0_SPTI0 46 -#define VECT_RSPI0_SPII0 47 -#define VECT_RSPI1_SPEI1 48 -#define VECT_RSPI1_SPRI1 49 -#define VECT_RSPI1_SPTI1 50 -#define VECT_RSPI1_SPII1 51 -#define VECT_CAN0_ERS0 56 -#define VECT_CAN0_RXF0 57 -#define VECT_CAN0_TXF0 58 -#define VECT_CAN0_RXM0 59 -#define VECT_CAN0_TXM0 60 -#define VECT_RTC_PRD 62 -#define VECT_RTC_CUP 63 -#define VECT_ICU_IRQ0 64 -#define VECT_ICU_IRQ1 65 -#define VECT_ICU_IRQ2 66 -#define VECT_ICU_IRQ3 67 -#define VECT_ICU_IRQ4 68 -#define VECT_ICU_IRQ5 69 -#define VECT_ICU_IRQ6 70 -#define VECT_ICU_IRQ7 71 -#define VECT_ICU_IRQ8 72 -#define VECT_ICU_IRQ9 73 -#define VECT_ICU_IRQ10 74 -#define VECT_ICU_IRQ11 75 -#define VECT_ICU_IRQ12 76 -#define VECT_ICU_IRQ13 77 -#define VECT_ICU_IRQ14 78 -#define VECT_ICU_IRQ15 79 -#define VECT_USB_USBR0 90 -#define VECT_USB_USBR1 91 -#define VECT_RTC_ALM 92 -#define VECT_WDT_WOVI 96 -#define VECT_AD0_ADI0 98 -#define VECT_AD1_ADI1 99 -#define VECT_S12AD_ADI 102 -#define VECT_MTU0_TGIA0 114 -#define VECT_MTU0_TGIB0 115 -#define VECT_MTU0_TGIC0 116 -#define VECT_MTU0_TGID0 117 -#define VECT_MTU0_TCIV0 118 -#define VECT_MTU0_TGIE0 119 -#define VECT_MTU0_TGIF0 120 -#define VECT_MTU1_TGIA1 121 -#define VECT_MTU1_TGIB1 122 -#define VECT_MTU1_TCIV1 123 -#define VECT_MTU1_TCIU1 124 -#define VECT_MTU2_TGIA2 125 -#define VECT_MTU2_TGIB2 126 -#define VECT_MTU2_TCIV2 127 -#define VECT_MTU2_TCIU2 128 -#define VECT_MTU3_TGIA3 129 -#define VECT_MTU3_TGIB3 130 -#define VECT_MTU3_TGIC3 131 -#define VECT_MTU3_TGID3 132 -#define VECT_MTU3_TCIV3 133 -#define VECT_MTU4_TGIA4 134 -#define VECT_MTU4_TGIB4 135 -#define VECT_MTU4_TGIC4 136 -#define VECT_MTU4_TGID4 137 -#define VECT_MTU4_TCIV4 138 -#define VECT_MTU5_TGIU5 139 -#define VECT_MTU5_TGIV5 140 -#define VECT_MTU5_TGIW5 141 -#define VECT_MTU6_TGIA6 142 -#define VECT_MTU6_TGIB6 143 -#define VECT_MTU6_TGIC6 144 -#define VECT_MTU6_TGID6 145 -#define VECT_MTU6_TCIV6 146 -#define VECT_MTU6_TGIE6 147 -#define VECT_MTU6_TGIF6 148 -#define VECT_MTU7_TGIA7 149 -#define VECT_MTU7_TGIB7 150 -#define VECT_MTU7_TCIV7 151 -#define VECT_MTU7_TCIU7 152 -#define VECT_MTU8_TGIA8 153 -#define VECT_MTU8_TGIB8 154 -#define VECT_MTU8_TCIV8 155 -#define VECT_MTU8_TCIU8 156 -#define VECT_MTU9_TGIA9 157 -#define VECT_MTU9_TGIB9 158 -#define VECT_MTU9_TGIC9 159 -#define VECT_MTU9_TGID9 160 -#define VECT_MTU9_TCIV9 161 -#define VECT_MTU10_TGIA10 162 -#define VECT_MTU10_TGIB10 163 -#define VECT_MTU10_TGIC10 164 -#define VECT_MTU10_TGID10 165 -#define VECT_MTU10_TCIV10 166 -#define VECT_MTU11_TGIU11 167 -#define VECT_MTU11_TGIV11 168 -#define VECT_MTU11_TGIW11 169 -#define VECT_POE_OEI1 170 -#define VECT_POE_OEI2 171 -#define VECT_POE_OEI3 172 -#define VECT_POE_OEI4 173 -#define VECT_TMR0_CMIA0 174 -#define VECT_TMR0_CMIB0 175 -#define VECT_TMR0_OVI0 176 -#define VECT_TMR1_CMIA1 177 -#define VECT_TMR1_CMIB1 178 -#define VECT_TMR1_OVI1 179 -#define VECT_TMR2_CMIA2 180 -#define VECT_TMR2_CMIB2 181 -#define VECT_TMR2_OVI2 182 -#define VECT_TMR3_CMIA3 183 -#define VECT_TMR3_CMIB3 184 -#define VECT_TMR3_OVI3 185 -#define VECT_DMACA_DMAC0I 198 -#define VECT_DMACA_DMAC1I 199 -#define VECT_DMACA_DMAC2I 200 -#define VECT_DMACA_DMAC3I 201 -#define VECT_EXDMAC_EXDMAC0I 202 -#define VECT_EXDMAC_EXDMAC1I 203 -#define VECT_SCI0_ERI0 214 -#define VECT_SCI0_RXI0 215 -#define VECT_SCI0_TXI0 216 -#define VECT_SCI0_TEI0 217 -#define VECT_SCI1_ERI1 218 -#define VECT_SCI1_RXI1 219 -#define VECT_SCI1_TXI1 220 -#define VECT_SCI1_TEI1 221 -#define VECT_SCI2_ERI2 222 -#define VECT_SCI2_RXI2 223 -#define VECT_SCI2_TXI2 224 -#define VECT_SCI2_TEI2 225 -#define VECT_SCI3_ERI3 226 -#define VECT_SCI3_RXI3 227 -#define VECT_SCI3_TXI3 228 -#define VECT_SCI3_TEI3 229 -#define VECT_SCI5_ERI5 234 -#define VECT_SCI5_RXI5 235 -#define VECT_SCI5_TXI5 236 -#define VECT_SCI5_TEI5 237 -#define VECT_SCI6_ERI6 238 -#define VECT_SCI6_RXI6 239 -#define VECT_SCI6_TXI6 240 -#define VECT_SCI6_TEI6 241 -#define VECT_RIIC0_ICEEI0 246 -#define VECT_RIIC0_ICRXI0 247 -#define VECT_RIIC0_ICTXI0 248 -#define VECT_RIIC0_ICTEI0 249 -#define VECT_RIIC1_ICEEI1 250 -#define VECT_RIIC1_ICRXI1 251 -#define VECT_RIIC1_ICTXI1 252 -#define VECT_RIIC1_ICTEI1 253 - -#define MSTP_EXDMAC SYSTEM.MSTPCRA.BIT.MSTPA29 -#define MSTP_DMACA SYSTEM.MSTPCRA.BIT.MSTPA28 -#define MSTP_DTC SYSTEM.MSTPCRA.BIT.MSTPA28 -#define MSTP_AD0 SYSTEM.MSTPCRA.BIT.MSTPA23 -#define MSTP_AD1 SYSTEM.MSTPCRA.BIT.MSTPA22 -#define MSTP_DA SYSTEM.MSTPCRA.BIT.MSTPA19 -#define MSTP_S12AD SYSTEM.MSTPCRA.BIT.MSTPA17 -#define MSTP_CMT0 SYSTEM.MSTPCRA.BIT.MSTPA15 -#define MSTP_CMT1 SYSTEM.MSTPCRA.BIT.MSTPA15 -#define MSTP_CMT2 SYSTEM.MSTPCRA.BIT.MSTPA14 -#define MSTP_CMT3 SYSTEM.MSTPCRA.BIT.MSTPA14 -#define MSTP_PPG0 SYSTEM.MSTPCRA.BIT.MSTPA11 -#define MSTP_PPG1 SYSTEM.MSTPCRA.BIT.MSTPA10 -#define MSTP_MTUA SYSTEM.MSTPCRA.BIT.MSTPA9 -#define MSTP_MTU0 SYSTEM.MSTPCRA.BIT.MSTPA9 -#define MSTP_MTU1 SYSTEM.MSTPCRA.BIT.MSTPA9 -#define MSTP_MTU2 SYSTEM.MSTPCRA.BIT.MSTPA9 -#define MSTP_MTU3 SYSTEM.MSTPCRA.BIT.MSTPA9 -#define MSTP_MTU4 SYSTEM.MSTPCRA.BIT.MSTPA9 -#define MSTP_MTU5 SYSTEM.MSTPCRA.BIT.MSTPA9 -#define MSTP_MTUB SYSTEM.MSTPCRA.BIT.MSTPA8 -#define MSTP_MTU6 SYSTEM.MSTPCRA.BIT.MSTPA8 -#define MSTP_MTU7 SYSTEM.MSTPCRA.BIT.MSTPA8 -#define MSTP_MTU8 SYSTEM.MSTPCRA.BIT.MSTPA8 -#define MSTP_MTU9 SYSTEM.MSTPCRA.BIT.MSTPA8 -#define MSTP_MTU10 SYSTEM.MSTPCRA.BIT.MSTPA8 -#define MSTP_MTU11 SYSTEM.MSTPCRA.BIT.MSTPA8 -#define MSTP_TMR0 SYSTEM.MSTPCRA.BIT.MSTPA5 -#define MSTP_TMR1 SYSTEM.MSTPCRA.BIT.MSTPA5 -#define MSTP_TMR01 SYSTEM.MSTPCRA.BIT.MSTPA5 -#define MSTP_TMR2 SYSTEM.MSTPCRA.BIT.MSTPA4 -#define MSTP_TMR3 SYSTEM.MSTPCRA.BIT.MSTPA4 -#define MSTP_TMR23 SYSTEM.MSTPCRA.BIT.MSTPA4 -#define MSTP_SCI0 SYSTEM.MSTPCRB.BIT.MSTPB31 -#define MSTP_SMCI0 SYSTEM.MSTPCRB.BIT.MSTPB31 -#define MSTP_SCI1 SYSTEM.MSTPCRB.BIT.MSTPB30 -#define MSTP_SMCI1 SYSTEM.MSTPCRB.BIT.MSTPB30 -#define MSTP_SCI2 SYSTEM.MSTPCRB.BIT.MSTPB29 -#define MSTP_SMCI2 SYSTEM.MSTPCRB.BIT.MSTPB29 -#define MSTP_SCI3 SYSTEM.MSTPCRB.BIT.MSTPB28 -#define MSTP_SMCI3 SYSTEM.MSTPCRB.BIT.MSTPB28 -#define MSTP_SCI5 SYSTEM.MSTPCRB.BIT.MSTPB26 -#define MSTP_SMCI5 SYSTEM.MSTPCRB.BIT.MSTPB26 -#define MSTP_SCI6 SYSTEM.MSTPCRB.BIT.MSTPB25 -#define MSTP_SMCI6 SYSTEM.MSTPCRB.BIT.MSTPB25 -#define MSTP_CRC SYSTEM.MSTPCRB.BIT.MSTPB23 -#define MSTP_RIIC0 SYSTEM.MSTPCRB.BIT.MSTPB21 -#define MSTP_RIIC1 SYSTEM.MSTPCRB.BIT.MSTPB20 -#define MSTP_USB0 SYSTEM.MSTPCRB.BIT.MSTPB19 -#define MSTP_USB1 SYSTEM.MSTPCRB.BIT.MSTPB18 -#define MSTP_RSPI0 SYSTEM.MSTPCRB.BIT.MSTPB17 -#define MSTP_RSPI1 SYSTEM.MSTPCRB.BIT.MSTPB16 -#define MSTP_EDMAC SYSTEM.MSTPCRB.BIT.MSTPB15 -#define MSTP_CAN0 SYSTEM.MSTPCRB.BIT.MSTPB0 -#define MSTP_RAM0 SYSTEM.MSTPCRC.BIT.MSTPC1 -#define MSTP_RAM1 SYSTEM.MSTPCRC.BIT.MSTPC0 - -#define __IR( x ) ICU.IR[ IR ## x ].BIT.IR -#define _IR( x ) __IR( x ) -#define IR( x , y ) _IR( _ ## x ## _ ## y ) -#define __DTCE( x ) ICU.DTCER[ DTCE ## x ].BIT.DTCE -#define _DTCE( x ) __DTCE( x ) -#define DTCE( x , y ) _DTCE( _ ## x ## _ ## y ) -#define __IEN( x ) ICU.IER[ IER ## x ].BIT.IEN ## x -#define _IEN( x ) __IEN( x ) -#define IEN( x , y ) _IEN( _ ## x ## _ ## y ) -#define __IPR( x ) ICU.IPR[ IPR ## x ].BIT.IPR -#define _IPR( x ) __IPR( x ) -#define IPR( x , y ) _IPR( _ ## x ## _ ## y ) -#define __VECT( x ) VECT ## x -#define _VECT( x ) __VECT( x ) -#define VECT( x , y ) _VECT( _ ## x ## _ ## y ) -#define __MSTP( x ) MSTP ## x -#define _MSTP( x ) __MSTP( x ) -#define MSTP( x ) _MSTP( _ ## x ) - -#define SYSTEM (*(volatile struct st_system *)0x80000) -#define BSC (*(volatile struct st_bsc *)0x81300) -#define DMAC0 (*(volatile struct st_dmac0 *)0x82000) -#define DMAC1 (*(volatile struct st_dmac1 *)0x82040) -#define DMAC2 (*(volatile struct st_dmac1 *)0x82080) -#define DMAC3 (*(volatile struct st_dmac1 *)0x820C0) -#define DMAC (*(volatile struct st_dmac *)0x82200) -#define DTC (*(volatile struct st_dtc *)0x82400) -#define EXDMAC0 (*(volatile struct st_exdmac0 *)0x82800) -#define EXDMAC1 (*(volatile struct st_exdmac0 *)0x82840) -#define EXDMAC (*(volatile struct st_exdmac *)0x82A00) -#define ICU (*(volatile struct st_icu *)0x87000) -#define CMT (*(volatile struct st_cmt *)0x88000) -#define CMT0 (*(volatile struct st_cmt0 *)0x88002) -#define CMT1 (*(volatile struct st_cmt0 *)0x88008) -#define CMT2 (*(volatile struct st_cmt0 *)0x88012) -#define CMT3 (*(volatile struct st_cmt0 *)0x88018) -#define WDT (*(volatile union un_wdt *)0x88028) -#define IWDT (*(volatile struct st_iwdt *)0x88030) -#define AD0 (*(volatile struct st_ad *)0x88040) -#define AD1 (*(volatile struct st_ad *)0x88060) -#define DA (*(volatile struct st_da *)0x880C0) -#define PPG0 (*(volatile struct st_ppg0 *)0x881E6) -#define PPG1 (*(volatile struct st_ppg1 *)0x881F0) -#define TMR0 (*(volatile struct st_tmr0 *)0x88200) -#define TMR1 (*(volatile struct st_tmr1 *)0x88201) -#define TMR01 (*(volatile struct st_tmr01 *)0x88204) -#define TMR2 (*(volatile struct st_tmr0 *)0x88210) -#define TMR3 (*(volatile struct st_tmr1 *)0x88211) -#define TMR23 (*(volatile struct st_tmr01 *)0x88214) -#define SCI0 (*(volatile struct st_sci *)0x88240) -#define SCI1 (*(volatile struct st_sci *)0x88248) -#define SCI2 (*(volatile struct st_sci *)0x88250) -#define SCI3 (*(volatile struct st_sci *)0x88258) -#define SCI5 (*(volatile struct st_sci *)0x88268) -#define SCI6 (*(volatile struct st_sci *)0x88270) -#define SMCI0 (*(volatile struct st_smci *)0x88240) -#define SMCI1 (*(volatile struct st_smci *)0x88248) -#define SMCI2 (*(volatile struct st_smci *)0x88250) -#define SMCI3 (*(volatile struct st_smci *)0x88258) -#define SMCI5 (*(volatile struct st_smci *)0x88268) -#define SMCI6 (*(volatile struct st_smci *)0x88270) -#define CRC (*(volatile struct st_crc *)0x88280) -#define RIIC0 (*(volatile struct st_riic *)0x88300) -#define RIIC1 (*(volatile struct st_riic *)0x88320) -#define RSPI0 (*(volatile struct st_rspi *)0x88380) -#define RSPI1 (*(volatile struct st_rspi *)0x883A0) -#define MTUA (*(volatile struct st_mtu *)0x8860A) -#define MTU0 (*(volatile struct st_mtu0 *)0x88700) -#define MTU1 (*(volatile struct st_mtu1 *)0x88780) -#define MTU2 (*(volatile struct st_mtu2 *)0x88800) -#define MTU3 (*(volatile struct st_mtu3 *)0x88600) -#define MTU4 (*(volatile struct st_mtu4 *)0x88600) -#define MTU5 (*(volatile struct st_mtu5 *)0x88880) -#define POE (*(volatile struct st_poe *)0x88900) -#define MTUB (*(volatile struct st_mtu *)0x88A0A) -#define MTU6 (*(volatile struct st_mtu0 *)0x88B00) -#define MTU7 (*(volatile struct st_mtu1 *)0x88B80) -#define MTU8 (*(volatile struct st_mtu2 *)0x88C00) -#define MTU9 (*(volatile struct st_mtu3 *)0x88A00) -#define MTU10 (*(volatile struct st_mtu4 *)0x88A00) -#define MTU11 (*(volatile struct st_mtu5 *)0x88C80) -#define S12AD (*(volatile struct st_s12ad *)0x89000) -#define PORT0 (*(volatile struct st_port0 *)0x8C000) -#define PORT1 (*(volatile struct st_port1 *)0x8C001) -#define PORT2 (*(volatile struct st_port2 *)0x8C002) -#define PORT3 (*(volatile struct st_port3 *)0x8C003) -#define PORT4 (*(volatile struct st_port4 *)0x8C004) -#define PORT5 (*(volatile struct st_port5 *)0x8C005) -#define PORT6 (*(volatile struct st_port6 *)0x8C006) -#define PORT7 (*(volatile struct st_port7 *)0x8C007) -#define PORT8 (*(volatile struct st_port8 *)0x8C008) -#define PORT9 (*(volatile struct st_port9 *)0x8C009) -#define PORTA (*(volatile struct st_porta *)0x8C00A) -#define PORTB (*(volatile struct st_portb *)0x8C00B) -#define PORTC (*(volatile struct st_portc *)0x8C00C) -#define PORTD (*(volatile struct st_portd *)0x8C00D) -#define PORTE (*(volatile struct st_porte *)0x8C00E) -#define PORTF (*(volatile struct st_portf *)0x8C00F) -#define PORTG (*(volatile struct st_portg *)0x8C010) -#define IOPORT (*(volatile struct st_ioport *)0x8C100) -#define FLASH (*(volatile struct st_flash *)0x8C288) -#define RTC (*(volatile struct st_rtc *)0x8C400) -#define CAN0 (*(volatile struct st_can *)0x90200) -#define USB0 (*(volatile struct st_usb0 *)0xA0000) -#define USB1 (*(volatile struct st_usb0 *)0xA0200) -#define USB (*(volatile struct st_usb *)0xA0400) -#define EDMAC (*(volatile struct st_edmac *)0xC0000) -#define ETHERC (*(volatile struct st_etherc *)0xC0100) - -#elif __RX_BIG_ENDIAN__ /*Big endian*/ - -struct st_system { - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short MDE:1; - unsigned short :5; - unsigned short MD1:1; - unsigned short MD0:1; - } BIT; - } MDMONR; - union { - unsigned short WORD; - struct { - unsigned short :9; - unsigned short UBTS:1; - unsigned short :1; - unsigned short BOTS:1; - unsigned short BSW:2; - unsigned short EXB:1; - unsigned short IROM:1; - } BIT; - } MDSR; - unsigned char wk0[2]; - union { - unsigned short WORD; - struct { - unsigned short KEY:8; - unsigned short :6; - unsigned short EXBE:1; - unsigned short ROME:1; - } BIT; - } SYSCR0; - union { - unsigned short WORD; - struct { - unsigned short :15; - unsigned short RAME:1; - } BIT; - } SYSCR1; - unsigned char wk1[2]; - union { - unsigned short WORD; - struct { - unsigned short SSBY:1; - unsigned short OPE:1; - unsigned short :1; - unsigned short STS:5; - unsigned short :8; - } BIT; - } SBYCR; - unsigned char wk2[2]; - union { - unsigned long LONG; - struct { - unsigned long ACSE:1; - unsigned long :1; - unsigned long MSTPA29:1; - unsigned long MSTPA28:1; - unsigned long :4; - unsigned long MSTPA23:1; - unsigned long MSTPA22:1; - unsigned long :2; - unsigned long MSTPA19:1; - unsigned long :1; - unsigned long MSTPA17:1; - unsigned long :1; - unsigned long MSTPA15:1; - unsigned long MSTPA14:1; - unsigned long :2; - unsigned long MSTPA11:1; - unsigned long MSTPA10:1; - unsigned long MSTPA9:1; - unsigned long MSTPA8:1; - unsigned long :2; - unsigned long MSTPA5:1; - unsigned long MSTPA4:1; - unsigned long :4; - } BIT; - } MSTPCRA; - union { - unsigned long LONG; - struct { - unsigned long MSTPB31:1; - unsigned long MSTPB30:1; - unsigned long MSTPB29:1; - unsigned long MSTPB28:1; - unsigned long :1; - unsigned long MSTPB26:1; - unsigned long MSTPB25:1; - unsigned long :1; - unsigned long MSTPB23:1; - unsigned long :1; - unsigned long MSTPB21:1; - unsigned long MSTPB20:1; - unsigned long MSTPB19:1; - unsigned long MSTPB18:1; - unsigned long MSTPB17:1; - unsigned long MSTPB16:1; - unsigned long MSTPB15:1; - unsigned long :14; - unsigned long MSTPB0:1; - } BIT; - } MSTPCRB; - union { - unsigned long LONG; - struct { - unsigned long :30; - unsigned long MSTPC1:1; - unsigned long MSTPC0:1; - } BIT; - } MSTPCRC; - unsigned char wk3[4]; - union { - unsigned long LONG; - struct { - unsigned long :4; - unsigned long ICK:4; - unsigned long PSTOP1:1; - unsigned long PSTOP0:1; - unsigned long :2; - unsigned long BCK:4; - unsigned long :4; - unsigned long PCK:4; - unsigned long :8; - } BIT; - } SCKCR; - unsigned char wk4[12]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char BCLKDIV:1; - } BIT; - } BCKCR; - unsigned char wk5[15]; - union { - unsigned short WORD; - struct { - unsigned short KEY:8; - unsigned short OSTDE:1; - unsigned short OSTDF:1; - unsigned short :6; - } BIT; - } OSTDCR; - unsigned char wk6[49726]; - union { - unsigned char BYTE; - struct { - unsigned char DPSBY:1; - unsigned char IOKEEP:1; - unsigned char RAMCUT2:1; - unsigned char RAMCUT1:1; - unsigned char :3; - unsigned char RAMCUT0:1; - } BIT; - } DPSBYCR; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char WTSTS:6; - } BIT; - } DPSWCR; - union { - unsigned char BYTE; - struct { - unsigned char DNMIE:1; - unsigned char DUSBE:1; - unsigned char DRTCE:1; - unsigned char DLVDE:1; - unsigned char DIRQ3E:1; - unsigned char DIRQ2E:1; - unsigned char DIRQ1E:1; - unsigned char DIRQ0E:1; - } BIT; - } DPSIER; - union { - unsigned char BYTE; - struct { - unsigned char DNMIF:1; - unsigned char DUSBF:1; - unsigned char DRTCFF:1; - unsigned char DLVDF:1; - unsigned char DIRQ3F:1; - unsigned char DIRQ2F:1; - unsigned char DIRQ1F:1; - unsigned char DIRQ0F:1; - } BIT; - } DPSIFR; - union { - unsigned char BYTE; - struct { - unsigned char DNMIEG:1; - unsigned char :3; - unsigned char DIRQ3EG:1; - unsigned char DIRQ2EG:1; - unsigned char DIRQ1EG:1; - unsigned char DIRQ0EG:1; - } BIT; - } DPSIEGR; - union { - unsigned char BYTE; - struct { - unsigned char DPSRSTF:1; - unsigned char :4; - unsigned char LVD2F:1; - unsigned char LVD1F:1; - unsigned char PORF:1; - } BIT; - } RSTSR; - unsigned char wk7[4]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char SUBSTOP:1; - } BIT; - } SUBOSCCR; - unsigned char wk8[1]; - unsigned char LVDKEYR; - union { - unsigned char BYTE; - struct { - unsigned char LVD2E:1; - unsigned char LVD2RI:1; - unsigned char :2; - unsigned char LVD1E:1; - unsigned char LVD1RI:1; - unsigned char :2; - } BIT; - } LVDCR; - unsigned char wk9[2]; - unsigned char DPSBKR[32]; -}; - -struct st_bsc { - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char STSCLR:1; - } BIT; - } BERCLR; - unsigned char wk0[3]; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char TOEN:1; - unsigned char IGAEN:1; - } BIT; - } BEREN; - unsigned char wk1[3]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char MST:3; - unsigned char :2; - unsigned char TO:1; - unsigned char IA:1; - } BIT; - } BERSR1; - unsigned char wk2[1]; - union { - unsigned short WORD; - struct { - unsigned short ADDR:13; - unsigned short :3; - } BIT; - } BERSR2; - unsigned char wk3[7414]; - union { - unsigned short WORD; - struct { - unsigned short PRMOD:1; - unsigned short :5; - unsigned short PWENB:1; - unsigned short PRENB:1; - unsigned short :4; - unsigned short EWENB:1; - unsigned short :2; - unsigned short WRMOD:1; - } BIT; - } CS0MOD; - union { - unsigned long LONG; - struct { - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - unsigned long CSWWAIT:5; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSPWWAIT:3; - } BIT; - } CS0WCR1; - union { - unsigned long LONG; - struct { - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long RDON:3; - unsigned long :5; - unsigned long WDOFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long CSROFF:3; - } BIT; - } CS0WCR2; - unsigned char wk4[6]; - union { - unsigned short WORD; - struct { - unsigned short PRMOD:1; - unsigned short :5; - unsigned short PWENB:1; - unsigned short PRENB:1; - unsigned short :4; - unsigned short EWENB:1; - unsigned short :2; - unsigned short WRMOD:1; - } BIT; - } CS1MOD; - union { - unsigned long LONG; - struct { - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - unsigned long CSWWAIT:5; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSPWWAIT:3; - } BIT; - } CS1WCR1; - union { - unsigned long LONG; - struct { - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long RDON:3; - unsigned long :5; - unsigned long WDOFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long CSROFF:3; - } BIT; - } CS1WCR2; - unsigned char wk5[6]; - union { - unsigned short WORD; - struct { - unsigned short PRMOD:1; - unsigned short :5; - unsigned short PWENB:1; - unsigned short PRENB:1; - unsigned short :4; - unsigned short EWENB:1; - unsigned short :2; - unsigned short WRMOD:1; - } BIT; - } CS2MOD; - union { - unsigned long LONG; - struct { - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - unsigned long CSWWAIT:5; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSPWWAIT:3; - } BIT; - } CS2WCR1; - union { - unsigned long LONG; - struct { - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long RDON:3; - unsigned long :5; - unsigned long WDOFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long CSROFF:3; - } BIT; - } CS2WCR2; - unsigned char wk6[6]; - union { - unsigned short WORD; - struct { - unsigned short PRMOD:1; - unsigned short :5; - unsigned short PWENB:1; - unsigned short PRENB:1; - unsigned short :4; - unsigned short EWENB:1; - unsigned short :2; - unsigned short WRMOD:1; - } BIT; - } CS3MOD; - union { - unsigned long LONG; - struct { - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - unsigned long CSWWAIT:5; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSPWWAIT:3; - } BIT; - } CS3WCR1; - union { - unsigned long LONG; - struct { - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long RDON:3; - unsigned long :5; - unsigned long WDOFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long CSROFF:3; - } BIT; - } CS3WCR2; - unsigned char wk7[6]; - union { - unsigned short WORD; - struct { - unsigned short PRMOD:1; - unsigned short :5; - unsigned short PWENB:1; - unsigned short PRENB:1; - unsigned short :4; - unsigned short EWENB:1; - unsigned short :2; - unsigned short WRMOD:1; - } BIT; - } CS4MOD; - union { - unsigned long LONG; - struct { - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - unsigned long CSWWAIT:5; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSPWWAIT:3; - } BIT; - } CS4WCR1; - union { - unsigned long LONG; - struct { - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long RDON:3; - unsigned long :5; - unsigned long WDOFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long CSROFF:3; - } BIT; - } CS4WCR2; - unsigned char wk8[6]; - union { - unsigned short WORD; - struct { - unsigned short PRMOD:1; - unsigned short :5; - unsigned short PWENB:1; - unsigned short PRENB:1; - unsigned short :4; - unsigned short EWENB:1; - unsigned short :2; - unsigned short WRMOD:1; - } BIT; - } CS5MOD; - union { - unsigned long LONG; - struct { - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - unsigned long CSWWAIT:5; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSPWWAIT:3; - } BIT; - } CS5WCR1; - union { - unsigned long LONG; - struct { - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long RDON:3; - unsigned long :5; - unsigned long WDOFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long CSROFF:3; - } BIT; - } CS5WCR2; - unsigned char wk9[6]; - union { - unsigned short WORD; - struct { - unsigned short PRMOD:1; - unsigned short :5; - unsigned short PWENB:1; - unsigned short PRENB:1; - unsigned short :4; - unsigned short EWENB:1; - unsigned short :2; - unsigned short WRMOD:1; - } BIT; - } CS6MOD; - union { - unsigned long LONG; - struct { - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - unsigned long CSWWAIT:5; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSPWWAIT:3; - } BIT; - } CS6WCR1; - union { - unsigned long LONG; - struct { - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long RDON:3; - unsigned long :5; - unsigned long WDOFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long CSROFF:3; - } BIT; - } CS6WCR2; - unsigned char wk10[6]; - union { - unsigned short WORD; - struct { - unsigned short PRMOD:1; - unsigned short :5; - unsigned short PWENB:1; - unsigned short PRENB:1; - unsigned short :4; - unsigned short EWENB:1; - unsigned short :2; - unsigned short WRMOD:1; - } BIT; - } CS7MOD; - union { - unsigned long LONG; - struct { - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - unsigned long CSWWAIT:5; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSPWWAIT:3; - } BIT; - } CS7WCR1; - union { - unsigned long LONG; - struct { - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long RDON:3; - unsigned long :5; - unsigned long WDOFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long CSROFF:3; - } BIT; - } CS7WCR2; - unsigned char wk11[1926]; - union { - unsigned short WORD; - struct { - unsigned short :7; - unsigned short EMODE:1; - unsigned short :2; - unsigned short BSIZE:2; - unsigned short :3; - unsigned short EXENB:1; - } BIT; - } CS0CR; - unsigned char wk12[6]; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - unsigned short RRCV:4; - } BIT; - } CS0REC; - unsigned char wk13[6]; - union { - unsigned short WORD; - struct { - unsigned short :7; - unsigned short EMODE:1; - unsigned short :2; - unsigned short BSIZE:2; - unsigned short :3; - unsigned short EXENB:1; - } BIT; - } CS1CR; - unsigned char wk14[6]; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - unsigned short RRCV:4; - } BIT; - } CS1REC; - unsigned char wk15[6]; - union { - unsigned short WORD; - struct { - unsigned short :7; - unsigned short EMODE:1; - unsigned short :2; - unsigned short BSIZE:2; - unsigned short :3; - unsigned short EXENB:1; - } BIT; - } CS2CR; - unsigned char wk16[6]; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - unsigned short RRCV:4; - } BIT; - } CS2REC; - unsigned char wk17[6]; - union { - unsigned short WORD; - struct { - unsigned short :7; - unsigned short EMODE:1; - unsigned short :2; - unsigned short BSIZE:2; - unsigned short :3; - unsigned short EXENB:1; - } BIT; - } CS3CR; - unsigned char wk18[6]; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - unsigned short RRCV:4; - } BIT; - } CS3REC; - unsigned char wk19[6]; - union { - unsigned short WORD; - struct { - unsigned short :7; - unsigned short EMODE:1; - unsigned short :2; - unsigned short BSIZE:2; - unsigned short :3; - unsigned short EXENB:1; - } BIT; - } CS4CR; - unsigned char wk20[6]; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - unsigned short RRCV:4; - } BIT; - } CS4REC; - unsigned char wk21[6]; - union { - unsigned short WORD; - struct { - unsigned short :7; - unsigned short EMODE:1; - unsigned short :2; - unsigned short BSIZE:2; - unsigned short :3; - unsigned short EXENB:1; - } BIT; - } CS5CR; - unsigned char wk22[6]; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - unsigned short RRCV:4; - } BIT; - } CS5REC; - unsigned char wk23[6]; - union { - unsigned short WORD; - struct { - unsigned short :7; - unsigned short EMODE:1; - unsigned short :2; - unsigned short BSIZE:2; - unsigned short :3; - unsigned short EXENB:1; - } BIT; - } CS6CR; - unsigned char wk24[6]; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - unsigned short RRCV:4; - } BIT; - } CS6REC; - unsigned char wk25[6]; - union { - unsigned short WORD; - struct { - unsigned short :7; - unsigned short EMODE:1; - unsigned short :2; - unsigned short BSIZE:2; - unsigned short :3; - unsigned short EXENB:1; - } BIT; - } CS7CR; - unsigned char wk26[6]; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - unsigned short RRCV:4; - } BIT; - } CS7REC; - unsigned char wk27[900]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char BSIZE:2; - unsigned char :3; - unsigned char EXENB:1; - } BIT; - } SDCCR; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char EMODE:1; - } BIT; - } SDCMOD; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char BE:1; - } BIT; - } SDAMOD; - unsigned char wk28[13]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char SFEN:1; - } BIT; - } SDSELF; - unsigned char wk29[3]; - union { - unsigned short WORD; - struct { - unsigned short REFW:4; - unsigned short RFC:12; - } BIT; - } SDRFCR; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char RFEN:1; - } BIT; - } SDRFEN; - unsigned char wk30[9]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char INIRQ:1; - } BIT; - } SDICR; - unsigned char wk31[3]; - union { - unsigned short WORD; - struct { - unsigned short :5; - unsigned short PRC:3; - unsigned short ARFC:4; - unsigned short ARFI:4; - } BIT; - } SDIR; - unsigned char wk32[26]; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char MXC:2; - } BIT; - } SDADR; - unsigned char wk33[3]; - union { - unsigned long LONG; - struct { - unsigned long :13; - unsigned long RAS:3; - unsigned long :2; - unsigned long RCD:2; - unsigned long RP:3; - unsigned long WR:1; - unsigned long :5; - unsigned long CL:3; - } BIT; - } SDTR; - union { - unsigned short WORD; - struct { - unsigned short :1; - unsigned short MR:15; - } BIT; - } SDMOD; - unsigned char wk34[6]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char SRFST:1; - unsigned char INIST:1; - unsigned char :2; - unsigned char MRSST:1; - } BIT; - } SDSR; -}; - -struct st_dmac0 { - void *DMSAR; - void *DMDAR; - unsigned long DMCRA; - unsigned short DMCRB; - unsigned char wk0[2]; - union { - unsigned short WORD; - struct { - unsigned short MD:2; - unsigned short DTS:2; - unsigned short :2; - unsigned short SZ:2; - unsigned short :6; - unsigned short DCTG:2; - } BIT; - } DMTMD; - unsigned char wk1[1]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char DTIE:1; - unsigned char ESIE:1; - unsigned char RPTIE:1; - unsigned char SARIE:1; - unsigned char DARIE:1; - } BIT; - } DMINT; - union { - unsigned short WORD; - struct { - unsigned short SM:2; - unsigned short :1; - unsigned short SARA:5; - unsigned short DM:2; - unsigned short :1; - unsigned short DARA:5; - } BIT; - } DMAMD; - unsigned char wk2[2]; - unsigned long DMOFR; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DTE:1; - } BIT; - } DMCNT; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char CLRS:1; - unsigned char :3; - unsigned char SWREQ:1; - } BIT; - } DMREQ; - union { - unsigned char BYTE; - struct { - unsigned char ACT:1; - unsigned char :2; - unsigned char DTIF:1; - unsigned char :3; - unsigned char ESIF:1; - } BIT; - } DMSTS; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DISEL:1; - } BIT; - } DMCSL; -}; - -struct st_dmac1 { - void *DMSAR; - void *DMDAR; - unsigned long DMCRA; - unsigned short DMCRB; - unsigned char wk0[2]; - union { - unsigned short WORD; - struct { - unsigned short MD:2; - unsigned short DTS:2; - unsigned short :2; - unsigned short SZ:2; - unsigned short :6; - unsigned short DCTG:2; - } BIT; - } DMTMD; - unsigned char wk1[1]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char DTIE:1; - unsigned char ESIE:1; - unsigned char RPTIE:1; - unsigned char SARIE:1; - unsigned char DARIE:1; - } BIT; - } DMINT; - union { - unsigned short WORD; - struct { - unsigned short SM:2; - unsigned short :1; - unsigned short SARA:5; - unsigned short DM:2; - unsigned short :1; - unsigned short DARA:5; - } BIT; - } DMAMD; - unsigned char wk2[6]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DTE:1; - } BIT; - } DMCNT; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char CLRS:1; - unsigned char :3; - unsigned char SWREQ:1; - } BIT; - } DMREQ; - union { - unsigned char BYTE; - struct { - unsigned char ACT:1; - unsigned char :2; - unsigned char DTIF:1; - unsigned char :3; - unsigned char ESIF:1; - } BIT; - } DMSTS; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DISEL:1; - } BIT; - } DMCSL; -}; - -struct st_dmac { - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DMST:1; - } BIT; - } DMAST; -}; - -struct st_dtc { - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char RRS:1; - unsigned char :4; - } BIT; - } DTCCR; - unsigned char wk0[3]; - void *DTCVBR; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char SHORT:1; - } BIT; - } DTCADMOD; - unsigned char wk1[3]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DTCST:1; - } BIT; - } DTCST; - unsigned char wk2[1]; - union { - unsigned short WORD; - struct { - unsigned short ACT:1; - unsigned short :7; - unsigned short VECN:8; - } BIT; - } DTCSTS; -}; - -struct st_exdmac0 { - void *EDMSAR; - void *EDMDAR; - unsigned long EDMCRA; - unsigned short EDMCRB; - unsigned char wk0[2]; - union { - unsigned short WORD; - struct { - unsigned short MD:2; - unsigned short DTS:2; - unsigned short :2; - unsigned short SZ:2; - unsigned short :6; - unsigned short DCTG:2; - } BIT; - } EDMTMD; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char DACKS:1; - unsigned char DACKE:1; - unsigned char DACKW:1; - unsigned char :1; - } BIT; - } EDMOMD; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char DTIE:1; - unsigned char ESIE:1; - unsigned char RPTIE:1; - unsigned char SARIE:1; - unsigned char DARIE:1; - } BIT; - } EDMINT; - union { - unsigned long LONG; - struct { - unsigned long :14; - unsigned long AMS:1; - unsigned long DIR:1; - unsigned long SM:2; - unsigned long :1; - unsigned long SARA:5; - unsigned long DM:2; - unsigned long :1; - unsigned long DARA:5; - } BIT; - } EDMAMD; - unsigned long EDMOFR; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DTE:1; - } BIT; - } EDMCNT; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char CLRS:1; - unsigned char :3; - unsigned char SWREQ:1; - } BIT; - } EDMREQ; - union { - unsigned char BYTE; - struct { - unsigned char ACT:1; - unsigned char :2; - unsigned char DTIF:1; - unsigned char :3; - unsigned char ESIF:1; - } BIT; - } EDMSTS; - unsigned char wk1[1]; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char DREQS:2; - } BIT; - } EDMRMD; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char EREQ:1; - } BIT; - } EDMERF; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char PREQ:1; - } BIT; - } EDMPRF; -}; - -struct st_exdmac { - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DMST:1; - } BIT; - } EDMAST; - unsigned char wk0[479]; - unsigned long CLSBR0; - unsigned long CLSBR1; - unsigned long CLSBR2; - unsigned long CLSBR3; - unsigned long CLSBR4; - unsigned long CLSBR5; - unsigned long CLSBR6; - unsigned long CLSBR7; -}; - -struct st_icu { - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char IR:1; - } BIT; - } IR[254]; - unsigned char wk17[2]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DTCE:1; - } BIT; - } DTCER[254]; - unsigned char wk47[2]; - union { - unsigned char BYTE; - struct { - unsigned char IEN7:1; - unsigned char IEN6:1; - unsigned char IEN5:1; - unsigned char IEN4:1; - unsigned char IEN3:1; - unsigned char IEN2:1; - unsigned char IEN1:1; - unsigned char IEN0:1; - } BIT; - } IER[32]; - unsigned char wk50[192]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char SWINT:1; - } BIT; - } SWINTR; - unsigned char wk51[15]; - union { - unsigned short WORD; - struct { - unsigned short FIEN:1; - unsigned short :7; - unsigned short FVCT:8; - } BIT; - } FIR; - unsigned char wk52[14]; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char IPR:4; - } BIT; - } IPR[144]; - unsigned char wk67[112]; - unsigned char DMRSR0; - unsigned char wk68[3]; - unsigned char DMRSR1; - unsigned char wk69[3]; - unsigned char DMRSR2; - unsigned char wk70[3]; - unsigned char DMRSR3; - unsigned char wk71[243]; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char IRQMD:2; - unsigned char :2; - } BIT; - } IRQCR[16]; - unsigned char wk72[112]; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char OSTST:1; - unsigned char LVDST:1; - unsigned char NMIST:1; - } BIT; - } NMISR; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char OSTEN:1; - unsigned char LVDEN:1; - unsigned char NMIEN:1; - } BIT; - } NMIER; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char OSTCLR:1; - unsigned char :1; - unsigned char NMICLR:1; - } BIT; - } NMICLR; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char NMIMD:1; - unsigned char :3; - } BIT; - } NMICR; -}; - -struct st_cmt { - union { - unsigned short WORD; - struct { - unsigned short :14; - unsigned short STR1:1; - unsigned short STR0:1; - } BIT; - } CMSTR0; - unsigned char wk0[14]; - union { - unsigned short WORD; - struct { - unsigned short :14; - unsigned short STR3:1; - unsigned short STR2:1; - } BIT; - } CMSTR1; -}; - -struct st_cmt0 { - union { - unsigned short WORD; - struct { - unsigned short :9; - unsigned short CMIE:1; - unsigned short :4; - unsigned short CKS:2; - } BIT; - } CMCR; - unsigned short CMCNT; - unsigned short CMCOR; -}; - -union un_wdt { - struct { - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char TMS:1; - unsigned char TME:1; - unsigned char :2; - unsigned char CKS:3; - } BIT; - } TCSR; - unsigned char TCNT; - unsigned char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char WOVF:1; - unsigned char RSTE:1; - unsigned char :6; - } BIT; - } RSTCSR; - } READ; - struct { - unsigned short WINA; - unsigned short WINB; - } WRITE; -}; - -struct st_iwdt { - unsigned char IWDTRR; - unsigned char wk0[1]; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short CKS:4; - unsigned short :2; - unsigned short TOPS:2; - } BIT; - } IWDTCR; - union { - unsigned short WORD; - struct { - unsigned short :1; - unsigned short UNDFF:1; - unsigned short CNTVAL:14; - } BIT; - } IWDTSR; -}; - -struct st_ad { - unsigned short ADDRA; - unsigned short ADDRB; - unsigned short ADDRC; - unsigned short ADDRD; - unsigned char wk0[8]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ADIE:1; - unsigned char ADST:1; - unsigned char :1; - unsigned char CH:4; - } BIT; - } ADCSR; - union { - unsigned char BYTE; - struct { - unsigned char TRGS:3; - unsigned char :1; - unsigned char CKS:2; - unsigned char MODE:2; - } BIT; - } ADCR; - union { - unsigned char BYTE; - struct { - unsigned char DPSEL:1; - unsigned char :7; - } BIT; - } ADDPR; - unsigned char ADSSTR; - unsigned char wk1[11]; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char DIAG:2; - } BIT; - } ADDIAGR; -}; - -struct st_da { - unsigned short DADR0; - unsigned short DADR1; - union { - unsigned char BYTE; - struct { - unsigned char DAOE1:1; - unsigned char DAOE0:1; - unsigned char DAE:1; - unsigned char :5; - } BIT; - } DACR; - union { - unsigned char BYTE; - struct { - unsigned char DPSEL:1; - unsigned char :7; - } BIT; - } DADPR; -}; - -struct st_ppg0 { - union { - unsigned char BYTE; - struct { - unsigned char G3CMS:2; - unsigned char G2CMS:2; - unsigned char G1CMS:2; - unsigned char G0CMS:2; - } BIT; - } PCR; - union { - unsigned char BYTE; - struct { - unsigned char G3INV:1; - unsigned char G2INV:1; - unsigned char G1INV:1; - unsigned char G0INV:1; - unsigned char G3NOV:1; - unsigned char G2NOV:1; - unsigned char G1NOV:1; - unsigned char G0NOV:1; - } BIT; - } PMR; - union { - unsigned char BYTE; - struct { - unsigned char NDER15:1; - unsigned char NDER14:1; - unsigned char NDER13:1; - unsigned char NDER12:1; - unsigned char NDER11:1; - unsigned char NDER10:1; - unsigned char NDER9:1; - unsigned char NDER8:1; - } BIT; - } NDERH; - union { - unsigned char BYTE; - struct { - unsigned char NDER7:1; - unsigned char NDER6:1; - unsigned char NDER5:1; - unsigned char NDER4:1; - unsigned char NDER3:1; - unsigned char NDER2:1; - unsigned char NDER1:1; - unsigned char NDER0:1; - } BIT; - } NDERL; - union { - unsigned char BYTE; - struct { - unsigned char POD15:1; - unsigned char POD14:1; - unsigned char POD13:1; - unsigned char POD12:1; - unsigned char POD11:1; - unsigned char POD10:1; - unsigned char POD9:1; - unsigned char POD8:1; - } BIT; - } PODRH; - union { - unsigned char BYTE; - struct { - unsigned char POD7:1; - unsigned char POD6:1; - unsigned char POD5:1; - unsigned char POD4:1; - unsigned char POD3:1; - unsigned char POD2:1; - unsigned char POD1:1; - unsigned char POD0:1; - } BIT; - } PODRL; - union { - unsigned char BYTE; - struct { - unsigned char NDR15:1; - unsigned char NDR14:1; - unsigned char NDR13:1; - unsigned char NDR12:1; - unsigned char NDR11:1; - unsigned char NDR10:1; - unsigned char NDR9:1; - unsigned char NDR8:1; - } BIT; - } NDRH; - union { - unsigned char BYTE; - struct { - unsigned char NDR7:1; - unsigned char NDR6:1; - unsigned char NDR5:1; - unsigned char NDR4:1; - unsigned char NDR3:1; - unsigned char NDR2:1; - unsigned char NDR1:1; - unsigned char NDR0:1; - } BIT; - } NDRL; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char NDR11:1; - unsigned char NDR10:1; - unsigned char NDR9:1; - unsigned char NDR8:1; - } BIT; - } NDRH2; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char NDR3:1; - unsigned char NDR2:1; - unsigned char NDR1:1; - unsigned char NDR0:1; - } BIT; - } NDRL2; -}; - -struct st_ppg1 { - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char PTRSL:1; - } BIT; - } PTRSLR; - unsigned char wk0[5]; - union { - unsigned char BYTE; - struct { - unsigned char G3CMS:2; - unsigned char G2CMS:2; - unsigned char G1CMS:2; - unsigned char G0CMS:2; - } BIT; - } PCR; - union { - unsigned char BYTE; - struct { - unsigned char G3INV:1; - unsigned char G2INV:1; - unsigned char G1INV:1; - unsigned char G0INV:1; - unsigned char G3NOV:1; - unsigned char G2NOV:1; - unsigned char G1NOV:1; - unsigned char G0NOV:1; - } BIT; - } PMR; - union { - unsigned char BYTE; - struct { - unsigned char NDER31:1; - unsigned char NDER30:1; - unsigned char NDER29:1; - unsigned char NDER28:1; - unsigned char NDER27:1; - unsigned char NDER26:1; - unsigned char NDER25:1; - unsigned char NDER24:1; - } BIT; - } NDERH; - union { - unsigned char BYTE; - struct { - unsigned char NDER23:1; - unsigned char NDER22:1; - unsigned char NDER21:1; - unsigned char NDER20:1; - unsigned char NDER19:1; - unsigned char NDER18:1; - unsigned char NDER17:1; - unsigned char NDER16:1; - } BIT; - } NDERL; - union { - unsigned char BYTE; - struct { - unsigned char POD31:1; - unsigned char POD30:1; - unsigned char POD29:1; - unsigned char POD28:1; - unsigned char POD27:1; - unsigned char POD26:1; - unsigned char POD25:1; - unsigned char POD24:1; - } BIT; - } PODRH; - union { - unsigned char BYTE; - struct { - unsigned char POD23:1; - unsigned char POD22:1; - unsigned char POD21:1; - unsigned char POD20:1; - unsigned char POD19:1; - unsigned char POD18:1; - unsigned char POD17:1; - unsigned char POD16:1; - } BIT; - } PODRL; - union { - unsigned char BYTE; - struct { - unsigned char NDR31:1; - unsigned char NDR30:1; - unsigned char NDR29:1; - unsigned char NDR28:1; - unsigned char NDR27:1; - unsigned char NDR26:1; - unsigned char NDR25:1; - unsigned char NDR24:1; - } BIT; - } NDRH; - union { - unsigned char BYTE; - struct { - unsigned char NDR23:1; - unsigned char NDR22:1; - unsigned char NDR21:1; - unsigned char NDR20:1; - unsigned char NDR19:1; - unsigned char NDR18:1; - unsigned char NDR17:1; - unsigned char NDR16:1; - } BIT; - } NDRL; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char NDR27:1; - unsigned char NDR26:1; - unsigned char NDR25:1; - unsigned char NDR24:1; - } BIT; - } NDRH2; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char NDR19:1; - unsigned char NDR18:1; - unsigned char NDR17:1; - unsigned char NDR16:1; - } BIT; - } NDRL2; -}; - -struct st_tmr0 { - union { - unsigned char BYTE; - struct { - unsigned char CMIEB:1; - unsigned char CMIEA:1; - unsigned char OVIE:1; - unsigned char CCLR:2; - unsigned char :3; - } BIT; - } TCR; - unsigned char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char ADTE:1; - unsigned char OSB:2; - unsigned char OSA:2; - } BIT; - } TCSR; - unsigned char wk1[1]; - unsigned char TCORA; - unsigned char wk2[1]; - unsigned char TCORB; - unsigned char wk3[1]; - unsigned char TCNT; - unsigned char wk4[1]; - union { - unsigned char BYTE; - struct { - unsigned char TMRIS:1; - unsigned char :2; - unsigned char CSS:2; - unsigned char CKS:3; - } BIT; - } TCCR; -}; - -struct st_tmr1 { - union { - unsigned char BYTE; - struct { - unsigned char CMIEB:1; - unsigned char CMIEA:1; - unsigned char OVIE:1; - unsigned char CCLR:2; - unsigned char :3; - } BIT; - } TCR; - unsigned char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char OSB:2; - unsigned char OSA:2; - } BIT; - } TCSR; - unsigned char wk1[1]; - unsigned char TCORA; - unsigned char wk2[1]; - unsigned char TCORB; - unsigned char wk3[1]; - unsigned char TCNT; - unsigned char wk4[1]; - union { - unsigned char BYTE; - struct { - unsigned char TMRIS:1; - unsigned char :2; - unsigned char CSS:2; - unsigned char CKS:3; - } BIT; - } TCCR; -}; - -struct st_tmr01 { - unsigned short TCORA; - unsigned short TCORB; - unsigned short TCNT; - unsigned short TCCR; -}; - -struct st_sci { - union { - unsigned char BYTE; - struct { - unsigned char CM:1; - unsigned char CHR:1; - unsigned char PE:1; - unsigned char PM:1; - unsigned char STOP:1; - unsigned char MP:1; - unsigned char CKS:2; - } BIT; - } SMR; - unsigned char BRR; - union { - unsigned char BYTE; - struct { - unsigned char TIE:1; - unsigned char RIE:1; - unsigned char TE:1; - unsigned char RE:1; - unsigned char MPIE:1; - unsigned char TEIE:1; - unsigned char CKE:2; - } BIT; - } SCR; - unsigned char TDR; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char ORER:1; - unsigned char FER:1; - unsigned char PER:1; - unsigned char TEND:1; - unsigned char MPB:1; - unsigned char MPBT:1; - } BIT; - } SSR; - unsigned char RDR; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char SDIR:1; - unsigned char SINV:1; - unsigned char :1; - unsigned char SMIF:1; - } BIT; - } SCMR; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char ABCS:1; - unsigned char :3; - unsigned char ACS0:1; - } BIT; - } SEMR; -}; - -struct st_smci { - union { - unsigned char BYTE; - struct { - unsigned char GM:1; - unsigned char BLK:1; - unsigned char PE:1; - unsigned char PM:1; - unsigned char BCP:2; - unsigned char CKS:2; - } BIT; - } SMR; - unsigned char BRR; - union { - unsigned char BYTE; - struct { - unsigned char TIE:1; - unsigned char RIE:1; - unsigned char TE:1; - unsigned char RE:1; - unsigned char :1; - unsigned char TEIE:1; - unsigned char CKE:2; - } BIT; - } SCR; - unsigned char TDR; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char ORER:1; - unsigned char ERS:1; - unsigned char PER:1; - unsigned char TEND:1; - unsigned char :2; - } BIT; - } SSR; - unsigned char RDR; - union { - unsigned char BYTE; - struct { - unsigned char BCP2:1; - unsigned char :3; - unsigned char SDIR:1; - unsigned char SINV:1; - unsigned char :1; - unsigned char SMIF:1; - } BIT; - } SCMR; -}; - -struct st_crc { - union { - unsigned char BYTE; - struct { - unsigned char DORCLR:1; - unsigned char :4; - unsigned char LMS:1; - unsigned char GPS:2; - } BIT; - } CRCCR; - unsigned char CRCDIR; - unsigned short CRCDOR; -}; - -struct st_riic { - union { - unsigned char BYTE; - struct { - unsigned char ICE:1; - unsigned char IICRST:1; - unsigned char CLO:1; - unsigned char SOWP:1; - unsigned char SCLO:1; - unsigned char SDAO:1; - unsigned char SCLI:1; - unsigned char SDAI:1; - } BIT; - } ICCR1; - union { - unsigned char BYTE; - struct { - unsigned char BBSY:1; - unsigned char MST:1; - unsigned char TRS:1; - unsigned char :1; - unsigned char SP:1; - unsigned char RS:1; - unsigned char ST:1; - unsigned char :1; - } BIT; - } ICCR2; - union { - unsigned char BYTE; - struct { - unsigned char MTWP:1; - unsigned char CKS:3; - unsigned char BCWP:1; - unsigned char BC:3; - } BIT; - } ICMR1; - union { - unsigned char BYTE; - struct { - unsigned char DLCS:1; - unsigned char SDDL:3; - unsigned char :1; - unsigned char TMOH:1; - unsigned char TMOL:1; - unsigned char TMOS:1; - } BIT; - } ICMR2; - union { - unsigned char BYTE; - struct { - unsigned char SMBS:1; - unsigned char WAIT:1; - unsigned char RDRFS:1; - unsigned char ACKWP:1; - unsigned char ACKBT:1; - unsigned char ACKBR:1; - unsigned char NF:2; - } BIT; - } ICMR3; - union { - unsigned char BYTE; - struct { - unsigned char FMPE:1; - unsigned char SCLE:1; - unsigned char NFE:1; - unsigned char NACKE:1; - unsigned char SALE:1; - unsigned char NALE:1; - unsigned char MALE:1; - unsigned char TMOE:1; - } BIT; - } ICFER; - union { - unsigned char BYTE; - struct { - unsigned char HOAE:1; - unsigned char :1; - unsigned char DIDE:1; - unsigned char :1; - unsigned char GCAE:1; - unsigned char SAR2E:1; - unsigned char SAR1E:1; - unsigned char SAR0E:1; - } BIT; - } ICSER; - union { - unsigned char BYTE; - struct { - unsigned char TIE:1; - unsigned char TEIE:1; - unsigned char RIE:1; - unsigned char NAKIE:1; - unsigned char SPIE:1; - unsigned char STIE:1; - unsigned char ALIE:1; - unsigned char TMOIE:1; - } BIT; - } ICIER; - union { - unsigned char BYTE; - struct { - unsigned char HOA:1; - unsigned char :1; - unsigned char DID:1; - unsigned char :1; - unsigned char GCA:1; - unsigned char AAS2:1; - unsigned char AAS1:1; - unsigned char AAS0:1; - } BIT; - } ICSR1; - union { - unsigned char BYTE; - struct { - unsigned char TDRE:1; - unsigned char TEND:1; - unsigned char RDRF:1; - unsigned char NACKF:1; - unsigned char STOP:1; - unsigned char START:1; - unsigned char AL:1; - unsigned char TMOF:1; - } BIT; - } ICSR2; - union { - unsigned char BYTE; - struct { - unsigned char SVA:7; - unsigned char SVA0:1; - } BIT; - } SARL0; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char SVA:2; - unsigned char FS:1; - } BIT; - } SARU0; - union { - unsigned char BYTE; - struct { - unsigned char SVA:7; - unsigned char SVA0:1; - } BIT; - } SARL1; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char SVA:2; - unsigned char FS:1; - } BIT; - } SARU1; - union { - unsigned char BYTE; - struct { - unsigned char SVA:7; - unsigned char SVA0:1; - } BIT; - } SARL2; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char SVA:2; - unsigned char FS:1; - } BIT; - } SARU2; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char BRL:5; - } BIT; - } ICBRL; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char BRH:5; - } BIT; - } ICBRH; - unsigned char ICDRT; - unsigned char ICDRR; -}; - -struct st_rspi { - union { - unsigned char BYTE; - struct { - unsigned char SPRIE:1; - unsigned char SPE:1; - unsigned char SPTIE:1; - unsigned char SPEIE:1; - unsigned char MSTR:1; - unsigned char MODFEN:1; - unsigned char TXMD:1; - unsigned char SPMS:1; - } BIT; - } SPCR; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char SSLP3:1; - unsigned char SSLP2:1; - unsigned char SSLP1:1; - unsigned char SSLP0:1; - } BIT; - } SSLP; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char MOIFE:1; - unsigned char MOIFV:1; - unsigned char :1; - unsigned char SPOM:1; - unsigned char SPLP2:1; - unsigned char SPLP:1; - } BIT; - } SPPCR; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char PERF:1; - unsigned char MODF:1; - unsigned char IDLNF:1; - unsigned char OVRF:1; - } BIT; - } SPSR; - union { - unsigned long LONG; - struct { - unsigned short H; - unsigned short L; - } WORD; - } SPDR; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char SPSLN:3; - } BIT; - } SPSCR; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char SPECM:3; - unsigned char :1; - unsigned char SPCP:3; - } BIT; - } SPSSR; - union { - unsigned char BYTE; - struct { - unsigned char SPR7:1; - unsigned char SPR6:1; - unsigned char SPR5:1; - unsigned char SPR4:1; - unsigned char SPR3:1; - unsigned char SPR2:1; - unsigned char SPR1:1; - unsigned char SPR0:1; - } BIT; - } SPBR; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char SPLW:1; - unsigned char SPRDTD:1; - unsigned char SLSEL:2; - unsigned char SPFC:2; - } BIT; - } SPDCR; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char SCKDL:3; - } BIT; - } SPCKD; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char SLNDL:3; - } BIT; - } SSLND; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char SPNDL:3; - } BIT; - } SPND; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char PTE:1; - unsigned char SPIIE:1; - unsigned char SPOE:1; - unsigned char SPPE:1; - } BIT; - } SPCR2; - union { - unsigned short WORD; - struct { - unsigned short SCKDEN:1; - unsigned short SLNDEN:1; - unsigned short SPNDEN:1; - unsigned short LSBF:1; - unsigned short SPB:4; - unsigned short SSLKP:1; - unsigned short SSLA:3; - unsigned short BRDV:2; - unsigned short CPOL:1; - unsigned short CPHA:1; - } BIT; - } SPCMD0; - union { - unsigned short WORD; - struct { - unsigned short SCKDEN:1; - unsigned short SLNDEN:1; - unsigned short SPNDEN:1; - unsigned short LSBF:1; - unsigned short SPB:4; - unsigned short SSLKP:1; - unsigned short SSLA:3; - unsigned short BRDV:2; - unsigned short CPOL:1; - unsigned short CPHA:1; - } BIT; - } SPCMD1; - union { - unsigned short WORD; - struct { - unsigned short SCKDEN:1; - unsigned short SLNDEN:1; - unsigned short SPNDEN:1; - unsigned short LSBF:1; - unsigned short SPB:4; - unsigned short SSLKP:1; - unsigned short SSLA:3; - unsigned short BRDV:2; - unsigned short CPOL:1; - unsigned short CPHA:1; - } BIT; - } SPCMD2; - union { - unsigned short WORD; - struct { - unsigned short SCKDEN:1; - unsigned short SLNDEN:1; - unsigned short SPNDEN:1; - unsigned short LSBF:1; - unsigned short SPB:4; - unsigned short SSLKP:1; - unsigned short SSLA:3; - unsigned short BRDV:2; - unsigned short CPOL:1; - unsigned short CPHA:1; - } BIT; - } SPCMD3; - union { - unsigned short WORD; - struct { - unsigned short SCKDEN:1; - unsigned short SLNDEN:1; - unsigned short SPNDEN:1; - unsigned short LSBF:1; - unsigned short SPB:4; - unsigned short SSLKP:1; - unsigned short SSLA:3; - unsigned short BRDV:2; - unsigned short CPOL:1; - unsigned short CPHA:1; - } BIT; - } SPCMD4; - union { - unsigned short WORD; - struct { - unsigned short SCKDEN:1; - unsigned short SLNDEN:1; - unsigned short SPNDEN:1; - unsigned short LSBF:1; - unsigned short SPB:4; - unsigned short SSLKP:1; - unsigned short SSLA:3; - unsigned short BRDV:2; - unsigned short CPOL:1; - unsigned short CPHA:1; - } BIT; - } SPCMD5; - union { - unsigned short WORD; - struct { - unsigned short SCKDEN:1; - unsigned short SLNDEN:1; - unsigned short SPNDEN:1; - unsigned short LSBF:1; - unsigned short SPB:4; - unsigned short SSLKP:1; - unsigned short SSLA:3; - unsigned short BRDV:2; - unsigned short CPOL:1; - unsigned short CPHA:1; - } BIT; - } SPCMD6; - union { - unsigned short WORD; - struct { - unsigned short SCKDEN:1; - unsigned short SLNDEN:1; - unsigned short SPNDEN:1; - unsigned short LSBF:1; - unsigned short SPB:4; - unsigned short SSLKP:1; - unsigned short SSLA:3; - unsigned short BRDV:2; - unsigned short CPOL:1; - unsigned short CPHA:1; - } BIT; - } SPCMD7; -}; - -struct st_mtu { - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char OE4D:1; - unsigned char OE4C:1; - unsigned char OE3D:1; - unsigned char OE4B:1; - unsigned char OE4A:1; - unsigned char OE3B:1; - } BIT; - } TOER; - unsigned char wk0[2]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char BCD:1; - unsigned char N:1; - unsigned char P:1; - unsigned char FB:1; - unsigned char WF:1; - unsigned char VF:1; - unsigned char UF:1; - } BIT; - } TGCR; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char PSYE:1; - unsigned char :2; - unsigned char TOCL:1; - unsigned char TOCS:1; - unsigned char OLSN:1; - unsigned char OLSP:1; - } BIT; - } TOCR1; - union { - unsigned char BYTE; - struct { - unsigned char BF:2; - unsigned char OLS3N:1; - unsigned char OLS3P:1; - unsigned char OLS2N:1; - unsigned char OLS2P:1; - unsigned char OLS1N:1; - unsigned char OLS1P:1; - } BIT; - } TOCR2; - unsigned char wk1[4]; - unsigned short TCDR; - unsigned short TDDR; - unsigned char wk2[8]; - unsigned short TCNTS; - unsigned short TCBR; - unsigned char wk3[12]; - union { - unsigned char BYTE; - struct { - unsigned char T3AEN:1; - unsigned char T3ACOR:3; - unsigned char T4VEN:1; - unsigned char T4VCOR:3; - } BIT; - } TITCR; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char T3ACNT:3; - unsigned char :1; - unsigned char T4VCNT:3; - } BIT; - } TITCNT; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char BTE:2; - } BIT; - } TBTER; - unsigned char wk4[1]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char TDRE:1; - } BIT; - } TDER; - unsigned char wk5[1]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char OLS3N:1; - unsigned char OLS3P:1; - unsigned char OLS2N:1; - unsigned char OLS2P:1; - unsigned char OLS1N:1; - unsigned char OLS1P:1; - } BIT; - } TOLBR; - unsigned char wk6[41]; - union { - unsigned char BYTE; - struct { - unsigned char CCE:1; - unsigned char :6; - unsigned char WRE:1; - } BIT; - } TWCR; - unsigned char wk7[31]; - union { - unsigned char BYTE; - struct { - unsigned char CST4:1; - unsigned char CST3:1; - unsigned char :3; - unsigned char CST2:1; - unsigned char CST1:1; - unsigned char CST0:1; - } BIT; - } TSTR; - union { - unsigned char BYTE; - struct { - unsigned char SYNC4:1; - unsigned char SYNC3:1; - unsigned char :3; - unsigned char SYNC2:1; - unsigned char SYNC1:1; - unsigned char SYNC0:1; - } BIT; - } TSYR; - unsigned char wk8[2]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char RWE:1; - } BIT; - } TRWER; -}; - -struct st_mtu0 { - union { - unsigned char BYTE; - struct { - unsigned char CCLR:3; - unsigned char CKEG:2; - unsigned char TPSC:3; - } BIT; - } TCR; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char BFE:1; - unsigned char BFB:1; - unsigned char BFA:1; - unsigned char MD:4; - } BIT; - } TMDR; - union { - unsigned char BYTE; - struct { - unsigned char IOB:4; - unsigned char IOA:4; - } BIT; - } TIORH; - union { - unsigned char BYTE; - struct { - unsigned char IOD:4; - unsigned char IOC:4; - } BIT; - } TIORL; - union { - unsigned char BYTE; - struct { - unsigned char TTGE:1; - unsigned char :2; - unsigned char TCIEV:1; - unsigned char TGIED:1; - unsigned char TGIEC:1; - unsigned char TGIEB:1; - unsigned char TGIEA:1; - } BIT; - } TIER; - unsigned char TSR; - unsigned short TCNT; - unsigned short TGRA; - unsigned short TGRB; - unsigned short TGRC; - unsigned short TGRD; - unsigned char wk0[16]; - unsigned short TGRE; - unsigned short TGRF; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char TGIEF:1; - unsigned char TGIEE:1; - } BIT; - } TIER2; - unsigned char wk1[1]; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char TTSE:1; - unsigned char TTSB:1; - unsigned char TTSA:1; - } BIT; - } TBTM; -}; - -struct st_mtu1 { - union { - unsigned char BYTE; - struct { - unsigned char CCLR:3; - unsigned char CKEG:2; - unsigned char TPSC:3; - } BIT; - } TCR; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char MD:4; - } BIT; - } TMDR; - union { - unsigned char BYTE; - struct { - unsigned char IOB:4; - unsigned char IOA:4; - } BIT; - } TIOR; - unsigned char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char TTGE:1; - unsigned char :1; - unsigned char TCIEU:1; - unsigned char TCIEV:1; - unsigned char :2; - unsigned char TGIEB:1; - unsigned char TGIEA:1; - } BIT; - } TIER; - union { - unsigned char BYTE; - struct { - unsigned char TCFD:1; - unsigned char :7; - } BIT; - } TSR; - unsigned short TCNT; - unsigned short TGRA; - unsigned short TGRB; - unsigned char wk1[4]; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char I2BE:1; - unsigned char I2AE:1; - unsigned char I1BE:1; - unsigned char I1AE:1; - } BIT; - } TICCR; -}; - -struct st_mtu2 { - union { - unsigned char BYTE; - struct { - unsigned char CCLR:3; - unsigned char CKEG:2; - unsigned char TPSC:3; - } BIT; - } TCR; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char MD:4; - } BIT; - } TMDR; - union { - unsigned char BYTE; - struct { - unsigned char IOB:4; - unsigned char IOA:4; - } BIT; - } TIOR; - unsigned char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char TTGE:1; - unsigned char :1; - unsigned char TCIEU:1; - unsigned char TCIEV:1; - unsigned char :2; - unsigned char TGIEB:1; - unsigned char TGIEA:1; - } BIT; - } TIER; - union { - unsigned char BYTE; - struct { - unsigned char TCFD:1; - unsigned char :7; - } BIT; - } TSR; - unsigned short TCNT; - unsigned short TGRA; - unsigned short TGRB; -}; - -struct st_mtu3 { - union { - unsigned char BYTE; - struct { - unsigned char CCLR:3; - unsigned char CKEG:2; - unsigned char TPSC:3; - } BIT; - } TCR; - unsigned char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char BFE:1; - unsigned char BFB:1; - unsigned char BFA:1; - unsigned char MD:4; - } BIT; - } TMDR; - unsigned char wk1[1]; - union { - unsigned char BYTE; - struct { - unsigned char IOB:4; - unsigned char IOA:4; - } BIT; - } TIORH; - union { - unsigned char BYTE; - struct { - unsigned char IOD:4; - unsigned char IOC:4; - } BIT; - } TIORL; - unsigned char wk2[2]; - union { - unsigned char BYTE; - struct { - unsigned char TTGE:1; - unsigned char TTGE2:1; - unsigned char TCIEU:1; - unsigned char TCIEV:1; - unsigned char TGIED:1; - unsigned char TGIEC:1; - unsigned char TGIEB:1; - unsigned char TGIEA:1; - } BIT; - } TIER; - unsigned char wk3[7]; - unsigned short TCNT; - unsigned char wk4[6]; - unsigned short TGRA; - unsigned short TGRB; - unsigned char wk5[8]; - unsigned short TGRC; - unsigned short TGRD; - unsigned char wk6[4]; - union { - unsigned char BYTE; - struct { - unsigned char TCFD:1; - unsigned char :7; - } BIT; - } TSR; - unsigned char wk7[11]; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char TTSE:1; - unsigned char TTSB:1; - unsigned char TTSA:1; - } BIT; - } TBTM; -}; - -struct st_mtu4 { - unsigned char DMMY; - union { - unsigned char BYTE; - struct { - unsigned char CCLR:3; - unsigned char CKEG:2; - unsigned char TPSC:3; - } BIT; - } TCR; - unsigned char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char BFE:1; - unsigned char BFB:1; - unsigned char BFA:1; - unsigned char MD:4; - } BIT; - } TMDR; - unsigned char wk1[2]; - union { - unsigned char BYTE; - struct { - unsigned char IOB:4; - unsigned char IOA:4; - } BIT; - } TIORH; - union { - unsigned char BYTE; - struct { - unsigned char IOD:4; - unsigned char IOC:4; - } BIT; - } TIORL; - unsigned char wk2[1]; - union { - unsigned char BYTE; - struct { - unsigned char TTGE:1; - unsigned char TTGE2:1; - unsigned char TCIEU:1; - unsigned char TCIEV:1; - unsigned char TGIED:1; - unsigned char TGIEC:1; - unsigned char TGIEB:1; - unsigned char TGIEA:1; - } BIT; - } TIER; - unsigned char wk3[8]; - unsigned short TCNT; - unsigned char wk4[8]; - unsigned short TGRA; - unsigned short TGRB; - unsigned char wk5[8]; - unsigned short TGRC; - unsigned short TGRD; - unsigned char wk6[1]; - union { - unsigned char BYTE; - struct { - unsigned char TCFD:1; - unsigned char :7; - } BIT; - } TSR; - unsigned char wk7[11]; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char TTSE:1; - unsigned char TTSB:1; - unsigned char TTSA:1; - } BIT; - } TBTM; - unsigned char wk8[6]; - union { - unsigned short WORD; - struct { - unsigned short BF:2; - unsigned short :6; - unsigned short UT4AE:1; - unsigned short DT4AE:1; - unsigned short UT4BE:1; - unsigned short DT4BE:1; - unsigned short ITA3AE:1; - unsigned short ITA4VE:1; - unsigned short ITB3AE:1; - unsigned short ITB4VE:1; - } BIT; - } TADCR; - unsigned char wk9[2]; - unsigned short TADCORA; - unsigned short TADCORB; - unsigned short TADCOBRA; - unsigned short TADCOBRB; -}; - -struct st_mtu5 { - unsigned short TCNTU; - unsigned short TGRU; - union { - unsigned char BYTE; - struct { - unsigned char CCLR:3; - unsigned char CKEG:2; - unsigned char TPSC:3; - } BIT; - } TCRU; - unsigned char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char IOC:5; - } BIT; - } TIORU; - unsigned char wk1[9]; - unsigned short TCNTV; - unsigned short TGRV; - union { - unsigned char BYTE; - struct { - unsigned char CCLR:3; - unsigned char CKEG:2; - unsigned char TPSC:3; - } BIT; - } TCRV; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char IOC:5; - } BIT; - } TIORV; - unsigned char wk2[9]; - unsigned short TCNTW; - unsigned short TGRW; - union { - unsigned char BYTE; - struct { - unsigned char CCLR:3; - unsigned char CKEG:2; - unsigned char TPSC:3; - } BIT; - } TCRW; - unsigned char wk3[1]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char IOC:5; - } BIT; - } TIORW; - unsigned char wk4[11]; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char TGIE5U:1; - unsigned char TGIE5V:1; - unsigned char TGIE5W:1; - } BIT; - } TIER; - unsigned char wk5[1]; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char CSTU5:1; - unsigned char CSTV5:1; - unsigned char CSTW5:1; - } BIT; - } TSTR; - unsigned char wk6[1]; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char CMPCLR5U:1; - unsigned char CMPCLR5V:1; - unsigned char CMPCLR5W:1; - } BIT; - } TCNTCMPCLR; -}; - -struct st_poe { - union { - unsigned short WORD; - struct { - unsigned short POE3F:1; - unsigned short POE2F:1; - unsigned short POE1F:1; - unsigned short POE0F:1; - unsigned short :3; - unsigned short PIE1:1; - unsigned short POE3M:2; - unsigned short POE2M:2; - unsigned short POE1M:2; - unsigned short POE0M:2; - } BIT; - } ICSR1; - union { - unsigned short WORD; - struct { - unsigned short OSF1:1; - unsigned short :5; - unsigned short OCE1:1; - unsigned short OIE1:1; - unsigned short :8; - } BIT; - } OCSR1; - union { - unsigned short WORD; - struct { - unsigned short POE7F:1; - unsigned short POE6F:1; - unsigned short POE5F:1; - unsigned short POE4F:1; - unsigned short :3; - unsigned short PIE2:1; - unsigned short POE7M:2; - unsigned short POE6M:2; - unsigned short POE5M:2; - unsigned short POE4M:2; - } BIT; - } ICSR2; - union { - unsigned short WORD; - struct { - unsigned short OSF2:1; - unsigned short :5; - unsigned short OCE2:1; - unsigned short OIE2:1; - unsigned short :8; - } BIT; - } OCSR2; - union { - unsigned short WORD; - struct { - unsigned short :3; - unsigned short POE8F:1; - unsigned short :2; - unsigned short POE8E:1; - unsigned short PIE3:1; - unsigned short :6; - unsigned short POE8M:2; - } BIT; - } ICSR3; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char CH6HIZ:1; - unsigned char CH910HIZ:1; - unsigned char CH0HIZ:1; - unsigned char CH34HIZ:1; - } BIT; - } SPOER; - union { - unsigned char BYTE; - struct { - unsigned char PE7ZE:1; - unsigned char PE6ZE:1; - unsigned char PE5ZE:1; - unsigned char PE4ZE:1; - unsigned char PE3ZE:1; - unsigned char PE2ZE:1; - unsigned char PE1ZE:1; - unsigned char PE0ZE:1; - } BIT; - } POECR1; - union { - unsigned short WORD; - struct { - unsigned short :1; - unsigned short P1CZEA:1; - unsigned short P2CZEA:1; - unsigned short P3CZEA:1; - unsigned short :1; - unsigned short P1CZEB:1; - unsigned short P2CZEB:1; - unsigned short P3CZEB:1; - unsigned short :1; - unsigned short P4CZE:1; - unsigned short P5CZE:1; - unsigned short P6CZE:1; - unsigned short :4; - } BIT; - } POECR2; - union { - unsigned short WORD; - struct { - unsigned short :3; - unsigned short POE9F:1; - unsigned short :2; - unsigned short POE9E:1; - unsigned short PIE4:1; - unsigned short :6; - unsigned short POE9M:2; - } BIT; - } ICSR4; -}; - -struct st_s12ad { - union { - unsigned char BYTE; - struct { - unsigned char ADST:1; - unsigned char ADCS:1; - unsigned char :1; - unsigned char ADIE:1; - unsigned char CKS:2; - unsigned char TRGE:1; - unsigned char EXTRG:1; - } BIT; - } ADCSR; - unsigned char wk0[3]; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short ANS:8; - } BIT; - } ADANS; - unsigned char wk1[2]; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short ADS:8; - } BIT; - } ADADS; - unsigned char wk2[2]; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char ADC:2; - } BIT; - } ADADC; - unsigned char wk3[1]; - union { - unsigned short WORD; - struct { - unsigned short ADRFMT:1; - unsigned short :9; - unsigned short ACE:1; - unsigned short :5; - } BIT; - } ADCER; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char ADSTRS:4; - } BIT; - } ADSTRGR; - unsigned char wk4[15]; - unsigned short ADDRA; - unsigned short ADDRB; - unsigned short ADDRC; - unsigned short ADDRD; - unsigned short ADDRE; - unsigned short ADDRF; - unsigned short ADDRG; - unsigned short ADDRH; -}; - -struct st_port0 { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char :1; - unsigned char B5:1; - unsigned char :1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char :1; - unsigned char B5:1; - unsigned char :1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char :1; - unsigned char B5:1; - unsigned char :1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char :1; - unsigned char B5:1; - unsigned char :1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; - unsigned char wk3[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char :1; - unsigned char B5:1; - unsigned char :1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ODR; -}; - -struct st_port1 { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; - unsigned char wk3[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ODR; -}; - -struct st_port2 { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; - unsigned char wk3[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ODR; -}; - -struct st_port3 { - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; - unsigned char wk3[31]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ODR; -}; - -struct st_port4 { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; -}; - -struct st_port5 { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; -}; - -struct st_port6 { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; -}; - -struct st_port7 { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; -}; - -struct st_port8 { - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; -}; - -struct st_port9 { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; - unsigned char wk3[95]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; -}; - -struct st_porta { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; - unsigned char wk3[95]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; -}; - -struct st_portb { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; - unsigned char wk3[95]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; -}; - -struct st_portc { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; - unsigned char wk3[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ODR; - unsigned char wk4[63]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; -}; - -struct st_portd { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; - unsigned char wk3[95]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; -}; - -struct st_porte { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; - unsigned char wk3[95]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; -}; - -struct st_portf { - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; -}; - -struct st_portg { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - unsigned char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - unsigned char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - unsigned char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; - unsigned char wk3[95]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; -}; - -struct st_ioport { - union { - unsigned char BYTE; - struct { - unsigned char CS7E:1; - unsigned char CS6E:1; - unsigned char CS5E:1; - unsigned char CS4E:1; - unsigned char CS3E:1; - unsigned char CS2E:1; - unsigned char CS1E:1; - unsigned char CS0E:1; - } BIT; - } PF0CSE; - union { - unsigned char BYTE; - struct { - unsigned char CS7S:2; - unsigned char CS6S:2; - unsigned char CS5S:2; - unsigned char CS4S:2; - } BIT; - } PF1CSS; - union { - unsigned char BYTE; - struct { - unsigned char CS3S:2; - unsigned char CS2S:2; - unsigned char CS1S:2; - unsigned char :1; - unsigned char CS0S:1; - } BIT; - } PF2CSS; - union { - unsigned char BYTE; - struct { - unsigned char A23E:1; - unsigned char A22E:1; - unsigned char A21E:1; - unsigned char A20E:1; - unsigned char A19E:1; - unsigned char A18E:1; - unsigned char A17E:1; - unsigned char A16E:1; - } BIT; - } PF3BUS; - union { - unsigned char BYTE; - struct { - unsigned char A15E:1; - unsigned char A14E:1; - unsigned char A13E:1; - unsigned char A12E:1; - unsigned char A11E:1; - unsigned char A10E:1; - unsigned char ADRLE:2; - } BIT; - } PF4BUS; - union { - unsigned char BYTE; - struct { - unsigned char WR32BC32E:1; - unsigned char WR1BC1E:1; - unsigned char DH32E:1; - unsigned char DHE:1; - unsigned char :2; - unsigned char ADRHMS:1; - unsigned char :1; - } BIT; - } PF5BUS; - union { - unsigned char BYTE; - struct { - unsigned char SDCLKE:1; - unsigned char DQM1E:1; - unsigned char :1; - unsigned char MDSDE:1; - unsigned char :2; - unsigned char WAITS:2; - } BIT; - } PF6BUS; - union { - unsigned char BYTE; - struct { - unsigned char EDMA1S:2; - unsigned char EDMA0S:2; - unsigned char :4; - } BIT; - } PF7DMA; - union { - unsigned char BYTE; - struct { - unsigned char ITS15:1; - unsigned char :1; - unsigned char ITS13:1; - unsigned char :1; - unsigned char ITS11:1; - unsigned char ITS10:1; - unsigned char ITS9:1; - unsigned char ITS8:1; - } BIT; - } PF8IRQ; - union { - unsigned char BYTE; - struct { - unsigned char ITS7:1; - unsigned char ITS6:1; - unsigned char ITS5:1; - unsigned char ITS4:1; - unsigned char ITS3:1; - unsigned char ITS2:1; - unsigned char ITS1:1; - unsigned char ITS0:1; - } BIT; - } PF9IRQ; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char ADTRG0S:1; - } BIT; - } PFAADC; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char TMR3S:1; - unsigned char TMR2S:1; - unsigned char :2; - } BIT; - } PFBTMR; - union { - unsigned char BYTE; - struct { - unsigned char TCLKS:1; - unsigned char MTUS6:1; - unsigned char MTUS5:1; - unsigned char MTUS4:1; - unsigned char MTUS3:1; - unsigned char MTUS2:1; - unsigned char MTUS1:1; - unsigned char MTUS0:1; - } BIT; - } PFCMTU; - union { - unsigned char BYTE; - struct { - unsigned char TCLKS:1; - unsigned char MTUS6:1; - unsigned char :6; - } BIT; - } PFDMTU; - union { - unsigned char BYTE; - struct { - unsigned char EE:1; - unsigned char :2; - unsigned char PHYMODE:1; - unsigned char ENETE3:1; - unsigned char ENETE2:1; - unsigned char ENETE1:1; - unsigned char ENETE0:1; - } BIT; - } PFENET; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char SCI6S:1; - unsigned char :2; - unsigned char SCI3S:1; - unsigned char SCI2S:1; - unsigned char SCI1S:1; - unsigned char :1; - } BIT; - } PFFSCI; - union { - unsigned char BYTE; - struct { - unsigned char SSL3E:1; - unsigned char SSL2E:1; - unsigned char SSL1E:1; - unsigned char SSL0E:1; - unsigned char MISOE:1; - unsigned char MOSIE:1; - unsigned char RSPCKE:1; - unsigned char RSPIS:1; - } BIT; - } PFGSPI; - union { - unsigned char BYTE; - struct { - unsigned char SSL3E:1; - unsigned char SSL2E:1; - unsigned char SSL1E:1; - unsigned char SSL0E:1; - unsigned char MISOE:1; - unsigned char MOSIE:1; - unsigned char RSPCKE:1; - unsigned char RSPIS:1; - } BIT; - } PFHSPI; - unsigned char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char CAN0E:1; - } BIT; - } PFJCAN; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char USBE:1; - unsigned char PDHZS:1; - unsigned char PUPHZS:1; - unsigned char USBMD:2; - } BIT; - } PFKUSB; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char USBE:1; - unsigned char PDHZS:1; - unsigned char PUPHZS:1; - unsigned char USBMD:2; - } BIT; - } PFLUSB; - union { - unsigned char BYTE; - struct { - unsigned char POE7E:1; - unsigned char POE6E:1; - unsigned char POE5E:1; - unsigned char POE4E:1; - unsigned char POE3E:1; - unsigned char POE2E:1; - unsigned char POE1E:1; - unsigned char POE0E:1; - } BIT; - } PFMPOE; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char POE9E:1; - unsigned char POE8E:1; - } BIT; - } PFNPOE; -}; - -struct st_flash { - unsigned char DMMY; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char FLWE:2; - } BIT; - } FWEPROR; - unsigned char wk0[7799160]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char FRDMD:1; - unsigned char :4; - } BIT; - } FMODR; - unsigned char wk1[13]; - union { - unsigned char BYTE; - struct { - unsigned char ROMAE:1; - unsigned char :2; - unsigned char CMDLK:1; - unsigned char DFLAE:1; - unsigned char :1; - unsigned char DFLRPE:1; - unsigned char DFLWPE:1; - } BIT; - } FASTAT; - union { - unsigned char BYTE; - struct { - unsigned char ROMAEIE:1; - unsigned char :2; - unsigned char CMDLKIE:1; - unsigned char DFLAEIE:1; - unsigned char :1; - unsigned char DFLRPEIE:1; - unsigned char DFLWPEIE:1; - } BIT; - } FAEINT; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char FRDYIE:1; - } BIT; - } FRDYIE; - unsigned char wk2[45]; - union { - unsigned short WORD; - struct { - unsigned short KEY:8; - unsigned short DBRE07:1; - unsigned short DBRE06:1; - unsigned short DBRE05:1; - unsigned short DBRE04:1; - unsigned short DBRE03:1; - unsigned short DBRE02:1; - unsigned short DBRE01:1; - unsigned short DBRE00:1; - } BIT; - } DFLRE0; - union { - unsigned short WORD; - struct { - unsigned short KEY:8; - unsigned short DBRE15:1; - unsigned short DBRE14:1; - unsigned short DBRE13:1; - unsigned short DBRE12:1; - unsigned short DBRE11:1; - unsigned short DBRE10:1; - unsigned short DBRE09:1; - unsigned short DBRE08:1; - } BIT; - } DFLRE1; - unsigned char wk3[12]; - union { - unsigned short WORD; - struct { - unsigned short KEY:8; - unsigned short DBWE07:1; - unsigned short DBWE06:1; - unsigned short DBWE05:1; - unsigned short DBWE04:1; - unsigned short DBWE03:1; - unsigned short DBWE02:1; - unsigned short DBWE01:1; - unsigned short DBWE00:1; - } BIT; - } DFLWE0; - union { - unsigned short WORD; - struct { - unsigned short KEY:8; - unsigned short DBWE15:1; - unsigned short DBWE14:1; - unsigned short DBWE13:1; - unsigned short DBWE12:1; - unsigned short DBWE11:1; - unsigned short DBWE10:1; - unsigned short DBWE09:1; - unsigned short DBWE08:1; - } BIT; - } DFLWE1; - union { - unsigned short WORD; - struct { - unsigned short KEY:8; - unsigned short :7; - unsigned short FCRME:1; - } BIT; - } FCURAME; - unsigned char wk4[15194]; - union { - unsigned char BYTE; - struct { - unsigned char FRDY:1; - unsigned char ILGLERR:1; - unsigned char ERSERR:1; - unsigned char PRGERR:1; - unsigned char SUSRDY:1; - unsigned char :1; - unsigned char ERSSPD:1; - unsigned char PRGSPD:1; - } BIT; - } FSTATR0; - union { - unsigned char BYTE; - struct { - unsigned char FCUERR:1; - unsigned char :2; - unsigned char FLOCKST:1; - unsigned char :4; - } BIT; - } FSTATR1; - union { - unsigned short WORD; - struct { - unsigned short FEKEY:8; - unsigned short FENTRYD:1; - unsigned short :6; - unsigned short FENTRY0:1; - } BIT; - } FENTRYR; - union { - unsigned short WORD; - struct { - unsigned short FPKEY:8; - unsigned short :7; - unsigned short FPROTCN:1; - } BIT; - } FPROTR; - union { - unsigned short WORD; - struct { - unsigned short FPKEY:8; - unsigned short :7; - unsigned short FRESET:1; - } BIT; - } FRESETR; - unsigned char wk5[2]; - union { - unsigned short WORD; - struct { - unsigned short CMDR:8; - unsigned short PCMDR:8; - } BIT; - } FCMDR; - unsigned char wk6[12]; - union { - unsigned short WORD; - struct { - unsigned short :15; - unsigned short ESUSPMD:1; - } BIT; - } FCPSR; - union { - unsigned short WORD; - struct { - unsigned short :5; - unsigned short BCADR:8; - unsigned short :2; - unsigned short BCSIZE:1; - } BIT; - } DFLBCCNT; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short PEERRST:8; - } BIT; - } FPESTAT; - union { - unsigned short WORD; - struct { - unsigned short :15; - unsigned short BCST:1; - } BIT; - } DFLBCSTAT; - unsigned char wk7[24]; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short PCKA:8; - } BIT; - } PCKAR; -}; - -struct st_rtc { - union { - unsigned char BYTE; - struct { - unsigned char F64HZ:1; - unsigned char F32HZ:1; - unsigned char F16HZ:1; - unsigned char F8HZ:1; - unsigned char F4HZ:1; - unsigned char F2HZ:1; - unsigned char F1HZ:1; - unsigned char :1; - } BIT; - } R64CNT; - unsigned char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char SEC10:3; - unsigned char SEC1:4; - } BIT; - } RSECCNT; - unsigned char wk1[1]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char MIN10:3; - unsigned char MIN1:4; - } BIT; - } RMINCNT; - unsigned char wk2[1]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char HOUR10:2; - unsigned char HOUR1:4; - } BIT; - } RHRCNT; - unsigned char wk3[1]; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char DAY:3; - } BIT; - } RWKCNT; - unsigned char wk4[1]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char DAY10:2; - unsigned char DAY1:4; - } BIT; - } RDAYCNT; - unsigned char wk5[1]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char MON10:1; - unsigned char MON1:4; - } BIT; - } RMONCNT; - unsigned char wk6[1]; - union { - unsigned short WORD; - struct { - unsigned short YEAR1000:4; - unsigned short YEAR100:4; - unsigned short YEAR10:4; - unsigned short YEAR1:4; - } BIT; - } RYRCNT; - union { - unsigned char BYTE; - struct { - unsigned char ENB:1; - unsigned char SEC10:3; - unsigned char SEC1:4; - } BIT; - } RSECAR; - unsigned char wk7[1]; - union { - unsigned char BYTE; - struct { - unsigned char ENB:1; - unsigned char MIN10:3; - unsigned char MIN1:4; - } BIT; - } RMINAR; - unsigned char wk8[1]; - union { - unsigned char BYTE; - struct { - unsigned char ENB:1; - unsigned char :1; - unsigned char HOUR10:2; - unsigned char HOUR1:4; - } BIT; - } RHRAR; - unsigned char wk9[1]; - union { - unsigned char BYTE; - struct { - unsigned char ENB:1; - unsigned char :4; - unsigned char DAY:3; - } BIT; - } RWKAR; - unsigned char wk10[1]; - union { - unsigned char BYTE; - struct { - unsigned char ENB:1; - unsigned char :1; - unsigned char DAY10:2; - unsigned char DAY1:4; - } BIT; - } RDAYAR; - unsigned char wk11[1]; - union { - unsigned char BYTE; - struct { - unsigned char ENB:1; - unsigned char :2; - unsigned char MON10:1; - unsigned char MON1:4; - } BIT; - } RMONAR; - unsigned char wk12[1]; - union { - unsigned short WORD; - struct { - unsigned short YEAR1000:4; - unsigned short YEAR100:4; - unsigned short YEAR10:4; - unsigned short YEAR1:4; - } BIT; - } RYRAR; - union { - unsigned char BYTE; - struct { - unsigned char ENB:1; - unsigned char :7; - } BIT; - } RYRAREN; - unsigned char wk13[3]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char PES:3; - unsigned char :1; - unsigned char PIE:1; - unsigned char CIE:1; - unsigned char AIE:1; - } BIT; - } RCR1; - unsigned char wk14[1]; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char RTCOE:1; - unsigned char ADJ:1; - unsigned char RESET:1; - unsigned char START:1; - } BIT; - } RCR2; -}; - -struct st_can { - struct { - union { - unsigned long LONG; - union { - unsigned short H; - unsigned short L; - } WORD; - struct { - unsigned char HH; - unsigned char HL; - unsigned char LH; - unsigned char LL; - } BYTE; - struct { - unsigned long IDE:1; - unsigned long RTR:1; - unsigned long :1; - unsigned long SID:11; - unsigned long EID:18; - } BIT; - } ID; - union { - unsigned short WORD; - struct { - unsigned char :8; - unsigned char :4; - unsigned char DLC:4; - } BIT; - } DLC; - unsigned char DATA[8]; - union{ - unsigned short WORD; - struct { - unsigned char TSH; - unsigned char TSL; - } BYTE; - } TS; - } MB[32]; - union { - unsigned long LONG; - struct { - unsigned short H; - unsigned short L; - } WORD; - struct { - unsigned char HH; - unsigned char HL; - unsigned char LH; - unsigned char LL; - } BYTE; - struct { - unsigned long :3; - unsigned long SID:11; - unsigned long EID:18; - } BIT; - } MKR[8]; - union { - unsigned long LONG; - struct { - unsigned short H; - unsigned short L; - } WORD; - struct { - unsigned char HH; - unsigned char HL; - unsigned char LH; - unsigned char LL; - } BYTE; - struct { - unsigned long IDE:1; - unsigned long RTR:1; - unsigned long :1; - unsigned long SID:11; - unsigned long EID:18; - } BIT; - } FIDCR0; - union { - unsigned long LONG; - struct { - unsigned short H; - unsigned short L; - } WORD; - struct { - unsigned char HH; - unsigned char HL; - unsigned char LH; - unsigned char LL; - } BYTE; - struct { - unsigned long IDE:1; - unsigned long RTR:1; - unsigned long :1; - unsigned long SID:11; - unsigned long EID:18; - } BIT; - } FIDCR1; - unsigned long MKIVLR; - unsigned long MIER; - unsigned char wk32[1008]; - union { - unsigned char BYTE; - union { - struct { - unsigned char TRMREQ:1; - unsigned char RECREQ:1; - unsigned char :1; - unsigned char ONESHOT:1; - unsigned char :1; - unsigned char TRMABT:1; - unsigned char TRMACTIVE:1; - unsigned char SENTDATA:1; - } TX; - struct { - unsigned char TRMREQ:1; - unsigned char RECREQ:1; - unsigned char :1; - unsigned char ONESHOT:1; - unsigned char :1; - unsigned char MSGLOST:1; - unsigned char INVALDATA:1; - unsigned char NEWDATA:1; - } RX; - } BIT; - } MCTL[32]; - union { - unsigned short WORD; - struct { - unsigned char H; - unsigned char L; - } BYTE; - struct { - unsigned char :2; - unsigned char RBOC:1; - unsigned char BOM:2; - unsigned char SLPM:1; - unsigned char CANM:2; - unsigned char TSPS:2; - unsigned char TSRC:1; - unsigned char TPM:1; - unsigned char MLM:1; - unsigned char IDFM:2; - unsigned char MBM:1; - } BIT; - } CTLR; - union { - unsigned short WORD; - struct { - unsigned char H; - unsigned char L; - } BYTE; - struct { - unsigned char :1; - unsigned char RECST:1; - unsigned char TRMST:1; - unsigned char BOST:1; - unsigned char EPST:1; - unsigned char SLPST:1; - unsigned char HLTST:1; - unsigned char RSTST:1; - unsigned char EST:1; - unsigned char TABST:1; - unsigned char FMLST:1; - unsigned char NMLST:1; - unsigned char TFST:1; - unsigned char RFST:1; - unsigned char SDST:1; - unsigned char NDST:1; - } BIT; - } STR; - union { - unsigned long LONG; - struct { - unsigned short H; - unsigned short L; - } WORD; - struct { - unsigned char HH; - unsigned char HL; - unsigned char LH; - unsigned char LL; - } BYTE; - struct { - unsigned long TSEG1:4; - unsigned long :2; - unsigned long BRP:10; - unsigned long :2; - unsigned long SJW:2; - unsigned long :1; - unsigned long TSEG2:3; - unsigned long :8; - } BIT; - } BCR; - union { - unsigned char BYTE; - struct { - unsigned char RFEST:1; - unsigned char RFWST:1; - unsigned char RFFST:1; - unsigned char RFMLF:1; - unsigned char RFUST:3; - unsigned char RFE:1; - } BIT; - } RFCR; - unsigned char RFPCR; - union { - unsigned char BYTE; - struct { - unsigned char TFEST:1; - unsigned char TFFST:1; - unsigned char :2; - unsigned char TFUST:3; - unsigned char TFE:1; - } BIT; - } TFCR; - unsigned char TFPCR; - union { - unsigned char BYTE; - struct { - unsigned char BLIE:1; - unsigned char OLIE:1; - unsigned char ORIE:1; - unsigned char BORIE:1; - unsigned char BOEIE:1; - unsigned char EPIE:1; - unsigned char EWIE:1; - unsigned char BEIE:1; - } BIT; - } EIER; - union { - unsigned char BYTE; - struct { - unsigned char BLIF:1; - unsigned char OLIF:1; - unsigned char ORIF:1; - unsigned char BORIF:1; - unsigned char BOEIF:1; - unsigned char EPIF:1; - unsigned char EWIF:1; - unsigned char BEIF:1; - } BIT; - } EIFR; - unsigned char RECR; - unsigned char TECR; - union { - unsigned char BYTE; - struct { - unsigned char EDPM:1; - unsigned char ADEF:1; - unsigned char BE0F:1; - unsigned char BE1F:1; - unsigned char CEF:1; - unsigned char AEF:1; - unsigned char FEF:1; - unsigned char SEF:1; - } BIT; - } ECSR; - unsigned char CSSR; - union { - unsigned char BYTE; - struct { - unsigned char SEST:1; - unsigned char :2; - unsigned char MBNST:5; - } BIT; - } MSSR; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char MBSM:2; - } BIT; - } MSMR; - unsigned short TSR; - unsigned short AFSR; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char TSTM:2; - unsigned char TSTE:1; - } BIT; - } TCR; -}; - -struct st_usb0 { - union { - unsigned short WORD; - struct { - unsigned short :5; - unsigned short SCKE:1; - unsigned short :3; - unsigned short DCFM:1; - unsigned short DRPD:1; - unsigned short DPRPU:1; - unsigned short :3; - unsigned short USBE:1; - } BIT; - } SYSCFG; - unsigned char wk0[2]; - union { - unsigned short WORD; - struct { - unsigned short OVCMON:2; - unsigned short :7; - unsigned short HTACT:1; - unsigned short :3; - unsigned short IDMON:1; - unsigned short LNST:2; - } BIT; - } SYSSTS0; - unsigned char wk1[2]; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short HNPBTOA:1; - unsigned short EXICEN:1; - unsigned short VBUSEN:1; - unsigned short WKUP:1; - unsigned short RWUPE:1; - unsigned short USBRST:1; - unsigned short RESUME:1; - unsigned short UACT:1; - unsigned short :1; - unsigned short RHST:3; - } BIT; - } DVSTCTR0; - unsigned char wk2[10]; - union { - unsigned short WORD; - struct { - unsigned char L; - unsigned char H; - } BYTE; - } CFIFO; - unsigned char wk3[2]; - union { - unsigned short WORD; - struct { - unsigned char L; - unsigned char H; - } BYTE; - } D0FIFO; - unsigned char wk4[2]; - union { - unsigned short WORD; - struct { - unsigned char L; - unsigned char H; - } BYTE; - } D1FIFO; - unsigned char wk5[2]; - union { - unsigned short WORD; - struct { - unsigned short RCNT:1; - unsigned short REW:1; - unsigned short :3; - unsigned short MBW:1; - unsigned short :1; - unsigned short BIGEND:1; - unsigned short :2; - unsigned short ISEL:1; - unsigned short :1; - unsigned short CURPIPE:4; - } BIT; - } CFIFOSEL; - union { - unsigned short WORD; - struct { - unsigned short BVAL:1; - unsigned short BCLR:1; - unsigned short FRDY:1; - unsigned short :4; - unsigned short TLN:1; - unsigned short DTLN:8; - } BIT; - } CFIFOCTR; - unsigned char wk6[4]; - union { - unsigned short WORD; - struct { - unsigned short RCNT:1; - unsigned short REW:1; - unsigned short DCLRM:1; - unsigned short DREQE:1; - unsigned short :1; - unsigned short MBW:1; - unsigned short :1; - unsigned short BIGEND:1; - unsigned short :4; - unsigned short CURPIPE:4; - } BIT; - } D0FIFOSEL; - union { - unsigned short WORD; - struct { - unsigned short BVAL:1; - unsigned short BCLR:1; - unsigned short FRDY:1; - unsigned short :4; - unsigned short TLN:1; - unsigned short DTLN:8; - } BIT; - } D0FIFOCTR; - union { - unsigned short WORD; - struct { - unsigned short RCNT:1; - unsigned short REW:1; - unsigned short DCLRM:1; - unsigned short DREQE:1; - unsigned short :1; - unsigned short MBW:1; - unsigned short :1; - unsigned short BIGEND:1; - unsigned short :4; - unsigned short CURPIPE:4; - } BIT; - } D1FIFOSEL; - union { - unsigned short WORD; - struct { - unsigned short BVAL:1; - unsigned short BCLR:1; - unsigned short FRDY:1; - unsigned short :4; - unsigned short TLN:1; - unsigned short DTLN:8; - } BIT; - } D1FIFOCTR; - union { - unsigned short WORD; - struct { - unsigned short VBSE:1; - unsigned short RSME:1; - unsigned short SOFE:1; - unsigned short DVSE:1; - unsigned short CTRE:1; - unsigned short BEMPE:1; - unsigned short NRDYE:1; - unsigned short BRDYE:1; - unsigned short :8; - } BIT; - } INTENB0; - union { - unsigned short WORD; - struct { - unsigned short OVRCRE:1; - unsigned short BCHGE:1; - unsigned short :1; - unsigned short DTCHE:1; - unsigned short ATTCHE:1; - unsigned short :4; - unsigned short EOFERRE:1; - unsigned short SIGNE:1; - unsigned short SACKE:1; - unsigned short :4; - } BIT; - } INTENB1; - unsigned char wk7[2]; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short PIPE9BRDYE:1; - unsigned short PIPE8BRDYE:1; - unsigned short PIPE7BRDYE:1; - unsigned short PIPE6BRDYE:1; - unsigned short PIPE5BRDYE:1; - unsigned short PIPE4BRDYE:1; - unsigned short PIPE3BRDYE:1; - unsigned short PIPE2BRDYE:1; - unsigned short PIPE1BRDYE:1; - unsigned short PIPE0BRDYE:1; - } BIT; - } BRDYENB; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short PIPE9BRDYE:1; - unsigned short PIPE8BRDYE:1; - unsigned short PIPE7BRDYE:1; - unsigned short PIPE6BRDYE:1; - unsigned short PIPE5BRDYE:1; - unsigned short PIPE4BRDYE:1; - unsigned short PIPE3BRDYE:1; - unsigned short PIPE2BRDYE:1; - unsigned short PIPE1BRDYE:1; - unsigned short PIPE0BRDYE:1; - } BIT; - } NRDYENB; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short PIPE9BEMPE:1; - unsigned short PIPE8BEMPE:1; - unsigned short PIPE7BEMPE:1; - unsigned short PIPE6BEMPE:1; - unsigned short PIPE5BEMPE:1; - unsigned short PIPE4BEMPE:1; - unsigned short PIPE3BEMPE:1; - unsigned short PIPE2BEMPE:1; - unsigned short PIPE1BEMPE:1; - unsigned short PIPE0BEMPE:1; - } BIT; - } BEMPENB; - union { - unsigned short WORD; - struct { - unsigned short :7; - unsigned short TRNENSEL:1; - unsigned short :1; - unsigned short BRDYM:1; - unsigned short :1; - unsigned short EDGESTS:1; - unsigned short :4; - } BIT; - } SOFCFG; - unsigned char wk8[2]; - union { - unsigned short WORD; - struct { - unsigned short VBINT:1; - unsigned short RESM:1; - unsigned short SOFR:1; - unsigned short DVST:1; - unsigned short CTRT:1; - unsigned short BEMP:1; - unsigned short NRDY:1; - unsigned short BRDY:1; - unsigned short VBSTS:1; - unsigned short DVSQ:3; - unsigned short VALID:1; - unsigned short CTSQ:3; - } BIT; - } INTSTS0; - union { - unsigned short WORD; - struct { - unsigned short OVRCR:1; - unsigned short BCHG:1; - unsigned short :1; - unsigned short DTCH:1; - unsigned short ATTCH:1; - unsigned short :4; - unsigned short EOFERR:1; - unsigned short SIGN:1; - unsigned short SACK:1; - unsigned short :4; - } BIT; - } INTSTS1; - unsigned char wk9[2]; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short PIPE9BRDY:1; - unsigned short PIPE8BRDY:1; - unsigned short PIPE7BRDY:1; - unsigned short PIPE6BRDY:1; - unsigned short PIPE5BRDY:1; - unsigned short PIPE4BRDY:1; - unsigned short PIPE3BRDY:1; - unsigned short PIPE2BRDY:1; - unsigned short PIPE1BRDY:1; - unsigned short PIPE0BRDY:1; - } BIT; - } BRDYSTS; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short PIPE9BRDY:1; - unsigned short PIPE8BRDY:1; - unsigned short PIPE7BRDY:1; - unsigned short PIPE6BRDY:1; - unsigned short PIPE5BRDY:1; - unsigned short PIPE4BRDY:1; - unsigned short PIPE3BRDY:1; - unsigned short PIPE2BRDY:1; - unsigned short PIPE1BRDY:1; - unsigned short PIPE0BRDY:1; - } BIT; - } NRDYSTS; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short PIPE9BENP:1; - unsigned short PIPE8BENP:1; - unsigned short PIPE7BENP:1; - unsigned short PIPE6BENP:1; - unsigned short PIPE5BENP:1; - unsigned short PIPE4BENP:1; - unsigned short PIPE3BENP:1; - unsigned short PIPE2BENP:1; - unsigned short PIPE1BENP:1; - unsigned short PIPE0BENP:1; - } BIT; - } BEMPSTS; - union { - unsigned short WORD; - struct { - unsigned short OVRN:1; - unsigned short CRCE:1; - unsigned short :3; - unsigned short FRNM:11; - } BIT; - } FRMNUM; - union { - unsigned short WORD; - struct { - unsigned short DVCHG:1; - unsigned short :15; - } BIT; - } DVCHGR; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short STSRECOV:4; - unsigned short :1; - unsigned short USBADDR:7; - } BIT; - } USBADDR; - unsigned char wk10[2]; - union { - unsigned short WORD; - struct { - unsigned short BREQUEST:8; - unsigned short BMREQUESTTYPE:8; - } BIT; - } USBREQ; - unsigned short USBVAL; - unsigned short USBINDX; - unsigned short USBLENG; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short SHTNAK:1; - unsigned short :2; - unsigned short DIR:1; - unsigned short :4; - } BIT; - } DCPCFG; - union { - unsigned short WORD; - struct { - unsigned short DEVSEL:4; - unsigned short :5; - unsigned short MXPS:7; - } BIT; - } DCPMAXP; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short SUREQ:1; - unsigned short :2; - unsigned short SUREQCLR:1; - unsigned short :2; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :2; - unsigned short CCPL:1; - unsigned short PID:2; - } BIT; - } DCPCTR; - unsigned char wk11[2]; - union { - unsigned short WORD; - struct { - unsigned short :12; - unsigned short PIPESEL:4; - } BIT; - } PIPESEL; - unsigned char wk12[2]; - union { - unsigned short WORD; - struct { - unsigned short TYPE:2; - unsigned short :3; - unsigned short BFRE:1; - unsigned short DBLB:1; - unsigned short :1; - unsigned short SHTNAK:1; - unsigned short :2; - unsigned short DIR:1; - unsigned short EPNUM:4; - } BIT; - } PIPECFG; - unsigned char wk13[2]; - union { - unsigned short WORD; - struct { - unsigned short DEVSEL:4; - unsigned short :3; - unsigned short XPS:1; - unsigned short MXPS:8; - } BIT; - } PIPEMAXP; - union { - unsigned short WORD; - struct { - unsigned short :3; - unsigned short IFIS:1; - unsigned short :9; - unsigned short IITV:3; - } BIT; - } PIPEPERI; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short INBUFM:1; - unsigned short :3; - unsigned short ATREPM:1; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE1CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short INBUFM:1; - unsigned short :3; - unsigned short ATREPM:1; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE2CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short INBUFM:1; - unsigned short :3; - unsigned short ATREPM:1; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE3CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short INBUFM:1; - unsigned short :3; - unsigned short ATREPM:1; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE4CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short INBUFM:1; - unsigned short :3; - unsigned short ATREPM:1; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE5CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short :5; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE6CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short :5; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE7CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short :5; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE8CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short :5; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE9CTR; - unsigned char wk14[14]; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short TRENB:1; - unsigned short TRCLR:1; - unsigned short :8; - } BIT; - } PIPE1TRE; - unsigned short PIPE1TRN; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short TRENB:1; - unsigned short TRCLR:1; - unsigned short :8; - } BIT; - } PIPE2TRE; - unsigned short PIPE2TRN; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short TRENB:1; - unsigned short TRCLR:1; - unsigned short :8; - } BIT; - } PIPE3TRE; - unsigned short PIPE3TRN; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short TRENB:1; - unsigned short TRCLR:1; - unsigned short :8; - } BIT; - } PIPE4TRE; - unsigned short PIPE4TRN; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short TRENB:1; - unsigned short TRCLR:1; - unsigned short :8; - } BIT; - } PIPE5TRE; - unsigned short PIPE5TRN; - unsigned char wk15[44]; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short USBSPD:2; - unsigned short :6; - } BIT; - } DEVADD0; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short USBSPD:2; - unsigned short :6; - } BIT; - } DEVADD1; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short USBSPD:2; - unsigned short :6; - } BIT; - } DEVADD2; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short USBSPD:2; - unsigned short :6; - } BIT; - } DEVADD3; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short USBSPD:2; - unsigned short :6; - } BIT; - } DEVADD4; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short USBSPD:2; - unsigned short :6; - } BIT; - } DEVADD5; -}; - -struct st_usb { - union { - unsigned long LONG; - struct { - unsigned long DVSTS1:1; - unsigned long :1; - unsigned long DOVCB1:1; - unsigned long DOVCA1:1; - unsigned long :2; - unsigned long DM1:1; - unsigned long DP1:1; - unsigned long DVBSTS0:1; - unsigned long :1; - unsigned long DOVCB0:1; - unsigned long DOVCA0:1; - unsigned long :2; - unsigned long DM0:1; - unsigned long DP0:1; - unsigned long :3; - unsigned long FIXPHY1:1; - unsigned long :3; - unsigned long SRPC1:1; - unsigned long :3; - unsigned long FIXPHY0:1; - unsigned long :3; - unsigned long SRPC0:1; - } BIT; - } DPUSR0R; - union { - unsigned long LONG; - struct { - unsigned long DVBINT1:1; - unsigned long :1; - unsigned long DOVRCRB1:1; - unsigned long DOVRCRA1:1; - unsigned long :2; - unsigned long DMINT1:1; - unsigned long DPINT1:1; - unsigned long DVBINT0:1; - unsigned long :1; - unsigned long DOVRCRB0:1; - unsigned long DOVRCRA0:1; - unsigned long :2; - unsigned long DMINT0:1; - unsigned long DPINT0:1; - unsigned long DVBSE1:1; - unsigned long :1; - unsigned long DOVRCRBE1:1; - unsigned long DOVRCRAE1:1; - unsigned long :2; - unsigned long DMINTE1:1; - unsigned long DPINTE1:1; - unsigned long DVBSE0:1; - unsigned long :1; - unsigned long DOVRCRBE0:1; - unsigned long DOVRCRAE0:1; - unsigned long :2; - unsigned long DMINTE0:1; - unsigned long DPINTE0:1; - } BIT; - } DPUSR1R; -}; - -struct st_edmac { - union { - unsigned long LONG; - struct { - unsigned long :25; - unsigned long DE:1; - unsigned long DL:2; - unsigned long :3; - unsigned long SWR:1; - } BIT; - } EDMR; - unsigned char wk0[4]; - union { - unsigned long LONG; - struct { - unsigned long :31; - unsigned long TR:1; - } BIT; - } EDTRR; - unsigned char wk1[4]; - union { - unsigned long LONG; - struct { - unsigned long :31; - unsigned long RR:1; - } BIT; - } EDRRR; - unsigned char wk2[4]; - void *TDLAR; - unsigned char wk3[4]; - void *RDLAR; - unsigned char wk4[4]; - union { - unsigned long LONG; - struct { - unsigned long :1; - unsigned long TWB:1; - unsigned long :3; - unsigned long TABT:1; - unsigned long RABT:1; - unsigned long RFCOF:1; - unsigned long ADE:1; - unsigned long ECI:1; - unsigned long TC:1; - unsigned long TDE:1; - unsigned long TFUF:1; - unsigned long FR:1; - unsigned long RDE:1; - unsigned long RFOF:1; - unsigned long :4; - unsigned long CND:1; - unsigned long DLC:1; - unsigned long CD:1; - unsigned long TRO:1; - unsigned long RMAF:1; - unsigned long :2; - unsigned long RRF:1; - unsigned long RTLF:1; - unsigned long RTSF:1; - unsigned long PRE:1; - unsigned long CERF:1; - } BIT; - } EESR; - unsigned char wk5[4]; - union { - unsigned long LONG; - struct { - unsigned long :1; - unsigned long TWBIP:1; - unsigned long :3; - unsigned long TABTIP:1; - unsigned long RABTIP:1; - unsigned long RFCOFIP:1; - unsigned long ADEIP:1; - unsigned long ECIIP:1; - unsigned long TCIP:1; - unsigned long TDEIP:1; - unsigned long TFUFIP:1; - unsigned long FRIP:1; - unsigned long RDEIP:1; - unsigned long RFOFIP:1; - unsigned long :4; - unsigned long CNDIP:1; - unsigned long DLCIP:1; - unsigned long CDIP:1; - unsigned long TROIP:1; - unsigned long RMAFIP:1; - unsigned long :2; - unsigned long RRFIP:1; - unsigned long RTLFIP:1; - unsigned long RTSFIP:1; - unsigned long PREIP:1; - unsigned long CERFIP:1; - } BIT; - } EESIPR; - unsigned char wk6[4]; - union { - unsigned long LONG; - struct { - unsigned long :20; - unsigned long CNDCE:1; - unsigned long DLCCE:1; - unsigned long CDCE:1; - unsigned long TROCE:1; - unsigned long RMAFCE:1; - unsigned long :2; - unsigned long RRFCE:1; - unsigned long RTLFCE:1; - unsigned long RTSFCE:1; - unsigned long PRECE:1; - unsigned long CERFCE:1; - } BIT; - } TRSCER; - unsigned char wk7[4]; - union { - unsigned long LONG; - struct { - unsigned long :16; - unsigned long MFC:16; - } BIT; - } RMFCR; - unsigned char wk8[4]; - union { - unsigned long LONG; - struct { - unsigned long :21; - unsigned long TFT:11; - } BIT; - } TFTR; - unsigned char wk9[4]; - union { - unsigned long LONG; - struct { - unsigned long :19; - unsigned long TFD:5; - unsigned long :3; - unsigned long RFD:5; - } BIT; - } FDR; - unsigned char wk10[4]; - union { - unsigned long LONG; - struct { - unsigned long :30; - unsigned long RNC:1; - unsigned long RNR:1; - } BIT; - } RMCR; - unsigned char wk11[8]; - union { - unsigned long LONG; - struct { - unsigned long :16; - unsigned long UNDER:16; - } BIT; - } TFUCR; - union { - unsigned long LONG; - struct { - unsigned long :16; - unsigned long OVER:16; - } BIT; - } RFOCR; - union { - unsigned long LONG; - struct { - unsigned long :31; - unsigned long TLB:1; - } BIT; - } IOSR; - union { - unsigned long LONG; - struct { - unsigned long :13; - unsigned long RFFO:3; - unsigned long :13; - unsigned long RFDO:3; - } BIT; - } FCFTR; - unsigned char wk12[4]; - union { - unsigned long LONG; - struct { - unsigned long :14; - unsigned long PADS:2; - unsigned long :10; - unsigned long PADR:6; - } BIT; - } RPADIR; - union { - unsigned long LONG; - struct { - unsigned long :27; - unsigned long TIM:1; - unsigned long :3; - unsigned long TIS:1; - } BIT; - } TRIMD; - unsigned char wk13[72]; - void *RBWAR; - void *RDFAR; - unsigned char wk14[4]; - void *TBRAR; - void *TDFAR; -}; - -struct st_etherc { - union { - unsigned long LONG; - struct { - unsigned long :11; - unsigned long TPC:1; - unsigned long ZPE:1; - unsigned long PFR:1; - unsigned long RXF:1; - unsigned long TXF:1; - unsigned long :3; - unsigned long PRCEF:1; - unsigned long :2; - unsigned long MPDE:1; - unsigned long :2; - unsigned long RE:1; - unsigned long TE:1; - unsigned long :1; - unsigned long ILB:1; - unsigned long RTM:1; - unsigned long DM:1; - unsigned long PRM:1; - } BIT; - } ECMR; - unsigned char wk0[4]; - union { - unsigned long LONG; - struct { - unsigned long :20; - unsigned long RFL:12; - } BIT; - } RFLR; - unsigned char wk1[4]; - union { - unsigned long LONG; - struct { - unsigned long :26; - unsigned long BFR:1; - unsigned long PSRTO:1; - unsigned long :1; - unsigned long LCHNG:1; - unsigned long MPD:1; - unsigned long ICD:1; - } BIT; - } ECSR; - unsigned char wk2[4]; - union { - unsigned long LONG; - struct { - unsigned long :26; - unsigned long BFSIPR:1; - unsigned long PSRTOIP:1; - unsigned long :1; - unsigned long LCHNGIP:1; - unsigned long MPDIP:1; - unsigned long ICDIP:1; - } BIT; - } ECSIPR; - unsigned char wk3[4]; - union { - unsigned long LONG; - struct { - unsigned long :28; - unsigned long MDI:1; - unsigned long MDO:1; - unsigned long MMD:1; - unsigned long MDC:1; - } BIT; - } PIR; - unsigned char wk4[4]; - union { - unsigned long LONG; - struct { - unsigned long :31; - unsigned long LMON:1; - } BIT; - } PSR; - unsigned char wk5[20]; - union { - unsigned long LONG; - struct { - unsigned long :12; - unsigned long RMD:20; - } BIT; - } RDMLR; - unsigned char wk6[12]; - union { - unsigned long LONG; - struct { - unsigned long :27; - unsigned long IPG:5; - } BIT; - } IPGR; - union { - unsigned long LONG; - struct { - unsigned long :16; - unsigned long AP:16; - } BIT; - } APR; - union { - unsigned long LONG; - struct { - unsigned long :16; - unsigned long MP:16; - } BIT; - } MPR; - unsigned char wk7[4]; - union { - unsigned long LONG; - struct { - unsigned long :24; - unsigned long RPAUSE:8; - } BIT; - } RFCF; - union { - unsigned long LONG; - struct { - unsigned long :16; - unsigned long TPAUSE:16; - } BIT; - } TPAUSER; - union { - unsigned long LONG; - struct { - unsigned long :24; - unsigned long TXP:8; - } BIT; - } TPAUSECR; - union { - unsigned long LONG; - struct { - unsigned long :16; - unsigned long BCF:16; - } BIT; - } BCFRR; - unsigned char wk8[80]; - unsigned long MAHR; - unsigned char wk9[4]; - union { - unsigned long LONG; - struct { - unsigned long :16; - unsigned long MA:16; - } BIT; - } MALR; - unsigned char wk10[4]; - unsigned long TROCR; - unsigned long CDCR; - unsigned long LCCR; - unsigned long CNDCR; - unsigned char wk11[4]; - unsigned long CEFCR; - unsigned long FRECR; - unsigned long TSFRCR; - unsigned long TLFRCR; - unsigned long RFCR; - unsigned long MAFCR; -}; - -enum enum_ir { -IR_BSC_BUSERR=16, -IR_FCU_FIFERR=21,IR_FCU_FRDYI=23, -IR_ICU_SWINT=27, -IR_CMT0_CMI0, -IR_CMT1_CMI1, -IR_CMT2_CMI2, -IR_CMT3_CMI3, -IR_ETHER_EINT, -IR_USB0_D0FIFO0=36,IR_USB0_D1FIFO0,IR_USB0_USBI0, -IR_USB1_D0FIFO1=40,IR_USB1_D1FIFO1,IR_USB1_USBI1, -IR_RSPI0_SPEI0=44,IR_RSPI0_SPRI0,IR_RSPI0_SPTI0,IR_RSPI0_SPII0, -IR_RSPI1_SPEI1,IR_RSPI1_SPRI1,IR_RSPI1_SPTI1,IR_RSPI1_SPII1, -IR_CAN0_ERS0=56,IR_CAN0_RXF0,IR_CAN0_TXF0,IR_CAN0_RXM0,IR_CAN0_TXM0, -IR_RTC_PRD=62,IR_RTC_CUP, -IR_ICU_IRQ0,IR_ICU_IRQ1,IR_ICU_IRQ2,IR_ICU_IRQ3,IR_ICU_IRQ4,IR_ICU_IRQ5,IR_ICU_IRQ6,IR_ICU_IRQ7,IR_ICU_IRQ8,IR_ICU_IRQ9,IR_ICU_IRQ10,IR_ICU_IRQ11,IR_ICU_IRQ12,IR_ICU_IRQ13,IR_ICU_IRQ14,IR_ICU_IRQ15, -IR_USB_USBR0=90,IR_USB_USBR1, -IR_RTC_ALM, -IR_WDT_WOVI=96, -IR_AD0_ADI0=98, -IR_AD1_ADI1, -IR_S12AD_ADI=102, -IR_MTU0_TGIA0=114,IR_MTU0_TGIB0,IR_MTU0_TGIC0,IR_MTU0_TGID0,IR_MTU0_TCIV0,IR_MTU0_TGIE0,IR_MTU0_TGIF0, -IR_MTU1_TGIA1,IR_MTU1_TGIB1,IR_MTU1_TCIV1,IR_MTU1_TCIU1, -IR_MTU2_TGIA2,IR_MTU2_TGIB2,IR_MTU2_TCIV2,IR_MTU2_TCIU2, -IR_MTU3_TGIA3,IR_MTU3_TGIB3,IR_MTU3_TGIC3,IR_MTU3_TGID3,IR_MTU3_TCIV3, -IR_MTU4_TGIA4,IR_MTU4_TGIB4,IR_MTU4_TGIC4,IR_MTU4_TGID4,IR_MTU4_TCIV4, -IR_MTU5_TGIU5,IR_MTU5_TGIV5,IR_MTU5_TGIW5, -IR_MTU6_TGIA6,IR_MTU6_TGIB6,IR_MTU6_TGIC6,IR_MTU6_TGID6,IR_MTU6_TCIV6,IR_MTU6_TGIE6,IR_MTU6_TGIF6, -IR_MTU7_TGIA7,IR_MTU7_TGIB7,IR_MTU7_TCIV7,IR_MTU7_TCIU7, -IR_MTU8_TGIA8,IR_MTU8_TGIB8,IR_MTU8_TCIV8,IR_MTU8_TCIU8, -IR_MTU9_TGIA9,IR_MTU9_TGIB9,IR_MTU9_TGIC9,IR_MTU9_TGID9,IR_MTU9_TCIV9, -IR_MTU10_TGIA10,IR_MTU10_TGIB10,IR_MTU10_TGIC10,IR_MTU10_TGID10,IR_MTU10_TCIV10, -IR_MTU11_TGIU11,IR_MTU11_TGIV11,IR_MTU11_TGIW11, -IR_POE_OEI1,IR_POE_OEI2,IR_POE_OEI3,IR_POE_OEI4, -IR_TMR0_CMIA0,IR_TMR0_CMIB0,IR_TMR0_OVI0, -IR_TMR1_CMIA1,IR_TMR1_CMIB1,IR_TMR1_OVI1, -IR_TMR2_CMIA2,IR_TMR2_CMIB2,IR_TMR2_OVI2, -IR_TMR3_CMIA3,IR_TMR3_CMIB3,IR_TMR3_OVI3, -IR_DMACA_DMAC0I=198,IR_DMACA_DMAC1I,IR_DMACA_DMAC2I,IR_DMACA_DMAC3I, -IR_EXDMAC_EXDMAC0I,IR_EXDMAC_EXDMAC1I, -IR_SCI0_ERI0=214,IR_SCI0_RXI0,IR_SCI0_TXI0,IR_SCI0_TEI0, -IR_SCI1_ERI1,IR_SCI1_RXI1,IR_SCI1_TXI1,IR_SCI1_TEI1, -IR_SCI2_ERI2,IR_SCI2_RXI2,IR_SCI2_TXI2,IR_SCI2_TEI2, -IR_SCI3_ERI3,IR_SCI3_RXI3,IR_SCI3_TXI3,IR_SCI3_TEI3, -IR_SCI5_ERI5=234,IR_SCI5_RXI5,IR_SCI5_TXI5,IR_SCI5_TEI5, -IR_SCI6_ERI6,IR_SCI6_RXI6,IR_SCI6_TXI6,IR_SCI6_TEI6, -IR_RIIC0_ICEEI0=246,IR_RIIC0_ICRXI0,IR_RIIC0_ICTXI0,IR_RIIC0_ICTEI0, -IR_RIIC1_ICEEI1,IR_RIIC1_ICRXI1,IR_RIIC1_ICTXI1,IR_RIIC1_ICTEI1 -}; - -enum enum_dtce { -DTCE_BSC_BUSERR=16, -DTCE_FCU_FIFERR=21,DTCE_FCU_FRDYI=23, -DTCE_ICU_SWINT=27, -DTCE_CMT0_CMI0, -DTCE_CMT1_CMI1, -DTCE_CMT2_CMI2, -DTCE_CMT3_CMI3, -DTCE_ETHER_EINT, -DTCE_USB0_D0FIFO0=36,DTCE_USB0_D1FIFO0,DTCE_USB0_USBI0, -DTCE_USB1_D0FIFO1=40,DTCE_USB1_D1FIFO1,DTCE_USB1_USBI1, -DTCE_RSPI0_SPEI0=44,DTCE_RSPI0_SPRI0,DTCE_RSPI0_SPTI0,DTCE_RSPI0_SPII0, -DTCE_RSPI1_SPEI1,DTCE_RSPI1_SPRI1,DTCE_RSPI1_SPTI1,DTCE_RSPI1_SPII1, -DTCE_CAN0_ERS0=56,DTCE_CAN0_RXF0,DTCE_CAN0_TXF0,DTCE_CAN0_RXM0,DTCE_CAN0_TXM0, -DTCE_RTC_PRD=62,DTCE_RTC_CUP, -DTCE_ICU_IRQ0,DTCE_ICU_IRQ1,DTCE_ICU_IRQ2,DTCE_ICU_IRQ3,DTCE_ICU_IRQ4,DTCE_ICU_IRQ5,DTCE_ICU_IRQ6,DTCE_ICU_IRQ7,DTCE_ICU_IRQ8,DTCE_ICU_IRQ9,DTCE_ICU_IRQ10,DTCE_ICU_IRQ11,DTCE_ICU_IRQ12,DTCE_ICU_IRQ13,DTCE_ICU_IRQ14,DTCE_ICU_IRQ15, -DTCE_USB_USBR0=90,DTCE_USB_USBR1, -DTCE_RTC_ALM, -DTCE_WDT_WOVI=96, -DTCE_AD0_ADI0=98, -DTCE_AD1_ADI1, -DTCE_S12AD_ADI=102, -DTCE_MTU0_TGIA0=114,DTCE_MTU0_TGIB0,DTCE_MTU0_TGIC0,DTCE_MTU0_TGID0,DTCE_MTU0_TCIV0,DTCE_MTU0_TGIE0,DTCE_MTU0_TGIF0, -DTCE_MTU1_TGIA1,DTCE_MTU1_TGIB1,DTCE_MTU1_TCIV1,DTCE_MTU1_TCIU1, -DTCE_MTU2_TGIA2,DTCE_MTU2_TGIB2,DTCE_MTU2_TCIV2,DTCE_MTU2_TCIU2, -DTCE_MTU3_TGIA3,DTCE_MTU3_TGIB3,DTCE_MTU3_TGIC3,DTCE_MTU3_TGID3,DTCE_MTU3_TCIV3, -DTCE_MTU4_TGIA4,DTCE_MTU4_TGIB4,DTCE_MTU4_TGIC4,DTCE_MTU4_TGID4,DTCE_MTU4_TCIV4, -DTCE_MTU5_TGIU5,DTCE_MTU5_TGIV5,DTCE_MTU5_TGIW5, -DTCE_MTU6_TGIA6,DTCE_MTU6_TGIB6,DTCE_MTU6_TGIC6,DTCE_MTU6_TGID6,DTCE_MTU6_TCIV6,DTCE_MTU6_TGIE6,DTCE_MTU6_TGIF6, -DTCE_MTU7_TGIA7,DTCE_MTU7_TGIB7,DTCE_MTU7_TCIV7,DTCE_MTU7_TCIU7, -DTCE_MTU8_TGIA8,DTCE_MTU8_TGIB8,DTCE_MTU8_TCIV8,DTCE_MTU8_TCIU8, -DTCE_MTU9_TGIA9,DTCE_MTU9_TGIB9,DTCE_MTU9_TGIC9,DTCE_MTU9_TGID9,DTCE_MTU9_TCIV9, -DTCE_MTU10_TGIA10,DTCE_MTU10_TGIB10,DTCE_MTU10_TGIC10,DTCE_MTU10_TGID10,DTCE_MTU10_TCIV10, -DTCE_MTU11_TGIU11,DTCE_MTU11_TGIV11,DTCE_MTU11_TGIW11, -DTCE_POE_OEI1,DTCE_POE_OEI2,DTCE_POE_OEI3,DTCE_POE_OEI4, -DTCE_TMR0_CMIA0,DTCE_TMR0_CMIB0,DTCE_TMR0_OVI0, -DTCE_TMR1_CMIA1,DTCE_TMR1_CMIB1,DTCE_TMR1_OVI1, -DTCE_TMR2_CMIA2,DTCE_TMR2_CMIB2,DTCE_TMR2_OVI2, -DTCE_TMR3_CMIA3,DTCE_TMR3_CMIB3,DTCE_TMR3_OVI3, -DTCE_DMACA_DMAC0I=198,DTCE_DMACA_DMAC1I,DTCE_DMACA_DMAC2I,DTCE_DMACA_DMAC3I, -DTCE_EXDMAC_EXDMAC0I,DTCE_EXDMAC_EXDMAC1I, -DTCE_SCI0_ERI0=214,DTCE_SCI0_RXI0,DTCE_SCI0_TXI0,DTCE_SCI0_TEI0, -DTCE_SCI1_ERI1,DTCE_SCI1_RXI1,DTCE_SCI1_TXI1,DTCE_SCI1_TEI1, -DTCE_SCI2_ERI2,DTCE_SCI2_RXI2,DTCE_SCI2_TXI2,DTCE_SCI2_TEI2, -DTCE_SCI3_ERI3,DTCE_SCI3_RXI3,DTCE_SCI3_TXI3,DTCE_SCI3_TEI3, -DTCE_SCI5_ERI5=234,DTCE_SCI5_RXI5,DTCE_SCI5_TXI5,DTCE_SCI5_TEI5, -DTCE_SCI6_ERI6,DTCE_SCI6_RXI6,DTCE_SCI6_TXI6,DTCE_SCI6_TEI6, -DTCE_RIIC0_ICEEI0=246,DTCE_RIIC0_ICRXI0,DTCE_RIIC0_ICTXI0,DTCE_RIIC0_ICTEI0, -DTCE_RIIC1_ICEEI1,DTCE_RIIC1_ICRXI1,DTCE_RIIC1_ICTXI1,DTCE_RIIC1_ICTEI1 -}; - -enum enum_ier { -IER_BSC_BUSERR=0x02, -IER_FCU_FIFERR=0x02,IER_FCU_FRDYI=0x02, -IER_ICU_SWINT=0x03, -IER_CMT0_CMI0=0x03, -IER_CMT1_CMI1=0x03, -IER_CMT2_CMI2=0x03, -IER_CMT3_CMI3=0x03, -IER_ETHER_EINT=0x04, -IER_USB0_D0FIFO0=0x04,IER_USB0_D1FIFO0=0x04,IER_USB0_USBI0=0x04, -IER_USB1_D0FIFO1=0x05,IER_USB1_D1FIFO1=0x05,IER_USB1_USBI1=0x05, -IER_RSPI0_SPEI0=0x05,IER_RSPI0_SPRI0=0x05,IER_RSPI0_SPTI0=0x05,IER_RSPI0_SPII0=0x05, -IER_RSPI1_SPEI1=0x06,IER_RSPI1_SPRI1=0x06,IER_RSPI1_SPTI1=0x06,IER_RSPI1_SPII1=0x06, -IER_CAN0_ERS0=0x07,IER_CAN0_RXF0=0x07,IER_CAN0_TXF0=0x07,IER_CAN0_RXM0=0x07,IER_CAN0_TXM0=0x07, -IER_RTC_PRD=0x07,IER_RTC_CUP=0x07, -IER_ICU_IRQ0=0x08,IER_ICU_IRQ1=0x08,IER_ICU_IRQ2=0x08,IER_ICU_IRQ3=0x08,IER_ICU_IRQ4=0x08,IER_ICU_IRQ5=0x08,IER_ICU_IRQ6=0x08,IER_ICU_IRQ7=0x08,IER_ICU_IRQ8=0x09,IER_ICU_IRQ9=0x09,IER_ICU_IRQ10=0x09,IER_ICU_IRQ11=0x09,IER_ICU_IRQ12=0x09,IER_ICU_IRQ13=0x09,IER_ICU_IRQ14=0x09,IER_ICU_IRQ15=0x09, -IER_USB_USBR0=0x0B,IER_USB_USBR1=0x0B, -IER_RTC_ALM=0x0B, -IER_WDT_WOVI=0x0C, -IER_AD0_ADI0=0x0C, -IER_AD1_ADI1=0x0C, -IER_S12AD_ADI=0x0C, -IER_MTU0_TGIA0=0x0E,IER_MTU0_TGIB0=0x0E,IER_MTU0_TGIC0=0x0E,IER_MTU0_TGID0=0x0E,IER_MTU0_TCIV0=0x0E,IER_MTU0_TGIE0=0x0E,IER_MTU0_TGIF0=0x0F, -IER_MTU1_TGIA1=0x0F,IER_MTU1_TGIB1=0x0F,IER_MTU1_TCIV1=0x0F,IER_MTU1_TCIU1=0x0F, -IER_MTU2_TGIA2=0x0F,IER_MTU2_TGIB2=0x0F,IER_MTU2_TCIV2=0x0F,IER_MTU2_TCIU2=0x10, -IER_MTU3_TGIA3=0x10,IER_MTU3_TGIB3=0x10,IER_MTU3_TGIC3=0x10,IER_MTU3_TGID3=0x10,IER_MTU3_TCIV3=0x10, -IER_MTU4_TGIA4=0x10,IER_MTU4_TGIB4=0x10,IER_MTU4_TGIC4=0x11,IER_MTU4_TGID4=0x11,IER_MTU4_TCIV4=0x11, -IER_MTU5_TGIU5=0x11,IER_MTU5_TGIV5=0x11,IER_MTU5_TGIW5=0x10, -IER_MTU6_TGIA6=0x11,IER_MTU6_TGIB6=0x11,IER_MTU6_TGIC6=0x12,IER_MTU6_TGID6=0x12,IER_MTU6_TCIV6=0x12,IER_MTU6_TGIE6=0x12,IER_MTU6_TGIF6=0x12, -IER_MTU7_TGIA7=0x12,IER_MTU7_TGIB7=0x12,IER_MTU7_TCIV7=0x12,IER_MTU7_TCIU7=0x13, -IER_MTU8_TGIA8=0x13,IER_MTU8_TGIB8=0x13,IER_MTU8_TCIV8=0x13,IER_MTU8_TCIU8=0x13, -IER_MTU9_TGIA9=0x13,IER_MTU9_TGIB9=0x13,IER_MTU9_TGIC9=0x13,IER_MTU9_TGID9=0x14,IER_MTU9_TCIV9=0x14, -IER_MTU10_TGIA10=0x14,IER_MTU10_TGIB10=0x14,IER_MTU10_TGIC10=0x14,IER_MTU10_TGID10=0x14,IER_MTU10_TCIV10=0x14, -IER_MTU11_TGIU11=0x14,IER_MTU11_TGIV11=0x15,IER_MTU11_TGIW11=0x15, -IER_POE_OEI1=0x15,IER_POE_OEI2=0x15,IER_POE_OEI3=0x15,IER_POE_OEI4=0x15, -IER_TMR0_CMIA0=0x15,IER_TMR0_CMIB0=0x15,IER_TMR0_OVI0=0x16, -IER_TMR1_CMIA1=0x16,IER_TMR1_CMIB1=0x16,IER_TMR1_OVI1=0x16, -IER_TMR2_CMIA2=0x16,IER_TMR2_CMIB2=0x16,IER_TMR2_OVI2=0x16, -IER_TMR3_CMIA3=0x16,IER_TMR3_CMIB3=0x17,IER_TMR3_OVI3=0x17, -IER_DMACA_DMAC0I=0x18,IER_DMACA_DMAC1I=0x18,IER_DMACA_DMAC2I=0x19,IER_DMACA_DMAC3I=0x19, -IER_EXDMAC_EXDMAC0I=0x19,IER_EXDMAC_EXDMAC1I=0x19, -IER_SCI0_ERI0=0x1A,IER_SCI0_RXI0=0x1A,IER_SCI0_TXI0=0x1B,IER_SCI0_TEI0=0x1B, -IER_SCI1_ERI1=0x1B,IER_SCI1_RXI1=0x1B,IER_SCI1_TXI1=0x1B,IER_SCI1_TEI1=0x1B, -IER_SCI2_ERI2=0x1B,IER_SCI2_RXI2=0x1B,IER_SCI2_TXI2=0x1C,IER_SCI2_TEI2=0x1C, -IER_SCI3_ERI3=0x1C,IER_SCI3_RXI3=0x1C,IER_SCI3_TXI3=0x1C,IER_SCI3_TEI3=0x1C, -IER_SCI5_ERI5=0x1D,IER_SCI5_RXI5=0x1D,IER_SCI5_TXI5=0x1D,IER_SCI5_TEI5=0x1D, -IER_SCI6_ERI6=0x1D,IER_SCI6_RXI6=0x1D,IER_SCI6_TXI6=0x1E,IER_SCI6_TEI6=0x1E, -IER_RIIC0_ICEEI0=0x1E,IER_RIIC0_ICRXI0=0x1E,IER_RIIC0_ICTXI0=0x1F,IER_RIIC0_ICTEI0=0x1F, -IER_RIIC1_ICEEI1=0x1F,IER_RIIC1_ICRXI1=0x1F,IER_RIIC1_ICTXI1=0x1F,IER_RIIC1_ICTEI1=0x1F -}; - -enum enum_ipr { -IPR_BSC_BUSERR=0x00, -IPR_FCU_FIFERR=0x01,IPR_FCU_FRDYI=0x02, -IPR_ICU_SWINT=0x03, -IPR_CMT0_CMI0=0x04, -IPR_CMT1_CMI1=0x05, -IPR_CMT2_CMI2=0x06, -IPR_CMT3_CMI3=0x07, -IPR_ETHER_EINT=0x08, -IPR_USB0_D0FIFO0=0x0C,IPR_USB0_D1FIFO0=0x0D,IPR_USB0_USBI0=0x0E, -IPR_USB1_D0FIFO1=0x10,IPR_USB1_D1FIFO1=0x11,IPR_USB1_USBI1=0x12, -IPR_RSPI0_SPEI0=0x14,IPR_RSPI0_SPRI0=0x14,IPR_RSPI0_SPTI0=0x14,IPR_RSPI0_SPII0=0x14, -IPR_RSPI1_SPEI1=0x15,IPR_RSPI1_SPRI1=0x15,IPR_RSPI1_SPTI1=0x15,IPR_RSPI1_SPII1=0x15, -IPR_CAN0_ERS0=0x18,IPR_CAN0_RXF0=0x18,IPR_CAN0_TXF0=0x18,IPR_CAN0_RXM0=0x18,IPR_CAN0_TXM0=0x18, -IPR_RTC_PRD=0x1E,IPR_RTC_CUP=0x1F, -IPR_ICU_IRQ0=0x20,IPR_ICU_IRQ1=0x21,IPR_ICU_IRQ2=0x22,IPR_ICU_IRQ3=0x23,IPR_ICU_IRQ4=0x24,IPR_ICU_IRQ5=0x25,IPR_ICU_IRQ6=0x26,IPR_ICU_IRQ7=0x27,IPR_ICU_IRQ8=0x28,IPR_ICU_IRQ9=0x29,IPR_ICU_IRQ10=0x2A,IPR_ICU_IRQ11=0x2B,IPR_ICU_IRQ12=0x2C,IPR_ICU_IRQ13=0x2D,IPR_ICU_IRQ14=0x2E,IPR_ICU_IRQ15=0x2F, -IPR_USB_USBR0=0x3A,IPR_USB_USBR1=0x3B, -IPR_RTC_ALM=0x3C, -IPR_WDT_WOVI=0x40, -IPR_AD0_ADI0=0x44, -IPR_AD1_ADI1=0x45, -IPR_S12AD_ADI=0x48, -IPR_MTU0_TGIA0=0x51,IPR_MTU0_TGIB0=0x51,IPR_MTU0_TGIC0=0x51,IPR_MTU0_TGID0=0x51,IPR_MTU0_TCIV0=0x52,IPR_MTU0_TGIE0=0x52,IPR_MTU0_TGIF0=0x52, -IPR_MTU1_TGIA1=0x53,IPR_MTU1_TGIB1=0x53,IPR_MTU1_TCIV1=0x54,IPR_MTU1_TCIU1=0x54, -IPR_MTU2_TGIA2=0x55,IPR_MTU2_TGIB2=0x55,IPR_MTU2_TCIV2=0x56,IPR_MTU2_TCIU2=0x56, -IPR_MTU3_TGIA3=0x57,IPR_MTU3_TGIB3=0x57,IPR_MTU3_TGIC3=0x57,IPR_MTU3_TGID3=0x57,IPR_MTU3_TCIV3=0x58, -IPR_MTU4_TGIA4=0x59,IPR_MTU4_TGIB4=0x59,IPR_MTU4_TGIC4=0x59,IPR_MTU4_TGID4=0x59,IPR_MTU4_TCIV4=0x5A, -IPR_MTU5_TGIU5=0x5B,IPR_MTU5_TGIV5=0x5B,IPR_MTU5_TGIW5=0x5B, -IPR_MTU6_TGIA6=0x5C,IPR_MTU6_TGIB6=0x5C,IPR_MTU6_TGIC6=0x5C,IPR_MTU6_TGID6=0x5C,IPR_MTU6_TCIV6=0x5D,IPR_MTU6_TGIE6=0x5D,IPR_MTU6_TGIF6=0x5D, -IPR_MTU7_TGIA7=0x5E,IPR_MTU7_TGIB7=0x5E,IPR_MTU7_TCIV7=0x5F,IPR_MTU7_TCIU7=0x5F, -IPR_MTU8_TGIA8=0x60,IPR_MTU8_TGIB8=0x60,IPR_MTU8_TCIV8=0x61,IPR_MTU8_TCIU8=0x61, -IPR_MTU9_TGIA9=0x62,IPR_MTU9_TGIB9=0x62,IPR_MTU9_TGIC9=0x62,IPR_MTU9_TGID9=0x62,IPR_MTU9_TCIV9=0x63, -IPR_MTU10_TGIA10=0x64,IPR_MTU10_TGIB10=0x64,IPR_MTU10_TGIC10=0x64,IPR_MTU10_TGID10=0x64,IPR_MTU10_TCIV10=0x65, -IPR_MTU11_TGIU11=0x66,IPR_MTU11_TGIV11=0x66,IPR_MTU11_TGIW11=0x66, -IPR_POE_OEI1=0x67,IPR_POE_OEI2=0x67,IPR_POE_OEI3=0x67,IPR_POE_OEI4=0x67, -IPR_TMR0_CMIA0=0x68,IPR_TMR0_CMIB0=0x68,IPR_TMR0_OVI0=0x68, -IPR_TMR1_CMIA1=0x69,IPR_TMR1_CMIB1=0x69,IPR_TMR1_OVI1=0x69, -IPR_TMR2_CMIA2=0x6A,IPR_TMR2_CMIB2=0x6A,IPR_TMR2_OVI2=0x6A, -IPR_TMR3_CMIA3=0x6B,IPR_TMR3_CMIB3=0x6B,IPR_TMR3_OVI3=0x6B, -IPR_DMACA_DMAC0I=0x70,IPR_DMACA_DMAC1I=0x71,IPR_DMACA_DMAC2I=0x72,IPR_DMACA_DMAC3I=0x73, -IPR_EXDMAC_EXDMAC0I=0x74,IPR_EXDMAC_EXDMAC1I=0x75, -IPR_SCI0_ERI0=0x80,IPR_SCI0_RXI0=0x80,IPR_SCI0_TXI0=0x80,IPR_SCI0_TEI0=0x80, -IPR_SCI1_ERI1=0x81,IPR_SCI1_RXI1=0x81,IPR_SCI1_TXI1=0x81,IPR_SCI1_TEI1=0x81, -IPR_SCI2_ERI2=0x82,IPR_SCI2_RXI2=0x82,IPR_SCI2_TXI2=0x82,IPR_SCI2_TEI2=0x82, -IPR_SCI3_ERI3=0x83,IPR_SCI3_RXI3=0x83,IPR_SCI3_TXI3=0x83,IPR_SCI3_TEI3=0x83, -IPR_SCI5_ERI5=0x85,IPR_SCI5_RXI5=0x85,IPR_SCI5_TXI5=0x85,IPR_SCI5_TEI5=0x85, -IPR_SCI6_ERI6=0x86,IPR_SCI6_RXI6=0x86,IPR_SCI6_TXI6=0x86,IPR_SCI6_TEI6=0x86, -IPR_RIIC0_ICEEI0=0x88,IPR_RIIC0_ICRXI0=0x89,IPR_RIIC0_ICTXI0=0x8A,IPR_RIIC0_ICTEI0=0x8B, -IPR_RIIC1_ICEEI1=0x8C,IPR_RIIC1_ICRXI1=0x8D,IPR_RIIC1_ICTXI1=0x8E,IPR_RIIC1_ICTEI1=0x8F, -IPR_BSC_=0x00, -IPR_CMT0_=0x04, -IPR_CMT1_=0x05, -IPR_CMT2_=0x06, -IPR_CMT3_=0x07, -IPR_ETHER_=0x08, -IPR_RSPI0_=0x14, -IPR_RSPI1_=0x15, -IPR_CAN0_=0x18, -IPR_WDT_=0x40, -IPR_AD0_=0x44, -IPR_AD1_=0x45, -IPR_S12AD_=0x48, -IPR_MTU1_TGI=0x53, -IPR_MTU1_TCI=0x54, -IPR_MTU2_TGI=0x55, -IPR_MTU2_TCI=0x56, -IPR_MTU3_TGI=0x57, -IPR_MTU4_TGI=0x59, -IPR_MTU5_=0x5B, -IPR_MTU5_TGI=0x5B, -IPR_MTU7_TGI=0x5E, -IPR_MTU7_TCI=0x5F, -IPR_MTU8_TGI=0x60, -IPR_MTU8_TCI=0x61, -IPR_MTU9_TGI=0x62, -IPR_MTU10_TGI=0x64, -IPR_MTU11_=0x66, -IPR_MTU11_TGI=0x66, -IPR_POE_=0x67, -IPR_POE_OEI=0x67, -IPR_TMR0_=0x68, -IPR_TMR1_=0x69, -IPR_TMR2_=0x6A, -IPR_TMR3_=0x6B, -IPR_SCI0_=0x80, -IPR_SCI1_=0x81, -IPR_SCI2_=0x82, -IPR_SCI3_=0x83, -IPR_SCI5_=0x85, -IPR_SCI6_=0x86 -}; - -#define IEN_BSC_BUSERR IEN0 -#define IEN_FCU_FIFERR IEN5 -#define IEN_FCU_FRDYI IEN7 -#define IEN_ICU_SWINT IEN3 -#define IEN_CMT0_CMI0 IEN4 -#define IEN_CMT1_CMI1 IEN5 -#define IEN_CMT2_CMI2 IEN6 -#define IEN_CMT3_CMI3 IEN7 -#define IEN_ETHER_EINT IEN0 -#define IEN_USB0_D0FIFO0 IEN4 -#define IEN_USB0_D1FIFO0 IEN5 -#define IEN_USB0_USBI0 IEN6 -#define IEN_USB1_D0FIFO1 IEN0 -#define IEN_USB1_D1FIFO1 IEN1 -#define IEN_USB1_USBI1 IEN2 -#define IEN_RSPI0_SPEI0 IEN4 -#define IEN_RSPI0_SPRI0 IEN5 -#define IEN_RSPI0_SPTI0 IEN6 -#define IEN_RSPI0_SPII0 IEN7 -#define IEN_RSPI1_SPEI1 IEN0 -#define IEN_RSPI1_SPRI1 IEN1 -#define IEN_RSPI1_SPTI1 IEN2 -#define IEN_RSPI1_SPII1 IEN3 -#define IEN_CAN0_ERS0 IEN0 -#define IEN_CAN0_RXF0 IEN1 -#define IEN_CAN0_TXF0 IEN2 -#define IEN_CAN0_RXM0 IEN3 -#define IEN_CAN0_TXM0 IEN4 -#define IEN_RTC_PRD IEN6 -#define IEN_RTC_CUP IEN7 -#define IEN_ICU_IRQ0 IEN0 -#define IEN_ICU_IRQ1 IEN1 -#define IEN_ICU_IRQ2 IEN2 -#define IEN_ICU_IRQ3 IEN3 -#define IEN_ICU_IRQ4 IEN4 -#define IEN_ICU_IRQ5 IEN5 -#define IEN_ICU_IRQ6 IEN6 -#define IEN_ICU_IRQ7 IEN7 -#define IEN_ICU_IRQ8 IEN0 -#define IEN_ICU_IRQ9 IEN1 -#define IEN_ICU_IRQ10 IEN2 -#define IEN_ICU_IRQ11 IEN3 -#define IEN_ICU_IRQ12 IEN4 -#define IEN_ICU_IRQ13 IEN5 -#define IEN_ICU_IRQ14 IEN6 -#define IEN_ICU_IRQ15 IEN7 -#define IEN_USB_USBR0 IEN2 -#define IEN_USB_USBR1 IEN3 -#define IEN_RTC_ALM IEN4 -#define IEN_WDT_WOVI IEN0 -#define IEN_AD0_ADI0 IEN2 -#define IEN_AD1_ADI1 IEN3 -#define IEN_S12AD_ADI IEN6 -#define IEN_MTU0_TGIA0 IEN2 -#define IEN_MTU0_TGIB0 IEN3 -#define IEN_MTU0_TGIC0 IEN4 -#define IEN_MTU0_TGID0 IEN5 -#define IEN_MTU0_TCIV0 IEN6 -#define IEN_MTU0_TGIE0 IEN7 -#define IEN_MTU0_TGIF0 IEN0 -#define IEN_MTU1_TGIA1 IEN1 -#define IEN_MTU1_TGIB1 IEN2 -#define IEN_MTU1_TCIV1 IEN3 -#define IEN_MTU1_TCIU1 IEN4 -#define IEN_MTU2_TGIA2 IEN5 -#define IEN_MTU2_TGIB2 IEN6 -#define IEN_MTU2_TCIV2 IEN7 -#define IEN_MTU2_TCIU2 IEN0 -#define IEN_MTU3_TGIA3 IEN1 -#define IEN_MTU3_TGIB3 IEN2 -#define IEN_MTU3_TGIC3 IEN3 -#define IEN_MTU3_TGID3 IEN4 -#define IEN_MTU3_TCIV3 IEN5 -#define IEN_MTU4_TGIA4 IEN6 -#define IEN_MTU4_TGIB4 IEN7 -#define IEN_MTU4_TGIC4 IEN0 -#define IEN_MTU4_TGID4 IEN1 -#define IEN_MTU4_TCIV4 IEN2 -#define IEN_MTU5_TGIU5 IEN3 -#define IEN_MTU5_TGIV5 IEN4 -#define IEN_MTU5_TGIW5 IEN7 -#define IEN_MTU6_TGIA6 IEN6 -#define IEN_MTU6_TGIB6 IEN7 -#define IEN_MTU6_TGIC6 IEN0 -#define IEN_MTU6_TGID6 IEN1 -#define IEN_MTU6_TCIV6 IEN2 -#define IEN_MTU6_TGIE6 IEN3 -#define IEN_MTU6_TGIF6 IEN4 -#define IEN_MTU7_TGIA7 IEN5 -#define IEN_MTU7_TGIB7 IEN6 -#define IEN_MTU7_TCIV7 IEN7 -#define IEN_MTU7_TCIU7 IEN0 -#define IEN_MTU8_TGIA8 IEN1 -#define IEN_MTU8_TGIB8 IEN2 -#define IEN_MTU8_TCIV8 IEN3 -#define IEN_MTU8_TCIU8 IEN4 -#define IEN_MTU9_TGIA9 IEN5 -#define IEN_MTU9_TGIB9 IEN6 -#define IEN_MTU9_TGIC9 IEN7 -#define IEN_MTU9_TGID9 IEN0 -#define IEN_MTU9_TCIV9 IEN1 -#define IEN_MTU10_TGIA10 IEN2 -#define IEN_MTU10_TGIB10 IEN3 -#define IEN_MTU10_TGIC10 IEN4 -#define IEN_MTU10_TGID10 IEN5 -#define IEN_MTU10_TCIV10 IEN6 -#define IEN_MTU11_TGIU11 IEN7 -#define IEN_MTU11_TGIV11 IEN0 -#define IEN_MTU11_TGIW11 IEN1 -#define IEN_POE_OEI1 IEN2 -#define IEN_POE_OEI2 IEN3 -#define IEN_POE_OEI3 IEN4 -#define IEN_POE_OEI4 IEN5 -#define IEN_TMR0_CMIA0 IEN6 -#define IEN_TMR0_CMIB0 IEN7 -#define IEN_TMR0_OVI0 IEN0 -#define IEN_TMR1_CMIA1 IEN1 -#define IEN_TMR1_CMIB1 IEN2 -#define IEN_TMR1_OVI1 IEN3 -#define IEN_TMR2_CMIA2 IEN4 -#define IEN_TMR2_CMIB2 IEN5 -#define IEN_TMR2_OVI2 IEN6 -#define IEN_TMR3_CMIA3 IEN7 -#define IEN_TMR3_CMIB3 IEN0 -#define IEN_TMR3_OVI3 IEN1 -#define IEN_DMACA_DMAC0I IEN6 -#define IEN_DMACA_DMAC1I IEN7 -#define IEN_DMACA_DMAC2I IEN0 -#define IEN_DMACA_DMAC3I IEN1 -#define IEN_EXDMAC_EXDMAC0I IEN2 -#define IEN_EXDMAC_EXDMAC1I IEN3 -#define IEN_SCI0_ERI0 IEN6 -#define IEN_SCI0_RXI0 IEN7 -#define IEN_SCI0_TXI0 IEN0 -#define IEN_SCI0_TEI0 IEN1 -#define IEN_SCI1_ERI1 IEN2 -#define IEN_SCI1_RXI1 IEN3 -#define IEN_SCI1_TXI1 IEN4 -#define IEN_SCI1_TEI1 IEN5 -#define IEN_SCI2_ERI2 IEN6 -#define IEN_SCI2_RXI2 IEN7 -#define IEN_SCI2_TXI2 IEN0 -#define IEN_SCI2_TEI2 IEN1 -#define IEN_SCI3_ERI3 IEN2 -#define IEN_SCI3_RXI3 IEN3 -#define IEN_SCI3_TXI3 IEN4 -#define IEN_SCI3_TEI3 IEN5 -#define IEN_SCI5_ERI5 IEN2 -#define IEN_SCI5_RXI5 IEN3 -#define IEN_SCI5_TXI5 IEN4 -#define IEN_SCI5_TEI5 IEN5 -#define IEN_SCI6_ERI6 IEN6 -#define IEN_SCI6_RXI6 IEN7 -#define IEN_SCI6_TXI6 IEN0 -#define IEN_SCI6_TEI6 IEN1 -#define IEN_RIIC0_ICEEI0 IEN6 -#define IEN_RIIC0_ICRXI0 IEN7 -#define IEN_RIIC0_ICTXI0 IEN0 -#define IEN_RIIC0_ICTEI0 IEN1 -#define IEN_RIIC1_ICEEI1 IEN2 -#define IEN_RIIC1_ICRXI1 IEN3 -#define IEN_RIIC1_ICTXI1 IEN4 -#define IEN_RIIC1_ICTEI1 IEN5 - -#define VECT_BSC_BUSERR 16 -#define VECT_FCU_FIFERR 21 -#define VECT_FCU_FRDYI 23 -#define VECT_ICU_SWINT 27 -#define VECT_CMT0_CMI0 28 -#define VECT_CMT1_CMI1 29 -#define VECT_CMT2_CMI2 30 -#define VECT_CMT3_CMI3 31 -#define VECT_ETHER_EINT 32 -#define VECT_USB0_D0FIFO0 36 -#define VECT_USB0_D1FIFO0 37 -#define VECT_USB0_USBI0 38 -#define VECT_USB1_D0FIFO1 40 -#define VECT_USB1_D1FIFO1 41 -#define VECT_USB1_USBI1 42 -#define VECT_RSPI0_SPEI0 44 -#define VECT_RSPI0_SPRI0 45 -#define VECT_RSPI0_SPTI0 46 -#define VECT_RSPI0_SPII0 47 -#define VECT_RSPI1_SPEI1 48 -#define VECT_RSPI1_SPRI1 49 -#define VECT_RSPI1_SPTI1 50 -#define VECT_RSPI1_SPII1 51 -#define VECT_CAN0_ERS0 56 -#define VECT_CAN0_RXF0 57 -#define VECT_CAN0_TXF0 58 -#define VECT_CAN0_RXM0 59 -#define VECT_CAN0_TXM0 60 -#define VECT_RTC_PRD 62 -#define VECT_RTC_CUP 63 -#define VECT_ICU_IRQ0 64 -#define VECT_ICU_IRQ1 65 -#define VECT_ICU_IRQ2 66 -#define VECT_ICU_IRQ3 67 -#define VECT_ICU_IRQ4 68 -#define VECT_ICU_IRQ5 69 -#define VECT_ICU_IRQ6 70 -#define VECT_ICU_IRQ7 71 -#define VECT_ICU_IRQ8 72 -#define VECT_ICU_IRQ9 73 -#define VECT_ICU_IRQ10 74 -#define VECT_ICU_IRQ11 75 -#define VECT_ICU_IRQ12 76 -#define VECT_ICU_IRQ13 77 -#define VECT_ICU_IRQ14 78 -#define VECT_ICU_IRQ15 79 -#define VECT_USB_USBR0 90 -#define VECT_USB_USBR1 91 -#define VECT_RTC_ALM 92 -#define VECT_WDT_WOVI 96 -#define VECT_AD0_ADI0 98 -#define VECT_AD1_ADI1 99 -#define VECT_S12AD_ADI 102 -#define VECT_MTU0_TGIA0 114 -#define VECT_MTU0_TGIB0 115 -#define VECT_MTU0_TGIC0 116 -#define VECT_MTU0_TGID0 117 -#define VECT_MTU0_TCIV0 118 -#define VECT_MTU0_TGIE0 119 -#define VECT_MTU0_TGIF0 120 -#define VECT_MTU1_TGIA1 121 -#define VECT_MTU1_TGIB1 122 -#define VECT_MTU1_TCIV1 123 -#define VECT_MTU1_TCIU1 124 -#define VECT_MTU2_TGIA2 125 -#define VECT_MTU2_TGIB2 126 -#define VECT_MTU2_TCIV2 127 -#define VECT_MTU2_TCIU2 128 -#define VECT_MTU3_TGIA3 129 -#define VECT_MTU3_TGIB3 130 -#define VECT_MTU3_TGIC3 131 -#define VECT_MTU3_TGID3 132 -#define VECT_MTU3_TCIV3 133 -#define VECT_MTU4_TGIA4 134 -#define VECT_MTU4_TGIB4 135 -#define VECT_MTU4_TGIC4 136 -#define VECT_MTU4_TGID4 137 -#define VECT_MTU4_TCIV4 138 -#define VECT_MTU5_TGIU5 139 -#define VECT_MTU5_TGIV5 140 -#define VECT_MTU5_TGIW5 141 -#define VECT_MTU6_TGIA6 142 -#define VECT_MTU6_TGIB6 143 -#define VECT_MTU6_TGIC6 144 -#define VECT_MTU6_TGID6 145 -#define VECT_MTU6_TCIV6 146 -#define VECT_MTU6_TGIE6 147 -#define VECT_MTU6_TGIF6 148 -#define VECT_MTU7_TGIA7 149 -#define VECT_MTU7_TGIB7 150 -#define VECT_MTU7_TCIV7 151 -#define VECT_MTU7_TCIU7 152 -#define VECT_MTU8_TGIA8 153 -#define VECT_MTU8_TGIB8 154 -#define VECT_MTU8_TCIV8 155 -#define VECT_MTU8_TCIU8 156 -#define VECT_MTU9_TGIA9 157 -#define VECT_MTU9_TGIB9 158 -#define VECT_MTU9_TGIC9 159 -#define VECT_MTU9_TGID9 160 -#define VECT_MTU9_TCIV9 161 -#define VECT_MTU10_TGIA10 162 -#define VECT_MTU10_TGIB10 163 -#define VECT_MTU10_TGIC10 164 -#define VECT_MTU10_TGID10 165 -#define VECT_MTU10_TCIV10 166 -#define VECT_MTU11_TGIU11 167 -#define VECT_MTU11_TGIV11 168 -#define VECT_MTU11_TGIW11 169 -#define VECT_POE_OEI1 170 -#define VECT_POE_OEI2 171 -#define VECT_POE_OEI3 172 -#define VECT_POE_OEI4 173 -#define VECT_TMR0_CMIA0 174 -#define VECT_TMR0_CMIB0 175 -#define VECT_TMR0_OVI0 176 -#define VECT_TMR1_CMIA1 177 -#define VECT_TMR1_CMIB1 178 -#define VECT_TMR1_OVI1 179 -#define VECT_TMR2_CMIA2 180 -#define VECT_TMR2_CMIB2 181 -#define VECT_TMR2_OVI2 182 -#define VECT_TMR3_CMIA3 183 -#define VECT_TMR3_CMIB3 184 -#define VECT_TMR3_OVI3 185 -#define VECT_DMACA_DMAC0I 198 -#define VECT_DMACA_DMAC1I 199 -#define VECT_DMACA_DMAC2I 200 -#define VECT_DMACA_DMAC3I 201 -#define VECT_EXDMAC_EXDMAC0I 202 -#define VECT_EXDMAC_EXDMAC1I 203 -#define VECT_SCI0_ERI0 214 -#define VECT_SCI0_RXI0 215 -#define VECT_SCI0_TXI0 216 -#define VECT_SCI0_TEI0 217 -#define VECT_SCI1_ERI1 218 -#define VECT_SCI1_RXI1 219 -#define VECT_SCI1_TXI1 220 -#define VECT_SCI1_TEI1 221 -#define VECT_SCI2_ERI2 222 -#define VECT_SCI2_RXI2 223 -#define VECT_SCI2_TXI2 224 -#define VECT_SCI2_TEI2 225 -#define VECT_SCI3_ERI3 226 -#define VECT_SCI3_RXI3 227 -#define VECT_SCI3_TXI3 228 -#define VECT_SCI3_TEI3 229 -#define VECT_SCI5_ERI5 234 -#define VECT_SCI5_RXI5 235 -#define VECT_SCI5_TXI5 236 -#define VECT_SCI5_TEI5 237 -#define VECT_SCI6_ERI6 238 -#define VECT_SCI6_RXI6 239 -#define VECT_SCI6_TXI6 240 -#define VECT_SCI6_TEI6 241 -#define VECT_RIIC0_ICEEI0 246 -#define VECT_RIIC0_ICRXI0 247 -#define VECT_RIIC0_ICTXI0 248 -#define VECT_RIIC0_ICTEI0 249 -#define VECT_RIIC1_ICEEI1 250 -#define VECT_RIIC1_ICRXI1 251 -#define VECT_RIIC1_ICTXI1 252 -#define VECT_RIIC1_ICTEI1 253 - -#define MSTP_EXDMAC SYSTEM.MSTPCRA.BIT.MSTPA29 -#define MSTP_DMACA SYSTEM.MSTPCRA.BIT.MSTPA28 -#define MSTP_DTC SYSTEM.MSTPCRA.BIT.MSTPA28 -#define MSTP_AD0 SYSTEM.MSTPCRA.BIT.MSTPA23 -#define MSTP_AD1 SYSTEM.MSTPCRA.BIT.MSTPA22 -#define MSTP_DA SYSTEM.MSTPCRA.BIT.MSTPA19 -#define MSTP_S12AD SYSTEM.MSTPCRA.BIT.MSTPA17 -#define MSTP_CMT0 SYSTEM.MSTPCRA.BIT.MSTPA15 -#define MSTP_CMT1 SYSTEM.MSTPCRA.BIT.MSTPA15 -#define MSTP_CMT2 SYSTEM.MSTPCRA.BIT.MSTPA14 -#define MSTP_CMT3 SYSTEM.MSTPCRA.BIT.MSTPA14 -#define MSTP_PPG0 SYSTEM.MSTPCRA.BIT.MSTPA11 -#define MSTP_PPG1 SYSTEM.MSTPCRA.BIT.MSTPA10 -#define MSTP_MTUA SYSTEM.MSTPCRA.BIT.MSTPA9 -#define MSTP_MTU0 SYSTEM.MSTPCRA.BIT.MSTPA9 -#define MSTP_MTU1 SYSTEM.MSTPCRA.BIT.MSTPA9 -#define MSTP_MTU2 SYSTEM.MSTPCRA.BIT.MSTPA9 -#define MSTP_MTU3 SYSTEM.MSTPCRA.BIT.MSTPA9 -#define MSTP_MTU4 SYSTEM.MSTPCRA.BIT.MSTPA9 -#define MSTP_MTU5 SYSTEM.MSTPCRA.BIT.MSTPA9 -#define MSTP_MTUB SYSTEM.MSTPCRA.BIT.MSTPA8 -#define MSTP_MTU6 SYSTEM.MSTPCRA.BIT.MSTPA8 -#define MSTP_MTU7 SYSTEM.MSTPCRA.BIT.MSTPA8 -#define MSTP_MTU8 SYSTEM.MSTPCRA.BIT.MSTPA8 -#define MSTP_MTU9 SYSTEM.MSTPCRA.BIT.MSTPA8 -#define MSTP_MTU10 SYSTEM.MSTPCRA.BIT.MSTPA8 -#define MSTP_MTU11 SYSTEM.MSTPCRA.BIT.MSTPA8 -#define MSTP_TMR0 SYSTEM.MSTPCRA.BIT.MSTPA5 -#define MSTP_TMR1 SYSTEM.MSTPCRA.BIT.MSTPA5 -#define MSTP_TMR01 SYSTEM.MSTPCRA.BIT.MSTPA5 -#define MSTP_TMR2 SYSTEM.MSTPCRA.BIT.MSTPA4 -#define MSTP_TMR3 SYSTEM.MSTPCRA.BIT.MSTPA4 -#define MSTP_TMR23 SYSTEM.MSTPCRA.BIT.MSTPA4 -#define MSTP_SCI0 SYSTEM.MSTPCRB.BIT.MSTPB31 -#define MSTP_SMCI0 SYSTEM.MSTPCRB.BIT.MSTPB31 -#define MSTP_SCI1 SYSTEM.MSTPCRB.BIT.MSTPB30 -#define MSTP_SMCI1 SYSTEM.MSTPCRB.BIT.MSTPB30 -#define MSTP_SCI2 SYSTEM.MSTPCRB.BIT.MSTPB29 -#define MSTP_SMCI2 SYSTEM.MSTPCRB.BIT.MSTPB29 -#define MSTP_SCI3 SYSTEM.MSTPCRB.BIT.MSTPB28 -#define MSTP_SMCI3 SYSTEM.MSTPCRB.BIT.MSTPB28 -#define MSTP_SCI5 SYSTEM.MSTPCRB.BIT.MSTPB26 -#define MSTP_SMCI5 SYSTEM.MSTPCRB.BIT.MSTPB26 -#define MSTP_SCI6 SYSTEM.MSTPCRB.BIT.MSTPB25 -#define MSTP_SMCI6 SYSTEM.MSTPCRB.BIT.MSTPB25 -#define MSTP_CRC SYSTEM.MSTPCRB.BIT.MSTPB23 -#define MSTP_RIIC0 SYSTEM.MSTPCRB.BIT.MSTPB21 -#define MSTP_RIIC1 SYSTEM.MSTPCRB.BIT.MSTPB20 -#define MSTP_USB0 SYSTEM.MSTPCRB.BIT.MSTPB19 -#define MSTP_USB1 SYSTEM.MSTPCRB.BIT.MSTPB18 -#define MSTP_RSPI0 SYSTEM.MSTPCRB.BIT.MSTPB17 -#define MSTP_RSPI1 SYSTEM.MSTPCRB.BIT.MSTPB16 -#define MSTP_EDMAC SYSTEM.MSTPCRB.BIT.MSTPB15 -#define MSTP_CAN0 SYSTEM.MSTPCRB.BIT.MSTPB0 -#define MSTP_RAM0 SYSTEM.MSTPCRC.BIT.MSTPC1 -#define MSTP_RAM1 SYSTEM.MSTPCRC.BIT.MSTPC0 - -#define __IR( x ) ICU.IR[ IR ## x ].BIT.IR -#define _IR( x ) __IR( x ) -#define IR( x , y ) _IR( _ ## x ## _ ## y ) -#define __DTCE( x ) ICU.DTCER[ DTCE ## x ].BIT.DTCE -#define _DTCE( x ) __DTCE( x ) -#define DTCE( x , y ) _DTCE( _ ## x ## _ ## y ) -#define __IEN( x ) ICU.IER[ IER ## x ].BIT.IEN ## x -#define _IEN( x ) __IEN( x ) -#define IEN( x , y ) _IEN( _ ## x ## _ ## y ) -#define __IPR( x ) ICU.IPR[ IPR ## x ].BIT.IPR -#define _IPR( x ) __IPR( x ) -#define IPR( x , y ) _IPR( _ ## x ## _ ## y ) -#define __VECT( x ) VECT ## x -#define _VECT( x ) __VECT( x ) -#define VECT( x , y ) _VECT( _ ## x ## _ ## y ) -#define __MSTP( x ) MSTP ## x -#define _MSTP( x ) __MSTP( x ) -#define MSTP( x ) _MSTP( _ ## x ) - -#define SYSTEM (*(volatile struct st_system *)0x80000) -#define BSC (*(volatile struct st_bsc *)0x81300) -#define DMAC0 (*(volatile struct st_dmac0 *)0x82000) -#define DMAC1 (*(volatile struct st_dmac1 *)0x82040) -#define DMAC2 (*(volatile struct st_dmac1 *)0x82080) -#define DMAC3 (*(volatile struct st_dmac1 *)0x820C0) -#define DMAC (*(volatile struct st_dmac *)0x82200) -#define DTC (*(volatile struct st_dtc *)0x82400) -#define EXDMAC0 (*(volatile struct st_exdmac0 *)0x82800) -#define EXDMAC1 (*(volatile struct st_exdmac0 *)0x82840) -#define EXDMAC (*(volatile struct st_exdmac *)0x82A00) -#define ICU (*(volatile struct st_icu *)0x87000) -#define CMT (*(volatile struct st_cmt *)0x88000) -#define CMT0 (*(volatile struct st_cmt0 *)0x88002) -#define CMT1 (*(volatile struct st_cmt0 *)0x88008) -#define CMT2 (*(volatile struct st_cmt0 *)0x88012) -#define CMT3 (*(volatile struct st_cmt0 *)0x88018) -#define WDT (*(volatile union un_wdt *)0x88028) -#define IWDT (*(volatile struct st_iwdt *)0x88030) -#define AD0 (*(volatile struct st_ad *)0x88040) -#define AD1 (*(volatile struct st_ad *)0x88060) -#define DA (*(volatile struct st_da *)0x880C0) -#define PPG0 (*(volatile struct st_ppg0 *)0x881E6) -#define PPG1 (*(volatile struct st_ppg1 *)0x881F0) -#define TMR0 (*(volatile struct st_tmr0 *)0x88200) -#define TMR1 (*(volatile struct st_tmr1 *)0x88201) -#define TMR01 (*(volatile struct st_tmr01 *)0x88204) -#define TMR2 (*(volatile struct st_tmr0 *)0x88210) -#define TMR3 (*(volatile struct st_tmr1 *)0x88211) -#define TMR23 (*(volatile struct st_tmr01 *)0x88214) -#define SCI0 (*(volatile struct st_sci *)0x88240) -#define SCI1 (*(volatile struct st_sci *)0x88248) -#define SCI2 (*(volatile struct st_sci *)0x88250) -#define SCI3 (*(volatile struct st_sci *)0x88258) -#define SCI5 (*(volatile struct st_sci *)0x88268) -#define SCI6 (*(volatile struct st_sci *)0x88270) -#define SMCI0 (*(volatile struct st_smci *)0x88240) -#define SMCI1 (*(volatile struct st_smci *)0x88248) -#define SMCI2 (*(volatile struct st_smci *)0x88250) -#define SMCI3 (*(volatile struct st_smci *)0x88258) -#define SMCI5 (*(volatile struct st_smci *)0x88268) -#define SMCI6 (*(volatile struct st_smci *)0x88270) -#define CRC (*(volatile struct st_crc *)0x88280) -#define RIIC0 (*(volatile struct st_riic *)0x88300) -#define RIIC1 (*(volatile struct st_riic *)0x88320) -#define RSPI0 (*(volatile struct st_rspi *)0x88380) -#define RSPI1 (*(volatile struct st_rspi *)0x883A0) -#define MTUA (*(volatile struct st_mtu *)0x8860A) -#define MTU0 (*(volatile struct st_mtu0 *)0x88700) -#define MTU1 (*(volatile struct st_mtu1 *)0x88780) -#define MTU2 (*(volatile struct st_mtu2 *)0x88800) -#define MTU3 (*(volatile struct st_mtu3 *)0x88600) -#define MTU4 (*(volatile struct st_mtu4 *)0x88600) -#define MTU5 (*(volatile struct st_mtu5 *)0x88880) -#define POE (*(volatile struct st_poe *)0x88900) -#define MTUB (*(volatile struct st_mtu *)0x88A0A) -#define MTU6 (*(volatile struct st_mtu0 *)0x88B00) -#define MTU7 (*(volatile struct st_mtu1 *)0x88B80) -#define MTU8 (*(volatile struct st_mtu2 *)0x88C00) -#define MTU9 (*(volatile struct st_mtu3 *)0x88A00) -#define MTU10 (*(volatile struct st_mtu4 *)0x88A00) -#define MTU11 (*(volatile struct st_mtu5 *)0x88C80) -#define S12AD (*(volatile struct st_s12ad *)0x89000) -#define PORT0 (*(volatile struct st_port0 *)0x8C000) -#define PORT1 (*(volatile struct st_port1 *)0x8C001) -#define PORT2 (*(volatile struct st_port2 *)0x8C002) -#define PORT3 (*(volatile struct st_port3 *)0x8C003) -#define PORT4 (*(volatile struct st_port4 *)0x8C004) -#define PORT5 (*(volatile struct st_port5 *)0x8C005) -#define PORT6 (*(volatile struct st_port6 *)0x8C006) -#define PORT7 (*(volatile struct st_port7 *)0x8C007) -#define PORT8 (*(volatile struct st_port8 *)0x8C008) -#define PORT9 (*(volatile struct st_port9 *)0x8C009) -#define PORTA (*(volatile struct st_porta *)0x8C00A) -#define PORTB (*(volatile struct st_portb *)0x8C00B) -#define PORTC (*(volatile struct st_portc *)0x8C00C) -#define PORTD (*(volatile struct st_portd *)0x8C00D) -#define PORTE (*(volatile struct st_porte *)0x8C00E) -#define PORTF (*(volatile struct st_portf *)0x8C00F) -#define PORTG (*(volatile struct st_portg *)0x8C010) -#define IOPORT (*(volatile struct st_ioport *)0x8C100) -#define FLASH (*(volatile struct st_flash *)0x8C288) -#define RTC (*(volatile struct st_rtc *)0x8C400) -#define CAN0 (*(volatile struct st_can *)0x90200) -#define USB0 (*(volatile struct st_usb0 *)0xA0000) -#define USB1 (*(volatile struct st_usb0 *)0xA0200) -#define USB (*(volatile struct st_usb *)0xA0400) -#define EDMAC (*(volatile struct st_edmac *)0xC0000) -#define ETHERC (*(volatile struct st_etherc *)0xC0100) - -#endif /*endian*/ - -#endif /*IODEFINE_H*/ diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/include/rskrx62ndef.h b/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/include/rskrx62ndef.h deleted file mode 100644 index 5077d7425..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/include/rskrx62ndef.h +++ /dev/null @@ -1,98 +0,0 @@ - -/****************************************************************************** -* DISCLAIMER -* Please refer to http://www.renesas.com/disclaimer -****************************************************************************** - Copyright (C) 2008. Renesas Technology Corp., All Rights Reserved. -******************************************************************************* -* File Name : rsksh7216.h -* Version : 1.00 -* Description : RSK 7216 board specific settings -****************************************************************************** -* History : DD.MM.YYYY Version Description -* : 06.10.2009 1.00 First Release -******************************************************************************/ - -#ifndef RSKRX62N_H -#define RSKRX62N_H - -/****************************************************************************** -Includes , "Project Includes" -******************************************************************************/ - -/****************************************************************************** -Typedef definitions -******************************************************************************/ - -/****************************************************************************** -Macro definitions -******************************************************************************/ - -/* System Clock Settings */ -#define XTAL_FREQUENCY (12000000L) -#define ICLK_MUL (8) -#define PCLK_MUL (4) -#define BCLK_MUL (4) -#define ICLK_FREQUENCY (XTAL_FREQUENCY * ICLK_MUL) -#define PCLK_FREQUENCY (XTAL_FREQUENCY * PCLK_MUL) -#define BCLK_FREQUENCY (XTAL_FREQUENCY * BCLK_MUL) - -#define CMT0_CLK_SELECT (512) - -/* General Values */ -#define LED_ON (0) -#define LED_OFF (1) -#define SET_BIT_HIGH (1) -#define SET_BIT_LOW (0) -#define SET_BYTE_HIGH (0xFF) -#define SET_BYTE_LOW (0x00) - -/* Define switches to be polled if not available as interrupts */ -#define SW_ACTIVE FALSE -#define SW1 PORT0.DR.BIT.B0 -#define SW2 PORT0.DR.BIT.B1 -#define SW3 PORT0.DR.BIT.B7 -#define SW1_DDR PORT0.DDR.BIT.B0 -#define SW2_DDR PORT0.DDR.BIT.B1 -#define SW3_DDR PORT0.DDR.BIT.B7 -#define SW1_ICR PORT0.ICR.BIT.B0 -#define SW2_ICR PORT0.ICR.BIT.B1 -#define SW3_ICR PORT0.ICR.BIT.B7 - -/* LEDs */ -#define LED0 PORT0.DR.BIT.B2 -#define LED1 PORT0.DR.BIT.B3 -#define LED2 PORT0.DR.BIT.B5 -#define LED3 PORT3.DR.BIT.B4 -#define LED4 PORT6.DR.BIT.B0 -#define LED5 PORT7.DR.BIT.B3 -#define LED0_DDR PORT0.DDR.BIT.B2 -#define LED1_DDR PORT0.DDR.BIT.B3 -#define LED2_DDR PORT0.DDR.BIT.B5 -#define LED3_DDR PORT3.DDR.BIT.B4 -#define LED4_DDR PORT6.DDR.BIT.B0 -#define LED5_DDR PORT7.DDR.BIT.B3 - -/* 2x8 segment LCD */ -#define LCD_RS PORT8.DR.BIT.B4 -#define LCD_EN PORT8.DR.BIT.B5 -#define LCD_DATA PORT9.DR.BYTE -#define LCD_RS_DDR PORT8.DDR.BIT.B4 -#define LCD_EN_DDR PORT8.DDR.BIT.B5 -#define LCD_DATA_DDR PORT9.DDR.BYTE - - - -/****************************************************************************** -Variable Externs -******************************************************************************/ - -/****************************************************************************** -Functions Prototypes -******************************************************************************/ - - - -/* RSKRX62N_H */ -#endif - diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/include/typedefine.h b/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/include/typedefine.h deleted file mode 100644 index 49b303a56..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/include/typedefine.h +++ /dev/null @@ -1,23 +0,0 @@ -/***********************************************************************/ -/* */ -/* FILE :typedefine.h */ -/* DATE :Wed, Aug 25, 2010 */ -/* DESCRIPTION :Aliases of Integer Type */ -/* CPU TYPE :Other */ -/* */ -/* This file is generated by KPIT GNU Project Generator. */ -/* */ -/***********************************************************************/ - - - -typedef signed char _SBYTE; -typedef unsigned char _UBYTE; -typedef signed short _SWORD; -typedef unsigned short _UWORD; -typedef signed int _SINT; -typedef unsigned int _UINT; -typedef signed long _SDWORD; -typedef unsigned long _UDWORD; -typedef signed long long _SQWORD; -typedef unsigned long long _UQWORD; diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/main-blinky.c b/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/main-blinky.c deleted file mode 100644 index 0abb8a674..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/main-blinky.c +++ /dev/null @@ -1,204 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* - * This is a very simple demo that creates two tasks and one queue. One task - * (the queue receive task) blocks on the queue to wait for data to arrive, - * toggling an LED each time '100' is received. The other task (the queue send - * task) repeatedly blocks for a fixed period before sending '100' to the queue - * (causing the first task to toggle the LED). - * - * For a much more complete and complex example select either the Debug or - * Debug_with_optimisation build configurations within the HEW IDE. -*/ - -/* Hardware specific includes. */ -#include "iodefine.h" - -/* Kernel includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "queue.h" - -/* Demo includes. */ -#include "ParTest.h" - -/* Priorities at which the tasks are created. */ -#define configQUEUE_RECEIVE_TASK_PRIORITY ( tskIDLE_PRIORITY + 2 ) -#define configQUEUE_SEND_TASK_PRIORITY ( tskIDLE_PRIORITY + 1 ) - -/* The rate at which data is sent to the queue, specified in milliseconds. */ -#define mainQUEUE_SEND_FREQUENCY_MS ( 500 / portTICK_PERIOD_MS ) - -/* The number of items the queue can hold. This is 1 as the receive task -will remove items as they are added so the send task should always find the -queue empty. */ -#define mainQUEUE_LENGTH ( 1 ) - -/* - * The tasks as defined at the top of this file. - */ -static void prvQueueReceiveTask( void *pvParameters ); -static void prvQueueSendTask( void *pvParameters ); - -/* The queue used by both tasks. */ -static QueueHandle_t xQueue = NULL; - -/*-----------------------------------------------------------*/ - -int main(void) -{ -extern void HardwareSetup( void ); - - /* Renesas provided CPU configuration routine. The clocks are configured in - here. */ - HardwareSetup(); - - /* Turn all LEDs off. */ - vParTestInitialise(); - - /* Create the queue. */ - xQueue = xQueueCreate( mainQUEUE_LENGTH, sizeof( unsigned long ) ); - - if( xQueue != NULL ) - { - /* Start the two tasks as described at the top of this file. */ - xTaskCreate( prvQueueReceiveTask, "Rx", configMINIMAL_STACK_SIZE, NULL, configQUEUE_RECEIVE_TASK_PRIORITY, NULL ); - xTaskCreate( prvQueueSendTask, "TX", configMINIMAL_STACK_SIZE, NULL, configQUEUE_SEND_TASK_PRIORITY, NULL ); - - /* Start the tasks running. */ - vTaskStartScheduler(); - } - - /* If all is well we will never reach here as the scheduler will now be - running. If we do reach here then it is likely that there was insufficient - heap available for the idle task to be created. */ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -static void prvQueueSendTask( void *pvParameters ) -{ -TickType_t xNextWakeTime; -const unsigned long ulValueToSend = 100UL; - - /* Initialise xNextWakeTime - this only needs to be done once. */ - xNextWakeTime = xTaskGetTickCount(); - - for( ;; ) - { - /* Place this task in the blocked state until it is time to run again. - The block state is specified in ticks, the constant used converts ticks - to ms. */ - vTaskDelayUntil( &xNextWakeTime, mainQUEUE_SEND_FREQUENCY_MS ); - - /* Send to the queue - causing the queue receive task to flash its LED. 0 - is used so the send does not block - it shouldn't need to as the queue - should always be empty here. */ - xQueueSend( xQueue, &ulValueToSend, 0 ); - } -} -/*-----------------------------------------------------------*/ - -static void prvQueueReceiveTask( void *pvParameters ) -{ -unsigned long ulReceivedValue; - - for( ;; ) - { - /* Wait until something arives in the queue - this will block - indefinitely provided INCLUDE_vTaskSuspend is set to 1 in - FreeRTOSConfig.h. */ - xQueueReceive( xQueue, &ulReceivedValue, portMAX_DELAY ); - - /* To get here something must have arrived, but is it the expected - value? If it is, toggle the LED. */ - if( ulReceivedValue == 100UL ) - { - vParTestToggleLED( 0 ); - } - } -} -/*-----------------------------------------------------------*/ - -void vApplicationSetupTimerInterrupt( void ) -{ - /* Enable compare match timer 0. */ - MSTP( CMT0 ) = 0; - - /* Interrupt on compare match. */ - CMT0.CMCR.BIT.CMIE = 1; - - /* Set the compare match value. */ - CMT0.CMCOR = ( unsigned short ) ( ( ( configPERIPHERAL_CLOCK_HZ / configTICK_RATE_HZ ) -1 ) / 8 ); - - /* Divide the PCLK by 8. */ - CMT0.CMCR.BIT.CKS = 0; - - /* Enable the interrupt... */ - _IEN( _CMT0_CMI0 ) = 1; - - /* ...and set its priority to the application defined kernel priority. */ - _IPR( _CMT0_CMI0 ) = configKERNEL_INTERRUPT_PRIORITY; - - /* Start the timer. */ - CMT.CMSTR0.BIT.STR0 = 1; -} -/*-----------------------------------------------------------*/ - -/* This function is explained by the comments above its prototype at the top -of this file. */ -void vApplicationMallocFailedHook( void ) -{ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -/* This function is explained by the comments above its prototype at the top -of this file. */ -void vApplicationStackOverflowHook( TaskHandle_t pxTask, char *pcTaskName ) -{ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -/* This function is explained by the comments above its prototype at the top -of this file. */ -void vApplicationIdleHook( void ) -{ -} -/*-----------------------------------------------------------*/ - -/* The following four functions are here just to allow all three build -configurations to use the same vector table. They are not used in this -demo, but linker errors will result if they are not defined. They can -be ignored. */ -void vT0_1_ISR_Handler( void ) {} -void vT2_3_ISR_Handler( void ) {} -void vEMAC_ISR_Handler( void ) {} -void vTimer2_ISR_Handler( void ) {} -volatile unsigned long ulHighFrequencyTickCount = 0; \ No newline at end of file diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/main-full.c b/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/main-full.c deleted file mode 100644 index bf6c385e7..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/main-full.c +++ /dev/null @@ -1,647 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* **************************************************************************** - * This project includes a lot of tasks and tests and is therefore complex. - * If you would prefer a much simpler project to get started with then select - * the 'Blinky' build configuration within the HEW IDE. - * **************************************************************************** - * - * Creates all the demo application tasks, then starts the scheduler. The web - * documentation provides more details of the standard demo application tasks, - * which provide no particular functionality but do provide a good example of - * how to use the FreeRTOS API. The tasks defined in flop.c are included in the - * set of standard demo tasks to ensure the floating point unit gets some - * exercise. - * - * In addition to the standard demo tasks, the following tasks and tests are - * defined and/or created within this file: - * - * Webserver ("uIP") task - This serves a number of dynamically generated WEB - * pages to a standard WEB browser. The IP and MAC addresses are configured by - * constants defined at the bottom of FreeRTOSConfig.h. Use either a standard - * Ethernet cable to connect through a hug, or a cross over (point to point) - * cable to connect directly. Ensure the IP address used is compatible with the - * IP address of the machine running the browser - the easiest way to achieve - * this is to ensure the first three octets of the IP addresses are the same. - * - * "Reg test" tasks - These fill the registers with known values, then check - * that each register still contains its expected value. Each task uses - * different values. The tasks run with very low priority so get preempted - * very frequently. A check variable is incremented on each iteration of the - * test loop. A register containing an unexpected value is indicative of an - * error in the context switching mechanism and will result in a branch to a - * null loop - which in turn will prevent the check variable from incrementing - * any further and allow the check task (described below) to determine that an - * error has occurred. The nature of the reg test tasks necessitates that they - * are written in assembly code. - * - * "Check" task - This only executes every five seconds but has a high priority - * to ensure it gets processor time. Its main function is to check that all the - * standard demo tasks are still operational. While no errors have been - * discovered the check task will toggle LED 5 every 5 seconds - the toggle - * rate increasing to 200ms being a visual indication that at least one task has - * reported unexpected behaviour. - * - * "High frequency timer test" - A high frequency periodic interrupt is - * generated using a timer - the interrupt is assigned a priority above - * configMAX_SYSCALL_INTERRUPT_PRIORITY so should not be effected by anything - * the kernel is doing. The frequency and priority of the interrupt, in - * combination with other standard tests executed in this demo, should result - * in interrupts nesting at least 3 and probably 4 deep. This test is only - * included in build configurations that have the optimiser switched on. In - * optimised builds the count of high frequency ticks is used as the time base - * for the run time stats. - * - * *NOTE 1* If LED5 is toggling every 5 seconds then all the demo application - * tasks are executing as expected and no errors have been reported in any - * tasks. The toggle rate increasing to 200ms indicates that at least one task - * has reported unexpected behaviour. - * - * *NOTE 2* vApplicationSetupTimerInterrupt() is called by the kernel to let - * the application set up a timer to generate the tick interrupt. In this - * example a compare match timer is used for this purpose. - * - * *NOTE 3* The CPU must be in Supervisor mode when the scheduler is started. - * The PowerON_Reset_PC() supplied in resetprg.c with this demo has - * Change_PSW_PM_to_UserMode() commented out to ensure this is the case. - * - * *NOTE 4* The IntQueue common demo tasks test interrupt nesting and make use - * of all the 8bit timers (as two cascaded 16bit units). -*/ - -/* Hardware specific includes. */ -#include "iodefine.h" - -/* Kernel includes. */ -#include "FreeRTOS.h" -#include "task.h" - -/* Standard demo includes. */ -#include "partest.h" -#include "flash.h" -#include "IntQueue.h" -#include "BlockQ.h" -#include "death.h" -#include "integer.h" -#include "blocktim.h" -#include "semtest.h" -#include "PollQ.h" -#include "GenQTest.h" -#include "QPeek.h" -#include "recmutex.h" -#include "flop.h" - -/* Values that are passed into the reg test tasks using the task parameter. The -tasks check that the values are passed in correctly. */ -#define mainREG_TEST_1_PARAMETER ( 0x12121212UL ) -#define mainREG_TEST_2_PARAMETER ( 0x12345678UL ) - -/* Priorities at which the tasks are created. */ -#define mainCHECK_TASK_PRIORITY ( configMAX_PRIORITIES - 1 ) -#define mainQUEUE_POLL_PRIORITY ( tskIDLE_PRIORITY + 1 ) -#define mainSEM_TEST_PRIORITY ( tskIDLE_PRIORITY + 1 ) -#define mainBLOCK_Q_PRIORITY ( tskIDLE_PRIORITY + 2 ) -#define mainCREATOR_TASK_PRIORITY ( tskIDLE_PRIORITY + 3 ) -#define mainFLASH_TASK_PRIORITY ( tskIDLE_PRIORITY + 1 ) -#define mainuIP_TASK_PRIORITY ( tskIDLE_PRIORITY + 2 ) -#define mainINTEGER_TASK_PRIORITY ( tskIDLE_PRIORITY ) -#define mainGEN_QUEUE_TASK_PRIORITY ( tskIDLE_PRIORITY ) -#define mainFLOP_TASK_PRIORITY ( tskIDLE_PRIORITY ) - -/* The WEB server uses string handling functions, which in turn use a bit more -stack than most of the other tasks. */ -#define mainuIP_STACK_SIZE ( configMINIMAL_STACK_SIZE * 3 ) - -/* The LED toggled by the check task. */ -#define mainCHECK_LED ( 5 ) - -/* The rate at which mainCHECK_LED will toggle when all the tasks are running -without error. Controlled by the check task as described at the top of this -file. */ -#define mainNO_ERROR_CYCLE_TIME ( 5000 / portTICK_PERIOD_MS ) - -/* The rate at which mainCHECK_LED will toggle when an error has been reported -by at least one task. Controlled by the check task as described at the top of -this file. */ -#define mainERROR_CYCLE_TIME ( 200 / portTICK_PERIOD_MS ) - - -/* - * vApplicationMallocFailedHook() will only be called if - * configUSE_MALLOC_FAILED_HOOK is set to 1 in FreeRTOSConfig.h. It is a hook - * function that will execute if a call to pvPortMalloc() fails. - * pvPortMalloc() is called internally by the kernel whenever a task, queue or - * semaphore is created. It is also called by various parts of the demo - * application. - */ -void vApplicationMallocFailedHook( void ); - -/* - * vApplicationIdleHook() will only be called if configUSE_IDLE_HOOK is set to 1 - * in FreeRTOSConfig.h. It is a hook function that is called on each iteration - * of the idle task. It is essential that code added to this hook function - * never attempts to block in any way (for example, call xQueueReceive() with - * a block time specified). If the application makes use of the vTaskDelete() - * API function (as this demo application does) then it is also important that - * vApplicationIdleHook() is permitted to return to its calling function because - * it is the responsibility of the idle task to clean up memory allocated by the - * kernel to any task that has since been deleted. - */ -void vApplicationIdleHook( void ); - -/* - * vApplicationStackOverflowHook() will only be called if - * configCHECK_FOR_STACK_OVERFLOW is set to a non-zero value. The handle and - * name of the offending task should be passed in the function parameters, but - * it is possible that the stack overflow will have corrupted these - in which - * case pxCurrentTCB can be inspected to find the same information. - */ -void vApplicationStackOverflowHook( TaskHandle_t pxTask, char *pcTaskName ); - -/* - * The reg test tasks as described at the top of this file. - */ -static void prvRegTest1Task( void *pvParameters ); -static void prvRegTest2Task( void *pvParameters ); - -/* - * The actual implementation of the reg test functionality, which, because of - * the direct register access, have to be in assembly. - */ -static void prvRegTest1Implementation( void ) __attribute__((naked)); -static void prvRegTest2Implementation( void ) __attribute__((naked)); - - -/* - * The check task as described at the top of this file. - */ -static void prvCheckTask( void *pvParameters ); - -/* - * Contains the implementation of the WEB server. - */ -extern void vuIP_Task( void *pvParameters ); - -/*-----------------------------------------------------------*/ - -/* Variables that are incremented on each iteration of the reg test tasks - -provided the tasks have not reported any errors. The check task inspects these -variables to ensure they are still incrementing as expected. If a variable -stops incrementing then it is likely that its associate task has stalled. */ -unsigned long ulRegTest1CycleCount = 0UL, ulRegTest2CycleCount = 0UL; - -/* The status message that is displayed at the bottom of the "task stats" web -page, which is served by the uIP task. This will report any errors picked up -by the reg test task. */ -static const char *pcStatusMessage = NULL; - -/*-----------------------------------------------------------*/ - -int main(void) -{ -extern void HardwareSetup( void ); - - /* Renesas provided CPU configuration routine. The clocks are configured in - here. */ - HardwareSetup(); - - /* Turn all LEDs off. */ - vParTestInitialise(); - - /* Start the reg test tasks which test the context switching mechanism. */ - xTaskCreate( prvRegTest1Task, "RegTst1", configMINIMAL_STACK_SIZE, ( void * ) mainREG_TEST_1_PARAMETER, tskIDLE_PRIORITY, NULL ); - xTaskCreate( prvRegTest2Task, "RegTst2", configMINIMAL_STACK_SIZE, ( void * ) mainREG_TEST_2_PARAMETER, tskIDLE_PRIORITY, NULL ); - - /* The web server task. */ - xTaskCreate( vuIP_Task, "uIP", mainuIP_STACK_SIZE, NULL, mainuIP_TASK_PRIORITY, NULL ); - - /* Start the check task as described at the top of this file. */ - xTaskCreate( prvCheckTask, "Check", configMINIMAL_STACK_SIZE, NULL, mainCHECK_TASK_PRIORITY, NULL ); - - /* Create the standard demo tasks. */ - vStartBlockingQueueTasks( mainBLOCK_Q_PRIORITY ); - vCreateBlockTimeTasks(); - vStartSemaphoreTasks( mainSEM_TEST_PRIORITY ); - vStartPolledQueueTasks( mainQUEUE_POLL_PRIORITY ); - vStartIntegerMathTasks( mainINTEGER_TASK_PRIORITY ); - vStartGenericQueueTasks( mainGEN_QUEUE_TASK_PRIORITY ); - vStartLEDFlashTasks( mainFLASH_TASK_PRIORITY ); - vStartQueuePeekTasks(); - vStartRecursiveMutexTasks(); - vStartInterruptQueueTasks(); - vStartMathTasks( mainFLOP_TASK_PRIORITY ); - - /* The suicide tasks must be created last as they need to know how many - tasks were running prior to their creation in order to ascertain whether - or not the correct/expected number of tasks are running at any given time. */ - vCreateSuicidalTasks( mainCREATOR_TASK_PRIORITY ); - - /* Start the tasks running. */ - vTaskStartScheduler(); - - /* If all is well we will never reach here as the scheduler will now be - running. If we do reach here then it is likely that there was insufficient - heap available for the idle task to be created. */ - for( ;; ); - - return 0; -} -/*-----------------------------------------------------------*/ - -static void prvCheckTask( void *pvParameters ) -{ -static volatile unsigned long ulLastRegTest1CycleCount = 0UL, ulLastRegTest2CycleCount = 0UL; -TickType_t xNextWakeTime, xCycleFrequency = mainNO_ERROR_CYCLE_TIME; -extern void vSetupHighFrequencyTimer( void ); - - /* If this is being executed then the kernel has been started. Start the high - frequency timer test as described at the top of this file. This is only - included in the optimised build configuration - otherwise it takes up too much - CPU time. */ - #ifdef INCLUDE_HIGH_FREQUENCY_TIMER_TEST - vSetupHighFrequencyTimer(); - #endif - - /* Initialise xNextWakeTime - this only needs to be done once. */ - xNextWakeTime = xTaskGetTickCount(); - - for( ;; ) - { - /* Place this task in the blocked state until it is time to run again. */ - vTaskDelayUntil( &xNextWakeTime, xCycleFrequency ); - - /* Check the standard demo tasks are running without error. */ - if( xAreGenericQueueTasksStillRunning() != pdTRUE ) - { - pcStatusMessage = "Error: GenQueue"; - } - else if( xAreQueuePeekTasksStillRunning() != pdTRUE ) - { - pcStatusMessage = "Error: QueuePeek\r\n"; - } - else if( xAreBlockingQueuesStillRunning() != pdTRUE ) - { - pcStatusMessage = "Error: BlockQueue\r\n"; - } - else if( xAreBlockTimeTestTasksStillRunning() != pdTRUE ) - { - pcStatusMessage = "Error: BlockTime\r\n"; - } - else if( xAreSemaphoreTasksStillRunning() != pdTRUE ) - { - pcStatusMessage = "Error: SemTest\r\n"; - } - else if( xArePollingQueuesStillRunning() != pdTRUE ) - { - pcStatusMessage = "Error: PollQueue\r\n"; - } - else if( xIsCreateTaskStillRunning() != pdTRUE ) - { - pcStatusMessage = "Error: Death\r\n"; - } - else if( xAreIntegerMathsTaskStillRunning() != pdTRUE ) - { - pcStatusMessage = "Error: IntMath\r\n"; - } - else if( xAreRecursiveMutexTasksStillRunning() != pdTRUE ) - { - pcStatusMessage = "Error: RecMutex\r\n"; - } - else if( xAreIntQueueTasksStillRunning() != pdPASS ) - { - pcStatusMessage = "Error: IntQueue\r\n"; - } - else if( xAreMathsTaskStillRunning() != pdPASS ) - { - pcStatusMessage = "Error: Flop\r\n"; - } - - /* Check the reg test tasks are still cycling. They will stop incrementing - their loop counters if they encounter an error. */ - if( ulRegTest1CycleCount == ulLastRegTest1CycleCount ) - { - pcStatusMessage = "Error: RegTest1\r\n"; - } - - if( ulRegTest2CycleCount == ulLastRegTest2CycleCount ) - { - pcStatusMessage = "Error: RegTest2\r\n"; - } - - ulLastRegTest1CycleCount = ulRegTest1CycleCount; - ulLastRegTest2CycleCount = ulRegTest2CycleCount; - - /* Toggle the check LED to give an indication of the system status. If - the LED toggles every 5 seconds then everything is ok. A faster toggle - indicates an error. */ - vParTestToggleLED( mainCHECK_LED ); - - /* Ensure the LED toggles at a faster rate if an error has occurred. */ - if( pcStatusMessage != NULL ) - { - /* Increase the rate at which this task cycles, which will increase the - rate at which mainCHECK_LED flashes to give visual feedback that an error - has occurred. */ - xCycleFrequency = mainERROR_CYCLE_TIME; - } - } -} -/*-----------------------------------------------------------*/ - -/* The RX port uses this callback function to configure its tick interrupt. -This allows the application to choose the tick interrupt source. */ -void vApplicationSetupTimerInterrupt( void ) -{ - /* Enable compare match timer 0. */ - MSTP( CMT0 ) = 0; - - /* Interrupt on compare match. */ - CMT0.CMCR.BIT.CMIE = 1; - - /* Set the compare match value. */ - CMT0.CMCOR = ( unsigned short ) ( ( ( configPERIPHERAL_CLOCK_HZ / configTICK_RATE_HZ ) -1 ) / 8 ); - - /* Divide the PCLK by 8. */ - CMT0.CMCR.BIT.CKS = 0; - - /* Enable the interrupt... */ - _IEN( _CMT0_CMI0 ) = 1; - - /* ...and set its priority to the application defined kernel priority. */ - _IPR( _CMT0_CMI0 ) = configKERNEL_INTERRUPT_PRIORITY; - - /* Start the timer. */ - CMT.CMSTR0.BIT.STR0 = 1; -} -/*-----------------------------------------------------------*/ - -/* This function is explained by the comments above its prototype at the top -of this file. */ -void vApplicationMallocFailedHook( void ) -{ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -/* This function is explained by the comments above its prototype at the top -of this file. */ -void vApplicationStackOverflowHook( TaskHandle_t pxTask, char *pcTaskName ) -{ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -/* This function is explained by the comments above its prototype at the top -of this file. */ -void vApplicationIdleHook( void ) -{ -} -/*-----------------------------------------------------------*/ - -/* This function is explained in the comments at the top of this file. */ -static void prvRegTest1Task( void *pvParameters ) -{ - if( ( ( unsigned long ) pvParameters ) != mainREG_TEST_1_PARAMETER ) - { - /* The parameter did not contain the expected value. */ - for( ;; ) - { - /* Stop the tick interrupt so its obvious something has gone wrong. */ - taskDISABLE_INTERRUPTS(); - } - } - - /* This is an asm function that never returns. */ - prvRegTest1Implementation(); -} -/*-----------------------------------------------------------*/ - -/* This function is explained in the comments at the top of this file. */ -static void prvRegTest2Task( void *pvParameters ) -{ - if( ( ( unsigned long ) pvParameters ) != mainREG_TEST_2_PARAMETER ) - { - /* The parameter did not contain the expected value. */ - for( ;; ) - { - /* Stop the tick interrupt so its obvious something has gone wrong. */ - taskDISABLE_INTERRUPTS(); - } - } - - /* This is an asm function that never returns. */ - prvRegTest2Implementation(); -} -/*-----------------------------------------------------------*/ - -char *pcGetTaskStatusMessage( void ) -{ - /* Not bothered about a critical section here although technically because of - the task priorities the pointer could change it will be atomic if not near - atomic and its not critical. */ - if( pcStatusMessage == NULL ) - { - return "All tasks running without error"; - } - else - { - return ( char * ) pcStatusMessage; - } -} -/*-----------------------------------------------------------*/ - -/* This function is explained in the comments at the top of this file. */ -static void prvRegTest1Implementation( void ) -{ - __asm volatile - ( - /* Put a known value in each register. */ - "MOV #1, R1 \n" \ - "MOV #2, R2 \n" \ - "MOV #3, R3 \n" \ - "MOV #4, R4 \n" \ - "MOV #5, R5 \n" \ - "MOV #6, R6 \n" \ - "MOV #7, R7 \n" \ - "MOV #8, R8 \n" \ - "MOV #9, R9 \n" \ - "MOV #10, R10 \n" \ - "MOV #11, R11 \n" \ - "MOV #12, R12 \n" \ - "MOV #13, R13 \n" \ - "MOV #14, R14 \n" \ - "MOV #15, R15 \n" \ - - /* Loop, checking each iteration that each register still contains the - expected value. */ - "TestLoop1: \n" \ - - /* Push the registers that are going to get clobbered. */ - "PUSHM R14-R15 \n" \ - - /* Increment the loop counter to show this task is still getting CPU time. */ - "MOV #_ulRegTest1CycleCount, R14 \n" \ - "MOV [ R14 ], R15 \n" \ - "ADD #1, R15 \n" \ - "MOV R15, [ R14 ] \n" \ - - /* Yield to extend the test coverage. Set the bit in the ITU SWINTR register. */ - "MOV #1, R14 \n" \ - "MOV #0872E0H, R15 \n" \ - "MOV.B R14, [R15] \n" \ - "NOP \n" \ - "NOP \n" \ - - /* Restore the clobbered registers. */ - "POPM R14-R15 \n" \ - - /* Now compare each register to ensure it still contains the value that was - set before this loop was entered. */ - "CMP #1, R1 \n" \ - "BNE RegTest1Error \n" \ - "CMP #2, R2 \n" \ - "BNE RegTest1Error \n" \ - "CMP #3, R3 \n" \ - "BNE RegTest1Error \n" \ - "CMP #4, R4 \n" \ - "BNE RegTest1Error \n" \ - "CMP #5, R5 \n" \ - "BNE RegTest1Error \n" \ - "CMP #6, R6 \n" \ - "BNE RegTest1Error \n" \ - "CMP #7, R7 \n" \ - "BNE RegTest1Error \n" \ - "CMP #8, R8 \n" \ - "BNE RegTest1Error \n" \ - "CMP #9, R9 \n" \ - "BNE RegTest1Error \n" \ - "CMP #10, R10 \n" \ - "BNE RegTest1Error \n" \ - "CMP #11, R11 \n" \ - "BNE RegTest1Error \n" \ - "CMP #12, R12 \n" \ - "BNE RegTest1Error \n" \ - "CMP #13, R13 \n" \ - "BNE RegTest1Error \n" \ - "CMP #14, R14 \n" \ - "BNE RegTest1Error \n" \ - "CMP #15, R15 \n" \ - "BNE RegTest1Error \n" \ - - /* All comparisons passed, start a new itteratio of this loop. */ - "BRA TestLoop1 \n" \ - - "RegTest1Error: \n" \ - /* A compare failed, just loop here so the loop counter stops incrementing - - causing the check task to indicate the error. */ - "BRA RegTest1Error " - ); -} -/*-----------------------------------------------------------*/ - -/* This function is explained in the comments at the top of this file. */ -static void prvRegTest2Implementation( void ) -{ - __asm volatile - ( - /* Put a known value in each register. */ - "MOV #10H, R1 \n" \ - "MOV #20H, R2 \n" \ - "MOV #30H, R3 \n" \ - "MOV #40H, R4 \n" \ - "MOV #50H, R5 \n" \ - "MOV #60H, R6 \n" \ - "MOV #70H, R7 \n" \ - "MOV #80H, R8 \n" \ - "MOV #90H, R9 \n" \ - "MOV #100H, R10 \n" \ - "MOV #110H, R11 \n" \ - "MOV #120H, R12 \n" \ - "MOV #130H, R13 \n" \ - "MOV #140H, R14 \n" \ - "MOV #150H, R15 \n" \ - - /* Loop, checking each iteration that each register still contains the - expected value. */ - "TestLoop2: \n" \ - - /* Push the registers that are going to get clobbered. */ - "PUSHM R14-R15 \n" \ - - /* Increment the loop counter to show this task is still getting CPU time. */ - "MOV #_ulRegTest2CycleCount, R14 \n" \ - "MOV [ R14 ], R15 \n" \ - "ADD #1, R15 \n" \ - "MOV R15, [ R14 ] \n" \ - - /* Restore the clobbered registers. */ - "POPM R14-R15 \n" \ - - /* Now compare each register to ensure it still contains the value that was - set before this loop was entered. */ - "CMP #10H, R1 \n" \ - "BNE RegTest2Error \n" \ - "CMP #20H, R2 \n" \ - "BNE RegTest2Error \n" \ - "CMP #30H, R3 \n" \ - "BNE RegTest2Error \n" \ - "CMP #40H, R4 \n" \ - "BNE RegTest2Error \n" \ - "CMP #50H, R5 \n" \ - "BNE RegTest2Error \n" \ - "CMP #60H, R6 \n" \ - "BNE RegTest2Error \n" \ - "CMP #70H, R7 \n" \ - "BNE RegTest2Error \n" \ - "CMP #80H, R8 \n" \ - "BNE RegTest2Error \n" \ - "CMP #90H, R9 \n" \ - "BNE RegTest2Error \n" \ - "CMP #100H, R10 \n" \ - "BNE RegTest2Error \n" \ - "CMP #110H, R11 \n" \ - "BNE RegTest2Error \n" \ - "CMP #120H, R12 \n" \ - "BNE RegTest2Error \n" \ - "CMP #130H, R13 \n" \ - "BNE RegTest2Error \n" \ - "CMP #140H, R14 \n" \ - "BNE RegTest2Error \n" \ - "CMP #150H, R15 \n" \ - "BNE RegTest2Error \n" \ - - /* All comparisons passed, start a new itteratio of this loop. */ - "BRA TestLoop2 \n" \ - - "RegTest2Error: \n" \ - /* A compare failed, just loop here so the loop counter stops incrementing - - causing the check task to indicate the error. */ - "BRA RegTest2Error " - ); -} - diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/uIP_Task.c b/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/uIP_Task.c deleted file mode 100644 index 974381ef7..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/uIP_Task.c +++ /dev/null @@ -1,319 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* Standard includes. */ -#include - -/* Scheduler includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "timers.h" -#include "queue.h" - -/* uip includes. */ -#include "net/uip.h" -#include "net/uip_arp.h" -#include "apps/httpd/httpd.h" -#include "sys/timer.h" -#include "net/clock-arch.h" -#include "r_ether.h" - -/* Demo includes. */ -#include "ParTest.h" - -/*-----------------------------------------------------------*/ - -/* How long to wait before attempting to connect the MAC again. */ -#define uipINIT_WAIT ( 100 / portTICK_PERIOD_MS ) - -/* Shortcut to the header within the Rx buffer. */ -#define xHeader ((struct uip_eth_hdr *) &uip_buf[ 0 ]) - -/* Standard constant. */ -#define uipTOTAL_FRAME_HEADER_SIZE 54 - -/* The ARP timer and the periodic timer share a callback function, so the -respective timer IDs are used to determine which timer actually expired. These -constants are assigned to the timer IDs. */ -#define uipARP_TIMER 0 -#define uipPERIODIC_TIMER 1 - -/* A block time of zero ticks simply means, "don't block". */ -#define uipDONT_BLOCK 0UL - -/*-----------------------------------------------------------*/ - -/* - * Setup the MAC address in the MAC itself, and in the uIP stack. - */ -static void prvSetMACAddress( void ); - -/* - * Perform any uIP initialisation necessary. - */ -static void prvInitialise_uIP( void ); - -/* - * The callback function that is assigned to both the periodic timer and the - * ARP timer. - */ -static void prvUIPTimerCallback( TimerHandle_t xTimer ); - -/* - * Port functions required by the uIP stack. - */ -clock_time_t clock_time( void ); - -/*-----------------------------------------------------------*/ - -/* The queue used to send TCP/IP events to the uIP stack. */ -QueueHandle_t xEMACEventQueue = NULL; - -/*-----------------------------------------------------------*/ - -clock_time_t clock_time( void ) -{ - return xTaskGetTickCount(); -} -/*-----------------------------------------------------------*/ - -void vuIP_Task( void *pvParameters ) -{ -portBASE_TYPE i; -unsigned long ulNewEvent = 0UL; -unsigned long ulUIP_Events = 0UL; - - ( void ) pvParameters; - - /* Initialise the uIP stack. */ - prvInitialise_uIP(); - - /* Initialise the MAC. */ - vInitEmac(); - - while( lEMACWaitForLink() != pdPASS ) - { - vTaskDelay( uipINIT_WAIT ); - } - - for( ;; ) - { - if( ( ulUIP_Events & uipETHERNET_RX_EVENT ) != 0UL ) - { - /* Is there received data ready to be processed? */ - uip_len = ( unsigned short ) ulEMACRead(); - - if( ( uip_len > 0 ) && ( uip_buf != NULL ) ) - { - /* Standard uIP loop taken from the uIP manual. */ - if( xHeader->type == htons( UIP_ETHTYPE_IP ) ) - { - uip_arp_ipin(); - uip_input(); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - uip_arp_out(); - vEMACWrite(); - } - } - else if( xHeader->type == htons( UIP_ETHTYPE_ARP ) ) - { - uip_arp_arpin(); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - vEMACWrite(); - } - } - } - else - { - ulUIP_Events &= ~uipETHERNET_RX_EVENT; - } - } - - if( ( ulUIP_Events & uipPERIODIC_TIMER_EVENT ) != 0UL ) - { - ulUIP_Events &= ~uipPERIODIC_TIMER_EVENT; - - for( i = 0; i < UIP_CONNS; i++ ) - { - uip_periodic( i ); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - uip_arp_out(); - vEMACWrite(); - } - } - } - - /* Call the ARP timer function every 10 seconds. */ - if( ( ulUIP_Events & uipARP_TIMER_EVENT ) != 0 ) - { - ulUIP_Events &= ~uipARP_TIMER_EVENT; - uip_arp_timer(); - } - - if( ulUIP_Events == pdFALSE ) - { - xQueueReceive( xEMACEventQueue, &ulNewEvent, portMAX_DELAY ); - ulUIP_Events |= ulNewEvent; - } - } -} -/*-----------------------------------------------------------*/ - -static void prvInitialise_uIP( void ) -{ -TimerHandle_t xARPTimer, xPeriodicTimer; -uip_ipaddr_t xIPAddr; -const unsigned long ul_uIPEventQueueLength = 10UL; - - /* Initialise the uIP stack. */ - uip_init(); - uip_ipaddr( &xIPAddr, configIP_ADDR0, configIP_ADDR1, configIP_ADDR2, configIP_ADDR3 ); - uip_sethostaddr( &xIPAddr ); - uip_ipaddr( &xIPAddr, configNET_MASK0, configNET_MASK1, configNET_MASK2, configNET_MASK3 ); - uip_setnetmask( &xIPAddr ); - prvSetMACAddress(); - httpd_init(); - - /* Create the queue used to sent TCP/IP events to the uIP stack. */ - xEMACEventQueue = xQueueCreate( ul_uIPEventQueueLength, sizeof( unsigned long ) ); - - /* Create and start the uIP timers. */ - xARPTimer = xTimerCreate( "ARPTimer", /* Just a name that is helpful for debugging, not used by the kernel. */ - ( 10000UL / portTICK_PERIOD_MS ), /* Timer period. */ - pdTRUE, /* Autor-reload. */ - ( void * ) uipARP_TIMER, - prvUIPTimerCallback - ); - - xPeriodicTimer = xTimerCreate( "PeriodicTimer", - ( 50 / portTICK_PERIOD_MS ), - pdTRUE, /* Autor-reload. */ - ( void * ) uipPERIODIC_TIMER, - prvUIPTimerCallback - ); - - configASSERT( xARPTimer ); - configASSERT( xPeriodicTimer ); - - xTimerStart( xARPTimer, portMAX_DELAY ); - xTimerStart( xPeriodicTimer, portMAX_DELAY ); -} -/*-----------------------------------------------------------*/ - -static void prvUIPTimerCallback( TimerHandle_t xTimer ) -{ -static const unsigned long ulARPTimerExpired = uipARP_TIMER_EVENT; -static const unsigned long ulPeriodicTimerExpired = uipPERIODIC_TIMER_EVENT; - - /* This is a time callback, so calls to xQueueSend() must not attempt to - block. */ - switch( ( int ) pvTimerGetTimerID( xTimer ) ) - { - case uipARP_TIMER : xQueueSend( xEMACEventQueue, &ulARPTimerExpired, uipDONT_BLOCK ); - break; - - case uipPERIODIC_TIMER : xQueueSend( xEMACEventQueue, &ulPeriodicTimerExpired, uipDONT_BLOCK ); - break; - - default : /* Should not get here. */ - break; - } -} -/*-----------------------------------------------------------*/ - -static void prvSetMACAddress( void ) -{ -struct uip_eth_addr xAddr; - - /* Configure the MAC address in the uIP stack. */ - xAddr.addr[ 0 ] = configMAC_ADDR0; - xAddr.addr[ 1 ] = configMAC_ADDR1; - xAddr.addr[ 2 ] = configMAC_ADDR2; - xAddr.addr[ 3 ] = configMAC_ADDR3; - xAddr.addr[ 4 ] = configMAC_ADDR4; - xAddr.addr[ 5 ] = configMAC_ADDR5; - uip_setethaddr( xAddr ); -} -/*-----------------------------------------------------------*/ - -void vApplicationProcessFormInput( char *pcInputString ) -{ -char *c; - - /* Only interested in processing form input if this is the IO page. */ - c = strstr( pcInputString, "io.shtml" ); - - if( c ) - { - /* Is there a command in the string? */ - c = strstr( pcInputString, "?" ); - if( c ) - { - /* Turn the LED's on or off in accordance with the check box status. */ - if( strstr( c, "LED0=1" ) != NULL ) - { - /* Turn the LEDs on. */ - vParTestSetLED( 7, 1 ); - vParTestSetLED( 8, 1 ); - vParTestSetLED( 9, 1 ); - vParTestSetLED( 10, 1 ); - } - else - { - /* Turn the LEDs off. */ - vParTestSetLED( 7, 0 ); - vParTestSetLED( 8, 0 ); - vParTestSetLED( 9, 0 ); - vParTestSetLED( 10, 0 ); - } - } - else - { - /* Commands to turn LEDs off are not always explicit. */ - vParTestSetLED( 7, 0 ); - vParTestSetLED( 8, 0 ); - vParTestSetLED( 9, 0 ); - vParTestSetLED( 10, 0 ); - } - } -} - diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/vects.c b/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/vects.c deleted file mode 100644 index a1a33fe16..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/vects.c +++ /dev/null @@ -1,614 +0,0 @@ -/***********************************************************************/ -/* */ -/* FILE :vects.c */ -/* DATE :Wed, Aug 25, 2010 */ -/* DESCRIPTION :Vector Table */ -/* CPU TYPE :Other */ -/* */ -/* This file is generated by KPIT GNU Project Generator. */ -/* */ -/***********************************************************************/ - - - - -#include "inthandler.h" - -typedef void (*fp) (void); -extern void start(void); -extern void stack (void); -extern void vTickISR( void ); -extern void vSoftwareInterruptISR( void ); -extern void vT0_1_ISR_Handler( void ); -extern void vT2_3_ISR_Handler( void ); -extern void vEMAC_ISR_Handler( void ); -extern void vTimer2_ISR_Handler( void ); - -#define FVECT_SECT __attribute__ ((section (".fvectors"))) - -const fp HardwareVectors[] FVECT_SECT = { -//;0xffffff80 Reserved - (fp)0, -//;0xffffff84 Reserved - (fp)0, -//;0xffffff88 Reserved - (fp)0, -//;0xffffff8C Reserved - (fp)0, -//;0xffffff90 Reserved - (fp)0, -//;0xffffff94 Reserved - (fp)0, -//;0xffffff98 Reserved - (fp)0, -//;0xffffff9C Reserved - (fp)0, -//;0xffffffA0 Reserved - (fp)0, -//;0xffffffA4 Reserved - (fp)0, -//;0xffffffA8 Reserved - (fp)0, -//;0xffffffAC Reserved - (fp)0, -//;0xffffffB0 Reserved - (fp)0, -//;0xffffffB4 Reserved - (fp)0, -//;0xffffffB8 Reserved - (fp)0, -//;0xffffffBC Reserved - (fp)0, -//;0xffffffC0 Reserved - (fp)0, -//;0xffffffC4 Reserved - (fp)0, -//;0xffffffC8 Reserved - (fp)0, -//;0xffffffCC Reserved - (fp)0, -//;0xffffffd0 Exception(Supervisor Instruction) - INT_Excep_SuperVisorInst, -//;0xffffffd4 Reserved - (fp)0, -//;0xffffffd8 Reserved - (fp)0, -//;0xffffffdc Exception(Undefined Instruction) - INT_Excep_UndefinedInst, -//;0xffffffe0 Reserved - (fp)0, -//;0xffffffe4 Exception(Floating Point) - INT_Excep_FloatingPoint, -//;0xffffffe8 Reserved - (fp)0, -//;0xffffffec Reserved - (fp)0, -//;0xfffffff0 Reserved - (fp)0, -//;0xfffffff4 Reserved - (fp)0, -//;0xfffffff8 NMI - INT_NonMaskableInterrupt, -//;0xfffffffc RESET -//;<> -//;Power On Reset PC - start -//;<> -}; - -#define RVECT_SECT __attribute__ ((section (".rvectors"))) - -const fp RelocatableVectors[] RVECT_SECT = { -//;0x0000 Reserved - (fp)0, -//;0x0004 Reserved - (fp)0, -//;0x0008 Reserved - (fp)0, -//;0x000C Reserved - (fp)0, -//;0x0010 Reserved - (fp)0, -//;0x0014 Reserved - (fp)0, -//;0x0018 Reserved - (fp)0, -//;0x001C Reserved - (fp)0, -//;0x0020 Reserved - (fp)0, -//;0x0024 Reserved - (fp)0, -//;0x0028 Reserved - (fp)0, -//;0x002C Reserved - (fp)0, -//;0x0030 Reserved - (fp)0, -//;0x0034 Reserved - (fp)0, -//;0x0038 Reserved - (fp)0, -//;0x003C Reserved - (fp)0, -//;0x0040 BUSERR - (fp)INT_Excep_BUSERR, -//;0x0044 Reserved - (fp)0, -//;0x0048 Reserved - (fp)0, -//;0x004C Reserved - (fp)0, -//;0x0050 Reserved - (fp)0, -//;0x0054 FCUERR - (fp)INT_Excep_FCU_FCUERR, -//;0x0058 Reserved - (fp)0, -//;0x005C FRDYI - (fp)INT_Excep_FCU_FRDYI, -//;0x0060 Reserved - (fp)0, -//;0x0064 Reserved - (fp)0, -//;0x0068 Reserved - (fp)0, -//;0x006C Reserved - (fp)vSoftwareInterruptISR, -//;0x0070 CMTU0_CMT0 - (fp)vTickISR, -//;0x0074 CMTU0_CMT1 - (fp)INT_Excep_CMTU0_CMT1, -//;0x0078 CMTU1_CMT2 - (fp)vTimer2_ISR_Handler, -//;0x007C CMTU1_CMT3 - (fp)INT_Excep_CMTU1_CMT3, -//;0x0080 Ether - (fp)vEMAC_ISR_Handler, -//;0x0084 Reserved - (fp)0, -//;0x0088 Reserved - (fp)0, -//;0x008C Reserved - (fp)0, -//;0x0090 Reserved - (fp)0, -//;0x0094 Reserved - (fp)0, -//;0x0098 Reserved - (fp)0, -//;0x009C Reserved - (fp)0, -//;0x00A0 Reserved - (fp)0, -//;0x00A4 Reserved - (fp)0, -//;0x00A8 Reserved - (fp)0, -//;0x00AC Reserved - (fp)0, -//;0x00B0 Reserved - (fp)0, -//;0x00B4 Reserved - (fp)0, -//;0x00B8 Reserved - (fp)0, -//;0x00BC Reserved - (fp)0, -//;0x00C0 Reserved - (fp)0, -//;0x00C4 Reserved - (fp)0, -//;0x00C8 Reserved - (fp)0, -//;0x00CC Reserved - (fp)0, -//;0x00D0 Reserved - (fp)0, -//;0x00D4 Reserved - (fp)0, -//;0x00D8 Reserved - (fp)0, -//;0x00DC Reserved - (fp)0, -//;0x00E0 Reserved - (fp)0, -//;0x00E4 Reserved - (fp)0, -//;0x00E8 Reserved - (fp)0, -//;0x00EC Reserved - (fp)0, -//;0x00F0 Reserved - (fp)0, -//;0x00F4 Reserved - (fp)0, -//;0x00F8 Reserved - (fp)0, -//;0x00FC Reserved - (fp)0, -//;0x0100 IRQ0 - (fp)INT_Excep_IRQ0, -//;0x0104 IRQ1 - (fp)INT_Excep_IRQ1, -//;0x0108 IRQ2 - (fp)INT_Excep_IRQ2, -//;0x010C IRQ3 - (fp)INT_Excep_IRQ3, -//;0x0110 IRQ4 - (fp)INT_Excep_IRQ4, -//;0x0114 IRQ5 - (fp)INT_Excep_IRQ5, -//;0x0118 IRQ6 - (fp)INT_Excep_IRQ6, -//;0x011C IRQ7 - (fp)INT_Excep_IRQ7, -//;0x0120 IRQ8 - (fp)INT_Excep_IRQ8, -//;0x0124 IRQ9 - (fp)INT_Excep_IRQ9, -//;0x0128 IRQ10 - (fp)INT_Excep_IRQ10, -//;0x012C IRQ11 - (fp)INT_Excep_IRQ11, -//;0x0130 IRQ12 - (fp)INT_Excep_IRQ12, -//;0x0134 IRQ13 - (fp)INT_Excep_IRQ13, -//;0x0138 IRQ14 - (fp)INT_Excep_IRQ14, -//;0x013C IRQ15 - (fp)INT_Excep_IRQ15, -//;0x0140 Reserved - (fp)0, -//;0x0144 Reserved - (fp)0, -//;0x0148 Reserved - (fp)0, -//;0x014C Reserved - (fp)0, -//;0x0150 Reserved - (fp)0, -//;0x0154 Reserved - (fp)0, -//;0x0158 Reserved - (fp)0, -//;0x015C Reserved - (fp)0, -//;0x0160 Reserved - (fp)0, -//;0x0164 Reserved - (fp)0, -//;0x0168 Reserved - (fp)0, -//;0x016C Reserved - (fp)0, -//;0x0170 Reserved - (fp)0, -//;0x0174 Reserved - (fp)0, -//;0x0178 Reserved - (fp)0, -//;0x017C Reserved - (fp)0, -//;0x0180 WDT_WOVI - (fp)INT_Excep_WDT_WOVI, -//;0x0184 Reserved - (fp)0, -//;0x0188 AD0_ADI0 - (fp)INT_Excep_AD0_ADI0, -//;0x018C AD1_ADI1 - (fp)INT_Excep_AD1_ADI1, -//;0x0190 AD2_ADI2 - (fp)INT_Excep_AD2_ADI2, -//;0x0194 AD3_ADI3 - (fp)INT_Excep_AD3_ADI3, -//;0x0198 Reserved - (fp)0, -//;0x019C Reserved - (fp)0, -//;0x01A0 TPU0_TGI0A - (fp)INT_Excep_TPU0_TGI0A, -//;0x01A4 TPU0_TGI0B - (fp)INT_Excep_TPU0_TGI0B, -//;0x01A8 TPU0_TGI0C - (fp)INT_Excep_TPU0_TGI0C, -//;0x01AC TPU0_TGI0D - (fp)INT_Excep_TPU0_TGI0D, -//;0x01B0 TPU0_TCI0V - (fp)INT_Excep_TPU0_TCI0V, -//;0x01B4 Reserved - (fp)0, -//;0x01B8 Reserved - (fp)0, -//;0x01BC TPU1_TGI1A - (fp)INT_Excep_TPU1_TGI1A, -//;0x01C0 TPU1_TGI1B - (fp)INT_Excep_TPU1_TGI1B, -//;0x01C4 Reserved - (fp)0, -//;0x01C8 Reserved - (fp)0, -//;0x01CC TPU1_TCI1V - (fp)INT_Excep_TPU1_TCI1V, -//;0x01D0 TPU1_TCI1U - (fp)INT_Excep_TPU1_TCI1U, -//;0x01D4 TPU2_TGI2A - (fp)INT_Excep_TPU2_TGI2A, -//;0x01D8 TPU2_TGI2B - (fp)INT_Excep_TPU2_TGI2B, -//;0x01DC Reserved - (fp)0, -//;0x01E0 TPU2_TCI2V - (fp)INT_Excep_TPU2_TCI2V, -//;0x01E4 TPU2_TCI2U - (fp)INT_Excep_TPU2_TCI2U, -//;0x01E8 TPU3_TGI3A - (fp)INT_Excep_TPU3_TGI3A, -//;0x01EC TPU3_TGI3B - (fp)INT_Excep_TPU3_TGI3B, -//;0x01F0 TPU3_TGI3C - (fp)INT_Excep_TPU3_TGI3C, -//;0x01F4 TPU3_TGI3D - (fp)INT_Excep_TPU3_TGI3D, -//;0x01F8 TPU3_TCI3V - (fp)INT_Excep_TPU3_TCI3V, -//;0x01FC TPU4_TGI4A - (fp)INT_Excep_TPU4_TGI4A, -//;0x0200 TPU4_TGI4B - (fp)INT_Excep_TPU4_TGI4B, -//;0x0204 Reserved - (fp)0, -//;0x0208 Reserved - (fp)0, -//;0x020C TPU4_TCI4V - (fp)INT_Excep_TPU4_TCI4V, -//;0x0210 TPU4_TCI4U - (fp)INT_Excep_TPU4_TCI4U, -//;0x0214 TPU5_TGI5A - (fp)INT_Excep_TPU5_TGI5A, -//;0x0218 TPU5_TGI5B - (fp)INT_Excep_TPU5_TGI5B, -//;0x021C Reserved - (fp)0, -//;0x0220 TPU5_TCI5V - (fp)INT_Excep_TPU5_TCI5V, -//;0x0224 TPU5_TCI5U - (fp)INT_Excep_TPU5_TCI5U, -//;0x0228 TPU6_TGI6A - (fp)INT_Excep_TPU6_TGI6A, -//;0x022C TPU6_TGI6B - (fp)INT_Excep_TPU6_TGI6B, -//;0x0230 TPU6_TGI6C - (fp)INT_Excep_TPU6_TGI6C, -//;0x0234 TPU6_TGI6D - (fp)INT_Excep_TPU6_TGI6D, -//;0x0238 TPU6_TCI6V - (fp)INT_Excep_TPU6_TCI6V, -//;0x023C Reserved - (fp)0, -//;0x0240 Reserved - (fp)0, -//;0x0244 TPU7_TGI7A - (fp)INT_Excep_TPU7_TGI7A, -//;0x0248 TPU7_TGI7B - (fp)INT_Excep_TPU7_TGI7B, -//;0x024C Reserved - (fp)0, -//;0x0250 Reserved - (fp)0, -//;0x0254 TPU7_TCI7V - (fp)INT_Excep_TPU7_TCI7V, -//;0x0258 TPU7_TCI7U - (fp)INT_Excep_TPU7_TCI7U, -//;0x025C TPU8_TGI8A - (fp)INT_Excep_TPU8_TGI8A, -//;0x0260 TPU8_TGI8B - (fp)INT_Excep_TPU8_TGI8B, -//;0x0264 Reserved - (fp)0, -//;0x0268 TPU8_TCI8V - (fp)INT_Excep_TPU8_TCI8V, -//;0x026C TPU8_TCI8U - (fp)INT_Excep_TPU8_TCI8U, -//;0x0270 TPU9_TGI9A - (fp)INT_Excep_TPU9_TGI9A, -//;0x0274 TPU9_TGI9B - (fp)INT_Excep_TPU9_TGI9B, -//;0x0278 TPU9_TGI9C - (fp)INT_Excep_TPU9_TGI9C, -//;0x027C TPU9_TGI9D - (fp)INT_Excep_TPU9_TGI9D, -//;0x0280 TPU9_TCI9V - (fp)INT_Excep_TPU9_TCI9V, -//;0x0284 TPU10_TGI10A - (fp)INT_Excep_TPU10_TGI10A, -//;0x0288 TPU10_TGI10B - (fp)INT_Excep_TPU10_TGI10B, -//;0x028C Reserved - (fp)0, -//;0x0290 Reserved - (fp)0, -//;0x0294 TPU10_TCI10V - (fp)INT_Excep_TPU10_TCI10V, -//;0x0298 TPU10_TCI10U - (fp)INT_Excep_TPU10_TCI10U, -//;0x029C TPU11_TGI11A - (fp)INT_Excep_TPU11_TGI11A, -//;0x02A0 TPU11_TGI11B - (fp)INT_Excep_TPU11_TGI11B, -//;0x02A4 Reserved - (fp)0, -//;0x02A8 TPU11_TCI11V - (fp)INT_Excep_TPU11_TCI11V, -//;0x02AC TPU11_TCI11U - (fp)INT_Excep_TPU11_TCI11U, -//;0x02B0 Reserved - (fp)0, -//;0x02B4 Reserved - (fp)0, -//;0x02B8 TMR0_CMI0A - (fp)vT0_1_ISR_Handler, -//;0x02BC TMR0_CMI0B - (fp)INT_Excep_TMR0_CMI0B, -//;0x02C0 TMR0_OV0I - (fp)INT_Excep_TMR0_OV0I, -//;0x02C4 TMR1_CMI1A - (fp)INT_Excep_TMR1_CMI1A, -//;0x02C8 TMR1_CMI1B - (fp)INT_Excep_TMR1_CMI1B, -//;0x02CC TMR1_OV1I - (fp)INT_Excep_TMR1_OV1I, -//;0x02D0 TMR2_CMI2A - (fp)vT2_3_ISR_Handler, -//;0x02D4 TMR2_CMI2B - (fp)INT_Excep_TMR2_CMI2B, -//;0x02D8 TMR2_OV2I - (fp)INT_Excep_TMR2_OV2I, -//;0x02DC TMR3_CMI3A - (fp)INT_Excep_TMR3_CMI3A, -//;0x02E0 TMR3_CMI3B - (fp)INT_Excep_TMR3_CMI3B, -//;0x02E4 TMR3_OV3I - (fp)INT_Excep_TMR3_OV3I, -//;0x02E8 Reserved - (fp)0, -//;0x02EC Reserved - (fp)0, -//;0x02F0 Reserved - (fp)0, -//;0x02F4 Reserved - (fp)0, -//;0x02F8 Reserved - (fp)0, -//;0x02FC Reserved - (fp)0, -//;0x0300 Reserved - (fp)0, -//;0x0304 Reserved - (fp)0, -//;0x0308 Reserved - (fp)0, -//;0x030C Reserved - (fp)0, -//;0x0310 Reserved - (fp)0, -//;0x0314 Reserved - (fp)0, -//;0x0318 DMAC_DMTEND0 - (fp)INT_Excep_DMAC_DMTEND0, -//;0x031C DMAC_DMTEND1 - (fp)INT_Excep_DMAC_DMTEND1, -//;0x0320 DMAC_DMTEND2 - (fp)INT_Excep_DMAC_DMTEND2, -//;0x0324 DMAC_DMTEND3 - (fp)INT_Excep_DMAC_DMTEND3, -//;0x0328 Reserved - (fp)0, -//;0x032C Reserved - (fp)0, -//;0x0330 Reserved - (fp)0, -//;0x0334 Reserved - (fp)0, -//;0x0338 Reserved - (fp)0, -//;0x033C Reserved - (fp)0, -//;0x0340 Reserved - (fp)0, -//;0x0344 Reserved - (fp)0, -//;0x0348 Reserved - (fp)0, -//;0x034C Reserved - (fp)0, -//;0x0350 Reserved - (fp)0, -//;0x0354 Reserved - (fp)0, -//;0x0358 SCI0_ERI0 - (fp)INT_Excep_SCI0_ERI0, -//;0x035C SCI0_RXI0 - (fp)INT_Excep_SCI0_RXI0, -//;0x0360 SCI0_TXI0 - (fp)INT_Excep_SCI0_TXI0, -//;0x0364 SCI0_TEI0 - (fp)INT_Excep_SCI0_TEI0, -//;0x0368 SCI1_ERI1 - (fp)INT_Excep_SCI1_ERI1, -//;0x036C SCI1_RXI1 - (fp)INT_Excep_SCI1_RXI1, -//;0x0370 SCI1_TXI1 - (fp)INT_Excep_SCI1_TXI1, -//;0x0374 SCI1_TEI1 - (fp)INT_Excep_SCI1_TEI1, -//;0x0378 SCI2_ERI2 - (fp)INT_Excep_SCI2_ERI2, -//;0x037C SCI2_RXI2 - (fp)INT_Excep_SCI2_RXI2, -//;0x0380 SCI2_TXI2 - (fp)INT_Excep_SCI2_TXI2, -//;0x0384 SCI2_TEI2 - (fp)INT_Excep_SCI2_TEI2, -//;0x0388 SCI3_ERI3 - (fp)INT_Excep_SCI3_ERI3, -//;0x038C SCI3_RXI3 - (fp)INT_Excep_SCI3_RXI3, -//;0x0390 SCI3_TXI3 - (fp)INT_Excep_SCI3_TXI3, -//;0x0394 SCI3_TEI3 - (fp)INT_Excep_SCI3_TEI3, -//;0x0398 SCI4_ERI4 - (fp)INT_Excep_SCI4_ERI4, -//;0x039C SCI4_RXI4 - (fp)INT_Excep_SCI4_RXI4, -//;0x03A0 SCI4_TXI4 - (fp)INT_Excep_SCI4_TXI4, -//;0x03A4 SCI4_TEI4 - (fp)INT_Excep_SCI4_TEI4, -//;0x03A8 SCI5_ERI5 - (fp)INT_Excep_SCI5_ERI5, -//;0x03AC SCI5_RXI5 - (fp)INT_Excep_SCI5_RXI5, -//;0x03B0 SCI5_TXI5 - (fp)INT_Excep_SCI5_TXI5, -//;0x03B4 SCI5_TEI5 - (fp)INT_Excep_SCI5_TEI5, -//;0x03B8 SCI6_ERI6 - (fp)INT_Excep_SCI6_ERI6, -//;0x03BC SCI6_RXI6 - (fp)INT_Excep_SCI6_RXI6, -//;0x03C0 SCI6_TXI6 - (fp)INT_Excep_SCI6_TXI6, -//;0x03C4 SCI6_TEI6 - (fp)INT_Excep_SCI6_TEI6, -//;0x03C8 Reserved - (fp)0, -//;0x03CC Reserved - (fp)0, -//;0x03D0 Reserved - (fp)0, -//;0x03D4 Reserved - (fp)0, -//;0x03D8 RIIC0_EEI0 - (fp)INT_Excep_RIIC0_EEI0, -//;0x03DC RIIC0_RXI0 - (fp)INT_Excep_RIIC0_RXI0, -//;0x03E0 RIIC0_TXI0 - (fp)INT_Excep_RIIC0_TXI0, -//;0x03E4 RIIC0_TEI0 - (fp)INT_Excep_RIIC0_TEI0, -//;0x03E8 RIIC1_EEI1 - (fp)INT_Excep_RIIC1_EEI1, -//;0x03EC RIIC1_RXI1 - (fp)INT_Excep_RIIC1_RXI1, -//;0x03F0 RIIC1_TXI1 - (fp)INT_Excep_RIIC1_TXI1, -//;0x03F4 RIIC1_TEI1 - (fp)INT_Excep_RIIC1_TEI1, -//;0x03F8 Reserved - (fp)0, -//;0x03FC Reserved - (fp)0, -}; diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/webserver/EMAC.c b/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/webserver/EMAC.c deleted file mode 100644 index 01ef9effb..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/webserver/EMAC.c +++ /dev/null @@ -1,534 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* Hardware specific includes. */ -#include "iodefine.h" -#include "typedefine.h" -#include "r_ether.h" -#include "phy.h" - -/* FreeRTOS includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "semphr.h" - -/* uIP includes. */ -#include "net/uip.h" - -/* The time to wait between attempts to obtain a free buffer. */ -#define emacBUFFER_WAIT_DELAY_ms ( 3 / portTICK_PERIOD_MS ) - -/* The number of times emacBUFFER_WAIT_DELAY_ms should be waited before giving -up on attempting to obtain a free buffer all together. */ -#define emacBUFFER_WAIT_ATTEMPTS ( 30 ) - -/* The number of Rx descriptors. */ -#define emacNUM_RX_DESCRIPTORS 8 - -/* The number of Tx descriptors. When using uIP there is not point in having -more than two. */ -#define emacNUM_TX_BUFFERS 2 - -/* The total number of EMAC buffers to allocate. */ -#define emacNUM_BUFFERS ( emacNUM_RX_DESCRIPTORS + emacNUM_TX_BUFFERS ) - -/* The time to wait for the Tx descriptor to become free. */ -#define emacTX_WAIT_DELAY_ms ( 10 / portTICK_PERIOD_MS ) - -/* The total number of times to wait emacTX_WAIT_DELAY_ms for the Tx descriptor to -become free. */ -#define emacTX_WAIT_ATTEMPTS ( 50 ) - -/* Only Rx end and Tx end interrupts are used by this driver. */ -#define emacTX_END_INTERRUPT ( 1UL << 21UL ) -#define emacRX_END_INTERRUPT ( 1UL << 18UL ) - -/*-----------------------------------------------------------*/ - -/* The buffers and descriptors themselves. */ -static volatile ethfifo xRxDescriptors[ emacNUM_RX_DESCRIPTORS ] __attribute__((aligned(16))); -static volatile ethfifo xTxDescriptors[ emacNUM_TX_BUFFERS ] __attribute__((aligned(16))); -static char xEthernetBuffers[ emacNUM_BUFFERS ][ UIP_BUFSIZE ] __attribute__((aligned(16))); - -/* Used to indicate which buffers are free and which are in use. If an index -contains 0 then the corresponding buffer in xEthernetBuffers is free, otherwise -the buffer is in use or about to be used. */ -static unsigned char ucBufferInUse[ emacNUM_BUFFERS ]; - -/*-----------------------------------------------------------*/ - -/* - * Initialise both the Rx and Tx descriptors. - */ -static void prvInitialiseDescriptors( void ); - -/* - * Return a pointer to a free buffer within xEthernetBuffers. - */ -static unsigned char *prvGetNextBuffer( void ); - -/* - * Return a buffer to the list of free buffers. - */ -static void prvReturnBuffer( unsigned char *pucBuffer ); - -/* - * Examine the status of the next Rx FIFO to see if it contains new data. - */ -static unsigned long prvCheckRxFifoStatus( void ); - -/* - * Setup the microcontroller for communication with the PHY. - */ -static void prvResetMAC( void ); - -/* - * Configure the Ethernet interface peripherals. - */ -static void prvConfigureEtherCAndEDMAC( void ); - -/* - * Something has gone wrong with the descriptor usage. Reset all the buffers - * and descriptors. - */ -static void prvResetEverything( void ); - -/* - * Handler for the EMAC peripheral. See the documentation for this - * port on http://www.FreeRTOS.org for more information on defining interrupt - * handlers. - */ -void vEMAC_ISR_Handler( void ) __attribute__((interrupt)); - -/*-----------------------------------------------------------*/ - -/* Points to the Rx descriptor currently in use. */ -static ethfifo *pxCurrentRxDesc = NULL; - -/* The buffer used by the uIP stack to both receive and send. This points to -one of the Ethernet buffers when its actually in use. */ -unsigned char *uip_buf = NULL; - -/*-----------------------------------------------------------*/ - -void vInitEmac( void ) -{ - /* Software reset. */ - prvResetMAC(); - - /* Set the Rx and Tx descriptors into their initial state. */ - prvInitialiseDescriptors(); - - /* Set the MAC address into the ETHERC */ - ETHERC.MAHR = ( ( unsigned long ) configMAC_ADDR0 << 24UL ) | - ( ( unsigned long ) configMAC_ADDR1 << 16UL ) | - ( ( unsigned long ) configMAC_ADDR2 << 8UL ) | - ( unsigned long ) configMAC_ADDR3; - - ETHERC.MALR.BIT.MA = ( ( unsigned long ) configMAC_ADDR4 << 8UL ) | - ( unsigned long ) configMAC_ADDR5; - - /* Perform rest of interface hardware configuration. */ - prvConfigureEtherCAndEDMAC(); - - /* Nothing received yet, so uip_buf points nowhere. */ - uip_buf = NULL; - - /* Initialize the PHY */ - phy_init(); -} -/*-----------------------------------------------------------*/ - -void vEMACWrite( void ) -{ -long x; - - /* Wait until the second transmission of the last packet has completed. */ - for( x = 0; x < emacTX_WAIT_ATTEMPTS; x++ ) - { - if( ( xTxDescriptors[ 1 ].status & ACT ) != 0 ) - { - /* Descriptor is still active. */ - vTaskDelay( emacTX_WAIT_DELAY_ms ); - } - else - { - break; - } - } - - /* Is the descriptor free after waiting for it? */ - if( ( xTxDescriptors[ 1 ].status & ACT ) != 0 ) - { - /* Something has gone wrong. */ - prvResetEverything(); - } - - /* Setup both descriptors to transmit the frame. */ - xTxDescriptors[ 0 ].buf_p = ( char * ) uip_buf; - xTxDescriptors[ 0 ].bufsize = uip_len; - xTxDescriptors[ 1 ].buf_p = ( char * ) uip_buf; - xTxDescriptors[ 1 ].bufsize = uip_len; - - /* uip_buf is being sent by the Tx descriptor. Allocate a new buffer - for use by the stack. */ - uip_buf = prvGetNextBuffer(); - - /* Clear previous settings and go. */ - xTxDescriptors[0].status &= ~( FP1 | FP0 ); - xTxDescriptors[0].status |= ( FP1 | FP0 | ACT ); - xTxDescriptors[1].status &= ~( FP1 | FP0 ); - xTxDescriptors[1].status |= ( FP1 | FP0 | ACT ); - - EDMAC.EDTRR.LONG = 0x00000001; -} -/*-----------------------------------------------------------*/ - -unsigned long ulEMACRead( void ) -{ -unsigned long ulBytesReceived; - - ulBytesReceived = prvCheckRxFifoStatus(); - - if( ulBytesReceived > 0 ) - { - /* Mark the pxDescriptor buffer as free as uip_buf is going to be set to - the buffer that contains the received data. */ - prvReturnBuffer( uip_buf ); - - /* Point uip_buf to the data about ot be processed. */ - uip_buf = ( void * ) pxCurrentRxDesc->buf_p; - - /* Allocate a new buffer to the descriptor, as uip_buf is now using it's - old descriptor. */ - pxCurrentRxDesc->buf_p = ( char * ) prvGetNextBuffer(); - - /* Prepare the descriptor to go again. */ - pxCurrentRxDesc->status &= ~( FP1 | FP0 ); - pxCurrentRxDesc->status |= ACT; - - /* Move onto the next buffer in the ring. */ - pxCurrentRxDesc = pxCurrentRxDesc->next; - - if( EDMAC.EDRRR.LONG == 0x00000000L ) - { - /* Restart Ethernet if it has stopped */ - EDMAC.EDRRR.LONG = 0x00000001L; - } - } - - return ulBytesReceived; -} -/*-----------------------------------------------------------*/ - -long lEMACWaitForLink( void ) -{ -long lReturn; - - /* Set the link status. */ - switch( phy_set_autonegotiate() ) - { - /* Half duplex link */ - case PHY_LINK_100H: - ETHERC.ECMR.BIT.DM = 0; - ETHERC.ECMR.BIT.RTM = 1; - lReturn = pdPASS; - break; - - case PHY_LINK_10H: - ETHERC.ECMR.BIT.DM = 0; - ETHERC.ECMR.BIT.RTM = 0; - lReturn = pdPASS; - break; - - - /* Full duplex link */ - case PHY_LINK_100F: - ETHERC.ECMR.BIT.DM = 1; - ETHERC.ECMR.BIT.RTM = 1; - lReturn = pdPASS; - break; - - case PHY_LINK_10F: - ETHERC.ECMR.BIT.DM = 1; - ETHERC.ECMR.BIT.RTM = 0; - lReturn = pdPASS; - break; - - default: - lReturn = pdFAIL; - break; - } - - if( lReturn == pdPASS ) - { - /* Enable receive and transmit. */ - ETHERC.ECMR.BIT.RE = 1; - ETHERC.ECMR.BIT.TE = 1; - - /* Enable EDMAC receive */ - EDMAC.EDRRR.LONG = 0x1; - } - - return lReturn; -} -/*-----------------------------------------------------------*/ - -static void prvInitialiseDescriptors( void ) -{ -volatile ethfifo *pxDescriptor; -long x; - - for( x = 0; x < emacNUM_BUFFERS; x++ ) - { - /* Ensure none of the buffers are shown as in use at the start. */ - ucBufferInUse[ x ] = pdFALSE; - } - - /* Initialise the Rx descriptors. */ - for( x = 0; x < emacNUM_RX_DESCRIPTORS; x++ ) - { - pxDescriptor = &( xRxDescriptors[ x ] ); - pxDescriptor->buf_p = &( xEthernetBuffers[ x ][ 0 ] ); - - pxDescriptor->bufsize = UIP_BUFSIZE; - pxDescriptor->size = 0; - pxDescriptor->status = ACT; - pxDescriptor->next = ( struct Descriptor * ) &xRxDescriptors[ x + 1 ]; - - /* Mark this buffer as in use. */ - ucBufferInUse[ x ] = pdTRUE; - } - - /* The last descriptor points back to the start. */ - pxDescriptor->status |= DL; - pxDescriptor->next = ( struct Descriptor * ) &xRxDescriptors[ 0 ]; - - /* Initialise the Tx descriptors. */ - for( x = 0; x < emacNUM_TX_BUFFERS; x++ ) - { - pxDescriptor = &( xTxDescriptors[ x ] ); - - /* A buffer is not allocated to the Tx descriptor until a send is - actually required. */ - pxDescriptor->buf_p = NULL; - - pxDescriptor->bufsize = UIP_BUFSIZE; - pxDescriptor->size = 0; - pxDescriptor->status = 0; - pxDescriptor->next = ( struct Descriptor * ) &xTxDescriptors[ x + 1 ]; - } - - /* The last descriptor points back to the start. */ - pxDescriptor->status |= DL; - pxDescriptor->next = ( struct Descriptor * ) &( xTxDescriptors[ 0 ] ); - - /* Use the first Rx descriptor to start with. */ - pxCurrentRxDesc = ( struct Descriptor * ) &( xRxDescriptors[ 0 ] ); -} -/*-----------------------------------------------------------*/ - -static unsigned char *prvGetNextBuffer( void ) -{ -long x; -unsigned char *pucReturn = NULL; -unsigned long ulAttempts = 0; - - while( pucReturn == NULL ) - { - /* Look through the buffers to find one that is not in use by - anything else. */ - for( x = 0; x < emacNUM_BUFFERS; x++ ) - { - if( ucBufferInUse[ x ] == pdFALSE ) - { - ucBufferInUse[ x ] = pdTRUE; - pucReturn = ( unsigned char * ) &( xEthernetBuffers[ x ][ 0 ] ); - break; - } - } - - /* Was a buffer found? */ - if( pucReturn == NULL ) - { - ulAttempts++; - - if( ulAttempts >= emacBUFFER_WAIT_ATTEMPTS ) - { - break; - } - - /* Wait then look again. */ - vTaskDelay( emacBUFFER_WAIT_DELAY_ms ); - } - } - - return pucReturn; -} -/*-----------------------------------------------------------*/ - -static void prvReturnBuffer( unsigned char *pucBuffer ) -{ -unsigned long ul; - - /* Return a buffer to the pool of free buffers. */ - for( ul = 0; ul < emacNUM_BUFFERS; ul++ ) - { - if( &( xEthernetBuffers[ ul ][ 0 ] ) == ( void * ) pucBuffer ) - { - ucBufferInUse[ ul ] = pdFALSE; - break; - } - } -} -/*-----------------------------------------------------------*/ - -static void prvResetEverything( void ) -{ - /* Temporary code just to see if this gets called. This function has not - been implemented. */ - portDISABLE_INTERRUPTS(); - for( ;; ); -} -/*-----------------------------------------------------------*/ - -static unsigned long prvCheckRxFifoStatus( void ) -{ -unsigned long ulReturn = 0; - - if( ( pxCurrentRxDesc->status & ACT ) != 0 ) - { - /* Current descriptor is still active. */ - } - else if( ( pxCurrentRxDesc->status & FE ) != 0 ) - { - /* Frame error. Clear the error. */ - pxCurrentRxDesc->status &= ~( FP1 | FP0 | FE ); - pxCurrentRxDesc->status &= ~( RMAF | RRF | RTLF | RTSF | PRE | CERF ); - pxCurrentRxDesc->status |= ACT; - pxCurrentRxDesc = pxCurrentRxDesc->next; - - if( EDMAC.EDRRR.LONG == 0x00000000UL ) - { - /* Restart Ethernet if it has stopped. */ - EDMAC.EDRRR.LONG = 0x00000001UL; - } - } - else - { - /* The descriptor contains a frame. Because of the size of the buffers - the frame should always be complete. */ - if( ( pxCurrentRxDesc->status & FP0 ) == FP0 ) - { - ulReturn = pxCurrentRxDesc->size; - } - else - { - /* Do not expect to get here. */ - prvResetEverything(); - } - } - - return ulReturn; -} -/*-----------------------------------------------------------*/ - -static void prvResetMAC( void ) -{ - /* Ensure the EtherC and EDMAC are enabled. */ - SYSTEM.MSTPCRB.BIT.MSTPB15 = 0; - vTaskDelay( 100 / portTICK_PERIOD_MS ); - - EDMAC.EDMR.BIT.SWR = 1; - - /* Crude wait for reset to complete. */ - vTaskDelay( 500 / portTICK_PERIOD_MS ); -} -/*-----------------------------------------------------------*/ - -static void prvConfigureEtherCAndEDMAC( void ) -{ - /* Initialisation code taken from Renesas example project. */ - - /* TODO: Check bit 5 */ - ETHERC.ECSR.LONG = 0x00000037; /* Clear all ETHERC statuS BFR, PSRTO, LCHNG, MPD, ICD */ - - /* Set the EDMAC interrupt priority. */ - _IPR( _ETHER_EINT ) = configKERNEL_INTERRUPT_PRIORITY; - - /* TODO: Check bit 5 */ - /* Enable interrupts of interest only. */ - EDMAC.EESIPR.LONG = emacTX_END_INTERRUPT | emacRX_END_INTERRUPT; - ETHERC.RFLR.LONG = 1518; /* Ether payload is 1500+ CRC */ - ETHERC.IPGR.LONG = 0x00000014; /* Intergap is 96-bit time */ - - /* EDMAC */ - EDMAC.EESR.LONG = 0x47FF0F9F; /* Clear all ETHERC and EDMAC status bits */ - #ifdef __RX_LITTLE_ENDIAN__ - EDMAC.EDMR.BIT.DE = 1; - #endif - EDMAC.RDLAR = ( void * ) pxCurrentRxDesc; /* Initialaize Rx Descriptor List Address */ - EDMAC.TDLAR = ( void * ) &( xTxDescriptors[ 0 ] ); /* Initialaize Tx Descriptor List Address */ - EDMAC.TRSCER.LONG = 0x00000000; /* Copy-back status is RFE & TFE only */ - EDMAC.TFTR.LONG = 0x00000000; /* Threshold of Tx_FIFO */ - EDMAC.FDR.LONG = 0x00000000; /* Transmit fifo & receive fifo is 256 bytes */ - EDMAC.RMCR.LONG = 0x00000003; /* Receive function is normal mode(continued) */ - ETHERC.ECMR.BIT.PRM = 0; /* Ensure promiscuous mode is off. */ - - /* Enable the interrupt... */ - _IEN( _ETHER_EINT ) = 1; -} -/*-----------------------------------------------------------*/ - -void vEMAC_ISR_Handler( void ) -{ -unsigned long ul = EDMAC.EESR.LONG; -long lHigherPriorityTaskWoken = pdFALSE; -extern QueueHandle_t xEMACEventQueue; -const unsigned long ulRxEvent = uipETHERNET_RX_EVENT; - - /* Re-enabled interrupts. */ - __asm volatile( "SETPSW I" ); - - /* Has a Tx end occurred? */ - if( ul & emacTX_END_INTERRUPT ) - { - /* Only return the buffer to the pool once both Txes have completed. */ - prvReturnBuffer( ( void * ) xTxDescriptors[ 0 ].buf_p ); - EDMAC.EESR.LONG = emacTX_END_INTERRUPT; - } - - /* Has an Rx end occurred? */ - if( ul & emacRX_END_INTERRUPT ) - { - /* Make sure the Ethernet task is not blocked waiting for a packet. */ - xQueueSendFromISR( xEMACEventQueue, &ulRxEvent, &lHigherPriorityTaskWoken ); - portYIELD_FROM_ISR( lHigherPriorityTaskWoken ); - EDMAC.EESR.LONG = emacRX_END_INTERRUPT; - } -} - diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/webserver/httpd-cgi.c b/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/webserver/httpd-cgi.c deleted file mode 100644 index 016644aa0..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/webserver/httpd-cgi.c +++ /dev/null @@ -1,277 +0,0 @@ -/** - * \addtogroup httpd - * @{ - */ - -/** - * \file - * Web server script interface - * \author - * Adam Dunkels - * - */ - -/* - * Copyright (c) 2001-2006, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: httpd-cgi.c,v 1.2 2006/06/11 21:46:37 adam Exp $ - * - */ -#include "net/uip.h" -#include "net/psock.h" -#include "apps/httpd/httpd.h" -#include "apps/httpd/httpd-cgi.h" -#include "apps/httpd/httpd-fs.h" - -#include -#include - -#include "FreeRTOS.h" -#include "task.h" - -HTTPD_CGI_CALL( file, "file-stats", file_stats ); -HTTPD_CGI_CALL( tcp, "tcp-connections", tcp_stats ); -HTTPD_CGI_CALL( net, "net-stats", net_stats ); -HTTPD_CGI_CALL( rtos, "rtos-stats", rtos_stats ); -HTTPD_CGI_CALL( run, "run-time", run_time ); -HTTPD_CGI_CALL( io, "led-io", led_io ); - -static const struct httpd_cgi_call *calls[] = { &file, &tcp, &net, &rtos, &run, &io, NULL }; - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( nullfunction ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - ( void ) PT_YIELD_FLAG; - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -httpd_cgifunction httpd_cgi( char *name ) -{ - const struct httpd_cgi_call **f; - - /* Find the matching name in the table, return the function. */ - for( f = calls; *f != NULL; ++f ) - { - if( strncmp((*f)->name, name, strlen((*f)->name)) == 0 ) - { - return( *f )->function; - } - } - - return nullfunction; -} - -/*---------------------------------------------------------------------------*/ -static unsigned short generate_file_stats( void *arg ) -{ - char *f = ( char * ) arg; - return sprintf( ( char * ) uip_appdata, "%5u", httpd_fs_count(f) ); -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( file_stats ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - - ( void ) PT_YIELD_FLAG; - - PSOCK_GENERATOR_SEND( &s->sout, generate_file_stats, strchr(ptr, ' ') + 1 ); - - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -static const char closed[] = /* "CLOSED",*/ { 0x43, 0x4c, 0x4f, 0x53, 0x45, 0x44, 0 }; -static const char syn_rcvd[] = /* "SYN-RCVD",*/ { 0x53, 0x59, 0x4e, 0x2d, 0x52, 0x43, 0x56, 0x44, 0 }; -static const char syn_sent[] = /* "SYN-SENT",*/ { 0x53, 0x59, 0x4e, 0x2d, 0x53, 0x45, 0x4e, 0x54, 0 }; -static const char established[] = /* "ESTABLISHED",*/ { 0x45, 0x53, 0x54, 0x41, 0x42, 0x4c, 0x49, 0x53, 0x48, 0x45, 0x44, 0 }; -static const char fin_wait_1[] = /* "FIN-WAIT-1",*/ { 0x46, 0x49, 0x4e, 0x2d, 0x57, 0x41, 0x49, 0x54, 0x2d, 0x31, 0 }; -static const char fin_wait_2[] = /* "FIN-WAIT-2",*/ { 0x46, 0x49, 0x4e, 0x2d, 0x57, 0x41, 0x49, 0x54, 0x2d, 0x32, 0 }; -static const char closing[] = /* "CLOSING",*/ { 0x43, 0x4c, 0x4f, 0x53, 0x49, 0x4e, 0x47, 0 }; -static const char time_wait[] = /* "TIME-WAIT,"*/ { 0x54, 0x49, 0x4d, 0x45, 0x2d, 0x57, 0x41, 0x49, 0x54, 0 }; -static const char last_ack[] = /* "LAST-ACK"*/ { 0x4c, 0x41, 0x53, 0x54, 0x2d, 0x41, 0x43, 0x4b, 0 }; - -static const char *states[] = { closed, syn_rcvd, syn_sent, established, fin_wait_1, fin_wait_2, closing, time_wait, last_ack }; - -static unsigned short generate_tcp_stats( void *arg ) -{ - struct uip_conn *conn; - struct httpd_state *s = ( struct httpd_state * ) arg; - - conn = &uip_conns[s->count]; - return sprintf( ( char * ) uip_appdata, - "\r\n", htons(conn->lport), - htons(conn->ripaddr.u16[0]) >> 8, htons(conn->ripaddr.u16[0]) & 0xff, htons(conn->ripaddr.u16[1]) >> 8, - htons(conn->ripaddr.u16[1]) & 0xff, htons(conn->rport), states[conn->tcpstateflags & UIP_TS_MASK], conn->nrtx, conn->timer, - (uip_outstanding(conn)) ? '*' : ' ', (uip_stopped(conn)) ? '!' : ' ' ); -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( tcp_stats ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - ( void ) PT_YIELD_FLAG; - for( s->count = 0; s->count < UIP_CONNS; ++s->count ) - { - if( (uip_conns[s->count].tcpstateflags & UIP_TS_MASK) != UIP_CLOSED ) - { - PSOCK_GENERATOR_SEND( &s->sout, generate_tcp_stats, s ); - } - } - - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -static unsigned short generate_net_stats( void *arg ) -{ - struct httpd_state *s = ( struct httpd_state * ) arg; - return sprintf( ( char * ) uip_appdata, "%5u\n", (( uip_stats_t * ) &uip_stat)[s->count] ); -} - -static PT_THREAD( net_stats ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - ( void ) PT_YIELD_FLAG; -#if UIP_STATISTICS - for( s->count = 0; s->count < sizeof(uip_stat) / sizeof(uip_stats_t); ++s->count ) - { - PSOCK_GENERATOR_SEND( &s->sout, generate_net_stats, s ); - } - -#endif /* UIP_STATISTICS */ - - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -extern void vTaskList( char *pcWriteBuffer ); -extern char *pcGetTaskStatusMessage( void ); -static char cCountBuf[128]; -long lRefreshCount = 0; -static unsigned short generate_rtos_stats( void *arg ) -{ - ( void ) arg; - lRefreshCount++; - sprintf( cCountBuf, "


Refresh count = %d


%s", ( int ) lRefreshCount, pcGetTaskStatusMessage() ); - vTaskList( ( char * ) uip_appdata ); - strcat( uip_appdata, cCountBuf ); - - return strlen( uip_appdata ); -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( rtos_stats ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - ( void ) PT_YIELD_FLAG; - PSOCK_GENERATOR_SEND( &s->sout, generate_rtos_stats, NULL ); - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -char *pcStatus; -unsigned long ulString; - -static unsigned short generate_io_state( void *arg ) -{ - extern long lParTestGetLEDState( unsigned long ulLED ); - ( void ) arg; - - /* Are the dynamically setable LEDs currently on or off? */ - if( lParTestGetLEDState( 3 ) ) - { - pcStatus = "checked"; - } - else - { - pcStatus = ""; - } - - sprintf( uip_appdata, "LED

", pcStatus ); - - return strlen( uip_appdata ); -} - -/*---------------------------------------------------------------------------*/ -extern void vTaskGetRunTimeStats( char *pcWriteBuffer ); -extern unsigned short usMaxJitter; -static char cJitterBuffer[ 200 ]; -static unsigned short generate_runtime_stats( void *arg ) -{ - ( void ) arg; - lRefreshCount++; - sprintf( cCountBuf, "


Refresh count = %d", ( int ) lRefreshCount ); - - #ifdef INCLUDE_HIGH_FREQUENCY_TIMER_TEST - { - sprintf( cJitterBuffer, "


Max high frequency timer jitter = %d peripheral clock periods.


", ( int ) usMaxJitter ); - vTaskGetRunTimeStats( ( char * ) uip_appdata ); - strcat( uip_appdata, cJitterBuffer ); - } - #else - { - ( void ) cJitterBuffer; - strcpy( uip_appdata, "

Run time stats are only available in the debug_with_optimisation build configuration.

" ); - } - #endif - - strcat( uip_appdata, cCountBuf ); - - return strlen( uip_appdata ); -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( run_time ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - ( void ) PT_YIELD_FLAG; - PSOCK_GENERATOR_SEND( &s->sout, generate_runtime_stats, NULL ); - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( led_io ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - ( void ) PT_YIELD_FLAG; - PSOCK_GENERATOR_SEND( &s->sout, generate_io_state, NULL ); - PSOCK_END( &s->sout ); -} - -/** @} */ diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/webserver/httpd-fs/404.html b/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/webserver/httpd-fs/404.html deleted file mode 100644 index 43e7f4cad..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/webserver/httpd-fs/404.html +++ /dev/null @@ -1,8 +0,0 @@ - - -

-

404 - file not found

-

Go here instead.

-
- - \ No newline at end of file diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/webserver/httpd-fs/index.html b/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/webserver/httpd-fs/index.html deleted file mode 100644 index 4937dc69a..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/webserver/httpd-fs/index.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Loading index.shtml. Click here if not automatically redirected. - - - - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/webserver/httpd-fs/index.shtml b/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/webserver/httpd-fs/index.shtml deleted file mode 100644 index 882d085ce..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/webserver/httpd-fs/index.shtml +++ /dev/null @@ -1,20 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS Homepage | IO | 37K jpg -

-


-

-

Task statistics

-Page will refresh every 2 seconds.

-

Task          State  Priority  Stack	#
************************************************
-%! rtos-stats -
-
- - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/webserver/httpd-fs/io.shtml b/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/webserver/httpd-fs/io.shtml deleted file mode 100644 index 819e2d39b..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/webserver/httpd-fs/io.shtml +++ /dev/null @@ -1,28 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS Homepage | IO | 37K jpg -

-


-LED and LCD IO
- -

- -Use the check box to turn on or off LED 4, then click "Update IO". - - -

-
-%! led-io -

- - -

- - - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/webserver/httpd-fs/runtime.shtml b/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/webserver/httpd-fs/runtime.shtml deleted file mode 100644 index 3464fd471..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/webserver/httpd-fs/runtime.shtml +++ /dev/null @@ -1,20 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS Homepage | IO | 37K jpg -

-


-

-

Run-time statistics

-Page will refresh every 2 seconds.

-

Task            Abs Time      % Time
****************************************
-%! run-time -
-
- - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/webserver/httpd-fs/stats.shtml b/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/webserver/httpd-fs/stats.shtml deleted file mode 100644 index f54118606..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/webserver/httpd-fs/stats.shtml +++ /dev/null @@ -1,47 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS Homepage | IO | 37K jpg -

-


-

-

Network statistics

-
LocalRemoteStateRetransmissionsTimerFlags
%d%u.%u.%u.%u:%u%s%u%u%c %c
-
-IP           Packets received
-             Packets sent
-             Forwaded
-             Dropped
-IP errors    IP version/header length
-             IP length, high byte
-             IP length, low byte
-             IP fragments
-             Header checksum
-             Wrong protocol
-ICMP	     Packets received
-             Packets sent
-             Packets dropped
-             Type errors
-             Checksum errors
-TCP          Packets received
-             Packets sent
-             Packets dropped
-             Checksum errors
-             Data packets without ACKs
-             Resets
-             Retransmissionsa
-             Syn to closed port
-UDP          Packets dropped
-             Packets received
-             Packets sent
-             Packets chkerr
-	     No connection avaliable
-
%! net-stats
-
- - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/webserver/httpd-fs/tcp.shtml b/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/webserver/httpd-fs/tcp.shtml deleted file mode 100644 index 23dcdcae3..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/webserver/httpd-fs/tcp.shtml +++ /dev/null @@ -1,21 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS Homepage | IO | 37K jpg -

-


-
-

Network connections

-

- - -%! tcp-connections - - - - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/webserver/httpd-fsdata.c b/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/webserver/httpd-fsdata.c deleted file mode 100644 index 47823d100..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/webserver/httpd-fsdata.c +++ /dev/null @@ -1,3871 +0,0 @@ -static const char data_404_html[] = { - /* /404.html */ - 0x2f, 0x34, 0x30, 0x34, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, 0xa, 0x20, 0x20, - 0x3c, 0x62, 0x6f, 0x64, 0x79, 0x20, 0x62, 0x67, 0x63, 0x6f, - 0x6c, 0x6f, 0x72, 0x3d, 0x22, 0x77, 0x68, 0x69, 0x74, 0x65, - 0x22, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x63, - 0x65, 0x6e, 0x74, 0x65, 0x72, 0x3e, 0xd, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x3c, 0x68, 0x31, 0x3e, 0x34, 0x30, - 0x34, 0x20, 0x2d, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x6e, - 0x6f, 0x74, 0x20, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x3c, 0x2f, - 0x68, 0x31, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x3c, 0x68, 0x33, 0x3e, 0x47, 0x6f, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x2f, 0x22, 0x3e, - 0x68, 0x65, 0x72, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x69, - 0x6e, 0x73, 0x74, 0x65, 0x61, 0x64, 0x2e, 0x3c, 0x2f, 0x68, - 0x33, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x2f, - 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x3e, 0xd, 0xa, 0x20, - 0x20, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xd, 0xa, - 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0}; - -static const char data_index_html[] = { - /* /index.html */ - 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x20, 0x6f, 0x6e, 0x4c, 0x6f, 0x61, 0x64, - 0x3d, 0x22, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x73, - 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x28, - 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x6c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x68, 0x72, 0x65, 0x66, 0x3d, - 0x27, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, - 0x6d, 0x6c, 0x27, 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x2c, - 0x31, 0x30, 0x30, 0x29, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x66, - 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, - 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xd, 0xa, 0x4c, - 0x6f, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x69, 0x6e, 0x64, - 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x2e, 0x20, - 0x20, 0x43, 0x6c, 0x69, 0x63, 0x6b, 0x20, 0x3c, 0x61, 0x20, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x68, - 0x65, 0x72, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x69, 0x66, - 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x61, 0x75, 0x74, 0x6f, 0x6d, - 0x61, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x6c, 0x79, 0x20, 0x72, - 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x65, 0x64, 0x2e, - 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xd, - 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xd, 0xa, - 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xd, 0xa, 0x3c, - 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, 0xa, 0xd, 0xa, -0}; - -static const char data_index_shtml[] = { - /* /index.shtml */ - 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x20, 0x6f, 0x6e, 0x4c, 0x6f, 0x61, 0x64, - 0x3d, 0x22, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x73, - 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x28, - 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x6c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x68, 0x72, 0x65, 0x66, 0x3d, - 0x27, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, - 0x6d, 0x6c, 0x27, 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x2c, - 0x32, 0x30, 0x30, 0x30, 0x29, 0x22, 0x3e, 0xd, 0xa, 0x3c, - 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, - 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xd, 0xa, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x53, 0x74, 0x61, - 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x72, 0x75, 0x6e, 0x74, 0x69, - 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x52, 0x75, 0x6e, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, - 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, - 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x54, 0x43, 0x50, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, - 0x6c, 0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, - 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, - 0x65, 0x65, 0x72, 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, - 0x2f, 0x22, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x20, 0x48, 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, - 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, - 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, - 0x66, 0x3d, 0x22, 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, - 0x6c, 0x22, 0x3e, 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0x20, - 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, - 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x6c, 0x6f, - 0x67, 0x6f, 0x2e, 0x6a, 0x70, 0x67, 0x22, 0x3e, 0x33, 0x37, - 0x4b, 0x20, 0x6a, 0x70, 0x67, 0x3c, 0x2f, 0x61, 0x3e, 0xd, - 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, - 0x3c, 0x68, 0x72, 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, - 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x32, 0x3e, 0x54, - 0x61, 0x73, 0x6b, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, - 0x74, 0x69, 0x63, 0x73, 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0xd, - 0xa, 0x50, 0x61, 0x67, 0x65, 0x20, 0x77, 0x69, 0x6c, 0x6c, - 0x20, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x20, 0x65, - 0x76, 0x65, 0x72, 0x79, 0x20, 0x32, 0x20, 0x73, 0x65, 0x63, - 0x6f, 0x6e, 0x64, 0x73, 0x2e, 0x3c, 0x70, 0x3e, 0xd, 0xa, - 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, - 0x3d, 0x22, 0x63, 0x6f, 0x75, 0x72, 0x69, 0x65, 0x72, 0x22, - 0x3e, 0x3c, 0x70, 0x72, 0x65, 0x3e, 0x54, 0x61, 0x73, 0x6b, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x53, 0x74, 0x61, 0x74, 0x65, 0x20, 0x20, 0x50, 0x72, 0x69, - 0x6f, 0x72, 0x69, 0x74, 0x79, 0x20, 0x20, 0x53, 0x74, 0x61, - 0x63, 0x6b, 0x9, 0x23, 0x3c, 0x62, 0x72, 0x3e, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x3c, 0x62, 0x72, 0x3e, - 0xd, 0xa, 0x25, 0x21, 0x20, 0x72, 0x74, 0x6f, 0x73, 0x2d, - 0x73, 0x74, 0x61, 0x74, 0x73, 0xd, 0xa, 0x3c, 0x2f, 0x70, - 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, - 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xd, - 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xd, 0xa, - 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, 0xa, 0xd, - 0xa, 0}; - -static const char data_io_shtml[] = { - /* /io.shtml */ - 0x2f, 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x6e, - 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, - 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x61, 0x20, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, - 0x61, 0x73, 0x6b, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x52, 0x75, 0x6e, - 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, 0x74, 0x61, 0x74, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x43, 0x50, - 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, - 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, - 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, 0x65, 0x65, 0x72, - 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x22, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x20, 0x48, - 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, - 0x6a, 0x70, 0x67, 0x22, 0x3e, 0x33, 0x37, 0x4b, 0x20, 0x6a, - 0x70, 0x67, 0x3c, 0x2f, 0x61, 0x3e, 0xd, 0xa, 0x3c, 0x62, - 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x72, - 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x3e, 0x4c, 0x45, 0x44, 0x20, - 0x61, 0x6e, 0x64, 0x20, 0x4c, 0x43, 0x44, 0x20, 0x49, 0x4f, - 0x3c, 0x2f, 0x62, 0x3e, 0x3c, 0x62, 0x72, 0x3e, 0xd, 0xa, - 0xd, 0xa, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0xd, 0xa, 0x55, - 0x73, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x68, 0x65, - 0x63, 0x6b, 0x20, 0x62, 0x6f, 0x78, 0x20, 0x74, 0x6f, 0x20, - 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6f, 0x6e, 0x20, 0x6f, 0x72, - 0x20, 0x6f, 0x66, 0x66, 0x20, 0x4c, 0x45, 0x44, 0x20, 0x34, - 0x2c, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x20, 0x63, 0x6c, 0x69, - 0x63, 0x6b, 0x20, 0x22, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x20, 0x49, 0x4f, 0x22, 0x2e, 0xd, 0xa, 0xd, 0xa, 0xd, - 0xa, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x72, - 0x6d, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x22, 0x61, 0x46, - 0x6f, 0x72, 0x6d, 0x22, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x3d, 0x22, 0x2f, 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, - 0x6d, 0x6c, 0x22, 0x20, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, - 0x3d, 0x22, 0x67, 0x65, 0x74, 0x22, 0x3e, 0xd, 0xa, 0x25, - 0x21, 0x20, 0x6c, 0x65, 0x64, 0x2d, 0x69, 0x6f, 0xd, 0xa, - 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x69, 0x6e, 0x70, 0x75, - 0x74, 0x20, 0x74, 0x79, 0x70, 0x65, 0x3d, 0x22, 0x73, 0x75, - 0x62, 0x6d, 0x69, 0x74, 0x22, 0x20, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x3d, 0x22, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, - 0x49, 0x4f, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, - 0x72, 0x6d, 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, - 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, - 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, - 0xd, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, - 0xa, 0xd, 0xa, 0}; - -static const char data_logo_jpg[] = { - /* /logo.jpg */ - 0x2f, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, 0x6a, 0x70, 0x67, 0, - 0xff, 0xd8, 0xff, 0xe0, 00, 0x10, 0x4a, 0x46, 0x49, 0x46, - 00, 0x1, 0x1, 00, 00, 0x1, 00, 0x1, 00, 00, - 0xff, 0xdb, 00, 0x43, 00, 0x3, 0x2, 0x2, 0x3, 0x2, - 0x2, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x3, 0x4, 0x5, - 0x8, 0x5, 0x5, 0x4, 0x4, 0x5, 0xa, 0x7, 0x7, 0x6, - 0x8, 0xc, 0xa, 0xc, 0xc, 0xb, 0xa, 0xb, 0xb, 0xd, - 0xe, 0x12, 0x10, 0xd, 0xe, 0x11, 0xe, 0xb, 0xb, 0x10, - 0x16, 0x10, 0x11, 0x13, 0x14, 0x15, 0x15, 0x15, 0xc, 0xf, - 0x17, 0x18, 0x16, 0x14, 0x18, 0x12, 0x14, 0x15, 0x14, 0xff, - 0xdb, 00, 0x43, 0x1, 0x3, 0x4, 0x4, 0x5, 0x4, 0x5, - 0x9, 0x5, 0x5, 0x9, 0x14, 0xd, 0xb, 0xd, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0xff, 0xc0, - 00, 0x11, 0x8, 0x1, 0x8, 0x2, 0xc2, 0x3, 0x1, 0x22, - 00, 0x2, 0x11, 0x1, 0x3, 0x11, 0x1, 0xff, 0xc4, 00, - 0x1f, 00, 00, 0x1, 0x5, 0x1, 0x1, 0x1, 0x1, 0x1, - 0x1, 00, 00, 00, 00, 00, 00, 00, 00, 0x1, - 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb, - 0xff, 0xc4, 00, 0xb5, 0x10, 00, 0x2, 0x1, 0x3, 0x3, - 0x2, 0x4, 0x3, 0x5, 0x5, 0x4, 0x4, 00, 00, 0x1, - 0x7d, 0x1, 0x2, 0x3, 00, 0x4, 0x11, 0x5, 0x12, 0x21, - 0x31, 0x41, 0x6, 0x13, 0x51, 0x61, 0x7, 0x22, 0x71, 0x14, - 0x32, 0x81, 0x91, 0xa1, 0x8, 0x23, 0x42, 0xb1, 0xc1, 0x15, - 0x52, 0xd1, 0xf0, 0x24, 0x33, 0x62, 0x72, 0x82, 0x9, 0xa, - 0x16, 0x17, 0x18, 0x19, 0x1a, 0x25, 0x26, 0x27, 0x28, 0x29, - 0x2a, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x43, 0x44, - 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x53, 0x54, 0x55, 0x56, - 0x57, 0x58, 0x59, 0x5a, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, - 0x69, 0x6a, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, - 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x92, 0x93, - 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0xa2, 0xa3, 0xa4, - 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xb2, 0xb3, 0xb4, 0xb5, - 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, - 0xc7, 0xc8, 0xc9, 0xca, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, - 0xd8, 0xd9, 0xda, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, - 0xe8, 0xe9, 0xea, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, - 0xf8, 0xf9, 0xfa, 0xff, 0xc4, 00, 0x1f, 0x1, 00, 0x3, - 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 00, - 00, 00, 00, 00, 00, 0x1, 0x2, 0x3, 0x4, 0x5, - 0x6, 0x7, 0x8, 0x9, 0xa, 0xb, 0xff, 0xc4, 00, 0xb5, - 0x11, 00, 0x2, 0x1, 0x2, 0x4, 0x4, 0x3, 0x4, 0x7, - 0x5, 0x4, 0x4, 00, 0x1, 0x2, 0x77, 00, 0x1, 0x2, - 0x3, 0x11, 0x4, 0x5, 0x21, 0x31, 0x6, 0x12, 0x41, 0x51, - 0x7, 0x61, 0x71, 0x13, 0x22, 0x32, 0x81, 0x8, 0x14, 0x42, - 0x91, 0xa1, 0xb1, 0xc1, 0x9, 0x23, 0x33, 0x52, 0xf0, 0x15, - 0x62, 0x72, 0xd1, 0xa, 0x16, 0x24, 0x34, 0xe1, 0x25, 0xf1, - 0x17, 0x18, 0x19, 0x1a, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x35, - 0x36, 0x37, 0x38, 0x39, 0x3a, 0x43, 0x44, 0x45, 0x46, 0x47, - 0x48, 0x49, 0x4a, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, - 0x5a, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x73, - 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x82, 0x83, 0x84, - 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x92, 0x93, 0x94, 0x95, - 0x96, 0x97, 0x98, 0x99, 0x9a, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, - 0xa7, 0xa8, 0xa9, 0xaa, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, - 0xb8, 0xb9, 0xba, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, - 0xc9, 0xca, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, - 0xda, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, - 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xff, - 0xda, 00, 0xc, 0x3, 0x1, 00, 0x2, 0x11, 0x3, 0x11, - 00, 0x3f, 00, 0xfd, 0x53, 0xa2, 0x8a, 0x28, 00, 0xa2, - 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, - 00, 0xaa, 0xf7, 0xfa, 0x85, 0xb6, 0x95, 0x67, 0x2d, 0xd5, - 0xe4, 0xf1, 0xdb, 0x5b, 0x44, 0xa5, 0x9e, 0x59, 0x58, 0x2a, - 0xa8, 0x1e, 0xf5, 0xc6, 0x7c, 0x4e, 0xf8, 0xb3, 0xa6, 0xfc, - 0x39, 0xb4, 0x48, 0xb0, 0xb7, 0xda, 0xd5, 0xc6, 0x5, 0xb6, - 0x9e, 0x8d, 0x86, 0x72, 0x4e, 0x37, 0x37, 0xf7, 0x57, 0xf9, - 0xf6, 0xaa, 0x16, 0x5f, 0xd, 0x9f, 0xc6, 0xd0, 0xc5, 0xa9, - 0xf8, 0xc6, 0xe1, 0xef, 0xa6, 0x99, 0x3, 0xa6, 0x9e, 0x84, - 0xad, 0xbd, 0xb6, 0x7b, 0x2a, 0xf7, 0x3e, 0xe7, 0x9a, 0xe0, - 0xa9, 0x89, 0xbc, 0xdd, 0x1a, 0xb, 0x9a, 0x6b, 0x7e, 0xcb, - 0xd5, 0xfe, 0x9b, 0x9c, 0xb2, 0xaf, 0x79, 0x3a, 0x74, 0xb5, - 0x92, 0xdf, 0xb2, 0xf5, 0xff, 00, 0x23, 0x93, 0xf1, 0xa7, - 0xed, 0x5f, 0xa1, 0x69, 0x1b, 0xa1, 0xd0, 0x2d, 0x64, 0xd6, - 0x2e, 0x1, 0xc7, 0x9b, 0x26, 0x62, 0x84, 0x7d, 0xf, 0x53, - 0xf9, 0x57, 0x91, 0x6b, 0x5f, 0xb5, 0xf, 0x8e, 0x35, 0x49, - 0x9, 0xb7, 0xba, 0xb7, 0xd3, 0x23, 0xec, 0x96, 0xd0, 0x29, - 0xfd, 0x5b, 0x26, 0xbe, 0x92, 0x7f, 0x81, 0x1e, 0xb, 0x7f, - 0xf9, 0x84, 0x46, 0x3e, 0x95, 0xb, 0xfe, 0xcf, 0xfe, 0xa, - 0x93, 0xae, 0x96, 0xa3, 0xe8, 0x6b, 0xc2, 0xaf, 0x84, 0xcd, - 0xab, 0xbb, 0xba, 0xa9, 0x2e, 0xc9, 0xb5, 0xfa, 0x5c, 0xf0, - 0xb1, 0x18, 0x4c, 0xce, 0xbb, 0xd2, 0xb2, 0x8a, 0xec, 0xb4, - 0xff, 00, 0x82, 0x7c, 0x91, 0x3f, 0xc6, 0xf, 0x19, 0x5c, - 0x48, 0x5d, 0xfc, 0x45, 0x7e, 0x58, 0xf5, 0xc4, 0xb8, 0x1f, - 0x90, 0xa7, 0x27, 0xc6, 0x5f, 0x1a, 0x46, 0xca, 0x57, 0xc4, - 0x57, 0xc0, 0xaf, 0x23, 0xf7, 0x99, 0xfe, 0x95, 0xf5, 0x73, - 0xfe, 0xce, 0x9e, 0x9, 0x7f, 0xf9, 0x87, 0x15, 0xfa, 0x35, - 0x43, 0x27, 0xec, 0xd7, 0xe0, 0xa7, 0xe9, 0x67, 0x2a, 0xfd, - 0x1e, 0xbc, 0xcf, 0xec, 0x7c, 0xc5, 0x3b, 0xa9, 0xff, 00, - 0xe4, 0xcc, 0xf3, 0x3f, 0xb1, 0xf3, 0x1d, 0xd5, 0x6f, 0xc5, - 0x9f, 0x31, 0x2f, 0xc7, 0x9f, 0x1e, 0x29, 0xcf, 0xfc, 0x24, - 0x77, 0x47, 0xea, 0x10, 0xff, 00, 0x4a, 0x9e, 0x2f, 0xda, - 0x17, 0xc7, 0xd1, 0xc, 0xf, 0x10, 0xcc, 0x7b, 0xfc, 0xd0, - 0xc6, 0x7f, 0x9a, 0xd7, 0xd1, 0xed, 0xfb, 0x31, 0xf8, 0x34, - 0xe7, 0x10, 0xce, 0x7, 0xfb, 0xff, 00, 0xfd, 0x6a, 0x81, - 0xff, 00, 0x65, 0xcf, 0x8, 0x37, 0x4f, 0xb4, 0x83, 0xfe, - 0xf0, 0xa7, 0xfd, 0x99, 0x9a, 0xad, 0xaa, 0x7f, 0xe4, 0xcc, - 0x3f, 0xb2, 0xf3, 0x45, 0xb5, 0x6f, 0xc5, 0x9f, 0x3d, 0xff, - 00, 0xc3, 0x46, 0x7c, 0x40, 0xff, 00, 0xa0, 0xfb, 0xff, - 00, 0xe0, 0x3c, 0x5f, 0xfc, 0x4d, 0x48, 0xbf, 0xb4, 0x8f, - 0x8f, 0xd4, 0xe7, 0xfb, 0x6f, 0x3e, 0xc6, 0xda, 0x2f, 0xfe, - 0x26, 0xbd, 0xe9, 0xff, 00, 0x65, 0x6f, 0x9, 0xb6, 0x71, - 0x25, 0xd0, 0xff, 00, 0x81, 0xa, 0x85, 0xff, 00, 0x64, - 0xff, 00, 0xb, 0x30, 0xe2, 0xe6, 0xed, 0x4f, 0xd4, 0x51, - 0xfd, 0x9d, 0x9b, 0x2f, 0xb6, 0xff, 00, 0xf0, 0x26, 0x1f, - 0xd9, 0xd9, 0xb2, 0xda, 0xb7, 0xfe, 0x4c, 0xcf, 0x11, 0x5f, - 0xda, 0x63, 0xc7, 0xca, 0x79, 0xd5, 0xa3, 0x6f, 0x63, 0x6b, - 0x1f, 0xf8, 0x54, 0xcb, 0xfb, 0x50, 0x78, 0xf1, 0x40, 0x1f, - 0x6f, 0xb6, 0x3e, 0xe6, 0xd5, 0x2b, 0xd8, 0x5b, 0xf6, 0x49, - 0xf0, 0xd1, 0xe9, 0x7f, 0x76, 0xbe, 0xdc, 0x54, 0xf, 0xfb, - 0x22, 0xe8, 0x24, 0x7c, 0xba, 0xa5, 0xd0, 0x3f, 0xee, 0x8a, - 0x5f, 0x52, 0xce, 0x17, 0xda, 0x7f, 0xf8, 0x17, 0xfc, 0x10, - 0xfa, 0x8e, 0x70, 0xbf, 0xe5, 0xef, 0xfe, 0x4c, 0x79, 0x7a, - 0xfe, 0xd5, 0x9e, 0x38, 0x4, 0x66, 0x4d, 0x3d, 0xb1, 0xd8, - 0xda, 0xf5, 0xfd, 0x6a, 0x55, 0xfd, 0xac, 0x7c, 0x6a, 0xbd, - 0x53, 0x4c, 0x6f, 0xad, 0xb3, 0x7f, 0xf1, 0x55, 0xe8, 0xcf, - 0xfb, 0x21, 0x68, 0xe7, 0xee, 0xea, 0xd7, 0x3, 0xea, 0xa2, - 0xa0, 0x7f, 0xd9, 0x3, 0x4e, 0x39, 0xdb, 0xac, 0x4c, 0x3e, - 0xa8, 0x29, 0xfd, 0x5b, 0x39, 0x5f, 0x69, 0xff, 00, 0xe0, - 0x48, 0x3e, 0xa9, 0x9d, 0x2f, 0xf9, 0x79, 0xf8, 0x9c, 0x18, - 0xfd, 0xad, 0x3c, 0x67, 0xff, 00, 0x3c, 0x74, 0xbf, 0xfc, - 0x7, 0x6f, 0xfe, 0x2e, 0x9e, 0x3f, 0x6b, 0x6f, 0x18, 0x77, - 0xb6, 0xd2, 0xcf, 0xfd, 0xb0, 0x7f, 0xfe, 0x2e, 0xbb, 0x37, - 0xfd, 0x8f, 0xac, 0xff, 00, 0x87, 0x5a, 0x93, 0xf1, 0x41, - 0x50, 0xbf, 0xec, 0x7b, 0x11, 0xfb, 0xba, 0xe3, 0xf, 0xac, - 0x74, 0x7b, 0x1c, 0xe9, 0x75, 0x7f, 0x7a, 0x17, 0xd5, 0xf3, - 0xb5, 0xf6, 0xff, 00, 0x14, 0x72, 0xc9, 0xfb, 0x5d, 0x78, - 0xb1, 0x4f, 0xcd, 0x63, 0xa5, 0xb0, 0xf4, 0xf2, 0x9c, 0x7f, - 0xec, 0xd5, 0x62, 0x2f, 0xda, 0xff, 00, 0xc4, 0x8a, 0xb8, - 0x7d, 0x27, 0x4d, 0x73, 0xea, 0x3, 0x8f, 0xfd, 0x9a, 0xb6, - 0x9f, 0xf6, 0x3d, 0x71, 0x8d, 0x9a, 0xd8, 0x3f, 0x58, 0xea, - 0x17, 0xfd, 0x8f, 0xee, 0x81, 0x3b, 0x75, 0x98, 0xcf, 0xa6, - 0x52, 0xa7, 0x93, 0x3a, 0x5f, 0xcd, 0xf7, 0xa0, 0xf6, 0x79, - 0xe2, 0xfb, 0x5f, 0x91, 0x4d, 0x7f, 0x6c, 0x4d, 0x6c, 0x1, - 0xbb, 0x42, 0xb0, 0x27, 0xb9, 0xe, 0xe3, 0x35, 0x3a, 0x7e, - 0xd8, 0xda, 0x98, 0x3f, 0x37, 0x87, 0x6d, 0x8, 0xf6, 0xb8, - 0x61, 0xfd, 0x29, 0xad, 0xfb, 0x21, 0x6a, 0x40, 0x71, 0xaa, - 0xc2, 0x4f, 0xa6, 0xda, 0x85, 0xff, 00, 0x64, 0x4d, 0x60, - 0x1f, 0x97, 0x53, 0x80, 0xfe, 0x14, 0xef, 0x9d, 0xae, 0xff, - 00, 0x80, 0x7f, 0xc2, 0xe2, 0xeb, 0xf9, 0x17, 0x7, 0xed, - 0x8f, 0x7b, 0xdf, 0xc3, 0x56, 0xdf, 0x85, 0xd3, 0x7f, 0xf1, - 0x35, 0x22, 0xfe, 0xd8, 0xf7, 0x3c, 0x6e, 0xf0, 0xd4, 0x3e, - 0xf8, 0xba, 0x3f, 0xfc, 0x4d, 0x64, 0x37, 0xec, 0x8f, 0xaf, - 0x1, 0xf2, 0xdf, 0xdb, 0x93, 0xe8, 0x6a, 0x16, 0xfd, 0x92, - 0xfc, 0x48, 0xf, 0xcb, 0x75, 0x6c, 0x47, 0xae, 0xea, 0x4e, - 0xae, 0x74, 0xbf, 0x9b, 0xee, 0x42, 0xe7, 0xcf, 0x17, 0xfc, - 0x32, 0x3a, 0x45, 0xfd, 0xb1, 0xf9, 0xf9, 0xbc, 0x32, 0x31, - 0xed, 0x77, 0xff, 00, 0xd8, 0xd4, 0xf1, 0xfe, 0xd8, 0xf6, - 0xd8, 0x3b, 0xfc, 0x37, 0x26, 0x7b, 0x6d, 0xba, 0x1f, 0xfc, - 0x4d, 0x71, 0x6f, 0xfb, 0x29, 0x78, 0xa9, 0x46, 0x43, 0xdb, - 0x93, 0xe9, 0xbc, 0x54, 0x2f, 0xfb, 0x2c, 0x78, 0xb5, 0x71, - 0x81, 0x9, 0xfa, 0x38, 0xa5, 0xf5, 0x9c, 0xe5, 0x74, 0x97, - 0xfe, 0x2, 0xbf, 0xc8, 0x7e, 0xdf, 0x3b, 0x5f, 0x67, 0xf0, - 0x47, 0xa2, 0x45, 0xfb, 0x62, 0xe9, 0x45, 0x7, 0x99, 0xe1, - 0xeb, 0xb0, 0xfe, 0x8b, 0x3a, 0x11, 0xfc, 0xaa, 0xc2, 0x7e, - 0xd8, 0x3a, 0x1, 0xc6, 0xfd, 0xf, 0x50, 0x5f, 0x5c, 0x3a, - 0x1f, 0xeb, 0x5e, 0x58, 0xff, 00, 0xb2, 0xff, 00, 0x8c, - 0x57, 0x38, 0x82, 0x26, 0xc7, 0xfb, 0x62, 0xa2, 0x6f, 0xd9, - 0x97, 0xc6, 0x63, 0x18, 0xb4, 0x43, 0xf4, 0x71, 0x4f, 0xeb, - 0xb9, 0xc2, 0xfb, 0x2f, 0xff, 00, 0x1, 0xff, 00, 0x80, - 0x1f, 0x5a, 0xce, 0x97, 0xd8, 0xfc, 0x11, 0xeb, 0xa3, 0xf6, - 0xbe, 0xf0, 0xd7, 0x7d, 0x23, 0x53, 0x1f, 0xf7, 0xef, 0xff, - 00, 0x8a, 0xa7, 0xaf, 0xed, 0x79, 0xe1, 0x72, 0x39, 0xd2, - 0xf5, 0x31, 0xff, 00, 0x1, 0x4f, 0xfe, 0x2a, 0xbc, 0x61, - 0xff, 00, 0x66, 0xcf, 0x1a, 0xa6, 0x71, 0xa7, 0x86, 0xc7, - 0xa3, 0x8a, 0x85, 0xff, 00, 0x67, 0x5f, 0x1b, 0xa0, 0xcf, - 0xf6, 0x53, 0x1f, 0xa3, 0xa, 0x3f, 0xb4, 0x33, 0x65, 0xf6, - 0x5f, 0xfe, 0x3, 0xff, 00, 00, 0x5f, 0x5e, 0xce, 0x56, - 0xf4, 0xff, 00, 0x3, 0xdc, 0x47, 0xed, 0x71, 0xe1, 0x42, - 0x46, 0x74, 0xfd, 0x4c, 0xf, 0xf7, 0x13, 0xff, 00, 0x8a, - 0xa9, 0xe3, 0xfd, 0xac, 0xfc, 0x1e, 0xc4, 0xee, 0xb6, 0xd4, - 0x90, 0x7f, 0xd7, 0x15, 0x3f, 0xfb, 0x35, 0x78, 0x3, 0x7e, - 0xcf, 0xfe, 0x36, 0x52, 0x47, 0xf6, 0x3c, 0x9f, 0x81, 0x15, - 0xb, 0xfc, 0x9, 0xf1, 0xa2, 0xc, 0xff, 00, 0x63, 0x4c, - 0x7e, 0x98, 0xa5, 0xfd, 0xa7, 0x9a, 0x2d, 0xe2, 0xff, 00, - 0xf0, 0x16, 0x1f, 0xda, 0x39, 0xba, 0xde, 0x9f, 0xe0, 0x7d, - 0x19, 0x1f, 0xed, 0x59, 0xe0, 0x97, 0x5c, 0xb7, 0xf6, 0x8a, - 0x1f, 0x43, 0x6c, 0xf, 0xfe, 0xcd, 0x53, 0xaf, 0xed, 0x4b, - 0xe0, 0x43, 0x8c, 0xdc, 0x5e, 0x8f, 0xad, 0xab, 0x71, 0x5f, - 0x33, 0xb7, 0xc1, 0x2f, 0x19, 0x29, 0xff, 00, 0x90, 0x2d, - 0xc7, 0xe5, 0x50, 0x37, 0xc1, 0xcf, 0x18, 0x20, 0xc9, 0xd1, - 0x2e, 0x71, 0xec, 0xb5, 0x5f, 0xda, 0xf9, 0x92, 0xde, 0x1f, - 0xf9, 0x2b, 0xf, 0xed, 0x5c, 0xd5, 0x6f, 0x4b, 0xf0, 0x7f, - 0xe6, 0x7d, 0x48, 0x3f, 0x69, 0xff, 00, 0x1, 0x1f, 0xf9, - 0x7f, 0xba, 0x1f, 0xf6, 0xe8, 0xff, 00, 0xe1, 0x4e, 0x1f, - 0xb4, 0xe7, 0x80, 0x4f, 0xfc, 0xc4, 0x6e, 0x7, 0xd6, 0xd1, - 0xff, 00, 0xc2, 0xbe, 0x54, 0x7f, 0x84, 0xde, 0x2d, 0x8f, - 0xae, 0x87, 0x77, 0xf8, 0x25, 0x40, 0xdf, 0xc, 0xfc, 0x50, - 0xa0, 0x93, 0xa3, 0x5d, 0xf1, 0xff, 00, 0x4c, 0xcd, 0x27, - 0x9d, 0x66, 0xb, 0xec, 0x2f, 0xfc, 0x5, 0xff, 00, 0x98, - 0xbf, 0xb6, 0x33, 0x35, 0xbd, 0x2f, 0xc1, 0xff, 00, 0x99, - 0xf5, 0xa8, 0xfd, 0xa5, 0xfc, 0x2, 0x46, 0x7f, 0xb5, 0x26, - 0x1f, 0x5b, 0x57, 0xff, 00, 0xa, 0x9d, 0x3f, 0x68, 0xdf, - 00, 0xb9, 0xc7, 0xf6, 0xd1, 0x5f, 0x76, 0xb7, 0x93, 0xff, - 00, 0x89, 0xaf, 0x8f, 0x9b, 0xe1, 0xe7, 0x89, 0x13, 0x19, - 0xd2, 0x2e, 0xc6, 0x7f, 0xe9, 0x99, 0xa8, 0xdb, 0xc0, 0xbe, - 0x20, 0x4c, 0xe7, 0x4a, 0xbb, 0x18, 0xeb, 0xfb, 0xb3, 0x4b, - 0xfb, 0x73, 0x1c, 0xb7, 0x82, 0xfb, 0x9f, 0xf9, 0x87, 0xf6, - 0xd6, 0x60, 0xb7, 0xa5, 0xf8, 0x3f, 0xf3, 0x3e, 0xcc, 0x8f, - 0xf6, 0x84, 0xf0, 0xc, 0x99, 0xff, 00, 0x89, 0xfc, 0x6b, - 0x8f, 0xef, 0x43, 0x20, 0xff, 00, 0xd9, 0x6a, 0x75, 0xf8, - 0xf1, 0xe0, 0x26, 0x50, 0x47, 0x88, 0xed, 0xb9, 0xf5, 0x57, - 0x1f, 0xd2, 0xbe, 0x27, 0x6f, 0x7, 0x6b, 0x8b, 0xd7, 0x4c, - 0xba, 0x1f, 0xf6, 0xcc, 0xd4, 0x6d, 0xe1, 0x6d, 0x65, 0x9, - 0x7, 0x4e, 0xba, 0x18, 0xff, 00, 0xa6, 0x66, 0x9f, 0xf6, - 0xfe, 0x2d, 0x6f, 0x5, 0xf7, 0x3f, 0xf3, 0x1f, 0xf6, 0xee, - 0x35, 0x6f, 0x47, 0xf0, 0x67, 0xdc, 0x23, 0xe3, 0x87, 0x81, - 0xf, 0xfc, 0xcc, 0xd6, 0x5f, 0x99, 0xff, 00, 0xa, 0x92, - 0x3f, 0x8d, 0x3e, 0x7, 0x90, 0x90, 0xbe, 0x26, 0xb0, 0xe3, - 0xd6, 0x4c, 0x7f, 0x4a, 0xf8, 0x54, 0xe8, 0x1a, 0xa2, 0x8c, - 0x9b, 0x1b, 0x80, 0x3f, 0xeb, 0x99, 0xa6, 0x1d, 0x1b, 0x51, - 0x5e, 0xb6, 0x93, 0x8f, 0xf8, 0x1, 0xa7, 0xfe, 0xb0, 0xe2, - 0x7f, 0x92, 0x3f, 0x8f, 0xf9, 0x87, 0xf6, 0xfe, 0x2f, 0xad, - 0x1f, 0xcc, 0xfb, 0xc9, 0x7e, 0x2f, 0x78, 0x2d, 0x86, 0x47, - 0x89, 0x74, 0xec, 0x7f, 0xd7, 0x61, 0x53, 0x47, 0xf1, 0x4f, - 0xc2, 0x12, 0x90, 0x17, 0xc4, 0x7a, 0x71, 0x27, 0xa7, 0xfa, - 0x42, 0xd7, 0xc0, 0xa7, 0x4b, 0xbe, 0x1d, 0x6d, 0xa5, 0x1f, - 0xf0, 0x3, 0x4d, 0x3a, 0x7d, 0xe2, 0xf5, 0xb7, 0x97, 0xfe, - 0xf8, 0x34, 0x7f, 0xac, 0x55, 0xfa, 0xc2, 0x3f, 0x88, 0xff, - 00, 0xd6, 0x1c, 0x42, 0xde, 0x8f, 0xe6, 0x7e, 0x82, 0xc3, - 0xf1, 0xb, 0xc3, 0x17, 0xd, 0xb6, 0x3f, 0x10, 0x69, 0xac, - 0x7a, 0xe3, 0xed, 0x28, 0x3f, 0xad, 0x5a, 0x4f, 0x17, 0xe8, - 0x52, 0x2e, 0x53, 0x59, 0xb0, 0x61, 0xea, 0x2e, 0x50, 0xff, - 00, 0x5a, 0xfc, 0xee, 0x36, 0xb7, 0x23, 0xac, 0x2e, 0x3f, - 0xe0, 0x26, 0x9a, 0x61, 0x98, 0x7f, 0xcb, 0x36, 0xfc, 0xaa, - 0xd7, 0x12, 0x54, 0xeb, 0x4d, 0x7d, 0xe5, 0x2e, 0x23, 0xab, - 0xd6, 0x8f, 0xe3, 0xff, 00, 00, 0xfd, 0x1c, 0x1a, 0xee, - 0x9a, 0x71, 0x8d, 0x42, 0xd4, 0xe7, 0xfe, 0x9b, 0x2f, 0xf8, - 0xd3, 0x86, 0xb3, 0xa7, 0x9e, 0x97, 0xd6, 0xc7, 0xfe, 0xdb, - 0x2f, 0xf8, 0xd7, 0xe7, 0x6, 0xc9, 0x47, 0xf0, 0x37, 0xe5, - 0x47, 0xef, 0x57, 0xb3, 0xa, 0xd3, 0xfd, 0x64, 0x97, 0xfc, - 0xfa, 0x5f, 0x7f, 0xfc, 0x1, 0xff, 00, 0xac, 0x92, 0xff, - 00, 0x9f, 0x3f, 0x8f, 0xfc, 0x3, 0xf4, 0x84, 0x6a, 0xb6, - 0x47, 0xa5, 0xe4, 0x7, 0xe9, 0x2a, 0xff, 00, 0x8d, 0x38, - 0x6a, 0x16, 0xad, 0x8c, 0x5c, 0xc2, 0x73, 0xe9, 0x20, 0xaf, - 0xcd, 0xc1, 0x24, 0xc3, 0xa1, 0x61, 0xf9, 0xd3, 0x85, 0xcd, - 0xc2, 0xf4, 0x77, 0x18, 0xff, 00, 0x68, 0xd3, 0x5c, 0x48, - 0xff, 00, 0xe7, 0xd7, 0xe3, 0xff, 00, 00, 0x7f, 0xeb, - 0x2f, 0x7a, 0x5f, 0x8f, 0xfc, 0x3, 0xf4, 0x95, 0x67, 0x8d, - 0xce, 0x16, 0x44, 0x63, 0xe8, 0x18, 0x1a, 0x7e, 0x47, 0xad, - 0x7e, 0x6d, 0xae, 0xa7, 0x7a, 0x87, 0x2b, 0x73, 0x32, 0x9f, - 0x51, 0x21, 0x1f, 0xd6, 0xa4, 0x1a, 0xe6, 0xa2, 0xbd, 0x2f, - 0x6e, 0x47, 0xd2, 0x66, 0xff, 00, 0x1a, 0xa5, 0xc4, 0x9d, - 0xe9, 0x7e, 0x3f, 0xf0, 0xa, 0xff, 00, 0x59, 0x63, 0xff, - 00, 0x3e, 0xbf, 0x1f, 0xf8, 0x7, 0xe9, 0x6, 0x45, 0x19, - 0xaf, 0xce, 0x31, 0xe2, 0x4d, 0x58, 0xc, 0xd, 0x4a, 0xf0, - 0xf, 0x69, 0xdf, 0xfc, 0x69, 0xc3, 0xc5, 0x3a, 0xc8, 0x3c, - 0x6a, 0x97, 0xc0, 0xff, 00, 0xd7, 0xc3, 0xff, 00, 0x8d, - 0x5f, 0xfa, 0xc7, 0x1f, 0xf9, 0xf5, 0xf8, 0xff, 00, 0xc0, - 0x1f, 0xfa, 0xcb, 0x4f, 0xfe, 0x7d, 0x3f, 0xbf, 0xfe, 0x1, - 0xfa, 0x35, 0x9a, 0x5a, 0xfc, 0xe8, 0x5f, 0x18, 0xeb, 0xb1, - 0xe4, 0x2e, 0xb1, 0x7e, 0xb9, 0xeb, 0x8b, 0x97, 0xe7, 0xf5, - 0xa9, 0x53, 0xc7, 0x7e, 0x22, 0x89, 0x76, 0xae, 0xb9, 0xa9, - 0x28, 0xf4, 0x17, 0x6f, 0xfe, 0x34, 0x7f, 0xac, 0x71, 0xff, - 00, 0x9f, 0x5f, 0x8f, 0xfc, 0x2, 0x97, 0x12, 0xd2, 0xeb, - 0x4d, 0xfd, 0xe7, 0xe8, 0x95, 0x15, 0xf9, 0xe8, 0x9f, 0x12, - 0xbc, 0x55, 0x19, 0x5, 0x7c, 0x43, 0xaa, 0x2, 0x3a, 0x7f, - 0xa5, 0xbf, 0xf8, 0xd4, 0xf1, 0xfc, 0x57, 0xf1, 0x84, 0x59, - 0xdb, 0xe2, 0x5d, 0x50, 0x67, 0xfe, 0x9e, 0x9f, 0xfc, 0x6a, - 0xd7, 0x11, 0xd3, 0xeb, 0x4d, 0xfd, 0xe8, 0xb5, 0xc4, 0x94, - 0x3a, 0xc1, 0xfe, 0x7, 0xe8, 0x25, 0x15, 0xf0, 00, 0xf8, - 0xc3, 0xe3, 0x40, 0x38, 0xf1, 0x3e, 0xa9, 0xff, 00, 0x81, - 0xd, 0x4f, 0x1f, 0x19, 0xbc, 0x6c, 0xe, 0x7f, 0xe1, 0x26, - 0xd4, 0x7f, 0xef, 0xf1, 0xaa, 0xff, 00, 0x58, 0xa8, 0xff, - 00, 0xcf, 0xb7, 0xf8, 0xf, 0xfd, 0x64, 0xc3, 0xff, 00, - 0x23, 0xfc, 0xf, 0xbf, 0x28, 0xaf, 0x82, 0x57, 0xe3, 0x8f, - 0x8e, 0x54, 0xe4, 0x78, 0x92, 0xf8, 0xfd, 0x5c, 0x7f, 0x85, - 0x4a, 0x9f, 0x1e, 0x3c, 0x74, 0x99, 0xc7, 0x88, 0xae, 0xcf, - 0xd7, 0x7, 0xfa, 0x53, 0xff, 00, 0x58, 0xa8, 0x7f, 0xcf, - 0xb9, 0x7e, 0x1f, 0xe6, 0x5a, 0xe2, 0x3c, 0x2f, 0xf2, 0xbf, - 0xc3, 0xfc, 0xcf, 0xbc, 0x68, 0xaf, 0x86, 0x23, 0xfd, 0xa1, - 0xfc, 0x7b, 0x18, 0x51, 0xfd, 0xbd, 0x23, 0x6d, 0xfe, 0xf4, - 0x48, 0x73, 0xf5, 0xe2, 0xac, 0xc7, 0xfb, 0x4a, 0xf8, 0xf6, - 0x37, 0xdd, 0xfd, 0xae, 0x8d, 0xec, 0xd6, 0xd1, 0x91, 0xfc, - 0xaa, 0xd7, 0x10, 0xe1, 0xba, 0xc2, 0x5f, 0x87, 0xf9, 0x96, - 0xb8, 0x8b, 0x9, 0xd9, 0xfd, 0xcb, 0xfc, 0xcf, 0xb7, 0xa8, - 0xaf, 0x8a, 0x17, 0xf6, 0x9f, 0xf1, 0xe8, 0x1c, 0xea, 0x36, - 0xed, 0xf5, 0xb4, 0x4f, 0xf0, 0xa7, 0x8f, 0xda, 0x8b, 0xc7, - 0x7f, 0xf3, 0xfb, 0x69, 0xff, 00, 0x80, 0xab, 0x57, 0xfe, - 0xb0, 0x61, 0x7b, 0x4b, 0xee, 0x5f, 0xe6, 0x57, 0xfa, 0xc3, - 0x83, 0xf3, 0xfb, 0xbf, 0xe0, 0x9f, 0x6a, 0x51, 0x5f, 0x17, - 0xaf, 0xed, 0x4f, 0xe3, 0x90, 0x46, 0x6e, 0x2c, 0xdb, 0xd8, - 0xdb, 0xa, 0x9e, 0x2f, 0xda, 0xb7, 0xc6, 0xb1, 0xb1, 0x2c, - 0x74, 0xf9, 0x6, 0x3a, 0x35, 0xb9, 0xfe, 0x86, 0x9f, 0xfa, - 0xc1, 0x84, 0xed, 0x2f, 0xbb, 0xfe, 0x9, 0x4b, 0x88, 0x30, - 0x5d, 0xdf, 0xdc, 0x7d, 0x93, 0x45, 0x7c, 0x7e, 0xbf, 0xb5, - 0xbf, 0x8b, 0x82, 0x80, 0x6d, 0x34, 0xb6, 0x3e, 0xbe, 0x4b, - 0xff, 00, 0xf1, 0x55, 0x3a, 0x7e, 0xd7, 0x9e, 0x29, 0xc, - 0xb, 0x69, 0xba, 0x5b, 0xe, 0xe3, 0x63, 0x8f, 0xfd, 0x9a, - 0xad, 0x67, 0xd8, 0x3f, 0x3f, 0xb8, 0xb5, 0x9f, 0x60, 0x7f, - 0x99, 0xfd, 0xc7, 0xd7, 0x34, 0x57, 0xc9, 0xab, 0xfb, 0x60, - 0xf8, 0x88, 0x67, 0x76, 0x8d, 0xa6, 0x1f, 0xa1, 0x90, 0x7f, - 0xec, 0xd4, 0xf1, 0xfb, 0x61, 0xeb, 0xdd, 0xf4, 0x3d, 0x37, - 0xfe, 0xfa, 0x93, 0xfc, 0x6a, 0xbf, 0xb7, 0x70, 0x5f, 0xcc, - 0xfe, 0xe6, 0x57, 0xf6, 0xee, 0x7, 0xf9, 0x9f, 0xdc, 0xcf, - 0xab, 0xe8, 0xaf, 0x94, 0xd7, 0xf6, 0xc4, 0xd6, 0xf8, 0xce, - 0x85, 0xa7, 0x9f, 0xa4, 0x8f, 0xfe, 0x35, 0x22, 0xfe, 0xd8, - 0x9a, 0xb6, 0x79, 0xd0, 0x2c, 0x88, 0xf6, 0x99, 0xe9, 0xff, - 00, 0x6e, 0x60, 0xbf, 0x99, 0xfd, 0xcc, 0x7f, 0xdb, 0x98, - 0x1f, 0xe7, 0xfc, 0x19, 0xf5, 0x45, 0x15, 0xf2, 0xf4, 0x7f, - 0xb6, 0x35, 0xe8, 0x5f, 0x9f, 0xc3, 0x76, 0xe5, 0xbd, 0x56, - 0xe9, 0x80, 0xff, 00, 0xd0, 0x6a, 0x65, 0xfd, 0xb2, 0x26, - 0xe3, 0x3e, 0x18, 0x8f, 0xdf, 0x17, 0x87, 0xff, 00, 0x88, - 0xaa, 0x59, 0xde, 0x7, 0xf9, 0xff, 00, 0x7, 0xfe, 0x45, - 0x2c, 0xeb, 0x2, 0xff, 00, 0xe5, 0xe7, 0xe0, 0xff, 00, - 0xc8, 0xfa, 0x6e, 0x8a, 0xf9, 0xba, 0x3f, 0xdb, 0x22, 0xc, - 0xfc, 0xfe, 0x17, 0x90, 0xf, 0xf6, 0x6f, 0x47, 0xff, 00, - 0x11, 0x5b, 0xda, 0x47, 0xed, 0x6f, 0xe1, 0x6b, 0xb8, 0xd7, - 0xed, 0xf6, 0x37, 0xf6, 0x12, 0x13, 0x82, 0x15, 0x56, 0x55, - 0x3, 0xd7, 0x20, 0x83, 0xfa, 0x56, 0xb0, 0xcd, 0xf0, 0x33, - 0x76, 0x55, 0x3f, 0x35, 0xf9, 0xa3, 0x58, 0x66, 0xd8, 0x29, - 0xbb, 0x2a, 0x8b, 0xf1, 0x5f, 0x99, 0xee, 0x74, 0x57, 0x31, - 0xe1, 0xaf, 0x89, 0x9e, 0x17, 0xf1, 0x7b, 0x4, 0xd2, 0x75, - 0xbb, 0x4b, 0xb9, 0x8f, 0x3e, 0x4e, 0xfd, 0xb2, 0x7f, 0xdf, - 0x2d, 0x83, 0xfa, 0x57, 0x4f, 0x5e, 0xac, 0x2a, 0x42, 0xa2, - 0xe6, 0x83, 0xba, 0xf2, 0x3d, 0x48, 0x4e, 0x15, 0x17, 0x34, - 0x1d, 0xd7, 0x90, 0x51, 0x45, 0x15, 0x65, 0x85, 0x14, 0x51, - 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, - 0x14, 0x51, 0x40, 0x5, 0x70, 0x7f, 0x18, 0x7e, 0x28, 0xdb, - 0x7c, 0x2f, 0xf0, 0xc3, 0xdd, 0xfe, 0xee, 0x7d, 0x4e, 0x73, - 0xe5, 0xda, 0x5a, 0xbb, 0x63, 0x7b, 0x77, 0x62, 0x3a, 0xed, - 0x1d, 0x4f, 0xe0, 0x3b, 0xd7, 0x75, 0x24, 0x8b, 0x12, 0x33, - 0xbb, 0x5, 0x45, 0x4, 0x96, 0x3d, 00, 0xaf, 0x82, 0x7e, - 0x32, 0x7c, 0x40, 0x7f, 0x88, 0xde, 0x3a, 0xbd, 0xbf, 0x57, - 0x26, 0xc2, 0x13, 0xf6, 0x7b, 0x34, 0xcf, 0x2, 0x35, 0x3d, - 0x7f, 0xe0, 0x47, 0x27, 0xf1, 0xaf, 0x17, 0x35, 0xc6, 0xbc, - 0x1d, 0xf, 0x73, 0xe2, 0x96, 0x8b, 0xfc, 0xcf, 0xf, 0x37, - 0xc7, 0xfd, 0x46, 0x87, 0xb9, 0xf1, 0xcb, 0x45, 0xfe, 0x7f, - 0x23, 0xa3, 0xf8, 0x39, 0xa7, 0xea, 0x1f, 0x13, 0x7e, 0x2a, - 0xc5, 0xa9, 0x6a, 0x92, 0xbd, 0xe3, 0xac, 0x86, 0xe2, 0x79, - 0x24, 0x39, 0xfa, 0xf, 0x61, 0xe8, 0x2b, 0xed, 0x40, 0x2, - 0x80, 0x7, 00, 0x57, 0x83, 0xfe, 0xca, 0x7e, 0x10, 0xfe, - 0xcc, 0xf0, 0xd5, 0xce, 0xb1, 0x34, 0x78, 0x9a, 0xe9, 0xf6, - 0xa1, 0x23, 0xf8, 0x45, 0x7b, 0xcd, 0x63, 0x92, 0x50, 0x74, - 0xb0, 0xbe, 0xd2, 0x5b, 0xcd, 0xdf, 0xfc, 0x83, 0x27, 0xa0, - 0xe9, 0x61, 0x54, 0xa7, 0xf1, 0x4b, 0x56, 0x14, 0x51, 0x45, - 0x7d, 0x1, 0xee, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x84, - 0x64, 0x70, 0x71, 0xef, 0x40, 0x18, 0x1c, 0x92, 0x7e, 0xb4, - 00, 0xb4, 0x53, 0x2, 0xed, 0x39, 0xde, 0x48, 0xf4, 0x3d, - 0x29, 0xc0, 0x83, 0xd0, 0xe6, 0x80, 0x16, 0x8a, 0x28, 0xa0, - 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, - 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, - 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, - 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x93, 0x2, 0x96, - 0x8a, 00, 0x4c, 0xf, 0x4a, 0x4d, 0x8a, 0x7b, 0xf, 0xca, - 0x9d, 0x45, 00, 0x37, 0xca, 0x43, 0xfc, 0xb, 0xf9, 0x53, - 0x4c, 0x11, 0x1e, 0xb1, 0xa7, 0xfd, 0xf2, 0x2a, 0x4a, 0x29, - 0x58, 0x8, 0xbe, 0xcb, 0xf, 0xfc, 0xf1, 0x8f, 0xfe, 0xf9, - 0x14, 0xd3, 0x65, 0x6e, 0x7a, 0xc1, 0x17, 0xfd, 0xf0, 0x2a, - 0x7a, 0x28, 0xb2, 0x15, 0x91, 0x59, 0xb4, 0xeb, 0x46, 0xeb, - 0x6b, 0x9, 0xfa, 0xc6, 0x29, 0x87, 0x47, 0xb1, 0x6e, 0xb6, - 0x70, 0x1f, 0xac, 0x63, 0xfc, 0x2a, 0xe5, 0x14, 0xb9, 0x63, - 0xd8, 0x2c, 0xbb, 0x19, 0xe7, 0x40, 0xd3, 0x1b, 0xad, 0x85, - 0xb1, 0xff, 00, 0xb6, 0x4b, 0xfe, 0x14, 0xc6, 0xf0, 0xce, - 0x92, 0xdd, 0x74, 0xdb, 0x53, 0xff, 00, 0x6c, 0x85, 0x69, - 0xd1, 0x4b, 0xd9, 0xc3, 0xb2, 0x17, 0x2c, 0x7b, 0x19, 0x7, - 0xc2, 0x3a, 0x2b, 0x75, 0xd2, 0xed, 0x4f, 0xfd, 0xb2, 0x15, - 0x1b, 0x78, 0x2b, 0x41, 0x73, 0x93, 0xa4, 0x59, 0x93, 0xef, - 0xa, 0xd6, 0xdd, 0x15, 0x3e, 0xca, 0x9b, 0xfb, 0x2b, 0xee, - 0x17, 0x24, 0x3b, 0x1c, 0xf3, 0x7c, 0x3f, 0xf0, 0xe3, 0x75, - 0xd1, 0xed, 0x3f, 0xef, 0xd0, 0xa8, 0x9b, 0xe1, 0xaf, 0x86, - 0x1f, 0xae, 0x8b, 0x69, 0xff, 00, 0x7e, 0xc5, 0x74, 0xd4, - 0x54, 0xfd, 0x5e, 0x8b, 0xfb, 0xb, 0xee, 0x44, 0xfb, 0x2a, - 0x6f, 0xec, 0xaf, 0xb8, 0xe4, 0xdf, 0xe1, 0x5f, 0x85, 0x5f, - 0x39, 0xd1, 0x6d, 0xb9, 0xff, 00, 0x60, 0x54, 0x2d, 0xf0, - 0x87, 0xc2, 0x4f, 0xd7, 0x45, 0xb7, 0xff, 00, 0xbe, 0x6b, - 0xb2, 0xa2, 0xa3, 0xea, 0xb4, 0x1f, 0xd8, 0x5f, 0x72, 0x17, - 0xb0, 0xa5, 0xfc, 0xab, 0xee, 0x38, 0x76, 0xf8, 0x2f, 0xe0, - 0xf7, 0xeb, 0xa3, 0x41, 0xf9, 0x54, 0x2f, 0xf0, 0x2f, 0xc1, - 0x8f, 0xff, 00, 0x30, 0x78, 0xc7, 0xd2, 0xbb, 0xea, 0x2a, - 0x5e, 0xb, 0xc, 0xf7, 0xa6, 0xbe, 0xe4, 0x4f, 0xd5, 0xa8, - 0xbf, 0xb0, 0xbe, 0xe3, 0xce, 0x9f, 0xe0, 0x17, 0x83, 0x1f, - 0xfe, 0x61, 0x6a, 0x3e, 0x86, 0xa0, 0x7f, 0xd9, 0xe3, 0xc1, - 0x8f, 0xff, 00, 0x2e, 0x4, 0x7d, 0xd, 0x7a, 0x65, 0x15, - 0xf, 0x1, 0x84, 0x7f, 0xf2, 0xe9, 0x7d, 0xc8, 0x9f, 0xaa, - 0x50, 0x7f, 0x61, 0x7d, 0xc7, 0x96, 0xbf, 0xec, 0xe1, 0xe0, - 0xd7, 0xff, 00, 0x97, 0x37, 0x1f, 0xf0, 0x2a, 0x81, 0xff, - 00, 0x66, 0x7f, 0x7, 0x37, 0xfc, 0xb0, 0x94, 0x7d, 0x1a, - 0xbd, 0x66, 0x8a, 0x9f, 0xec, 0xdc, 0x1b, 0xff, 00, 0x97, - 0x4b, 0xee, 0x23, 0xea, 0x58, 0x67, 0xff, 00, 0x2e, 0xd7, - 0xdc, 0x79, 0x3, 0xfe, 0xcb, 0xfe, 0xf, 0x7f, 0xe0, 0xb8, - 0x5f, 0xa3, 0xd4, 0xd, 0xfb, 0x2c, 0x78, 0x4c, 0xf4, 0x7b, - 0x81, 0xf8, 0x8a, 0xf6, 0x6a, 0x2a, 0x1e, 0x57, 0x82, 0x7f, - 0xf2, 0xe9, 0x12, 0xf0, 0x18, 0x57, 0xff, 00, 0x2e, 0xd7, - 0xdc, 0x78, 0x9b, 0xfe, 0xca, 0x7e, 0x16, 0x6e, 0x97, 0x17, - 0x23, 0xf1, 0x15, 0xb, 0xfe, 0xc9, 0xbe, 0x1b, 0x6f, 0xbb, - 0x79, 0x72, 0x3f, 0x2a, 0xf7, 0x2a, 0x2a, 0x7f, 0xb2, 0x70, - 0x3f, 0xf3, 0xe9, 0x12, 0xf2, 0xec, 0x23, 0xff, 00, 0x97, - 0x68, 0xf0, 0x76, 0xfd, 0x92, 0x74, 0x3, 0xd3, 0x50, 0xb9, - 0x1f, 0x80, 0xa8, 0x5b, 0xf6, 0x45, 0xd1, 0xf, 0x4d, 0x52, - 0xe0, 0x7f, 0xc0, 0x45, 0x7b, 0xf5, 0x15, 0x3f, 0xd9, 0x18, - 0x1f, 0xf9, 0xf7, 0xf9, 0x90, 0xf2, 0xbc, 0x1b, 0xff, 00, - 0x97, 0x68, 0xf9, 0xe9, 0xff, 00, 0x64, 0x2d, 0x2c, 0xfd, - 0xdd, 0x62, 0x7f, 0xc5, 0x5, 0x40, 0xff, 00, 0xb2, 0x5, - 0x97, 0xf0, 0xeb, 0x12, 0x7e, 0x28, 0x2b, 0xe8, 0xca, 0x2a, - 0x3f, 0xb1, 0xb0, 0x3f, 0xf3, 0xef, 0xf1, 0x7f, 0xe6, 0x4b, - 0xca, 0x70, 0x4f, 0xfe, 0x5d, 0xa3, 0xe6, 0xd6, 0xfd, 0x90, - 0x21, 0xfe, 0x1d, 0x65, 0xbf, 0x14, 0xa8, 0x5f, 0xf6, 0x40, - 0x3f, 0xc3, 0xac, 0x7e, 0x69, 0x5f, 0x4c, 0x51, 0x53, 0xfd, - 0x89, 0x81, 0xfe, 0x4f, 0xc5, 0x91, 0xfd, 0x91, 0x82, 0xff, - 00, 0x9f, 0x67, 0xcc, 0xf, 0xfb, 0x20, 0x4f, 0xfc, 0x3a, - 0xba, 0xfe, 0x2b, 0x50, 0xbf, 0xec, 0x83, 0x7e, 0x3e, 0xee, - 0xaf, 0x11, 0xfa, 0xad, 0x7d, 0x4b, 0x45, 0x4f, 0xf6, 0x1e, - 0x7, 0xf9, 0x5f, 0xde, 0xc9, 0x79, 0x36, 0x5, 0xfd, 0x83, - 0xe5, 0x37, 0xfd, 0x91, 0x35, 0x51, 0xd3, 0x53, 0x84, 0xfe, - 0x15, 0x3, 0xfe, 0xc9, 0x1a, 0xd8, 0xe9, 0x7d, 0xb, 0x57, - 0xd6, 0x74, 0x54, 0xbc, 0x87, 0x5, 0xd9, 0xfd, 0xec, 0x87, - 0x92, 0x60, 0x7f, 0x93, 0xf1, 0x3e, 0x46, 0x7f, 0xd9, 0x33, - 0xc4, 0x23, 0xa5, 0xd4, 0x7, 0xf1, 0xa8, 0x1f, 0xf6, 0x51, - 0xf1, 0x28, 0xfb, 0xb2, 0xc2, 0x7f, 0x1a, 0xfb, 0x2, 0x8a, - 0x8f, 0xec, 0xc, 0x1f, 0x9f, 0xde, 0x4f, 0xf6, 0x16, 0xb, - 0xf9, 0x7f, 0x13, 0xe3, 0x87, 0xfd, 0x95, 0x7c, 0x54, 0x3e, - 0xe9, 0x85, 0xbf, 0xe0, 0x42, 0xa1, 0x7f, 0xd9, 0x6f, 0xc5, - 0xeb, 0xd2, 0x38, 0x8f, 0xd1, 0xc5, 0x7d, 0x9b, 0x45, 0x4f, - 0xfa, 0xbf, 0x84, 0xee, 0xfe, 0xff, 00, 0xf8, 0x4, 0xff, - 00, 0x60, 0xe0, 0xbb, 0x3f, 0xbc, 0xf8, 0xad, 0xff, 00, - 0x66, 0x3f, 0x18, 0xaf, 0x4b, 0x64, 0x3f, 0xf0, 0x31, 0x50, - 0xbf, 0xec, 0xd7, 0xe3, 0x35, 0xff, 00, 0x97, 0x20, 0x7f, - 0xe0, 0x42, 0xbe, 0xda, 0xa2, 0xa7, 0xfd, 0x5e, 0xc3, 0x7f, - 0x34, 0xbf, 0xf, 0xf2, 0x23, 0xfd, 0x5f, 0xc1, 0xf9, 0xfd, - 0xe7, 0xc3, 0xcd, 0xfb, 0x39, 0xf8, 0xd1, 0x7f, 0xe6, 0x1a, - 0x4f, 0xfc, 0x8, 0x54, 0x2f, 0xfb, 0x3d, 0xf8, 0xd1, 0x7f, - 0xe6, 0x14, 0xe7, 0xf1, 0x15, 0xf7, 0x3d, 0x15, 0x3f, 0xea, - 0xee, 0x1f, 0xf9, 0xe5, 0xf8, 0x7f, 0x91, 0x3f, 0xea, 0xf6, - 0x13, 0xcf, 0xef, 0x3e, 0x12, 0x3f, 0x1, 0xbc, 0x6d, 0xb, - 0x6, 0x5d, 0x22, 0x60, 0xc3, 0xa3, 0x29, 0xc1, 0x15, 0xde, - 0x78, 0x43, 0xc6, 0xbf, 0x14, 0xfe, 0x15, 0x6c, 0x5d, 0x57, - 0x4c, 0xbc, 0xd7, 0x34, 0x55, 0xfb, 0xf0, 0x5d, 0x12, 0xd2, - 0xa2, 0xff, 00, 0xb1, 0x27, 0x5f, 0xc0, 0xe4, 0x7d, 0x2b, - 0xeb, 0x1a, 0x82, 0xf2, 0xde, 0x2b, 0x9b, 0x69, 0x12, 0x64, - 0x59, 0x10, 0xa9, 0xc8, 0x61, 0x5a, 0xd2, 0xc9, 0x56, 0x19, - 0xf3, 0xd0, 0xab, 0x24, 0xfe, 0x45, 0x53, 0xc8, 0xe9, 0xd0, - 0x7c, 0xf8, 0x7a, 0x92, 0x8b, 0xfe, 0xb7, 0xee, 0x73, 0xbe, - 00, 0xf8, 0x91, 0xa2, 0x7c, 0x48, 0xd2, 0x8d, 0xe6, 0x91, - 0x73, 0xba, 0x58, 0xf0, 0x2e, 0x2d, 0x24, 0xf9, 0x66, 0xb7, - 0x63, 0xfc, 0x2e, 0xbd, 0xbe, 0xbd, 0xd, 0x75, 0x35, 0xf1, - 0x7, 0xc4, 0x6d, 0x72, 0xff, 00, 0xe1, 0x4f, 0xc4, 0x43, - 0xae, 0x78, 0x66, 0x63, 0x69, 0x74, 0x24, 0xfd, 0xfc, 0x20, - 0xfe, 0xee, 0xe1, 0x1, 0xc9, 0x8d, 0xc7, 0x70, 0x7f, 0x31, - 0xda, 0xbe, 0xae, 0xf8, 0x4f, 0xf1, 0x3b, 0x4d, 0xf8, 0xb7, - 0xe0, 0xcb, 0x5d, 0x7f, 0x4d, 0x47, 0x80, 0x3b, 0x34, 0x53, - 0xda, 0xca, 0x46, 0xf8, 0x25, 0x5e, 0x19, 0xf, 0xaf, 0xa8, - 0x3d, 0xc1, 0x6, 0xbd, 0xc, 0xe, 0x35, 0x62, 0x79, 0xa9, - 0xcb, 0xe2, 0x8e, 0x8c, 0xe8, 0xc0, 0x66, 0x4a, 0xbd, 0x59, - 0x61, 0x6a, 0xe9, 0x52, 0x3f, 0x73, 0x5d, 0xd7, 0xea, 0x8e, - 0xc6, 0x8a, 0x28, 0xaf, 0x54, 0xf7, 0x42, 0x8a, 0x28, 0xa0, - 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0xf, 0x37, - 0xfd, 0xa0, 0x7c, 0x6a, 0x3c, 0x17, 0xf0, 0xd7, 0x51, 0x74, - 0x72, 0x97, 0x97, 0xe3, 0xec, 0x56, 0xfb, 0x4e, 0x8, 0x67, - 0x7, 0x24, 0x7d, 0x17, 0x26, 0xbe, 0x25, 0xd0, 0xb4, 0xb9, - 0x35, 0x8d, 0x56, 0xd2, 0xca, 0x15, 0xdc, 0xf3, 0x48, 0x10, - 0x1, 0x5e, 0xd3, 0xfb, 0x5a, 0xf8, 0xcb, 0xfb, 0x5b, 0xc6, - 0x16, 0x7e, 0x1f, 0x85, 0xf3, 0x6, 0x97, 0x1f, 0x99, 0x28, - 0x7, 0x83, 0x33, 0x8c, 0xfe, 0x8b, 0x8f, 0xfb, 0xe8, 0xd6, - 0x77, 0xec, 0xc3, 0xe1, 0x1, 0xaf, 0x78, 0xd8, 0x5f, 0x4d, - 0x1e, 0xeb, 0x7b, 0x25, 0x2f, 0x93, 0xd3, 0x77, 0x6a, 0xfc, - 0xf7, 0x33, 0x93, 0xc7, 0x63, 0xd6, 0x1e, 0x3b, 0x2d, 0x3f, - 0xcc, 0xfc, 0xef, 0x1e, 0xde, 0x63, 0x9a, 0x2a, 0x11, 0xda, - 0x3a, 0x7f, 0x9f, 0xf5, 0xe4, 0x7d, 0x67, 0xe1, 0x3d, 0x12, - 0x3f, 0xe, 0xf8, 0x72, 0xc3, 0x4f, 0x8d, 0x42, 0x88, 0x22, - 0x55, 0x38, 0xf5, 0xc7, 0x35, 0xaf, 0x45, 0x15, 0xfa, 0x4, - 0x62, 0xa1, 0x15, 0x18, 0xec, 0x8f, 0xd0, 0xa2, 0x94, 0x52, - 0x48, 0x28, 0xa2, 0x8a, 0xa2, 0x82, 0x8a, 0x2b, 0xcd, 0xbf, - 0x68, 0xaf, 0x8d, 0xda, 0x47, 0xec, 0xf1, 0xf0, 0x83, 0xc4, - 0x1e, 0x39, 0xd6, 0xe, 0xe8, 0xf4, 0xf8, 0x71, 0x6d, 0x6e, - 0x3e, 0xf5, 0xc5, 0xc3, 0x7c, 0xb1, 0x44, 0x3e, 0xac, 0x46, - 0x7d, 0x6, 0x4f, 0x6a, 00, 0xe7, 0x3f, 0x69, 0x9f, 0xda, - 0xf3, 0xe1, 0xf7, 0xec, 0xaf, 0xa0, 0x47, 0x79, 0xe2, 0xcb, - 0xe7, 0x9f, 0x55, 0xba, 0x52, 0xd6, 0x3a, 0x25, 0x88, 0xf, - 0x77, 0x73, 0x8e, 0xe0, 0x67, 0xa, 0x99, 0xfe, 0x36, 0x20, - 0x7d, 0x4f, 0x15, 0xf9, 0x5d, 0xf1, 0x87, 0xfe, 0xa, 0xd5, - 0xf1, 0x9b, 0xe2, 0x5, 0xc5, 0xdd, 0xbf, 0x85, 0xe5, 0xb1, - 0xf0, 0x1e, 0x90, 0xec, 0x44, 0x4b, 0xa7, 0xc2, 0x26, 0xbb, - 0x9, 0x9e, 0x37, 0x4d, 0x26, 0x46, 0x71, 0xfd, 0xd5, 0x5a, - 0xf9, 0xb3, 0x5d, 0xd7, 0xfc, 0x7d, 0xfb, 0x57, 0x7c, 0x67, - 0x4b, 0x8b, 0xc9, 0x2e, 0x3c, 0x4b, 0xe3, 0x3f, 0x11, 0xdd, - 0xac, 0x10, 0x44, 0xf, 00, 0x93, 0xf2, 0xc6, 0x83, 0xa2, - 0x46, 0xa3, 0x3c, 0x74, 00, 0x13, 0xea, 0x6b, 0xf4, 0x67, - 0xc1, 0x1f, 0xf0, 0x48, 0xaf, 0x87, 0xff, 00, 0xf, 0x7e, - 0x1c, 0xdf, 0x78, 0x9b, 0xe2, 0xf7, 0x8b, 0x75, 0x1b, 0xeb, - 0x9d, 0x3e, 0xca, 0x4b, 0xeb, 0xe8, 0x74, 0x69, 0x56, 0xda, - 0xd6, 0xd9, 0x11, 0xb, 0xb0, 0xe, 0xca, 0x59, 0xf0, 0x1, - 0xe7, 0xe5, 0xcf, 0xa5, 0x32, 0x6e, 0xde, 0xc7, 0xe7, 0x17, - 0x88, 0x7f, 0x68, 0xbf, 0x8a, 0x7e, 0x2b, 0xb9, 0x92, 0x7d, - 0x5b, 0xe2, 0x37, 0x8a, 0x2f, 0x64, 0x90, 0xe5, 0x83, 0xea, - 0xf3, 0x85, 0x27, 0xfd, 0xd0, 0xc0, 0xf, 0xca, 0xbf, 0x5a, - 0xbf, 0xe0, 0x92, 0x3e, 0xb, 0xd6, 0xed, 0xfe, 0x3, 0xea, - 0x3e, 0x39, 0xf1, 0x6, 0xad, 0xa9, 0x6a, 0xb7, 0x9e, 0x23, - 0xbe, 0x74, 0xb3, 0x17, 0xf7, 0x52, 0x4c, 0x22, 0xb6, 0x80, - 0x94, 0x1b, 0x43, 0x13, 0x8d, 0xd2, 0x79, 0x84, 0x91, 0xd4, - 0x5, 0xaf, 0xc7, 0x4d, 0x1b, 0xc3, 0x7f, 0xf0, 0x9e, 0xfc, - 0x44, 0xb2, 0xd0, 0x7c, 0x39, 0x6f, 0x24, 0x4b, 0xac, 0x6a, - 0x89, 0x67, 0xa7, 0xc1, 0x2b, 0x6f, 0x64, 0x12, 0xca, 0x16, - 0x30, 0xcd, 0x8e, 0x70, 0x18, 0x64, 0xfb, 0x13, 0x5f, 0xd1, - 0xcf, 0x86, 0xb4, 0x4d, 0x3, 0xf6, 0x7b, 0xf8, 0x2d, 0x65, - 0xa6, 0xc6, 0x52, 0xcf, 0xc3, 0xfe, 0x13, 0xd1, 0xc0, 0x67, - 0x3c, 0x1, 0x1c, 0x31, 0xe5, 0xdc, 0xfb, 0x9c, 0x12, 0x7d, - 0xcd, 0xc, 0x48, 0xf8, 0xf, 0xc4, 0x7f, 0xf0, 0x59, 0xa9, - 0xfc, 0x25, 0xe2, 0xcd, 0x6b, 0x42, 0xd4, 0x3e, 0x14, 0xab, - 0xcd, 0xa6, 0x5e, 0xcf, 0x65, 0x24, 0x90, 0x6b, 0x7c, 0x33, - 0x47, 0x23, 0x21, 0x20, 0x18, 0x7d, 0x56, 0xbe, 0xec, 0xfd, - 0x9c, 0x3e, 0x34, 0x47, 0xfb, 0x42, 0x7c, 0x1b, 0xf0, 0xff, - 00, 0x8f, 0x62, 0xd2, 0xdf, 0x46, 0x4d, 0x59, 0x24, 0x61, - 0x64, 0xf2, 0xf9, 0xa6, 0x3d, 0xb2, 0x32, 0x7d, 0xec, 0xc, - 0xe7, 0x6e, 0x7a, 0x77, 0xaf, 0xe7, 0x2f, 0xc6, 0x7a, 0xf9, - 0xf1, 0x5f, 0x8b, 0xf5, 0xdd, 0x6d, 0x86, 0xd6, 0xd4, 0xaf, - 0xe7, 0xbd, 0x23, 0xd0, 0xc9, 0x23, 0x3f, 0xfe, 0xcd, 0x5f, - 0xd1, 0x27, 0xec, 0x91, 0xf0, 0xfe, 0x4f, 0x85, 0xff, 00, - 0xb3, 0x57, 0xc3, 0x9f, 0xd, 0xce, 0x9e, 0x5d, 0xdd, 0xae, - 0x8d, 0x3, 0xdc, 0xaf, 0xa4, 0xd2, 0x2f, 0x99, 0x27, 0xfe, - 0x3c, 0xe6, 0x81, 0xa7, 0x73, 0xd6, 0xc9, 0xc0, 0xc9, 0xe0, - 0x57, 0xce, 0xda, 0xff, 00, 0xed, 0xf, 0xae, 0x43, 0xae, - 0x5f, 0x47, 0xa6, 0xc7, 0x64, 0xda, 0x7a, 0x4a, 0xcb, 0x9, - 0x96, 0x26, 0x2c, 0x54, 0x1c, 0x64, 0x9d, 0xc3, 0xaf, 0x5f, - 0xc6, 0xbd, 0x7b, 0xe2, 0x97, 0x89, 0x47, 0x85, 0xbc, 0x11, - 0xa9, 0x5d, 0xab, 0x6d, 0x9d, 0xd3, 0xc8, 0x87, 0xfd, 0xf7, - 0xe0, 0x7e, 0x5c, 0x9f, 0xc2, 0xbe, 0x40, 0xaf, 0x86, 0xe2, - 0x2c, 0xca, 0xae, 0x1a, 0x70, 0xa3, 0x42, 0x5c, 0xaf, 0x77, - 0x6f, 0xc3, 0xf5, 0x3c, 0x9c, 0x75, 0x79, 0x53, 0x6a, 0x10, - 0x76, 0x3d, 0x5d, 0x3f, 0x69, 0xf, 0x12, 0xaf, 0xde, 0xb3, - 0xd3, 0x9b, 0xfe, 0xd9, 0xb8, 0xff, 00, 0xd9, 0xaa, 0x74, - 0xfd, 0xa5, 0x75, 0xe1, 0xf7, 0xb4, 0xdd, 0x3d, 0xbe, 0x81, - 0xc7, 0xfe, 0xcd, 0x5e, 0x43, 0x45, 0x7c, 0x82, 0xce, 0x73, - 0x5, 0xff, 00, 0x2f, 0x5f, 0xe0, 0x79, 0x9f, 0x5a, 0xad, - 0xfc, 0xc7, 0xb3, 0x47, 0xfb, 0x4c, 0xea, 0x83, 0xef, 0xe8, - 0xb6, 0x8d, 0xfe, 0xec, 0xac, 0x3f, 0xc6, 0xa7, 0x4f, 0xda, - 0x72, 0xef, 0xf8, 0xbc, 0x3f, 0x9, 0xfa, 0x5d, 0x11, 0xff, - 00, 0xb2, 0xd7, 0x89, 0x51, 0x5a, 0x2c, 0xf3, 0x31, 0x5f, - 0xf2, 0xf7, 0xf0, 0x5f, 0xe4, 0x57, 0xd7, 0x2b, 0xff, 00, - 0x31, 0xee, 0xd1, 0x7e, 0xd3, 0x83, 0xfe, 0x5a, 0x78, 0x7f, - 0x1f, 0xee, 0xdd, 0x7f, 0xf6, 0x35, 0x66, 0x3f, 0xda, 0x6e, - 0xc8, 0xfd, 0xfd, 0xa, 0x71, 0xfe, 0xec, 0xea, 0x7f, 0xa5, - 0x78, 0x5, 0x15, 0xaa, 0xe2, 0xc, 0xc5, 0x7f, 0xcb, 0xcf, - 0xc1, 0x7f, 0x91, 0x5f, 0x5d, 0xaf, 0xfc, 0xdf, 0x91, 0xf4, - 0x3c, 0x7f, 0xb4, 0xc6, 0x90, 0x7e, 0xfe, 0x91, 0x7a, 0xbf, - 0xee, 0xb2, 0x1f, 0xeb, 0x5a, 0x56, 0x7f, 0xb4, 0x5f, 0x85, - 0xee, 0x8, 0x13, 0x45, 0x7f, 0x6b, 0xee, 0xf0, 0x86, 0x1f, - 0xf8, 0xeb, 0x1a, 0xf9, 0x9a, 0x8a, 0xd6, 0x3c, 0x47, 0x8f, - 0x8e, 0xed, 0x3f, 0x97, 0xf9, 0x14, 0xb1, 0xf5, 0x97, 0x53, - 0xec, 0x4d, 0x7, 0xe2, 0x67, 0x86, 0x7c, 0x48, 0xeb, 0x1d, - 0x8e, 0xaf, 0x3, 0x4c, 0xdd, 0x22, 0x97, 0x31, 0xb9, 0xfa, - 0x6, 0xc6, 0x7f, 0xa, 0xe9, 0xeb, 0xe1, 0x4a, 0xed, 0x7c, - 0x17, 0xf1, 0x6b, 0x5f, 0xf0, 0x6c, 0xa8, 0x89, 0x72, 0xd7, - 0xd6, 00, 0xfc, 0xd6, 0x97, 0x2c, 0x59, 0x71, 0xfe, 0xc9, - 0xea, 0xbf, 0x87, 0x1e, 0xd5, 0xed, 0xe1, 0x38, 0xa1, 0x36, - 0xa3, 0x8a, 0x85, 0xbc, 0xd7, 0xf9, 0x7f, 0xc1, 0x3a, 0xe9, - 0x66, 0x37, 0x76, 0xa8, 0xbe, 0xe3, 0xeb, 0x6a, 0x2b, 0x13, - 0xc2, 0x1e, 0x2f, 0xd3, 0xfc, 0x6b, 0xa3, 0xa6, 0xa1, 0xa7, - 0xc8, 0x4a, 0x13, 0xb6, 0x48, 0xdb, 0x86, 0x8d, 0xfb, 0xa9, - 0x15, 0xb7, 0x5f, 0x75, 0x4e, 0xa4, 0x6a, 0xc5, 0x4e, 0xe, - 0xe9, 0x9e, 0xc4, 0x64, 0xa4, 0xae, 0xb6, 0xa, 0xc0, 0xf1, - 0x17, 0x8e, 0xb4, 0x2f, 0x9, 0xdc, 0x43, 0x6, 0xab, 0xa8, - 0x25, 0xa4, 0xb3, 0x29, 0x74, 0x56, 0x56, 0x39, 00, 0xe3, - 0x3c, 0x3, 0x5b, 0xf5, 0xf2, 0x87, 0xc6, 0xed, 0x74, 0x6b, - 0x9f, 0x10, 0xaf, 0xc2, 0x36, 0xe8, 0xac, 0xc2, 0xda, 0xa7, - 0xfc, 0x7, 0xef, 0x7f, 0xe3, 0xc5, 0xab, 0xc8, 0xcd, 0xf3, - 0x7, 0x97, 0x61, 0xd5, 0x48, 0x24, 0xe4, 0xdd, 0x95, 0xce, - 0x5c, 0x55, 0x77, 0x42, 0x1c, 0xcb, 0x73, 0xe8, 0x4, 0xf8, - 0xb9, 0xe0, 0xf7, 0xe9, 0xaf, 0x5b, 0xf, 0xf7, 0xb7, 0xf, - 0xe6, 0x2a, 0x74, 0xf8, 0xa1, 0xe1, 0x37, 0xe9, 0xe2, 0xb, - 0x1f, 0xc6, 0x50, 0x2b, 0xe3, 0xca, 0x2b, 0xe3, 0x97, 0x14, - 0xe2, 0x7a, 0xd3, 0x8f, 0xe3, 0xfe, 0x67, 0x97, 0xfd, 0xa3, - 0x53, 0xb2, 0x3e, 0xca, 0x8f, 0xe2, 0x17, 0x86, 0x25, 0xfb, - 0xba, 0xfe, 0x9c, 0x7f, 0xed, 0xe5, 0x3f, 0xc6, 0xad, 0x47, - 0xe3, 0xd, 0xa, 0x6f, 0xb9, 0xac, 0xd8, 0x37, 0xd2, 0xe5, - 0x3f, 0xc6, 0xbe, 0x2b, 0xa2, 0xb5, 0x5c, 0x55, 0x5b, 0xad, - 0x25, 0xf7, 0xb2, 0xbf, 0xb4, 0x67, 0xd6, 0x27, 0xdb, 0x89, - 0xaf, 0x69, 0x92, 0x7d, 0xdd, 0x46, 0xd1, 0xbe, 0x93, 0xaf, - 0xf8, 0xd4, 0xc9, 0xa9, 0x5a, 0x49, 0xf7, 0x2e, 0xa0, 0x6f, - 0xa4, 0x80, 0xff, 00, 0x5a, 0xf8, 0x76, 0x8c, 0x91, 0x5a, - 0x2e, 0x2b, 0x97, 0x5a, 0x3f, 0x8f, 0xfc, 0x2, 0xbf, 0xb4, - 0x9f, 0xf2, 0xfe, 0x27, 0xdd, 0xb, 0x2a, 0x37, 0xdd, 0x75, - 0x3f, 0x43, 0x4e, 0xdc, 0x3d, 0x45, 0x7c, 0x30, 0x25, 0x75, - 0xe8, 0xec, 0x3e, 0x86, 0xa4, 0x4b, 0xeb, 0x98, 0xfe, 0xed, - 0xc4, 0xab, 0xf4, 0x72, 0x2b, 0x45, 0xc5, 0x6b, 0xad, 0x1f, - 0xfc, 0x9b, 0xfe, 0x1, 0x5f, 0xda, 0x5f, 0xdc, 0xfc, 0x7f, - 0xe0, 0x1f, 0x72, 0x51, 0x5f, 0x10, 0xa6, 0xb9, 0xa9, 0x47, - 0xf7, 0x75, 0xb, 0xa5, 0xfa, 0x4c, 0xdf, 0xe3, 0x52, 0xaf, - 0x89, 0xb5, 0x84, 0xfb, 0xba, 0xad, 0xf2, 0xfd, 0x2e, 0x5c, - 0x7f, 0x5a, 0xd1, 0x71, 0x5d, 0x3e, 0xb4, 0x5f, 0xdf, 0xff, - 00, 00, 0x7f, 0xda, 0x4b, 0xf9, 0x7f, 0x13, 0xed, 0x9a, - 0x2b, 0xe2, 0xc4, 0xf1, 0x96, 0xbf, 0x1f, 0xdd, 0xd7, 0x35, - 0x25, 0xfa, 0x5d, 0xc9, 0xfe, 0x35, 0xda, 0x7c, 0x25, 0xf1, - 0x7, 0x88, 0x75, 0xff, 00, 0x1e, 0xe9, 0x76, 0x93, 0x6b, - 0x3a, 0x84, 0xf6, 0xc1, 0xda, 0x59, 0x52, 0x4b, 0x97, 0x65, - 0x2a, 0xaa, 0x4e, 0x8, 0x27, 0xa6, 0x70, 0x3f, 0x1a, 0xe9, - 0xa1, 0xc4, 0xb4, 0xab, 0xd5, 0x8d, 0x25, 0x49, 0xde, 0x4d, - 0x2d, 0xd7, 0x53, 0x48, 0x63, 0xe3, 0x39, 0x28, 0xa8, 0xee, - 0x7d, 0x3f, 0x45, 0x14, 0x57, 0xd9, 0x1e, 0xa8, 0x51, 0x45, - 0x14, 00, 0x51, 0x5c, 0xf7, 0x88, 0xfc, 0x7f, 0xa0, 0x78, - 0x4f, 0x8d, 0x4f, 0x52, 0x86, 0x9, 0x7f, 0xe7, 0x8a, 0xe5, - 0xe4, 0xff, 00, 0xbe, 0x57, 0x26, 0xbc, 0xef, 0x5b, 0xfd, - 0xa5, 0x74, 0xcb, 0x70, 0xcb, 0xa5, 0xe9, 0x97, 0x17, 0x6f, - 0xd9, 0xee, 0x18, 0x44, 0xbf, 0x90, 0xc9, 0xfe, 0x55, 0xe6, - 0xe2, 0x33, 0x2c, 0x26, 0x17, 0x4a, 0xb5, 0x12, 0x7d, 0xb7, - 0x7f, 0x72, 0x39, 0xe7, 0x5e, 0x95, 0x3f, 0x8a, 0x47, 0xb2, - 0xd1, 0x5f, 0x34, 0x5f, 0x7e, 0xd1, 0x9e, 0x26, 0xb8, 0x63, - 0xf6, 0x78, 0x2c, 0x2d, 0x13, 0xb6, 0x22, 0x67, 0x23, 0xf1, - 0x2d, 0x8f, 0xd2, 0xb1, 0xae, 0x3e, 0x37, 0xf8, 0xce, 0x72, - 0x7f, 0xe2, 0x6d, 0xe5, 0x3, 0xda, 0x38, 0x23, 0x18, 0xff, - 00, 0xc7, 0x6b, 0xc5, 0x9f, 0x13, 0x60, 0x63, 0xf0, 0xa9, - 0x3f, 0x97, 0xf9, 0xb4, 0x72, 0x3c, 0xc2, 0x8a, 0xda, 0xec, - 0xfa, 0xbc, 0x8c, 0xd2, 0x79, 0x63, 0xdf, 0xf3, 0x35, 0xf2, - 0x2b, 0x7c, 0x5d, 0xf1, 0x83, 0x1c, 0x9d, 0x76, 0xe4, 0x7d, - 0x2, 0x8f, 0xe9, 0x52, 0x45, 0xf1, 0x8b, 0xc6, 0x31, 0x1c, - 0x8d, 0x72, 0x63, 0xfe, 0xf4, 0x68, 0xdf, 0xcd, 0x6b, 0xf, - 0xf5, 0xa3, 0x9, 0xfc, 0x92, 0xfc, 0x3f, 0xcc, 0x9f, 0xed, - 0x1a, 0x7d, 0x99, 0xf5, 0xc5, 0x15, 0xf2, 0xb5, 0xb7, 0xc7, - 0x9f, 0x18, 0xdb, 0xfd, 0xeb, 0xf8, 0x6e, 0x3f, 0xeb, 0xad, - 0xba, 0x7f, 0x40, 0x2b, 0x7f, 0x4d, 0xfd, 0xa5, 0x75, 0xa8, - 0x58, 0xb, 0xed, 0x32, 0xce, 0xe9, 0x7b, 0xf9, 0x25, 0xa2, - 0x3f, 0xa9, 0x61, 0x5d, 0x54, 0xf8, 0x93, 0x1, 0x3f, 0x8a, - 0xeb, 0xd5, 0x7f, 0x95, 0xcd, 0x16, 0x3e, 0x8b, 0xde, 0xe8, - 0xfa, 0x2a, 0x8a, 0xf2, 0xdd, 0x17, 0xf6, 0x87, 0xf0, 0xd6, - 0xa3, 0xb5, 0x6f, 0x52, 0xeb, 0x4c, 0x90, 0xf5, 0x32, 0x26, - 0xf4, 0xfc, 0xd7, 0x27, 0xf4, 0xaf, 0x45, 0xd2, 0xb5, 0x9b, - 0x1d, 0x72, 0xd5, 0x6e, 0x74, 0xfb, 0xb8, 0x6f, 0x20, 0x6e, - 0x8f, 0xb, 0x86, 0x1f, 0x8f, 0xa5, 0x7b, 0x98, 0x7c, 0x6e, - 0x1f, 0x15, 0xfc, 0x19, 0xa9, 0x7e, 0x7f, 0x76, 0xe7, 0x64, - 0x2a, 0xd3, 0xa9, 0xf0, 0x3b, 0x97, 0x68, 0xa2, 0x8a, 0xed, - 0x35, 0xa, 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa2, 0x80, 0xa, - 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa6, 0xbc, 0x8b, 0x12, 0x96, - 0x76, 0x8, 0xa3, 0xa9, 0x63, 0x81, 0x40, 0xe, 0xa2, 0xb0, - 0xb5, 0xf, 0x1d, 0xf8, 0x77, 0x4b, 0x24, 0x5d, 0x6b, 0x56, - 0x30, 0xb0, 0xea, 0xa6, 0x75, 0x27, 0xf2, 0x7, 0x35, 0x8b, - 0x71, 0xf1, 0xa7, 0xc1, 0xb6, 0xe7, 0x7, 0x5a, 0x47, 0xff, - 00, 0xae, 0x70, 0xc8, 0xff, 00, 0xc9, 0x6b, 0x92, 0x78, - 0xbc, 0x35, 0x3d, 0x27, 0x52, 0x2b, 0xd5, 0xa3, 0x27, 0x56, - 0x9c, 0x77, 0x92, 0xfb, 0xce, 0xde, 0x98, 0x5d, 0xb3, 0xf7, - 0xf, 0xe6, 0x2b, 0x82, 0x3f, 0x1d, 0xfc, 0x18, 0xf, 0xfc, - 0x84, 0xe4, 0x3f, 0xf6, 0xed, 0x2f, 0xff, 00, 0x13, 0x4a, - 0xbf, 0x1d, 0x7c, 0x18, 0xc7, 0xfe, 0x42, 0x8e, 0x3e, 0xb6, - 0xb2, 0xff, 00, 0xf1, 0x35, 0x8f, 0xf6, 0x8e, 0xb, 0xfe, - 0x7f, 0x47, 0xff, 00, 0x2, 0x44, 0xfb, 0x7a, 0x5f, 0xce, - 0xbe, 0xf3, 0xbe, 0xc9, 0xc7, 0x4a, 0x4d, 0xc7, 0xfb, 0xa7, - 0xf4, 0xae, 0x3e, 0xdf, 0xe3, 0xf, 0x83, 0xae, 0x7e, 0xee, - 0xb9, 0x2, 0x7f, 0xd7, 0x45, 0x74, 0xfe, 0x60, 0x56, 0xcd, - 0x8f, 0x8c, 0xb4, 0x1d, 0x4f, 0x1f, 0x65, 0xd6, 0x2c, 0x67, - 0x27, 0xa0, 0x59, 0xd7, 0x3f, 0x96, 0x6b, 0x78, 0x62, 0xb0, - 0xf5, 0x3e, 0xa, 0x89, 0xfa, 0x34, 0x5a, 0xa9, 0x9, 0x6d, - 0x24, 0x6c, 0xd1, 0x4d, 0x47, 0x59, 0x17, 0x2a, 0xc1, 0x87, - 0xa8, 0x39, 0xa7, 0x57, 0x51, 0xa0, 0x51, 0x45, 0x30, 0x31, - 0xf3, 0x4a, 0x9e, 0x98, 0xc8, 0x34, 00, 0xfa, 0x28, 0xa2, - 0x80, 0xa, 0x82, 0xf5, 0xfc, 0xbb, 0x39, 0xdb, 0xd1, 0x9, - 0xfd, 0x2a, 0x7a, 0xa3, 0xad, 0xbf, 0x97, 0xa4, 0x5d, 0xb1, - 0x38, 0xc4, 0x66, 0xa6, 0x4e, 0xc9, 0xb1, 0x3d, 0x13, 0x3e, - 0x1c, 0xf8, 0xdf, 0x37, 0xda, 0x3c, 0x49, 0x28, 0xeb, 0x82, - 0x6b, 0x2f, 0xf6, 0x63, 0xf8, 0x99, 0x27, 0xc3, 0x6f, 0x8d, - 0x16, 0xba, 0x44, 0xf2, 0x95, 0xd1, 0x3c, 0x4a, 0x45, 0xa4, - 0x88, 0x71, 0x84, 0xb8, 0x19, 0xf2, 0x9f, 0xdb, 0xba, 0x9f, - 0xf7, 0x85, 0x49, 0xf1, 0x56, 0x7f, 0x3f, 0xc4, 0xd7, 0x3d, - 0xf0, 0x4d, 0x78, 0x7, 0xc5, 0x7b, 0x89, 0x2c, 0xb4, 0xe1, - 0x75, 0x6e, 0xed, 0x15, 0xcd, 0xbb, 0x9, 0xa2, 0x91, 0x4e, - 0xa, 0xba, 0x9c, 0xa9, 0x1f, 0x88, 0xaf, 0xce, 0x32, 0xfa, - 0xce, 0x38, 0xc9, 0x49, 0x77, 0x67, 0xe3, 0x98, 0xbc, 0x4c, - 0xb0, 0xd9, 0xac, 0x31, 0x11, 0xe9, 0x24, 0xbe, 0x4f, 0x46, - 0x7e, 0xc0, 0x51, 0x5c, 0x1f, 0x80, 0xfe, 0x28, 0xe9, 0x5e, - 0x21, 0xf0, 0x37, 0x87, 0x75, 0x59, 0x2e, 0xcb, 0x49, 0x7d, - 0xa7, 0x5b, 0x5c, 0xb1, 0x2a, 0x72, 0x4b, 0xc4, 0xac, 0x7f, - 0x9d, 0x15, 0xfa, 0x45, 0xcf, 0xd8, 0xee, 0x99, 0xde, 0x51, - 0x45, 0x14, 0xc6, 0x14, 0x51, 0x45, 00, 0x15, 0x53, 0x56, - 0xd4, 0xed, 0xf4, 0x5d, 0x2e, 0xee, 0xfe, 0xea, 0x41, 0x15, - 0xb5, 0xb4, 0x4d, 0x2c, 0x8e, 0x7b, 0x2a, 0x8c, 0x9a, 0xb7, - 0x5e, 0x2b, 0xfb, 0x55, 0x78, 0xc4, 0x68, 0x1f, 0xf, 0x86, - 0x93, 0x13, 0xe2, 0xeb, 0x58, 0x93, 0xca, 0xc0, 0xff, 00, - 0x9e, 0x4b, 0x86, 0x73, 0xff, 00, 0xa0, 0x8f, 0xc6, 0xb9, - 0xb1, 0x35, 0x96, 0x1e, 0x8c, 0xaa, 0xbe, 0x88, 0xe4, 0xc5, - 0xd7, 0x58, 0x5a, 0x13, 0xac, 0xfa, 0x2f, 0xf8, 0x63, 0xe4, - 0xcf, 0x12, 0xeb, 0x93, 0xf8, 0xa7, 0xc4, 0x7a, 0x8e, 0xad, - 0x71, 0x8f, 0x3e, 0xfa, 0xe1, 0xe6, 0x60, 0x3a, 0xc, 0x9e, - 00, 0xf6, 0x3, 0x2, 0xbe, 0xc2, 0xfd, 0x9b, 0x3c, 0x23, - 0xff, 00, 0x8, 0xe7, 0x80, 0xa3, 0xb9, 0x91, 0x36, 0xdc, - 0x5e, 0xb1, 0x90, 0xe4, 0x73, 0xb7, 0xb5, 0x7c, 0x91, 0xe0, - 0x6f, 0xf, 0xc9, 0xe2, 0x6f, 0x14, 0x69, 0xda, 0x7c, 0x6a, - 0x5b, 0xcd, 0x95, 0x41, 0xc7, 0xa6, 0x79, 0xaf, 0xd0, 0x8d, - 0x32, 0xc2, 0x2d, 0x2f, 0x4f, 0xb7, 0xb4, 0x85, 0x42, 0x47, - 0xa, 0x4, 0x50, 0x3d, 0x85, 0x7c, 0x6e, 0x43, 0x45, 0xd6, - 0xaf, 0x3c, 0x4c, 0xfa, 0x7e, 0x6c, 0xf8, 0xfe, 0x1d, 0xa0, - 0xea, 0x4e, 0x78, 0xa9, 0xef, 0xfa, 0xbd, 0xcb, 0x54, 0x51, - 0x45, 0x7d, 0xd9, 0xf7, 0x61, 0x45, 0x14, 0x50, 0x1, 0x5f, - 0x98, 0xbf, 0xf0, 0x5b, 0x2f, 0x1d, 0xdc, 0x5a, 0xf8, 0x77, - 0xe1, 0xaf, 0x83, 0x62, 0x25, 0x6d, 0xaf, 0x6e, 0x6e, 0xb5, - 0x59, 0xf0, 0x48, 0xc9, 0x89, 0x52, 0x34, 0x7, 0xd4, 0x7e, - 0xf9, 0xcf, 0xe1, 0x5f, 0xa7, 0x55, 0xf9, 0xe5, 0xff, 00, - 0x5, 0x88, 0xf8, 0x15, 0xab, 0x78, 0xf7, 0xe1, 0x97, 0x86, - 0x3c, 0x79, 0xa2, 0x59, 0xcd, 0x7f, 0x2f, 0x85, 0xa6, 0x9a, - 0x2b, 0xf8, 0x60, 0x42, 0xcc, 0x96, 0x93, 0x5, 0x26, 0x5c, - 0xe, 0x70, 0x8f, 0x1a, 0xe7, 0xd0, 0x31, 0x3d, 0xa8, 0x13, - 0xd8, 0xf8, 0x57, 0xfe, 0x9, 0xbb, 0xf1, 0x4b, 0xc1, 0xff, - 00, 0x8, 0x7f, 0x6a, 0x4d, 0x1f, 0x5d, 0xf1, 0xb5, 0xec, - 0x1a, 0x5e, 0x92, 0xf6, 0x37, 0x36, 0x91, 0xea, 0x17, 0x23, - 0xf7, 0x56, 0xd3, 0xc8, 0xa0, 0x23, 0xb1, 0xfe, 0x10, 0x40, - 0x65, 0xdd, 0xdb, 0x77, 0x3c, 0x57, 0xe8, 0x87, 0xfc, 0x15, - 0x1f, 0xf6, 0x8d, 0xd2, 0x7c, 0x31, 0xfb, 0x2e, 0x36, 0x8b, - 0xe1, 0xed, 0x62, 0xcf, 0x51, 0xbb, 0xf1, 0xb4, 0xc2, 0xc2, - 0x29, 0x6c, 0xae, 0x16, 0x55, 0xfb, 0x2a, 0xe1, 0xe7, 0x70, - 0x54, 0x91, 0x82, 0x36, 0xa7, 0xfd, 0xb4, 0xaf, 0xc4, 0xea, - 0x37, 0x12, 00, 0xc9, 0xc0, 0xe8, 0x2a, 0xac, 0x45, 0xcf, - 0xb5, 0x7f, 0xe0, 0x94, 0x9f, 0xc, 0xb4, 0xcf, 0x13, 0xfe, - 0xd0, 0x57, 0x3e, 0x35, 0xd7, 0xee, 0x6d, 0xac, 0xf4, 0x4f, - 0x5, 0x59, 0x1b, 0xe3, 0x3d, 0xe4, 0x8b, 0x1c, 0x42, 0xe6, - 0x4c, 0xa4, 0x59, 0x66, 0xc0, 0xe0, 0x79, 0x8d, 0xf5, 0x51, - 0x5e, 0xd9, 0xff, 00, 0x5, 0x2f, 0xff, 00, 0x82, 0x80, - 0xf8, 0x77, 0xc6, 0x7e, 0x11, 0xbb, 0xf8, 0x4f, 0xf0, 0xd7, - 0x53, 0x8f, 0x59, 0xb6, 0xbe, 0x64, 0x3a, 0xd6, 0xbd, 0x65, - 0x29, 0x30, 0x6c, 0x56, 0xd, 0xf6, 0x78, 0x98, 0x7d, 0xfc, - 0x90, 0x37, 0x30, 0xf9, 0x71, 0xc7, 0x39, 0x38, 0xfc, 0xc0, - 0x12, 0xba, 0xc6, 0xd1, 0x87, 0x61, 0x1b, 0x10, 0x59, 0x1, - 0xe0, 0x91, 0xd3, 0x22, 0xbd, 0x33, 0xe0, 0x1f, 0xec, 0xe5, - 0xe3, 0x9f, 0xda, 0x43, 0xc6, 0x50, 0x78, 0x7f, 0xc1, 0xba, - 0x4c, 0x97, 0x44, 0xb7, 0xfa, 0x4e, 0xa3, 0x2a, 0x95, 0xb4, - 0xb3, 0x4e, 0xed, 0x2c, 0x98, 0xc0, 0xf6, 0x1d, 0x4f, 0x60, - 0x68, 0xb, 0xf4, 0x3b, 0xbf, 0xd8, 0x3f, 0xf6, 0x70, 0x9f, - 0xf6, 0x92, 0xf8, 0xff, 00, 0xa3, 0x69, 0x33, 0xc2, 0xe7, - 0xc3, 0x7a, 0x53, 0x2e, 0xa7, 0xac, 0x4e, 0x17, 0x2a, 0x21, - 0x46, 0x5, 0x62, 0xcf, 0x4c, 0xc8, 0xd8, 0x5c, 0x7a, 0x16, - 0x3d, 0xab, 0xfa, 0xd, 0x44, 0x58, 0x91, 0x51, 0x14, 0x2a, - 0xa8, 0xc0, 0x3, 0xa0, 0x15, 0xe2, 0xff, 00, 0xb2, 0x8f, - 0xec, 0xb7, 0xe1, 0xaf, 0xd9, 0x53, 0xe1, 0xa4, 0x3e, 0x1b, - 0xd1, 0x7f, 0xd3, 0x35, 0x3b, 0x82, 0x27, 0xd5, 0x75, 0x67, - 0x5c, 0x49, 0x79, 0x3e, 0x31, 0x9f, 0x64, 0x1d, 0x15, 0x7b, - 0xf, 0x72, 0x4d, 0x7b, 0x43, 0xba, 0xc6, 0x8c, 0xec, 0x42, - 0xaa, 0x8c, 0x92, 0x7b, 0xa, 0x96, 0xcb, 0x4a, 0xc7, 0x81, - 0xfe, 0xd2, 0x9e, 0x23, 0x13, 0x5e, 0xe9, 0x9a, 0x24, 0x6f, - 0x91, 0x8, 0x37, 0x33, 0x1, 0xfd, 0xe3, 0xc2, 0x8f, 0xcb, - 0x77, 0xe7, 0x5e, 0x25, 0x5b, 0xbe, 0x39, 0xd7, 0xcf, 0x8a, - 0x3c, 0x5b, 0xaa, 0x6a, 0x79, 0x26, 0x39, 0xa6, 0x3e, 0x5e, - 0x7f, 0xb8, 0x3e, 0x55, 0xfd, 00, 0xac, 0x2a, 0xfc, 0x4b, - 0x33, 0xc4, 0xfd, 0x6f, 0x17, 0x52, 0xaf, 0x4b, 0xe9, 0xe8, - 0xb4, 0x47, 0xc9, 0x62, 0x2a, 0x7b, 0x5a, 0xb2, 0x90, 0x51, - 0x45, 0x15, 0xe6, 0x18, 0x16, 0xec, 0x74, 0x8b, 0xed, 0x50, - 0x39, 0xb3, 0xb2, 0xb8, 0xbb, 0x9, 0x8d, 0xde, 0x44, 0x4c, - 0xfb, 0x73, 0xd3, 0x38, 0x1c, 0x54, 0xd2, 0x78, 0x6f, 0x57, - 0x88, 0x65, 0xf4, 0xab, 0xd4, 0x1e, 0xad, 0x6c, 0xe3, 0xfa, - 0x57, 0xd2, 0x1f, 00, 0x74, 0xf, 0xec, 0x8f, 0x2, 0x47, - 0x74, 0xe9, 0xb6, 0x6d, 0x42, 0x56, 0x9c, 0x92, 0x39, 0xd8, - 0x3e, 0x55, 0xfd, 0x1, 0x3f, 0x8d, 0x7a, 0x55, 0x7d, 0xd6, - 0x13, 0x86, 0xa3, 0x88, 0xc3, 0xc2, 0xac, 0xea, 0x34, 0xe4, - 0xaf, 0x6b, 0x77, 0x3d, 0x8a, 0x58, 0x5, 0x38, 0x29, 0x39, - 0x5a, 0xe7, 0xc3, 0x12, 0xc1, 0x2c, 0x7, 0x12, 0xc6, 0xf1, - 0x9f, 0x47, 0x52, 0x2a, 0x3a, 0xfb, 0x96, 0xe2, 0xce, 0xde, - 0xed, 0xa, 0x4f, 0x4, 0x73, 0x21, 0xfe, 0x19, 0x10, 0x30, - 0xfd, 0x6b, 0x8c, 0xf1, 0x3f, 0xc1, 0xaf, 0xc, 0xf8, 0x8e, - 0xde, 0x40, 0x96, 0x11, 0xe9, 0xb7, 0x44, 0x1d, 0xb7, 0x16, - 0x6a, 0x10, 0x83, 0xee, 0xa3, 0x83, 0xf9, 0x54, 0xd6, 0xe1, - 0x6a, 0xb1, 0x57, 0xa3, 0x51, 0x3f, 0x26, 0xad, 0xfe, 0x62, - 0x9e, 0x5d, 0x24, 0xbd, 0xd9, 0x5c, 0xf9, 0x36, 0x8a, 0xd4, - 0xf1, 0x3f, 0x87, 0xae, 0x7c, 0x2b, 0xaf, 0x5e, 0x69, 0x57, - 0x78, 0x33, 0x5b, 0x3e, 0xd2, 0xcb, 0xd1, 0x81, 0x19, 0xc, - 0x3e, 0xa0, 0x83, 0x59, 0x75, 0xf1, 0x53, 0x84, 0xa9, 0xc9, - 0xc2, 0x4a, 0xcd, 0x68, 0x79, 0x2d, 0x34, 0xec, 0xc2, 0x8a, - 0x28, 0xa8, 0x11, 0xe9, 0xbf, 00, 0x3c, 0x49, 0x36, 0x93, - 0xe3, 0x68, 0xf4, 0xed, 0xc7, 0xec, 0xba, 0x8a, 0x32, 0x32, - 0x76, 0xe, 0xa0, 0xb2, 0x9f, 0xd0, 0x8f, 0xc6, 0xbe, 0x9e, - 0xaf, 0x92, 0xbe, 0xb, 0xda, 0x3d, 0xdf, 0xc4, 0xad, 0x1b, - 0x68, 0x24, 0x46, 0xcf, 0x23, 0x11, 0xd8, 0x4, 0x6f, 0xfe, - 0xb5, 0x7d, 0x6b, 0x5f, 0xa9, 0xf0, 0xcc, 0xe7, 0x2c, 0x13, - 0x52, 0xd9, 0x49, 0xdb, 0xee, 0x4c, 0xfa, 0x2c, 0xbd, 0xb7, - 0x49, 0xa7, 0xdc, 0xa5, 0xad, 0xea, 0x71, 0xe8, 0xda, 0x3d, - 0xed, 0xfc, 0xa7, 0x11, 0xdb, 0x42, 0xf2, 0x9c, 0xff, 00, - 0xb2, 0x9, 0xaf, 0x89, 0xae, 0xae, 0x64, 0xbd, 0xb9, 0x9a, - 0xe2, 0x56, 0xdd, 0x2c, 0xae, 0x64, 0x76, 0xf5, 0x24, 0xe4, - 0xd7, 0xda, 0x3e, 0x28, 0xf0, 0xf4, 0x3e, 0x2a, 0xd0, 0xee, - 0x74, 0xbb, 0x89, 0xa6, 0x82, 0xb, 0x80, 0x3, 0xbc, 0x4, - 0x6, 0xc0, 0x20, 0xe3, 0x90, 0x7d, 0x2b, 0xcd, 0xa4, 0xfd, - 0x9a, 0xb4, 0x16, 0xfb, 0x9a, 0x9e, 0xa0, 0xbf, 0x52, 0x87, - 0xff, 00, 0x65, 0xa8, 0xcf, 0x72, 0xfc, 0x5e, 0x61, 0x28, - 0x2a, 0x9, 0x72, 0xc6, 0xfd, 0x7a, 0xb1, 0x63, 0x28, 0x55, - 0xac, 0xd7, 0x22, 0xd1, 0x1f, 0x39, 0x51, 0x5f, 0x42, 0x49, - 0xfb, 0x33, 0x69, 0x87, 0xee, 0x6b, 0x57, 0x6b, 0xfe, 0xf4, - 0x6a, 0x6a, 0xb4, 0x9f, 0xb3, 0x1c, 0x7, 0xee, 0x6b, 0xf2, - 0xf, 0xf7, 0xad, 0x81, 0xff, 00, 0xd9, 0xab, 0xe4, 0x9f, - 0xf, 0xe6, 0x2b, 0xec, 0x7e, 0x2b, 0xfc, 0xcf, 0x33, 0xea, - 0x55, 0xfb, 0x7e, 0x27, 0x82, 0x51, 0x5e, 0x9b, 0xf1, 0x17, - 0xe0, 0xd2, 0x78, 0x3, 0x42, 0x1a, 0x8b, 0x6b, 0x3f, 0x6b, - 0x2f, 0x32, 0xc2, 0x90, 0xfd, 0x9f, 0x61, 0x62, 0x72, 0x7a, - 0xee, 0x3d, 00, 0x3d, 0xab, 0xcc, 0xab, 0xc7, 0xc4, 0xe1, - 0x6b, 0x60, 0xea, 0x7b, 0x2a, 0xca, 0xcf, 0xe4, 0xff, 00, - 0x23, 0x96, 0xa5, 0x39, 0x52, 0x97, 0x2c, 0xd6, 0xa1, 0x45, - 0x14, 0x57, 0x21, 0x98, 0x51, 0x45, 0x7a, 0x44, 0x1f, 00, - 0x7c, 0x55, 0x73, 0x6b, 0xd, 0xc4, 0x6b, 0x66, 0x56, 0x54, - 0x59, 0x2, 0x99, 0xc8, 0x20, 0x11, 0x9c, 0x1e, 0x3a, 0xd7, - 0x55, 0xc, 0x2d, 0x7c, 0x4d, 0xfd, 0x8c, 0x1c, 0xad, 0xbd, - 0x8d, 0x21, 0x4e, 0x75, 0x3e, 0x5, 0x73, 0xcd, 0xe8, 0xaf, - 0x46, 0x93, 0xe0, 0xf, 0x8c, 0x13, 0xa5, 0xa5, 0xb3, 0xff, - 00, 0xbb, 0x72, 0xb5, 0x56, 0x5f, 0x81, 0xfe, 0x32, 0x8b, - 0xa6, 0x94, 0x1f, 0xfd, 0xcb, 0x88, 0xff, 00, 0xf8, 0xaa, - 0xe8, 0x79, 0x6e, 0x35, 0x6f, 0x46, 0x5f, 0x73, 0x2f, 0xd8, - 0x55, 0x5f, 0x65, 0xfd, 0xc7, 0x7, 0x5e, 0xd3, 0xfb, 0x34, - 0x69, 0x3e, 0x6e, 0xaf, 0xab, 0xea, 0x4c, 0xbc, 0x43, 0xa, - 0xc0, 0x8d, 0xee, 0xc7, 0x27, 0xf4, 0x51, 0xf9, 0xd7, 0x12, - 0xff, 00, 0x7, 0x3c, 0x64, 0x9d, 0x74, 0x29, 0x8f, 0xfb, - 0xb2, 0x46, 0x7f, 0xf6, 0x6a, 0xf7, 0x9f, 0x82, 0x9e, 0x12, - 0xb9, 0xf0, 0x9f, 0x83, 0x84, 0x77, 0xd0, 0x1b, 0x6b, 0xeb, - 0x89, 0x9e, 0x59, 0x63, 0x6e, 0xab, 0xfc, 0x2a, 0xf, 0xe0, - 0x33, 0xf8, 0xd7, 0xb7, 0x91, 0xe0, 0x2b, 0xac, 0x74, 0x67, - 0x56, 0xd, 0x28, 0xdd, 0xea, 0x9a, 0xf2, 0xfd, 0x4e, 0xbc, - 0x1d, 0x19, 0xfb, 0x64, 0xe4, 0xad, 0x63, 0xbf, 0xa2, 0x8a, - 0xf3, 0x4f, 0x8a, 0xff, 00, 0x17, 0xa0, 0xf0, 0x54, 0x6d, - 0xa7, 0x69, 0xfb, 0x6e, 0x35, 0xa7, 0x5c, 0xf3, 0xca, 0x40, - 0xf, 0x76, 0xf5, 0x3e, 0x83, 0xf3, 0xf7, 0xfd, 0x27, 0x13, - 0x89, 0xa5, 0x84, 0xa4, 0xea, 0xd6, 0x76, 0x48, 0xf7, 0xea, - 0x54, 0x8d, 0x28, 0xf3, 0x49, 0xe8, 0x74, 0xde, 0x33, 0xf8, - 0x83, 0xa3, 0xf8, 0x1a, 0xd3, 0xcc, 0xd4, 0x2e, 0x33, 0x70, - 0xcb, 0x98, 0xad, 0x63, 0xe6, 0x59, 0x3e, 0x83, 0xb0, 0xf7, - 0x3c, 0x57, 0xcf, 0xde, 0x32, 0xf8, 0xe3, 0xaf, 0xf8, 0xa3, - 0x7c, 0x36, 0xaf, 0xfd, 0x91, 0x62, 0x4f, 0xfa, 0xbb, 0x66, - 0x3e, 0x63, 0xf, 0xf6, 0x9f, 0xaf, 0xe5, 0x8a, 0xe1, 0x35, - 0x3d, 0x4e, 0xef, 0x59, 0xbd, 0x96, 0xf2, 0xfa, 0xe2, 0x4b, - 0xab, 0x99, 0x4e, 0x5e, 0x49, 0xe, 0x49, 0xff, 00, 0x3e, - 0x95, 0x56, 0xbf, 0x2f, 0xcc, 0x33, 0xec, 0x46, 0x31, 0xb8, - 0x53, 0x7c, 0x90, 0xec, 0xb7, 0x7e, 0xac, 0xf9, 0xda, 0xf8, - 0xca, 0x95, 0x74, 0x8e, 0x88, 0x57, 0x76, 0x91, 0x8b, 0x33, - 0x16, 0x62, 0x72, 0x49, 0x39, 0x26, 0x92, 0x8a, 0x2b, 0xe6, - 0x4e, 00, 0xa2, 0x8a, 0x96, 0xde, 0xd2, 0x7b, 0xc7, 0xd9, - 0x4, 0x32, 0x4e, 0xdf, 0xdd, 0x8d, 0xb, 0x1f, 0xd2, 0x9a, - 0x4d, 0xbb, 0x20, 0x22, 0xa2, 0xb5, 0x47, 0x84, 0xb5, 0xc2, - 0x32, 0x34, 0x5d, 0x47, 0x1e, 0xbf, 0x64, 0x93, 0xfc, 0x2a, - 0x95, 0xd6, 0x9f, 0x75, 0x62, 0x71, 0x73, 0x6d, 0x35, 0xb9, - 0xf4, 0x96, 0x32, 0xbf, 0xce, 0xae, 0x54, 0xe7, 0x15, 0x79, - 0x45, 0xaf, 0x90, 0xdc, 0x5a, 0xdd, 0x15, 0xe8, 0xa2, 0x8a, - 0xcc, 0x41, 0x57, 0x34, 0xad, 0x66, 0xfb, 0x43, 0xba, 0x5b, - 0x9d, 0x3e, 0xee, 0x6b, 0x39, 0xd4, 0xe7, 0x7c, 0x2e, 0x57, - 0x3f, 0x5f, 0x5f, 0xa1, 0xaa, 0x74, 0x55, 0x46, 0x4e, 0x2f, - 0x9a, 0x2e, 0xcc, 0x13, 0x6b, 0x54, 0x7b, 0xef, 0xc3, 0xef, - 0xda, 0x9, 0x2e, 0xe5, 0x8e, 0xc7, 0xc4, 0xc1, 0x20, 0x73, - 0x85, 0x5b, 0xf8, 0xc6, 0x14, 0x9f, 0xf6, 0xc7, 0x6f, 0xa8, - 0xe3, 0xd8, 0x57, 0xb6, 0x47, 0x22, 0x4d, 0x1a, 0xc9, 0x1b, - 0x7, 0x46, 0x19, 0x56, 0x53, 0x90, 0x47, 0xa8, 0x35, 0xf0, - 0xb5, 0x7a, 0xc7, 0xc1, 0x9f, 0x8b, 0x12, 0x78, 0x76, 0xf2, - 0x1d, 0x17, 0x55, 0x98, 0xbe, 0x93, 0x2b, 0x6d, 0x8a, 0x47, - 0x3f, 0xf1, 0xee, 0xc7, 0xa7, 0x3f, 0xdd, 0x3f, 0xa7, 0xe7, - 0x5f, 0x77, 0x94, 0x67, 0xf2, 0xe6, 0x58, 0x7c, 0x63, 0xba, - 0x7b, 0x4b, 0xfc, 0xff, 00, 0xcf, 0xef, 0x3d, 0x9c, 0x2e, - 0x35, 0xdd, 0x42, 0xaf, 0xde, 0x7d, 0x27, 0x45, 0x20, 0x20, - 0x8c, 0x8e, 0x41, 0xa5, 0xaf, 0xd0, 0xcf, 0x70, 0x28, 0xa2, - 0xaa, 0xea, 0x7a, 0x9d, 0xb6, 0x8d, 0xa7, 0xcf, 0x7b, 0x79, - 0x32, 0xc1, 0x6d, 0x2, 0x17, 0x92, 0x46, 0xe8, 00, 0xa4, - 0xda, 0x8a, 0xbb, 0xd8, 0x4d, 0xdb, 0x56, 0x59, 0x66, 0x8, - 0xa5, 0x98, 0x80, 0x7, 0x24, 0x9e, 0xd5, 0xe6, 0xfe, 0x30, - 0xf8, 0xed, 0xa0, 0x78, 0x6f, 0x7c, 0x36, 0x4d, 0xfd, 0xb1, - 0x7a, 0x38, 0xd9, 0x6e, 0xd8, 0x8d, 0x4f, 0xbb, 0xf4, 0xfc, - 0xb3, 0x5e, 0x45, 0xf1, 0x27, 0xe3, 0x16, 0xa1, 0xe3, 0x29, - 0xe5, 0xb4, 0xb1, 0x79, 0x2c, 0x34, 0x60, 0x70, 0x22, 0x53, - 0x87, 0x98, 0x7a, 0xb9, 0x1d, 0xbf, 0xd9, 0xe9, 0xf5, 0xaf, - 0x3a, 0xaf, 0x80, 0xcc, 0x78, 0x95, 0xa6, 0xe9, 0xe0, 0xd7, - 0xfd, 0xbc, 0xff, 00, 0x45, 0xfe, 0x7f, 0x71, 0xe2, 0xd7, - 0xc7, 0xbb, 0xf2, 0xd2, 0xfb, 0xcf, 0x47, 0xf1, 0x7, 0xc7, - 0xbf, 0x14, 0x6b, 0x3b, 0x92, 0xda, 0x68, 0xb4, 0xa8, 0x4f, - 0xf0, 0xda, 0xaf, 0xcd, 0xff, 00, 0x7d, 0x36, 0x4f, 0xe5, - 0x8a, 0xe1, 0x6f, 0xf5, 0xad, 0x43, 0x54, 0x62, 0xd7, 0x97, - 0xd7, 0x37, 0x64, 0xf7, 0x9a, 0x56, 0x7f, 0xe6, 0x6a, 0x95, - 0x15, 0xf1, 0x75, 0xf1, 0x98, 0x8c, 0x4b, 0xbd, 0x69, 0xb7, - 0xf3, 0xfd, 0xf, 0x26, 0x75, 0x67, 0x53, 0xe2, 0x77, 0xa, - 0x28, 0xa2, 0xb8, 0xcc, 0xc2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, - 0x28, 0xa0, 0xb, 0x76, 0x7a, 0xbd, 0xf6, 0x9c, 0xc1, 0xad, - 0x6f, 0x6e, 0x2d, 0x88, 0xef, 0xc, 0xac, 0x9f, 0xc8, 0xd7, - 0x5b, 0xa2, 0x7c, 0x68, 0xf1, 0x6e, 0x8a, 0x55, 0x57, 0x53, - 0x6b, 0xd8, 0xc7, 0x1e, 0x5d, 0xe2, 0x89, 0x33, 0xf8, 0xfd, - 0xef, 0xd6, 0xb8, 0x7a, 0xdb, 0xf0, 0x4e, 0x96, 0x75, 0xaf, - 0x17, 0x68, 0xf6, 0x41, 0x77, 0x9, 0x6e, 0xa3, 0xc, 0x3f, - 0xd9, 0x7, 0x2d, 0xfa, 0x3, 0x5d, 0xd8, 0x6a, 0xf8, 0x88, - 0x54, 0x8c, 0x68, 0xcd, 0xa6, 0xdd, 0xb4, 0x66, 0xb4, 0xe7, - 0x35, 0x24, 0xa0, 0xec, 0x7d, 0x8d, 0xa5, 0xcb, 0x71, 0x3e, - 0x9b, 0x6b, 0x25, 0xda, 0xaa, 0x5d, 0x3c, 0x4a, 0xd2, 0xaa, - 0xc, 00, 0xc4, 0xc, 0x81, 0xf8, 0xd5, 0x9c, 0x73, 0x9a, - 0x5a, 0x2b, 0xf7, 0x14, 0xac, 0x92, 0x3e, 0xbd, 0x5, 0x14, - 0x51, 0x4c, 0x61, 0x58, 0xfe, 0x2e, 0x97, 0xca, 0xf0, 0xed, - 0xeb, 0x74, 0xf9, 0xd, 0x6c, 0x57, 0x33, 0xf1, 0x12, 0x6f, - 0x27, 0xc2, 0xb7, 0x7d, 0xb2, 0x31, 0x58, 0xd6, 0x7c, 0xb4, - 0xe4, 0xfc, 0x8c, 0xea, 0x3b, 0x41, 0xb3, 0xe1, 0x4f, 0x88, - 0x13, 0x79, 0xde, 0x22, 0xbb, 0x6f, 0xf6, 0x8d, 0x78, 0x7, - 0xc6, 0x8b, 0x8f, 0x2f, 0x47, 0x9b, 0x9f, 0xe1, 0x35, 0xee, - 0x5e, 0x2e, 0x97, 0xcd, 0xd6, 0x6f, 0x1b, 0xfd, 0xb3, 0x5f, - 0x3c, 0x7c, 0x78, 0xb9, 0xf2, 0xb4, 0x6b, 0x9f, 0x68, 0xcf, - 0xf2, 0xaf, 0xcd, 0xb2, 0xc5, 0xcd, 0x5e, 0xfe, 0xa7, 0xe2, - 0x18, 0xbf, 0xde, 0xe3, 0xe9, 0xc7, 0xbc, 0xd7, 0xe6, 0x7e, - 0x94, 0xfc, 0xc, 0xf0, 0x98, 0x5f, 0x82, 0x7f, 0xf, 0x84, - 0x90, 0xb0, 0x90, 0x78, 0x7b, 0x4f, 0xd, 0x91, 0xce, 0x7e, - 0xcd, 0x1e, 0x68, 0xaf, 0x59, 0xf8, 0x75, 0x66, 0x2c, 0xfe, - 0x1f, 0x78, 0x62, 0xdc, 0xc6, 0x10, 0xc5, 0xa5, 0xda, 0xc7, - 0xb7, 0x1d, 0x31, 0x12, 0x8c, 0x51, 0x5f, 0xa6, 0x24, 0x7e, - 0xe0, 0xa3, 0xa1, 0xd1, 0xd1, 0x45, 0x15, 0x65, 0x85, 0x14, - 0x51, 0x40, 0x5, 0x7c, 0x4d, 0xfb, 0x4b, 0xf8, 0xc4, 0xf8, - 0xa3, 0xe2, 0x65, 0xcd, 0xac, 0x6e, 0x1a, 0xd3, 0x49, 0x51, - 0x69, 0x1e, 0x31, 0x8d, 0xfd, 0x5c, 0xe4, 0x7b, 0x9c, 0x7e, - 0x15, 0xf5, 0xdf, 0x8e, 0xfc, 0x51, 0xf, 0x82, 0xfc, 0x21, - 0xaa, 0xeb, 0x33, 0x9f, 0x96, 0xd2, 0x6, 0x75, 0x5c, 0xe3, - 0x73, 0xe3, 0xa, 0xa3, 0xdc, 0x9c, 0x57, 0xe7, 0x9b, 0xcb, - 0x3e, 0xa5, 0x7a, 0xf3, 0x4c, 0xc6, 0x5b, 0x9b, 0x89, 0xb, - 0xbb, 0x1e, 0xac, 0xcc, 0x72, 0x4f, 0xe6, 0x6b, 0xe4, 0x78, - 0x83, 0x13, 0xcb, 0x4e, 0x34, 0x17, 0x5d, 0x5f, 0xa2, 0x3e, - 0x33, 0x88, 0xf1, 0x36, 0x84, 0x30, 0xd1, 0xde, 0x5a, 0xbf, - 0x45, 0xb7, 0xe3, 0xf9, 0x1e, 0xfb, 0xfb, 0x27, 0x78, 0x3f, - 0xed, 0xba, 0xdd, 0xe6, 0xb5, 0x32, 0xe6, 0x3b, 0x65, 0xdb, - 0x1e, 0x47, 0xf1, 0x1a, 0xfa, 0xb6, 0xbc, 0xff, 00, 0xe0, - 0x77, 0x85, 0x7, 0x85, 0x7e, 0x1f, 0xe9, 0xf1, 0x32, 0x6d, - 0x9e, 0x75, 0xf3, 0xa4, 0xfa, 0x9a, 0xf4, 0xa, 0xf5, 0xf2, - 0xac, 0x3f, 0xd5, 0xb0, 0x90, 0x8b, 0xdd, 0xea, 0xfe, 0x67, - 0xd0, 0x65, 0xb8, 0x7f, 0xaa, 0xe1, 0x61, 0xe, 0xbb, 0xbf, - 0x98, 0x51, 0x45, 0x15, 0xeb, 0x9e, 0x98, 0x51, 0x45, 0x14, - 00, 0x53, 0x26, 0x86, 0x3b, 0x98, 0x64, 0x86, 0x68, 0xd6, - 0x58, 0xa4, 0x52, 0xae, 0x8e, 0x32, 0xac, 0xf, 0x4, 0x11, - 0xdc, 0x56, 0x5f, 0x8a, 0xfc, 0x5b, 0xa3, 0x78, 0x1b, 0xc3, - 0xf7, 0xba, 0xe7, 0x88, 0x35, 0x3b, 0x5d, 0x1f, 0x48, 0xb2, - 0x8c, 0xcb, 0x71, 0x7b, 0x79, 0x20, 0x8e, 0x38, 0xd4, 0x77, - 0x24, 0xd7, 0xe7, 0xf7, 0xc6, 0xdf, 0xf8, 0x2c, 0x9f, 0x82, - 0xfc, 0x31, 0x3c, 0xd6, 0x1f, 0xd, 0xbc, 0x39, 0x73, 0xe3, - 0xb, 0x84, 0x3b, 0x7f, 0xb4, 0xb5, 0x16, 0x36, 0x96, 0x9f, - 0x55, 0x5c, 0x19, 0x1f, 0xf1, 0xb, 0x40, 0x1e, 0x85, 0xf1, - 0x93, 0xfe, 0x9, 0x37, 0xf0, 0x6b, 0xe2, 0x76, 0xa3, 0x73, - 0xa9, 0xe8, 0x9f, 0xda, 0x3e, 0x3, 0xd4, 0x6e, 0x1c, 0xc9, - 0x20, 0xd2, 0x1d, 0x5e, 0xd4, 0xb1, 0xeb, 0xfb, 0x97, 0x4, - 0x2f, 0xd1, 0xa, 0x8a, 0xf0, 0xd9, 0xbf, 0xe0, 0x88, 0xb0, - 0xfd, 0xb3, 0x31, 0x7c, 0x58, 0x90, 0x5a, 0x67, 0xa3, 0xe8, - 0xa0, 0xc9, 0x8f, 0xa8, 0x9b, 0x15, 0xe2, 0x1a, 0xa7, 0xfc, - 0x16, 0xf, 0xe3, 0xc5, 0xf4, 0xcc, 0xd6, 0xd0, 0x78, 0x57, - 0x4e, 0x8c, 0xfd, 0xd4, 0x87, 0x4c, 0x76, 0xc7, 0xe2, 0xf2, - 0xb6, 0x6b, 0xed, 0xf, 0xf8, 0x26, 0xc7, 0xed, 0x35, 0xf1, - 0x77, 0xf6, 0xa3, 0x93, 0xc5, 0xba, 0xcf, 0x8e, 0x2e, 0xb4, - 0xb6, 0xf0, 0xde, 0x91, 0xe5, 0x5a, 0x5b, 0x8b, 0x1b, 0x11, - 0xb, 0xcb, 0x74, 0xff, 00, 0x33, 0x65, 0xb2, 0x78, 0x54, - 0x3, 0x81, 0xfd, 0xf1, 0x4f, 0x52, 0x74, 0x65, 0xf, 0x87, - 0x1f, 0xf0, 0x47, 0x3f, 0x84, 0x5e, 0x16, 0xb8, 0x4b, 0x8f, - 0x13, 0xeb, 0x1a, 0xef, 0x8c, 0xa4, 0x52, 0xf, 0x91, 0x2c, - 0xab, 0x67, 0x6e, 0x48, 0xf5, 0x58, 0xfe, 0x7f, 0xfc, 0x7e, - 0xbe, 0xd5, 0xf0, 0x27, 0xc3, 0xef, 0xd, 0xfc, 0x31, 0xf0, - 0xe5, 0xb6, 0x81, 0xe1, 0x4d, 0x12, 0xcb, 0x40, 0xd1, 0xed, - 0x86, 0x23, 0xb4, 0xb1, 0x88, 0x46, 0x83, 0xd4, 0x9c, 0x75, - 0x27, 0xb9, 0x39, 0x26, 0xbc, 0x43, 0xc5, 0x7f, 0xf0, 0x50, - 0xef, 0x80, 0xbe, 0x6, 0xf1, 0x76, 0xaf, 0xe1, 0x8d, 0x7b, - 0xc6, 0xaf, 0xa6, 0x6b, 0x5a, 0x55, 0xd4, 0x96, 0x77, 0x96, - 0xd2, 0xe9, 0x77, 0x67, 0xcb, 0x95, 0x1b, 0x6b, 0xd, 0xc2, - 0x22, 0xa7, 0x91, 0xd4, 0x1c, 0x1a, 0xf5, 0xbf, 0x84, 0xbf, - 0x19, 0xbc, 0x1d, 0xf1, 0xcf, 0xc2, 0xed, 0xe2, 0x2f, 0x3, - 0xeb, 0x51, 0xeb, 0xba, 0x3a, 0xdc, 0x35, 0xab, 0x5c, 0xc7, - 0x1b, 0xc6, 0x4, 0x8a, 0x1, 0x65, 0xc3, 0xa8, 0x3c, 0x6, - 0x1d, 0xbb, 0xd2, 0x19, 0xda, 0xd7, 0x11, 0xf1, 0x93, 0xc4, - 0x43, 0xc3, 0xbe, 0x1, 0xd4, 0x59, 0x5f, 0x6c, 0xf7, 0x4b, - 0xf6, 0x58, 0xb9, 0xe7, 0x2f, 0xc1, 0xfc, 0x97, 0x71, 0xae, - 0xde, 0xbe, 0x76, 0xfd, 0xa4, 0x7c, 0x43, 0xf6, 0xcd, 0x7e, - 0xc3, 0x48, 0x8d, 0xf2, 0x96, 0x91, 0x19, 0x64, 0x3, 0xfb, - 0xef, 0xd3, 0xf2, 00, 0x7e, 0x75, 0xe2, 0xe7, 0x18, 0x9f, - 0xaa, 0xe0, 0xa7, 0x35, 0xbb, 0xd1, 0x7a, 0xbf, 0xea, 0xe7, - 0x2e, 0x2a, 0xa7, 0xb3, 0xa4, 0xdf, 0xc8, 0xf1, 0xda, 0x28, - 0xa2, 0xbf, 0x19, 0x3e, 0x54, 0x2a, 0xe6, 0x8f, 0xa6, 0x49, - 0xac, 0xea, 0xd6, 0x76, 0x10, 0x82, 0x65, 0xb9, 0x99, 0x22, - 0x5c, 0x76, 0xdc, 0x40, 0xcd, 0x53, 0xaf, 0x44, 0xf8, 0x18, - 0x9a, 0x64, 0x3e, 0x33, 0xfb, 0x7e, 0xa9, 0x79, 0x6d, 0x67, - 0x15, 0x9c, 0x4c, 0xf1, 0x1b, 0x89, 0x42, 0x6, 0x90, 0xfc, - 0xa3, 0x19, 0xeb, 0x80, 0x58, 0xfe, 0x55, 0xd7, 0x84, 0xa2, - 0xb1, 0x18, 0x88, 0x52, 0x6e, 0xc9, 0xbd, 0x7d, 0x3a, 0x9a, - 0x52, 0x8f, 0x3c, 0xd4, 0x59, 0xf4, 0xfe, 0x9f, 0x63, 0x16, - 0x99, 0x61, 0x6f, 0x69, 0x2, 0xec, 0x86, 0x8, 0xd6, 0x24, - 0x51, 0xd8, 0x1, 0x81, 0x56, 0x2b, 0x2a, 0x3f, 0x16, 0x68, - 0x93, 0x7d, 0xcd, 0x5e, 0xc5, 0xff, 00, 0xdd, 0xb9, 0x43, - 0xfd, 0x6a, 0x43, 0xe2, 0x4d, 0x25, 0x46, 0x4e, 0xa9, 0x66, - 0x7, 0xaf, 0x9e, 0x9f, 0xe3, 0x5f, 0xb7, 0xc6, 0xa5, 0x24, - 0xac, 0xa4, 0xad, 0xea, 0x7d, 0x72, 0x94, 0x6d, 0xa3, 0x34, - 0x69, 0x9, 0xa, 0x9, 0x27, 00, 0x72, 0x49, 0xae, 0x5b, - 0x55, 0xf8, 0xa5, 0xe1, 0x5d, 0x1a, 0x36, 0x69, 0xf5, 0xbb, - 0x57, 0x23, 0xf8, 0x20, 0x7f, 0x35, 0xbf, 0x25, 0xcd, 0x78, - 0xf7, 0xc4, 0x9f, 0x8f, 0x12, 0x6b, 0xf6, 0xb2, 0xe9, 0x9a, - 0xa, 0x49, 0x69, 0x67, 0x20, 0x29, 0x2d, 0xd4, 0x9c, 0x49, - 0x22, 0x9e, 0xa1, 0x47, 0xf0, 0x8f, 0x7e, 0xbf, 0x4a, 0xf3, - 0x71, 0x99, 0xb6, 0x13, 0x7, 0x6, 0xe5, 0x34, 0xdf, 0x64, - 0xee, 0xcc, 0x2a, 0xe2, 0x69, 0xd2, 0x57, 0x6e, 0xec, 0xe2, - 0x3e, 0x27, 0x78, 0x82, 0x2f, 0x13, 0xf8, 0xe7, 0x55, 0xbf, - 0x80, 0x83, 0x6e, 0xd2, 0x8, 0xe3, 0x61, 0xfc, 0x4a, 0x80, - 0x28, 0x3f, 0x8e, 0x33, 0xf8, 0xd7, 0x2d, 0x45, 0x15, 0xf8, - 0xed, 0x6a, 0xb2, 0xaf, 0x52, 0x55, 0x65, 0xbc, 0x9b, 0x7f, - 0x79, 0xf2, 0xd2, 0x93, 0x9c, 0x9c, 0x9f, 0x50, 0xa2, 0x8a, - 0xe9, 0x3c, 0x7, 0xe0, 0x6b, 0xdf, 0x1e, 0x6b, 0x69, 0x65, - 0x6a, 0xc, 0x70, 0x2f, 0xcd, 0x3d, 0xc1, 0x1f, 0x2c, 0x49, - 0xfe, 0x27, 0xb0, 0xa5, 0x4a, 0x94, 0xeb, 0xcd, 0x53, 0xa6, - 0xae, 0xd8, 0x46, 0x2e, 0x6d, 0x46, 0x3b, 0x9e, 0xab, 0xfb, - 0x36, 0xf8, 0x58, 0xa4, 0x57, 0xfa, 0xfc, 0xc8, 0x41, 0x7f, - 0xf4, 0x6b, 0x72, 0x47, 0x51, 0xc1, 0x72, 0x3f, 0x1c, 0xf, - 0xc0, 0xd7, 0xb9, 0x55, 0x3d, 0x23, 0x4a, 0xb6, 0xd0, 0xf4, - 0xcb, 0x6b, 0xb, 0x38, 0xc4, 0x56, 0xd6, 0xf1, 0x88, 0xd1, - 0x47, 0xa0, 0xfe, 0xb5, 0x72, 0xbf, 0x6a, 0xcb, 0xf0, 0x8b, - 0x3, 0x86, 0x85, 0x5, 0xba, 0xdf, 0xd7, 0xa9, 0xf5, 0x94, - 0x29, 0x7b, 0x1a, 0x6a, 0x1, 0x45, 0x14, 0x57, 0xa2, 0x6e, - 0x14, 0x51, 0x45, 00, 0x7c, 0xf7, 0xfb, 0x4a, 0xeb, 0xa6, - 0x7d, 0x67, 0x4c, 0xd2, 0x11, 0xbe, 0x4b, 0x78, 0x8d, 0xc3, - 0x8f, 0xf6, 0x98, 0xe0, 0x7e, 0x41, 0x4f, 0xe7, 0x5e, 0x31, - 0x5d, 0x3f, 0xc4, 0xcd, 0x77, 0xfe, 0x12, 0x3f, 0x1c, 0xea, - 0xf7, 0x81, 0xb7, 0x45, 0xe7, 0x18, 0xa3, 0x3f, 0xec, 0x27, - 0xca, 0x3f, 0x96, 0x7f, 0x1a, 0xe6, 0x2b, 0xf1, 0x3c, 0xcf, - 0x11, 0xf5, 0x9c, 0x65, 0x4a, 0x8b, 0x6b, 0xe9, 0xe8, 0xb4, - 0x47, 0xc9, 0x62, 0x27, 0xed, 0x2a, 0xca, 0x41, 0x45, 0x14, - 0x57, 0x96, 0x73, 0x9b, 0x3e, 0xd, 0xd0, 0xcf, 0x89, 0x3c, - 0x55, 0xa5, 0xe9, 0xb8, 0xca, 0xdc, 0x4e, 0xaa, 0xff, 00, - 0xee, 0xe, 0x5b, 0xf4, 0x6, 0xbe, 0xd1, 0x55, 0xa, 0xa0, - 0x1, 0x80, 0x6, 00, 0xaf, 0x9a, 0xff, 00, 0x67, 0x4d, - 0x18, 0xdf, 0x78, 0xce, 0x7b, 0xf6, 0x5c, 0xc7, 0x63, 0x6e, - 0xc4, 0x1f, 0xf6, 0xdf, 0xe5, 0x1f, 0xa6, 0xea, 0xfa, 0x56, - 0xbf, 0x50, 0xe1, 0x8a, 0x1e, 0xcf, 0xb, 0x2a, 0xaf, 0x79, - 0x3f, 0xc1, 0x7f, 0xc1, 0xb9, 0xf4, 0x19, 0x7c, 0x2d, 0x4d, - 0xcb, 0xb8, 0x51, 0x45, 0x15, 0xf6, 0x7, 0xaa, 0x14, 0x51, - 0x55, 0xb5, 0x1d, 0x42, 0xd, 0x2a, 0xc2, 0xe2, 0xf6, 0xe5, - 0xc4, 0x76, 0xf6, 0xf1, 0xb4, 0xb2, 0x39, 0xec, 0xa0, 0x64, - 0xd2, 0x6d, 0x45, 0x5d, 0x83, 0x76, 0xd4, 0xe3, 0x3e, 0x2d, - 0x7c, 0x47, 0x4f, 0x1, 0x68, 0xaa, 0xb6, 0xfb, 0x5f, 0x55, - 0xba, 0x5, 0x60, 0x43, 0xce, 0xc1, 0xdd, 0xc8, 0xf4, 0x1d, - 0xbd, 0x4d, 0x7c, 0xab, 0x73, 0x73, 0x2d, 0xe5, 0xc4, 0xb3, - 0xcf, 0x23, 0x4b, 0x34, 0xac, 0x5d, 0xe4, 0x73, 0x92, 0xc4, - 0xf5, 0x26, 0xb6, 0x3c, 0x6d, 0xe2, 0xa9, 0xfc, 0x65, 0xe2, - 0x4b, 0xcd, 0x52, 0x72, 0x42, 0xc8, 0xdb, 0x62, 0x8c, 0xff, - 00, 0xcb, 0x38, 0xc7, 0xdd, 0x5f, 0xcb, 0xf5, 0x26, 0xb0, - 0xab, 0xf1, 0xdc, 0xdf, 0x32, 0x96, 0x61, 0x5d, 0xb4, 0xfd, - 0xc5, 0xb2, 0xfd, 0x7e, 0x67, 0xcb, 0x62, 0x6b, 0xba, 0xf3, - 0xf2, 0x5b, 0x5, 0x14, 0x51, 0x5e, 0x11, 0xc6, 0x15, 0xa7, - 0xe1, 0xdf, 0xe, 0x6a, 0x1e, 0x2a, 0xd5, 0x22, 0xb0, 0xd3, - 0x6d, 0xda, 0x79, 0xdc, 0xf6, 0xfb, 0xa8, 0x3f, 0xbc, 0xc7, - 0xb0, 0xf7, 0xa8, 0x34, 0x7d, 0x22, 0xeb, 0x5e, 0xd4, 0xed, - 0xb4, 0xfb, 0x28, 0x8c, 0xd7, 0x57, 0xe, 0x11, 0x10, 0x7a, - 0xfb, 0xfb, 0xe, 0xb5, 0xf5, 0xc7, 0xc3, 0xff, 00, 0x1, - 0xd9, 0x78, 0xb, 0x45, 0x5b, 0x4b, 0x71, 0xbe, 0xe6, 0x40, - 0x1a, 0xe6, 0xe0, 0xf5, 0x91, 0xf1, 0xfa, 0x1, 0xd8, 0x57, - 0xbf, 0x94, 0xe5, 0x52, 0xcc, 0xaa, 0x5d, 0xe9, 0x5, 0xbb, - 0xfd, 0x17, 0xf5, 0xa1, 0xdb, 0x86, 0xc3, 0x3a, 0xf2, 0xd7, - 0x64, 0x71, 0xde, 0xf, 0xfd, 0x9f, 0x34, 0x6d, 0x26, 0x28, - 0xe6, 0xd6, 0x98, 0xea, 0xd7, 0x9d, 0x4c, 0x79, 0x2b, 0xa, - 0x9f, 0x4c, 0x75, 0x6f, 0xc7, 0xf2, 0xaf, 0x50, 0xb2, 0xd3, - 0xed, 0x74, 0xd8, 0x16, 0x1b, 0x4b, 0x68, 0xad, 0xa2, 0x51, - 0x80, 0x91, 0x20, 0x50, 0x3f, 0x1, 0x56, 0x28, 0xaf, 0xd5, - 0x30, 0xd8, 0x2c, 0x3e, 0x12, 0x3c, 0xb4, 0x60, 0x97, 0xe7, - 0xf7, 0x9f, 0x45, 0x4e, 0x94, 0x29, 0x2b, 0x41, 0x58, 0x2a, - 0x2b, 0x8b, 0x58, 0x6e, 0xe2, 0x68, 0xe7, 0x89, 0x26, 0x8d, - 0x86, 0xa, 0x48, 0xa1, 0x81, 0xfc, 0xd, 0x4b, 0x45, 0x76, - 0x34, 0x9e, 0x8c, 0xd8, 0xf2, 0xef, 0x1a, 0xfc, 0x5, 0xd1, - 0x75, 0xe8, 0x65, 0x9f, 0x49, 0x51, 0xa4, 0xea, 0x7, 0x2c, - 0x2, 0x67, 0xc9, 0x73, 0xe8, 0x57, 0xb7, 0xd4, 0x7e, 0x46, - 0xbe, 0x72, 0xd6, 0x74, 0x6b, 0xcf, 0xf, 0xea, 0x73, 0xd8, - 0x5f, 0xc0, 0xd6, 0xf7, 0x50, 0xb6, 0xd7, 0x46, 0xfe, 0x63, - 0xd4, 0x1f, 0x5a, 0xfb, 0x7a, 0xbc, 0x83, 0xf6, 0x87, 0xf0, - 0x7c, 0x5a, 0x87, 0x87, 0xd3, 0x5e, 0x89, 0x31, 0x77, 0x64, - 0x55, 0x25, 0x61, 0xfc, 0x51, 0x31, 0xc7, 0x3f, 0x42, 0x47, - 0xe6, 0x6b, 0xe2, 0xf3, 0xcc, 0x9a, 0x94, 0xa8, 0xcb, 0x13, - 0x87, 0x8f, 0x2c, 0xa3, 0xab, 0x4b, 0x66, 0xba, 0xfc, 0xcf, - 0x23, 0x19, 0x85, 0x8b, 0x8b, 0xa9, 0x5, 0x66, 0x8f, 0x9c, - 0xe8, 0xa2, 0x8a, 0xfc, 0xd0, 0xf0, 0x42, 0x8a, 0x28, 0xa0, - 0xf, 0xa8, 0x7e, 0x5, 0x78, 0xd2, 0x4f, 0x14, 0x78, 0x54, - 0xd9, 0xdd, 0x3e, 0xfb, 0xcd, 0x34, 0xac, 0x25, 0x89, 0xe5, - 0xe3, 0xc7, 0xc8, 0x4f, 0xbf, 0x4, 0x7e, 0x15, 0xe9, 0x55, - 0xf2, 0xd7, 0xc0, 0x5d, 0x71, 0xf4, 0x9f, 0x88, 0x16, 0xd6, - 0xfb, 0xb1, 0xd, 0xfa, 0x34, 0xe, 0x3b, 0x67, 0x1b, 0x94, - 0xfe, 0x63, 0x1f, 0x8d, 0x7d, 0x4b, 0x5f, 0xb0, 0x64, 0x58, - 0xb7, 0x8b, 0xc1, 0x45, 0xc9, 0xeb, 0x1d, 0x1f, 0xcb, 0x6f, - 0xc0, 0xfa, 0x7c, 0x1d, 0x47, 0x52, 0x92, 0xbe, 0xeb, 0x40, - 0xaf, 0x9c, 0x7e, 0x3f, 0xf8, 0xf1, 0xf5, 0x6d, 0x67, 0xfb, - 0x2, 0xd2, 0x42, 0x2c, 0xac, 0x88, 0x33, 0xed, 0x3c, 0x49, - 0x2f, 0xa7, 0xd1, 0x7f, 0x9e, 0x7d, 0x2b, 0xe8, 0x6d, 0x42, - 0xf1, 0x34, 0xfb, 0xb, 0x9b, 0xa9, 0xe, 0x12, 0x8, 0x9a, - 0x46, 0xfa, 00, 0x4f, 0xf4, 0xaf, 0x88, 0xef, 0xef, 0x24, - 0xd4, 0x6f, 0xae, 0x2e, 0xe6, 0x39, 0x96, 0x79, 0x1a, 0x57, - 0x3e, 0xec, 0x72, 0x7f, 0x9d, 0x79, 0x9c, 0x4d, 0x8b, 0x95, - 0x1a, 0x11, 0xa1, 0x7, 0xf1, 0xef, 0xe8, 0x8e, 0x7c, 0xc2, - 0xab, 0x8c, 0x14, 0x17, 0x52, 0xa, 0x28, 0xa2, 0xbf, 0x32, - 0x3c, 00, 0xa2, 0x8a, 0x96, 0xd2, 0xdd, 0xae, 0xee, 0xa1, - 0x81, 0x8, 0xf, 0x2b, 0xac, 0x60, 0x9e, 0x99, 0x27, 0x14, - 0xd2, 0x6d, 0xd9, 0x1, 0x7f, 0x40, 0xf0, 0xc6, 0xab, 0xe2, - 0x8b, 0xaf, 0xb3, 0xe9, 0x76, 0x33, 0x5e, 0x48, 0x3e, 0xf7, - 0x96, 0xbf, 0x2a, 0xff, 00, 0xbc, 0xdd, 0x7, 0xe3, 0x5e, - 0x8d, 0xa7, 0x7e, 0xcd, 0xfe, 0x20, 0xb9, 0x40, 0xd7, 0x57, - 0xb6, 0x56, 0x79, 0xfe, 0x1d, 0xcd, 0x23, 0xf, 0xc8, 0x63, - 0xf5, 0xaf, 0x7a, 0xf0, 0xb7, 0x86, 0xac, 0xfc, 0x27, 0xa1, - 0xda, 0xe9, 0xb6, 0x51, 0x85, 0x8e, 0x25, 0x1, 0x9b, 0x1c, - 0xc8, 0xdd, 0xd8, 0xfb, 0x93, 0x5a, 0xf5, 0xfa, 0x5e, 0x13, - 0x86, 0x70, 0xf0, 0x82, 0x78, 0x96, 0xe5, 0x2f, 0xb9, 0x7f, - 0x99, 0xef, 0xd2, 0xcb, 0xe0, 0x95, 0xea, 0x6a, 0xcf, 0x2, - 0x5f, 0xd9, 0x8e, 0xeb, 0x1f, 0x36, 0xbf, 0x8, 0x3e, 0xd6, - 0xc4, 0xff, 00, 0xec, 0xd4, 0xd7, 0xfd, 0x98, 0xef, 00, - 0xf9, 0x35, 0xe8, 0x9, 0xff, 00, 0x6a, 0xd9, 0x87, 0xfe, - 0xcd, 0x5e, 0xff, 00, 0x45, 0x7a, 0x5f, 0xea, 0xfe, 0x5d, - 0xff, 00, 0x3e, 0xff, 00, 0x17, 0xfe, 0x67, 0x47, 0xd4, - 0xa8, 0x76, 0xfc, 0x59, 0xf3, 0x8d, 0xd7, 0xec, 0xd7, 0xaf, - 0x44, 0x9, 0x83, 0x51, 0xb0, 0x9f, 0xd9, 0x8b, 0xa1, 0xff, - 00, 0xd0, 0x4d, 0x73, 0x3a, 0xb7, 0xc1, 0x7f, 0x17, 0x69, - 0x21, 0x99, 0xb4, 0xa6, 0xba, 0x41, 0xfc, 0x56, 0x8e, 0x24, - 0xfd, 0x7, 0x3f, 0xa5, 0x7d, 0x69, 0x45, 0x73, 0x54, 0xe1, - 0xac, 0xc, 0xd7, 0xb9, 0x78, 0xfc, 0xff, 00, 0xcc, 0xce, - 0x59, 0x7d, 0x17, 0xb5, 0xd1, 0xf0, 0xe5, 0xee, 0x9d, 0x77, - 0xa6, 0xc9, 0xe5, 0xdd, 0xda, 0xcd, 0x6b, 0x27, 0xf7, 0x66, - 0x8c, 0xa1, 0xfc, 0x8d, 0x7a, 0x5f, 0xec, 0xed, 0xa3, 0xb, - 0xff, 00, 0x1b, 0xcb, 0x78, 0xe3, 0x2b, 0x63, 0x6e, 0xce, - 0xa7, 0xd1, 0x9b, 0xe5, 0x1f, 0xa1, 0x6a, 0xfa, 0x3e, 0xff, - 00, 0x4d, 0xb4, 0xd5, 0x6d, 0xda, 0xb, 0xcb, 0x68, 0xae, - 0xa1, 0x61, 0x83, 0x1c, 0xc8, 0x18, 0x1f, 0xc0, 0xd6, 0x4f, - 0x86, 0xfc, 0xd, 0xa3, 0x78, 0x46, 0xea, 0xf6, 0x7d, 0x26, - 0xd3, 0xec, 0x8d, 0x77, 0xb7, 0xcc, 0x55, 0x62, 0x57, 0xe5, - 0xce, 0x30, 0xf, 0x4e, 0xa7, 0xa5, 0x71, 0x61, 0xb8, 0x71, - 0xe1, 0x71, 0x74, 0xeb, 0x29, 0xa9, 0x45, 0x3b, 0xeb, 0xa3, - 0xf2, 0xfc, 0x4c, 0x69, 0xe0, 0x1d, 0x3a, 0x91, 0x95, 0xee, - 0x91, 0xbf, 0x45, 0x14, 0x57, 0xdc, 0x1e, 0xc0, 0x51, 0x45, - 0x14, 00, 0x57, 0x13, 0xf1, 0x6e, 0xe3, 0xc8, 0xf0, 0xa4, - 0xe3, 0xfb, 0xc0, 0xd7, 0x6d, 0x5e, 0x6b, 0xf1, 0xca, 0xe3, - 0xc9, 0xf0, 0xbb, 0xc, 0xe3, 0x2a, 0xd5, 0xc5, 0x8d, 0x97, - 0x2e, 0x1e, 0x6f, 0xc8, 0xe7, 0xc4, 0x3b, 0x52, 0x93, 0xf2, - 0x3e, 0x20, 0xf1, 0x4, 0xbe, 0x65, 0xfd, 0xd3, 0x7a, 0xb9, - 0xaf, 0x9e, 0xfe, 0x34, 0xc4, 0x75, 0x29, 0x6d, 0xec, 0x14, - 0xe0, 0xdd, 0x4f, 0x1c, 00, 0xff, 00, 0xbc, 0xc1, 0x7f, - 0xad, 0x7b, 0xe6, 0xae, 0xfb, 0xa5, 0x98, 0xfa, 0xb1, 0xaf, - 0x12, 0xf1, 0x1d, 0xa7, 0xf6, 0xd7, 0xc5, 0x2f, 0x6, 0xe9, - 0xa3, 0xfe, 0x5e, 0xb5, 0xdb, 0x18, 0x78, 0xf7, 0x9d, 0x5, - 0x7c, 0x1e, 0x4d, 0x1b, 0xd4, 0x47, 0xe2, 0xf4, 0xd7, 0xb4, - 0xcd, 0x28, 0xaf, 0xef, 0x1f, 0xb2, 0xba, 0x6c, 0x1f, 0x65, - 0xd3, 0xed, 0x61, 0xff, 00, 0x9e, 0x71, 0x2a, 0x7e, 0x40, - 0xa, 0x2a, 0xcd, 0x15, 0xfa, 0x49, 0xfb, 0x80, 0x51, 0x45, - 0x14, 00, 0x51, 0x45, 0x21, 0x21, 0x41, 0x24, 0xe0, 0xe, - 0x49, 0xa0, 0xf, 0x9d, 0x7f, 0x6b, 0xdf, 0x1a, 0x2d, 0xb6, - 0x93, 0xa6, 0x78, 0x5e, 0x16, 0x6, 0x5b, 0xa7, 0xfb, 0x5d, - 0xc0, 0xd, 0xc8, 0x45, 0x38, 0x50, 0x47, 0xbb, 0x64, 0xff, - 00, 0xc0, 0x6b, 0xc3, 0xbe, 0x10, 0xf8, 0x59, 0xbc, 0x59, - 0xe3, 0xad, 0x36, 0xcf, 0x69, 0x68, 0x84, 0x81, 0xdf, 0x3, - 0xb0, 0xe6, 0x9d, 0xf1, 0xa3, 0xc6, 0x63, 0xc7, 0x7f, 0x11, - 0xf5, 0x5d, 0x46, 0x27, 0xdf, 0x67, 0x1b, 0x7d, 0x9a, 0xd8, - 0x83, 0x91, 0xe5, 0xa7, 00, 0x8f, 0x62, 0x77, 0x37, 0xe3, - 0x5e, 0xd3, 0xfb, 0x25, 0xf8, 0x3f, 0xca, 0xb7, 0xbe, 0xd7, - 0x66, 0x8c, 0x65, 0x8f, 0x95, 0x13, 0x11, 0xf9, 0xd7, 0xe7, - 0x55, 0x3f, 0xe1, 0x4f, 0x33, 0x51, 0x5a, 0xc6, 0xff, 00, - 0x82, 0xff, 00, 0x3f, 0xd4, 0xfc, 0xe6, 0x2f, 0xfb, 0x53, - 0x35, 0x72, 0xde, 0x29, 0xfe, 0xb, 0xfc, 0xcf, 0xa3, 0x60, - 0x85, 0x6d, 0xe1, 0x8e, 0x24, 0x18, 0x44, 0x50, 0xa0, 0x7b, - 0xa, 0x92, 0x8a, 0x2b, 0xf4, 0x5d, 0x8f, 0xd1, 0x82, 0x8a, - 0x28, 0xa0, 0x2, 0xb3, 0x3c, 0x4d, 0xe2, 0x4d, 0x33, 0xc1, - 0xde, 0x1e, 0xd4, 0x75, 0xcd, 0x66, 0xf2, 0x2d, 0x3f, 0x4a, - 0xd3, 0xe0, 0x7b, 0x9b, 0xab, 0xa9, 0x9b, 0x6a, 0x45, 0x1a, - 0x8c, 0xb3, 0x13, 0xf4, 0x15, 0xa7, 0x5f, 0x1, 0xff, 00, - 0xc1, 0x62, 0x3e, 0x30, 0xc9, 0xe0, 0xdf, 0x81, 0x1a, 0x3f, - 0x82, 0x2c, 0xa7, 0x31, 0xde, 0x78, 0xae, 0xfb, 0xfd, 0x20, - 0x2b, 0x60, 0xfd, 0x92, 0xc, 0x3b, 0xf, 0xa1, 0x73, 0x10, - 0xfa, 0x3, 0x40, 0x1f, 0x9e, 0x9f, 0xb6, 0x97, 0xed, 0x9b, - 0xe2, 0x4f, 0xda, 0xaf, 0xc7, 0x93, 0xb7, 0x9f, 0x36, 0x9b, - 0xe0, 0x8b, 0x9, 0x5e, 0x3d, 0x2b, 0x47, 0x8e, 0x42, 0x11, - 0x90, 0x37, 0x13, 0xcc, 0x3a, 0x34, 0x8c, 00, 0x3c, 0xfd, - 0xde, 0x83, 0xb9, 0x3a, 0x7f, 0x7, 0xbf, 0xe0, 0x9b, 0x1f, - 0x1c, 0x7e, 0x32, 0x68, 0x56, 0xfa, 0xdd, 0x9e, 0x81, 0x6b, - 0xe1, 0xdd, 0x1e, 0xe6, 0x31, 0x35, 0xbd, 0xd7, 0x88, 0x2e, - 0x7e, 0xcc, 0x66, 0x43, 0xc8, 0x65, 0x8c, 0x6, 0x7c, 0x63, - 0x9c, 0x95, 00, 0xd6, 0x6f, 0xfc, 0x13, 0xbb, 0xe1, 0xbe, - 0x87, 0xf1, 0x4b, 0xf6, 0xb4, 0xf0, 0x66, 0x93, 0xe2, 0x25, - 0x82, 0x7d, 0x32, 0xdc, 0xcd, 0xa8, 0x1b, 0x4b, 0x90, 0xa, - 0x5d, 0x3c, 0x31, 0x97, 0x48, 0xf0, 0x7a, 0xfc, 0xc0, 0x36, - 0x3b, 0x85, 0x35, 0xfb, 0x39, 0xfb, 0x62, 0x7c, 0x66, 0xb7, - 0xf8, 0x5, 0xfb, 0x39, 0x78, 0xc3, 0xc5, 0x2, 0x45, 0x86, - 0xf9, 0x2c, 0xcd, 0x96, 0x9a, 0x83, 0x8d, 0xd7, 0x52, 0x8d, - 0x91, 00, 0x3d, 0x89, 0xdd, 0xf4, 0x53, 0x4c, 0x84, 0xaf, - 0xab, 0x3f, 0x9e, 0x6f, 0x16, 0x78, 0x7d, 0xbc, 0x27, 0xe2, - 0x7d, 0x5b, 0x45, 0x7b, 0xcb, 0x6d, 0x41, 0xf4, 0xeb, 0xa9, - 0x2d, 0x5a, 0xea, 0xcd, 0x8b, 0x43, 0x29, 0x46, 0x2a, 0x59, - 0x9, 00, 0x95, 0x24, 0x70, 0x70, 0x2b, 0xf7, 0xe7, 0xf6, - 0x3, 0xf8, 0x22, 0x3e, 0x5, 0x7e, 0xcc, 0x3e, 0x14, 0xd2, - 0x67, 0x8b, 0xcb, 0xd6, 0x35, 0x38, 0xbf, 0xb6, 0x35, 0x1c, - 0x8f, 0x9b, 0xce, 0x9c, 0x6, 0xda, 0x7f, 0xdd, 0x4d, 0x89, - 0xff, 00, 0x1, 0xaf, 0xc5, 0x9f, 0xd8, 0xf3, 0xe0, 0xb4, - 0xbf, 0xb4, 0xf, 0xed, 0x17, 0xe1, 0xf, 0xa, 0x3a, 0x79, - 0xb6, 0x12, 0x5d, 0xb, 0xdd, 0x49, 0x98, 0x64, 0xb, 0x58, - 0xbf, 0x79, 0x2e, 0x7f, 0xde, 00, 0x27, 0xd5, 0xc5, 0x7e, - 0xd9, 0xfe, 0xd9, 0x7f, 0xb4, 0x8e, 0x8d, 0xfb, 0x30, 0x7c, - 0xf, 0xd5, 0xf5, 0x56, 0xbb, 0x82, 0x1f, 0x11, 0x5d, 0x5b, - 0x3d, 0x9e, 0x83, 0xa7, 0xe4, 0x6f, 0x9a, 0xe0, 0xae, 0xd5, - 0x60, 0xbd, 0x76, 0x26, 0x43, 0x31, 0xec, 0x6, 0x3a, 0x91, - 0x43, 0x5, 0xdc, 0xfc, 0x4a, 0xfd, 0xb3, 0x75, 0xfb, 0x5f, - 0x13, 0x7e, 0xd5, 0x7f, 0x14, 0xf5, 0x1b, 0x26, 0x57, 0xb5, - 0x93, 0x5e, 0xb9, 0x44, 0x74, 0xe8, 0xdb, 0x1b, 0x61, 0x3f, - 0x89, 0x52, 0x6b, 0xf5, 0x7f, 0xfe, 0x9, 0x19, 0xa1, 0x49, - 0xa4, 0xfe, 0xc8, 0x36, 0x77, 0x72, 0x2e, 0xdf, 0xed, 0x3d, - 0x66, 0xf6, 0xe5, 0x33, 0xdd, 0x43, 0x2c, 0x59, 0xfc, 0xe3, - 0x6a, 0xfc, 0x50, 0xd1, 0xf4, 0x9d, 0x57, 0xc7, 0x5e, 0x2a, - 0xb3, 0xd3, 0x6c, 0xd2, 0x4d, 0x43, 0x5a, 0xd5, 0xef, 0x12, - 0x8, 0x97, 0xab, 0xcd, 0x3c, 0xaf, 0x81, 0xf8, 0x96, 0x6a, - 0xfe, 0x91, 0x3e, 0x2, 0xfc, 0x2c, 0xb5, 0xf8, 0x27, 0xf0, - 0x73, 0xc2, 0x3e, 0x8, 0xb4, 0xda, 0x53, 0x46, 0xd3, 0xe3, - 0xb7, 0x92, 0x45, 0x1c, 0x49, 0x2e, 0x37, 0x4a, 0xff, 00, - 0xf0, 0x27, 0x2c, 0x7f, 0x1a, 0x18, 0x2d, 0xee, 0x77, 0x53, - 0xcc, 0x96, 0xd0, 0xc9, 0x34, 0x8c, 0x12, 0x38, 0xd4, 0xb3, - 0x31, 0xe8, 00, 0x19, 0x26, 0xbe, 0x2c, 0xf1, 0x46, 0xb5, - 0x27, 0x88, 0xfc, 0x45, 0xa8, 0xea, 0x52, 0x12, 0x4d, 0xcc, - 0xed, 0x20, 0xcf, 0x65, 0xcf, 0xca, 0x3f, 0x1, 0x81, 0x5f, - 0x4a, 0xfc, 0x73, 0xf1, 0x11, 0xd0, 0x7c, 0x3, 0x75, 0x1c, - 0x6f, 0xb2, 0xe2, 0xf9, 0x85, 0xaa, 0x63, 0xae, 0xf, 0x2f, - 0xff, 00, 0x8e, 0x82, 0x3f, 0x1a, 0xf9, 0x5a, 0xbf, 0x38, - 0xe2, 0x8c, 0x4f, 0x35, 0x48, 0x61, 0x97, 0x4d, 0x5f, 0xcf, - 0x6f, 0xeb, 0xcc, 0xf1, 0x33, 0x1a, 0x97, 0x92, 0xa6, 0xba, - 0x5, 0x14, 0x51, 0x5f, 0xa, 0x79, 0x1, 0x45, 0x14, 0x50, - 0x1, 0x46, 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa2, 0x80, 0xa, - 0x7c, 0x10, 0x49, 0x73, 0x32, 0xc5, 0xc, 0x6f, 0x2c, 0xae, - 0x70, 0xa8, 0x8a, 0x59, 0x89, 0xf6, 0x2, 0xb4, 0x3c, 0x3f, - 0xa9, 0xd9, 0xe9, 0x5a, 0x82, 0xcd, 0x7d, 0xa5, 0xc3, 0xab, - 0x5b, 0xff, 00, 0x14, 0x12, 0xc8, 0xc9, 0xf9, 0x15, 0x3d, - 0x7e, 0xb9, 0xaf, 0xa9, 0xbe, 0x1a, 0x5c, 0xf8, 0x5f, 0x58, - 0xd1, 0x56, 0xff, 00, 0xc3, 0xda, 0x7d, 0xbd, 0x90, 0xce, - 0xc9, 0x63, 0x58, 0x82, 0xc9, 0x1b, 0xe3, 0xee, 0xb1, 0xea, - 0x7e, 0xb9, 0xe6, 0xbd, 0xdc, 0xb3, 0x2c, 0x8e, 0x63, 0x2e, - 0x5f, 0x6a, 0xa2, 0xfb, 0x6b, 0x7f, 0xf2, 0xfc, 0x4e, 0xbc, - 0x3e, 0x1d, 0x57, 0x76, 0xe6, 0xb1, 0xe2, 0xbe, 0x9, 0xf8, - 0xd, 0xad, 0x78, 0x86, 0x54, 0x9b, 0x55, 0x56, 0xd1, 0xec, - 0x3a, 0x9f, 0x30, 0x7e, 0xf9, 0xc7, 0xa0, 0x5e, 0xdf, 0x53, - 0xf9, 0x1a, 0xfa, 0x1f, 0xc3, 0x5e, 0x18, 0xd3, 0xbc, 0x25, - 0xa5, 0xc7, 0x61, 0xa6, 0xc0, 0x20, 0x81, 0x79, 0x27, 0xab, - 0x39, 0xee, 0xcc, 0x7b, 0x9a, 0xd5, 0xa2, 0xbf, 0x4b, 0xc0, - 0x65, 0x58, 0x6c, 0xbd, 0x5e, 0x92, 0xbc, 0xbb, 0xbd, 0xff, - 00, 0xe0, 0x1f, 0x41, 0x47, 0xd, 0x4e, 0x87, 0xc3, 0xbf, - 0x70, 0xa2, 0x8a, 0x2b, 0xd8, 0x3a, 0x82, 0x8a, 0x28, 0xa0, - 0x2, 0xb1, 0x3c, 0x69, 0xac, 0xaf, 0x87, 0xbc, 0x27, 0xaa, - 0xea, 0x5, 0xb6, 0x98, 0x2d, 0xdc, 0xa7, 0xfb, 0xe4, 0x61, - 0x47, 0xe6, 0x45, 0x6d, 0xd7, 0x91, 0xfe, 0xd1, 0xfa, 0xd9, - 0xb2, 0xf0, 0xa5, 0x9e, 0x9c, 0x8d, 0x87, 0xbd, 0xb8, 0xcb, - 0xf, 0x54, 0x41, 0x93, 0xff, 00, 0x8f, 0x15, 0xaf, 0x3f, - 0x30, 0xaf, 0xf5, 0x5c, 0x2d, 0x4a, 0xdd, 0x97, 0xe3, 0xd3, - 0xf1, 0x30, 0xaf, 0x3f, 0x67, 0x4e, 0x52, 0x3e, 0x70, 0x24, - 0x93, 0x93, 0xc9, 0xa2, 0x8a, 0x2b, 0xf0, 0xf3, 0xe4, 0x42, - 0x8a, 0x29, 0x42, 0x96, 0x20, 0x1, 0x92, 0x78, 0x2, 0x80, - 0x3e, 0x93, 0xfd, 0x9c, 0xf4, 0x71, 0x65, 0xe0, 0xcb, 0x8b, - 0xe6, 0x5c, 0x49, 0x7b, 0x72, 0xc4, 0x1f, 0xf6, 0x13, 0xe5, - 0x1f, 0xae, 0xea, 0xf5, 0x7a, 0xc4, 0xf0, 0x5e, 0x88, 0x3c, - 0x39, 0xe1, 0x4d, 0x2f, 0x4e, 00, 0x6, 0x82, 0x5, 0xf, - 0x8e, 0xec, 0x79, 0x63, 0xf9, 0x93, 0x5b, 0x75, 0xfb, 0x8e, - 0x2, 0x87, 0xd5, 0xb0, 0xb4, 0xe9, 0x76, 0x4b, 0xef, 0xeb, - 0xf8, 0x9f, 0x5d, 0x42, 0x1e, 0xce, 0x9c, 0x62, 0x14, 0x51, - 0x45, 0x77, 0x9b, 0x85, 0x79, 0x1f, 0xed, 0x15, 0xe2, 0x86, - 0xd3, 0x3c, 0x35, 0x6d, 0xa4, 0x42, 0xfb, 0x65, 0xd4, 0x1f, - 0x32, 0x1, 0xd7, 0xca, 0x5c, 0x13, 0xf9, 0x9c, 0x7e, 0x46, - 0xbd, 0x72, 0xbe, 0x51, 0xf8, 0xdd, 0xae, 0xb6, 0xb7, 0xf1, - 0xb, 0x50, 0x4d, 0xdb, 0xa1, 0xb3, 0xc5, 0xac, 0x63, 0x3d, - 0x36, 0x8f, 0x9b, 0xff, 00, 0x1e, 0x2d, 0x5f, 0x37, 0x9f, - 0xe2, 0x9e, 0x1b, 0x5, 0x25, 0x1d, 0xe5, 0xa7, 0xf9, 0xfe, - 0x7, 0x6, 0x36, 0xa7, 0x25, 0x16, 0x97, 0x5d, 0xe, 0xa, - 0x8a, 0x28, 0xaf, 0xc8, 0xcf, 0x99, 0xa, 0x28, 0xa9, 0x2d, - 0xe0, 0x7b, 0xab, 0x88, 0xa1, 0x88, 0x6e, 0x92, 0x46, 0x8, - 0xab, 0xea, 0x49, 0xc0, 0x14, 0xd2, 0xbe, 0x88, 0xf, 0x79, - 0xfd, 0x9c, 0xfc, 0x18, 0xb1, 0x5a, 0x5c, 0x78, 0x92, 0xe1, - 0x33, 0x24, 0xa5, 0xa0, 0xb6, 0xc8, 0xe8, 0xa3, 0xef, 0x30, - 0xfa, 0x9e, 0x3f, 0x3, 0xeb, 0x5e, 0xdd, 0x59, 0xbe, 0x1b, - 0xd1, 0x62, 0xf0, 0xee, 0x83, 0x61, 0xa6, 0xc2, 00, 0x4b, - 0x68, 0x56, 0x3c, 0x8e, 0xe4, 0xe, 0x4f, 0xe2, 0x72, 0x7f, - 0x1a, 0xd2, 0xaf, 0xdb, 0xb2, 0xfc, 0x2a, 0xc1, 0x61, 0xa1, - 0x45, 0x6e, 0x96, 0xbe, 0xbd, 0x4f, 0xae, 0xa1, 0x4d, 0x52, - 0xa6, 0xa2, 0x14, 0x51, 0x45, 0x7a, 0x26, 0xe1, 0x45, 0x14, - 0x50, 0x1, 0x59, 0x1e, 0x2e, 0xd3, 0xd7, 0x56, 0xf0, 0xb6, - 0xad, 0x66, 0xe3, 0x2b, 0x35, 0xac, 0x8b, 0xf8, 0xed, 0x38, - 0xfd, 0x6b, 0x5e, 0xaa, 0x6a, 0xf2, 0x88, 0x34, 0x9b, 0xd9, - 0x1b, 0xee, 0xa4, 0xe, 0xc7, 0xf0, 0x53, 0x59, 0xd5, 0x4a, - 0x50, 0x92, 0x7b, 0x59, 0x93, 0x25, 0x78, 0xb4, 0xcf, 0x87, - 0xe8, 0xa2, 0x8a, 0xfc, 0xc, 0xf8, 0xc0, 0xa2, 0x8a, 0x28, - 0x3, 0x7b, 0xc0, 0x57, 0x26, 0xd3, 0xc6, 0xda, 0x14, 0xa0, - 0xe3, 0x17, 0xb0, 0x8f, 0xc0, 0xb8, 0x7, 0xf9, 0xd7, 0xd9, - 0xb5, 0xf1, 0x67, 0x83, 0x62, 0x33, 0x78, 0xbb, 0x44, 0x45, - 0xea, 0xd7, 0xb0, 0x8f, 0xfc, 0x7c, 0x57, 0xda, 0x75, 0xfa, - 0x47, 0xa, 0xb7, 0xec, 0x6a, 0xae, 0x97, 0x5f, 0x91, 0xee, - 0xe5, 0xbf, 0xc, 0x8c, 0x3f, 0x1c, 0x86, 0x6f, 0x5, 0xeb, - 0xa1, 0x33, 0xbb, 0xec, 0x33, 0x63, 0x1f, 0xee, 0x1a, 0xf8, - 0xc2, 0xbe, 0xe6, 0xb9, 0xb7, 0x4b, 0xbb, 0x69, 0x60, 0x90, - 0x6e, 0x8e, 0x54, 0x28, 0xc0, 0xf7, 0x4, 0x60, 0xd7, 0xc5, - 0x9e, 0x25, 0xd0, 0xa7, 0xf0, 0xd6, 0xbd, 0x7d, 0xa6, 0x5c, - 0x29, 0x59, 0x2d, 0xe5, 0x28, 0x9, 0x1f, 0x79, 0x7f, 0x85, - 0xbf, 0x11, 0x83, 0xf8, 0xd7, 0x37, 0x15, 0x52, 0x95, 0xe9, - 0x55, 0xe9, 0xaa, 0x23, 0x32, 0x8b, 0xbc, 0x64, 0x66, 0x51, - 0x45, 0x15, 0xf0, 0x7, 0x8a, 0x14, 0xaa, 0xc5, 0x18, 0x32, - 0x92, 0x18, 0x1c, 0x82, 0x3b, 0x52, 0x51, 0x40, 0x1f, 0x49, - 0xfc, 0x39, 0xf8, 0xe5, 0xa6, 0x6b, 0x16, 0x30, 0x59, 0x6b, - 0x93, 0xae, 0x9f, 0xa9, 0x46, 0xa1, 0xc, 0xf2, 0x9c, 0x45, - 0x37, 0x6c, 0xe7, 0xf8, 0x4f, 0xa8, 0x3f, 0x85, 0x7a, 0xac, - 0x53, 0x47, 0x3c, 0x6b, 0x24, 0x4e, 0xb2, 0x46, 0xc3, 0x21, - 0x90, 0xe4, 0x11, 0xf5, 0xaf, 0x85, 0xeb, 0x63, 0x43, 0xf1, - 0x86, 0xb7, 0xe1, 0xa3, 0xff, 00, 0x12, 0xcd, 0x4e, 0xe6, - 0xd1, 0x7f, 0xe7, 0x9a, 0x3e, 0x50, 0xff, 00, 0xc0, 0x4f, - 0x1f, 0xa5, 0x7d, 0xbe, 0xb, 0x89, 0xaa, 0x52, 0x8a, 0x86, - 0x26, 0x3c, 0xd6, 0xea, 0xb7, 0xff, 00, 0x83, 0xf8, 0x1e, - 0xbd, 0x2c, 0xc2, 0x51, 0x56, 0xa8, 0xae, 0x7d, 0xa7, 0x45, - 0x7c, 0xdf, 0xa0, 0xfe, 0xd1, 0xda, 0xed, 0x8e, 0xd4, 0xd4, - 0xed, 0x2d, 0xf5, 0x38, 0xc7, 0x56, 0x5f, 0xdd, 0x49, 0xf9, - 0x8c, 0x8f, 0xd2, 0xbb, 0xed, 0x13, 0xf6, 0x87, 0xf0, 0xd6, - 0xa4, 0xc1, 0x2f, 0x52, 0xe7, 0x4b, 0x73, 0xfc, 0x52, 0xa6, - 0xf4, 0xfc, 0xd7, 0x27, 0xf3, 0x15, 0xf5, 0x74, 0x33, 0xcc, - 0x5, 0x7f, 0xf9, 0x79, 0xca, 0xfc, 0xf4, 0xff, 00, 0x81, - 0xf8, 0x9e, 0x8c, 0x31, 0x94, 0x67, 0xd6, 0xde, 0xa7, 0xa9, - 0x51, 0x59, 0xba, 0x3f, 0x89, 0x34, 0xaf, 0x10, 0x45, 0xe6, - 0x69, 0xba, 0x85, 0xbd, 0xea, 0xf7, 0xf2, 0x64, 0xc, 0x47, - 0xd4, 0x75, 0x15, 0xa5, 0x5e, 0xe4, 0x65, 0x19, 0xae, 0x68, - 0xbb, 0xa3, 0xb1, 0x34, 0xd5, 0xd0, 0x51, 0x45, 0x15, 0x43, - 0xa, 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa2, 0x80, 0xa, 0xf2, - 0xf, 0xda, 0x1e, 0xeb, 0xca, 0xd0, 0x36, 0xe7, 0xfe, 0x59, - 0x9a, 0xf5, 0xfa, 0xf0, 0x6f, 0xda, 0x5e, 0xf8, 0x47, 0x61, - 0xe5, 0x67, 0x91, 0x1d, 0x79, 0x19, 0xb4, 0xb9, 0x30, 0x75, - 0x1f, 0x91, 0xc1, 0x8e, 0x97, 0x2e, 0x1e, 0x4c, 0xf9, 0x7, - 0x53, 0x6f, 0x95, 0xcf, 0xb9, 0xaf, 0x34, 0xf0, 0x2d, 0x92, - 0xeb, 0x9f, 0xb5, 0x7, 0xc3, 0x3b, 0x26, 0x1b, 0x81, 0xd7, - 0xad, 0xe4, 0xc7, 0xfb, 0x84, 0xbf, 0xfe, 0xcb, 0x5e, 0x8d, - 0xaa, 0x36, 0x22, 0x63, 0xec, 0x6b, 0x94, 0xfd, 0x9b, 0xec, - 0xff, 00, 0xb6, 0x3f, 0x6c, 0xbf, 0x87, 0xf1, 0xe3, 0x70, - 0x86, 0x7b, 0x9b, 0x93, 0xed, 0xb2, 0xda, 0x53, 0x9f, 0xcf, - 0x15, 0xf2, 0xd9, 0x24, 0x7d, 0xf3, 0xf2, 0x3c, 0xb1, 0x7b, - 0x4c, 0xe2, 0x97, 0x95, 0xd9, 0xfa, 0xcf, 0x45, 0x14, 0x57, - 0xe8, 0x7, 0xed, 0x61, 0x45, 0x14, 0x50, 0x1, 0x5c, 0x3f, - 0xc6, 0x8f, 0x18, 0xf, 0x4, 0x7c, 0x37, 0xd6, 0x35, 0x5, - 0x62, 0xb7, 0xf, 0x17, 0xd9, 0xad, 0xf6, 0xf5, 0xf3, 0x1f, - 0xe5, 0x53, 0xf8, 0x64, 0x9f, 0xc2, 0xbb, 0x8a, 0xf9, 0x5f, - 0xf6, 0xbf, 0xf1, 0x87, 0xda, 0xb5, 0x6d, 0x2b, 0xc3, 0x31, - 0x1f, 0x92, 0xd9, 0x3e, 0xd9, 0x39, 0xe7, 0xef, 0x36, 0x42, - 0x8f, 0xcb, 0x27, 0xf1, 0xaf, 0x37, 0x31, 0xc4, 0x7d, 0x5b, - 0xd, 0x39, 0xf5, 0xd9, 0x7a, 0xb3, 0xca, 0xcd, 0x31, 0x3f, - 0x54, 0xc2, 0x4e, 0xa2, 0xdf, 0x65, 0xea, 0xff, 00, 0xab, - 0x9f, 0x3e, 0x58, 0x5a, 0xbd, 0xe5, 0xd4, 0x30, 0x46, 0x37, - 0x3b, 0xb0, 0x50, 0x7, 0xa9, 0xaf, 0xd0, 0x3f, 0x86, 0x9e, - 0x19, 0x8f, 0xc2, 0x7e, 0xc, 0xd3, 0x6c, 0x11, 0x2, 0xb8, - 0x88, 0x34, 0x9e, 0xec, 0x47, 0x35, 0xf2, 0x27, 0xec, 0xf7, - 0xe1, 0x13, 0xe2, 0x9f, 0x1f, 0x5a, 0x97, 0x5c, 0xdb, 0xdb, - 0x7e, 0xf5, 0xcf, 0xd3, 0xa5, 0x7d, 0xc4, 0xa0, 0x28, 00, - 0x70, 0x7, 0x15, 0xf3, 0xdc, 0x3d, 0x87, 0xd2, 0x78, 0x87, - 0xe8, 0xbf, 0x53, 0xc2, 0xe1, 0xcc, 0x37, 0x25, 0x39, 0x57, - 0x7d, 0x74, 0x42, 0xd1, 0x45, 0x15, 0xf6, 0x67, 0xd9, 0x5, - 0x14, 0x51, 0x40, 0x5, 0x7e, 0x55, 0x7f, 0xc1, 0x6d, 0x3c, - 0x2b, 0xa8, 0x36, 0xa3, 0xf0, 0xc7, 0xc4, 0x81, 0x19, 0xb4, - 0xa5, 0x8a, 0xef, 0x4f, 0x67, 0x1d, 0x12, 0x62, 0x52, 0x40, - 0xf, 0xd5, 0x43, 0x7f, 0xdf, 0x26, 0xbf, 0x52, 0xb5, 0x4d, - 0x5e, 0xc7, 0x43, 0xb3, 0x6b, 0xbd, 0x46, 0xf6, 0xde, 0xc2, - 0xd5, 0x48, 0x56, 0x9e, 0xea, 0x55, 0x8d, 0x1, 0x27, 00, - 0x16, 0x62, 0x7, 0x24, 0x81, 0x5e, 0x73, 0xf1, 0xc7, 0xe1, - 0xf, 0x82, 0xff, 00, 0x69, 0xef, 0x86, 0x1a, 0x8f, 0x83, - 0x35, 0xeb, 0x98, 0xee, 0xf4, 0xeb, 0xbd, 0xb2, 0xc5, 0x73, - 0x63, 0x3a, 0x99, 0x6d, 0xa6, 0x5e, 0x52, 0x54, 0x23, 0x3c, - 0x83, 0xdb, 0xa1, 0x4, 0x83, 0xc1, 0xa0, 0x4f, 0x53, 0xf9, - 0xcd, 0xf0, 0xaf, 0x8a, 0xb5, 0x8f, 0x3, 0xf8, 0x8b, 0x4f, - 0xd7, 0xb4, 0xd, 0x46, 0xe3, 0x49, 0xd6, 0x74, 0xf9, 0x44, - 0xf6, 0xb7, 0xb6, 0xaf, 0xb6, 0x48, 0x9c, 0x74, 0x20, 0xfe, - 0x9e, 0xe0, 0x90, 0x6b, 0xd8, 0x7e, 0x39, 0x7e, 0xda, 0xdf, - 0x14, 0xbf, 0x68, 0xbf, 0x1, 0x68, 0xfe, 0x13, 0xf1, 0xce, - 0xa9, 0x69, 0xa9, 0x58, 0x69, 0x97, 0x42, 0xf1, 0x27, 0x86, - 0xd1, 0x60, 0x9a, 0x69, 0x2, 0x32, 0x3, 0x29, 0x5c, 0x2b, - 0x60, 0x33, 0x74, 0x51, 0xc9, 0xaf, 0x44, 0xf8, 0xd9, 0xff, - 00, 0x4, 0xbf, 0xf8, 0xd9, 0xf0, 0xa2, 0xfa, 0xea, 0x5d, - 0x27, 0x44, 0x1e, 0x39, 0xd0, 0x91, 0xd8, 0xc5, 0x7d, 0xa1, - 0xb6, 0xf9, 0x76, 0x67, 0x82, 0xf0, 0x1c, 0x38, 0x6c, 0x76, - 0x50, 0xc3, 0xde, 0xbe, 0x79, 0xb8, 0xf8, 0x25, 0xf1, 0x12, - 0xd2, 0xe4, 0xdb, 0xcd, 0xe0, 0x3f, 0x12, 0xc5, 0x38, 0x38, - 0xf2, 0xdb, 0x48, 0xb8, 0xd, 0x9f, 0xa6, 0xca, 0xa2, 0x35, - 0x3a, 0x5f, 0xd9, 0xdb, 0xf6, 0x95, 0xf1, 0x47, 0xec, 0xc5, - 0xe2, 0xd, 0x5f, 0x5f, 0xf0, 0x7d, 0xa6, 0x96, 0xfa, 0xe5, - 0xfd, 0x9f, 0xd8, 0x56, 0xf7, 0x51, 0xb7, 0x33, 0x1b, 0x68, - 0xcb, 0x6, 0x6f, 0x2c, 0x6e, 0x3, 0x2c, 0x55, 0x73, 0x9c, - 0xfd, 0xd1, 0x5c, 0xdf, 0xc5, 0x9f, 0x8d, 0x1e, 0x35, 0xf8, - 0xe5, 0xe2, 0x63, 0xaf, 0xf8, 0xe3, 0xc4, 0x37, 0x7e, 0x20, - 0xd4, 0x82, 0x94, 0x8d, 0xee, 0x8, 0x9, 0xa, 0x67, 0x3b, - 0x23, 0x45, 0x1, 0x51, 0x7d, 0x94, 0xa, 0xf4, 0xdf, 0x86, - 0x7f, 0xb0, 0x3f, 0xc7, 0x6f, 0x8a, 0x97, 0x31, 0x2e, 0x99, - 0xe0, 0xd, 0x47, 0x4c, 0xb5, 0x7e, 0xb7, 0xba, 0xda, 0xfd, - 0x86, 0x15, 0x1e, 0xa7, 0xcc, 0xc3, 0x1f, 0xc1, 0x4d, 0x7e, - 0x8b, 0xfe, 0xc9, 0xff, 00, 0xf0, 0x4a, 0xf, 0xb, 0xfc, - 0x27, 0xbd, 0xb2, 0xf1, 0x37, 0xc4, 0xbb, 0xb8, 0x3c, 0x65, - 0xe2, 0x6b, 0x79, 0x16, 0x6b, 0x7d, 0x3e, 0x10, 0x46, 0x9d, - 0x6a, 0xe3, 0x90, 0x48, 0x60, 0xc, 0xcc, 0xf, 0x76, 0x1, - 0x78, 0x1f, 0x2f, 0x7a, 0x2, 0xcc, 0xf3, 0xaf, 0xf8, 0x25, - 0x8f, 0xec, 0x3b, 0x79, 0xa4, 0xdd, 0xda, 0xfc, 0x65, 0xf1, - 0xde, 0x9b, 0xf6, 0x79, 0xc, 0x64, 0xf8, 0x73, 0x4d, 0xba, - 0x8c, 0x89, 0x13, 0x3c, 0x1b, 0xb7, 0x53, 0xd3, 0x23, 0x21, - 0x7, 0x5e, 0x4b, 0x7a, 0x57, 0xea, 0x25, 0x22, 0xa8, 0x45, - 0xa, 0xa0, 0x2a, 0x81, 0x80, 00, 0xc0, 0x2, 0xa2, 0xbc, - 0xbb, 0x8e, 0xc6, 0xd2, 0x6b, 0x99, 0x9b, 0x64, 0x30, 0xa1, - 0x91, 0xd8, 0xf6, 00, 0x64, 0xd4, 0xb7, 0x6d, 0x59, 0x7b, - 0x23, 0xe7, 0x5f, 0xda, 0x33, 0xc4, 0x23, 0x50, 0xf1, 0x4d, - 0xae, 0x97, 0x1b, 0xe6, 0x3b, 0x8, 0xb2, 0xe0, 0x1e, 0x3c, - 0xc7, 0xe4, 0xff, 00, 0xe3, 0xa1, 0x7f, 0x3a, 0xf2, 0x4a, - 0xbf, 0xaf, 0x6a, 0xb2, 0x6b, 0xba, 0xd5, 0xf6, 0xa1, 0x29, - 0x26, 0x4b, 0x99, 0x9e, 0x53, 0x9e, 0xd9, 0x39, 0x3, 0xf0, - 0x1c, 0x55, 0xa, 0xfc, 0x3b, 0x1f, 0x89, 0x78, 0xbc, 0x4c, - 0xeb, 0x77, 0x7f, 0x87, 0x4f, 0xc0, 0xf9, 0x1a, 0xd5, 0x3d, - 0xad, 0x47, 0x3e, 0xe1, 0x45, 0x14, 0x57, 0x1, 0x89, 0xdd, - 0x7c, 0x28, 0xf8, 0x72, 0x9f, 0x10, 0xf5, 0x4b, 0xc8, 0xae, - 0x66, 0x96, 0xda, 0xce, 0xda, 0x20, 0xcd, 0x24, 0x20, 0x67, - 0x79, 0x3f, 0x28, 0xe4, 0x63, 0xb3, 0x7e, 0x55, 0xe8, 0xf3, - 0x7e, 0xcc, 0x96, 0x4, 0x1f, 0x27, 0x5c, 0xb9, 0x43, 0xdb, - 0x7c, 0x2a, 0xdf, 0xc8, 0x8a, 0xde, 0xf8, 0x1, 0xe1, 0xd6, - 0xd1, 0xbc, 0xe, 0x2e, 0xe5, 0x5d, 0xb3, 0x6a, 0x32, 0x99, - 0xf9, 0xeb, 0xb0, 0x70, 0xbf, 0xc8, 0x9f, 0xc6, 0xbd, 0x32, - 0xbf, 0x50, 0xcb, 0x32, 0x5c, 0x2c, 0xf0, 0x70, 0x96, 0x22, - 0x9d, 0xe4, 0xf5, 0xeb, 0xd7, 0x6f, 0xc0, 0xfa, 0x1c, 0x3e, - 0x12, 0x9b, 0xa4, 0x9c, 0xd6, 0xac, 0xf9, 0xa7, 0xc5, 0x1f, - 0xb3, 0xd6, 0xb7, 0xa2, 0x59, 0xc9, 0x75, 0xa7, 0xdc, 0xc7, - 0xab, 0xa4, 0x63, 0x2d, 0x14, 0x68, 0x52, 0x5c, 0x7b, 0x2e, - 0x48, 0x3f, 0x9e, 0x6b, 0xca, 0xd9, 0x4a, 0xb1, 0x56, 0x4, - 0x10, 0x70, 0x41, 0xea, 0x2b, 0xee, 0xaa, 0xf9, 0x77, 0xe3, - 0xd7, 0x85, 0xe2, 0xf0, 0xff, 00, 0x8d, 0x3e, 0xd3, 0x6c, - 0x81, 0x20, 0xd4, 0x63, 0xfb, 0x41, 0x51, 0xd0, 0x49, 0x92, - 0x1f, 0x1f, 0xa1, 0xfc, 0x6b, 0xc5, 0xcf, 0x32, 0x5a, 0x58, - 0x3a, 0x4b, 0x11, 0x87, 0xd1, 0x6c, 0xd6, 0xff, 00, 0x33, - 0x93, 0x17, 0x84, 0x8d, 0x28, 0xf3, 0xc3, 0x63, 0xcd, 0xa8, - 0xa2, 0x8a, 0xf8, 0x93, 0xc9, 0xa, 0xf5, 0xdf, 0xd9, 0xbf, - 0x5b, 0x7b, 0x5f, 0x14, 0xde, 0xe9, 0x85, 0xbf, 0x73, 0x77, - 0x6f, 0xe6, 0x5, 0xff, 00, 0x6d, 0xf, 0x1f, 0xa1, 0x6a, - 0xf2, 0x2a, 0xed, 0xbe, 0xc, 0x5d, 0x7d, 0x93, 0xe2, 0x5e, - 0x8a, 0x73, 0x80, 0xee, 0xf1, 0x9f, 0xc5, 0x18, 0xf, 0xd7, - 0x15, 0xea, 0x65, 0x75, 0x5d, 0x1c, 0x6d, 0x29, 0x2e, 0xe9, - 0x7d, 0xfa, 0x1d, 0x18, 0x79, 0x72, 0xd6, 0x8b, 0xf3, 0x3e, - 0xb5, 0xa2, 0x8a, 0x2b, 0xf6, 0xc3, 0xeb, 0x42, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0xbe, 0x61, 0xfd, 0xa0, - 0xb5, 0xef, 0xed, 0x5f, 0x1d, 0x1b, 0x35, 0x6c, 0xc5, 0xa7, - 0xc2, 0xb1, 0x63, 0xfd, 0xb6, 0xf9, 0x9b, 0xf9, 0xa8, 0xfc, - 0x2b, 0xe9, 0xa9, 0xe7, 0x4b, 0x68, 0x24, 0x9a, 0x43, 0xb6, - 0x38, 0xd4, 0xbb, 0x13, 0xd8, 0x1, 0x93, 0x5f, 0x14, 0xf8, - 0x8f, 0x57, 0x6d, 0x7b, 0x5e, 0xd4, 0x35, 0x17, 0xce, 0x6e, - 0xa7, 0x79, 0x70, 0x7b, 0x2, 0x78, 0x1f, 0x96, 0x2b, 0xe3, - 0x38, 0x9f, 0x11, 0xc9, 0x86, 0x85, 0x15, 0xf6, 0x9f, 0xe0, - 0xbf, 0xe0, 0xd8, 0xf2, 0x73, 0x19, 0xda, 0xa, 0x1d, 0xcc, - 0xea, 0x28, 0xa2, 0xbf, 0x32, 0x3c, 00, 0xae, 0x8f, 0xe1, - 0xd6, 0x8c, 0x75, 0xff, 00, 0x1b, 0xe8, 0xd6, 0x7b, 0x77, - 0x23, 0x5c, 0x2b, 0xb8, 0xc7, 0xf0, 0x2f, 0xcc, 0xdf, 0xa0, - 0x35, 0xce, 0x57, 0xb0, 0x7e, 0xcd, 0x9a, 0x3f, 0xda, 0x7c, - 0x49, 0xa9, 0x6a, 0x2c, 0x32, 0xb6, 0xb6, 0xe2, 0x35, 0x3f, - 0xed, 0x39, 0xff, 00, 0x5, 0x3f, 0x9d, 0x7a, 0x59, 0x6d, - 0xf, 0xac, 0xe3, 0x29, 0xd2, 0xee, 0xff, 00, 0x5, 0xab, - 0x37, 0xa1, 0xf, 0x69, 0x56, 0x31, 0x3e, 0x8b, 0xa2, 0x8a, - 0x2b, 0xf6, 0xe3, 0xeb, 0x82, 0x8a, 0x28, 0xa0, 0x8, 0xee, - 0x26, 0x5b, 0x6b, 0x79, 0x65, 0x73, 0x84, 0x8d, 0x4b, 0x13, - 0xec, 0x6, 0x6b, 0xe2, 0x2d, 0x52, 0xf9, 0xf5, 0x3d, 0x4e, - 0xee, 0xf2, 0x43, 0x97, 0xb8, 0x95, 0xe5, 0x6f, 0xab, 0x12, - 0x7f, 0xad, 0x7d, 0x89, 0xe3, 0xa9, 0xda, 0xd7, 0xc1, 0x5a, - 0xf4, 0xa8, 0x70, 0xc9, 0x63, 0x31, 0x7, 0xdf, 0x61, 0xaf, - 0x8c, 0x6b, 0xf3, 0xce, 0x2a, 0xa8, 0xf9, 0xa9, 0x53, 0xf5, - 0x7f, 0x91, 0xe1, 0xe6, 0x52, 0xd6, 0x31, 0xa, 0x28, 0xa2, - 0xbe, 0x8, 0xf1, 0x82, 0xba, 0xbf, 0x85, 0x9a, 0x60, 0xd5, - 0xbe, 0x20, 0xe8, 0x70, 0x30, 0xca, 0x2d, 0xc0, 0x95, 0xbe, - 0x88, 0xb, 0x7f, 0xec, 0xb5, 0xca, 0x57, 0xa2, 0x7c, 0x4, - 0x50, 0x7e, 0x24, 0xd9, 0x13, 0xd4, 0x45, 0x29, 0x1f, 0xf7, - 0xc1, 0xaf, 0x43, 0x2f, 0x82, 0xa9, 0x8b, 0xa5, 0x17, 0xd6, - 0x4b, 0xf3, 0x36, 0xa2, 0xb9, 0xaa, 0xc5, 0x79, 0xa3, 0xea, - 0x7a, 0x28, 0xa2, 0xbf, 0x70, 0x3e, 0xbc, 0x28, 0xa2, 0x8a, - 00, 0x28, 0xa2, 0x8a, 00, 0x2b, 0x95, 0xf8, 0xa3, 0xaa, - 0xd, 0x1f, 0xe1, 0xfe, 0xb9, 0x71, 0x9c, 0x31, 0xb7, 0x68, - 0x97, 0xfd, 0xe7, 0xf9, 0x47, 0xf3, 0xae, 0xaa, 0xbc, 0x67, - 0xf6, 0x92, 0xf1, 0x1a, 0xdb, 0x68, 0xb6, 0x1a, 0x2a, 0x37, - 0xef, 0x6e, 0xa4, 0xf3, 0xe4, 0x1e, 0x88, 0xbd, 0x3f, 0x36, - 0x3f, 0xf8, 0xed, 0x79, 0x99, 0x9d, 0x75, 0x86, 0xc1, 0xd4, - 0xa8, 0xfb, 0x69, 0xea, 0xf4, 0x47, 0x3e, 0x22, 0x7e, 0xce, - 0x94, 0xa4, 0x7c, 0xf5, 0x45, 0x14, 0x57, 0xe2, 0x47, 0xc9, - 0x5, 0x14, 0x51, 0x40, 0x1d, 0x6f, 0xc2, 0x7b, 0x3f, 0xb7, - 0x7c, 0x45, 0xd0, 0xa3, 0xc6, 0x42, 0xdc, 0x9, 0xf, 0xfc, - 0x4, 0x16, 0xfe, 0x95, 0xf5, 0xf5, 0x7c, 0xe3, 0xfb, 0x37, - 0xe8, 0x7f, 0x6c, 0xf1, 0x45, 0xee, 0xa6, 0xcb, 0x94, 0xb2, - 0x83, 0x62, 0x9f, 0xf6, 0xdc, 0xe3, 0xf9, 0x6, 0xfc, 0xeb, - 0xe8, 0xea, 0xfd, 0x4f, 0x86, 0x68, 0xba, 0x78, 0x27, 0x37, - 0xf6, 0x9b, 0x7f, 0x76, 0x87, 0xd1, 0x65, 0xf1, 0xb5, 0x2b, - 0xf7, 0x61, 0x5e, 0x6b, 0xf1, 0x7f, 0xe1, 0x58, 0xf1, 0xbd, - 0xa2, 0xdf, 0xd8, 0x5, 0x8f, 0x58, 0xb7, 0x42, 00, 0x3c, - 0x9, 0xd7, 0xfb, 0xa4, 0xfa, 0xfa, 0x1f, 0xc3, 0xe9, 0xe9, - 0x54, 0x57, 0xd1, 0xe2, 0x70, 0xd4, 0xf1, 0x74, 0x9d, 0x1a, - 0xaa, 0xe9, 0x9d, 0xf5, 0x29, 0xc6, 0xac, 0x5c, 0x65, 0xb1, - 0xf0, 0xdd, 0xed, 0x8d, 0xc6, 0x9b, 0x75, 0x25, 0xb5, 0xd4, - 0x32, 0x5b, 0xdc, 0x46, 0x76, 0xbc, 0x52, 0x2e, 0xd6, 0x53, - 0xee, 0x2a, 0xa, 0xfb, 0x17, 0xc6, 0x3f, 0xf, 0x34, 0x4f, - 0x1c, 0x42, 0xa3, 0x52, 0xb6, 0xfd, 0xfa, 0xc, 0x25, 0xcc, - 0x47, 0x6c, 0x8b, 0xf8, 0xf7, 0x1e, 0xc7, 0x22, 0xbc, 0x3f, - 0xc5, 0x3f, 0xb3, 0xde, 0xbb, 0xa4, 0x34, 0x92, 0xe9, 0x4f, - 0x1e, 0xaf, 0x6a, 0x39, 0xa, 0xe, 0xc9, 0x80, 0xff, 00, - 0x74, 0xf0, 0x7f, 0x3, 0xf8, 0x57, 0xe6, 0x38, 0xee, 0x1f, - 0xc5, 0x61, 0x5b, 0x95, 0x25, 0xcf, 0x1f, 0x2d, 0xfe, 0x6b, - 0xfc, 0x8f, 0x9e, 0xad, 0x82, 0xa9, 0x4f, 0x58, 0xea, 0x8f, - 0x2a, 0xa2, 0xac, 0x5f, 0x69, 0xf7, 0x5a, 0x65, 0xc3, 0x41, - 0x79, 0x6f, 0x2d, 0xac, 0xcb, 0xd6, 0x39, 0x90, 0xab, 0xf, - 0xc0, 0xd5, 0x7a, 0xf9, 0x86, 0x9c, 0x5d, 0x99, 0xe7, 0xec, - 0x14, 0x51, 0x45, 0x20, 0xa, 0x28, 0xa2, 0x80, 0x25, 0xb5, - 0xbb, 0x9e, 0xc6, 0x75, 0x9a, 0xda, 0x69, 0x2d, 0xe6, 0x5e, - 0x56, 0x48, 0x9c, 0xab, 0xf, 0xa1, 0x15, 0xe9, 0x5e, 0x11, - 0xf8, 0xfb, 0xaf, 0x68, 0x6e, 0x91, 0x6a, 0x64, 0x6b, 0x36, - 0x9d, 0xf, 0x98, 0x42, 0xca, 0xbf, 0x46, 0xc7, 0x3f, 0x8e, - 0x7e, 0xb5, 0xe6, 0x14, 0x57, 0x66, 0x1b, 0x19, 0x5f, 0x9, - 0x2e, 0x6a, 0x13, 0x6b, 0xf2, 0xfb, 0xb6, 0x35, 0xa7, 0x56, - 0x74, 0x9d, 0xe0, 0xec, 0x7d, 0x8f, 0xe0, 0xdf, 0x1f, 0xe8, - 0xfe, 0x38, 0xb4, 0xf3, 0x74, 0xeb, 0x8f, 0xdf, 0x28, 0xfd, - 0xe5, 0xb4, 0xbf, 0x2c, 0xa9, 0xf5, 0x1d, 0xc7, 0xb8, 0xe2, - 0xba, 0x4a, 0xf8, 0x7b, 0x4b, 0xd5, 0x2e, 0xf4, 0x5d, 0x42, - 0xb, 0xdb, 0x19, 0xda, 0xde, 0xea, 0x16, 0xdc, 0x92, 0x27, - 0x50, 0x7f, 0xcf, 0x6a, 0xfa, 0xa3, 0xe1, 0x4f, 0xc4, 0x88, - 0xbc, 0x7d, 0xa3, 0x91, 0x36, 0x23, 0xd5, 0x6d, 0x80, 0x17, - 0x31, 0x81, 0x85, 0x6c, 0xf4, 0x75, 0xf6, 0x38, 0xfc, 0xf, - 0xe1, 0x5f, 0xa4, 0xe5, 0x19, 0xdc, 0x71, 0xcf, 0xd8, 0xd6, - 0x56, 0x9f, 0xe0, 0xff, 00, 0xe0, 0xf9, 0x1e, 0xf6, 0x17, - 0x16, 0xab, 0x7b, 0x93, 0xd1, 0xfe, 0x67, 0x73, 0x45, 0x14, - 0x57, 0xd5, 0x9e, 0x90, 0x51, 0x45, 0x14, 00, 0x57, 0xcc, - 0xff, 00, 0xb4, 0xf5, 0xdf, 0xef, 0xd9, 0x33, 0xd1, 0x71, - 0x5f, 0x4c, 0x57, 0xc9, 0xbf, 0xb4, 0xbd, 0xd1, 0x7d, 0x52, - 0x55, 0xcf, 0xf1, 0x1a, 0xf9, 0xdc, 0xf6, 0x56, 0xc1, 0xb5, - 0xdc, 0xf1, 0xb3, 0x69, 0x72, 0xe1, 0x64, 0x7c, 0xdf, 0xac, - 0x36, 0xdb, 0x77, 0x3e, 0xd5, 0x4f, 0xf6, 0x27, 0xb6, 0xfe, - 0xd1, 0xfd, 0xb2, 0xf4, 0xc7, 0x20, 0x37, 0xd9, 0x34, 0xab, - 0xe9, 0xf9, 0xed, 0x95, 0x54, 0xcf, 0xfe, 0x3f, 0x53, 0x78, - 0x81, 0xf6, 0xd9, 0xc8, 0x7f, 0xd9, 0x35, 0x77, 0xfe, 0x9, - 0xe7, 0x69, 0xf6, 0xef, 0xda, 0xbb, 0x5c, 0xb9, 0xea, 0x2d, - 0x3c, 0x3b, 0x3f, 0xe6, 0xd3, 0xc2, 0x3f, 0xa1, 0xaf, 0x27, - 0x23, 0x8e, 0xb7, 0x3f, 0x34, 0xc8, 0x23, 0xcf, 0x9b, 0xa7, - 0xd9, 0x33, 0xf4, 0xee, 0x8a, 0x28, 0xaf, 0xb8, 0x3f, 0x64, - 0xa, 0x28, 0xa2, 0x80, 0x23, 0xb9, 0xb8, 0x8e, 0xd2, 0xde, - 0x59, 0xe5, 0x60, 0x91, 0x44, 0xa5, 0xdd, 0x8f, 0x40, 00, - 0xc9, 0x35, 0xf9, 0xe1, 0xe3, 0xcf, 0x13, 0xc9, 0xe3, 0x3f, - 0x19, 0xea, 0xfa, 0xcb, 0x9c, 0x8b, 0xbb, 0x86, 0x68, 0xfd, - 0xa3, 0x1c, 0x20, 0xff, 00, 0xbe, 0x40, 0xaf, 0xaf, 0x3f, - 0x69, 0x7f, 0x18, 0x9f, 0xa, 0x7c, 0x33, 0xbb, 0x82, 0x17, - 0xdb, 0x77, 0xaa, 0xb7, 0xd8, 0xa3, 0xf5, 0xda, 0xc0, 0x97, - 0x3f, 0xf7, 0xc8, 0x3f, 0x98, 0xaf, 0x8d, 0x7c, 0x3d, 0xa5, - 0x3e, 0xb3, 0xac, 0xd9, 0xd9, 0x46, 0x9, 0x69, 0xa4, 0x54, - 00, 0x7b, 0x9a, 0xf8, 0x7e, 0x20, 0xc4, 0x39, 0x4e, 0x18, - 0x78, 0xf4, 0xd7, 0xe6, 0xf6, 0x3e, 0xb, 0x88, 0x6b, 0xba, - 0xb5, 0xa9, 0xe1, 0x21, 0xd3, 0x57, 0xea, 0xf6, 0xfe, 0xbc, - 0xcf, 0xab, 0x3f, 0x65, 0x6f, 0x8, 0x7f, 0x65, 0x78, 0x5a, - 0x6d, 0x5e, 0x58, 0xf6, 0xcd, 0x76, 0xc5, 0x54, 0x91, 0xfc, - 0x22, 0xbd, 0xd6, 0xb2, 0xbc, 0x2d, 0xa2, 0xc7, 0xe1, 0xef, - 0xf, 0xd8, 0xe9, 0xf1, 0x28, 0x55, 0x82, 0x20, 0xbc, 0xe, - 0xfd, 0xeb, 0x56, 0xbe, 0xab, 0x5, 0x87, 0x58, 0x5c, 0x3c, - 0x29, 0x76, 0x5f, 0x8f, 0x53, 0xec, 0xb0, 0x94, 0x16, 0x1e, - 0x84, 0x69, 0x2e, 0x88, 0x28, 0xa2, 0x8a, 0xee, 0x3a, 0xc2, - 0x8a, 0x28, 0xa0, 0xf, 0xcb, 0xbf, 0xf8, 0x2d, 0x1f, 0xc6, - 0x4b, 0xfb, 0x3b, 0x6f, 0x5, 0xfc, 0x31, 0xb3, 0x73, 0x15, - 0x8d, 0xea, 0x36, 0xb5, 0xa8, 0x60, 0x90, 0x65, 0xda, 0xc6, - 0x38, 0x50, 0xf6, 0x20, 0x1d, 0xed, 0xf5, 0xb, 0xe9, 0x5f, - 0x9b, 0x5f, 0xb, 0x34, 0xfd, 0x7b, 0xc5, 0x3e, 0x3e, 0xf0, - 0xe7, 0x86, 0xb4, 0x3d, 0x52, 0xf3, 0x4f, 0xbc, 0xd5, 0xf5, - 0x8, 0x2c, 0x22, 0x92, 0xda, 0x77, 0x8f, 0x61, 0x92, 0x40, - 0x9b, 0xbe, 0x52, 0x3a, 0x67, 0x3f, 0x85, 0x7e, 0x9a, 0xff, - 00, 0xc1, 0x49, 0xec, 0xfe, 0xd, 0xfe, 0xd2, 0xba, 0x1d, - 0xa6, 0xa7, 0xe1, 0xbf, 0x8a, 0xfe, 0x12, 0xb7, 0xf8, 0x87, - 0xe1, 0x7f, 0x36, 0xd9, 0x74, 0xfb, 0xbd, 0x52, 0x28, 0x56, - 0xee, 0x2d, 0xdf, 0x3c, 0x5, 0x98, 0x80, 0xae, 0xac, 0x9, - 0x5c, 0x9c, 0x64, 0xb0, 0x38, 0xce, 0x47, 0xe5, 0xa7, 0x85, - 0xfc, 0x47, 0xa8, 0x78, 0xb, 0xc5, 0xfa, 0x56, 0xb9, 0xa6, - 0xca, 0xb1, 0xea, 0x9a, 0x3d, 0xec, 0x77, 0x70, 0x48, 0xac, - 0x1d, 0x44, 0x91, 0x38, 0x65, 0xe4, 0x1c, 0x30, 0xca, 0xf6, - 0x38, 0x22, 0xa9, 0x10, 0xf7, 0x3f, 0xa6, 0x8f, 0x9, 0x78, - 0x6a, 0xd7, 0xc1, 0xde, 0x17, 0xd2, 0xb4, 0x2b, 0x22, 0xe6, - 0xd7, 0x4e, 0xb6, 0x8e, 0xd6, 0x36, 0x91, 0x8b, 0x3b, 0x4, - 0x50, 0x37, 0x31, 0x3c, 0x92, 0x71, 0x92, 0x4f, 0x52, 0x6b, - 0x5e, 0xbe, 0x30, 0xf8, 0x1b, 0xff, 00, 0x5, 0x54, 0xf8, - 0x37, 0xf1, 0x2b, 0x43, 0xb4, 0x5f, 0x15, 0xea, 0xa7, 0xc0, - 0x3e, 0x22, 0xd8, 0x5, 0xc5, 0xa6, 0xa6, 0x8c, 0xd6, 0xc5, - 0xf1, 0xc9, 0x8e, 0x75, 0x5, 0x76, 0xfa, 0x6e, 0xda, 0x7d, - 0xab, 0xd9, 0xad, 0x7f, 0x6d, 0x3f, 0x80, 0xf7, 0x87, 0x11, - 0xfc, 0x5b, 0xf0, 0x88, 0x3f, 0xf4, 0xd3, 0x55, 0x89, 0x3f, - 0xf4, 0x22, 0x2a, 0x4b, 0x3d, 0xa6, 0x8a, 0xf3, 0x1d, 0x3f, - 0xf6, 0xa0, 0xf8, 0x3d, 0xab, 0x48, 0x12, 0xcb, 0xe2, 0x97, - 0x83, 0xee, 0x9c, 0xf4, 0x58, 0xb5, 0xcb, 0x66, 0x3f, 0xfa, - 0x1d, 0x77, 0x7a, 0xf, 0x89, 0xb4, 0x8f, 0x14, 0xda, 0x35, - 0xd6, 0x8d, 0xaa, 0xd9, 0x6a, 0xd6, 0xaa, 0xdb, 0xc, 0xd6, - 0x37, 0x9, 0x32, 0x6, 0xc6, 0x70, 0x4a, 0x92, 0x33, 0x82, - 0x3f, 0x3a, 00, 0xd3, 0xaf, 0x36, 0xf8, 0xf9, 0xe2, 0x1f, - 0xec, 0x6f, 0x2, 0x4b, 0x6b, 0x1c, 0x9b, 0x27, 0xd4, 0x24, - 0x10, 00, 0xf, 0x3b, 0x3a, 0xbf, 0xe8, 0x31, 0xff, 00, - 0x2, 0xaf, 0x49, 0xaf, 0x98, 0xff, 00, 0x68, 0x3f, 0x10, - 0x7f, 0x6a, 0xf8, 0xdf, 0xec, 0x28, 0xfb, 0xa0, 0xd3, 0xe2, - 0x11, 0xe0, 0x74, 0xde, 0xdf, 0x33, 0x7f, 0xec, 0xa3, 0xf0, - 0xaf, 0x3, 0x3c, 0xc5, 0x7d, 0x57, 0x3, 0x36, 0xb7, 0x96, - 0x8b, 0xe7, 0xff, 00, 0x2, 0xe7, 0x16, 0x32, 0xa7, 0xb3, - 0xa2, 0xfc, 0xf4, 0x3c, 0xc2, 0x8a, 0x28, 0xaf, 0xc7, 0x8f, - 0x97, 0xa, 0xb7, 0xa4, 0xe9, 0xb3, 0x6b, 0x3a, 0xa5, 0xa5, - 0x8c, 00, 0xb4, 0xd7, 0x32, 0xac, 0x4a, 00, 0xee, 0x4e, - 0x2a, 0xa5, 0x7a, 0x8f, 0xec, 0xf3, 0xa0, 0x1d, 0x4f, 0xc6, - 0xad, 0x7e, 0xe9, 0x98, 0x74, 0xf8, 0x4b, 0xee, 0x23, 0x8f, - 0x31, 0xbe, 0x55, 0x1f, 0x96, 0xe3, 0xf8, 0x57, 0x6e, 0xb, - 0xe, 0xf1, 0x58, 0x98, 0x51, 0x5d, 0x5f, 0xe1, 0xd7, 0xf0, - 0x35, 0xa5, 0xf, 0x69, 0x35, 0xe, 0xe7, 0xd2, 0x3a, 0x75, - 0x8c, 0x7a, 0x66, 0x9f, 0x6d, 0x69, 0x8, 0xdb, 0x14, 0x11, - 0xac, 0x48, 0x3d, 0x80, 0xc0, 0xfe, 0x55, 0x66, 0x8a, 0x2b, - 0xf7, 0x24, 0x94, 0x55, 0x91, 0xf6, 0x9, 0x5b, 0x40, 0xaf, - 0x11, 0xfd, 0xa6, 0xec, 0x43, 0x58, 0x68, 0x57, 0x9d, 0xd2, - 0x59, 0x62, 0x3f, 0xf0, 0x20, 0xf, 0xfe, 0xcb, 0x5e, 0xdd, - 0x5e, 0x4f, 0xfb, 0x48, 0xc3, 0xe6, 0x78, 0x26, 0xce, 0x4c, - 0x7f, 0xab, 0xbe, 0x43, 0xf9, 0xa3, 0x8a, 0xf1, 0xb3, 0xa8, - 0x73, 0xe5, 0xf5, 0x57, 0x95, 0xfe, 0xe7, 0x73, 0x93, 0x16, - 0xaf, 0x42, 0x47, 0xcd, 0x94, 0x51, 0x45, 0x7e, 0x32, 0x7c, - 0xa8, 0x56, 0xc7, 0x83, 0x6f, 0x8e, 0x9b, 0xe2, 0xdd, 0x1a, - 0xe8, 0x1c, 0x79, 0x57, 0x71, 0x31, 0x3e, 0xdb, 0x86, 0x7f, - 0x4a, 0xc7, 0xa7, 0x47, 0x21, 0x86, 0x45, 0x91, 0x7e, 0xf2, - 0x90, 0xc3, 0xf0, 0xad, 0x29, 0xcf, 0xd9, 0xce, 0x33, 0x5d, - 0x1d, 0xc7, 0x17, 0x66, 0x99, 0xf7, 0x4d, 0x15, 0x5b, 0x4c, - 0xb9, 0x17, 0xba, 0x75, 0xad, 0xc0, 0xe9, 0x2c, 0x49, 0x20, - 0xfc, 0x40, 0x35, 0x66, 0xbf, 0x7b, 0x4e, 0xe9, 0x34, 0x7d, - 0x9a, 0xd4, 0x28, 0xa2, 0x8a, 0x63, 0xa, 0x28, 0xa2, 0x80, - 0x38, 0xbf, 0x8c, 0x3a, 0xc8, 0xd1, 0x3e, 0x1e, 0x6a, 0xd2, - 0x6, 0xdb, 0x24, 0xf1, 0xfd, 0x99, 0x30, 0x79, 0x25, 0xce, - 0xe, 0x3f, 0xc, 0x9f, 0xc2, 0xbe, 0x48, 0xaf, 0x75, 0xfd, - 0xa6, 0x35, 0xa3, 0x9d, 0x1f, 0x49, 0x46, 0xf9, 0x7e, 0x7b, - 0x99, 0x14, 0x7f, 0xdf, 0x2b, 0xff, 00, 0xb3, 0x57, 0x85, - 0x57, 0xe5, 0x1c, 0x47, 0x88, 0xf6, 0xd8, 0xde, 0x45, 0xb4, - 0x12, 0x5f, 0xaf, 0xea, 0x7c, 0xde, 0x3e, 0x7c, 0xd5, 0xad, - 0xd8, 0x28, 0xa2, 0x8a, 0xf9, 0x63, 0xce, 0xa, 0xfa, 0x7b, - 0xf6, 0x7d, 0xd0, 0xff, 00, 0xb2, 0xfc, 0x8, 0x2e, 0xd9, - 0x71, 0x2d, 0xfc, 0xcd, 0x2e, 0x48, 0xe7, 0x68, 0xf9, 0x57, - 0xf9, 0x13, 0xf8, 0xd7, 0xcc, 0x71, 0x44, 0xd3, 0x4a, 0x91, - 0xa0, 0x2c, 0xee, 0x42, 0xa8, 0x1d, 0xc9, 0xe9, 0x5f, 0x6b, - 0x78, 0x67, 0x49, 0x5d, 0xb, 0xc3, 0xda, 0x6e, 0x9c, 0xbf, - 0xf2, 0xed, 0x6e, 0x91, 0x1f, 0x72, 0x14, 0x64, 0xfe, 0x75, - 0xf6, 0x9c, 0x2f, 0x43, 0x9f, 0x11, 0x3a, 0xcf, 0xec, 0xaf, - 0xc5, 0xff, 00, 0xc0, 0x3d, 0x5c, 0xbe, 0x17, 0xa8, 0xe5, - 0xd8, 0xd3, 0xa2, 0x8a, 0x2b, 0xf4, 0xc3, 0xe8, 0x2, 0x8a, - 0x28, 0xa0, 0xc, 0x3f, 0x1c, 0xdb, 0xb5, 0xd7, 0x82, 0xf5, - 0xd8, 0x50, 0x65, 0xde, 0xc6, 0x65, 00, 0x7a, 0xec, 0x35, - 0xf1, 0x87, 0x5a, 0xfb, 0xa2, 0x58, 0x96, 0x78, 0x9e, 0x37, - 0x19, 0x47, 0x52, 0xa4, 0x1e, 0xe0, 0xd7, 0xc4, 0xfe, 0x21, - 0xd2, 0x5f, 0x42, 0xd7, 0x75, 0xd, 0x3a, 0x40, 0x77, 0x5b, - 0x4e, 0xf1, 0x73, 0xdc, 0x3, 0xc1, 0xfc, 0x46, 0xd, 0x7e, - 0x7d, 0xc5, 0x54, 0x9d, 0xe9, 0x55, 0xe9, 0xaa, 0xfd, 0x4f, - 0x13, 0x32, 0x8e, 0xb1, 0x91, 0x9f, 0x45, 0x14, 0x57, 0xc0, - 0x1e, 0x28, 0x57, 0x5f, 0xf0, 0x97, 0x55, 0x5d, 0x1f, 0xe2, - 0x1e, 0x8b, 0x33, 0x9c, 0x23, 0xcd, 0xe4, 0x31, 0x3f, 0xed, - 0x82, 0xa3, 0xf5, 0x22, 0xb9, 0xa, 0x74, 0x52, 0xbc, 0x32, - 0xa4, 0x91, 0xb1, 0x57, 0x42, 0x19, 0x58, 0x75, 0x4, 0x74, - 0x35, 0xbd, 0xa, 0xae, 0x85, 0x58, 0x55, 0x5f, 0x65, 0xa7, - 0xf7, 0x15, 0x9, 0x72, 0x49, 0x4b, 0xb1, 0xf7, 0x4d, 0x15, - 0xcb, 0x7c, 0x38, 0xf1, 0xb4, 0x1e, 0x39, 0xf0, 0xcd, 0xbd, - 0xea, 0xb2, 0xad, 0xda, 0xf, 0x2e, 0xe6, 0x10, 0x79, 0x47, - 0x1f, 0xd0, 0xf5, 0x1f, 0x5a, 0xea, 0x6b, 0xf7, 0x3a, 0x35, - 0x61, 0x5e, 0x9c, 0x6a, 0xd3, 0x77, 0x4f, 0x53, 0xec, 0x63, - 0x25, 0x38, 0xa9, 0x47, 0x66, 0x14, 0x51, 0x45, 0x6c, 0x50, - 0x51, 0x45, 0x23, 0x30, 0x45, 0x2c, 0xc4, 0x2a, 0x81, 0x92, - 0x4f, 0x41, 0x40, 0x11, 0xdd, 0x5d, 0x45, 0x63, 0x6d, 0x2d, - 0xc4, 0xf2, 0x2c, 0x50, 0x44, 0x85, 0xdd, 0xd8, 0xe0, 0x2a, - 0x81, 0x92, 0x4d, 0x7c, 0x79, 0xf1, 0x7, 0xc5, 0xaf, 0xe3, - 0x5f, 0x15, 0x5e, 0x6a, 0x64, 0x15, 0x85, 0x8f, 0x97, 0x2, - 0x1f, 0xe1, 0x8d, 0x78, 0x5f, 0xcf, 0xaf, 0xd4, 0x9a, 0xef, - 0xfe, 0x36, 0x7c, 0x58, 0x4d, 0x74, 0xbe, 0x83, 0xa3, 0xcd, - 0xba, 0xc1, 0x1b, 0xfd, 0x22, 0xe5, 0x1b, 0x89, 0x88, 0xfe, - 0x11, 0xfe, 0xc8, 0xf5, 0xee, 0x7d, 0xba, 0xf8, 0xed, 0x7e, - 0x63, 0xc4, 0x39, 0x9c, 0x71, 0x33, 0x58, 0x6a, 0x2e, 0xf1, - 0x8e, 0xef, 0xbb, 0xff, 00, 0x80, 0x7c, 0xf6, 0x3b, 0x10, - 0xaa, 0x3f, 0x67, 0x1d, 0x90, 0x51, 0x45, 0x15, 0xf1, 0xa7, - 0x96, 0x14, 0x51, 0x5d, 0x67, 0xc3, 0x2f, 0x6, 0x3f, 0x8d, - 0xfc, 0x57, 0x6d, 0x66, 0xca, 0xdf, 0x63, 0x8f, 0xf7, 0xd7, - 0x2e, 0x7, 0x44, 0x1d, 0xbf, 0x13, 0x81, 0xf8, 0xfb, 0x56, - 0xd4, 0x68, 0xcf, 0x11, 0x52, 0x34, 0xa9, 0xad, 0x5b, 0xb1, - 0x51, 0x8b, 0x9c, 0x94, 0x56, 0xec, 0xf7, 0xbf, 0x81, 0x7e, - 0x17, 0x6f, 0xe, 0xf8, 0x1e, 0x19, 0xa6, 0x5d, 0xb7, 0x3a, - 0x83, 0x7d, 0xa9, 0x81, 0x1c, 0x85, 0x20, 0x4, 0x1f, 0x90, - 0xcf, 0xe3, 0x5e, 0x89, 0x4d, 0x8e, 0x35, 0x8a, 0x35, 0x44, - 0x50, 0xa8, 0xa0, 0x28, 0x51, 0xd0, 0xa, 0x75, 0x7e, 0xe3, - 0x86, 0xa1, 0x1c, 0x2d, 0x18, 0x51, 0x8e, 0xd1, 0x56, 0x3e, - 0xbe, 0x9c, 0x15, 0x38, 0x28, 0x2e, 0x81, 0x45, 0x14, 0x57, - 0x49, 0xa0, 0x51, 0x45, 0x14, 0x1, 0x53, 0x51, 0xd2, 0x2c, - 0x75, 0x78, 0x4c, 0x37, 0xd6, 0x70, 0x5e, 0x44, 0x7a, 0xa4, - 0xf1, 0x87, 0x1f, 0xad, 0x79, 0xf6, 0xbf, 0xfb, 0x3f, 0xf8, - 0x63, 0x57, 0x2d, 0x25, 0xa2, 0xcf, 0xa5, 0x4a, 0x7f, 0xe7, - 0xdd, 0xf2, 0x99, 0xff, 00, 0x75, 0xb3, 0xfa, 0x11, 0x5e, - 0x99, 0x45, 0x72, 0x57, 0xc1, 0xe1, 0xf1, 0x2a, 0xd5, 0xa0, - 0xa5, 0xfd, 0x77, 0x32, 0x9d, 0x28, 0x54, 0xf8, 0xd5, 0xcf, - 0x9b, 0x3c, 0x45, 0xfb, 0x3a, 0xeb, 0xba, 0x68, 0x69, 0x34, - 0xbb, 0x88, 0x75, 0x58, 0x87, 0x44, 0xff, 00, 0x55, 0x26, - 0x3e, 0x84, 0xe0, 0xfe, 0x75, 0xe6, 0xba, 0xb6, 0x87, 0xa8, - 0x68, 0x37, 0x3f, 0x67, 0xd4, 0x6c, 0xa7, 0xb2, 0x9b, 0xfb, - 0xb3, 0x21, 0x5c, 0xfd, 0x3d, 0x7f, 0xa, 0xfb, 0x76, 0xa9, - 0xea, 0x9a, 0x45, 0x96, 0xb7, 0x68, 0xf6, 0xb7, 0xf6, 0xb1, - 0x5d, 0xdb, 0xb7, 0x58, 0xe5, 0x50, 0xc3, 0xff, 00, 0xad, - 0x5f, 0x2f, 0x8a, 0xe1, 0x8c, 0x3d, 0x4b, 0xbc, 0x3c, 0x9c, - 0x5f, 0x6d, 0xd7, 0xf9, 0x9e, 0x75, 0x4c, 0xbe, 0x12, 0xd6, - 0xe, 0xc7, 0xc4, 0x14, 0x57, 0xa5, 0x7c, 0x60, 0xf8, 0x56, - 0xbe, 0x5, 0xb8, 0x8a, 0xfb, 0x4f, 0x2f, 0x26, 0x93, 0x72, - 0xe5, 0x70, 0xfc, 0x98, 0x5f, 0xa8, 0x5c, 0xf7, 0x4, 0x67, - 0x7, 0xda, 0xbc, 0xd6, 0xbf, 0x3c, 0xc5, 0x61, 0xaa, 0xe0, - 0xea, 0xba, 0x35, 0x55, 0x9a, 0x3c, 0x4a, 0x94, 0xe5, 0x4a, - 0x4e, 0x32, 0xdc, 0x28, 0xa2, 0x8a, 0xe5, 0x33, 0xa, 0xea, - 0x7e, 0x19, 0x78, 0x96, 0x5f, 0xb, 0x78, 0xd3, 0x4d, 0xba, - 0x46, 0x22, 0x19, 0x25, 0x10, 0x4e, 0xb9, 0xe1, 0xa3, 0x62, - 0x1, 0xcf, 0xd3, 0x83, 0xf8, 0x57, 0x2d, 0x4a, 0xac, 0x55, - 0x81, 0x7, 0x4, 0x1c, 0x82, 0x2b, 0x6a, 0x35, 0x65, 0x42, - 0xac, 0x6a, 0xc7, 0x74, 0xee, 0x54, 0x24, 0xe1, 0x25, 0x25, - 0xd0, 0xfb, 0xaa, 0x8a, 0x82, 0xc5, 0xda, 0x5b, 0x2b, 0x77, - 0x6e, 0x19, 0xa3, 0x52, 0x7e, 0xb8, 0xa9, 0xeb, 0xf7, 0x94, - 0xee, 0xae, 0x7d, 0x9a, 0xd4, 0x28, 0xa2, 0x8a, 0x60, 0x21, - 0x38, 0x15, 0xf1, 0xaf, 0xed, 0xf, 0x77, 0xe7, 0x6b, 0xb2, - 0x8f, 0x57, 0x3f, 0xce, 0xbe, 0xc8, 0x94, 0xed, 0x89, 0xcf, - 0xa2, 0x93, 0x5f, 0x10, 0x7c, 0x73, 0xb9, 0xf3, 0xbc, 0x45, - 0x2f, 0xfb, 0xed, 0xfc, 0xeb, 0xe5, 0x78, 0x86, 0x56, 0xc3, - 0xc6, 0x3d, 0xd9, 0xf3, 0xb9, 0xec, 0xb9, 0x70, 0xac, 0xf1, - 0x1f, 0x14, 0xc9, 0xb2, 0xc2, 0x6f, 0xf7, 0x4d, 0x76, 0x9f, - 0xf0, 0x4c, 0x9d, 0x3c, 0x5d, 0x7c, 0x65, 0xf8, 0x91, 0xa9, - 0x11, 0x9f, 0xb3, 0xe9, 0x96, 0xd6, 0xe1, 0xb1, 0xfd, 0xf9, - 0x59, 0x8f, 0xfe, 0x81, 0x5c, 0xf, 0x8d, 0x25, 0xd9, 0xa6, - 0x4d, 0xf4, 0x35, 0xeb, 0xff, 00, 0xf0, 0x4b, 0x2b, 0xd, - 0xf7, 0x3f, 0x15, 0x35, 0x22, 0x3e, 0xfd, 0xcd, 0x95, 0xba, - 0x9f, 0xf7, 0x52, 0x46, 0x3f, 0xfa, 0x10, 0xac, 0x72, 0x38, - 0xe9, 0x73, 0xe1, 0xb8, 0x5e, 0x3c, 0xd9, 0x95, 0x49, 0x76, - 0x47, 0xdf, 0x74, 0x51, 0x45, 0x7d, 0x81, 0xfa, 0xd8, 0x51, - 0x45, 0x66, 0x78, 0x9b, 0x5d, 0x83, 0xc3, 0x1e, 0x1e, 0xd4, - 0x75, 0x6b, 0x93, 0x88, 0x6c, 0xe0, 0x79, 0xd8, 0x67, 0x19, - 0xda, 0x33, 0x8f, 0xa9, 0xe9, 0x4a, 0x4d, 0x45, 0x36, 0xfa, - 0x13, 0x29, 0x28, 0xa7, 0x27, 0xb2, 0x3e, 0x49, 0xfd, 0xaa, - 0xfc, 0x62, 0xda, 0xef, 0xc4, 0x25, 0xd1, 0xe3, 0x72, 0x6d, - 0x34, 0x88, 0x82, 0x15, 0xc8, 0x20, 0xca, 0xe0, 0x33, 0x1f, - 0xcb, 0x68, 0xfc, 0xd, 0x27, 0xec, 0xc1, 0xe1, 0xf, 0xed, - 0xcf, 0x1b, 0xad, 0xfc, 0xd1, 0xee, 0xb7, 0xb2, 0x52, 0xf9, - 0x23, 0x8d, 0xdd, 0xab, 0xc8, 0xf5, 0x6d, 0x52, 0xe3, 0x5e, - 0xd5, 0xef, 0x35, 0x1b, 0xa7, 0x32, 0x5c, 0xdd, 0xcc, 0xd3, - 0x48, 0xc7, 0xd5, 0x8e, 0x6b, 0xec, 0x9f, 0xd9, 0xaf, 0xc2, - 0x3f, 0xf0, 0x8f, 0x78, 0x12, 0x3b, 0xb9, 0x13, 0x6d, 0xc5, - 0xe3, 0x17, 0x39, 0xfe, 0xef, 0x6a, 0xfc, 0xef, 0x8, 0x9e, - 0x63, 0x99, 0x7b, 0x49, 0x6d, 0x7b, 0xfc, 0x96, 0xdf, 0xa1, - 0xf9, 0xd6, 0x5c, 0x9e, 0x63, 0x99, 0x4b, 0x11, 0x2d, 0x93, - 0xbf, 0xf9, 0x1e, 0xbb, 0x45, 0x14, 0x57, 0xe8, 0xa7, 0xe8, - 0xe1, 0x45, 0x79, 0xef, 0xed, 0x1, 0xf1, 0x6a, 0xcb, 0xe0, - 0x67, 0xc1, 0xbf, 0x15, 0xf8, 0xde, 0xf9, 0x94, 0x2e, 0x93, - 0x62, 0xf2, 0xc2, 0x8d, 0xd2, 0x59, 0xc8, 0xdb, 0xa, 0x7f, - 0xc0, 0x9c, 0xa8, 0xfc, 0x6b, 0xf2, 0x66, 0xc3, 0xfe, 0xb, - 0x29, 0xf1, 0xba, 0xdd, 0x97, 0xed, 0x5a, 0x2f, 0x83, 0xae, - 0xd0, 0x75, 0x2, 0xc2, 0xe2, 0x32, 0x7f, 0x11, 0x39, 0xfe, - 0x54, 0xa, 0xf6, 0x3f, 0x6a, 0x2b, 0xc7, 0x7f, 0x6b, 0xaf, - 0x8c, 0xf0, 0x7c, 0x4, 0xfd, 0x9e, 0xbc, 0x63, 0xe2, 0xe7, - 0x90, 0x2d, 0xe4, 0x36, 0x8d, 0x6d, 0x60, 0xb9, 0xc1, 0x7b, - 0xa9, 0x7f, 0x77, 0x10, 0x1f, 0x46, 0x6d, 0xc7, 0xd9, 0x4d, - 0x5f, 0xfd, 0x98, 0xbe, 0x21, 0x78, 0xaf, 0xe2, 0xc7, 0xc1, - 0x1f, 0xc, 0xf8, 0xc3, 0xc6, 0x5a, 0x5d, 0x96, 0x8b, 0xac, - 0x6b, 0x50, 0x7d, 0xb1, 0x6c, 0x6c, 0x43, 0xec, 0x8e, 0x6, - 0x3f, 0xba, 0x27, 0x79, 0x27, 0x2c, 0xb8, 0x6f, 0xf8, 0x10, - 0x15, 0x6f, 0xe3, 0x9f, 0xec, 0xf9, 0xe0, 0xaf, 0xda, 0x37, - 0xc3, 0x16, 0x9e, 0x1e, 0xf1, 0xd5, 0x85, 0xce, 0xa5, 0xa4, - 0xdb, 0x5c, 0x8b, 0xc8, 0xe0, 0xb7, 0xbc, 0x96, 0xdf, 0xf7, - 0xa1, 0x59, 0x43, 0x13, 0x1b, 0x2, 0x70, 0x19, 0xb8, 0x3c, - 0x73, 0x40, 0xcf, 0xe6, 0xc6, 0x59, 0x5e, 0x79, 0x5e, 0x49, - 0x18, 0xbc, 0x8e, 0x4b, 0x33, 0x31, 0xc9, 0x24, 0xf5, 0x26, - 0x9b, 0x5f, 0xba, 0x57, 0x5f, 0xf0, 0x49, 0xbf, 0xd9, 0xda, - 0xe1, 0x8, 0x8f, 0x40, 0xd6, 0x2d, 0x4f, 0xf7, 0xa2, 0xd6, - 0x67, 0x27, 0xff, 00, 0x1e, 0x26, 0xb0, 0x6f, 0x7f, 0xe0, - 0x8f, 0x3f, 0x2, 0x6e, 0x3, 0x79, 0x17, 0x5e, 0x2a, 0xb4, - 0x27, 0xa6, 0xdd, 0x4a, 0x36, 0x3, 0xf3, 0x8a, 0xaa, 0xe4, - 0x72, 0xb3, 0xf1, 0x2e, 0x8a, 0xfd, 0x8a, 0xd4, 0x7f, 0xe0, - 0x8b, 0x1f, 0xc, 0x27, 0x2c, 0x6c, 0xfc, 0x6d, 0xe2, 0xab, - 0x4f, 0x40, 0xff, 00, 0x67, 0x90, 0xf, 0xfc, 0x86, 0xd, - 0x72, 0xf7, 0xdf, 0xf0, 0x44, 0x8d, 0x5, 0xd9, 0xbe, 0xc5, - 0xf1, 0x4b, 0x51, 0x88, 0x76, 0x13, 0xe9, 0x51, 0xbf, 0xf2, - 0x91, 0x68, 0xb8, 0xb9, 0x59, 0xf9, 0x39, 0x8f, 0x6a, 0xfe, - 0x88, 0x7f, 0x62, 0xf, 0x82, 0xb1, 0xfc, 0x7, 0xfd, 0x9a, - 0xbc, 0x1f, 0xe1, 0xd6, 0x89, 0x53, 0x53, 0xb8, 0xb6, 0x1a, - 0x96, 0xa2, 0xc0, 0x60, 0xb5, 0xcc, 0xe0, 0x3b, 0x3, 0xfe, - 0xe8, 0x2a, 0x9f, 0x45, 0x15, 0xf1, 0xe7, 0x83, 0xff, 00, - 0xe0, 0x8b, 0xe9, 0xe1, 0xcf, 0x1e, 0x68, 0x3a, 0xad, 0xff, - 00, 0xc4, 0x68, 0x75, 0x8d, 0x16, 0xc6, 0xfa, 0x1b, 0x9b, - 0xab, 0x6, 0xd2, 0x8c, 0x4f, 0x71, 0x1a, 0x38, 0x63, 0x1e, - 0xef, 0x34, 0x81, 0xbb, 0x18, 0xe9, 0xde, 0xbf, 0x4e, 0x95, - 0x42, 0x28, 0x55, 0x1, 0x54, 0xc, 00, 0x3a, 0x1, 0x49, - 0x94, 0x95, 0x8a, 0x9a, 0xbe, 0xa5, 0x16, 0x8f, 0xa5, 0x5d, - 0xdf, 0x4c, 0x40, 0x8a, 0xda, 0x26, 0x95, 0x89, 0xf4, 0x3, - 0x35, 0xf1, 0x4e, 0xa5, 0xa8, 0x4d, 0xaa, 0xea, 0x17, 0x37, - 0xb7, 0xd, 0xbe, 0x7b, 0x89, 0x1a, 0x57, 0x3e, 0xe4, 0xe4, - 0xd7, 0xd6, 0x7f, 0x14, 0xf4, 0xd, 0x5f, 0xc5, 0x1e, 0x13, - 0x97, 0x4b, 0xd1, 0xcc, 0x2b, 0x2d, 0xc4, 0x8a, 0x25, 0x33, - 0x39, 0x51, 0xe5, 0x8e, 0x48, 0x1c, 0x1e, 0xa4, 0xf, 0xd6, - 0xbc, 0x32, 0x4f, 0xd9, 0xfb, 0xc5, 0xc8, 0x38, 0x82, 0xd2, - 0x4f, 0xf7, 0x6e, 0x7, 0xf5, 0xc5, 0x7c, 0x17, 0x11, 0x51, - 0xc5, 0x62, 0xaa, 0x42, 0x9d, 0x1a, 0x6d, 0xc6, 0x2a, 0xfa, - 0x2e, 0xaf, 0xfc, 0x8f, 0x23, 0x1d, 0x1a, 0x95, 0x24, 0x94, - 0x62, 0xda, 0x47, 0x9b, 0x51, 0x5d, 0xec, 0xdf, 0x3, 0x7c, - 0x67, 0xf, 0xfc, 0xc2, 0x84, 0x9f, 0xee, 0x5c, 0x46, 0x7f, - 0xf6, 0x6a, 0xa5, 0x2f, 0xc2, 0x2f, 0x18, 0x43, 0xf7, 0xb4, - 0x2b, 0x83, 0xfe, 0xe9, 0x56, 0xfe, 0x46, 0xbe, 0x2a, 0x58, - 0xc, 0x5c, 0x77, 0xa5, 0x2f, 0xb9, 0x9e, 0x4b, 0xa3, 0x55, - 0x7d, 0x97, 0xf7, 0x1c, 0x7d, 0x7d, 0x3f, 0xfb, 0x3f, 0xe8, - 0x1f, 0xd9, 0x3e, 0x4, 0x4b, 0xb7, 0x4d, 0xb3, 0x6a, 0x12, - 0xb4, 0xc4, 0x91, 0xce, 0xc1, 0xf2, 0xaf, 0xf2, 0x27, 0xf1, - 0xaf, 0x9, 0xb7, 0xf8, 0x63, 0xe2, 0x79, 0x6f, 0x60, 0xb7, - 0x93, 0x44, 0xbd, 0x84, 0x49, 0x22, 0xa1, 0x91, 0xa1, 0x3b, - 0x57, 0x27, 0x19, 0x27, 0xd0, 0x57, 0xd7, 0x3a, 0x75, 0x8c, - 0x5a, 0x5d, 0x85, 0xb5, 0x9c, 0xb, 0xb6, 0x18, 0x23, 0x58, - 0x90, 0x7a, 00, 0x30, 0x2b, 0xeb, 0x38, 0x6b, 0x5, 0x38, - 0xd7, 0x9d, 0x7a, 0xb1, 0x6b, 0x95, 0x59, 0x5d, 0x5b, 0x57, - 0xff, 00, 0x3, 0xf3, 0x3d, 0x2c, 0x5, 0x26, 0xa6, 0xe7, - 0x25, 0xb1, 0x66, 0x8a, 0x28, 0xaf, 0xd1, 0x4f, 0x74, 0x2b, - 0xcd, 0x7f, 0x68, 0x38, 0xbc, 0xcf, 0x87, 0x53, 0x36, 0x3e, - 0xe5, 0xcc, 0x4d, 0xfa, 0xe3, 0xfa, 0xd7, 0xa5, 0x57, 0x3, - 0xf1, 0xce, 0x2f, 0x37, 0xe1, 0x9e, 0xa8, 0x7f, 0xb8, 0xd1, - 0x37, 0xfe, 0x44, 0x5f, 0xf1, 0xaf, 0x37, 0x32, 0x5c, 0xd8, - 0x2a, 0xcb, 0xfb, 0xaf, 0xf2, 0x39, 0xf1, 0xa, 0xf4, 0xa5, - 0xe8, 0x7c, 0xa5, 0x45, 0x14, 0x57, 0xe2, 0x27, 0xc9, 0x5, - 0x14, 0x51, 0x40, 0x1f, 0x64, 0x7c, 0x3a, 0xba, 0xfb, 0x67, - 0x80, 0xf4, 0x9, 0x49, 0xc9, 0x36, 0x51, 0x3, 0xf5, 0xa, - 0x7, 0xf4, 0xae, 0x8e, 0xb8, 0x4f, 0x82, 0x17, 0x86, 0xf3, - 0xe1, 0xa6, 0x95, 0x93, 0x93, 0x17, 0x99, 0x11, 0xfc, 0x1d, - 0xb1, 0xfa, 0x62, 0xbb, 0xba, 0xfd, 0xd3, 0x5, 0x3f, 0x69, - 0x86, 0xa5, 0x3e, 0xf1, 0x5f, 0x91, 0xf6, 0x14, 0x5f, 0x35, - 0x38, 0xbf, 0x24, 0x14, 0x51, 0x45, 0x76, 0x1a, 0x85, 0x14, - 0x56, 0x7f, 0x88, 0x35, 0x68, 0xf4, 0x1d, 0xe, 0xff, 00, - 0x51, 0x97, 0xee, 0x5a, 0xc2, 0xf2, 0x9f, 0x7c, 0xe, 0x5, - 0x4c, 0xa4, 0xa1, 0x17, 0x29, 0x6c, 0x84, 0xdd, 0x95, 0xd9, - 0xf2, 0xbf, 0xc6, 0xd, 0x78, 0xf8, 0x83, 0xe2, 0x6, 0xa9, - 0x20, 0x6d, 0xd0, 0xdb, 0xbf, 0xd9, 0x63, 0xfa, 0x27, 0x7, - 0xff, 00, 0x1e, 0xdc, 0x7f, 0x1a, 0xe3, 0x2a, 0x4b, 0x89, - 0xde, 0xea, 0x79, 0x66, 0x90, 0xee, 0x92, 0x46, 0x2e, 0xc7, - 0xd4, 0x93, 0x93, 0x51, 0xd7, 0xe1, 0x38, 0x8a, 0xcf, 0x11, - 0x5a, 0x75, 0x65, 0xf6, 0x9b, 0x67, 0xc7, 0x4e, 0x4e, 0x72, - 0x72, 0x7d, 0x42, 0x8a, 0x28, 0xae, 0x72, 0xe, 0xb7, 0xe1, - 0x46, 0x8f, 0xfd, 0xb7, 0xf1, 0x7, 0x46, 0x81, 0x97, 0x7c, - 0x69, 0x37, 0x9e, 0xe3, 0xb6, 0x10, 0x16, 0xfe, 0x60, 0x57, - 0xd7, 0xd5, 0xf3, 0xdf, 0xec, 0xd1, 0xa3, 0xf9, 0xfa, 0xd6, - 0xad, 0xa9, 0xb2, 0xf1, 0x6f, 0xa, 0xc0, 0x87, 0xdd, 0xce, - 0x4f, 0xe8, 0xbf, 0xad, 0x7d, 0x9, 0x5f, 0xaa, 0xf0, 0xd5, - 0xf, 0x67, 0x82, 0xf6, 0x8f, 0x79, 0x36, 0xfe, 0x4b, 0x43, - 0xe8, 0xf0, 0x10, 0xe5, 0xa5, 0xcd, 0xdc, 0x28, 0xa2, 0x8a, - 0xfa, 0xb3, 0xd2, 0xa, 0x28, 0xa2, 0x80, 0xa, 0xf9, 0xdb, - 0xf6, 0x88, 0xf0, 0x69, 0xd3, 0xf5, 0x98, 0x7c, 0x41, 0x6e, - 0x9f, 0xe8, 0xf7, 0x98, 0x8e, 0x7c, 0xf, 0xbb, 0x28, 0x1c, - 0x1f, 0xc4, 0xf, 0xfc, 0x77, 0xde, 0xbe, 0x89, 0xac, 0xdf, - 0x10, 0xe8, 0x36, 0x9e, 0x27, 0xd1, 0xae, 0xb4, 0xcb, 0xd4, - 0xdf, 0x6f, 0x70, 0xbb, 0x5b, 0x1d, 0x54, 0xf5, 0x4, 0x7b, - 0x83, 0xcd, 0x79, 0x59, 0x9e, 0x9, 0x63, 0xf0, 0xd2, 0xa3, - 0xd7, 0x75, 0xeb, 0xfd, 0x68, 0x73, 0x62, 0x28, 0xfb, 0x6a, - 0x6e, 0x3d, 0x4f, 0x89, 0xa8, 0xae, 0x8b, 0xc7, 0x1e, 0x8, - 0xbf, 0xf0, 0x2e, 0xb5, 0x25, 0x95, 0xe2, 0x16, 0x88, 0x92, - 0x60, 0xb8, 0x3, 0xe5, 0x95, 0x3d, 0x47, 0xbf, 0xa8, 0xed, - 0x5c, 0xed, 0x7e, 0x33, 0x56, 0x94, 0xe8, 0xcd, 0xd3, 0xa8, - 0xac, 0xd1, 0xf2, 0xb2, 0x8b, 0x8b, 0xe5, 0x96, 0xe1, 0x45, - 0x14, 0x56, 0x44, 0x9b, 0x7e, 0x12, 0xf1, 0x86, 0xa7, 0xe0, - 0xbd, 0x51, 0x6f, 0xb4, 0xd9, 0xb6, 0x3f, 0xdd, 0x92, 0x36, - 0xe5, 0x25, 0x5f, 0x46, 0x15, 0xf4, 0x1f, 0x85, 0x3e, 0x3e, - 0x78, 0x7b, 0x5d, 0x44, 0x8f, 0x50, 0x66, 0xd1, 0xee, 0xb8, - 0x4, 0x4f, 0xcc, 0x44, 0xfb, 0x38, 0xe9, 0xf8, 0xe2, 0xbe, - 0x61, 0xa2, 0xbd, 0xac, 0x6, 0x6d, 0x89, 0xcb, 0xfd, 0xda, - 0x6e, 0xf1, 0xec, 0xf6, 0xff, 00, 0x80, 0x75, 0x51, 0xc4, - 0xd4, 0xa1, 0xa4, 0x76, 0xec, 0x7d, 0xb7, 0x69, 0xe2, 0xd, - 0x2e, 0xfd, 0x3, 0x5b, 0x6a, 0x36, 0x97, 0xa, 0x46, 0x73, - 0x1c, 0xea, 0xdf, 0xc8, 0xd4, 0xb3, 0x6a, 0xf6, 0x36, 0xeb, - 0xba, 0x5b, 0xdb, 0x78, 0x97, 0xd5, 0xe5, 0x50, 0x3f, 0x9d, - 0x7c, 0x3f, 0x8a, 0x31, 0x5f, 0x46, 0xb8, 0xae, 0x76, 0xd6, - 0x8e, 0xbe, 0xbf, 0xf0, 0xe, 0xff, 00, 0xed, 0x27, 0xfc, - 0xbf, 0x89, 0xf5, 0x9f, 0x88, 0xbe, 0x32, 0xf8, 0x5b, 0xc3, - 0xb1, 0x9c, 0xea, 0x2b, 0x7f, 0x38, 0xe9, 0xd, 0x96, 0x24, - 0x3f, 0x98, 0xe0, 0x7e, 0x26, 0xbc, 0x47, 0xe2, 0x7, 0xc6, - 0xad, 0x5b, 0xc6, 0x4b, 0x25, 0xa5, 0xa8, 0x3a, 0x66, 0x96, - 0xc0, 0xab, 0x43, 0x1b, 0x65, 0xe5, 0x1f, 0xed, 0xb7, 0xa7, - 0xb0, 0xe3, 0xeb, 0x5e, 0x75, 0x45, 0x78, 0x98, 0xdc, 0xf7, - 0x17, 0x8c, 0x8b, 0x85, 0xf9, 0x62, 0xfa, 0x2f, 0xf3, 0x39, - 0x2a, 0xe3, 0x2a, 0xd5, 0x56, 0xd9, 0x5, 0x14, 0x51, 0x5f, - 0x3a, 0x70, 0x85, 0x14, 0x55, 0x8b, 0xd, 0x3e, 0xe7, 0x55, - 0xbc, 0x86, 0xd2, 0xd2, 0x17, 0xb8, 0xb9, 0x95, 0x82, 0xa4, - 0x68, 0x32, 0x58, 0xd3, 0x49, 0xc9, 0xd9, 0x6e, 0x1b, 0x89, - 0x65, 0x65, 0x3e, 0xa3, 0x77, 0xd, 0xad, 0xb4, 0x4d, 0x35, - 0xc4, 0xcc, 0x11, 0x23, 0x41, 0x92, 0xc4, 0xf6, 0xaf, 0xad, - 0x3e, 0x18, 0xf8, 0x6, 0x2f, 00, 0xf8, 0x7d, 0x6d, 0xdb, - 0x64, 0x9a, 0x84, 0xe7, 0xcc, 0xb9, 0x99, 0x7b, 0xb7, 0x65, - 0x1e, 0xc3, 0xfc, 0x4f, 0x7a, 0xc6, 0xf8, 0x4b, 0xf0, 0x9a, - 0x2f, 0x4, 0x5b, 0xfd, 0xbf, 0x50, 0x9, 0x36, 0xb5, 0x2a, - 0xe0, 0x95, 0x39, 0x58, 0x14, 0xff, 00, 0xa, 0xfb, 0xfa, - 0x9f, 0xc3, 0xeb, 0xe9, 0x35, 0xfa, 0x86, 0x47, 0x94, 0x3c, - 0x1a, 0xfa, 0xc5, 0x75, 0xef, 0xbd, 0x97, 0x65, 0xfe, 0x67, - 0xd0, 0xe0, 0xf0, 0xbe, 0xcb, 0xdf, 0x9e, 0xff, 00, 0x90, - 0x51, 0x45, 0x23, 0x30, 0x55, 0x24, 0x9c, 0x1, 0xc9, 0x35, - 0xf5, 0xe7, 0xa8, 0x71, 0xba, 0xef, 0xc5, 0x8d, 0xf, 0xc3, - 0x5e, 0x29, 0xfe, 0xc4, 0xd4, 0x64, 0x7b, 0x77, 0xf2, 0x96, - 0x43, 0x73, 0xb7, 0x31, 0xa9, 0x39, 0xf9, 0x5b, 0x1c, 0x8e, - 0x30, 0x73, 0x8c, 0x73, 0x5d, 0x55, 0x8e, 0xa3, 0x6b, 0xaa, - 0x40, 0xb3, 0xd9, 0xdc, 0xc5, 0x75, 0xb, 0x72, 0x24, 0x85, - 0xc3, 0x29, 0xfc, 0x45, 0x7c, 0x75, 0xe3, 0x8d, 0x78, 0xf8, - 0x9b, 0xc5, 0xba, 0xa6, 0xa5, 0x9c, 0xa4, 0xd3, 0xb7, 0x97, - 0xfe, 0xe0, 0xe1, 0x7f, 0x40, 0x2a, 0x86, 0x93, 0xae, 0x6a, - 0x1a, 0xd, 0xc8, 0xb8, 0xd3, 0xaf, 0x67, 0xb2, 0x97, 0xfb, - 0xd0, 0xb9, 0x5c, 0xfd, 0x7d, 0x7f, 0x1a, 0xfc, 0xf5, 0x71, - 0x3c, 0xa9, 0xd7, 0x9c, 0x67, 0xe, 0x68, 0x5d, 0xda, 0xda, - 0x3b, 0x7e, 0xbf, 0x81, 0xe1, 0xac, 0xc1, 0xa9, 0xb4, 0xd5, - 0xd1, 0xf6, 0xed, 0x15, 0xf3, 0x26, 0x8d, 0xfb, 0x43, 0x78, - 0x9f, 0x4e, 0xda, 0xb7, 0x82, 0xd7, 0x53, 0x8c, 0x75, 0xf3, - 0x63, 0xd8, 0xe7, 0xf1, 0x5c, 0xf, 0xd2, 0xbb, 0x6d, 0x2f, - 0xf6, 0x96, 0xd2, 0xa6, 0x55, 0x1a, 0x86, 0x95, 0x77, 0x6c, - 0xdd, 0xcc, 0xc, 0xb2, 0x2f, 0xeb, 0xb4, 0xd7, 0xd0, 0x51, - 0xcf, 0xf0, 0x15, 0xb7, 0x9f, 0x2b, 0xf3, 0x5f, 0xd2, 0x3b, - 0x61, 0x8d, 0xa3, 0x2e, 0xb6, 0x3d, 0x96, 0x8a, 0xf3, 0xcb, - 0x5f, 0x8f, 0x5e, 0xe, 0xb8, 0xc6, 0xeb, 0xe9, 0xad, 0xcf, - 0xa4, 0xb6, 0xef, 0xfd, 0x1, 0xad, 0x8, 0xbe, 0x31, 0x78, - 0x3a, 0x51, 0xc6, 0xb9, 0x2, 0xff, 00, 0xbc, 0xae, 0x3f, - 0x98, 0xaf, 0x4a, 0x39, 0x86, 0xe, 0x7f, 0xd, 0x58, 0xfd, - 0xe8, 0xe8, 0x55, 0xe9, 0x3d, 0xa4, 0xbe, 0xf3, 0xb3, 0xa2, - 0xb8, 0xa9, 0xfe, 0x32, 0xf8, 0x36, 0x1, 0x93, 0xad, 0xc4, - 0xff, 00, 0xf5, 0xce, 0x37, 0x6f, 0xe4, 0x2b, 0x9b, 0xd7, - 0x7f, 0x68, 0xcd, 0x2, 0xca, 0x16, 0x1a, 0x65, 0xbd, 0xce, - 0xa3, 0x3f, 0xf0, 0xee, 0x5f, 0x2a, 0x3f, 0xc4, 0x9e, 0x7f, - 0x4a, 0x8a, 0x99, 0x9e, 0xa, 0x92, 0xbc, 0xaa, 0xc7, 0xef, - 0xbf, 0xe4, 0x29, 0x62, 0x29, 0x45, 0x5d, 0xc9, 0x16, 0xbf, - 0x68, 0x6d, 0x4a, 0xde, 0xd7, 0xc0, 0x46, 0xd6, 0x42, 0x3e, - 0xd1, 0x75, 0x71, 0x18, 0x89, 0x7b, 0xfc, 0xa7, 0x73, 0x1f, - 0xc8, 0x63, 0xf1, 0xaf, 0x98, 0xeb, 0x7b, 0xc6, 0x3e, 0x35, - 0xd4, 0xfc, 0x71, 0xaa, 0x7d, 0xb7, 0x52, 0x90, 0x12, 0xa3, - 0x6c, 0x50, 0xc6, 0x30, 0x91, 0xaf, 0xa0, 0x1f, 0xd7, 0xad, - 0x60, 0xd7, 0xe5, 0x99, 0xbe, 0x3a, 0x38, 0xfc, 0x53, 0xab, - 0x5, 0xee, 0xa5, 0x64, 0x7c, 0xe6, 0x26, 0xb2, 0xad, 0x53, - 0x99, 0x6c, 0x14, 0x51, 0x45, 0x78, 0xa7, 0x28, 0x55, 0xcd, - 0x1e, 0xc5, 0xb5, 0x3d, 0x5e, 0xca, 0xcd, 0x46, 0x5a, 0xe2, - 0x74, 0x88, 0x1, 0xfe, 0xd3, 0x1, 0xfd, 0x6a, 0x9d, 0x7a, - 0x77, 0xc0, 0x1f, 0xa, 0x9d, 0x73, 0xc6, 0x1f, 0xda, 0x12, - 0xa9, 0x36, 0xda, 0x6a, 0xf9, 0xb9, 0xec, 0x64, 0x3c, 0x20, - 0xfe, 0x67, 0xf0, 0x15, 0xdb, 0x82, 0xc3, 0xcb, 0x15, 0x88, - 0x85, 0x18, 0xf5, 0x7f, 0x87, 0x5f, 0xc0, 0xd6, 0x94, 0x1d, - 0x49, 0xa8, 0xae, 0xa7, 0xd3, 0x68, 0xa1, 0x14, 0x28, 0xe8, - 0x6, 0x29, 0xd4, 0x51, 0x5f, 0xb9, 0x9f, 0x60, 0x14, 0x51, - 0x45, 00, 0x56, 0xd4, 0x5f, 0xcb, 0xb0, 0xb8, 0x6e, 0x98, - 0x43, 0xfc, 0xab, 0xe1, 0x1f, 0x8b, 0xd7, 0x1e, 0x77, 0x88, - 0xe5, 0xef, 0xf3, 0x1f, 0xe7, 0x5f, 0x72, 0xf8, 0x92, 0x5f, - 0x27, 0x43, 0xbc, 0x6e, 0x98, 0x8c, 0xd7, 0xc1, 0x5f, 0x12, - 0xa6, 0xf3, 0xbc, 0x45, 0x3f, 0xb3, 0x1a, 0xf8, 0xce, 0x22, - 0x97, 0xbb, 0x4e, 0x3e, 0x67, 0xc9, 0xf1, 0xc, 0xad, 0x41, - 0x23, 0xc8, 0x3e, 0x20, 0x4b, 0xb3, 0x4a, 0x9b, 0xe8, 0x6b, - 0xe9, 0x1f, 0xf8, 0x25, 0xa6, 0x9e, 0x23, 0xf8, 0x57, 0xe3, - 0x5b, 0xfc, 0x7c, 0xd7, 0x5e, 0x20, 0x64, 0xcf, 0xb2, 0x41, - 0x1f, 0xff, 00, 0x14, 0x6b, 0xe6, 0x1f, 0x89, 0x93, 0x6c, - 0xd2, 0x65, 0xfa, 0x1f, 0xe5, 0x5f, 0x60, 0x7f, 0xc1, 0x32, - 0x6c, 0x3e, 0xcd, 0xfb, 0x35, 0x1b, 0xad, 0xb8, 0x37, 0xba, - 0xe5, 0xec, 0xd9, 0xf5, 00, 0xaa, 0x7f, 0xec, 0x95, 0xd9, - 0x92, 0xc6, 0xd4, 0xcf, 0x99, 0xe1, 0x18, 0xdf, 0x13, 0x5e, - 0x7e, 0x87, 0xd6, 0x74, 0x51, 0x45, 0x7d, 0x39, 0xfa, 0x90, - 0x57, 0x82, 0xfe, 0xd6, 0xde, 0x35, 0x3a, 0x3f, 0x84, 0x6d, - 0x3c, 0x3f, 0x3, 0x62, 0x7d, 0x56, 0x4d, 0xd2, 0xe0, 0xf2, - 0x22, 0x42, 0xf, 0xea, 0xd8, 0x1f, 0x81, 0xaf, 0x7a, 0xaf, - 0x85, 0xbf, 0x68, 0x3f, 0x1a, 0x1f, 0x1a, 0x7c, 0x4b, 0xd4, - 0x1a, 0x29, 0x4, 0x96, 0x5a, 0x79, 0xfb, 0x15, 0xbe, 0xd2, - 0x70, 0x42, 0x9f, 0x98, 0xfe, 0x2d, 0x9f, 0xc8, 0x57, 0x85, - 0x9c, 0xe2, 0x3d, 0x86, 0x15, 0xa5, 0xbc, 0xb4, 0xff, 00, - 0x33, 0xe7, 0xb3, 0xdc, 0x4f, 0xd5, 0xf0, 0x6e, 0x29, 0xeb, - 0x2d, 0x3f, 0xcf, 0xf0, 0x39, 0x5f, 0x2, 0xf8, 0x7e, 0x4f, - 0x12, 0xf8, 0xa3, 0x4f, 0xd3, 0xe3, 0x5d, 0xde, 0x6c, 0xaa, - 0xf, 0xd3, 0x3c, 0xd7, 0xe8, 0x46, 0x95, 0xa7, 0xc7, 0xa5, - 0x69, 0xd6, 0xf6, 0x91, 00, 0xb1, 0xc2, 0x81, 00, 0x1e, - 0xd5, 0xf2, 0xef, 0xec, 0x9d, 0xe0, 0xff, 00, 0xb6, 0x6b, - 0x77, 0x7a, 0xd4, 0xc9, 0x98, 0xed, 0xd3, 0x6c, 0x64, 0x8e, - 0x37, 0x1a, 0xfa, 0xb6, 0xb8, 0xb8, 0x7f, 0xf, 0xc9, 0x46, - 0x55, 0xde, 0xf2, 0xfc, 0x91, 0x87, 0xf, 0xe1, 0xbd, 0x8e, - 0x1b, 0xda, 0x3d, 0xe5, 0xf9, 0x5, 0x14, 0x51, 0x5f, 0x54, - 0x7d, 0x41, 0xf9, 0x87, 0xff, 00, 0x5, 0x9e, 0xf8, 0xdd, - 0x1d, 0xb6, 0x8b, 0xe1, 0x2f, 0x85, 0x76, 0x17, 0x2c, 0x2e, - 0x2e, 0x65, 0xfe, 0xda, 0xd4, 0xe3, 0x46, 0xc0, 0xf2, 0x97, - 0x72, 0x40, 0x8d, 0xeb, 0x96, 0xde, 0xd8, 0xff, 00, 0x61, - 0x4d, 0x7e, 0x72, 0xfe, 0xcf, 0x7f, 0xa, 0xe5, 0xf8, 0xdb, - 0xf1, 0xb3, 0xc1, 0xbe, 0x7, 0x89, 0xfc, 0xb5, 0xd6, 0x75, - 0x8, 0xe0, 0x99, 0xf3, 0x8d, 0xb0, 0x8c, 0xbc, 0xa4, 0x7b, - 0x88, 0xd5, 0xc8, 0xf7, 0xaf, 0x55, 0xff, 00, 0x82, 0x90, - 0x6b, 0xf7, 0x9a, 0xff, 00, 0xed, 0x9f, 0xf1, 0x1c, 0xdd, - 0xc8, 0xce, 0xb6, 0x77, 0x30, 0x59, 0x40, 0xac, 0x73, 0xb2, - 0x34, 0xb7, 0x8c, 00, 0x3d, 0xb2, 0x58, 0xff, 00, 0xc0, - 0x8d, 0x7c, 0xfb, 0xe1, 0x5f, 0x15, 0x6a, 0xfe, 0x7, 0xf1, - 0x1e, 0x9d, 0xaf, 0xe8, 0x3a, 0x84, 0xfa, 0x56, 0xb3, 0xa7, - 0xcc, 0xb7, 0x16, 0xb7, 0x96, 0xcd, 0xb6, 0x48, 0x9c, 0x74, - 0x20, 0xff, 00, 0x9c, 0xf4, 0xaa, 0x33, 0x6f, 0x53, 0xfa, - 0x71, 0x51, 0xa7, 0xf8, 0x4b, 0xc3, 0xc0, 0x7c, 0x96, 0x7a, - 0x5e, 0x99, 0x6b, 0x8f, 0x45, 0x8a, 0x18, 0xd3, 0xf9, 0x5, - 0x5f, 0xd2, 0xbf, 0xe, 0xbe, 0x24, 0x7f, 0xc1, 0x4e, 0x7e, - 0x37, 0x6a, 0x3f, 0x13, 0x7c, 0x4b, 0xa8, 0xf8, 0x57, 0xc6, - 0xd3, 0xe9, 0x9e, 0x1a, 0x9a, 0xfe, 0x66, 0xd3, 0x74, 0xe3, - 0x67, 0x6e, 0xe9, 0xd, 0xbe, 0xe2, 0x23, 0x1f, 0x34, 0x64, - 0xe7, 0x68, 0x4, 0xe4, 0x9e, 0x49, 0xa8, 0x3c, 0x61, 0xff, - 00, 0x5, 0x45, 0xf8, 0xd9, 0xe3, 0xcf, 0x86, 0xda, 0xd7, - 0x83, 0x35, 0x89, 0xf4, 0x49, 0xac, 0xf5, 0x6b, 0x17, 0xb0, - 0xb9, 0xbe, 0x86, 0xc5, 0xa2, 0xba, 0xf2, 0xdd, 0x76, 0xb1, - 0xc, 0xae, 0x14, 0x31, 0x19, 0x19, 0xdb, 0xdc, 0xd7, 0xc8, - 0xb4, 0x92, 0x1b, 0x7d, 0x8f, 0xdf, 0x7f, 0xf8, 0x27, 0x7f, - 0xc4, 0x8f, 0x88, 0xff, 00, 0x18, 0xbe, 0x1, 0x47, 0xe3, - 0x6f, 0x88, 0xfa, 0xc2, 0xea, 0xb7, 0x7a, 0xad, 0xf4, 0xa3, - 0x4f, 0x9, 0x69, 0x1d, 0xb8, 0x8e, 0xda, 0x33, 0xe5, 0xe4, - 0x84, 0x51, 0x92, 0xce, 0xae, 0x72, 0x7b, 0x1, 0x5f, 0x50, - 0xd7, 0xe3, 0xaf, 0xc3, 0xf, 0xf8, 0x2b, 0xf6, 0xa3, 0xf0, - 0xbf, 0xc0, 0xfa, 0x7, 0x85, 0x34, 0xff, 00, 0x84, 0xda, - 0x50, 0xd2, 0xb4, 0x6b, 0x38, 0xac, 0xa0, 0x58, 0x75, 0x69, - 0x23, 0x25, 0x51, 0x40, 0xc9, 0xfd, 0xd1, 0xe4, 0xf2, 0x4f, - 0xb9, 0x35, 0xe8, 0x5a, 0x7f, 0xfc, 0x16, 0xee, 0x16, 0x61, - 0xf6, 0xef, 0x84, 0xb2, 0x46, 0xbd, 0xcd, 0xbe, 0xb8, 0x1f, - 0xf9, 0xc0, 0x28, 0xb1, 0x57, 0x47, 0xea, 0x45, 0x15, 0xf9, - 0xbd, 0x65, 0xff, 00, 0x5, 0xb1, 0xf0, 0x3c, 0x85, 0x7e, - 0xd7, 0xf0, 0xe3, 0xc4, 0x10, 0xe, 0xe6, 0x1b, 0xc8, 0x24, - 0xc7, 0xe7, 0xb6, 0xba, 0xed, 0x3, 0xfe, 0xb, 0x19, 0xf0, - 0x8b, 0x5c, 0xbd, 0xb6, 0xb3, 0x3e, 0x19, 0xf1, 0x84, 0x17, - 0x57, 0x12, 0x2c, 0x51, 0xc6, 0x2d, 0x20, 0x93, 0x73, 0xb1, - 0xc0, 0x51, 0xb6, 0x6e, 0x72, 0x48, 0xed, 0x48, 0x2e, 0x8f, - 0xbc, 0xe8, 0xa8, 0xad, 0xa6, 0x37, 0x16, 0xd1, 0x4a, 0x63, - 0x78, 0x4b, 0xa0, 0x63, 0x1c, 0x98, 0xdc, 0xb9, 0x19, 0xc1, - 0xc7, 0x71, 0x59, 0x1e, 0x36, 0xf1, 0xae, 0x89, 0xf0, 0xe7, - 0xc2, 0x9a, 0x9f, 0x89, 0x7c, 0x47, 0x7f, 0x1e, 0x97, 0xa2, - 0x69, 0xb0, 0x99, 0xee, 0xee, 0xe5, 0x4, 0xac, 0x48, 0x3b, - 0xe0, 0x2, 0x4f, 0x5e, 0x80, 0x50, 0x33, 0x72, 0x8a, 0xf0, - 0x2b, 0xf, 0xdb, 0xdb, 0xf6, 0x7d, 0xd4, 0x63, 0xf, 0x1f, - 0xc5, 0x6f, 0xf, 0xc6, 0xf, 0x6b, 0x89, 0x9a, 0x23, 0xf9, - 0x32, 0x8a, 0xdc, 0xb1, 0xfd, 0xb1, 0x7e, 0x6, 0xea, 0x3f, - 0xea, 0x3e, 0x2d, 0x78, 0x40, 0xff, 00, 0xbf, 0xac, 0x42, - 0x9f, 0xfa, 0x13, 0xa, 00, 0xf6, 0x1a, 0x2b, 0x82, 0xd2, - 0x7e, 0x3e, 0x7c, 0x33, 0xd7, 0xbf, 0xe4, 0x1d, 0xf1, 0xb, - 0xc2, 0xf7, 0xdf, 0xf5, 0xc3, 0x58, 0xb7, 0x7f, 0xe4, 0xf5, - 0xd1, 0xd9, 0x78, 0xd7, 0xc3, 0xda, 0x91, 0x2, 0xd3, 0x5e, - 0xd3, 0x2e, 0x89, 0xe8, 0x21, 0xbc, 0x8d, 0xf3, 0xf9, 0x35, - 00, 0x6d, 0x51, 0x51, 0xa5, 0xc4, 0x52, 0x7d, 0xc9, 0x51, - 0xbf, 0xdd, 0x60, 0x6a, 0x4a, 00, 0x28, 0xa2, 0x8a, 00, - 0x2a, 0xbd, 0xfe, 0x9f, 0x6d, 0xaa, 0x5a, 0x49, 0x6b, 0x79, - 0x6f, 0x1d, 0xd5, 0xb4, 0x98, 0xdf, 0x14, 0xca, 0x19, 0x5b, - 0x9c, 0xf2, 0xf, 0xbd, 0x58, 0xa2, 0x93, 0x49, 0xab, 0x30, - 0x6a, 0xfa, 0x33, 0x96, 0x9b, 0xe1, 0x77, 0x84, 0xe7, 0x1f, - 0x36, 0x81, 0x62, 0x3f, 0xdc, 0x8b, 0x6f, 0xf2, 0xaa, 0x53, - 0x7c, 0x17, 0xf0, 0x6c, 0xfd, 0x74, 0x54, 0x5f, 0xf7, 0x25, - 0x91, 0x7f, 0x93, 0x57, 0x6d, 0x45, 0x72, 0x4b, 0x5, 0x85, - 0x96, 0xf4, 0xa3, 0xf7, 0x23, 0x27, 0x46, 0x9b, 0xde, 0x2b, - 0xee, 0x3c, 0xf6, 0x4f, 0x80, 0xde, 0xc, 0x7e, 0x9a, 0x74, - 0xa9, 0xfe, 0xed, 0xd4, 0x9f, 0xd5, 0xaa, 0xac, 0x9f, 0xb3, - 0xd7, 0x84, 0x9f, 0xee, 0xa5, 0xe4, 0x7f, 0xee, 0xdc, 0x7f, - 0x88, 0xaf, 0x4c, 0xa2, 0xb0, 0x79, 0x66, 0x9, 0xef, 0x46, - 0x3f, 0x72, 0x23, 0xea, 0xf4, 0x7f, 0x95, 0x18, 0x7e, 0xf, - 0xf0, 0x85, 0x97, 0x82, 0x74, 0x93, 0xa7, 0x58, 0x3c, 0xcf, - 0x6f, 0xe6, 0x34, 0xa3, 0xcf, 0x60, 0xc4, 0x13, 0x8c, 0x8c, - 0x80, 0x38, 0xe2, 0xb7, 0x28, 0xa2, 0xbb, 0xe9, 0xd3, 0x8d, - 0x28, 0xa8, 0x41, 0x59, 0x23, 0x68, 0xc5, 0x45, 0x59, 0x6c, - 0x14, 0x51, 0x45, 0x68, 0x50, 0x57, 0x25, 0xf1, 0x4b, 0xc3, - 0xfa, 0x9f, 0x8a, 0x7c, 0x1f, 0x73, 0xa5, 0xe9, 0x46, 0x21, - 0x3c, 0xee, 0x81, 0xcc, 0xce, 0x50, 0x6c, 0x7, 0x27, 0x9c, - 0x1f, 0x41, 0x5d, 0x6d, 0x15, 0x8d, 0x6a, 0x51, 0xaf, 0x4e, - 0x54, 0xa5, 0xb3, 0x56, 0x22, 0x71, 0x53, 0x8b, 0x8b, 0xea, - 0x7c, 0xb5, 0x2f, 0xc0, 0xf, 0x18, 0x47, 0xd2, 0xd6, 0xda, - 0x4f, 0xf7, 0x2e, 0x17, 0xfa, 0xe2, 0xa9, 0xcb, 0xf0, 0x47, - 0xc6, 0x71, 0xff, 00, 0xcc, 0x1f, 0x7f, 0xfb, 0xb3, 0xc7, - 0xff, 00, 0xc5, 0x57, 0xd6, 0x34, 0x57, 0xcb, 0xcb, 0x86, - 0x30, 0x4f, 0x69, 0x49, 0x7c, 0xd7, 0xf9, 0x1e, 0x7b, 0xcb, - 0xe9, 0x77, 0x67, 0xc8, 0x53, 0x7c, 0x25, 0xf1, 0x7c, 0x7, - 0xe6, 0xd0, 0x6e, 0x8f, 0xfb, 0x9b, 0x5b, 0xf9, 0x1a, 0xa3, - 0x3f, 0xc3, 0xef, 0x13, 0x5b, 0xff, 00, 0xac, 0xd0, 0x75, - 0x1, 0xf4, 0xb7, 0x63, 0xfc, 0x85, 0x7d, 0x97, 0x45, 0x61, - 0x2e, 0x16, 0xc3, 0x7d, 0x9a, 0x92, 0xfc, 0x3f, 0xc8, 0x87, - 0x97, 0x43, 0xa4, 0x99, 0xe7, 0xdf, 0x3, 0xbc, 0x37, 0x2f, - 0x87, 0x7c, 0xb, 0xf, 0xda, 0x61, 0x78, 0x2e, 0xee, 0xe5, - 0x79, 0xe4, 0x49, 0x14, 0xab, 0x2f, 0x3b, 0x54, 0x10, 0x7a, - 0x70, 0xa0, 0xfe, 0x35, 0xe8, 0x34, 0x51, 0x5f, 0x59, 0x86, - 0xa1, 0x1c, 0x35, 0x18, 0xd1, 0x8e, 0xd1, 0x56, 0x3d, 0x2a, - 0x70, 0x54, 0xe0, 0xa0, 0xba, 0x5, 0x14, 0x51, 0x5d, 0x26, - 0x81, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x6, 0x57, - 0x88, 0xfc, 0x33, 0xa6, 0xf8, 0xb3, 0x4d, 0x7b, 0x1d, 0x4e, - 0xd9, 0x6e, 0x20, 0x6e, 0x46, 0x78, 0x64, 0x3e, 0xaa, 0x7a, - 0x83, 0x5f, 0x3a, 0xf8, 0xef, 0xe0, 0x66, 0xb1, 0xe1, 0x97, - 0x96, 0xe7, 0x4d, 0x56, 0xd5, 0xb4, 0xd1, 0xc8, 0x31, 0x8c, - 0xcc, 0x83, 0xfd, 0xa5, 0x1d, 0x7e, 0xa3, 0xf2, 0x15, 0xf4, - 0xfd, 0x15, 0xe3, 0xe3, 0xf2, 0xac, 0x3e, 0x60, 0xbf, 0x78, - 0xad, 0x2e, 0xeb, 0x7f, 0xf8, 0x27, 0x2d, 0x6c, 0x34, 0x2b, - 0xfc, 0x5b, 0xf7, 0x3e, 0x15, 0x20, 0xa9, 0x20, 0x8c, 0x11, - 0xc1, 0x7, 0xb5, 0x25, 0x7d, 0x89, 0xe2, 0x7f, 0x86, 0xde, - 0x1e, 0xf1, 0x70, 0x63, 0x7f, 0xa7, 0x47, 0xe7, 0x9f, 0xf9, - 0x78, 0x87, 0xe4, 0x90, 0x7e, 0x23, 0xaf, 0xe3, 0x9a, 0xf3, - 0x2d, 0x6b, 0xf6, 0x66, 0x53, 0xb9, 0xb4, 0x9d, 0x64, 0x8f, - 0x48, 0xaf, 0x23, 0xcf, 0xfe, 0x3c, 0xbf, 0xe1, 0x5f, 0x5, - 0x89, 0xe1, 0xbc, 0x65, 0x17, 0x7a, 0x56, 0x9a, 0xfb, 0x9f, - 0xdc, 0xff, 00, 0xcc, 0xf1, 0xaa, 0x60, 0x2a, 0xc7, 0xe1, - 0xd4, 0xf0, 0x8a, 0x2b, 0xd0, 0x35, 0x3f, 0x81, 0x5e, 0x30, - 0xd3, 0xdc, 0x84, 0xb0, 0x8e, 0xf5, 0x7, 0xf1, 0xdb, 0x4c, - 0xa7, 0xf4, 0x62, 0xf, 0xe9, 0x58, 0x57, 0x3f, 0xe, 0x3c, - 0x53, 0x68, 0x71, 0x26, 0x81, 0x7f, 0xff, 00, 00, 0x81, - 0x9c, 0x7e, 0x99, 0xaf, 0xa, 0xa6, 0x7, 0x15, 0x49, 0xda, - 0x74, 0xa4, 0xbe, 0x4c, 0xe2, 0x74, 0x6a, 0x47, 0x78, 0xb3, - 0x9c, 0xa2, 0xb4, 0xe4, 0xf0, 0xc6, 0xb3, 0x11, 0xc3, 0xe9, - 0x37, 0xca, 0x7d, 0xd, 0xb3, 0xff, 00, 0x85, 0x35, 0x7c, - 0x39, 0xab, 0x31, 0xc0, 0xd2, 0xaf, 0x4f, 0xd2, 0xd9, 0xff, - 00, 0xc2, 0xb9, 0xbd, 0x95, 0x4f, 0xe5, 0x7f, 0x71, 0x1c, - 0xb2, 0xec, 0x67, 0x51, 0x5b, 0xf6, 0xfe, 00, 0xf1, 0x2d, - 0xd1, 0x1e, 0x56, 0x83, 0xa8, 0xb6, 0x7a, 0x13, 0x6c, 0xe0, - 0x7e, 0x64, 0x56, 0xe6, 0x9d, 0xf0, 0x47, 0xc6, 0x3a, 0x83, - 0xa8, 0x3a, 0x5f, 0xd9, 0x50, 0xff, 00, 0x1d, 0xc4, 0xa8, - 0xa0, 0x7e, 0x19, 0x27, 0xf4, 0xae, 0x88, 0x60, 0xb1, 0x35, - 0x3e, 0xa, 0x52, 0x7f, 0x26, 0x5a, 0xa5, 0x52, 0x5b, 0x45, - 0x9c, 0x25, 0x15, 0xee, 0x3a, 0x2f, 0xec, 0xcf, 0x2b, 0x6d, - 0x6d, 0x5b, 0x58, 0x54, 0xf5, 0x8a, 0xce, 0x3c, 0x9f, 0xfb, - 0xe9, 0xbf, 0xc2, 0xbd, 0x2f, 0xc3, 0x1f, 0xa, 0x7c, 0x35, - 0xe1, 0x4d, 0xaf, 0x6b, 0xa7, 0xac, 0xf7, 0x2b, 0xff, 00, - 0x2f, 0x17, 0x5f, 0xbc, 0x7f, 0xc3, 0x3c, 0xf, 0xc0, 0xa, - 0xf7, 0x30, 0xdc, 0x39, 0x8d, 0xac, 0xef, 0x51, 0x28, 0x2f, - 0x3d, 0x5f, 0xdc, 0xbf, 0xe0, 0x1d, 0x94, 0xf0, 0x35, 0x67, - 0xf1, 0x68, 0x7c, 0xfd, 0xe0, 0xbf, 0x83, 0x9a, 0xff, 00, - 0x8c, 0xc, 0x73, 0x18, 0x7f, 0xb3, 0xb4, 0xf6, 0x23, 0x37, - 0x37, 0x20, 0x82, 0x47, 0xaa, 0xaf, 0x56, 0xfd, 0x7, 0xbd, - 0x7d, 0xf, 0xe0, 0x9f, 0x87, 0x3a, 0x37, 0x81, 0x6d, 0xb6, - 0xd8, 0xc1, 0xe6, 0x5d, 0x32, 0xe2, 0x5b, 0xb9, 0x79, 0x91, - 0xff, 00, 0xc0, 0x7b, 0xa, 0xea, 0x68, 0xaf, 0xba, 0xc0, - 0x64, 0xd8, 0x6c, 0x7, 0xbd, 0x15, 0xcd, 0x2e, 0xef, 0xf4, - 0xec, 0x7b, 0x14, 0x30, 0xb4, 0xe8, 0xea, 0xb5, 0x7d, 0xc2, - 0x8a, 0x28, 0xaf, 0x74, 0xec, 0xa, 0xe5, 0x7e, 0x28, 0x6b, - 0xe3, 0xc3, 0x7e, 0x5, 0xd5, 0xae, 0xc3, 0x6d, 0x95, 0xa2, - 0x30, 0xc4, 0x7b, 0xef, 0x7f, 0x94, 0x7e, 0x59, 0xcf, 0xe1, - 0x5d, 0x55, 0x78, 0xc7, 0xed, 0x29, 0x71, 0x76, 0xfa, 0x46, - 0x95, 0x69, 0xd, 0xbc, 0xcf, 0x6d, 0xe6, 0xb4, 0xf3, 0x4a, - 0x88, 0x4a, 0x29, 0x3, 0xa, 0x9, 0xe9, 0xfc, 0x4d, 0xf9, - 0x57, 0x99, 0x99, 0xd7, 0x78, 0x7c, 0x1d, 0x4a, 0x91, 0xde, - 0xda, 0x7c, 0xf4, 0x39, 0xf1, 0x13, 0x70, 0xa5, 0x29, 0x23, - 0xe7, 0xba, 0x28, 0xa2, 0xbf, 0x12, 0x3e, 0x48, 0x28, 0xa2, - 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, - 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0xbb, 0x3f, 0x5, 0x7c, - 0x27, 0xd7, 0xbc, 0x69, 0x2c, 0x4f, 0x15, 0xbb, 0x59, 0x69, - 0xed, 0xc9, 0xbd, 0xb8, 0x5c, 0x2e, 0x3f, 0xd9, 0x1d, 0x5b, - 0xf0, 0xe3, 0xde, 0xb7, 0xa3, 0x42, 0xae, 0x22, 0x6a, 0x9d, - 0x18, 0xb6, 0xfc, 0x8b, 0x84, 0x25, 0x37, 0x68, 0xab, 0xb3, - 0x9c, 0xd0, 0x34, 0x1b, 0xdf, 0x13, 0x6a, 0xd6, 0xfa, 0x76, - 0x9f, 0x17, 0x9d, 0x73, 0x33, 0x60, 0xe, 0xca, 0x3b, 0xb1, - 0x3d, 0x80, 0xf5, 0xaf, 0xae, 0xbc, 0xb, 0xe0, 0xeb, 0x5f, - 0x3, 0xf8, 0x7a, 0xd, 0x3a, 0xdc, 0x6, 0x90, 0xd, 0xf3, - 0xcc, 0x6, 0xc, 0xb2, 0x1e, 0xa7, 0xfa, 0xf, 0x6a, 0x87, - 0xc0, 0xdf, 0xf, 0xb4, 0xbf, 0x1, 0x58, 0x18, 0x2c, 0x50, - 0xc9, 0x71, 0x26, 0x3c, 0xeb, 0xa9, 00, 0xdf, 0x21, 0xfe, - 0x83, 0xd8, 0x57, 0x4f, 0x5f, 0xa9, 0x64, 0xd9, 0x3a, 0xcb, - 0xe3, 0xed, 0x6a, 0xeb, 0x51, 0xfe, 0xb, 0xb7, 0xf9, 0x9f, - 0x43, 0x85, 0xc2, 0xfb, 0x5, 0xcd, 0x2f, 0x88, 0x28, 0xa2, - 0x8a, 0xfa, 0x73, 0xd1, 0xa, 0x28, 0xa2, 0x80, 0x30, 0x7c, - 0x73, 0x37, 0x91, 0xe1, 0x8b, 0xd6, 0xe9, 0xf2, 0xe2, 0xbe, - 0x8, 0xf1, 0xc4, 0xbe, 0x66, 0xbd, 0x72, 0x73, 0xfc, 0x46, - 0xbe, 0xe8, 0xf8, 0x9f, 0x37, 0x93, 0xe1, 0x2b, 0xa3, 0x9a, - 0xf8, 0x2f, 0xc5, 0xd, 0xbf, 0x55, 0xba, 0x6c, 0xff, 00, - 0x11, 0xaf, 0x84, 0xe2, 0x19, 0x7e, 0xfa, 0x9c, 0x4f, 0x88, - 0xe2, 0x49, 0x7b, 0x91, 0x47, 0x8f, 0x7c, 0x59, 0x9f, 0xcb, - 0xd2, 0x64, 0xe7, 0xb1, 0xfe, 0x55, 0xf7, 0x67, 0xfc, 0x13, - 0xa2, 0xc9, 0xad, 0x3f, 0x64, 0xaf, 0x8, 0xbb, 0xc, 0x1b, - 0x89, 0xaf, 0x67, 0xfc, 0xd, 0xd4, 0xa3, 0xfa, 0x57, 0xc0, - 0x5f, 0x19, 0xa6, 0xf2, 0xf4, 0xa9, 0x79, 0xe3, 0x69, 0xaf, - 0xd2, 0x7f, 0xd8, 0xaf, 0x4a, 0x1a, 0x3f, 0xec, 0xaf, 0xf0, - 0xda, 00, 0x41, 0xdf, 0xa5, 0x25, 0xc1, 0xc7, 0xac, 0x8c, - 0xd2, 0x7f, 0xec, 0xd5, 0xed, 0xe5, 0xa, 0xd4, 0x91, 0xe6, - 0xf0, 0x74, 0x7d, 0xda, 0xf3, 0xf3, 0x3d, 0xb2, 0x8a, 0x28, - 0xaf, 0xa0, 0x3f, 0x49, 0x39, 0x5f, 0x8a, 0x1e, 0x30, 0x4f, - 0x2, 0x78, 0x13, 0x56, 0xd6, 0x18, 0xfe, 0xf2, 0x18, 0xb6, - 0xc2, 0x3d, 0x65, 0x6f, 0x95, 0x7, 0xe6, 0x45, 0x7e, 0x7e, - 0xa7, 0x99, 0x77, 0x71, 0x96, 0x26, 0x49, 0xa5, 0x6c, 0xb3, - 0x1e, 0x4b, 0x31, 0x3c, 0x9f, 0xce, 0xbe, 0x93, 0xfd, 0xaf, - 0xfc, 0x64, 0xf, 0xf6, 0x4f, 0x85, 0xa1, 0x3c, 0xff, 00, - 0xc7, 0xf5, 0xc1, 0xf6, 0xe5, 0x50, 0x7f, 0xe8, 0x47, 0xf0, - 0x15, 0xe3, 0xbf, 0x8, 0x3c, 0x2a, 0xde, 0x2d, 0xf1, 0xd6, - 0x9b, 0x69, 0xb4, 0xb4, 0x42, 0x40, 0xf2, 0x7b, 0x28, 0xe6, - 0xbf, 0x3e, 0xce, 0xab, 0x4b, 0x13, 0x8b, 0x8e, 0x1e, 0x1d, - 0x34, 0xf9, 0xb3, 0xf3, 0xbc, 0xe2, 0xa3, 0xc6, 0xe3, 0xe3, - 0x86, 0x86, 0xd1, 0xd3, 0xe6, 0xf7, 0xfd, 0xf, 0xae, 0xfe, - 0x7, 0x78, 0x51, 0x7c, 0x2b, 0xf0, 0xff, 00, 0x4f, 0x8c, - 0xa8, 0x59, 0xe7, 0x5f, 0x36, 0x43, 0x8e, 0xe6, 0xbd, 0x2, - 0xa3, 0xb7, 0x81, 0x2d, 0xa0, 0x8e, 0x14, 0x1b, 0x51, 0x14, - 0x28, 0x3, 0xd0, 0x54, 0x95, 0xf7, 0x54, 0x29, 0x2a, 0x14, - 0xa3, 0x4a, 0x3b, 0x25, 0x63, 0xef, 0xe9, 0x53, 0x54, 0xa1, - 0x18, 0x47, 0x64, 0x14, 0x51, 0x45, 0x6e, 0x6a, 0x7e, 0x70, - 0xff, 00, 0xc1, 0x43, 0xbf, 0xe0, 0x9c, 0x3a, 0xf7, 0xc6, - 0x5f, 0x19, 0x5d, 0x7c, 0x4c, 0xf8, 0x6b, 0xf6, 0x7b, 0x8d, - 0x7a, 0xea, 0x24, 0x1a, 0xae, 0x87, 0x33, 0x88, 0x9a, 0xe9, - 0xd1, 0x42, 0xac, 0xb1, 0x39, 0xf9, 0x77, 0x95, 0x55, 0x52, - 0xad, 0x8c, 0xed, 0x4, 0x1e, 0xb5, 0xf9, 0x9d, 0xe2, 0x4f, - 0xd9, 0xa7, 0xe2, 0xcf, 0x84, 0x2e, 0xe4, 0xb6, 0xd5, 0xfe, - 0x1b, 0x78, 0xaa, 0xce, 0x54, 0xfb, 0xc4, 0xe9, 0x13, 0xba, - 0x7e, 0xe, 0xaa, 0x54, 0xfe, 0x6, 0xbf, 0xa4, 0xfa, 0xe7, - 0xbe, 0x21, 0x78, 0xca, 0xdb, 0xe1, 0xe7, 0x81, 0xb5, 0xef, - 0x13, 0x5e, 0x47, 0x24, 0xd6, 0xfa, 0x55, 0x9c, 0xb7, 0x6d, - 0x14, 0x2a, 0x59, 0xe4, 0xda, 0xa4, 0x84, 0x50, 0x39, 0x2c, - 0xc7, 00, 0x1, 0xdc, 0xd3, 0xb9, 0x2d, 0x5c, 0xfe, 0x63, - 0xef, 0xac, 0x6e, 0x74, 0xcb, 0xb9, 0x6d, 0x6f, 0x2d, 0xe5, - 0xb4, 0xba, 0x85, 0xb6, 0x49, 0x4, 0xe8, 0x51, 0xd1, 0xbd, - 0xa, 0x9e, 0x41, 0xfa, 0xd5, 0x7a, 0xeb, 0x3e, 0x21, 0x5c, - 0x78, 0x93, 0xc5, 0xbe, 0x32, 0xd7, 0x7c, 0x49, 0xae, 0x69, - 0xb7, 0xb0, 0xea, 0x1a, 0xb5, 0xf4, 0xd7, 0xf7, 0x6, 0x68, - 0x1d, 0x70, 0xf2, 0x39, 0x72, 0x39, 0x1d, 0x1, 0x38, 0xaf, - 0xd9, 0xef, 0xf8, 0x27, 0x3f, 0xec, 0xbd, 0xe1, 0xaf, 0x8, - 0x7e, 0xcb, 0x5e, 0x1e, 0xbd, 0xf1, 0x2f, 0x86, 0xf4, 0xcd, - 0x5b, 0x58, 0xf1, 0x29, 0x3a, 0xcc, 0xe7, 0x52, 0xb1, 0x49, - 0x9a, 0x38, 0xe4, 00, 0x42, 0x9f, 0x38, 0x38, 0xc4, 0x6a, - 0xa7, 0x1e, 0xac, 0x69, 0xdc, 0x9b, 0x5c, 0xfc, 0x36, 0xa2, - 0xbf, 0xa4, 0x3d, 0x67, 0xf6, 0x53, 0xf8, 0x37, 0xe2, 0x2, - 0x7f, 0xb4, 0x3e, 0x17, 0xf8, 0x52, 0xe7, 0x3e, 0xba, 0x4c, - 0x23, 0xf9, 0x28, 0xae, 0x53, 0x54, 0xfd, 0x81, 0x7f, 0x67, - 0xbd, 0x5c, 0x62, 0x6f, 0x85, 0x5a, 0xc, 0x5f, 0xf5, 0xeb, - 0x1b, 0xc1, 0xff, 00, 0xa0, 0x30, 0xa5, 0x71, 0xf2, 0x9f, - 0xcf, 0x3d, 0x7d, 0x3f, 0xff, 00, 0x4, 0xe1, 0xf8, 0x2a, - 0x7e, 0x34, 0x7e, 0xd4, 0xfe, 0x18, 0x8e, 0xe2, 0x3, 0x2e, - 0x8f, 0xe1, 0xf6, 0xfe, 0xdc, 0xbe, 0xc8, 0x3b, 0x71, 0x9, - 0x6, 0x25, 0x27, 0xde, 0x53, 0x1f, 0xe0, 0xd, 0x7e, 0xa9, - 0x6a, 0x5f, 0xf0, 0x4c, 0x4f, 0xd9, 0xc3, 0x51, 0x18, 0xff, - 00, 0x84, 00, 0xda, 0xfb, 0xdb, 0x6a, 0x97, 0x69, 0xff, - 00, 0xb5, 0x6b, 0xd0, 0x3e, 00, 0xfe, 0xc8, 0x5f, 0xc, - 0xbf, 0x66, 0x6d, 0x43, 0x59, 0xbd, 0xf0, 0xe, 0x8d, 0x71, - 0xa6, 0xdc, 0xea, 0xd1, 0xc7, 0xd, 0xd3, 0xdc, 0x5e, 0xcb, - 0x72, 0x4a, 0x21, 0x62, 0xa1, 0x7c, 0xc2, 0x76, 0x8c, 0xb1, - 0xce, 0x3a, 0xf1, 0xe9, 0x45, 0xc3, 0x94, 0xf6, 0x7a, 0xfc, - 0xf8, 0xff, 00, 0x82, 0xc6, 0xfc, 0x66, 0x3e, 0x11, 0xf8, - 0x31, 0xa1, 0x7c, 0x3f, 0xb3, 0x98, 0xa5, 0xef, 0x8a, 0x6e, - 0xfc, 0xeb, 0x90, 0xa7, 0x9f, 0xb2, 0x5b, 0x95, 0x62, 0xf, - 0xd6, 0x46, 0x8f, 0xfe, 0xf9, 0x35, 0xfa, 0xf, 0x5f, 0x23, - 0xfe, 0xd6, 0x9f, 0xf0, 0x4f, 0x2d, 0x1b, 0xf6, 0xb2, 0xf1, - 0xd5, 0xaf, 0x8a, 0x35, 0x7f, 0x1c, 0x6b, 0x1a, 0x34, 0xf6, - 0x96, 0x6b, 0x65, 0x6d, 0x65, 0x6f, 0x6f, 0x14, 0x90, 0x44, - 0x80, 0x96, 0x24, 0x3, 0x83, 0x96, 0x66, 0x24, 0xf3, 0xd8, - 0x7a, 0x52, 0x29, 0x9f, 0x83, 0xf4, 0x57, 0xea, 0x9e, 0xa5, - 0xff, 00, 0x4, 0x45, 0xb5, 0x20, 0xfd, 0x83, 0xe2, 0xc4, - 0xca, 0x7b, 0xb, 0x9d, 0x10, 0x1f, 0xd5, 0x66, 0x15, 0xcf, - 0x5d, 0xff, 00, 0xc1, 0x11, 0xbc, 0x42, 0xaa, 0x4d, 0xaf, - 0xc5, 0x6d, 0x32, 0x46, 0xec, 0x26, 0xd1, 0xe4, 0x41, 0xf9, - 0x89, 0x4f, 0xf2, 0xaa, 0xb9, 0x16, 0x67, 0xe6, 0x66, 0x7, - 0xa5, 0x49, 0x14, 0xf2, 0x42, 0x7f, 0x77, 0x23, 0xc7, 0xfe, - 0xeb, 0x11, 0x5f, 0xa2, 0x1a, 0x87, 0xfc, 0x11, 0x57, 0xe2, - 0x44, 0x8, 0x4d, 0x9f, 0x8f, 0x3c, 0x31, 0x74, 0x7b, 0x2c, - 0x91, 0xdc, 0x47, 0xff, 00, 0xb2, 0x1a, 0xe3, 0xf5, 0x4f, - 0xf8, 0x23, 0xd7, 0xc7, 0x5b, 0x32, 0xdf, 0x65, 0xb9, 0xf0, - 0xb5, 0xfa, 0x8e, 0x9e, 0x5e, 0xa4, 0xe8, 0x4f, 0xfd, 0xf5, - 0x10, 0xa2, 0xe1, 0x66, 0x7c, 0x69, 0xa6, 0xf8, 0xcf, 0xc4, - 0x1a, 0x3b, 0x87, 0xb0, 0xd7, 0x75, 0x3b, 0x17, 0x1d, 0x1a, - 0xda, 0xf2, 0x48, 0xcf, 0xe8, 0xc2, 0xba, 0x9d, 0x3f, 0xf6, - 0x87, 0xf8, 0xa7, 0xa5, 0x38, 0x6b, 0x4f, 0x89, 0x1e, 0x2c, - 0x84, 0x8e, 0x9b, 0x75, 0xab, 0x9c, 0xf, 0xc3, 0x7d, 0x7b, - 0xce, 0xa5, 0xff, 00, 0x4, 0xab, 0xfd, 0xa2, 0x74, 0xf0, - 0x4a, 0x78, 0x5b, 0x4f, 0xbd, 0x3, 0xfe, 0x7d, 0x75, 0x68, - 0xe, 0x7f, 0xef, 0xa6, 0x15, 0xc9, 0xea, 0x7f, 0xf0, 0x4e, - 0xbf, 0xda, 0x27, 0x4a, 0x4, 0xbf, 0xc3, 0x2d, 0x46, 0x75, - 0x1d, 0xed, 0xae, 0x2d, 0xe5, 0xfd, 0x16, 0x4c, 0xd0, 0x16, - 0x67, 0x33, 0x61, 0xfb, 0x69, 0x7c, 0x76, 0xd3, 0x48, 0xf2, - 0x3e, 0x2b, 0xf8, 0xa7, 0x8e, 0x82, 0x4d, 0x41, 0xe4, 0x1f, - 0xf8, 0xf6, 0x6b, 0xa1, 0xb4, 0xff, 00, 0x82, 0x86, 0xfe, - 0xd1, 0x56, 0x61, 0x44, 0x7f, 0x14, 0xb5, 0x56, 0x3, 0xfe, - 0x7a, 0xc1, 0x6f, 0x27, 0xfe, 0x85, 0x19, 0xae, 0x67, 0x53, - 0xfd, 0x8d, 0xfe, 0x39, 0x69, 0x19, 0xfb, 0x4f, 0xc2, 0x9f, - 0x15, 0xe0, 0x75, 0x31, 0x69, 0x92, 0x4b, 0xff, 00, 0xa0, - 0x3, 0x5c, 0xdd, 0xd7, 0xec, 0xf7, 0xf1, 0x4a, 0xc7, 0x3f, - 0x68, 0xf8, 0x6f, 0xe2, 0xd8, 0x71, 0xd7, 0x7e, 0x87, 0x72, - 0x3f, 0xf6, 0x4a, 0x3, 0x53, 0xda, 0x2c, 0xbf, 0xe0, 0xa7, - 0x9f, 0xb4, 0x7d, 0x96, 0x3f, 0xe2, 0xbf, 0x17, 00, 0x76, - 0x9f, 0x4a, 0xb4, 0x6c, 0xff, 00, 0xe4, 0x2a, 0xea, 0x34, - 0xff, 00, 0xf8, 0x2b, 0x87, 0xed, 0x5, 0x64, 0x81, 0x65, - 0xd4, 0x3c, 0x3f, 0x7d, 0x8e, 0xf7, 0x1a, 0x4a, 0x82, 0x7f, - 0xef, 0x96, 0x5a, 0xf9, 0x4e, 0xf7, 0xe1, 0xaf, 0x8b, 0xf4, - 0xd0, 0x4d, 0xdf, 0x85, 0x75, 0xbb, 0x50, 0x3a, 0xf9, 0xfa, - 0x74, 0xc9, 0x8f, 0xcd, 0x6b, 0xe, 0xeb, 0x4f, 0xba, 0xb2, - 0x38, 0xb8, 0xb6, 0x9a, 0x3, 0xe9, 0x2c, 0x65, 0x7f, 0x9d, - 0x1, 0x76, 0x7d, 0xe7, 0xa5, 0x7f, 0xc1, 0x66, 0x3e, 0x30, - 0xda, 0x15, 0xfb, 0x6f, 0x87, 0x7c, 0x2b, 0x7e, 0x7, 0x5f, - 0xf4, 0x79, 0xa2, 0xcf, 0xe5, 0x25, 0x75, 0x76, 0x1f, 0xf0, - 0x5b, 0x3f, 0x18, 0xc5, 0x8f, 0xb6, 0xfc, 0x33, 0xd0, 0xee, - 0x3d, 0x7c, 0x8d, 0x42, 0x68, 0xbf, 0x9a, 0xb5, 0x7e, 0x6c, - 0xe4, 0x52, 0xd1, 0x60, 0xbb, 0x3f, 0x53, 0x74, 0xef, 0xf8, - 0x2d, 0xd0, 0x38, 0xfb, 0x7f, 0xc2, 0x82, 0xbe, 0xbf, 0x66, - 0xd6, 0xb3, 0xfc, 0xe1, 0x15, 0xd2, 0xd9, 0xff, 00, 0xc1, - 0x6c, 0xfc, 0x1a, 0xe0, 0x7d, 0xaf, 0xe1, 0xae, 0xbb, 0x11, - 0xef, 0xe4, 0xdf, 0x42, 0xff, 00, 0xcc, 0x2d, 0x7e, 0x46, - 0xd1, 0x45, 0x82, 0xec, 0xfd, 0x8f, 0xb1, 0xff, 00, 0x82, - 0xd2, 0xfc, 0x29, 0x9b, 0x2, 0xe7, 0xc1, 0x9e, 0x2e, 0xb6, - 0xf5, 0x2b, 0x1d, 0xb3, 0x8f, 0xfd, 0x1c, 0x2b, 0xa4, 0xd3, - 0xbf, 0xe0, 0xb0, 0xff, 00, 0x2, 0xef, 0x31, 0xf6, 0x9b, - 0x5f, 0x14, 0xd8, 0x13, 0xff, 00, 0x3d, 0x74, 0xd4, 0x70, - 0x3f, 0xef, 0x89, 0xd, 0x7e, 0x26, 0x51, 0x45, 0x87, 0xcc, - 0xcf, 0xdd, 0xdd, 0x3f, 0xfe, 0xa, 0xad, 0xfb, 0x3a, 0x5f, - 0x85, 0xdd, 0xe2, 0xbb, 0xfb, 0x46, 0x3f, 0xc3, 0x71, 0xa3, - 0xdc, 0x8c, 0x7e, 0x21, 0x8, 0xae, 0xb7, 0x4b, 0xff, 00, - 0x82, 0x89, 0x7e, 0xce, 0xfa, 0xaa, 0x6, 0x4f, 0x89, 0xba, - 0x6d, 0xb9, 0x3f, 0xc3, 0x75, 0xc, 0xd1, 0x1f, 0xd5, 0x2b, - 0xf9, 0xf5, 0xa2, 0x8b, 0x7, 0x31, 0xfd, 0x18, 0x69, 0xdf, - 0xb6, 0x8f, 0xc0, 0x8d, 0x51, 0x41, 0x83, 0xe2, 0xcf, 0x84, - 0xf9, 0xe8, 0x25, 0xd4, 0xe3, 0x88, 0xfe, 0x4e, 0x41, 0xae, - 0xa3, 0x4a, 0xfd, 0xa0, 0xbe, 0x18, 0x6b, 0x60, 0x7d, 0x83, - 0xe2, 0x1f, 0x85, 0xee, 0xf3, 0xff, 00, 0x3c, 0xb5, 0x7b, - 0x73, 0xff, 00, 0xb3, 0xd7, 0xf3, 0x4f, 0x45, 0x2b, 0x7, - 0x31, 0xfd, 0x3c, 0xd9, 0xf8, 0xff, 00, 0xc2, 0xfa, 0x81, - 0xc5, 0xaf, 0x89, 0x34, 0x8b, 0x92, 0x7b, 0x43, 0x7d, 0x13, - 0xff, 00, 0x26, 0xad, 0x58, 0x75, 0x5b, 0x2b, 0x83, 0x88, - 0xaf, 0x2d, 0xe4, 0x3e, 0x89, 0x2a, 0x9f, 0xeb, 0x5f, 0xcb, - 0x86, 0x7, 0xa5, 0x5a, 0xb4, 0xd5, 0x2f, 0x34, 0xf6, 0x6, - 0xd6, 0xee, 0x7b, 0x62, 0x3a, 0x18, 0x65, 0x64, 0xfe, 0x46, - 0x8b, 0xf, 0x98, 0xfe, 0xa3, 0x83, 0x3, 0xd0, 0x83, 0x4b, - 0x5f, 0xcc, 0x86, 0x9f, 0xf1, 0x5b, 0xc6, 0xda, 0x49, 0x6, - 0xc7, 0xc6, 0x3a, 0xfd, 0x91, 0x1d, 0xd, 0xbe, 0xa9, 0x3c, - 0x7f, 0xc9, 0xeb, 0xa8, 0xd2, 0xff, 00, 0x6a, 0x6f, 0x8c, - 0x5a, 0x2c, 0x8a, 0xf6, 0x9f, 0x14, 0x3c, 0x5a, 0x85, 0x7a, - 0x6f, 0xd6, 0x27, 0x90, 0x7e, 0x4c, 0xc4, 0x51, 0x60, 0xe6, - 0x3f, 0xa4, 0x7a, 0x2b, 0xf9, 0xe6, 0xb3, 0xfd, 0xbf, 0x3f, - 0x68, 0x4b, 0x12, 0xbe, 0x5f, 0xc5, 0x5d, 0x71, 0xb6, 0xf4, - 0x12, 0x98, 0xe4, 0x1f, 0xf8, 0xf2, 0x1a, 0xe8, 0xec, 0x7f, - 0xe0, 0xa6, 0x9f, 0xb4, 0x7d, 0x96, 0xd1, 0xff, 00, 0xb, - 0xd, 0xee, 0x15, 0x7b, 0x4f, 0xa6, 0x5a, 0x36, 0x7e, 0xa7, - 0xca, 0xcd, 0x16, 0xe, 0x64, 0x7e, 0xfb, 0x51, 0x5f, 0x86, - 0x76, 0x3f, 0xf0, 0x56, 0xcf, 0xda, 0x12, 0xce, 0x35, 0x57, - 0xd5, 0x34, 0x2b, 0xbc, 0x7f, 0x14, 0xfa, 0x42, 0x64, 0xff, - 00, 0xdf, 0x24, 0x56, 0xdd, 0x97, 0xfc, 0x16, 0x33, 0xe3, - 0xad, 0xb6, 0x4, 0xda, 0x7f, 0x84, 0x2e, 0xfd, 0xe4, 0xd3, - 0x66, 0x53, 0xff, 00, 0x8e, 0xce, 0x28, 0xb0, 0x5d, 0x1f, - 0xb6, 0x34, 0x57, 0xe3, 0xb6, 0x9d, 0xff, 00, 0x5, 0xa8, - 0xf8, 0x9b, 0x2, 0xa8, 0xbd, 0xf0, 0x3f, 0x85, 0xee, 0xdb, - 0xb9, 0x8d, 0xae, 0x22, 0xcf, 0xfe, 0x3e, 0x6b, 0xa5, 0xd3, - 0xff, 00, 0xe0, 0xb7, 0x1a, 0xfc, 0x78, 0xfb, 0x77, 0xc2, - 0xbd, 0x36, 0x7f, 0xfa, 0xf7, 0xd5, 0xe4, 0x8f, 0xf9, 0xc4, - 0xd4, 0x58, 0x77, 0x47, 0xeb, 0x25, 0x15, 0xf9, 0x8b, 0xa5, - 0x7f, 0xc1, 0x6e, 0x34, 0x77, 0x51, 0xfd, 0xa5, 0xf0, 0xae, - 0xfa, 0x16, 0xef, 0xf6, 0x5d, 0x5d, 0x24, 0x1f, 0xf8, 0xf4, - 0x6b, 0x5d, 0xd, 0xaf, 0xfc, 0x16, 0xbf, 0xe1, 0xe3, 0x91, - 0xf6, 0x9f, 0x87, 0xbe, 0x27, 0x88, 0x7a, 0xc5, 0x35, 0xb3, - 0xff, 00, 0x37, 0x5a, 0x2, 0xe8, 0xfd, 0x19, 0xa2, 0xbe, - 0x1, 0xd3, 0x7f, 0xe0, 0xb3, 0xbf, 0x7, 0xae, 0xdc, 0xb, - 0xaf, 0xc, 0x78, 0xc2, 0xc4, 0x7f, 0x79, 0xed, 0xad, 0x9c, - 0x7f, 0xe3, 0xb3, 0x1a, 0xeb, 0x74, 0xef, 0xf8, 0x2b, 0x87, - 0xec, 0xfb, 0x79, 0x8f, 0x3b, 0x50, 0xd7, 0xac, 0x49, 0xff, - 00, 0x9e, 0xfa, 0x4b, 0x9c, 0x7f, 0xdf, 0x24, 0xd2, 0xb, - 0xa3, 0xed, 0x1a, 0x2b, 0xe5, 0x5d, 0x33, 0xfe, 0xa, 0x7d, - 0xfb, 0x39, 0xea, 0x78, 0x1f, 0xf0, 0x9d, 0x3d, 0xa1, 0x3d, - 0xae, 0xb4, 0xcb, 0x94, 0xfd, 0x7c, 0xbc, 0x57, 0x57, 0xa6, - 0xfe, 0xdf, 0x1f, 0xb3, 0xee, 0xa8, 0x7, 0x95, 0xf1, 0x4f, - 0x42, 0x8c, 0x9e, 0xd7, 0x12, 0x3c, 0x47, 0xff, 00, 0x1e, - 0x51, 0x40, 0xcf, 0x7f, 0xa2, 0xbc, 0x9b, 0x4e, 0xfd, 0xad, - 0x7e, 0xb, 0x6a, 0xc4, 0xb, 0x5f, 0x8a, 0x7e, 0x13, 0x90, - 0x9e, 0xcd, 0xab, 0xc2, 0xa7, 0xf5, 0x61, 0x5d, 0x4d, 0x87, - 0xc6, 0x4f, 00, 0xea, 0xb8, 0xfb, 0x17, 0x8d, 0xbc, 0x3b, - 0x77, 0x9e, 0x9e, 0x4e, 0xab, 0x3, 0x67, 0xf2, 0x7a, 00, - 0xec, 0x28, 0xac, 0x9b, 0x7f, 0x17, 0x68, 0x57, 0x78, 0xf2, - 0x35, 0xad, 0x3a, 0x6c, 0xff, 00, 0xcf, 0x3b, 0xa8, 0xdb, - 0xf9, 0x1a, 0xd0, 0x8a, 0xf2, 0x9, 0xff, 00, 0xd5, 0xcf, - 0x1c, 0x9f, 0xee, 0xb8, 0x34, 0x1, 0x35, 0x14, 0x51, 0x40, - 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, - 0x51, 0x40, 0x5, 0x23, 0x28, 0x60, 0x41, 00, 0x83, 0xd4, - 0x1a, 0x5a, 0x28, 0x3, 0x97, 0xd5, 0xbe, 0x19, 0x78, 0x5b, - 0x5b, 0x2c, 0xd7, 0x5a, 0x25, 0xae, 0xf6, 0xeb, 0x24, 0x4b, - 0xe5, 0x31, 0xfc, 0x57, 0x15, 0xc5, 0xea, 0xff, 00, 0xb3, - 0x7e, 0x83, 0x76, 0x4b, 0x58, 0x5e, 0xdd, 0xd8, 0x1e, 0xca, - 0xc4, 0x4a, 0xbf, 0xae, 0xf, 0xeb, 0x5e, 0xb9, 0x45, 0x79, - 0xd5, 0xb2, 0xec, 0x1e, 0x23, 0xf8, 0x94, 0x93, 0xf9, 0x59, - 0xfd, 0xe8, 0xc2, 0x74, 0x29, 0x4f, 0xe2, 0x8a, 0x3e, 0x7b, - 0xbd, 0xfd, 0x99, 0xb5, 0x38, 0xf2, 0x6d, 0x35, 0x9b, 0x59, - 0x87, 0x61, 0x34, 0x4d, 0x1f, 0xf2, 0xdd, 0x58, 0x17, 0xbf, - 0xb3, 0xff, 00, 0x8b, 0xad, 0x9, 0xf2, 0xe0, 0xb5, 0xbb, - 0x3, 0xbc, 0x33, 0x8f, 0xfd, 0x9b, 0x15, 0xf5, 0x1d, 0x15, - 0xe4, 0x54, 0xe1, 0xcc, 0x4, 0xfe, 0x14, 0xd7, 0xa3, 0xff, - 00, 0x3b, 0x9c, 0xb2, 0xc0, 0x51, 0x7b, 0x68, 0x7c, 0x87, - 0x3f, 0xc2, 0x3f, 0x18, 0x5b, 0xe7, 0x76, 0x83, 0x72, 0xc3, - 0xd5, 0xa, 0xb7, 0xf2, 0x35, 0x49, 0xfe, 0x1d, 0x78, 0xa2, - 0x33, 0xcf, 0x87, 0xf5, 0x1f, 0xc2, 0xd9, 0xcf, 0xf4, 0xaf, - 0xb2, 0x68, 0xae, 0x27, 0xc2, 0xd8, 0x6e, 0x95, 0x25, 0xf8, - 0x7f, 0x91, 0x93, 0xcb, 0xa1, 0xd2, 0x4c, 0xf8, 0xd0, 0x7c, - 0x3d, 0xf1, 0x3b, 0x1e, 0x3c, 0x3f, 0xa9, 0x7f, 0xe0, 0x2b, - 0xff, 00, 0x85, 0x5c, 0xb7, 0xf8, 0x53, 0xe2, 0xeb, 0xaf, - 0xb9, 0xa0, 0x5d, 0x8f, 0xfa, 0xe8, 0x2, 0x7f, 0xe8, 0x44, - 0x57, 0xd7, 0xf4, 0x50, 0xb8, 0x5b, 0xf, 0xd6, 0xa4, 0xbf, - 0xf, 0xf2, 0x5, 0x97, 0x43, 0xac, 0x99, 0xf2, 0xe6, 0x9f, - 0xf0, 0x3, 0xc5, 0xb7, 0xa4, 0x79, 0xb0, 0x5b, 0x59, 0x2f, - 0xac, 0xf3, 0x83, 0xfa, 0x2e, 0x6b, 0xa9, 0xd2, 0xbf, 0x66, - 0x59, 0x4b, 0x2b, 0x6a, 0x5a, 0xda, 0x2a, 0xf7, 0x4b, 0x58, - 0x72, 0x7f, 0xef, 0xa6, 0x3f, 0xd2, 0xbd, 0xea, 0x8a, 0xef, - 0xa5, 0xc3, 0xb8, 0xa, 0x7a, 0xca, 0x2e, 0x5e, 0xaf, 0xfc, - 0xac, 0x6d, 0x1c, 0xd, 0x18, 0xee, 0xae, 0x71, 0x5e, 0x1e, - 0xf8, 0x3d, 0xe1, 0x6f, 0xe, 0xec, 0x78, 0xf4, 0xd5, 0xbc, - 0xb8, 0x5e, 0x7c, 0xeb, 0xc3, 0xe6, 0x1c, 0xfa, 0xe0, 0xf0, - 0x3f, 0x1, 0x5d, 0xa0, 0x1, 0x40, 00, 0x60, 0xe, 0x80, - 0x52, 0xd1, 0x5e, 0xfd, 0x1a, 0x14, 0xb0, 0xf1, 0xe5, 0xa5, - 0x15, 0x15, 0xe4, 0x8e, 0xd8, 0xc2, 0x30, 0x56, 0x8a, 0xb0, - 0x51, 0x45, 0x15, 0xb9, 0x61, 0x45, 0x14, 0x50, 0x1, 0x45, - 0x14, 0x50, 0x7, 0x1, 0xf1, 0xa6, 0xef, 0xec, 0xde, 0x11, - 0x7f, 0x73, 0x5f, 0xa, 0x6b, 0x72, 0x79, 0x97, 0x97, 0xc, - 0x7b, 0xb1, 0xaf, 0xb5, 0x7f, 0x68, 0x1b, 0x9f, 0x27, 0xc3, - 0x8, 0x9e, 0xb9, 0x35, 0xf1, 0x1e, 0xa8, 0xfb, 0xa4, 0x94, - 0xfa, 0xb1, 0xaf, 0xce, 0xf3, 0xd9, 0x73, 0x63, 0x23, 0x1e, - 0xc8, 0xfc, 0xfb, 0x89, 0x67, 0xef, 0x24, 0x78, 0x67, 0xc7, - 0x2b, 0x8d, 0x9a, 0x5c, 0xe3, 0xfd, 0x93, 0xfc, 0xab, 0xf5, - 0x97, 0xf6, 0x7f, 0xd2, 0x46, 0x85, 0xf0, 0x37, 0xc0, 0x16, - 0xb, 0x9c, 0x41, 0xa1, 0x59, 0xaf, 0x3e, 0xbe, 0x4a, 0xe6, - 0xbf, 0x22, 0xfe, 0x38, 0x39, 0x9a, 0x23, 0xa, 0xe5, 0x9a, - 0x46, 0x8, 00, 0xea, 0x49, 0xe2, 0xbf, 0x68, 0x3c, 0x33, - 0x62, 0x9a, 0x5f, 0x86, 0xf4, 0xab, 0x38, 0xc6, 0xd4, 0xb7, - 0xb4, 0x8a, 0x25, 0x7, 0xb0, 0x54, 0x3, 0xfa, 0x57, 0xd5, - 0xe5, 0x6a, 0xd4, 0x51, 0x5c, 0x1d, 0x1b, 0x61, 0x27, 0x2e, - 0xf2, 0x66, 0x9d, 0x14, 0x51, 0x5e, 0xc9, 0xf7, 0xe7, 0xe7, - 0xef, 0xc5, 0xdf, 0x13, 0x3f, 0x8b, 0x3e, 0x26, 0xf8, 0x82, - 0xf9, 0xf8, 0xb, 0x72, 0x6d, 0x90, 0x7a, 0x2c, 0x7f, 0x20, - 0xff, 00, 0xd0, 0x49, 0xfc, 0x6b, 0xdc, 0xbf, 0x64, 0xbf, - 0x8, 0xf9, 0x76, 0xd7, 0xda, 0xe4, 0xa9, 0xc9, 0x3e, 0x54, - 0x44, 0xfe, 0xb5, 0xf3, 0x7d, 0xfc, 0x6f, 0xa9, 0xf8, 0xdf, - 0x58, 0x86, 0x31, 0xba, 0x49, 0x35, 0x3b, 0x85, 00, 0x7a, - 0xf9, 0xad, 0x5f, 0x7c, 0x7c, 0x35, 0xf0, 0xd2, 0x78, 0x53, - 0xc1, 0x9a, 0x6d, 0x82, 0xa0, 0x46, 0x58, 0x83, 0x3f, 0xfb, - 0xc4, 0x57, 0xc1, 0x65, 0x94, 0x25, 0x5f, 0x30, 0x95, 0x59, - 0xfd, 0x9b, 0xbf, 0x9b, 0x3f, 0x39, 0xe1, 0xfa, 0x6f, 0x17, - 0x89, 0x9e, 0x2a, 0x7d, 0x2e, 0xfe, 0x6c, 0xea, 0x28, 0xa2, - 0x8a, 0xfb, 0xd3, 0xf4, 0x60, 0xa2, 0x8a, 0x28, 00, 0xa2, - 0x9a, 0xe8, 0x1c, 0x60, 0xe7, 0xd7, 0x83, 0x8a, 0x5c, 0x7b, - 0x9a, 00, 0xaf, 0x73, 0xa6, 0xda, 0x5e, 0x29, 0x17, 0x16, - 0xb0, 0xce, 0xf, 0x69, 0x23, 0xd, 0xfc, 0xc5, 0x4f, 0x1c, - 0x49, 0xc, 0x6b, 0x1c, 0x68, 0xb1, 0xc6, 0x80, 0x2a, 0xaa, - 0x8c, 00, 0x7, 0x40, 0x5, 0x3a, 0x8a, 00, 0x28, 0xa2, - 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, - 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, - 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x46, 0x50, 0xc3, 0x4, - 0x2, 0x3d, 0xd, 0x67, 0x5e, 0x78, 0x6b, 0x48, 0xd4, 0x3f, - 0xe3, 0xeb, 0x4a, 0xb2, 0xb9, 0xff, 00, 0xae, 0xd6, 0xe8, - 0xff, 00, 0xcc, 0x56, 0x95, 0x14, 0x1, 0xc5, 0x6a, 0x9f, - 0x4, 0xfe, 0x1e, 0xeb, 0x60, 0x8d, 0x43, 0xc0, 0xde, 0x1c, - 0xbd, 0xdd, 0xd7, 0xcf, 0xd2, 0xa0, 0x7c, 0xfe, 0x6b, 0x5c, - 0xa6, 0xa7, 0xfb, 0x1f, 0x7c, 0x10, 0xd6, 0x14, 0x8b, 0xbf, - 0x85, 0x5e, 0x13, 0x70, 0x7a, 0xec, 0xd2, 0xa2, 0x4f, 0xfd, - 0x4, 0xa, 0xf6, 0xa, 0x28, 0x3, 0xe7, 0x4d, 0x57, 0xfe, - 0x9, 0xe5, 0xfb, 0x3c, 0x6a, 0xe0, 0x89, 0x7e, 0x18, 0x69, - 0x50, 0xe7, 0xfe, 0x7d, 0x64, 0x9a, 0xf, 0xfd, 0x1, 0xc5, - 0x72, 0xb7, 0x9f, 0xf0, 0x4a, 0xff, 00, 0xd9, 0xbe, 0xe8, - 0xb1, 0x5f, 0x5, 0xdd, 0xdb, 0x13, 0xff, 00, 0x3c, 0x75, - 0xab, 0xce, 0x3f, 0x3, 0x29, 0x15, 0xf5, 0xad, 0x14, 0x1, - 0xf1, 0x76, 0xa3, 0xff, 00, 0x4, 0x8e, 0xfd, 0x9f, 0x6f, - 0x50, 0xac, 0x1a, 0x7e, 0xbf, 0xa7, 0x9f, 0xef, 0x41, 0xab, - 0xbb, 0x1f, 0xfc, 0x7c, 0x35, 0x72, 0xba, 0x97, 0xfc, 0x11, - 0x97, 0xe0, 0xe5, 0xca, 0x9f, 0xb1, 0x78, 0x93, 0xc5, 0xd6, - 0x4d, 0xfe, 0xd5, 0xd5, 0xbc, 0x80, 0x7e, 0x70, 0x8a, 0xfb, - 0xee, 0x8a, 0x5, 0x64, 0x7e, 0x6d, 0xea, 0x1f, 0xf0, 0x44, - 0xdf, 0x5, 0xbc, 0x6d, 0xf6, 0x1f, 0x89, 0x1a, 0xf4, 0x2f, - 0xfc, 0x3f, 0x68, 0xb3, 0x82, 0x40, 0x3f, 0x2d, 0xb5, 0xc8, - 0xea, 0x1f, 0xf0, 0x44, 0x5b, 0x80, 0x18, 0xd8, 0xfc, 0x58, - 0x8c, 0x9f, 0xe1, 0x5b, 0x8d, 0x10, 0x8f, 0xcc, 0x89, 0xbf, - 0xa5, 0x7e, 0xa9, 0x51, 0x4c, 0x2c, 0x8f, 0xc8, 0x5b, 0xff, - 00, 0xf8, 0x22, 0x7f, 0x8e, 0xe2, 0xc, 0x6c, 0xfe, 0x22, - 0xf8, 0x7e, 0xe3, 0xfb, 0xa2, 0x6b, 0x49, 0xe3, 0xcf, 0xe5, - 0xba, 0xb9, 0x1d, 0x43, 0xfe, 0x8, 0xd9, 0xf1, 0xba, 0xd9, - 0x9b, 0xec, 0xba, 0xcf, 0x83, 0xef, 0x10, 0x74, 0xcd, 0xfc, - 0xf1, 0xb1, 0xfc, 0xc, 0x18, 0xfd, 0x6b, 0xf6, 0xa2, 0x8a, - 0x2e, 0x16, 0x47, 0xe1, 0xd5, 0xd7, 0xfc, 0x12, 0x2b, 0xf6, - 0x81, 0xb7, 0x56, 0x29, 0x69, 0xe1, 0xcb, 0x9c, 0x76, 0x8b, - 0x56, 0x19, 0x3f, 0xf7, 0xd2, 0xa, 0xe6, 0x35, 0x1f, 0xf8, - 0x25, 0xef, 0xed, 0x1b, 0x60, 0x5b, 0x6f, 0x81, 0xa2, 0xbc, - 0xb, 0xde, 0xdb, 0x55, 0xb5, 0x39, 0xfa, 0x66, 0x40, 0x6b, - 0xf7, 0xb2, 0x8a, 0x2e, 0x2e, 0x54, 0x7f, 0x3d, 0x77, 0xdf, - 0xf0, 0x4f, 0xdf, 0xda, 0x1b, 0x4f, 0x24, 0x49, 0xf0, 0xb3, - 0x59, 0x7c, 0x77, 0x80, 0xc5, 0x2f, 0xfe, 0x82, 0xe6, 0xb9, - 0x2d, 0x53, 0xf6, 0x4e, 0xf8, 0xd1, 0xa3, 0xbb, 0x25, 0xd7, - 0xc2, 0xdf, 0x16, 0x23, 0x2f, 0x5f, 0x2f, 0x48, 0x9a, 0x4f, - 0xfd, 0x5, 0x4d, 0x7f, 0x48, 0x34, 0x51, 0x70, 0xe5, 0x3f, - 0x99, 0x4d, 0x47, 0xe1, 0xf, 0x8e, 0xf4, 0x76, 0x2b, 0x7d, - 0xe0, 0xaf, 0x11, 0x59, 0xb0, 0xea, 0x27, 0xd2, 0xa7, 0x4c, - 0x7e, 0x69, 0x5c, 0xf5, 0xe6, 0x8d, 0xa8, 0x69, 0xcc, 0x56, - 0xee, 0xc6, 0xe6, 0xd4, 0x8e, 0xa2, 0x68, 0x59, 0x3f, 0x98, - 0xaf, 0xea, 0x2c, 0x80, 0x7a, 0x8a, 0xad, 0x71, 0xa5, 0x59, - 0x5d, 0xff, 00, 0xaf, 0xb3, 0xb7, 0x9b, 0xfe, 0xba, 0x44, - 0xad, 0xfc, 0xc5, 0x17, 0xe, 0x53, 0xf9, 0x70, 0xc8, 0xf5, - 0xa5, 0xaf, 0xe9, 0xe6, 0xeb, 0xe1, 0xf7, 0x85, 0xaf, 0xb3, - 0xf6, 0x9f, 0xd, 0x69, 0x17, 0x19, 0xeb, 0xe6, 0xd8, 0x44, - 0xd9, 0xfc, 0xd6, 0xb9, 0xcd, 0x4f, 0xf6, 0x78, 0xf8, 0x5b, - 0xac, 0xe7, 0xed, 0xdf, 0xe, 0xbc, 0x2d, 0x73, 0x9e, 0xbe, - 0x66, 0x91, 0x1, 0xcf, 0xfe, 0x39, 0x45, 0xc5, 0xca, 0x7f, - 0x35, 0x34, 0x57, 0xf4, 0x53, 0xa8, 0xfe, 0xc4, 0x7f, 0x1, - 0x75, 0x56, 0x2d, 0x3f, 0xc2, 0x7f, 0xb, 0x86, 0x3d, 0x4c, - 0x36, 0xb, 0x17, 0xfe, 0x83, 0x8a, 0xe5, 0xb5, 0x3f, 0xf8, - 0x26, 0xf7, 0xec, 0xeb, 0xaa, 0x67, 0x77, 0xc3, 0x8b, 0x4b, - 0x62, 0x7f, 0xe7, 0xd6, 0xee, 0xe2, 0x2f, 0xe5, 0x25, 0x17, - 0xe, 0x53, 0xf9, 0xff, 00, 0xa2, 0xbf, 0x75, 0x35, 0x5f, - 0xf8, 0x24, 0xf7, 0xec, 0xf1, 0xa8, 0xee, 0x31, 0x78, 0x7f, - 0x56, 0xd3, 0xc9, 0xef, 0x6b, 0xab, 0xcd, 0xc7, 0xe0, 0xe5, - 0xab, 0x91, 0xd4, 0x3f, 0xe0, 0x8d, 0x9f, 0x5, 0x2e, 0x77, - 0x7d, 0x9b, 0x5a, 0xf1, 0x75, 0x91, 0x3d, 0x36, 0xdf, 0x42, - 0xe0, 0x7f, 0xdf, 0x50, 0xd3, 0xb8, 0x72, 0x9f, 0x8b, 0x34, - 0x57, 0xec, 0x35, 0xd7, 0xfc, 0x11, 0x53, 0xe1, 0x9b, 0x83, - 0xf6, 0x7f, 0x1e, 0x78, 0xae, 0x13, 0xdb, 0xcc, 0x5b, 0x67, - 0x3, 0xf2, 0x8c, 0x57, 0x3f, 0xa8, 0x7f, 0xc1, 0x12, 0x7c, - 0x3a, 0xc0, 0xfd, 0x87, 0xe2, 0x8e, 0xa9, 0x19, 0xec, 0x2e, - 0x34, 0xb8, 0xdf, 0xf5, 0xe, 0x28, 0xb8, 0xac, 0xcf, 0xc9, - 0x9a, 0x2b, 0xf4, 0xeb, 0x51, 0xff, 00, 0x82, 0x23, 0x6a, - 0xe1, 0x98, 0xd8, 0x7c, 0x56, 0xb2, 0x65, 0xec, 0xb7, 0x1a, - 0x33, 0x83, 0xf9, 0x89, 0x4f, 0xf2, 0xae, 0x5b, 0x52, 0xff, - 00, 0x82, 0x2b, 0x7c, 0x4a, 0x81, 0x8f, 0xd8, 0x7c, 0x75, - 0xe1, 0x8b, 0xb5, 0x1d, 0x3c, 0xe4, 0xb8, 0x88, 0x9f, 0xc9, - 0x1a, 0x8b, 0x85, 0x99, 0xf9, 0xdd, 0x49, 0x5f, 0x73, 0xea, - 0x7f, 0xf0, 0x47, 0x7f, 0x8e, 0x76, 0x84, 0xfd, 0x92, 0xf7, - 0xc2, 0xb7, 0xeb, 0xfe, 0xce, 0xa3, 0x22, 0x1f, 0xfc, 0x7a, - 0x2a, 0xe3, 0xb5, 0x4f, 0xf8, 0x25, 0x87, 0xed, 0x1b, 0xa7, - 0x48, 0x56, 0x2f, 0x7, 0xd9, 0xea, 00, 0x7f, 0x1d, 0xae, - 0xaf, 0x6d, 0x83, 0xff, 00, 0x7d, 0xba, 0x9a, 0x2e, 0x16, - 0x67, 0xc9, 0x40, 0xed, 0x39, 0x1c, 0x1f, 0x51, 0x5a, 0xda, - 0x77, 0x8b, 0xb5, 0xdd, 0x1d, 0x81, 0xb0, 0xd6, 0xb5, 0x1b, - 0x12, 0x3a, 0x1b, 0x6b, 0xb9, 0x23, 0xc7, 0xe4, 0x45, 0x7b, - 0xe5, 0xdf, 0xfc, 0x13, 0x8f, 0xf6, 0x8e, 0xb3, 0x7d, 0xad, - 0xf0, 0xc2, 0xfe, 0x4f, 0x78, 0x6f, 0x2d, 0x5c, 0x7e, 0x92, - 0xd6, 0xe, 0xa3, 0xfb, 0xc, 0x7c, 0x7e, 0xd2, 0x89, 0x13, - 0xfc, 0x28, 0xf1, 0x23, 0x63, 0xbc, 0x16, 0xbe, 0x70, 0xfc, - 0xd0, 0x9a, 0x3, 0x53, 0x85, 0xb0, 0xf8, 0xf3, 0xf1, 0x2f, - 0x4b, 0x60, 0xd6, 0x9f, 0x10, 0x7c, 0x53, 0x6e, 0x47, 0x4d, - 0x9a, 0xcd, 0xc0, 0xc7, 0xfe, 0x3f, 0x5d, 0x4e, 0x9f, 0xfb, - 0x63, 0xfc, 0x71, 0xd2, 0xd9, 0x4d, 0xbf, 0xc5, 0x5f, 0x15, - 0x64, 0x74, 0xf3, 0x75, 0x29, 0x25, 0x1f, 0x93, 0x13, 0x58, - 0xfa, 0xaf, 0xec, 0xcb, 0xf1, 0x73, 0x44, 0x24, 0x5e, 0xfc, - 0x32, 0xf1, 0x64, 0x4, 0x7a, 0xe8, 0xd7, 0x7, 0xf9, 0x25, - 0x73, 0x1a, 0x9f, 0xc3, 0x3f, 0x18, 0x68, 0x80, 0x9d, 0x47, - 0xc2, 0x7a, 0xe5, 0x80, 0x1d, 0x4d, 0xd6, 0x9b, 0x34, 0x7f, - 0xfa, 0x12, 0x8a, 0x3, 0x53, 0xda, 0x6c, 0x7f, 0xe0, 0xa2, - 0x5f, 0xb4, 0x55, 0x86, 0xd0, 0xbf, 0x13, 0xf5, 0x39, 0x40, - 0xed, 0x3c, 0x16, 0xf2, 0x7f, 0x38, 0xeb, 0xa8, 0xd3, 0xbf, - 0xe0, 0xa9, 0xdf, 0xb4, 0x66, 0x9e, 0x81, 0x4f, 0x8c, 0x6d, - 0x2e, 0xc0, 0xff, 00, 0x9f, 0x8d, 0x22, 0xd5, 0x89, 0xfc, - 0x42, 0x3, 0x5f, 0x28, 0x4f, 0x65, 0x71, 0x6a, 0x71, 0x34, - 0x12, 0xc2, 0x7f, 0xe9, 0xa2, 0x15, 0xfe, 0x75, 0x6, 0x47, - 0xad, 0x1, 0x76, 0x7d, 0xb1, 0x67, 0xff, 00, 0x5, 0x79, - 0xf8, 0xff, 00, 0x6a, 0xa0, 0x49, 0x37, 0x86, 0xae, 0xcf, - 0xf7, 0xa6, 0xd2, 0x70, 0x4f, 0xfd, 0xf2, 0xeb, 0x5b, 0x96, - 0x3f, 0xf0, 0x59, 0x6f, 0x8d, 0x76, 0xe0, 0xb, 0x8d, 0x7, - 0xc1, 0xb7, 0x63, 0xb9, 0x36, 0x37, 0x8, 0x4f, 0xe5, 0x3d, - 0x7c, 0x19, 0x45, 0x16, 0xb, 0xb3, 0xf4, 0x7f, 0x4a, 0xff, - 00, 0x82, 0xd8, 0x78, 0xe6, 0x8, 0xf1, 0xa8, 0xfc, 0x39, - 0xd0, 0x2f, 0x1f, 0xfb, 0xd6, 0xf7, 0x93, 0x40, 0x3f, 0x22, - 0x1e, 0xba, 0x8d, 0x27, 0xfe, 0xb, 0x73, 0x37, 0xfc, 0xc4, - 0xfe, 0x14, 0x47, 0xff, 00, 0x6e, 0x9a, 0xc9, 0xff, 00, - 0xd9, 0xa1, 0xaf, 0xcb, 0x8a, 0x28, 0xb0, 0x5d, 0x9f, 0xad, - 0xfa, 0x5f, 0xfc, 0x16, 0xcf, 0xc2, 0x12, 0x11, 0xfd, 0xa3, - 0xf0, 0xd3, 0x5b, 0xb7, 0x1d, 0xcd, 0xad, 0xf4, 0x32, 0xff, - 00, 0xe8, 0x41, 0x6b, 0xa8, 0xd3, 0x3f, 0xe0, 0xb3, 0xdf, - 0x8, 0xae, 0xdc, 0xb, 0xbf, 0xa, 0xf8, 0xb6, 0xc4, 0x7f, - 0x78, 0xc1, 0x6f, 0x27, 0xf2, 0x96, 0xbf, 0x1a, 0x28, 0xa2, - 0xc1, 0xcc, 0xcf, 0xdc, 0x3b, 0x1f, 0xf8, 0x2b, 0xb7, 0xec, - 0xff, 00, 0x76, 0x47, 0x9d, 0x75, 0xe2, 0x3b, 0x2f, 0x79, - 0xb4, 0x92, 0x7f, 0xf4, 0x6, 0x6a, 0xdc, 0xb3, 0xff, 00, - 0x82, 0xaa, 0x7e, 0xce, 0x57, 0x6c, 0x14, 0xf8, 0xbe, 0xfa, - 0xdf, 0x3d, 0xe6, 0xd1, 0xae, 0x80, 0x1f, 0x94, 0x66, 0xbf, - 0x8, 0x28, 0xa2, 0xc3, 0xe6, 0x3f, 0xa0, 0xd, 0x3f, 0xfe, - 0xa, 0x47, 0xfb, 0x39, 0x6a, 0x2c, 0x15, 0x3e, 0x25, 0x5a, - 0x42, 0x4f, 0xfc, 0xfc, 0x59, 0x5d, 0x44, 0x3f, 0x36, 0x88, - 0xa, 0xea, 0x6c, 0x3f, 0x6d, 0xef, 0x80, 0x9a, 0x88, 0x5f, - 0x27, 0xe2, 0xcf, 0x85, 0x81, 0x6e, 0x82, 0x5d, 0x41, 0x63, - 0x3f, 0x93, 0x62, 0xbf, 0x9d, 0x6a, 0x29, 0x58, 0x39, 0x8f, - 0xe9, 0x53, 0x4e, 0xfd, 0xa2, 0xfe, 0x16, 0x6a, 0xca, 0xd, - 0x9f, 0xc4, 0x6f, 0xb, 0x4e, 0xf, 0x4d, 0xba, 0xc4, 0x1c, - 0xff, 00, 0xe3, 0xf5, 0xd3, 0xd8, 0x78, 0xf3, 0xc3, 0x5a, - 0xa8, 0x6, 0xcb, 0xc4, 0x3a, 0x55, 0xd8, 0x3d, 0xc, 0x17, - 0xb1, 0xbe, 0x7f, 0x26, 0xaf, 0xe6, 0x12, 0x95, 0x58, 0xa9, - 0xc8, 0x24, 0x1f, 0x6a, 0x2c, 0x1c, 0xc7, 0xf5, 0x23, 0xd, - 0xed, 0xbd, 0xc8, 0x6, 0x29, 0xe2, 0x94, 0x1f, 0xee, 0x38, - 0x3f, 0xca, 0xa6, 0xaf, 0xe5, 0xf2, 0xc7, 0xc5, 0x9a, 0xde, - 0x96, 00, 0xb3, 0xd6, 0x75, 0xb, 0x40, 0x3a, 0x79, 0x17, - 0x4e, 0x98, 0xfc, 0x8d, 0x6e, 0x5a, 0xfc, 0x66, 0xf8, 0x83, - 0x63, 0x8f, 0xb3, 0x78, 0xef, 0xc4, 0xd6, 0xf8, 0xe9, 0xe5, - 0x6b, 0x17, 0xb, 0xfc, 0x9e, 0x8b, 0xf, 0x98, 0xfe, 0x99, - 0xe8, 0xaf, 0xe6, 0xd6, 0xc7, 0xf6, 0xa0, 0xf8, 0xc1, 0xa6, - 0xe3, 0xec, 0xff, 00, 0x14, 0x3c, 0x5c, 0x98, 0xe9, 0x9d, - 0x6a, 0xe1, 0xbf, 0x9b, 0x9a, 0xe9, 0xb4, 0xef, 0xdb, 0x9f, - 0xe3, 0xf6, 0x96, 00, 0x83, 0xe2, 0xbf, 0x88, 0xc8, 0x1d, - 0xa6, 0xb9, 0x12, 0xff, 00, 0xe8, 0x60, 0xd1, 0x60, 0xe6, - 0x3f, 0xa2, 0x4a, 0x2b, 0xf0, 0x7, 0x4d, 0xff, 00, 0x82, - 0x94, 0x7e, 0xd1, 0xba, 0x6e, 0x31, 0xf1, 0x1e, 0xe2, 0xe8, - 0xe, 0xd7, 0x36, 0x36, 0xaf, 0xfa, 0xf9, 0x79, 0xae, 0xb7, - 0x4c, 0xff, 00, 0x82, 0xb2, 0x7e, 0xd0, 0xba, 0x78, 0x51, - 0x2e, 0xb5, 0xa3, 0x5f, 0x81, 0xff, 00, 0x3f, 0x3a, 0x4c, - 0x79, 0x3f, 0xf7, 0xce, 0xda, 0x2c, 0x1c, 0xc8, 0xfd, 0xd1, - 0xa2, 0xbf, 0x16, 0x74, 0xdf, 0xf8, 0x2c, 0x9f, 0xc6, 0xbb, - 0x45, 0xb, 0x75, 0xa2, 0x78, 0x46, 0xfb, 0x1d, 0x59, 0xac, - 0xa7, 0x42, 0x7f, 0xef, 0x99, 0xb1, 0xfa, 0x57, 0xeb, 0x5f, - 0xc0, 0x9f, 0x1c, 0x6a, 0x7f, 0x13, 0x3e, 0xc, 0xf8, 0x2b, - 0xc5, 0xba, 0xcd, 0xb4, 0x16, 0x5a, 0xa6, 0xb7, 0xa4, 0xdb, - 0x6a, 0x17, 0x16, 0xf6, 0xc0, 0x88, 0xe3, 0x79, 0x23, 0xe, - 0x55, 0x72, 0x49, 0xc0, 0xcf, 0x73, 0x48, 0x77, 0xb9, 0xdd, - 0xd1, 0x45, 0x14, 0xc, 0x28, 0xa2, 0x8a, 00, 0xf1, 0x4f, - 0xda, 0x4e, 0xe7, 0xcb, 0xd1, 0xa1, 0x4c, 0xff, 00, 0x9, - 0x35, 0xf1, 0xa6, 0xa0, 0xdc, 0x39, 0xf5, 0x26, 0xbe, 0xb3, - 0xfd, 0xa7, 0x6e, 0xb6, 0xc0, 0x89, 0x9e, 0x89, 0x8a, 0xf9, - 0x23, 0x51, 0x6c, 0x46, 0xdf, 0x8d, 0x7e, 0x69, 0x9b, 0x3e, - 0x7c, 0xc2, 0x5e, 0x56, 0x3f, 0x31, 0xe2, 0x59, 0xfe, 0xf4, - 0xf0, 0xdf, 0x1d, 0xc4, 0xda, 0x9f, 0x8e, 0x3c, 0x39, 0x62, - 0x83, 0x73, 0xdc, 0xea, 0xd6, 0xb0, 0x85, 0xf5, 0x2d, 0x2a, - 0xc, 0x7e, 0xb5, 0xfb, 0x56, 00, 00, 0x1, 0xd0, 0x57, - 0xe3, 0x1d, 0x9d, 0xa3, 0xeb, 0x5f, 0xb4, 0x7, 0xc3, 0x8b, - 0x18, 0xcf, 0xcf, 0x2f, 0x89, 0x6c, 0x3f, 0x49, 0xd1, 0x8f, - 0xf2, 0xaf, 0xd9, 0xda, 0xfb, 0x8c, 0xbd, 0x5a, 0x8a, 0x3d, - 0xae, 0x13, 0x8f, 0x2e, 0x5a, 0x9f, 0x76, 0xc2, 0x8a, 0x28, - 0xaf, 0x4c, 0xfb, 0x43, 0xf3, 0xa6, 0xf6, 0x59, 0x3e, 0x1f, - 0x7c, 0x74, 0xd7, 0xac, 0xb5, 0x48, 0xb6, 0xc9, 0x6d, 0xa9, - 0xc9, 0x72, 0x23, 0x27, 0x21, 0x92, 0x43, 0xe6, 0x21, 0xfc, - 0x98, 0x57, 0xd7, 0x5a, 0x47, 0xed, 0x13, 0xe1, 0xdb, 0x8b, - 0x48, 0x7c, 0xd9, 0x15, 0x1f, 0x68, 0xc8, 0xd, 0xd3, 0x8a, - 0xf0, 0x9f, 0xdb, 0xc7, 0xe1, 0x85, 0xed, 0x86, 0xa5, 0xa7, - 0x7c, 0x48, 0xd2, 0xd5, 0x9e, 0x25, 0x44, 0xb1, 0xd4, 0x63, - 0x41, 0xf7, 0x70, 0x4f, 0x97, 0x21, 0xf6, 0xe7, 0x69, 0x3f, - 0xee, 0xd7, 0xce, 0xfe, 0x1f, 0xf1, 0x7c, 0x37, 0xf1, 0x28, - 0xf3, 0x36, 0xc9, 0xdd, 0x49, 0xaf, 0x8a, 0xaf, 0xf5, 0x9c, - 0xb6, 0xac, 0xe5, 0x87, 0xd5, 0x33, 0xf2, 0x6f, 0xaf, 0xd5, - 0xe1, 0xcc, 0x55, 0x5c, 0x2b, 0x8f, 0xb8, 0xdd, 0xd3, 0xf2, - 0x67, 0xe8, 0xc4, 0x3f, 0x1c, 0x7c, 0x33, 0x2f, 0xfc, 0xbd, - 0x1, 0xff, 00, 0x2, 0x15, 0xa1, 0x7, 0xc5, 0x9f, 0xe, - 0x4f, 0xd2, 0xf5, 0x47, 0xe3, 0x5f, 0x9f, 0xb0, 0xea, 0x21, - 0xc6, 0x44, 0xa4, 0x7e, 0x35, 0x65, 0x35, 0x29, 0xd7, 0xee, - 0xdc, 0xb8, 0xfa, 0x35, 0x72, 0x2c, 0xff, 00, 0x15, 0x1f, - 0x8a, 0x8, 0xf6, 0x21, 0xc4, 0xf2, 0x7f, 0x65, 0x1f, 0xa0, - 0xd0, 0xfc, 0x44, 0xd0, 0x26, 0xc6, 0x2f, 0xe3, 0xe7, 0xde, - 0xae, 0x47, 0xe2, 0xfd, 0x1e, 0x50, 0xa, 0xdf, 0xc2, 0x73, - 0xfe, 0xd5, 0x7e, 0x7a, 0x26, 0xb9, 0x7d, 0x18, 0xf9, 0x6f, - 0x25, 0x1f, 0xf0, 0x3a, 0xb5, 0x1f, 0x8b, 0x35, 0x68, 0xbe, - 0xed, 0xfc, 0xdf, 0xf7, 0xd5, 0x6c, 0xb8, 0x8a, 0xaa, 0xf8, - 0xa9, 0xaf, 0xbc, 0xea, 0x8f, 0x12, 0xc7, 0xac, 0xf, 0xd0, - 0xa4, 0xd7, 0xf4, 0xe9, 0x3e, 0xed, 0xe4, 0x27, 0xfe, 0x5, - 0x53, 0xae, 0xa3, 0x6a, 0xdd, 0x2e, 0x22, 0x3f, 0x47, 0x15, - 0xf9, 0xf3, 0x17, 0x8f, 0xf5, 0xd8, 0x47, 0xcb, 0x7f, 0x2f, - 0xe2, 0x6a, 0xf4, 0x3f, 0x15, 0x3c, 0x45, 0xf, 0x4b, 0xe7, - 0x3f, 0x8d, 0x6e, 0xb8, 0x8d, 0x7d, 0xaa, 0x7f, 0x89, 0xd1, - 0x1e, 0x23, 0xa0, 0xf7, 0x8b, 0x3e, 0xfd, 0x59, 0xe3, 0x6e, - 0x92, 0x29, 0xfa, 0x30, 0xa7, 0xee, 0x1e, 0xa2, 0xbe, 0xf, - 0xb7, 0xf8, 0xd9, 0xe2, 0x48, 0x31, 0xfe, 0x92, 0xcd, 0xf5, - 0x35, 0xa3, 0x6f, 0xfb, 0x40, 0xf8, 0x8a, 0x12, 0x33, 0x33, - 0x1c, 0x7a, 0x35, 0x6e, 0xb8, 0x8a, 0x8f, 0x58, 0x33, 0xa2, - 0x3c, 0x41, 0x85, 0x7b, 0xdc, 0xfb, 0x82, 0x8a, 0xf8, 0xd2, - 0xdb, 0xf6, 0x97, 0xd7, 0x62, 0x18, 0x62, 0xed, 0xff, 00, - 0x2, 0xad, 0x3b, 0x6f, 0xda, 0x93, 0x54, 0x4f, 0xbe, 0xae, - 0x7f, 0x1c, 0xd6, 0xeb, 0x3f, 0xc2, 0x3d, 0xee, 0xbe, 0x46, - 0xf1, 0xcf, 0x30, 0x72, 0xfb, 0x47, 0xd7, 0x14, 0x57, 0xcb, - 0x96, 0xff, 00, 0xb5, 0x64, 0xe0, 00, 0xf1, 0x37, 0xe4, - 0x2b, 0x52, 0xd7, 0xf6, 0xab, 0x84, 0xe3, 0xcd, 0x8b, 0xf3, - 0x15, 0xbc, 0x73, 0xbc, 0x13, 0xfb, 0x5f, 0x81, 0xd1, 0x1c, - 0xdb, 0x7, 0x2f, 0xb6, 0x7d, 0x1f, 0x45, 0x78, 0x34, 0x1f, - 0xb5, 0x2e, 0x9a, 0xff, 00, 0x7a, 0x35, 0x15, 0xab, 0x6b, - 0xfb, 0x4a, 0x68, 0x72, 0x91, 0xb8, 0x28, 0xff, 00, 0x81, - 0x62, 0xb7, 0x8e, 0x6d, 0x82, 0x97, 0xfc, 0xbc, 0x47, 0x44, - 0x73, 0xc, 0x34, 0xb6, 0x9a, 0x3d, 0x92, 0x8a, 0xf2, 0xdb, - 0x7f, 0xda, 0x7, 0xc3, 0xf3, 0x11, 0xf3, 0x81, 0xff, 00, - 0x3, 0x15, 0xa7, 0x7, 0xc6, 0xaf, 0xe, 0xcc, 0x33, 0xe7, - 0x81, 0xff, 00, 0x2, 0x15, 0xd1, 0x1c, 0x7e, 0x16, 0x5b, - 0x54, 0x46, 0xcb, 0x15, 0x46, 0x5b, 0x49, 0x1d, 0xfd, 0x15, - 0xc7, 0xc1, 0xf1, 0x53, 0xc3, 0xf3, 0x8e, 0x2e, 0xc0, 0xfa, - 0x91, 0x57, 0xe2, 0xf1, 0xee, 0x89, 0x30, 0x4, 0x5e, 0xa7, - 0xe7, 0x5b, 0xac, 0x45, 0x19, 0x6d, 0x35, 0xf7, 0x9a, 0xaa, - 0xb4, 0xde, 0xd2, 0x47, 0x43, 0x45, 0x64, 0xc7, 0xe2, 0xad, - 0x2a, 0x51, 0xf2, 0xde, 0xc5, 0xff, 00, 0x7d, 0x55, 0x95, - 0xd6, 0xac, 0x1f, 0xa5, 0xdc, 0x27, 0xfe, 0x6, 0x2b, 0x55, - 0x38, 0x3d, 0x99, 0x6a, 0x51, 0x7d, 0x4b, 0xb4, 0x54, 0x9, - 0x7d, 0x6f, 0x27, 0xdd, 0x9e, 0x33, 0xf4, 0x61, 0x52, 0x9, - 0xa3, 0x3d, 0x1d, 0x4f, 0xd0, 0xd5, 0x5d, 0xe, 0xe3, 0xe8, - 0xa4, 0x4, 0x1e, 0x87, 0x34, 0xb4, 0xc6, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0xc7, 0x89, - 0x24, 0xfb, 0xe8, 0xad, 0xfe, 0xf0, 0xcd, 0x3e, 0x8a, 00, - 0xcb, 0xbc, 0xf0, 0xbe, 0x8d, 0xa8, 0x9c, 0xdd, 0xe9, 0x16, - 0x37, 0x47, 0xd6, 0x6b, 0x64, 0x7f, 0xe6, 0x2b, 0x9a, 0xd5, - 0xfe, 0x5, 0xfc, 0x38, 0xd7, 0xc1, 0xfe, 0xd2, 0xf0, 0x17, - 0x86, 0xaf, 0xb3, 0xd7, 0xed, 0x1a, 0x4c, 0xf, 0xfc, 0xd2, - 0xbb, 0x9a, 0x28, 0x3, 0xc7, 0x6f, 0x7f, 0x63, 0x9f, 0x81, - 0x9a, 0x89, 0x26, 0x7f, 0x84, 0x9e, 0xe, 0x24, 0xf7, 0x4d, - 0x1a, 0x4, 0x3f, 0xf8, 0xea, 0x8a, 0xc5, 0xd4, 0x3f, 0x60, - 0xaf, 0xd9, 0xf7, 0x52, 0x42, 0x92, 0xfc, 0x29, 0xf0, 0xfc, - 0x60, 0xf7, 0xb7, 0x85, 0xa1, 0x3f, 0x9a, 0x30, 0xaf, 0x7c, - 0xa2, 0x80, 0x3e, 0x5a, 0xd4, 0xff, 00, 0xe0, 0x99, 0x3f, - 0xb3, 0x96, 0xa4, 0xf, 0xfc, 0x5b, 0xf1, 0x68, 0x4f, 0xf1, - 0x5b, 0x6a, 0x57, 0x49, 0xff, 00, 0xb5, 0x48, 0xae, 0x4b, - 0x52, 0xff, 00, 0x82, 0x47, 0x7e, 0xcf, 0xf7, 0xa0, 0xf9, - 0x16, 0x1a, 0xf5, 0x81, 0xf5, 0x83, 0x56, 0x76, 0xff, 00, - 0xd0, 0xc1, 0xaf, 0xb4, 0xa8, 0xa0, 0x56, 0x3e, 0x1, 0xd5, - 0x7f, 0xe0, 0x8c, 0x9f, 0x8, 0x6e, 0xb2, 0x6c, 0xbc, 0x4d, - 0xe2, 0xcb, 0x3, 0xe8, 0x67, 0x82, 0x50, 0x3f, 0x38, 0xbf, - 0xad, 0x72, 0x9a, 0x9f, 0xfc, 0x11, 0x33, 0xc2, 0x32, 0x3, - 0xfd, 0x9f, 0xf1, 0x2f, 0x5a, 0x80, 0xf6, 0x17, 0x36, 0x10, - 0xc8, 0x3f, 0x42, 0xb5, 0xfa, 0x53, 0x45, 0x1, 0x64, 0x7e, - 0x56, 0x6a, 0x1f, 0xf0, 0x44, 0x4b, 0x92, 0x49, 0xb1, 0xf8, - 0xb7, 0x10, 0x1d, 0x85, 0xc6, 0x84, 0x4f, 0xea, 0x27, 0xac, - 0x2b, 0xcf, 0xf8, 0x22, 0x57, 0x8b, 0xa3, 0x52, 0x6d, 0x7e, - 0x27, 0x68, 0xb3, 0x9e, 0xc2, 0x5d, 0x36, 0x68, 0xf3, 0xf9, - 0x3b, 0x57, 0xeb, 0x85, 0x14, 0xee, 0x16, 0x47, 0xe3, 0x4e, - 0xa7, 0xff, 00, 0x4, 0x60, 0xf8, 0xb5, 0x6e, 0x9, 0xb1, - 0xf1, 0x5f, 0x85, 0x2f, 0x71, 0xd0, 0x3c, 0xb7, 0x11, 0x67, - 0xff, 00, 0x21, 0x1a, 0xe4, 0xf5, 0xf, 0xf8, 0x24, 0x47, - 0xc7, 0xfb, 0x36, 0x22, 0xb, 0x6f, 0xe, 0x5f, 0x1, 0xde, - 0xd, 0x58, 0x2e, 0x7f, 0xef, 0xb4, 0x5a, 0xfd, 0xc2, 0xa2, - 0x8b, 0x8a, 0xc8, 0xfc, 0x14, 0xd5, 0x3f, 0xe0, 0x97, 0x9f, - 0xb4, 0x76, 0x9a, 0x7e, 0x4f, 0x3, 0x45, 0x7d, 0xef, 0x6b, - 0xaa, 0xda, 0x9f, 0xfd, 0xa, 0x41, 0x5c, 0xed, 0xe7, 0xfc, - 0x13, 0xbf, 0xf6, 0x8b, 0xb1, 0xcf, 0x99, 0xf0, 0xb7, 0x54, - 0x7c, 0x7f, 0xcf, 0x1b, 0x8b, 0x69, 0x3f, 0xf4, 0x19, 0x4d, - 0x7f, 0x41, 0xb4, 0x51, 0x70, 0xe5, 0x47, 0xf3, 0xa5, 0xa9, - 0xfe, 0xc5, 0x3f, 0x1d, 0xf4, 0x8c, 0xfd, 0xa7, 0xe1, 0x4f, - 0x89, 0xf8, 0xff, 00, 0x9e, 0x36, 0x2d, 0x2f, 0xfe, 0x81, - 0x9a, 0xe5, 0xf5, 0x1f, 0xd9, 0xd7, 0xe2, 0xa6, 0x90, 0x9, - 0xbd, 0xf8, 0x6d, 0xe2, 0xcb, 0x60, 0x3a, 0x99, 0x34, 0x5b, - 0x91, 0xff, 00, 0xb2, 0x57, 0xf4, 0xab, 0x45, 0x17, 0xe, - 0x53, 0xf9, 0x81, 0xd4, 0xfc, 0x11, 0xe2, 0x3d, 0x10, 0x13, - 0xa8, 0xe8, 0x1a, 0xa5, 0x80, 0x1d, 0x7e, 0xd5, 0x65, 0x24, - 0x78, 0xff, 00, 0xbe, 0x94, 0x56, 0x29, 0xf9, 0x4e, 0xf, - 0x7, 0xd0, 0xd7, 0xf5, 0x25, 0x3d, 0x9c, 0x17, 0x23, 0x13, - 0x41, 0x1c, 0xbf, 0xef, 0xa0, 0x3f, 0xce, 0xb2, 0xb5, 0xf, - 0x3, 0xf8, 0x73, 0x57, 0x4d, 0xb7, 0xde, 0x1f, 0xd2, 0xef, - 0x57, 0xd2, 0xe2, 0xca, 0x39, 0x7, 0xea, 0xb4, 0x5c, 0x39, - 0x4f, 0xe6, 0xa, 0x8a, 0xfe, 0x95, 0xf5, 0x2f, 0xd9, 0xe7, - 0xe1, 0x6e, 0xae, 0x85, 0x2f, 0x7e, 0x1c, 0xf8, 0x56, 0xe5, - 0x4f, 0x50, 0xfa, 0x35, 0xb9, 0xff, 00, 0xd9, 0x2b, 0x99, - 0xbc, 0xfd, 0x8b, 0xfe, 0x4, 0x5f, 0x82, 0x25, 0xf8, 0x49, - 0xe1, 0x1e, 0x7a, 0x98, 0xf4, 0x98, 0xa3, 0x3f, 0x9a, 0x81, - 0x45, 0xc5, 0xca, 0x7f, 0x3a, 0x30, 0xc0, 0xf7, 0x33, 0x47, - 0xc, 0x4a, 0x5e, 0x49, 0x18, 0x22, 0xa8, 0xea, 0x49, 0x38, - 0x2, 0xbf, 0xa7, 0xf, 0x86, 0x5e, 0x1f, 0x1e, 0x14, 0xf8, - 0x6f, 0xe1, 0x5d, 0x10, 0x74, 0xd3, 0xb4, 0xab, 0x5b, 0x4e, - 0x98, 0xfb, 0x91, 0x2a, 0xff, 00, 0x4a, 0xf2, 0x56, 0xfd, - 0x81, 0xbf, 0x67, 0xef, 0x3e, 0x29, 0xe3, 0xf8, 0x5d, 0xa3, - 0x5b, 0xcd, 0x13, 0x89, 0x12, 0x4b, 0x7f, 0x32, 0x32, 0xac, - 0xe, 0x41, 0x1b, 0x5c, 0x77, 0xaf, 0x7e, 00, 0x28, 00, - 0x70, 0x5, 0x5, 0x25, 0x61, 0x68, 0xa2, 0x8a, 0x43, 0xa, - 0x28, 0xa2, 0x80, 0x3e, 0x65, 0xfd, 0xa7, 0xae, 0xf3, 0x74, - 0xc9, 0x9e, 0x80, 0xa, 0xf9, 0x6f, 0x55, 0x6c, 0x40, 0xdf, - 0x4a, 0xfa, 0x2b, 0xf6, 0x96, 0xbb, 0xdf, 0xab, 0xca, 0xb9, - 0xe8, 0xd8, 0xaf, 0x9b, 0xf5, 0xa7, 0xdb, 0x6c, 0xe7, 0xfd, - 0x93, 0x5f, 0x97, 0x63, 0x5f, 0x3e, 0x61, 0x37, 0xe6, 0x7e, - 0x49, 0xc4, 0x93, 0xbd, 0x59, 0x1c, 0x17, 0xc1, 0x6b, 0x21, - 0xad, 0xfe, 0xd7, 0xdf, 0xc, 0x2d, 0x58, 0xf0, 0xba, 0xbf, - 0xda, 0x3f, 0x18, 0xe2, 0x79, 0x7, 0xfe, 0x81, 0x5f, 0xb0, - 0x35, 0xf9, 0x3d, 0xfb, 0x20, 0x69, 0x8b, 0xad, 0xfe, 0xd9, - 0xde, 0x16, 0x2c, 0x37, 0xb, 0x1b, 0x7b, 0xcb, 0xb1, 0xec, - 0x44, 0x25, 0x41, 0xff, 00, 0xc7, 0xeb, 0xf5, 0x86, 0xbf, - 0x44, 0xc1, 0xab, 0x52, 0x47, 0xda, 0x70, 0xdc, 0x39, 0x32, - 0xca, 0x41, 0x45, 0x14, 0x57, 0x69, 0xf4, 0xe5, 0x1d, 0x6b, - 0x45, 0xb1, 0xf1, 0x1e, 0x93, 0x75, 0xa6, 0x6a, 0x56, 0xb1, - 0xde, 0xd8, 0x5d, 0x46, 0x62, 0x9a, 0x9, 0x57, 0x2a, 0xea, - 0x7a, 0x83, 0x5f, 0x9e, 0x3f, 0x1f, 0x3f, 0x63, 0x7d, 0x73, - 0xe1, 0xc6, 0xa7, 0x73, 0xac, 0x78, 0x5c, 0x4b, 0xa8, 0xf8, - 0x71, 0x98, 0xba, 0x94, 0x3b, 0xa5, 0xb5, 0x1f, 0xdd, 0x71, - 0xdc, 0xf, 0xef, 0x7e, 0x78, 0xaf, 0xd1, 0xca, 0x42, 0x3, - 0x2, 0x8, 0xc8, 0x3d, 0x41, 0xae, 0x6a, 0xd4, 0x15, 0x65, - 0xd9, 0x9e, 0x2e, 0x67, 0x94, 0xd0, 0xcd, 0x29, 0xa8, 0xd5, - 0xd1, 0xad, 0x9a, 0xe9, 0xfe, 0x6b, 0xc8, 0xfc, 0x79, 0x4f, - 0xf8, 0x49, 0xb4, 0xae, 0x1e, 0x13, 0x22, 0x8e, 0x3a, 0x73, - 0x52, 0xf, 0x16, 0x6a, 0xb0, 0xff, 00, 0xac, 0xb4, 0x90, - 0x7f, 0xc0, 0x4d, 0x7e, 0xa5, 0x78, 0xa7, 0xe0, 0xb7, 0x84, - 0x3c, 0x5b, 0xbd, 0xaf, 0x34, 0x88, 0xa1, 0x99, 0x8e, 0x4c, - 0xd6, 0xa0, 0x46, 0xc4, 0xfa, 0x9c, 0x70, 0x7f, 0x11, 0x5e, - 0x7f, 0x7f, 0xfb, 0x1e, 0xf8, 0x4a, 0xe9, 0xcb, 0x45, 0x77, - 0x77, 0x8, 0x3d, 0x1, 0x54, 0x6c, 0x7e, 0x82, 0xbc, 0xa, - 0x99, 0x75, 0x5b, 0xfc, 0x29, 0xfe, 0x7, 0xc4, 0xcf, 0x84, - 0x9c, 0x3e, 0x1d, 0x7d, 0x1d, 0xbf, 0x3, 0xf3, 0xe5, 0x7c, - 0x79, 0x75, 0x1f, 0xdf, 0xb7, 0x71, 0xf5, 0x6, 0xa6, 0x4f, - 0x88, 0xc4, 0x70, 0xc8, 0xc3, 0xf0, 0xaf, 0xb9, 0x6e, 0xff, - 00, 0x62, 0x6d, 0x12, 0x40, 0x7c, 0x9d, 0x65, 0xd4, 0xff, - 00, 0xb7, 0x6c, 0xf, 0xfe, 0xcd, 0x58, 0x57, 0x9f, 0xb0, - 0xcc, 0x4e, 0xf, 0x93, 0xac, 0xdb, 0x39, 0xf4, 0x78, 0xa, - 0x8f, 0xeb, 0x5c, 0xaf, 0x2e, 0x9f, 0x5a, 0x5f, 0x8a, 0xff, - 00, 0x33, 0x96, 0x5c, 0x2f, 0x5e, 0x3b, 0x29, 0x7d, 0xeb, - 0xfc, 0xcf, 0x8f, 0xe3, 0xf8, 0x8f, 0x9, 0xeb, 0xb8, 0x55, - 0xa8, 0xfe, 0x22, 0x5b, 0x37, 0xf1, 0xd7, 0xd2, 0x97, 0xff, - 00, 0xb0, 0xbe, 0xa6, 0xa7, 0xf7, 0x33, 0x69, 0xd3, 0x8f, - 0x5d, 0xc5, 0x7f, 0x9a, 0xd7, 0x3f, 0x7f, 0xfb, 0xe, 0x78, - 0x89, 0xf, 0xee, 0xec, 0x6d, 0xa7, 0xf7, 0x8e, 0x64, 0x1f, - 0xcc, 0x8a, 0xe7, 0x96, 0x5f, 0xde, 0x93, 0x39, 0xa5, 0xc3, - 0xf8, 0xa8, 0xec, 0xe5, 0xf7, 0x5c, 0xf1, 0x48, 0xfc, 0x79, - 0x6a, 0xd8, 0xfd, 0xe0, 0xfc, 0x45, 0x59, 0x8f, 0xc6, 0x96, - 0x8d, 0xff, 00, 0x2d, 0x56, 0xbd, 0xe, 0xf3, 0xf6, 0x2d, - 0xf1, 0x44, 0x4c, 0x40, 0xd1, 0x25, 0x6c, 0x77, 0x49, 0x10, - 0xff, 00, 0x26, 0xac, 0x2b, 0xcf, 0xd9, 0x13, 0xc5, 0x96, - 0xec, 0x47, 0xf6, 0x16, 0xa3, 0xc7, 0xfc, 0xf3, 0x89, 0x9b, - 0xf9, 0x56, 0x2f, 0x3, 0x4f, 0xac, 0x24, 0xbe, 0x47, 0x3b, - 0xc9, 0xf1, 0x91, 0xfb, 0x4f, 0xe7, 0x16, 0x60, 0xa7, 0x8a, - 0xed, 0x1f, 0xfe, 0x5a, 0xa7, 0xe7, 0x56, 0x13, 0xc4, 0x56, - 0xcc, 0x3e, 0xfa, 0xfe, 0x75, 0x5e, 0xf7, 0xf6, 0x6c, 0xf1, - 0x2d, 0x96, 0xe2, 0xfa, 0x6e, 0xa7, 0x10, 0x1d, 0xda, 0x16, - 00, 0x7e, 0x95, 0x87, 0x71, 0xf0, 0x6f, 0x5a, 0xb5, 0x62, - 0x18, 0xdc, 0x21, 0x1d, 0x99, 0x6b, 0x9d, 0xe0, 0xa8, 0xf7, - 0x68, 0xe7, 0x78, 0xc, 0x64, 0x7e, 0xda, 0xf9, 0xa3, 0xa9, - 0x5d, 0x66, 0xdd, 0xbf, 0x88, 0x54, 0x83, 0x53, 0x80, 0xff, - 00, 0x10, 0xae, 0x16, 0x4f, 0x86, 0xfa, 0xec, 0x1f, 0x76, - 0x49, 0x4f, 0xd5, 0x6a, 0xbb, 0xf8, 0x43, 0xc4, 0x56, 0xfd, - 0x1d, 0x8f, 0xd4, 0x1a, 0xcf, 0xea, 0x34, 0x9e, 0xd3, 0x32, - 0xfa, 0xbe, 0x35, 0x7f, 0x2b, 0x3d, 0x18, 0x5f, 0x42, 0x7f, - 0x88, 0x53, 0x85, 0xd4, 0x47, 0xa3, 0xd7, 0x98, 0x9d, 0x2b, - 0xc4, 0xb0, 0xff, 00, 0xb, 0x37, 0xe3, 0x4d, 0xdf, 0xe2, - 0x38, 0x3a, 0xc0, 0xc7, 0xf1, 0xa9, 0xfe, 0xcf, 0x8b, 0xda, - 0x62, 0xf6, 0x78, 0xd5, 0xf6, 0x13, 0xf9, 0x9e, 0xa6, 0xb7, - 0x2b, 0xd9, 0xff, 00, 0x5a, 0x91, 0x6e, 0xd8, 0x74, 0x94, - 0xfe, 0x75, 0xe5, 0x3, 0x59, 0xd7, 0xa1, 0xfb, 0xd6, 0x92, - 0x1f, 0xc2, 0x9c, 0x3c, 0x59, 0xaa, 0xc5, 0xf7, 0xed, 0x24, - 0x1f, 0x81, 0xa8, 0x79, 0x6b, 0x7b, 0x34, 0x2e, 0x6c, 0x5c, - 0x77, 0xa4, 0xfe, 0xf3, 0xd6, 0xd3, 0x52, 0xb8, 0x4f, 0xbb, - 0x70, 0xe3, 0xe8, 0xd5, 0x62, 0x3d, 0x7f, 0x50, 0x8f, 0xee, - 0xdd, 0xc8, 0x3f, 0xe0, 0x55, 0xe4, 0xb, 0xe3, 0xbb, 0xb8, - 0xfe, 0xfd, 0xbb, 0x8f, 0xc0, 0xd4, 0xc9, 0xf1, 0xc, 0xaf, - 0xde, 0x8d, 0x87, 0xe7, 0x59, 0xbc, 0xba, 0xa2, 0xda, 0xc3, - 0xfa, 0xd6, 0x26, 0x1b, 0xc2, 0x48, 0xf6, 0x38, 0xbc, 0x63, - 0xac, 0x43, 0x8d, 0x97, 0xb2, 0xc, 0x7b, 0xd5, 0xb8, 0xbe, - 0x22, 0x6b, 0xb0, 0x9e, 0x2f, 0x58, 0xfd, 0x6b, 0xc6, 0x63, - 0xf8, 0x8d, 0x17, 0x7c, 0x8f, 0xc6, 0xac, 0xc7, 0xf1, 0xe, - 0xd8, 0xf5, 0x7a, 0x5f, 0x52, 0xc4, 0x47, 0x6f, 0xcc, 0xb5, - 0x99, 0xd6, 0x8e, 0xfc, 0xcb, 0xef, 0x3d, 0xb2, 0xf, 0x8b, - 0x7e, 0x21, 0x83, 0xa5, 0xd6, 0x7e, 0xb5, 0xa1, 0x6f, 0xf1, - 0xc3, 0xc4, 0x50, 0x11, 0x99, 0xb7, 0x62, 0xbc, 0x36, 0x3f, - 0x1e, 0xda, 0x37, 0xfc, 0xb5, 0x15, 0x66, 0x3f, 0x1a, 0xda, - 0x37, 0xfc, 0xb5, 0x5a, 0x7e, 0xcb, 0x17, 0x1d, 0x9b, 0xfb, - 0xd9, 0xb4, 0x73, 0xba, 0xb1, 0xfb, 0x6d, 0x1e, 0xf9, 0x6f, - 0xfb, 0x43, 0x78, 0x82, 0x10, 0x1, 0x73, 0xf9, 0xd6, 0xa5, - 0xaf, 0xed, 0x2f, 0xac, 0xc5, 0xf7, 0xb2, 0x6b, 0xe7, 0x74, - 0xf1, 0x6d, 0xa3, 0x7f, 0xcb, 0x54, 0xfc, 0xea, 0x74, 0xf1, - 0x25, 0xab, 0xff, 00, 0x1a, 0xfe, 0x75, 0x4a, 0xae, 0x3a, - 0x1b, 0x4e, 0x47, 0x4c, 0x78, 0x86, 0xaa, 0xff, 00, 0x97, - 0xa7, 0xd2, 0xd0, 0x7e, 0xd4, 0xfa, 0x82, 0xe3, 0x7a, 0xb6, - 0x3e, 0x95, 0xab, 0x6b, 0xfb, 0x55, 0xb8, 0xc7, 0x98, 0x9f, - 0x9a, 0xd7, 0xcb, 0x4b, 0xad, 0xdb, 0xb7, 0xf1, 0x8f, 0xce, - 0xa5, 0x5d, 0x56, 0x3, 0xfc, 0x43, 0xf3, 0xab, 0x58, 0xec, - 0x7c, 0x7e, 0xdb, 0x3a, 0xe3, 0xc4, 0x75, 0xff, 00, 0xe7, - 0xe2, 0x3e, 0xb4, 0xb6, 0xfd, 0xaa, 0xad, 0x9c, 0xfc, 0xe8, - 0xa3, 0xfe, 0x3, 0x5a, 0xb6, 0xdf, 0xb4, 0xfe, 0x94, 0xf8, - 0xde, 0x13, 0xf2, 0x22, 0xbe, 0x39, 0x17, 0xf0, 0xb7, 0xf1, - 0xa, 0x78, 0xbb, 0x88, 0xf4, 0x71, 0x5a, 0xac, 0xdb, 0x1f, - 0x1f, 0xb5, 0xf8, 0x1d, 0x91, 0xe2, 0x4a, 0xfd, 0xd3, 0x3e, - 0xd6, 0xb6, 0xfd, 0xa4, 0x34, 0x29, 0xb1, 0xb8, 0xa8, 0xfc, - 0x6b, 0x52, 0xf, 0x8f, 0x5e, 0x1d, 0x94, 0xc, 0xca, 0x6, - 0x7d, 0xd, 0x7c, 0x2e, 0x2e, 0x53, 0xb3, 0xfe, 0xb5, 0x22, - 0xdd, 0x63, 0xa4, 0xa7, 0xf0, 0x35, 0xaa, 0xcf, 0x31, 0xb1, - 0xde, 0xcf, 0xe4, 0x75, 0x47, 0x89, 0x6a, 0xf5, 0x8a, 0x3e, - 0xf5, 0xb7, 0xf8, 0xcb, 0xe1, 0xd9, 0xff, 00, 0xe5, 0xe3, - 0x15, 0xa1, 0x17, 0xc4, 0xed, 0x2, 0x5e, 0x97, 0x80, 0x7d, - 0x6b, 0xf3, 0xf9, 0x2f, 0x65, 0x5f, 0xbb, 0x3b, 0x8f, 0xa3, - 0x54, 0xc9, 0xab, 0xdd, 0xc7, 0xf7, 0x6e, 0xa4, 0x1f, 0xf0, - 0x23, 0x5b, 0xae, 0x20, 0xc4, 0x2d, 0xe0, 0x8e, 0x98, 0xf1, - 0x2c, 0xba, 0xc0, 0xfd, 0x7, 0x8b, 0xc7, 0x3a, 0x2c, 0xdf, - 0x76, 0xf5, 0x3f, 0x1a, 0xb4, 0x9e, 0x28, 0xd2, 0xe4, 0xfb, - 0xb7, 0xb1, 0x9f, 0xc6, 0xbf, 0x3d, 0xa3, 0xf1, 0x2e, 0xa7, - 0x1f, 0xdd, 0xbd, 0x97, 0xfe, 0xfa, 0x35, 0x6a, 0x2f, 0x1b, - 0x6b, 0x30, 0x91, 0xb6, 0xf6, 0x4e, 0x3d, 0x58, 0xd6, 0xcb, - 0x88, 0xa7, 0xd6, 0x9f, 0xe2, 0x74, 0x2e, 0x24, 0x87, 0x58, - 0x1f, 0xa1, 0x11, 0xea, 0xf6, 0x52, 0xfd, 0xdb, 0x98, 0xcf, - 0xfc, 0xa, 0xa6, 0x5b, 0xc8, 0x1b, 0xa4, 0xc8, 0x7e, 0x8c, - 0x2b, 0xf3, 0xfa, 0x1f, 0x89, 0x7a, 0xf4, 0x23, 0x8b, 0xc7, - 0xfc, 0xcd, 0x5e, 0x83, 0xe3, 0x7, 0x88, 0x20, 0xc6, 0x2e, - 0x58, 0xe3, 0xfd, 0xa3, 0x5b, 0xc7, 0x88, 0xa3, 0xd6, 0x9b, - 0x3a, 0x23, 0xc4, 0x58, 0x77, 0xba, 0x67, 0xde, 0xe2, 0x45, - 0x6e, 0x8c, 0xf, 0xd0, 0xd2, 0xe6, 0xbe, 0x18, 0x87, 0xe3, - 0xb7, 0x88, 0x22, 0xc0, 0xf3, 0xf, 0xfd, 0xf4, 0x6b, 0x4e, - 0xdf, 0xf6, 0x8a, 0xd7, 0x21, 0x23, 0x3b, 0x8e, 0x3f, 0xda, - 0x35, 0xba, 0xe2, 0x1a, 0x1d, 0x62, 0xce, 0x88, 0xe7, 0xf8, - 0x47, 0xbb, 0x3e, 0xd5, 0xa2, 0xbe, 0x3e, 0x83, 0xf6, 0x9c, - 0xd5, 0xd0, 0x8d, 0xe1, 0xb1, 0xfe, 0xf1, 0xad, 0x5b, 0x5f, - 0xda, 0x9a, 0xed, 0x71, 0xbd, 0xf, 0x15, 0xbc, 0x73, 0xec, - 0x23, 0xde, 0xeb, 0xe4, 0x74, 0x47, 0x3a, 0xc1, 0xcb, 0xed, - 0x1f, 0x56, 0x51, 0x5f, 0x33, 0xdb, 0x7e, 0xd5, 0x44, 0x91, - 0xe6, 0x20, 0x1f, 0x51, 0x5a, 0xd6, 0xff, 00, 0xb5, 0x35, - 0x91, 0x3, 0x7a, 0xa7, 0xe4, 0x6b, 0xa2, 0x39, 0xd6, 0xa, - 0x5f, 0x6c, 0xe8, 0x8e, 0x69, 0x84, 0x96, 0xd3, 0x47, 0xd0, - 0x54, 0x57, 0x88, 0xdb, 0x7e, 0xd3, 0x5a, 0x4c, 0xa4, 0x6f, - 0x11, 0x8f, 0xc4, 0xd6, 0x9c, 0x1f, 0xb4, 0x56, 0x83, 0x26, - 0x32, 0xf1, 0xe7, 0xd9, 0xeb, 0x78, 0xe6, 0xb8, 0x39, 0x6d, - 0x51, 0x1b, 0xac, 0x76, 0x1e, 0x5b, 0x4d, 0x1e, 0xb7, 0x45, - 0x79, 0xbd, 0xbf, 0xc7, 0x4f, 0xf, 0xcf, 0xff, 00, 0x2d, - 0x94, 0x7f, 0xc0, 0xeb, 0x46, 0x1f, 0x8b, 0xfe, 0x1e, 0x9b, - 0x3, 0xed, 0x40, 0x1f, 0xad, 0x74, 0x47, 0x1b, 0x86, 0x96, - 0xd5, 0x17, 0xde, 0x6c, 0xb1, 0x14, 0x5e, 0xd2, 0x47, 0x6f, - 0x45, 0x72, 0xf0, 0x7c, 0x49, 0xd0, 0x67, 0xe9, 0x7a, 0x83, - 0xea, 0x6a, 0xdc, 0x7e, 0x36, 0xd1, 0x65, 0xfb, 0xb7, 0xf1, - 0x9f, 0xc6, 0xb6, 0x55, 0xe9, 0x3d, 0xa4, 0xbe, 0xf2, 0xd5, - 0x58, 0x3d, 0xa4, 0x8d, 0xda, 0x2b, 0x32, 0x3f, 0x12, 0x69, - 0x92, 0xfd, 0xdb, 0xd8, 0xbf, 0xef, 0xaa, 0x9d, 0x35, 0x7b, - 0x29, 0x3e, 0xed, 0xd4, 0x47, 0xfe, 0x4, 0x2b, 0x45, 0x38, - 0xbd, 0x99, 0x7c, 0xd1, 0xee, 0x5c, 0xa2, 0xa1, 0x5b, 0xb8, - 0x1f, 0xee, 0xca, 0x87, 0xfe, 0x4, 0x2a, 0x41, 0x22, 0x37, - 0x46, 0x53, 0xf4, 0x35, 0x57, 0x45, 0xe, 0xa2, 0x93, 0x39, - 0xa5, 0xa6, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, - 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, - 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, - 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, - 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, - 0x1, 0x45, 0x14, 0x50, 0x1, 0x48, 0x78, 0x14, 0xb4, 0xc9, - 0x5b, 0x64, 0x4e, 0xde, 0x80, 0x9a, 00, 0xf8, 0xdb, 0xf6, - 0x85, 0xba, 0xf3, 0x75, 0xd9, 0x87, 0xfb, 0x67, 0xf9, 0xd7, - 0x80, 0x78, 0x89, 0xf6, 0x59, 0x4d, 0xfe, 0xe9, 0xaf, 0x68, - 0xf8, 0xe1, 0x73, 0xe6, 0xf8, 0x82, 0x50, 0x4f, 0xf1, 0x93, - 0xfa, 0xd7, 0x84, 0x78, 0xc6, 0xf0, 0x41, 0xa7, 0x4c, 0x72, - 0x7, 0xca, 0x6b, 0xf2, 0xb7, 0xfb, 0xcc, 0x6c, 0xdf, 0x99, - 0xf8, 0xb7, 0x10, 0xce, 0xf5, 0x66, 0x6f, 0x7f, 0xc1, 0x3d, - 0xac, 0x1b, 0x50, 0xfd, 0xab, 0x75, 0x8b, 0xbd, 0xb9, 0x8e, - 0xcb, 0xc3, 0xf7, 0x4, 0x9f, 0x46, 0x79, 0xa1, 0x51, 0xfa, - 0x66, 0xbf, 0x4f, 0x2b, 0xf3, 0x97, 0xfe, 0x9, 0x81, 0x68, - 0x6f, 0xfe, 0x2d, 0x7c, 0x4d, 0xd5, 0xa, 0x9d, 0xb6, 0xfa, - 0x75, 0xa5, 0xb0, 0x6c, 0x71, 0x99, 0x25, 0x91, 0x88, 0xcf, - 0xfd, 0xb3, 0x15, 0xfa, 0x35, 0x5f, 0xa5, 0xe1, 0xd5, 0xa9, - 0xa3, 0xf5, 0xc, 0x9e, 0x1e, 0xcf, 0x1, 0x4a, 0x3e, 0x48, - 0x28, 0xa2, 0x8a, 0xe9, 0x3d, 0x90, 0xa2, 0x8a, 0x28, 00, - 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, - 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa8, 0xe4, 0x82, 0x29, - 0x46, 0x1e, 0x34, 0x71, 0xe8, 0xca, 0xd, 0x49, 0x45, 00, - 0x50, 0x9f, 0x41, 0xd3, 0x2e, 0x46, 0x26, 0xd3, 0xad, 0x25, - 0x1e, 0x8f, 0x2, 0x9f, 0xe6, 0x2b, 0x3e, 0xe3, 0xc0, 0x1e, - 0x19, 0xbb, 0xff, 00, 0x5b, 0xa0, 0x69, 0xad, 0xff, 00, - 0x6e, 0xa8, 0x3f, 0x90, 0xad, 0xfa, 0x2a, 0x1c, 0x20, 0xf7, - 0x46, 0x6e, 0x9c, 0x25, 0xbc, 0x51, 0xc5, 0xdd, 0xfc, 0x19, - 0xf0, 0x55, 0xe9, 0xcc, 0x9e, 0x1e, 0xb4, 0x1f, 0xf5, 0xcc, - 0x14, 0xfe, 0x44, 0x56, 0x45, 0xdf, 0xec, 0xe9, 0xe0, 0x4b, - 0xbc, 0xff, 00, 0xc4, 0xa0, 0xc3, 0x9f, 0xf9, 0xe7, 0x33, - 0x71, 0xf9, 0x93, 0x5e, 0x97, 0x45, 0x62, 0xf0, 0xd4, 0x65, - 0xbc, 0x17, 0xdc, 0x63, 0x2c, 0x26, 0x1e, 0x5b, 0xd3, 0x5f, - 0x72, 0x3c, 0x66, 0xef, 0xf6, 0x51, 0xf0, 0x4d, 0xce, 0x76, - 0x8b, 0xc8, 0x73, 0xfd, 0xd9, 0x10, 0xff, 00, 0x35, 0xac, - 0x9b, 0xaf, 0xd8, 0xeb, 0xc2, 0x93, 0x3, 0xe5, 0xdf, 0x5d, - 0xc6, 0x7f, 0xda, 0x54, 0x6f, 0xe8, 0x2b, 0xdf, 0x28, 0xac, - 0x9e, 0xb, 0xe, 0xfe, 0xc2, 0x30, 0x79, 0x76, 0x11, 0xff, - 00, 0xcb, 0xb4, 0x7c, 0xd5, 0x79, 0xfb, 0x13, 0xe8, 0xd2, - 0xff, 00, 0xa9, 0xd6, 0x9d, 0x7d, 0x9e, 0xd8, 0x1f, 0xfd, - 0x9a, 0xb0, 0xaf, 0x7f, 0x61, 0xa4, 0x6c, 0xf9, 0x1a, 0xbd, - 0xb3, 0xff, 00, 0xd7, 0x48, 0x4a, 0xff, 00, 0x8d, 0x7d, - 0x65, 0x45, 0x66, 0xf2, 0xfc, 0x3b, 0xfb, 0x3f, 0x8b, 0x32, - 0x79, 0x56, 0x11, 0xfd, 0x9f, 0xc5, 0xff, 00, 0x99, 0xf1, - 0x6d, 0xef, 0xec, 0x2f, 0xa9, 0xe0, 0x98, 0xee, 0x34, 0xe9, - 0x7d, 0x83, 0x11, 0xfc, 0xd6, 0xb9, 0xeb, 0xdf, 0xd8, 0x7f, - 0xc4, 0x28, 0xe, 0xcb, 0xb, 0x79, 0x7f, 0xdc, 0x99, 0x3f, - 0xa9, 0x15, 0xf7, 0x9d, 0x15, 0x9b, 0xcb, 0x68, 0xf4, 0x6d, - 0x7c, 0xcc, 0x25, 0x93, 0x61, 0x9e, 0xd7, 0x5f, 0x33, 0xf3, - 0xb6, 0xf3, 0xf6, 0x2d, 0xf1, 0x4c, 0x4a, 0x48, 0xd0, 0xe4, - 0x3f, 0xf5, 0xce, 0x44, 0x6f, 0xe4, 0xd5, 0x87, 0x7d, 0xfb, - 0x22, 0x78, 0xae, 0xd7, 0x27, 0xfb, 0xb, 0x50, 0xff, 00, - 0x80, 0x46, 0xcd, 0xfc, 0xab, 0xf4, 0xba, 0x8a, 0x8f, 0xec, - 0xc8, 0xf4, 0x9b, 0xfc, 0xe, 0x79, 0x64, 0x54, 0x1e, 0xd2, - 0x7f, 0x87, 0xf9, 0x1f, 0x96, 0x37, 0xbf, 0xb3, 0x77, 0x88, - 0xec, 0x98, 0xac, 0x9a, 0x6e, 0xa5, 0xb, 0x7a, 0x34, 0x2c, - 0x3f, 0xa5, 0x62, 0xdd, 0x7c, 0x18, 0xd6, 0xad, 0x1b, 0x69, - 0x17, 0x31, 0x91, 0xd9, 0x97, 0x15, 0xfa, 0xd1, 0x51, 0xbd, - 0xbc, 0x52, 0xe7, 0x7c, 0x48, 0xf9, 0xfe, 0xf2, 0x83, 0x50, - 0xf2, 0xd9, 0x74, 0xa9, 0xf8, 0x7f, 0xc1, 0x39, 0x65, 0xc3, - 0xb4, 0xa5, 0xf6, 0x97, 0xfe, 0x3, 0xff, 00, 0x4, 0xfc, - 0x8c, 0x97, 0xe1, 0xa6, 0xb9, 0x7, 0xdd, 0x92, 0x5f, 0xc5, - 0x4d, 0x57, 0x7f, 0x6, 0xf8, 0x86, 0xe, 0x8e, 0xdc, 0x7a, - 0x82, 0x2b, 0xf5, 0xae, 0x7f, 0xb, 0xe8, 0xd7, 0x24, 0x99, - 0xb4, 0x9b, 0x19, 0x49, 0xea, 0x5e, 0xdd, 0xf, 0xf4, 0xac, - 0xd9, 0xbe, 0x19, 0xf8, 0x4e, 0xe0, 0x93, 0x27, 0x87, 0x74, - 0xd2, 0x4f, 0x53, 0xf6, 0x65, 0x1f, 0xd2, 0xb3, 0x79, 0x75, - 0x6e, 0x93, 0x5f, 0x71, 0xc7, 0x3e, 0x18, 0xa6, 0xff, 00, - 0x97, 0xee, 0x3f, 0x28, 0xe, 0x8f, 0xe2, 0x38, 0x3d, 0x4f, - 0xe2, 0x69, 0x9f, 0xf1, 0x51, 0xc1, 0xd6, 0x26, 0x6f, 0xc6, - 0xbf, 0x54, 0x67, 0xf8, 0x29, 0xe0, 0x8b, 0x90, 0x43, 0xf8, - 0x76, 0xd0, 0x67, 0xba, 0xee, 0x5f, 0xe4, 0x6b, 0x1e, 0xef, - 0xf6, 0x6e, 0xf0, 0xd, 0xd0, 0xe3, 0x48, 0x68, 0x4f, 0xac, - 0x73, 0xbf, 0xf5, 0x26, 0xb2, 0x79, 0x75, 0x7f, 0xee, 0xbf, - 0xeb, 0xd0, 0xe4, 0x9f, 0xa, 0x45, 0xed, 0x18, 0xfd, 0xef, - 0xfc, 0x8f, 0xcc, 0x7f, 0xed, 0x6d, 0x7a, 0x1f, 0xbd, 0x6c, - 0xe6, 0x94, 0x78, 0xa7, 0x56, 0x8b, 0xef, 0xda, 0xc9, 0xff, - 00, 0x7c, 0x9a, 0xfd, 0x1f, 0xbc, 0xfd, 0x93, 0xbc, 0xf, - 0x73, 0xfe, 0xad, 0x2f, 0x20, 0xff, 00, 0x76, 0x45, 0x3f, - 0xcd, 0x6b, 0x12, 0xf7, 0xf6, 0x35, 0xf0, 0xbc, 0xf9, 0xf2, - 0x35, 0xb, 0x98, 0xbf, 0xdf, 0x8d, 0x5b, 0xf9, 0x62, 0xb1, - 0x96, 0x5f, 0x5b, 0xf9, 0x13, 0x38, 0xe5, 0xc2, 0x8d, 0x6d, - 0x1f, 0xba, 0x47, 0xe7, 0xf0, 0xf1, 0xcd, 0xe4, 0x63, 0xe7, - 0xb7, 0x71, 0xf5, 0x6, 0xa6, 0x4f, 0x88, 0x4e, 0xbf, 0x7a, - 0x32, 0x3f, 0x3a, 0xfb, 0x82, 0xef, 0xf6, 0x24, 0xd3, 0x64, - 0x3f, 0xb9, 0xd6, 0x94, 0xf, 0xf6, 0xed, 0x7f, 0xfb, 0x2a, - 0xc5, 0xbd, 0xfd, 0x86, 0x4b, 0x67, 0xc9, 0xd5, 0xac, 0xe4, - 0xf4, 0xf3, 0x22, 0x65, 0xff, 00, 0x1a, 0xc1, 0xe0, 0x2a, - 0x75, 0xa3, 0xf8, 0xaf, 0xf3, 0x39, 0x65, 0xc3, 0x15, 0x56, - 0xd1, 0x97, 0xde, 0xbf, 0xcc, 0xf9, 0x6, 0x3f, 0x88, 0xa9, - 0xfc, 0x40, 0x8a, 0xb5, 0x1f, 0xc4, 0x4b, 0x73, 0xd5, 0xb1, - 0xf8, 0xd7, 0xd2, 0xb7, 0xbf, 0xb0, 0xae, 0xaa, 0x1, 0xf2, - 0xa7, 0xd3, 0x26, 0xff, 00, 0x81, 0x11, 0xfc, 0xd6, 0xb9, - 0xfb, 0xef, 0xd8, 0x77, 0xc4, 0x71, 0x3, 0xb2, 0xc2, 0xd6, - 0x6f, 0xfa, 0xe7, 0x32, 0xff, 00, 0x52, 0x2b, 0x9, 0x60, - 0x7b, 0xd2, 0x67, 0x3c, 0xb8, 0x7b, 0x13, 0x1d, 0x9c, 0xfe, - 0xeb, 0x9e, 0x27, 0x1f, 0x8f, 0xad, 0x5b, 0x1f, 0xbc, 0xc5, - 0x59, 0x4f, 0x1b, 0x5a, 0xb7, 0xfc, 0xb5, 0x5f, 0xc6, 0xbd, - 0xe, 0xff, 00, 0xf6, 0x31, 0xf1, 0x4d, 0xbe, 0x4f, 0xf6, - 0x1c, 0x8c, 0x3d, 0x63, 0x60, 0xdf, 0xc8, 0xd7, 0x3f, 0x7b, - 0xfb, 0x28, 0xf8, 0x9a, 0xd4, 0x9c, 0xe8, 0x5a, 0x8a, 0xfb, - 0xac, 0xe, 0x7f, 0xa5, 0x61, 0x2c, 0x15, 0x35, 0xbc, 0x1a, - 0xf9, 0x1c, 0xd2, 0xc9, 0xb1, 0x70, 0xfb, 0x6f, 0xe7, 0x16, - 0x62, 0x27, 0x8b, 0xed, 0x5b, 0xfe, 0x5a, 0xa7, 0xe7, 0x53, - 0xa7, 0x89, 0xad, 0x9f, 0xa4, 0x89, 0xf9, 0xd5, 0x7b, 0xcf, - 0xd9, 0xd7, 0xc4, 0x36, 0x79, 0x2f, 0xa7, 0xea, 0x11, 0x1, - 0xfd, 0xe8, 0x58, 0x7f, 0x4a, 0xc6, 0xb8, 0xf8, 0x3b, 0xac, - 0xdb, 0x67, 0xfe, 0x3e, 0x13, 0x1f, 0xde, 0x43, 0x58, 0x3c, - 0x1d, 0xf, 0x34, 0x60, 0xf2, 0xfc, 0x64, 0x7e, 0xda, 0xf9, - 0xa3, 0xa8, 0x5d, 0x7a, 0xdd, 0xbf, 0x8d, 0x7f, 0x3a, 0x95, - 0x75, 0x78, 0xf, 0xf1, 0xa, 0xe1, 0x24, 0xf8, 0x6f, 0xad, - 0xc3, 0x9d, 0xb2, 0xc9, 0xf8, 0xa1, 0xaa, 0xef, 0xe0, 0xfd, - 0x7e, 0xe, 0x92, 0x31, 0xfc, 0xd, 0x47, 0xd4, 0xa8, 0xbd, - 0xa4, 0x67, 0xf5, 0x5c, 0x6a, 0xeb, 0x16, 0x7a, 0x38, 0xd4, - 0xa1, 0x6f, 0xe2, 0x14, 0xe1, 0x7d, 0x9, 0xfe, 0x31, 0x5e, - 0x62, 0xda, 0x47, 0x88, 0xa0, 0xe8, 0x49, 0xfc, 0x4d, 0x34, - 0xff, 00, 0xc2, 0x43, 0x7, 0x58, 0xd9, 0xbf, 0x1a, 0x87, - 0x97, 0xc7, 0xa4, 0x89, 0xf6, 0x58, 0xe5, 0xf6, 0x13, 0xf9, - 0x9e, 0xa6, 0x2e, 0xa3, 0x3f, 0xc4, 0x29, 0xc2, 0xe1, 0x4f, - 0x47, 0xfd, 0x6b, 0xca, 0x7f, 0xb5, 0xb5, 0xd8, 0x7e, 0xf5, - 0xb4, 0x87, 0xf0, 0xa7, 0xf, 0x14, 0xea, 0xb1, 0x7d, 0xeb, - 0x69, 0x3f, 0xef, 0x9a, 0x97, 0x97, 0x3e, 0x92, 0x44, 0xff, - 00, 0xb5, 0xc7, 0x7a, 0x47, 0xab, 0x8b, 0x93, 0xda, 0x53, - 0xf9, 0xd4, 0x89, 0x7d, 0x32, 0xfd, 0xd9, 0xd8, 0x7f, 0xc0, - 0xab, 0xc9, 0xd7, 0xc7, 0x17, 0x91, 0xfd, 0xfb, 0x77, 0x1f, - 0x81, 0xa9, 0x93, 0xe2, 0x13, 0xaf, 0xde, 0x8d, 0x85, 0x64, - 0xf2, 0xd9, 0xf4, 0xb0, 0x7b, 0x7c, 0x44, 0x77, 0xa7, 0x23, - 0xd6, 0x53, 0x58, 0xbd, 0x4f, 0xbb, 0x75, 0x28, 0xff, 00, - 0x81, 0x1a, 0xb1, 0x1f, 0x89, 0xb5, 0x38, 0xbe, 0xed, 0xe4, - 0xa3, 0xfe, 0x4, 0x6b, 0xc9, 0xa3, 0xf8, 0x88, 0x9d, 0xc3, - 0xf, 0xc6, 0xac, 0xc7, 0xf1, 0xa, 0x3, 0xfc, 0x44, 0x54, - 0x7f, 0x67, 0xd6, 0x5b, 0x21, 0xac, 0xc2, 0xac, 0x77, 0x52, - 0x5f, 0x79, 0xeb, 0x71, 0xf8, 0xe3, 0x5a, 0x8b, 0xa5, 0xf4, - 0x9f, 0xf7, 0xd5, 0x5c, 0x83, 0xe2, 0x6e, 0xbd, 0x6, 0x31, - 0x74, 0xc7, 0xea, 0x4d, 0x79, 0x14, 0x7e, 0x3e, 0xb6, 0x6e, - 0xaf, 0x8a, 0xb3, 0x1f, 0x8d, 0xad, 0x5b, 0xfe, 0x5a, 0x8a, - 0x5f, 0x55, 0xc4, 0x47, 0x6b, 0xfd, 0xec, 0xd5, 0x66, 0xf3, - 0x8f, 0xdb, 0x92, 0x3d, 0x8e, 0x1f, 0x8c, 0x3e, 0x20, 0x8b, - 0x1f, 0xe9, 0x4, 0xe3, 0xdc, 0xd6, 0x8d, 0xbf, 0xc7, 0x7d, - 0x7a, 0x1c, 0x7c, 0xe4, 0xff, 00, 0xc0, 0x8d, 0x78, 0x9a, - 0x78, 0xbe, 0xd5, 0xbf, 0xe5, 0xaa, 0xfe, 0x75, 0x3a, 0x78, - 0x9e, 0xd9, 0xff, 00, 0xe5, 0xa2, 0xfe, 0x74, 0x72, 0xe2, - 0xe1, 0xb3, 0x7f, 0x7b, 0x3a, 0x23, 0x9e, 0x54, 0x5f, 0xf2, - 0xf5, 0x9e, 0xef, 0x6f, 0xfb, 0x45, 0x6b, 0x71, 0x63, 0x73, - 0x31, 0xff, 00, 0x81, 0x1a, 0xd6, 0xb6, 0xfd, 0xa6, 0xf5, - 0x48, 0xb1, 0xb8, 0x39, 0xff, 00, 0x81, 0x57, 0xcf, 0x29, - 0xaf, 0xdb, 0xb7, 0xf1, 0xaf, 0xe7, 0x52, 0xae, 0xb1, 0x3, - 0x7f, 0x10, 0xfc, 0xea, 0xd6, 0x23, 0x1b, 0xd, 0xa6, 0xce, - 0xb8, 0x71, 0x5, 0x65, 0xb5, 0x53, 0xe9, 0x4b, 0x6f, 0xda, - 0x92, 0xec, 0x7f, 0xac, 0xdd, 0x5a, 0xd6, 0xdf, 0xb5, 0x42, - 0xf1, 0xbd, 0x41, 0xfa, 0x8a, 0xf9, 0x65, 0x75, 0x38, 0x4f, - 0xf1, 0xf, 0xce, 0x9e, 0x2f, 0xa1, 0x6f, 0xe2, 0x15, 0xa2, - 0xcc, 0x71, 0xf1, 0xfb, 0x6c, 0xeb, 0x8f, 0x11, 0x62, 0x3f, - 0x9d, 0x1f, 0x5b, 0xdb, 0x7e, 0xd4, 0x56, 0x6f, 0x8f, 0x30, - 0x20, 0xfc, 0x2b, 0x56, 0xf, 0xda, 0x63, 0x49, 0x93, 0x19, - 0xf2, 0xfe, 0xb9, 0x22, 0xbe, 0x35, 0x17, 0x31, 0x1f, 0xe2, - 0x14, 0xf1, 0x3a, 0x1e, 0x8f, 0xfa, 0xd6, 0xcb, 0x38, 0xc7, - 0x47, 0xed, 0x7e, 0x7, 0x5c, 0x78, 0x8f, 0x11, 0xe4, 0xcf, - 0xb6, 0xad, 0xff, 00, 0x68, 0x6d, 0xe, 0x5c, 0x6e, 0x78, - 0xc7, 0xfc, 0xa, 0xb4, 0xa0, 0xf8, 0xe7, 0xe1, 0xf9, 0xb1, - 0x89, 0x57, 0xfe, 0xfa, 0xaf, 0x85, 0x44, 0xe3, 0xb3, 0xfe, - 0xb4, 0xf5, 0xba, 0x91, 0x7a, 0x4a, 0xc3, 0xe8, 0xd5, 0xb2, - 0xcf, 0x71, 0x8b, 0x74, 0x8e, 0xa8, 0xf1, 0x25, 0x5e, 0xb1, - 0x3e, 0xf8, 0xb7, 0xf8, 0xb9, 0xa0, 0x4c, 0x1, 0xfb, 0x48, - 0x1f, 0x8d, 0x5d, 0x8b, 0xe2, 0x4e, 0x83, 0x37, 0xdd, 0xbc, - 0x5a, 0xfc, 0xff, 00, 0x5d, 0x46, 0xe5, 0x7a, 0x5c, 0x3f, - 0xfd, 0xf5, 0x53, 0xc7, 0xae, 0xea, 0x11, 0xfd, 0xdb, 0xb9, - 0x7, 0xd1, 0xab, 0x75, 0xc4, 0x35, 0xd6, 0xf0, 0x47, 0x44, - 0x78, 0x91, 0xf5, 0x81, 0xfa, 0xd, 0x1f, 0x8d, 0x74, 0x69, - 0x7a, 0x5f, 0x46, 0x3e, 0xa6, 0xac, 0xc7, 0xe2, 0x5d, 0x32, - 0x5f, 0xbb, 0x7b, 0x11, 0xfc, 0x6b, 0xf3, 0xe5, 0x3c, 0x5b, - 0xab, 0x47, 0x8c, 0x5e, 0xcb, 0xff, 00, 0x7d, 0x55, 0xb8, - 0x7c, 0x7f, 0xad, 0xc3, 0xf7, 0x6f, 0x5f, 0xf1, 0x35, 0xb2, - 0xe2, 0x29, 0x7d, 0xaa, 0x7f, 0x89, 0xd1, 0x1e, 0x24, 0xa6, - 0xf7, 0x89, 0xfa, 0x6, 0x9a, 0xb5, 0x9b, 0xfd, 0xdb, 0xa8, - 0x8f, 0xfc, 0x8, 0x54, 0xa9, 0x79, 0x3, 0xfd, 0xd9, 0x91, - 0xbe, 0x8c, 0x2b, 0xe0, 0x48, 0x7e, 0x29, 0xeb, 0xf1, 0x1f, - 0xf8, 0xfb, 0x73, 0xf8, 0xd6, 0x84, 0x1f, 0x1a, 0x7c, 0x41, - 0x7, 0xfc, 0xb7, 0x27, 0xf1, 0xad, 0xe3, 0xc4, 0x50, 0xeb, - 0x4d, 0xfe, 0x7, 0x44, 0x78, 0x87, 0xe, 0xf7, 0x4c, 0xfb, - 0xbc, 0x3a, 0x9e, 0x8c, 0xf, 0xe3, 0x4b, 0x90, 0x7b, 0xd7, - 0xc3, 0xf6, 0xff, 00, 0x1f, 0x35, 0xc8, 0xb1, 0xba, 0x47, - 0x6f, 0xf8, 0x15, 0x6a, 0x5b, 0xfe, 0xd2, 0x1a, 0xc4, 0x3d, - 0x4b, 0xff, 00, 0xdf, 0x55, 0xd1, 0x1e, 0x21, 0xc3, 0xbd, - 0xe2, 0xd1, 0xd1, 0x1c, 0xfb, 0x8, 0xfa, 0x9f, 0x66, 0xd1, - 0x5f, 0x22, 0xdb, 0x7e, 0xd3, 0xba, 0x8a, 0xe3, 0xcc, 0x32, - 0x1f, 0x6c, 0xd6, 0xad, 0xbf, 0xed, 0x4d, 0x38, 0xc6, 0xe0, - 0xdf, 0x8e, 0x2b, 0x68, 0xe7, 0xd8, 0x37, 0xbb, 0x6b, 0xe4, - 0x6f, 0x1c, 0xe7, 0x7, 0x2f, 0xb4, 0x7d, 0x4b, 0x45, 0x7c, - 0xdf, 0x6b, 0xfb, 0x52, 0x46, 0x71, 0xe6, 0x7e, 0xa2, 0xb5, - 0x2d, 0xff, 00, 0x69, 0xfb, 0x17, 0xc0, 0x65, 0x5f, 0xa9, - 0xad, 0xe3, 0x9d, 0x60, 0xa5, 0xf6, 0xce, 0x88, 0xe6, 0x78, - 0x59, 0x6d, 0x33, 0xdf, 0x28, 0xaf, 0x18, 0xb7, 0xfd, 0xa4, - 0x74, 0x87, 0xc6, 0xf3, 0x18, 0xff, 00, 0x81, 0x56, 0x9d, - 0xbf, 0xed, 0x3, 0xa1, 0xcd, 0x8e, 0x57, 0xfe, 0xfb, 0xae, - 0x88, 0xe6, 0x78, 0x39, 0x6d, 0x51, 0x1b, 0xac, 0x6e, 0x1e, - 0x5b, 0x4d, 0x1e, 0xa9, 0x45, 0x79, 0xec, 0x1f, 0x1a, 0xf4, - 0x9, 0x40, 0xcc, 0xa0, 0x7f, 0xc0, 0x85, 0x5f, 0x83, 0xe2, - 0xc6, 0x83, 0x39, 0xe2, 0xe3, 0x1f, 0x88, 0xae, 0x85, 0x8c, - 0xc3, 0xcb, 0x69, 0xa3, 0x55, 0x88, 0xa4, 0xf6, 0x92, 0x3b, - 0x3a, 0x2b, 0x9a, 0x8f, 0xe2, 0x16, 0x87, 0x27, 0xfc, 0xbe, - 0x28, 0xfc, 0x6a, 0xdc, 0x5e, 0x32, 0xd2, 0x26, 0x3f, 0x2d, - 0xec, 0x7f, 0x9d, 0x6c, 0xab, 0x52, 0x7b, 0x49, 0x1a, 0x2a, - 0x90, 0x7d, 0x4d, 0xaa, 0x2b, 0x39, 0x3c, 0x41, 0xa7, 0x3f, - 0x4b, 0xc8, 0xbf, 0xef, 0xaa, 0x9d, 0x35, 0x4b, 0x49, 0x3e, - 0xed, 0xcc, 0x67, 0xfe, 0x4, 0x2a, 0xd4, 0xe2, 0xf6, 0x65, - 0x73, 0x27, 0xd4, 0xb5, 0x55, 0xb5, 0x27, 0xf2, 0xac, 0x2e, - 0x1b, 0xd1, 0x9, 0xfd, 0x2a, 0x41, 0x73, 0xb, 0x74, 0x95, - 0xf, 0xfc, 0x8, 0x56, 0x4f, 0x8b, 0xb5, 0x58, 0x34, 0xef, - 0xf, 0x5e, 0xcd, 0x24, 0xaa, 0x2, 0xc6, 0x7f, 0x88, 0x52, - 0x9c, 0x92, 0x8b, 0x62, 0x94, 0x92, 0x8b, 0x67, 0xc3, 0xff, - 00, 0x18, 0xef, 0x47, 0xf6, 0xe4, 0xc4, 0x9f, 0xe2, 0x3f, - 0xce, 0xbe, 0x6a, 0xf8, 0x9d, 0xe2, 0x25, 0x8a, 0xdd, 0xe2, - 0x57, 0xc1, 0xc1, 0xef, 0x5e, 0xa7, 0xf1, 0xaf, 0xc6, 0xf0, - 0x7f, 0x69, 0x5c, 0x4a, 0xae, 0x32, 0x58, 0xe0, 0x66, 0xbe, - 0x67, 0xbe, 0x87, 0x53, 0xf8, 0x83, 0xe2, 0x5b, 0x1d, 0x13, - 0x4b, 0x89, 0xee, 0x75, 0x2d, 0x4a, 0xe1, 0x6d, 0xad, 0xe2, - 0x5e, 0x4b, 0x33, 0x1c, 0xa, 0xf8, 0x3c, 0xbf, 0xc, 0xe5, - 0x39, 0x56, 0x7d, 0x5b, 0xb1, 0xf8, 0x9d, 0x78, 0x4b, 0x33, - 0xcc, 0xb9, 0x21, 0xf0, 0xa6, 0x7e, 0x80, 0x7f, 0xc1, 0x2d, - 0xbc, 0x19, 0x36, 0x97, 0xf0, 0xa3, 0xc5, 0x3e, 0x28, 0xb8, - 0x8c, 0xab, 0x6b, 0xda, 0xb6, 0xd8, 0x58, 0xff, 00, 0x14, - 0x30, 0x26, 0xc0, 0x7f, 0xef, 0xb6, 0x93, 0xf2, 0xaf, 0xb5, - 0x6b, 0x88, 0xf8, 0x27, 0xf0, 0xda, 0xdf, 0xe1, 0xf, 0xc2, - 0x9f, 0xc, 0xf8, 0x42, 0xdc, 0xab, 0x8d, 0x2e, 0xcd, 0x22, - 0x92, 0x45, 0x18, 0xf3, 0x25, 0x3f, 0x34, 0x8d, 0xf8, 0xb1, - 0x63, 0x5d, 0xbd, 0x7d, 0xec, 0x23, 0xcb, 0x14, 0x8f, 0xda, - 0x68, 0xc3, 0xd9, 0x53, 0x8c, 0x3b, 0x20, 0xa2, 0x8a, 0x2a, - 0xcd, 0x82, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0xa3, 0x92, - 0xde, 0x29, 0x86, 0x24, 0x89, 0x1c, 0x7f, 0xb4, 0xa0, 0xd4, - 0x94, 0x51, 0xb8, 0x19, 0x97, 0x3e, 0x19, 0xd1, 0xef, 0x41, - 0x17, 0x1a, 0x55, 0x94, 0xc0, 0xf6, 0x92, 0xdd, 0xf, 0xf3, - 0x15, 0x97, 0x75, 0xf0, 0xcb, 0xc2, 0x77, 0x83, 0x12, 0xf8, - 0x7b, 0x4f, 0x3f, 0xee, 0xc0, 0xab, 0xfc, 0xb1, 0x5d, 0x3d, - 0x15, 0x9b, 0xa7, 0x9, 0x6f, 0x14, 0x64, 0xe9, 0x53, 0x97, - 0xc5, 0x14, 0xfe, 0x47, 0x5, 0x75, 0xf0, 0x2b, 0xc0, 0xd7, - 0x9f, 0x7f, 0x40, 0x85, 0x7f, 0xdc, 0x91, 0xd7, 0xf9, 0x35, - 0x64, 0xdc, 0x7e, 0xcd, 0x1e, 0x2, 0xb8, 0x24, 0xff, 00, - 0x65, 0xcb, 0x1e, 0x7b, 0x24, 0xed, 0xfd, 0x73, 0x5e, 0xa7, - 0x45, 0x62, 0xf0, 0xb4, 0x1e, 0xf0, 0x5f, 0x71, 0x83, 0xc1, - 0xe1, 0xa5, 0xbd, 0x35, 0xf7, 0x23, 0xc5, 0xae, 0x7f, 0x64, - 0xbf, 0x3, 0x5c, 0x64, 0xa8, 0xbe, 0x8b, 0x3d, 0x2, 0xca, - 0xa4, 0xf, 0xcd, 0x6b, 0x16, 0xeb, 0xf6, 0x32, 0xf0, 0xb4, - 0xa1, 0xbc, 0xad, 0x46, 0xee, 0x33, 0xdb, 0x72, 0x29, 0xff, - 00, 0xa, 0xfa, 0xe, 0x8a, 0xcd, 0xe0, 0x70, 0xef, 0xec, - 0x19, 0x3c, 0xbb, 0x8, 0xff, 00, 0xe5, 0xda, 0x3e, 0x61, - 0xbb, 0xfd, 0x88, 0xb4, 0xe7, 0x53, 0xe4, 0xeb, 0x99, 0x3d, - 0x83, 0xdb, 0x60, 0x7f, 0xe8, 0x55, 0xcf, 0xdf, 0x7e, 0xc3, - 0x77, 0x27, 0xfd, 0x46, 0xa5, 0x63, 0x2f, 0xfb, 0xe1, 0x97, - 0xff, 00, 0x65, 0x35, 0xf5, 0xf5, 0x15, 0x93, 0xcb, 0xb0, - 0xef, 0x64, 0xd7, 0xcd, 0x98, 0xbc, 0xab, 0x8, 0xfe, 0xcd, - 0xbe, 0x6c, 0xf8, 0x92, 0xf7, 0xf6, 0x18, 0xd6, 0xb9, 0xf2, - 0xdb, 0x4e, 0x97, 0xfd, 0xd9, 0x48, 0xfe, 0x6a, 0x2b, 0x6, - 0xfb, 0xf6, 0x1e, 0xf1, 0x2c, 0x64, 0xec, 0xd3, 0xad, 0xa6, - 0xf7, 0x4b, 0x84, 0xfe, 0xa4, 0x57, 0xdf, 0x34, 0x54, 0x3c, - 0xb2, 0x8f, 0x46, 0xfe, 0xf3, 0x7, 0x93, 0x61, 0x9f, 0x57, - 0xf7, 0xff, 00, 0xc0, 0x3f, 0x39, 0xaf, 0x7f, 0x63, 0x1f, - 0x15, 0xdb, 0x92, 0x3f, 0xb0, 0x65, 0x6f, 0xfa, 0xe7, 0x22, - 0xb7, 0xf2, 0x26, 0xb0, 0x2f, 0x7f, 0x65, 0xf, 0x14, 0x5a, - 0x12, 0xe, 0x83, 0xa8, 0xae, 0x3f, 0xbb, 0x13, 0x37, 0xf2, - 0x15, 0xfa, 0x71, 0x45, 0x43, 0xcb, 0x23, 0xd2, 0x6c, 0xc2, - 0x59, 0x15, 0x7, 0xb4, 0x9f, 0xe1, 0xfe, 0x47, 0xe5, 0x3d, - 0xef, 0xec, 0xfd, 0xad, 0xd9, 0x13, 0xe6, 0x59, 0x5e, 0xc3, - 0xfe, 0xfa, 0x11, 0xfc, 0xc5, 0x64, 0x4f, 0xf0, 0x8f, 0x56, - 0xb7, 0x24, 0x3, 0x32, 0xff, 00, 0xbc, 0x2b, 0xf5, 0xb8, - 0xa8, 0x3d, 0x40, 0x35, 0xc, 0x96, 0x16, 0xd3, 0xc, 0x49, - 0x6f, 0x14, 0x83, 0xfd, 0xa4, 0x6, 0xb3, 0x79, 0x6c, 0xfa, - 0x54, 0xfc, 0x3f, 0xe0, 0x9c, 0x92, 0xe1, 0xda, 0x72, 0xfb, - 0x4b, 0xff, 00, 0x1, 0xff, 00, 0x82, 0x7e, 0x45, 0xc9, - 0xf0, 0xeb, 0x5a, 0x83, 0xa4, 0x8f, 0xf8, 0xa9, 0xaa, 0xcf, - 0xe1, 0x1d, 0x7e, 0x1e, 0x8f, 0xf9, 0xe4, 0x57, 0xeb, 0x7c, - 0xfe, 0x15, 0xd1, 0x6e, 0xbf, 0xd7, 0x69, 0x16, 0x32, 0xff, - 00, 0xbf, 0x6c, 0x87, 0xfa, 0x56, 0x65, 0xcf, 0xc3, 0xf, - 0x9, 0x5d, 0xff, 00, 0xad, 0xf0, 0xee, 0x9c, 0x7d, 0xc5, - 0xba, 0xaf, 0xf2, 0xa8, 0x79, 0x75, 0x6e, 0x93, 0x4f, 0xe4, - 0x72, 0x4f, 0x86, 0x29, 0xbd, 0xb9, 0x7e, 0xe3, 0xf2, 0x7c, - 0xe9, 0x3e, 0x22, 0x83, 0xa7, 0x3f, 0xf0, 0x23, 0x4d, 0xff, - 00, 0x8a, 0x8a, 0x1f, 0xf9, 0x66, 0x5b, 0x1e, 0xf5, 0xfa, - 0x9b, 0x75, 0xf0, 0x2b, 0xc0, 0xb7, 0x79, 0xdf, 0xe1, 0xeb, - 0x75, 0xcf, 0xfc, 0xf3, 0x77, 0x5f, 0xe4, 0x6b, 0x26, 0xe7, - 0xf6, 0x67, 0xf0, 0x5, 0xc0, 0x23, 0xfb, 0x2a, 0x48, 0xb3, - 0xdd, 0x27, 0x6f, 0xeb, 0x9a, 0xc9, 0xe5, 0xf5, 0xff, 00, - 0xba, 0xff, 00, 0xaf, 0x43, 0x8e, 0x7c, 0x29, 0x17, 0xf6, - 0x63, 0xf7, 0xbf, 0xf2, 0x3f, 0x32, 0x3f, 0xb5, 0xb5, 0xc8, - 0x4f, 0xcd, 0x6e, 0xe7, 0xf0, 0xcd, 0x28, 0xf1, 0x46, 0xab, - 0x17, 0xdf, 0xb7, 0x7f, 0xfb, 0xe6, 0xbf, 0x48, 0x2e, 0xff, - 00, 0x64, 0xbf, 0x2, 0xdc, 0x8f, 0x91, 0x2f, 0x61, 0xff, - 00, 0x76, 0x55, 0x3f, 0xcd, 0x6b, 0x1e, 0xf3, 0xf6, 0x33, - 0xf0, 0xa4, 0xc3, 0xf7, 0x1a, 0x85, 0xe4, 0x47, 0xfd, 0xb5, - 0x56, 0xff, 00, 0xa, 0xc9, 0xe0, 0x2b, 0x7f, 0x22, 0x67, - 0x24, 0xb8, 0x51, 0xad, 0xa1, 0xf7, 0x48, 0xfc, 0xfa, 0x5f, - 0x1c, 0x5d, 0xc7, 0xf7, 0xe1, 0x61, 0xff, 00, 0x1, 0x35, - 0x32, 0x7c, 0x41, 0x71, 0xf7, 0x90, 0x8f, 0xce, 0xbe, 0xe2, - 0xbd, 0xfd, 0x88, 0x74, 0xc9, 0x3f, 0xe3, 0xdf, 0x5b, 0xc0, - 0xff, 00, 0xa6, 0x96, 0xdf, 0xe0, 0xd5, 0x81, 0x79, 0xfb, - 0xc, 0x4e, 0xcc, 0x7c, 0x9d, 0x52, 0xc5, 0xd7, 0xb6, 0xf5, - 0x65, 0x3f, 0xfa, 0x9, 0xac, 0x1e, 0x2, 0xa7, 0x5a, 0x5f, - 0x91, 0xcb, 0x2e, 0x17, 0xab, 0x1d, 0xa3, 0x2f, 0xbd, 0x7f, - 0x99, 0xf2, 0x24, 0x7f, 0x11, 0x13, 0xbe, 0x6a, 0xd4, 0x7f, - 0x10, 0xa0, 0x38, 0xcb, 0x11, 0x5f, 0x4a, 0x5d, 0xfe, 0xc2, - 0xfa, 0xcf, 0x3e, 0x5b, 0xe9, 0xb2, 0xe, 0xd8, 0x90, 0x8f, - 0xe6, 0xb5, 0x83, 0x79, 0xfb, 0xe, 0xf8, 0x99, 0x41, 0x29, - 0xa7, 0xdb, 0x49, 0xfe, 0xe5, 0xc2, 0xf, 0xeb, 0x58, 0x3c, - 0xf, 0x7a, 0x4c, 0xe6, 0x97, 0xe, 0xe2, 0x23, 0xb7, 0x3f, - 0xdd, 0x73, 0xc4, 0xa3, 0xf1, 0xed, 0xb3, 0x7f, 0xcb, 0x4f, - 0xd2, 0xac, 0xc7, 0xe3, 0x7b, 0x66, 0xff, 00, 0x96, 0xa2, - 0xbd, 0x16, 0xf7, 0xf6, 0x2e, 0xf1, 0x64, 0xa, 0xcd, 0xfd, - 0x83, 0x23, 0x1, 0xff, 00, 0x3c, 0xe5, 0x56, 0xfd, 0x3, - 0x57, 0x3f, 0x7d, 0xfb, 0x28, 0x78, 0xa6, 0xd0, 0x16, 0x7d, - 0x3, 0x51, 0x50, 0x3b, 0xac, 0x4c, 0x7f, 0xa5, 0x60, 0xf0, - 0x54, 0xd6, 0xf0, 0x6b, 0xe4, 0x73, 0xcb, 0x25, 0xc5, 0xc3, - 0xed, 0xc9, 0x7a, 0xa6, 0x61, 0x27, 0x8c, 0x2d, 0x5b, 0xfe, - 0x5a, 0xad, 0x58, 0x4f, 0x14, 0x5b, 0x3f, 0xfc, 0xb4, 0x5f, - 0xce, 0xaa, 0x5f, 0x7e, 0xcf, 0xda, 0xe5, 0x8e, 0x7c, 0xdb, - 0x1b, 0xf8, 0xf, 0xfb, 0x71, 0xb0, 0xfe, 0x62, 0xb2, 0x27, - 0xf8, 0x47, 0xaa, 0xdb, 0xe7, 0x99, 0xd7, 0xea, 0xb5, 0x83, - 0xc2, 0x50, 0xf4, 0x39, 0xde, 0x5f, 0x8b, 0x8f, 0xfc, 0xbc, - 0x5f, 0x34, 0x75, 0x2b, 0xaf, 0xdb, 0xb7, 0xf1, 0x8f, 0xce, - 0xa5, 0x5d, 0x62, 0x16, 0xee, 0x2b, 0x83, 0x93, 0xe1, 0xd6, - 0xb3, 0xf, 0xdd, 0x95, 0xc7, 0xd5, 0x6a, 0xbb, 0xf8, 0x3f, - 0x5e, 0x83, 0xa4, 0x9f, 0xce, 0xb3, 0xfa, 0x95, 0x17, 0xb4, - 0x88, 0xfa, 0xae, 0x35, 0x6d, 0x28, 0xb3, 0xd2, 0x6, 0xa9, - 0x9, 0xfe, 0x2a, 0x78, 0xbf, 0x84, 0xff, 00, 0x10, 0xaf, - 0x2f, 0x3a, 0x37, 0x88, 0x61, 0xe8, 0x73, 0xff, 00, 0x2, - 0xa6, 0x95, 0xf1, 0xc, 0x3d, 0x50, 0x9f, 0xa3, 0x54, 0xbc, - 0xbe, 0x1d, 0x24, 0x4f, 0xb1, 0xc7, 0x2f, 0xb2, 0x9f, 0xcc, - 0xf5, 0x51, 0x77, 0x11, 0xfe, 0x2a, 0x70, 0x9e, 0x33, 0xfc, - 0x55, 0xe5, 0x3, 0x52, 0xd7, 0xa1, 0xfb, 0xd0, 0x39, 0xa7, - 0x7f, 0xc2, 0x4d, 0xaa, 0xc5, 0xf7, 0xe0, 0x93, 0xfe, 0xf9, - 0xa9, 0x79, 0x77, 0x69, 0x12, 0xd6, 0x32, 0x3b, 0xd2, 0x3d, - 0x58, 0x4c, 0xbd, 0x9a, 0x9e, 0xb3, 0x11, 0xd2, 0x43, 0xf9, - 0xd7, 0x94, 0x2f, 0x8d, 0x6f, 0x53, 0xef, 0x42, 0xff, 00, - 0x8a, 0x9a, 0x95, 0x3e, 0x20, 0x4a, 0xbf, 0x79, 0x18, 0x7e, - 0x6, 0xb3, 0x79, 0x6c, 0xfa, 0x32, 0x7d, 0xae, 0x22, 0x3b, - 0xd2, 0x67, 0xaa, 0xad, 0xd4, 0x8b, 0xd2, 0x56, 0x1f, 0x8d, - 0x4c, 0x9a, 0xa5, 0xda, 0x7d, 0xdb, 0x89, 0x7, 0xd1, 0xab, - 0xcb, 0x23, 0xf8, 0x88, 0xbd, 0xc1, 0x15, 0x66, 0x3f, 0x88, - 0x50, 0x9e, 0xac, 0x6b, 0x37, 0x97, 0x55, 0x5d, 0x3, 0xeb, - 0xb5, 0x23, 0xbc, 0x64, 0x8f, 0x51, 0x8f, 0xc4, 0x3a, 0x8c, - 0x47, 0x2b, 0x75, 0x27, 0xfd, 0xf4, 0x6a, 0xdc, 0x5e, 0x33, - 0xd6, 0x22, 0xfb, 0xb7, 0x8e, 0x3f, 0x1a, 0xf2, 0xd8, 0xfc, - 0x7d, 0x6e, 0x7f, 0x8c, 0xd4, 0xeb, 0xe3, 0xab, 0x6c, 0x64, - 0xcb, 0x8a, 0xcf, 0xea, 0x35, 0xa3, 0xb2, 0x34, 0x59, 0xa4, - 0xa3, 0xd6, 0x4b, 0xef, 0x3d, 0x56, 0x1f, 0x88, 0x9a, 0xe4, - 0x3d, 0x2e, 0xd8, 0xfd, 0x4d, 0x5e, 0x8f, 0xe2, 0xe6, 0xbd, - 0x7, 0xfc, 0xbc, 0xd7, 0x8b, 0x5c, 0x7c, 0x42, 0xb4, 0x88, - 0x1f, 0xde, 0xd6, 0x16, 0xa7, 0xf1, 0x4e, 0xde, 0x30, 0x76, - 0x36, 0xe3, 0x5d, 0x14, 0xf0, 0x78, 0xa7, 0xb3, 0x6b, 0xe6, - 0xcd, 0x16, 0x73, 0x5f, 0x6a, 0x6e, 0x4c, 0xfa, 0x2f, 0xfe, - 0x17, 0xe6, 0xb1, 0x62, 0x32, 0xd3, 0xee, 0x23, 0xde, 0xb8, - 0x5f, 0x88, 0x3f, 0xb4, 0xad, 0xfd, 0xed, 0x94, 0xd0, 0xbd, - 0xe3, 0x7c, 0xc3, 0x5, 0x1, 0xe2, 0xbe, 0x7b, 0xd6, 0x7e, - 0x22, 0xde, 0x5f, 0x16, 0x58, 0x89, 0x55, 0x35, 0x99, 0xe1, - 0xdf, 0xb, 0xf8, 0x87, 0xe2, 0x26, 0xbb, 0x6f, 0xa5, 0xe8, - 0xd6, 0x17, 0x3a, 0xae, 0xa3, 0x70, 0xdb, 0x63, 0x82, 0x4, - 0x2c, 0x4f, 0xf8, 0x1, 0xea, 0x78, 0x15, 0xed, 0xd0, 0xc0, - 0xd4, 0x4a, 0xd5, 0x66, 0xdf, 0x95, 0xcd, 0xe3, 0x8b, 0xcc, - 0x71, 0x5e, 0xe5, 0x49, 0xf2, 0xc5, 0xf4, 0xea, 0xc8, 0x7c, - 0x53, 0xe2, 0xcb, 0x9f, 0x10, 0x5d, 0x33, 0xb3, 0x33, 0x64, - 0xf0, 0x7, 0x7a, 0xfb, 0xf3, 0xf6, 0x15, 0xfd, 0x91, 0x66, - 0xf0, 0x1a, 0x45, 0xf1, 0xf, 0xc6, 0x76, 0x5e, 0x5f, 0x88, - 0xee, 0x13, 0x3a, 0x5d, 0x94, 0x87, 0x26, 0xce, 0x26, 0x5e, - 0x64, 0x71, 0xda, 0x46, 0x7, 0xa7, 0xf0, 0x8f, 0x73, 0xc6, - 0xcf, 0xec, 0xb3, 0xfb, 0xb, 0xe9, 0xff, 00, 0xc, 0x65, - 0xb7, 0xf1, 0x37, 0x8d, 0xd2, 0xdf, 0x57, 0xf1, 0x3a, 0x10, - 0xf6, 0xd6, 0x6a, 0x7c, 0xcb, 0x7b, 0x2e, 0x3a, 0x9c, 0x8c, - 0x3c, 0x9e, 0xfd, 0x7, 0x6c, 0xf5, 0xaf, 0xae, 0xab, 0xe9, - 0xf0, 0xf8, 0x75, 0x4, 0x9b, 0x5e, 0x88, 0xfd, 0xf, 0x26, - 0xca, 0x56, 0x12, 0x2a, 0xa5, 0x45, 0x67, 0xd1, 0x7f, 0x9f, - 0x98, 0x51, 0x45, 0x15, 0xe8, 0x1f, 0x58, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x21, 00, 0xf5, 0xa8, 0xa5, 0xb3, 0xb7, - 0x9b, 0xfd, 0x64, 0x11, 0xc9, 0xfe, 0xf2, 0x3, 0x45, 0x14, - 0xad, 0x71, 0x5a, 0xe5, 0x19, 0xfc, 0x2d, 0xa3, 0x5c, 0x92, - 0x66, 0xd2, 0x2c, 0x65, 0x27, 0xbb, 0xdb, 0x21, 0xfe, 0x95, - 0x9b, 0x71, 0xf0, 0xcf, 0xc2, 0x77, 0x44, 0x99, 0x7c, 0x3b, - 0xa6, 0xb1, 0x3f, 0xf4, 0xec, 0xa3, 0xf9, 0xa, 0x28, 0xa8, - 0x74, 0xe0, 0xf7, 0x8a, 0x33, 0x74, 0xa9, 0xcb, 0x78, 0xaf, - 0xb8, 0xc7, 0xbb, 0xf8, 0x13, 0xe0, 0x5b, 0xdc, 0xef, 0xf0, - 0xfd, 0xba, 0x93, 0xde, 0x36, 0x65, 0xfe, 0x46, 0xb1, 0xee, - 0xff, 00, 0x66, 0x4f, 0x1, 0x5d, 0x74, 0xd3, 0xa5, 0x87, - 0xfe, 0xb9, 0xcc, 0x7f, 0xae, 0x68, 0xa2, 0xb1, 0x78, 0x5a, - 0xf, 0x78, 0x2f, 0xb8, 0xc2, 0x58, 0x3c, 0x34, 0xb7, 0xa6, - 0xbe, 0xe4, 0x63, 0x5d, 0x7e, 0xc8, 0xbe, 0xa, 0x9f, 0xee, - 0x49, 0x7d, 0x17, 0xb0, 0x74, 0x3f, 0xfb, 0x2d, 0x64, 0x5d, - 0x7e, 0xc6, 0x1e, 0x19, 0x97, 0x3e, 0x4e, 0xa9, 0x77, 0x17, - 0xfb, 0xd1, 0xab, 0x7f, 0x85, 0x14, 0x56, 0x6f, 0x3, 0x86, - 0x7f, 0x60, 0xc5, 0xe5, 0xd8, 0x47, 0xff, 00, 0x2e, 0xd1, - 0x8b, 0x7b, 0xfb, 0x10, 0x69, 0xd2, 0x3, 0xe4, 0x6b, 0xdc, - 0xf6, 0x12, 0x5a, 0xff, 00, 0x83, 0x56, 0xd, 0xf7, 0xec, - 0x31, 0x71, 0x83, 0xf6, 0x7d, 0x5a, 0xca, 0x53, 0xd8, 0x49, - 0x1b, 0x2f, 0xf4, 0x34, 0x51, 0x59, 0xbc, 0xbb, 0xe, 0xf6, - 0x56, 0xf9, 0xb3, 0x27, 0x95, 0x61, 0x1f, 0xd9, 0xb7, 0xcd, - 0x98, 0x17, 0xdf, 0xb0, 0xce, 0xb8, 0xa0, 0xf9, 0x6d, 0xa7, - 0x4f, 0xec, 0xb2, 0x63, 0xf9, 0xa8, 0xae, 0x7e, 0xff, 00, - 0xf6, 0x24, 0xf1, 0x44, 0x59, 0xd9, 0xa5, 0xc1, 0x37, 0xbc, - 0x73, 0x47, 0xfd, 0x5a, 0x8a, 0x2b, 0x29, 0x65, 0xb4, 0xba, - 0x37, 0xf7, 0xff, 00, 0xc0, 0x39, 0xe5, 0x93, 0x61, 0xba, - 0x37, 0xf7, 0xff, 00, 0xc0, 0x30, 0x2f, 0x3f, 0x63, 0x6f, - 0x16, 0x43, 0xff, 00, 0x32, 0xfc, 0xed, 0xff, 00, 0x5c, - 0xd9, 0x5b, 0xf9, 0x1a, 0xc1, 0xbf, 0xfd, 0x94, 0x3c, 0x55, - 0x6d, 0x90, 0x7c, 0x3f, 0xa9, 0x8f, 0x75, 0x85, 0x98, 0x7e, - 0x82, 0x8a, 0x2b, 0x86, 0xa6, 0x16, 0x34, 0xf6, 0x93, 0xfe, - 0xbe, 0x47, 0x97, 0x5f, 0x2c, 0xa3, 0x4d, 0x68, 0xdf, 0xe1, - 0xfe, 0x46, 0xb, 0x7e, 0xcc, 0x1e, 0x23, 0xb9, 0x9f, 0xcb, - 0x5d, 0x1e, 0xfc, 0xbe, 0x7a, 0x1b, 0x77, 0x3f, 0xd2, 0xb4, - 0x34, 0xff, 00, 0xd8, 0x8f, 0xc7, 0x7a, 0xc4, 0xaa, 0xb0, - 0xe8, 0x57, 0x10, 0x8c, 0xfd, 0xfb, 0x8c, 0x44, 0xb8, 0xf5, - 0xf9, 0x88, 0xa2, 0x8a, 0x58, 0x7a, 0x4e, 0xa4, 0xac, 0xe4, - 0xff, 00, 0xf, 0xf2, 0x38, 0x68, 0x65, 0x54, 0x31, 0x4e, - 0xd3, 0x6d, 0x7a, 0x5b, 0xfc, 0x8f, 0x62, 0xf8, 0x79, 0xff, - 00, 0x4, 0xdc, 0x88, 0x3a, 0x5c, 0x78, 0xc3, 0x5c, 0x8, - 0xa0, 0x83, 0xf6, 0x3d, 0x34, 0x6e, 0x63, 0xec, 0x64, 0x61, - 0x81, 0xf8, 0x3, 0xf5, 0xaf, 0xae, 0x3e, 0x1d, 0xfc, 0x27, - 0xf0, 0xaf, 0xc2, 0xad, 0x29, 0x6c, 0x3c, 0x33, 0xa3, 0xdb, - 0xe9, 0xc9, 0x8c, 0x3c, 0xca, 0xbb, 0xa6, 0x97, 0xdd, 0xdc, - 0xf2, 0x68, 0xa2, 0xbe, 0x82, 0x14, 0x61, 0x4f, 0x6d, 0xcf, - 0xac, 0xc1, 0xe5, 0x98, 0x5c, 0xe, 0xb4, 0x61, 0xaf, 0x77, - 0xab, 0xfb, 0xff, 00, 0xc8, 0xeb, 0xa8, 0xa2, 0x8a, 0xd8, - 0xf5, 0x42, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0xf, - 0xff, 0xd9, 0}; - -static const char data_runtime_shtml[] = { - /* /runtime.shtml */ - 0x2f, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x20, 0x6f, 0x6e, 0x4c, 0x6f, 0x61, 0x64, - 0x3d, 0x22, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x73, - 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x28, - 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x6c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x68, 0x72, 0x65, 0x66, 0x3d, - 0x27, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x73, - 0x68, 0x74, 0x6d, 0x6c, 0x27, 0x26, 0x71, 0x75, 0x6f, 0x74, - 0x3b, 0x2c, 0x32, 0x30, 0x30, 0x30, 0x29, 0x22, 0x3e, 0xd, - 0xa, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, - 0x65, 0x3d, 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x3e, - 0xd, 0xa, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, - 0x22, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, - 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x53, - 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x72, 0x75, 0x6e, - 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x52, 0x75, 0x6e, 0x20, 0x54, 0x69, 0x6d, 0x65, - 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, - 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x73, - 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x54, 0x43, 0x50, 0x20, 0x53, 0x74, 0x61, 0x74, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, - 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61, 0x3e, - 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, - 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, - 0x66, 0x72, 0x65, 0x65, 0x72, 0x74, 0x6f, 0x73, 0x2e, 0x6f, - 0x72, 0x67, 0x2f, 0x22, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, - 0x54, 0x4f, 0x53, 0x20, 0x48, 0x6f, 0x6d, 0x65, 0x70, 0x61, - 0x67, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6f, 0x2e, 0x73, 0x68, - 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x49, 0x4f, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x6c, 0x6f, 0x67, 0x6f, 0x2e, 0x6a, 0x70, 0x67, 0x22, 0x3e, - 0x33, 0x37, 0x4b, 0x20, 0x6a, 0x70, 0x67, 0x3c, 0x2f, 0x61, - 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, - 0xd, 0xa, 0x3c, 0x68, 0x72, 0x3e, 0xd, 0xa, 0x3c, 0x62, - 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x32, - 0x3e, 0x52, 0x75, 0x6e, 0x2d, 0x74, 0x69, 0x6d, 0x65, 0x20, - 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, - 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0xd, 0xa, 0x50, 0x61, 0x67, - 0x65, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x72, 0x65, 0x66, - 0x72, 0x65, 0x73, 0x68, 0x20, 0x65, 0x76, 0x65, 0x72, 0x79, - 0x20, 0x32, 0x20, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, - 0x2e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x6e, - 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x63, 0x6f, - 0x75, 0x72, 0x69, 0x65, 0x72, 0x22, 0x3e, 0x3c, 0x70, 0x72, - 0x65, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x41, 0x62, - 0x73, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x25, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x3c, 0x62, - 0x72, 0x3e, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x3c, 0x62, 0x72, 0x3e, 0xd, 0xa, 0x25, 0x21, - 0x20, 0x72, 0x75, 0x6e, 0x2d, 0x74, 0x69, 0x6d, 0x65, 0xd, - 0xa, 0x3c, 0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, - 0x6f, 0x6e, 0x74, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, - 0x6e, 0x74, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, - 0x79, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, - 0x3e, 0xd, 0xa, 0xd, 0xa, 0}; - -static const char data_stats_shtml[] = { - /* /stats.shtml */ - 0x2f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x6e, - 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, - 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x61, 0x20, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, - 0x61, 0x73, 0x6b, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x52, 0x75, 0x6e, - 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, 0x74, 0x61, 0x74, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x43, 0x50, - 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, - 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, - 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, 0x65, 0x65, 0x72, - 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x22, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x20, 0x48, - 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, - 0x6a, 0x70, 0x67, 0x22, 0x3e, 0x33, 0x37, 0x4b, 0x20, 0x6a, - 0x70, 0x67, 0x3c, 0x2f, 0x61, 0x3e, 0xd, 0xa, 0x3c, 0x62, - 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x72, - 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, - 0xd, 0xa, 0x3c, 0x68, 0x32, 0x3e, 0x4e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, - 0x74, 0x69, 0x63, 0x73, 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0xd, - 0xa, 0x3c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x77, 0x69, - 0x64, 0x74, 0x68, 0x3d, 0x22, 0x33, 0x30, 0x30, 0x22, 0x20, - 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x3d, 0x22, 0x30, 0x22, - 0x3e, 0xd, 0xa, 0x3c, 0x74, 0x72, 0x3e, 0x3c, 0x74, 0x64, - 0x20, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x3d, 0x22, 0x6c, 0x65, - 0x66, 0x74, 0x22, 0x3e, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, - 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x63, 0x6f, 0x75, 0x72, - 0x69, 0x65, 0x72, 0x22, 0x3e, 0x3c, 0x70, 0x72, 0x65, 0x3e, - 0xd, 0xa, 0x49, 0x50, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, - 0x74, 0x73, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, - 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, 0xd, 0xa, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x64, 0x65, - 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x44, 0x72, 0x6f, 0x70, - 0x70, 0x65, 0x64, 0xd, 0xa, 0x49, 0x50, 0x20, 0x65, 0x72, - 0x72, 0x6f, 0x72, 0x73, 0x20, 0x20, 0x20, 0x20, 0x49, 0x50, - 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, 0x6c, 0x65, 0x6e, 0x67, - 0x74, 0x68, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x49, 0x50, 0x20, - 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x2c, 0x20, 0x68, 0x69, - 0x67, 0x68, 0x20, 0x62, 0x79, 0x74, 0x65, 0xd, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x49, 0x50, 0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, - 0x68, 0x2c, 0x20, 0x6c, 0x6f, 0x77, 0x20, 0x62, 0x79, 0x74, - 0x65, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x49, 0x50, 0x20, 0x66, - 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0xd, 0xa, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, - 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0xd, 0xa, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x57, 0x72, 0x6f, 0x6e, 0x67, 0x20, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0xd, 0xa, 0x49, - 0x43, 0x4d, 0x50, 0x9, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, - 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x72, 0x65, 0x63, - 0x65, 0x69, 0x76, 0x65, 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x73, 0x65, - 0x6e, 0x74, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, - 0x6b, 0x65, 0x74, 0x73, 0x20, 0x64, 0x72, 0x6f, 0x70, 0x70, - 0x65, 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x54, 0x79, 0x70, - 0x65, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0xd, 0xa, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, - 0x6d, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0xd, 0xa, - 0x54, 0x43, 0x50, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, - 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0xd, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, 0xd, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x64, - 0x72, 0x6f, 0x70, 0x70, 0x65, 0x64, 0xd, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x20, - 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0xd, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x44, 0x61, 0x74, 0x61, 0x20, 0x70, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x73, 0x20, 0x77, 0x69, 0x74, 0x68, 0x6f, 0x75, - 0x74, 0x20, 0x41, 0x43, 0x4b, 0x73, 0xd, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x52, 0x65, 0x73, 0x65, 0x74, 0x73, 0xd, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x52, 0x65, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, - 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x61, 0xd, 0xa, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x53, 0x79, 0x6e, 0x20, 0x74, 0x6f, 0x20, - 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x64, 0x20, 0x70, 0x6f, 0x72, - 0x74, 0xd, 0xa, 0x55, 0x44, 0x50, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x73, 0x20, 0x64, 0x72, 0x6f, 0x70, 0x70, 0x65, - 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x73, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, - 0x65, 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, - 0x6b, 0x65, 0x74, 0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, 0xd, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x73, 0x20, 0x63, 0x68, 0x6b, 0x65, 0x72, 0x72, 0xd, 0xa, - 0x9, 0x20, 0x20, 0x20, 0x20, 0x20, 0x4e, 0x6f, 0x20, 0x63, - 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, - 0x61, 0x76, 0x61, 0x6c, 0x69, 0x61, 0x62, 0x6c, 0x65, 0xd, - 0xa, 0x3c, 0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, - 0x6f, 0x6e, 0x74, 0x3e, 0x3c, 0x2f, 0x74, 0x64, 0x3e, 0x3c, - 0x74, 0x64, 0x3e, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, - 0x61, 0x63, 0x65, 0x3d, 0x22, 0x63, 0x6f, 0x75, 0x72, 0x69, - 0x65, 0x72, 0x22, 0x3e, 0x3c, 0x70, 0x72, 0x65, 0x3e, 0x25, - 0x21, 0x20, 0x6e, 0x65, 0x74, 0x2d, 0x73, 0x74, 0x61, 0x74, - 0x73, 0xd, 0xa, 0x3c, 0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, - 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0x3c, 0x2f, 0x74, 0x64, - 0x3e, 0x3c, 0x2f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x3e, 0xd, - 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xd, 0xa, - 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xd, 0xa, 0x3c, - 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, 0xa, 0}; - -static const char data_tcp_shtml[] = { - /* /tcp.shtml */ - 0x2f, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x6e, - 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, - 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x61, 0x20, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, - 0x61, 0x73, 0x6b, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x52, 0x75, 0x6e, - 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, 0x74, 0x61, 0x74, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x43, 0x50, - 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, - 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, - 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, 0x65, 0x65, 0x72, - 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x22, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x20, 0x48, - 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, - 0x6a, 0x70, 0x67, 0x22, 0x3e, 0x33, 0x37, 0x4b, 0x20, 0x6a, - 0x70, 0x67, 0x3c, 0x2f, 0x61, 0x3e, 0xd, 0xa, 0x3c, 0x62, - 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x72, - 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0xd, 0xa, 0x3c, - 0x68, 0x32, 0x3e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, - 0x20, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0xd, 0xa, 0x3c, - 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x74, 0x61, 0x62, 0x6c, 0x65, - 0x3e, 0xd, 0xa, 0x3c, 0x74, 0x72, 0x3e, 0x3c, 0x74, 0x68, - 0x3e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x3c, 0x2f, 0x74, 0x68, - 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x52, 0x65, 0x6d, 0x6f, 0x74, - 0x65, 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, - 0x53, 0x74, 0x61, 0x74, 0x65, 0x3c, 0x2f, 0x74, 0x68, 0x3e, - 0x3c, 0x74, 0x68, 0x3e, 0x52, 0x65, 0x74, 0x72, 0x61, 0x6e, - 0x73, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x3c, - 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x54, 0x69, - 0x6d, 0x65, 0x72, 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, - 0x68, 0x3e, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x3c, 0x2f, 0x74, - 0x68, 0x3e, 0x3c, 0x2f, 0x74, 0x72, 0x3e, 0xd, 0xa, 0x25, - 0x21, 0x20, 0x74, 0x63, 0x70, 0x2d, 0x63, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0xd, 0xa, 0x3c, - 0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, - 0x74, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, - 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, - 0xd, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, - 0xa, 0xd, 0xa, 0}; - -const struct httpd_fsdata_file file_404_html[] = {{NULL, data_404_html, data_404_html + 10, sizeof(data_404_html) - 10}}; - -const struct httpd_fsdata_file file_index_html[] = {{file_404_html, data_index_html, data_index_html + 12, sizeof(data_index_html) - 12}}; - -const struct httpd_fsdata_file file_index_shtml[] = {{file_index_html, data_index_shtml, data_index_shtml + 13, sizeof(data_index_shtml) - 13}}; - -const struct httpd_fsdata_file file_io_shtml[] = {{file_index_shtml, data_io_shtml, data_io_shtml + 10, sizeof(data_io_shtml) - 10}}; - -const struct httpd_fsdata_file file_logo_jpg[] = {{file_io_shtml, data_logo_jpg, data_logo_jpg + 10, sizeof(data_logo_jpg) - 10}}; - -const struct httpd_fsdata_file file_runtime_shtml[] = {{file_logo_jpg, data_runtime_shtml, data_runtime_shtml + 15, sizeof(data_runtime_shtml) - 15}}; - -const struct httpd_fsdata_file file_stats_shtml[] = {{file_runtime_shtml, data_stats_shtml, data_stats_shtml + 13, sizeof(data_stats_shtml) - 13}}; - -const struct httpd_fsdata_file file_tcp_shtml[] = {{file_stats_shtml, data_tcp_shtml, data_tcp_shtml + 11, sizeof(data_tcp_shtml) - 11}}; - -#define HTTPD_FS_ROOT file_tcp_shtml - -#define HTTPD_FS_NUMFILES 8 diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/webserver/makefsdata b/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/webserver/makefsdata deleted file mode 100644 index a953cdd76..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/webserver/makefsdata +++ /dev/null @@ -1,79 +0,0 @@ -#!/usr/bin/perl - -open(OUTPUT, "> httpd-fsdata.c"); - -chdir("httpd-fs"); - -opendir(DIR, "."); -@files = grep { !/^\./ && !/(CVS|~)/ } readdir(DIR); -closedir(DIR); - -foreach $file (@files) { - - if(-d $file && $file !~ /^\./) { - print "Processing directory $file\n"; - opendir(DIR, $file); - @newfiles = grep { !/^\./ && !/(CVS|~)/ } readdir(DIR); - closedir(DIR); - printf "Adding files @newfiles\n"; - @files = (@files, map { $_ = "$file/$_" } @newfiles); - next; - } -} - -foreach $file (@files) { - if(-f $file) { - - print "Adding file $file\n"; - - open(FILE, $file) || die "Could not open file $file\n"; - binmode FILE; - - $file =~ s-^-/-; - $fvar = $file; - $fvar =~ s-/-_-g; - $fvar =~ s-\.-_-g; - # for AVR, add PROGMEM here - print(OUTPUT "static const char data".$fvar."[] = {\n"); - print(OUTPUT "\t/* $file */\n\t"); - for($j = 0; $j < length($file); $j++) { - printf(OUTPUT "%#02x, ", unpack("C", substr($file, $j, 1))); - } - printf(OUTPUT "0,\n"); - - - $i = 0; - while(read(FILE, $data, 1)) { - if($i == 0) { - print(OUTPUT "\t"); - } - printf(OUTPUT "%#02x, ", unpack("C", $data)); - $i++; - if($i == 10) { - print(OUTPUT "\n"); - $i = 0; - } - } - print(OUTPUT "0};\n\n"); - close(FILE); - push(@fvars, $fvar); - push(@pfiles, $file); - } -} - -for($i = 0; $i < @fvars; $i++) { - $file = $pfiles[$i]; - $fvar = $fvars[$i]; - - if($i == 0) { - $prevfile = "NULL"; - } else { - $prevfile = "file" . $fvars[$i - 1]; - } - print(OUTPUT "const struct httpd_fsdata_file file".$fvar."[] = {{$prevfile, data$fvar, "); - print(OUTPUT "data$fvar + ". (length($file) + 1) .", "); - print(OUTPUT "sizeof(data$fvar) - ". (length($file) + 1) ."}};\n\n"); -} - -print(OUTPUT "#define HTTPD_FS_ROOT file$fvars[$i - 1]\n\n"); -print(OUTPUT "#define HTTPD_FS_NUMFILES $i\n"); diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/webserver/phy.c b/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/webserver/phy.c deleted file mode 100644 index 00dbcca9a..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/webserver/phy.c +++ /dev/null @@ -1,468 +0,0 @@ -/****************************************************************************** -* DISCLAIMER - -* This software is supplied by Renesas Technology Corp. and is only -* intended for use with Renesas products. No other uses are authorized. - -* This software is owned by Renesas Technology Corp. and is protected under -* all applicable laws, including copyright laws. - -* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES -* REGARDING THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, -* INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A -* PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY -* DISCLAIMED. - -* TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS -* TECHNOLOGY CORP. NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE -* FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES -* FOR ANY REASON RELATED TO THE THIS SOFTWARE, EVEN IF RENESAS OR ITS -* AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - -* Renesas reserves the right, without notice, to make changes to this -* software and to discontinue the availability of this software. -* By using this software, you agree to the additional terms and -* conditions found by accessing the following link: -* http://www.renesas.com/disclaimer -****************************************************************************** -* Copyright (C) 2008. Renesas Technology Corp., All Rights Reserved. -******************************************************************************* -* File Name : phy.c -* Version : 1.01 -* Description : Ethernet PHY device driver -****************************************************************************** -* History : DD.MM.YYYY Version Description -* : 15.02.2010 1.00 First Release -* : 06.04.2010 1.01 RX62N changes -******************************************************************************/ - - -/****************************************************************************** -Includes , "Project Includes" -******************************************************************************/ -#include "iodefine.h" -#include "r_ether.h" -#include "phy.h" - -#include "FreeRTOS.h" -#include "task.h" -/****************************************************************************** -Typedef definitions -******************************************************************************/ - -/****************************************************************************** -Macro definitions -******************************************************************************/ - -/****************************************************************************** -Imported global variables and functions (from other files) -******************************************************************************/ - -/****************************************************************************** -Exported global variables and functions (to be accessed by other files) -******************************************************************************/ - -/****************************************************************************** -Private global variables and functions -******************************************************************************/ -unsigned short _phy_read( unsigned short reg_addr ); -void _phy_write( unsigned short reg_addr, unsigned short data ); -void _phy_preamble( void ); -void _phy_reg_set( unsigned short reg_addr, long option ); -void _phy_reg_read( unsigned short *data ); -void _phy_reg_write( unsigned short data ); -void _phy_ta_z0( void ); -void _phy_ta_10( void ); -void _phy_mii_write_1( void ); -void _phy_mii_write_0( void ); - -/** - * External functions - */ - -/****************************************************************************** -* Function Name: phy_init -* Description : Resets Ethernet PHY device -* Arguments : none -* Return Value : none -******************************************************************************/ -short phy_init( void ) -{ - unsigned short reg; - unsigned long count; - - /* Reset PHY */ - _phy_write(BASIC_MODE_CONTROL_REG, 0x8000); - - count = 0; - - do - { - vTaskDelay( 2 / portTICK_PERIOD_MS ); - reg = _phy_read(BASIC_MODE_CONTROL_REG); - count++; - } while (reg & 0x8000 && count < PHY_RESET_WAIT); - - if( count < PHY_RESET_WAIT ) - { - return R_PHY_OK; - } - - return R_PHY_ERROR; -} - -/****************************************************************************** -* Function Name: phy_set_100full -* Description : Set Ethernet PHY device to 100 Mbps full duplex -* Arguments : none -* Return Value : none -******************************************************************************/ -void phy_set_100full( void ) -{ - _phy_write(BASIC_MODE_CONTROL_REG, 0x2100); -} - -/****************************************************************************** -* Function Name: phy_set_10half -* Description : Sets Ethernet PHY device to 10 Mbps half duplexR -* Arguments : none -* Return Value : none -******************************************************************************/ -void phy_set_10half( void ) -{ - _phy_write(BASIC_MODE_CONTROL_REG, 0x0000); -} - -/****************************************************************************** -* Function Name: phy_set_autonegotiate -* Description : Starts autonegotiate and reports the other side's -* : physical capability -* Arguments : none -* Return Value : bit 8 - Full duplex 100 mbps -* : bit 7 - Half duplex 100 mbps -* : bit 6 - Full duplex 10 mbps -* : bit 5 - Half duplex 10 mbps -* : bit 4:0 - Always set to 00001 (IEEE 802.3) -* : -1 if error -******************************************************************************/ -short phy_set_autonegotiate( void ) -{ - unsigned short reg; - unsigned long count; - - _phy_write(AN_ADVERTISEMENT_REG, 0x01E1); - _phy_write(BASIC_MODE_CONTROL_REG, 0x1200); - - count = 0; - - do - { - reg = _phy_read(BASIC_MODE_STATUS_REG); - count++; - vTaskDelay( 100 / portTICK_PERIOD_MS ); - - /* Make sure we don't break out if reg just contains 0xffff. */ - if( reg == 0xffff ) - { - reg = 0; - } - - } while (!(reg & 0x0020) && (count < PHY_AUTO_NEGOTIATON_WAIT)); - - if (count >= PHY_AUTO_NEGOTIATON_WAIT) - { - return R_PHY_ERROR; - } - else - { - /* Get the link partner response */ - reg = (short)_phy_read(AN_LINK_PARTNER_ABILITY_REG); - - if (reg & ( 1 << 8 ) ) - { - return PHY_LINK_100F; - } - if (reg & ( 1 << 7 ) ) - { - return PHY_LINK_100H; - } - if (reg & ( 1 << 6 ) ) - { - return PHY_LINK_10F; - } - if (reg & 1 << 5 ) - { - return PHY_LINK_10H; - } - - return (-1); - } -} - - -/** - * Internal functions - */ - -/****************************************************************************** -* Function Name: _phy_read -* Description : Reads a PHY register -* Arguments : reg_addr - address of the PHY register -* Return Value : read value -******************************************************************************/ -unsigned short _phy_read( unsigned short reg_addr ) -{ - unsigned short data; - - _phy_preamble(); - _phy_reg_set( reg_addr, PHY_READ ); - _phy_ta_z0(); - _phy_reg_read( &data ); - _phy_ta_z0(); - - return( data ); -} - -/****************************************************************************** -* Function Name: _phy_write -* Description : Writes to a PHY register -* Arguments : reg_addr - address of the PHY register -* : data - value -* Return Value : none -******************************************************************************/ -void _phy_write( unsigned short reg_addr, unsigned short data ) -{ - _phy_preamble(); - _phy_reg_set( reg_addr, PHY_WRITE ); - _phy_ta_10(); - _phy_reg_write( data ); - _phy_ta_z0(); -} - -/****************************************************************************** -* Function Name: _phy_preamble -* Description : As preliminary preparation for access to the PHY module register, -* "1" is output via the MII management interface. -* Arguments : none -* Return Value : none -******************************************************************************/ -void _phy_preamble( void ) -{ - short i; - - i = 32; - while( i > 0 ) - { - _phy_mii_write_1(); - i--; - } -} - -/****************************************************************************** -* Function Name: _phy_reg_set -* Description : Sets a PHY device to read or write mode -* Arguments : reg_addr - address of the PHY register -* : option - mode -* Return Value : none -******************************************************************************/ -void _phy_reg_set( unsigned short reg_addr, long option ) -{ - long i; - unsigned short data; - - data = 0; - data = (PHY_ST << 14); /* ST code */ - - if( option == PHY_READ ) - { - data |= (PHY_READ << 12); /* OP code(RD) */ - } - else - { - data |= (PHY_WRITE << 12); /* OP code(WT) */ - } - - data |= (PHY_ADDR << 7); /* PHY Address */ - data |= (reg_addr << 2); /* Reg Address */ - - i = 14; - while( i > 0 ) - { - if( (data & 0x8000) == 0 ) - { - _phy_mii_write_0(); - } - else - { - _phy_mii_write_1(); - } - data <<= 1; - i--; - } -} - -/****************************************************************************** -* Function Name: _phy_reg_read -* Description : Reads PHY register through MII interface -* Arguments : data - pointer to store the data read -* Return Value : none -******************************************************************************/ -void _phy_reg_read( unsigned short *data ) -{ - long i, j; - unsigned short reg_data; - - reg_data = 0; - i = 16; - while( i > 0 ) - { - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000000; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000001; - } - - reg_data <<= 1; - reg_data |= (unsigned short)((ETHERC.PIR.LONG & 0x00000008) >> 3); /* MDI read */ - - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000001; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000000; - } - i--; - } - *data = reg_data; -} - -/****************************************************************************** -* Function Name: _phy_reg_write -* Description : Writes to PHY register through MII interface -* Arguments : data - value to write -* Return Value : none -******************************************************************************/ -void _phy_reg_write( unsigned short data ) -{ - long i; - - i = 16; - while( i > 0 ) - { - if( (data & 0x8000) == 0 ) - { - _phy_mii_write_0(); - } - else - { - _phy_mii_write_1(); - } - i--; - data <<= 1; - } -} - -/****************************************************************************** -* Function Name: _phy_ta_z0 -* Description : Performs bus release so that PHY can drive data -* : for read operation -* Arguments : none -* Return Value : none -******************************************************************************/ -void _phy_ta_z0( void ) -{ - long j; - - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000000; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000001; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000001; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000000; - } -} - -/****************************************************************************** -* Function Name: _phy_ta_10 -* Description : Switches data bus so MII interface can drive data -* : for write operation -* Arguments : none -* Return Value : none -******************************************************************************/ -void _phy_ta_10(void) -{ - _phy_mii_write_1(); - _phy_mii_write_0(); -} - -/****************************************************************************** -* Function Name: _phy_mii_write_1 -* Description : Outputs 1 to the MII interface -* Arguments : none -* Return Value : none -******************************************************************************/ -void _phy_mii_write_1( void ) -{ - long j; - - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000006; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000007; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000007; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000006; - } -} - -/****************************************************************************** -* Function Name: _phy_mii_write_0 -* Description : Outputs 0 to the MII interface -* Arguments : none -* Return Value : none -******************************************************************************/ -void _phy_mii_write_0( void ) -{ - long j; - - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000002; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000003; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000003; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000002; - } -} - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/webserver/phy.h b/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/webserver/phy.h deleted file mode 100644 index 7e063aab8..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/webserver/phy.h +++ /dev/null @@ -1,83 +0,0 @@ -/****************************************************************************** -* DISCLAIMER -* Please refer to http://www.renesas.com/disclaimer -****************************************************************************** - Copyright (C) 2008. Renesas Technology Corp., All Rights Reserved. -******************************************************************************* -* File Name : phy.h -* Version : 1.02 -* Description : Ethernet PHY device driver -****************************************************************************** -* History : DD.MM.YYYY Version Description -* : 15.02.2010 1.00 First Release -* : 17.03.2010 1.01 Modification of macro definitions for access timing -* : 06.04.2010 1.02 RX62N changes -******************************************************************************/ - -#ifndef PHY_H -#define PHY_H - -/****************************************************************************** -Includes , "Project Includes" -******************************************************************************/ - -/****************************************************************************** -Typedef definitions -******************************************************************************/ - -/****************************************************************************** -Macro definitions -******************************************************************************/ -/* Standard PHY Registers */ -#define BASIC_MODE_CONTROL_REG 0 -#define BASIC_MODE_STATUS_REG 1 -#define PHY_IDENTIFIER1_REG 2 -#define PHY_IDENTIFIER2_REG 3 -#define AN_ADVERTISEMENT_REG 4 -#define AN_LINK_PARTNER_ABILITY_REG 5 -#define AN_EXPANSION_REG 6 - -/* Media Independent Interface */ -#define PHY_ST 1 -#define PHY_READ 2 -#define PHY_WRITE 1 -#define PHY_ADDR 0x1F - -#define MDC_WAIT 2 - -/* PHY return definitions */ -#define R_PHY_OK 0 -#define R_PHY_ERROR -1 - -/* Auto-Negotiation Link Partner Status */ -#define PHY_AN_LINK_PARTNER_100BASE 0x0180 -#define PHY_AN_LINK_PARTNER_FULL 0x0140 -#define PHY_AN_COMPLETE ( 1 << 5 ) - -/* - * Wait counter definitions of PHY-LSI initialization - * ICLK = 96MHz -*/ -#define PHY_RESET_WAIT 0x00000020L -#define PHY_AUTO_NEGOTIATON_WAIT 75 - -#define PHY_AN_ENABLE 0x1200 -#define PHY_AN_10_100_F_H 0xde1 - -/****************************************************************************** -Variable Externs -******************************************************************************/ - -/****************************************************************************** -Functions Prototypes -******************************************************************************/ -/** - * External prototypes - **/ -short phy_init( void ); -void phy_set_100full( void ); -void phy_set_10half( void ); -short phy_set_autonegotiate( void ); - -#endif /* PHY_H */ - diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/webserver/r_ether.h b/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/webserver/r_ether.h deleted file mode 100644 index f6633e1d7..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/webserver/r_ether.h +++ /dev/null @@ -1,185 +0,0 @@ -/****************************************************************************** -* DISCLAIMER -* Please refer to http://www.renesas.com/disclaimer -****************************************************************************** - Copyright (C) 2008. Renesas Technology Corp., All Rights Reserved. -******************************************************************************* -* File Name : r_ether.h -* Version : 1.02 -* Description : Ethernet module device driver -****************************************************************************** -* History : DD.MM.YYYY Version Description -* : 15.02.2010 1.00 First Release -* : 03.03.2010 1.01 Buffer size is aligned on the 32-byte boundary. -* : 04.06.2010 1.02 RX62N changes -******************************************************************************/ - -#ifndef R_ETHER_H -#define R_ETHER_H - -/****************************************************************************** -Includes , "Project Includes" -******************************************************************************/ - - -/****************************************************************************** -Typedef definitions -******************************************************************************/ -struct Descriptor -{ - unsigned long status; -#if __RX_LITTLE_ENDIAN__ == 1 -/* Little endian */ - unsigned short size; - unsigned short bufsize; -#else -/* Big endian */ - unsigned short bufsize; - unsigned short size; - -#endif - char *buf_p; - struct Descriptor *next; -}; - -typedef struct Descriptor ethfifo; - -typedef enum _NETLNK -{ - PHY_NO_LINK = 0, - PHY_LINK_10H, - PHY_LINK_10F, - PHY_LINK_100H, - PHY_LINK_100F - -} NETLNK; - -/****************************************************************************** -Macro definitions -******************************************************************************/ -#define BUFSIZE 256 /* Must be 32-bit aligned */ -#define ENTRY 8 /* Number of RX and TX buffers */ - -#define ACT 0x80000000 -#define DL 0x40000000 -#define FP1 0x20000000 -#define FP0 0x10000000 -#define FE 0x08000000 - -#define RFOVER 0x00000200 -#define RAD 0x00000100 -#define RMAF 0x00000080 -#define RRF 0x00000010 -#define RTLF 0x00000008 -#define RTSF 0x00000004 -#define PRE 0x00000002 -#define CERF 0x00000001 - -#define TAD 0x00000100 -#define CND 0x00000008 -#define DLC 0x00000004 -#define CD 0x00000002 -#define TRO 0x00000001 - -/** - * Renesas Ethernet API return defines - **/ -#define R_ETHER_OK 0 -#define R_ETHER_ERROR -1 - -/* Ether Interface definitions */ -#define ETH_RMII_MODE 0 -#define ETH_MII_MODE 1 -/* Select Ether Interface Mode */ -#define ETH_MODE_SEL ETH_MII_MODE - -/****************************************************************************** -Variable Externs -******************************************************************************/ - -/****************************************************************************** -Functions Prototypes -******************************************************************************/ -/** - * Renesas Ethernet API prototypes - **/ -long R_Ether_Open(unsigned long ch, unsigned char mac_addr[]); -long R_Ether_Close(unsigned long ch); -long R_Ether_Write(unsigned long ch, void *buf, unsigned long len); -long R_Ether_Read(unsigned long ch, void *buf); - -/** - * FreeRTOS Ethernet API prototypes. - */ - -/* - * Configure all the ethernet components (MAC, DMA, PHY) ready for communication. - */ -void vInitEmac( void ); - -/* - * Auto negotiate the link, returning pass or fail depending on whether a link - * was established or not. - */ -long lEMACWaitForLink( void ); - -/* - * Check the Rx status, and return the number of bytes received if any. - */ -unsigned long ulEMACRead( void ); - -/* - * Send uip_len bytes from uip_buf to the Tx descriptors and initiate a Tx. - */ -void vEMACWrite( void ); - - - - -/****************************************************/ -/* Ethernet statistic collection data */ -struct enet_stats -{ - unsigned long rx_packets; /* total packets received */ - unsigned long tx_packets; /* total packets transmitted */ - unsigned long rx_errors; /* bad packets received */ - unsigned long tx_errors; /* packet transmit problems */ - unsigned long rx_dropped; /* no space in buffers */ - unsigned long tx_dropped; /* no space available */ - unsigned long multicast; /* multicast packets received */ - unsigned long collisions; - - /* detailed rx_errors: */ - unsigned long rx_length_errors; - unsigned long rx_over_errors; /* receiver ring buffer overflow */ - unsigned long rx_crc_errors; /* recved pkt with crc error */ - unsigned long rx_frame_errors; /* recv'd frame alignment error */ - unsigned long rx_fifo_errors; /* recv'r fifo overrun */ - unsigned long rx_missed_errors; /* receiver missed packet */ - - /* detailed tx_errors */ - unsigned long tx_aborted_errors; - unsigned long tx_carrier_errors; - unsigned long tx_fifo_errors; - unsigned long tx_heartbeat_errors; - unsigned long tx_window_errors; -}; - -struct ei_device -{ - const char *name; - unsigned char open; - unsigned char Tx_act; - unsigned char Rx_act; - unsigned char txing; /* Transmit Active */ - unsigned char irqlock; /* EDMAC's interrupt disabled when '1'. */ - unsigned char dmaing; /* EDMAC Active */ - ethfifo *rxcurrent; /* current receive discripter */ - ethfifo *txcurrent; /* current transmit discripter */ - unsigned char save_irq; /* Original dev->irq value. */ - struct enet_stats stat; - unsigned char mac_addr[6]; -}; - -#endif /* R_ETHER_H */ - diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/webserver/uip-conf.h b/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/webserver/uip-conf.h deleted file mode 100644 index 47d17fdcb..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/webserver/uip-conf.h +++ /dev/null @@ -1,167 +0,0 @@ -/** - * \addtogroup uipopt - * @{ - */ - -/** - * \name Project-specific configuration options - * @{ - * - * uIP has a number of configuration options that can be overridden - * for each project. These are kept in a project-specific uip-conf.h - * file and all configuration names have the prefix UIP_CONF. - */ - -/* - * Copyright (c) 2006, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: uip-conf.h,v 1.6 2006/06/12 08:00:31 adam Exp $ - */ - -/** - * \file - * An example uIP configuration file - * \author - * Adam Dunkels - */ - -#ifndef __UIP_CONF_H__ -#define __UIP_CONF_H__ - -#define UIP_CONF_EXTERNAL_BUFFER -#define UIP_CONF_PROCESS_HTTPD_FORMS 1 - -/** - * 8 bit datatype - * - * This typedef defines the 8-bit type used throughout uIP. - * - * \hideinitializer - */ -typedef unsigned char u8_t; - -/** - * 16 bit datatype - * - * This typedef defines the 16-bit type used throughout uIP. - * - * \hideinitializer - */ -typedef unsigned short u16_t; - -typedef unsigned long u32_t; - -/** - * Statistics datatype - * - * This typedef defines the dataype used for keeping statistics in - * uIP. - * - * \hideinitializer - */ -typedef unsigned short uip_stats_t; - -/** - * Maximum number of TCP connections. - * - * \hideinitializer - */ -#define UIP_CONF_MAX_CONNECTIONS 40 - -/** - * Maximum number of listening TCP ports. - * - * \hideinitializer - */ -#define UIP_CONF_MAX_LISTENPORTS 40 - -/** - * uIP buffer size. - * - * \hideinitializer - */ -#define UIP_CONF_BUFFER_SIZE 1480 - -/** - * CPU byte order. - * - * \hideinitializer - */ -#ifdef __RX_LITTLE_ENDIAN__ -#define UIP_CONF_BYTE_ORDER UIP_LITTLE_ENDIAN -#else -#define UIP_CONF_BYTE_ORDER UIP_BIG_ENDIAN -#endif - -/** - * Logging on or off - * - * \hideinitializer - */ -#define UIP_CONF_LOGGING 0 - -/** - * UDP support on or off - * - * \hideinitializer - */ -#define UIP_CONF_UDP 0 - -/** - * UDP checksums on or off - * - * \hideinitializer - */ -#define UIP_CONF_UDP_CHECKSUMS 1 - -/** - * uIP statistics on or off - * - * \hideinitializer - */ -#define UIP_CONF_STATISTICS 1 - -/* Here we include the header file for the application(s) we use in - our project. */ -/*#include "smtp.h"*/ -/*#include "hello-world.h"*/ -/*#include "telnetd.h"*/ -#include "webserver.h" -/*#include "dhcpc.h"*/ -/*#include "resolv.h"*/ -/*#include "webclient.h"*/ - -#define CCIF -#define CC_REGISTER_ARG - -#endif /* __UIP_CONF_H__ */ - -/** @} */ -/** @} */ diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/webserver/webserver.h b/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/webserver/webserver.h deleted file mode 100644 index 5267f0587..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/webserver/webserver.h +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright (c) 2002, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials provided - * with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: webserver.h,v 1.2 2006/06/11 21:46:38 adam Exp $ - * - */ -#ifndef __WEBSERVER_H__ -#define __WEBSERVER_H__ - -#include "apps/httpd/httpd.h" - -typedef struct httpd_state uip_tcp_appstate_t; -/* UIP_APPCALL: the name of the application function. This function - must return void and take no arguments (i.e., C type "void - appfunc(void)"). */ -#define UIP_APPCALL httpd_appcall - - -#endif /* __WEBSERVER_H__ */ diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RX600_RX62N_RSK_GNURX.Hbp b/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RX600_RX62N_RSK_GNURX.Hbp deleted file mode 100644 index 241474974..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RX600_RX62N_RSK_GNURX.Hbp +++ /dev/null @@ -1,2 +0,0 @@ -[Setting] -ToolChain=0 diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RX600_RX62N_RSK_GNURX.hws b/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RX600_RX62N_RSK_GNURX.hws deleted file mode 100644 index 24793e52b..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RX600_RX62N_RSK_GNURX.hws +++ /dev/null @@ -1,40 +0,0 @@ -[HIMDBVersion] -2.0 -[DATABASE_VERSION] -"11.0" -[WORKSPACE_DETAILS] -"RX600_RX62N_RSK_GNURX" "C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX" "C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RX600_RX62N_RSK_GNURX.hws" "RX" "KPIT GNURX [ELF]" -[SHARED_WORKSPACE_CONTROL_STATUS] -"" "" "" -"" "" "" -[PROJECTS] -"RTOSDemo" "C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo" "C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\RTOSDemo.hwp" 0 -[INFORMATION] -"No workspace information available" -[SCRAP] -[PROJECT_DEPENDENCY] -[WORKSPACE_PROPERTIES] -[HELP_FILES] -[GENERAL_DATA_PROJECT] -[USERMENUTOOLS] -[CUSTOMPLACEHOLDERS] -[MAKEFILE_BUILD_INFO] -"$(WORKSPDIR)\make\$(PROJECTNAME)_$(CONFIGNAME).mak" "" "$(WORKSPDIR)\make" 0 0 0 -[VD_CONFIGURATION_OPTIONS] -"ACTIVE_DESKTOP" "0" -[VD_CONFIGURATIONS] -"0" "Default1" "1" -"1" "Default2" "1" -"2" "Default3" "1" -"3" "Default4" "1" -[OPTIONS_DEBUG_TAB] -0 0 0 0 0 -[VCS] -"" "" "" 0 -[VCS_PROJECT] -[MAKEFILE_ENV_STRINGS] -[MAKEFILE_ENV_FLAGS] -1 0 0 -[MAKEFILE_CLEAN_INFO] -"" -[END] diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RX600_RX62N_RSK_GNURX.tws b/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RX600_RX62N_RSK_GNURX.tws deleted file mode 100644 index a79e2c867..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/RX600_RX62N_RSK_GNURX.tws +++ /dev/null @@ -1,17 +0,0 @@ -[HIMDBVersion] -2.0 -[DATABASE_VERSION] -"1.2" -[CURRENT_PROJECT] -"RTOSDemo" -[GENERAL_DATA] -[BREAKPOINTS] -[OPEN_WORKSPACE_FILES] -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\main-blinky.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\main-full.c" -[WORKSPACE_FILE_STATES] -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\main-blinky.c" 0 0 792 235 0 0 -"C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\main-full.c" 22 22 792 235 0 1 -[LOADED_PROJECTS] -"RTOSDemo" -[END] diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/ReadMe.txt b/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/ReadMe.txt new file mode 100644 index 000000000..12c70d213 --- /dev/null +++ b/FreeRTOS/Demo/RX600_RX62N-RSK_GNURX/ReadMe.txt @@ -0,0 +1 @@ +The third party uIP TCP/IP stack and the demo project that used to be in this directory was removed in FreeRTOS version V10.4.3 due to security vulnerabilities identified in uIP. In a future version this demo may be replaced by a version which does not use TCP/IP or uses FreeRTOS’s own TCP/IP stack in place of the original third party stack. \ No newline at end of file diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/FreeRTOSConfig.h b/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/FreeRTOSConfig.h deleted file mode 100644 index 59545d3cf..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/FreeRTOSConfig.h +++ /dev/null @@ -1,153 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -#ifndef FREERTOS_CONFIG_H -#define FREERTOS_CONFIG_H - -/* Board specifics. */ -#include "rskrx62ndef.h" - -/*----------------------------------------------------------- - * Application specific definitions. - * - * These definitions should be adjusted for your particular hardware and - * application requirements. - * - * THESE PARAMETERS ARE DESCRIBED WITHIN THE 'CONFIGURATION' SECTION OF THE - * FreeRTOS API DOCUMENTATION AVAILABLE ON THE FreeRTOS.org WEB SITE. - * - * See http://www.freertos.org/a00110.html - *----------------------------------------------------------*/ - -#define configUSE_PREEMPTION 1 -#define configUSE_IDLE_HOOK 0 -#define configUSE_TICK_HOOK 0 -#define configCPU_CLOCK_HZ ( ICLK_FREQUENCY ) /* Set in rskrx62ndef.h. */ -#define configPERIPHERAL_CLOCK_HZ ( PCLK_FREQUENCY ) /* Set in rskrx62ndef.h. */ -#define configTICK_RATE_HZ ( ( TickType_t ) 1000 ) -#define configMINIMAL_STACK_SIZE ( ( unsigned short ) 140 ) -#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 45 * 1024 ) ) -#define configMAX_TASK_NAME_LEN ( 12 ) -#define configUSE_TRACE_FACILITY 1 -#define configUSE_16_BIT_TICKS 0 -#define configIDLE_SHOULD_YIELD 1 -#define configUSE_CO_ROUTINES 0 -#define configUSE_MUTEXES 1 -#define configGENERATE_RUN_TIME_STATS 1 -#define configCHECK_FOR_STACK_OVERFLOW 2 -#define configUSE_RECURSIVE_MUTEXES 1 -#define configQUEUE_REGISTRY_SIZE 0 -#define configUSE_MALLOC_FAILED_HOOK 1 -#define configUSE_APPLICATION_TASK_TAG 0 - -#define configMAX_PRIORITIES ( 7 ) -#define configMAX_CO_ROUTINE_PRIORITIES ( 2 ) - -/* Software timer definitions. */ -#define configUSE_TIMERS 1 -#define configTIMER_TASK_PRIORITY ( 3 ) -#define configTIMER_QUEUE_LENGTH 5 -#define configTIMER_TASK_STACK_DEPTH ( configMINIMAL_STACK_SIZE ) - -/* -The interrupt priority used by the kernel itself for the tick interrupt and -the pended interrupt is set by configKERNEL_INTERRUPT_PRIORITY. This would -normally be the lowest priority (1 in this case). The maximum interrupt -priority from which FreeRTOS API calls can be made is set by -configMAX_SYSCALL_INTERRUPT_PRIORITY. Interrupts that use a priority above this -will not be effected by anything the kernel is doing. Interrupts at or below -this priority can use FreeRTOS API functions - but *only* those that end in -"FromISR". Both these constants are defined in 'PriorityDefinitions.h' so they -can also be included in assembly source files. -*/ -#include "PriorityDefinitions.h" - - -/* The peripheral used to generate the tick interrupt is configured as part of -the application code. This constant should be set to the vector number of the -peripheral chosen. As supplied this is CMT0. */ -#define configTICK_VECTOR 28 /*VECT_CMT0_CMI0*/ - -/* Set the following definitions to 1 to include the API function, or zero -to exclude the API function. */ - -#define INCLUDE_vTaskPrioritySet 1 -#define INCLUDE_uxTaskPriorityGet 1 -#define INCLUDE_vTaskDelete 1 -#define INCLUDE_vTaskCleanUpResources 0 -#define INCLUDE_vTaskSuspend 1 -#define INCLUDE_vTaskDelayUntil 1 -#define INCLUDE_vTaskDelay 1 -#define INCLUDE_uxTaskGetStackHighWaterMark 1 -#define INCLUDE_xTaskGetSchedulerState 1 -#define INCLUDE_eTaskGetState 1 - -/* This demo makes use of one or more example stats formatting functions. These -format the raw data provided by the uxTaskGetSystemState() function in to human -readable ASCII form. See the notes in the implementation of vTaskList() within -FreeRTOS/Source/tasks.c for limitations. */ -#define configUSE_STATS_FORMATTING_FUNCTIONS 1 - -#define configASSERT( x ) if( ( x ) == 0 ) { taskDISABLE_INTERRUPTS(); for( ;; ); } - -extern volatile unsigned long ulHighFrequencyTickCount; -#define portCONFIGURE_TIMER_FOR_RUN_TIME_STATS() portNOP() /* Run time stats use the same timer as the high frequency timer test. */ -#define portGET_RUN_TIME_COUNTER_VALUE() ulHighFrequencyTickCount - - -/* Override some of the priorities set in the common demo tasks. This is -required to ensure flase positive timing errors are not reported. */ -#define bktPRIMARY_PRIORITY ( configMAX_PRIORITIES - 3 ) -#define bktSECONDARY_PRIORITY ( configMAX_PRIORITIES - 4 ) -#define intqHIGHER_PRIORITY ( configMAX_PRIORITIES - 3 ) - - -/*----------------------------------------------------------- - * Ethernet configuration. - *-----------------------------------------------------------*/ - -/* MAC address configuration. */ -#define configMAC_ADDR0 0x00 -#define configMAC_ADDR1 0x12 -#define configMAC_ADDR2 0x13 -#define configMAC_ADDR3 0x10 -#define configMAC_ADDR4 0x15 -#define configMAC_ADDR5 0x11 - -/* IP address configuration. */ -#define configIP_ADDR0 192 -#define configIP_ADDR1 168 -#define configIP_ADDR2 0 -#define configIP_ADDR3 200 - -/* Netmask configuration. */ -#define configNET_MASK0 255 -#define configNET_MASK1 255 -#define configNET_MASK2 255 -#define configNET_MASK3 0 - -#endif /* FREERTOS_CONFIG_H */ diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/HighFrequencyTimerTest.c b/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/HighFrequencyTimerTest.c deleted file mode 100644 index fdd006000..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/HighFrequencyTimerTest.c +++ /dev/null @@ -1,143 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* - * High frequency timer test as described in main.c. - */ - -/* Scheduler includes. */ -#include "FreeRTOS.h" - -/* Hardware specifics. */ -#include - -/* The set frequency of the interrupt. Deviations from this are measured as -the jitter. */ -#define timerINTERRUPT_FREQUENCY ( 20000UL ) - -/* The expected time between each of the timer interrupts - if the jitter was -zero. */ -#define timerEXPECTED_DIFFERENCE_VALUE ( ( unsigned short ) ( ( configPERIPHERAL_CLOCK_HZ / 8UL ) / timerINTERRUPT_FREQUENCY ) ) - -/* The highest available interrupt priority. */ -#define timerHIGHEST_PRIORITY ( 15 ) - -/* Misc defines. */ -#define timerTIMER_3_COUNT_VALUE ( *( ( unsigned short * ) 0x8801a ) ) /*( CMT3.CMCNT )*/ - -/*-----------------------------------------------------------*/ - -/* Interrupt handler in which the jitter is measured. */ -__interrupt void vTimer2IntHandler( void ); - -/* Stores the value of the maximum recorded jitter between interrupts. */ -volatile unsigned short usMaxJitter = 0; - -/* Counts the number of high frequency interrupts - used to generate the run -time stats. */ -volatile unsigned long ulHighFrequencyTickCount = 0UL; - -/*-----------------------------------------------------------*/ - -void vSetupHighFrequencyTimer( void ) -{ - /* Timer CMT2 is used to generate the interrupts, and CMT3 is used - to measure the jitter. */ - - /* Enable compare match timer 2 and 3. */ - MSTP( CMT2 ) = 0; - MSTP( CMT3 ) = 0; - - /* Interrupt on compare match. */ - CMT2.CMCR.BIT.CMIE = 1; - - /* Set the compare match value. */ - CMT2.CMCOR = ( unsigned short ) ( ( ( configPERIPHERAL_CLOCK_HZ / timerINTERRUPT_FREQUENCY ) -1 ) / 8 ); - - /* Divide the PCLK by 8. */ - CMT2.CMCR.BIT.CKS = 0; - CMT3.CMCR.BIT.CKS = 0; - - /* Enable the interrupt... */ - _IEN( _CMT2_CMI2 ) = 1; - - /* ...and set its priority to the maximum possible, this is above the priority - set by configMAX_SYSCALL_INTERRUPT_PRIORITY so will nest. */ - _IPR( _CMT2_CMI2 ) = timerHIGHEST_PRIORITY; - - /* Start the timers. */ - CMT.CMSTR1.BIT.STR2 = 1; - CMT.CMSTR1.BIT.STR3 = 1; -} -/*-----------------------------------------------------------*/ - -#pragma vector = VECT_CMT2_CMI2 -__interrupt void vTimer2IntHandler( void ) -{ -volatile unsigned short usCurrentCount; -static unsigned short usMaxCount = 0; -static unsigned long ulErrorCount = 0UL; - - /* We use the timer 1 counter value to measure the clock cycles between - the timer 0 interrupts. First stop the clock. */ - CMT.CMSTR1.BIT.STR3 = 0; - portNOP(); - portNOP(); - usCurrentCount = timerTIMER_3_COUNT_VALUE; - - /* Is this the largest count we have measured yet? */ - if( usCurrentCount > usMaxCount ) - { - if( usCurrentCount > timerEXPECTED_DIFFERENCE_VALUE ) - { - usMaxJitter = usCurrentCount - timerEXPECTED_DIFFERENCE_VALUE; - } - else - { - /* This should not happen! */ - ulErrorCount++; - } - - usMaxCount = usCurrentCount; - } - - /* Used to generate the run time stats. */ - ulHighFrequencyTickCount++; - - /* Clear the timer. */ - timerTIMER_3_COUNT_VALUE = 0; - - /* Then start the clock again. */ - CMT.CMSTR1.BIT.STR3 = 1; -} - - - - - - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/IntQueueTimer.c b/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/IntQueueTimer.c deleted file mode 100644 index 404241c35..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/IntQueueTimer.c +++ /dev/null @@ -1,123 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* - * This file contains the non-portable and therefore RX62N specific parts of - * the IntQueue standard demo task - namely the configuration of the timers - * that generate the interrupts and the interrupt entry points. - */ - -/* Scheduler includes. */ -#include "FreeRTOS.h" -#include "task.h" - -/* Demo includes. */ -#include "IntQueueTimer.h" -#include "IntQueue.h" - -/* Hardware specifics. */ -#include - -#define tmrTIMER_0_1_FREQUENCY ( 2000UL ) -#define tmrTIMER_2_3_FREQUENCY ( 2001UL ) - -/* Handlers for the two timers used. */ -__interrupt void vT0_1InterruptHandler( void ); -__interrupt void vT2_3InterruptHandler( void ); - -void vInitialiseTimerForIntQueueTest( void ) -{ - /* Ensure interrupts do not start until full configuration is complete. */ - portENTER_CRITICAL(); - { - /* Cascade two 8bit timer channels to generate the interrupts. - 8bit timer unit 1 (TMR0 and TMR1) and 8bit timer unit 2 (TMR2 and TMR3 are - utilised for this test. */ - - /* Enable the timers. */ - SYSTEM.MSTPCRA.BIT.MSTPA5 = 0; - SYSTEM.MSTPCRA.BIT.MSTPA4 = 0; - - /* Enable compare match A interrupt request. */ - TMR0.TCR.BIT.CMIEA = 1; - TMR2.TCR.BIT.CMIEA = 1; - - /* Clear the timer on compare match A. */ - TMR0.TCR.BIT.CCLR = 1; - TMR2.TCR.BIT.CCLR = 1; - - /* Set the compare match value. */ - TMR01.TCORA = ( unsigned short ) ( ( ( configPERIPHERAL_CLOCK_HZ / tmrTIMER_0_1_FREQUENCY ) -1 ) / 8 ); - TMR23.TCORA = ( unsigned short ) ( ( ( configPERIPHERAL_CLOCK_HZ / tmrTIMER_0_1_FREQUENCY ) -1 ) / 8 ); - - /* 16 bit operation ( count from timer 1,2 ). */ - TMR0.TCCR.BIT.CSS = 3; - TMR2.TCCR.BIT.CSS = 3; - - /* Use PCLK as the input. */ - TMR1.TCCR.BIT.CSS = 1; - TMR3.TCCR.BIT.CSS = 1; - - /* Divide PCLK by 8. */ - TMR1.TCCR.BIT.CKS = 2; - TMR3.TCCR.BIT.CKS = 2; - - /* Enable TMR 0, 2 interrupts. */ - IEN( TMR0, CMIA0 ) = 1; - IEN( TMR2, CMIA2 ) = 1; - - /* Set the timer interrupts to be above the kernel. The interrupts are - assigned different priorities so they nest with each other. */ - IPR( TMR0, CMIA0 ) = configMAX_SYSCALL_INTERRUPT_PRIORITY - 1; - IPR( TMR2, CMIA2 ) = ( configMAX_SYSCALL_INTERRUPT_PRIORITY - 2 ); - } - portEXIT_CRITICAL(); - - /* Ensure the interrupts are clear as they are edge detected. */ - IR( TMR0, CMIA0 ) = 0; - IR( TMR2, CMIA2 ) = 0; -} -/*-----------------------------------------------------------*/ - -#pragma vector = VECT_TMR0_CMIA0 -__interrupt void vT0_1InterruptHandler( void ) -{ - __enable_interrupt(); - portYIELD_FROM_ISR( xFirstTimerHandler() ); -} -/*-----------------------------------------------------------*/ - -#pragma vector = VECT_TMR2_CMIA2 -__interrupt void vT2_3InterruptHandler( void ) -{ - __enable_interrupt(); - portYIELD_FROM_ISR( xSecondTimerHandler() ); -} - - - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/ParTest.c b/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/ParTest.c deleted file mode 100644 index 90f96ac10..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/ParTest.c +++ /dev/null @@ -1,175 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/*----------------------------------------------------------- - * Simple IO routines to control the LEDs. - *-----------------------------------------------------------*/ - -/* Scheduler includes. */ -#include "FreeRTOS.h" -#include "task.h" - -/* Demo includes. */ -#include "partest.h" - -/* Hardware specifics. */ -#include - -#define partestNUM_LEDS ( 6 ) - -long lParTestGetLEDState( unsigned long ulLED ); - -/*-----------------------------------------------------------*/ - -void vParTestInitialise( void ) -{ - /* Port pin configuration is done by the low level set up prior to this - function being called. */ -} -/*-----------------------------------------------------------*/ - -void vParTestSetLED( unsigned long ulLED, signed long xValue ) -{ - if( ulLED < partestNUM_LEDS ) - { - if( xValue != 0 ) - { - /* Turn the LED on. */ - taskENTER_CRITICAL(); - { - switch( ulLED ) - { - case 0: LED0 = LED_ON; - break; - case 1: LED1 = LED_ON; - break; - case 2: LED2 = LED_ON; - break; - case 3: LED3 = LED_ON; - break; - case 4: LED4 = LED_ON; - break; - case 5: LED5 = LED_ON; - break; - } - } - taskEXIT_CRITICAL(); - } - else - { - /* Turn the LED off. */ - taskENTER_CRITICAL(); - { - switch( ulLED ) - { - case 0: LED0 = LED_OFF; - break; - case 1: LED1 = LED_OFF; - break; - case 2: LED2 = LED_OFF; - break; - case 3: LED3 = LED_OFF; - break; - case 4: LED4 = LED_OFF; - break; - case 5: LED5 = LED_OFF; - break; - } - - } - taskEXIT_CRITICAL(); - } - } -} -/*-----------------------------------------------------------*/ - -void vParTestToggleLED( unsigned long ulLED ) -{ - if( ulLED < partestNUM_LEDS ) - { - taskENTER_CRITICAL(); - { - if( lParTestGetLEDState( ulLED ) != 0x00 ) - { - vParTestSetLED( ulLED, 0 ); - } - else - { - vParTestSetLED( ulLED, 1 ); - } - } - taskEXIT_CRITICAL(); - } -} -/*-----------------------------------------------------------*/ - -long lParTestGetLEDState( unsigned long ulLED ) -{ -long lReturn = pdTRUE; - - if( ulLED < partestNUM_LEDS ) - { - switch( ulLED ) - { - case 0 : if( LED0 != 0 ) - { - lReturn = pdFALSE; - } - break; - case 1 : if( LED1 != 0 ) - { - lReturn = pdFALSE; - } - break; - case 2 : if( LED2 != 0 ) - { - lReturn = pdFALSE; - } - break; - case 3 : if( LED3 != 0 ) - { - lReturn = pdFALSE; - } - break; - case 4 : if( LED4 != 0 ) - { - lReturn = pdFALSE; - } - break; - case 5 : if( LED5 != 0 ) - { - lReturn = pdFALSE; - } - break; - } - } - - return lReturn; -} -/*-----------------------------------------------------------*/ - - \ No newline at end of file diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/PriorityDefinitions.h b/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/PriorityDefinitions.h deleted file mode 100644 index 96fd278fa..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/PriorityDefinitions.h +++ /dev/null @@ -1,41 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -#ifndef PRIORITY_DEFINITIONS_H -#define PRIORITY_DEFINITIONS_H - - -/* The interrupt priority used by the kernel itself for the tick interrupt and -the pended interrupt. This would normally be the lowest priority. */ -#define configKERNEL_INTERRUPT_PRIORITY 1 - -/* The maximum interrupt priority from which FreeRTOS API calls can be made. -Interrupts that use a priority above this will not be effected by anything the -kernel is doing. */ -#define configMAX_SYSCALL_INTERRUPT_PRIORITY 4 - -#endif /* PRIORITY_DEFINITIONS_H */ diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/RSKRX62N_Demo.c b/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/RSKRX62N_Demo.c deleted file mode 100644 index 38457cc5e..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/RSKRX62N_Demo.c +++ /dev/null @@ -1,260 +0,0 @@ -/* - * Copyright (c) 20010 IAR Systems AB. - * - * Permission to use, copy, modify, and distribute this software for any - * purpose with or without fee is hereby granted, provided that the above - * copyright notice and this permission notice appear in all copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - */ - -/* - * IAR Embedded Workbench tutorial - * - * Test Program for the RSKRX62N Board. - * LED's perform different display according to - * which switch is pressed. - * Used to check that all the LED's, switches, - * clock function and AD trigger are working fine. - * - * $Revision: 1556 $ - */ - -#include "iorx62n.h" -#include "intrinsics.h" - -void ScrollLedsLowHigh(void); -void ScrollLedsHighLow(void); - -unsigned long pause; -unsigned long off_set; - -#define ON 0 -#define OFF 1 -#define LED0 PORT0.DR.BIT.B2 // P02 LED0 -#define LED1 PORT0.DR.BIT.B3 // P03 LED1 -#define LED2 PORT0.DR.BIT.B5 // P05 LED2 -#define LED3 PORT3.DR.BIT.B4 // P34 LED3 -#define LED4 PORT6.DR.BIT.B0 // P50 LED4 -#define LED5 PORT7.DR.BIT.B3 // P73 LED5 - -/* defined words used in this program */ -enum { - SW1, - SW2, - SW3, - NONE -}GetKey; - -/* SW1 ISR */ -#pragma vector = 72 -__interrupt void isr_sw1(void) -{ - GetKey=SW1; - - CMT.CMSTR0.BIT.STR0 = 0; // stop timer - ICU.IR[72].BIT.IR = 0; // clear interrupt request flag -} - -/* SW2 ISR */ -#pragma vector = 73 -__interrupt void isr_sw2(void) -{ - GetKey=SW2; - - CMT.CMSTR0.BIT.STR0 = 0; // stop timer - ICU.IR[73].BIT.IR = 0; // clear interrupt request flag -} - -/* SW3 ISR */ -#pragma vector = 79 -__interrupt void isr_sw3(void) -{ - GetKey=SW3; - - CMT.CMSTR0.BIT.STR0 = 1; // start timer - ICU.IR[79].BIT.IR = 0; // clear interrupt request flag -} - -/* Timer ISR */ -#pragma vector = 0x1c -__interrupt void isr_cmt0(void) -{ - // Toggle LED's - LED0 = ~LED0; - LED1 = ~LED1; - LED2 = ~LED2; - LED3 = ~LED3; - LED4 = ~LED4; - LED5 = ~LED5; - ICU.IR[70].BIT.IR = 0; // clear interrupt request flag -} - -/* Main program. */ -void main (void) -{ - // enable modules - SYSTEM.MSTPCRA.BIT.MSTPA23 = 0; // A/D Converter (Unit 0) Module - - // Set up RV1 (potentiometer) - AD0.ADCR.BIT.MODE = 2; // Continuous scan mode - AD0.ADCSR.BIT.CH = 0; // only AD0 - AD0.ADCSR.BIT.ADST = 1; // Start A/D - - // Set up SW1, SW2, SW3 - PORT0.DDR.BIT.B0 = 0; // SW1 input on P00 - PORT0.DDR.BIT.B1 = 0; // SW2 input on P01 - PORT0.DDR.BIT.B7 = 0; // SW3 input on P07 - - PORT0.ICR.BIT.B0 = 1; // Enable input buffer - PORT0.ICR.BIT.B1 = 1; // Enable input buffer - PORT0.ICR.BIT.B7 = 1; // Enable input buffer - - // IRQ8-A used for SW1 - IOPORT.PF8IRQ.BIT.ITS8 = 0; // P00 is designated as the IRQ8-A input pin. - IEN(ICU,IRQ8) = 1; - IPR(ICU,IRQ8) = 3; - - // IRQ9-A used for SW2 - IOPORT.PF8IRQ.BIT.ITS9 = 0; // P01 is designated as IRQ9-A input pin. - IEN(ICU,IRQ9) = 1; - IPR(ICU,IRQ9) = 3; - - // IRQ15-A used for SW3 - IOPORT.PF8IRQ.BIT.ITS15 = 0; // P07 is designated as the IRQ15-A input pin. - IEN(ICU,IRQ15) = 1; - IPR(ICU,IRQ15) = 3; - - // Set up LED's - PORT0.DDR.BIT.B2 = 1; // P02 LED0 - PORT0.DDR.BIT.B3 = 1; // P03 LED1 - PORT0.DDR.BIT.B5 = 1; // P05 LED2 - PORT3.DDR.BIT.B4 = 1; // P34 LED3 - PORT6.DDR.BIT.B0 = 1; // P50 LED4 - PORT7.DDR.BIT.B3 = 1; // P73 LED5 - - // Turn al LED's off - LED0 = LED1 = LED2 = LED3 = LED4 = LED5 = OFF; - - // Set up Timer - SYSTEM.MSTPCRA.BIT.MSTPA15 = 0; // CMT timers 0, - CMT0.CMCR.BIT.CKS = 3; // 25MHz/512 = 48.8kHz - CMT0.CMCR.BIT.CMIE = 1; // enable peripheral interrupt source - CMT0.CMCOR = 12212; // 4 Hz operation - ICU.IER[3].BIT.IEN4 = 1; // enable timer 0 interrupt - IPR(CMT0,CMI0) = 1; // LED level 1 - - __enable_interrupt(); - - GetKey=SW1; - - for (;;) - { - switch (GetKey) - { - case SW1: - ScrollLedsLowHigh(); - break; - case SW2: - ScrollLedsHighLow(); - break; - case SW3: - GetKey=NONE; - break; - } - } -} - -/* scrolls the LED's from low to high */ -void ScrollLedsLowHigh() -{ - char led_number = 0; - - while (GetKey == SW1) - { - if (led_number > 5) - led_number = 0; - - switch(led_number) - { - case 0: - LED0=ON; - LED1=LED2=LED3=LED4=LED5=OFF; - break; - case 1: - LED1=ON; - LED0=LED2=LED3=LED4=LED5=OFF; - break; - case 2: - LED2=ON; - LED0=LED1=LED3=LED4=LED5=OFF; - break; - case 3: - LED3=ON; - LED0=LED1=LED2=LED4=LED5=OFF; - break; - case 4: - LED4=ON; - LED0=LED1=LED2=LED3=LED5=OFF; - break; - case 5: - LED5=ON; - LED0=LED1=LED2=LED3=LED4=OFF; - break; - } - led_number++; - - off_set = AD0.ADDRA*1000; - for (pause = off_set; pause != 0; pause --); - } -} - -/* scrolls the LED's from high to low */ -void ScrollLedsHighLow() -{ - signed char led_number = 3; - - while (GetKey == SW2) - { - if (led_number < 0) - led_number = 5; - - switch(led_number) - { - case 0: - LED0=ON; - LED1=LED2=LED3=LED4=LED5=OFF; - break; - case 1: - LED1=ON; - LED0=LED2=LED3=LED4=LED5=OFF; - break; - case 2: - LED2=ON; - LED0=LED1=LED3=LED4=LED5=OFF; - break; - case 3: - LED3=ON; - LED0=LED1=LED2=LED4=LED5=OFF; - break; - case 4: - LED4=ON; - LED0=LED1=LED2=LED3=LED5=OFF; - break; - case 5: - LED5=ON; - LED0=LED1=LED2=LED3=LED4=OFF; - break; - } - led_number--; - - off_set = AD0.ADDRA*1000; - for (pause = off_set; pause != 0; pause --); - } -} diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/RTOSDemo.ewd b/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/RTOSDemo.ewd deleted file mode 100644 index d977e66ee..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/RTOSDemo.ewd +++ /dev/null @@ -1,694 +0,0 @@ - - - - 2 - - Debug - - RX - - 1 - - C-SPY - 2 - - 4 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - RXEMUE20 - 1 - - 0 - 1 - 1 - - - - - - - - - RXJLINK - 1 - - 0 - 1 - 1 - - - - - - - - - SIMRX - 1 - - 1 - 1 - 1 - - - - - - - - - $TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-286-KA-CSpy.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-KA-CSpy.ewplugin - 0 - - - $EW_DIR$\common\plugins\CodeCoverage\CodeCoverage.ENU.ewplugin - 1 - - - $EW_DIR$\common\plugins\FreeRTOS\FreeRTOSPlugin.ewplugin - 0 - - - $EW_DIR$\common\plugins\OpenRTOS\OpenRTOSPlugin.ewplugin - 0 - - - $EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin - 0 - - - $EW_DIR$\common\plugins\Profiling\Profiling.ENU.ewplugin - 1 - - - $EW_DIR$\common\plugins\Stack\Stack.ENU.ewplugin - 1 - - - $EW_DIR$\common\plugins\SymList\SymList.ENU.ewplugin - 1 - - - - - Blinky - - RX - - 1 - - C-SPY - 2 - - 4 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - RXEMUE20 - 1 - - 0 - 1 - 1 - - - - - - - - - RXJLINK - 1 - - 0 - 1 - 1 - - - - - - - - - SIMRX - 1 - - 1 - 1 - 1 - - - - - - - - - $TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-286-KA-CSpy.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-KA-CSpy.ewplugin - 0 - - - $EW_DIR$\common\plugins\CodeCoverage\CodeCoverage.ENU.ewplugin - 1 - - - $EW_DIR$\common\plugins\FreeRTOS\FreeRTOSPlugin.ewplugin - 0 - - - $EW_DIR$\common\plugins\OpenRTOS\OpenRTOSPlugin.ewplugin - 0 - - - $EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin - 0 - - - $EW_DIR$\common\plugins\Profiling\Profiling.ENU.ewplugin - 1 - - - $EW_DIR$\common\plugins\Stack\Stack.ENU.ewplugin - 1 - - - $EW_DIR$\common\plugins\SymList\SymList.ENU.ewplugin - 1 - - - - - Debug-with-optimisation - - RX - - 1 - - C-SPY - 2 - - 4 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - RXEMUE20 - 1 - - 0 - 1 - 1 - - - - - - - - - RXJLINK - 1 - - 0 - 1 - 1 - - - - - - - - - SIMRX - 1 - - 1 - 1 - 1 - - - - - - - - - $TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-286-KA-CSpy.ewplugin - 0 - - - $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-KA-CSpy.ewplugin - 0 - - - $EW_DIR$\common\plugins\CodeCoverage\CodeCoverage.ENU.ewplugin - 1 - - - $EW_DIR$\common\plugins\FreeRTOS\FreeRTOSPlugin.ewplugin - 0 - - - $EW_DIR$\common\plugins\OpenRTOS\OpenRTOSPlugin.ewplugin - 0 - - - $EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin - 0 - - - $EW_DIR$\common\plugins\Profiling\Profiling.ENU.ewplugin - 1 - - - $EW_DIR$\common\plugins\Stack\Stack.ENU.ewplugin - 1 - - - $EW_DIR$\common\plugins\SymList\SymList.ENU.ewplugin - 1 - - - - - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/RTOSDemo.ewp b/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/RTOSDemo.ewp deleted file mode 100644 index 6350bd8d7..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/RTOSDemo.ewp +++ /dev/null @@ -1,2779 +0,0 @@ - - - - 2 - - Debug - - RX - - 1 - - General - 2 - - 4 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ICCRX - 3 - - 11 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ARX - 2 - - 5 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - OBJCOPY - 1 - - 0 - 1 - 1 - - - - - - - - - CUSTOM - 3 - - - - - - - BICOMP - 0 - - - - BUILDACTION - 1 - - - - - - - ILINK - 1 - - 1 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - IARCHIVE - 1 - - 0 - 1 - 1 - - - - - - - BILINK - 0 - - - - - Blinky - - RX - - 1 - - General - 2 - - 4 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ICCRX - 3 - - 11 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ARX - 2 - - 5 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - OBJCOPY - 1 - - 0 - 1 - 1 - - - - - - - - - CUSTOM - 3 - - - - - - - BICOMP - 0 - - - - BUILDACTION - 1 - - - - - - - ILINK - 1 - - 1 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - IARCHIVE - 1 - - 0 - 1 - 1 - - - - - - - BILINK - 0 - - - - - Debug-with-optimisation - - RX - - 1 - - General - 2 - - 4 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ICCRX - 3 - - 11 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ARX - 2 - - 5 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - OBJCOPY - 1 - - 0 - 1 - 1 - - - - - - - - - CUSTOM - 3 - - - - - - - BICOMP - 0 - - - - BUILDACTION - 1 - - - - - - - ILINK - 1 - - 1 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - IARCHIVE - 1 - - 0 - 1 - 1 - - - - - - - BILINK - 0 - - - - - Common Demo Files - - Blinky - - - $PROJ_DIR$\..\Common\Minimal\BlockQ.c - - - $PROJ_DIR$\..\Common\Minimal\blocktim.c - - - $PROJ_DIR$\..\Common\Minimal\death.c - - - $PROJ_DIR$\..\Common\Minimal\flash.c - - - $PROJ_DIR$\..\Common\Minimal\flop.c - - - $PROJ_DIR$\..\Common\Minimal\GenQTest.c - - - $PROJ_DIR$\..\Common\Minimal\integer.c - - - $PROJ_DIR$\..\Common\Minimal\IntQueue.c - - - $PROJ_DIR$\..\Common\Minimal\PollQ.c - - - $PROJ_DIR$\..\Common\Minimal\QPeek.c - - - $PROJ_DIR$\..\Common\Minimal\recmutex.c - - - $PROJ_DIR$\..\Common\Minimal\semtest.c - - - - FreeRTOS Source - - Portable Layer - - $PROJ_DIR$\..\..\Source\portable\MemMang\heap_2.c - - - $PROJ_DIR$\..\..\Source\portable\IAR\RX600\port.c - - - $PROJ_DIR$\..\..\Source\portable\IAR\RX600\port_asm.s - - - - $PROJ_DIR$\..\..\Source\list.c - - - $PROJ_DIR$\..\..\Source\queue.c - - - $PROJ_DIR$\..\..\Source\tasks.c - - - $PROJ_DIR$\..\..\Source\timers.c - - - - FreeTCPIP (based on uIP) - - webserver - - Common - - $PROJ_DIR$\..\Common\ethernet\FreeTCPIP\apps\httpd\http-strings.c - - Blinky - - - - $PROJ_DIR$\..\Common\ethernet\FreeTCPIP\apps\httpd\httpd-fs.c - - Blinky - - - - $PROJ_DIR$\..\Common\ethernet\FreeTCPIP\apps\httpd\httpd.c - - Blinky - - - - - Port specific - - $PROJ_DIR$\webserver\EMAC.c - - Blinky - - - - $PROJ_DIR$\webserver\httpd-cgi.c - - Blinky - - - - $PROJ_DIR$\webserver\phy.c - - Blinky - - - - - - $PROJ_DIR$\..\Common\ethernet\FreeTCPIP\psock.c - - Blinky - - - - $PROJ_DIR$\..\Common\ethernet\FreeTCPIP\timer.c - - Blinky - - - - $PROJ_DIR$\..\Common\ethernet\FreeTCPIP\uip.c - - Blinky - - - - $PROJ_DIR$\..\Common\ethernet\FreeTCPIP\uip_arp.c - - Blinky - - - - - Renesas Files - - $PROJ_DIR$\Renesas-Files\hwsetup.c - - - - $PROJ_DIR$\HighFrequencyTimerTest.c - - Blinky - - - - $PROJ_DIR$\IntQueueTimer.c - - Blinky - - - - $PROJ_DIR$\main-blinky.c - - Debug - Debug-with-optimisation - - - - $PROJ_DIR$\main-full.c - - Blinky - - - - $PROJ_DIR$\ParTest.c - - - $PROJ_DIR$\RegTest.s - - Blinky - - - - $PROJ_DIR$\uIP_Task.c - - Blinky - - - - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/RTOSDemo.eww b/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/RTOSDemo.eww deleted file mode 100644 index 239a9381e..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/RTOSDemo.eww +++ /dev/null @@ -1,10 +0,0 @@ - - - - - $WS_DIR$\RTOSDemo.ewp - - - - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/ReadMe.txt b/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/ReadMe.txt new file mode 100644 index 000000000..12c70d213 --- /dev/null +++ b/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/ReadMe.txt @@ -0,0 +1 @@ +The third party uIP TCP/IP stack and the demo project that used to be in this directory was removed in FreeRTOS version V10.4.3 due to security vulnerabilities identified in uIP. In a future version this demo may be replaced by a version which does not use TCP/IP or uses FreeRTOS’s own TCP/IP stack in place of the original third party stack. \ No newline at end of file diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/RegTest.s b/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/RegTest.s deleted file mode 100644 index e07183900..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/RegTest.s +++ /dev/null @@ -1,199 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - - PUBLIC _prvRegTest1Implementation - PUBLIC _prvRegTest2Implementation - - EXTERN _ulRegTest1CycleCount - EXTERN _ulRegTest2CycleCount - - RSEG CODE:CODE(4) - -/* This function is explained in the comments at the top of main.c. */ -_prvRegTest1Implementation: - - /* Put a known value in each register. */ - MOV #1, R1 - MOV #2, R2 - MOV #3, R3 - MOV #4, R4 - MOV #5, R5 - MOV #6, R6 - MOV #7, R7 - MOV #8, R8 - MOV #9, R9 - MOV #10, R10 - MOV #11, R11 - MOV #12, R12 - MOV #13, R13 - MOV #14, R14 - MOV #15, R15 - - /* Loop, checking each iteration that each register still contains the - expected value. */ -TestLoop1: - - /* Push the registers that are going to get clobbered. */ - PUSHM R14-R15 - - /* Increment the loop counter to show this task is still getting CPU time. */ - MOV #_ulRegTest1CycleCount, R14 - MOV [ R14 ], R15 - ADD #1, R15 - MOV R15, [ R14 ] - - /* Yield to extend the text coverage. Set the bit in the ITU SWINTR register. */ - MOV #1, R14 - MOV #0872E0H, R15 - MOV.B R14, [R15] - NOP - NOP - - /* Restore the clobbered registers. */ - POPM R14-R15 - - /* Now compare each register to ensure it still contains the value that was - set before this loop was entered. */ - CMP #1, R1 - BNE RegTest1Error - CMP #2, R2 - BNE RegTest1Error - CMP #3, R3 - BNE RegTest1Error - CMP #4, R4 - BNE RegTest1Error - CMP #5, R5 - BNE RegTest1Error - CMP #6, R6 - BNE RegTest1Error - CMP #7, R7 - BNE RegTest1Error - CMP #8, R8 - BNE RegTest1Error - CMP #9, R9 - BNE RegTest1Error - CMP #10, R10 - BNE RegTest1Error - CMP #11, R11 - BNE RegTest1Error - CMP #12, R12 - BNE RegTest1Error - CMP #13, R13 - BNE RegTest1Error - CMP #14, R14 - BNE RegTest1Error - CMP #15, R15 - BNE RegTest1Error - - /* All comparisons passed, start a new itteratio of this loop. */ - BRA TestLoop1 - -RegTest1Error: - /* A compare failed, just loop here so the loop counter stops incrementing - - causing the check task to indicate the error. */ - BRA RegTest1Error -/*-----------------------------------------------------------*/ - -/* This function is explained in the comments at the top of main.c. */ -_prvRegTest2Implementation: - - /* Put a known value in each register. */ - MOV #10H, R1 - MOV #20H, R2 - MOV #30H, R3 - MOV #40H, R4 - MOV #50H, R5 - MOV #60H, R6 - MOV #70H, R7 - MOV #80H, R8 - MOV #90H, R9 - MOV #100H, R10 - MOV #110H, R11 - MOV #120H, R12 - MOV #130H, R13 - MOV #140H, R14 - MOV #150H, R15 - - /* Loop, checking each iteration that each register still contains the - expected value. */ -TestLoop2: - - /* Push the registers that are going to get clobbered. */ - PUSHM R14-R15 - - /* Increment the loop counter to show this task is still getting CPU time. */ - MOV #_ulRegTest2CycleCount, R14 - MOV [ R14 ], R15 - ADD #1, R15 - MOV R15, [ R14 ] - - /* Restore the clobbered registers. */ - POPM R14-R15 - - /* Now compare each register to ensure it still contains the value that was - set before this loop was entered. */ - CMP #10H, R1 - BNE RegTest2Error - CMP #20H, R2 - BNE RegTest2Error - CMP #30H, R3 - BNE RegTest2Error - CMP #40H, R4 - BNE RegTest2Error - CMP #50H, R5 - BNE RegTest2Error - CMP #60H, R6 - BNE RegTest2Error - CMP #70H, R7 - BNE RegTest2Error - CMP #80H, R8 - BNE RegTest2Error - CMP #90H, R9 - BNE RegTest2Error - CMP #100H, R10 - BNE RegTest2Error - CMP #110H, R11 - BNE RegTest2Error - CMP #120H, R12 - BNE RegTest2Error - CMP #130H, R13 - BNE RegTest2Error - CMP #140H, R14 - BNE RegTest2Error - CMP #150H, R15 - BNE RegTest2Error - - /* All comparisons passed, start a new itteratio of this loop. */ - BRA TestLoop2 - -RegTest2Error: - /* A compare failed, just loop here so the loop counter stops incrementing - - causing the check task to indicate the error. */ - BRA RegTest2Error - - - END diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/Renesas-Files/hwsetup.c b/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/Renesas-Files/hwsetup.c deleted file mode 100644 index 46d03858a..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/Renesas-Files/hwsetup.c +++ /dev/null @@ -1,230 +0,0 @@ -/****************************************************************************** -* DISCLAIMER - -* This software is supplied by Renesas Technology Corp. and is only -* intended for use with Renesas products. No other uses are authorized. - -* This software is owned by Renesas Technology Corp. and is protected under -* all applicable laws, including copyright laws. - -* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES -* REGARDING THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, -* INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A -* PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY -* DISCLAIMED. - -* TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS -* TECHNOLOGY CORP. NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE -* FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES -* FOR ANY REASON RELATED TO THE THIS SOFTWARE, EVEN IF RENESAS OR ITS -* AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - -* Renesas reserves the right, without notice, to make changes to this -* software and to discontinue the availability of this software. -* By using this software, you agree to the additional terms and -* conditions found by accessing the following link: -* http://www.renesas.com/disclaimer -****************************************************************************** -* Copyright (C) 2008. Renesas Technology Corp., All Rights Reserved. -******************************************************************************* -* File Name : hwsetup.c -* Version : 1.00 -* Description : Power up hardware initializations -****************************************************************************** -* History : DD.MM.YYYY Version Description -* : 15.02.2010 1.00 First Release -******************************************************************************/ - - -/****************************************************************************** -Includes , "Project Includes" -******************************************************************************/ -#include -#include "rskrx62ndef.h" -// #include "lcd.h" Uncomment this if an LCD is present. -#include "r_ether.h" - -/****************************************************************************** -Typedef definitions -******************************************************************************/ - -/****************************************************************************** -Macro definitions -******************************************************************************/ - -/****************************************************************************** -Imported global variables and functions (from other files) -******************************************************************************/ - -/****************************************************************************** -Exported global variables and functions (to be accessed by other files) -******************************************************************************/ - -/****************************************************************************** -Private global variables and functions -******************************************************************************/ -void io_set_cpg(void); -void ConfigurePortPins(void); -void EnablePeripheralModules(void); - -/****************************************************************************** -* Function Name: HardwareSetup -* Description : This function does initial setting for CPG port pins used in -* : the Demo including the MII pins of the Ethernet PHY connection. -* Arguments : none -* Return Value : none -******************************************************************************/ -void HardwareSetup(void) -{ - /* CPG setting */ - io_set_cpg(); - - /* Setup the port pins */ - ConfigurePortPins(); - - /* Enables peripherals */ - EnablePeripheralModules(); - -#if INCLUDE_LCD == 1 - /* Initialize display */ - InitialiseDisplay(); -#endif -} - -/****************************************************************************** -* Function Name: EnablePeripheralModules -* Description : Enables Peripheral Modules before use -* Arguments : none -* Return Value : none -******************************************************************************/ -void EnablePeripheralModules(void) -{ - /* Module standby clear */ - SYSTEM.MSTPCRB.BIT.MSTPB15 = 0; /* EtherC, EDMAC */ - SYSTEM.MSTPCRA.BIT.MSTPA15 = 0; /* CMT0 */ -} - -/****************************************************************************** -* Function Name: ConfigurePortPins -* Description : Configures port pins. -* Arguments : none -* Return Value : none -******************************************************************************/ -void ConfigurePortPins(void) -{ -/* Port pins default to inputs. To ensure safe initialisation set the pin states -before changing the data direction registers. This will avoid any unintentional -state changes on the external ports. -Many peripheral modules will override the setting of the port registers. Ensure -that the state is safe for external devices if the internal peripheral module is -disabled or powered down. */ - - /* ==== MII/RMII Pins setting ==== */ - /*--------------------------------------*/ - /* Port Function Control Register */ - /*--------------------------------------*/ -#if ETH_MODE_SEL == ETH_MII_MODE - /* EE=1, PHYMODE=1, ENETE3=1, ENETE2=0, ENETE1=1, ENETE0=0 (Ethernet) */ - IOPORT.PFENET.BYTE = 0x9A; -#endif /* ETH_MODE_SEL */ -#if ETH_MODE_SEL == ETH_RMII_MODE - /* EE=1, PHYMODE=0, ENETE3=0, ENETE2=0, ENETE1=1, ENETE0=0 (Ethernet) */ - IOPORT.PFENET.BYTE = 0x82; -#endif /* ETH_MODE_SEL */ - /*-------------------------------------------*/ - /* Input Buffer Control Register (ICR) */ - /*-------------------------------------------*/ -#if ETH_MODE_SEL == ETH_MII_MODE - /* P54=1 Set ET_LINKSTA input */ - PORT5.ICR.BIT.B4 = 1; - /* P71=1 Set ET_MDIO input */ - PORT7.ICR.BIT.B1 = 1; - /* P74=1 Set ET_ERXD1 input */ - PORT7.ICR.BIT.B4 = 1; - /* P75=1 Set ET_ERXD0 input */ - PORT7.ICR.BIT.B5 = 1; - /* P76=1 Set ET_RX_CLK input */ - PORT7.ICR.BIT.B6 = 1; - /* P77=1 Set ET_RX_ER input */ - PORT7.ICR.BIT.B7 = 1; - /* P83=1 Set ET_CRS input */ - PORT8.ICR.BIT.B3 = 1; - /* PC0=1 Set ET_ERXD3 input */ - PORTC.ICR.BIT.B0 = 1; - /* PC1=1 Set ET_ERXD2 input */ - PORTC.ICR.BIT.B1 = 1; - /* PC2=1 Set ET_RX_DV input */ - PORTC.ICR.BIT.B2 = 1; - /* PC4=1 Set EX_TX_CLK input */ - PORTC.ICR.BIT.B4 = 1; - /* PC7=1 Set ET_COL input */ - PORTC.ICR.BIT.B7 = 1; -#endif /* ETH_MODE_SEL */ -#if ETH_MODE_SEL == ETH_RMII_MODE - /* P54=1 Set ET_LINKSTA input */ - PORT5.ICR.BIT.B4 = 1; - /* P71=1 Set ET_MDIO input */ - PORT7.ICR.BIT.B1 = 1; - /* P74=1 Set RMII_RXD1 input */ - PORT7.ICR.BIT.B4 = 1; - /* P75=1 Set RMII_RXD0 input */ - PORT7.ICR.BIT.B5 = 1; - /* P76=1 Set REF50CLK input */ - PORT7.ICR.BIT.B6 = 1; - /* P77=1 Set RMII_RX_ER input */ - PORT7.ICR.BIT.B7 = 1; - /* P83=1 Set RMII_CRS_DV input */ - PORT8.ICR.BIT.B3 = 1; -#endif /* ETH_MODE_SEL */ - - /* Configure LED 0-5 pin settings */ - PORT0.DR.BIT.B2 = 1; - PORT0.DR.BIT.B3 = 1; - PORT0.DR.BIT.B5 = 1; - PORT3.DR.BIT.B4 = 1; - PORT6.DR.BIT.B0 = 1; - PORT7.DR.BIT.B3 = 1; - PORT0.DDR.BIT.B2 = 1; - PORT0.DDR.BIT.B3 = 1; - PORT0.DDR.BIT.B5 = 1; - PORT3.DDR.BIT.B4 = 1; - PORT6.DDR.BIT.B0 = 1; - PORT7.DDR.BIT.B3 = 1; - - /* Configure SW 1-3 pin settings */ - PORT0.DDR.BIT.B0 = 0; - PORT0.DDR.BIT.B1 = 0; - PORT0.DDR.BIT.B7 = 0; - PORT0.ICR.BIT.B0 = 1; - PORT0.ICR.BIT.B1 = 1; - PORT0.ICR.BIT.B7 = 1; - -#if INCLUDE_LCD == 1 - /* Set LCD pins as outputs */ - /* LCD-RS */ - PORT8.DDR.BIT.B4 = 1; - /* LCD-EN */ - PORT8.DDR.BIT.B5 = 1; - /*LCD-data */ - PORT9.DDR.BYTE = 0xF0; -#endif -} - -/****************************************************************************** -* Function Name: io_set_cpg -* Description : Sets up operating speed -* Arguments : none -* Return Value : none -******************************************************************************/ -void io_set_cpg(void) -{ -/* Set CPU PLL operating frequencies. Changes to the peripheral clock will require -changes to the debugger and flash kernel BRR settings. */ - - /* ==== CPG setting ==== */ - SYSTEM.SCKCR.LONG = 0x00020100; /* Clockin = 12MHz */ - /* I Clock = 96MHz, B Clock = 24MHz, */ - /* P Clock = 48MHz */ - -} - diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/include/IntQueueTimer.h b/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/include/IntQueueTimer.h deleted file mode 100644 index a13dac500..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/include/IntQueueTimer.h +++ /dev/null @@ -1,36 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -#ifndef INT_QUEUE_TIMER_H -#define INT_QUEUE_TIMER_H - -void vInitialiseTimerForIntQueueTest( void ); -portBASE_TYPE xTimer0Handler( void ); -portBASE_TYPE xTimer1Handler( void ); - -#endif - diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/include/inthandler.h b/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/include/inthandler.h deleted file mode 100644 index f55efcaf6..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/include/inthandler.h +++ /dev/null @@ -1,714 +0,0 @@ -/***********************************************************************/ -/* */ -/* FILE :inthandler.h */ -/* DATE :Wed, Aug 25, 2010 */ -/* DESCRIPTION :Interrupt Handler Declarations */ -/* CPU TYPE :Other */ -/* */ -/* This file is generated by KPIT GNU Project Generator. */ -/* */ -/***********************************************************************/ - - - -#ifndef INTHANDLER_H -#define INTHANDLER_H - -// Exception(Supervisor Instruction) -void INT_Excep_SuperVisorInst(void) __attribute__ ((interrupt)); - -// Exception(Undefined Instruction) -void INT_Excep_UndefinedInst(void) __attribute__ ((interrupt)); - -// Exception(Floating Point) -void INT_Excep_FloatingPoint(void) __attribute__ ((interrupt)); - -// NMI -void INT_NonMaskableInterrupt(void) __attribute__ ((interrupt)); - -// Dummy -void Dummy (void) __attribute__ ((interrupt)); - -// BRK -void INT_Excep_BRK(void) __attribute__ ((interrupt)); - -// vector 1 reserved -// vector 2 reserved -// vector 3 reserved -// vector 4 reserved -// vector 5 reserved -// vector 6 reserved -// vector 7 reserved -// vector 8 reserved -// vector 9 reserved -// vector 10 reserved -// vector 11 reserved -// vector 12 reserved -// vector 13 reserved -// vector 14 reserved -// vector 15 reserved - -// BUSERR - -void INT_Excep_BUSERR(void) __attribute__ ((interrupt)); - -// vector 17 reserved -// vector 18 reserved -// vector 19 reserved -// vector 20 reserved - -// FCU_FCUERR - -void INT_Excep_FCU_FCUERR(void) __attribute__ ((interrupt)); - -// vector 22 reserved - -// FCU_FRDYI - -void INT_Excep_FCU_FRDYI(void) __attribute__ ((interrupt)); - -// vector 24 reserved -// vector 25 reserved -// vector 26 reserved -// vector 27 reserved - -// CMTU0_CMT0 - -void INT_Excep_CMTU0_CMT0(void) __attribute__ ((interrupt)); - -// CMTU0_CMT1 - -void INT_Excep_CMTU0_CMT1(void) __attribute__ ((interrupt)); - -// CMTU1_CMT2 - -void INT_Excep_CMTU1_CMT2(void) __attribute__ ((interrupt)); - -// CMTU1_CMT3 - -void INT_Excep_CMTU1_CMT3(void) __attribute__ ((interrupt)); - -// vector 32 reserved -// vector 33 reserved -// vector 34 reserved -// vector 35 reserved -// vector 36 reserved -// vector 37 reserved -// vector 38 reserved -// vector 39 reserved -// vector 40 reserved -// vector 41 reserved -// vector 42 reserved -// vector 43 reserved -// vector 44 reserved -// vector 45 reserved -// vector 46 reserved -// vector 47 reserved -// vector 48 reserved -// vector 49 reserved -// vector 50 reserved -// vector 51 reserved -// vector 52 reserved -// vector 53 reserved -// vector 54 reserved -// vector 55 reserved -// vector 56 reserved -// vector 57 reserved -// vector 58 reserved -// vector 59 reserved -// vector 60 reserved -// vector 61 reserved -// vector 62 reserved -// vector 63 reserved - -// IRQ0 - -void INT_Excep_IRQ0(void) __attribute__ ((interrupt)); - -// IRQ1 - -void INT_Excep_IRQ1(void) __attribute__ ((interrupt)); - -// IRQ2 - -void INT_Excep_IRQ2(void) __attribute__ ((interrupt)); - -// IRQ3 - -void INT_Excep_IRQ3(void) __attribute__ ((interrupt)); - -// IRQ4 - -void INT_Excep_IRQ4(void) __attribute__ ((interrupt)); - -// IRQ5 - -void INT_Excep_IRQ5(void) __attribute__ ((interrupt)); - -// IRQ6 - -void INT_Excep_IRQ6(void) __attribute__ ((interrupt)); - -// IRQ7 - -void INT_Excep_IRQ7(void) __attribute__ ((interrupt)); - -// IRQ8 - -void INT_Excep_IRQ8(void) __attribute__ ((interrupt)); - -// IRQ9 - -void INT_Excep_IRQ9(void) __attribute__ ((interrupt)); - -// IRQ10 - -void INT_Excep_IRQ10(void) __attribute__ ((interrupt)); - -// IRQ11 - -void INT_Excep_IRQ11(void) __attribute__ ((interrupt)); - -// IRQ12 - -void INT_Excep_IRQ12(void) __attribute__ ((interrupt)); - -// IRQ13 - -void INT_Excep_IRQ13(void) __attribute__ ((interrupt)); - -// IRQ14 - -void INT_Excep_IRQ14(void) __attribute__ ((interrupt)); - -// IRQ15 - -void INT_Excep_IRQ15(void) __attribute__ ((interrupt)); - -// vector 80 reserved -// vector 81 reserved -// vector 82 reserved -// vector 83 reserved -// vector 84 reserved -// vector 85 reserved -// vector 86 reserved -// vector 87 reserved -// vector 88 reserved -// vector 89 reserved -// vector 90 reserved -// vector 91 reserved -// vector 92 reserved -// vector 93 reserved -// vector 94 reserved -// vector 95 reserved - -// WDT_WOVI - -void INT_Excep_WDT_WOVI(void) __attribute__ ((interrupt)); - -// vector 97 reserved - -// AD0_ADI0 - -void INT_Excep_AD0_ADI0(void) __attribute__ ((interrupt)); - -// AD1_ADI1 - -void INT_Excep_AD1_ADI1(void) __attribute__ ((interrupt)); - -// AD2_ADI2 - -void INT_Excep_AD2_ADI2(void) __attribute__ ((interrupt)); - -// AD3_ADI3 - -void INT_Excep_AD3_ADI3(void) __attribute__ ((interrupt)); - -// vector 102 reserved -// vector 103 reserved - -// TPU0_TGI0A - -void INT_Excep_TPU0_TGI0A(void) __attribute__ ((interrupt)); - -// TPU0_TGI0B - -void INT_Excep_TPU0_TGI0B(void) __attribute__ ((interrupt)); - -// TPU0_TGI0C - -void INT_Excep_TPU0_TGI0C(void) __attribute__ ((interrupt)); - -// TPU0_TGI0D - -void INT_Excep_TPU0_TGI0D(void) __attribute__ ((interrupt)); - -// TPU0_TCI0V - -void INT_Excep_TPU0_TCI0V(void) __attribute__ ((interrupt)); - -// vector 109 reserved -// vector 110 reserved - -// TPU1_TGI1A - -void INT_Excep_TPU1_TGI1A(void) __attribute__ ((interrupt)); - -// TPU1_TGI1B - -void INT_Excep_TPU1_TGI1B(void) __attribute__ ((interrupt)); - -// vector 113 reserved -// vector 114 reserved - -// TPU1_TCI1V - -void INT_Excep_TPU1_TCI1V(void) __attribute__ ((interrupt)); - -// TPU1_TCI1U - -void INT_Excep_TPU1_TCI1U(void) __attribute__ ((interrupt)); - -// TPU2_TGI2A - -void INT_Excep_TPU2_TGI2A(void) __attribute__ ((interrupt)); - -// TPU2_TGI2B - -void INT_Excep_TPU2_TGI2B(void) __attribute__ ((interrupt)); - -// vector 119 reserved - -// TPU2_TCI2V - -void INT_Excep_TPU2_TCI2V(void) __attribute__ ((interrupt)); - -// TPU2_TCI2U - -void INT_Excep_TPU2_TCI2U(void) __attribute__ ((interrupt)); - -// TPU3_TGI3A - -void INT_Excep_TPU3_TGI3A(void) __attribute__ ((interrupt)); - -// TPU3_TGI3B - -void INT_Excep_TPU3_TGI3B(void) __attribute__ ((interrupt)); - -// TPU3_TGI3C - -void INT_Excep_TPU3_TGI3C(void) __attribute__ ((interrupt)); - -// TPU3_TGI3D - -void INT_Excep_TPU3_TGI3D(void) __attribute__ ((interrupt)); - -// TPU3_TCI3V - -void INT_Excep_TPU3_TCI3V(void) __attribute__ ((interrupt)); - -// TPU4_TGI4A - -void INT_Excep_TPU4_TGI4A(void) __attribute__ ((interrupt)); - -// TPU4_TGI4B - -void INT_Excep_TPU4_TGI4B(void) __attribute__ ((interrupt)); - -// vector 129 reserved -// vector 130 reserved - -// TPU4_TCI4V - -void INT_Excep_TPU4_TCI4V(void) __attribute__ ((interrupt)); - -// TPU4_TCI4U - -void INT_Excep_TPU4_TCI4U(void) __attribute__ ((interrupt)); - -// TPU5_TGI5A - -void INT_Excep_TPU5_TGI5A(void) __attribute__ ((interrupt)); - -// TPU5_TGI5B - -void INT_Excep_TPU5_TGI5B(void) __attribute__ ((interrupt)); - -// vector 135 reserved - -// TPU5_TCI5V - -void INT_Excep_TPU5_TCI5V(void) __attribute__ ((interrupt)); - -// TPU5_TCI5U - -void INT_Excep_TPU5_TCI5U(void) __attribute__ ((interrupt)); - -// TPU6_TGI6A - -void INT_Excep_TPU6_TGI6A(void) __attribute__ ((interrupt)); - -// TPU6_TGI6B - -void INT_Excep_TPU6_TGI6B(void) __attribute__ ((interrupt)); - -// TPU6_TGI6C - -void INT_Excep_TPU6_TGI6C(void) __attribute__ ((interrupt)); - -// TPU6_TGI6D - -void INT_Excep_TPU6_TGI6D(void) __attribute__ ((interrupt)); - -// TPU6_TCI6V - -void INT_Excep_TPU6_TCI6V(void) __attribute__ ((interrupt)); - -// vector 143 reserved -// vector 144 reserved - -// TPU7_TGI7A - -void INT_Excep_TPU7_TGI7A(void) __attribute__ ((interrupt)); - -// TPU7_TGI7B - -void INT_Excep_TPU7_TGI7B(void) __attribute__ ((interrupt)); - -// vector 147 reserved -// vector 148 reserved - -// TPU7_TCI7V - -void INT_Excep_TPU7_TCI7V(void) __attribute__ ((interrupt)); - -// TPU7_TCI7U - -void INT_Excep_TPU7_TCI7U(void) __attribute__ ((interrupt)); - -// TPU8_TGI8A - -void INT_Excep_TPU8_TGI8A(void) __attribute__ ((interrupt)); - -// TPU8_TGI8B - -void INT_Excep_TPU8_TGI8B(void) __attribute__ ((interrupt)); - -// vector 153 reserved - -// TPU8_TCI8V - -void INT_Excep_TPU8_TCI8V(void) __attribute__ ((interrupt)); - -// TPU8_TCI8U - -void INT_Excep_TPU8_TCI8U(void) __attribute__ ((interrupt)); - -// TPU9_TGI9A - -void INT_Excep_TPU9_TGI9A(void) __attribute__ ((interrupt)); - -// TPU9_TGI9B - -void INT_Excep_TPU9_TGI9B(void) __attribute__ ((interrupt)); - -// TPU9_TGI9C - -void INT_Excep_TPU9_TGI9C(void) __attribute__ ((interrupt)); - -// TPU9_TGI9D - -void INT_Excep_TPU9_TGI9D(void) __attribute__ ((interrupt)); - -// TPU9_TCI9V - -void INT_Excep_TPU9_TCI9V(void) __attribute__ ((interrupt)); - -// TPU10_TGI10A - -void INT_Excep_TPU10_TGI10A(void) __attribute__ ((interrupt)); - -// TPU10_TGI10B - -void INT_Excep_TPU10_TGI10B(void) __attribute__ ((interrupt)); - -// vector 163 reserved -// vector 164 reserved - -// TPU10_TCI10V - -void INT_Excep_TPU10_TCI10V(void) __attribute__ ((interrupt)); - -// TPU10_TCI10U - -void INT_Excep_TPU10_TCI10U(void) __attribute__ ((interrupt)); - -// TPU11_TGI11A - -void INT_Excep_TPU11_TGI11A(void) __attribute__ ((interrupt)); - -// TPU11_TGI11B - -void INT_Excep_TPU11_TGI11B(void) __attribute__ ((interrupt)); - -// vector 169 reserved - -// TPU11_TCI11V - -void INT_Excep_TPU11_TCI11V(void) __attribute__ ((interrupt)); - -// TPU11_TCI11U - -void INT_Excep_TPU11_TCI11U(void) __attribute__ ((interrupt)); - -// vector 172 reserved -// vector 173 reserved - -// TMR0_CMI0A - -void INT_Excep_TMR0_CMI0A(void) __attribute__ ((interrupt)); - -// TMR0_CMI0B - -void INT_Excep_TMR0_CMI0B(void) __attribute__ ((interrupt)); - -// TMR0_OV0I - -void INT_Excep_TMR0_OV0I(void) __attribute__ ((interrupt)); - -// TMR1_CMI1A - -void INT_Excep_TMR1_CMI1A(void) __attribute__ ((interrupt)); - -// TMR1_CMI1B - -void INT_Excep_TMR1_CMI1B(void) __attribute__ ((interrupt)); - -// TMR1_OV1I - -void INT_Excep_TMR1_OV1I(void) __attribute__ ((interrupt)); - -// TMR2_CMI2A - -void INT_Excep_TMR2_CMI2A(void) __attribute__ ((interrupt)); - -// TMR2_CMI2B - -void INT_Excep_TMR2_CMI2B(void) __attribute__ ((interrupt)); - -// TMR2_OV2I - -void INT_Excep_TMR2_OV2I(void) __attribute__ ((interrupt)); - -// TMR3_CMI3A - -void INT_Excep_TMR3_CMI3A(void) __attribute__ ((interrupt)); - -// TMR3_CMI3B - -void INT_Excep_TMR3_CMI3B(void) __attribute__ ((interrupt)); - -// TMR3_OV3I - -void INT_Excep_TMR3_OV3I(void) __attribute__ ((interrupt)); - -// vector 186 reserved -// vector 187 reserved -// vector 188 reserved -// vector 189 reserved -// vector 190 reserved -// vector 191 reserved -// vector 192 reserved -// vector 193 reserved -// vector 194 reserved -// vector 195 reserved -// vector 196 reserved -// vector 197 reserved - -// DMAC_DMTEND0 - -void INT_Excep_DMAC_DMTEND0(void); - -// DMAC_DMTEND1 - -void INT_Excep_DMAC_DMTEND1(void) __attribute__ ((interrupt)); - -// DMAC_DMTEND2 - -void INT_Excep_DMAC_DMTEND2(void) __attribute__ ((interrupt)); - -// DMAC_DMTEND3 - -void INT_Excep_DMAC_DMTEND3(void) __attribute__ ((interrupt)); - -// vector 202 reserved -// vector 203 reserved -// vector 204 reserved -// vector 205 reserved -// vector 206 reserved -// vector 207 reserved -// vector 208 reserved -// vector 209 reserved -// vector 210 reserved -// vector 211 reserved -// vector 212 reserved -// vector 213 reserved - -// SCI0_ERI0 - -void INT_Excep_SCI0_ERI0(void) __attribute__ ((interrupt)); - -// SCI0_RXI0 - -void INT_Excep_SCI0_RXI0(void) __attribute__ ((interrupt)); - -// SCI0_TXI0 - -void INT_Excep_SCI0_TXI0(void) __attribute__ ((interrupt)); - -// SCI0_TEI0 - -void INT_Excep_SCI0_TEI0(void) __attribute__ ((interrupt)); - -// SCI1_ERI1 - -void INT_Excep_SCI1_ERI1(void) __attribute__ ((interrupt)); - -// SCI1_RXI1 - -void INT_Excep_SCI1_RXI1(void) __attribute__ ((interrupt)); - -// SCI1_TXI1 - -void INT_Excep_SCI1_TXI1(void) __attribute__ ((interrupt)); - -// SCI1_TEI1 - -void INT_Excep_SCI1_TEI1(void) __attribute__ ((interrupt)); - -// SCI2_ERI2 - -void INT_Excep_SCI2_ERI2(void) __attribute__ ((interrupt)); - -// SCI2_RXI2 - -void INT_Excep_SCI2_RXI2(void) __attribute__ ((interrupt)); - -// SCI2_TXI2 - -void INT_Excep_SCI2_TXI2(void) __attribute__ ((interrupt)); - -// SCI2_TEI2 - -void INT_Excep_SCI2_TEI2(void) __attribute__ ((interrupt)); - -// SCI3_ERI3 - -void INT_Excep_SCI3_ERI3(void) __attribute__ ((interrupt)); - -// SCI3_RXI3 - -void INT_Excep_SCI3_RXI3(void) __attribute__ ((interrupt)); - -// SCI3_TXI3 - -void INT_Excep_SCI3_TXI3(void) __attribute__ ((interrupt)); - -// SCI3_TEI3 - -void INT_Excep_SCI3_TEI3(void) __attribute__ ((interrupt)); - -// SCI4_ERI4 - -void INT_Excep_SCI4_ERI4(void) __attribute__ ((interrupt)); - -// SCI4_RXI4 - -void INT_Excep_SCI4_RXI4(void) __attribute__ ((interrupt)); - -// SCI4_TXI4 - -void INT_Excep_SCI4_TXI4(void) __attribute__ ((interrupt)); - -// SCI4_TEI4 - -void INT_Excep_SCI4_TEI4(void) __attribute__ ((interrupt)); - -// SCI5_ERI5 - -void INT_Excep_SCI5_ERI5(void) __attribute__ ((interrupt)); - -// SCI5_RXI5 - -void INT_Excep_SCI5_RXI5(void) __attribute__ ((interrupt)); - -// SCI5_TXI5 - -void INT_Excep_SCI5_TXI5(void) __attribute__ ((interrupt)); - -// SCI5_TEI5 - -void INT_Excep_SCI5_TEI5(void) __attribute__ ((interrupt)); - -// SCI6_ERI6 - -void INT_Excep_SCI6_ERI6(void) __attribute__ ((interrupt)); - -// SCI6_RXI6 - -void INT_Excep_SCI6_RXI6(void) __attribute__ ((interrupt)); - -// SCI6_TXI6 - -void INT_Excep_SCI6_TXI6(void) __attribute__ ((interrupt)); - -// SCI6_TEI6 - -void INT_Excep_SCI6_TEI6(void) __attribute__ ((interrupt)); - -// vector 242 reserved -// vector 243 reserved -// vector 244 reserved -// vector 245 reserved - -// RIIC0_EEI0 - -void INT_Excep_RIIC0_EEI0(void) __attribute__ ((interrupt)); - -// RIIC0_RXI0 - -void INT_Excep_RIIC0_RXI0(void) __attribute__ ((interrupt)); - -// RIIC0_TXI0 - -void INT_Excep_RIIC0_TXI0(void) __attribute__ ((interrupt)); - -// RIIC0_TEI0 - -void INT_Excep_RIIC0_TEI0(void) __attribute__ ((interrupt)); - -// RIIC1_EEI1 - -void INT_Excep_RIIC1_EEI1(void) __attribute__ ((interrupt)); - -// RIIC1_RXI1 - -void INT_Excep_RIIC1_RXI1(void) __attribute__ ((interrupt)); - -// RIIC1_TXI1 - -void INT_Excep_RIIC1_TXI1(void) __attribute__ ((interrupt)); - -// RIIC1_TEI1 - -void INT_Excep_RIIC1_TEI1(void) __attribute__ ((interrupt)); - -// vector 254 reserved -// vector 255 reserved - -//;<> -//;Power On Reset PC -extern void PowerON_Reset_PC(void) __attribute__ ((interrupt)); -//;<> - -#endif \ No newline at end of file diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/include/rskrx62ndef.h b/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/include/rskrx62ndef.h deleted file mode 100644 index 5077d7425..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/include/rskrx62ndef.h +++ /dev/null @@ -1,98 +0,0 @@ - -/****************************************************************************** -* DISCLAIMER -* Please refer to http://www.renesas.com/disclaimer -****************************************************************************** - Copyright (C) 2008. Renesas Technology Corp., All Rights Reserved. -******************************************************************************* -* File Name : rsksh7216.h -* Version : 1.00 -* Description : RSK 7216 board specific settings -****************************************************************************** -* History : DD.MM.YYYY Version Description -* : 06.10.2009 1.00 First Release -******************************************************************************/ - -#ifndef RSKRX62N_H -#define RSKRX62N_H - -/****************************************************************************** -Includes , "Project Includes" -******************************************************************************/ - -/****************************************************************************** -Typedef definitions -******************************************************************************/ - -/****************************************************************************** -Macro definitions -******************************************************************************/ - -/* System Clock Settings */ -#define XTAL_FREQUENCY (12000000L) -#define ICLK_MUL (8) -#define PCLK_MUL (4) -#define BCLK_MUL (4) -#define ICLK_FREQUENCY (XTAL_FREQUENCY * ICLK_MUL) -#define PCLK_FREQUENCY (XTAL_FREQUENCY * PCLK_MUL) -#define BCLK_FREQUENCY (XTAL_FREQUENCY * BCLK_MUL) - -#define CMT0_CLK_SELECT (512) - -/* General Values */ -#define LED_ON (0) -#define LED_OFF (1) -#define SET_BIT_HIGH (1) -#define SET_BIT_LOW (0) -#define SET_BYTE_HIGH (0xFF) -#define SET_BYTE_LOW (0x00) - -/* Define switches to be polled if not available as interrupts */ -#define SW_ACTIVE FALSE -#define SW1 PORT0.DR.BIT.B0 -#define SW2 PORT0.DR.BIT.B1 -#define SW3 PORT0.DR.BIT.B7 -#define SW1_DDR PORT0.DDR.BIT.B0 -#define SW2_DDR PORT0.DDR.BIT.B1 -#define SW3_DDR PORT0.DDR.BIT.B7 -#define SW1_ICR PORT0.ICR.BIT.B0 -#define SW2_ICR PORT0.ICR.BIT.B1 -#define SW3_ICR PORT0.ICR.BIT.B7 - -/* LEDs */ -#define LED0 PORT0.DR.BIT.B2 -#define LED1 PORT0.DR.BIT.B3 -#define LED2 PORT0.DR.BIT.B5 -#define LED3 PORT3.DR.BIT.B4 -#define LED4 PORT6.DR.BIT.B0 -#define LED5 PORT7.DR.BIT.B3 -#define LED0_DDR PORT0.DDR.BIT.B2 -#define LED1_DDR PORT0.DDR.BIT.B3 -#define LED2_DDR PORT0.DDR.BIT.B5 -#define LED3_DDR PORT3.DDR.BIT.B4 -#define LED4_DDR PORT6.DDR.BIT.B0 -#define LED5_DDR PORT7.DDR.BIT.B3 - -/* 2x8 segment LCD */ -#define LCD_RS PORT8.DR.BIT.B4 -#define LCD_EN PORT8.DR.BIT.B5 -#define LCD_DATA PORT9.DR.BYTE -#define LCD_RS_DDR PORT8.DDR.BIT.B4 -#define LCD_EN_DDR PORT8.DDR.BIT.B5 -#define LCD_DATA_DDR PORT9.DDR.BYTE - - - -/****************************************************************************** -Variable Externs -******************************************************************************/ - -/****************************************************************************** -Functions Prototypes -******************************************************************************/ - - - -/* RSKRX62N_H */ -#endif - diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/include/typedefine.h b/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/include/typedefine.h deleted file mode 100644 index 49b303a56..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/include/typedefine.h +++ /dev/null @@ -1,23 +0,0 @@ -/***********************************************************************/ -/* */ -/* FILE :typedefine.h */ -/* DATE :Wed, Aug 25, 2010 */ -/* DESCRIPTION :Aliases of Integer Type */ -/* CPU TYPE :Other */ -/* */ -/* This file is generated by KPIT GNU Project Generator. */ -/* */ -/***********************************************************************/ - - - -typedef signed char _SBYTE; -typedef unsigned char _UBYTE; -typedef signed short _SWORD; -typedef unsigned short _UWORD; -typedef signed int _SINT; -typedef unsigned int _UINT; -typedef signed long _SDWORD; -typedef unsigned long _UDWORD; -typedef signed long long _SQWORD; -typedef unsigned long long _UQWORD; diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/main-blinky.c b/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/main-blinky.c deleted file mode 100644 index 9f1eee9f1..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/main-blinky.c +++ /dev/null @@ -1,203 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* - * This is a very simple demo that creates two tasks and one queue. One task - * (the queue receive task) blocks on the queue to wait for data to arrive, - * toggling an LED each time '100' is received. The other task (the queue send - * task) repeatedly blocks for a fixed period before sending '100' to the queue - * (causing the first task to toggle the LED). - * - * For a much more complete and complex example select either the Debug or - * Debug_with_optimisation build configurations within the HEW IDE. -*/ - -/* Hardware specific includes. */ -#include - -/* Kernel includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "queue.h" - -/* Demo includes. */ -#include "partest.h" - -/* Priorities at which the tasks are created. */ -#define configQUEUE_RECEIVE_TASK_PRIORITY ( tskIDLE_PRIORITY + 1 ) -#define configQUEUE_SEND_TASK_PRIORITY ( tskIDLE_PRIORITY + 2 ) - -/* The rate at which data is sent to the queue, specified in milliseconds. */ -#define mainQUEUE_SEND_FREQUENCY_MS ( 500 / portTICK_PERIOD_MS ) - -/* The number of items the queue can hold. This is 1 as the receive task -will remove items as they are added so the send task should always find the -queue empty. */ -#define mainQUEUE_LENGTH ( 1 ) - -/* - * The tasks as defined at the top of this file. - */ -static void prvQueueReceiveTask( void *pvParameters ); -static void prvQueueSendTask( void *pvParameters ); - -/* The queue used by both tasks. */ -static QueueHandle_t xQueue = NULL; - -/* This variable is not used by this simple Blinky example. It is defined -purely to allow the project to link as it is used by the full project. */ -volatile unsigned long ulHighFrequencyTickCount = 0UL; -/*-----------------------------------------------------------*/ - -void main(void) -{ -extern void HardwareSetup( void ); - - /* Renesas provided CPU configuration routine. The clocks are configured in - here. */ - HardwareSetup(); - - /* Create the queue. */ - xQueue = xQueueCreate( mainQUEUE_LENGTH, sizeof( unsigned long ) ); - - if( xQueue != NULL ) - { - /* Start the two tasks as described at the top of this file. */ - xTaskCreate( prvQueueReceiveTask, "Rx", configMINIMAL_STACK_SIZE, NULL, configQUEUE_RECEIVE_TASK_PRIORITY, NULL ); - xTaskCreate( prvQueueSendTask, "TX", configMINIMAL_STACK_SIZE, NULL, configQUEUE_SEND_TASK_PRIORITY, NULL ); - - /* Start the tasks running. */ - vTaskStartScheduler(); - } - - /* If all is well we will never reach here as the scheduler will now be - running. If we do reach here then it is likely that there was insufficient - heap available for the idle task to be created. */ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -static void prvQueueSendTask( void *pvParameters ) -{ -TickType_t xNextWakeTime; -const unsigned long ulValueToSend = 100UL; - - /* Initialise xNextWakeTime - this only needs to be done once. */ - xNextWakeTime = xTaskGetTickCount(); - - for( ;; ) - { - /* Place this task in the blocked state until it is time to run again. - The block state is specified in ticks, the constant used converts ticks - to ms. */ - vTaskDelayUntil( &xNextWakeTime, mainQUEUE_SEND_FREQUENCY_MS ); - - /* Send to the queue - causing the queue receive task to flash its LED. 0 - is used so the send does not block - it shouldn't need to as the queue - should always be empty here. */ - xQueueSend( xQueue, &ulValueToSend, 0 ); - } -} -/*-----------------------------------------------------------*/ - -static void prvQueueReceiveTask( void *pvParameters ) -{ -unsigned long ulReceivedValue; - - for( ;; ) - { - /* Wait until something arives in the queue - this will block - indefinitely provided INCLUDE_vTaskSuspend is set to 1 in - FreeRTOSConfig.h. */ - xQueueReceive( xQueue, &ulReceivedValue, portMAX_DELAY ); - - /* To get here something must have arrived, but is it the expected - value? If it is, toggle the LED. */ - if( ulReceivedValue == 100UL ) - { - vParTestToggleLED( 0 ); - } - } -} -/*-----------------------------------------------------------*/ - -void vApplicationSetupTimerInterrupt( void ) -{ - /* Enable compare match timer 0. */ - MSTP( CMT0 ) = 0; - - /* Interrupt on compare match. */ - CMT0.CMCR.BIT.CMIE = 1; - - /* Set the compare match value. */ - CMT0.CMCOR = ( unsigned short ) ( ( ( configPERIPHERAL_CLOCK_HZ / configTICK_RATE_HZ ) -1 ) / 8 ); - - /* Divide the PCLK by 8. */ - CMT0.CMCR.BIT.CKS = 0; - - /* Enable the interrupt... */ - _IEN( _CMT0_CMI0 ) = 1; - - /* ...and set its priority to the application defined kernel priority. */ - _IPR( _CMT0_CMI0 ) = configKERNEL_INTERRUPT_PRIORITY; - - /* Start the timer. */ - CMT.CMSTR0.BIT.STR0 = 1; -} -/*-----------------------------------------------------------*/ - -/* This function is explained by the comments above its prototype at the top -of this file. */ -void vApplicationMallocFailedHook( void ) -{ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -/* This function is explained by the comments above its prototype at the top -of this file. */ -void vApplicationStackOverflowHook( TaskHandle_t pxTask, char *pcTaskName ) -{ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -/* This function is explained by the comments above its prototype at the top -of this file. */ -void vApplicationIdleHook( void ) -{ - /* Just to prevent the variable getting optimised away. */ - ( void ) ulHighFrequencyTickCount; -} -/*-----------------------------------------------------------*/ - -/* The following two functions are here just to allow all three build -configurations to use the same vector table. They are not used in this -demo, but linker errors will result if they are not defined. They can -be ignored. */ -void vT0_1InterruptHandler( void ) {} -void vT2_3InterruptHandler( void ) {} \ No newline at end of file diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/main-full.c b/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/main-full.c deleted file mode 100644 index 679224385..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/main-full.c +++ /dev/null @@ -1,508 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* **************************************************************************** - * This project includes a lot of tasks and tests and is therefore complex. - * If you would prefer a much simpler project to get started with then select - * the 'Blinky' build configuration within the HEW IDE. - * **************************************************************************** - * - * Creates all the demo application tasks, then starts the scheduler. The web - * documentation provides more details of the standard demo application tasks, - * which provide no particular functionality but do provide a good example of - * how to use the FreeRTOS API. The tasks defined in flop.c are included in the - * set of standard demo tasks to ensure the floating point unit gets some - * exercise. - * - * In addition to the standard demo tasks, the following tasks and tests are - * defined and/or created within this file: - * - * Webserver ("uIP") task - This serves a number of dynamically generated WEB - * pages to a standard WEB browser. The IP and MAC addresses are configured by - * constants defined at the bottom of FreeRTOSConfig.h. Use either a standard - * Ethernet cable to connect through a hug, or a cross over (point to point) - * cable to connect directly. Ensure the IP address used is compatible with the - * IP address of the machine running the browser - the easiest way to achieve - * this is to ensure the first three octets of the IP addresses are the same. - * - * "Reg test" tasks - These fill the registers with known values, then check - * that each register still contains its expected value. Each task uses - * different values. The tasks run with very low priority so get preempted - * very frequently. A check variable is incremented on each iteration of the - * test loop. A register containing an unexpected value is indicative of an - * error in the context switching mechanism and will result in a branch to a - * null loop - which in turn will prevent the check variable from incrementing - * any further and allow the check task (described below) to determine that an - * error has occurred. The nature of the reg test tasks necessitates that they - * are written in assembly code. - * - * "Check" task - This only executes every five seconds but has a high priority - * to ensure it gets processor time. Its main function is to check that all the - * standard demo tasks are still operational. While no errors have been - * discovered the check task will toggle LED 5 every 5 seconds - the toggle - * rate increasing to 200ms being a visual indication that at least one task has - * reported unexpected behaviour. - * - * "High frequency timer test" - A high frequency periodic interrupt is - * generated using a timer - the interrupt is assigned a priority above - * configMAX_SYSCALL_INTERRUPT_PRIORITY so should not be effected by anything - * the kernel is doing. The frequency and priority of the interrupt, in - * combination with other standard tests executed in this demo, should result - * in interrupts nesting at least 3 and probably 4 deep. This test is only - * included in build configurations that have the optimiser switched on. In - * optimised builds the count of high frequency ticks is used as the time base - * for the run time stats. - * - * *NOTE 1* If LED5 is toggling every 5 seconds then all the demo application - * tasks are executing as expected and no errors have been reported in any - * tasks. The toggle rate increasing to 200ms indicates that at least one task - * has reported unexpected behaviour. - * - * *NOTE 2* vApplicationSetupTimerInterrupt() is called by the kernel to let - * the application set up a timer to generate the tick interrupt. In this - * example a compare match timer is used for this purpose. - * - * *NOTE 3* The CPU must be in Supervisor mode when the scheduler is started. - * The PowerON_Reset_PC() supplied in resetprg.c with this demo has - * Change_PSW_PM_to_UserMode() commented out to ensure this is the case. - * - * *NOTE 4* The IntQueue common demo tasks test interrupt nesting and make use - * of all the 8bit timers (as two cascaded 16bit units). -*/ - -/* Standard includes. */ -#include -#include - -/* Hardware specific includes. */ -#include - -/* Kernel includes. */ -#include "FreeRTOS.h" -#include "task.h" - -/* Standard demo includes. */ -#include "partest.h" -#include "flash.h" -#include "IntQueue.h" -#include "BlockQ.h" -#include "death.h" -#include "integer.h" -#include "blocktim.h" -#include "semtest.h" -#include "PollQ.h" -#include "GenQTest.h" -#include "QPeek.h" -#include "recmutex.h" -#include "flop.h" - -/* Values that are passed into the reg test tasks using the task parameter. The -tasks check that the values are passed in correctly. */ -#define mainREG_TEST_1_PARAMETER ( 0x12121212UL ) -#define mainREG_TEST_2_PARAMETER ( 0x12345678UL ) - -/* Priorities at which the tasks are created. */ -#define mainCHECK_TASK_PRIORITY ( configMAX_PRIORITIES - 1 ) -#define mainQUEUE_POLL_PRIORITY ( tskIDLE_PRIORITY + 1 ) -#define mainSEM_TEST_PRIORITY ( tskIDLE_PRIORITY + 1 ) -#define mainBLOCK_Q_PRIORITY ( tskIDLE_PRIORITY + 2 ) -#define mainCREATOR_TASK_PRIORITY ( tskIDLE_PRIORITY + 3 ) -#define mainFLASH_TASK_PRIORITY ( tskIDLE_PRIORITY + 1 ) -#define mainuIP_TASK_PRIORITY ( tskIDLE_PRIORITY + 2 ) -#define mainINTEGER_TASK_PRIORITY ( tskIDLE_PRIORITY ) -#define mainGEN_QUEUE_TASK_PRIORITY ( tskIDLE_PRIORITY ) -#define mainFLOP_TASK_PRIORITY ( tskIDLE_PRIORITY ) - -/* The WEB server uses string handling functions, which in turn use a bit more -stack than most of the other tasks. */ -#define mainuIP_STACK_SIZE ( configMINIMAL_STACK_SIZE * 3 ) - -/* The LED toggled by the check task. */ -#define mainCHECK_LED ( 5 ) - -/* The rate at which mainCHECK_LED will toggle when all the tasks are running -without error. Controlled by the check task as described at the top of this -file. */ -#define mainNO_ERROR_CYCLE_TIME ( 5000 / portTICK_PERIOD_MS ) - -/* The rate at which mainCHECK_LED will toggle when an error has been reported -by at least one task. Controlled by the check task as described at the top of -this file. */ -#define mainERROR_CYCLE_TIME ( 200 / portTICK_PERIOD_MS ) - -/* For outputing debug console messages - just maps to printf. */ -#ifdef DEBUG_BUILD - #define xPrintf( x ) printf( x ) -#else - #define xPrintf( x ) ( void ) x -#endif - -/* - * vApplicationMallocFailedHook() will only be called if - * configUSE_MALLOC_FAILED_HOOK is set to 1 in FreeRTOSConfig.h. It is a hook - * function that will execute if a call to pvPortMalloc() fails. - * pvPortMalloc() is called internally by the kernel whenever a task, queue or - * semaphore is created. It is also called by various parts of the demo - * application. - */ -void vApplicationMallocFailedHook( void ); - -/* - * vApplicationIdleHook() will only be called if configUSE_IDLE_HOOK is set to 1 - * in FreeRTOSConfig.h. It is a hook function that is called on each iteration - * of the idle task. It is essential that code added to this hook function - * never attempts to block in any way (for example, call xQueueReceive() with - * a block time specified). If the application makes use of the vTaskDelete() - * API function (as this demo application does) then it is also important that - * vApplicationIdleHook() is permitted to return to its calling function because - * it is the responsibility of the idle task to clean up memory allocated by the - * kernel to any task that has since been deleted. - */ -void vApplicationIdleHook( void ); - -/* - * vApplicationStackOverflowHook() will only be called if - * configCHECK_FOR_STACK_OVERFLOW is set to a non-zero value. The handle and - * name of the offending task should be passed in the function parameters, but - * it is possible that the stack overflow will have corrupted these - in which - * case pxCurrentTCB can be inspected to find the same information. - */ -void vApplicationStackOverflowHook( TaskHandle_t pxTask, char *pcTaskName ); - -/* - * The reg test tasks as described at the top of this file. - */ -static void prvRegTest1Task( void *pvParameters ); -static void prvRegTest2Task( void *pvParameters ); - -/* - * The actual implementation of the reg test functionality, which, because of - * the direct register access, have to be in assembly. - */ -extern void prvRegTest1Implementation( void ); -extern void prvRegTest2Implementation( void ); - - -/* - * The check task as described at the top of this file. - */ -static void prvCheckTask( void *pvParameters ); - -/* - * Contains the implementation of the WEB server. - */ -extern void vuIP_Task( void *pvParameters ); - -/*-----------------------------------------------------------*/ - -/* Variables that are incremented on each iteration of the reg test tasks - -provided the tasks have not reported any errors. The check task inspects these -variables to ensure they are still incrementing as expected. If a variable -stops incrementing then it is likely that its associate task has stalled. */ -unsigned long ulRegTest1CycleCount = 0UL, ulRegTest2CycleCount = 0UL; - -/* The status message that is displayed at the bottom of the "task stats" web -page, which is served by the uIP task. This will report any errors picked up -by the reg test task. */ -static const char *pcStatusMessage = NULL; - -/*-----------------------------------------------------------*/ - -void main(void) -{ -extern void HardwareSetup( void ); - - /* Renesas provided CPU configuration routine. The clocks are configured in - here. */ - HardwareSetup(); - - xPrintf( "http://www.FreeRTOS.org\r\n" ); - - /* Start the reg test tasks which test the context switching mechanism. */ - xTaskCreate( prvRegTest1Task, "RegTst1", configMINIMAL_STACK_SIZE, ( void * ) mainREG_TEST_1_PARAMETER, tskIDLE_PRIORITY, NULL ); - xTaskCreate( prvRegTest2Task, "RegTst2", configMINIMAL_STACK_SIZE, ( void * ) mainREG_TEST_2_PARAMETER, tskIDLE_PRIORITY, NULL ); - - /* The web server task. */ - xTaskCreate( vuIP_Task, "uIP", mainuIP_STACK_SIZE, NULL, mainuIP_TASK_PRIORITY, NULL ); - - /* Start the check task as described at the top of this file. */ - xTaskCreate( prvCheckTask, "Check", configMINIMAL_STACK_SIZE * 3, NULL, mainCHECK_TASK_PRIORITY, NULL ); - - /* Create the standard demo tasks. */ - vStartBlockingQueueTasks( mainBLOCK_Q_PRIORITY ); - vCreateBlockTimeTasks(); - vStartSemaphoreTasks( mainSEM_TEST_PRIORITY ); - vStartPolledQueueTasks( mainQUEUE_POLL_PRIORITY ); - vStartIntegerMathTasks( mainINTEGER_TASK_PRIORITY ); - vStartGenericQueueTasks( mainGEN_QUEUE_TASK_PRIORITY ); - vStartLEDFlashTasks( mainFLASH_TASK_PRIORITY ); - vStartQueuePeekTasks(); - vStartRecursiveMutexTasks(); - vStartInterruptQueueTasks(); - vStartMathTasks( mainFLOP_TASK_PRIORITY ); - - /* The suicide tasks must be created last as they need to know how many - tasks were running prior to their creation in order to ascertain whether - or not the correct/expected number of tasks are running at any given time. */ - vCreateSuicidalTasks( mainCREATOR_TASK_PRIORITY ); - - /* Start the tasks running. */ - vTaskStartScheduler(); - - /* If all is well we will never reach here as the scheduler will now be - running. If we do reach here then it is likely that there was insufficient - heap available for the idle task to be created. */ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -static void prvCheckTask( void *pvParameters ) -{ -static volatile unsigned long ulLastRegTest1CycleCount = 0UL, ulLastRegTest2CycleCount = 0UL; -TickType_t xNextWakeTime, xCycleFrequency = mainNO_ERROR_CYCLE_TIME; -extern void vSetupHighFrequencyTimer( void ); - - /* If this is being executed then the kernel has been started. Start the high - frequency timer test as described at the top of this file. This is only - included in the optimised build configuration - otherwise it takes up too much - CPU time. */ - #ifdef INCLUDE_HIGH_FREQUENCY_TIMER_TEST - vSetupHighFrequencyTimer(); - #endif - - /* Initialise xNextWakeTime - this only needs to be done once. */ - xNextWakeTime = xTaskGetTickCount(); - - for( ;; ) - { - /* Place this task in the blocked state until it is time to run again. */ - vTaskDelayUntil( &xNextWakeTime, xCycleFrequency ); - - /* Check the standard demo tasks are running without error. */ - if( xAreGenericQueueTasksStillRunning() != pdTRUE ) - { - /* Increase the rate at which this task cycles, which will increase the - rate at which mainCHECK_LED flashes to give visual feedback that an error - has occurred. */ - pcStatusMessage = "Error: GenQueue"; - xPrintf( pcStatusMessage ); - } - - if( xAreQueuePeekTasksStillRunning() != pdTRUE ) - { - pcStatusMessage = "Error: QueuePeek\r\n"; - xPrintf( pcStatusMessage ); - } - - if( xAreBlockingQueuesStillRunning() != pdTRUE ) - { - pcStatusMessage = "Error: BlockQueue\r\n"; - xPrintf( pcStatusMessage ); - } - - if( xAreBlockTimeTestTasksStillRunning() != pdTRUE ) - { - pcStatusMessage = "Error: BlockTime\r\n"; - xPrintf( pcStatusMessage ); - } - - if( xAreSemaphoreTasksStillRunning() != pdTRUE ) - { - pcStatusMessage = "Error: SemTest\r\n"; - xPrintf( pcStatusMessage ); - } - - if( xArePollingQueuesStillRunning() != pdTRUE ) - { - pcStatusMessage = "Error: PollQueue\r\n"; - xPrintf( pcStatusMessage ); - } - - if( xIsCreateTaskStillRunning() != pdTRUE ) - { - pcStatusMessage = "Error: Death\r\n"; - xPrintf( pcStatusMessage ); - } - - if( xAreIntegerMathsTaskStillRunning() != pdTRUE ) - { - pcStatusMessage = "Error: IntMath\r\n"; - xPrintf( pcStatusMessage ); - } - - if( xAreRecursiveMutexTasksStillRunning() != pdTRUE ) - { - pcStatusMessage = "Error: RecMutex\r\n"; - xPrintf( pcStatusMessage ); - } - - if( xAreIntQueueTasksStillRunning() != pdPASS ) - { - pcStatusMessage = "Error: IntQueue\r\n"; - xPrintf( pcStatusMessage ); - } - - if( xAreMathsTaskStillRunning() != pdPASS ) - { - pcStatusMessage = "Error: Flop\r\n"; - xPrintf( pcStatusMessage ); - } - - /* Check the reg test tasks are still cycling. They will stop incrementing - their loop counters if they encounter an error. */ - if( ulRegTest1CycleCount == ulLastRegTest1CycleCount ) - { - pcStatusMessage = "Error: RegTest1\r\n"; - xPrintf( pcStatusMessage ); - } - - if( ulRegTest2CycleCount == ulLastRegTest2CycleCount ) - { - pcStatusMessage = "Error: RegTest2\r\n"; - xPrintf( pcStatusMessage ); - } - - ulLastRegTest1CycleCount = ulRegTest1CycleCount; - ulLastRegTest2CycleCount = ulRegTest2CycleCount; - - /* Toggle the check LED to give an indication of the system status. If - the LED toggles every 5 seconds then everything is ok. A faster toggle - indicates an error. */ - vParTestToggleLED( mainCHECK_LED ); - - /* Ensure the LED toggles at a faster rate if an error has occurred. */ - if( pcStatusMessage != NULL ) - { - xCycleFrequency = mainERROR_CYCLE_TIME; - } - } -} -/*-----------------------------------------------------------*/ - -/* The RX port uses this callback function to configure its tick interrupt. -This allows the application to choose the tick interrupt source. */ -void vApplicationSetupTimerInterrupt( void ) -{ - /* Enable compare match timer 0. */ - MSTP( CMT0 ) = 0; - - /* Interrupt on compare match. */ - CMT0.CMCR.BIT.CMIE = 1; - - /* Set the compare match value. */ - CMT0.CMCOR = ( unsigned short ) ( ( ( configPERIPHERAL_CLOCK_HZ / configTICK_RATE_HZ ) -1 ) / 8 ); - - /* Divide the PCLK by 8. */ - CMT0.CMCR.BIT.CKS = 0; - - /* Enable the interrupt... */ - _IEN( _CMT0_CMI0 ) = 1; - - /* ...and set its priority to the application defined kernel priority. */ - _IPR( _CMT0_CMI0 ) = configKERNEL_INTERRUPT_PRIORITY; - - /* Start the timer. */ - CMT.CMSTR0.BIT.STR0 = 1; -} -/*-----------------------------------------------------------*/ - -/* This function is explained by the comments above its prototype at the top -of this file. */ -void vApplicationMallocFailedHook( void ) -{ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -/* This function is explained by the comments above its prototype at the top -of this file. */ -void vApplicationStackOverflowHook( TaskHandle_t pxTask, char *pcTaskName ) -{ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -/* This function is explained by the comments above its prototype at the top -of this file. */ -void vApplicationIdleHook( void ) -{ -} -/*-----------------------------------------------------------*/ - -/* This function is explained in the comments at the top of this file. */ -static void prvRegTest1Task( void *pvParameters ) -{ - if( ( ( unsigned long ) pvParameters ) != mainREG_TEST_1_PARAMETER ) - { - /* The parameter did not contain the expected value. */ - for( ;; ) - { - /* Stop the tick interrupt so its obvious something has gone wrong. */ - taskDISABLE_INTERRUPTS(); - } - } - - /* This is an asm function that never returns. */ - prvRegTest1Implementation(); -} -/*-----------------------------------------------------------*/ - -/* This function is explained in the comments at the top of this file. */ -static void prvRegTest2Task( void *pvParameters ) -{ - if( ( ( unsigned long ) pvParameters ) != mainREG_TEST_2_PARAMETER ) - { - /* The parameter did not contain the expected value. */ - for( ;; ) - { - /* Stop the tick interrupt so its obvious something has gone wrong. */ - taskDISABLE_INTERRUPTS(); - } - } - - /* This is an asm function that never returns. */ - prvRegTest2Implementation(); -} -/*-----------------------------------------------------------*/ - -char *pcGetTaskStatusMessage( void ) -{ - /* Not bothered about a critical section here although technically because of - the task priorities the pointer could change it will be atomic if not near - atomic and its not critical. */ - if( pcStatusMessage == NULL ) - { - return "All tasks running without error"; - } - else - { - return ( char * ) pcStatusMessage; - } -} -/*-----------------------------------------------------------*/ - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/settings/RTOSDemo.cspy.bat b/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/settings/RTOSDemo.cspy.bat deleted file mode 100644 index c5731752e..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/settings/RTOSDemo.cspy.bat +++ /dev/null @@ -1,15 +0,0 @@ -@REM This batch file has been generated by the IAR Embedded Workbench -@REM C-SPY Debugger, as an aid to preparing a command line for running -@REM the cspybat command line utility using the appropriate settings. -@REM -@REM You can launch cspybat by typing the name of this batch file followed -@REM by the name of the debug file (usually an ELF/DWARF or UBROF file). -@REM Note that this file is generated every time a new debug session -@REM is initialized, so you may want to move or rename the file before -@REM making changes. -@REM - - -"C:\devtools\IAR Systems\Embedded Workbench 6.0\common\bin\cspybat" "C:\devtools\IAR Systems\Embedded Workbench 6.0\rx\bin\rxproc.dll" "C:\devtools\IAR Systems\Embedded Workbench 6.0\rx\bin\rxemue20.dll" %1 --plugin "C:\devtools\IAR Systems\Embedded Workbench 6.0\rx\bin\rxbat.dll" --backend -B "--core" "RX600" "-p" "C:\devtools\IAR Systems\Embedded Workbench 6.0\rx\config\debugger\ior5f562n8.ddf" "--double" "32" "--endian" "l" "--int" "32" "-d" "emue20" "--emu" "e1e20" "--drv_communication" "USB" "--verify_download" "all" - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/settings/RTOSDemo.dbgdt b/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/settings/RTOSDemo.dbgdt deleted file mode 100644 index eb0814430..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/settings/RTOSDemo.dbgdt +++ /dev/null @@ -1,63 +0,0 @@ - - - - - - - - - 300BuildBreakpoints201622 - - - - - - 20121632481300Debug-LogBreakpoints - - - - - - - 164272727 - - - - - - 200100 - 200ethfifo-status4struct Descriptor-status420020916610010030010300Debug-LogBuild200110$PROJ_DIR$\TermIOInput.txt10 - - - - - - - - TabID-20000-3827 - Workspace - Workspace - - - RTOSDemoRTOSDemo/FreeRTOS SourceRTOSDemo/FreeRTOS Source/Portable LayerRTOSDemo/FreeTCPIP (based on uIP)RTOSDemo/FreeTCPIP (based on uIP)/webserverRTOSDemo/FreeTCPIP (based on uIP)/webserver/Port specific - - - - 0TabID-2655-13188Debug LogDebug-Log0 - - - - - - TextEditor$WS_DIR$\main-full.c024512338123380TextEditor$WS_DIR$\FreeRTOSConfig.h07446864686TextEditor$WS_DIR$\webserver\EMAC.c001377613776TextEditor$WS_DIR$\main-blinky.c08647874787TextEditor$WS_DIR$\uIP_Task.c0226710671060100000010000001 - - - - - - - iaridepm.enu1debuggergui.enu1-2-2740238-2-212114172024143585142857755601-2-21981682-2-216842001002381203666119048203666 - - - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/settings/RTOSDemo.dni b/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/settings/RTOSDemo.dni deleted file mode 100644 index 43d1a4018..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/settings/RTOSDemo.dni +++ /dev/null @@ -1,80 +0,0 @@ -[E20] -TimeConnected=1305306678 -ComuniDllSave=82903040 -FfwnsdDllSave=303890432 -ChipName=R5F562N8 -CpuMode=0 -InputClock=12.500000 -WorkRamStart=12288 -JtagClock=10 -DebugFlags=0,0 -EmulatorMode=0 -NeedInit=1 -BlockBits=0 -B0=0,0 -B1=0,0 -B2=0,0 -B3=0,0 -TraceMode=0 -TraceOutput=2 -TraceCapacity=0 -TraceRestart=0 -OperatingFrequency=12.500000 -[DebugChecksum] -Checksum=-127835808 -[DisAssemblyWindow] -NumStates=_ 1 -State 1=_ 1 -[InstructionProfiling] -Enabled=_ 0 -[CodeCoverage] -Enabled=_ 0 -[Profiling] -Enabled=0 -[StackPlugin] -Enabled=1 -OverflowWarningsEnabled=1 -WarningThreshold=90 -SpWarningsEnabled=0 -WarnHow=0 -UseTrigger=1 -TriggerName=main -LimitSize=0 -ByteLimit=50 -[Stack] -FillEnabled=0 -OverflowWarningsEnabled=1 -WarningThreshold=90 -SpWarningsEnabled=1 -WarnLogOnly=1 -UseTrigger=1 -TriggerName=main -LimitSize=0 -ByteLimit=50 -[CallStack] -ShowArgs=0 -[Log file] -LoggingEnabled=_ 0 -LogFile=_ "" -Category=_ 0 -[TermIOLog] -LoggingEnabled=_ 0 -LogFile=_ "" -[CallStackLog] -Enabled=0 -[DriverProfiling] -Enabled=0 -Mode=3 -Graph=0 -Symbiont=0 -[Breakpoints] -Count=0 -[Monitor Execution] -Leave target running=0 -Release target=0 -[Aliases] -Count=0 -SuppressDialog=0 -[TraceHelper] -Enabled=0 -ShowSource=1 diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/settings/RTOSDemo.wsdt b/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/settings/RTOSDemo.wsdt deleted file mode 100644 index d9a205d53..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/settings/RTOSDemo.wsdt +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - RTOSDemo/Debug - - - - - - - - - 277272727 - - - - - - - 20121632481 - - 181624 - - - - - - - TabID-10758-3386 - Workspace - Workspace - - - RTOSDemoRTOSDemo/FreeRTOS Source - - - - 0 - - - TabID-16801-3477 - Build - Build - - - TabID-414-15843BreakpointsBreakpointsTabID-3320-15993Debug LogDebug-Log - - 0 - - - - - - TextEditor$WS_DIR$\main-full.c024512338123380TextEditor$WS_DIR$\main-blinky.c086478747870100000010000001 - - - - - - - iaridepm.enu1-2-2706351-2-2331284197024289206210119720978-2-22321682-2-216842341002381238289197024289206 - - - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/uIP_Task.c b/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/uIP_Task.c deleted file mode 100644 index df730a3c0..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/uIP_Task.c +++ /dev/null @@ -1,319 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* Standard includes. */ -#include - -/* Scheduler includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "timers.h" -#include "queue.h" - -/* uip includes. */ -#include "net/uip.h" -#include "net/uip_arp.h" -#include "apps/httpd/httpd.h" -#include "sys/timer.h" -#include "net/clock-arch.h" -#include "r_ether.h" - -/* Demo includes. */ -#include "ParTest.h" - -/*-----------------------------------------------------------*/ - -/* How long to wait before attempting to connect the MAC again. */ -#define uipINIT_WAIT ( 100 / portTICK_PERIOD_MS ) - -/* Shortcut to the header within the Rx buffer. */ -#define xHeader ((struct uip_eth_hdr *) &uip_buf[ 0 ]) - -/* Standard constant. */ -#define uipTOTAL_FRAME_HEADER_SIZE 54 - -/* The ARP timer and the periodic timer share a callback function, so the -respective timer IDs are used to determine which timer actually expired. These -constants are assigned to the timer IDs. */ -#define uipARP_TIMER 0 -#define uipPERIODIC_TIMER 1 - -/* A block time of zero ticks simply means, "don't block". */ -#define uipDONT_BLOCK 0UL - -/*-----------------------------------------------------------*/ - -/* - * Setup the MAC address in the MAC itself, and in the uIP stack. - */ -static void prvSetMACAddress( void ); - -/* - * Perform any uIP initialisation necessary. - */ -static void prvInitialise_uIP( void ); - -/* - * The callback function that is assigned to both the periodic timer and the - * ARP timer. - */ -static void prvUIPTimerCallback( TimerHandle_t xTimer ); - -/* - * Port functions required by the uIP stack. - */ -clock_time_t clock_time( void ); - -/*-----------------------------------------------------------*/ - -/* The queue used to send TCP/IP events to the uIP stack. */ -QueueHandle_t xEMACEventQueue = NULL; - -/*-----------------------------------------------------------*/ - -clock_time_t clock_time( void ) -{ - return xTaskGetTickCount(); -} -/*-----------------------------------------------------------*/ - -void vuIP_Task( void *pvParameters ) -{ -portBASE_TYPE i; -unsigned long ulNewEvent = 0UL; -unsigned long ulUIP_Events = 0UL; - - ( void ) pvParameters; - - /* Initialise the uIP stack. */ - prvInitialise_uIP(); - - /* Initialise the MAC. */ - vInitEmac(); - - while( lEMACWaitForLink() != pdPASS ) - { - vTaskDelay( uipINIT_WAIT ); - } - - for( ;; ) - { - if( ( ulUIP_Events & uipETHERNET_RX_EVENT ) != 0UL ) - { - /* Is there received data ready to be processed? */ - uip_len = ( unsigned short ) ulEMACRead(); - - if( ( uip_len > 0 ) && ( uip_buf != NULL ) ) - { - /* Standard uIP loop taken from the uIP manual. */ - if( xHeader->type == htons( UIP_ETHTYPE_IP ) ) - { - uip_arp_ipin(); - uip_input(); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - uip_arp_out(); - vEMACWrite(); - } - } - else if( xHeader->type == htons( UIP_ETHTYPE_ARP ) ) - { - uip_arp_arpin(); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - vEMACWrite(); - } - } - } - else - { - ulUIP_Events &= ~uipETHERNET_RX_EVENT; - } - } - - if( ( ulUIP_Events & uipPERIODIC_TIMER_EVENT ) != 0UL ) - { - ulUIP_Events &= ~uipPERIODIC_TIMER_EVENT; - - for( i = 0; i < UIP_CONNS; i++ ) - { - uip_periodic( i ); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - uip_arp_out(); - vEMACWrite(); - } - } - } - - /* Call the ARP timer function every 10 seconds. */ - if( ( ulUIP_Events & uipARP_TIMER_EVENT ) != 0 ) - { - ulUIP_Events &= ~uipARP_TIMER_EVENT; - uip_arp_timer(); - } - - if( ulUIP_Events == pdFALSE ) - { - xQueueReceive( xEMACEventQueue, &ulNewEvent, portMAX_DELAY ); - ulUIP_Events |= ulNewEvent; - } - } -} -/*-----------------------------------------------------------*/ - -static void prvInitialise_uIP( void ) -{ -TimerHandle_t xARPTimer, xPeriodicTimer; -uip_ipaddr_t xIPAddr; -const unsigned long ul_uIPEventQueueLength = 10UL; - - /* Initialise the uIP stack. */ - uip_init(); - uip_ipaddr( &xIPAddr, configIP_ADDR0, configIP_ADDR1, configIP_ADDR2, configIP_ADDR3 ); - uip_sethostaddr( &xIPAddr ); - uip_ipaddr( &xIPAddr, configNET_MASK0, configNET_MASK1, configNET_MASK2, configNET_MASK3 ); - uip_setnetmask( &xIPAddr ); - prvSetMACAddress(); - httpd_init(); - - /* Create the queue used to sent TCP/IP events to the uIP stack. */ - xEMACEventQueue = xQueueCreate( ul_uIPEventQueueLength, sizeof( unsigned long ) ); - - /* Create and start the uIP timers. */ - xARPTimer = xTimerCreate( "ARPTimer", /* Just a name that is helpful for debugging, not used by the kernel. */ - ( 10000UL / portTICK_PERIOD_MS ), /* Timer period. */ - pdTRUE, /* Autor-reload. */ - ( void * ) uipARP_TIMER, - prvUIPTimerCallback - ); - - xPeriodicTimer = xTimerCreate( "PeriodicTimer", - ( 50 / portTICK_PERIOD_MS ), - pdTRUE, /* Autor-reload. */ - ( void * ) uipPERIODIC_TIMER, - prvUIPTimerCallback - ); - - configASSERT( xARPTimer ); - configASSERT( xPeriodicTimer ); - - xTimerStart( xARPTimer, portMAX_DELAY ); - xTimerStart( xPeriodicTimer, portMAX_DELAY ); -} -/*-----------------------------------------------------------*/ - -static void prvUIPTimerCallback( TimerHandle_t xTimer ) -{ -static const unsigned long ulARPTimerExpired = uipARP_TIMER_EVENT; -static const unsigned long ulPeriodicTimerExpired = uipPERIODIC_TIMER_EVENT; - - /* This is a time callback, so calls to xQueueSend() must not attempt to - block. */ - switch( ( int ) pvTimerGetTimerID( xTimer ) ) - { - case uipARP_TIMER : xQueueSend( xEMACEventQueue, &ulARPTimerExpired, uipDONT_BLOCK ); - break; - - case uipPERIODIC_TIMER : xQueueSend( xEMACEventQueue, &ulPeriodicTimerExpired, uipDONT_BLOCK ); - break; - - default : /* Should not get here. */ - break; - } -} -/*-----------------------------------------------------------*/ - -static void prvSetMACAddress( void ) -{ -struct uip_eth_addr xAddr; - - /* Configure the MAC address in the uIP stack. */ - xAddr.addr[ 0 ] = configMAC_ADDR0; - xAddr.addr[ 1 ] = configMAC_ADDR1; - xAddr.addr[ 2 ] = configMAC_ADDR2; - xAddr.addr[ 3 ] = configMAC_ADDR3; - xAddr.addr[ 4 ] = configMAC_ADDR4; - xAddr.addr[ 5 ] = configMAC_ADDR5; - uip_setethaddr( xAddr ); -} -/*-----------------------------------------------------------*/ - -void vApplicationProcessFormInput( char *pcInputString ) -{ -char *c; - - /* Only interested in processing form input if this is the IO page. */ - c = strstr( pcInputString, "io.shtml" ); - - if( c ) - { - /* Is there a command in the string? */ - c = strstr( pcInputString, "?" ); - if( c ) - { - /* Turn the LED's on or off in accordance with the check box status. */ - if( strstr( c, "LED0=1" ) != NULL ) - { - /* Turn the LEDs on. */ - vParTestSetLED( 7, 1 ); - vParTestSetLED( 8, 1 ); - vParTestSetLED( 9, 1 ); - vParTestSetLED( 10, 1 ); - } - else - { - /* Turn the LEDs off. */ - vParTestSetLED( 7, 0 ); - vParTestSetLED( 8, 0 ); - vParTestSetLED( 9, 0 ); - vParTestSetLED( 10, 0 ); - } - } - else - { - /* Commands to turn LEDs off are not always explicit. */ - vParTestSetLED( 7, 0 ); - vParTestSetLED( 8, 0 ); - vParTestSetLED( 9, 0 ); - vParTestSetLED( 10, 0 ); - } - } -} - diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/webserver/EMAC.c b/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/webserver/EMAC.c deleted file mode 100644 index 72336d35c..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/webserver/EMAC.c +++ /dev/null @@ -1,533 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* Hardware specific includes. */ -#include -#include "typedefine.h" -#include "r_ether.h" -#include "phy.h" - -/* FreeRTOS includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "semphr.h" - -/* uIP includes. */ -#include "net/uip.h" - -/* The time to wait between attempts to obtain a free buffer. */ -#define emacBUFFER_WAIT_DELAY_ms ( 3 / portTICK_PERIOD_MS ) - -/* The number of times emacBUFFER_WAIT_DELAY_ms should be waited before giving -up on attempting to obtain a free buffer all together. */ -#define emacBUFFER_WAIT_ATTEMPTS ( 30 ) - -/* The number of Rx descriptors. */ -#define emacNUM_RX_DESCRIPTORS 8 - -/* The number of Tx descriptors. When using uIP there is not point in having -more than two. */ -#define emacNUM_TX_BUFFERS 2 - -/* The total number of EMAC buffers to allocate. */ -#define emacNUM_BUFFERS ( emacNUM_RX_DESCRIPTORS + emacNUM_TX_BUFFERS ) - -/* The time to wait for the Tx descriptor to become free. */ -#define emacTX_WAIT_DELAY_ms ( 10 / portTICK_PERIOD_MS ) - -/* The total number of times to wait emacTX_WAIT_DELAY_ms for the Tx descriptor to -become free. */ -#define emacTX_WAIT_ATTEMPTS ( 50 ) - -/* Only Rx end and Tx end interrupts are used by this driver. */ -#define emacTX_END_INTERRUPT ( 1UL << 21UL ) -#define emacRX_END_INTERRUPT ( 1UL << 18UL ) - -/*-----------------------------------------------------------*/ - -/* The buffers and descriptors themselves. */ -#pragma data_alignment=32 -volatile ethfifo xRxDescriptors[ emacNUM_RX_DESCRIPTORS ]; - -#pragma data_alignment=32 -volatile ethfifo xTxDescriptors[ emacNUM_TX_BUFFERS ]; - -#pragma data_alignment=32 -char xEthernetBuffers[ emacNUM_BUFFERS ][ UIP_BUFSIZE ]; - - -/* Used to indicate which buffers are free and which are in use. If an index -contains 0 then the corresponding buffer in xEthernetBuffers is free, otherwise -the buffer is in use or about to be used. */ -static unsigned char ucBufferInUse[ emacNUM_BUFFERS ]; - -/*-----------------------------------------------------------*/ - -/* - * Initialise both the Rx and Tx descriptors. - */ -static void prvInitialiseDescriptors( void ); - -/* - * Return a pointer to a free buffer within xEthernetBuffers. - */ -static unsigned char *prvGetNextBuffer( void ); - -/* - * Return a buffer to the list of free buffers. - */ -static void prvReturnBuffer( unsigned char *pucBuffer ); - -/* - * Examine the status of the next Rx FIFO to see if it contains new data. - */ -static unsigned long prvCheckRxFifoStatus( void ); - -/* - * Setup the microcontroller for communication with the PHY. - */ -static void prvResetMAC( void ); - -/* - * Configure the Ethernet interface peripherals. - */ -static void prvConfigureEtherCAndEDMAC( void ); - -/* - * Something has gone wrong with the descriptor usage. Reset all the buffers - * and descriptors. - */ -static void prvResetEverything( void ); - -/*-----------------------------------------------------------*/ - -/* Points to the Rx descriptor currently in use. */ -static volatile ethfifo *pxCurrentRxDesc = NULL; - -/* The buffer used by the uIP stack to both receive and send. This points to -one of the Ethernet buffers when its actually in use. */ -unsigned char *uip_buf = NULL; - -/*-----------------------------------------------------------*/ - -void vInitEmac( void ) -{ - /* Software reset. */ - prvResetMAC(); - - /* Set the Rx and Tx descriptors into their initial state. */ - prvInitialiseDescriptors(); - - /* Set the MAC address into the ETHERC */ - ETHERC.MAHR = ( ( unsigned long ) configMAC_ADDR0 << 24UL ) | - ( ( unsigned long ) configMAC_ADDR1 << 16UL ) | - ( ( unsigned long ) configMAC_ADDR2 << 8UL ) | - ( unsigned long ) configMAC_ADDR3; - - ETHERC.MALR.BIT.MA = ( ( unsigned long ) configMAC_ADDR4 << 8UL ) | - ( unsigned long ) configMAC_ADDR5; - - /* Perform rest of interface hardware configuration. */ - prvConfigureEtherCAndEDMAC(); - - /* Nothing received yet, so uip_buf points nowhere. */ - uip_buf = NULL; - - /* Initialize the PHY */ - phy_init(); -} -/*-----------------------------------------------------------*/ - -void vEMACWrite( void ) -{ -long x; - - /* Wait until the second transmission of the last packet has completed. */ - for( x = 0; x < emacTX_WAIT_ATTEMPTS; x++ ) - { - if( ( xTxDescriptors[ 1 ].status & ACT ) != 0 ) - { - /* Descriptor is still active. */ - vTaskDelay( emacTX_WAIT_DELAY_ms ); - } - else - { - break; - } - } - - /* Is the descriptor free after waiting for it? */ - if( ( xTxDescriptors[ 1 ].status & ACT ) != 0 ) - { - /* Something has gone wrong. */ - prvResetEverything(); - } - - /* Setup both descriptors to transmit the frame. */ - xTxDescriptors[ 0 ].buf_p = ( char * ) uip_buf; - xTxDescriptors[ 0 ].bufsize = uip_len; - xTxDescriptors[ 1 ].buf_p = ( char * ) uip_buf; - xTxDescriptors[ 1 ].bufsize = uip_len; - - /* uip_buf is being sent by the Tx descriptor. Allocate a new buffer - for use by the stack. */ - uip_buf = prvGetNextBuffer(); - - /* Clear previous settings and go. */ - xTxDescriptors[0].status &= ~( FP1 | FP0 ); - xTxDescriptors[0].status |= ( FP1 | FP0 | ACT ); - xTxDescriptors[1].status &= ~( FP1 | FP0 ); - xTxDescriptors[1].status |= ( FP1 | FP0 | ACT ); - - EDMAC.EDTRR.LONG = 0x00000001; -} -/*-----------------------------------------------------------*/ - -unsigned long ulEMACRead( void ) -{ -unsigned long ulBytesReceived; - - ulBytesReceived = prvCheckRxFifoStatus(); - - if( ulBytesReceived > 0 ) - { - /* Mark the pxDescriptor buffer as free as uip_buf is going to be set to - the buffer that contains the received data. */ - prvReturnBuffer( uip_buf ); - - /* Point uip_buf to the data about ot be processed. */ - uip_buf = ( void * ) pxCurrentRxDesc->buf_p; - - /* Allocate a new buffer to the descriptor, as uip_buf is now using it's - old descriptor. */ - pxCurrentRxDesc->buf_p = ( char * ) prvGetNextBuffer(); - - /* Prepare the descriptor to go again. */ - pxCurrentRxDesc->status &= ~( FP1 | FP0 ); - pxCurrentRxDesc->status |= ACT; - - /* Move onto the next buffer in the ring. */ - pxCurrentRxDesc = pxCurrentRxDesc->next; - - if( EDMAC.EDRRR.LONG == 0x00000000L ) - { - /* Restart Ethernet if it has stopped */ - EDMAC.EDRRR.LONG = 0x00000001L; - } - } - - return ulBytesReceived; -} -/*-----------------------------------------------------------*/ - -long lEMACWaitForLink( void ) -{ -long lReturn; - - /* Set the link status. */ - switch( phy_set_autonegotiate() ) - { - /* Half duplex link */ - case PHY_LINK_100H: - ETHERC.ECMR.BIT.DM = 0; - ETHERC.ECMR.BIT.RTM = 1; - lReturn = pdPASS; - break; - - case PHY_LINK_10H: - ETHERC.ECMR.BIT.DM = 0; - ETHERC.ECMR.BIT.RTM = 0; - lReturn = pdPASS; - break; - - - /* Full duplex link */ - case PHY_LINK_100F: - ETHERC.ECMR.BIT.DM = 1; - ETHERC.ECMR.BIT.RTM = 1; - lReturn = pdPASS; - break; - - case PHY_LINK_10F: - ETHERC.ECMR.BIT.DM = 1; - ETHERC.ECMR.BIT.RTM = 0; - lReturn = pdPASS; - break; - - default: - lReturn = pdFAIL; - break; - } - - if( lReturn == pdPASS ) - { - /* Enable receive and transmit. */ - ETHERC.ECMR.BIT.RE = 1; - ETHERC.ECMR.BIT.TE = 1; - - /* Enable EDMAC receive */ - EDMAC.EDRRR.LONG = 0x1; - } - - return lReturn; -} -/*-----------------------------------------------------------*/ - -static void prvInitialiseDescriptors( void ) -{ -volatile ethfifo *pxDescriptor; -long x; - - for( x = 0; x < emacNUM_BUFFERS; x++ ) - { - /* Ensure none of the buffers are shown as in use at the start. */ - ucBufferInUse[ x ] = pdFALSE; - } - - /* Initialise the Rx descriptors. */ - for( x = 0; x < emacNUM_RX_DESCRIPTORS; x++ ) - { - pxDescriptor = &( xRxDescriptors[ x ] ); - pxDescriptor->buf_p = &( xEthernetBuffers[ x ][ 0 ] ); - - pxDescriptor->bufsize = UIP_BUFSIZE; - pxDescriptor->size = 0; - pxDescriptor->status = ACT; - pxDescriptor->next = ( ethfifo * ) &xRxDescriptors[ x + 1 ]; - - /* Mark this buffer as in use. */ - ucBufferInUse[ x ] = pdTRUE; - } - - /* The last descriptor points back to the start. */ - pxDescriptor->status |= DL; - pxDescriptor->next = ( ethfifo * ) &xRxDescriptors[ 0 ]; - - /* Initialise the Tx descriptors. */ - for( x = 0; x < emacNUM_TX_BUFFERS; x++ ) - { - pxDescriptor = &( xTxDescriptors[ x ] ); - - /* A buffer is not allocated to the Tx descriptor until a send is - actually required. */ - pxDescriptor->buf_p = NULL; - - pxDescriptor->bufsize = UIP_BUFSIZE; - pxDescriptor->size = 0; - pxDescriptor->status = 0; - pxDescriptor->next = ( ethfifo * ) &xTxDescriptors[ x + 1 ]; - } - - /* The last descriptor points back to the start. */ - pxDescriptor->status |= DL; - pxDescriptor->next = ( ethfifo * ) &( xTxDescriptors[ 0 ] ); - - /* Use the first Rx descriptor to start with. */ - pxCurrentRxDesc = &( xRxDescriptors[ 0 ] ); -} -/*-----------------------------------------------------------*/ - -static unsigned char *prvGetNextBuffer( void ) -{ -long x; -unsigned char *pucReturn = NULL; -unsigned long ulAttempts = 0; - - while( pucReturn == NULL ) - { - /* Look through the buffers to find one that is not in use by - anything else. */ - for( x = 0; x < emacNUM_BUFFERS; x++ ) - { - if( ucBufferInUse[ x ] == pdFALSE ) - { - ucBufferInUse[ x ] = pdTRUE; - pucReturn = ( unsigned char * ) &( xEthernetBuffers[ x ][ 0 ] ); - break; - } - } - - /* Was a buffer found? */ - if( pucReturn == NULL ) - { - ulAttempts++; - - if( ulAttempts >= emacBUFFER_WAIT_ATTEMPTS ) - { - break; - } - - /* Wait then look again. */ - vTaskDelay( emacBUFFER_WAIT_DELAY_ms ); - } - } - - return pucReturn; -} -/*-----------------------------------------------------------*/ - -static void prvReturnBuffer( unsigned char *pucBuffer ) -{ -unsigned long ul; - - /* Return a buffer to the pool of free buffers. */ - for( ul = 0; ul < emacNUM_BUFFERS; ul++ ) - { - if( &( xEthernetBuffers[ ul ][ 0 ] ) == ( void * ) pucBuffer ) - { - ucBufferInUse[ ul ] = pdFALSE; - break; - } - } -} -/*-----------------------------------------------------------*/ - -static void prvResetEverything( void ) -{ - /* Temporary code just to see if this gets called. This function has not - been implemented. */ - portDISABLE_INTERRUPTS(); - for( ;; ); -} -/*-----------------------------------------------------------*/ - -static unsigned long prvCheckRxFifoStatus( void ) -{ -unsigned long ulReturn = 0; - - if( ( pxCurrentRxDesc->status & ACT ) != 0 ) - { - /* Current descriptor is still active. */ - } - else if( ( pxCurrentRxDesc->status & FE ) != 0 ) - { - /* Frame error. Clear the error. */ - pxCurrentRxDesc->status &= ~( FP1 | FP0 | FE ); - pxCurrentRxDesc->status &= ~( RMAF | RRF | RTLF | RTSF | PRE | CERF ); - pxCurrentRxDesc->status |= ACT; - pxCurrentRxDesc = pxCurrentRxDesc->next; - - if( EDMAC.EDRRR.LONG == 0x00000000UL ) - { - /* Restart Ethernet if it has stopped. */ - EDMAC.EDRRR.LONG = 0x00000001UL; - } - } - else - { - /* The descriptor contains a frame. Because of the size of the buffers - the frame should always be complete. */ - if( ( pxCurrentRxDesc->status & FP0 ) == FP0 ) - { - ulReturn = pxCurrentRxDesc->size; - } - else - { - /* Do not expect to get here. */ - prvResetEverything(); - } - } - - return ulReturn; -} -/*-----------------------------------------------------------*/ - -static void prvResetMAC( void ) -{ - /* Ensure the EtherC and EDMAC are enabled. */ - SYSTEM.MSTPCRB.BIT.MSTPB15 = 0; - vTaskDelay( 100 / portTICK_PERIOD_MS ); - - EDMAC.EDMR.BIT.SWR = 1; - - /* Crude wait for reset to complete. */ - vTaskDelay( 500 / portTICK_PERIOD_MS ); -} -/*-----------------------------------------------------------*/ - -static void prvConfigureEtherCAndEDMAC( void ) -{ - /* Initialisation code taken from Renesas example project. */ - - /* TODO: Check bit 5 */ - ETHERC.ECSR.LONG = 0x00000037; /* Clear all ETHERC statuS BFR, PSRTO, LCHNG, MPD, ICD */ - - /* Set the EDMAC interrupt priority. */ - _IPR( _ETHER_EINT ) = configKERNEL_INTERRUPT_PRIORITY; - - /* TODO: Check bit 5 */ - /* Enable interrupts of interest only. */ - EDMAC.EESIPR.LONG = emacTX_END_INTERRUPT | emacRX_END_INTERRUPT; - ETHERC.RFLR.LONG = 1518; /* Ether payload is 1500+ CRC */ - ETHERC.IPGR.LONG = 0x00000014; /* Intergap is 96-bit time */ - - /* EDMAC */ - EDMAC.EESR.LONG = 0x47FF0F9F; /* Clear all ETHERC and EDMAC status bits */ - #if __LITTLE_ENDIAN__ == 1 - EDMAC.EDMR.BIT.DE = 1; - #endif - EDMAC.RDLAR = ( void * ) pxCurrentRxDesc; /* Initialaize Rx Descriptor List Address */ - EDMAC.TDLAR = ( void * ) &( xTxDescriptors[ 0 ] );/* Initialaize Tx Descriptor List Address */ - EDMAC.TRSCER.LONG = 0x00000000; /* Copy-back status is RFE & TFE only */ - EDMAC.TFTR.LONG = 0x00000000; /* Threshold of Tx_FIFO */ - EDMAC.FDR.LONG = 0x00000000; /* Transmit fifo & receive fifo is 256 bytes */ - EDMAC.RMCR.LONG = 0x00000003; /* Receive function is normal mode(continued) */ - ETHERC.ECMR.BIT.PRM = 0; /* Ensure promiscuous mode is off. */ - - /* Enable the interrupt... */ - _IEN( _ETHER_EINT ) = 1; -} -/*-----------------------------------------------------------*/ - -#pragma vector = VECT_ETHER_EINT -__interrupt void vEMAC_ISR_Handler( void ) -{ -unsigned long ul = EDMAC.EESR.LONG; -long lHigherPriorityTaskWoken = pdFALSE; -extern QueueHandle_t xEMACEventQueue; -const unsigned long ulRxEvent = uipETHERNET_RX_EVENT; - - __enable_interrupt(); - - /* Has a Tx end occurred? */ - if( ul & emacTX_END_INTERRUPT ) - { - /* Only return the buffer to the pool once both Txes have completed. */ - prvReturnBuffer( ( void * ) xTxDescriptors[ 0 ].buf_p ); - EDMAC.EESR.LONG = emacTX_END_INTERRUPT; - } - - /* Has an Rx end occurred? */ - if( ul & emacRX_END_INTERRUPT ) - { - /* Make sure the Ethernet task is not blocked waiting for a packet. */ - xQueueSendFromISR( xEMACEventQueue, &ulRxEvent, &lHigherPriorityTaskWoken ); - portYIELD_FROM_ISR( lHigherPriorityTaskWoken ); - EDMAC.EESR.LONG = emacRX_END_INTERRUPT; - } -} - diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/webserver/httpd-cgi.c b/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/webserver/httpd-cgi.c deleted file mode 100644 index 016644aa0..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/webserver/httpd-cgi.c +++ /dev/null @@ -1,277 +0,0 @@ -/** - * \addtogroup httpd - * @{ - */ - -/** - * \file - * Web server script interface - * \author - * Adam Dunkels - * - */ - -/* - * Copyright (c) 2001-2006, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: httpd-cgi.c,v 1.2 2006/06/11 21:46:37 adam Exp $ - * - */ -#include "net/uip.h" -#include "net/psock.h" -#include "apps/httpd/httpd.h" -#include "apps/httpd/httpd-cgi.h" -#include "apps/httpd/httpd-fs.h" - -#include -#include - -#include "FreeRTOS.h" -#include "task.h" - -HTTPD_CGI_CALL( file, "file-stats", file_stats ); -HTTPD_CGI_CALL( tcp, "tcp-connections", tcp_stats ); -HTTPD_CGI_CALL( net, "net-stats", net_stats ); -HTTPD_CGI_CALL( rtos, "rtos-stats", rtos_stats ); -HTTPD_CGI_CALL( run, "run-time", run_time ); -HTTPD_CGI_CALL( io, "led-io", led_io ); - -static const struct httpd_cgi_call *calls[] = { &file, &tcp, &net, &rtos, &run, &io, NULL }; - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( nullfunction ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - ( void ) PT_YIELD_FLAG; - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -httpd_cgifunction httpd_cgi( char *name ) -{ - const struct httpd_cgi_call **f; - - /* Find the matching name in the table, return the function. */ - for( f = calls; *f != NULL; ++f ) - { - if( strncmp((*f)->name, name, strlen((*f)->name)) == 0 ) - { - return( *f )->function; - } - } - - return nullfunction; -} - -/*---------------------------------------------------------------------------*/ -static unsigned short generate_file_stats( void *arg ) -{ - char *f = ( char * ) arg; - return sprintf( ( char * ) uip_appdata, "%5u", httpd_fs_count(f) ); -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( file_stats ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - - ( void ) PT_YIELD_FLAG; - - PSOCK_GENERATOR_SEND( &s->sout, generate_file_stats, strchr(ptr, ' ') + 1 ); - - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -static const char closed[] = /* "CLOSED",*/ { 0x43, 0x4c, 0x4f, 0x53, 0x45, 0x44, 0 }; -static const char syn_rcvd[] = /* "SYN-RCVD",*/ { 0x53, 0x59, 0x4e, 0x2d, 0x52, 0x43, 0x56, 0x44, 0 }; -static const char syn_sent[] = /* "SYN-SENT",*/ { 0x53, 0x59, 0x4e, 0x2d, 0x53, 0x45, 0x4e, 0x54, 0 }; -static const char established[] = /* "ESTABLISHED",*/ { 0x45, 0x53, 0x54, 0x41, 0x42, 0x4c, 0x49, 0x53, 0x48, 0x45, 0x44, 0 }; -static const char fin_wait_1[] = /* "FIN-WAIT-1",*/ { 0x46, 0x49, 0x4e, 0x2d, 0x57, 0x41, 0x49, 0x54, 0x2d, 0x31, 0 }; -static const char fin_wait_2[] = /* "FIN-WAIT-2",*/ { 0x46, 0x49, 0x4e, 0x2d, 0x57, 0x41, 0x49, 0x54, 0x2d, 0x32, 0 }; -static const char closing[] = /* "CLOSING",*/ { 0x43, 0x4c, 0x4f, 0x53, 0x49, 0x4e, 0x47, 0 }; -static const char time_wait[] = /* "TIME-WAIT,"*/ { 0x54, 0x49, 0x4d, 0x45, 0x2d, 0x57, 0x41, 0x49, 0x54, 0 }; -static const char last_ack[] = /* "LAST-ACK"*/ { 0x4c, 0x41, 0x53, 0x54, 0x2d, 0x41, 0x43, 0x4b, 0 }; - -static const char *states[] = { closed, syn_rcvd, syn_sent, established, fin_wait_1, fin_wait_2, closing, time_wait, last_ack }; - -static unsigned short generate_tcp_stats( void *arg ) -{ - struct uip_conn *conn; - struct httpd_state *s = ( struct httpd_state * ) arg; - - conn = &uip_conns[s->count]; - return sprintf( ( char * ) uip_appdata, - "\r\n", htons(conn->lport), - htons(conn->ripaddr.u16[0]) >> 8, htons(conn->ripaddr.u16[0]) & 0xff, htons(conn->ripaddr.u16[1]) >> 8, - htons(conn->ripaddr.u16[1]) & 0xff, htons(conn->rport), states[conn->tcpstateflags & UIP_TS_MASK], conn->nrtx, conn->timer, - (uip_outstanding(conn)) ? '*' : ' ', (uip_stopped(conn)) ? '!' : ' ' ); -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( tcp_stats ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - ( void ) PT_YIELD_FLAG; - for( s->count = 0; s->count < UIP_CONNS; ++s->count ) - { - if( (uip_conns[s->count].tcpstateflags & UIP_TS_MASK) != UIP_CLOSED ) - { - PSOCK_GENERATOR_SEND( &s->sout, generate_tcp_stats, s ); - } - } - - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -static unsigned short generate_net_stats( void *arg ) -{ - struct httpd_state *s = ( struct httpd_state * ) arg; - return sprintf( ( char * ) uip_appdata, "%5u\n", (( uip_stats_t * ) &uip_stat)[s->count] ); -} - -static PT_THREAD( net_stats ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - ( void ) PT_YIELD_FLAG; -#if UIP_STATISTICS - for( s->count = 0; s->count < sizeof(uip_stat) / sizeof(uip_stats_t); ++s->count ) - { - PSOCK_GENERATOR_SEND( &s->sout, generate_net_stats, s ); - } - -#endif /* UIP_STATISTICS */ - - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -extern void vTaskList( char *pcWriteBuffer ); -extern char *pcGetTaskStatusMessage( void ); -static char cCountBuf[128]; -long lRefreshCount = 0; -static unsigned short generate_rtos_stats( void *arg ) -{ - ( void ) arg; - lRefreshCount++; - sprintf( cCountBuf, "


Refresh count = %d


%s", ( int ) lRefreshCount, pcGetTaskStatusMessage() ); - vTaskList( ( char * ) uip_appdata ); - strcat( uip_appdata, cCountBuf ); - - return strlen( uip_appdata ); -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( rtos_stats ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - ( void ) PT_YIELD_FLAG; - PSOCK_GENERATOR_SEND( &s->sout, generate_rtos_stats, NULL ); - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -char *pcStatus; -unsigned long ulString; - -static unsigned short generate_io_state( void *arg ) -{ - extern long lParTestGetLEDState( unsigned long ulLED ); - ( void ) arg; - - /* Are the dynamically setable LEDs currently on or off? */ - if( lParTestGetLEDState( 3 ) ) - { - pcStatus = "checked"; - } - else - { - pcStatus = ""; - } - - sprintf( uip_appdata, "LED

", pcStatus ); - - return strlen( uip_appdata ); -} - -/*---------------------------------------------------------------------------*/ -extern void vTaskGetRunTimeStats( char *pcWriteBuffer ); -extern unsigned short usMaxJitter; -static char cJitterBuffer[ 200 ]; -static unsigned short generate_runtime_stats( void *arg ) -{ - ( void ) arg; - lRefreshCount++; - sprintf( cCountBuf, "


Refresh count = %d", ( int ) lRefreshCount ); - - #ifdef INCLUDE_HIGH_FREQUENCY_TIMER_TEST - { - sprintf( cJitterBuffer, "


Max high frequency timer jitter = %d peripheral clock periods.


", ( int ) usMaxJitter ); - vTaskGetRunTimeStats( ( char * ) uip_appdata ); - strcat( uip_appdata, cJitterBuffer ); - } - #else - { - ( void ) cJitterBuffer; - strcpy( uip_appdata, "

Run time stats are only available in the debug_with_optimisation build configuration.

" ); - } - #endif - - strcat( uip_appdata, cCountBuf ); - - return strlen( uip_appdata ); -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( run_time ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - ( void ) PT_YIELD_FLAG; - PSOCK_GENERATOR_SEND( &s->sout, generate_runtime_stats, NULL ); - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( led_io ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - ( void ) PT_YIELD_FLAG; - PSOCK_GENERATOR_SEND( &s->sout, generate_io_state, NULL ); - PSOCK_END( &s->sout ); -} - -/** @} */ diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/webserver/httpd-fs/404.html b/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/webserver/httpd-fs/404.html deleted file mode 100644 index 43e7f4cad..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/webserver/httpd-fs/404.html +++ /dev/null @@ -1,8 +0,0 @@ - - -

-

404 - file not found

-

Go here instead.

-
- - \ No newline at end of file diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/webserver/httpd-fs/index.html b/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/webserver/httpd-fs/index.html deleted file mode 100644 index 4937dc69a..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/webserver/httpd-fs/index.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Loading index.shtml. Click here if not automatically redirected. - - - - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/webserver/httpd-fs/index.shtml b/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/webserver/httpd-fs/index.shtml deleted file mode 100644 index 882d085ce..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/webserver/httpd-fs/index.shtml +++ /dev/null @@ -1,20 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS Homepage | IO | 37K jpg -

-


-

-

Task statistics

-Page will refresh every 2 seconds.

-

Task          State  Priority  Stack	#
************************************************
-%! rtos-stats -
-
- - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/webserver/httpd-fs/io.shtml b/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/webserver/httpd-fs/io.shtml deleted file mode 100644 index 819e2d39b..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/webserver/httpd-fs/io.shtml +++ /dev/null @@ -1,28 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS Homepage | IO | 37K jpg -

-


-LED and LCD IO
- -

- -Use the check box to turn on or off LED 4, then click "Update IO". - - -

-
-%! led-io -

- - -

- - - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/webserver/httpd-fs/runtime.shtml b/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/webserver/httpd-fs/runtime.shtml deleted file mode 100644 index 3464fd471..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/webserver/httpd-fs/runtime.shtml +++ /dev/null @@ -1,20 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS Homepage | IO | 37K jpg -

-


-

-

Run-time statistics

-Page will refresh every 2 seconds.

-

Task            Abs Time      % Time
****************************************
-%! run-time -
-
- - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/webserver/httpd-fs/stats.shtml b/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/webserver/httpd-fs/stats.shtml deleted file mode 100644 index f54118606..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/webserver/httpd-fs/stats.shtml +++ /dev/null @@ -1,47 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS Homepage | IO | 37K jpg -

-


-

-

Network statistics

-
LocalRemoteStateRetransmissionsTimerFlags
%d%u.%u.%u.%u:%u%s%u%u%c %c
-
-IP           Packets received
-             Packets sent
-             Forwaded
-             Dropped
-IP errors    IP version/header length
-             IP length, high byte
-             IP length, low byte
-             IP fragments
-             Header checksum
-             Wrong protocol
-ICMP	     Packets received
-             Packets sent
-             Packets dropped
-             Type errors
-             Checksum errors
-TCP          Packets received
-             Packets sent
-             Packets dropped
-             Checksum errors
-             Data packets without ACKs
-             Resets
-             Retransmissionsa
-             Syn to closed port
-UDP          Packets dropped
-             Packets received
-             Packets sent
-             Packets chkerr
-	     No connection avaliable
-
%! net-stats
-
- - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/webserver/httpd-fs/tcp.shtml b/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/webserver/httpd-fs/tcp.shtml deleted file mode 100644 index 23dcdcae3..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/webserver/httpd-fs/tcp.shtml +++ /dev/null @@ -1,21 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS Homepage | IO | 37K jpg -

-


-
-

Network connections

-

- - -%! tcp-connections - - - - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/webserver/httpd-fsdata.c b/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/webserver/httpd-fsdata.c deleted file mode 100644 index 47823d100..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/webserver/httpd-fsdata.c +++ /dev/null @@ -1,3871 +0,0 @@ -static const char data_404_html[] = { - /* /404.html */ - 0x2f, 0x34, 0x30, 0x34, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, 0xa, 0x20, 0x20, - 0x3c, 0x62, 0x6f, 0x64, 0x79, 0x20, 0x62, 0x67, 0x63, 0x6f, - 0x6c, 0x6f, 0x72, 0x3d, 0x22, 0x77, 0x68, 0x69, 0x74, 0x65, - 0x22, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x63, - 0x65, 0x6e, 0x74, 0x65, 0x72, 0x3e, 0xd, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x3c, 0x68, 0x31, 0x3e, 0x34, 0x30, - 0x34, 0x20, 0x2d, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x6e, - 0x6f, 0x74, 0x20, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x3c, 0x2f, - 0x68, 0x31, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x3c, 0x68, 0x33, 0x3e, 0x47, 0x6f, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x2f, 0x22, 0x3e, - 0x68, 0x65, 0x72, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x69, - 0x6e, 0x73, 0x74, 0x65, 0x61, 0x64, 0x2e, 0x3c, 0x2f, 0x68, - 0x33, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x2f, - 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x3e, 0xd, 0xa, 0x20, - 0x20, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xd, 0xa, - 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0}; - -static const char data_index_html[] = { - /* /index.html */ - 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x20, 0x6f, 0x6e, 0x4c, 0x6f, 0x61, 0x64, - 0x3d, 0x22, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x73, - 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x28, - 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x6c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x68, 0x72, 0x65, 0x66, 0x3d, - 0x27, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, - 0x6d, 0x6c, 0x27, 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x2c, - 0x31, 0x30, 0x30, 0x29, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x66, - 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, - 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xd, 0xa, 0x4c, - 0x6f, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x69, 0x6e, 0x64, - 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x2e, 0x20, - 0x20, 0x43, 0x6c, 0x69, 0x63, 0x6b, 0x20, 0x3c, 0x61, 0x20, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x68, - 0x65, 0x72, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x69, 0x66, - 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x61, 0x75, 0x74, 0x6f, 0x6d, - 0x61, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x6c, 0x79, 0x20, 0x72, - 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x65, 0x64, 0x2e, - 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xd, - 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xd, 0xa, - 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xd, 0xa, 0x3c, - 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, 0xa, 0xd, 0xa, -0}; - -static const char data_index_shtml[] = { - /* /index.shtml */ - 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x20, 0x6f, 0x6e, 0x4c, 0x6f, 0x61, 0x64, - 0x3d, 0x22, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x73, - 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x28, - 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x6c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x68, 0x72, 0x65, 0x66, 0x3d, - 0x27, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, - 0x6d, 0x6c, 0x27, 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x2c, - 0x32, 0x30, 0x30, 0x30, 0x29, 0x22, 0x3e, 0xd, 0xa, 0x3c, - 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, - 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xd, 0xa, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x53, 0x74, 0x61, - 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x72, 0x75, 0x6e, 0x74, 0x69, - 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x52, 0x75, 0x6e, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, - 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, - 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x54, 0x43, 0x50, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, - 0x6c, 0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, - 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, - 0x65, 0x65, 0x72, 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, - 0x2f, 0x22, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x20, 0x48, 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, - 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, - 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, - 0x66, 0x3d, 0x22, 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, - 0x6c, 0x22, 0x3e, 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0x20, - 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, - 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x6c, 0x6f, - 0x67, 0x6f, 0x2e, 0x6a, 0x70, 0x67, 0x22, 0x3e, 0x33, 0x37, - 0x4b, 0x20, 0x6a, 0x70, 0x67, 0x3c, 0x2f, 0x61, 0x3e, 0xd, - 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, - 0x3c, 0x68, 0x72, 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, - 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x32, 0x3e, 0x54, - 0x61, 0x73, 0x6b, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, - 0x74, 0x69, 0x63, 0x73, 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0xd, - 0xa, 0x50, 0x61, 0x67, 0x65, 0x20, 0x77, 0x69, 0x6c, 0x6c, - 0x20, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x20, 0x65, - 0x76, 0x65, 0x72, 0x79, 0x20, 0x32, 0x20, 0x73, 0x65, 0x63, - 0x6f, 0x6e, 0x64, 0x73, 0x2e, 0x3c, 0x70, 0x3e, 0xd, 0xa, - 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, - 0x3d, 0x22, 0x63, 0x6f, 0x75, 0x72, 0x69, 0x65, 0x72, 0x22, - 0x3e, 0x3c, 0x70, 0x72, 0x65, 0x3e, 0x54, 0x61, 0x73, 0x6b, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x53, 0x74, 0x61, 0x74, 0x65, 0x20, 0x20, 0x50, 0x72, 0x69, - 0x6f, 0x72, 0x69, 0x74, 0x79, 0x20, 0x20, 0x53, 0x74, 0x61, - 0x63, 0x6b, 0x9, 0x23, 0x3c, 0x62, 0x72, 0x3e, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x3c, 0x62, 0x72, 0x3e, - 0xd, 0xa, 0x25, 0x21, 0x20, 0x72, 0x74, 0x6f, 0x73, 0x2d, - 0x73, 0x74, 0x61, 0x74, 0x73, 0xd, 0xa, 0x3c, 0x2f, 0x70, - 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, - 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xd, - 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xd, 0xa, - 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, 0xa, 0xd, - 0xa, 0}; - -static const char data_io_shtml[] = { - /* /io.shtml */ - 0x2f, 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x6e, - 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, - 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x61, 0x20, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, - 0x61, 0x73, 0x6b, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x52, 0x75, 0x6e, - 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, 0x74, 0x61, 0x74, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x43, 0x50, - 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, - 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, - 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, 0x65, 0x65, 0x72, - 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x22, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x20, 0x48, - 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, - 0x6a, 0x70, 0x67, 0x22, 0x3e, 0x33, 0x37, 0x4b, 0x20, 0x6a, - 0x70, 0x67, 0x3c, 0x2f, 0x61, 0x3e, 0xd, 0xa, 0x3c, 0x62, - 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x72, - 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x3e, 0x4c, 0x45, 0x44, 0x20, - 0x61, 0x6e, 0x64, 0x20, 0x4c, 0x43, 0x44, 0x20, 0x49, 0x4f, - 0x3c, 0x2f, 0x62, 0x3e, 0x3c, 0x62, 0x72, 0x3e, 0xd, 0xa, - 0xd, 0xa, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0xd, 0xa, 0x55, - 0x73, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x68, 0x65, - 0x63, 0x6b, 0x20, 0x62, 0x6f, 0x78, 0x20, 0x74, 0x6f, 0x20, - 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6f, 0x6e, 0x20, 0x6f, 0x72, - 0x20, 0x6f, 0x66, 0x66, 0x20, 0x4c, 0x45, 0x44, 0x20, 0x34, - 0x2c, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x20, 0x63, 0x6c, 0x69, - 0x63, 0x6b, 0x20, 0x22, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x20, 0x49, 0x4f, 0x22, 0x2e, 0xd, 0xa, 0xd, 0xa, 0xd, - 0xa, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x72, - 0x6d, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x22, 0x61, 0x46, - 0x6f, 0x72, 0x6d, 0x22, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x3d, 0x22, 0x2f, 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, - 0x6d, 0x6c, 0x22, 0x20, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, - 0x3d, 0x22, 0x67, 0x65, 0x74, 0x22, 0x3e, 0xd, 0xa, 0x25, - 0x21, 0x20, 0x6c, 0x65, 0x64, 0x2d, 0x69, 0x6f, 0xd, 0xa, - 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x69, 0x6e, 0x70, 0x75, - 0x74, 0x20, 0x74, 0x79, 0x70, 0x65, 0x3d, 0x22, 0x73, 0x75, - 0x62, 0x6d, 0x69, 0x74, 0x22, 0x20, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x3d, 0x22, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, - 0x49, 0x4f, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, - 0x72, 0x6d, 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, - 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, - 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, - 0xd, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, - 0xa, 0xd, 0xa, 0}; - -static const char data_logo_jpg[] = { - /* /logo.jpg */ - 0x2f, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, 0x6a, 0x70, 0x67, 0, - 0xff, 0xd8, 0xff, 0xe0, 00, 0x10, 0x4a, 0x46, 0x49, 0x46, - 00, 0x1, 0x1, 00, 00, 0x1, 00, 0x1, 00, 00, - 0xff, 0xdb, 00, 0x43, 00, 0x3, 0x2, 0x2, 0x3, 0x2, - 0x2, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x3, 0x4, 0x5, - 0x8, 0x5, 0x5, 0x4, 0x4, 0x5, 0xa, 0x7, 0x7, 0x6, - 0x8, 0xc, 0xa, 0xc, 0xc, 0xb, 0xa, 0xb, 0xb, 0xd, - 0xe, 0x12, 0x10, 0xd, 0xe, 0x11, 0xe, 0xb, 0xb, 0x10, - 0x16, 0x10, 0x11, 0x13, 0x14, 0x15, 0x15, 0x15, 0xc, 0xf, - 0x17, 0x18, 0x16, 0x14, 0x18, 0x12, 0x14, 0x15, 0x14, 0xff, - 0xdb, 00, 0x43, 0x1, 0x3, 0x4, 0x4, 0x5, 0x4, 0x5, - 0x9, 0x5, 0x5, 0x9, 0x14, 0xd, 0xb, 0xd, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0xff, 0xc0, - 00, 0x11, 0x8, 0x1, 0x8, 0x2, 0xc2, 0x3, 0x1, 0x22, - 00, 0x2, 0x11, 0x1, 0x3, 0x11, 0x1, 0xff, 0xc4, 00, - 0x1f, 00, 00, 0x1, 0x5, 0x1, 0x1, 0x1, 0x1, 0x1, - 0x1, 00, 00, 00, 00, 00, 00, 00, 00, 0x1, - 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb, - 0xff, 0xc4, 00, 0xb5, 0x10, 00, 0x2, 0x1, 0x3, 0x3, - 0x2, 0x4, 0x3, 0x5, 0x5, 0x4, 0x4, 00, 00, 0x1, - 0x7d, 0x1, 0x2, 0x3, 00, 0x4, 0x11, 0x5, 0x12, 0x21, - 0x31, 0x41, 0x6, 0x13, 0x51, 0x61, 0x7, 0x22, 0x71, 0x14, - 0x32, 0x81, 0x91, 0xa1, 0x8, 0x23, 0x42, 0xb1, 0xc1, 0x15, - 0x52, 0xd1, 0xf0, 0x24, 0x33, 0x62, 0x72, 0x82, 0x9, 0xa, - 0x16, 0x17, 0x18, 0x19, 0x1a, 0x25, 0x26, 0x27, 0x28, 0x29, - 0x2a, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x43, 0x44, - 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x53, 0x54, 0x55, 0x56, - 0x57, 0x58, 0x59, 0x5a, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, - 0x69, 0x6a, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, - 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x92, 0x93, - 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0xa2, 0xa3, 0xa4, - 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xb2, 0xb3, 0xb4, 0xb5, - 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, - 0xc7, 0xc8, 0xc9, 0xca, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, - 0xd8, 0xd9, 0xda, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, - 0xe8, 0xe9, 0xea, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, - 0xf8, 0xf9, 0xfa, 0xff, 0xc4, 00, 0x1f, 0x1, 00, 0x3, - 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 00, - 00, 00, 00, 00, 00, 0x1, 0x2, 0x3, 0x4, 0x5, - 0x6, 0x7, 0x8, 0x9, 0xa, 0xb, 0xff, 0xc4, 00, 0xb5, - 0x11, 00, 0x2, 0x1, 0x2, 0x4, 0x4, 0x3, 0x4, 0x7, - 0x5, 0x4, 0x4, 00, 0x1, 0x2, 0x77, 00, 0x1, 0x2, - 0x3, 0x11, 0x4, 0x5, 0x21, 0x31, 0x6, 0x12, 0x41, 0x51, - 0x7, 0x61, 0x71, 0x13, 0x22, 0x32, 0x81, 0x8, 0x14, 0x42, - 0x91, 0xa1, 0xb1, 0xc1, 0x9, 0x23, 0x33, 0x52, 0xf0, 0x15, - 0x62, 0x72, 0xd1, 0xa, 0x16, 0x24, 0x34, 0xe1, 0x25, 0xf1, - 0x17, 0x18, 0x19, 0x1a, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x35, - 0x36, 0x37, 0x38, 0x39, 0x3a, 0x43, 0x44, 0x45, 0x46, 0x47, - 0x48, 0x49, 0x4a, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, - 0x5a, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x73, - 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x82, 0x83, 0x84, - 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x92, 0x93, 0x94, 0x95, - 0x96, 0x97, 0x98, 0x99, 0x9a, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, - 0xa7, 0xa8, 0xa9, 0xaa, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, - 0xb8, 0xb9, 0xba, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, - 0xc9, 0xca, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, - 0xda, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, - 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xff, - 0xda, 00, 0xc, 0x3, 0x1, 00, 0x2, 0x11, 0x3, 0x11, - 00, 0x3f, 00, 0xfd, 0x53, 0xa2, 0x8a, 0x28, 00, 0xa2, - 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, - 00, 0xaa, 0xf7, 0xfa, 0x85, 0xb6, 0x95, 0x67, 0x2d, 0xd5, - 0xe4, 0xf1, 0xdb, 0x5b, 0x44, 0xa5, 0x9e, 0x59, 0x58, 0x2a, - 0xa8, 0x1e, 0xf5, 0xc6, 0x7c, 0x4e, 0xf8, 0xb3, 0xa6, 0xfc, - 0x39, 0xb4, 0x48, 0xb0, 0xb7, 0xda, 0xd5, 0xc6, 0x5, 0xb6, - 0x9e, 0x8d, 0x86, 0x72, 0x4e, 0x37, 0x37, 0xf7, 0x57, 0xf9, - 0xf6, 0xaa, 0x16, 0x5f, 0xd, 0x9f, 0xc6, 0xd0, 0xc5, 0xa9, - 0xf8, 0xc6, 0xe1, 0xef, 0xa6, 0x99, 0x3, 0xa6, 0x9e, 0x84, - 0xad, 0xbd, 0xb6, 0x7b, 0x2a, 0xf7, 0x3e, 0xe7, 0x9a, 0xe0, - 0xa9, 0x89, 0xbc, 0xdd, 0x1a, 0xb, 0x9a, 0x6b, 0x7e, 0xcb, - 0xd5, 0xfe, 0x9b, 0x9c, 0xb2, 0xaf, 0x79, 0x3a, 0x74, 0xb5, - 0x92, 0xdf, 0xb2, 0xf5, 0xff, 00, 0x23, 0x93, 0xf1, 0xa7, - 0xed, 0x5f, 0xa1, 0x69, 0x1b, 0xa1, 0xd0, 0x2d, 0x64, 0xd6, - 0x2e, 0x1, 0xc7, 0x9b, 0x26, 0x62, 0x84, 0x7d, 0xf, 0x53, - 0xf9, 0x57, 0x91, 0x6b, 0x5f, 0xb5, 0xf, 0x8e, 0x35, 0x49, - 0x9, 0xb7, 0xba, 0xb7, 0xd3, 0x23, 0xec, 0x96, 0xd0, 0x29, - 0xfd, 0x5b, 0x26, 0xbe, 0x92, 0x7f, 0x81, 0x1e, 0xb, 0x7f, - 0xf9, 0x84, 0x46, 0x3e, 0x95, 0xb, 0xfe, 0xcf, 0xfe, 0xa, - 0x93, 0xae, 0x96, 0xa3, 0xe8, 0x6b, 0xc2, 0xaf, 0x84, 0xcd, - 0xab, 0xbb, 0xba, 0xa9, 0x2e, 0xc9, 0xb5, 0xfa, 0x5c, 0xf0, - 0xb1, 0x18, 0x4c, 0xce, 0xbb, 0xd2, 0xb2, 0x8a, 0xec, 0xb4, - 0xff, 00, 0x82, 0x7c, 0x91, 0x3f, 0xc6, 0xf, 0x19, 0x5c, - 0x48, 0x5d, 0xfc, 0x45, 0x7e, 0x58, 0xf5, 0xc4, 0xb8, 0x1f, - 0x90, 0xa7, 0x27, 0xc6, 0x5f, 0x1a, 0x46, 0xca, 0x57, 0xc4, - 0x57, 0xc0, 0xaf, 0x23, 0xf7, 0x99, 0xfe, 0x95, 0xf5, 0x73, - 0xfe, 0xce, 0x9e, 0x9, 0x7f, 0xf9, 0x87, 0x15, 0xfa, 0x35, - 0x43, 0x27, 0xec, 0xd7, 0xe0, 0xa7, 0xe9, 0x67, 0x2a, 0xfd, - 0x1e, 0xbc, 0xcf, 0xec, 0x7c, 0xc5, 0x3b, 0xa9, 0xff, 00, - 0xe4, 0xcc, 0xf3, 0x3f, 0xb1, 0xf3, 0x1d, 0xd5, 0x6f, 0xc5, - 0x9f, 0x31, 0x2f, 0xc7, 0x9f, 0x1e, 0x29, 0xcf, 0xfc, 0x24, - 0x77, 0x47, 0xea, 0x10, 0xff, 00, 0x4a, 0x9e, 0x2f, 0xda, - 0x17, 0xc7, 0xd1, 0xc, 0xf, 0x10, 0xcc, 0x7b, 0xfc, 0xd0, - 0xc6, 0x7f, 0x9a, 0xd7, 0xd1, 0xed, 0xfb, 0x31, 0xf8, 0x34, - 0xe7, 0x10, 0xce, 0x7, 0xfb, 0xff, 00, 0xfd, 0x6a, 0x81, - 0xff, 00, 0x65, 0xcf, 0x8, 0x37, 0x4f, 0xb4, 0x83, 0xfe, - 0xf0, 0xa7, 0xfd, 0x99, 0x9a, 0xad, 0xaa, 0x7f, 0xe4, 0xcc, - 0x3f, 0xb2, 0xf3, 0x45, 0xb5, 0x6f, 0xc5, 0x9f, 0x3d, 0xff, - 00, 0xc3, 0x46, 0x7c, 0x40, 0xff, 00, 0xa0, 0xfb, 0xff, - 00, 0xe0, 0x3c, 0x5f, 0xfc, 0x4d, 0x48, 0xbf, 0xb4, 0x8f, - 0x8f, 0xd4, 0xe7, 0xfb, 0x6f, 0x3e, 0xc6, 0xda, 0x2f, 0xfe, - 0x26, 0xbd, 0xe9, 0xff, 00, 0x65, 0x6f, 0x9, 0xb6, 0x71, - 0x25, 0xd0, 0xff, 00, 0x81, 0xa, 0x85, 0xff, 00, 0x64, - 0xff, 00, 0xb, 0x30, 0xe2, 0xe6, 0xed, 0x4f, 0xd4, 0x51, - 0xfd, 0x9d, 0x9b, 0x2f, 0xb6, 0xff, 00, 0xf0, 0x26, 0x1f, - 0xd9, 0xd9, 0xb2, 0xda, 0xb7, 0xfe, 0x4c, 0xcf, 0x11, 0x5f, - 0xda, 0x63, 0xc7, 0xca, 0x79, 0xd5, 0xa3, 0x6f, 0x63, 0x6b, - 0x1f, 0xf8, 0x54, 0xcb, 0xfb, 0x50, 0x78, 0xf1, 0x40, 0x1f, - 0x6f, 0xb6, 0x3e, 0xe6, 0xd5, 0x2b, 0xd8, 0x5b, 0xf6, 0x49, - 0xf0, 0xd1, 0xe9, 0x7f, 0x76, 0xbe, 0xdc, 0x54, 0xf, 0xfb, - 0x22, 0xe8, 0x24, 0x7c, 0xba, 0xa5, 0xd0, 0x3f, 0xee, 0x8a, - 0x5f, 0x52, 0xce, 0x17, 0xda, 0x7f, 0xf8, 0x17, 0xfc, 0x10, - 0xfa, 0x8e, 0x70, 0xbf, 0xe5, 0xef, 0xfe, 0x4c, 0x79, 0x7a, - 0xfe, 0xd5, 0x9e, 0x38, 0x4, 0x66, 0x4d, 0x3d, 0xb1, 0xd8, - 0xda, 0xf5, 0xfd, 0x6a, 0x55, 0xfd, 0xac, 0x7c, 0x6a, 0xbd, - 0x53, 0x4c, 0x6f, 0xad, 0xb3, 0x7f, 0xf1, 0x55, 0xe8, 0xcf, - 0xfb, 0x21, 0x68, 0xe7, 0xee, 0xea, 0xd7, 0x3, 0xea, 0xa2, - 0xa0, 0x7f, 0xd9, 0x3, 0x4e, 0x39, 0xdb, 0xac, 0x4c, 0x3e, - 0xa8, 0x29, 0xfd, 0x5b, 0x39, 0x5f, 0x69, 0xff, 00, 0xe0, - 0x48, 0x3e, 0xa9, 0x9d, 0x2f, 0xf9, 0x79, 0xf8, 0x9c, 0x18, - 0xfd, 0xad, 0x3c, 0x67, 0xff, 00, 0x3c, 0x74, 0xbf, 0xfc, - 0x7, 0x6f, 0xfe, 0x2e, 0x9e, 0x3f, 0x6b, 0x6f, 0x18, 0x77, - 0xb6, 0xd2, 0xcf, 0xfd, 0xb0, 0x7f, 0xfe, 0x2e, 0xbb, 0x37, - 0xfd, 0x8f, 0xac, 0xff, 00, 0x87, 0x5a, 0x93, 0xf1, 0x41, - 0x50, 0xbf, 0xec, 0x7b, 0x11, 0xfb, 0xba, 0xe3, 0xf, 0xac, - 0x74, 0x7b, 0x1c, 0xe9, 0x75, 0x7f, 0x7a, 0x17, 0xd5, 0xf3, - 0xb5, 0xf6, 0xff, 00, 0x14, 0x72, 0xc9, 0xfb, 0x5d, 0x78, - 0xb1, 0x4f, 0xcd, 0x63, 0xa5, 0xb0, 0xf4, 0xf2, 0x9c, 0x7f, - 0xec, 0xd5, 0x62, 0x2f, 0xda, 0xff, 00, 0xc4, 0x8a, 0xb8, - 0x7d, 0x27, 0x4d, 0x73, 0xea, 0x3, 0x8f, 0xfd, 0x9a, 0xb6, - 0x9f, 0xf6, 0x3d, 0x71, 0x8d, 0x9a, 0xd8, 0x3f, 0x58, 0xea, - 0x17, 0xfd, 0x8f, 0xee, 0x81, 0x3b, 0x75, 0x98, 0xcf, 0xa6, - 0x52, 0xa7, 0x93, 0x3a, 0x5f, 0xcd, 0xf7, 0xa0, 0xf6, 0x79, - 0xe2, 0xfb, 0x5f, 0x91, 0x4d, 0x7f, 0x6c, 0x4d, 0x6c, 0x1, - 0xbb, 0x42, 0xb0, 0x27, 0xb9, 0xe, 0xe3, 0x35, 0x3a, 0x7e, - 0xd8, 0xda, 0x98, 0x3f, 0x37, 0x87, 0x6d, 0x8, 0xf6, 0xb8, - 0x61, 0xfd, 0x29, 0xad, 0xfb, 0x21, 0x6a, 0x40, 0x71, 0xaa, - 0xc2, 0x4f, 0xa6, 0xda, 0x85, 0xff, 00, 0x64, 0x4d, 0x60, - 0x1f, 0x97, 0x53, 0x80, 0xfe, 0x14, 0xef, 0x9d, 0xae, 0xff, - 00, 0x80, 0x7f, 0xc2, 0xe2, 0xeb, 0xf9, 0x17, 0x7, 0xed, - 0x8f, 0x7b, 0xdf, 0xc3, 0x56, 0xdf, 0x85, 0xd3, 0x7f, 0xf1, - 0x35, 0x22, 0xfe, 0xd8, 0xf7, 0x3c, 0x6e, 0xf0, 0xd4, 0x3e, - 0xf8, 0xba, 0x3f, 0xfc, 0x4d, 0x64, 0x37, 0xec, 0x8f, 0xaf, - 0x1, 0xf2, 0xdf, 0xdb, 0x93, 0xe8, 0x6a, 0x16, 0xfd, 0x92, - 0xfc, 0x48, 0xf, 0xcb, 0x75, 0x6c, 0x47, 0xae, 0xea, 0x4e, - 0xae, 0x74, 0xbf, 0x9b, 0xee, 0x42, 0xe7, 0xcf, 0x17, 0xfc, - 0x32, 0x3a, 0x45, 0xfd, 0xb1, 0xf9, 0xf9, 0xbc, 0x32, 0x31, - 0xed, 0x77, 0xff, 00, 0xd8, 0xd4, 0xf1, 0xfe, 0xd8, 0xf6, - 0xd8, 0x3b, 0xfc, 0x37, 0x26, 0x7b, 0x6d, 0xba, 0x1f, 0xfc, - 0x4d, 0x71, 0x6f, 0xfb, 0x29, 0x78, 0xa9, 0x46, 0x43, 0xdb, - 0x93, 0xe9, 0xbc, 0x54, 0x2f, 0xfb, 0x2c, 0x78, 0xb5, 0x71, - 0x81, 0x9, 0xfa, 0x38, 0xa5, 0xf5, 0x9c, 0xe5, 0x74, 0x97, - 0xfe, 0x2, 0xbf, 0xc8, 0x7e, 0xdf, 0x3b, 0x5f, 0x67, 0xf0, - 0x47, 0xa2, 0x45, 0xfb, 0x62, 0xe9, 0x45, 0x7, 0x99, 0xe1, - 0xeb, 0xb0, 0xfe, 0x8b, 0x3a, 0x11, 0xfc, 0xaa, 0xc2, 0x7e, - 0xd8, 0x3a, 0x1, 0xc6, 0xfd, 0xf, 0x50, 0x5f, 0x5c, 0x3a, - 0x1f, 0xeb, 0x5e, 0x58, 0xff, 00, 0xb2, 0xff, 00, 0x8c, - 0x57, 0x38, 0x82, 0x26, 0xc7, 0xfb, 0x62, 0xa2, 0x6f, 0xd9, - 0x97, 0xc6, 0x63, 0x18, 0xb4, 0x43, 0xf4, 0x71, 0x4f, 0xeb, - 0xb9, 0xc2, 0xfb, 0x2f, 0xff, 00, 0x1, 0xff, 00, 0x80, - 0x1f, 0x5a, 0xce, 0x97, 0xd8, 0xfc, 0x11, 0xeb, 0xa3, 0xf6, - 0xbe, 0xf0, 0xd7, 0x7d, 0x23, 0x53, 0x1f, 0xf7, 0xef, 0xff, - 00, 0x8a, 0xa7, 0xaf, 0xed, 0x79, 0xe1, 0x72, 0x39, 0xd2, - 0xf5, 0x31, 0xff, 00, 0x1, 0x4f, 0xfe, 0x2a, 0xbc, 0x61, - 0xff, 00, 0x66, 0xcf, 0x1a, 0xa6, 0x71, 0xa7, 0x86, 0xc7, - 0xa3, 0x8a, 0x85, 0xff, 00, 0x67, 0x5f, 0x1b, 0xa0, 0xcf, - 0xf6, 0x53, 0x1f, 0xa3, 0xa, 0x3f, 0xb4, 0x33, 0x65, 0xf6, - 0x5f, 0xfe, 0x3, 0xff, 00, 00, 0x5f, 0x5e, 0xce, 0x56, - 0xf4, 0xff, 00, 0x3, 0xdc, 0x47, 0xed, 0x71, 0xe1, 0x42, - 0x46, 0x74, 0xfd, 0x4c, 0xf, 0xf7, 0x13, 0xff, 00, 0x8a, - 0xa9, 0xe3, 0xfd, 0xac, 0xfc, 0x1e, 0xc4, 0xee, 0xb6, 0xd4, - 0x90, 0x7f, 0xd7, 0x15, 0x3f, 0xfb, 0x35, 0x78, 0x3, 0x7e, - 0xcf, 0xfe, 0x36, 0x52, 0x47, 0xf6, 0x3c, 0x9f, 0x81, 0x15, - 0xb, 0xfc, 0x9, 0xf1, 0xa2, 0xc, 0xff, 00, 0x63, 0x4c, - 0x7e, 0x98, 0xa5, 0xfd, 0xa7, 0x9a, 0x2d, 0xe2, 0xff, 00, - 0xf0, 0x16, 0x1f, 0xda, 0x39, 0xba, 0xde, 0x9f, 0xe0, 0x7d, - 0x19, 0x1f, 0xed, 0x59, 0xe0, 0x97, 0x5c, 0xb7, 0xf6, 0x8a, - 0x1f, 0x43, 0x6c, 0xf, 0xfe, 0xcd, 0x53, 0xaf, 0xed, 0x4b, - 0xe0, 0x43, 0x8c, 0xdc, 0x5e, 0x8f, 0xad, 0xab, 0x71, 0x5f, - 0x33, 0xb7, 0xc1, 0x2f, 0x19, 0x29, 0xff, 00, 0x90, 0x2d, - 0xc7, 0xe5, 0x50, 0x37, 0xc1, 0xcf, 0x18, 0x20, 0xc9, 0xd1, - 0x2e, 0x71, 0xec, 0xb5, 0x5f, 0xda, 0xf9, 0x92, 0xde, 0x1f, - 0xf9, 0x2b, 0xf, 0xed, 0x5c, 0xd5, 0x6f, 0x4b, 0xf0, 0x7f, - 0xe6, 0x7d, 0x48, 0x3f, 0x69, 0xff, 00, 0x1, 0x1f, 0xf9, - 0x7f, 0xba, 0x1f, 0xf6, 0xe8, 0xff, 00, 0xe1, 0x4e, 0x1f, - 0xb4, 0xe7, 0x80, 0x4f, 0xfc, 0xc4, 0x6e, 0x7, 0xd6, 0xd1, - 0xff, 00, 0xc2, 0xbe, 0x54, 0x7f, 0x84, 0xde, 0x2d, 0x8f, - 0xae, 0x87, 0x77, 0xf8, 0x25, 0x40, 0xdf, 0xc, 0xfc, 0x50, - 0xa0, 0x93, 0xa3, 0x5d, 0xf1, 0xff, 00, 0x4c, 0xcd, 0x27, - 0x9d, 0x66, 0xb, 0xec, 0x2f, 0xfc, 0x5, 0xff, 00, 0x98, - 0xbf, 0xb6, 0x33, 0x35, 0xbd, 0x2f, 0xc1, 0xff, 00, 0x99, - 0xf5, 0xa8, 0xfd, 0xa5, 0xfc, 0x2, 0x46, 0x7f, 0xb5, 0x26, - 0x1f, 0x5b, 0x57, 0xff, 00, 0xa, 0x9d, 0x3f, 0x68, 0xdf, - 00, 0xb9, 0xc7, 0xf6, 0xd1, 0x5f, 0x76, 0xb7, 0x93, 0xff, - 00, 0x89, 0xaf, 0x8f, 0x9b, 0xe1, 0xe7, 0x89, 0x13, 0x19, - 0xd2, 0x2e, 0xc6, 0x7f, 0xe9, 0x99, 0xa8, 0xdb, 0xc0, 0xbe, - 0x20, 0x4c, 0xe7, 0x4a, 0xbb, 0x18, 0xeb, 0xfb, 0xb3, 0x4b, - 0xfb, 0x73, 0x1c, 0xb7, 0x82, 0xfb, 0x9f, 0xf9, 0x87, 0xf6, - 0xd6, 0x60, 0xb7, 0xa5, 0xf8, 0x3f, 0xf3, 0x3e, 0xcc, 0x8f, - 0xf6, 0x84, 0xf0, 0xc, 0x99, 0xff, 00, 0x89, 0xfc, 0x6b, - 0x8f, 0xef, 0x43, 0x20, 0xff, 00, 0xd9, 0x6a, 0x75, 0xf8, - 0xf1, 0xe0, 0x26, 0x50, 0x47, 0x88, 0xed, 0xb9, 0xf5, 0x57, - 0x1f, 0xd2, 0xbe, 0x27, 0x6f, 0x7, 0x6b, 0x8b, 0xd7, 0x4c, - 0xba, 0x1f, 0xf6, 0xcc, 0xd4, 0x6d, 0xe1, 0x6d, 0x65, 0x9, - 0x7, 0x4e, 0xba, 0x18, 0xff, 00, 0xa6, 0x66, 0x9f, 0xf6, - 0xfe, 0x2d, 0x6f, 0x5, 0xf7, 0x3f, 0xf3, 0x1f, 0xf6, 0xee, - 0x35, 0x6f, 0x47, 0xf0, 0x67, 0xdc, 0x23, 0xe3, 0x87, 0x81, - 0xf, 0xfc, 0xcc, 0xd6, 0x5f, 0x99, 0xff, 00, 0xa, 0x92, - 0x3f, 0x8d, 0x3e, 0x7, 0x90, 0x90, 0xbe, 0x26, 0xb0, 0xe3, - 0xd6, 0x4c, 0x7f, 0x4a, 0xf8, 0x54, 0xe8, 0x1a, 0xa2, 0x8c, - 0x9b, 0x1b, 0x80, 0x3f, 0xeb, 0x99, 0xa6, 0x1d, 0x1b, 0x51, - 0x5e, 0xb6, 0x93, 0x8f, 0xf8, 0x1, 0xa7, 0xfe, 0xb0, 0xe2, - 0x7f, 0x92, 0x3f, 0x8f, 0xf9, 0x87, 0xf6, 0xfe, 0x2f, 0xad, - 0x1f, 0xcc, 0xfb, 0xc9, 0x7e, 0x2f, 0x78, 0x2d, 0x86, 0x47, - 0x89, 0x74, 0xec, 0x7f, 0xd7, 0x61, 0x53, 0x47, 0xf1, 0x4f, - 0xc2, 0x12, 0x90, 0x17, 0xc4, 0x7a, 0x71, 0x27, 0xa7, 0xfa, - 0x42, 0xd7, 0xc0, 0xa7, 0x4b, 0xbe, 0x1d, 0x6d, 0xa5, 0x1f, - 0xf0, 0x3, 0x4d, 0x3a, 0x7d, 0xe2, 0xf5, 0xb7, 0x97, 0xfe, - 0xf8, 0x34, 0x7f, 0xac, 0x55, 0xfa, 0xc2, 0x3f, 0x88, 0xff, - 00, 0xd6, 0x1c, 0x42, 0xde, 0x8f, 0xe6, 0x7e, 0x82, 0xc3, - 0xf1, 0xb, 0xc3, 0x17, 0xd, 0xb6, 0x3f, 0x10, 0x69, 0xac, - 0x7a, 0xe3, 0xed, 0x28, 0x3f, 0xad, 0x5a, 0x4f, 0x17, 0xe8, - 0x52, 0x2e, 0x53, 0x59, 0xb0, 0x61, 0xea, 0x2e, 0x50, 0xff, - 00, 0x5a, 0xfc, 0xee, 0x36, 0xb7, 0x23, 0xac, 0x2e, 0x3f, - 0xe0, 0x26, 0x9a, 0x61, 0x98, 0x7f, 0xcb, 0x36, 0xfc, 0xaa, - 0xd7, 0x12, 0x54, 0xeb, 0x4d, 0x7d, 0xe5, 0x2e, 0x23, 0xab, - 0xd6, 0x8f, 0xe3, 0xff, 00, 00, 0xfd, 0x1c, 0x1a, 0xee, - 0x9a, 0x71, 0x8d, 0x42, 0xd4, 0xe7, 0xfe, 0x9b, 0x2f, 0xf8, - 0xd3, 0x86, 0xb3, 0xa7, 0x9e, 0x97, 0xd6, 0xc7, 0xfe, 0xdb, - 0x2f, 0xf8, 0xd7, 0xe7, 0x6, 0xc9, 0x47, 0xf0, 0x37, 0xe5, - 0x47, 0xef, 0x57, 0xb3, 0xa, 0xd3, 0xfd, 0x64, 0x97, 0xfc, - 0xfa, 0x5f, 0x7f, 0xfc, 0x1, 0xff, 00, 0xac, 0x92, 0xff, - 00, 0x9f, 0x3f, 0x8f, 0xfc, 0x3, 0xf4, 0x84, 0x6a, 0xb6, - 0x47, 0xa5, 0xe4, 0x7, 0xe9, 0x2a, 0xff, 00, 0x8d, 0x38, - 0x6a, 0x16, 0xad, 0x8c, 0x5c, 0xc2, 0x73, 0xe9, 0x20, 0xaf, - 0xcd, 0xc1, 0x24, 0xc3, 0xa1, 0x61, 0xf9, 0xd3, 0x85, 0xcd, - 0xc2, 0xf4, 0x77, 0x18, 0xff, 00, 0x68, 0xd3, 0x5c, 0x48, - 0xff, 00, 0xe7, 0xd7, 0xe3, 0xff, 00, 00, 0x7f, 0xeb, - 0x2f, 0x7a, 0x5f, 0x8f, 0xfc, 0x3, 0xf4, 0x95, 0x67, 0x8d, - 0xce, 0x16, 0x44, 0x63, 0xe8, 0x18, 0x1a, 0x7e, 0x47, 0xad, - 0x7e, 0x6d, 0xae, 0xa7, 0x7a, 0x87, 0x2b, 0x73, 0x32, 0x9f, - 0x51, 0x21, 0x1f, 0xd6, 0xa4, 0x1a, 0xe6, 0xa2, 0xbd, 0x2f, - 0x6e, 0x47, 0xd2, 0x66, 0xff, 00, 0x1a, 0xa5, 0xc4, 0x9d, - 0xe9, 0x7e, 0x3f, 0xf0, 0xa, 0xff, 00, 0x59, 0x63, 0xff, - 00, 0x3e, 0xbf, 0x1f, 0xf8, 0x7, 0xe9, 0x6, 0x45, 0x19, - 0xaf, 0xce, 0x31, 0xe2, 0x4d, 0x58, 0xc, 0xd, 0x4a, 0xf0, - 0xf, 0x69, 0xdf, 0xfc, 0x69, 0xc3, 0xc5, 0x3a, 0xc8, 0x3c, - 0x6a, 0x97, 0xc0, 0xff, 00, 0xd7, 0xc3, 0xff, 00, 0x8d, - 0x5f, 0xfa, 0xc7, 0x1f, 0xf9, 0xf5, 0xf8, 0xff, 00, 0xc0, - 0x1f, 0xfa, 0xcb, 0x4f, 0xfe, 0x7d, 0x3f, 0xbf, 0xfe, 0x1, - 0xfa, 0x35, 0x9a, 0x5a, 0xfc, 0xe8, 0x5f, 0x18, 0xeb, 0xb1, - 0xe4, 0x2e, 0xb1, 0x7e, 0xb9, 0xeb, 0x8b, 0x97, 0xe7, 0xf5, - 0xa9, 0x53, 0xc7, 0x7e, 0x22, 0x89, 0x76, 0xae, 0xb9, 0xa9, - 0x28, 0xf4, 0x17, 0x6f, 0xfe, 0x34, 0x7f, 0xac, 0x71, 0xff, - 00, 0x9f, 0x5f, 0x8f, 0xfc, 0x2, 0x97, 0x12, 0xd2, 0xeb, - 0x4d, 0xfd, 0xe7, 0xe8, 0x95, 0x15, 0xf9, 0xe8, 0x9f, 0x12, - 0xbc, 0x55, 0x19, 0x5, 0x7c, 0x43, 0xaa, 0x2, 0x3a, 0x7f, - 0xa5, 0xbf, 0xf8, 0xd4, 0xf1, 0xfc, 0x57, 0xf1, 0x84, 0x59, - 0xdb, 0xe2, 0x5d, 0x50, 0x67, 0xfe, 0x9e, 0x9f, 0xfc, 0x6a, - 0xd7, 0x11, 0xd3, 0xeb, 0x4d, 0xfd, 0xe8, 0xb5, 0xc4, 0x94, - 0x3a, 0xc1, 0xfe, 0x7, 0xe8, 0x25, 0x15, 0xf0, 00, 0xf8, - 0xc3, 0xe3, 0x40, 0x38, 0xf1, 0x3e, 0xa9, 0xff, 00, 0x81, - 0xd, 0x4f, 0x1f, 0x19, 0xbc, 0x6c, 0xe, 0x7f, 0xe1, 0x26, - 0xd4, 0x7f, 0xef, 0xf1, 0xaa, 0xff, 00, 0x58, 0xa8, 0xff, - 00, 0xcf, 0xb7, 0xf8, 0xf, 0xfd, 0x64, 0xc3, 0xff, 00, - 0x23, 0xfc, 0xf, 0xbf, 0x28, 0xaf, 0x82, 0x57, 0xe3, 0x8f, - 0x8e, 0x54, 0xe4, 0x78, 0x92, 0xf8, 0xfd, 0x5c, 0x7f, 0x85, - 0x4a, 0x9f, 0x1e, 0x3c, 0x74, 0x99, 0xc7, 0x88, 0xae, 0xcf, - 0xd7, 0x7, 0xfa, 0x53, 0xff, 00, 0x58, 0xa8, 0x7f, 0xcf, - 0xb9, 0x7e, 0x1f, 0xe6, 0x5a, 0xe2, 0x3c, 0x2f, 0xf2, 0xbf, - 0xc3, 0xfc, 0xcf, 0xbc, 0x68, 0xaf, 0x86, 0x23, 0xfd, 0xa1, - 0xfc, 0x7b, 0x18, 0x51, 0xfd, 0xbd, 0x23, 0x6d, 0xfe, 0xf4, - 0x48, 0x73, 0xf5, 0xe2, 0xac, 0xc7, 0xfb, 0x4a, 0xf8, 0xf6, - 0x37, 0xdd, 0xfd, 0xae, 0x8d, 0xec, 0xd6, 0xd1, 0x91, 0xfc, - 0xaa, 0xd7, 0x10, 0xe1, 0xba, 0xc2, 0x5f, 0x87, 0xf9, 0x96, - 0xb8, 0x8b, 0x9, 0xd9, 0xfd, 0xcb, 0xfc, 0xcf, 0xb7, 0xa8, - 0xaf, 0x8a, 0x17, 0xf6, 0x9f, 0xf1, 0xe8, 0x1c, 0xea, 0x36, - 0xed, 0xf5, 0xb4, 0x4f, 0xf0, 0xa7, 0x8f, 0xda, 0x8b, 0xc7, - 0x7f, 0xf3, 0xfb, 0x69, 0xff, 00, 0x80, 0xab, 0x57, 0xfe, - 0xb0, 0x61, 0x7b, 0x4b, 0xee, 0x5f, 0xe6, 0x57, 0xfa, 0xc3, - 0x83, 0xf3, 0xfb, 0xbf, 0xe0, 0x9f, 0x6a, 0x51, 0x5f, 0x17, - 0xaf, 0xed, 0x4f, 0xe3, 0x90, 0x46, 0x6e, 0x2c, 0xdb, 0xd8, - 0xdb, 0xa, 0x9e, 0x2f, 0xda, 0xb7, 0xc6, 0xb1, 0xb1, 0x2c, - 0x74, 0xf9, 0x6, 0x3a, 0x35, 0xb9, 0xfe, 0x86, 0x9f, 0xfa, - 0xc1, 0x84, 0xed, 0x2f, 0xbb, 0xfe, 0x9, 0x4b, 0x88, 0x30, - 0x5d, 0xdf, 0xdc, 0x7d, 0x93, 0x45, 0x7c, 0x7e, 0xbf, 0xb5, - 0xbf, 0x8b, 0x82, 0x80, 0x6d, 0x34, 0xb6, 0x3e, 0xbe, 0x4b, - 0xff, 00, 0xf1, 0x55, 0x3a, 0x7e, 0xd7, 0x9e, 0x29, 0xc, - 0xb, 0x69, 0xba, 0x5b, 0xe, 0xe3, 0x63, 0x8f, 0xfd, 0x9a, - 0xad, 0x67, 0xd8, 0x3f, 0x3f, 0xb8, 0xb5, 0x9f, 0x60, 0x7f, - 0x99, 0xfd, 0xc7, 0xd7, 0x34, 0x57, 0xc9, 0xab, 0xfb, 0x60, - 0xf8, 0x88, 0x67, 0x76, 0x8d, 0xa6, 0x1f, 0xa1, 0x90, 0x7f, - 0xec, 0xd4, 0xf1, 0xfb, 0x61, 0xeb, 0xdd, 0xf4, 0x3d, 0x37, - 0xfe, 0xfa, 0x93, 0xfc, 0x6a, 0xbf, 0xb7, 0x70, 0x5f, 0xcc, - 0xfe, 0xe6, 0x57, 0xf6, 0xee, 0x7, 0xf9, 0x9f, 0xdc, 0xcf, - 0xab, 0xe8, 0xaf, 0x94, 0xd7, 0xf6, 0xc4, 0xd6, 0xf8, 0xce, - 0x85, 0xa7, 0x9f, 0xa4, 0x8f, 0xfe, 0x35, 0x22, 0xfe, 0xd8, - 0x9a, 0xb6, 0x79, 0xd0, 0x2c, 0x88, 0xf6, 0x99, 0xe9, 0xff, - 00, 0x6e, 0x60, 0xbf, 0x99, 0xfd, 0xcc, 0x7f, 0xdb, 0x98, - 0x1f, 0xe7, 0xfc, 0x19, 0xf5, 0x45, 0x15, 0xf2, 0xf4, 0x7f, - 0xb6, 0x35, 0xe8, 0x5f, 0x9f, 0xc3, 0x76, 0xe5, 0xbd, 0x56, - 0xe9, 0x80, 0xff, 00, 0xd0, 0x6a, 0x65, 0xfd, 0xb2, 0x26, - 0xe3, 0x3e, 0x18, 0x8f, 0xdf, 0x17, 0x87, 0xff, 00, 0x88, - 0xaa, 0x59, 0xde, 0x7, 0xf9, 0xff, 00, 0x7, 0xfe, 0x45, - 0x2c, 0xeb, 0x2, 0xff, 00, 0xe5, 0xe7, 0xe0, 0xff, 00, - 0xc8, 0xfa, 0x6e, 0x8a, 0xf9, 0xba, 0x3f, 0xdb, 0x22, 0xc, - 0xfc, 0xfe, 0x17, 0x90, 0xf, 0xf6, 0x6f, 0x47, 0xff, 00, - 0x11, 0x5b, 0xda, 0x47, 0xed, 0x6f, 0xe1, 0x6b, 0xb8, 0xd7, - 0xed, 0xf6, 0x37, 0xf6, 0x12, 0x13, 0x82, 0x15, 0x56, 0x55, - 0x3, 0xd7, 0x20, 0x83, 0xfa, 0x56, 0xb0, 0xcd, 0xf0, 0x33, - 0x76, 0x55, 0x3f, 0x35, 0xf9, 0xa3, 0x58, 0x66, 0xd8, 0x29, - 0xbb, 0x2a, 0x8b, 0xf1, 0x5f, 0x99, 0xee, 0x74, 0x57, 0x31, - 0xe1, 0xaf, 0x89, 0x9e, 0x17, 0xf1, 0x7b, 0x4, 0xd2, 0x75, - 0xbb, 0x4b, 0xb9, 0x8f, 0x3e, 0x4e, 0xfd, 0xb2, 0x7f, 0xdf, - 0x2d, 0x83, 0xfa, 0x57, 0x4f, 0x5e, 0xac, 0x2a, 0x42, 0xa2, - 0xe6, 0x83, 0xba, 0xf2, 0x3d, 0x48, 0x4e, 0x15, 0x17, 0x34, - 0x1d, 0xd7, 0x90, 0x51, 0x45, 0x15, 0x65, 0x85, 0x14, 0x51, - 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, - 0x14, 0x51, 0x40, 0x5, 0x70, 0x7f, 0x18, 0x7e, 0x28, 0xdb, - 0x7c, 0x2f, 0xf0, 0xc3, 0xdd, 0xfe, 0xee, 0x7d, 0x4e, 0x73, - 0xe5, 0xda, 0x5a, 0xbb, 0x63, 0x7b, 0x77, 0x62, 0x3a, 0xed, - 0x1d, 0x4f, 0xe0, 0x3b, 0xd7, 0x75, 0x24, 0x8b, 0x12, 0x33, - 0xbb, 0x5, 0x45, 0x4, 0x96, 0x3d, 00, 0xaf, 0x82, 0x7e, - 0x32, 0x7c, 0x40, 0x7f, 0x88, 0xde, 0x3a, 0xbd, 0xbf, 0x57, - 0x26, 0xc2, 0x13, 0xf6, 0x7b, 0x34, 0xcf, 0x2, 0x35, 0x3d, - 0x7f, 0xe0, 0x47, 0x27, 0xf1, 0xaf, 0x17, 0x35, 0xc6, 0xbc, - 0x1d, 0xf, 0x73, 0xe2, 0x96, 0x8b, 0xfc, 0xcf, 0xf, 0x37, - 0xc7, 0xfd, 0x46, 0x87, 0xb9, 0xf1, 0xcb, 0x45, 0xfe, 0x7f, - 0x23, 0xa3, 0xf8, 0x39, 0xa7, 0xea, 0x1f, 0x13, 0x7e, 0x2a, - 0xc5, 0xa9, 0x6a, 0x92, 0xbd, 0xe3, 0xac, 0x86, 0xe2, 0x79, - 0x24, 0x39, 0xfa, 0xf, 0x61, 0xe8, 0x2b, 0xed, 0x40, 0x2, - 0x80, 0x7, 00, 0x57, 0x83, 0xfe, 0xca, 0x7e, 0x10, 0xfe, - 0xcc, 0xf0, 0xd5, 0xce, 0xb1, 0x34, 0x78, 0x9a, 0xe9, 0xf6, - 0xa1, 0x23, 0xf8, 0x45, 0x7b, 0xcd, 0x63, 0x92, 0x50, 0x74, - 0xb0, 0xbe, 0xd2, 0x5b, 0xcd, 0xdf, 0xfc, 0x83, 0x27, 0xa0, - 0xe9, 0x61, 0x54, 0xa7, 0xf1, 0x4b, 0x56, 0x14, 0x51, 0x45, - 0x7d, 0x1, 0xee, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x84, - 0x64, 0x70, 0x71, 0xef, 0x40, 0x18, 0x1c, 0x92, 0x7e, 0xb4, - 00, 0xb4, 0x53, 0x2, 0xed, 0x39, 0xde, 0x48, 0xf4, 0x3d, - 0x29, 0xc0, 0x83, 0xd0, 0xe6, 0x80, 0x16, 0x8a, 0x28, 0xa0, - 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, - 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, - 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, - 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x93, 0x2, 0x96, - 0x8a, 00, 0x4c, 0xf, 0x4a, 0x4d, 0x8a, 0x7b, 0xf, 0xca, - 0x9d, 0x45, 00, 0x37, 0xca, 0x43, 0xfc, 0xb, 0xf9, 0x53, - 0x4c, 0x11, 0x1e, 0xb1, 0xa7, 0xfd, 0xf2, 0x2a, 0x4a, 0x29, - 0x58, 0x8, 0xbe, 0xcb, 0xf, 0xfc, 0xf1, 0x8f, 0xfe, 0xf9, - 0x14, 0xd3, 0x65, 0x6e, 0x7a, 0xc1, 0x17, 0xfd, 0xf0, 0x2a, - 0x7a, 0x28, 0xb2, 0x15, 0x91, 0x59, 0xb4, 0xeb, 0x46, 0xeb, - 0x6b, 0x9, 0xfa, 0xc6, 0x29, 0x87, 0x47, 0xb1, 0x6e, 0xb6, - 0x70, 0x1f, 0xac, 0x63, 0xfc, 0x2a, 0xe5, 0x14, 0xb9, 0x63, - 0xd8, 0x2c, 0xbb, 0x19, 0xe7, 0x40, 0xd3, 0x1b, 0xad, 0x85, - 0xb1, 0xff, 00, 0xb6, 0x4b, 0xfe, 0x14, 0xc6, 0xf0, 0xce, - 0x92, 0xdd, 0x74, 0xdb, 0x53, 0xff, 00, 0x6c, 0x85, 0x69, - 0xd1, 0x4b, 0xd9, 0xc3, 0xb2, 0x17, 0x2c, 0x7b, 0x19, 0x7, - 0xc2, 0x3a, 0x2b, 0x75, 0xd2, 0xed, 0x4f, 0xfd, 0xb2, 0x15, - 0x1b, 0x78, 0x2b, 0x41, 0x73, 0x93, 0xa4, 0x59, 0x93, 0xef, - 0xa, 0xd6, 0xdd, 0x15, 0x3e, 0xca, 0x9b, 0xfb, 0x2b, 0xee, - 0x17, 0x24, 0x3b, 0x1c, 0xf3, 0x7c, 0x3f, 0xf0, 0xe3, 0x75, - 0xd1, 0xed, 0x3f, 0xef, 0xd0, 0xa8, 0x9b, 0xe1, 0xaf, 0x86, - 0x1f, 0xae, 0x8b, 0x69, 0xff, 00, 0x7e, 0xc5, 0x74, 0xd4, - 0x54, 0xfd, 0x5e, 0x8b, 0xfb, 0xb, 0xee, 0x44, 0xfb, 0x2a, - 0x6f, 0xec, 0xaf, 0xb8, 0xe4, 0xdf, 0xe1, 0x5f, 0x85, 0x5f, - 0x39, 0xd1, 0x6d, 0xb9, 0xff, 00, 0x60, 0x54, 0x2d, 0xf0, - 0x87, 0xc2, 0x4f, 0xd7, 0x45, 0xb7, 0xff, 00, 0xbe, 0x6b, - 0xb2, 0xa2, 0xa3, 0xea, 0xb4, 0x1f, 0xd8, 0x5f, 0x72, 0x17, - 0xb0, 0xa5, 0xfc, 0xab, 0xee, 0x38, 0x76, 0xf8, 0x2f, 0xe0, - 0xf7, 0xeb, 0xa3, 0x41, 0xf9, 0x54, 0x2f, 0xf0, 0x2f, 0xc1, - 0x8f, 0xff, 00, 0x30, 0x78, 0xc7, 0xd2, 0xbb, 0xea, 0x2a, - 0x5e, 0xb, 0xc, 0xf7, 0xa6, 0xbe, 0xe4, 0x4f, 0xd5, 0xa8, - 0xbf, 0xb0, 0xbe, 0xe3, 0xce, 0x9f, 0xe0, 0x17, 0x83, 0x1f, - 0xfe, 0x61, 0x6a, 0x3e, 0x86, 0xa0, 0x7f, 0xd9, 0xe3, 0xc1, - 0x8f, 0xff, 00, 0x2e, 0x4, 0x7d, 0xd, 0x7a, 0x65, 0x15, - 0xf, 0x1, 0x84, 0x7f, 0xf2, 0xe9, 0x7d, 0xc8, 0x9f, 0xaa, - 0x50, 0x7f, 0x61, 0x7d, 0xc7, 0x96, 0xbf, 0xec, 0xe1, 0xe0, - 0xd7, 0xff, 00, 0x97, 0x37, 0x1f, 0xf0, 0x2a, 0x81, 0xff, - 00, 0x66, 0x7f, 0x7, 0x37, 0xfc, 0xb0, 0x94, 0x7d, 0x1a, - 0xbd, 0x66, 0x8a, 0x9f, 0xec, 0xdc, 0x1b, 0xff, 00, 0x97, - 0x4b, 0xee, 0x23, 0xea, 0x58, 0x67, 0xff, 00, 0x2e, 0xd7, - 0xdc, 0x79, 0x3, 0xfe, 0xcb, 0xfe, 0xf, 0x7f, 0xe0, 0xb8, - 0x5f, 0xa3, 0xd4, 0xd, 0xfb, 0x2c, 0x78, 0x4c, 0xf4, 0x7b, - 0x81, 0xf8, 0x8a, 0xf6, 0x6a, 0x2a, 0x1e, 0x57, 0x82, 0x7f, - 0xf2, 0xe9, 0x12, 0xf0, 0x18, 0x57, 0xff, 00, 0x2e, 0xd7, - 0xdc, 0x78, 0x9b, 0xfe, 0xca, 0x7e, 0x16, 0x6e, 0x97, 0x17, - 0x23, 0xf1, 0x15, 0xb, 0xfe, 0xc9, 0xbe, 0x1b, 0x6f, 0xbb, - 0x79, 0x72, 0x3f, 0x2a, 0xf7, 0x2a, 0x2a, 0x7f, 0xb2, 0x70, - 0x3f, 0xf3, 0xe9, 0x12, 0xf2, 0xec, 0x23, 0xff, 00, 0x97, - 0x68, 0xf0, 0x76, 0xfd, 0x92, 0x74, 0x3, 0xd3, 0x50, 0xb9, - 0x1f, 0x80, 0xa8, 0x5b, 0xf6, 0x45, 0xd1, 0xf, 0x4d, 0x52, - 0xe0, 0x7f, 0xc0, 0x45, 0x7b, 0xf5, 0x15, 0x3f, 0xd9, 0x18, - 0x1f, 0xf9, 0xf7, 0xf9, 0x90, 0xf2, 0xbc, 0x1b, 0xff, 00, - 0x97, 0x68, 0xf9, 0xe9, 0xff, 00, 0x64, 0x2d, 0x2c, 0xfd, - 0xdd, 0x62, 0x7f, 0xc5, 0x5, 0x40, 0xff, 00, 0xb2, 0x5, - 0x97, 0xf0, 0xeb, 0x12, 0x7e, 0x28, 0x2b, 0xe8, 0xca, 0x2a, - 0x3f, 0xb1, 0xb0, 0x3f, 0xf3, 0xef, 0xf1, 0x7f, 0xe6, 0x4b, - 0xca, 0x70, 0x4f, 0xfe, 0x5d, 0xa3, 0xe6, 0xd6, 0xfd, 0x90, - 0x21, 0xfe, 0x1d, 0x65, 0xbf, 0x14, 0xa8, 0x5f, 0xf6, 0x40, - 0x3f, 0xc3, 0xac, 0x7e, 0x69, 0x5f, 0x4c, 0x51, 0x53, 0xfd, - 0x89, 0x81, 0xfe, 0x4f, 0xc5, 0x91, 0xfd, 0x91, 0x82, 0xff, - 00, 0x9f, 0x67, 0xcc, 0xf, 0xfb, 0x20, 0x4f, 0xfc, 0x3a, - 0xba, 0xfe, 0x2b, 0x50, 0xbf, 0xec, 0x83, 0x7e, 0x3e, 0xee, - 0xaf, 0x11, 0xfa, 0xad, 0x7d, 0x4b, 0x45, 0x4f, 0xf6, 0x1e, - 0x7, 0xf9, 0x5f, 0xde, 0xc9, 0x79, 0x36, 0x5, 0xfd, 0x83, - 0xe5, 0x37, 0xfd, 0x91, 0x35, 0x51, 0xd3, 0x53, 0x84, 0xfe, - 0x15, 0x3, 0xfe, 0xc9, 0x1a, 0xd8, 0xe9, 0x7d, 0xb, 0x57, - 0xd6, 0x74, 0x54, 0xbc, 0x87, 0x5, 0xd9, 0xfd, 0xec, 0x87, - 0x92, 0x60, 0x7f, 0x93, 0xf1, 0x3e, 0x46, 0x7f, 0xd9, 0x33, - 0xc4, 0x23, 0xa5, 0xd4, 0x7, 0xf1, 0xa8, 0x1f, 0xf6, 0x51, - 0xf1, 0x28, 0xfb, 0xb2, 0xc2, 0x7f, 0x1a, 0xfb, 0x2, 0x8a, - 0x8f, 0xec, 0xc, 0x1f, 0x9f, 0xde, 0x4f, 0xf6, 0x16, 0xb, - 0xf9, 0x7f, 0x13, 0xe3, 0x87, 0xfd, 0x95, 0x7c, 0x54, 0x3e, - 0xe9, 0x85, 0xbf, 0xe0, 0x42, 0xa1, 0x7f, 0xd9, 0x6f, 0xc5, - 0xeb, 0xd2, 0x38, 0x8f, 0xd1, 0xc5, 0x7d, 0x9b, 0x45, 0x4f, - 0xfa, 0xbf, 0x84, 0xee, 0xfe, 0xff, 00, 0xf8, 0x4, 0xff, - 00, 0x60, 0xe0, 0xbb, 0x3f, 0xbc, 0xf8, 0xad, 0xff, 00, - 0x66, 0x3f, 0x18, 0xaf, 0x4b, 0x64, 0x3f, 0xf0, 0x31, 0x50, - 0xbf, 0xec, 0xd7, 0xe3, 0x35, 0xff, 00, 0x97, 0x20, 0x7f, - 0xe0, 0x42, 0xbe, 0xda, 0xa2, 0xa7, 0xfd, 0x5e, 0xc3, 0x7f, - 0x34, 0xbf, 0xf, 0xf2, 0x23, 0xfd, 0x5f, 0xc1, 0xf9, 0xfd, - 0xe7, 0xc3, 0xcd, 0xfb, 0x39, 0xf8, 0xd1, 0x7f, 0xe6, 0x1a, - 0x4f, 0xfc, 0x8, 0x54, 0x2f, 0xfb, 0x3d, 0xf8, 0xd1, 0x7f, - 0xe6, 0x14, 0xe7, 0xf1, 0x15, 0xf7, 0x3d, 0x15, 0x3f, 0xea, - 0xee, 0x1f, 0xf9, 0xe5, 0xf8, 0x7f, 0x91, 0x3f, 0xea, 0xf6, - 0x13, 0xcf, 0xef, 0x3e, 0x12, 0x3f, 0x1, 0xbc, 0x6d, 0xb, - 0x6, 0x5d, 0x22, 0x60, 0xc3, 0xa3, 0x29, 0xc1, 0x15, 0xde, - 0x78, 0x43, 0xc6, 0xbf, 0x14, 0xfe, 0x15, 0x6c, 0x5d, 0x57, - 0x4c, 0xbc, 0xd7, 0x34, 0x55, 0xfb, 0xf0, 0x5d, 0x12, 0xd2, - 0xa2, 0xff, 00, 0xb1, 0x27, 0x5f, 0xc0, 0xe4, 0x7d, 0x2b, - 0xeb, 0x1a, 0x82, 0xf2, 0xde, 0x2b, 0x9b, 0x69, 0x12, 0x64, - 0x59, 0x10, 0xa9, 0xc8, 0x61, 0x5a, 0xd2, 0xc9, 0x56, 0x19, - 0xf3, 0xd0, 0xab, 0x24, 0xfe, 0x45, 0x53, 0xc8, 0xe9, 0xd0, - 0x7c, 0xf8, 0x7a, 0x92, 0x8b, 0xfe, 0xb7, 0xee, 0x73, 0xbe, - 00, 0xf8, 0x91, 0xa2, 0x7c, 0x48, 0xd2, 0x8d, 0xe6, 0x91, - 0x73, 0xba, 0x58, 0xf0, 0x2e, 0x2d, 0x24, 0xf9, 0x66, 0xb7, - 0x63, 0xfc, 0x2e, 0xbd, 0xbe, 0xbd, 0xd, 0x75, 0x35, 0xf1, - 0x7, 0xc4, 0x6d, 0x72, 0xff, 00, 0xe1, 0x4f, 0xc4, 0x43, - 0xae, 0x78, 0x66, 0x63, 0x69, 0x74, 0x24, 0xfd, 0xfc, 0x20, - 0xfe, 0xee, 0xe1, 0x1, 0xc9, 0x8d, 0xc7, 0x70, 0x7f, 0x31, - 0xda, 0xbe, 0xae, 0xf8, 0x4f, 0xf1, 0x3b, 0x4d, 0xf8, 0xb7, - 0xe0, 0xcb, 0x5d, 0x7f, 0x4d, 0x47, 0x80, 0x3b, 0x34, 0x53, - 0xda, 0xca, 0x46, 0xf8, 0x25, 0x5e, 0x19, 0xf, 0xaf, 0xa8, - 0x3d, 0xc1, 0x6, 0xbd, 0xc, 0xe, 0x35, 0x62, 0x79, 0xa9, - 0xcb, 0xe2, 0x8e, 0x8c, 0xe8, 0xc0, 0x66, 0x4a, 0xbd, 0x59, - 0x61, 0x6a, 0xe9, 0x52, 0x3f, 0x73, 0x5d, 0xd7, 0xea, 0x8e, - 0xc6, 0x8a, 0x28, 0xaf, 0x54, 0xf7, 0x42, 0x8a, 0x28, 0xa0, - 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0xf, 0x37, - 0xfd, 0xa0, 0x7c, 0x6a, 0x3c, 0x17, 0xf0, 0xd7, 0x51, 0x74, - 0x72, 0x97, 0x97, 0xe3, 0xec, 0x56, 0xfb, 0x4e, 0x8, 0x67, - 0x7, 0x24, 0x7d, 0x17, 0x26, 0xbe, 0x25, 0xd0, 0xb4, 0xb9, - 0x35, 0x8d, 0x56, 0xd2, 0xca, 0x15, 0xdc, 0xf3, 0x48, 0x10, - 0x1, 0x5e, 0xd3, 0xfb, 0x5a, 0xf8, 0xcb, 0xfb, 0x5b, 0xc6, - 0x16, 0x7e, 0x1f, 0x85, 0xf3, 0x6, 0x97, 0x1f, 0x99, 0x28, - 0x7, 0x83, 0x33, 0x8c, 0xfe, 0x8b, 0x8f, 0xfb, 0xe8, 0xd6, - 0x77, 0xec, 0xc3, 0xe1, 0x1, 0xaf, 0x78, 0xd8, 0x5f, 0x4d, - 0x1e, 0xeb, 0x7b, 0x25, 0x2f, 0x93, 0xd3, 0x77, 0x6a, 0xfc, - 0xf7, 0x33, 0x93, 0xc7, 0x63, 0xd6, 0x1e, 0x3b, 0x2d, 0x3f, - 0xcc, 0xfc, 0xef, 0x1e, 0xde, 0x63, 0x9a, 0x2a, 0x11, 0xda, - 0x3a, 0x7f, 0x9f, 0xf5, 0xe4, 0x7d, 0x67, 0xe1, 0x3d, 0x12, - 0x3f, 0xe, 0xf8, 0x72, 0xc3, 0x4f, 0x8d, 0x42, 0x88, 0x22, - 0x55, 0x38, 0xf5, 0xc7, 0x35, 0xaf, 0x45, 0x15, 0xfa, 0x4, - 0x62, 0xa1, 0x15, 0x18, 0xec, 0x8f, 0xd0, 0xa2, 0x94, 0x52, - 0x48, 0x28, 0xa2, 0x8a, 0xa2, 0x82, 0x8a, 0x2b, 0xcd, 0xbf, - 0x68, 0xaf, 0x8d, 0xda, 0x47, 0xec, 0xf1, 0xf0, 0x83, 0xc4, - 0x1e, 0x39, 0xd6, 0xe, 0xe8, 0xf4, 0xf8, 0x71, 0x6d, 0x6e, - 0x3e, 0xf5, 0xc5, 0xc3, 0x7c, 0xb1, 0x44, 0x3e, 0xac, 0x46, - 0x7d, 0x6, 0x4f, 0x6a, 00, 0xe7, 0x3f, 0x69, 0x9f, 0xda, - 0xf3, 0xe1, 0xf7, 0xec, 0xaf, 0xa0, 0x47, 0x79, 0xe2, 0xcb, - 0xe7, 0x9f, 0x55, 0xba, 0x52, 0xd6, 0x3a, 0x25, 0x88, 0xf, - 0x77, 0x73, 0x8e, 0xe0, 0x67, 0xa, 0x99, 0xfe, 0x36, 0x20, - 0x7d, 0x4f, 0x15, 0xf9, 0x5d, 0xf1, 0x87, 0xfe, 0xa, 0xd5, - 0xf1, 0x9b, 0xe2, 0x5, 0xc5, 0xdd, 0xbf, 0x85, 0xe5, 0xb1, - 0xf0, 0x1e, 0x90, 0xec, 0x44, 0x4b, 0xa7, 0xc2, 0x26, 0xbb, - 0x9, 0x9e, 0x37, 0x4d, 0x26, 0x46, 0x71, 0xfd, 0xd5, 0x5a, - 0xf9, 0xb3, 0x5d, 0xd7, 0xfc, 0x7d, 0xfb, 0x57, 0x7c, 0x67, - 0x4b, 0x8b, 0xc9, 0x2e, 0x3c, 0x4b, 0xe3, 0x3f, 0x11, 0xdd, - 0xac, 0x10, 0x44, 0xf, 00, 0x93, 0xf2, 0xc6, 0x83, 0xa2, - 0x46, 0xa3, 0x3c, 0x74, 00, 0x13, 0xea, 0x6b, 0xf4, 0x67, - 0xc1, 0x1f, 0xf0, 0x48, 0xaf, 0x87, 0xff, 00, 0xf, 0x7e, - 0x1c, 0xdf, 0x78, 0x9b, 0xe2, 0xf7, 0x8b, 0x75, 0x1b, 0xeb, - 0x9d, 0x3e, 0xca, 0x4b, 0xeb, 0xe8, 0x74, 0x69, 0x56, 0xda, - 0xd6, 0xd9, 0x11, 0xb, 0xb0, 0xe, 0xca, 0x59, 0xf0, 0x1, - 0xe7, 0xe5, 0xcf, 0xa5, 0x32, 0x6e, 0xde, 0xc7, 0xe7, 0x17, - 0x88, 0x7f, 0x68, 0xbf, 0x8a, 0x7e, 0x2b, 0xb9, 0x92, 0x7d, - 0x5b, 0xe2, 0x37, 0x8a, 0x2f, 0x64, 0x90, 0xe5, 0x83, 0xea, - 0xf3, 0x85, 0x27, 0xfd, 0xd0, 0xc0, 0xf, 0xca, 0xbf, 0x5a, - 0xbf, 0xe0, 0x92, 0x3e, 0xb, 0xd6, 0xed, 0xfe, 0x3, 0xea, - 0x3e, 0x39, 0xf1, 0x6, 0xad, 0xa9, 0x6a, 0xb7, 0x9e, 0x23, - 0xbe, 0x74, 0xb3, 0x17, 0xf7, 0x52, 0x4c, 0x22, 0xb6, 0x80, - 0x94, 0x1b, 0x43, 0x13, 0x8d, 0xd2, 0x79, 0x84, 0x91, 0xd4, - 0x5, 0xaf, 0xc7, 0x4d, 0x1b, 0xc3, 0x7f, 0xf0, 0x9e, 0xfc, - 0x44, 0xb2, 0xd0, 0x7c, 0x39, 0x6f, 0x24, 0x4b, 0xac, 0x6a, - 0x89, 0x67, 0xa7, 0xc1, 0x2b, 0x6f, 0x64, 0x12, 0xca, 0x16, - 0x30, 0xcd, 0x8e, 0x70, 0x18, 0x64, 0xfb, 0x13, 0x5f, 0xd1, - 0xcf, 0x86, 0xb4, 0x4d, 0x3, 0xf6, 0x7b, 0xf8, 0x2d, 0x65, - 0xa6, 0xc6, 0x52, 0xcf, 0xc3, 0xfe, 0x13, 0xd1, 0xc0, 0x67, - 0x3c, 0x1, 0x1c, 0x31, 0xe5, 0xdc, 0xfb, 0x9c, 0x12, 0x7d, - 0xcd, 0xc, 0x48, 0xf8, 0xf, 0xc4, 0x7f, 0xf0, 0x59, 0xa9, - 0xfc, 0x25, 0xe2, 0xcd, 0x6b, 0x42, 0xd4, 0x3e, 0x14, 0xab, - 0xcd, 0xa6, 0x5e, 0xcf, 0x65, 0x24, 0x90, 0x6b, 0x7c, 0x33, - 0x47, 0x23, 0x21, 0x20, 0x18, 0x7d, 0x56, 0xbe, 0xec, 0xfd, - 0x9c, 0x3e, 0x34, 0x47, 0xfb, 0x42, 0x7c, 0x1b, 0xf0, 0xff, - 00, 0x8f, 0x62, 0xd2, 0xdf, 0x46, 0x4d, 0x59, 0x24, 0x61, - 0x64, 0xf2, 0xf9, 0xa6, 0x3d, 0xb2, 0x32, 0x7d, 0xec, 0xc, - 0xe7, 0x6e, 0x7a, 0x77, 0xaf, 0xe7, 0x2f, 0xc6, 0x7a, 0xf9, - 0xf1, 0x5f, 0x8b, 0xf5, 0xdd, 0x6d, 0x86, 0xd6, 0xd4, 0xaf, - 0xe7, 0xbd, 0x23, 0xd0, 0xc9, 0x23, 0x3f, 0xfe, 0xcd, 0x5f, - 0xd1, 0x27, 0xec, 0x91, 0xf0, 0xfe, 0x4f, 0x85, 0xff, 00, - 0xb3, 0x57, 0xc3, 0x9f, 0xd, 0xce, 0x9e, 0x5d, 0xdd, 0xae, - 0x8d, 0x3, 0xdc, 0xaf, 0xa4, 0xd2, 0x2f, 0x99, 0x27, 0xfe, - 0x3c, 0xe6, 0x81, 0xa7, 0x73, 0xd6, 0xc9, 0xc0, 0xc9, 0xe0, - 0x57, 0xce, 0xda, 0xff, 00, 0xed, 0xf, 0xae, 0x43, 0xae, - 0x5f, 0x47, 0xa6, 0xc7, 0x64, 0xda, 0x7a, 0x4a, 0xcb, 0x9, - 0x96, 0x26, 0x2c, 0x54, 0x1c, 0x64, 0x9d, 0xc3, 0xaf, 0x5f, - 0xc6, 0xbd, 0x7b, 0xe2, 0x97, 0x89, 0x47, 0x85, 0xbc, 0x11, - 0xa9, 0x5d, 0xab, 0x6d, 0x9d, 0xd3, 0xc8, 0x87, 0xfd, 0xf7, - 0xe0, 0x7e, 0x5c, 0x9f, 0xc2, 0xbe, 0x40, 0xaf, 0x86, 0xe2, - 0x2c, 0xca, 0xae, 0x1a, 0x70, 0xa3, 0x42, 0x5c, 0xaf, 0x77, - 0x6f, 0xc3, 0xf5, 0x3c, 0x9c, 0x75, 0x79, 0x53, 0x6a, 0x10, - 0x76, 0x3d, 0x5d, 0x3f, 0x69, 0xf, 0x12, 0xaf, 0xde, 0xb3, - 0xd3, 0x9b, 0xfe, 0xd9, 0xb8, 0xff, 00, 0xd9, 0xaa, 0x74, - 0xfd, 0xa5, 0x75, 0xe1, 0xf7, 0xb4, 0xdd, 0x3d, 0xbe, 0x81, - 0xc7, 0xfe, 0xcd, 0x5e, 0x43, 0x45, 0x7c, 0x82, 0xce, 0x73, - 0x5, 0xff, 00, 0x2f, 0x5f, 0xe0, 0x79, 0x9f, 0x5a, 0xad, - 0xfc, 0xc7, 0xb3, 0x47, 0xfb, 0x4c, 0xea, 0x83, 0xef, 0xe8, - 0xb6, 0x8d, 0xfe, 0xec, 0xac, 0x3f, 0xc6, 0xa7, 0x4f, 0xda, - 0x72, 0xef, 0xf8, 0xbc, 0x3f, 0x9, 0xfa, 0x5d, 0x11, 0xff, - 00, 0xb2, 0xd7, 0x89, 0x51, 0x5a, 0x2c, 0xf3, 0x31, 0x5f, - 0xf2, 0xf7, 0xf0, 0x5f, 0xe4, 0x57, 0xd7, 0x2b, 0xff, 00, - 0x31, 0xee, 0xd1, 0x7e, 0xd3, 0x83, 0xfe, 0x5a, 0x78, 0x7f, - 0x1f, 0xee, 0xdd, 0x7f, 0xf6, 0x35, 0x66, 0x3f, 0xda, 0x6e, - 0xc8, 0xfd, 0xfd, 0xa, 0x71, 0xfe, 0xec, 0xea, 0x7f, 0xa5, - 0x78, 0x5, 0x15, 0xaa, 0xe2, 0xc, 0xc5, 0x7f, 0xcb, 0xcf, - 0xc1, 0x7f, 0x91, 0x5f, 0x5d, 0xaf, 0xfc, 0xdf, 0x91, 0xf4, - 0x3c, 0x7f, 0xb4, 0xc6, 0x90, 0x7e, 0xfe, 0x91, 0x7a, 0xbf, - 0xee, 0xb2, 0x1f, 0xeb, 0x5a, 0x56, 0x7f, 0xb4, 0x5f, 0x85, - 0xee, 0x8, 0x13, 0x45, 0x7f, 0x6b, 0xee, 0xf0, 0x86, 0x1f, - 0xf8, 0xeb, 0x1a, 0xf9, 0x9a, 0x8a, 0xd6, 0x3c, 0x47, 0x8f, - 0x8e, 0xed, 0x3f, 0x97, 0xf9, 0x14, 0xb1, 0xf5, 0x97, 0x53, - 0xec, 0x4d, 0x7, 0xe2, 0x67, 0x86, 0x7c, 0x48, 0xeb, 0x1d, - 0x8e, 0xaf, 0x3, 0x4c, 0xdd, 0x22, 0x97, 0x31, 0xb9, 0xfa, - 0x6, 0xc6, 0x7f, 0xa, 0xe9, 0xeb, 0xe1, 0x4a, 0xed, 0x7c, - 0x17, 0xf1, 0x6b, 0x5f, 0xf0, 0x6c, 0xa8, 0x89, 0x72, 0xd7, - 0xd6, 00, 0xfc, 0xd6, 0x97, 0x2c, 0x59, 0x71, 0xfe, 0xc9, - 0xea, 0xbf, 0x87, 0x1e, 0xd5, 0xed, 0xe1, 0x38, 0xa1, 0x36, - 0xa3, 0x8a, 0x85, 0xbc, 0xd7, 0xf9, 0x7f, 0xc1, 0x3a, 0xe9, - 0x66, 0x37, 0x76, 0xa8, 0xbe, 0xe3, 0xeb, 0x6a, 0x2b, 0x13, - 0xc2, 0x1e, 0x2f, 0xd3, 0xfc, 0x6b, 0xa3, 0xa6, 0xa1, 0xa7, - 0xc8, 0x4a, 0x13, 0xb6, 0x48, 0xdb, 0x86, 0x8d, 0xfb, 0xa9, - 0x15, 0xb7, 0x5f, 0x75, 0x4e, 0xa4, 0x6a, 0xc5, 0x4e, 0xe, - 0xe9, 0x9e, 0xc4, 0x64, 0xa4, 0xae, 0xb6, 0xa, 0xc0, 0xf1, - 0x17, 0x8e, 0xb4, 0x2f, 0x9, 0xdc, 0x43, 0x6, 0xab, 0xa8, - 0x25, 0xa4, 0xb3, 0x29, 0x74, 0x56, 0x56, 0x39, 00, 0xe3, - 0x3c, 0x3, 0x5b, 0xf5, 0xf2, 0x87, 0xc6, 0xed, 0x74, 0x6b, - 0x9f, 0x10, 0xaf, 0xc2, 0x36, 0xe8, 0xac, 0xc2, 0xda, 0xa7, - 0xfc, 0x7, 0xef, 0x7f, 0xe3, 0xc5, 0xab, 0xc8, 0xcd, 0xf3, - 0x7, 0x97, 0x61, 0xd5, 0x48, 0x24, 0xe4, 0xdd, 0x95, 0xce, - 0x5c, 0x55, 0x77, 0x42, 0x1c, 0xcb, 0x73, 0xe8, 0x4, 0xf8, - 0xb9, 0xe0, 0xf7, 0xe9, 0xaf, 0x5b, 0xf, 0xf7, 0xb7, 0xf, - 0xe6, 0x2a, 0x74, 0xf8, 0xa1, 0xe1, 0x37, 0xe9, 0xe2, 0xb, - 0x1f, 0xc6, 0x50, 0x2b, 0xe3, 0xca, 0x2b, 0xe3, 0x97, 0x14, - 0xe2, 0x7a, 0xd3, 0x8f, 0xe3, 0xfe, 0x67, 0x97, 0xfd, 0xa3, - 0x53, 0xb2, 0x3e, 0xca, 0x8f, 0xe2, 0x17, 0x86, 0x25, 0xfb, - 0xba, 0xfe, 0x9c, 0x7f, 0xed, 0xe5, 0x3f, 0xc6, 0xad, 0x47, - 0xe3, 0xd, 0xa, 0x6f, 0xb9, 0xac, 0xd8, 0x37, 0xd2, 0xe5, - 0x3f, 0xc6, 0xbe, 0x2b, 0xa2, 0xb5, 0x5c, 0x55, 0x5b, 0xad, - 0x25, 0xf7, 0xb2, 0xbf, 0xb4, 0x67, 0xd6, 0x27, 0xdb, 0x89, - 0xaf, 0x69, 0x92, 0x7d, 0xdd, 0x46, 0xd1, 0xbe, 0x93, 0xaf, - 0xf8, 0xd4, 0xc9, 0xa9, 0x5a, 0x49, 0xf7, 0x2e, 0xa0, 0x6f, - 0xa4, 0x80, 0xff, 00, 0x5a, 0xf8, 0x76, 0x8c, 0x91, 0x5a, - 0x2e, 0x2b, 0x97, 0x5a, 0x3f, 0x8f, 0xfc, 0x2, 0xbf, 0xb4, - 0x9f, 0xf2, 0xfe, 0x27, 0xdd, 0xb, 0x2a, 0x37, 0xdd, 0x75, - 0x3f, 0x43, 0x4e, 0xdc, 0x3d, 0x45, 0x7c, 0x30, 0x25, 0x75, - 0xe8, 0xec, 0x3e, 0x86, 0xa4, 0x4b, 0xeb, 0x98, 0xfe, 0xed, - 0xc4, 0xab, 0xf4, 0x72, 0x2b, 0x45, 0xc5, 0x6b, 0xad, 0x1f, - 0xfc, 0x9b, 0xfe, 0x1, 0x5f, 0xda, 0x5f, 0xdc, 0xfc, 0x7f, - 0xe0, 0x1f, 0x72, 0x51, 0x5f, 0x10, 0xa6, 0xb9, 0xa9, 0x47, - 0xf7, 0x75, 0xb, 0xa5, 0xfa, 0x4c, 0xdf, 0xe3, 0x52, 0xaf, - 0x89, 0xb5, 0x84, 0xfb, 0xba, 0xad, 0xf2, 0xfd, 0x2e, 0x5c, - 0x7f, 0x5a, 0xd1, 0x71, 0x5d, 0x3e, 0xb4, 0x5f, 0xdf, 0xff, - 00, 00, 0x7f, 0xda, 0x4b, 0xf9, 0x7f, 0x13, 0xed, 0x9a, - 0x2b, 0xe2, 0xc4, 0xf1, 0x96, 0xbf, 0x1f, 0xdd, 0xd7, 0x35, - 0x25, 0xfa, 0x5d, 0xc9, 0xfe, 0x35, 0xda, 0x7c, 0x25, 0xf1, - 0x7, 0x88, 0x75, 0xff, 00, 0x1e, 0xe9, 0x76, 0x93, 0x6b, - 0x3a, 0x84, 0xf6, 0xc1, 0xda, 0x59, 0x52, 0x4b, 0x97, 0x65, - 0x2a, 0xaa, 0x4e, 0x8, 0x27, 0xa6, 0x70, 0x3f, 0x1a, 0xe9, - 0xa1, 0xc4, 0xb4, 0xab, 0xd5, 0x8d, 0x25, 0x49, 0xde, 0x4d, - 0x2d, 0xd7, 0x53, 0x48, 0x63, 0xe3, 0x39, 0x28, 0xa8, 0xee, - 0x7d, 0x3f, 0x45, 0x14, 0x57, 0xd9, 0x1e, 0xa8, 0x51, 0x45, - 0x14, 00, 0x51, 0x5c, 0xf7, 0x88, 0xfc, 0x7f, 0xa0, 0x78, - 0x4f, 0x8d, 0x4f, 0x52, 0x86, 0x9, 0x7f, 0xe7, 0x8a, 0xe5, - 0xe4, 0xff, 00, 0xbe, 0x57, 0x26, 0xbc, 0xef, 0x5b, 0xfd, - 0xa5, 0x74, 0xcb, 0x70, 0xcb, 0xa5, 0xe9, 0x97, 0x17, 0x6f, - 0xd9, 0xee, 0x18, 0x44, 0xbf, 0x90, 0xc9, 0xfe, 0x55, 0xe6, - 0xe2, 0x33, 0x2c, 0x26, 0x17, 0x4a, 0xb5, 0x12, 0x7d, 0xb7, - 0x7f, 0x72, 0x39, 0xe7, 0x5e, 0x95, 0x3f, 0x8a, 0x47, 0xb2, - 0xd1, 0x5f, 0x34, 0x5f, 0x7e, 0xd1, 0x9e, 0x26, 0xb8, 0x63, - 0xf6, 0x78, 0x2c, 0x2d, 0x13, 0xb6, 0x22, 0x67, 0x23, 0xf1, - 0x2d, 0x8f, 0xd2, 0xb1, 0xae, 0x3e, 0x37, 0xf8, 0xce, 0x72, - 0x7f, 0xe2, 0x6d, 0xe5, 0x3, 0xda, 0x38, 0x23, 0x18, 0xff, - 00, 0xc7, 0x6b, 0xc5, 0x9f, 0x13, 0x60, 0x63, 0xf0, 0xa9, - 0x3f, 0x97, 0xf9, 0xb4, 0x72, 0x3c, 0xc2, 0x8a, 0xda, 0xec, - 0xfa, 0xbc, 0x8c, 0xd2, 0x79, 0x63, 0xdf, 0xf3, 0x35, 0xf2, - 0x2b, 0x7c, 0x5d, 0xf1, 0x83, 0x1c, 0x9d, 0x76, 0xe4, 0x7d, - 0x2, 0x8f, 0xe9, 0x52, 0x45, 0xf1, 0x8b, 0xc6, 0x31, 0x1c, - 0x8d, 0x72, 0x63, 0xfe, 0xf4, 0x68, 0xdf, 0xcd, 0x6b, 0xf, - 0xf5, 0xa3, 0x9, 0xfc, 0x92, 0xfc, 0x3f, 0xcc, 0x9f, 0xed, - 0x1a, 0x7d, 0x99, 0xf5, 0xc5, 0x15, 0xf2, 0xb5, 0xb7, 0xc7, - 0x9f, 0x18, 0xdb, 0xfd, 0xeb, 0xf8, 0x6e, 0x3f, 0xeb, 0xad, - 0xba, 0x7f, 0x40, 0x2b, 0x7f, 0x4d, 0xfd, 0xa5, 0x75, 0xa8, - 0x58, 0xb, 0xed, 0x32, 0xce, 0xe9, 0x7b, 0xf9, 0x25, 0xa2, - 0x3f, 0xa9, 0x61, 0x5d, 0x54, 0xf8, 0x93, 0x1, 0x3f, 0x8a, - 0xeb, 0xd5, 0x7f, 0x95, 0xcd, 0x16, 0x3e, 0x8b, 0xde, 0xe8, - 0xfa, 0x2a, 0x8a, 0xf2, 0xdd, 0x17, 0xf6, 0x87, 0xf0, 0xd6, - 0xa3, 0xb5, 0x6f, 0x52, 0xeb, 0x4c, 0x90, 0xf5, 0x32, 0x26, - 0xf4, 0xfc, 0xd7, 0x27, 0xf4, 0xaf, 0x45, 0xd2, 0xb5, 0x9b, - 0x1d, 0x72, 0xd5, 0x6e, 0x74, 0xfb, 0xb8, 0x6f, 0x20, 0x6e, - 0x8f, 0xb, 0x86, 0x1f, 0x8f, 0xa5, 0x7b, 0x98, 0x7c, 0x6e, - 0x1f, 0x15, 0xfc, 0x19, 0xa9, 0x7e, 0x7f, 0x76, 0xe7, 0x64, - 0x2a, 0xd3, 0xa9, 0xf0, 0x3b, 0x97, 0x68, 0xa2, 0x8a, 0xed, - 0x35, 0xa, 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa2, 0x80, 0xa, - 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa6, 0xbc, 0x8b, 0x12, 0x96, - 0x76, 0x8, 0xa3, 0xa9, 0x63, 0x81, 0x40, 0xe, 0xa2, 0xb0, - 0xb5, 0xf, 0x1d, 0xf8, 0x77, 0x4b, 0x24, 0x5d, 0x6b, 0x56, - 0x30, 0xb0, 0xea, 0xa6, 0x75, 0x27, 0xf2, 0x7, 0x35, 0x8b, - 0x71, 0xf1, 0xa7, 0xc1, 0xb6, 0xe7, 0x7, 0x5a, 0x47, 0xff, - 00, 0xae, 0x70, 0xc8, 0xff, 00, 0xc9, 0x6b, 0x92, 0x78, - 0xbc, 0x35, 0x3d, 0x27, 0x52, 0x2b, 0xd5, 0xa3, 0x27, 0x56, - 0x9c, 0x77, 0x92, 0xfb, 0xce, 0xde, 0x98, 0x5d, 0xb3, 0xf7, - 0xf, 0xe6, 0x2b, 0x82, 0x3f, 0x1d, 0xfc, 0x18, 0xf, 0xfc, - 0x84, 0xe4, 0x3f, 0xf6, 0xed, 0x2f, 0xff, 00, 0x13, 0x4a, - 0xbf, 0x1d, 0x7c, 0x18, 0xc7, 0xfe, 0x42, 0x8e, 0x3e, 0xb6, - 0xb2, 0xff, 00, 0xf1, 0x35, 0x8f, 0xf6, 0x8e, 0xb, 0xfe, - 0x7f, 0x47, 0xff, 00, 0x2, 0x44, 0xfb, 0x7a, 0x5f, 0xce, - 0xbe, 0xf3, 0xbe, 0xc9, 0xc7, 0x4a, 0x4d, 0xc7, 0xfb, 0xa7, - 0xf4, 0xae, 0x3e, 0xdf, 0xe3, 0xf, 0x83, 0xae, 0x7e, 0xee, - 0xb9, 0x2, 0x7f, 0xd7, 0x45, 0x74, 0xfe, 0x60, 0x56, 0xcd, - 0x8f, 0x8c, 0xb4, 0x1d, 0x4f, 0x1f, 0x65, 0xd6, 0x2c, 0x67, - 0x27, 0xa0, 0x59, 0xd7, 0x3f, 0x96, 0x6b, 0x78, 0x62, 0xb0, - 0xf5, 0x3e, 0xa, 0x89, 0xfa, 0x34, 0x5a, 0xa9, 0x9, 0x6d, - 0x24, 0x6c, 0xd1, 0x4d, 0x47, 0x59, 0x17, 0x2a, 0xc1, 0x87, - 0xa8, 0x39, 0xa7, 0x57, 0x51, 0xa0, 0x51, 0x45, 0x30, 0x31, - 0xf3, 0x4a, 0x9e, 0x98, 0xc8, 0x34, 00, 0xfa, 0x28, 0xa2, - 0x80, 0xa, 0x82, 0xf5, 0xfc, 0xbb, 0x39, 0xdb, 0xd1, 0x9, - 0xfd, 0x2a, 0x7a, 0xa3, 0xad, 0xbf, 0x97, 0xa4, 0x5d, 0xb1, - 0x38, 0xc4, 0x66, 0xa6, 0x4e, 0xc9, 0xb1, 0x3d, 0x13, 0x3e, - 0x1c, 0xf8, 0xdf, 0x37, 0xda, 0x3c, 0x49, 0x28, 0xeb, 0x82, - 0x6b, 0x2f, 0xf6, 0x63, 0xf8, 0x99, 0x27, 0xc3, 0x6f, 0x8d, - 0x16, 0xba, 0x44, 0xf2, 0x95, 0xd1, 0x3c, 0x4a, 0x45, 0xa4, - 0x88, 0x71, 0x84, 0xb8, 0x19, 0xf2, 0x9f, 0xdb, 0xba, 0x9f, - 0xf7, 0x85, 0x49, 0xf1, 0x56, 0x7f, 0x3f, 0xc4, 0xd7, 0x3d, - 0xf0, 0x4d, 0x78, 0x7, 0xc5, 0x7b, 0x89, 0x2c, 0xb4, 0xe1, - 0x75, 0x6e, 0xed, 0x15, 0xcd, 0xbb, 0x9, 0xa2, 0x91, 0x4e, - 0xa, 0xba, 0x9c, 0xa9, 0x1f, 0x88, 0xaf, 0xce, 0x32, 0xfa, - 0xce, 0x38, 0xc9, 0x49, 0x77, 0x67, 0xe3, 0x98, 0xbc, 0x4c, - 0xb0, 0xd9, 0xac, 0x31, 0x11, 0xe9, 0x24, 0xbe, 0x4f, 0x46, - 0x7e, 0xc0, 0x51, 0x5c, 0x1f, 0x80, 0xfe, 0x28, 0xe9, 0x5e, - 0x21, 0xf0, 0x37, 0x87, 0x75, 0x59, 0x2e, 0xcb, 0x49, 0x7d, - 0xa7, 0x5b, 0x5c, 0xb1, 0x2a, 0x72, 0x4b, 0xc4, 0xac, 0x7f, - 0x9d, 0x15, 0xfa, 0x45, 0xcf, 0xd8, 0xee, 0x99, 0xde, 0x51, - 0x45, 0x14, 0xc6, 0x14, 0x51, 0x45, 00, 0x15, 0x53, 0x56, - 0xd4, 0xed, 0xf4, 0x5d, 0x2e, 0xee, 0xfe, 0xea, 0x41, 0x15, - 0xb5, 0xb4, 0x4d, 0x2c, 0x8e, 0x7b, 0x2a, 0x8c, 0x9a, 0xb7, - 0x5e, 0x2b, 0xfb, 0x55, 0x78, 0xc4, 0x68, 0x1f, 0xf, 0x86, - 0x93, 0x13, 0xe2, 0xeb, 0x58, 0x93, 0xca, 0xc0, 0xff, 00, - 0x9e, 0x4b, 0x86, 0x73, 0xff, 00, 0xa0, 0x8f, 0xc6, 0xb9, - 0xb1, 0x35, 0x96, 0x1e, 0x8c, 0xaa, 0xbe, 0x88, 0xe4, 0xc5, - 0xd7, 0x58, 0x5a, 0x13, 0xac, 0xfa, 0x2f, 0xf8, 0x63, 0xe4, - 0xcf, 0x12, 0xeb, 0x93, 0xf8, 0xa7, 0xc4, 0x7a, 0x8e, 0xad, - 0x71, 0x8f, 0x3e, 0xfa, 0xe1, 0xe6, 0x60, 0x3a, 0xc, 0x9e, - 00, 0xf6, 0x3, 0x2, 0xbe, 0xc2, 0xfd, 0x9b, 0x3c, 0x23, - 0xff, 00, 0x8, 0xe7, 0x80, 0xa3, 0xb9, 0x91, 0x36, 0xdc, - 0x5e, 0xb1, 0x90, 0xe4, 0x73, 0xb7, 0xb5, 0x7c, 0x91, 0xe0, - 0x6f, 0xf, 0xc9, 0xe2, 0x6f, 0x14, 0x69, 0xda, 0x7c, 0x6a, - 0x5b, 0xcd, 0x95, 0x41, 0xc7, 0xa6, 0x79, 0xaf, 0xd0, 0x8d, - 0x32, 0xc2, 0x2d, 0x2f, 0x4f, 0xb7, 0xb4, 0x85, 0x42, 0x47, - 0xa, 0x4, 0x50, 0x3d, 0x85, 0x7c, 0x6e, 0x43, 0x45, 0xd6, - 0xaf, 0x3c, 0x4c, 0xfa, 0x7e, 0x6c, 0xf8, 0xfe, 0x1d, 0xa0, - 0xea, 0x4e, 0x78, 0xa9, 0xef, 0xfa, 0xbd, 0xcb, 0x54, 0x51, - 0x45, 0x7d, 0xd9, 0xf7, 0x61, 0x45, 0x14, 0x50, 0x1, 0x5f, - 0x98, 0xbf, 0xf0, 0x5b, 0x2f, 0x1d, 0xdc, 0x5a, 0xf8, 0x77, - 0xe1, 0xaf, 0x83, 0x62, 0x25, 0x6d, 0xaf, 0x6e, 0x6e, 0xb5, - 0x59, 0xf0, 0x48, 0xc9, 0x89, 0x52, 0x34, 0x7, 0xd4, 0x7e, - 0xf9, 0xcf, 0xe1, 0x5f, 0xa7, 0x55, 0xf9, 0xe5, 0xff, 00, - 0x5, 0x88, 0xf8, 0x15, 0xab, 0x78, 0xf7, 0xe1, 0x97, 0x86, - 0x3c, 0x79, 0xa2, 0x59, 0xcd, 0x7f, 0x2f, 0x85, 0xa6, 0x9a, - 0x2b, 0xf8, 0x60, 0x42, 0xcc, 0x96, 0x93, 0x5, 0x26, 0x5c, - 0xe, 0x70, 0x8f, 0x1a, 0xe7, 0xd0, 0x31, 0x3d, 0xa8, 0x13, - 0xd8, 0xf8, 0x57, 0xfe, 0x9, 0xbb, 0xf1, 0x4b, 0xc1, 0xff, - 00, 0x8, 0x7f, 0x6a, 0x4d, 0x1f, 0x5d, 0xf1, 0xb5, 0xec, - 0x1a, 0x5e, 0x92, 0xf6, 0x37, 0x36, 0x91, 0xea, 0x17, 0x23, - 0xf7, 0x56, 0xd3, 0xc8, 0xa0, 0x23, 0xb1, 0xfe, 0x10, 0x40, - 0x65, 0xdd, 0xdb, 0x77, 0x3c, 0x57, 0xe8, 0x87, 0xfc, 0x15, - 0x1f, 0xf6, 0x8d, 0xd2, 0x7c, 0x31, 0xfb, 0x2e, 0x36, 0x8b, - 0xe1, 0xed, 0x62, 0xcf, 0x51, 0xbb, 0xf1, 0xb4, 0xc2, 0xc2, - 0x29, 0x6c, 0xae, 0x16, 0x55, 0xfb, 0x2a, 0xe1, 0xe7, 0x70, - 0x54, 0x91, 0x82, 0x36, 0xa7, 0xfd, 0xb4, 0xaf, 0xc4, 0xea, - 0x37, 0x12, 00, 0xc9, 0xc0, 0xe8, 0x2a, 0xac, 0x45, 0xcf, - 0xb5, 0x7f, 0xe0, 0x94, 0x9f, 0xc, 0xb4, 0xcf, 0x13, 0xfe, - 0xd0, 0x57, 0x3e, 0x35, 0xd7, 0xee, 0x6d, 0xac, 0xf4, 0x4f, - 0x5, 0x59, 0x1b, 0xe3, 0x3d, 0xe4, 0x8b, 0x1c, 0x42, 0xe6, - 0x4c, 0xa4, 0x59, 0x66, 0xc0, 0xe0, 0x79, 0x8d, 0xf5, 0x51, - 0x5e, 0xd9, 0xff, 00, 0x5, 0x2f, 0xff, 00, 0x82, 0x80, - 0xf8, 0x77, 0xc6, 0x7e, 0x11, 0xbb, 0xf8, 0x4f, 0xf0, 0xd7, - 0x53, 0x8f, 0x59, 0xb6, 0xbe, 0x64, 0x3a, 0xd6, 0xbd, 0x65, - 0x29, 0x30, 0x6c, 0x56, 0xd, 0xf6, 0x78, 0x98, 0x7d, 0xfc, - 0x90, 0x37, 0x30, 0xf9, 0x71, 0xc7, 0x39, 0x38, 0xfc, 0xc0, - 0x12, 0xba, 0xc6, 0xd1, 0x87, 0x61, 0x1b, 0x10, 0x59, 0x1, - 0xe0, 0x91, 0xd3, 0x22, 0xbd, 0x33, 0xe0, 0x1f, 0xec, 0xe5, - 0xe3, 0x9f, 0xda, 0x43, 0xc6, 0x50, 0x78, 0x7f, 0xc1, 0xba, - 0x4c, 0x97, 0x44, 0xb7, 0xfa, 0x4e, 0xa3, 0x2a, 0x95, 0xb4, - 0xb3, 0x4e, 0xed, 0x2c, 0x98, 0xc0, 0xf6, 0x1d, 0x4f, 0x60, - 0x68, 0xb, 0xf4, 0x3b, 0xbf, 0xd8, 0x3f, 0xf6, 0x70, 0x9f, - 0xf6, 0x92, 0xf8, 0xff, 00, 0xa3, 0x69, 0x33, 0xc2, 0xe7, - 0xc3, 0x7a, 0x53, 0x2e, 0xa7, 0xac, 0x4e, 0x17, 0x2a, 0x21, - 0x46, 0x5, 0x62, 0xcf, 0x4c, 0xc8, 0xd8, 0x5c, 0x7a, 0x16, - 0x3d, 0xab, 0xfa, 0xd, 0x44, 0x58, 0x91, 0x51, 0x14, 0x2a, - 0xa8, 0xc0, 0x3, 0xa0, 0x15, 0xe2, 0xff, 00, 0xb2, 0x8f, - 0xec, 0xb7, 0xe1, 0xaf, 0xd9, 0x53, 0xe1, 0xa4, 0x3e, 0x1b, - 0xd1, 0x7f, 0xd3, 0x35, 0x3b, 0x82, 0x27, 0xd5, 0x75, 0x67, - 0x5c, 0x49, 0x79, 0x3e, 0x31, 0x9f, 0x64, 0x1d, 0x15, 0x7b, - 0xf, 0x72, 0x4d, 0x7b, 0x43, 0xba, 0xc6, 0x8c, 0xec, 0x42, - 0xaa, 0x8c, 0x92, 0x7b, 0xa, 0x96, 0xcb, 0x4a, 0xc7, 0x81, - 0xfe, 0xd2, 0x9e, 0x23, 0x13, 0x5e, 0xe9, 0x9a, 0x24, 0x6f, - 0x91, 0x8, 0x37, 0x33, 0x1, 0xfd, 0xe3, 0xc2, 0x8f, 0xcb, - 0x77, 0xe7, 0x5e, 0x25, 0x5b, 0xbe, 0x39, 0xd7, 0xcf, 0x8a, - 0x3c, 0x5b, 0xaa, 0x6a, 0x79, 0x26, 0x39, 0xa6, 0x3e, 0x5e, - 0x7f, 0xb8, 0x3e, 0x55, 0xfd, 00, 0xac, 0x2a, 0xfc, 0x4b, - 0x33, 0xc4, 0xfd, 0x6f, 0x17, 0x52, 0xaf, 0x4b, 0xe9, 0xe8, - 0xb4, 0x47, 0xc9, 0x62, 0x2a, 0x7b, 0x5a, 0xb2, 0x90, 0x51, - 0x45, 0x15, 0xe6, 0x18, 0x16, 0xec, 0x74, 0x8b, 0xed, 0x50, - 0x39, 0xb3, 0xb2, 0xb8, 0xbb, 0x9, 0x8d, 0xde, 0x44, 0x4c, - 0xfb, 0x73, 0xd3, 0x38, 0x1c, 0x54, 0xd2, 0x78, 0x6f, 0x57, - 0x88, 0x65, 0xf4, 0xab, 0xd4, 0x1e, 0xad, 0x6c, 0xe3, 0xfa, - 0x57, 0xd2, 0x1f, 00, 0x74, 0xf, 0xec, 0x8f, 0x2, 0x47, - 0x74, 0xe9, 0xb6, 0x6d, 0x42, 0x56, 0x9c, 0x92, 0x39, 0xd8, - 0x3e, 0x55, 0xfd, 0x1, 0x3f, 0x8d, 0x7a, 0x55, 0x7d, 0xd6, - 0x13, 0x86, 0xa3, 0x88, 0xc3, 0xc2, 0xac, 0xea, 0x34, 0xe4, - 0xaf, 0x6b, 0x77, 0x3d, 0x8a, 0x58, 0x5, 0x38, 0x29, 0x39, - 0x5a, 0xe7, 0xc3, 0x12, 0xc1, 0x2c, 0x7, 0x12, 0xc6, 0xf1, - 0x9f, 0x47, 0x52, 0x2a, 0x3a, 0xfb, 0x96, 0xe2, 0xce, 0xde, - 0xed, 0xa, 0x4f, 0x4, 0x73, 0x21, 0xfe, 0x19, 0x10, 0x30, - 0xfd, 0x6b, 0x8c, 0xf1, 0x3f, 0xc1, 0xaf, 0xc, 0xf8, 0x8e, - 0xde, 0x40, 0x96, 0x11, 0xe9, 0xb7, 0x44, 0x1d, 0xb7, 0x16, - 0x6a, 0x10, 0x83, 0xee, 0xa3, 0x83, 0xf9, 0x54, 0xd6, 0xe1, - 0x6a, 0xb1, 0x57, 0xa3, 0x51, 0x3f, 0x26, 0xad, 0xfe, 0x62, - 0x9e, 0x5d, 0x24, 0xbd, 0xd9, 0x5c, 0xf9, 0x36, 0x8a, 0xd4, - 0xf1, 0x3f, 0x87, 0xae, 0x7c, 0x2b, 0xaf, 0x5e, 0x69, 0x57, - 0x78, 0x33, 0x5b, 0x3e, 0xd2, 0xcb, 0xd1, 0x81, 0x19, 0xc, - 0x3e, 0xa0, 0x83, 0x59, 0x75, 0xf1, 0x53, 0x84, 0xa9, 0xc9, - 0xc2, 0x4a, 0xcd, 0x68, 0x79, 0x2d, 0x34, 0xec, 0xc2, 0x8a, - 0x28, 0xa8, 0x11, 0xe9, 0xbf, 00, 0x3c, 0x49, 0x36, 0x93, - 0xe3, 0x68, 0xf4, 0xed, 0xc7, 0xec, 0xba, 0x8a, 0x32, 0x32, - 0x76, 0xe, 0xa0, 0xb2, 0x9f, 0xd0, 0x8f, 0xc6, 0xbe, 0x9e, - 0xaf, 0x92, 0xbe, 0xb, 0xda, 0x3d, 0xdf, 0xc4, 0xad, 0x1b, - 0x68, 0x24, 0x46, 0xcf, 0x23, 0x11, 0xd8, 0x4, 0x6f, 0xfe, - 0xb5, 0x7d, 0x6b, 0x5f, 0xa9, 0xf0, 0xcc, 0xe7, 0x2c, 0x13, - 0x52, 0xd9, 0x49, 0xdb, 0xee, 0x4c, 0xfa, 0x2c, 0xbd, 0xb7, - 0x49, 0xa7, 0xdc, 0xa5, 0xad, 0xea, 0x71, 0xe8, 0xda, 0x3d, - 0xed, 0xfc, 0xa7, 0x11, 0xdb, 0x42, 0xf2, 0x9c, 0xff, 00, - 0xb2, 0x9, 0xaf, 0x89, 0xae, 0xae, 0x64, 0xbd, 0xb9, 0x9a, - 0xe2, 0x56, 0xdd, 0x2c, 0xae, 0x64, 0x76, 0xf5, 0x24, 0xe4, - 0xd7, 0xda, 0x3e, 0x28, 0xf0, 0xf4, 0x3e, 0x2a, 0xd0, 0xee, - 0x74, 0xbb, 0x89, 0xa6, 0x82, 0xb, 0x80, 0x3, 0xbc, 0x4, - 0x6, 0xc0, 0x20, 0xe3, 0x90, 0x7d, 0x2b, 0xcd, 0xa4, 0xfd, - 0x9a, 0xb4, 0x16, 0xfb, 0x9a, 0x9e, 0xa0, 0xbf, 0x52, 0x87, - 0xff, 00, 0x65, 0xa8, 0xcf, 0x72, 0xfc, 0x5e, 0x61, 0x28, - 0x2a, 0x9, 0x72, 0xc6, 0xfd, 0x7a, 0xb1, 0x63, 0x28, 0x55, - 0xac, 0xd7, 0x22, 0xd1, 0x1f, 0x39, 0x51, 0x5f, 0x42, 0x49, - 0xfb, 0x33, 0x69, 0x87, 0xee, 0x6b, 0x57, 0x6b, 0xfe, 0xf4, - 0x6a, 0x6a, 0xb4, 0x9f, 0xb3, 0x1c, 0x7, 0xee, 0x6b, 0xf2, - 0xf, 0xf7, 0xad, 0x81, 0xff, 00, 0xd9, 0xab, 0xe4, 0x9f, - 0xf, 0xe6, 0x2b, 0xec, 0x7e, 0x2b, 0xfc, 0xcf, 0x33, 0xea, - 0x55, 0xfb, 0x7e, 0x27, 0x82, 0x51, 0x5e, 0x9b, 0xf1, 0x17, - 0xe0, 0xd2, 0x78, 0x3, 0x42, 0x1a, 0x8b, 0x6b, 0x3f, 0x6b, - 0x2f, 0x32, 0xc2, 0x90, 0xfd, 0x9f, 0x61, 0x62, 0x72, 0x7a, - 0xee, 0x3d, 00, 0x3d, 0xab, 0xcc, 0xab, 0xc7, 0xc4, 0xe1, - 0x6b, 0x60, 0xea, 0x7b, 0x2a, 0xca, 0xcf, 0xe4, 0xff, 00, - 0x23, 0x96, 0xa5, 0x39, 0x52, 0x97, 0x2c, 0xd6, 0xa1, 0x45, - 0x14, 0x57, 0x21, 0x98, 0x51, 0x45, 0x7a, 0x44, 0x1f, 00, - 0x7c, 0x55, 0x73, 0x6b, 0xd, 0xc4, 0x6b, 0x66, 0x56, 0x54, - 0x59, 0x2, 0x99, 0xc8, 0x20, 0x11, 0x9c, 0x1e, 0x3a, 0xd7, - 0x55, 0xc, 0x2d, 0x7c, 0x4d, 0xfd, 0x8c, 0x1c, 0xad, 0xbd, - 0x8d, 0x21, 0x4e, 0x75, 0x3e, 0x5, 0x73, 0xcd, 0xe8, 0xaf, - 0x46, 0x93, 0xe0, 0xf, 0x8c, 0x13, 0xa5, 0xa5, 0xb3, 0xff, - 00, 0xbb, 0x72, 0xb5, 0x56, 0x5f, 0x81, 0xfe, 0x32, 0x8b, - 0xa6, 0x94, 0x1f, 0xfd, 0xcb, 0x88, 0xff, 00, 0xf8, 0xaa, - 0xe8, 0x79, 0x6e, 0x35, 0x6f, 0x46, 0x5f, 0x73, 0x2f, 0xd8, - 0x55, 0x5f, 0x65, 0xfd, 0xc7, 0x7, 0x5e, 0xd3, 0xfb, 0x34, - 0x69, 0x3e, 0x6e, 0xaf, 0xab, 0xea, 0x4c, 0xbc, 0x43, 0xa, - 0xc0, 0x8d, 0xee, 0xc7, 0x27, 0xf4, 0x51, 0xf9, 0xd7, 0x12, - 0xff, 00, 0x7, 0x3c, 0x64, 0x9d, 0x74, 0x29, 0x8f, 0xfb, - 0xb2, 0x46, 0x7f, 0xf6, 0x6a, 0xf7, 0x9f, 0x82, 0x9e, 0x12, - 0xb9, 0xf0, 0x9f, 0x83, 0x84, 0x77, 0xd0, 0x1b, 0x6b, 0xeb, - 0x89, 0x9e, 0x59, 0x63, 0x6e, 0xab, 0xfc, 0x2a, 0xf, 0xe0, - 0x33, 0xf8, 0xd7, 0xb7, 0x91, 0xe0, 0x2b, 0xac, 0x74, 0x67, - 0x56, 0xd, 0x28, 0xdd, 0xea, 0x9a, 0xf2, 0xfd, 0x4e, 0xbc, - 0x1d, 0x19, 0xfb, 0x64, 0xe4, 0xad, 0x63, 0xbf, 0xa2, 0x8a, - 0xf3, 0x4f, 0x8a, 0xff, 00, 0x17, 0xa0, 0xf0, 0x54, 0x6d, - 0xa7, 0x69, 0xfb, 0x6e, 0x35, 0xa7, 0x5c, 0xf3, 0xca, 0x40, - 0xf, 0x76, 0xf5, 0x3e, 0x83, 0xf3, 0xf7, 0xfd, 0x27, 0x13, - 0x89, 0xa5, 0x84, 0xa4, 0xea, 0xd6, 0x76, 0x48, 0xf7, 0xea, - 0x54, 0x8d, 0x28, 0xf3, 0x49, 0xe8, 0x74, 0xde, 0x33, 0xf8, - 0x83, 0xa3, 0xf8, 0x1a, 0xd3, 0xcc, 0xd4, 0x2e, 0x33, 0x70, - 0xcb, 0x98, 0xad, 0x63, 0xe6, 0x59, 0x3e, 0x83, 0xb0, 0xf7, - 0x3c, 0x57, 0xcf, 0xde, 0x32, 0xf8, 0xe3, 0xaf, 0xf8, 0xa3, - 0x7c, 0x36, 0xaf, 0xfd, 0x91, 0x62, 0x4f, 0xfa, 0xbb, 0x66, - 0x3e, 0x63, 0xf, 0xf6, 0x9f, 0xaf, 0xe5, 0x8a, 0xe1, 0x35, - 0x3d, 0x4e, 0xef, 0x59, 0xbd, 0x96, 0xf2, 0xfa, 0xe2, 0x4b, - 0xab, 0x99, 0x4e, 0x5e, 0x49, 0xe, 0x49, 0xff, 00, 0x3e, - 0x95, 0x56, 0xbf, 0x2f, 0xcc, 0x33, 0xec, 0x46, 0x31, 0xb8, - 0x53, 0x7c, 0x90, 0xec, 0xb7, 0x7e, 0xac, 0xf9, 0xda, 0xf8, - 0xca, 0x95, 0x74, 0x8e, 0x88, 0x57, 0x76, 0x91, 0x8b, 0x33, - 0x16, 0x62, 0x72, 0x49, 0x39, 0x26, 0x92, 0x8a, 0x2b, 0xe6, - 0x4e, 00, 0xa2, 0x8a, 0x96, 0xde, 0xd2, 0x7b, 0xc7, 0xd9, - 0x4, 0x32, 0x4e, 0xdf, 0xdd, 0x8d, 0xb, 0x1f, 0xd2, 0x9a, - 0x4d, 0xbb, 0x20, 0x22, 0xa2, 0xb5, 0x47, 0x84, 0xb5, 0xc2, - 0x32, 0x34, 0x5d, 0x47, 0x1e, 0xbf, 0x64, 0x93, 0xfc, 0x2a, - 0x95, 0xd6, 0x9f, 0x75, 0x62, 0x71, 0x73, 0x6d, 0x35, 0xb9, - 0xf4, 0x96, 0x32, 0xbf, 0xce, 0xae, 0x54, 0xe7, 0x15, 0x79, - 0x45, 0xaf, 0x90, 0xdc, 0x5a, 0xdd, 0x15, 0xe8, 0xa2, 0x8a, - 0xcc, 0x41, 0x57, 0x34, 0xad, 0x66, 0xfb, 0x43, 0xba, 0x5b, - 0x9d, 0x3e, 0xee, 0x6b, 0x39, 0xd4, 0xe7, 0x7c, 0x2e, 0x57, - 0x3f, 0x5f, 0x5f, 0xa1, 0xaa, 0x74, 0x55, 0x46, 0x4e, 0x2f, - 0x9a, 0x2e, 0xcc, 0x13, 0x6b, 0x54, 0x7b, 0xef, 0xc3, 0xef, - 0xda, 0x9, 0x2e, 0xe5, 0x8e, 0xc7, 0xc4, 0xc1, 0x20, 0x73, - 0x85, 0x5b, 0xf8, 0xc6, 0x14, 0x9f, 0xf6, 0xc7, 0x6f, 0xa8, - 0xe3, 0xd8, 0x57, 0xb6, 0x47, 0x22, 0x4d, 0x1a, 0xc9, 0x1b, - 0x7, 0x46, 0x19, 0x56, 0x53, 0x90, 0x47, 0xa8, 0x35, 0xf0, - 0xb5, 0x7a, 0xc7, 0xc1, 0x9f, 0x8b, 0x12, 0x78, 0x76, 0xf2, - 0x1d, 0x17, 0x55, 0x98, 0xbe, 0x93, 0x2b, 0x6d, 0x8a, 0x47, - 0x3f, 0xf1, 0xee, 0xc7, 0xa7, 0x3f, 0xdd, 0x3f, 0xa7, 0xe7, - 0x5f, 0x77, 0x94, 0x67, 0xf2, 0xe6, 0x58, 0x7c, 0x63, 0xba, - 0x7b, 0x4b, 0xfc, 0xff, 00, 0xcf, 0xef, 0x3d, 0x9c, 0x2e, - 0x35, 0xdd, 0x42, 0xaf, 0xde, 0x7d, 0x27, 0x45, 0x20, 0x20, - 0x8c, 0x8e, 0x41, 0xa5, 0xaf, 0xd0, 0xcf, 0x70, 0x28, 0xa2, - 0xaa, 0xea, 0x7a, 0x9d, 0xb6, 0x8d, 0xa7, 0xcf, 0x7b, 0x79, - 0x32, 0xc1, 0x6d, 0x2, 0x17, 0x92, 0x46, 0xe8, 00, 0xa4, - 0xda, 0x8a, 0xbb, 0xd8, 0x4d, 0xdb, 0x56, 0x59, 0x66, 0x8, - 0xa5, 0x98, 0x80, 0x7, 0x24, 0x9e, 0xd5, 0xe6, 0xfe, 0x30, - 0xf8, 0xed, 0xa0, 0x78, 0x6f, 0x7c, 0x36, 0x4d, 0xfd, 0xb1, - 0x7a, 0x38, 0xd9, 0x6e, 0xd8, 0x8d, 0x4f, 0xbb, 0xf4, 0xfc, - 0xb3, 0x5e, 0x45, 0xf1, 0x27, 0xe3, 0x16, 0xa1, 0xe3, 0x29, - 0xe5, 0xb4, 0xb1, 0x79, 0x2c, 0x34, 0x60, 0x70, 0x22, 0x53, - 0x87, 0x98, 0x7a, 0xb9, 0x1d, 0xbf, 0xd9, 0xe9, 0xf5, 0xaf, - 0x3a, 0xaf, 0x80, 0xcc, 0x78, 0x95, 0xa6, 0xe9, 0xe0, 0xd7, - 0xfd, 0xbc, 0xff, 00, 0x45, 0xfe, 0x7f, 0x71, 0xe2, 0xd7, - 0xc7, 0xbb, 0xf2, 0xd2, 0xfb, 0xcf, 0x47, 0xf1, 0x7, 0xc7, - 0xbf, 0x14, 0x6b, 0x3b, 0x92, 0xda, 0x68, 0xb4, 0xa8, 0x4f, - 0xf0, 0xda, 0xaf, 0xcd, 0xff, 00, 0x7d, 0x36, 0x4f, 0xe5, - 0x8a, 0xe1, 0x6f, 0xf5, 0xad, 0x43, 0x54, 0x62, 0xd7, 0x97, - 0xd7, 0x37, 0x64, 0xf7, 0x9a, 0x56, 0x7f, 0xe6, 0x6a, 0x95, - 0x15, 0xf1, 0x75, 0xf1, 0x98, 0x8c, 0x4b, 0xbd, 0x69, 0xb7, - 0xf3, 0xfd, 0xf, 0x26, 0x75, 0x67, 0x53, 0xe2, 0x77, 0xa, - 0x28, 0xa2, 0xb8, 0xcc, 0xc2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, - 0x28, 0xa0, 0xb, 0x76, 0x7a, 0xbd, 0xf6, 0x9c, 0xc1, 0xad, - 0x6f, 0x6e, 0x2d, 0x88, 0xef, 0xc, 0xac, 0x9f, 0xc8, 0xd7, - 0x5b, 0xa2, 0x7c, 0x68, 0xf1, 0x6e, 0x8a, 0x55, 0x57, 0x53, - 0x6b, 0xd8, 0xc7, 0x1e, 0x5d, 0xe2, 0x89, 0x33, 0xf8, 0xfd, - 0xef, 0xd6, 0xb8, 0x7a, 0xdb, 0xf0, 0x4e, 0x96, 0x75, 0xaf, - 0x17, 0x68, 0xf6, 0x41, 0x77, 0x9, 0x6e, 0xa3, 0xc, 0x3f, - 0xd9, 0x7, 0x2d, 0xfa, 0x3, 0x5d, 0xd8, 0x6a, 0xf8, 0x88, - 0x54, 0x8c, 0x68, 0xcd, 0xa6, 0xdd, 0xb4, 0x66, 0xb4, 0xe7, - 0x35, 0x24, 0xa0, 0xec, 0x7d, 0x8d, 0xa5, 0xcb, 0x71, 0x3e, - 0x9b, 0x6b, 0x25, 0xda, 0xaa, 0x5d, 0x3c, 0x4a, 0xd2, 0xaa, - 0xc, 00, 0xc4, 0xc, 0x81, 0xf8, 0xd5, 0x9c, 0x73, 0x9a, - 0x5a, 0x2b, 0xf7, 0x14, 0xac, 0x92, 0x3e, 0xbd, 0x5, 0x14, - 0x51, 0x4c, 0x61, 0x58, 0xfe, 0x2e, 0x97, 0xca, 0xf0, 0xed, - 0xeb, 0x74, 0xf9, 0xd, 0x6c, 0x57, 0x33, 0xf1, 0x12, 0x6f, - 0x27, 0xc2, 0xb7, 0x7d, 0xb2, 0x31, 0x58, 0xd6, 0x7c, 0xb4, - 0xe4, 0xfc, 0x8c, 0xea, 0x3b, 0x41, 0xb3, 0xe1, 0x4f, 0x88, - 0x13, 0x79, 0xde, 0x22, 0xbb, 0x6f, 0xf6, 0x8d, 0x78, 0x7, - 0xc6, 0x8b, 0x8f, 0x2f, 0x47, 0x9b, 0x9f, 0xe1, 0x35, 0xee, - 0x5e, 0x2e, 0x97, 0xcd, 0xd6, 0x6f, 0x1b, 0xfd, 0xb3, 0x5f, - 0x3c, 0x7c, 0x78, 0xb9, 0xf2, 0xb4, 0x6b, 0x9f, 0x68, 0xcf, - 0xf2, 0xaf, 0xcd, 0xb2, 0xc5, 0xcd, 0x5e, 0xfe, 0xa7, 0xe2, - 0x18, 0xbf, 0xde, 0xe3, 0xe9, 0xc7, 0xbc, 0xd7, 0xe6, 0x7e, - 0x94, 0xfc, 0xc, 0xf0, 0x98, 0x5f, 0x82, 0x7f, 0xf, 0x84, - 0x90, 0xb0, 0x90, 0x78, 0x7b, 0x4f, 0xd, 0x91, 0xce, 0x7e, - 0xcd, 0x1e, 0x68, 0xaf, 0x59, 0xf8, 0x75, 0x66, 0x2c, 0xfe, - 0x1f, 0x78, 0x62, 0xdc, 0xc6, 0x10, 0xc5, 0xa5, 0xda, 0xc7, - 0xb7, 0x1d, 0x31, 0x12, 0x8c, 0x51, 0x5f, 0xa6, 0x24, 0x7e, - 0xe0, 0xa3, 0xa1, 0xd1, 0xd1, 0x45, 0x15, 0x65, 0x85, 0x14, - 0x51, 0x40, 0x5, 0x7c, 0x4d, 0xfb, 0x4b, 0xf8, 0xc4, 0xf8, - 0xa3, 0xe2, 0x65, 0xcd, 0xac, 0x6e, 0x1a, 0xd3, 0x49, 0x51, - 0x69, 0x1e, 0x31, 0x8d, 0xfd, 0x5c, 0xe4, 0x7b, 0x9c, 0x7e, - 0x15, 0xf5, 0xdf, 0x8e, 0xfc, 0x51, 0xf, 0x82, 0xfc, 0x21, - 0xaa, 0xeb, 0x33, 0x9f, 0x96, 0xd2, 0x6, 0x75, 0x5c, 0xe3, - 0x73, 0xe3, 0xa, 0xa3, 0xdc, 0x9c, 0x57, 0xe7, 0x9b, 0xcb, - 0x3e, 0xa5, 0x7a, 0xf3, 0x4c, 0xc6, 0x5b, 0x9b, 0x89, 0xb, - 0xbb, 0x1e, 0xac, 0xcc, 0x72, 0x4f, 0xe6, 0x6b, 0xe4, 0x78, - 0x83, 0x13, 0xcb, 0x4e, 0x34, 0x17, 0x5d, 0x5f, 0xa2, 0x3e, - 0x33, 0x88, 0xf1, 0x36, 0x84, 0x30, 0xd1, 0xde, 0x5a, 0xbf, - 0x45, 0xb7, 0xe3, 0xf9, 0x1e, 0xfb, 0xfb, 0x27, 0x78, 0x3f, - 0xed, 0xba, 0xdd, 0xe6, 0xb5, 0x32, 0xe6, 0x3b, 0x65, 0xdb, - 0x1e, 0x47, 0xf1, 0x1a, 0xfa, 0xb6, 0xbc, 0xff, 00, 0xe0, - 0x77, 0x85, 0x7, 0x85, 0x7e, 0x1f, 0xe9, 0xf1, 0x32, 0x6d, - 0x9e, 0x75, 0xf3, 0xa4, 0xfa, 0x9a, 0xf4, 0xa, 0xf5, 0xf2, - 0xac, 0x3f, 0xd5, 0xb0, 0x90, 0x8b, 0xdd, 0xea, 0xfe, 0x67, - 0xd0, 0x65, 0xb8, 0x7f, 0xaa, 0xe1, 0x61, 0xe, 0xbb, 0xbf, - 0x98, 0x51, 0x45, 0x15, 0xeb, 0x9e, 0x98, 0x51, 0x45, 0x14, - 00, 0x53, 0x26, 0x86, 0x3b, 0x98, 0x64, 0x86, 0x68, 0xd6, - 0x58, 0xa4, 0x52, 0xae, 0x8e, 0x32, 0xac, 0xf, 0x4, 0x11, - 0xdc, 0x56, 0x5f, 0x8a, 0xfc, 0x5b, 0xa3, 0x78, 0x1b, 0xc3, - 0xf7, 0xba, 0xe7, 0x88, 0x35, 0x3b, 0x5d, 0x1f, 0x48, 0xb2, - 0x8c, 0xcb, 0x71, 0x7b, 0x79, 0x20, 0x8e, 0x38, 0xd4, 0x77, - 0x24, 0xd7, 0xe7, 0xf7, 0xc6, 0xdf, 0xf8, 0x2c, 0x9f, 0x82, - 0xfc, 0x31, 0x3c, 0xd6, 0x1f, 0xd, 0xbc, 0x39, 0x73, 0xe3, - 0xb, 0x84, 0x3b, 0x7f, 0xb4, 0xb5, 0x16, 0x36, 0x96, 0x9f, - 0x55, 0x5c, 0x19, 0x1f, 0xf1, 0xb, 0x40, 0x1e, 0x85, 0xf1, - 0x93, 0xfe, 0x9, 0x37, 0xf0, 0x6b, 0xe2, 0x76, 0xa3, 0x73, - 0xa9, 0xe8, 0x9f, 0xda, 0x3e, 0x3, 0xd4, 0x6e, 0x1c, 0xc9, - 0x20, 0xd2, 0x1d, 0x5e, 0xd4, 0xb1, 0xeb, 0xfb, 0x97, 0x4, - 0x2f, 0xd1, 0xa, 0x8a, 0xf0, 0xd9, 0xbf, 0xe0, 0x88, 0xb0, - 0xfd, 0xb3, 0x31, 0x7c, 0x58, 0x90, 0x5a, 0x67, 0xa3, 0xe8, - 0xa0, 0xc9, 0x8f, 0xa8, 0x9b, 0x15, 0xe2, 0x1a, 0xa7, 0xfc, - 0x16, 0xf, 0xe3, 0xc5, 0xf4, 0xcc, 0xd6, 0xd0, 0x78, 0x57, - 0x4e, 0x8c, 0xfd, 0xd4, 0x87, 0x4c, 0x76, 0xc7, 0xe2, 0xf2, - 0xb6, 0x6b, 0xed, 0xf, 0xf8, 0x26, 0xc7, 0xed, 0x35, 0xf1, - 0x77, 0xf6, 0xa3, 0x93, 0xc5, 0xba, 0xcf, 0x8e, 0x2e, 0xb4, - 0xb6, 0xf0, 0xde, 0x91, 0xe5, 0x5a, 0x5b, 0x8b, 0x1b, 0x11, - 0xb, 0xcb, 0x74, 0xff, 00, 0x33, 0x65, 0xb2, 0x78, 0x54, - 0x3, 0x81, 0xfd, 0xf1, 0x4f, 0x52, 0x74, 0x65, 0xf, 0x87, - 0x1f, 0xf0, 0x47, 0x3f, 0x84, 0x5e, 0x16, 0xb8, 0x4b, 0x8f, - 0x13, 0xeb, 0x1a, 0xef, 0x8c, 0xa4, 0x52, 0xf, 0x91, 0x2c, - 0xab, 0x67, 0x6e, 0x48, 0xf5, 0x58, 0xfe, 0x7f, 0xfc, 0x7e, - 0xbe, 0xd5, 0xf0, 0x27, 0xc3, 0xef, 0xd, 0xfc, 0x31, 0xf0, - 0xe5, 0xb6, 0x81, 0xe1, 0x4d, 0x12, 0xcb, 0x40, 0xd1, 0xed, - 0x86, 0x23, 0xb4, 0xb1, 0x88, 0x46, 0x83, 0xd4, 0x9c, 0x75, - 0x27, 0xb9, 0x39, 0x26, 0xbc, 0x43, 0xc5, 0x7f, 0xf0, 0x50, - 0xef, 0x80, 0xbe, 0x6, 0xf1, 0x76, 0xaf, 0xe1, 0x8d, 0x7b, - 0xc6, 0xaf, 0xa6, 0x6b, 0x5a, 0x55, 0xd4, 0x96, 0x77, 0x96, - 0xd2, 0xe9, 0x77, 0x67, 0xcb, 0x95, 0x1b, 0x6b, 0xd, 0xc2, - 0x22, 0xa7, 0x91, 0xd4, 0x1c, 0x1a, 0xf5, 0xbf, 0x84, 0xbf, - 0x19, 0xbc, 0x1d, 0xf1, 0xcf, 0xc2, 0xed, 0xe2, 0x2f, 0x3, - 0xeb, 0x51, 0xeb, 0xba, 0x3a, 0xdc, 0x35, 0xab, 0x5c, 0xc7, - 0x1b, 0xc6, 0x4, 0x8a, 0x1, 0x65, 0xc3, 0xa8, 0x3c, 0x6, - 0x1d, 0xbb, 0xd2, 0x19, 0xda, 0xd7, 0x11, 0xf1, 0x93, 0xc4, - 0x43, 0xc3, 0xbe, 0x1, 0xd4, 0x59, 0x5f, 0x6c, 0xf7, 0x4b, - 0xf6, 0x58, 0xb9, 0xe7, 0x2f, 0xc1, 0xfc, 0x97, 0x71, 0xae, - 0xde, 0xbe, 0x76, 0xfd, 0xa4, 0x7c, 0x43, 0xf6, 0xcd, 0x7e, - 0xc3, 0x48, 0x8d, 0xf2, 0x96, 0x91, 0x19, 0x64, 0x3, 0xfb, - 0xef, 0xd3, 0xf2, 00, 0x7e, 0x75, 0xe2, 0xe7, 0x18, 0x9f, - 0xaa, 0xe0, 0xa7, 0x35, 0xbb, 0xd1, 0x7a, 0xbf, 0xea, 0xe7, - 0x2e, 0x2a, 0xa7, 0xb3, 0xa4, 0xdf, 0xc8, 0xf1, 0xda, 0x28, - 0xa2, 0xbf, 0x19, 0x3e, 0x54, 0x2a, 0xe6, 0x8f, 0xa6, 0x49, - 0xac, 0xea, 0xd6, 0x76, 0x10, 0x82, 0x65, 0xb9, 0x99, 0x22, - 0x5c, 0x76, 0xdc, 0x40, 0xcd, 0x53, 0xaf, 0x44, 0xf8, 0x18, - 0x9a, 0x64, 0x3e, 0x33, 0xfb, 0x7e, 0xa9, 0x79, 0x6d, 0x67, - 0x15, 0x9c, 0x4c, 0xf1, 0x1b, 0x89, 0x42, 0x6, 0x90, 0xfc, - 0xa3, 0x19, 0xeb, 0x80, 0x58, 0xfe, 0x55, 0xd7, 0x84, 0xa2, - 0xb1, 0x18, 0x88, 0x52, 0x6e, 0xc9, 0xbd, 0x7d, 0x3a, 0x9a, - 0x52, 0x8f, 0x3c, 0xd4, 0x59, 0xf4, 0xfe, 0x9f, 0x63, 0x16, - 0x99, 0x61, 0x6f, 0x69, 0x2, 0xec, 0x86, 0x8, 0xd6, 0x24, - 0x51, 0xd8, 0x1, 0x81, 0x56, 0x2b, 0x2a, 0x3f, 0x16, 0x68, - 0x93, 0x7d, 0xcd, 0x5e, 0xc5, 0xff, 00, 0xdd, 0xb9, 0x43, - 0xfd, 0x6a, 0x43, 0xe2, 0x4d, 0x25, 0x46, 0x4e, 0xa9, 0x66, - 0x7, 0xaf, 0x9e, 0x9f, 0xe3, 0x5f, 0xb7, 0xc6, 0xa5, 0x24, - 0xac, 0xa4, 0xad, 0xea, 0x7d, 0x72, 0x94, 0x6d, 0xa3, 0x34, - 0x69, 0x9, 0xa, 0x9, 0x27, 00, 0x72, 0x49, 0xae, 0x5b, - 0x55, 0xf8, 0xa5, 0xe1, 0x5d, 0x1a, 0x36, 0x69, 0xf5, 0xbb, - 0x57, 0x23, 0xf8, 0x20, 0x7f, 0x35, 0xbf, 0x25, 0xcd, 0x78, - 0xf7, 0xc4, 0x9f, 0x8f, 0x12, 0x6b, 0xf6, 0xb2, 0xe9, 0x9a, - 0xa, 0x49, 0x69, 0x67, 0x20, 0x29, 0x2d, 0xd4, 0x9c, 0x49, - 0x22, 0x9e, 0xa1, 0x47, 0xf0, 0x8f, 0x7e, 0xbf, 0x4a, 0xf3, - 0x71, 0x99, 0xb6, 0x13, 0x7, 0x6, 0xe5, 0x34, 0xdf, 0x64, - 0xee, 0xcc, 0x2a, 0xe2, 0x69, 0xd2, 0x57, 0x6e, 0xec, 0xe2, - 0x3e, 0x27, 0x78, 0x82, 0x2f, 0x13, 0xf8, 0xe7, 0x55, 0xbf, - 0x80, 0x83, 0x6e, 0xd2, 0x8, 0xe3, 0x61, 0xfc, 0x4a, 0x80, - 0x28, 0x3f, 0x8e, 0x33, 0xf8, 0xd7, 0x2d, 0x45, 0x15, 0xf8, - 0xed, 0x6a, 0xb2, 0xaf, 0x52, 0x55, 0x65, 0xbc, 0x9b, 0x7f, - 0x79, 0xf2, 0xd2, 0x93, 0x9c, 0x9c, 0x9f, 0x50, 0xa2, 0x8a, - 0xe9, 0x3c, 0x7, 0xe0, 0x6b, 0xdf, 0x1e, 0x6b, 0x69, 0x65, - 0x6a, 0xc, 0x70, 0x2f, 0xcd, 0x3d, 0xc1, 0x1f, 0x2c, 0x49, - 0xfe, 0x27, 0xb0, 0xa5, 0x4a, 0x94, 0xeb, 0xcd, 0x53, 0xa6, - 0xae, 0xd8, 0x46, 0x2e, 0x6d, 0x46, 0x3b, 0x9e, 0xab, 0xfb, - 0x36, 0xf8, 0x58, 0xa4, 0x57, 0xfa, 0xfc, 0xc8, 0x41, 0x7f, - 0xf4, 0x6b, 0x72, 0x47, 0x51, 0xc1, 0x72, 0x3f, 0x1c, 0xf, - 0xc0, 0xd7, 0xb9, 0x55, 0x3d, 0x23, 0x4a, 0xb6, 0xd0, 0xf4, - 0xcb, 0x6b, 0xb, 0x38, 0xc4, 0x56, 0xd6, 0xf1, 0x88, 0xd1, - 0x47, 0xa0, 0xfe, 0xb5, 0x72, 0xbf, 0x6a, 0xcb, 0xf0, 0x8b, - 0x3, 0x86, 0x85, 0x5, 0xba, 0xdf, 0xd7, 0xa9, 0xf5, 0x94, - 0x29, 0x7b, 0x1a, 0x6a, 0x1, 0x45, 0x14, 0x57, 0xa2, 0x6e, - 0x14, 0x51, 0x45, 00, 0x7c, 0xf7, 0xfb, 0x4a, 0xeb, 0xa6, - 0x7d, 0x67, 0x4c, 0xd2, 0x11, 0xbe, 0x4b, 0x78, 0x8d, 0xc3, - 0x8f, 0xf6, 0x98, 0xe0, 0x7e, 0x41, 0x4f, 0xe7, 0x5e, 0x31, - 0x5d, 0x3f, 0xc4, 0xcd, 0x77, 0xfe, 0x12, 0x3f, 0x1c, 0xea, - 0xf7, 0x81, 0xb7, 0x45, 0xe7, 0x18, 0xa3, 0x3f, 0xec, 0x27, - 0xca, 0x3f, 0x96, 0x7f, 0x1a, 0xe6, 0x2b, 0xf1, 0x3c, 0xcf, - 0x11, 0xf5, 0x9c, 0x65, 0x4a, 0x8b, 0x6b, 0xe9, 0xe8, 0xb4, - 0x47, 0xc9, 0x62, 0x27, 0xed, 0x2a, 0xca, 0x41, 0x45, 0x14, - 0x57, 0x96, 0x73, 0x9b, 0x3e, 0xd, 0xd0, 0xcf, 0x89, 0x3c, - 0x55, 0xa5, 0xe9, 0xb8, 0xca, 0xdc, 0x4e, 0xaa, 0xff, 00, - 0xee, 0xe, 0x5b, 0xf4, 0x6, 0xbe, 0xd1, 0x55, 0xa, 0xa0, - 0x1, 0x80, 0x6, 00, 0xaf, 0x9a, 0xff, 00, 0x67, 0x4d, - 0x18, 0xdf, 0x78, 0xce, 0x7b, 0xf6, 0x5c, 0xc7, 0x63, 0x6e, - 0xc4, 0x1f, 0xf6, 0xdf, 0xe5, 0x1f, 0xa6, 0xea, 0xfa, 0x56, - 0xbf, 0x50, 0xe1, 0x8a, 0x1e, 0xcf, 0xb, 0x2a, 0xaf, 0x79, - 0x3f, 0xc1, 0x7f, 0xc1, 0xb9, 0xf4, 0x19, 0x7c, 0x2d, 0x4d, - 0xcb, 0xb8, 0x51, 0x45, 0x15, 0xf6, 0x7, 0xaa, 0x14, 0x51, - 0x55, 0xb5, 0x1d, 0x42, 0xd, 0x2a, 0xc2, 0xe2, 0xf6, 0xe5, - 0xc4, 0x76, 0xf6, 0xf1, 0xb4, 0xb2, 0x39, 0xec, 0xa0, 0x64, - 0xd2, 0x6d, 0x45, 0x5d, 0x83, 0x76, 0xd4, 0xe3, 0x3e, 0x2d, - 0x7c, 0x47, 0x4f, 0x1, 0x68, 0xaa, 0xb6, 0xfb, 0x5f, 0x55, - 0xba, 0x5, 0x60, 0x43, 0xce, 0xc1, 0xdd, 0xc8, 0xf4, 0x1d, - 0xbd, 0x4d, 0x7c, 0xab, 0x73, 0x73, 0x2d, 0xe5, 0xc4, 0xb3, - 0xcf, 0x23, 0x4b, 0x34, 0xac, 0x5d, 0xe4, 0x73, 0x92, 0xc4, - 0xf5, 0x26, 0xb6, 0x3c, 0x6d, 0xe2, 0xa9, 0xfc, 0x65, 0xe2, - 0x4b, 0xcd, 0x52, 0x72, 0x42, 0xc8, 0xdb, 0x62, 0x8c, 0xff, - 00, 0xcb, 0x38, 0xc7, 0xdd, 0x5f, 0xcb, 0xf5, 0x26, 0xb0, - 0xab, 0xf1, 0xdc, 0xdf, 0x32, 0x96, 0x61, 0x5d, 0xb4, 0xfd, - 0xc5, 0xb2, 0xfd, 0x7e, 0x67, 0xcb, 0x62, 0x6b, 0xba, 0xf3, - 0xf2, 0x5b, 0x5, 0x14, 0x51, 0x5e, 0x11, 0xc6, 0x15, 0xa7, - 0xe1, 0xdf, 0xe, 0x6a, 0x1e, 0x2a, 0xd5, 0x22, 0xb0, 0xd3, - 0x6d, 0xda, 0x79, 0xdc, 0xf6, 0xfb, 0xa8, 0x3f, 0xbc, 0xc7, - 0xb0, 0xf7, 0xa8, 0x34, 0x7d, 0x22, 0xeb, 0x5e, 0xd4, 0xed, - 0xb4, 0xfb, 0x28, 0x8c, 0xd7, 0x57, 0xe, 0x11, 0x10, 0x7a, - 0xfb, 0xfb, 0xe, 0xb5, 0xf5, 0xc7, 0xc3, 0xff, 00, 0x1, - 0xd9, 0x78, 0xb, 0x45, 0x5b, 0x4b, 0x71, 0xbe, 0xe6, 0x40, - 0x1a, 0xe6, 0xe0, 0xf5, 0x91, 0xf1, 0xfa, 0x1, 0xd8, 0x57, - 0xbf, 0x94, 0xe5, 0x52, 0xcc, 0xaa, 0x5d, 0xe9, 0x5, 0xbb, - 0xfd, 0x17, 0xf5, 0xa1, 0xdb, 0x86, 0xc3, 0x3a, 0xf2, 0xd7, - 0x64, 0x71, 0xde, 0xf, 0xfd, 0x9f, 0x34, 0x6d, 0x26, 0x28, - 0xe6, 0xd6, 0x98, 0xea, 0xd7, 0x9d, 0x4c, 0x79, 0x2b, 0xa, - 0x9f, 0x4c, 0x75, 0x6f, 0xc7, 0xf2, 0xaf, 0x50, 0xb2, 0xd3, - 0xed, 0x74, 0xd8, 0x16, 0x1b, 0x4b, 0x68, 0xad, 0xa2, 0x51, - 0x80, 0x91, 0x20, 0x50, 0x3f, 0x1, 0x56, 0x28, 0xaf, 0xd5, - 0x30, 0xd8, 0x2c, 0x3e, 0x12, 0x3c, 0xb4, 0x60, 0x97, 0xe7, - 0xf7, 0x9f, 0x45, 0x4e, 0x94, 0x29, 0x2b, 0x41, 0x58, 0x2a, - 0x2b, 0x8b, 0x58, 0x6e, 0xe2, 0x68, 0xe7, 0x89, 0x26, 0x8d, - 0x86, 0xa, 0x48, 0xa1, 0x81, 0xfc, 0xd, 0x4b, 0x45, 0x76, - 0x34, 0x9e, 0x8c, 0xd8, 0xf2, 0xef, 0x1a, 0xfc, 0x5, 0xd1, - 0x75, 0xe8, 0x65, 0x9f, 0x49, 0x51, 0xa4, 0xea, 0x7, 0x2c, - 0x2, 0x67, 0xc9, 0x73, 0xe8, 0x57, 0xb7, 0xd4, 0x7e, 0x46, - 0xbe, 0x72, 0xd6, 0x74, 0x6b, 0xcf, 0xf, 0xea, 0x73, 0xd8, - 0x5f, 0xc0, 0xd6, 0xf7, 0x50, 0xb6, 0xd7, 0x46, 0xfe, 0x63, - 0xd4, 0x1f, 0x5a, 0xfb, 0x7a, 0xbc, 0x83, 0xf6, 0x87, 0xf0, - 0x7c, 0x5a, 0x87, 0x87, 0xd3, 0x5e, 0x89, 0x31, 0x77, 0x64, - 0x55, 0x25, 0x61, 0xfc, 0x51, 0x31, 0xc7, 0x3f, 0x42, 0x47, - 0xe6, 0x6b, 0xe2, 0xf3, 0xcc, 0x9a, 0x94, 0xa8, 0xcb, 0x13, - 0x87, 0x8f, 0x2c, 0xa3, 0xab, 0x4b, 0x66, 0xba, 0xfc, 0xcf, - 0x23, 0x19, 0x85, 0x8b, 0x8b, 0xa9, 0x5, 0x66, 0x8f, 0x9c, - 0xe8, 0xa2, 0x8a, 0xfc, 0xd0, 0xf0, 0x42, 0x8a, 0x28, 0xa0, - 0xf, 0xa8, 0x7e, 0x5, 0x78, 0xd2, 0x4f, 0x14, 0x78, 0x54, - 0xd9, 0xdd, 0x3e, 0xfb, 0xcd, 0x34, 0xac, 0x25, 0x89, 0xe5, - 0xe3, 0xc7, 0xc8, 0x4f, 0xbf, 0x4, 0x7e, 0x15, 0xe9, 0x55, - 0xf2, 0xd7, 0xc0, 0x5d, 0x71, 0xf4, 0x9f, 0x88, 0x16, 0xd6, - 0xfb, 0xb1, 0xd, 0xfa, 0x34, 0xe, 0x3b, 0x67, 0x1b, 0x94, - 0xfe, 0x63, 0x1f, 0x8d, 0x7d, 0x4b, 0x5f, 0xb0, 0x64, 0x58, - 0xb7, 0x8b, 0xc1, 0x45, 0xc9, 0xeb, 0x1d, 0x1f, 0xcb, 0x6f, - 0xc0, 0xfa, 0x7c, 0x1d, 0x47, 0x52, 0x92, 0xbe, 0xeb, 0x40, - 0xaf, 0x9c, 0x7e, 0x3f, 0xf8, 0xf1, 0xf5, 0x6d, 0x67, 0xfb, - 0x2, 0xd2, 0x42, 0x2c, 0xac, 0x88, 0x33, 0xed, 0x3c, 0x49, - 0x2f, 0xa7, 0xd1, 0x7f, 0x9e, 0x7d, 0x2b, 0xe8, 0x6d, 0x42, - 0xf1, 0x34, 0xfb, 0xb, 0x9b, 0xa9, 0xe, 0x12, 0x8, 0x9a, - 0x46, 0xfa, 00, 0x4f, 0xf4, 0xaf, 0x88, 0xef, 0xef, 0x24, - 0xd4, 0x6f, 0xae, 0x2e, 0xe6, 0x39, 0x96, 0x79, 0x1a, 0x57, - 0x3e, 0xec, 0x72, 0x7f, 0x9d, 0x79, 0x9c, 0x4d, 0x8b, 0x95, - 0x1a, 0x11, 0xa1, 0x7, 0xf1, 0xef, 0xe8, 0x8e, 0x7c, 0xc2, - 0xab, 0x8c, 0x14, 0x17, 0x52, 0xa, 0x28, 0xa2, 0xbf, 0x32, - 0x3c, 00, 0xa2, 0x8a, 0x96, 0xd2, 0xdd, 0xae, 0xee, 0xa1, - 0x81, 0x8, 0xf, 0x2b, 0xac, 0x60, 0x9e, 0x99, 0x27, 0x14, - 0xd2, 0x6d, 0xd9, 0x1, 0x7f, 0x40, 0xf0, 0xc6, 0xab, 0xe2, - 0x8b, 0xaf, 0xb3, 0xe9, 0x76, 0x33, 0x5e, 0x48, 0x3e, 0xf7, - 0x96, 0xbf, 0x2a, 0xff, 00, 0xbc, 0xdd, 0x7, 0xe3, 0x5e, - 0x8d, 0xa7, 0x7e, 0xcd, 0xfe, 0x20, 0xb9, 0x40, 0xd7, 0x57, - 0xb6, 0x56, 0x79, 0xfe, 0x1d, 0xcd, 0x23, 0xf, 0xc8, 0x63, - 0xf5, 0xaf, 0x7a, 0xf0, 0xb7, 0x86, 0xac, 0xfc, 0x27, 0xa1, - 0xda, 0xe9, 0xb6, 0x51, 0x85, 0x8e, 0x25, 0x1, 0x9b, 0x1c, - 0xc8, 0xdd, 0xd8, 0xfb, 0x93, 0x5a, 0xf5, 0xfa, 0x5e, 0x13, - 0x86, 0x70, 0xf0, 0x82, 0x78, 0x96, 0xe5, 0x2f, 0xb9, 0x7f, - 0x99, 0xef, 0xd2, 0xcb, 0xe0, 0x95, 0xea, 0x6a, 0xcf, 0x2, - 0x5f, 0xd9, 0x8e, 0xeb, 0x1f, 0x36, 0xbf, 0x8, 0x3e, 0xd6, - 0xc4, 0xff, 00, 0xec, 0xd4, 0xd7, 0xfd, 0x98, 0xef, 00, - 0xf9, 0x35, 0xe8, 0x9, 0xff, 00, 0x6a, 0xd9, 0x87, 0xfe, - 0xcd, 0x5e, 0xff, 00, 0x45, 0x7a, 0x5f, 0xea, 0xfe, 0x5d, - 0xff, 00, 0x3e, 0xff, 00, 0x17, 0xfe, 0x67, 0x47, 0xd4, - 0xa8, 0x76, 0xfc, 0x59, 0xf3, 0x8d, 0xd7, 0xec, 0xd7, 0xaf, - 0x44, 0x9, 0x83, 0x51, 0xb0, 0x9f, 0xd9, 0x8b, 0xa1, 0xff, - 00, 0xd0, 0x4d, 0x73, 0x3a, 0xb7, 0xc1, 0x7f, 0x17, 0x69, - 0x21, 0x99, 0xb4, 0xa6, 0xba, 0x41, 0xfc, 0x56, 0x8e, 0x24, - 0xfd, 0x7, 0x3f, 0xa5, 0x7d, 0x69, 0x45, 0x73, 0x54, 0xe1, - 0xac, 0xc, 0xd7, 0xb9, 0x78, 0xfc, 0xff, 00, 0xcc, 0xce, - 0x59, 0x7d, 0x17, 0xb5, 0xd1, 0xf0, 0xe5, 0xee, 0x9d, 0x77, - 0xa6, 0xc9, 0xe5, 0xdd, 0xda, 0xcd, 0x6b, 0x27, 0xf7, 0x66, - 0x8c, 0xa1, 0xfc, 0x8d, 0x7a, 0x5f, 0xec, 0xed, 0xa3, 0xb, - 0xff, 00, 0x1b, 0xcb, 0x78, 0xe3, 0x2b, 0x63, 0x6e, 0xce, - 0xa7, 0xd1, 0x9b, 0xe5, 0x1f, 0xa1, 0x6a, 0xfa, 0x3e, 0xff, - 00, 0x4d, 0xb4, 0xd5, 0x6d, 0xda, 0xb, 0xcb, 0x68, 0xae, - 0xa1, 0x61, 0x83, 0x1c, 0xc8, 0x18, 0x1f, 0xc0, 0xd6, 0x4f, - 0x86, 0xfc, 0xd, 0xa3, 0x78, 0x46, 0xea, 0xf6, 0x7d, 0x26, - 0xd3, 0xec, 0x8d, 0x77, 0xb7, 0xcc, 0x55, 0x62, 0x57, 0xe5, - 0xce, 0x30, 0xf, 0x4e, 0xa7, 0xa5, 0x71, 0x61, 0xb8, 0x71, - 0xe1, 0x71, 0x74, 0xeb, 0x29, 0xa9, 0x45, 0x3b, 0xeb, 0xa3, - 0xf2, 0xfc, 0x4c, 0x69, 0xe0, 0x1d, 0x3a, 0x91, 0x95, 0xee, - 0x91, 0xbf, 0x45, 0x14, 0x57, 0xdc, 0x1e, 0xc0, 0x51, 0x45, - 0x14, 00, 0x57, 0x13, 0xf1, 0x6e, 0xe3, 0xc8, 0xf0, 0xa4, - 0xe3, 0xfb, 0xc0, 0xd7, 0x6d, 0x5e, 0x6b, 0xf1, 0xca, 0xe3, - 0xc9, 0xf0, 0xbb, 0xc, 0xe3, 0x2a, 0xd5, 0xc5, 0x8d, 0x97, - 0x2e, 0x1e, 0x6f, 0xc8, 0xe7, 0xc4, 0x3b, 0x52, 0x93, 0xf2, - 0x3e, 0x20, 0xf1, 0x4, 0xbe, 0x65, 0xfd, 0xd3, 0x7a, 0xb9, - 0xaf, 0x9e, 0xfe, 0x34, 0xc4, 0x75, 0x29, 0x6d, 0xec, 0x14, - 0xe0, 0xdd, 0x4f, 0x1c, 00, 0xff, 00, 0xbc, 0xc1, 0x7f, - 0xad, 0x7b, 0xe6, 0xae, 0xfb, 0xa5, 0x98, 0xfa, 0xb1, 0xaf, - 0x12, 0xf1, 0x1d, 0xa7, 0xf6, 0xd7, 0xc5, 0x2f, 0x6, 0xe9, - 0xa3, 0xfe, 0x5e, 0xb5, 0xdb, 0x18, 0x78, 0xf7, 0x9d, 0x5, - 0x7c, 0x1e, 0x4d, 0x1b, 0xd4, 0x47, 0xe2, 0xf4, 0xd7, 0xb4, - 0xcd, 0x28, 0xaf, 0xef, 0x1f, 0xb2, 0xba, 0x6c, 0x1f, 0x65, - 0xd3, 0xed, 0x61, 0xff, 00, 0x9e, 0x71, 0x2a, 0x7e, 0x40, - 0xa, 0x2a, 0xcd, 0x15, 0xfa, 0x49, 0xfb, 0x80, 0x51, 0x45, - 0x14, 00, 0x51, 0x45, 0x21, 0x21, 0x41, 0x24, 0xe0, 0xe, - 0x49, 0xa0, 0xf, 0x9d, 0x7f, 0x6b, 0xdf, 0x1a, 0x2d, 0xb6, - 0x93, 0xa6, 0x78, 0x5e, 0x16, 0x6, 0x5b, 0xa7, 0xfb, 0x5d, - 0xc0, 0xd, 0xc8, 0x45, 0x38, 0x50, 0x47, 0xbb, 0x64, 0xff, - 00, 0xc0, 0x6b, 0xc3, 0xbe, 0x10, 0xf8, 0x59, 0xbc, 0x59, - 0xe3, 0xad, 0x36, 0xcf, 0x69, 0x68, 0x84, 0x81, 0xdf, 0x3, - 0xb0, 0xe6, 0x9d, 0xf1, 0xa3, 0xc6, 0x63, 0xc7, 0x7f, 0x11, - 0xf5, 0x5d, 0x46, 0x27, 0xdf, 0x67, 0x1b, 0x7d, 0x9a, 0xd8, - 0x83, 0x91, 0xe5, 0xa7, 00, 0x8f, 0x62, 0x77, 0x37, 0xe3, - 0x5e, 0xd3, 0xfb, 0x25, 0xf8, 0x3f, 0xca, 0xb7, 0xbe, 0xd7, - 0x66, 0x8c, 0x65, 0x8f, 0x95, 0x13, 0x11, 0xf9, 0xd7, 0xe7, - 0x55, 0x3f, 0xe1, 0x4f, 0x33, 0x51, 0x5a, 0xc6, 0xff, 00, - 0x82, 0xff, 00, 0x3f, 0xd4, 0xfc, 0xe6, 0x2f, 0xfb, 0x53, - 0x35, 0x72, 0xde, 0x29, 0xfe, 0xb, 0xfc, 0xcf, 0xa3, 0x60, - 0x85, 0x6d, 0xe1, 0x8e, 0x24, 0x18, 0x44, 0x50, 0xa0, 0x7b, - 0xa, 0x92, 0x8a, 0x2b, 0xf4, 0x5d, 0x8f, 0xd1, 0x82, 0x8a, - 0x28, 0xa0, 0x2, 0xb3, 0x3c, 0x4d, 0xe2, 0x4d, 0x33, 0xc1, - 0xde, 0x1e, 0xd4, 0x75, 0xcd, 0x66, 0xf2, 0x2d, 0x3f, 0x4a, - 0xd3, 0xe0, 0x7b, 0x9b, 0xab, 0xa9, 0x9b, 0x6a, 0x45, 0x1a, - 0x8c, 0xb3, 0x13, 0xf4, 0x15, 0xa7, 0x5f, 0x1, 0xff, 00, - 0xc1, 0x62, 0x3e, 0x30, 0xc9, 0xe0, 0xdf, 0x81, 0x1a, 0x3f, - 0x82, 0x2c, 0xa7, 0x31, 0xde, 0x78, 0xae, 0xfb, 0xfd, 0x20, - 0x2b, 0x60, 0xfd, 0x92, 0xc, 0x3b, 0xf, 0xa1, 0x73, 0x10, - 0xfa, 0x3, 0x40, 0x1f, 0x9e, 0x9f, 0xb6, 0x97, 0xed, 0x9b, - 0xe2, 0x4f, 0xda, 0xaf, 0xc7, 0x93, 0xb7, 0x9f, 0x36, 0x9b, - 0xe0, 0x8b, 0x9, 0x5e, 0x3d, 0x2b, 0x47, 0x8e, 0x42, 0x11, - 0x90, 0x37, 0x13, 0xcc, 0x3a, 0x34, 0x8c, 00, 0x3c, 0xfd, - 0xde, 0x83, 0xb9, 0x3a, 0x7f, 0x7, 0xbf, 0xe0, 0x9b, 0x1f, - 0x1c, 0x7e, 0x32, 0x68, 0x56, 0xfa, 0xdd, 0x9e, 0x81, 0x6b, - 0xe1, 0xdd, 0x1e, 0xe6, 0x31, 0x35, 0xbd, 0xd7, 0x88, 0x2e, - 0x7e, 0xcc, 0x66, 0x43, 0xc8, 0x65, 0x8c, 0x6, 0x7c, 0x63, - 0x9c, 0x95, 00, 0xd6, 0x6f, 0xfc, 0x13, 0xbb, 0xe1, 0xbe, - 0x87, 0xf1, 0x4b, 0xf6, 0xb4, 0xf0, 0x66, 0x93, 0xe2, 0x25, - 0x82, 0x7d, 0x32, 0xdc, 0xcd, 0xa8, 0x1b, 0x4b, 0x90, 0xa, - 0x5d, 0x3c, 0x31, 0x97, 0x48, 0xf0, 0x7a, 0xfc, 0xc0, 0x36, - 0x3b, 0x85, 0x35, 0xfb, 0x39, 0xfb, 0x62, 0x7c, 0x66, 0xb7, - 0xf8, 0x5, 0xfb, 0x39, 0x78, 0xc3, 0xc5, 0x2, 0x45, 0x86, - 0xf9, 0x2c, 0xcd, 0x96, 0x9a, 0x83, 0x8d, 0xd7, 0x52, 0x8d, - 0x91, 00, 0x3d, 0x89, 0xdd, 0xf4, 0x53, 0x4c, 0x84, 0xaf, - 0xab, 0x3f, 0x9e, 0x6f, 0x16, 0x78, 0x7d, 0xbc, 0x27, 0xe2, - 0x7d, 0x5b, 0x45, 0x7b, 0xcb, 0x6d, 0x41, 0xf4, 0xeb, 0xa9, - 0x2d, 0x5a, 0xea, 0xcd, 0x8b, 0x43, 0x29, 0x46, 0x2a, 0x59, - 0x9, 00, 0x95, 0x24, 0x70, 0x70, 0x2b, 0xf7, 0xe7, 0xf6, - 0x3, 0xf8, 0x22, 0x3e, 0x5, 0x7e, 0xcc, 0x3e, 0x14, 0xd2, - 0x67, 0x8b, 0xcb, 0xd6, 0x35, 0x38, 0xbf, 0xb6, 0x35, 0x1c, - 0x8f, 0x9b, 0xce, 0x9c, 0x6, 0xda, 0x7f, 0xdd, 0x4d, 0x89, - 0xff, 00, 0x1, 0xaf, 0xc5, 0x9f, 0xd8, 0xf3, 0xe0, 0xb4, - 0xbf, 0xb4, 0xf, 0xed, 0x17, 0xe1, 0xf, 0xa, 0x3a, 0x79, - 0xb6, 0x12, 0x5d, 0xb, 0xdd, 0x49, 0x98, 0x64, 0xb, 0x58, - 0xbf, 0x79, 0x2e, 0x7f, 0xde, 00, 0x27, 0xd5, 0xc5, 0x7e, - 0xd9, 0xfe, 0xd9, 0x7f, 0xb4, 0x8e, 0x8d, 0xfb, 0x30, 0x7c, - 0xf, 0xd5, 0xf5, 0x56, 0xbb, 0x82, 0x1f, 0x11, 0x5d, 0x5b, - 0x3d, 0x9e, 0x83, 0xa7, 0xe4, 0x6f, 0x9a, 0xe0, 0xae, 0xd5, - 0x60, 0xbd, 0x76, 0x26, 0x43, 0x31, 0xec, 0x6, 0x3a, 0x91, - 0x43, 0x5, 0xdc, 0xfc, 0x4a, 0xfd, 0xb3, 0x75, 0xfb, 0x5f, - 0x13, 0x7e, 0xd5, 0x7f, 0x14, 0xf5, 0x1b, 0x26, 0x57, 0xb5, - 0x93, 0x5e, 0xb9, 0x44, 0x74, 0xe8, 0xdb, 0x1b, 0x61, 0x3f, - 0x89, 0x52, 0x6b, 0xf5, 0x7f, 0xfe, 0x9, 0x19, 0xa1, 0x49, - 0xa4, 0xfe, 0xc8, 0x36, 0x77, 0x72, 0x2e, 0xdf, 0xed, 0x3d, - 0x66, 0xf6, 0xe5, 0x33, 0xdd, 0x43, 0x2c, 0x59, 0xfc, 0xe3, - 0x6a, 0xfc, 0x50, 0xd1, 0xf4, 0x9d, 0x57, 0xc7, 0x5e, 0x2a, - 0xb3, 0xd3, 0x6c, 0xd2, 0x4d, 0x43, 0x5a, 0xd5, 0xef, 0x12, - 0x8, 0x97, 0xab, 0xcd, 0x3c, 0xaf, 0x81, 0xf8, 0x96, 0x6a, - 0xfe, 0x91, 0x3e, 0x2, 0xfc, 0x2c, 0xb5, 0xf8, 0x27, 0xf0, - 0x73, 0xc2, 0x3e, 0x8, 0xb4, 0xda, 0x53, 0x46, 0xd3, 0xe3, - 0xb7, 0x92, 0x45, 0x1c, 0x49, 0x2e, 0x37, 0x4a, 0xff, 00, - 0xf0, 0x27, 0x2c, 0x7f, 0x1a, 0x18, 0x2d, 0xee, 0x77, 0x53, - 0xcc, 0x96, 0xd0, 0xc9, 0x34, 0x8c, 0x12, 0x38, 0xd4, 0xb3, - 0x31, 0xe8, 00, 0x19, 0x26, 0xbe, 0x2c, 0xf1, 0x46, 0xb5, - 0x27, 0x88, 0xfc, 0x45, 0xa8, 0xea, 0x52, 0x12, 0x4d, 0xcc, - 0xed, 0x20, 0xcf, 0x65, 0xcf, 0xca, 0x3f, 0x1, 0x81, 0x5f, - 0x4a, 0xfc, 0x73, 0xf1, 0x11, 0xd0, 0x7c, 0x3, 0x75, 0x1c, - 0x6f, 0xb2, 0xe2, 0xf9, 0x85, 0xaa, 0x63, 0xae, 0xf, 0x2f, - 0xff, 00, 0x8e, 0x82, 0x3f, 0x1a, 0xf9, 0x5a, 0xbf, 0x38, - 0xe2, 0x8c, 0x4f, 0x35, 0x48, 0x61, 0x97, 0x4d, 0x5f, 0xcf, - 0x6f, 0xeb, 0xcc, 0xf1, 0x33, 0x1a, 0x97, 0x92, 0xa6, 0xba, - 0x5, 0x14, 0x51, 0x5f, 0xa, 0x79, 0x1, 0x45, 0x14, 0x50, - 0x1, 0x46, 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa2, 0x80, 0xa, - 0x7c, 0x10, 0x49, 0x73, 0x32, 0xc5, 0xc, 0x6f, 0x2c, 0xae, - 0x70, 0xa8, 0x8a, 0x59, 0x89, 0xf6, 0x2, 0xb4, 0x3c, 0x3f, - 0xa9, 0xd9, 0xe9, 0x5a, 0x82, 0xcd, 0x7d, 0xa5, 0xc3, 0xab, - 0x5b, 0xff, 00, 0x14, 0x12, 0xc8, 0xc9, 0xf9, 0x15, 0x3d, - 0x7e, 0xb9, 0xaf, 0xa9, 0xbe, 0x1a, 0x5c, 0xf8, 0x5f, 0x58, - 0xd1, 0x56, 0xff, 00, 0xc3, 0xda, 0x7d, 0xbd, 0x90, 0xce, - 0xc9, 0x63, 0x58, 0x82, 0xc9, 0x1b, 0xe3, 0xee, 0xb1, 0xea, - 0x7e, 0xb9, 0xe6, 0xbd, 0xdc, 0xb3, 0x2c, 0x8e, 0x63, 0x2e, - 0x5f, 0x6a, 0xa2, 0xfb, 0x6b, 0x7f, 0xf2, 0xfc, 0x4e, 0xbc, - 0x3e, 0x1d, 0x57, 0x76, 0xe6, 0xb1, 0xe2, 0xbe, 0x9, 0xf8, - 0xd, 0xad, 0x78, 0x86, 0x54, 0x9b, 0x55, 0x56, 0xd1, 0xec, - 0x3a, 0x9f, 0x30, 0x7e, 0xf9, 0xc7, 0xa0, 0x5e, 0xdf, 0x53, - 0xf9, 0x1a, 0xfa, 0x1f, 0xc3, 0x5e, 0x18, 0xd3, 0xbc, 0x25, - 0xa5, 0xc7, 0x61, 0xa6, 0xc0, 0x20, 0x81, 0x79, 0x27, 0xab, - 0x39, 0xee, 0xcc, 0x7b, 0x9a, 0xd5, 0xa2, 0xbf, 0x4b, 0xc0, - 0x65, 0x58, 0x6c, 0xbd, 0x5e, 0x92, 0xbc, 0xbb, 0xbd, 0xff, - 00, 0xe0, 0x1f, 0x41, 0x47, 0xd, 0x4e, 0x87, 0xc3, 0xbf, - 0x70, 0xa2, 0x8a, 0x2b, 0xd8, 0x3a, 0x82, 0x8a, 0x28, 0xa0, - 0x2, 0xb1, 0x3c, 0x69, 0xac, 0xaf, 0x87, 0xbc, 0x27, 0xaa, - 0xea, 0x5, 0xb6, 0x98, 0x2d, 0xdc, 0xa7, 0xfb, 0xe4, 0x61, - 0x47, 0xe6, 0x45, 0x6d, 0xd7, 0x91, 0xfe, 0xd1, 0xfa, 0xd9, - 0xb2, 0xf0, 0xa5, 0x9e, 0x9c, 0x8d, 0x87, 0xbd, 0xb8, 0xcb, - 0xf, 0x54, 0x41, 0x93, 0xff, 00, 0x8f, 0x15, 0xaf, 0x3f, - 0x30, 0xaf, 0xf5, 0x5c, 0x2d, 0x4a, 0xdd, 0x97, 0xe3, 0xd3, - 0xf1, 0x30, 0xaf, 0x3f, 0x67, 0x4e, 0x52, 0x3e, 0x70, 0x24, - 0x93, 0x93, 0xc9, 0xa2, 0x8a, 0x2b, 0xf0, 0xf3, 0xe4, 0x42, - 0x8a, 0x29, 0x42, 0x96, 0x20, 0x1, 0x92, 0x78, 0x2, 0x80, - 0x3e, 0x93, 0xfd, 0x9c, 0xf4, 0x71, 0x65, 0xe0, 0xcb, 0x8b, - 0xe6, 0x5c, 0x49, 0x7b, 0x72, 0xc4, 0x1f, 0xf6, 0x13, 0xe5, - 0x1f, 0xae, 0xea, 0xf5, 0x7a, 0xc4, 0xf0, 0x5e, 0x88, 0x3c, - 0x39, 0xe1, 0x4d, 0x2f, 0x4e, 00, 0x6, 0x82, 0x5, 0xf, - 0x8e, 0xec, 0x79, 0x63, 0xf9, 0x93, 0x5b, 0x75, 0xfb, 0x8e, - 0x2, 0x87, 0xd5, 0xb0, 0xb4, 0xe9, 0x76, 0x4b, 0xef, 0xeb, - 0xf8, 0x9f, 0x5d, 0x42, 0x1e, 0xce, 0x9c, 0x62, 0x14, 0x51, - 0x45, 0x77, 0x9b, 0x85, 0x79, 0x1f, 0xed, 0x15, 0xe2, 0x86, - 0xd3, 0x3c, 0x35, 0x6d, 0xa4, 0x42, 0xfb, 0x65, 0xd4, 0x1f, - 0x32, 0x1, 0xd7, 0xca, 0x5c, 0x13, 0xf9, 0x9c, 0x7e, 0x46, - 0xbd, 0x72, 0xbe, 0x51, 0xf8, 0xdd, 0xae, 0xb6, 0xb7, 0xf1, - 0xb, 0x50, 0x4d, 0xdb, 0xa1, 0xb3, 0xc5, 0xac, 0x63, 0x3d, - 0x36, 0x8f, 0x9b, 0xff, 00, 0x1e, 0x2d, 0x5f, 0x37, 0x9f, - 0xe2, 0x9e, 0x1b, 0x5, 0x25, 0x1d, 0xe5, 0xa7, 0xf9, 0xfe, - 0x7, 0x6, 0x36, 0xa7, 0x25, 0x16, 0x97, 0x5d, 0xe, 0xa, - 0x8a, 0x28, 0xaf, 0xc8, 0xcf, 0x99, 0xa, 0x28, 0xa9, 0x2d, - 0xe0, 0x7b, 0xab, 0x88, 0xa1, 0x88, 0x6e, 0x92, 0x46, 0x8, - 0xab, 0xea, 0x49, 0xc0, 0x14, 0xd2, 0xbe, 0x88, 0xf, 0x79, - 0xfd, 0x9c, 0xfc, 0x18, 0xb1, 0x5a, 0x5c, 0x78, 0x92, 0xe1, - 0x33, 0x24, 0xa5, 0xa0, 0xb6, 0xc8, 0xe8, 0xa3, 0xef, 0x30, - 0xfa, 0x9e, 0x3f, 0x3, 0xeb, 0x5e, 0xdd, 0x59, 0xbe, 0x1b, - 0xd1, 0x62, 0xf0, 0xee, 0x83, 0x61, 0xa6, 0xc2, 00, 0x4b, - 0x68, 0x56, 0x3c, 0x8e, 0xe4, 0xe, 0x4f, 0xe2, 0x72, 0x7f, - 0x1a, 0xd2, 0xaf, 0xdb, 0xb2, 0xfc, 0x2a, 0xc1, 0x61, 0xa1, - 0x45, 0x6e, 0x96, 0xbe, 0xbd, 0x4f, 0xae, 0xa1, 0x4d, 0x52, - 0xa6, 0xa2, 0x14, 0x51, 0x45, 0x7a, 0x26, 0xe1, 0x45, 0x14, - 0x50, 0x1, 0x59, 0x1e, 0x2e, 0xd3, 0xd7, 0x56, 0xf0, 0xb6, - 0xad, 0x66, 0xe3, 0x2b, 0x35, 0xac, 0x8b, 0xf8, 0xed, 0x38, - 0xfd, 0x6b, 0x5e, 0xaa, 0x6a, 0xf2, 0x88, 0x34, 0x9b, 0xd9, - 0x1b, 0xee, 0xa4, 0xe, 0xc7, 0xf0, 0x53, 0x59, 0xd5, 0x4a, - 0x50, 0x92, 0x7b, 0x59, 0x93, 0x25, 0x78, 0xb4, 0xcf, 0x87, - 0xe8, 0xa2, 0x8a, 0xfc, 0xc, 0xf8, 0xc0, 0xa2, 0x8a, 0x28, - 0x3, 0x7b, 0xc0, 0x57, 0x26, 0xd3, 0xc6, 0xda, 0x14, 0xa0, - 0xe3, 0x17, 0xb0, 0x8f, 0xc0, 0xb8, 0x7, 0xf9, 0xd7, 0xd9, - 0xb5, 0xf1, 0x67, 0x83, 0x62, 0x33, 0x78, 0xbb, 0x44, 0x45, - 0xea, 0xd7, 0xb0, 0x8f, 0xfc, 0x7c, 0x57, 0xda, 0x75, 0xfa, - 0x47, 0xa, 0xb7, 0xec, 0x6a, 0xae, 0x97, 0x5f, 0x91, 0xee, - 0xe5, 0xbf, 0xc, 0x8c, 0x3f, 0x1c, 0x86, 0x6f, 0x5, 0xeb, - 0xa1, 0x33, 0xbb, 0xec, 0x33, 0x63, 0x1f, 0xee, 0x1a, 0xf8, - 0xc2, 0xbe, 0xe6, 0xb9, 0xb7, 0x4b, 0xbb, 0x69, 0x60, 0x90, - 0x6e, 0x8e, 0x54, 0x28, 0xc0, 0xf7, 0x4, 0x60, 0xd7, 0xc5, - 0x9e, 0x25, 0xd0, 0xa7, 0xf0, 0xd6, 0xbd, 0x7d, 0xa6, 0x5c, - 0x29, 0x59, 0x2d, 0xe5, 0x28, 0x9, 0x1f, 0x79, 0x7f, 0x85, - 0xbf, 0x11, 0x83, 0xf8, 0xd7, 0x37, 0x15, 0x52, 0x95, 0xe9, - 0x55, 0xe9, 0xaa, 0x23, 0x32, 0x8b, 0xbc, 0x64, 0x66, 0x51, - 0x45, 0x15, 0xf0, 0x7, 0x8a, 0x14, 0xaa, 0xc5, 0x18, 0x32, - 0x92, 0x18, 0x1c, 0x82, 0x3b, 0x52, 0x51, 0x40, 0x1f, 0x49, - 0xfc, 0x39, 0xf8, 0xe5, 0xa6, 0x6b, 0x16, 0x30, 0x59, 0x6b, - 0x93, 0xae, 0x9f, 0xa9, 0x46, 0xa1, 0xc, 0xf2, 0x9c, 0x45, - 0x37, 0x6c, 0xe7, 0xf8, 0x4f, 0xa8, 0x3f, 0x85, 0x7a, 0xac, - 0x53, 0x47, 0x3c, 0x6b, 0x24, 0x4e, 0xb2, 0x46, 0xc3, 0x21, - 0x90, 0xe4, 0x11, 0xf5, 0xaf, 0x85, 0xeb, 0x63, 0x43, 0xf1, - 0x86, 0xb7, 0xe1, 0xa3, 0xff, 00, 0x12, 0xcd, 0x4e, 0xe6, - 0xd1, 0x7f, 0xe7, 0x9a, 0x3e, 0x50, 0xff, 00, 0xc0, 0x4f, - 0x1f, 0xa5, 0x7d, 0xbe, 0xb, 0x89, 0xaa, 0x52, 0x8a, 0x86, - 0x26, 0x3c, 0xd6, 0xea, 0xb7, 0xff, 00, 0x83, 0xf8, 0x1e, - 0xbd, 0x2c, 0xc2, 0x51, 0x56, 0xa8, 0xae, 0x7d, 0xa7, 0x45, - 0x7c, 0xdf, 0xa0, 0xfe, 0xd1, 0xda, 0xed, 0x8e, 0xd4, 0xd4, - 0xed, 0x2d, 0xf5, 0x38, 0xc7, 0x56, 0x5f, 0xdd, 0x49, 0xf9, - 0x8c, 0x8f, 0xd2, 0xbb, 0xed, 0x13, 0xf6, 0x87, 0xf0, 0xd6, - 0xa4, 0xc1, 0x2f, 0x52, 0xe7, 0x4b, 0x73, 0xfc, 0x52, 0xa6, - 0xf4, 0xfc, 0xd7, 0x27, 0xf3, 0x15, 0xf5, 0x74, 0x33, 0xcc, - 0x5, 0x7f, 0xf9, 0x79, 0xca, 0xfc, 0xf4, 0xff, 00, 0x81, - 0xf8, 0x9e, 0x8c, 0x31, 0x94, 0x67, 0xd6, 0xde, 0xa7, 0xa9, - 0x51, 0x59, 0xba, 0x3f, 0x89, 0x34, 0xaf, 0x10, 0x45, 0xe6, - 0x69, 0xba, 0x85, 0xbd, 0xea, 0xf7, 0xf2, 0x64, 0xc, 0x47, - 0xd4, 0x75, 0x15, 0xa5, 0x5e, 0xe4, 0x65, 0x19, 0xae, 0x68, - 0xbb, 0xa3, 0xb1, 0x34, 0xd5, 0xd0, 0x51, 0x45, 0x15, 0x43, - 0xa, 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa2, 0x80, 0xa, 0xf2, - 0xf, 0xda, 0x1e, 0xeb, 0xca, 0xd0, 0x36, 0xe7, 0xfe, 0x59, - 0x9a, 0xf5, 0xfa, 0xf0, 0x6f, 0xda, 0x5e, 0xf8, 0x47, 0x61, - 0xe5, 0x67, 0x91, 0x1d, 0x79, 0x19, 0xb4, 0xb9, 0x30, 0x75, - 0x1f, 0x91, 0xc1, 0x8e, 0x97, 0x2e, 0x1e, 0x4c, 0xf9, 0x7, - 0x53, 0x6f, 0x95, 0xcf, 0xb9, 0xaf, 0x34, 0xf0, 0x2d, 0x92, - 0xeb, 0x9f, 0xb5, 0x7, 0xc3, 0x3b, 0x26, 0x1b, 0x81, 0xd7, - 0xad, 0xe4, 0xc7, 0xfb, 0x84, 0xbf, 0xfe, 0xcb, 0x5e, 0x8d, - 0xaa, 0x36, 0x22, 0x63, 0xec, 0x6b, 0x94, 0xfd, 0x9b, 0xec, - 0xff, 00, 0xb6, 0x3f, 0x6c, 0xbf, 0x87, 0xf1, 0xe3, 0x70, - 0x86, 0x7b, 0x9b, 0x93, 0xed, 0xb2, 0xda, 0x53, 0x9f, 0xcf, - 0x15, 0xf2, 0xd9, 0x24, 0x7d, 0xf3, 0xf2, 0x3c, 0xb1, 0x7b, - 0x4c, 0xe2, 0x97, 0x95, 0xd9, 0xfa, 0xcf, 0x45, 0x14, 0x57, - 0xe8, 0x7, 0xed, 0x61, 0x45, 0x14, 0x50, 0x1, 0x5c, 0x3f, - 0xc6, 0x8f, 0x18, 0xf, 0x4, 0x7c, 0x37, 0xd6, 0x35, 0x5, - 0x62, 0xb7, 0xf, 0x17, 0xd9, 0xad, 0xf6, 0xf5, 0xf3, 0x1f, - 0xe5, 0x53, 0xf8, 0x64, 0x9f, 0xc2, 0xbb, 0x8a, 0xf9, 0x5f, - 0xf6, 0xbf, 0xf1, 0x87, 0xda, 0xb5, 0x6d, 0x2b, 0xc3, 0x31, - 0x1f, 0x92, 0xd9, 0x3e, 0xd9, 0x39, 0xe7, 0xef, 0x36, 0x42, - 0x8f, 0xcb, 0x27, 0xf1, 0xaf, 0x37, 0x31, 0xc4, 0x7d, 0x5b, - 0xd, 0x39, 0xf5, 0xd9, 0x7a, 0xb3, 0xca, 0xcd, 0x31, 0x3f, - 0x54, 0xc2, 0x4e, 0xa2, 0xdf, 0x65, 0xea, 0xff, 00, 0xab, - 0x9f, 0x3e, 0x58, 0x5a, 0xbd, 0xe5, 0xd4, 0x30, 0x46, 0x37, - 0x3b, 0xb0, 0x50, 0x7, 0xa9, 0xaf, 0xd0, 0x3f, 0x86, 0x9e, - 0x19, 0x8f, 0xc2, 0x7e, 0xc, 0xd3, 0x6c, 0x11, 0x2, 0xb8, - 0x88, 0x34, 0x9e, 0xec, 0x47, 0x35, 0xf2, 0x27, 0xec, 0xf7, - 0xe1, 0x13, 0xe2, 0x9f, 0x1f, 0x5a, 0x97, 0x5c, 0xdb, 0xdb, - 0x7e, 0xf5, 0xcf, 0xd3, 0xa5, 0x7d, 0xc4, 0xa0, 0x28, 00, - 0x70, 0x7, 0x15, 0xf3, 0xdc, 0x3d, 0x87, 0xd2, 0x78, 0x87, - 0xe8, 0xbf, 0x53, 0xc2, 0xe1, 0xcc, 0x37, 0x25, 0x39, 0x57, - 0x7d, 0x74, 0x42, 0xd1, 0x45, 0x15, 0xf6, 0x67, 0xd9, 0x5, - 0x14, 0x51, 0x40, 0x5, 0x7e, 0x55, 0x7f, 0xc1, 0x6d, 0x3c, - 0x2b, 0xa8, 0x36, 0xa3, 0xf0, 0xc7, 0xc4, 0x81, 0x19, 0xb4, - 0xa5, 0x8a, 0xef, 0x4f, 0x67, 0x1d, 0x12, 0x62, 0x52, 0x40, - 0xf, 0xd5, 0x43, 0x7f, 0xdf, 0x26, 0xbf, 0x52, 0xb5, 0x4d, - 0x5e, 0xc7, 0x43, 0xb3, 0x6b, 0xbd, 0x46, 0xf6, 0xde, 0xc2, - 0xd5, 0x48, 0x56, 0x9e, 0xea, 0x55, 0x8d, 0x1, 0x27, 00, - 0x16, 0x62, 0x7, 0x24, 0x81, 0x5e, 0x73, 0xf1, 0xc7, 0xe1, - 0xf, 0x82, 0xff, 00, 0x69, 0xef, 0x86, 0x1a, 0x8f, 0x83, - 0x35, 0xeb, 0x98, 0xee, 0xf4, 0xeb, 0xbd, 0xb2, 0xc5, 0x73, - 0x63, 0x3a, 0x99, 0x6d, 0xa6, 0x5e, 0x52, 0x54, 0x23, 0x3c, - 0x83, 0xdb, 0xa1, 0x4, 0x83, 0xc1, 0xa0, 0x4f, 0x53, 0xf9, - 0xcd, 0xf0, 0xaf, 0x8a, 0xb5, 0x8f, 0x3, 0xf8, 0x8b, 0x4f, - 0xd7, 0xb4, 0xd, 0x46, 0xe3, 0x49, 0xd6, 0x74, 0xf9, 0x44, - 0xf6, 0xb7, 0xb6, 0xaf, 0xb6, 0x48, 0x9c, 0x74, 0x20, 0xfe, - 0x9e, 0xe0, 0x90, 0x6b, 0xd8, 0x7e, 0x39, 0x7e, 0xda, 0xdf, - 0x14, 0xbf, 0x68, 0xbf, 0x1, 0x68, 0xfe, 0x13, 0xf1, 0xce, - 0xa9, 0x69, 0xa9, 0x58, 0x69, 0x97, 0x42, 0xf1, 0x27, 0x86, - 0xd1, 0x60, 0x9a, 0x69, 0x2, 0x32, 0x3, 0x29, 0x5c, 0x2b, - 0x60, 0x33, 0x74, 0x51, 0xc9, 0xaf, 0x44, 0xf8, 0xd9, 0xff, - 00, 0x4, 0xbf, 0xf8, 0xd9, 0xf0, 0xa2, 0xfa, 0xea, 0x5d, - 0x27, 0x44, 0x1e, 0x39, 0xd0, 0x91, 0xd8, 0xc5, 0x7d, 0xa1, - 0xb6, 0xf9, 0x76, 0x67, 0x82, 0xf0, 0x1c, 0x38, 0x6c, 0x76, - 0x50, 0xc3, 0xde, 0xbe, 0x79, 0xb8, 0xf8, 0x25, 0xf1, 0x12, - 0xd2, 0xe4, 0xdb, 0xcd, 0xe0, 0x3f, 0x12, 0xc5, 0x38, 0x38, - 0xf2, 0xdb, 0x48, 0xb8, 0xd, 0x9f, 0xa6, 0xca, 0xa2, 0x35, - 0x3a, 0x5f, 0xd9, 0xdb, 0xf6, 0x95, 0xf1, 0x47, 0xec, 0xc5, - 0xe2, 0xd, 0x5f, 0x5f, 0xf0, 0x7d, 0xa6, 0x96, 0xfa, 0xe5, - 0xfd, 0x9f, 0xd8, 0x56, 0xf7, 0x51, 0xb7, 0x33, 0x1b, 0x68, - 0xcb, 0x6, 0x6f, 0x2c, 0x6e, 0x3, 0x2c, 0x55, 0x73, 0x9c, - 0xfd, 0xd1, 0x5c, 0xdf, 0xc5, 0x9f, 0x8d, 0x1e, 0x35, 0xf8, - 0xe5, 0xe2, 0x63, 0xaf, 0xf8, 0xe3, 0xc4, 0x37, 0x7e, 0x20, - 0xd4, 0x82, 0x94, 0x8d, 0xee, 0x8, 0x9, 0xa, 0x67, 0x3b, - 0x23, 0x45, 0x1, 0x51, 0x7d, 0x94, 0xa, 0xf4, 0xdf, 0x86, - 0x7f, 0xb0, 0x3f, 0xc7, 0x6f, 0x8a, 0x97, 0x31, 0x2e, 0x99, - 0xe0, 0xd, 0x47, 0x4c, 0xb5, 0x7e, 0xb7, 0xba, 0xda, 0xfd, - 0x86, 0x15, 0x1e, 0xa7, 0xcc, 0xc3, 0x1f, 0xc1, 0x4d, 0x7e, - 0x8b, 0xfe, 0xc9, 0xff, 00, 0xf0, 0x4a, 0xf, 0xb, 0xfc, - 0x27, 0xbd, 0xb2, 0xf1, 0x37, 0xc4, 0xbb, 0xb8, 0x3c, 0x65, - 0xe2, 0x6b, 0x79, 0x16, 0x6b, 0x7d, 0x3e, 0x10, 0x46, 0x9d, - 0x6a, 0xe3, 0x90, 0x48, 0x60, 0xc, 0xcc, 0xf, 0x76, 0x1, - 0x78, 0x1f, 0x2f, 0x7a, 0x2, 0xcc, 0xf3, 0xaf, 0xf8, 0x25, - 0x8f, 0xec, 0x3b, 0x79, 0xa4, 0xdd, 0xda, 0xfc, 0x65, 0xf1, - 0xde, 0x9b, 0xf6, 0x79, 0xc, 0x64, 0xf8, 0x73, 0x4d, 0xba, - 0x8c, 0x89, 0x13, 0x3c, 0x1b, 0xb7, 0x53, 0xd3, 0x23, 0x21, - 0x7, 0x5e, 0x4b, 0x7a, 0x57, 0xea, 0x25, 0x22, 0xa8, 0x45, - 0xa, 0xa0, 0x2a, 0x81, 0x80, 00, 0xc0, 0x2, 0xa2, 0xbc, - 0xbb, 0x8e, 0xc6, 0xd2, 0x6b, 0x99, 0x9b, 0x64, 0x30, 0xa1, - 0x91, 0xd8, 0xf6, 00, 0x64, 0xd4, 0xb7, 0x6d, 0x59, 0x7b, - 0x23, 0xe7, 0x5f, 0xda, 0x33, 0xc4, 0x23, 0x50, 0xf1, 0x4d, - 0xae, 0x97, 0x1b, 0xe6, 0x3b, 0x8, 0xb2, 0xe0, 0x1e, 0x3c, - 0xc7, 0xe4, 0xff, 00, 0xe3, 0xa1, 0x7f, 0x3a, 0xf2, 0x4a, - 0xbf, 0xaf, 0x6a, 0xb2, 0x6b, 0xba, 0xd5, 0xf6, 0xa1, 0x29, - 0x26, 0x4b, 0x99, 0x9e, 0x53, 0x9e, 0xd9, 0x39, 0x3, 0xf0, - 0x1c, 0x55, 0xa, 0xfc, 0x3b, 0x1f, 0x89, 0x78, 0xbc, 0x4c, - 0xeb, 0x77, 0x7f, 0x87, 0x4f, 0xc0, 0xf9, 0x1a, 0xd5, 0x3d, - 0xad, 0x47, 0x3e, 0xe1, 0x45, 0x14, 0x57, 0x1, 0x89, 0xdd, - 0x7c, 0x28, 0xf8, 0x72, 0x9f, 0x10, 0xf5, 0x4b, 0xc8, 0xae, - 0x66, 0x96, 0xda, 0xce, 0xda, 0x20, 0xcd, 0x24, 0x20, 0x67, - 0x79, 0x3f, 0x28, 0xe4, 0x63, 0xb3, 0x7e, 0x55, 0xe8, 0xf3, - 0x7e, 0xcc, 0x96, 0x4, 0x1f, 0x27, 0x5c, 0xb9, 0x43, 0xdb, - 0x7c, 0x2a, 0xdf, 0xc8, 0x8a, 0xde, 0xf8, 0x1, 0xe1, 0xd6, - 0xd1, 0xbc, 0xe, 0x2e, 0xe5, 0x5d, 0xb3, 0x6a, 0x32, 0x99, - 0xf9, 0xeb, 0xb0, 0x70, 0xbf, 0xc8, 0x9f, 0xc6, 0xbd, 0x32, - 0xbf, 0x50, 0xcb, 0x32, 0x5c, 0x2c, 0xf0, 0x70, 0x96, 0x22, - 0x9d, 0xe4, 0xf5, 0xeb, 0xd7, 0x6f, 0xc0, 0xfa, 0x1c, 0x3e, - 0x12, 0x9b, 0xa4, 0x9c, 0xd6, 0xac, 0xf9, 0xa7, 0xc5, 0x1f, - 0xb3, 0xd6, 0xb7, 0xa2, 0x59, 0xc9, 0x75, 0xa7, 0xdc, 0xc7, - 0xab, 0xa4, 0x63, 0x2d, 0x14, 0x68, 0x52, 0x5c, 0x7b, 0x2e, - 0x48, 0x3f, 0x9e, 0x6b, 0xca, 0xd9, 0x4a, 0xb1, 0x56, 0x4, - 0x10, 0x70, 0x41, 0xea, 0x2b, 0xee, 0xaa, 0xf9, 0x77, 0xe3, - 0xd7, 0x85, 0xe2, 0xf0, 0xff, 00, 0x8d, 0x3e, 0xd3, 0x6c, - 0x81, 0x20, 0xd4, 0x63, 0xfb, 0x41, 0x51, 0xd0, 0x49, 0x92, - 0x1f, 0x1f, 0xa1, 0xfc, 0x6b, 0xc5, 0xcf, 0x32, 0x5a, 0x58, - 0x3a, 0x4b, 0x11, 0x87, 0xd1, 0x6c, 0xd6, 0xff, 00, 0x33, - 0x93, 0x17, 0x84, 0x8d, 0x28, 0xf3, 0xc3, 0x63, 0xcd, 0xa8, - 0xa2, 0x8a, 0xf8, 0x93, 0xc9, 0xa, 0xf5, 0xdf, 0xd9, 0xbf, - 0x5b, 0x7b, 0x5f, 0x14, 0xde, 0xe9, 0x85, 0xbf, 0x73, 0x77, - 0x6f, 0xe6, 0x5, 0xff, 00, 0x6d, 0xf, 0x1f, 0xa1, 0x6a, - 0xf2, 0x2a, 0xed, 0xbe, 0xc, 0x5d, 0x7d, 0x93, 0xe2, 0x5e, - 0x8a, 0x73, 0x80, 0xee, 0xf1, 0x9f, 0xc5, 0x18, 0xf, 0xd7, - 0x15, 0xea, 0x65, 0x75, 0x5d, 0x1c, 0x6d, 0x29, 0x2e, 0xe9, - 0x7d, 0xfa, 0x1d, 0x18, 0x79, 0x72, 0xd6, 0x8b, 0xf3, 0x3e, - 0xb5, 0xa2, 0x8a, 0x2b, 0xf6, 0xc3, 0xeb, 0x42, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0xbe, 0x61, 0xfd, 0xa0, - 0xb5, 0xef, 0xed, 0x5f, 0x1d, 0x1b, 0x35, 0x6c, 0xc5, 0xa7, - 0xc2, 0xb1, 0x63, 0xfd, 0xb6, 0xf9, 0x9b, 0xf9, 0xa8, 0xfc, - 0x2b, 0xe9, 0xa9, 0xe7, 0x4b, 0x68, 0x24, 0x9a, 0x43, 0xb6, - 0x38, 0xd4, 0xbb, 0x13, 0xd8, 0x1, 0x93, 0x5f, 0x14, 0xf8, - 0x8f, 0x57, 0x6d, 0x7b, 0x5e, 0xd4, 0x35, 0x17, 0xce, 0x6e, - 0xa7, 0x79, 0x70, 0x7b, 0x2, 0x78, 0x1f, 0x96, 0x2b, 0xe3, - 0x38, 0x9f, 0x11, 0xc9, 0x86, 0x85, 0x15, 0xf6, 0x9f, 0xe0, - 0xbf, 0xe0, 0xd8, 0xf2, 0x73, 0x19, 0xda, 0xa, 0x1d, 0xcc, - 0xea, 0x28, 0xa2, 0xbf, 0x32, 0x3c, 00, 0xae, 0x8f, 0xe1, - 0xd6, 0x8c, 0x75, 0xff, 00, 0x1b, 0xe8, 0xd6, 0x7b, 0x77, - 0x23, 0x5c, 0x2b, 0xb8, 0xc7, 0xf0, 0x2f, 0xcc, 0xdf, 0xa0, - 0x35, 0xce, 0x57, 0xb0, 0x7e, 0xcd, 0x9a, 0x3f, 0xda, 0x7c, - 0x49, 0xa9, 0x6a, 0x2c, 0x32, 0xb6, 0xb6, 0xe2, 0x35, 0x3f, - 0xed, 0x39, 0xff, 00, 0x5, 0x3f, 0x9d, 0x7a, 0x59, 0x6d, - 0xf, 0xac, 0xe3, 0x29, 0xd2, 0xee, 0xff, 00, 0x5, 0xab, - 0x37, 0xa1, 0xf, 0x69, 0x56, 0x31, 0x3e, 0x8b, 0xa2, 0x8a, - 0x2b, 0xf6, 0xe3, 0xeb, 0x82, 0x8a, 0x28, 0xa0, 0x8, 0xee, - 0x26, 0x5b, 0x6b, 0x79, 0x65, 0x73, 0x84, 0x8d, 0x4b, 0x13, - 0xec, 0x6, 0x6b, 0xe2, 0x2d, 0x52, 0xf9, 0xf5, 0x3d, 0x4e, - 0xee, 0xf2, 0x43, 0x97, 0xb8, 0x95, 0xe5, 0x6f, 0xab, 0x12, - 0x7f, 0xad, 0x7d, 0x89, 0xe3, 0xa9, 0xda, 0xd7, 0xc1, 0x5a, - 0xf4, 0xa8, 0x70, 0xc9, 0x63, 0x31, 0x7, 0xdf, 0x61, 0xaf, - 0x8c, 0x6b, 0xf3, 0xce, 0x2a, 0xa8, 0xf9, 0xa9, 0x53, 0xf5, - 0x7f, 0x91, 0xe1, 0xe6, 0x52, 0xd6, 0x31, 0xa, 0x28, 0xa2, - 0xbe, 0x8, 0xf1, 0x82, 0xba, 0xbf, 0x85, 0x9a, 0x60, 0xd5, - 0xbe, 0x20, 0xe8, 0x70, 0x30, 0xca, 0x2d, 0xc0, 0x95, 0xbe, - 0x88, 0xb, 0x7f, 0xec, 0xb5, 0xca, 0x57, 0xa2, 0x7c, 0x4, - 0x50, 0x7e, 0x24, 0xd9, 0x13, 0xd4, 0x45, 0x29, 0x1f, 0xf7, - 0xc1, 0xaf, 0x43, 0x2f, 0x82, 0xa9, 0x8b, 0xa5, 0x17, 0xd6, - 0x4b, 0xf3, 0x36, 0xa2, 0xb9, 0xaa, 0xc5, 0x79, 0xa3, 0xea, - 0x7a, 0x28, 0xa2, 0xbf, 0x70, 0x3e, 0xbc, 0x28, 0xa2, 0x8a, - 00, 0x28, 0xa2, 0x8a, 00, 0x2b, 0x95, 0xf8, 0xa3, 0xaa, - 0xd, 0x1f, 0xe1, 0xfe, 0xb9, 0x71, 0x9c, 0x31, 0xb7, 0x68, - 0x97, 0xfd, 0xe7, 0xf9, 0x47, 0xf3, 0xae, 0xaa, 0xbc, 0x67, - 0xf6, 0x92, 0xf1, 0x1a, 0xdb, 0x68, 0xb6, 0x1a, 0x2a, 0x37, - 0xef, 0x6e, 0xa4, 0xf3, 0xe4, 0x1e, 0x88, 0xbd, 0x3f, 0x36, - 0x3f, 0xf8, 0xed, 0x79, 0x99, 0x9d, 0x75, 0x86, 0xc1, 0xd4, - 0xa8, 0xfb, 0x69, 0xea, 0xf4, 0x47, 0x3e, 0x22, 0x7e, 0xce, - 0x94, 0xa4, 0x7c, 0xf5, 0x45, 0x14, 0x57, 0xe2, 0x47, 0xc9, - 0x5, 0x14, 0x51, 0x40, 0x1d, 0x6f, 0xc2, 0x7b, 0x3f, 0xb7, - 0x7c, 0x45, 0xd0, 0xa3, 0xc6, 0x42, 0xdc, 0x9, 0xf, 0xfc, - 0x4, 0x16, 0xfe, 0x95, 0xf5, 0xf5, 0x7c, 0xe3, 0xfb, 0x37, - 0xe8, 0x7f, 0x6c, 0xf1, 0x45, 0xee, 0xa6, 0xcb, 0x94, 0xb2, - 0x83, 0x62, 0x9f, 0xf6, 0xdc, 0xe3, 0xf9, 0x6, 0xfc, 0xeb, - 0xe8, 0xea, 0xfd, 0x4f, 0x86, 0x68, 0xba, 0x78, 0x27, 0x37, - 0xf6, 0x9b, 0x7f, 0x76, 0x87, 0xd1, 0x65, 0xf1, 0xb5, 0x2b, - 0xf7, 0x61, 0x5e, 0x6b, 0xf1, 0x7f, 0xe1, 0x58, 0xf1, 0xbd, - 0xa2, 0xdf, 0xd8, 0x5, 0x8f, 0x58, 0xb7, 0x42, 00, 0x3c, - 0x9, 0xd7, 0xfb, 0xa4, 0xfa, 0xfa, 0x1f, 0xc3, 0xe9, 0xe9, - 0x54, 0x57, 0xd1, 0xe2, 0x70, 0xd4, 0xf1, 0x74, 0x9d, 0x1a, - 0xaa, 0xe9, 0x9d, 0xf5, 0x29, 0xc6, 0xac, 0x5c, 0x65, 0xb1, - 0xf0, 0xdd, 0xed, 0x8d, 0xc6, 0x9b, 0x75, 0x25, 0xb5, 0xd4, - 0x32, 0x5b, 0xdc, 0x46, 0x76, 0xbc, 0x52, 0x2e, 0xd6, 0x53, - 0xee, 0x2a, 0xa, 0xfb, 0x17, 0xc6, 0x3f, 0xf, 0x34, 0x4f, - 0x1c, 0x42, 0xa3, 0x52, 0xb6, 0xfd, 0xfa, 0xc, 0x25, 0xcc, - 0x47, 0x6c, 0x8b, 0xf8, 0xf7, 0x1e, 0xc7, 0x22, 0xbc, 0x3f, - 0xc5, 0x3f, 0xb3, 0xde, 0xbb, 0xa4, 0x34, 0x92, 0xe9, 0x4f, - 0x1e, 0xaf, 0x6a, 0x39, 0xa, 0xe, 0xc9, 0x80, 0xff, 00, - 0x74, 0xf0, 0x7f, 0x3, 0xf8, 0x57, 0xe6, 0x38, 0xee, 0x1f, - 0xc5, 0x61, 0x5b, 0x95, 0x25, 0xcf, 0x1f, 0x2d, 0xfe, 0x6b, - 0xfc, 0x8f, 0x9e, 0xad, 0x82, 0xa9, 0x4f, 0x58, 0xea, 0x8f, - 0x2a, 0xa2, 0xac, 0x5f, 0x69, 0xf7, 0x5a, 0x65, 0xc3, 0x41, - 0x79, 0x6f, 0x2d, 0xac, 0xcb, 0xd6, 0x39, 0x90, 0xab, 0xf, - 0xc0, 0xd5, 0x7a, 0xf9, 0x86, 0x9c, 0x5d, 0x99, 0xe7, 0xec, - 0x14, 0x51, 0x45, 0x20, 0xa, 0x28, 0xa2, 0x80, 0x25, 0xb5, - 0xbb, 0x9e, 0xc6, 0x75, 0x9a, 0xda, 0x69, 0x2d, 0xe6, 0x5e, - 0x56, 0x48, 0x9c, 0xab, 0xf, 0xa1, 0x15, 0xe9, 0x5e, 0x11, - 0xf8, 0xfb, 0xaf, 0x68, 0x6e, 0x91, 0x6a, 0x64, 0x6b, 0x36, - 0x9d, 0xf, 0x98, 0x42, 0xca, 0xbf, 0x46, 0xc7, 0x3f, 0x8e, - 0x7e, 0xb5, 0xe6, 0x14, 0x57, 0x66, 0x1b, 0x19, 0x5f, 0x9, - 0x2e, 0x6a, 0x13, 0x6b, 0xf2, 0xfb, 0xb6, 0x35, 0xa7, 0x56, - 0x74, 0x9d, 0xe0, 0xec, 0x7d, 0x8f, 0xe0, 0xdf, 0x1f, 0xe8, - 0xfe, 0x38, 0xb4, 0xf3, 0x74, 0xeb, 0x8f, 0xdf, 0x28, 0xfd, - 0xe5, 0xb4, 0xbf, 0x2c, 0xa9, 0xf5, 0x1d, 0xc7, 0xb8, 0xe2, - 0xba, 0x4a, 0xf8, 0x7b, 0x4b, 0xd5, 0x2e, 0xf4, 0x5d, 0x42, - 0xb, 0xdb, 0x19, 0xda, 0xde, 0xea, 0x16, 0xdc, 0x92, 0x27, - 0x50, 0x7f, 0xcf, 0x6a, 0xfa, 0xa3, 0xe1, 0x4f, 0xc4, 0x88, - 0xbc, 0x7d, 0xa3, 0x91, 0x36, 0x23, 0xd5, 0x6d, 0x80, 0x17, - 0x31, 0x81, 0x85, 0x6c, 0xf4, 0x75, 0xf6, 0x38, 0xfc, 0xf, - 0xe1, 0x5f, 0xa4, 0xe5, 0x19, 0xdc, 0x71, 0xcf, 0xd8, 0xd6, - 0x56, 0x9f, 0xe0, 0xff, 00, 0xe0, 0xf9, 0x1e, 0xf6, 0x17, - 0x16, 0xab, 0x7b, 0x93, 0xd1, 0xfe, 0x67, 0x73, 0x45, 0x14, - 0x57, 0xd5, 0x9e, 0x90, 0x51, 0x45, 0x14, 00, 0x57, 0xcc, - 0xff, 00, 0xb4, 0xf5, 0xdf, 0xef, 0xd9, 0x33, 0xd1, 0x71, - 0x5f, 0x4c, 0x57, 0xc9, 0xbf, 0xb4, 0xbd, 0xd1, 0x7d, 0x52, - 0x55, 0xcf, 0xf1, 0x1a, 0xf9, 0xdc, 0xf6, 0x56, 0xc1, 0xb5, - 0xdc, 0xf1, 0xb3, 0x69, 0x72, 0xe1, 0x64, 0x7c, 0xdf, 0xac, - 0x36, 0xdb, 0x77, 0x3e, 0xd5, 0x4f, 0xf6, 0x27, 0xb6, 0xfe, - 0xd1, 0xfd, 0xb2, 0xf4, 0xc7, 0x20, 0x37, 0xd9, 0x34, 0xab, - 0xe9, 0xf9, 0xed, 0x95, 0x54, 0xcf, 0xfe, 0x3f, 0x53, 0x78, - 0x81, 0xf6, 0xd9, 0xc8, 0x7f, 0xd9, 0x35, 0x77, 0xfe, 0x9, - 0xe7, 0x69, 0xf6, 0xef, 0xda, 0xbb, 0x5c, 0xb9, 0xea, 0x2d, - 0x3c, 0x3b, 0x3f, 0xe6, 0xd3, 0xc2, 0x3f, 0xa1, 0xaf, 0x27, - 0x23, 0x8e, 0xb7, 0x3f, 0x34, 0xc8, 0x23, 0xcf, 0x9b, 0xa7, - 0xd9, 0x33, 0xf4, 0xee, 0x8a, 0x28, 0xaf, 0xb8, 0x3f, 0x64, - 0xa, 0x28, 0xa2, 0x80, 0x23, 0xb9, 0xb8, 0x8e, 0xd2, 0xde, - 0x59, 0xe5, 0x60, 0x91, 0x44, 0xa5, 0xdd, 0x8f, 0x40, 00, - 0xc9, 0x35, 0xf9, 0xe1, 0xe3, 0xcf, 0x13, 0xc9, 0xe3, 0x3f, - 0x19, 0xea, 0xfa, 0xcb, 0x9c, 0x8b, 0xbb, 0x86, 0x68, 0xfd, - 0xa3, 0x1c, 0x20, 0xff, 00, 0xbe, 0x40, 0xaf, 0xaf, 0x3f, - 0x69, 0x7f, 0x18, 0x9f, 0xa, 0x7c, 0x33, 0xbb, 0x82, 0x17, - 0xdb, 0x77, 0xaa, 0xb7, 0xd8, 0xa3, 0xf5, 0xda, 0xc0, 0x97, - 0x3f, 0xf7, 0xc8, 0x3f, 0x98, 0xaf, 0x8d, 0x7c, 0x3d, 0xa5, - 0x3e, 0xb3, 0xac, 0xd9, 0xd9, 0x46, 0x9, 0x69, 0xa4, 0x54, - 00, 0x7b, 0x9a, 0xf8, 0x7e, 0x20, 0xc4, 0x39, 0x4e, 0x18, - 0x78, 0xf4, 0xd7, 0xe6, 0xf6, 0x3e, 0xb, 0x88, 0x6b, 0xba, - 0xb5, 0xa9, 0xe1, 0x21, 0xd3, 0x57, 0xea, 0xf6, 0xfe, 0xbc, - 0xcf, 0xab, 0x3f, 0x65, 0x6f, 0x8, 0x7f, 0x65, 0x78, 0x5a, - 0x6d, 0x5e, 0x58, 0xf6, 0xcd, 0x76, 0xc5, 0x54, 0x91, 0xfc, - 0x22, 0xbd, 0xd6, 0xb2, 0xbc, 0x2d, 0xa2, 0xc7, 0xe1, 0xef, - 0xf, 0xd8, 0xe9, 0xf1, 0x28, 0x55, 0x82, 0x20, 0xbc, 0xe, - 0xfd, 0xeb, 0x56, 0xbe, 0xab, 0x5, 0x87, 0x58, 0x5c, 0x3c, - 0x29, 0x76, 0x5f, 0x8f, 0x53, 0xec, 0xb0, 0x94, 0x16, 0x1e, - 0x84, 0x69, 0x2e, 0x88, 0x28, 0xa2, 0x8a, 0xee, 0x3a, 0xc2, - 0x8a, 0x28, 0xa0, 0xf, 0xcb, 0xbf, 0xf8, 0x2d, 0x1f, 0xc6, - 0x4b, 0xfb, 0x3b, 0x6f, 0x5, 0xfc, 0x31, 0xb3, 0x73, 0x15, - 0x8d, 0xea, 0x36, 0xb5, 0xa8, 0x60, 0x90, 0x65, 0xda, 0xc6, - 0x38, 0x50, 0xf6, 0x20, 0x1d, 0xed, 0xf5, 0xb, 0xe9, 0x5f, - 0x9b, 0x5f, 0xb, 0x34, 0xfd, 0x7b, 0xc5, 0x3e, 0x3e, 0xf0, - 0xe7, 0x86, 0xb4, 0x3d, 0x52, 0xf3, 0x4f, 0xbc, 0xd5, 0xf5, - 0x8, 0x2c, 0x22, 0x92, 0xda, 0x77, 0x8f, 0x61, 0x92, 0x40, - 0x9b, 0xbe, 0x52, 0x3a, 0x67, 0x3f, 0x85, 0x7e, 0x9a, 0xff, - 00, 0xc1, 0x49, 0xec, 0xfe, 0xd, 0xfe, 0xd2, 0xba, 0x1d, - 0xa6, 0xa7, 0xe1, 0xbf, 0x8a, 0xfe, 0x12, 0xb7, 0xf8, 0x87, - 0xe1, 0x7f, 0x36, 0xd9, 0x74, 0xfb, 0xbd, 0x52, 0x28, 0x56, - 0xee, 0x2d, 0xdf, 0x3c, 0x5, 0x98, 0x80, 0xae, 0xac, 0x9, - 0x5c, 0x9c, 0x64, 0xb0, 0x38, 0xce, 0x47, 0xe5, 0xa7, 0x85, - 0xfc, 0x47, 0xa8, 0x78, 0xb, 0xc5, 0xfa, 0x56, 0xb9, 0xa6, - 0xca, 0xb1, 0xea, 0x9a, 0x3d, 0xec, 0x77, 0x70, 0x48, 0xac, - 0x1d, 0x44, 0x91, 0x38, 0x65, 0xe4, 0x1c, 0x30, 0xca, 0xf6, - 0x38, 0x22, 0xa9, 0x10, 0xf7, 0x3f, 0xa6, 0x8f, 0x9, 0x78, - 0x6a, 0xd7, 0xc1, 0xde, 0x17, 0xd2, 0xb4, 0x2b, 0x22, 0xe6, - 0xd7, 0x4e, 0xb6, 0x8e, 0xd6, 0x36, 0x91, 0x8b, 0x3b, 0x4, - 0x50, 0x37, 0x31, 0x3c, 0x92, 0x71, 0x92, 0x4f, 0x52, 0x6b, - 0x5e, 0xbe, 0x30, 0xf8, 0x1b, 0xff, 00, 0x5, 0x54, 0xf8, - 0x37, 0xf1, 0x2b, 0x43, 0xb4, 0x5f, 0x15, 0xea, 0xa7, 0xc0, - 0x3e, 0x22, 0xd8, 0x5, 0xc5, 0xa6, 0xa6, 0x8c, 0xd6, 0xc5, - 0xf1, 0xc9, 0x8e, 0x75, 0x5, 0x76, 0xfa, 0x6e, 0xda, 0x7d, - 0xab, 0xd9, 0xad, 0x7f, 0x6d, 0x3f, 0x80, 0xf7, 0x87, 0x11, - 0xfc, 0x5b, 0xf0, 0x88, 0x3f, 0xf4, 0xd3, 0x55, 0x89, 0x3f, - 0xf4, 0x22, 0x2a, 0x4b, 0x3d, 0xa6, 0x8a, 0xf3, 0x1d, 0x3f, - 0xf6, 0xa0, 0xf8, 0x3d, 0xab, 0x48, 0x12, 0xcb, 0xe2, 0x97, - 0x83, 0xee, 0x9c, 0xf4, 0x58, 0xb5, 0xcb, 0x66, 0x3f, 0xfa, - 0x1d, 0x77, 0x7a, 0xf, 0x89, 0xb4, 0x8f, 0x14, 0xda, 0x35, - 0xd6, 0x8d, 0xaa, 0xd9, 0x6a, 0xd6, 0xaa, 0xdb, 0xc, 0xd6, - 0x37, 0x9, 0x32, 0x6, 0xc6, 0x70, 0x4a, 0x92, 0x33, 0x82, - 0x3f, 0x3a, 00, 0xd3, 0xaf, 0x36, 0xf8, 0xf9, 0xe2, 0x1f, - 0xec, 0x6f, 0x2, 0x4b, 0x6b, 0x1c, 0x9b, 0x27, 0xd4, 0x24, - 0x10, 00, 0xf, 0x3b, 0x3a, 0xbf, 0xe8, 0x31, 0xff, 00, - 0x2, 0xaf, 0x49, 0xaf, 0x98, 0xff, 00, 0x68, 0x3f, 0x10, - 0x7f, 0x6a, 0xf8, 0xdf, 0xec, 0x28, 0xfb, 0xa0, 0xd3, 0xe2, - 0x11, 0xe0, 0x74, 0xde, 0xdf, 0x33, 0x7f, 0xec, 0xa3, 0xf0, - 0xaf, 0x3, 0x3c, 0xc5, 0x7d, 0x57, 0x3, 0x36, 0xb7, 0x96, - 0x8b, 0xe7, 0xff, 00, 0x2, 0xe7, 0x16, 0x32, 0xa7, 0xb3, - 0xa2, 0xfc, 0xf4, 0x3c, 0xc2, 0x8a, 0x28, 0xaf, 0xc7, 0x8f, - 0x97, 0xa, 0xb7, 0xa4, 0xe9, 0xb3, 0x6b, 0x3a, 0xa5, 0xa5, - 0x8c, 00, 0xb4, 0xd7, 0x32, 0xac, 0x4a, 00, 0xee, 0x4e, - 0x2a, 0xa5, 0x7a, 0x8f, 0xec, 0xf3, 0xa0, 0x1d, 0x4f, 0xc6, - 0xad, 0x7e, 0xe9, 0x98, 0x74, 0xf8, 0x4b, 0xee, 0x23, 0x8f, - 0x31, 0xbe, 0x55, 0x1f, 0x96, 0xe3, 0xf8, 0x57, 0x6e, 0xb, - 0xe, 0xf1, 0x58, 0x98, 0x51, 0x5d, 0x5f, 0xe1, 0xd7, 0xf0, - 0x35, 0xa5, 0xf, 0x69, 0x35, 0xe, 0xe7, 0xd2, 0x3a, 0x75, - 0x8c, 0x7a, 0x66, 0x9f, 0x6d, 0x69, 0x8, 0xdb, 0x14, 0x11, - 0xac, 0x48, 0x3d, 0x80, 0xc0, 0xfe, 0x55, 0x66, 0x8a, 0x2b, - 0xf7, 0x24, 0x94, 0x55, 0x91, 0xf6, 0x9, 0x5b, 0x40, 0xaf, - 0x11, 0xfd, 0xa6, 0xec, 0x43, 0x58, 0x68, 0x57, 0x9d, 0xd2, - 0x59, 0x62, 0x3f, 0xf0, 0x20, 0xf, 0xfe, 0xcb, 0x5e, 0xdd, - 0x5e, 0x4f, 0xfb, 0x48, 0xc3, 0xe6, 0x78, 0x26, 0xce, 0x4c, - 0x7f, 0xab, 0xbe, 0x43, 0xf9, 0xa3, 0x8a, 0xf1, 0xb3, 0xa8, - 0x73, 0xe5, 0xf5, 0x57, 0x95, 0xfe, 0xe7, 0x73, 0x93, 0x16, - 0xaf, 0x42, 0x47, 0xcd, 0x94, 0x51, 0x45, 0x7e, 0x32, 0x7c, - 0xa8, 0x56, 0xc7, 0x83, 0x6f, 0x8e, 0x9b, 0xe2, 0xdd, 0x1a, - 0xe8, 0x1c, 0x79, 0x57, 0x71, 0x31, 0x3e, 0xdb, 0x86, 0x7f, - 0x4a, 0xc7, 0xa7, 0x47, 0x21, 0x86, 0x45, 0x91, 0x7e, 0xf2, - 0x90, 0xc3, 0xf0, 0xad, 0x29, 0xcf, 0xd9, 0xce, 0x33, 0x5d, - 0x1d, 0xc7, 0x17, 0x66, 0x99, 0xf7, 0x4d, 0x15, 0x5b, 0x4c, - 0xb9, 0x17, 0xba, 0x75, 0xad, 0xc0, 0xe9, 0x2c, 0x49, 0x20, - 0xfc, 0x40, 0x35, 0x66, 0xbf, 0x7b, 0x4e, 0xe9, 0x34, 0x7d, - 0x9a, 0xd4, 0x28, 0xa2, 0x8a, 0x63, 0xa, 0x28, 0xa2, 0x80, - 0x38, 0xbf, 0x8c, 0x3a, 0xc8, 0xd1, 0x3e, 0x1e, 0x6a, 0xd2, - 0x6, 0xdb, 0x24, 0xf1, 0xfd, 0x99, 0x30, 0x79, 0x25, 0xce, - 0xe, 0x3f, 0xc, 0x9f, 0xc2, 0xbe, 0x48, 0xaf, 0x75, 0xfd, - 0xa6, 0x35, 0xa3, 0x9d, 0x1f, 0x49, 0x46, 0xf9, 0x7e, 0x7b, - 0x99, 0x14, 0x7f, 0xdf, 0x2b, 0xff, 00, 0xb3, 0x57, 0x85, - 0x57, 0xe5, 0x1c, 0x47, 0x88, 0xf6, 0xd8, 0xde, 0x45, 0xb4, - 0x12, 0x5f, 0xaf, 0xea, 0x7c, 0xde, 0x3e, 0x7c, 0xd5, 0xad, - 0xd8, 0x28, 0xa2, 0x8a, 0xf9, 0x63, 0xce, 0xa, 0xfa, 0x7b, - 0xf6, 0x7d, 0xd0, 0xff, 00, 0xb2, 0xfc, 0x8, 0x2e, 0xd9, - 0x71, 0x2d, 0xfc, 0xcd, 0x2e, 0x48, 0xe7, 0x68, 0xf9, 0x57, - 0xf9, 0x13, 0xf8, 0xd7, 0xcc, 0x71, 0x44, 0xd3, 0x4a, 0x91, - 0xa0, 0x2c, 0xee, 0x42, 0xa8, 0x1d, 0xc9, 0xe9, 0x5f, 0x6b, - 0x78, 0x67, 0x49, 0x5d, 0xb, 0xc3, 0xda, 0x6e, 0x9c, 0xbf, - 0xf2, 0xed, 0x6e, 0x91, 0x1f, 0x72, 0x14, 0x64, 0xfe, 0x75, - 0xf6, 0x9c, 0x2f, 0x43, 0x9f, 0x11, 0x3a, 0xcf, 0xec, 0xaf, - 0xc5, 0xff, 00, 0xc0, 0x3d, 0x5c, 0xbe, 0x17, 0xa8, 0xe5, - 0xd8, 0xd3, 0xa2, 0x8a, 0x2b, 0xf4, 0xc3, 0xe8, 0x2, 0x8a, - 0x28, 0xa0, 0xc, 0x3f, 0x1c, 0xdb, 0xb5, 0xd7, 0x82, 0xf5, - 0xd8, 0x50, 0x65, 0xde, 0xc6, 0x65, 00, 0x7a, 0xec, 0x35, - 0xf1, 0x87, 0x5a, 0xfb, 0xa2, 0x58, 0x96, 0x78, 0x9e, 0x37, - 0x19, 0x47, 0x52, 0xa4, 0x1e, 0xe0, 0xd7, 0xc4, 0xfe, 0x21, - 0xd2, 0x5f, 0x42, 0xd7, 0x75, 0xd, 0x3a, 0x40, 0x77, 0x5b, - 0x4e, 0xf1, 0x73, 0xdc, 0x3, 0xc1, 0xfc, 0x46, 0xd, 0x7e, - 0x7d, 0xc5, 0x54, 0x9d, 0xe9, 0x55, 0xe9, 0xaa, 0xfd, 0x4f, - 0x13, 0x32, 0x8e, 0xb1, 0x91, 0x9f, 0x45, 0x14, 0x57, 0xc0, - 0x1e, 0x28, 0x57, 0x5f, 0xf0, 0x97, 0x55, 0x5d, 0x1f, 0xe2, - 0x1e, 0x8b, 0x33, 0x9c, 0x23, 0xcd, 0xe4, 0x31, 0x3f, 0xed, - 0x82, 0xa3, 0xf5, 0x22, 0xb9, 0xa, 0x74, 0x52, 0xbc, 0x32, - 0xa4, 0x91, 0xb1, 0x57, 0x42, 0x19, 0x58, 0x75, 0x4, 0x74, - 0x35, 0xbd, 0xa, 0xae, 0x85, 0x58, 0x55, 0x5f, 0x65, 0xa7, - 0xf7, 0x15, 0x9, 0x72, 0x49, 0x4b, 0xb1, 0xf7, 0x4d, 0x15, - 0xcb, 0x7c, 0x38, 0xf1, 0xb4, 0x1e, 0x39, 0xf0, 0xcd, 0xbd, - 0xea, 0xb2, 0xad, 0xda, 0xf, 0x2e, 0xe6, 0x10, 0x79, 0x47, - 0x1f, 0xd0, 0xf5, 0x1f, 0x5a, 0xea, 0x6b, 0xf7, 0x3a, 0x35, - 0x61, 0x5e, 0x9c, 0x6a, 0xd3, 0x77, 0x4f, 0x53, 0xec, 0x63, - 0x25, 0x38, 0xa9, 0x47, 0x66, 0x14, 0x51, 0x45, 0x6c, 0x50, - 0x51, 0x45, 0x23, 0x30, 0x45, 0x2c, 0xc4, 0x2a, 0x81, 0x92, - 0x4f, 0x41, 0x40, 0x11, 0xdd, 0x5d, 0x45, 0x63, 0x6d, 0x2d, - 0xc4, 0xf2, 0x2c, 0x50, 0x44, 0x85, 0xdd, 0xd8, 0xe0, 0x2a, - 0x81, 0x92, 0x4d, 0x7c, 0x79, 0xf1, 0x7, 0xc5, 0xaf, 0xe3, - 0x5f, 0x15, 0x5e, 0x6a, 0x64, 0x15, 0x85, 0x8f, 0x97, 0x2, - 0x1f, 0xe1, 0x8d, 0x78, 0x5f, 0xcf, 0xaf, 0xd4, 0x9a, 0xef, - 0xfe, 0x36, 0x7c, 0x58, 0x4d, 0x74, 0xbe, 0x83, 0xa3, 0xcd, - 0xba, 0xc1, 0x1b, 0xfd, 0x22, 0xe5, 0x1b, 0x89, 0x88, 0xfe, - 0x11, 0xfe, 0xc8, 0xf5, 0xee, 0x7d, 0xba, 0xf8, 0xed, 0x7e, - 0x63, 0xc4, 0x39, 0x9c, 0x71, 0x33, 0x58, 0x6a, 0x2e, 0xf1, - 0x8e, 0xef, 0xbb, 0xff, 00, 0x80, 0x7c, 0xf6, 0x3b, 0x10, - 0xaa, 0x3f, 0x67, 0x1d, 0x90, 0x51, 0x45, 0x15, 0xf1, 0xa7, - 0x96, 0x14, 0x51, 0x5d, 0x67, 0xc3, 0x2f, 0x6, 0x3f, 0x8d, - 0xfc, 0x57, 0x6d, 0x66, 0xca, 0xdf, 0x63, 0x8f, 0xf7, 0xd7, - 0x2e, 0x7, 0x44, 0x1d, 0xbf, 0x13, 0x81, 0xf8, 0xfb, 0x56, - 0xd4, 0x68, 0xcf, 0x11, 0x52, 0x34, 0xa9, 0xad, 0x5b, 0xb1, - 0x51, 0x8b, 0x9c, 0x94, 0x56, 0xec, 0xf7, 0xbf, 0x81, 0x7e, - 0x17, 0x6f, 0xe, 0xf8, 0x1e, 0x19, 0xa6, 0x5d, 0xb7, 0x3a, - 0x83, 0x7d, 0xa9, 0x81, 0x1c, 0x85, 0x20, 0x4, 0x1f, 0x90, - 0xcf, 0xe3, 0x5e, 0x89, 0x4d, 0x8e, 0x35, 0x8a, 0x35, 0x44, - 0x50, 0xa8, 0xa0, 0x28, 0x51, 0xd0, 0xa, 0x75, 0x7e, 0xe3, - 0x86, 0xa1, 0x1c, 0x2d, 0x18, 0x51, 0x8e, 0xd1, 0x56, 0x3e, - 0xbe, 0x9c, 0x15, 0x38, 0x28, 0x2e, 0x81, 0x45, 0x14, 0x57, - 0x49, 0xa0, 0x51, 0x45, 0x14, 0x1, 0x53, 0x51, 0xd2, 0x2c, - 0x75, 0x78, 0x4c, 0x37, 0xd6, 0x70, 0x5e, 0x44, 0x7a, 0xa4, - 0xf1, 0x87, 0x1f, 0xad, 0x79, 0xf6, 0xbf, 0xfb, 0x3f, 0xf8, - 0x63, 0x57, 0x2d, 0x25, 0xa2, 0xcf, 0xa5, 0x4a, 0x7f, 0xe7, - 0xdd, 0xf2, 0x99, 0xff, 00, 0x75, 0xb3, 0xfa, 0x11, 0x5e, - 0x99, 0x45, 0x72, 0x57, 0xc1, 0xe1, 0xf1, 0x2a, 0xd5, 0xa0, - 0xa5, 0xfd, 0x77, 0x32, 0x9d, 0x28, 0x54, 0xf8, 0xd5, 0xcf, - 0x9b, 0x3c, 0x45, 0xfb, 0x3a, 0xeb, 0xba, 0x68, 0x69, 0x34, - 0xbb, 0x88, 0x75, 0x58, 0x87, 0x44, 0xff, 00, 0x55, 0x26, - 0x3e, 0x84, 0xe0, 0xfe, 0x75, 0xe6, 0xba, 0xb6, 0x87, 0xa8, - 0x68, 0x37, 0x3f, 0x67, 0xd4, 0x6c, 0xa7, 0xb2, 0x9b, 0xfb, - 0xb3, 0x21, 0x5c, 0xfd, 0x3d, 0x7f, 0xa, 0xfb, 0x76, 0xa9, - 0xea, 0x9a, 0x45, 0x96, 0xb7, 0x68, 0xf6, 0xb7, 0xf6, 0xb1, - 0x5d, 0xdb, 0xb7, 0x58, 0xe5, 0x50, 0xc3, 0xff, 00, 0xad, - 0x5f, 0x2f, 0x8a, 0xe1, 0x8c, 0x3d, 0x4b, 0xbc, 0x3c, 0x9c, - 0x5f, 0x6d, 0xd7, 0xf9, 0x9e, 0x75, 0x4c, 0xbe, 0x12, 0xd6, - 0xe, 0xc7, 0xc4, 0x14, 0x57, 0xa5, 0x7c, 0x60, 0xf8, 0x56, - 0xbe, 0x5, 0xb8, 0x8a, 0xfb, 0x4f, 0x2f, 0x26, 0x93, 0x72, - 0xe5, 0x70, 0xfc, 0x98, 0x5f, 0xa8, 0x5c, 0xf7, 0x4, 0x67, - 0x7, 0xda, 0xbc, 0xd6, 0xbf, 0x3c, 0xc5, 0x61, 0xaa, 0xe0, - 0xea, 0xba, 0x35, 0x55, 0x9a, 0x3c, 0x4a, 0x94, 0xe5, 0x4a, - 0x4e, 0x32, 0xdc, 0x28, 0xa2, 0x8a, 0xe5, 0x33, 0xa, 0xea, - 0x7e, 0x19, 0x78, 0x96, 0x5f, 0xb, 0x78, 0xd3, 0x4d, 0xba, - 0x46, 0x22, 0x19, 0x25, 0x10, 0x4e, 0xb9, 0xe1, 0xa3, 0x62, - 0x1, 0xcf, 0xd3, 0x83, 0xf8, 0x57, 0x2d, 0x4a, 0xac, 0x55, - 0x81, 0x7, 0x4, 0x1c, 0x82, 0x2b, 0x6a, 0x35, 0x65, 0x42, - 0xac, 0x6a, 0xc7, 0x74, 0xee, 0x54, 0x24, 0xe1, 0x25, 0x25, - 0xd0, 0xfb, 0xaa, 0x8a, 0x82, 0xc5, 0xda, 0x5b, 0x2b, 0x77, - 0x6e, 0x19, 0xa3, 0x52, 0x7e, 0xb8, 0xa9, 0xeb, 0xf7, 0x94, - 0xee, 0xae, 0x7d, 0x9a, 0xd4, 0x28, 0xa2, 0x8a, 0x60, 0x21, - 0x38, 0x15, 0xf1, 0xaf, 0xed, 0xf, 0x77, 0xe7, 0x6b, 0xb2, - 0x8f, 0x57, 0x3f, 0xce, 0xbe, 0xc8, 0x94, 0xed, 0x89, 0xcf, - 0xa2, 0x93, 0x5f, 0x10, 0x7c, 0x73, 0xb9, 0xf3, 0xbc, 0x45, - 0x2f, 0xfb, 0xed, 0xfc, 0xeb, 0xe5, 0x78, 0x86, 0x56, 0xc3, - 0xc6, 0x3d, 0xd9, 0xf3, 0xb9, 0xec, 0xb9, 0x70, 0xac, 0xf1, - 0x1f, 0x14, 0xc9, 0xb2, 0xc2, 0x6f, 0xf7, 0x4d, 0x76, 0x9f, - 0xf0, 0x4c, 0x9d, 0x3c, 0x5d, 0x7c, 0x65, 0xf8, 0x91, 0xa9, - 0x11, 0x9f, 0xb3, 0xe9, 0x96, 0xd6, 0xe1, 0xb1, 0xfd, 0xf9, - 0x59, 0x8f, 0xfe, 0x81, 0x5c, 0xf, 0x8d, 0x25, 0xd9, 0xa6, - 0x4d, 0xf4, 0x35, 0xeb, 0xff, 00, 0xf0, 0x4b, 0x2b, 0xd, - 0xf7, 0x3f, 0x15, 0x35, 0x22, 0x3e, 0xfd, 0xcd, 0x95, 0xba, - 0x9f, 0xf7, 0x52, 0x46, 0x3f, 0xfa, 0x10, 0xac, 0x72, 0x38, - 0xe9, 0x73, 0xe1, 0xb8, 0x5e, 0x3c, 0xd9, 0x95, 0x49, 0x76, - 0x47, 0xdf, 0x74, 0x51, 0x45, 0x7d, 0x81, 0xfa, 0xd8, 0x51, - 0x45, 0x66, 0x78, 0x9b, 0x5d, 0x83, 0xc3, 0x1e, 0x1e, 0xd4, - 0x75, 0x6b, 0x93, 0x88, 0x6c, 0xe0, 0x79, 0xd8, 0x67, 0x19, - 0xda, 0x33, 0x8f, 0xa9, 0xe9, 0x4a, 0x4d, 0x45, 0x36, 0xfa, - 0x13, 0x29, 0x28, 0xa7, 0x27, 0xb2, 0x3e, 0x49, 0xfd, 0xaa, - 0xfc, 0x62, 0xda, 0xef, 0xc4, 0x25, 0xd1, 0xe3, 0x72, 0x6d, - 0x34, 0x88, 0x82, 0x15, 0xc8, 0x20, 0xca, 0xe0, 0x33, 0x1f, - 0xcb, 0x68, 0xfc, 0xd, 0x27, 0xec, 0xc1, 0xe1, 0xf, 0xed, - 0xcf, 0x1b, 0xad, 0xfc, 0xd1, 0xee, 0xb7, 0xb2, 0x52, 0xf9, - 0x23, 0x8d, 0xdd, 0xab, 0xc8, 0xf5, 0x6d, 0x52, 0xe3, 0x5e, - 0xd5, 0xef, 0x35, 0x1b, 0xa7, 0x32, 0x5c, 0xdd, 0xcc, 0xd3, - 0x48, 0xc7, 0xd5, 0x8e, 0x6b, 0xec, 0x9f, 0xd9, 0xaf, 0xc2, - 0x3f, 0xf0, 0x8f, 0x78, 0x12, 0x3b, 0xb9, 0x13, 0x6d, 0xc5, - 0xe3, 0x17, 0x39, 0xfe, 0xef, 0x6a, 0xfc, 0xef, 0x8, 0x9e, - 0x63, 0x99, 0x7b, 0x49, 0x6d, 0x7b, 0xfc, 0x96, 0xdf, 0xa1, - 0xf9, 0xd6, 0x5c, 0x9e, 0x63, 0x99, 0x4b, 0x11, 0x2d, 0x93, - 0xbf, 0xf9, 0x1e, 0xbb, 0x45, 0x14, 0x57, 0xe8, 0xa7, 0xe8, - 0xe1, 0x45, 0x79, 0xef, 0xed, 0x1, 0xf1, 0x6a, 0xcb, 0xe0, - 0x67, 0xc1, 0xbf, 0x15, 0xf8, 0xde, 0xf9, 0x94, 0x2e, 0x93, - 0x62, 0xf2, 0xc2, 0x8d, 0xd2, 0x59, 0xc8, 0xdb, 0xa, 0x7f, - 0xc0, 0x9c, 0xa8, 0xfc, 0x6b, 0xf2, 0x66, 0xc3, 0xfe, 0xb, - 0x29, 0xf1, 0xba, 0xdd, 0x97, 0xed, 0x5a, 0x2f, 0x83, 0xae, - 0xd0, 0x75, 0x2, 0xc2, 0xe2, 0x32, 0x7f, 0x11, 0x39, 0xfe, - 0x54, 0xa, 0xf6, 0x3f, 0x6a, 0x2b, 0xc7, 0x7f, 0x6b, 0xaf, - 0x8c, 0xf0, 0x7c, 0x4, 0xfd, 0x9e, 0xbc, 0x63, 0xe2, 0xe7, - 0x90, 0x2d, 0xe4, 0x36, 0x8d, 0x6d, 0x60, 0xb9, 0xc1, 0x7b, - 0xa9, 0x7f, 0x77, 0x10, 0x1f, 0x46, 0x6d, 0xc7, 0xd9, 0x4d, - 0x5f, 0xfd, 0x98, 0xbe, 0x21, 0x78, 0xaf, 0xe2, 0xc7, 0xc1, - 0x1f, 0xc, 0xf8, 0xc3, 0xc6, 0x5a, 0x5d, 0x96, 0x8b, 0xac, - 0x6b, 0x50, 0x7d, 0xb1, 0x6c, 0x6c, 0x43, 0xec, 0x8e, 0x6, - 0x3f, 0xba, 0x27, 0x79, 0x27, 0x2c, 0xb8, 0x6f, 0xf8, 0x10, - 0x15, 0x6f, 0xe3, 0x9f, 0xec, 0xf9, 0xe0, 0xaf, 0xda, 0x37, - 0xc3, 0x16, 0x9e, 0x1e, 0xf1, 0xd5, 0x85, 0xce, 0xa5, 0xa4, - 0xdb, 0x5c, 0x8b, 0xc8, 0xe0, 0xb7, 0xbc, 0x96, 0xdf, 0xf7, - 0xa1, 0x59, 0x43, 0x13, 0x1b, 0x2, 0x70, 0x19, 0xb8, 0x3c, - 0x73, 0x40, 0xcf, 0xe6, 0xc6, 0x59, 0x5e, 0x79, 0x5e, 0x49, - 0x18, 0xbc, 0x8e, 0x4b, 0x33, 0x31, 0xc9, 0x24, 0xf5, 0x26, - 0x9b, 0x5f, 0xba, 0x57, 0x5f, 0xf0, 0x49, 0xbf, 0xd9, 0xda, - 0xe1, 0x8, 0x8f, 0x40, 0xd6, 0x2d, 0x4f, 0xf7, 0xa2, 0xd6, - 0x67, 0x27, 0xff, 00, 0x1e, 0x26, 0xb0, 0x6f, 0x7f, 0xe0, - 0x8f, 0x3f, 0x2, 0x6e, 0x3, 0x79, 0x17, 0x5e, 0x2a, 0xb4, - 0x27, 0xa6, 0xdd, 0x4a, 0x36, 0x3, 0xf3, 0x8a, 0xaa, 0xe4, - 0x72, 0xb3, 0xf1, 0x2e, 0x8a, 0xfd, 0x8a, 0xd4, 0x7f, 0xe0, - 0x8b, 0x1f, 0xc, 0x27, 0x2c, 0x6c, 0xfc, 0x6d, 0xe2, 0xab, - 0x4f, 0x40, 0xff, 00, 0x67, 0x90, 0xf, 0xfc, 0x86, 0xd, - 0x72, 0xf7, 0xdf, 0xf0, 0x44, 0x8d, 0x5, 0xd9, 0xbe, 0xc5, - 0xf1, 0x4b, 0x51, 0x88, 0x76, 0x13, 0xe9, 0x51, 0xbf, 0xf2, - 0x91, 0x68, 0xb8, 0xb9, 0x59, 0xf9, 0x39, 0x8f, 0x6a, 0xfe, - 0x88, 0x7f, 0x62, 0xf, 0x82, 0xb1, 0xfc, 0x7, 0xfd, 0x9a, - 0xbc, 0x1f, 0xe1, 0xd6, 0x89, 0x53, 0x53, 0xb8, 0xb6, 0x1a, - 0x96, 0xa2, 0xc0, 0x60, 0xb5, 0xcc, 0xe0, 0x3b, 0x3, 0xfe, - 0xe8, 0x2a, 0x9f, 0x45, 0x15, 0xf1, 0xe7, 0x83, 0xff, 00, - 0xe0, 0x8b, 0xe9, 0xe1, 0xcf, 0x1e, 0x68, 0x3a, 0xad, 0xff, - 00, 0xc4, 0x68, 0x75, 0x8d, 0x16, 0xc6, 0xfa, 0x1b, 0x9b, - 0xab, 0x6, 0xd2, 0x8c, 0x4f, 0x71, 0x1a, 0x38, 0x63, 0x1e, - 0xef, 0x34, 0x81, 0xbb, 0x18, 0xe9, 0xde, 0xbf, 0x4e, 0x95, - 0x42, 0x28, 0x55, 0x1, 0x54, 0xc, 00, 0x3a, 0x1, 0x49, - 0x94, 0x95, 0x8a, 0x9a, 0xbe, 0xa5, 0x16, 0x8f, 0xa5, 0x5d, - 0xdf, 0x4c, 0x40, 0x8a, 0xda, 0x26, 0x95, 0x89, 0xf4, 0x3, - 0x35, 0xf1, 0x4e, 0xa5, 0xa8, 0x4d, 0xaa, 0xea, 0x17, 0x37, - 0xb7, 0xd, 0xbe, 0x7b, 0x89, 0x1a, 0x57, 0x3e, 0xe4, 0xe4, - 0xd7, 0xd6, 0x7f, 0x14, 0xf4, 0xd, 0x5f, 0xc5, 0x1e, 0x13, - 0x97, 0x4b, 0xd1, 0xcc, 0x2b, 0x2d, 0xc4, 0x8a, 0x25, 0x33, - 0x39, 0x51, 0xe5, 0x8e, 0x48, 0x1c, 0x1e, 0xa4, 0xf, 0xd6, - 0xbc, 0x32, 0x4f, 0xd9, 0xfb, 0xc5, 0xc8, 0x38, 0x82, 0xd2, - 0x4f, 0xf7, 0x6e, 0x7, 0xf5, 0xc5, 0x7c, 0x17, 0x11, 0x51, - 0xc5, 0x62, 0xaa, 0x42, 0x9d, 0x1a, 0x6d, 0xc6, 0x2a, 0xfa, - 0x2e, 0xaf, 0xfc, 0x8f, 0x23, 0x1d, 0x1a, 0x95, 0x24, 0x94, - 0x62, 0xda, 0x47, 0x9b, 0x51, 0x5d, 0xec, 0xdf, 0x3, 0x7c, - 0x67, 0xf, 0xfc, 0xc2, 0x84, 0x9f, 0xee, 0x5c, 0x46, 0x7f, - 0xf6, 0x6a, 0xa5, 0x2f, 0xc2, 0x2f, 0x18, 0x43, 0xf7, 0xb4, - 0x2b, 0x83, 0xfe, 0xe9, 0x56, 0xfe, 0x46, 0xbe, 0x2a, 0x58, - 0xc, 0x5c, 0x77, 0xa5, 0x2f, 0xb9, 0x9e, 0x4b, 0xa3, 0x55, - 0x7d, 0x97, 0xf7, 0x1c, 0x7d, 0x7d, 0x3f, 0xfb, 0x3f, 0xe8, - 0x1f, 0xd9, 0x3e, 0x4, 0x4b, 0xb7, 0x4d, 0xb3, 0x6a, 0x12, - 0xb4, 0xc4, 0x91, 0xce, 0xc1, 0xf2, 0xaf, 0xf2, 0x27, 0xf1, - 0xaf, 0x9, 0xb7, 0xf8, 0x63, 0xe2, 0x79, 0x6f, 0x60, 0xb7, - 0x93, 0x44, 0xbd, 0x84, 0x49, 0x22, 0xa1, 0x91, 0xa1, 0x3b, - 0x57, 0x27, 0x19, 0x27, 0xd0, 0x57, 0xd7, 0x3a, 0x75, 0x8c, - 0x5a, 0x5d, 0x85, 0xb5, 0x9c, 0xb, 0xb6, 0x18, 0x23, 0x58, - 0x90, 0x7a, 00, 0x30, 0x2b, 0xeb, 0x38, 0x6b, 0x5, 0x38, - 0xd7, 0x9d, 0x7a, 0xb1, 0x6b, 0x95, 0x59, 0x5d, 0x5b, 0x57, - 0xff, 00, 0x3, 0xf3, 0x3d, 0x2c, 0x5, 0x26, 0xa6, 0xe7, - 0x25, 0xb1, 0x66, 0x8a, 0x28, 0xaf, 0xd1, 0x4f, 0x74, 0x2b, - 0xcd, 0x7f, 0x68, 0x38, 0xbc, 0xcf, 0x87, 0x53, 0x36, 0x3e, - 0xe5, 0xcc, 0x4d, 0xfa, 0xe3, 0xfa, 0xd7, 0xa5, 0x57, 0x3, - 0xf1, 0xce, 0x2f, 0x37, 0xe1, 0x9e, 0xa8, 0x7f, 0xb8, 0xd1, - 0x37, 0xfe, 0x44, 0x5f, 0xf1, 0xaf, 0x37, 0x32, 0x5c, 0xd8, - 0x2a, 0xcb, 0xfb, 0xaf, 0xf2, 0x39, 0xf1, 0xa, 0xf4, 0xa5, - 0xe8, 0x7c, 0xa5, 0x45, 0x14, 0x57, 0xe2, 0x27, 0xc9, 0x5, - 0x14, 0x51, 0x40, 0x1f, 0x64, 0x7c, 0x3a, 0xba, 0xfb, 0x67, - 0x80, 0xf4, 0x9, 0x49, 0xc9, 0x36, 0x51, 0x3, 0xf5, 0xa, - 0x7, 0xf4, 0xae, 0x8e, 0xb8, 0x4f, 0x82, 0x17, 0x86, 0xf3, - 0xe1, 0xa6, 0x95, 0x93, 0x93, 0x17, 0x99, 0x11, 0xfc, 0x1d, - 0xb1, 0xfa, 0x62, 0xbb, 0xba, 0xfd, 0xd3, 0x5, 0x3f, 0x69, - 0x86, 0xa5, 0x3e, 0xf1, 0x5f, 0x91, 0xf6, 0x14, 0x5f, 0x35, - 0x38, 0xbf, 0x24, 0x14, 0x51, 0x45, 0x76, 0x1a, 0x85, 0x14, - 0x56, 0x7f, 0x88, 0x35, 0x68, 0xf4, 0x1d, 0xe, 0xff, 00, - 0x51, 0x97, 0xee, 0x5a, 0xc2, 0xf2, 0x9f, 0x7c, 0xe, 0x5, - 0x4c, 0xa4, 0xa1, 0x17, 0x29, 0x6c, 0x84, 0xdd, 0x95, 0xd9, - 0xf2, 0xbf, 0xc6, 0xd, 0x78, 0xf8, 0x83, 0xe2, 0x6, 0xa9, - 0x20, 0x6d, 0xd0, 0xdb, 0xbf, 0xd9, 0x63, 0xfa, 0x27, 0x7, - 0xff, 00, 0x1e, 0xdc, 0x7f, 0x1a, 0xe3, 0x2a, 0x4b, 0x89, - 0xde, 0xea, 0x79, 0x66, 0x90, 0xee, 0x92, 0x46, 0x2e, 0xc7, - 0xd4, 0x93, 0x93, 0x51, 0xd7, 0xe1, 0x38, 0x8a, 0xcf, 0x11, - 0x5a, 0x75, 0x65, 0xf6, 0x9b, 0x67, 0xc7, 0x4e, 0x4e, 0x72, - 0x72, 0x7d, 0x42, 0x8a, 0x28, 0xae, 0x72, 0xe, 0xb7, 0xe1, - 0x46, 0x8f, 0xfd, 0xb7, 0xf1, 0x7, 0x46, 0x81, 0x97, 0x7c, - 0x69, 0x37, 0x9e, 0xe3, 0xb6, 0x10, 0x16, 0xfe, 0x60, 0x57, - 0xd7, 0xd5, 0xf3, 0xdf, 0xec, 0xd1, 0xa3, 0xf9, 0xfa, 0xd6, - 0xad, 0xa9, 0xb2, 0xf1, 0x6f, 0xa, 0xc0, 0x87, 0xdd, 0xce, - 0x4f, 0xe8, 0xbf, 0xad, 0x7d, 0x9, 0x5f, 0xaa, 0xf0, 0xd5, - 0xf, 0x67, 0x82, 0xf6, 0x8f, 0x79, 0x36, 0xfe, 0x4b, 0x43, - 0xe8, 0xf0, 0x10, 0xe5, 0xa5, 0xcd, 0xdc, 0x28, 0xa2, 0x8a, - 0xfa, 0xb3, 0xd2, 0xa, 0x28, 0xa2, 0x80, 0xa, 0xf9, 0xdb, - 0xf6, 0x88, 0xf0, 0x69, 0xd3, 0xf5, 0x98, 0x7c, 0x41, 0x6e, - 0x9f, 0xe8, 0xf7, 0x98, 0x8e, 0x7c, 0xf, 0xbb, 0x28, 0x1c, - 0x1f, 0xc4, 0xf, 0xfc, 0x77, 0xde, 0xbe, 0x89, 0xac, 0xdf, - 0x10, 0xe8, 0x36, 0x9e, 0x27, 0xd1, 0xae, 0xb4, 0xcb, 0xd4, - 0xdf, 0x6f, 0x70, 0xbb, 0x5b, 0x1d, 0x54, 0xf5, 0x4, 0x7b, - 0x83, 0xcd, 0x79, 0x59, 0x9e, 0x9, 0x63, 0xf0, 0xd2, 0xa3, - 0xd7, 0x75, 0xeb, 0xfd, 0x68, 0x73, 0x62, 0x28, 0xfb, 0x6a, - 0x6e, 0x3d, 0x4f, 0x89, 0xa8, 0xae, 0x8b, 0xc7, 0x1e, 0x8, - 0xbf, 0xf0, 0x2e, 0xb5, 0x25, 0x95, 0xe2, 0x16, 0x88, 0x92, - 0x60, 0xb8, 0x3, 0xe5, 0x95, 0x3d, 0x47, 0xbf, 0xa8, 0xed, - 0x5c, 0xed, 0x7e, 0x33, 0x56, 0x94, 0xe8, 0xcd, 0xd3, 0xa8, - 0xac, 0xd1, 0xf2, 0xb2, 0x8b, 0x8b, 0xe5, 0x96, 0xe1, 0x45, - 0x14, 0x56, 0x44, 0x9b, 0x7e, 0x12, 0xf1, 0x86, 0xa7, 0xe0, - 0xbd, 0x51, 0x6f, 0xb4, 0xd9, 0xb6, 0x3f, 0xdd, 0x92, 0x36, - 0xe5, 0x25, 0x5f, 0x46, 0x15, 0xf4, 0x1f, 0x85, 0x3e, 0x3e, - 0x78, 0x7b, 0x5d, 0x44, 0x8f, 0x50, 0x66, 0xd1, 0xee, 0xb8, - 0x4, 0x4f, 0xcc, 0x44, 0xfb, 0x38, 0xe9, 0xf8, 0xe2, 0xbe, - 0x61, 0xa2, 0xbd, 0xac, 0x6, 0x6d, 0x89, 0xcb, 0xfd, 0xda, - 0x6e, 0xf1, 0xec, 0xf6, 0xff, 00, 0x80, 0x75, 0x51, 0xc4, - 0xd4, 0xa1, 0xa4, 0x76, 0xec, 0x7d, 0xb7, 0x69, 0xe2, 0xd, - 0x2e, 0xfd, 0x3, 0x5b, 0x6a, 0x36, 0x97, 0xa, 0x46, 0x73, - 0x1c, 0xea, 0xdf, 0xc8, 0xd4, 0xb3, 0x6a, 0xf6, 0x36, 0xeb, - 0xba, 0x5b, 0xdb, 0x78, 0x97, 0xd5, 0xe5, 0x50, 0x3f, 0x9d, - 0x7c, 0x3f, 0x8a, 0x31, 0x5f, 0x46, 0xb8, 0xae, 0x76, 0xd6, - 0x8e, 0xbe, 0xbf, 0xf0, 0xe, 0xff, 00, 0xed, 0x27, 0xfc, - 0xbf, 0x89, 0xf5, 0x9f, 0x88, 0xbe, 0x32, 0xf8, 0x5b, 0xc3, - 0xb1, 0x9c, 0xea, 0x2b, 0x7f, 0x38, 0xe9, 0xd, 0x96, 0x24, - 0x3f, 0x98, 0xe0, 0x7e, 0x26, 0xbc, 0x47, 0xe2, 0x7, 0xc6, - 0xad, 0x5b, 0xc6, 0x4b, 0x25, 0xa5, 0xa8, 0x3a, 0x66, 0x96, - 0xc0, 0xab, 0x43, 0x1b, 0x65, 0xe5, 0x1f, 0xed, 0xb7, 0xa7, - 0xb0, 0xe3, 0xeb, 0x5e, 0x75, 0x45, 0x78, 0x98, 0xdc, 0xf7, - 0x17, 0x8c, 0x8b, 0x85, 0xf9, 0x62, 0xfa, 0x2f, 0xf3, 0x39, - 0x2a, 0xe3, 0x2a, 0xd5, 0x56, 0xd9, 0x5, 0x14, 0x51, 0x5f, - 0x3a, 0x70, 0x85, 0x14, 0x55, 0x8b, 0xd, 0x3e, 0xe7, 0x55, - 0xbc, 0x86, 0xd2, 0xd2, 0x17, 0xb8, 0xb9, 0x95, 0x82, 0xa4, - 0x68, 0x32, 0x58, 0xd3, 0x49, 0xc9, 0xd9, 0x6e, 0x1b, 0x89, - 0x65, 0x65, 0x3e, 0xa3, 0x77, 0xd, 0xad, 0xb4, 0x4d, 0x35, - 0xc4, 0xcc, 0x11, 0x23, 0x41, 0x92, 0xc4, 0xf6, 0xaf, 0xad, - 0x3e, 0x18, 0xf8, 0x6, 0x2f, 00, 0xf8, 0x7d, 0x6d, 0xdb, - 0x64, 0x9a, 0x84, 0xe7, 0xcc, 0xb9, 0x99, 0x7b, 0xb7, 0x65, - 0x1e, 0xc3, 0xfc, 0x4f, 0x7a, 0xc6, 0xf8, 0x4b, 0xf0, 0x9a, - 0x2f, 0x4, 0x5b, 0xfd, 0xbf, 0x50, 0x9, 0x36, 0xb5, 0x2a, - 0xe0, 0x95, 0x39, 0x58, 0x14, 0xff, 00, 0xa, 0xfb, 0xfa, - 0x9f, 0xc3, 0xeb, 0xe9, 0x35, 0xfa, 0x86, 0x47, 0x94, 0x3c, - 0x1a, 0xfa, 0xc5, 0x75, 0xef, 0xbd, 0x97, 0x65, 0xfe, 0x67, - 0xd0, 0xe0, 0xf0, 0xbe, 0xcb, 0xdf, 0x9e, 0xff, 00, 0x90, - 0x51, 0x45, 0x23, 0x30, 0x55, 0x24, 0x9c, 0x1, 0xc9, 0x35, - 0xf5, 0xe7, 0xa8, 0x71, 0xba, 0xef, 0xc5, 0x8d, 0xf, 0xc3, - 0x5e, 0x29, 0xfe, 0xc4, 0xd4, 0x64, 0x7b, 0x77, 0xf2, 0x96, - 0x43, 0x73, 0xb7, 0x31, 0xa9, 0x39, 0xf9, 0x5b, 0x1c, 0x8e, - 0x30, 0x73, 0x8c, 0x73, 0x5d, 0x55, 0x8e, 0xa3, 0x6b, 0xaa, - 0x40, 0xb3, 0xd9, 0xdc, 0xc5, 0x75, 0xb, 0x72, 0x24, 0x85, - 0xc3, 0x29, 0xfc, 0x45, 0x7c, 0x75, 0xe3, 0x8d, 0x78, 0xf8, - 0x9b, 0xc5, 0xba, 0xa6, 0xa5, 0x9c, 0xa4, 0xd3, 0xb7, 0x97, - 0xfe, 0xe0, 0xe1, 0x7f, 0x40, 0x2a, 0x86, 0x93, 0xae, 0x6a, - 0x1a, 0xd, 0xc8, 0xb8, 0xd3, 0xaf, 0x67, 0xb2, 0x97, 0xfb, - 0xd0, 0xb9, 0x5c, 0xfd, 0x7d, 0x7f, 0x1a, 0xfc, 0xf5, 0x71, - 0x3c, 0xa9, 0xd7, 0x9c, 0x67, 0xe, 0x68, 0x5d, 0xda, 0xda, - 0x3b, 0x7e, 0xbf, 0x81, 0xe1, 0xac, 0xc1, 0xa9, 0xb4, 0xd5, - 0xd1, 0xf6, 0xed, 0x15, 0xf3, 0x26, 0x8d, 0xfb, 0x43, 0x78, - 0x9f, 0x4e, 0xda, 0xb7, 0x82, 0xd7, 0x53, 0x8c, 0x75, 0xf3, - 0x63, 0xd8, 0xe7, 0xf1, 0x5c, 0xf, 0xd2, 0xbb, 0x6d, 0x2f, - 0xf6, 0x96, 0xd2, 0xa6, 0x55, 0x1a, 0x86, 0x95, 0x77, 0x6c, - 0xdd, 0xcc, 0xc, 0xb2, 0x2f, 0xeb, 0xb4, 0xd7, 0xd0, 0x51, - 0xcf, 0xf0, 0x15, 0xb7, 0x9f, 0x2b, 0xf3, 0x5f, 0xd2, 0x3b, - 0x61, 0x8d, 0xa3, 0x2e, 0xb6, 0x3d, 0x96, 0x8a, 0xf3, 0xcb, - 0x5f, 0x8f, 0x5e, 0xe, 0xb8, 0xc6, 0xeb, 0xe9, 0xad, 0xcf, - 0xa4, 0xb6, 0xef, 0xfd, 0x1, 0xad, 0x8, 0xbe, 0x31, 0x78, - 0x3a, 0x51, 0xc6, 0xb9, 0x2, 0xff, 00, 0xbc, 0xae, 0x3f, - 0x98, 0xaf, 0x4a, 0x39, 0x86, 0xe, 0x7f, 0xd, 0x58, 0xfd, - 0xe8, 0xe8, 0x55, 0xe9, 0x3d, 0xa4, 0xbe, 0xf3, 0xb3, 0xa2, - 0xb8, 0xa9, 0xfe, 0x32, 0xf8, 0x36, 0x1, 0x93, 0xad, 0xc4, - 0xff, 00, 0xf5, 0xce, 0x37, 0x6f, 0xe4, 0x2b, 0x9b, 0xd7, - 0x7f, 0x68, 0xcd, 0x2, 0xca, 0x16, 0x1a, 0x65, 0xbd, 0xce, - 0xa3, 0x3f, 0xf0, 0xee, 0x5f, 0x2a, 0x3f, 0xc4, 0x9e, 0x7f, - 0x4a, 0x8a, 0x99, 0x9e, 0xa, 0x92, 0xbc, 0xaa, 0xc7, 0xef, - 0xbf, 0xe4, 0x29, 0x62, 0x29, 0x45, 0x5d, 0xc9, 0x16, 0xbf, - 0x68, 0x6d, 0x4a, 0xde, 0xd7, 0xc0, 0x46, 0xd6, 0x42, 0x3e, - 0xd1, 0x75, 0x71, 0x18, 0x89, 0x7b, 0xfc, 0xa7, 0x73, 0x1f, - 0xc8, 0x63, 0xf1, 0xaf, 0x98, 0xeb, 0x7b, 0xc6, 0x3e, 0x35, - 0xd4, 0xfc, 0x71, 0xaa, 0x7d, 0xb7, 0x52, 0x90, 0x12, 0xa3, - 0x6c, 0x50, 0xc6, 0x30, 0x91, 0xaf, 0xa0, 0x1f, 0xd7, 0xad, - 0x60, 0xd7, 0xe5, 0x99, 0xbe, 0x3a, 0x38, 0xfc, 0x53, 0xab, - 0x5, 0xee, 0xa5, 0x64, 0x7c, 0xe6, 0x26, 0xb2, 0xad, 0x53, - 0x99, 0x6c, 0x14, 0x51, 0x45, 0x78, 0xa7, 0x28, 0x55, 0xcd, - 0x1e, 0xc5, 0xb5, 0x3d, 0x5e, 0xca, 0xcd, 0x46, 0x5a, 0xe2, - 0x74, 0x88, 0x1, 0xfe, 0xd3, 0x1, 0xfd, 0x6a, 0x9d, 0x7a, - 0x77, 0xc0, 0x1f, 0xa, 0x9d, 0x73, 0xc6, 0x1f, 0xda, 0x12, - 0xa9, 0x36, 0xda, 0x6a, 0xf9, 0xb9, 0xec, 0x64, 0x3c, 0x20, - 0xfe, 0x67, 0xf0, 0x15, 0xdb, 0x82, 0xc3, 0xcb, 0x15, 0x88, - 0x85, 0x18, 0xf5, 0x7f, 0x87, 0x5f, 0xc0, 0xd6, 0x94, 0x1d, - 0x49, 0xa8, 0xae, 0xa7, 0xd3, 0x68, 0xa1, 0x14, 0x28, 0xe8, - 0x6, 0x29, 0xd4, 0x51, 0x5f, 0xb9, 0x9f, 0x60, 0x14, 0x51, - 0x45, 00, 0x56, 0xd4, 0x5f, 0xcb, 0xb0, 0xb8, 0x6e, 0x98, - 0x43, 0xfc, 0xab, 0xe1, 0x1f, 0x8b, 0xd7, 0x1e, 0x77, 0x88, - 0xe5, 0xef, 0xf3, 0x1f, 0xe7, 0x5f, 0x72, 0xf8, 0x92, 0x5f, - 0x27, 0x43, 0xbc, 0x6e, 0x98, 0x8c, 0xd7, 0xc1, 0x5f, 0x12, - 0xa6, 0xf3, 0xbc, 0x45, 0x3f, 0xb3, 0x1a, 0xf8, 0xce, 0x22, - 0x97, 0xbb, 0x4e, 0x3e, 0x67, 0xc9, 0xf1, 0xc, 0xad, 0x41, - 0x23, 0xc8, 0x3e, 0x20, 0x4b, 0xb3, 0x4a, 0x9b, 0xe8, 0x6b, - 0xe9, 0x1f, 0xf8, 0x25, 0xa6, 0x9e, 0x23, 0xf8, 0x57, 0xe3, - 0x5b, 0xfc, 0x7c, 0xd7, 0x5e, 0x20, 0x64, 0xcf, 0xb2, 0x41, - 0x1f, 0xff, 00, 0x14, 0x6b, 0xe6, 0x1f, 0x89, 0x93, 0x6c, - 0xd2, 0x65, 0xfa, 0x1f, 0xe5, 0x5f, 0x60, 0x7f, 0xc1, 0x32, - 0x6c, 0x3e, 0xcd, 0xfb, 0x35, 0x1b, 0xad, 0xb8, 0x37, 0xba, - 0xe5, 0xec, 0xd9, 0xf5, 00, 0xaa, 0x7f, 0xec, 0x95, 0xd9, - 0x92, 0xc6, 0xd4, 0xcf, 0x99, 0xe1, 0x18, 0xdf, 0x13, 0x5e, - 0x7e, 0x87, 0xd6, 0x74, 0x51, 0x45, 0x7d, 0x39, 0xfa, 0x90, - 0x57, 0x82, 0xfe, 0xd6, 0xde, 0x35, 0x3a, 0x3f, 0x84, 0x6d, - 0x3c, 0x3f, 0x3, 0x62, 0x7d, 0x56, 0x4d, 0xd2, 0xe0, 0xf2, - 0x22, 0x42, 0xf, 0xea, 0xd8, 0x1f, 0x81, 0xaf, 0x7a, 0xaf, - 0x85, 0xbf, 0x68, 0x3f, 0x1a, 0x1f, 0x1a, 0x7c, 0x4b, 0xd4, - 0x1a, 0x29, 0x4, 0x96, 0x5a, 0x79, 0xfb, 0x15, 0xbe, 0xd2, - 0x70, 0x42, 0x9f, 0x98, 0xfe, 0x2d, 0x9f, 0xc8, 0x57, 0x85, - 0x9c, 0xe2, 0x3d, 0x86, 0x15, 0xa5, 0xbc, 0xb4, 0xff, 00, - 0x33, 0xe7, 0xb3, 0xdc, 0x4f, 0xd5, 0xf0, 0x6e, 0x29, 0xeb, - 0x2d, 0x3f, 0xcf, 0xf0, 0x39, 0x5f, 0x2, 0xf8, 0x7e, 0x4f, - 0x12, 0xf8, 0xa3, 0x4f, 0xd3, 0xe3, 0x5d, 0xde, 0x6c, 0xaa, - 0xf, 0xd3, 0x3c, 0xd7, 0xe8, 0x46, 0x95, 0xa7, 0xc7, 0xa5, - 0x69, 0xd6, 0xf6, 0x91, 00, 0xb1, 0xc2, 0x81, 00, 0x1e, - 0xd5, 0xf2, 0xef, 0xec, 0x9d, 0xe0, 0xff, 00, 0xb6, 0x6b, - 0x77, 0x7a, 0xd4, 0xc9, 0x98, 0xed, 0xd3, 0x6c, 0x64, 0x8e, - 0x37, 0x1a, 0xfa, 0xb6, 0xb8, 0xb8, 0x7f, 0xf, 0xc9, 0x46, - 0x55, 0xde, 0xf2, 0xfc, 0x91, 0x87, 0xf, 0xe1, 0xbd, 0x8e, - 0x1b, 0xda, 0x3d, 0xe5, 0xf9, 0x5, 0x14, 0x51, 0x5f, 0x54, - 0x7d, 0x41, 0xf9, 0x87, 0xff, 00, 0x5, 0x9e, 0xf8, 0xdd, - 0x1d, 0xb6, 0x8b, 0xe1, 0x2f, 0x85, 0x76, 0x17, 0x2c, 0x2e, - 0x2e, 0x65, 0xfe, 0xda, 0xd4, 0xe3, 0x46, 0xc0, 0xf2, 0x97, - 0x72, 0x40, 0x8d, 0xeb, 0x96, 0xde, 0xd8, 0xff, 00, 0x61, - 0x4d, 0x7e, 0x72, 0xfe, 0xcf, 0x7f, 0xa, 0xe5, 0xf8, 0xdb, - 0xf1, 0xb3, 0xc1, 0xbe, 0x7, 0x89, 0xfc, 0xb5, 0xd6, 0x75, - 0x8, 0xe0, 0x99, 0xf3, 0x8d, 0xb0, 0x8c, 0xbc, 0xa4, 0x7b, - 0x88, 0xd5, 0xc8, 0xf7, 0xaf, 0x55, 0xff, 00, 0x82, 0x90, - 0x6b, 0xf7, 0x9a, 0xff, 00, 0xed, 0x9f, 0xf1, 0x1c, 0xdd, - 0xc8, 0xce, 0xb6, 0x77, 0x30, 0x59, 0x40, 0xac, 0x73, 0xb2, - 0x34, 0xb7, 0x8c, 00, 0x3d, 0xb2, 0x58, 0xff, 00, 0xc0, - 0x8d, 0x7c, 0xfb, 0xe1, 0x5f, 0x15, 0x6a, 0xfe, 0x7, 0xf1, - 0x1e, 0x9d, 0xaf, 0xe8, 0x3a, 0x84, 0xfa, 0x56, 0xb3, 0xa7, - 0xcc, 0xb7, 0x16, 0xb7, 0x96, 0xcd, 0xb6, 0x48, 0x9c, 0x74, - 0x20, 0xff, 00, 0x9c, 0xf4, 0xaa, 0x33, 0x6f, 0x53, 0xfa, - 0x71, 0x51, 0xa7, 0xf8, 0x4b, 0xc3, 0xc0, 0x7c, 0x96, 0x7a, - 0x5e, 0x99, 0x6b, 0x8f, 0x45, 0x8a, 0x18, 0xd3, 0xf9, 0x5, - 0x5f, 0xd2, 0xbf, 0xe, 0xbe, 0x24, 0x7f, 0xc1, 0x4e, 0x7e, - 0x37, 0x6a, 0x3f, 0x13, 0x7c, 0x4b, 0xa8, 0xf8, 0x57, 0xc6, - 0xd3, 0xe9, 0x9e, 0x1a, 0x9a, 0xfe, 0x66, 0xd3, 0x74, 0xe3, - 0x67, 0x6e, 0xe9, 0xd, 0xbe, 0xe2, 0x23, 0x1f, 0x34, 0x64, - 0xe7, 0x68, 0x4, 0xe4, 0x9e, 0x49, 0xa8, 0x3c, 0x61, 0xff, - 00, 0x5, 0x45, 0xf8, 0xd9, 0xe3, 0xcf, 0x86, 0xda, 0xd7, - 0x83, 0x35, 0x89, 0xf4, 0x49, 0xac, 0xf5, 0x6b, 0x17, 0xb0, - 0xb9, 0xbe, 0x86, 0xc5, 0xa2, 0xba, 0xf2, 0xdd, 0x76, 0xb1, - 0xc, 0xae, 0x14, 0x31, 0x19, 0x19, 0xdb, 0xdc, 0xd7, 0xc8, - 0xb4, 0x92, 0x1b, 0x7d, 0x8f, 0xdf, 0x7f, 0xf8, 0x27, 0x7f, - 0xc4, 0x8f, 0x88, 0xff, 00, 0x18, 0xbe, 0x1, 0x47, 0xe3, - 0x6f, 0x88, 0xfa, 0xc2, 0xea, 0xb7, 0x7a, 0xad, 0xf4, 0xa3, - 0x4f, 0x9, 0x69, 0x1d, 0xb8, 0x8e, 0xda, 0x33, 0xe5, 0xe4, - 0x84, 0x51, 0x92, 0xce, 0xae, 0x72, 0x7b, 0x1, 0x5f, 0x50, - 0xd7, 0xe3, 0xaf, 0xc3, 0xf, 0xf8, 0x2b, 0xf6, 0xa3, 0xf0, - 0xbf, 0xc0, 0xfa, 0x7, 0x85, 0x34, 0xff, 00, 0x84, 0xda, - 0x50, 0xd2, 0xb4, 0x6b, 0x38, 0xac, 0xa0, 0x58, 0x75, 0x69, - 0x23, 0x25, 0x51, 0x40, 0xc9, 0xfd, 0xd1, 0xe4, 0xf2, 0x4f, - 0xb9, 0x35, 0xe8, 0x5a, 0x7f, 0xfc, 0x16, 0xee, 0x16, 0x61, - 0xf6, 0xef, 0x84, 0xb2, 0x46, 0xbd, 0xcd, 0xbe, 0xb8, 0x1f, - 0xf9, 0xc0, 0x28, 0xb1, 0x57, 0x47, 0xea, 0x45, 0x15, 0xf9, - 0xbd, 0x65, 0xff, 00, 0x5, 0xb1, 0xf0, 0x3c, 0x85, 0x7e, - 0xd7, 0xf0, 0xe3, 0xc4, 0x10, 0xe, 0xe6, 0x1b, 0xc8, 0x24, - 0xc7, 0xe7, 0xb6, 0xba, 0xed, 0x3, 0xfe, 0xb, 0x19, 0xf0, - 0x8b, 0x5c, 0xbd, 0xb6, 0xb3, 0x3e, 0x19, 0xf1, 0x84, 0x17, - 0x57, 0x12, 0x2c, 0x51, 0xc6, 0x2d, 0x20, 0x93, 0x73, 0xb1, - 0xc0, 0x51, 0xb6, 0x6e, 0x72, 0x48, 0xed, 0x48, 0x2e, 0x8f, - 0xbc, 0xe8, 0xa8, 0xad, 0xa6, 0x37, 0x16, 0xd1, 0x4a, 0x63, - 0x78, 0x4b, 0xa0, 0x63, 0x1c, 0x98, 0xdc, 0xb9, 0x19, 0xc1, - 0xc7, 0x71, 0x59, 0x1e, 0x36, 0xf1, 0xae, 0x89, 0xf0, 0xe7, - 0xc2, 0x9a, 0x9f, 0x89, 0x7c, 0x47, 0x7f, 0x1e, 0x97, 0xa2, - 0x69, 0xb0, 0x99, 0xee, 0xee, 0xe5, 0x4, 0xac, 0x48, 0x3b, - 0xe0, 0x2, 0x4f, 0x5e, 0x80, 0x50, 0x33, 0x72, 0x8a, 0xf0, - 0x2b, 0xf, 0xdb, 0xdb, 0xf6, 0x7d, 0xd4, 0x63, 0xf, 0x1f, - 0xc5, 0x6f, 0xf, 0xc6, 0xf, 0x6b, 0x89, 0x9a, 0x23, 0xf9, - 0x32, 0x8a, 0xdc, 0xb1, 0xfd, 0xb1, 0x7e, 0x6, 0xea, 0x3f, - 0xea, 0x3e, 0x2d, 0x78, 0x40, 0xff, 00, 0xbf, 0xac, 0x42, - 0x9f, 0xfa, 0x13, 0xa, 00, 0xf6, 0x1a, 0x2b, 0x82, 0xd2, - 0x7e, 0x3e, 0x7c, 0x33, 0xd7, 0xbf, 0xe4, 0x1d, 0xf1, 0xb, - 0xc2, 0xf7, 0xdf, 0xf5, 0xc3, 0x58, 0xb7, 0x7f, 0xe4, 0xf5, - 0xd1, 0xd9, 0x78, 0xd7, 0xc3, 0xda, 0x91, 0x2, 0xd3, 0x5e, - 0xd3, 0x2e, 0x89, 0xe8, 0x21, 0xbc, 0x8d, 0xf3, 0xf9, 0x35, - 00, 0x6d, 0x51, 0x51, 0xa5, 0xc4, 0x52, 0x7d, 0xc9, 0x51, - 0xbf, 0xdd, 0x60, 0x6a, 0x4a, 00, 0x28, 0xa2, 0x8a, 00, - 0x2a, 0xbd, 0xfe, 0x9f, 0x6d, 0xaa, 0x5a, 0x49, 0x6b, 0x79, - 0x6f, 0x1d, 0xd5, 0xb4, 0x98, 0xdf, 0x14, 0xca, 0x19, 0x5b, - 0x9c, 0xf2, 0xf, 0xbd, 0x58, 0xa2, 0x93, 0x49, 0xab, 0x30, - 0x6a, 0xfa, 0x33, 0x96, 0x9b, 0xe1, 0x77, 0x84, 0xe7, 0x1f, - 0x36, 0x81, 0x62, 0x3f, 0xdc, 0x8b, 0x6f, 0xf2, 0xaa, 0x53, - 0x7c, 0x17, 0xf0, 0x6c, 0xfd, 0x74, 0x54, 0x5f, 0xf7, 0x25, - 0x91, 0x7f, 0x93, 0x57, 0x6d, 0x45, 0x72, 0x4b, 0x5, 0x85, - 0x96, 0xf4, 0xa3, 0xf7, 0x23, 0x27, 0x46, 0x9b, 0xde, 0x2b, - 0xee, 0x3c, 0xf6, 0x4f, 0x80, 0xde, 0xc, 0x7e, 0x9a, 0x74, - 0xa9, 0xfe, 0xed, 0xd4, 0x9f, 0xd5, 0xaa, 0xac, 0x9f, 0xb3, - 0xd7, 0x84, 0x9f, 0xee, 0xa5, 0xe4, 0x7f, 0xee, 0xdc, 0x7f, - 0x88, 0xaf, 0x4c, 0xa2, 0xb0, 0x79, 0x66, 0x9, 0xef, 0x46, - 0x3f, 0x72, 0x23, 0xea, 0xf4, 0x7f, 0x95, 0x18, 0x7e, 0xf, - 0xf0, 0x85, 0x97, 0x82, 0x74, 0x93, 0xa7, 0x58, 0x3c, 0xcf, - 0x6f, 0xe6, 0x34, 0xa3, 0xcf, 0x60, 0xc4, 0x13, 0x8c, 0x8c, - 0x80, 0x38, 0xe2, 0xb7, 0x28, 0xa2, 0xbb, 0xe9, 0xd3, 0x8d, - 0x28, 0xa8, 0x41, 0x59, 0x23, 0x68, 0xc5, 0x45, 0x59, 0x6c, - 0x14, 0x51, 0x45, 0x68, 0x50, 0x57, 0x25, 0xf1, 0x4b, 0xc3, - 0xfa, 0x9f, 0x8a, 0x7c, 0x1f, 0x73, 0xa5, 0xe9, 0x46, 0x21, - 0x3c, 0xee, 0x81, 0xcc, 0xce, 0x50, 0x6c, 0x7, 0x27, 0x9c, - 0x1f, 0x41, 0x5d, 0x6d, 0x15, 0x8d, 0x6a, 0x51, 0xaf, 0x4e, - 0x54, 0xa5, 0xb3, 0x56, 0x22, 0x71, 0x53, 0x8b, 0x8b, 0xea, - 0x7c, 0xb5, 0x2f, 0xc0, 0xf, 0x18, 0x47, 0xd2, 0xd6, 0xda, - 0x4f, 0xf7, 0x2e, 0x17, 0xfa, 0xe2, 0xa9, 0xcb, 0xf0, 0x47, - 0xc6, 0x71, 0xff, 00, 0xcc, 0x1f, 0x7f, 0xfb, 0xb3, 0xc7, - 0xff, 00, 0xc5, 0x57, 0xd6, 0x34, 0x57, 0xcb, 0xcb, 0x86, - 0x30, 0x4f, 0x69, 0x49, 0x7c, 0xd7, 0xf9, 0x1e, 0x7b, 0xcb, - 0xe9, 0x77, 0x67, 0xc8, 0x53, 0x7c, 0x25, 0xf1, 0x7c, 0x7, - 0xe6, 0xd0, 0x6e, 0x8f, 0xfb, 0x9b, 0x5b, 0xf9, 0x1a, 0xa3, - 0x3f, 0xc3, 0xef, 0x13, 0x5b, 0xff, 00, 0xac, 0xd0, 0x75, - 0x1, 0xf4, 0xb7, 0x63, 0xfc, 0x85, 0x7d, 0x97, 0x45, 0x61, - 0x2e, 0x16, 0xc3, 0x7d, 0x9a, 0x92, 0xfc, 0x3f, 0xc8, 0x87, - 0x97, 0x43, 0xa4, 0x99, 0xe7, 0xdf, 0x3, 0xbc, 0x37, 0x2f, - 0x87, 0x7c, 0xb, 0xf, 0xda, 0x61, 0x78, 0x2e, 0xee, 0xe5, - 0x79, 0xe4, 0x49, 0x14, 0xab, 0x2f, 0x3b, 0x54, 0x10, 0x7a, - 0x70, 0xa0, 0xfe, 0x35, 0xe8, 0x34, 0x51, 0x5f, 0x59, 0x86, - 0xa1, 0x1c, 0x35, 0x18, 0xd1, 0x8e, 0xd1, 0x56, 0x3d, 0x2a, - 0x70, 0x54, 0xe0, 0xa0, 0xba, 0x5, 0x14, 0x51, 0x5d, 0x26, - 0x81, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x6, 0x57, - 0x88, 0xfc, 0x33, 0xa6, 0xf8, 0xb3, 0x4d, 0x7b, 0x1d, 0x4e, - 0xd9, 0x6e, 0x20, 0x6e, 0x46, 0x78, 0x64, 0x3e, 0xaa, 0x7a, - 0x83, 0x5f, 0x3a, 0xf8, 0xef, 0xe0, 0x66, 0xb1, 0xe1, 0x97, - 0x96, 0xe7, 0x4d, 0x56, 0xd5, 0xb4, 0xd1, 0xc8, 0x31, 0x8c, - 0xcc, 0x83, 0xfd, 0xa5, 0x1d, 0x7e, 0xa3, 0xf2, 0x15, 0xf4, - 0xfd, 0x15, 0xe3, 0xe3, 0xf2, 0xac, 0x3e, 0x60, 0xbf, 0x78, - 0xad, 0x2e, 0xeb, 0x7f, 0xf8, 0x27, 0x2d, 0x6c, 0x34, 0x2b, - 0xfc, 0x5b, 0xf7, 0x3e, 0x15, 0x20, 0xa9, 0x20, 0x8c, 0x11, - 0xc1, 0x7, 0xb5, 0x25, 0x7d, 0x89, 0xe2, 0x7f, 0x86, 0xde, - 0x1e, 0xf1, 0x70, 0x63, 0x7f, 0xa7, 0x47, 0xe7, 0x9f, 0xf9, - 0x78, 0x87, 0xe4, 0x90, 0x7e, 0x23, 0xaf, 0xe3, 0x9a, 0xf3, - 0x2d, 0x6b, 0xf6, 0x66, 0x53, 0xb9, 0xb4, 0x9d, 0x64, 0x8f, - 0x48, 0xaf, 0x23, 0xcf, 0xfe, 0x3c, 0xbf, 0xe1, 0x5f, 0x5, - 0x89, 0xe1, 0xbc, 0x65, 0x17, 0x7a, 0x56, 0x9a, 0xfb, 0x9f, - 0xdc, 0xff, 00, 0xcc, 0xf1, 0xaa, 0x60, 0x2a, 0xc7, 0xe1, - 0xd4, 0xf0, 0x8a, 0x2b, 0xd0, 0x35, 0x3f, 0x81, 0x5e, 0x30, - 0xd3, 0xdc, 0x84, 0xb0, 0x8e, 0xf5, 0x7, 0xf1, 0xdb, 0x4c, - 0xa7, 0xf4, 0x62, 0xf, 0xe9, 0x58, 0x57, 0x3f, 0xe, 0x3c, - 0x53, 0x68, 0x71, 0x26, 0x81, 0x7f, 0xff, 00, 00, 0x81, - 0x9c, 0x7e, 0x99, 0xaf, 0xa, 0xa6, 0x7, 0x15, 0x49, 0xda, - 0x74, 0xa4, 0xbe, 0x4c, 0xe2, 0x74, 0x6a, 0x47, 0x78, 0xb3, - 0x9c, 0xa2, 0xb4, 0xe4, 0xf0, 0xc6, 0xb3, 0x11, 0xc3, 0xe9, - 0x37, 0xca, 0x7d, 0xd, 0xb3, 0xff, 00, 0x85, 0x35, 0x7c, - 0x39, 0xab, 0x31, 0xc0, 0xd2, 0xaf, 0x4f, 0xd2, 0xd9, 0xff, - 00, 0xc2, 0xb9, 0xbd, 0x95, 0x4f, 0xe5, 0x7f, 0x71, 0x1c, - 0xb2, 0xec, 0x67, 0x51, 0x5b, 0xf6, 0xfe, 00, 0xf1, 0x2d, - 0xd1, 0x1e, 0x56, 0x83, 0xa8, 0xb6, 0x7a, 0x13, 0x6c, 0xe0, - 0x7e, 0x64, 0x56, 0xe6, 0x9d, 0xf0, 0x47, 0xc6, 0x3a, 0x83, - 0xa8, 0x3a, 0x5f, 0xd9, 0x50, 0xff, 00, 0x1d, 0xc4, 0xa8, - 0xa0, 0x7e, 0x19, 0x27, 0xf4, 0xae, 0x88, 0x60, 0xb1, 0x35, - 0x3e, 0xa, 0x52, 0x7f, 0x26, 0x5a, 0xa5, 0x52, 0x5b, 0x45, - 0x9c, 0x25, 0x15, 0xee, 0x3a, 0x2f, 0xec, 0xcf, 0x2b, 0x6d, - 0x6d, 0x5b, 0x58, 0x54, 0xf5, 0x8a, 0xce, 0x3c, 0x9f, 0xfb, - 0xe9, 0xbf, 0xc2, 0xbd, 0x2f, 0xc3, 0x1f, 0xa, 0x7c, 0x35, - 0xe1, 0x4d, 0xaf, 0x6b, 0xa7, 0xac, 0xf7, 0x2b, 0xff, 00, - 0x2f, 0x17, 0x5f, 0xbc, 0x7f, 0xc3, 0x3c, 0xf, 0xc0, 0xa, - 0xf7, 0x30, 0xdc, 0x39, 0x8d, 0xac, 0xef, 0x51, 0x28, 0x2f, - 0x3d, 0x5f, 0xdc, 0xbf, 0xe0, 0x1d, 0x94, 0xf0, 0x35, 0x67, - 0xf1, 0x68, 0x7c, 0xfd, 0xe0, 0xbf, 0x83, 0x9a, 0xff, 00, - 0x8c, 0xc, 0x73, 0x18, 0x7f, 0xb3, 0xb4, 0xf6, 0x23, 0x37, - 0x37, 0x20, 0x82, 0x47, 0xaa, 0xaf, 0x56, 0xfd, 0x7, 0xbd, - 0x7d, 0xf, 0xe0, 0x9f, 0x87, 0x3a, 0x37, 0x81, 0x6d, 0xb6, - 0xd8, 0xc1, 0xe6, 0x5d, 0x32, 0xe2, 0x5b, 0xb9, 0x79, 0x91, - 0xff, 00, 0xc0, 0x7b, 0xa, 0xea, 0x68, 0xaf, 0xba, 0xc0, - 0x64, 0xd8, 0x6c, 0x7, 0xbd, 0x15, 0xcd, 0x2e, 0xef, 0xf4, - 0xec, 0x7b, 0x14, 0x30, 0xb4, 0xe8, 0xea, 0xb5, 0x7d, 0xc2, - 0x8a, 0x28, 0xaf, 0x74, 0xec, 0xa, 0xe5, 0x7e, 0x28, 0x6b, - 0xe3, 0xc3, 0x7e, 0x5, 0xd5, 0xae, 0xc3, 0x6d, 0x95, 0xa2, - 0x30, 0xc4, 0x7b, 0xef, 0x7f, 0x94, 0x7e, 0x59, 0xcf, 0xe1, - 0x5d, 0x55, 0x78, 0xc7, 0xed, 0x29, 0x71, 0x76, 0xfa, 0x46, - 0x95, 0x69, 0xd, 0xbc, 0xcf, 0x6d, 0xe6, 0xb4, 0xf3, 0x4a, - 0x88, 0x4a, 0x29, 0x3, 0xa, 0x9, 0xe9, 0xfc, 0x4d, 0xf9, - 0x57, 0x99, 0x99, 0xd7, 0x78, 0x7c, 0x1d, 0x4a, 0x91, 0xde, - 0xda, 0x7c, 0xf4, 0x39, 0xf1, 0x13, 0x70, 0xa5, 0x29, 0x23, - 0xe7, 0xba, 0x28, 0xa2, 0xbf, 0x12, 0x3e, 0x48, 0x28, 0xa2, - 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, - 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0xbb, 0x3f, 0x5, 0x7c, - 0x27, 0xd7, 0xbc, 0x69, 0x2c, 0x4f, 0x15, 0xbb, 0x59, 0x69, - 0xed, 0xc9, 0xbd, 0xb8, 0x5c, 0x2e, 0x3f, 0xd9, 0x1d, 0x5b, - 0xf0, 0xe3, 0xde, 0xb7, 0xa3, 0x42, 0xae, 0x22, 0x6a, 0x9d, - 0x18, 0xb6, 0xfc, 0x8b, 0x84, 0x25, 0x37, 0x68, 0xab, 0xb3, - 0x9c, 0xd0, 0x34, 0x1b, 0xdf, 0x13, 0x6a, 0xd6, 0xfa, 0x76, - 0x9f, 0x17, 0x9d, 0x73, 0x33, 0x60, 0xe, 0xca, 0x3b, 0xb1, - 0x3d, 0x80, 0xf5, 0xaf, 0xae, 0xbc, 0xb, 0xe0, 0xeb, 0x5f, - 0x3, 0xf8, 0x7a, 0xd, 0x3a, 0xdc, 0x6, 0x90, 0xd, 0xf3, - 0xcc, 0x6, 0xc, 0xb2, 0x1e, 0xa7, 0xfa, 0xf, 0x6a, 0x87, - 0xc0, 0xdf, 0xf, 0xb4, 0xbf, 0x1, 0x58, 0x18, 0x2c, 0x50, - 0xc9, 0x71, 0x26, 0x3c, 0xeb, 0xa9, 00, 0xdf, 0x21, 0xfe, - 0x83, 0xd8, 0x57, 0x4f, 0x5f, 0xa9, 0x64, 0xd9, 0x3a, 0xcb, - 0xe3, 0xed, 0x6a, 0xeb, 0x51, 0xfe, 0xb, 0xb7, 0xf9, 0x9f, - 0x43, 0x85, 0xc2, 0xfb, 0x5, 0xcd, 0x2f, 0x88, 0x28, 0xa2, - 0x8a, 0xfa, 0x73, 0xd1, 0xa, 0x28, 0xa2, 0x80, 0x30, 0x7c, - 0x73, 0x37, 0x91, 0xe1, 0x8b, 0xd6, 0xe9, 0xf2, 0xe2, 0xbe, - 0x8, 0xf1, 0xc4, 0xbe, 0x66, 0xbd, 0x72, 0x73, 0xfc, 0x46, - 0xbe, 0xe8, 0xf8, 0x9f, 0x37, 0x93, 0xe1, 0x2b, 0xa3, 0x9a, - 0xf8, 0x2f, 0xc5, 0xd, 0xbf, 0x55, 0xba, 0x6c, 0xff, 00, - 0x11, 0xaf, 0x84, 0xe2, 0x19, 0x7e, 0xfa, 0x9c, 0x4f, 0x88, - 0xe2, 0x49, 0x7b, 0x91, 0x47, 0x8f, 0x7c, 0x59, 0x9f, 0xcb, - 0xd2, 0x64, 0xe7, 0xb1, 0xfe, 0x55, 0xf7, 0x67, 0xfc, 0x13, - 0xa2, 0xc9, 0xad, 0x3f, 0x64, 0xaf, 0x8, 0xbb, 0xc, 0x1b, - 0x89, 0xaf, 0x67, 0xfc, 0xd, 0xd4, 0xa3, 0xfa, 0x57, 0xc0, - 0x5f, 0x19, 0xa6, 0xf2, 0xf4, 0xa9, 0x79, 0xe3, 0x69, 0xaf, - 0xd2, 0x7f, 0xd8, 0xaf, 0x4a, 0x1a, 0x3f, 0xec, 0xaf, 0xf0, - 0xda, 00, 0x41, 0xdf, 0xa5, 0x25, 0xc1, 0xc7, 0xac, 0x8c, - 0xd2, 0x7f, 0xec, 0xd5, 0xed, 0xe5, 0xa, 0xd4, 0x91, 0xe6, - 0xf0, 0x74, 0x7d, 0xda, 0xf3, 0xf3, 0x3d, 0xb2, 0x8a, 0x28, - 0xaf, 0xa0, 0x3f, 0x49, 0x39, 0x5f, 0x8a, 0x1e, 0x30, 0x4f, - 0x2, 0x78, 0x13, 0x56, 0xd6, 0x18, 0xfe, 0xf2, 0x18, 0xb6, - 0xc2, 0x3d, 0x65, 0x6f, 0x95, 0x7, 0xe6, 0x45, 0x7e, 0x7e, - 0xa7, 0x99, 0x77, 0x71, 0x96, 0x26, 0x49, 0xa5, 0x6c, 0xb3, - 0x1e, 0x4b, 0x31, 0x3c, 0x9f, 0xce, 0xbe, 0x93, 0xfd, 0xaf, - 0xfc, 0x64, 0xf, 0xf6, 0x4f, 0x85, 0xa1, 0x3c, 0xff, 00, - 0xc7, 0xf5, 0xc1, 0xf6, 0xe5, 0x50, 0x7f, 0xe8, 0x47, 0xf0, - 0x15, 0xe3, 0xbf, 0x8, 0x3c, 0x2a, 0xde, 0x2d, 0xf1, 0xd6, - 0x9b, 0x69, 0xb4, 0xb4, 0x42, 0x40, 0xf2, 0x7b, 0x28, 0xe6, - 0xbf, 0x3e, 0xce, 0xab, 0x4b, 0x13, 0x8b, 0x8e, 0x1e, 0x1d, - 0x34, 0xf9, 0xb3, 0xf3, 0xbc, 0xe2, 0xa3, 0xc6, 0xe3, 0xe3, - 0x86, 0x86, 0xd1, 0xd3, 0xe6, 0xf7, 0xfd, 0xf, 0xae, 0xfe, - 0x7, 0x78, 0x51, 0x7c, 0x2b, 0xf0, 0xff, 00, 0x4f, 0x8c, - 0xa8, 0x59, 0xe7, 0x5f, 0x36, 0x43, 0x8e, 0xe6, 0xbd, 0x2, - 0xa3, 0xb7, 0x81, 0x2d, 0xa0, 0x8e, 0x14, 0x1b, 0x51, 0x14, - 0x28, 0x3, 0xd0, 0x54, 0x95, 0xf7, 0x54, 0x29, 0x2a, 0x14, - 0xa3, 0x4a, 0x3b, 0x25, 0x63, 0xef, 0xe9, 0x53, 0x54, 0xa1, - 0x18, 0x47, 0x64, 0x14, 0x51, 0x45, 0x6e, 0x6a, 0x7e, 0x70, - 0xff, 00, 0xc1, 0x43, 0xbf, 0xe0, 0x9c, 0x3a, 0xf7, 0xc6, - 0x5f, 0x19, 0x5d, 0x7c, 0x4c, 0xf8, 0x6b, 0xf6, 0x7b, 0x8d, - 0x7a, 0xea, 0x24, 0x1a, 0xae, 0x87, 0x33, 0x88, 0x9a, 0xe9, - 0xd1, 0x42, 0xac, 0xb1, 0x39, 0xf9, 0x77, 0x95, 0x55, 0x52, - 0xad, 0x8c, 0xed, 0x4, 0x1e, 0xb5, 0xf9, 0x9d, 0xe2, 0x4f, - 0xd9, 0xa7, 0xe2, 0xcf, 0x84, 0x2e, 0xe4, 0xb6, 0xd5, 0xfe, - 0x1b, 0x78, 0xaa, 0xce, 0x54, 0xfb, 0xc4, 0xe9, 0x13, 0xba, - 0x7e, 0xe, 0xaa, 0x54, 0xfe, 0x6, 0xbf, 0xa4, 0xfa, 0xe7, - 0xbe, 0x21, 0x78, 0xca, 0xdb, 0xe1, 0xe7, 0x81, 0xb5, 0xef, - 0x13, 0x5e, 0x47, 0x24, 0xd6, 0xfa, 0x55, 0x9c, 0xb7, 0x6d, - 0x14, 0x2a, 0x59, 0xe4, 0xda, 0xa4, 0x84, 0x50, 0x39, 0x2c, - 0xc7, 00, 0x1, 0xdc, 0xd3, 0xb9, 0x2d, 0x5c, 0xfe, 0x63, - 0xef, 0xac, 0x6e, 0x74, 0xcb, 0xb9, 0x6d, 0x6f, 0x2d, 0xe5, - 0xb4, 0xba, 0x85, 0xb6, 0x49, 0x4, 0xe8, 0x51, 0xd1, 0xbd, - 0xa, 0x9e, 0x41, 0xfa, 0xd5, 0x7a, 0xeb, 0x3e, 0x21, 0x5c, - 0x78, 0x93, 0xc5, 0xbe, 0x32, 0xd7, 0x7c, 0x49, 0xae, 0x69, - 0xb7, 0xb0, 0xea, 0x1a, 0xb5, 0xf4, 0xd7, 0xf7, 0x6, 0x68, - 0x1d, 0x70, 0xf2, 0x39, 0x72, 0x39, 0x1d, 0x1, 0x38, 0xaf, - 0xd9, 0xef, 0xf8, 0x27, 0x3f, 0xec, 0xbd, 0xe1, 0xaf, 0x8, - 0x7e, 0xcb, 0x5e, 0x1e, 0xbd, 0xf1, 0x2f, 0x86, 0xf4, 0xcd, - 0x5b, 0x58, 0xf1, 0x29, 0x3a, 0xcc, 0xe7, 0x52, 0xb1, 0x49, - 0x9a, 0x38, 0xe4, 00, 0x42, 0x9f, 0x38, 0x38, 0xc4, 0x6a, - 0xa7, 0x1e, 0xac, 0x69, 0xdc, 0x9b, 0x5c, 0xfc, 0x36, 0xa2, - 0xbf, 0xa4, 0x3d, 0x67, 0xf6, 0x53, 0xf8, 0x37, 0xe2, 0x2, - 0x7f, 0xb4, 0x3e, 0x17, 0xf8, 0x52, 0xe7, 0x3e, 0xba, 0x4c, - 0x23, 0xf9, 0x28, 0xae, 0x53, 0x54, 0xfd, 0x81, 0x7f, 0x67, - 0xbd, 0x5c, 0x62, 0x6f, 0x85, 0x5a, 0xc, 0x5f, 0xf5, 0xeb, - 0x1b, 0xc1, 0xff, 00, 0xa0, 0x30, 0xa5, 0x71, 0xf2, 0x9f, - 0xcf, 0x3d, 0x7d, 0x3f, 0xff, 00, 0x4, 0xe1, 0xf8, 0x2a, - 0x7e, 0x34, 0x7e, 0xd4, 0xfe, 0x18, 0x8e, 0xe2, 0x3, 0x2e, - 0x8f, 0xe1, 0xf6, 0xfe, 0xdc, 0xbe, 0xc8, 0x3b, 0x71, 0x9, - 0x6, 0x25, 0x27, 0xde, 0x53, 0x1f, 0xe0, 0xd, 0x7e, 0xa9, - 0x6a, 0x5f, 0xf0, 0x4c, 0x4f, 0xd9, 0xc3, 0x51, 0x18, 0xff, - 00, 0x84, 00, 0xda, 0xfb, 0xdb, 0x6a, 0x97, 0x69, 0xff, - 00, 0xb5, 0x6b, 0xd0, 0x3e, 00, 0xfe, 0xc8, 0x5f, 0xc, - 0xbf, 0x66, 0x6d, 0x43, 0x59, 0xbd, 0xf0, 0xe, 0x8d, 0x71, - 0xa6, 0xdc, 0xea, 0xd1, 0xc7, 0xd, 0xd3, 0xdc, 0x5e, 0xcb, - 0x72, 0x4a, 0x21, 0x62, 0xa1, 0x7c, 0xc2, 0x76, 0x8c, 0xb1, - 0xce, 0x3a, 0xf1, 0xe9, 0x45, 0xc3, 0x94, 0xf6, 0x7a, 0xfc, - 0xf8, 0xff, 00, 0x82, 0xc6, 0xfc, 0x66, 0x3e, 0x11, 0xf8, - 0x31, 0xa1, 0x7c, 0x3f, 0xb3, 0x98, 0xa5, 0xef, 0x8a, 0x6e, - 0xfc, 0xeb, 0x90, 0xa7, 0x9f, 0xb2, 0x5b, 0x95, 0x62, 0xf, - 0xd6, 0x46, 0x8f, 0xfe, 0xf9, 0x35, 0xfa, 0xf, 0x5f, 0x23, - 0xfe, 0xd6, 0x9f, 0xf0, 0x4f, 0x2d, 0x1b, 0xf6, 0xb2, 0xf1, - 0xd5, 0xaf, 0x8a, 0x35, 0x7f, 0x1c, 0x6b, 0x1a, 0x34, 0xf6, - 0x96, 0x6b, 0x65, 0x6d, 0x65, 0x6f, 0x6f, 0x14, 0x90, 0x44, - 0x80, 0x96, 0x24, 0x3, 0x83, 0x96, 0x66, 0x24, 0xf3, 0xd8, - 0x7a, 0x52, 0x29, 0x9f, 0x83, 0xf4, 0x57, 0xea, 0x9e, 0xa5, - 0xff, 00, 0x4, 0x45, 0xb5, 0x20, 0xfd, 0x83, 0xe2, 0xc4, - 0xca, 0x7b, 0xb, 0x9d, 0x10, 0x1f, 0xd5, 0x66, 0x15, 0xcf, - 0x5d, 0xff, 00, 0xc1, 0x11, 0xbc, 0x42, 0xaa, 0x4d, 0xaf, - 0xc5, 0x6d, 0x32, 0x46, 0xec, 0x26, 0xd1, 0xe4, 0x41, 0xf9, - 0x89, 0x4f, 0xf2, 0xaa, 0xb9, 0x16, 0x67, 0xe6, 0x66, 0x7, - 0xa5, 0x49, 0x14, 0xf2, 0x42, 0x7f, 0x77, 0x23, 0xc7, 0xfe, - 0xeb, 0x11, 0x5f, 0xa2, 0x1a, 0x87, 0xfc, 0x11, 0x57, 0xe2, - 0x44, 0x8, 0x4d, 0x9f, 0x8f, 0x3c, 0x31, 0x74, 0x7b, 0x2c, - 0x91, 0xdc, 0x47, 0xff, 00, 0xb2, 0x1a, 0xe3, 0xf5, 0x4f, - 0xf8, 0x23, 0xd7, 0xc7, 0x5b, 0x32, 0xdf, 0x65, 0xb9, 0xf0, - 0xb5, 0xfa, 0x8e, 0x9e, 0x5e, 0xa4, 0xe8, 0x4f, 0xfd, 0xf5, - 0x10, 0xa2, 0xe1, 0x66, 0x7c, 0x69, 0xa6, 0xf8, 0xcf, 0xc4, - 0x1a, 0x3b, 0x87, 0xb0, 0xd7, 0x75, 0x3b, 0x17, 0x1d, 0x1a, - 0xda, 0xf2, 0x48, 0xcf, 0xe8, 0xc2, 0xba, 0x9d, 0x3f, 0xf6, - 0x87, 0xf8, 0xa7, 0xa5, 0x38, 0x6b, 0x4f, 0x89, 0x1e, 0x2c, - 0x84, 0x8e, 0x9b, 0x75, 0xab, 0x9c, 0xf, 0xc3, 0x7d, 0x7b, - 0xce, 0xa5, 0xff, 00, 0x4, 0xab, 0xfd, 0xa2, 0x74, 0xf0, - 0x4a, 0x78, 0x5b, 0x4f, 0xbd, 0x3, 0xfe, 0x7d, 0x75, 0x68, - 0xe, 0x7f, 0xef, 0xa6, 0x15, 0xc9, 0xea, 0x7f, 0xf0, 0x4e, - 0xbf, 0xda, 0x27, 0x4a, 0x4, 0xbf, 0xc3, 0x2d, 0x46, 0x75, - 0x1d, 0xed, 0xae, 0x2d, 0xe5, 0xfd, 0x16, 0x4c, 0xd0, 0x16, - 0x67, 0x33, 0x61, 0xfb, 0x69, 0x7c, 0x76, 0xd3, 0x48, 0xf2, - 0x3e, 0x2b, 0xf8, 0xa7, 0x8e, 0x82, 0x4d, 0x41, 0xe4, 0x1f, - 0xf8, 0xf6, 0x6b, 0xa1, 0xb4, 0xff, 00, 0x82, 0x86, 0xfe, - 0xd1, 0x56, 0x61, 0x44, 0x7f, 0x14, 0xb5, 0x56, 0x3, 0xfe, - 0x7a, 0xc1, 0x6f, 0x27, 0xfe, 0x85, 0x19, 0xae, 0x67, 0x53, - 0xfd, 0x8d, 0xfe, 0x39, 0x69, 0x19, 0xfb, 0x4f, 0xc2, 0x9f, - 0x15, 0xe0, 0x75, 0x31, 0x69, 0x92, 0x4b, 0xff, 00, 0xa0, - 0x3, 0x5c, 0xdd, 0xd7, 0xec, 0xf7, 0xf1, 0x4a, 0xc7, 0x3f, - 0x68, 0xf8, 0x6f, 0xe2, 0xd8, 0x71, 0xd7, 0x7e, 0x87, 0x72, - 0x3f, 0xf6, 0x4a, 0x3, 0x53, 0xda, 0x2c, 0xbf, 0xe0, 0xa7, - 0x9f, 0xb4, 0x7d, 0x96, 0x3f, 0xe2, 0xbf, 0x17, 00, 0x76, - 0x9f, 0x4a, 0xb4, 0x6c, 0xff, 00, 0xe4, 0x2a, 0xea, 0x34, - 0xff, 00, 0xf8, 0x2b, 0x87, 0xed, 0x5, 0x64, 0x81, 0x65, - 0xd4, 0x3c, 0x3f, 0x7d, 0x8e, 0xf7, 0x1a, 0x4a, 0x82, 0x7f, - 0xef, 0x96, 0x5a, 0xf9, 0x4e, 0xf7, 0xe1, 0xaf, 0x8b, 0xf4, - 0xd0, 0x4d, 0xdf, 0x85, 0x75, 0xbb, 0x50, 0x3a, 0xf9, 0xfa, - 0x74, 0xc9, 0x8f, 0xcd, 0x6b, 0xe, 0xeb, 0x4f, 0xba, 0xb2, - 0x38, 0xb8, 0xb6, 0x9a, 0x3, 0xe9, 0x2c, 0x65, 0x7f, 0x9d, - 0x1, 0x76, 0x7d, 0xe7, 0xa5, 0x7f, 0xc1, 0x66, 0x3e, 0x30, - 0xda, 0x15, 0xfb, 0x6f, 0x87, 0x7c, 0x2b, 0x7e, 0x7, 0x5f, - 0xf4, 0x79, 0xa2, 0xcf, 0xe5, 0x25, 0x75, 0x76, 0x1f, 0xf0, - 0x5b, 0x3f, 0x18, 0xc5, 0x8f, 0xb6, 0xfc, 0x33, 0xd0, 0xee, - 0x3d, 0x7c, 0x8d, 0x42, 0x68, 0xbf, 0x9a, 0xb5, 0x7e, 0x6c, - 0xe4, 0x52, 0xd1, 0x60, 0xbb, 0x3f, 0x53, 0x74, 0xef, 0xf8, - 0x2d, 0xd0, 0x38, 0xfb, 0x7f, 0xc2, 0x82, 0xbe, 0xbf, 0x66, - 0xd6, 0xb3, 0xfc, 0xe1, 0x15, 0xd2, 0xd9, 0xff, 00, 0xc1, - 0x6c, 0xfc, 0x1a, 0xe0, 0x7d, 0xaf, 0xe1, 0xae, 0xbb, 0x11, - 0xef, 0xe4, 0xdf, 0x42, 0xff, 00, 0xcc, 0x2d, 0x7e, 0x46, - 0xd1, 0x45, 0x82, 0xec, 0xfd, 0x8f, 0xb1, 0xff, 00, 0x82, - 0xd2, 0xfc, 0x29, 0x9b, 0x2, 0xe7, 0xc1, 0x9e, 0x2e, 0xb6, - 0xf5, 0x2b, 0x1d, 0xb3, 0x8f, 0xfd, 0x1c, 0x2b, 0xa4, 0xd3, - 0xbf, 0xe0, 0xb0, 0xff, 00, 0x2, 0xef, 0x31, 0xf6, 0x9b, - 0x5f, 0x14, 0xd8, 0x13, 0xff, 00, 0x3d, 0x74, 0xd4, 0x70, - 0x3f, 0xef, 0x89, 0xd, 0x7e, 0x26, 0x51, 0x45, 0x87, 0xcc, - 0xcf, 0xdd, 0xdd, 0x3f, 0xfe, 0xa, 0xad, 0xfb, 0x3a, 0x5f, - 0x85, 0xdd, 0xe2, 0xbb, 0xfb, 0x46, 0x3f, 0xc3, 0x71, 0xa3, - 0xdc, 0x8c, 0x7e, 0x21, 0x8, 0xae, 0xb7, 0x4b, 0xff, 00, - 0x82, 0x89, 0x7e, 0xce, 0xfa, 0xaa, 0x6, 0x4f, 0x89, 0xba, - 0x6d, 0xb9, 0x3f, 0xc3, 0x75, 0xc, 0xd1, 0x1f, 0xd5, 0x2b, - 0xf9, 0xf5, 0xa2, 0x8b, 0x7, 0x31, 0xfd, 0x18, 0x69, 0xdf, - 0xb6, 0x8f, 0xc0, 0x8d, 0x51, 0x41, 0x83, 0xe2, 0xcf, 0x84, - 0xf9, 0xe8, 0x25, 0xd4, 0xe3, 0x88, 0xfe, 0x4e, 0x41, 0xae, - 0xa3, 0x4a, 0xfd, 0xa0, 0xbe, 0x18, 0x6b, 0x60, 0x7d, 0x83, - 0xe2, 0x1f, 0x85, 0xee, 0xf3, 0xff, 00, 0x3c, 0xb5, 0x7b, - 0x73, 0xff, 00, 0xb3, 0xd7, 0xf3, 0x4f, 0x45, 0x2b, 0x7, - 0x31, 0xfd, 0x3c, 0xd9, 0xf8, 0xff, 00, 0xc2, 0xfa, 0x81, - 0xc5, 0xaf, 0x89, 0x34, 0x8b, 0x92, 0x7b, 0x43, 0x7d, 0x13, - 0xff, 00, 0x26, 0xad, 0x58, 0x75, 0x5b, 0x2b, 0x83, 0x88, - 0xaf, 0x2d, 0xe4, 0x3e, 0x89, 0x2a, 0x9f, 0xeb, 0x5f, 0xcb, - 0x86, 0x7, 0xa5, 0x5a, 0xb4, 0xd5, 0x2f, 0x34, 0xf6, 0x6, - 0xd6, 0xee, 0x7b, 0x62, 0x3a, 0x18, 0x65, 0x64, 0xfe, 0x46, - 0x8b, 0xf, 0x98, 0xfe, 0xa3, 0x83, 0x3, 0xd0, 0x83, 0x4b, - 0x5f, 0xcc, 0x86, 0x9f, 0xf1, 0x5b, 0xc6, 0xda, 0x49, 0x6, - 0xc7, 0xc6, 0x3a, 0xfd, 0x91, 0x1d, 0xd, 0xbe, 0xa9, 0x3c, - 0x7f, 0xc9, 0xeb, 0xa8, 0xd2, 0xff, 00, 0x6a, 0x6f, 0x8c, - 0x5a, 0x2c, 0x8a, 0xf6, 0x9f, 0x14, 0x3c, 0x5a, 0x85, 0x7a, - 0x6f, 0xd6, 0x27, 0x90, 0x7e, 0x4c, 0xc4, 0x51, 0x60, 0xe6, - 0x3f, 0xa4, 0x7a, 0x2b, 0xf9, 0xe6, 0xb3, 0xfd, 0xbf, 0x3f, - 0x68, 0x4b, 0x12, 0xbe, 0x5f, 0xc5, 0x5d, 0x71, 0xb6, 0xf4, - 0x12, 0x98, 0xe4, 0x1f, 0xf8, 0xf2, 0x1a, 0xe8, 0xec, 0x7f, - 0xe0, 0xa6, 0x9f, 0xb4, 0x7d, 0x96, 0xd1, 0xff, 00, 0xb, - 0xd, 0xee, 0x15, 0x7b, 0x4f, 0xa6, 0x5a, 0x36, 0x7e, 0xa7, - 0xca, 0xcd, 0x16, 0xe, 0x64, 0x7e, 0xfb, 0x51, 0x5f, 0x86, - 0x76, 0x3f, 0xf0, 0x56, 0xcf, 0xda, 0x12, 0xce, 0x35, 0x57, - 0xd5, 0x34, 0x2b, 0xbc, 0x7f, 0x14, 0xfa, 0x42, 0x64, 0xff, - 00, 0xdf, 0x24, 0x56, 0xdd, 0x97, 0xfc, 0x16, 0x33, 0xe3, - 0xad, 0xb6, 0x4, 0xda, 0x7f, 0x84, 0x2e, 0xfd, 0xe4, 0xd3, - 0x66, 0x53, 0xff, 00, 0x8e, 0xce, 0x28, 0xb0, 0x5d, 0x1f, - 0xb6, 0x34, 0x57, 0xe3, 0xb6, 0x9d, 0xff, 00, 0x5, 0xa8, - 0xf8, 0x9b, 0x2, 0xa8, 0xbd, 0xf0, 0x3f, 0x85, 0xee, 0xdb, - 0xb9, 0x8d, 0xae, 0x22, 0xcf, 0xfe, 0x3e, 0x6b, 0xa5, 0xd3, - 0xff, 00, 0xe0, 0xb7, 0x1a, 0xfc, 0x78, 0xfb, 0x77, 0xc2, - 0xbd, 0x36, 0x7f, 0xfa, 0xf7, 0xd5, 0xe4, 0x8f, 0xf9, 0xc4, - 0xd4, 0x58, 0x77, 0x47, 0xeb, 0x25, 0x15, 0xf9, 0x8b, 0xa5, - 0x7f, 0xc1, 0x6e, 0x34, 0x77, 0x51, 0xfd, 0xa5, 0xf0, 0xae, - 0xfa, 0x16, 0xef, 0xf6, 0x5d, 0x5d, 0x24, 0x1f, 0xf8, 0xf4, - 0x6b, 0x5d, 0xd, 0xaf, 0xfc, 0x16, 0xbf, 0xe1, 0xe3, 0x91, - 0xf6, 0x9f, 0x87, 0xbe, 0x27, 0x88, 0x7a, 0xc5, 0x35, 0xb3, - 0xff, 00, 0x37, 0x5a, 0x2, 0xe8, 0xfd, 0x19, 0xa2, 0xbe, - 0x1, 0xd3, 0x7f, 0xe0, 0xb3, 0xbf, 0x7, 0xae, 0xdc, 0xb, - 0xaf, 0xc, 0x78, 0xc2, 0xc4, 0x7f, 0x79, 0xed, 0xad, 0x9c, - 0x7f, 0xe3, 0xb3, 0x1a, 0xeb, 0x74, 0xef, 0xf8, 0x2b, 0x87, - 0xec, 0xfb, 0x79, 0x8f, 0x3b, 0x50, 0xd7, 0xac, 0x49, 0xff, - 00, 0x9e, 0xfa, 0x4b, 0x9c, 0x7f, 0xdf, 0x24, 0xd2, 0xb, - 0xa3, 0xed, 0x1a, 0x2b, 0xe5, 0x5d, 0x33, 0xfe, 0xa, 0x7d, - 0xfb, 0x39, 0xea, 0x78, 0x1f, 0xf0, 0x9d, 0x3d, 0xa1, 0x3d, - 0xae, 0xb4, 0xcb, 0x94, 0xfd, 0x7c, 0xbc, 0x57, 0x57, 0xa6, - 0xfe, 0xdf, 0x1f, 0xb3, 0xee, 0xa8, 0x7, 0x95, 0xf1, 0x4f, - 0x42, 0x8c, 0x9e, 0xd7, 0x12, 0x3c, 0x47, 0xff, 00, 0x1e, - 0x51, 0x40, 0xcf, 0x7f, 0xa2, 0xbc, 0x9b, 0x4e, 0xfd, 0xad, - 0x7e, 0xb, 0x6a, 0xc4, 0xb, 0x5f, 0x8a, 0x7e, 0x13, 0x90, - 0x9e, 0xcd, 0xab, 0xc2, 0xa7, 0xf5, 0x61, 0x5d, 0x4d, 0x87, - 0xc6, 0x4f, 00, 0xea, 0xb8, 0xfb, 0x17, 0x8d, 0xbc, 0x3b, - 0x77, 0x9e, 0x9e, 0x4e, 0xab, 0x3, 0x67, 0xf2, 0x7a, 00, - 0xec, 0x28, 0xac, 0x9b, 0x7f, 0x17, 0x68, 0x57, 0x78, 0xf2, - 0x35, 0xad, 0x3a, 0x6c, 0xff, 00, 0xcf, 0x3b, 0xa8, 0xdb, - 0xf9, 0x1a, 0xd0, 0x8a, 0xf2, 0x9, 0xff, 00, 0xd5, 0xcf, - 0x1c, 0x9f, 0xee, 0xb8, 0x34, 0x1, 0x35, 0x14, 0x51, 0x40, - 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, - 0x51, 0x40, 0x5, 0x23, 0x28, 0x60, 0x41, 00, 0x83, 0xd4, - 0x1a, 0x5a, 0x28, 0x3, 0x97, 0xd5, 0xbe, 0x19, 0x78, 0x5b, - 0x5b, 0x2c, 0xd7, 0x5a, 0x25, 0xae, 0xf6, 0xeb, 0x24, 0x4b, - 0xe5, 0x31, 0xfc, 0x57, 0x15, 0xc5, 0xea, 0xff, 00, 0xb3, - 0x7e, 0x83, 0x76, 0x4b, 0x58, 0x5e, 0xdd, 0xd8, 0x1e, 0xca, - 0xc4, 0x4a, 0xbf, 0xae, 0xf, 0xeb, 0x5e, 0xb9, 0x45, 0x79, - 0xd5, 0xb2, 0xec, 0x1e, 0x23, 0xf8, 0x94, 0x93, 0xf9, 0x59, - 0xfd, 0xe8, 0xc2, 0x74, 0x29, 0x4f, 0xe2, 0x8a, 0x3e, 0x7b, - 0xbd, 0xfd, 0x99, 0xb5, 0x38, 0xf2, 0x6d, 0x35, 0x9b, 0x59, - 0x87, 0x61, 0x34, 0x4d, 0x1f, 0xf2, 0xdd, 0x58, 0x17, 0xbf, - 0xb3, 0xff, 00, 0x8b, 0xad, 0x9, 0xf2, 0xe0, 0xb5, 0xbb, - 0x3, 0xbc, 0x33, 0x8f, 0xfd, 0x9b, 0x15, 0xf5, 0x1d, 0x15, - 0xe4, 0x54, 0xe1, 0xcc, 0x4, 0xfe, 0x14, 0xd7, 0xa3, 0xff, - 00, 0x3b, 0x9c, 0xb2, 0xc0, 0x51, 0x7b, 0x68, 0x7c, 0x87, - 0x3f, 0xc2, 0x3f, 0x18, 0x5b, 0xe7, 0x76, 0x83, 0x72, 0xc3, - 0xd5, 0xa, 0xb7, 0xf2, 0x35, 0x49, 0xfe, 0x1d, 0x78, 0xa2, - 0x33, 0xcf, 0x87, 0xf5, 0x1f, 0xc2, 0xd9, 0xcf, 0xf4, 0xaf, - 0xb2, 0x68, 0xae, 0x27, 0xc2, 0xd8, 0x6e, 0x95, 0x25, 0xf8, - 0x7f, 0x91, 0x93, 0xcb, 0xa1, 0xd2, 0x4c, 0xf8, 0xd0, 0x7c, - 0x3d, 0xf1, 0x3b, 0x1e, 0x3c, 0x3f, 0xa9, 0x7f, 0xe0, 0x2b, - 0xff, 00, 0x85, 0x5c, 0xb7, 0xf8, 0x53, 0xe2, 0xeb, 0xaf, - 0xb9, 0xa0, 0x5d, 0x8f, 0xfa, 0xe8, 0x2, 0x7f, 0xe8, 0x44, - 0x57, 0xd7, 0xf4, 0x50, 0xb8, 0x5b, 0xf, 0xd6, 0xa4, 0xbf, - 0xf, 0xf2, 0x5, 0x97, 0x43, 0xac, 0x99, 0xf2, 0xe6, 0x9f, - 0xf0, 0x3, 0xc5, 0xb7, 0xa4, 0x79, 0xb0, 0x5b, 0x59, 0x2f, - 0xac, 0xf3, 0x83, 0xfa, 0x2e, 0x6b, 0xa9, 0xd2, 0xbf, 0x66, - 0x59, 0x4b, 0x2b, 0x6a, 0x5a, 0xda, 0x2a, 0xf7, 0x4b, 0x58, - 0x72, 0x7f, 0xef, 0xa6, 0x3f, 0xd2, 0xbd, 0xea, 0x8a, 0xef, - 0xa5, 0xc3, 0xb8, 0xa, 0x7a, 0xca, 0x2e, 0x5e, 0xaf, 0xfc, - 0xac, 0x6d, 0x1c, 0xd, 0x18, 0xee, 0xae, 0x71, 0x5e, 0x1e, - 0xf8, 0x3d, 0xe1, 0x6f, 0xe, 0xec, 0x78, 0xf4, 0xd5, 0xbc, - 0xb8, 0x5e, 0x7c, 0xeb, 0xc3, 0xe6, 0x1c, 0xfa, 0xe0, 0xf0, - 0x3f, 0x1, 0x5d, 0xa0, 0x1, 0x40, 00, 0x60, 0xe, 0x80, - 0x52, 0xd1, 0x5e, 0xfd, 0x1a, 0x14, 0xb0, 0xf1, 0xe5, 0xa5, - 0x15, 0x15, 0xe4, 0x8e, 0xd8, 0xc2, 0x30, 0x56, 0x8a, 0xb0, - 0x51, 0x45, 0x15, 0xb9, 0x61, 0x45, 0x14, 0x50, 0x1, 0x45, - 0x14, 0x50, 0x7, 0x1, 0xf1, 0xa6, 0xef, 0xec, 0xde, 0x11, - 0x7f, 0x73, 0x5f, 0xa, 0x6b, 0x72, 0x79, 0x97, 0x97, 0xc, - 0x7b, 0xb1, 0xaf, 0xb5, 0x7f, 0x68, 0x1b, 0x9f, 0x27, 0xc3, - 0x8, 0x9e, 0xb9, 0x35, 0xf1, 0x1e, 0xa8, 0xfb, 0xa4, 0x94, - 0xfa, 0xb1, 0xaf, 0xce, 0xf3, 0xd9, 0x73, 0x63, 0x23, 0x1e, - 0xc8, 0xfc, 0xfb, 0x89, 0x67, 0xef, 0x24, 0x78, 0x67, 0xc7, - 0x2b, 0x8d, 0x9a, 0x5c, 0xe3, 0xfd, 0x93, 0xfc, 0xab, 0xf5, - 0x97, 0xf6, 0x7f, 0xd2, 0x46, 0x85, 0xf0, 0x37, 0xc0, 0x16, - 0xb, 0x9c, 0x41, 0xa1, 0x59, 0xaf, 0x3e, 0xbe, 0x4a, 0xe6, - 0xbf, 0x22, 0xfe, 0x38, 0x39, 0x9a, 0x23, 0xa, 0xe5, 0x9a, - 0x46, 0x8, 00, 0xea, 0x49, 0xe2, 0xbf, 0x68, 0x3c, 0x33, - 0x62, 0x9a, 0x5f, 0x86, 0xf4, 0xab, 0x38, 0xc6, 0xd4, 0xb7, - 0xb4, 0x8a, 0x25, 0x7, 0xb0, 0x54, 0x3, 0xfa, 0x57, 0xd5, - 0xe5, 0x6a, 0xd4, 0x51, 0x5c, 0x1d, 0x1b, 0x61, 0x27, 0x2e, - 0xf2, 0x66, 0x9d, 0x14, 0x51, 0x5e, 0xc9, 0xf7, 0xe7, 0xe7, - 0xef, 0xc5, 0xdf, 0x13, 0x3f, 0x8b, 0x3e, 0x26, 0xf8, 0x82, - 0xf9, 0xf8, 0xb, 0x72, 0x6d, 0x90, 0x7a, 0x2c, 0x7f, 0x20, - 0xff, 00, 0xd0, 0x49, 0xfc, 0x6b, 0xdc, 0xbf, 0x64, 0xbf, - 0x8, 0xf9, 0x76, 0xd7, 0xda, 0xe4, 0xa9, 0xc9, 0x3e, 0x54, - 0x44, 0xfe, 0xb5, 0xf3, 0x7d, 0xfc, 0x6f, 0xa9, 0xf8, 0xdf, - 0x58, 0x86, 0x31, 0xba, 0x49, 0x35, 0x3b, 0x85, 00, 0x7a, - 0xf9, 0xad, 0x5f, 0x7c, 0x7c, 0x35, 0xf0, 0xd2, 0x78, 0x53, - 0xc1, 0x9a, 0x6d, 0x82, 0xa0, 0x46, 0x58, 0x83, 0x3f, 0xfb, - 0xc4, 0x57, 0xc1, 0x65, 0x94, 0x25, 0x5f, 0x30, 0x95, 0x59, - 0xfd, 0x9b, 0xbf, 0x9b, 0x3f, 0x39, 0xe1, 0xfa, 0x6f, 0x17, - 0x89, 0x9e, 0x2a, 0x7d, 0x2e, 0xfe, 0x6c, 0xea, 0x28, 0xa2, - 0x8a, 0xfb, 0xd3, 0xf4, 0x60, 0xa2, 0x8a, 0x28, 00, 0xa2, - 0x9a, 0xe8, 0x1c, 0x60, 0xe7, 0xd7, 0x83, 0x8a, 0x5c, 0x7b, - 0x9a, 00, 0xaf, 0x73, 0xa6, 0xda, 0x5e, 0x29, 0x17, 0x16, - 0xb0, 0xce, 0xf, 0x69, 0x23, 0xd, 0xfc, 0xc5, 0x4f, 0x1c, - 0x49, 0xc, 0x6b, 0x1c, 0x68, 0xb1, 0xc6, 0x80, 0x2a, 0xaa, - 0x8c, 00, 0x7, 0x40, 0x5, 0x3a, 0x8a, 00, 0x28, 0xa2, - 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, - 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, - 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x46, 0x50, 0xc3, 0x4, - 0x2, 0x3d, 0xd, 0x67, 0x5e, 0x78, 0x6b, 0x48, 0xd4, 0x3f, - 0xe3, 0xeb, 0x4a, 0xb2, 0xb9, 0xff, 00, 0xae, 0xd6, 0xe8, - 0xff, 00, 0xcc, 0x56, 0x95, 0x14, 0x1, 0xc5, 0x6a, 0x9f, - 0x4, 0xfe, 0x1e, 0xeb, 0x60, 0x8d, 0x43, 0xc0, 0xde, 0x1c, - 0xbd, 0xdd, 0xd7, 0xcf, 0xd2, 0xa0, 0x7c, 0xfe, 0x6b, 0x5c, - 0xa6, 0xa7, 0xfb, 0x1f, 0x7c, 0x10, 0xd6, 0x14, 0x8b, 0xbf, - 0x85, 0x5e, 0x13, 0x70, 0x7a, 0xec, 0xd2, 0xa2, 0x4f, 0xfd, - 0x4, 0xa, 0xf6, 0xa, 0x28, 0x3, 0xe7, 0x4d, 0x57, 0xfe, - 0x9, 0xe5, 0xfb, 0x3c, 0x6a, 0xe0, 0x89, 0x7e, 0x18, 0x69, - 0x50, 0xe7, 0xfe, 0x7d, 0x64, 0x9a, 0xf, 0xfd, 0x1, 0xc5, - 0x72, 0xb7, 0x9f, 0xf0, 0x4a, 0xff, 00, 0xd9, 0xbe, 0xe8, - 0xb1, 0x5f, 0x5, 0xdd, 0xdb, 0x13, 0xff, 00, 0x3c, 0x75, - 0xab, 0xce, 0x3f, 0x3, 0x29, 0x15, 0xf5, 0xad, 0x14, 0x1, - 0xf1, 0x76, 0xa3, 0xff, 00, 0x4, 0x8e, 0xfd, 0x9f, 0x6f, - 0x50, 0xac, 0x1a, 0x7e, 0xbf, 0xa7, 0x9f, 0xef, 0x41, 0xab, - 0xbb, 0x1f, 0xfc, 0x7c, 0x35, 0x72, 0xba, 0x97, 0xfc, 0x11, - 0x97, 0xe0, 0xe5, 0xca, 0x9f, 0xb1, 0x78, 0x93, 0xc5, 0xd6, - 0x4d, 0xfe, 0xd5, 0xd5, 0xbc, 0x80, 0x7e, 0x70, 0x8a, 0xfb, - 0xee, 0x8a, 0x5, 0x64, 0x7e, 0x6d, 0xea, 0x1f, 0xf0, 0x44, - 0xdf, 0x5, 0xbc, 0x6d, 0xf6, 0x1f, 0x89, 0x1a, 0xf4, 0x2f, - 0xfc, 0x3f, 0x68, 0xb3, 0x82, 0x40, 0x3f, 0x2d, 0xb5, 0xc8, - 0xea, 0x1f, 0xf0, 0x44, 0x5b, 0x80, 0x18, 0xd8, 0xfc, 0x58, - 0x8c, 0x9f, 0xe1, 0x5b, 0x8d, 0x10, 0x8f, 0xcc, 0x89, 0xbf, - 0xa5, 0x7e, 0xa9, 0x51, 0x4c, 0x2c, 0x8f, 0xc8, 0x5b, 0xff, - 00, 0xf8, 0x22, 0x7f, 0x8e, 0xe2, 0xc, 0x6c, 0xfe, 0x22, - 0xf8, 0x7e, 0xe3, 0xfb, 0xa2, 0x6b, 0x49, 0xe3, 0xcf, 0xe5, - 0xba, 0xb9, 0x1d, 0x43, 0xfe, 0x8, 0xd9, 0xf1, 0xba, 0xd9, - 0x9b, 0xec, 0xba, 0xcf, 0x83, 0xef, 0x10, 0x74, 0xcd, 0xfc, - 0xf1, 0xb1, 0xfc, 0xc, 0x18, 0xfd, 0x6b, 0xf6, 0xa2, 0x8a, - 0x2e, 0x16, 0x47, 0xe1, 0xd5, 0xd7, 0xfc, 0x12, 0x2b, 0xf6, - 0x81, 0xb7, 0x56, 0x29, 0x69, 0xe1, 0xcb, 0x9c, 0x76, 0x8b, - 0x56, 0x19, 0x3f, 0xf7, 0xd2, 0xa, 0xe6, 0x35, 0x1f, 0xf8, - 0x25, 0xef, 0xed, 0x1b, 0x60, 0x5b, 0x6f, 0x81, 0xa2, 0xbc, - 0xb, 0xde, 0xdb, 0x55, 0xb5, 0x39, 0xfa, 0x66, 0x40, 0x6b, - 0xf7, 0xb2, 0x8a, 0x2e, 0x2e, 0x54, 0x7f, 0x3d, 0x77, 0xdf, - 0xf0, 0x4f, 0xdf, 0xda, 0x1b, 0x4f, 0x24, 0x49, 0xf0, 0xb3, - 0x59, 0x7c, 0x77, 0x80, 0xc5, 0x2f, 0xfe, 0x82, 0xe6, 0xb9, - 0x2d, 0x53, 0xf6, 0x4e, 0xf8, 0xd1, 0xa3, 0xbb, 0x25, 0xd7, - 0xc2, 0xdf, 0x16, 0x23, 0x2f, 0x5f, 0x2f, 0x48, 0x9a, 0x4f, - 0xfd, 0x5, 0x4d, 0x7f, 0x48, 0x34, 0x51, 0x70, 0xe5, 0x3f, - 0x99, 0x4d, 0x47, 0xe1, 0xf, 0x8e, 0xf4, 0x76, 0x2b, 0x7d, - 0xe0, 0xaf, 0x11, 0x59, 0xb0, 0xea, 0x27, 0xd2, 0xa7, 0x4c, - 0x7e, 0x69, 0x5c, 0xf5, 0xe6, 0x8d, 0xa8, 0x69, 0xcc, 0x56, - 0xee, 0xc6, 0xe6, 0xd4, 0x8e, 0xa2, 0x68, 0x59, 0x3f, 0x98, - 0xaf, 0xea, 0x2c, 0x80, 0x7a, 0x8a, 0xad, 0x71, 0xa5, 0x59, - 0x5d, 0xff, 00, 0xaf, 0xb3, 0xb7, 0x9b, 0xfe, 0xba, 0x44, - 0xad, 0xfc, 0xc5, 0x17, 0xe, 0x53, 0xf9, 0x70, 0xc8, 0xf5, - 0xa5, 0xaf, 0xe9, 0xe6, 0xeb, 0xe1, 0xf7, 0x85, 0xaf, 0xb3, - 0xf6, 0x9f, 0xd, 0x69, 0x17, 0x19, 0xeb, 0xe6, 0xd8, 0x44, - 0xd9, 0xfc, 0xd6, 0xb9, 0xcd, 0x4f, 0xf6, 0x78, 0xf8, 0x5b, - 0xac, 0xe7, 0xed, 0xdf, 0xe, 0xbc, 0x2d, 0x73, 0x9e, 0xbe, - 0x66, 0x91, 0x1, 0xcf, 0xfe, 0x39, 0x45, 0xc5, 0xca, 0x7f, - 0x35, 0x34, 0x57, 0xf4, 0x53, 0xa8, 0xfe, 0xc4, 0x7f, 0x1, - 0x75, 0x56, 0x2d, 0x3f, 0xc2, 0x7f, 0xb, 0x86, 0x3d, 0x4c, - 0x36, 0xb, 0x17, 0xfe, 0x83, 0x8a, 0xe5, 0xb5, 0x3f, 0xf8, - 0x26, 0xf7, 0xec, 0xeb, 0xaa, 0x67, 0x77, 0xc3, 0x8b, 0x4b, - 0x62, 0x7f, 0xe7, 0xd6, 0xee, 0xe2, 0x2f, 0xe5, 0x25, 0x17, - 0xe, 0x53, 0xf9, 0xff, 00, 0xa2, 0xbf, 0x75, 0x35, 0x5f, - 0xf8, 0x24, 0xf7, 0xec, 0xf1, 0xa8, 0xee, 0x31, 0x78, 0x7f, - 0x56, 0xd3, 0xc9, 0xef, 0x6b, 0xab, 0xcd, 0xc7, 0xe0, 0xe5, - 0xab, 0x91, 0xd4, 0x3f, 0xe0, 0x8d, 0x9f, 0x5, 0x2e, 0x77, - 0x7d, 0x9b, 0x5a, 0xf1, 0x75, 0x91, 0x3d, 0x36, 0xdf, 0x42, - 0xe0, 0x7f, 0xdf, 0x50, 0xd3, 0xb8, 0x72, 0x9f, 0x8b, 0x34, - 0x57, 0xec, 0x35, 0xd7, 0xfc, 0x11, 0x53, 0xe1, 0x9b, 0x83, - 0xf6, 0x7f, 0x1e, 0x78, 0xae, 0x13, 0xdb, 0xcc, 0x5b, 0x67, - 0x3, 0xf2, 0x8c, 0x57, 0x3f, 0xa8, 0x7f, 0xc1, 0x12, 0x7c, - 0x3a, 0xc0, 0xfd, 0x87, 0xe2, 0x8e, 0xa9, 0x19, 0xec, 0x2e, - 0x34, 0xb8, 0xdf, 0xf5, 0xe, 0x28, 0xb8, 0xac, 0xcf, 0xc9, - 0x9a, 0x2b, 0xf4, 0xeb, 0x51, 0xff, 00, 0x82, 0x23, 0x6a, - 0xe1, 0x98, 0xd8, 0x7c, 0x56, 0xb2, 0x65, 0xec, 0xb7, 0x1a, - 0x33, 0x83, 0xf9, 0x89, 0x4f, 0xf2, 0xae, 0x5b, 0x52, 0xff, - 00, 0x82, 0x2b, 0x7c, 0x4a, 0x81, 0x8f, 0xd8, 0x7c, 0x75, - 0xe1, 0x8b, 0xb5, 0x1d, 0x3c, 0xe4, 0xb8, 0x88, 0x9f, 0xc9, - 0x1a, 0x8b, 0x85, 0x99, 0xf9, 0xdd, 0x49, 0x5f, 0x73, 0xea, - 0x7f, 0xf0, 0x47, 0x7f, 0x8e, 0x76, 0x84, 0xfd, 0x92, 0xf7, - 0xc2, 0xb7, 0xeb, 0xfe, 0xce, 0xa3, 0x22, 0x1f, 0xfc, 0x7a, - 0x2a, 0xe3, 0xb5, 0x4f, 0xf8, 0x25, 0x87, 0xed, 0x1b, 0xa7, - 0x48, 0x56, 0x2f, 0x7, 0xd9, 0xea, 00, 0x7f, 0x1d, 0xae, - 0xaf, 0x6d, 0x83, 0xff, 00, 0x7d, 0xba, 0x9a, 0x2e, 0x16, - 0x67, 0xc9, 0x40, 0xed, 0x39, 0x1c, 0x1f, 0x51, 0x5a, 0xda, - 0x77, 0x8b, 0xb5, 0xdd, 0x1d, 0x81, 0xb0, 0xd6, 0xb5, 0x1b, - 0x12, 0x3a, 0x1b, 0x6b, 0xb9, 0x23, 0xc7, 0xe4, 0x45, 0x7b, - 0xe5, 0xdf, 0xfc, 0x13, 0x8f, 0xf6, 0x8e, 0xb3, 0x7d, 0xad, - 0xf0, 0xc2, 0xfe, 0x4f, 0x78, 0x6f, 0x2d, 0x5c, 0x7e, 0x92, - 0xd6, 0xe, 0xa3, 0xfb, 0xc, 0x7c, 0x7e, 0xd2, 0x89, 0x13, - 0xfc, 0x28, 0xf1, 0x23, 0x63, 0xbc, 0x16, 0xbe, 0x70, 0xfc, - 0xd0, 0x9a, 0x3, 0x53, 0x85, 0xb0, 0xf8, 0xf3, 0xf1, 0x2f, - 0x4b, 0x60, 0xd6, 0x9f, 0x10, 0x7c, 0x53, 0x6e, 0x47, 0x4d, - 0x9a, 0xcd, 0xc0, 0xc7, 0xfe, 0x3f, 0x5d, 0x4e, 0x9f, 0xfb, - 0x63, 0xfc, 0x71, 0xd2, 0xd9, 0x4d, 0xbf, 0xc5, 0x5f, 0x15, - 0x64, 0x74, 0xf3, 0x75, 0x29, 0x25, 0x1f, 0x93, 0x13, 0x58, - 0xfa, 0xaf, 0xec, 0xcb, 0xf1, 0x73, 0x44, 0x24, 0x5e, 0xfc, - 0x32, 0xf1, 0x64, 0x4, 0x7a, 0xe8, 0xd7, 0x7, 0xf9, 0x25, - 0x73, 0x1a, 0x9f, 0xc3, 0x3f, 0x18, 0x68, 0x80, 0x9d, 0x47, - 0xc2, 0x7a, 0xe5, 0x80, 0x1d, 0x4d, 0xd6, 0x9b, 0x34, 0x7f, - 0xfa, 0x12, 0x8a, 0x3, 0x53, 0xda, 0x6c, 0x7f, 0xe0, 0xa2, - 0x5f, 0xb4, 0x55, 0x86, 0xd0, 0xbf, 0x13, 0xf5, 0x39, 0x40, - 0xed, 0x3c, 0x16, 0xf2, 0x7f, 0x38, 0xeb, 0xa8, 0xd3, 0xbf, - 0xe0, 0xa9, 0xdf, 0xb4, 0x66, 0x9e, 0x81, 0x4f, 0x8c, 0x6d, - 0x2e, 0xc0, 0xff, 00, 0x9f, 0x8d, 0x22, 0xd5, 0x89, 0xfc, - 0x42, 0x3, 0x5f, 0x28, 0x4f, 0x65, 0x71, 0x6a, 0x71, 0x34, - 0x12, 0xc2, 0x7f, 0xe9, 0xa2, 0x15, 0xfe, 0x75, 0x6, 0x47, - 0xad, 0x1, 0x76, 0x7d, 0xb1, 0x67, 0xff, 00, 0x5, 0x79, - 0xf8, 0xff, 00, 0x6a, 0xa0, 0x49, 0x37, 0x86, 0xae, 0xcf, - 0xf7, 0xa6, 0xd2, 0x70, 0x4f, 0xfd, 0xf2, 0xeb, 0x5b, 0x96, - 0x3f, 0xf0, 0x59, 0x6f, 0x8d, 0x76, 0xe0, 0xb, 0x8d, 0x7, - 0xc1, 0xb7, 0x63, 0xb9, 0x36, 0x37, 0x8, 0x4f, 0xe5, 0x3d, - 0x7c, 0x19, 0x45, 0x16, 0xb, 0xb3, 0xf4, 0x7f, 0x4a, 0xff, - 00, 0x82, 0xd8, 0x78, 0xe6, 0x8, 0xf1, 0xa8, 0xfc, 0x39, - 0xd0, 0x2f, 0x1f, 0xfb, 0xd6, 0xf7, 0x93, 0x40, 0x3f, 0x22, - 0x1e, 0xba, 0x8d, 0x27, 0xfe, 0xb, 0x73, 0x37, 0xfc, 0xc4, - 0xfe, 0x14, 0x47, 0xff, 00, 0x6e, 0x9a, 0xc9, 0xff, 00, - 0xd9, 0xa1, 0xaf, 0xcb, 0x8a, 0x28, 0xb0, 0x5d, 0x9f, 0xad, - 0xfa, 0x5f, 0xfc, 0x16, 0xcf, 0xc2, 0x12, 0x11, 0xfd, 0xa3, - 0xf0, 0xd3, 0x5b, 0xb7, 0x1d, 0xcd, 0xad, 0xf4, 0x32, 0xff, - 00, 0xe8, 0x41, 0x6b, 0xa8, 0xd3, 0x3f, 0xe0, 0xb3, 0xdf, - 0x8, 0xae, 0xdc, 0xb, 0xbf, 0xa, 0xf8, 0xb6, 0xc4, 0x7f, - 0x78, 0xc1, 0x6f, 0x27, 0xf2, 0x96, 0xbf, 0x1a, 0x28, 0xa2, - 0xc1, 0xcc, 0xcf, 0xdc, 0x3b, 0x1f, 0xf8, 0x2b, 0xb7, 0xec, - 0xff, 00, 0x76, 0x47, 0x9d, 0x75, 0xe2, 0x3b, 0x2f, 0x79, - 0xb4, 0x92, 0x7f, 0xf4, 0x6, 0x6a, 0xdc, 0xb3, 0xff, 00, - 0x82, 0xaa, 0x7e, 0xce, 0x57, 0x6c, 0x14, 0xf8, 0xbe, 0xfa, - 0xdf, 0x3d, 0xe6, 0xd1, 0xae, 0x80, 0x1f, 0x94, 0x66, 0xbf, - 0x8, 0x28, 0xa2, 0xc3, 0xe6, 0x3f, 0xa0, 0xd, 0x3f, 0xfe, - 0xa, 0x47, 0xfb, 0x39, 0x6a, 0x2c, 0x15, 0x3e, 0x25, 0x5a, - 0x42, 0x4f, 0xfc, 0xfc, 0x59, 0x5d, 0x44, 0x3f, 0x36, 0x88, - 0xa, 0xea, 0x6c, 0x3f, 0x6d, 0xef, 0x80, 0x9a, 0x88, 0x5f, - 0x27, 0xe2, 0xcf, 0x85, 0x81, 0x6e, 0x82, 0x5d, 0x41, 0x63, - 0x3f, 0x93, 0x62, 0xbf, 0x9d, 0x6a, 0x29, 0x58, 0x39, 0x8f, - 0xe9, 0x53, 0x4e, 0xfd, 0xa2, 0xfe, 0x16, 0x6a, 0xca, 0xd, - 0x9f, 0xc4, 0x6f, 0xb, 0x4e, 0xf, 0x4d, 0xba, 0xc4, 0x1c, - 0xff, 00, 0xe3, 0xf5, 0xd3, 0xd8, 0x78, 0xf3, 0xc3, 0x5a, - 0xa8, 0x6, 0xcb, 0xc4, 0x3a, 0x55, 0xd8, 0x3d, 0xc, 0x17, - 0xb1, 0xbe, 0x7f, 0x26, 0xaf, 0xe6, 0x12, 0x95, 0x58, 0xa9, - 0xc8, 0x24, 0x1f, 0x6a, 0x2c, 0x1c, 0xc7, 0xf5, 0x23, 0xd, - 0xed, 0xbd, 0xc8, 0x6, 0x29, 0xe2, 0x94, 0x1f, 0xee, 0x38, - 0x3f, 0xca, 0xa6, 0xaf, 0xe5, 0xf2, 0xc7, 0xc5, 0x9a, 0xde, - 0x96, 00, 0xb3, 0xd6, 0x75, 0xb, 0x40, 0x3a, 0x79, 0x17, - 0x4e, 0x98, 0xfc, 0x8d, 0x6e, 0x5a, 0xfc, 0x66, 0xf8, 0x83, - 0x63, 0x8f, 0xb3, 0x78, 0xef, 0xc4, 0xd6, 0xf8, 0xe9, 0xe5, - 0x6b, 0x17, 0xb, 0xfc, 0x9e, 0x8b, 0xf, 0x98, 0xfe, 0x99, - 0xe8, 0xaf, 0xe6, 0xd6, 0xc7, 0xf6, 0xa0, 0xf8, 0xc1, 0xa6, - 0xe3, 0xec, 0xff, 00, 0x14, 0x3c, 0x5c, 0x98, 0xe9, 0x9d, - 0x6a, 0xe1, 0xbf, 0x9b, 0x9a, 0xe9, 0xb4, 0xef, 0xdb, 0x9f, - 0xe3, 0xf6, 0x96, 00, 0x83, 0xe2, 0xbf, 0x88, 0xc8, 0x1d, - 0xa6, 0xb9, 0x12, 0xff, 00, 0xe8, 0x60, 0xd1, 0x60, 0xe6, - 0x3f, 0xa2, 0x4a, 0x2b, 0xf0, 0x7, 0x4d, 0xff, 00, 0x82, - 0x94, 0x7e, 0xd1, 0xba, 0x6e, 0x31, 0xf1, 0x1e, 0xe2, 0xe8, - 0xe, 0xd7, 0x36, 0x36, 0xaf, 0xfa, 0xf9, 0x79, 0xae, 0xb7, - 0x4c, 0xff, 00, 0x82, 0xb2, 0x7e, 0xd0, 0xba, 0x78, 0x51, - 0x2e, 0xb5, 0xa3, 0x5f, 0x81, 0xff, 00, 0x3f, 0x3a, 0x4c, - 0x79, 0x3f, 0xf7, 0xce, 0xda, 0x2c, 0x1c, 0xc8, 0xfd, 0xd1, - 0xa2, 0xbf, 0x16, 0x74, 0xdf, 0xf8, 0x2c, 0x9f, 0xc6, 0xbb, - 0x45, 0xb, 0x75, 0xa2, 0x78, 0x46, 0xfb, 0x1d, 0x59, 0xac, - 0xa7, 0x42, 0x7f, 0xef, 0x99, 0xb1, 0xfa, 0x57, 0xeb, 0x5f, - 0xc0, 0x9f, 0x1c, 0x6a, 0x7f, 0x13, 0x3e, 0xc, 0xf8, 0x2b, - 0xc5, 0xba, 0xcd, 0xb4, 0x16, 0x5a, 0xa6, 0xb7, 0xa4, 0xdb, - 0x6a, 0x17, 0x16, 0xf6, 0xc0, 0x88, 0xe3, 0x79, 0x23, 0xe, - 0x55, 0x72, 0x49, 0xc0, 0xcf, 0x73, 0x48, 0x77, 0xb9, 0xdd, - 0xd1, 0x45, 0x14, 0xc, 0x28, 0xa2, 0x8a, 00, 0xf1, 0x4f, - 0xda, 0x4e, 0xe7, 0xcb, 0xd1, 0xa1, 0x4c, 0xff, 00, 0x9, - 0x35, 0xf1, 0xa6, 0xa0, 0xdc, 0x39, 0xf5, 0x26, 0xbe, 0xb3, - 0xfd, 0xa7, 0x6e, 0xb6, 0xc0, 0x89, 0x9e, 0x89, 0x8a, 0xf9, - 0x23, 0x51, 0x6c, 0x46, 0xdf, 0x8d, 0x7e, 0x69, 0x9b, 0x3e, - 0x7c, 0xc2, 0x5e, 0x56, 0x3f, 0x31, 0xe2, 0x59, 0xfe, 0xf4, - 0xf0, 0xdf, 0x1d, 0xc4, 0xda, 0x9f, 0x8e, 0x3c, 0x39, 0x62, - 0x83, 0x73, 0xdc, 0xea, 0xd6, 0xb0, 0x85, 0xf5, 0x2d, 0x2a, - 0xc, 0x7e, 0xb5, 0xfb, 0x56, 00, 00, 0x1, 0xd0, 0x57, - 0xe3, 0x1d, 0x9d, 0xa3, 0xeb, 0x5f, 0xb4, 0x7, 0xc3, 0x8b, - 0x18, 0xcf, 0xcf, 0x2f, 0x89, 0x6c, 0x3f, 0x49, 0xd1, 0x8f, - 0xf2, 0xaf, 0xd9, 0xda, 0xfb, 0x8c, 0xbd, 0x5a, 0x8a, 0x3d, - 0xae, 0x13, 0x8f, 0x2e, 0x5a, 0x9f, 0x76, 0xc2, 0x8a, 0x28, - 0xaf, 0x4c, 0xfb, 0x43, 0xf3, 0xa6, 0xf6, 0x59, 0x3e, 0x1f, - 0x7c, 0x74, 0xd7, 0xac, 0xb5, 0x48, 0xb6, 0xc9, 0x6d, 0xa9, - 0xc9, 0x72, 0x23, 0x27, 0x21, 0x92, 0x43, 0xe6, 0x21, 0xfc, - 0x98, 0x57, 0xd7, 0x5a, 0x47, 0xed, 0x13, 0xe1, 0xdb, 0x8b, - 0x48, 0x7c, 0xd9, 0x15, 0x1f, 0x68, 0xc8, 0xd, 0xd3, 0x8a, - 0xf0, 0x9f, 0xdb, 0xc7, 0xe1, 0x85, 0xed, 0x86, 0xa5, 0xa7, - 0x7c, 0x48, 0xd2, 0xd5, 0x9e, 0x25, 0x44, 0xb1, 0xd4, 0x63, - 0x41, 0xf7, 0x70, 0x4f, 0x97, 0x21, 0xf6, 0xe7, 0x69, 0x3f, - 0xee, 0xd7, 0xce, 0xfe, 0x1f, 0xf1, 0x7c, 0x37, 0xf1, 0x28, - 0xf3, 0x36, 0xc9, 0xdd, 0x49, 0xaf, 0x8a, 0xaf, 0xf5, 0x9c, - 0xb6, 0xac, 0xe5, 0x87, 0xd5, 0x33, 0xf2, 0x6f, 0xaf, 0xd5, - 0xe1, 0xcc, 0x55, 0x5c, 0x2b, 0x8f, 0xb8, 0xdd, 0xd3, 0xf2, - 0x67, 0xe8, 0xc4, 0x3f, 0x1c, 0x7c, 0x33, 0x2f, 0xfc, 0xbd, - 0x1, 0xff, 00, 0x2, 0x15, 0xa1, 0x7, 0xc5, 0x9f, 0xe, - 0x4f, 0xd2, 0xf5, 0x47, 0xe3, 0x5f, 0x9f, 0xb0, 0xea, 0x21, - 0xc6, 0x44, 0xa4, 0x7e, 0x35, 0x65, 0x35, 0x29, 0xd7, 0xee, - 0xdc, 0xb8, 0xfa, 0x35, 0x72, 0x2c, 0xff, 00, 0x15, 0x1f, - 0x8a, 0x8, 0xf6, 0x21, 0xc4, 0xf2, 0x7f, 0x65, 0x1f, 0xa0, - 0xd0, 0xfc, 0x44, 0xd0, 0x26, 0xc6, 0x2f, 0xe3, 0xe7, 0xde, - 0xae, 0x47, 0xe2, 0xfd, 0x1e, 0x50, 0xa, 0xdf, 0xc2, 0x73, - 0xfe, 0xd5, 0x7e, 0x7a, 0x26, 0xb9, 0x7d, 0x18, 0xf9, 0x6f, - 0x25, 0x1f, 0xf0, 0x3a, 0xb5, 0x1f, 0x8b, 0x35, 0x68, 0xbe, - 0xed, 0xfc, 0xdf, 0xf7, 0xd5, 0x6c, 0xb8, 0x8a, 0xaa, 0xf8, - 0xa9, 0xaf, 0xbc, 0xea, 0x8f, 0x12, 0xc7, 0xac, 0xf, 0xd0, - 0xa4, 0xd7, 0xf4, 0xe9, 0x3e, 0xed, 0xe4, 0x27, 0xfe, 0x5, - 0x53, 0xae, 0xa3, 0x6a, 0xdd, 0x2e, 0x22, 0x3f, 0x47, 0x15, - 0xf9, 0xf3, 0x17, 0x8f, 0xf5, 0xd8, 0x47, 0xcb, 0x7f, 0x2f, - 0xe2, 0x6a, 0xf4, 0x3f, 0x15, 0x3c, 0x45, 0xf, 0x4b, 0xe7, - 0x3f, 0x8d, 0x6e, 0xb8, 0x8d, 0x7d, 0xaa, 0x7f, 0x89, 0xd1, - 0x1e, 0x23, 0xa0, 0xf7, 0x8b, 0x3e, 0xfd, 0x59, 0xe3, 0x6e, - 0x92, 0x29, 0xfa, 0x30, 0xa7, 0xee, 0x1e, 0xa2, 0xbe, 0xf, - 0xb7, 0xf8, 0xd9, 0xe2, 0x48, 0x31, 0xfe, 0x92, 0xcd, 0xf5, - 0x35, 0xa3, 0x6f, 0xfb, 0x40, 0xf8, 0x8a, 0x12, 0x33, 0x33, - 0x1c, 0x7a, 0x35, 0x6e, 0xb8, 0x8a, 0x8f, 0x58, 0x33, 0xa2, - 0x3c, 0x41, 0x85, 0x7b, 0xdc, 0xfb, 0x82, 0x8a, 0xf8, 0xd2, - 0xdb, 0xf6, 0x97, 0xd7, 0x62, 0x18, 0x62, 0xed, 0xff, 00, - 0x2, 0xad, 0x3b, 0x6f, 0xda, 0x93, 0x54, 0x4f, 0xbe, 0xae, - 0x7f, 0x1c, 0xd6, 0xeb, 0x3f, 0xc2, 0x3d, 0xee, 0xbe, 0x46, - 0xf1, 0xcf, 0x30, 0x72, 0xfb, 0x47, 0xd7, 0x14, 0x57, 0xcb, - 0x96, 0xff, 00, 0xb5, 0x64, 0xe0, 00, 0xf1, 0x37, 0xe4, - 0x2b, 0x52, 0xd7, 0xf6, 0xab, 0x84, 0xe3, 0xcd, 0x8b, 0xf3, - 0x15, 0xbc, 0x73, 0xbc, 0x13, 0xfb, 0x5f, 0x81, 0xd1, 0x1c, - 0xdb, 0x7, 0x2f, 0xb6, 0x7d, 0x1f, 0x45, 0x78, 0x34, 0x1f, - 0xb5, 0x2e, 0x9a, 0xff, 00, 0x7a, 0x35, 0x15, 0xab, 0x6b, - 0xfb, 0x4a, 0x68, 0x72, 0x91, 0xb8, 0x28, 0xff, 00, 0x81, - 0x62, 0xb7, 0x8e, 0x6d, 0x82, 0x97, 0xfc, 0xbc, 0x47, 0x44, - 0x73, 0xc, 0x34, 0xb6, 0x9a, 0x3d, 0x92, 0x8a, 0xf2, 0xdb, - 0x7f, 0xda, 0x7, 0xc3, 0xf3, 0x11, 0xf3, 0x81, 0xff, 00, - 0x3, 0x15, 0xa7, 0x7, 0xc6, 0xaf, 0xe, 0xcc, 0x33, 0xe7, - 0x81, 0xff, 00, 0x2, 0x15, 0xd1, 0x1c, 0x7e, 0x16, 0x5b, - 0x54, 0x46, 0xcb, 0x15, 0x46, 0x5b, 0x49, 0x1d, 0xfd, 0x15, - 0xc7, 0xc1, 0xf1, 0x53, 0xc3, 0xf3, 0x8e, 0x2e, 0xc0, 0xfa, - 0x91, 0x57, 0xe2, 0xf1, 0xee, 0x89, 0x30, 0x4, 0x5e, 0xa7, - 0xe7, 0x5b, 0xac, 0x45, 0x19, 0x6d, 0x35, 0xf7, 0x9a, 0xaa, - 0xb4, 0xde, 0xd2, 0x47, 0x43, 0x45, 0x64, 0xc7, 0xe2, 0xad, - 0x2a, 0x51, 0xf2, 0xde, 0xc5, 0xff, 00, 0x7d, 0x55, 0x95, - 0xd6, 0xac, 0x1f, 0xa5, 0xdc, 0x27, 0xfe, 0x6, 0x2b, 0x55, - 0x38, 0x3d, 0x99, 0x6a, 0x51, 0x7d, 0x4b, 0xb4, 0x54, 0x9, - 0x7d, 0x6f, 0x27, 0xdd, 0x9e, 0x33, 0xf4, 0x61, 0x52, 0x9, - 0xa3, 0x3d, 0x1d, 0x4f, 0xd0, 0xd5, 0x5d, 0xe, 0xe3, 0xe8, - 0xa4, 0x4, 0x1e, 0x87, 0x34, 0xb4, 0xc6, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0xc7, 0x89, - 0x24, 0xfb, 0xe8, 0xad, 0xfe, 0xf0, 0xcd, 0x3e, 0x8a, 00, - 0xcb, 0xbc, 0xf0, 0xbe, 0x8d, 0xa8, 0x9c, 0xdd, 0xe9, 0x16, - 0x37, 0x47, 0xd6, 0x6b, 0x64, 0x7f, 0xe6, 0x2b, 0x9a, 0xd5, - 0xfe, 0x5, 0xfc, 0x38, 0xd7, 0xc1, 0xfe, 0xd2, 0xf0, 0x17, - 0x86, 0xaf, 0xb3, 0xd7, 0xed, 0x1a, 0x4c, 0xf, 0xfc, 0xd2, - 0xbb, 0x9a, 0x28, 0x3, 0xc7, 0x6f, 0x7f, 0x63, 0x9f, 0x81, - 0x9a, 0x89, 0x26, 0x7f, 0x84, 0x9e, 0xe, 0x24, 0xf7, 0x4d, - 0x1a, 0x4, 0x3f, 0xf8, 0xea, 0x8a, 0xc5, 0xd4, 0x3f, 0x60, - 0xaf, 0xd9, 0xf7, 0x52, 0x42, 0x92, 0xfc, 0x29, 0xf0, 0xfc, - 0x60, 0xf7, 0xb7, 0x85, 0xa1, 0x3f, 0x9a, 0x30, 0xaf, 0x7c, - 0xa2, 0x80, 0x3e, 0x5a, 0xd4, 0xff, 00, 0xe0, 0x99, 0x3f, - 0xb3, 0x96, 0xa4, 0xf, 0xfc, 0x5b, 0xf1, 0x68, 0x4f, 0xf1, - 0x5b, 0x6a, 0x57, 0x49, 0xff, 00, 0xb5, 0x48, 0xae, 0x4b, - 0x52, 0xff, 00, 0x82, 0x47, 0x7e, 0xcf, 0xf7, 0xa0, 0xf9, - 0x16, 0x1a, 0xf5, 0x81, 0xf5, 0x83, 0x56, 0x76, 0xff, 00, - 0xd0, 0xc1, 0xaf, 0xb4, 0xa8, 0xa0, 0x56, 0x3e, 0x1, 0xd5, - 0x7f, 0xe0, 0x8c, 0x9f, 0x8, 0x6e, 0xb2, 0x6c, 0xbc, 0x4d, - 0xe2, 0xcb, 0x3, 0xe8, 0x67, 0x82, 0x50, 0x3f, 0x38, 0xbf, - 0xad, 0x72, 0x9a, 0x9f, 0xfc, 0x11, 0x33, 0xc2, 0x32, 0x3, - 0xfd, 0x9f, 0xf1, 0x2f, 0x5a, 0x80, 0xf6, 0x17, 0x36, 0x10, - 0xc8, 0x3f, 0x42, 0xb5, 0xfa, 0x53, 0x45, 0x1, 0x64, 0x7e, - 0x56, 0x6a, 0x1f, 0xf0, 0x44, 0x4b, 0x92, 0x49, 0xb1, 0xf8, - 0xb7, 0x10, 0x1d, 0x85, 0xc6, 0x84, 0x4f, 0xea, 0x27, 0xac, - 0x2b, 0xcf, 0xf8, 0x22, 0x57, 0x8b, 0xa3, 0x52, 0x6d, 0x7e, - 0x27, 0x68, 0xb3, 0x9e, 0xc2, 0x5d, 0x36, 0x68, 0xf3, 0xf9, - 0x3b, 0x57, 0xeb, 0x85, 0x14, 0xee, 0x16, 0x47, 0xe3, 0x4e, - 0xa7, 0xff, 00, 0x4, 0x60, 0xf8, 0xb5, 0x6e, 0x9, 0xb1, - 0xf1, 0x5f, 0x85, 0x2f, 0x71, 0xd0, 0x3c, 0xb7, 0x11, 0x67, - 0xff, 00, 0x21, 0x1a, 0xe4, 0xf5, 0xf, 0xf8, 0x24, 0x47, - 0xc7, 0xfb, 0x36, 0x22, 0xb, 0x6f, 0xe, 0x5f, 0x1, 0xde, - 0xd, 0x58, 0x2e, 0x7f, 0xef, 0xb4, 0x5a, 0xfd, 0xc2, 0xa2, - 0x8b, 0x8a, 0xc8, 0xfc, 0x14, 0xd5, 0x3f, 0xe0, 0x97, 0x9f, - 0xb4, 0x76, 0x9a, 0x7e, 0x4f, 0x3, 0x45, 0x7d, 0xef, 0x6b, - 0xaa, 0xda, 0x9f, 0xfd, 0xa, 0x41, 0x5c, 0xed, 0xe7, 0xfc, - 0x13, 0xbf, 0xf6, 0x8b, 0xb1, 0xcf, 0x99, 0xf0, 0xb7, 0x54, - 0x7c, 0x7f, 0xcf, 0x1b, 0x8b, 0x69, 0x3f, 0xf4, 0x19, 0x4d, - 0x7f, 0x41, 0xb4, 0x51, 0x70, 0xe5, 0x47, 0xf3, 0xa5, 0xa9, - 0xfe, 0xc5, 0x3f, 0x1d, 0xf4, 0x8c, 0xfd, 0xa7, 0xe1, 0x4f, - 0x89, 0xf8, 0xff, 00, 0x9e, 0x36, 0x2d, 0x2f, 0xfe, 0x81, - 0x9a, 0xe5, 0xf5, 0x1f, 0xd9, 0xd7, 0xe2, 0xa6, 0x90, 0x9, - 0xbd, 0xf8, 0x6d, 0xe2, 0xcb, 0x60, 0x3a, 0x99, 0x34, 0x5b, - 0x91, 0xff, 00, 0xb2, 0x57, 0xf4, 0xab, 0x45, 0x17, 0xe, - 0x53, 0xf9, 0x81, 0xd4, 0xfc, 0x11, 0xe2, 0x3d, 0x10, 0x13, - 0xa8, 0xe8, 0x1a, 0xa5, 0x80, 0x1d, 0x7e, 0xd5, 0x65, 0x24, - 0x78, 0xff, 00, 0xbe, 0x94, 0x56, 0x29, 0xf9, 0x4e, 0xf, - 0x7, 0xd0, 0xd7, 0xf5, 0x25, 0x3d, 0x9c, 0x17, 0x23, 0x13, - 0x41, 0x1c, 0xbf, 0xef, 0xa0, 0x3f, 0xce, 0xb2, 0xb5, 0xf, - 0x3, 0xf8, 0x73, 0x57, 0x4d, 0xb7, 0xde, 0x1f, 0xd2, 0xef, - 0x57, 0xd2, 0xe2, 0xca, 0x39, 0x7, 0xea, 0xb4, 0x5c, 0x39, - 0x4f, 0xe6, 0xa, 0x8a, 0xfe, 0x95, 0xf5, 0x2f, 0xd9, 0xe7, - 0xe1, 0x6e, 0xae, 0x85, 0x2f, 0x7e, 0x1c, 0xf8, 0x56, 0xe5, - 0x4f, 0x50, 0xfa, 0x35, 0xb9, 0xff, 00, 0xd9, 0x2b, 0x99, - 0xbc, 0xfd, 0x8b, 0xfe, 0x4, 0x5f, 0x82, 0x25, 0xf8, 0x49, - 0xe1, 0x1e, 0x7a, 0x98, 0xf4, 0x98, 0xa3, 0x3f, 0x9a, 0x81, - 0x45, 0xc5, 0xca, 0x7f, 0x3a, 0x30, 0xc0, 0xf7, 0x33, 0x47, - 0xc, 0x4a, 0x5e, 0x49, 0x18, 0x22, 0xa8, 0xea, 0x49, 0x38, - 0x2, 0xbf, 0xa7, 0xf, 0x86, 0x5e, 0x1f, 0x1e, 0x14, 0xf8, - 0x6f, 0xe1, 0x5d, 0x10, 0x74, 0xd3, 0xb4, 0xab, 0x5b, 0x4e, - 0x98, 0xfb, 0x91, 0x2a, 0xff, 00, 0x4a, 0xf2, 0x56, 0xfd, - 0x81, 0xbf, 0x67, 0xef, 0x3e, 0x29, 0xe3, 0xf8, 0x5d, 0xa3, - 0x5b, 0xcd, 0x13, 0x89, 0x12, 0x4b, 0x7f, 0x32, 0x32, 0xac, - 0xe, 0x41, 0x1b, 0x5c, 0x77, 0xaf, 0x7e, 00, 0x28, 00, - 0x70, 0x5, 0x5, 0x25, 0x61, 0x68, 0xa2, 0x8a, 0x43, 0xa, - 0x28, 0xa2, 0x80, 0x3e, 0x65, 0xfd, 0xa7, 0xae, 0xf3, 0x74, - 0xc9, 0x9e, 0x80, 0xa, 0xf9, 0x6f, 0x55, 0x6c, 0x40, 0xdf, - 0x4a, 0xfa, 0x2b, 0xf6, 0x96, 0xbb, 0xdf, 0xab, 0xca, 0xb9, - 0xe8, 0xd8, 0xaf, 0x9b, 0xf5, 0xa7, 0xdb, 0x6c, 0xe7, 0xfd, - 0x93, 0x5f, 0x97, 0x63, 0x5f, 0x3e, 0x61, 0x37, 0xe6, 0x7e, - 0x49, 0xc4, 0x93, 0xbd, 0x59, 0x1c, 0x17, 0xc1, 0x6b, 0x21, - 0xad, 0xfe, 0xd7, 0xdf, 0xc, 0x2d, 0x58, 0xf0, 0xba, 0xbf, - 0xda, 0x3f, 0x18, 0xe2, 0x79, 0x7, 0xfe, 0x81, 0x5f, 0xb0, - 0x35, 0xf9, 0x3d, 0xfb, 0x20, 0x69, 0x8b, 0xad, 0xfe, 0xd9, - 0xde, 0x16, 0x2c, 0x37, 0xb, 0x1b, 0x7b, 0xcb, 0xb1, 0xec, - 0x44, 0x25, 0x41, 0xff, 00, 0xc7, 0xeb, 0xf5, 0x86, 0xbf, - 0x44, 0xc1, 0xab, 0x52, 0x47, 0xda, 0x70, 0xdc, 0x39, 0x32, - 0xca, 0x41, 0x45, 0x14, 0x57, 0x69, 0xf4, 0xe5, 0x1d, 0x6b, - 0x45, 0xb1, 0xf1, 0x1e, 0x93, 0x75, 0xa6, 0x6a, 0x56, 0xb1, - 0xde, 0xd8, 0x5d, 0x46, 0x62, 0x9a, 0x9, 0x57, 0x2a, 0xea, - 0x7a, 0x83, 0x5f, 0x9e, 0x3f, 0x1f, 0x3f, 0x63, 0x7d, 0x73, - 0xe1, 0xc6, 0xa7, 0x73, 0xac, 0x78, 0x5c, 0x4b, 0xa8, 0xf8, - 0x71, 0x98, 0xba, 0x94, 0x3b, 0xa5, 0xb5, 0x1f, 0xdd, 0x71, - 0xdc, 0xf, 0xef, 0x7e, 0x78, 0xaf, 0xd1, 0xca, 0x42, 0x3, - 0x2, 0x8, 0xc8, 0x3d, 0x41, 0xae, 0x6a, 0xd4, 0x15, 0x65, - 0xd9, 0x9e, 0x2e, 0x67, 0x94, 0xd0, 0xcd, 0x29, 0xa8, 0xd5, - 0xd1, 0xad, 0x9a, 0xe9, 0xfe, 0x6b, 0xc8, 0xfc, 0x79, 0x4f, - 0xf8, 0x49, 0xb4, 0xae, 0x1e, 0x13, 0x22, 0x8e, 0x3a, 0x73, - 0x52, 0xf, 0x16, 0x6a, 0xb0, 0xff, 00, 0xac, 0xb4, 0x90, - 0x7f, 0xc0, 0x4d, 0x7e, 0xa5, 0x78, 0xa7, 0xe0, 0xb7, 0x84, - 0x3c, 0x5b, 0xbd, 0xaf, 0x34, 0x88, 0xa1, 0x99, 0x8e, 0x4c, - 0xd6, 0xa0, 0x46, 0xc4, 0xfa, 0x9c, 0x70, 0x7f, 0x11, 0x5e, - 0x7f, 0x7f, 0xfb, 0x1e, 0xf8, 0x4a, 0xe9, 0xcb, 0x45, 0x77, - 0x77, 0x8, 0x3d, 0x1, 0x54, 0x6c, 0x7e, 0x82, 0xbc, 0xa, - 0x99, 0x75, 0x5b, 0xfc, 0x29, 0xfe, 0x7, 0xc4, 0xcf, 0x84, - 0x9c, 0x3e, 0x1d, 0x7d, 0x1d, 0xbf, 0x3, 0xf3, 0xe5, 0x7c, - 0x79, 0x75, 0x1f, 0xdf, 0xb7, 0x71, 0xf5, 0x6, 0xa6, 0x4f, - 0x88, 0xc4, 0x70, 0xc8, 0xc3, 0xf0, 0xaf, 0xb9, 0x6e, 0xff, - 00, 0x62, 0x6d, 0x12, 0x40, 0x7c, 0x9d, 0x65, 0xd4, 0xff, - 00, 0xb7, 0x6c, 0xf, 0xfe, 0xcd, 0x58, 0x57, 0x9f, 0xb0, - 0xcc, 0x4e, 0xf, 0x93, 0xac, 0xdb, 0x39, 0xf4, 0x78, 0xa, - 0x8f, 0xeb, 0x5c, 0xaf, 0x2e, 0x9f, 0x5a, 0x5f, 0x8a, 0xff, - 00, 0x33, 0x96, 0x5c, 0x2f, 0x5e, 0x3b, 0x29, 0x7d, 0xeb, - 0xfc, 0xcf, 0x8f, 0xe3, 0xf8, 0x8f, 0x9, 0xeb, 0xb8, 0x55, - 0xa8, 0xfe, 0x22, 0x5b, 0x37, 0xf1, 0xd7, 0xd2, 0x97, 0xff, - 00, 0xb0, 0xbe, 0xa6, 0xa7, 0xf7, 0x33, 0x69, 0xd3, 0x8f, - 0x5d, 0xc5, 0x7f, 0x9a, 0xd7, 0x3f, 0x7f, 0xfb, 0xe, 0x78, - 0x89, 0xf, 0xee, 0xec, 0x6d, 0xa7, 0xf7, 0x8e, 0x64, 0x1f, - 0xcc, 0x8a, 0xe7, 0x96, 0x5f, 0xde, 0x93, 0x39, 0xa5, 0xc3, - 0xf8, 0xa8, 0xec, 0xe5, 0xf7, 0x5c, 0xf1, 0x48, 0xfc, 0x79, - 0x6a, 0xd8, 0xfd, 0xe0, 0xfc, 0x45, 0x59, 0x8f, 0xc6, 0x96, - 0x8d, 0xff, 00, 0x2d, 0x56, 0xbd, 0xe, 0xf3, 0xf6, 0x2d, - 0xf1, 0x44, 0x4c, 0x40, 0xd1, 0x25, 0x6c, 0x77, 0x49, 0x10, - 0xff, 00, 0x26, 0xac, 0x2b, 0xcf, 0xd9, 0x13, 0xc5, 0x96, - 0xec, 0x47, 0xf6, 0x16, 0xa3, 0xc7, 0xfc, 0xf3, 0x89, 0x9b, - 0xf9, 0x56, 0x2f, 0x3, 0x4f, 0xac, 0x24, 0xbe, 0x47, 0x3b, - 0xc9, 0xf1, 0x91, 0xfb, 0x4f, 0xe7, 0x16, 0x60, 0xa7, 0x8a, - 0xed, 0x1f, 0xfe, 0x5a, 0xa7, 0xe7, 0x56, 0x13, 0xc4, 0x56, - 0xcc, 0x3e, 0xfa, 0xfe, 0x75, 0x5e, 0xf7, 0xf6, 0x6c, 0xf1, - 0x2d, 0x96, 0xe2, 0xfa, 0x6e, 0xa7, 0x10, 0x1d, 0xda, 0x16, - 00, 0x7e, 0x95, 0x87, 0x71, 0xf0, 0x6f, 0x5a, 0xb5, 0x62, - 0x18, 0xdc, 0x21, 0x1d, 0x99, 0x6b, 0x9d, 0xe0, 0xa8, 0xf7, - 0x68, 0xe7, 0x78, 0xc, 0x64, 0x7e, 0xda, 0xf9, 0xa3, 0xa9, - 0x5d, 0x66, 0xdd, 0xbf, 0x88, 0x54, 0x83, 0x53, 0x80, 0xff, - 00, 0x10, 0xae, 0x16, 0x4f, 0x86, 0xfa, 0xec, 0x1f, 0x76, - 0x49, 0x4f, 0xd5, 0x6a, 0xbb, 0xf8, 0x43, 0xc4, 0x56, 0xfd, - 0x1d, 0x8f, 0xd4, 0x1a, 0xcf, 0xea, 0x34, 0x9e, 0xd3, 0x32, - 0xfa, 0xbe, 0x35, 0x7f, 0x2b, 0x3d, 0x18, 0x5f, 0x42, 0x7f, - 0x88, 0x53, 0x85, 0xd4, 0x47, 0xa3, 0xd7, 0x98, 0x9d, 0x2b, - 0xc4, 0xb0, 0xff, 00, 0xb, 0x37, 0xe3, 0x4d, 0xdf, 0xe2, - 0x38, 0x3a, 0xc0, 0xc7, 0xf1, 0xa9, 0xfe, 0xcf, 0x8b, 0xda, - 0x62, 0xf6, 0x78, 0xd5, 0xf6, 0x13, 0xf9, 0x9e, 0xa6, 0xb7, - 0x2b, 0xd9, 0xff, 00, 0x5a, 0x91, 0x6e, 0xd8, 0x74, 0x94, - 0xfe, 0x75, 0xe5, 0x3, 0x59, 0xd7, 0xa1, 0xfb, 0xd6, 0x92, - 0x1f, 0xc2, 0x9c, 0x3c, 0x59, 0xaa, 0xc5, 0xf7, 0xed, 0x24, - 0x1f, 0x81, 0xa8, 0x79, 0x6b, 0x7b, 0x34, 0x2e, 0x6c, 0x5c, - 0x77, 0xa4, 0xfe, 0xf3, 0xd6, 0xd3, 0x52, 0xb8, 0x4f, 0xbb, - 0x70, 0xe3, 0xe8, 0xd5, 0x62, 0x3d, 0x7f, 0x50, 0x8f, 0xee, - 0xdd, 0xc8, 0x3f, 0xe0, 0x55, 0xe4, 0xb, 0xe3, 0xbb, 0xb8, - 0xfe, 0xfd, 0xbb, 0x8f, 0xc0, 0xd4, 0xc9, 0xf1, 0xc, 0xaf, - 0xde, 0x8d, 0x87, 0xe7, 0x59, 0xbc, 0xba, 0xa2, 0xda, 0xc3, - 0xfa, 0xd6, 0x26, 0x1b, 0xc2, 0x48, 0xf6, 0x38, 0xbc, 0x63, - 0xac, 0x43, 0x8d, 0x97, 0xb2, 0xc, 0x7b, 0xd5, 0xb8, 0xbe, - 0x22, 0x6b, 0xb0, 0x9e, 0x2f, 0x58, 0xfd, 0x6b, 0xc6, 0x63, - 0xf8, 0x8d, 0x17, 0x7c, 0x8f, 0xc6, 0xac, 0xc7, 0xf1, 0xe, - 0xd8, 0xf5, 0x7a, 0x5f, 0x52, 0xc4, 0x47, 0x6f, 0xcc, 0xb5, - 0x99, 0xd6, 0x8e, 0xfc, 0xcb, 0xef, 0x3d, 0xb2, 0xf, 0x8b, - 0x7e, 0x21, 0x83, 0xa5, 0xd6, 0x7e, 0xb5, 0xa1, 0x6f, 0xf1, - 0xc3, 0xc4, 0x50, 0x11, 0x99, 0xb7, 0x62, 0xbc, 0x36, 0x3f, - 0x1e, 0xda, 0x37, 0xfc, 0xb5, 0x15, 0x66, 0x3f, 0x1a, 0xda, - 0x37, 0xfc, 0xb5, 0x5a, 0x7e, 0xcb, 0x17, 0x1d, 0x9b, 0xfb, - 0xd9, 0xb4, 0x73, 0xba, 0xb1, 0xfb, 0x6d, 0x1e, 0xf9, 0x6f, - 0xfb, 0x43, 0x78, 0x82, 0x10, 0x1, 0x73, 0xf9, 0xd6, 0xa5, - 0xaf, 0xed, 0x2f, 0xac, 0xc5, 0xf7, 0xb2, 0x6b, 0xe7, 0x74, - 0xf1, 0x6d, 0xa3, 0x7f, 0xcb, 0x54, 0xfc, 0xea, 0x74, 0xf1, - 0x25, 0xab, 0xff, 00, 0x1a, 0xfe, 0x75, 0x4a, 0xae, 0x3a, - 0x1b, 0x4e, 0x47, 0x4c, 0x78, 0x86, 0xaa, 0xff, 00, 0x97, - 0xa7, 0xd2, 0xd0, 0x7e, 0xd4, 0xfa, 0x82, 0xe3, 0x7a, 0xb6, - 0x3e, 0x95, 0xab, 0x6b, 0xfb, 0x55, 0xb8, 0xc7, 0x98, 0x9f, - 0x9a, 0xd7, 0xcb, 0x4b, 0xad, 0xdb, 0xb7, 0xf1, 0x8f, 0xce, - 0xa5, 0x5d, 0x56, 0x3, 0xfc, 0x43, 0xf3, 0xab, 0x58, 0xec, - 0x7c, 0x7e, 0xdb, 0x3a, 0xe3, 0xc4, 0x75, 0xff, 00, 0xe7, - 0xe2, 0x3e, 0xb4, 0xb6, 0xfd, 0xaa, 0xad, 0x9c, 0xfc, 0xe8, - 0xa3, 0xfe, 0x3, 0x5a, 0xb6, 0xdf, 0xb4, 0xfe, 0x94, 0xf8, - 0xde, 0x13, 0xf2, 0x22, 0xbe, 0x39, 0x17, 0xf0, 0xb7, 0xf1, - 0xa, 0x78, 0xbb, 0x88, 0xf4, 0x71, 0x5a, 0xac, 0xdb, 0x1f, - 0x1f, 0xb5, 0xf8, 0x1d, 0x91, 0xe2, 0x4a, 0xfd, 0xd3, 0x3e, - 0xd6, 0xb6, 0xfd, 0xa4, 0x34, 0x29, 0xb1, 0xb8, 0xa8, 0xfc, - 0x6b, 0x52, 0xf, 0x8f, 0x5e, 0x1d, 0x94, 0xc, 0xca, 0x6, - 0x7d, 0xd, 0x7c, 0x2e, 0x2e, 0x53, 0xb3, 0xfe, 0xb5, 0x22, - 0xdd, 0x63, 0xa4, 0xa7, 0xf0, 0x35, 0xaa, 0xcf, 0x31, 0xb1, - 0xde, 0xcf, 0xe4, 0x75, 0x47, 0x89, 0x6a, 0xf5, 0x8a, 0x3e, - 0xf5, 0xb7, 0xf8, 0xcb, 0xe1, 0xd9, 0xff, 00, 0xe5, 0xe3, - 0x15, 0xa1, 0x17, 0xc4, 0xed, 0x2, 0x5e, 0x97, 0x80, 0x7d, - 0x6b, 0xf3, 0xf9, 0x2f, 0x65, 0x5f, 0xbb, 0x3b, 0x8f, 0xa3, - 0x54, 0xc9, 0xab, 0xdd, 0xc7, 0xf7, 0x6e, 0xa4, 0x1f, 0xf0, - 0x23, 0x5b, 0xae, 0x20, 0xc4, 0x2d, 0xe0, 0x8e, 0x98, 0xf1, - 0x2c, 0xba, 0xc0, 0xfd, 0x7, 0x8b, 0xc7, 0x3a, 0x2c, 0xdf, - 0x76, 0xf5, 0x3f, 0x1a, 0xb4, 0x9e, 0x28, 0xd2, 0xe4, 0xfb, - 0xb7, 0xb1, 0x9f, 0xc6, 0xbf, 0x3d, 0xa3, 0xf1, 0x2e, 0xa7, - 0x1f, 0xdd, 0xbd, 0x97, 0xfe, 0xfa, 0x35, 0x6a, 0x2f, 0x1b, - 0x6b, 0x30, 0x91, 0xb6, 0xf6, 0x4e, 0x3d, 0x58, 0xd6, 0xcb, - 0x88, 0xa7, 0xd6, 0x9f, 0xe2, 0x74, 0x2e, 0x24, 0x87, 0x58, - 0x1f, 0xa1, 0x11, 0xea, 0xf6, 0x52, 0xfd, 0xdb, 0x98, 0xcf, - 0xfc, 0xa, 0xa6, 0x5b, 0xc8, 0x1b, 0xa4, 0xc8, 0x7e, 0x8c, - 0x2b, 0xf3, 0xfa, 0x1f, 0x89, 0x7a, 0xf4, 0x23, 0x8b, 0xc7, - 0xfc, 0xcd, 0x5e, 0x83, 0xe3, 0x7, 0x88, 0x20, 0xc6, 0x2e, - 0x58, 0xe3, 0xfd, 0xa3, 0x5b, 0xc7, 0x88, 0xa3, 0xd6, 0x9b, - 0x3a, 0x23, 0xc4, 0x58, 0x77, 0xba, 0x67, 0xde, 0xe2, 0x45, - 0x6e, 0x8c, 0xf, 0xd0, 0xd2, 0xe6, 0xbe, 0x18, 0x87, 0xe3, - 0xb7, 0x88, 0x22, 0xc0, 0xf3, 0xf, 0xfd, 0xf4, 0x6b, 0x4e, - 0xdf, 0xf6, 0x8a, 0xd7, 0x21, 0x23, 0x3b, 0x8e, 0x3f, 0xda, - 0x35, 0xba, 0xe2, 0x1a, 0x1d, 0x62, 0xce, 0x88, 0xe7, 0xf8, - 0x47, 0xbb, 0x3e, 0xd5, 0xa2, 0xbe, 0x3e, 0x83, 0xf6, 0x9c, - 0xd5, 0xd0, 0x8d, 0xe1, 0xb1, 0xfe, 0xf1, 0xad, 0x5b, 0x5f, - 0xda, 0x9a, 0xed, 0x71, 0xbd, 0xf, 0x15, 0xbc, 0x73, 0xec, - 0x23, 0xde, 0xeb, 0xe4, 0x74, 0x47, 0x3a, 0xc1, 0xcb, 0xed, - 0x1f, 0x56, 0x51, 0x5f, 0x33, 0xdb, 0x7e, 0xd5, 0x44, 0x91, - 0xe6, 0x20, 0x1f, 0x51, 0x5a, 0xd6, 0xff, 00, 0xb5, 0x35, - 0x91, 0x3, 0x7a, 0xa7, 0xe4, 0x6b, 0xa2, 0x39, 0xd6, 0xa, - 0x5f, 0x6c, 0xe8, 0x8e, 0x69, 0x84, 0x96, 0xd3, 0x47, 0xd0, - 0x54, 0x57, 0x88, 0xdb, 0x7e, 0xd3, 0x5a, 0x4c, 0xa4, 0x6f, - 0x11, 0x8f, 0xc4, 0xd6, 0x9c, 0x1f, 0xb4, 0x56, 0x83, 0x26, - 0x32, 0xf1, 0xe7, 0xd9, 0xeb, 0x78, 0xe6, 0xb8, 0x39, 0x6d, - 0x51, 0x1b, 0xac, 0x76, 0x1e, 0x5b, 0x4d, 0x1e, 0xb7, 0x45, - 0x79, 0xbd, 0xbf, 0xc7, 0x4f, 0xf, 0xcf, 0xff, 00, 0x2d, - 0x94, 0x7f, 0xc0, 0xeb, 0x46, 0x1f, 0x8b, 0xfe, 0x1e, 0x9b, - 0x3, 0xed, 0x40, 0x1f, 0xad, 0x74, 0x47, 0x1b, 0x86, 0x96, - 0xd5, 0x17, 0xde, 0x6c, 0xb1, 0x14, 0x5e, 0xd2, 0x47, 0x6f, - 0x45, 0x72, 0xf0, 0x7c, 0x49, 0xd0, 0x67, 0xe9, 0x7a, 0x83, - 0xea, 0x6a, 0xdc, 0x7e, 0x36, 0xd1, 0x65, 0xfb, 0xb7, 0xf1, - 0x9f, 0xc6, 0xb6, 0x55, 0xe9, 0x3d, 0xa4, 0xbe, 0xf2, 0xd5, - 0x58, 0x3d, 0xa4, 0x8d, 0xda, 0x2b, 0x32, 0x3f, 0x12, 0x69, - 0x92, 0xfd, 0xdb, 0xd8, 0xbf, 0xef, 0xaa, 0x9d, 0x35, 0x7b, - 0x29, 0x3e, 0xed, 0xd4, 0x47, 0xfe, 0x4, 0x2b, 0x45, 0x38, - 0xbd, 0x99, 0x7c, 0xd1, 0xee, 0x5c, 0xa2, 0xa1, 0x5b, 0xb8, - 0x1f, 0xee, 0xca, 0x87, 0xfe, 0x4, 0x2a, 0x41, 0x22, 0x37, - 0x46, 0x53, 0xf4, 0x35, 0x57, 0x45, 0xe, 0xa2, 0x93, 0x39, - 0xa5, 0xa6, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, - 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, - 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, - 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, - 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, - 0x1, 0x45, 0x14, 0x50, 0x1, 0x48, 0x78, 0x14, 0xb4, 0xc9, - 0x5b, 0x64, 0x4e, 0xde, 0x80, 0x9a, 00, 0xf8, 0xdb, 0xf6, - 0x85, 0xba, 0xf3, 0x75, 0xd9, 0x87, 0xfb, 0x67, 0xf9, 0xd7, - 0x80, 0x78, 0x89, 0xf6, 0x59, 0x4d, 0xfe, 0xe9, 0xaf, 0x68, - 0xf8, 0xe1, 0x73, 0xe6, 0xf8, 0x82, 0x50, 0x4f, 0xf1, 0x93, - 0xfa, 0xd7, 0x84, 0x78, 0xc6, 0xf0, 0x41, 0xa7, 0x4c, 0x72, - 0x7, 0xca, 0x6b, 0xf2, 0xb7, 0xfb, 0xcc, 0x6c, 0xdf, 0x99, - 0xf8, 0xb7, 0x10, 0xce, 0xf5, 0x66, 0x6f, 0x7f, 0xc1, 0x3d, - 0xac, 0x1b, 0x50, 0xfd, 0xab, 0x75, 0x8b, 0xbd, 0xb9, 0x8e, - 0xcb, 0xc3, 0xf7, 0x4, 0x9f, 0x46, 0x79, 0xa1, 0x51, 0xfa, - 0x66, 0xbf, 0x4f, 0x2b, 0xf3, 0x97, 0xfe, 0x9, 0x81, 0x68, - 0x6f, 0xfe, 0x2d, 0x7c, 0x4d, 0xd5, 0xa, 0x9d, 0xb6, 0xfa, - 0x75, 0xa5, 0xb0, 0x6c, 0x71, 0x99, 0x25, 0x91, 0x88, 0xcf, - 0xfd, 0xb3, 0x15, 0xfa, 0x35, 0x5f, 0xa5, 0xe1, 0xd5, 0xa9, - 0xa3, 0xf5, 0xc, 0x9e, 0x1e, 0xcf, 0x1, 0x4a, 0x3e, 0x48, - 0x28, 0xa2, 0x8a, 0xe9, 0x3d, 0x90, 0xa2, 0x8a, 0x28, 00, - 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, - 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa8, 0xe4, 0x82, 0x29, - 0x46, 0x1e, 0x34, 0x71, 0xe8, 0xca, 0xd, 0x49, 0x45, 00, - 0x50, 0x9f, 0x41, 0xd3, 0x2e, 0x46, 0x26, 0xd3, 0xad, 0x25, - 0x1e, 0x8f, 0x2, 0x9f, 0xe6, 0x2b, 0x3e, 0xe3, 0xc0, 0x1e, - 0x19, 0xbb, 0xff, 00, 0x5b, 0xa0, 0x69, 0xad, 0xff, 00, - 0x6e, 0xa8, 0x3f, 0x90, 0xad, 0xfa, 0x2a, 0x1c, 0x20, 0xf7, - 0x46, 0x6e, 0x9c, 0x25, 0xbc, 0x51, 0xc5, 0xdd, 0xfc, 0x19, - 0xf0, 0x55, 0xe9, 0xcc, 0x9e, 0x1e, 0xb4, 0x1f, 0xf5, 0xcc, - 0x14, 0xfe, 0x44, 0x56, 0x45, 0xdf, 0xec, 0xe9, 0xe0, 0x4b, - 0xbc, 0xff, 00, 0xc4, 0xa0, 0xc3, 0x9f, 0xf9, 0xe7, 0x33, - 0x71, 0xf9, 0x93, 0x5e, 0x97, 0x45, 0x62, 0xf0, 0xd4, 0x65, - 0xbc, 0x17, 0xdc, 0x63, 0x2c, 0x26, 0x1e, 0x5b, 0xd3, 0x5f, - 0x72, 0x3c, 0x66, 0xef, 0xf6, 0x51, 0xf0, 0x4d, 0xce, 0x76, - 0x8b, 0xc8, 0x73, 0xfd, 0xd9, 0x10, 0xff, 00, 0x35, 0xac, - 0x9b, 0xaf, 0xd8, 0xeb, 0xc2, 0x93, 0x3, 0xe5, 0xdf, 0x5d, - 0xc6, 0x7f, 0xda, 0x54, 0x6f, 0xe8, 0x2b, 0xdf, 0x28, 0xac, - 0x9e, 0xb, 0xe, 0xfe, 0xc2, 0x30, 0x79, 0x76, 0x11, 0xff, - 00, 0xcb, 0xb4, 0x7c, 0xd5, 0x79, 0xfb, 0x13, 0xe8, 0xd2, - 0xff, 00, 0xa9, 0xd6, 0x9d, 0x7d, 0x9e, 0xd8, 0x1f, 0xfd, - 0x9a, 0xb0, 0xaf, 0x7f, 0x61, 0xa4, 0x6c, 0xf9, 0x1a, 0xbd, - 0xb3, 0xff, 00, 0xd7, 0x48, 0x4a, 0xff, 00, 0x8d, 0x7d, - 0x65, 0x45, 0x66, 0xf2, 0xfc, 0x3b, 0xfb, 0x3f, 0x8b, 0x32, - 0x79, 0x56, 0x11, 0xfd, 0x9f, 0xc5, 0xff, 00, 0x99, 0xf1, - 0x6d, 0xef, 0xec, 0x2f, 0xa9, 0xe0, 0x98, 0xee, 0x34, 0xe9, - 0x7d, 0x83, 0x11, 0xfc, 0xd6, 0xb9, 0xeb, 0xdf, 0xd8, 0x7f, - 0xc4, 0x28, 0xe, 0xcb, 0xb, 0x79, 0x7f, 0xdc, 0x99, 0x3f, - 0xa9, 0x15, 0xf7, 0x9d, 0x15, 0x9b, 0xcb, 0x68, 0xf4, 0x6d, - 0x7c, 0xcc, 0x25, 0x93, 0x61, 0x9e, 0xd7, 0x5f, 0x33, 0xf3, - 0xb6, 0xf3, 0xf6, 0x2d, 0xf1, 0x4c, 0x4a, 0x48, 0xd0, 0xe4, - 0x3f, 0xf5, 0xce, 0x44, 0x6f, 0xe4, 0xd5, 0x87, 0x7d, 0xfb, - 0x22, 0x78, 0xae, 0xd7, 0x27, 0xfb, 0xb, 0x50, 0xff, 00, - 0x80, 0x46, 0xcd, 0xfc, 0xab, 0xf4, 0xba, 0x8a, 0x8f, 0xec, - 0xc8, 0xf4, 0x9b, 0xfc, 0xe, 0x79, 0x64, 0x54, 0x1e, 0xd2, - 0x7f, 0x87, 0xf9, 0x1f, 0x96, 0x37, 0xbf, 0xb3, 0x77, 0x88, - 0xec, 0x98, 0xac, 0x9a, 0x6e, 0xa5, 0xb, 0x7a, 0x34, 0x2c, - 0x3f, 0xa5, 0x62, 0xdd, 0x7c, 0x18, 0xd6, 0xad, 0x1b, 0x69, - 0x17, 0x31, 0x91, 0xd9, 0x97, 0x15, 0xfa, 0xd1, 0x51, 0xbd, - 0xbc, 0x52, 0xe7, 0x7c, 0x48, 0xf9, 0xfe, 0xf2, 0x83, 0x50, - 0xf2, 0xd9, 0x74, 0xa9, 0xf8, 0x7f, 0xc1, 0x39, 0x65, 0xc3, - 0xb4, 0xa5, 0xf6, 0x97, 0xfe, 0x3, 0xff, 00, 0x4, 0xfc, - 0x8c, 0x97, 0xe1, 0xa6, 0xb9, 0x7, 0xdd, 0x92, 0x5f, 0xc5, - 0x4d, 0x57, 0x7f, 0x6, 0xf8, 0x86, 0xe, 0x8e, 0xdc, 0x7a, - 0x82, 0x2b, 0xf5, 0xae, 0x7f, 0xb, 0xe8, 0xd7, 0x24, 0x99, - 0xb4, 0x9b, 0x19, 0x49, 0xea, 0x5e, 0xdd, 0xf, 0xf4, 0xac, - 0xd9, 0xbe, 0x19, 0xf8, 0x4e, 0xe0, 0x93, 0x27, 0x87, 0x74, - 0xd2, 0x4f, 0x53, 0xf6, 0x65, 0x1f, 0xd2, 0xb3, 0x79, 0x75, - 0x6e, 0x93, 0x5f, 0x71, 0xc7, 0x3e, 0x18, 0xa6, 0xff, 00, - 0x97, 0xee, 0x3f, 0x28, 0xe, 0x8f, 0xe2, 0x38, 0x3d, 0x4f, - 0xe2, 0x69, 0x9f, 0xf1, 0x51, 0xc1, 0xd6, 0x26, 0x6f, 0xc6, - 0xbf, 0x54, 0x67, 0xf8, 0x29, 0xe0, 0x8b, 0x90, 0x43, 0xf8, - 0x76, 0xd0, 0x67, 0xba, 0xee, 0x5f, 0xe4, 0x6b, 0x1e, 0xef, - 0xf6, 0x6e, 0xf0, 0xd, 0xd0, 0xe3, 0x48, 0x68, 0x4f, 0xac, - 0x73, 0xbf, 0xf5, 0x26, 0xb2, 0x79, 0x75, 0x7f, 0xee, 0xbf, - 0xeb, 0xd0, 0xe4, 0x9f, 0xa, 0x45, 0xed, 0x18, 0xfd, 0xef, - 0xfc, 0x8f, 0xcc, 0x7f, 0xed, 0x6d, 0x7a, 0x1f, 0xbd, 0x6c, - 0xe6, 0x94, 0x78, 0xa7, 0x56, 0x8b, 0xef, 0xda, 0xc9, 0xff, - 00, 0x7c, 0x9a, 0xfd, 0x1f, 0xbc, 0xfd, 0x93, 0xbc, 0xf, - 0x73, 0xfe, 0xad, 0x2f, 0x20, 0xff, 00, 0x76, 0x45, 0x3f, - 0xcd, 0x6b, 0x12, 0xf7, 0xf6, 0x35, 0xf0, 0xbc, 0xf9, 0xf2, - 0x35, 0xb, 0x98, 0xbf, 0xdf, 0x8d, 0x5b, 0xf9, 0x62, 0xb1, - 0x96, 0x5f, 0x5b, 0xf9, 0x13, 0x38, 0xe5, 0xc2, 0x8d, 0x6d, - 0x1f, 0xba, 0x47, 0xe7, 0xf0, 0xf1, 0xcd, 0xe4, 0x63, 0xe7, - 0xb7, 0x71, 0xf5, 0x6, 0xa6, 0x4f, 0x88, 0x4e, 0xbf, 0x7a, - 0x32, 0x3f, 0x3a, 0xfb, 0x82, 0xef, 0xf6, 0x24, 0xd3, 0x64, - 0x3f, 0xb9, 0xd6, 0x94, 0xf, 0xf6, 0xed, 0x7f, 0xfb, 0x2a, - 0xc5, 0xbd, 0xfd, 0x86, 0x4b, 0x67, 0xc9, 0xd5, 0xac, 0xe4, - 0xf4, 0xf3, 0x22, 0x65, 0xff, 00, 0x1a, 0xc1, 0xe0, 0x2a, - 0x75, 0xa3, 0xf8, 0xaf, 0xf3, 0x39, 0x65, 0xc3, 0x15, 0x56, - 0xd1, 0x97, 0xde, 0xbf, 0xcc, 0xf9, 0x6, 0x3f, 0x88, 0xa9, - 0xfc, 0x40, 0x8a, 0xb5, 0x1f, 0xc4, 0x4b, 0x73, 0xd5, 0xb1, - 0xf8, 0xd7, 0xd2, 0xb7, 0xbf, 0xb0, 0xae, 0xaa, 0x1, 0xf2, - 0xa7, 0xd3, 0x26, 0xff, 00, 0x81, 0x11, 0xfc, 0xd6, 0xb9, - 0xfb, 0xef, 0xd8, 0x77, 0xc4, 0x71, 0x3, 0xb2, 0xc2, 0xd6, - 0x6f, 0xfa, 0xe7, 0x32, 0xff, 00, 0x52, 0x2b, 0x9, 0x60, - 0x7b, 0xd2, 0x67, 0x3c, 0xb8, 0x7b, 0x13, 0x1d, 0x9c, 0xfe, - 0xeb, 0x9e, 0x27, 0x1f, 0x8f, 0xad, 0x5b, 0x1f, 0xbc, 0xc5, - 0x59, 0x4f, 0x1b, 0x5a, 0xb7, 0xfc, 0xb5, 0x5f, 0xc6, 0xbd, - 0xe, 0xff, 00, 0xf6, 0x31, 0xf1, 0x4d, 0xbe, 0x4f, 0xf6, - 0x1c, 0x8c, 0x3d, 0x63, 0x60, 0xdf, 0xc8, 0xd7, 0x3f, 0x7b, - 0xfb, 0x28, 0xf8, 0x9a, 0xd4, 0x9c, 0xe8, 0x5a, 0x8a, 0xfb, - 0xac, 0xe, 0x7f, 0xa5, 0x61, 0x2c, 0x15, 0x35, 0xbc, 0x1a, - 0xf9, 0x1c, 0xd2, 0xc9, 0xb1, 0x70, 0xfb, 0x6f, 0xe7, 0x16, - 0x62, 0x27, 0x8b, 0xed, 0x5b, 0xfe, 0x5a, 0xa7, 0xe7, 0x53, - 0xa7, 0x89, 0xad, 0x9f, 0xa4, 0x89, 0xf9, 0xd5, 0x7b, 0xcf, - 0xd9, 0xd7, 0xc4, 0x36, 0x79, 0x2f, 0xa7, 0xea, 0x11, 0x1, - 0xfd, 0xe8, 0x58, 0x7f, 0x4a, 0xc6, 0xb8, 0xf8, 0x3b, 0xac, - 0xdb, 0x67, 0xfe, 0x3e, 0x13, 0x1f, 0xde, 0x43, 0x58, 0x3c, - 0x1d, 0xf, 0x34, 0x60, 0xf2, 0xfc, 0x64, 0x7e, 0xda, 0xf9, - 0xa3, 0xa8, 0x5d, 0x7a, 0xdd, 0xbf, 0x8d, 0x7f, 0x3a, 0x95, - 0x75, 0x78, 0xf, 0xf1, 0xa, 0xe1, 0x24, 0xf8, 0x6f, 0xad, - 0xc3, 0x9d, 0xb2, 0xc9, 0xf8, 0xa1, 0xaa, 0xef, 0xe0, 0xfd, - 0x7e, 0xe, 0x92, 0x31, 0xfc, 0xd, 0x47, 0xd4, 0xa8, 0xbd, - 0xa4, 0x67, 0xf5, 0x5c, 0x6a, 0xeb, 0x16, 0x7a, 0x38, 0xd4, - 0xa1, 0x6f, 0xe2, 0x14, 0xe1, 0x7d, 0x9, 0xfe, 0x31, 0x5e, - 0x62, 0xda, 0x47, 0x88, 0xa0, 0xe8, 0x49, 0xfc, 0x4d, 0x34, - 0xff, 00, 0xc2, 0x43, 0x7, 0x58, 0xd9, 0xbf, 0x1a, 0x87, - 0x97, 0xc7, 0xa4, 0x89, 0xf6, 0x58, 0xe5, 0xf6, 0x13, 0xf9, - 0x9e, 0xa6, 0x2e, 0xa3, 0x3f, 0xc4, 0x29, 0xc2, 0xe1, 0x4f, - 0x47, 0xfd, 0x6b, 0xca, 0x7f, 0xb5, 0xb5, 0xd8, 0x7e, 0xf5, - 0xb4, 0x87, 0xf0, 0xa7, 0xf, 0x14, 0xea, 0xb1, 0x7d, 0xeb, - 0x69, 0x3f, 0xef, 0x9a, 0x97, 0x97, 0x3e, 0x92, 0x44, 0xff, - 00, 0xb5, 0xc7, 0x7a, 0x47, 0xab, 0x8b, 0x93, 0xda, 0x53, - 0xf9, 0xd4, 0x89, 0x7d, 0x32, 0xfd, 0xd9, 0xd8, 0x7f, 0xc0, - 0xab, 0xc9, 0xd7, 0xc7, 0x17, 0x91, 0xfd, 0xfb, 0x77, 0x1f, - 0x81, 0xa9, 0x93, 0xe2, 0x13, 0xaf, 0xde, 0x8d, 0x85, 0x64, - 0xf2, 0xd9, 0xf4, 0xb0, 0x7b, 0x7c, 0x44, 0x77, 0xa7, 0x23, - 0xd6, 0x53, 0x58, 0xbd, 0x4f, 0xbb, 0x75, 0x28, 0xff, 00, - 0x81, 0x1a, 0xb1, 0x1f, 0x89, 0xb5, 0x38, 0xbe, 0xed, 0xe4, - 0xa3, 0xfe, 0x4, 0x6b, 0xc9, 0xa3, 0xf8, 0x88, 0x9d, 0xc3, - 0xf, 0xc6, 0xac, 0xc7, 0xf1, 0xa, 0x3, 0xfc, 0x44, 0x54, - 0x7f, 0x67, 0xd6, 0x5b, 0x21, 0xac, 0xc2, 0xac, 0x77, 0x52, - 0x5f, 0x79, 0xeb, 0x71, 0xf8, 0xe3, 0x5a, 0x8b, 0xa5, 0xf4, - 0x9f, 0xf7, 0xd5, 0x5c, 0x83, 0xe2, 0x6e, 0xbd, 0x6, 0x31, - 0x74, 0xc7, 0xea, 0x4d, 0x79, 0x14, 0x7e, 0x3e, 0xb6, 0x6e, - 0xaf, 0x8a, 0xb3, 0x1f, 0x8d, 0xad, 0x5b, 0xfe, 0x5a, 0x8a, - 0x5f, 0x55, 0xc4, 0x47, 0x6b, 0xfd, 0xec, 0xd5, 0x66, 0xf3, - 0x8f, 0xdb, 0x92, 0x3d, 0x8e, 0x1f, 0x8c, 0x3e, 0x20, 0x8b, - 0x1f, 0xe9, 0x4, 0xe3, 0xdc, 0xd6, 0x8d, 0xbf, 0xc7, 0x7d, - 0x7a, 0x1c, 0x7c, 0xe4, 0xff, 00, 0xc0, 0x8d, 0x78, 0x9a, - 0x78, 0xbe, 0xd5, 0xbf, 0xe5, 0xaa, 0xfe, 0x75, 0x3a, 0x78, - 0x9e, 0xd9, 0xff, 00, 0xe5, 0xa2, 0xfe, 0x74, 0x72, 0xe2, - 0xe1, 0xb3, 0x7f, 0x7b, 0x3a, 0x23, 0x9e, 0x54, 0x5f, 0xf2, - 0xf5, 0x9e, 0xef, 0x6f, 0xfb, 0x45, 0x6b, 0x71, 0x63, 0x73, - 0x31, 0xff, 00, 0x81, 0x1a, 0xd6, 0xb6, 0xfd, 0xa6, 0xf5, - 0x48, 0xb1, 0xb8, 0x39, 0xff, 00, 0x81, 0x57, 0xcf, 0x29, - 0xaf, 0xdb, 0xb7, 0xf1, 0xaf, 0xe7, 0x52, 0xae, 0xb1, 0x3, - 0x7f, 0x10, 0xfc, 0xea, 0xd6, 0x23, 0x1b, 0xd, 0xa6, 0xce, - 0xb8, 0x71, 0x5, 0x65, 0xb5, 0x53, 0xe9, 0x4b, 0x6f, 0xda, - 0x92, 0xec, 0x7f, 0xac, 0xdd, 0x5a, 0xd6, 0xdf, 0xb5, 0x42, - 0xf1, 0xbd, 0x41, 0xfa, 0x8a, 0xf9, 0x65, 0x75, 0x38, 0x4f, - 0xf1, 0xf, 0xce, 0x9e, 0x2f, 0xa1, 0x6f, 0xe2, 0x15, 0xa2, - 0xcc, 0x71, 0xf1, 0xfb, 0x6c, 0xeb, 0x8f, 0x11, 0x62, 0x3f, - 0x9d, 0x1f, 0x5b, 0xdb, 0x7e, 0xd4, 0x56, 0x6f, 0x8f, 0x30, - 0x20, 0xfc, 0x2b, 0x56, 0xf, 0xda, 0x63, 0x49, 0x93, 0x19, - 0xf2, 0xfe, 0xb9, 0x22, 0xbe, 0x35, 0x17, 0x31, 0x1f, 0xe2, - 0x14, 0xf1, 0x3a, 0x1e, 0x8f, 0xfa, 0xd6, 0xcb, 0x38, 0xc7, - 0x47, 0xed, 0x7e, 0x7, 0x5c, 0x78, 0x8f, 0x11, 0xe4, 0xcf, - 0xb6, 0xad, 0xff, 00, 0x68, 0x6d, 0xe, 0x5c, 0x6e, 0x78, - 0xc7, 0xfc, 0xa, 0xb4, 0xa0, 0xf8, 0xe7, 0xe1, 0xf9, 0xb1, - 0x89, 0x57, 0xfe, 0xfa, 0xaf, 0x85, 0x44, 0xe3, 0xb3, 0xfe, - 0xb4, 0xf5, 0xba, 0x91, 0x7a, 0x4a, 0xc3, 0xe8, 0xd5, 0xb2, - 0xcf, 0x71, 0x8b, 0x74, 0x8e, 0xa8, 0xf1, 0x25, 0x5e, 0xb1, - 0x3e, 0xf8, 0xb7, 0xf8, 0xb9, 0xa0, 0x4c, 0x1, 0xfb, 0x48, - 0x1f, 0x8d, 0x5d, 0x8b, 0xe2, 0x4e, 0x83, 0x37, 0xdd, 0xbc, - 0x5a, 0xfc, 0xff, 00, 0x5d, 0x46, 0xe5, 0x7a, 0x5c, 0x3f, - 0xfd, 0xf5, 0x53, 0xc7, 0xae, 0xea, 0x11, 0xfd, 0xdb, 0xb9, - 0x7, 0xd1, 0xab, 0x75, 0xc4, 0x35, 0xd6, 0xf0, 0x47, 0x44, - 0x78, 0x91, 0xf5, 0x81, 0xfa, 0xd, 0x1f, 0x8d, 0x74, 0x69, - 0x7a, 0x5f, 0x46, 0x3e, 0xa6, 0xac, 0xc7, 0xe2, 0x5d, 0x32, - 0x5f, 0xbb, 0x7b, 0x11, 0xfc, 0x6b, 0xf3, 0xe5, 0x3c, 0x5b, - 0xab, 0x47, 0x8c, 0x5e, 0xcb, 0xff, 00, 0x7d, 0x55, 0xb8, - 0x7c, 0x7f, 0xad, 0xc3, 0xf7, 0x6f, 0x5f, 0xf1, 0x35, 0xb2, - 0xe2, 0x29, 0x7d, 0xaa, 0x7f, 0x89, 0xd1, 0x1e, 0x24, 0xa6, - 0xf7, 0x89, 0xfa, 0x6, 0x9a, 0xb5, 0x9b, 0xfd, 0xdb, 0xa8, - 0x8f, 0xfc, 0x8, 0x54, 0xa9, 0x79, 0x3, 0xfd, 0xd9, 0x91, - 0xbe, 0x8c, 0x2b, 0xe0, 0x48, 0x7e, 0x29, 0xeb, 0xf1, 0x1f, - 0xf8, 0xfb, 0x73, 0xf8, 0xd6, 0x84, 0x1f, 0x1a, 0x7c, 0x41, - 0x7, 0xfc, 0xb7, 0x27, 0xf1, 0xad, 0xe3, 0xc4, 0x50, 0xeb, - 0x4d, 0xfe, 0x7, 0x44, 0x78, 0x87, 0xe, 0xf7, 0x4c, 0xfb, - 0xbc, 0x3a, 0x9e, 0x8c, 0xf, 0xe3, 0x4b, 0x90, 0x7b, 0xd7, - 0xc3, 0xf6, 0xff, 00, 0x1f, 0x35, 0xc8, 0xb1, 0xba, 0x47, - 0x6f, 0xf8, 0x15, 0x6a, 0x5b, 0xfe, 0xd2, 0x1a, 0xc4, 0x3d, - 0x4b, 0xff, 00, 0xdf, 0x55, 0xd1, 0x1e, 0x21, 0xc3, 0xbd, - 0xe2, 0xd1, 0xd1, 0x1c, 0xfb, 0x8, 0xfa, 0x9f, 0x66, 0xd1, - 0x5f, 0x22, 0xdb, 0x7e, 0xd3, 0xba, 0x8a, 0xe3, 0xcc, 0x32, - 0x1f, 0x6c, 0xd6, 0xad, 0xbf, 0xed, 0x4d, 0x38, 0xc6, 0xe0, - 0xdf, 0x8e, 0x2b, 0x68, 0xe7, 0xd8, 0x37, 0xbb, 0x6b, 0xe4, - 0x6f, 0x1c, 0xe7, 0x7, 0x2f, 0xb4, 0x7d, 0x4b, 0x45, 0x7c, - 0xdf, 0x6b, 0xfb, 0x52, 0x46, 0x71, 0xe6, 0x7e, 0xa2, 0xb5, - 0x2d, 0xff, 00, 0x69, 0xfb, 0x17, 0xc0, 0x65, 0x5f, 0xa9, - 0xad, 0xe3, 0x9d, 0x60, 0xa5, 0xf6, 0xce, 0x88, 0xe6, 0x78, - 0x59, 0x6d, 0x33, 0xdf, 0x28, 0xaf, 0x18, 0xb7, 0xfd, 0xa4, - 0x74, 0x87, 0xc6, 0xf3, 0x18, 0xff, 00, 0x81, 0x56, 0x9d, - 0xbf, 0xed, 0x3, 0xa1, 0xcd, 0x8e, 0x57, 0xfe, 0xfb, 0xae, - 0x88, 0xe6, 0x78, 0x39, 0x6d, 0x51, 0x1b, 0xac, 0x6e, 0x1e, - 0x5b, 0x4d, 0x1e, 0xa9, 0x45, 0x79, 0xec, 0x1f, 0x1a, 0xf4, - 0x9, 0x40, 0xcc, 0xa0, 0x7f, 0xc0, 0x85, 0x5f, 0x83, 0xe2, - 0xc6, 0x83, 0x39, 0xe2, 0xe3, 0x1f, 0x88, 0xae, 0x85, 0x8c, - 0xc3, 0xcb, 0x69, 0xa3, 0x55, 0x88, 0xa4, 0xf6, 0x92, 0x3b, - 0x3a, 0x2b, 0x9a, 0x8f, 0xe2, 0x16, 0x87, 0x27, 0xfc, 0xbe, - 0x28, 0xfc, 0x6a, 0xdc, 0x5e, 0x32, 0xd2, 0x26, 0x3f, 0x2d, - 0xec, 0x7f, 0x9d, 0x6c, 0xab, 0x52, 0x7b, 0x49, 0x1a, 0x2a, - 0x90, 0x7d, 0x4d, 0xaa, 0x2b, 0x39, 0x3c, 0x41, 0xa7, 0x3f, - 0x4b, 0xc8, 0xbf, 0xef, 0xaa, 0x9d, 0x35, 0x4b, 0x49, 0x3e, - 0xed, 0xcc, 0x67, 0xfe, 0x4, 0x2a, 0xd4, 0xe2, 0xf6, 0x65, - 0x73, 0x27, 0xd4, 0xb5, 0x55, 0xb5, 0x27, 0xf2, 0xac, 0x2e, - 0x1b, 0xd1, 0x9, 0xfd, 0x2a, 0x41, 0x73, 0xb, 0x74, 0x95, - 0xf, 0xfc, 0x8, 0x56, 0x4f, 0x8b, 0xb5, 0x58, 0x34, 0xef, - 0xf, 0x5e, 0xcd, 0x24, 0xaa, 0x2, 0xc6, 0x7f, 0x88, 0x52, - 0x9c, 0x92, 0x8b, 0x62, 0x94, 0x92, 0x8b, 0x67, 0xc3, 0xff, - 00, 0x18, 0xef, 0x47, 0xf6, 0xe4, 0xc4, 0x9f, 0xe2, 0x3f, - 0xce, 0xbe, 0x6a, 0xf8, 0x9d, 0xe2, 0x25, 0x8a, 0xdd, 0xe2, - 0x57, 0xc1, 0xc1, 0xef, 0x5e, 0xa7, 0xf1, 0xaf, 0xc6, 0xf0, - 0x7f, 0x69, 0x5c, 0x4a, 0xae, 0x32, 0x58, 0xe0, 0x66, 0xbe, - 0x67, 0xbe, 0x87, 0x53, 0xf8, 0x83, 0xe2, 0x5b, 0x1d, 0x13, - 0x4b, 0x89, 0xee, 0x75, 0x2d, 0x4a, 0xe1, 0x6d, 0xad, 0xe2, - 0x5e, 0x4b, 0x33, 0x1c, 0xa, 0xf8, 0x3c, 0xbf, 0xc, 0xe5, - 0x39, 0x56, 0x7d, 0x5b, 0xb1, 0xf8, 0x9d, 0x78, 0x4b, 0x33, - 0xcc, 0xb9, 0x21, 0xf0, 0xa6, 0x7e, 0x80, 0x7f, 0xc1, 0x2d, - 0xbc, 0x19, 0x36, 0x97, 0xf0, 0xa3, 0xc5, 0x3e, 0x28, 0xb8, - 0x8c, 0xab, 0x6b, 0xda, 0xb6, 0xd8, 0x58, 0xff, 00, 0x14, - 0x30, 0x26, 0xc0, 0x7f, 0xef, 0xb6, 0x93, 0xf2, 0xaf, 0xb5, - 0x6b, 0x88, 0xf8, 0x27, 0xf0, 0xda, 0xdf, 0xe1, 0xf, 0xc2, - 0x9f, 0xc, 0xf8, 0x42, 0xdc, 0xab, 0x8d, 0x2e, 0xcd, 0x22, - 0x92, 0x45, 0x18, 0xf3, 0x25, 0x3f, 0x34, 0x8d, 0xf8, 0xb1, - 0x63, 0x5d, 0xbd, 0x7d, 0xec, 0x23, 0xcb, 0x14, 0x8f, 0xda, - 0x68, 0xc3, 0xd9, 0x53, 0x8c, 0x3b, 0x20, 0xa2, 0x8a, 0x2a, - 0xcd, 0x82, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0xa3, 0x92, - 0xde, 0x29, 0x86, 0x24, 0x89, 0x1c, 0x7f, 0xb4, 0xa0, 0xd4, - 0x94, 0x51, 0xb8, 0x19, 0x97, 0x3e, 0x19, 0xd1, 0xef, 0x41, - 0x17, 0x1a, 0x55, 0x94, 0xc0, 0xf6, 0x92, 0xdd, 0xf, 0xf3, - 0x15, 0x97, 0x75, 0xf0, 0xcb, 0xc2, 0x77, 0x83, 0x12, 0xf8, - 0x7b, 0x4f, 0x3f, 0xee, 0xc0, 0xab, 0xfc, 0xb1, 0x5d, 0x3d, - 0x15, 0x9b, 0xa7, 0x9, 0x6f, 0x14, 0x64, 0xe9, 0x53, 0x97, - 0xc5, 0x14, 0xfe, 0x47, 0x5, 0x75, 0xf0, 0x2b, 0xc0, 0xd7, - 0x9f, 0x7f, 0x40, 0x85, 0x7f, 0xdc, 0x91, 0xd7, 0xf9, 0x35, - 0x64, 0xdc, 0x7e, 0xcd, 0x1e, 0x2, 0xb8, 0x24, 0xff, 00, - 0x65, 0xcb, 0x1e, 0x7b, 0x24, 0xed, 0xfd, 0x73, 0x5e, 0xa7, - 0x45, 0x62, 0xf0, 0xb4, 0x1e, 0xf0, 0x5f, 0x71, 0x83, 0xc1, - 0xe1, 0xa5, 0xbd, 0x35, 0xf7, 0x23, 0xc5, 0xae, 0x7f, 0x64, - 0xbf, 0x3, 0x5c, 0x64, 0xa8, 0xbe, 0x8b, 0x3d, 0x2, 0xca, - 0xa4, 0xf, 0xcd, 0x6b, 0x16, 0xeb, 0xf6, 0x32, 0xf0, 0xb4, - 0xa1, 0xbc, 0xad, 0x46, 0xee, 0x33, 0xdb, 0x72, 0x29, 0xff, - 00, 0xa, 0xfa, 0xe, 0x8a, 0xcd, 0xe0, 0x70, 0xef, 0xec, - 0x19, 0x3c, 0xbb, 0x8, 0xff, 00, 0xe5, 0xda, 0x3e, 0x61, - 0xbb, 0xfd, 0x88, 0xb4, 0xe7, 0x53, 0xe4, 0xeb, 0x99, 0x3d, - 0x83, 0xdb, 0x60, 0x7f, 0xe8, 0x55, 0xcf, 0xdf, 0x7e, 0xc3, - 0x77, 0x27, 0xfd, 0x46, 0xa5, 0x63, 0x2f, 0xfb, 0xe1, 0x97, - 0xff, 00, 0x65, 0x35, 0xf5, 0xf5, 0x15, 0x93, 0xcb, 0xb0, - 0xef, 0x64, 0xd7, 0xcd, 0x98, 0xbc, 0xab, 0x8, 0xfe, 0xcd, - 0xbe, 0x6c, 0xf8, 0x92, 0xf7, 0xf6, 0x18, 0xd6, 0xb9, 0xf2, - 0xdb, 0x4e, 0x97, 0xfd, 0xd9, 0x48, 0xfe, 0x6a, 0x2b, 0x6, - 0xfb, 0xf6, 0x1e, 0xf1, 0x2c, 0x64, 0xec, 0xd3, 0xad, 0xa6, - 0xf7, 0x4b, 0x84, 0xfe, 0xa4, 0x57, 0xdf, 0x34, 0x54, 0x3c, - 0xb2, 0x8f, 0x46, 0xfe, 0xf3, 0x7, 0x93, 0x61, 0x9f, 0x57, - 0xf7, 0xff, 00, 0xc0, 0x3f, 0x39, 0xaf, 0x7f, 0x63, 0x1f, - 0x15, 0xdb, 0x92, 0x3f, 0xb0, 0x65, 0x6f, 0xfa, 0xe7, 0x22, - 0xb7, 0xf2, 0x26, 0xb0, 0x2f, 0x7f, 0x65, 0xf, 0x14, 0x5a, - 0x12, 0xe, 0x83, 0xa8, 0xae, 0x3f, 0xbb, 0x13, 0x37, 0xf2, - 0x15, 0xfa, 0x71, 0x45, 0x43, 0xcb, 0x23, 0xd2, 0x6c, 0xc2, - 0x59, 0x15, 0x7, 0xb4, 0x9f, 0xe1, 0xfe, 0x47, 0xe5, 0x3d, - 0xef, 0xec, 0xfd, 0xad, 0xd9, 0x13, 0xe6, 0x59, 0x5e, 0xc3, - 0xfe, 0xfa, 0x11, 0xfc, 0xc5, 0x64, 0x4f, 0xf0, 0x8f, 0x56, - 0xb7, 0x24, 0x3, 0x32, 0xff, 00, 0xbc, 0x2b, 0xf5, 0xb8, - 0xa8, 0x3d, 0x40, 0x35, 0xc, 0x96, 0x16, 0xd3, 0xc, 0x49, - 0x6f, 0x14, 0x83, 0xfd, 0xa4, 0x6, 0xb3, 0x79, 0x6c, 0xfa, - 0x54, 0xfc, 0x3f, 0xe0, 0x9c, 0x92, 0xe1, 0xda, 0x72, 0xfb, - 0x4b, 0xff, 00, 0x1, 0xff, 00, 0x82, 0x7e, 0x45, 0xc9, - 0xf0, 0xeb, 0x5a, 0x83, 0xa4, 0x8f, 0xf8, 0xa9, 0xaa, 0xcf, - 0xe1, 0x1d, 0x7e, 0x1e, 0x8f, 0xf9, 0xe4, 0x57, 0xeb, 0x7c, - 0xfe, 0x15, 0xd1, 0x6e, 0xbf, 0xd7, 0x69, 0x16, 0x32, 0xff, - 00, 0xbf, 0x6c, 0x87, 0xfa, 0x56, 0x65, 0xcf, 0xc3, 0xf, - 0x9, 0x5d, 0xff, 00, 0xad, 0xf0, 0xee, 0x9c, 0x7d, 0xc5, - 0xba, 0xaf, 0xf2, 0xa8, 0x79, 0x75, 0x6e, 0x93, 0x4f, 0xe4, - 0x72, 0x4f, 0x86, 0x29, 0xbd, 0xb9, 0x7e, 0xe3, 0xf2, 0x7c, - 0xe9, 0x3e, 0x22, 0x83, 0xa7, 0x3f, 0xf0, 0x23, 0x4d, 0xff, - 00, 0x8a, 0x8a, 0x1f, 0xf9, 0x66, 0x5b, 0x1e, 0xf5, 0xfa, - 0x9b, 0x75, 0xf0, 0x2b, 0xc0, 0xb7, 0x79, 0xdf, 0xe1, 0xeb, - 0x75, 0xcf, 0xfc, 0xf3, 0x77, 0x5f, 0xe4, 0x6b, 0x26, 0xe7, - 0xf6, 0x67, 0xf0, 0x5, 0xc0, 0x23, 0xfb, 0x2a, 0x48, 0xb3, - 0xdd, 0x27, 0x6f, 0xeb, 0x9a, 0xc9, 0xe5, 0xf5, 0xff, 00, - 0xba, 0xff, 00, 0xaf, 0x43, 0x8e, 0x7c, 0x29, 0x17, 0xf6, - 0x63, 0xf7, 0xbf, 0xf2, 0x3f, 0x32, 0x3f, 0xb5, 0xb5, 0xc8, - 0x4f, 0xcd, 0x6e, 0xe7, 0xf0, 0xcd, 0x28, 0xf1, 0x46, 0xab, - 0x17, 0xdf, 0xb7, 0x7f, 0xfb, 0xe6, 0xbf, 0x48, 0x2e, 0xff, - 00, 0x64, 0xbf, 0x2, 0xdc, 0x8f, 0x91, 0x2f, 0x61, 0xff, - 00, 0x76, 0x55, 0x3f, 0xcd, 0x6b, 0x1e, 0xf3, 0xf6, 0x33, - 0xf0, 0xa4, 0xc3, 0xf7, 0x1a, 0x85, 0xe4, 0x47, 0xfd, 0xb5, - 0x56, 0xff, 00, 0xa, 0xc9, 0xe0, 0x2b, 0x7f, 0x22, 0x67, - 0x24, 0xb8, 0x51, 0xad, 0xa1, 0xf7, 0x48, 0xfc, 0xfa, 0x5f, - 0x1c, 0x5d, 0xc7, 0xf7, 0xe1, 0x61, 0xff, 00, 0x1, 0x35, - 0x32, 0x7c, 0x41, 0x71, 0xf7, 0x90, 0x8f, 0xce, 0xbe, 0xe2, - 0xbd, 0xfd, 0x88, 0x74, 0xc9, 0x3f, 0xe3, 0xdf, 0x5b, 0xc0, - 0xff, 00, 0xa6, 0x96, 0xdf, 0xe0, 0xd5, 0x81, 0x79, 0xfb, - 0xc, 0x4e, 0xcc, 0x7c, 0x9d, 0x52, 0xc5, 0xd7, 0xb6, 0xf5, - 0x65, 0x3f, 0xfa, 0x9, 0xac, 0x1e, 0x2, 0xa7, 0x5a, 0x5f, - 0x91, 0xcb, 0x2e, 0x17, 0xab, 0x1d, 0xa3, 0x2f, 0xbd, 0x7f, - 0x99, 0xf2, 0x24, 0x7f, 0x11, 0x13, 0xbe, 0x6a, 0xd4, 0x7f, - 0x10, 0xa0, 0x38, 0xcb, 0x11, 0x5f, 0x4a, 0x5d, 0xfe, 0xc2, - 0xfa, 0xcf, 0x3e, 0x5b, 0xe9, 0xb2, 0xe, 0xd8, 0x90, 0x8f, - 0xe6, 0xb5, 0x83, 0x79, 0xfb, 0xe, 0xf8, 0x99, 0x41, 0x29, - 0xa7, 0xdb, 0x49, 0xfe, 0xe5, 0xc2, 0xf, 0xeb, 0x58, 0x3c, - 0xf, 0x7a, 0x4c, 0xe6, 0x97, 0xe, 0xe2, 0x23, 0xb7, 0x3f, - 0xdd, 0x73, 0xc4, 0xa3, 0xf1, 0xed, 0xb3, 0x7f, 0xcb, 0x4f, - 0xd2, 0xac, 0xc7, 0xe3, 0x7b, 0x66, 0xff, 00, 0x96, 0xa2, - 0xbd, 0x16, 0xf7, 0xf6, 0x2e, 0xf1, 0x64, 0xa, 0xcd, 0xfd, - 0x83, 0x23, 0x1, 0xff, 00, 0x3c, 0xe5, 0x56, 0xfd, 0x3, - 0x57, 0x3f, 0x7d, 0xfb, 0x28, 0x78, 0xa6, 0xd0, 0x16, 0x7d, - 0x3, 0x51, 0x50, 0x3b, 0xac, 0x4c, 0x7f, 0xa5, 0x60, 0xf0, - 0x54, 0xd6, 0xf0, 0x6b, 0xe4, 0x73, 0xcb, 0x25, 0xc5, 0xc3, - 0xed, 0xc9, 0x7a, 0xa6, 0x61, 0x27, 0x8c, 0x2d, 0x5b, 0xfe, - 0x5a, 0xad, 0x58, 0x4f, 0x14, 0x5b, 0x3f, 0xfc, 0xb4, 0x5f, - 0xce, 0xaa, 0x5f, 0x7e, 0xcf, 0xda, 0xe5, 0x8e, 0x7c, 0xdb, - 0x1b, 0xf8, 0xf, 0xfb, 0x71, 0xb0, 0xfe, 0x62, 0xb2, 0x27, - 0xf8, 0x47, 0xaa, 0xdb, 0xe7, 0x99, 0xd7, 0xea, 0xb5, 0x83, - 0xc2, 0x50, 0xf4, 0x39, 0xde, 0x5f, 0x8b, 0x8f, 0xfc, 0xbc, - 0x5f, 0x34, 0x75, 0x2b, 0xaf, 0xdb, 0xb7, 0xf1, 0x8f, 0xce, - 0xa5, 0x5d, 0x62, 0x16, 0xee, 0x2b, 0x83, 0x93, 0xe1, 0xd6, - 0xb3, 0xf, 0xdd, 0x95, 0xc7, 0xd5, 0x6a, 0xbb, 0xf8, 0x3f, - 0x5e, 0x83, 0xa4, 0x9f, 0xce, 0xb3, 0xfa, 0x95, 0x17, 0xb4, - 0x88, 0xfa, 0xae, 0x35, 0x6d, 0x28, 0xb3, 0xd2, 0x6, 0xa9, - 0x9, 0xfe, 0x2a, 0x78, 0xbf, 0x84, 0xff, 00, 0x10, 0xaf, - 0x2f, 0x3a, 0x37, 0x88, 0x61, 0xe8, 0x73, 0xff, 00, 0x2, - 0xa6, 0x95, 0xf1, 0xc, 0x3d, 0x50, 0x9f, 0xa3, 0x54, 0xbc, - 0xbe, 0x1d, 0x24, 0x4f, 0xb1, 0xc7, 0x2f, 0xb2, 0x9f, 0xcc, - 0xf5, 0x51, 0x77, 0x11, 0xfe, 0x2a, 0x70, 0x9e, 0x33, 0xfc, - 0x55, 0xe5, 0x3, 0x52, 0xd7, 0xa1, 0xfb, 0xd0, 0x39, 0xa7, - 0x7f, 0xc2, 0x4d, 0xaa, 0xc5, 0xf7, 0xe0, 0x93, 0xfe, 0xf9, - 0xa9, 0x79, 0x77, 0x69, 0x12, 0xd6, 0x32, 0x3b, 0xd2, 0x3d, - 0x58, 0x4c, 0xbd, 0x9a, 0x9e, 0xb3, 0x11, 0xd2, 0x43, 0xf9, - 0xd7, 0x94, 0x2f, 0x8d, 0x6f, 0x53, 0xef, 0x42, 0xff, 00, - 0x8a, 0x9a, 0x95, 0x3e, 0x20, 0x4a, 0xbf, 0x79, 0x18, 0x7e, - 0x6, 0xb3, 0x79, 0x6c, 0xfa, 0x32, 0x7d, 0xae, 0x22, 0x3b, - 0xd2, 0x67, 0xaa, 0xad, 0xd4, 0x8b, 0xd2, 0x56, 0x1f, 0x8d, - 0x4c, 0x9a, 0xa5, 0xda, 0x7d, 0xdb, 0x89, 0x7, 0xd1, 0xab, - 0xcb, 0x23, 0xf8, 0x88, 0xbd, 0xc1, 0x15, 0x66, 0x3f, 0x88, - 0x50, 0x9e, 0xac, 0x6b, 0x37, 0x97, 0x55, 0x5d, 0x3, 0xeb, - 0xb5, 0x23, 0xbc, 0x64, 0x8f, 0x51, 0x8f, 0xc4, 0x3a, 0x8c, - 0x47, 0x2b, 0x75, 0x27, 0xfd, 0xf4, 0x6a, 0xdc, 0x5e, 0x33, - 0xd6, 0x22, 0xfb, 0xb7, 0x8e, 0x3f, 0x1a, 0xf2, 0xd8, 0xfc, - 0x7d, 0x6e, 0x7f, 0x8c, 0xd4, 0xeb, 0xe3, 0xab, 0x6c, 0x64, - 0xcb, 0x8a, 0xcf, 0xea, 0x35, 0xa3, 0xb2, 0x34, 0x59, 0xa4, - 0xa3, 0xd6, 0x4b, 0xef, 0x3d, 0x56, 0x1f, 0x88, 0x9a, 0xe4, - 0x3d, 0x2e, 0xd8, 0xfd, 0x4d, 0x5e, 0x8f, 0xe2, 0xe6, 0xbd, - 0x7, 0xfc, 0xbc, 0xd7, 0x8b, 0x5c, 0x7c, 0x42, 0xb4, 0x88, - 0x1f, 0xde, 0xd6, 0x16, 0xa7, 0xf1, 0x4e, 0xde, 0x30, 0x76, - 0x36, 0xe3, 0x5d, 0x14, 0xf0, 0x78, 0xa7, 0xb3, 0x6b, 0xe6, - 0xcd, 0x16, 0x73, 0x5f, 0x6a, 0x6e, 0x4c, 0xfa, 0x2f, 0xfe, - 0x17, 0xe6, 0xb1, 0x62, 0x32, 0xd3, 0xee, 0x23, 0xde, 0xb8, - 0x5f, 0x88, 0x3f, 0xb4, 0xad, 0xfd, 0xed, 0x94, 0xd0, 0xbd, - 0xe3, 0x7c, 0xc3, 0x5, 0x1, 0xe2, 0xbe, 0x7b, 0xd6, 0x7e, - 0x22, 0xde, 0x5f, 0x16, 0x58, 0x89, 0x55, 0x35, 0x99, 0xe1, - 0xdf, 0xb, 0xf8, 0x87, 0xe2, 0x26, 0xbb, 0x6f, 0xa5, 0xe8, - 0xd6, 0x17, 0x3a, 0xae, 0xa3, 0x70, 0xdb, 0x63, 0x82, 0x4, - 0x2c, 0x4f, 0xf8, 0x1, 0xea, 0x78, 0x15, 0xed, 0xd0, 0xc0, - 0xd4, 0x4a, 0xd5, 0x66, 0xdf, 0x95, 0xcd, 0xe3, 0x8b, 0xcc, - 0x71, 0x5e, 0xe5, 0x49, 0xf2, 0xc5, 0xf4, 0xea, 0xc8, 0x7c, - 0x53, 0xe2, 0xcb, 0x9f, 0x10, 0x5d, 0x33, 0xb3, 0x33, 0x64, - 0xf0, 0x7, 0x7a, 0xfb, 0xf3, 0xf6, 0x15, 0xfd, 0x91, 0x66, - 0xf0, 0x1a, 0x45, 0xf1, 0xf, 0xc6, 0x76, 0x5e, 0x5f, 0x88, - 0xee, 0x13, 0x3a, 0x5d, 0x94, 0x87, 0x26, 0xce, 0x26, 0x5e, - 0x64, 0x71, 0xda, 0x46, 0x7, 0xa7, 0xf0, 0x8f, 0x73, 0xc6, - 0xcf, 0xec, 0xb3, 0xfb, 0xb, 0xe9, 0xff, 00, 0xc, 0x65, - 0xb7, 0xf1, 0x37, 0x8d, 0xd2, 0xdf, 0x57, 0xf1, 0x3a, 0x10, - 0xf6, 0xd6, 0x6a, 0x7c, 0xcb, 0x7b, 0x2e, 0x3a, 0x9c, 0x8c, - 0x3c, 0x9e, 0xfd, 0x7, 0x6c, 0xf5, 0xaf, 0xae, 0xab, 0xe9, - 0xf0, 0xf8, 0x75, 0x4, 0x9b, 0x5e, 0x88, 0xfd, 0xf, 0x26, - 0xca, 0x56, 0x12, 0x2a, 0xa5, 0x45, 0x67, 0xd1, 0x7f, 0x9f, - 0x98, 0x51, 0x45, 0x15, 0xe8, 0x1f, 0x58, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x21, 00, 0xf5, 0xa8, 0xa5, 0xb3, 0xb7, - 0x9b, 0xfd, 0x64, 0x11, 0xc9, 0xfe, 0xf2, 0x3, 0x45, 0x14, - 0xad, 0x71, 0x5a, 0xe5, 0x19, 0xfc, 0x2d, 0xa3, 0x5c, 0x92, - 0x66, 0xd2, 0x2c, 0x65, 0x27, 0xbb, 0xdb, 0x21, 0xfe, 0x95, - 0x9b, 0x71, 0xf0, 0xcf, 0xc2, 0x77, 0x44, 0x99, 0x7c, 0x3b, - 0xa6, 0xb1, 0x3f, 0xf4, 0xec, 0xa3, 0xf9, 0xa, 0x28, 0xa8, - 0x74, 0xe0, 0xf7, 0x8a, 0x33, 0x74, 0xa9, 0xcb, 0x78, 0xaf, - 0xb8, 0xc7, 0xbb, 0xf8, 0x13, 0xe0, 0x5b, 0xdc, 0xef, 0xf0, - 0xfd, 0xba, 0x93, 0xde, 0x36, 0x65, 0xfe, 0x46, 0xb1, 0xee, - 0xff, 00, 0x66, 0x4f, 0x1, 0x5d, 0x74, 0xd3, 0xa5, 0x87, - 0xfe, 0xb9, 0xcc, 0x7f, 0xae, 0x68, 0xa2, 0xb1, 0x78, 0x5a, - 0xf, 0x78, 0x2f, 0xb8, 0xc2, 0x58, 0x3c, 0x34, 0xb7, 0xa6, - 0xbe, 0xe4, 0x63, 0x5d, 0x7e, 0xc8, 0xbe, 0xa, 0x9f, 0xee, - 0x49, 0x7d, 0x17, 0xb0, 0x74, 0x3f, 0xfb, 0x2d, 0x64, 0x5d, - 0x7e, 0xc6, 0x1e, 0x19, 0x97, 0x3e, 0x4e, 0xa9, 0x77, 0x17, - 0xfb, 0xd1, 0xab, 0x7f, 0x85, 0x14, 0x56, 0x6f, 0x3, 0x86, - 0x7f, 0x60, 0xc5, 0xe5, 0xd8, 0x47, 0xff, 00, 0x2e, 0xd1, - 0x8b, 0x7b, 0xfb, 0x10, 0x69, 0xd2, 0x3, 0xe4, 0x6b, 0xdc, - 0xf6, 0x12, 0x5a, 0xff, 00, 0x83, 0x56, 0xd, 0xf7, 0xec, - 0x31, 0x71, 0x83, 0xf6, 0x7d, 0x5a, 0xca, 0x53, 0xd8, 0x49, - 0x1b, 0x2f, 0xf4, 0x34, 0x51, 0x59, 0xbc, 0xbb, 0xe, 0xf6, - 0x56, 0xf9, 0xb3, 0x27, 0x95, 0x61, 0x1f, 0xd9, 0xb7, 0xcd, - 0x98, 0x17, 0xdf, 0xb0, 0xce, 0xb8, 0xa0, 0xf9, 0x6d, 0xa7, - 0x4f, 0xec, 0xb2, 0x63, 0xf9, 0xa8, 0xae, 0x7e, 0xff, 00, - 0xf6, 0x24, 0xf1, 0x44, 0x59, 0xd9, 0xa5, 0xc1, 0x37, 0xbc, - 0x73, 0x47, 0xfd, 0x5a, 0x8a, 0x2b, 0x29, 0x65, 0xb4, 0xba, - 0x37, 0xf7, 0xff, 00, 0xc0, 0x39, 0xe5, 0x93, 0x61, 0xba, - 0x37, 0xf7, 0xff, 00, 0xc0, 0x30, 0x2f, 0x3f, 0x63, 0x6f, - 0x16, 0x43, 0xff, 00, 0x32, 0xfc, 0xed, 0xff, 00, 0x5c, - 0xd9, 0x5b, 0xf9, 0x1a, 0xc1, 0xbf, 0xfd, 0x94, 0x3c, 0x55, - 0x6d, 0x90, 0x7c, 0x3f, 0xa9, 0x8f, 0x75, 0x85, 0x98, 0x7e, - 0x82, 0x8a, 0x2b, 0x86, 0xa6, 0x16, 0x34, 0xf6, 0x93, 0xfe, - 0xbe, 0x47, 0x97, 0x5f, 0x2c, 0xa3, 0x4d, 0x68, 0xdf, 0xe1, - 0xfe, 0x46, 0xb, 0x7e, 0xcc, 0x1e, 0x23, 0xb9, 0x9f, 0xcb, - 0x5d, 0x1e, 0xfc, 0xbe, 0x7a, 0x1b, 0x77, 0x3f, 0xd2, 0xb4, - 0x34, 0xff, 00, 0xd8, 0x8f, 0xc7, 0x7a, 0xc4, 0xaa, 0xb0, - 0xe8, 0x57, 0x10, 0x8c, 0xfd, 0xfb, 0x8c, 0x44, 0xb8, 0xf5, - 0xf9, 0x88, 0xa2, 0x8a, 0x58, 0x7a, 0x4e, 0xa4, 0xac, 0xe4, - 0xff, 00, 0xf, 0xf2, 0x38, 0x68, 0x65, 0x54, 0x31, 0x4e, - 0xd3, 0x6d, 0x7a, 0x5b, 0xfc, 0x8f, 0x62, 0xf8, 0x79, 0xff, - 00, 0x4, 0xdc, 0x88, 0x3a, 0x5c, 0x78, 0xc3, 0x5c, 0x8, - 0xa0, 0x83, 0xf6, 0x3d, 0x34, 0x6e, 0x63, 0xec, 0x64, 0x61, - 0x81, 0xf8, 0x3, 0xf5, 0xaf, 0xae, 0x3e, 0x1d, 0xfc, 0x27, - 0xf0, 0xaf, 0xc2, 0xad, 0x29, 0x6c, 0x3c, 0x33, 0xa3, 0xdb, - 0xe9, 0xc9, 0x8c, 0x3c, 0xca, 0xbb, 0xa6, 0x97, 0xdd, 0xdc, - 0xf2, 0x68, 0xa2, 0xbe, 0x82, 0x14, 0x61, 0x4f, 0x6d, 0xcf, - 0xac, 0xc1, 0xe5, 0x98, 0x5c, 0xe, 0xb4, 0x61, 0xaf, 0x77, - 0xab, 0xfb, 0xff, 00, 0xc8, 0xeb, 0xa8, 0xa2, 0x8a, 0xd8, - 0xf5, 0x42, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0xf, - 0xff, 0xd9, 0}; - -static const char data_runtime_shtml[] = { - /* /runtime.shtml */ - 0x2f, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x20, 0x6f, 0x6e, 0x4c, 0x6f, 0x61, 0x64, - 0x3d, 0x22, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x73, - 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x28, - 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x6c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x68, 0x72, 0x65, 0x66, 0x3d, - 0x27, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x73, - 0x68, 0x74, 0x6d, 0x6c, 0x27, 0x26, 0x71, 0x75, 0x6f, 0x74, - 0x3b, 0x2c, 0x32, 0x30, 0x30, 0x30, 0x29, 0x22, 0x3e, 0xd, - 0xa, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, - 0x65, 0x3d, 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x3e, - 0xd, 0xa, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, - 0x22, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, - 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x53, - 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x72, 0x75, 0x6e, - 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x52, 0x75, 0x6e, 0x20, 0x54, 0x69, 0x6d, 0x65, - 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, - 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x73, - 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x54, 0x43, 0x50, 0x20, 0x53, 0x74, 0x61, 0x74, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, - 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61, 0x3e, - 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, - 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, - 0x66, 0x72, 0x65, 0x65, 0x72, 0x74, 0x6f, 0x73, 0x2e, 0x6f, - 0x72, 0x67, 0x2f, 0x22, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, - 0x54, 0x4f, 0x53, 0x20, 0x48, 0x6f, 0x6d, 0x65, 0x70, 0x61, - 0x67, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6f, 0x2e, 0x73, 0x68, - 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x49, 0x4f, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x6c, 0x6f, 0x67, 0x6f, 0x2e, 0x6a, 0x70, 0x67, 0x22, 0x3e, - 0x33, 0x37, 0x4b, 0x20, 0x6a, 0x70, 0x67, 0x3c, 0x2f, 0x61, - 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, - 0xd, 0xa, 0x3c, 0x68, 0x72, 0x3e, 0xd, 0xa, 0x3c, 0x62, - 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x32, - 0x3e, 0x52, 0x75, 0x6e, 0x2d, 0x74, 0x69, 0x6d, 0x65, 0x20, - 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, - 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0xd, 0xa, 0x50, 0x61, 0x67, - 0x65, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x72, 0x65, 0x66, - 0x72, 0x65, 0x73, 0x68, 0x20, 0x65, 0x76, 0x65, 0x72, 0x79, - 0x20, 0x32, 0x20, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, - 0x2e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x6e, - 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x63, 0x6f, - 0x75, 0x72, 0x69, 0x65, 0x72, 0x22, 0x3e, 0x3c, 0x70, 0x72, - 0x65, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x41, 0x62, - 0x73, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x25, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x3c, 0x62, - 0x72, 0x3e, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x3c, 0x62, 0x72, 0x3e, 0xd, 0xa, 0x25, 0x21, - 0x20, 0x72, 0x75, 0x6e, 0x2d, 0x74, 0x69, 0x6d, 0x65, 0xd, - 0xa, 0x3c, 0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, - 0x6f, 0x6e, 0x74, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, - 0x6e, 0x74, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, - 0x79, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, - 0x3e, 0xd, 0xa, 0xd, 0xa, 0}; - -static const char data_stats_shtml[] = { - /* /stats.shtml */ - 0x2f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x6e, - 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, - 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x61, 0x20, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, - 0x61, 0x73, 0x6b, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x52, 0x75, 0x6e, - 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, 0x74, 0x61, 0x74, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x43, 0x50, - 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, - 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, - 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, 0x65, 0x65, 0x72, - 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x22, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x20, 0x48, - 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, - 0x6a, 0x70, 0x67, 0x22, 0x3e, 0x33, 0x37, 0x4b, 0x20, 0x6a, - 0x70, 0x67, 0x3c, 0x2f, 0x61, 0x3e, 0xd, 0xa, 0x3c, 0x62, - 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x72, - 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, - 0xd, 0xa, 0x3c, 0x68, 0x32, 0x3e, 0x4e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, - 0x74, 0x69, 0x63, 0x73, 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0xd, - 0xa, 0x3c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x77, 0x69, - 0x64, 0x74, 0x68, 0x3d, 0x22, 0x33, 0x30, 0x30, 0x22, 0x20, - 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x3d, 0x22, 0x30, 0x22, - 0x3e, 0xd, 0xa, 0x3c, 0x74, 0x72, 0x3e, 0x3c, 0x74, 0x64, - 0x20, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x3d, 0x22, 0x6c, 0x65, - 0x66, 0x74, 0x22, 0x3e, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, - 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x63, 0x6f, 0x75, 0x72, - 0x69, 0x65, 0x72, 0x22, 0x3e, 0x3c, 0x70, 0x72, 0x65, 0x3e, - 0xd, 0xa, 0x49, 0x50, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, - 0x74, 0x73, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, - 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, 0xd, 0xa, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x64, 0x65, - 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x44, 0x72, 0x6f, 0x70, - 0x70, 0x65, 0x64, 0xd, 0xa, 0x49, 0x50, 0x20, 0x65, 0x72, - 0x72, 0x6f, 0x72, 0x73, 0x20, 0x20, 0x20, 0x20, 0x49, 0x50, - 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, 0x6c, 0x65, 0x6e, 0x67, - 0x74, 0x68, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x49, 0x50, 0x20, - 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x2c, 0x20, 0x68, 0x69, - 0x67, 0x68, 0x20, 0x62, 0x79, 0x74, 0x65, 0xd, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x49, 0x50, 0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, - 0x68, 0x2c, 0x20, 0x6c, 0x6f, 0x77, 0x20, 0x62, 0x79, 0x74, - 0x65, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x49, 0x50, 0x20, 0x66, - 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0xd, 0xa, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, - 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0xd, 0xa, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x57, 0x72, 0x6f, 0x6e, 0x67, 0x20, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0xd, 0xa, 0x49, - 0x43, 0x4d, 0x50, 0x9, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, - 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x72, 0x65, 0x63, - 0x65, 0x69, 0x76, 0x65, 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x73, 0x65, - 0x6e, 0x74, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, - 0x6b, 0x65, 0x74, 0x73, 0x20, 0x64, 0x72, 0x6f, 0x70, 0x70, - 0x65, 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x54, 0x79, 0x70, - 0x65, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0xd, 0xa, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, - 0x6d, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0xd, 0xa, - 0x54, 0x43, 0x50, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, - 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0xd, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, 0xd, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x64, - 0x72, 0x6f, 0x70, 0x70, 0x65, 0x64, 0xd, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x20, - 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0xd, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x44, 0x61, 0x74, 0x61, 0x20, 0x70, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x73, 0x20, 0x77, 0x69, 0x74, 0x68, 0x6f, 0x75, - 0x74, 0x20, 0x41, 0x43, 0x4b, 0x73, 0xd, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x52, 0x65, 0x73, 0x65, 0x74, 0x73, 0xd, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x52, 0x65, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, - 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x61, 0xd, 0xa, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x53, 0x79, 0x6e, 0x20, 0x74, 0x6f, 0x20, - 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x64, 0x20, 0x70, 0x6f, 0x72, - 0x74, 0xd, 0xa, 0x55, 0x44, 0x50, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x73, 0x20, 0x64, 0x72, 0x6f, 0x70, 0x70, 0x65, - 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x73, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, - 0x65, 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, - 0x6b, 0x65, 0x74, 0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, 0xd, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x73, 0x20, 0x63, 0x68, 0x6b, 0x65, 0x72, 0x72, 0xd, 0xa, - 0x9, 0x20, 0x20, 0x20, 0x20, 0x20, 0x4e, 0x6f, 0x20, 0x63, - 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, - 0x61, 0x76, 0x61, 0x6c, 0x69, 0x61, 0x62, 0x6c, 0x65, 0xd, - 0xa, 0x3c, 0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, - 0x6f, 0x6e, 0x74, 0x3e, 0x3c, 0x2f, 0x74, 0x64, 0x3e, 0x3c, - 0x74, 0x64, 0x3e, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, - 0x61, 0x63, 0x65, 0x3d, 0x22, 0x63, 0x6f, 0x75, 0x72, 0x69, - 0x65, 0x72, 0x22, 0x3e, 0x3c, 0x70, 0x72, 0x65, 0x3e, 0x25, - 0x21, 0x20, 0x6e, 0x65, 0x74, 0x2d, 0x73, 0x74, 0x61, 0x74, - 0x73, 0xd, 0xa, 0x3c, 0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, - 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0x3c, 0x2f, 0x74, 0x64, - 0x3e, 0x3c, 0x2f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x3e, 0xd, - 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xd, 0xa, - 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xd, 0xa, 0x3c, - 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, 0xa, 0}; - -static const char data_tcp_shtml[] = { - /* /tcp.shtml */ - 0x2f, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x6e, - 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, - 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x61, 0x20, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, - 0x61, 0x73, 0x6b, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x52, 0x75, 0x6e, - 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, 0x74, 0x61, 0x74, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x43, 0x50, - 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, - 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, - 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, 0x65, 0x65, 0x72, - 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x22, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x20, 0x48, - 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, - 0x6a, 0x70, 0x67, 0x22, 0x3e, 0x33, 0x37, 0x4b, 0x20, 0x6a, - 0x70, 0x67, 0x3c, 0x2f, 0x61, 0x3e, 0xd, 0xa, 0x3c, 0x62, - 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x72, - 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0xd, 0xa, 0x3c, - 0x68, 0x32, 0x3e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, - 0x20, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0xd, 0xa, 0x3c, - 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x74, 0x61, 0x62, 0x6c, 0x65, - 0x3e, 0xd, 0xa, 0x3c, 0x74, 0x72, 0x3e, 0x3c, 0x74, 0x68, - 0x3e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x3c, 0x2f, 0x74, 0x68, - 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x52, 0x65, 0x6d, 0x6f, 0x74, - 0x65, 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, - 0x53, 0x74, 0x61, 0x74, 0x65, 0x3c, 0x2f, 0x74, 0x68, 0x3e, - 0x3c, 0x74, 0x68, 0x3e, 0x52, 0x65, 0x74, 0x72, 0x61, 0x6e, - 0x73, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x3c, - 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x54, 0x69, - 0x6d, 0x65, 0x72, 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, - 0x68, 0x3e, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x3c, 0x2f, 0x74, - 0x68, 0x3e, 0x3c, 0x2f, 0x74, 0x72, 0x3e, 0xd, 0xa, 0x25, - 0x21, 0x20, 0x74, 0x63, 0x70, 0x2d, 0x63, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0xd, 0xa, 0x3c, - 0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, - 0x74, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, - 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, - 0xd, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, - 0xa, 0xd, 0xa, 0}; - -const struct httpd_fsdata_file file_404_html[] = {{NULL, data_404_html, data_404_html + 10, sizeof(data_404_html) - 10}}; - -const struct httpd_fsdata_file file_index_html[] = {{file_404_html, data_index_html, data_index_html + 12, sizeof(data_index_html) - 12}}; - -const struct httpd_fsdata_file file_index_shtml[] = {{file_index_html, data_index_shtml, data_index_shtml + 13, sizeof(data_index_shtml) - 13}}; - -const struct httpd_fsdata_file file_io_shtml[] = {{file_index_shtml, data_io_shtml, data_io_shtml + 10, sizeof(data_io_shtml) - 10}}; - -const struct httpd_fsdata_file file_logo_jpg[] = {{file_io_shtml, data_logo_jpg, data_logo_jpg + 10, sizeof(data_logo_jpg) - 10}}; - -const struct httpd_fsdata_file file_runtime_shtml[] = {{file_logo_jpg, data_runtime_shtml, data_runtime_shtml + 15, sizeof(data_runtime_shtml) - 15}}; - -const struct httpd_fsdata_file file_stats_shtml[] = {{file_runtime_shtml, data_stats_shtml, data_stats_shtml + 13, sizeof(data_stats_shtml) - 13}}; - -const struct httpd_fsdata_file file_tcp_shtml[] = {{file_stats_shtml, data_tcp_shtml, data_tcp_shtml + 11, sizeof(data_tcp_shtml) - 11}}; - -#define HTTPD_FS_ROOT file_tcp_shtml - -#define HTTPD_FS_NUMFILES 8 diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/webserver/makefsdata b/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/webserver/makefsdata deleted file mode 100644 index a953cdd76..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/webserver/makefsdata +++ /dev/null @@ -1,79 +0,0 @@ -#!/usr/bin/perl - -open(OUTPUT, "> httpd-fsdata.c"); - -chdir("httpd-fs"); - -opendir(DIR, "."); -@files = grep { !/^\./ && !/(CVS|~)/ } readdir(DIR); -closedir(DIR); - -foreach $file (@files) { - - if(-d $file && $file !~ /^\./) { - print "Processing directory $file\n"; - opendir(DIR, $file); - @newfiles = grep { !/^\./ && !/(CVS|~)/ } readdir(DIR); - closedir(DIR); - printf "Adding files @newfiles\n"; - @files = (@files, map { $_ = "$file/$_" } @newfiles); - next; - } -} - -foreach $file (@files) { - if(-f $file) { - - print "Adding file $file\n"; - - open(FILE, $file) || die "Could not open file $file\n"; - binmode FILE; - - $file =~ s-^-/-; - $fvar = $file; - $fvar =~ s-/-_-g; - $fvar =~ s-\.-_-g; - # for AVR, add PROGMEM here - print(OUTPUT "static const char data".$fvar."[] = {\n"); - print(OUTPUT "\t/* $file */\n\t"); - for($j = 0; $j < length($file); $j++) { - printf(OUTPUT "%#02x, ", unpack("C", substr($file, $j, 1))); - } - printf(OUTPUT "0,\n"); - - - $i = 0; - while(read(FILE, $data, 1)) { - if($i == 0) { - print(OUTPUT "\t"); - } - printf(OUTPUT "%#02x, ", unpack("C", $data)); - $i++; - if($i == 10) { - print(OUTPUT "\n"); - $i = 0; - } - } - print(OUTPUT "0};\n\n"); - close(FILE); - push(@fvars, $fvar); - push(@pfiles, $file); - } -} - -for($i = 0; $i < @fvars; $i++) { - $file = $pfiles[$i]; - $fvar = $fvars[$i]; - - if($i == 0) { - $prevfile = "NULL"; - } else { - $prevfile = "file" . $fvars[$i - 1]; - } - print(OUTPUT "const struct httpd_fsdata_file file".$fvar."[] = {{$prevfile, data$fvar, "); - print(OUTPUT "data$fvar + ". (length($file) + 1) .", "); - print(OUTPUT "sizeof(data$fvar) - ". (length($file) + 1) ."}};\n\n"); -} - -print(OUTPUT "#define HTTPD_FS_ROOT file$fvars[$i - 1]\n\n"); -print(OUTPUT "#define HTTPD_FS_NUMFILES $i\n"); diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/webserver/phy.c b/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/webserver/phy.c deleted file mode 100644 index 11e118a07..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/webserver/phy.c +++ /dev/null @@ -1,468 +0,0 @@ -/****************************************************************************** -* DISCLAIMER - -* This software is supplied by Renesas Technology Corp. and is only -* intended for use with Renesas products. No other uses are authorized. - -* This software is owned by Renesas Technology Corp. and is protected under -* all applicable laws, including copyright laws. - -* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES -* REGARDING THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, -* INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A -* PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY -* DISCLAIMED. - -* TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS -* TECHNOLOGY CORP. NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE -* FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES -* FOR ANY REASON RELATED TO THE THIS SOFTWARE, EVEN IF RENESAS OR ITS -* AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - -* Renesas reserves the right, without notice, to make changes to this -* software and to discontinue the availability of this software. -* By using this software, you agree to the additional terms and -* conditions found by accessing the following link: -* http://www.renesas.com/disclaimer -****************************************************************************** -* Copyright (C) 2008. Renesas Technology Corp., All Rights Reserved. -******************************************************************************* -* File Name : phy.c -* Version : 1.01 -* Description : Ethernet PHY device driver -****************************************************************************** -* History : DD.MM.YYYY Version Description -* : 15.02.2010 1.00 First Release -* : 06.04.2010 1.01 RX62N changes -******************************************************************************/ - - -/****************************************************************************** -Includes , "Project Includes" -******************************************************************************/ -#include -#include "r_ether.h" -#include "phy.h" - -#include "FreeRTOS.h" -#include "task.h" -/****************************************************************************** -Typedef definitions -******************************************************************************/ - -/****************************************************************************** -Macro definitions -******************************************************************************/ - -/****************************************************************************** -Imported global variables and functions (from other files) -******************************************************************************/ - -/****************************************************************************** -Exported global variables and functions (to be accessed by other files) -******************************************************************************/ - -/****************************************************************************** -Private global variables and functions -******************************************************************************/ -uint16_t _phy_read( uint16_t reg_addr ); -void _phy_write( uint16_t reg_addr, uint16_t data ); -void _phy_preamble( void ); -void _phy_reg_set( uint16_t reg_addr, int32_t option ); -void _phy_reg_read( uint16_t *data ); -void _phy_reg_write( uint16_t data ); -void _phy_ta_z0( void ); -void _phy_ta_10( void ); -void _phy_mii_write_1( void ); -void _phy_mii_write_0( void ); - -/** - * External functions - */ - -/****************************************************************************** -* Function Name: phy_init -* Description : Resets Ethernet PHY device -* Arguments : none -* Return Value : none -******************************************************************************/ -int16_t phy_init( void ) -{ - uint16_t reg; - uint32_t count; - - /* Reset PHY */ - _phy_write(BASIC_MODE_CONTROL_REG, 0x8000); - - count = 0; - - do - { - vTaskDelay( 2 / portTICK_PERIOD_MS ); - reg = _phy_read(BASIC_MODE_CONTROL_REG); - count++; - } while (reg & 0x8000 && count < PHY_RESET_WAIT); - - if( count < PHY_RESET_WAIT ) - { - return R_PHY_OK; - } - - return R_PHY_ERROR; -} - -/****************************************************************************** -* Function Name: phy_set_100full -* Description : Set Ethernet PHY device to 100 Mbps full duplex -* Arguments : none -* Return Value : none -******************************************************************************/ -void phy_set_100full( void ) -{ - _phy_write(BASIC_MODE_CONTROL_REG, 0x2100); -} - -/****************************************************************************** -* Function Name: phy_set_10half -* Description : Sets Ethernet PHY device to 10 Mbps half duplexR -* Arguments : none -* Return Value : none -******************************************************************************/ -void phy_set_10half( void ) -{ - _phy_write(BASIC_MODE_CONTROL_REG, 0x0000); -} - -/****************************************************************************** -* Function Name: phy_set_autonegotiate -* Description : Starts autonegotiate and reports the other side's -* : physical capability -* Arguments : none -* Return Value : bit 8 - Full duplex 100 mbps -* : bit 7 - Half duplex 100 mbps -* : bit 6 - Full duplex 10 mbps -* : bit 5 - Half duplex 10 mbps -* : bit 4:0 - Always set to 00001 (IEEE 802.3) -* : -1 if error -******************************************************************************/ -int16_t phy_set_autonegotiate( void ) -{ - uint16_t reg; - uint32_t count; - - _phy_write(AN_ADVERTISEMENT_REG, 0x01E1); - _phy_write(BASIC_MODE_CONTROL_REG, 0x1200); - - count = 0; - - do - { - reg = _phy_read(BASIC_MODE_STATUS_REG); - count++; - vTaskDelay( 100 / portTICK_PERIOD_MS ); - - /* Make sure we don't break out if reg just contains 0xffff. */ - if( reg == 0xffff ) - { - reg = 0; - } - - } while (!(reg & 0x0020) && (count < PHY_AUTO_NEGOTIATON_WAIT)); - - if (count >= PHY_AUTO_NEGOTIATON_WAIT) - { - return R_PHY_ERROR; - } - else - { - /* Get the link partner response */ - reg = (int16_t)_phy_read(AN_LINK_PARTNER_ABILITY_REG); - - if (reg & ( 1 << 8 ) ) - { - return PHY_LINK_100F; - } - if (reg & ( 1 << 7 ) ) - { - return PHY_LINK_100H; - } - if (reg & ( 1 << 6 ) ) - { - return PHY_LINK_10F; - } - if (reg & 1 << 5 ) - { - return PHY_LINK_10H; - } - - return (-1); - } -} - - -/** - * Internal functions - */ - -/****************************************************************************** -* Function Name: _phy_read -* Description : Reads a PHY register -* Arguments : reg_addr - address of the PHY register -* Return Value : read value -******************************************************************************/ -uint16_t _phy_read( uint16_t reg_addr ) -{ - uint16_t data; - - _phy_preamble(); - _phy_reg_set( reg_addr, PHY_READ ); - _phy_ta_z0(); - _phy_reg_read( &data ); - _phy_ta_z0(); - - return( data ); -} - -/****************************************************************************** -* Function Name: _phy_write -* Description : Writes to a PHY register -* Arguments : reg_addr - address of the PHY register -* : data - value -* Return Value : none -******************************************************************************/ -void _phy_write( uint16_t reg_addr, uint16_t data ) -{ - _phy_preamble(); - _phy_reg_set( reg_addr, PHY_WRITE ); - _phy_ta_10(); - _phy_reg_write( data ); - _phy_ta_z0(); -} - -/****************************************************************************** -* Function Name: _phy_preamble -* Description : As preliminary preparation for access to the PHY module register, -* "1" is output via the MII management interface. -* Arguments : none -* Return Value : none -******************************************************************************/ -void _phy_preamble( void ) -{ - int16_t i; - - i = 32; - while( i > 0 ) - { - _phy_mii_write_1(); - i--; - } -} - -/****************************************************************************** -* Function Name: _phy_reg_set -* Description : Sets a PHY device to read or write mode -* Arguments : reg_addr - address of the PHY register -* : option - mode -* Return Value : none -******************************************************************************/ -void _phy_reg_set( uint16_t reg_addr, int32_t option ) -{ - int32_t i; - uint16_t data; - - data = 0; - data = (PHY_ST << 14); /* ST code */ - - if( option == PHY_READ ) - { - data |= (PHY_READ << 12); /* OP code(RD) */ - } - else - { - data |= (PHY_WRITE << 12); /* OP code(WT) */ - } - - data |= (PHY_ADDR << 7); /* PHY Address */ - data |= (reg_addr << 2); /* Reg Address */ - - i = 14; - while( i > 0 ) - { - if( (data & 0x8000) == 0 ) - { - _phy_mii_write_0(); - } - else - { - _phy_mii_write_1(); - } - data <<= 1; - i--; - } -} - -/****************************************************************************** -* Function Name: _phy_reg_read -* Description : Reads PHY register through MII interface -* Arguments : data - pointer to store the data read -* Return Value : none -******************************************************************************/ -void _phy_reg_read( uint16_t *data ) -{ - int32_t i, j; - uint16_t reg_data; - - reg_data = 0; - i = 16; - while( i > 0 ) - { - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000000; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000001; - } - - reg_data <<= 1; - reg_data |= (uint16_t)((ETHERC.PIR.LONG & 0x00000008) >> 3); /* MDI read */ - - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000001; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000000; - } - i--; - } - *data = reg_data; -} - -/****************************************************************************** -* Function Name: _phy_reg_write -* Description : Writes to PHY register through MII interface -* Arguments : data - value to write -* Return Value : none -******************************************************************************/ -void _phy_reg_write( uint16_t data ) -{ - int32_t i; - - i = 16; - while( i > 0 ) - { - if( (data & 0x8000) == 0 ) - { - _phy_mii_write_0(); - } - else - { - _phy_mii_write_1(); - } - i--; - data <<= 1; - } -} - -/****************************************************************************** -* Function Name: _phy_ta_z0 -* Description : Performs bus release so that PHY can drive data -* : for read operation -* Arguments : none -* Return Value : none -******************************************************************************/ -void _phy_ta_z0( void ) -{ - int32_t j; - - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000000; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000001; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000001; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000000; - } -} - -/****************************************************************************** -* Function Name: _phy_ta_10 -* Description : Switches data bus so MII interface can drive data -* : for write operation -* Arguments : none -* Return Value : none -******************************************************************************/ -void _phy_ta_10(void) -{ - _phy_mii_write_1(); - _phy_mii_write_0(); -} - -/****************************************************************************** -* Function Name: _phy_mii_write_1 -* Description : Outputs 1 to the MII interface -* Arguments : none -* Return Value : none -******************************************************************************/ -void _phy_mii_write_1( void ) -{ - int32_t j; - - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000006; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000007; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000007; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000006; - } -} - -/****************************************************************************** -* Function Name: _phy_mii_write_0 -* Description : Outputs 0 to the MII interface -* Arguments : none -* Return Value : none -******************************************************************************/ -void _phy_mii_write_0( void ) -{ - int32_t j; - - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000002; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000003; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000003; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000002; - } -} - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/webserver/phy.h b/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/webserver/phy.h deleted file mode 100644 index 50415a7f7..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/webserver/phy.h +++ /dev/null @@ -1,84 +0,0 @@ -/****************************************************************************** -* DISCLAIMER -* Please refer to http://www.renesas.com/disclaimer -****************************************************************************** - Copyright (C) 2008. Renesas Technology Corp., All Rights Reserved. -******************************************************************************* -* File Name : phy.h -* Version : 1.02 -* Description : Ethernet PHY device driver -****************************************************************************** -* History : DD.MM.YYYY Version Description -* : 15.02.2010 1.00 First Release -* : 17.03.2010 1.01 Modification of macro definitions for access timing -* : 06.04.2010 1.02 RX62N changes -******************************************************************************/ - -#ifndef PHY_H -#define PHY_H - -/****************************************************************************** -Includes , "Project Includes" -******************************************************************************/ -#include - -/****************************************************************************** -Typedef definitions -******************************************************************************/ - -/****************************************************************************** -Macro definitions -******************************************************************************/ -/* Standard PHY Registers */ -#define BASIC_MODE_CONTROL_REG 0 -#define BASIC_MODE_STATUS_REG 1 -#define PHY_IDENTIFIER1_REG 2 -#define PHY_IDENTIFIER2_REG 3 -#define AN_ADVERTISEMENT_REG 4 -#define AN_LINK_PARTNER_ABILITY_REG 5 -#define AN_EXPANSION_REG 6 - -/* Media Independent Interface */ -#define PHY_ST 1 -#define PHY_READ 2 -#define PHY_WRITE 1 -#define PHY_ADDR 0x1F - -#define MDC_WAIT 2 - -/* PHY return definitions */ -#define R_PHY_OK 0 -#define R_PHY_ERROR -1 - -/* Auto-Negotiation Link Partner Status */ -#define PHY_AN_LINK_PARTNER_100BASE 0x0180 -#define PHY_AN_LINK_PARTNER_FULL 0x0140 -#define PHY_AN_COMPLETE ( 1 << 5 ) - -/* - * Wait counter definitions of PHY-LSI initialization - * ICLK = 96MHz -*/ -#define PHY_RESET_WAIT 0x00000020L -#define PHY_AUTO_NEGOTIATON_WAIT 75 - -#define PHY_AN_ENABLE 0x1200 -#define PHY_AN_10_100_F_H 0xde1 - -/****************************************************************************** -Variable Externs -******************************************************************************/ - -/****************************************************************************** -Functions Prototypes -******************************************************************************/ -/** - * External prototypes - **/ -int16_t phy_init( void ); -void phy_set_100full( void ); -void phy_set_10half( void ); -int16_t phy_set_autonegotiate( void ); - -#endif /* PHY_H */ - diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/webserver/r_ether.h b/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/webserver/r_ether.h deleted file mode 100644 index 1dcc46865..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/webserver/r_ether.h +++ /dev/null @@ -1,185 +0,0 @@ -/****************************************************************************** -* DISCLAIMER -* Please refer to http://www.renesas.com/disclaimer -****************************************************************************** - Copyright (C) 2008. Renesas Technology Corp., All Rights Reserved. -******************************************************************************* -* File Name : r_ether.h -* Version : 1.02 -* Description : Ethernet module device driver -****************************************************************************** -* History : DD.MM.YYYY Version Description -* : 15.02.2010 1.00 First Release -* : 03.03.2010 1.01 Buffer size is aligned on the 32-byte boundary. -* : 04.06.2010 1.02 RX62N changes -******************************************************************************/ - -#ifndef R_ETHER_H -#define R_ETHER_H - -/****************************************************************************** -Includes , "Project Includes" -******************************************************************************/ -#include - -/****************************************************************************** -Typedef definitions -******************************************************************************/ -struct Descriptor -{ - unsigned long status; -#if __LITTLE_ENDIAN__ == 1 -/* Little endian */ - unsigned short size; - unsigned short bufsize; -#else -/* Big endian */ - unsigned short bufsize; - unsigned short size; - -#endif - char *buf_p; - struct Descriptor *next; -}; - -typedef struct Descriptor ethfifo; - -typedef enum _NETLNK -{ - PHY_NO_LINK = 0, - PHY_LINK_10H, - PHY_LINK_10F, - PHY_LINK_100H, - PHY_LINK_100F - -} NETLNK; - -/****************************************************************************** -Macro definitions -******************************************************************************/ -#define BUFSIZE 256 /* Must be 32-bit aligned */ -#define ENTRY 8 /* Number of RX and TX buffers */ - -#define ACT 0x80000000 -#define DL 0x40000000 -#define FP1 0x20000000 -#define FP0 0x10000000 -#define FE 0x08000000 - -#define RFOVER 0x00000200 -#define RAD 0x00000100 -#define RMAF 0x00000080 -#define RRF 0x00000010 -#define RTLF 0x00000008 -#define RTSF 0x00000004 -#define PRE 0x00000002 -#define CERF 0x00000001 - -#define TAD 0x00000100 -#define CND 0x00000008 -#define DLC 0x00000004 -#define CD 0x00000002 -#define TRO 0x00000001 - -/** - * Renesas Ethernet API return defines - **/ -#define R_ETHER_OK 0 -#define R_ETHER_ERROR -1 - -/* Ether Interface definitions */ -#define ETH_RMII_MODE 0 -#define ETH_MII_MODE 1 -/* Select Ether Interface Mode */ -#define ETH_MODE_SEL ETH_MII_MODE - -/****************************************************************************** -Variable Externs -******************************************************************************/ - -/****************************************************************************** -Functions Prototypes -******************************************************************************/ -/** - * Renesas Ethernet API prototypes - **/ -int32_t R_Ether_Open(unsigned long ch, unsigned char mac_addr[]); -int32_t R_Ether_Close(unsigned long ch); -int32_t R_Ether_Write(unsigned long ch, void *buf, unsigned long len); -int32_t R_Ether_Read(unsigned long ch, void *buf); - -/** - * FreeRTOS Ethernet API prototypes. - */ - -/* - * Configure all the ethernet components (MAC, DMA, PHY) ready for communication. - */ -void vInitEmac( void ); - -/* - * Auto negotiate the link, returning pass or fail depending on whether a link - * was established or not. - */ -long lEMACWaitForLink( void ); - -/* - * Check the Rx status, and return the number of bytes received if any. - */ -unsigned long ulEMACRead( void ); - -/* - * Send uip_len bytes from uip_buf to the Tx descriptors and initiate a Tx. - */ -void vEMACWrite( void ); - - - - -/****************************************************/ -/* Ethernet statistic collection data */ -struct enet_stats -{ - unsigned long rx_packets; /* total packets received */ - unsigned long tx_packets; /* total packets transmitted */ - unsigned long rx_errors; /* bad packets received */ - unsigned long tx_errors; /* packet transmit problems */ - unsigned long rx_dropped; /* no space in buffers */ - unsigned long tx_dropped; /* no space available */ - unsigned long multicast; /* multicast packets received */ - unsigned long collisions; - - /* detailed rx_errors: */ - unsigned long rx_length_errors; - unsigned long rx_over_errors; /* receiver ring buffer overflow */ - unsigned long rx_crc_errors; /* recved pkt with crc error */ - unsigned long rx_frame_errors; /* recv'd frame alignment error */ - unsigned long rx_fifo_errors; /* recv'r fifo overrun */ - unsigned long rx_missed_errors; /* receiver missed packet */ - - /* detailed tx_errors */ - unsigned long tx_aborted_errors; - unsigned long tx_carrier_errors; - unsigned long tx_fifo_errors; - unsigned long tx_heartbeat_errors; - unsigned long tx_window_errors; -}; - -struct ei_device -{ - const char *name; - unsigned char open; - unsigned char Tx_act; - unsigned char Rx_act; - unsigned char txing; /* Transmit Active */ - unsigned char irqlock; /* EDMAC's interrupt disabled when '1'. */ - unsigned char dmaing; /* EDMAC Active */ - ethfifo *rxcurrent; /* current receive discripter */ - ethfifo *txcurrent; /* current transmit discripter */ - unsigned char save_irq; /* Original dev->irq value. */ - struct enet_stats stat; - unsigned char mac_addr[6]; -}; - -#endif /* R_ETHER_H */ - diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/webserver/uip-conf.h b/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/webserver/uip-conf.h deleted file mode 100644 index e5597d232..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/webserver/uip-conf.h +++ /dev/null @@ -1,167 +0,0 @@ -/** - * \addtogroup uipopt - * @{ - */ - -/** - * \name Project-specific configuration options - * @{ - * - * uIP has a number of configuration options that can be overridden - * for each project. These are kept in a project-specific uip-conf.h - * file and all configuration names have the prefix UIP_CONF. - */ - -/* - * Copyright (c) 2006, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: uip-conf.h,v 1.6 2006/06/12 08:00:31 adam Exp $ - */ - -/** - * \file - * An example uIP configuration file - * \author - * Adam Dunkels - */ - -#ifndef __UIP_CONF_H__ -#define __UIP_CONF_H__ - -#define UIP_CONF_EXTERNAL_BUFFER -#define UIP_CONF_PROCESS_HTTPD_FORMS 1 - -/** - * 8 bit datatype - * - * This typedef defines the 8-bit type used throughout uIP. - * - * \hideinitializer - */ -typedef unsigned char u8_t; - -/** - * 16 bit datatype - * - * This typedef defines the 16-bit type used throughout uIP. - * - * \hideinitializer - */ -typedef unsigned short u16_t; - -typedef unsigned long u32_t; - -/** - * Statistics datatype - * - * This typedef defines the dataype used for keeping statistics in - * uIP. - * - * \hideinitializer - */ -typedef unsigned short uip_stats_t; - -/** - * Maximum number of TCP connections. - * - * \hideinitializer - */ -#define UIP_CONF_MAX_CONNECTIONS 40 - -/** - * Maximum number of listening TCP ports. - * - * \hideinitializer - */ -#define UIP_CONF_MAX_LISTENPORTS 40 - -/** - * uIP buffer size. - * - * \hideinitializer - */ -#define UIP_CONF_BUFFER_SIZE 1480 - -/** - * CPU byte order. - * - * \hideinitializer - */ -#if __LITTLE_ENDIAN__ == 1 - #define UIP_CONF_BYTE_ORDER UIP_LITTLE_ENDIAN -#else - #define UIP_CONF_BYTE_ORDER UIP_BIG_ENDIAN -#endif - -/** - * Logging on or off - * - * \hideinitializer - */ -#define UIP_CONF_LOGGING 0 - -/** - * UDP support on or off - * - * \hideinitializer - */ -#define UIP_CONF_UDP 0 - -/** - * UDP checksums on or off - * - * \hideinitializer - */ -#define UIP_CONF_UDP_CHECKSUMS 1 - -/** - * uIP statistics on or off - * - * \hideinitializer - */ -#define UIP_CONF_STATISTICS 1 - -/* Here we include the header file for the application(s) we use in - our project. */ -/*#include "smtp.h"*/ -/*#include "hello-world.h"*/ -/*#include "telnetd.h"*/ -#include "webserver.h" -/*#include "dhcpc.h"*/ -/*#include "resolv.h"*/ -/*#include "webclient.h"*/ - -#define CCIF -#define CC_REGISTER_ARG - -#endif /* __UIP_CONF_H__ */ - -/** @} */ -/** @} */ diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/webserver/webserver.h b/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/webserver/webserver.h deleted file mode 100644 index 5267f0587..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_IAR/webserver/webserver.h +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright (c) 2002, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials provided - * with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: webserver.h,v 1.2 2006/06/11 21:46:38 adam Exp $ - * - */ -#ifndef __WEBSERVER_H__ -#define __WEBSERVER_H__ - -#include "apps/httpd/httpd.h" - -typedef struct httpd_state uip_tcp_appstate_t; -/* UIP_APPCALL: the name of the application function. This function - must return void and take no arguments (i.e., C type "void - appfunc(void)"). */ -#define UIP_APPCALL httpd_appcall - - -#endif /* __WEBSERVER_H__ */ diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo.Hbp b/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo.Hbp deleted file mode 100644 index 0d3910dbc..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo.Hbp +++ /dev/null @@ -1,4 +0,0 @@ -[Setting] -ToolChain=0 -[Section] -WindowSize=726,544 diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo.hws b/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo.hws deleted file mode 100644 index 808ac3c0a..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo.hws +++ /dev/null @@ -1,45 +0,0 @@ -[HIMDBVersion] -2.0 -[DATABASE_VERSION] -"11.0" -[WORKSPACE_DETAILS] -"RTOSDemo" "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas" "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo.hws" "RX" "Renesas RX Standard" -[SHARED_WORKSPACE_CONTROL_STATUS] -"" "" "" -"" "" "" -[PROJECTS] -"RTOSDemo" "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo" "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\RTOSDemo.hwp" 0 -[INFORMATION] -"No workspace information available" -[SCRAP] -[PROJECT_DEPENDENCY] -[WORKSPACE_PROPERTIES] -[HELP_FILES] -"c:\devtools\renesas\hew\tools\renesas\rx\1_0_0\hew\stdlib.chm" "C/C++ Standard Library Help" 0 -"c:\devtools\renesas\hew\tools\renesas\rx\1_0_1\hew\stdlib.chm" "C/C++ Standard Library Help" 0 -"c:\devtools\renesas\hew\tools\renesas\rx\1_0_2\hew\stdlib.chm" "C/C++ Standard Library Help" 0 -"c:\devtools\renesas\hew\tools\renesas\rx\1_1_0\hew\stdlib.chm" "C/C++ Standard Library Help" 1 -"c:\devtools\renesas\hewforrx210-w1\tools\renesas\rx\1_1_0\hew\stdlib.chm" "C/C++ Standard Library Help" 0 -[GENERAL_DATA_PROJECT] -[USERMENUTOOLS] -[CUSTOMPLACEHOLDERS] -[MAKEFILE_BUILD_INFO] -"$(WORKSPDIR)\make\$(PROJECTNAME)_$(CONFIGNAME).mak" "" "$(WORKSPDIR)\make" 0 0 0 -[VD_CONFIGURATION_OPTIONS] -"ACTIVE_DESKTOP" "0" -[VD_CONFIGURATIONS] -"0" "Default1" "1" -"1" "Default2" "1" -"2" "Default3" "1" -"3" "Default4" "1" -[OPTIONS_DEBUG_TAB] -0 0 0 0 0 -[VCS] -"" "" "" 0 -[VCS_PROJECT] -[MAKEFILE_ENV_STRINGS] -[MAKEFILE_ENV_FLAGS] -1 0 0 -[MAKEFILE_CLEAN_INFO] -"" -[END] diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo.tws b/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo.tws deleted file mode 100644 index ef666fddb..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo.tws +++ /dev/null @@ -1,13 +0,0 @@ -[HIMDBVersion] -2.0 -[DATABASE_VERSION] -"1.2" -[CURRENT_PROJECT] -"RTOSDemo" -[GENERAL_DATA] -[BREAKPOINTS] -[OPEN_WORKSPACE_FILES] -[WORKSPACE_FILE_STATES] -[LOADED_PROJECTS] -"RTOSDemo" -[END] diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/Debug/Debug.hdp b/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/Debug/Debug.hdp deleted file mode 100644 index 750b60269..000000000 Binary files a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/Debug/Debug.hdp and /dev/null differ diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/Debug_RX600_E1_E20_SYSTEM/Debug_RX600_E1_E20_SYSTEM.hdp b/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/Debug_RX600_E1_E20_SYSTEM/Debug_RX600_E1_E20_SYSTEM.hdp deleted file mode 100644 index 6d5a944c8..000000000 Binary files a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/Debug_RX600_E1_E20_SYSTEM/Debug_RX600_E1_E20_SYSTEM.hdp and /dev/null differ diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/DefaultSession.hsf b/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/DefaultSession.hsf deleted file mode 100644 index 49a2c5fc2..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/DefaultSession.hsf +++ /dev/null @@ -1,101 +0,0 @@ -[HIMDBVersion] -2.0 -[DATABASE_VERSION] -"2.3" -[SESSION_DETAILS] -"" -[INFORMATION] -"" -[GENERAL_DATA] -"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapCtrlECX_MAP_FIND_SYMBOL_LIST" "" -"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapCtrlViews" "0" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlBatchFileName" "" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlBreakpointFlag" "-1 " -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlBreakpointStatus" "-1 " -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlBrowseDirectory" "" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlLogFileName" "" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlSplitterPosition" "242" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlViews" "0" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}TclTkCtrlLogFileName" "" -"{6C4D5B81-FD67-46A9-A089-EA44DCDE47FD}RAMMonitorManagerCtrlBlockInfoFileDir" "" -"{6C4D5B81-FD67-46A9-A089-EA44DCDE47FD}RAMMonitorManagerCtrlBlockInfoFileName" "" -"{7943C44E-7D44-422A-9140-4CF55C88F7D3}DifferenceCtrlViews" "0" -[LANGUAGE] -"English" -[CONFIG_INFO_VD1] -1 -[CONFIG_INFO_VD2] -0 -[CONFIG_INFO_VD3] -0 -[CONFIG_INFO_VD4] -0 -[WINDOW_POSITION_STATE_DATA_VD1] -"Help" "TOOLBAR 0" 59419 1 5 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_00000001_OUTPUT}" "WINDOW" 59422 0 0 "1.00" 289 560 340 350 200 18 0 "36756|36757|36758|36759|<>|36746|36747|<>|39531|<>|39500|39534|<>|36687" "0.0" -"{WK_00000002_WORKSPACE}" "WINDOW" 59420 0 0 "1.00" 206 560 340 350 200 18 0 "" "0.0" -"{WK_TB00000001_STANDARD}" "TOOLBAR 0" 59419 0 2 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000002_EDITOR}" "TOOLBAR 0" 59419 0 0 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000003_BOOKMARKS}" "TOOLBAR 0" 59419 1 1 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000004_TEMPLATES}" "TOOLBAR 0" 59419 1 0 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000005_SEARCH}" "TOOLBAR 0" 59419 0 1 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000007_DEBUG}" "TOOLBAR 0" 59419 2 0 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000008_DEBUGRUN}" "TOOLBAR 0" 59419 2 1 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000009_VERSIONCONTROL}" "TOOLBAR 0" 59419 1 3 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000012_MAP}" "TOOLBAR 0" 59419 1 4 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000018_DEFAULTWINDOW}" "TOOLBAR 0" 59419 1 2 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000025_HELPSYSTEMTOOL}" "TOOLBAR 0" 59419 2 3 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000026_MACRO}" "TOOLBAR 0" 59419 1 6 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000028_RTOSDEBUG}" "TOOLBAR 0" 59419 2 2 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000029_SYSTEMTOOL}" "TOOLBAR 0" 59419 2 4 "0.00" 0 0 0 0 0 17 0 "" "0.0" -[WINDOW_POSITION_STATE_DATA_VD2] -[WINDOW_POSITION_STATE_DATA_VD3] -[WINDOW_POSITION_STATE_DATA_VD4] -[WINDOW_Z_ORDER] -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N_Renesas\RTOSDemo\RTOSDemo.c" -[TARGET_NAME] -"" "" 1229201492 -[STATUSBAR_STATEINFO_VD1] -"MasterShowState" 1 -"ApplicationShowState" 1 -"DebuggerShowState" 1 -[STATUSBAR_STATEINFO_VD2] -"MasterShowState" 1 -"ApplicationShowState" 1 -"DebuggerShowState" 1 -[STATUSBAR_STATEINFO_VD3] -"MasterShowState" 1 -"ApplicationShowState" 1 -"DebuggerShowState" 1 -[STATUSBAR_STATEINFO_VD4] -"MasterShowState" 1 -"ApplicationShowState" 1 -"DebuggerShowState" 1 -[STATUSBAR_DEBUGGER_PANESTATE_VD1] -[STATUSBAR_DEBUGGER_PANESTATE_VD2] -[STATUSBAR_DEBUGGER_PANESTATE_VD3] -[STATUSBAR_DEBUGGER_PANESTATE_VD4] -[DEBUGGER_OPTIONS] -"" -[DOWNLOAD_MODULES] -[CONNECT_ON_GO] -"FALSE" -[DOWNLOAD_MODULES_AFTER_BUILD] -"TRUE" -[REMOVE_BREAKPOINTS_ON_DOWNLOAD] -"FALSE" -[DISABLE_MEMORY_ACCESS_PRIOR_TO_COMMAND_FILE_EXECUTION] -"FALSE" -[LIMIT_DISASSEMBLY_MEMORY_ACCESS] -"FALSE" -[DISABLE_MEMORY_ACCESS_DURING_EXECUTION] -"FALSE" -[DEBUGGER_OPTIONS_PROPERTIES] -"1" -[COMMAND_FILES] -[DEFAULT_DEBUG_FORMAT] -"" -[FLASH_DETAILS] -"" 0 0 "" 0 "" 0 0 "" 0 0 0 0 0 0 0 "" "" "" "" "" -[BREAKPOINTS] -[END] diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/FreeRTOSConfig.h b/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/FreeRTOSConfig.h deleted file mode 100644 index dc6ff5222..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/FreeRTOSConfig.h +++ /dev/null @@ -1,148 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -#ifndef FREERTOS_CONFIG_H -#define FREERTOS_CONFIG_H - -/* Board specifics. */ -#include "rskrx62ndef.h" - -/*----------------------------------------------------------- - * Application specific definitions. - * - * These definitions should be adjusted for your particular hardware and - * application requirements. - * - * THESE PARAMETERS ARE DESCRIBED WITHIN THE 'CONFIGURATION' SECTION OF THE - * FreeRTOS API DOCUMENTATION AVAILABLE ON THE FreeRTOS.org WEB SITE. - * - * See http://www.freertos.org/a00110.html - *----------------------------------------------------------*/ - -#define configUSE_PREEMPTION 1 -#define configUSE_IDLE_HOOK 0 -#define configUSE_TICK_HOOK 0 -#define configCPU_CLOCK_HZ ( ICLK_FREQUENCY ) /* Set in rskrx62ndef.h. */ -#define configPERIPHERAL_CLOCK_HZ ( PCLK_FREQUENCY ) /* Set in rskrx62ndef.h. */ -#define configTICK_RATE_HZ ( ( TickType_t ) 1000 ) -#define configMINIMAL_STACK_SIZE ( ( unsigned short ) 140 ) -#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 45 * 1024 ) ) -#define configMAX_TASK_NAME_LEN ( 12 ) -#define configUSE_TRACE_FACILITY 1 -#define configUSE_16_BIT_TICKS 0 -#define configIDLE_SHOULD_YIELD 1 -#define configUSE_CO_ROUTINES 0 -#define configUSE_MUTEXES 1 -#define configGENERATE_RUN_TIME_STATS 1 -#define configCHECK_FOR_STACK_OVERFLOW 2 -#define configUSE_RECURSIVE_MUTEXES 1 -#define configQUEUE_REGISTRY_SIZE 0 -#define configUSE_MALLOC_FAILED_HOOK 1 -#define configUSE_APPLICATION_TASK_TAG 0 - -#define configMAX_PRIORITIES ( 7 ) -#define configMAX_CO_ROUTINE_PRIORITIES ( 2 ) - -/* Software timer definitions. */ -#define configUSE_TIMERS 1 -#define configTIMER_TASK_PRIORITY ( 3 ) -#define configTIMER_QUEUE_LENGTH 5 -#define configTIMER_TASK_STACK_DEPTH ( configMINIMAL_STACK_SIZE ) - -/* The interrupt priority used by the kernel itself for the tick interrupt and -the pended interrupt. This would normally be the lowest priority. */ -#define configKERNEL_INTERRUPT_PRIORITY 1 - -/* The maximum interrupt priority from which FreeRTOS API calls can be made. -Interrupts that use a priority above this will not be effected by anything the -kernel is doing. */ -#define configMAX_SYSCALL_INTERRUPT_PRIORITY 4 - -/* The peripheral used to generate the tick interrupt is configured as part of -the application code. This constant should be set to the vector number of the -peripheral chosen. As supplied this is CMT0. */ -#define configTICK_VECTOR _CMT0_CMI0 - -/* Set the following definitions to 1 to include the API function, or zero -to exclude the API function. */ - -#define INCLUDE_vTaskPrioritySet 1 -#define INCLUDE_uxTaskPriorityGet 1 -#define INCLUDE_vTaskDelete 1 -#define INCLUDE_vTaskCleanUpResources 0 -#define INCLUDE_vTaskSuspend 1 -#define INCLUDE_vTaskDelayUntil 1 -#define INCLUDE_vTaskDelay 1 -#define INCLUDE_uxTaskGetStackHighWaterMark 1 -#define INCLUDE_xTaskGetSchedulerState 1 -#define INCLUDE_eTaskGetState 1 - -/* This demo makes use of one or more example stats formatting functions. These -format the raw data provided by the uxTaskGetSystemState() function in to human -readable ASCII form. See the notes in the implementation of vTaskList() within -FreeRTOS/Source/tasks.c for limitations. */ -#define configUSE_STATS_FORMATTING_FUNCTIONS 1 - -#define configASSERT( x ) if( ( x ) == 0 ) { taskDISABLE_INTERRUPTS(); for( ;; ); } - -extern volatile unsigned long ulHighFrequencyTickCount; -#define portCONFIGURE_TIMER_FOR_RUN_TIME_STATS() nop() /* Run time stats use the same timer as the high frequency timer test. */ -#define portGET_RUN_TIME_COUNTER_VALUE() ulHighFrequencyTickCount - - -/* Override some of the priorities set in the common demo tasks. This is -required to ensure flase positive timing errors are not reported. */ -#define bktPRIMARY_PRIORITY ( configMAX_PRIORITIES - 3 ) -#define bktSECONDARY_PRIORITY ( configMAX_PRIORITIES - 4 ) -#define intqHIGHER_PRIORITY ( configMAX_PRIORITIES - 3 ) - - -/*----------------------------------------------------------- - * Ethernet configuration. - *-----------------------------------------------------------*/ - -/* MAC address configuration. */ -#define configMAC_ADDR0 0x00 -#define configMAC_ADDR1 0x12 -#define configMAC_ADDR2 0x13 -#define configMAC_ADDR3 0x10 -#define configMAC_ADDR4 0x15 -#define configMAC_ADDR5 0x11 - -/* IP address configuration. */ -#define configIP_ADDR0 192 -#define configIP_ADDR1 168 -#define configIP_ADDR2 0 -#define configIP_ADDR3 200 - -/* Netmask configuration. */ -#define configNET_MASK0 255 -#define configNET_MASK1 255 -#define configNET_MASK2 255 -#define configNET_MASK3 0 - -#endif /* FREERTOS_CONFIG_H */ diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/HighFrequencyTimerTest.c b/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/HighFrequencyTimerTest.c deleted file mode 100644 index b97be45c0..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/HighFrequencyTimerTest.c +++ /dev/null @@ -1,144 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* - * High frequency timer test as described in main.c. - */ - -/* Scheduler includes. */ -#include "FreeRTOS.h" - -/* Hardware specifics. */ -#include "iodefine.h" - -/* The set frequency of the interrupt. Deviations from this are measured as -the jitter. */ -#define timerINTERRUPT_FREQUENCY ( 20000UL ) - -/* The expected time between each of the timer interrupts - if the jitter was -zero. */ -#define timerEXPECTED_DIFFERENCE_VALUE ( ( unsigned short ) ( ( configPERIPHERAL_CLOCK_HZ / 8UL ) / timerINTERRUPT_FREQUENCY ) ) - -/* The highest available interrupt priority. */ -#define timerHIGHEST_PRIORITY ( 15 ) - -/* Misc defines. */ -#define timerTIMER_3_COUNT_VALUE ( *( ( unsigned short * ) 0x8801a ) ) /*( CMT3.CMCNT )*/ - -/*-----------------------------------------------------------*/ - -/* Interrupt handler in which the jitter is measured. */ -static void prvTimer2IntHandler( void ); - -/* Stores the value of the maximum recorded jitter between interrupts. This is -displayed on one of the served web pages. */ -volatile unsigned short usMaxJitter = 0; - -/* Counts the number of high frequency interrupts - used to generate the run -time stats. */ -volatile unsigned long ulHighFrequencyTickCount = 0UL; - -/*-----------------------------------------------------------*/ - -void vSetupHighFrequencyTimer( void ) -{ - /* Timer CMT2 is used to generate the interrupts, and CMT3 is used - to measure the jitter. */ - - /* Enable compare match timer 2 and 3. */ - MSTP( CMT2 ) = 0; - MSTP( CMT3 ) = 0; - - /* Interrupt on compare match. */ - CMT2.CMCR.BIT.CMIE = 1; - - /* Set the compare match value. */ - CMT2.CMCOR = ( unsigned short ) ( ( ( configPERIPHERAL_CLOCK_HZ / timerINTERRUPT_FREQUENCY ) -1 ) / 8 ); - - /* Divide the PCLK by 8. */ - CMT2.CMCR.BIT.CKS = 0; - CMT3.CMCR.BIT.CKS = 0; - - /* Enable the interrupt... */ - _IEN( _CMT2_CMI2 ) = 1; - - /* ...and set its priority to the maximum possible, this is above the priority - set by configMAX_SYSCALL_INTERRUPT_PRIORITY so will nest. */ - _IPR( _CMT2_CMI2 ) = timerHIGHEST_PRIORITY; - - /* Start the timers. */ - CMT.CMSTR1.BIT.STR2 = 1; - CMT.CMSTR1.BIT.STR3 = 1; -} -/*-----------------------------------------------------------*/ - -#pragma interrupt ( prvTimer2IntHandler( vect = _VECT( _CMT2_CMI2 ), enable ) ) -static void prvTimer2IntHandler( void ) -{ -volatile unsigned short usCurrentCount; -static unsigned short usMaxCount = 0; -static unsigned long ulErrorCount = 0UL; - - /* We use the timer 1 counter value to measure the clock cycles between - the timer 0 interrupts. First stop the clock. */ - CMT.CMSTR1.BIT.STR3 = 0; - nop(); - nop(); - usCurrentCount = timerTIMER_3_COUNT_VALUE; - - /* Is this the largest count we have measured yet? */ - if( usCurrentCount > usMaxCount ) - { - if( usCurrentCount > timerEXPECTED_DIFFERENCE_VALUE ) - { - usMaxJitter = usCurrentCount - timerEXPECTED_DIFFERENCE_VALUE; - } - else - { - /* This should not happen! */ - ulErrorCount++; - } - - usMaxCount = usCurrentCount; - } - - /* Used to generate the run time stats. */ - ulHighFrequencyTickCount++; - - /* Clear the timer. */ - timerTIMER_3_COUNT_VALUE = 0; - - /* Then start the clock again. */ - CMT.CMSTR1.BIT.STR3 = 1; -} - - - - - - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/IntQueueTimer.c b/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/IntQueueTimer.c deleted file mode 100644 index fcbc233eb..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/IntQueueTimer.c +++ /dev/null @@ -1,117 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* - * This file contains the non-portable and therefore RX62N specific parts of - * the IntQueue standard demo task - namely the configuration of the timers - * that generate the interrupts and the interrupt entry points. - */ - -/* Scheduler includes. */ -#include "FreeRTOS.h" -#include "task.h" - -/* Demo includes. */ -#include "IntQueueTimer.h" -#include "IntQueue.h" - -/* Hardware specifics. */ -#include "iodefine.h" - -#define tmrTIMER_0_1_FREQUENCY ( 2000UL ) -#define tmrTIMER_2_3_FREQUENCY ( 2001UL ) - -void vInitialiseTimerForIntQueueTest( void ) -{ - /* Ensure interrupts do not start until full configuration is complete. */ - portENTER_CRITICAL(); - { - /* Cascade two 8bit timer channels to generate the interrupts. - 8bit timer unit 1 (TMR0 and TMR1) and 8bit timer unit 2 (TMR2 and TMR3 are - utilised for this test. */ - - /* Enable the timers. */ - SYSTEM.MSTPCRA.BIT.MSTPA5 = 0; - SYSTEM.MSTPCRA.BIT.MSTPA4 = 0; - - /* Enable compare match A interrupt request. */ - TMR0.TCR.BIT.CMIEA = 1; - TMR2.TCR.BIT.CMIEA = 1; - - /* Clear the timer on compare match A. */ - TMR0.TCR.BIT.CCLR = 1; - TMR2.TCR.BIT.CCLR = 1; - - /* Set the compare match value. */ - TMR01.TCORA = ( unsigned short ) ( ( ( configPERIPHERAL_CLOCK_HZ / tmrTIMER_0_1_FREQUENCY ) -1 ) / 8 ); - TMR23.TCORA = ( unsigned short ) ( ( ( configPERIPHERAL_CLOCK_HZ / tmrTIMER_0_1_FREQUENCY ) -1 ) / 8 ); - - /* 16 bit operation ( count from timer 1,2 ). */ - TMR0.TCCR.BIT.CSS = 3; - TMR2.TCCR.BIT.CSS = 3; - - /* Use PCLK as the input. */ - TMR1.TCCR.BIT.CSS = 1; - TMR3.TCCR.BIT.CSS = 1; - - /* Divide PCLK by 8. */ - TMR1.TCCR.BIT.CKS = 2; - TMR3.TCCR.BIT.CKS = 2; - - /* Enable TMR 0, 2 interrupts. */ - IEN( TMR0, CMIA0 ) = 1; - IEN( TMR2, CMIA2 ) = 1; - - /* Set the timer interrupts to be above the kernel. The interrupts are - assigned different priorities so they nest with each other. */ - IPR( TMR0, CMIA0 ) = configMAX_SYSCALL_INTERRUPT_PRIORITY - 1; - IPR( TMR2, CMIA2 ) = ( configMAX_SYSCALL_INTERRUPT_PRIORITY - 2 ); - } - portEXIT_CRITICAL(); - - /* Ensure the interrupts are clear as they are edge detected. */ - IR( TMR0, CMIA0 ) = 0; - IR( TMR2, CMIA2 ) = 0; -} -/*-----------------------------------------------------------*/ - -#pragma interrupt ( vT0_1InterruptHandler( vect = VECT_TMR0_CMIA0, enable ) ) -void vT0_1InterruptHandler( void ) -{ - portYIELD_FROM_ISR( xFirstTimerHandler() ); -} -/*-----------------------------------------------------------*/ - -#pragma interrupt ( vT2_3InterruptHandler( vect = VECT_TMR2_CMIA2, enable ) ) -void vT2_3InterruptHandler( void ) -{ - portYIELD_FROM_ISR( xSecondTimerHandler() ); -} - - - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/ParTest.c b/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/ParTest.c deleted file mode 100644 index 72bdd65dd..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/ParTest.c +++ /dev/null @@ -1,175 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/*----------------------------------------------------------- - * Simple IO routines to control the LEDs. - *-----------------------------------------------------------*/ - -/* Scheduler includes. */ -#include "FreeRTOS.h" -#include "task.h" - -/* Demo includes. */ -#include "partest.h" - -/* Hardware specifics. */ -#include "iodefine.h" - -#define partestNUM_LEDS ( 6 ) - -long lParTestGetLEDState( unsigned long ulLED ); - -/*-----------------------------------------------------------*/ - -void vParTestInitialise( void ) -{ - /* Port pin configuration is done by the low level set up prior to this - function being called. */ -} -/*-----------------------------------------------------------*/ - -void vParTestSetLED( unsigned long ulLED, signed long xValue ) -{ - if( ulLED < partestNUM_LEDS ) - { - if( xValue != 0 ) - { - /* Turn the LED on. */ - taskENTER_CRITICAL(); - { - switch( ulLED ) - { - case 0: LED0 = LED_ON; - break; - case 1: LED1 = LED_ON; - break; - case 2: LED2 = LED_ON; - break; - case 3: LED3 = LED_ON; - break; - case 4: LED4 = LED_ON; - break; - case 5: LED5 = LED_ON; - break; - } - } - taskEXIT_CRITICAL(); - } - else - { - /* Turn the LED off. */ - taskENTER_CRITICAL(); - { - switch( ulLED ) - { - case 0: LED0 = LED_OFF; - break; - case 1: LED1 = LED_OFF; - break; - case 2: LED2 = LED_OFF; - break; - case 3: LED3 = LED_OFF; - break; - case 4: LED4 = LED_OFF; - break; - case 5: LED5 = LED_OFF; - break; - } - - } - taskEXIT_CRITICAL(); - } - } -} -/*-----------------------------------------------------------*/ - -void vParTestToggleLED( unsigned long ulLED ) -{ - if( ulLED < partestNUM_LEDS ) - { - taskENTER_CRITICAL(); - { - if( lParTestGetLEDState( ulLED ) != 0x00 ) - { - vParTestSetLED( ulLED, 0 ); - } - else - { - vParTestSetLED( ulLED, 1 ); - } - } - taskEXIT_CRITICAL(); - } -} -/*-----------------------------------------------------------*/ - -long lParTestGetLEDState( unsigned long ulLED ) -{ -long lReturn = pdTRUE; - - if( ulLED < partestNUM_LEDS ) - { - switch( ulLED ) - { - case 0 : if( LED0 != 0 ) - { - lReturn = pdFALSE; - } - break; - case 1 : if( LED1 != 0 ) - { - lReturn = pdFALSE; - } - break; - case 2 : if( LED2 != 0 ) - { - lReturn = pdFALSE; - } - break; - case 3 : if( LED3 != 0 ) - { - lReturn = pdFALSE; - } - break; - case 4 : if( LED4 != 0 ) - { - lReturn = pdFALSE; - } - break; - case 5 : if( LED5 != 0 ) - { - lReturn = pdFALSE; - } - break; - } - } - - return lReturn; -} -/*-----------------------------------------------------------*/ - - \ No newline at end of file diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/RTOSDemo.hwp b/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/RTOSDemo.hwp deleted file mode 100644 index a9c750c96..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/RTOSDemo.hwp +++ /dev/null @@ -1,627 +0,0 @@ -[HIMDBVersion] -2.0 -[DATABASE_VERSION] -"2.8" -[PROJECT_DETAILS] -"RTOSDemo" "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo" "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\RTOSDemo.hwp" "RX" "Renesas RX Standard" "Application" "RX600" "Other" -[INFORMATION] -"No project information available" -[TOOL_CHAIN] -"Renesas RX Standard Toolchain" "1.1.0.0" -[CONFIGURATIONS] -"Blinky" "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\Blinky" -"Debug" "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\Debug" -"Debug_RX600_E1_E20_SYSTEM" "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\Debug_RX600_E1_E20_SYSTEM" -"Debug_with_optimisation" "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\Debug_with_optimisation" -"SimDebug_RX600" "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\SimDebug_RX600" -[BUILD_PHASES] -"Renesas OptLinker" 1 -"Renesas RX Assembler" 1 -"Renesas RX C/C++ Compiler" 1 -"Renesas RX C/C++ Library Generator" 1 -"Renesas RX Configurator" 1 -[TOOL_ENVIRONMENT] -[EXTENSIONS] -"Absolute file" "ABS" -"Assembly include file" "INC" -"Assembly list file" "LST" -"Assembly source file" "S" -"Assembly source file" "SRC" -"Binary file" "BIN" -"C header file" "H" -"C source file" "C" -"C++ header file" "HPP" -"C++ source file" "CC" -"C++ source file" "CP" -"C++ source file" "CPP" -"CPU information file" "CPU" -"Calling information file" "CAL" -"Configuration file" "CFG" -"Debug information file" "DBG" -"Hex file" "HEX" -"Library file" "LIB" -"Library information file" "LBP" -"Linkage map file" "MAP" -"Linkage symbol file" "FSY" -"Object file" "OBJ" -"Optimize map file" "bls" -"Preprocessed C source file" "P" -"Preprocessed C++ source file" "PP" -"Relocatable file" "REL" -"Rts information file" "RTS" -"S-Record file" "MOT" -"Stack information file" "SNI" -"TD include object file" "RTI" -[FILE_GROUPS] -"Absolute file" "BIN" "NONE" "" -"Assembly include file" "TEXT" "EDITOR" "" -"Assembly list file" "TEXT" "EDITOR" "" -"Assembly source file" "TEXT" "EDITOR" "" -"Binary file" "BIN" "NONE" "" -"C header file" "TEXT" "EDITOR" "" -"C source file" "TEXT" "EDITOR" "" -"C++ header file" "TEXT" "EDITOR" "" -"C++ source file" "TEXT" "EDITOR" "" -"CPU information file" "BIN" "NONE" "" -"Calling information file" "BIN" "NONE" "" -"Configuration file" "TEXT" "EDITOR" "" -"Debug information file" "BIN" "NONE" "" -"Hex file" "TEXT" "EDITOR" "" -"Library file" "BIN" "NONE" "" -"Library information file" "TEXT" "EDITOR" "" -"Linkage map file" "TEXT" "EDITOR" "" -"Linkage symbol file" "TEXT" "EDITOR" "" -"Object file" "BIN" "NONE" "" -"Optimize map file" "BIN" "NONE" "" -"Preprocessed C source file" "TEXT" "EDITOR" "" -"Preprocessed C++ source file" "TEXT" "EDITOR" "" -"Relocatable file" "BIN" "NONE" "" -"Rts information file" "BIN" "NONE" "" -"S-Record file" "TEXT" "EDITOR" "" -"Stack information file" "BIN" "NONE" "" -"TD include object file" "BIN" "NONE" "" -[ASSOCIATED_APPLICATIONS] -[TOOLCHAIN_PHASE] -"Renesas OptLinker" -"Renesas RX Assembler" -"Renesas RX C/C++ Compiler" -"Renesas RX C/C++ Library Generator" -"Renesas RX Configurator" -[UTILITY_PHASE] -[CUSTOM_PHASES] -[CUSTOM_PHASE_INPUT_GROUP] -[CUSTOM_PHASE_OUTPUT_SYNTAX] -[BUILD_ORDER] -"Renesas RX C/C++ Library Generator" 1 -"Renesas RX C/C++ Compiler" 1 -"Renesas RX Assembler" 1 -"Renesas OptLinker" 1 -"Renesas RX Configurator" 0 -[BUILD_PHASE_DETAILS] -"Renesas OptLinker" "Object file|Library file|Relocatable file" 0 -"Renesas RX Assembler" "Assembly source file|Linkage symbol file" 1 -"Renesas RX C/C++ Compiler" "C source file|C++ source file" 1 -"Renesas RX C/C++ Library Generator" "" 0 -"Renesas RX Configurator" "Configuration file" 0 -[BUILD_FILE_ORDER_Assembly source file] -"Renesas RX Assembler" 1 -[BUILD_FILE_ORDER_C source file] -"Renesas RX C/C++ Compiler" 1 -[BUILD_FILE_ORDER_C++ source file] -"Renesas RX C/C++ Compiler" 1 -[BUILD_FILE_ORDER_Linkage symbol file] -"Renesas RX Assembler" 1 -[SCRAP] -"Project Generator Setup File" "" -[MAPPINGS] -"Assembly source file" "Renesas RX Assembler" "Renesas RX C/C++ Compiler" -"Library file" "Renesas OptLinker" "Renesas RX C/C++ Library Generator" -"Object file" "Renesas OptLinker" "Renesas RX Assembler" -"Object file" "Renesas OptLinker" "Renesas RX C/C++ Compiler" -[PROJECT_FILES] -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\BlockQ.c" "User" "C source file|Common demo tasks" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\GenQTest.c" "User" "C source file|Common demo tasks" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\IntQueue.c" "User" "C source file|Common demo tasks" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\PollQ.c" "User" "C source file|Common demo tasks" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\QPeek.c" "User" "C source file|Common demo tasks" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\blocktim.c" "User" "C source file|Common demo tasks" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\death.c" "User" "C source file|Common demo tasks" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\flash.c" "User" "C source file|Common demo tasks" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\flop.c" "User" "C source file|Common demo tasks" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\integer.c" "User" "C source file|Common demo tasks" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\recmutex.c" "User" "C source file|Common demo tasks" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\semtest.c" "User" "C source file|Common demo tasks" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\apps\httpd\http-strings.c" "User" "C source file|FreeTCP (based on uIP)|webserver|Common" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd-fs.c" "User" "C source file|FreeTCP (based on uIP)|webserver|Common" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd.c" "User" "C source file|FreeTCP (based on uIP)|webserver|Common" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\psock.c" "User" "C source file|FreeTCP (based on uIP)" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\timer.c" "User" "C source file|FreeTCP (based on uIP)" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\uip.c" "User" "C source file|FreeTCP (based on uIP)" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\uip_arp.c" "User" "C source file|FreeTCP (based on uIP)" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\HighFrequencyTimerTest.c" "User" "C source file" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\IntQueueTimer.c" "User" "C source file" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\ParTest.c" "User" "C source file" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\Renesas-Files\dbsct.c" "User" "C source file|Renesas Files" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\Renesas-Files\hwsetup.c" "User" "C source file|Renesas Files" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\Renesas-Files\intprg.c" "User" "C source file|Renesas Files" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\Renesas-Files\lowlvl.src" "User" "C source file|Renesas Files" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\Renesas-Files\lowsrc.c" "User" "C source file|Renesas Files" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\Renesas-Files\resetprg.c" "User" "C source file|Renesas Files" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\Renesas-Files\sbrk.c" "User" "C source file|Renesas Files" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\Renesas-Files\vecttbl.c" "User" "C source file|Renesas Files" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\main-blinky.c" "User" "C source file" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\main-full.c" "User" "C source file" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\uIP_Task.c" "User" "C source file" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\webserver\EMAC.c" "User" "C source file|FreeTCP (based on uIP)|webserver|Port specific" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\webserver\httpd-cgi.c" "User" "C source file|FreeTCP (based on uIP)|webserver|Port specific" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\webserver\httpd-fsdata.c" "User" "C source file|FreeTCP (based on uIP)|webserver|Port specific" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\webserver\phy.c" "User" "C source file|FreeTCP (based on uIP)|webserver|Port specific" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\list.c" "User" "C source file|FreeRTOS" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\MemMang\heap_2.c" "User" "C source file|FreeRTOS|Portable layer" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\Renesas\RX600\port.c" "User" "C source file|FreeRTOS|Portable layer" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\Renesas\RX600\port_asm.src" "User" "C source file|FreeRTOS|Portable layer" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\queue.c" "User" "C source file|FreeRTOS" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\tasks.c" "User" "C source file|FreeRTOS" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\timers.c" "User" "C source file" 2 -[FOLDER] -"Assembly source file" "Assembly source file" -"C source file" "C source file" -"C source file|Common demo tasks" "" -"C source file|FreeRTOS" "" -"C source file|FreeRTOS|Portable layer" "" -"C source file|FreeTCP (based on uIP)" "" -"C source file|FreeTCP (based on uIP)|webserver" "" -"C source file|FreeTCP (based on uIP)|webserver|Common" "" -"C source file|FreeTCP (based on uIP)|webserver|Port specific" "" -"C source file|Renesas Files" "" -[GENERAL_DATA_PROJECT] -"MAKEGEN_GENERATE_MAKEFILE_FOR" "0" -"MAKEGEN_MAKEFILE_FORMAT" "2" -"MAKEGEN_MAKEFILE_RELATIVITY" "1" -"MAKEGEN_SCAN_DEPENDENCIES_WHILST_BUILDING_MAKEFILE" "1" -"MAKEGEN_USE_STATIC_SUBCOMMAND_FILES" "1" -"USE_CUSTOM_LINKAGE_ORDER" "0" -[ON_DEMAND_COMPONENTS_LOADED] -[SYNC_SESSION_NAMES] -[SESSIONS] -"DefaultSession" "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\DefaultSession.hsf" 0 -"SessionRX600_E1_E20_SYSTEM" "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\SessionRX600_E1_E20_SYSTEM.hsf" 0 -"SimSessionRX600" "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\SimSessionRX600.hsf" 0 -[GENERAL_DATA_SESSION_DefaultSession] -[GENERAL_DATA_SESSION_SessionRX600_E1_E20_SYSTEM] -[GENERAL_DATA_SESSION_SimSessionRX600] -[OPTIONS_Blinky_Renesas OptLinker] -"Single Shot" "05140d424600dc10" 5 -[OPTIONS_Blinky_Renesas RX Assembler] -"Assembly source file" "05140d424600dc10" 4 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\Renesas-Files\lowlvl.src" "05140d424600dc10" 4 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\Renesas\RX600\port_asm.src" "05140d424600dc10" 4 -"Linkage symbol file" "05140d424600dc10" 4 -[OPTIONS_Blinky_Renesas RX C/C++ Compiler] -"C source file" "05140d424600dc10" 3 -"C++ source file" "05140d424600dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\BlockQ.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\GenQTest.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\IntQueue.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\PollQ.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\QPeek.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\blocktim.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\death.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\flash.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\flop.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\integer.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\recmutex.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\semtest.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\apps\httpd\http-strings.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd-fs.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\psock.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\timer.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\uip.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\uip_arp.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\HighFrequencyTimerTest.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\IntQueueTimer.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\ParTest.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\Renesas-Files\dbsct.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\Renesas-Files\hwsetup.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\Renesas-Files\intprg.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\Renesas-Files\lowsrc.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\Renesas-Files\resetprg.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\Renesas-Files\sbrk.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\Renesas-Files\vecttbl.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\main-blinky.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\main-full.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\uIP_Task.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\webserver\EMAC.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\webserver\httpd-cgi.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\webserver\httpd-fsdata.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\webserver\phy.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\list.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\MemMang\heap_2.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\Renesas\RX600\port.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\queue.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\tasks.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\timers.c" "05140d424600dc10" 3 -[OPTIONS_Blinky_Renesas RX C/C++ Library Generator] -"Single Shot" "05140d424600dc10" 1 -[OPTIONS_Blinky_Renesas RX Configurator] -"Single Shot" "05140d424600dc10" 6 -[OPTIONS_Blinky] -"" 0 -"[V|VERSION|1] [B|COMMAND|1] [S|SPEC|UITRON4] [S|OUTPUTPATH|^"$(CONFIGDIR)^"] [S|CPU|RX600] [S|ENDIAN|LITTLE] [S|FINT_REGISTER|0]" 6 -"[V|VERSION|1] [B|SJIS|1] [B|DEBUG|1] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(FILELEAF).obj^"] [S|CPU|RX600] [S|BASE|00000000=NONE] [B|SKIPDEPENDENCY|1] -" 4 -"[V|VERSION|1] [S|LANG|CPP] [B|SJIS|1] [S|INCLUDE|^"$(PROJDIR)\..\..\..\Source\portable\Renesas\RX600^"|^"$(PROJDIR)\..\..\..\Source\include^"|^"$(PROJDIR)\.^"|^"$(PROJDIR)\..\..\include^"|^"$(PROJDIR)\..\..\Common\include^"|^"$(PROJDIR)\.\include^"|^"$(PROJDIR)\webserver^"] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(FILELEAF).obj^"] [B|DEBUG|1] [S|OPTIMIZE|0] [B|SIZE|1] [B|MAP|0] [I|INLINE|100] [I|LOOP|2] [S|MISRA2004_CHECK_RULE|ALL] [S|MISRA2004_RULE|1.1|3.4|4.1|5.2|5.3|5.4|5.5|5.6|5.7|6.1|6.2|6.3|6.4|6.5|7.1|8.1|8.2|8.3|8.5|8.6|8.7|8.8|8.11|8.12|9.2|9.3|10.1|10.2|10.3|10.4|10.5|10.6|11.1|11.2|11.3|11.4|11.5|12.1|12.2|12.3|12.4|12.5|12.6|12.7|12.8|12.9|12.10|12.11|12.12|12.13|13.1|13.2|13.3|13.4|13.7|14.1|14.2|14.3|14.4|14.5|14.6|14.7|14.8|14.9|14.10|15.1|15.2|15.3|15.4|15.5|16.1|16.2|16.3|16.4|16.5|16.6|16.8|16.9|17.3|17.4|17.5|17.6|18.1|18.2|18.4|19.1|20.2|20.4|20.5|20.7|20.8|20.9|20.10|20.11|20.12] [S|MISRA1998_CHECK_RULE|ALL] [S|MISRA1998_RULE|1|5|8|12|13|14|17|18|19|20|21|22|24|28|29|31|32|33|34|35|36|37|38|39|40|42|43|44|45|46|48|49|50|51|53|54|55|56|57|58|59|60|61|62|63|64|65|68|69|70|71|72|73|74|75|76|77|78|79|80|82|83|84|85|99|101|102|103|104|105|106|108|110|111|112|113|115|118|119|121|122|123|124|125|126|127] [S|MISRA_GROUP_FILE_PATH|^"$(PROJDIR)\$(PROJECTNAME).rde^"] [S|CPU|RX600] [S|BASE|00000000=NONE] [B|SKIPDEPENDENCY|1] [N|DEPENDSCAN|1] -" 2 -"[V|VERSION|1] [S|LANG|C] [B|SJIS|1] [S|INCLUDE|^"$(PROJDIR)\..\..\..\Source\portable\Renesas\RX600^"|^"$(PROJDIR)\..\..\..\Source\include^"|^"$(PROJDIR)\.^"|^"$(PROJDIR)\..\..\include^"|^"$(PROJDIR)\..\..\Common\include^"|^"$(PROJDIR)\.\include^"|^"$(PROJDIR)\webserver^"] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(FILELEAF).obj^"] [B|DEBUG|1] [S|OPTIMIZE|0] [B|SIZE|1] [B|MAP|0] [I|INLINE|100] [I|LOOP|2] [S|MISRA2004_CHECK_RULE|ALL] [S|MISRA2004_RULE|1.1|3.4|4.1|5.2|5.3|5.4|5.5|5.6|5.7|6.1|6.2|6.3|6.4|6.5|7.1|8.1|8.2|8.3|8.5|8.6|8.7|8.8|8.11|8.12|9.2|9.3|10.1|10.2|10.3|10.4|10.5|10.6|11.1|11.2|11.3|11.4|11.5|12.1|12.2|12.3|12.4|12.5|12.6|12.7|12.8|12.9|12.10|12.11|12.12|12.13|13.1|13.2|13.3|13.4|13.7|14.1|14.2|14.3|14.4|14.5|14.6|14.7|14.8|14.9|14.10|15.1|15.2|15.3|15.4|15.5|16.1|16.2|16.3|16.4|16.5|16.6|16.8|16.9|17.3|17.4|17.5|17.6|18.1|18.2|18.4|19.1|20.2|20.4|20.5|20.7|20.8|20.9|20.10|20.11|20.12] [S|MISRA1998_CHECK_RULE|ALL] [S|MISRA1998_RULE|1|5|8|12|13|14|17|18|19|20|21|22|24|28|29|31|32|33|34|35|36|37|38|39|40|42|43|44|45|46|48|49|50|51|53|54|55|56|57|58|59|60|61|62|63|64|65|68|69|70|71|72|73|74|75|76|77|78|79|80|82|83|84|85|99|101|102|103|104|105|106|108|110|111|112|113|115|118|119|121|122|123|124|125|126|127] [S|MISRA_GROUP_FILE_PATH|^"$(PROJDIR)\$(PROJECTNAME).rde^"] [S|CPU|RX600] [S|BASE|00000000=NONE] [B|SKIPDEPENDENCY|1] [N|DEPENDSCAN|1] -" 3 -"[V|VERSION|1] [S|MODE|BUILD/CHANGED] [S|EXISTOUTPUTPATH|^"$(CONFIGDIR)\$(PROJECTNAME).lib^"] [B|RUNTIME|1] [B|STDIO|1] [B|STDLIB|1] [B|STRING|1] [B|NOFLOAT|1] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(PROJECTNAME).lib^"] [B|SIZE|1] [I|INLINE|100] [I|LOOP|2] [S|CPU|RX600] [S|BASE|00000000=NONE] [B|SKIPDEPENDENCY|1] -" 1 -"[V|VERSION|6] [S|FORM|STYPE] [S|BYTE_COUNT_VALUE|FF] [B|DEBUG|1] [S|ROM|(D,R)|(D_1,R_1)|(D_2,R_2)] [S|CRC|NONE|DEFAULT|00000000] [B|LIST|1] [S|LIST|^"$(CONFIGDIR)\$(PROJECTNAME).map^"] [S|SHOW|METHODCUSTOM|] [S|OUTPUT|^"$(CONFIGDIR)\$(PROJECTNAME).mot^"] [I|SPACE|^"FF^"] [B|OPTIMIZE|0] [S|START|B_1,R_1,B_2,R_2,B,R,SU,SI(01000)|PResetPRG(0FFF80000)|C_1,C_2,C,C$*,D*,P,PIntPRG,W*(0FFF81000)|FIXEDVECT(0FFFFFFD0)] [B|SKIPDEPENDENCY|1] -" 5 -[EXCLUDED_FILES_Blinky] -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\apps\httpd\http-strings.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd-fs.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\psock.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\timer.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\uip.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\uip_arp.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\BlockQ.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\blocktim.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\death.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\flash.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\flop.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\GenQTest.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\integer.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\IntQueue.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\PollQ.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\QPeek.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\recmutex.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\semtest.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\HighFrequencyTimerTest.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\IntQueueTimer.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\main-full.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\uIP_Task.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\webserver\EMAC.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\webserver\httpd-cgi.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\webserver\httpd-fsdata.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\webserver\phy.c" -[LINKAGE_ORDER_Blinky] -[GENERAL_DATA_CONFIGURATION_Blinky] -[OPTIONS_Debug_Renesas OptLinker] -"Single Shot" "0ea704954600dc10" 5 -[OPTIONS_Debug_Renesas RX Assembler] -"Assembly source file" "0668bc424600dc10" 4 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\Renesas-Files\lowlvl.src" "0668bc424600dc10" 4 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\Renesas\RX600\port_asm.src" "0668bc424600dc10" 4 -"Linkage symbol file" "0668bc424600dc10" 4 -[OPTIONS_Debug_Renesas RX C/C++ Compiler] -"C source file" "0668bc424600dc10" 3 -"C++ source file" "0668bc424600dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\BlockQ.c" "0668bc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\GenQTest.c" "0668bc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\IntQueue.c" "0668bc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\PollQ.c" "0668bc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\QPeek.c" "0668bc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\blocktim.c" "0668bc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\death.c" "0668bc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\flash.c" "0668bc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\flop.c" "0668bc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\integer.c" "0668bc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\recmutex.c" "0668bc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\semtest.c" "0668bc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\apps\httpd\http-strings.c" "0668bc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd-fs.c" "0668bc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd.c" "0668bc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\psock.c" "0668bc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\timer.c" "0668bc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\uip.c" "0668bc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\uip_arp.c" "0668bc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\HighFrequencyTimerTest.c" "0668bc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\IntQueueTimer.c" "0668bc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\ParTest.c" "0668bc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\Renesas-Files\dbsct.c" "0668bc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\Renesas-Files\hwsetup.c" "0668bc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\Renesas-Files\intprg.c" "0668bc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\Renesas-Files\lowsrc.c" "0668bc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\Renesas-Files\resetprg.c" "0668bc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\Renesas-Files\sbrk.c" "0668bc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\Renesas-Files\vecttbl.c" "0668bc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\main-blinky.c" "0668bc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\main-full.c" "0668bc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\uIP_Task.c" "0668bc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\webserver\EMAC.c" "0668bc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\webserver\httpd-cgi.c" "0668bc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\webserver\httpd-fsdata.c" "0668bc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\webserver\phy.c" "0668bc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\list.c" "0668bc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\MemMang\heap_2.c" "0668bc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\Renesas\RX600\port.c" "0668bc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\queue.c" "0668bc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\tasks.c" "0668bc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\timers.c" "0668bc424600dc10" 3 -[OPTIONS_Debug_Renesas RX C/C++ Library Generator] -"Single Shot" "0668bc424600dc10" 1 -[OPTIONS_Debug_Renesas RX Configurator] -"Single Shot" "050ddc424600dc10" 6 -[OPTIONS_Debug] -"" 0 -"[V|VERSION|1] [B|COMMAND|1] [S|SPEC|UITRON4] [S|OUTPUTPATH|^"$(CONFIGDIR)^"] [S|CPU|RX600] [S|ENDIAN|LITTLE] [S|FINT_REGISTER|0]" 6 -"[V|VERSION|1] [B|SJIS|1] [B|DEBUG|1] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(FILELEAF).obj^"] [S|CPU|RX600] [S|BASE|00000000=NONE] -" 4 -"[V|VERSION|1] [S|LANG|C99] [B|SJIS|1] [S|INCLUDE|^"$(PROJDIR)\..\..\..\Source\portable\Renesas\RX600^"|^"$(PROJDIR)\..\..\..\Source\include^"|^"$(PROJDIR)\.^"|^"$(PROJDIR)\..\..\include^"|^"$(PROJDIR)\..\..\Common\include^"|^"$(PROJDIR)\.\include^"|^"$(PROJDIR)\..\..\Common\ethernet\FreeTCPIP^"|^"$(PROJDIR)\webserver^"] [S|CHANGE_MESSAGE|INFORMATION|] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(FILELEAF).obj^"] [B|DEBUG|1] [S|OPTIMIZE|0] [B|SIZE|1] [B|MAP|0] [I|INLINE|100] [I|LOOP|2] [S|MISRA2004_CHECK_RULE|ALL] [S|MISRA2004_RULE|1.1|3.4|4.1|5.2|5.3|5.4|5.5|5.6|5.7|6.1|6.2|6.3|6.4|6.5|7.1|8.1|8.2|8.3|8.5|8.6|8.7|8.8|8.11|8.12|9.2|9.3|10.1|10.2|10.3|10.4|10.5|10.6|11.1|11.2|11.3|11.4|11.5|12.1|12.2|12.3|12.4|12.5|12.6|12.7|12.8|12.9|12.10|12.11|12.12|12.13|13.1|13.2|13.3|13.4|13.7|14.1|14.2|14.3|14.4|14.5|14.6|14.7|14.8|14.9|14.10|15.1|15.2|15.3|15.4|15.5|16.1|16.2|16.3|16.4|16.5|16.6|16.8|16.9|17.3|17.4|17.5|17.6|18.1|18.2|18.4|19.1|20.2|20.4|20.5|20.7|20.8|20.9|20.10|20.11|20.12] [S|MISRA1998_CHECK_RULE|ALL] [S|MISRA1998_RULE|1|5|8|12|13|14|17|18|19|20|21|22|24|28|29|31|32|33|34|35|36|37|38|39|40|42|43|44|45|46|48|49|50|51|53|54|55|56|57|58|59|60|61|62|63|64|65|68|69|70|71|72|73|74|75|76|77|78|79|80|82|83|84|85|99|101|102|103|104|105|106|108|110|111|112|113|115|118|119|121|122|123|124|125|126|127] [S|MISRA_GROUP_FILE_PATH|^"$(PROJDIR)\$(PROJECTNAME).rde^"] [S|CPU|RX600] [S|BASE|00000000=NONE] -" 3 -"[V|VERSION|1] [S|LANG|CPP] [B|SJIS|1] [S|INCLUDE|^"$(PROJDIR)\..\..\..\Source\portable\Renesas\RX600^"|^"$(PROJDIR)\..\..\..\Source\include^"|^"$(PROJDIR)\.^"|^"$(PROJDIR)\..\..\include^"|^"$(PROJDIR)\..\..\Common\include^"|^"$(PROJDIR)\.\include^"|^"$(PROJDIR)\..\..\Common\ethernet\FreeTCPIP^"|^"$(PROJDIR)\webserver^"] [S|CHANGE_MESSAGE|INFORMATION|] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(FILELEAF).obj^"] [B|DEBUG|1] [S|OPTIMIZE|0] [B|SIZE|1] [B|MAP|0] [I|INLINE|100] [I|LOOP|2] [S|MISRA2004_CHECK_RULE|ALL] [S|MISRA2004_RULE|1.1|3.4|4.1|5.2|5.3|5.4|5.5|5.6|5.7|6.1|6.2|6.3|6.4|6.5|7.1|8.1|8.2|8.3|8.5|8.6|8.7|8.8|8.11|8.12|9.2|9.3|10.1|10.2|10.3|10.4|10.5|10.6|11.1|11.2|11.3|11.4|11.5|12.1|12.2|12.3|12.4|12.5|12.6|12.7|12.8|12.9|12.10|12.11|12.12|12.13|13.1|13.2|13.3|13.4|13.7|14.1|14.2|14.3|14.4|14.5|14.6|14.7|14.8|14.9|14.10|15.1|15.2|15.3|15.4|15.5|16.1|16.2|16.3|16.4|16.5|16.6|16.8|16.9|17.3|17.4|17.5|17.6|18.1|18.2|18.4|19.1|20.2|20.4|20.5|20.7|20.8|20.9|20.10|20.11|20.12] [S|MISRA1998_CHECK_RULE|ALL] [S|MISRA1998_RULE|1|5|8|12|13|14|17|18|19|20|21|22|24|28|29|31|32|33|34|35|36|37|38|39|40|42|43|44|45|46|48|49|50|51|53|54|55|56|57|58|59|60|61|62|63|64|65|68|69|70|71|72|73|74|75|76|77|78|79|80|82|83|84|85|99|101|102|103|104|105|106|108|110|111|112|113|115|118|119|121|122|123|124|125|126|127] [S|MISRA_GROUP_FILE_PATH|^"$(PROJDIR)\$(PROJECTNAME).rde^"] [S|CPU|RX600] [S|BASE|00000000=NONE] -" 2 -"[V|VERSION|1] [S|MODE|BUILD/CHANGED] [S|EXISTOUTPUTPATH|^"$(CONFIGDIR)\$(PROJECTNAME).lib^"] [B|RUNTIME|1] [B|MATH|1] [B|STDIO|1] [B|STDLIB|1] [B|STRING|1] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(PROJECTNAME).lib^"] [B|SIZE|1] [I|INLINE|100] [I|LOOP|2] [S|CPU|RX600] [S|BASE|00000000=NONE] -" 1 -"[V|VERSION|6] [S|PRELINK|SKIP] [S|FORM|STYPE] [S|BYTE_COUNT_VALUE|FF] [B|DEBUG|1] [S|ROM|(D,R)|(D_1,R_1)|(D_2,R_2)] [S|CRC|NONE|DEFAULT|00000000] [B|LIST|1] [S|LIST|^"$(CONFIGDIR)\$(PROJECTNAME).map^"] [S|SHOW|METHODALL|] [S|OUTPUT|^"$(CONFIGDIR)\$(PROJECTNAME).mot^"] [I|SPACE|^"FF^"] [B|OPTIMIZE|0] [S|START|B_RX_DESC,B_TX_DESC,B_ETHERNET_BUFFERS,B_1,R_1,B_2,R_2,B,R,SU,SI(01000)|PResetPRG(0FFF80000)|C_1,C_2,C,L*,C$*,D*,P,PIntPRG,W*(0FFF81000)|FIXEDVECT(0FFFFFFD0)] -" 5 -[EXCLUDED_FILES_Debug] -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\main-blinky.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\Renesas-Files\lowlvl.src" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\Renesas-Files\lowsrc.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\webserver\httpd-fsdata.c" -[LINKAGE_ORDER_Debug] -[GENERAL_DATA_CONFIGURATION_Debug] -[OPTIONS_Debug_RX600_E1_E20_SYSTEM_Renesas OptLinker] -"Single Shot" "0668bc424600dc10" 5 -[OPTIONS_Debug_RX600_E1_E20_SYSTEM_Renesas RX Assembler] -"Assembly source file" "0668bc424600dc10" 4 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\Renesas-Files\lowlvl.src" "0668bc424600dc10" 4 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\Renesas\RX600\port_asm.src" "0668bc424600dc10" 4 -"Linkage symbol file" "0668bc424600dc10" 4 -[OPTIONS_Debug_RX600_E1_E20_SYSTEM_Renesas RX C/C++ Compiler] -"C source file" "06519c424600dc10" 3 -"C++ source file" "06519c424600dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\BlockQ.c" "06519c424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\GenQTest.c" "06519c424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\IntQueue.c" "06519c424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\PollQ.c" "06519c424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\QPeek.c" "06519c424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\blocktim.c" "06519c424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\death.c" "06519c424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\flash.c" "06519c424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\flop.c" "06519c424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\integer.c" "06519c424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\recmutex.c" "06519c424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\semtest.c" "06519c424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\apps\httpd\http-strings.c" "06519c424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd-fs.c" "06519c424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd.c" "06519c424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\psock.c" "06519c424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\timer.c" "06519c424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\uip.c" "06519c424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\uip_arp.c" "06519c424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\HighFrequencyTimerTest.c" "06519c424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\IntQueueTimer.c" "06519c424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\ParTest.c" "06519c424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\Renesas-Files\dbsct.c" "06519c424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\Renesas-Files\hwsetup.c" "06519c424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\Renesas-Files\intprg.c" "06519c424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\Renesas-Files\lowsrc.c" "06519c424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\Renesas-Files\resetprg.c" "06519c424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\Renesas-Files\sbrk.c" "06519c424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\Renesas-Files\vecttbl.c" "06519c424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\main-blinky.c" "06519c424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\main-full.c" "06519c424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\uIP_Task.c" "06519c424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\webserver\EMAC.c" "06519c424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\webserver\httpd-cgi.c" "06519c424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\webserver\httpd-fsdata.c" "06519c424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\webserver\phy.c" "06519c424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\list.c" "06519c424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\MemMang\heap_2.c" "06519c424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\Renesas\RX600\port.c" "06519c424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\queue.c" "06519c424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\tasks.c" "06519c424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\timers.c" "06519c424600dc10" 3 -[OPTIONS_Debug_RX600_E1_E20_SYSTEM_Renesas RX C/C++ Library Generator] -"Single Shot" "06519c424600dc10" 1 -[OPTIONS_Debug_RX600_E1_E20_SYSTEM_Renesas RX Configurator] -"Single Shot" "0668bc424600dc10" 6 -[OPTIONS_Debug_RX600_E1_E20_SYSTEM] -"" 0 -"[S|OUTPUTPATH|^"$(CONFIGDIR)\$(PROJECTNAME).lib^"] [V|VERSION|1] [S|CPU|RX600] [S|ENDIAN|LITTLE] [S|ROUND|NEAREST] [S|DBL_SIZE|4] [B|SIGNED_CHAR|0] [B|SIGNED_BITFIELD|0] [S|BIT_ORDER|RIGHT] [S|FINT_REGISTER|0] [S|BRANCH|24] [S|LANG|C] [B|RUNTIME|1] [B|CTYPE|0] [B|MATH|0] [B|MATHF|0] [B|STDARG|0] [B|STDIO|0] [B|STDLIB|0] [B|STRING|0] [B|IOS|0] [B|NEW|1] [B|COMPLEX|0] [B|CPPSTRING|0] [S|MODE|BUILD/CHANGED]" 1 -"[V|VERSION|1] [B|COMMAND|1] [S|SPEC|UITRON4] [S|OUTPUTPATH|^"$(CONFIGDIR)^"] [S|CPU|RX600] [S|ENDIAN|LITTLE] [S|FINT_REGISTER|0]" 6 -"[V|VERSION|1] [B|DEBUG|1] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(FILELEAF).obj^"] [B|LISTFILE|0] [S|CPU|RX600] [S|ENDIAN|LITTLE] [S|FINT_REGISTER|0]" 4 -"[V|VERSION|1] [S|LANG|CPP] [B|SJIS|1] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(FILELEAF).obj^"] [B|DEBUG|1] [B|SIZE|1] [B|MAP|0] [I|INLINE|100] [I|LOOP|2] [S|MISRA2004_CHECK_RULE|ALL] [S|MISRA2004_RULE|1.1|3.4|4.1|5.2|5.3|5.4|5.5|5.6|5.7|6.1|6.2|6.3|6.4|6.5|7.1|8.1|8.2|8.3|8.5|8.6|8.7|8.8|8.11|8.12|9.2|9.3|10.1|10.2|10.3|10.4|10.5|10.6|11.1|11.2|11.3|11.4|11.5|12.1|12.2|12.3|12.4|12.5|12.6|12.7|12.8|12.9|12.10|12.11|12.12|12.13|13.1|13.2|13.3|13.4|13.7|14.1|14.2|14.3|14.4|14.5|14.6|14.7|14.8|14.9|14.10|15.1|15.2|15.3|15.4|15.5|16.1|16.2|16.3|16.4|16.5|16.6|16.8|16.9|17.3|17.4|17.5|17.6|18.1|18.2|18.4|19.1|20.2|20.4|20.5|20.7|20.8|20.9|20.10|20.11|20.12] [S|MISRA1998_CHECK_RULE|ALL] [S|MISRA1998_RULE|1|5|8|12|13|14|17|18|19|20|21|22|24|28|29|31|32|33|34|35|36|37|38|39|40|42|43|44|45|46|48|49|50|51|53|54|55|56|57|58|59|60|61|62|63|64|65|68|69|70|71|72|73|74|75|76|77|78|79|80|82|83|84|85|99|101|102|103|104|105|106|108|110|111|112|113|115|118|119|121|122|123|124|125|126|127] [S|MISRA_GROUP_FILE_PATH|^"$(PROJDIR)\$(PROJECTNAME).rde^"] [S|CPU|RX600] [S|BASE|00000000=NONE] -" 2 -"[V|VERSION|1] [S|LANG|C] [B|SJIS|1] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(FILELEAF).obj^"] [B|DEBUG|1] [B|SIZE|1] [B|MAP|0] [I|INLINE|100] [I|LOOP|2] [S|MISRA2004_CHECK_RULE|ALL] [S|MISRA2004_RULE|1.1|3.4|4.1|5.2|5.3|5.4|5.5|5.6|5.7|6.1|6.2|6.3|6.4|6.5|7.1|8.1|8.2|8.3|8.5|8.6|8.7|8.8|8.11|8.12|9.2|9.3|10.1|10.2|10.3|10.4|10.5|10.6|11.1|11.2|11.3|11.4|11.5|12.1|12.2|12.3|12.4|12.5|12.6|12.7|12.8|12.9|12.10|12.11|12.12|12.13|13.1|13.2|13.3|13.4|13.7|14.1|14.2|14.3|14.4|14.5|14.6|14.7|14.8|14.9|14.10|15.1|15.2|15.3|15.4|15.5|16.1|16.2|16.3|16.4|16.5|16.6|16.8|16.9|17.3|17.4|17.5|17.6|18.1|18.2|18.4|19.1|20.2|20.4|20.5|20.7|20.8|20.9|20.10|20.11|20.12] [S|MISRA1998_CHECK_RULE|ALL] [S|MISRA1998_RULE|1|5|8|12|13|14|17|18|19|20|21|22|24|28|29|31|32|33|34|35|36|37|38|39|40|42|43|44|45|46|48|49|50|51|53|54|55|56|57|58|59|60|61|62|63|64|65|68|69|70|71|72|73|74|75|76|77|78|79|80|82|83|84|85|99|101|102|103|104|105|106|108|110|111|112|113|115|118|119|121|122|123|124|125|126|127] [S|MISRA_GROUP_FILE_PATH|^"$(PROJDIR)\$(PROJECTNAME).rde^"] [S|CPU|RX600] [S|BASE|00000000=NONE] -" 3 -"[V|VERSION|6] [B|DEBUG|1] [S|OUTPUT|^"$(CONFIGDIR)\$(PROJECTNAME).abs^"] [B|LIST|1] [S|LIST|^"$(CONFIGDIR)\$(PROJECTNAME).map^"] [B|OPTIMIZE|0] [S|ROM|(D,R)|(D_1,R_1)|(D_2,R_2)] [S|FORM|STYPE] [S|OUTPUT|^"$(CONFIGDIR)\$(PROJECTNAME).mot^"] [S|START|B_1,R_1,B_2,R_2,B,R,SU,SI(1000)|PResetPRG(FFFF8000)|C_1,C_2,C,C$*,D*,P,PIntPRG,W*(FFFF8100)|FIXEDVECT(FFFFFFD0)] [S|ENDIAN|LITTLE]" 5 -[EXCLUDED_FILES_Debug_RX600_E1_E20_SYSTEM] -[LINKAGE_ORDER_Debug_RX600_E1_E20_SYSTEM] -[GENERAL_DATA_CONFIGURATION_Debug_RX600_E1_E20_SYSTEM] -[OPTIONS_Debug_with_optimisation_Renesas OptLinker] -"Single Shot" "052b2d424600dc10" 5 -[OPTIONS_Debug_with_optimisation_Renesas RX Assembler] -"Assembly source file" "052b2d424600dc10" 4 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\Renesas-Files\lowlvl.src" "052b2d424600dc10" 4 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\Renesas\RX600\port_asm.src" "052b2d424600dc10" 4 -"Linkage symbol file" "052b2d424600dc10" 4 -[OPTIONS_Debug_with_optimisation_Renesas RX C/C++ Compiler] -"C source file" "05140d424600dc10" 3 -"C++ source file" "05140d424600dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\BlockQ.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\GenQTest.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\IntQueue.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\PollQ.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\QPeek.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\blocktim.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\death.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\flash.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\flop.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\integer.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\recmutex.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\semtest.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\apps\httpd\http-strings.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd-fs.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\psock.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\timer.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\uip.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\uip_arp.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\HighFrequencyTimerTest.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\IntQueueTimer.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\ParTest.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\Renesas-Files\dbsct.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\Renesas-Files\hwsetup.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\Renesas-Files\intprg.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\Renesas-Files\lowsrc.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\Renesas-Files\resetprg.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\Renesas-Files\sbrk.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\Renesas-Files\vecttbl.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\main-blinky.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\main-full.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\uIP_Task.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\webserver\EMAC.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\webserver\httpd-cgi.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\webserver\httpd-fsdata.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\webserver\phy.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\list.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\MemMang\heap_2.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\Renesas\RX600\port.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\queue.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\tasks.c" "05140d424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\timers.c" "05140d424600dc10" 3 -[OPTIONS_Debug_with_optimisation_Renesas RX C/C++ Library Generator] -"Single Shot" "05140d424600dc10" 1 -[OPTIONS_Debug_with_optimisation_Renesas RX Configurator] -"Single Shot" "052b2d424600dc10" 6 -[OPTIONS_Debug_with_optimisation] -"" 0 -"[V|VERSION|1] [B|COMMAND|1] [S|SPEC|UITRON4] [S|OUTPUTPATH|^"$(CONFIGDIR)^"] [S|CPU|RX600] [S|ENDIAN|LITTLE] [S|FINT_REGISTER|0]" 6 -"[V|VERSION|1] [B|SJIS|1] [B|DEBUG|1] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(FILELEAF).obj^"] [S|CPU|RX600] [S|BASE|00000000=NONE] [B|SKIPDEPENDENCY|1] -" 4 -"[V|VERSION|1] [S|LANG|CPP] [B|SJIS|1] [S|INCLUDE|^"$(PROJDIR)\..\..\..\Source\portable\Renesas\RX600^"|^"$(PROJDIR)\..\..\..\Source\include^"|^"$(PROJDIR)\.^"|^"$(PROJDIR)\..\..\include^"|^"$(PROJDIR)\..\..\Common\include^"|^"$(PROJDIR)\.\include^"|^"$(PROJDIR)\..\..\Common\ethernet\FreeTCPIP^"|^"$(PROJDIR)\webserver^"] [S|DEFINE|INCLUDE_HIGH_FREQUENCY_TIMER_TEST=1] [S|CHANGE_MESSAGE|INFORMATION|] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(FILELEAF).obj^"] [B|DEBUG|1] [S|OPTIMIZE|MAX] [B|SIZE|1] [B|MAP|1] [S|MAPPATH|^"$(CONFIGDIR)\$(PROJECTNAME).bls^"] [I|INLINE|100] [I|LOOP|2] [S|MISRA2004_CHECK_RULE|ALL] [S|MISRA2004_RULE|1.1|3.4|4.1|5.2|5.3|5.4|5.5|5.6|5.7|6.1|6.2|6.3|6.4|6.5|7.1|8.1|8.2|8.3|8.5|8.6|8.7|8.8|8.11|8.12|9.2|9.3|10.1|10.2|10.3|10.4|10.5|10.6|11.1|11.2|11.3|11.4|11.5|12.1|12.2|12.3|12.4|12.5|12.6|12.7|12.8|12.9|12.10|12.11|12.12|12.13|13.1|13.2|13.3|13.4|13.7|14.1|14.2|14.3|14.4|14.5|14.6|14.7|14.8|14.9|14.10|15.1|15.2|15.3|15.4|15.5|16.1|16.2|16.3|16.4|16.5|16.6|16.8|16.9|17.3|17.4|17.5|17.6|18.1|18.2|18.4|19.1|20.2|20.4|20.5|20.7|20.8|20.9|20.10|20.11|20.12] [S|MISRA1998_CHECK_RULE|ALL] [S|MISRA1998_RULE|1|5|8|12|13|14|17|18|19|20|21|22|24|28|29|31|32|33|34|35|36|37|38|39|40|42|43|44|45|46|48|49|50|51|53|54|55|56|57|58|59|60|61|62|63|64|65|68|69|70|71|72|73|74|75|76|77|78|79|80|82|83|84|85|99|101|102|103|104|105|106|108|110|111|112|113|115|118|119|121|122|123|124|125|126|127] [S|MISRA_GROUP_FILE_PATH|^"$(PROJDIR)\$(PROJECTNAME).rde^"] [S|CPU|RX600] [S|BASE|00000000=NONE] [B|SKIPDEPENDENCY|1] [N|DEPENDSCAN|1] -" 2 -"[V|VERSION|1] [S|LANG|C] [B|SJIS|1] [S|INCLUDE|^"$(PROJDIR)\..\..\..\Source\portable\Renesas\RX600^"|^"$(PROJDIR)\..\..\..\Source\include^"|^"$(PROJDIR)\.^"|^"$(PROJDIR)\..\..\include^"|^"$(PROJDIR)\..\..\Common\include^"|^"$(PROJDIR)\.\include^"|^"$(PROJDIR)\..\..\Common\ethernet\FreeTCPIP^"|^"$(PROJDIR)\webserver^"] [S|DEFINE|INCLUDE_HIGH_FREQUENCY_TIMER_TEST=1] [S|CHANGE_MESSAGE|INFORMATION|] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(FILELEAF).obj^"] [B|DEBUG|1] [S|OPTIMIZE|MAX] [B|SIZE|1] [B|MAP|1] [S|MAPPATH|^"$(CONFIGDIR)\$(PROJECTNAME).bls^"] [I|INLINE|100] [I|LOOP|2] [S|MISRA2004_CHECK_RULE|ALL] [S|MISRA2004_RULE|1.1|3.4|4.1|5.2|5.3|5.4|5.5|5.6|5.7|6.1|6.2|6.3|6.4|6.5|7.1|8.1|8.2|8.3|8.5|8.6|8.7|8.8|8.11|8.12|9.2|9.3|10.1|10.2|10.3|10.4|10.5|10.6|11.1|11.2|11.3|11.4|11.5|12.1|12.2|12.3|12.4|12.5|12.6|12.7|12.8|12.9|12.10|12.11|12.12|12.13|13.1|13.2|13.3|13.4|13.7|14.1|14.2|14.3|14.4|14.5|14.6|14.7|14.8|14.9|14.10|15.1|15.2|15.3|15.4|15.5|16.1|16.2|16.3|16.4|16.5|16.6|16.8|16.9|17.3|17.4|17.5|17.6|18.1|18.2|18.4|19.1|20.2|20.4|20.5|20.7|20.8|20.9|20.10|20.11|20.12] [S|MISRA1998_CHECK_RULE|ALL] [S|MISRA1998_RULE|1|5|8|12|13|14|17|18|19|20|21|22|24|28|29|31|32|33|34|35|36|37|38|39|40|42|43|44|45|46|48|49|50|51|53|54|55|56|57|58|59|60|61|62|63|64|65|68|69|70|71|72|73|74|75|76|77|78|79|80|82|83|84|85|99|101|102|103|104|105|106|108|110|111|112|113|115|118|119|121|122|123|124|125|126|127] [S|MISRA_GROUP_FILE_PATH|^"$(PROJDIR)\$(PROJECTNAME).rde^"] [S|CPU|RX600] [S|BASE|00000000=NONE] [B|SKIPDEPENDENCY|1] [N|DEPENDSCAN|1] -" 3 -"[V|VERSION|1] [S|MODE|BUILD/CHANGED] [S|EXISTOUTPUTPATH|^"$(CONFIGDIR)\$(PROJECTNAME).lib^"] [B|RUNTIME|1] [B|MATH|1] [B|STDIO|1] [B|STDLIB|1] [B|STRING|1] [B|NOFLOAT|1] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(PROJECTNAME).lib^"] [B|SIZE|1] [I|INLINE|100] [I|LOOP|2] [S|CPU|RX600] [S|BASE|00000000=NONE] [B|SKIPDEPENDENCY|1] -" 1 -"[V|VERSION|6] [S|FORM|STYPE] [S|BYTE_COUNT_VALUE|FF] [B|DEBUG|1] [S|ROM|(D,R)|(D_1,R_1)|(D_2,R_2)] [S|CRC|NONE|DEFAULT|00000000] [B|LIST|1] [S|LIST|^"$(CONFIGDIR)\$(PROJECTNAME).map^"] [S|SHOW|METHODCUSTOM|] [S|OUTPUT|^"$(CONFIGDIR)\$(PROJECTNAME).mot^"] [B|MAP|1] [S|MAPPATH|^"$(CONFIGDIR)\$(PROJECTNAME).bls^"] [I|SPACE|^"FF^"] [S|OPTIMIZEITEMS|SPEED] [S|START|B_RX_DESC,B_TX_DESC,B_ETHERNET_BUFFERS,B_1,R_1,B_2,R_2,B,R,SU,SI(01000)|PResetPRG(0FFF80000)|C_1,C_2,C,C$*,D*,P,PIntPRG,W*(0FFF81000)|FIXEDVECT(0FFFFFFD0)] [B|SKIPDEPENDENCY|1] -" 5 -[EXCLUDED_FILES_Debug_with_optimisation] -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\main-blinky.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\webserver\httpd-fsdata.c" -[LINKAGE_ORDER_Debug_with_optimisation] -[GENERAL_DATA_CONFIGURATION_Debug_with_optimisation] -[OPTIONS_SimDebug_RX600_Renesas OptLinker] -"Single Shot" "05140d424600dc10" 5 -[OPTIONS_SimDebug_RX600_Renesas RX Assembler] -"Assembly source file" "050ddc424600dc10" 4 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\Renesas-Files\lowlvl.src" "050ddc424600dc10" 4 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\Renesas\RX600\port_asm.src" "050ddc424600dc10" 4 -"Linkage symbol file" "050ddc424600dc10" 4 -[OPTIONS_SimDebug_RX600_Renesas RX C/C++ Compiler] -"C source file" "050ddc424600dc10" 3 -"C++ source file" "050ddc424600dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\BlockQ.c" "050ddc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\GenQTest.c" "050ddc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\IntQueue.c" "050ddc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\PollQ.c" "050ddc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\QPeek.c" "050ddc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\blocktim.c" "050ddc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\death.c" "050ddc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\flash.c" "050ddc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\flop.c" "050ddc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\integer.c" "050ddc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\recmutex.c" "050ddc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\semtest.c" "050ddc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\apps\httpd\http-strings.c" "050ddc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd-fs.c" "050ddc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd.c" "050ddc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\psock.c" "050ddc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\timer.c" "050ddc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\uip.c" "050ddc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\uip_arp.c" "050ddc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\HighFrequencyTimerTest.c" "050ddc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\IntQueueTimer.c" "050ddc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\ParTest.c" "050ddc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\Renesas-Files\dbsct.c" "050ddc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\Renesas-Files\hwsetup.c" "050ddc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\Renesas-Files\intprg.c" "050ddc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\Renesas-Files\lowsrc.c" "050ddc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\Renesas-Files\resetprg.c" "050ddc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\Renesas-Files\sbrk.c" "050ddc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\Renesas-Files\vecttbl.c" "050ddc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\main-blinky.c" "050ddc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\main-full.c" "050ddc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\uIP_Task.c" "050ddc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\webserver\EMAC.c" "050ddc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\webserver\httpd-cgi.c" "050ddc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\webserver\httpd-fsdata.c" "050ddc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\webserver\phy.c" "050ddc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\list.c" "050ddc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\MemMang\heap_2.c" "050ddc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\Renesas\RX600\port.c" "050ddc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\queue.c" "050ddc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\tasks.c" "050ddc424600dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\timers.c" "050ddc424600dc10" 3 -[OPTIONS_SimDebug_RX600_Renesas RX C/C++ Library Generator] -"Single Shot" "050ddc424600dc10" 1 -[OPTIONS_SimDebug_RX600_Renesas RX Configurator] -"Single Shot" "05140d424600dc10" 6 -[OPTIONS_SimDebug_RX600] -"" 0 -"[S|OUTPUTPATH|^"$(CONFIGDIR)\$(PROJECTNAME).lib^"] [V|VERSION|1] [S|CPU|RX600] [S|ENDIAN|LITTLE] [S|ROUND|NEAREST] [S|DBL_SIZE|4] [B|SIGNED_CHAR|0] [B|SIGNED_BITFIELD|0] [S|BIT_ORDER|RIGHT] [S|FINT_REGISTER|0] [S|BRANCH|24] [S|LANG|C] [B|RUNTIME|1] [B|CTYPE|0] [B|MATH|0] [B|MATHF|0] [B|STDARG|0] [B|STDIO|0] [B|STDLIB|0] [B|STRING|0] [B|IOS|0] [B|NEW|1] [B|COMPLEX|0] [B|CPPSTRING|0] [S|MODE|BUILD/CHANGED]" 1 -"[V|VERSION|1] [B|COMMAND|1] [S|SPEC|UITRON4] [S|OUTPUTPATH|^"$(CONFIGDIR)^"] [S|CPU|RX600] [S|ENDIAN|LITTLE] [S|FINT_REGISTER|0]" 6 -"[V|VERSION|1] [B|DEBUG|1] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(FILELEAF).obj^"] [B|LISTFILE|0] [S|CPU|RX600] [S|ENDIAN|LITTLE] [S|FINT_REGISTER|0]" 4 -"[V|VERSION|1] [S|LANG|CPP] [B|SJIS|1] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(FILELEAF).obj^"] [B|DEBUG|1] [B|SIZE|1] [B|MAP|0] [I|INLINE|100] [I|LOOP|2] [S|MISRA2004_CHECK_RULE|ALL] [S|MISRA2004_RULE|1.1|3.4|4.1|5.2|5.3|5.4|5.5|5.6|5.7|6.1|6.2|6.3|6.4|6.5|7.1|8.1|8.2|8.3|8.5|8.6|8.7|8.8|8.11|8.12|9.2|9.3|10.1|10.2|10.3|10.4|10.5|10.6|11.1|11.2|11.3|11.4|11.5|12.1|12.2|12.3|12.4|12.5|12.6|12.7|12.8|12.9|12.10|12.11|12.12|12.13|13.1|13.2|13.3|13.4|13.7|14.1|14.2|14.3|14.4|14.5|14.6|14.7|14.8|14.9|14.10|15.1|15.2|15.3|15.4|15.5|16.1|16.2|16.3|16.4|16.5|16.6|16.8|16.9|17.3|17.4|17.5|17.6|18.1|18.2|18.4|19.1|20.2|20.4|20.5|20.7|20.8|20.9|20.10|20.11|20.12] [S|MISRA1998_CHECK_RULE|ALL] [S|MISRA1998_RULE|1|5|8|12|13|14|17|18|19|20|21|22|24|28|29|31|32|33|34|35|36|37|38|39|40|42|43|44|45|46|48|49|50|51|53|54|55|56|57|58|59|60|61|62|63|64|65|68|69|70|71|72|73|74|75|76|77|78|79|80|82|83|84|85|99|101|102|103|104|105|106|108|110|111|112|113|115|118|119|121|122|123|124|125|126|127] [S|MISRA_GROUP_FILE_PATH|^"$(PROJDIR)\$(PROJECTNAME).rde^"] [S|CPU|RX600] [S|BASE|00000000=NONE] -" 2 -"[V|VERSION|1] [S|LANG|C] [B|SJIS|1] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(FILELEAF).obj^"] [B|DEBUG|1] [B|SIZE|1] [B|MAP|0] [I|INLINE|100] [I|LOOP|2] [S|MISRA2004_CHECK_RULE|ALL] [S|MISRA2004_RULE|1.1|3.4|4.1|5.2|5.3|5.4|5.5|5.6|5.7|6.1|6.2|6.3|6.4|6.5|7.1|8.1|8.2|8.3|8.5|8.6|8.7|8.8|8.11|8.12|9.2|9.3|10.1|10.2|10.3|10.4|10.5|10.6|11.1|11.2|11.3|11.4|11.5|12.1|12.2|12.3|12.4|12.5|12.6|12.7|12.8|12.9|12.10|12.11|12.12|12.13|13.1|13.2|13.3|13.4|13.7|14.1|14.2|14.3|14.4|14.5|14.6|14.7|14.8|14.9|14.10|15.1|15.2|15.3|15.4|15.5|16.1|16.2|16.3|16.4|16.5|16.6|16.8|16.9|17.3|17.4|17.5|17.6|18.1|18.2|18.4|19.1|20.2|20.4|20.5|20.7|20.8|20.9|20.10|20.11|20.12] [S|MISRA1998_CHECK_RULE|ALL] [S|MISRA1998_RULE|1|5|8|12|13|14|17|18|19|20|21|22|24|28|29|31|32|33|34|35|36|37|38|39|40|42|43|44|45|46|48|49|50|51|53|54|55|56|57|58|59|60|61|62|63|64|65|68|69|70|71|72|73|74|75|76|77|78|79|80|82|83|84|85|99|101|102|103|104|105|106|108|110|111|112|113|115|118|119|121|122|123|124|125|126|127] [S|MISRA_GROUP_FILE_PATH|^"$(PROJDIR)\$(PROJECTNAME).rde^"] [S|CPU|RX600] [S|BASE|00000000=NONE] -" 3 -"[V|VERSION|6] [B|DEBUG|1] [S|OUTPUT|^"$(CONFIGDIR)\$(PROJECTNAME).abs^"] [B|LIST|1] [S|LIST|^"$(CONFIGDIR)\$(PROJECTNAME).map^"] [B|OPTIMIZE|0] [S|ROM|(D,R)|(D_1,R_1)|(D_2,R_2)] [S|FORM|STYPE] [S|OUTPUT|^"$(CONFIGDIR)\$(PROJECTNAME).mot^"] [S|START|B_1,R_1,B_2,R_2,B,R,SU,SI(1000)|PResetPRG(FFFF8000)|C_1,C_2,C,C$*,D*,P,PIntPRG,W*(FFFF8100)|FIXEDVECT(FFFFFFD0)] [S|ENDIAN|LITTLE]" 5 -[EXCLUDED_FILES_SimDebug_RX600] -[LINKAGE_ORDER_SimDebug_RX600] -[GENERAL_DATA_CONFIGURATION_SimDebug_RX600] -[GENERAL_DATA_CONFIGURATION_SESSION_Blinky_DefaultSession] -[SESSION_DATA_CONFIGURATION_SESSION_Blinky_DefaultSession] -"MEMORY_MAPPING_OPTIONS" "" -[GENERAL_DATA_CONFIGURATION_SESSION_Blinky_SessionRX600_E1_E20_SYSTEM] -[SESSION_DATA_CONFIGURATION_SESSION_Blinky_SessionRX600_E1_E20_SYSTEM] -"MEMORY_MAPPING_OPTIONS" "Unknown Options" -[GENERAL_DATA_CONFIGURATION_SESSION_Blinky_SimSessionRX600] -[SESSION_DATA_CONFIGURATION_SESSION_Blinky_SimSessionRX600] -"MEMORY_MAPPING_OPTIONS" "[V|VERSION|1] [S|CPUTYPE|^"Other (RX600)^"] [S|MAP|^"0x00000000,0x0001FFFF,RAM,32,0101,2 0x00080000,0x000FFFFF,I/O,32,0101,2 0x00100000,0x00107FFF,ROM,32,0101,2 0x007F8000,0x007F9FFF,RAM,32,0101,2 0x007FC000,0x007FC4FF,I/O,32,0101,2 0x007FFC00,0x007FFFFF,I/O,32,0101,2 0x00E00000,0x00FFFFFF,ROM,32,0101,2 0xFEFFE000,0xFEFFFFFF,ROM,32,0101,2 0xFF7FC000,0xFF7FFFFF,ROM,32,0101,2 0xFFE00000,0xFFFFFFFF,ROM,32,0101,2^"] [S|RESOURCE|^"0x00000000,0x0001FFFF,R/W 0x00080000,0x000FFFFF,R/W 0x007FC000,0x007FC4FF,R/W 0x007FFC00,0x007FFFFF,R/W 0xFFFF8000,0xFFFFFFFF,R/W ^"] [B|SIMIOF|0] [I|SIMIOADR|0x0] [I|BUS_MODE|0] [S|ENDIAN|^"LITTLE^"] [S|PATCH|^"OFF^"]" -[GENERAL_DATA_CONFIGURATION_SESSION_Debug_DefaultSession] -[SESSION_DATA_CONFIGURATION_SESSION_Debug_DefaultSession] -"MEMORY_MAPPING_OPTIONS" "" -[GENERAL_DATA_CONFIGURATION_SESSION_Debug_SessionRX600_E1_E20_SYSTEM] -[SESSION_DATA_CONFIGURATION_SESSION_Debug_SessionRX600_E1_E20_SYSTEM] -"MEMORY_MAPPING_OPTIONS" "Unknown Options" -[GENERAL_DATA_CONFIGURATION_SESSION_Debug_SimSessionRX600] -[SESSION_DATA_CONFIGURATION_SESSION_Debug_SimSessionRX600] -"MEMORY_MAPPING_OPTIONS" "[V|VERSION|1] [S|CPUTYPE|^"Other (RX600)^"] [S|MAP|^"0x00000000,0x0001FFFF,RAM,32,0101,2 0x00080000,0x000FFFFF,I/O,32,0101,2 0x00100000,0x00107FFF,ROM,32,0101,2 0x007F8000,0x007F9FFF,RAM,32,0101,2 0x007FC000,0x007FC4FF,I/O,32,0101,2 0x007FFC00,0x007FFFFF,I/O,32,0101,2 0x00E00000,0x00FFFFFF,ROM,32,0101,2 0xFEFFE000,0xFEFFFFFF,ROM,32,0101,2 0xFF7FC000,0xFF7FFFFF,ROM,32,0101,2 0xFFE00000,0xFFFFFFFF,ROM,32,0101,2^"] [S|RESOURCE|^"0x00000000,0x0001FFFF,R/W 0x00080000,0x000FFFFF,R/W 0x007FC000,0x007FC4FF,R/W 0x007FFC00,0x007FFFFF,R/W 0xFFFF8000,0xFFFFFFFF,R/W ^"] [B|SIMIOF|0] [I|SIMIOADR|0x0] [I|BUS_MODE|0] [S|ENDIAN|^"LITTLE^"] [S|PATCH|^"OFF^"]" -[GENERAL_DATA_CONFIGURATION_SESSION_Debug_RX600_E1_E20_SYSTEM_DefaultSession] -[SESSION_DATA_CONFIGURATION_SESSION_Debug_RX600_E1_E20_SYSTEM_DefaultSession] -"MEMORY_MAPPING_OPTIONS" "" -[GENERAL_DATA_CONFIGURATION_SESSION_Debug_RX600_E1_E20_SYSTEM_SessionRX600_E1_E20_SYSTEM] -[SESSION_DATA_CONFIGURATION_SESSION_Debug_RX600_E1_E20_SYSTEM_SessionRX600_E1_E20_SYSTEM] -"MEMORY_MAPPING_OPTIONS" "Unknown Options" -[GENERAL_DATA_CONFIGURATION_SESSION_Debug_RX600_E1_E20_SYSTEM_SimSessionRX600] -[SESSION_DATA_CONFIGURATION_SESSION_Debug_RX600_E1_E20_SYSTEM_SimSessionRX600] -"MEMORY_MAPPING_OPTIONS" "[V|VERSION|1] [S|CPUTYPE|^"Other (RX600)^"] [S|MAP|^"0x00000000,0x0001FFFF,RAM,32,0101,2 0x00080000,0x000FFFFF,I/O,32,0101,2 0x00100000,0x00107FFF,ROM,32,0101,2 0x007F8000,0x007F9FFF,RAM,32,0101,2 0x007FC000,0x007FC4FF,I/O,32,0101,2 0x007FFC00,0x007FFFFF,I/O,32,0101,2 0x00E00000,0x00FFFFFF,ROM,32,0101,2 0xFEFFE000,0xFEFFFFFF,ROM,32,0101,2 0xFF7FC000,0xFF7FFFFF,ROM,32,0101,2 0xFFE00000,0xFFFFFFFF,ROM,32,0101,2^"] [S|RESOURCE|^"0x00000000,0x0001FFFF,R/W 0x00080000,0x000FFFFF,R/W 0x007FC000,0x007FC4FF,R/W 0x007FFC00,0x007FFFFF,R/W 0xFFFF8000,0xFFFFFFFF,R/W ^"] [B|SIMIOF|0] [I|SIMIOADR|0x0] [I|BUS_MODE|0] [S|ENDIAN|^"LITTLE^"] [S|PATCH|^"OFF^"]" -[GENERAL_DATA_CONFIGURATION_SESSION_Debug_with_optimisation_DefaultSession] -[SESSION_DATA_CONFIGURATION_SESSION_Debug_with_optimisation_DefaultSession] -"MEMORY_MAPPING_OPTIONS" "" -[GENERAL_DATA_CONFIGURATION_SESSION_Debug_with_optimisation_SessionRX600_E1_E20_SYSTEM] -[SESSION_DATA_CONFIGURATION_SESSION_Debug_with_optimisation_SessionRX600_E1_E20_SYSTEM] -"MEMORY_MAPPING_OPTIONS" "Unknown Options" -[GENERAL_DATA_CONFIGURATION_SESSION_Debug_with_optimisation_SimSessionRX600] -[SESSION_DATA_CONFIGURATION_SESSION_Debug_with_optimisation_SimSessionRX600] -"MEMORY_MAPPING_OPTIONS" "[V|VERSION|1] [S|CPUTYPE|^"Other (RX600)^"] [S|MAP|^"0x00000000,0x0001FFFF,RAM,32,0101,2 0x00080000,0x000FFFFF,I/O,32,0101,2 0x00100000,0x00107FFF,ROM,32,0101,2 0x007F8000,0x007F9FFF,RAM,32,0101,2 0x007FC000,0x007FC4FF,I/O,32,0101,2 0x007FFC00,0x007FFFFF,I/O,32,0101,2 0x00E00000,0x00FFFFFF,ROM,32,0101,2 0xFEFFE000,0xFEFFFFFF,ROM,32,0101,2 0xFF7FC000,0xFF7FFFFF,ROM,32,0101,2 0xFFE00000,0xFFFFFFFF,ROM,32,0101,2^"] [S|RESOURCE|^"0x00000000,0x0001FFFF,R/W 0x00080000,0x000FFFFF,R/W 0x007FC000,0x007FC4FF,R/W 0x007FFC00,0x007FFFFF,R/W 0xFFFF8000,0xFFFFFFFF,R/W ^"] [B|SIMIOF|0] [I|SIMIOADR|0x0] [I|BUS_MODE|0] [S|ENDIAN|^"LITTLE^"] [S|PATCH|^"OFF^"]" -[GENERAL_DATA_CONFIGURATION_SESSION_SimDebug_RX600_DefaultSession] -[SESSION_DATA_CONFIGURATION_SESSION_SimDebug_RX600_DefaultSession] -"MEMORY_MAPPING_OPTIONS" "" -[GENERAL_DATA_CONFIGURATION_SESSION_SimDebug_RX600_SessionRX600_E1_E20_SYSTEM] -[SESSION_DATA_CONFIGURATION_SESSION_SimDebug_RX600_SessionRX600_E1_E20_SYSTEM] -"MEMORY_MAPPING_OPTIONS" "Unknown Options" -[GENERAL_DATA_CONFIGURATION_SESSION_SimDebug_RX600_SimSessionRX600] -[SESSION_DATA_CONFIGURATION_SESSION_SimDebug_RX600_SimSessionRX600] -"MEMORY_MAPPING_OPTIONS" "[V|VERSION|1] [S|CPUTYPE|^"Other (RX600)^"] [S|MAP|^"0x00000000,0x0001FFFF,RAM,32,0101,2 0x00080000,0x000FFFFF,I/O,32,0101,2 0x00100000,0x00107FFF,ROM,32,0101,2 0x007F8000,0x007F9FFF,RAM,32,0101,2 0x007FC000,0x007FC4FF,I/O,32,0101,2 0x007FFC00,0x007FFFFF,I/O,32,0101,2 0x00E00000,0x00FFFFFF,ROM,32,0101,2 0xFEFFE000,0xFEFFFFFF,ROM,32,0101,2 0xFF7FC000,0xFF7FFFFF,ROM,32,0101,2 0xFFE00000,0xFFFFFFFF,ROM,32,0101,2^"] [S|RESOURCE|^"0x00000000,0x0001FFFF,R/W 0x00080000,0x000FFFFF,R/W 0x007FC000,0x007FC4FF,R/W 0x007FFC00,0x007FFFFF,R/W 0xFFFF8000,0xFFFFFFFF,R/W ^"] [B|SIMIOF|0] [I|SIMIOADR|0x0] [I|BUS_MODE|0] [S|ENDIAN|^"LITTLE^"] [S|PATCH|^"OFF^"]" -[EXT_DEBUGGER_INFO] -0 "" "" "" "" -[END] diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/RTOSDemo.nav b/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/RTOSDemo.nav deleted file mode 100644 index 8cb532f6e..000000000 Binary files a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/RTOSDemo.nav and /dev/null differ diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/RTOSDemo.tps b/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/RTOSDemo.tps deleted file mode 100644 index cd6a070f7..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/RTOSDemo.tps +++ /dev/null @@ -1,68 +0,0 @@ -[HIMDBVersion] -2.0 -[DATABASE_VERSION] -"1.1" -[SESSIONS_] -"DefaultSession" -"SessionRX600_E1_E20_SYSTEM" -"SimSessionRX600" -[CONFIGURATIONS] -"Blinky" -"Debug" -"Debug_RX600_E1_E20_SYSTEM" -"Debug_with_optimisation" -"SimDebug_RX600" -[CURRENT_CONFIGURATION] -"Debug" -[CURRENT_SESSION] -"SessionRX600_E1_E20_SYSTEM" -[GENERAL_DATA_PROJECT] -[GENERAL_DATA_CONFIGURATION_Blinky] -"PROJECT_FILES_MODIFIED_DATA_TAG" "FALSE" -[SESSIONS_Blinky] -"DefaultSession" -"SessionRX600_E1_E20_SYSTEM" -"SimSessionRX600" -[GENERAL_DATA_CONFIGURATION_Debug] -"PROJECT_FILES_MODIFIED_DATA_TAG" "FALSE" -[SESSIONS_Debug] -"DefaultSession" -"SessionRX600_E1_E20_SYSTEM" -"SimSessionRX600" -[GENERAL_DATA_CONFIGURATION_Debug_RX600_E1_E20_SYSTEM] -"PROJECT_FILES_MODIFIED_DATA_TAG" "TRUE" -[SESSIONS_Debug_RX600_E1_E20_SYSTEM] -"DefaultSession" -"SessionRX600_E1_E20_SYSTEM" -"SimSessionRX600" -[GENERAL_DATA_CONFIGURATION_Debug_with_optimisation] -"PROJECT_FILES_MODIFIED_DATA_TAG" "FALSE" -[SESSIONS_Debug_with_optimisation] -"DefaultSession" -"SessionRX600_E1_E20_SYSTEM" -"SimSessionRX600" -[GENERAL_DATA_CONFIGURATION_SimDebug_RX600] -"PROJECT_FILES_MODIFIED_DATA_TAG" "TRUE" -[SESSIONS_SimDebug_RX600] -"DefaultSession" -"SessionRX600_E1_E20_SYSTEM" -"SimSessionRX600" -[GENERAL_DATA_SESSION_SimSessionRX600] -[GENERAL_DATA_SESSION_DefaultSession] -[GENERAL_DATA_CONFIGURATION_SESSION_Debug_with_optimisation_SimSessionRX600] -[GENERAL_DATA_CONFIGURATION_SESSION_Debug_RX600_E1_E20_SYSTEM_SimSessionRX600] -[GENERAL_DATA_CONFIGURATION_SESSION_Blinky_SessionRX600_E1_E20_SYSTEM] -[GENERAL_DATA_CONFIGURATION_SESSION_Blinky_DefaultSession] -[GENERAL_DATA_CONFIGURATION_SESSION_Debug_RX600_E1_E20_SYSTEM_SessionRX600_E1_E20_SYSTEM] -[GENERAL_DATA_CONFIGURATION_SESSION_Debug_DefaultSession] -[GENERAL_DATA_CONFIGURATION_SESSION_SimDebug_RX600_SessionRX600_E1_E20_SYSTEM] -[GENERAL_DATA_CONFIGURATION_SESSION_Debug_RX600_E1_E20_SYSTEM_DefaultSession] -[GENERAL_DATA_CONFIGURATION_SESSION_SimDebug_RX600_DefaultSession] -[GENERAL_DATA_CONFIGURATION_SESSION_Debug_SessionRX600_E1_E20_SYSTEM] -[GENERAL_DATA_CONFIGURATION_SESSION_Debug_SimSessionRX600] -[GENERAL_DATA_CONFIGURATION_SESSION_SimDebug_RX600_SimSessionRX600] -[GENERAL_DATA_CONFIGURATION_SESSION_Debug_with_optimisation_DefaultSession] -[GENERAL_DATA_CONFIGURATION_SESSION_Blinky_SimSessionRX600] -[GENERAL_DATA_CONFIGURATION_SESSION_Debug_with_optimisation_SessionRX600_E1_E20_SYSTEM] -[GENERAL_DATA_SESSION_SessionRX600_E1_E20_SYSTEM] -[END] diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/Renesas-Files/dbsct.c b/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/Renesas-Files/dbsct.c deleted file mode 100644 index 156f0b8f3..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/Renesas-Files/dbsct.c +++ /dev/null @@ -1,66 +0,0 @@ -/***********************************************************************/ -/* */ -/* FILE :dbsct.c */ -/* DATE :Wed, Aug 11, 2010 */ -/* DESCRIPTION :Setting of B,R Section */ -/* CPU TYPE :Other */ -/* */ -/* This file is generated by Renesas Project Generator (Ver.4.50). */ -/* NOTE:THIS IS A TYPICAL EXAMPLE. */ -/* */ -/***********************************************************************/ - - -/********************************************************************* -* -* Device : RX -* -* File Name : dbsct.c -* -* Abstract : Setting of B,R Section. -* -* History : 1.00 (2009-08-07) -* -* NOTE : THIS IS A TYPICAL EXAMPLE. -* -* Copyright(c) 2009 Renesas Technology Corp. -* And Renesas Solutions Corp.,All Rights Reserved. -* -*********************************************************************/ - -#include "typedefine.h" - -#pragma unpack - -#pragma section C C$DSEC -extern const struct { - _UBYTE *rom_s; /* Start address of the initialized data section in ROM */ - _UBYTE *rom_e; /* End address of the initialized data section in ROM */ - _UBYTE *ram_s; /* Start address of the initialized data section in RAM */ -} _DTBL[] = { - { __sectop("D"), __secend("D"), __sectop("R") }, - { __sectop("D_2"), __secend("D_2"), __sectop("R_2") }, - { __sectop("D_1"), __secend("D_1"), __sectop("R_1") } -}; -#pragma section C C$BSEC -extern const struct { - _UBYTE *b_s; /* Start address of non-initialized data section */ - _UBYTE *b_e; /* End address of non-initialized data section */ -} _BTBL[] = { - { __sectop("B"), __secend("B") }, - { __sectop("B_2"), __secend("B_2") }, - { __sectop("B_1"), __secend("B_1") } -}; - -#pragma section - -/* -** CTBL prevents excessive output of L1100 messages when linking. -** Even if CTBL is deleted, the operation of the program does not change. -*/ -_UBYTE * const _CTBL[] = { - __sectop("C_1"), __sectop("C_2"), __sectop("C"), - __sectop("W_1"), __sectop("W_2"), __sectop("W") -}; - -#pragma packoption diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/Renesas-Files/hwsetup.c b/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/Renesas-Files/hwsetup.c deleted file mode 100644 index 94dd51f68..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/Renesas-Files/hwsetup.c +++ /dev/null @@ -1,229 +0,0 @@ -/****************************************************************************** -* DISCLAIMER - -* This software is supplied by Renesas Technology Corp. and is only -* intended for use with Renesas products. No other uses are authorized. - -* This software is owned by Renesas Technology Corp. and is protected under -* all applicable laws, including copyright laws. - -* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES -* REGARDING THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, -* INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A -* PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY -* DISCLAIMED. - -* TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS -* TECHNOLOGY CORP. NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE -* FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES -* FOR ANY REASON RELATED TO THE THIS SOFTWARE, EVEN IF RENESAS OR ITS -* AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - -* Renesas reserves the right, without notice, to make changes to this -* software and to discontinue the availability of this software. -* By using this software, you agree to the additional terms and -* conditions found by accessing the following link: -* http://www.renesas.com/disclaimer -****************************************************************************** -* Copyright (C) 2008. Renesas Technology Corp., All Rights Reserved. -******************************************************************************* -* File Name : hwsetup.c -* Version : 1.00 -* Description : Power up hardware initializations -****************************************************************************** -* History : DD.MM.YYYY Version Description -* : 15.02.2010 1.00 First Release -******************************************************************************/ - - -/****************************************************************************** -Includes , "Project Includes" -******************************************************************************/ -#include -#include "iodefine.h" -#include "r_ether.h" - -/****************************************************************************** -Typedef definitions -******************************************************************************/ - -/****************************************************************************** -Macro definitions -******************************************************************************/ - -/****************************************************************************** -Imported global variables and functions (from other files) -******************************************************************************/ - -/****************************************************************************** -Exported global variables and functions (to be accessed by other files) -******************************************************************************/ - -/****************************************************************************** -Private global variables and functions -******************************************************************************/ -void io_set_cpg(void); -void ConfigurePortPins(void); -void EnablePeripheralModules(void); - -/****************************************************************************** -* Function Name: HardwareSetup -* Description : This function does initial setting for CPG port pins used in -* : the Demo including the MII pins of the Ethernet PHY connection. -* Arguments : none -* Return Value : none -******************************************************************************/ -void HardwareSetup(void) -{ - /* CPG setting */ - io_set_cpg(); - - /* Setup the port pins */ - ConfigurePortPins(); - - /* Enables peripherals */ - EnablePeripheralModules(); - -#if INCLUDE_LCD == 1 - /* Initialize display */ - InitialiseDisplay(); -#endif -} - -/****************************************************************************** -* Function Name: EnablePeripheralModules -* Description : Enables Peripheral Modules before use -* Arguments : none -* Return Value : none -******************************************************************************/ -void EnablePeripheralModules(void) -{ - /* Module standby clear */ - SYSTEM.MSTPCRB.BIT.MSTPB15 = 0; /* EtherC, EDMAC */ - SYSTEM.MSTPCRA.BIT.MSTPA15 = 0; /* CMT0 */ -} - -/****************************************************************************** -* Function Name: ConfigurePortPins -* Description : Configures port pins. -* Arguments : none -* Return Value : none -******************************************************************************/ -void ConfigurePortPins(void) -{ -/* Port pins default to inputs. To ensure safe initialisation set the pin states -before changing the data direction registers. This will avoid any unintentional -state changes on the external ports. -Many peripheral modules will override the setting of the port registers. Ensure -that the state is safe for external devices if the internal peripheral module is -disabled or powered down. */ - - /* ==== MII/RMII Pins setting ==== */ - /*--------------------------------------*/ - /* Port Function Control Register */ - /*--------------------------------------*/ -#if ETH_MODE_SEL == ETH_MII_MODE - /* EE=1, PHYMODE=1, ENETE3=1, ENETE2=0, ENETE1=1, ENETE0=0 (Ethernet) */ - IOPORT.PFENET.BYTE = 0x9A; -#endif /* ETH_MODE_SEL */ -#if ETH_MODE_SEL == ETH_RMII_MODE - /* EE=1, PHYMODE=0, ENETE3=0, ENETE2=0, ENETE1=1, ENETE0=0 (Ethernet) */ - IOPORT.PFENET.BYTE = 0x82; -#endif /* ETH_MODE_SEL */ - /*-------------------------------------------*/ - /* Input Buffer Control Register (ICR) */ - /*-------------------------------------------*/ -#if ETH_MODE_SEL == ETH_MII_MODE - /* P54=1 Set ET_LINKSTA input */ - PORT5.ICR.BIT.B4 = 1; - /* P71=1 Set ET_MDIO input */ - PORT7.ICR.BIT.B1 = 1; - /* P74=1 Set ET_ERXD1 input */ - PORT7.ICR.BIT.B4 = 1; - /* P75=1 Set ET_ERXD0 input */ - PORT7.ICR.BIT.B5 = 1; - /* P76=1 Set ET_RX_CLK input */ - PORT7.ICR.BIT.B6 = 1; - /* P77=1 Set ET_RX_ER input */ - PORT7.ICR.BIT.B7 = 1; - /* P83=1 Set ET_CRS input */ - PORT8.ICR.BIT.B3 = 1; - /* PC0=1 Set ET_ERXD3 input */ - PORTC.ICR.BIT.B0 = 1; - /* PC1=1 Set ET_ERXD2 input */ - PORTC.ICR.BIT.B1 = 1; - /* PC2=1 Set ET_RX_DV input */ - PORTC.ICR.BIT.B2 = 1; - /* PC4=1 Set EX_TX_CLK input */ - PORTC.ICR.BIT.B4 = 1; - /* PC7=1 Set ET_COL input */ - PORTC.ICR.BIT.B7 = 1; -#endif /* ETH_MODE_SEL */ -#if ETH_MODE_SEL == ETH_RMII_MODE - /* P54=1 Set ET_LINKSTA input */ - PORT5.ICR.BIT.B4 = 1; - /* P71=1 Set ET_MDIO input */ - PORT7.ICR.BIT.B1 = 1; - /* P74=1 Set RMII_RXD1 input */ - PORT7.ICR.BIT.B4 = 1; - /* P75=1 Set RMII_RXD0 input */ - PORT7.ICR.BIT.B5 = 1; - /* P76=1 Set REF50CLK input */ - PORT7.ICR.BIT.B6 = 1; - /* P77=1 Set RMII_RX_ER input */ - PORT7.ICR.BIT.B7 = 1; - /* P83=1 Set RMII_CRS_DV input */ - PORT8.ICR.BIT.B3 = 1; -#endif /* ETH_MODE_SEL */ - - /* Configure LED 0-5 pin settings */ - PORT0.DR.BIT.B2 = 1; - PORT0.DR.BIT.B3 = 1; - PORT0.DR.BIT.B5 = 1; - PORT3.DR.BIT.B4 = 1; - PORT6.DR.BIT.B0 = 1; - PORT7.DR.BIT.B3 = 1; - PORT0.DDR.BIT.B2 = 1; - PORT0.DDR.BIT.B3 = 1; - PORT0.DDR.BIT.B5 = 1; - PORT3.DDR.BIT.B4 = 1; - PORT6.DDR.BIT.B0 = 1; - PORT7.DDR.BIT.B3 = 1; - - /* Configure SW 1-3 pin settings */ - PORT0.DDR.BIT.B0 = 0; - PORT0.DDR.BIT.B1 = 0; - PORT0.DDR.BIT.B7 = 0; - PORT0.ICR.BIT.B0 = 1; - PORT0.ICR.BIT.B1 = 1; - PORT0.ICR.BIT.B7 = 1; - -#if INCLUDE_LCD == 1 - /* Set LCD pins as outputs */ - /* LCD-RS */ - PORT8.DDR.BIT.B4 = 1; - /* LCD-EN */ - PORT8.DDR.BIT.B5 = 1; - /*LCD-data */ - PORT9.DDR.BYTE = 0xF0; -#endif -} - -/****************************************************************************** -* Function Name: io_set_cpg -* Description : Sets up operating speed -* Arguments : none -* Return Value : none -******************************************************************************/ -void io_set_cpg(void) -{ -/* Set CPU PLL operating frequencies. Changes to the peripheral clock will require -changes to the debugger and flash kernel BRR settings. */ - - /* ==== CPG setting ==== */ - SYSTEM.SCKCR.LONG = 0x00020100; /* Clockin = 12MHz */ - /* I Clock = 96MHz, B Clock = 24MHz, */ - /* P Clock = 48MHz */ - -} - diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/Renesas-Files/intprg.c b/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/Renesas-Files/intprg.c deleted file mode 100644 index b5ef3862f..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/Renesas-Files/intprg.c +++ /dev/null @@ -1,53 +0,0 @@ -/***********************************************************************/ -/* */ -/* FILE :intprg.c */ -/* DATE :Wed, Aug 11, 2010 */ -/* DESCRIPTION :Interrupt Program */ -/* CPU TYPE :Other */ -/* */ -/* This file is generated by Renesas Project Generator (Ver.4.50). */ -/* NOTE:THIS IS A TYPICAL EXAMPLE. */ -/* */ -/***********************************************************************/ - - - -/********************************************************************* -* -* Device : RX/RX600 -* -* File Name : intprg.c -* -* Abstract : Interrupt Program. -* -* History : 1.00 (2009-08-07) -* -* NOTE : THIS IS A TYPICAL EXAMPLE. -* -* Copyright(c) 2009 Renesas Technology Corp. -* And Renesas Solutions Corp.,All Rights Reserved. -* -*********************************************************************/ - -#include -#include "vect.h" -#pragma section IntPRG - -// Exception(Supervisor Instruction) -void Excep_SuperVisorInst(void){/* brk(); */} - -// Exception(Undefined Instruction) -void Excep_UndefinedInst(void){/* brk(); */} - -// Exception(Floating Point) -void Excep_FloatingPoint(void){/* brk(); */} - -// NMI -void NonMaskableInterrupt(void){/* brk(); */} - -// Dummy -void Dummy(void){/* brk(); */} - -// BRK -void Excep_BRK(void){ wait(); } - diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/Renesas-Files/lowlvl.src b/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/Renesas-Files/lowlvl.src deleted file mode 100644 index 70330dadd..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/Renesas-Files/lowlvl.src +++ /dev/null @@ -1,120 +0,0 @@ - -; Comment out the orginal code - .IF 0 - -;------------------------------------------------------------------------ -; | -; FILE :lowlvl.src | -; DATE :Wed, Jun 16, 2010 | -; DESCRIPTION :Program of Low level | -; CPU TYPE :Other | -; | -; This file is generated by Renesas Project Generator (Ver.4.50). | -; NOTE:THIS IS A TYPICAL EXAMPLE. | -; | -;------------------------------------------------------------------------ - - - .GLB _charput - .GLB _charget - -SIM_IO .EQU 0h - - .SECTION P,CODE -;----------------------------------------------------------------------- -; _charput: -;----------------------------------------------------------------------- -_charput: - MOV.L #IO_BUF,R2 - MOV.B R1,[R2] - MOV.L #1220000h,R1 - MOV.L #PARM,R3 - MOV.L R2,[R3] - MOV.L R3,R2 - MOV.L #SIM_IO,R3 - JSR R3 - RTS - -;----------------------------------------------------------------------- -; _charget: -;----------------------------------------------------------------------- -_charget: - MOV.L #1210000h,R1 - MOV.L #IO_BUF,R2 - MOV.L #PARM,R3 - MOV.L R2,[R3] - MOV.L R3,R2 - MOV.L #SIM_IO,R3 - JSR R3 - MOV.L #IO_BUF,R2 - MOVU.B [R2],R1 - RTS - -;----------------------------------------------------------------------- -; I/O Buffer -;----------------------------------------------------------------------- - .SECTION B,DATA,ALIGN=4 -PARM: .BLKL 1 - .SECTION B_1,DATA -IO_BUF: .BLKB 1 -; .END ; Commented out for conditional assembly - -; Code below is for debug console - .ELSE - -;----------------------------------------------------------------------- -; -; FILE :lowlvl.src -; DATE :Wed, Jul 01, 2009 -; DESCRIPTION :Program of Low level -; CPU TYPE :RX -; -;----------------------------------------------------------------------- - .GLB _charput - .GLB _charget - -FC2E0 .EQU 00084080h -FE2C0 .EQU 00084090h -DBGSTAT .EQU 000840C0h -RXFL0EN .EQU 00001000h -TXFL0EN .EQU 00000100h - - .SECTION P,CODE - -;----------------------------------------------------------------------- -; _charput: -;----------------------------------------------------------------------- -_charput: - .STACK _charput = 00000000h -__C2ESTART: MOV.L #TXFL0EN,R3 - MOV.L #DBGSTAT,R4 -__TXLOOP: MOV.L [R4],R5 - AND R3,R5 - BNZ __TXLOOP -__WRITEFC2E0: MOV.L #FC2E0,R2 - MOV.L R1,[R2] -__CHARPUTEXIT: RTS - -;----------------------------------------------------------------------- -; _charget: -;----------------------------------------------------------------------- -_charget: - .STACK _charget = 00000000h -__E2CSTART: MOV.L #RXFL0EN,R3 - MOV.L #DBGSTAT,R4 -__RXLOOP: MOV.L [R4],R5 - AND R3,R5 - BZ __RXLOOP -__READFE2C0: MOV.L #FE2C0,R2 - MOV.L [R2],R1 -__CHARGETEXIT: RTS - -;----------------------------------------------------------------------- - -; End of conditional code - .ENDIF - - .END - - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/Renesas-Files/lowsrc.c b/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/Renesas-Files/lowsrc.c deleted file mode 100644 index 2d02ccad9..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/Renesas-Files/lowsrc.c +++ /dev/null @@ -1,329 +0,0 @@ -/***********************************************************************/ -/* */ -/* FILE :lowsrc.c */ -/* DATE :Wed, Jun 16, 2010 */ -/* DESCRIPTION :Program of I/O Stream */ -/* CPU TYPE :Other */ -/* */ -/* This file is generated by Renesas Project Generator (Ver.4.50). */ -/* NOTE:THIS IS A TYPICAL EXAMPLE. */ -/* */ -/***********************************************************************/ - - - -/********************************************************************* -* -* Device : RX -* -* File Name : lowsrc.c -* -* Abstract : Program of I/O Stream. -* -* History : 1.00 (2009-08-07) -* -* NOTE : THIS IS A TYPICAL EXAMPLE. -* -* Copyright(c) 2009 Renesas Technology Corp. -* And Renesas Solutions Corp.,All Rights Reserved. -* -*********************************************************************/ - -#include -#include -#include -#include "lowsrc.h" - -/* file number */ -#define STDIN 0 /* Standard input (console) */ -#define STDOUT 1 /* Standard output (console) */ -#define STDERR 2 /* Standard error output (console) */ - -#define FLMIN 0 /* Minimum file number */ -#define _MOPENR 0x1 -#define _MOPENW 0x2 -#define _MOPENA 0x4 -#define _MTRUNC 0x8 -#define _MCREAT 0x10 -#define _MBIN 0x20 -#define _MEXCL 0x40 -#define _MALBUF 0x40 -#define _MALFIL 0x80 -#define _MEOF 0x100 -#define _MERR 0x200 -#define _MLBF 0x400 -#define _MNBF 0x800 -#define _MREAD 0x1000 -#define _MWRITE 0x2000 -#define _MBYTE 0x4000 -#define _MWIDE 0x8000 -/* File Flags */ -#define O_RDONLY 0x0001 /* Read only */ -#define O_WRONLY 0x0002 /* Write only */ -#define O_RDWR 0x0004 /* Both read and Write */ -#define O_CREAT 0x0008 /* A file is created if it is not existed */ -#define O_TRUNC 0x0010 /* The file size is changed to 0 if it is existed. */ -#define O_APPEND 0x0020 /* The position is set for next reading/writing */ - /* 0: Top of the file 1: End of file */ - -/* Special character code */ -#define CR 0x0d /* Carriage return */ -#define LF 0x0a /* Line feed */ - -#if defined( __RX ) -const long _nfiles = IOSTREAM; /* The number of files for input/output files */ -#else -const int _nfiles = IOSTREAM; /* The number of files for input/output files */ -#endif -char flmod[IOSTREAM]; /* The location for the mode of opened file. */ - -unsigned char sml_buf[IOSTREAM]; - -#define FPATH_STDIN "C:\\stdin" -#define FPATH_STDOUT "C:\\stdout" -#define FPATH_STDERR "C:\\stderr" - -/* H8 Normal mode ,SH and RX */ -#if defined( __2000N__ ) || defined( __2600N__ ) || defined( __300HN__ ) || defined( _SH ) -/* Output one character to standard output */ -extern void charput(char); -/* Input one character from standard input */ -extern char charget(void); -/* Output one character to the file */ -extern char fcharput(char, unsigned char); -/* Input one character from the file */ -extern char fcharget(char*, unsigned char); -/* Open the file */ -extern char fileopen(char*, unsigned char, unsigned char*); -/* Close the file */ -extern char fileclose(unsigned char); -/* Move the file offset */ -extern char fpseek(unsigned char, long, unsigned char); -/* Get the file offset */ -extern char fptell(unsigned char, long*); - -/* RX */ -#elif defined( __RX ) -/* Output one character to standard output */ -extern void charput(unsigned char); -/* Input one character from standard input */ -extern unsigned char charget(void); - -/* H8 Advanced mode */ -#elif defined( __2000A__ ) || defined( __2600A__ ) || defined( __300HA__ ) || defined( __H8SXN__ ) || defined( __H8SXA__ ) || defined( __H8SXM__ ) || defined( __H8SXX__ ) -/* Output one character to standard output */ -extern void charput(char); -/* Input one character from standard input */ -extern char charget(void); -/* Output one character to the file */ -extern char fcharput(char, unsigned char); -/* Input one character from the file */ -extern char fcharget(char*, unsigned char); -/* Open the file */ -/* Specified as the number of register which stored paramter is 3 */ -extern char __regparam3 fileopen(char*, unsigned char, unsigned char*); -/* Close the file */ -extern char fileclose(unsigned char); -/* Move the file offset */ -extern char fpseek(unsigned char, long, unsigned char); -/* Get the file offset */ -extern char fptell(unsigned char, long*); - -/* H8300 and H8300L */ -#elif defined( __300__ ) || defined( __300L__ ) -/* Output one character to standard output */ -extern void charput(char); -/* Input one character from standard input */ -extern char charget(void); -/* Output one character to the file */ -extern char fcharput(char, unsigned char); -/* Input one character from the file */ -extern char fcharget(char*, unsigned char); -/* Open the file */ -/* Specified as the number of register which stored paramter is 3 */ -extern char __regparam3 fileopen(char*, unsigned char, unsigned char*); -/* Close the file */ -extern char fileclose(unsigned char); -/* Move the file offset */ -/* Move the file offset */ -extern char __regparam3 fpseek(unsigned char, long, unsigned char); -/* Get the file offset */ -extern char fptell(unsigned char, long*); -#endif - -#include -FILE *_Files[IOSTREAM]; // structure for FILE -char *env_list[] = { // Array for environment variables(**environ) - "ENV1=temp01", - "ENV2=temp02", - "ENV9=end", - '\0' // Terminal for environment variables -}; - -char **environ = env_list; - -/****************************************************************************/ -/* _INIT_IOLIB */ -/* Initialize C library Functions, if necessary. */ -/* Define USES_SIMIO on Assembler Option. */ -/****************************************************************************/ -void _INIT_IOLIB( void ) -{ - /* A file for standard input/output is opened or created. Each FILE */ - /* structure members are initialized by the library. Each _Buf member */ - /* in it is re-set the end of buffer pointer. */ - - /* Standard Input File */ - if( freopen( FPATH_STDIN, "r", stdin ) == NULL ) - stdin->_Mode = 0xffff; /* Not allow the access if it fails to open */ - stdin->_Mode = _MOPENR; /* Read only attribute */ - stdin->_Mode |= _MNBF; /* Non-buffering for data */ - stdin->_Bend = stdin->_Buf + 1; /* Re-set pointer to the end of buffer */ - - /* Standard Output File */ - if( freopen( FPATH_STDOUT, "w", stdout ) == NULL ) - stdout->_Mode = 0xffff; /* Not allow the access if it fails to open */ - stdout->_Mode |= _MNBF; /* Non-buffering for data */ - stdout->_Bend = stdout->_Buf + 1;/* Re-set pointer to the end of buffer */ - - /* Standard Error File */ - if( freopen( FPATH_STDERR, "w", stderr ) == NULL ) - stderr->_Mode = 0xffff; /* Not allow the access if it fails to open */ - stderr->_Mode |= _MNBF; /* Non-buffering for data */ - stderr->_Bend = stderr->_Buf + 1;/* Re-set pointer to the end of buffer */ -} - -/****************************************************************************/ -/* _CLOSEALL */ -/****************************************************************************/ -void _CLOSEALL( void ) -{ - long i; - - for( i=0; i < _nfiles; i++ ) - { - /* Checks if the file is opened or not */ - if( _Files[i]->_Mode & (_MOPENR | _MOPENW | _MOPENA ) ) - fclose( _Files[i] ); /* Closes the file */ - } -} - -/**************************************************************************/ -/* open:file open */ -/* Return value:File number (Pass) */ -/* -1 (Failure) */ -/**************************************************************************/ -#if defined( __RX ) -long open(const char *name, /* File name */ - long mode, /* Open mode */ - long flg) /* Open flag */ -#else -int open(char *name, /* File name */ - int mode, /* Open mode */ - int flg) /* Open flag */ -#endif -{ - - - if( strcmp( name, FPATH_STDIN ) == 0 ) /* Standard Input file? */ - { - if( ( mode & O_RDONLY ) == 0 ) return -1; - flmod[STDIN] = mode; - return STDIN; - } - else if( strcmp( name, FPATH_STDOUT ) == 0 )/* Standard Output file? */ - { - if( ( mode & O_WRONLY ) == 0 ) return -1; - flmod[STDOUT] = mode; - return STDOUT; - } - else if(strcmp(name, FPATH_STDERR ) == 0 ) /* Standard Error file? */ - { - if( ( mode & O_WRONLY ) == 0 ) return -1; - flmod[STDERR] = mode; - return STDERR; - } - else return -1; /*Others */ -} - -#if defined( __RX ) -long close( long fileno ) -#else -int close( int fileno ) -#endif -{ - return 1; -} - -/**************************************************************************/ -/* write:Data write */ -/* Return value:Number of write characters (Pass) */ -/* -1 (Failure) */ -/**************************************************************************/ -#if defined( __RX ) -long write(long fileno, /* File number */ - const unsigned char *buf, /* The address of destination buffer */ - long count) /* The number of chacter to write */ -#else -int write(int fileno, /* File number */ - char *buf, /* The address of destination buffer */ - int count) /* The number of chacter to write */ -#endif -{ - long i; /* A variable for counter */ - unsigned char c; /* An output character */ - - /* Checking the mode of file , output each character */ - /* Checking the attribute for Write-Only, Read-Only or Read-Write */ - if(flmod[fileno]&O_WRONLY || flmod[fileno]&O_RDWR) - { - if( fileno == STDIN ) return -1; /* Standard Input */ - else if( (fileno == STDOUT) || (fileno == STDERR) ) - /* Standard Error/output */ - { - for( i = count; i > 0; --i ) - { - c = *buf++; - charput(c); - } - return count; /*Return the number of written characters */ - } - else return -1; /* Incorrect file number */ - } - else return -1; /* An error */ -} - -#if defined( __RX ) -long read( long fileno, unsigned char *buf, long count ) -#else -int read( int fileno, char *buf, unsigned int count ) -#endif -{ - long i; - - /* Checking the file mode with the file number, each character is input and stored the buffer */ - - if((flmod[fileno]&_MOPENR) || (flmod[fileno]&O_RDWR)){ - for(i = count; i > 0; i--){ - *buf = charget(); - if(*buf==CR){ /* Replace the new line character */ - *buf = LF; - } - buf++; - } - return count; - } - else { - return -1; - } -} - -#if defined( __RX ) -long lseek( long fileno, long offset, long base ) -#else -long lseek( int fileno, long offset, int base ) -#endif -{ - return -1L; -} - diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/Renesas-Files/resetprg.c b/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/Renesas-Files/resetprg.c deleted file mode 100644 index 0404ac406..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/Renesas-Files/resetprg.c +++ /dev/null @@ -1,129 +0,0 @@ -/***********************************************************************/ -/* */ -/* FILE :resetprg.c */ -/* DATE :Wed, Aug 11, 2010 */ -/* DESCRIPTION :Reset Program */ -/* CPU TYPE :Other */ -/* */ -/* This file is generated by Renesas Project Generator (Ver.4.50). */ -/* NOTE:THIS IS A TYPICAL EXAMPLE. */ -/* */ -/***********************************************************************/ - - - -/********************************************************************* -* -* Device : RX/RX600 -* -* File Name : resetprg.c -* -* Abstract : Reset Program. -* -* History : 1.00 (2009-08-07) -* -* NOTE : THIS IS A TYPICAL EXAMPLE. -* -* Copyright(c) 2009 Renesas Technology Corp. -* And Renesas Solutions Corp.,All Rights Reserved. -* -*********************************************************************/ - -#include -#include <_h_c_lib.h> -//#include // Remove the comment when you use errno -//#include // Remove the comment when you use rand() -#include "typedefine.h" -#include "stacksct.h" - -#pragma inline_asm Change_PSW_PM_to_UserMode -static void Change_PSW_PM_to_UserMode(void); - -#ifdef __cplusplus -extern "C" { -#endif -void PowerON_Reset_PC(void); -void main(void); -#ifdef __cplusplus -} -#endif - -#ifdef __cplusplus // Use SIM I/O -extern "C" { -#endif -extern void _INIT_IOLIB(void); -extern void _CLOSEALL(void); -#ifdef __cplusplus -} -#endif - -#define PSW_init 0x00010000 -#define FPSW_init 0x00000100 - -//extern void srand(_UINT); // Remove the comment when you use rand() -//extern _SBYTE *_s1ptr; // Remove the comment when you use strtok() - -//#ifdef __cplusplus // Use Hardware Setup -//extern "C" { -//#endif -//extern void HardwareSetup(void); -//#ifdef __cplusplus -//} -//#endif - -//#ifdef __cplusplus // Remove the comment when you use global class object -//extern "C" { // Sections C$INIT and C$END will be generated -//#endif -//extern void _CALL_INIT(void); -//extern void _CALL_END(void); -//#ifdef __cplusplus -//} -//#endif - -#pragma section ResetPRG - -#pragma entry PowerON_Reset_PC - -void PowerON_Reset_PC(void) -{ - set_intb((unsigned long)__sectop("C$VECT")); - set_fpsw(FPSW_init); - - _INITSCT(); - -// _INIT_IOLIB(); // Remove the comment when you use SIM I/O - -// errno=0; // Remove the comment when you use errno -// srand((_UINT)1); // Remove the comment when you use rand() -// _s1ptr=NULL; // Remove the comment when you use strtok() - -// HardwareSetup(); // Use Hardware Setup - nop(); - -// _CALL_INIT(); // Remove the comment when you use global class object - - set_psw(PSW_init); // Set Ubit & Ibit for PSW -// Change_PSW_PM_to_UserMode(); // DO NOT CHANGE TO USER MODE IF USING FREERTOS! - ( void ) Change_PSW_PM_to_UserMode; // Just to avoid compiler warnings. - - main(); - -// _CLOSEALL(); // Use SIM I/O - -// _CALL_END(); // Remove the comment when you use global class object - - brk(); -} - -static void Change_PSW_PM_to_UserMode(void) -{ - MVFC PSW,R1 - OR #00100000h,R1 - PUSH.L R1 - MVFC PC,R1 - ADD #10,R1 - PUSH.L R1 - RTE - NOP - NOP -} diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/Renesas-Files/sbrk.c b/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/Renesas-Files/sbrk.c deleted file mode 100644 index 98e5bcbeb..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/Renesas-Files/sbrk.c +++ /dev/null @@ -1,28 +0,0 @@ -#include -#include -#define HEAPSIZE 0x400 -signed char *sbrk( size_t size ); -union HEAP_TYPE -{ - signed long dummy; - signed char heap[HEAPSIZE]; -}; -static union HEAP_TYPE heap_area; - -/* End address allocated by sbrk */ -static signed char *brk = ( signed char * ) &heap_area; -signed char *sbrk( size_t size ) -{ - signed char *p; - if( brk + size > heap_area.heap + HEAPSIZE ) - { - p = ( signed char * ) - 1; - } - else - { - p = brk; - brk += size; - } - - return p; -} diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/Renesas-Files/vecttbl.c b/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/Renesas-Files/vecttbl.c deleted file mode 100644 index d2dec0b3b..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/Renesas-Files/vecttbl.c +++ /dev/null @@ -1,64 +0,0 @@ -/***********************************************************************/ -/* */ -/* FILE :vecttbl.c */ -/* DATE :Wed, Aug 11, 2010 */ -/* DESCRIPTION :Initialize of Vector Table */ -/* CPU TYPE :Other */ -/* */ -/* This file is generated by Renesas Project Generator (Ver.4.50). */ -/* NOTE:THIS IS A TYPICAL EXAMPLE. */ -/* */ -/***********************************************************************/ - - - -/********************************************************************* -* -* Device : RX/RX600 -* -* File Name : vecttbl.c -* -* Abstract : Initialize of Vector Table. -* -* History : 1.00 (2009-08-07) -* -* NOTE : THIS IS A TYPICAL EXAMPLE. -* -* Copyright(c) 2009 Renesas Technology Corp. -* And Renesas Solutions Corp.,All Rights Reserved. -* -*********************************************************************/ - -#include "vect.h" - -#pragma section C FIXEDVECT - -void* const Fixed_Vectors[] = { -//;0xffffffd0 Exception(Supervisor Instruction) - (void*) Excep_SuperVisorInst, -//;0xffffffd4 Reserved - Dummy, -//;0xffffffd8 Reserved - Dummy, -//;0xffffffdc Exception(Undefined Instruction) - (void*) Excep_UndefinedInst, -//;0xffffffe0 Reserved - Dummy, -//;0xffffffe4 Exception(Floating Point) - (void*) Excep_FloatingPoint, -//;0xffffffe8 Reserved - Dummy, -//;0xffffffec Reserved - Dummy, -//;0xfffffff0 Reserved - Dummy, -//;0xfffffff4 Reserved - Dummy, -//;0xfffffff8 NMI - (void*) NonMaskableInterrupt, -//;0xfffffffc RESET -//;<> -//;Power On Reset PC -PowerON_Reset_PC -//;<> -}; diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/SessionRX600_E1_E20_SYSTEM.hsf b/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/SessionRX600_E1_E20_SYSTEM.hsf deleted file mode 100644 index 2df9df16c..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/SessionRX600_E1_E20_SYSTEM.hsf +++ /dev/null @@ -1,464 +0,0 @@ -[HIMDBVersion] -2.0 -[DATABASE_VERSION] -"2.3" -[SESSION_DETAILS] -"" -[INFORMATION] -"" -[GENERAL_DATA] -"FIRST_CONNECTION_TAG" "NO" -"MRULABELS_DATAMANAGER_KEY" "108a|FFFFFFFF|00000000|1054|fff8cd9e|1050|fff8c484|88218|000870B4|000870AE|88204|88208|18b8" -"RESET_CPU_AFTER_DOWNLOAD_TAG" "VARIANT_TRUE_STORE_TAG" -"{228DB593-0AB2-4EBE-A098-A2CABF094E46}RamMonitorCtrlViews" "0" -"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapCtrlECX_MAP_FIND_SYMBOL_LIST" "" -"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapCtrlViews" "0" -"{2BA6A3EE-6488-11D5-80D4-00C04F68EAD7}ECXLABEL_ADDDLG_ADDR" "" -"{2BA6A3EE-6488-11D5-80D4-00C04F68EAD7}LabelCtrlSymbolFileDir" "" -"{2BA6A3EE-6488-11D5-80D4-00C04F68EAD7}LabelCtrlSymbolFileName" "" -"{2BA6A3EE-6488-11D5-80D4-00C04F68EAD7}LabelCtrlViews" "0" -"{2BA6A3EF-6488-11D5-80D4-00C04F68EAD7}StatusCtrlViews" "0" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlBatchFileName" "" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlBreakpointFlag" "-1 " -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlBreakpointStatus" "-1 " -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlBrowseDirectory" "" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlLogFileName" "" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlSplitterPosition" "242" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlViews" "1" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlWindowProperties" "17" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineWndInstanceKey0" "{WK_00000001_CmdLine}" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}TclTkCtrlLogFileName" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_COMPARE_END_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_COMPARE_START_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_DISPLAY_DEST_ADDRESS" "108a" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_DISPLAY_END_ADDRESS" "FFFFFFFF" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_DISPLAY_START_ADDRESS" "00000000" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_FILL_END_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_FILL_START_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_MOVE_END_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_MOVE_START_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_SEARCH_END_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_SEARCH_START_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_SET_DEST_ADDRESS" "000870B4" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_TEST_END_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_TEST_START_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryCtrlViews" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0AutoRefreshEnableTopPane" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0AutoRefreshIntervalTopPane" "100" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0DataLength" "4" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0DispAddressTopPane" "4180" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0DispCode" "42208" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0DispColumnCount" "4" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0IsDispCode" "1" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0IsDispFloat" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0IsDispLabel" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0IsDispRegister" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0IsRegFollowEnableTopPane" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0LabelWidth" "96" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0Radix" "16" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0RegFollowRegTblIDTopPane" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0RegisterWidth" "96" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0ScrollEndAddress" "-1" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0ScrollStartAddress" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewA0StartUpSymbolTopPane" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewAInstanceKey0" "{WK_00000001_MEMORY}RTOSDemoSessionRX600_E1_E20_SYSTEM" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0AutoRefreshEnableTopPane" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0AutoRefreshIntervalTopPane" "100" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0DataLength" "4" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0DispAddressTopPane" "4180" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0DispCode" "42208" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0DispColumnCount" "4" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0IsDispCode" "1" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0IsDispFloat" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0IsDispLabel" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0IsDispRegister" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0IsRegFollowEnableTopPane" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0LabelWidth" "96" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0Radix" "16" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0RegFollowRegTblIDTopPane" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0RegisterWidth" "96" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0ScrollEndAddress" "-1" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0ScrollStartAddress" "0" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewB0StartUpSymbolTopPane" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryWndViewBInstanceKey0" "{WK_00000001_MEMORY}RTOSDemoSessionRX600_E1_E20_SYSTEMViewB" -"{4F025ABC-BE66-4CB6-9CEE-06C61418278E}Trace2CtrlSaveFileDir" "" -"{4F025ABC-BE66-4CB6-9CEE-06C61418278E}Trace2CtrlSaveFileName" "" -"{4F025ABC-BE66-4CB6-9CEE-06C61418278E}Trace2CtrlViews" "0" -"{5F75FDA0-6FF0-11D5-B7CE-00E029352378}PACtrlSaveFileDir" "" -"{5F75FDA0-6FF0-11D5-B7CE-00E029352378}PACtrlSaveFileName" "" -"{5F75FDA0-6FF0-11D5-B7CE-00E029352378}PACtrlViews" "0" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_EVAL_DENORMAL_MODE" "16777216" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_EVAL_ROUND_MODE" "768" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_0" "000000000000CEC4" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_1" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_10" "00000000A5A5A5A5" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_11" "00000000A5A5A5A5" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_12" "00000000A5A5A5A5" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_13" "00000000A5A5A5A5" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_14" "00000000426E0000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_15" "000000000001097C" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_16" "000000000000CEC4" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_17" "00000000000130CC" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_18" "0000000000030004" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_19" "00000000FFF8C73C" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_2" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_20" "00000000FFF8B130" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_21" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_22" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_23" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_24" "0000000000000100" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_25" "1234567887650000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_3" "000000000000000A" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_4" "0000000000000007" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_5" "0000000041380000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_6" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_7" "0000000000004FD6" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_8" "000000000000E6AC" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_9" "00000000A5A5A5A5" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_COUNT" "26" -"{6C4D5B81-FD67-46A9-A089-EA44DCDE47FD}RAMMonitorManagerCtrlBlockInfoFileDir" "" -"{6C4D5B81-FD67-46A9-A089-EA44DCDE47FD}RAMMonitorManagerCtrlBlockInfoFileName" "" -"{7943C44E-7D44-422A-9140-4CF55C88F7D3}DifferenceCtrlViews" "0" -"{855C64C3-E49C-4450-9BCA-C9822566D214}OSObjectCtrlViews" "0" -"{8A898260-6F1D-11D5-8EB6-00004CC34E9D}ECX_WAVE" "00000000,00000000,0,0" -"{8A898260-6F1D-11D5-8EB6-00004CC34E9D}ECX_WAVE_ADDRESS_NAME" "" -"{8A898260-6F1D-11D5-8EB6-00004CC34E9D}ECX_WAVE_COMB_ADDRESS" ",,,," -"{8A898260-6F1D-11D5-8EB6-00004CC34E9D}ECX_WAVE_COMB_BUFFER" ",,,," -"{8A898260-6F1D-11D5-8EB6-00004CC34E9D}ECX_WAVE_SAMPLING_RATE" "1000" -"{8A898260-6F1D-11D5-8EB6-00004CC34E9D}WaveformCtrlViews" "0" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersCtrlViews" "0" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWnd0ColumnWidth" "47,153,35" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWnd0ECX_REGISTER_COUNT" "33" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWnd0ECX_REGISTER_DISPLAYED" "1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWnd0HideFLAGs" "0" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWnd0HideRadix" "0" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWnd0LastFileName" "" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWnd0RadixList" "16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,2,16,16,16,16,16,16,16," -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndInstanceKey0" "{WK_00000001_REGISTERS}RTOSDemoSessionRX600_E1_E20_SYSTEM" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndViewB0ColumnWidth" "47,153,35" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndViewB0ECX_REGISTER_COUNT" "33" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndViewB0ECX_REGISTER_DISPLAYED" "1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndViewB0HideFLAGs" "0" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndViewB0HideRadix" "0" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndViewB0LastFileName" "" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndViewB0RadixList" "16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,2,16,16,16,16,16,16,16," -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndViewBInstanceKey0" "{WK_00000001_REGISTERS}RTOSDemoSessionRX600_E1_E20_SYSTEMViewB" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_ADDRESS_NAME" "" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_BUFFER" "00000000,00000000,0,0" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_COLOR" "0,0,0,0" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_COMB_ADDRESS" ",,,," -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_COMB_PALETTE" ",,,," -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_PALETTE_NAME" "" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_REDRAW_CONTINUOUSLY" "0,2" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_SAMPLEING_RATE" "1000" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_VIEW" "0,0,0,0,0,0" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ImageCtrlViews" "0" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchCtrlViews" "4" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ColWidth0" "207" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ColWidth1" "182" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ColWidth12" "116" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ColWidth2" "89" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ColWidth3" "200" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0000" "pxCurrentRxDesc, 10, 0, P, Col, Hex, N" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0000_SCOPE" "Current Scope," -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0001" "*, 11, 0, C0000, Exp, Hex, MN" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0001_SCOPE" "Current Scope," -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0002" "status, 2, 0, C0001, Col, Hex, MN" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0002_SCOPE" "Current Scope," -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0003" "size, 2, 0, C0001, Col, Hex, MN" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0003_SCOPE" "Current Scope," -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0004" "bufsize, 2, 0, C0001, Col, Hex, MN" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0004_SCOPE" "Current Scope," -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0005" "buf_p, 4, 0, C0001, Col, Hex, MN" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0005_SCOPE" "Current Scope," -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0006" "next, 4, 0, C0001, Col, Hex, MN" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEMCnt" "1" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd1ColWidth0" "120" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd1ColWidth1" "150" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd1ColWidth12" "200" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd1ColWidth2" "120" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd1ColWidth3" "200" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd1ECX_WATCH_ITEMCnt" "0" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd2ColWidth0" "120" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd2ColWidth1" "150" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd2ColWidth12" "200" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd2ColWidth2" "120" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd2ColWidth3" "200" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd2ECX_WATCH_ITEMCnt" "0" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd3ColWidth0" "120" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd3ColWidth1" "150" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd3ColWidth12" "200" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd3ColWidth2" "120" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd3ColWidth3" "200" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd3ECX_WATCH_ITEMCnt" "0" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWndInitial_Radix" "0" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWndInstanceKey0" "{WK_00000001_WATCH}RTOSDemoSessionRX600_E1_E20_SYSTEM" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWndRecentFile_WatchRecord" "" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWndRecentFile_WatchSave" "" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWndUpdate_Interval" "100" -"{B39CE26B-928D-4241-BF8F-E15980C81200}DebugConsoleCtrlDCEnable" "1" -"{B39CE26B-928D-4241-BF8F-E15980C81200}DebugConsoleCtrlLocalEchoEnable" "0" -"{B39CE26B-928D-4241-BF8F-E15980C81200}DebugConsoleCtrlLogFileName" "" -"{B39CE26B-928D-4241-BF8F-E15980C81200}DebugConsoleCtrlPortBaudIndex" "0" -"{B39CE26B-928D-4241-BF8F-E15980C81200}DebugConsoleCtrlPortName" "" -"{B39CE26B-928D-4241-BF8F-E15980C81200}DebugConsoleCtrlSendDataTimeout" "50" -"{B39CE26B-928D-4241-BF8F-E15980C81200}DebugConsoleCtrlViews" "1" -"{B39CE26B-928D-4241-BF8F-E15980C81200}DebugConsoleWndInstanceKey0" "{WK_00000001_DEBUGCONSOLE}RTOSDemoSessionRX600_E1_E20_SYSTEM" -"{B6AE2E1F-5221-4A44-91C2-8C3097B41A69}StartStopCheckAfter" "0" -"{B6AE2E1F-5221-4A44-91C2-8C3097B41A69}StartStopCheckBefore" "0" -"{B6AE2E1F-5221-4A44-91C2-8C3097B41A69}StartStopExpAfter" "" -"{B6AE2E1F-5221-4A44-91C2-8C3097B41A69}StartStopExpBefore" "" -"{B6AE2E1F-5221-4A44-91C2-8C3097B41A69}T_SESSION_IS_SAVED" "YES" -"{CBEBB610-1516-11D4-8F2D-00409545B67B}ElfDwarf2Objects" "1" -"{CBEBB610-1516-11D4-8F2D-00409545B67B}LoadModule0OBJ_ELFDWARF2_ARRAY_EXPAND_LIMIT" "-1" -"{CBEBB610-1516-11D4-8F2D-00409545B67B}LoadModule0OBJ_ELFDWARF2_STATIC_MEM_EXPAND" "1" -"{EEDC9300-6FBE-11D5-8613-00A024591A38}LocalsCtrlViews" "0" -"{EEDC9301-6FBE-11D5-8613-00A024591A38}StackTraceCtrlViews" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOCtrlIOFile" "" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOCtrlSaveFileDir" "$(CONFIGDIR)" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOCtrlSaveFileName" "" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOCtrlViews" "1" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOSelection IOWnd0" "" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0ColWidth0" "200" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0ColWidth1" "100" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0ColWidth2" "108" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0ColWidth3" "100" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp0" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp1" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp10" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp100" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp101" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp102" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp103" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp104" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp105" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp106" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp107" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp108" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp109" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp11" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp110" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp111" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp112" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp113" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp114" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp115" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp116" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp117" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp118" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp119" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp12" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp120" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp121" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp122" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp123" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp13" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp14" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp15" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp16" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp17" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp18" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp19" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp2" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp20" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp21" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp22" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp23" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp24" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp25" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp26" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp27" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp28" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp29" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp3" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp30" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp31" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp32" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp33" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp34" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp35" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp36" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp37" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp38" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp39" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp4" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp40" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp41" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp42" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp43" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp44" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp45" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp46" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp47" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp48" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp49" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp5" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp50" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp51" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp52" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp53" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp54" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp55" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp56" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp57" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp58" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp59" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp6" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp60" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp61" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp62" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp63" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp64" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp65" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp66" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp67" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp68" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp69" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp7" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp70" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp71" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp72" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp73" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp74" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp75" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp76" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp77" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp78" "1" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp79" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp8" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp80" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp81" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp82" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp83" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp84" "1" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp85" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp86" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp87" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp88" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp89" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp9" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp90" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp91" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp92" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp93" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp94" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp95" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp96" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp97" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp98" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp99" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0ScrollHorz" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0ScrollVert" "84" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd1ColWidth0" "200" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd1ColWidth1" "100" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd1ColWidth2" "100" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd1ColWidth3" "100" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd1ScrollHorz" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd1ScrollVert" "0" -"{F923CED3-3318-4B43-B931-0AE76B289176}TaskTraceCtrlAnalyzeViews" "0" -"{F923CED3-3318-4B43-B931-0AE76B289176}TaskTraceCtrlFileSaveDirectory" "" -"{F923CED3-3318-4B43-B931-0AE76B289176}TaskTraceCtrlTraceViews" "0" -[LANGUAGE] -"English" -[CONFIG_INFO_VD1] -1 -[CONFIG_INFO_VD2] -0 -[CONFIG_INFO_VD3] -0 -[CONFIG_INFO_VD4] -0 -[WINDOW_POSITION_STATE_DATA_VD1] -"Help" "TOOLBAR 0" 59419 1 5 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_00000001_CmdLine}" "WINDOW" 59422 0 1 "0.07" 228 0 0 100 100 17 0 "32771|32772|32778|<>|32773|32774|<>" "0.0" -"{WK_00000001_DEBUGCONSOLE}RTOSDemoSessionRX600_E1_E20_SYSTEM" "WINDOW" 59421 0 1 "1.00" 374 0 0 350 200 17 0 "57634|57637|57633|<>|32781|32782|<>|32780|32785|32787" "0.0" -"{WK_00000001_DISASSEMBLY}" "WINDOW" 0 0 0 "0.00" 0 0 0 1062 571 9 0 "" "0.0" -"{WK_00000001_IO}RTOSDemoSessionRX600_E1_E20_SYSTEM" "WINDOW" 59422 0 2 "0.39" 228 0 0 350 200 17 0 "32817|32826|32819|32820|32821" "0.0" -"{WK_00000001_MEMORY}RTOSDemoSessionRX600_E1_E20_SYSTEM" "WINDOW" 59422 0 0 "0.54" 277 0 0 350 200 2065 0 "42202|42203|42204|42233|<>|42206|42205|42230|42229|42207|<>|42208|42209|42210|49076|42228|42227|<>|42231|42232|42234|42235|<>|42211|<>" "0.0" -"{WK_00000001_OUTPUT}" "WINDOW" 59422 0 0 "1.00" 228 560 340 350 200 18 0 "36756|36757|36758|36759|<>|36746|36747|<>|39531|<>|39500|39534|<>|36687" "0.0" -"{WK_00000001_REGISTERS}RTOSDemoSessionRX600_E1_E20_SYSTEM" "WINDOW" 59421 0 0 "0.87" 413 0 0 350 200 2065 0 "" "0.0" -"{WK_00000001_STACKTRACE}RTOSDemoSessionRX600_E1_E20_SYSTEM" "WINDOW" 59422 0 0 "0.50" 277 0 0 350 200 2065 0 "" "0.0" -"{WK_00000001_WATCH}RTOSDemoSessionRX600_E1_E20_SYSTEM" "WINDOW" 59421 0 0 "1.00" 374 0 0 853 610 17 0 "32781|32783|<>|32771|32829|32772|32827|32773|<>|32786|<>|32810|32811" "0.0" -"{WK_00000002_WORKSPACE}" "WINDOW" 59420 0 0 "1.00" 346 560 340 350 200 18 0 "" "0.0" -"{WK_TB00000001_STANDARD}" "TOOLBAR 0" 59419 0 2 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000002_EDITOR}" "TOOLBAR 0" 59419 0 0 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000003_BOOKMARKS}" "TOOLBAR 0" 59419 1 1 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000004_TEMPLATES}" "TOOLBAR 0" 59419 1 0 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000005_SEARCH}" "TOOLBAR 0" 59419 0 1 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000007_DEBUG}" "TOOLBAR 0" 59419 0 0 "0.00" 0 914 231 0 0 5 0 "" "0.0" -"{WK_TB00000008_DEBUGRUN}" "TOOLBAR 0" 59419 0 3 "0.00" 0 298 189 0 0 18 0 "" "0.0" -"{WK_TB00000009_VERSIONCONTROL}" "TOOLBAR 0" 59419 1 3 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000011_CPU}" "TOOLBAR 0" 0 0 0 "0.00" 0 427 225 0 0 5 0 "" "0.0" -"{WK_TB00000012_MAP}" "TOOLBAR 0" 59419 1 4 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000013_SYMBOL}" "TOOLBAR 0" 0 0 0 "0.00" 0 800 233 0 0 5 0 "" "0.0" -"{WK_TB00000014_CODE}" "TOOLBAR 0" 59419 2 3 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000015_PERFORMANCE}" "TOOLBAR 0" 59419 2 4 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000016_GRAPHIC}" "TOOLBAR 0" 59419 2 2 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000018_DEFAULTWINDOW}" "TOOLBAR 0" 59419 1 2 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000023_RTOS}" "TOOLBAR 0" 59419 2 5 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000025_HELPSYSTEMTOOL}" "TOOLBAR 0" 59419 0 0 "0.00" 0 788 192 0 0 5 0 "" "0.0" -"{WK_TB00000026_MACRO}" "TOOLBAR 0" 59419 1 6 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000027_EVENT}" "TOOLBAR 0" 59419 2 1 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000028_RTOSDEBUG}" "TOOLBAR 0" 59419 0 0 "0.00" 0 559 254 0 0 5 0 "" "0.0" -"{WK_TB00000029_SYSTEMTOOL}" "TOOLBAR 0" 59419 2 0 "0.00" 0 0 0 0 0 17 0 "" "0.0" -[WINDOW_POSITION_STATE_DATA_VD2] -[WINDOW_POSITION_STATE_DATA_VD3] -[WINDOW_POSITION_STATE_DATA_VD4] -[WINDOW_Z_ORDER] -"{WK_TB00000028_RTOSDEBUG} TOOLBAR 0" -"{WK_TB00000007_DEBUG} TOOLBAR 0" -"{WK_TB00000025_HELPSYSTEMTOOL} TOOLBAR 0" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\main-full.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_Renesas\RTOSDemo\main-blinky.c" -[TARGET_NAME] -"RX600 E1/E20 SYSTEM" "" 0 -[STATUSBAR_STATEINFO_VD1] -"MasterShowState" 1 -"ApplicationShowState" 1 -"DebuggerShowState" 1 -[STATUSBAR_STATEINFO_VD2] -"MasterShowState" 1 -"ApplicationShowState" 1 -"DebuggerShowState" 1 -[STATUSBAR_STATEINFO_VD3] -"MasterShowState" 1 -"ApplicationShowState" 1 -"DebuggerShowState" 1 -[STATUSBAR_STATEINFO_VD4] -"MasterShowState" 1 -"ApplicationShowState" 1 -"DebuggerShowState" 1 -[STATUSBAR_DEBUGGER_PANESTATE_VD1] -"SBK_TAR_EMUE100|Exception" 1 -"SBK_TAR_EMUE100|BreakCondition" 1 -"SBK_TAR_EMUE100|TaskID" 1 -"SBK_TAR_EMUE100|PC" 1 -"SBK_TAR_EMUE100|ExecutionTime" 1 -[STATUSBAR_DEBUGGER_PANESTATE_VD2] -[STATUSBAR_DEBUGGER_PANESTATE_VD3] -[STATUSBAR_DEBUGGER_PANESTATE_VD4] -[DEBUGGER_OPTIONS] -"Unknown Options" -[DOWNLOAD_MODULES] -"$(CONFIGDIR)\$(PROJECTNAME).abs" 0 "Elf/Dwarf2" 0 1 1 0 -[CONNECT_ON_GO] -"FALSE" -[DOWNLOAD_MODULES_AFTER_BUILD] -"TRUE" -[REMOVE_BREAKPOINTS_ON_DOWNLOAD] -"FALSE" -[DISABLE_MEMORY_ACCESS_PRIOR_TO_COMMAND_FILE_EXECUTION] -"FALSE" -[LIMIT_DISASSEMBLY_MEMORY_ACCESS] -"FALSE" -[DISABLE_MEMORY_ACCESS_DURING_EXECUTION] -"FALSE" -[DEBUGGER_OPTIONS_PROPERTIES] -"1" -[COMMAND_FILES] -[DEFAULT_DEBUG_FORMAT] -"Elf/Dwarf2" -[FLASH_DETAILS] -"" 0 0 "" 0 "" 0 0 "" 0 0 0 0 0 0 0 "" "" "" "" "" -[BREAKPOINTS] -[END] diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/SessionRX600_E1_E20_SYSTEM.ini b/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/SessionRX600_E1_E20_SYSTEM.ini deleted file mode 100644 index ee7dfebda..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/SessionRX600_E1_E20_SYSTEM.ini +++ /dev/null @@ -1,31 +0,0 @@ -[Init_DeviceSetting] -DebugMode=0 -PowerOut=0 -ResetRelease=0 -EmulatorSerial= -McuGroup=RX62N Group -Device=R5F562N8 -McuFileDir=RX62NGr -SupplyVoltage=-1 -[Init_CommunicationClock] -JtagClock=16.5 -JtagClockValue=10 -[Init_EmulatorSetting] -FirstStartUp=1 -HideNext=0 -ConnectionDlgAutoClose=1 -FirstStartUpV10200=0 -[CFG_MCU] -PrevDevice=R5F562N8 -ProcessorMode=0 -EXTAL=12.0000 -WorkRam=3000 -[CFG_SYSTEM] -CpuReWrite=0 -PerfCounterUser=0 -TraceDebugAs=0 -[CFG_FLASHCLEAR_R5F562N8_00] -BlockCount=54 -BlockData=000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -[Config_Property] -HideNext=0 diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/SimDebug_RX600/SimDebug_RX600.hdp b/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/SimDebug_RX600/SimDebug_RX600.hdp deleted file mode 100644 index 9b8c90ecf..000000000 Binary files a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/SimDebug_RX600/SimDebug_RX600.hdp and /dev/null differ diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/SimSessionRX600.hsf b/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/SimSessionRX600.hsf deleted file mode 100644 index 797e95965..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/SimSessionRX600.hsf +++ /dev/null @@ -1,290 +0,0 @@ -[HIMDBVersion] -2.0 -[DATABASE_VERSION] -"2.3" -[SESSION_DETAILS] -"" -[INFORMATION] -"" -[GENERAL_DATA] -"FIRST_CONNECTION_TAG" "NO" -"RESET_CPU_AFTER_DOWNLOAD_TAG" "VARIANT_FALSE_STORE_TAG" -"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapCtrlECX_MAP_FIND_SYMBOL_LIST" "" -"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapCtrlViews" "0" -"{2BA6A3EE-6488-11D5-80D4-00C04F68EAD7}ECXLABEL_ADDDLG_ADDR" "" -"{2BA6A3EE-6488-11D5-80D4-00C04F68EAD7}LabelCtrlSymbolFileDir" "" -"{2BA6A3EE-6488-11D5-80D4-00C04F68EAD7}LabelCtrlSymbolFileName" "" -"{2BA6A3EE-6488-11D5-80D4-00C04F68EAD7}LabelCtrlViews" "0" -"{2BA6A3EF-6488-11D5-80D4-00C04F68EAD7}StatusCtrlViews" "0" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlBatchFileName" "" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlBreakpointFlag" "-1 " -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlBreakpointStatus" "-1 " -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlBrowseDirectory" "" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlLogFileName" "" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlSplitterPosition" "242" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlViews" "1" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlWindowProperties" "17" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineWndInstanceKey0" "{WK_00000001_CmdLine}" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}TclTkCtrlLogFileName" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_COMPARE_END_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_COMPARE_START_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_DISPLAY_DEST_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_DISPLAY_END_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_DISPLAY_START_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_FILL_END_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_FILL_START_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_MOVE_END_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_MOVE_START_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_SEARCH_END_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_SEARCH_START_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_SET_DEST_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_TEST_END_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_TEST_START_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryCtrlViews" "0" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_BREAK_BREAK_ACCESS_COUNT" "0" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_BREAK_BREAK_CYCLE_COUNT" "0" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_BREAK_BREAK_DATA_COUNT" "0" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_BREAK_BREAK_REGISTER_COUNT" "0" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_BREAK_BREAK_SEQUENCE_COUNT" "0" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_BREAK_PC_BREAK_COUNT" "0" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_BUSCYCLEOCCUR_COUNT" "0" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_CONFIG_CPU_FREQUENCY" "100000" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_CONFIG_ENDIAN" "LITTLE" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_CONFIG_PCLOCKRATE" "1" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_CONFIG_ROUND" "RM_NEAR" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_EXEC_EXEC_MODE" "STOP" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_EXEC_STEP_RATE" "40000" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_FILEIOPORT_COUNT" "0" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_FILEIOVARIALBE_COUNT" "0" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_INST_DECODE_CACHE_ENABLE_FLAG" "OFF" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_IODLL_COUNT" "0" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_MEMORY_AUTO_ALLOC_RESOURCE" "1" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_MEMORY_MAP_BUS_WIDTH" "32" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_MEMORY_MAP_MAP0" "0x00000000,0x0001FFFF,32, 1,RAM" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_MEMORY_MAP_MAP0_ENDIAN" "2" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_MEMORY_MAP_MAP0_WRITE_STATE" "1" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_MEMORY_MAP_MAP1" "0x00080000,0x000FFFFF,32, 1,I/O" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_MEMORY_MAP_MAP1_ENDIAN" "0" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_MEMORY_MAP_MAP1_WRITE_STATE" "1" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_MEMORY_MAP_MAP2" "0x00100000,0x00107FFF,32, 1,ROM" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_MEMORY_MAP_MAP2_ENDIAN" "2" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_MEMORY_MAP_MAP2_WRITE_STATE" "1" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_MEMORY_MAP_MAP3" "0x007F8000,0x007F9FFF,32, 1,RAM" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_MEMORY_MAP_MAP3_ENDIAN" "2" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_MEMORY_MAP_MAP3_WRITE_STATE" "1" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_MEMORY_MAP_MAP4" "0x007FC000,0x007FC4FF,32, 1,I/O" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_MEMORY_MAP_MAP4_ENDIAN" "0" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_MEMORY_MAP_MAP4_WRITE_STATE" "1" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_MEMORY_MAP_MAP5" "0x007FFC00,0x007FFFFF,32, 1,I/O" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_MEMORY_MAP_MAP5_ENDIAN" "0" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_MEMORY_MAP_MAP5_WRITE_STATE" "1" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_MEMORY_MAP_MAP6" "0x00E00000,0x00FFFFFF,32, 1,ROM" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_MEMORY_MAP_MAP6_ENDIAN" "2" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_MEMORY_MAP_MAP6_WRITE_STATE" "1" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_MEMORY_MAP_MAP7" "0xFEFFE000,0xFEFFFFFF,32, 1,ROM" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_MEMORY_MAP_MAP7_ENDIAN" "2" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_MEMORY_MAP_MAP7_WRITE_STATE" "1" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_MEMORY_MAP_MAP8" "0xFF7FC000,0xFF7FFFFF,32, 1,ROM" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_MEMORY_MAP_MAP8_ENDIAN" "2" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_MEMORY_MAP_MAP8_WRITE_STATE" "1" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_MEMORY_MAP_MAP9" "0xFFE00000,0xFFFFFFFF,32, 1,ROM" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_MEMORY_MAP_MAP9_ENDIAN" "2" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_MEMORY_MAP_MAP9_WRITE_STATE" "1" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_MEMORY_MAP_MEMORY_MAP_COUNT" "10" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_MEMORY_MAP_MEMORY_MODE" "0" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_MEMORY_MAP_PRG_WIDTH" "-1" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_MEMORY_RESOURCE_MEMORY_RESOURCE_COUNT" "5" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_MEMORY_RESOURCE_MEMRES0" "0x00000000,0x0001FFFF,3" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_MEMORY_RESOURCE_MEMRES1" "0x00080000,0x000FFFFF,3" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_MEMORY_RESOURCE_MEMRES2" "0x007FC000,0x007FC4FF,3" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_MEMORY_RESOURCE_MEMRES3" "0x007FFC00,0x007FFFFF,3" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_MEMORY_RESOURCE_MEMRES4" "0xFFFF8000,0xFFFFFFFF,3" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_SESSION_IS_SAVED" "YES" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_SYSTEM_CALL_Interrupt_Exception" "1" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_SYSTEM_CALL_SYSTEM_CALL_ADDRESS" "0x00000000" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_SYSTEM_CALL_SYSTEM_CALL_FLAG" "OFF" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_TRACE2_TRACE2_ACQUISITION" "0,65536,0,0" -"{48FF5DA0-6FFA-11D5-B7CE-00E029352378}CoverageCtrlViews" "0" -"{48FF5DA0-6FFA-11D5-B7CE-00E029352378}CoverageCtrlViewsFromDiffFile" "0" -"{48FF5DA0-6FFA-11D5-B7CE-00E029352378}CoverageFileName" "0" -"{48FF5DA0-6FFA-11D5-B7CE-00E029352378}EcxCov_Cov_SL" "" -"{48FF5DA0-6FFA-11D5-B7CE-00E029352378}EcxCov_Open_End" "" -"{48FF5DA0-6FFA-11D5-B7CE-00E029352378}EcxCov_Open_Start" "" -"{48FF5DA0-6FFA-11D5-B7CE-00E029352378}EcxCov_Src_Open" "" -"{4F025ABC-BE66-4CB6-9CEE-06C61418278E}Trace2CtrlSaveFileDir" "" -"{4F025ABC-BE66-4CB6-9CEE-06C61418278E}Trace2CtrlSaveFileName" "" -"{4F025ABC-BE66-4CB6-9CEE-06C61418278E}Trace2CtrlViews" "0" -"{5F75FDA0-6FF0-11D5-B7CE-00E029352378}PACtrlPAState" "0" -"{5F75FDA0-6FF0-11D5-B7CE-00E029352378}PACtrlSaveFileDir" "" -"{5F75FDA0-6FF0-11D5-B7CE-00E029352378}PACtrlSaveFileName" "" -"{5F75FDA0-6FF0-11D5-B7CE-00E029352378}PACtrlViews" "0" -"{633553C0-6FE9-11D5-B7CE-00E029352378}ProfileCtrlChartMultiOpen" "0" -"{633553C0-6FE9-11D5-B7CE-00E029352378}ProfileCtrlEnable" "0" -"{633553C0-6FE9-11D5-B7CE-00E029352378}ProfileCtrlSaveListFileDir" "" -"{633553C0-6FE9-11D5-B7CE-00E029352378}ProfileCtrlSaveListFileName" "" -"{633553C0-6FE9-11D5-B7CE-00E029352378}ProfileCtrlSaveTreeFileDir" "" -"{633553C0-6FE9-11D5-B7CE-00E029352378}ProfileCtrlSaveTreeFileName" "" -"{633553C0-6FE9-11D5-B7CE-00E029352378}ProfileCtrlViews" "0" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_EVAL_DENORMAL_MODE" "0" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_EVAL_ROUND_MODE" "0" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_0" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_1" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_10" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_11" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_12" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_13" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_14" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_15" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_16" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_17" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_18" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_19" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_2" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_20" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_21" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_22" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_23" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_24" "0000000000000100" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_25" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_3" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_4" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_5" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_6" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_7" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_8" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_9" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_COUNT" "26" -"{6C4D5B81-FD67-46A9-A089-EA44DCDE47FD}RAMMonitorManagerCtrlBlockInfoFileDir" "" -"{6C4D5B81-FD67-46A9-A089-EA44DCDE47FD}RAMMonitorManagerCtrlBlockInfoFileName" "" -"{7943C44E-7D44-422A-9140-4CF55C88F7D3}DifferenceCtrlViews" "0" -"{7FA2E460-7EC0-11D5-8EB6-00004CC34E9D}SimIOCtrlViews" "0" -"{855C64C3-E49C-4450-9BCA-C9822566D214}OSObjectCtrlViews" "0" -"{85AC95E0-0CE6-11D6-8EB6-00004CC34E9D}TriggerCtrlViews" "0" -"{8A898260-6F1D-11D5-8EB6-00004CC34E9D}ECX_WAVE" "00000000,00000000,0,0" -"{8A898260-6F1D-11D5-8EB6-00004CC34E9D}ECX_WAVE_ADDRESS_NAME" "" -"{8A898260-6F1D-11D5-8EB6-00004CC34E9D}ECX_WAVE_COMB_ADDRESS" ",,,," -"{8A898260-6F1D-11D5-8EB6-00004CC34E9D}ECX_WAVE_COMB_BUFFER" ",,,," -"{8A898260-6F1D-11D5-8EB6-00004CC34E9D}ECX_WAVE_SAMPLING_RATE" "1000" -"{8A898260-6F1D-11D5-8EB6-00004CC34E9D}WaveformCtrlViews" "0" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersCtrlViews" "0" -"{99F424FE-E727-45AE-AE1F-11E29DEF272C}ECX_GuiIO_SAMPLING_RATE" "1000" -"{99F424FE-E727-45AE-AE1F-11E29DEF272C}PDGuiIOCtrlPDGuiIOLastSaveDirectory" "" -"{99F424FE-E727-45AE-AE1F-11E29DEF272C}PDGuiIOCtrlViews" "0" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_ADDRESS_NAME" "" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_BUFFER" "00000000,00000000,0,0" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_COLOR" "0,0,0,0" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_COMB_ADDRESS" ",,,," -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_COMB_PALETTE" ",,,," -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_PALETTE_NAME" "" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_REDRAW_CONTINUOUSLY" "0,2" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_SAMPLEING_RATE" "1000" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_VIEW" "0,0,0,0,0,0" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ImageCtrlViews" "0" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchCtrlViews" "0" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWndInitial_Radix" "0" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWndRecentFile_WatchRecord" "" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWndRecentFile_WatchSave" "" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWndUpdate_Interval" "100" -"{CBEBB610-1516-11D4-8F2D-00409545B67B}ElfDwarf2Objects" "1" -"{CBEBB610-1516-11D4-8F2D-00409545B67B}LoadModule0OBJ_ELFDWARF2_ARRAY_EXPAND_LIMIT" "-1" -"{CBEBB610-1516-11D4-8F2D-00409545B67B}LoadModule0OBJ_ELFDWARF2_STATIC_MEM_EXPAND" "1" -"{D595F9C0-EF22-11D5-B7DB-0000E10B3DA9}EventCtrlViews" "0" -"{EEDC9300-6FBE-11D5-8613-00A024591A38}LocalsCtrlViews" "0" -"{EEDC9301-6FBE-11D5-8613-00A024591A38}StackTraceCtrlViews" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOCtrlIOFile" "" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOCtrlSaveFileDir" "$(CONFIGDIR)" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOCtrlSaveFileName" "" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOCtrlViews" "0" -"{F923CED3-3318-4B43-B931-0AE76B289176}TaskTraceCtrlAnalyzeViews" "0" -"{F923CED3-3318-4B43-B931-0AE76B289176}TaskTraceCtrlFileSaveDirectory" "" -"{F923CED3-3318-4B43-B931-0AE76B289176}TaskTraceCtrlTraceViews" "0" -[LANGUAGE] -"English" -[CONFIG_INFO_VD1] -1 -[CONFIG_INFO_VD2] -0 -[CONFIG_INFO_VD3] -0 -[CONFIG_INFO_VD4] -0 -[WINDOW_POSITION_STATE_DATA_VD1] -"Help" "TOOLBAR 0" 59419 1 5 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_00000001_CmdLine}" "WINDOW" 59422 0 1 "0.07" 228 0 0 350 200 17 0 "32771|32772|32778|<>|32773|32774|<>|32820|<>|32801|32824" "0.0" -"{WK_00000001_OUTPUT}" "WINDOW" 59422 0 0 "1.00" 228 560 340 350 200 18 0 "36756|36757|36758|36759|<>|36746|36747|<>|39531|<>|39500|39534|<>|36687" "0.0" -"{WK_00000002_WORKSPACE}" "WINDOW" 59420 0 0 "1.00" 346 560 340 350 200 18 0 "" "0.0" -"{WK_TB00000001_STANDARD}" "TOOLBAR 0" 59419 0 2 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000002_EDITOR}" "TOOLBAR 0" 59419 0 0 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000003_BOOKMARKS}" "TOOLBAR 0" 59419 1 1 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000004_TEMPLATES}" "TOOLBAR 0" 59419 1 0 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000005_SEARCH}" "TOOLBAR 0" 59419 0 1 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000007_DEBUG}" "TOOLBAR 0" 59419 0 0 "0.00" 0 914 231 0 0 6 0 "" "0.0" -"{WK_TB00000008_DEBUGRUN}" "TOOLBAR 0" 59419 0 3 "0.00" 0 298 189 0 0 18 0 "" "0.0" -"{WK_TB00000009_VERSIONCONTROL}" "TOOLBAR 0" 59419 1 3 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000011_CPU}" "TOOLBAR 0" 59419 2 1 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000012_MAP}" "TOOLBAR 0" 59419 1 4 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000013_SYMBOL}" "TOOLBAR 0" 59419 2 2 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000014_CODE}" "TOOLBAR 0" 59419 2 4 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000015_PERFORMANCE}" "TOOLBAR 0" 59419 2 5 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000016_GRAPHIC}" "TOOLBAR 0" 59419 2 3 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000018_DEFAULTWINDOW}" "TOOLBAR 0" 59419 1 2 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000023_RTOS}" "TOOLBAR 0" 59419 2 6 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000025_HELPSYSTEMTOOL}" "TOOLBAR 0" 59419 0 0 "0.00" 0 788 192 0 0 5 0 "" "0.0" -"{WK_TB00000026_MACRO}" "TOOLBAR 0" 59419 1 6 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000028_RTOSDEBUG}" "TOOLBAR 0" 59419 0 0 "0.00" 0 559 254 0 0 5 0 "" "0.0" -"{WK_TB00000029_SYSTEMTOOL}" "TOOLBAR 0" 59419 2 0 "0.00" 0 0 0 0 0 17 0 "" "0.0" -[WINDOW_POSITION_STATE_DATA_VD2] -[WINDOW_POSITION_STATE_DATA_VD3] -[WINDOW_POSITION_STATE_DATA_VD4] -[WINDOW_Z_ORDER] -"{WK_TB00000007_DEBUG} TOOLBAR 0" -"{WK_TB00000028_RTOSDEBUG} TOOLBAR 0" -"{WK_TB00000025_HELPSYSTEMTOOL} TOOLBAR 0" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-MDK_Renesas\RTOSDemo\main-full.c" -[TARGET_NAME] -"RX600 Simulator" "" 0 -[STATUSBAR_STATEINFO_VD1] -"MasterShowState" 1 -"ApplicationShowState" 1 -"DebuggerShowState" 1 -[STATUSBAR_STATEINFO_VD2] -"MasterShowState" 1 -"ApplicationShowState" 1 -"DebuggerShowState" 1 -[STATUSBAR_STATEINFO_VD3] -"MasterShowState" 1 -"ApplicationShowState" 1 -"DebuggerShowState" 1 -[STATUSBAR_STATEINFO_VD4] -"MasterShowState" 1 -"ApplicationShowState" 1 -"DebuggerShowState" 1 -[STATUSBAR_DEBUGGER_PANESTATE_VD1] -[STATUSBAR_DEBUGGER_PANESTATE_VD2] -[STATUSBAR_DEBUGGER_PANESTATE_VD3] -[STATUSBAR_DEBUGGER_PANESTATE_VD4] -[DEBUGGER_OPTIONS] -"[V|VERSION|1] [S|MAP|^"0x00000000,0x0001FFFF,RAM,32,101 0x00080000,0x000FFFFF,I/O,32,101 0x00100000,0x00107FFF,ROM,32,101 0x007F8000,0x007F9FFF,RAM,32,101 0x007FC000,0x007FC4FF,I/O,32,101 0x007FFC00,0x007FFFFF,I/O,32,101 0x00E00000,0x00FFFFFF,ROM,32,101 0xFEFFE000,0xFEFFFFFF,ROM,32,101 0xFF7FC000,0xFF7FFFFF,ROM,32,101 0xFFE00000,0xFFFFFFFF,ROM,32,101^"] [S|RESOURCE|^"0x00000000,0x0001FFFF,R/W 0x00080000,0x000FFFFF,R/W 0x007FC000,0x007FC4FF,R/W 0x007FFC00,0x007FFFFF,R/W 0xFFFF8000,0xFFFFFFFF,R/W^"] [B|SIMIOF|0] [I|SIMIOADR|0x00000000] [I|BUS_MODE|0] [S|ENDIAN|^"LITTLE^"] [S|PATCH|^"OFF^"] [S|ROM_MODE|^"^"]" -[DOWNLOAD_MODULES] -"$(CONFIGDIR)\$(PROJECTNAME).abs" 0 "Elf/Dwarf2" 0 0 1 0 -[CONNECT_ON_GO] -"FALSE" -[DOWNLOAD_MODULES_AFTER_BUILD] -"TRUE" -[REMOVE_BREAKPOINTS_ON_DOWNLOAD] -"FALSE" -[DISABLE_MEMORY_ACCESS_PRIOR_TO_COMMAND_FILE_EXECUTION] -"FALSE" -[LIMIT_DISASSEMBLY_MEMORY_ACCESS] -"FALSE" -[DISABLE_MEMORY_ACCESS_DURING_EXECUTION] -"FALSE" -[DEBUGGER_OPTIONS_PROPERTIES] -"1" -[COMMAND_FILES] -[DEFAULT_DEBUG_FORMAT] -"Elf/Dwarf2" -[FLASH_DETAILS] -"" 0 0 "" 0 "" 0 0 "" 0 0 0 0 0 0 0 "" "" "" "" "" -[BREAKPOINTS] -[END] diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/include/IntQueueTimer.h b/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/include/IntQueueTimer.h deleted file mode 100644 index a13dac500..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/include/IntQueueTimer.h +++ /dev/null @@ -1,36 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -#ifndef INT_QUEUE_TIMER_H -#define INT_QUEUE_TIMER_H - -void vInitialiseTimerForIntQueueTest( void ); -portBASE_TYPE xTimer0Handler( void ); -portBASE_TYPE xTimer1Handler( void ); - -#endif - diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/include/iodefine.h b/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/include/iodefine.h deleted file mode 100644 index 7787987ee..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/include/iodefine.h +++ /dev/null @@ -1,7181 +0,0 @@ -/********************************************************************************/ -/* */ -/* Device : RX/RX600/RX62N */ -/* File Name : ioedfine.h */ -/* Abstract : Definition of I/O Register. */ -/* History : V2.0 (2010-08-21) [Hardware Manual Revision : 1.00] */ -/* Note : This is a typical example. */ -/* */ -/* Copyright(c) 2010 Renesas Electronics Corp. */ -/* And Renesas Solutions Corp. ,All Rights Reserved. */ -/* */ -/********************************************************************************/ -/* */ -/* DESCRIPTION : Definition of ICU Register */ -/* CPU TYPE : RX62N */ -/* */ -/* Usage : IR,DTCER,IER,IPR of ICU Register */ -/* The following IR, DTCE, IEN, IPR macro functions simplify usage. */ -/* The bit access operation is "Bit_Name(interrupt source,name)". */ -/* A part of the name can be omitted. */ -/* for example : */ -/* IR(MTU0,TGIA0) = 0; expands to : */ -/* ICU.IR[114].BIT.IR = 0; */ -/* */ -/* DTCE(ICU,IRQ0) = 1; expands to : */ -/* ICU.DTCER[64].BIT.DTCE = 1; */ -/* */ -/* IEN(CMT0,CMI0) = 1; expands to : */ -/* ICU.IER[0x03].BIT.IEN4 = 1; */ -/* */ -/* IPR(MTU1,TGIA1) = 2; expands to : */ -/* IPR(MTU1,TGI ) = 2; // TGIA1,TGIB1 share IPR level. */ -/* ICU.IPR[0x53].BIT.IPR = 2; */ -/* */ -/* IPR(SCI0,ERI0) = 3; expands to : */ -/* IPR(SCI0, ) = 3; // SCI0 uses single IPR for all sources. */ -/* ICU.IPR[0x80].BIT.IPR = 3; */ -/* */ -/* Usage : #pragma interrupt Function_Identifier(vect=**) */ -/* The number of vector is "(interrupt source, name)". */ -/* for example : */ -/* #pragma interrupt INT_IRQ0(vect=VECT(ICU,IRQ0)) expands to : */ -/* #pragma interrupt INT_IRQ0(vect=64) */ -/* #pragma interrupt INT_CMT0_CMI0(vect=VECT(CMT0,CMI0)) expands to : */ -/* #pragma interrupt INT_CMT0_CMI0(vect=28) */ -/* #pragma interrupt INT_MTU0_TGIA0(vect=VECT(MTU0,TGIA0)) expands to : */ -/* #pragma interrupt INT_MTU0_TGIA0(vect=114) */ -/* */ -/* Usage : MSTPCRA,MSTPCRB,MSTPCRC of SYSTEM Register */ -/* The bit access operation is "MSTP(name)". */ -/* The name that can be used is a macro name defined with "iodefine.h". */ -/* for example : */ -/* MSTP(TMR2) = 0; // TMR2,TMR3,TMR23 expands to : */ -/* SYSTEM.MSTPCRA.BIT.MSTPA4 = 0; */ -/* MSTP(SCI0) = 0; // SCI0,SMCI0 expands to : */ -/* SYSTEM.MSTPCRB.BIT.MSTPB31 = 0; */ -/* MSTP(MTU4) = 0; // MTUA,MTU0,MTU1,MTU2,MTU3,MTU4,MTU5 expands to : */ -/* SYSTEM.MSTPCRA.BIT.MSTPA9 = 0; */ -/* MSTP(CMT3) = 0; // CMT2,CMT3 expands to : */ -/* SYSTEM.MSTPCRA.BIT.MSTPA14 = 0; */ -/* */ -/* */ -/********************************************************************************/ -#ifndef __RX62NIODEFINE_HEADER__ -#define __RX62NIODEFINE_HEADER__ -#pragma bit_order left -#pragma unpack -struct st_ad { - unsigned short ADDRA; - unsigned short ADDRB; - unsigned short ADDRC; - unsigned short ADDRD; - char wk0[8]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ADIE:1; - unsigned char ADST:1; - unsigned char :1; - unsigned char CH:4; - } BIT; - } ADCSR; - union { - unsigned char BYTE; - struct { - unsigned char TRGS:3; - unsigned char :1; - unsigned char CKS:2; - unsigned char MODE:2; - } BIT; - } ADCR; - union { - unsigned char BYTE; - struct { - unsigned char DPSEL:1; - } BIT; - } ADDPR; - unsigned char ADSSTR; - char wk1[11]; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char DIAG:2; - } BIT; - } ADDIAGR; -}; - -struct st_bsc { - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char STSCLR:1; - } BIT; - } BERCLR; - char wk0[3]; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char TOEN:1; - unsigned char IGAEN:1; - } BIT; - } BEREN; - char wk1[3]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char MST:3; - unsigned char :2; - unsigned char TO:1; - unsigned char IA:1; - } BIT; - } BERSR1; - char wk2[1]; - union { - unsigned short WORD; - struct { - unsigned short ADDR:13; - } BIT; - } BERSR2; - char wk3[7414]; - union { - unsigned short WORD; - struct { - unsigned short PRMOD:1; - unsigned short :5; - unsigned short PWENB:1; - unsigned short PRENB:1; - unsigned short :4; - unsigned short EWENB:1; - unsigned short :2; - unsigned short WRMOD:1; - } BIT; - } CS0MOD; - union { - unsigned long LONG; - struct { - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - unsigned long CSWWAIT:5; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSPWWAIT:3; - } BIT; - } CS0WCR1; - union { - unsigned long LONG; - struct { - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long RDON:3; - unsigned long :5; - unsigned long WDOFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long CSROFF:3; - } BIT; - } CS0WCR2; - char wk4[6]; - union { - unsigned short WORD; - struct { - unsigned short PRMOD:1; - unsigned short :5; - unsigned short PWENB:1; - unsigned short PRENB:1; - unsigned short :4; - unsigned short EWENB:1; - unsigned short :2; - unsigned short WRMOD:1; - } BIT; - } CS1MOD; - union { - unsigned long LONG; - struct { - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - unsigned long CSWWAIT:5; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSPWWAIT:3; - } BIT; - } CS1WCR1; - union { - unsigned long LONG; - struct { - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long RDON:3; - unsigned long :5; - unsigned long WDOFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long CSROFF:3; - } BIT; - } CS1WCR2; - char wk5[6]; - union { - unsigned short WORD; - struct { - unsigned short PRMOD:1; - unsigned short :5; - unsigned short PWENB:1; - unsigned short PRENB:1; - unsigned short :4; - unsigned short EWENB:1; - unsigned short :2; - unsigned short WRMOD:1; - } BIT; - } CS2MOD; - union { - unsigned long LONG; - struct { - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - unsigned long CSWWAIT:5; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSPWWAIT:3; - } BIT; - } CS2WCR1; - union { - unsigned long LONG; - struct { - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long RDON:3; - unsigned long :5; - unsigned long WDOFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long CSROFF:3; - } BIT; - } CS2WCR2; - char wk6[6]; - union { - unsigned short WORD; - struct { - unsigned short PRMOD:1; - unsigned short :5; - unsigned short PWENB:1; - unsigned short PRENB:1; - unsigned short :4; - unsigned short EWENB:1; - unsigned short :2; - unsigned short WRMOD:1; - } BIT; - } CS3MOD; - union { - unsigned long LONG; - struct { - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - unsigned long CSWWAIT:5; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSPWWAIT:3; - } BIT; - } CS3WCR1; - union { - unsigned long LONG; - struct { - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long RDON:3; - unsigned long :5; - unsigned long WDOFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long CSROFF:3; - } BIT; - } CS3WCR2; - char wk7[6]; - union { - unsigned short WORD; - struct { - unsigned short PRMOD:1; - unsigned short :5; - unsigned short PWENB:1; - unsigned short PRENB:1; - unsigned short :4; - unsigned short EWENB:1; - unsigned short :2; - unsigned short WRMOD:1; - } BIT; - } CS4MOD; - union { - unsigned long LONG; - struct { - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - unsigned long CSWWAIT:5; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSPWWAIT:3; - } BIT; - } CS4WCR1; - union { - unsigned long LONG; - struct { - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long RDON:3; - unsigned long :5; - unsigned long WDOFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long CSROFF:3; - } BIT; - } CS4WCR2; - char wk8[6]; - union { - unsigned short WORD; - struct { - unsigned short PRMOD:1; - unsigned short :5; - unsigned short PWENB:1; - unsigned short PRENB:1; - unsigned short :4; - unsigned short EWENB:1; - unsigned short :2; - unsigned short WRMOD:1; - } BIT; - } CS5MOD; - union { - unsigned long LONG; - struct { - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - unsigned long CSWWAIT:5; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSPWWAIT:3; - } BIT; - } CS5WCR1; - union { - unsigned long LONG; - struct { - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long RDON:3; - unsigned long :5; - unsigned long WDOFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long CSROFF:3; - } BIT; - } CS5WCR2; - char wk9[6]; - union { - unsigned short WORD; - struct { - unsigned short PRMOD:1; - unsigned short :5; - unsigned short PWENB:1; - unsigned short PRENB:1; - unsigned short :4; - unsigned short EWENB:1; - unsigned short :2; - unsigned short WRMOD:1; - } BIT; - } CS6MOD; - union { - unsigned long LONG; - struct { - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - unsigned long CSWWAIT:5; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSPWWAIT:3; - } BIT; - } CS6WCR1; - union { - unsigned long LONG; - struct { - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long RDON:3; - unsigned long :5; - unsigned long WDOFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long CSROFF:3; - } BIT; - } CS6WCR2; - char wk10[6]; - union { - unsigned short WORD; - struct { - unsigned short PRMOD:1; - unsigned short :5; - unsigned short PWENB:1; - unsigned short PRENB:1; - unsigned short :4; - unsigned short EWENB:1; - unsigned short :2; - unsigned short WRMOD:1; - } BIT; - } CS7MOD; - union { - unsigned long LONG; - struct { - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - unsigned long CSWWAIT:5; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSPWWAIT:3; - } BIT; - } CS7WCR1; - union { - unsigned long LONG; - struct { - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long RDON:3; - unsigned long :5; - unsigned long WDOFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long CSROFF:3; - } BIT; - } CS7WCR2; - char wk11[1926]; - union { - unsigned short WORD; - struct { - unsigned short :7; - unsigned short EMODE:1; - unsigned short :2; - unsigned short BSIZE:2; - unsigned short :3; - unsigned short EXENB:1; - } BIT; - } CS0CR; - char wk12[6]; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - unsigned short RRCV:4; - } BIT; - } CS0REC; - char wk13[6]; - union { - unsigned short WORD; - struct { - unsigned short :7; - unsigned short EMODE:1; - unsigned short :2; - unsigned short BSIZE:2; - unsigned short :3; - unsigned short EXENB:1; - } BIT; - } CS1CR; - char wk14[6]; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - unsigned short RRCV:4; - } BIT; - } CS1REC; - char wk15[6]; - union { - unsigned short WORD; - struct { - unsigned short :7; - unsigned short EMODE:1; - unsigned short :2; - unsigned short BSIZE:2; - unsigned short :3; - unsigned short EXENB:1; - } BIT; - } CS2CR; - char wk16[6]; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - unsigned short RRCV:4; - } BIT; - } CS2REC; - char wk17[6]; - union { - unsigned short WORD; - struct { - unsigned short :7; - unsigned short EMODE:1; - unsigned short :2; - unsigned short BSIZE:2; - unsigned short :3; - unsigned short EXENB:1; - } BIT; - } CS3CR; - char wk18[6]; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - unsigned short RRCV:4; - } BIT; - } CS3REC; - char wk19[6]; - union { - unsigned short WORD; - struct { - unsigned short :7; - unsigned short EMODE:1; - unsigned short :2; - unsigned short BSIZE:2; - unsigned short :3; - unsigned short EXENB:1; - } BIT; - } CS4CR; - char wk20[6]; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - unsigned short RRCV:4; - } BIT; - } CS4REC; - char wk21[6]; - union { - unsigned short WORD; - struct { - unsigned short :7; - unsigned short EMODE:1; - unsigned short :2; - unsigned short BSIZE:2; - unsigned short :3; - unsigned short EXENB:1; - } BIT; - } CS5CR; - char wk22[6]; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - unsigned short RRCV:4; - } BIT; - } CS5REC; - char wk23[6]; - union { - unsigned short WORD; - struct { - unsigned short :7; - unsigned short EMODE:1; - unsigned short :2; - unsigned short BSIZE:2; - unsigned short :3; - unsigned short EXENB:1; - } BIT; - } CS6CR; - char wk24[6]; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - unsigned short RRCV:4; - } BIT; - } CS6REC; - char wk25[6]; - union { - unsigned short WORD; - struct { - unsigned short :7; - unsigned short EMODE:1; - unsigned short :2; - unsigned short BSIZE:2; - unsigned short :3; - unsigned short EXENB:1; - } BIT; - } CS7CR; - char wk26[6]; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - unsigned short RRCV:4; - } BIT; - } CS7REC; - char wk27[900]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char BSIZE:2; - unsigned char :3; - unsigned char EXENB:1; - } BIT; - } SDCCR; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char EMODE:1; - } BIT; - } SDCMOD; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char BE:1; - } BIT; - } SDAMOD; - char wk28[13]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char SFEN:1; - } BIT; - } SDSELF; - char wk29[3]; - union { - unsigned short WORD; - struct { - unsigned short REFW:4; - unsigned short RFC:12; - } BIT; - } SDRFCR; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char RFEN:1; - } BIT; - } SDRFEN; - char wk30[9]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char INIRQ:1; - } BIT; - } SDICR; - char wk31[3]; - union { - unsigned short WORD; - struct { - unsigned short :5; - unsigned short PRC:3; - unsigned short ARFC:4; - unsigned short ARFI:4; - } BIT; - } SDIR; - char wk32[26]; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char MXC:2; - } BIT; - } SDADR; - char wk33[3]; - union { - unsigned long LONG; - struct { - unsigned long :13; - unsigned long RAS:3; - unsigned long :2; - unsigned long RCD:2; - unsigned long RP:3; - unsigned long WR:1; - unsigned long :5; - unsigned long CL:3; - } BIT; - } SDTR; - union { - unsigned short WORD; - struct { - unsigned short :1; - unsigned short MR:15; - } BIT; - } SDMOD; - char wk34[6]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char SRFST:1; - unsigned char INIST:1; - unsigned char :2; - unsigned char MRSST:1; - } BIT; - } SDSR; -}; - -struct st_can { - struct { - union { - unsigned long LONG; - struct { - unsigned short H; - unsigned short L; - } WORD; - struct { - unsigned char HH; - unsigned char HL; - unsigned char LH; - unsigned char LL; - } BYTE; - struct { - unsigned long IDE:1; - unsigned long RTR:1; - unsigned long :1; - unsigned long SID:11; - unsigned long EID:18; - } BIT; - } ID; - union { - unsigned short WORD; - struct { - unsigned char H; - unsigned char L; - } BYTE; - struct { - unsigned char :8; - unsigned char :4; - unsigned char DLC:4; - } BIT; - } DLC; - unsigned char DATA[8]; - union { - unsigned short WORD; - struct { - unsigned char TSH; - unsigned char TSL; - } BYTE; - } TS; - } MB[32]; - union { - unsigned long LONG; - struct { - unsigned short H; - unsigned short L; - } WORD; - struct { - unsigned char HH; - unsigned char HL; - unsigned char LH; - unsigned char LL; - } BYTE; - struct { - unsigned long :3; - unsigned long SID:11; - unsigned long EID:18; - } BIT; - } MKR[8]; - union { - unsigned long LONG; - struct { - unsigned short H; - unsigned short L; - } WORD; - struct { - unsigned char HH; - unsigned char HL; - unsigned char LH; - unsigned char LL; - } BYTE; - struct { - unsigned long IDE:1; - unsigned long RTR:1; - unsigned long :1; - unsigned long SID:11; - unsigned long EID:18; - } BIT; - } FIDCR0; - union { - unsigned long LONG; - struct { - unsigned short H; - unsigned short L; - } WORD; - struct { - unsigned char HH; - unsigned char HL; - unsigned char LH; - unsigned char LL; - } BYTE; - struct { - unsigned long IDE:1; - unsigned long RTR:1; - unsigned long :1; - unsigned long SID:11; - unsigned long EID:18; - } BIT; - } FIDCR1; - unsigned long MKIVLR; - unsigned long MIER; - char wk0[1008]; - union { - unsigned char BYTE; - union { - struct { - unsigned char TRMREQ:1; - unsigned char RECREQ:1; - unsigned char :1; - unsigned char ONESHOT:1; - unsigned char :1; - unsigned char TRMABT:1; - unsigned char TRMACTIVE:1; - unsigned char SENTDATA:1; - } TX; - struct { - unsigned char :5; - unsigned char MSGLOST:1; - unsigned char INVALDATA:1; - unsigned char NEWDATA:1; - } RX; - } BIT; - } MCTL[32]; - union { - unsigned short WORD; - struct { - unsigned char H; - unsigned char L; - } BYTE; - struct { - unsigned char :2; - unsigned char RBOC:1; - unsigned char BOM:2; - unsigned char SLPM:1; - unsigned char CANM:2; - unsigned char TSPS:2; - unsigned char TSRC:1; - unsigned char TPM:1; - unsigned char MLM:1; - unsigned char IDFM:2; - unsigned char MBM:1; - } BIT; - } CTLR; - union { - unsigned short WORD; - struct { - unsigned char H; - unsigned char L; - } BYTE; - struct { - unsigned char :1; - unsigned char RECST:1; - unsigned char TRMST:1; - unsigned char BOST:1; - unsigned char EPST:1; - unsigned char SLPST:1; - unsigned char HLTST:1; - unsigned char RSTST:1; - unsigned char EST:1; - unsigned char TABST:1; - unsigned char FMLST:1; - unsigned char NMLST:1; - unsigned char TFST:1; - unsigned char RFST:1; - unsigned char SDST:1; - unsigned char NDST:1; - } BIT; - } STR; - union { - unsigned long LONG; - struct { - unsigned short H; - unsigned short L; - } WORD; - struct { - unsigned char HH; - unsigned char HL; - unsigned char LH; - unsigned char LL; - } BYTE; - struct { - unsigned long TSEG1:4; - unsigned long :2; - unsigned long BRP:10; - unsigned long :2; - unsigned long SJW:2; - unsigned long :1; - unsigned long TSEG2:3; - } BIT; - } BCR; - union { - unsigned char BYTE; - struct { - unsigned char RFEST:1; - unsigned char RFWST:1; - unsigned char RFFST:1; - unsigned char RFMLF:1; - unsigned char RFUST:3; - unsigned char RFE:1; - } BIT; - } RFCR; - unsigned char RFPCR; - union { - unsigned char BYTE; - struct { - unsigned char TFEST:1; - unsigned char TFFST:1; - unsigned char :2; - unsigned char TFUST:3; - unsigned char TFE:1; - } BIT; - } TFCR; - unsigned char TFPCR; - union { - unsigned char BYTE; - struct { - unsigned char BLIE:1; - unsigned char OLIE:1; - unsigned char ORIE:1; - unsigned char BORIE:1; - unsigned char BOEIE:1; - unsigned char EPIE:1; - unsigned char EWIE:1; - unsigned char BEIE:1; - } BIT; - } EIER; - union { - unsigned char BYTE; - struct { - unsigned char BLIF:1; - unsigned char OLIF:1; - unsigned char ORIF:1; - unsigned char BORIF:1; - unsigned char BOEIF:1; - unsigned char EPIF:1; - unsigned char EWIF:1; - unsigned char BEIF:1; - } BIT; - } EIFR; - unsigned char RECR; - unsigned char TECR; - union { - unsigned char BYTE; - struct { - unsigned char EDPM:1; - unsigned char ADEF:1; - unsigned char BE0F:1; - unsigned char BE1F:1; - unsigned char CEF:1; - unsigned char AEF:1; - unsigned char FEF:1; - unsigned char SEF:1; - } BIT; - } ECSR; - unsigned char CSSR; - union { - unsigned char BYTE; - struct { - unsigned char SEST:1; - unsigned char :2; - unsigned char MBNST:5; - } BIT; - } MSSR; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char MBSM:2; - } BIT; - } MSMR; - unsigned short TSR; - unsigned short AFSR; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char TSTM:2; - unsigned char TSTE:1; - } BIT; - } TCR; -}; - -struct st_cmt { - union { - unsigned short WORD; - struct { - unsigned short :14; - unsigned short STR1:1; - unsigned short STR0:1; - } BIT; - } CMSTR0; - char wk0[14]; - union { - unsigned short WORD; - struct { - unsigned short :14; - unsigned short STR3:1; - unsigned short STR2:1; - } BIT; - } CMSTR1; -}; - -struct st_cmt0 { - union { - unsigned short WORD; - struct { - unsigned short :9; - unsigned short CMIE:1; - unsigned short :4; - unsigned short CKS:2; - } BIT; - } CMCR; - unsigned short CMCNT; - unsigned short CMCOR; -}; - -struct st_crc { - union { - unsigned char BYTE; - struct { - unsigned char DORCLR:1; - unsigned char :4; - unsigned char LMS:1; - unsigned char GPS:2; - } BIT; - } CRCCR; - unsigned char CRCDIR; - unsigned short CRCDOR; -}; - -struct st_da { - unsigned short DADR0; - unsigned short DADR1; - union { - unsigned char BYTE; - struct { - unsigned char DAOE1:1; - unsigned char DAOE0:1; - unsigned char DAE:1; - } BIT; - } DACR; - union { - unsigned char BYTE; - struct { - unsigned char DPSEL:1; - } BIT; - } DADPR; -}; - -struct st_dmac { - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DMST:1; - } BIT; - } DMAST; -}; - -struct st_dmac0 { - void *DMSAR; - void *DMDAR; - unsigned long DMCRA; - unsigned short DMCRB; - char wk0[2]; - union { - unsigned short WORD; - struct { - unsigned short MD:2; - unsigned short DTS:2; - unsigned short :2; - unsigned short SZ:2; - unsigned short :6; - unsigned short DCTG:2; - } BIT; - } DMTMD; - char wk1[1]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char DTIE:1; - unsigned char ESIE:1; - unsigned char RPTIE:1; - unsigned char SARIE:1; - unsigned char DARIE:1; - } BIT; - } DMINT; - union { - unsigned short WORD; - struct { - unsigned short SM:2; - unsigned short :1; - unsigned short SARA:5; - unsigned short DM:2; - unsigned short :1; - unsigned short DARA:5; - } BIT; - } DMAMD; - char wk2[2]; - unsigned long DMOFR; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DTE:1; - } BIT; - } DMCNT; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char CLRS:1; - unsigned char :3; - unsigned char SWREQ:1; - } BIT; - } DMREQ; - union { - unsigned char BYTE; - struct { - unsigned char ACT:1; - unsigned char :2; - unsigned char DTIF:1; - unsigned char :3; - unsigned char ESIF:1; - } BIT; - } DMSTS; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DISEL:1; - } BIT; - } DMCSL; -}; - -struct st_dmac1 { - void *DMSAR; - void *DMDAR; - unsigned long DMCRA; - unsigned short DMCRB; - char wk0[2]; - union { - unsigned short WORD; - struct { - unsigned short MD:2; - unsigned short DTS:2; - unsigned short :2; - unsigned short SZ:2; - unsigned short :6; - unsigned short DCTG:2; - } BIT; - } DMTMD; - char wk1[1]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char DTIE:1; - unsigned char ESIE:1; - unsigned char RPTIE:1; - unsigned char SARIE:1; - unsigned char DARIE:1; - } BIT; - } DMINT; - union { - unsigned short WORD; - struct { - unsigned short SM:2; - unsigned short :1; - unsigned short SARA:5; - unsigned short DM:2; - unsigned short :1; - unsigned short DARA:5; - } BIT; - } DMAMD; - char wk2[6]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DTE:1; - } BIT; - } DMCNT; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char CLRS:1; - unsigned char :3; - unsigned char SWREQ:1; - } BIT; - } DMREQ; - union { - unsigned char BYTE; - struct { - unsigned char ACT:1; - unsigned char :2; - unsigned char DTIF:1; - unsigned char :3; - unsigned char ESIF:1; - } BIT; - } DMSTS; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DISEL:1; - } BIT; - } DMCSL; -}; - -struct st_dtc { - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char RRS:1; - } BIT; - } DTCCR; - char wk0[3]; - void *DTCVBR; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char SHORT:1; - } BIT; - } DTCADMOD; - char wk1[3]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DTCST:1; - } BIT; - } DTCST; - char wk2[1]; - union { - unsigned short WORD; - struct { - unsigned short ACT:1; - unsigned short :7; - unsigned short VECN:8; - } BIT; - } DTCSTS; -}; - -struct st_edmac { - union { - unsigned long LONG; - struct { - unsigned long :25; - unsigned long DE:1; - unsigned long DL:2; - unsigned long :3; - unsigned long SWR:1; - } BIT; - } EDMR; - char wk0[4]; - union { - unsigned long LONG; - struct { - unsigned long :31; - unsigned long TR:1; - } BIT; - } EDTRR; - char wk1[4]; - union { - unsigned long LONG; - struct { - unsigned long :31; - unsigned long RR:1; - } BIT; - } EDRRR; - char wk2[4]; - void *TDLAR; - char wk3[4]; - void *RDLAR; - char wk4[4]; - union { - unsigned long LONG; - struct { - unsigned long :1; - unsigned long TWB:1; - unsigned long :3; - unsigned long TABT:1; - unsigned long RABT:1; - unsigned long RFCOF:1; - unsigned long ADE:1; - unsigned long ECI:1; - unsigned long TC:1; - unsigned long TDE:1; - unsigned long TFUF:1; - unsigned long FR:1; - unsigned long RDE:1; - unsigned long RFOF:1; - unsigned long :4; - unsigned long CND:1; - unsigned long DLC:1; - unsigned long CD:1; - unsigned long TRO:1; - unsigned long RMAF:1; - unsigned long :2; - unsigned long RRF:1; - unsigned long RTLF:1; - unsigned long RTSF:1; - unsigned long PRE:1; - unsigned long CERF:1; - } BIT; - } EESR; - char wk5[4]; - union { - unsigned long LONG; - struct { - unsigned long :1; - unsigned long TWBIP:1; - unsigned long :3; - unsigned long TABTIP:1; - unsigned long RABTIP:1; - unsigned long RFCOFIP:1; - unsigned long ADEIP:1; - unsigned long ECIIP:1; - unsigned long TCIP:1; - unsigned long TDEIP:1; - unsigned long TFUFIP:1; - unsigned long FRIP:1; - unsigned long RDEIP:1; - unsigned long RFOFIP:1; - unsigned long :4; - unsigned long CNDIP:1; - unsigned long DLCIP:1; - unsigned long CDIP:1; - unsigned long TROIP:1; - unsigned long RMAFIP:1; - unsigned long :2; - unsigned long RRFIP:1; - unsigned long RTLFIP:1; - unsigned long RTSFIP:1; - unsigned long PREIP:1; - unsigned long CERFIP:1; - } BIT; - } EESIPR; - char wk6[4]; - union { - unsigned long LONG; - struct { - unsigned long :20; - unsigned long CNDCE:1; - unsigned long DLCCE:1; - unsigned long CDCE:1; - unsigned long TROCE:1; - unsigned long RMAFCE:1; - unsigned long :2; - unsigned long RRFCE:1; - unsigned long RTLFCE:1; - unsigned long RTSFCE:1; - unsigned long PRECE:1; - unsigned long CERFCE:1; - } BIT; - } TRSCER; - char wk7[4]; - union { - unsigned long LONG; - struct { - unsigned long :16; - unsigned long MFC:16; - } BIT; - } RMFCR; - char wk8[4]; - union { - unsigned long LONG; - struct { - unsigned long :21; - unsigned long TFT:11; - } BIT; - } TFTR; - char wk9[4]; - union { - unsigned long LONG; - struct { - unsigned long :19; - unsigned long TFD:5; - unsigned long :3; - unsigned long RFD:5; - } BIT; - } FDR; - char wk10[4]; - union { - unsigned long LONG; - struct { - unsigned long :30; - unsigned long RNC:1; - unsigned long RNR:1; - } BIT; - } RMCR; - char wk11[8]; - union { - unsigned long LONG; - struct { - unsigned long :16; - unsigned long UNDER:16; - } BIT; - } TFUCR; - union { - unsigned long LONG; - struct { - unsigned long :16; - unsigned long OVER:16; - } BIT; - } RFOCR; - union { - unsigned long LONG; - struct { - unsigned long :31; - unsigned long TLB:1; - } BIT; - } IOSR; - union { - unsigned long LONG; - struct { - unsigned long :13; - unsigned long RFFO:3; - unsigned long :13; - unsigned long RFDO:3; - } BIT; - } FCFTR; - char wk12[4]; - union { - unsigned long LONG; - struct { - unsigned long :14; - unsigned long PADS:2; - unsigned long :10; - unsigned long PADR:6; - } BIT; - } RPADIR; - union { - unsigned long LONG; - struct { - unsigned long :27; - unsigned long TIM:1; - unsigned long :3; - unsigned long TIS:1; - } BIT; - } TRIMD; - char wk13[72]; - void *RBWAR; - void *RDFAR; - char wk14[4]; - void *TBRAR; - void *TDFAR; -}; - -struct st_etherc { - union { - unsigned long LONG; - struct { - unsigned long :11; - unsigned long TPC:1; - unsigned long ZPE:1; - unsigned long PFR:1; - unsigned long RXF:1; - unsigned long TXF:1; - unsigned long :3; - unsigned long PRCEF:1; - unsigned long :2; - unsigned long MPDE:1; - unsigned long :2; - unsigned long RE:1; - unsigned long TE:1; - unsigned long :1; - unsigned long ILB:1; - unsigned long RTM:1; - unsigned long DM:1; - unsigned long PRM:1; - } BIT; - } ECMR; - char wk0[4]; - union { - unsigned long LONG; - struct { - unsigned long :20; - unsigned long RFL:12; - } BIT; - } RFLR; - char wk1[4]; - union { - unsigned long LONG; - struct { - unsigned long :26; - unsigned long BFR:1; - unsigned long PSRTO:1; - unsigned long :1; - unsigned long LCHNG:1; - unsigned long MPD:1; - unsigned long ICD:1; - } BIT; - } ECSR; - char wk2[4]; - union { - unsigned long LONG; - struct { - unsigned long :26; - unsigned long BFSIPR:1; - unsigned long PSRTOIP:1; - unsigned long :1; - unsigned long LCHNGIP:1; - unsigned long MPDIP:1; - unsigned long ICDIP:1; - } BIT; - } ECSIPR; - char wk3[4]; - union { - unsigned long LONG; - struct { - unsigned long :28; - unsigned long MDI:1; - unsigned long MDO:1; - unsigned long MMD:1; - unsigned long MDC:1; - } BIT; - } PIR; - char wk4[4]; - union { - unsigned long LONG; - struct { - unsigned long :31; - unsigned long LMON:1; - } BIT; - } PSR; - char wk5[20]; - union { - unsigned long LONG; - struct { - unsigned long :12; - unsigned long RMD:20; - } BIT; - } RDMLR; - char wk6[12]; - union { - unsigned long LONG; - struct { - unsigned long :27; - unsigned long IPG:5; - } BIT; - } IPGR; - union { - unsigned long LONG; - struct { - unsigned long :16; - unsigned long AP:16; - } BIT; - } APR; - union { - unsigned long LONG; - struct { - unsigned long :16; - unsigned long MP:16; - } BIT; - } MPR; - char wk7[4]; - union { - unsigned long LONG; - struct { - unsigned long :24; - unsigned long RPAUSE:8; - } BIT; - } RFCF; - union { - unsigned long LONG; - struct { - unsigned long :16; - unsigned long TPAUSE:16; - } BIT; - } TPAUSER; - union { - unsigned long LONG; - struct { - unsigned long :24; - unsigned long TXP:8; - } BIT; - } TPAUSECR; - union { - unsigned long LONG; - struct { - unsigned long :16; - unsigned long BCF:16; - } BIT; - } BCFRR; - char wk8[80]; - unsigned long MAHR; - char wk9[4]; - union { - unsigned long LONG; - struct { - unsigned long :16; - unsigned long MA:16; - } BIT; - } MALR; - char wk10[4]; - unsigned long TROCR; - unsigned long CDCR; - unsigned long LCCR; - unsigned long CNDCR; - char wk11[4]; - unsigned long CEFCR; - unsigned long FRECR; - unsigned long TSFRCR; - unsigned long TLFRCR; - unsigned long RFCR; - unsigned long MAFCR; -}; - -struct st_exdmac { - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DMST:1; - } BIT; - } EDMAST; - char wk0[479]; - unsigned long CLSBR0; - unsigned long CLSBR1; - unsigned long CLSBR2; - unsigned long CLSBR3; - unsigned long CLSBR4; - unsigned long CLSBR5; - unsigned long CLSBR6; - unsigned long CLSBR7; -}; - -struct st_exdmac0 { - void *EDMSAR; - void *EDMDAR; - unsigned long EDMCRA; - unsigned short EDMCRB; - char wk0[2]; - union { - unsigned short WORD; - struct { - unsigned short MD:2; - unsigned short DTS:2; - unsigned short :2; - unsigned short SZ:2; - unsigned short :6; - unsigned short DCTG:2; - } BIT; - } EDMTMD; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char DACKS:1; - unsigned char DACKE:1; - unsigned char DACKW:1; - } BIT; - } EDMOMD; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char DTIE:1; - unsigned char ESIE:1; - unsigned char RPTIE:1; - unsigned char SARIE:1; - unsigned char DARIE:1; - } BIT; - } EDMINT; - union { - unsigned long LONG; - struct { - unsigned long :14; - unsigned long AMS:1; - unsigned long DIR:1; - unsigned long SM:2; - unsigned long :1; - unsigned long SARA:5; - unsigned long DM:2; - unsigned long :1; - unsigned long DARA:5; - } BIT; - } EDMAMD; - unsigned long EDMOFR; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DTE:1; - } BIT; - } EDMCNT; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char CLRS:1; - unsigned char :3; - unsigned char SWREQ:1; - } BIT; - } EDMREQ; - union { - unsigned char BYTE; - struct { - unsigned char ACT:1; - unsigned char :2; - unsigned char DTIF:1; - unsigned char :3; - unsigned char ESIF:1; - } BIT; - } EDMSTS; - char wk1[1]; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char DREQS:2; - } BIT; - } EDMRMD; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char EREQ:1; - } BIT; - } EDMERF; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char PREQ:1; - } BIT; - } EDMPRF; -}; - -struct st_exdmac1 { - void *EDMSAR; - void *EDMDAR; - unsigned long EDMCRA; - unsigned short EDMCRB; - char wk0[2]; - union { - unsigned short WORD; - struct { - unsigned short MD:2; - unsigned short DTS:2; - unsigned short :2; - unsigned short SZ:2; - unsigned short :6; - unsigned short DCTG:2; - } BIT; - } EDMTMD; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char DACKS:1; - unsigned char DACKE:1; - unsigned char DACKW:1; - } BIT; - } EDMOMD; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char DTIE:1; - unsigned char ESIE:1; - unsigned char RPTIE:1; - unsigned char SARIE:1; - unsigned char DARIE:1; - } BIT; - } EDMINT; - union { - unsigned long LONG; - struct { - unsigned long :14; - unsigned long AMS:1; - unsigned long DIR:1; - unsigned long SM:2; - unsigned long :1; - unsigned long SARA:5; - unsigned long DM:2; - unsigned long :1; - unsigned long DARA:5; - } BIT; - } EDMAMD; - char wk1[4]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DTE:1; - } BIT; - } EDMCNT; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char CLRS:1; - unsigned char :3; - unsigned char SWREQ:1; - } BIT; - } EDMREQ; - union { - unsigned char BYTE; - struct { - unsigned char ACT:1; - unsigned char :2; - unsigned char DTIF:1; - unsigned char :3; - unsigned char ESIF:1; - } BIT; - } EDMSTS; - char wk2[1]; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char DREQS:2; - } BIT; - } EDMRMD; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char EREQ:1; - } BIT; - } EDMERF; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char PREQ:1; - } BIT; - } EDMPRF; -}; - -struct st_flash { - char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char FLWE:2; - } BIT; - } FWEPROR; - char wk1[7799160]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char FRDMD:1; - } BIT; - } FMODR; - char wk2[13]; - union { - unsigned char BYTE; - struct { - unsigned char ROMAE:1; - unsigned char :2; - unsigned char CMDLK:1; - unsigned char DFLAE:1; - unsigned char :1; - unsigned char DFLRPE:1; - unsigned char DFLWPE:1; - } BIT; - } FASTAT; - union { - unsigned char BYTE; - struct { - unsigned char ROMAEIE:1; - unsigned char :2; - unsigned char CMDLKIE:1; - unsigned char DFLAEIE:1; - unsigned char :1; - unsigned char DFLRPEIE:1; - unsigned char DFLWPEIE:1; - } BIT; - } FAEINT; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char FRDYIE:1; - } BIT; - } FRDYIE; - char wk3[45]; - union { - unsigned short WORD; - struct { - unsigned short KEY:8; - unsigned short DBRE07:1; - unsigned short DBRE06:1; - unsigned short DBRE05:1; - unsigned short DBRE04:1; - unsigned short DBRE03:1; - unsigned short DBRE02:1; - unsigned short DBRE01:1; - unsigned short DBRE00:1; - } BIT; - } DFLRE0; - union { - unsigned short WORD; - struct { - unsigned short KEY:8; - unsigned short DBRE15:1; - unsigned short DBRE14:1; - unsigned short DBRE13:1; - unsigned short DBRE12:1; - unsigned short DBRE11:1; - unsigned short DBRE10:1; - unsigned short DBRE09:1; - unsigned short DBRE08:1; - } BIT; - } DFLRE1; - char wk4[12]; - union { - unsigned short WORD; - struct { - unsigned short KEY:8; - unsigned short DBWE07:1; - unsigned short DBWE06:1; - unsigned short DBWE05:1; - unsigned short DBWE04:1; - unsigned short DBWE03:1; - unsigned short DBWE02:1; - unsigned short DBWE01:1; - unsigned short DBWE00:1; - } BIT; - } DFLWE0; - union { - unsigned short WORD; - struct { - unsigned short KEY:8; - unsigned short DBWE15:1; - unsigned short DBWE14:1; - unsigned short DBWE13:1; - unsigned short DBWE12:1; - unsigned short DBWE11:1; - unsigned short DBWE10:1; - unsigned short DBWE09:1; - unsigned short DBWE08:1; - } BIT; - } DFLWE1; - union { - unsigned short WORD; - struct { - unsigned short KEY:8; - unsigned short :7; - unsigned short FCRME:1; - } BIT; - } FCURAME; - char wk5[15194]; - union { - unsigned char BYTE; - struct { - unsigned char FRDY:1; - unsigned char ILGLERR:1; - unsigned char ERSERR:1; - unsigned char PRGERR:1; - unsigned char SUSRDY:1; - unsigned char :1; - unsigned char ERSSPD:1; - unsigned char PRGSPD:1; - } BIT; - } FSTATR0; - union { - unsigned char BYTE; - struct { - unsigned char FCUERR:1; - unsigned char :2; - unsigned char FLOCKST:1; - } BIT; - } FSTATR1; - union { - unsigned short WORD; - struct { - unsigned short FEKEY:8; - unsigned short FENTRYD:1; - unsigned short :6; - unsigned short FENTRY0:1; - } BIT; - } FENTRYR; - union { - unsigned short WORD; - struct { - unsigned short FPKEY:8; - unsigned short :7; - unsigned short FPROTCN:1; - } BIT; - } FPROTR; - union { - unsigned short WORD; - struct { - unsigned short FPKEY:8; - unsigned short :7; - unsigned short FRESET:1; - } BIT; - } FRESETR; - char wk6[2]; - union { - unsigned short WORD; - struct { - unsigned short CMDR:8; - unsigned short PCMDR:8; - } BIT; - } FCMDR; - char wk7[12]; - union { - unsigned short WORD; - struct { - unsigned short :15; - unsigned short ESUSPMD:1; - } BIT; - } FCPSR; - union { - unsigned short WORD; - struct { - unsigned short :5; - unsigned short BCADR:8; - unsigned short :2; - unsigned short BCSIZE:1; - } BIT; - } DFLBCCNT; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short PEERRST:8; - } BIT; - } FPESTAT; - union { - unsigned short WORD; - struct { - unsigned short :15; - unsigned short BCST:1; - } BIT; - } DFLBCSTAT; - char wk8[24]; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short PCKA:8; - } BIT; - } PCKAR; -}; - -struct st_icu { - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char IR:1; - } BIT; - } IR[255]; - char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DTCE:1; - } BIT; - } DTCER[255]; - char wk1[1]; - union { - unsigned char BYTE; - struct { - unsigned char IEN7:1; - unsigned char IEN6:1; - unsigned char IEN5:1; - unsigned char IEN4:1; - unsigned char IEN3:1; - unsigned char IEN2:1; - unsigned char IEN1:1; - unsigned char IEN0:1; - } BIT; - } IER[32]; - char wk2[192]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char SWINT:1; - } BIT; - } SWINTR; - char wk3[15]; - union { - unsigned short WORD; - struct { - unsigned short FIEN:1; - unsigned short :7; - unsigned short FVCT:8; - } BIT; - } FIR; - char wk4[14]; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char IPR:4; - } BIT; - } IPR[144]; - char wk5[112]; - unsigned char DMRSR0; - char wk6[3]; - unsigned char DMRSR1; - char wk7[3]; - unsigned char DMRSR2; - char wk8[3]; - unsigned char DMRSR3; - char wk9[243]; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char IRQMD:2; - } BIT; - } IRQCR[16]; - char wk10[112]; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char OSTST:1; - unsigned char LVDST:1; - unsigned char NMIST:1; - } BIT; - } NMISR; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char OSTEN:1; - unsigned char LVDEN:1; - unsigned char NMIEN:1; - } BIT; - } NMIER; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char OSTCLR:1; - unsigned char :1; - unsigned char NMICLR:1; - } BIT; - } NMICLR; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char NMIMD:1; - } BIT; - } NMICR; -}; - -struct st_ioport { - union { - unsigned char BYTE; - struct { - unsigned char CS7E:1; - unsigned char CS6E:1; - unsigned char CS5E:1; - unsigned char CS4E:1; - unsigned char CS3E:1; - unsigned char CS2E:1; - unsigned char CS1E:1; - unsigned char CS0E:1; - } BIT; - } PF0CSE; - union { - unsigned char BYTE; - struct { - unsigned char CS7S:2; - unsigned char CS6S:2; - unsigned char CS5S:2; - unsigned char CS4S:2; - } BIT; - } PF1CSS; - union { - unsigned char BYTE; - struct { - unsigned char CS3S:2; - unsigned char CS2S:2; - unsigned char CS1S:2; - unsigned char :1; - unsigned char CS0S:1; - } BIT; - } PF2CSS; - union { - unsigned char BYTE; - struct { - unsigned char A23E:1; - unsigned char A22E:1; - unsigned char A21E:1; - unsigned char A20E:1; - unsigned char A19E:1; - unsigned char A18E:1; - unsigned char A17E:1; - unsigned char A16E:1; - } BIT; - } PF3BUS; - union { - unsigned char BYTE; - struct { - unsigned char A15E:1; - unsigned char A14E:1; - unsigned char A13E:1; - unsigned char A12E:1; - unsigned char A11E:1; - unsigned char A10E:1; - unsigned char ADRLE:2; - } BIT; - } PF4BUS; - union { - unsigned char BYTE; - struct { - unsigned char WR32BC32E:1; - unsigned char WR1BC1E:1; - unsigned char DH32E:1; - unsigned char DHE:1; - unsigned char :2; - unsigned char ADRHMS:1; - } BIT; - } PF5BUS; - union { - unsigned char BYTE; - struct { - unsigned char SDCLKE:1; - unsigned char DQM1E:1; - unsigned char :1; - unsigned char MDSDE:1; - unsigned char :2; - unsigned char WAITS:2; - } BIT; - } PF6BUS; - union { - unsigned char BYTE; - struct { - unsigned char EDMA1S:2; - unsigned char EDMA0S:2; - } BIT; - } PF7DMA; - union { - unsigned char BYTE; - struct { - unsigned char ITS15:1; - unsigned char :1; - unsigned char ITS13:1; - unsigned char :1; - unsigned char ITS11:1; - unsigned char ITS10:1; - unsigned char ITS9:1; - unsigned char ITS8:1; - } BIT; - } PF8IRQ; - union { - unsigned char BYTE; - struct { - unsigned char ITS7:1; - unsigned char ITS6:1; - unsigned char ITS5:1; - unsigned char ITS4:1; - unsigned char ITS3:1; - unsigned char ITS2:1; - unsigned char ITS1:1; - unsigned char ITS0:1; - } BIT; - } PF9IRQ; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char ADTRG0S:1; - } BIT; - } PFAADC; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char TMR3S:1; - unsigned char TMR2S:1; - unsigned char TMR1S:1; - unsigned char TMR0S:1; - } BIT; - } PFBTMR; - union { - unsigned char BYTE; - struct { - unsigned char TCLKS:1; - unsigned char MTUS6:1; - unsigned char MTUS5:1; - unsigned char MTUS4:1; - unsigned char MTUS3:1; - unsigned char MTUS2:1; - unsigned char MTUS1:1; - unsigned char MTUS0:1; - } BIT; - } PFCMTU; - union { - unsigned char BYTE; - struct { - unsigned char TCLKS:1; - unsigned char MTUS6:1; - } BIT; - } PFDMTU; - union { - unsigned char BYTE; - struct { - unsigned char EE:1; - unsigned char :2; - unsigned char PHYMODE:1; - unsigned char ENETE3:1; - unsigned char ENETE2:1; - unsigned char ENETE1:1; - unsigned char ENETE0:1; - } BIT; - } PFENET; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char SCI6S:1; - unsigned char :2; - unsigned char SCI3S:1; - unsigned char SCI2S:1; - unsigned char SCI1S:1; - } BIT; - } PFFSCI; - union { - unsigned char BYTE; - struct { - unsigned char SSL3E:1; - unsigned char SSL2E:1; - unsigned char SSL1E:1; - unsigned char SSL0E:1; - unsigned char MISOE:1; - unsigned char MOSIE:1; - unsigned char RSPCKE:1; - unsigned char RSPIS:1; - } BIT; - } PFGSPI; - union { - unsigned char BYTE; - struct { - unsigned char SSL3E:1; - unsigned char SSL2E:1; - unsigned char SSL1E:1; - unsigned char SSL0E:1; - unsigned char MISOE:1; - unsigned char MOSIE:1; - unsigned char RSPCKE:1; - unsigned char RSPIS:1; - } BIT; - } PFHSPI; - char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char CAN0E:1; - } BIT; - } PFJCAN; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char USBE:1; - unsigned char PDHZS:1; - unsigned char PUPHZS:1; - unsigned char USBMD:2; - } BIT; - } PFKUSB; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char USBE:1; - unsigned char PDHZS:1; - unsigned char PUPHZS:1; - unsigned char USBMD:2; - } BIT; - } PFLUSB; - union { - unsigned char BYTE; - struct { - unsigned char POE7E:1; - unsigned char POE6E:1; - unsigned char POE5E:1; - unsigned char POE4E:1; - unsigned char POE3E:1; - unsigned char POE2E:1; - unsigned char POE1E:1; - unsigned char POE0E:1; - } BIT; - } PFMPOE; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char POE9E:1; - unsigned char POE8E:1; - } BIT; - } PFNPOE; -}; - -struct st_iwdt { - unsigned char IWDTRR; - char wk0[1]; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short CKS:4; - unsigned short :2; - unsigned short TOPS:2; - } BIT; - } IWDTCR; - union { - unsigned short WORD; - struct { - unsigned short :1; - unsigned short UNDFF:1; - unsigned short CNTVAL:14; - } BIT; - } IWDTSR; -}; - -struct st_mtu0 { - union { - unsigned char BYTE; - struct { - unsigned char CCLR:3; - unsigned char CKEG:2; - unsigned char TPSC:3; - } BIT; - } TCR; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char BFE:1; - unsigned char BFB:1; - unsigned char BFA:1; - unsigned char MD:4; - } BIT; - } TMDR; - union { - unsigned char BYTE; - struct { - unsigned char IOB:4; - unsigned char IOA:4; - } BIT; - } TIORH; - union { - unsigned char BYTE; - struct { - unsigned char IOD:4; - unsigned char IOC:4; - } BIT; - } TIORL; - union { - unsigned char BYTE; - struct { - unsigned char TTGE:1; - unsigned char :2; - unsigned char TCIEV:1; - unsigned char TGIED:1; - unsigned char TGIEC:1; - unsigned char TGIEB:1; - unsigned char TGIEA:1; - } BIT; - } TIER; - unsigned char TSR; - unsigned short TCNT; - unsigned short TGRA; - unsigned short TGRB; - unsigned short TGRC; - unsigned short TGRD; - char wk0[16]; - unsigned short TGRE; - unsigned short TGRF; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char TGIEF:1; - unsigned char TGIEE:1; - } BIT; - } TIER2; - char wk1[1]; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char TTSE:1; - unsigned char TTSB:1; - unsigned char TTSA:1; - } BIT; - } TBTM; -}; - -struct st_mtu1 { - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char CCLR:2; - unsigned char CKEG:2; - unsigned char TPSC:3; - } BIT; - } TCR; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char MD:4; - } BIT; - } TMDR; - union { - unsigned char BYTE; - struct { - unsigned char IOB:4; - unsigned char IOA:4; - } BIT; - } TIOR; - char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char TTGE:1; - unsigned char :1; - unsigned char TCIEU:1; - unsigned char TCIEV:1; - unsigned char :2; - unsigned char TGIEB:1; - unsigned char TGIEA:1; - } BIT; - } TIER; - union { - unsigned char BYTE; - struct { - unsigned char TCFD:1; - } BIT; - } TSR; - unsigned short TCNT; - unsigned short TGRA; - unsigned short TGRB; - char wk1[4]; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char I2BE:1; - unsigned char I2AE:1; - unsigned char I1BE:1; - unsigned char I1AE:1; - } BIT; - } TICCR; -}; - -struct st_mtu2 { - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char CCLR:2; - unsigned char CKEG:2; - unsigned char TPSC:3; - } BIT; - } TCR; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char MD:4; - } BIT; - } TMDR; - union { - unsigned char BYTE; - struct { - unsigned char IOB:4; - unsigned char IOA:4; - } BIT; - } TIOR; - char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char TTGE:1; - unsigned char :1; - unsigned char TCIEU:1; - unsigned char TCIEV:1; - unsigned char :2; - unsigned char TGIEB:1; - unsigned char TGIEA:1; - } BIT; - } TIER; - union { - unsigned char BYTE; - struct { - unsigned char TCFD:1; - } BIT; - } TSR; - unsigned short TCNT; - unsigned short TGRA; - unsigned short TGRB; -}; - -struct st_mtu3 { - union { - unsigned char BYTE; - struct { - unsigned char CCLR:3; - unsigned char CKEG:2; - unsigned char TPSC:3; - } BIT; - } TCR; - char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char BFB:1; - unsigned char BFA:1; - unsigned char MD:4; - } BIT; - } TMDR; - char wk1[1]; - union { - unsigned char BYTE; - struct { - unsigned char IOB:4; - unsigned char IOA:4; - } BIT; - } TIORH; - union { - unsigned char BYTE; - struct { - unsigned char IOD:4; - unsigned char IOC:4; - } BIT; - } TIORL; - char wk2[2]; - union { - unsigned char BYTE; - struct { - unsigned char TTGE:1; - unsigned char :2; - unsigned char TCIEV:1; - unsigned char TGIED:1; - unsigned char TGIEC:1; - unsigned char TGIEB:1; - unsigned char TGIEA:1; - } BIT; - } TIER; - char wk3[7]; - unsigned short TCNT; - char wk4[6]; - unsigned short TGRA; - unsigned short TGRB; - char wk5[8]; - unsigned short TGRC; - unsigned short TGRD; - char wk6[4]; - union { - unsigned char BYTE; - struct { - unsigned char TCFD:1; - } BIT; - } TSR; - char wk7[11]; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char TTSB:1; - unsigned char TTSA:1; - } BIT; - } TBTM; -}; - -struct st_mtu4 { - char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char CCLR:3; - unsigned char CKEG:2; - unsigned char TPSC:3; - } BIT; - } TCR; - char wk1[1]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char BFB:1; - unsigned char BFA:1; - unsigned char MD:4; - } BIT; - } TMDR; - char wk2[2]; - union { - unsigned char BYTE; - struct { - unsigned char IOB:4; - unsigned char IOA:4; - } BIT; - } TIORH; - union { - unsigned char BYTE; - struct { - unsigned char IOD:4; - unsigned char IOC:4; - } BIT; - } TIORL; - char wk3[1]; - union { - unsigned char BYTE; - struct { - unsigned char TTGE:1; - unsigned char TTGE2:1; - unsigned char :1; - unsigned char TCIEV:1; - unsigned char TGIED:1; - unsigned char TGIEC:1; - unsigned char TGIEB:1; - unsigned char TGIEA:1; - } BIT; - } TIER; - char wk4[8]; - unsigned short TCNT; - char wk5[8]; - unsigned short TGRA; - unsigned short TGRB; - char wk6[8]; - unsigned short TGRC; - unsigned short TGRD; - char wk7[1]; - union { - unsigned char BYTE; - struct { - unsigned char TCFD:1; - } BIT; - } TSR; - char wk8[11]; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char TTSB:1; - unsigned char TTSA:1; - } BIT; - } TBTM; - char wk9[6]; - union { - unsigned short WORD; - struct { - unsigned short BF:2; - unsigned short :6; - unsigned short UT4AE:1; - unsigned short DT4AE:1; - unsigned short UT4BE:1; - unsigned short DT4BE:1; - unsigned short ITA3AE:1; - unsigned short ITA4VE:1; - unsigned short ITB3AE:1; - unsigned short ITB4VE:1; - } BIT; - } TADCR; - char wk10[2]; - unsigned short TADCORA; - unsigned short TADCORB; - unsigned short TADCOBRA; - unsigned short TADCOBRB; -}; - -struct st_mtu5 { - unsigned short TCNTU; - unsigned short TGRU; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char TPSC:2; - } BIT; - } TCRU; - char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char IOC:5; - } BIT; - } TIORU; - char wk1[9]; - unsigned short TCNTV; - unsigned short TGRV; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char TPSC:2; - } BIT; - } TCRV; - char wk2[1]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char IOC:5; - } BIT; - } TIORV; - char wk3[9]; - unsigned short TCNTW; - unsigned short TGRW; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char TPSC:2; - } BIT; - } TCRW; - char wk4[1]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char IOC:5; - } BIT; - } TIORW; - char wk5[11]; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char TGIE5U:1; - unsigned char TGIE5V:1; - unsigned char TGIE5W:1; - } BIT; - } TIER; - char wk6[1]; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char CSTU5:1; - unsigned char CSTV5:1; - unsigned char CSTW5:1; - } BIT; - } TSTR; - char wk7[1]; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char CMPCLR5U:1; - unsigned char CMPCLR5V:1; - unsigned char CMPCLR5W:1; - } BIT; - } TCNTCMPCLR; -}; - -struct st_mtua { - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char OE4D:1; - unsigned char OE4C:1; - unsigned char OE3D:1; - unsigned char OE4B:1; - unsigned char OE4A:1; - unsigned char OE3B:1; - } BIT; - } TOER; - char wk0[2]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char BDC:1; - unsigned char N:1; - unsigned char P:1; - unsigned char FB:1; - unsigned char WF:1; - unsigned char VF:1; - unsigned char UF:1; - } BIT; - } TGCR; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char PSYE:1; - unsigned char :2; - unsigned char TOCL:1; - unsigned char TOCS:1; - unsigned char OLSN:1; - unsigned char OLSP:1; - } BIT; - } TOCR1; - union { - unsigned char BYTE; - struct { - unsigned char BF:2; - unsigned char OLS3N:1; - unsigned char OLS3P:1; - unsigned char OLS2N:1; - unsigned char OLS2P:1; - unsigned char OLS1N:1; - unsigned char OLS1P:1; - } BIT; - } TOCR2; - char wk1[4]; - unsigned short TCDR; - unsigned short TDDR; - char wk2[8]; - unsigned short TCNTS; - unsigned short TCBR; - char wk3[12]; - union { - unsigned char BYTE; - struct { - unsigned char T3AEN:1; - unsigned char T3ACOR:3; - unsigned char T4VEN:1; - unsigned char T4VCOR:3; - } BIT; - } TITCR; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char T3ACNT:3; - unsigned char :1; - unsigned char T4VCNT:3; - } BIT; - } TITCNT; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char BTE:2; - } BIT; - } TBTER; - char wk4[1]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char TDER:1; - } BIT; - } TDER; - char wk5[1]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char OLS3N:1; - unsigned char OLS3P:1; - unsigned char OLS2N:1; - unsigned char OLS2P:1; - unsigned char OLS1N:1; - unsigned char OLS1P:1; - } BIT; - } TOLBR; - char wk6[41]; - union { - unsigned char BYTE; - struct { - unsigned char CCE:1; - unsigned char :6; - unsigned char WRE:1; - } BIT; - } TWCR; - char wk7[31]; - union { - unsigned char BYTE; - struct { - unsigned char CST4:1; - unsigned char CST3:1; - unsigned char :3; - unsigned char CST2:1; - unsigned char CST1:1; - unsigned char CST0:1; - } BIT; - } TSTR; - union { - unsigned char BYTE; - struct { - unsigned char SYNC4:1; - unsigned char SYNC3:1; - unsigned char :3; - unsigned char SYNC2:1; - unsigned char SYNC1:1; - unsigned char SYNC0:1; - } BIT; - } TSYR; - char wk8[2]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char RWE:1; - } BIT; - } TRWER; -}; - -struct st_poe { - union { - unsigned short WORD; - struct { - unsigned short POE3F:1; - unsigned short POE2F:1; - unsigned short POE1F:1; - unsigned short POE0F:1; - unsigned short :3; - unsigned short PIE1:1; - unsigned short POE3M:2; - unsigned short POE2M:2; - unsigned short POE1M:2; - unsigned short POE0M:2; - } BIT; - } ICSR1; - union { - unsigned short WORD; - struct { - unsigned short OSF1:1; - unsigned short :5; - unsigned short OCE1:1; - unsigned short OIE1:1; - } BIT; - } OCSR1; - union { - unsigned short WORD; - struct { - unsigned short POE7F:1; - unsigned short POE6F:1; - unsigned short POE5F:1; - unsigned short POE4F:1; - unsigned short :3; - unsigned short PIE2:1; - unsigned short POE7M:2; - unsigned short POE6M:2; - unsigned short POE5M:2; - unsigned short POE4M:2; - } BIT; - } ICSR2; - union { - unsigned short WORD; - struct { - unsigned short OSF2:1; - unsigned short :5; - unsigned short OCE2:1; - unsigned short OIE2:1; - } BIT; - } OCSR2; - union { - unsigned short WORD; - struct { - unsigned short :3; - unsigned short POE8F:1; - unsigned short :2; - unsigned short POE8E:1; - unsigned short PIE3:1; - unsigned short :6; - unsigned short POE8M:2; - } BIT; - } ICSR3; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char CH6HIZ:1; - unsigned char CH910HIZ:1; - unsigned char CH0HIZ:1; - unsigned char CH34HIZ:1; - } BIT; - } SPOER; - union { - unsigned char BYTE; - struct { - unsigned char PE7ZE:1; - unsigned char PE6ZE:1; - unsigned char PE5ZE:1; - unsigned char PE4ZE:1; - unsigned char PE3ZE:1; - unsigned char PE2ZE:1; - unsigned char PE1ZE:1; - unsigned char PE0ZE:1; - } BIT; - } POECR1; - union { - unsigned short WORD; - struct { - unsigned short :1; - unsigned short P1CZEA:1; - unsigned short P2CZEA:1; - unsigned short P3CZEA:1; - unsigned short :1; - unsigned short P1CZEB:1; - unsigned short P2CZEB:1; - unsigned short P3CZEB:1; - unsigned short :1; - unsigned short P4CZE:1; - unsigned short P5CZE:1; - unsigned short P6CZE:1; - } BIT; - } POECR2; - union { - unsigned short WORD; - struct { - unsigned short :3; - unsigned short POE9F:1; - unsigned short :2; - unsigned short POE9E:1; - unsigned short PIE4:1; - unsigned short :6; - unsigned short POE9M:2; - } BIT; - } ICSR4; -}; - -struct st_port0 { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char :1; - unsigned char B5:1; - unsigned char :1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char :1; - unsigned char B5:1; - unsigned char :1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char :1; - unsigned char B5:1; - unsigned char :1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char :1; - unsigned char B5:1; - unsigned char :1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; - char wk3[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char :1; - unsigned char B5:1; - unsigned char :1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ODR; -}; - -struct st_port1 { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; - char wk3[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ODR; -}; - -struct st_port2 { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; - char wk3[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ODR; -}; - -struct st_port3 { - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; - char wk3[31]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ODR; -}; - -struct st_port4 { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; -}; - -struct st_port5 { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; -}; - -struct st_port6 { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; -}; - -struct st_port7 { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; -}; - -struct st_port8 { - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; -}; - -struct st_port9 { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; - char wk3[95]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; -}; - -struct st_porta { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; - char wk3[95]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; -}; - -struct st_portb { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; - char wk3[95]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; -}; - -struct st_portc { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; - char wk3[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ODR; - char wk4[63]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; -}; - -struct st_portd { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; - char wk3[95]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; -}; - -struct st_porte { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; - char wk3[95]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; -}; - -struct st_portf { - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; -}; - -struct st_portg { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PORT; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } ICR; - char wk3[95]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; -}; - -struct st_ppg0 { - union { - unsigned char BYTE; - struct { - unsigned char G3CMS:2; - unsigned char G2CMS:2; - unsigned char G1CMS:2; - unsigned char G0CMS:2; - } BIT; - } PCR; - union { - unsigned char BYTE; - struct { - unsigned char G3INV:1; - unsigned char G2INV:1; - unsigned char G1INV:1; - unsigned char G0INV:1; - unsigned char G3NOV:1; - unsigned char G2NOV:1; - unsigned char G1NOV:1; - unsigned char G0NOV:1; - } BIT; - } PMR; - union { - unsigned char BYTE; - struct { - unsigned char NDER15:1; - unsigned char NDER14:1; - unsigned char NDER13:1; - unsigned char NDER12:1; - unsigned char NDER11:1; - unsigned char NDER10:1; - unsigned char NDER9:1; - unsigned char NDER8:1; - } BIT; - } NDERH; - union { - unsigned char BYTE; - struct { - unsigned char NDER7:1; - unsigned char NDER6:1; - unsigned char NDER5:1; - unsigned char NDER4:1; - unsigned char NDER3:1; - unsigned char NDER2:1; - unsigned char NDER1:1; - unsigned char NDER0:1; - } BIT; - } NDERL; - union { - unsigned char BYTE; - struct { - unsigned char POD15:1; - unsigned char POD14:1; - unsigned char POD13:1; - unsigned char POD12:1; - unsigned char POD11:1; - unsigned char POD10:1; - unsigned char POD9:1; - unsigned char POD8:1; - } BIT; - } PODRH; - union { - unsigned char BYTE; - struct { - unsigned char POD7:1; - unsigned char POD6:1; - unsigned char POD5:1; - unsigned char POD4:1; - unsigned char POD3:1; - unsigned char POD2:1; - unsigned char POD1:1; - unsigned char POD0:1; - } BIT; - } PODRL; - union { - unsigned char BYTE; - struct { - unsigned char NDR15:1; - unsigned char NDR14:1; - unsigned char NDR13:1; - unsigned char NDR12:1; - unsigned char NDR11:1; - unsigned char NDR10:1; - unsigned char NDR9:1; - unsigned char NDR8:1; - } BIT; - } NDRH; - union { - unsigned char BYTE; - struct { - unsigned char NDR7:1; - unsigned char NDR6:1; - unsigned char NDR5:1; - unsigned char NDR4:1; - unsigned char NDR3:1; - unsigned char NDR2:1; - unsigned char NDR1:1; - unsigned char NDR0:1; - } BIT; - } NDRL; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char NDR11:1; - unsigned char NDR10:1; - unsigned char NDR9:1; - unsigned char NDR8:1; - } BIT; - } NDRH2; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char NDR3:1; - unsigned char NDR2:1; - unsigned char NDR1:1; - unsigned char NDR0:1; - } BIT; - } NDRL2; -}; - -struct st_ppg1 { - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char PTRSL:1; - } BIT; - } PTRSLR; - char wk0[5]; - union { - unsigned char BYTE; - struct { - unsigned char G3CMS:2; - unsigned char G2CMS:2; - unsigned char G1CMS:2; - unsigned char G0CMS:2; - } BIT; - } PCR; - union { - unsigned char BYTE; - struct { - unsigned char G3INV:1; - unsigned char G2INV:1; - unsigned char G1INV:1; - unsigned char G0INV:1; - unsigned char G3NOV:1; - unsigned char G2NOV:1; - unsigned char G1NOV:1; - unsigned char G0NOV:1; - } BIT; - } PMR; - union { - unsigned char BYTE; - struct { - unsigned char NDER31:1; - unsigned char NDER30:1; - unsigned char NDER29:1; - unsigned char NDER28:1; - unsigned char NDER27:1; - unsigned char NDER26:1; - unsigned char NDER25:1; - unsigned char NDER24:1; - } BIT; - } NDERH; - union { - unsigned char BYTE; - struct { - unsigned char NDER23:1; - unsigned char NDER22:1; - unsigned char NDER21:1; - unsigned char NDER20:1; - unsigned char NDER19:1; - unsigned char NDER18:1; - unsigned char NDER17:1; - unsigned char NDER16:1; - } BIT; - } NDERL; - union { - unsigned char BYTE; - struct { - unsigned char POD31:1; - unsigned char POD30:1; - unsigned char POD29:1; - unsigned char POD28:1; - unsigned char POD27:1; - unsigned char POD26:1; - unsigned char POD25:1; - unsigned char POD24:1; - } BIT; - } PODRH; - union { - unsigned char BYTE; - struct { - unsigned char POD23:1; - unsigned char POD22:1; - unsigned char POD21:1; - unsigned char POD20:1; - unsigned char POD19:1; - unsigned char POD18:1; - unsigned char POD17:1; - unsigned char POD16:1; - } BIT; - } PODRL; - union { - unsigned char BYTE; - struct { - unsigned char NDR31:1; - unsigned char NDR30:1; - unsigned char NDR29:1; - unsigned char NDR28:1; - unsigned char NDR27:1; - unsigned char NDR26:1; - unsigned char NDR25:1; - unsigned char NDR24:1; - } BIT; - } NDRH; - union { - unsigned char BYTE; - struct { - unsigned char NDR23:1; - unsigned char NDR22:1; - unsigned char NDR21:1; - unsigned char NDR20:1; - unsigned char NDR19:1; - unsigned char NDR18:1; - unsigned char NDR17:1; - unsigned char NDR16:1; - } BIT; - } NDRL; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char NDR27:1; - unsigned char NDR26:1; - unsigned char NDR25:1; - unsigned char NDR24:1; - } BIT; - } NDRH2; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char NDR19:1; - unsigned char NDR18:1; - unsigned char NDR17:1; - unsigned char NDR16:1; - } BIT; - } NDRL2; -}; - -struct st_riic { - union { - unsigned char BYTE; - struct { - unsigned char ICE:1; - unsigned char IICRST:1; - unsigned char CLO:1; - unsigned char SOWP:1; - unsigned char SCLO:1; - unsigned char SDAO:1; - unsigned char SCLI:1; - unsigned char SDAI:1; - } BIT; - } ICCR1; - union { - unsigned char BYTE; - struct { - unsigned char BBSY:1; - unsigned char MST:1; - unsigned char TRS:1; - unsigned char :1; - unsigned char SP:1; - unsigned char RS:1; - unsigned char ST:1; - } BIT; - } ICCR2; - union { - unsigned char BYTE; - struct { - unsigned char MTWP:1; - unsigned char CKS:3; - unsigned char BCWP:1; - unsigned char BC:3; - } BIT; - } ICMR1; - union { - unsigned char BYTE; - struct { - unsigned char DLCS:1; - unsigned char SDDL:3; - unsigned char :1; - unsigned char TMOH:1; - unsigned char TMOL:1; - unsigned char TMOS:1; - } BIT; - } ICMR2; - union { - unsigned char BYTE; - struct { - unsigned char SMBS:1; - unsigned char WAIT:1; - unsigned char RDRFS:1; - unsigned char ACKWP:1; - unsigned char ACKBT:1; - unsigned char ACKBR:1; - unsigned char NF:2; - } BIT; - } ICMR3; - union { - unsigned char BYTE; - struct { - unsigned char FMPE:1; - unsigned char SCLE:1; - unsigned char NFE:1; - unsigned char NACKE:1; - unsigned char SALE:1; - unsigned char NALE:1; - unsigned char MALE:1; - unsigned char TMOE:1; - } BIT; - } ICFER; - union { - unsigned char BYTE; - struct { - unsigned char HOAE:1; - unsigned char :1; - unsigned char DIDE:1; - unsigned char :1; - unsigned char GCAE:1; - unsigned char SAR2E:1; - unsigned char SAR1E:1; - unsigned char SAR0E:1; - } BIT; - } ICSER; - union { - unsigned char BYTE; - struct { - unsigned char TIE:1; - unsigned char TEIE:1; - unsigned char RIE:1; - unsigned char NAKIE:1; - unsigned char SPIE:1; - unsigned char STIE:1; - unsigned char ALIE:1; - unsigned char TMOIE:1; - } BIT; - } ICIER; - union { - unsigned char BYTE; - struct { - unsigned char HOA:1; - unsigned char :1; - unsigned char DID:1; - unsigned char :1; - unsigned char GCA:1; - unsigned char AAS2:1; - unsigned char AAS1:1; - unsigned char AAS0:1; - } BIT; - } ICSR1; - union { - unsigned char BYTE; - struct { - unsigned char TDRE:1; - unsigned char TEND:1; - unsigned char RDRF:1; - unsigned char NACKF:1; - unsigned char STOP:1; - unsigned char START:1; - unsigned char AL:1; - unsigned char TMOF:1; - } BIT; - } ICSR2; - union { - unsigned char BYTE; - struct { - unsigned char SVA:7; - unsigned char SVA0:1; - } BIT; - } SARL0; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char SVA:2; - unsigned char FS:1; - } BIT; - } SARU0; - union { - unsigned char BYTE; - struct { - unsigned char SVA:7; - unsigned char SVA0:1; - } BIT; - } SARL1; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char SVA:2; - unsigned char FS:1; - } BIT; - } SARU1; - union { - unsigned char BYTE; - struct { - unsigned char SVA:7; - unsigned char SVA0:1; - } BIT; - } SARL2; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char SVA:2; - unsigned char FS:1; - } BIT; - } SARU2; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char BRL:5; - } BIT; - } ICBRL; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char BRH:5; - } BIT; - } ICBRH; - unsigned char ICDRT; - unsigned char ICDRR; -}; - -struct st_rspi { - union { - unsigned char BYTE; - struct { - unsigned char SPRIE:1; - unsigned char SPE:1; - unsigned char SPTIE:1; - unsigned char SPEIE:1; - unsigned char MSTR:1; - unsigned char MODFEN:1; - unsigned char TXMD:1; - unsigned char SPMS:1; - } BIT; - } SPCR; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char SSLP3:1; - unsigned char SSLP2:1; - unsigned char SSLP1:1; - unsigned char SSLP0:1; - } BIT; - } SSLP; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char MOIFE:1; - unsigned char MOIFV:1; - unsigned char :1; - unsigned char SPOM:1; - unsigned char SPLP2:1; - unsigned char SPLP:1; - } BIT; - } SPPCR; - union { - unsigned char BYTE; - struct { - unsigned char SPRF:1; - unsigned char :1; - unsigned char SPTEF:1; - unsigned char :1; - unsigned char PERF:1; - unsigned char MODF:1; - unsigned char IDLNF:1; - unsigned char OVRF:1; - } BIT; - } SPSR; - union { - unsigned long LONG; - struct { - unsigned short H; - unsigned short L; - } WORD; - } SPDR; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char SPSLN:3; - } BIT; - } SPSCR; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char SPECM:3; - unsigned char :1; - unsigned char SPCP:3; - } BIT; - } SPSSR; - union { - unsigned char BYTE; - struct { - unsigned char SPR7:1; - unsigned char SPR6:1; - unsigned char SPR5:1; - unsigned char SPR4:1; - unsigned char SPR3:1; - unsigned char SPR2:1; - unsigned char SPR1:1; - unsigned char SPR0:1; - } BIT; - } SPBR; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char SPLW:1; - unsigned char SPRDTD:1; - unsigned char SLSEL:2; - unsigned char SPFC:2; - } BIT; - } SPDCR; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char SCKDL:3; - } BIT; - } SPCKD; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char SLNDL:3; - } BIT; - } SSLND; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char SPNDL:3; - } BIT; - } SPND; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char PTE:1; - unsigned char SPIIE:1; - unsigned char SPOE:1; - unsigned char SPPE:1; - } BIT; - } SPCR2; - union { - unsigned short WORD; - struct { - unsigned short SCKDEN:1; - unsigned short SLNDEN:1; - unsigned short SPNDEN:1; - unsigned short LSBF:1; - unsigned short SPB:4; - unsigned short SSLKP:1; - unsigned short SSLA:3; - unsigned short BRDV:2; - unsigned short CPOL:1; - unsigned short CPHA:1; - } BIT; - } SPCMD0; - union { - unsigned short WORD; - struct { - unsigned short SCKDEN:1; - unsigned short SLNDEN:1; - unsigned short SPNDEN:1; - unsigned short LSBF:1; - unsigned short SPB:4; - unsigned short SSLKP:1; - unsigned short SSLA:3; - unsigned short BRDV:2; - unsigned short CPOL:1; - unsigned short CPHA:1; - } BIT; - } SPCMD1; - union { - unsigned short WORD; - struct { - unsigned short SCKDEN:1; - unsigned short SLNDEN:1; - unsigned short SPNDEN:1; - unsigned short LSBF:1; - unsigned short SPB:4; - unsigned short SSLKP:1; - unsigned short SSLA:3; - unsigned short BRDV:2; - unsigned short CPOL:1; - unsigned short CPHA:1; - } BIT; - } SPCMD2; - union { - unsigned short WORD; - struct { - unsigned short SCKDEN:1; - unsigned short SLNDEN:1; - unsigned short SPNDEN:1; - unsigned short LSBF:1; - unsigned short SPB:4; - unsigned short SSLKP:1; - unsigned short SSLA:3; - unsigned short BRDV:2; - unsigned short CPOL:1; - unsigned short CPHA:1; - } BIT; - } SPCMD3; - union { - unsigned short WORD; - struct { - unsigned short SCKDEN:1; - unsigned short SLNDEN:1; - unsigned short SPNDEN:1; - unsigned short LSBF:1; - unsigned short SPB:4; - unsigned short SSLKP:1; - unsigned short SSLA:3; - unsigned short BRDV:2; - unsigned short CPOL:1; - unsigned short CPHA:1; - } BIT; - } SPCMD4; - union { - unsigned short WORD; - struct { - unsigned short SCKDEN:1; - unsigned short SLNDEN:1; - unsigned short SPNDEN:1; - unsigned short LSBF:1; - unsigned short SPB:4; - unsigned short SSLKP:1; - unsigned short SSLA:3; - unsigned short BRDV:2; - unsigned short CPOL:1; - unsigned short CPHA:1; - } BIT; - } SPCMD5; - union { - unsigned short WORD; - struct { - unsigned short SCKDEN:1; - unsigned short SLNDEN:1; - unsigned short SPNDEN:1; - unsigned short LSBF:1; - unsigned short SPB:4; - unsigned short SSLKP:1; - unsigned short SSLA:3; - unsigned short BRDV:2; - unsigned short CPOL:1; - unsigned short CPHA:1; - } BIT; - } SPCMD6; - union { - unsigned short WORD; - struct { - unsigned short SCKDEN:1; - unsigned short SLNDEN:1; - unsigned short SPNDEN:1; - unsigned short LSBF:1; - unsigned short SPB:4; - unsigned short SSLKP:1; - unsigned short SSLA:3; - unsigned short BRDV:2; - unsigned short CPOL:1; - unsigned short CPHA:1; - } BIT; - } SPCMD7; -}; - -struct st_rtc { - union { - unsigned char BYTE; - struct { - unsigned char F64HZ:1; - unsigned char F32HZ:1; - unsigned char F16HZ:1; - unsigned char F8HZ:1; - unsigned char F4HZ:1; - unsigned char F2HZ:1; - unsigned char F1HZ:1; - } BIT; - } R64CNT; - char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char SEC10:3; - unsigned char SEC1:4; - } BIT; - } RSECCNT; - char wk1[1]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char MIN10:3; - unsigned char MIN1:4; - } BIT; - } RMINCNT; - char wk2[1]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char HOUR10:2; - unsigned char HOUR1:4; - } BIT; - } RHRCNT; - char wk3[1]; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char DAY:3; - } BIT; - } RWKCNT; - char wk4[1]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char DAY10:2; - unsigned char DAY1:4; - } BIT; - } RDAYCNT; - char wk5[1]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char MON10:1; - unsigned char MON1:4; - } BIT; - } RMONCNT; - char wk6[1]; - union { - unsigned short WORD; - struct { - unsigned short YEAR1000:4; - unsigned short YEAR100:4; - unsigned short YEAR10:4; - unsigned short YEAR1:4; - } BIT; - } RYRCNT; - union { - unsigned char BYTE; - struct { - unsigned char ENB:1; - unsigned char SEC10:3; - unsigned char SEC1:4; - } BIT; - } RSECAR; - char wk7[1]; - union { - unsigned char BYTE; - struct { - unsigned char ENB:1; - unsigned char MIN10:3; - unsigned char MIN1:4; - } BIT; - } RMINAR; - char wk8[1]; - union { - unsigned char BYTE; - struct { - unsigned char ENB:1; - unsigned char :1; - unsigned char HOUR10:2; - unsigned char HOUR1:4; - } BIT; - } RHRAR; - char wk9[1]; - union { - unsigned char BYTE; - struct { - unsigned char ENB:1; - unsigned char :4; - unsigned char DAY:3; - } BIT; - } RWKAR; - char wk10[1]; - union { - unsigned char BYTE; - struct { - unsigned char ENB:1; - unsigned char :1; - unsigned char DAY10:2; - unsigned char DAY1:4; - } BIT; - } RDAYAR; - char wk11[1]; - union { - unsigned char BYTE; - struct { - unsigned char ENB:1; - unsigned char :2; - unsigned char MON10:1; - unsigned char MON1:4; - } BIT; - } RMONAR; - char wk12[1]; - union { - unsigned short WORD; - struct { - unsigned short YEAR1000:4; - unsigned short YEAR100:4; - unsigned short YEAR10:4; - unsigned short YEAR1:4; - } BIT; - } RYRAR; - union { - unsigned char BYTE; - struct { - unsigned char ENB:1; - } BIT; - } RYRAREN; - char wk13[3]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char PES:3; - unsigned char :1; - unsigned char PIE:1; - unsigned char CIE:1; - unsigned char AIE:1; - } BIT; - } RCR1; - char wk14[1]; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char RTCOE:1; - unsigned char ADJ:1; - unsigned char RESET:1; - unsigned char START:1; - } BIT; - } RCR2; -}; - -struct st_s12ad { - union { - unsigned char BYTE; - struct { - unsigned char ADST:1; - unsigned char ADCS:1; - unsigned char :1; - unsigned char ADIE:1; - unsigned char CKS:2; - unsigned char TRGE:1; - unsigned char EXTRG:1; - } BIT; - } ADCSR; - char wk0[3]; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short ANS:8; - } BIT; - } ADANS; - char wk1[2]; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short ADS:8; - } BIT; - } ADADS; - char wk2[2]; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char ADC:2; - } BIT; - } ADADC; - char wk3[1]; - union { - unsigned short WORD; - struct { - unsigned short ADRFMT:1; - unsigned short :9; - unsigned short ACE:1; - } BIT; - } ADCER; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char ADSTRS:4; - } BIT; - } ADSTRGR; - char wk4[15]; - unsigned short ADDR0; - unsigned short ADDR1; - unsigned short ADDR2; - unsigned short ADDR3; - unsigned short ADDR4; - unsigned short ADDR5; - unsigned short ADDR6; - unsigned short ADDR7; -}; - -struct st_sci { - union { - unsigned char BYTE; - struct { - unsigned char CM:1; - unsigned char CHR:1; - unsigned char PE:1; - unsigned char PM:1; - unsigned char STOP:1; - unsigned char MP:1; - unsigned char CKS:2; - } BIT; - } SMR; - unsigned char BRR; - union { - unsigned char BYTE; - struct { - unsigned char TIE:1; - unsigned char RIE:1; - unsigned char TE:1; - unsigned char RE:1; - unsigned char MPIE:1; - unsigned char TEIE:1; - unsigned char CKE:2; - } BIT; - } SCR; - unsigned char TDR; - union { - unsigned char BYTE; - struct { - unsigned char TDRE:1; - unsigned char RDRF:1; - unsigned char ORER:1; - unsigned char FER:1; - unsigned char PER:1; - unsigned char TEND:1; - unsigned char MPB:1; - unsigned char MPBT:1; - } BIT; - } SSR; - unsigned char RDR; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char SDIR:1; - unsigned char SINV:1; - unsigned char :1; - unsigned char SMIF:1; - } BIT; - } SCMR; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char ABCS:1; - unsigned char :3; - unsigned char ACS0:1; - } BIT; - } SEMR; -}; - -struct st_smci { - union { - unsigned char BYTE; - struct { - unsigned char GM:1; - unsigned char BLK:1; - unsigned char PE:1; - unsigned char PM:1; - unsigned char BCP:2; - unsigned char CKS:2; - } BIT; - } SMR; - unsigned char BRR; - union { - unsigned char BYTE; - struct { - unsigned char TIE:1; - unsigned char RIE:1; - unsigned char TE:1; - unsigned char RE:1; - unsigned char :1; - unsigned char TEIE:1; - unsigned char CKE:2; - } BIT; - } SCR; - unsigned char TDR; - union { - unsigned char BYTE; - struct { - unsigned char TDRE:1; - unsigned char RDRF:1; - unsigned char ORER:1; - unsigned char ERS:1; - unsigned char PER:1; - unsigned char TEND:1; - } BIT; - } SSR; - unsigned char RDR; - union { - unsigned char BYTE; - struct { - unsigned char BCP2:1; - unsigned char :3; - unsigned char SDIR:1; - unsigned char SINV:1; - unsigned char :1; - unsigned char SMIF:1; - } BIT; - } SCMR; -}; - -struct st_system { - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short MDE:1; - unsigned short :5; - unsigned short MD1:1; - unsigned short MD0:1; - } BIT; - } MDMONR; - union { - unsigned short WORD; - struct { - unsigned short :9; - unsigned short UBTS:1; - unsigned short :1; - unsigned short BOTS:1; - unsigned short BSW:2; - unsigned short EXB:1; - unsigned short IROM:1; - } BIT; - } MDSR; - char wk0[2]; - union { - unsigned short WORD; - struct { - unsigned short KEY:8; - unsigned short :6; - unsigned short EXBE:1; - unsigned short ROME:1; - } BIT; - } SYSCR0; - union { - unsigned short WORD; - struct { - unsigned short :15; - unsigned short RAME:1; - } BIT; - } SYSCR1; - char wk1[2]; - union { - unsigned short WORD; - struct { - unsigned short SSBY:1; - unsigned short OPE:1; - unsigned short :1; - unsigned short STS:5; - } BIT; - } SBYCR; - char wk2[2]; - union { - unsigned long LONG; - struct { - unsigned long ACSE:1; - unsigned long :1; - unsigned long MSTPA29:1; - unsigned long MSTPA28:1; - unsigned long :4; - unsigned long MSTPA23:1; - unsigned long MSTPA22:1; - unsigned long :2; - unsigned long MSTPA19:1; - unsigned long :1; - unsigned long MSTPA17:1; - unsigned long :1; - unsigned long MSTPA15:1; - unsigned long MSTPA14:1; - unsigned long :2; - unsigned long MSTPA11:1; - unsigned long MSTPA10:1; - unsigned long MSTPA9:1; - unsigned long MSTPA8:1; - unsigned long :2; - unsigned long MSTPA5:1; - unsigned long MSTPA4:1; - } BIT; - } MSTPCRA; - union { - unsigned long LONG; - struct { - unsigned long MSTPB31:1; - unsigned long MSTPB30:1; - unsigned long MSTPB29:1; - unsigned long MSTPB28:1; - unsigned long :1; - unsigned long MSTPB26:1; - unsigned long MSTPB25:1; - unsigned long :1; - unsigned long MSTPB23:1; - unsigned long :1; - unsigned long MSTPB21:1; - unsigned long MSTPB20:1; - unsigned long MSTPB19:1; - unsigned long MSTPB18:1; - unsigned long MSTPB17:1; - unsigned long MSTPB16:1; - unsigned long MSTPB15:1; - unsigned long :14; - unsigned long MSTPB0:1; - } BIT; - } MSTPCRB; - union { - unsigned long LONG; - struct { - unsigned long :30; - unsigned long MSTPC1:1; - unsigned long MSTPC0:1; - } BIT; - } MSTPCRC; - char wk3[4]; - union { - unsigned long LONG; - struct { - unsigned long :4; - unsigned long ICK:4; - unsigned long PSTOP1:1; - unsigned long PSTOP0:1; - unsigned long :2; - unsigned long BCK:4; - unsigned long :4; - unsigned long PCK:4; - } BIT; - } SCKCR; - char wk4[12]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char BCLKDIV:1; - } BIT; - } BCKCR; - char wk5[15]; - union { - unsigned short WORD; - struct { - unsigned short KEY:8; - unsigned short OSTDE:1; - unsigned short OSTDF:1; - } BIT; - } OSTDCR; - char wk6[49726]; - union { - unsigned char BYTE; - struct { - unsigned char DPSBY:1; - unsigned char IOKEEP:1; - unsigned char RAMCUT2:1; - unsigned char RAMCUT1:1; - unsigned char :3; - unsigned char RAMCUT0:1; - } BIT; - } DPSBYCR; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char WTSTS:6; - } BIT; - } DPSWCR; - union { - unsigned char BYTE; - struct { - unsigned char DNMIE:1; - unsigned char DUSBE:1; - unsigned char DRTCE:1; - unsigned char DLVDE:1; - unsigned char DIRQ3E:1; - unsigned char DIRQ2E:1; - unsigned char DIRQ1E:1; - unsigned char DIRQ0E:1; - } BIT; - } DPSIER; - union { - unsigned char BYTE; - struct { - unsigned char DNMIF:1; - unsigned char DUSBF:1; - unsigned char DRTCFF:1; - unsigned char DLVDF:1; - unsigned char DIRQ3F:1; - unsigned char DIRQ2F:1; - unsigned char DIRQ1F:1; - unsigned char DIRQ0F:1; - } BIT; - } DPSIFR; - union { - unsigned char BYTE; - struct { - unsigned char DNMIEG:1; - unsigned char :3; - unsigned char DIRQ3EG:1; - unsigned char DIRQ2EG:1; - unsigned char DIRQ1EG:1; - unsigned char DIRQ0EG:1; - } BIT; - } DPSIEGR; - union { - unsigned char BYTE; - struct { - unsigned char DPSRSTF:1; - unsigned char :4; - unsigned char LVD2F:1; - unsigned char LVD1F:1; - unsigned char PORF:1; - } BIT; - } RSTSR; - char wk7[4]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char SUBSTOP:1; - } BIT; - } SUBOSCCR; - char wk8[1]; - unsigned char LVDKEYR; - union { - unsigned char BYTE; - struct { - unsigned char LVD2E:1; - unsigned char LVD2RI:1; - unsigned char :2; - unsigned char LVD1E:1; - unsigned char LVD1RI:1; - } BIT; - } LVDCR; - char wk9[2]; - unsigned char DPSBKR[32]; -}; - -struct st_tmr0 { - union { - unsigned char BYTE; - struct { - unsigned char CMIEB:1; - unsigned char CMIEA:1; - unsigned char OVIE:1; - unsigned char CCLR:2; - } BIT; - } TCR; - char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char ADTE:1; - unsigned char OSB:2; - unsigned char OSA:2; - } BIT; - } TCSR; - char wk1[1]; - unsigned char TCORA; - char wk2[1]; - unsigned char TCORB; - char wk3[1]; - unsigned char TCNT; - char wk4[1]; - union { - unsigned char BYTE; - struct { - unsigned char TMRIS:1; - unsigned char :2; - unsigned char CSS:2; - unsigned char CKS:3; - } BIT; - } TCCR; -}; - -struct st_tmr1 { - union { - unsigned char BYTE; - struct { - unsigned char CMIEB:1; - unsigned char CMIEA:1; - unsigned char OVIE:1; - unsigned char CCLR:2; - } BIT; - } TCR; - char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char OSB:2; - unsigned char OSA:2; - } BIT; - } TCSR; - char wk1[1]; - unsigned char TCORA; - char wk2[1]; - unsigned char TCORB; - char wk3[1]; - unsigned char TCNT; - char wk4[1]; - union { - unsigned char BYTE; - struct { - unsigned char TMRIS:1; - unsigned char :2; - unsigned char CSS:2; - unsigned char CKS:3; - } BIT; - } TCCR; -}; - -struct st_tmr01 { - unsigned short TCORA; - unsigned short TCORB; - unsigned short TCNT; - unsigned short TCCR; -}; - -struct st_usb { - union { - unsigned long LONG; - struct { - unsigned long DVSTS1:1; - unsigned long :1; - unsigned long DOVCB1:1; - unsigned long DOVCA1:1; - unsigned long :2; - unsigned long DM1:1; - unsigned long DP1:1; - unsigned long DVBSTS0:1; - unsigned long :1; - unsigned long DOVCB0:1; - unsigned long DOVCA0:1; - unsigned long :2; - unsigned long DM0:1; - unsigned long DP0:1; - unsigned long :3; - unsigned long FIXPHY1:1; - unsigned long :3; - unsigned long SRPC1:1; - unsigned long :3; - unsigned long FIXPHY0:1; - unsigned long :3; - unsigned long SRPC0:1; - } BIT; - } DPUSR0R; - union { - unsigned long LONG; - struct { - unsigned long DVBINT1:1; - unsigned long :1; - unsigned long DOVRCRB1:1; - unsigned long DOVRCRA1:1; - unsigned long :2; - unsigned long DMINT1:1; - unsigned long DPINT1:1; - unsigned long DVBINT0:1; - unsigned long :1; - unsigned long DOVRCRB0:1; - unsigned long DOVRCRA0:1; - unsigned long :2; - unsigned long DMINT0:1; - unsigned long DPINT0:1; - unsigned long DVBSE1:1; - unsigned long :1; - unsigned long DOVRCRBE1:1; - unsigned long DOVRCRAE1:1; - unsigned long :2; - unsigned long DMINTE1:1; - unsigned long DPINTE1:1; - unsigned long DVBSE0:1; - unsigned long :1; - unsigned long DOVRCRBE0:1; - unsigned long DOVRCRAE0:1; - unsigned long :2; - unsigned long DMINTE0:1; - unsigned long DPINTE0:1; - } BIT; - } DPUSR1R; -}; - -struct st_usb0 { - union { - unsigned short WORD; - struct { - unsigned short :5; - unsigned short SCKE:1; - unsigned short :3; - unsigned short DCFM:1; - unsigned short DRPD:1; - unsigned short DPRPU:1; - unsigned short :3; - unsigned short USBE:1; - } BIT; - } SYSCFG; - char wk0[2]; - union { - unsigned short WORD; - struct { - unsigned short OVCMON:2; - unsigned short :7; - unsigned short HTACT:1; - unsigned short :3; - unsigned short IDMON:1; - unsigned short LNST:2; - } BIT; - } SYSSTS0; - char wk1[2]; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short HNPBTOA:1; - unsigned short EXICEN:1; - unsigned short VBUSEN:1; - unsigned short WKUP:1; - unsigned short RWUPE:1; - unsigned short USBRST:1; - unsigned short RESUME:1; - unsigned short UACT:1; - unsigned short :1; - unsigned short RHST:3; - } BIT; - } DVSTCTR0; - char wk2[10]; - union { - unsigned short WORD; - struct { - unsigned char L; - unsigned char H; - } BYTE; - } CFIFO; - char wk3[2]; - union { - unsigned short WORD; - struct { - unsigned char L; - unsigned char H; - } BYTE; - } D0FIFO; - char wk4[2]; - union { - unsigned short WORD; - struct { - unsigned char L; - unsigned char H; - } BYTE; - } D1FIFO; - char wk5[2]; - union { - unsigned short WORD; - struct { - unsigned short RCNT:1; - unsigned short REW:1; - unsigned short :3; - unsigned short MBW:1; - unsigned short :1; - unsigned short BIGEND:1; - unsigned short :2; - unsigned short ISEL:1; - unsigned short :1; - unsigned short CURPIPE:4; - } BIT; - } CFIFOSEL; - union { - unsigned short WORD; - struct { - unsigned short BVAL:1; - unsigned short BCLR:1; - unsigned short FRDY:1; - unsigned short :4; - unsigned short DTLN:9; - } BIT; - } CFIFOCTR; - char wk6[4]; - union { - unsigned short WORD; - struct { - unsigned short RCNT:1; - unsigned short REW:1; - unsigned short DCLRM:1; - unsigned short DREQE:1; - unsigned short :1; - unsigned short MBW:1; - unsigned short :1; - unsigned short BIGEND:1; - unsigned short :4; - unsigned short CURPIPE:4; - } BIT; - } D0FIFOSEL; - union { - unsigned short WORD; - struct { - unsigned short BVAL:1; - unsigned short BCLR:1; - unsigned short FRDY:1; - unsigned short :4; - unsigned short DTLN:9; - } BIT; - } D0FIFOCTR; - union { - unsigned short WORD; - struct { - unsigned short RCNT:1; - unsigned short REW:1; - unsigned short DCLRM:1; - unsigned short DREQE:1; - unsigned short :1; - unsigned short MBW:1; - unsigned short :1; - unsigned short BIGEND:1; - unsigned short :4; - unsigned short CURPIPE:4; - } BIT; - } D1FIFOSEL; - union { - unsigned short WORD; - struct { - unsigned short BVAL:1; - unsigned short BCLR:1; - unsigned short FRDY:1; - unsigned short :4; - unsigned short DTLN:9; - } BIT; - } D1FIFOCTR; - union { - unsigned short WORD; - struct { - unsigned short VBSE:1; - unsigned short RSME:1; - unsigned short SOFE:1; - unsigned short DVSE:1; - unsigned short CTRE:1; - unsigned short BEMPE:1; - unsigned short NRDYE:1; - unsigned short BRDYE:1; - } BIT; - } INTENB0; - union { - unsigned short WORD; - struct { - unsigned short OVRCRE:1; - unsigned short BCHGE:1; - unsigned short :1; - unsigned short DTCHE:1; - unsigned short ATTCHE:1; - unsigned short :4; - unsigned short EOFERRE:1; - unsigned short SIGNE:1; - unsigned short SACKE:1; - } BIT; - } INTENB1; - char wk7[2]; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short PIPE9BRDYE:1; - unsigned short PIPE8BRDYE:1; - unsigned short PIPE7BRDYE:1; - unsigned short PIPE6BRDYE:1; - unsigned short PIPE5BRDYE:1; - unsigned short PIPE4BRDYE:1; - unsigned short PIPE3BRDYE:1; - unsigned short PIPE2BRDYE:1; - unsigned short PIPE1BRDYE:1; - unsigned short PIPE0BRDYE:1; - } BIT; - } BRDYENB; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short PIPE9BRDYE:1; - unsigned short PIPE8BRDYE:1; - unsigned short PIPE7BRDYE:1; - unsigned short PIPE6BRDYE:1; - unsigned short PIPE5BRDYE:1; - unsigned short PIPE4BRDYE:1; - unsigned short PIPE3BRDYE:1; - unsigned short PIPE2BRDYE:1; - unsigned short PIPE1BRDYE:1; - unsigned short PIPE0BRDYE:1; - } BIT; - } NRDYENB; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short PIPE9BEMPE:1; - unsigned short PIPE8BEMPE:1; - unsigned short PIPE7BEMPE:1; - unsigned short PIPE6BEMPE:1; - unsigned short PIPE5BEMPE:1; - unsigned short PIPE4BEMPE:1; - unsigned short PIPE3BEMPE:1; - unsigned short PIPE2BEMPE:1; - unsigned short PIPE1BEMPE:1; - unsigned short PIPE0BEMPE:1; - } BIT; - } BEMPENB; - union { - unsigned short WORD; - struct { - unsigned short :7; - unsigned short TRNENSEL:1; - unsigned short :1; - unsigned short BRDYM:1; - unsigned short :1; - unsigned short EDGESTS:1; - } BIT; - } SOFCFG; - char wk8[2]; - union { - unsigned short WORD; - struct { - unsigned short VBINT:1; - unsigned short RESM:1; - unsigned short SOFR:1; - unsigned short DVST:1; - unsigned short CTRT:1; - unsigned short BEMP:1; - unsigned short NRDY:1; - unsigned short BRDY:1; - unsigned short VBSTS:1; - unsigned short DVSQ:3; - unsigned short VALID:1; - unsigned short CTSQ:3; - } BIT; - } INTSTS0; - union { - unsigned short WORD; - struct { - unsigned short OVRCR:1; - unsigned short BCHG:1; - unsigned short :1; - unsigned short DTCH:1; - unsigned short ATTCH:1; - unsigned short :4; - unsigned short EOFERR:1; - unsigned short SIGN:1; - unsigned short SACK:1; - } BIT; - } INTSTS1; - char wk9[2]; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short PIPE9BRDY:1; - unsigned short PIPE8BRDY:1; - unsigned short PIPE7BRDY:1; - unsigned short PIPE6BRDY:1; - unsigned short PIPE5BRDY:1; - unsigned short PIPE4BRDY:1; - unsigned short PIPE3BRDY:1; - unsigned short PIPE2BRDY:1; - unsigned short PIPE1BRDY:1; - unsigned short PIPE0BRDY:1; - } BIT; - } BRDYSTS; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short PIPE9BRDY:1; - unsigned short PIPE8BRDY:1; - unsigned short PIPE7BRDY:1; - unsigned short PIPE6BRDY:1; - unsigned short PIPE5BRDY:1; - unsigned short PIPE4BRDY:1; - unsigned short PIPE3BRDY:1; - unsigned short PIPE2BRDY:1; - unsigned short PIPE1BRDY:1; - unsigned short PIPE0BRDY:1; - } BIT; - } NRDYSTS; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short PIPE9BENP:1; - unsigned short PIPE8BENP:1; - unsigned short PIPE7BENP:1; - unsigned short PIPE6BENP:1; - unsigned short PIPE5BENP:1; - unsigned short PIPE4BENP:1; - unsigned short PIPE3BENP:1; - unsigned short PIPE2BENP:1; - unsigned short PIPE1BENP:1; - unsigned short PIPE0BENP:1; - } BIT; - } BEMPSTS; - union { - unsigned short WORD; - struct { - unsigned short OVRN:1; - unsigned short CRCE:1; - unsigned short :3; - unsigned short FRNM:11; - } BIT; - } FRMNUM; - union { - unsigned short WORD; - struct { - unsigned short DVCHG:1; - } BIT; - } DVCHGR; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short STSRECOV:4; - unsigned short :1; - unsigned short USBADDR:7; - } BIT; - } USBADDR; - char wk10[2]; - union { - unsigned short WORD; - struct { - unsigned short BREQUEST:8; - unsigned short BMREQUESTTYPE:8; - } BIT; - } USBREQ; - unsigned short USBVAL; - unsigned short USBINDX; - unsigned short USBLENG; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short SHTNAK:1; - unsigned short :2; - unsigned short DIR:1; - } BIT; - } DCPCFG; - union { - unsigned short WORD; - struct { - unsigned short DEVSEL:4; - unsigned short :5; - unsigned short MXPS:7; - } BIT; - } DCPMAXP; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short SUREQ:1; - unsigned short :2; - unsigned short SUREQCLR:1; - unsigned short :2; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :2; - unsigned short CCPL:1; - unsigned short PID:2; - } BIT; - } DCPCTR; - char wk11[2]; - union { - unsigned short WORD; - struct { - unsigned short :12; - unsigned short PIPESEL:4; - } BIT; - } PIPESEL; - char wk12[2]; - union { - unsigned short WORD; - struct { - unsigned short TYPE:2; - unsigned short :3; - unsigned short BFRE:1; - unsigned short DBLB:1; - unsigned short :1; - unsigned short SHTNAK:1; - unsigned short :2; - unsigned short DIR:1; - unsigned short EPNUM:4; - } BIT; - } PIPECFG; - char wk13[2]; - union { - unsigned short WORD; - struct { - unsigned short DEVSEL:4; - unsigned short :3; - unsigned short MXPS:9; - } BIT; - } PIPEMAXP; - union { - unsigned short WORD; - struct { - unsigned short :3; - unsigned short IFIS:1; - unsigned short :9; - unsigned short IITV:3; - } BIT; - } PIPEPERI; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short INBUFM:1; - unsigned short :3; - unsigned short ATREPM:1; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE1CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short INBUFM:1; - unsigned short :3; - unsigned short ATREPM:1; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE2CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short INBUFM:1; - unsigned short :3; - unsigned short ATREPM:1; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE3CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short INBUFM:1; - unsigned short :3; - unsigned short ATREPM:1; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE4CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short INBUFM:1; - unsigned short :3; - unsigned short ATREPM:1; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE5CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short :5; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE6CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short :5; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE7CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short :5; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE8CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short :5; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE9CTR; - char wk14[14]; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short TRENB:1; - unsigned short TRCLR:1; - } BIT; - } PIPE1TRE; - unsigned short PIPE1TRN; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short TRENB:1; - unsigned short TRCLR:1; - } BIT; - } PIPE2TRE; - unsigned short PIPE2TRN; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short TRENB:1; - unsigned short TRCLR:1; - } BIT; - } PIPE3TRE; - unsigned short PIPE3TRN; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short TRENB:1; - unsigned short TRCLR:1; - } BIT; - } PIPE4TRE; - unsigned short PIPE4TRN; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short TRENB:1; - unsigned short TRCLR:1; - } BIT; - } PIPE5TRE; - unsigned short PIPE5TRN; - char wk15[44]; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short USBSPD:2; - } BIT; - } DEVADD0; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short USBSPD:2; - } BIT; - } DEVADD1; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short USBSPD:2; - } BIT; - } DEVADD2; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short USBSPD:2; - } BIT; - } DEVADD3; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short USBSPD:2; - } BIT; - } DEVADD4; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short USBSPD:2; - } BIT; - } DEVADD5; -}; - -union un_wdt { - struct { - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char TMS:1; - unsigned char TME:1; - unsigned char :2; - unsigned char CKS:3; - } BIT; - } TCSR; - unsigned char TCNT; - char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char WOVF:1; - unsigned char RSTE:1; - } BIT; - } RSTCSR; - } READ; - struct { - unsigned short WINA; - unsigned short WINB; - } WRITE; -}; - -enum enum_ir { -IR_BSC_BUSERR=16,IR_FCU_FIFERR=21,IR_FCU_FRDYI=23, -IR_ICU_SWINT=27, -IR_CMT0_CMI0, -IR_CMT1_CMI1, -IR_CMT2_CMI2, -IR_CMT3_CMI3, -IR_ETHER_EINT, -IR_USB0_D0FIFO0=36,IR_USB0_D1FIFO0,IR_USB0_USBI0, -IR_USB1_D0FIFO1=40,IR_USB1_D1FIFO1,IR_USB1_USBI1, -IR_RSPI0_SPEI0=44,IR_RSPI0_SPRI0,IR_RSPI0_SPTI0,IR_RSPI0_SPII0, -IR_RSPI1_SPEI1,IR_RSPI1_SPRI1,IR_RSPI1_SPTI1,IR_RSPI1_SPII1, -IR_CAN0_ERS0=56,IR_CAN0_RXF0,IR_CAN0_TXF0,IR_CAN0_RXM0,IR_CAN0_TXM0, -IR_RTC_PRD=62,IR_RTC_CUP, -IR_ICU_IRQ0,IR_ICU_IRQ1,IR_ICU_IRQ2,IR_ICU_IRQ3,IR_ICU_IRQ4,IR_ICU_IRQ5,IR_ICU_IRQ6,IR_ICU_IRQ7,IR_ICU_IRQ8,IR_ICU_IRQ9,IR_ICU_IRQ10,IR_ICU_IRQ11,IR_ICU_IRQ12,IR_ICU_IRQ13,IR_ICU_IRQ14,IR_ICU_IRQ15, -IR_USB_USBR0=90,IR_USB_USBR1, -IR_RTC_ALM, -IR_WDT_WOVI=96, -IR_AD0_ADI0=98, -IR_AD1_ADI1, -IR_S12AD_ADI=102, -IR_MTU0_TGIA0=114,IR_MTU0_TGIB0,IR_MTU0_TGIC0,IR_MTU0_TGID0,IR_MTU0_TCIV0,IR_MTU0_TGIE0,IR_MTU0_TGIF0, -IR_MTU1_TGIA1,IR_MTU1_TGIB1,IR_MTU1_TCIV1,IR_MTU1_TCIU1, -IR_MTU2_TGIA2,IR_MTU2_TGIB2,IR_MTU2_TCIV2,IR_MTU2_TCIU2, -IR_MTU3_TGIA3,IR_MTU3_TGIB3,IR_MTU3_TGIC3,IR_MTU3_TGID3,IR_MTU3_TCIV3, -IR_MTU4_TGIA4,IR_MTU4_TGIB4,IR_MTU4_TGIC4,IR_MTU4_TGID4,IR_MTU4_TCIV4, -IR_MTU5_TGIU5,IR_MTU5_TGIV5,IR_MTU5_TGIW5, -IR_MTU6_TGIA6,IR_MTU6_TGIB6,IR_MTU6_TGIC6,IR_MTU6_TGID6,IR_MTU6_TCIV6,IR_MTU6_TGIE6,IR_MTU6_TGIF6, -IR_MTU7_TGIA7,IR_MTU7_TGIB7,IR_MTU7_TCIV7,IR_MTU7_TCIU7, -IR_MTU8_TGIA8,IR_MTU8_TGIB8,IR_MTU8_TCIV8,IR_MTU8_TCIU8, -IR_MTU9_TGIA9,IR_MTU9_TGIB9,IR_MTU9_TGIC9,IR_MTU9_TGID9,IR_MTU9_TCIV9, -IR_MTU10_TGIA10,IR_MTU10_TGIB10,IR_MTU10_TGIC10,IR_MTU10_TGID10,IR_MTU10_TCIV10, -IR_MTU11_TGIU11,IR_MTU11_TGIV11,IR_MTU11_TGIW11, -IR_POE_OEI1,IR_POE_OEI2,IR_POE_OEI3,IR_POE_OEI4, -IR_TMR0_CMIA0,IR_TMR0_CMIB0,IR_TMR0_OVI0, -IR_TMR1_CMIA1,IR_TMR1_CMIB1,IR_TMR1_OVI1, -IR_TMR2_CMIA2,IR_TMR2_CMIB2,IR_TMR2_OVI2, -IR_TMR3_CMIA3,IR_TMR3_CMIB3,IR_TMR3_OVI3, -IR_DMAC_DMAC0I=198,IR_DMAC_DMAC1I,IR_DMAC_DMAC2I,IR_DMAC_DMAC3I, -IR_EXDMAC_EXDMAC0I,IR_EXDMAC_EXDMAC1I, -IR_SCI0_ERI0=214,IR_SCI0_RXI0,IR_SCI0_TXI0,IR_SCI0_TEI0, -IR_SCI1_ERI1,IR_SCI1_RXI1,IR_SCI1_TXI1,IR_SCI1_TEI1, -IR_SCI2_ERI2,IR_SCI2_RXI2,IR_SCI2_TXI2,IR_SCI2_TEI2, -IR_SCI3_ERI3,IR_SCI3_RXI3,IR_SCI3_TXI3,IR_SCI3_TEI3, -IR_SCI5_ERI5=234,IR_SCI5_RXI5,IR_SCI5_TXI5,IR_SCI5_TEI5, -IR_SCI6_ERI6,IR_SCI6_RXI6,IR_SCI6_TXI6,IR_SCI6_TEI6, -IR_RIIC0_ICEEI0=246,IR_RIIC0_ICRXI0,IR_RIIC0_ICTXI0,IR_RIIC0_ICTEI0, -IR_RIIC1_ICEEI1,IR_RIIC1_ICRXI1,IR_RIIC1_ICTXI1,IR_RIIC1_ICTEI1 -}; - -enum enum_dtce { -DTCE_ICU_SWINT=27, -DTCE_CMT0_CMI0, -DTCE_CMT1_CMI1, -DTCE_CMT2_CMI2, -DTCE_CMT3_CMI3, -DTCE_USB0_D0FIFO0=36,DTCE_USB0_D1FIFO0, -DTCE_USB1_D0FIFO1=40,DTCE_USB1_D1FIFO1, -DTCE_RSPI0_SPRI0=45,DTCE_RSPI0_SPTI0, -DTCE_RSPI1_SPRI1=49,DTCE_RSPI1_SPTI1, -DTCE_ICU_IRQ0=64,DTCE_ICU_IRQ1,DTCE_ICU_IRQ2,DTCE_ICU_IRQ3,DTCE_ICU_IRQ4,DTCE_ICU_IRQ5,DTCE_ICU_IRQ6,DTCE_ICU_IRQ7,DTCE_ICU_IRQ8,DTCE_ICU_IRQ9,DTCE_ICU_IRQ10,DTCE_ICU_IRQ11,DTCE_ICU_IRQ12,DTCE_ICU_IRQ13,DTCE_ICU_IRQ14,DTCE_ICU_IRQ15, -DTCE_AD0_ADI0=98, -DTCE_AD1_ADI1, -DTCE_S12AD_ADI=102, -DTCE_MTU0_TGIA0=114,DTCE_MTU0_TGIB0,DTCE_MTU0_TGIC0,DTCE_MTU0_TGID0, -DTCE_MTU1_TGIA1=121,DTCE_MTU1_TGIB1, -DTCE_MTU2_TGIA2=125,DTCE_MTU2_TGIB2, -DTCE_MTU3_TGIA3=129,DTCE_MTU3_TGIB3,DTCE_MTU3_TGIC3,DTCE_MTU3_TGID3, -DTCE_MTU4_TGIA4=134,DTCE_MTU4_TGIB4,DTCE_MTU4_TGIC4,DTCE_MTU4_TGID4,DTCE_MTU4_TCIV4, -DTCE_MTU5_TGIU5,DTCE_MTU5_TGIV5,DTCE_MTU5_TGIW5, -DTCE_MTU6_TGIA6,DTCE_MTU6_TGIB6,DTCE_MTU6_TGIC6,DTCE_MTU6_TGID6, -DTCE_MTU7_TGIA7=149,DTCE_MTU7_TGIB7, -DTCE_MTU8_TGIA8=153,DTCE_MTU8_TGIB8, -DTCE_MTU9_TGIA9=157,DTCE_MTU9_TGIB9,DTCE_MTU9_TGIC9,DTCE_MTU9_TGID9, -DTCE_MTU10_TGIA10=162,DTCE_MTU10_TGIB10,DTCE_MTU10_TGIC10,DTCE_MTU10_TGID10,DTCE_MTU10_TCIV10, -DTCE_MTU11_TGIU11,DTCE_MTU11_TGIV11,DTCE_MTU11_TGIW11, -DTCE_TMR0_CMIA0=174,DTCE_TMR0_CMIB0, -DTCE_TMR1_CMIA1=177,DTCE_TMR1_CMIB1, -DTCE_TMR2_CMIA2=180,DTCE_TMR2_CMIB2, -DTCE_TMR3_CMIA3=183,DTCE_TMR3_CMIB3, -DTCE_DMAC_DMAC0I=198,DTCE_DMAC_DMAC1I,DTCE_DMAC_DMAC2I,DTCE_DMAC_DMAC3I, -DTCE_EXDMAC_EXDMAC0I,DTCE_EXDMAC_EXDMAC1I, -DTCE_SCI0_RXI0=215,DTCE_SCI0_TXI0, -DTCE_SCI1_RXI1=219,DTCE_SCI1_TXI1, -DTCE_SCI2_RXI2=223,DTCE_SCI2_TXI2, -DTCE_SCI3_RXI3=227,DTCE_SCI3_TXI3, -DTCE_SCI5_RXI5=235,DTCE_SCI5_TXI5, -DTCE_SCI6_RXI6=239,DTCE_SCI6_TXI6, -DTCE_RIIC0_ICRXI0=247,DTCE_RIIC0_ICTXI0, -DTCE_RIIC1_ICRXI1=251,DTCE_RIIC1_ICTXI1 -}; - -enum enum_ier { -IER_BSC_BUSERR=0x02, -IER_FCU_FIFERR=0x02,IER_FCU_FRDYI=0x02, -IER_ICU_SWINT=0x03, -IER_CMT0_CMI0=0x03, -IER_CMT1_CMI1=0x03, -IER_CMT2_CMI2=0x03, -IER_CMT3_CMI3=0x03, -IER_ETHER_EINT=0x04, -IER_USB0_D0FIFO0=0x04,IER_USB0_D1FIFO0=0x04,IER_USB0_USBI0=0x04, -IER_USB1_D0FIFO1=0x05,IER_USB1_D1FIFO1=0x05,IER_USB1_USBI1=0x05, -IER_RSPI0_SPEI0=0x05,IER_RSPI0_SPRI0=0x05,IER_RSPI0_SPTI0=0x05,IER_RSPI0_SPII0=0x05, -IER_RSPI1_SPEI1=0x06,IER_RSPI1_SPRI1=0x06,IER_RSPI1_SPTI1=0x06,IER_RSPI1_SPII1=0x06, -IER_CAN0_ERS0=0x07,IER_CAN0_RXF0=0x07,IER_CAN0_TXF0=0x07,IER_CAN0_RXM0=0x07,IER_CAN0_TXM0=0x07, -IER_RTC_PRD=0x07,IER_RTC_CUP=0x07, -IER_ICU_IRQ0=0x08,IER_ICU_IRQ1=0x08,IER_ICU_IRQ2=0x08,IER_ICU_IRQ3=0x08,IER_ICU_IRQ4=0x08,IER_ICU_IRQ5=0x08,IER_ICU_IRQ6=0x08,IER_ICU_IRQ7=0x08,IER_ICU_IRQ8=0x09,IER_ICU_IRQ9=0x09,IER_ICU_IRQ10=0x09,IER_ICU_IRQ11=0x09,IER_ICU_IRQ12=0x09,IER_ICU_IRQ13=0x09,IER_ICU_IRQ14=0x09,IER_ICU_IRQ15=0x09, -IER_USB_USBR0=0x0B,IER_USB_USBR1=0x0B, -IER_RTC_ALM=0x0B, -IER_WDT_WOVI=0x0C, -IER_AD0_ADI0=0x0C, -IER_AD1_ADI1=0x0C, -IER_S12AD_ADI=0x0C, -IER_MTU0_TGIA0=0x0E,IER_MTU0_TGIB0=0x0E,IER_MTU0_TGIC0=0x0E,IER_MTU0_TGID0=0x0E,IER_MTU0_TCIV0=0x0E,IER_MTU0_TGIE0=0x0E,IER_MTU0_TGIF0=0x0F, -IER_MTU1_TGIA1=0x0F,IER_MTU1_TGIB1=0x0F,IER_MTU1_TCIV1=0x0F,IER_MTU1_TCIU1=0x0F, -IER_MTU2_TGIA2=0x0F,IER_MTU2_TGIB2=0x0F,IER_MTU2_TCIV2=0x0F,IER_MTU2_TCIU2=0x10, -IER_MTU3_TGIA3=0x10,IER_MTU3_TGIB3=0x10,IER_MTU3_TGIC3=0x10,IER_MTU3_TGID3=0x10,IER_MTU3_TCIV3=0x10, -IER_MTU4_TGIA4=0x10,IER_MTU4_TGIB4=0x10,IER_MTU4_TGIC4=0x11,IER_MTU4_TGID4=0x11,IER_MTU4_TCIV4=0x11, -IER_MTU5_TGIU5=0x11,IER_MTU5_TGIV5=0x11,IER_MTU5_TGIW5=0x10, -IER_MTU6_TGIA6=0x11,IER_MTU6_TGIB6=0x11,IER_MTU6_TGIC6=0x12,IER_MTU6_TGID6=0x12,IER_MTU6_TCIV6=0x12,IER_MTU6_TGIE6=0x12,IER_MTU6_TGIF6=0x12, -IER_MTU7_TGIA7=0x12,IER_MTU7_TGIB7=0x12,IER_MTU7_TCIV7=0x12,IER_MTU7_TCIU7=0x13, -IER_MTU8_TGIA8=0x13,IER_MTU8_TGIB8=0x13,IER_MTU8_TCIV8=0x13,IER_MTU8_TCIU8=0x13, -IER_MTU9_TGIA9=0x13,IER_MTU9_TGIB9=0x13,IER_MTU9_TGIC9=0x13,IER_MTU9_TGID9=0x14,IER_MTU9_TCIV9=0x14, -IER_MTU10_TGIA10=0x14,IER_MTU10_TGIB10=0x14,IER_MTU10_TGIC10=0x14,IER_MTU10_TGID10=0x14,IER_MTU10_TCIV10=0x14, -IER_MTU11_TGIU11=0x14,IER_MTU11_TGIV11=0x15,IER_MTU11_TGIW11=0x15, -IER_POE_OEI1=0x15,IER_POE_OEI2=0x15,IER_POE_OEI3=0x15,IER_POE_OEI4=0x15, -IER_TMR0_CMIA0=0x15,IER_TMR0_CMIB0=0x15,IER_TMR0_OVI0=0x16, -IER_TMR1_CMIA1=0x16,IER_TMR1_CMIB1=0x16,IER_TMR1_OVI1=0x16, -IER_TMR2_CMIA2=0x16,IER_TMR2_CMIB2=0x16,IER_TMR2_OVI2=0x16, -IER_TMR3_CMIA3=0x16,IER_TMR3_CMIB3=0x17,IER_TMR3_OVI3=0x17, -IER_DMAC_DMAC0I=0x18,IER_DMAC_DMAC1I=0x18,IER_DMAC_DMAC2I=0x19,IER_DMAC_DMAC3I=0x19, -IER_EXDMAC_EXDMAC0I=0x19,IER_EXDMAC_EXDMAC1I=0x19, -IER_SCI0_ERI0=0x1A,IER_SCI0_RXI0=0x1A,IER_SCI0_TXI0=0x1B,IER_SCI0_TEI0=0x1B, -IER_SCI1_ERI1=0x1B,IER_SCI1_RXI1=0x1B,IER_SCI1_TXI1=0x1B,IER_SCI1_TEI1=0x1B, -IER_SCI2_ERI2=0x1B,IER_SCI2_RXI2=0x1B,IER_SCI2_TXI2=0x1C,IER_SCI2_TEI2=0x1C, -IER_SCI3_ERI3=0x1C,IER_SCI3_RXI3=0x1C,IER_SCI3_TXI3=0x1C,IER_SCI3_TEI3=0x1C, -IER_SCI5_ERI5=0x1D,IER_SCI5_RXI5=0x1D,IER_SCI5_TXI5=0x1D,IER_SCI5_TEI5=0x1D, -IER_SCI6_ERI6=0x1D,IER_SCI6_RXI6=0x1D,IER_SCI6_TXI6=0x1E,IER_SCI6_TEI6=0x1E, -IER_RIIC0_ICEEI0=0x1E,IER_RIIC0_ICRXI0=0x1E,IER_RIIC0_ICTXI0=0x1F,IER_RIIC0_ICTEI0=0x1F, -IER_RIIC1_ICEEI1=0x1F,IER_RIIC1_ICRXI1=0x1F,IER_RIIC1_ICTXI1=0x1F,IER_RIIC1_ICTEI1=0x1F -}; - -enum enum_ipr { -IPR_BSC_BUSERR=0x00, -IPR_FCU_FIFERR=0x01,IPR_FCU_FRDYI=0x02, -IPR_ICU_SWINT=0x03, -IPR_CMT0_CMI0=0x04, -IPR_CMT1_CMI1=0x05, -IPR_CMT2_CMI2=0x06, -IPR_CMT3_CMI3=0x07, -IPR_ETHER_EINT=0x08, -IPR_USB0_D0FIFO0=0x0C,IPR_USB0_D1FIFO0=0x0D,IPR_USB0_USBI0=0x0E, -IPR_USB1_D0FIFO1=0x10,IPR_USB1_D1FIFO1=0x11,IPR_USB1_USBI1=0x12, -IPR_RSPI0_SPEI0=0x14,IPR_RSPI0_SPRI0=0x14,IPR_RSPI0_SPTI0=0x14,IPR_RSPI0_SPII0=0x14, -IPR_RSPI1_SPEI1=0x15,IPR_RSPI1_SPRI1=0x15,IPR_RSPI1_SPTI1=0x15,IPR_RSPI1_SPII1=0x15, -IPR_CAN0_ERS0=0x18,IPR_CAN0_RXF0=0x18,IPR_CAN0_TXF0=0x18,IPR_CAN0_RXM0=0x18,IPR_CAN0_TXM0=0x18, -IPR_RTC_PRD=0x1E,IPR_RTC_CUP=0x1F, -IPR_ICU_IRQ0=0x20,IPR_ICU_IRQ1=0x21,IPR_ICU_IRQ2=0x22,IPR_ICU_IRQ3=0x23,IPR_ICU_IRQ4=0x24,IPR_ICU_IRQ5=0x25,IPR_ICU_IRQ6=0x26,IPR_ICU_IRQ7=0x27,IPR_ICU_IRQ8=0x28,IPR_ICU_IRQ9=0x29,IPR_ICU_IRQ10=0x2A,IPR_ICU_IRQ11=0x2B,IPR_ICU_IRQ12=0x2C,IPR_ICU_IRQ13=0x2D,IPR_ICU_IRQ14=0x2E,IPR_ICU_IRQ15=0x2F, -IPR_USB_USBR0=0x3A,IPR_USB_USBR1=0x3B, -IPR_RTC_ALM=0x3C, -IPR_WDT_WOVI=0x40, -IPR_AD0_ADI0=0x44, -IPR_AD1_ADI1=0x45, -IPR_S12AD_ADI=0x48, -IPR_MTU0_TGIA0=0x51,IPR_MTU0_TGIB0=0x51,IPR_MTU0_TGIC0=0x51,IPR_MTU0_TGID0=0x51,IPR_MTU0_TCIV0=0x52,IPR_MTU0_TGIE0=0x52,IPR_MTU0_TGIF0=0x52, -IPR_MTU1_TGIA1=0x53,IPR_MTU1_TGIB1=0x53,IPR_MTU1_TCIV1=0x54,IPR_MTU1_TCIU1=0x54, -IPR_MTU2_TGIA2=0x55,IPR_MTU2_TGIB2=0x55,IPR_MTU2_TCIV2=0x56,IPR_MTU2_TCIU2=0x56, -IPR_MTU3_TGIA3=0x57,IPR_MTU3_TGIB3=0x57,IPR_MTU3_TGIC3=0x57,IPR_MTU3_TGID3=0x57,IPR_MTU3_TCIV3=0x58, -IPR_MTU4_TGIA4=0x59,IPR_MTU4_TGIB4=0x59,IPR_MTU4_TGIC4=0x59,IPR_MTU4_TGID4=0x59,IPR_MTU4_TCIV4=0x5A, -IPR_MTU5_TGIU5=0x5B,IPR_MTU5_TGIV5=0x5B,IPR_MTU5_TGIW5=0x5B, -IPR_MTU6_TGIA6=0x5C,IPR_MTU6_TGIB6=0x5C,IPR_MTU6_TGIC6=0x5C,IPR_MTU6_TGID6=0x5C,IPR_MTU6_TCIV6=0x5D,IPR_MTU6_TGIE6=0x5D,IPR_MTU6_TGIF6=0x5D, -IPR_MTU7_TGIA7=0x5E,IPR_MTU7_TGIB7=0x5E,IPR_MTU7_TCIV7=0x5F,IPR_MTU7_TCIU7=0x5F, -IPR_MTU8_TGIA8=0x60,IPR_MTU8_TGIB8=0x60,IPR_MTU8_TCIV8=0x61,IPR_MTU8_TCIU8=0x61, -IPR_MTU9_TGIA9=0x62,IPR_MTU9_TGIB9=0x62,IPR_MTU9_TGIC9=0x62,IPR_MTU9_TGID9=0x62,IPR_MTU9_TCIV9=0x63, -IPR_MTU10_TGIA10=0x64,IPR_MTU10_TGIB10=0x64,IPR_MTU10_TGIC10=0x64,IPR_MTU10_TGID10=0x64,IPR_MTU10_TCIV10=0x65, -IPR_MTU11_TGIU11=0x66,IPR_MTU11_TGIV11=0x66,IPR_MTU11_TGIW11=0x66, -IPR_POE_OEI1=0x67,IPR_POE_OEI2=0x67,IPR_POE_OEI3=0x67,IPR_POE_OEI4=0x67, -IPR_TMR0_CMIA0=0x68,IPR_TMR0_CMIB0=0x68,IPR_TMR0_OVI0=0x68, -IPR_TMR1_CMIA1=0x69,IPR_TMR1_CMIB1=0x69,IPR_TMR1_OVI1=0x69, -IPR_TMR2_CMIA2=0x6A,IPR_TMR2_CMIB2=0x6A,IPR_TMR2_OVI2=0x6A, -IPR_TMR3_CMIA3=0x6B,IPR_TMR3_CMIB3=0x6B,IPR_TMR3_OVI3=0x6B, -IPR_DMAC_DMAC0I=0x70,IPR_DMAC_DMAC1I=0x71,IPR_DMAC_DMAC2I=0x72,IPR_DMAC_DMAC3I=0x73, -IPR_EXDMAC_EXDMAC0I=0x74,IPR_EXDMAC_EXDMAC1I=0x75, -IPR_SCI0_ERI0=0x80,IPR_SCI0_RXI0=0x80,IPR_SCI0_TXI0=0x80,IPR_SCI0_TEI0=0x80, -IPR_SCI1_ERI1=0x81,IPR_SCI1_RXI1=0x81,IPR_SCI1_TXI1=0x81,IPR_SCI1_TEI1=0x81, -IPR_SCI2_ERI2=0x82,IPR_SCI2_RXI2=0x82,IPR_SCI2_TXI2=0x82,IPR_SCI2_TEI2=0x82, -IPR_SCI3_ERI3=0x83,IPR_SCI3_RXI3=0x83,IPR_SCI3_TXI3=0x83,IPR_SCI3_TEI3=0x83, -IPR_SCI5_ERI5=0x85,IPR_SCI5_RXI5=0x85,IPR_SCI5_TXI5=0x85,IPR_SCI5_TEI5=0x85, -IPR_SCI6_ERI6=0x86,IPR_SCI6_RXI6=0x86,IPR_SCI6_TXI6=0x86,IPR_SCI6_TEI6=0x86, -IPR_RIIC0_ICEEI0=0x88,IPR_RIIC0_ICRXI0=0x89,IPR_RIIC0_ICTXI0=0x8A,IPR_RIIC0_ICTEI0=0x8B, -IPR_RIIC1_ICEEI1=0x8C,IPR_RIIC1_ICRXI1=0x8D,IPR_RIIC1_ICTXI1=0x8E,IPR_RIIC1_ICTEI1=0x8F, -IPR_BSC_=0x00, -IPR_CMT0_=0x04, -IPR_CMT1_=0x05, -IPR_CMT2_=0x06, -IPR_CMT3_=0x07, -IPR_ETHER_=0x08, -IPR_RSPI0_=0x14, -IPR_RSPI1_=0x15, -IPR_CAN0_=0x18, -IPR_WDT_=0x40, -IPR_AD0_=0x44, -IPR_AD1_=0x45, -IPR_S12AD_=0x48, -IPR_MTU1_TGI=0x53, -IPR_MTU1_TCI=0x54, -IPR_MTU2_TGI=0x55, -IPR_MTU2_TCI=0x56, -IPR_MTU3_TGI=0x57, -IPR_MTU4_TGI=0x59, -IPR_MTU5_=0x5B, -IPR_MTU5_TGI=0x5B, -IPR_MTU7_TGI=0x5E, -IPR_MTU7_TCI=0x5F, -IPR_MTU8_TGI=0x60, -IPR_MTU8_TCI=0x61, -IPR_MTU9_TGI=0x62, -IPR_MTU10_TGI=0x64, -IPR_MTU11_=0x66, -IPR_MTU11_TGI=0x66, -IPR_POE_=0x67, -IPR_POE_OEI=0x67, -IPR_TMR0_=0x68, -IPR_TMR1_=0x69, -IPR_TMR2_=0x6A, -IPR_TMR3_=0x6B, -IPR_SCI0_=0x80, -IPR_SCI1_=0x81, -IPR_SCI2_=0x82, -IPR_SCI3_=0x83, -IPR_SCI5_=0x85, -IPR_SCI6_=0x86 -}; - -#define IEN_BSC_BUSERR IEN0 -#define IEN_FCU_FIFERR IEN5 -#define IEN_FCU_FRDYI IEN7 -#define IEN_ICU_SWINT IEN3 -#define IEN_CMT0_CMI0 IEN4 -#define IEN_CMT1_CMI1 IEN5 -#define IEN_CMT2_CMI2 IEN6 -#define IEN_CMT3_CMI3 IEN7 -#define IEN_ETHER_EINT IEN0 -#define IEN_USB0_D0FIFO0 IEN4 -#define IEN_USB0_D1FIFO0 IEN5 -#define IEN_USB0_USBI0 IEN6 -#define IEN_USB1_D0FIFO1 IEN0 -#define IEN_USB1_D1FIFO1 IEN1 -#define IEN_USB1_USBI1 IEN2 -#define IEN_RSPI0_SPEI0 IEN4 -#define IEN_RSPI0_SPRI0 IEN5 -#define IEN_RSPI0_SPTI0 IEN6 -#define IEN_RSPI0_SPII0 IEN7 -#define IEN_RSPI1_SPEI1 IEN0 -#define IEN_RSPI1_SPRI1 IEN1 -#define IEN_RSPI1_SPTI1 IEN2 -#define IEN_RSPI1_SPII1 IEN3 -#define IEN_CAN0_ERS0 IEN0 -#define IEN_CAN0_RXF0 IEN1 -#define IEN_CAN0_TXF0 IEN2 -#define IEN_CAN0_RXM0 IEN3 -#define IEN_CAN0_TXM0 IEN4 -#define IEN_RTC_PRD IEN6 -#define IEN_RTC_CUP IEN7 -#define IEN_ICU_IRQ0 IEN0 -#define IEN_ICU_IRQ1 IEN1 -#define IEN_ICU_IRQ2 IEN2 -#define IEN_ICU_IRQ3 IEN3 -#define IEN_ICU_IRQ4 IEN4 -#define IEN_ICU_IRQ5 IEN5 -#define IEN_ICU_IRQ6 IEN6 -#define IEN_ICU_IRQ7 IEN7 -#define IEN_ICU_IRQ8 IEN0 -#define IEN_ICU_IRQ9 IEN1 -#define IEN_ICU_IRQ10 IEN2 -#define IEN_ICU_IRQ11 IEN3 -#define IEN_ICU_IRQ12 IEN4 -#define IEN_ICU_IRQ13 IEN5 -#define IEN_ICU_IRQ14 IEN6 -#define IEN_ICU_IRQ15 IEN7 -#define IEN_USB_USBR0 IEN2 -#define IEN_USB_USBR1 IEN3 -#define IEN_RTC_ALM IEN4 -#define IEN_WDT_WOVI IEN0 -#define IEN_AD0_ADI0 IEN2 -#define IEN_AD1_ADI1 IEN3 -#define IEN_S12AD_ADI IEN6 -#define IEN_MTU0_TGIA0 IEN2 -#define IEN_MTU0_TGIB0 IEN3 -#define IEN_MTU0_TGIC0 IEN4 -#define IEN_MTU0_TGID0 IEN5 -#define IEN_MTU0_TCIV0 IEN6 -#define IEN_MTU0_TGIE0 IEN7 -#define IEN_MTU0_TGIF0 IEN0 -#define IEN_MTU1_TGIA1 IEN1 -#define IEN_MTU1_TGIB1 IEN2 -#define IEN_MTU1_TCIV1 IEN3 -#define IEN_MTU1_TCIU1 IEN4 -#define IEN_MTU2_TGIA2 IEN5 -#define IEN_MTU2_TGIB2 IEN6 -#define IEN_MTU2_TCIV2 IEN7 -#define IEN_MTU2_TCIU2 IEN0 -#define IEN_MTU3_TGIA3 IEN1 -#define IEN_MTU3_TGIB3 IEN2 -#define IEN_MTU3_TGIC3 IEN3 -#define IEN_MTU3_TGID3 IEN4 -#define IEN_MTU3_TCIV3 IEN5 -#define IEN_MTU4_TGIA4 IEN6 -#define IEN_MTU4_TGIB4 IEN7 -#define IEN_MTU4_TGIC4 IEN0 -#define IEN_MTU4_TGID4 IEN1 -#define IEN_MTU4_TCIV4 IEN2 -#define IEN_MTU5_TGIU5 IEN3 -#define IEN_MTU5_TGIV5 IEN4 -#define IEN_MTU5_TGIW5 IEN7 -#define IEN_MTU6_TGIA6 IEN6 -#define IEN_MTU6_TGIB6 IEN7 -#define IEN_MTU6_TGIC6 IEN0 -#define IEN_MTU6_TGID6 IEN1 -#define IEN_MTU6_TCIV6 IEN2 -#define IEN_MTU6_TGIE6 IEN3 -#define IEN_MTU6_TGIF6 IEN4 -#define IEN_MTU7_TGIA7 IEN5 -#define IEN_MTU7_TGIB7 IEN6 -#define IEN_MTU7_TCIV7 IEN7 -#define IEN_MTU7_TCIU7 IEN0 -#define IEN_MTU8_TGIA8 IEN1 -#define IEN_MTU8_TGIB8 IEN2 -#define IEN_MTU8_TCIV8 IEN3 -#define IEN_MTU8_TCIU8 IEN4 -#define IEN_MTU9_TGIA9 IEN5 -#define IEN_MTU9_TGIB9 IEN6 -#define IEN_MTU9_TGIC9 IEN7 -#define IEN_MTU9_TGID9 IEN0 -#define IEN_MTU9_TCIV9 IEN1 -#define IEN_MTU10_TGIA10 IEN2 -#define IEN_MTU10_TGIB10 IEN3 -#define IEN_MTU10_TGIC10 IEN4 -#define IEN_MTU10_TGID10 IEN5 -#define IEN_MTU10_TCIV10 IEN6 -#define IEN_MTU11_TGIU11 IEN7 -#define IEN_MTU11_TGIV11 IEN0 -#define IEN_MTU11_TGIW11 IEN1 -#define IEN_POE_OEI1 IEN2 -#define IEN_POE_OEI2 IEN3 -#define IEN_POE_OEI3 IEN4 -#define IEN_POE_OEI4 IEN5 -#define IEN_TMR0_CMIA0 IEN6 -#define IEN_TMR0_CMIB0 IEN7 -#define IEN_TMR0_OVI0 IEN0 -#define IEN_TMR1_CMIA1 IEN1 -#define IEN_TMR1_CMIB1 IEN2 -#define IEN_TMR1_OVI1 IEN3 -#define IEN_TMR2_CMIA2 IEN4 -#define IEN_TMR2_CMIB2 IEN5 -#define IEN_TMR2_OVI2 IEN6 -#define IEN_TMR3_CMIA3 IEN7 -#define IEN_TMR3_CMIB3 IEN0 -#define IEN_TMR3_OVI3 IEN1 -#define IEN_DMAC_DMAC0I IEN6 -#define IEN_DMAC_DMAC1I IEN7 -#define IEN_DMAC_DMAC2I IEN0 -#define IEN_DMAC_DMAC3I IEN1 -#define IEN_EXDMAC_EXDMAC0I IEN2 -#define IEN_EXDMAC_EXDMAC1I IEN3 -#define IEN_SCI0_ERI0 IEN6 -#define IEN_SCI0_RXI0 IEN7 -#define IEN_SCI0_TXI0 IEN0 -#define IEN_SCI0_TEI0 IEN1 -#define IEN_SCI1_ERI1 IEN2 -#define IEN_SCI1_RXI1 IEN3 -#define IEN_SCI1_TXI1 IEN4 -#define IEN_SCI1_TEI1 IEN5 -#define IEN_SCI2_ERI2 IEN6 -#define IEN_SCI2_RXI2 IEN7 -#define IEN_SCI2_TXI2 IEN0 -#define IEN_SCI2_TEI2 IEN1 -#define IEN_SCI3_ERI3 IEN2 -#define IEN_SCI3_RXI3 IEN3 -#define IEN_SCI3_TXI3 IEN4 -#define IEN_SCI3_TEI3 IEN5 -#define IEN_SCI5_ERI5 IEN2 -#define IEN_SCI5_RXI5 IEN3 -#define IEN_SCI5_TXI5 IEN4 -#define IEN_SCI5_TEI5 IEN5 -#define IEN_SCI6_ERI6 IEN6 -#define IEN_SCI6_RXI6 IEN7 -#define IEN_SCI6_TXI6 IEN0 -#define IEN_SCI6_TEI6 IEN1 -#define IEN_RIIC0_ICEEI0 IEN6 -#define IEN_RIIC0_ICRXI0 IEN7 -#define IEN_RIIC0_ICTXI0 IEN0 -#define IEN_RIIC0_ICTEI0 IEN1 -#define IEN_RIIC1_ICEEI1 IEN2 -#define IEN_RIIC1_ICRXI1 IEN3 -#define IEN_RIIC1_ICTXI1 IEN4 -#define IEN_RIIC1_ICTEI1 IEN5 - -#define VECT_BSC_BUSERR 16 -#define VECT_FCU_FIFERR 21 -#define VECT_FCU_FRDYI 23 -#define VECT_ICU_SWINT 27 -#define VECT_CMT0_CMI0 28 -#define VECT_CMT1_CMI1 29 -#define VECT_CMT2_CMI2 30 -#define VECT_CMT3_CMI3 31 -#define VECT_ETHER_EINT 32 -#define VECT_USB0_D0FIFO0 36 -#define VECT_USB0_D1FIFO0 37 -#define VECT_USB0_USBI0 38 -#define VECT_USB1_D0FIFO1 40 -#define VECT_USB1_D1FIFO1 41 -#define VECT_USB1_USBI1 42 -#define VECT_RSPI0_SPEI0 44 -#define VECT_RSPI0_SPRI0 45 -#define VECT_RSPI0_SPTI0 46 -#define VECT_RSPI0_SPII0 47 -#define VECT_RSPI1_SPEI1 48 -#define VECT_RSPI1_SPRI1 49 -#define VECT_RSPI1_SPTI1 50 -#define VECT_RSPI1_SPII1 51 -#define VECT_CAN0_ERS0 56 -#define VECT_CAN0_RXF0 57 -#define VECT_CAN0_TXF0 58 -#define VECT_CAN0_RXM0 59 -#define VECT_CAN0_TXM0 60 -#define VECT_RTC_PRD 62 -#define VECT_RTC_CUP 63 -#define VECT_ICU_IRQ0 64 -#define VECT_ICU_IRQ1 65 -#define VECT_ICU_IRQ2 66 -#define VECT_ICU_IRQ3 67 -#define VECT_ICU_IRQ4 68 -#define VECT_ICU_IRQ5 69 -#define VECT_ICU_IRQ6 70 -#define VECT_ICU_IRQ7 71 -#define VECT_ICU_IRQ8 72 -#define VECT_ICU_IRQ9 73 -#define VECT_ICU_IRQ10 74 -#define VECT_ICU_IRQ11 75 -#define VECT_ICU_IRQ12 76 -#define VECT_ICU_IRQ13 77 -#define VECT_ICU_IRQ14 78 -#define VECT_ICU_IRQ15 79 -#define VECT_USB_USBR0 90 -#define VECT_USB_USBR1 91 -#define VECT_RTC_ALM 92 -#define VECT_WDT_WOVI 96 -#define VECT_AD0_ADI0 98 -#define VECT_AD1_ADI1 99 -#define VECT_S12AD_ADI 102 -#define VECT_MTU0_TGIA0 114 -#define VECT_MTU0_TGIB0 115 -#define VECT_MTU0_TGIC0 116 -#define VECT_MTU0_TGID0 117 -#define VECT_MTU0_TCIV0 118 -#define VECT_MTU0_TGIE0 119 -#define VECT_MTU0_TGIF0 120 -#define VECT_MTU1_TGIA1 121 -#define VECT_MTU1_TGIB1 122 -#define VECT_MTU1_TCIV1 123 -#define VECT_MTU1_TCIU1 124 -#define VECT_MTU2_TGIA2 125 -#define VECT_MTU2_TGIB2 126 -#define VECT_MTU2_TCIV2 127 -#define VECT_MTU2_TCIU2 128 -#define VECT_MTU3_TGIA3 129 -#define VECT_MTU3_TGIB3 130 -#define VECT_MTU3_TGIC3 131 -#define VECT_MTU3_TGID3 132 -#define VECT_MTU3_TCIV3 133 -#define VECT_MTU4_TGIA4 134 -#define VECT_MTU4_TGIB4 135 -#define VECT_MTU4_TGIC4 136 -#define VECT_MTU4_TGID4 137 -#define VECT_MTU4_TCIV4 138 -#define VECT_MTU5_TGIU5 139 -#define VECT_MTU5_TGIV5 140 -#define VECT_MTU5_TGIW5 141 -#define VECT_MTU6_TGIA6 142 -#define VECT_MTU6_TGIB6 143 -#define VECT_MTU6_TGIC6 144 -#define VECT_MTU6_TGID6 145 -#define VECT_MTU6_TCIV6 146 -#define VECT_MTU6_TGIE6 147 -#define VECT_MTU6_TGIF6 148 -#define VECT_MTU7_TGIA7 149 -#define VECT_MTU7_TGIB7 150 -#define VECT_MTU7_TCIV7 151 -#define VECT_MTU7_TCIU7 152 -#define VECT_MTU8_TGIA8 153 -#define VECT_MTU8_TGIB8 154 -#define VECT_MTU8_TCIV8 155 -#define VECT_MTU8_TCIU8 156 -#define VECT_MTU9_TGIA9 157 -#define VECT_MTU9_TGIB9 158 -#define VECT_MTU9_TGIC9 159 -#define VECT_MTU9_TGID9 160 -#define VECT_MTU9_TCIV9 161 -#define VECT_MTU10_TGIA10 162 -#define VECT_MTU10_TGIB10 163 -#define VECT_MTU10_TGIC10 164 -#define VECT_MTU10_TGID10 165 -#define VECT_MTU10_TCIV10 166 -#define VECT_MTU11_TGIU11 167 -#define VECT_MTU11_TGIV11 168 -#define VECT_MTU11_TGIW11 169 -#define VECT_POE_OEI1 170 -#define VECT_POE_OEI2 171 -#define VECT_POE_OEI3 172 -#define VECT_POE_OEI4 173 -#define VECT_TMR0_CMIA0 174 -#define VECT_TMR0_CMIB0 175 -#define VECT_TMR0_OVI0 176 -#define VECT_TMR1_CMIA1 177 -#define VECT_TMR1_CMIB1 178 -#define VECT_TMR1_OVI1 179 -#define VECT_TMR2_CMIA2 180 -#define VECT_TMR2_CMIB2 181 -#define VECT_TMR2_OVI2 182 -#define VECT_TMR3_CMIA3 183 -#define VECT_TMR3_CMIB3 184 -#define VECT_TMR3_OVI3 185 -#define VECT_DMAC_DMAC0I 198 -#define VECT_DMAC_DMAC1I 199 -#define VECT_DMAC_DMAC2I 200 -#define VECT_DMAC_DMAC3I 201 -#define VECT_EXDMAC_EXDMAC0I 202 -#define VECT_EXDMAC_EXDMAC1I 203 -#define VECT_SCI0_ERI0 214 -#define VECT_SCI0_RXI0 215 -#define VECT_SCI0_TXI0 216 -#define VECT_SCI0_TEI0 217 -#define VECT_SCI1_ERI1 218 -#define VECT_SCI1_RXI1 219 -#define VECT_SCI1_TXI1 220 -#define VECT_SCI1_TEI1 221 -#define VECT_SCI2_ERI2 222 -#define VECT_SCI2_RXI2 223 -#define VECT_SCI2_TXI2 224 -#define VECT_SCI2_TEI2 225 -#define VECT_SCI3_ERI3 226 -#define VECT_SCI3_RXI3 227 -#define VECT_SCI3_TXI3 228 -#define VECT_SCI3_TEI3 229 -#define VECT_SCI5_ERI5 234 -#define VECT_SCI5_RXI5 235 -#define VECT_SCI5_TXI5 236 -#define VECT_SCI5_TEI5 237 -#define VECT_SCI6_ERI6 238 -#define VECT_SCI6_RXI6 239 -#define VECT_SCI6_TXI6 240 -#define VECT_SCI6_TEI6 241 -#define VECT_RIIC0_ICEEI0 246 -#define VECT_RIIC0_ICRXI0 247 -#define VECT_RIIC0_ICTXI0 248 -#define VECT_RIIC0_ICTEI0 249 -#define VECT_RIIC1_ICEEI1 250 -#define VECT_RIIC1_ICRXI1 251 -#define VECT_RIIC1_ICTXI1 252 -#define VECT_RIIC1_ICTEI1 253 - -#define MSTP_EXDMAC SYSTEM.MSTPCRA.BIT.MSTPA29 -#define MSTP_DMAC SYSTEM.MSTPCRA.BIT.MSTPA28 -#define MSTP_DMAC0 SYSTEM.MSTPCRA.BIT.MSTPA28 -#define MSTP_DMAC1 SYSTEM.MSTPCRA.BIT.MSTPA28 -#define MSTP_DMAC2 SYSTEM.MSTPCRA.BIT.MSTPA28 -#define MSTP_DMAC3 SYSTEM.MSTPCRA.BIT.MSTPA28 -#define MSTP_DTC SYSTEM.MSTPCRA.BIT.MSTPA28 -#define MSTP_AD0 SYSTEM.MSTPCRA.BIT.MSTPA23 -#define MSTP_AD1 SYSTEM.MSTPCRA.BIT.MSTPA22 -#define MSTP_DA SYSTEM.MSTPCRA.BIT.MSTPA19 -#define MSTP_S12AD SYSTEM.MSTPCRA.BIT.MSTPA17 -#define MSTP_CMT0 SYSTEM.MSTPCRA.BIT.MSTPA15 -#define MSTP_CMT1 SYSTEM.MSTPCRA.BIT.MSTPA15 -#define MSTP_CMT2 SYSTEM.MSTPCRA.BIT.MSTPA14 -#define MSTP_CMT3 SYSTEM.MSTPCRA.BIT.MSTPA14 -#define MSTP_PPG0 SYSTEM.MSTPCRA.BIT.MSTPA11 -#define MSTP_PPG1 SYSTEM.MSTPCRA.BIT.MSTPA10 -#define MSTP_MTUA SYSTEM.MSTPCRA.BIT.MSTPA9 -#define MSTP_MTU0 SYSTEM.MSTPCRA.BIT.MSTPA9 -#define MSTP_MTU1 SYSTEM.MSTPCRA.BIT.MSTPA9 -#define MSTP_MTU2 SYSTEM.MSTPCRA.BIT.MSTPA9 -#define MSTP_MTU3 SYSTEM.MSTPCRA.BIT.MSTPA9 -#define MSTP_MTU4 SYSTEM.MSTPCRA.BIT.MSTPA9 -#define MSTP_MTU5 SYSTEM.MSTPCRA.BIT.MSTPA9 -#define MSTP_MTUB SYSTEM.MSTPCRA.BIT.MSTPA8 -#define MSTP_MTU6 SYSTEM.MSTPCRA.BIT.MSTPA8 -#define MSTP_MTU7 SYSTEM.MSTPCRA.BIT.MSTPA8 -#define MSTP_MTU8 SYSTEM.MSTPCRA.BIT.MSTPA8 -#define MSTP_MTU9 SYSTEM.MSTPCRA.BIT.MSTPA8 -#define MSTP_MTU10 SYSTEM.MSTPCRA.BIT.MSTPA8 -#define MSTP_MTU11 SYSTEM.MSTPCRA.BIT.MSTPA8 -#define MSTP_TMR0 SYSTEM.MSTPCRA.BIT.MSTPA5 -#define MSTP_TMR1 SYSTEM.MSTPCRA.BIT.MSTPA5 -#define MSTP_TMR01 SYSTEM.MSTPCRA.BIT.MSTPA5 -#define MSTP_TMR2 SYSTEM.MSTPCRA.BIT.MSTPA4 -#define MSTP_TMR3 SYSTEM.MSTPCRA.BIT.MSTPA4 -#define MSTP_TMR23 SYSTEM.MSTPCRA.BIT.MSTPA4 -#define MSTP_SCI0 SYSTEM.MSTPCRB.BIT.MSTPB31 -#define MSTP_SMCI0 SYSTEM.MSTPCRB.BIT.MSTPB31 -#define MSTP_SCI1 SYSTEM.MSTPCRB.BIT.MSTPB30 -#define MSTP_SMCI1 SYSTEM.MSTPCRB.BIT.MSTPB30 -#define MSTP_SCI2 SYSTEM.MSTPCRB.BIT.MSTPB29 -#define MSTP_SMCI2 SYSTEM.MSTPCRB.BIT.MSTPB29 -#define MSTP_SCI3 SYSTEM.MSTPCRB.BIT.MSTPB28 -#define MSTP_SMCI3 SYSTEM.MSTPCRB.BIT.MSTPB28 -#define MSTP_SCI5 SYSTEM.MSTPCRB.BIT.MSTPB26 -#define MSTP_SMCI5 SYSTEM.MSTPCRB.BIT.MSTPB26 -#define MSTP_SCI6 SYSTEM.MSTPCRB.BIT.MSTPB25 -#define MSTP_SMCI6 SYSTEM.MSTPCRB.BIT.MSTPB25 -#define MSTP_CRC SYSTEM.MSTPCRB.BIT.MSTPB23 -#define MSTP_RIIC0 SYSTEM.MSTPCRB.BIT.MSTPB21 -#define MSTP_RIIC1 SYSTEM.MSTPCRB.BIT.MSTPB20 -#define MSTP_USB0 SYSTEM.MSTPCRB.BIT.MSTPB19 -#define MSTP_USB1 SYSTEM.MSTPCRB.BIT.MSTPB18 -#define MSTP_RSPI0 SYSTEM.MSTPCRB.BIT.MSTPB17 -#define MSTP_RSPI1 SYSTEM.MSTPCRB.BIT.MSTPB16 -#define MSTP_EDMAC SYSTEM.MSTPCRB.BIT.MSTPB15 -#define MSTP_CAN0 SYSTEM.MSTPCRB.BIT.MSTPB0 -#define MSTP_RAM0 SYSTEM.MSTPCRC.BIT.MSTPC1 -#define MSTP_RAM1 SYSTEM.MSTPCRC.BIT.MSTPC0 - -#define __IR( x ) ICU.IR[ IR ## x ].BIT.IR -#define _IR( x ) __IR( x ) -#define IR( x , y ) _IR( _ ## x ## _ ## y ) -#define __DTCE( x ) ICU.DTCER[ DTCE ## x ].BIT.DTCE -#define _DTCE( x ) __DTCE( x ) -#define DTCE( x , y ) _DTCE( _ ## x ## _ ## y ) -#define __IEN( x ) ICU.IER[ IER ## x ].BIT.IEN ## x -#define _IEN( x ) __IEN( x ) -#define IEN( x , y ) _IEN( _ ## x ## _ ## y ) -#define __IPR( x ) ICU.IPR[ IPR ## x ].BIT.IPR -#define _IPR( x ) __IPR( x ) -#define IPR( x , y ) _IPR( _ ## x ## _ ## y ) -#define __VECT( x ) VECT ## x -#define _VECT( x ) __VECT( x ) -#define VECT( x , y ) _VECT( _ ## x ## _ ## y ) -#define __MSTP( x ) MSTP ## x -#define _MSTP( x ) __MSTP( x ) -#define MSTP( x ) _MSTP( _ ## x ) - -#define AD0 (*(volatile struct st_ad __evenaccess *)0x88040) -#define AD1 (*(volatile struct st_ad __evenaccess *)0x88060) -#define BSC (*(volatile struct st_bsc __evenaccess *)0x81300) -#define CAN0 (*(volatile struct st_can __evenaccess *)0x90200) -#define CMT (*(volatile struct st_cmt __evenaccess *)0x88000) -#define CMT0 (*(volatile struct st_cmt0 __evenaccess *)0x88002) -#define CMT1 (*(volatile struct st_cmt0 __evenaccess *)0x88008) -#define CMT2 (*(volatile struct st_cmt0 __evenaccess *)0x88012) -#define CMT3 (*(volatile struct st_cmt0 __evenaccess *)0x88018) -#define CRC (*(volatile struct st_crc __evenaccess *)0x88280) -#define DA (*(volatile struct st_da __evenaccess *)0x880C0) -#define DMAC (*(volatile struct st_dmac __evenaccess *)0x82200) -#define DMAC0 (*(volatile struct st_dmac0 __evenaccess *)0x82000) -#define DMAC1 (*(volatile struct st_dmac1 __evenaccess *)0x82040) -#define DMAC2 (*(volatile struct st_dmac1 __evenaccess *)0x82080) -#define DMAC3 (*(volatile struct st_dmac1 __evenaccess *)0x820C0) -#define DTC (*(volatile struct st_dtc __evenaccess *)0x82400) -#define EDMAC (*(volatile struct st_edmac __evenaccess *)0xC0000) -#define ETHERC (*(volatile struct st_etherc __evenaccess *)0xC0100) -#define EXDMAC (*(volatile struct st_exdmac __evenaccess *)0x82A00) -#define EXDMAC0 (*(volatile struct st_exdmac0 __evenaccess *)0x82800) -#define EXDMAC1 (*(volatile struct st_exdmac1 __evenaccess *)0x82840) -#define FLASH (*(volatile struct st_flash __evenaccess *)0x8C288) -#define ICU (*(volatile struct st_icu __evenaccess *)0x87000) -#define IOPORT (*(volatile struct st_ioport __evenaccess *)0x8C100) -#define IWDT (*(volatile struct st_iwdt __evenaccess *)0x88030) -#define MTU0 (*(volatile struct st_mtu0 __evenaccess *)0x88700) -#define MTU1 (*(volatile struct st_mtu1 __evenaccess *)0x88780) -#define MTU2 (*(volatile struct st_mtu2 __evenaccess *)0x88800) -#define MTU3 (*(volatile struct st_mtu3 __evenaccess *)0x88600) -#define MTU4 (*(volatile struct st_mtu4 __evenaccess *)0x88600) -#define MTU5 (*(volatile struct st_mtu5 __evenaccess *)0x88880) -#define MTU6 (*(volatile struct st_mtu0 __evenaccess *)0x88B00) -#define MTU7 (*(volatile struct st_mtu1 __evenaccess *)0x88B80) -#define MTU8 (*(volatile struct st_mtu2 __evenaccess *)0x88C00) -#define MTU9 (*(volatile struct st_mtu3 __evenaccess *)0x88A00) -#define MTU10 (*(volatile struct st_mtu4 __evenaccess *)0x88A00) -#define MTU11 (*(volatile struct st_mtu5 __evenaccess *)0x88C80) -#define MTUA (*(volatile struct st_mtua __evenaccess *)0x8860A) -#define MTUB (*(volatile struct st_mtua __evenaccess *)0x88A0A) -#define POE (*(volatile struct st_poe __evenaccess *)0x88900) -#define PORT0 (*(volatile struct st_port0 __evenaccess *)0x8C000) -#define PORT1 (*(volatile struct st_port1 __evenaccess *)0x8C001) -#define PORT2 (*(volatile struct st_port2 __evenaccess *)0x8C002) -#define PORT3 (*(volatile struct st_port3 __evenaccess *)0x8C003) -#define PORT4 (*(volatile struct st_port4 __evenaccess *)0x8C004) -#define PORT5 (*(volatile struct st_port5 __evenaccess *)0x8C005) -#define PORT6 (*(volatile struct st_port6 __evenaccess *)0x8C006) -#define PORT7 (*(volatile struct st_port7 __evenaccess *)0x8C007) -#define PORT8 (*(volatile struct st_port8 __evenaccess *)0x8C008) -#define PORT9 (*(volatile struct st_port9 __evenaccess *)0x8C009) -#define PORTA (*(volatile struct st_porta __evenaccess *)0x8C00A) -#define PORTB (*(volatile struct st_portb __evenaccess *)0x8C00B) -#define PORTC (*(volatile struct st_portc __evenaccess *)0x8C00C) -#define PORTD (*(volatile struct st_portd __evenaccess *)0x8C00D) -#define PORTE (*(volatile struct st_porte __evenaccess *)0x8C00E) -#define PORTF (*(volatile struct st_portf __evenaccess *)0x8C00F) -#define PORTG (*(volatile struct st_portg __evenaccess *)0x8C010) -#define PPG0 (*(volatile struct st_ppg0 __evenaccess *)0x881E6) -#define PPG1 (*(volatile struct st_ppg1 __evenaccess *)0x881F0) -#define RIIC0 (*(volatile struct st_riic __evenaccess *)0x88300) -#define RIIC1 (*(volatile struct st_riic __evenaccess *)0x88320) -#define RSPI0 (*(volatile struct st_rspi __evenaccess *)0x88380) -#define RSPI1 (*(volatile struct st_rspi __evenaccess *)0x883A0) -#define RTC (*(volatile struct st_rtc __evenaccess *)0x8C400) -#define S12AD (*(volatile struct st_s12ad __evenaccess *)0x89000) -#define SCI0 (*(volatile struct st_sci __evenaccess *)0x88240) -#define SCI1 (*(volatile struct st_sci __evenaccess *)0x88248) -#define SCI2 (*(volatile struct st_sci __evenaccess *)0x88250) -#define SCI3 (*(volatile struct st_sci __evenaccess *)0x88258) -#define SCI5 (*(volatile struct st_sci __evenaccess *)0x88268) -#define SCI6 (*(volatile struct st_sci __evenaccess *)0x88270) -#define SMCI0 (*(volatile struct st_smci __evenaccess *)0x88240) -#define SMCI1 (*(volatile struct st_smci __evenaccess *)0x88248) -#define SMCI2 (*(volatile struct st_smci __evenaccess *)0x88250) -#define SMCI3 (*(volatile struct st_smci __evenaccess *)0x88258) -#define SMCI5 (*(volatile struct st_smci __evenaccess *)0x88268) -#define SMCI6 (*(volatile struct st_smci __evenaccess *)0x88270) -#define SYSTEM (*(volatile struct st_system __evenaccess *)0x80000) -#define TMR0 (*(volatile struct st_tmr0 __evenaccess *)0x88200) -#define TMR1 (*(volatile struct st_tmr1 __evenaccess *)0x88201) -#define TMR2 (*(volatile struct st_tmr0 __evenaccess *)0x88210) -#define TMR3 (*(volatile struct st_tmr1 __evenaccess *)0x88211) -#define TMR01 (*(volatile struct st_tmr01 __evenaccess *)0x88204) -#define TMR23 (*(volatile struct st_tmr01 __evenaccess *)0x88214) -#define USB (*(volatile struct st_usb __evenaccess *)0xA0400) -#define USB0 (*(volatile struct st_usb0 __evenaccess *)0xA0000) -#define USB1 (*(volatile struct st_usb0 __evenaccess *)0xA0200) -#define WDT (*(volatile union un_wdt __evenaccess *)0x88028) -#pragma bit_order -#pragma packoption -#endif diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/include/lowsrc.h b/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/include/lowsrc.h deleted file mode 100644 index 4d2aabfc7..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/include/lowsrc.h +++ /dev/null @@ -1,13 +0,0 @@ -/***********************************************************************/ -/* */ -/* FILE :lowsrc.h */ -/* DATE :Wed, Aug 11, 2010 */ -/* DESCRIPTION :Header file of I/O Stream file */ -/* CPU TYPE :Other */ -/* */ -/* This file is generated by Renesas Project Generator (Ver.4.50). */ -/* NOTE:THIS IS A TYPICAL EXAMPLE. */ -/* */ -/***********************************************************************/ -/*Number of I/O Stream*/ -#define IOSTREAM 20 diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/include/rskrx62ndef.h b/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/include/rskrx62ndef.h deleted file mode 100644 index 5077d7425..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/include/rskrx62ndef.h +++ /dev/null @@ -1,98 +0,0 @@ - -/****************************************************************************** -* DISCLAIMER -* Please refer to http://www.renesas.com/disclaimer -****************************************************************************** - Copyright (C) 2008. Renesas Technology Corp., All Rights Reserved. -******************************************************************************* -* File Name : rsksh7216.h -* Version : 1.00 -* Description : RSK 7216 board specific settings -****************************************************************************** -* History : DD.MM.YYYY Version Description -* : 06.10.2009 1.00 First Release -******************************************************************************/ - -#ifndef RSKRX62N_H -#define RSKRX62N_H - -/****************************************************************************** -Includes , "Project Includes" -******************************************************************************/ - -/****************************************************************************** -Typedef definitions -******************************************************************************/ - -/****************************************************************************** -Macro definitions -******************************************************************************/ - -/* System Clock Settings */ -#define XTAL_FREQUENCY (12000000L) -#define ICLK_MUL (8) -#define PCLK_MUL (4) -#define BCLK_MUL (4) -#define ICLK_FREQUENCY (XTAL_FREQUENCY * ICLK_MUL) -#define PCLK_FREQUENCY (XTAL_FREQUENCY * PCLK_MUL) -#define BCLK_FREQUENCY (XTAL_FREQUENCY * BCLK_MUL) - -#define CMT0_CLK_SELECT (512) - -/* General Values */ -#define LED_ON (0) -#define LED_OFF (1) -#define SET_BIT_HIGH (1) -#define SET_BIT_LOW (0) -#define SET_BYTE_HIGH (0xFF) -#define SET_BYTE_LOW (0x00) - -/* Define switches to be polled if not available as interrupts */ -#define SW_ACTIVE FALSE -#define SW1 PORT0.DR.BIT.B0 -#define SW2 PORT0.DR.BIT.B1 -#define SW3 PORT0.DR.BIT.B7 -#define SW1_DDR PORT0.DDR.BIT.B0 -#define SW2_DDR PORT0.DDR.BIT.B1 -#define SW3_DDR PORT0.DDR.BIT.B7 -#define SW1_ICR PORT0.ICR.BIT.B0 -#define SW2_ICR PORT0.ICR.BIT.B1 -#define SW3_ICR PORT0.ICR.BIT.B7 - -/* LEDs */ -#define LED0 PORT0.DR.BIT.B2 -#define LED1 PORT0.DR.BIT.B3 -#define LED2 PORT0.DR.BIT.B5 -#define LED3 PORT3.DR.BIT.B4 -#define LED4 PORT6.DR.BIT.B0 -#define LED5 PORT7.DR.BIT.B3 -#define LED0_DDR PORT0.DDR.BIT.B2 -#define LED1_DDR PORT0.DDR.BIT.B3 -#define LED2_DDR PORT0.DDR.BIT.B5 -#define LED3_DDR PORT3.DDR.BIT.B4 -#define LED4_DDR PORT6.DDR.BIT.B0 -#define LED5_DDR PORT7.DDR.BIT.B3 - -/* 2x8 segment LCD */ -#define LCD_RS PORT8.DR.BIT.B4 -#define LCD_EN PORT8.DR.BIT.B5 -#define LCD_DATA PORT9.DR.BYTE -#define LCD_RS_DDR PORT8.DDR.BIT.B4 -#define LCD_EN_DDR PORT8.DDR.BIT.B5 -#define LCD_DATA_DDR PORT9.DDR.BYTE - - - -/****************************************************************************** -Variable Externs -******************************************************************************/ - -/****************************************************************************** -Functions Prototypes -******************************************************************************/ - - - -/* RSKRX62N_H */ -#endif - diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/include/stacksct.h b/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/include/stacksct.h deleted file mode 100644 index 1d5db830d..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/include/stacksct.h +++ /dev/null @@ -1,13 +0,0 @@ -/***********************************************************************/ -/* */ -/* FILE :stacksct.h */ -/* DATE :Wed, Aug 11, 2010 */ -/* DESCRIPTION :Setting of Stack area */ -/* CPU TYPE :Other */ -/* */ -/* This file is generated by Renesas Project Generator (Ver.4.50). */ -/* NOTE:THIS IS A TYPICAL EXAMPLE. */ -/* */ -/***********************************************************************/ -#pragma stacksize su=0x300 -#pragma stacksize si=0x100 diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/include/typedefine.h b/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/include/typedefine.h deleted file mode 100644 index d3ad67fec..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/include/typedefine.h +++ /dev/null @@ -1,41 +0,0 @@ -/***********************************************************************/ -/* */ -/* FILE :typedefine.h */ -/* DATE :Wed, Aug 11, 2010 */ -/* DESCRIPTION :Aliases of Integer Type */ -/* CPU TYPE :Other */ -/* */ -/* This file is generated by Renesas Project Generator (Ver.4.50). */ -/* NOTE:THIS IS A TYPICAL EXAMPLE. */ -/* */ -/***********************************************************************/ - - - -/********************************************************************* -* -* Device : RX -* -* File Name : typedefine.h -* -* Abstract : Aliases of Integer Type. -* -* History : 1.00 (2009-08-07) -* -* NOTE : THIS IS A TYPICAL EXAMPLE. -* -* Copyright(c) 2009 Renesas Technology Corp. -* And Renesas Solutions Corp.,All Rights Reserved. -* -*********************************************************************/ - -typedef signed char _SBYTE; -typedef unsigned char _UBYTE; -typedef signed short _SWORD; -typedef unsigned short _UWORD; -typedef signed int _SINT; -typedef unsigned int _UINT; -typedef signed long _SDWORD; -typedef unsigned long _UDWORD; -typedef signed long long _SQWORD; -typedef unsigned long long _UQWORD; diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/include/vect.h b/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/include/vect.h deleted file mode 100644 index a6a48946b..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/include/vect.h +++ /dev/null @@ -1,60 +0,0 @@ -/***********************************************************************/ -/* */ -/* FILE :vect.h */ -/* DATE :Wed, Aug 11, 2010 */ -/* DESCRIPTION :Definition of Vector */ -/* CPU TYPE :Other */ -/* */ -/* This file is generated by Renesas Project Generator (Ver.4.50). */ -/* NOTE:THIS IS A TYPICAL EXAMPLE. */ -/* */ -/***********************************************************************/ - - - -/********************************************************************* -* -* Device : RX/RX600 -* -* File Name : vect.h -* -* Abstract : Definition of Vector. -* -* History : 1.00 (2009-08-07) -* -* NOTE : THIS IS A TYPICAL EXAMPLE. -* -* Copyright(c) 2009 Renesas Technology Corp. -* And Renesas Solutions Corp.,All Rights Reserved. -* -*********************************************************************/ - -// Exception(Supervisor Instruction) -#pragma interrupt (Excep_SuperVisorInst) -void Excep_SuperVisorInst(void); - -// Exception(Undefined Instruction) -#pragma interrupt (Excep_UndefinedInst) -void Excep_UndefinedInst(void); - -// Exception(Floating Point) -#pragma interrupt (Excep_FloatingPoint) -void Excep_FloatingPoint(void); - -// NMI -#pragma interrupt (NonMaskableInterrupt) -void NonMaskableInterrupt(void); - -// Dummy -#pragma interrupt (Dummy) -void Dummy(void); - -// BRK -#pragma interrupt (Excep_BRK(vect=0)) -void Excep_BRK(void); - -//;<> -//;Power On Reset PC -extern void PowerON_Reset_PC(void); -//;<> - diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/main-blinky.c b/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/main-blinky.c deleted file mode 100644 index 5fa0159c0..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/main-blinky.c +++ /dev/null @@ -1,196 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* - * This is a very simple demo that creates two tasks and one queue. One task - * (the queue receive task) blocks on the queue to wait for data to arrive, - * toggling an LED each time '100' is received. The other task (the queue send - * task) repeatedly blocks for a fixed period before sending '100' to the queue - * (causing the first task to toggle the LED). - * - * For a much more complete and complex example select either the Debug or - * Debug_with_optimisation build configurations within the HEW IDE. -*/ - -/* Hardware specific includes. */ -#include "iodefine.h" - -/* Kernel includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "queue.h" - -/* Priorities at which the tasks are created. */ -#define configQUEUE_RECEIVE_TASK_PRIORITY ( tskIDLE_PRIORITY + 1 ) -#define configQUEUE_SEND_TASK_PRIORITY ( tskIDLE_PRIORITY + 2 ) - -/* The rate at which data is sent to the queue, specified in milliseconds. */ -#define mainQUEUE_SEND_FREQUENCY_MS ( 500 / portTICK_PERIOD_MS ) - -/* The number of items the queue can hold. This is 1 as the receive task -will remove items as they are added so the send task should always find the -queue empty. */ -#define mainQUEUE_LENGTH ( 1 ) - -/* - * The tasks as defined at the top of this file. - */ -static void prvQueueReceiveTask( void *pvParameters ); -static void prvQueueSendTask( void *pvParameters ); - -/* The queue used by both tasks. */ -static QueueHandle_t xQueue = NULL; - -/* This variable is not used by this simple Blinky example. It is defined -purely to allow the project to link as it is used by the full project. */ -volatile unsigned long ulHighFrequencyTickCount = 0UL; -/*-----------------------------------------------------------*/ - -void main(void) -{ -extern void HardwareSetup( void ); - - /* Renesas provided CPU configuration routine. The clocks are configured in - here. */ - HardwareSetup(); - - /* Turn all LEDs off. */ - vParTestInitialise(); - - /* Create the queue. */ - xQueue = xQueueCreate( mainQUEUE_LENGTH, sizeof( unsigned long ) ); - - if( xQueue != NULL ) - { - /* Start the two tasks as described at the top of this file. */ - xTaskCreate( prvQueueReceiveTask, "Rx", configMINIMAL_STACK_SIZE, NULL, configQUEUE_RECEIVE_TASK_PRIORITY, NULL ); - xTaskCreate( prvQueueSendTask, "TX", configMINIMAL_STACK_SIZE, NULL, configQUEUE_SEND_TASK_PRIORITY, NULL ); - - /* Start the tasks running. */ - vTaskStartScheduler(); - } - - /* If all is well we will never reach here as the scheduler will now be - running. If we do reach here then it is likely that there was insufficient - heap available for the idle task to be created. */ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -static void prvQueueSendTask( void *pvParameters ) -{ -TickType_t xNextWakeTime; -const unsigned long ulValueToSend = 100UL; - - /* Initialise xNextWakeTime - this only needs to be done once. */ - xNextWakeTime = xTaskGetTickCount(); - - for( ;; ) - { - /* Place this task in the blocked state until it is time to run again. - The block state is specified in ticks, the constant used converts ticks - to ms. */ - vTaskDelayUntil( &xNextWakeTime, mainQUEUE_SEND_FREQUENCY_MS ); - - /* Send to the queue - causing the queue receive task to flash its LED. 0 - is used so the send does not block - it shouldn't need to as the queue - should always be empty here. */ - xQueueSend( xQueue, &ulValueToSend, 0 ); - } -} -/*-----------------------------------------------------------*/ - -static void prvQueueReceiveTask( void *pvParameters ) -{ -unsigned long ulReceivedValue; - - for( ;; ) - { - /* Wait until something arives in the queue - this will block - indefinitely provided INCLUDE_vTaskSuspend is set to 1 in - FreeRTOSConfig.h. */ - xQueueReceive( xQueue, &ulReceivedValue, portMAX_DELAY ); - - /* To get here something must have arrived, but is it the expected - value? If it is, toggle the LED. */ - if( ulReceivedValue == 100UL ) - { - vParTestToggleLED( 0 ); - } - } -} -/*-----------------------------------------------------------*/ - -void vApplicationSetupTimerInterrupt( void ) -{ - /* Enable compare match timer 0. */ - MSTP( CMT0 ) = 0; - - /* Interrupt on compare match. */ - CMT0.CMCR.BIT.CMIE = 1; - - /* Set the compare match value. */ - CMT0.CMCOR = ( unsigned short ) ( ( ( configPERIPHERAL_CLOCK_HZ / configTICK_RATE_HZ ) -1 ) / 8 ); - - /* Divide the PCLK by 8. */ - CMT0.CMCR.BIT.CKS = 0; - - /* Enable the interrupt... */ - _IEN( _CMT0_CMI0 ) = 1; - - /* ...and set its priority to the application defined kernel priority. */ - _IPR( _CMT0_CMI0 ) = configKERNEL_INTERRUPT_PRIORITY; - - /* Start the timer. */ - CMT.CMSTR0.BIT.STR0 = 1; -} -/*-----------------------------------------------------------*/ - -/* This function is explained by the comments above its prototype at the top -of this file. */ -void vApplicationMallocFailedHook( void ) -{ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -/* This function is explained by the comments above its prototype at the top -of this file. */ -void vApplicationStackOverflowHook( TaskHandle_t pxTask, char *pcTaskName ) -{ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -/* This function is explained by the comments above its prototype at the top -of this file. */ -void vApplicationIdleHook( void ) -{ - /* Just to prevent the variable getting optimised away. */ - ( void ) ulHighFrequencyTickCount; -} -/*-----------------------------------------------------------*/ diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/main-full.c b/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/main-full.c deleted file mode 100644 index 5fc055d80..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/main-full.c +++ /dev/null @@ -1,639 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* **************************************************************************** - * This project includes a lot of tasks and tests and is therefore complex. - * If you would prefer a much simpler project to get started with then select - * the 'Blinky' build configuration within the HEW IDE. - * **************************************************************************** - * - * Creates all the demo application tasks, then starts the scheduler. The web - * documentation provides more details of the standard demo application tasks, - * which provide no particular functionality but do provide a good example of - * how to use the FreeRTOS API. The tasks defined in flop.c are included in the - * set of standard demo tasks to ensure the floating point unit gets some - * exercise. - * - * In addition to the standard demo tasks, the following tasks and tests are - * defined and/or created within this file: - * - * Webserver ("uIP") task - This serves a number of dynamically generated WEB - * pages to a standard WEB browser. The IP and MAC addresses are configured by - * constants defined at the bottom of FreeRTOSConfig.h. Use either a standard - * Ethernet cable to connect through a hug, or a cross over (point to point) - * cable to connect directly. Ensure the IP address used is compatible with the - * IP address of the machine running the browser - the easiest way to achieve - * this is to ensure the first three octets of the IP addresses are the same. - * - * "Reg test" tasks - These fill the registers with known values, then check - * that each register still contains its expected value. Each task uses - * different values. The tasks run with very low priority so get preempted - * very frequently. A check variable is incremented on each iteration of the - * test loop. A register containing an unexpected value is indicative of an - * error in the context switching mechanism and will result in a branch to a - * null loop - which in turn will prevent the check variable from incrementing - * any further and allow the check task (described below) to determine that an - * error has occurred. The nature of the reg test tasks necessitates that they - * are written in assembly code. - * - * "Check" task - This only executes every five seconds but has a high priority - * to ensure it gets processor time. Its main function is to check that all the - * standard demo tasks are still operational. While no errors have been - * discovered the check task will toggle LED 5 every 5 seconds - the toggle - * rate increasing to 200ms being a visual indication that at least one task has - * reported unexpected behaviour. - * - * "High frequency timer test" - A high frequency periodic interrupt is - * generated using a timer - the interrupt is assigned a priority above - * configMAX_SYSCALL_INTERRUPT_PRIORITY so should not be effected by anything - * the kernel is doing. The frequency and priority of the interrupt, in - * combination with other standard tests executed in this demo, should result - * in interrupts nesting at least 3 and probably 4 deep. This test is only - * included in build configurations that have the optimiser switched on. In - * optimised builds the count of high frequency ticks is used as the time base - * for the run time stats. - * - * *NOTE 1* If LED5 is toggling every 5 seconds then all the demo application - * tasks are executing as expected and no errors have been reported in any - * tasks. The toggle rate increasing to 200ms indicates that at least one task - * has reported unexpected behaviour. - * - * *NOTE 2* vApplicationSetupTimerInterrupt() is called by the kernel to let - * the application set up a timer to generate the tick interrupt. In this - * example a compare match timer is used for this purpose. - * - * *NOTE 3* The CPU must be in Supervisor mode when the scheduler is started. - * The PowerON_Reset_PC() supplied in resetprg.c with this demo has - * Change_PSW_PM_to_UserMode() commented out to ensure this is the case. - * - * *NOTE 4* The IntQueue common demo tasks test interrupt nesting and make use - * of all the 8bit timers (as two cascaded 16bit units). -*/ - -/* Hardware specific includes. */ -#include "iodefine.h" - -/* Kernel includes. */ -#include "FreeRTOS.h" -#include "task.h" - -/* Standard demo includes. */ -#include "partest.h" -#include "flash.h" -#include "IntQueue.h" -#include "BlockQ.h" -#include "death.h" -#include "integer.h" -#include "blocktim.h" -#include "semtest.h" -#include "PollQ.h" -#include "GenQTest.h" -#include "QPeek.h" -#include "recmutex.h" -#include "flop.h" - -/* Values that are passed into the reg test tasks using the task parameter. The -tasks check that the values are passed in correctly. */ -#define mainREG_TEST_1_PARAMETER ( 0x12121212UL ) -#define mainREG_TEST_2_PARAMETER ( 0x12345678UL ) - -/* Priorities at which the tasks are created. */ -#define mainCHECK_TASK_PRIORITY ( configMAX_PRIORITIES - 1 ) -#define mainQUEUE_POLL_PRIORITY ( tskIDLE_PRIORITY + 1 ) -#define mainSEM_TEST_PRIORITY ( tskIDLE_PRIORITY + 1 ) -#define mainBLOCK_Q_PRIORITY ( tskIDLE_PRIORITY + 2 ) -#define mainCREATOR_TASK_PRIORITY ( tskIDLE_PRIORITY + 3 ) -#define mainFLASH_TASK_PRIORITY ( tskIDLE_PRIORITY + 1 ) -#define mainuIP_TASK_PRIORITY ( tskIDLE_PRIORITY + 2 ) -#define mainINTEGER_TASK_PRIORITY ( tskIDLE_PRIORITY ) -#define mainGEN_QUEUE_TASK_PRIORITY ( tskIDLE_PRIORITY ) -#define mainFLOP_TASK_PRIORITY ( tskIDLE_PRIORITY ) - -/* The WEB server uses string handling functions, which in turn use a bit more -stack than most of the other tasks. */ -#define mainuIP_STACK_SIZE ( configMINIMAL_STACK_SIZE * 3 ) - -/* The LED toggled by the check task. */ -#define mainCHECK_LED ( 5 ) - -/* The rate at which mainCHECK_LED will toggle when all the tasks are running -without error. Controlled by the check task as described at the top of this -file. */ -#define mainNO_ERROR_CYCLE_TIME ( 5000 / portTICK_PERIOD_MS ) - -/* The rate at which mainCHECK_LED will toggle when an error has been reported -by at least one task. Controlled by the check task as described at the top of -this file. */ -#define mainERROR_CYCLE_TIME ( 200 / portTICK_PERIOD_MS ) - -/* - * vApplicationMallocFailedHook() will only be called if - * configUSE_MALLOC_FAILED_HOOK is set to 1 in FreeRTOSConfig.h. It is a hook - * function that will execute if a call to pvPortMalloc() fails. - * pvPortMalloc() is called internally by the kernel whenever a task, queue or - * semaphore is created. It is also called by various parts of the demo - * application. - */ -void vApplicationMallocFailedHook( void ); - -/* - * vApplicationIdleHook() will only be called if configUSE_IDLE_HOOK is set to 1 - * in FreeRTOSConfig.h. It is a hook function that is called on each iteration - * of the idle task. It is essential that code added to this hook function - * never attempts to block in any way (for example, call xQueueReceive() with - * a block time specified). If the application makes use of the vTaskDelete() - * API function (as this demo application does) then it is also important that - * vApplicationIdleHook() is permitted to return to its calling function because - * it is the responsibility of the idle task to clean up memory allocated by the - * kernel to any task that has since been deleted. - */ -void vApplicationIdleHook( void ); - -/* - * vApplicationStackOverflowHook() will only be called if - * configCHECK_FOR_STACK_OVERFLOW is set to a non-zero value. The handle and - * name of the offending task should be passed in the function parameters, but - * it is possible that the stack overflow will have corrupted these - in which - * case pxCurrentTCB can be inspected to find the same information. - */ -void vApplicationStackOverflowHook( TaskHandle_t pxTask, char *pcTaskName ); - -/* - * The reg test tasks as described at the top of this file. - */ -static void prvRegTest1Task( void *pvParameters ); -static void prvRegTest2Task( void *pvParameters ); - -/* - * The actual implementation of the reg test functionality, which, because of - * the direct register access, have to be in assembly. - */ -static void prvRegTest1Implementation( void ); -static void prvRegTest2Implementation( void ); - -/* - * The check task as described at the top of this file. - */ -static void prvCheckTask( void *pvParameters ); - -/* - * Contains the implementation of the WEB server. - */ -extern void vuIP_Task( void *pvParameters ); - -/*-----------------------------------------------------------*/ - -/* Variables that are incremented on each iteration of the reg test tasks - -provided the tasks have not reported any errors. The check task inspects these -variables to ensure they are still incrementing as expected. If a variable -stops incrementing then it is likely that its associate task has stalled. */ -unsigned long ulRegTest1CycleCount = 0UL, ulRegTest2CycleCount = 0UL; - -/* The status message that is displayed at the bottom of the "task stats" web -page, which is served by the uIP task. This will report any errors picked up -by the reg test task. */ -const char *pcStatusMessage = "All tasks executing without error."; - -/*-----------------------------------------------------------*/ - -void main(void) -{ -extern void HardwareSetup( void ); - - /* Renesas provided CPU configuration routine. The clocks are configured in - here. */ - HardwareSetup(); - - /* Turn all LEDs off. */ - vParTestInitialise(); - - /* Start the reg test tasks which test the context switching mechanism. */ - xTaskCreate( prvRegTest1Task, "RegTst1", configMINIMAL_STACK_SIZE, ( void * ) mainREG_TEST_1_PARAMETER, tskIDLE_PRIORITY, NULL ); - xTaskCreate( prvRegTest2Task, "RegTst2", configMINIMAL_STACK_SIZE, ( void * ) mainREG_TEST_2_PARAMETER, tskIDLE_PRIORITY, NULL ); - - /* The web server task. */ - xTaskCreate( vuIP_Task, "uIP", mainuIP_STACK_SIZE, NULL, mainuIP_TASK_PRIORITY, NULL ); - - /* Start the check task as described at the top of this file. */ - xTaskCreate( prvCheckTask, "Check", configMINIMAL_STACK_SIZE * 3, NULL, mainCHECK_TASK_PRIORITY, NULL ); - - /* Create the standard demo tasks. */ - vStartBlockingQueueTasks( mainBLOCK_Q_PRIORITY ); - vCreateBlockTimeTasks(); - vStartSemaphoreTasks( mainSEM_TEST_PRIORITY ); - vStartPolledQueueTasks( mainQUEUE_POLL_PRIORITY ); - vStartIntegerMathTasks( mainINTEGER_TASK_PRIORITY ); - vStartGenericQueueTasks( mainGEN_QUEUE_TASK_PRIORITY ); - vStartLEDFlashTasks( mainFLASH_TASK_PRIORITY ); - vStartQueuePeekTasks(); - vStartRecursiveMutexTasks(); - vStartInterruptQueueTasks(); - vStartMathTasks( mainFLOP_TASK_PRIORITY ); - - /* The suicide tasks must be created last as they need to know how many - tasks were running prior to their creation in order to ascertain whether - or not the correct/expected number of tasks are running at any given time. */ - vCreateSuicidalTasks( mainCREATOR_TASK_PRIORITY ); - - /* Start the tasks running. */ - vTaskStartScheduler(); - - /* If all is well we will never reach here as the scheduler will now be - running. If we do reach here then it is likely that there was insufficient - heap available for the idle task to be created. */ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -static void prvCheckTask( void *pvParameters ) -{ -static volatile unsigned long ulLastRegTest1CycleCount = 0UL, ulLastRegTest2CycleCount = 0UL; -TickType_t xNextWakeTime, xCycleFrequency = mainNO_ERROR_CYCLE_TIME; -extern void vSetupHighFrequencyTimer( void ); - - /* If this is being executed then the kernel has been started. Start the high - frequency timer test as described at the top of this file. This is only - included in the optimised build configuration - otherwise it takes up too much - CPU time and can disrupt other tests. */ - #ifdef INCLUDE_HIGH_FREQUENCY_TIMER_TEST - vSetupHighFrequencyTimer(); - #endif - - /* Initialise xNextWakeTime - this only needs to be done once. */ - xNextWakeTime = xTaskGetTickCount(); - - for( ;; ) - { - /* Place this task in the blocked state until it is time to run again. */ - vTaskDelayUntil( &xNextWakeTime, xCycleFrequency ); - - /* Check the standard demo tasks are running without error. */ - if( xAreGenericQueueTasksStillRunning() != pdTRUE ) - { - /* Increase the rate at which this task cycles, which will increase the - rate at which mainCHECK_LED flashes to give visual feedback that an error - has occurred. */ - xCycleFrequency = mainERROR_CYCLE_TIME; - pcStatusMessage = "Error: GenQueue"; - } - else if( xAreQueuePeekTasksStillRunning() != pdTRUE ) - { - xCycleFrequency = mainERROR_CYCLE_TIME; - pcStatusMessage = "Error: QueuePeek"; - } - else if( xAreBlockingQueuesStillRunning() != pdTRUE ) - { - xCycleFrequency = mainERROR_CYCLE_TIME; - pcStatusMessage = "Error: BlockQueue"; - } - else if( xAreBlockTimeTestTasksStillRunning() != pdTRUE ) - { - xCycleFrequency = mainERROR_CYCLE_TIME; - pcStatusMessage = "Error: BlockTime"; - } - else if( xAreSemaphoreTasksStillRunning() != pdTRUE ) - { - xCycleFrequency = mainERROR_CYCLE_TIME; - pcStatusMessage = "Error: SemTest"; - } - else if( xArePollingQueuesStillRunning() != pdTRUE ) - { - xCycleFrequency = mainERROR_CYCLE_TIME; - pcStatusMessage = "Error: PollQueue"; - } - else if( xIsCreateTaskStillRunning() != pdTRUE ) - { - xCycleFrequency = mainERROR_CYCLE_TIME; - pcStatusMessage = "Error: Death"; - } - else if( xAreIntegerMathsTaskStillRunning() != pdTRUE ) - { - xCycleFrequency = mainERROR_CYCLE_TIME; - pcStatusMessage = "Error: IntMath"; - } - else if( xAreRecursiveMutexTasksStillRunning() != pdTRUE ) - { - xCycleFrequency = mainERROR_CYCLE_TIME; - pcStatusMessage = "Error: RecMutex"; - } - else if( xAreIntQueueTasksStillRunning() != pdPASS ) - { - xCycleFrequency = mainERROR_CYCLE_TIME; - pcStatusMessage = "Error: IntQueue"; - } - else if( xAreMathsTaskStillRunning() != pdPASS ) - { - xCycleFrequency = mainERROR_CYCLE_TIME; - pcStatusMessage = "Error: Flop"; - } - - /* Check the reg test tasks are still cycling. They will stop incrementing - their loop counters if they encounter an error. */ - if( ulRegTest1CycleCount == ulLastRegTest1CycleCount ) - { - xCycleFrequency = mainERROR_CYCLE_TIME; - pcStatusMessage = "Error: RegTest1"; - } - - if( ulRegTest2CycleCount == ulLastRegTest2CycleCount ) - { - xCycleFrequency = mainERROR_CYCLE_TIME; - pcStatusMessage = "Error: RegTest2"; - } - - ulLastRegTest1CycleCount = ulRegTest1CycleCount; - ulLastRegTest2CycleCount = ulRegTest2CycleCount; - - /* Toggle the check LED to give an indication of the system status. If - the LED toggles every 5 seconds then everything is ok. A faster toggle - indicates an error. */ - vParTestToggleLED( mainCHECK_LED ); - } -} -/*-----------------------------------------------------------*/ - -/* The RX port uses this callback function to configure its tick interrupt. -This allows the application to choose the tick interrupt source. */ -void vApplicationSetupTimerInterrupt( void ) -{ - /* Enable compare match timer 0. */ - MSTP( CMT0 ) = 0; - - /* Interrupt on compare match. */ - CMT0.CMCR.BIT.CMIE = 1; - - /* Set the compare match value. */ - CMT0.CMCOR = ( unsigned short ) ( ( ( configPERIPHERAL_CLOCK_HZ / configTICK_RATE_HZ ) -1 ) / 8 ); - - /* Divide the PCLK by 8. */ - CMT0.CMCR.BIT.CKS = 0; - - /* Enable the interrupt... */ - _IEN( _CMT0_CMI0 ) = 1; - - /* ...and set its priority to the application defined kernel priority. */ - _IPR( _CMT0_CMI0 ) = configKERNEL_INTERRUPT_PRIORITY; - - /* Start the timer. */ - CMT.CMSTR0.BIT.STR0 = 1; -} -/*-----------------------------------------------------------*/ - -/* This function is explained by the comments above its prototype at the top -of this file. */ -void vApplicationMallocFailedHook( void ) -{ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -/* This function is explained by the comments above its prototype at the top -of this file. */ -void vApplicationStackOverflowHook( TaskHandle_t pxTask, char *pcTaskName ) -{ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -/* This function is explained by the comments above its prototype at the top -of this file. */ -void vApplicationIdleHook( void ) -{ -} -/*-----------------------------------------------------------*/ - -/* This function is explained in the comments at the top of this file. */ -static void prvRegTest1Task( void *pvParameters ) -{ - if( ( ( unsigned long ) pvParameters ) != mainREG_TEST_1_PARAMETER ) - { - /* The parameter did not contain the expected value. */ - for( ;; ) - { - /* Stop the tick interrupt so its obvious something has gone wrong. */ - taskDISABLE_INTERRUPTS(); - } - } - - /* This is an inline asm function that never returns. */ - prvRegTest1Implementation(); -} -/*-----------------------------------------------------------*/ - -/* This function is explained in the comments at the top of this file. */ -static void prvRegTest2Task( void *pvParameters ) -{ - if( ( ( unsigned long ) pvParameters ) != mainREG_TEST_2_PARAMETER ) - { - /* The parameter did not contain the expected value. */ - for( ;; ) - { - /* Stop the tick interrupt so its obvious something has gone wrong. */ - taskDISABLE_INTERRUPTS(); - } - } - - /* This is an inline asm function that never returns. */ - prvRegTest2Implementation(); -} -/*-----------------------------------------------------------*/ - -/* This function is explained in the comments at the top of this file. */ -#pragma inline_asm prvRegTest1Implementation -static void prvRegTest1Implementation( void ) -{ - ; Put a known value in each register. - MOV.L #1, R1 - MOV.L #2, R2 - MOV.L #3, R3 - MOV.L #4, R4 - MOV.L #5, R5 - MOV.L #6, R6 - MOV.L #7, R7 - MOV.L #8, R8 - MOV.L #9, R9 - MOV.L #10, R10 - MOV.L #11, R11 - MOV.L #12, R12 - MOV.L #13, R13 - MOV.L #14, R14 - MOV.L #15, R15 - - ; Loop, checking each iteration that each register still contains the - ; expected value. -TestLoop1: - - ; Push the registers that are going to get clobbered. - PUSHM R14-R15 - - ; Increment the loop counter to show this task is still getting CPU time. - MOV.L #_ulRegTest1CycleCount, R14 - MOV.L [ R14 ], R15 - ADD #1, R15 - MOV.L R15, [ R14 ] - - ; Yield to extend the text coverage. Set the bit in the ITU SWINTR register. - MOV.L #1, R14 - MOV.L #0872E0H, R15 - MOV.B R14, [R15] - NOP - NOP - - ; Restore the clobbered registers. - POPM R14-R15 - - ; Now compare each register to ensure it still contains the value that was - ; set before this loop was entered. - CMP #1, R1 - BNE RegTest1Error - CMP #2, R2 - BNE RegTest1Error - CMP #3, R3 - BNE RegTest1Error - CMP #4, R4 - BNE RegTest1Error - CMP #5, R5 - BNE RegTest1Error - CMP #6, R6 - BNE RegTest1Error - CMP #7, R7 - BNE RegTest1Error - CMP #8, R8 - BNE RegTest1Error - CMP #9, R9 - BNE RegTest1Error - CMP #10, R10 - BNE RegTest1Error - CMP #11, R11 - BNE RegTest1Error - CMP #12, R12 - BNE RegTest1Error - CMP #13, R13 - BNE RegTest1Error - CMP #14, R14 - BNE RegTest1Error - CMP #15, R15 - BNE RegTest1Error - - ; All comparisons passed, start a new itteratio of this loop. - BRA TestLoop1 - -RegTest1Error: - ; A compare failed, just loop here so the loop counter stops incrementing - ; causing the check task to indicate the error. - BRA RegTest1Error -} -/*-----------------------------------------------------------*/ - -/* This function is explained in the comments at the top of this file. */ -#pragma inline_asm prvRegTest2Implementation -static void prvRegTest2Implementation( void ) -{ - ; Put a known value in each register. - MOV.L #10, R1 - MOV.L #20, R2 - MOV.L #30, R3 - MOV.L #40, R4 - MOV.L #50, R5 - MOV.L #60, R6 - MOV.L #70, R7 - MOV.L #80, R8 - MOV.L #90, R9 - MOV.L #100, R10 - MOV.L #110, R11 - MOV.L #120, R12 - MOV.L #130, R13 - MOV.L #140, R14 - MOV.L #150, R15 - - ; Loop, checking on each iteration that each register still contains the - ; expected value. -TestLoop2: - - ; Push the registers that are going to get clobbered. - PUSHM R14-R15 - - ; Increment the loop counter to show this task is still getting CPU time. - MOV.L #_ulRegTest2CycleCount, R14 - MOV.L [ R14 ], R15 - ADD #1, R15 - MOV.L R15, [ R14 ] - - ; Restore the clobbered registers. - POPM R14-R15 - - CMP #10, R1 - BNE RegTest2Error - CMP #20, R2 - BNE RegTest2Error - CMP #30, R3 - BNE RegTest2Error - CMP #40, R4 - BNE RegTest2Error - CMP #50, R5 - BNE RegTest2Error - CMP #60, R6 - BNE RegTest2Error - CMP #70, R7 - BNE RegTest2Error - CMP #80, R8 - BNE RegTest2Error - CMP #90, R9 - BNE RegTest2Error - CMP #100, R10 - BNE RegTest2Error - CMP #110, R11 - BNE RegTest2Error - CMP #120, R12 - BNE RegTest2Error - CMP #130, R13 - BNE RegTest2Error - CMP #140, R14 - BNE RegTest2Error - CMP #150, R15 - BNE RegTest2Error - - ; All comparisons passed, start a new itteratio of this loop. - BRA TestLoop2 - -RegTest2Error: - ; A compare failed, just loop here so the loop counter stops incrementing - ; - causing the check task to indicate the error. - BRA RegTest2Error -} -/*-----------------------------------------------------------*/ - -char *pcGetTaskStatusMessage( void ) -{ - /* Not bothered about a critical section here although technically because of - the task priorities the pointer could change it will be atomic if not near - atomic and its not critical. */ - return ( char * ) pcStatusMessage; -} -/*-----------------------------------------------------------*/ - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/uIP_Task.c b/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/uIP_Task.c deleted file mode 100644 index 974381ef7..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/uIP_Task.c +++ /dev/null @@ -1,319 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* Standard includes. */ -#include - -/* Scheduler includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "timers.h" -#include "queue.h" - -/* uip includes. */ -#include "net/uip.h" -#include "net/uip_arp.h" -#include "apps/httpd/httpd.h" -#include "sys/timer.h" -#include "net/clock-arch.h" -#include "r_ether.h" - -/* Demo includes. */ -#include "ParTest.h" - -/*-----------------------------------------------------------*/ - -/* How long to wait before attempting to connect the MAC again. */ -#define uipINIT_WAIT ( 100 / portTICK_PERIOD_MS ) - -/* Shortcut to the header within the Rx buffer. */ -#define xHeader ((struct uip_eth_hdr *) &uip_buf[ 0 ]) - -/* Standard constant. */ -#define uipTOTAL_FRAME_HEADER_SIZE 54 - -/* The ARP timer and the periodic timer share a callback function, so the -respective timer IDs are used to determine which timer actually expired. These -constants are assigned to the timer IDs. */ -#define uipARP_TIMER 0 -#define uipPERIODIC_TIMER 1 - -/* A block time of zero ticks simply means, "don't block". */ -#define uipDONT_BLOCK 0UL - -/*-----------------------------------------------------------*/ - -/* - * Setup the MAC address in the MAC itself, and in the uIP stack. - */ -static void prvSetMACAddress( void ); - -/* - * Perform any uIP initialisation necessary. - */ -static void prvInitialise_uIP( void ); - -/* - * The callback function that is assigned to both the periodic timer and the - * ARP timer. - */ -static void prvUIPTimerCallback( TimerHandle_t xTimer ); - -/* - * Port functions required by the uIP stack. - */ -clock_time_t clock_time( void ); - -/*-----------------------------------------------------------*/ - -/* The queue used to send TCP/IP events to the uIP stack. */ -QueueHandle_t xEMACEventQueue = NULL; - -/*-----------------------------------------------------------*/ - -clock_time_t clock_time( void ) -{ - return xTaskGetTickCount(); -} -/*-----------------------------------------------------------*/ - -void vuIP_Task( void *pvParameters ) -{ -portBASE_TYPE i; -unsigned long ulNewEvent = 0UL; -unsigned long ulUIP_Events = 0UL; - - ( void ) pvParameters; - - /* Initialise the uIP stack. */ - prvInitialise_uIP(); - - /* Initialise the MAC. */ - vInitEmac(); - - while( lEMACWaitForLink() != pdPASS ) - { - vTaskDelay( uipINIT_WAIT ); - } - - for( ;; ) - { - if( ( ulUIP_Events & uipETHERNET_RX_EVENT ) != 0UL ) - { - /* Is there received data ready to be processed? */ - uip_len = ( unsigned short ) ulEMACRead(); - - if( ( uip_len > 0 ) && ( uip_buf != NULL ) ) - { - /* Standard uIP loop taken from the uIP manual. */ - if( xHeader->type == htons( UIP_ETHTYPE_IP ) ) - { - uip_arp_ipin(); - uip_input(); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - uip_arp_out(); - vEMACWrite(); - } - } - else if( xHeader->type == htons( UIP_ETHTYPE_ARP ) ) - { - uip_arp_arpin(); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - vEMACWrite(); - } - } - } - else - { - ulUIP_Events &= ~uipETHERNET_RX_EVENT; - } - } - - if( ( ulUIP_Events & uipPERIODIC_TIMER_EVENT ) != 0UL ) - { - ulUIP_Events &= ~uipPERIODIC_TIMER_EVENT; - - for( i = 0; i < UIP_CONNS; i++ ) - { - uip_periodic( i ); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - uip_arp_out(); - vEMACWrite(); - } - } - } - - /* Call the ARP timer function every 10 seconds. */ - if( ( ulUIP_Events & uipARP_TIMER_EVENT ) != 0 ) - { - ulUIP_Events &= ~uipARP_TIMER_EVENT; - uip_arp_timer(); - } - - if( ulUIP_Events == pdFALSE ) - { - xQueueReceive( xEMACEventQueue, &ulNewEvent, portMAX_DELAY ); - ulUIP_Events |= ulNewEvent; - } - } -} -/*-----------------------------------------------------------*/ - -static void prvInitialise_uIP( void ) -{ -TimerHandle_t xARPTimer, xPeriodicTimer; -uip_ipaddr_t xIPAddr; -const unsigned long ul_uIPEventQueueLength = 10UL; - - /* Initialise the uIP stack. */ - uip_init(); - uip_ipaddr( &xIPAddr, configIP_ADDR0, configIP_ADDR1, configIP_ADDR2, configIP_ADDR3 ); - uip_sethostaddr( &xIPAddr ); - uip_ipaddr( &xIPAddr, configNET_MASK0, configNET_MASK1, configNET_MASK2, configNET_MASK3 ); - uip_setnetmask( &xIPAddr ); - prvSetMACAddress(); - httpd_init(); - - /* Create the queue used to sent TCP/IP events to the uIP stack. */ - xEMACEventQueue = xQueueCreate( ul_uIPEventQueueLength, sizeof( unsigned long ) ); - - /* Create and start the uIP timers. */ - xARPTimer = xTimerCreate( "ARPTimer", /* Just a name that is helpful for debugging, not used by the kernel. */ - ( 10000UL / portTICK_PERIOD_MS ), /* Timer period. */ - pdTRUE, /* Autor-reload. */ - ( void * ) uipARP_TIMER, - prvUIPTimerCallback - ); - - xPeriodicTimer = xTimerCreate( "PeriodicTimer", - ( 50 / portTICK_PERIOD_MS ), - pdTRUE, /* Autor-reload. */ - ( void * ) uipPERIODIC_TIMER, - prvUIPTimerCallback - ); - - configASSERT( xARPTimer ); - configASSERT( xPeriodicTimer ); - - xTimerStart( xARPTimer, portMAX_DELAY ); - xTimerStart( xPeriodicTimer, portMAX_DELAY ); -} -/*-----------------------------------------------------------*/ - -static void prvUIPTimerCallback( TimerHandle_t xTimer ) -{ -static const unsigned long ulARPTimerExpired = uipARP_TIMER_EVENT; -static const unsigned long ulPeriodicTimerExpired = uipPERIODIC_TIMER_EVENT; - - /* This is a time callback, so calls to xQueueSend() must not attempt to - block. */ - switch( ( int ) pvTimerGetTimerID( xTimer ) ) - { - case uipARP_TIMER : xQueueSend( xEMACEventQueue, &ulARPTimerExpired, uipDONT_BLOCK ); - break; - - case uipPERIODIC_TIMER : xQueueSend( xEMACEventQueue, &ulPeriodicTimerExpired, uipDONT_BLOCK ); - break; - - default : /* Should not get here. */ - break; - } -} -/*-----------------------------------------------------------*/ - -static void prvSetMACAddress( void ) -{ -struct uip_eth_addr xAddr; - - /* Configure the MAC address in the uIP stack. */ - xAddr.addr[ 0 ] = configMAC_ADDR0; - xAddr.addr[ 1 ] = configMAC_ADDR1; - xAddr.addr[ 2 ] = configMAC_ADDR2; - xAddr.addr[ 3 ] = configMAC_ADDR3; - xAddr.addr[ 4 ] = configMAC_ADDR4; - xAddr.addr[ 5 ] = configMAC_ADDR5; - uip_setethaddr( xAddr ); -} -/*-----------------------------------------------------------*/ - -void vApplicationProcessFormInput( char *pcInputString ) -{ -char *c; - - /* Only interested in processing form input if this is the IO page. */ - c = strstr( pcInputString, "io.shtml" ); - - if( c ) - { - /* Is there a command in the string? */ - c = strstr( pcInputString, "?" ); - if( c ) - { - /* Turn the LED's on or off in accordance with the check box status. */ - if( strstr( c, "LED0=1" ) != NULL ) - { - /* Turn the LEDs on. */ - vParTestSetLED( 7, 1 ); - vParTestSetLED( 8, 1 ); - vParTestSetLED( 9, 1 ); - vParTestSetLED( 10, 1 ); - } - else - { - /* Turn the LEDs off. */ - vParTestSetLED( 7, 0 ); - vParTestSetLED( 8, 0 ); - vParTestSetLED( 9, 0 ); - vParTestSetLED( 10, 0 ); - } - } - else - { - /* Commands to turn LEDs off are not always explicit. */ - vParTestSetLED( 7, 0 ); - vParTestSetLED( 8, 0 ); - vParTestSetLED( 9, 0 ); - vParTestSetLED( 10, 0 ); - } - } -} - diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/webserver/EMAC.c b/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/webserver/EMAC.c deleted file mode 100644 index e4e483f36..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/webserver/EMAC.c +++ /dev/null @@ -1,536 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* Hardware specific includes. */ -#include "iodefine.h" -#include "typedefine.h" -#include "r_ether.h" -#include "phy.h" - -/* FreeRTOS includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "semphr.h" - -/* uIP includes. */ -#include "net/uip.h" - -/* The time to wait between attempts to obtain a free buffer. */ -#define emacBUFFER_WAIT_DELAY_ms ( 3 / portTICK_PERIOD_MS ) - -/* The number of times emacBUFFER_WAIT_DELAY_ms should be waited before giving -up on attempting to obtain a free buffer all together. */ -#define emacBUFFER_WAIT_ATTEMPTS ( 30 ) - -/* The number of Rx descriptors. */ -#define emacNUM_RX_DESCRIPTORS 8 - -/* The number of Tx descriptors. When using uIP there is not point in having -more than two. */ -#define emacNUM_TX_BUFFERS 2 - -/* The total number of EMAC buffers to allocate. */ -#define emacNUM_BUFFERS ( emacNUM_RX_DESCRIPTORS + emacNUM_TX_BUFFERS ) - -/* The time to wait for the Tx descriptor to become free. */ -#define emacTX_WAIT_DELAY_ms ( 10 / portTICK_PERIOD_MS ) - -/* The total number of times to wait emacTX_WAIT_DELAY_ms for the Tx descriptor to -become free. */ -#define emacTX_WAIT_ATTEMPTS ( 50 ) - -/* Only Rx end and Tx end interrupts are used by this driver. */ -#define emacTX_END_INTERRUPT ( 1UL << 21UL ) -#define emacRX_END_INTERRUPT ( 1UL << 18UL ) - -/*-----------------------------------------------------------*/ - -/* The buffers and descriptors themselves. */ -#pragma section _RX_DESC - volatile ethfifo xRxDescriptors[ emacNUM_RX_DESCRIPTORS ]; -#pragma section _TX_DESC - volatile ethfifo xTxDescriptors[ emacNUM_TX_BUFFERS ]; -#pragma section _ETHERNET_BUFFERS - struct - { - unsigned long ulAlignmentVariable; - char cBuffer[ emacNUM_BUFFERS ][ UIP_BUFSIZE ]; - } xEthernetBuffers; -#pragma section - - - - -/* Used to indicate which buffers are free and which are in use. If an index -contains 0 then the corresponding buffer in xEthernetBuffers is free, otherwise -the buffer is in use or about to be used. */ -static unsigned char ucBufferInUse[ emacNUM_BUFFERS ]; - -/*-----------------------------------------------------------*/ - -/* - * Initialise both the Rx and Tx descriptors. - */ -static void prvInitialiseDescriptors( void ); - -/* - * Return a pointer to a free buffer within xEthernetBuffers. - */ -static unsigned char *prvGetNextBuffer( void ); - -/* - * Return a buffer to the list of free buffers. - */ -static void prvReturnBuffer( unsigned char *pucBuffer ); - -/* - * Examine the status of the next Rx FIFO to see if it contains new data. - */ -static unsigned long prvCheckRxFifoStatus( void ); - -/* - * Setup the microcontroller for communication with the PHY. - */ -static void prvResetMAC( void ); - -/* - * Configure the Ethernet interface peripherals. - */ -static void prvConfigureEtherCAndEDMAC( void ); - -/* - * Something has gone wrong with the descriptor usage. Reset all the buffers - * and descriptors. - */ -static void prvResetEverything( void ); - -/*-----------------------------------------------------------*/ - -/* Points to the Rx descriptor currently in use. */ -static ethfifo *pxCurrentRxDesc = NULL; - -/* The buffer used by the uIP stack to both receive and send. This points to -one of the Ethernet buffers when its actually in use. */ -unsigned char *uip_buf = NULL; - -/*-----------------------------------------------------------*/ - -void vInitEmac( void ) -{ - /* Software reset. */ - prvResetMAC(); - - /* Set the Rx and Tx descriptors into their initial state. */ - prvInitialiseDescriptors(); - - /* Set the MAC address into the ETHERC */ - ETHERC.MAHR = ( ( unsigned long ) configMAC_ADDR0 << 24UL ) | - ( ( unsigned long ) configMAC_ADDR1 << 16UL ) | - ( ( unsigned long ) configMAC_ADDR2 << 8UL ) | - ( unsigned long ) configMAC_ADDR3; - - ETHERC.MALR.BIT.MA = ( ( unsigned long ) configMAC_ADDR4 << 8UL ) | - ( unsigned long ) configMAC_ADDR5; - - /* Perform rest of interface hardware configuration. */ - prvConfigureEtherCAndEDMAC(); - - /* Nothing received yet, so uip_buf points nowhere. */ - uip_buf = NULL; - - /* Initialize the PHY */ - phy_init(); -} -/*-----------------------------------------------------------*/ - -void vEMACWrite( void ) -{ -long x; - - /* Wait until the second transmission of the last packet has completed. */ - for( x = 0; x < emacTX_WAIT_ATTEMPTS; x++ ) - { - if( ( xTxDescriptors[ 1 ].status & ACT ) != 0 ) - { - /* Descriptor is still active. */ - vTaskDelay( emacTX_WAIT_DELAY_ms ); - } - else - { - break; - } - } - - /* Is the descriptor free after waiting for it? */ - if( ( xTxDescriptors[ 1 ].status & ACT ) != 0 ) - { - /* Something has gone wrong. */ - prvResetEverything(); - } - - /* Setup both descriptors to transmit the frame. */ - xTxDescriptors[ 0 ].buf_p = ( char * ) uip_buf; - xTxDescriptors[ 0 ].bufsize = uip_len; - xTxDescriptors[ 1 ].buf_p = ( char * ) uip_buf; - xTxDescriptors[ 1 ].bufsize = uip_len; - - /* uip_buf is being sent by the Tx descriptor. Allocate a new buffer - for use by the stack. */ - uip_buf = prvGetNextBuffer(); - - /* Clear previous settings and go. */ - xTxDescriptors[0].status &= ~( FP1 | FP0 ); - xTxDescriptors[0].status |= ( FP1 | FP0 | ACT ); - xTxDescriptors[1].status &= ~( FP1 | FP0 ); - xTxDescriptors[1].status |= ( FP1 | FP0 | ACT ); - - EDMAC.EDTRR.LONG = 0x00000001; -} -/*-----------------------------------------------------------*/ - -unsigned long ulEMACRead( void ) -{ -unsigned long ulBytesReceived; - - ulBytesReceived = prvCheckRxFifoStatus(); - - if( ulBytesReceived > 0 ) - { - /* Mark the pxDescriptor buffer as free as uip_buf is going to be set to - the buffer that contains the received data. */ - prvReturnBuffer( uip_buf ); - - /* Point uip_buf to the data about ot be processed. */ - uip_buf = ( void * ) pxCurrentRxDesc->buf_p; - - /* Allocate a new buffer to the descriptor, as uip_buf is now using it's - old descriptor. */ - pxCurrentRxDesc->buf_p = prvGetNextBuffer(); - - /* Prepare the descriptor to go again. */ - pxCurrentRxDesc->status &= ~( FP1 | FP0 ); - pxCurrentRxDesc->status |= ACT; - - /* Move onto the next buffer in the ring. */ - pxCurrentRxDesc = pxCurrentRxDesc->next; - - if( EDMAC.EDRRR.LONG == 0x00000000L ) - { - /* Restart Ethernet if it has stopped */ - EDMAC.EDRRR.LONG = 0x00000001L; - } - } - - return ulBytesReceived; -} -/*-----------------------------------------------------------*/ - -long lEMACWaitForLink( void ) -{ -long lReturn; - - /* Set the link status. */ - switch( phy_set_autonegotiate() ) - { - /* Half duplex link */ - case PHY_LINK_100H: - ETHERC.ECMR.BIT.DM = 0; - ETHERC.ECMR.BIT.RTM = 1; - lReturn = pdPASS; - break; - - case PHY_LINK_10H: - ETHERC.ECMR.BIT.DM = 0; - ETHERC.ECMR.BIT.RTM = 0; - lReturn = pdPASS; - break; - - - /* Full duplex link */ - case PHY_LINK_100F: - ETHERC.ECMR.BIT.DM = 1; - ETHERC.ECMR.BIT.RTM = 1; - lReturn = pdPASS; - break; - - case PHY_LINK_10F: - ETHERC.ECMR.BIT.DM = 1; - ETHERC.ECMR.BIT.RTM = 0; - lReturn = pdPASS; - break; - - default: - lReturn = pdFAIL; - break; - } - - if( lReturn == pdPASS ) - { - /* Enable receive and transmit. */ - ETHERC.ECMR.BIT.RE = 1; - ETHERC.ECMR.BIT.TE = 1; - - /* Enable EDMAC receive */ - EDMAC.EDRRR.LONG = 0x1; - } - - return lReturn; -} -/*-----------------------------------------------------------*/ - -static void prvInitialiseDescriptors( void ) -{ -ethfifo *pxDescriptor; -long x; - - for( x = 0; x < emacNUM_BUFFERS; x++ ) - { - /* Ensure none of the buffers are shown as in use at the start. */ - ucBufferInUse[ x ] = pdFALSE; - } - - /* Initialise the Rx descriptors. */ - for( x = 0; x < emacNUM_RX_DESCRIPTORS; x++ ) - { - pxDescriptor = &( xRxDescriptors[ x ] ); - pxDescriptor->buf_p = &( xEthernetBuffers.cBuffer[ x ][ 0 ] ); - - pxDescriptor->bufsize = UIP_BUFSIZE; - pxDescriptor->size = 0; - pxDescriptor->status = ACT; - pxDescriptor->next = &xRxDescriptors[ x + 1 ]; - - /* Mark this buffer as in use. */ - ucBufferInUse[ x ] = pdTRUE; - } - - /* The last descriptor points back to the start. */ - pxDescriptor->status |= DL; - pxDescriptor->next = &xRxDescriptors[ 0 ]; - - /* Initialise the Tx descriptors. */ - for( x = 0; x < emacNUM_TX_BUFFERS; x++ ) - { - pxDescriptor = &( xTxDescriptors[ x ] ); - - /* A buffer is not allocated to the Tx descriptor until a send is - actually required. */ - pxDescriptor->buf_p = NULL; - - pxDescriptor->bufsize = UIP_BUFSIZE; - pxDescriptor->size = 0; - pxDescriptor->status = 0; - pxDescriptor->next = &xTxDescriptors[ x + 1 ]; - } - - /* The last descriptor points back to the start. */ - pxDescriptor->status |= DL; - pxDescriptor->next = &( xTxDescriptors[ 0 ] ); - - /* Use the first Rx descriptor to start with. */ - pxCurrentRxDesc = &( xRxDescriptors[ 0 ] ); -} -/*-----------------------------------------------------------*/ - -static unsigned char *prvGetNextBuffer( void ) -{ -long x; -unsigned char *pucReturn = NULL; -unsigned long ulAttempts = 0; - - while( pucReturn == NULL ) - { - /* Look through the buffers to find one that is not in use by - anything else. */ - for( x = 0; x < emacNUM_BUFFERS; x++ ) - { - if( ucBufferInUse[ x ] == pdFALSE ) - { - ucBufferInUse[ x ] = pdTRUE; - pucReturn = ( unsigned char * ) &( xEthernetBuffers.cBuffer[ x ][ 0 ] ); - break; - } - } - - /* Was a buffer found? */ - if( pucReturn == NULL ) - { - ulAttempts++; - - if( ulAttempts >= emacBUFFER_WAIT_ATTEMPTS ) - { - break; - } - - /* Wait then look again. */ - vTaskDelay( emacBUFFER_WAIT_DELAY_ms ); - } - } - - return pucReturn; -} -/*-----------------------------------------------------------*/ - -static void prvReturnBuffer( unsigned char *pucBuffer ) -{ -unsigned long ul; - - /* Return a buffer to the pool of free buffers. */ - for( ul = 0; ul < emacNUM_BUFFERS; ul++ ) - { - if( &( xEthernetBuffers.cBuffer[ ul ][ 0 ] ) == ( void * ) pucBuffer ) - { - ucBufferInUse[ ul ] = pdFALSE; - break; - } - } -} -/*-----------------------------------------------------------*/ - -static void prvResetEverything( void ) -{ - /* Temporary code just to see if this gets called. This function has not - been implemented. */ - portDISABLE_INTERRUPTS(); - for( ;; ); -} -/*-----------------------------------------------------------*/ - -static unsigned long prvCheckRxFifoStatus( void ) -{ -unsigned long ulReturn = 0; - - if( ( pxCurrentRxDesc->status & ACT ) != 0 ) - { - /* Current descriptor is still active. */ - } - else if( ( pxCurrentRxDesc->status & FE ) != 0 ) - { - /* Frame error. Clear the error. */ - pxCurrentRxDesc->status &= ~( FP1 | FP0 | FE ); - pxCurrentRxDesc->status &= ~( RMAF | RRF | RTLF | RTSF | PRE | CERF ); - pxCurrentRxDesc->status |= ACT; - pxCurrentRxDesc = pxCurrentRxDesc->next; - - if( EDMAC.EDRRR.LONG == 0x00000000UL ) - { - /* Restart Ethernet if it has stopped. */ - EDMAC.EDRRR.LONG = 0x00000001UL; - } - } - else - { - /* The descriptor contains a frame. Because of the size of the buffers - the frame should always be complete. */ - if( ( pxCurrentRxDesc->status & FP0 ) == FP0 ) - { - ulReturn = pxCurrentRxDesc->size; - } - else - { - /* Do not expect to get here. */ - prvResetEverything(); - } - } - - return ulReturn; -} -/*-----------------------------------------------------------*/ - -static void prvResetMAC( void ) -{ - /* Ensure the EtherC and EDMAC are enabled. */ - SYSTEM.MSTPCRB.BIT.MSTPB15 = 0; - vTaskDelay( 100 / portTICK_PERIOD_MS ); - - EDMAC.EDMR.BIT.SWR = 1; - - /* Crude wait for reset to complete. */ - vTaskDelay( 500 / portTICK_PERIOD_MS ); -} -/*-----------------------------------------------------------*/ - -static void prvConfigureEtherCAndEDMAC( void ) -{ - /* Initialisation code taken from Renesas example project. */ - - /* TODO: Check bit 5 */ - ETHERC.ECSR.LONG = 0x00000037; /* Clear all ETHERC statuS BFR, PSRTO, LCHNG, MPD, ICD */ - - /* Set the EDMAC interrupt priority. */ - _IPR( _ETHER_EINT ) = configKERNEL_INTERRUPT_PRIORITY; - - /* TODO: Check bit 5 */ - /* Enable interrupts of interest only. */ - EDMAC.EESIPR.LONG = emacTX_END_INTERRUPT | emacRX_END_INTERRUPT; - ETHERC.RFLR.LONG = 1518; /* Ether payload is 1500+ CRC */ - ETHERC.IPGR.LONG = 0x00000014; /* Intergap is 96-bit time */ - - /* EDMAC */ - EDMAC.EESR.LONG = 0x47FF0F9F; /* Clear all ETHERC and EDMAC status bits */ - #ifdef __LIT - EDMAC.EDMR.BIT.DE = 1; - #endif - EDMAC.RDLAR = ( void * ) pxCurrentRxDesc; /* Initialaize Rx Descriptor List Address */ - EDMAC.TDLAR = &( xTxDescriptors[ 0 ] ); /* Initialaize Tx Descriptor List Address */ - EDMAC.TRSCER.LONG = 0x00000000; /* Copy-back status is RFE & TFE only */ - EDMAC.TFTR.LONG = 0x00000000; /* Threshold of Tx_FIFO */ - EDMAC.FDR.LONG = 0x00000000; /* Transmit fifo & receive fifo is 256 bytes */ - EDMAC.RMCR.LONG = 0x00000003; /* Receive function is normal mode(continued) */ - ETHERC.ECMR.BIT.PRM = 0; /* Ensure promiscuous mode is off. */ - - /* Enable the interrupt... */ - _IEN( _ETHER_EINT ) = 1; -} -/*-----------------------------------------------------------*/ - -#pragma interrupt ( vEMAC_ISR_Handler( vect = VECT_ETHER_EINT, enable ) ) -void vEMAC_ISR_Handler( void ) -{ -unsigned long ul = EDMAC.EESR.LONG; -long lHigherPriorityTaskWoken = pdFALSE; -extern QueueHandle_t xEMACEventQueue; -const unsigned long ulRxEvent = uipETHERNET_RX_EVENT; - - /* Has a Tx end occurred? */ - if( ul & emacTX_END_INTERRUPT ) - { - /* Only return the buffer to the pool once both Txes have completed. */ - prvReturnBuffer( ( void * ) xTxDescriptors[ 0 ].buf_p ); - EDMAC.EESR.LONG = emacTX_END_INTERRUPT; - } - - /* Has an Rx end occurred? */ - if( ul & emacRX_END_INTERRUPT ) - { - /* Make sure the Ethernet task is not blocked waiting for a packet. */ - xQueueSendFromISR( xEMACEventQueue, &ulRxEvent, &lHigherPriorityTaskWoken ); - portYIELD_FROM_ISR( lHigherPriorityTaskWoken ); - EDMAC.EESR.LONG = emacRX_END_INTERRUPT; - } -} - diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/webserver/httpd-cgi.c b/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/webserver/httpd-cgi.c deleted file mode 100644 index 016644aa0..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/webserver/httpd-cgi.c +++ /dev/null @@ -1,277 +0,0 @@ -/** - * \addtogroup httpd - * @{ - */ - -/** - * \file - * Web server script interface - * \author - * Adam Dunkels - * - */ - -/* - * Copyright (c) 2001-2006, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: httpd-cgi.c,v 1.2 2006/06/11 21:46:37 adam Exp $ - * - */ -#include "net/uip.h" -#include "net/psock.h" -#include "apps/httpd/httpd.h" -#include "apps/httpd/httpd-cgi.h" -#include "apps/httpd/httpd-fs.h" - -#include -#include - -#include "FreeRTOS.h" -#include "task.h" - -HTTPD_CGI_CALL( file, "file-stats", file_stats ); -HTTPD_CGI_CALL( tcp, "tcp-connections", tcp_stats ); -HTTPD_CGI_CALL( net, "net-stats", net_stats ); -HTTPD_CGI_CALL( rtos, "rtos-stats", rtos_stats ); -HTTPD_CGI_CALL( run, "run-time", run_time ); -HTTPD_CGI_CALL( io, "led-io", led_io ); - -static const struct httpd_cgi_call *calls[] = { &file, &tcp, &net, &rtos, &run, &io, NULL }; - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( nullfunction ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - ( void ) PT_YIELD_FLAG; - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -httpd_cgifunction httpd_cgi( char *name ) -{ - const struct httpd_cgi_call **f; - - /* Find the matching name in the table, return the function. */ - for( f = calls; *f != NULL; ++f ) - { - if( strncmp((*f)->name, name, strlen((*f)->name)) == 0 ) - { - return( *f )->function; - } - } - - return nullfunction; -} - -/*---------------------------------------------------------------------------*/ -static unsigned short generate_file_stats( void *arg ) -{ - char *f = ( char * ) arg; - return sprintf( ( char * ) uip_appdata, "%5u", httpd_fs_count(f) ); -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( file_stats ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - - ( void ) PT_YIELD_FLAG; - - PSOCK_GENERATOR_SEND( &s->sout, generate_file_stats, strchr(ptr, ' ') + 1 ); - - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -static const char closed[] = /* "CLOSED",*/ { 0x43, 0x4c, 0x4f, 0x53, 0x45, 0x44, 0 }; -static const char syn_rcvd[] = /* "SYN-RCVD",*/ { 0x53, 0x59, 0x4e, 0x2d, 0x52, 0x43, 0x56, 0x44, 0 }; -static const char syn_sent[] = /* "SYN-SENT",*/ { 0x53, 0x59, 0x4e, 0x2d, 0x53, 0x45, 0x4e, 0x54, 0 }; -static const char established[] = /* "ESTABLISHED",*/ { 0x45, 0x53, 0x54, 0x41, 0x42, 0x4c, 0x49, 0x53, 0x48, 0x45, 0x44, 0 }; -static const char fin_wait_1[] = /* "FIN-WAIT-1",*/ { 0x46, 0x49, 0x4e, 0x2d, 0x57, 0x41, 0x49, 0x54, 0x2d, 0x31, 0 }; -static const char fin_wait_2[] = /* "FIN-WAIT-2",*/ { 0x46, 0x49, 0x4e, 0x2d, 0x57, 0x41, 0x49, 0x54, 0x2d, 0x32, 0 }; -static const char closing[] = /* "CLOSING",*/ { 0x43, 0x4c, 0x4f, 0x53, 0x49, 0x4e, 0x47, 0 }; -static const char time_wait[] = /* "TIME-WAIT,"*/ { 0x54, 0x49, 0x4d, 0x45, 0x2d, 0x57, 0x41, 0x49, 0x54, 0 }; -static const char last_ack[] = /* "LAST-ACK"*/ { 0x4c, 0x41, 0x53, 0x54, 0x2d, 0x41, 0x43, 0x4b, 0 }; - -static const char *states[] = { closed, syn_rcvd, syn_sent, established, fin_wait_1, fin_wait_2, closing, time_wait, last_ack }; - -static unsigned short generate_tcp_stats( void *arg ) -{ - struct uip_conn *conn; - struct httpd_state *s = ( struct httpd_state * ) arg; - - conn = &uip_conns[s->count]; - return sprintf( ( char * ) uip_appdata, - "\r\n", htons(conn->lport), - htons(conn->ripaddr.u16[0]) >> 8, htons(conn->ripaddr.u16[0]) & 0xff, htons(conn->ripaddr.u16[1]) >> 8, - htons(conn->ripaddr.u16[1]) & 0xff, htons(conn->rport), states[conn->tcpstateflags & UIP_TS_MASK], conn->nrtx, conn->timer, - (uip_outstanding(conn)) ? '*' : ' ', (uip_stopped(conn)) ? '!' : ' ' ); -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( tcp_stats ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - ( void ) PT_YIELD_FLAG; - for( s->count = 0; s->count < UIP_CONNS; ++s->count ) - { - if( (uip_conns[s->count].tcpstateflags & UIP_TS_MASK) != UIP_CLOSED ) - { - PSOCK_GENERATOR_SEND( &s->sout, generate_tcp_stats, s ); - } - } - - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -static unsigned short generate_net_stats( void *arg ) -{ - struct httpd_state *s = ( struct httpd_state * ) arg; - return sprintf( ( char * ) uip_appdata, "%5u\n", (( uip_stats_t * ) &uip_stat)[s->count] ); -} - -static PT_THREAD( net_stats ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - ( void ) PT_YIELD_FLAG; -#if UIP_STATISTICS - for( s->count = 0; s->count < sizeof(uip_stat) / sizeof(uip_stats_t); ++s->count ) - { - PSOCK_GENERATOR_SEND( &s->sout, generate_net_stats, s ); - } - -#endif /* UIP_STATISTICS */ - - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -extern void vTaskList( char *pcWriteBuffer ); -extern char *pcGetTaskStatusMessage( void ); -static char cCountBuf[128]; -long lRefreshCount = 0; -static unsigned short generate_rtos_stats( void *arg ) -{ - ( void ) arg; - lRefreshCount++; - sprintf( cCountBuf, "


Refresh count = %d


%s", ( int ) lRefreshCount, pcGetTaskStatusMessage() ); - vTaskList( ( char * ) uip_appdata ); - strcat( uip_appdata, cCountBuf ); - - return strlen( uip_appdata ); -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( rtos_stats ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - ( void ) PT_YIELD_FLAG; - PSOCK_GENERATOR_SEND( &s->sout, generate_rtos_stats, NULL ); - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -char *pcStatus; -unsigned long ulString; - -static unsigned short generate_io_state( void *arg ) -{ - extern long lParTestGetLEDState( unsigned long ulLED ); - ( void ) arg; - - /* Are the dynamically setable LEDs currently on or off? */ - if( lParTestGetLEDState( 3 ) ) - { - pcStatus = "checked"; - } - else - { - pcStatus = ""; - } - - sprintf( uip_appdata, "LED

", pcStatus ); - - return strlen( uip_appdata ); -} - -/*---------------------------------------------------------------------------*/ -extern void vTaskGetRunTimeStats( char *pcWriteBuffer ); -extern unsigned short usMaxJitter; -static char cJitterBuffer[ 200 ]; -static unsigned short generate_runtime_stats( void *arg ) -{ - ( void ) arg; - lRefreshCount++; - sprintf( cCountBuf, "


Refresh count = %d", ( int ) lRefreshCount ); - - #ifdef INCLUDE_HIGH_FREQUENCY_TIMER_TEST - { - sprintf( cJitterBuffer, "


Max high frequency timer jitter = %d peripheral clock periods.


", ( int ) usMaxJitter ); - vTaskGetRunTimeStats( ( char * ) uip_appdata ); - strcat( uip_appdata, cJitterBuffer ); - } - #else - { - ( void ) cJitterBuffer; - strcpy( uip_appdata, "

Run time stats are only available in the debug_with_optimisation build configuration.

" ); - } - #endif - - strcat( uip_appdata, cCountBuf ); - - return strlen( uip_appdata ); -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( run_time ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - ( void ) PT_YIELD_FLAG; - PSOCK_GENERATOR_SEND( &s->sout, generate_runtime_stats, NULL ); - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( led_io ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - ( void ) PT_YIELD_FLAG; - PSOCK_GENERATOR_SEND( &s->sout, generate_io_state, NULL ); - PSOCK_END( &s->sout ); -} - -/** @} */ diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/webserver/httpd-fs/404.html b/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/webserver/httpd-fs/404.html deleted file mode 100644 index 43e7f4cad..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/webserver/httpd-fs/404.html +++ /dev/null @@ -1,8 +0,0 @@ - - -

-

404 - file not found

-

Go here instead.

-
- - \ No newline at end of file diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/webserver/httpd-fs/index.html b/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/webserver/httpd-fs/index.html deleted file mode 100644 index 4937dc69a..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/webserver/httpd-fs/index.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Loading index.shtml. Click here if not automatically redirected. - - - - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/webserver/httpd-fs/index.shtml b/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/webserver/httpd-fs/index.shtml deleted file mode 100644 index 882d085ce..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/webserver/httpd-fs/index.shtml +++ /dev/null @@ -1,20 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS Homepage | IO | 37K jpg -

-


-

-

Task statistics

-Page will refresh every 2 seconds.

-

Task          State  Priority  Stack	#
************************************************
-%! rtos-stats -
-
- - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/webserver/httpd-fs/io.shtml b/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/webserver/httpd-fs/io.shtml deleted file mode 100644 index 819e2d39b..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/webserver/httpd-fs/io.shtml +++ /dev/null @@ -1,28 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS Homepage | IO | 37K jpg -

-


-LED and LCD IO
- -

- -Use the check box to turn on or off LED 4, then click "Update IO". - - -

-
-%! led-io -

- - -

- - - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/webserver/httpd-fs/runtime.shtml b/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/webserver/httpd-fs/runtime.shtml deleted file mode 100644 index 3464fd471..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/webserver/httpd-fs/runtime.shtml +++ /dev/null @@ -1,20 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS Homepage | IO | 37K jpg -

-


-

-

Run-time statistics

-Page will refresh every 2 seconds.

-

Task            Abs Time      % Time
****************************************
-%! run-time -
-
- - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/webserver/httpd-fs/stats.shtml b/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/webserver/httpd-fs/stats.shtml deleted file mode 100644 index f54118606..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/webserver/httpd-fs/stats.shtml +++ /dev/null @@ -1,47 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS Homepage | IO | 37K jpg -

-


-

-

Network statistics

-
LocalRemoteStateRetransmissionsTimerFlags
%d%u.%u.%u.%u:%u%s%u%u%c %c
-
-IP           Packets received
-             Packets sent
-             Forwaded
-             Dropped
-IP errors    IP version/header length
-             IP length, high byte
-             IP length, low byte
-             IP fragments
-             Header checksum
-             Wrong protocol
-ICMP	     Packets received
-             Packets sent
-             Packets dropped
-             Type errors
-             Checksum errors
-TCP          Packets received
-             Packets sent
-             Packets dropped
-             Checksum errors
-             Data packets without ACKs
-             Resets
-             Retransmissionsa
-             Syn to closed port
-UDP          Packets dropped
-             Packets received
-             Packets sent
-             Packets chkerr
-	     No connection avaliable
-
%! net-stats
-
- - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/webserver/httpd-fs/tcp.shtml b/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/webserver/httpd-fs/tcp.shtml deleted file mode 100644 index 23dcdcae3..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/webserver/httpd-fs/tcp.shtml +++ /dev/null @@ -1,21 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS Homepage | IO | 37K jpg -

-


-
-

Network connections

-

- - -%! tcp-connections - - - - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/webserver/httpd-fsdata.c b/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/webserver/httpd-fsdata.c deleted file mode 100644 index 47823d100..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/webserver/httpd-fsdata.c +++ /dev/null @@ -1,3871 +0,0 @@ -static const char data_404_html[] = { - /* /404.html */ - 0x2f, 0x34, 0x30, 0x34, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, 0xa, 0x20, 0x20, - 0x3c, 0x62, 0x6f, 0x64, 0x79, 0x20, 0x62, 0x67, 0x63, 0x6f, - 0x6c, 0x6f, 0x72, 0x3d, 0x22, 0x77, 0x68, 0x69, 0x74, 0x65, - 0x22, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x63, - 0x65, 0x6e, 0x74, 0x65, 0x72, 0x3e, 0xd, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x3c, 0x68, 0x31, 0x3e, 0x34, 0x30, - 0x34, 0x20, 0x2d, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x6e, - 0x6f, 0x74, 0x20, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x3c, 0x2f, - 0x68, 0x31, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x3c, 0x68, 0x33, 0x3e, 0x47, 0x6f, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x2f, 0x22, 0x3e, - 0x68, 0x65, 0x72, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x69, - 0x6e, 0x73, 0x74, 0x65, 0x61, 0x64, 0x2e, 0x3c, 0x2f, 0x68, - 0x33, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x2f, - 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x3e, 0xd, 0xa, 0x20, - 0x20, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xd, 0xa, - 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0}; - -static const char data_index_html[] = { - /* /index.html */ - 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x20, 0x6f, 0x6e, 0x4c, 0x6f, 0x61, 0x64, - 0x3d, 0x22, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x73, - 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x28, - 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x6c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x68, 0x72, 0x65, 0x66, 0x3d, - 0x27, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, - 0x6d, 0x6c, 0x27, 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x2c, - 0x31, 0x30, 0x30, 0x29, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x66, - 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, - 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xd, 0xa, 0x4c, - 0x6f, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x69, 0x6e, 0x64, - 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x2e, 0x20, - 0x20, 0x43, 0x6c, 0x69, 0x63, 0x6b, 0x20, 0x3c, 0x61, 0x20, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x68, - 0x65, 0x72, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x69, 0x66, - 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x61, 0x75, 0x74, 0x6f, 0x6d, - 0x61, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x6c, 0x79, 0x20, 0x72, - 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x65, 0x64, 0x2e, - 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xd, - 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xd, 0xa, - 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xd, 0xa, 0x3c, - 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, 0xa, 0xd, 0xa, -0}; - -static const char data_index_shtml[] = { - /* /index.shtml */ - 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x20, 0x6f, 0x6e, 0x4c, 0x6f, 0x61, 0x64, - 0x3d, 0x22, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x73, - 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x28, - 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x6c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x68, 0x72, 0x65, 0x66, 0x3d, - 0x27, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, - 0x6d, 0x6c, 0x27, 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x2c, - 0x32, 0x30, 0x30, 0x30, 0x29, 0x22, 0x3e, 0xd, 0xa, 0x3c, - 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, - 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xd, 0xa, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x53, 0x74, 0x61, - 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x72, 0x75, 0x6e, 0x74, 0x69, - 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x52, 0x75, 0x6e, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, - 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, - 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x54, 0x43, 0x50, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, - 0x6c, 0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, - 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, - 0x65, 0x65, 0x72, 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, - 0x2f, 0x22, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x20, 0x48, 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, - 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, - 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, - 0x66, 0x3d, 0x22, 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, - 0x6c, 0x22, 0x3e, 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0x20, - 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, - 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x6c, 0x6f, - 0x67, 0x6f, 0x2e, 0x6a, 0x70, 0x67, 0x22, 0x3e, 0x33, 0x37, - 0x4b, 0x20, 0x6a, 0x70, 0x67, 0x3c, 0x2f, 0x61, 0x3e, 0xd, - 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, - 0x3c, 0x68, 0x72, 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, - 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x32, 0x3e, 0x54, - 0x61, 0x73, 0x6b, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, - 0x74, 0x69, 0x63, 0x73, 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0xd, - 0xa, 0x50, 0x61, 0x67, 0x65, 0x20, 0x77, 0x69, 0x6c, 0x6c, - 0x20, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x20, 0x65, - 0x76, 0x65, 0x72, 0x79, 0x20, 0x32, 0x20, 0x73, 0x65, 0x63, - 0x6f, 0x6e, 0x64, 0x73, 0x2e, 0x3c, 0x70, 0x3e, 0xd, 0xa, - 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, - 0x3d, 0x22, 0x63, 0x6f, 0x75, 0x72, 0x69, 0x65, 0x72, 0x22, - 0x3e, 0x3c, 0x70, 0x72, 0x65, 0x3e, 0x54, 0x61, 0x73, 0x6b, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x53, 0x74, 0x61, 0x74, 0x65, 0x20, 0x20, 0x50, 0x72, 0x69, - 0x6f, 0x72, 0x69, 0x74, 0x79, 0x20, 0x20, 0x53, 0x74, 0x61, - 0x63, 0x6b, 0x9, 0x23, 0x3c, 0x62, 0x72, 0x3e, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x3c, 0x62, 0x72, 0x3e, - 0xd, 0xa, 0x25, 0x21, 0x20, 0x72, 0x74, 0x6f, 0x73, 0x2d, - 0x73, 0x74, 0x61, 0x74, 0x73, 0xd, 0xa, 0x3c, 0x2f, 0x70, - 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, - 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xd, - 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xd, 0xa, - 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, 0xa, 0xd, - 0xa, 0}; - -static const char data_io_shtml[] = { - /* /io.shtml */ - 0x2f, 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x6e, - 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, - 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x61, 0x20, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, - 0x61, 0x73, 0x6b, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x52, 0x75, 0x6e, - 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, 0x74, 0x61, 0x74, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x43, 0x50, - 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, - 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, - 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, 0x65, 0x65, 0x72, - 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x22, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x20, 0x48, - 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, - 0x6a, 0x70, 0x67, 0x22, 0x3e, 0x33, 0x37, 0x4b, 0x20, 0x6a, - 0x70, 0x67, 0x3c, 0x2f, 0x61, 0x3e, 0xd, 0xa, 0x3c, 0x62, - 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x72, - 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x3e, 0x4c, 0x45, 0x44, 0x20, - 0x61, 0x6e, 0x64, 0x20, 0x4c, 0x43, 0x44, 0x20, 0x49, 0x4f, - 0x3c, 0x2f, 0x62, 0x3e, 0x3c, 0x62, 0x72, 0x3e, 0xd, 0xa, - 0xd, 0xa, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0xd, 0xa, 0x55, - 0x73, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x68, 0x65, - 0x63, 0x6b, 0x20, 0x62, 0x6f, 0x78, 0x20, 0x74, 0x6f, 0x20, - 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6f, 0x6e, 0x20, 0x6f, 0x72, - 0x20, 0x6f, 0x66, 0x66, 0x20, 0x4c, 0x45, 0x44, 0x20, 0x34, - 0x2c, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x20, 0x63, 0x6c, 0x69, - 0x63, 0x6b, 0x20, 0x22, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x20, 0x49, 0x4f, 0x22, 0x2e, 0xd, 0xa, 0xd, 0xa, 0xd, - 0xa, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x72, - 0x6d, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x22, 0x61, 0x46, - 0x6f, 0x72, 0x6d, 0x22, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x3d, 0x22, 0x2f, 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, - 0x6d, 0x6c, 0x22, 0x20, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, - 0x3d, 0x22, 0x67, 0x65, 0x74, 0x22, 0x3e, 0xd, 0xa, 0x25, - 0x21, 0x20, 0x6c, 0x65, 0x64, 0x2d, 0x69, 0x6f, 0xd, 0xa, - 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x69, 0x6e, 0x70, 0x75, - 0x74, 0x20, 0x74, 0x79, 0x70, 0x65, 0x3d, 0x22, 0x73, 0x75, - 0x62, 0x6d, 0x69, 0x74, 0x22, 0x20, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x3d, 0x22, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, - 0x49, 0x4f, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, - 0x72, 0x6d, 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, - 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, - 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, - 0xd, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, - 0xa, 0xd, 0xa, 0}; - -static const char data_logo_jpg[] = { - /* /logo.jpg */ - 0x2f, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, 0x6a, 0x70, 0x67, 0, - 0xff, 0xd8, 0xff, 0xe0, 00, 0x10, 0x4a, 0x46, 0x49, 0x46, - 00, 0x1, 0x1, 00, 00, 0x1, 00, 0x1, 00, 00, - 0xff, 0xdb, 00, 0x43, 00, 0x3, 0x2, 0x2, 0x3, 0x2, - 0x2, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x3, 0x4, 0x5, - 0x8, 0x5, 0x5, 0x4, 0x4, 0x5, 0xa, 0x7, 0x7, 0x6, - 0x8, 0xc, 0xa, 0xc, 0xc, 0xb, 0xa, 0xb, 0xb, 0xd, - 0xe, 0x12, 0x10, 0xd, 0xe, 0x11, 0xe, 0xb, 0xb, 0x10, - 0x16, 0x10, 0x11, 0x13, 0x14, 0x15, 0x15, 0x15, 0xc, 0xf, - 0x17, 0x18, 0x16, 0x14, 0x18, 0x12, 0x14, 0x15, 0x14, 0xff, - 0xdb, 00, 0x43, 0x1, 0x3, 0x4, 0x4, 0x5, 0x4, 0x5, - 0x9, 0x5, 0x5, 0x9, 0x14, 0xd, 0xb, 0xd, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0xff, 0xc0, - 00, 0x11, 0x8, 0x1, 0x8, 0x2, 0xc2, 0x3, 0x1, 0x22, - 00, 0x2, 0x11, 0x1, 0x3, 0x11, 0x1, 0xff, 0xc4, 00, - 0x1f, 00, 00, 0x1, 0x5, 0x1, 0x1, 0x1, 0x1, 0x1, - 0x1, 00, 00, 00, 00, 00, 00, 00, 00, 0x1, - 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb, - 0xff, 0xc4, 00, 0xb5, 0x10, 00, 0x2, 0x1, 0x3, 0x3, - 0x2, 0x4, 0x3, 0x5, 0x5, 0x4, 0x4, 00, 00, 0x1, - 0x7d, 0x1, 0x2, 0x3, 00, 0x4, 0x11, 0x5, 0x12, 0x21, - 0x31, 0x41, 0x6, 0x13, 0x51, 0x61, 0x7, 0x22, 0x71, 0x14, - 0x32, 0x81, 0x91, 0xa1, 0x8, 0x23, 0x42, 0xb1, 0xc1, 0x15, - 0x52, 0xd1, 0xf0, 0x24, 0x33, 0x62, 0x72, 0x82, 0x9, 0xa, - 0x16, 0x17, 0x18, 0x19, 0x1a, 0x25, 0x26, 0x27, 0x28, 0x29, - 0x2a, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x43, 0x44, - 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x53, 0x54, 0x55, 0x56, - 0x57, 0x58, 0x59, 0x5a, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, - 0x69, 0x6a, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, - 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x92, 0x93, - 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0xa2, 0xa3, 0xa4, - 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xb2, 0xb3, 0xb4, 0xb5, - 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, - 0xc7, 0xc8, 0xc9, 0xca, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, - 0xd8, 0xd9, 0xda, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, - 0xe8, 0xe9, 0xea, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, - 0xf8, 0xf9, 0xfa, 0xff, 0xc4, 00, 0x1f, 0x1, 00, 0x3, - 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 00, - 00, 00, 00, 00, 00, 0x1, 0x2, 0x3, 0x4, 0x5, - 0x6, 0x7, 0x8, 0x9, 0xa, 0xb, 0xff, 0xc4, 00, 0xb5, - 0x11, 00, 0x2, 0x1, 0x2, 0x4, 0x4, 0x3, 0x4, 0x7, - 0x5, 0x4, 0x4, 00, 0x1, 0x2, 0x77, 00, 0x1, 0x2, - 0x3, 0x11, 0x4, 0x5, 0x21, 0x31, 0x6, 0x12, 0x41, 0x51, - 0x7, 0x61, 0x71, 0x13, 0x22, 0x32, 0x81, 0x8, 0x14, 0x42, - 0x91, 0xa1, 0xb1, 0xc1, 0x9, 0x23, 0x33, 0x52, 0xf0, 0x15, - 0x62, 0x72, 0xd1, 0xa, 0x16, 0x24, 0x34, 0xe1, 0x25, 0xf1, - 0x17, 0x18, 0x19, 0x1a, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x35, - 0x36, 0x37, 0x38, 0x39, 0x3a, 0x43, 0x44, 0x45, 0x46, 0x47, - 0x48, 0x49, 0x4a, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, - 0x5a, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x73, - 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x82, 0x83, 0x84, - 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x92, 0x93, 0x94, 0x95, - 0x96, 0x97, 0x98, 0x99, 0x9a, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, - 0xa7, 0xa8, 0xa9, 0xaa, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, - 0xb8, 0xb9, 0xba, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, - 0xc9, 0xca, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, - 0xda, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, - 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xff, - 0xda, 00, 0xc, 0x3, 0x1, 00, 0x2, 0x11, 0x3, 0x11, - 00, 0x3f, 00, 0xfd, 0x53, 0xa2, 0x8a, 0x28, 00, 0xa2, - 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, - 00, 0xaa, 0xf7, 0xfa, 0x85, 0xb6, 0x95, 0x67, 0x2d, 0xd5, - 0xe4, 0xf1, 0xdb, 0x5b, 0x44, 0xa5, 0x9e, 0x59, 0x58, 0x2a, - 0xa8, 0x1e, 0xf5, 0xc6, 0x7c, 0x4e, 0xf8, 0xb3, 0xa6, 0xfc, - 0x39, 0xb4, 0x48, 0xb0, 0xb7, 0xda, 0xd5, 0xc6, 0x5, 0xb6, - 0x9e, 0x8d, 0x86, 0x72, 0x4e, 0x37, 0x37, 0xf7, 0x57, 0xf9, - 0xf6, 0xaa, 0x16, 0x5f, 0xd, 0x9f, 0xc6, 0xd0, 0xc5, 0xa9, - 0xf8, 0xc6, 0xe1, 0xef, 0xa6, 0x99, 0x3, 0xa6, 0x9e, 0x84, - 0xad, 0xbd, 0xb6, 0x7b, 0x2a, 0xf7, 0x3e, 0xe7, 0x9a, 0xe0, - 0xa9, 0x89, 0xbc, 0xdd, 0x1a, 0xb, 0x9a, 0x6b, 0x7e, 0xcb, - 0xd5, 0xfe, 0x9b, 0x9c, 0xb2, 0xaf, 0x79, 0x3a, 0x74, 0xb5, - 0x92, 0xdf, 0xb2, 0xf5, 0xff, 00, 0x23, 0x93, 0xf1, 0xa7, - 0xed, 0x5f, 0xa1, 0x69, 0x1b, 0xa1, 0xd0, 0x2d, 0x64, 0xd6, - 0x2e, 0x1, 0xc7, 0x9b, 0x26, 0x62, 0x84, 0x7d, 0xf, 0x53, - 0xf9, 0x57, 0x91, 0x6b, 0x5f, 0xb5, 0xf, 0x8e, 0x35, 0x49, - 0x9, 0xb7, 0xba, 0xb7, 0xd3, 0x23, 0xec, 0x96, 0xd0, 0x29, - 0xfd, 0x5b, 0x26, 0xbe, 0x92, 0x7f, 0x81, 0x1e, 0xb, 0x7f, - 0xf9, 0x84, 0x46, 0x3e, 0x95, 0xb, 0xfe, 0xcf, 0xfe, 0xa, - 0x93, 0xae, 0x96, 0xa3, 0xe8, 0x6b, 0xc2, 0xaf, 0x84, 0xcd, - 0xab, 0xbb, 0xba, 0xa9, 0x2e, 0xc9, 0xb5, 0xfa, 0x5c, 0xf0, - 0xb1, 0x18, 0x4c, 0xce, 0xbb, 0xd2, 0xb2, 0x8a, 0xec, 0xb4, - 0xff, 00, 0x82, 0x7c, 0x91, 0x3f, 0xc6, 0xf, 0x19, 0x5c, - 0x48, 0x5d, 0xfc, 0x45, 0x7e, 0x58, 0xf5, 0xc4, 0xb8, 0x1f, - 0x90, 0xa7, 0x27, 0xc6, 0x5f, 0x1a, 0x46, 0xca, 0x57, 0xc4, - 0x57, 0xc0, 0xaf, 0x23, 0xf7, 0x99, 0xfe, 0x95, 0xf5, 0x73, - 0xfe, 0xce, 0x9e, 0x9, 0x7f, 0xf9, 0x87, 0x15, 0xfa, 0x35, - 0x43, 0x27, 0xec, 0xd7, 0xe0, 0xa7, 0xe9, 0x67, 0x2a, 0xfd, - 0x1e, 0xbc, 0xcf, 0xec, 0x7c, 0xc5, 0x3b, 0xa9, 0xff, 00, - 0xe4, 0xcc, 0xf3, 0x3f, 0xb1, 0xf3, 0x1d, 0xd5, 0x6f, 0xc5, - 0x9f, 0x31, 0x2f, 0xc7, 0x9f, 0x1e, 0x29, 0xcf, 0xfc, 0x24, - 0x77, 0x47, 0xea, 0x10, 0xff, 00, 0x4a, 0x9e, 0x2f, 0xda, - 0x17, 0xc7, 0xd1, 0xc, 0xf, 0x10, 0xcc, 0x7b, 0xfc, 0xd0, - 0xc6, 0x7f, 0x9a, 0xd7, 0xd1, 0xed, 0xfb, 0x31, 0xf8, 0x34, - 0xe7, 0x10, 0xce, 0x7, 0xfb, 0xff, 00, 0xfd, 0x6a, 0x81, - 0xff, 00, 0x65, 0xcf, 0x8, 0x37, 0x4f, 0xb4, 0x83, 0xfe, - 0xf0, 0xa7, 0xfd, 0x99, 0x9a, 0xad, 0xaa, 0x7f, 0xe4, 0xcc, - 0x3f, 0xb2, 0xf3, 0x45, 0xb5, 0x6f, 0xc5, 0x9f, 0x3d, 0xff, - 00, 0xc3, 0x46, 0x7c, 0x40, 0xff, 00, 0xa0, 0xfb, 0xff, - 00, 0xe0, 0x3c, 0x5f, 0xfc, 0x4d, 0x48, 0xbf, 0xb4, 0x8f, - 0x8f, 0xd4, 0xe7, 0xfb, 0x6f, 0x3e, 0xc6, 0xda, 0x2f, 0xfe, - 0x26, 0xbd, 0xe9, 0xff, 00, 0x65, 0x6f, 0x9, 0xb6, 0x71, - 0x25, 0xd0, 0xff, 00, 0x81, 0xa, 0x85, 0xff, 00, 0x64, - 0xff, 00, 0xb, 0x30, 0xe2, 0xe6, 0xed, 0x4f, 0xd4, 0x51, - 0xfd, 0x9d, 0x9b, 0x2f, 0xb6, 0xff, 00, 0xf0, 0x26, 0x1f, - 0xd9, 0xd9, 0xb2, 0xda, 0xb7, 0xfe, 0x4c, 0xcf, 0x11, 0x5f, - 0xda, 0x63, 0xc7, 0xca, 0x79, 0xd5, 0xa3, 0x6f, 0x63, 0x6b, - 0x1f, 0xf8, 0x54, 0xcb, 0xfb, 0x50, 0x78, 0xf1, 0x40, 0x1f, - 0x6f, 0xb6, 0x3e, 0xe6, 0xd5, 0x2b, 0xd8, 0x5b, 0xf6, 0x49, - 0xf0, 0xd1, 0xe9, 0x7f, 0x76, 0xbe, 0xdc, 0x54, 0xf, 0xfb, - 0x22, 0xe8, 0x24, 0x7c, 0xba, 0xa5, 0xd0, 0x3f, 0xee, 0x8a, - 0x5f, 0x52, 0xce, 0x17, 0xda, 0x7f, 0xf8, 0x17, 0xfc, 0x10, - 0xfa, 0x8e, 0x70, 0xbf, 0xe5, 0xef, 0xfe, 0x4c, 0x79, 0x7a, - 0xfe, 0xd5, 0x9e, 0x38, 0x4, 0x66, 0x4d, 0x3d, 0xb1, 0xd8, - 0xda, 0xf5, 0xfd, 0x6a, 0x55, 0xfd, 0xac, 0x7c, 0x6a, 0xbd, - 0x53, 0x4c, 0x6f, 0xad, 0xb3, 0x7f, 0xf1, 0x55, 0xe8, 0xcf, - 0xfb, 0x21, 0x68, 0xe7, 0xee, 0xea, 0xd7, 0x3, 0xea, 0xa2, - 0xa0, 0x7f, 0xd9, 0x3, 0x4e, 0x39, 0xdb, 0xac, 0x4c, 0x3e, - 0xa8, 0x29, 0xfd, 0x5b, 0x39, 0x5f, 0x69, 0xff, 00, 0xe0, - 0x48, 0x3e, 0xa9, 0x9d, 0x2f, 0xf9, 0x79, 0xf8, 0x9c, 0x18, - 0xfd, 0xad, 0x3c, 0x67, 0xff, 00, 0x3c, 0x74, 0xbf, 0xfc, - 0x7, 0x6f, 0xfe, 0x2e, 0x9e, 0x3f, 0x6b, 0x6f, 0x18, 0x77, - 0xb6, 0xd2, 0xcf, 0xfd, 0xb0, 0x7f, 0xfe, 0x2e, 0xbb, 0x37, - 0xfd, 0x8f, 0xac, 0xff, 00, 0x87, 0x5a, 0x93, 0xf1, 0x41, - 0x50, 0xbf, 0xec, 0x7b, 0x11, 0xfb, 0xba, 0xe3, 0xf, 0xac, - 0x74, 0x7b, 0x1c, 0xe9, 0x75, 0x7f, 0x7a, 0x17, 0xd5, 0xf3, - 0xb5, 0xf6, 0xff, 00, 0x14, 0x72, 0xc9, 0xfb, 0x5d, 0x78, - 0xb1, 0x4f, 0xcd, 0x63, 0xa5, 0xb0, 0xf4, 0xf2, 0x9c, 0x7f, - 0xec, 0xd5, 0x62, 0x2f, 0xda, 0xff, 00, 0xc4, 0x8a, 0xb8, - 0x7d, 0x27, 0x4d, 0x73, 0xea, 0x3, 0x8f, 0xfd, 0x9a, 0xb6, - 0x9f, 0xf6, 0x3d, 0x71, 0x8d, 0x9a, 0xd8, 0x3f, 0x58, 0xea, - 0x17, 0xfd, 0x8f, 0xee, 0x81, 0x3b, 0x75, 0x98, 0xcf, 0xa6, - 0x52, 0xa7, 0x93, 0x3a, 0x5f, 0xcd, 0xf7, 0xa0, 0xf6, 0x79, - 0xe2, 0xfb, 0x5f, 0x91, 0x4d, 0x7f, 0x6c, 0x4d, 0x6c, 0x1, - 0xbb, 0x42, 0xb0, 0x27, 0xb9, 0xe, 0xe3, 0x35, 0x3a, 0x7e, - 0xd8, 0xda, 0x98, 0x3f, 0x37, 0x87, 0x6d, 0x8, 0xf6, 0xb8, - 0x61, 0xfd, 0x29, 0xad, 0xfb, 0x21, 0x6a, 0x40, 0x71, 0xaa, - 0xc2, 0x4f, 0xa6, 0xda, 0x85, 0xff, 00, 0x64, 0x4d, 0x60, - 0x1f, 0x97, 0x53, 0x80, 0xfe, 0x14, 0xef, 0x9d, 0xae, 0xff, - 00, 0x80, 0x7f, 0xc2, 0xe2, 0xeb, 0xf9, 0x17, 0x7, 0xed, - 0x8f, 0x7b, 0xdf, 0xc3, 0x56, 0xdf, 0x85, 0xd3, 0x7f, 0xf1, - 0x35, 0x22, 0xfe, 0xd8, 0xf7, 0x3c, 0x6e, 0xf0, 0xd4, 0x3e, - 0xf8, 0xba, 0x3f, 0xfc, 0x4d, 0x64, 0x37, 0xec, 0x8f, 0xaf, - 0x1, 0xf2, 0xdf, 0xdb, 0x93, 0xe8, 0x6a, 0x16, 0xfd, 0x92, - 0xfc, 0x48, 0xf, 0xcb, 0x75, 0x6c, 0x47, 0xae, 0xea, 0x4e, - 0xae, 0x74, 0xbf, 0x9b, 0xee, 0x42, 0xe7, 0xcf, 0x17, 0xfc, - 0x32, 0x3a, 0x45, 0xfd, 0xb1, 0xf9, 0xf9, 0xbc, 0x32, 0x31, - 0xed, 0x77, 0xff, 00, 0xd8, 0xd4, 0xf1, 0xfe, 0xd8, 0xf6, - 0xd8, 0x3b, 0xfc, 0x37, 0x26, 0x7b, 0x6d, 0xba, 0x1f, 0xfc, - 0x4d, 0x71, 0x6f, 0xfb, 0x29, 0x78, 0xa9, 0x46, 0x43, 0xdb, - 0x93, 0xe9, 0xbc, 0x54, 0x2f, 0xfb, 0x2c, 0x78, 0xb5, 0x71, - 0x81, 0x9, 0xfa, 0x38, 0xa5, 0xf5, 0x9c, 0xe5, 0x74, 0x97, - 0xfe, 0x2, 0xbf, 0xc8, 0x7e, 0xdf, 0x3b, 0x5f, 0x67, 0xf0, - 0x47, 0xa2, 0x45, 0xfb, 0x62, 0xe9, 0x45, 0x7, 0x99, 0xe1, - 0xeb, 0xb0, 0xfe, 0x8b, 0x3a, 0x11, 0xfc, 0xaa, 0xc2, 0x7e, - 0xd8, 0x3a, 0x1, 0xc6, 0xfd, 0xf, 0x50, 0x5f, 0x5c, 0x3a, - 0x1f, 0xeb, 0x5e, 0x58, 0xff, 00, 0xb2, 0xff, 00, 0x8c, - 0x57, 0x38, 0x82, 0x26, 0xc7, 0xfb, 0x62, 0xa2, 0x6f, 0xd9, - 0x97, 0xc6, 0x63, 0x18, 0xb4, 0x43, 0xf4, 0x71, 0x4f, 0xeb, - 0xb9, 0xc2, 0xfb, 0x2f, 0xff, 00, 0x1, 0xff, 00, 0x80, - 0x1f, 0x5a, 0xce, 0x97, 0xd8, 0xfc, 0x11, 0xeb, 0xa3, 0xf6, - 0xbe, 0xf0, 0xd7, 0x7d, 0x23, 0x53, 0x1f, 0xf7, 0xef, 0xff, - 00, 0x8a, 0xa7, 0xaf, 0xed, 0x79, 0xe1, 0x72, 0x39, 0xd2, - 0xf5, 0x31, 0xff, 00, 0x1, 0x4f, 0xfe, 0x2a, 0xbc, 0x61, - 0xff, 00, 0x66, 0xcf, 0x1a, 0xa6, 0x71, 0xa7, 0x86, 0xc7, - 0xa3, 0x8a, 0x85, 0xff, 00, 0x67, 0x5f, 0x1b, 0xa0, 0xcf, - 0xf6, 0x53, 0x1f, 0xa3, 0xa, 0x3f, 0xb4, 0x33, 0x65, 0xf6, - 0x5f, 0xfe, 0x3, 0xff, 00, 00, 0x5f, 0x5e, 0xce, 0x56, - 0xf4, 0xff, 00, 0x3, 0xdc, 0x47, 0xed, 0x71, 0xe1, 0x42, - 0x46, 0x74, 0xfd, 0x4c, 0xf, 0xf7, 0x13, 0xff, 00, 0x8a, - 0xa9, 0xe3, 0xfd, 0xac, 0xfc, 0x1e, 0xc4, 0xee, 0xb6, 0xd4, - 0x90, 0x7f, 0xd7, 0x15, 0x3f, 0xfb, 0x35, 0x78, 0x3, 0x7e, - 0xcf, 0xfe, 0x36, 0x52, 0x47, 0xf6, 0x3c, 0x9f, 0x81, 0x15, - 0xb, 0xfc, 0x9, 0xf1, 0xa2, 0xc, 0xff, 00, 0x63, 0x4c, - 0x7e, 0x98, 0xa5, 0xfd, 0xa7, 0x9a, 0x2d, 0xe2, 0xff, 00, - 0xf0, 0x16, 0x1f, 0xda, 0x39, 0xba, 0xde, 0x9f, 0xe0, 0x7d, - 0x19, 0x1f, 0xed, 0x59, 0xe0, 0x97, 0x5c, 0xb7, 0xf6, 0x8a, - 0x1f, 0x43, 0x6c, 0xf, 0xfe, 0xcd, 0x53, 0xaf, 0xed, 0x4b, - 0xe0, 0x43, 0x8c, 0xdc, 0x5e, 0x8f, 0xad, 0xab, 0x71, 0x5f, - 0x33, 0xb7, 0xc1, 0x2f, 0x19, 0x29, 0xff, 00, 0x90, 0x2d, - 0xc7, 0xe5, 0x50, 0x37, 0xc1, 0xcf, 0x18, 0x20, 0xc9, 0xd1, - 0x2e, 0x71, 0xec, 0xb5, 0x5f, 0xda, 0xf9, 0x92, 0xde, 0x1f, - 0xf9, 0x2b, 0xf, 0xed, 0x5c, 0xd5, 0x6f, 0x4b, 0xf0, 0x7f, - 0xe6, 0x7d, 0x48, 0x3f, 0x69, 0xff, 00, 0x1, 0x1f, 0xf9, - 0x7f, 0xba, 0x1f, 0xf6, 0xe8, 0xff, 00, 0xe1, 0x4e, 0x1f, - 0xb4, 0xe7, 0x80, 0x4f, 0xfc, 0xc4, 0x6e, 0x7, 0xd6, 0xd1, - 0xff, 00, 0xc2, 0xbe, 0x54, 0x7f, 0x84, 0xde, 0x2d, 0x8f, - 0xae, 0x87, 0x77, 0xf8, 0x25, 0x40, 0xdf, 0xc, 0xfc, 0x50, - 0xa0, 0x93, 0xa3, 0x5d, 0xf1, 0xff, 00, 0x4c, 0xcd, 0x27, - 0x9d, 0x66, 0xb, 0xec, 0x2f, 0xfc, 0x5, 0xff, 00, 0x98, - 0xbf, 0xb6, 0x33, 0x35, 0xbd, 0x2f, 0xc1, 0xff, 00, 0x99, - 0xf5, 0xa8, 0xfd, 0xa5, 0xfc, 0x2, 0x46, 0x7f, 0xb5, 0x26, - 0x1f, 0x5b, 0x57, 0xff, 00, 0xa, 0x9d, 0x3f, 0x68, 0xdf, - 00, 0xb9, 0xc7, 0xf6, 0xd1, 0x5f, 0x76, 0xb7, 0x93, 0xff, - 00, 0x89, 0xaf, 0x8f, 0x9b, 0xe1, 0xe7, 0x89, 0x13, 0x19, - 0xd2, 0x2e, 0xc6, 0x7f, 0xe9, 0x99, 0xa8, 0xdb, 0xc0, 0xbe, - 0x20, 0x4c, 0xe7, 0x4a, 0xbb, 0x18, 0xeb, 0xfb, 0xb3, 0x4b, - 0xfb, 0x73, 0x1c, 0xb7, 0x82, 0xfb, 0x9f, 0xf9, 0x87, 0xf6, - 0xd6, 0x60, 0xb7, 0xa5, 0xf8, 0x3f, 0xf3, 0x3e, 0xcc, 0x8f, - 0xf6, 0x84, 0xf0, 0xc, 0x99, 0xff, 00, 0x89, 0xfc, 0x6b, - 0x8f, 0xef, 0x43, 0x20, 0xff, 00, 0xd9, 0x6a, 0x75, 0xf8, - 0xf1, 0xe0, 0x26, 0x50, 0x47, 0x88, 0xed, 0xb9, 0xf5, 0x57, - 0x1f, 0xd2, 0xbe, 0x27, 0x6f, 0x7, 0x6b, 0x8b, 0xd7, 0x4c, - 0xba, 0x1f, 0xf6, 0xcc, 0xd4, 0x6d, 0xe1, 0x6d, 0x65, 0x9, - 0x7, 0x4e, 0xba, 0x18, 0xff, 00, 0xa6, 0x66, 0x9f, 0xf6, - 0xfe, 0x2d, 0x6f, 0x5, 0xf7, 0x3f, 0xf3, 0x1f, 0xf6, 0xee, - 0x35, 0x6f, 0x47, 0xf0, 0x67, 0xdc, 0x23, 0xe3, 0x87, 0x81, - 0xf, 0xfc, 0xcc, 0xd6, 0x5f, 0x99, 0xff, 00, 0xa, 0x92, - 0x3f, 0x8d, 0x3e, 0x7, 0x90, 0x90, 0xbe, 0x26, 0xb0, 0xe3, - 0xd6, 0x4c, 0x7f, 0x4a, 0xf8, 0x54, 0xe8, 0x1a, 0xa2, 0x8c, - 0x9b, 0x1b, 0x80, 0x3f, 0xeb, 0x99, 0xa6, 0x1d, 0x1b, 0x51, - 0x5e, 0xb6, 0x93, 0x8f, 0xf8, 0x1, 0xa7, 0xfe, 0xb0, 0xe2, - 0x7f, 0x92, 0x3f, 0x8f, 0xf9, 0x87, 0xf6, 0xfe, 0x2f, 0xad, - 0x1f, 0xcc, 0xfb, 0xc9, 0x7e, 0x2f, 0x78, 0x2d, 0x86, 0x47, - 0x89, 0x74, 0xec, 0x7f, 0xd7, 0x61, 0x53, 0x47, 0xf1, 0x4f, - 0xc2, 0x12, 0x90, 0x17, 0xc4, 0x7a, 0x71, 0x27, 0xa7, 0xfa, - 0x42, 0xd7, 0xc0, 0xa7, 0x4b, 0xbe, 0x1d, 0x6d, 0xa5, 0x1f, - 0xf0, 0x3, 0x4d, 0x3a, 0x7d, 0xe2, 0xf5, 0xb7, 0x97, 0xfe, - 0xf8, 0x34, 0x7f, 0xac, 0x55, 0xfa, 0xc2, 0x3f, 0x88, 0xff, - 00, 0xd6, 0x1c, 0x42, 0xde, 0x8f, 0xe6, 0x7e, 0x82, 0xc3, - 0xf1, 0xb, 0xc3, 0x17, 0xd, 0xb6, 0x3f, 0x10, 0x69, 0xac, - 0x7a, 0xe3, 0xed, 0x28, 0x3f, 0xad, 0x5a, 0x4f, 0x17, 0xe8, - 0x52, 0x2e, 0x53, 0x59, 0xb0, 0x61, 0xea, 0x2e, 0x50, 0xff, - 00, 0x5a, 0xfc, 0xee, 0x36, 0xb7, 0x23, 0xac, 0x2e, 0x3f, - 0xe0, 0x26, 0x9a, 0x61, 0x98, 0x7f, 0xcb, 0x36, 0xfc, 0xaa, - 0xd7, 0x12, 0x54, 0xeb, 0x4d, 0x7d, 0xe5, 0x2e, 0x23, 0xab, - 0xd6, 0x8f, 0xe3, 0xff, 00, 00, 0xfd, 0x1c, 0x1a, 0xee, - 0x9a, 0x71, 0x8d, 0x42, 0xd4, 0xe7, 0xfe, 0x9b, 0x2f, 0xf8, - 0xd3, 0x86, 0xb3, 0xa7, 0x9e, 0x97, 0xd6, 0xc7, 0xfe, 0xdb, - 0x2f, 0xf8, 0xd7, 0xe7, 0x6, 0xc9, 0x47, 0xf0, 0x37, 0xe5, - 0x47, 0xef, 0x57, 0xb3, 0xa, 0xd3, 0xfd, 0x64, 0x97, 0xfc, - 0xfa, 0x5f, 0x7f, 0xfc, 0x1, 0xff, 00, 0xac, 0x92, 0xff, - 00, 0x9f, 0x3f, 0x8f, 0xfc, 0x3, 0xf4, 0x84, 0x6a, 0xb6, - 0x47, 0xa5, 0xe4, 0x7, 0xe9, 0x2a, 0xff, 00, 0x8d, 0x38, - 0x6a, 0x16, 0xad, 0x8c, 0x5c, 0xc2, 0x73, 0xe9, 0x20, 0xaf, - 0xcd, 0xc1, 0x24, 0xc3, 0xa1, 0x61, 0xf9, 0xd3, 0x85, 0xcd, - 0xc2, 0xf4, 0x77, 0x18, 0xff, 00, 0x68, 0xd3, 0x5c, 0x48, - 0xff, 00, 0xe7, 0xd7, 0xe3, 0xff, 00, 00, 0x7f, 0xeb, - 0x2f, 0x7a, 0x5f, 0x8f, 0xfc, 0x3, 0xf4, 0x95, 0x67, 0x8d, - 0xce, 0x16, 0x44, 0x63, 0xe8, 0x18, 0x1a, 0x7e, 0x47, 0xad, - 0x7e, 0x6d, 0xae, 0xa7, 0x7a, 0x87, 0x2b, 0x73, 0x32, 0x9f, - 0x51, 0x21, 0x1f, 0xd6, 0xa4, 0x1a, 0xe6, 0xa2, 0xbd, 0x2f, - 0x6e, 0x47, 0xd2, 0x66, 0xff, 00, 0x1a, 0xa5, 0xc4, 0x9d, - 0xe9, 0x7e, 0x3f, 0xf0, 0xa, 0xff, 00, 0x59, 0x63, 0xff, - 00, 0x3e, 0xbf, 0x1f, 0xf8, 0x7, 0xe9, 0x6, 0x45, 0x19, - 0xaf, 0xce, 0x31, 0xe2, 0x4d, 0x58, 0xc, 0xd, 0x4a, 0xf0, - 0xf, 0x69, 0xdf, 0xfc, 0x69, 0xc3, 0xc5, 0x3a, 0xc8, 0x3c, - 0x6a, 0x97, 0xc0, 0xff, 00, 0xd7, 0xc3, 0xff, 00, 0x8d, - 0x5f, 0xfa, 0xc7, 0x1f, 0xf9, 0xf5, 0xf8, 0xff, 00, 0xc0, - 0x1f, 0xfa, 0xcb, 0x4f, 0xfe, 0x7d, 0x3f, 0xbf, 0xfe, 0x1, - 0xfa, 0x35, 0x9a, 0x5a, 0xfc, 0xe8, 0x5f, 0x18, 0xeb, 0xb1, - 0xe4, 0x2e, 0xb1, 0x7e, 0xb9, 0xeb, 0x8b, 0x97, 0xe7, 0xf5, - 0xa9, 0x53, 0xc7, 0x7e, 0x22, 0x89, 0x76, 0xae, 0xb9, 0xa9, - 0x28, 0xf4, 0x17, 0x6f, 0xfe, 0x34, 0x7f, 0xac, 0x71, 0xff, - 00, 0x9f, 0x5f, 0x8f, 0xfc, 0x2, 0x97, 0x12, 0xd2, 0xeb, - 0x4d, 0xfd, 0xe7, 0xe8, 0x95, 0x15, 0xf9, 0xe8, 0x9f, 0x12, - 0xbc, 0x55, 0x19, 0x5, 0x7c, 0x43, 0xaa, 0x2, 0x3a, 0x7f, - 0xa5, 0xbf, 0xf8, 0xd4, 0xf1, 0xfc, 0x57, 0xf1, 0x84, 0x59, - 0xdb, 0xe2, 0x5d, 0x50, 0x67, 0xfe, 0x9e, 0x9f, 0xfc, 0x6a, - 0xd7, 0x11, 0xd3, 0xeb, 0x4d, 0xfd, 0xe8, 0xb5, 0xc4, 0x94, - 0x3a, 0xc1, 0xfe, 0x7, 0xe8, 0x25, 0x15, 0xf0, 00, 0xf8, - 0xc3, 0xe3, 0x40, 0x38, 0xf1, 0x3e, 0xa9, 0xff, 00, 0x81, - 0xd, 0x4f, 0x1f, 0x19, 0xbc, 0x6c, 0xe, 0x7f, 0xe1, 0x26, - 0xd4, 0x7f, 0xef, 0xf1, 0xaa, 0xff, 00, 0x58, 0xa8, 0xff, - 00, 0xcf, 0xb7, 0xf8, 0xf, 0xfd, 0x64, 0xc3, 0xff, 00, - 0x23, 0xfc, 0xf, 0xbf, 0x28, 0xaf, 0x82, 0x57, 0xe3, 0x8f, - 0x8e, 0x54, 0xe4, 0x78, 0x92, 0xf8, 0xfd, 0x5c, 0x7f, 0x85, - 0x4a, 0x9f, 0x1e, 0x3c, 0x74, 0x99, 0xc7, 0x88, 0xae, 0xcf, - 0xd7, 0x7, 0xfa, 0x53, 0xff, 00, 0x58, 0xa8, 0x7f, 0xcf, - 0xb9, 0x7e, 0x1f, 0xe6, 0x5a, 0xe2, 0x3c, 0x2f, 0xf2, 0xbf, - 0xc3, 0xfc, 0xcf, 0xbc, 0x68, 0xaf, 0x86, 0x23, 0xfd, 0xa1, - 0xfc, 0x7b, 0x18, 0x51, 0xfd, 0xbd, 0x23, 0x6d, 0xfe, 0xf4, - 0x48, 0x73, 0xf5, 0xe2, 0xac, 0xc7, 0xfb, 0x4a, 0xf8, 0xf6, - 0x37, 0xdd, 0xfd, 0xae, 0x8d, 0xec, 0xd6, 0xd1, 0x91, 0xfc, - 0xaa, 0xd7, 0x10, 0xe1, 0xba, 0xc2, 0x5f, 0x87, 0xf9, 0x96, - 0xb8, 0x8b, 0x9, 0xd9, 0xfd, 0xcb, 0xfc, 0xcf, 0xb7, 0xa8, - 0xaf, 0x8a, 0x17, 0xf6, 0x9f, 0xf1, 0xe8, 0x1c, 0xea, 0x36, - 0xed, 0xf5, 0xb4, 0x4f, 0xf0, 0xa7, 0x8f, 0xda, 0x8b, 0xc7, - 0x7f, 0xf3, 0xfb, 0x69, 0xff, 00, 0x80, 0xab, 0x57, 0xfe, - 0xb0, 0x61, 0x7b, 0x4b, 0xee, 0x5f, 0xe6, 0x57, 0xfa, 0xc3, - 0x83, 0xf3, 0xfb, 0xbf, 0xe0, 0x9f, 0x6a, 0x51, 0x5f, 0x17, - 0xaf, 0xed, 0x4f, 0xe3, 0x90, 0x46, 0x6e, 0x2c, 0xdb, 0xd8, - 0xdb, 0xa, 0x9e, 0x2f, 0xda, 0xb7, 0xc6, 0xb1, 0xb1, 0x2c, - 0x74, 0xf9, 0x6, 0x3a, 0x35, 0xb9, 0xfe, 0x86, 0x9f, 0xfa, - 0xc1, 0x84, 0xed, 0x2f, 0xbb, 0xfe, 0x9, 0x4b, 0x88, 0x30, - 0x5d, 0xdf, 0xdc, 0x7d, 0x93, 0x45, 0x7c, 0x7e, 0xbf, 0xb5, - 0xbf, 0x8b, 0x82, 0x80, 0x6d, 0x34, 0xb6, 0x3e, 0xbe, 0x4b, - 0xff, 00, 0xf1, 0x55, 0x3a, 0x7e, 0xd7, 0x9e, 0x29, 0xc, - 0xb, 0x69, 0xba, 0x5b, 0xe, 0xe3, 0x63, 0x8f, 0xfd, 0x9a, - 0xad, 0x67, 0xd8, 0x3f, 0x3f, 0xb8, 0xb5, 0x9f, 0x60, 0x7f, - 0x99, 0xfd, 0xc7, 0xd7, 0x34, 0x57, 0xc9, 0xab, 0xfb, 0x60, - 0xf8, 0x88, 0x67, 0x76, 0x8d, 0xa6, 0x1f, 0xa1, 0x90, 0x7f, - 0xec, 0xd4, 0xf1, 0xfb, 0x61, 0xeb, 0xdd, 0xf4, 0x3d, 0x37, - 0xfe, 0xfa, 0x93, 0xfc, 0x6a, 0xbf, 0xb7, 0x70, 0x5f, 0xcc, - 0xfe, 0xe6, 0x57, 0xf6, 0xee, 0x7, 0xf9, 0x9f, 0xdc, 0xcf, - 0xab, 0xe8, 0xaf, 0x94, 0xd7, 0xf6, 0xc4, 0xd6, 0xf8, 0xce, - 0x85, 0xa7, 0x9f, 0xa4, 0x8f, 0xfe, 0x35, 0x22, 0xfe, 0xd8, - 0x9a, 0xb6, 0x79, 0xd0, 0x2c, 0x88, 0xf6, 0x99, 0xe9, 0xff, - 00, 0x6e, 0x60, 0xbf, 0x99, 0xfd, 0xcc, 0x7f, 0xdb, 0x98, - 0x1f, 0xe7, 0xfc, 0x19, 0xf5, 0x45, 0x15, 0xf2, 0xf4, 0x7f, - 0xb6, 0x35, 0xe8, 0x5f, 0x9f, 0xc3, 0x76, 0xe5, 0xbd, 0x56, - 0xe9, 0x80, 0xff, 00, 0xd0, 0x6a, 0x65, 0xfd, 0xb2, 0x26, - 0xe3, 0x3e, 0x18, 0x8f, 0xdf, 0x17, 0x87, 0xff, 00, 0x88, - 0xaa, 0x59, 0xde, 0x7, 0xf9, 0xff, 00, 0x7, 0xfe, 0x45, - 0x2c, 0xeb, 0x2, 0xff, 00, 0xe5, 0xe7, 0xe0, 0xff, 00, - 0xc8, 0xfa, 0x6e, 0x8a, 0xf9, 0xba, 0x3f, 0xdb, 0x22, 0xc, - 0xfc, 0xfe, 0x17, 0x90, 0xf, 0xf6, 0x6f, 0x47, 0xff, 00, - 0x11, 0x5b, 0xda, 0x47, 0xed, 0x6f, 0xe1, 0x6b, 0xb8, 0xd7, - 0xed, 0xf6, 0x37, 0xf6, 0x12, 0x13, 0x82, 0x15, 0x56, 0x55, - 0x3, 0xd7, 0x20, 0x83, 0xfa, 0x56, 0xb0, 0xcd, 0xf0, 0x33, - 0x76, 0x55, 0x3f, 0x35, 0xf9, 0xa3, 0x58, 0x66, 0xd8, 0x29, - 0xbb, 0x2a, 0x8b, 0xf1, 0x5f, 0x99, 0xee, 0x74, 0x57, 0x31, - 0xe1, 0xaf, 0x89, 0x9e, 0x17, 0xf1, 0x7b, 0x4, 0xd2, 0x75, - 0xbb, 0x4b, 0xb9, 0x8f, 0x3e, 0x4e, 0xfd, 0xb2, 0x7f, 0xdf, - 0x2d, 0x83, 0xfa, 0x57, 0x4f, 0x5e, 0xac, 0x2a, 0x42, 0xa2, - 0xe6, 0x83, 0xba, 0xf2, 0x3d, 0x48, 0x4e, 0x15, 0x17, 0x34, - 0x1d, 0xd7, 0x90, 0x51, 0x45, 0x15, 0x65, 0x85, 0x14, 0x51, - 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, - 0x14, 0x51, 0x40, 0x5, 0x70, 0x7f, 0x18, 0x7e, 0x28, 0xdb, - 0x7c, 0x2f, 0xf0, 0xc3, 0xdd, 0xfe, 0xee, 0x7d, 0x4e, 0x73, - 0xe5, 0xda, 0x5a, 0xbb, 0x63, 0x7b, 0x77, 0x62, 0x3a, 0xed, - 0x1d, 0x4f, 0xe0, 0x3b, 0xd7, 0x75, 0x24, 0x8b, 0x12, 0x33, - 0xbb, 0x5, 0x45, 0x4, 0x96, 0x3d, 00, 0xaf, 0x82, 0x7e, - 0x32, 0x7c, 0x40, 0x7f, 0x88, 0xde, 0x3a, 0xbd, 0xbf, 0x57, - 0x26, 0xc2, 0x13, 0xf6, 0x7b, 0x34, 0xcf, 0x2, 0x35, 0x3d, - 0x7f, 0xe0, 0x47, 0x27, 0xf1, 0xaf, 0x17, 0x35, 0xc6, 0xbc, - 0x1d, 0xf, 0x73, 0xe2, 0x96, 0x8b, 0xfc, 0xcf, 0xf, 0x37, - 0xc7, 0xfd, 0x46, 0x87, 0xb9, 0xf1, 0xcb, 0x45, 0xfe, 0x7f, - 0x23, 0xa3, 0xf8, 0x39, 0xa7, 0xea, 0x1f, 0x13, 0x7e, 0x2a, - 0xc5, 0xa9, 0x6a, 0x92, 0xbd, 0xe3, 0xac, 0x86, 0xe2, 0x79, - 0x24, 0x39, 0xfa, 0xf, 0x61, 0xe8, 0x2b, 0xed, 0x40, 0x2, - 0x80, 0x7, 00, 0x57, 0x83, 0xfe, 0xca, 0x7e, 0x10, 0xfe, - 0xcc, 0xf0, 0xd5, 0xce, 0xb1, 0x34, 0x78, 0x9a, 0xe9, 0xf6, - 0xa1, 0x23, 0xf8, 0x45, 0x7b, 0xcd, 0x63, 0x92, 0x50, 0x74, - 0xb0, 0xbe, 0xd2, 0x5b, 0xcd, 0xdf, 0xfc, 0x83, 0x27, 0xa0, - 0xe9, 0x61, 0x54, 0xa7, 0xf1, 0x4b, 0x56, 0x14, 0x51, 0x45, - 0x7d, 0x1, 0xee, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x84, - 0x64, 0x70, 0x71, 0xef, 0x40, 0x18, 0x1c, 0x92, 0x7e, 0xb4, - 00, 0xb4, 0x53, 0x2, 0xed, 0x39, 0xde, 0x48, 0xf4, 0x3d, - 0x29, 0xc0, 0x83, 0xd0, 0xe6, 0x80, 0x16, 0x8a, 0x28, 0xa0, - 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, - 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, - 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, - 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x93, 0x2, 0x96, - 0x8a, 00, 0x4c, 0xf, 0x4a, 0x4d, 0x8a, 0x7b, 0xf, 0xca, - 0x9d, 0x45, 00, 0x37, 0xca, 0x43, 0xfc, 0xb, 0xf9, 0x53, - 0x4c, 0x11, 0x1e, 0xb1, 0xa7, 0xfd, 0xf2, 0x2a, 0x4a, 0x29, - 0x58, 0x8, 0xbe, 0xcb, 0xf, 0xfc, 0xf1, 0x8f, 0xfe, 0xf9, - 0x14, 0xd3, 0x65, 0x6e, 0x7a, 0xc1, 0x17, 0xfd, 0xf0, 0x2a, - 0x7a, 0x28, 0xb2, 0x15, 0x91, 0x59, 0xb4, 0xeb, 0x46, 0xeb, - 0x6b, 0x9, 0xfa, 0xc6, 0x29, 0x87, 0x47, 0xb1, 0x6e, 0xb6, - 0x70, 0x1f, 0xac, 0x63, 0xfc, 0x2a, 0xe5, 0x14, 0xb9, 0x63, - 0xd8, 0x2c, 0xbb, 0x19, 0xe7, 0x40, 0xd3, 0x1b, 0xad, 0x85, - 0xb1, 0xff, 00, 0xb6, 0x4b, 0xfe, 0x14, 0xc6, 0xf0, 0xce, - 0x92, 0xdd, 0x74, 0xdb, 0x53, 0xff, 00, 0x6c, 0x85, 0x69, - 0xd1, 0x4b, 0xd9, 0xc3, 0xb2, 0x17, 0x2c, 0x7b, 0x19, 0x7, - 0xc2, 0x3a, 0x2b, 0x75, 0xd2, 0xed, 0x4f, 0xfd, 0xb2, 0x15, - 0x1b, 0x78, 0x2b, 0x41, 0x73, 0x93, 0xa4, 0x59, 0x93, 0xef, - 0xa, 0xd6, 0xdd, 0x15, 0x3e, 0xca, 0x9b, 0xfb, 0x2b, 0xee, - 0x17, 0x24, 0x3b, 0x1c, 0xf3, 0x7c, 0x3f, 0xf0, 0xe3, 0x75, - 0xd1, 0xed, 0x3f, 0xef, 0xd0, 0xa8, 0x9b, 0xe1, 0xaf, 0x86, - 0x1f, 0xae, 0x8b, 0x69, 0xff, 00, 0x7e, 0xc5, 0x74, 0xd4, - 0x54, 0xfd, 0x5e, 0x8b, 0xfb, 0xb, 0xee, 0x44, 0xfb, 0x2a, - 0x6f, 0xec, 0xaf, 0xb8, 0xe4, 0xdf, 0xe1, 0x5f, 0x85, 0x5f, - 0x39, 0xd1, 0x6d, 0xb9, 0xff, 00, 0x60, 0x54, 0x2d, 0xf0, - 0x87, 0xc2, 0x4f, 0xd7, 0x45, 0xb7, 0xff, 00, 0xbe, 0x6b, - 0xb2, 0xa2, 0xa3, 0xea, 0xb4, 0x1f, 0xd8, 0x5f, 0x72, 0x17, - 0xb0, 0xa5, 0xfc, 0xab, 0xee, 0x38, 0x76, 0xf8, 0x2f, 0xe0, - 0xf7, 0xeb, 0xa3, 0x41, 0xf9, 0x54, 0x2f, 0xf0, 0x2f, 0xc1, - 0x8f, 0xff, 00, 0x30, 0x78, 0xc7, 0xd2, 0xbb, 0xea, 0x2a, - 0x5e, 0xb, 0xc, 0xf7, 0xa6, 0xbe, 0xe4, 0x4f, 0xd5, 0xa8, - 0xbf, 0xb0, 0xbe, 0xe3, 0xce, 0x9f, 0xe0, 0x17, 0x83, 0x1f, - 0xfe, 0x61, 0x6a, 0x3e, 0x86, 0xa0, 0x7f, 0xd9, 0xe3, 0xc1, - 0x8f, 0xff, 00, 0x2e, 0x4, 0x7d, 0xd, 0x7a, 0x65, 0x15, - 0xf, 0x1, 0x84, 0x7f, 0xf2, 0xe9, 0x7d, 0xc8, 0x9f, 0xaa, - 0x50, 0x7f, 0x61, 0x7d, 0xc7, 0x96, 0xbf, 0xec, 0xe1, 0xe0, - 0xd7, 0xff, 00, 0x97, 0x37, 0x1f, 0xf0, 0x2a, 0x81, 0xff, - 00, 0x66, 0x7f, 0x7, 0x37, 0xfc, 0xb0, 0x94, 0x7d, 0x1a, - 0xbd, 0x66, 0x8a, 0x9f, 0xec, 0xdc, 0x1b, 0xff, 00, 0x97, - 0x4b, 0xee, 0x23, 0xea, 0x58, 0x67, 0xff, 00, 0x2e, 0xd7, - 0xdc, 0x79, 0x3, 0xfe, 0xcb, 0xfe, 0xf, 0x7f, 0xe0, 0xb8, - 0x5f, 0xa3, 0xd4, 0xd, 0xfb, 0x2c, 0x78, 0x4c, 0xf4, 0x7b, - 0x81, 0xf8, 0x8a, 0xf6, 0x6a, 0x2a, 0x1e, 0x57, 0x82, 0x7f, - 0xf2, 0xe9, 0x12, 0xf0, 0x18, 0x57, 0xff, 00, 0x2e, 0xd7, - 0xdc, 0x78, 0x9b, 0xfe, 0xca, 0x7e, 0x16, 0x6e, 0x97, 0x17, - 0x23, 0xf1, 0x15, 0xb, 0xfe, 0xc9, 0xbe, 0x1b, 0x6f, 0xbb, - 0x79, 0x72, 0x3f, 0x2a, 0xf7, 0x2a, 0x2a, 0x7f, 0xb2, 0x70, - 0x3f, 0xf3, 0xe9, 0x12, 0xf2, 0xec, 0x23, 0xff, 00, 0x97, - 0x68, 0xf0, 0x76, 0xfd, 0x92, 0x74, 0x3, 0xd3, 0x50, 0xb9, - 0x1f, 0x80, 0xa8, 0x5b, 0xf6, 0x45, 0xd1, 0xf, 0x4d, 0x52, - 0xe0, 0x7f, 0xc0, 0x45, 0x7b, 0xf5, 0x15, 0x3f, 0xd9, 0x18, - 0x1f, 0xf9, 0xf7, 0xf9, 0x90, 0xf2, 0xbc, 0x1b, 0xff, 00, - 0x97, 0x68, 0xf9, 0xe9, 0xff, 00, 0x64, 0x2d, 0x2c, 0xfd, - 0xdd, 0x62, 0x7f, 0xc5, 0x5, 0x40, 0xff, 00, 0xb2, 0x5, - 0x97, 0xf0, 0xeb, 0x12, 0x7e, 0x28, 0x2b, 0xe8, 0xca, 0x2a, - 0x3f, 0xb1, 0xb0, 0x3f, 0xf3, 0xef, 0xf1, 0x7f, 0xe6, 0x4b, - 0xca, 0x70, 0x4f, 0xfe, 0x5d, 0xa3, 0xe6, 0xd6, 0xfd, 0x90, - 0x21, 0xfe, 0x1d, 0x65, 0xbf, 0x14, 0xa8, 0x5f, 0xf6, 0x40, - 0x3f, 0xc3, 0xac, 0x7e, 0x69, 0x5f, 0x4c, 0x51, 0x53, 0xfd, - 0x89, 0x81, 0xfe, 0x4f, 0xc5, 0x91, 0xfd, 0x91, 0x82, 0xff, - 00, 0x9f, 0x67, 0xcc, 0xf, 0xfb, 0x20, 0x4f, 0xfc, 0x3a, - 0xba, 0xfe, 0x2b, 0x50, 0xbf, 0xec, 0x83, 0x7e, 0x3e, 0xee, - 0xaf, 0x11, 0xfa, 0xad, 0x7d, 0x4b, 0x45, 0x4f, 0xf6, 0x1e, - 0x7, 0xf9, 0x5f, 0xde, 0xc9, 0x79, 0x36, 0x5, 0xfd, 0x83, - 0xe5, 0x37, 0xfd, 0x91, 0x35, 0x51, 0xd3, 0x53, 0x84, 0xfe, - 0x15, 0x3, 0xfe, 0xc9, 0x1a, 0xd8, 0xe9, 0x7d, 0xb, 0x57, - 0xd6, 0x74, 0x54, 0xbc, 0x87, 0x5, 0xd9, 0xfd, 0xec, 0x87, - 0x92, 0x60, 0x7f, 0x93, 0xf1, 0x3e, 0x46, 0x7f, 0xd9, 0x33, - 0xc4, 0x23, 0xa5, 0xd4, 0x7, 0xf1, 0xa8, 0x1f, 0xf6, 0x51, - 0xf1, 0x28, 0xfb, 0xb2, 0xc2, 0x7f, 0x1a, 0xfb, 0x2, 0x8a, - 0x8f, 0xec, 0xc, 0x1f, 0x9f, 0xde, 0x4f, 0xf6, 0x16, 0xb, - 0xf9, 0x7f, 0x13, 0xe3, 0x87, 0xfd, 0x95, 0x7c, 0x54, 0x3e, - 0xe9, 0x85, 0xbf, 0xe0, 0x42, 0xa1, 0x7f, 0xd9, 0x6f, 0xc5, - 0xeb, 0xd2, 0x38, 0x8f, 0xd1, 0xc5, 0x7d, 0x9b, 0x45, 0x4f, - 0xfa, 0xbf, 0x84, 0xee, 0xfe, 0xff, 00, 0xf8, 0x4, 0xff, - 00, 0x60, 0xe0, 0xbb, 0x3f, 0xbc, 0xf8, 0xad, 0xff, 00, - 0x66, 0x3f, 0x18, 0xaf, 0x4b, 0x64, 0x3f, 0xf0, 0x31, 0x50, - 0xbf, 0xec, 0xd7, 0xe3, 0x35, 0xff, 00, 0x97, 0x20, 0x7f, - 0xe0, 0x42, 0xbe, 0xda, 0xa2, 0xa7, 0xfd, 0x5e, 0xc3, 0x7f, - 0x34, 0xbf, 0xf, 0xf2, 0x23, 0xfd, 0x5f, 0xc1, 0xf9, 0xfd, - 0xe7, 0xc3, 0xcd, 0xfb, 0x39, 0xf8, 0xd1, 0x7f, 0xe6, 0x1a, - 0x4f, 0xfc, 0x8, 0x54, 0x2f, 0xfb, 0x3d, 0xf8, 0xd1, 0x7f, - 0xe6, 0x14, 0xe7, 0xf1, 0x15, 0xf7, 0x3d, 0x15, 0x3f, 0xea, - 0xee, 0x1f, 0xf9, 0xe5, 0xf8, 0x7f, 0x91, 0x3f, 0xea, 0xf6, - 0x13, 0xcf, 0xef, 0x3e, 0x12, 0x3f, 0x1, 0xbc, 0x6d, 0xb, - 0x6, 0x5d, 0x22, 0x60, 0xc3, 0xa3, 0x29, 0xc1, 0x15, 0xde, - 0x78, 0x43, 0xc6, 0xbf, 0x14, 0xfe, 0x15, 0x6c, 0x5d, 0x57, - 0x4c, 0xbc, 0xd7, 0x34, 0x55, 0xfb, 0xf0, 0x5d, 0x12, 0xd2, - 0xa2, 0xff, 00, 0xb1, 0x27, 0x5f, 0xc0, 0xe4, 0x7d, 0x2b, - 0xeb, 0x1a, 0x82, 0xf2, 0xde, 0x2b, 0x9b, 0x69, 0x12, 0x64, - 0x59, 0x10, 0xa9, 0xc8, 0x61, 0x5a, 0xd2, 0xc9, 0x56, 0x19, - 0xf3, 0xd0, 0xab, 0x24, 0xfe, 0x45, 0x53, 0xc8, 0xe9, 0xd0, - 0x7c, 0xf8, 0x7a, 0x92, 0x8b, 0xfe, 0xb7, 0xee, 0x73, 0xbe, - 00, 0xf8, 0x91, 0xa2, 0x7c, 0x48, 0xd2, 0x8d, 0xe6, 0x91, - 0x73, 0xba, 0x58, 0xf0, 0x2e, 0x2d, 0x24, 0xf9, 0x66, 0xb7, - 0x63, 0xfc, 0x2e, 0xbd, 0xbe, 0xbd, 0xd, 0x75, 0x35, 0xf1, - 0x7, 0xc4, 0x6d, 0x72, 0xff, 00, 0xe1, 0x4f, 0xc4, 0x43, - 0xae, 0x78, 0x66, 0x63, 0x69, 0x74, 0x24, 0xfd, 0xfc, 0x20, - 0xfe, 0xee, 0xe1, 0x1, 0xc9, 0x8d, 0xc7, 0x70, 0x7f, 0x31, - 0xda, 0xbe, 0xae, 0xf8, 0x4f, 0xf1, 0x3b, 0x4d, 0xf8, 0xb7, - 0xe0, 0xcb, 0x5d, 0x7f, 0x4d, 0x47, 0x80, 0x3b, 0x34, 0x53, - 0xda, 0xca, 0x46, 0xf8, 0x25, 0x5e, 0x19, 0xf, 0xaf, 0xa8, - 0x3d, 0xc1, 0x6, 0xbd, 0xc, 0xe, 0x35, 0x62, 0x79, 0xa9, - 0xcb, 0xe2, 0x8e, 0x8c, 0xe8, 0xc0, 0x66, 0x4a, 0xbd, 0x59, - 0x61, 0x6a, 0xe9, 0x52, 0x3f, 0x73, 0x5d, 0xd7, 0xea, 0x8e, - 0xc6, 0x8a, 0x28, 0xaf, 0x54, 0xf7, 0x42, 0x8a, 0x28, 0xa0, - 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0xf, 0x37, - 0xfd, 0xa0, 0x7c, 0x6a, 0x3c, 0x17, 0xf0, 0xd7, 0x51, 0x74, - 0x72, 0x97, 0x97, 0xe3, 0xec, 0x56, 0xfb, 0x4e, 0x8, 0x67, - 0x7, 0x24, 0x7d, 0x17, 0x26, 0xbe, 0x25, 0xd0, 0xb4, 0xb9, - 0x35, 0x8d, 0x56, 0xd2, 0xca, 0x15, 0xdc, 0xf3, 0x48, 0x10, - 0x1, 0x5e, 0xd3, 0xfb, 0x5a, 0xf8, 0xcb, 0xfb, 0x5b, 0xc6, - 0x16, 0x7e, 0x1f, 0x85, 0xf3, 0x6, 0x97, 0x1f, 0x99, 0x28, - 0x7, 0x83, 0x33, 0x8c, 0xfe, 0x8b, 0x8f, 0xfb, 0xe8, 0xd6, - 0x77, 0xec, 0xc3, 0xe1, 0x1, 0xaf, 0x78, 0xd8, 0x5f, 0x4d, - 0x1e, 0xeb, 0x7b, 0x25, 0x2f, 0x93, 0xd3, 0x77, 0x6a, 0xfc, - 0xf7, 0x33, 0x93, 0xc7, 0x63, 0xd6, 0x1e, 0x3b, 0x2d, 0x3f, - 0xcc, 0xfc, 0xef, 0x1e, 0xde, 0x63, 0x9a, 0x2a, 0x11, 0xda, - 0x3a, 0x7f, 0x9f, 0xf5, 0xe4, 0x7d, 0x67, 0xe1, 0x3d, 0x12, - 0x3f, 0xe, 0xf8, 0x72, 0xc3, 0x4f, 0x8d, 0x42, 0x88, 0x22, - 0x55, 0x38, 0xf5, 0xc7, 0x35, 0xaf, 0x45, 0x15, 0xfa, 0x4, - 0x62, 0xa1, 0x15, 0x18, 0xec, 0x8f, 0xd0, 0xa2, 0x94, 0x52, - 0x48, 0x28, 0xa2, 0x8a, 0xa2, 0x82, 0x8a, 0x2b, 0xcd, 0xbf, - 0x68, 0xaf, 0x8d, 0xda, 0x47, 0xec, 0xf1, 0xf0, 0x83, 0xc4, - 0x1e, 0x39, 0xd6, 0xe, 0xe8, 0xf4, 0xf8, 0x71, 0x6d, 0x6e, - 0x3e, 0xf5, 0xc5, 0xc3, 0x7c, 0xb1, 0x44, 0x3e, 0xac, 0x46, - 0x7d, 0x6, 0x4f, 0x6a, 00, 0xe7, 0x3f, 0x69, 0x9f, 0xda, - 0xf3, 0xe1, 0xf7, 0xec, 0xaf, 0xa0, 0x47, 0x79, 0xe2, 0xcb, - 0xe7, 0x9f, 0x55, 0xba, 0x52, 0xd6, 0x3a, 0x25, 0x88, 0xf, - 0x77, 0x73, 0x8e, 0xe0, 0x67, 0xa, 0x99, 0xfe, 0x36, 0x20, - 0x7d, 0x4f, 0x15, 0xf9, 0x5d, 0xf1, 0x87, 0xfe, 0xa, 0xd5, - 0xf1, 0x9b, 0xe2, 0x5, 0xc5, 0xdd, 0xbf, 0x85, 0xe5, 0xb1, - 0xf0, 0x1e, 0x90, 0xec, 0x44, 0x4b, 0xa7, 0xc2, 0x26, 0xbb, - 0x9, 0x9e, 0x37, 0x4d, 0x26, 0x46, 0x71, 0xfd, 0xd5, 0x5a, - 0xf9, 0xb3, 0x5d, 0xd7, 0xfc, 0x7d, 0xfb, 0x57, 0x7c, 0x67, - 0x4b, 0x8b, 0xc9, 0x2e, 0x3c, 0x4b, 0xe3, 0x3f, 0x11, 0xdd, - 0xac, 0x10, 0x44, 0xf, 00, 0x93, 0xf2, 0xc6, 0x83, 0xa2, - 0x46, 0xa3, 0x3c, 0x74, 00, 0x13, 0xea, 0x6b, 0xf4, 0x67, - 0xc1, 0x1f, 0xf0, 0x48, 0xaf, 0x87, 0xff, 00, 0xf, 0x7e, - 0x1c, 0xdf, 0x78, 0x9b, 0xe2, 0xf7, 0x8b, 0x75, 0x1b, 0xeb, - 0x9d, 0x3e, 0xca, 0x4b, 0xeb, 0xe8, 0x74, 0x69, 0x56, 0xda, - 0xd6, 0xd9, 0x11, 0xb, 0xb0, 0xe, 0xca, 0x59, 0xf0, 0x1, - 0xe7, 0xe5, 0xcf, 0xa5, 0x32, 0x6e, 0xde, 0xc7, 0xe7, 0x17, - 0x88, 0x7f, 0x68, 0xbf, 0x8a, 0x7e, 0x2b, 0xb9, 0x92, 0x7d, - 0x5b, 0xe2, 0x37, 0x8a, 0x2f, 0x64, 0x90, 0xe5, 0x83, 0xea, - 0xf3, 0x85, 0x27, 0xfd, 0xd0, 0xc0, 0xf, 0xca, 0xbf, 0x5a, - 0xbf, 0xe0, 0x92, 0x3e, 0xb, 0xd6, 0xed, 0xfe, 0x3, 0xea, - 0x3e, 0x39, 0xf1, 0x6, 0xad, 0xa9, 0x6a, 0xb7, 0x9e, 0x23, - 0xbe, 0x74, 0xb3, 0x17, 0xf7, 0x52, 0x4c, 0x22, 0xb6, 0x80, - 0x94, 0x1b, 0x43, 0x13, 0x8d, 0xd2, 0x79, 0x84, 0x91, 0xd4, - 0x5, 0xaf, 0xc7, 0x4d, 0x1b, 0xc3, 0x7f, 0xf0, 0x9e, 0xfc, - 0x44, 0xb2, 0xd0, 0x7c, 0x39, 0x6f, 0x24, 0x4b, 0xac, 0x6a, - 0x89, 0x67, 0xa7, 0xc1, 0x2b, 0x6f, 0x64, 0x12, 0xca, 0x16, - 0x30, 0xcd, 0x8e, 0x70, 0x18, 0x64, 0xfb, 0x13, 0x5f, 0xd1, - 0xcf, 0x86, 0xb4, 0x4d, 0x3, 0xf6, 0x7b, 0xf8, 0x2d, 0x65, - 0xa6, 0xc6, 0x52, 0xcf, 0xc3, 0xfe, 0x13, 0xd1, 0xc0, 0x67, - 0x3c, 0x1, 0x1c, 0x31, 0xe5, 0xdc, 0xfb, 0x9c, 0x12, 0x7d, - 0xcd, 0xc, 0x48, 0xf8, 0xf, 0xc4, 0x7f, 0xf0, 0x59, 0xa9, - 0xfc, 0x25, 0xe2, 0xcd, 0x6b, 0x42, 0xd4, 0x3e, 0x14, 0xab, - 0xcd, 0xa6, 0x5e, 0xcf, 0x65, 0x24, 0x90, 0x6b, 0x7c, 0x33, - 0x47, 0x23, 0x21, 0x20, 0x18, 0x7d, 0x56, 0xbe, 0xec, 0xfd, - 0x9c, 0x3e, 0x34, 0x47, 0xfb, 0x42, 0x7c, 0x1b, 0xf0, 0xff, - 00, 0x8f, 0x62, 0xd2, 0xdf, 0x46, 0x4d, 0x59, 0x24, 0x61, - 0x64, 0xf2, 0xf9, 0xa6, 0x3d, 0xb2, 0x32, 0x7d, 0xec, 0xc, - 0xe7, 0x6e, 0x7a, 0x77, 0xaf, 0xe7, 0x2f, 0xc6, 0x7a, 0xf9, - 0xf1, 0x5f, 0x8b, 0xf5, 0xdd, 0x6d, 0x86, 0xd6, 0xd4, 0xaf, - 0xe7, 0xbd, 0x23, 0xd0, 0xc9, 0x23, 0x3f, 0xfe, 0xcd, 0x5f, - 0xd1, 0x27, 0xec, 0x91, 0xf0, 0xfe, 0x4f, 0x85, 0xff, 00, - 0xb3, 0x57, 0xc3, 0x9f, 0xd, 0xce, 0x9e, 0x5d, 0xdd, 0xae, - 0x8d, 0x3, 0xdc, 0xaf, 0xa4, 0xd2, 0x2f, 0x99, 0x27, 0xfe, - 0x3c, 0xe6, 0x81, 0xa7, 0x73, 0xd6, 0xc9, 0xc0, 0xc9, 0xe0, - 0x57, 0xce, 0xda, 0xff, 00, 0xed, 0xf, 0xae, 0x43, 0xae, - 0x5f, 0x47, 0xa6, 0xc7, 0x64, 0xda, 0x7a, 0x4a, 0xcb, 0x9, - 0x96, 0x26, 0x2c, 0x54, 0x1c, 0x64, 0x9d, 0xc3, 0xaf, 0x5f, - 0xc6, 0xbd, 0x7b, 0xe2, 0x97, 0x89, 0x47, 0x85, 0xbc, 0x11, - 0xa9, 0x5d, 0xab, 0x6d, 0x9d, 0xd3, 0xc8, 0x87, 0xfd, 0xf7, - 0xe0, 0x7e, 0x5c, 0x9f, 0xc2, 0xbe, 0x40, 0xaf, 0x86, 0xe2, - 0x2c, 0xca, 0xae, 0x1a, 0x70, 0xa3, 0x42, 0x5c, 0xaf, 0x77, - 0x6f, 0xc3, 0xf5, 0x3c, 0x9c, 0x75, 0x79, 0x53, 0x6a, 0x10, - 0x76, 0x3d, 0x5d, 0x3f, 0x69, 0xf, 0x12, 0xaf, 0xde, 0xb3, - 0xd3, 0x9b, 0xfe, 0xd9, 0xb8, 0xff, 00, 0xd9, 0xaa, 0x74, - 0xfd, 0xa5, 0x75, 0xe1, 0xf7, 0xb4, 0xdd, 0x3d, 0xbe, 0x81, - 0xc7, 0xfe, 0xcd, 0x5e, 0x43, 0x45, 0x7c, 0x82, 0xce, 0x73, - 0x5, 0xff, 00, 0x2f, 0x5f, 0xe0, 0x79, 0x9f, 0x5a, 0xad, - 0xfc, 0xc7, 0xb3, 0x47, 0xfb, 0x4c, 0xea, 0x83, 0xef, 0xe8, - 0xb6, 0x8d, 0xfe, 0xec, 0xac, 0x3f, 0xc6, 0xa7, 0x4f, 0xda, - 0x72, 0xef, 0xf8, 0xbc, 0x3f, 0x9, 0xfa, 0x5d, 0x11, 0xff, - 00, 0xb2, 0xd7, 0x89, 0x51, 0x5a, 0x2c, 0xf3, 0x31, 0x5f, - 0xf2, 0xf7, 0xf0, 0x5f, 0xe4, 0x57, 0xd7, 0x2b, 0xff, 00, - 0x31, 0xee, 0xd1, 0x7e, 0xd3, 0x83, 0xfe, 0x5a, 0x78, 0x7f, - 0x1f, 0xee, 0xdd, 0x7f, 0xf6, 0x35, 0x66, 0x3f, 0xda, 0x6e, - 0xc8, 0xfd, 0xfd, 0xa, 0x71, 0xfe, 0xec, 0xea, 0x7f, 0xa5, - 0x78, 0x5, 0x15, 0xaa, 0xe2, 0xc, 0xc5, 0x7f, 0xcb, 0xcf, - 0xc1, 0x7f, 0x91, 0x5f, 0x5d, 0xaf, 0xfc, 0xdf, 0x91, 0xf4, - 0x3c, 0x7f, 0xb4, 0xc6, 0x90, 0x7e, 0xfe, 0x91, 0x7a, 0xbf, - 0xee, 0xb2, 0x1f, 0xeb, 0x5a, 0x56, 0x7f, 0xb4, 0x5f, 0x85, - 0xee, 0x8, 0x13, 0x45, 0x7f, 0x6b, 0xee, 0xf0, 0x86, 0x1f, - 0xf8, 0xeb, 0x1a, 0xf9, 0x9a, 0x8a, 0xd6, 0x3c, 0x47, 0x8f, - 0x8e, 0xed, 0x3f, 0x97, 0xf9, 0x14, 0xb1, 0xf5, 0x97, 0x53, - 0xec, 0x4d, 0x7, 0xe2, 0x67, 0x86, 0x7c, 0x48, 0xeb, 0x1d, - 0x8e, 0xaf, 0x3, 0x4c, 0xdd, 0x22, 0x97, 0x31, 0xb9, 0xfa, - 0x6, 0xc6, 0x7f, 0xa, 0xe9, 0xeb, 0xe1, 0x4a, 0xed, 0x7c, - 0x17, 0xf1, 0x6b, 0x5f, 0xf0, 0x6c, 0xa8, 0x89, 0x72, 0xd7, - 0xd6, 00, 0xfc, 0xd6, 0x97, 0x2c, 0x59, 0x71, 0xfe, 0xc9, - 0xea, 0xbf, 0x87, 0x1e, 0xd5, 0xed, 0xe1, 0x38, 0xa1, 0x36, - 0xa3, 0x8a, 0x85, 0xbc, 0xd7, 0xf9, 0x7f, 0xc1, 0x3a, 0xe9, - 0x66, 0x37, 0x76, 0xa8, 0xbe, 0xe3, 0xeb, 0x6a, 0x2b, 0x13, - 0xc2, 0x1e, 0x2f, 0xd3, 0xfc, 0x6b, 0xa3, 0xa6, 0xa1, 0xa7, - 0xc8, 0x4a, 0x13, 0xb6, 0x48, 0xdb, 0x86, 0x8d, 0xfb, 0xa9, - 0x15, 0xb7, 0x5f, 0x75, 0x4e, 0xa4, 0x6a, 0xc5, 0x4e, 0xe, - 0xe9, 0x9e, 0xc4, 0x64, 0xa4, 0xae, 0xb6, 0xa, 0xc0, 0xf1, - 0x17, 0x8e, 0xb4, 0x2f, 0x9, 0xdc, 0x43, 0x6, 0xab, 0xa8, - 0x25, 0xa4, 0xb3, 0x29, 0x74, 0x56, 0x56, 0x39, 00, 0xe3, - 0x3c, 0x3, 0x5b, 0xf5, 0xf2, 0x87, 0xc6, 0xed, 0x74, 0x6b, - 0x9f, 0x10, 0xaf, 0xc2, 0x36, 0xe8, 0xac, 0xc2, 0xda, 0xa7, - 0xfc, 0x7, 0xef, 0x7f, 0xe3, 0xc5, 0xab, 0xc8, 0xcd, 0xf3, - 0x7, 0x97, 0x61, 0xd5, 0x48, 0x24, 0xe4, 0xdd, 0x95, 0xce, - 0x5c, 0x55, 0x77, 0x42, 0x1c, 0xcb, 0x73, 0xe8, 0x4, 0xf8, - 0xb9, 0xe0, 0xf7, 0xe9, 0xaf, 0x5b, 0xf, 0xf7, 0xb7, 0xf, - 0xe6, 0x2a, 0x74, 0xf8, 0xa1, 0xe1, 0x37, 0xe9, 0xe2, 0xb, - 0x1f, 0xc6, 0x50, 0x2b, 0xe3, 0xca, 0x2b, 0xe3, 0x97, 0x14, - 0xe2, 0x7a, 0xd3, 0x8f, 0xe3, 0xfe, 0x67, 0x97, 0xfd, 0xa3, - 0x53, 0xb2, 0x3e, 0xca, 0x8f, 0xe2, 0x17, 0x86, 0x25, 0xfb, - 0xba, 0xfe, 0x9c, 0x7f, 0xed, 0xe5, 0x3f, 0xc6, 0xad, 0x47, - 0xe3, 0xd, 0xa, 0x6f, 0xb9, 0xac, 0xd8, 0x37, 0xd2, 0xe5, - 0x3f, 0xc6, 0xbe, 0x2b, 0xa2, 0xb5, 0x5c, 0x55, 0x5b, 0xad, - 0x25, 0xf7, 0xb2, 0xbf, 0xb4, 0x67, 0xd6, 0x27, 0xdb, 0x89, - 0xaf, 0x69, 0x92, 0x7d, 0xdd, 0x46, 0xd1, 0xbe, 0x93, 0xaf, - 0xf8, 0xd4, 0xc9, 0xa9, 0x5a, 0x49, 0xf7, 0x2e, 0xa0, 0x6f, - 0xa4, 0x80, 0xff, 00, 0x5a, 0xf8, 0x76, 0x8c, 0x91, 0x5a, - 0x2e, 0x2b, 0x97, 0x5a, 0x3f, 0x8f, 0xfc, 0x2, 0xbf, 0xb4, - 0x9f, 0xf2, 0xfe, 0x27, 0xdd, 0xb, 0x2a, 0x37, 0xdd, 0x75, - 0x3f, 0x43, 0x4e, 0xdc, 0x3d, 0x45, 0x7c, 0x30, 0x25, 0x75, - 0xe8, 0xec, 0x3e, 0x86, 0xa4, 0x4b, 0xeb, 0x98, 0xfe, 0xed, - 0xc4, 0xab, 0xf4, 0x72, 0x2b, 0x45, 0xc5, 0x6b, 0xad, 0x1f, - 0xfc, 0x9b, 0xfe, 0x1, 0x5f, 0xda, 0x5f, 0xdc, 0xfc, 0x7f, - 0xe0, 0x1f, 0x72, 0x51, 0x5f, 0x10, 0xa6, 0xb9, 0xa9, 0x47, - 0xf7, 0x75, 0xb, 0xa5, 0xfa, 0x4c, 0xdf, 0xe3, 0x52, 0xaf, - 0x89, 0xb5, 0x84, 0xfb, 0xba, 0xad, 0xf2, 0xfd, 0x2e, 0x5c, - 0x7f, 0x5a, 0xd1, 0x71, 0x5d, 0x3e, 0xb4, 0x5f, 0xdf, 0xff, - 00, 00, 0x7f, 0xda, 0x4b, 0xf9, 0x7f, 0x13, 0xed, 0x9a, - 0x2b, 0xe2, 0xc4, 0xf1, 0x96, 0xbf, 0x1f, 0xdd, 0xd7, 0x35, - 0x25, 0xfa, 0x5d, 0xc9, 0xfe, 0x35, 0xda, 0x7c, 0x25, 0xf1, - 0x7, 0x88, 0x75, 0xff, 00, 0x1e, 0xe9, 0x76, 0x93, 0x6b, - 0x3a, 0x84, 0xf6, 0xc1, 0xda, 0x59, 0x52, 0x4b, 0x97, 0x65, - 0x2a, 0xaa, 0x4e, 0x8, 0x27, 0xa6, 0x70, 0x3f, 0x1a, 0xe9, - 0xa1, 0xc4, 0xb4, 0xab, 0xd5, 0x8d, 0x25, 0x49, 0xde, 0x4d, - 0x2d, 0xd7, 0x53, 0x48, 0x63, 0xe3, 0x39, 0x28, 0xa8, 0xee, - 0x7d, 0x3f, 0x45, 0x14, 0x57, 0xd9, 0x1e, 0xa8, 0x51, 0x45, - 0x14, 00, 0x51, 0x5c, 0xf7, 0x88, 0xfc, 0x7f, 0xa0, 0x78, - 0x4f, 0x8d, 0x4f, 0x52, 0x86, 0x9, 0x7f, 0xe7, 0x8a, 0xe5, - 0xe4, 0xff, 00, 0xbe, 0x57, 0x26, 0xbc, 0xef, 0x5b, 0xfd, - 0xa5, 0x74, 0xcb, 0x70, 0xcb, 0xa5, 0xe9, 0x97, 0x17, 0x6f, - 0xd9, 0xee, 0x18, 0x44, 0xbf, 0x90, 0xc9, 0xfe, 0x55, 0xe6, - 0xe2, 0x33, 0x2c, 0x26, 0x17, 0x4a, 0xb5, 0x12, 0x7d, 0xb7, - 0x7f, 0x72, 0x39, 0xe7, 0x5e, 0x95, 0x3f, 0x8a, 0x47, 0xb2, - 0xd1, 0x5f, 0x34, 0x5f, 0x7e, 0xd1, 0x9e, 0x26, 0xb8, 0x63, - 0xf6, 0x78, 0x2c, 0x2d, 0x13, 0xb6, 0x22, 0x67, 0x23, 0xf1, - 0x2d, 0x8f, 0xd2, 0xb1, 0xae, 0x3e, 0x37, 0xf8, 0xce, 0x72, - 0x7f, 0xe2, 0x6d, 0xe5, 0x3, 0xda, 0x38, 0x23, 0x18, 0xff, - 00, 0xc7, 0x6b, 0xc5, 0x9f, 0x13, 0x60, 0x63, 0xf0, 0xa9, - 0x3f, 0x97, 0xf9, 0xb4, 0x72, 0x3c, 0xc2, 0x8a, 0xda, 0xec, - 0xfa, 0xbc, 0x8c, 0xd2, 0x79, 0x63, 0xdf, 0xf3, 0x35, 0xf2, - 0x2b, 0x7c, 0x5d, 0xf1, 0x83, 0x1c, 0x9d, 0x76, 0xe4, 0x7d, - 0x2, 0x8f, 0xe9, 0x52, 0x45, 0xf1, 0x8b, 0xc6, 0x31, 0x1c, - 0x8d, 0x72, 0x63, 0xfe, 0xf4, 0x68, 0xdf, 0xcd, 0x6b, 0xf, - 0xf5, 0xa3, 0x9, 0xfc, 0x92, 0xfc, 0x3f, 0xcc, 0x9f, 0xed, - 0x1a, 0x7d, 0x99, 0xf5, 0xc5, 0x15, 0xf2, 0xb5, 0xb7, 0xc7, - 0x9f, 0x18, 0xdb, 0xfd, 0xeb, 0xf8, 0x6e, 0x3f, 0xeb, 0xad, - 0xba, 0x7f, 0x40, 0x2b, 0x7f, 0x4d, 0xfd, 0xa5, 0x75, 0xa8, - 0x58, 0xb, 0xed, 0x32, 0xce, 0xe9, 0x7b, 0xf9, 0x25, 0xa2, - 0x3f, 0xa9, 0x61, 0x5d, 0x54, 0xf8, 0x93, 0x1, 0x3f, 0x8a, - 0xeb, 0xd5, 0x7f, 0x95, 0xcd, 0x16, 0x3e, 0x8b, 0xde, 0xe8, - 0xfa, 0x2a, 0x8a, 0xf2, 0xdd, 0x17, 0xf6, 0x87, 0xf0, 0xd6, - 0xa3, 0xb5, 0x6f, 0x52, 0xeb, 0x4c, 0x90, 0xf5, 0x32, 0x26, - 0xf4, 0xfc, 0xd7, 0x27, 0xf4, 0xaf, 0x45, 0xd2, 0xb5, 0x9b, - 0x1d, 0x72, 0xd5, 0x6e, 0x74, 0xfb, 0xb8, 0x6f, 0x20, 0x6e, - 0x8f, 0xb, 0x86, 0x1f, 0x8f, 0xa5, 0x7b, 0x98, 0x7c, 0x6e, - 0x1f, 0x15, 0xfc, 0x19, 0xa9, 0x7e, 0x7f, 0x76, 0xe7, 0x64, - 0x2a, 0xd3, 0xa9, 0xf0, 0x3b, 0x97, 0x68, 0xa2, 0x8a, 0xed, - 0x35, 0xa, 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa2, 0x80, 0xa, - 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa6, 0xbc, 0x8b, 0x12, 0x96, - 0x76, 0x8, 0xa3, 0xa9, 0x63, 0x81, 0x40, 0xe, 0xa2, 0xb0, - 0xb5, 0xf, 0x1d, 0xf8, 0x77, 0x4b, 0x24, 0x5d, 0x6b, 0x56, - 0x30, 0xb0, 0xea, 0xa6, 0x75, 0x27, 0xf2, 0x7, 0x35, 0x8b, - 0x71, 0xf1, 0xa7, 0xc1, 0xb6, 0xe7, 0x7, 0x5a, 0x47, 0xff, - 00, 0xae, 0x70, 0xc8, 0xff, 00, 0xc9, 0x6b, 0x92, 0x78, - 0xbc, 0x35, 0x3d, 0x27, 0x52, 0x2b, 0xd5, 0xa3, 0x27, 0x56, - 0x9c, 0x77, 0x92, 0xfb, 0xce, 0xde, 0x98, 0x5d, 0xb3, 0xf7, - 0xf, 0xe6, 0x2b, 0x82, 0x3f, 0x1d, 0xfc, 0x18, 0xf, 0xfc, - 0x84, 0xe4, 0x3f, 0xf6, 0xed, 0x2f, 0xff, 00, 0x13, 0x4a, - 0xbf, 0x1d, 0x7c, 0x18, 0xc7, 0xfe, 0x42, 0x8e, 0x3e, 0xb6, - 0xb2, 0xff, 00, 0xf1, 0x35, 0x8f, 0xf6, 0x8e, 0xb, 0xfe, - 0x7f, 0x47, 0xff, 00, 0x2, 0x44, 0xfb, 0x7a, 0x5f, 0xce, - 0xbe, 0xf3, 0xbe, 0xc9, 0xc7, 0x4a, 0x4d, 0xc7, 0xfb, 0xa7, - 0xf4, 0xae, 0x3e, 0xdf, 0xe3, 0xf, 0x83, 0xae, 0x7e, 0xee, - 0xb9, 0x2, 0x7f, 0xd7, 0x45, 0x74, 0xfe, 0x60, 0x56, 0xcd, - 0x8f, 0x8c, 0xb4, 0x1d, 0x4f, 0x1f, 0x65, 0xd6, 0x2c, 0x67, - 0x27, 0xa0, 0x59, 0xd7, 0x3f, 0x96, 0x6b, 0x78, 0x62, 0xb0, - 0xf5, 0x3e, 0xa, 0x89, 0xfa, 0x34, 0x5a, 0xa9, 0x9, 0x6d, - 0x24, 0x6c, 0xd1, 0x4d, 0x47, 0x59, 0x17, 0x2a, 0xc1, 0x87, - 0xa8, 0x39, 0xa7, 0x57, 0x51, 0xa0, 0x51, 0x45, 0x30, 0x31, - 0xf3, 0x4a, 0x9e, 0x98, 0xc8, 0x34, 00, 0xfa, 0x28, 0xa2, - 0x80, 0xa, 0x82, 0xf5, 0xfc, 0xbb, 0x39, 0xdb, 0xd1, 0x9, - 0xfd, 0x2a, 0x7a, 0xa3, 0xad, 0xbf, 0x97, 0xa4, 0x5d, 0xb1, - 0x38, 0xc4, 0x66, 0xa6, 0x4e, 0xc9, 0xb1, 0x3d, 0x13, 0x3e, - 0x1c, 0xf8, 0xdf, 0x37, 0xda, 0x3c, 0x49, 0x28, 0xeb, 0x82, - 0x6b, 0x2f, 0xf6, 0x63, 0xf8, 0x99, 0x27, 0xc3, 0x6f, 0x8d, - 0x16, 0xba, 0x44, 0xf2, 0x95, 0xd1, 0x3c, 0x4a, 0x45, 0xa4, - 0x88, 0x71, 0x84, 0xb8, 0x19, 0xf2, 0x9f, 0xdb, 0xba, 0x9f, - 0xf7, 0x85, 0x49, 0xf1, 0x56, 0x7f, 0x3f, 0xc4, 0xd7, 0x3d, - 0xf0, 0x4d, 0x78, 0x7, 0xc5, 0x7b, 0x89, 0x2c, 0xb4, 0xe1, - 0x75, 0x6e, 0xed, 0x15, 0xcd, 0xbb, 0x9, 0xa2, 0x91, 0x4e, - 0xa, 0xba, 0x9c, 0xa9, 0x1f, 0x88, 0xaf, 0xce, 0x32, 0xfa, - 0xce, 0x38, 0xc9, 0x49, 0x77, 0x67, 0xe3, 0x98, 0xbc, 0x4c, - 0xb0, 0xd9, 0xac, 0x31, 0x11, 0xe9, 0x24, 0xbe, 0x4f, 0x46, - 0x7e, 0xc0, 0x51, 0x5c, 0x1f, 0x80, 0xfe, 0x28, 0xe9, 0x5e, - 0x21, 0xf0, 0x37, 0x87, 0x75, 0x59, 0x2e, 0xcb, 0x49, 0x7d, - 0xa7, 0x5b, 0x5c, 0xb1, 0x2a, 0x72, 0x4b, 0xc4, 0xac, 0x7f, - 0x9d, 0x15, 0xfa, 0x45, 0xcf, 0xd8, 0xee, 0x99, 0xde, 0x51, - 0x45, 0x14, 0xc6, 0x14, 0x51, 0x45, 00, 0x15, 0x53, 0x56, - 0xd4, 0xed, 0xf4, 0x5d, 0x2e, 0xee, 0xfe, 0xea, 0x41, 0x15, - 0xb5, 0xb4, 0x4d, 0x2c, 0x8e, 0x7b, 0x2a, 0x8c, 0x9a, 0xb7, - 0x5e, 0x2b, 0xfb, 0x55, 0x78, 0xc4, 0x68, 0x1f, 0xf, 0x86, - 0x93, 0x13, 0xe2, 0xeb, 0x58, 0x93, 0xca, 0xc0, 0xff, 00, - 0x9e, 0x4b, 0x86, 0x73, 0xff, 00, 0xa0, 0x8f, 0xc6, 0xb9, - 0xb1, 0x35, 0x96, 0x1e, 0x8c, 0xaa, 0xbe, 0x88, 0xe4, 0xc5, - 0xd7, 0x58, 0x5a, 0x13, 0xac, 0xfa, 0x2f, 0xf8, 0x63, 0xe4, - 0xcf, 0x12, 0xeb, 0x93, 0xf8, 0xa7, 0xc4, 0x7a, 0x8e, 0xad, - 0x71, 0x8f, 0x3e, 0xfa, 0xe1, 0xe6, 0x60, 0x3a, 0xc, 0x9e, - 00, 0xf6, 0x3, 0x2, 0xbe, 0xc2, 0xfd, 0x9b, 0x3c, 0x23, - 0xff, 00, 0x8, 0xe7, 0x80, 0xa3, 0xb9, 0x91, 0x36, 0xdc, - 0x5e, 0xb1, 0x90, 0xe4, 0x73, 0xb7, 0xb5, 0x7c, 0x91, 0xe0, - 0x6f, 0xf, 0xc9, 0xe2, 0x6f, 0x14, 0x69, 0xda, 0x7c, 0x6a, - 0x5b, 0xcd, 0x95, 0x41, 0xc7, 0xa6, 0x79, 0xaf, 0xd0, 0x8d, - 0x32, 0xc2, 0x2d, 0x2f, 0x4f, 0xb7, 0xb4, 0x85, 0x42, 0x47, - 0xa, 0x4, 0x50, 0x3d, 0x85, 0x7c, 0x6e, 0x43, 0x45, 0xd6, - 0xaf, 0x3c, 0x4c, 0xfa, 0x7e, 0x6c, 0xf8, 0xfe, 0x1d, 0xa0, - 0xea, 0x4e, 0x78, 0xa9, 0xef, 0xfa, 0xbd, 0xcb, 0x54, 0x51, - 0x45, 0x7d, 0xd9, 0xf7, 0x61, 0x45, 0x14, 0x50, 0x1, 0x5f, - 0x98, 0xbf, 0xf0, 0x5b, 0x2f, 0x1d, 0xdc, 0x5a, 0xf8, 0x77, - 0xe1, 0xaf, 0x83, 0x62, 0x25, 0x6d, 0xaf, 0x6e, 0x6e, 0xb5, - 0x59, 0xf0, 0x48, 0xc9, 0x89, 0x52, 0x34, 0x7, 0xd4, 0x7e, - 0xf9, 0xcf, 0xe1, 0x5f, 0xa7, 0x55, 0xf9, 0xe5, 0xff, 00, - 0x5, 0x88, 0xf8, 0x15, 0xab, 0x78, 0xf7, 0xe1, 0x97, 0x86, - 0x3c, 0x79, 0xa2, 0x59, 0xcd, 0x7f, 0x2f, 0x85, 0xa6, 0x9a, - 0x2b, 0xf8, 0x60, 0x42, 0xcc, 0x96, 0x93, 0x5, 0x26, 0x5c, - 0xe, 0x70, 0x8f, 0x1a, 0xe7, 0xd0, 0x31, 0x3d, 0xa8, 0x13, - 0xd8, 0xf8, 0x57, 0xfe, 0x9, 0xbb, 0xf1, 0x4b, 0xc1, 0xff, - 00, 0x8, 0x7f, 0x6a, 0x4d, 0x1f, 0x5d, 0xf1, 0xb5, 0xec, - 0x1a, 0x5e, 0x92, 0xf6, 0x37, 0x36, 0x91, 0xea, 0x17, 0x23, - 0xf7, 0x56, 0xd3, 0xc8, 0xa0, 0x23, 0xb1, 0xfe, 0x10, 0x40, - 0x65, 0xdd, 0xdb, 0x77, 0x3c, 0x57, 0xe8, 0x87, 0xfc, 0x15, - 0x1f, 0xf6, 0x8d, 0xd2, 0x7c, 0x31, 0xfb, 0x2e, 0x36, 0x8b, - 0xe1, 0xed, 0x62, 0xcf, 0x51, 0xbb, 0xf1, 0xb4, 0xc2, 0xc2, - 0x29, 0x6c, 0xae, 0x16, 0x55, 0xfb, 0x2a, 0xe1, 0xe7, 0x70, - 0x54, 0x91, 0x82, 0x36, 0xa7, 0xfd, 0xb4, 0xaf, 0xc4, 0xea, - 0x37, 0x12, 00, 0xc9, 0xc0, 0xe8, 0x2a, 0xac, 0x45, 0xcf, - 0xb5, 0x7f, 0xe0, 0x94, 0x9f, 0xc, 0xb4, 0xcf, 0x13, 0xfe, - 0xd0, 0x57, 0x3e, 0x35, 0xd7, 0xee, 0x6d, 0xac, 0xf4, 0x4f, - 0x5, 0x59, 0x1b, 0xe3, 0x3d, 0xe4, 0x8b, 0x1c, 0x42, 0xe6, - 0x4c, 0xa4, 0x59, 0x66, 0xc0, 0xe0, 0x79, 0x8d, 0xf5, 0x51, - 0x5e, 0xd9, 0xff, 00, 0x5, 0x2f, 0xff, 00, 0x82, 0x80, - 0xf8, 0x77, 0xc6, 0x7e, 0x11, 0xbb, 0xf8, 0x4f, 0xf0, 0xd7, - 0x53, 0x8f, 0x59, 0xb6, 0xbe, 0x64, 0x3a, 0xd6, 0xbd, 0x65, - 0x29, 0x30, 0x6c, 0x56, 0xd, 0xf6, 0x78, 0x98, 0x7d, 0xfc, - 0x90, 0x37, 0x30, 0xf9, 0x71, 0xc7, 0x39, 0x38, 0xfc, 0xc0, - 0x12, 0xba, 0xc6, 0xd1, 0x87, 0x61, 0x1b, 0x10, 0x59, 0x1, - 0xe0, 0x91, 0xd3, 0x22, 0xbd, 0x33, 0xe0, 0x1f, 0xec, 0xe5, - 0xe3, 0x9f, 0xda, 0x43, 0xc6, 0x50, 0x78, 0x7f, 0xc1, 0xba, - 0x4c, 0x97, 0x44, 0xb7, 0xfa, 0x4e, 0xa3, 0x2a, 0x95, 0xb4, - 0xb3, 0x4e, 0xed, 0x2c, 0x98, 0xc0, 0xf6, 0x1d, 0x4f, 0x60, - 0x68, 0xb, 0xf4, 0x3b, 0xbf, 0xd8, 0x3f, 0xf6, 0x70, 0x9f, - 0xf6, 0x92, 0xf8, 0xff, 00, 0xa3, 0x69, 0x33, 0xc2, 0xe7, - 0xc3, 0x7a, 0x53, 0x2e, 0xa7, 0xac, 0x4e, 0x17, 0x2a, 0x21, - 0x46, 0x5, 0x62, 0xcf, 0x4c, 0xc8, 0xd8, 0x5c, 0x7a, 0x16, - 0x3d, 0xab, 0xfa, 0xd, 0x44, 0x58, 0x91, 0x51, 0x14, 0x2a, - 0xa8, 0xc0, 0x3, 0xa0, 0x15, 0xe2, 0xff, 00, 0xb2, 0x8f, - 0xec, 0xb7, 0xe1, 0xaf, 0xd9, 0x53, 0xe1, 0xa4, 0x3e, 0x1b, - 0xd1, 0x7f, 0xd3, 0x35, 0x3b, 0x82, 0x27, 0xd5, 0x75, 0x67, - 0x5c, 0x49, 0x79, 0x3e, 0x31, 0x9f, 0x64, 0x1d, 0x15, 0x7b, - 0xf, 0x72, 0x4d, 0x7b, 0x43, 0xba, 0xc6, 0x8c, 0xec, 0x42, - 0xaa, 0x8c, 0x92, 0x7b, 0xa, 0x96, 0xcb, 0x4a, 0xc7, 0x81, - 0xfe, 0xd2, 0x9e, 0x23, 0x13, 0x5e, 0xe9, 0x9a, 0x24, 0x6f, - 0x91, 0x8, 0x37, 0x33, 0x1, 0xfd, 0xe3, 0xc2, 0x8f, 0xcb, - 0x77, 0xe7, 0x5e, 0x25, 0x5b, 0xbe, 0x39, 0xd7, 0xcf, 0x8a, - 0x3c, 0x5b, 0xaa, 0x6a, 0x79, 0x26, 0x39, 0xa6, 0x3e, 0x5e, - 0x7f, 0xb8, 0x3e, 0x55, 0xfd, 00, 0xac, 0x2a, 0xfc, 0x4b, - 0x33, 0xc4, 0xfd, 0x6f, 0x17, 0x52, 0xaf, 0x4b, 0xe9, 0xe8, - 0xb4, 0x47, 0xc9, 0x62, 0x2a, 0x7b, 0x5a, 0xb2, 0x90, 0x51, - 0x45, 0x15, 0xe6, 0x18, 0x16, 0xec, 0x74, 0x8b, 0xed, 0x50, - 0x39, 0xb3, 0xb2, 0xb8, 0xbb, 0x9, 0x8d, 0xde, 0x44, 0x4c, - 0xfb, 0x73, 0xd3, 0x38, 0x1c, 0x54, 0xd2, 0x78, 0x6f, 0x57, - 0x88, 0x65, 0xf4, 0xab, 0xd4, 0x1e, 0xad, 0x6c, 0xe3, 0xfa, - 0x57, 0xd2, 0x1f, 00, 0x74, 0xf, 0xec, 0x8f, 0x2, 0x47, - 0x74, 0xe9, 0xb6, 0x6d, 0x42, 0x56, 0x9c, 0x92, 0x39, 0xd8, - 0x3e, 0x55, 0xfd, 0x1, 0x3f, 0x8d, 0x7a, 0x55, 0x7d, 0xd6, - 0x13, 0x86, 0xa3, 0x88, 0xc3, 0xc2, 0xac, 0xea, 0x34, 0xe4, - 0xaf, 0x6b, 0x77, 0x3d, 0x8a, 0x58, 0x5, 0x38, 0x29, 0x39, - 0x5a, 0xe7, 0xc3, 0x12, 0xc1, 0x2c, 0x7, 0x12, 0xc6, 0xf1, - 0x9f, 0x47, 0x52, 0x2a, 0x3a, 0xfb, 0x96, 0xe2, 0xce, 0xde, - 0xed, 0xa, 0x4f, 0x4, 0x73, 0x21, 0xfe, 0x19, 0x10, 0x30, - 0xfd, 0x6b, 0x8c, 0xf1, 0x3f, 0xc1, 0xaf, 0xc, 0xf8, 0x8e, - 0xde, 0x40, 0x96, 0x11, 0xe9, 0xb7, 0x44, 0x1d, 0xb7, 0x16, - 0x6a, 0x10, 0x83, 0xee, 0xa3, 0x83, 0xf9, 0x54, 0xd6, 0xe1, - 0x6a, 0xb1, 0x57, 0xa3, 0x51, 0x3f, 0x26, 0xad, 0xfe, 0x62, - 0x9e, 0x5d, 0x24, 0xbd, 0xd9, 0x5c, 0xf9, 0x36, 0x8a, 0xd4, - 0xf1, 0x3f, 0x87, 0xae, 0x7c, 0x2b, 0xaf, 0x5e, 0x69, 0x57, - 0x78, 0x33, 0x5b, 0x3e, 0xd2, 0xcb, 0xd1, 0x81, 0x19, 0xc, - 0x3e, 0xa0, 0x83, 0x59, 0x75, 0xf1, 0x53, 0x84, 0xa9, 0xc9, - 0xc2, 0x4a, 0xcd, 0x68, 0x79, 0x2d, 0x34, 0xec, 0xc2, 0x8a, - 0x28, 0xa8, 0x11, 0xe9, 0xbf, 00, 0x3c, 0x49, 0x36, 0x93, - 0xe3, 0x68, 0xf4, 0xed, 0xc7, 0xec, 0xba, 0x8a, 0x32, 0x32, - 0x76, 0xe, 0xa0, 0xb2, 0x9f, 0xd0, 0x8f, 0xc6, 0xbe, 0x9e, - 0xaf, 0x92, 0xbe, 0xb, 0xda, 0x3d, 0xdf, 0xc4, 0xad, 0x1b, - 0x68, 0x24, 0x46, 0xcf, 0x23, 0x11, 0xd8, 0x4, 0x6f, 0xfe, - 0xb5, 0x7d, 0x6b, 0x5f, 0xa9, 0xf0, 0xcc, 0xe7, 0x2c, 0x13, - 0x52, 0xd9, 0x49, 0xdb, 0xee, 0x4c, 0xfa, 0x2c, 0xbd, 0xb7, - 0x49, 0xa7, 0xdc, 0xa5, 0xad, 0xea, 0x71, 0xe8, 0xda, 0x3d, - 0xed, 0xfc, 0xa7, 0x11, 0xdb, 0x42, 0xf2, 0x9c, 0xff, 00, - 0xb2, 0x9, 0xaf, 0x89, 0xae, 0xae, 0x64, 0xbd, 0xb9, 0x9a, - 0xe2, 0x56, 0xdd, 0x2c, 0xae, 0x64, 0x76, 0xf5, 0x24, 0xe4, - 0xd7, 0xda, 0x3e, 0x28, 0xf0, 0xf4, 0x3e, 0x2a, 0xd0, 0xee, - 0x74, 0xbb, 0x89, 0xa6, 0x82, 0xb, 0x80, 0x3, 0xbc, 0x4, - 0x6, 0xc0, 0x20, 0xe3, 0x90, 0x7d, 0x2b, 0xcd, 0xa4, 0xfd, - 0x9a, 0xb4, 0x16, 0xfb, 0x9a, 0x9e, 0xa0, 0xbf, 0x52, 0x87, - 0xff, 00, 0x65, 0xa8, 0xcf, 0x72, 0xfc, 0x5e, 0x61, 0x28, - 0x2a, 0x9, 0x72, 0xc6, 0xfd, 0x7a, 0xb1, 0x63, 0x28, 0x55, - 0xac, 0xd7, 0x22, 0xd1, 0x1f, 0x39, 0x51, 0x5f, 0x42, 0x49, - 0xfb, 0x33, 0x69, 0x87, 0xee, 0x6b, 0x57, 0x6b, 0xfe, 0xf4, - 0x6a, 0x6a, 0xb4, 0x9f, 0xb3, 0x1c, 0x7, 0xee, 0x6b, 0xf2, - 0xf, 0xf7, 0xad, 0x81, 0xff, 00, 0xd9, 0xab, 0xe4, 0x9f, - 0xf, 0xe6, 0x2b, 0xec, 0x7e, 0x2b, 0xfc, 0xcf, 0x33, 0xea, - 0x55, 0xfb, 0x7e, 0x27, 0x82, 0x51, 0x5e, 0x9b, 0xf1, 0x17, - 0xe0, 0xd2, 0x78, 0x3, 0x42, 0x1a, 0x8b, 0x6b, 0x3f, 0x6b, - 0x2f, 0x32, 0xc2, 0x90, 0xfd, 0x9f, 0x61, 0x62, 0x72, 0x7a, - 0xee, 0x3d, 00, 0x3d, 0xab, 0xcc, 0xab, 0xc7, 0xc4, 0xe1, - 0x6b, 0x60, 0xea, 0x7b, 0x2a, 0xca, 0xcf, 0xe4, 0xff, 00, - 0x23, 0x96, 0xa5, 0x39, 0x52, 0x97, 0x2c, 0xd6, 0xa1, 0x45, - 0x14, 0x57, 0x21, 0x98, 0x51, 0x45, 0x7a, 0x44, 0x1f, 00, - 0x7c, 0x55, 0x73, 0x6b, 0xd, 0xc4, 0x6b, 0x66, 0x56, 0x54, - 0x59, 0x2, 0x99, 0xc8, 0x20, 0x11, 0x9c, 0x1e, 0x3a, 0xd7, - 0x55, 0xc, 0x2d, 0x7c, 0x4d, 0xfd, 0x8c, 0x1c, 0xad, 0xbd, - 0x8d, 0x21, 0x4e, 0x75, 0x3e, 0x5, 0x73, 0xcd, 0xe8, 0xaf, - 0x46, 0x93, 0xe0, 0xf, 0x8c, 0x13, 0xa5, 0xa5, 0xb3, 0xff, - 00, 0xbb, 0x72, 0xb5, 0x56, 0x5f, 0x81, 0xfe, 0x32, 0x8b, - 0xa6, 0x94, 0x1f, 0xfd, 0xcb, 0x88, 0xff, 00, 0xf8, 0xaa, - 0xe8, 0x79, 0x6e, 0x35, 0x6f, 0x46, 0x5f, 0x73, 0x2f, 0xd8, - 0x55, 0x5f, 0x65, 0xfd, 0xc7, 0x7, 0x5e, 0xd3, 0xfb, 0x34, - 0x69, 0x3e, 0x6e, 0xaf, 0xab, 0xea, 0x4c, 0xbc, 0x43, 0xa, - 0xc0, 0x8d, 0xee, 0xc7, 0x27, 0xf4, 0x51, 0xf9, 0xd7, 0x12, - 0xff, 00, 0x7, 0x3c, 0x64, 0x9d, 0x74, 0x29, 0x8f, 0xfb, - 0xb2, 0x46, 0x7f, 0xf6, 0x6a, 0xf7, 0x9f, 0x82, 0x9e, 0x12, - 0xb9, 0xf0, 0x9f, 0x83, 0x84, 0x77, 0xd0, 0x1b, 0x6b, 0xeb, - 0x89, 0x9e, 0x59, 0x63, 0x6e, 0xab, 0xfc, 0x2a, 0xf, 0xe0, - 0x33, 0xf8, 0xd7, 0xb7, 0x91, 0xe0, 0x2b, 0xac, 0x74, 0x67, - 0x56, 0xd, 0x28, 0xdd, 0xea, 0x9a, 0xf2, 0xfd, 0x4e, 0xbc, - 0x1d, 0x19, 0xfb, 0x64, 0xe4, 0xad, 0x63, 0xbf, 0xa2, 0x8a, - 0xf3, 0x4f, 0x8a, 0xff, 00, 0x17, 0xa0, 0xf0, 0x54, 0x6d, - 0xa7, 0x69, 0xfb, 0x6e, 0x35, 0xa7, 0x5c, 0xf3, 0xca, 0x40, - 0xf, 0x76, 0xf5, 0x3e, 0x83, 0xf3, 0xf7, 0xfd, 0x27, 0x13, - 0x89, 0xa5, 0x84, 0xa4, 0xea, 0xd6, 0x76, 0x48, 0xf7, 0xea, - 0x54, 0x8d, 0x28, 0xf3, 0x49, 0xe8, 0x74, 0xde, 0x33, 0xf8, - 0x83, 0xa3, 0xf8, 0x1a, 0xd3, 0xcc, 0xd4, 0x2e, 0x33, 0x70, - 0xcb, 0x98, 0xad, 0x63, 0xe6, 0x59, 0x3e, 0x83, 0xb0, 0xf7, - 0x3c, 0x57, 0xcf, 0xde, 0x32, 0xf8, 0xe3, 0xaf, 0xf8, 0xa3, - 0x7c, 0x36, 0xaf, 0xfd, 0x91, 0x62, 0x4f, 0xfa, 0xbb, 0x66, - 0x3e, 0x63, 0xf, 0xf6, 0x9f, 0xaf, 0xe5, 0x8a, 0xe1, 0x35, - 0x3d, 0x4e, 0xef, 0x59, 0xbd, 0x96, 0xf2, 0xfa, 0xe2, 0x4b, - 0xab, 0x99, 0x4e, 0x5e, 0x49, 0xe, 0x49, 0xff, 00, 0x3e, - 0x95, 0x56, 0xbf, 0x2f, 0xcc, 0x33, 0xec, 0x46, 0x31, 0xb8, - 0x53, 0x7c, 0x90, 0xec, 0xb7, 0x7e, 0xac, 0xf9, 0xda, 0xf8, - 0xca, 0x95, 0x74, 0x8e, 0x88, 0x57, 0x76, 0x91, 0x8b, 0x33, - 0x16, 0x62, 0x72, 0x49, 0x39, 0x26, 0x92, 0x8a, 0x2b, 0xe6, - 0x4e, 00, 0xa2, 0x8a, 0x96, 0xde, 0xd2, 0x7b, 0xc7, 0xd9, - 0x4, 0x32, 0x4e, 0xdf, 0xdd, 0x8d, 0xb, 0x1f, 0xd2, 0x9a, - 0x4d, 0xbb, 0x20, 0x22, 0xa2, 0xb5, 0x47, 0x84, 0xb5, 0xc2, - 0x32, 0x34, 0x5d, 0x47, 0x1e, 0xbf, 0x64, 0x93, 0xfc, 0x2a, - 0x95, 0xd6, 0x9f, 0x75, 0x62, 0x71, 0x73, 0x6d, 0x35, 0xb9, - 0xf4, 0x96, 0x32, 0xbf, 0xce, 0xae, 0x54, 0xe7, 0x15, 0x79, - 0x45, 0xaf, 0x90, 0xdc, 0x5a, 0xdd, 0x15, 0xe8, 0xa2, 0x8a, - 0xcc, 0x41, 0x57, 0x34, 0xad, 0x66, 0xfb, 0x43, 0xba, 0x5b, - 0x9d, 0x3e, 0xee, 0x6b, 0x39, 0xd4, 0xe7, 0x7c, 0x2e, 0x57, - 0x3f, 0x5f, 0x5f, 0xa1, 0xaa, 0x74, 0x55, 0x46, 0x4e, 0x2f, - 0x9a, 0x2e, 0xcc, 0x13, 0x6b, 0x54, 0x7b, 0xef, 0xc3, 0xef, - 0xda, 0x9, 0x2e, 0xe5, 0x8e, 0xc7, 0xc4, 0xc1, 0x20, 0x73, - 0x85, 0x5b, 0xf8, 0xc6, 0x14, 0x9f, 0xf6, 0xc7, 0x6f, 0xa8, - 0xe3, 0xd8, 0x57, 0xb6, 0x47, 0x22, 0x4d, 0x1a, 0xc9, 0x1b, - 0x7, 0x46, 0x19, 0x56, 0x53, 0x90, 0x47, 0xa8, 0x35, 0xf0, - 0xb5, 0x7a, 0xc7, 0xc1, 0x9f, 0x8b, 0x12, 0x78, 0x76, 0xf2, - 0x1d, 0x17, 0x55, 0x98, 0xbe, 0x93, 0x2b, 0x6d, 0x8a, 0x47, - 0x3f, 0xf1, 0xee, 0xc7, 0xa7, 0x3f, 0xdd, 0x3f, 0xa7, 0xe7, - 0x5f, 0x77, 0x94, 0x67, 0xf2, 0xe6, 0x58, 0x7c, 0x63, 0xba, - 0x7b, 0x4b, 0xfc, 0xff, 00, 0xcf, 0xef, 0x3d, 0x9c, 0x2e, - 0x35, 0xdd, 0x42, 0xaf, 0xde, 0x7d, 0x27, 0x45, 0x20, 0x20, - 0x8c, 0x8e, 0x41, 0xa5, 0xaf, 0xd0, 0xcf, 0x70, 0x28, 0xa2, - 0xaa, 0xea, 0x7a, 0x9d, 0xb6, 0x8d, 0xa7, 0xcf, 0x7b, 0x79, - 0x32, 0xc1, 0x6d, 0x2, 0x17, 0x92, 0x46, 0xe8, 00, 0xa4, - 0xda, 0x8a, 0xbb, 0xd8, 0x4d, 0xdb, 0x56, 0x59, 0x66, 0x8, - 0xa5, 0x98, 0x80, 0x7, 0x24, 0x9e, 0xd5, 0xe6, 0xfe, 0x30, - 0xf8, 0xed, 0xa0, 0x78, 0x6f, 0x7c, 0x36, 0x4d, 0xfd, 0xb1, - 0x7a, 0x38, 0xd9, 0x6e, 0xd8, 0x8d, 0x4f, 0xbb, 0xf4, 0xfc, - 0xb3, 0x5e, 0x45, 0xf1, 0x27, 0xe3, 0x16, 0xa1, 0xe3, 0x29, - 0xe5, 0xb4, 0xb1, 0x79, 0x2c, 0x34, 0x60, 0x70, 0x22, 0x53, - 0x87, 0x98, 0x7a, 0xb9, 0x1d, 0xbf, 0xd9, 0xe9, 0xf5, 0xaf, - 0x3a, 0xaf, 0x80, 0xcc, 0x78, 0x95, 0xa6, 0xe9, 0xe0, 0xd7, - 0xfd, 0xbc, 0xff, 00, 0x45, 0xfe, 0x7f, 0x71, 0xe2, 0xd7, - 0xc7, 0xbb, 0xf2, 0xd2, 0xfb, 0xcf, 0x47, 0xf1, 0x7, 0xc7, - 0xbf, 0x14, 0x6b, 0x3b, 0x92, 0xda, 0x68, 0xb4, 0xa8, 0x4f, - 0xf0, 0xda, 0xaf, 0xcd, 0xff, 00, 0x7d, 0x36, 0x4f, 0xe5, - 0x8a, 0xe1, 0x6f, 0xf5, 0xad, 0x43, 0x54, 0x62, 0xd7, 0x97, - 0xd7, 0x37, 0x64, 0xf7, 0x9a, 0x56, 0x7f, 0xe6, 0x6a, 0x95, - 0x15, 0xf1, 0x75, 0xf1, 0x98, 0x8c, 0x4b, 0xbd, 0x69, 0xb7, - 0xf3, 0xfd, 0xf, 0x26, 0x75, 0x67, 0x53, 0xe2, 0x77, 0xa, - 0x28, 0xa2, 0xb8, 0xcc, 0xc2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, - 0x28, 0xa0, 0xb, 0x76, 0x7a, 0xbd, 0xf6, 0x9c, 0xc1, 0xad, - 0x6f, 0x6e, 0x2d, 0x88, 0xef, 0xc, 0xac, 0x9f, 0xc8, 0xd7, - 0x5b, 0xa2, 0x7c, 0x68, 0xf1, 0x6e, 0x8a, 0x55, 0x57, 0x53, - 0x6b, 0xd8, 0xc7, 0x1e, 0x5d, 0xe2, 0x89, 0x33, 0xf8, 0xfd, - 0xef, 0xd6, 0xb8, 0x7a, 0xdb, 0xf0, 0x4e, 0x96, 0x75, 0xaf, - 0x17, 0x68, 0xf6, 0x41, 0x77, 0x9, 0x6e, 0xa3, 0xc, 0x3f, - 0xd9, 0x7, 0x2d, 0xfa, 0x3, 0x5d, 0xd8, 0x6a, 0xf8, 0x88, - 0x54, 0x8c, 0x68, 0xcd, 0xa6, 0xdd, 0xb4, 0x66, 0xb4, 0xe7, - 0x35, 0x24, 0xa0, 0xec, 0x7d, 0x8d, 0xa5, 0xcb, 0x71, 0x3e, - 0x9b, 0x6b, 0x25, 0xda, 0xaa, 0x5d, 0x3c, 0x4a, 0xd2, 0xaa, - 0xc, 00, 0xc4, 0xc, 0x81, 0xf8, 0xd5, 0x9c, 0x73, 0x9a, - 0x5a, 0x2b, 0xf7, 0x14, 0xac, 0x92, 0x3e, 0xbd, 0x5, 0x14, - 0x51, 0x4c, 0x61, 0x58, 0xfe, 0x2e, 0x97, 0xca, 0xf0, 0xed, - 0xeb, 0x74, 0xf9, 0xd, 0x6c, 0x57, 0x33, 0xf1, 0x12, 0x6f, - 0x27, 0xc2, 0xb7, 0x7d, 0xb2, 0x31, 0x58, 0xd6, 0x7c, 0xb4, - 0xe4, 0xfc, 0x8c, 0xea, 0x3b, 0x41, 0xb3, 0xe1, 0x4f, 0x88, - 0x13, 0x79, 0xde, 0x22, 0xbb, 0x6f, 0xf6, 0x8d, 0x78, 0x7, - 0xc6, 0x8b, 0x8f, 0x2f, 0x47, 0x9b, 0x9f, 0xe1, 0x35, 0xee, - 0x5e, 0x2e, 0x97, 0xcd, 0xd6, 0x6f, 0x1b, 0xfd, 0xb3, 0x5f, - 0x3c, 0x7c, 0x78, 0xb9, 0xf2, 0xb4, 0x6b, 0x9f, 0x68, 0xcf, - 0xf2, 0xaf, 0xcd, 0xb2, 0xc5, 0xcd, 0x5e, 0xfe, 0xa7, 0xe2, - 0x18, 0xbf, 0xde, 0xe3, 0xe9, 0xc7, 0xbc, 0xd7, 0xe6, 0x7e, - 0x94, 0xfc, 0xc, 0xf0, 0x98, 0x5f, 0x82, 0x7f, 0xf, 0x84, - 0x90, 0xb0, 0x90, 0x78, 0x7b, 0x4f, 0xd, 0x91, 0xce, 0x7e, - 0xcd, 0x1e, 0x68, 0xaf, 0x59, 0xf8, 0x75, 0x66, 0x2c, 0xfe, - 0x1f, 0x78, 0x62, 0xdc, 0xc6, 0x10, 0xc5, 0xa5, 0xda, 0xc7, - 0xb7, 0x1d, 0x31, 0x12, 0x8c, 0x51, 0x5f, 0xa6, 0x24, 0x7e, - 0xe0, 0xa3, 0xa1, 0xd1, 0xd1, 0x45, 0x15, 0x65, 0x85, 0x14, - 0x51, 0x40, 0x5, 0x7c, 0x4d, 0xfb, 0x4b, 0xf8, 0xc4, 0xf8, - 0xa3, 0xe2, 0x65, 0xcd, 0xac, 0x6e, 0x1a, 0xd3, 0x49, 0x51, - 0x69, 0x1e, 0x31, 0x8d, 0xfd, 0x5c, 0xe4, 0x7b, 0x9c, 0x7e, - 0x15, 0xf5, 0xdf, 0x8e, 0xfc, 0x51, 0xf, 0x82, 0xfc, 0x21, - 0xaa, 0xeb, 0x33, 0x9f, 0x96, 0xd2, 0x6, 0x75, 0x5c, 0xe3, - 0x73, 0xe3, 0xa, 0xa3, 0xdc, 0x9c, 0x57, 0xe7, 0x9b, 0xcb, - 0x3e, 0xa5, 0x7a, 0xf3, 0x4c, 0xc6, 0x5b, 0x9b, 0x89, 0xb, - 0xbb, 0x1e, 0xac, 0xcc, 0x72, 0x4f, 0xe6, 0x6b, 0xe4, 0x78, - 0x83, 0x13, 0xcb, 0x4e, 0x34, 0x17, 0x5d, 0x5f, 0xa2, 0x3e, - 0x33, 0x88, 0xf1, 0x36, 0x84, 0x30, 0xd1, 0xde, 0x5a, 0xbf, - 0x45, 0xb7, 0xe3, 0xf9, 0x1e, 0xfb, 0xfb, 0x27, 0x78, 0x3f, - 0xed, 0xba, 0xdd, 0xe6, 0xb5, 0x32, 0xe6, 0x3b, 0x65, 0xdb, - 0x1e, 0x47, 0xf1, 0x1a, 0xfa, 0xb6, 0xbc, 0xff, 00, 0xe0, - 0x77, 0x85, 0x7, 0x85, 0x7e, 0x1f, 0xe9, 0xf1, 0x32, 0x6d, - 0x9e, 0x75, 0xf3, 0xa4, 0xfa, 0x9a, 0xf4, 0xa, 0xf5, 0xf2, - 0xac, 0x3f, 0xd5, 0xb0, 0x90, 0x8b, 0xdd, 0xea, 0xfe, 0x67, - 0xd0, 0x65, 0xb8, 0x7f, 0xaa, 0xe1, 0x61, 0xe, 0xbb, 0xbf, - 0x98, 0x51, 0x45, 0x15, 0xeb, 0x9e, 0x98, 0x51, 0x45, 0x14, - 00, 0x53, 0x26, 0x86, 0x3b, 0x98, 0x64, 0x86, 0x68, 0xd6, - 0x58, 0xa4, 0x52, 0xae, 0x8e, 0x32, 0xac, 0xf, 0x4, 0x11, - 0xdc, 0x56, 0x5f, 0x8a, 0xfc, 0x5b, 0xa3, 0x78, 0x1b, 0xc3, - 0xf7, 0xba, 0xe7, 0x88, 0x35, 0x3b, 0x5d, 0x1f, 0x48, 0xb2, - 0x8c, 0xcb, 0x71, 0x7b, 0x79, 0x20, 0x8e, 0x38, 0xd4, 0x77, - 0x24, 0xd7, 0xe7, 0xf7, 0xc6, 0xdf, 0xf8, 0x2c, 0x9f, 0x82, - 0xfc, 0x31, 0x3c, 0xd6, 0x1f, 0xd, 0xbc, 0x39, 0x73, 0xe3, - 0xb, 0x84, 0x3b, 0x7f, 0xb4, 0xb5, 0x16, 0x36, 0x96, 0x9f, - 0x55, 0x5c, 0x19, 0x1f, 0xf1, 0xb, 0x40, 0x1e, 0x85, 0xf1, - 0x93, 0xfe, 0x9, 0x37, 0xf0, 0x6b, 0xe2, 0x76, 0xa3, 0x73, - 0xa9, 0xe8, 0x9f, 0xda, 0x3e, 0x3, 0xd4, 0x6e, 0x1c, 0xc9, - 0x20, 0xd2, 0x1d, 0x5e, 0xd4, 0xb1, 0xeb, 0xfb, 0x97, 0x4, - 0x2f, 0xd1, 0xa, 0x8a, 0xf0, 0xd9, 0xbf, 0xe0, 0x88, 0xb0, - 0xfd, 0xb3, 0x31, 0x7c, 0x58, 0x90, 0x5a, 0x67, 0xa3, 0xe8, - 0xa0, 0xc9, 0x8f, 0xa8, 0x9b, 0x15, 0xe2, 0x1a, 0xa7, 0xfc, - 0x16, 0xf, 0xe3, 0xc5, 0xf4, 0xcc, 0xd6, 0xd0, 0x78, 0x57, - 0x4e, 0x8c, 0xfd, 0xd4, 0x87, 0x4c, 0x76, 0xc7, 0xe2, 0xf2, - 0xb6, 0x6b, 0xed, 0xf, 0xf8, 0x26, 0xc7, 0xed, 0x35, 0xf1, - 0x77, 0xf6, 0xa3, 0x93, 0xc5, 0xba, 0xcf, 0x8e, 0x2e, 0xb4, - 0xb6, 0xf0, 0xde, 0x91, 0xe5, 0x5a, 0x5b, 0x8b, 0x1b, 0x11, - 0xb, 0xcb, 0x74, 0xff, 00, 0x33, 0x65, 0xb2, 0x78, 0x54, - 0x3, 0x81, 0xfd, 0xf1, 0x4f, 0x52, 0x74, 0x65, 0xf, 0x87, - 0x1f, 0xf0, 0x47, 0x3f, 0x84, 0x5e, 0x16, 0xb8, 0x4b, 0x8f, - 0x13, 0xeb, 0x1a, 0xef, 0x8c, 0xa4, 0x52, 0xf, 0x91, 0x2c, - 0xab, 0x67, 0x6e, 0x48, 0xf5, 0x58, 0xfe, 0x7f, 0xfc, 0x7e, - 0xbe, 0xd5, 0xf0, 0x27, 0xc3, 0xef, 0xd, 0xfc, 0x31, 0xf0, - 0xe5, 0xb6, 0x81, 0xe1, 0x4d, 0x12, 0xcb, 0x40, 0xd1, 0xed, - 0x86, 0x23, 0xb4, 0xb1, 0x88, 0x46, 0x83, 0xd4, 0x9c, 0x75, - 0x27, 0xb9, 0x39, 0x26, 0xbc, 0x43, 0xc5, 0x7f, 0xf0, 0x50, - 0xef, 0x80, 0xbe, 0x6, 0xf1, 0x76, 0xaf, 0xe1, 0x8d, 0x7b, - 0xc6, 0xaf, 0xa6, 0x6b, 0x5a, 0x55, 0xd4, 0x96, 0x77, 0x96, - 0xd2, 0xe9, 0x77, 0x67, 0xcb, 0x95, 0x1b, 0x6b, 0xd, 0xc2, - 0x22, 0xa7, 0x91, 0xd4, 0x1c, 0x1a, 0xf5, 0xbf, 0x84, 0xbf, - 0x19, 0xbc, 0x1d, 0xf1, 0xcf, 0xc2, 0xed, 0xe2, 0x2f, 0x3, - 0xeb, 0x51, 0xeb, 0xba, 0x3a, 0xdc, 0x35, 0xab, 0x5c, 0xc7, - 0x1b, 0xc6, 0x4, 0x8a, 0x1, 0x65, 0xc3, 0xa8, 0x3c, 0x6, - 0x1d, 0xbb, 0xd2, 0x19, 0xda, 0xd7, 0x11, 0xf1, 0x93, 0xc4, - 0x43, 0xc3, 0xbe, 0x1, 0xd4, 0x59, 0x5f, 0x6c, 0xf7, 0x4b, - 0xf6, 0x58, 0xb9, 0xe7, 0x2f, 0xc1, 0xfc, 0x97, 0x71, 0xae, - 0xde, 0xbe, 0x76, 0xfd, 0xa4, 0x7c, 0x43, 0xf6, 0xcd, 0x7e, - 0xc3, 0x48, 0x8d, 0xf2, 0x96, 0x91, 0x19, 0x64, 0x3, 0xfb, - 0xef, 0xd3, 0xf2, 00, 0x7e, 0x75, 0xe2, 0xe7, 0x18, 0x9f, - 0xaa, 0xe0, 0xa7, 0x35, 0xbb, 0xd1, 0x7a, 0xbf, 0xea, 0xe7, - 0x2e, 0x2a, 0xa7, 0xb3, 0xa4, 0xdf, 0xc8, 0xf1, 0xda, 0x28, - 0xa2, 0xbf, 0x19, 0x3e, 0x54, 0x2a, 0xe6, 0x8f, 0xa6, 0x49, - 0xac, 0xea, 0xd6, 0x76, 0x10, 0x82, 0x65, 0xb9, 0x99, 0x22, - 0x5c, 0x76, 0xdc, 0x40, 0xcd, 0x53, 0xaf, 0x44, 0xf8, 0x18, - 0x9a, 0x64, 0x3e, 0x33, 0xfb, 0x7e, 0xa9, 0x79, 0x6d, 0x67, - 0x15, 0x9c, 0x4c, 0xf1, 0x1b, 0x89, 0x42, 0x6, 0x90, 0xfc, - 0xa3, 0x19, 0xeb, 0x80, 0x58, 0xfe, 0x55, 0xd7, 0x84, 0xa2, - 0xb1, 0x18, 0x88, 0x52, 0x6e, 0xc9, 0xbd, 0x7d, 0x3a, 0x9a, - 0x52, 0x8f, 0x3c, 0xd4, 0x59, 0xf4, 0xfe, 0x9f, 0x63, 0x16, - 0x99, 0x61, 0x6f, 0x69, 0x2, 0xec, 0x86, 0x8, 0xd6, 0x24, - 0x51, 0xd8, 0x1, 0x81, 0x56, 0x2b, 0x2a, 0x3f, 0x16, 0x68, - 0x93, 0x7d, 0xcd, 0x5e, 0xc5, 0xff, 00, 0xdd, 0xb9, 0x43, - 0xfd, 0x6a, 0x43, 0xe2, 0x4d, 0x25, 0x46, 0x4e, 0xa9, 0x66, - 0x7, 0xaf, 0x9e, 0x9f, 0xe3, 0x5f, 0xb7, 0xc6, 0xa5, 0x24, - 0xac, 0xa4, 0xad, 0xea, 0x7d, 0x72, 0x94, 0x6d, 0xa3, 0x34, - 0x69, 0x9, 0xa, 0x9, 0x27, 00, 0x72, 0x49, 0xae, 0x5b, - 0x55, 0xf8, 0xa5, 0xe1, 0x5d, 0x1a, 0x36, 0x69, 0xf5, 0xbb, - 0x57, 0x23, 0xf8, 0x20, 0x7f, 0x35, 0xbf, 0x25, 0xcd, 0x78, - 0xf7, 0xc4, 0x9f, 0x8f, 0x12, 0x6b, 0xf6, 0xb2, 0xe9, 0x9a, - 0xa, 0x49, 0x69, 0x67, 0x20, 0x29, 0x2d, 0xd4, 0x9c, 0x49, - 0x22, 0x9e, 0xa1, 0x47, 0xf0, 0x8f, 0x7e, 0xbf, 0x4a, 0xf3, - 0x71, 0x99, 0xb6, 0x13, 0x7, 0x6, 0xe5, 0x34, 0xdf, 0x64, - 0xee, 0xcc, 0x2a, 0xe2, 0x69, 0xd2, 0x57, 0x6e, 0xec, 0xe2, - 0x3e, 0x27, 0x78, 0x82, 0x2f, 0x13, 0xf8, 0xe7, 0x55, 0xbf, - 0x80, 0x83, 0x6e, 0xd2, 0x8, 0xe3, 0x61, 0xfc, 0x4a, 0x80, - 0x28, 0x3f, 0x8e, 0x33, 0xf8, 0xd7, 0x2d, 0x45, 0x15, 0xf8, - 0xed, 0x6a, 0xb2, 0xaf, 0x52, 0x55, 0x65, 0xbc, 0x9b, 0x7f, - 0x79, 0xf2, 0xd2, 0x93, 0x9c, 0x9c, 0x9f, 0x50, 0xa2, 0x8a, - 0xe9, 0x3c, 0x7, 0xe0, 0x6b, 0xdf, 0x1e, 0x6b, 0x69, 0x65, - 0x6a, 0xc, 0x70, 0x2f, 0xcd, 0x3d, 0xc1, 0x1f, 0x2c, 0x49, - 0xfe, 0x27, 0xb0, 0xa5, 0x4a, 0x94, 0xeb, 0xcd, 0x53, 0xa6, - 0xae, 0xd8, 0x46, 0x2e, 0x6d, 0x46, 0x3b, 0x9e, 0xab, 0xfb, - 0x36, 0xf8, 0x58, 0xa4, 0x57, 0xfa, 0xfc, 0xc8, 0x41, 0x7f, - 0xf4, 0x6b, 0x72, 0x47, 0x51, 0xc1, 0x72, 0x3f, 0x1c, 0xf, - 0xc0, 0xd7, 0xb9, 0x55, 0x3d, 0x23, 0x4a, 0xb6, 0xd0, 0xf4, - 0xcb, 0x6b, 0xb, 0x38, 0xc4, 0x56, 0xd6, 0xf1, 0x88, 0xd1, - 0x47, 0xa0, 0xfe, 0xb5, 0x72, 0xbf, 0x6a, 0xcb, 0xf0, 0x8b, - 0x3, 0x86, 0x85, 0x5, 0xba, 0xdf, 0xd7, 0xa9, 0xf5, 0x94, - 0x29, 0x7b, 0x1a, 0x6a, 0x1, 0x45, 0x14, 0x57, 0xa2, 0x6e, - 0x14, 0x51, 0x45, 00, 0x7c, 0xf7, 0xfb, 0x4a, 0xeb, 0xa6, - 0x7d, 0x67, 0x4c, 0xd2, 0x11, 0xbe, 0x4b, 0x78, 0x8d, 0xc3, - 0x8f, 0xf6, 0x98, 0xe0, 0x7e, 0x41, 0x4f, 0xe7, 0x5e, 0x31, - 0x5d, 0x3f, 0xc4, 0xcd, 0x77, 0xfe, 0x12, 0x3f, 0x1c, 0xea, - 0xf7, 0x81, 0xb7, 0x45, 0xe7, 0x18, 0xa3, 0x3f, 0xec, 0x27, - 0xca, 0x3f, 0x96, 0x7f, 0x1a, 0xe6, 0x2b, 0xf1, 0x3c, 0xcf, - 0x11, 0xf5, 0x9c, 0x65, 0x4a, 0x8b, 0x6b, 0xe9, 0xe8, 0xb4, - 0x47, 0xc9, 0x62, 0x27, 0xed, 0x2a, 0xca, 0x41, 0x45, 0x14, - 0x57, 0x96, 0x73, 0x9b, 0x3e, 0xd, 0xd0, 0xcf, 0x89, 0x3c, - 0x55, 0xa5, 0xe9, 0xb8, 0xca, 0xdc, 0x4e, 0xaa, 0xff, 00, - 0xee, 0xe, 0x5b, 0xf4, 0x6, 0xbe, 0xd1, 0x55, 0xa, 0xa0, - 0x1, 0x80, 0x6, 00, 0xaf, 0x9a, 0xff, 00, 0x67, 0x4d, - 0x18, 0xdf, 0x78, 0xce, 0x7b, 0xf6, 0x5c, 0xc7, 0x63, 0x6e, - 0xc4, 0x1f, 0xf6, 0xdf, 0xe5, 0x1f, 0xa6, 0xea, 0xfa, 0x56, - 0xbf, 0x50, 0xe1, 0x8a, 0x1e, 0xcf, 0xb, 0x2a, 0xaf, 0x79, - 0x3f, 0xc1, 0x7f, 0xc1, 0xb9, 0xf4, 0x19, 0x7c, 0x2d, 0x4d, - 0xcb, 0xb8, 0x51, 0x45, 0x15, 0xf6, 0x7, 0xaa, 0x14, 0x51, - 0x55, 0xb5, 0x1d, 0x42, 0xd, 0x2a, 0xc2, 0xe2, 0xf6, 0xe5, - 0xc4, 0x76, 0xf6, 0xf1, 0xb4, 0xb2, 0x39, 0xec, 0xa0, 0x64, - 0xd2, 0x6d, 0x45, 0x5d, 0x83, 0x76, 0xd4, 0xe3, 0x3e, 0x2d, - 0x7c, 0x47, 0x4f, 0x1, 0x68, 0xaa, 0xb6, 0xfb, 0x5f, 0x55, - 0xba, 0x5, 0x60, 0x43, 0xce, 0xc1, 0xdd, 0xc8, 0xf4, 0x1d, - 0xbd, 0x4d, 0x7c, 0xab, 0x73, 0x73, 0x2d, 0xe5, 0xc4, 0xb3, - 0xcf, 0x23, 0x4b, 0x34, 0xac, 0x5d, 0xe4, 0x73, 0x92, 0xc4, - 0xf5, 0x26, 0xb6, 0x3c, 0x6d, 0xe2, 0xa9, 0xfc, 0x65, 0xe2, - 0x4b, 0xcd, 0x52, 0x72, 0x42, 0xc8, 0xdb, 0x62, 0x8c, 0xff, - 00, 0xcb, 0x38, 0xc7, 0xdd, 0x5f, 0xcb, 0xf5, 0x26, 0xb0, - 0xab, 0xf1, 0xdc, 0xdf, 0x32, 0x96, 0x61, 0x5d, 0xb4, 0xfd, - 0xc5, 0xb2, 0xfd, 0x7e, 0x67, 0xcb, 0x62, 0x6b, 0xba, 0xf3, - 0xf2, 0x5b, 0x5, 0x14, 0x51, 0x5e, 0x11, 0xc6, 0x15, 0xa7, - 0xe1, 0xdf, 0xe, 0x6a, 0x1e, 0x2a, 0xd5, 0x22, 0xb0, 0xd3, - 0x6d, 0xda, 0x79, 0xdc, 0xf6, 0xfb, 0xa8, 0x3f, 0xbc, 0xc7, - 0xb0, 0xf7, 0xa8, 0x34, 0x7d, 0x22, 0xeb, 0x5e, 0xd4, 0xed, - 0xb4, 0xfb, 0x28, 0x8c, 0xd7, 0x57, 0xe, 0x11, 0x10, 0x7a, - 0xfb, 0xfb, 0xe, 0xb5, 0xf5, 0xc7, 0xc3, 0xff, 00, 0x1, - 0xd9, 0x78, 0xb, 0x45, 0x5b, 0x4b, 0x71, 0xbe, 0xe6, 0x40, - 0x1a, 0xe6, 0xe0, 0xf5, 0x91, 0xf1, 0xfa, 0x1, 0xd8, 0x57, - 0xbf, 0x94, 0xe5, 0x52, 0xcc, 0xaa, 0x5d, 0xe9, 0x5, 0xbb, - 0xfd, 0x17, 0xf5, 0xa1, 0xdb, 0x86, 0xc3, 0x3a, 0xf2, 0xd7, - 0x64, 0x71, 0xde, 0xf, 0xfd, 0x9f, 0x34, 0x6d, 0x26, 0x28, - 0xe6, 0xd6, 0x98, 0xea, 0xd7, 0x9d, 0x4c, 0x79, 0x2b, 0xa, - 0x9f, 0x4c, 0x75, 0x6f, 0xc7, 0xf2, 0xaf, 0x50, 0xb2, 0xd3, - 0xed, 0x74, 0xd8, 0x16, 0x1b, 0x4b, 0x68, 0xad, 0xa2, 0x51, - 0x80, 0x91, 0x20, 0x50, 0x3f, 0x1, 0x56, 0x28, 0xaf, 0xd5, - 0x30, 0xd8, 0x2c, 0x3e, 0x12, 0x3c, 0xb4, 0x60, 0x97, 0xe7, - 0xf7, 0x9f, 0x45, 0x4e, 0x94, 0x29, 0x2b, 0x41, 0x58, 0x2a, - 0x2b, 0x8b, 0x58, 0x6e, 0xe2, 0x68, 0xe7, 0x89, 0x26, 0x8d, - 0x86, 0xa, 0x48, 0xa1, 0x81, 0xfc, 0xd, 0x4b, 0x45, 0x76, - 0x34, 0x9e, 0x8c, 0xd8, 0xf2, 0xef, 0x1a, 0xfc, 0x5, 0xd1, - 0x75, 0xe8, 0x65, 0x9f, 0x49, 0x51, 0xa4, 0xea, 0x7, 0x2c, - 0x2, 0x67, 0xc9, 0x73, 0xe8, 0x57, 0xb7, 0xd4, 0x7e, 0x46, - 0xbe, 0x72, 0xd6, 0x74, 0x6b, 0xcf, 0xf, 0xea, 0x73, 0xd8, - 0x5f, 0xc0, 0xd6, 0xf7, 0x50, 0xb6, 0xd7, 0x46, 0xfe, 0x63, - 0xd4, 0x1f, 0x5a, 0xfb, 0x7a, 0xbc, 0x83, 0xf6, 0x87, 0xf0, - 0x7c, 0x5a, 0x87, 0x87, 0xd3, 0x5e, 0x89, 0x31, 0x77, 0x64, - 0x55, 0x25, 0x61, 0xfc, 0x51, 0x31, 0xc7, 0x3f, 0x42, 0x47, - 0xe6, 0x6b, 0xe2, 0xf3, 0xcc, 0x9a, 0x94, 0xa8, 0xcb, 0x13, - 0x87, 0x8f, 0x2c, 0xa3, 0xab, 0x4b, 0x66, 0xba, 0xfc, 0xcf, - 0x23, 0x19, 0x85, 0x8b, 0x8b, 0xa9, 0x5, 0x66, 0x8f, 0x9c, - 0xe8, 0xa2, 0x8a, 0xfc, 0xd0, 0xf0, 0x42, 0x8a, 0x28, 0xa0, - 0xf, 0xa8, 0x7e, 0x5, 0x78, 0xd2, 0x4f, 0x14, 0x78, 0x54, - 0xd9, 0xdd, 0x3e, 0xfb, 0xcd, 0x34, 0xac, 0x25, 0x89, 0xe5, - 0xe3, 0xc7, 0xc8, 0x4f, 0xbf, 0x4, 0x7e, 0x15, 0xe9, 0x55, - 0xf2, 0xd7, 0xc0, 0x5d, 0x71, 0xf4, 0x9f, 0x88, 0x16, 0xd6, - 0xfb, 0xb1, 0xd, 0xfa, 0x34, 0xe, 0x3b, 0x67, 0x1b, 0x94, - 0xfe, 0x63, 0x1f, 0x8d, 0x7d, 0x4b, 0x5f, 0xb0, 0x64, 0x58, - 0xb7, 0x8b, 0xc1, 0x45, 0xc9, 0xeb, 0x1d, 0x1f, 0xcb, 0x6f, - 0xc0, 0xfa, 0x7c, 0x1d, 0x47, 0x52, 0x92, 0xbe, 0xeb, 0x40, - 0xaf, 0x9c, 0x7e, 0x3f, 0xf8, 0xf1, 0xf5, 0x6d, 0x67, 0xfb, - 0x2, 0xd2, 0x42, 0x2c, 0xac, 0x88, 0x33, 0xed, 0x3c, 0x49, - 0x2f, 0xa7, 0xd1, 0x7f, 0x9e, 0x7d, 0x2b, 0xe8, 0x6d, 0x42, - 0xf1, 0x34, 0xfb, 0xb, 0x9b, 0xa9, 0xe, 0x12, 0x8, 0x9a, - 0x46, 0xfa, 00, 0x4f, 0xf4, 0xaf, 0x88, 0xef, 0xef, 0x24, - 0xd4, 0x6f, 0xae, 0x2e, 0xe6, 0x39, 0x96, 0x79, 0x1a, 0x57, - 0x3e, 0xec, 0x72, 0x7f, 0x9d, 0x79, 0x9c, 0x4d, 0x8b, 0x95, - 0x1a, 0x11, 0xa1, 0x7, 0xf1, 0xef, 0xe8, 0x8e, 0x7c, 0xc2, - 0xab, 0x8c, 0x14, 0x17, 0x52, 0xa, 0x28, 0xa2, 0xbf, 0x32, - 0x3c, 00, 0xa2, 0x8a, 0x96, 0xd2, 0xdd, 0xae, 0xee, 0xa1, - 0x81, 0x8, 0xf, 0x2b, 0xac, 0x60, 0x9e, 0x99, 0x27, 0x14, - 0xd2, 0x6d, 0xd9, 0x1, 0x7f, 0x40, 0xf0, 0xc6, 0xab, 0xe2, - 0x8b, 0xaf, 0xb3, 0xe9, 0x76, 0x33, 0x5e, 0x48, 0x3e, 0xf7, - 0x96, 0xbf, 0x2a, 0xff, 00, 0xbc, 0xdd, 0x7, 0xe3, 0x5e, - 0x8d, 0xa7, 0x7e, 0xcd, 0xfe, 0x20, 0xb9, 0x40, 0xd7, 0x57, - 0xb6, 0x56, 0x79, 0xfe, 0x1d, 0xcd, 0x23, 0xf, 0xc8, 0x63, - 0xf5, 0xaf, 0x7a, 0xf0, 0xb7, 0x86, 0xac, 0xfc, 0x27, 0xa1, - 0xda, 0xe9, 0xb6, 0x51, 0x85, 0x8e, 0x25, 0x1, 0x9b, 0x1c, - 0xc8, 0xdd, 0xd8, 0xfb, 0x93, 0x5a, 0xf5, 0xfa, 0x5e, 0x13, - 0x86, 0x70, 0xf0, 0x82, 0x78, 0x96, 0xe5, 0x2f, 0xb9, 0x7f, - 0x99, 0xef, 0xd2, 0xcb, 0xe0, 0x95, 0xea, 0x6a, 0xcf, 0x2, - 0x5f, 0xd9, 0x8e, 0xeb, 0x1f, 0x36, 0xbf, 0x8, 0x3e, 0xd6, - 0xc4, 0xff, 00, 0xec, 0xd4, 0xd7, 0xfd, 0x98, 0xef, 00, - 0xf9, 0x35, 0xe8, 0x9, 0xff, 00, 0x6a, 0xd9, 0x87, 0xfe, - 0xcd, 0x5e, 0xff, 00, 0x45, 0x7a, 0x5f, 0xea, 0xfe, 0x5d, - 0xff, 00, 0x3e, 0xff, 00, 0x17, 0xfe, 0x67, 0x47, 0xd4, - 0xa8, 0x76, 0xfc, 0x59, 0xf3, 0x8d, 0xd7, 0xec, 0xd7, 0xaf, - 0x44, 0x9, 0x83, 0x51, 0xb0, 0x9f, 0xd9, 0x8b, 0xa1, 0xff, - 00, 0xd0, 0x4d, 0x73, 0x3a, 0xb7, 0xc1, 0x7f, 0x17, 0x69, - 0x21, 0x99, 0xb4, 0xa6, 0xba, 0x41, 0xfc, 0x56, 0x8e, 0x24, - 0xfd, 0x7, 0x3f, 0xa5, 0x7d, 0x69, 0x45, 0x73, 0x54, 0xe1, - 0xac, 0xc, 0xd7, 0xb9, 0x78, 0xfc, 0xff, 00, 0xcc, 0xce, - 0x59, 0x7d, 0x17, 0xb5, 0xd1, 0xf0, 0xe5, 0xee, 0x9d, 0x77, - 0xa6, 0xc9, 0xe5, 0xdd, 0xda, 0xcd, 0x6b, 0x27, 0xf7, 0x66, - 0x8c, 0xa1, 0xfc, 0x8d, 0x7a, 0x5f, 0xec, 0xed, 0xa3, 0xb, - 0xff, 00, 0x1b, 0xcb, 0x78, 0xe3, 0x2b, 0x63, 0x6e, 0xce, - 0xa7, 0xd1, 0x9b, 0xe5, 0x1f, 0xa1, 0x6a, 0xfa, 0x3e, 0xff, - 00, 0x4d, 0xb4, 0xd5, 0x6d, 0xda, 0xb, 0xcb, 0x68, 0xae, - 0xa1, 0x61, 0x83, 0x1c, 0xc8, 0x18, 0x1f, 0xc0, 0xd6, 0x4f, - 0x86, 0xfc, 0xd, 0xa3, 0x78, 0x46, 0xea, 0xf6, 0x7d, 0x26, - 0xd3, 0xec, 0x8d, 0x77, 0xb7, 0xcc, 0x55, 0x62, 0x57, 0xe5, - 0xce, 0x30, 0xf, 0x4e, 0xa7, 0xa5, 0x71, 0x61, 0xb8, 0x71, - 0xe1, 0x71, 0x74, 0xeb, 0x29, 0xa9, 0x45, 0x3b, 0xeb, 0xa3, - 0xf2, 0xfc, 0x4c, 0x69, 0xe0, 0x1d, 0x3a, 0x91, 0x95, 0xee, - 0x91, 0xbf, 0x45, 0x14, 0x57, 0xdc, 0x1e, 0xc0, 0x51, 0x45, - 0x14, 00, 0x57, 0x13, 0xf1, 0x6e, 0xe3, 0xc8, 0xf0, 0xa4, - 0xe3, 0xfb, 0xc0, 0xd7, 0x6d, 0x5e, 0x6b, 0xf1, 0xca, 0xe3, - 0xc9, 0xf0, 0xbb, 0xc, 0xe3, 0x2a, 0xd5, 0xc5, 0x8d, 0x97, - 0x2e, 0x1e, 0x6f, 0xc8, 0xe7, 0xc4, 0x3b, 0x52, 0x93, 0xf2, - 0x3e, 0x20, 0xf1, 0x4, 0xbe, 0x65, 0xfd, 0xd3, 0x7a, 0xb9, - 0xaf, 0x9e, 0xfe, 0x34, 0xc4, 0x75, 0x29, 0x6d, 0xec, 0x14, - 0xe0, 0xdd, 0x4f, 0x1c, 00, 0xff, 00, 0xbc, 0xc1, 0x7f, - 0xad, 0x7b, 0xe6, 0xae, 0xfb, 0xa5, 0x98, 0xfa, 0xb1, 0xaf, - 0x12, 0xf1, 0x1d, 0xa7, 0xf6, 0xd7, 0xc5, 0x2f, 0x6, 0xe9, - 0xa3, 0xfe, 0x5e, 0xb5, 0xdb, 0x18, 0x78, 0xf7, 0x9d, 0x5, - 0x7c, 0x1e, 0x4d, 0x1b, 0xd4, 0x47, 0xe2, 0xf4, 0xd7, 0xb4, - 0xcd, 0x28, 0xaf, 0xef, 0x1f, 0xb2, 0xba, 0x6c, 0x1f, 0x65, - 0xd3, 0xed, 0x61, 0xff, 00, 0x9e, 0x71, 0x2a, 0x7e, 0x40, - 0xa, 0x2a, 0xcd, 0x15, 0xfa, 0x49, 0xfb, 0x80, 0x51, 0x45, - 0x14, 00, 0x51, 0x45, 0x21, 0x21, 0x41, 0x24, 0xe0, 0xe, - 0x49, 0xa0, 0xf, 0x9d, 0x7f, 0x6b, 0xdf, 0x1a, 0x2d, 0xb6, - 0x93, 0xa6, 0x78, 0x5e, 0x16, 0x6, 0x5b, 0xa7, 0xfb, 0x5d, - 0xc0, 0xd, 0xc8, 0x45, 0x38, 0x50, 0x47, 0xbb, 0x64, 0xff, - 00, 0xc0, 0x6b, 0xc3, 0xbe, 0x10, 0xf8, 0x59, 0xbc, 0x59, - 0xe3, 0xad, 0x36, 0xcf, 0x69, 0x68, 0x84, 0x81, 0xdf, 0x3, - 0xb0, 0xe6, 0x9d, 0xf1, 0xa3, 0xc6, 0x63, 0xc7, 0x7f, 0x11, - 0xf5, 0x5d, 0x46, 0x27, 0xdf, 0x67, 0x1b, 0x7d, 0x9a, 0xd8, - 0x83, 0x91, 0xe5, 0xa7, 00, 0x8f, 0x62, 0x77, 0x37, 0xe3, - 0x5e, 0xd3, 0xfb, 0x25, 0xf8, 0x3f, 0xca, 0xb7, 0xbe, 0xd7, - 0x66, 0x8c, 0x65, 0x8f, 0x95, 0x13, 0x11, 0xf9, 0xd7, 0xe7, - 0x55, 0x3f, 0xe1, 0x4f, 0x33, 0x51, 0x5a, 0xc6, 0xff, 00, - 0x82, 0xff, 00, 0x3f, 0xd4, 0xfc, 0xe6, 0x2f, 0xfb, 0x53, - 0x35, 0x72, 0xde, 0x29, 0xfe, 0xb, 0xfc, 0xcf, 0xa3, 0x60, - 0x85, 0x6d, 0xe1, 0x8e, 0x24, 0x18, 0x44, 0x50, 0xa0, 0x7b, - 0xa, 0x92, 0x8a, 0x2b, 0xf4, 0x5d, 0x8f, 0xd1, 0x82, 0x8a, - 0x28, 0xa0, 0x2, 0xb3, 0x3c, 0x4d, 0xe2, 0x4d, 0x33, 0xc1, - 0xde, 0x1e, 0xd4, 0x75, 0xcd, 0x66, 0xf2, 0x2d, 0x3f, 0x4a, - 0xd3, 0xe0, 0x7b, 0x9b, 0xab, 0xa9, 0x9b, 0x6a, 0x45, 0x1a, - 0x8c, 0xb3, 0x13, 0xf4, 0x15, 0xa7, 0x5f, 0x1, 0xff, 00, - 0xc1, 0x62, 0x3e, 0x30, 0xc9, 0xe0, 0xdf, 0x81, 0x1a, 0x3f, - 0x82, 0x2c, 0xa7, 0x31, 0xde, 0x78, 0xae, 0xfb, 0xfd, 0x20, - 0x2b, 0x60, 0xfd, 0x92, 0xc, 0x3b, 0xf, 0xa1, 0x73, 0x10, - 0xfa, 0x3, 0x40, 0x1f, 0x9e, 0x9f, 0xb6, 0x97, 0xed, 0x9b, - 0xe2, 0x4f, 0xda, 0xaf, 0xc7, 0x93, 0xb7, 0x9f, 0x36, 0x9b, - 0xe0, 0x8b, 0x9, 0x5e, 0x3d, 0x2b, 0x47, 0x8e, 0x42, 0x11, - 0x90, 0x37, 0x13, 0xcc, 0x3a, 0x34, 0x8c, 00, 0x3c, 0xfd, - 0xde, 0x83, 0xb9, 0x3a, 0x7f, 0x7, 0xbf, 0xe0, 0x9b, 0x1f, - 0x1c, 0x7e, 0x32, 0x68, 0x56, 0xfa, 0xdd, 0x9e, 0x81, 0x6b, - 0xe1, 0xdd, 0x1e, 0xe6, 0x31, 0x35, 0xbd, 0xd7, 0x88, 0x2e, - 0x7e, 0xcc, 0x66, 0x43, 0xc8, 0x65, 0x8c, 0x6, 0x7c, 0x63, - 0x9c, 0x95, 00, 0xd6, 0x6f, 0xfc, 0x13, 0xbb, 0xe1, 0xbe, - 0x87, 0xf1, 0x4b, 0xf6, 0xb4, 0xf0, 0x66, 0x93, 0xe2, 0x25, - 0x82, 0x7d, 0x32, 0xdc, 0xcd, 0xa8, 0x1b, 0x4b, 0x90, 0xa, - 0x5d, 0x3c, 0x31, 0x97, 0x48, 0xf0, 0x7a, 0xfc, 0xc0, 0x36, - 0x3b, 0x85, 0x35, 0xfb, 0x39, 0xfb, 0x62, 0x7c, 0x66, 0xb7, - 0xf8, 0x5, 0xfb, 0x39, 0x78, 0xc3, 0xc5, 0x2, 0x45, 0x86, - 0xf9, 0x2c, 0xcd, 0x96, 0x9a, 0x83, 0x8d, 0xd7, 0x52, 0x8d, - 0x91, 00, 0x3d, 0x89, 0xdd, 0xf4, 0x53, 0x4c, 0x84, 0xaf, - 0xab, 0x3f, 0x9e, 0x6f, 0x16, 0x78, 0x7d, 0xbc, 0x27, 0xe2, - 0x7d, 0x5b, 0x45, 0x7b, 0xcb, 0x6d, 0x41, 0xf4, 0xeb, 0xa9, - 0x2d, 0x5a, 0xea, 0xcd, 0x8b, 0x43, 0x29, 0x46, 0x2a, 0x59, - 0x9, 00, 0x95, 0x24, 0x70, 0x70, 0x2b, 0xf7, 0xe7, 0xf6, - 0x3, 0xf8, 0x22, 0x3e, 0x5, 0x7e, 0xcc, 0x3e, 0x14, 0xd2, - 0x67, 0x8b, 0xcb, 0xd6, 0x35, 0x38, 0xbf, 0xb6, 0x35, 0x1c, - 0x8f, 0x9b, 0xce, 0x9c, 0x6, 0xda, 0x7f, 0xdd, 0x4d, 0x89, - 0xff, 00, 0x1, 0xaf, 0xc5, 0x9f, 0xd8, 0xf3, 0xe0, 0xb4, - 0xbf, 0xb4, 0xf, 0xed, 0x17, 0xe1, 0xf, 0xa, 0x3a, 0x79, - 0xb6, 0x12, 0x5d, 0xb, 0xdd, 0x49, 0x98, 0x64, 0xb, 0x58, - 0xbf, 0x79, 0x2e, 0x7f, 0xde, 00, 0x27, 0xd5, 0xc5, 0x7e, - 0xd9, 0xfe, 0xd9, 0x7f, 0xb4, 0x8e, 0x8d, 0xfb, 0x30, 0x7c, - 0xf, 0xd5, 0xf5, 0x56, 0xbb, 0x82, 0x1f, 0x11, 0x5d, 0x5b, - 0x3d, 0x9e, 0x83, 0xa7, 0xe4, 0x6f, 0x9a, 0xe0, 0xae, 0xd5, - 0x60, 0xbd, 0x76, 0x26, 0x43, 0x31, 0xec, 0x6, 0x3a, 0x91, - 0x43, 0x5, 0xdc, 0xfc, 0x4a, 0xfd, 0xb3, 0x75, 0xfb, 0x5f, - 0x13, 0x7e, 0xd5, 0x7f, 0x14, 0xf5, 0x1b, 0x26, 0x57, 0xb5, - 0x93, 0x5e, 0xb9, 0x44, 0x74, 0xe8, 0xdb, 0x1b, 0x61, 0x3f, - 0x89, 0x52, 0x6b, 0xf5, 0x7f, 0xfe, 0x9, 0x19, 0xa1, 0x49, - 0xa4, 0xfe, 0xc8, 0x36, 0x77, 0x72, 0x2e, 0xdf, 0xed, 0x3d, - 0x66, 0xf6, 0xe5, 0x33, 0xdd, 0x43, 0x2c, 0x59, 0xfc, 0xe3, - 0x6a, 0xfc, 0x50, 0xd1, 0xf4, 0x9d, 0x57, 0xc7, 0x5e, 0x2a, - 0xb3, 0xd3, 0x6c, 0xd2, 0x4d, 0x43, 0x5a, 0xd5, 0xef, 0x12, - 0x8, 0x97, 0xab, 0xcd, 0x3c, 0xaf, 0x81, 0xf8, 0x96, 0x6a, - 0xfe, 0x91, 0x3e, 0x2, 0xfc, 0x2c, 0xb5, 0xf8, 0x27, 0xf0, - 0x73, 0xc2, 0x3e, 0x8, 0xb4, 0xda, 0x53, 0x46, 0xd3, 0xe3, - 0xb7, 0x92, 0x45, 0x1c, 0x49, 0x2e, 0x37, 0x4a, 0xff, 00, - 0xf0, 0x27, 0x2c, 0x7f, 0x1a, 0x18, 0x2d, 0xee, 0x77, 0x53, - 0xcc, 0x96, 0xd0, 0xc9, 0x34, 0x8c, 0x12, 0x38, 0xd4, 0xb3, - 0x31, 0xe8, 00, 0x19, 0x26, 0xbe, 0x2c, 0xf1, 0x46, 0xb5, - 0x27, 0x88, 0xfc, 0x45, 0xa8, 0xea, 0x52, 0x12, 0x4d, 0xcc, - 0xed, 0x20, 0xcf, 0x65, 0xcf, 0xca, 0x3f, 0x1, 0x81, 0x5f, - 0x4a, 0xfc, 0x73, 0xf1, 0x11, 0xd0, 0x7c, 0x3, 0x75, 0x1c, - 0x6f, 0xb2, 0xe2, 0xf9, 0x85, 0xaa, 0x63, 0xae, 0xf, 0x2f, - 0xff, 00, 0x8e, 0x82, 0x3f, 0x1a, 0xf9, 0x5a, 0xbf, 0x38, - 0xe2, 0x8c, 0x4f, 0x35, 0x48, 0x61, 0x97, 0x4d, 0x5f, 0xcf, - 0x6f, 0xeb, 0xcc, 0xf1, 0x33, 0x1a, 0x97, 0x92, 0xa6, 0xba, - 0x5, 0x14, 0x51, 0x5f, 0xa, 0x79, 0x1, 0x45, 0x14, 0x50, - 0x1, 0x46, 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa2, 0x80, 0xa, - 0x7c, 0x10, 0x49, 0x73, 0x32, 0xc5, 0xc, 0x6f, 0x2c, 0xae, - 0x70, 0xa8, 0x8a, 0x59, 0x89, 0xf6, 0x2, 0xb4, 0x3c, 0x3f, - 0xa9, 0xd9, 0xe9, 0x5a, 0x82, 0xcd, 0x7d, 0xa5, 0xc3, 0xab, - 0x5b, 0xff, 00, 0x14, 0x12, 0xc8, 0xc9, 0xf9, 0x15, 0x3d, - 0x7e, 0xb9, 0xaf, 0xa9, 0xbe, 0x1a, 0x5c, 0xf8, 0x5f, 0x58, - 0xd1, 0x56, 0xff, 00, 0xc3, 0xda, 0x7d, 0xbd, 0x90, 0xce, - 0xc9, 0x63, 0x58, 0x82, 0xc9, 0x1b, 0xe3, 0xee, 0xb1, 0xea, - 0x7e, 0xb9, 0xe6, 0xbd, 0xdc, 0xb3, 0x2c, 0x8e, 0x63, 0x2e, - 0x5f, 0x6a, 0xa2, 0xfb, 0x6b, 0x7f, 0xf2, 0xfc, 0x4e, 0xbc, - 0x3e, 0x1d, 0x57, 0x76, 0xe6, 0xb1, 0xe2, 0xbe, 0x9, 0xf8, - 0xd, 0xad, 0x78, 0x86, 0x54, 0x9b, 0x55, 0x56, 0xd1, 0xec, - 0x3a, 0x9f, 0x30, 0x7e, 0xf9, 0xc7, 0xa0, 0x5e, 0xdf, 0x53, - 0xf9, 0x1a, 0xfa, 0x1f, 0xc3, 0x5e, 0x18, 0xd3, 0xbc, 0x25, - 0xa5, 0xc7, 0x61, 0xa6, 0xc0, 0x20, 0x81, 0x79, 0x27, 0xab, - 0x39, 0xee, 0xcc, 0x7b, 0x9a, 0xd5, 0xa2, 0xbf, 0x4b, 0xc0, - 0x65, 0x58, 0x6c, 0xbd, 0x5e, 0x92, 0xbc, 0xbb, 0xbd, 0xff, - 00, 0xe0, 0x1f, 0x41, 0x47, 0xd, 0x4e, 0x87, 0xc3, 0xbf, - 0x70, 0xa2, 0x8a, 0x2b, 0xd8, 0x3a, 0x82, 0x8a, 0x28, 0xa0, - 0x2, 0xb1, 0x3c, 0x69, 0xac, 0xaf, 0x87, 0xbc, 0x27, 0xaa, - 0xea, 0x5, 0xb6, 0x98, 0x2d, 0xdc, 0xa7, 0xfb, 0xe4, 0x61, - 0x47, 0xe6, 0x45, 0x6d, 0xd7, 0x91, 0xfe, 0xd1, 0xfa, 0xd9, - 0xb2, 0xf0, 0xa5, 0x9e, 0x9c, 0x8d, 0x87, 0xbd, 0xb8, 0xcb, - 0xf, 0x54, 0x41, 0x93, 0xff, 00, 0x8f, 0x15, 0xaf, 0x3f, - 0x30, 0xaf, 0xf5, 0x5c, 0x2d, 0x4a, 0xdd, 0x97, 0xe3, 0xd3, - 0xf1, 0x30, 0xaf, 0x3f, 0x67, 0x4e, 0x52, 0x3e, 0x70, 0x24, - 0x93, 0x93, 0xc9, 0xa2, 0x8a, 0x2b, 0xf0, 0xf3, 0xe4, 0x42, - 0x8a, 0x29, 0x42, 0x96, 0x20, 0x1, 0x92, 0x78, 0x2, 0x80, - 0x3e, 0x93, 0xfd, 0x9c, 0xf4, 0x71, 0x65, 0xe0, 0xcb, 0x8b, - 0xe6, 0x5c, 0x49, 0x7b, 0x72, 0xc4, 0x1f, 0xf6, 0x13, 0xe5, - 0x1f, 0xae, 0xea, 0xf5, 0x7a, 0xc4, 0xf0, 0x5e, 0x88, 0x3c, - 0x39, 0xe1, 0x4d, 0x2f, 0x4e, 00, 0x6, 0x82, 0x5, 0xf, - 0x8e, 0xec, 0x79, 0x63, 0xf9, 0x93, 0x5b, 0x75, 0xfb, 0x8e, - 0x2, 0x87, 0xd5, 0xb0, 0xb4, 0xe9, 0x76, 0x4b, 0xef, 0xeb, - 0xf8, 0x9f, 0x5d, 0x42, 0x1e, 0xce, 0x9c, 0x62, 0x14, 0x51, - 0x45, 0x77, 0x9b, 0x85, 0x79, 0x1f, 0xed, 0x15, 0xe2, 0x86, - 0xd3, 0x3c, 0x35, 0x6d, 0xa4, 0x42, 0xfb, 0x65, 0xd4, 0x1f, - 0x32, 0x1, 0xd7, 0xca, 0x5c, 0x13, 0xf9, 0x9c, 0x7e, 0x46, - 0xbd, 0x72, 0xbe, 0x51, 0xf8, 0xdd, 0xae, 0xb6, 0xb7, 0xf1, - 0xb, 0x50, 0x4d, 0xdb, 0xa1, 0xb3, 0xc5, 0xac, 0x63, 0x3d, - 0x36, 0x8f, 0x9b, 0xff, 00, 0x1e, 0x2d, 0x5f, 0x37, 0x9f, - 0xe2, 0x9e, 0x1b, 0x5, 0x25, 0x1d, 0xe5, 0xa7, 0xf9, 0xfe, - 0x7, 0x6, 0x36, 0xa7, 0x25, 0x16, 0x97, 0x5d, 0xe, 0xa, - 0x8a, 0x28, 0xaf, 0xc8, 0xcf, 0x99, 0xa, 0x28, 0xa9, 0x2d, - 0xe0, 0x7b, 0xab, 0x88, 0xa1, 0x88, 0x6e, 0x92, 0x46, 0x8, - 0xab, 0xea, 0x49, 0xc0, 0x14, 0xd2, 0xbe, 0x88, 0xf, 0x79, - 0xfd, 0x9c, 0xfc, 0x18, 0xb1, 0x5a, 0x5c, 0x78, 0x92, 0xe1, - 0x33, 0x24, 0xa5, 0xa0, 0xb6, 0xc8, 0xe8, 0xa3, 0xef, 0x30, - 0xfa, 0x9e, 0x3f, 0x3, 0xeb, 0x5e, 0xdd, 0x59, 0xbe, 0x1b, - 0xd1, 0x62, 0xf0, 0xee, 0x83, 0x61, 0xa6, 0xc2, 00, 0x4b, - 0x68, 0x56, 0x3c, 0x8e, 0xe4, 0xe, 0x4f, 0xe2, 0x72, 0x7f, - 0x1a, 0xd2, 0xaf, 0xdb, 0xb2, 0xfc, 0x2a, 0xc1, 0x61, 0xa1, - 0x45, 0x6e, 0x96, 0xbe, 0xbd, 0x4f, 0xae, 0xa1, 0x4d, 0x52, - 0xa6, 0xa2, 0x14, 0x51, 0x45, 0x7a, 0x26, 0xe1, 0x45, 0x14, - 0x50, 0x1, 0x59, 0x1e, 0x2e, 0xd3, 0xd7, 0x56, 0xf0, 0xb6, - 0xad, 0x66, 0xe3, 0x2b, 0x35, 0xac, 0x8b, 0xf8, 0xed, 0x38, - 0xfd, 0x6b, 0x5e, 0xaa, 0x6a, 0xf2, 0x88, 0x34, 0x9b, 0xd9, - 0x1b, 0xee, 0xa4, 0xe, 0xc7, 0xf0, 0x53, 0x59, 0xd5, 0x4a, - 0x50, 0x92, 0x7b, 0x59, 0x93, 0x25, 0x78, 0xb4, 0xcf, 0x87, - 0xe8, 0xa2, 0x8a, 0xfc, 0xc, 0xf8, 0xc0, 0xa2, 0x8a, 0x28, - 0x3, 0x7b, 0xc0, 0x57, 0x26, 0xd3, 0xc6, 0xda, 0x14, 0xa0, - 0xe3, 0x17, 0xb0, 0x8f, 0xc0, 0xb8, 0x7, 0xf9, 0xd7, 0xd9, - 0xb5, 0xf1, 0x67, 0x83, 0x62, 0x33, 0x78, 0xbb, 0x44, 0x45, - 0xea, 0xd7, 0xb0, 0x8f, 0xfc, 0x7c, 0x57, 0xda, 0x75, 0xfa, - 0x47, 0xa, 0xb7, 0xec, 0x6a, 0xae, 0x97, 0x5f, 0x91, 0xee, - 0xe5, 0xbf, 0xc, 0x8c, 0x3f, 0x1c, 0x86, 0x6f, 0x5, 0xeb, - 0xa1, 0x33, 0xbb, 0xec, 0x33, 0x63, 0x1f, 0xee, 0x1a, 0xf8, - 0xc2, 0xbe, 0xe6, 0xb9, 0xb7, 0x4b, 0xbb, 0x69, 0x60, 0x90, - 0x6e, 0x8e, 0x54, 0x28, 0xc0, 0xf7, 0x4, 0x60, 0xd7, 0xc5, - 0x9e, 0x25, 0xd0, 0xa7, 0xf0, 0xd6, 0xbd, 0x7d, 0xa6, 0x5c, - 0x29, 0x59, 0x2d, 0xe5, 0x28, 0x9, 0x1f, 0x79, 0x7f, 0x85, - 0xbf, 0x11, 0x83, 0xf8, 0xd7, 0x37, 0x15, 0x52, 0x95, 0xe9, - 0x55, 0xe9, 0xaa, 0x23, 0x32, 0x8b, 0xbc, 0x64, 0x66, 0x51, - 0x45, 0x15, 0xf0, 0x7, 0x8a, 0x14, 0xaa, 0xc5, 0x18, 0x32, - 0x92, 0x18, 0x1c, 0x82, 0x3b, 0x52, 0x51, 0x40, 0x1f, 0x49, - 0xfc, 0x39, 0xf8, 0xe5, 0xa6, 0x6b, 0x16, 0x30, 0x59, 0x6b, - 0x93, 0xae, 0x9f, 0xa9, 0x46, 0xa1, 0xc, 0xf2, 0x9c, 0x45, - 0x37, 0x6c, 0xe7, 0xf8, 0x4f, 0xa8, 0x3f, 0x85, 0x7a, 0xac, - 0x53, 0x47, 0x3c, 0x6b, 0x24, 0x4e, 0xb2, 0x46, 0xc3, 0x21, - 0x90, 0xe4, 0x11, 0xf5, 0xaf, 0x85, 0xeb, 0x63, 0x43, 0xf1, - 0x86, 0xb7, 0xe1, 0xa3, 0xff, 00, 0x12, 0xcd, 0x4e, 0xe6, - 0xd1, 0x7f, 0xe7, 0x9a, 0x3e, 0x50, 0xff, 00, 0xc0, 0x4f, - 0x1f, 0xa5, 0x7d, 0xbe, 0xb, 0x89, 0xaa, 0x52, 0x8a, 0x86, - 0x26, 0x3c, 0xd6, 0xea, 0xb7, 0xff, 00, 0x83, 0xf8, 0x1e, - 0xbd, 0x2c, 0xc2, 0x51, 0x56, 0xa8, 0xae, 0x7d, 0xa7, 0x45, - 0x7c, 0xdf, 0xa0, 0xfe, 0xd1, 0xda, 0xed, 0x8e, 0xd4, 0xd4, - 0xed, 0x2d, 0xf5, 0x38, 0xc7, 0x56, 0x5f, 0xdd, 0x49, 0xf9, - 0x8c, 0x8f, 0xd2, 0xbb, 0xed, 0x13, 0xf6, 0x87, 0xf0, 0xd6, - 0xa4, 0xc1, 0x2f, 0x52, 0xe7, 0x4b, 0x73, 0xfc, 0x52, 0xa6, - 0xf4, 0xfc, 0xd7, 0x27, 0xf3, 0x15, 0xf5, 0x74, 0x33, 0xcc, - 0x5, 0x7f, 0xf9, 0x79, 0xca, 0xfc, 0xf4, 0xff, 00, 0x81, - 0xf8, 0x9e, 0x8c, 0x31, 0x94, 0x67, 0xd6, 0xde, 0xa7, 0xa9, - 0x51, 0x59, 0xba, 0x3f, 0x89, 0x34, 0xaf, 0x10, 0x45, 0xe6, - 0x69, 0xba, 0x85, 0xbd, 0xea, 0xf7, 0xf2, 0x64, 0xc, 0x47, - 0xd4, 0x75, 0x15, 0xa5, 0x5e, 0xe4, 0x65, 0x19, 0xae, 0x68, - 0xbb, 0xa3, 0xb1, 0x34, 0xd5, 0xd0, 0x51, 0x45, 0x15, 0x43, - 0xa, 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa2, 0x80, 0xa, 0xf2, - 0xf, 0xda, 0x1e, 0xeb, 0xca, 0xd0, 0x36, 0xe7, 0xfe, 0x59, - 0x9a, 0xf5, 0xfa, 0xf0, 0x6f, 0xda, 0x5e, 0xf8, 0x47, 0x61, - 0xe5, 0x67, 0x91, 0x1d, 0x79, 0x19, 0xb4, 0xb9, 0x30, 0x75, - 0x1f, 0x91, 0xc1, 0x8e, 0x97, 0x2e, 0x1e, 0x4c, 0xf9, 0x7, - 0x53, 0x6f, 0x95, 0xcf, 0xb9, 0xaf, 0x34, 0xf0, 0x2d, 0x92, - 0xeb, 0x9f, 0xb5, 0x7, 0xc3, 0x3b, 0x26, 0x1b, 0x81, 0xd7, - 0xad, 0xe4, 0xc7, 0xfb, 0x84, 0xbf, 0xfe, 0xcb, 0x5e, 0x8d, - 0xaa, 0x36, 0x22, 0x63, 0xec, 0x6b, 0x94, 0xfd, 0x9b, 0xec, - 0xff, 00, 0xb6, 0x3f, 0x6c, 0xbf, 0x87, 0xf1, 0xe3, 0x70, - 0x86, 0x7b, 0x9b, 0x93, 0xed, 0xb2, 0xda, 0x53, 0x9f, 0xcf, - 0x15, 0xf2, 0xd9, 0x24, 0x7d, 0xf3, 0xf2, 0x3c, 0xb1, 0x7b, - 0x4c, 0xe2, 0x97, 0x95, 0xd9, 0xfa, 0xcf, 0x45, 0x14, 0x57, - 0xe8, 0x7, 0xed, 0x61, 0x45, 0x14, 0x50, 0x1, 0x5c, 0x3f, - 0xc6, 0x8f, 0x18, 0xf, 0x4, 0x7c, 0x37, 0xd6, 0x35, 0x5, - 0x62, 0xb7, 0xf, 0x17, 0xd9, 0xad, 0xf6, 0xf5, 0xf3, 0x1f, - 0xe5, 0x53, 0xf8, 0x64, 0x9f, 0xc2, 0xbb, 0x8a, 0xf9, 0x5f, - 0xf6, 0xbf, 0xf1, 0x87, 0xda, 0xb5, 0x6d, 0x2b, 0xc3, 0x31, - 0x1f, 0x92, 0xd9, 0x3e, 0xd9, 0x39, 0xe7, 0xef, 0x36, 0x42, - 0x8f, 0xcb, 0x27, 0xf1, 0xaf, 0x37, 0x31, 0xc4, 0x7d, 0x5b, - 0xd, 0x39, 0xf5, 0xd9, 0x7a, 0xb3, 0xca, 0xcd, 0x31, 0x3f, - 0x54, 0xc2, 0x4e, 0xa2, 0xdf, 0x65, 0xea, 0xff, 00, 0xab, - 0x9f, 0x3e, 0x58, 0x5a, 0xbd, 0xe5, 0xd4, 0x30, 0x46, 0x37, - 0x3b, 0xb0, 0x50, 0x7, 0xa9, 0xaf, 0xd0, 0x3f, 0x86, 0x9e, - 0x19, 0x8f, 0xc2, 0x7e, 0xc, 0xd3, 0x6c, 0x11, 0x2, 0xb8, - 0x88, 0x34, 0x9e, 0xec, 0x47, 0x35, 0xf2, 0x27, 0xec, 0xf7, - 0xe1, 0x13, 0xe2, 0x9f, 0x1f, 0x5a, 0x97, 0x5c, 0xdb, 0xdb, - 0x7e, 0xf5, 0xcf, 0xd3, 0xa5, 0x7d, 0xc4, 0xa0, 0x28, 00, - 0x70, 0x7, 0x15, 0xf3, 0xdc, 0x3d, 0x87, 0xd2, 0x78, 0x87, - 0xe8, 0xbf, 0x53, 0xc2, 0xe1, 0xcc, 0x37, 0x25, 0x39, 0x57, - 0x7d, 0x74, 0x42, 0xd1, 0x45, 0x15, 0xf6, 0x67, 0xd9, 0x5, - 0x14, 0x51, 0x40, 0x5, 0x7e, 0x55, 0x7f, 0xc1, 0x6d, 0x3c, - 0x2b, 0xa8, 0x36, 0xa3, 0xf0, 0xc7, 0xc4, 0x81, 0x19, 0xb4, - 0xa5, 0x8a, 0xef, 0x4f, 0x67, 0x1d, 0x12, 0x62, 0x52, 0x40, - 0xf, 0xd5, 0x43, 0x7f, 0xdf, 0x26, 0xbf, 0x52, 0xb5, 0x4d, - 0x5e, 0xc7, 0x43, 0xb3, 0x6b, 0xbd, 0x46, 0xf6, 0xde, 0xc2, - 0xd5, 0x48, 0x56, 0x9e, 0xea, 0x55, 0x8d, 0x1, 0x27, 00, - 0x16, 0x62, 0x7, 0x24, 0x81, 0x5e, 0x73, 0xf1, 0xc7, 0xe1, - 0xf, 0x82, 0xff, 00, 0x69, 0xef, 0x86, 0x1a, 0x8f, 0x83, - 0x35, 0xeb, 0x98, 0xee, 0xf4, 0xeb, 0xbd, 0xb2, 0xc5, 0x73, - 0x63, 0x3a, 0x99, 0x6d, 0xa6, 0x5e, 0x52, 0x54, 0x23, 0x3c, - 0x83, 0xdb, 0xa1, 0x4, 0x83, 0xc1, 0xa0, 0x4f, 0x53, 0xf9, - 0xcd, 0xf0, 0xaf, 0x8a, 0xb5, 0x8f, 0x3, 0xf8, 0x8b, 0x4f, - 0xd7, 0xb4, 0xd, 0x46, 0xe3, 0x49, 0xd6, 0x74, 0xf9, 0x44, - 0xf6, 0xb7, 0xb6, 0xaf, 0xb6, 0x48, 0x9c, 0x74, 0x20, 0xfe, - 0x9e, 0xe0, 0x90, 0x6b, 0xd8, 0x7e, 0x39, 0x7e, 0xda, 0xdf, - 0x14, 0xbf, 0x68, 0xbf, 0x1, 0x68, 0xfe, 0x13, 0xf1, 0xce, - 0xa9, 0x69, 0xa9, 0x58, 0x69, 0x97, 0x42, 0xf1, 0x27, 0x86, - 0xd1, 0x60, 0x9a, 0x69, 0x2, 0x32, 0x3, 0x29, 0x5c, 0x2b, - 0x60, 0x33, 0x74, 0x51, 0xc9, 0xaf, 0x44, 0xf8, 0xd9, 0xff, - 00, 0x4, 0xbf, 0xf8, 0xd9, 0xf0, 0xa2, 0xfa, 0xea, 0x5d, - 0x27, 0x44, 0x1e, 0x39, 0xd0, 0x91, 0xd8, 0xc5, 0x7d, 0xa1, - 0xb6, 0xf9, 0x76, 0x67, 0x82, 0xf0, 0x1c, 0x38, 0x6c, 0x76, - 0x50, 0xc3, 0xde, 0xbe, 0x79, 0xb8, 0xf8, 0x25, 0xf1, 0x12, - 0xd2, 0xe4, 0xdb, 0xcd, 0xe0, 0x3f, 0x12, 0xc5, 0x38, 0x38, - 0xf2, 0xdb, 0x48, 0xb8, 0xd, 0x9f, 0xa6, 0xca, 0xa2, 0x35, - 0x3a, 0x5f, 0xd9, 0xdb, 0xf6, 0x95, 0xf1, 0x47, 0xec, 0xc5, - 0xe2, 0xd, 0x5f, 0x5f, 0xf0, 0x7d, 0xa6, 0x96, 0xfa, 0xe5, - 0xfd, 0x9f, 0xd8, 0x56, 0xf7, 0x51, 0xb7, 0x33, 0x1b, 0x68, - 0xcb, 0x6, 0x6f, 0x2c, 0x6e, 0x3, 0x2c, 0x55, 0x73, 0x9c, - 0xfd, 0xd1, 0x5c, 0xdf, 0xc5, 0x9f, 0x8d, 0x1e, 0x35, 0xf8, - 0xe5, 0xe2, 0x63, 0xaf, 0xf8, 0xe3, 0xc4, 0x37, 0x7e, 0x20, - 0xd4, 0x82, 0x94, 0x8d, 0xee, 0x8, 0x9, 0xa, 0x67, 0x3b, - 0x23, 0x45, 0x1, 0x51, 0x7d, 0x94, 0xa, 0xf4, 0xdf, 0x86, - 0x7f, 0xb0, 0x3f, 0xc7, 0x6f, 0x8a, 0x97, 0x31, 0x2e, 0x99, - 0xe0, 0xd, 0x47, 0x4c, 0xb5, 0x7e, 0xb7, 0xba, 0xda, 0xfd, - 0x86, 0x15, 0x1e, 0xa7, 0xcc, 0xc3, 0x1f, 0xc1, 0x4d, 0x7e, - 0x8b, 0xfe, 0xc9, 0xff, 00, 0xf0, 0x4a, 0xf, 0xb, 0xfc, - 0x27, 0xbd, 0xb2, 0xf1, 0x37, 0xc4, 0xbb, 0xb8, 0x3c, 0x65, - 0xe2, 0x6b, 0x79, 0x16, 0x6b, 0x7d, 0x3e, 0x10, 0x46, 0x9d, - 0x6a, 0xe3, 0x90, 0x48, 0x60, 0xc, 0xcc, 0xf, 0x76, 0x1, - 0x78, 0x1f, 0x2f, 0x7a, 0x2, 0xcc, 0xf3, 0xaf, 0xf8, 0x25, - 0x8f, 0xec, 0x3b, 0x79, 0xa4, 0xdd, 0xda, 0xfc, 0x65, 0xf1, - 0xde, 0x9b, 0xf6, 0x79, 0xc, 0x64, 0xf8, 0x73, 0x4d, 0xba, - 0x8c, 0x89, 0x13, 0x3c, 0x1b, 0xb7, 0x53, 0xd3, 0x23, 0x21, - 0x7, 0x5e, 0x4b, 0x7a, 0x57, 0xea, 0x25, 0x22, 0xa8, 0x45, - 0xa, 0xa0, 0x2a, 0x81, 0x80, 00, 0xc0, 0x2, 0xa2, 0xbc, - 0xbb, 0x8e, 0xc6, 0xd2, 0x6b, 0x99, 0x9b, 0x64, 0x30, 0xa1, - 0x91, 0xd8, 0xf6, 00, 0x64, 0xd4, 0xb7, 0x6d, 0x59, 0x7b, - 0x23, 0xe7, 0x5f, 0xda, 0x33, 0xc4, 0x23, 0x50, 0xf1, 0x4d, - 0xae, 0x97, 0x1b, 0xe6, 0x3b, 0x8, 0xb2, 0xe0, 0x1e, 0x3c, - 0xc7, 0xe4, 0xff, 00, 0xe3, 0xa1, 0x7f, 0x3a, 0xf2, 0x4a, - 0xbf, 0xaf, 0x6a, 0xb2, 0x6b, 0xba, 0xd5, 0xf6, 0xa1, 0x29, - 0x26, 0x4b, 0x99, 0x9e, 0x53, 0x9e, 0xd9, 0x39, 0x3, 0xf0, - 0x1c, 0x55, 0xa, 0xfc, 0x3b, 0x1f, 0x89, 0x78, 0xbc, 0x4c, - 0xeb, 0x77, 0x7f, 0x87, 0x4f, 0xc0, 0xf9, 0x1a, 0xd5, 0x3d, - 0xad, 0x47, 0x3e, 0xe1, 0x45, 0x14, 0x57, 0x1, 0x89, 0xdd, - 0x7c, 0x28, 0xf8, 0x72, 0x9f, 0x10, 0xf5, 0x4b, 0xc8, 0xae, - 0x66, 0x96, 0xda, 0xce, 0xda, 0x20, 0xcd, 0x24, 0x20, 0x67, - 0x79, 0x3f, 0x28, 0xe4, 0x63, 0xb3, 0x7e, 0x55, 0xe8, 0xf3, - 0x7e, 0xcc, 0x96, 0x4, 0x1f, 0x27, 0x5c, 0xb9, 0x43, 0xdb, - 0x7c, 0x2a, 0xdf, 0xc8, 0x8a, 0xde, 0xf8, 0x1, 0xe1, 0xd6, - 0xd1, 0xbc, 0xe, 0x2e, 0xe5, 0x5d, 0xb3, 0x6a, 0x32, 0x99, - 0xf9, 0xeb, 0xb0, 0x70, 0xbf, 0xc8, 0x9f, 0xc6, 0xbd, 0x32, - 0xbf, 0x50, 0xcb, 0x32, 0x5c, 0x2c, 0xf0, 0x70, 0x96, 0x22, - 0x9d, 0xe4, 0xf5, 0xeb, 0xd7, 0x6f, 0xc0, 0xfa, 0x1c, 0x3e, - 0x12, 0x9b, 0xa4, 0x9c, 0xd6, 0xac, 0xf9, 0xa7, 0xc5, 0x1f, - 0xb3, 0xd6, 0xb7, 0xa2, 0x59, 0xc9, 0x75, 0xa7, 0xdc, 0xc7, - 0xab, 0xa4, 0x63, 0x2d, 0x14, 0x68, 0x52, 0x5c, 0x7b, 0x2e, - 0x48, 0x3f, 0x9e, 0x6b, 0xca, 0xd9, 0x4a, 0xb1, 0x56, 0x4, - 0x10, 0x70, 0x41, 0xea, 0x2b, 0xee, 0xaa, 0xf9, 0x77, 0xe3, - 0xd7, 0x85, 0xe2, 0xf0, 0xff, 00, 0x8d, 0x3e, 0xd3, 0x6c, - 0x81, 0x20, 0xd4, 0x63, 0xfb, 0x41, 0x51, 0xd0, 0x49, 0x92, - 0x1f, 0x1f, 0xa1, 0xfc, 0x6b, 0xc5, 0xcf, 0x32, 0x5a, 0x58, - 0x3a, 0x4b, 0x11, 0x87, 0xd1, 0x6c, 0xd6, 0xff, 00, 0x33, - 0x93, 0x17, 0x84, 0x8d, 0x28, 0xf3, 0xc3, 0x63, 0xcd, 0xa8, - 0xa2, 0x8a, 0xf8, 0x93, 0xc9, 0xa, 0xf5, 0xdf, 0xd9, 0xbf, - 0x5b, 0x7b, 0x5f, 0x14, 0xde, 0xe9, 0x85, 0xbf, 0x73, 0x77, - 0x6f, 0xe6, 0x5, 0xff, 00, 0x6d, 0xf, 0x1f, 0xa1, 0x6a, - 0xf2, 0x2a, 0xed, 0xbe, 0xc, 0x5d, 0x7d, 0x93, 0xe2, 0x5e, - 0x8a, 0x73, 0x80, 0xee, 0xf1, 0x9f, 0xc5, 0x18, 0xf, 0xd7, - 0x15, 0xea, 0x65, 0x75, 0x5d, 0x1c, 0x6d, 0x29, 0x2e, 0xe9, - 0x7d, 0xfa, 0x1d, 0x18, 0x79, 0x72, 0xd6, 0x8b, 0xf3, 0x3e, - 0xb5, 0xa2, 0x8a, 0x2b, 0xf6, 0xc3, 0xeb, 0x42, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0xbe, 0x61, 0xfd, 0xa0, - 0xb5, 0xef, 0xed, 0x5f, 0x1d, 0x1b, 0x35, 0x6c, 0xc5, 0xa7, - 0xc2, 0xb1, 0x63, 0xfd, 0xb6, 0xf9, 0x9b, 0xf9, 0xa8, 0xfc, - 0x2b, 0xe9, 0xa9, 0xe7, 0x4b, 0x68, 0x24, 0x9a, 0x43, 0xb6, - 0x38, 0xd4, 0xbb, 0x13, 0xd8, 0x1, 0x93, 0x5f, 0x14, 0xf8, - 0x8f, 0x57, 0x6d, 0x7b, 0x5e, 0xd4, 0x35, 0x17, 0xce, 0x6e, - 0xa7, 0x79, 0x70, 0x7b, 0x2, 0x78, 0x1f, 0x96, 0x2b, 0xe3, - 0x38, 0x9f, 0x11, 0xc9, 0x86, 0x85, 0x15, 0xf6, 0x9f, 0xe0, - 0xbf, 0xe0, 0xd8, 0xf2, 0x73, 0x19, 0xda, 0xa, 0x1d, 0xcc, - 0xea, 0x28, 0xa2, 0xbf, 0x32, 0x3c, 00, 0xae, 0x8f, 0xe1, - 0xd6, 0x8c, 0x75, 0xff, 00, 0x1b, 0xe8, 0xd6, 0x7b, 0x77, - 0x23, 0x5c, 0x2b, 0xb8, 0xc7, 0xf0, 0x2f, 0xcc, 0xdf, 0xa0, - 0x35, 0xce, 0x57, 0xb0, 0x7e, 0xcd, 0x9a, 0x3f, 0xda, 0x7c, - 0x49, 0xa9, 0x6a, 0x2c, 0x32, 0xb6, 0xb6, 0xe2, 0x35, 0x3f, - 0xed, 0x39, 0xff, 00, 0x5, 0x3f, 0x9d, 0x7a, 0x59, 0x6d, - 0xf, 0xac, 0xe3, 0x29, 0xd2, 0xee, 0xff, 00, 0x5, 0xab, - 0x37, 0xa1, 0xf, 0x69, 0x56, 0x31, 0x3e, 0x8b, 0xa2, 0x8a, - 0x2b, 0xf6, 0xe3, 0xeb, 0x82, 0x8a, 0x28, 0xa0, 0x8, 0xee, - 0x26, 0x5b, 0x6b, 0x79, 0x65, 0x73, 0x84, 0x8d, 0x4b, 0x13, - 0xec, 0x6, 0x6b, 0xe2, 0x2d, 0x52, 0xf9, 0xf5, 0x3d, 0x4e, - 0xee, 0xf2, 0x43, 0x97, 0xb8, 0x95, 0xe5, 0x6f, 0xab, 0x12, - 0x7f, 0xad, 0x7d, 0x89, 0xe3, 0xa9, 0xda, 0xd7, 0xc1, 0x5a, - 0xf4, 0xa8, 0x70, 0xc9, 0x63, 0x31, 0x7, 0xdf, 0x61, 0xaf, - 0x8c, 0x6b, 0xf3, 0xce, 0x2a, 0xa8, 0xf9, 0xa9, 0x53, 0xf5, - 0x7f, 0x91, 0xe1, 0xe6, 0x52, 0xd6, 0x31, 0xa, 0x28, 0xa2, - 0xbe, 0x8, 0xf1, 0x82, 0xba, 0xbf, 0x85, 0x9a, 0x60, 0xd5, - 0xbe, 0x20, 0xe8, 0x70, 0x30, 0xca, 0x2d, 0xc0, 0x95, 0xbe, - 0x88, 0xb, 0x7f, 0xec, 0xb5, 0xca, 0x57, 0xa2, 0x7c, 0x4, - 0x50, 0x7e, 0x24, 0xd9, 0x13, 0xd4, 0x45, 0x29, 0x1f, 0xf7, - 0xc1, 0xaf, 0x43, 0x2f, 0x82, 0xa9, 0x8b, 0xa5, 0x17, 0xd6, - 0x4b, 0xf3, 0x36, 0xa2, 0xb9, 0xaa, 0xc5, 0x79, 0xa3, 0xea, - 0x7a, 0x28, 0xa2, 0xbf, 0x70, 0x3e, 0xbc, 0x28, 0xa2, 0x8a, - 00, 0x28, 0xa2, 0x8a, 00, 0x2b, 0x95, 0xf8, 0xa3, 0xaa, - 0xd, 0x1f, 0xe1, 0xfe, 0xb9, 0x71, 0x9c, 0x31, 0xb7, 0x68, - 0x97, 0xfd, 0xe7, 0xf9, 0x47, 0xf3, 0xae, 0xaa, 0xbc, 0x67, - 0xf6, 0x92, 0xf1, 0x1a, 0xdb, 0x68, 0xb6, 0x1a, 0x2a, 0x37, - 0xef, 0x6e, 0xa4, 0xf3, 0xe4, 0x1e, 0x88, 0xbd, 0x3f, 0x36, - 0x3f, 0xf8, 0xed, 0x79, 0x99, 0x9d, 0x75, 0x86, 0xc1, 0xd4, - 0xa8, 0xfb, 0x69, 0xea, 0xf4, 0x47, 0x3e, 0x22, 0x7e, 0xce, - 0x94, 0xa4, 0x7c, 0xf5, 0x45, 0x14, 0x57, 0xe2, 0x47, 0xc9, - 0x5, 0x14, 0x51, 0x40, 0x1d, 0x6f, 0xc2, 0x7b, 0x3f, 0xb7, - 0x7c, 0x45, 0xd0, 0xa3, 0xc6, 0x42, 0xdc, 0x9, 0xf, 0xfc, - 0x4, 0x16, 0xfe, 0x95, 0xf5, 0xf5, 0x7c, 0xe3, 0xfb, 0x37, - 0xe8, 0x7f, 0x6c, 0xf1, 0x45, 0xee, 0xa6, 0xcb, 0x94, 0xb2, - 0x83, 0x62, 0x9f, 0xf6, 0xdc, 0xe3, 0xf9, 0x6, 0xfc, 0xeb, - 0xe8, 0xea, 0xfd, 0x4f, 0x86, 0x68, 0xba, 0x78, 0x27, 0x37, - 0xf6, 0x9b, 0x7f, 0x76, 0x87, 0xd1, 0x65, 0xf1, 0xb5, 0x2b, - 0xf7, 0x61, 0x5e, 0x6b, 0xf1, 0x7f, 0xe1, 0x58, 0xf1, 0xbd, - 0xa2, 0xdf, 0xd8, 0x5, 0x8f, 0x58, 0xb7, 0x42, 00, 0x3c, - 0x9, 0xd7, 0xfb, 0xa4, 0xfa, 0xfa, 0x1f, 0xc3, 0xe9, 0xe9, - 0x54, 0x57, 0xd1, 0xe2, 0x70, 0xd4, 0xf1, 0x74, 0x9d, 0x1a, - 0xaa, 0xe9, 0x9d, 0xf5, 0x29, 0xc6, 0xac, 0x5c, 0x65, 0xb1, - 0xf0, 0xdd, 0xed, 0x8d, 0xc6, 0x9b, 0x75, 0x25, 0xb5, 0xd4, - 0x32, 0x5b, 0xdc, 0x46, 0x76, 0xbc, 0x52, 0x2e, 0xd6, 0x53, - 0xee, 0x2a, 0xa, 0xfb, 0x17, 0xc6, 0x3f, 0xf, 0x34, 0x4f, - 0x1c, 0x42, 0xa3, 0x52, 0xb6, 0xfd, 0xfa, 0xc, 0x25, 0xcc, - 0x47, 0x6c, 0x8b, 0xf8, 0xf7, 0x1e, 0xc7, 0x22, 0xbc, 0x3f, - 0xc5, 0x3f, 0xb3, 0xde, 0xbb, 0xa4, 0x34, 0x92, 0xe9, 0x4f, - 0x1e, 0xaf, 0x6a, 0x39, 0xa, 0xe, 0xc9, 0x80, 0xff, 00, - 0x74, 0xf0, 0x7f, 0x3, 0xf8, 0x57, 0xe6, 0x38, 0xee, 0x1f, - 0xc5, 0x61, 0x5b, 0x95, 0x25, 0xcf, 0x1f, 0x2d, 0xfe, 0x6b, - 0xfc, 0x8f, 0x9e, 0xad, 0x82, 0xa9, 0x4f, 0x58, 0xea, 0x8f, - 0x2a, 0xa2, 0xac, 0x5f, 0x69, 0xf7, 0x5a, 0x65, 0xc3, 0x41, - 0x79, 0x6f, 0x2d, 0xac, 0xcb, 0xd6, 0x39, 0x90, 0xab, 0xf, - 0xc0, 0xd5, 0x7a, 0xf9, 0x86, 0x9c, 0x5d, 0x99, 0xe7, 0xec, - 0x14, 0x51, 0x45, 0x20, 0xa, 0x28, 0xa2, 0x80, 0x25, 0xb5, - 0xbb, 0x9e, 0xc6, 0x75, 0x9a, 0xda, 0x69, 0x2d, 0xe6, 0x5e, - 0x56, 0x48, 0x9c, 0xab, 0xf, 0xa1, 0x15, 0xe9, 0x5e, 0x11, - 0xf8, 0xfb, 0xaf, 0x68, 0x6e, 0x91, 0x6a, 0x64, 0x6b, 0x36, - 0x9d, 0xf, 0x98, 0x42, 0xca, 0xbf, 0x46, 0xc7, 0x3f, 0x8e, - 0x7e, 0xb5, 0xe6, 0x14, 0x57, 0x66, 0x1b, 0x19, 0x5f, 0x9, - 0x2e, 0x6a, 0x13, 0x6b, 0xf2, 0xfb, 0xb6, 0x35, 0xa7, 0x56, - 0x74, 0x9d, 0xe0, 0xec, 0x7d, 0x8f, 0xe0, 0xdf, 0x1f, 0xe8, - 0xfe, 0x38, 0xb4, 0xf3, 0x74, 0xeb, 0x8f, 0xdf, 0x28, 0xfd, - 0xe5, 0xb4, 0xbf, 0x2c, 0xa9, 0xf5, 0x1d, 0xc7, 0xb8, 0xe2, - 0xba, 0x4a, 0xf8, 0x7b, 0x4b, 0xd5, 0x2e, 0xf4, 0x5d, 0x42, - 0xb, 0xdb, 0x19, 0xda, 0xde, 0xea, 0x16, 0xdc, 0x92, 0x27, - 0x50, 0x7f, 0xcf, 0x6a, 0xfa, 0xa3, 0xe1, 0x4f, 0xc4, 0x88, - 0xbc, 0x7d, 0xa3, 0x91, 0x36, 0x23, 0xd5, 0x6d, 0x80, 0x17, - 0x31, 0x81, 0x85, 0x6c, 0xf4, 0x75, 0xf6, 0x38, 0xfc, 0xf, - 0xe1, 0x5f, 0xa4, 0xe5, 0x19, 0xdc, 0x71, 0xcf, 0xd8, 0xd6, - 0x56, 0x9f, 0xe0, 0xff, 00, 0xe0, 0xf9, 0x1e, 0xf6, 0x17, - 0x16, 0xab, 0x7b, 0x93, 0xd1, 0xfe, 0x67, 0x73, 0x45, 0x14, - 0x57, 0xd5, 0x9e, 0x90, 0x51, 0x45, 0x14, 00, 0x57, 0xcc, - 0xff, 00, 0xb4, 0xf5, 0xdf, 0xef, 0xd9, 0x33, 0xd1, 0x71, - 0x5f, 0x4c, 0x57, 0xc9, 0xbf, 0xb4, 0xbd, 0xd1, 0x7d, 0x52, - 0x55, 0xcf, 0xf1, 0x1a, 0xf9, 0xdc, 0xf6, 0x56, 0xc1, 0xb5, - 0xdc, 0xf1, 0xb3, 0x69, 0x72, 0xe1, 0x64, 0x7c, 0xdf, 0xac, - 0x36, 0xdb, 0x77, 0x3e, 0xd5, 0x4f, 0xf6, 0x27, 0xb6, 0xfe, - 0xd1, 0xfd, 0xb2, 0xf4, 0xc7, 0x20, 0x37, 0xd9, 0x34, 0xab, - 0xe9, 0xf9, 0xed, 0x95, 0x54, 0xcf, 0xfe, 0x3f, 0x53, 0x78, - 0x81, 0xf6, 0xd9, 0xc8, 0x7f, 0xd9, 0x35, 0x77, 0xfe, 0x9, - 0xe7, 0x69, 0xf6, 0xef, 0xda, 0xbb, 0x5c, 0xb9, 0xea, 0x2d, - 0x3c, 0x3b, 0x3f, 0xe6, 0xd3, 0xc2, 0x3f, 0xa1, 0xaf, 0x27, - 0x23, 0x8e, 0xb7, 0x3f, 0x34, 0xc8, 0x23, 0xcf, 0x9b, 0xa7, - 0xd9, 0x33, 0xf4, 0xee, 0x8a, 0x28, 0xaf, 0xb8, 0x3f, 0x64, - 0xa, 0x28, 0xa2, 0x80, 0x23, 0xb9, 0xb8, 0x8e, 0xd2, 0xde, - 0x59, 0xe5, 0x60, 0x91, 0x44, 0xa5, 0xdd, 0x8f, 0x40, 00, - 0xc9, 0x35, 0xf9, 0xe1, 0xe3, 0xcf, 0x13, 0xc9, 0xe3, 0x3f, - 0x19, 0xea, 0xfa, 0xcb, 0x9c, 0x8b, 0xbb, 0x86, 0x68, 0xfd, - 0xa3, 0x1c, 0x20, 0xff, 00, 0xbe, 0x40, 0xaf, 0xaf, 0x3f, - 0x69, 0x7f, 0x18, 0x9f, 0xa, 0x7c, 0x33, 0xbb, 0x82, 0x17, - 0xdb, 0x77, 0xaa, 0xb7, 0xd8, 0xa3, 0xf5, 0xda, 0xc0, 0x97, - 0x3f, 0xf7, 0xc8, 0x3f, 0x98, 0xaf, 0x8d, 0x7c, 0x3d, 0xa5, - 0x3e, 0xb3, 0xac, 0xd9, 0xd9, 0x46, 0x9, 0x69, 0xa4, 0x54, - 00, 0x7b, 0x9a, 0xf8, 0x7e, 0x20, 0xc4, 0x39, 0x4e, 0x18, - 0x78, 0xf4, 0xd7, 0xe6, 0xf6, 0x3e, 0xb, 0x88, 0x6b, 0xba, - 0xb5, 0xa9, 0xe1, 0x21, 0xd3, 0x57, 0xea, 0xf6, 0xfe, 0xbc, - 0xcf, 0xab, 0x3f, 0x65, 0x6f, 0x8, 0x7f, 0x65, 0x78, 0x5a, - 0x6d, 0x5e, 0x58, 0xf6, 0xcd, 0x76, 0xc5, 0x54, 0x91, 0xfc, - 0x22, 0xbd, 0xd6, 0xb2, 0xbc, 0x2d, 0xa2, 0xc7, 0xe1, 0xef, - 0xf, 0xd8, 0xe9, 0xf1, 0x28, 0x55, 0x82, 0x20, 0xbc, 0xe, - 0xfd, 0xeb, 0x56, 0xbe, 0xab, 0x5, 0x87, 0x58, 0x5c, 0x3c, - 0x29, 0x76, 0x5f, 0x8f, 0x53, 0xec, 0xb0, 0x94, 0x16, 0x1e, - 0x84, 0x69, 0x2e, 0x88, 0x28, 0xa2, 0x8a, 0xee, 0x3a, 0xc2, - 0x8a, 0x28, 0xa0, 0xf, 0xcb, 0xbf, 0xf8, 0x2d, 0x1f, 0xc6, - 0x4b, 0xfb, 0x3b, 0x6f, 0x5, 0xfc, 0x31, 0xb3, 0x73, 0x15, - 0x8d, 0xea, 0x36, 0xb5, 0xa8, 0x60, 0x90, 0x65, 0xda, 0xc6, - 0x38, 0x50, 0xf6, 0x20, 0x1d, 0xed, 0xf5, 0xb, 0xe9, 0x5f, - 0x9b, 0x5f, 0xb, 0x34, 0xfd, 0x7b, 0xc5, 0x3e, 0x3e, 0xf0, - 0xe7, 0x86, 0xb4, 0x3d, 0x52, 0xf3, 0x4f, 0xbc, 0xd5, 0xf5, - 0x8, 0x2c, 0x22, 0x92, 0xda, 0x77, 0x8f, 0x61, 0x92, 0x40, - 0x9b, 0xbe, 0x52, 0x3a, 0x67, 0x3f, 0x85, 0x7e, 0x9a, 0xff, - 00, 0xc1, 0x49, 0xec, 0xfe, 0xd, 0xfe, 0xd2, 0xba, 0x1d, - 0xa6, 0xa7, 0xe1, 0xbf, 0x8a, 0xfe, 0x12, 0xb7, 0xf8, 0x87, - 0xe1, 0x7f, 0x36, 0xd9, 0x74, 0xfb, 0xbd, 0x52, 0x28, 0x56, - 0xee, 0x2d, 0xdf, 0x3c, 0x5, 0x98, 0x80, 0xae, 0xac, 0x9, - 0x5c, 0x9c, 0x64, 0xb0, 0x38, 0xce, 0x47, 0xe5, 0xa7, 0x85, - 0xfc, 0x47, 0xa8, 0x78, 0xb, 0xc5, 0xfa, 0x56, 0xb9, 0xa6, - 0xca, 0xb1, 0xea, 0x9a, 0x3d, 0xec, 0x77, 0x70, 0x48, 0xac, - 0x1d, 0x44, 0x91, 0x38, 0x65, 0xe4, 0x1c, 0x30, 0xca, 0xf6, - 0x38, 0x22, 0xa9, 0x10, 0xf7, 0x3f, 0xa6, 0x8f, 0x9, 0x78, - 0x6a, 0xd7, 0xc1, 0xde, 0x17, 0xd2, 0xb4, 0x2b, 0x22, 0xe6, - 0xd7, 0x4e, 0xb6, 0x8e, 0xd6, 0x36, 0x91, 0x8b, 0x3b, 0x4, - 0x50, 0x37, 0x31, 0x3c, 0x92, 0x71, 0x92, 0x4f, 0x52, 0x6b, - 0x5e, 0xbe, 0x30, 0xf8, 0x1b, 0xff, 00, 0x5, 0x54, 0xf8, - 0x37, 0xf1, 0x2b, 0x43, 0xb4, 0x5f, 0x15, 0xea, 0xa7, 0xc0, - 0x3e, 0x22, 0xd8, 0x5, 0xc5, 0xa6, 0xa6, 0x8c, 0xd6, 0xc5, - 0xf1, 0xc9, 0x8e, 0x75, 0x5, 0x76, 0xfa, 0x6e, 0xda, 0x7d, - 0xab, 0xd9, 0xad, 0x7f, 0x6d, 0x3f, 0x80, 0xf7, 0x87, 0x11, - 0xfc, 0x5b, 0xf0, 0x88, 0x3f, 0xf4, 0xd3, 0x55, 0x89, 0x3f, - 0xf4, 0x22, 0x2a, 0x4b, 0x3d, 0xa6, 0x8a, 0xf3, 0x1d, 0x3f, - 0xf6, 0xa0, 0xf8, 0x3d, 0xab, 0x48, 0x12, 0xcb, 0xe2, 0x97, - 0x83, 0xee, 0x9c, 0xf4, 0x58, 0xb5, 0xcb, 0x66, 0x3f, 0xfa, - 0x1d, 0x77, 0x7a, 0xf, 0x89, 0xb4, 0x8f, 0x14, 0xda, 0x35, - 0xd6, 0x8d, 0xaa, 0xd9, 0x6a, 0xd6, 0xaa, 0xdb, 0xc, 0xd6, - 0x37, 0x9, 0x32, 0x6, 0xc6, 0x70, 0x4a, 0x92, 0x33, 0x82, - 0x3f, 0x3a, 00, 0xd3, 0xaf, 0x36, 0xf8, 0xf9, 0xe2, 0x1f, - 0xec, 0x6f, 0x2, 0x4b, 0x6b, 0x1c, 0x9b, 0x27, 0xd4, 0x24, - 0x10, 00, 0xf, 0x3b, 0x3a, 0xbf, 0xe8, 0x31, 0xff, 00, - 0x2, 0xaf, 0x49, 0xaf, 0x98, 0xff, 00, 0x68, 0x3f, 0x10, - 0x7f, 0x6a, 0xf8, 0xdf, 0xec, 0x28, 0xfb, 0xa0, 0xd3, 0xe2, - 0x11, 0xe0, 0x74, 0xde, 0xdf, 0x33, 0x7f, 0xec, 0xa3, 0xf0, - 0xaf, 0x3, 0x3c, 0xc5, 0x7d, 0x57, 0x3, 0x36, 0xb7, 0x96, - 0x8b, 0xe7, 0xff, 00, 0x2, 0xe7, 0x16, 0x32, 0xa7, 0xb3, - 0xa2, 0xfc, 0xf4, 0x3c, 0xc2, 0x8a, 0x28, 0xaf, 0xc7, 0x8f, - 0x97, 0xa, 0xb7, 0xa4, 0xe9, 0xb3, 0x6b, 0x3a, 0xa5, 0xa5, - 0x8c, 00, 0xb4, 0xd7, 0x32, 0xac, 0x4a, 00, 0xee, 0x4e, - 0x2a, 0xa5, 0x7a, 0x8f, 0xec, 0xf3, 0xa0, 0x1d, 0x4f, 0xc6, - 0xad, 0x7e, 0xe9, 0x98, 0x74, 0xf8, 0x4b, 0xee, 0x23, 0x8f, - 0x31, 0xbe, 0x55, 0x1f, 0x96, 0xe3, 0xf8, 0x57, 0x6e, 0xb, - 0xe, 0xf1, 0x58, 0x98, 0x51, 0x5d, 0x5f, 0xe1, 0xd7, 0xf0, - 0x35, 0xa5, 0xf, 0x69, 0x35, 0xe, 0xe7, 0xd2, 0x3a, 0x75, - 0x8c, 0x7a, 0x66, 0x9f, 0x6d, 0x69, 0x8, 0xdb, 0x14, 0x11, - 0xac, 0x48, 0x3d, 0x80, 0xc0, 0xfe, 0x55, 0x66, 0x8a, 0x2b, - 0xf7, 0x24, 0x94, 0x55, 0x91, 0xf6, 0x9, 0x5b, 0x40, 0xaf, - 0x11, 0xfd, 0xa6, 0xec, 0x43, 0x58, 0x68, 0x57, 0x9d, 0xd2, - 0x59, 0x62, 0x3f, 0xf0, 0x20, 0xf, 0xfe, 0xcb, 0x5e, 0xdd, - 0x5e, 0x4f, 0xfb, 0x48, 0xc3, 0xe6, 0x78, 0x26, 0xce, 0x4c, - 0x7f, 0xab, 0xbe, 0x43, 0xf9, 0xa3, 0x8a, 0xf1, 0xb3, 0xa8, - 0x73, 0xe5, 0xf5, 0x57, 0x95, 0xfe, 0xe7, 0x73, 0x93, 0x16, - 0xaf, 0x42, 0x47, 0xcd, 0x94, 0x51, 0x45, 0x7e, 0x32, 0x7c, - 0xa8, 0x56, 0xc7, 0x83, 0x6f, 0x8e, 0x9b, 0xe2, 0xdd, 0x1a, - 0xe8, 0x1c, 0x79, 0x57, 0x71, 0x31, 0x3e, 0xdb, 0x86, 0x7f, - 0x4a, 0xc7, 0xa7, 0x47, 0x21, 0x86, 0x45, 0x91, 0x7e, 0xf2, - 0x90, 0xc3, 0xf0, 0xad, 0x29, 0xcf, 0xd9, 0xce, 0x33, 0x5d, - 0x1d, 0xc7, 0x17, 0x66, 0x99, 0xf7, 0x4d, 0x15, 0x5b, 0x4c, - 0xb9, 0x17, 0xba, 0x75, 0xad, 0xc0, 0xe9, 0x2c, 0x49, 0x20, - 0xfc, 0x40, 0x35, 0x66, 0xbf, 0x7b, 0x4e, 0xe9, 0x34, 0x7d, - 0x9a, 0xd4, 0x28, 0xa2, 0x8a, 0x63, 0xa, 0x28, 0xa2, 0x80, - 0x38, 0xbf, 0x8c, 0x3a, 0xc8, 0xd1, 0x3e, 0x1e, 0x6a, 0xd2, - 0x6, 0xdb, 0x24, 0xf1, 0xfd, 0x99, 0x30, 0x79, 0x25, 0xce, - 0xe, 0x3f, 0xc, 0x9f, 0xc2, 0xbe, 0x48, 0xaf, 0x75, 0xfd, - 0xa6, 0x35, 0xa3, 0x9d, 0x1f, 0x49, 0x46, 0xf9, 0x7e, 0x7b, - 0x99, 0x14, 0x7f, 0xdf, 0x2b, 0xff, 00, 0xb3, 0x57, 0x85, - 0x57, 0xe5, 0x1c, 0x47, 0x88, 0xf6, 0xd8, 0xde, 0x45, 0xb4, - 0x12, 0x5f, 0xaf, 0xea, 0x7c, 0xde, 0x3e, 0x7c, 0xd5, 0xad, - 0xd8, 0x28, 0xa2, 0x8a, 0xf9, 0x63, 0xce, 0xa, 0xfa, 0x7b, - 0xf6, 0x7d, 0xd0, 0xff, 00, 0xb2, 0xfc, 0x8, 0x2e, 0xd9, - 0x71, 0x2d, 0xfc, 0xcd, 0x2e, 0x48, 0xe7, 0x68, 0xf9, 0x57, - 0xf9, 0x13, 0xf8, 0xd7, 0xcc, 0x71, 0x44, 0xd3, 0x4a, 0x91, - 0xa0, 0x2c, 0xee, 0x42, 0xa8, 0x1d, 0xc9, 0xe9, 0x5f, 0x6b, - 0x78, 0x67, 0x49, 0x5d, 0xb, 0xc3, 0xda, 0x6e, 0x9c, 0xbf, - 0xf2, 0xed, 0x6e, 0x91, 0x1f, 0x72, 0x14, 0x64, 0xfe, 0x75, - 0xf6, 0x9c, 0x2f, 0x43, 0x9f, 0x11, 0x3a, 0xcf, 0xec, 0xaf, - 0xc5, 0xff, 00, 0xc0, 0x3d, 0x5c, 0xbe, 0x17, 0xa8, 0xe5, - 0xd8, 0xd3, 0xa2, 0x8a, 0x2b, 0xf4, 0xc3, 0xe8, 0x2, 0x8a, - 0x28, 0xa0, 0xc, 0x3f, 0x1c, 0xdb, 0xb5, 0xd7, 0x82, 0xf5, - 0xd8, 0x50, 0x65, 0xde, 0xc6, 0x65, 00, 0x7a, 0xec, 0x35, - 0xf1, 0x87, 0x5a, 0xfb, 0xa2, 0x58, 0x96, 0x78, 0x9e, 0x37, - 0x19, 0x47, 0x52, 0xa4, 0x1e, 0xe0, 0xd7, 0xc4, 0xfe, 0x21, - 0xd2, 0x5f, 0x42, 0xd7, 0x75, 0xd, 0x3a, 0x40, 0x77, 0x5b, - 0x4e, 0xf1, 0x73, 0xdc, 0x3, 0xc1, 0xfc, 0x46, 0xd, 0x7e, - 0x7d, 0xc5, 0x54, 0x9d, 0xe9, 0x55, 0xe9, 0xaa, 0xfd, 0x4f, - 0x13, 0x32, 0x8e, 0xb1, 0x91, 0x9f, 0x45, 0x14, 0x57, 0xc0, - 0x1e, 0x28, 0x57, 0x5f, 0xf0, 0x97, 0x55, 0x5d, 0x1f, 0xe2, - 0x1e, 0x8b, 0x33, 0x9c, 0x23, 0xcd, 0xe4, 0x31, 0x3f, 0xed, - 0x82, 0xa3, 0xf5, 0x22, 0xb9, 0xa, 0x74, 0x52, 0xbc, 0x32, - 0xa4, 0x91, 0xb1, 0x57, 0x42, 0x19, 0x58, 0x75, 0x4, 0x74, - 0x35, 0xbd, 0xa, 0xae, 0x85, 0x58, 0x55, 0x5f, 0x65, 0xa7, - 0xf7, 0x15, 0x9, 0x72, 0x49, 0x4b, 0xb1, 0xf7, 0x4d, 0x15, - 0xcb, 0x7c, 0x38, 0xf1, 0xb4, 0x1e, 0x39, 0xf0, 0xcd, 0xbd, - 0xea, 0xb2, 0xad, 0xda, 0xf, 0x2e, 0xe6, 0x10, 0x79, 0x47, - 0x1f, 0xd0, 0xf5, 0x1f, 0x5a, 0xea, 0x6b, 0xf7, 0x3a, 0x35, - 0x61, 0x5e, 0x9c, 0x6a, 0xd3, 0x77, 0x4f, 0x53, 0xec, 0x63, - 0x25, 0x38, 0xa9, 0x47, 0x66, 0x14, 0x51, 0x45, 0x6c, 0x50, - 0x51, 0x45, 0x23, 0x30, 0x45, 0x2c, 0xc4, 0x2a, 0x81, 0x92, - 0x4f, 0x41, 0x40, 0x11, 0xdd, 0x5d, 0x45, 0x63, 0x6d, 0x2d, - 0xc4, 0xf2, 0x2c, 0x50, 0x44, 0x85, 0xdd, 0xd8, 0xe0, 0x2a, - 0x81, 0x92, 0x4d, 0x7c, 0x79, 0xf1, 0x7, 0xc5, 0xaf, 0xe3, - 0x5f, 0x15, 0x5e, 0x6a, 0x64, 0x15, 0x85, 0x8f, 0x97, 0x2, - 0x1f, 0xe1, 0x8d, 0x78, 0x5f, 0xcf, 0xaf, 0xd4, 0x9a, 0xef, - 0xfe, 0x36, 0x7c, 0x58, 0x4d, 0x74, 0xbe, 0x83, 0xa3, 0xcd, - 0xba, 0xc1, 0x1b, 0xfd, 0x22, 0xe5, 0x1b, 0x89, 0x88, 0xfe, - 0x11, 0xfe, 0xc8, 0xf5, 0xee, 0x7d, 0xba, 0xf8, 0xed, 0x7e, - 0x63, 0xc4, 0x39, 0x9c, 0x71, 0x33, 0x58, 0x6a, 0x2e, 0xf1, - 0x8e, 0xef, 0xbb, 0xff, 00, 0x80, 0x7c, 0xf6, 0x3b, 0x10, - 0xaa, 0x3f, 0x67, 0x1d, 0x90, 0x51, 0x45, 0x15, 0xf1, 0xa7, - 0x96, 0x14, 0x51, 0x5d, 0x67, 0xc3, 0x2f, 0x6, 0x3f, 0x8d, - 0xfc, 0x57, 0x6d, 0x66, 0xca, 0xdf, 0x63, 0x8f, 0xf7, 0xd7, - 0x2e, 0x7, 0x44, 0x1d, 0xbf, 0x13, 0x81, 0xf8, 0xfb, 0x56, - 0xd4, 0x68, 0xcf, 0x11, 0x52, 0x34, 0xa9, 0xad, 0x5b, 0xb1, - 0x51, 0x8b, 0x9c, 0x94, 0x56, 0xec, 0xf7, 0xbf, 0x81, 0x7e, - 0x17, 0x6f, 0xe, 0xf8, 0x1e, 0x19, 0xa6, 0x5d, 0xb7, 0x3a, - 0x83, 0x7d, 0xa9, 0x81, 0x1c, 0x85, 0x20, 0x4, 0x1f, 0x90, - 0xcf, 0xe3, 0x5e, 0x89, 0x4d, 0x8e, 0x35, 0x8a, 0x35, 0x44, - 0x50, 0xa8, 0xa0, 0x28, 0x51, 0xd0, 0xa, 0x75, 0x7e, 0xe3, - 0x86, 0xa1, 0x1c, 0x2d, 0x18, 0x51, 0x8e, 0xd1, 0x56, 0x3e, - 0xbe, 0x9c, 0x15, 0x38, 0x28, 0x2e, 0x81, 0x45, 0x14, 0x57, - 0x49, 0xa0, 0x51, 0x45, 0x14, 0x1, 0x53, 0x51, 0xd2, 0x2c, - 0x75, 0x78, 0x4c, 0x37, 0xd6, 0x70, 0x5e, 0x44, 0x7a, 0xa4, - 0xf1, 0x87, 0x1f, 0xad, 0x79, 0xf6, 0xbf, 0xfb, 0x3f, 0xf8, - 0x63, 0x57, 0x2d, 0x25, 0xa2, 0xcf, 0xa5, 0x4a, 0x7f, 0xe7, - 0xdd, 0xf2, 0x99, 0xff, 00, 0x75, 0xb3, 0xfa, 0x11, 0x5e, - 0x99, 0x45, 0x72, 0x57, 0xc1, 0xe1, 0xf1, 0x2a, 0xd5, 0xa0, - 0xa5, 0xfd, 0x77, 0x32, 0x9d, 0x28, 0x54, 0xf8, 0xd5, 0xcf, - 0x9b, 0x3c, 0x45, 0xfb, 0x3a, 0xeb, 0xba, 0x68, 0x69, 0x34, - 0xbb, 0x88, 0x75, 0x58, 0x87, 0x44, 0xff, 00, 0x55, 0x26, - 0x3e, 0x84, 0xe0, 0xfe, 0x75, 0xe6, 0xba, 0xb6, 0x87, 0xa8, - 0x68, 0x37, 0x3f, 0x67, 0xd4, 0x6c, 0xa7, 0xb2, 0x9b, 0xfb, - 0xb3, 0x21, 0x5c, 0xfd, 0x3d, 0x7f, 0xa, 0xfb, 0x76, 0xa9, - 0xea, 0x9a, 0x45, 0x96, 0xb7, 0x68, 0xf6, 0xb7, 0xf6, 0xb1, - 0x5d, 0xdb, 0xb7, 0x58, 0xe5, 0x50, 0xc3, 0xff, 00, 0xad, - 0x5f, 0x2f, 0x8a, 0xe1, 0x8c, 0x3d, 0x4b, 0xbc, 0x3c, 0x9c, - 0x5f, 0x6d, 0xd7, 0xf9, 0x9e, 0x75, 0x4c, 0xbe, 0x12, 0xd6, - 0xe, 0xc7, 0xc4, 0x14, 0x57, 0xa5, 0x7c, 0x60, 0xf8, 0x56, - 0xbe, 0x5, 0xb8, 0x8a, 0xfb, 0x4f, 0x2f, 0x26, 0x93, 0x72, - 0xe5, 0x70, 0xfc, 0x98, 0x5f, 0xa8, 0x5c, 0xf7, 0x4, 0x67, - 0x7, 0xda, 0xbc, 0xd6, 0xbf, 0x3c, 0xc5, 0x61, 0xaa, 0xe0, - 0xea, 0xba, 0x35, 0x55, 0x9a, 0x3c, 0x4a, 0x94, 0xe5, 0x4a, - 0x4e, 0x32, 0xdc, 0x28, 0xa2, 0x8a, 0xe5, 0x33, 0xa, 0xea, - 0x7e, 0x19, 0x78, 0x96, 0x5f, 0xb, 0x78, 0xd3, 0x4d, 0xba, - 0x46, 0x22, 0x19, 0x25, 0x10, 0x4e, 0xb9, 0xe1, 0xa3, 0x62, - 0x1, 0xcf, 0xd3, 0x83, 0xf8, 0x57, 0x2d, 0x4a, 0xac, 0x55, - 0x81, 0x7, 0x4, 0x1c, 0x82, 0x2b, 0x6a, 0x35, 0x65, 0x42, - 0xac, 0x6a, 0xc7, 0x74, 0xee, 0x54, 0x24, 0xe1, 0x25, 0x25, - 0xd0, 0xfb, 0xaa, 0x8a, 0x82, 0xc5, 0xda, 0x5b, 0x2b, 0x77, - 0x6e, 0x19, 0xa3, 0x52, 0x7e, 0xb8, 0xa9, 0xeb, 0xf7, 0x94, - 0xee, 0xae, 0x7d, 0x9a, 0xd4, 0x28, 0xa2, 0x8a, 0x60, 0x21, - 0x38, 0x15, 0xf1, 0xaf, 0xed, 0xf, 0x77, 0xe7, 0x6b, 0xb2, - 0x8f, 0x57, 0x3f, 0xce, 0xbe, 0xc8, 0x94, 0xed, 0x89, 0xcf, - 0xa2, 0x93, 0x5f, 0x10, 0x7c, 0x73, 0xb9, 0xf3, 0xbc, 0x45, - 0x2f, 0xfb, 0xed, 0xfc, 0xeb, 0xe5, 0x78, 0x86, 0x56, 0xc3, - 0xc6, 0x3d, 0xd9, 0xf3, 0xb9, 0xec, 0xb9, 0x70, 0xac, 0xf1, - 0x1f, 0x14, 0xc9, 0xb2, 0xc2, 0x6f, 0xf7, 0x4d, 0x76, 0x9f, - 0xf0, 0x4c, 0x9d, 0x3c, 0x5d, 0x7c, 0x65, 0xf8, 0x91, 0xa9, - 0x11, 0x9f, 0xb3, 0xe9, 0x96, 0xd6, 0xe1, 0xb1, 0xfd, 0xf9, - 0x59, 0x8f, 0xfe, 0x81, 0x5c, 0xf, 0x8d, 0x25, 0xd9, 0xa6, - 0x4d, 0xf4, 0x35, 0xeb, 0xff, 00, 0xf0, 0x4b, 0x2b, 0xd, - 0xf7, 0x3f, 0x15, 0x35, 0x22, 0x3e, 0xfd, 0xcd, 0x95, 0xba, - 0x9f, 0xf7, 0x52, 0x46, 0x3f, 0xfa, 0x10, 0xac, 0x72, 0x38, - 0xe9, 0x73, 0xe1, 0xb8, 0x5e, 0x3c, 0xd9, 0x95, 0x49, 0x76, - 0x47, 0xdf, 0x74, 0x51, 0x45, 0x7d, 0x81, 0xfa, 0xd8, 0x51, - 0x45, 0x66, 0x78, 0x9b, 0x5d, 0x83, 0xc3, 0x1e, 0x1e, 0xd4, - 0x75, 0x6b, 0x93, 0x88, 0x6c, 0xe0, 0x79, 0xd8, 0x67, 0x19, - 0xda, 0x33, 0x8f, 0xa9, 0xe9, 0x4a, 0x4d, 0x45, 0x36, 0xfa, - 0x13, 0x29, 0x28, 0xa7, 0x27, 0xb2, 0x3e, 0x49, 0xfd, 0xaa, - 0xfc, 0x62, 0xda, 0xef, 0xc4, 0x25, 0xd1, 0xe3, 0x72, 0x6d, - 0x34, 0x88, 0x82, 0x15, 0xc8, 0x20, 0xca, 0xe0, 0x33, 0x1f, - 0xcb, 0x68, 0xfc, 0xd, 0x27, 0xec, 0xc1, 0xe1, 0xf, 0xed, - 0xcf, 0x1b, 0xad, 0xfc, 0xd1, 0xee, 0xb7, 0xb2, 0x52, 0xf9, - 0x23, 0x8d, 0xdd, 0xab, 0xc8, 0xf5, 0x6d, 0x52, 0xe3, 0x5e, - 0xd5, 0xef, 0x35, 0x1b, 0xa7, 0x32, 0x5c, 0xdd, 0xcc, 0xd3, - 0x48, 0xc7, 0xd5, 0x8e, 0x6b, 0xec, 0x9f, 0xd9, 0xaf, 0xc2, - 0x3f, 0xf0, 0x8f, 0x78, 0x12, 0x3b, 0xb9, 0x13, 0x6d, 0xc5, - 0xe3, 0x17, 0x39, 0xfe, 0xef, 0x6a, 0xfc, 0xef, 0x8, 0x9e, - 0x63, 0x99, 0x7b, 0x49, 0x6d, 0x7b, 0xfc, 0x96, 0xdf, 0xa1, - 0xf9, 0xd6, 0x5c, 0x9e, 0x63, 0x99, 0x4b, 0x11, 0x2d, 0x93, - 0xbf, 0xf9, 0x1e, 0xbb, 0x45, 0x14, 0x57, 0xe8, 0xa7, 0xe8, - 0xe1, 0x45, 0x79, 0xef, 0xed, 0x1, 0xf1, 0x6a, 0xcb, 0xe0, - 0x67, 0xc1, 0xbf, 0x15, 0xf8, 0xde, 0xf9, 0x94, 0x2e, 0x93, - 0x62, 0xf2, 0xc2, 0x8d, 0xd2, 0x59, 0xc8, 0xdb, 0xa, 0x7f, - 0xc0, 0x9c, 0xa8, 0xfc, 0x6b, 0xf2, 0x66, 0xc3, 0xfe, 0xb, - 0x29, 0xf1, 0xba, 0xdd, 0x97, 0xed, 0x5a, 0x2f, 0x83, 0xae, - 0xd0, 0x75, 0x2, 0xc2, 0xe2, 0x32, 0x7f, 0x11, 0x39, 0xfe, - 0x54, 0xa, 0xf6, 0x3f, 0x6a, 0x2b, 0xc7, 0x7f, 0x6b, 0xaf, - 0x8c, 0xf0, 0x7c, 0x4, 0xfd, 0x9e, 0xbc, 0x63, 0xe2, 0xe7, - 0x90, 0x2d, 0xe4, 0x36, 0x8d, 0x6d, 0x60, 0xb9, 0xc1, 0x7b, - 0xa9, 0x7f, 0x77, 0x10, 0x1f, 0x46, 0x6d, 0xc7, 0xd9, 0x4d, - 0x5f, 0xfd, 0x98, 0xbe, 0x21, 0x78, 0xaf, 0xe2, 0xc7, 0xc1, - 0x1f, 0xc, 0xf8, 0xc3, 0xc6, 0x5a, 0x5d, 0x96, 0x8b, 0xac, - 0x6b, 0x50, 0x7d, 0xb1, 0x6c, 0x6c, 0x43, 0xec, 0x8e, 0x6, - 0x3f, 0xba, 0x27, 0x79, 0x27, 0x2c, 0xb8, 0x6f, 0xf8, 0x10, - 0x15, 0x6f, 0xe3, 0x9f, 0xec, 0xf9, 0xe0, 0xaf, 0xda, 0x37, - 0xc3, 0x16, 0x9e, 0x1e, 0xf1, 0xd5, 0x85, 0xce, 0xa5, 0xa4, - 0xdb, 0x5c, 0x8b, 0xc8, 0xe0, 0xb7, 0xbc, 0x96, 0xdf, 0xf7, - 0xa1, 0x59, 0x43, 0x13, 0x1b, 0x2, 0x70, 0x19, 0xb8, 0x3c, - 0x73, 0x40, 0xcf, 0xe6, 0xc6, 0x59, 0x5e, 0x79, 0x5e, 0x49, - 0x18, 0xbc, 0x8e, 0x4b, 0x33, 0x31, 0xc9, 0x24, 0xf5, 0x26, - 0x9b, 0x5f, 0xba, 0x57, 0x5f, 0xf0, 0x49, 0xbf, 0xd9, 0xda, - 0xe1, 0x8, 0x8f, 0x40, 0xd6, 0x2d, 0x4f, 0xf7, 0xa2, 0xd6, - 0x67, 0x27, 0xff, 00, 0x1e, 0x26, 0xb0, 0x6f, 0x7f, 0xe0, - 0x8f, 0x3f, 0x2, 0x6e, 0x3, 0x79, 0x17, 0x5e, 0x2a, 0xb4, - 0x27, 0xa6, 0xdd, 0x4a, 0x36, 0x3, 0xf3, 0x8a, 0xaa, 0xe4, - 0x72, 0xb3, 0xf1, 0x2e, 0x8a, 0xfd, 0x8a, 0xd4, 0x7f, 0xe0, - 0x8b, 0x1f, 0xc, 0x27, 0x2c, 0x6c, 0xfc, 0x6d, 0xe2, 0xab, - 0x4f, 0x40, 0xff, 00, 0x67, 0x90, 0xf, 0xfc, 0x86, 0xd, - 0x72, 0xf7, 0xdf, 0xf0, 0x44, 0x8d, 0x5, 0xd9, 0xbe, 0xc5, - 0xf1, 0x4b, 0x51, 0x88, 0x76, 0x13, 0xe9, 0x51, 0xbf, 0xf2, - 0x91, 0x68, 0xb8, 0xb9, 0x59, 0xf9, 0x39, 0x8f, 0x6a, 0xfe, - 0x88, 0x7f, 0x62, 0xf, 0x82, 0xb1, 0xfc, 0x7, 0xfd, 0x9a, - 0xbc, 0x1f, 0xe1, 0xd6, 0x89, 0x53, 0x53, 0xb8, 0xb6, 0x1a, - 0x96, 0xa2, 0xc0, 0x60, 0xb5, 0xcc, 0xe0, 0x3b, 0x3, 0xfe, - 0xe8, 0x2a, 0x9f, 0x45, 0x15, 0xf1, 0xe7, 0x83, 0xff, 00, - 0xe0, 0x8b, 0xe9, 0xe1, 0xcf, 0x1e, 0x68, 0x3a, 0xad, 0xff, - 00, 0xc4, 0x68, 0x75, 0x8d, 0x16, 0xc6, 0xfa, 0x1b, 0x9b, - 0xab, 0x6, 0xd2, 0x8c, 0x4f, 0x71, 0x1a, 0x38, 0x63, 0x1e, - 0xef, 0x34, 0x81, 0xbb, 0x18, 0xe9, 0xde, 0xbf, 0x4e, 0x95, - 0x42, 0x28, 0x55, 0x1, 0x54, 0xc, 00, 0x3a, 0x1, 0x49, - 0x94, 0x95, 0x8a, 0x9a, 0xbe, 0xa5, 0x16, 0x8f, 0xa5, 0x5d, - 0xdf, 0x4c, 0x40, 0x8a, 0xda, 0x26, 0x95, 0x89, 0xf4, 0x3, - 0x35, 0xf1, 0x4e, 0xa5, 0xa8, 0x4d, 0xaa, 0xea, 0x17, 0x37, - 0xb7, 0xd, 0xbe, 0x7b, 0x89, 0x1a, 0x57, 0x3e, 0xe4, 0xe4, - 0xd7, 0xd6, 0x7f, 0x14, 0xf4, 0xd, 0x5f, 0xc5, 0x1e, 0x13, - 0x97, 0x4b, 0xd1, 0xcc, 0x2b, 0x2d, 0xc4, 0x8a, 0x25, 0x33, - 0x39, 0x51, 0xe5, 0x8e, 0x48, 0x1c, 0x1e, 0xa4, 0xf, 0xd6, - 0xbc, 0x32, 0x4f, 0xd9, 0xfb, 0xc5, 0xc8, 0x38, 0x82, 0xd2, - 0x4f, 0xf7, 0x6e, 0x7, 0xf5, 0xc5, 0x7c, 0x17, 0x11, 0x51, - 0xc5, 0x62, 0xaa, 0x42, 0x9d, 0x1a, 0x6d, 0xc6, 0x2a, 0xfa, - 0x2e, 0xaf, 0xfc, 0x8f, 0x23, 0x1d, 0x1a, 0x95, 0x24, 0x94, - 0x62, 0xda, 0x47, 0x9b, 0x51, 0x5d, 0xec, 0xdf, 0x3, 0x7c, - 0x67, 0xf, 0xfc, 0xc2, 0x84, 0x9f, 0xee, 0x5c, 0x46, 0x7f, - 0xf6, 0x6a, 0xa5, 0x2f, 0xc2, 0x2f, 0x18, 0x43, 0xf7, 0xb4, - 0x2b, 0x83, 0xfe, 0xe9, 0x56, 0xfe, 0x46, 0xbe, 0x2a, 0x58, - 0xc, 0x5c, 0x77, 0xa5, 0x2f, 0xb9, 0x9e, 0x4b, 0xa3, 0x55, - 0x7d, 0x97, 0xf7, 0x1c, 0x7d, 0x7d, 0x3f, 0xfb, 0x3f, 0xe8, - 0x1f, 0xd9, 0x3e, 0x4, 0x4b, 0xb7, 0x4d, 0xb3, 0x6a, 0x12, - 0xb4, 0xc4, 0x91, 0xce, 0xc1, 0xf2, 0xaf, 0xf2, 0x27, 0xf1, - 0xaf, 0x9, 0xb7, 0xf8, 0x63, 0xe2, 0x79, 0x6f, 0x60, 0xb7, - 0x93, 0x44, 0xbd, 0x84, 0x49, 0x22, 0xa1, 0x91, 0xa1, 0x3b, - 0x57, 0x27, 0x19, 0x27, 0xd0, 0x57, 0xd7, 0x3a, 0x75, 0x8c, - 0x5a, 0x5d, 0x85, 0xb5, 0x9c, 0xb, 0xb6, 0x18, 0x23, 0x58, - 0x90, 0x7a, 00, 0x30, 0x2b, 0xeb, 0x38, 0x6b, 0x5, 0x38, - 0xd7, 0x9d, 0x7a, 0xb1, 0x6b, 0x95, 0x59, 0x5d, 0x5b, 0x57, - 0xff, 00, 0x3, 0xf3, 0x3d, 0x2c, 0x5, 0x26, 0xa6, 0xe7, - 0x25, 0xb1, 0x66, 0x8a, 0x28, 0xaf, 0xd1, 0x4f, 0x74, 0x2b, - 0xcd, 0x7f, 0x68, 0x38, 0xbc, 0xcf, 0x87, 0x53, 0x36, 0x3e, - 0xe5, 0xcc, 0x4d, 0xfa, 0xe3, 0xfa, 0xd7, 0xa5, 0x57, 0x3, - 0xf1, 0xce, 0x2f, 0x37, 0xe1, 0x9e, 0xa8, 0x7f, 0xb8, 0xd1, - 0x37, 0xfe, 0x44, 0x5f, 0xf1, 0xaf, 0x37, 0x32, 0x5c, 0xd8, - 0x2a, 0xcb, 0xfb, 0xaf, 0xf2, 0x39, 0xf1, 0xa, 0xf4, 0xa5, - 0xe8, 0x7c, 0xa5, 0x45, 0x14, 0x57, 0xe2, 0x27, 0xc9, 0x5, - 0x14, 0x51, 0x40, 0x1f, 0x64, 0x7c, 0x3a, 0xba, 0xfb, 0x67, - 0x80, 0xf4, 0x9, 0x49, 0xc9, 0x36, 0x51, 0x3, 0xf5, 0xa, - 0x7, 0xf4, 0xae, 0x8e, 0xb8, 0x4f, 0x82, 0x17, 0x86, 0xf3, - 0xe1, 0xa6, 0x95, 0x93, 0x93, 0x17, 0x99, 0x11, 0xfc, 0x1d, - 0xb1, 0xfa, 0x62, 0xbb, 0xba, 0xfd, 0xd3, 0x5, 0x3f, 0x69, - 0x86, 0xa5, 0x3e, 0xf1, 0x5f, 0x91, 0xf6, 0x14, 0x5f, 0x35, - 0x38, 0xbf, 0x24, 0x14, 0x51, 0x45, 0x76, 0x1a, 0x85, 0x14, - 0x56, 0x7f, 0x88, 0x35, 0x68, 0xf4, 0x1d, 0xe, 0xff, 00, - 0x51, 0x97, 0xee, 0x5a, 0xc2, 0xf2, 0x9f, 0x7c, 0xe, 0x5, - 0x4c, 0xa4, 0xa1, 0x17, 0x29, 0x6c, 0x84, 0xdd, 0x95, 0xd9, - 0xf2, 0xbf, 0xc6, 0xd, 0x78, 0xf8, 0x83, 0xe2, 0x6, 0xa9, - 0x20, 0x6d, 0xd0, 0xdb, 0xbf, 0xd9, 0x63, 0xfa, 0x27, 0x7, - 0xff, 00, 0x1e, 0xdc, 0x7f, 0x1a, 0xe3, 0x2a, 0x4b, 0x89, - 0xde, 0xea, 0x79, 0x66, 0x90, 0xee, 0x92, 0x46, 0x2e, 0xc7, - 0xd4, 0x93, 0x93, 0x51, 0xd7, 0xe1, 0x38, 0x8a, 0xcf, 0x11, - 0x5a, 0x75, 0x65, 0xf6, 0x9b, 0x67, 0xc7, 0x4e, 0x4e, 0x72, - 0x72, 0x7d, 0x42, 0x8a, 0x28, 0xae, 0x72, 0xe, 0xb7, 0xe1, - 0x46, 0x8f, 0xfd, 0xb7, 0xf1, 0x7, 0x46, 0x81, 0x97, 0x7c, - 0x69, 0x37, 0x9e, 0xe3, 0xb6, 0x10, 0x16, 0xfe, 0x60, 0x57, - 0xd7, 0xd5, 0xf3, 0xdf, 0xec, 0xd1, 0xa3, 0xf9, 0xfa, 0xd6, - 0xad, 0xa9, 0xb2, 0xf1, 0x6f, 0xa, 0xc0, 0x87, 0xdd, 0xce, - 0x4f, 0xe8, 0xbf, 0xad, 0x7d, 0x9, 0x5f, 0xaa, 0xf0, 0xd5, - 0xf, 0x67, 0x82, 0xf6, 0x8f, 0x79, 0x36, 0xfe, 0x4b, 0x43, - 0xe8, 0xf0, 0x10, 0xe5, 0xa5, 0xcd, 0xdc, 0x28, 0xa2, 0x8a, - 0xfa, 0xb3, 0xd2, 0xa, 0x28, 0xa2, 0x80, 0xa, 0xf9, 0xdb, - 0xf6, 0x88, 0xf0, 0x69, 0xd3, 0xf5, 0x98, 0x7c, 0x41, 0x6e, - 0x9f, 0xe8, 0xf7, 0x98, 0x8e, 0x7c, 0xf, 0xbb, 0x28, 0x1c, - 0x1f, 0xc4, 0xf, 0xfc, 0x77, 0xde, 0xbe, 0x89, 0xac, 0xdf, - 0x10, 0xe8, 0x36, 0x9e, 0x27, 0xd1, 0xae, 0xb4, 0xcb, 0xd4, - 0xdf, 0x6f, 0x70, 0xbb, 0x5b, 0x1d, 0x54, 0xf5, 0x4, 0x7b, - 0x83, 0xcd, 0x79, 0x59, 0x9e, 0x9, 0x63, 0xf0, 0xd2, 0xa3, - 0xd7, 0x75, 0xeb, 0xfd, 0x68, 0x73, 0x62, 0x28, 0xfb, 0x6a, - 0x6e, 0x3d, 0x4f, 0x89, 0xa8, 0xae, 0x8b, 0xc7, 0x1e, 0x8, - 0xbf, 0xf0, 0x2e, 0xb5, 0x25, 0x95, 0xe2, 0x16, 0x88, 0x92, - 0x60, 0xb8, 0x3, 0xe5, 0x95, 0x3d, 0x47, 0xbf, 0xa8, 0xed, - 0x5c, 0xed, 0x7e, 0x33, 0x56, 0x94, 0xe8, 0xcd, 0xd3, 0xa8, - 0xac, 0xd1, 0xf2, 0xb2, 0x8b, 0x8b, 0xe5, 0x96, 0xe1, 0x45, - 0x14, 0x56, 0x44, 0x9b, 0x7e, 0x12, 0xf1, 0x86, 0xa7, 0xe0, - 0xbd, 0x51, 0x6f, 0xb4, 0xd9, 0xb6, 0x3f, 0xdd, 0x92, 0x36, - 0xe5, 0x25, 0x5f, 0x46, 0x15, 0xf4, 0x1f, 0x85, 0x3e, 0x3e, - 0x78, 0x7b, 0x5d, 0x44, 0x8f, 0x50, 0x66, 0xd1, 0xee, 0xb8, - 0x4, 0x4f, 0xcc, 0x44, 0xfb, 0x38, 0xe9, 0xf8, 0xe2, 0xbe, - 0x61, 0xa2, 0xbd, 0xac, 0x6, 0x6d, 0x89, 0xcb, 0xfd, 0xda, - 0x6e, 0xf1, 0xec, 0xf6, 0xff, 00, 0x80, 0x75, 0x51, 0xc4, - 0xd4, 0xa1, 0xa4, 0x76, 0xec, 0x7d, 0xb7, 0x69, 0xe2, 0xd, - 0x2e, 0xfd, 0x3, 0x5b, 0x6a, 0x36, 0x97, 0xa, 0x46, 0x73, - 0x1c, 0xea, 0xdf, 0xc8, 0xd4, 0xb3, 0x6a, 0xf6, 0x36, 0xeb, - 0xba, 0x5b, 0xdb, 0x78, 0x97, 0xd5, 0xe5, 0x50, 0x3f, 0x9d, - 0x7c, 0x3f, 0x8a, 0x31, 0x5f, 0x46, 0xb8, 0xae, 0x76, 0xd6, - 0x8e, 0xbe, 0xbf, 0xf0, 0xe, 0xff, 00, 0xed, 0x27, 0xfc, - 0xbf, 0x89, 0xf5, 0x9f, 0x88, 0xbe, 0x32, 0xf8, 0x5b, 0xc3, - 0xb1, 0x9c, 0xea, 0x2b, 0x7f, 0x38, 0xe9, 0xd, 0x96, 0x24, - 0x3f, 0x98, 0xe0, 0x7e, 0x26, 0xbc, 0x47, 0xe2, 0x7, 0xc6, - 0xad, 0x5b, 0xc6, 0x4b, 0x25, 0xa5, 0xa8, 0x3a, 0x66, 0x96, - 0xc0, 0xab, 0x43, 0x1b, 0x65, 0xe5, 0x1f, 0xed, 0xb7, 0xa7, - 0xb0, 0xe3, 0xeb, 0x5e, 0x75, 0x45, 0x78, 0x98, 0xdc, 0xf7, - 0x17, 0x8c, 0x8b, 0x85, 0xf9, 0x62, 0xfa, 0x2f, 0xf3, 0x39, - 0x2a, 0xe3, 0x2a, 0xd5, 0x56, 0xd9, 0x5, 0x14, 0x51, 0x5f, - 0x3a, 0x70, 0x85, 0x14, 0x55, 0x8b, 0xd, 0x3e, 0xe7, 0x55, - 0xbc, 0x86, 0xd2, 0xd2, 0x17, 0xb8, 0xb9, 0x95, 0x82, 0xa4, - 0x68, 0x32, 0x58, 0xd3, 0x49, 0xc9, 0xd9, 0x6e, 0x1b, 0x89, - 0x65, 0x65, 0x3e, 0xa3, 0x77, 0xd, 0xad, 0xb4, 0x4d, 0x35, - 0xc4, 0xcc, 0x11, 0x23, 0x41, 0x92, 0xc4, 0xf6, 0xaf, 0xad, - 0x3e, 0x18, 0xf8, 0x6, 0x2f, 00, 0xf8, 0x7d, 0x6d, 0xdb, - 0x64, 0x9a, 0x84, 0xe7, 0xcc, 0xb9, 0x99, 0x7b, 0xb7, 0x65, - 0x1e, 0xc3, 0xfc, 0x4f, 0x7a, 0xc6, 0xf8, 0x4b, 0xf0, 0x9a, - 0x2f, 0x4, 0x5b, 0xfd, 0xbf, 0x50, 0x9, 0x36, 0xb5, 0x2a, - 0xe0, 0x95, 0x39, 0x58, 0x14, 0xff, 00, 0xa, 0xfb, 0xfa, - 0x9f, 0xc3, 0xeb, 0xe9, 0x35, 0xfa, 0x86, 0x47, 0x94, 0x3c, - 0x1a, 0xfa, 0xc5, 0x75, 0xef, 0xbd, 0x97, 0x65, 0xfe, 0x67, - 0xd0, 0xe0, 0xf0, 0xbe, 0xcb, 0xdf, 0x9e, 0xff, 00, 0x90, - 0x51, 0x45, 0x23, 0x30, 0x55, 0x24, 0x9c, 0x1, 0xc9, 0x35, - 0xf5, 0xe7, 0xa8, 0x71, 0xba, 0xef, 0xc5, 0x8d, 0xf, 0xc3, - 0x5e, 0x29, 0xfe, 0xc4, 0xd4, 0x64, 0x7b, 0x77, 0xf2, 0x96, - 0x43, 0x73, 0xb7, 0x31, 0xa9, 0x39, 0xf9, 0x5b, 0x1c, 0x8e, - 0x30, 0x73, 0x8c, 0x73, 0x5d, 0x55, 0x8e, 0xa3, 0x6b, 0xaa, - 0x40, 0xb3, 0xd9, 0xdc, 0xc5, 0x75, 0xb, 0x72, 0x24, 0x85, - 0xc3, 0x29, 0xfc, 0x45, 0x7c, 0x75, 0xe3, 0x8d, 0x78, 0xf8, - 0x9b, 0xc5, 0xba, 0xa6, 0xa5, 0x9c, 0xa4, 0xd3, 0xb7, 0x97, - 0xfe, 0xe0, 0xe1, 0x7f, 0x40, 0x2a, 0x86, 0x93, 0xae, 0x6a, - 0x1a, 0xd, 0xc8, 0xb8, 0xd3, 0xaf, 0x67, 0xb2, 0x97, 0xfb, - 0xd0, 0xb9, 0x5c, 0xfd, 0x7d, 0x7f, 0x1a, 0xfc, 0xf5, 0x71, - 0x3c, 0xa9, 0xd7, 0x9c, 0x67, 0xe, 0x68, 0x5d, 0xda, 0xda, - 0x3b, 0x7e, 0xbf, 0x81, 0xe1, 0xac, 0xc1, 0xa9, 0xb4, 0xd5, - 0xd1, 0xf6, 0xed, 0x15, 0xf3, 0x26, 0x8d, 0xfb, 0x43, 0x78, - 0x9f, 0x4e, 0xda, 0xb7, 0x82, 0xd7, 0x53, 0x8c, 0x75, 0xf3, - 0x63, 0xd8, 0xe7, 0xf1, 0x5c, 0xf, 0xd2, 0xbb, 0x6d, 0x2f, - 0xf6, 0x96, 0xd2, 0xa6, 0x55, 0x1a, 0x86, 0x95, 0x77, 0x6c, - 0xdd, 0xcc, 0xc, 0xb2, 0x2f, 0xeb, 0xb4, 0xd7, 0xd0, 0x51, - 0xcf, 0xf0, 0x15, 0xb7, 0x9f, 0x2b, 0xf3, 0x5f, 0xd2, 0x3b, - 0x61, 0x8d, 0xa3, 0x2e, 0xb6, 0x3d, 0x96, 0x8a, 0xf3, 0xcb, - 0x5f, 0x8f, 0x5e, 0xe, 0xb8, 0xc6, 0xeb, 0xe9, 0xad, 0xcf, - 0xa4, 0xb6, 0xef, 0xfd, 0x1, 0xad, 0x8, 0xbe, 0x31, 0x78, - 0x3a, 0x51, 0xc6, 0xb9, 0x2, 0xff, 00, 0xbc, 0xae, 0x3f, - 0x98, 0xaf, 0x4a, 0x39, 0x86, 0xe, 0x7f, 0xd, 0x58, 0xfd, - 0xe8, 0xe8, 0x55, 0xe9, 0x3d, 0xa4, 0xbe, 0xf3, 0xb3, 0xa2, - 0xb8, 0xa9, 0xfe, 0x32, 0xf8, 0x36, 0x1, 0x93, 0xad, 0xc4, - 0xff, 00, 0xf5, 0xce, 0x37, 0x6f, 0xe4, 0x2b, 0x9b, 0xd7, - 0x7f, 0x68, 0xcd, 0x2, 0xca, 0x16, 0x1a, 0x65, 0xbd, 0xce, - 0xa3, 0x3f, 0xf0, 0xee, 0x5f, 0x2a, 0x3f, 0xc4, 0x9e, 0x7f, - 0x4a, 0x8a, 0x99, 0x9e, 0xa, 0x92, 0xbc, 0xaa, 0xc7, 0xef, - 0xbf, 0xe4, 0x29, 0x62, 0x29, 0x45, 0x5d, 0xc9, 0x16, 0xbf, - 0x68, 0x6d, 0x4a, 0xde, 0xd7, 0xc0, 0x46, 0xd6, 0x42, 0x3e, - 0xd1, 0x75, 0x71, 0x18, 0x89, 0x7b, 0xfc, 0xa7, 0x73, 0x1f, - 0xc8, 0x63, 0xf1, 0xaf, 0x98, 0xeb, 0x7b, 0xc6, 0x3e, 0x35, - 0xd4, 0xfc, 0x71, 0xaa, 0x7d, 0xb7, 0x52, 0x90, 0x12, 0xa3, - 0x6c, 0x50, 0xc6, 0x30, 0x91, 0xaf, 0xa0, 0x1f, 0xd7, 0xad, - 0x60, 0xd7, 0xe5, 0x99, 0xbe, 0x3a, 0x38, 0xfc, 0x53, 0xab, - 0x5, 0xee, 0xa5, 0x64, 0x7c, 0xe6, 0x26, 0xb2, 0xad, 0x53, - 0x99, 0x6c, 0x14, 0x51, 0x45, 0x78, 0xa7, 0x28, 0x55, 0xcd, - 0x1e, 0xc5, 0xb5, 0x3d, 0x5e, 0xca, 0xcd, 0x46, 0x5a, 0xe2, - 0x74, 0x88, 0x1, 0xfe, 0xd3, 0x1, 0xfd, 0x6a, 0x9d, 0x7a, - 0x77, 0xc0, 0x1f, 0xa, 0x9d, 0x73, 0xc6, 0x1f, 0xda, 0x12, - 0xa9, 0x36, 0xda, 0x6a, 0xf9, 0xb9, 0xec, 0x64, 0x3c, 0x20, - 0xfe, 0x67, 0xf0, 0x15, 0xdb, 0x82, 0xc3, 0xcb, 0x15, 0x88, - 0x85, 0x18, 0xf5, 0x7f, 0x87, 0x5f, 0xc0, 0xd6, 0x94, 0x1d, - 0x49, 0xa8, 0xae, 0xa7, 0xd3, 0x68, 0xa1, 0x14, 0x28, 0xe8, - 0x6, 0x29, 0xd4, 0x51, 0x5f, 0xb9, 0x9f, 0x60, 0x14, 0x51, - 0x45, 00, 0x56, 0xd4, 0x5f, 0xcb, 0xb0, 0xb8, 0x6e, 0x98, - 0x43, 0xfc, 0xab, 0xe1, 0x1f, 0x8b, 0xd7, 0x1e, 0x77, 0x88, - 0xe5, 0xef, 0xf3, 0x1f, 0xe7, 0x5f, 0x72, 0xf8, 0x92, 0x5f, - 0x27, 0x43, 0xbc, 0x6e, 0x98, 0x8c, 0xd7, 0xc1, 0x5f, 0x12, - 0xa6, 0xf3, 0xbc, 0x45, 0x3f, 0xb3, 0x1a, 0xf8, 0xce, 0x22, - 0x97, 0xbb, 0x4e, 0x3e, 0x67, 0xc9, 0xf1, 0xc, 0xad, 0x41, - 0x23, 0xc8, 0x3e, 0x20, 0x4b, 0xb3, 0x4a, 0x9b, 0xe8, 0x6b, - 0xe9, 0x1f, 0xf8, 0x25, 0xa6, 0x9e, 0x23, 0xf8, 0x57, 0xe3, - 0x5b, 0xfc, 0x7c, 0xd7, 0x5e, 0x20, 0x64, 0xcf, 0xb2, 0x41, - 0x1f, 0xff, 00, 0x14, 0x6b, 0xe6, 0x1f, 0x89, 0x93, 0x6c, - 0xd2, 0x65, 0xfa, 0x1f, 0xe5, 0x5f, 0x60, 0x7f, 0xc1, 0x32, - 0x6c, 0x3e, 0xcd, 0xfb, 0x35, 0x1b, 0xad, 0xb8, 0x37, 0xba, - 0xe5, 0xec, 0xd9, 0xf5, 00, 0xaa, 0x7f, 0xec, 0x95, 0xd9, - 0x92, 0xc6, 0xd4, 0xcf, 0x99, 0xe1, 0x18, 0xdf, 0x13, 0x5e, - 0x7e, 0x87, 0xd6, 0x74, 0x51, 0x45, 0x7d, 0x39, 0xfa, 0x90, - 0x57, 0x82, 0xfe, 0xd6, 0xde, 0x35, 0x3a, 0x3f, 0x84, 0x6d, - 0x3c, 0x3f, 0x3, 0x62, 0x7d, 0x56, 0x4d, 0xd2, 0xe0, 0xf2, - 0x22, 0x42, 0xf, 0xea, 0xd8, 0x1f, 0x81, 0xaf, 0x7a, 0xaf, - 0x85, 0xbf, 0x68, 0x3f, 0x1a, 0x1f, 0x1a, 0x7c, 0x4b, 0xd4, - 0x1a, 0x29, 0x4, 0x96, 0x5a, 0x79, 0xfb, 0x15, 0xbe, 0xd2, - 0x70, 0x42, 0x9f, 0x98, 0xfe, 0x2d, 0x9f, 0xc8, 0x57, 0x85, - 0x9c, 0xe2, 0x3d, 0x86, 0x15, 0xa5, 0xbc, 0xb4, 0xff, 00, - 0x33, 0xe7, 0xb3, 0xdc, 0x4f, 0xd5, 0xf0, 0x6e, 0x29, 0xeb, - 0x2d, 0x3f, 0xcf, 0xf0, 0x39, 0x5f, 0x2, 0xf8, 0x7e, 0x4f, - 0x12, 0xf8, 0xa3, 0x4f, 0xd3, 0xe3, 0x5d, 0xde, 0x6c, 0xaa, - 0xf, 0xd3, 0x3c, 0xd7, 0xe8, 0x46, 0x95, 0xa7, 0xc7, 0xa5, - 0x69, 0xd6, 0xf6, 0x91, 00, 0xb1, 0xc2, 0x81, 00, 0x1e, - 0xd5, 0xf2, 0xef, 0xec, 0x9d, 0xe0, 0xff, 00, 0xb6, 0x6b, - 0x77, 0x7a, 0xd4, 0xc9, 0x98, 0xed, 0xd3, 0x6c, 0x64, 0x8e, - 0x37, 0x1a, 0xfa, 0xb6, 0xb8, 0xb8, 0x7f, 0xf, 0xc9, 0x46, - 0x55, 0xde, 0xf2, 0xfc, 0x91, 0x87, 0xf, 0xe1, 0xbd, 0x8e, - 0x1b, 0xda, 0x3d, 0xe5, 0xf9, 0x5, 0x14, 0x51, 0x5f, 0x54, - 0x7d, 0x41, 0xf9, 0x87, 0xff, 00, 0x5, 0x9e, 0xf8, 0xdd, - 0x1d, 0xb6, 0x8b, 0xe1, 0x2f, 0x85, 0x76, 0x17, 0x2c, 0x2e, - 0x2e, 0x65, 0xfe, 0xda, 0xd4, 0xe3, 0x46, 0xc0, 0xf2, 0x97, - 0x72, 0x40, 0x8d, 0xeb, 0x96, 0xde, 0xd8, 0xff, 00, 0x61, - 0x4d, 0x7e, 0x72, 0xfe, 0xcf, 0x7f, 0xa, 0xe5, 0xf8, 0xdb, - 0xf1, 0xb3, 0xc1, 0xbe, 0x7, 0x89, 0xfc, 0xb5, 0xd6, 0x75, - 0x8, 0xe0, 0x99, 0xf3, 0x8d, 0xb0, 0x8c, 0xbc, 0xa4, 0x7b, - 0x88, 0xd5, 0xc8, 0xf7, 0xaf, 0x55, 0xff, 00, 0x82, 0x90, - 0x6b, 0xf7, 0x9a, 0xff, 00, 0xed, 0x9f, 0xf1, 0x1c, 0xdd, - 0xc8, 0xce, 0xb6, 0x77, 0x30, 0x59, 0x40, 0xac, 0x73, 0xb2, - 0x34, 0xb7, 0x8c, 00, 0x3d, 0xb2, 0x58, 0xff, 00, 0xc0, - 0x8d, 0x7c, 0xfb, 0xe1, 0x5f, 0x15, 0x6a, 0xfe, 0x7, 0xf1, - 0x1e, 0x9d, 0xaf, 0xe8, 0x3a, 0x84, 0xfa, 0x56, 0xb3, 0xa7, - 0xcc, 0xb7, 0x16, 0xb7, 0x96, 0xcd, 0xb6, 0x48, 0x9c, 0x74, - 0x20, 0xff, 00, 0x9c, 0xf4, 0xaa, 0x33, 0x6f, 0x53, 0xfa, - 0x71, 0x51, 0xa7, 0xf8, 0x4b, 0xc3, 0xc0, 0x7c, 0x96, 0x7a, - 0x5e, 0x99, 0x6b, 0x8f, 0x45, 0x8a, 0x18, 0xd3, 0xf9, 0x5, - 0x5f, 0xd2, 0xbf, 0xe, 0xbe, 0x24, 0x7f, 0xc1, 0x4e, 0x7e, - 0x37, 0x6a, 0x3f, 0x13, 0x7c, 0x4b, 0xa8, 0xf8, 0x57, 0xc6, - 0xd3, 0xe9, 0x9e, 0x1a, 0x9a, 0xfe, 0x66, 0xd3, 0x74, 0xe3, - 0x67, 0x6e, 0xe9, 0xd, 0xbe, 0xe2, 0x23, 0x1f, 0x34, 0x64, - 0xe7, 0x68, 0x4, 0xe4, 0x9e, 0x49, 0xa8, 0x3c, 0x61, 0xff, - 00, 0x5, 0x45, 0xf8, 0xd9, 0xe3, 0xcf, 0x86, 0xda, 0xd7, - 0x83, 0x35, 0x89, 0xf4, 0x49, 0xac, 0xf5, 0x6b, 0x17, 0xb0, - 0xb9, 0xbe, 0x86, 0xc5, 0xa2, 0xba, 0xf2, 0xdd, 0x76, 0xb1, - 0xc, 0xae, 0x14, 0x31, 0x19, 0x19, 0xdb, 0xdc, 0xd7, 0xc8, - 0xb4, 0x92, 0x1b, 0x7d, 0x8f, 0xdf, 0x7f, 0xf8, 0x27, 0x7f, - 0xc4, 0x8f, 0x88, 0xff, 00, 0x18, 0xbe, 0x1, 0x47, 0xe3, - 0x6f, 0x88, 0xfa, 0xc2, 0xea, 0xb7, 0x7a, 0xad, 0xf4, 0xa3, - 0x4f, 0x9, 0x69, 0x1d, 0xb8, 0x8e, 0xda, 0x33, 0xe5, 0xe4, - 0x84, 0x51, 0x92, 0xce, 0xae, 0x72, 0x7b, 0x1, 0x5f, 0x50, - 0xd7, 0xe3, 0xaf, 0xc3, 0xf, 0xf8, 0x2b, 0xf6, 0xa3, 0xf0, - 0xbf, 0xc0, 0xfa, 0x7, 0x85, 0x34, 0xff, 00, 0x84, 0xda, - 0x50, 0xd2, 0xb4, 0x6b, 0x38, 0xac, 0xa0, 0x58, 0x75, 0x69, - 0x23, 0x25, 0x51, 0x40, 0xc9, 0xfd, 0xd1, 0xe4, 0xf2, 0x4f, - 0xb9, 0x35, 0xe8, 0x5a, 0x7f, 0xfc, 0x16, 0xee, 0x16, 0x61, - 0xf6, 0xef, 0x84, 0xb2, 0x46, 0xbd, 0xcd, 0xbe, 0xb8, 0x1f, - 0xf9, 0xc0, 0x28, 0xb1, 0x57, 0x47, 0xea, 0x45, 0x15, 0xf9, - 0xbd, 0x65, 0xff, 00, 0x5, 0xb1, 0xf0, 0x3c, 0x85, 0x7e, - 0xd7, 0xf0, 0xe3, 0xc4, 0x10, 0xe, 0xe6, 0x1b, 0xc8, 0x24, - 0xc7, 0xe7, 0xb6, 0xba, 0xed, 0x3, 0xfe, 0xb, 0x19, 0xf0, - 0x8b, 0x5c, 0xbd, 0xb6, 0xb3, 0x3e, 0x19, 0xf1, 0x84, 0x17, - 0x57, 0x12, 0x2c, 0x51, 0xc6, 0x2d, 0x20, 0x93, 0x73, 0xb1, - 0xc0, 0x51, 0xb6, 0x6e, 0x72, 0x48, 0xed, 0x48, 0x2e, 0x8f, - 0xbc, 0xe8, 0xa8, 0xad, 0xa6, 0x37, 0x16, 0xd1, 0x4a, 0x63, - 0x78, 0x4b, 0xa0, 0x63, 0x1c, 0x98, 0xdc, 0xb9, 0x19, 0xc1, - 0xc7, 0x71, 0x59, 0x1e, 0x36, 0xf1, 0xae, 0x89, 0xf0, 0xe7, - 0xc2, 0x9a, 0x9f, 0x89, 0x7c, 0x47, 0x7f, 0x1e, 0x97, 0xa2, - 0x69, 0xb0, 0x99, 0xee, 0xee, 0xe5, 0x4, 0xac, 0x48, 0x3b, - 0xe0, 0x2, 0x4f, 0x5e, 0x80, 0x50, 0x33, 0x72, 0x8a, 0xf0, - 0x2b, 0xf, 0xdb, 0xdb, 0xf6, 0x7d, 0xd4, 0x63, 0xf, 0x1f, - 0xc5, 0x6f, 0xf, 0xc6, 0xf, 0x6b, 0x89, 0x9a, 0x23, 0xf9, - 0x32, 0x8a, 0xdc, 0xb1, 0xfd, 0xb1, 0x7e, 0x6, 0xea, 0x3f, - 0xea, 0x3e, 0x2d, 0x78, 0x40, 0xff, 00, 0xbf, 0xac, 0x42, - 0x9f, 0xfa, 0x13, 0xa, 00, 0xf6, 0x1a, 0x2b, 0x82, 0xd2, - 0x7e, 0x3e, 0x7c, 0x33, 0xd7, 0xbf, 0xe4, 0x1d, 0xf1, 0xb, - 0xc2, 0xf7, 0xdf, 0xf5, 0xc3, 0x58, 0xb7, 0x7f, 0xe4, 0xf5, - 0xd1, 0xd9, 0x78, 0xd7, 0xc3, 0xda, 0x91, 0x2, 0xd3, 0x5e, - 0xd3, 0x2e, 0x89, 0xe8, 0x21, 0xbc, 0x8d, 0xf3, 0xf9, 0x35, - 00, 0x6d, 0x51, 0x51, 0xa5, 0xc4, 0x52, 0x7d, 0xc9, 0x51, - 0xbf, 0xdd, 0x60, 0x6a, 0x4a, 00, 0x28, 0xa2, 0x8a, 00, - 0x2a, 0xbd, 0xfe, 0x9f, 0x6d, 0xaa, 0x5a, 0x49, 0x6b, 0x79, - 0x6f, 0x1d, 0xd5, 0xb4, 0x98, 0xdf, 0x14, 0xca, 0x19, 0x5b, - 0x9c, 0xf2, 0xf, 0xbd, 0x58, 0xa2, 0x93, 0x49, 0xab, 0x30, - 0x6a, 0xfa, 0x33, 0x96, 0x9b, 0xe1, 0x77, 0x84, 0xe7, 0x1f, - 0x36, 0x81, 0x62, 0x3f, 0xdc, 0x8b, 0x6f, 0xf2, 0xaa, 0x53, - 0x7c, 0x17, 0xf0, 0x6c, 0xfd, 0x74, 0x54, 0x5f, 0xf7, 0x25, - 0x91, 0x7f, 0x93, 0x57, 0x6d, 0x45, 0x72, 0x4b, 0x5, 0x85, - 0x96, 0xf4, 0xa3, 0xf7, 0x23, 0x27, 0x46, 0x9b, 0xde, 0x2b, - 0xee, 0x3c, 0xf6, 0x4f, 0x80, 0xde, 0xc, 0x7e, 0x9a, 0x74, - 0xa9, 0xfe, 0xed, 0xd4, 0x9f, 0xd5, 0xaa, 0xac, 0x9f, 0xb3, - 0xd7, 0x84, 0x9f, 0xee, 0xa5, 0xe4, 0x7f, 0xee, 0xdc, 0x7f, - 0x88, 0xaf, 0x4c, 0xa2, 0xb0, 0x79, 0x66, 0x9, 0xef, 0x46, - 0x3f, 0x72, 0x23, 0xea, 0xf4, 0x7f, 0x95, 0x18, 0x7e, 0xf, - 0xf0, 0x85, 0x97, 0x82, 0x74, 0x93, 0xa7, 0x58, 0x3c, 0xcf, - 0x6f, 0xe6, 0x34, 0xa3, 0xcf, 0x60, 0xc4, 0x13, 0x8c, 0x8c, - 0x80, 0x38, 0xe2, 0xb7, 0x28, 0xa2, 0xbb, 0xe9, 0xd3, 0x8d, - 0x28, 0xa8, 0x41, 0x59, 0x23, 0x68, 0xc5, 0x45, 0x59, 0x6c, - 0x14, 0x51, 0x45, 0x68, 0x50, 0x57, 0x25, 0xf1, 0x4b, 0xc3, - 0xfa, 0x9f, 0x8a, 0x7c, 0x1f, 0x73, 0xa5, 0xe9, 0x46, 0x21, - 0x3c, 0xee, 0x81, 0xcc, 0xce, 0x50, 0x6c, 0x7, 0x27, 0x9c, - 0x1f, 0x41, 0x5d, 0x6d, 0x15, 0x8d, 0x6a, 0x51, 0xaf, 0x4e, - 0x54, 0xa5, 0xb3, 0x56, 0x22, 0x71, 0x53, 0x8b, 0x8b, 0xea, - 0x7c, 0xb5, 0x2f, 0xc0, 0xf, 0x18, 0x47, 0xd2, 0xd6, 0xda, - 0x4f, 0xf7, 0x2e, 0x17, 0xfa, 0xe2, 0xa9, 0xcb, 0xf0, 0x47, - 0xc6, 0x71, 0xff, 00, 0xcc, 0x1f, 0x7f, 0xfb, 0xb3, 0xc7, - 0xff, 00, 0xc5, 0x57, 0xd6, 0x34, 0x57, 0xcb, 0xcb, 0x86, - 0x30, 0x4f, 0x69, 0x49, 0x7c, 0xd7, 0xf9, 0x1e, 0x7b, 0xcb, - 0xe9, 0x77, 0x67, 0xc8, 0x53, 0x7c, 0x25, 0xf1, 0x7c, 0x7, - 0xe6, 0xd0, 0x6e, 0x8f, 0xfb, 0x9b, 0x5b, 0xf9, 0x1a, 0xa3, - 0x3f, 0xc3, 0xef, 0x13, 0x5b, 0xff, 00, 0xac, 0xd0, 0x75, - 0x1, 0xf4, 0xb7, 0x63, 0xfc, 0x85, 0x7d, 0x97, 0x45, 0x61, - 0x2e, 0x16, 0xc3, 0x7d, 0x9a, 0x92, 0xfc, 0x3f, 0xc8, 0x87, - 0x97, 0x43, 0xa4, 0x99, 0xe7, 0xdf, 0x3, 0xbc, 0x37, 0x2f, - 0x87, 0x7c, 0xb, 0xf, 0xda, 0x61, 0x78, 0x2e, 0xee, 0xe5, - 0x79, 0xe4, 0x49, 0x14, 0xab, 0x2f, 0x3b, 0x54, 0x10, 0x7a, - 0x70, 0xa0, 0xfe, 0x35, 0xe8, 0x34, 0x51, 0x5f, 0x59, 0x86, - 0xa1, 0x1c, 0x35, 0x18, 0xd1, 0x8e, 0xd1, 0x56, 0x3d, 0x2a, - 0x70, 0x54, 0xe0, 0xa0, 0xba, 0x5, 0x14, 0x51, 0x5d, 0x26, - 0x81, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x6, 0x57, - 0x88, 0xfc, 0x33, 0xa6, 0xf8, 0xb3, 0x4d, 0x7b, 0x1d, 0x4e, - 0xd9, 0x6e, 0x20, 0x6e, 0x46, 0x78, 0x64, 0x3e, 0xaa, 0x7a, - 0x83, 0x5f, 0x3a, 0xf8, 0xef, 0xe0, 0x66, 0xb1, 0xe1, 0x97, - 0x96, 0xe7, 0x4d, 0x56, 0xd5, 0xb4, 0xd1, 0xc8, 0x31, 0x8c, - 0xcc, 0x83, 0xfd, 0xa5, 0x1d, 0x7e, 0xa3, 0xf2, 0x15, 0xf4, - 0xfd, 0x15, 0xe3, 0xe3, 0xf2, 0xac, 0x3e, 0x60, 0xbf, 0x78, - 0xad, 0x2e, 0xeb, 0x7f, 0xf8, 0x27, 0x2d, 0x6c, 0x34, 0x2b, - 0xfc, 0x5b, 0xf7, 0x3e, 0x15, 0x20, 0xa9, 0x20, 0x8c, 0x11, - 0xc1, 0x7, 0xb5, 0x25, 0x7d, 0x89, 0xe2, 0x7f, 0x86, 0xde, - 0x1e, 0xf1, 0x70, 0x63, 0x7f, 0xa7, 0x47, 0xe7, 0x9f, 0xf9, - 0x78, 0x87, 0xe4, 0x90, 0x7e, 0x23, 0xaf, 0xe3, 0x9a, 0xf3, - 0x2d, 0x6b, 0xf6, 0x66, 0x53, 0xb9, 0xb4, 0x9d, 0x64, 0x8f, - 0x48, 0xaf, 0x23, 0xcf, 0xfe, 0x3c, 0xbf, 0xe1, 0x5f, 0x5, - 0x89, 0xe1, 0xbc, 0x65, 0x17, 0x7a, 0x56, 0x9a, 0xfb, 0x9f, - 0xdc, 0xff, 00, 0xcc, 0xf1, 0xaa, 0x60, 0x2a, 0xc7, 0xe1, - 0xd4, 0xf0, 0x8a, 0x2b, 0xd0, 0x35, 0x3f, 0x81, 0x5e, 0x30, - 0xd3, 0xdc, 0x84, 0xb0, 0x8e, 0xf5, 0x7, 0xf1, 0xdb, 0x4c, - 0xa7, 0xf4, 0x62, 0xf, 0xe9, 0x58, 0x57, 0x3f, 0xe, 0x3c, - 0x53, 0x68, 0x71, 0x26, 0x81, 0x7f, 0xff, 00, 00, 0x81, - 0x9c, 0x7e, 0x99, 0xaf, 0xa, 0xa6, 0x7, 0x15, 0x49, 0xda, - 0x74, 0xa4, 0xbe, 0x4c, 0xe2, 0x74, 0x6a, 0x47, 0x78, 0xb3, - 0x9c, 0xa2, 0xb4, 0xe4, 0xf0, 0xc6, 0xb3, 0x11, 0xc3, 0xe9, - 0x37, 0xca, 0x7d, 0xd, 0xb3, 0xff, 00, 0x85, 0x35, 0x7c, - 0x39, 0xab, 0x31, 0xc0, 0xd2, 0xaf, 0x4f, 0xd2, 0xd9, 0xff, - 00, 0xc2, 0xb9, 0xbd, 0x95, 0x4f, 0xe5, 0x7f, 0x71, 0x1c, - 0xb2, 0xec, 0x67, 0x51, 0x5b, 0xf6, 0xfe, 00, 0xf1, 0x2d, - 0xd1, 0x1e, 0x56, 0x83, 0xa8, 0xb6, 0x7a, 0x13, 0x6c, 0xe0, - 0x7e, 0x64, 0x56, 0xe6, 0x9d, 0xf0, 0x47, 0xc6, 0x3a, 0x83, - 0xa8, 0x3a, 0x5f, 0xd9, 0x50, 0xff, 00, 0x1d, 0xc4, 0xa8, - 0xa0, 0x7e, 0x19, 0x27, 0xf4, 0xae, 0x88, 0x60, 0xb1, 0x35, - 0x3e, 0xa, 0x52, 0x7f, 0x26, 0x5a, 0xa5, 0x52, 0x5b, 0x45, - 0x9c, 0x25, 0x15, 0xee, 0x3a, 0x2f, 0xec, 0xcf, 0x2b, 0x6d, - 0x6d, 0x5b, 0x58, 0x54, 0xf5, 0x8a, 0xce, 0x3c, 0x9f, 0xfb, - 0xe9, 0xbf, 0xc2, 0xbd, 0x2f, 0xc3, 0x1f, 0xa, 0x7c, 0x35, - 0xe1, 0x4d, 0xaf, 0x6b, 0xa7, 0xac, 0xf7, 0x2b, 0xff, 00, - 0x2f, 0x17, 0x5f, 0xbc, 0x7f, 0xc3, 0x3c, 0xf, 0xc0, 0xa, - 0xf7, 0x30, 0xdc, 0x39, 0x8d, 0xac, 0xef, 0x51, 0x28, 0x2f, - 0x3d, 0x5f, 0xdc, 0xbf, 0xe0, 0x1d, 0x94, 0xf0, 0x35, 0x67, - 0xf1, 0x68, 0x7c, 0xfd, 0xe0, 0xbf, 0x83, 0x9a, 0xff, 00, - 0x8c, 0xc, 0x73, 0x18, 0x7f, 0xb3, 0xb4, 0xf6, 0x23, 0x37, - 0x37, 0x20, 0x82, 0x47, 0xaa, 0xaf, 0x56, 0xfd, 0x7, 0xbd, - 0x7d, 0xf, 0xe0, 0x9f, 0x87, 0x3a, 0x37, 0x81, 0x6d, 0xb6, - 0xd8, 0xc1, 0xe6, 0x5d, 0x32, 0xe2, 0x5b, 0xb9, 0x79, 0x91, - 0xff, 00, 0xc0, 0x7b, 0xa, 0xea, 0x68, 0xaf, 0xba, 0xc0, - 0x64, 0xd8, 0x6c, 0x7, 0xbd, 0x15, 0xcd, 0x2e, 0xef, 0xf4, - 0xec, 0x7b, 0x14, 0x30, 0xb4, 0xe8, 0xea, 0xb5, 0x7d, 0xc2, - 0x8a, 0x28, 0xaf, 0x74, 0xec, 0xa, 0xe5, 0x7e, 0x28, 0x6b, - 0xe3, 0xc3, 0x7e, 0x5, 0xd5, 0xae, 0xc3, 0x6d, 0x95, 0xa2, - 0x30, 0xc4, 0x7b, 0xef, 0x7f, 0x94, 0x7e, 0x59, 0xcf, 0xe1, - 0x5d, 0x55, 0x78, 0xc7, 0xed, 0x29, 0x71, 0x76, 0xfa, 0x46, - 0x95, 0x69, 0xd, 0xbc, 0xcf, 0x6d, 0xe6, 0xb4, 0xf3, 0x4a, - 0x88, 0x4a, 0x29, 0x3, 0xa, 0x9, 0xe9, 0xfc, 0x4d, 0xf9, - 0x57, 0x99, 0x99, 0xd7, 0x78, 0x7c, 0x1d, 0x4a, 0x91, 0xde, - 0xda, 0x7c, 0xf4, 0x39, 0xf1, 0x13, 0x70, 0xa5, 0x29, 0x23, - 0xe7, 0xba, 0x28, 0xa2, 0xbf, 0x12, 0x3e, 0x48, 0x28, 0xa2, - 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, - 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0xbb, 0x3f, 0x5, 0x7c, - 0x27, 0xd7, 0xbc, 0x69, 0x2c, 0x4f, 0x15, 0xbb, 0x59, 0x69, - 0xed, 0xc9, 0xbd, 0xb8, 0x5c, 0x2e, 0x3f, 0xd9, 0x1d, 0x5b, - 0xf0, 0xe3, 0xde, 0xb7, 0xa3, 0x42, 0xae, 0x22, 0x6a, 0x9d, - 0x18, 0xb6, 0xfc, 0x8b, 0x84, 0x25, 0x37, 0x68, 0xab, 0xb3, - 0x9c, 0xd0, 0x34, 0x1b, 0xdf, 0x13, 0x6a, 0xd6, 0xfa, 0x76, - 0x9f, 0x17, 0x9d, 0x73, 0x33, 0x60, 0xe, 0xca, 0x3b, 0xb1, - 0x3d, 0x80, 0xf5, 0xaf, 0xae, 0xbc, 0xb, 0xe0, 0xeb, 0x5f, - 0x3, 0xf8, 0x7a, 0xd, 0x3a, 0xdc, 0x6, 0x90, 0xd, 0xf3, - 0xcc, 0x6, 0xc, 0xb2, 0x1e, 0xa7, 0xfa, 0xf, 0x6a, 0x87, - 0xc0, 0xdf, 0xf, 0xb4, 0xbf, 0x1, 0x58, 0x18, 0x2c, 0x50, - 0xc9, 0x71, 0x26, 0x3c, 0xeb, 0xa9, 00, 0xdf, 0x21, 0xfe, - 0x83, 0xd8, 0x57, 0x4f, 0x5f, 0xa9, 0x64, 0xd9, 0x3a, 0xcb, - 0xe3, 0xed, 0x6a, 0xeb, 0x51, 0xfe, 0xb, 0xb7, 0xf9, 0x9f, - 0x43, 0x85, 0xc2, 0xfb, 0x5, 0xcd, 0x2f, 0x88, 0x28, 0xa2, - 0x8a, 0xfa, 0x73, 0xd1, 0xa, 0x28, 0xa2, 0x80, 0x30, 0x7c, - 0x73, 0x37, 0x91, 0xe1, 0x8b, 0xd6, 0xe9, 0xf2, 0xe2, 0xbe, - 0x8, 0xf1, 0xc4, 0xbe, 0x66, 0xbd, 0x72, 0x73, 0xfc, 0x46, - 0xbe, 0xe8, 0xf8, 0x9f, 0x37, 0x93, 0xe1, 0x2b, 0xa3, 0x9a, - 0xf8, 0x2f, 0xc5, 0xd, 0xbf, 0x55, 0xba, 0x6c, 0xff, 00, - 0x11, 0xaf, 0x84, 0xe2, 0x19, 0x7e, 0xfa, 0x9c, 0x4f, 0x88, - 0xe2, 0x49, 0x7b, 0x91, 0x47, 0x8f, 0x7c, 0x59, 0x9f, 0xcb, - 0xd2, 0x64, 0xe7, 0xb1, 0xfe, 0x55, 0xf7, 0x67, 0xfc, 0x13, - 0xa2, 0xc9, 0xad, 0x3f, 0x64, 0xaf, 0x8, 0xbb, 0xc, 0x1b, - 0x89, 0xaf, 0x67, 0xfc, 0xd, 0xd4, 0xa3, 0xfa, 0x57, 0xc0, - 0x5f, 0x19, 0xa6, 0xf2, 0xf4, 0xa9, 0x79, 0xe3, 0x69, 0xaf, - 0xd2, 0x7f, 0xd8, 0xaf, 0x4a, 0x1a, 0x3f, 0xec, 0xaf, 0xf0, - 0xda, 00, 0x41, 0xdf, 0xa5, 0x25, 0xc1, 0xc7, 0xac, 0x8c, - 0xd2, 0x7f, 0xec, 0xd5, 0xed, 0xe5, 0xa, 0xd4, 0x91, 0xe6, - 0xf0, 0x74, 0x7d, 0xda, 0xf3, 0xf3, 0x3d, 0xb2, 0x8a, 0x28, - 0xaf, 0xa0, 0x3f, 0x49, 0x39, 0x5f, 0x8a, 0x1e, 0x30, 0x4f, - 0x2, 0x78, 0x13, 0x56, 0xd6, 0x18, 0xfe, 0xf2, 0x18, 0xb6, - 0xc2, 0x3d, 0x65, 0x6f, 0x95, 0x7, 0xe6, 0x45, 0x7e, 0x7e, - 0xa7, 0x99, 0x77, 0x71, 0x96, 0x26, 0x49, 0xa5, 0x6c, 0xb3, - 0x1e, 0x4b, 0x31, 0x3c, 0x9f, 0xce, 0xbe, 0x93, 0xfd, 0xaf, - 0xfc, 0x64, 0xf, 0xf6, 0x4f, 0x85, 0xa1, 0x3c, 0xff, 00, - 0xc7, 0xf5, 0xc1, 0xf6, 0xe5, 0x50, 0x7f, 0xe8, 0x47, 0xf0, - 0x15, 0xe3, 0xbf, 0x8, 0x3c, 0x2a, 0xde, 0x2d, 0xf1, 0xd6, - 0x9b, 0x69, 0xb4, 0xb4, 0x42, 0x40, 0xf2, 0x7b, 0x28, 0xe6, - 0xbf, 0x3e, 0xce, 0xab, 0x4b, 0x13, 0x8b, 0x8e, 0x1e, 0x1d, - 0x34, 0xf9, 0xb3, 0xf3, 0xbc, 0xe2, 0xa3, 0xc6, 0xe3, 0xe3, - 0x86, 0x86, 0xd1, 0xd3, 0xe6, 0xf7, 0xfd, 0xf, 0xae, 0xfe, - 0x7, 0x78, 0x51, 0x7c, 0x2b, 0xf0, 0xff, 00, 0x4f, 0x8c, - 0xa8, 0x59, 0xe7, 0x5f, 0x36, 0x43, 0x8e, 0xe6, 0xbd, 0x2, - 0xa3, 0xb7, 0x81, 0x2d, 0xa0, 0x8e, 0x14, 0x1b, 0x51, 0x14, - 0x28, 0x3, 0xd0, 0x54, 0x95, 0xf7, 0x54, 0x29, 0x2a, 0x14, - 0xa3, 0x4a, 0x3b, 0x25, 0x63, 0xef, 0xe9, 0x53, 0x54, 0xa1, - 0x18, 0x47, 0x64, 0x14, 0x51, 0x45, 0x6e, 0x6a, 0x7e, 0x70, - 0xff, 00, 0xc1, 0x43, 0xbf, 0xe0, 0x9c, 0x3a, 0xf7, 0xc6, - 0x5f, 0x19, 0x5d, 0x7c, 0x4c, 0xf8, 0x6b, 0xf6, 0x7b, 0x8d, - 0x7a, 0xea, 0x24, 0x1a, 0xae, 0x87, 0x33, 0x88, 0x9a, 0xe9, - 0xd1, 0x42, 0xac, 0xb1, 0x39, 0xf9, 0x77, 0x95, 0x55, 0x52, - 0xad, 0x8c, 0xed, 0x4, 0x1e, 0xb5, 0xf9, 0x9d, 0xe2, 0x4f, - 0xd9, 0xa7, 0xe2, 0xcf, 0x84, 0x2e, 0xe4, 0xb6, 0xd5, 0xfe, - 0x1b, 0x78, 0xaa, 0xce, 0x54, 0xfb, 0xc4, 0xe9, 0x13, 0xba, - 0x7e, 0xe, 0xaa, 0x54, 0xfe, 0x6, 0xbf, 0xa4, 0xfa, 0xe7, - 0xbe, 0x21, 0x78, 0xca, 0xdb, 0xe1, 0xe7, 0x81, 0xb5, 0xef, - 0x13, 0x5e, 0x47, 0x24, 0xd6, 0xfa, 0x55, 0x9c, 0xb7, 0x6d, - 0x14, 0x2a, 0x59, 0xe4, 0xda, 0xa4, 0x84, 0x50, 0x39, 0x2c, - 0xc7, 00, 0x1, 0xdc, 0xd3, 0xb9, 0x2d, 0x5c, 0xfe, 0x63, - 0xef, 0xac, 0x6e, 0x74, 0xcb, 0xb9, 0x6d, 0x6f, 0x2d, 0xe5, - 0xb4, 0xba, 0x85, 0xb6, 0x49, 0x4, 0xe8, 0x51, 0xd1, 0xbd, - 0xa, 0x9e, 0x41, 0xfa, 0xd5, 0x7a, 0xeb, 0x3e, 0x21, 0x5c, - 0x78, 0x93, 0xc5, 0xbe, 0x32, 0xd7, 0x7c, 0x49, 0xae, 0x69, - 0xb7, 0xb0, 0xea, 0x1a, 0xb5, 0xf4, 0xd7, 0xf7, 0x6, 0x68, - 0x1d, 0x70, 0xf2, 0x39, 0x72, 0x39, 0x1d, 0x1, 0x38, 0xaf, - 0xd9, 0xef, 0xf8, 0x27, 0x3f, 0xec, 0xbd, 0xe1, 0xaf, 0x8, - 0x7e, 0xcb, 0x5e, 0x1e, 0xbd, 0xf1, 0x2f, 0x86, 0xf4, 0xcd, - 0x5b, 0x58, 0xf1, 0x29, 0x3a, 0xcc, 0xe7, 0x52, 0xb1, 0x49, - 0x9a, 0x38, 0xe4, 00, 0x42, 0x9f, 0x38, 0x38, 0xc4, 0x6a, - 0xa7, 0x1e, 0xac, 0x69, 0xdc, 0x9b, 0x5c, 0xfc, 0x36, 0xa2, - 0xbf, 0xa4, 0x3d, 0x67, 0xf6, 0x53, 0xf8, 0x37, 0xe2, 0x2, - 0x7f, 0xb4, 0x3e, 0x17, 0xf8, 0x52, 0xe7, 0x3e, 0xba, 0x4c, - 0x23, 0xf9, 0x28, 0xae, 0x53, 0x54, 0xfd, 0x81, 0x7f, 0x67, - 0xbd, 0x5c, 0x62, 0x6f, 0x85, 0x5a, 0xc, 0x5f, 0xf5, 0xeb, - 0x1b, 0xc1, 0xff, 00, 0xa0, 0x30, 0xa5, 0x71, 0xf2, 0x9f, - 0xcf, 0x3d, 0x7d, 0x3f, 0xff, 00, 0x4, 0xe1, 0xf8, 0x2a, - 0x7e, 0x34, 0x7e, 0xd4, 0xfe, 0x18, 0x8e, 0xe2, 0x3, 0x2e, - 0x8f, 0xe1, 0xf6, 0xfe, 0xdc, 0xbe, 0xc8, 0x3b, 0x71, 0x9, - 0x6, 0x25, 0x27, 0xde, 0x53, 0x1f, 0xe0, 0xd, 0x7e, 0xa9, - 0x6a, 0x5f, 0xf0, 0x4c, 0x4f, 0xd9, 0xc3, 0x51, 0x18, 0xff, - 00, 0x84, 00, 0xda, 0xfb, 0xdb, 0x6a, 0x97, 0x69, 0xff, - 00, 0xb5, 0x6b, 0xd0, 0x3e, 00, 0xfe, 0xc8, 0x5f, 0xc, - 0xbf, 0x66, 0x6d, 0x43, 0x59, 0xbd, 0xf0, 0xe, 0x8d, 0x71, - 0xa6, 0xdc, 0xea, 0xd1, 0xc7, 0xd, 0xd3, 0xdc, 0x5e, 0xcb, - 0x72, 0x4a, 0x21, 0x62, 0xa1, 0x7c, 0xc2, 0x76, 0x8c, 0xb1, - 0xce, 0x3a, 0xf1, 0xe9, 0x45, 0xc3, 0x94, 0xf6, 0x7a, 0xfc, - 0xf8, 0xff, 00, 0x82, 0xc6, 0xfc, 0x66, 0x3e, 0x11, 0xf8, - 0x31, 0xa1, 0x7c, 0x3f, 0xb3, 0x98, 0xa5, 0xef, 0x8a, 0x6e, - 0xfc, 0xeb, 0x90, 0xa7, 0x9f, 0xb2, 0x5b, 0x95, 0x62, 0xf, - 0xd6, 0x46, 0x8f, 0xfe, 0xf9, 0x35, 0xfa, 0xf, 0x5f, 0x23, - 0xfe, 0xd6, 0x9f, 0xf0, 0x4f, 0x2d, 0x1b, 0xf6, 0xb2, 0xf1, - 0xd5, 0xaf, 0x8a, 0x35, 0x7f, 0x1c, 0x6b, 0x1a, 0x34, 0xf6, - 0x96, 0x6b, 0x65, 0x6d, 0x65, 0x6f, 0x6f, 0x14, 0x90, 0x44, - 0x80, 0x96, 0x24, 0x3, 0x83, 0x96, 0x66, 0x24, 0xf3, 0xd8, - 0x7a, 0x52, 0x29, 0x9f, 0x83, 0xf4, 0x57, 0xea, 0x9e, 0xa5, - 0xff, 00, 0x4, 0x45, 0xb5, 0x20, 0xfd, 0x83, 0xe2, 0xc4, - 0xca, 0x7b, 0xb, 0x9d, 0x10, 0x1f, 0xd5, 0x66, 0x15, 0xcf, - 0x5d, 0xff, 00, 0xc1, 0x11, 0xbc, 0x42, 0xaa, 0x4d, 0xaf, - 0xc5, 0x6d, 0x32, 0x46, 0xec, 0x26, 0xd1, 0xe4, 0x41, 0xf9, - 0x89, 0x4f, 0xf2, 0xaa, 0xb9, 0x16, 0x67, 0xe6, 0x66, 0x7, - 0xa5, 0x49, 0x14, 0xf2, 0x42, 0x7f, 0x77, 0x23, 0xc7, 0xfe, - 0xeb, 0x11, 0x5f, 0xa2, 0x1a, 0x87, 0xfc, 0x11, 0x57, 0xe2, - 0x44, 0x8, 0x4d, 0x9f, 0x8f, 0x3c, 0x31, 0x74, 0x7b, 0x2c, - 0x91, 0xdc, 0x47, 0xff, 00, 0xb2, 0x1a, 0xe3, 0xf5, 0x4f, - 0xf8, 0x23, 0xd7, 0xc7, 0x5b, 0x32, 0xdf, 0x65, 0xb9, 0xf0, - 0xb5, 0xfa, 0x8e, 0x9e, 0x5e, 0xa4, 0xe8, 0x4f, 0xfd, 0xf5, - 0x10, 0xa2, 0xe1, 0x66, 0x7c, 0x69, 0xa6, 0xf8, 0xcf, 0xc4, - 0x1a, 0x3b, 0x87, 0xb0, 0xd7, 0x75, 0x3b, 0x17, 0x1d, 0x1a, - 0xda, 0xf2, 0x48, 0xcf, 0xe8, 0xc2, 0xba, 0x9d, 0x3f, 0xf6, - 0x87, 0xf8, 0xa7, 0xa5, 0x38, 0x6b, 0x4f, 0x89, 0x1e, 0x2c, - 0x84, 0x8e, 0x9b, 0x75, 0xab, 0x9c, 0xf, 0xc3, 0x7d, 0x7b, - 0xce, 0xa5, 0xff, 00, 0x4, 0xab, 0xfd, 0xa2, 0x74, 0xf0, - 0x4a, 0x78, 0x5b, 0x4f, 0xbd, 0x3, 0xfe, 0x7d, 0x75, 0x68, - 0xe, 0x7f, 0xef, 0xa6, 0x15, 0xc9, 0xea, 0x7f, 0xf0, 0x4e, - 0xbf, 0xda, 0x27, 0x4a, 0x4, 0xbf, 0xc3, 0x2d, 0x46, 0x75, - 0x1d, 0xed, 0xae, 0x2d, 0xe5, 0xfd, 0x16, 0x4c, 0xd0, 0x16, - 0x67, 0x33, 0x61, 0xfb, 0x69, 0x7c, 0x76, 0xd3, 0x48, 0xf2, - 0x3e, 0x2b, 0xf8, 0xa7, 0x8e, 0x82, 0x4d, 0x41, 0xe4, 0x1f, - 0xf8, 0xf6, 0x6b, 0xa1, 0xb4, 0xff, 00, 0x82, 0x86, 0xfe, - 0xd1, 0x56, 0x61, 0x44, 0x7f, 0x14, 0xb5, 0x56, 0x3, 0xfe, - 0x7a, 0xc1, 0x6f, 0x27, 0xfe, 0x85, 0x19, 0xae, 0x67, 0x53, - 0xfd, 0x8d, 0xfe, 0x39, 0x69, 0x19, 0xfb, 0x4f, 0xc2, 0x9f, - 0x15, 0xe0, 0x75, 0x31, 0x69, 0x92, 0x4b, 0xff, 00, 0xa0, - 0x3, 0x5c, 0xdd, 0xd7, 0xec, 0xf7, 0xf1, 0x4a, 0xc7, 0x3f, - 0x68, 0xf8, 0x6f, 0xe2, 0xd8, 0x71, 0xd7, 0x7e, 0x87, 0x72, - 0x3f, 0xf6, 0x4a, 0x3, 0x53, 0xda, 0x2c, 0xbf, 0xe0, 0xa7, - 0x9f, 0xb4, 0x7d, 0x96, 0x3f, 0xe2, 0xbf, 0x17, 00, 0x76, - 0x9f, 0x4a, 0xb4, 0x6c, 0xff, 00, 0xe4, 0x2a, 0xea, 0x34, - 0xff, 00, 0xf8, 0x2b, 0x87, 0xed, 0x5, 0x64, 0x81, 0x65, - 0xd4, 0x3c, 0x3f, 0x7d, 0x8e, 0xf7, 0x1a, 0x4a, 0x82, 0x7f, - 0xef, 0x96, 0x5a, 0xf9, 0x4e, 0xf7, 0xe1, 0xaf, 0x8b, 0xf4, - 0xd0, 0x4d, 0xdf, 0x85, 0x75, 0xbb, 0x50, 0x3a, 0xf9, 0xfa, - 0x74, 0xc9, 0x8f, 0xcd, 0x6b, 0xe, 0xeb, 0x4f, 0xba, 0xb2, - 0x38, 0xb8, 0xb6, 0x9a, 0x3, 0xe9, 0x2c, 0x65, 0x7f, 0x9d, - 0x1, 0x76, 0x7d, 0xe7, 0xa5, 0x7f, 0xc1, 0x66, 0x3e, 0x30, - 0xda, 0x15, 0xfb, 0x6f, 0x87, 0x7c, 0x2b, 0x7e, 0x7, 0x5f, - 0xf4, 0x79, 0xa2, 0xcf, 0xe5, 0x25, 0x75, 0x76, 0x1f, 0xf0, - 0x5b, 0x3f, 0x18, 0xc5, 0x8f, 0xb6, 0xfc, 0x33, 0xd0, 0xee, - 0x3d, 0x7c, 0x8d, 0x42, 0x68, 0xbf, 0x9a, 0xb5, 0x7e, 0x6c, - 0xe4, 0x52, 0xd1, 0x60, 0xbb, 0x3f, 0x53, 0x74, 0xef, 0xf8, - 0x2d, 0xd0, 0x38, 0xfb, 0x7f, 0xc2, 0x82, 0xbe, 0xbf, 0x66, - 0xd6, 0xb3, 0xfc, 0xe1, 0x15, 0xd2, 0xd9, 0xff, 00, 0xc1, - 0x6c, 0xfc, 0x1a, 0xe0, 0x7d, 0xaf, 0xe1, 0xae, 0xbb, 0x11, - 0xef, 0xe4, 0xdf, 0x42, 0xff, 00, 0xcc, 0x2d, 0x7e, 0x46, - 0xd1, 0x45, 0x82, 0xec, 0xfd, 0x8f, 0xb1, 0xff, 00, 0x82, - 0xd2, 0xfc, 0x29, 0x9b, 0x2, 0xe7, 0xc1, 0x9e, 0x2e, 0xb6, - 0xf5, 0x2b, 0x1d, 0xb3, 0x8f, 0xfd, 0x1c, 0x2b, 0xa4, 0xd3, - 0xbf, 0xe0, 0xb0, 0xff, 00, 0x2, 0xef, 0x31, 0xf6, 0x9b, - 0x5f, 0x14, 0xd8, 0x13, 0xff, 00, 0x3d, 0x74, 0xd4, 0x70, - 0x3f, 0xef, 0x89, 0xd, 0x7e, 0x26, 0x51, 0x45, 0x87, 0xcc, - 0xcf, 0xdd, 0xdd, 0x3f, 0xfe, 0xa, 0xad, 0xfb, 0x3a, 0x5f, - 0x85, 0xdd, 0xe2, 0xbb, 0xfb, 0x46, 0x3f, 0xc3, 0x71, 0xa3, - 0xdc, 0x8c, 0x7e, 0x21, 0x8, 0xae, 0xb7, 0x4b, 0xff, 00, - 0x82, 0x89, 0x7e, 0xce, 0xfa, 0xaa, 0x6, 0x4f, 0x89, 0xba, - 0x6d, 0xb9, 0x3f, 0xc3, 0x75, 0xc, 0xd1, 0x1f, 0xd5, 0x2b, - 0xf9, 0xf5, 0xa2, 0x8b, 0x7, 0x31, 0xfd, 0x18, 0x69, 0xdf, - 0xb6, 0x8f, 0xc0, 0x8d, 0x51, 0x41, 0x83, 0xe2, 0xcf, 0x84, - 0xf9, 0xe8, 0x25, 0xd4, 0xe3, 0x88, 0xfe, 0x4e, 0x41, 0xae, - 0xa3, 0x4a, 0xfd, 0xa0, 0xbe, 0x18, 0x6b, 0x60, 0x7d, 0x83, - 0xe2, 0x1f, 0x85, 0xee, 0xf3, 0xff, 00, 0x3c, 0xb5, 0x7b, - 0x73, 0xff, 00, 0xb3, 0xd7, 0xf3, 0x4f, 0x45, 0x2b, 0x7, - 0x31, 0xfd, 0x3c, 0xd9, 0xf8, 0xff, 00, 0xc2, 0xfa, 0x81, - 0xc5, 0xaf, 0x89, 0x34, 0x8b, 0x92, 0x7b, 0x43, 0x7d, 0x13, - 0xff, 00, 0x26, 0xad, 0x58, 0x75, 0x5b, 0x2b, 0x83, 0x88, - 0xaf, 0x2d, 0xe4, 0x3e, 0x89, 0x2a, 0x9f, 0xeb, 0x5f, 0xcb, - 0x86, 0x7, 0xa5, 0x5a, 0xb4, 0xd5, 0x2f, 0x34, 0xf6, 0x6, - 0xd6, 0xee, 0x7b, 0x62, 0x3a, 0x18, 0x65, 0x64, 0xfe, 0x46, - 0x8b, 0xf, 0x98, 0xfe, 0xa3, 0x83, 0x3, 0xd0, 0x83, 0x4b, - 0x5f, 0xcc, 0x86, 0x9f, 0xf1, 0x5b, 0xc6, 0xda, 0x49, 0x6, - 0xc7, 0xc6, 0x3a, 0xfd, 0x91, 0x1d, 0xd, 0xbe, 0xa9, 0x3c, - 0x7f, 0xc9, 0xeb, 0xa8, 0xd2, 0xff, 00, 0x6a, 0x6f, 0x8c, - 0x5a, 0x2c, 0x8a, 0xf6, 0x9f, 0x14, 0x3c, 0x5a, 0x85, 0x7a, - 0x6f, 0xd6, 0x27, 0x90, 0x7e, 0x4c, 0xc4, 0x51, 0x60, 0xe6, - 0x3f, 0xa4, 0x7a, 0x2b, 0xf9, 0xe6, 0xb3, 0xfd, 0xbf, 0x3f, - 0x68, 0x4b, 0x12, 0xbe, 0x5f, 0xc5, 0x5d, 0x71, 0xb6, 0xf4, - 0x12, 0x98, 0xe4, 0x1f, 0xf8, 0xf2, 0x1a, 0xe8, 0xec, 0x7f, - 0xe0, 0xa6, 0x9f, 0xb4, 0x7d, 0x96, 0xd1, 0xff, 00, 0xb, - 0xd, 0xee, 0x15, 0x7b, 0x4f, 0xa6, 0x5a, 0x36, 0x7e, 0xa7, - 0xca, 0xcd, 0x16, 0xe, 0x64, 0x7e, 0xfb, 0x51, 0x5f, 0x86, - 0x76, 0x3f, 0xf0, 0x56, 0xcf, 0xda, 0x12, 0xce, 0x35, 0x57, - 0xd5, 0x34, 0x2b, 0xbc, 0x7f, 0x14, 0xfa, 0x42, 0x64, 0xff, - 00, 0xdf, 0x24, 0x56, 0xdd, 0x97, 0xfc, 0x16, 0x33, 0xe3, - 0xad, 0xb6, 0x4, 0xda, 0x7f, 0x84, 0x2e, 0xfd, 0xe4, 0xd3, - 0x66, 0x53, 0xff, 00, 0x8e, 0xce, 0x28, 0xb0, 0x5d, 0x1f, - 0xb6, 0x34, 0x57, 0xe3, 0xb6, 0x9d, 0xff, 00, 0x5, 0xa8, - 0xf8, 0x9b, 0x2, 0xa8, 0xbd, 0xf0, 0x3f, 0x85, 0xee, 0xdb, - 0xb9, 0x8d, 0xae, 0x22, 0xcf, 0xfe, 0x3e, 0x6b, 0xa5, 0xd3, - 0xff, 00, 0xe0, 0xb7, 0x1a, 0xfc, 0x78, 0xfb, 0x77, 0xc2, - 0xbd, 0x36, 0x7f, 0xfa, 0xf7, 0xd5, 0xe4, 0x8f, 0xf9, 0xc4, - 0xd4, 0x58, 0x77, 0x47, 0xeb, 0x25, 0x15, 0xf9, 0x8b, 0xa5, - 0x7f, 0xc1, 0x6e, 0x34, 0x77, 0x51, 0xfd, 0xa5, 0xf0, 0xae, - 0xfa, 0x16, 0xef, 0xf6, 0x5d, 0x5d, 0x24, 0x1f, 0xf8, 0xf4, - 0x6b, 0x5d, 0xd, 0xaf, 0xfc, 0x16, 0xbf, 0xe1, 0xe3, 0x91, - 0xf6, 0x9f, 0x87, 0xbe, 0x27, 0x88, 0x7a, 0xc5, 0x35, 0xb3, - 0xff, 00, 0x37, 0x5a, 0x2, 0xe8, 0xfd, 0x19, 0xa2, 0xbe, - 0x1, 0xd3, 0x7f, 0xe0, 0xb3, 0xbf, 0x7, 0xae, 0xdc, 0xb, - 0xaf, 0xc, 0x78, 0xc2, 0xc4, 0x7f, 0x79, 0xed, 0xad, 0x9c, - 0x7f, 0xe3, 0xb3, 0x1a, 0xeb, 0x74, 0xef, 0xf8, 0x2b, 0x87, - 0xec, 0xfb, 0x79, 0x8f, 0x3b, 0x50, 0xd7, 0xac, 0x49, 0xff, - 00, 0x9e, 0xfa, 0x4b, 0x9c, 0x7f, 0xdf, 0x24, 0xd2, 0xb, - 0xa3, 0xed, 0x1a, 0x2b, 0xe5, 0x5d, 0x33, 0xfe, 0xa, 0x7d, - 0xfb, 0x39, 0xea, 0x78, 0x1f, 0xf0, 0x9d, 0x3d, 0xa1, 0x3d, - 0xae, 0xb4, 0xcb, 0x94, 0xfd, 0x7c, 0xbc, 0x57, 0x57, 0xa6, - 0xfe, 0xdf, 0x1f, 0xb3, 0xee, 0xa8, 0x7, 0x95, 0xf1, 0x4f, - 0x42, 0x8c, 0x9e, 0xd7, 0x12, 0x3c, 0x47, 0xff, 00, 0x1e, - 0x51, 0x40, 0xcf, 0x7f, 0xa2, 0xbc, 0x9b, 0x4e, 0xfd, 0xad, - 0x7e, 0xb, 0x6a, 0xc4, 0xb, 0x5f, 0x8a, 0x7e, 0x13, 0x90, - 0x9e, 0xcd, 0xab, 0xc2, 0xa7, 0xf5, 0x61, 0x5d, 0x4d, 0x87, - 0xc6, 0x4f, 00, 0xea, 0xb8, 0xfb, 0x17, 0x8d, 0xbc, 0x3b, - 0x77, 0x9e, 0x9e, 0x4e, 0xab, 0x3, 0x67, 0xf2, 0x7a, 00, - 0xec, 0x28, 0xac, 0x9b, 0x7f, 0x17, 0x68, 0x57, 0x78, 0xf2, - 0x35, 0xad, 0x3a, 0x6c, 0xff, 00, 0xcf, 0x3b, 0xa8, 0xdb, - 0xf9, 0x1a, 0xd0, 0x8a, 0xf2, 0x9, 0xff, 00, 0xd5, 0xcf, - 0x1c, 0x9f, 0xee, 0xb8, 0x34, 0x1, 0x35, 0x14, 0x51, 0x40, - 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, - 0x51, 0x40, 0x5, 0x23, 0x28, 0x60, 0x41, 00, 0x83, 0xd4, - 0x1a, 0x5a, 0x28, 0x3, 0x97, 0xd5, 0xbe, 0x19, 0x78, 0x5b, - 0x5b, 0x2c, 0xd7, 0x5a, 0x25, 0xae, 0xf6, 0xeb, 0x24, 0x4b, - 0xe5, 0x31, 0xfc, 0x57, 0x15, 0xc5, 0xea, 0xff, 00, 0xb3, - 0x7e, 0x83, 0x76, 0x4b, 0x58, 0x5e, 0xdd, 0xd8, 0x1e, 0xca, - 0xc4, 0x4a, 0xbf, 0xae, 0xf, 0xeb, 0x5e, 0xb9, 0x45, 0x79, - 0xd5, 0xb2, 0xec, 0x1e, 0x23, 0xf8, 0x94, 0x93, 0xf9, 0x59, - 0xfd, 0xe8, 0xc2, 0x74, 0x29, 0x4f, 0xe2, 0x8a, 0x3e, 0x7b, - 0xbd, 0xfd, 0x99, 0xb5, 0x38, 0xf2, 0x6d, 0x35, 0x9b, 0x59, - 0x87, 0x61, 0x34, 0x4d, 0x1f, 0xf2, 0xdd, 0x58, 0x17, 0xbf, - 0xb3, 0xff, 00, 0x8b, 0xad, 0x9, 0xf2, 0xe0, 0xb5, 0xbb, - 0x3, 0xbc, 0x33, 0x8f, 0xfd, 0x9b, 0x15, 0xf5, 0x1d, 0x15, - 0xe4, 0x54, 0xe1, 0xcc, 0x4, 0xfe, 0x14, 0xd7, 0xa3, 0xff, - 00, 0x3b, 0x9c, 0xb2, 0xc0, 0x51, 0x7b, 0x68, 0x7c, 0x87, - 0x3f, 0xc2, 0x3f, 0x18, 0x5b, 0xe7, 0x76, 0x83, 0x72, 0xc3, - 0xd5, 0xa, 0xb7, 0xf2, 0x35, 0x49, 0xfe, 0x1d, 0x78, 0xa2, - 0x33, 0xcf, 0x87, 0xf5, 0x1f, 0xc2, 0xd9, 0xcf, 0xf4, 0xaf, - 0xb2, 0x68, 0xae, 0x27, 0xc2, 0xd8, 0x6e, 0x95, 0x25, 0xf8, - 0x7f, 0x91, 0x93, 0xcb, 0xa1, 0xd2, 0x4c, 0xf8, 0xd0, 0x7c, - 0x3d, 0xf1, 0x3b, 0x1e, 0x3c, 0x3f, 0xa9, 0x7f, 0xe0, 0x2b, - 0xff, 00, 0x85, 0x5c, 0xb7, 0xf8, 0x53, 0xe2, 0xeb, 0xaf, - 0xb9, 0xa0, 0x5d, 0x8f, 0xfa, 0xe8, 0x2, 0x7f, 0xe8, 0x44, - 0x57, 0xd7, 0xf4, 0x50, 0xb8, 0x5b, 0xf, 0xd6, 0xa4, 0xbf, - 0xf, 0xf2, 0x5, 0x97, 0x43, 0xac, 0x99, 0xf2, 0xe6, 0x9f, - 0xf0, 0x3, 0xc5, 0xb7, 0xa4, 0x79, 0xb0, 0x5b, 0x59, 0x2f, - 0xac, 0xf3, 0x83, 0xfa, 0x2e, 0x6b, 0xa9, 0xd2, 0xbf, 0x66, - 0x59, 0x4b, 0x2b, 0x6a, 0x5a, 0xda, 0x2a, 0xf7, 0x4b, 0x58, - 0x72, 0x7f, 0xef, 0xa6, 0x3f, 0xd2, 0xbd, 0xea, 0x8a, 0xef, - 0xa5, 0xc3, 0xb8, 0xa, 0x7a, 0xca, 0x2e, 0x5e, 0xaf, 0xfc, - 0xac, 0x6d, 0x1c, 0xd, 0x18, 0xee, 0xae, 0x71, 0x5e, 0x1e, - 0xf8, 0x3d, 0xe1, 0x6f, 0xe, 0xec, 0x78, 0xf4, 0xd5, 0xbc, - 0xb8, 0x5e, 0x7c, 0xeb, 0xc3, 0xe6, 0x1c, 0xfa, 0xe0, 0xf0, - 0x3f, 0x1, 0x5d, 0xa0, 0x1, 0x40, 00, 0x60, 0xe, 0x80, - 0x52, 0xd1, 0x5e, 0xfd, 0x1a, 0x14, 0xb0, 0xf1, 0xe5, 0xa5, - 0x15, 0x15, 0xe4, 0x8e, 0xd8, 0xc2, 0x30, 0x56, 0x8a, 0xb0, - 0x51, 0x45, 0x15, 0xb9, 0x61, 0x45, 0x14, 0x50, 0x1, 0x45, - 0x14, 0x50, 0x7, 0x1, 0xf1, 0xa6, 0xef, 0xec, 0xde, 0x11, - 0x7f, 0x73, 0x5f, 0xa, 0x6b, 0x72, 0x79, 0x97, 0x97, 0xc, - 0x7b, 0xb1, 0xaf, 0xb5, 0x7f, 0x68, 0x1b, 0x9f, 0x27, 0xc3, - 0x8, 0x9e, 0xb9, 0x35, 0xf1, 0x1e, 0xa8, 0xfb, 0xa4, 0x94, - 0xfa, 0xb1, 0xaf, 0xce, 0xf3, 0xd9, 0x73, 0x63, 0x23, 0x1e, - 0xc8, 0xfc, 0xfb, 0x89, 0x67, 0xef, 0x24, 0x78, 0x67, 0xc7, - 0x2b, 0x8d, 0x9a, 0x5c, 0xe3, 0xfd, 0x93, 0xfc, 0xab, 0xf5, - 0x97, 0xf6, 0x7f, 0xd2, 0x46, 0x85, 0xf0, 0x37, 0xc0, 0x16, - 0xb, 0x9c, 0x41, 0xa1, 0x59, 0xaf, 0x3e, 0xbe, 0x4a, 0xe6, - 0xbf, 0x22, 0xfe, 0x38, 0x39, 0x9a, 0x23, 0xa, 0xe5, 0x9a, - 0x46, 0x8, 00, 0xea, 0x49, 0xe2, 0xbf, 0x68, 0x3c, 0x33, - 0x62, 0x9a, 0x5f, 0x86, 0xf4, 0xab, 0x38, 0xc6, 0xd4, 0xb7, - 0xb4, 0x8a, 0x25, 0x7, 0xb0, 0x54, 0x3, 0xfa, 0x57, 0xd5, - 0xe5, 0x6a, 0xd4, 0x51, 0x5c, 0x1d, 0x1b, 0x61, 0x27, 0x2e, - 0xf2, 0x66, 0x9d, 0x14, 0x51, 0x5e, 0xc9, 0xf7, 0xe7, 0xe7, - 0xef, 0xc5, 0xdf, 0x13, 0x3f, 0x8b, 0x3e, 0x26, 0xf8, 0x82, - 0xf9, 0xf8, 0xb, 0x72, 0x6d, 0x90, 0x7a, 0x2c, 0x7f, 0x20, - 0xff, 00, 0xd0, 0x49, 0xfc, 0x6b, 0xdc, 0xbf, 0x64, 0xbf, - 0x8, 0xf9, 0x76, 0xd7, 0xda, 0xe4, 0xa9, 0xc9, 0x3e, 0x54, - 0x44, 0xfe, 0xb5, 0xf3, 0x7d, 0xfc, 0x6f, 0xa9, 0xf8, 0xdf, - 0x58, 0x86, 0x31, 0xba, 0x49, 0x35, 0x3b, 0x85, 00, 0x7a, - 0xf9, 0xad, 0x5f, 0x7c, 0x7c, 0x35, 0xf0, 0xd2, 0x78, 0x53, - 0xc1, 0x9a, 0x6d, 0x82, 0xa0, 0x46, 0x58, 0x83, 0x3f, 0xfb, - 0xc4, 0x57, 0xc1, 0x65, 0x94, 0x25, 0x5f, 0x30, 0x95, 0x59, - 0xfd, 0x9b, 0xbf, 0x9b, 0x3f, 0x39, 0xe1, 0xfa, 0x6f, 0x17, - 0x89, 0x9e, 0x2a, 0x7d, 0x2e, 0xfe, 0x6c, 0xea, 0x28, 0xa2, - 0x8a, 0xfb, 0xd3, 0xf4, 0x60, 0xa2, 0x8a, 0x28, 00, 0xa2, - 0x9a, 0xe8, 0x1c, 0x60, 0xe7, 0xd7, 0x83, 0x8a, 0x5c, 0x7b, - 0x9a, 00, 0xaf, 0x73, 0xa6, 0xda, 0x5e, 0x29, 0x17, 0x16, - 0xb0, 0xce, 0xf, 0x69, 0x23, 0xd, 0xfc, 0xc5, 0x4f, 0x1c, - 0x49, 0xc, 0x6b, 0x1c, 0x68, 0xb1, 0xc6, 0x80, 0x2a, 0xaa, - 0x8c, 00, 0x7, 0x40, 0x5, 0x3a, 0x8a, 00, 0x28, 0xa2, - 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, - 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, - 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x46, 0x50, 0xc3, 0x4, - 0x2, 0x3d, 0xd, 0x67, 0x5e, 0x78, 0x6b, 0x48, 0xd4, 0x3f, - 0xe3, 0xeb, 0x4a, 0xb2, 0xb9, 0xff, 00, 0xae, 0xd6, 0xe8, - 0xff, 00, 0xcc, 0x56, 0x95, 0x14, 0x1, 0xc5, 0x6a, 0x9f, - 0x4, 0xfe, 0x1e, 0xeb, 0x60, 0x8d, 0x43, 0xc0, 0xde, 0x1c, - 0xbd, 0xdd, 0xd7, 0xcf, 0xd2, 0xa0, 0x7c, 0xfe, 0x6b, 0x5c, - 0xa6, 0xa7, 0xfb, 0x1f, 0x7c, 0x10, 0xd6, 0x14, 0x8b, 0xbf, - 0x85, 0x5e, 0x13, 0x70, 0x7a, 0xec, 0xd2, 0xa2, 0x4f, 0xfd, - 0x4, 0xa, 0xf6, 0xa, 0x28, 0x3, 0xe7, 0x4d, 0x57, 0xfe, - 0x9, 0xe5, 0xfb, 0x3c, 0x6a, 0xe0, 0x89, 0x7e, 0x18, 0x69, - 0x50, 0xe7, 0xfe, 0x7d, 0x64, 0x9a, 0xf, 0xfd, 0x1, 0xc5, - 0x72, 0xb7, 0x9f, 0xf0, 0x4a, 0xff, 00, 0xd9, 0xbe, 0xe8, - 0xb1, 0x5f, 0x5, 0xdd, 0xdb, 0x13, 0xff, 00, 0x3c, 0x75, - 0xab, 0xce, 0x3f, 0x3, 0x29, 0x15, 0xf5, 0xad, 0x14, 0x1, - 0xf1, 0x76, 0xa3, 0xff, 00, 0x4, 0x8e, 0xfd, 0x9f, 0x6f, - 0x50, 0xac, 0x1a, 0x7e, 0xbf, 0xa7, 0x9f, 0xef, 0x41, 0xab, - 0xbb, 0x1f, 0xfc, 0x7c, 0x35, 0x72, 0xba, 0x97, 0xfc, 0x11, - 0x97, 0xe0, 0xe5, 0xca, 0x9f, 0xb1, 0x78, 0x93, 0xc5, 0xd6, - 0x4d, 0xfe, 0xd5, 0xd5, 0xbc, 0x80, 0x7e, 0x70, 0x8a, 0xfb, - 0xee, 0x8a, 0x5, 0x64, 0x7e, 0x6d, 0xea, 0x1f, 0xf0, 0x44, - 0xdf, 0x5, 0xbc, 0x6d, 0xf6, 0x1f, 0x89, 0x1a, 0xf4, 0x2f, - 0xfc, 0x3f, 0x68, 0xb3, 0x82, 0x40, 0x3f, 0x2d, 0xb5, 0xc8, - 0xea, 0x1f, 0xf0, 0x44, 0x5b, 0x80, 0x18, 0xd8, 0xfc, 0x58, - 0x8c, 0x9f, 0xe1, 0x5b, 0x8d, 0x10, 0x8f, 0xcc, 0x89, 0xbf, - 0xa5, 0x7e, 0xa9, 0x51, 0x4c, 0x2c, 0x8f, 0xc8, 0x5b, 0xff, - 00, 0xf8, 0x22, 0x7f, 0x8e, 0xe2, 0xc, 0x6c, 0xfe, 0x22, - 0xf8, 0x7e, 0xe3, 0xfb, 0xa2, 0x6b, 0x49, 0xe3, 0xcf, 0xe5, - 0xba, 0xb9, 0x1d, 0x43, 0xfe, 0x8, 0xd9, 0xf1, 0xba, 0xd9, - 0x9b, 0xec, 0xba, 0xcf, 0x83, 0xef, 0x10, 0x74, 0xcd, 0xfc, - 0xf1, 0xb1, 0xfc, 0xc, 0x18, 0xfd, 0x6b, 0xf6, 0xa2, 0x8a, - 0x2e, 0x16, 0x47, 0xe1, 0xd5, 0xd7, 0xfc, 0x12, 0x2b, 0xf6, - 0x81, 0xb7, 0x56, 0x29, 0x69, 0xe1, 0xcb, 0x9c, 0x76, 0x8b, - 0x56, 0x19, 0x3f, 0xf7, 0xd2, 0xa, 0xe6, 0x35, 0x1f, 0xf8, - 0x25, 0xef, 0xed, 0x1b, 0x60, 0x5b, 0x6f, 0x81, 0xa2, 0xbc, - 0xb, 0xde, 0xdb, 0x55, 0xb5, 0x39, 0xfa, 0x66, 0x40, 0x6b, - 0xf7, 0xb2, 0x8a, 0x2e, 0x2e, 0x54, 0x7f, 0x3d, 0x77, 0xdf, - 0xf0, 0x4f, 0xdf, 0xda, 0x1b, 0x4f, 0x24, 0x49, 0xf0, 0xb3, - 0x59, 0x7c, 0x77, 0x80, 0xc5, 0x2f, 0xfe, 0x82, 0xe6, 0xb9, - 0x2d, 0x53, 0xf6, 0x4e, 0xf8, 0xd1, 0xa3, 0xbb, 0x25, 0xd7, - 0xc2, 0xdf, 0x16, 0x23, 0x2f, 0x5f, 0x2f, 0x48, 0x9a, 0x4f, - 0xfd, 0x5, 0x4d, 0x7f, 0x48, 0x34, 0x51, 0x70, 0xe5, 0x3f, - 0x99, 0x4d, 0x47, 0xe1, 0xf, 0x8e, 0xf4, 0x76, 0x2b, 0x7d, - 0xe0, 0xaf, 0x11, 0x59, 0xb0, 0xea, 0x27, 0xd2, 0xa7, 0x4c, - 0x7e, 0x69, 0x5c, 0xf5, 0xe6, 0x8d, 0xa8, 0x69, 0xcc, 0x56, - 0xee, 0xc6, 0xe6, 0xd4, 0x8e, 0xa2, 0x68, 0x59, 0x3f, 0x98, - 0xaf, 0xea, 0x2c, 0x80, 0x7a, 0x8a, 0xad, 0x71, 0xa5, 0x59, - 0x5d, 0xff, 00, 0xaf, 0xb3, 0xb7, 0x9b, 0xfe, 0xba, 0x44, - 0xad, 0xfc, 0xc5, 0x17, 0xe, 0x53, 0xf9, 0x70, 0xc8, 0xf5, - 0xa5, 0xaf, 0xe9, 0xe6, 0xeb, 0xe1, 0xf7, 0x85, 0xaf, 0xb3, - 0xf6, 0x9f, 0xd, 0x69, 0x17, 0x19, 0xeb, 0xe6, 0xd8, 0x44, - 0xd9, 0xfc, 0xd6, 0xb9, 0xcd, 0x4f, 0xf6, 0x78, 0xf8, 0x5b, - 0xac, 0xe7, 0xed, 0xdf, 0xe, 0xbc, 0x2d, 0x73, 0x9e, 0xbe, - 0x66, 0x91, 0x1, 0xcf, 0xfe, 0x39, 0x45, 0xc5, 0xca, 0x7f, - 0x35, 0x34, 0x57, 0xf4, 0x53, 0xa8, 0xfe, 0xc4, 0x7f, 0x1, - 0x75, 0x56, 0x2d, 0x3f, 0xc2, 0x7f, 0xb, 0x86, 0x3d, 0x4c, - 0x36, 0xb, 0x17, 0xfe, 0x83, 0x8a, 0xe5, 0xb5, 0x3f, 0xf8, - 0x26, 0xf7, 0xec, 0xeb, 0xaa, 0x67, 0x77, 0xc3, 0x8b, 0x4b, - 0x62, 0x7f, 0xe7, 0xd6, 0xee, 0xe2, 0x2f, 0xe5, 0x25, 0x17, - 0xe, 0x53, 0xf9, 0xff, 00, 0xa2, 0xbf, 0x75, 0x35, 0x5f, - 0xf8, 0x24, 0xf7, 0xec, 0xf1, 0xa8, 0xee, 0x31, 0x78, 0x7f, - 0x56, 0xd3, 0xc9, 0xef, 0x6b, 0xab, 0xcd, 0xc7, 0xe0, 0xe5, - 0xab, 0x91, 0xd4, 0x3f, 0xe0, 0x8d, 0x9f, 0x5, 0x2e, 0x77, - 0x7d, 0x9b, 0x5a, 0xf1, 0x75, 0x91, 0x3d, 0x36, 0xdf, 0x42, - 0xe0, 0x7f, 0xdf, 0x50, 0xd3, 0xb8, 0x72, 0x9f, 0x8b, 0x34, - 0x57, 0xec, 0x35, 0xd7, 0xfc, 0x11, 0x53, 0xe1, 0x9b, 0x83, - 0xf6, 0x7f, 0x1e, 0x78, 0xae, 0x13, 0xdb, 0xcc, 0x5b, 0x67, - 0x3, 0xf2, 0x8c, 0x57, 0x3f, 0xa8, 0x7f, 0xc1, 0x12, 0x7c, - 0x3a, 0xc0, 0xfd, 0x87, 0xe2, 0x8e, 0xa9, 0x19, 0xec, 0x2e, - 0x34, 0xb8, 0xdf, 0xf5, 0xe, 0x28, 0xb8, 0xac, 0xcf, 0xc9, - 0x9a, 0x2b, 0xf4, 0xeb, 0x51, 0xff, 00, 0x82, 0x23, 0x6a, - 0xe1, 0x98, 0xd8, 0x7c, 0x56, 0xb2, 0x65, 0xec, 0xb7, 0x1a, - 0x33, 0x83, 0xf9, 0x89, 0x4f, 0xf2, 0xae, 0x5b, 0x52, 0xff, - 00, 0x82, 0x2b, 0x7c, 0x4a, 0x81, 0x8f, 0xd8, 0x7c, 0x75, - 0xe1, 0x8b, 0xb5, 0x1d, 0x3c, 0xe4, 0xb8, 0x88, 0x9f, 0xc9, - 0x1a, 0x8b, 0x85, 0x99, 0xf9, 0xdd, 0x49, 0x5f, 0x73, 0xea, - 0x7f, 0xf0, 0x47, 0x7f, 0x8e, 0x76, 0x84, 0xfd, 0x92, 0xf7, - 0xc2, 0xb7, 0xeb, 0xfe, 0xce, 0xa3, 0x22, 0x1f, 0xfc, 0x7a, - 0x2a, 0xe3, 0xb5, 0x4f, 0xf8, 0x25, 0x87, 0xed, 0x1b, 0xa7, - 0x48, 0x56, 0x2f, 0x7, 0xd9, 0xea, 00, 0x7f, 0x1d, 0xae, - 0xaf, 0x6d, 0x83, 0xff, 00, 0x7d, 0xba, 0x9a, 0x2e, 0x16, - 0x67, 0xc9, 0x40, 0xed, 0x39, 0x1c, 0x1f, 0x51, 0x5a, 0xda, - 0x77, 0x8b, 0xb5, 0xdd, 0x1d, 0x81, 0xb0, 0xd6, 0xb5, 0x1b, - 0x12, 0x3a, 0x1b, 0x6b, 0xb9, 0x23, 0xc7, 0xe4, 0x45, 0x7b, - 0xe5, 0xdf, 0xfc, 0x13, 0x8f, 0xf6, 0x8e, 0xb3, 0x7d, 0xad, - 0xf0, 0xc2, 0xfe, 0x4f, 0x78, 0x6f, 0x2d, 0x5c, 0x7e, 0x92, - 0xd6, 0xe, 0xa3, 0xfb, 0xc, 0x7c, 0x7e, 0xd2, 0x89, 0x13, - 0xfc, 0x28, 0xf1, 0x23, 0x63, 0xbc, 0x16, 0xbe, 0x70, 0xfc, - 0xd0, 0x9a, 0x3, 0x53, 0x85, 0xb0, 0xf8, 0xf3, 0xf1, 0x2f, - 0x4b, 0x60, 0xd6, 0x9f, 0x10, 0x7c, 0x53, 0x6e, 0x47, 0x4d, - 0x9a, 0xcd, 0xc0, 0xc7, 0xfe, 0x3f, 0x5d, 0x4e, 0x9f, 0xfb, - 0x63, 0xfc, 0x71, 0xd2, 0xd9, 0x4d, 0xbf, 0xc5, 0x5f, 0x15, - 0x64, 0x74, 0xf3, 0x75, 0x29, 0x25, 0x1f, 0x93, 0x13, 0x58, - 0xfa, 0xaf, 0xec, 0xcb, 0xf1, 0x73, 0x44, 0x24, 0x5e, 0xfc, - 0x32, 0xf1, 0x64, 0x4, 0x7a, 0xe8, 0xd7, 0x7, 0xf9, 0x25, - 0x73, 0x1a, 0x9f, 0xc3, 0x3f, 0x18, 0x68, 0x80, 0x9d, 0x47, - 0xc2, 0x7a, 0xe5, 0x80, 0x1d, 0x4d, 0xd6, 0x9b, 0x34, 0x7f, - 0xfa, 0x12, 0x8a, 0x3, 0x53, 0xda, 0x6c, 0x7f, 0xe0, 0xa2, - 0x5f, 0xb4, 0x55, 0x86, 0xd0, 0xbf, 0x13, 0xf5, 0x39, 0x40, - 0xed, 0x3c, 0x16, 0xf2, 0x7f, 0x38, 0xeb, 0xa8, 0xd3, 0xbf, - 0xe0, 0xa9, 0xdf, 0xb4, 0x66, 0x9e, 0x81, 0x4f, 0x8c, 0x6d, - 0x2e, 0xc0, 0xff, 00, 0x9f, 0x8d, 0x22, 0xd5, 0x89, 0xfc, - 0x42, 0x3, 0x5f, 0x28, 0x4f, 0x65, 0x71, 0x6a, 0x71, 0x34, - 0x12, 0xc2, 0x7f, 0xe9, 0xa2, 0x15, 0xfe, 0x75, 0x6, 0x47, - 0xad, 0x1, 0x76, 0x7d, 0xb1, 0x67, 0xff, 00, 0x5, 0x79, - 0xf8, 0xff, 00, 0x6a, 0xa0, 0x49, 0x37, 0x86, 0xae, 0xcf, - 0xf7, 0xa6, 0xd2, 0x70, 0x4f, 0xfd, 0xf2, 0xeb, 0x5b, 0x96, - 0x3f, 0xf0, 0x59, 0x6f, 0x8d, 0x76, 0xe0, 0xb, 0x8d, 0x7, - 0xc1, 0xb7, 0x63, 0xb9, 0x36, 0x37, 0x8, 0x4f, 0xe5, 0x3d, - 0x7c, 0x19, 0x45, 0x16, 0xb, 0xb3, 0xf4, 0x7f, 0x4a, 0xff, - 00, 0x82, 0xd8, 0x78, 0xe6, 0x8, 0xf1, 0xa8, 0xfc, 0x39, - 0xd0, 0x2f, 0x1f, 0xfb, 0xd6, 0xf7, 0x93, 0x40, 0x3f, 0x22, - 0x1e, 0xba, 0x8d, 0x27, 0xfe, 0xb, 0x73, 0x37, 0xfc, 0xc4, - 0xfe, 0x14, 0x47, 0xff, 00, 0x6e, 0x9a, 0xc9, 0xff, 00, - 0xd9, 0xa1, 0xaf, 0xcb, 0x8a, 0x28, 0xb0, 0x5d, 0x9f, 0xad, - 0xfa, 0x5f, 0xfc, 0x16, 0xcf, 0xc2, 0x12, 0x11, 0xfd, 0xa3, - 0xf0, 0xd3, 0x5b, 0xb7, 0x1d, 0xcd, 0xad, 0xf4, 0x32, 0xff, - 00, 0xe8, 0x41, 0x6b, 0xa8, 0xd3, 0x3f, 0xe0, 0xb3, 0xdf, - 0x8, 0xae, 0xdc, 0xb, 0xbf, 0xa, 0xf8, 0xb6, 0xc4, 0x7f, - 0x78, 0xc1, 0x6f, 0x27, 0xf2, 0x96, 0xbf, 0x1a, 0x28, 0xa2, - 0xc1, 0xcc, 0xcf, 0xdc, 0x3b, 0x1f, 0xf8, 0x2b, 0xb7, 0xec, - 0xff, 00, 0x76, 0x47, 0x9d, 0x75, 0xe2, 0x3b, 0x2f, 0x79, - 0xb4, 0x92, 0x7f, 0xf4, 0x6, 0x6a, 0xdc, 0xb3, 0xff, 00, - 0x82, 0xaa, 0x7e, 0xce, 0x57, 0x6c, 0x14, 0xf8, 0xbe, 0xfa, - 0xdf, 0x3d, 0xe6, 0xd1, 0xae, 0x80, 0x1f, 0x94, 0x66, 0xbf, - 0x8, 0x28, 0xa2, 0xc3, 0xe6, 0x3f, 0xa0, 0xd, 0x3f, 0xfe, - 0xa, 0x47, 0xfb, 0x39, 0x6a, 0x2c, 0x15, 0x3e, 0x25, 0x5a, - 0x42, 0x4f, 0xfc, 0xfc, 0x59, 0x5d, 0x44, 0x3f, 0x36, 0x88, - 0xa, 0xea, 0x6c, 0x3f, 0x6d, 0xef, 0x80, 0x9a, 0x88, 0x5f, - 0x27, 0xe2, 0xcf, 0x85, 0x81, 0x6e, 0x82, 0x5d, 0x41, 0x63, - 0x3f, 0x93, 0x62, 0xbf, 0x9d, 0x6a, 0x29, 0x58, 0x39, 0x8f, - 0xe9, 0x53, 0x4e, 0xfd, 0xa2, 0xfe, 0x16, 0x6a, 0xca, 0xd, - 0x9f, 0xc4, 0x6f, 0xb, 0x4e, 0xf, 0x4d, 0xba, 0xc4, 0x1c, - 0xff, 00, 0xe3, 0xf5, 0xd3, 0xd8, 0x78, 0xf3, 0xc3, 0x5a, - 0xa8, 0x6, 0xcb, 0xc4, 0x3a, 0x55, 0xd8, 0x3d, 0xc, 0x17, - 0xb1, 0xbe, 0x7f, 0x26, 0xaf, 0xe6, 0x12, 0x95, 0x58, 0xa9, - 0xc8, 0x24, 0x1f, 0x6a, 0x2c, 0x1c, 0xc7, 0xf5, 0x23, 0xd, - 0xed, 0xbd, 0xc8, 0x6, 0x29, 0xe2, 0x94, 0x1f, 0xee, 0x38, - 0x3f, 0xca, 0xa6, 0xaf, 0xe5, 0xf2, 0xc7, 0xc5, 0x9a, 0xde, - 0x96, 00, 0xb3, 0xd6, 0x75, 0xb, 0x40, 0x3a, 0x79, 0x17, - 0x4e, 0x98, 0xfc, 0x8d, 0x6e, 0x5a, 0xfc, 0x66, 0xf8, 0x83, - 0x63, 0x8f, 0xb3, 0x78, 0xef, 0xc4, 0xd6, 0xf8, 0xe9, 0xe5, - 0x6b, 0x17, 0xb, 0xfc, 0x9e, 0x8b, 0xf, 0x98, 0xfe, 0x99, - 0xe8, 0xaf, 0xe6, 0xd6, 0xc7, 0xf6, 0xa0, 0xf8, 0xc1, 0xa6, - 0xe3, 0xec, 0xff, 00, 0x14, 0x3c, 0x5c, 0x98, 0xe9, 0x9d, - 0x6a, 0xe1, 0xbf, 0x9b, 0x9a, 0xe9, 0xb4, 0xef, 0xdb, 0x9f, - 0xe3, 0xf6, 0x96, 00, 0x83, 0xe2, 0xbf, 0x88, 0xc8, 0x1d, - 0xa6, 0xb9, 0x12, 0xff, 00, 0xe8, 0x60, 0xd1, 0x60, 0xe6, - 0x3f, 0xa2, 0x4a, 0x2b, 0xf0, 0x7, 0x4d, 0xff, 00, 0x82, - 0x94, 0x7e, 0xd1, 0xba, 0x6e, 0x31, 0xf1, 0x1e, 0xe2, 0xe8, - 0xe, 0xd7, 0x36, 0x36, 0xaf, 0xfa, 0xf9, 0x79, 0xae, 0xb7, - 0x4c, 0xff, 00, 0x82, 0xb2, 0x7e, 0xd0, 0xba, 0x78, 0x51, - 0x2e, 0xb5, 0xa3, 0x5f, 0x81, 0xff, 00, 0x3f, 0x3a, 0x4c, - 0x79, 0x3f, 0xf7, 0xce, 0xda, 0x2c, 0x1c, 0xc8, 0xfd, 0xd1, - 0xa2, 0xbf, 0x16, 0x74, 0xdf, 0xf8, 0x2c, 0x9f, 0xc6, 0xbb, - 0x45, 0xb, 0x75, 0xa2, 0x78, 0x46, 0xfb, 0x1d, 0x59, 0xac, - 0xa7, 0x42, 0x7f, 0xef, 0x99, 0xb1, 0xfa, 0x57, 0xeb, 0x5f, - 0xc0, 0x9f, 0x1c, 0x6a, 0x7f, 0x13, 0x3e, 0xc, 0xf8, 0x2b, - 0xc5, 0xba, 0xcd, 0xb4, 0x16, 0x5a, 0xa6, 0xb7, 0xa4, 0xdb, - 0x6a, 0x17, 0x16, 0xf6, 0xc0, 0x88, 0xe3, 0x79, 0x23, 0xe, - 0x55, 0x72, 0x49, 0xc0, 0xcf, 0x73, 0x48, 0x77, 0xb9, 0xdd, - 0xd1, 0x45, 0x14, 0xc, 0x28, 0xa2, 0x8a, 00, 0xf1, 0x4f, - 0xda, 0x4e, 0xe7, 0xcb, 0xd1, 0xa1, 0x4c, 0xff, 00, 0x9, - 0x35, 0xf1, 0xa6, 0xa0, 0xdc, 0x39, 0xf5, 0x26, 0xbe, 0xb3, - 0xfd, 0xa7, 0x6e, 0xb6, 0xc0, 0x89, 0x9e, 0x89, 0x8a, 0xf9, - 0x23, 0x51, 0x6c, 0x46, 0xdf, 0x8d, 0x7e, 0x69, 0x9b, 0x3e, - 0x7c, 0xc2, 0x5e, 0x56, 0x3f, 0x31, 0xe2, 0x59, 0xfe, 0xf4, - 0xf0, 0xdf, 0x1d, 0xc4, 0xda, 0x9f, 0x8e, 0x3c, 0x39, 0x62, - 0x83, 0x73, 0xdc, 0xea, 0xd6, 0xb0, 0x85, 0xf5, 0x2d, 0x2a, - 0xc, 0x7e, 0xb5, 0xfb, 0x56, 00, 00, 0x1, 0xd0, 0x57, - 0xe3, 0x1d, 0x9d, 0xa3, 0xeb, 0x5f, 0xb4, 0x7, 0xc3, 0x8b, - 0x18, 0xcf, 0xcf, 0x2f, 0x89, 0x6c, 0x3f, 0x49, 0xd1, 0x8f, - 0xf2, 0xaf, 0xd9, 0xda, 0xfb, 0x8c, 0xbd, 0x5a, 0x8a, 0x3d, - 0xae, 0x13, 0x8f, 0x2e, 0x5a, 0x9f, 0x76, 0xc2, 0x8a, 0x28, - 0xaf, 0x4c, 0xfb, 0x43, 0xf3, 0xa6, 0xf6, 0x59, 0x3e, 0x1f, - 0x7c, 0x74, 0xd7, 0xac, 0xb5, 0x48, 0xb6, 0xc9, 0x6d, 0xa9, - 0xc9, 0x72, 0x23, 0x27, 0x21, 0x92, 0x43, 0xe6, 0x21, 0xfc, - 0x98, 0x57, 0xd7, 0x5a, 0x47, 0xed, 0x13, 0xe1, 0xdb, 0x8b, - 0x48, 0x7c, 0xd9, 0x15, 0x1f, 0x68, 0xc8, 0xd, 0xd3, 0x8a, - 0xf0, 0x9f, 0xdb, 0xc7, 0xe1, 0x85, 0xed, 0x86, 0xa5, 0xa7, - 0x7c, 0x48, 0xd2, 0xd5, 0x9e, 0x25, 0x44, 0xb1, 0xd4, 0x63, - 0x41, 0xf7, 0x70, 0x4f, 0x97, 0x21, 0xf6, 0xe7, 0x69, 0x3f, - 0xee, 0xd7, 0xce, 0xfe, 0x1f, 0xf1, 0x7c, 0x37, 0xf1, 0x28, - 0xf3, 0x36, 0xc9, 0xdd, 0x49, 0xaf, 0x8a, 0xaf, 0xf5, 0x9c, - 0xb6, 0xac, 0xe5, 0x87, 0xd5, 0x33, 0xf2, 0x6f, 0xaf, 0xd5, - 0xe1, 0xcc, 0x55, 0x5c, 0x2b, 0x8f, 0xb8, 0xdd, 0xd3, 0xf2, - 0x67, 0xe8, 0xc4, 0x3f, 0x1c, 0x7c, 0x33, 0x2f, 0xfc, 0xbd, - 0x1, 0xff, 00, 0x2, 0x15, 0xa1, 0x7, 0xc5, 0x9f, 0xe, - 0x4f, 0xd2, 0xf5, 0x47, 0xe3, 0x5f, 0x9f, 0xb0, 0xea, 0x21, - 0xc6, 0x44, 0xa4, 0x7e, 0x35, 0x65, 0x35, 0x29, 0xd7, 0xee, - 0xdc, 0xb8, 0xfa, 0x35, 0x72, 0x2c, 0xff, 00, 0x15, 0x1f, - 0x8a, 0x8, 0xf6, 0x21, 0xc4, 0xf2, 0x7f, 0x65, 0x1f, 0xa0, - 0xd0, 0xfc, 0x44, 0xd0, 0x26, 0xc6, 0x2f, 0xe3, 0xe7, 0xde, - 0xae, 0x47, 0xe2, 0xfd, 0x1e, 0x50, 0xa, 0xdf, 0xc2, 0x73, - 0xfe, 0xd5, 0x7e, 0x7a, 0x26, 0xb9, 0x7d, 0x18, 0xf9, 0x6f, - 0x25, 0x1f, 0xf0, 0x3a, 0xb5, 0x1f, 0x8b, 0x35, 0x68, 0xbe, - 0xed, 0xfc, 0xdf, 0xf7, 0xd5, 0x6c, 0xb8, 0x8a, 0xaa, 0xf8, - 0xa9, 0xaf, 0xbc, 0xea, 0x8f, 0x12, 0xc7, 0xac, 0xf, 0xd0, - 0xa4, 0xd7, 0xf4, 0xe9, 0x3e, 0xed, 0xe4, 0x27, 0xfe, 0x5, - 0x53, 0xae, 0xa3, 0x6a, 0xdd, 0x2e, 0x22, 0x3f, 0x47, 0x15, - 0xf9, 0xf3, 0x17, 0x8f, 0xf5, 0xd8, 0x47, 0xcb, 0x7f, 0x2f, - 0xe2, 0x6a, 0xf4, 0x3f, 0x15, 0x3c, 0x45, 0xf, 0x4b, 0xe7, - 0x3f, 0x8d, 0x6e, 0xb8, 0x8d, 0x7d, 0xaa, 0x7f, 0x89, 0xd1, - 0x1e, 0x23, 0xa0, 0xf7, 0x8b, 0x3e, 0xfd, 0x59, 0xe3, 0x6e, - 0x92, 0x29, 0xfa, 0x30, 0xa7, 0xee, 0x1e, 0xa2, 0xbe, 0xf, - 0xb7, 0xf8, 0xd9, 0xe2, 0x48, 0x31, 0xfe, 0x92, 0xcd, 0xf5, - 0x35, 0xa3, 0x6f, 0xfb, 0x40, 0xf8, 0x8a, 0x12, 0x33, 0x33, - 0x1c, 0x7a, 0x35, 0x6e, 0xb8, 0x8a, 0x8f, 0x58, 0x33, 0xa2, - 0x3c, 0x41, 0x85, 0x7b, 0xdc, 0xfb, 0x82, 0x8a, 0xf8, 0xd2, - 0xdb, 0xf6, 0x97, 0xd7, 0x62, 0x18, 0x62, 0xed, 0xff, 00, - 0x2, 0xad, 0x3b, 0x6f, 0xda, 0x93, 0x54, 0x4f, 0xbe, 0xae, - 0x7f, 0x1c, 0xd6, 0xeb, 0x3f, 0xc2, 0x3d, 0xee, 0xbe, 0x46, - 0xf1, 0xcf, 0x30, 0x72, 0xfb, 0x47, 0xd7, 0x14, 0x57, 0xcb, - 0x96, 0xff, 00, 0xb5, 0x64, 0xe0, 00, 0xf1, 0x37, 0xe4, - 0x2b, 0x52, 0xd7, 0xf6, 0xab, 0x84, 0xe3, 0xcd, 0x8b, 0xf3, - 0x15, 0xbc, 0x73, 0xbc, 0x13, 0xfb, 0x5f, 0x81, 0xd1, 0x1c, - 0xdb, 0x7, 0x2f, 0xb6, 0x7d, 0x1f, 0x45, 0x78, 0x34, 0x1f, - 0xb5, 0x2e, 0x9a, 0xff, 00, 0x7a, 0x35, 0x15, 0xab, 0x6b, - 0xfb, 0x4a, 0x68, 0x72, 0x91, 0xb8, 0x28, 0xff, 00, 0x81, - 0x62, 0xb7, 0x8e, 0x6d, 0x82, 0x97, 0xfc, 0xbc, 0x47, 0x44, - 0x73, 0xc, 0x34, 0xb6, 0x9a, 0x3d, 0x92, 0x8a, 0xf2, 0xdb, - 0x7f, 0xda, 0x7, 0xc3, 0xf3, 0x11, 0xf3, 0x81, 0xff, 00, - 0x3, 0x15, 0xa7, 0x7, 0xc6, 0xaf, 0xe, 0xcc, 0x33, 0xe7, - 0x81, 0xff, 00, 0x2, 0x15, 0xd1, 0x1c, 0x7e, 0x16, 0x5b, - 0x54, 0x46, 0xcb, 0x15, 0x46, 0x5b, 0x49, 0x1d, 0xfd, 0x15, - 0xc7, 0xc1, 0xf1, 0x53, 0xc3, 0xf3, 0x8e, 0x2e, 0xc0, 0xfa, - 0x91, 0x57, 0xe2, 0xf1, 0xee, 0x89, 0x30, 0x4, 0x5e, 0xa7, - 0xe7, 0x5b, 0xac, 0x45, 0x19, 0x6d, 0x35, 0xf7, 0x9a, 0xaa, - 0xb4, 0xde, 0xd2, 0x47, 0x43, 0x45, 0x64, 0xc7, 0xe2, 0xad, - 0x2a, 0x51, 0xf2, 0xde, 0xc5, 0xff, 00, 0x7d, 0x55, 0x95, - 0xd6, 0xac, 0x1f, 0xa5, 0xdc, 0x27, 0xfe, 0x6, 0x2b, 0x55, - 0x38, 0x3d, 0x99, 0x6a, 0x51, 0x7d, 0x4b, 0xb4, 0x54, 0x9, - 0x7d, 0x6f, 0x27, 0xdd, 0x9e, 0x33, 0xf4, 0x61, 0x52, 0x9, - 0xa3, 0x3d, 0x1d, 0x4f, 0xd0, 0xd5, 0x5d, 0xe, 0xe3, 0xe8, - 0xa4, 0x4, 0x1e, 0x87, 0x34, 0xb4, 0xc6, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0xc7, 0x89, - 0x24, 0xfb, 0xe8, 0xad, 0xfe, 0xf0, 0xcd, 0x3e, 0x8a, 00, - 0xcb, 0xbc, 0xf0, 0xbe, 0x8d, 0xa8, 0x9c, 0xdd, 0xe9, 0x16, - 0x37, 0x47, 0xd6, 0x6b, 0x64, 0x7f, 0xe6, 0x2b, 0x9a, 0xd5, - 0xfe, 0x5, 0xfc, 0x38, 0xd7, 0xc1, 0xfe, 0xd2, 0xf0, 0x17, - 0x86, 0xaf, 0xb3, 0xd7, 0xed, 0x1a, 0x4c, 0xf, 0xfc, 0xd2, - 0xbb, 0x9a, 0x28, 0x3, 0xc7, 0x6f, 0x7f, 0x63, 0x9f, 0x81, - 0x9a, 0x89, 0x26, 0x7f, 0x84, 0x9e, 0xe, 0x24, 0xf7, 0x4d, - 0x1a, 0x4, 0x3f, 0xf8, 0xea, 0x8a, 0xc5, 0xd4, 0x3f, 0x60, - 0xaf, 0xd9, 0xf7, 0x52, 0x42, 0x92, 0xfc, 0x29, 0xf0, 0xfc, - 0x60, 0xf7, 0xb7, 0x85, 0xa1, 0x3f, 0x9a, 0x30, 0xaf, 0x7c, - 0xa2, 0x80, 0x3e, 0x5a, 0xd4, 0xff, 00, 0xe0, 0x99, 0x3f, - 0xb3, 0x96, 0xa4, 0xf, 0xfc, 0x5b, 0xf1, 0x68, 0x4f, 0xf1, - 0x5b, 0x6a, 0x57, 0x49, 0xff, 00, 0xb5, 0x48, 0xae, 0x4b, - 0x52, 0xff, 00, 0x82, 0x47, 0x7e, 0xcf, 0xf7, 0xa0, 0xf9, - 0x16, 0x1a, 0xf5, 0x81, 0xf5, 0x83, 0x56, 0x76, 0xff, 00, - 0xd0, 0xc1, 0xaf, 0xb4, 0xa8, 0xa0, 0x56, 0x3e, 0x1, 0xd5, - 0x7f, 0xe0, 0x8c, 0x9f, 0x8, 0x6e, 0xb2, 0x6c, 0xbc, 0x4d, - 0xe2, 0xcb, 0x3, 0xe8, 0x67, 0x82, 0x50, 0x3f, 0x38, 0xbf, - 0xad, 0x72, 0x9a, 0x9f, 0xfc, 0x11, 0x33, 0xc2, 0x32, 0x3, - 0xfd, 0x9f, 0xf1, 0x2f, 0x5a, 0x80, 0xf6, 0x17, 0x36, 0x10, - 0xc8, 0x3f, 0x42, 0xb5, 0xfa, 0x53, 0x45, 0x1, 0x64, 0x7e, - 0x56, 0x6a, 0x1f, 0xf0, 0x44, 0x4b, 0x92, 0x49, 0xb1, 0xf8, - 0xb7, 0x10, 0x1d, 0x85, 0xc6, 0x84, 0x4f, 0xea, 0x27, 0xac, - 0x2b, 0xcf, 0xf8, 0x22, 0x57, 0x8b, 0xa3, 0x52, 0x6d, 0x7e, - 0x27, 0x68, 0xb3, 0x9e, 0xc2, 0x5d, 0x36, 0x68, 0xf3, 0xf9, - 0x3b, 0x57, 0xeb, 0x85, 0x14, 0xee, 0x16, 0x47, 0xe3, 0x4e, - 0xa7, 0xff, 00, 0x4, 0x60, 0xf8, 0xb5, 0x6e, 0x9, 0xb1, - 0xf1, 0x5f, 0x85, 0x2f, 0x71, 0xd0, 0x3c, 0xb7, 0x11, 0x67, - 0xff, 00, 0x21, 0x1a, 0xe4, 0xf5, 0xf, 0xf8, 0x24, 0x47, - 0xc7, 0xfb, 0x36, 0x22, 0xb, 0x6f, 0xe, 0x5f, 0x1, 0xde, - 0xd, 0x58, 0x2e, 0x7f, 0xef, 0xb4, 0x5a, 0xfd, 0xc2, 0xa2, - 0x8b, 0x8a, 0xc8, 0xfc, 0x14, 0xd5, 0x3f, 0xe0, 0x97, 0x9f, - 0xb4, 0x76, 0x9a, 0x7e, 0x4f, 0x3, 0x45, 0x7d, 0xef, 0x6b, - 0xaa, 0xda, 0x9f, 0xfd, 0xa, 0x41, 0x5c, 0xed, 0xe7, 0xfc, - 0x13, 0xbf, 0xf6, 0x8b, 0xb1, 0xcf, 0x99, 0xf0, 0xb7, 0x54, - 0x7c, 0x7f, 0xcf, 0x1b, 0x8b, 0x69, 0x3f, 0xf4, 0x19, 0x4d, - 0x7f, 0x41, 0xb4, 0x51, 0x70, 0xe5, 0x47, 0xf3, 0xa5, 0xa9, - 0xfe, 0xc5, 0x3f, 0x1d, 0xf4, 0x8c, 0xfd, 0xa7, 0xe1, 0x4f, - 0x89, 0xf8, 0xff, 00, 0x9e, 0x36, 0x2d, 0x2f, 0xfe, 0x81, - 0x9a, 0xe5, 0xf5, 0x1f, 0xd9, 0xd7, 0xe2, 0xa6, 0x90, 0x9, - 0xbd, 0xf8, 0x6d, 0xe2, 0xcb, 0x60, 0x3a, 0x99, 0x34, 0x5b, - 0x91, 0xff, 00, 0xb2, 0x57, 0xf4, 0xab, 0x45, 0x17, 0xe, - 0x53, 0xf9, 0x81, 0xd4, 0xfc, 0x11, 0xe2, 0x3d, 0x10, 0x13, - 0xa8, 0xe8, 0x1a, 0xa5, 0x80, 0x1d, 0x7e, 0xd5, 0x65, 0x24, - 0x78, 0xff, 00, 0xbe, 0x94, 0x56, 0x29, 0xf9, 0x4e, 0xf, - 0x7, 0xd0, 0xd7, 0xf5, 0x25, 0x3d, 0x9c, 0x17, 0x23, 0x13, - 0x41, 0x1c, 0xbf, 0xef, 0xa0, 0x3f, 0xce, 0xb2, 0xb5, 0xf, - 0x3, 0xf8, 0x73, 0x57, 0x4d, 0xb7, 0xde, 0x1f, 0xd2, 0xef, - 0x57, 0xd2, 0xe2, 0xca, 0x39, 0x7, 0xea, 0xb4, 0x5c, 0x39, - 0x4f, 0xe6, 0xa, 0x8a, 0xfe, 0x95, 0xf5, 0x2f, 0xd9, 0xe7, - 0xe1, 0x6e, 0xae, 0x85, 0x2f, 0x7e, 0x1c, 0xf8, 0x56, 0xe5, - 0x4f, 0x50, 0xfa, 0x35, 0xb9, 0xff, 00, 0xd9, 0x2b, 0x99, - 0xbc, 0xfd, 0x8b, 0xfe, 0x4, 0x5f, 0x82, 0x25, 0xf8, 0x49, - 0xe1, 0x1e, 0x7a, 0x98, 0xf4, 0x98, 0xa3, 0x3f, 0x9a, 0x81, - 0x45, 0xc5, 0xca, 0x7f, 0x3a, 0x30, 0xc0, 0xf7, 0x33, 0x47, - 0xc, 0x4a, 0x5e, 0x49, 0x18, 0x22, 0xa8, 0xea, 0x49, 0x38, - 0x2, 0xbf, 0xa7, 0xf, 0x86, 0x5e, 0x1f, 0x1e, 0x14, 0xf8, - 0x6f, 0xe1, 0x5d, 0x10, 0x74, 0xd3, 0xb4, 0xab, 0x5b, 0x4e, - 0x98, 0xfb, 0x91, 0x2a, 0xff, 00, 0x4a, 0xf2, 0x56, 0xfd, - 0x81, 0xbf, 0x67, 0xef, 0x3e, 0x29, 0xe3, 0xf8, 0x5d, 0xa3, - 0x5b, 0xcd, 0x13, 0x89, 0x12, 0x4b, 0x7f, 0x32, 0x32, 0xac, - 0xe, 0x41, 0x1b, 0x5c, 0x77, 0xaf, 0x7e, 00, 0x28, 00, - 0x70, 0x5, 0x5, 0x25, 0x61, 0x68, 0xa2, 0x8a, 0x43, 0xa, - 0x28, 0xa2, 0x80, 0x3e, 0x65, 0xfd, 0xa7, 0xae, 0xf3, 0x74, - 0xc9, 0x9e, 0x80, 0xa, 0xf9, 0x6f, 0x55, 0x6c, 0x40, 0xdf, - 0x4a, 0xfa, 0x2b, 0xf6, 0x96, 0xbb, 0xdf, 0xab, 0xca, 0xb9, - 0xe8, 0xd8, 0xaf, 0x9b, 0xf5, 0xa7, 0xdb, 0x6c, 0xe7, 0xfd, - 0x93, 0x5f, 0x97, 0x63, 0x5f, 0x3e, 0x61, 0x37, 0xe6, 0x7e, - 0x49, 0xc4, 0x93, 0xbd, 0x59, 0x1c, 0x17, 0xc1, 0x6b, 0x21, - 0xad, 0xfe, 0xd7, 0xdf, 0xc, 0x2d, 0x58, 0xf0, 0xba, 0xbf, - 0xda, 0x3f, 0x18, 0xe2, 0x79, 0x7, 0xfe, 0x81, 0x5f, 0xb0, - 0x35, 0xf9, 0x3d, 0xfb, 0x20, 0x69, 0x8b, 0xad, 0xfe, 0xd9, - 0xde, 0x16, 0x2c, 0x37, 0xb, 0x1b, 0x7b, 0xcb, 0xb1, 0xec, - 0x44, 0x25, 0x41, 0xff, 00, 0xc7, 0xeb, 0xf5, 0x86, 0xbf, - 0x44, 0xc1, 0xab, 0x52, 0x47, 0xda, 0x70, 0xdc, 0x39, 0x32, - 0xca, 0x41, 0x45, 0x14, 0x57, 0x69, 0xf4, 0xe5, 0x1d, 0x6b, - 0x45, 0xb1, 0xf1, 0x1e, 0x93, 0x75, 0xa6, 0x6a, 0x56, 0xb1, - 0xde, 0xd8, 0x5d, 0x46, 0x62, 0x9a, 0x9, 0x57, 0x2a, 0xea, - 0x7a, 0x83, 0x5f, 0x9e, 0x3f, 0x1f, 0x3f, 0x63, 0x7d, 0x73, - 0xe1, 0xc6, 0xa7, 0x73, 0xac, 0x78, 0x5c, 0x4b, 0xa8, 0xf8, - 0x71, 0x98, 0xba, 0x94, 0x3b, 0xa5, 0xb5, 0x1f, 0xdd, 0x71, - 0xdc, 0xf, 0xef, 0x7e, 0x78, 0xaf, 0xd1, 0xca, 0x42, 0x3, - 0x2, 0x8, 0xc8, 0x3d, 0x41, 0xae, 0x6a, 0xd4, 0x15, 0x65, - 0xd9, 0x9e, 0x2e, 0x67, 0x94, 0xd0, 0xcd, 0x29, 0xa8, 0xd5, - 0xd1, 0xad, 0x9a, 0xe9, 0xfe, 0x6b, 0xc8, 0xfc, 0x79, 0x4f, - 0xf8, 0x49, 0xb4, 0xae, 0x1e, 0x13, 0x22, 0x8e, 0x3a, 0x73, - 0x52, 0xf, 0x16, 0x6a, 0xb0, 0xff, 00, 0xac, 0xb4, 0x90, - 0x7f, 0xc0, 0x4d, 0x7e, 0xa5, 0x78, 0xa7, 0xe0, 0xb7, 0x84, - 0x3c, 0x5b, 0xbd, 0xaf, 0x34, 0x88, 0xa1, 0x99, 0x8e, 0x4c, - 0xd6, 0xa0, 0x46, 0xc4, 0xfa, 0x9c, 0x70, 0x7f, 0x11, 0x5e, - 0x7f, 0x7f, 0xfb, 0x1e, 0xf8, 0x4a, 0xe9, 0xcb, 0x45, 0x77, - 0x77, 0x8, 0x3d, 0x1, 0x54, 0x6c, 0x7e, 0x82, 0xbc, 0xa, - 0x99, 0x75, 0x5b, 0xfc, 0x29, 0xfe, 0x7, 0xc4, 0xcf, 0x84, - 0x9c, 0x3e, 0x1d, 0x7d, 0x1d, 0xbf, 0x3, 0xf3, 0xe5, 0x7c, - 0x79, 0x75, 0x1f, 0xdf, 0xb7, 0x71, 0xf5, 0x6, 0xa6, 0x4f, - 0x88, 0xc4, 0x70, 0xc8, 0xc3, 0xf0, 0xaf, 0xb9, 0x6e, 0xff, - 00, 0x62, 0x6d, 0x12, 0x40, 0x7c, 0x9d, 0x65, 0xd4, 0xff, - 00, 0xb7, 0x6c, 0xf, 0xfe, 0xcd, 0x58, 0x57, 0x9f, 0xb0, - 0xcc, 0x4e, 0xf, 0x93, 0xac, 0xdb, 0x39, 0xf4, 0x78, 0xa, - 0x8f, 0xeb, 0x5c, 0xaf, 0x2e, 0x9f, 0x5a, 0x5f, 0x8a, 0xff, - 00, 0x33, 0x96, 0x5c, 0x2f, 0x5e, 0x3b, 0x29, 0x7d, 0xeb, - 0xfc, 0xcf, 0x8f, 0xe3, 0xf8, 0x8f, 0x9, 0xeb, 0xb8, 0x55, - 0xa8, 0xfe, 0x22, 0x5b, 0x37, 0xf1, 0xd7, 0xd2, 0x97, 0xff, - 00, 0xb0, 0xbe, 0xa6, 0xa7, 0xf7, 0x33, 0x69, 0xd3, 0x8f, - 0x5d, 0xc5, 0x7f, 0x9a, 0xd7, 0x3f, 0x7f, 0xfb, 0xe, 0x78, - 0x89, 0xf, 0xee, 0xec, 0x6d, 0xa7, 0xf7, 0x8e, 0x64, 0x1f, - 0xcc, 0x8a, 0xe7, 0x96, 0x5f, 0xde, 0x93, 0x39, 0xa5, 0xc3, - 0xf8, 0xa8, 0xec, 0xe5, 0xf7, 0x5c, 0xf1, 0x48, 0xfc, 0x79, - 0x6a, 0xd8, 0xfd, 0xe0, 0xfc, 0x45, 0x59, 0x8f, 0xc6, 0x96, - 0x8d, 0xff, 00, 0x2d, 0x56, 0xbd, 0xe, 0xf3, 0xf6, 0x2d, - 0xf1, 0x44, 0x4c, 0x40, 0xd1, 0x25, 0x6c, 0x77, 0x49, 0x10, - 0xff, 00, 0x26, 0xac, 0x2b, 0xcf, 0xd9, 0x13, 0xc5, 0x96, - 0xec, 0x47, 0xf6, 0x16, 0xa3, 0xc7, 0xfc, 0xf3, 0x89, 0x9b, - 0xf9, 0x56, 0x2f, 0x3, 0x4f, 0xac, 0x24, 0xbe, 0x47, 0x3b, - 0xc9, 0xf1, 0x91, 0xfb, 0x4f, 0xe7, 0x16, 0x60, 0xa7, 0x8a, - 0xed, 0x1f, 0xfe, 0x5a, 0xa7, 0xe7, 0x56, 0x13, 0xc4, 0x56, - 0xcc, 0x3e, 0xfa, 0xfe, 0x75, 0x5e, 0xf7, 0xf6, 0x6c, 0xf1, - 0x2d, 0x96, 0xe2, 0xfa, 0x6e, 0xa7, 0x10, 0x1d, 0xda, 0x16, - 00, 0x7e, 0x95, 0x87, 0x71, 0xf0, 0x6f, 0x5a, 0xb5, 0x62, - 0x18, 0xdc, 0x21, 0x1d, 0x99, 0x6b, 0x9d, 0xe0, 0xa8, 0xf7, - 0x68, 0xe7, 0x78, 0xc, 0x64, 0x7e, 0xda, 0xf9, 0xa3, 0xa9, - 0x5d, 0x66, 0xdd, 0xbf, 0x88, 0x54, 0x83, 0x53, 0x80, 0xff, - 00, 0x10, 0xae, 0x16, 0x4f, 0x86, 0xfa, 0xec, 0x1f, 0x76, - 0x49, 0x4f, 0xd5, 0x6a, 0xbb, 0xf8, 0x43, 0xc4, 0x56, 0xfd, - 0x1d, 0x8f, 0xd4, 0x1a, 0xcf, 0xea, 0x34, 0x9e, 0xd3, 0x32, - 0xfa, 0xbe, 0x35, 0x7f, 0x2b, 0x3d, 0x18, 0x5f, 0x42, 0x7f, - 0x88, 0x53, 0x85, 0xd4, 0x47, 0xa3, 0xd7, 0x98, 0x9d, 0x2b, - 0xc4, 0xb0, 0xff, 00, 0xb, 0x37, 0xe3, 0x4d, 0xdf, 0xe2, - 0x38, 0x3a, 0xc0, 0xc7, 0xf1, 0xa9, 0xfe, 0xcf, 0x8b, 0xda, - 0x62, 0xf6, 0x78, 0xd5, 0xf6, 0x13, 0xf9, 0x9e, 0xa6, 0xb7, - 0x2b, 0xd9, 0xff, 00, 0x5a, 0x91, 0x6e, 0xd8, 0x74, 0x94, - 0xfe, 0x75, 0xe5, 0x3, 0x59, 0xd7, 0xa1, 0xfb, 0xd6, 0x92, - 0x1f, 0xc2, 0x9c, 0x3c, 0x59, 0xaa, 0xc5, 0xf7, 0xed, 0x24, - 0x1f, 0x81, 0xa8, 0x79, 0x6b, 0x7b, 0x34, 0x2e, 0x6c, 0x5c, - 0x77, 0xa4, 0xfe, 0xf3, 0xd6, 0xd3, 0x52, 0xb8, 0x4f, 0xbb, - 0x70, 0xe3, 0xe8, 0xd5, 0x62, 0x3d, 0x7f, 0x50, 0x8f, 0xee, - 0xdd, 0xc8, 0x3f, 0xe0, 0x55, 0xe4, 0xb, 0xe3, 0xbb, 0xb8, - 0xfe, 0xfd, 0xbb, 0x8f, 0xc0, 0xd4, 0xc9, 0xf1, 0xc, 0xaf, - 0xde, 0x8d, 0x87, 0xe7, 0x59, 0xbc, 0xba, 0xa2, 0xda, 0xc3, - 0xfa, 0xd6, 0x26, 0x1b, 0xc2, 0x48, 0xf6, 0x38, 0xbc, 0x63, - 0xac, 0x43, 0x8d, 0x97, 0xb2, 0xc, 0x7b, 0xd5, 0xb8, 0xbe, - 0x22, 0x6b, 0xb0, 0x9e, 0x2f, 0x58, 0xfd, 0x6b, 0xc6, 0x63, - 0xf8, 0x8d, 0x17, 0x7c, 0x8f, 0xc6, 0xac, 0xc7, 0xf1, 0xe, - 0xd8, 0xf5, 0x7a, 0x5f, 0x52, 0xc4, 0x47, 0x6f, 0xcc, 0xb5, - 0x99, 0xd6, 0x8e, 0xfc, 0xcb, 0xef, 0x3d, 0xb2, 0xf, 0x8b, - 0x7e, 0x21, 0x83, 0xa5, 0xd6, 0x7e, 0xb5, 0xa1, 0x6f, 0xf1, - 0xc3, 0xc4, 0x50, 0x11, 0x99, 0xb7, 0x62, 0xbc, 0x36, 0x3f, - 0x1e, 0xda, 0x37, 0xfc, 0xb5, 0x15, 0x66, 0x3f, 0x1a, 0xda, - 0x37, 0xfc, 0xb5, 0x5a, 0x7e, 0xcb, 0x17, 0x1d, 0x9b, 0xfb, - 0xd9, 0xb4, 0x73, 0xba, 0xb1, 0xfb, 0x6d, 0x1e, 0xf9, 0x6f, - 0xfb, 0x43, 0x78, 0x82, 0x10, 0x1, 0x73, 0xf9, 0xd6, 0xa5, - 0xaf, 0xed, 0x2f, 0xac, 0xc5, 0xf7, 0xb2, 0x6b, 0xe7, 0x74, - 0xf1, 0x6d, 0xa3, 0x7f, 0xcb, 0x54, 0xfc, 0xea, 0x74, 0xf1, - 0x25, 0xab, 0xff, 00, 0x1a, 0xfe, 0x75, 0x4a, 0xae, 0x3a, - 0x1b, 0x4e, 0x47, 0x4c, 0x78, 0x86, 0xaa, 0xff, 00, 0x97, - 0xa7, 0xd2, 0xd0, 0x7e, 0xd4, 0xfa, 0x82, 0xe3, 0x7a, 0xb6, - 0x3e, 0x95, 0xab, 0x6b, 0xfb, 0x55, 0xb8, 0xc7, 0x98, 0x9f, - 0x9a, 0xd7, 0xcb, 0x4b, 0xad, 0xdb, 0xb7, 0xf1, 0x8f, 0xce, - 0xa5, 0x5d, 0x56, 0x3, 0xfc, 0x43, 0xf3, 0xab, 0x58, 0xec, - 0x7c, 0x7e, 0xdb, 0x3a, 0xe3, 0xc4, 0x75, 0xff, 00, 0xe7, - 0xe2, 0x3e, 0xb4, 0xb6, 0xfd, 0xaa, 0xad, 0x9c, 0xfc, 0xe8, - 0xa3, 0xfe, 0x3, 0x5a, 0xb6, 0xdf, 0xb4, 0xfe, 0x94, 0xf8, - 0xde, 0x13, 0xf2, 0x22, 0xbe, 0x39, 0x17, 0xf0, 0xb7, 0xf1, - 0xa, 0x78, 0xbb, 0x88, 0xf4, 0x71, 0x5a, 0xac, 0xdb, 0x1f, - 0x1f, 0xb5, 0xf8, 0x1d, 0x91, 0xe2, 0x4a, 0xfd, 0xd3, 0x3e, - 0xd6, 0xb6, 0xfd, 0xa4, 0x34, 0x29, 0xb1, 0xb8, 0xa8, 0xfc, - 0x6b, 0x52, 0xf, 0x8f, 0x5e, 0x1d, 0x94, 0xc, 0xca, 0x6, - 0x7d, 0xd, 0x7c, 0x2e, 0x2e, 0x53, 0xb3, 0xfe, 0xb5, 0x22, - 0xdd, 0x63, 0xa4, 0xa7, 0xf0, 0x35, 0xaa, 0xcf, 0x31, 0xb1, - 0xde, 0xcf, 0xe4, 0x75, 0x47, 0x89, 0x6a, 0xf5, 0x8a, 0x3e, - 0xf5, 0xb7, 0xf8, 0xcb, 0xe1, 0xd9, 0xff, 00, 0xe5, 0xe3, - 0x15, 0xa1, 0x17, 0xc4, 0xed, 0x2, 0x5e, 0x97, 0x80, 0x7d, - 0x6b, 0xf3, 0xf9, 0x2f, 0x65, 0x5f, 0xbb, 0x3b, 0x8f, 0xa3, - 0x54, 0xc9, 0xab, 0xdd, 0xc7, 0xf7, 0x6e, 0xa4, 0x1f, 0xf0, - 0x23, 0x5b, 0xae, 0x20, 0xc4, 0x2d, 0xe0, 0x8e, 0x98, 0xf1, - 0x2c, 0xba, 0xc0, 0xfd, 0x7, 0x8b, 0xc7, 0x3a, 0x2c, 0xdf, - 0x76, 0xf5, 0x3f, 0x1a, 0xb4, 0x9e, 0x28, 0xd2, 0xe4, 0xfb, - 0xb7, 0xb1, 0x9f, 0xc6, 0xbf, 0x3d, 0xa3, 0xf1, 0x2e, 0xa7, - 0x1f, 0xdd, 0xbd, 0x97, 0xfe, 0xfa, 0x35, 0x6a, 0x2f, 0x1b, - 0x6b, 0x30, 0x91, 0xb6, 0xf6, 0x4e, 0x3d, 0x58, 0xd6, 0xcb, - 0x88, 0xa7, 0xd6, 0x9f, 0xe2, 0x74, 0x2e, 0x24, 0x87, 0x58, - 0x1f, 0xa1, 0x11, 0xea, 0xf6, 0x52, 0xfd, 0xdb, 0x98, 0xcf, - 0xfc, 0xa, 0xa6, 0x5b, 0xc8, 0x1b, 0xa4, 0xc8, 0x7e, 0x8c, - 0x2b, 0xf3, 0xfa, 0x1f, 0x89, 0x7a, 0xf4, 0x23, 0x8b, 0xc7, - 0xfc, 0xcd, 0x5e, 0x83, 0xe3, 0x7, 0x88, 0x20, 0xc6, 0x2e, - 0x58, 0xe3, 0xfd, 0xa3, 0x5b, 0xc7, 0x88, 0xa3, 0xd6, 0x9b, - 0x3a, 0x23, 0xc4, 0x58, 0x77, 0xba, 0x67, 0xde, 0xe2, 0x45, - 0x6e, 0x8c, 0xf, 0xd0, 0xd2, 0xe6, 0xbe, 0x18, 0x87, 0xe3, - 0xb7, 0x88, 0x22, 0xc0, 0xf3, 0xf, 0xfd, 0xf4, 0x6b, 0x4e, - 0xdf, 0xf6, 0x8a, 0xd7, 0x21, 0x23, 0x3b, 0x8e, 0x3f, 0xda, - 0x35, 0xba, 0xe2, 0x1a, 0x1d, 0x62, 0xce, 0x88, 0xe7, 0xf8, - 0x47, 0xbb, 0x3e, 0xd5, 0xa2, 0xbe, 0x3e, 0x83, 0xf6, 0x9c, - 0xd5, 0xd0, 0x8d, 0xe1, 0xb1, 0xfe, 0xf1, 0xad, 0x5b, 0x5f, - 0xda, 0x9a, 0xed, 0x71, 0xbd, 0xf, 0x15, 0xbc, 0x73, 0xec, - 0x23, 0xde, 0xeb, 0xe4, 0x74, 0x47, 0x3a, 0xc1, 0xcb, 0xed, - 0x1f, 0x56, 0x51, 0x5f, 0x33, 0xdb, 0x7e, 0xd5, 0x44, 0x91, - 0xe6, 0x20, 0x1f, 0x51, 0x5a, 0xd6, 0xff, 00, 0xb5, 0x35, - 0x91, 0x3, 0x7a, 0xa7, 0xe4, 0x6b, 0xa2, 0x39, 0xd6, 0xa, - 0x5f, 0x6c, 0xe8, 0x8e, 0x69, 0x84, 0x96, 0xd3, 0x47, 0xd0, - 0x54, 0x57, 0x88, 0xdb, 0x7e, 0xd3, 0x5a, 0x4c, 0xa4, 0x6f, - 0x11, 0x8f, 0xc4, 0xd6, 0x9c, 0x1f, 0xb4, 0x56, 0x83, 0x26, - 0x32, 0xf1, 0xe7, 0xd9, 0xeb, 0x78, 0xe6, 0xb8, 0x39, 0x6d, - 0x51, 0x1b, 0xac, 0x76, 0x1e, 0x5b, 0x4d, 0x1e, 0xb7, 0x45, - 0x79, 0xbd, 0xbf, 0xc7, 0x4f, 0xf, 0xcf, 0xff, 00, 0x2d, - 0x94, 0x7f, 0xc0, 0xeb, 0x46, 0x1f, 0x8b, 0xfe, 0x1e, 0x9b, - 0x3, 0xed, 0x40, 0x1f, 0xad, 0x74, 0x47, 0x1b, 0x86, 0x96, - 0xd5, 0x17, 0xde, 0x6c, 0xb1, 0x14, 0x5e, 0xd2, 0x47, 0x6f, - 0x45, 0x72, 0xf0, 0x7c, 0x49, 0xd0, 0x67, 0xe9, 0x7a, 0x83, - 0xea, 0x6a, 0xdc, 0x7e, 0x36, 0xd1, 0x65, 0xfb, 0xb7, 0xf1, - 0x9f, 0xc6, 0xb6, 0x55, 0xe9, 0x3d, 0xa4, 0xbe, 0xf2, 0xd5, - 0x58, 0x3d, 0xa4, 0x8d, 0xda, 0x2b, 0x32, 0x3f, 0x12, 0x69, - 0x92, 0xfd, 0xdb, 0xd8, 0xbf, 0xef, 0xaa, 0x9d, 0x35, 0x7b, - 0x29, 0x3e, 0xed, 0xd4, 0x47, 0xfe, 0x4, 0x2b, 0x45, 0x38, - 0xbd, 0x99, 0x7c, 0xd1, 0xee, 0x5c, 0xa2, 0xa1, 0x5b, 0xb8, - 0x1f, 0xee, 0xca, 0x87, 0xfe, 0x4, 0x2a, 0x41, 0x22, 0x37, - 0x46, 0x53, 0xf4, 0x35, 0x57, 0x45, 0xe, 0xa2, 0x93, 0x39, - 0xa5, 0xa6, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, - 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, - 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, - 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, - 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, - 0x1, 0x45, 0x14, 0x50, 0x1, 0x48, 0x78, 0x14, 0xb4, 0xc9, - 0x5b, 0x64, 0x4e, 0xde, 0x80, 0x9a, 00, 0xf8, 0xdb, 0xf6, - 0x85, 0xba, 0xf3, 0x75, 0xd9, 0x87, 0xfb, 0x67, 0xf9, 0xd7, - 0x80, 0x78, 0x89, 0xf6, 0x59, 0x4d, 0xfe, 0xe9, 0xaf, 0x68, - 0xf8, 0xe1, 0x73, 0xe6, 0xf8, 0x82, 0x50, 0x4f, 0xf1, 0x93, - 0xfa, 0xd7, 0x84, 0x78, 0xc6, 0xf0, 0x41, 0xa7, 0x4c, 0x72, - 0x7, 0xca, 0x6b, 0xf2, 0xb7, 0xfb, 0xcc, 0x6c, 0xdf, 0x99, - 0xf8, 0xb7, 0x10, 0xce, 0xf5, 0x66, 0x6f, 0x7f, 0xc1, 0x3d, - 0xac, 0x1b, 0x50, 0xfd, 0xab, 0x75, 0x8b, 0xbd, 0xb9, 0x8e, - 0xcb, 0xc3, 0xf7, 0x4, 0x9f, 0x46, 0x79, 0xa1, 0x51, 0xfa, - 0x66, 0xbf, 0x4f, 0x2b, 0xf3, 0x97, 0xfe, 0x9, 0x81, 0x68, - 0x6f, 0xfe, 0x2d, 0x7c, 0x4d, 0xd5, 0xa, 0x9d, 0xb6, 0xfa, - 0x75, 0xa5, 0xb0, 0x6c, 0x71, 0x99, 0x25, 0x91, 0x88, 0xcf, - 0xfd, 0xb3, 0x15, 0xfa, 0x35, 0x5f, 0xa5, 0xe1, 0xd5, 0xa9, - 0xa3, 0xf5, 0xc, 0x9e, 0x1e, 0xcf, 0x1, 0x4a, 0x3e, 0x48, - 0x28, 0xa2, 0x8a, 0xe9, 0x3d, 0x90, 0xa2, 0x8a, 0x28, 00, - 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, - 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa8, 0xe4, 0x82, 0x29, - 0x46, 0x1e, 0x34, 0x71, 0xe8, 0xca, 0xd, 0x49, 0x45, 00, - 0x50, 0x9f, 0x41, 0xd3, 0x2e, 0x46, 0x26, 0xd3, 0xad, 0x25, - 0x1e, 0x8f, 0x2, 0x9f, 0xe6, 0x2b, 0x3e, 0xe3, 0xc0, 0x1e, - 0x19, 0xbb, 0xff, 00, 0x5b, 0xa0, 0x69, 0xad, 0xff, 00, - 0x6e, 0xa8, 0x3f, 0x90, 0xad, 0xfa, 0x2a, 0x1c, 0x20, 0xf7, - 0x46, 0x6e, 0x9c, 0x25, 0xbc, 0x51, 0xc5, 0xdd, 0xfc, 0x19, - 0xf0, 0x55, 0xe9, 0xcc, 0x9e, 0x1e, 0xb4, 0x1f, 0xf5, 0xcc, - 0x14, 0xfe, 0x44, 0x56, 0x45, 0xdf, 0xec, 0xe9, 0xe0, 0x4b, - 0xbc, 0xff, 00, 0xc4, 0xa0, 0xc3, 0x9f, 0xf9, 0xe7, 0x33, - 0x71, 0xf9, 0x93, 0x5e, 0x97, 0x45, 0x62, 0xf0, 0xd4, 0x65, - 0xbc, 0x17, 0xdc, 0x63, 0x2c, 0x26, 0x1e, 0x5b, 0xd3, 0x5f, - 0x72, 0x3c, 0x66, 0xef, 0xf6, 0x51, 0xf0, 0x4d, 0xce, 0x76, - 0x8b, 0xc8, 0x73, 0xfd, 0xd9, 0x10, 0xff, 00, 0x35, 0xac, - 0x9b, 0xaf, 0xd8, 0xeb, 0xc2, 0x93, 0x3, 0xe5, 0xdf, 0x5d, - 0xc6, 0x7f, 0xda, 0x54, 0x6f, 0xe8, 0x2b, 0xdf, 0x28, 0xac, - 0x9e, 0xb, 0xe, 0xfe, 0xc2, 0x30, 0x79, 0x76, 0x11, 0xff, - 00, 0xcb, 0xb4, 0x7c, 0xd5, 0x79, 0xfb, 0x13, 0xe8, 0xd2, - 0xff, 00, 0xa9, 0xd6, 0x9d, 0x7d, 0x9e, 0xd8, 0x1f, 0xfd, - 0x9a, 0xb0, 0xaf, 0x7f, 0x61, 0xa4, 0x6c, 0xf9, 0x1a, 0xbd, - 0xb3, 0xff, 00, 0xd7, 0x48, 0x4a, 0xff, 00, 0x8d, 0x7d, - 0x65, 0x45, 0x66, 0xf2, 0xfc, 0x3b, 0xfb, 0x3f, 0x8b, 0x32, - 0x79, 0x56, 0x11, 0xfd, 0x9f, 0xc5, 0xff, 00, 0x99, 0xf1, - 0x6d, 0xef, 0xec, 0x2f, 0xa9, 0xe0, 0x98, 0xee, 0x34, 0xe9, - 0x7d, 0x83, 0x11, 0xfc, 0xd6, 0xb9, 0xeb, 0xdf, 0xd8, 0x7f, - 0xc4, 0x28, 0xe, 0xcb, 0xb, 0x79, 0x7f, 0xdc, 0x99, 0x3f, - 0xa9, 0x15, 0xf7, 0x9d, 0x15, 0x9b, 0xcb, 0x68, 0xf4, 0x6d, - 0x7c, 0xcc, 0x25, 0x93, 0x61, 0x9e, 0xd7, 0x5f, 0x33, 0xf3, - 0xb6, 0xf3, 0xf6, 0x2d, 0xf1, 0x4c, 0x4a, 0x48, 0xd0, 0xe4, - 0x3f, 0xf5, 0xce, 0x44, 0x6f, 0xe4, 0xd5, 0x87, 0x7d, 0xfb, - 0x22, 0x78, 0xae, 0xd7, 0x27, 0xfb, 0xb, 0x50, 0xff, 00, - 0x80, 0x46, 0xcd, 0xfc, 0xab, 0xf4, 0xba, 0x8a, 0x8f, 0xec, - 0xc8, 0xf4, 0x9b, 0xfc, 0xe, 0x79, 0x64, 0x54, 0x1e, 0xd2, - 0x7f, 0x87, 0xf9, 0x1f, 0x96, 0x37, 0xbf, 0xb3, 0x77, 0x88, - 0xec, 0x98, 0xac, 0x9a, 0x6e, 0xa5, 0xb, 0x7a, 0x34, 0x2c, - 0x3f, 0xa5, 0x62, 0xdd, 0x7c, 0x18, 0xd6, 0xad, 0x1b, 0x69, - 0x17, 0x31, 0x91, 0xd9, 0x97, 0x15, 0xfa, 0xd1, 0x51, 0xbd, - 0xbc, 0x52, 0xe7, 0x7c, 0x48, 0xf9, 0xfe, 0xf2, 0x83, 0x50, - 0xf2, 0xd9, 0x74, 0xa9, 0xf8, 0x7f, 0xc1, 0x39, 0x65, 0xc3, - 0xb4, 0xa5, 0xf6, 0x97, 0xfe, 0x3, 0xff, 00, 0x4, 0xfc, - 0x8c, 0x97, 0xe1, 0xa6, 0xb9, 0x7, 0xdd, 0x92, 0x5f, 0xc5, - 0x4d, 0x57, 0x7f, 0x6, 0xf8, 0x86, 0xe, 0x8e, 0xdc, 0x7a, - 0x82, 0x2b, 0xf5, 0xae, 0x7f, 0xb, 0xe8, 0xd7, 0x24, 0x99, - 0xb4, 0x9b, 0x19, 0x49, 0xea, 0x5e, 0xdd, 0xf, 0xf4, 0xac, - 0xd9, 0xbe, 0x19, 0xf8, 0x4e, 0xe0, 0x93, 0x27, 0x87, 0x74, - 0xd2, 0x4f, 0x53, 0xf6, 0x65, 0x1f, 0xd2, 0xb3, 0x79, 0x75, - 0x6e, 0x93, 0x5f, 0x71, 0xc7, 0x3e, 0x18, 0xa6, 0xff, 00, - 0x97, 0xee, 0x3f, 0x28, 0xe, 0x8f, 0xe2, 0x38, 0x3d, 0x4f, - 0xe2, 0x69, 0x9f, 0xf1, 0x51, 0xc1, 0xd6, 0x26, 0x6f, 0xc6, - 0xbf, 0x54, 0x67, 0xf8, 0x29, 0xe0, 0x8b, 0x90, 0x43, 0xf8, - 0x76, 0xd0, 0x67, 0xba, 0xee, 0x5f, 0xe4, 0x6b, 0x1e, 0xef, - 0xf6, 0x6e, 0xf0, 0xd, 0xd0, 0xe3, 0x48, 0x68, 0x4f, 0xac, - 0x73, 0xbf, 0xf5, 0x26, 0xb2, 0x79, 0x75, 0x7f, 0xee, 0xbf, - 0xeb, 0xd0, 0xe4, 0x9f, 0xa, 0x45, 0xed, 0x18, 0xfd, 0xef, - 0xfc, 0x8f, 0xcc, 0x7f, 0xed, 0x6d, 0x7a, 0x1f, 0xbd, 0x6c, - 0xe6, 0x94, 0x78, 0xa7, 0x56, 0x8b, 0xef, 0xda, 0xc9, 0xff, - 00, 0x7c, 0x9a, 0xfd, 0x1f, 0xbc, 0xfd, 0x93, 0xbc, 0xf, - 0x73, 0xfe, 0xad, 0x2f, 0x20, 0xff, 00, 0x76, 0x45, 0x3f, - 0xcd, 0x6b, 0x12, 0xf7, 0xf6, 0x35, 0xf0, 0xbc, 0xf9, 0xf2, - 0x35, 0xb, 0x98, 0xbf, 0xdf, 0x8d, 0x5b, 0xf9, 0x62, 0xb1, - 0x96, 0x5f, 0x5b, 0xf9, 0x13, 0x38, 0xe5, 0xc2, 0x8d, 0x6d, - 0x1f, 0xba, 0x47, 0xe7, 0xf0, 0xf1, 0xcd, 0xe4, 0x63, 0xe7, - 0xb7, 0x71, 0xf5, 0x6, 0xa6, 0x4f, 0x88, 0x4e, 0xbf, 0x7a, - 0x32, 0x3f, 0x3a, 0xfb, 0x82, 0xef, 0xf6, 0x24, 0xd3, 0x64, - 0x3f, 0xb9, 0xd6, 0x94, 0xf, 0xf6, 0xed, 0x7f, 0xfb, 0x2a, - 0xc5, 0xbd, 0xfd, 0x86, 0x4b, 0x67, 0xc9, 0xd5, 0xac, 0xe4, - 0xf4, 0xf3, 0x22, 0x65, 0xff, 00, 0x1a, 0xc1, 0xe0, 0x2a, - 0x75, 0xa3, 0xf8, 0xaf, 0xf3, 0x39, 0x65, 0xc3, 0x15, 0x56, - 0xd1, 0x97, 0xde, 0xbf, 0xcc, 0xf9, 0x6, 0x3f, 0x88, 0xa9, - 0xfc, 0x40, 0x8a, 0xb5, 0x1f, 0xc4, 0x4b, 0x73, 0xd5, 0xb1, - 0xf8, 0xd7, 0xd2, 0xb7, 0xbf, 0xb0, 0xae, 0xaa, 0x1, 0xf2, - 0xa7, 0xd3, 0x26, 0xff, 00, 0x81, 0x11, 0xfc, 0xd6, 0xb9, - 0xfb, 0xef, 0xd8, 0x77, 0xc4, 0x71, 0x3, 0xb2, 0xc2, 0xd6, - 0x6f, 0xfa, 0xe7, 0x32, 0xff, 00, 0x52, 0x2b, 0x9, 0x60, - 0x7b, 0xd2, 0x67, 0x3c, 0xb8, 0x7b, 0x13, 0x1d, 0x9c, 0xfe, - 0xeb, 0x9e, 0x27, 0x1f, 0x8f, 0xad, 0x5b, 0x1f, 0xbc, 0xc5, - 0x59, 0x4f, 0x1b, 0x5a, 0xb7, 0xfc, 0xb5, 0x5f, 0xc6, 0xbd, - 0xe, 0xff, 00, 0xf6, 0x31, 0xf1, 0x4d, 0xbe, 0x4f, 0xf6, - 0x1c, 0x8c, 0x3d, 0x63, 0x60, 0xdf, 0xc8, 0xd7, 0x3f, 0x7b, - 0xfb, 0x28, 0xf8, 0x9a, 0xd4, 0x9c, 0xe8, 0x5a, 0x8a, 0xfb, - 0xac, 0xe, 0x7f, 0xa5, 0x61, 0x2c, 0x15, 0x35, 0xbc, 0x1a, - 0xf9, 0x1c, 0xd2, 0xc9, 0xb1, 0x70, 0xfb, 0x6f, 0xe7, 0x16, - 0x62, 0x27, 0x8b, 0xed, 0x5b, 0xfe, 0x5a, 0xa7, 0xe7, 0x53, - 0xa7, 0x89, 0xad, 0x9f, 0xa4, 0x89, 0xf9, 0xd5, 0x7b, 0xcf, - 0xd9, 0xd7, 0xc4, 0x36, 0x79, 0x2f, 0xa7, 0xea, 0x11, 0x1, - 0xfd, 0xe8, 0x58, 0x7f, 0x4a, 0xc6, 0xb8, 0xf8, 0x3b, 0xac, - 0xdb, 0x67, 0xfe, 0x3e, 0x13, 0x1f, 0xde, 0x43, 0x58, 0x3c, - 0x1d, 0xf, 0x34, 0x60, 0xf2, 0xfc, 0x64, 0x7e, 0xda, 0xf9, - 0xa3, 0xa8, 0x5d, 0x7a, 0xdd, 0xbf, 0x8d, 0x7f, 0x3a, 0x95, - 0x75, 0x78, 0xf, 0xf1, 0xa, 0xe1, 0x24, 0xf8, 0x6f, 0xad, - 0xc3, 0x9d, 0xb2, 0xc9, 0xf8, 0xa1, 0xaa, 0xef, 0xe0, 0xfd, - 0x7e, 0xe, 0x92, 0x31, 0xfc, 0xd, 0x47, 0xd4, 0xa8, 0xbd, - 0xa4, 0x67, 0xf5, 0x5c, 0x6a, 0xeb, 0x16, 0x7a, 0x38, 0xd4, - 0xa1, 0x6f, 0xe2, 0x14, 0xe1, 0x7d, 0x9, 0xfe, 0x31, 0x5e, - 0x62, 0xda, 0x47, 0x88, 0xa0, 0xe8, 0x49, 0xfc, 0x4d, 0x34, - 0xff, 00, 0xc2, 0x43, 0x7, 0x58, 0xd9, 0xbf, 0x1a, 0x87, - 0x97, 0xc7, 0xa4, 0x89, 0xf6, 0x58, 0xe5, 0xf6, 0x13, 0xf9, - 0x9e, 0xa6, 0x2e, 0xa3, 0x3f, 0xc4, 0x29, 0xc2, 0xe1, 0x4f, - 0x47, 0xfd, 0x6b, 0xca, 0x7f, 0xb5, 0xb5, 0xd8, 0x7e, 0xf5, - 0xb4, 0x87, 0xf0, 0xa7, 0xf, 0x14, 0xea, 0xb1, 0x7d, 0xeb, - 0x69, 0x3f, 0xef, 0x9a, 0x97, 0x97, 0x3e, 0x92, 0x44, 0xff, - 00, 0xb5, 0xc7, 0x7a, 0x47, 0xab, 0x8b, 0x93, 0xda, 0x53, - 0xf9, 0xd4, 0x89, 0x7d, 0x32, 0xfd, 0xd9, 0xd8, 0x7f, 0xc0, - 0xab, 0xc9, 0xd7, 0xc7, 0x17, 0x91, 0xfd, 0xfb, 0x77, 0x1f, - 0x81, 0xa9, 0x93, 0xe2, 0x13, 0xaf, 0xde, 0x8d, 0x85, 0x64, - 0xf2, 0xd9, 0xf4, 0xb0, 0x7b, 0x7c, 0x44, 0x77, 0xa7, 0x23, - 0xd6, 0x53, 0x58, 0xbd, 0x4f, 0xbb, 0x75, 0x28, 0xff, 00, - 0x81, 0x1a, 0xb1, 0x1f, 0x89, 0xb5, 0x38, 0xbe, 0xed, 0xe4, - 0xa3, 0xfe, 0x4, 0x6b, 0xc9, 0xa3, 0xf8, 0x88, 0x9d, 0xc3, - 0xf, 0xc6, 0xac, 0xc7, 0xf1, 0xa, 0x3, 0xfc, 0x44, 0x54, - 0x7f, 0x67, 0xd6, 0x5b, 0x21, 0xac, 0xc2, 0xac, 0x77, 0x52, - 0x5f, 0x79, 0xeb, 0x71, 0xf8, 0xe3, 0x5a, 0x8b, 0xa5, 0xf4, - 0x9f, 0xf7, 0xd5, 0x5c, 0x83, 0xe2, 0x6e, 0xbd, 0x6, 0x31, - 0x74, 0xc7, 0xea, 0x4d, 0x79, 0x14, 0x7e, 0x3e, 0xb6, 0x6e, - 0xaf, 0x8a, 0xb3, 0x1f, 0x8d, 0xad, 0x5b, 0xfe, 0x5a, 0x8a, - 0x5f, 0x55, 0xc4, 0x47, 0x6b, 0xfd, 0xec, 0xd5, 0x66, 0xf3, - 0x8f, 0xdb, 0x92, 0x3d, 0x8e, 0x1f, 0x8c, 0x3e, 0x20, 0x8b, - 0x1f, 0xe9, 0x4, 0xe3, 0xdc, 0xd6, 0x8d, 0xbf, 0xc7, 0x7d, - 0x7a, 0x1c, 0x7c, 0xe4, 0xff, 00, 0xc0, 0x8d, 0x78, 0x9a, - 0x78, 0xbe, 0xd5, 0xbf, 0xe5, 0xaa, 0xfe, 0x75, 0x3a, 0x78, - 0x9e, 0xd9, 0xff, 00, 0xe5, 0xa2, 0xfe, 0x74, 0x72, 0xe2, - 0xe1, 0xb3, 0x7f, 0x7b, 0x3a, 0x23, 0x9e, 0x54, 0x5f, 0xf2, - 0xf5, 0x9e, 0xef, 0x6f, 0xfb, 0x45, 0x6b, 0x71, 0x63, 0x73, - 0x31, 0xff, 00, 0x81, 0x1a, 0xd6, 0xb6, 0xfd, 0xa6, 0xf5, - 0x48, 0xb1, 0xb8, 0x39, 0xff, 00, 0x81, 0x57, 0xcf, 0x29, - 0xaf, 0xdb, 0xb7, 0xf1, 0xaf, 0xe7, 0x52, 0xae, 0xb1, 0x3, - 0x7f, 0x10, 0xfc, 0xea, 0xd6, 0x23, 0x1b, 0xd, 0xa6, 0xce, - 0xb8, 0x71, 0x5, 0x65, 0xb5, 0x53, 0xe9, 0x4b, 0x6f, 0xda, - 0x92, 0xec, 0x7f, 0xac, 0xdd, 0x5a, 0xd6, 0xdf, 0xb5, 0x42, - 0xf1, 0xbd, 0x41, 0xfa, 0x8a, 0xf9, 0x65, 0x75, 0x38, 0x4f, - 0xf1, 0xf, 0xce, 0x9e, 0x2f, 0xa1, 0x6f, 0xe2, 0x15, 0xa2, - 0xcc, 0x71, 0xf1, 0xfb, 0x6c, 0xeb, 0x8f, 0x11, 0x62, 0x3f, - 0x9d, 0x1f, 0x5b, 0xdb, 0x7e, 0xd4, 0x56, 0x6f, 0x8f, 0x30, - 0x20, 0xfc, 0x2b, 0x56, 0xf, 0xda, 0x63, 0x49, 0x93, 0x19, - 0xf2, 0xfe, 0xb9, 0x22, 0xbe, 0x35, 0x17, 0x31, 0x1f, 0xe2, - 0x14, 0xf1, 0x3a, 0x1e, 0x8f, 0xfa, 0xd6, 0xcb, 0x38, 0xc7, - 0x47, 0xed, 0x7e, 0x7, 0x5c, 0x78, 0x8f, 0x11, 0xe4, 0xcf, - 0xb6, 0xad, 0xff, 00, 0x68, 0x6d, 0xe, 0x5c, 0x6e, 0x78, - 0xc7, 0xfc, 0xa, 0xb4, 0xa0, 0xf8, 0xe7, 0xe1, 0xf9, 0xb1, - 0x89, 0x57, 0xfe, 0xfa, 0xaf, 0x85, 0x44, 0xe3, 0xb3, 0xfe, - 0xb4, 0xf5, 0xba, 0x91, 0x7a, 0x4a, 0xc3, 0xe8, 0xd5, 0xb2, - 0xcf, 0x71, 0x8b, 0x74, 0x8e, 0xa8, 0xf1, 0x25, 0x5e, 0xb1, - 0x3e, 0xf8, 0xb7, 0xf8, 0xb9, 0xa0, 0x4c, 0x1, 0xfb, 0x48, - 0x1f, 0x8d, 0x5d, 0x8b, 0xe2, 0x4e, 0x83, 0x37, 0xdd, 0xbc, - 0x5a, 0xfc, 0xff, 00, 0x5d, 0x46, 0xe5, 0x7a, 0x5c, 0x3f, - 0xfd, 0xf5, 0x53, 0xc7, 0xae, 0xea, 0x11, 0xfd, 0xdb, 0xb9, - 0x7, 0xd1, 0xab, 0x75, 0xc4, 0x35, 0xd6, 0xf0, 0x47, 0x44, - 0x78, 0x91, 0xf5, 0x81, 0xfa, 0xd, 0x1f, 0x8d, 0x74, 0x69, - 0x7a, 0x5f, 0x46, 0x3e, 0xa6, 0xac, 0xc7, 0xe2, 0x5d, 0x32, - 0x5f, 0xbb, 0x7b, 0x11, 0xfc, 0x6b, 0xf3, 0xe5, 0x3c, 0x5b, - 0xab, 0x47, 0x8c, 0x5e, 0xcb, 0xff, 00, 0x7d, 0x55, 0xb8, - 0x7c, 0x7f, 0xad, 0xc3, 0xf7, 0x6f, 0x5f, 0xf1, 0x35, 0xb2, - 0xe2, 0x29, 0x7d, 0xaa, 0x7f, 0x89, 0xd1, 0x1e, 0x24, 0xa6, - 0xf7, 0x89, 0xfa, 0x6, 0x9a, 0xb5, 0x9b, 0xfd, 0xdb, 0xa8, - 0x8f, 0xfc, 0x8, 0x54, 0xa9, 0x79, 0x3, 0xfd, 0xd9, 0x91, - 0xbe, 0x8c, 0x2b, 0xe0, 0x48, 0x7e, 0x29, 0xeb, 0xf1, 0x1f, - 0xf8, 0xfb, 0x73, 0xf8, 0xd6, 0x84, 0x1f, 0x1a, 0x7c, 0x41, - 0x7, 0xfc, 0xb7, 0x27, 0xf1, 0xad, 0xe3, 0xc4, 0x50, 0xeb, - 0x4d, 0xfe, 0x7, 0x44, 0x78, 0x87, 0xe, 0xf7, 0x4c, 0xfb, - 0xbc, 0x3a, 0x9e, 0x8c, 0xf, 0xe3, 0x4b, 0x90, 0x7b, 0xd7, - 0xc3, 0xf6, 0xff, 00, 0x1f, 0x35, 0xc8, 0xb1, 0xba, 0x47, - 0x6f, 0xf8, 0x15, 0x6a, 0x5b, 0xfe, 0xd2, 0x1a, 0xc4, 0x3d, - 0x4b, 0xff, 00, 0xdf, 0x55, 0xd1, 0x1e, 0x21, 0xc3, 0xbd, - 0xe2, 0xd1, 0xd1, 0x1c, 0xfb, 0x8, 0xfa, 0x9f, 0x66, 0xd1, - 0x5f, 0x22, 0xdb, 0x7e, 0xd3, 0xba, 0x8a, 0xe3, 0xcc, 0x32, - 0x1f, 0x6c, 0xd6, 0xad, 0xbf, 0xed, 0x4d, 0x38, 0xc6, 0xe0, - 0xdf, 0x8e, 0x2b, 0x68, 0xe7, 0xd8, 0x37, 0xbb, 0x6b, 0xe4, - 0x6f, 0x1c, 0xe7, 0x7, 0x2f, 0xb4, 0x7d, 0x4b, 0x45, 0x7c, - 0xdf, 0x6b, 0xfb, 0x52, 0x46, 0x71, 0xe6, 0x7e, 0xa2, 0xb5, - 0x2d, 0xff, 00, 0x69, 0xfb, 0x17, 0xc0, 0x65, 0x5f, 0xa9, - 0xad, 0xe3, 0x9d, 0x60, 0xa5, 0xf6, 0xce, 0x88, 0xe6, 0x78, - 0x59, 0x6d, 0x33, 0xdf, 0x28, 0xaf, 0x18, 0xb7, 0xfd, 0xa4, - 0x74, 0x87, 0xc6, 0xf3, 0x18, 0xff, 00, 0x81, 0x56, 0x9d, - 0xbf, 0xed, 0x3, 0xa1, 0xcd, 0x8e, 0x57, 0xfe, 0xfb, 0xae, - 0x88, 0xe6, 0x78, 0x39, 0x6d, 0x51, 0x1b, 0xac, 0x6e, 0x1e, - 0x5b, 0x4d, 0x1e, 0xa9, 0x45, 0x79, 0xec, 0x1f, 0x1a, 0xf4, - 0x9, 0x40, 0xcc, 0xa0, 0x7f, 0xc0, 0x85, 0x5f, 0x83, 0xe2, - 0xc6, 0x83, 0x39, 0xe2, 0xe3, 0x1f, 0x88, 0xae, 0x85, 0x8c, - 0xc3, 0xcb, 0x69, 0xa3, 0x55, 0x88, 0xa4, 0xf6, 0x92, 0x3b, - 0x3a, 0x2b, 0x9a, 0x8f, 0xe2, 0x16, 0x87, 0x27, 0xfc, 0xbe, - 0x28, 0xfc, 0x6a, 0xdc, 0x5e, 0x32, 0xd2, 0x26, 0x3f, 0x2d, - 0xec, 0x7f, 0x9d, 0x6c, 0xab, 0x52, 0x7b, 0x49, 0x1a, 0x2a, - 0x90, 0x7d, 0x4d, 0xaa, 0x2b, 0x39, 0x3c, 0x41, 0xa7, 0x3f, - 0x4b, 0xc8, 0xbf, 0xef, 0xaa, 0x9d, 0x35, 0x4b, 0x49, 0x3e, - 0xed, 0xcc, 0x67, 0xfe, 0x4, 0x2a, 0xd4, 0xe2, 0xf6, 0x65, - 0x73, 0x27, 0xd4, 0xb5, 0x55, 0xb5, 0x27, 0xf2, 0xac, 0x2e, - 0x1b, 0xd1, 0x9, 0xfd, 0x2a, 0x41, 0x73, 0xb, 0x74, 0x95, - 0xf, 0xfc, 0x8, 0x56, 0x4f, 0x8b, 0xb5, 0x58, 0x34, 0xef, - 0xf, 0x5e, 0xcd, 0x24, 0xaa, 0x2, 0xc6, 0x7f, 0x88, 0x52, - 0x9c, 0x92, 0x8b, 0x62, 0x94, 0x92, 0x8b, 0x67, 0xc3, 0xff, - 00, 0x18, 0xef, 0x47, 0xf6, 0xe4, 0xc4, 0x9f, 0xe2, 0x3f, - 0xce, 0xbe, 0x6a, 0xf8, 0x9d, 0xe2, 0x25, 0x8a, 0xdd, 0xe2, - 0x57, 0xc1, 0xc1, 0xef, 0x5e, 0xa7, 0xf1, 0xaf, 0xc6, 0xf0, - 0x7f, 0x69, 0x5c, 0x4a, 0xae, 0x32, 0x58, 0xe0, 0x66, 0xbe, - 0x67, 0xbe, 0x87, 0x53, 0xf8, 0x83, 0xe2, 0x5b, 0x1d, 0x13, - 0x4b, 0x89, 0xee, 0x75, 0x2d, 0x4a, 0xe1, 0x6d, 0xad, 0xe2, - 0x5e, 0x4b, 0x33, 0x1c, 0xa, 0xf8, 0x3c, 0xbf, 0xc, 0xe5, - 0x39, 0x56, 0x7d, 0x5b, 0xb1, 0xf8, 0x9d, 0x78, 0x4b, 0x33, - 0xcc, 0xb9, 0x21, 0xf0, 0xa6, 0x7e, 0x80, 0x7f, 0xc1, 0x2d, - 0xbc, 0x19, 0x36, 0x97, 0xf0, 0xa3, 0xc5, 0x3e, 0x28, 0xb8, - 0x8c, 0xab, 0x6b, 0xda, 0xb6, 0xd8, 0x58, 0xff, 00, 0x14, - 0x30, 0x26, 0xc0, 0x7f, 0xef, 0xb6, 0x93, 0xf2, 0xaf, 0xb5, - 0x6b, 0x88, 0xf8, 0x27, 0xf0, 0xda, 0xdf, 0xe1, 0xf, 0xc2, - 0x9f, 0xc, 0xf8, 0x42, 0xdc, 0xab, 0x8d, 0x2e, 0xcd, 0x22, - 0x92, 0x45, 0x18, 0xf3, 0x25, 0x3f, 0x34, 0x8d, 0xf8, 0xb1, - 0x63, 0x5d, 0xbd, 0x7d, 0xec, 0x23, 0xcb, 0x14, 0x8f, 0xda, - 0x68, 0xc3, 0xd9, 0x53, 0x8c, 0x3b, 0x20, 0xa2, 0x8a, 0x2a, - 0xcd, 0x82, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0xa3, 0x92, - 0xde, 0x29, 0x86, 0x24, 0x89, 0x1c, 0x7f, 0xb4, 0xa0, 0xd4, - 0x94, 0x51, 0xb8, 0x19, 0x97, 0x3e, 0x19, 0xd1, 0xef, 0x41, - 0x17, 0x1a, 0x55, 0x94, 0xc0, 0xf6, 0x92, 0xdd, 0xf, 0xf3, - 0x15, 0x97, 0x75, 0xf0, 0xcb, 0xc2, 0x77, 0x83, 0x12, 0xf8, - 0x7b, 0x4f, 0x3f, 0xee, 0xc0, 0xab, 0xfc, 0xb1, 0x5d, 0x3d, - 0x15, 0x9b, 0xa7, 0x9, 0x6f, 0x14, 0x64, 0xe9, 0x53, 0x97, - 0xc5, 0x14, 0xfe, 0x47, 0x5, 0x75, 0xf0, 0x2b, 0xc0, 0xd7, - 0x9f, 0x7f, 0x40, 0x85, 0x7f, 0xdc, 0x91, 0xd7, 0xf9, 0x35, - 0x64, 0xdc, 0x7e, 0xcd, 0x1e, 0x2, 0xb8, 0x24, 0xff, 00, - 0x65, 0xcb, 0x1e, 0x7b, 0x24, 0xed, 0xfd, 0x73, 0x5e, 0xa7, - 0x45, 0x62, 0xf0, 0xb4, 0x1e, 0xf0, 0x5f, 0x71, 0x83, 0xc1, - 0xe1, 0xa5, 0xbd, 0x35, 0xf7, 0x23, 0xc5, 0xae, 0x7f, 0x64, - 0xbf, 0x3, 0x5c, 0x64, 0xa8, 0xbe, 0x8b, 0x3d, 0x2, 0xca, - 0xa4, 0xf, 0xcd, 0x6b, 0x16, 0xeb, 0xf6, 0x32, 0xf0, 0xb4, - 0xa1, 0xbc, 0xad, 0x46, 0xee, 0x33, 0xdb, 0x72, 0x29, 0xff, - 00, 0xa, 0xfa, 0xe, 0x8a, 0xcd, 0xe0, 0x70, 0xef, 0xec, - 0x19, 0x3c, 0xbb, 0x8, 0xff, 00, 0xe5, 0xda, 0x3e, 0x61, - 0xbb, 0xfd, 0x88, 0xb4, 0xe7, 0x53, 0xe4, 0xeb, 0x99, 0x3d, - 0x83, 0xdb, 0x60, 0x7f, 0xe8, 0x55, 0xcf, 0xdf, 0x7e, 0xc3, - 0x77, 0x27, 0xfd, 0x46, 0xa5, 0x63, 0x2f, 0xfb, 0xe1, 0x97, - 0xff, 00, 0x65, 0x35, 0xf5, 0xf5, 0x15, 0x93, 0xcb, 0xb0, - 0xef, 0x64, 0xd7, 0xcd, 0x98, 0xbc, 0xab, 0x8, 0xfe, 0xcd, - 0xbe, 0x6c, 0xf8, 0x92, 0xf7, 0xf6, 0x18, 0xd6, 0xb9, 0xf2, - 0xdb, 0x4e, 0x97, 0xfd, 0xd9, 0x48, 0xfe, 0x6a, 0x2b, 0x6, - 0xfb, 0xf6, 0x1e, 0xf1, 0x2c, 0x64, 0xec, 0xd3, 0xad, 0xa6, - 0xf7, 0x4b, 0x84, 0xfe, 0xa4, 0x57, 0xdf, 0x34, 0x54, 0x3c, - 0xb2, 0x8f, 0x46, 0xfe, 0xf3, 0x7, 0x93, 0x61, 0x9f, 0x57, - 0xf7, 0xff, 00, 0xc0, 0x3f, 0x39, 0xaf, 0x7f, 0x63, 0x1f, - 0x15, 0xdb, 0x92, 0x3f, 0xb0, 0x65, 0x6f, 0xfa, 0xe7, 0x22, - 0xb7, 0xf2, 0x26, 0xb0, 0x2f, 0x7f, 0x65, 0xf, 0x14, 0x5a, - 0x12, 0xe, 0x83, 0xa8, 0xae, 0x3f, 0xbb, 0x13, 0x37, 0xf2, - 0x15, 0xfa, 0x71, 0x45, 0x43, 0xcb, 0x23, 0xd2, 0x6c, 0xc2, - 0x59, 0x15, 0x7, 0xb4, 0x9f, 0xe1, 0xfe, 0x47, 0xe5, 0x3d, - 0xef, 0xec, 0xfd, 0xad, 0xd9, 0x13, 0xe6, 0x59, 0x5e, 0xc3, - 0xfe, 0xfa, 0x11, 0xfc, 0xc5, 0x64, 0x4f, 0xf0, 0x8f, 0x56, - 0xb7, 0x24, 0x3, 0x32, 0xff, 00, 0xbc, 0x2b, 0xf5, 0xb8, - 0xa8, 0x3d, 0x40, 0x35, 0xc, 0x96, 0x16, 0xd3, 0xc, 0x49, - 0x6f, 0x14, 0x83, 0xfd, 0xa4, 0x6, 0xb3, 0x79, 0x6c, 0xfa, - 0x54, 0xfc, 0x3f, 0xe0, 0x9c, 0x92, 0xe1, 0xda, 0x72, 0xfb, - 0x4b, 0xff, 00, 0x1, 0xff, 00, 0x82, 0x7e, 0x45, 0xc9, - 0xf0, 0xeb, 0x5a, 0x83, 0xa4, 0x8f, 0xf8, 0xa9, 0xaa, 0xcf, - 0xe1, 0x1d, 0x7e, 0x1e, 0x8f, 0xf9, 0xe4, 0x57, 0xeb, 0x7c, - 0xfe, 0x15, 0xd1, 0x6e, 0xbf, 0xd7, 0x69, 0x16, 0x32, 0xff, - 00, 0xbf, 0x6c, 0x87, 0xfa, 0x56, 0x65, 0xcf, 0xc3, 0xf, - 0x9, 0x5d, 0xff, 00, 0xad, 0xf0, 0xee, 0x9c, 0x7d, 0xc5, - 0xba, 0xaf, 0xf2, 0xa8, 0x79, 0x75, 0x6e, 0x93, 0x4f, 0xe4, - 0x72, 0x4f, 0x86, 0x29, 0xbd, 0xb9, 0x7e, 0xe3, 0xf2, 0x7c, - 0xe9, 0x3e, 0x22, 0x83, 0xa7, 0x3f, 0xf0, 0x23, 0x4d, 0xff, - 00, 0x8a, 0x8a, 0x1f, 0xf9, 0x66, 0x5b, 0x1e, 0xf5, 0xfa, - 0x9b, 0x75, 0xf0, 0x2b, 0xc0, 0xb7, 0x79, 0xdf, 0xe1, 0xeb, - 0x75, 0xcf, 0xfc, 0xf3, 0x77, 0x5f, 0xe4, 0x6b, 0x26, 0xe7, - 0xf6, 0x67, 0xf0, 0x5, 0xc0, 0x23, 0xfb, 0x2a, 0x48, 0xb3, - 0xdd, 0x27, 0x6f, 0xeb, 0x9a, 0xc9, 0xe5, 0xf5, 0xff, 00, - 0xba, 0xff, 00, 0xaf, 0x43, 0x8e, 0x7c, 0x29, 0x17, 0xf6, - 0x63, 0xf7, 0xbf, 0xf2, 0x3f, 0x32, 0x3f, 0xb5, 0xb5, 0xc8, - 0x4f, 0xcd, 0x6e, 0xe7, 0xf0, 0xcd, 0x28, 0xf1, 0x46, 0xab, - 0x17, 0xdf, 0xb7, 0x7f, 0xfb, 0xe6, 0xbf, 0x48, 0x2e, 0xff, - 00, 0x64, 0xbf, 0x2, 0xdc, 0x8f, 0x91, 0x2f, 0x61, 0xff, - 00, 0x76, 0x55, 0x3f, 0xcd, 0x6b, 0x1e, 0xf3, 0xf6, 0x33, - 0xf0, 0xa4, 0xc3, 0xf7, 0x1a, 0x85, 0xe4, 0x47, 0xfd, 0xb5, - 0x56, 0xff, 00, 0xa, 0xc9, 0xe0, 0x2b, 0x7f, 0x22, 0x67, - 0x24, 0xb8, 0x51, 0xad, 0xa1, 0xf7, 0x48, 0xfc, 0xfa, 0x5f, - 0x1c, 0x5d, 0xc7, 0xf7, 0xe1, 0x61, 0xff, 00, 0x1, 0x35, - 0x32, 0x7c, 0x41, 0x71, 0xf7, 0x90, 0x8f, 0xce, 0xbe, 0xe2, - 0xbd, 0xfd, 0x88, 0x74, 0xc9, 0x3f, 0xe3, 0xdf, 0x5b, 0xc0, - 0xff, 00, 0xa6, 0x96, 0xdf, 0xe0, 0xd5, 0x81, 0x79, 0xfb, - 0xc, 0x4e, 0xcc, 0x7c, 0x9d, 0x52, 0xc5, 0xd7, 0xb6, 0xf5, - 0x65, 0x3f, 0xfa, 0x9, 0xac, 0x1e, 0x2, 0xa7, 0x5a, 0x5f, - 0x91, 0xcb, 0x2e, 0x17, 0xab, 0x1d, 0xa3, 0x2f, 0xbd, 0x7f, - 0x99, 0xf2, 0x24, 0x7f, 0x11, 0x13, 0xbe, 0x6a, 0xd4, 0x7f, - 0x10, 0xa0, 0x38, 0xcb, 0x11, 0x5f, 0x4a, 0x5d, 0xfe, 0xc2, - 0xfa, 0xcf, 0x3e, 0x5b, 0xe9, 0xb2, 0xe, 0xd8, 0x90, 0x8f, - 0xe6, 0xb5, 0x83, 0x79, 0xfb, 0xe, 0xf8, 0x99, 0x41, 0x29, - 0xa7, 0xdb, 0x49, 0xfe, 0xe5, 0xc2, 0xf, 0xeb, 0x58, 0x3c, - 0xf, 0x7a, 0x4c, 0xe6, 0x97, 0xe, 0xe2, 0x23, 0xb7, 0x3f, - 0xdd, 0x73, 0xc4, 0xa3, 0xf1, 0xed, 0xb3, 0x7f, 0xcb, 0x4f, - 0xd2, 0xac, 0xc7, 0xe3, 0x7b, 0x66, 0xff, 00, 0x96, 0xa2, - 0xbd, 0x16, 0xf7, 0xf6, 0x2e, 0xf1, 0x64, 0xa, 0xcd, 0xfd, - 0x83, 0x23, 0x1, 0xff, 00, 0x3c, 0xe5, 0x56, 0xfd, 0x3, - 0x57, 0x3f, 0x7d, 0xfb, 0x28, 0x78, 0xa6, 0xd0, 0x16, 0x7d, - 0x3, 0x51, 0x50, 0x3b, 0xac, 0x4c, 0x7f, 0xa5, 0x60, 0xf0, - 0x54, 0xd6, 0xf0, 0x6b, 0xe4, 0x73, 0xcb, 0x25, 0xc5, 0xc3, - 0xed, 0xc9, 0x7a, 0xa6, 0x61, 0x27, 0x8c, 0x2d, 0x5b, 0xfe, - 0x5a, 0xad, 0x58, 0x4f, 0x14, 0x5b, 0x3f, 0xfc, 0xb4, 0x5f, - 0xce, 0xaa, 0x5f, 0x7e, 0xcf, 0xda, 0xe5, 0x8e, 0x7c, 0xdb, - 0x1b, 0xf8, 0xf, 0xfb, 0x71, 0xb0, 0xfe, 0x62, 0xb2, 0x27, - 0xf8, 0x47, 0xaa, 0xdb, 0xe7, 0x99, 0xd7, 0xea, 0xb5, 0x83, - 0xc2, 0x50, 0xf4, 0x39, 0xde, 0x5f, 0x8b, 0x8f, 0xfc, 0xbc, - 0x5f, 0x34, 0x75, 0x2b, 0xaf, 0xdb, 0xb7, 0xf1, 0x8f, 0xce, - 0xa5, 0x5d, 0x62, 0x16, 0xee, 0x2b, 0x83, 0x93, 0xe1, 0xd6, - 0xb3, 0xf, 0xdd, 0x95, 0xc7, 0xd5, 0x6a, 0xbb, 0xf8, 0x3f, - 0x5e, 0x83, 0xa4, 0x9f, 0xce, 0xb3, 0xfa, 0x95, 0x17, 0xb4, - 0x88, 0xfa, 0xae, 0x35, 0x6d, 0x28, 0xb3, 0xd2, 0x6, 0xa9, - 0x9, 0xfe, 0x2a, 0x78, 0xbf, 0x84, 0xff, 00, 0x10, 0xaf, - 0x2f, 0x3a, 0x37, 0x88, 0x61, 0xe8, 0x73, 0xff, 00, 0x2, - 0xa6, 0x95, 0xf1, 0xc, 0x3d, 0x50, 0x9f, 0xa3, 0x54, 0xbc, - 0xbe, 0x1d, 0x24, 0x4f, 0xb1, 0xc7, 0x2f, 0xb2, 0x9f, 0xcc, - 0xf5, 0x51, 0x77, 0x11, 0xfe, 0x2a, 0x70, 0x9e, 0x33, 0xfc, - 0x55, 0xe5, 0x3, 0x52, 0xd7, 0xa1, 0xfb, 0xd0, 0x39, 0xa7, - 0x7f, 0xc2, 0x4d, 0xaa, 0xc5, 0xf7, 0xe0, 0x93, 0xfe, 0xf9, - 0xa9, 0x79, 0x77, 0x69, 0x12, 0xd6, 0x32, 0x3b, 0xd2, 0x3d, - 0x58, 0x4c, 0xbd, 0x9a, 0x9e, 0xb3, 0x11, 0xd2, 0x43, 0xf9, - 0xd7, 0x94, 0x2f, 0x8d, 0x6f, 0x53, 0xef, 0x42, 0xff, 00, - 0x8a, 0x9a, 0x95, 0x3e, 0x20, 0x4a, 0xbf, 0x79, 0x18, 0x7e, - 0x6, 0xb3, 0x79, 0x6c, 0xfa, 0x32, 0x7d, 0xae, 0x22, 0x3b, - 0xd2, 0x67, 0xaa, 0xad, 0xd4, 0x8b, 0xd2, 0x56, 0x1f, 0x8d, - 0x4c, 0x9a, 0xa5, 0xda, 0x7d, 0xdb, 0x89, 0x7, 0xd1, 0xab, - 0xcb, 0x23, 0xf8, 0x88, 0xbd, 0xc1, 0x15, 0x66, 0x3f, 0x88, - 0x50, 0x9e, 0xac, 0x6b, 0x37, 0x97, 0x55, 0x5d, 0x3, 0xeb, - 0xb5, 0x23, 0xbc, 0x64, 0x8f, 0x51, 0x8f, 0xc4, 0x3a, 0x8c, - 0x47, 0x2b, 0x75, 0x27, 0xfd, 0xf4, 0x6a, 0xdc, 0x5e, 0x33, - 0xd6, 0x22, 0xfb, 0xb7, 0x8e, 0x3f, 0x1a, 0xf2, 0xd8, 0xfc, - 0x7d, 0x6e, 0x7f, 0x8c, 0xd4, 0xeb, 0xe3, 0xab, 0x6c, 0x64, - 0xcb, 0x8a, 0xcf, 0xea, 0x35, 0xa3, 0xb2, 0x34, 0x59, 0xa4, - 0xa3, 0xd6, 0x4b, 0xef, 0x3d, 0x56, 0x1f, 0x88, 0x9a, 0xe4, - 0x3d, 0x2e, 0xd8, 0xfd, 0x4d, 0x5e, 0x8f, 0xe2, 0xe6, 0xbd, - 0x7, 0xfc, 0xbc, 0xd7, 0x8b, 0x5c, 0x7c, 0x42, 0xb4, 0x88, - 0x1f, 0xde, 0xd6, 0x16, 0xa7, 0xf1, 0x4e, 0xde, 0x30, 0x76, - 0x36, 0xe3, 0x5d, 0x14, 0xf0, 0x78, 0xa7, 0xb3, 0x6b, 0xe6, - 0xcd, 0x16, 0x73, 0x5f, 0x6a, 0x6e, 0x4c, 0xfa, 0x2f, 0xfe, - 0x17, 0xe6, 0xb1, 0x62, 0x32, 0xd3, 0xee, 0x23, 0xde, 0xb8, - 0x5f, 0x88, 0x3f, 0xb4, 0xad, 0xfd, 0xed, 0x94, 0xd0, 0xbd, - 0xe3, 0x7c, 0xc3, 0x5, 0x1, 0xe2, 0xbe, 0x7b, 0xd6, 0x7e, - 0x22, 0xde, 0x5f, 0x16, 0x58, 0x89, 0x55, 0x35, 0x99, 0xe1, - 0xdf, 0xb, 0xf8, 0x87, 0xe2, 0x26, 0xbb, 0x6f, 0xa5, 0xe8, - 0xd6, 0x17, 0x3a, 0xae, 0xa3, 0x70, 0xdb, 0x63, 0x82, 0x4, - 0x2c, 0x4f, 0xf8, 0x1, 0xea, 0x78, 0x15, 0xed, 0xd0, 0xc0, - 0xd4, 0x4a, 0xd5, 0x66, 0xdf, 0x95, 0xcd, 0xe3, 0x8b, 0xcc, - 0x71, 0x5e, 0xe5, 0x49, 0xf2, 0xc5, 0xf4, 0xea, 0xc8, 0x7c, - 0x53, 0xe2, 0xcb, 0x9f, 0x10, 0x5d, 0x33, 0xb3, 0x33, 0x64, - 0xf0, 0x7, 0x7a, 0xfb, 0xf3, 0xf6, 0x15, 0xfd, 0x91, 0x66, - 0xf0, 0x1a, 0x45, 0xf1, 0xf, 0xc6, 0x76, 0x5e, 0x5f, 0x88, - 0xee, 0x13, 0x3a, 0x5d, 0x94, 0x87, 0x26, 0xce, 0x26, 0x5e, - 0x64, 0x71, 0xda, 0x46, 0x7, 0xa7, 0xf0, 0x8f, 0x73, 0xc6, - 0xcf, 0xec, 0xb3, 0xfb, 0xb, 0xe9, 0xff, 00, 0xc, 0x65, - 0xb7, 0xf1, 0x37, 0x8d, 0xd2, 0xdf, 0x57, 0xf1, 0x3a, 0x10, - 0xf6, 0xd6, 0x6a, 0x7c, 0xcb, 0x7b, 0x2e, 0x3a, 0x9c, 0x8c, - 0x3c, 0x9e, 0xfd, 0x7, 0x6c, 0xf5, 0xaf, 0xae, 0xab, 0xe9, - 0xf0, 0xf8, 0x75, 0x4, 0x9b, 0x5e, 0x88, 0xfd, 0xf, 0x26, - 0xca, 0x56, 0x12, 0x2a, 0xa5, 0x45, 0x67, 0xd1, 0x7f, 0x9f, - 0x98, 0x51, 0x45, 0x15, 0xe8, 0x1f, 0x58, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x21, 00, 0xf5, 0xa8, 0xa5, 0xb3, 0xb7, - 0x9b, 0xfd, 0x64, 0x11, 0xc9, 0xfe, 0xf2, 0x3, 0x45, 0x14, - 0xad, 0x71, 0x5a, 0xe5, 0x19, 0xfc, 0x2d, 0xa3, 0x5c, 0x92, - 0x66, 0xd2, 0x2c, 0x65, 0x27, 0xbb, 0xdb, 0x21, 0xfe, 0x95, - 0x9b, 0x71, 0xf0, 0xcf, 0xc2, 0x77, 0x44, 0x99, 0x7c, 0x3b, - 0xa6, 0xb1, 0x3f, 0xf4, 0xec, 0xa3, 0xf9, 0xa, 0x28, 0xa8, - 0x74, 0xe0, 0xf7, 0x8a, 0x33, 0x74, 0xa9, 0xcb, 0x78, 0xaf, - 0xb8, 0xc7, 0xbb, 0xf8, 0x13, 0xe0, 0x5b, 0xdc, 0xef, 0xf0, - 0xfd, 0xba, 0x93, 0xde, 0x36, 0x65, 0xfe, 0x46, 0xb1, 0xee, - 0xff, 00, 0x66, 0x4f, 0x1, 0x5d, 0x74, 0xd3, 0xa5, 0x87, - 0xfe, 0xb9, 0xcc, 0x7f, 0xae, 0x68, 0xa2, 0xb1, 0x78, 0x5a, - 0xf, 0x78, 0x2f, 0xb8, 0xc2, 0x58, 0x3c, 0x34, 0xb7, 0xa6, - 0xbe, 0xe4, 0x63, 0x5d, 0x7e, 0xc8, 0xbe, 0xa, 0x9f, 0xee, - 0x49, 0x7d, 0x17, 0xb0, 0x74, 0x3f, 0xfb, 0x2d, 0x64, 0x5d, - 0x7e, 0xc6, 0x1e, 0x19, 0x97, 0x3e, 0x4e, 0xa9, 0x77, 0x17, - 0xfb, 0xd1, 0xab, 0x7f, 0x85, 0x14, 0x56, 0x6f, 0x3, 0x86, - 0x7f, 0x60, 0xc5, 0xe5, 0xd8, 0x47, 0xff, 00, 0x2e, 0xd1, - 0x8b, 0x7b, 0xfb, 0x10, 0x69, 0xd2, 0x3, 0xe4, 0x6b, 0xdc, - 0xf6, 0x12, 0x5a, 0xff, 00, 0x83, 0x56, 0xd, 0xf7, 0xec, - 0x31, 0x71, 0x83, 0xf6, 0x7d, 0x5a, 0xca, 0x53, 0xd8, 0x49, - 0x1b, 0x2f, 0xf4, 0x34, 0x51, 0x59, 0xbc, 0xbb, 0xe, 0xf6, - 0x56, 0xf9, 0xb3, 0x27, 0x95, 0x61, 0x1f, 0xd9, 0xb7, 0xcd, - 0x98, 0x17, 0xdf, 0xb0, 0xce, 0xb8, 0xa0, 0xf9, 0x6d, 0xa7, - 0x4f, 0xec, 0xb2, 0x63, 0xf9, 0xa8, 0xae, 0x7e, 0xff, 00, - 0xf6, 0x24, 0xf1, 0x44, 0x59, 0xd9, 0xa5, 0xc1, 0x37, 0xbc, - 0x73, 0x47, 0xfd, 0x5a, 0x8a, 0x2b, 0x29, 0x65, 0xb4, 0xba, - 0x37, 0xf7, 0xff, 00, 0xc0, 0x39, 0xe5, 0x93, 0x61, 0xba, - 0x37, 0xf7, 0xff, 00, 0xc0, 0x30, 0x2f, 0x3f, 0x63, 0x6f, - 0x16, 0x43, 0xff, 00, 0x32, 0xfc, 0xed, 0xff, 00, 0x5c, - 0xd9, 0x5b, 0xf9, 0x1a, 0xc1, 0xbf, 0xfd, 0x94, 0x3c, 0x55, - 0x6d, 0x90, 0x7c, 0x3f, 0xa9, 0x8f, 0x75, 0x85, 0x98, 0x7e, - 0x82, 0x8a, 0x2b, 0x86, 0xa6, 0x16, 0x34, 0xf6, 0x93, 0xfe, - 0xbe, 0x47, 0x97, 0x5f, 0x2c, 0xa3, 0x4d, 0x68, 0xdf, 0xe1, - 0xfe, 0x46, 0xb, 0x7e, 0xcc, 0x1e, 0x23, 0xb9, 0x9f, 0xcb, - 0x5d, 0x1e, 0xfc, 0xbe, 0x7a, 0x1b, 0x77, 0x3f, 0xd2, 0xb4, - 0x34, 0xff, 00, 0xd8, 0x8f, 0xc7, 0x7a, 0xc4, 0xaa, 0xb0, - 0xe8, 0x57, 0x10, 0x8c, 0xfd, 0xfb, 0x8c, 0x44, 0xb8, 0xf5, - 0xf9, 0x88, 0xa2, 0x8a, 0x58, 0x7a, 0x4e, 0xa4, 0xac, 0xe4, - 0xff, 00, 0xf, 0xf2, 0x38, 0x68, 0x65, 0x54, 0x31, 0x4e, - 0xd3, 0x6d, 0x7a, 0x5b, 0xfc, 0x8f, 0x62, 0xf8, 0x79, 0xff, - 00, 0x4, 0xdc, 0x88, 0x3a, 0x5c, 0x78, 0xc3, 0x5c, 0x8, - 0xa0, 0x83, 0xf6, 0x3d, 0x34, 0x6e, 0x63, 0xec, 0x64, 0x61, - 0x81, 0xf8, 0x3, 0xf5, 0xaf, 0xae, 0x3e, 0x1d, 0xfc, 0x27, - 0xf0, 0xaf, 0xc2, 0xad, 0x29, 0x6c, 0x3c, 0x33, 0xa3, 0xdb, - 0xe9, 0xc9, 0x8c, 0x3c, 0xca, 0xbb, 0xa6, 0x97, 0xdd, 0xdc, - 0xf2, 0x68, 0xa2, 0xbe, 0x82, 0x14, 0x61, 0x4f, 0x6d, 0xcf, - 0xac, 0xc1, 0xe5, 0x98, 0x5c, 0xe, 0xb4, 0x61, 0xaf, 0x77, - 0xab, 0xfb, 0xff, 00, 0xc8, 0xeb, 0xa8, 0xa2, 0x8a, 0xd8, - 0xf5, 0x42, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0xf, - 0xff, 0xd9, 0}; - -static const char data_runtime_shtml[] = { - /* /runtime.shtml */ - 0x2f, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x20, 0x6f, 0x6e, 0x4c, 0x6f, 0x61, 0x64, - 0x3d, 0x22, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x73, - 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x28, - 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x6c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x68, 0x72, 0x65, 0x66, 0x3d, - 0x27, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x73, - 0x68, 0x74, 0x6d, 0x6c, 0x27, 0x26, 0x71, 0x75, 0x6f, 0x74, - 0x3b, 0x2c, 0x32, 0x30, 0x30, 0x30, 0x29, 0x22, 0x3e, 0xd, - 0xa, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, - 0x65, 0x3d, 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x3e, - 0xd, 0xa, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, - 0x22, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, - 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x53, - 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x72, 0x75, 0x6e, - 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x52, 0x75, 0x6e, 0x20, 0x54, 0x69, 0x6d, 0x65, - 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, - 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x73, - 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x54, 0x43, 0x50, 0x20, 0x53, 0x74, 0x61, 0x74, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, - 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61, 0x3e, - 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, - 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, - 0x66, 0x72, 0x65, 0x65, 0x72, 0x74, 0x6f, 0x73, 0x2e, 0x6f, - 0x72, 0x67, 0x2f, 0x22, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, - 0x54, 0x4f, 0x53, 0x20, 0x48, 0x6f, 0x6d, 0x65, 0x70, 0x61, - 0x67, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6f, 0x2e, 0x73, 0x68, - 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x49, 0x4f, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x6c, 0x6f, 0x67, 0x6f, 0x2e, 0x6a, 0x70, 0x67, 0x22, 0x3e, - 0x33, 0x37, 0x4b, 0x20, 0x6a, 0x70, 0x67, 0x3c, 0x2f, 0x61, - 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, - 0xd, 0xa, 0x3c, 0x68, 0x72, 0x3e, 0xd, 0xa, 0x3c, 0x62, - 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x32, - 0x3e, 0x52, 0x75, 0x6e, 0x2d, 0x74, 0x69, 0x6d, 0x65, 0x20, - 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, - 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0xd, 0xa, 0x50, 0x61, 0x67, - 0x65, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x72, 0x65, 0x66, - 0x72, 0x65, 0x73, 0x68, 0x20, 0x65, 0x76, 0x65, 0x72, 0x79, - 0x20, 0x32, 0x20, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, - 0x2e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x6e, - 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x63, 0x6f, - 0x75, 0x72, 0x69, 0x65, 0x72, 0x22, 0x3e, 0x3c, 0x70, 0x72, - 0x65, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x41, 0x62, - 0x73, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x25, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x3c, 0x62, - 0x72, 0x3e, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x3c, 0x62, 0x72, 0x3e, 0xd, 0xa, 0x25, 0x21, - 0x20, 0x72, 0x75, 0x6e, 0x2d, 0x74, 0x69, 0x6d, 0x65, 0xd, - 0xa, 0x3c, 0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, - 0x6f, 0x6e, 0x74, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, - 0x6e, 0x74, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, - 0x79, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, - 0x3e, 0xd, 0xa, 0xd, 0xa, 0}; - -static const char data_stats_shtml[] = { - /* /stats.shtml */ - 0x2f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x6e, - 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, - 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x61, 0x20, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, - 0x61, 0x73, 0x6b, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x52, 0x75, 0x6e, - 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, 0x74, 0x61, 0x74, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x43, 0x50, - 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, - 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, - 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, 0x65, 0x65, 0x72, - 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x22, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x20, 0x48, - 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, - 0x6a, 0x70, 0x67, 0x22, 0x3e, 0x33, 0x37, 0x4b, 0x20, 0x6a, - 0x70, 0x67, 0x3c, 0x2f, 0x61, 0x3e, 0xd, 0xa, 0x3c, 0x62, - 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x72, - 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, - 0xd, 0xa, 0x3c, 0x68, 0x32, 0x3e, 0x4e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, - 0x74, 0x69, 0x63, 0x73, 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0xd, - 0xa, 0x3c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x77, 0x69, - 0x64, 0x74, 0x68, 0x3d, 0x22, 0x33, 0x30, 0x30, 0x22, 0x20, - 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x3d, 0x22, 0x30, 0x22, - 0x3e, 0xd, 0xa, 0x3c, 0x74, 0x72, 0x3e, 0x3c, 0x74, 0x64, - 0x20, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x3d, 0x22, 0x6c, 0x65, - 0x66, 0x74, 0x22, 0x3e, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, - 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x63, 0x6f, 0x75, 0x72, - 0x69, 0x65, 0x72, 0x22, 0x3e, 0x3c, 0x70, 0x72, 0x65, 0x3e, - 0xd, 0xa, 0x49, 0x50, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, - 0x74, 0x73, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, - 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, 0xd, 0xa, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x64, 0x65, - 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x44, 0x72, 0x6f, 0x70, - 0x70, 0x65, 0x64, 0xd, 0xa, 0x49, 0x50, 0x20, 0x65, 0x72, - 0x72, 0x6f, 0x72, 0x73, 0x20, 0x20, 0x20, 0x20, 0x49, 0x50, - 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, 0x6c, 0x65, 0x6e, 0x67, - 0x74, 0x68, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x49, 0x50, 0x20, - 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x2c, 0x20, 0x68, 0x69, - 0x67, 0x68, 0x20, 0x62, 0x79, 0x74, 0x65, 0xd, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x49, 0x50, 0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, - 0x68, 0x2c, 0x20, 0x6c, 0x6f, 0x77, 0x20, 0x62, 0x79, 0x74, - 0x65, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x49, 0x50, 0x20, 0x66, - 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0xd, 0xa, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, - 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0xd, 0xa, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x57, 0x72, 0x6f, 0x6e, 0x67, 0x20, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0xd, 0xa, 0x49, - 0x43, 0x4d, 0x50, 0x9, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, - 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x72, 0x65, 0x63, - 0x65, 0x69, 0x76, 0x65, 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x73, 0x65, - 0x6e, 0x74, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, - 0x6b, 0x65, 0x74, 0x73, 0x20, 0x64, 0x72, 0x6f, 0x70, 0x70, - 0x65, 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x54, 0x79, 0x70, - 0x65, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0xd, 0xa, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, - 0x6d, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0xd, 0xa, - 0x54, 0x43, 0x50, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, - 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0xd, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, 0xd, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x64, - 0x72, 0x6f, 0x70, 0x70, 0x65, 0x64, 0xd, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x20, - 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0xd, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x44, 0x61, 0x74, 0x61, 0x20, 0x70, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x73, 0x20, 0x77, 0x69, 0x74, 0x68, 0x6f, 0x75, - 0x74, 0x20, 0x41, 0x43, 0x4b, 0x73, 0xd, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x52, 0x65, 0x73, 0x65, 0x74, 0x73, 0xd, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x52, 0x65, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, - 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x61, 0xd, 0xa, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x53, 0x79, 0x6e, 0x20, 0x74, 0x6f, 0x20, - 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x64, 0x20, 0x70, 0x6f, 0x72, - 0x74, 0xd, 0xa, 0x55, 0x44, 0x50, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x73, 0x20, 0x64, 0x72, 0x6f, 0x70, 0x70, 0x65, - 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x73, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, - 0x65, 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, - 0x6b, 0x65, 0x74, 0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, 0xd, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x73, 0x20, 0x63, 0x68, 0x6b, 0x65, 0x72, 0x72, 0xd, 0xa, - 0x9, 0x20, 0x20, 0x20, 0x20, 0x20, 0x4e, 0x6f, 0x20, 0x63, - 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, - 0x61, 0x76, 0x61, 0x6c, 0x69, 0x61, 0x62, 0x6c, 0x65, 0xd, - 0xa, 0x3c, 0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, - 0x6f, 0x6e, 0x74, 0x3e, 0x3c, 0x2f, 0x74, 0x64, 0x3e, 0x3c, - 0x74, 0x64, 0x3e, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, - 0x61, 0x63, 0x65, 0x3d, 0x22, 0x63, 0x6f, 0x75, 0x72, 0x69, - 0x65, 0x72, 0x22, 0x3e, 0x3c, 0x70, 0x72, 0x65, 0x3e, 0x25, - 0x21, 0x20, 0x6e, 0x65, 0x74, 0x2d, 0x73, 0x74, 0x61, 0x74, - 0x73, 0xd, 0xa, 0x3c, 0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, - 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0x3c, 0x2f, 0x74, 0x64, - 0x3e, 0x3c, 0x2f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x3e, 0xd, - 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xd, 0xa, - 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xd, 0xa, 0x3c, - 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, 0xa, 0}; - -static const char data_tcp_shtml[] = { - /* /tcp.shtml */ - 0x2f, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x6e, - 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, - 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x61, 0x20, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, - 0x61, 0x73, 0x6b, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x52, 0x75, 0x6e, - 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, 0x74, 0x61, 0x74, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x43, 0x50, - 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, - 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, - 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, 0x65, 0x65, 0x72, - 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x22, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x20, 0x48, - 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, - 0x6a, 0x70, 0x67, 0x22, 0x3e, 0x33, 0x37, 0x4b, 0x20, 0x6a, - 0x70, 0x67, 0x3c, 0x2f, 0x61, 0x3e, 0xd, 0xa, 0x3c, 0x62, - 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x72, - 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0xd, 0xa, 0x3c, - 0x68, 0x32, 0x3e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, - 0x20, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0xd, 0xa, 0x3c, - 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x74, 0x61, 0x62, 0x6c, 0x65, - 0x3e, 0xd, 0xa, 0x3c, 0x74, 0x72, 0x3e, 0x3c, 0x74, 0x68, - 0x3e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x3c, 0x2f, 0x74, 0x68, - 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x52, 0x65, 0x6d, 0x6f, 0x74, - 0x65, 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, - 0x53, 0x74, 0x61, 0x74, 0x65, 0x3c, 0x2f, 0x74, 0x68, 0x3e, - 0x3c, 0x74, 0x68, 0x3e, 0x52, 0x65, 0x74, 0x72, 0x61, 0x6e, - 0x73, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x3c, - 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x54, 0x69, - 0x6d, 0x65, 0x72, 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, - 0x68, 0x3e, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x3c, 0x2f, 0x74, - 0x68, 0x3e, 0x3c, 0x2f, 0x74, 0x72, 0x3e, 0xd, 0xa, 0x25, - 0x21, 0x20, 0x74, 0x63, 0x70, 0x2d, 0x63, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0xd, 0xa, 0x3c, - 0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, - 0x74, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, - 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, - 0xd, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, - 0xa, 0xd, 0xa, 0}; - -const struct httpd_fsdata_file file_404_html[] = {{NULL, data_404_html, data_404_html + 10, sizeof(data_404_html) - 10}}; - -const struct httpd_fsdata_file file_index_html[] = {{file_404_html, data_index_html, data_index_html + 12, sizeof(data_index_html) - 12}}; - -const struct httpd_fsdata_file file_index_shtml[] = {{file_index_html, data_index_shtml, data_index_shtml + 13, sizeof(data_index_shtml) - 13}}; - -const struct httpd_fsdata_file file_io_shtml[] = {{file_index_shtml, data_io_shtml, data_io_shtml + 10, sizeof(data_io_shtml) - 10}}; - -const struct httpd_fsdata_file file_logo_jpg[] = {{file_io_shtml, data_logo_jpg, data_logo_jpg + 10, sizeof(data_logo_jpg) - 10}}; - -const struct httpd_fsdata_file file_runtime_shtml[] = {{file_logo_jpg, data_runtime_shtml, data_runtime_shtml + 15, sizeof(data_runtime_shtml) - 15}}; - -const struct httpd_fsdata_file file_stats_shtml[] = {{file_runtime_shtml, data_stats_shtml, data_stats_shtml + 13, sizeof(data_stats_shtml) - 13}}; - -const struct httpd_fsdata_file file_tcp_shtml[] = {{file_stats_shtml, data_tcp_shtml, data_tcp_shtml + 11, sizeof(data_tcp_shtml) - 11}}; - -#define HTTPD_FS_ROOT file_tcp_shtml - -#define HTTPD_FS_NUMFILES 8 diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/webserver/makefsdata b/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/webserver/makefsdata deleted file mode 100644 index a953cdd76..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/webserver/makefsdata +++ /dev/null @@ -1,79 +0,0 @@ -#!/usr/bin/perl - -open(OUTPUT, "> httpd-fsdata.c"); - -chdir("httpd-fs"); - -opendir(DIR, "."); -@files = grep { !/^\./ && !/(CVS|~)/ } readdir(DIR); -closedir(DIR); - -foreach $file (@files) { - - if(-d $file && $file !~ /^\./) { - print "Processing directory $file\n"; - opendir(DIR, $file); - @newfiles = grep { !/^\./ && !/(CVS|~)/ } readdir(DIR); - closedir(DIR); - printf "Adding files @newfiles\n"; - @files = (@files, map { $_ = "$file/$_" } @newfiles); - next; - } -} - -foreach $file (@files) { - if(-f $file) { - - print "Adding file $file\n"; - - open(FILE, $file) || die "Could not open file $file\n"; - binmode FILE; - - $file =~ s-^-/-; - $fvar = $file; - $fvar =~ s-/-_-g; - $fvar =~ s-\.-_-g; - # for AVR, add PROGMEM here - print(OUTPUT "static const char data".$fvar."[] = {\n"); - print(OUTPUT "\t/* $file */\n\t"); - for($j = 0; $j < length($file); $j++) { - printf(OUTPUT "%#02x, ", unpack("C", substr($file, $j, 1))); - } - printf(OUTPUT "0,\n"); - - - $i = 0; - while(read(FILE, $data, 1)) { - if($i == 0) { - print(OUTPUT "\t"); - } - printf(OUTPUT "%#02x, ", unpack("C", $data)); - $i++; - if($i == 10) { - print(OUTPUT "\n"); - $i = 0; - } - } - print(OUTPUT "0};\n\n"); - close(FILE); - push(@fvars, $fvar); - push(@pfiles, $file); - } -} - -for($i = 0; $i < @fvars; $i++) { - $file = $pfiles[$i]; - $fvar = $fvars[$i]; - - if($i == 0) { - $prevfile = "NULL"; - } else { - $prevfile = "file" . $fvars[$i - 1]; - } - print(OUTPUT "const struct httpd_fsdata_file file".$fvar."[] = {{$prevfile, data$fvar, "); - print(OUTPUT "data$fvar + ". (length($file) + 1) .", "); - print(OUTPUT "sizeof(data$fvar) - ". (length($file) + 1) ."}};\n\n"); -} - -print(OUTPUT "#define HTTPD_FS_ROOT file$fvars[$i - 1]\n\n"); -print(OUTPUT "#define HTTPD_FS_NUMFILES $i\n"); diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/webserver/phy.c b/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/webserver/phy.c deleted file mode 100644 index 8002fcb2e..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/webserver/phy.c +++ /dev/null @@ -1,468 +0,0 @@ -/****************************************************************************** -* DISCLAIMER - -* This software is supplied by Renesas Technology Corp. and is only -* intended for use with Renesas products. No other uses are authorized. - -* This software is owned by Renesas Technology Corp. and is protected under -* all applicable laws, including copyright laws. - -* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES -* REGARDING THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, -* INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A -* PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY -* DISCLAIMED. - -* TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS -* TECHNOLOGY CORP. NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE -* FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES -* FOR ANY REASON RELATED TO THE THIS SOFTWARE, EVEN IF RENESAS OR ITS -* AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - -* Renesas reserves the right, without notice, to make changes to this -* software and to discontinue the availability of this software. -* By using this software, you agree to the additional terms and -* conditions found by accessing the following link: -* http://www.renesas.com/disclaimer -****************************************************************************** -* Copyright (C) 2008. Renesas Technology Corp., All Rights Reserved. -******************************************************************************* -* File Name : phy.c -* Version : 1.01 -* Description : Ethernet PHY device driver -****************************************************************************** -* History : DD.MM.YYYY Version Description -* : 15.02.2010 1.00 First Release -* : 06.04.2010 1.01 RX62N changes -******************************************************************************/ - - -/****************************************************************************** -Includes , "Project Includes" -******************************************************************************/ -#include "iodefine.h" -#include "r_ether.h" -#include "phy.h" - -#include "FreeRTOS.h" -#include "task.h" -/****************************************************************************** -Typedef definitions -******************************************************************************/ - -/****************************************************************************** -Macro definitions -******************************************************************************/ - -/****************************************************************************** -Imported global variables and functions (from other files) -******************************************************************************/ - -/****************************************************************************** -Exported global variables and functions (to be accessed by other files) -******************************************************************************/ - -/****************************************************************************** -Private global variables and functions -******************************************************************************/ -uint16_t _phy_read( uint16_t reg_addr ); -void _phy_write( uint16_t reg_addr, uint16_t data ); -void _phy_preamble( void ); -void _phy_reg_set( uint16_t reg_addr, int32_t option ); -void _phy_reg_read( uint16_t *data ); -void _phy_reg_write( uint16_t data ); -void _phy_ta_z0( void ); -void _phy_ta_10( void ); -void _phy_mii_write_1( void ); -void _phy_mii_write_0( void ); - -/** - * External functions - */ - -/****************************************************************************** -* Function Name: phy_init -* Description : Resets Ethernet PHY device -* Arguments : none -* Return Value : none -******************************************************************************/ -int16_t phy_init( void ) -{ - uint16_t reg; - uint32_t count; - - /* Reset PHY */ - _phy_write(BASIC_MODE_CONTROL_REG, 0x8000); - - count = 0; - - do - { - vTaskDelay( 2 / portTICK_PERIOD_MS ); - reg = _phy_read(BASIC_MODE_CONTROL_REG); - count++; - } while (reg & 0x8000 && count < PHY_RESET_WAIT); - - if( count < PHY_RESET_WAIT ) - { - return R_PHY_OK; - } - - return R_PHY_ERROR; -} - -/****************************************************************************** -* Function Name: phy_set_100full -* Description : Set Ethernet PHY device to 100 Mbps full duplex -* Arguments : none -* Return Value : none -******************************************************************************/ -void phy_set_100full( void ) -{ - _phy_write(BASIC_MODE_CONTROL_REG, 0x2100); -} - -/****************************************************************************** -* Function Name: phy_set_10half -* Description : Sets Ethernet PHY device to 10 Mbps half duplexR -* Arguments : none -* Return Value : none -******************************************************************************/ -void phy_set_10half( void ) -{ - _phy_write(BASIC_MODE_CONTROL_REG, 0x0000); -} - -/****************************************************************************** -* Function Name: phy_set_autonegotiate -* Description : Starts autonegotiate and reports the other side's -* : physical capability -* Arguments : none -* Return Value : bit 8 - Full duplex 100 mbps -* : bit 7 - Half duplex 100 mbps -* : bit 6 - Full duplex 10 mbps -* : bit 5 - Half duplex 10 mbps -* : bit 4:0 - Always set to 00001 (IEEE 802.3) -* : -1 if error -******************************************************************************/ -int16_t phy_set_autonegotiate( void ) -{ - uint16_t reg; - uint32_t count; - - _phy_write(AN_ADVERTISEMENT_REG, 0x01E1); - _phy_write(BASIC_MODE_CONTROL_REG, 0x1200); - - count = 0; - - do - { - reg = _phy_read(BASIC_MODE_STATUS_REG); - count++; - vTaskDelay( 100 / portTICK_PERIOD_MS ); - - /* Make sure we don't break out if reg just contains 0xffff. */ - if( reg == 0xffff ) - { - reg = 0; - } - - } while (!(reg & 0x0020) && (count < PHY_AUTO_NEGOTIATON_WAIT)); - - if (count >= PHY_AUTO_NEGOTIATON_WAIT) - { - return R_PHY_ERROR; - } - else - { - /* Get the link partner response */ - reg = (int16_t)_phy_read(AN_LINK_PARTNER_ABILITY_REG); - - if (reg & ( 1 << 8 ) ) - { - return PHY_LINK_100F; - } - if (reg & ( 1 << 7 ) ) - { - return PHY_LINK_100H; - } - if (reg & ( 1 << 6 ) ) - { - return PHY_LINK_10F; - } - if (reg & 1 << 5 ) - { - return PHY_LINK_10H; - } - - return (-1); - } -} - - -/** - * Internal functions - */ - -/****************************************************************************** -* Function Name: _phy_read -* Description : Reads a PHY register -* Arguments : reg_addr - address of the PHY register -* Return Value : read value -******************************************************************************/ -uint16_t _phy_read( uint16_t reg_addr ) -{ - uint16_t data; - - _phy_preamble(); - _phy_reg_set( reg_addr, PHY_READ ); - _phy_ta_z0(); - _phy_reg_read( &data ); - _phy_ta_z0(); - - return( data ); -} - -/****************************************************************************** -* Function Name: _phy_write -* Description : Writes to a PHY register -* Arguments : reg_addr - address of the PHY register -* : data - value -* Return Value : none -******************************************************************************/ -void _phy_write( uint16_t reg_addr, uint16_t data ) -{ - _phy_preamble(); - _phy_reg_set( reg_addr, PHY_WRITE ); - _phy_ta_10(); - _phy_reg_write( data ); - _phy_ta_z0(); -} - -/****************************************************************************** -* Function Name: _phy_preamble -* Description : As preliminary preparation for access to the PHY module register, -* "1" is output via the MII management interface. -* Arguments : none -* Return Value : none -******************************************************************************/ -void _phy_preamble( void ) -{ - int16_t i; - - i = 32; - while( i > 0 ) - { - _phy_mii_write_1(); - i--; - } -} - -/****************************************************************************** -* Function Name: _phy_reg_set -* Description : Sets a PHY device to read or write mode -* Arguments : reg_addr - address of the PHY register -* : option - mode -* Return Value : none -******************************************************************************/ -void _phy_reg_set( uint16_t reg_addr, int32_t option ) -{ - int32_t i; - uint16_t data; - - data = 0; - data = (PHY_ST << 14); /* ST code */ - - if( option == PHY_READ ) - { - data |= (PHY_READ << 12); /* OP code(RD) */ - } - else - { - data |= (PHY_WRITE << 12); /* OP code(WT) */ - } - - data |= (PHY_ADDR << 7); /* PHY Address */ - data |= (reg_addr << 2); /* Reg Address */ - - i = 14; - while( i > 0 ) - { - if( (data & 0x8000) == 0 ) - { - _phy_mii_write_0(); - } - else - { - _phy_mii_write_1(); - } - data <<= 1; - i--; - } -} - -/****************************************************************************** -* Function Name: _phy_reg_read -* Description : Reads PHY register through MII interface -* Arguments : data - pointer to store the data read -* Return Value : none -******************************************************************************/ -void _phy_reg_read( uint16_t *data ) -{ - int32_t i, j; - uint16_t reg_data; - - reg_data = 0; - i = 16; - while( i > 0 ) - { - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000000; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000001; - } - - reg_data <<= 1; - reg_data |= (uint16_t)((ETHERC.PIR.LONG & 0x00000008) >> 3); /* MDI read */ - - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000001; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000000; - } - i--; - } - *data = reg_data; -} - -/****************************************************************************** -* Function Name: _phy_reg_write -* Description : Writes to PHY register through MII interface -* Arguments : data - value to write -* Return Value : none -******************************************************************************/ -void _phy_reg_write( uint16_t data ) -{ - int32_t i; - - i = 16; - while( i > 0 ) - { - if( (data & 0x8000) == 0 ) - { - _phy_mii_write_0(); - } - else - { - _phy_mii_write_1(); - } - i--; - data <<= 1; - } -} - -/****************************************************************************** -* Function Name: _phy_ta_z0 -* Description : Performs bus release so that PHY can drive data -* : for read operation -* Arguments : none -* Return Value : none -******************************************************************************/ -void _phy_ta_z0( void ) -{ - int32_t j; - - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000000; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000001; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000001; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000000; - } -} - -/****************************************************************************** -* Function Name: _phy_ta_10 -* Description : Switches data bus so MII interface can drive data -* : for write operation -* Arguments : none -* Return Value : none -******************************************************************************/ -void _phy_ta_10(void) -{ - _phy_mii_write_1(); - _phy_mii_write_0(); -} - -/****************************************************************************** -* Function Name: _phy_mii_write_1 -* Description : Outputs 1 to the MII interface -* Arguments : none -* Return Value : none -******************************************************************************/ -void _phy_mii_write_1( void ) -{ - int32_t j; - - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000006; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000007; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000007; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000006; - } -} - -/****************************************************************************** -* Function Name: _phy_mii_write_0 -* Description : Outputs 0 to the MII interface -* Arguments : none -* Return Value : none -******************************************************************************/ -void _phy_mii_write_0( void ) -{ - int32_t j; - - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000002; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000003; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000003; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000002; - } -} - - diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/webserver/phy.h b/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/webserver/phy.h deleted file mode 100644 index 50415a7f7..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/webserver/phy.h +++ /dev/null @@ -1,84 +0,0 @@ -/****************************************************************************** -* DISCLAIMER -* Please refer to http://www.renesas.com/disclaimer -****************************************************************************** - Copyright (C) 2008. Renesas Technology Corp., All Rights Reserved. -******************************************************************************* -* File Name : phy.h -* Version : 1.02 -* Description : Ethernet PHY device driver -****************************************************************************** -* History : DD.MM.YYYY Version Description -* : 15.02.2010 1.00 First Release -* : 17.03.2010 1.01 Modification of macro definitions for access timing -* : 06.04.2010 1.02 RX62N changes -******************************************************************************/ - -#ifndef PHY_H -#define PHY_H - -/****************************************************************************** -Includes , "Project Includes" -******************************************************************************/ -#include - -/****************************************************************************** -Typedef definitions -******************************************************************************/ - -/****************************************************************************** -Macro definitions -******************************************************************************/ -/* Standard PHY Registers */ -#define BASIC_MODE_CONTROL_REG 0 -#define BASIC_MODE_STATUS_REG 1 -#define PHY_IDENTIFIER1_REG 2 -#define PHY_IDENTIFIER2_REG 3 -#define AN_ADVERTISEMENT_REG 4 -#define AN_LINK_PARTNER_ABILITY_REG 5 -#define AN_EXPANSION_REG 6 - -/* Media Independent Interface */ -#define PHY_ST 1 -#define PHY_READ 2 -#define PHY_WRITE 1 -#define PHY_ADDR 0x1F - -#define MDC_WAIT 2 - -/* PHY return definitions */ -#define R_PHY_OK 0 -#define R_PHY_ERROR -1 - -/* Auto-Negotiation Link Partner Status */ -#define PHY_AN_LINK_PARTNER_100BASE 0x0180 -#define PHY_AN_LINK_PARTNER_FULL 0x0140 -#define PHY_AN_COMPLETE ( 1 << 5 ) - -/* - * Wait counter definitions of PHY-LSI initialization - * ICLK = 96MHz -*/ -#define PHY_RESET_WAIT 0x00000020L -#define PHY_AUTO_NEGOTIATON_WAIT 75 - -#define PHY_AN_ENABLE 0x1200 -#define PHY_AN_10_100_F_H 0xde1 - -/****************************************************************************** -Variable Externs -******************************************************************************/ - -/****************************************************************************** -Functions Prototypes -******************************************************************************/ -/** - * External prototypes - **/ -int16_t phy_init( void ); -void phy_set_100full( void ); -void phy_set_10half( void ); -int16_t phy_set_autonegotiate( void ); - -#endif /* PHY_H */ - diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/webserver/r_ether.h b/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/webserver/r_ether.h deleted file mode 100644 index 13157ab5c..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/webserver/r_ether.h +++ /dev/null @@ -1,185 +0,0 @@ -/****************************************************************************** -* DISCLAIMER -* Please refer to http://www.renesas.com/disclaimer -****************************************************************************** - Copyright (C) 2008. Renesas Technology Corp., All Rights Reserved. -******************************************************************************* -* File Name : r_ether.h -* Version : 1.02 -* Description : Ethernet module device driver -****************************************************************************** -* History : DD.MM.YYYY Version Description -* : 15.02.2010 1.00 First Release -* : 03.03.2010 1.01 Buffer size is aligned on the 32-byte boundary. -* : 04.06.2010 1.02 RX62N changes -******************************************************************************/ - -#ifndef R_ETHER_H -#define R_ETHER_H - -/****************************************************************************** -Includes , "Project Includes" -******************************************************************************/ -#include - -/****************************************************************************** -Typedef definitions -******************************************************************************/ -struct Descriptor -{ - __evenaccess uint32_t status; -#if __LIT -/* Little endian */ - __evenaccess uint16_t size; - __evenaccess uint16_t bufsize; -#else -/* Big endian */ - __evenaccess uint16_t bufsize; - __evenaccess uint16_t size; - -#endif - int8_t *buf_p; - struct Descriptor *next; -}; - -typedef struct Descriptor ethfifo; - -typedef enum _NETLNK -{ - PHY_NO_LINK = 0, - PHY_LINK_10H, - PHY_LINK_10F, - PHY_LINK_100H, - PHY_LINK_100F - -} NETLNK; - -/****************************************************************************** -Macro definitions -******************************************************************************/ -#define BUFSIZE 256 /* Must be 32-bit aligned */ -#define ENTRY 8 /* Number of RX and TX buffers */ - -#define ACT 0x80000000 -#define DL 0x40000000 -#define FP1 0x20000000 -#define FP0 0x10000000 -#define FE 0x08000000 - -#define RFOVER 0x00000200 -#define RAD 0x00000100 -#define RMAF 0x00000080 -#define RRF 0x00000010 -#define RTLF 0x00000008 -#define RTSF 0x00000004 -#define PRE 0x00000002 -#define CERF 0x00000001 - -#define TAD 0x00000100 -#define CND 0x00000008 -#define DLC 0x00000004 -#define CD 0x00000002 -#define TRO 0x00000001 - -/** - * Renesas Ethernet API return defines - **/ -#define R_ETHER_OK 0 -#define R_ETHER_ERROR -1 - -/* Ether Interface definitions */ -#define ETH_RMII_MODE 0 -#define ETH_MII_MODE 1 -/* Select Ether Interface Mode */ -#define ETH_MODE_SEL ETH_MII_MODE - -/****************************************************************************** -Variable Externs -******************************************************************************/ - -/****************************************************************************** -Functions Prototypes -******************************************************************************/ -/** - * Renesas Ethernet API prototypes - **/ -int32_t R_Ether_Open(uint32_t ch, uint8_t mac_addr[]); -int32_t R_Ether_Close(uint32_t ch); -int32_t R_Ether_Write(uint32_t ch, void *buf, uint32_t len); -int32_t R_Ether_Read(uint32_t ch, void *buf); - -/** - * FreeRTOS Ethernet API prototypes. - */ - -/* - * Configure all the ethernet components (MAC, DMA, PHY) ready for communication. - */ -void vInitEmac( void ); - -/* - * Auto negotiate the link, returning pass or fail depending on whether a link - * was established or not. - */ -long lEMACWaitForLink( void ); - -/* - * Check the Rx status, and return the number of bytes received if any. - */ -unsigned long ulEMACRead( void ); - -/* - * Send uip_len bytes from uip_buf to the Tx descriptors and initiate a Tx. - */ -void vEMACWrite( void ); - - - - -/****************************************************/ -/* Ethernet statistic collection data */ -struct enet_stats -{ - uint32_t rx_packets; /* total packets received */ - uint32_t tx_packets; /* total packets transmitted */ - uint32_t rx_errors; /* bad packets received */ - uint32_t tx_errors; /* packet transmit problems */ - uint32_t rx_dropped; /* no space in buffers */ - uint32_t tx_dropped; /* no space available */ - uint32_t multicast; /* multicast packets received */ - uint32_t collisions; - - /* detailed rx_errors: */ - uint32_t rx_length_errors; - uint32_t rx_over_errors; /* receiver ring buffer overflow */ - uint32_t rx_crc_errors; /* recved pkt with crc error */ - uint32_t rx_frame_errors; /* recv'd frame alignment error */ - uint32_t rx_fifo_errors; /* recv'r fifo overrun */ - uint32_t rx_missed_errors; /* receiver missed packet */ - - /* detailed tx_errors */ - uint32_t tx_aborted_errors; - uint32_t tx_carrier_errors; - uint32_t tx_fifo_errors; - uint32_t tx_heartbeat_errors; - uint32_t tx_window_errors; -}; - -struct ei_device -{ - const int8_t *name; - uint8_t open; - uint8_t Tx_act; - uint8_t Rx_act; - uint8_t txing; /* Transmit Active */ - uint8_t irqlock; /* EDMAC's interrupt disabled when '1'. */ - uint8_t dmaing; /* EDMAC Active */ - ethfifo *rxcurrent; /* current receive discripter */ - ethfifo *txcurrent; /* current transmit discripter */ - uint8_t save_irq; /* Original dev->irq value. */ - struct enet_stats stat; - uint8_t mac_addr[6]; -}; - -#endif /* R_ETHER_H */ - diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/webserver/uip-conf.h b/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/webserver/uip-conf.h deleted file mode 100644 index 00f739647..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/webserver/uip-conf.h +++ /dev/null @@ -1,167 +0,0 @@ -/** - * \addtogroup uipopt - * @{ - */ - -/** - * \name Project-specific configuration options - * @{ - * - * uIP has a number of configuration options that can be overridden - * for each project. These are kept in a project-specific uip-conf.h - * file and all configuration names have the prefix UIP_CONF. - */ - -/* - * Copyright (c) 2006, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: uip-conf.h,v 1.6 2006/06/12 08:00:31 adam Exp $ - */ - -/** - * \file - * An example uIP configuration file - * \author - * Adam Dunkels - */ - -#ifndef __UIP_CONF_H__ -#define __UIP_CONF_H__ - -#define UIP_CONF_EXTERNAL_BUFFER -#define UIP_CONF_PROCESS_HTTPD_FORMS 1 - -/** - * 8 bit datatype - * - * This typedef defines the 8-bit type used throughout uIP. - * - * \hideinitializer - */ -typedef unsigned char u8_t; - -/** - * 16 bit datatype - * - * This typedef defines the 16-bit type used throughout uIP. - * - * \hideinitializer - */ -typedef unsigned short u16_t; - -typedef unsigned long u32_t; - -/** - * Statistics datatype - * - * This typedef defines the dataype used for keeping statistics in - * uIP. - * - * \hideinitializer - */ -typedef unsigned short uip_stats_t; - -/** - * Maximum number of TCP connections. - * - * \hideinitializer - */ -#define UIP_CONF_MAX_CONNECTIONS 40 - -/** - * Maximum number of listening TCP ports. - * - * \hideinitializer - */ -#define UIP_CONF_MAX_LISTENPORTS 40 - -/** - * uIP buffer size. - * - * \hideinitializer - */ -#define UIP_CONF_BUFFER_SIZE 1480 - -/** - * CPU byte order. - * - * \hideinitializer - */ -#ifdef __LIT -#define UIP_CONF_BYTE_ORDER UIP_LITTLE_ENDIAN -#else -#define UIP_CONF_BYTE_ORDER UIP_BIG_ENDIAN -#endif - -/** - * Logging on or off - * - * \hideinitializer - */ -#define UIP_CONF_LOGGING 0 - -/** - * UDP support on or off - * - * \hideinitializer - */ -#define UIP_CONF_UDP 0 - -/** - * UDP checksums on or off - * - * \hideinitializer - */ -#define UIP_CONF_UDP_CHECKSUMS 1 - -/** - * uIP statistics on or off - * - * \hideinitializer - */ -#define UIP_CONF_STATISTICS 1 - -/* Here we include the header file for the application(s) we use in - our project. */ -/*#include "smtp.h"*/ -/*#include "hello-world.h"*/ -/*#include "telnetd.h"*/ -#include "webserver.h" -/*#include "dhcpc.h"*/ -/*#include "resolv.h"*/ -/*#include "webclient.h"*/ - -#define CCIF -#define CC_REGISTER_ARG - -#endif /* __UIP_CONF_H__ */ - -/** @} */ -/** @} */ diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/webserver/webserver.h b/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/webserver/webserver.h deleted file mode 100644 index 5267f0587..000000000 --- a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/RTOSDemo/webserver/webserver.h +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright (c) 2002, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials provided - * with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: webserver.h,v 1.2 2006/06/11 21:46:38 adam Exp $ - * - */ -#ifndef __WEBSERVER_H__ -#define __WEBSERVER_H__ - -#include "apps/httpd/httpd.h" - -typedef struct httpd_state uip_tcp_appstate_t; -/* UIP_APPCALL: the name of the application function. This function - must return void and take no arguments (i.e., C type "void - appfunc(void)"). */ -#define UIP_APPCALL httpd_appcall - - -#endif /* __WEBSERVER_H__ */ diff --git a/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/ReadMe.txt b/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/ReadMe.txt new file mode 100644 index 000000000..12c70d213 --- /dev/null +++ b/FreeRTOS/Demo/RX600_RX62N-RSK_Renesas/ReadMe.txt @@ -0,0 +1 @@ +The third party uIP TCP/IP stack and the demo project that used to be in this directory was removed in FreeRTOS version V10.4.3 due to security vulnerabilities identified in uIP. In a future version this demo may be replaced by a version which does not use TCP/IP or uses FreeRTOS’s own TCP/IP stack in place of the original third party stack. \ No newline at end of file diff --git a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo.Hbp b/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo.Hbp deleted file mode 100644 index 0d3910dbc..000000000 --- a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo.Hbp +++ /dev/null @@ -1,4 +0,0 @@ -[Setting] -ToolChain=0 -[Section] -WindowSize=726,544 diff --git a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo.hws b/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo.hws deleted file mode 100644 index 4ccef6ff2..000000000 --- a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo.hws +++ /dev/null @@ -1,49 +0,0 @@ -[HIMDBVersion] -2.0 -[DATABASE_VERSION] -"11.0" -[WORKSPACE_DETAILS] -"RTOSDemo" "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas" "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo.hws" "RX" "Renesas RX Standard" -[SHARED_WORKSPACE_CONTROL_STATUS] -"" "" "" -"" "" "" -[PROJECTS] -"RTOSDemo" "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo" "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\RTOSDemo.hwp" 0 -[INFORMATION] -"No workspace information available" -[SCRAP] -[PROJECT_DEPENDENCY] -[WORKSPACE_PROPERTIES] -[HELP_FILES] -"c:\devtools\renesas\hew\tools\renesas\rx\1_0_0\hew\stdlib.chm" "C/C++ Standard Library Help" 0 -"c:\devtools\renesas\hew\tools\renesas\rx\1_0_1\hew\stdlib.chm" "C/C++ Standard Library Help" 0 -"c:\devtools\renesas\hew\tools\renesas\rx\1_1_0\hew\stdlib.chm" "C/C++ Standard Library Help" 0 -"c:\devtools\renesas\hew\tools\renesas\rx\1_2_0\hew\stdlib.chm" "C/C++ Standard Library Help" 1 -"c:\program files\renesas\hew\tools\renesas\rx\1_0_1\hew\stdlib.chm" "C/C++ Standard Library Help" 0 -"c:\program files\renesas\hew\tools\renesas\rx\1_1_0\hew\stdlib.chm" "C/C++ Standard Library Help" 0 -"c:\program files\renesas\hew_002\tools\renesas\rx\1_0_1\hew\stdlib.chm" "C/C++ Standard Library Help" 0 -"c:\program files\renesas\hew_rx210\tools\renesas\rx\1_0_1\hew\stdlib.chm" "C/C++ Standard Library Help" 0 -"c:\program files\renesas\hewrx200\tools\renesas\rx\1_0_1\hew\stdlib.chm" "C/C++ Standard Library Help" 0 -[GENERAL_DATA_PROJECT] -[USERMENUTOOLS] -[CUSTOMPLACEHOLDERS] -[MAKEFILE_BUILD_INFO] -"$(WORKSPDIR)\make\$(PROJECTNAME)_$(CONFIGNAME).mak" "" "$(WORKSPDIR)\make" 0 0 0 -[VD_CONFIGURATION_OPTIONS] -"ACTIVE_DESKTOP" "0" -[VD_CONFIGURATIONS] -"0" "Default1" "1" -"1" "Default2" "1" -"2" "Default3" "1" -"3" "Default4" "1" -[OPTIONS_DEBUG_TAB] -0 0 0 0 0 -[VCS] -"" "" "" 0 -[VCS_PROJECT] -[MAKEFILE_ENV_STRINGS] -[MAKEFILE_ENV_FLAGS] -1 0 0 -[MAKEFILE_CLEAN_INFO] -"" -[END] diff --git a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo.tws b/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo.tws deleted file mode 100644 index 52e92d1ce..000000000 --- a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo.tws +++ /dev/null @@ -1,17 +0,0 @@ -[HIMDBVersion] -2.0 -[DATABASE_VERSION] -"1.2" -[CURRENT_PROJECT] -"RTOSDemo" -[GENERAL_DATA] -[BREAKPOINTS] -[OPEN_WORKSPACE_FILES] -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\main-blinky.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\main-full.c" -[WORKSPACE_FILE_STATES] -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\main-blinky.c" 0 0 1326 678 0 0 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\main-full.c" -4 -23 1326 696 1 1 -[LOADED_PROJECTS] -"RTOSDemo" -[END] diff --git a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/DefaultSession.hsf b/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/DefaultSession.hsf deleted file mode 100644 index 4a7c75e6d..000000000 --- a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/DefaultSession.hsf +++ /dev/null @@ -1,106 +0,0 @@ -[HIMDBVersion] -2.0 -[DATABASE_VERSION] -"2.3" -[SESSION_DETAILS] -"" -[INFORMATION] -"" -[GENERAL_DATA] -"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapCtrlECX_MAP_FIND_SYMBOL_LIST" "" -"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapCtrlViews" "0" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlBatchFileName" "" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlBreakpointFlag" "-1 " -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlBreakpointStatus" "-1 " -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlBrowseDirectory" "" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlLogFileName" "" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlSplitterPosition" "242" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlViews" "1" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlWindowProperties" "17" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineWndInstanceKey0" "{WK_00000001_CmdLine}" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}TclTkCtrlLogFileName" "" -"{6C4D5B81-FD67-46A9-A089-EA44DCDE47FD}RAMMonitorManagerCtrlBlockInfoFileDir" "" -"{6C4D5B81-FD67-46A9-A089-EA44DCDE47FD}RAMMonitorManagerCtrlBlockInfoFileName" "" -"{7943C44E-7D44-422A-9140-4CF55C88F7D3}DifferenceCtrlViews" "0" -"{CBEBB610-1516-11D4-8F2D-00409545B67B}ElfDwarf2Objects" "1" -"{CBEBB610-1516-11D4-8F2D-00409545B67B}LoadModule0OBJ_ELFDWARF2_ARRAY_EXPAND_LIMIT" "-1" -"{CBEBB610-1516-11D4-8F2D-00409545B67B}LoadModule0OBJ_ELFDWARF2_STATIC_MEM_EXPAND" "1" -[LANGUAGE] -"English" -[CONFIG_INFO_VD1] -1 -[CONFIG_INFO_VD2] -0 -[CONFIG_INFO_VD3] -0 -[CONFIG_INFO_VD4] -0 -[WINDOW_POSITION_STATE_DATA_VD1] -"Help" "TOOLBAR 0" 59419 1 5 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_00000001_OUTPUT}" "WINDOW" 59422 0 0 "1.00" 289 560 340 350 200 18 0 "36756|36757|36758|36759|<>|36746|36747|<>|39531|<>|39500|39534|<>|36687" "0.0" -"{WK_00000002_WORKSPACE}" "WINDOW" 59420 0 0 "1.00" 206 560 340 350 200 18 0 "" "0.0" -"{WK_TB00000001_STANDARD}" "TOOLBAR 0" 59419 0 2 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000002_EDITOR}" "TOOLBAR 0" 59419 0 0 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000003_BOOKMARKS}" "TOOLBAR 0" 59419 1 1 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000004_TEMPLATES}" "TOOLBAR 0" 59419 1 0 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000005_SEARCH}" "TOOLBAR 0" 59419 0 1 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000007_DEBUG}" "TOOLBAR 0" 59419 2 0 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000008_DEBUGRUN}" "TOOLBAR 0" 59419 2 1 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000009_VERSIONCONTROL}" "TOOLBAR 0" 59419 1 3 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000012_MAP}" "TOOLBAR 0" 59419 1 4 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000018_DEFAULTWINDOW}" "TOOLBAR 0" 59419 1 2 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000025_HELPSYSTEMTOOL}" "TOOLBAR 0" 59419 2 3 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000026_MACRO}" "TOOLBAR 0" 59419 1 6 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000028_RTOSDEBUG}" "TOOLBAR 0" 59419 2 2 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000029_SYSTEMTOOL}" "TOOLBAR 0" 59419 2 4 "0.00" 0 0 0 0 0 17 0 "" "0.0" -[WINDOW_POSITION_STATE_DATA_VD2] -[WINDOW_POSITION_STATE_DATA_VD3] -[WINDOW_POSITION_STATE_DATA_VD4] -[WINDOW_Z_ORDER] -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N_Renesas\RTOSDemo\RTOSDemo.c" -[TARGET_NAME] -"" "" 1229201492 -[STATUSBAR_STATEINFO_VD1] -"MasterShowState" 1 -"ApplicationShowState" 1 -"DebuggerShowState" 1 -[STATUSBAR_STATEINFO_VD2] -"MasterShowState" 1 -"ApplicationShowState" 1 -"DebuggerShowState" 1 -[STATUSBAR_STATEINFO_VD3] -"MasterShowState" 1 -"ApplicationShowState" 1 -"DebuggerShowState" 1 -[STATUSBAR_STATEINFO_VD4] -"MasterShowState" 1 -"ApplicationShowState" 1 -"DebuggerShowState" 1 -[STATUSBAR_DEBUGGER_PANESTATE_VD1] -[STATUSBAR_DEBUGGER_PANESTATE_VD2] -[STATUSBAR_DEBUGGER_PANESTATE_VD3] -[STATUSBAR_DEBUGGER_PANESTATE_VD4] -[DEBUGGER_OPTIONS] -"" -[DOWNLOAD_MODULES] -[CONNECT_ON_GO] -"FALSE" -[DOWNLOAD_MODULES_AFTER_BUILD] -"TRUE" -[REMOVE_BREAKPOINTS_ON_DOWNLOAD] -"FALSE" -[DISABLE_MEMORY_ACCESS_PRIOR_TO_COMMAND_FILE_EXECUTION] -"FALSE" -[LIMIT_DISASSEMBLY_MEMORY_ACCESS] -"FALSE" -[DISABLE_MEMORY_ACCESS_DURING_EXECUTION] -"FALSE" -[DEBUGGER_OPTIONS_PROPERTIES] -"1" -[COMMAND_FILES] -[DEFAULT_DEBUG_FORMAT] -"" -[FLASH_DETAILS] -"0.000000" 0 0 "" 0 "" 0 0 "" 1 1 0 0 0 0 0 "" "" "" "" "" -[BREAKPOINTS] -[END] diff --git a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/FreeRTOSConfig.h b/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/FreeRTOSConfig.h deleted file mode 100644 index 668c1fd2d..000000000 --- a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/FreeRTOSConfig.h +++ /dev/null @@ -1,147 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -#ifndef FREERTOS_CONFIG_H -#define FREERTOS_CONFIG_H - -/* Board specifics. */ -#include "platform.h" - -/*----------------------------------------------------------- - * Application specific definitions. - * - * These definitions should be adjusted for your particular hardware and - * application requirements. - * - * THESE PARAMETERS ARE DESCRIBED WITHIN THE 'CONFIGURATION' SECTION OF THE - * FreeRTOS API DOCUMENTATION AVAILABLE ON THE FreeRTOS.org WEB SITE. - * - * See http://www.freertos.org/a00110.html - *----------------------------------------------------------*/ - -#define configUSE_PREEMPTION 1 -#define configUSE_IDLE_HOOK 0 -#define configUSE_TICK_HOOK 0 -#define configCPU_CLOCK_HZ ( 96000000UL ) -#define configPERIPHERAL_CLOCK_HZ ( 48000000UL ) -#define configTICK_RATE_HZ ( ( TickType_t ) 1000 ) -#define configMINIMAL_STACK_SIZE ( ( unsigned short ) 140 ) -#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 50 * 1024 ) ) -#define configMAX_TASK_NAME_LEN ( 12 ) -#define configUSE_TRACE_FACILITY 1 -#define configUSE_16_BIT_TICKS 0 -#define configIDLE_SHOULD_YIELD 1 -#define configUSE_CO_ROUTINES 0 -#define configUSE_MUTEXES 1 -#define configGENERATE_RUN_TIME_STATS 1 -#define configCHECK_FOR_STACK_OVERFLOW 2 -#define configUSE_RECURSIVE_MUTEXES 1 -#define configQUEUE_REGISTRY_SIZE 0 -#define configUSE_MALLOC_FAILED_HOOK 1 -#define configUSE_APPLICATION_TASK_TAG 0 - -#define configMAX_PRIORITIES ( 7 ) -#define configMAX_CO_ROUTINE_PRIORITIES ( 2 ) - -/* Software timer definitions. */ -#define configUSE_TIMERS 1 -#define configTIMER_TASK_PRIORITY ( 3 ) -#define configTIMER_QUEUE_LENGTH 5 -#define configTIMER_TASK_STACK_DEPTH ( configMINIMAL_STACK_SIZE ) - -/* The interrupt priority used by the kernel itself for the tick interrupt and -the pended interrupt. This would normally be the lowest priority. */ -#define configKERNEL_INTERRUPT_PRIORITY 1 - -/* The maximum interrupt priority from which FreeRTOS API calls can be made. -Interrupts that use a priority above this will not be effected by anything the -kernel is doing. */ -#define configMAX_SYSCALL_INTERRUPT_PRIORITY 4 - -/* The peripheral used to generate the tick interrupt is configured as part of -the application code. This constant should be set to the vector number of the -peripheral chosen. As supplied this is CMT0. */ -#define configTICK_VECTOR _CMT0_CMI0 - -/* Set the following definitions to 1 to include the API function, or zero -to exclude the API function. */ - -#define INCLUDE_vTaskPrioritySet 1 -#define INCLUDE_uxTaskPriorityGet 1 -#define INCLUDE_vTaskDelete 1 -#define INCLUDE_vTaskCleanUpResources 0 -#define INCLUDE_vTaskSuspend 1 -#define INCLUDE_vTaskDelayUntil 1 -#define INCLUDE_vTaskDelay 1 -#define INCLUDE_uxTaskGetStackHighWaterMark 1 -#define INCLUDE_xTaskGetSchedulerState 1 -#define INCLUDE_eTaskGetState 1 - -/* This demo makes use of one or more example stats formatting functions. These -format the raw data provided by the uxTaskGetSystemState() function in to human -readable ASCII form. See the notes in the implementation of vTaskList() within -FreeRTOS/Source/tasks.c for limitations. */ -#define configUSE_STATS_FORMATTING_FUNCTIONS 1 - -#define configASSERT( x ) if( ( x ) == 0 ) { taskDISABLE_INTERRUPTS(); for( ;; ); } -extern volatile unsigned long ulHighFrequencyTickCount; -#define portCONFIGURE_TIMER_FOR_RUN_TIME_STATS() nop() /* Run time stats use the same timer as the high frequency timer test. */ -#define portGET_RUN_TIME_COUNTER_VALUE() ulHighFrequencyTickCount - - -/* Override some of the priorities set in the common demo tasks. This is -required to ensure flase positive timing errors are not reported. */ -#define bktPRIMARY_PRIORITY ( configMAX_PRIORITIES - 3 ) -#define bktSECONDARY_PRIORITY ( configMAX_PRIORITIES - 4 ) -#define intqHIGHER_PRIORITY ( configMAX_PRIORITIES - 3 ) - - -/*----------------------------------------------------------- - * Ethernet configuration. - *-----------------------------------------------------------*/ - -/* MAC address configuration. */ -#define configMAC_ADDR0 0x00 -#define configMAC_ADDR1 0x12 -#define configMAC_ADDR2 0x13 -#define configMAC_ADDR3 0x10 -#define configMAC_ADDR4 0x15 -#define configMAC_ADDR5 0x11 - -/* IP address configuration. */ -#define configIP_ADDR0 192 -#define configIP_ADDR1 168 -#define configIP_ADDR2 0 -#define configIP_ADDR3 200 - -/* Netmask configuration. */ -#define configNET_MASK0 255 -#define configNET_MASK1 255 -#define configNET_MASK2 255 -#define configNET_MASK3 0 - -#endif /* FREERTOS_CONFIG_H */ diff --git a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/HighFrequencyTimerTest.c b/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/HighFrequencyTimerTest.c deleted file mode 100644 index b375463ba..000000000 --- a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/HighFrequencyTimerTest.c +++ /dev/null @@ -1,141 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* - * High frequency timer test as described in main.c. - */ - -/* Scheduler includes. */ -#include "FreeRTOS.h" - -/* The set frequency of the interrupt. Deviations from this are measured as -the jitter. */ -#define timerINTERRUPT_FREQUENCY ( 20000UL ) - -/* The expected time between each of the timer interrupts - if the jitter was -zero. */ -#define timerEXPECTED_DIFFERENCE_VALUE ( ( unsigned short ) ( ( configPERIPHERAL_CLOCK_HZ / 8UL ) / timerINTERRUPT_FREQUENCY ) ) - -/* The highest available interrupt priority. */ -#define timerHIGHEST_PRIORITY ( 15 ) - -/* Misc defines. */ -#define timerTIMER_3_COUNT_VALUE ( *( ( unsigned short * ) 0x8801a ) ) /*( CMT3.CMCNT )*/ - -/*-----------------------------------------------------------*/ - -/* Interrupt handler in which the jitter is measured. */ -static void prvTimer2IntHandler( void ); - -/* Stores the value of the maximum recorded jitter between interrupts. This is -displayed on one of the served web pages. */ -volatile unsigned short usMaxJitter = 0; - -/* Counts the number of high frequency interrupts - used to generate the run -time stats. */ -volatile unsigned long ulHighFrequencyTickCount = 0UL; - -/*-----------------------------------------------------------*/ - -void vSetupHighFrequencyTimer( void ) -{ - /* Timer CMT2 is used to generate the interrupts, and CMT3 is used - to measure the jitter. */ - - /* Enable compare match timer 2 and 3. */ - MSTP( CMT2 ) = 0; - MSTP( CMT3 ) = 0; - - /* Interrupt on compare match. */ - CMT2.CMCR.BIT.CMIE = 1; - - /* Set the compare match value. */ - CMT2.CMCOR = ( unsigned short ) ( ( ( configPERIPHERAL_CLOCK_HZ / timerINTERRUPT_FREQUENCY ) -1 ) / 8 ); - - /* Divide the PCLK by 8. */ - CMT2.CMCR.BIT.CKS = 0; - CMT3.CMCR.BIT.CKS = 0; - - /* Enable the interrupt... */ - _IEN( _CMT2_CMI2 ) = 1; - - /* ...and set its priority to the maximum possible, this is above the priority - set by configMAX_SYSCALL_INTERRUPT_PRIORITY so will nest. */ - _IPR( _CMT2_CMI2 ) = timerHIGHEST_PRIORITY; - - /* Start the timers. */ - CMT.CMSTR1.BIT.STR2 = 1; - CMT.CMSTR1.BIT.STR3 = 1; -} -/*-----------------------------------------------------------*/ - -#pragma interrupt ( prvTimer2IntHandler( vect = _VECT( _CMT2_CMI2 ), enable ) ) -static void prvTimer2IntHandler( void ) -{ -volatile unsigned short usCurrentCount; -static unsigned short usMaxCount = 0; -static unsigned long ulErrorCount = 0UL; - - /* We use the timer 1 counter value to measure the clock cycles between - the timer 0 interrupts. First stop the clock. */ - CMT.CMSTR1.BIT.STR3 = 0; - nop(); - nop(); - usCurrentCount = timerTIMER_3_COUNT_VALUE; - - /* Is this the largest count we have measured yet? */ - if( usCurrentCount > usMaxCount ) - { - if( usCurrentCount > timerEXPECTED_DIFFERENCE_VALUE ) - { - usMaxJitter = usCurrentCount - timerEXPECTED_DIFFERENCE_VALUE; - } - else - { - /* This should not happen! */ - ulErrorCount++; - } - - usMaxCount = usCurrentCount; - } - - /* Used to generate the run time stats. */ - ulHighFrequencyTickCount++; - - /* Clear the timer. */ - timerTIMER_3_COUNT_VALUE = 0; - - /* Then start the clock again. */ - CMT.CMSTR1.BIT.STR3 = 1; -} - - - - - - - diff --git a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/IntQueueTimer.c b/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/IntQueueTimer.c deleted file mode 100644 index f98185869..000000000 --- a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/IntQueueTimer.c +++ /dev/null @@ -1,114 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* - * This file contains the non-portable and therefore RX62N specific parts of - * the IntQueue standard demo task - namely the configuration of the timers - * that generate the interrupts and the interrupt entry points. - */ - -/* Scheduler includes. */ -#include "FreeRTOS.h" -#include "task.h" - -/* Demo includes. */ -#include "IntQueueTimer.h" -#include "IntQueue.h" - -#define tmrTIMER_0_1_FREQUENCY ( 2000UL ) -#define tmrTIMER_2_3_FREQUENCY ( 2001UL ) - -void vInitialiseTimerForIntQueueTest( void ) -{ - /* Ensure interrupts do not start until full configuration is complete. */ - portENTER_CRITICAL(); - { - /* Cascade two 8bit timer channels to generate the interrupts. - 8bit timer unit 1 (TMR0 and TMR1) and 8bit timer unit 2 (TMR2 and TMR3 are - utilised for this test. */ - - /* Enable the timers. */ - SYSTEM.MSTPCRA.BIT.MSTPA5 = 0; - SYSTEM.MSTPCRA.BIT.MSTPA4 = 0; - - /* Enable compare match A interrupt request. */ - TMR0.TCR.BIT.CMIEA = 1; - TMR2.TCR.BIT.CMIEA = 1; - - /* Clear the timer on compare match A. */ - TMR0.TCR.BIT.CCLR = 1; - TMR2.TCR.BIT.CCLR = 1; - - /* Set the compare match value. */ - TMR01.TCORA = ( unsigned short ) ( ( ( configPERIPHERAL_CLOCK_HZ / tmrTIMER_0_1_FREQUENCY ) -1 ) / 8 ); - TMR23.TCORA = ( unsigned short ) ( ( ( configPERIPHERAL_CLOCK_HZ / tmrTIMER_0_1_FREQUENCY ) -1 ) / 8 ); - - /* 16 bit operation ( count from timer 1,2 ). */ - TMR0.TCCR.BIT.CSS = 3; - TMR2.TCCR.BIT.CSS = 3; - - /* Use PCLK as the input. */ - TMR1.TCCR.BIT.CSS = 1; - TMR3.TCCR.BIT.CSS = 1; - - /* Divide PCLK by 8. */ - TMR1.TCCR.BIT.CKS = 2; - TMR3.TCCR.BIT.CKS = 2; - - /* Enable TMR 0, 2 interrupts. */ - IEN( TMR0, CMIA0 ) = 1; - IEN( TMR2, CMIA2 ) = 1; - - /* Set the timer interrupts to be above the kernel. The interrupts are - assigned different priorities so they nest with each other. */ - IPR( TMR0, CMIA0 ) = configMAX_SYSCALL_INTERRUPT_PRIORITY - 1; - IPR( TMR2, CMIA2 ) = ( configMAX_SYSCALL_INTERRUPT_PRIORITY - 2 ); - } - portEXIT_CRITICAL(); - - /* Ensure the interrupts are clear as they are edge detected. */ - IR( TMR0, CMIA0 ) = 0; - IR( TMR2, CMIA2 ) = 0; -} -/*-----------------------------------------------------------*/ - -#pragma interrupt ( vT0_1InterruptHandler( vect = VECT_TMR0_CMIA0, enable ) ) -void vT0_1InterruptHandler( void ) -{ - portYIELD_FROM_ISR( xFirstTimerHandler() ); -} -/*-----------------------------------------------------------*/ - -#pragma interrupt ( vT2_3InterruptHandler( vect = VECT_TMR2_CMIA2, enable ) ) -void vT2_3InterruptHandler( void ) -{ - portYIELD_FROM_ISR( xSecondTimerHandler() ); -} - - - - diff --git a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/IntQueueTimer.h b/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/IntQueueTimer.h deleted file mode 100644 index a13dac500..000000000 --- a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/IntQueueTimer.h +++ /dev/null @@ -1,36 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -#ifndef INT_QUEUE_TIMER_H -#define INT_QUEUE_TIMER_H - -void vInitialiseTimerForIntQueueTest( void ); -portBASE_TYPE xTimer0Handler( void ); -portBASE_TYPE xTimer1Handler( void ); - -#endif - diff --git a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/ParTest.c b/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/ParTest.c deleted file mode 100644 index ed7904b5b..000000000 --- a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/ParTest.c +++ /dev/null @@ -1,154 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/*----------------------------------------------------------- - * Simple IO routines to control the LEDs. - *-----------------------------------------------------------*/ - -/* Scheduler includes. */ -#include "FreeRTOS.h" -#include "task.h" - -/* Demo includes. */ -#include "partest.h" - -#define partestNUM_LEDS ( 4 ) - -long lParTestGetLEDState( unsigned long ulLED ); - -/*-----------------------------------------------------------*/ - -void vParTestInitialise( void ) -{ - /* Port pin configuration is done by the low level set up prior to this - function being called. */ -} -/*-----------------------------------------------------------*/ - -void vParTestSetLED( unsigned long ulLED, signed long xValue ) -{ - if( ulLED < partestNUM_LEDS ) - { - if( xValue != 0 ) - { - /* Turn the LED on. */ - taskENTER_CRITICAL(); - { - switch( ulLED ) - { - case 0: LED4 = LED_ON; - break; - case 1: LED5 = LED_ON; - break; - case 2: LED6 = LED_ON; - break; - case 3: LED7 = LED_ON; - break; - } - } - taskEXIT_CRITICAL(); - } - else - { - /* Turn the LED off. */ - taskENTER_CRITICAL(); - { - switch( ulLED ) - { - case 0: LED4 = LED_OFF; - break; - case 1: LED5 = LED_OFF; - break; - case 2: LED6 = LED_OFF; - break; - case 3: LED7 = LED_OFF; - break; - } - - } - taskEXIT_CRITICAL(); - } - } -} -/*-----------------------------------------------------------*/ - -void vParTestToggleLED( unsigned long ulLED ) -{ - if( ulLED < partestNUM_LEDS ) - { - taskENTER_CRITICAL(); - { - if( lParTestGetLEDState( ulLED ) != 0x00 ) - { - vParTestSetLED( ulLED, 0 ); - } - else - { - vParTestSetLED( ulLED, 1 ); - } - } - taskEXIT_CRITICAL(); - } -} -/*-----------------------------------------------------------*/ - -long lParTestGetLEDState( unsigned long ulLED ) -{ -long lReturn = pdTRUE; - - if( ulLED < partestNUM_LEDS ) - { - switch( ulLED ) - { - case 0 : if( LED4 != 0 ) - { - lReturn = pdFALSE; - } - break; - case 1 : if( LED5 != 0 ) - { - lReturn = pdFALSE; - } - break; - case 2 : if( LED6 != 0 ) - { - lReturn = pdFALSE; - } - break; - case 3 : if( LED7 != 0 ) - { - lReturn = pdFALSE; - } - break; - } - } - - return lReturn; -} -/*-----------------------------------------------------------*/ - - \ No newline at end of file diff --git a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/RDK_Jlink.hsf b/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/RDK_Jlink.hsf deleted file mode 100644 index 2d2b51bce..000000000 --- a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/RDK_Jlink.hsf +++ /dev/null @@ -1,232 +0,0 @@ -[HIMDBVersion] -2.0 -[DATABASE_VERSION] -"2.3" -[SESSION_DETAILS] -"" -[INFORMATION] -"" -[GENERAL_DATA] -"FIRST_CONNECTION_TAG" "NO" -"RESET_CPU_AFTER_DOWNLOAD_TAG" "VARIANT_TRUE_STORE_TAG" -"{228DB593-0AB2-4EBE-A098-A2CABF094E46}RamMonitorCtrlViews" "0" -"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapCtrlECX_MAP_FIND_SYMBOL_LIST" "" -"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapCtrlViews" "0" -"{2BA6A3EE-6488-11D5-80D4-00C04F68EAD7}ECXLABEL_ADDDLG_ADDR" "" -"{2BA6A3EE-6488-11D5-80D4-00C04F68EAD7}LabelCtrlSymbolFileDir" "" -"{2BA6A3EE-6488-11D5-80D4-00C04F68EAD7}LabelCtrlSymbolFileName" "" -"{2BA6A3EE-6488-11D5-80D4-00C04F68EAD7}LabelCtrlViews" "0" -"{2BA6A3EF-6488-11D5-80D4-00C04F68EAD7}StatusCtrlViews" "0" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlBatchFileName" "" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlBreakpointFlag" "-1 " -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlBreakpointStatus" "-1 " -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlBrowseDirectory" "" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlLogFileName" "" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlSplitterPosition" "242" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlViews" "1" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlWindowProperties" "17" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineWndInstanceKey0" "{WK_00000001_CmdLine}" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}TclTkCtrlLogFileName" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_COMPARE_END_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_COMPARE_START_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_DISPLAY_DEST_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_DISPLAY_END_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_DISPLAY_START_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_FILL_END_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_FILL_START_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_MOVE_END_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_MOVE_START_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_SEARCH_END_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_SEARCH_START_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_SET_DEST_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_TEST_END_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_TEST_START_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryCtrlViews" "0" -"{4F025ABC-BE66-4CB6-9CEE-06C61418278E}Trace2CtrlSaveFileDir" "" -"{4F025ABC-BE66-4CB6-9CEE-06C61418278E}Trace2CtrlSaveFileName" "" -"{4F025ABC-BE66-4CB6-9CEE-06C61418278E}Trace2CtrlViews" "0" -"{5F75FDA0-6FF0-11D5-B7CE-00E029352378}PACtrlSaveFileDir" "" -"{5F75FDA0-6FF0-11D5-B7CE-00E029352378}PACtrlSaveFileName" "" -"{5F75FDA0-6FF0-11D5-B7CE-00E029352378}PACtrlViews" "0" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_EVAL_DENORMAL_MODE" "16777216" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_EVAL_ROUND_MODE" "768" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_0" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_1" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_10" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_11" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_12" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_13" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_14" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_15" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_16" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_17" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_18" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_19" "00000000FFF8E876" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_2" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_20" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_21" "0000000080000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_22" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_23" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_24" "0000000000000100" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_25" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_3" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_4" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_5" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_6" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_7" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_8" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_9" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_COUNT" "26" -"{6C4D5B81-FD67-46A9-A089-EA44DCDE47FD}RAMMonitorManagerCtrlBlockInfoFileDir" "" -"{6C4D5B81-FD67-46A9-A089-EA44DCDE47FD}RAMMonitorManagerCtrlBlockInfoFileName" "" -"{743E9BC2-6B9D-44A5-A5B6-F8C3FF2C1CAD}GraphCtrlViews" "0" -"{743E9BC2-6B9D-44A5-A5B6-F8C3FF2C1CAD}GraphWnd_Close_Count" "0" -"{743E9BC2-6B9D-44A5-A5B6-F8C3FF2C1CAD}GraphWnd_Mode" "1" -"{743E9BC2-6B9D-44A5-A5B6-F8C3FF2C1CAD}GraphWnd_Trace_Mode" "0" -"{7943C44E-7D44-422A-9140-4CF55C88F7D3}DifferenceCtrlViews" "0" -"{855C64C3-E49C-4450-9BCA-C9822566D214}OSObjectCtrlViews" "0" -"{8A898260-6F1D-11D5-8EB6-00004CC34E9D}ECX_WAVE" "00000000,00000000,0,0" -"{8A898260-6F1D-11D5-8EB6-00004CC34E9D}ECX_WAVE_ADDRESS_NAME" "" -"{8A898260-6F1D-11D5-8EB6-00004CC34E9D}ECX_WAVE_COMB_ADDRESS" ",,,," -"{8A898260-6F1D-11D5-8EB6-00004CC34E9D}ECX_WAVE_COMB_BUFFER" ",,,," -"{8A898260-6F1D-11D5-8EB6-00004CC34E9D}ECX_WAVE_SAMPLING_RATE" "1000" -"{8A898260-6F1D-11D5-8EB6-00004CC34E9D}WaveformCtrlViews" "0" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersCtrlViews" "0" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_ADDRESS_NAME" "" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_BUFFER" "00000000,00000000,0,0" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_COLOR" "0,0,0,0" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_COMB_ADDRESS" ",,,," -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_COMB_PALETTE" ",,,," -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_PALETTE_NAME" "" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_REDRAW_CONTINUOUSLY" "0,2" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_SAMPLEING_RATE" "1000" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_VIEW" "0,0,0,0,0,0" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ImageCtrlViews" "0" -"{AFC216B4-0D8D-4096-9F27-9F29115F69B2}StartStopCheckAfter" "0" -"{AFC216B4-0D8D-4096-9F27-9F29115F69B2}StartStopCheckBefore" "0" -"{AFC216B4-0D8D-4096-9F27-9F29115F69B2}StartStopExpAfter" "" -"{AFC216B4-0D8D-4096-9F27-9F29115F69B2}StartStopExpBefore" "" -"{AFC216B4-0D8D-4096-9F27-9F29115F69B2}T_SESSION_IS_SAVED" "YES" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchCtrlViews" "0" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWndInitial_Radix" "0" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWndRecentFile_WatchRecord" "" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWndRecentFile_WatchSave" "" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWndUpdate_Interval" "100" -"{B39CE26B-928D-4241-BF8F-E15980C81200}DebugConsoleCtrlDCEnable" "1" -"{B39CE26B-928D-4241-BF8F-E15980C81200}DebugConsoleCtrlLocalEchoEnable" "1" -"{B39CE26B-928D-4241-BF8F-E15980C81200}DebugConsoleCtrlLogFileName" "" -"{B39CE26B-928D-4241-BF8F-E15980C81200}DebugConsoleCtrlPortBaudIndex" "0" -"{B39CE26B-928D-4241-BF8F-E15980C81200}DebugConsoleCtrlPortName" "" -"{B39CE26B-928D-4241-BF8F-E15980C81200}DebugConsoleCtrlSendDataTimeout" "50" -"{B39CE26B-928D-4241-BF8F-E15980C81200}DebugConsoleCtrlViews" "1" -"{B39CE26B-928D-4241-BF8F-E15980C81200}DebugConsoleWndInstanceKey0" "{WK_00000001_DEBUGCONSOLE}RTOSDemoRDK_Jlink" -"{CBEBB610-1516-11D4-8F2D-00409545B67B}ElfDwarf2Objects" "1" -"{CBEBB610-1516-11D4-8F2D-00409545B67B}LoadModule0OBJ_ELFDWARF2_ARRAY_EXPAND_LIMIT" "-1" -"{CBEBB610-1516-11D4-8F2D-00409545B67B}LoadModule0OBJ_ELFDWARF2_STATIC_MEM_EXPAND" "1" -"{EEDC9300-6FBE-11D5-8613-00A024591A38}LocalsCtrlViews" "0" -"{EEDC9301-6FBE-11D5-8613-00A024591A38}StackTraceCtrlViews" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOCtrlIOFile" "" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOCtrlSaveFileDir" "$(CONFIGDIR)" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOCtrlSaveFileName" "" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOCtrlViews" "0" -"{F923CED3-3318-4B43-B931-0AE76B289176}TaskTraceCtrlAnalyzeViews" "0" -"{F923CED3-3318-4B43-B931-0AE76B289176}TaskTraceCtrlFileSaveDirectory" "" -"{F923CED3-3318-4B43-B931-0AE76B289176}TaskTraceCtrlTraceViews" "0" -[LANGUAGE] -"English" -[CONFIG_INFO_VD1] -1 -[CONFIG_INFO_VD2] -0 -[CONFIG_INFO_VD3] -0 -[CONFIG_INFO_VD4] -0 -[WINDOW_POSITION_STATE_DATA_VD1] -"Help" "TOOLBAR 0" 59419 1 5 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_00000001_CmdLine}" "WINDOW" 59422 0 1 "0.09" 182 0 0 350 200 17 0 "32771|32772|32778|<>|32773|32774|<>|32820|<>|32801|32824" "0.0" -"{WK_00000001_DEBUGCONSOLE}RTOSDemoRDK_Jlink" "WINDOW" 59421 0 0 "1.00" 381 0 0 350 200 17 0 "57634|57637|57633|<>|32781|32782|<>|32780|32785|32787" "0.0" -"{WK_00000001_OUTPUT}" "WINDOW" 59422 0 0 "1.00" 182 560 340 350 200 18 0 "36756|36757|36758|36759|<>|36746|36747|<>|39531|<>|39500|39534|<>|36687" "0.0" -"{WK_00000002_WORKSPACE}" "WINDOW" 59420 0 0 "1.00" 330 560 340 350 200 18 0 "" "0.0" -"{WK_TB00000001_STANDARD}" "TOOLBAR 0" 59419 0 3 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000002_EDITOR}" "TOOLBAR 0" 59419 0 0 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000003_BOOKMARKS}" "TOOLBAR 0" 59419 1 1 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000004_TEMPLATES}" "TOOLBAR 0" 59419 1 0 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000005_SEARCH}" "TOOLBAR 0" 59419 0 2 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000007_DEBUG}" "TOOLBAR 0" 59419 0 1 "0.00" 0 914 231 0 0 18 0 "" "0.0" -"{WK_TB00000008_DEBUGRUN}" "TOOLBAR 0" 59419 2 1 "0.00" 0 298 189 0 0 18 0 "" "0.0" -"{WK_TB00000009_VERSIONCONTROL}" "TOOLBAR 0" 59419 1 3 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000011_CPU}" "TOOLBAR 0" 59419 2 2 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000012_MAP}" "TOOLBAR 0" 59419 1 4 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000013_SYMBOL}" "TOOLBAR 0" 59419 2 3 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000014_CODE}" "TOOLBAR 0" 59419 3 2 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000015_PERFORMANCE}" "TOOLBAR 0" 59419 3 3 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000016_GRAPHIC}" "TOOLBAR 0" 59419 3 1 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000018_DEFAULTWINDOW}" "TOOLBAR 0" 59419 1 2 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000023_RTOS}" "TOOLBAR 0" 59419 3 4 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000025_HELPSYSTEMTOOL}" "TOOLBAR 0" 59419 0 0 "0.00" 0 788 192 0 0 5 0 "" "0.0" -"{WK_TB00000026_MACRO}" "TOOLBAR 0" 59419 1 6 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000027_EVENT}" "TOOLBAR 0" 59419 3 0 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000028_RTOSDEBUG}" "TOOLBAR 0" 59419 0 0 "0.00" 0 559 254 0 0 5 0 "" "0.0" -"{WK_TB00000029_SYSTEMTOOL}" "TOOLBAR 0" 59419 2 0 "0.00" 0 0 0 0 0 17 0 "" "0.0" -[WINDOW_POSITION_STATE_DATA_VD2] -[WINDOW_POSITION_STATE_DATA_VD3] -[WINDOW_POSITION_STATE_DATA_VD4] -[WINDOW_Z_ORDER] -"{WK_TB00000028_RTOSDEBUG} TOOLBAR 0" -"{WK_TB00000025_HELPSYSTEMTOOL} TOOLBAR 0" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\main-full.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\main-blinky.c" -[TARGET_NAME] -"RX600 Segger J-Link" "" 0 -[STATUSBAR_STATEINFO_VD1] -"MasterShowState" 1 -"ApplicationShowState" 1 -"DebuggerShowState" 1 -[STATUSBAR_STATEINFO_VD2] -"MasterShowState" 1 -"ApplicationShowState" 1 -"DebuggerShowState" 1 -[STATUSBAR_STATEINFO_VD3] -"MasterShowState" 1 -"ApplicationShowState" 1 -"DebuggerShowState" 1 -[STATUSBAR_STATEINFO_VD4] -"MasterShowState" 1 -"ApplicationShowState" 1 -"DebuggerShowState" 1 -[STATUSBAR_DEBUGGER_PANESTATE_VD1] -"SBK_TAR_EMUE100|Exception" 1 -"SBK_TAR_EMUE100|BreakCondition" 1 -"SBK_TAR_EMUE100|TaskID" 1 -"SBK_TAR_EMUE100|ExecutionTime" 1 -"SBK_TAR_EMUE100|PC" 1 -[STATUSBAR_DEBUGGER_PANESTATE_VD2] -[STATUSBAR_DEBUGGER_PANESTATE_VD3] -[STATUSBAR_DEBUGGER_PANESTATE_VD4] -[DEBUGGER_OPTIONS] -"" -[DOWNLOAD_MODULES] -"$(CONFIGDIR)\$(PROJECTNAME).abs" 0 "Elf/Dwarf2" 0 0 1 0 -[CONNECT_ON_GO] -"FALSE" -[DOWNLOAD_MODULES_AFTER_BUILD] -"TRUE" -[REMOVE_BREAKPOINTS_ON_DOWNLOAD] -"FALSE" -[DISABLE_MEMORY_ACCESS_PRIOR_TO_COMMAND_FILE_EXECUTION] -"FALSE" -[LIMIT_DISASSEMBLY_MEMORY_ACCESS] -"FALSE" -[DISABLE_MEMORY_ACCESS_DURING_EXECUTION] -"FALSE" -[DEBUGGER_OPTIONS_PROPERTIES] -"1" -[COMMAND_FILES] -[DEFAULT_DEBUG_FORMAT] -"Elf/Dwarf2" -[FLASH_DETAILS] -"" 0 0 "" 0 "" 0 0 "" 0 0 0 0 0 0 0 "" "" "" "" "" -[BREAKPOINTS] -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\renesas-files\resetprg.c" 137 0 1 "{00000000-0000-0000-C000-000000000046}" "" -[END] diff --git a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/RDK_Jlink.ini b/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/RDK_Jlink.ini deleted file mode 100644 index cccc6df80..000000000 --- a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/RDK_Jlink.ini +++ /dev/null @@ -1,38 +0,0 @@ -[Init_EmulatorSetting] -FirstStartUp=0 -FirstStartUpV10200=0 -HideNext=0 -ConnectionDlgAutoClose=1 -[Config_Property] -HideNext=0 -[Init_DeviceSetting] -DebugMode=0 -PowerOut=0 -ResetRelease=0 -EmulatorSerial= -McuGroup=RX63N Group -Device=R5F563NA -McuFileDir=RX63NGr -SupplyVoltage=-1 -[Init_CommunicationClock] -JtagClock=16.5 -JtagClockValue=10 -CommunicatonIF=0 -FineClock=2000000 -FineClockValue=2000000 -[CFG_MCU] -ProcessorMode=0 -LittleEndian=1 -OperatingMode=0 -PrevDevice=R5F563NA -EnableClockChange=0 -UseEXTAL=1 -EXTAL=12.0000 -WorkRam=1000 -[CFG_SYSTEM] -CpuReWrite=0 -PerfCounterUser=0 -TraceDebugAs=0 -DataFlashReWrite=0 -[CFG_FLASHCLEAR_R5F563NA_00] -AreaCount=0 diff --git a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/RTOSDemo.hwp b/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/RTOSDemo.hwp deleted file mode 100644 index 4bb18587f..000000000 --- a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/RTOSDemo.hwp +++ /dev/null @@ -1,477 +0,0 @@ -[HIMDBVersion] -2.0 -[DATABASE_VERSION] -"2.8" -[PROJECT_DETAILS] -"RTOSDemo" "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo" "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\RTOSDemo.hwp" "RX" "Renesas RX Standard" "Application" "RX600" "Other" -[INFORMATION] -"No project information available" -[TOOL_CHAIN] -"Renesas RX Standard Toolchain" "1.2.0.0" -[CONFIGURATIONS] -"Blinky" "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\Blinky" -"Debug" "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\Debug" -"Debug-with-optimisation" "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\Debug-with-optimisation" -[BUILD_PHASES] -"Renesas OptLinker" 1 -"Renesas RX Assembler" 1 -"Renesas RX C/C++ Compiler" 1 -"Renesas RX C/C++ Library Generator" 1 -"Renesas RX Configurator" 1 -[TOOL_ENVIRONMENT] -[EXTENSIONS] -"Absolute file" "ABS" -"Assembly include file" "INC" -"Assembly list file" "LST" -"Assembly source file" "S" -"Assembly source file" "SRC" -"Binary file" "BIN" -"C header file" "H" -"C source file" "C" -"C++ header file" "HPP" -"C++ source file" "CC" -"C++ source file" "CP" -"C++ source file" "CPP" -"CPU information file" "CPU" -"Calling information file" "CAL" -"Configuration file" "CFG" -"Debug information file" "DBG" -"Hex file" "HEX" -"Library file" "LIB" -"Library information file" "LBP" -"Linkage map file" "MAP" -"Linkage symbol file" "FSY" -"Object file" "OBJ" -"Optimize map file" "bls" -"Preprocessed C source file" "P" -"Preprocessed C++ source file" "PP" -"Relocatable file" "REL" -"Rts information file" "RTS" -"S-Record file" "MOT" -"Stack information file" "SNI" -"TD include object file" "RTI" -[FILE_GROUPS] -"Absolute file" "BIN" "NONE" "" -"Assembly include file" "TEXT" "EDITOR" "" -"Assembly list file" "TEXT" "EDITOR" "" -"Assembly source file" "TEXT" "EDITOR" "" -"Binary file" "BIN" "NONE" "" -"C header file" "TEXT" "EDITOR" "" -"C source file" "TEXT" "EDITOR" "" -"C++ header file" "TEXT" "EDITOR" "" -"C++ source file" "TEXT" "EDITOR" "" -"CPU information file" "BIN" "NONE" "" -"Calling information file" "BIN" "NONE" "" -"Configuration file" "TEXT" "EDITOR" "" -"Debug information file" "BIN" "NONE" "" -"Hex file" "TEXT" "EDITOR" "" -"Library file" "BIN" "NONE" "" -"Library information file" "TEXT" "EDITOR" "" -"Linkage map file" "TEXT" "EDITOR" "" -"Linkage symbol file" "TEXT" "EDITOR" "" -"Object file" "BIN" "NONE" "" -"Optimize map file" "BIN" "NONE" "" -"Preprocessed C source file" "TEXT" "EDITOR" "" -"Preprocessed C++ source file" "TEXT" "EDITOR" "" -"Relocatable file" "BIN" "NONE" "" -"Rts information file" "BIN" "NONE" "" -"S-Record file" "TEXT" "EDITOR" "" -"Stack information file" "BIN" "NONE" "" -"TD include object file" "BIN" "NONE" "" -[ASSOCIATED_APPLICATIONS] -[TOOLCHAIN_PHASE] -"Renesas OptLinker" -"Renesas RX Assembler" -"Renesas RX C/C++ Compiler" -"Renesas RX C/C++ Library Generator" -"Renesas RX Configurator" -[UTILITY_PHASE] -[CUSTOM_PHASES] -[CUSTOM_PHASE_INPUT_GROUP] -[CUSTOM_PHASE_OUTPUT_SYNTAX] -[BUILD_ORDER] -"Renesas RX C/C++ Library Generator" 1 -"Renesas RX C/C++ Compiler" 1 -"Renesas RX Assembler" 1 -"Renesas OptLinker" 1 -"Renesas RX Configurator" 0 -[BUILD_PHASE_DETAILS] -"Renesas OptLinker" "Object file|Library file|Relocatable file" 0 -"Renesas RX Assembler" "Assembly source file|Linkage symbol file" 1 -"Renesas RX C/C++ Compiler" "C source file|C++ source file" 1 -"Renesas RX C/C++ Library Generator" "" 0 -"Renesas RX Configurator" "Configuration file" 0 -[BUILD_FILE_ORDER_Assembly source file] -"Renesas RX Assembler" 1 -[BUILD_FILE_ORDER_C source file] -"Renesas RX C/C++ Compiler" 1 -[BUILD_FILE_ORDER_C++ source file] -"Renesas RX C/C++ Compiler" 1 -[BUILD_FILE_ORDER_Linkage symbol file] -"Renesas RX Assembler" 1 -[SCRAP] -"Project Generator Setup File" "" -[MAPPINGS] -"Assembly source file" "Renesas RX Assembler" "Renesas RX C/C++ Compiler" -"Library file" "Renesas OptLinker" "Renesas RX C/C++ Library Generator" -"Object file" "Renesas OptLinker" "Renesas RX Assembler" -"Object file" "Renesas OptLinker" "Renesas RX C/C++ Compiler" -[PROJECT_FILES] -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\BlockQ.c" "User" "C source file|Common demo tasks" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\GenQTest.c" "User" "C source file|Common demo tasks" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\IntQueue.c" "User" "C source file|Common demo tasks" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\PollQ.c" "User" "C source file|Common demo tasks" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\QPeek.c" "User" "C source file|Common demo tasks" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\blocktim.c" "User" "C source file|Common demo tasks" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\death.c" "User" "C source file|Common demo tasks" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\flash_timer.c" "User" "C source file|Common demo tasks" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\integer.c" "User" "C source file|Common demo tasks" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\recmutex.c" "User" "C source file|Common demo tasks" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\semtest.c" "User" "C source file|Common demo tasks" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\sp_flop.c" "User" "C source file|Common demo tasks" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\apps\httpd\http-strings.c" "User" "C source file|FreeTCP (Based on uIP)|Common" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd-fs.c" "User" "C source file|FreeTCP (Based on uIP)|Common" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd.c" "User" "C source file|FreeTCP (Based on uIP)|Common" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\psock.c" "User" "C source file|FreeTCP (Based on uIP)" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\timer.c" "User" "C source file|FreeTCP (Based on uIP)" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\uip.c" "User" "C source file|FreeTCP (Based on uIP)" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\uip_arp.c" "User" "C source file|FreeTCP (Based on uIP)" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\HighFrequencyTimerTest.c" "User" "C source file" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\IntQueueTimer.c" "User" "C source file" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\ParTest.c" "User" "C source file" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\Renesas-Files\board\rdkrx63n\dbsct.c" "User" "C source file|Renesas Files" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\Renesas-Files\board\rdkrx63n\flash_options.c" "User" "C source file|Renesas Files" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\Renesas-Files\board\rdkrx63n\hwsetup.c" "User" "C source file|Renesas Files" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\Renesas-Files\board\rdkrx63n\lowlvl.src" "User" "Assembly source file" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\Renesas-Files\board\rdkrx63n\lowsrc.c" "User" "C source file|Renesas Files" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\Renesas-Files\board\rdkrx63n\resetprg.c" "User" "C source file|Renesas Files" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\Renesas-Files\board\rdkrx63n\sbrk.c" "User" "C source file|Renesas Files" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\Renesas-Files\board\rdkrx63n\vecttbl.c" "User" "C source file|Renesas Files" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\main-blinky.c" "User" "C source file" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\main-full.c" "User" "C source file" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\uIP_Task.c" "User" "C source file" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\webserver\EMAC.c" "User" "C source file|FreeTCP (Based on uIP)|Port Specific" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\webserver\httpd-cgi.c" "User" "C source file|FreeTCP (Based on uIP)|Port Specific" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\webserver\phy.c" "User" "C source file|FreeTCP (Based on uIP)|Port Specific" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\list.c" "User" "C source file|FreeRTOS" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\MemMang\heap_2.c" "User" "C source file|FreeRTOS|Portable layer" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\Renesas\RX600\port.c" "User" "C source file|FreeRTOS|Portable layer" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\Renesas\RX600\port_asm.src" "User" "Assembly source file" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\queue.c" "User" "C source file|FreeRTOS" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\tasks.c" "User" "C source file|FreeRTOS" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\timers.c" "User" "C source file|FreeRTOS" 2 -[FOLDER] -"Assembly source file" "Assembly source file" -"C header file" "C header file" -"C source file" "C source file" -"C source file|Common demo tasks" "" -"C source file|FreeRTOS" "" -"C source file|FreeRTOS|Portable layer" "" -"C source file|FreeTCP (Based on uIP)" "" -"C source file|FreeTCP (Based on uIP)|Common" "" -"C source file|FreeTCP (Based on uIP)|Port Specific" "" -"C source file|Renesas Files" "" -[GENERAL_DATA_PROJECT] -"FDT_AutoConnect" "0" -"FDT_BaseDevice" "" -"FDT_BaudRate" "" -"FDT_BlockLockConnect" "1" -"FDT_BlockLockDisconnect" "1" -"FDT_BootMode" "FALSE" -"FDT_CKM" "0" -"FDT_CKP" "0" -"FDT_ClockMode" "0" -"FDT_ClockSync" "00000000" -"FDT_Comments" "" -"FDT_ConnectionResetSuppression" "FFFFFFFF" -"FDT_Device" "" -"FDT_DoReadbackVerification" "" -"FDT_DoSecurityProtection" "" -"FDT_DoSecurityProtectionLevel" "" -"FDT_Frequency" "0.0000" -"FDT_Interface" "" -"FDT_InternalClock" "FALSE" -"FDT_KernelPath" "" -"FDT_KernelResident" "FALSE" -"FDT_McuId" "0" -"FDT_MessageLevel" "0" -"FDT_PinOutputs" "00000000" -"FDT_PinSettings" "00000000" -"FDT_Port" "" -"FDT_Protection" "0" -"FDT_Protocol" "" -"FDT_ReinterrogateGenericDevice" "" -"FDT_ResetOnDisconnect" "" -"FDT_ResetPinOutputs" "00000000" -"FDT_ResetPinSettings" "00000000" -"FDT_SerNumConfigString" "" -"FDT_SerNumDllFunction" "" -"FDT_SerNumDllLocation" "" -"FDT_SerNumEnabled" "FALSE" -"FDT_SerNumMemArea" "" -"FDT_UPMPinSettings" "00000000" -"FDT_UseDefaultBaudRate" "FALSE" -"FDT_UseInternalKernel" "TRUE" -"FDT_UserPinOutputs" "00000000" -"FDT_UserPinSettings" "00000000" -"MAKEGEN_GENERATE_MAKEFILE_FOR" "0" -"MAKEGEN_MAKEFILE_FORMAT" "2" -"MAKEGEN_MAKEFILE_RELATIVITY" "1" -"MAKEGEN_SCAN_DEPENDENCIES_WHILST_BUILDING_MAKEFILE" "1" -"MAKEGEN_USE_STATIC_SUBCOMMAND_FILES" "1" -"USE_CUSTOM_LINKAGE_ORDER" "0" -[ON_DEMAND_COMPONENTS_LOADED] -[SYNC_SESSION_NAMES] -[SESSIONS] -"RDK_Jlink" "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\RDK_Jlink.hsf" 0 -[GENERAL_DATA_SESSION_RDK_Jlink] -[OPTIONS_Blinky_Renesas OptLinker] -"Single Shot" "0ffc161d9412dc10" 5 -[OPTIONS_Blinky_Renesas RX Assembler] -"Assembly source file" "0ffc161d9412dc10" 4 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\Renesas-Files\board\rdkrx63n\lowlvl.src" "0ffc161d9412dc10" 4 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\Renesas\RX600\port_asm.src" "0ffc161d9412dc10" 4 -"Linkage symbol file" "0ffc161d9412dc10" 4 -[OPTIONS_Blinky_Renesas RX C/C++ Compiler] -"C source file" "02499bb90612dc10" 2 -"C++ source file" "02499bb90612dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\BlockQ.c" "02499bb90612dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\GenQTest.c" "02499bb90612dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\IntQueue.c" "02499bb90612dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\PollQ.c" "02499bb90612dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\QPeek.c" "02499bb90612dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\blocktim.c" "02499bb90612dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\death.c" "02499bb90612dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\flash_timer.c" "02499bb90612dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\integer.c" "02499bb90612dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\recmutex.c" "02499bb90612dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\semtest.c" "02499bb90612dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\sp_flop.c" "02499bb90612dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\apps\httpd\http-strings.c" "02499bb90612dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd-fs.c" "02499bb90612dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd.c" "02499bb90612dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\psock.c" "02499bb90612dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\timer.c" "02499bb90612dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\uip.c" "02499bb90612dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\uip_arp.c" "02499bb90612dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\HighFrequencyTimerTest.c" "02499bb90612dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\IntQueueTimer.c" "02499bb90612dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\ParTest.c" "02499bb90612dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\Renesas-Files\board\rdkrx63n\dbsct.c" "02499bb90612dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\Renesas-Files\board\rdkrx63n\flash_options.c" "02499bb90612dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\Renesas-Files\board\rdkrx63n\hwsetup.c" "02499bb90612dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\Renesas-Files\board\rdkrx63n\lowsrc.c" "02499bb90612dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\Renesas-Files\board\rdkrx63n\resetprg.c" "02499bb90612dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\Renesas-Files\board\rdkrx63n\sbrk.c" "02499bb90612dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\Renesas-Files\board\rdkrx63n\vecttbl.c" "02499bb90612dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\main-blinky.c" "02499bb90612dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\main-full.c" "02499bb90612dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\uIP_Task.c" "02499bb90612dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\webserver\EMAC.c" "02499bb90612dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\webserver\httpd-cgi.c" "02499bb90612dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\webserver\phy.c" "02499bb90612dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\list.c" "02499bb90612dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\MemMang\heap_2.c" "02499bb90612dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\Renesas\RX600\port.c" "02499bb90612dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\queue.c" "02499bb90612dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\tasks.c" "02499bb90612dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\timers.c" "02499bb90612dc10" 2 -[OPTIONS_Blinky_Renesas RX C/C++ Library Generator] -"Single Shot" "0fe5f51d9412dc10" 1 -[OPTIONS_Blinky_Renesas RX Configurator] -"Single Shot" "0ffc161d9412dc10" 6 -[OPTIONS_Blinky] -"" 0 -"[V|VERSION|1] [B|COMMAND|1] [S|SPEC|UITRON4] [S|OUTPUTPATH|^"$(CONFIGDIR)^"] [S|CPU|RX600] [S|ENDIAN|LITTLE] [S|FINT_REGISTER|0]" 6 -"[V|VERSION|1] [B|SJIS|1] [B|DEBUG|1] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(FILELEAF).obj^"] [S|CPU|RX600] [S|BASE|00000000=NONE] [B|SKIPDEPENDENCY|1] -" 4 -"[V|VERSION|1] [S|LANG|CPP] [B|SJIS|1] [S|INCLUDE|^"$(PROJDIR)\..\..\..\Source\portable\Renesas\RX600^"|^"$(PROJDIR)\..\..\..\Source\include^"|^"$(PROJDIR)\.^"|^"$(PROJDIR)\..\..\include^"|^"$(PROJDIR)\..\..\Common\include^"|^"$(PROJDIR)\webserver^"|^"$(PROJDIR)\Renesas-Files^"|^"$(PROJDIR)\Renesas-Files\mcu\rx63n^"] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(FILELEAF).obj^"] [B|DEBUG|1] [S|OPTIMIZE|0] [B|SIZE|1] [B|MAP|0] [I|INLINE|100] [I|LOOP|2] [S|MISRA2004|ALL] [S|MISRA2004RULEFILE|^"$(CONFIGDIR)\$(PROJECTNAME).rde^"] [S|CPU|RX600] [S|BASE|00000000=NONE] [I|PID|16] [B|SKIPDEPENDENCY|1] [N|DEPENDSCAN|1] -" 3 -"[V|VERSION|1] [S|LANG|C] [B|SJIS|1] [S|INCLUDE|^"$(PROJDIR)\..\..\..\Source\portable\Renesas\RX600^"|^"$(PROJDIR)\..\..\..\Source\include^"|^"$(PROJDIR)\.^"|^"$(PROJDIR)\..\..\include^"|^"$(PROJDIR)\..\..\Common\include^"|^"$(PROJDIR)\webserver^"|^"$(PROJDIR)\Renesas-Files^"|^"$(PROJDIR)\Renesas-Files\mcu\rx63n^"] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(FILELEAF).obj^"] [B|DEBUG|1] [S|OPTIMIZE|0] [B|SIZE|1] [B|MAP|0] [I|INLINE|100] [I|LOOP|2] [S|MISRA2004|ALL] [S|MISRA2004RULEFILE|^"$(CONFIGDIR)\$(PROJECTNAME).rde^"] [S|CPU|RX600] [S|BASE|00000000=NONE] [I|PID|16] [B|SKIPDEPENDENCY|1] [N|DEPENDSCAN|1] -" 2 -"[V|VERSION|1] [S|MODE|BUILD/CHANGED] [S|EXISTOUTPUTPATH|^"$(CONFIGDIR)\$(PROJECTNAME).lib^"] [B|RUNTIME|1] [B|STDIO|1] [B|STDLIB|1] [B|STRING|1] [B|NOFLOAT|1] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(PROJECTNAME).lib^"] [B|SIZE|1] [I|INLINE|100] [I|LOOP|2] [S|CPU|RX600] [S|BASE|00000000=NONE] [B|SKIPDEPENDENCY|1] -" 1 -"[V|VERSION|6] [S|FORM|STYPE] [S|BYTE_COUNT_VALUE|FF] [B|DEBUG|1] [S|ROM|(D,R)|(D_1,R_1)|(D_2,R_2)] [S|CRC|NONE|DEFAULT|00000000] [B|LIST|1] [S|LIST|^"$(CONFIGDIR)\$(PROJECTNAME).map^"] [S|SHOW|METHODCUSTOM|] [S|OUTPUT|^"$(CONFIGDIR)\$(PROJECTNAME).mot^"] [I|SPACE|^"FF^"] [B|OPTIMIZE|0] [S|START|SI,SU,B_1,R_1,B_2,R_2,B,R(00)|C_1,C_2,C,C$*,L*,D*,P,W*(0FFF80000)|FIXEDVECT(0FFFFFF90)] [S|MEMORY|HIGH] [B|SKIPDEPENDENCY|1] " 5 -[EXCLUDED_FILES_Blinky] -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\apps\httpd\http-strings.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd-fs.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\psock.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\timer.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\uip.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\uip_arp.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\BlockQ.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\blocktim.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\death.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\GenQTest.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\integer.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\IntQueue.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\PollQ.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\QPeek.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\recmutex.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\semtest.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\sp_flop.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\HighFrequencyTimerTest.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\IntQueueTimer.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\main-full.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\uIP_Task.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\webserver\EMAC.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\webserver\httpd-cgi.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\webserver\phy.c" -[LINKAGE_ORDER_Blinky] -[GENERAL_DATA_CONFIGURATION_Blinky] -[OPTIONS_Debug_Renesas OptLinker] -"Single Shot" "0f04461d9412dc10" 5 -[OPTIONS_Debug_Renesas RX Assembler] -"Assembly source file" "0f04461d9412dc10" 4 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\Renesas-Files\board\rdkrx63n\lowlvl.src" "0f04461d9412dc10" 4 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\Renesas\RX600\port_asm.src" "0f04461d9412dc10" 4 -"Linkage symbol file" "0f04461d9412dc10" 4 -[OPTIONS_Debug_Renesas RX C/C++ Compiler] -"C source file" "0ffc161d9412dc10" 2 -"C++ source file" "0ffc161d9412dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\BlockQ.c" "0ffc161d9412dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\GenQTest.c" "0ffc161d9412dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\IntQueue.c" "0ffc161d9412dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\PollQ.c" "0ffc161d9412dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\QPeek.c" "0ffc161d9412dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\blocktim.c" "0ffc161d9412dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\death.c" "0ffc161d9412dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\flash_timer.c" "0ffc161d9412dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\integer.c" "0ffc161d9412dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\recmutex.c" "0ffc161d9412dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\semtest.c" "0ffc161d9412dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\sp_flop.c" "0ffc161d9412dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\apps\httpd\http-strings.c" "0ffc161d9412dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd-fs.c" "0ffc161d9412dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd.c" "0ffc161d9412dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\psock.c" "0ffc161d9412dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\timer.c" "0ffc161d9412dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\uip.c" "0ffc161d9412dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\uip_arp.c" "0ffc161d9412dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\HighFrequencyTimerTest.c" "0ffc161d9412dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\IntQueueTimer.c" "0ffc161d9412dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\ParTest.c" "0ffc161d9412dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\Renesas-Files\board\rdkrx63n\dbsct.c" "0ffc161d9412dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\Renesas-Files\board\rdkrx63n\flash_options.c" "0ffc161d9412dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\Renesas-Files\board\rdkrx63n\hwsetup.c" "0ffc161d9412dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\Renesas-Files\board\rdkrx63n\lowsrc.c" "0ffc161d9412dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\Renesas-Files\board\rdkrx63n\resetprg.c" "0ffc161d9412dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\Renesas-Files\board\rdkrx63n\sbrk.c" "0ffc161d9412dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\Renesas-Files\board\rdkrx63n\vecttbl.c" "0ffc161d9412dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\main-blinky.c" "0ffc161d9412dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\main-full.c" "0ffc161d9412dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\uIP_Task.c" "0ffc161d9412dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\webserver\EMAC.c" "0ffc161d9412dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\webserver\httpd-cgi.c" "0ffc161d9412dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\webserver\phy.c" "0ffc161d9412dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\list.c" "0ffc161d9412dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\MemMang\heap_2.c" "0ffc161d9412dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\Renesas\RX600\port.c" "0ffc161d9412dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\queue.c" "0ffc161d9412dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\tasks.c" "0ffc161d9412dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\timers.c" "0ffc161d9412dc10" 2 -[OPTIONS_Debug_Renesas RX C/C++ Library Generator] -"Single Shot" "0df08616c512dc10" 1 -[OPTIONS_Debug_Renesas RX Configurator] -"Single Shot" "0f04461d9412dc10" 6 -[OPTIONS_Debug] -"" 0 -"[V|VERSION|1] [B|COMMAND|1] [S|SPEC|UITRON4] [S|OUTPUTPATH|^"$(CONFIGDIR)^"] [S|CPU|RX600] [S|ENDIAN|LITTLE] [S|FINT_REGISTER|0]" 6 -"[V|VERSION|1] [B|SJIS|1] [B|DEBUG|1] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(FILELEAF).obj^"] [S|CPU|RX600] [S|BASE|00000000=NONE] [B|SKIPDEPENDENCY|1] -" 4 -"[V|VERSION|1] [S|LANG|CPP] [B|SJIS|1] [S|INCLUDE|^"$(PROJDIR)\..\..\..\Source\portable\Renesas\RX600^"|^"$(PROJDIR)\..\..\..\Source\include^"|^"$(PROJDIR)\.^"|^"$(PROJDIR)\..\..\include^"|^"$(PROJDIR)\..\..\Common\include^"|^"$(PROJDIR)\webserver^"|^"$(PROJDIR)\Renesas-Files^"|^"$(PROJDIR)\..\..\Common\ethernet\FreeTCPIP^"|^"$(PROJDIR)\Renesas-Files\mcu\rx63n^"] [S|CHANGE_MESSAGE|INFORMATION|] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(FILELEAF).obj^"] [B|DEBUG|1] [S|OPTIMIZE|0] [B|SIZE|1] [B|MAP|0] [I|INLINE|100] [I|LOOP|2] [S|MISRA2004|ALL] [S|MISRA2004RULEFILE|^"$(CONFIGDIR)\$(PROJECTNAME).rde^"] [S|CPU|RX600] [S|BASE|00000000=NONE] [I|PID|16] [B|SKIPDEPENDENCY|1] [N|DEPENDSCAN|1] -" 3 -"[V|VERSION|1] [S|LANG|C] [B|SJIS|1] [S|INCLUDE|^"$(PROJDIR)\..\..\..\Source\portable\Renesas\RX600^"|^"$(PROJDIR)\..\..\..\Source\include^"|^"$(PROJDIR)\.^"|^"$(PROJDIR)\..\..\include^"|^"$(PROJDIR)\..\..\Common\include^"|^"$(PROJDIR)\webserver^"|^"$(PROJDIR)\Renesas-Files^"|^"$(PROJDIR)\..\..\Common\ethernet\FreeTCPIP^"|^"$(PROJDIR)\Renesas-Files\mcu\rx63n^"] [S|CHANGE_MESSAGE|INFORMATION|] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(FILELEAF).obj^"] [B|DEBUG|1] [S|OPTIMIZE|0] [B|SIZE|1] [B|MAP|0] [I|INLINE|100] [I|LOOP|2] [S|MISRA2004|ALL] [S|MISRA2004RULEFILE|^"$(CONFIGDIR)\$(PROJECTNAME).rde^"] [S|CPU|RX600] [S|BASE|00000000=NONE] [I|PID|16] [B|SKIPDEPENDENCY|1] [N|DEPENDSCAN|1] -" 2 -"[V|VERSION|1] [S|MODE|BUILD/CHANGED] [S|EXISTOUTPUTPATH|^"$(CONFIGDIR)\$(PROJECTNAME).lib^"] [B|RUNTIME|1] [B|MATH|1] [B|STDIO|1] [B|STDLIB|1] [B|STRING|1] [B|NOFLOAT|1] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(PROJECTNAME).lib^"] [B|SIZE|1] [I|INLINE|100] [I|LOOP|2] [S|CPU|RX600] [S|BASE|00000000=NONE] [I|PID|16] [B|SKIPDEPENDENCY|1] -" 1 -"[V|VERSION|6] [S|FORM|STYPE] [S|BYTE_COUNT_VALUE|FF] [B|DEBUG|1] [S|ROM|(D,R)|(D_1,R_1)|(D_2,R_2)] [S|CRC|NONE|DEFAULT|00000000] [B|LIST|1] [S|LIST|^"$(CONFIGDIR)\$(PROJECTNAME).map^"] [S|SHOW|METHODCUSTOM|] [S|OUTPUT|^"$(CONFIGDIR)\$(PROJECTNAME).mot^"] [I|SPACE|^"FF^"] [B|OPTIMIZE|0] [S|START|B_RX_DESC,B_TX_DESC,B_ETHERNET_BUFFERS,SI,SU,B_1,R_1,B_2,R_2,B,R(00)|C_1,C_2,C,C$*,L*,D*,P,W*(0FFF80000)|FIXEDVECT(0FFFFFF90)] [S|MEMORY|HIGH] [B|SKIPDEPENDENCY|1] " 5 -[EXCLUDED_FILES_Debug] -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\main-blinky.c" -[LINKAGE_ORDER_Debug] -[GENERAL_DATA_CONFIGURATION_Debug] -[OPTIONS_Debug-with-optimisation_Renesas OptLinker] -"Single Shot" "06023eccf122dc10" 5 -[OPTIONS_Debug-with-optimisation_Renesas RX Assembler] -"Assembly source file" "0f04461d9412dc10" 4 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\Renesas-Files\board\rdkrx63n\lowlvl.src" "0f04461d9412dc10" 4 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\Renesas\RX600\port_asm.src" "0f04461d9412dc10" 4 -"Linkage symbol file" "0f04461d9412dc10" 4 -[OPTIONS_Debug-with-optimisation_Renesas RX C/C++ Compiler] -"C source file" "06023eccf122dc10" 2 -"C++ source file" "06023eccf122dc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\BlockQ.c" "06023eccf122dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\GenQTest.c" "06023eccf122dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\IntQueue.c" "06023eccf122dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\PollQ.c" "06023eccf122dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\QPeek.c" "06023eccf122dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\blocktim.c" "06023eccf122dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\death.c" "06023eccf122dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\flash_timer.c" "06023eccf122dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\integer.c" "06023eccf122dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\recmutex.c" "06023eccf122dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\semtest.c" "06023eccf122dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\sp_flop.c" "06023eccf122dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\apps\httpd\http-strings.c" "06023eccf122dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd-fs.c" "06023eccf122dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd.c" "06023eccf122dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\psock.c" "06023eccf122dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\timer.c" "06023eccf122dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\uip.c" "06023eccf122dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\uip_arp.c" "06023eccf122dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\HighFrequencyTimerTest.c" "06023eccf122dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\IntQueueTimer.c" "06023eccf122dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\ParTest.c" "06023eccf122dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\Renesas-Files\board\rdkrx63n\dbsct.c" "06023eccf122dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\Renesas-Files\board\rdkrx63n\flash_options.c" "06023eccf122dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\Renesas-Files\board\rdkrx63n\hwsetup.c" "06023eccf122dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\Renesas-Files\board\rdkrx63n\lowsrc.c" "06023eccf122dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\Renesas-Files\board\rdkrx63n\resetprg.c" "06023eccf122dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\Renesas-Files\board\rdkrx63n\sbrk.c" "06023eccf122dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\Renesas-Files\board\rdkrx63n\vecttbl.c" "06023eccf122dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\main-blinky.c" "06023eccf122dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\main-full.c" "06023eccf122dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\uIP_Task.c" "06023eccf122dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\webserver\EMAC.c" "06023eccf122dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\webserver\httpd-cgi.c" "06023eccf122dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\webserver\phy.c" "06023eccf122dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\list.c" "06023eccf122dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\MemMang\heap_2.c" "06023eccf122dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\Renesas\RX600\port.c" "06023eccf122dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\queue.c" "06023eccf122dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\tasks.c" "06023eccf122dc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\timers.c" "06023eccf122dc10" 2 -[OPTIONS_Debug-with-optimisation_Renesas RX C/C++ Library Generator] -"Single Shot" "0df08616c512dc10" 1 -[OPTIONS_Debug-with-optimisation_Renesas RX Configurator] -"Single Shot" "0f04461d9412dc10" 6 -[OPTIONS_Debug-with-optimisation] -"" 0 -"[V|VERSION|1] [B|COMMAND|1] [S|SPEC|UITRON4] [S|OUTPUTPATH|^"$(CONFIGDIR)^"] [S|CPU|RX600] [S|ENDIAN|LITTLE] [S|FINT_REGISTER|0]" 6 -"[V|VERSION|1] [B|SJIS|1] [B|DEBUG|1] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(FILELEAF).obj^"] [S|CPU|RX600] [S|BASE|00000000=NONE] [B|SKIPDEPENDENCY|1] -" 4 -"[V|VERSION|1] [S|LANG|CPP] [B|SJIS|1] [S|INCLUDE|^"$(PROJDIR)\..\..\..\Source\portable\Renesas\RX600^"|^"$(PROJDIR)\..\..\..\Source\include^"|^"$(PROJDIR)\.^"|^"$(PROJDIR)\..\..\include^"|^"$(PROJDIR)\..\..\Common\include^"|^"$(PROJDIR)\webserver^"|^"$(PROJDIR)\Renesas-Files^"|^"$(PROJDIR)\..\..\Common\ethernet\FreeTCPIP^"|^"$(PROJDIR)\Renesas-Files\mcu\rx63n^"] [S|DEFINE|INCLUDE_HIGH_FREQUENCY_TIMER_TEST] [S|CHANGE_MESSAGE|INFORMATION|] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(FILELEAF).obj^"] [B|DEBUG|1] [S|OPTIMIZE|MAX] [B|SIZE|1] [B|MAP|1] [S|MAPPATH|^"$(CONFIGDIR)\$(PROJECTNAME).bls^"] [I|INLINE|100] [I|LOOP|2] [B|MAPOPTIMIZATION|1] [S|MISRA2004|ALL] [S|MISRA2004RULEFILE|^"$(CONFIGDIR)\$(PROJECTNAME).rde^"] [S|CPU|RX600] [S|BASE|00000000=NONE] [I|PID|16] [B|SKIPDEPENDENCY|1] [N|DEPENDSCAN|1] -" 3 -"[V|VERSION|1] [S|LANG|C] [B|SJIS|1] [S|INCLUDE|^"$(PROJDIR)\..\..\..\Source\portable\Renesas\RX600^"|^"$(PROJDIR)\..\..\..\Source\include^"|^"$(PROJDIR)\.^"|^"$(PROJDIR)\..\..\include^"|^"$(PROJDIR)\..\..\Common\include^"|^"$(PROJDIR)\webserver^"|^"$(PROJDIR)\Renesas-Files^"|^"$(PROJDIR)\..\..\Common\ethernet\FreeTCPIP^"|^"$(PROJDIR)\Renesas-Files\mcu\rx63n^"] [S|DEFINE|INCLUDE_HIGH_FREQUENCY_TIMER_TEST] [S|CHANGE_MESSAGE|INFORMATION|] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(FILELEAF).obj^"] [B|DEBUG|1] [S|OPTIMIZE|MAX] [B|SIZE|1] [B|MAP|1] [S|MAPPATH|^"$(CONFIGDIR)\$(PROJECTNAME).bls^"] [I|INLINE|100] [I|LOOP|2] [B|MAPOPTIMIZATION|1] [S|MISRA2004|ALL] [S|MISRA2004RULEFILE|^"$(CONFIGDIR)\$(PROJECTNAME).rde^"] [S|CPU|RX600] [S|BASE|00000000=NONE] [I|PID|16] [B|SKIPDEPENDENCY|1] [N|DEPENDSCAN|1] -" 2 -"[V|VERSION|1] [S|MODE|BUILD/CHANGED] [S|EXISTOUTPUTPATH|^"$(CONFIGDIR)\$(PROJECTNAME).lib^"] [B|RUNTIME|1] [B|MATH|1] [B|STDIO|1] [B|STDLIB|1] [B|STRING|1] [B|NOFLOAT|1] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(PROJECTNAME).lib^"] [B|SIZE|1] [I|INLINE|100] [I|LOOP|2] [S|CPU|RX600] [S|BASE|00000000=NONE] [I|PID|16] [B|SKIPDEPENDENCY|1] -" 1 -"[V|VERSION|6] [S|FORM|STYPE] [S|BYTE_COUNT_VALUE|FF] [B|DEBUG|1] [S|ROM|(D,R)|(D_1,R_1)|(D_2,R_2)] [S|CRC|NONE|DEFAULT|00000000] [B|LIST|1] [S|LIST|^"$(CONFIGDIR)\$(PROJECTNAME).map^"] [S|SHOW|METHODCUSTOM|] [S|OUTPUT|^"$(CONFIGDIR)\$(PROJECTNAME).mot^"] [B|MAP|1] [S|MAPPATH|^"$(CONFIGDIR)\$(PROJECTNAME).bls^"] [I|SPACE|^"FF^"] [B|MAPOPTIMIZATION|1] [B|OPTIMIZE|0] [S|START|B_RX_DESC,B_TX_DESC,B_ETHERNET_BUFFERS,SI,SU,B_1,R_1,B_2,R_2,B,R(00)|C_1,C_2,C,C$*,L*,D*,P,W*(0FFF80000)|FIXEDVECT(0FFFFFF90)] [S|MEMORY|HIGH] [B|SKIPDEPENDENCY|1] -" 5 -[EXCLUDED_FILES_Debug-with-optimisation] -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX63N-RDK_Renesas\RTOSDemo\main-blinky.c" -[LINKAGE_ORDER_Debug-with-optimisation] -[GENERAL_DATA_CONFIGURATION_Debug-with-optimisation] -[GENERAL_DATA_CONFIGURATION_SESSION_Blinky_RDK_Jlink] -[SESSION_DATA_CONFIGURATION_SESSION_Blinky_RDK_Jlink] -"MEMORY_MAPPING_OPTIONS" "" -[GENERAL_DATA_CONFIGURATION_SESSION_Debug_RDK_Jlink] -[SESSION_DATA_CONFIGURATION_SESSION_Debug_RDK_Jlink] -"MEMORY_MAPPING_OPTIONS" "" -[GENERAL_DATA_CONFIGURATION_SESSION_Debug-with-optimisation_RDK_Jlink] -[SESSION_DATA_CONFIGURATION_SESSION_Debug-with-optimisation_RDK_Jlink] -"MEMORY_MAPPING_OPTIONS" "" -[EXT_DEBUGGER_INFO] -0 "" "" "" "" -[END] diff --git a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/RTOSDemo.nav b/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/RTOSDemo.nav deleted file mode 100644 index 08fd8aa79..000000000 Binary files a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/RTOSDemo.nav and /dev/null differ diff --git a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/RTOSDemo.tps b/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/RTOSDemo.tps deleted file mode 100644 index 2d000eaee..000000000 --- a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/RTOSDemo.tps +++ /dev/null @@ -1,33 +0,0 @@ -[HIMDBVersion] -2.0 -[DATABASE_VERSION] -"1.1" -[SESSIONS_] -"RDK_Jlink" -[CONFIGURATIONS] -"Blinky" -"Debug" -"Debug-with-optimisation" -[CURRENT_CONFIGURATION] -"Debug" -[CURRENT_SESSION] -"RDK_Jlink" -[GENERAL_DATA_PROJECT] -"FDT_UserBootAreaFiles" "" -[GENERAL_DATA_CONFIGURATION_Blinky] -"PROJECT_FILES_MODIFIED_DATA_TAG" "TRUE" -[SESSIONS_Blinky] -"RDK_Jlink" -[GENERAL_DATA_CONFIGURATION_Debug] -"PROJECT_FILES_MODIFIED_DATA_TAG" "FALSE" -[SESSIONS_Debug] -"RDK_Jlink" -[GENERAL_DATA_CONFIGURATION_Debug-with-optimisation] -"PROJECT_FILES_MODIFIED_DATA_TAG" "TRUE" -[SESSIONS_Debug-with-optimisation] -"RDK_Jlink" -[GENERAL_DATA_CONFIGURATION_SESSION_Debug-with-optimisation_RDK_Jlink] -[GENERAL_DATA_SESSION_RDK_Jlink] -[GENERAL_DATA_CONFIGURATION_SESSION_Blinky_RDK_Jlink] -[GENERAL_DATA_CONFIGURATION_SESSION_Debug_RDK_Jlink] -[END] diff --git a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/Renesas-Files/board/rdkrx63n/dbsct.c b/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/Renesas-Files/board/rdkrx63n/dbsct.c deleted file mode 100644 index b92493a47..000000000 --- a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/Renesas-Files/board/rdkrx63n/dbsct.c +++ /dev/null @@ -1,83 +0,0 @@ -/*********************************************************************************************************************** -* DISCLAIMER -* This software is supplied by Renesas Electronics Corporation and is only intended for use with Renesas products. No -* other uses are authorized. This software is owned by Renesas Electronics Corporation and is protected under all -* applicable laws, including copyright laws. -* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING -* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, -* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED. TO THE MAXIMUM -* EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES -* SHALL BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON RELATED TO THIS -* SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. -* Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability of -* this software. By using this software, you agree to the additional terms and conditions found by accessing the -* following link: -* http://www.renesas.com/disclaimer -* -* Copyright (C) 2012 Renesas Electronics Corporation. All rights reserved. -***********************************************************************************************************************/ -/*********************************************************************************************************************** -* File Name : dbsct.c -* Device(s) : RX -* Description : Defines the structure of the ROM and RAM areas. -***********************************************************************************************************************/ -/*********************************************************************************************************************** -* History : DD.MM.YYYY Version Description -* : 26.10.2011 1.00 First Release -***********************************************************************************************************************/ - -/*********************************************************************************************************************** -Includes , "Project Includes" -***********************************************************************************************************************/ -/* Defines type structures used in this file */ -#include - -/* Preprocessor directive */ -#pragma unpack - -/* Section start */ -#pragma section C C$DSEC - -/* MCU ROM and RAM structure definition */ -extern const struct { - uint8_t *rom_s; /* Start address of the initialized data section in ROM */ - uint8_t *rom_e; /* End address of the initialized data section in ROM */ - uint8_t *ram_s; /* Start address of the initialized data section in RAM */ -} _DTBL[] = { - { __sectop("D"), __secend("D"), __sectop("R") }, - { __sectop("D_2"), __secend("D_2"), __sectop("R_2") }, - { __sectop("D_1"), __secend("D_1"), __sectop("R_1") } -}; - -/* Section start */ -#pragma section C C$BSEC - -/* MCU ROM and RAM structure definition */ -extern const struct { - uint8_t *b_s; /* Start address of non-initialized data section */ - uint8_t *b_e; /* End address of non-initialized data section */ -} _BTBL[] = { - { __sectop("B"), __secend("B") }, - { __sectop("B_2"), __secend("B_2") }, - { __sectop("B_1"), __secend("B_1") } -}; - -/* Section start */ -#pragma section - -/* CTBL prevents excessive output of L1100 messages when linking. - Even if CTBL is deleted, the operation of the program does not change. */ -uint8_t * const _CTBL[] = { - __sectop("C_1"), __sectop("C_2"), __sectop("C"), - __sectop("W_1"), __sectop("W_2"), __sectop("W") -}; - -/* Preprocessor directive */ -#pragma packoption - -/* This is to ensure compatibility with new L section in version 1.1 and up of the RXC compiler. Do not remove! */ -#pragma section C L -const unsigned long deadSpace = 0xDEADDEAD; -#pragma section - - diff --git a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/Renesas-Files/board/rdkrx63n/flash_options.c b/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/Renesas-Files/board/rdkrx63n/flash_options.c deleted file mode 100644 index a6be182d0..000000000 --- a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/Renesas-Files/board/rdkrx63n/flash_options.c +++ /dev/null @@ -1,124 +0,0 @@ -/*********************************************************************************************************************** -* DISCLAIMER -* This software is supplied by Renesas Electronics Corporation and is only intended for use with Renesas products. No -* other uses are authorized. This software is owned by Renesas Electronics Corporation and is protected under all -* applicable laws, including copyright laws. -* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING -* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, -* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED. TO THE MAXIMUM -* EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES -* SHALL BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON RELATED TO THIS -* SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. -* Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability of -* this software. By using this software, you agree to the additional terms and conditions found by accessing the -* following link: -* http://www.renesas.com/disclaimer -* -* Copyright (C) 2012 Renesas Electronics Corporation. All rights reserved. -***********************************************************************************************************************/ -/*********************************************************************************************************************** -* File Name : flash_options.c -* Device(s) : RX63x -* Description : Some options of the RX63x are set through registers that are found in ROM. These registers and options -* are defined in the 'Option-Setting Memory' section of the HW Manual. These memory locations are defined -* below with descriptions of what is being set. -***********************************************************************************************************************/ -/*********************************************************************************************************************** -* History : DD.MM.YYYY Version Description -* : 31.10.2011 1.00 First Release -* : 13.03.2012 1.10 USER_BOOT_ENABLE macro from r_bsp_config.h is now used to set Option-Setting Memory -* area to boot into User Boot Mode. -***********************************************************************************************************************/ - -/*********************************************************************************************************************** -Includes , "Project Includes" -***********************************************************************************************************************/ -/* Used for fixed-width typedefs. */ -#include -/* Determines whether user boot is used or not. */ -#include "platform.h" - -/* The UB Code A, UB Code B, and Endian select register B (MDEB) are located in the User Boot space. Immediately - following the MDEB register is the User Boot Reset Vector so it is defined below as well. These settings will only - be used when the MCU is reset in User Boot Mode. In order for the MCU to start up in User Boot Mode the following - conditions must be met: - 1) UB code A is 55736572h and 426F6F74h. - 2) UB code B is FFFF FF07h and 0008 C04Ch. - 3) The low level is being input on the MD pin. - 4) The high level is being input on the PC7 pin. - Please see the Option-Setting Memory section of your MCU's HW manual for more information. */ - -/* 0xFF7FFFE8 - 0xFF7FFFEF : UB Code A register - 0xFF7FFFF0 - 0xFF7FFFF7 : UB Code B register - 0xFF7FFFF8 - 0xFF7FFFFB : MDEB register - 0xFF7FFFFC - 0xFF7FFFFF : User Boot Reset Vector */ - -#pragma address user_boot_settings = 0xFF7FFFE8 - -#if USER_BOOT_ENABLE == 1 -extern void PowerON_Reset_PC(void); - -/* Use this array if you are using User Boot. Make sure to fill in valid address for UB Reset Vector. */ -const uint32_t user_boot_settings[6] = -{ - 0x55736572, //Required setting for UB Code A to get into User Boot - 0x426f6f74, //Required setting for UB Code A to get into User Boot - 0xffffff07, //Required setting for UB Code B to get into User Boot - 0x0008c04c, //Required setting for UB Code B to get into User Boot - /* Choose endian for user application code - MDEB Register - Endian Select Register B - b31:b3 Reserved (set to 1) - b2:b0 MDE - Endian Select (0 = Big Endian, 7 = Little Endian) */ - 0xFFFFFFFF, //Select Little Endian for User Boot Code - (uint32_t) PowerON_Reset_PC //This is the User Boot Reset Vector. When using User Boot put in the reset address here -}; -#endif - -/* The Endian select register S (MDES), Option function select register 1 (OFS1), and Option function select register 0 - (OFS0) are located in User ROM. */ - -/* 0xFFFFFF80 - 0xFFFFFF83 : MDES register - 0xFFFFFF84 - 0xFFFFFF87 : Reserved space (0xFF's) - 0xFFFFFF88 - 0xFFFFFF8B : OFS1 register - 0xFFFFFF8C - 0xFFFFFF8F : OFS0 register */ - -#pragma address flash_options = 0xFFFFFF80 - -const uint32_t flash_options[] = -{ - /* Choose endian for user application code - MDES Register - Endian Select Register S - b31:b3 Reserved (set to 1) - b2:b0 MDE - Endian Select (0 = Big Endian, 7 = Little Endian) */ - 0xFFFFFFFF, //Little Endian chosen for User Application - 0xFFFFFFFF, //Reserved space - /* Configure whether voltage detection 0 circuit and HOCO are enabled after reset. - OFS1 - Option Function Select Register 1 - b31:b9 Reserved (set to 1) - b8 HOCOEN - Enable/disable HOCO oscillation after a reset (0=enable, 1=disable) - b7:b3 Reserved (set to 1) - b2 LVDAS - Choose to enable/disable Voltage Detection 0 Circuit after a reset (0=enable, 1=disable) - b1:b0 Reserved (set to 1) */ - 0xFFFFFFFF, //Both are disabled. - /* Configure WDT and IWDT settings. - OFS0 - Option Function Select Register 0 - b31:b29 Reserved (set to 1) - b28 WDTRSTIRQS - WDT Reset Interrupt Request - What to do on underflow (0=take interrupt, 1=reset MCU) - b27:b26 WDTRPSS - WDT Window Start Position Select - (0=25%, 1=50%, 2=75%, 3=100%,don't use) - b25:b24 WDTRPES - WDT Window End Position Select - (0=75%, 1=50%, 2=25%, 3=0%,don't use) - b23:b20 WDTCKS - WDT Clock Frequency Division Ratio - (1=/4, 4=/64, 0xF=/128, 6=/512, 7=/2048, 8=/8192) - b19:b18 WDTTOPS - WDT Timeout Period Select - (0=1024 cycles, 1=4096, 2=8192, 3=16384) - b17 WDTSTRT - WDT Start Mode Select - (0=auto-start after reset, halt after reset) - b16:b15 Reserved (set to 1) - b14 IWDTSLCSTP - IWDT Sleep Mode Count Stop Control - (0=can't stop count, 1=stop w/some low power modes) - b13 Reserved (set to 1) - b12 IWDTRSTIRQS - IWDT Reset Interrupt Request - What to do on underflow (0=take interrupt, 1=reset MCU) - b11:b10 IWDTRPSS - IWDT Window Start Position Select - (0=25%, 1=50%, 2=75%, 3=100%,don't use) - b9:b8 IWDTRPES - IWDT Window End Position Select - (0=75%, 1=50%, 2=25%, 3=0%,don't use) - b7:b4 IWDTCKS - IWDT Clock Frequency Division Ratio - (0=none, 2=/16, 3 = /32, 4=/64, 0xF=/128, 5=/256) - b3:b2 IWDTTOPS - IWDT Timeout Period Select - (0=1024 cycles, 1=4096, 2=8192, 3=16384) - b1 IWDTSTRT - IWDT Start Mode Select - (0=auto-start after reset, halt after reset) - b0 Reserved (set to 1) */ - 0xFFFFFFFF -}; - diff --git a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/Renesas-Files/board/rdkrx63n/hwsetup.c b/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/Renesas-Files/board/rdkrx63n/hwsetup.c deleted file mode 100644 index 3871c679e..000000000 --- a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/Renesas-Files/board/rdkrx63n/hwsetup.c +++ /dev/null @@ -1,173 +0,0 @@ -/*********************************************************************************************************************** -* DISCLAIMER -* This software is supplied by Renesas Electronics Corporation and is only intended for use with Renesas products. No -* other uses are authorized. This software is owned by Renesas Electronics Corporation and is protected under all -* applicable laws, including copyright laws. -* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING -* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, -* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED. TO THE MAXIMUM -* EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES -* SHALL BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON RELATED TO THIS -* SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. -* Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability of -* this software. By using this software, you agree to the additional terms and conditions found by accessing the -* following link: -* http://www.renesas.com/disclaimer -* -* Copyright (C) 2012 Renesas Electronics Corporation. All rights reserved. -***********************************************************************************************************************/ -/*********************************************************************************************************************** -* File Name : hwsetup.c -* Device(s) : RX -* H/W Platform : YRDKRX63N -* Description : Defines the initialisation routines used each time the MCU is restarted. -***********************************************************************************************************************/ -/*********************************************************************************************************************** -* History : DD.MM.YYYY Version Description -* : 26.10.2011 1.00 First Release -***********************************************************************************************************************/ - -/*********************************************************************************************************************** -Includes , "Project Includes" -***********************************************************************************************************************/ -#include -/* I/O Register and board definitions */ -#include "platform.h" - -/*********************************************************************************************************************** -Private global variables and functions -***********************************************************************************************************************/ -/* MCU I/O port configuration function delcaration */ -static void output_ports_configure(void); - -/* Interrupt configuration function delcaration */ -static void interrupts_configure(void); - -/* MCU peripheral module configuration function declaration */ -static void peripheral_modules_enable(void); - - -/*********************************************************************************************************************** -* Function name: hardware_setup -* Description : Contains setup functions called at device restart -* Arguments : none -* Return value : none -***********************************************************************************************************************/ -void hardware_setup(void) -{ - output_ports_configure(); - interrupts_configure(); - peripheral_modules_enable(); -} - -/*********************************************************************************************************************** -* Function name: output_ports_configure -* Description : Configures the port and pin direction settings, and sets the pin outputs to a safe level. -* Arguments : none -* Return value : none -***********************************************************************************************************************/ -void output_ports_configure(void) -{ - SYSTEM.PRCR.WORD = 0xA50B; /* Protect off */ - MPC.PWPR.BIT.B0WI = 0 ; /* Unlock protection register */ - MPC.PWPR.BIT.PFSWE = 1 ; /* Unlock MPC registers */ - - MSTP(EDMAC) = 0 ; /* Power up ethernet block */ - - /* Port 0 - DAC & ethernet IRQ */ - PORT0.PODR.BYTE = 0x00 ; /* All outputs low to start */ - PORT0.PDR.BYTE = 0x10 ; /* DA1 is an ouput, all others are inputs */ - - /* Port 1 - I2C and USB over-current & pull-up control */ - PORT1.PODR.BYTE = 0x00 ; /* All outputs low to start */ - PORT1.PDR.BYTE = 0x80 ; /* AUD_R (P1.7) is an output, all others are inputs (I2C lines setup by - * I2C driver later */ - - /* Port 2 - USB control and some expansion signals */ - PORT2.PODR.BYTE = 0x02 ; /* All outputs low to start except backlight enable */ - PORT2.PDR.BYTE = 0x02 ; /* All inputs except backlight enable - some will be overridden by USB driver later */ - - /* Port 3 - Serial port & JTAG */ - PORT3.PODR.BYTE = 0x00 ; /* All outputs low to start */ - PORT3.PDR.BIT.B2 = 0x01 ; /* Transmit line for SCI6/ CAN 0 TxD is an output */ - - /* Port 4 - */ - PORT4.PODR.BYTE = 0x00 ; /* These are all inputs */ - PORT4.PDR.BYTE = 0x00 ; /* Analog inputs and switches, all inputs */ - PORT4.PMR.BYTE = 0x00 ; - - /* Port 5 - */ - PORT5.PODR.BYTE = 0x00 ; /* All outputs low to start */ - PORT5.PDR.BYTE = 0x13 ; /* SCI 2 TxD, LCD_RS, PWMLP_OUT are outputs */ - MPC.P50PFS.BYTE = 0x0A ; /* P50 is TXD2. */ - MPC.P52PFS.BYTE = 0x0A ; /* P52 is RXD2. */ - PORT5.PMR.BYTE = 0x05 ; /* P50 and P52 are used for SCI2. */ - - /* Port A - Ethernet MDIO */ - PORTA.PODR.BYTE = 0x00 ; /* */ - PORTA.PMR.BYTE = 0x00 ; /* All GPIO for now */ - MPC.PA3PFS.BYTE = 0x11 ; /* PA3 is RMII MDIO */ - MPC.PA4PFS.BYTE = 0x11 ; /* PA4 is RMII MDC */ - MPC.PA5PFS.BYTE = 0x11 ; /* PA5 is RMII LINK_STA */ - PORTA.PMR.BYTE = 0x38 ; /* PA3-5 are used by Ethernet peripheral */ - PORTA.PDR.BYTE = 0xFF ; /* */ - - /* Port B - Ethernet signals */ - PORTB.PODR.BYTE = 0x00 ; /* */ - PORTB.PMR.BYTE = 0x00 ; /* All GPIO for now */ - MPC.PB0PFS.BYTE = 0x12 ; /* PB0 is RMII_RXD1 */ - MPC.PB1PFS.BYTE = 0x12 ; /* PB1 is RMII_RXD0 */ - MPC.PB2PFS.BYTE = 0x12 ; /* PB2 is REF50CK */ - MPC.PB3PFS.BYTE = 0x12 ; /* PB3 is RMI_RX_ERR */ - MPC.PB4PFS.BYTE = 0x12 ; /* PB4 is RMII_TXD_EN */ - MPC.PB5PFS.BYTE = 0x12 ; /* PB5 is RMII_TXD0 */ - MPC.PB6PFS.BYTE = 0x12 ; /* PB6 is RMII_TXD1 */ - MPC.PB7PFS.BYTE = 0x12 ; /* PB7 is RMII_CRS_DV */ - PORTB.PMR.BYTE = 0xFF ; /* All pins assigned to peripheral */ - PORTB.PDR.BYTE = 0xF0 ; /* */ - - /* Port C - SPI signals, chip selects, peripheral reset */ - PORTC.PODR.BYTE = 0x00 ; /* */ - PORTC.PMR.BYTE = 0x00 ; /* All GPIO for now */ - MPC.PC5PFS.BYTE = 0x0D ; /* PC5 is RSPCKA */ - MPC.PC6PFS.BYTE = 0x0D ; /* PC6 is MOSIA */ - MPC.PC7PFS.BYTE = 0x0D ; /* PC7 is MISOA */ - PORTC.PMR.BYTE = 0xE0 ; /* PC5-7 assigned to SPI peripheral */ - PORTC.PODR.BYTE = 0x17 ; /* All outputs low to start */ - PORTC.PDR.BYTE = 0x7F ; /* All outputs except MISO */ - - - /* Port D - LED's */ - PORTD.PODR.BYTE = 0xFF ; /* All outputs LED's off */ - PORTD.PDR.BYTE = 0xFF ; /* All outputs */ - - /* Port E - LED's, WiFi & PMOD control */ - PORTE.PODR.BYTE = 0xFF ; /* All LED's off, all chip selects inactive */ - PORTE.PDR.BYTE = 0x7F ; /* All outputs except PMOD_MISO */ - - /* Port J - WiFi chip select */ - PORTJ.PODR.BYTE = 0x04 ; /* WiFi CS de-asserted at power up */ - PORTJ.PDR.BYTE = 0x04 ; /* WiFi CS is an output */ -} - -/*********************************************************************************************************************** -* Function name: interrupts_configure -* Description : Configures interrupts used -* Arguments : none -* Return value : none -***********************************************************************************************************************/ -void interrupts_configure(void) -{ - /* Add code here to setup additional interrupts */ -} - -/*********************************************************************************************************************** -* Function name: peripheral_modules_enable -* Description : Enables and configures peripheral devices on the MCU -* Arguments : none -* Return value : none -***********************************************************************************************************************/ -void peripheral_modules_enable(void) -{ - /* Add code here to enable peripherals used by the application */ -} diff --git a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/Renesas-Files/board/rdkrx63n/hwsetup.h b/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/Renesas-Files/board/rdkrx63n/hwsetup.h deleted file mode 100644 index b32dca7dc..000000000 --- a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/Renesas-Files/board/rdkrx63n/hwsetup.h +++ /dev/null @@ -1,42 +0,0 @@ -/*********************************************************************************************************************** -* DISCLAIMER -* This software is supplied by Renesas Electronics Corporation and is only intended for use with Renesas products. No -* other uses are authorized. This software is owned by Renesas Electronics Corporation and is protected under all -* applicable laws, including copyright laws. -* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING -* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, -* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED. TO THE MAXIMUM -* EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES -* SHALL BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON RELATED TO THIS -* SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. -* Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability of -* this software. By using this software, you agree to the additional terms and conditions found by accessing the -* following link: -* http://www.renesas.com/disclaimer -* -* Copyright (C) 2012 Renesas Electronics Corporation. All rights reserved. -***********************************************************************************************************************/ -/*********************************************************************************************************************** -* File Name : hwsetup.h -* Description : Hardware setup header file.. -***********************************************************************************************************************/ -/*********************************************************************************************************************** -* History : DD.MM.YYYY Version Description -* : 26.10.2011 1.00 First Release -***********************************************************************************************************************/ - -/*********************************************************************************************************************** -Macro definitions -***********************************************************************************************************************/ -/* Multiple inclusion prevention macro */ -#ifndef HWSETUP_H -#define HWSETUP_H - -/*********************************************************************************************************************** -Exported global functions (to be accessed by other files) -***********************************************************************************************************************/ -/* Hardware setup funtion declaration */ -void hardware_setup(void); - -/* End of multiple inclusion prevention macro */ -#endif \ No newline at end of file diff --git a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/Renesas-Files/board/rdkrx63n/lowlvl.src b/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/Renesas-Files/board/rdkrx63n/lowlvl.src deleted file mode 100644 index a75845e40..000000000 --- a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/Renesas-Files/board/rdkrx63n/lowlvl.src +++ /dev/null @@ -1,54 +0,0 @@ -;----------------------------------------------------------------------- -; -; FILE :lowlvl.src -; DATE :Wed, Jul 01, 2009 -; DESCRIPTION :Program of Low level -; CPU TYPE :RX -; -;----------------------------------------------------------------------- - .GLB _charput - .GLB _charget - -FC2E0 .EQU 00084080h -FE2C0 .EQU 00084090h -DBGSTAT .EQU 000840C0h -RXFL0EN .EQU 00001000h -TXFL0EN .EQU 00000100h - - .SECTION P,CODE - -;----------------------------------------------------------------------- -; _charput: -;----------------------------------------------------------------------- -_charput: - .STACK _charput = 00000000h -__C2ESTART: MOV.L #TXFL0EN,R3 - MOV.L #DBGSTAT,R4 -__TXLOOP: MOV.L [R4],R5 - AND R3,R5 - BNZ __TXLOOP -__WRITEFC2E0: MOV.L #FC2E0,R2 - MOV.L R1,[R2] -__CHARPUTEXIT: RTS - -;----------------------------------------------------------------------- -; _charget: -;----------------------------------------------------------------------- -_charget: - .STACK _charget = 00000000h -__E2CSTART: MOV.L #RXFL0EN,R3 - MOV.L #DBGSTAT,R4 -__RXLOOP: MOV.L [R4],R5 - AND R3,R5 - BZ __RXLOOP -__READFE2C0: MOV.L #FE2C0,R2 - MOV.L [R2],R1 -__CHARGETEXIT: RTS - -;----------------------------------------------------------------------- - -; End of conditional code - .END - - - diff --git a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/Renesas-Files/board/rdkrx63n/lowsrc.c b/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/Renesas-Files/board/rdkrx63n/lowsrc.c deleted file mode 100644 index ad9f32ce4..000000000 --- a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/Renesas-Files/board/rdkrx63n/lowsrc.c +++ /dev/null @@ -1,332 +0,0 @@ -/*********************************************************************************************************************** -* DISCLAIMER -* This software is supplied by Renesas Electronics Corporation and is only intended for use with Renesas products. No -* other uses are authorized. This software is owned by Renesas Electronics Corporation and is protected under all -* applicable laws, including copyright laws. -* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING -* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, -* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED. TO THE MAXIMUM -* EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES -* SHALL BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON RELATED TO THIS -* SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. -* Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability of -* this software. By using this software, you agree to the additional terms and conditions found by accessing the -* following link: -* http://www.renesas.com/disclaimer -* -* Copyright (C) 2012 Renesas Electronics Corporation. All rights reserved. -***********************************************************************************************************************/ -/*********************************************************************************************************************** -* File Name : lowsrc.c -* Description : Functions to support stream I/O -***********************************************************************************************************************/ -/*********************************************************************************************************************** -* History : DD.MM.YYYY Version Description -* : 26.10.2011 1.00 First Release -***********************************************************************************************************************/ -/*********************************************************************************************************************** -Includes , "Project Includes" -***********************************************************************************************************************/ -#include -#include -#include - -/*********************************************************************************************************************** -Macro definitions -***********************************************************************************************************************/ -/*Number of I/O Stream*/ -#define IOSTREAM 20 - -/* file number */ -#define STDIN 0 /* Standard input (console) */ -#define STDOUT 1 /* Standard output (console) */ -#define STDERR 2 /* Standard error output (console) */ - -#define FLMIN 0 /* Minimum file number */ -#define _MOPENR 0x1 -#define _MOPENW 0x2 -#define _MOPENA 0x4 -#define _MTRUNC 0x8 -#define _MCREAT 0x10 -#define _MBIN 0x20 -#define _MEXCL 0x40 -#define _MALBUF 0x40 -#define _MALFIL 0x80 -#define _MEOF 0x100 -#define _MERR 0x200 -#define _MLBF 0x400 -#define _MNBF 0x800 -#define _MREAD 0x1000 -#define _MWRITE 0x2000 -#define _MBYTE 0x4000 -#define _MWIDE 0x8000 -/* File Flags */ -#define O_RDONLY 0x0001 /* Read only */ -#define O_WRONLY 0x0002 /* Write only */ -#define O_RDWR 0x0004 /* Both read and Write */ -#define O_CREAT 0x0008 /* A file is created if it is not existed */ -#define O_TRUNC 0x0010 /* The file size is changed to 0 if it is existed. */ -#define O_APPEND 0x0020 /* The position is set for next reading/writing */ - /* 0: Top of the file 1: End of file */ - -/* Special character code */ -#define CR 0x0d /* Carriage return */ -#define LF 0x0a /* Line feed */ - -#if defined( __RX ) -const long _nfiles = IOSTREAM; /* The number of files for input/output files */ -#else -const int _nfiles = IOSTREAM; /* The number of files for input/output files */ -#endif -char flmod[IOSTREAM]; /* The location for the mode of opened file. */ - -unsigned char sml_buf[IOSTREAM]; - -#define FPATH_STDIN "C:\\stdin" -#define FPATH_STDOUT "C:\\stdout" -#define FPATH_STDERR "C:\\stderr" - -/* H8 Normal mode ,SH and RX */ -#if defined( __2000N__ ) || defined( __2600N__ ) || defined( __300HN__ ) || defined( _SH ) -/* Output one character to standard output */ -extern void charput(char); -/* Input one character from standard input */ -extern char charget(void); -/* Output one character to the file */ -extern char fcharput(char, unsigned char); -/* Input one character from the file */ -extern char fcharget(char*, unsigned char); -/* Open the file */ -extern char fileopen(char*, unsigned char, unsigned char*); -/* Close the file */ -extern char fileclose(unsigned char); -/* Move the file offset */ -extern char fpseek(unsigned char, long, unsigned char); -/* Get the file offset */ -extern char fptell(unsigned char, long*); - -/* RX */ -#elif defined( __RX ) -/* Output one character to standard output */ -extern void charput(unsigned char); -/* Input one character from standard input */ -extern unsigned char charget(void); - -/* H8 Advanced mode */ -#elif defined( __2000A__ ) || defined( __2600A__ ) || defined( __300HA__ ) || defined( __H8SXN__ ) || defined( __H8SXA__ ) || defined( __H8SXM__ ) || defined( __H8SXX__ ) -/* Output one character to standard output */ -extern void charput(char); -/* Input one character from standard input */ -extern char charget(void); -/* Output one character to the file */ -extern char fcharput(char, unsigned char); -/* Input one character from the file */ -extern char fcharget(char*, unsigned char); -/* Open the file */ -/* Specified as the number of register which stored paramter is 3 */ -extern char __regparam3 fileopen(char*, unsigned char, unsigned char*); -/* Close the file */ -extern char fileclose(unsigned char); -/* Move the file offset */ -extern char fpseek(unsigned char, long, unsigned char); -/* Get the file offset */ -extern char fptell(unsigned char, long*); - -/* H8300 and H8300L */ -#elif defined( __300__ ) || defined( __300L__ ) -/* Output one character to standard output */ -extern void charput(char); -/* Input one character from standard input */ -extern char charget(void); -/* Output one character to the file */ -extern char fcharput(char, unsigned char); -/* Input one character from the file */ -extern char fcharget(char*, unsigned char); -/* Open the file */ -/* Specified as the number of register which stored paramter is 3 */ -extern char __regparam3 fileopen(char*, unsigned char, unsigned char*); -/* Close the file */ -extern char fileclose(unsigned char); -/* Move the file offset */ -/* Move the file offset */ -extern char __regparam3 fpseek(unsigned char, long, unsigned char); -/* Get the file offset */ -extern char fptell(unsigned char, long*); -#endif - -#include -FILE *_Files[IOSTREAM]; // structure for FILE -char *env_list[] = { // Array for environment variables(**environ) - "ENV1=temp01", - "ENV2=temp02", - "ENV9=end", - '\0' // Terminal for environment variables -}; - -char **environ = env_list; - -/****************************************************************************/ -/* _INIT_IOLIB */ -/* Initialize C library Functions, if necessary. */ -/* Define USES_SIMIO on Assembler Option. */ -/****************************************************************************/ -void _INIT_IOLIB( void ) -{ - /* A file for standard input/output is opened or created. Each FILE */ - /* structure members are initialized by the library. Each _Buf member */ - /* in it is re-set the end of buffer pointer. */ - - /* Standard Input File */ - if( freopen( FPATH_STDIN, "r", stdin ) == NULL ) - stdin->_Mode = 0xffff; /* Not allow the access if it fails to open */ - stdin->_Mode = _MOPENR; /* Read only attribute */ - stdin->_Mode |= _MNBF; /* Non-buffering for data */ - stdin->_Bend = stdin->_Buf + 1; /* Re-set pointer to the end of buffer */ - - /* Standard Output File */ - if( freopen( FPATH_STDOUT, "w", stdout ) == NULL ) - stdout->_Mode = 0xffff; /* Not allow the access if it fails to open */ - stdout->_Mode |= _MNBF; /* Non-buffering for data */ - stdout->_Bend = stdout->_Buf + 1;/* Re-set pointer to the end of buffer */ - - /* Standard Error File */ - if( freopen( FPATH_STDERR, "w", stderr ) == NULL ) - stderr->_Mode = 0xffff; /* Not allow the access if it fails to open */ - stderr->_Mode |= _MNBF; /* Non-buffering for data */ - stderr->_Bend = stderr->_Buf + 1;/* Re-set pointer to the end of buffer */ -} - -/****************************************************************************/ -/* _CLOSEALL */ -/****************************************************************************/ -void _CLOSEALL( void ) -{ - long i; - - for( i=0; i < _nfiles; i++ ) - { - /* Checks if the file is opened or not */ - if( _Files[i]->_Mode & (_MOPENR | _MOPENW | _MOPENA ) ) - fclose( _Files[i] ); /* Closes the file */ - } -} - -/**************************************************************************/ -/* open:file open */ -/* Return value:File number (Pass) */ -/* -1 (Failure) */ -/**************************************************************************/ -#if defined( __RX ) -long open(const char *name, /* File name */ - long mode, /* Open mode */ - long flg) /* Open flag */ -#else -int open(char *name, /* File name */ - int mode, /* Open mode */ - int flg) /* Open flag */ -#endif -{ - - - if( strcmp( name, FPATH_STDIN ) == 0 ) /* Standard Input file? */ - { - if( ( mode & O_RDONLY ) == 0 ) return -1; - flmod[STDIN] = mode; - return STDIN; - } - else if( strcmp( name, FPATH_STDOUT ) == 0 )/* Standard Output file? */ - { - if( ( mode & O_WRONLY ) == 0 ) return -1; - flmod[STDOUT] = mode; - return STDOUT; - } - else if(strcmp(name, FPATH_STDERR ) == 0 ) /* Standard Error file? */ - { - if( ( mode & O_WRONLY ) == 0 ) return -1; - flmod[STDERR] = mode; - return STDERR; - } - else return -1; /*Others */ -} - -#if defined( __RX ) -long close( long fileno ) -#else -int close( int fileno ) -#endif -{ - return 1; -} - -/**************************************************************************/ -/* write:Data write */ -/* Return value:Number of write characters (Pass) */ -/* -1 (Failure) */ -/**************************************************************************/ -#if defined( __RX ) -long write(long fileno, /* File number */ - const unsigned char *buf, /* The address of destination buffer */ - long count) /* The number of chacter to write */ -#else -int write(int fileno, /* File number */ - char *buf, /* The address of destination buffer */ - int count) /* The number of chacter to write */ -#endif -{ - long i; /* A variable for counter */ - unsigned char c; /* An output character */ - - /* Checking the mode of file , output each character */ - /* Checking the attribute for Write-Only, Read-Only or Read-Write */ - if(flmod[fileno]&O_WRONLY || flmod[fileno]&O_RDWR) - { - if( fileno == STDIN ) return -1; /* Standard Input */ - else if( (fileno == STDOUT) || (fileno == STDERR) ) - /* Standard Error/output */ - { - for( i = count; i > 0; --i ) - { - c = *buf++; - charput(c); - } - return count; /*Return the number of written characters */ - } - else return -1; /* Incorrect file number */ - } - else return -1; /* An error */ -} - -#if defined( __RX ) -long read( long fileno, unsigned char *buf, long count ) -#else -int read( int fileno, char *buf, unsigned int count ) -#endif -{ - long i; - - /* Checking the file mode with the file number, each character is input and stored the buffer */ - - if((flmod[fileno]&_MOPENR) || (flmod[fileno]&O_RDWR)){ - for(i = count; i > 0; i--){ - *buf = charget(); - if(*buf==CR){ /* Replace the new line character */ - *buf = LF; - } - buf++; - } - return count; - } - else { - return -1; - } -} - -#if defined( __RX ) -long lseek( long fileno, long offset, long base ) -#else -long lseek( int fileno, long offset, int base ) -#endif -{ - return -1L; -} - diff --git a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/Renesas-Files/board/rdkrx63n/mcu_info.h b/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/Renesas-Files/board/rdkrx63n/mcu_info.h deleted file mode 100644 index 5702209bc..000000000 --- a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/Renesas-Files/board/rdkrx63n/mcu_info.h +++ /dev/null @@ -1,59 +0,0 @@ -/*********************************************************************************************************************** -* DISCLAIMER -* This software is supplied by Renesas Electronics Corporation and is only intended for use with Renesas products. No -* other uses are authorized. This software is owned by Renesas Electronics Corporation and is protected under all -* applicable laws, including copyright laws. -* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING -* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, -* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED. TO THE MAXIMUM -* EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES -* SHALL BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON RELATED TO THIS -* SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. -* Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability of -* this software. By using this software, you agree to the additional terms and conditions found by accessing the -* following link: -* http://www.renesas.com/disclaimer -* -* Copyright (C) 2012 Renesas Electronics Corporation. All rights reserved. -***********************************************************************************************************************/ -/*********************************************************************************************************************** -* File Name : mcu_info.h -* Device(s) : RX -* H/W Platform : YRDKRX63N -* Description : Information about the MCU on this board (RDKRX63N). -***********************************************************************************************************************/ -/*********************************************************************************************************************** -* History : DD.MM.YYYY Version Description -* : 26.10.2011 1.00 First Release -* : 13.03.2012 1.10 System clock speeds are now calculated from macros in r_bsp_config.h. -***********************************************************************************************************************/ - -#ifndef _MCU_INFO -#define _MCU_INFO - -/* MCU that is used. */ -#define MCU_RX63N (1) - -/* Package. */ -#define PACKAGE_LQFP100 (1) - -/* Memory size of your MCU. */ -#define ROM_SIZE_BYTES (1048576) -#define RAM_SIZE_BYTES (131072) -#define DF_SIZE_BYTES (32768) - -/* System clock speed in Hz. */ -#define ICLK_HZ (((XTAL_HZ/PLL_DIV) * PLL_MUL) / ICK_DIV) -/* Peripheral Module Clock A speed in Hz. Used for ETHERC and EDMAC. */ -#define PCLKA_HZ (((XTAL_HZ/PLL_DIV) * PLL_MUL) / PCKA_DIV) -/* Peripheral Module Clock B speed in Hz. */ -#define PCLKB_HZ (((XTAL_HZ/PLL_DIV) * PLL_MUL) / PCKB_DIV) -/* External bus clock speed in Hz. */ -#define BCLK_HZ (((XTAL_HZ/PLL_DIV) * PLL_MUL) / BCK_DIV) -/* FlashIF clock speed in Hz. */ -#define FCLK_HZ (((XTAL_HZ/PLL_DIV) * PLL_MUL) / FCK_DIV) -/* USB clock speed in Hz. */ -#define UCLK_HZ (((XTAL_HZ/PLL_DIV) * PLL_MUL) / UCK_DIV) - -#endif /* _MCU_INFO */ - diff --git a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/Renesas-Files/board/rdkrx63n/r_bsp.h b/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/Renesas-Files/board/rdkrx63n/r_bsp.h deleted file mode 100644 index 4958b20eb..000000000 --- a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/Renesas-Files/board/rdkrx63n/r_bsp.h +++ /dev/null @@ -1,54 +0,0 @@ -/*********************************************************************************************************************** -* DISCLAIMER -* This software is supplied by Renesas Electronics Corporation and is only intended for use with Renesas products. No -* other uses are authorized. This software is owned by Renesas Electronics Corporation and is protected under all -* applicable laws, including copyright laws. -* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING -* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, -* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED. TO THE MAXIMUM -* EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES -* SHALL BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON RELATED TO THIS -* SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. -* Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability of -* this software. By using this software, you agree to the additional terms and conditions found by accessing the -* following link: -* http://www.renesas.com/disclaimer -* -* Copyright (C) 2012 Renesas Electronics Corporation. All rights reserved. -***********************************************************************************************************************/ -/*********************************************************************************************************************** -* File Name : r_bsp.h -* H/W Platform : RDKRX63N -* Description : Has the header files that should be included for this platform. -***********************************************************************************************************************/ -/*********************************************************************************************************************** -* History : DD.MM.YYYY Version Description -* : 13.01.2012 1.00 First Release -* : 12.03.2012 1.10 Added locking.h and r_bsp_config.h #includes. Removed sbrk.h since heap size is not -* defined in r_bsp_config.h. -***********************************************************************************************************************/ - -#ifndef PLATFORM_BOARD_RDKRX63N -#define PLATFORM_BOARD_RDKRX63N - -/* Make sure that no other platforms have already been defined. Do not touch this! */ -#ifdef PLATFORM_DEFINED -#error "Error - Multiple platforms defined in platform.h!" -#else -#define PLATFORM_DEFINED -#endif - -/*********************************************************************************************************************** -INCLUDE APPROPRIATE MCU AND BOARD FILES -***********************************************************************************************************************/ -#include "r_bsp_config.h" -#include ".\mcu\rx63n\iodefine.h" -#include ".\board\rdkrx63n\yrdkrx63n.h" -#include ".\board\rdkrx63n\mcu_info.h" -#include ".\board\rdkrx63n\hwsetup.h" -/* #include ".\board\rdkrx63n\lcd.h" The LCD is not used yet. */ -/* #include ".\board\rdkrx63n\locking.h" Locking is not used. */ - -#endif /* PLATFORM_BOARD_RDKRX63N */ - - diff --git a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/Renesas-Files/board/rdkrx63n/r_bsp_config_reference.h b/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/Renesas-Files/board/rdkrx63n/r_bsp_config_reference.h deleted file mode 100644 index 0b00618ef..000000000 --- a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/Renesas-Files/board/rdkrx63n/r_bsp_config_reference.h +++ /dev/null @@ -1,149 +0,0 @@ -/*********************************************************************************************************************** -* DISCLAIMER -* This software is supplied by Renesas Electronics Corporation and is only intended for use with Renesas products. No -* other uses are authorized. This software is owned by Renesas Electronics Corporation and is protected under all -* applicable laws, including copyright laws. -* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING -* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, -* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED. TO THE MAXIMUM -* EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES -* SHALL BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON RELATED TO THIS -* SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. -* Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability of -* this software. By using this software, you agree to the additional terms and conditions found by accessing the -* following link: -* http://www.renesas.com/disclaimer -* -* Copyright (C) 2012 Renesas Electronics Corporation. All rights reserved. -***********************************************************************************************************************/ -/*********************************************************************************************************************** -* File Name : r_bsp_config_reference.c -* Device(s) : RX63x -* Description : The file r_bsp_config.h is used to configure your BSP. r_bsp_config.h should be included -* somewhere in your package so that the r_bsp code has access to it. This file (r_bsp_config_reference.h) -* is just a reference file that the user can use to make their own r_bsp_config.h file. -************************************************************************************************************************ -* History : DD.MM.YYYY Version Description -* : 13.03.2012 1.00 First Release -***********************************************************************************************************************/ -#ifndef R_BSP_CONFIG_REF_HEADER_FILE -#define R_BSP_CONFIG_REF_HEADER_FILE - -/*********************************************************************************************************************** -Configuration Options -***********************************************************************************************************************/ -/* The 'BSP_DECLARE_STACK' macro is checked so that the stack is only declared in one place (resetprg.c). Every time a - '#pragma stacksize' is encountered, the stack size is increased. This prevents multiplication of stack size. */ -#if defined(BSP_DECLARE_STACK) -/* User Stack size in bytes. The Renesas RX toolchain sets the stack size using the #pragma stacksize directive. */ -#pragma stacksize su=0x1000 -/* Interrupt Stack size in bytes. The Renesas RX toolchain sets the stack size using the #pragma stacksize directive. */ -#pragma stacksize si=0x400 -#endif - -/* Heap size in bytes. */ -#define HEAP_BYTES (0x400) - -/* After reset MCU will operate in Supervisor mode. To switch to User mode, set this macro to '1'. For more information - on the differences between these 2 modes see the CPU >> Processor Mode section of your MCU's hardware manual. - 0 = Stay in Supervisor mode. - 1 = Switch to User mode. -*/ -#define RUN_IN_USER_MODE (0) - -/* To get into User Boot Mode the user must control some pins on the MCU and also set some values in ROM. These values - in ROM are described in the Option-Setting Memory section of the hardware manual. This macro sets these values so - that User Boot Mode can be used. The user is still responsible for setting the MCU pins appropriately. - 0 = Single-Chip or USB Boot Mode - 1 = User Boot Mode -*/ -#define USER_BOOT_ENABLE (0) - -/* Set your desired ID code. NOTE, leave at the default (all 0xFF's) if you do not wish to use an ID code. If you set - this value and program it into the MCU then you will need to remember the ID code because the debugger will ask for - it when trying to connect. Note that the E1/E20 will ignore the ID code when programming the MCU during debugging. - If you set this value and then forget it then you can clear the ID code by connecting up in serial boot mode using - FDT. The ID Code is 16 bytes long. The macro below define the ID Code in 4-byte sections. */ -/* Lowest 4-byte section, address 0xFFFFFFA0. From MSB to LSB: Control Code, ID code 1, ID code 2, ID code 3. */ -#define ID_CODE_LONG_1 (0xFFFFFFFF) -/* 2nd ID Code section, address 0xFFFFFFA4. From MSB to LSB: ID code 4, ID code 5, ID code 6, ID code 7. */ -#define ID_CODE_LONG_2 (0xFFFFFFFF) -/* 3rd ID Code section, address 0xFFFFFFA8. From MSB to LSB: ID code 8, ID code 9, ID code 10, ID code 11. */ -#define ID_CODE_LONG_3 (0xFFFFFFFF) -/* 4th ID Code section, address 0xFFFFFFAC. From MSB to LSB: ID code 12, ID code 13, ID code 14, ID code 15. */ -#define ID_CODE_LONG_4 (0xFFFFFFFF) - -/* This macro lets other modules no if a RTOS is being used. - 0 = RTOS is not used. - 1 = RTOS is used. -*/ -#define RTOS_USED (0) - -/* Clock source select (CKSEL). - 0 = Low Speed On-Chip Oscillator (LOCO) - 1 = High Speed On-Chip Oscillator (HOCO) - 2 = Main Clock Oscillator - 3 = Sub-Clock Oscillator - 4 = PLL Circuit -*/ -#define CLOCK_SOURCE (4) - -/* Clock configuration options. - The input clock frequency is specified and then the system clocks are set by specifying the multipliers used. The - multiplier settings are used to set the clock registers in resetprg.c. If a 12MHz clock is used and the - ICLK is 96MHz, PCLKA is 48MHz, PCLKB is 48MHz, FCLK is 48MHz, USB Clock is 48MHz, and BCLK is 12MHz then the - settings would be: - - XTAL_HZ = 12000000 - PLL_DIV = 1 (no division) - PLL_MUL = 16 (12MHz x 16 = 192MHz) - ICK_DIV = 2 : System Clock (ICLK) = (((XTAL_HZ/PLL_DIV) * PLL_MUL) / ICK_DIV) = 96MHz - PCKA_DIV = 4 : Peripheral Clock A (PCLKA) = (((XTAL_HZ/PLL_DIV) * PLL_MUL) / PCKA_DIV) = 48MHz - PCKB_DIV = 4 : Peripheral Clock B (PCLKB) = (((XTAL_HZ/PLL_DIV) * PLL_MUL) / PCKB_DIV) = 48MHz - FCK_DIV = 4 : Flash IF Clock (FCLK) = (((XTAL_HZ/PLL_DIV) * PLL_MUL) / FCK_DIV) = 48MHz - BCK_DIV = 8 : External Bus Clock (BCK) = (((XTAL_HZ/PLL_DIV) * PLL_MUL) / BCK_DIV) = 24MHz - UCK_DIV = 4 : USB Clock (UCLK) = (((XTAL_HZ/PLL_DIV) * PLL_MUL) / UCK_DIV) = 48MHz -*/ -/* XTAL - Input clock frequency in Hz */ -#define XTAL_HZ (12000000) -/* PLL Input Frequency Divider Select (PLIDIV). - Available divisors = /1 (no division), /2, /4 -*/ -#define PLL_DIV (1) -/* PLL Frequency Multiplication Factor Select (STC). - Available multipliers = x8, x10, x12, x16, x20, x24, x25, x50 -*/ -#define PLL_MUL (16) -/* System Clock Divider (ICK). - Available divisors = /1 (no division), /2, /4, /8, /16, /32, /64 -*/ -#define ICK_DIV (2) -/* Peripheral Module Clock A Divider (PCKA). - Available divisors = /1 (no division), /2, /4, /8, /16, /32, /64 -*/ -#define PCKA_DIV (4) -/* Peripheral Module Clock B Divider (PCKB). - Available divisors = /1 (no division), /2, /4, /8, /16, /32, /64 -*/ -#define PCKB_DIV (4) -/* External Bus Clock Divider (BCK). - Available divisors = /1 (no division), /2, /4, /8, /16, /32, /64 -*/ -#define BCK_DIV (8) -/* Flash IF Clock Divider (FCK). - Available divisors = /1 (no division), /2, /4, /8, /16, /32, /64 -*/ -#define FCK_DIV (4) -/* IEBUS Clock Divider Select. - Available divisors = /1 (no division), /2, /4, /6, /8, /16, /32, /64 -*/ -#define IEBCK_DIV (8) -/* USB Clock Divider Select. - Available divisors = /3, /4 -*/ -#define UCK_DIV (4) - -#endif /* R_BSP_CONFIG_REF_HEADER_FILE */ - - - diff --git a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/Renesas-Files/board/rdkrx63n/resetprg.c b/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/Renesas-Files/board/rdkrx63n/resetprg.c deleted file mode 100644 index a8d08b9c0..000000000 --- a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/Renesas-Files/board/rdkrx63n/resetprg.c +++ /dev/null @@ -1,409 +0,0 @@ -/*********************************************************************************************************************** -* DISCLAIMER -* This software is supplied by Renesas Electronics Corporation and is only intended for use with Renesas products. No -* other uses are authorized. This software is owned by Renesas Electronics Corporation and is protected under all -* applicable laws, including copyright laws. -* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING -* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, -* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED. TO THE MAXIMUM -* EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES -* SHALL BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON RELATED TO THIS -* SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. -* Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability of -* this software. By using this software, you agree to the additional terms and conditions found by accessing the -* following link: -* http://www.renesas.com/disclaimer -* -* Copyright (C) 2012 Renesas Electronics Corporation. All rights reserved. -***********************************************************************************************************************/ -/*********************************************************************************************************************** -* File Name : resetprg.c -* Device(s) : RX63x -* Description : Defines post-reset routines that are used to configure the MCU prior to the main program starting. -* This is were the program counter starts on power-up or reset. -***********************************************************************************************************************/ -/*********************************************************************************************************************** -* History : DD.MM.YYYY Version Description -* : 26.10.2011 1.00 First Release -* : 13.03.2012 1.10 Stack sizes are now defined in r_bsp_config.h. Because of this the #include for -* stacksct.h was removed. Settings for SCKCR are now set in r_bsp_config.h and used here -* to setup clocks based on user settings. -***********************************************************************************************************************/ - -/*********************************************************************************************************************** -Includes , "Project Includes" -***********************************************************************************************************************/ -/* Defines machine level functions used in this file */ -#include -/* Defines MCU configuration functions used in this file */ -#include <_h_c_lib.h> -/* Defines standard variable types used in this file */ -#include -#include - -/* This macro is here so that the stack will be declared here. This is used to prevent multiplication of stack size. */ -#define BSP_DECLARE_STACK -/* Define the target platform */ -#include "platform.h" - -/*********************************************************************************************************************** -Macro definitions -***********************************************************************************************************************/ -#define PSW_init (0x00030000) -#define FPSW_init (0x00000100) - -/*********************************************************************************************************************** -Pre-processor Directives -***********************************************************************************************************************/ -/* Declare the contents of the function 'Change_PSW_PM_to_UserMode' as - assembler to the compiler */ -#pragma inline_asm Change_PSW_PM_to_UserMode - -/* Set this as the entry point from a power-on reset */ -#pragma entry PowerON_Reset_PC - -/*********************************************************************************************************************** -External function Prototypes -***********************************************************************************************************************/ -/* Functions to setup I/O library */ -extern void _INIT_IOLIB(void); -extern void _CLOSEALL(void); - -/*********************************************************************************************************************** -Private global variables and functions -***********************************************************************************************************************/ -/* Power-on reset function declaration */ -void PowerON_Reset_PC(void); - -#if RUN_IN_USER_MODE==1 - #if __RENESAS_VERSION__ < 0x01010000 - /* MCU usermode switcher function declaration */ - static void Change_PSW_PM_to_UserMode(void); - #endif -#endif - -/* Main program function delcaration */ -void main(void); -static void operating_frequency_set(void); - -/*********************************************************************************************************************** -* Function name: PowerON_Reset_PC -* Description : This function is the MCU's entry point from a power-on reset. -* The following steps are taken in the startup code: -* 1. The User Stack Pointer (USP) and Interrupt Stack Pointer (ISP) are both set immediately after entry -* to this function. The USP and ISP stack sizes are set in the file stacksct.h. -* Default sizes are USP=4K and ISP=1K. -* 2. The interrupt vector base register is set to point to the beginning of the relocatable interrupt -* vector table. -* 3. The MCU is setup for floating point operations by setting the initial value of the Floating Point -* Status Word (FPSW). -* 4. The MCU operating frequency is set by configuring the Clock Generation Circuit (CGC) in -* operating_frequency_set. -* 5. Calls are made to functions to setup the C runtime environment which involves initializing all -* initialed data, zeroing all uninitialized variables, and configuring STDIO if used -* (calls to _INITSCT and _INIT_IOLIB). -* 6. Board-specific hardware setup, including configuring I/O pins on the MCU, in hardware_setup. -* 7. Global interrupts are enabled by setting the I bit in the Program Status Word (PSW), and the stack -* is switched from the ISP to the USP. The initial Interrupt Priority Level is set to zero, enabling -* any interrupts with a priority greater than zero to be serviced. -* 8. The processor is optionally switched to user mode. To run in user mode, set the macro -* RUN_IN_USER_MODE above to a 1. -* 9. The bus error interrupt is enabled to catch any accesses to invalid or reserved areas of memory. -* -* Once this initialization is complete, the user's main() function is called. It should not return. -* Arguments : none -* Return value : none -***********************************************************************************************************************/ -void PowerON_Reset_PC(void) -{ - /* Stack pointers are setup prior to calling this function - see comments above */ - - /* Initialise the MCU processor word */ -#if __RENESAS_VERSION__ >= 0x01010000 - set_intb((void *)__sectop("C$VECT")); -#else - set_intb((unsigned long)__sectop("C$VECT")); -#endif - - /* Initialize FPSW for floating-point operations */ -#ifdef __ROZ -#define _ROUND 0x00000001 /* Let FPSW RMbits=01 (round to zero) */ -#else -#define _ROUND 0x00000000 /* Let FPSW RMbits=00 (round to nearest) */ -#endif -#ifdef __DOFF -#define _DENOM 0x00000100 /* Let FPSW DNbit=1 (denormal as zero) */ -#else -#define _DENOM 0x00000000 /* Let FPSW DNbit=0 (denormal as is) */ -#endif - set_fpsw(FPSW_init | _ROUND | _DENOM); - - /* Switch to high-speed operation */ - operating_frequency_set(); - - /* Initialize C runtime environment */ - _INITSCT(); - - /* Comment this out if not using I/O lib - _INIT_IOLIB(); */ - - /* Configure the MCU and YRDK hardware */ - hardware_setup(); - - /* Change the MCU's usermode from supervisor to user */ - nop(); - set_psw(PSW_init); -#if RUN_IN_USER_MODE==1 - /* Use chg_pmusr() intrinsic if possible. */ - #if __RENESAS_VERSION__ >= 0x01010000 - chg_pmusr() ; - #else - Change_PSW_PM_to_UserMode(); - #endif -#endif - - - /* Enable the bus error interrupt to catch accesses to illegal/reserved areas of memory */ - /* The ISR for this interrupt can be found in vecttbl.c in the function "bus_error_isr" */ - /* Clear any pending interrupts */ - IR(BSC,BUSERR) = 0; - /* Make this the highest priority interrupt (adjust as necessary for your application */ - IPR(BSC,BUSERR) = 0x0F; - /* Enable the interrupt in the ICU*/ - IEN(BSC,BUSERR) = 1; - /* Enable illegal address interrupt in the BSC */ - BSC.BEREN.BIT.IGAEN = 1; - - /* Call the main program function (should not return) */ - main(); - - /* Comment this out if not using I/O lib - cleans up open files */ - _CLOSEALL(); - - while(1) - { - /* Infinite loop. Put a breakpoint here if you want to catch an exit of main(). */ - } -} - -/*********************************************************************************************************************** -* Function name: operating_frequency_set -* Description : Configures the clock settings for each of the device clocks -* Arguments : none -* Return value : none -***********************************************************************************************************************/ -void operating_frequency_set(void) -{ - /* Used for constructing value to write to SCKCR register. */ - uint32_t temp_clock = 0; - - /* - Clock Description Frequency - ---------------------------------------- - Input Clock Frequency............ 12 MHz - PLL frequency (x16).............. 192 MHz - Internal Clock Frequency......... 96 MHz - Peripheral Clock Frequency....... 48 MHz - USB Clock Frequency.............. 48 MHz - External Bus Clock Frequency..... 24 MHz */ - - volatile unsigned int i; - - /* Protect off. */ - SYSTEM.PRCR.WORD = 0xA50B; - - /* Uncomment if not using sub-clock */ - //SYSTEM.SOSCCR.BYTE = 0x01; /* stop sub-clock */ - SYSTEM.SOSCCR.BYTE = 0x00; /* Enable sub-clock for RTC */ - - /* Wait 131,072 cycles * 12 MHz = 10.9 ms */ - SYSTEM.MOSCWTCR.BYTE = 0x0D; - - /* PLL wait is 4,194,304 cycles (default) * 192 MHz (12 MHz * 16) = 20.1 ms*/ - SYSTEM.PLLWTCR.BYTE = 0x0F; - - /* Set PLL Input Divisor. */ - SYSTEM.PLLCR.BIT.PLIDIV = PLL_DIV >> 1; - - /* Set PLL Multiplier. */ - SYSTEM.PLLCR.BIT.STC = PLL_MUL - 1; - - /* EXTAL ON */ - SYSTEM.MOSCCR.BYTE = 0x00; - - /* PLL ON */ - SYSTEM.PLLCR2.BYTE = 0x00; - - for(i = 0;i< 0x168;i++) - { - /* Wait over 12ms */ - nop() ; - } - - /* Figure out setting for FCK bits. */ -#if FCK_DIV == 1 - /* Do nothing since FCK bits should be 0. */ -#elif FCK_DIV == 2 - temp_clock |= 0x10000000; -#elif FCK_DIV == 4 - temp_clock |= 0x20000000; -#elif FCK_DIV == 8 - temp_clock |= 0x30000000; -#elif FCK_DIV == 16 - temp_clock |= 0x40000000; -#elif FCK_DIV == 32 - temp_clock |= 0x50000000; -#elif FCK_DIV == 64 - temp_clock |= 0x60000000; -#else - #error "Error! Invalid setting for FCK_DIV in r_bsp_config.h" -#endif - - /* Figure out setting for ICK bits. */ -#if ICK_DIV == 1 - /* Do nothing since ICK bits should be 0. */ -#elif ICK_DIV == 2 - temp_clock |= 0x01000000; -#elif ICK_DIV == 4 - temp_clock |= 0x02000000; -#elif ICK_DIV == 8 - temp_clock |= 0x03000000; -#elif ICK_DIV == 16 - temp_clock |= 0x04000000; -#elif ICK_DIV == 32 - temp_clock |= 0x05000000; -#elif ICK_DIV == 64 - temp_clock |= 0x06000000; -#else - #error "Error! Invalid setting for ICK_DIV in r_bsp_config.h" -#endif - - /* SDCLK Pin Output and BCLK Pin Output are disabled by default. */ - temp_clock |= 0x00C00000; - - /* Figure out setting for BCK bits. */ -#if BCK_DIV == 1 - /* Do nothing since BCK bits should be 0. */ -#elif BCK_DIV == 2 - temp_clock |= 0x00010000; -#elif BCK_DIV == 4 - temp_clock |= 0x00020000; -#elif BCK_DIV == 8 - temp_clock |= 0x00030000; -#elif BCK_DIV == 16 - temp_clock |= 0x00040000; -#elif BCK_DIV == 32 - temp_clock |= 0x00050000; -#elif BCK_DIV == 64 - temp_clock |= 0x00060000; -#else - #error "Error! Invalid setting for BCK_DIV in r_bsp_config.h" -#endif - - /* Figure out setting for PCKA bits. */ -#if PCKA_DIV == 1 - /* Do nothing since PCKA bits should be 0. */ -#elif PCKA_DIV == 2 - temp_clock |= 0x00001000; -#elif PCKA_DIV == 4 - temp_clock |= 0x00002000; -#elif PCKA_DIV == 8 - temp_clock |= 0x00003000; -#elif PCKA_DIV == 16 - temp_clock |= 0x00004000; -#elif PCKA_DIV == 32 - temp_clock |= 0x00005000; -#elif PCKA_DIV == 64 - temp_clock |= 0x00006000; -#else - #error "Error! Invalid setting for PCKA_DIV in r_bsp_config.h" -#endif - - /* Figure out setting for PCKB bits. */ -#if PCKB_DIV == 1 - /* Do nothing since PCKB bits should be 0. */ -#elif PCKB_DIV == 2 - temp_clock |= 0x00000100; -#elif PCKB_DIV == 4 - temp_clock |= 0x00000200; -#elif PCKB_DIV == 8 - temp_clock |= 0x00000300; -#elif PCKB_DIV == 16 - temp_clock |= 0x00000400; -#elif PCKB_DIV == 32 - temp_clock |= 0x00000500; -#elif PCKB_DIV == 64 - temp_clock |= 0x00000600; -#else - #error "Error! Invalid setting for PCKB_DIV in r_bsp_config.h" -#endif - - /* Bottom byte of SCKCR register must be set to 0x11 */ - temp_clock |= 0x00000011; - - /* Set SCKCR register. */ - SYSTEM.SCKCR.LONG = temp_clock; - - /* Re-init temp_clock to use to set SCKCR2. */ - temp_clock = 0; - - /* Figure out setting for IEBCK bits. */ -#if IEBCK_DIV == 2 - temp_clock |= 0x00000001; -#elif IEBCK_DIV == 4 - temp_clock |= 0x00000002; -#elif IEBCK_DIV == 6 - temp_clock |= 0x0000000C; -#elif IEBCK_DIV == 8 - temp_clock |= 0x00000003; -#elif IEBCK_DIV == 16 - temp_clock |= 0x00000004; -#elif IEBCK_DIV == 32 - temp_clock |= 0x00000005; -#elif IEBCK_DIV == 64 - temp_clock |= 0x00000006; -#else - #error "Error! Invalid setting for IEBCK_DIV in r_bsp_config.h" -#endif - - /* Figure out setting for UCK bits. */ -#if UCK_DIV == 3 - temp_clock |= 0x00000020; -#elif UCK_DIV == 4 - temp_clock |= 0x00000030; -#else - #error "Error! Invalid setting for UCK_DIV in r_bsp_config.h" -#endif - - /* Set SCKCR2 register. */ - SYSTEM.SCKCR2.WORD = (uint16_t)temp_clock; - - /* Choose clock source. Default for r_bsp_config.h is PLL. */ - SYSTEM.SCKCR3.WORD = ((uint16_t)CLOCK_SOURCE) << 8; - - /* Protect on. */ - SYSTEM.PRCR.WORD = 0xA500; -} - -/*********************************************************************************************************************** -* Function name: Change_PSW_PM_to_UserMode -* Description : Assembler function, used to change the MCU's usermode from supervisor to user. -* Arguments : none -* Return value : none -***********************************************************************************************************************/ -#if RUN_IN_USER_MODE==1 - #if __RENESAS_VERSION__ < 0x01010000 -static void Change_PSW_PM_to_UserMode(void) -{ - MVFC PSW,R1 - OR #00100000h,R1 - PUSH.L R1 - MVFC PC,R1 - ADD #10,R1 - PUSH.L R1 - RTE - NOP - NOP -} - #endif -#endif \ No newline at end of file diff --git a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/Renesas-Files/board/rdkrx63n/sbrk.c b/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/Renesas-Files/board/rdkrx63n/sbrk.c deleted file mode 100644 index ef29b3190..000000000 --- a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/Renesas-Files/board/rdkrx63n/sbrk.c +++ /dev/null @@ -1,96 +0,0 @@ -/*********************************************************************************************************************** -* DISCLAIMER -* This software is supplied by Renesas Electronics Corporation and is only intended for use with Renesas products. No -* other uses are authorized. This software is owned by Renesas Electronics Corporation and is protected under all -* applicable laws, including copyright laws. -* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING -* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, -* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED. TO THE MAXIMUM -* EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES -* SHALL BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON RELATED TO THIS -* SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. -* Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability of -* this software. By using this software, you agree to the additional terms and conditions found by accessing the -* following link: -* http://www.renesas.com/disclaimer -* -* Copyright (C) 2012 Renesas Electronics Corporation. All rights reserved. -***********************************************************************************************************************/ -/*********************************************************************************************************************** -* File Name : sbrk.c -* Device(s) : RX -* Description : Configures the MCU heap memory. The size of the heap is defined by the macro HEAPSIZE below. -***********************************************************************************************************************/ -/*********************************************************************************************************************** -* History : DD.MM.YYYY Version Description -* : 26.10.2011 1.00 First Release -* : 12.03.2012 1.10 Heap size is now defined in r_bsp_config.h, not sbrk.h. -***********************************************************************************************************************/ -/*********************************************************************************************************************** -Includes , "Project Includes" -***********************************************************************************************************************/ -/* Provides standard definitions used in this file */ -#include -/* Defines standard input/output functions used in this file */ -#include -/* Defines standard variable types used in this file */ -#include -/* Used for getting HEAP_BYTES macro. */ -#include "platform.h" - -/*********************************************************************************************************************** -Macro definitions -***********************************************************************************************************************/ - -/*********************************************************************************************************************** -Function Prototypes -***********************************************************************************************************************/ -/* Memory allocation function prototype declaration */ -int8_t *sbrk(size_t size); - -/*********************************************************************************************************************** -Global Variables -***********************************************************************************************************************/ -//const size_t _sbrk_size= /* Specifies the minimum unit of */ -/* the defined heap area */ -extern int8_t *_s1ptr; - -union HEAP_TYPE -{ - int32_t dummy; /* Dummy for 4-byte boundary */ - int8_t heap[HEAP_BYTES]; /* Declaration of the area managed by sbrk*/ -}; -/* Declare memory heap area */ -static union HEAP_TYPE heap_area; -/* End address allocated by sbrk */ -static int8_t *brk=(int8_t *)&heap_area; - -/*********************************************************************************************************************** -* Function name: sbrk -* Description : This function configures MCU memory area allocation. -* Arguments : size - -* assigned area size -* Return value : Start address of allocated area (pass) -* -1 (failure) -***********************************************************************************************************************/ -int8_t *sbrk(size_t size) -{ - int8_t *p; - - if (brk+size > heap_area.heap+HEAP_BYTES) - { - /* Empty area size */ - p = (int8_t *)-1; - } - else - { - /* Area assignment */ - p = brk; - - /* End address update */ - brk += size; - } - - /* Return result */ - return p; -} diff --git a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/Renesas-Files/board/rdkrx63n/vecttbl.c b/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/Renesas-Files/board/rdkrx63n/vecttbl.c deleted file mode 100644 index e528b1fd5..000000000 --- a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/Renesas-Files/board/rdkrx63n/vecttbl.c +++ /dev/null @@ -1,186 +0,0 @@ -/*********************************************************************************************************************** -* DISCLAIMER -* This software is supplied by Renesas Electronics Corporation and is only intended for use with Renesas products. No -* other uses are authorized. This software is owned by Renesas Electronics Corporation and is protected under all -* applicable laws, including copyright laws. -* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING -* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, -* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED. TO THE MAXIMUM -* EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES -* SHALL BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON RELATED TO THIS -* SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. -* Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability of -* this software. By using this software, you agree to the additional terms and conditions found by accessing the -* following link: -* http://www.renesas.com/disclaimer -* -* Copyright (C) 2012 Renesas Electronics Corporation. All rights reserved. -***********************************************************************************************************************/ -/*********************************************************************************************************************** -* File Name : vecttbl.c -* Device(s) : RX -* Description : Definition of the fixed vector table -***********************************************************************************************************************/ -/*********************************************************************************************************************** -* History : DD.MM.YYYY Version Description -* : 26.10.2011 1.00 First Release -* : 17.02.2012 1.10 Made function names compliant with CS v4.0 -* : 13.03.2012 1.20 ID Code is now specified in r_bsp_config.h. It is still used here in Fixed_Vectors[]. -***********************************************************************************************************************/ - -/*********************************************************************************************************************** -Includes , "Project Includes" -***********************************************************************************************************************/ -#include -#include -#include "platform.h" - -/*********************************************************************************************************************** -* Function name: PowerON_Reset_PC -* Description : The reset vector points to this function. Code execution starts in this function after reset. -* Arguments : none -* Return value : none -***********************************************************************************************************************/ -extern void PowerON_Reset_PC(void); - -/*********************************************************************************************************************** -* Function name: excep_supervisor_inst_isr -* Description : Supervisor Instruction Violation ISR -* Arguments : none -* Return Value : none -***********************************************************************************************************************/ -#pragma interrupt (excep_supervisor_inst_isr) -void excep_supervisor_inst_isr(void) -{ - /* Add your own code here to handle this exception */ - nop(); -} - -/*********************************************************************************************************************** -* Function name: excep_undefined_inst_isr -* Description : Undefined instruction exception ISR -* Arguments : none -* Return Value : none -***********************************************************************************************************************/ -#pragma interrupt (excep_undefined_inst_isr) -void excep_undefined_inst_isr(void) -{ - /* Add your own code here to handle this exception */ - nop(); -} - -/*********************************************************************************************************************** -* Function name: excep_floating_point_isr -* Description : Floating point exception ISR -* Arguments : none -* Return Value : none -***********************************************************************************************************************/ -#pragma interrupt (excep_floating_point_isr) -void excep_floating_point_isr(void) -{ - /* Add your own code here to handle this exception */ - nop(); -} - -/*********************************************************************************************************************** -* Function name: non_maskable_isr -* Description : Non-maskable interrupt ISR -* Arguments : none -* Return Value : none -***********************************************************************************************************************/ -#pragma interrupt (non_maskable_isr) -void non_maskable_isr(void) -{ - /* Add your own code here to handle this exception */ - nop(); -} - -/*********************************************************************************************************************** -* Function name: undefined_interrupt_source_isr -* Description : All undefined interrupt vectors point to this function. -* Set a breakpoint in this function to determine which source is creating unwanted interrupts. -* Arguments : none -* Return Value : none -***********************************************************************************************************************/ -#pragma interrupt (undefined_interrupt_source_isr) -void undefined_interrupt_source_isr(void) -{ - /* Add your own code here to handle this exception */ - nop(); -} - -/*********************************************************************************************************************** -* Function name: bus_error_isr -* Description : By default, this demo code enables the Bus Error Interrupt. This interrupt will fire if the user tries -* to access code or data from one of the reserved areas in the memory map, including the areas covered -* by disabled chip selects. A nop() statement is included here as a convenient place to set a breakpoint -* during debugging and development, and further handling should be added by the user for their -* application. -* Arguments : none -* Return value : none -***********************************************************************************************************************/ -#pragma interrupt (bus_error_isr(vect=VECT(BSC,BUSERR))) -void bus_error_isr (void) -{ - /* - To find the address that was accessed when the bus error occured, read the register BSC.BERSR2.WORD. The upper - 13 bits of this register contain the upper 13-bits of the offending address (in 512K byte units) - */ - - /* Add your own code here to handle this interrupt */ - nop(); -} - -/*********************************************************************************************************************** -* The following array fills in the fixed vector table and the code -* protecction ID bytes. -***********************************************************************************************************************/ -#pragma section C FIXEDVECT - -void* const Fixed_Vectors[] = { - -/* 0xffffff90 through 0xffffff9f: Reserved area - must be all 0xFF */ - (void *)0xFFFFFFFF, /* 0xffffff90 - Reserved */ - (void *)0xFFFFFFFF, /* 0xffffff94 - Reserved */ - (void *)0xFFFFFFFF, /* 0xffffff98 - Reserved */ - -/* The 32-bit area immediately below (0xffffff9c through 0xffffff9f) is a special area that allows the ROM to be - protected from reading or writing by a parallel programmer. Please refer to the HW manual for appropriate settings. - The default (all 0xff) places no restrictions and therefore allows reads and writes by a parallel programmer. */ - (void *)0xFFFFFFFF, /* 0xffffff9C - ROM Code Protection */ - -/* The memory are immediately below (0xffffffa0 through 0xffffffaf) is a special area that allows the on-chip firmware - to be protected. See the section "ID Code Protection" in the HW manual for details on how to enable protection. - Setting the four long words below to non-0xFF values will enable protection. Do this only after carefully review - the HW manual */ - -/* 0xffffffA0 through 0xffffffaf: ID Code Protection. The ID code is specified using macros in r_bsp_config.h. */ - (void *) ID_CODE_LONG_1, /* 0xffffffA0 - Control code and ID code */ - (void *) ID_CODE_LONG_2, /* 0xffffffA4 - ID code (cont.) */ - (void *) ID_CODE_LONG_3, /* 0xffffffA8 - ID code (cont.) */ - (void *) ID_CODE_LONG_4, /* 0xffffffAC - ID code (cont.) */ - -/* 0xffffffB0 through 0xffffffcf: Reserved area */ - (void *) 0xFFFFFFFF, /* 0xffffffB0 - Reserved */ - (void *) 0xFFFFFFFF, /* 0xffffffB4 - Reserved */ - (void *) 0xFFFFFFFF, /* 0xffffffB8 - Reserved */ - (void *) 0xFFFFFFFF, /* 0xffffffBC - Reserved */ - (void *) 0xFFFFFFFF, /* 0xffffffC0 - Reserved */ - (void *) 0xFFFFFFFF, /* 0xffffffC4 - Reserved */ - (void *) 0xFFFFFFFF, /* 0xffffffC8 - Reserved */ - (void *) 0xFFFFFFFF, /* 0xffffffCC - Reserved */ - -/* Fixed vector table */ - (void *) excep_supervisor_inst_isr, /* 0xffffffd0 Exception(Supervisor Instruction) */ - (void *) undefined_interrupt_source_isr, /* 0xffffffd4 Reserved */ - (void *) undefined_interrupt_source_isr, /* 0xffffffd8 Reserved */ - (void *) excep_undefined_inst_isr, /* 0xffffffdc Exception(Undefined Instruction) */ - (void *) undefined_interrupt_source_isr, /* 0xffffffe0 Reserved */ - (void *) excep_floating_point_isr, /* 0xffffffe4 Exception(Floating Point) */ - (void *) undefined_interrupt_source_isr, /* 0xffffffe8 Reserved */ - (void *) undefined_interrupt_source_isr, /* 0xffffffec Reserved */ - (void *) undefined_interrupt_source_isr, /* 0xfffffff0 Reserved */ - (void *) undefined_interrupt_source_isr, /* 0xfffffff4 Reserved */ - (void *) non_maskable_isr, /* 0xfffffff8 NMI */ - (void *) PowerON_Reset_PC /* 0xfffffffc RESET */ -}; diff --git a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/Renesas-Files/board/rdkrx63n/yrdkrx63n.h b/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/Renesas-Files/board/rdkrx63n/yrdkrx63n.h deleted file mode 100644 index f1b693efc..000000000 --- a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/Renesas-Files/board/rdkrx63n/yrdkrx63n.h +++ /dev/null @@ -1,118 +0,0 @@ -/*********************************************************************************************************************** -* DISCLAIMER -* This software is supplied by Renesas Electronics Corporation and is only intended for use with Renesas products. No -* other uses are authorized. This software is owned by Renesas Electronics Corporation and is protected under all -* applicable laws, including copyright laws. -* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING -* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, -* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED. TO THE MAXIMUM -* EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES -* SHALL BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON RELATED TO THIS -* SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. -* Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability of -* this software. By using this software, you agree to the additional terms and conditions found by accessing the -* following link: -* http:/*www.renesas.com/disclaimer -* -* Copyright (C) 2012 Renesas Electronics Corporation. All rights reserved. -***********************************************************************************************************************/ -/*********************************************************************************************************************** -* File Name : yrdkrx63n.h -* H/W Platform : YRDKRX63N -* Description : Board specific definitions for the RDKRX63N. -***********************************************************************************************************************/ -/*********************************************************************************************************************** -* History : DD.MM.YYYY Version Description -* : 30.11.2011 1.00 First Release -***********************************************************************************************************************/ - -#ifndef RDK_RX63N_H -#define RDK_RX63N_H - - -/* Local defines */ -#define LED_ON (0) -#define LED_OFF (1) - -/* I/0 port 1 */ -#define USB_VBUSEN PORT1.PODR.BIT.B6 -#define AUDIO_OUT_R PORT1.PODR.BIT.B7 - -/* I/0 port 2 */ -#define BL_ENA PORT2.PODR.BIT.B1 -#define USB_DPUPEA PORT2.PODR.BIT.B3 - -/* I/O port 3 */ -#define CAN_WIFI_TX PORT3.PODR.BIT.B2 - -/* I/O port 4: switches and various peripherals */ -#define SW_ACTIVE (0) -#define SW1 PORT4.PIDR.BIT.B0 -#define SW1_PMR PORT4.PMR.BIT.B0 -#define SW1_PDR PORT4.PDR.BIT.B0 -#define SW2 PORT4.PIDR.BIT.B1 -#define SW2_PMR PORT4.PMR.BIT.B1 -#define SW2_PDR PORT4.PDR.BIT.B1 -#define POTENTIOMETER PORT4.PODR.BIT.B2 -#define JN1_AN3 PORT4.PODR.BIT.B3 -#define SW3 PORT4.PIDR.BIT.B4 -#define SW3_PMR PORT4.PMR.BIT.B4 -#define SW3_PDR PORT4.PDR.BIT.B4 -#define MICROPHONE PORT4.PODR.BIT.B5 -#define AUDIO_IN_R PORT4.PODR.BIT.B6 -#define PWMLP_IN PORT4.PODR.BIT.B7 - -/* I/O port 5 */ -#define LCD_RS PORT5.PODR.BIT.B1 -#define BCLK PORT5.PODR.BIT.B3 -#define PWMLP_OUT PORT5.PODR.BIT.B4 - -/* I/O port A: Extension slot (JN2) and E/N pins */ -#define JN2_SSLA1_B PORTA.PODR.BIT.B0 -#define PMOD1_PIN8 PORTA.PODR.BIT.B1 -#define AMP_SHDN PORTA.PODR.BIT.B2 -#define ETH_MDIO PORTA.PODR.BIT.B3 -#define ETH_MDC PORTA.PODR.BIT.B4 -#define ETH_LINK PORTA.PODR.BIT.B5 - -/* I/O port B: Ethernet I/O pins definitions */ -#define RMII_RXD1 PORTB.PODR.BIT.B0 -#define RMII_RXD0 PORTB.PODR.BIT.B1 -#define ETH_CLK PORTB.PODR.BIT.B2 -#define RMII_RX_ER PORTB.PODR.BIT.B3 -#define RMII_TX_EN PORTB.PODR.BIT.B4 -#define RMII_TXD0 PORTB.PODR.BIT.B5 -#define RMII_TXD1 PORTB.PODR.BIT.B6 -#define ETH_CRS PORTB.PODR.BIT.B7 - -/* I/O port C: RSPI and peripheral I/O pins definitions */ -#define RSPI_CHANNEL_0 0 -#define RSPI_CHANNEL_1 1 -#define FLASH_CS PORTC.PODR.BIT.B0 /* SSL 1 */ -#define AUDIO_OUT_L PORTC.PODR.BIT.B1 -#define LCD_CS PORTC.PODR.BIT.B2 /* SSL 3 */ -#define LCD_RESET PORTC.PODR.BIT.B3 -#define SDMICRO_CS PORTC.PODR.BIT.B4 /* SSL 0 */ -#define RSPI_SCLOCK PORTC.PODR.BIT.B5 -#define RSPI_MOSI PORTC.PODR.BIT.B6 -#define RSPI_MISO PORTC.PODR.BIT.B7 - -/* I/O ports D & E: LEDs */ -#define LED4 PORTD.PODR.BIT.B5 -#define LED5 PORTE.PODR.BIT.B3 -#define LED6 PORTD.PODR.BIT.B2 -#define LED7 PORTE.PODR.BIT.B0 -#define LED8 PORTD.PODR.BIT.B4 -#define LED9 PORTE.PODR.BIT.B2 -#define LED10 PORTD.PODR.BIT.B1 -#define LED11 PORTD.PODR.BIT.B7 -#define LED12 PORTD.PODR.BIT.B3 -#define LED13 PORTE.PODR.BIT.B1 -#define LED14 PORTD.PODR.BIT.B0 -#define LED15 PORTD.PODR.BIT.B6 - -/* WiFi chip select */ -#define WIFI_CS PORTJ.PODR.BIT.B3 - -#endif /* RDK_RX63N_H */ - diff --git a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/Renesas-Files/mcu/rx63n/iodefine.h b/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/Renesas-Files/mcu/rx63n/iodefine.h deleted file mode 100644 index a543fba63..000000000 --- a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/Renesas-Files/mcu/rx63n/iodefine.h +++ /dev/null @@ -1,12106 +0,0 @@ -/***********************************************************************/ -/* */ -/* FILE :iodefine.h */ -/* DATE :Mon, Jul 11, 2011 */ -/* DESCRIPTION :Definition of I/O Register */ -/* CPU TYPE :RX63N */ -/* */ -/* This file is generated by Renesas Project Generator (Ver.4.52). */ -/* NOTE:THIS IS A TYPICAL EXAMPLE. */ -/* */ -/***********************************************************************/ -/************************************************************************ -* -* Device : RX/RX600/RX63N -* -* File Name : ioedfine.h -* -* Abstract : Definition of I/O Register. -* -* History : 0.50 (2011-03-28) [Hardware Manual Revision : 0.50] -* : 0.02 (2010-11-01) [Hardware Manual Revision : 0.01] -* -* NOTE : THIS IS A TYPICAL EXAMPLE. -* -* Copyright (C) 2010(2011) Renesas Electronics Corporation -* and Renesas Solutions Corp. -* -************************************************************************/ -/********************************************************************************/ -/* */ -/* DESCRIPTION : Definition of ICU Register */ -/* CPU TYPE : RX63N */ -/* */ -/* Usage : IR,DTCER,IER,IPR of ICU Register */ -/* The following IR, DTCE, IEN, IPR macro functions simplify usage. */ -/* The bit access operation is "Bit_Name(interrupt source,name)". */ -/* A part of the name can be omitted. */ -/* for example : */ -/* IR(TPU0,TGI0A) = 0; expands to : */ -/* ICU.IR[126].BIT.IR = 0; */ -/* */ -/* DTCE(ICU,IRQ0) = 1; expands to : */ -/* ICU.DTCER[64].BIT.DTCE = 1; */ -/* */ -/* IEN(CMT0,CMI0) = 1; expands to : */ -/* ICU.IER[0x03].BIT.IEN4 = 1; */ -/* */ -/* IPR(TPU0,TGI0A) = 2; expands to : */ -/* IPR(TPU0,TGI ) = 2; // TGI0A,TGI0B,TGI0C,TGI0D share IPR level. */ -/* ICU.IPR[126].BIT.IPR = 2; */ -/* */ -/* IPR(SCI0,RXI0) = 3; expands to : */ -/* IPR(SCI0, ) = 3; // SCI0 uses single IPR for all sources. */ -/* ICU.IPR[214].BIT.IPR = 3; */ -/* */ -/* Usage : #pragma interrupt Function_Identifier(vect=**) */ -/* The number of vector is "(interrupt source, name)". */ -/* for example : */ -/* #pragma interrupt INT_IRQ0(vect=VECT(ICU,IRQ0)) expands to : */ -/* #pragma interrupt INT_IRQ0(vect=64) */ -/* #pragma interrupt INT_CMT0_CMI0(vect=VECT(CMT0,CMI0)) expands to : */ -/* #pragma interrupt INT_CMT0_CMI0(vect=28) */ -/* #pragma interrupt INT_MTU0_TGIA0(vect=VECT(MTU0,TGIA0)) expands to : */ -/* #pragma interrupt INT_MTU0_TGIA0(vect=142) */ -/* #pragma interrupt INT_TPU0_TGI0A(vect=VECT(TPU0,TGI0A)) expands to : */ -/* #pragma interrupt INT_TPU0_TGI0A(vect=126) */ -/* */ -/* Usage : MSTPCRA,MSTPCRB,MSTPCRC of SYSTEM Register */ -/* The bit access operation is "MSTP(name)". */ -/* The name that can be used is a macro name defined with "iodefine.h". */ -/* for example : */ -/* MSTP(TMR2) = 0; // TMR2,TMR3,TMR23 expands to : */ -/* SYSTEM.MSTPCRA.BIT.MSTPA4 = 0; */ -/* MSTP(SCI0) = 0; // SCI0,SMCI0 expands to : */ -/* SYSTEM.MSTPCRB.BIT.MSTPB31 = 0; */ -/* MSTP(MTU4) = 0; // MTU,MTU0,MTU1,MTU2,MTU3,MTU4,MTU5 expands to : */ -/* SYSTEM.MSTPCRA.BIT.MSTPA9 = 0; */ -/* MSTP(TPU4) = 0; // TPU0,TPU1,TPU2,TPU3,TPU4,TPU5 expands to : */ -/* SYSTEM.MSTPCRA.BIT.MSTPA13 = 0; */ -/* MSTP(CMT3) = 0; // CMT2,CMT3 expands to : */ -/* SYSTEM.MSTPCRA.BIT.MSTPA14 = 0; */ -/* */ -/* */ -/********************************************************************************/ -#ifndef __RX63NIODEFINE_HEADER__ -#define __RX63NIODEFINE_HEADER__ -#pragma bit_order left -#pragma unpack -struct st_ad { - unsigned short ADDRA; - unsigned short ADDRB; - unsigned short ADDRC; - unsigned short ADDRD; - unsigned short ADDRE; - unsigned short ADDRF; - unsigned short ADDRG; - unsigned short ADDRH; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ADIE:1; - unsigned char ADST:1; - unsigned char :2; - unsigned char CH:3; - } BIT; - } ADCSR; - union { - unsigned char BYTE; - struct { - unsigned char TRGS:3; - unsigned char :1; - unsigned char CKS:2; - unsigned char MODE:2; - } BIT; - } ADCR; - union { - unsigned char BYTE; - struct { - unsigned char DPSEL:1; - unsigned char EXOEN:1; - unsigned char EXSEL:2; - } BIT; - } ADCR2; - unsigned char ADSSTR; - char wk0[11]; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char DIAG:2; - } BIT; - } ADDIAGR; -}; - -struct st_bsc { - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char STSCLR:1; - } BIT; - } BERCLR; - char wk0[3]; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char TOEN:1; - unsigned char IGAEN:1; - } BIT; - } BEREN; - char wk1[3]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char MST:3; - unsigned char :2; - unsigned char TO:1; - unsigned char IA:1; - } BIT; - } BERSR1; - char wk2[1]; - union { - unsigned short WORD; - struct { - unsigned short ADDR:13; - } BIT; - } BERSR2; - char wk3[4]; - union { - unsigned short WORD; - struct { - unsigned short :2; - unsigned short BPEB:2; - unsigned short BPFB:2; - unsigned short BPHB:2; - unsigned short BPGB:2; - unsigned short BPIB:2; - unsigned short BPRO:2; - unsigned short BPRA:2; - } BIT; - } BUSPRI; - char wk4[7408]; - union { - unsigned short WORD; - struct { - unsigned short PRMOD:1; - unsigned short :5; - unsigned short PWENB:1; - unsigned short PRENB:1; - unsigned short :4; - unsigned short EWENB:1; - unsigned short :2; - unsigned short WRMOD:1; - } BIT; - } CS0MOD; - union { - unsigned long LONG; - struct { - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - unsigned long CSWWAIT:5; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSPWWAIT:3; - } BIT; - } CS0WCR1; - union { - unsigned long LONG; - struct { - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long RDON:3; - unsigned long :2; - unsigned long AWAIT:2; - unsigned long :1; - unsigned long WDOFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long CSROFF:3; - } BIT; - } CS0WCR2; - char wk5[6]; - union { - unsigned short WORD; - struct { - unsigned short PRMOD:1; - unsigned short :5; - unsigned short PWENB:1; - unsigned short PRENB:1; - unsigned short :4; - unsigned short EWENB:1; - unsigned short :2; - unsigned short WRMOD:1; - } BIT; - } CS1MOD; - union { - unsigned long LONG; - struct { - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - unsigned long CSWWAIT:5; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSPWWAIT:3; - } BIT; - } CS1WCR1; - union { - unsigned long LONG; - struct { - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long RDON:3; - unsigned long :2; - unsigned long AWAIT:2; - unsigned long :1; - unsigned long WDOFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long CSROFF:3; - } BIT; - } CS1WCR2; - char wk6[6]; - union { - unsigned short WORD; - struct { - unsigned short PRMOD:1; - unsigned short :5; - unsigned short PWENB:1; - unsigned short PRENB:1; - unsigned short :4; - unsigned short EWENB:1; - unsigned short :2; - unsigned short WRMOD:1; - } BIT; - } CS2MOD; - union { - unsigned long LONG; - struct { - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - unsigned long CSWWAIT:5; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSPWWAIT:3; - } BIT; - } CS2WCR1; - union { - unsigned long LONG; - struct { - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long RDON:3; - unsigned long :2; - unsigned long AWAIT:2; - unsigned long :1; - unsigned long WDOFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long CSROFF:3; - } BIT; - } CS2WCR2; - char wk7[6]; - union { - unsigned short WORD; - struct { - unsigned short PRMOD:1; - unsigned short :5; - unsigned short PWENB:1; - unsigned short PRENB:1; - unsigned short :4; - unsigned short EWENB:1; - unsigned short :2; - unsigned short WRMOD:1; - } BIT; - } CS3MOD; - union { - unsigned long LONG; - struct { - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - unsigned long CSWWAIT:5; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSPWWAIT:3; - } BIT; - } CS3WCR1; - union { - unsigned long LONG; - struct { - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long RDON:3; - unsigned long :2; - unsigned long AWAIT:2; - unsigned long :1; - unsigned long WDOFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long CSROFF:3; - } BIT; - } CS3WCR2; - char wk8[6]; - union { - unsigned short WORD; - struct { - unsigned short PRMOD:1; - unsigned short :5; - unsigned short PWENB:1; - unsigned short PRENB:1; - unsigned short :4; - unsigned short EWENB:1; - unsigned short :2; - unsigned short WRMOD:1; - } BIT; - } CS4MOD; - union { - unsigned long LONG; - struct { - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - unsigned long CSWWAIT:5; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSPWWAIT:3; - } BIT; - } CS4WCR1; - union { - unsigned long LONG; - struct { - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long RDON:3; - unsigned long :2; - unsigned long AWAIT:2; - unsigned long :1; - unsigned long WDOFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long CSROFF:3; - } BIT; - } CS4WCR2; - char wk9[6]; - union { - unsigned short WORD; - struct { - unsigned short PRMOD:1; - unsigned short :5; - unsigned short PWENB:1; - unsigned short PRENB:1; - unsigned short :4; - unsigned short EWENB:1; - unsigned short :2; - unsigned short WRMOD:1; - } BIT; - } CS5MOD; - union { - unsigned long LONG; - struct { - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - unsigned long CSWWAIT:5; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSPWWAIT:3; - } BIT; - } CS5WCR1; - union { - unsigned long LONG; - struct { - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long RDON:3; - unsigned long :2; - unsigned long AWAIT:2; - unsigned long :1; - unsigned long WDOFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long CSROFF:3; - } BIT; - } CS5WCR2; - char wk10[6]; - union { - unsigned short WORD; - struct { - unsigned short PRMOD:1; - unsigned short :5; - unsigned short PWENB:1; - unsigned short PRENB:1; - unsigned short :4; - unsigned short EWENB:1; - unsigned short :2; - unsigned short WRMOD:1; - } BIT; - } CS6MOD; - union { - unsigned long LONG; - struct { - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - unsigned long CSWWAIT:5; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSPWWAIT:3; - } BIT; - } CS6WCR1; - union { - unsigned long LONG; - struct { - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long RDON:3; - unsigned long :2; - unsigned long AWAIT:2; - unsigned long :1; - unsigned long WDOFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long CSROFF:3; - } BIT; - } CS6WCR2; - char wk11[6]; - union { - unsigned short WORD; - struct { - unsigned short PRMOD:1; - unsigned short :5; - unsigned short PWENB:1; - unsigned short PRENB:1; - unsigned short :4; - unsigned short EWENB:1; - unsigned short :2; - unsigned short WRMOD:1; - } BIT; - } CS7MOD; - union { - unsigned long LONG; - struct { - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - unsigned long CSWWAIT:5; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSPWWAIT:3; - } BIT; - } CS7WCR1; - union { - unsigned long LONG; - struct { - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long RDON:3; - unsigned long :2; - unsigned long AWAIT:2; - unsigned long :1; - unsigned long WDOFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long CSROFF:3; - } BIT; - } CS7WCR2; - char wk12[1926]; - union { - unsigned short WORD; - struct { - unsigned short :3; - unsigned short MPXEN:1; - unsigned short :3; - unsigned short EMODE:1; - unsigned short :2; - unsigned short BSIZE:2; - unsigned short :3; - unsigned short EXENB:1; - } BIT; - } CS0CR; - char wk13[6]; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - unsigned short RRCV:4; - } BIT; - } CS0REC; - char wk14[6]; - union { - unsigned short WORD; - struct { - unsigned short :3; - unsigned short MPXEN:1; - unsigned short :3; - unsigned short EMODE:1; - unsigned short :2; - unsigned short BSIZE:2; - unsigned short :3; - unsigned short EXENB:1; - } BIT; - } CS1CR; - char wk15[6]; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - unsigned short RRCV:4; - } BIT; - } CS1REC; - char wk16[6]; - union { - unsigned short WORD; - struct { - unsigned short :3; - unsigned short MPXEN:1; - unsigned short :3; - unsigned short EMODE:1; - unsigned short :2; - unsigned short BSIZE:2; - unsigned short :3; - unsigned short EXENB:1; - } BIT; - } CS2CR; - char wk17[6]; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - unsigned short RRCV:4; - } BIT; - } CS2REC; - char wk18[6]; - union { - unsigned short WORD; - struct { - unsigned short :3; - unsigned short MPXEN:1; - unsigned short :3; - unsigned short EMODE:1; - unsigned short :2; - unsigned short BSIZE:2; - unsigned short :3; - unsigned short EXENB:1; - } BIT; - } CS3CR; - char wk19[6]; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - unsigned short RRCV:4; - } BIT; - } CS3REC; - char wk20[6]; - union { - unsigned short WORD; - struct { - unsigned short :3; - unsigned short MPXEN:1; - unsigned short :3; - unsigned short EMODE:1; - unsigned short :2; - unsigned short BSIZE:2; - unsigned short :3; - unsigned short EXENB:1; - } BIT; - } CS4CR; - char wk21[6]; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - unsigned short RRCV:4; - } BIT; - } CS4REC; - char wk22[6]; - union { - unsigned short WORD; - struct { - unsigned short :3; - unsigned short MPXEN:1; - unsigned short :3; - unsigned short EMODE:1; - unsigned short :2; - unsigned short BSIZE:2; - unsigned short :3; - unsigned short EXENB:1; - } BIT; - } CS5CR; - char wk23[6]; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - unsigned short RRCV:4; - } BIT; - } CS5REC; - char wk24[6]; - union { - unsigned short WORD; - struct { - unsigned short :3; - unsigned short MPXEN:1; - unsigned short :3; - unsigned short EMODE:1; - unsigned short :2; - unsigned short BSIZE:2; - unsigned short :3; - unsigned short EXENB:1; - } BIT; - } CS6CR; - char wk25[6]; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - unsigned short RRCV:4; - } BIT; - } CS6REC; - char wk26[6]; - union { - unsigned short WORD; - struct { - unsigned short :3; - unsigned short MPXEN:1; - unsigned short :3; - unsigned short EMODE:1; - unsigned short :2; - unsigned short BSIZE:2; - unsigned short :3; - unsigned short EXENB:1; - } BIT; - } CS7CR; - char wk27[6]; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - unsigned short RRCV:4; - } BIT; - } CS7REC; - char wk28[4]; - union { - unsigned short WORD; - struct { - unsigned short RCVENM7:1; - unsigned short RCVENM6:1; - unsigned short RCVENM5:1; - unsigned short RCVENM4:1; - unsigned short RCVENM3:1; - unsigned short RCVENM2:1; - unsigned short RCVENM1:1; - unsigned short RCVENM0:1; - unsigned short RCVEN7:1; - unsigned short RCVEN6:1; - unsigned short RCVEN5:1; - unsigned short RCVEN4:1; - unsigned short RCVEN3:1; - unsigned short RCVEN2:1; - unsigned short RCVEN1:1; - unsigned short RCVEN0:1; - } BIT; - } CSRECEN; - char wk29[894]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char BSIZE:2; - unsigned char :3; - unsigned char EXENB:1; - } BIT; - } SDCCR; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char EMODE:1; - } BIT; - } SDCMOD; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char BE:1; - } BIT; - } SDAMOD; - char wk30[13]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char SFEN:1; - } BIT; - } SDSELF; - char wk31[3]; - union { - unsigned short WORD; - struct { - unsigned short REFW:4; - unsigned short RFC:12; - } BIT; - } SDRFCR; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char RFEN:1; - } BIT; - } SDRFEN; - char wk32[9]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char INIRQ:1; - } BIT; - } SDICR; - char wk33[3]; - union { - unsigned short WORD; - struct { - unsigned short :5; - unsigned short PRC:3; - unsigned short ARFC:4; - unsigned short ARFI:4; - } BIT; - } SDIR; - char wk34[26]; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char MXC:2; - } BIT; - } SDADR; - char wk35[3]; - union { - unsigned long LONG; - struct { - unsigned long :13; - unsigned long RAS:3; - unsigned long :2; - unsigned long RCD:2; - unsigned long RP:3; - unsigned long WR:1; - unsigned long :5; - unsigned long CL:3; - } BIT; - } SDTR; - union { - unsigned short WORD; - struct { - unsigned short :1; - unsigned short MR:15; - } BIT; - } SDMOD; - char wk36[6]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char SRFST:1; - unsigned char INIST:1; - unsigned char :2; - unsigned char MRSST:1; - } BIT; - } SDSR; -}; - -struct st_can { - struct { - union { - unsigned long LONG; - struct { - unsigned short H; - unsigned short L; - } WORD; - struct { - unsigned char HH; - unsigned char HL; - unsigned char LH; - unsigned char LL; - } BYTE; - struct { - unsigned long IDE:1; - unsigned long RTR:1; - unsigned long :1; - unsigned long SID:11; - unsigned long EID:18; - } BIT; - } ID; - unsigned short DLC; - unsigned char DATA[8]; - unsigned short TS; - } MB[32]; - union { - unsigned long LONG; - struct { - unsigned short H; - unsigned short L; - } WORD; - struct { - unsigned char HH; - unsigned char HL; - unsigned char LH; - unsigned char LL; - } BYTE; - struct { - unsigned long :3; - unsigned long SID:11; - unsigned long EID:18; - } BIT; - } MKR[8]; - union { - unsigned long LONG; - struct { - unsigned short H; - unsigned short L; - } WORD; - struct { - unsigned char HH; - unsigned char HL; - unsigned char LH; - unsigned char LL; - } BYTE; - struct { - unsigned long IDE:1; - unsigned long RTR:1; - unsigned long :1; - unsigned long SID:11; - unsigned long EID:18; - } BIT; - } FIDCR0; - union { - unsigned long LONG; - struct { - unsigned short H; - unsigned short L; - } WORD; - struct { - unsigned char HH; - unsigned char HL; - unsigned char LH; - unsigned char LL; - } BYTE; - struct { - unsigned long IDE:1; - unsigned long RTR:1; - unsigned long :1; - unsigned long SID:11; - unsigned long EID:18; - } BIT; - } FIDCR1; - union { - unsigned long LONG; - struct { - unsigned short H; - unsigned short L; - } WORD; - struct { - unsigned char HH; - unsigned char HL; - unsigned char LH; - unsigned char LL; - } BYTE; - struct { - unsigned char MB31:1; - unsigned char MB30:1; - unsigned char MB29:1; - unsigned char MB28:1; - unsigned char MB27:1; - unsigned char MB26:1; - unsigned char MB25:1; - unsigned char MB24:1; - unsigned char MB23:1; - unsigned char MB22:1; - unsigned char MB21:1; - unsigned char MB20:1; - unsigned char MB19:1; - unsigned char MB18:1; - unsigned char MB17:1; - unsigned char MB16:1; - unsigned char MB15:1; - unsigned char MB14:1; - unsigned char MB13:1; - unsigned char MB12:1; - unsigned char MB11:1; - unsigned char MB10:1; - unsigned char MB9:1; - unsigned char MB8:1; - unsigned char MB7:1; - unsigned char MB6:1; - unsigned char MB5:1; - unsigned char MB4:1; - unsigned char MB3:1; - unsigned char MB2:1; - unsigned char MB1:1; - unsigned char MB0:1; - } BIT; - } MKIVLR; - union { - unsigned long LONG; - struct { - unsigned short H; - unsigned short L; - } WORD; - struct { - unsigned char HH; - unsigned char HL; - unsigned char LH; - unsigned char LL; - } BYTE; - struct { - unsigned char MB31:1; - unsigned char MB30:1; - unsigned char MB29:1; - unsigned char MB28:1; - unsigned char MB27:1; - unsigned char MB26:1; - unsigned char MB25:1; - unsigned char MB24:1; - unsigned char MB23:1; - unsigned char MB22:1; - unsigned char MB21:1; - unsigned char MB20:1; - unsigned char MB19:1; - unsigned char MB18:1; - unsigned char MB17:1; - unsigned char MB16:1; - unsigned char MB15:1; - unsigned char MB14:1; - unsigned char MB13:1; - unsigned char MB12:1; - unsigned char MB11:1; - unsigned char MB10:1; - unsigned char MB9:1; - unsigned char MB8:1; - unsigned char MB7:1; - unsigned char MB6:1; - unsigned char MB5:1; - unsigned char MB4:1; - unsigned char MB3:1; - unsigned char MB2:1; - unsigned char MB1:1; - unsigned char MB0:1; - } BIT; - } MIER; - char wk0[1008]; - union { - unsigned char BYTE; - union { - struct { - unsigned char TRMREQ:1; - unsigned char RECREQ:1; - unsigned char :1; - unsigned char ONESHOT:1; - unsigned char :1; - unsigned char TRMABT:1; - unsigned char TRMACTIVE:1; - unsigned char SENTDATA:1; - } TX; - struct { - unsigned char TRMREQ:1; - unsigned char RECREQ:1; - unsigned char :1; - unsigned char ONESHOT:1; - unsigned char :1; - unsigned char MSGLOST:1; - unsigned char INVALDATA:1; - unsigned char NEWDATA:1; - } RX; - } BIT; - } MCTL[32]; - union { - unsigned short WORD; - struct { - unsigned char H; - unsigned char L; - } BYTE; - struct { - unsigned char :2; - unsigned char RBOC:1; - unsigned char BOM:2; - unsigned char SLPM:1; - unsigned char CANM:2; - unsigned char TSPS:2; - unsigned char TSRC:1; - unsigned char TPM:1; - unsigned char MLM:1; - unsigned char IDFM:2; - unsigned char MBM:1; - } BIT; - } CTLR; - union { - unsigned short WORD; - struct { - unsigned char H; - unsigned char L; - } BYTE; - struct { - unsigned char :1; - unsigned char RECST:1; - unsigned char TRMST:1; - unsigned char BOST:1; - unsigned char EPST:1; - unsigned char SLPST:1; - unsigned char HLTST:1; - unsigned char RSTST:1; - unsigned char EST:1; - unsigned char TABST:1; - unsigned char FMLST:1; - unsigned char NMLST:1; - unsigned char TFST:1; - unsigned char RFST:1; - unsigned char SDST:1; - unsigned char NDST:1; - } BIT; - } STR; - union { - unsigned long LONG; - struct { - unsigned short H; - unsigned short L; - } WORD; - struct { - unsigned char HH; - unsigned char HL; - unsigned char LH; - unsigned char LL; - } BYTE; - struct { - unsigned long TSEG1:4; - unsigned long :2; - unsigned long BRP:10; - unsigned long :2; - unsigned long SJW:2; - unsigned long :1; - unsigned long TSEG2:3; - unsigned long :7; - unsigned long CCLKS:1; - } BIT; - } BCR; - union { - unsigned char BYTE; - struct { - unsigned char RFEST:1; - unsigned char RFWST:1; - unsigned char RFFST:1; - unsigned char RFMLF:1; - unsigned char RFUST:3; - unsigned char RFE:1; - } BIT; - } RFCR; - unsigned char RFPCR; - union { - unsigned char BYTE; - struct { - unsigned char TFEST:1; - unsigned char TFFST:1; - unsigned char :2; - unsigned char TFUST:3; - unsigned char TFE:1; - } BIT; - } TFCR; - unsigned char TFPCR; - union { - unsigned char BYTE; - struct { - unsigned char BLIE:1; - unsigned char OLIE:1; - unsigned char ORIE:1; - unsigned char BORIE:1; - unsigned char BOEIE:1; - unsigned char EPIE:1; - unsigned char EWIE:1; - unsigned char BEIE:1; - } BIT; - } EIER; - union { - unsigned char BYTE; - struct { - unsigned char BLIF:1; - unsigned char OLIF:1; - unsigned char ORIF:1; - unsigned char BORIF:1; - unsigned char BOEIF:1; - unsigned char EPIF:1; - unsigned char EWIF:1; - unsigned char BEIF:1; - } BIT; - } EIFR; - unsigned char RECR; - unsigned char TECR; - union { - unsigned char BYTE; - struct { - unsigned char EDPM:1; - unsigned char ADEF:1; - unsigned char BE0F:1; - unsigned char BE1F:1; - unsigned char CEF:1; - unsigned char AEF:1; - unsigned char FEF:1; - unsigned char SEF:1; - } BIT; - } ECSR; - unsigned char CSSR; - union { - unsigned char BYTE; - struct { - unsigned char SEST:1; - unsigned char :2; - unsigned char MBNST:5; - } BIT; - } MSSR; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char MBSM:2; - } BIT; - } MSMR; - unsigned short TSR; - unsigned short AFSR; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char TSTM:2; - unsigned char TSTE:1; - } BIT; - } TCR; -}; - -struct st_cmt { - union { - unsigned short WORD; - struct { - unsigned short :14; - unsigned short STR1:1; - unsigned short STR0:1; - } BIT; - } CMSTR0; - char wk0[14]; - union { - unsigned short WORD; - struct { - unsigned short :14; - unsigned short STR3:1; - unsigned short STR2:1; - } BIT; - } CMSTR1; -}; - -struct st_cmt0 { - union { - unsigned short WORD; - struct { - unsigned short :9; - unsigned short CMIE:1; - unsigned short :4; - unsigned short CKS:2; - } BIT; - } CMCR; - unsigned short CMCNT; - unsigned short CMCOR; -}; - -struct st_crc { - union { - unsigned char BYTE; - struct { - unsigned char DORCLR:1; - unsigned char :4; - unsigned char LMS:1; - unsigned char GPS:2; - } BIT; - } CRCCR; - unsigned char CRCDIR; - unsigned short CRCDOR; -}; - -struct st_da { - unsigned short DADR0; - unsigned short DADR1; - union { - unsigned char BYTE; - struct { - unsigned char DAOE1:1; - unsigned char DAOE0:1; - unsigned char DAE:1; - } BIT; - } DACR; - union { - unsigned char BYTE; - struct { - unsigned char DPSEL:1; - } BIT; - } DADPR; - union { - unsigned char BYTE; - struct { - unsigned char DAADST:1; - } BIT; - } DAADSCR; -}; - -struct st_dmac { - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DMST:1; - } BIT; - } DMAST; -}; - -struct st_dmac0 { - unsigned long DMSAR; - unsigned long DMDAR; - unsigned long DMCRA; - unsigned short DMCRB; - char wk0[2]; - union { - unsigned short WORD; - struct { - unsigned short MD:2; - unsigned short DTS:2; - unsigned short :2; - unsigned short SZ:2; - unsigned short :6; - unsigned short DCTG:2; - } BIT; - } DMTMD; - char wk1[1]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char DTIE:1; - unsigned char ESIE:1; - unsigned char RPTIE:1; - unsigned char SARIE:1; - unsigned char DARIE:1; - } BIT; - } DMINT; - union { - unsigned short WORD; - struct { - unsigned short SM:2; - unsigned short :1; - unsigned short SARA:5; - unsigned short DM:2; - unsigned short :1; - unsigned short DARA:5; - } BIT; - } DMAMD; - char wk2[2]; - unsigned long DMOFR; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DTE:1; - } BIT; - } DMCNT; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char CLRS:1; - unsigned char :3; - unsigned char SWREQ:1; - } BIT; - } DMREQ; - union { - unsigned char BYTE; - struct { - unsigned char ACT:1; - unsigned char :2; - unsigned char DTIF:1; - unsigned char :3; - unsigned char ESIF:1; - } BIT; - } DMSTS; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DISEL:1; - } BIT; - } DMCSL; -}; - -struct st_dmac1 { - unsigned long DMSAR; - unsigned long DMDAR; - unsigned long DMCRA; - unsigned short DMCRB; - char wk0[2]; - union { - unsigned short WORD; - struct { - unsigned short MD:2; - unsigned short DTS:2; - unsigned short :2; - unsigned short SZ:2; - unsigned short :6; - unsigned short DCTG:2; - } BIT; - } DMTMD; - char wk1[1]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char DTIE:1; - unsigned char ESIE:1; - unsigned char RPTIE:1; - unsigned char SARIE:1; - unsigned char DARIE:1; - } BIT; - } DMINT; - union { - unsigned short WORD; - struct { - unsigned short SM:2; - unsigned short :1; - unsigned short SARA:5; - unsigned short DM:2; - unsigned short :1; - unsigned short DARA:5; - } BIT; - } DMAMD; - char wk2[6]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DTE:1; - } BIT; - } DMCNT; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char CLRS:1; - unsigned char :3; - unsigned char SWREQ:1; - } BIT; - } DMREQ; - union { - unsigned char BYTE; - struct { - unsigned char ACT:1; - unsigned char :2; - unsigned char DTIF:1; - unsigned char :3; - unsigned char ESIF:1; - } BIT; - } DMSTS; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DISEL:1; - } BIT; - } DMCSL; -}; - -struct st_dtc { - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char RRS:1; - } BIT; - } DTCCR; - char wk0[3]; - unsigned long DTCVBR; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char SHORT:1; - } BIT; - } DTCADMOD; - char wk1[3]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DTCST:1; - } BIT; - } DTCST; - char wk2[1]; - union { - unsigned short WORD; - struct { - unsigned short ACT:1; - unsigned short :7; - unsigned short VECN:8; - } BIT; - } DTCSTS; -}; - -struct st_edmac { - union { - unsigned long LONG; - struct { - unsigned long :25; - unsigned long DE:1; - unsigned long DL:2; - unsigned long :3; - unsigned long SWR:1; - } BIT; - } EDMR; - char wk0[4]; - union { - unsigned long LONG; - struct { - unsigned long :31; - unsigned long TR:1; - } BIT; - } EDTRR; - char wk1[4]; - union { - unsigned long LONG; - struct { - unsigned long :31; - unsigned long RR:1; - } BIT; - } EDRRR; - char wk2[4]; - unsigned long TDLAR; - char wk3[4]; - unsigned long RDLAR; - char wk4[4]; - union { - unsigned long LONG; - struct { - unsigned long :1; - unsigned long TWB:1; - unsigned long :3; - unsigned long TABT:1; - unsigned long RABT:1; - unsigned long RFCOF:1; - unsigned long ADE:1; - unsigned long ECI:1; - unsigned long TC:1; - unsigned long TDE:1; - unsigned long TFUF:1; - unsigned long FR:1; - unsigned long RDE:1; - unsigned long RFOF:1; - unsigned long :4; - unsigned long CND:1; - unsigned long DLC:1; - unsigned long CD:1; - unsigned long TRO:1; - unsigned long RMAF:1; - unsigned long :2; - unsigned long RRF:1; - unsigned long RTLF:1; - unsigned long RTSF:1; - unsigned long PRE:1; - unsigned long CERF:1; - } BIT; - } EESR; - char wk5[4]; - union { - unsigned long LONG; - struct { - unsigned long :1; - unsigned long TWBIP:1; - unsigned long :3; - unsigned long TABTIP:1; - unsigned long RABTIP:1; - unsigned long RFCOFIP:1; - unsigned long ADEIP:1; - unsigned long ECIIP:1; - unsigned long TCIP:1; - unsigned long TDEIP:1; - unsigned long TFUFIP:1; - unsigned long FRIP:1; - unsigned long RDEIP:1; - unsigned long RFOFIP:1; - unsigned long :4; - unsigned long CNDIP:1; - unsigned long DLCIP:1; - unsigned long CDIP:1; - unsigned long TROIP:1; - unsigned long RMAFIP:1; - unsigned long :2; - unsigned long RRFIP:1; - unsigned long RTLFIP:1; - unsigned long RTSFIP:1; - unsigned long PREIP:1; - unsigned long CERFIP:1; - } BIT; - } EESIPR; - char wk6[4]; - union { - unsigned long LONG; - struct { - unsigned long :20; - unsigned long CNDCE:1; - unsigned long DLCCE:1; - unsigned long CDCE:1; - unsigned long TROCE:1; - unsigned long RMAFCE:1; - unsigned long :2; - unsigned long RRFCE:1; - unsigned long RTLFCE:1; - unsigned long RTSFCE:1; - unsigned long PRECE:1; - unsigned long CERFCE:1; - } BIT; - } TRSCER; - char wk7[4]; - union { - unsigned long LONG; - struct { - unsigned long :16; - unsigned long MFC:16; - } BIT; - } RMFCR; - char wk8[4]; - union { - unsigned long LONG; - struct { - unsigned long :21; - unsigned long TFT:11; - } BIT; - } TFTR; - char wk9[4]; - union { - unsigned long LONG; - struct { - unsigned long :19; - unsigned long TFD:5; - unsigned long :3; - unsigned long RFD:5; - } BIT; - } FDR; - char wk10[4]; - union { - unsigned long LONG; - struct { - unsigned long :30; - unsigned long RNC:1; - unsigned long RNR:1; - } BIT; - } RMCR; - char wk11[8]; - union { - unsigned long LONG; - struct { - unsigned long :16; - unsigned long UNDER:16; - } BIT; - } TFUCR; - union { - unsigned long LONG; - struct { - unsigned long :16; - unsigned long OVER:16; - } BIT; - } RFOCR; - union { - unsigned long LONG; - struct { - unsigned long :31; - unsigned long ELB:1; - } BIT; - } IOSR; - union { - unsigned long LONG; - struct { - unsigned long :13; - unsigned long RFFO:3; - unsigned long :13; - unsigned long RFDO:3; - } BIT; - } FCFTR; - char wk12[4]; - union { - unsigned long LONG; - struct { - unsigned long :14; - unsigned long PADS:2; - unsigned long :10; - unsigned long PADR:6; - } BIT; - } RPADIR; - union { - unsigned long LONG; - struct { - unsigned long :27; - unsigned long TIM:1; - unsigned long :3; - unsigned long TIS:1; - } BIT; - } TRIMD; - char wk13[72]; - unsigned long RBWAR; - unsigned long RDFAR; - char wk14[4]; - unsigned long TBRAR; - unsigned long TDFAR; -}; - -struct st_etherc { - union { - unsigned long LONG; - struct { - unsigned long :11; - unsigned long TPC:1; - unsigned long ZPE:1; - unsigned long PFR:1; - unsigned long RXF:1; - unsigned long TXF:1; - unsigned long :3; - unsigned long PRCEF:1; - unsigned long :2; - unsigned long MPDE:1; - unsigned long :2; - unsigned long RE:1; - unsigned long TE:1; - unsigned long :1; - unsigned long ILB:1; - unsigned long RTM:1; - unsigned long DM:1; - unsigned long PRM:1; - } BIT; - } ECMR; - char wk0[4]; - union { - unsigned long LONG; - struct { - unsigned long :20; - unsigned long RFL:12; - } BIT; - } RFLR; - char wk1[4]; - union { - unsigned long LONG; - struct { - unsigned long :26; - unsigned long BFR:1; - unsigned long PSRTO:1; - unsigned long :1; - unsigned long LCHNG:1; - unsigned long MPD:1; - unsigned long ICD:1; - } BIT; - } ECSR; - char wk2[4]; - union { - unsigned long LONG; - struct { - unsigned long :26; - unsigned long BFSIPR:1; - unsigned long PSRTOIP:1; - unsigned long :1; - unsigned long LCHNGIP:1; - unsigned long MPDIP:1; - unsigned long ICDIP:1; - } BIT; - } ECSIPR; - char wk3[4]; - union { - unsigned long LONG; - struct { - unsigned long :28; - unsigned long MDI:1; - unsigned long MDO:1; - unsigned long MMD:1; - unsigned long MDC:1; - } BIT; - } PIR; - char wk4[4]; - union { - unsigned long LONG; - struct { - unsigned long :31; - unsigned long LMON:1; - } BIT; - } PSR; - char wk5[20]; - union { - unsigned long LONG; - struct { - unsigned long :12; - unsigned long RMD:20; - } BIT; - } RDMLR; - char wk6[12]; - union { - unsigned long LONG; - struct { - unsigned long :27; - unsigned long IPG:5; - } BIT; - } IPGR; - union { - unsigned long LONG; - struct { - unsigned long :16; - unsigned long AP:16; - } BIT; - } APR; - union { - unsigned long LONG; - struct { - unsigned long :16; - unsigned long MP:16; - } BIT; - } MPR; - char wk7[4]; - union { - unsigned long LONG; - struct { - unsigned long :24; - unsigned long RPAUSE:8; - } BIT; - } RFCF; - union { - unsigned long LONG; - struct { - unsigned long :16; - unsigned long TPAUSE:16; - } BIT; - } TPAUSER; - union { - unsigned long LONG; - struct { - unsigned long :24; - unsigned long TXP:8; - } BIT; - } TPAUSECR; - union { - unsigned long LONG; - struct { - unsigned long :16; - unsigned long BCF:16; - } BIT; - } BCFRR; - char wk8[80]; - unsigned long MAHR; - char wk9[4]; - union { - unsigned long LONG; - struct { - unsigned long :16; - unsigned long MA:16; - } BIT; - } MALR; - char wk10[4]; - unsigned long TROCR; - unsigned long CDCR; - unsigned long LCCR; - unsigned long CNDCR; - char wk11[4]; - unsigned long CEFCR; - unsigned long FRECR; - unsigned long TSFRCR; - unsigned long TLFRCR; - unsigned long RFCR; - unsigned long MAFCR; -}; - -struct st_exdmac { - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DMST:1; - } BIT; - } EDMAST; - char wk0[479]; - unsigned long CLSBR0; - unsigned long CLSBR1; - unsigned long CLSBR2; - unsigned long CLSBR3; - unsigned long CLSBR4; - unsigned long CLSBR5; - unsigned long CLSBR6; - unsigned long CLSBR7; -}; - -struct st_exdmac0 { - unsigned long EDMSAR; - unsigned long EDMDAR; - unsigned long EDMCRA; - unsigned short EDMCRB; - char wk0[2]; - union { - unsigned short WORD; - struct { - unsigned short MD:2; - unsigned short DTS:2; - unsigned short :2; - unsigned short SZ:2; - unsigned short :6; - unsigned short DCTG:2; - } BIT; - } EDMTMD; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char DACKS:1; - unsigned char DACKE:1; - unsigned char DACKW:1; - } BIT; - } EDMOMD; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char DTIE:1; - unsigned char ESIE:1; - unsigned char RPTIE:1; - unsigned char SARIE:1; - unsigned char DARIE:1; - } BIT; - } EDMINT; - union { - unsigned long LONG; - struct { - unsigned long :14; - unsigned long AMS:1; - unsigned long DIR:1; - unsigned long SM:2; - unsigned long :1; - unsigned long SARA:5; - unsigned long DM:2; - unsigned long :1; - unsigned long DARA:5; - } BIT; - } EDMAMD; - unsigned long EDMOFR; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DTE:1; - } BIT; - } EDMCNT; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char CLRS:1; - unsigned char :3; - unsigned char SWREQ:1; - } BIT; - } EDMREQ; - union { - unsigned char BYTE; - struct { - unsigned char ACT:1; - unsigned char :2; - unsigned char DTIF:1; - unsigned char :3; - unsigned char ESIF:1; - } BIT; - } EDMSTS; - char wk1[1]; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char DREQS:2; - } BIT; - } EDMRMD; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char EREQ:1; - } BIT; - } EDMERF; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char PREQ:1; - } BIT; - } EDMPRF; -}; - -struct st_exdmac1 { - unsigned long EDMSAR; - unsigned long EDMDAR; - unsigned long EDMCRA; - unsigned short EDMCRB; - char wk0[2]; - union { - unsigned short WORD; - struct { - unsigned short MD:2; - unsigned short DTS:2; - unsigned short :2; - unsigned short SZ:2; - unsigned short :6; - unsigned short DCTG:2; - } BIT; - } EDMTMD; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char DACKS:1; - unsigned char DACKE:1; - unsigned char DACKW:1; - } BIT; - } EDMOMD; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char DTIE:1; - unsigned char ESIE:1; - unsigned char RPTIE:1; - unsigned char SARIE:1; - unsigned char DARIE:1; - } BIT; - } EDMINT; - union { - unsigned long LONG; - struct { - unsigned long :14; - unsigned long AMS:1; - unsigned long DIR:1; - unsigned long SM:2; - unsigned long :1; - unsigned long SARA:5; - unsigned long DM:2; - unsigned long :1; - unsigned long DARA:5; - } BIT; - } EDMAMD; - char wk1[4]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DTE:1; - } BIT; - } EDMCNT; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char CLRS:1; - unsigned char :3; - unsigned char SWREQ:1; - } BIT; - } EDMREQ; - union { - unsigned char BYTE; - struct { - unsigned char ACT:1; - unsigned char :2; - unsigned char DTIF:1; - unsigned char :3; - unsigned char ESIF:1; - } BIT; - } EDMSTS; - char wk2[1]; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char DREQS:2; - } BIT; - } EDMRMD; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char EREQ:1; - } BIT; - } EDMERF; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char PREQ:1; - } BIT; - } EDMPRF; -}; - -struct st_flash { - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char FLWE:2; - } BIT; - } FWEPROR; - char wk0[7799147]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char FRDMD:1; - } BIT; - } FMODR; - char wk1[13]; - union { - unsigned char BYTE; - struct { - unsigned char ROMAE:1; - unsigned char :2; - unsigned char CMDLK:1; - unsigned char DFLAE:1; - unsigned char :1; - unsigned char DFLRPE:1; - unsigned char DFLWPE:1; - } BIT; - } FASTAT; - union { - unsigned char BYTE; - struct { - unsigned char ROMAEIE:1; - unsigned char :2; - unsigned char CMDLKIE:1; - unsigned char DFLAEIE:1; - unsigned char :1; - unsigned char DFLRPEIE:1; - unsigned char DFLWPEIE:1; - } BIT; - } FAEINT; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char FRDYIE:1; - } BIT; - } FRDYIE; - char wk2[45]; - union { - unsigned short WORD; - struct { - unsigned short KEY:8; - unsigned short DBRE07:1; - unsigned short DBRE06:1; - unsigned short DBRE05:1; - unsigned short DBRE04:1; - unsigned short DBRE03:1; - unsigned short DBRE02:1; - unsigned short DBRE01:1; - unsigned short DBRE00:1; - } BIT; - } DFLRE0; - union { - unsigned short WORD; - struct { - unsigned short KEY:8; - unsigned short DBRE15:1; - unsigned short DBRE14:1; - unsigned short DBRE13:1; - unsigned short DBRE12:1; - unsigned short DBRE11:1; - unsigned short DBRE10:1; - unsigned short DBRE09:1; - unsigned short DBRE08:1; - } BIT; - } DFLRE1; - char wk3[12]; - union { - unsigned short WORD; - struct { - unsigned short KEY:8; - unsigned short DBWE07:1; - unsigned short DBW006:1; - unsigned short DBWE05:1; - unsigned short DBWE04:1; - unsigned short DBWE03:1; - unsigned short DBWE02:1; - unsigned short DBWE01:1; - unsigned short DBWE00:1; - } BIT; - } DFLWE0; - union { - unsigned short WORD; - struct { - unsigned short KEY:8; - unsigned short DBWE15:1; - unsigned short DBWE14:1; - unsigned short DBWE13:1; - unsigned short DBWE12:1; - unsigned short DBWE11:1; - unsigned short DBWE10:1; - unsigned short DBWE09:1; - unsigned short DBWE08:1; - } BIT; - } DFLWE1; - union { - unsigned short WORD; - struct { - unsigned short KEY:8; - unsigned short :7; - unsigned short FCRME:1; - } BIT; - } FCURAME; - char wk4[15194]; - union { - unsigned char BYTE; - struct { - unsigned char FRDY:1; - unsigned char ILGLERR:1; - unsigned char ERSERR:1; - unsigned char PRGERR:1; - unsigned char SUSRDY:1; - unsigned char :1; - unsigned char ERSSPD:1; - unsigned char PRGSPD:1; - } BIT; - } FSTATR0; - union { - unsigned char BYTE; - struct { - unsigned char FCUERR:1; - unsigned char :2; - unsigned char FLOCKST:1; - } BIT; - } FSTATR1; - union { - unsigned short WORD; - struct { - unsigned short FEKEY:8; - unsigned short FENTRYD:1; - unsigned short :3; - unsigned short FENTRY3:1; - unsigned short FENTRY2:1; - unsigned short FENTRY1:1; - unsigned short FENTRY0:1; - } BIT; - } FENTRYR; - union { - unsigned short WORD; - struct { - unsigned short FPKEY:8; - unsigned short :7; - unsigned short FPROTCN:1; - } BIT; - } FPROTR; - union { - unsigned short WORD; - struct { - unsigned short FRKEY:8; - unsigned short :7; - unsigned short FRESET:1; - } BIT; - } FRESETR; - char wk5[2]; - union { - unsigned short WORD; - struct { - unsigned short CMDR:8; - unsigned short PCMDR:8; - } BIT; - } FCMDR; - char wk6[12]; - union { - unsigned short WORD; - struct { - unsigned short :15; - unsigned short ESUSPMD:1; - } BIT; - } FCPSR; - union { - unsigned short WORD; - struct { - unsigned short BCSIZE:1; - unsigned short :4; - unsigned short BCADR:11; - } BIT; - } DFLBCCNT; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short PEERRST:8; - } BIT; - } FPESTAT; - union { - unsigned short WORD; - struct { - unsigned short :15; - unsigned short BCST:1; - } BIT; - } DFLBCSTAT; - char wk7[24]; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short PCKA:8; - } BIT; - } PCKAR; -}; - -struct st_icu { - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char IR:1; - } BIT; - } IR[254]; - char wk0[2]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DTCE:1; - } BIT; - } DTCER[252]; - char wk1[4]; - union { - unsigned char BYTE; - struct { - unsigned char IEN7:1; - unsigned char IEN6:1; - unsigned char IEN5:1; - unsigned char IEN4:1; - unsigned char IEN3:1; - unsigned char IEN2:1; - unsigned char IEN1:1; - unsigned char IEN0:1; - } BIT; - } IER[32]; - char wk2[192]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char SWINT:1; - } BIT; - } SWINTR; - char wk3[15]; - union { - unsigned short WORD; - struct { - unsigned short FIEN:1; - unsigned short :7; - unsigned short FVCT:8; - } BIT; - } FIR; - char wk4[14]; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char IPR:4; - } BIT; - } IPR[254]; - char wk5[2]; - union { - unsigned char BYTE; - struct { - unsigned char DMRS:8; - } BIT; - } DMRSR0; - char wk6[3]; - union { - unsigned char BYTE; - struct { - unsigned char DMRS:8; - } BIT; - } DMRSR1; - char wk7[3]; - union { - unsigned char BYTE; - struct { - unsigned char DMRS:8; - } BIT; - } DMRSR2; - char wk8[3]; - union { - unsigned char BYTE; - struct { - unsigned char DMRS:8; - } BIT; - } DMRSR3; - char wk9[243]; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char IRQMD:2; - } BIT; - } IRQCR[16]; - union { - unsigned char BYTE; - struct { - unsigned char FLTEN7:1; - unsigned char FLTEN6:1; - unsigned char FLTEN5:1; - unsigned char FLTEN4:1; - unsigned char FLTEN3:1; - unsigned char FLTEN2:1; - unsigned char FLTEN1:1; - unsigned char FLTEN0:1; - } BIT; - } IRQFLTE0; - union { - unsigned char BYTE; - struct { - unsigned char FLTEN15:1; - unsigned char FLTEN14:1; - unsigned char FLTEN13:1; - unsigned char FLTEN12:1; - unsigned char FLTEN11:1; - unsigned char FLTEN10:1; - unsigned char FLTEN9:1; - unsigned char FLTEN8:1; - } BIT; - } IRQFLTE1; - char wk10[2]; - union { - unsigned short WORD; - struct { - unsigned short FCLKSEL7:2; - unsigned short FCLKSEL6:2; - unsigned short FCLKSEL5:2; - unsigned short FCLKSEL4:2; - unsigned short FCLKSEL3:2; - unsigned short FCLKSEL2:2; - unsigned short FCLKSEL1:2; - unsigned short FCLKSEL0:2; - } BIT; - } IRQFLTC0; - union { - unsigned short WORD; - struct { - unsigned short FCLKSEL15:2; - unsigned short FCLKSEL14:2; - unsigned short FCLKSEL13:2; - unsigned short FCLKSEL12:2; - unsigned short FCLKSEL11:2; - unsigned short FCLKSEL10:2; - unsigned short FCLKSEL9:2; - unsigned short FCLKSEL8:2; - } BIT; - } IRQFLTC1; - char wk11[104]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char LVD2ST:1; - unsigned char LVD1ST:1; - unsigned char IWDTST:1; - unsigned char WDTST:1; - unsigned char OSTST:1; - unsigned char NMIST:1; - } BIT; - } NMISR; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char LVD2EN:1; - unsigned char LVD1EN:1; - unsigned char IWDTEN:1; - unsigned char WDTEN:1; - unsigned char OSTEN:1; - unsigned char NMIEN:1; - } BIT; - } NMIER; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char LVD2CLR:1; - unsigned char LVD1CLR:1; - unsigned char IWDTCLR:1; - unsigned char WDTCLR:1; - unsigned char OSTCLR:1; - unsigned char NMICLR:1; - } BIT; - } NMICLR; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char NMIMD:1; - } BIT; - } NMICR; - char wk12[12]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char NFLTEN:1; - } BIT; - } NMIFLTE; - char wk13[3]; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char NFCLKSEL:2; - } BIT; - } NMIFLTC; - char wk14[19819]; - union { - unsigned long LONG; - struct { - unsigned long :16; - unsigned long IS15:1; - unsigned long IS14:1; - unsigned long IS13:1; - unsigned long IS12:1; - unsigned long IS11:1; - unsigned long IS10:1; - unsigned long IS9:1; - unsigned long IS8:1; - unsigned long IS7:1; - unsigned long IS6:1; - unsigned long IS5:1; - unsigned long IS4:1; - unsigned long IS3:1; - unsigned long IS2:1; - unsigned long IS1:1; - unsigned long IS0:1; - } BIT; - } GRP[13]; - char wk15[12]; - union { - unsigned long LONG; - struct { - unsigned long :16; - unsigned long EN15:1; - unsigned long EN14:1; - unsigned long EN13:1; - unsigned long EN12:1; - unsigned long EN11:1; - unsigned long EN10:1; - unsigned long EN9:1; - unsigned long EN8:1; - unsigned long EN7:1; - unsigned long EN6:1; - unsigned long EN5:1; - unsigned long EN4:1; - unsigned long EN3:1; - unsigned long EN2:1; - unsigned long EN1:1; - unsigned long EN0:1; - } BIT; - } GEN[13]; - char wk16[12]; - union { - unsigned long LONG; - struct { - unsigned long :16; - unsigned long CLR15:1; - unsigned long CLR14:1; - unsigned long CLR13:1; - unsigned long CLR12:1; - unsigned long CLR11:1; - unsigned long CLR10:1; - unsigned long CLR9:1; - unsigned long CLR8:1; - unsigned long CLR7:1; - unsigned long CLR6:1; - unsigned long CLR5:1; - unsigned long CLR4:1; - unsigned long CLR3:1; - unsigned long CLR2:1; - unsigned long CLR1:1; - unsigned long CLR0:1; - } BIT; - } GCR[13]; - char wk17[12]; - union { - unsigned long LONG; - struct { - unsigned long :26; - unsigned long CN5:1; - unsigned long CN4:1; - unsigned long CN3:1; - unsigned long CN2:1; - unsigned long CN1:1; - unsigned long CN0:1; - } BIT; - } SEL; -}; - -struct st_ieb { - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char IOL:1; - unsigned char DEE:1; - unsigned char :1; - unsigned char RE:1; - } BIT; - } IECTR; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char CMD:3; - } BIT; - } IECMR; - union { - unsigned char BYTE; - struct { - unsigned char SS:1; - unsigned char RN:3; - unsigned char CTL:4; - } BIT; - } IEMCR; - union { - unsigned char BYTE; - struct { - unsigned char IARL4:4; - unsigned char IMD:2; - unsigned char :1; - unsigned char STE:1; - } BIT; - } IEAR1; - union { - unsigned char BYTE; - struct { - unsigned char IARU8:8; - } BIT; - } IEAR2; - union { - unsigned char BYTE; - struct { - unsigned char ISAL4:4; - } BIT; - } IESA1; - union { - unsigned char BYTE; - struct { - unsigned char ISAU8:8; - } BIT; - } IESA2; - union { - unsigned char BYTE; - struct { - unsigned char IBFL:8; - } BIT; - } IETBFL; - char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char ISAL4:4; - } BIT; - } IEMA1; - union { - unsigned char BYTE; - struct { - unsigned char IMAU8:8; - } BIT; - } IEMA2; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char RCTL:4; - } BIT; - } IERCTL; - union { - unsigned char BYTE; - struct { - unsigned char RBFL:8; - } BIT; - } IERBFL; - char wk1[1]; - union { - unsigned char BYTE; - struct { - unsigned char ILAL8:8; - } BIT; - } IELA1; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char ILAU4:4; - } BIT; - } IELA2; - union { - unsigned char BYTE; - struct { - unsigned char CMX:1; - unsigned char MRQ:1; - unsigned char SRQ:1; - unsigned char SRE:1; - unsigned char LCK:1; - unsigned char :1; - unsigned char RSS:1; - unsigned char GG:1; - } BIT; - } IEFLG; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char TXS:1; - unsigned char TXF:1; - unsigned char :1; - unsigned char TXEAL:1; - unsigned char TXETTME:1; - unsigned char TXERO:1; - unsigned char TXEACK:1; - } BIT; - } IETSR; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char TXSE:1; - unsigned char TXFE:1; - unsigned char :1; - unsigned char TXEALE:1; - unsigned char TXETTMEE:1; - unsigned char TXEROE:1; - unsigned char TXEACKE:1; - } BIT; - } IEIET; - char wk2[1]; - union { - unsigned char BYTE; - struct { - unsigned char RXBSY:1; - unsigned char RXS:1; - unsigned char RXF:1; - unsigned char RXEDE:1; - unsigned char RXEOVE:1; - unsigned char RXERTME:1; - unsigned char RXEDLE:1; - unsigned char RXEPE:1; - } BIT; - } IERSR; - union { - unsigned char BYTE; - struct { - unsigned char RXBSYE:1; - unsigned char RXSE:1; - unsigned char RXFE:1; - unsigned char RXEDEE:1; - unsigned char RXEOVEE:1; - unsigned char RXERTMEE:1; - unsigned char RXEDLEE:1; - unsigned char RXEPEE:1; - } BIT; - } IEIER; - char wk3[2]; - union { - unsigned char BYTE; - struct { - unsigned char FLT:1; - unsigned char FCKS:2; - unsigned char CKS3:1; - unsigned char SRSTP:1; - unsigned char CKS:3; - } BIT; - } IECKSR; - char wk4[230]; - unsigned char IETB[33]; - char wk5[223]; - unsigned char IERB[33]; -}; - -struct st_iwdt { - unsigned char IWDTRR; - char wk0[1]; - union { - unsigned short WORD; - struct { - unsigned short :2; - unsigned short RPSS:2; - unsigned short :2; - unsigned short RPES:2; - unsigned short CKS:4; - unsigned short :2; - unsigned short TOPS:2; - } BIT; - } IWDTCR; - union { - unsigned short WORD; - struct { - unsigned short REFEF:1; - unsigned short UNDFF:1; - unsigned short CNTVAL:14; - } BIT; - } IWDTSR; - union { - unsigned char BYTE; - struct { - unsigned char RSTIRQS:1; - } BIT; - } IWDTRCR; - char wk1[1]; - union { - unsigned char BYTE; - struct { - unsigned char SLCSTP:1; - } BIT; - } IWDTCSTPR; -}; - -struct st_mpc { - union { - unsigned char BYTE; - struct { - unsigned char CS7E:1; - unsigned char CS6E:1; - unsigned char CS5E:1; - unsigned char CS4E:1; - unsigned char CS3E:1; - unsigned char CS2E:1; - unsigned char CS1E:1; - unsigned char CS0E:1; - } BIT; - } PFCSE; - char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char CS3S:2; - unsigned char CS2S:2; - unsigned char CS1S:2; - unsigned char :1; - unsigned char CS0S:1; - } BIT; - } PFCSS0; - union { - unsigned char BYTE; - struct { - unsigned char CS7S:2; - unsigned char CS6S:2; - unsigned char CS5S:2; - unsigned char CS4S:2; - } BIT; - } PFCSS1; - union { - unsigned char BYTE; - struct { - unsigned char A15E:1; - unsigned char A14E:1; - unsigned char A13E:1; - unsigned char A12E:1; - unsigned char A11E:1; - unsigned char A10E:1; - unsigned char A9E:1; - unsigned char A8E:1; - } BIT; - } PFAOE0; - union { - unsigned char BYTE; - struct { - unsigned char A23E:1; - unsigned char A22E:1; - unsigned char A21E:1; - unsigned char A20E:1; - unsigned char A19E:1; - unsigned char A18E:1; - unsigned char A17E:1; - unsigned char A16E:1; - } BIT; - } PFAOE1; - union { - unsigned char BYTE; - struct { - unsigned char WR32BC32E:1; - unsigned char WR1BC1E:1; - unsigned char DH32E:1; - unsigned char DHE:1; - unsigned char :2; - unsigned char ADRHMS:1; - unsigned char ADRLE:1; - } BIT; - } PFBCR0; - union { - unsigned char BYTE; - struct { - unsigned char SDCLKE:1; - unsigned char DQM1E:1; - unsigned char :1; - unsigned char MDSDE:1; - unsigned char :1; - unsigned char ALEOE:1; - unsigned char WAITS:2; - } BIT; - } PFBCR1; - char wk1[6]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PHYMODE:1; - } BIT; - } PFENET; - char wk2[5]; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char PUPHZS:1; - } BIT; - } PFUSB0; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char PUPHZS:1; - } BIT; - } PFUSB1; - char wk3[9]; - union { - unsigned char BYTE; - struct { - unsigned char B0WI:1; - unsigned char PFSWE:1; - } BIT; - } PWPR; - char wk4[32]; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } P00PFS; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } P01PFS; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } P02PFS; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } P03PFS; - char wk5[1]; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } P05PFS; - char wk6[1]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } P07PFS; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } P10PFS; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } P11PFS; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } P12PFS; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } P13PFS; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } P14PFS; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } P15PFS; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } P16PFS; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } P17PFS; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } P20PFS; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } P21PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } P22PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } P23PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } P24PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } P25PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } P26PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } P27PFS; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } P30PFS; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } P31PFS; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } P32PFS; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } P33PFS; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } P34PFS; - char wk7[3]; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char ISEL:1; - } BIT; - } P40PFS; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char ISEL:1; - } BIT; - } P41PFS; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char ISEL:1; - } BIT; - } P42PFS; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char ISEL:1; - } BIT; - } P43PFS; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char ISEL:1; - } BIT; - } P44PFS; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char ISEL:1; - } BIT; - } P45PFS; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char ISEL:1; - } BIT; - } P46PFS; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char ISEL:1; - } BIT; - } P47PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } P50PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } P51PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } P52PFS; - char wk8[1]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } P54PFS; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } P55PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } P56PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } P57PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } P60PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } P61PFS; - char wk9[4]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } P66PFS; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } P67PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } P70PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } P71PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } P72PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } P73PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } P74PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } P75PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } P76PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } P77PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } P80PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } P81PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } P82PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } P83PFS; - char wk10[2]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } P86PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } P87PFS; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char :2; - unsigned char PSEL:5; - } BIT; - } P90PFS; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char :2; - unsigned char PSEL:5; - } BIT; - } P91PFS; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char :2; - unsigned char PSEL:5; - } BIT; - } P92PFS; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char :2; - unsigned char PSEL:5; - } BIT; - } P93PFS; - char wk11[4]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } PA0PFS; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } PA1PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } PA2PFS; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } PA3PFS; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } PA4PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } PA5PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } PA6PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } PA7PFS; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } PB0PFS; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } PB1PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } PB2PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } PB3PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } PB4PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } PB5PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } PB6PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } PB7PFS; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } PC0PFS; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } PC1PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } PC2PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } PC3PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } PC4PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } PC5PFS; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } PC6PFS; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } PC7PFS; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } PD0PFS; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } PD1PFS; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } PD2PFS; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } PD3PFS; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } PD4PFS; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } PD5PFS; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } PD6PFS; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } PD7PFS; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char :2; - unsigned char PSEL:5; - } BIT; - } PE0PFS; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char :2; - unsigned char PSEL:5; - } BIT; - } PE1PFS; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } PE2PFS; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char :2; - unsigned char PSEL:5; - } BIT; - } PE3PFS; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char :2; - unsigned char PSEL:5; - } BIT; - } PE4PFS; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } PE5PFS; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } PE6PFS; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } PE7PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } PF0PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } PF1PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } PF2PFS; - char wk12[2]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } PF5PFS; - char wk13[21]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } PJ3PFS; -}; - -struct st_mtu { - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char OE4D:1; - unsigned char OE4C:1; - unsigned char OE3D:1; - unsigned char OE4B:1; - unsigned char OE4A:1; - unsigned char OE3B:1; - } BIT; - } TOER; - char wk0[2]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char BDC:1; - unsigned char N:1; - unsigned char P:1; - unsigned char FB:1; - unsigned char WF:1; - unsigned char VF:1; - unsigned char UF:1; - } BIT; - } TGCR; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char PSYE:1; - unsigned char :2; - unsigned char TOCL:1; - unsigned char TOCS:1; - unsigned char OLSN:1; - unsigned char OLSP:1; - } BIT; - } TOCR1; - union { - unsigned char BYTE; - struct { - unsigned char BF:2; - unsigned char OLS3N:1; - unsigned char OLS3P:1; - unsigned char OLS2N:1; - unsigned char OLS2P:1; - unsigned char OLS1N:1; - unsigned char OLS1P:1; - } BIT; - } TOCR2; - char wk1[4]; - unsigned short TCDR; - unsigned short TDDR; - char wk2[8]; - unsigned short TCNTS; - unsigned short TCBR; - char wk3[12]; - union { - unsigned char BYTE; - struct { - unsigned char T3AEN:1; - unsigned char T3ACOR:3; - unsigned char T4VEN:1; - unsigned char T4VCOR:3; - } BIT; - } TITCR; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char T3ACNT:3; - unsigned char :1; - unsigned char T4VCNT:3; - } BIT; - } TITCNT; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char BTE:2; - } BIT; - } TBTER; - char wk4[1]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char TDER:1; - } BIT; - } TDER; - char wk5[1]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char OLS3N:1; - unsigned char OLS3P:1; - unsigned char OLS2N:1; - unsigned char OLS2P:1; - unsigned char OLS1N:1; - unsigned char OLS1P:1; - } BIT; - } TOLBR; - char wk6[41]; - union { - unsigned char BYTE; - struct { - unsigned char CCE:1; - unsigned char :6; - unsigned char WRE:1; - } BIT; - } TWCR; - char wk7[31]; - union { - unsigned char BYTE; - struct { - unsigned char CST4:1; - unsigned char CST3:1; - unsigned char :3; - unsigned char CST2:1; - unsigned char CST1:1; - unsigned char CST0:1; - } BIT; - } TSTR; - union { - unsigned char BYTE; - struct { - unsigned char SYNC4:1; - unsigned char SYNC3:1; - unsigned char :3; - unsigned char SYNC2:1; - unsigned char SYNC1:1; - unsigned char SYNC0:1; - } BIT; - } TSYR; - char wk8[2]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char RWE:1; - } BIT; - } TRWER; -}; - -struct st_mtu0 { - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char NFCS:2; - unsigned char NFDEN:1; - unsigned char NFCEN:1; - unsigned char NFBEN:1; - unsigned char NFAEN:1; - } BIT; - } NFCR; - char wk0[111]; - union { - unsigned char BYTE; - struct { - unsigned char CCLR:3; - unsigned char CKEG:2; - unsigned char TPSC:3; - } BIT; - } TCR; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char BFE:1; - unsigned char BFB:1; - unsigned char BFA:1; - unsigned char MD:4; - } BIT; - } TMDR; - union { - unsigned char BYTE; - struct { - unsigned char IOB:4; - unsigned char IOA:4; - } BIT; - } TIORH; - union { - unsigned char BYTE; - struct { - unsigned char IOD:4; - unsigned char IOC:4; - } BIT; - } TIORL; - union { - unsigned char BYTE; - struct { - unsigned char TTGE:1; - unsigned char :2; - unsigned char TCIEV:1; - unsigned char TGIED:1; - unsigned char TGIEC:1; - unsigned char TGIEB:1; - unsigned char TGIEA:1; - } BIT; - } TIER; - union { - unsigned char BYTE; - struct { - unsigned char TCFD:1; - } BIT; - } TSR; - unsigned short TCNT; - unsigned short TGRA; - unsigned short TGRB; - unsigned short TGRC; - unsigned short TGRD; - char wk1[16]; - unsigned short TGRE; - unsigned short TGRF; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char TGIEF:1; - unsigned char TGIEE:1; - } BIT; - } TIER2; - char wk2[1]; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char TTSE:1; - unsigned char TTSB:1; - unsigned char TTSA:1; - } BIT; - } TBTM; -}; - -struct st_mtu1 { - char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char NFCS:2; - unsigned char NFDEN:1; - unsigned char NFCEN:1; - unsigned char NFBEN:1; - unsigned char NFAEN:1; - } BIT; - } NFCR; - char wk1[238]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char CCLR:2; - unsigned char CKEG:2; - unsigned char TPSC:3; - } BIT; - } TCR; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char MD:4; - } BIT; - } TMDR; - union { - unsigned char BYTE; - struct { - unsigned char IOB:4; - unsigned char IOA:4; - } BIT; - } TIOR; - char wk2[1]; - union { - unsigned char BYTE; - struct { - unsigned char TTGE:1; - unsigned char :1; - unsigned char TCIEU:1; - unsigned char TCIEV:1; - unsigned char :2; - unsigned char TGIEB:1; - unsigned char TGIEA:1; - } BIT; - } TIER; - union { - unsigned char BYTE; - struct { - unsigned char TCFD:1; - } BIT; - } TSR; - unsigned short TCNT; - unsigned short TGRA; - unsigned short TGRB; - char wk3[4]; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char I2BE:1; - unsigned char I2AE:1; - unsigned char I1BE:1; - unsigned char I1AE:1; - } BIT; - } TICCR; -}; - -struct st_mtu2 { - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char NFCS:2; - unsigned char NFDEN:1; - unsigned char NFCEN:1; - unsigned char NFBEN:1; - unsigned char NFAEN:1; - } BIT; - } NFCR; - char wk0[365]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char CCLR:2; - unsigned char CKEG:2; - unsigned char TPSC:3; - } BIT; - } TCR; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char MD:4; - } BIT; - } TMDR; - union { - unsigned char BYTE; - struct { - unsigned char IOB:4; - unsigned char IOA:4; - } BIT; - } TIOR; - char wk1[1]; - union { - unsigned char BYTE; - struct { - unsigned char TTGE:1; - unsigned char :1; - unsigned char TCIEU:1; - unsigned char TCIEV:1; - unsigned char :2; - unsigned char TGIEB:1; - unsigned char TGIEA:1; - } BIT; - } TIER; - union { - unsigned char BYTE; - struct { - unsigned char TCFD:1; - } BIT; - } TSR; - unsigned short TCNT; - unsigned short TGRA; - unsigned short TGRB; -}; - -struct st_mtu3 { - union { - unsigned char BYTE; - struct { - unsigned char CCLR:3; - unsigned char CKEG:2; - unsigned char TPSC:3; - } BIT; - } TCR; - char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char BFB:1; - unsigned char BFA:1; - unsigned char MD:4; - } BIT; - } TMDR; - char wk1[1]; - union { - unsigned char BYTE; - struct { - unsigned char IOB:4; - unsigned char IOA:4; - } BIT; - } TIORH; - union { - unsigned char BYTE; - struct { - unsigned char IOD:4; - unsigned char IOC:4; - } BIT; - } TIORL; - char wk2[2]; - union { - unsigned char BYTE; - struct { - unsigned char TTGE:1; - unsigned char :2; - unsigned char TCIEV:1; - unsigned char TGIED:1; - unsigned char TGIEC:1; - unsigned char TGIEB:1; - unsigned char TGIEA:1; - } BIT; - } TIER; - char wk3[7]; - unsigned short TCNT; - char wk4[6]; - unsigned short TGRA; - unsigned short TGRB; - char wk5[8]; - unsigned short TGRC; - unsigned short TGRD; - char wk6[4]; - union { - unsigned char BYTE; - struct { - unsigned char TCFD:1; - } BIT; - } TSR; - char wk7[11]; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char TTSE:1; - unsigned char TTSB:1; - unsigned char TTSA:1; - } BIT; - } TBTM; - char wk8[90]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char NFCS:2; - unsigned char NFDEN:1; - unsigned char NFCEN:1; - unsigned char NFBEN:1; - unsigned char NFAEN:1; - } BIT; - } NFCR; -}; - -struct st_mtu4 { - char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char CCLR:3; - unsigned char CKEG:2; - unsigned char TPSC:3; - } BIT; - } TCR; - char wk1[1]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char BFB:1; - unsigned char BFA:1; - unsigned char MD:4; - } BIT; - } TMDR; - char wk2[2]; - union { - unsigned char BYTE; - struct { - unsigned char IOB:4; - unsigned char IOA:4; - } BIT; - } TIORH; - union { - unsigned char BYTE; - struct { - unsigned char IOD:4; - unsigned char IOC:4; - } BIT; - } TIORL; - char wk3[1]; - union { - unsigned char BYTE; - struct { - unsigned char TTGE:1; - unsigned char TTGE2:1; - unsigned char :1; - unsigned char TCIEV:1; - unsigned char TGIED:1; - unsigned char TGIEC:1; - unsigned char TGIEB:1; - unsigned char TGIEA:1; - } BIT; - } TIER; - char wk4[8]; - unsigned short TCNT; - char wk5[8]; - unsigned short TGRA; - unsigned short TGRB; - char wk6[8]; - unsigned short TGRC; - unsigned short TGRD; - char wk7[1]; - union { - unsigned char BYTE; - struct { - unsigned char TCFD:1; - } BIT; - } TSR; - char wk8[11]; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char TTSE:1; - unsigned char TTSB:1; - unsigned char TTSA:1; - } BIT; - } TBTM; - char wk9[6]; - union { - unsigned short WORD; - struct { - unsigned short BF:2; - unsigned short :6; - unsigned short UT4AE:1; - unsigned short DT4AE:1; - unsigned short UT4BE:1; - unsigned short DT4BE:1; - unsigned short ITA3AE:1; - unsigned short ITA4VE:1; - unsigned short ITB3AE:1; - unsigned short ITB4VE:1; - } BIT; - } TADCR; - char wk10[2]; - unsigned short TADCORA; - unsigned short TADCORB; - unsigned short TADCOBRA; - unsigned short TADCOBRB; - char wk11[72]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char NFCS:2; - unsigned char NFDEN:1; - unsigned char NFCEN:1; - unsigned char NFBEN:1; - unsigned char NFAEN:1; - } BIT; - } NFCR; -}; - -struct st_mtu5 { - char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char NFCS:2; - unsigned char :1; - unsigned char NFWEN:1; - unsigned char NFVEN:1; - unsigned char NFUEN:1; - } BIT; - } NFCR; - char wk1[490]; - unsigned short TCNTU; - unsigned short TGRU; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char TPSC:2; - } BIT; - } TCRU; - char wk2[1]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char IOC:5; - } BIT; - } TIORU; - char wk3[9]; - unsigned short TCNTV; - unsigned short TGRV; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char TPSC:2; - } BIT; - } TCRV; - char wk4[1]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char IOC:5; - } BIT; - } TIORV; - char wk5[9]; - unsigned short TCNTW; - unsigned short TGRW; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char TPSC:2; - } BIT; - } TCRW; - char wk6[1]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char IOC:5; - } BIT; - } TIORW; - char wk7[11]; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char TGIE5U:1; - unsigned char TGIE5V:1; - unsigned char TGIE5W:1; - } BIT; - } TIER; - char wk8[1]; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char CSTU5:1; - unsigned char CSTV5:1; - unsigned char CSTW5:1; - } BIT; - } TSTR; - char wk9[1]; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char CMPCLR5U:1; - unsigned char CMPCLR5V:1; - unsigned char CMPCLR5W:1; - } BIT; - } TCNTCMPCLR; -}; - -struct st_poe { - union { - unsigned short WORD; - struct { - unsigned short POE3F:1; - unsigned short POE2F:1; - unsigned short POE1F:1; - unsigned short POE0F:1; - unsigned short :3; - unsigned short PIE1:1; - unsigned short POE3M:2; - unsigned short POE2M:2; - unsigned short POE1M:2; - unsigned short POE0M:2; - } BIT; - } ICSR1; - union { - unsigned short WORD; - struct { - unsigned short OSF1:1; - unsigned short :5; - unsigned short OCE1:1; - unsigned short OIE1:1; - } BIT; - } OCSR1; - char wk0[4]; - union { - unsigned short WORD; - struct { - unsigned short :3; - unsigned short POE8F:1; - unsigned short :2; - unsigned short POE8E:1; - unsigned short PIE2:1; - unsigned short :6; - unsigned short POE8M:2; - } BIT; - } ICSR2; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char CH0HIZ:1; - unsigned char CH34HIZ:1; - } BIT; - } SPOER; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char PE3ZE:1; - unsigned char PE2ZE:1; - unsigned char PE1ZE:1; - unsigned char PE0ZE:1; - } BIT; - } POECR1; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char P1CZEA:1; - unsigned char P2CZEA:1; - unsigned char P3CZEA:1; - } BIT; - } POECR2; - char wk1[1]; - union { - unsigned short WORD; - struct { - unsigned short :3; - unsigned short OSTSTF:1; - unsigned short :2; - unsigned short OSTSTE:1; - } BIT; - } ICSR3; -}; - -struct st_port0 { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char :1; - unsigned char B5:1; - unsigned char :1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char :1; - unsigned char B5:1; - unsigned char :1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PODR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char :1; - unsigned char B5:1; - unsigned char :1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PIDR; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char :1; - unsigned char B5:1; - unsigned char :1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PMR; - char wk3[31]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char :1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR0; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :3; - unsigned char B2:1; - } BIT; - } ODR1; - char wk4[62]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char :1; - unsigned char B5:1; - unsigned char :1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; - char wk5[31]; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DSCR; -}; - -struct st_port1 { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PODR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PIDR; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PMR; - char wk3[32]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char :1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR0; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char :1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR1; - char wk4[61]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; -}; - -struct st_port2 { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PODR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PIDR; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PMR; - char wk3[33]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char :1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR0; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char :1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR1; - char wk4[60]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; - char wk5[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - } BIT; - } DSCR; -}; - -struct st_port3 { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PODR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PIDR; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PMR; - char wk3[34]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char :1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR0; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char :1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR1; - char wk4[59]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; -}; - -struct st_port4 { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PODR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PIDR; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PMR; - char wk3[35]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char :1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR0; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char :1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR1; - char wk4[58]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; -}; - -struct st_port5 { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PODR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PIDR; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PMR; - char wk3[36]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char :1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR0; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char :1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR1; - char wk4[57]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; - char wk5[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char :3; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DSCR; -}; - -struct st_port6 { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PODR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PIDR; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PMR; - char wk3[37]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char :1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR0; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char :1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR1; - char wk4[56]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; -}; - -struct st_port7 { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PODR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PIDR; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PMR; - char wk3[38]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char :1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR0; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char :1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR1; - char wk4[55]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; -}; - -struct st_port8 { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PODR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PIDR; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PMR; - char wk3[39]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char :1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR0; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char :1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR1; - char wk4[54]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; -}; - -struct st_port9 { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PODR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PIDR; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PMR; - char wk3[40]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char :1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR0; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char :1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR1; - char wk4[53]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; - char wk5[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DSCR; -}; - -struct st_porta { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PODR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PIDR; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PMR; - char wk3[41]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char :1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR0; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char :1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR1; - char wk4[52]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; - char wk5[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DSCR; -}; - -struct st_portb { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PODR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PIDR; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PMR; - char wk3[42]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char :1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR0; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char :1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR1; - char wk4[51]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; - char wk5[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DSCR; -}; - -struct st_portc { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PODR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PIDR; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PMR; - char wk3[43]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char :1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR0; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char :1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR1; - char wk4[50]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; - char wk5[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DSCR; -}; - -struct st_portd { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PODR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PIDR; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PMR; - char wk3[44]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char :1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR0; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char :1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR1; - char wk4[49]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; - char wk5[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DSCR; -}; - -struct st_porte { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PODR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PIDR; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PMR; - char wk3[45]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR0; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char :1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR1; - char wk4[48]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; - char wk5[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DSCR; -}; - -struct st_portf { - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PODR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PIDR; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PMR; - char wk3[46]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char :1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR0; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR1; - char wk4[47]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; -}; - -struct st_portg { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PODR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PIDR; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PMR; - char wk3[47]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char :1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR0; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char :1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR1; - char wk4[46]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; - char wk5[31]; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DSCR; -}; - -struct st_porth { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; -}; - -struct st_portj { - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char B5:1; - unsigned char :1; - unsigned char B3:1; - } BIT; - } PDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char B5:1; - unsigned char :1; - unsigned char B3:1; - } BIT; - } PODR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char B5:1; - unsigned char :1; - unsigned char B3:1; - } BIT; - } PIDR; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char B5:1; - unsigned char :1; - unsigned char B3:1; - } BIT; - } PMR; - char wk3[49]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - } BIT; - } ODR0; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char B2:1; - } BIT; - } ODR1; - char wk4[44]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char B5:1; - unsigned char :1; - unsigned char B3:1; - } BIT; - } PCR; -}; - -struct st_ppg0 { - union { - unsigned char BYTE; - struct { - unsigned char G3CMS:2; - unsigned char G2CMS:2; - unsigned char G1CMS:2; - unsigned char G0CMS:2; - } BIT; - } PCR; - union { - unsigned char BYTE; - struct { - unsigned char G3INV:1; - unsigned char G2INV:1; - unsigned char G1INV:1; - unsigned char G0INV:1; - unsigned char G3NOV:1; - unsigned char G2NOV:1; - unsigned char G1NOV:1; - unsigned char G0NOV:1; - } BIT; - } PMR; - union { - unsigned char BYTE; - struct { - unsigned char NDER15:1; - unsigned char NDER14:1; - unsigned char NDER13:1; - unsigned char NDER12:1; - unsigned char NDER11:1; - unsigned char NDER10:1; - unsigned char NDER9:1; - unsigned char NDER8:1; - } BIT; - } NDERH; - union { - unsigned char BYTE; - struct { - unsigned char NDER7:1; - unsigned char NDER6:1; - unsigned char NDER5:1; - unsigned char NDER4:1; - unsigned char NDER3:1; - unsigned char NDER2:1; - unsigned char NDER1:1; - unsigned char NDER0:1; - } BIT; - } NDERL; - union { - unsigned char BYTE; - struct { - unsigned char POD15:1; - unsigned char POD14:1; - unsigned char POD13:1; - unsigned char POD12:1; - unsigned char POD11:1; - unsigned char POD10:1; - unsigned char POD9:1; - unsigned char POD8:1; - } BIT; - } PODRH; - union { - unsigned char BYTE; - struct { - unsigned char POD7:1; - unsigned char POD6:1; - unsigned char POD5:1; - unsigned char POD4:1; - unsigned char POD3:1; - unsigned char POD2:1; - unsigned char POD1:1; - unsigned char POD0:1; - } BIT; - } PODRL; - union { - unsigned char BYTE; - struct { - unsigned char NDR15:1; - unsigned char NDR14:1; - unsigned char NDR13:1; - unsigned char NDR12:1; - unsigned char NDR11:1; - unsigned char NDR10:1; - unsigned char NDR9:1; - unsigned char NDR8:1; - } BIT; - } NDRH; - union { - unsigned char BYTE; - struct { - unsigned char NDR7:1; - unsigned char NDR6:1; - unsigned char NDR5:1; - unsigned char NDR4:1; - unsigned char NDR3:1; - unsigned char NDR2:1; - unsigned char NDR1:1; - unsigned char NDR0:1; - } BIT; - } NDRL; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char NDR11:1; - unsigned char NDR10:1; - unsigned char NDR9:1; - unsigned char NDR8:1; - } BIT; - } NDRH2; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char NDR3:1; - unsigned char NDR2:1; - unsigned char NDR1:1; - unsigned char NDR0:1; - } BIT; - } NDRL2; -}; - -struct st_ppg1 { - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char PTRSL:1; - } BIT; - } PTRSLR; - char wk0[5]; - union { - unsigned char BYTE; - struct { - unsigned char G3CMS:2; - unsigned char G2CMS:2; - unsigned char G1CMS:2; - unsigned char G0CMS:2; - } BIT; - } PCR; - union { - unsigned char BYTE; - struct { - unsigned char G3INV:1; - unsigned char G2INV:1; - unsigned char G1INV:1; - unsigned char G0INV:1; - unsigned char G3NOV:1; - unsigned char G2NOV:1; - unsigned char G1NOV:1; - unsigned char G0NOV:1; - } BIT; - } PMR; - union { - unsigned char BYTE; - struct { - unsigned char NDER31:1; - unsigned char NDER30:1; - unsigned char NDER29:1; - unsigned char NDER28:1; - unsigned char NDER27:1; - unsigned char NDER26:1; - unsigned char NDER25:1; - unsigned char NDER24:1; - } BIT; - } NDERH; - union { - unsigned char BYTE; - struct { - unsigned char NDER23:1; - unsigned char NDER22:1; - unsigned char NDER21:1; - unsigned char NDER20:1; - unsigned char NDER19:1; - unsigned char NDER18:1; - unsigned char NDER17:1; - unsigned char NDER16:1; - } BIT; - } NDERL; - union { - unsigned char BYTE; - struct { - unsigned char POD31:1; - unsigned char POD30:1; - unsigned char POD29:1; - unsigned char POD28:1; - unsigned char POD27:1; - unsigned char POD26:1; - unsigned char POD25:1; - unsigned char POD24:1; - } BIT; - } PODRH; - union { - unsigned char BYTE; - struct { - unsigned char POD23:1; - unsigned char POD22:1; - unsigned char POD21:1; - unsigned char POD20:1; - unsigned char POD19:1; - unsigned char POD18:1; - unsigned char POD17:1; - unsigned char POD16:1; - } BIT; - } PODRL; - union { - unsigned char BYTE; - struct { - unsigned char NDR31:1; - unsigned char NDR30:1; - unsigned char NDR29:1; - unsigned char NDR28:1; - unsigned char NDR27:1; - unsigned char NDR26:1; - unsigned char NDR25:1; - unsigned char NDR24:1; - } BIT; - } NDRH; - union { - unsigned char BYTE; - struct { - unsigned char NDR23:1; - unsigned char NDR22:1; - unsigned char NDR21:1; - unsigned char NDR20:1; - unsigned char NDR19:1; - unsigned char NDR18:1; - unsigned char NDR17:1; - unsigned char NDR16:1; - } BIT; - } NDRL; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char NDR27:1; - unsigned char NDR26:1; - unsigned char NDR25:1; - unsigned char NDR24:1; - } BIT; - } NDRH2; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char NDR19:1; - unsigned char NDR18:1; - unsigned char NDR17:1; - unsigned char NDR16:1; - } BIT; - } NDRL2; -}; - -struct st_riic0 { - union { - unsigned char BYTE; - struct { - unsigned char ICE:1; - unsigned char IICRST:1; - unsigned char CLO:1; - unsigned char SOWP:1; - unsigned char SCLO:1; - unsigned char SDAO:1; - unsigned char SCLI:1; - unsigned char SDAI:1; - } BIT; - } ICCR1; - union { - unsigned char BYTE; - struct { - unsigned char BBSY:1; - unsigned char MST:1; - unsigned char TRS:1; - unsigned char :1; - unsigned char SP:1; - unsigned char RS:1; - unsigned char ST:1; - } BIT; - } ICCR2; - union { - unsigned char BYTE; - struct { - unsigned char MTWP:1; - unsigned char CKS:3; - unsigned char BCWP:1; - unsigned char BC:3; - } BIT; - } ICMR1; - union { - unsigned char BYTE; - struct { - unsigned char DLCS:1; - unsigned char SDDL:3; - unsigned char :1; - unsigned char TMOH:1; - unsigned char TMOL:1; - unsigned char TMOS:1; - } BIT; - } ICMR2; - union { - unsigned char BYTE; - struct { - unsigned char SMBS:1; - unsigned char WAIT:1; - unsigned char RDRFS:1; - unsigned char ACKWP:1; - unsigned char ACKBT:1; - unsigned char ACKBR:1; - unsigned char NF:2; - } BIT; - } ICMR3; - union { - unsigned char BYTE; - struct { - unsigned char FMPE:1; - unsigned char SCLE:1; - unsigned char NFE:1; - unsigned char NACKE:1; - unsigned char SALE:1; - unsigned char NALE:1; - unsigned char MALE:1; - unsigned char TMOE:1; - } BIT; - } ICFER; - union { - unsigned char BYTE; - struct { - unsigned char HOAE:1; - unsigned char :1; - unsigned char DIDE:1; - unsigned char :1; - unsigned char GCAE:1; - unsigned char SAR2E:1; - unsigned char SAR1E:1; - unsigned char SAR0E:1; - } BIT; - } ICSER; - union { - unsigned char BYTE; - struct { - unsigned char TIE:1; - unsigned char TEIE:1; - unsigned char RIE:1; - unsigned char NAKIE:1; - unsigned char SPIE:1; - unsigned char STIE:1; - unsigned char ALIE:1; - unsigned char TMOIE:1; - } BIT; - } ICIER; - union { - unsigned char BYTE; - struct { - unsigned char HOA:1; - unsigned char :1; - unsigned char DID:1; - unsigned char :1; - unsigned char GCA:1; - unsigned char AAS2:1; - unsigned char AAS1:1; - unsigned char AAS0:1; - } BIT; - } ICSR1; - union { - unsigned char BYTE; - struct { - unsigned char TDRE:1; - unsigned char TEND:1; - unsigned char RDRF:1; - unsigned char NACKF:1; - unsigned char STOP:1; - unsigned char START:1; - unsigned char AL:1; - unsigned char TMOF:1; - } BIT; - } ICSR2; - union { - unsigned char BYTE; - struct { - unsigned char SVA:7; - unsigned char SVA0:1; - } BIT; - } SARL0; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char SVA:2; - unsigned char FS:1; - } BIT; - } SARU0; - union { - unsigned char BYTE; - struct { - unsigned char SVA:7; - unsigned char SVA0:1; - } BIT; - } SARL1; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char SVA:2; - unsigned char FS:1; - } BIT; - } SARU1; - union { - unsigned char BYTE; - struct { - unsigned char SVA:7; - unsigned char SVA0:1; - } BIT; - } SARL2; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char SVA:2; - unsigned char FS:1; - } BIT; - } SARU2; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char BRL:5; - } BIT; - } ICBRL; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char BRH:5; - } BIT; - } ICBRH; - unsigned char ICDRT; - unsigned char ICDRR; -}; - -struct st_riic1 { - union { - unsigned char BYTE; - struct { - unsigned char ICE:1; - unsigned char IICRST:1; - unsigned char CLO:1; - unsigned char SOWP:1; - unsigned char SCLO:1; - unsigned char SDAO:1; - unsigned char SCLI:1; - unsigned char SDAI:1; - } BIT; - } ICCR1; - union { - unsigned char BYTE; - struct { - unsigned char BBSY:1; - unsigned char MST:1; - unsigned char TRS:1; - unsigned char :1; - unsigned char SP:1; - unsigned char RS:1; - unsigned char ST:1; - } BIT; - } ICCR2; - union { - unsigned char BYTE; - struct { - unsigned char MTWP:1; - unsigned char CKS:3; - unsigned char BCWP:1; - unsigned char BC:3; - } BIT; - } ICMR1; - union { - unsigned char BYTE; - struct { - unsigned char DLCS:1; - unsigned char SDDL:3; - unsigned char :1; - unsigned char TMOH:1; - unsigned char TMOL:1; - unsigned char TMOS:1; - } BIT; - } ICMR2; - union { - unsigned char BYTE; - struct { - unsigned char SMBS:1; - unsigned char WAIT:1; - unsigned char RDRFS:1; - unsigned char ACKWP:1; - unsigned char ACKBT:1; - unsigned char ACKBR:1; - unsigned char NF:2; - } BIT; - } ICMR3; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char SCLE:1; - unsigned char NFE:1; - unsigned char NACKE:1; - unsigned char SALE:1; - unsigned char NALE:1; - unsigned char MALE:1; - unsigned char TMOE:1; - } BIT; - } ICFER; - union { - unsigned char BYTE; - struct { - unsigned char HOAE:1; - unsigned char :1; - unsigned char DIDE:1; - unsigned char :1; - unsigned char GCAE:1; - unsigned char SAR2E:1; - unsigned char SAR1E:1; - unsigned char SAR0E:1; - } BIT; - } ICSER; - union { - unsigned char BYTE; - struct { - unsigned char TIE:1; - unsigned char TEIE:1; - unsigned char RIE:1; - unsigned char NAKIE:1; - unsigned char SPIE:1; - unsigned char STIE:1; - unsigned char ALIE:1; - unsigned char TMOIE:1; - } BIT; - } ICIER; - union { - unsigned char BYTE; - struct { - unsigned char HOA:1; - unsigned char :1; - unsigned char DID:1; - unsigned char :1; - unsigned char GCA:1; - unsigned char AAS2:1; - unsigned char AAS1:1; - unsigned char AAS0:1; - } BIT; - } ICSR1; - union { - unsigned char BYTE; - struct { - unsigned char TDRE:1; - unsigned char TEND:1; - unsigned char RDRF:1; - unsigned char NACKF:1; - unsigned char STOP:1; - unsigned char START:1; - unsigned char AL:1; - unsigned char TMOF:1; - } BIT; - } ICSR2; - union { - unsigned char BYTE; - struct { - unsigned char SVA:7; - unsigned char SVA0:1; - } BIT; - } SARL0; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char SVA:2; - unsigned char FS:1; - } BIT; - } SARU0; - union { - unsigned char BYTE; - struct { - unsigned char SVA:7; - unsigned char SVA0:1; - } BIT; - } SARL1; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char SVA:2; - unsigned char FS:1; - } BIT; - } SARU1; - union { - unsigned char BYTE; - struct { - unsigned char SVA:7; - unsigned char SVA0:1; - } BIT; - } SARL2; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char SVA:2; - unsigned char FS:1; - } BIT; - } SARU2; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char BRL:5; - } BIT; - } ICBRL; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char BRH:5; - } BIT; - } ICBRH; - unsigned char ICDRT; - unsigned char ICDRR; -}; - -struct st_rspi { - union { - unsigned char BYTE; - struct { - unsigned char SPRIE:1; - unsigned char SPE:1; - unsigned char SPTIE:1; - unsigned char SPEIE:1; - unsigned char MSTR:1; - unsigned char MODFEN:1; - unsigned char TXMD:1; - unsigned char SPMS:1; - } BIT; - } SPCR; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char SSL3P:1; - unsigned char SSL2P:1; - unsigned char SSL1P:1; - unsigned char SSL0P:1; - } BIT; - } SSLP; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char MOIFE:1; - unsigned char MOIFV:1; - unsigned char :1; - unsigned char SPOM:1; - unsigned char SPLP2:1; - unsigned char SPLP:1; - } BIT; - } SPPCR; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char PERF:1; - unsigned char MODF:1; - unsigned char IDLNF:1; - unsigned char OVRF:1; - } BIT; - } SPSR; - //unsigned long SPDR; - union { - unsigned long LONG; - struct { - unsigned short H; - unsigned short L; - } WORD; - } SPDR; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char SPSLN:3; - } BIT; - } SPSCR; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char SPECM:3; - unsigned char :1; - unsigned char SPCP:3; - } BIT; - } SPSSR; - union { - unsigned char BYTE; - struct { - unsigned char SPR7:1; - unsigned char SPR6:1; - unsigned char SPR5:1; - unsigned char SPR4:1; - unsigned char SPR3:1; - unsigned char SPR2:1; - unsigned char SPR1:1; - unsigned char SPR0:1; - } BIT; - } SPBR; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char SPLW:1; - unsigned char SPRDTD:1; - unsigned char SLSEL:2; - unsigned char SPFC:2; - } BIT; - } SPDCR; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char SCKDL:3; - } BIT; - } SPCKD; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char SLNDL:3; - } BIT; - } SSLND; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char SPNDL:3; - } BIT; - } SPND; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char PTE:1; - unsigned char SPIIE:1; - unsigned char SPOE:1; - unsigned char SPPE:1; - } BIT; - } SPCR2; - union { - unsigned short WORD; - struct { - unsigned short SCKDEN:1; - unsigned short SLNDEN:1; - unsigned short SPNDEN:1; - unsigned short LSBF:1; - unsigned short SPB:4; - unsigned short SSLKP:1; - unsigned short SSLA:3; - unsigned short BRDV:2; - unsigned short CPOL:1; - unsigned short CPHA:1; - } BIT; - } SPCMD0; - union { - unsigned short WORD; - struct { - unsigned short SCKDEN:1; - unsigned short SLNDEN:1; - unsigned short SPNDEN:1; - unsigned short LSBF:1; - unsigned short SPB:4; - unsigned short SSLKP:1; - unsigned short SSLA:3; - unsigned short BRDV:2; - unsigned short CPOL:1; - unsigned short CPHA:1; - } BIT; - } SPCMD1; - union { - unsigned short WORD; - struct { - unsigned short SCKDEN:1; - unsigned short SLNDEN:1; - unsigned short SPNDEN:1; - unsigned short LSBF:1; - unsigned short SPB:4; - unsigned short SSLKP:1; - unsigned short SSLA:3; - unsigned short BRDV:2; - unsigned short CPOL:1; - unsigned short CPHA:1; - } BIT; - } SPCMD2; - union { - unsigned short WORD; - struct { - unsigned short SCKDEN:1; - unsigned short SLNDEN:1; - unsigned short SPNDEN:1; - unsigned short LSBF:1; - unsigned short SPB:4; - unsigned short SSLKP:1; - unsigned short SSLA:3; - unsigned short BRDV:2; - unsigned short CPOL:1; - unsigned short CPHA:1; - } BIT; - } SPCMD3; - union { - unsigned short WORD; - struct { - unsigned short SCKDEN:1; - unsigned short SLNDEN:1; - unsigned short SPNDEN:1; - unsigned short LSBF:1; - unsigned short SPB:4; - unsigned short SSLKP:1; - unsigned short SSLA:3; - unsigned short BRDV:2; - unsigned short CPOL:1; - unsigned short CPHA:1; - } BIT; - } SPCMD4; - union { - unsigned short WORD; - struct { - unsigned short SCKDEN:1; - unsigned short SLNDEN:1; - unsigned short SPNDEN:1; - unsigned short LSBF:1; - unsigned short SPB:4; - unsigned short SSLKP:1; - unsigned short SSLA:3; - unsigned short BRDV:2; - unsigned short CPOL:1; - unsigned short CPHA:1; - } BIT; - } SPCMD5; - union { - unsigned short WORD; - struct { - unsigned short SCKDEN:1; - unsigned short SLNDEN:1; - unsigned short SPNDEN:1; - unsigned short LSBF:1; - unsigned short SPB:4; - unsigned short SSLKP:1; - unsigned short SSLA:3; - unsigned short BRDV:2; - unsigned short CPOL:1; - unsigned short CPHA:1; - } BIT; - } SPCMD6; - union { - unsigned short WORD; - struct { - unsigned short SCKDEN:1; - unsigned short SLNDEN:1; - unsigned short SPNDEN:1; - unsigned short LSBF:1; - unsigned short SPB:4; - unsigned short SSLKP:1; - unsigned short SSLA:3; - unsigned short BRDV:2; - unsigned short CPOL:1; - unsigned short CPHA:1; - } BIT; - } SPCMD7; -}; - -struct st_rtc { - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char F1HZ:1; - unsigned char F2HZ:1; - unsigned char F4HZ:1; - unsigned char F8HZ:1; - unsigned char F16HZ:1; - unsigned char F32HZ:1; - unsigned char F64HZ:1; - } BIT; - } R64CNT; - char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char SEC10:3; - unsigned char SEC1:4; - } BIT; - } RSECCNT; - char wk1[1]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char MIN10:3; - unsigned char MIN1:4; - } BIT; - } RMINCNT; - char wk2[1]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char PM:1; - unsigned char HR10:2; - unsigned char HR1:4; - } BIT; - } RHRCNT; - char wk3[1]; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char DAYW:3; - } BIT; - } RWKCNT; - char wk4[1]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char DATE10:2; - unsigned char DATE1:4; - } BIT; - } RDAYCNT; - char wk5[1]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char MON10:1; - unsigned char MON1:4; - } BIT; - } RMONCNT; - char wk6[1]; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short YR10:4; - unsigned short YR1:4; - } BIT; - } RYRCNT; - union { - unsigned char BYTE; - struct { - unsigned char ENB:1; - unsigned char SEC10:3; - unsigned char SEC1:4; - } BIT; - } RSECAR; - char wk7[1]; - union { - unsigned char BYTE; - struct { - unsigned char ENB:1; - unsigned char MIN10:3; - unsigned char MIN1:4; - } BIT; - } RMINAR; - char wk8[1]; - union { - unsigned char BYTE; - struct { - unsigned char ENB:1; - unsigned char PM:1; - unsigned char HR10:2; - unsigned char HR1:4; - } BIT; - } RHRAR; - char wk9[1]; - union { - unsigned char BYTE; - struct { - unsigned char ENB:1; - unsigned char :4; - unsigned char DAYW:3; - } BIT; - } RWKAR; - char wk10[1]; - union { - unsigned char BYTE; - struct { - unsigned char ENB:1; - unsigned char :1; - unsigned char DATE10:2; - unsigned char DATE1:4; - } BIT; - } RDAYAR; - char wk11[1]; - union { - unsigned char BYTE; - struct { - unsigned char ENB:1; - unsigned char :2; - unsigned char MON10:1; - unsigned char MON1:4; - } BIT; - } RMONAR; - char wk12[1]; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short YR10:4; - unsigned short YR1:4; - } BIT; - } RYRAR; - union { - unsigned char BYTE; - struct { - unsigned char ENB:1; - } BIT; - } RYRAREN; - char wk13[3]; - union { - unsigned char BYTE; - struct { - unsigned char PES:4; - unsigned char :1; - unsigned char PIE:1; - unsigned char CIE:1; - unsigned char AIE:1; - } BIT; - } RCR1; - char wk14[1]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char HR24:1; - unsigned char AADJP:1; - unsigned char AADJE:1; - unsigned char RTCOE:1; - unsigned char ADJ30:1; - unsigned char RESET:1; - unsigned char START:1; - } BIT; - } RCR2; - char wk15[1]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char RTCEN:1; - } BIT; - } RCR3; - char wk16[1]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char RCKSEL:1; - } BIT; - } RCR4; - char wk17[1]; - union { - unsigned short WORD; - struct { - unsigned short :15; - unsigned short RFC:1; - } BIT; - } RFRH; - union { - unsigned short WORD; - struct { - unsigned short RFC:16; - } BIT; - } RFRL; - union { - unsigned char BYTE; - struct { - unsigned char PMADJ:2; - unsigned char ADJ:6; - } BIT; - } RADJ; - char wk18[17]; - union { - unsigned char BYTE; - struct { - unsigned char TCEN:1; - unsigned char :1; - unsigned char TCNF:2; - unsigned char :1; - unsigned char TCST:1; - unsigned char TCCT:2; - } BIT; - } RTCCR0; - char wk19[1]; - union { - unsigned char BYTE; - struct { - unsigned char TCEN:1; - unsigned char :1; - unsigned char TCNF:2; - unsigned char :1; - unsigned char TCST:1; - unsigned char TCCT:2; - } BIT; - } RTCCR1; - char wk20[1]; - union { - unsigned char BYTE; - struct { - unsigned char TCEN:1; - unsigned char :1; - unsigned char TCNF:2; - unsigned char :1; - unsigned char TCST:1; - unsigned char TCCT:2; - } BIT; - } RTCCR2; - char wk21[13]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char SEC10:3; - unsigned char SEC1:4; - } BIT; - } RSECCP0; - char wk22[1]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char MIN10:3; - unsigned char MIN1:4; - } BIT; - } RMINCP0; - char wk23[1]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char PM:1; - unsigned char HR10:2; - unsigned char HR1:4; - } BIT; - } RHRCP0; - char wk24[3]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char DATE10:3; - unsigned char DATE1:4; - } BIT; - } RDAYCP0; - char wk25[1]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char MON10:1; - unsigned char MON1:4; - } BIT; - } RMONCP0; - char wk26[5]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char SEC10:3; - unsigned char SEC1:4; - } BIT; - } RSECCP1; - char wk27[1]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char MIN10:3; - unsigned char MIN1:4; - } BIT; - } RMINCP1; - char wk28[1]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char PM:1; - unsigned char HR10:2; - unsigned char HR1:4; - } BIT; - } RHRCP1; - char wk29[3]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char DATE10:3; - unsigned char DATE1:4; - } BIT; - } RDAYCP1; - char wk30[1]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char MON10:1; - unsigned char MON1:4; - } BIT; - } RMONCP1; - char wk31[5]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char SEC10:3; - unsigned char SEC1:4; - } BIT; - } RSECCP2; - char wk32[1]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char MIN10:3; - unsigned char MIN1:4; - } BIT; - } RMINCP2; - char wk33[1]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char PM:1; - unsigned char HR10:2; - unsigned char HR1:4; - } BIT; - } RHRCP2; - char wk34[3]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char DATE10:3; - unsigned char DATE1:4; - } BIT; - } RDAYCP2; - char wk35[1]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char MON10:1; - unsigned char MON1:4; - } BIT; - } RMONCP2; -}; - -struct st_s12ad { - union { - unsigned char BYTE; - struct { - unsigned char ADST:1; - unsigned char ADCS:1; - unsigned char :1; - unsigned char ADIE:1; - unsigned char CKS:2; - unsigned char TRGE:1; - unsigned char EXTRG:1; - } BIT; - } ADCSR; - char wk0[3]; - union { - unsigned short WORD; - struct { - unsigned short ANS0:16; - } BIT; - } ADANS0; - union { - unsigned short WORD; - struct { - unsigned short :11; - unsigned short ANS1:5; - } BIT; - } ADANS1; - union { - unsigned short WORD; - struct { - unsigned short ADS0:16; - } BIT; - } ADADS0; - union { - unsigned short WORD; - struct { - unsigned short :11; - unsigned short ADS1:5; - } BIT; - } ADADS1; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char ADC:2; - } BIT; - } ADADC; - char wk1[1]; - union { - unsigned short WORD; - struct { - unsigned short ADRFMT:1; - unsigned short :9; - unsigned short ACE:1; - } BIT; - } ADCER; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char ADSTRS:4; - } BIT; - } ADSTRGR; - char wk2[1]; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short OCS:1; - unsigned short TSS:1; - unsigned short :6; - unsigned short OCSAD:1; - unsigned short TSSAD:1; - } BIT; - } ADEXICR; - char wk3[6]; - unsigned short ADTSDR; - unsigned short ADOCDR; - char wk4[2]; - unsigned short ADDR0; - unsigned short ADDR1; - unsigned short ADDR2; - unsigned short ADDR3; - unsigned short ADDR4; - unsigned short ADDR5; - unsigned short ADDR6; - unsigned short ADDR7; - unsigned short ADDR8; - unsigned short ADDR9; - unsigned short ADDR10; - unsigned short ADDR11; - unsigned short ADDR12; - unsigned short ADDR13; - unsigned short ADDR14; - unsigned short ADDR15; - unsigned short ADDR16; - unsigned short ADDR17; - unsigned short ADDR18; - unsigned short ADDR19; - unsigned short ADDR20; - char wk5[38]; - union { - unsigned short WORD; - struct { - unsigned short SST2:8; - } BIT; - } ADSSTR23; -}; - -struct st_sci0 { - union { - unsigned char BYTE; - struct { - unsigned char CM:1; - unsigned char CHR:1; - unsigned char PE:1; - unsigned char PM:1; - unsigned char STOP:1; - unsigned char MP:1; - unsigned char CKS:2; - } BIT; - } SMR; - unsigned char BRR; - union { - unsigned char BYTE; - struct { - unsigned char TIE:1; - unsigned char RIE:1; - unsigned char TE:1; - unsigned char RE:1; - unsigned char MPIE:1; - unsigned char TEIE:1; - unsigned char CKE:2; - } BIT; - } SCR; - unsigned char TDR; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char ORER:1; - unsigned char FER:1; - unsigned char PER:1; - unsigned char TEND:1; - unsigned char MPB:1; - unsigned char MPBT:1; - } BIT; - } SSR; - unsigned char RDR; - union { - unsigned char BYTE; - struct { - unsigned char BCP2:1; - unsigned char :3; - unsigned char SDIR:1; - unsigned char SINV:1; - unsigned char :1; - unsigned char SMIF:1; - } BIT; - } SCMR; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char NFEN:1; - unsigned char ABCS:1; - unsigned char :3; - unsigned char ACS0:1; - } BIT; - } SEMR; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char NFCS:3; - } BIT; - } SNFR; - union { - unsigned char BYTE; - struct { - unsigned char IICDL:5; - unsigned char :2; - unsigned char IICM:1; - } BIT; - } SIMR1; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char IICACKT:1; - unsigned char :3; - unsigned char IICCSC:1; - unsigned char IICINTM:1; - } BIT; - } SIMR2; - union { - unsigned char BYTE; - struct { - unsigned char IICSCLS:2; - unsigned char IICSDAS:2; - unsigned char IICSTIF:1; - unsigned char IICSTPREQ:1; - unsigned char IICRSTAREQ:1; - unsigned char IICSTAREQ:1; - } BIT; - } SIMR3; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char IICACKR:1; - } BIT; - } SISR; - union { - unsigned char BYTE; - struct { - unsigned char CKPH:1; - unsigned char CKPOL:1; - unsigned char :1; - unsigned char MFF:1; - unsigned char :1; - unsigned char MSS:1; - unsigned char CTSE:1; - unsigned char SSE:1; - } BIT; - } SPMR; -}; - -struct st_sci7 { - union { - unsigned char BYTE; - struct { - unsigned char CM:1; - unsigned char CHR:1; - unsigned char PE:1; - unsigned char PM:1; - unsigned char STOP:1; - unsigned char MP:1; - unsigned char CKS:2; - } BIT; - } SMR; - unsigned char BRR; - union { - unsigned char BYTE; - struct { - unsigned char TIE:1; - unsigned char RIE:1; - unsigned char TE:1; - unsigned char RE:1; - unsigned char MPIE:1; - unsigned char TEIE:1; - unsigned char CKE:2; - } BIT; - } SCR; - unsigned char TDR; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char ORER:1; - unsigned char FER:1; - unsigned char PER:1; - unsigned char TEND:1; - unsigned char MPB:1; - unsigned char MPBT:1; - } BIT; - } SSR; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char MPB:1; - unsigned char MPBT:1; - } BIT; - } RDR; - union { - unsigned char BYTE; - struct { - unsigned char BCP2:1; - unsigned char :3; - unsigned char SDIR:1; - unsigned char SINV:1; - unsigned char :1; - unsigned char SMIF:1; - } BIT; - } SCMR; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char NFEN:1; - unsigned char ABCS:1; - unsigned char :3; - unsigned char ACS0:1; - } BIT; - } SEMR; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char NFCS:3; - } BIT; - } SNFR; - union { - unsigned char BYTE; - struct { - unsigned char IICDL:5; - unsigned char :2; - unsigned char IICM:1; - } BIT; - } SIMR1; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char IICACKT:1; - unsigned char :3; - unsigned char IICCSC:1; - unsigned char IICINTM:1; - } BIT; - } SIMR2; - union { - unsigned char BYTE; - struct { - unsigned char IICSCLS:2; - unsigned char IICSDAS:2; - unsigned char IICSTIF:1; - unsigned char IICSTPREQ:1; - unsigned char IICRSTAREQ:1; - unsigned char IICSTAREQ:1; - } BIT; - } SIMR3; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char IICACKR:1; - } BIT; - } SISR; - union { - unsigned char BYTE; - struct { - unsigned char CKPH:1; - unsigned char CKPOL:1; - unsigned char :1; - unsigned char MFF:1; - unsigned char :1; - unsigned char MSS:1; - unsigned char CTSE:1; - unsigned char SSE:1; - } BIT; - } SPMR; -}; - -struct st_sci12 { - union { - unsigned char BYTE; - struct { - unsigned char CM:1; - unsigned char CHR:1; - unsigned char PE:1; - unsigned char PM:1; - unsigned char STOP:1; - unsigned char MP:1; - unsigned char CKS:2; - } BIT; - } SMR; - unsigned char BRR; - union { - unsigned char BYTE; - struct { - unsigned char TIE:1; - unsigned char RIE:1; - unsigned char TE:1; - unsigned char RE:1; - unsigned char MPIE:1; - unsigned char TEIE:1; - unsigned char CKE:2; - } BIT; - } SCR; - unsigned char TDR; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char ORER:1; - unsigned char FER:1; - unsigned char PER:1; - unsigned char TEND:1; - unsigned char MPB:1; - unsigned char MPBT:1; - } BIT; - } SSR; - unsigned char RDR; - union { - unsigned char BYTE; - struct { - unsigned char BCP2:1; - unsigned char :3; - unsigned char SDIR:1; - unsigned char SINV:1; - unsigned char :1; - unsigned char SMIF:1; - } BIT; - } SCMR; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char NFEN:1; - unsigned char ABCS:1; - unsigned char :3; - unsigned char ACS0:1; - } BIT; - } SEMR; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char NFCS:3; - } BIT; - } SNFR; - union { - unsigned char BYTE; - struct { - unsigned char IICDL:5; - unsigned char :2; - unsigned char IICM:1; - } BIT; - } SIMR1; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char IICACKT:1; - unsigned char :3; - unsigned char IICCSC:1; - unsigned char IICINTM:1; - } BIT; - } SIMR2; - union { - unsigned char BYTE; - struct { - unsigned char IICSCLS:2; - unsigned char IICSDAS:2; - unsigned char IICSTIF:1; - unsigned char IICSTPREQ:1; - unsigned char IICRSTAREQ:1; - unsigned char IICSTAREQ:1; - } BIT; - } SIMR3; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char IICACKR:1; - } BIT; - } SISR; - union { - unsigned char BYTE; - struct { - unsigned char CKPH:1; - unsigned char CKPOL:1; - unsigned char :1; - unsigned char MFF:1; - unsigned char :1; - unsigned char MSS:1; - unsigned char CTSE:1; - unsigned char SSE:1; - } BIT; - } SPMR; - char wk0[18]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char ESME:1; - } BIT; - } ESMER; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char BRME:1; - unsigned char RXDSF:1; - unsigned char SFSF:1; - } BIT; - } CR0; - union { - unsigned char BYTE; - struct { - unsigned char PIBS:3; - unsigned char PIBE:1; - unsigned char CF1DS:2; - unsigned char CF0RE:1; - unsigned char BFE:1; - } BIT; - } CR1; - union { - unsigned char BYTE; - struct { - unsigned char RTS:2; - unsigned char BCCS:2; - unsigned char :1; - unsigned char DFCS:3; - } BIT; - } CR2; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char SDST:1; - } BIT; - } CR3; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char SHARPS:1; - unsigned char :2; - unsigned char RXDXPS:1; - unsigned char TXDXPS:1; - } BIT; - } PCR; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char AEDIE:1; - unsigned char BCDIE:1; - unsigned char PIBDIE:1; - unsigned char CF1MIE:1; - unsigned char CF0MIE:1; - unsigned char BFDIE:1; - } BIT; - } ICR; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char AEDF:1; - unsigned char BCDF:1; - unsigned char PIBDF:1; - unsigned char CF1MF:1; - unsigned char CF0MF:1; - unsigned char BFDF:1; - } BIT; - } STR; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char AEDCL:1; - unsigned char BCDCL:1; - unsigned char PIBDCL:1; - unsigned char CF1MCL:1; - unsigned char CF0MCL:1; - unsigned char BFDCL:1; - } BIT; - } STCR; - unsigned char CF0DR; - union { - unsigned char BYTE; - struct { - unsigned char CF0CE7:1; - unsigned char CF0CE6:1; - unsigned char CF0CE5:1; - unsigned char CF0CE4:1; - unsigned char CF0CE3:1; - unsigned char CF0CE2:1; - unsigned char CF0CE1:1; - unsigned char CF0CE0:1; - } BIT; - } CF0CR; - unsigned char CF0RR; - unsigned char PCF1DR; - unsigned char SCF1DR; - union { - unsigned char BYTE; - struct { - unsigned char CF1CE7:1; - unsigned char CF1CE6:1; - unsigned char CF1CE5:1; - unsigned char CF1CE4:1; - unsigned char CF1CE3:1; - unsigned char CF1CE2:1; - unsigned char CF1CE1:1; - unsigned char CF1CE0:1; - } BIT; - } CF1CR; - unsigned char CF1RR; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char TCST:1; - } BIT; - } TCR; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char TCSS:3; - unsigned char TWRC:1; - unsigned char :1; - unsigned char TOMS:2; - } BIT; - } TMR; - unsigned char TPRE; - unsigned char TCNT; -}; - -struct st_smci0 { - union { - unsigned char BYTE; - struct { - unsigned char GM:1; - unsigned char BCLK:1; - unsigned char PE:1; - unsigned char PM:1; - unsigned char BCP:2; - unsigned char CKS:2; - } BIT; - } SMR; - unsigned char BRR; - union { - unsigned char BYTE; - struct { - unsigned char TIE:1; - unsigned char RIE:1; - unsigned char TE:1; - unsigned char RE:1; - unsigned char MPIE:1; - unsigned char TEIE:1; - unsigned char CKE:2; - } BIT; - } SCR; - unsigned char TDR; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char ORER:1; - unsigned char ERS:1; - unsigned char PER:1; - unsigned char TEND:1; - unsigned char MPB:1; - unsigned char MPBT:1; - } BIT; - } SSR; - unsigned char RDR; - union { - unsigned char BYTE; - struct { - unsigned char BCP2:1; - unsigned char :3; - unsigned char SDIR:1; - unsigned char SINV:1; - unsigned char :1; - unsigned char SMIF:1; - } BIT; - } SCMR; -}; - -struct st_smci7 { - union { - unsigned char BYTE; - struct { - unsigned char GM:1; - unsigned char BCLK:1; - unsigned char PE:1; - unsigned char PM:1; - unsigned char BCP:2; - unsigned char CKS:2; - } BIT; - } SMR; - unsigned char BRR; - union { - unsigned char BYTE; - struct { - unsigned char TIE:1; - unsigned char RIE:1; - unsigned char TE:1; - unsigned char RE:1; - unsigned char MPIE:1; - unsigned char TEIE:1; - unsigned char CKE:2; - } BIT; - } SCR; - unsigned char TDR; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char ORER:1; - unsigned char ERS:1; - unsigned char PER:1; - unsigned char TEND:1; - } BIT; - } SSR; - unsigned char RDR; - union { - unsigned char BYTE; - struct { - unsigned char BCP2:1; - unsigned char :3; - unsigned char SDIR:1; - unsigned char SINV:1; - unsigned char :1; - unsigned char SMIF:1; - } BIT; - } SCMR; -}; - -struct st_system { - union { - unsigned short WORD; - struct { - unsigned short :15; - unsigned short MD:1; - } BIT; - } MDMONR; - union { - unsigned short WORD; - struct { - unsigned short :10; - unsigned short UBTS:1; - unsigned short BOTS:1; - unsigned short :2; - unsigned short EXB:1; - unsigned short IROM:1; - } BIT; - } MDSR; - char wk0[2]; - union { - unsigned short WORD; - struct { - unsigned short KEY:8; - unsigned short :6; - unsigned short EXBE:1; - unsigned short ROME:1; - } BIT; - } SYSCR0; - union { - unsigned short WORD; - struct { - unsigned short :15; - unsigned short RAME:1; - } BIT; - } SYSCR1; - char wk1[2]; - union { - unsigned short WORD; - struct { - unsigned short SSBY:1; - unsigned short OPE:1; - } BIT; - } SBYCR; - char wk2[2]; - union { - unsigned long LONG; - struct { - unsigned long ACSE:1; - unsigned long :1; - unsigned long MSTPA29:1; - unsigned long MSTPA28:1; - unsigned long MSTPA27:1; - unsigned long :2; - unsigned long MSTPA24:1; - unsigned long MSTPA23:1; - unsigned long :3; - unsigned long MSTPA19:1; - unsigned long :1; - unsigned long MSTPA17:1; - unsigned long :1; - unsigned long MSTPA15:1; - unsigned long MSTPA14:1; - unsigned long MSTPA13:1; - unsigned long MSTPA12:1; - unsigned long MSTPA11:1; - unsigned long MSTPA10:1; - unsigned long MSTPA9:1; - unsigned long :3; - unsigned long MSTPA5:1; - unsigned long MSTPA4:1; - } BIT; - } MSTPCRA; - union { - unsigned long LONG; - struct { - unsigned long MSTPB31:1; - unsigned long MSTPB30:1; - unsigned long MSTPB29:1; - unsigned long MSTPB28:1; - unsigned long MSTPB27:1; - unsigned long MSTPB26:1; - unsigned long MSTPB25:1; - unsigned long MSTPB24:1; - unsigned long MSTPB23:1; - unsigned long :1; - unsigned long MSTPB21:1; - unsigned long MSTPB20:1; - unsigned long MSTPB19:1; - unsigned long MSTPB18:1; - unsigned long MSTPB17:1; - unsigned long MSTPB16:1; - unsigned long MSTPB15:1; - unsigned long :6; - unsigned long MSTPB8:1; - unsigned long :3; - unsigned long MSTPB4:1; - unsigned long :1; - unsigned long MSTPB2:1; - unsigned long MSTPB1:1; - unsigned long MSTPB0:1; - } BIT; - } MSTPCRB; - union { - unsigned long LONG; - struct { - unsigned long :4; - unsigned long MSTPC27:1; - unsigned long MSTPC26:1; - unsigned long MSTPC25:1; - unsigned long MSTPC24:1; - unsigned long :1; - unsigned long MSTPC22:1; - unsigned long :2; - unsigned long MSTPC19:1; - unsigned long MSTPC18:1; - unsigned long MSTPC17:1; - unsigned long MSTPC16:1; - unsigned long :14; - unsigned long MSTPC1:1; - unsigned long MSTPC0:1; - } BIT; - } MSTPCRC; - char wk3[4]; - union { - unsigned long LONG; - struct { - unsigned long FCK:4; - unsigned long ICK:4; - unsigned long PSTOP1:1; - unsigned long PSTOP0:1; - unsigned long :2; - unsigned long BCK:4; - unsigned long PCKA:4; - unsigned long PCKB:4; - } BIT; - } SCKCR; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short UCK:4; - unsigned short IEBCK:4; - } BIT; - } SCKCR2; - union { - unsigned short WORD; - struct { - unsigned short :5; - unsigned short CKSEL:3; - } BIT; - } SCKCR3; - union { - unsigned short WORD; - struct { - unsigned short :2; - unsigned short STC:6; - unsigned short :6; - unsigned short PLIDIV:2; - } BIT; - } PLLCR; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char PLLEN:1; - } BIT; - } PLLCR2; - char wk4[5]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char BCLKDIV:1; - } BIT; - } BCKCR; - char wk5[1]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char MOSTP:1; - } BIT; - } MOSCCR; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char SOSTP:1; - } BIT; - } SOSCCR; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char LCSTP:1; - } BIT; - } LOCOCR; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char ILCSTP:1; - } BIT; - } ILOCOCR; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char HCSTP:1; - } BIT; - } HOCOCR; - char wk6[9]; - union { - unsigned char BYTE; - struct { - unsigned char OSTDE:1; - unsigned char :6; - unsigned char OSTDIE:1; - } BIT; - } OSTDCR; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char OSTDF:1; - } BIT; - } OSTDSR; - char wk7[94]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char OPCMTSF:1; - unsigned char :1; - unsigned char OPCM:3; - } BIT; - } OPCCR; - union { - unsigned char BYTE; - struct { - unsigned char RSTCKEN:1; - unsigned char :4; - unsigned char RSTCKSEL:3; - } BIT; - } RSTCKCR; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char MSTS:5; - } BIT; - } MOSCWTCR; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char SSTS:5; - } BIT; - } SOSCWTCR; - char wk8[2]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSTS:5; - } BIT; - } PLLWTCR; - char wk9[25]; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char SWRF:1; - unsigned char WDTRF:1; - unsigned char IWTDRF:1; - } BIT; - } RSTSR2; - char wk10[1]; - unsigned short SWRR; - char wk11[28]; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char LVD1IDTSEL:2; - } BIT; - } LVD1CR1; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char LVD1MON:1; - unsigned char LVD1DET:1; - } BIT; - } LVD1SR; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char LVD2IDTSEL:2; - } BIT; - } LVD2CR1; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char LVD2MON:1; - unsigned char LVD2DET:1; - } BIT; - } LVD2SR; - char wk12[794]; - union { - unsigned short WORD; - struct { - unsigned short PRKEY:8; - unsigned short :4; - unsigned short PRC3:1; - unsigned short :1; - unsigned short PRC1:1; - unsigned short PRC0:1; - } BIT; - } PRCR; - char wk13[48768]; - union { - unsigned char BYTE; - struct { - unsigned char DPSBY:1; - unsigned char IOKEEP:1; - unsigned char :4; - unsigned char DEEPCUT:2; - } BIT; - } DPSBYCR; - char wk14[1]; - union { - unsigned char BYTE; - struct { - unsigned char DIRQ7E:1; - unsigned char DIRQ6E:1; - unsigned char DIRQ5E:1; - unsigned char DIRQ4E:1; - unsigned char DIRQ3E:1; - unsigned char DIRQ2E:1; - unsigned char DIRQ1E:1; - unsigned char DIRQ0E:1; - } BIT; - } DPSIER0; - union { - unsigned char BYTE; - struct { - unsigned char DIRQ15E:1; - unsigned char DIRQ14E:1; - unsigned char DIRQ13E:1; - unsigned char DIRQ12E:1; - unsigned char DIRQ11E:1; - unsigned char DIRQ10E:1; - unsigned char DIRQ9E:1; - unsigned char DIRQ8E:1; - } BIT; - } DPSIER1; - union { - unsigned char BYTE; - struct { - unsigned char DUSBIE:1; - unsigned char DIICCIE:1; - unsigned char DIICDIE:1; - unsigned char DNMIE:1; - unsigned char DRTCAIE:1; - unsigned char DRTCIIE:1; - unsigned char DLVD2IE:1; - unsigned char DLVD1IE:1; - } BIT; - } DPSIER2; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DCANIE:1; - } BIT; - } DPSIER3; - union { - unsigned char BYTE; - struct { - unsigned char DIRQ7F:1; - unsigned char DIRQ6F:1; - unsigned char DIRQ5F:1; - unsigned char DIRQ4F:1; - unsigned char DIRQ3F:1; - unsigned char DIRQ2F:1; - unsigned char DIRQ1F:1; - unsigned char DIRQ0F:1; - } BIT; - } DPSIFR0; - union { - unsigned char BYTE; - struct { - unsigned char DIRQ15F:1; - unsigned char DIRQ14F:1; - unsigned char DIRQ13F:1; - unsigned char DIRQ12F:1; - unsigned char DIRQ11F:1; - unsigned char DIRQ10F:1; - unsigned char DIRQ9F:1; - unsigned char DIRQ8F:1; - } BIT; - } DPSIFR1; - union { - unsigned char BYTE; - struct { - unsigned char DUSBIF:1; - unsigned char DIICCIF:1; - unsigned char DIICDIF:1; - unsigned char DNMIF:1; - unsigned char DRTCAIF:1; - unsigned char DRTCIIF:1; - unsigned char DLVD2IF:1; - unsigned char DLVD1IF:1; - } BIT; - } DPSIFR2; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DCANIF:1; - } BIT; - } DPSIFR3; - union { - unsigned char BYTE; - struct { - unsigned char DIRQ7EG:1; - unsigned char DIRQ6EG:1; - unsigned char DIRQ5EG:1; - unsigned char DIRQ4EG:1; - unsigned char DIRQ3EG:1; - unsigned char DIRQ2EG:1; - unsigned char DIRQ1EG:1; - unsigned char DIRQ0EG:1; - } BIT; - } DPSIEGR0; - union { - unsigned char BYTE; - struct { - unsigned char DIRQ15EG:1; - unsigned char DIRQ14EG:1; - unsigned char DIRQ13EG:1; - unsigned char DIRQ12EG:1; - unsigned char DIRQ11EG:1; - unsigned char DIRQ10EG:1; - unsigned char DIRQ9EG:1; - unsigned char DIRQ8EG:1; - } BIT; - } DPSIEGR1; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char DIICCEG:1; - unsigned char DIICDEG:1; - unsigned char DNMIEG:1; - unsigned char :2; - unsigned char DLVD2EG:1; - unsigned char DLVD1EG:1; - } BIT; - } DPSIEGR2; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DCANIEG:1; - } BIT; - } DPSIEGR3; - char wk15[2]; - union { - unsigned char BYTE; - struct { - unsigned char DPSRSTF:1; - unsigned char :3; - unsigned char LVD2RF:1; - unsigned char LVD1RF:1; - unsigned char LVD0RF:1; - unsigned char PORF:1; - } BIT; - } RSTSR0; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char CWSF:1; - } BIT; - } RSTSR1; - char wk16[1]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char MOFXIN:1; - } BIT; - } MOFCR; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char HOCOPCNT:1; - } BIT; - } HOCOPCR; - char wk17[2]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char LVD2E:1; - unsigned char LVD1E:1; - } BIT; - } LVCMPCR; - union { - unsigned char BYTE; - struct { - unsigned char LVD2LVL:4; - unsigned char LVD1LVL:4; - } BIT; - } LVDLVLR; - char wk18[1]; - union { - unsigned char BYTE; - struct { - unsigned char LVD1RN:1; - unsigned char LVD1RI:1; - unsigned char LVD1FSAMP:2; - unsigned char :1; - unsigned char LVD1CMPE:1; - unsigned char LVD1DFDIS:1; - unsigned char LVD1RIE:1; - } BIT; - } LVD1CR0; - union { - unsigned char BYTE; - struct { - unsigned char LVD2RN:1; - unsigned char LVD2RI:1; - unsigned char LVD2FSAMP:2; - unsigned char :1; - unsigned char LVD2CMPE:1; - unsigned char LVD2DFDIS:1; - unsigned char LVD2RIE:1; - } BIT; - } LVD2CR0; - char wk19[1]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char VBATTMNSEL:1; - } BIT; - } VBATTMNSELR; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char VBATTMON:1; - } BIT; - } VBATTMONR; - char wk20[1]; - unsigned char DPSBKR[32]; - char wk21[1472]; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char SCK:2; - } BIT; - } SCK1; - char wk22[15]; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char SCK:2; - } BIT; - } SCK2; -}; - -struct st_temps { - union { - unsigned char BYTE; - struct { - unsigned char TSEN:1; - unsigned char :2; - unsigned char TSOE:1; - } BIT; - } TSCR; -}; - -struct st_tmr0 { - union { - unsigned char BYTE; - struct { - unsigned char CMIEB:1; - unsigned char CMIEA:1; - unsigned char OVIE:1; - unsigned char CCLR:2; - } BIT; - } TCR; - char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char ADTE:1; - unsigned char OSB:2; - unsigned char OSA:2; - } BIT; - } TCSR; - char wk1[1]; - unsigned char TCORA; - char wk2[1]; - unsigned char TCORB; - char wk3[1]; - unsigned char TCNT; - char wk4[1]; - union { - unsigned char BYTE; - struct { - unsigned char TMRIS:1; - unsigned char :2; - unsigned char CSS:2; - unsigned char CKS:3; - } BIT; - } TCCR; -}; - -struct st_tmr1 { - union { - unsigned char BYTE; - struct { - unsigned char CMIEB:1; - unsigned char CMIEA:1; - unsigned char OVIE:1; - unsigned char CCLR:2; - } BIT; - } TCR; - char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char OSB:2; - unsigned char OSA:2; - } BIT; - } TCSR; - char wk1[1]; - unsigned char TCORA; - char wk2[1]; - unsigned char TCORB; - char wk3[1]; - unsigned char TCNT; - char wk4[1]; - union { - unsigned char BYTE; - struct { - unsigned char TMRIS:1; - unsigned char :2; - unsigned char CSS:2; - unsigned char CKS:3; - } BIT; - } TCCR; -}; - -struct st_tmr01 { - unsigned short TCORA; - unsigned short TCORB; - unsigned short TCNT; - unsigned short TCCR; -}; - -struct st_tpu0 { - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char NFCS:2; - unsigned char NFDEN:1; - unsigned char NFCEN:1; - unsigned char NFBEN:1; - unsigned char NFAEN:1; - } BIT; - } NFCR; - char wk0[7]; - union { - unsigned char BYTE; - struct { - unsigned char CCLR:3; - unsigned char CKEG:2; - unsigned char TPSC:3; - } BIT; - } TCR; - union { - unsigned char BYTE; - struct { - unsigned char ICSELD:1; - unsigned char ICSELB:1; - unsigned char BFB:1; - unsigned char BFA:1; - unsigned char MD:4; - } BIT; - } TMDR; - union { - unsigned char BYTE; - struct { - unsigned char IOB:4; - unsigned char IOA:4; - } BIT; - } TIORH; - union { - unsigned char BYTE; - struct { - unsigned char IOD:4; - unsigned char IOC:4; - } BIT; - } TIORL; - union { - unsigned char BYTE; - struct { - unsigned char TTGE:1; - unsigned char :1; - unsigned char TCIEU:1; - unsigned char TCIEV:1; - unsigned char TGIED:1; - unsigned char TGIEC:1; - unsigned char TGIEB:1; - unsigned char TGIEA:1; - } BIT; - } TIER; - union { - unsigned char BYTE; - struct { - unsigned char TCFD:1; - unsigned char :1; - unsigned char TCFU:1; - unsigned char TCFV:1; - unsigned char TGFD:1; - unsigned char TGFC:1; - unsigned char TGFB:1; - unsigned char TGFA:1; - } BIT; - } TSR; - unsigned short TCNT; - unsigned short TGRA; - unsigned short TGRB; - unsigned short TGRC; - unsigned short TGRD; -}; - -struct st_tpu1 { - char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char NFCS:2; - unsigned char NFDEN:1; - unsigned char NFCEN:1; - unsigned char NFBEN:1; - unsigned char NFAEN:1; - } BIT; - } NFCR; - char wk1[22]; - union { - unsigned char BYTE; - struct { - unsigned char CCLR:3; - unsigned char CKEG:2; - unsigned char TPSC:3; - } BIT; - } TCR; - union { - unsigned char BYTE; - struct { - unsigned char ICSELD:1; - unsigned char ICSELB:1; - unsigned char BFB:1; - unsigned char BFA:1; - unsigned char MD:4; - } BIT; - } TMDR; - union { - unsigned char BYTE; - struct { - unsigned char IOB:4; - unsigned char IOA:4; - } BIT; - } TIOR; - char wk2[1]; - union { - unsigned char BYTE; - struct { - unsigned char TTGE:1; - unsigned char :1; - unsigned char TCIEU:1; - unsigned char TCIEV:1; - unsigned char TGIED:1; - unsigned char TGIEC:1; - unsigned char TGIEB:1; - unsigned char TGIEA:1; - } BIT; - } TIER; - union { - unsigned char BYTE; - struct { - unsigned char TCFD:1; - unsigned char :1; - unsigned char TCFU:1; - unsigned char TCFV:1; - unsigned char TGFD:1; - unsigned char TGFC:1; - unsigned char TGFB:1; - unsigned char TGFA:1; - } BIT; - } TSR; - unsigned short TCNT; - unsigned short TGRA; - unsigned short TGRB; -}; - -struct st_tpu2 { - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char NFCS:2; - unsigned char NFDEN:1; - unsigned char NFCEN:1; - unsigned char NFBEN:1; - unsigned char NFAEN:1; - } BIT; - } NFCR; - char wk0[37]; - union { - unsigned char BYTE; - struct { - unsigned char CCLR:3; - unsigned char CKEG:2; - unsigned char TPSC:3; - } BIT; - } TCR; - union { - unsigned char BYTE; - struct { - unsigned char ICSELD:1; - unsigned char ICSELB:1; - unsigned char BFB:1; - unsigned char BFA:1; - unsigned char MD:4; - } BIT; - } TMDR; - union { - unsigned char BYTE; - struct { - unsigned char IOB:4; - unsigned char IOA:4; - } BIT; - } TIOR; - char wk1[1]; - union { - unsigned char BYTE; - struct { - unsigned char TTGE:1; - unsigned char :1; - unsigned char TCIEU:1; - unsigned char TCIEV:1; - unsigned char TGIED:1; - unsigned char TGIEC:1; - unsigned char TGIEB:1; - unsigned char TGIEA:1; - } BIT; - } TIER; - union { - unsigned char BYTE; - struct { - unsigned char TCFD:1; - unsigned char :1; - unsigned char TCFU:1; - unsigned char TCFV:1; - unsigned char TGFD:1; - unsigned char TGFC:1; - unsigned char TGFB:1; - unsigned char TGFA:1; - } BIT; - } TSR; - unsigned short TCNT; - unsigned short TGRA; - unsigned short TGRB; -}; - -struct st_tpu3 { - char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char NFCS:2; - unsigned char NFDEN:1; - unsigned char NFCEN:1; - unsigned char NFBEN:1; - unsigned char NFAEN:1; - } BIT; - } NFCR; - char wk1[52]; - union { - unsigned char BYTE; - struct { - unsigned char CCLR:3; - unsigned char CKEG:2; - unsigned char TPSC:3; - } BIT; - } TCR; - union { - unsigned char BYTE; - struct { - unsigned char ICSELD:1; - unsigned char ICSELB:1; - unsigned char BFB:1; - unsigned char BFA:1; - unsigned char MD:4; - } BIT; - } TMDR; - union { - unsigned char BYTE; - struct { - unsigned char IOB:4; - unsigned char IOA:4; - } BIT; - } TIORH; - union { - unsigned char BYTE; - struct { - unsigned char IOD:4; - unsigned char IOC:4; - } BIT; - } TIORL; - union { - unsigned char BYTE; - struct { - unsigned char TTGE:1; - unsigned char :1; - unsigned char TCIEU:1; - unsigned char TCIEV:1; - unsigned char TGIED:1; - unsigned char TGIEC:1; - unsigned char TGIEB:1; - unsigned char TGIEA:1; - } BIT; - } TIER; - union { - unsigned char BYTE; - struct { - unsigned char TCFD:1; - unsigned char :1; - unsigned char TCFU:1; - unsigned char TCFV:1; - unsigned char TGFD:1; - unsigned char TGFC:1; - unsigned char TGFB:1; - unsigned char TGFA:1; - } BIT; - } TSR; - unsigned short TCNT; - unsigned short TGRA; - unsigned short TGRB; - unsigned short TGRC; - unsigned short TGRD; -}; - -struct st_tpu4 { - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char NFCS:2; - unsigned char NFDEN:1; - unsigned char NFCEN:1; - unsigned char NFBEN:1; - unsigned char NFAEN:1; - } BIT; - } NFCR; - char wk0[67]; - union { - unsigned char BYTE; - struct { - unsigned char CCLR:3; - unsigned char CKEG:2; - unsigned char TPSC:3; - } BIT; - } TCR; - union { - unsigned char BYTE; - struct { - unsigned char ICSELD:1; - unsigned char ICSELB:1; - unsigned char BFB:1; - unsigned char BFA:1; - unsigned char MD:4; - } BIT; - } TMDR; - union { - unsigned char BYTE; - struct { - unsigned char IOB:4; - unsigned char IOA:4; - } BIT; - } TIOR; - char wk1[1]; - union { - unsigned char BYTE; - struct { - unsigned char TTGE:1; - unsigned char :1; - unsigned char TCIEU:1; - unsigned char TCIEV:1; - unsigned char TGIED:1; - unsigned char TGIEC:1; - unsigned char TGIEB:1; - unsigned char TGIEA:1; - } BIT; - } TIER; - union { - unsigned char BYTE; - struct { - unsigned char TCFD:1; - unsigned char :1; - unsigned char TCFU:1; - unsigned char TCFV:1; - unsigned char TGFD:1; - unsigned char TGFC:1; - unsigned char TGFB:1; - unsigned char TGFA:1; - } BIT; - } TSR; - unsigned short TCNT; - unsigned short TGRA; - unsigned short TGRB; -}; - -struct st_tpu5 { - char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char NFCS:2; - unsigned char NFDEN:1; - unsigned char NFCEN:1; - unsigned char NFBEN:1; - unsigned char NFAEN:1; - } BIT; - } NFCR; - char wk1[82]; - union { - unsigned char BYTE; - struct { - unsigned char CCLR:3; - unsigned char CKEG:2; - unsigned char TPSC:3; - } BIT; - } TCR; - union { - unsigned char BYTE; - struct { - unsigned char ICSELD:1; - unsigned char ICSELB:1; - unsigned char BFB:1; - unsigned char BFA:1; - unsigned char MD:4; - } BIT; - } TMDR; - union { - unsigned char BYTE; - struct { - unsigned char IOB:4; - unsigned char IOA:4; - } BIT; - } TIOR; - char wk2[1]; - union { - unsigned char BYTE; - struct { - unsigned char TTGE:1; - unsigned char :1; - unsigned char TCIEU:1; - unsigned char TCIEV:1; - unsigned char TGIED:1; - unsigned char TGIEC:1; - unsigned char TGIEB:1; - unsigned char TGIEA:1; - } BIT; - } TIER; - union { - unsigned char BYTE; - struct { - unsigned char TCFD:1; - unsigned char :1; - unsigned char TCFU:1; - unsigned char TCFV:1; - unsigned char TGFD:1; - unsigned char TGFC:1; - unsigned char TGFB:1; - unsigned char TGFA:1; - } BIT; - } TSR; - unsigned short TCNT; - unsigned short TGRA; - unsigned short TGRB; -}; - -struct st_tpua { - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char CST5:1; - unsigned char CST4:1; - unsigned char CST3:1; - unsigned char CST2:1; - unsigned char CST1:1; - unsigned char CST0:1; - } BIT; - } TSTR; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char SYNC5:1; - unsigned char SYNC4:1; - unsigned char SYNC3:1; - unsigned char SYNC2:1; - unsigned char SYNC1:1; - unsigned char SYNC0:1; - } BIT; - } TSYR; -}; - -struct st_tpub { - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char CST11:1; - unsigned char CST10:1; - unsigned char CST9:1; - unsigned char CST8:1; - unsigned char CST7:1; - unsigned char CST6:1; - } BIT; - } TSTR; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char SYNC11:1; - unsigned char SYNC10:1; - unsigned char SYNC9:1; - unsigned char SYNC8:1; - unsigned char SYNC7:1; - unsigned char SYNC6:1; - } BIT; - } TSYR; -}; - -struct st_usb { - union { - unsigned long LONG; - struct { - unsigned long DVSTS1:1; - unsigned long :5; - unsigned long DM1:1; - unsigned long DP1:1; - unsigned long DVBSTS0:1; - unsigned long :1; - unsigned long DOVCB0:1; - unsigned long DOVCA0:1; - unsigned long :2; - unsigned long DM0:1; - unsigned long DP0:1; - unsigned long :3; - unsigned long FIXPHY1:1; - unsigned long :3; - unsigned long SRPC1:1; - unsigned long :3; - unsigned long FIXPHY0:1; - unsigned long :3; - unsigned long SRPC0:1; - } BIT; - } DPUSR0R; - union { - unsigned long LONG; - struct { - unsigned long DVBINT1:1; - unsigned long :5; - unsigned long DMINT1:1; - unsigned long DPINT1:1; - unsigned long DVBINT0:1; - unsigned long :1; - unsigned long DOVRCRB0:1; - unsigned long DOVRCRA0:1; - unsigned long :2; - unsigned long DMINT0:1; - unsigned long DPINT0:1; - unsigned long DVBSE1:1; - unsigned long :5; - unsigned long DMINTE1:1; - unsigned long DPINTE1:1; - unsigned long DVBSE0:1; - unsigned long :1; - unsigned long DOVRCRBE0:1; - unsigned long DOVRCRAE0:1; - unsigned long :2; - unsigned long DMINTE0:1; - unsigned long DPINTE0:1; - } BIT; - } DPUSR1R; -}; - -struct st_usb0 { - union { - unsigned short WORD; - struct { - unsigned short :5; - unsigned short SCKE:1; - unsigned short :3; - unsigned short DCFM:1; - unsigned short DRPD:1; - unsigned short DPRPU:1; - unsigned short :3; - unsigned short USBE:1; - } BIT; - } SYSCFG; - char wk0[2]; - union { - unsigned short WORD; - struct { - unsigned short OVCMON:2; - unsigned short :7; - unsigned short HTACT:1; - unsigned short :3; - unsigned short IDMON:1; - unsigned short LNST:2; - } BIT; - } SYSSTS0; - char wk1[2]; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short HNPBTOA:1; - unsigned short EXICEN:1; - unsigned short VBUSEN:1; - unsigned short WKUP:1; - unsigned short RWUPE:1; - unsigned short USBRST:1; - unsigned short RESUME:1; - unsigned short UACT:1; - unsigned short :1; - unsigned short RHST:3; - } BIT; - } DVSTCTR0; - char wk2[10]; - //ORIG: unsigned short CFIFO; - union { - unsigned short WORD; - struct { - unsigned char L; - unsigned char H; - } BYTE; - } CFIFO; - //ENDORIG - char wk3[2]; - //ORIG: unsigned short D0FIFO; - union { - unsigned short WORD; - struct { - unsigned char L; - unsigned char H; - } BYTE; - } D0FIFO; - //ENDORIG - char wk4[2]; - //ORIG: unsigned short D1FIFO; - union { - unsigned short WORD; - struct { - unsigned char L; - unsigned char H; - } BYTE; - } D1FIFO; - //ENDORIG - char wk5[2]; - union { - unsigned short WORD; - struct { - unsigned short RCNT:1; - unsigned short REW:1; - unsigned short :3; - unsigned short MBW:1; - unsigned short :1; - unsigned short BIGEND:1; - unsigned short :2; - unsigned short ISEL:1; - unsigned short :1; - unsigned short CURPIPE:4; - } BIT; - } CFIFOSEL; - union { - unsigned short WORD; - struct { - unsigned short BVAL:1; - unsigned short BCLR:1; - unsigned short FRDY:1; - unsigned short :4; - unsigned short DTLN:9; - } BIT; - } CFIFOCTR; - char wk6[4]; - union { - unsigned short WORD; - struct { - unsigned short RCNT:1; - unsigned short REW:1; - unsigned short DCLRM:1; - unsigned short DREQE:1; - unsigned short :1; - unsigned short MBW:1; - unsigned short :1; - unsigned short BIGEND:1; - unsigned short :4; - unsigned short CURPIPE:4; - } BIT; - } D0FIFOSEL; - union { - unsigned short WORD; - struct { - unsigned short BVAL:1; - unsigned short BCLR:1; - unsigned short FRDY:1; - unsigned short :4; - unsigned short DTLN:9; - } BIT; - } D0FIFOCTR; - union { - unsigned short WORD; - struct { - unsigned short RCNT:1; - unsigned short REW:1; - unsigned short DCLRM:1; - unsigned short DREQE:1; - unsigned short :1; - unsigned short MBW:1; - unsigned short :1; - unsigned short BIGEND:1; - unsigned short :4; - unsigned short CURPIPE:4; - } BIT; - } D1FIFOSEL; - union { - unsigned short WORD; - struct { - unsigned short BVAL:1; - unsigned short BCLR:1; - unsigned short FRDY:1; - unsigned short :4; - unsigned short DTLN:9; - } BIT; - } D1FIFOCTR; - union { - unsigned short WORD; - struct { - unsigned short VBSE:1; - unsigned short RSME:1; - unsigned short SOFE:1; - unsigned short DVSE:1; - unsigned short CTRE:1; - unsigned short BEMPE:1; - unsigned short NRDYE:1; - unsigned short BRDYE:1; - } BIT; - } INTENB0; - union { - unsigned short WORD; - struct { - unsigned short OVRCRE:1; - unsigned short BCHGE:1; - unsigned short :1; - unsigned short DTCHE:1; - unsigned short ATTCHE:1; - unsigned short :4; - unsigned short EOFERRE:1; - unsigned short SIGNE:1; - unsigned short SACKE:1; - } BIT; - } INTENB1; - char wk7[2]; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short PIPE9BRDYE:1; - unsigned short PIPE8BRDYE:1; - unsigned short PIPE7BRDYE:1; - unsigned short PIPE6BRDYE:1; - unsigned short PIPE5BRDYE:1; - unsigned short PIPE4BRDYE:1; - unsigned short PIPE3BRDYE:1; - unsigned short PIPE2BRDYE:1; - unsigned short PIPE1BRDYE:1; - unsigned short PIPE0BRDYE:1; - } BIT; - } BRDYENB; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short PIPE9NRDYE:1; - unsigned short PIPE8NRDYE:1; - unsigned short PIPE7NRDYE:1; - unsigned short PIPE6NRDYE:1; - unsigned short PIPE5NRDYE:1; - unsigned short PIPE4NRDYE:1; - unsigned short PIPE3NRDYE:1; - unsigned short PIPE2NRDYE:1; - unsigned short PIPE1NRDYE:1; - unsigned short PIPE0NRDYE:1; - } BIT; - } NRDYENB; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short PIPE9BEMPE:1; - unsigned short PIPE8BEMPE:1; - unsigned short PIPE7BEMPE:1; - unsigned short PIPE6BEMPE:1; - unsigned short PIPE5BEMPE:1; - unsigned short PIPE4BEMPE:1; - unsigned short PIPE3BEMPE:1; - unsigned short PIPE2BEMPE:1; - unsigned short PIPE1BEMPE:1; - unsigned short PIPE0BEMPE:1; - } BIT; - } BEMPENB; - union { - unsigned short WORD; - struct { - unsigned short :7; - unsigned short TRNENSEL:1; - unsigned short :1; - unsigned short BRDYM:1; - unsigned short :1; - unsigned short EDGESTS:1; - } BIT; - } SOFCFG; - char wk8[2]; - union { - unsigned short WORD; - struct { - unsigned short VBINT:1; - unsigned short RESM:1; - unsigned short SOFR:1; - unsigned short DVST:1; - unsigned short CTRT:1; - unsigned short BEMP:1; - unsigned short NRDY:1; - unsigned short BRDY:1; - unsigned short VBSTS:1; - unsigned short DVSQ:3; - unsigned short VALID:1; - unsigned short CTSQ:3; - } BIT; - } INTSTS0; - union { - unsigned short WORD; - struct { - unsigned short OVRCR:1; - unsigned short BCHG:1; - unsigned short :1; - unsigned short DTCH:1; - unsigned short ATTCH:1; - unsigned short :4; - unsigned short EOFERR:1; - unsigned short SIGN:1; - unsigned short SACK:1; - } BIT; - } INTSTS1; - char wk9[2]; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short PIPE9BRDY:1; - unsigned short PIPE8BRDY:1; - unsigned short PIPE7BRDY:1; - unsigned short PIPE6BRDY:1; - unsigned short PIPE5BRDY:1; - unsigned short PIPE4BRDY:1; - unsigned short PIPE3BRDY:1; - unsigned short PIPE2BRDY:1; - unsigned short PIPE1BRDY:1; - unsigned short PIPE0BRDY:1; - } BIT; - } BRDYSTS; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short PIPE9NRDYE:1; - unsigned short PIPE8NRDYE:1; - unsigned short PIPE7NRDYE:1; - unsigned short PIPE6NRDYE:1; - unsigned short PIPE5NRDYE:1; - unsigned short PIPE4NRDYE:1; - unsigned short PIPE3NRDYE:1; - unsigned short PIPE2NRDYE:1; - unsigned short PIPE1NRDYE:1; - unsigned short PIPE0NRDYE:1; - } BIT; - } NRDYSTS; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short PIPE9BEMPE:1; - unsigned short PIPE8BEMPE:1; - unsigned short PIPE7BENP:1; - unsigned short PIPE6BENP:1; - unsigned short PIPE5BENP:1; - unsigned short PIPE4BENP:1; - unsigned short PIPE3BENP:1; - unsigned short PIPE2BENP:1; - unsigned short PIPE1BENP:1; - unsigned short PIPE0BENP:1; - } BIT; - } BEMPSTS; - union { - unsigned short WORD; - struct { - unsigned short OVRN:1; - unsigned short CRCE:1; - unsigned short :3; - unsigned short FRNM:11; - } BIT; - } FRMNUM; - union { - unsigned short WORD; - struct { - unsigned short DVCHG:1; - } BIT; - } DVCHGR; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short STSRECOV:4; - unsigned short :1; - unsigned short USBADDR:7; - } BIT; - } USBADDR; - char wk10[2]; - union { - unsigned short WORD; - struct { - unsigned short BREQUEST:8; - unsigned short BMREQUESTTYPE:8; - } BIT; - } USBREQ; - unsigned short USBVAL; - unsigned short USBINDX; - unsigned short USBLENG; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short SHTNAK:1; - unsigned short :2; - unsigned short DIR:1; - } BIT; - } DCPCFG; - union { - unsigned short WORD; - struct { - unsigned short DEVSEL:4; - unsigned short :5; - unsigned short MXPS:7; - } BIT; - } DCPMAXP; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short SUREQ:1; - unsigned short :2; - unsigned short SUREQCLR:1; - unsigned short :2; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :2; - unsigned short CCPL:1; - unsigned short PID:2; - } BIT; - } DCPCTR; - char wk11[2]; - union { - unsigned short WORD; - struct { - unsigned short :12; - unsigned short PIPESEL:4; - } BIT; - } PIPESEL; - char wk12[2]; - union { - unsigned short WORD; - struct { - unsigned short TYPE:2; - unsigned short :3; - unsigned short BFRE:1; - unsigned short DBLB:1; - unsigned short :1; - unsigned short SHTNAK:1; - unsigned short :2; - unsigned short DIR:1; - unsigned short EPNUM:4; - } BIT; - } PIPECFG; - char wk13[2]; - union { - unsigned short WORD; - struct { - unsigned short DEVSEL:4; - unsigned short :3; - unsigned short MXPS:9; - } BIT; - } PIPEMAXP; - union { - unsigned short WORD; - struct { - unsigned short :3; - unsigned short IFIS:1; - unsigned short :9; - unsigned short IITV:3; - } BIT; - } PIPEPERI; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short INBUFM:1; - unsigned short :3; - unsigned short ATREPM:1; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE1CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short INBUFM:1; - unsigned short :3; - unsigned short ATREPM:1; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE2CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short INBUFM:1; - unsigned short :3; - unsigned short ATREPM:1; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE3CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short INBUFM:1; - unsigned short :3; - unsigned short ATREPM:1; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE4CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short INBUFM:1; - unsigned short :3; - unsigned short ATREPM:1; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE5CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short :5; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE6CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short :5; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE7CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short :5; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE8CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short :5; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE9CTR; - char wk14[14]; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short TRENB:1; - unsigned short TRCLR:1; - } BIT; - } PIPE1TRE; - unsigned short PIPE1TRN; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short TRENB:1; - unsigned short TRCLR:1; - } BIT; - } PIPE2TRE; - unsigned short PIPE2TRN; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short TRENB:1; - unsigned short TRCLR:1; - } BIT; - } PIPE3TRE; - unsigned short PIPE3TRN; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short TRENB:1; - unsigned short TRCLR:1; - } BIT; - } PIPE4TRE; - unsigned short PIPE4TRN; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short TRENB:1; - unsigned short TRCLR:1; - } BIT; - } PIPE5TRE; - unsigned short PIPE5TRN; - char wk15[44]; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short USBSPD:2; - } BIT; - } DEVADD0; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short USBSPD:2; - } BIT; - } DEVADD1; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short USBSPD:2; - } BIT; - } DEVADD2; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short USBSPD:2; - } BIT; - } DEVADD3; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short USBSPD:2; - } BIT; - } DEVADD4; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short USBSPD:2; - } BIT; - } DEVADD5; -}; - -struct st_usb1 { - union { - unsigned short WORD; - struct { - unsigned short :5; - unsigned short SCKE:1; - unsigned short :3; - unsigned short DCFM:1; - unsigned short DRPD:1; - unsigned short DPRPU:1; - unsigned short :3; - unsigned short USBE:1; - } BIT; - } SYSCFG; - char wk0[2]; - union { - unsigned short WORD; - struct { - unsigned short OVCMON:2; - unsigned short :7; - unsigned short HTACT:1; - unsigned short :3; - unsigned short IDMON:1; - unsigned short LNST:2; - } BIT; - } SYSSTS0; - char wk1[2]; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short HNPBTOA:1; - unsigned short EXICEN:1; - unsigned short VBUSEN:1; - unsigned short WKUP:1; - unsigned short RWUPE:1; - unsigned short USBRST:1; - unsigned short RESUME:1; - unsigned short UACT:1; - unsigned short :1; - unsigned short RHST:3; - } BIT; - } DVSTCTR0; - char wk2[10]; - unsigned short CFIFO; - char wk3[2]; - unsigned short D0FIFO; - char wk4[2]; - unsigned short D1FIFO; - char wk5[2]; - union { - unsigned short WORD; - struct { - unsigned short RCNT:1; - unsigned short REW:1; - unsigned short :3; - unsigned short MBW:1; - unsigned short :1; - unsigned short BIGEND:1; - unsigned short :2; - unsigned short ISEL:1; - unsigned short :1; - unsigned short CURPIPE:4; - } BIT; - } CFIFOSEL; - union { - unsigned short WORD; - struct { - unsigned short BVAL:1; - unsigned short BCLR:1; - unsigned short FRDY:1; - unsigned short :4; - unsigned short DTLN:9; - } BIT; - } CFIFOCTR; - char wk6[4]; - union { - unsigned short WORD; - struct { - unsigned short RCNT:1; - unsigned short REW:1; - unsigned short DCLRM:1; - unsigned short DREQE:1; - unsigned short :1; - unsigned short MBW:1; - unsigned short :1; - unsigned short BIGEND:1; - unsigned short :4; - unsigned short CURPIPE:4; - } BIT; - } D0FIFOSEL; - union { - unsigned short WORD; - struct { - unsigned short BVAL:1; - unsigned short BCLR:1; - unsigned short FRDY:1; - unsigned short :4; - unsigned short DTLN:9; - } BIT; - } D0FIFOCTR; - union { - unsigned short WORD; - struct { - unsigned short RCNT:1; - unsigned short REW:1; - unsigned short DCLRM:1; - unsigned short DREQE:1; - unsigned short :1; - unsigned short MBW:1; - unsigned short :1; - unsigned short BIGEND:1; - unsigned short :4; - unsigned short CURPIPE:4; - } BIT; - } D1FIFOSEL; - union { - unsigned short WORD; - struct { - unsigned short BVAL:1; - unsigned short BCLR:1; - unsigned short FRDY:1; - unsigned short :4; - unsigned short DTLN:9; - } BIT; - } D1FIFOCTR; - union { - unsigned short WORD; - struct { - unsigned short VBSE:1; - unsigned short RSME:1; - unsigned short SOFE:1; - unsigned short DVSE:1; - unsigned short CTRE:1; - unsigned short BEMPE:1; - unsigned short NRDYE:1; - unsigned short BRDYE:1; - } BIT; - } INTENB0; - char wk7[4]; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short PIPE9BRDYE:1; - unsigned short PIPE8BRDYE:1; - unsigned short PIPE7BRDYE:1; - unsigned short PIPE6BRDYE:1; - unsigned short PIPE5BRDYE:1; - unsigned short PIPE4BRDYE:1; - unsigned short PIPE3BRDYE:1; - unsigned short PIPE2BRDYE:1; - unsigned short PIPE1BRDYE:1; - unsigned short PIPE0BRDYE:1; - } BIT; - } BRDYENB; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short PIPE9NRDYE:1; - unsigned short PIPE8NRDYE:1; - unsigned short PIPE7NRDYE:1; - unsigned short PIPE6NRDYE:1; - unsigned short PIPE5NRDYE:1; - unsigned short PIPE4NRDYE:1; - unsigned short PIPE3NRDYE:1; - unsigned short PIPE2NRDYE:1; - unsigned short PIPE1NRDYE:1; - unsigned short PIPE0NRDYE:1; - } BIT; - } NRDYENB; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short PIPE9BEMPE:1; - unsigned short PIPE8BEMPE:1; - unsigned short PIPE7BEMPE:1; - unsigned short PIPE6BEMPE:1; - unsigned short PIPE5BEMPE:1; - unsigned short PIPE4BEMPE:1; - unsigned short PIPE3BEMPE:1; - unsigned short PIPE2BEMPE:1; - unsigned short PIPE1BEMPE:1; - unsigned short PIPE0BEMPE:1; - } BIT; - } BEMPENB; - union { - unsigned short WORD; - struct { - unsigned short :9; - unsigned short BRDYM:1; - unsigned short :1; - unsigned short EDGESTS:1; - } BIT; - } SOFCFG; - char wk8[2]; - union { - unsigned short WORD; - struct { - unsigned short VBINT:1; - unsigned short RESM:1; - unsigned short SOFR:1; - unsigned short DVST:1; - unsigned short CTRT:1; - unsigned short BEMP:1; - unsigned short NRDY:1; - unsigned short BRDY:1; - unsigned short VBSTS:1; - unsigned short DVSQ:3; - unsigned short VALID:1; - unsigned short CTSQ:3; - } BIT; - } INTSTS0; - char wk9[4]; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short PIPE9BRDY:1; - unsigned short PIPE8BRDY:1; - unsigned short PIPE7BRDY:1; - unsigned short PIPE6BRDY:1; - unsigned short PIPE5BRDY:1; - unsigned short PIPE4BRDY:1; - unsigned short PIPE3BRDY:1; - unsigned short PIPE2BRDY:1; - unsigned short PIPE1BRDY:1; - unsigned short PIPE0BRDY:1; - } BIT; - } BRDYSTS; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short PIPE9NRDYE:1; - unsigned short PIPE8NRDYE:1; - unsigned short PIPE7NRDYE:1; - unsigned short PIPE6NRDYE:1; - unsigned short PIPE5NRDYE:1; - unsigned short PIPE4NRDYE:1; - unsigned short PIPE3NRDYE:1; - unsigned short PIPE2NRDYE:1; - unsigned short PIPE1NRDYE:1; - unsigned short PIPE0NRDYE:1; - } BIT; - } NRDYSTS; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short PIPE9BEMPE:1; - unsigned short PIPE8BEMPE:1; - unsigned short PIPE7BENP:1; - unsigned short PIPE6BENP:1; - unsigned short PIPE5BENP:1; - unsigned short PIPE4BENP:1; - unsigned short PIPE3BENP:1; - unsigned short PIPE2BENP:1; - unsigned short PIPE1BENP:1; - unsigned short PIPE0BENP:1; - } BIT; - } BEMPSTS; - union { - unsigned short WORD; - struct { - unsigned short OVRN:1; - unsigned short CRCE:1; - unsigned short :3; - unsigned short FRNM:11; - } BIT; - } FRMNUM; - union { - unsigned short WORD; - struct { - unsigned short DVCHG:1; - } BIT; - } DVCHGR; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short STSRECOV:4; - unsigned short :1; - unsigned short USBADDR:7; - } BIT; - } USBADDR; - char wk10[2]; - union { - unsigned short WORD; - struct { - unsigned short BREQUEST:8; - unsigned short BMREQUESTTYPE:8; - } BIT; - } USBREQ; - unsigned short USBVAL; - unsigned short USBINDX; - unsigned short USBLENG; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short SHTNAK:1; - unsigned short :2; - unsigned short DIR:1; - } BIT; - } DCPCFG; - union { - unsigned short WORD; - struct { - unsigned short DEVSEL:4; - unsigned short :5; - unsigned short MXPS:7; - } BIT; - } DCPMAXP; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short SUREQ:1; - unsigned short :2; - unsigned short SUREQCLR:1; - unsigned short :2; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :2; - unsigned short CCPL:1; - unsigned short PID:2; - } BIT; - } DCPCTR; - char wk11[2]; - union { - unsigned short WORD; - struct { - unsigned short :12; - unsigned short PIPESEL:4; - } BIT; - } PIPESEL; - char wk12[2]; - union { - unsigned short WORD; - struct { - unsigned short TYPE:2; - unsigned short :3; - unsigned short BFRE:1; - unsigned short DBLB:1; - unsigned short :1; - unsigned short SHTNAK:1; - unsigned short :2; - unsigned short DIR:1; - unsigned short EPNUM:4; - } BIT; - } PIPECFG; - char wk13[2]; - union { - unsigned short WORD; - struct { - unsigned short DEVSEL:4; - unsigned short :3; - unsigned short MXPS:9; - } BIT; - } PIPEMAXP; - union { - unsigned short WORD; - struct { - unsigned short :3; - unsigned short IFIS:1; - unsigned short :9; - unsigned short IITV:3; - } BIT; - } PIPEPERI; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short INBUFM:1; - unsigned short :3; - unsigned short ATREPM:1; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE1CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short INBUFM:1; - unsigned short :3; - unsigned short ATREPM:1; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE2CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short INBUFM:1; - unsigned short :3; - unsigned short ATREPM:1; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE3CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short INBUFM:1; - unsigned short :3; - unsigned short ATREPM:1; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE4CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short INBUFM:1; - unsigned short :3; - unsigned short ATREPM:1; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE5CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short :5; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE6CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short :5; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE7CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short :5; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE8CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short :5; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE9CTR; - char wk14[14]; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short TRENB:1; - unsigned short TRCLR:1; - } BIT; - } PIPE1TRE; - unsigned short PIPE1TRN; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short TRENB:1; - unsigned short TRCLR:1; - } BIT; - } PIPE2TRE; - unsigned short PIPE2TRN; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short TRENB:1; - unsigned short TRCLR:1; - } BIT; - } PIPE3TRE; - unsigned short PIPE3TRN; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short TRENB:1; - unsigned short TRCLR:1; - } BIT; - } PIPE4TRE; - unsigned short PIPE4TRN; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short TRENB:1; - unsigned short TRCLR:1; - } BIT; - } PIPE5TRE; - unsigned short PIPE5TRN; - char wk15[44]; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short USBSPD:2; - } BIT; - } DEVADD0; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short USBSPD:2; - } BIT; - } DEVADD1; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short USBSPD:2; - } BIT; - } DEVADD2; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short USBSPD:2; - } BIT; - } DEVADD3; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short USBSPD:2; - } BIT; - } DEVADD4; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short USBSPD:2; - } BIT; - } DEVADD5; -}; - -struct st_wdt { - unsigned char WDTRR; - char wk0[1]; - union { - unsigned short WORD; - struct { - unsigned short :2; - unsigned short RPSS:2; - unsigned short :2; - unsigned short RPES:2; - unsigned short CKS:4; - unsigned short :2; - unsigned short TOPS:2; - } BIT; - } WDTCR; - union { - unsigned short WORD; - struct { - unsigned short REFEF:1; - unsigned short UNDFF:1; - unsigned short CNTVAL:14; - } BIT; - } WDTSR; - union { - unsigned char BYTE; - struct { - unsigned char RSTIRQS:1; - } BIT; - } WDTRCR; -}; - -enum enum_ir { -IR_BSC_BUSERR=16,IR_FCU_FIFERR=21, -IR_ICU_SWINT=27, -IR_CMT0_CMI0, -IR_CMT1_CMI1, -IR_CMT2_CMI2, -IR_CMT3_CMI3, -IR_ETHER_EINT, -IR_USB0_D0FIFO0,IR_USB0_D1FIFO0,IR_USB0_USBI0, -IR_USB1_D0FIFO1,IR_USB1_D1FIFO1,IR_USB1_USBI1, -IR_RSPI0_SPRI0,IR_RSPI0_SPTI0,IR_RSPI0_SPII0, -IR_RSPI1_SPRI1,IR_RSPI1_SPTI1,IR_RSPI1_SPII1, -IR_RSPI2_SPRI2,IR_RSPI2_SPTI2,IR_RSPI2_SPII2, -IR_CAN0_RXF0,IR_CAN0_TXF0,IR_CAN0_RXM0,IR_CAN0_TXM0, -IR_CAN1_RXF1,IR_CAN1_TXF1,IR_CAN1_RXM1,IR_CAN1_TXM1, -IR_CAN2_RXF2,IR_CAN2_TXF2,IR_CAN2_RXM2,IR_CAN2_TXM2, -IR_RTC_COUNTUP=62, -IR_ICU_IRQ0=64,IR_ICU_IRQ1,IR_ICU_IRQ2,IR_ICU_IRQ3,IR_ICU_IRQ4,IR_ICU_IRQ5,IR_ICU_IRQ6,IR_ICU_IRQ7,IR_ICU_IRQ8,IR_ICU_IRQ9,IR_ICU_IRQ10,IR_ICU_IRQ11,IR_ICU_IRQ12,IR_ICU_IRQ13,IR_ICU_IRQ14,IR_ICU_IRQ15, -IR_USB_USBR0=90,IR_USB_USBR1, -IR_RTC_ALARM,IR_RTC_PRD, -IR_AD0_ADI0=98, -IR_S12AD0_S12ADI0=102, -IR_ICU_GROUPE0=106,IR_ICU_GROUPE1,IR_ICU_GROUPE2,IR_ICU_GROUPE3,IR_ICU_GROUPE4,IR_ICU_GROUPE5,IR_ICU_GROUPE6,IR_ICU_GROUPL0=114, -IR_SCIX_SCIX0=122,IR_SCIX_SCIX1,IR_SCIX_SCIX2,IR_SCIX_SCIX3, -IR_TPU0_TGI0A,IR_TPU0_TGI0B,IR_TPU0_TGI0C,IR_TPU0_TGI0D, -IR_TPU1_TGI1A,IR_TPU1_TGI1B, -IR_TPU2_TGI2A,IR_TPU2_TGI2B, -IR_TPU3_TGI3A,IR_TPU3_TGI3B,IR_TPU3_TGI3C,IR_TPU3_TGI3D, -IR_TPU4_TGI4A,IR_TPU4_TGI4B, -IR_TPU5_TGI5A,IR_TPU5_TGI5B, -IR_TPU6_TGI6A,IR_TPU6_TGI6B,IR_TPU6_TGI6C,IR_TPU6_TGI6D, -IR_MTU0_TGIA0=142,IR_MTU0_TGIB0,IR_MTU0_TGIC0,IR_MTU0_TGID0,IR_MTU0_TGIE0,IR_MTU0_TGIF0, -IR_TPU7_TGI7A,IR_TPU7_TGI7B, -IR_MTU1_TGIA1=148,IR_MTU1_TGIB1, -IR_TPU8_TGI8A,IR_TPU8_TGI8B, -IR_MTU2_TGIA2=150,IR_MTU2_TGIB2, -IR_TPU9_TGI9A,IR_TPU9_TGI9B,IR_TPU9_TGI9C,IR_TPU9_TGI9D, -IR_MTU3_TGIA3=152,IR_MTU3_TGIB3,IR_MTU3_TGIC3,IR_MTU3_TGID3, -IR_TPU10_TGI10A,IR_TPU10_TGI10B, -IR_MTU4_TGIA4=156,IR_MTU4_TGIB4,IR_MTU4_TGIC4,IR_MTU4_TGID4,IR_MTU4_TCIV4, -IR_MTU5_TGIU5,IR_MTU5_TGIV5,IR_MTU5_TGIW5, -IR_TPU11_TGI11A,IR_TPU11_TGI11B, -IR_POE_OEI1,IR_POE_OEI2, -IR_TMR0_CMIA0=170,IR_TMR0_CMIB0,IR_TMR0_OVI0, -IR_TMR1_CMIA1,IR_TMR1_CMIB1,IR_TMR1_OVI1, -IR_TMR2_CMIA2,IR_TMR2_CMIB2,IR_TMR2_OVI2, -IR_TMR3_CMIA3,IR_TMR3_CMIB3,IR_TMR3_OVI3, -IR_RIIC0_EEI0,IR_RIIC0_RXI0,IR_RIIC0_TXI0,IR_RIIC0_TEI0, -IR_RIIC1_EEI1,IR_RIIC1_RXI1,IR_RIIC1_TXI1,IR_RIIC1_TEI1, -IR_RIIC2_EEI2,IR_RIIC2_RXI2,IR_RIIC2_TXI2,IR_RIIC2_TEI2, -IR_RIIC3_EEI3,IR_RIIC3_RXI3,IR_RIIC3_TXI3,IR_RIIC3_TEI3, -IR_DMAC_DMAC0I,IR_DMAC_DMAC1I,IR_DMAC_DMAC2I,IR_DMAC_DMAC3I, -IR_EXDMAC_EXDMAC0I,IR_EXDMAC_EXDMAC1I, -IR_SCI0_RXI0=214,IR_SCI0_TXI0,IR_SCI0_TEI0, -IR_SCI1_RXI1,IR_SCI1_TXI1,IR_SCI1_TEI1, -IR_SCI2_RXI2,IR_SCI2_TXI2,IR_SCI2_TEI2, -IR_SCI3_RXI3,IR_SCI3_TXI3,IR_SCI3_TEI3, -IR_SCI4_RXI4,IR_SCI4_TXI4,IR_SCI4_TEI4, -IR_SCI5_RXI5,IR_SCI5_TXI5,IR_SCI5_TEI5, -IR_SCI6_RXI6,IR_SCI6_TXI6,IR_SCI6_TEI6, -IR_SCI7_RXI7,IR_SCI7_TXI7,IR_SCI7_TEI7, -IR_SCI8_RXI8,IR_SCI8_TXI8,IR_SCI8_TEI8, -IR_SCI9_RXI9,IR_SCI9_TXI9,IR_SCI9_TEI9, -IR_SCI10_RXI10,IR_SCI10_TXI10,IR_SCI10_TEI10, -IR_SCI11_RXI11,IR_SCI11_TXI11,IR_SCI11_TEI11, -IR_SCI12_RXI12,IR_SCI12_TXI12,IR_SCI12_TEI12, -IR_IEB_IEBINT -}; - -enum enum_dtce { -DTCE_ICU_SWINT=27, -DTCE_CMT0_CMI0, -DTCE_CMT1_CMI1, -DTCE_CMT2_CMI2, -DTCE_CMT3_CMI3, -DTCE_USB0_D0FIFO0=33,DTCE_USB0_D1FIFO0, -DTCE_USB1_D0FIFO1=36,DTCE_USB1_D1FIFO1, -DTCE_RSPI0_SPRI0=39,DTCE_RSPI0_SPTI0, -DTCE_RSPI1_SPRI1=42,DTCE_RSPI1_SPTI1, -DTCE_RSPI2_SPRI2=45,DTCE_RSPI2_SPTI2, -DTCE_ICU_IRQ0=64,DTCE_ICU_IRQ1,DTCE_ICU_IRQ2,DTCE_ICU_IRQ3,DTCE_ICU_IRQ4,DTCE_ICU_IRQ5,DTCE_ICU_IRQ6,DTCE_ICU_IRQ7,DTCE_ICU_IRQ8,DTCE_ICU_IRQ9,DTCE_ICU_IRQ10,DTCE_ICU_IRQ11,DTCE_ICU_IRQ12,DTCE_ICU_IRQ13,DTCE_ICU_IRQ14,DTCE_ICU_IRQ15, -DTCE_AD0_ADI0=98, -DTCE_S12AD0_S12ADI0=102, -DTCE_TPU0_TGI0A=126,DTCE_TPU0_TGI0B,DTCE_TPU0_TGI0C,DTCE_TPU0_TGI0D, -DTCE_TPU1_TGI1A,DTCE_TPU1_TGI1B, -DTCE_TPU2_TGI2A,DTCE_TPU2_TGI2B, -DTCE_TPU3_TGI3A,DTCE_TPU3_TGI3B,DTCE_TPU3_TGI3C,DTCE_TPU3_TGI3D, -DTCE_TPU4_TGI4A,DTCE_TPU4_TGI4B, -DTCE_TPU5_TGI5A,DTCE_TPU5_TGI5B, -DTCE_TPU6_TGI6A,DTCE_TPU6_TGI6B,DTCE_TPU6_TGI6C,DTCE_TPU6_TGI6D, -DTCE_MTU0_TGIA0=142,DTCE_MTU0_TGIB0,DTCE_MTU0_TGIC0,DTCE_MTU0_TGID0, -DTCE_TPU7_TGI7A=148,DTCE_TPU7_TGI7B, -DTCE_MTU1_TGIA1=148,DTCE_MTU1_TGIB1, -DTCE_TPU8_TGI8A,DTCE_TPU8_TGI8B, -DTCE_MTU2_TGIA2=150,DTCE_MTU2_TGIB2, -DTCE_TPU9_TGI9A,DTCE_TPU9_TGI9B,DTCE_TPU9_TGI9C,DTCE_TPU9_TGI9D, -DTCE_MTU3_TGIA3=152,DTCE_MTU3_TGIB3,DTCE_MTU3_TGIC3,DTCE_MTU3_TGID3, -DTCE_TPU10_TGI10A,DTCE_TPU10_TGI10B, -DTCE_MTU4_TGIA4=156,DTCE_MTU4_TGIB4,DTCE_MTU4_TGIC4,DTCE_MTU4_TGID4,DTCE_MTU4_TCIV4, -DTCE_MTU5_TGIU5,DTCE_MTU5_TGIV5,DTCE_MTU5_TGIW5, -DTCE_TPU11_TGI11A,DTCE_TPU11_TGI11B, -DTCE_TMR0_CMIA0=170,DTCE_TMR0_CMIB0, -DTCE_TMR1_CMIA1=173,DTCE_TMR1_CMIB1, -DTCE_TMR2_CMIA2=176,DTCE_TMR2_CMIB2, -DTCE_TMR3_CMIA3=179,DTCE_TMR3_CMIB3, -DTCE_RIIC0_RXI0=183,DTCE_RIIC0_TXI0, -DTCE_RIIC1_RXI1=187,DTCE_RIIC1_TXI1, -DTCE_RIIC2_RXI2=191,DTCE_RIIC2_TXI2, -DTCE_RIIC3_RXI3=195,DTCE_RIIC3_TXI3, -DTCE_DMAC_DMAC0I=198,DTCE_DMAC_DMAC1I,DTCE_DMAC_DMAC2I,DTCE_DMAC_DMAC3I, -DTCE_EXDMAC_EXDMAC0I,DTCE_EXDMAC_EXDMAC1I, -DTCE_SCI0_RXI0=214,DTCE_SCI0_TXI0, -DTCE_SCI1_RXI1=217,DTCE_SCI1_TXI1, -DTCE_SCI2_RXI2=220,DTCE_SCI2_TXI2, -DTCE_SCI3_RXI3=223,DTCE_SCI3_TXI3, -DTCE_SCI4_RXI4=226,DTCE_SCI4_TXI4, -DTCE_SCI5_RXI5=229,DTCE_SCI5_TXI5, -DTCE_SCI6_RXI6=232,DTCE_SCI6_TXI6, -DTCE_SCI7_RXI7=235,DTCE_SCI7_TXI7, -DTCE_SCI8_RXI8=238,DTCE_SCI8_TXI8, -DTCE_SCI9_RXI9=241,DTCE_SCI9_TXI9, -DTCE_SCI10_RXI10=244,DTCE_SCI10_TXI10, -DTCE_SCI11_RXI11=247,DTCE_SCI11_TXI11, -DTCE_SCI12_RXI12=250,DTCE_SCI12_TXI12 -}; - -enum enum_ier { -IER_BSC_BUSERR=0x02, -IER_FCU_FIFERR=0x02,IER_FCU_FRDYI=0x02, -IER_ICU_SWINT=0x03, -IER_CMT0_CMI0=0x03, -IER_CMT1_CMI1=0x03, -IER_CMT2_CMI2=0x03, -IER_CMT3_CMI3=0x03, -IER_ETHER_EINT=0x04, -IER_USB0_D0FIFO0=0x04,IER_USB0_D1FIFO0=0x04,IER_USB0_USBI0=0x04, -IER_USB1_D0FIFO1=0x04,IER_USB1_D1FIFO1=0x04,IER_USB1_USBI1=0x04, -IER_RSPI0_SPRI0=0x04,IER_RSPI0_SPTI0=0x05,IER_RSPI0_SPII0=0x05, -IER_RSPI1_SPRI1=0x05,IER_RSPI1_SPTI1=0x05,IER_RSPI1_SPII1=0x05, -IER_RSPI2_SPRI2=0x05,IER_RSPI2_SPTI2=0x05,IER_RSPI2_SPII2=0x05, -IER_CAN0_RXF0=0x06,IER_CAN0_TXF0=0x06,IER_CAN0_RXM0=0x06,IER_CAN0_TXM0=0x06, -IER_CAN1_RXF1=0x06,IER_CAN1_TXF1=0x06,IER_CAN1_RXM1=0x06,IER_CAN1_TXM1=0x06, -IER_CAN2_RXF2=0x07,IER_CAN2_TXF2=0x07,IER_CAN2_RXM2=0x07,IER_CAN2_TXM2=0x07, -IER_RTC_COUNTUP=0x07, -IER_ICU_IRQ0=0x08,IER_ICU_IRQ1=0x08,IER_ICU_IRQ2=0x08,IER_ICU_IRQ3=0x08,IER_ICU_IRQ4=0x08,IER_ICU_IRQ5=0x08,IER_ICU_IRQ6=0x08,IER_ICU_IRQ7=0x08,IER_ICU_IRQ8=0x09,IER_ICU_IRQ9=0x09,IER_ICU_IRQ10=0x09,IER_ICU_IRQ11=0x09,IER_ICU_IRQ12=0x09,IER_ICU_IRQ13=0x09,IER_ICU_IRQ14=0x09,IER_ICU_IRQ15=0x09, -IER_USB_USBR0=0x0B,IER_USB_USBR1=0x0B, -IER_RTC_ALARM=0x0B,IER_RTC_PRD=0x0B, -IER_AD0_ADI0=0x0C, -IER_S12AD0_S12ADI0=0x0C, -IER_ICU_GROUPE0=0x0D,IER_ICU_GROUPE1=0x0D,IER_ICU_GROUPE2=0x0D,IER_ICU_GROUPE3=0x0D,IER_ICU_GROUPE4=0x0D,IER_ICU_GROUPE5=0x0D,IER_ICU_GROUPE6=0x0E,IER_ICU_GROUPL0=0x0E, -IER_SCIX_SCIX0=0x0F,IER_SCIX_SCIX1=0x0F,IER_SCIX_SCIX2=0x0F,IER_SCIX_SCIX3=0x0F, -IER_TPU0_TGI0A=0x0F,IER_TPU0_TGI0B=0x0F,IER_TPU0_TGI0C=0x10,IER_TPU0_TGI0D=0x10, -IER_TPU1_TGI1A=0x10,IER_TPU1_TGI1B=0x10, -IER_TPU2_TGI2A=0x10,IER_TPU2_TGI2B=0x10, -IER_TPU3_TGI3A=0x10,IER_TPU3_TGI3B=0x10,IER_TPU3_TGI3C=0x11,IER_TPU3_TGI3D=0x11, -IER_TPU4_TGI4A=0x11,IER_TPU4_TGI4B=0x11, -IER_TPU5_TGI5A=0x11,IER_TPU5_TGI5B=0x11, -IER_TPU6_TGI6A=0x11,IER_TPU6_TGI6B=0x11,IER_TPU6_TGI6C=0x12,IER_TPU6_TGI6D=0x12, -IER_MTU0_TGIA0=0x11,IER_MTU0_TGIB0=0x11,IER_MTU0_TGIC0=0x12,IER_MTU0_TGID0=0x12,IER_MTU0_TGIE0=0x12,IER_MTU0_TGIF0=0x12, -IER_TPU7_TGI7A=0x12,IER_TPU7_TGI7B=0x12, -IER_MTU1_TGIA1=0x12,IER_MTU1_TGIB1=0x12, -IER_TPU8_TGI8A=0x12,IER_TPU8_TGI8B=0x12, -IER_MTU2_TGIA2=0x12,IER_MTU2_TGIB2=0x12, -IER_TPU9_TGI9A=0x13,IER_TPU9_TGI9B=0x13,IER_TPU9_TGI9C=0x13,IER_TPU9_TGI9D=0x13, -IER_MTU3_TGIA3=0x13,IER_MTU3_TGIB3=0x13,IER_MTU3_TGIC3=0x13,IER_MTU3_TGID3=0x13, -IER_TPU10_TGI10A=0x13,IER_TPU10_TGI10B=0x13, -IER_MTU4_TGIA4=0x13,IER_MTU4_TGIB4=0x13,IER_MTU4_TGIC4=0x13,IER_MTU4_TGID4=0x13,IER_MTU4_TCIV4=0x14, -IER_MTU5_TGIU5=0x14,IER_MTU5_TGIV5=0x14,IER_MTU5_TGIW5=0x14, -IER_TPU11_TGI11A=0x14,IER_TPU11_TGI11B=0x14, -IER_POE_OEI1=0x14,IER_POE_OEI2=0x14, -IER_TMR0_CMIA0=0x15,IER_TMR0_CMIB0=0x15,IER_TMR0_OVI0=0x15, -IER_TMR1_CMIA1=0x15,IER_TMR1_CMIB1=0x15,IER_TMR1_OVI1=0x15, -IER_TMR2_CMIA2=0x16,IER_TMR2_CMIB2=0x16,IER_TMR2_OVI2=0x16, -IER_TMR3_CMIA3=0x16,IER_TMR3_CMIB3=0x16,IER_TMR3_OVI3=0x16, -IER_RIIC0_EEI0=0x16,IER_RIIC0_RXI0=0x16,IER_RIIC0_TXI0=0x17,IER_RIIC0_TEI0=0x17, -IER_RIIC1_EEI1=0x17,IER_RIIC1_RXI1=0x17,IER_RIIC1_TXI1=0x17,IER_RIIC1_TEI1=0x17, -IER_RIIC2_EEI2=0x17,IER_RIIC2_RXI2=0x17,IER_RIIC2_TXI2=0x18,IER_RIIC2_TEI2=0x18, -IER_RIIC3_EEI3=0x18,IER_RIIC3_RXI3=0x18,IER_RIIC3_TXI3=0x18,IER_RIIC3_TEI3=0x18, -IER_DMAC_DMAC0I=0x18,IER_DMAC_DMAC1I=0x18,IER_DMAC_DMAC2I=0x19,IER_DMAC_DMAC3I=0x19, -IER_EXDMAC_EXDMAC0I=0x19,IER_EXDMAC_EXDMAC1I=0x19, -IER_SCI0_RXI0=0x1A,IER_SCI0_TXI0=0x1A,IER_SCI0_TEI0=0x1B, -IER_SCI1_RXI1=0x1B,IER_SCI1_TXI1=0x1B,IER_SCI1_TEI1=0x1B, -IER_SCI2_RXI2=0x1B,IER_SCI2_TXI2=0x1B,IER_SCI2_TEI2=0x1B, -IER_SCI3_RXI3=0x1B,IER_SCI3_TXI3=0x1C,IER_SCI3_TEI3=0x1C, -IER_SCI4_RXI4=0x1C,IER_SCI4_TXI4=0x1C,IER_SCI4_TEI4=0x1C, -IER_SCI5_RXI5=0x1C,IER_SCI5_TXI5=0x1C,IER_SCI5_TEI5=0x1C, -IER_SCI6_RXI6=0x1D,IER_SCI6_TXI6=0x1D,IER_SCI6_TEI6=0x1D, -IER_SCI7_RXI7=0x1D,IER_SCI7_TXI7=0x1D,IER_SCI7_TEI7=0x1D, -IER_SCI8_RXI8=0x1D,IER_SCI8_TXI8=0x1D,IER_SCI8_TEI8=0x1E, -IER_SCI9_RXI9=0x1E,IER_SCI9_TXI9=0x1E,IER_SCI9_TEI9=0x1E, -IER_SCI10_RXI10=0x1E,IER_SCI10_TXI10=0x1E,IER_SCI10_TEI10=0x1E, -IER_SCI11_RXI11=0x1E,IER_SCI11_TXI11=0x1F,IER_SCI11_TEI11=0x1F, -IER_SCI12_RXI12=0x1F,IER_SCI12_TXI12=0x1F,IER_SCI12_TEI12=0x1F, -IER_IEB_IEBINT=0x1F -}; - -enum enum_ipr { -IPR_BSC_BUSERR=0, -IPR_FCU_FIFERR=1,IPR_FCU_FRDYI=2, -IPR_ICU_SWINT=3, -IPR_CMT0_CMI0=4, -IPR_CMT1_CMI1=5, -IPR_CMT2_CMI2=6, -IPR_CMT3_CMI3=7, -IPR_ETHER_EINT=32, -IPR_USB0_D0FIFO0=33,IPR_USB0_D1FIFO0=34,IPR_USB0_USBI0=35, -IPR_USB1_D0FIFO1=36,IPR_USB1_D1FIFO1=37,IPR_USB1_USBI1=38, -IPR_RSPI0_SPRI0=39,IPR_RSPI0_SPTI0=39,IPR_RSPI0_SPII0=39, -IPR_RSPI1_SPRI1=42,IPR_RSPI1_SPTI1=42,IPR_RSPI1_SPII1=42, -IPR_RSPI2_SPRI2=45,IPR_RSPI2_SPTI2=45,IPR_RSPI2_SPII2=45, -IPR_CAN0_RXF0=48,IPR_CAN0_TXF0=48,IPR_CAN0_RXM0=48,IPR_CAN0_TXM0=48, -IPR_CAN1_RXF1=52,IPR_CAN1_TXF1=52,IPR_CAN1_RXM1=52,IPR_CAN1_TXM1=52, -IPR_CAN2_RXF2=56,IPR_CAN2_TXF2=56,IPR_CAN2_RXM2=56,IPR_CAN2_TXM2=56, -IPR_RTC_COUNTUP=62, -IPR_ICU_IRQ0=64,IPR_ICU_IRQ1=65,IPR_ICU_IRQ2=66,IPR_ICU_IRQ3=67,IPR_ICU_IRQ4=68,IPR_ICU_IRQ5=69,IPR_ICU_IRQ6=70,IPR_ICU_IRQ7=71,IPR_ICU_IRQ8=72,IPR_ICU_IRQ9=73,IPR_ICU_IRQ10=74,IPR_ICU_IRQ11=75,IPR_ICU_IRQ12=76,IPR_ICU_IRQ13=77,IPR_ICU_IRQ14=78,IPR_ICU_IRQ15=79, -IPR_USB_USBR0=90,IPR_USB_USBR1=91, -IPR_RTC_ALARM=92,IPR_RTC_PRD=93, -IPR_AD0_ADI0=98, -IPR_S12AD0_S12ADI0=102, -IPR_ICU_GROUPE0=106,IPR_ICU_GROUPE1=107,IPR_ICU_GROUPE2=108,IPR_ICU_GROUPE3=109,IPR_ICU_GROUPE4=110,IPR_ICU_GROUPE5=111,IPR_ICU_GROUPE6=112,IPR_ICU_GROUPL0=114, -IPR_SCIX_SCIX0=122,IPR_SCIX_SCIX1=122,IPR_SCIX_SCIX2=122,IPR_SCIX_SCIX3=122, -IPR_TPU0_TGI0A=126,IPR_TPU0_TGI0B=126,IPR_TPU0_TGI0C=126,IPR_TPU0_TGI0D=126, -IPR_TPU1_TGI1A=130,IPR_TPU1_TGI1B=130, -IPR_TPU2_TGI2A=132,IPR_TPU2_TGI2B=132, -IPR_TPU3_TGI3A=134,IPR_TPU3_TGI3B=134,IPR_TPU3_TGI3C=134,IPR_TPU3_TGI3D=134, -IPR_TPU4_TGI4A=138,IPR_TPU4_TGI4B=138, -IPR_TPU5_TGI5A=140,IPR_TPU5_TGI5B=140, -IPR_TPU6_TGI6A=142,IPR_TPU6_TGI6B=142,IPR_TPU6_TGI6C=142,IPR_TPU6_TGI6D=142, -IPR_MTU0_TGIA0=142,IPR_MTU0_TGIB0=142,IPR_MTU0_TGIC0=142,IPR_MTU0_TGID0=142,IPR_MTU0_TGIE0=146,IPR_MTU0_TGIF0=146, -IPR_TPU7_TGI7A=148,IPR_TPU7_TGI7B=148, -IPR_MTU1_TGIA1=148,IPR_MTU1_TGIB1=148, -IPR_TPU8_TGI8A=150,IPR_TPU8_TGI8B=150, -IPR_MTU2_TGIA2=150,IPR_MTU2_TGIB2=150, -IPR_TPU9_TGI9A=152,IPR_TPU9_TGI9B=152,IPR_TPU9_TGI9C=152,IPR_TPU9_TGI9D=152, -IPR_MTU3_TGIA3=152,IPR_MTU3_TGIB3=152,IPR_MTU3_TGIC3=152,IPR_MTU3_TGID3=152, -IPR_TPU10_TGI10A=156,IPR_TPU10_TGI10B=156, -IPR_MTU4_TGIA4=156,IPR_MTU4_TGIB4=156,IPR_MTU4_TGIC4=156,IPR_MTU4_TGID4=156,IPR_MTU4_TCIV4=160, -IPR_MTU5_TGIU5=161,IPR_MTU5_TGIV5=161,IPR_MTU5_TGIW5=161, -IPR_TPU11_TGI11A=164,IPR_TPU11_TGI11B=164, -IPR_POE_OEI1=166,IPR_POE_OEI2=166, -IPR_TMR0_CMIA0=170,IPR_TMR0_CMIB0=170,IPR_TMR0_OVI0=170, -IPR_TMR1_CMIA1=173,IPR_TMR1_CMIB1=173,IPR_TMR1_OVI1=173, -IPR_TMR2_CMIA2=176,IPR_TMR2_CMIB2=176,IPR_TMR2_OVI2=176, -IPR_TMR3_CMIA3=179,IPR_TMR3_CMIB3=179,IPR_TMR3_OVI3=179, -IPR_RIIC0_EEI0=182,IPR_RIIC0_RXI0=183,IPR_RIIC0_TXI0=184,IPR_RIIC0_TEI0=185, -IPR_RIIC1_EEI1=186,IPR_RIIC1_RXI1=187,IPR_RIIC1_TXI1=188,IPR_RIIC1_TEI1=189, -IPR_RIIC2_EEI2=190,IPR_RIIC2_RXI2=191,IPR_RIIC2_TXI2=192,IPR_RIIC2_TEI2=193, -IPR_RIIC3_EEI3=194,IPR_RIIC3_RXI3=195,IPR_RIIC3_TXI3=196,IPR_RIIC3_TEI3=197, -IPR_DMAC_DMAC0I=198,IPR_DMAC_DMAC1I=199,IPR_DMAC_DMAC2I=200,IPR_DMAC_DMAC3I=201, -IPR_EXDMAC_EXDMAC0I=202,IPR_EXDMAC_EXDMAC1I=203, -IPR_SCI0_RXI0=214,IPR_SCI0_TXI0=214,IPR_SCI0_TEI0=214, -IPR_SCI1_RXI1=217,IPR_SCI1_TXI1=217,IPR_SCI1_TEI1=217, -IPR_SCI2_RXI2=220,IPR_SCI2_TXI2=220,IPR_SCI2_TEI2=220, -IPR_SCI3_RXI3=223,IPR_SCI3_TXI3=223,IPR_SCI3_TEI3=223, -IPR_SCI4_RXI4=226,IPR_SCI4_TXI4=226,IPR_SCI4_TEI4=226, -IPR_SCI5_RXI5=229,IPR_SCI5_TXI5=229,IPR_SCI5_TEI5=229, -IPR_SCI6_RXI6=232,IPR_SCI6_TXI6=232,IPR_SCI6_TEI6=232, -IPR_SCI7_RXI7=235,IPR_SCI7_TXI7=235,IPR_SCI7_TEI7=235, -IPR_SCI8_RXI8=238,IPR_SCI8_TXI8=238,IPR_SCI8_TEI8=238, -IPR_SCI9_RXI9=241,IPR_SCI9_TXI9=241,IPR_SCI9_TEI9=241, -IPR_SCI10_RXI10=244,IPR_SCI10_TXI10=244,IPR_SCI10_TEI10=244, -IPR_SCI11_RXI11=247,IPR_SCI11_TXI11=247,IPR_SCI11_TEI11=247, -IPR_SCI12_RXI12=250,IPR_SCI12_TXI12=250,IPR_SCI12_TEI12=250, -IPR_IEB_IEBINT=253, -IPR_BSC_=0, -IPR_CMT0_=4, -IPR_CMT1_=5, -IPR_CMT2_=6, -IPR_CMT3_=7, -IPR_ETHER_=32, -IPR_RSPI0_=39, -IPR_RSPI1_=42, -IPR_RSPI2_=45, -IPR_CAN0_=48, -IPR_CAN1_=52, -IPR_CAN2_=56, -IPR_AD0_=98, -IPR_S12AD0_=102, -IPR_SCIX_=122, -IPR_SCIX_SCI=122, -IPR_TPU0_=126, -IPR_TPU0_TGI=126, -IPR_TPU1_=130, -IPR_TPU1_TGI=130, -IPR_TPU2_=132, -IPR_TPU2_TGI=132, -IPR_TPU3_=134, -IPR_TPU3_TGI=134, -IPR_TPU4_=138, -IPR_TPU4_TGI=138, -IPR_TPU5_=140, -IPR_TPU5_TGI=140, -IPR_MTU5_=161, -IPR_MTU5_TGI=161, -IPR_TPU11_=164, -IPR_TPU11_TGI=164, -IPR_POE_=166, -IPR_POE_OEI=166, -IPR_TMR0_=170, -IPR_TMR1_=173, -IPR_TMR2_=176, -IPR_TMR3_=179, -IPR_SCI0_=214, -IPR_SCI1_=217, -IPR_SCI2_=220, -IPR_SCI3_=223, -IPR_SCI4_=226, -IPR_SCI5_=229, -IPR_SCI6_=232, -IPR_SCI7_=235, -IPR_SCI8_=238, -IPR_SCI9_=241, -IPR_SCI10_=244, -IPR_SCI11_=247, -IPR_SCI12_=250, -IPR_IEB_=253 -}; - -enum enum_grp { -GRP_CAN0_ERS0=0,GRP_CAN1_ERS1=0,GRP_CAN2_ERS2=0, -GRP_MTU0_TCIV0=1,GRP_MTU1_TCIV1=1,GRP_MTU1_TCIU1=1, -GRP_MTU2_TCIV2=2,GRP_MTU2_TCIU2=2,GRP_MTU3_TCIV3=2, -GRP_TPU0_TCI0V=3,GRP_TPU1_TCI1V=3,GRP_TPU1_TCI1U=3,GRP_TPU5_TCI5V=3,GRP_TPU5_TCI5U=3, -GRP_TPU2_TCI2V=4,GRP_TPU2_TCI2U=4,GRP_TPU3_TCI3V=4,GRP_TPU4_TCI4V=4,GRP_TPU4_TCI4U=4, -GRP_TPU6_TCI6V=5,GRP_TPU7_TCI7V=5,GRP_TPU7_TCI7U=5,GRP_TPU11_TCI11V=5,GRP_TPU11_TCI11U=5, -GRP_TPU8_TCI8V=6,GRP_TPU8_TCI8U=6,GRP_TPU9_TCI9V=6,GRP_TPU10_TCI10V=6,GRP_TPU10_TCI10U=6, -GRP_SCI0_ERI0=12,GRP_SCI1_ERI1=12,GRP_SCI2_ERI2=12,GRP_SCI3_ERI3=12,GRP_SCI4_ERI4=12,GRP_SCI5_ERI5=12,GRP_SCI6_ERI6=12, -GRP_SCI7_ERI7=12,GRP_SCI8_ERI8=12,GRP_SCI9_ERI9=12,GRP_SCI10_ERI10=12,GRP_SCI11_ERI11=12,GRP_SCI12_ERI12=12, -GRP_RSPI0_SPEI0=12,GRP_RSPI1_SPEI1=12,GRP_RSPI2_SPEI2=12 -}; - -enum enum_gen { -GEN_CAN0_ERS0=0,GEN_CAN1_ERS1=0,GEN_CAN2_ERS2=0, -GEN_MTU0_TCIV0=1,GEN_MTU1_TCIV1=1,GEN_MTU1_TCIU1=1, -GEN_MTU2_TCIV2=2,GEN_MTU2_TCIU2=2,GEN_MTU3_TCIV3=2, -GEN_TPU0_TCI0V=3,GEN_TPU1_TCI1V=3,GEN_TPU1_TCI1U=3,GEN_TPU5_TCI5V=3,GEN_TPU5_TCI5U=3, -GEN_TPU2_TCI2V=4,GEN_TPU2_TCI2U=4,GEN_TPU3_TCI3V=4,GEN_TPU4_TCI4V=4,GEN_TPU4_TCI4U=4, -GEN_TPU6_TCI6V=5,GEN_TPU7_TCI7V=5,GEN_TPU7_TCI7U=5,GEN_TPU11_TCI11V=5,GEN_TPU11_TCI11U=5, -GEN_TPU8_TCI8V=6,GEN_TPU8_TCI8U=6,GEN_TPU9_TCI9V=6,GEN_TPU10_TCI10V=6,GEN_TPU10_TCI10U=6, -GEN_SCI0_ERI0=12,GEN_SCI1_ERI1=12,GEN_SCI2_ERI2=12,GEN_SCI3_ERI3=12,GEN_SCI4_ERI4=12,GEN_SCI5_ERI5=12,GEN_SCI6_ERI6=12, -GEN_SCI7_ERI7=12,GEN_SCI8_ERI8=12,GEN_SCI9_ERI9=12,GEN_SCI10_ERI10=12,GEN_SCI11_ERI11=12,GEN_SCI12_ERI12=12, -GEN_RSPI0_SPEI0=12,GEN_RSPI1_SPEI1=12,GEN_RSPI2_SPEI2=12 -}; - -enum enum_gcr { -GCR_CAN0_ERS0=0,GCR_CAN1_ERS1=0,GCR_CAN2_ERS2=0, -GCR_MTU0_TCIV0=1,GCR_MTU1_TCIV1=1,GCR_MTU1_TCIU1=1, -GCR_MTU2_TCIV2=2,GCR_MTU2_TCIU2=2,GCR_MTU3_TCIV3=2, -GCR_TPU0_TCI0V=3,GCR_TPU1_TCI1V=3,GCR_TPU1_TCI1U=3,GCR_TPU5_TCI5V=3,GCR_TPU5_TCI5U=3, -GCR_TPU2_TCI2V=4,GCR_TPU2_TCI2U=4,GCR_TPU3_TCI3V=4,GCR_TPU4_TCI4V=4,GCR_TPU4_TCI4U=4, -GCR_TPU6_TCI6V=5,GCR_TPU7_TCI7V=5,GCR_TPU7_TCI7U=5,GCR_TPU11_TCI11V=5,GCR_TPU11_TCI11U=5, -GCR_TPU8_TCI8V=6,GCR_TPU8_TCI8U=6,GCR_TPU9_TCI9V=6,GCR_TPU10_TCI10V=6,GCR_TPU10_TCI10U=6, -GCR_SCI0_ERI0=12,GCR_SCI1_ERI1=12,GCR_SCI2_ERI2=12,GCR_SCI3_ERI3=12,GCR_SCI4_ERI4=12,GCR_SCI5_ERI5=12,GCR_SCI6_ERI6=12, -GCR_SCI7_ERI7=12,GCR_SCI8_ERI8=12,GCR_SCI9_ERI9=12,GCR_SCI10_ERI10=12,GCR_SCI11_ERI11=12,GCR_SCI12_ERI12=12, -GCR_RSPI0_SPEI0=12,GCR_RSPI1_SPEI1=12,GCR_RSPI2_SPEI2=12 -}; - -#define IEN_BSC_BUSERR IEN0 -#define IEN_FCU_FIFERR IEN5 -#define IEN_FCU_FRDYI IEN7 -#define IEN_ICU_SWINT IEN3 -#define IEN_CMT0_CMI0 IEN4 -#define IEN_CMT1_CMI1 IEN5 -#define IEN_CMT2_CMI2 IEN6 -#define IEN_CMT3_CMI3 IEN7 -#define IEN_ETHER_EINT IEN0 -#define IEN_USB0_D0FIFO0 IEN1 -#define IEN_USB0_D1FIFO0 IEN2 -#define IEN_USB0_USBI0 IEN3 -#define IEN_USB1_D0FIFO1 IEN4 -#define IEN_USB1_D1FIFO1 IEN5 -#define IEN_USB1_USBI1 IEN6 -#define IEN_RSPI0_SPRI0 IEN7 -#define IEN_RSPI0_SPTI0 IEN0 -#define IEN_RSPI0_SPII0 IEN1 -#define IEN_RSPI1_SPRI1 IEN2 -#define IEN_RSPI1_SPTI1 IEN3 -#define IEN_RSPI1_SPII1 IEN4 -#define IEN_RSPI2_SPRI2 IEN5 -#define IEN_RSPI2_SPTI2 IEN6 -#define IEN_RSPI2_SPII2 IEN7 -#define IEN_CAN0_RXF0 IEN0 -#define IEN_CAN0_TXF0 IEN1 -#define IEN_CAN0_RXM0 IEN2 -#define IEN_CAN0_TXM0 IEN3 -#define IEN_CAN1_RXF1 IEN4 -#define IEN_CAN1_TXF1 IEN5 -#define IEN_CAN1_RXM1 IEN6 -#define IEN_CAN1_TXM1 IEN7 -#define IEN_CAN2_RXF2 IEN0 -#define IEN_CAN2_TXF2 IEN1 -#define IEN_CAN2_RXM2 IEN2 -#define IEN_CAN2_TXM2 IEN3 -#define IEN_RTC_COUNTUP IEN6 -#define IEN_ICU_IRQ0 IEN0 -#define IEN_ICU_IRQ1 IEN1 -#define IEN_ICU_IRQ2 IEN2 -#define IEN_ICU_IRQ3 IEN3 -#define IEN_ICU_IRQ4 IEN4 -#define IEN_ICU_IRQ5 IEN5 -#define IEN_ICU_IRQ6 IEN6 -#define IEN_ICU_IRQ7 IEN7 -#define IEN_ICU_IRQ8 IEN0 -#define IEN_ICU_IRQ9 IEN1 -#define IEN_ICU_IRQ10 IEN2 -#define IEN_ICU_IRQ11 IEN3 -#define IEN_ICU_IRQ12 IEN4 -#define IEN_ICU_IRQ13 IEN5 -#define IEN_ICU_IRQ14 IEN6 -#define IEN_ICU_IRQ15 IEN7 -#define IEN_USB_USBR0 IEN2 -#define IEN_USB_USBR1 IEN3 -#define IEN_RTC_ALARM IEN4 -#define IEN_RTC_PRD IEN5 -#define IEN_AD0_ADI0 IEN2 -#define IEN_S12AD0_S12ADI0 IEN6 -#define IEN_ICU_GROUPE0 IEN2 -#define IEN_ICU_GROUPE1 IEN3 -#define IEN_ICU_GROUPE2 IEN4 -#define IEN_ICU_GROUPE3 IEN5 -#define IEN_ICU_GROUPE4 IEN6 -#define IEN_ICU_GROUPE5 IEN7 -#define IEN_ICU_GROUPE6 IEN0 -#define IEN_ICU_GROUPL0 IEN2 -#define IEN_SCIX_SCIX0 IEN2 -#define IEN_SCIX_SCIX1 IEN3 -#define IEN_SCIX_SCIX2 IEN4 -#define IEN_SCIX_SCIX3 IEN5 -#define IEN_TPU0_TGI0A IEN6 -#define IEN_TPU0_TGI0B IEN7 -#define IEN_TPU0_TGI0C IEN0 -#define IEN_TPU0_TGI0D IEN1 -#define IEN_TPU1_TGI1A IEN2 -#define IEN_TPU1_TGI1B IEN3 -#define IEN_TPU2_TGI2A IEN4 -#define IEN_TPU2_TGI2B IEN5 -#define IEN_TPU3_TGI3A IEN6 -#define IEN_TPU3_TGI3B IEN7 -#define IEN_TPU3_TGI3C IEN0 -#define IEN_TPU3_TGI3D IEN1 -#define IEN_TPU4_TGI4A IEN2 -#define IEN_TPU4_TGI4B IEN3 -#define IEN_TPU5_TGI5A IEN4 -#define IEN_TPU5_TGI5B IEN5 -#define IEN_TPU6_TGI6A IEN6 -#define IEN_TPU6_TGI6B IEN7 -#define IEN_TPU6_TGI6C IEN0 -#define IEN_TPU6_TGI6D IEN1 -#define IEN_MTU0_TGIA0 IEN6 -#define IEN_MTU0_TGIB0 IEN7 -#define IEN_MTU0_TGIC0 IEN0 -#define IEN_MTU0_TGID0 IEN1 -#define IEN_MTU0_TGIE0 IEN2 -#define IEN_MTU0_TGIF0 IEN3 -#define IEN_TPU7_TGI7A IEN4 -#define IEN_TPU7_TGI7B IEN5 -#define IEN_MTU1_TGIA1 IEN4 -#define IEN_MTU1_TGIB1 IEN5 -#define IEN_TPU8_TGI8A IEN6 -#define IEN_TPU8_TGI8B IEN7 -#define IEN_MTU2_TGIA2 IEN6 -#define IEN_MTU2_TGIB2 IEN7 -#define IEN_TPU9_TGI9A IEN0 -#define IEN_TPU9_TGI9B IEN1 -#define IEN_TPU9_TGI9C IEN2 -#define IEN_TPU9_TGI9D IEN3 -#define IEN_MTU3_TGIA3 IEN0 -#define IEN_MTU3_TGIB3 IEN1 -#define IEN_MTU3_TGIC3 IEN2 -#define IEN_MTU3_TGID3 IEN3 -#define IEN_TPU10_TGI10A IEN4 -#define IEN_TPU10_TGI10B IEN5 -#define IEN_MTU4_TGIA4 IEN4 -#define IEN_MTU4_TGIB4 IEN5 -#define IEN_MTU4_TGIC4 IEN6 -#define IEN_MTU4_TGID4 IEN7 -#define IEN_MTU4_TCIV4 IEN0 -#define IEN_MTU5_TGIU5 IEN1 -#define IEN_MTU5_TGIV5 IEN2 -#define IEN_MTU5_TGIW5 IEN3 -#define IEN_TPU11_TGI11A IEN4 -#define IEN_TPU11_TGI11B IEN5 -#define IEN_POE_OEI1 IEN6 -#define IEN_POE_OEI2 IEN7 -#define IEN_TMR0_CMIA0 IEN2 -#define IEN_TMR0_CMIB0 IEN3 -#define IEN_TMR0_OVI0 IEN4 -#define IEN_TMR1_CMIA1 IEN5 -#define IEN_TMR1_CMIB1 IEN6 -#define IEN_TMR1_OVI1 IEN7 -#define IEN_TMR2_CMIA2 IEN0 -#define IEN_TMR2_CMIB2 IEN1 -#define IEN_TMR2_OVI2 IEN2 -#define IEN_TMR3_CMIA3 IEN3 -#define IEN_TMR3_CMIB3 IEN4 -#define IEN_TMR3_OVI3 IEN5 -#define IEN_RIIC0_EEI0 IEN6 -#define IEN_RIIC0_RXI0 IEN7 -#define IEN_RIIC0_TXI0 IEN0 -#define IEN_RIIC0_TEI0 IEN1 -#define IEN_RIIC1_EEI1 IEN2 -#define IEN_RIIC1_RXI1 IEN3 -#define IEN_RIIC1_TXI1 IEN4 -#define IEN_RIIC1_TEI1 IEN5 -#define IEN_RIIC2_EEI2 IEN6 -#define IEN_RIIC2_RXI2 IEN7 -#define IEN_RIIC2_TXI2 IEN0 -#define IEN_RIIC2_TEI2 IEN1 -#define IEN_RIIC3_EEI3 IEN2 -#define IEN_RIIC3_RXI3 IEN3 -#define IEN_RIIC3_TXI3 IEN4 -#define IEN_RIIC3_TEI3 IEN5 -#define IEN_DMAC_DMAC0I IEN6 -#define IEN_DMAC_DMAC1I IEN7 -#define IEN_DMAC_DMAC2I IEN0 -#define IEN_DMAC_DMAC3I IEN1 -#define IEN_EXDMAC_EXDMAC0I IEN2 -#define IEN_EXDMAC_EXDMAC1I IEN3 -#define IEN_SCI0_RXI0 IEN6 -#define IEN_SCI0_TXI0 IEN7 -#define IEN_SCI0_TEI0 IEN0 -#define IEN_SCI1_RXI1 IEN1 -#define IEN_SCI1_TXI1 IEN2 -#define IEN_SCI1_TEI1 IEN3 -#define IEN_SCI2_RXI2 IEN4 -#define IEN_SCI2_TXI2 IEN5 -#define IEN_SCI2_TEI2 IEN6 -#define IEN_SCI3_RXI3 IEN7 -#define IEN_SCI3_TXI3 IEN0 -#define IEN_SCI3_TEI3 IEN1 -#define IEN_SCI4_RXI4 IEN2 -#define IEN_SCI4_TXI4 IEN3 -#define IEN_SCI4_TEI4 IEN4 -#define IEN_SCI5_RXI5 IEN5 -#define IEN_SCI5_TXI5 IEN6 -#define IEN_SCI5_TEI5 IEN7 -#define IEN_SCI6_RXI6 IEN0 -#define IEN_SCI6_TXI6 IEN1 -#define IEN_SCI6_TEI6 IEN2 -#define IEN_SCI7_RXI7 IEN3 -#define IEN_SCI7_TXI7 IEN4 -#define IEN_SCI7_TEI7 IEN5 -#define IEN_SCI8_RXI8 IEN6 -#define IEN_SCI8_TXI8 IEN7 -#define IEN_SCI8_TEI8 IEN0 -#define IEN_SCI9_RXI9 IEN1 -#define IEN_SCI9_TXI9 IEN2 -#define IEN_SCI9_TEI9 IEN3 -#define IEN_SCI10_RXI10 IEN4 -#define IEN_SCI10_TXI10 IEN5 -#define IEN_SCI10_TEI10 IEN6 -#define IEN_SCI11_RXI11 IEN7 -#define IEN_SCI11_TXI11 IEN0 -#define IEN_SCI11_TEI11 IEN1 -#define IEN_SCI12_RXI12 IEN2 -#define IEN_SCI12_TXI12 IEN3 -#define IEN_SCI12_TEI12 IEN4 -#define IEN_IEB_IEBINT IEN5 - -#define VECT_BSC_BUSERR 16 -#define VECT_FCU_FIFERR 21 -#define VECT_FCU_FRDYI 23 -#define VECT_ICU_SWINT 27 -#define VECT_CMT0_CMI0 28 -#define VECT_CMT1_CMI1 29 -#define VECT_CMT2_CMI2 30 -#define VECT_CMT3_CMI3 31 -#define VECT_ETHER_EINT 32 -#define VECT_USB0_D0FIFO0 33 -#define VECT_USB0_D1FIFO0 34 -#define VECT_USB0_USBI0 35 -#define VECT_USB1_D0FIFO1 36 -#define VECT_USB1_D1FIFO1 37 -#define VECT_USB1_USBI1 38 -#define VECT_RSPI0_SPRI0 39 -#define VECT_RSPI0_SPTI0 40 -#define VECT_RSPI0_SPII0 41 -#define VECT_RSPI1_SPRI1 42 -#define VECT_RSPI1_SPTI1 43 -#define VECT_RSPI1_SPII1 44 -#define VECT_RSPI2_SPRI2 45 -#define VECT_RSPI2_SPTI2 46 -#define VECT_RSPI2_SPII2 47 -#define VECT_CAN0_RXF0 48 -#define VECT_CAN0_TXF0 49 -#define VECT_CAN0_RXM0 50 -#define VECT_CAN0_TXM0 51 -#define VECT_CAN1_RXF1 52 -#define VECT_CAN1_TXF1 53 -#define VECT_CAN1_RXM1 54 -#define VECT_CAN1_TXM1 55 -#define VECT_CAN2_RXF2 56 -#define VECT_CAN2_TXF2 57 -#define VECT_CAN2_RXM2 58 -#define VECT_CAN2_TXM2 59 -#define VECT_RTC_COUNTUP 62 -#define VECT_ICU_IRQ0 64 -#define VECT_ICU_IRQ1 65 -#define VECT_ICU_IRQ2 66 -#define VECT_ICU_IRQ3 67 -#define VECT_ICU_IRQ4 68 -#define VECT_ICU_IRQ5 69 -#define VECT_ICU_IRQ6 70 -#define VECT_ICU_IRQ7 71 -#define VECT_ICU_IRQ8 72 -#define VECT_ICU_IRQ9 73 -#define VECT_ICU_IRQ10 74 -#define VECT_ICU_IRQ11 75 -#define VECT_ICU_IRQ12 76 -#define VECT_ICU_IRQ13 77 -#define VECT_ICU_IRQ14 78 -#define VECT_ICU_IRQ15 79 -#define VECT_USB_USBR0 90 -#define VECT_USB_USBR1 91 -#define VECT_RTC_ALARM 92 -#define VECT_RTC_PRD 93 -#define VECT_AD0_ADI0 98 -#define VECT_S12AD0_S12ADI0 102 -#define VECT_ICU_GROUPE0 106 -#define VECT_ICU_GROUPE1 107 -#define VECT_ICU_GROUPE2 108 -#define VECT_ICU_GROUPE3 109 -#define VECT_ICU_GROUPE4 110 -#define VECT_ICU_GROUPE5 111 -#define VECT_ICU_GROUPE6 112 -#define VECT_ICU_GROUPL0 114 -#define VECT_SCIX_SCIX0 122 -#define VECT_SCIX_SCIX1 123 -#define VECT_SCIX_SCIX2 124 -#define VECT_SCIX_SCIX3 125 -#define VECT_TPU0_TGI0A 126 -#define VECT_TPU0_TGI0B 127 -#define VECT_TPU0_TGI0C 128 -#define VECT_TPU0_TGI0D 129 -#define VECT_TPU1_TGI1A 130 -#define VECT_TPU1_TGI1B 131 -#define VECT_TPU2_TGI2A 132 -#define VECT_TPU2_TGI2B 133 -#define VECT_TPU3_TGI3A 134 -#define VECT_TPU3_TGI3B 135 -#define VECT_TPU3_TGI3C 136 -#define VECT_TPU3_TGI3D 137 -#define VECT_TPU4_TGI4A 138 -#define VECT_TPU4_TGI4B 139 -#define VECT_TPU5_TGI5A 140 -#define VECT_TPU5_TGI5B 141 -#define VECT_TPU6_TGI6A 142 -#define VECT_TPU6_TGI6B 143 -#define VECT_TPU6_TGI6C 144 -#define VECT_TPU6_TGI6D 145 -#define VECT_MTU0_TGIA0 142 -#define VECT_MTU0_TGIB0 143 -#define VECT_MTU0_TGIC0 144 -#define VECT_MTU0_TGID0 145 -#define VECT_MTU0_TGIE0 146 -#define VECT_MTU0_TGIF0 147 -#define VECT_TPU7_TGI7A 148 -#define VECT_TPU7_TGI7B 149 -#define VECT_MTU1_TGIA1 148 -#define VECT_MTU1_TGIB1 149 -#define VECT_TPU8_TGI8A 150 -#define VECT_TPU8_TGI8B 151 -#define VECT_MTU2_TGIA2 150 -#define VECT_MTU2_TGIB2 151 -#define VECT_TPU9_TGI9A 152 -#define VECT_TPU9_TGI9B 153 -#define VECT_TPU9_TGI9C 154 -#define VECT_TPU9_TGI9D 155 -#define VECT_MTU3_TGIA3 152 -#define VECT_MTU3_TGIB3 153 -#define VECT_MTU3_TGIC3 154 -#define VECT_MTU3_TGID3 155 -#define VECT_TPU10_TGI10A 156 -#define VECT_TPU10_TGI10B 157 -#define VECT_MTU4_TGIA4 156 -#define VECT_MTU4_TGIB4 157 -#define VECT_MTU4_TGIC4 158 -#define VECT_MTU4_TGID4 159 -#define VECT_MTU4_TCIV4 160 -#define VECT_MTU5_TGIU5 161 -#define VECT_MTU5_TGIV5 162 -#define VECT_MTU5_TGIW5 163 -#define VECT_TPU11_TGI11A 164 -#define VECT_TPU11_TGI11B 165 -#define VECT_POE_OEI1 166 -#define VECT_POE_OEI2 167 -#define VECT_TMR0_CMIA0 170 -#define VECT_TMR0_CMIB0 171 -#define VECT_TMR0_OVI0 172 -#define VECT_TMR1_CMIA1 173 -#define VECT_TMR1_CMIB1 174 -#define VECT_TMR1_OVI1 175 -#define VECT_TMR2_CMIA2 176 -#define VECT_TMR2_CMIB2 177 -#define VECT_TMR2_OVI2 178 -#define VECT_TMR3_CMIA3 179 -#define VECT_TMR3_CMIB3 180 -#define VECT_TMR3_OVI3 181 -#define VECT_RIIC0_EEI0 182 -#define VECT_RIIC0_RXI0 183 -#define VECT_RIIC0_TXI0 184 -#define VECT_RIIC0_TEI0 185 -#define VECT_RIIC1_EEI1 186 -#define VECT_RIIC1_RXI1 187 -#define VECT_RIIC1_TXI1 188 -#define VECT_RIIC1_TEI1 189 -#define VECT_RIIC2_EEI2 190 -#define VECT_RIIC2_RXI2 191 -#define VECT_RIIC2_TXI2 192 -#define VECT_RIIC2_TEI2 193 -#define VECT_RIIC3_EEI3 194 -#define VECT_RIIC3_RXI3 195 -#define VECT_RIIC3_TXI3 196 -#define VECT_RIIC3_TEI3 197 -#define VECT_DMAC_DMAC0I 198 -#define VECT_DMAC_DMAC1I 199 -#define VECT_DMAC_DMAC2I 200 -#define VECT_DMAC_DMAC3I 201 -#define VECT_EXDMAC_EXDMAC0I 202 -#define VECT_EXDMAC_EXDMAC1I 203 -#define VECT_SCI0_RXI0 214 -#define VECT_SCI0_TXI0 215 -#define VECT_SCI0_TEI0 216 -#define VECT_SCI1_RXI1 217 -#define VECT_SCI1_TXI1 218 -#define VECT_SCI1_TEI1 219 -#define VECT_SCI2_RXI2 220 -#define VECT_SCI2_TXI2 221 -#define VECT_SCI2_TEI2 222 -#define VECT_SCI3_RXI3 223 -#define VECT_SCI3_TXI3 224 -#define VECT_SCI3_TEI3 225 -#define VECT_SCI4_RXI4 226 -#define VECT_SCI4_TXI4 227 -#define VECT_SCI4_TEI4 228 -#define VECT_SCI5_RXI5 229 -#define VECT_SCI5_TXI5 230 -#define VECT_SCI5_TEI5 231 -#define VECT_SCI6_RXI6 232 -#define VECT_SCI6_TXI6 233 -#define VECT_SCI6_TEI6 234 -#define VECT_SCI7_RXI7 235 -#define VECT_SCI7_TXI7 236 -#define VECT_SCI7_TEI7 237 -#define VECT_SCI8_RXI8 238 -#define VECT_SCI8_TXI8 239 -#define VECT_SCI8_TEI8 240 -#define VECT_SCI9_RXI9 241 -#define VECT_SCI9_TXI9 242 -#define VECT_SCI9_TEI9 243 -#define VECT_SCI10_RXI10 244 -#define VECT_SCI10_TXI10 245 -#define VECT_SCI10_TEI10 246 -#define VECT_SCI11_RXI11 247 -#define VECT_SCI11_TXI11 248 -#define VECT_SCI11_TEI11 249 -#define VECT_SCI12_RXI12 250 -#define VECT_SCI12_TXI12 251 -#define VECT_SCI12_TEI12 252 -#define VECT_IEB_IEBINT 253 - -#define MSTP_DMAC SYSTEM.MSTPCRA.BIT.MSTPA28 -#define MSTP_DMAC0 SYSTEM.MSTPCRA.BIT.MSTPA28 -#define MSTP_DMAC1 SYSTEM.MSTPCRA.BIT.MSTPA28 -#define MSTP_DMAC2 SYSTEM.MSTPCRA.BIT.MSTPA28 -#define MSTP_DMAC3 SYSTEM.MSTPCRA.BIT.MSTPA28 -#define MSTP_DTC SYSTEM.MSTPCRA.BIT.MSTPA28 -#define MSTP_AD SYSTEM.MSTPCRA.BIT.MSTPA23 -#define MSTP_DA SYSTEM.MSTPCRA.BIT.MSTPA19 -#define MSTP_S12AD SYSTEM.MSTPCRA.BIT.MSTPA17 -#define MSTP_CMT0 SYSTEM.MSTPCRA.BIT.MSTPA15 -#define MSTP_CMT1 SYSTEM.MSTPCRA.BIT.MSTPA15 -#define MSTP_CMT2 SYSTEM.MSTPCRA.BIT.MSTPA14 -#define MSTP_CMT3 SYSTEM.MSTPCRA.BIT.MSTPA14 -#define MSTP_TPU0 SYSTEM.MSTPCRA.BIT.MSTPA13 -#define MSTP_TPU1 SYSTEM.MSTPCRA.BIT.MSTPA13 -#define MSTP_TPU2 SYSTEM.MSTPCRA.BIT.MSTPA13 -#define MSTP_TPU3 SYSTEM.MSTPCRA.BIT.MSTPA13 -#define MSTP_TPU4 SYSTEM.MSTPCRA.BIT.MSTPA13 -#define MSTP_TPU5 SYSTEM.MSTPCRA.BIT.MSTPA13 -#define MSTP_TPU6 SYSTEM.MSTPCRA.BIT.MSTPA12 -#define MSTP_TPU7 SYSTEM.MSTPCRA.BIT.MSTPA12 -#define MSTP_TPU8 SYSTEM.MSTPCRA.BIT.MSTPA12 -#define MSTP_TPU9 SYSTEM.MSTPCRA.BIT.MSTPA12 -#define MSTP_TPU10 SYSTEM.MSTPCRA.BIT.MSTPA12 -#define MSTP_TPU11 SYSTEM.MSTPCRA.BIT.MSTPA12 -#define MSTP_PPG0 SYSTEM.MSTPCRA.BIT.MSTPA11 -#define MSTP_PPG1 SYSTEM.MSTPCRA.BIT.MSTPA10 -#define MSTP_MTU SYSTEM.MSTPCRA.BIT.MSTPA9 -#define MSTP_MTU0 SYSTEM.MSTPCRA.BIT.MSTPA9 -#define MSTP_MTU1 SYSTEM.MSTPCRA.BIT.MSTPA9 -#define MSTP_MTU2 SYSTEM.MSTPCRA.BIT.MSTPA9 -#define MSTP_MTU3 SYSTEM.MSTPCRA.BIT.MSTPA9 -#define MSTP_MTU4 SYSTEM.MSTPCRA.BIT.MSTPA9 -#define MSTP_MTU5 SYSTEM.MSTPCRA.BIT.MSTPA9 -#define MSTP_TMR0 SYSTEM.MSTPCRA.BIT.MSTPA5 -#define MSTP_TMR1 SYSTEM.MSTPCRA.BIT.MSTPA5 -#define MSTP_TMR01 SYSTEM.MSTPCRA.BIT.MSTPA5 -#define MSTP_TMR2 SYSTEM.MSTPCRA.BIT.MSTPA4 -#define MSTP_TMR3 SYSTEM.MSTPCRA.BIT.MSTPA4 -#define MSTP_TMR23 SYSTEM.MSTPCRA.BIT.MSTPA4 -#define MSTP_SCI0 SYSTEM.MSTPCRB.BIT.MSTPB31 -#define MSTP_SMCI0 SYSTEM.MSTPCRB.BIT.MSTPB31 -#define MSTP_SCI1 SYSTEM.MSTPCRB.BIT.MSTPB30 -#define MSTP_SMCI1 SYSTEM.MSTPCRB.BIT.MSTPB30 -#define MSTP_SCI2 SYSTEM.MSTPCRB.BIT.MSTPB29 -#define MSTP_SMCI2 SYSTEM.MSTPCRB.BIT.MSTPB29 -#define MSTP_SCI3 SYSTEM.MSTPCRB.BIT.MSTPB28 -#define MSTP_SMCI3 SYSTEM.MSTPCRB.BIT.MSTPB28 -#define MSTP_SCI4 SYSTEM.MSTPCRB.BIT.MSTPB27 -#define MSTP_SMCI4 SYSTEM.MSTPCRB.BIT.MSTPB27 -#define MSTP_SCI5 SYSTEM.MSTPCRB.BIT.MSTPB26 -#define MSTP_SMCI5 SYSTEM.MSTPCRB.BIT.MSTPB26 -#define MSTP_SCI6 SYSTEM.MSTPCRB.BIT.MSTPB25 -#define MSTP_SMCI6 SYSTEM.MSTPCRB.BIT.MSTPB25 -#define MSTP_SCI7 SYSTEM.MSTPCRB.BIT.MSTPB24 -#define MSTP_SMCI7 SYSTEM.MSTPCRB.BIT.MSTPB24 -#define MSTP_CRC SYSTEM.MSTPCRB.BIT.MSTPB23 -#define MSTP_RIIC0 SYSTEM.MSTPCRB.BIT.MSTPB21 -#define MSTP_RIIC1 SYSTEM.MSTPCRB.BIT.MSTPB20 -#define MSTP_USB0 SYSTEM.MSTPCRB.BIT.MSTPB19 -#define MSTP_RSPI0 SYSTEM.MSTPCRB.BIT.MSTPB17 -#define MSTP_RSPI1 SYSTEM.MSTPCRB.BIT.MSTPB16 -#define MSTP_EDMAC SYSTEM.MSTPCRB.BIT.MSTPB15 -#define MSTP_TEMPS SYSTEM.MSTPCRB.BIT.MSTPB8 -#define MSTP_SCI12 SYSTEM.MSTPCRB.BIT.MSTPB4 -#define MSTP_SMCI12 SYSTEM.MSTPCRB.BIT.MSTPB4 -#define MSTP_CAN2 SYSTEM.MSTPCRB.BIT.MSTPB2 -#define MSTP_CAN1 SYSTEM.MSTPCRB.BIT.MSTPB1 -#define MSTP_CAN0 SYSTEM.MSTPCRB.BIT.MSTPB0 -#define MSTP_SCI8 SYSTEM.MSTPCRC.BIT.MSTPC27 -#define MSTP_SMCI8 SYSTEM.MSTPCRC.BIT.MSTPC27 -#define MSTP_SCI9 SYSTEM.MSTPCRC.BIT.MSTPC26 -#define MSTP_SMCI9 SYSTEM.MSTPCRC.BIT.MSTPC26 -#define MSTP_SCI10 SYSTEM.MSTPCRC.BIT.MSTPC25 -#define MSTP_SMCI10 SYSTEM.MSTPCRC.BIT.MSTPC25 -#define MSTP_SCI11 SYSTEM.MSTPCRC.BIT.MSTPC24 -#define MSTP_SMCI11 SYSTEM.MSTPCRC.BIT.MSTPC24 -#define MSTP_RSPI2 SYSTEM.MSTPCRC.BIT.MSTPC22 -#define MSTP_LVD SYSTEM.MSTPCRC.BIT.MSTPC20 -#define MSTP_IEB SYSTEM.MSTPCRC.BIT.MSTPC18 -#define MSTP_RIIC2 SYSTEM.MSTPCRC.BIT.MSTPC17 -#define MSTP_RIIC3 SYSTEM.MSTPCRC.BIT.MSTPC16 -#define MSTP_RAM1 SYSTEM.MSTPCRC.BIT.MSTPC1 -#define MSTP_RAM0 SYSTEM.MSTPCRC.BIT.MSTPC0 - -#define IS_CAN0_ERS0 IS0 -#define IS_CAN1_ERS1 IS1 -#define IS_CAN2_ERS2 IS2 -#define IS_MTU0_TCIV0 IS0 -#define IS_MTU1_TCIV1 IS1 -#define IS_MTU1_TCIU1 IS2 -#define IS_MTU2_TCIV2 IS0 -#define IS_MTU2_TCIU2 IS1 -#define IS_MTU3_TCIV3 IS2 -#define IS_TPU0_TCI0V IS0 -#define IS_TPU1_TCI1V IS1 -#define IS_TPU1_TCI1U IS2 -#define IS_TPU5_TCI5V IS3 -#define IS_TPU5_TCI5U IS4 -#define IS_TPU2_TCI2V IS0 -#define IS_TPU2_TCI2U IS1 -#define IS_TPU3_TCI3V IS2 -#define IS_TPU4_TCI4V IS3 -#define IS_TPU4_TCI4U IS4 -#define IS_TPU6_TCI6V IS0 -#define IS_TPU7_TCI7V IS1 -#define IS_TPU7_TCI7U IS2 -#define IS_TPU11_TCI11V IS3 -#define IS_TPU11_TCI11U IS4 -#define IS_TPU8_TCI8V IS0 -#define IS_TPU8_TCI8U IS1 -#define IS_TPU9_TCI9V IS2 -#define IS_TPU10_TCI10V IS3 -#define IS_TPU10_TCI10U IS4 -#define IS_SCI0_ERI0 IS0 -#define IS_SCI1_ERI1 IS1 -#define IS_SCI2_ERI2 IS2 -#define IS_SCI3_ERI3 IS3 -#define IS_SCI4_ERI4 IS4 -#define IS_SCI5_ERI5 IS5 -#define IS_SCI6_ERI6 IS6 -#define IS_SCI7_ERI7 IS7 -#define IS_SCI8_ERI8 IS8 -#define IS_SCI9_ERI9 IS9 -#define IS_SCI10_ERI10 IS10 -#define IS_SCI11_ERI11 IS11 -#define IS_SCI12_ERI12 IS12 -#define IS_RSPI0_SPEI0 IS13 -#define IS_RSPI1_SPEI1 IS14 -#define IS_RSPI2_SPEI2 IS15 - -#define EN_CAN0_ERS0 EN0 -#define EN_CAN1_ERS1 EN1 -#define EN_CAN2_ERS2 EN2 -#define EN_MTU0_TCIV0 EN0 -#define EN_MTU1_TCIV1 EN1 -#define EN_MTU1_TCIU1 EN2 -#define EN_MTU2_TCIV2 EN0 -#define EN_MTU2_TCIU2 EN1 -#define EN_MTU3_TCIV3 EN2 -#define EN_TPU0_TCI0V EN0 -#define EN_TPU1_TCI1V EN1 -#define EN_TPU1_TCI1U EN2 -#define EN_TPU5_TCI5V EN3 -#define EN_TPU5_TCI5U EN4 -#define EN_TPU2_TCI2V EN0 -#define EN_TPU2_TCI2U EN1 -#define EN_TPU3_TCI3V EN2 -#define EN_TPU4_TCI4V EN3 -#define EN_TPU4_TCI4U EN4 -#define EN_TPU6_TCI6V EN0 -#define EN_TPU7_TCI7V EN1 -#define EN_TPU7_TCI7U EN2 -#define EN_TPU11_TCI11V EN3 -#define EN_TPU11_TCI11U EN4 -#define EN_TPU8_TCI8V EN0 -#define EN_TPU8_TCI8U EN1 -#define EN_TPU9_TCI9V EN2 -#define EN_TPU10_TCI10V EN3 -#define EN_TPU10_TCI10U EN4 -#define EN_SCI0_ERI0 EN0 -#define EN_SCI1_ERI1 EN1 -#define EN_SCI2_ERI2 EN2 -#define EN_SCI3_ERI3 EN3 -#define EN_SCI4_ERI4 EN4 -#define EN_SCI5_ERI5 EN5 -#define EN_SCI6_ERI6 EN6 -#define EN_SCI7_ERI7 EN7 -#define EN_SCI8_ERI8 EN8 -#define EN_SCI9_ERI9 EN9 -#define EN_SCI10_ERI10 EN10 -#define EN_SCI11_ERI11 EN11 -#define EN_SCI12_ERI12 EN12 -#define EN_RSPI0_SPEI0 EN13 -#define EN_RSPI1_SPEI1 EN14 -#define EN_RSPI2_SPEI2 EN15 - -#define CLR_CAN0_ERS0 CLR0 -#define CLR_CAN1_ERS1 CLR1 -#define CLR_CAN2_ERS2 CLR2 -#define CLR_MTU0_TCIV0 CLR0 -#define CLR_MTU1_TCIV1 CLR1 -#define CLR_MTU1_TCIU1 CLR2 -#define CLR_MTU2_TCIV2 CLR0 -#define CLR_MTU2_TCIU2 CLR1 -#define CLR_MTU3_TCIV3 CLR2 -#define CLR_TPU0_TCI0V CLR0 -#define CLR_TPU1_TCI1V CLR1 -#define CLR_TPU1_TCI1U CLR2 -#define CLR_TPU5_TCI5V CLR3 -#define CLR_TPU5_TCI5U CLR4 -#define CLR_TPU2_TCI2V CLR0 -#define CLR_TPU2_TCI2U CLR1 -#define CLR_TPU3_TCI3V CLR2 -#define CLR_TPU4_TCI4V CLR3 -#define CLR_TPU4_TCI4U CLR4 -#define CLR_TPU6_TCI6V CLR0 -#define CLR_TPU7_TCI7V CLR1 -#define CLR_TPU7_TCI7U CLR2 -#define CLR_TPU11_TCI11V CLR3 -#define CLR_TPU11_TCI11U CLR4 -#define CLR_TPU8_TCI8V CLR0 -#define CLR_TPU8_TCI8U CLR1 -#define CLR_TPU9_TCI9V CLR2 -#define CLR_TPU10_TCI10V CLR3 -#define CLR_TPU10_TCI10U CLR4 -#define CLR_SCI0_ERI0 CLR0 -#define CLR_SCI1_ERI1 CLR1 -#define CLR_SCI2_ERI2 CLR2 -#define CLR_SCI3_ERI3 CLR3 -#define CLR_SCI4_ERI4 CLR4 -#define CLR_SCI5_ERI5 CLR5 -#define CLR_SCI6_ERI6 CLR6 -#define CLR_SCI7_ERI7 CLR7 -#define CLR_SCI8_ERI8 CLR8 -#define CLR_SCI9_ERI9 CLR9 -#define CLR_SCI10_ERI10 CLR10 -#define CLR_SCI11_ERI11 CLR11 -#define CLR_SCI12_ERI12 CLR12 -#define CLR_RSPI0_SPEI0 CLR13 -#define CLR_RSPI1_SPEI1 CLR14 -#define CLR_RSPI2_SPEI2 CLR15 - -#define CN_TPU6_TGI6A CN0 -#define CN_TPU6_TGI6B CN0 -#define CN_TPU6_TGI6C CN0 -#define CN_TPU6_TGI6D CN0 -#define CN_MTU0_TGIA0 CN0 -#define CN_MTU0_TGIB0 CN0 -#define CN_MTU0_TGIC0 CN0 -#define CN_MTU0_TGID0 CN0 -#define CN_MTU0_TGIE0 CN0 -#define CN_MTU0_TGIF0 CN0 -#define CN_TPU7_TGI7A CN1 -#define CN_TPU7_TGI7B CN1 -#define CN_MTU1_TGIA1 CN1 -#define CN_MTU1_TGIB1 CN1 -#define CN_TPU8_TGI8A CN2 -#define CN_TPU8_TGI8B CN2 -#define CN_MTU2_TGIA2 CN2 -#define CN_MTU2_TGIB2 CN2 -#define CN_TPU9_TGI9A CN3 -#define CN_TPU9_TGI9B CN3 -#define CN_TPU9_TGI9C CN3 -#define CN_TPU9_TGI9D CN3 -#define CN_MTU3_TGIA3 CN3 -#define CN_MTU3_TGIB3 CN3 -#define CN_MTU3_TGIC3 CN3 -#define CN_MTU3_TGID3 CN3 -#define CN_TPU10_TGI10A CN4 -#define CN_TPU10_TGI10B CN4 -#define CN_MTU4_TGIA4 CN4 -#define CN_MTU4_TGIB4 CN4 -#define CN_MTU4_TGIC4 CN4 -#define CN_MTU4_TGID4 CN4 -#define CN_MTU4_TGIV4 CN4 -#define CN_TPU11_TGI11A CN5 -#define CN_TPU11_TGI11B CN5 -#define CN_MTU5_TGIU5 CN5 -#define CN_MTU5_TGIV5 CN5 -#define CN_MTU5_TGIW5 CN5 -#define CN_TPU6_ CN0 -#define CN_MTU0_ CN0 -#define CN_TPU7_ CN1 -#define CN_MTU1_ CN1 -#define CN_TPU8_ CN2 -#define CN_MTU2_ CN2 -#define CN_TPU9_ CN3 -#define CN_MTU3_ CN3 -#define CN_TPU10_ CN4 -#define CN_MTU4_ CN4 -#define CN_TPU11_ CN5 -#define CN_MTU5_ CN5 - -#define __IR( x ) ICU.IR[ IR ## x ].BIT.IR -#define _IR( x ) __IR( x ) -#define IR( x , y ) _IR( _ ## x ## _ ## y ) -#define __DTCE( x ) ICU.DTCER[ DTCE ## x ].BIT.DTCE -#define _DTCE( x ) __DTCE( x ) -#define DTCE( x , y ) _DTCE( _ ## x ## _ ## y ) -#define __IEN( x ) ICU.IER[ IER ## x ].BIT.IEN ## x -#define _IEN( x ) __IEN( x ) -#define IEN( x , y ) _IEN( _ ## x ## _ ## y ) -#define __IPR( x ) ICU.IPR[ IPR ## x ].BIT.IPR -#define _IPR( x ) __IPR( x ) -#define IPR( x , y ) _IPR( _ ## x ## _ ## y ) -#define __VECT( x ) VECT ## x -#define _VECT( x ) __VECT( x ) -#define VECT( x , y ) _VECT( _ ## x ## _ ## y ) -#define __MSTP( x ) MSTP ## x -#define _MSTP( x ) __MSTP( x ) -#define MSTP( x ) _MSTP( _ ## x ) - -#define __IS( x ) ICU.GRP[ GRP ## x ].BIT.IS ## x -#define _IS( x ) __IS( x ) -#define IS( x , y ) _IS( _ ## x ## _ ## y ) -#define __EN( x ) ICU.GEN[ GEN ## x ].BIT.EN ## x -#define _EN( x ) __EN( x ) -#define EN( x , y ) _EN( _ ## x ## _ ## y ) -#define __CLR( x ) ICU.GCR[ GCR ## x ].BIT.CLR ## x -#define _CLR( x ) __CLR( x ) -#define CLR( x , y ) _CLR( _ ## x ## _ ## y ) -#define __CN( x ) ICU.SEL.BIT.CN ## x -#define _CN( x ) __CN( x ) -#define CN( x , y ) _CN( _ ## x ## _ ## y ) - -#define AD (*(volatile struct st_ad __evenaccess *)0x89800) -#define BSC (*(volatile struct st_bsc __evenaccess *)0x81300) -#define CAN0 (*(volatile struct st_can __evenaccess *)0x90200) -#define CAN1 (*(volatile struct st_can __evenaccess *)0x91200) -#define CAN2 (*(volatile struct st_can __evenaccess *)0x92200) -#define CMT (*(volatile struct st_cmt __evenaccess *)0x88000) -#define CMT0 (*(volatile struct st_cmt0 __evenaccess *)0x88002) -#define CMT1 (*(volatile struct st_cmt0 __evenaccess *)0x88008) -#define CMT2 (*(volatile struct st_cmt0 __evenaccess *)0x88012) -#define CMT3 (*(volatile struct st_cmt0 __evenaccess *)0x88018) -#define CRC (*(volatile struct st_crc __evenaccess *)0x88280) -#define DA (*(volatile struct st_da __evenaccess *)0x880C0) -#define DMAC (*(volatile struct st_dmac __evenaccess *)0x82200) -#define DMAC0 (*(volatile struct st_dmac0 __evenaccess *)0x82000) -#define DMAC1 (*(volatile struct st_dmac1 __evenaccess *)0x82040) -#define DMAC2 (*(volatile struct st_dmac1 __evenaccess *)0x82080) -#define DMAC3 (*(volatile struct st_dmac1 __evenaccess *)0x820C0) -#define DTC (*(volatile struct st_dtc __evenaccess *)0x82400) -#define EDMAC (*(volatile struct st_edmac __evenaccess *)0xC0000) -#define ETHERC (*(volatile struct st_etherc __evenaccess *)0xC0100) -#define EXDMAC (*(volatile struct st_exdmac __evenaccess *)0x82A00) -#define EXDMAC0 (*(volatile struct st_exdmac0 __evenaccess *)0x82800) -#define EXDMAC1 (*(volatile struct st_exdmac1 __evenaccess *)0x82840) -#define FLASH (*(volatile struct st_flash __evenaccess *)0x8C296) -#define ICU (*(volatile struct st_icu __evenaccess *)0x87000) -#define IEB (*(volatile struct st_ieb __evenaccess *)0x8A800) -#define IWDT (*(volatile struct st_iwdt __evenaccess *)0x88030) -#define MPC (*(volatile struct st_mpc __evenaccess *)0x8C100) -#define MTU (*(volatile struct st_mtu __evenaccess *)0x8860A) -#define MTU0 (*(volatile struct st_mtu0 __evenaccess *)0x88690) -#define MTU1 (*(volatile struct st_mtu1 __evenaccess *)0x88690) -#define MTU2 (*(volatile struct st_mtu2 __evenaccess *)0x88692) -#define MTU3 (*(volatile struct st_mtu3 __evenaccess *)0x88600) -#define MTU4 (*(volatile struct st_mtu4 __evenaccess *)0x88600) -#define MTU5 (*(volatile struct st_mtu5 __evenaccess *)0x88694) -#define POE (*(volatile struct st_poe __evenaccess *)0x88900) -#define PORT0 (*(volatile struct st_port0 __evenaccess *)0x8C000) -#define PORT1 (*(volatile struct st_port1 __evenaccess *)0x8C001) -#define PORT2 (*(volatile struct st_port2 __evenaccess *)0x8C002) -#define PORT3 (*(volatile struct st_port3 __evenaccess *)0x8C003) -#define PORT4 (*(volatile struct st_port4 __evenaccess *)0x8C004) -#define PORT5 (*(volatile struct st_port5 __evenaccess *)0x8C005) -#define PORT6 (*(volatile struct st_port6 __evenaccess *)0x8C006) -#define PORT7 (*(volatile struct st_port7 __evenaccess *)0x8C007) -#define PORT8 (*(volatile struct st_port8 __evenaccess *)0x8C008) -#define PORT9 (*(volatile struct st_port9 __evenaccess *)0x8C009) -#define PORTA (*(volatile struct st_porta __evenaccess *)0x8C00A) -#define PORTB (*(volatile struct st_portb __evenaccess *)0x8C00B) -#define PORTC (*(volatile struct st_portc __evenaccess *)0x8C00C) -#define PORTD (*(volatile struct st_portd __evenaccess *)0x8C00D) -#define PORTE (*(volatile struct st_porte __evenaccess *)0x8C00E) -#define PORTF (*(volatile struct st_portf __evenaccess *)0x8C00F) -#define PORTG (*(volatile struct st_portg __evenaccess *)0x8C010) -#define PORTH (*(volatile struct st_porth __evenaccess *)0x8C0D1) -#define PORTJ (*(volatile struct st_portj __evenaccess *)0x8C012) -#define PPG0 (*(volatile struct st_ppg0 __evenaccess *)0x881E6) -#define PPG1 (*(volatile struct st_ppg1 __evenaccess *)0x881F0) -#define RIIC0 (*(volatile struct st_riic0 __evenaccess *)0x88300) -#define RIIC1 (*(volatile struct st_riic1 __evenaccess *)0x88320) -#define RIIC2 (*(volatile struct st_riic1 __evenaccess *)0x88340) -#define RIIC3 (*(volatile struct st_riic1 __evenaccess *)0x88360) -#define RSPI0 (*(volatile struct st_rspi __evenaccess *)0x88380) -#define RSPI1 (*(volatile struct st_rspi __evenaccess *)0x883A0) -#define RSPI2 (*(volatile struct st_rspi __evenaccess *)0x883C0) -#define RTC (*(volatile struct st_rtc __evenaccess *)0x8C400) -#define S12AD (*(volatile struct st_s12ad __evenaccess *)0x89000) -#define SCI0 (*(volatile struct st_sci0 __evenaccess *)0x8A000) -#define SCI1 (*(volatile struct st_sci0 __evenaccess *)0x8A020) -#define SCI2 (*(volatile struct st_sci0 __evenaccess *)0x8A040) -#define SCI3 (*(volatile struct st_sci0 __evenaccess *)0x8A060) -#define SCI4 (*(volatile struct st_sci0 __evenaccess *)0x8A080) -#define SCI5 (*(volatile struct st_sci0 __evenaccess *)0x8A0A0) -#define SCI6 (*(volatile struct st_sci0 __evenaccess *)0x8A0C0) -#define SCI7 (*(volatile struct st_sci7 __evenaccess *)0x8A0E0) -#define SCI8 (*(volatile struct st_sci0 __evenaccess *)0x8A100) -#define SCI9 (*(volatile struct st_sci0 __evenaccess *)0x8A120) -#define SCI10 (*(volatile struct st_sci0 __evenaccess *)0x8A140) -#define SCI11 (*(volatile struct st_sci0 __evenaccess *)0x8A160) -#define SCI12 (*(volatile struct st_sci12 __evenaccess *)0x8B300) -#define SMCI0 (*(volatile struct st_smci0 __evenaccess *)0x8A000) -#define SMCI1 (*(volatile struct st_smci0 __evenaccess *)0x8A020) -#define SMCI2 (*(volatile struct st_smci0 __evenaccess *)0x8A040) -#define SMCI3 (*(volatile struct st_smci0 __evenaccess *)0x8A060) -#define SMCI4 (*(volatile struct st_smci0 __evenaccess *)0x8A080) -#define SMCI5 (*(volatile struct st_smci0 __evenaccess *)0x8A0A0) -#define SMCI6 (*(volatile struct st_smci0 __evenaccess *)0x8A0C0) -#define SMCI7 (*(volatile struct st_smci7 __evenaccess *)0x8A0E0) -#define SMCI8 (*(volatile struct st_smci0 __evenaccess *)0x8A100) -#define SMCI9 (*(volatile struct st_smci0 __evenaccess *)0x8A120) -#define SMCI10 (*(volatile struct st_smci0 __evenaccess *)0x8A140) -#define SMCI11 (*(volatile struct st_smci0 __evenaccess *)0x8A160) -#define SMCI12 (*(volatile struct st_smci0 __evenaccess *)0x8B300) -#define SYSTEM (*(volatile struct st_system __evenaccess *)0x80000) -#define TEMPS (*(volatile struct st_temps __evenaccess *)0x8C500) -#define TMR0 (*(volatile struct st_tmr0 __evenaccess *)0x88200) -#define TMR1 (*(volatile struct st_tmr1 __evenaccess *)0x88201) -#define TMR2 (*(volatile struct st_tmr0 __evenaccess *)0x88210) -#define TMR3 (*(volatile struct st_tmr1 __evenaccess *)0x88211) -#define TMR01 (*(volatile struct st_tmr01 __evenaccess *)0x88204) -#define TMR23 (*(volatile struct st_tmr01 __evenaccess *)0x88214) -#define TPU0 (*(volatile struct st_tpu0 __evenaccess *)0x88108) -#define TPU1 (*(volatile struct st_tpu1 __evenaccess *)0x88108) -#define TPU2 (*(volatile struct st_tpu2 __evenaccess *)0x8810A) -#define TPU3 (*(volatile struct st_tpu3 __evenaccess *)0x8810A) -#define TPU4 (*(volatile struct st_tpu4 __evenaccess *)0x8810C) -#define TPU5 (*(volatile struct st_tpu5 __evenaccess *)0x8810C) -#define TPU6 (*(volatile struct st_tpu0 __evenaccess *)0x88178) -#define TPU7 (*(volatile struct st_tpu1 __evenaccess *)0x88178) -#define TPU8 (*(volatile struct st_tpu2 __evenaccess *)0x8817A) -#define TPU9 (*(volatile struct st_tpu3 __evenaccess *)0x8817A) -#define TPU10 (*(volatile struct st_tpu4 __evenaccess *)0x8817C) -#define TPU11 (*(volatile struct st_tpu5 __evenaccess *)0x8817C) -#define TPUA (*(volatile struct st_tpua __evenaccess *)0x88100) -#define TPUB (*(volatile struct st_tpub __evenaccess *)0x88170) -#define USB (*(volatile struct st_usb __evenaccess *)0xA0400) -#define USB0 (*(volatile struct st_usb0 __evenaccess *)0xA0000) -#define USB1 (*(volatile struct st_usb1 __evenaccess *)0xA0200) -#define WDT (*(volatile struct st_wdt __evenaccess *)0x88020) -#pragma bit_order -#pragma packoption -#endif diff --git a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/Renesas-Files/mcu/rx63n/iodefine.h_from_toolchain b/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/Renesas-Files/mcu/rx63n/iodefine.h_from_toolchain deleted file mode 100644 index d1f3cfc4d..000000000 --- a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/Renesas-Files/mcu/rx63n/iodefine.h_from_toolchain +++ /dev/null @@ -1,12063 +0,0 @@ -/************************************************************************ -* -* Device : RX/RX600/RX63N -* -* File Name : ioedfine.h -* -* Abstract : Definition of I/O Register. -* -* History : 0.50 (2011-03-28) [Hardware Manual Revision : 0.50] -* : 0.02 (2010-11-01) [Hardware Manual Revision : 0.01] -* -* NOTE : THIS IS A TYPICAL EXAMPLE. -* -* Copyright (C) 2010(2011) Renesas Electronics Corporation -* and Renesas Solutions Corp. -* -************************************************************************/ -/********************************************************************************/ -/* */ -/* DESCRIPTION : Definition of ICU Register */ -/* CPU TYPE : RX63N */ -/* */ -/* Usage : IR,DTCER,IER,IPR of ICU Register */ -/* The following IR, DTCE, IEN, IPR macro functions simplify usage. */ -/* The bit access operation is "Bit_Name(interrupt source,name)". */ -/* A part of the name can be omitted. */ -/* for example : */ -/* IR(TPU0,TGI0A) = 0; expands to : */ -/* ICU.IR[126].BIT.IR = 0; */ -/* */ -/* DTCE(ICU,IRQ0) = 1; expands to : */ -/* ICU.DTCER[64].BIT.DTCE = 1; */ -/* */ -/* IEN(CMT0,CMI0) = 1; expands to : */ -/* ICU.IER[0x03].BIT.IEN4 = 1; */ -/* */ -/* IPR(TPU0,TGI0A) = 2; expands to : */ -/* IPR(TPU0,TGI ) = 2; // TGI0A,TGI0B,TGI0C,TGI0D share IPR level. */ -/* ICU.IPR[126].BIT.IPR = 2; */ -/* */ -/* IPR(SCI0,RXI0) = 3; expands to : */ -/* IPR(SCI0, ) = 3; // SCI0 uses single IPR for all sources. */ -/* ICU.IPR[214].BIT.IPR = 3; */ -/* */ -/* Usage : #pragma interrupt Function_Identifier(vect=**) */ -/* The number of vector is "(interrupt source, name)". */ -/* for example : */ -/* #pragma interrupt INT_IRQ0(vect=VECT(ICU,IRQ0)) expands to : */ -/* #pragma interrupt INT_IRQ0(vect=64) */ -/* #pragma interrupt INT_CMT0_CMI0(vect=VECT(CMT0,CMI0)) expands to : */ -/* #pragma interrupt INT_CMT0_CMI0(vect=28) */ -/* #pragma interrupt INT_MTU0_TGIA0(vect=VECT(MTU0,TGIA0)) expands to : */ -/* #pragma interrupt INT_MTU0_TGIA0(vect=142) */ -/* #pragma interrupt INT_TPU0_TGI0A(vect=VECT(TPU0,TGI0A)) expands to : */ -/* #pragma interrupt INT_TPU0_TGI0A(vect=126) */ -/* */ -/* Usage : MSTPCRA,MSTPCRB,MSTPCRC of SYSTEM Register */ -/* The bit access operation is "MSTP(name)". */ -/* The name that can be used is a macro name defined with "iodefine.h". */ -/* for example : */ -/* MSTP(TMR2) = 0; // TMR2,TMR3,TMR23 expands to : */ -/* SYSTEM.MSTPCRA.BIT.MSTPA4 = 0; */ -/* MSTP(SCI0) = 0; // SCI0,SMCI0 expands to : */ -/* SYSTEM.MSTPCRB.BIT.MSTPB31 = 0; */ -/* MSTP(MTU4) = 0; // MTU,MTU0,MTU1,MTU2,MTU3,MTU4,MTU5 expands to : */ -/* SYSTEM.MSTPCRA.BIT.MSTPA9 = 0; */ -/* MSTP(TPU4) = 0; // TPU0,TPU1,TPU2,TPU3,TPU4,TPU5 expands to : */ -/* SYSTEM.MSTPCRA.BIT.MSTPA13 = 0; */ -/* MSTP(CMT3) = 0; // CMT2,CMT3 expands to : */ -/* SYSTEM.MSTPCRA.BIT.MSTPA14 = 0; */ -/* */ -/* */ -/********************************************************************************/ -#ifndef __RX63NIODEFINE_HEADER__ -#define __RX63NIODEFINE_HEADER__ -#pragma bit_order left -#pragma unpack -struct st_ad { - unsigned short ADDRA; - unsigned short ADDRB; - unsigned short ADDRC; - unsigned short ADDRD; - unsigned short ADDRE; - unsigned short ADDRF; - unsigned short ADDRG; - unsigned short ADDRH; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ADIE:1; - unsigned char ADST:1; - unsigned char :2; - unsigned char CH:3; - } BIT; - } ADCSR; - union { - unsigned char BYTE; - struct { - unsigned char TRGS:3; - unsigned char :1; - unsigned char CKS:2; - unsigned char MODE:2; - } BIT; - } ADCR; - union { - unsigned char BYTE; - struct { - unsigned char DPSEL:1; - unsigned char EXOEN:1; - unsigned char EXSEL:2; - } BIT; - } ADCR2; - unsigned char ADSSTR; - char wk0[11]; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char DIAG:2; - } BIT; - } ADDIAGR; -}; - -struct st_bsc { - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char STSCLR:1; - } BIT; - } BERCLR; - char wk0[3]; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char TOEN:1; - unsigned char IGAEN:1; - } BIT; - } BEREN; - char wk1[3]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char MST:3; - unsigned char :2; - unsigned char TO:1; - unsigned char IA:1; - } BIT; - } BERSR1; - char wk2[1]; - union { - unsigned short WORD; - struct { - unsigned short ADDR:13; - } BIT; - } BERSR2; - char wk3[4]; - union { - unsigned short WORD; - struct { - unsigned short :2; - unsigned short BPEB:2; - unsigned short BPFB:2; - unsigned short BPHB:2; - unsigned short BPGB:2; - unsigned short BPIB:2; - unsigned short BPRO:2; - unsigned short BPRA:2; - } BIT; - } BUSPRI; - char wk4[7408]; - union { - unsigned short WORD; - struct { - unsigned short PRMOD:1; - unsigned short :5; - unsigned short PWENB:1; - unsigned short PRENB:1; - unsigned short :4; - unsigned short EWENB:1; - unsigned short :2; - unsigned short WRMOD:1; - } BIT; - } CS0MOD; - union { - unsigned long LONG; - struct { - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - unsigned long CSWWAIT:5; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSPWWAIT:3; - } BIT; - } CS0WCR1; - union { - unsigned long LONG; - struct { - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long RDON:3; - unsigned long :2; - unsigned long AWAIT:2; - unsigned long :1; - unsigned long WDOFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long CSROFF:3; - } BIT; - } CS0WCR2; - char wk5[6]; - union { - unsigned short WORD; - struct { - unsigned short PRMOD:1; - unsigned short :5; - unsigned short PWENB:1; - unsigned short PRENB:1; - unsigned short :4; - unsigned short EWENB:1; - unsigned short :2; - unsigned short WRMOD:1; - } BIT; - } CS1MOD; - union { - unsigned long LONG; - struct { - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - unsigned long CSWWAIT:5; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSPWWAIT:3; - } BIT; - } CS1WCR1; - union { - unsigned long LONG; - struct { - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long RDON:3; - unsigned long :2; - unsigned long AWAIT:2; - unsigned long :1; - unsigned long WDOFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long CSROFF:3; - } BIT; - } CS1WCR2; - char wk6[6]; - union { - unsigned short WORD; - struct { - unsigned short PRMOD:1; - unsigned short :5; - unsigned short PWENB:1; - unsigned short PRENB:1; - unsigned short :4; - unsigned short EWENB:1; - unsigned short :2; - unsigned short WRMOD:1; - } BIT; - } CS2MOD; - union { - unsigned long LONG; - struct { - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - unsigned long CSWWAIT:5; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSPWWAIT:3; - } BIT; - } CS2WCR1; - union { - unsigned long LONG; - struct { - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long RDON:3; - unsigned long :2; - unsigned long AWAIT:2; - unsigned long :1; - unsigned long WDOFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long CSROFF:3; - } BIT; - } CS2WCR2; - char wk7[6]; - union { - unsigned short WORD; - struct { - unsigned short PRMOD:1; - unsigned short :5; - unsigned short PWENB:1; - unsigned short PRENB:1; - unsigned short :4; - unsigned short EWENB:1; - unsigned short :2; - unsigned short WRMOD:1; - } BIT; - } CS3MOD; - union { - unsigned long LONG; - struct { - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - unsigned long CSWWAIT:5; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSPWWAIT:3; - } BIT; - } CS3WCR1; - union { - unsigned long LONG; - struct { - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long RDON:3; - unsigned long :2; - unsigned long AWAIT:2; - unsigned long :1; - unsigned long WDOFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long CSROFF:3; - } BIT; - } CS3WCR2; - char wk8[6]; - union { - unsigned short WORD; - struct { - unsigned short PRMOD:1; - unsigned short :5; - unsigned short PWENB:1; - unsigned short PRENB:1; - unsigned short :4; - unsigned short EWENB:1; - unsigned short :2; - unsigned short WRMOD:1; - } BIT; - } CS4MOD; - union { - unsigned long LONG; - struct { - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - unsigned long CSWWAIT:5; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSPWWAIT:3; - } BIT; - } CS4WCR1; - union { - unsigned long LONG; - struct { - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long RDON:3; - unsigned long :2; - unsigned long AWAIT:2; - unsigned long :1; - unsigned long WDOFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long CSROFF:3; - } BIT; - } CS4WCR2; - char wk9[6]; - union { - unsigned short WORD; - struct { - unsigned short PRMOD:1; - unsigned short :5; - unsigned short PWENB:1; - unsigned short PRENB:1; - unsigned short :4; - unsigned short EWENB:1; - unsigned short :2; - unsigned short WRMOD:1; - } BIT; - } CS5MOD; - union { - unsigned long LONG; - struct { - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - unsigned long CSWWAIT:5; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSPWWAIT:3; - } BIT; - } CS5WCR1; - union { - unsigned long LONG; - struct { - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long RDON:3; - unsigned long :2; - unsigned long AWAIT:2; - unsigned long :1; - unsigned long WDOFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long CSROFF:3; - } BIT; - } CS5WCR2; - char wk10[6]; - union { - unsigned short WORD; - struct { - unsigned short PRMOD:1; - unsigned short :5; - unsigned short PWENB:1; - unsigned short PRENB:1; - unsigned short :4; - unsigned short EWENB:1; - unsigned short :2; - unsigned short WRMOD:1; - } BIT; - } CS6MOD; - union { - unsigned long LONG; - struct { - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - unsigned long CSWWAIT:5; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSPWWAIT:3; - } BIT; - } CS6WCR1; - union { - unsigned long LONG; - struct { - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long RDON:3; - unsigned long :2; - unsigned long AWAIT:2; - unsigned long :1; - unsigned long WDOFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long CSROFF:3; - } BIT; - } CS6WCR2; - char wk11[6]; - union { - unsigned short WORD; - struct { - unsigned short PRMOD:1; - unsigned short :5; - unsigned short PWENB:1; - unsigned short PRENB:1; - unsigned short :4; - unsigned short EWENB:1; - unsigned short :2; - unsigned short WRMOD:1; - } BIT; - } CS7MOD; - union { - unsigned long LONG; - struct { - unsigned long :3; - unsigned long CSRWAIT:5; - unsigned long :3; - unsigned long CSWWAIT:5; - unsigned long :5; - unsigned long CSPRWAIT:3; - unsigned long :5; - unsigned long CSPWWAIT:3; - } BIT; - } CS7WCR1; - union { - unsigned long LONG; - struct { - unsigned long :1; - unsigned long CSON:3; - unsigned long :1; - unsigned long WDON:3; - unsigned long :1; - unsigned long WRON:3; - unsigned long :1; - unsigned long RDON:3; - unsigned long :2; - unsigned long AWAIT:2; - unsigned long :1; - unsigned long WDOFF:3; - unsigned long :1; - unsigned long CSWOFF:3; - unsigned long :1; - unsigned long CSROFF:3; - } BIT; - } CS7WCR2; - char wk12[1926]; - union { - unsigned short WORD; - struct { - unsigned short :3; - unsigned short MPXEN:1; - unsigned short :3; - unsigned short EMODE:1; - unsigned short :2; - unsigned short BSIZE:2; - unsigned short :3; - unsigned short EXENB:1; - } BIT; - } CS0CR; - char wk13[6]; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - unsigned short RRCV:4; - } BIT; - } CS0REC; - char wk14[6]; - union { - unsigned short WORD; - struct { - unsigned short :3; - unsigned short MPXEN:1; - unsigned short :3; - unsigned short EMODE:1; - unsigned short :2; - unsigned short BSIZE:2; - unsigned short :3; - unsigned short EXENB:1; - } BIT; - } CS1CR; - char wk15[6]; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - unsigned short RRCV:4; - } BIT; - } CS1REC; - char wk16[6]; - union { - unsigned short WORD; - struct { - unsigned short :3; - unsigned short MPXEN:1; - unsigned short :3; - unsigned short EMODE:1; - unsigned short :2; - unsigned short BSIZE:2; - unsigned short :3; - unsigned short EXENB:1; - } BIT; - } CS2CR; - char wk17[6]; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - unsigned short RRCV:4; - } BIT; - } CS2REC; - char wk18[6]; - union { - unsigned short WORD; - struct { - unsigned short :3; - unsigned short MPXEN:1; - unsigned short :3; - unsigned short EMODE:1; - unsigned short :2; - unsigned short BSIZE:2; - unsigned short :3; - unsigned short EXENB:1; - } BIT; - } CS3CR; - char wk19[6]; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - unsigned short RRCV:4; - } BIT; - } CS3REC; - char wk20[6]; - union { - unsigned short WORD; - struct { - unsigned short :3; - unsigned short MPXEN:1; - unsigned short :3; - unsigned short EMODE:1; - unsigned short :2; - unsigned short BSIZE:2; - unsigned short :3; - unsigned short EXENB:1; - } BIT; - } CS4CR; - char wk21[6]; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - unsigned short RRCV:4; - } BIT; - } CS4REC; - char wk22[6]; - union { - unsigned short WORD; - struct { - unsigned short :3; - unsigned short MPXEN:1; - unsigned short :3; - unsigned short EMODE:1; - unsigned short :2; - unsigned short BSIZE:2; - unsigned short :3; - unsigned short EXENB:1; - } BIT; - } CS5CR; - char wk23[6]; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - unsigned short RRCV:4; - } BIT; - } CS5REC; - char wk24[6]; - union { - unsigned short WORD; - struct { - unsigned short :3; - unsigned short MPXEN:1; - unsigned short :3; - unsigned short EMODE:1; - unsigned short :2; - unsigned short BSIZE:2; - unsigned short :3; - unsigned short EXENB:1; - } BIT; - } CS6CR; - char wk25[6]; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - unsigned short RRCV:4; - } BIT; - } CS6REC; - char wk26[6]; - union { - unsigned short WORD; - struct { - unsigned short :3; - unsigned short MPXEN:1; - unsigned short :3; - unsigned short EMODE:1; - unsigned short :2; - unsigned short BSIZE:2; - unsigned short :3; - unsigned short EXENB:1; - } BIT; - } CS7CR; - char wk27[6]; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short WRCV:4; - unsigned short :4; - unsigned short RRCV:4; - } BIT; - } CS7REC; - char wk28[4]; - union { - unsigned short WORD; - struct { - unsigned short RCVENM7:1; - unsigned short RCVENM6:1; - unsigned short RCVENM5:1; - unsigned short RCVENM4:1; - unsigned short RCVENM3:1; - unsigned short RCVENM2:1; - unsigned short RCVENM1:1; - unsigned short RCVENM0:1; - unsigned short RCVEN7:1; - unsigned short RCVEN6:1; - unsigned short RCVEN5:1; - unsigned short RCVEN4:1; - unsigned short RCVEN3:1; - unsigned short RCVEN2:1; - unsigned short RCVEN1:1; - unsigned short RCVEN0:1; - } BIT; - } CSRECEN; - char wk29[894]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char BSIZE:2; - unsigned char :3; - unsigned char EXENB:1; - } BIT; - } SDCCR; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char EMODE:1; - } BIT; - } SDCMOD; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char BE:1; - } BIT; - } SDAMOD; - char wk30[13]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char SFEN:1; - } BIT; - } SDSELF; - char wk31[3]; - union { - unsigned short WORD; - struct { - unsigned short REFW:4; - unsigned short RFC:12; - } BIT; - } SDRFCR; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char RFEN:1; - } BIT; - } SDRFEN; - char wk32[9]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char INIRQ:1; - } BIT; - } SDICR; - char wk33[3]; - union { - unsigned short WORD; - struct { - unsigned short :5; - unsigned short PRC:3; - unsigned short ARFC:4; - unsigned short ARFI:4; - } BIT; - } SDIR; - char wk34[26]; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char MXC:2; - } BIT; - } SDADR; - char wk35[3]; - union { - unsigned long LONG; - struct { - unsigned long :13; - unsigned long RAS:3; - unsigned long :2; - unsigned long RCD:2; - unsigned long RP:3; - unsigned long WR:1; - unsigned long :5; - unsigned long CL:3; - } BIT; - } SDTR; - union { - unsigned short WORD; - struct { - unsigned short :1; - unsigned short MR:15; - } BIT; - } SDMOD; - char wk36[6]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char SRFST:1; - unsigned char INIST:1; - unsigned char :2; - unsigned char MRSST:1; - } BIT; - } SDSR; -}; - -struct st_can { - struct { - union { - unsigned long LONG; - struct { - unsigned short H; - unsigned short L; - } WORD; - struct { - unsigned char HH; - unsigned char HL; - unsigned char LH; - unsigned char LL; - } BYTE; - struct { - unsigned long IDE:1; - unsigned long RTR:1; - unsigned long :1; - unsigned long SID:11; - unsigned long EID:18; - } BIT; - } ID; - unsigned short DLC; - unsigned char DATA[8]; - unsigned short TS; - } MB[32]; - union { - unsigned long LONG; - struct { - unsigned short H; - unsigned short L; - } WORD; - struct { - unsigned char HH; - unsigned char HL; - unsigned char LH; - unsigned char LL; - } BYTE; - struct { - unsigned long :3; - unsigned long SID:11; - unsigned long EID:18; - } BIT; - } MKR[8]; - union { - unsigned long LONG; - struct { - unsigned short H; - unsigned short L; - } WORD; - struct { - unsigned char HH; - unsigned char HL; - unsigned char LH; - unsigned char LL; - } BYTE; - struct { - unsigned long IDE:1; - unsigned long RTR:1; - unsigned long :1; - unsigned long SID:11; - unsigned long EID:18; - } BIT; - } FIDCR0; - union { - unsigned long LONG; - struct { - unsigned short H; - unsigned short L; - } WORD; - struct { - unsigned char HH; - unsigned char HL; - unsigned char LH; - unsigned char LL; - } BYTE; - struct { - unsigned long IDE:1; - unsigned long RTR:1; - unsigned long :1; - unsigned long SID:11; - unsigned long EID:18; - } BIT; - } FIDCR1; - union { - unsigned long LONG; - struct { - unsigned short H; - unsigned short L; - } WORD; - struct { - unsigned char HH; - unsigned char HL; - unsigned char LH; - unsigned char LL; - } BYTE; - struct { - unsigned char MB31:1; - unsigned char MB30:1; - unsigned char MB29:1; - unsigned char MB28:1; - unsigned char MB27:1; - unsigned char MB26:1; - unsigned char MB25:1; - unsigned char MB24:1; - unsigned char MB23:1; - unsigned char MB22:1; - unsigned char MB21:1; - unsigned char MB20:1; - unsigned char MB19:1; - unsigned char MB18:1; - unsigned char MB17:1; - unsigned char MB16:1; - unsigned char MB15:1; - unsigned char MB14:1; - unsigned char MB13:1; - unsigned char MB12:1; - unsigned char MB11:1; - unsigned char MB10:1; - unsigned char MB9:1; - unsigned char MB8:1; - unsigned char MB7:1; - unsigned char MB6:1; - unsigned char MB5:1; - unsigned char MB4:1; - unsigned char MB3:1; - unsigned char MB2:1; - unsigned char MB1:1; - unsigned char MB0:1; - } BIT; - } MKIVLR; - union { - unsigned long LONG; - struct { - unsigned short H; - unsigned short L; - } WORD; - struct { - unsigned char HH; - unsigned char HL; - unsigned char LH; - unsigned char LL; - } BYTE; - struct { - unsigned char MB31:1; - unsigned char MB30:1; - unsigned char MB29:1; - unsigned char MB28:1; - unsigned char MB27:1; - unsigned char MB26:1; - unsigned char MB25:1; - unsigned char MB24:1; - unsigned char MB23:1; - unsigned char MB22:1; - unsigned char MB21:1; - unsigned char MB20:1; - unsigned char MB19:1; - unsigned char MB18:1; - unsigned char MB17:1; - unsigned char MB16:1; - unsigned char MB15:1; - unsigned char MB14:1; - unsigned char MB13:1; - unsigned char MB12:1; - unsigned char MB11:1; - unsigned char MB10:1; - unsigned char MB9:1; - unsigned char MB8:1; - unsigned char MB7:1; - unsigned char MB6:1; - unsigned char MB5:1; - unsigned char MB4:1; - unsigned char MB3:1; - unsigned char MB2:1; - unsigned char MB1:1; - unsigned char MB0:1; - } BIT; - } MIER; - char wk0[1008]; - union { - unsigned char BYTE; - union { - struct { - unsigned char TRMREQ:1; - unsigned char RECREQ:1; - unsigned char :1; - unsigned char ONESHOT:1; - unsigned char :1; - unsigned char TRMABT:1; - unsigned char TRMACTIVE:1; - unsigned char SENTDATA:1; - } TX; - struct { - unsigned char TRMREQ:1; - unsigned char RECREQ:1; - unsigned char :1; - unsigned char ONESHOT:1; - unsigned char :1; - unsigned char MSGLOST:1; - unsigned char INVALDATA:1; - unsigned char NEWDATA:1; - } RX; - } BIT; - } MCTL[32]; - union { - unsigned short WORD; - struct { - unsigned char H; - unsigned char L; - } BYTE; - struct { - unsigned char :2; - unsigned char RBOC:1; - unsigned char BOM:2; - unsigned char SLPM:1; - unsigned char CANM:2; - unsigned char TSPS:2; - unsigned char TSRC:1; - unsigned char TPM:1; - unsigned char MLM:1; - unsigned char IDFM:2; - unsigned char MBM:1; - } BIT; - } CTLR; - union { - unsigned short WORD; - struct { - unsigned char H; - unsigned char L; - } BYTE; - struct { - unsigned char :1; - unsigned char RECST:1; - unsigned char TRMST:1; - unsigned char BOST:1; - unsigned char EPST:1; - unsigned char SLPST:1; - unsigned char HLTST:1; - unsigned char RSTST:1; - unsigned char EST:1; - unsigned char TABST:1; - unsigned char FMLST:1; - unsigned char NMLST:1; - unsigned char TFST:1; - unsigned char RFST:1; - unsigned char SDST:1; - unsigned char NDST:1; - } BIT; - } STR; - union { - unsigned long LONG; - struct { - unsigned short H; - unsigned short L; - } WORD; - struct { - unsigned char HH; - unsigned char HL; - unsigned char LH; - unsigned char LL; - } BYTE; - struct { - unsigned long TSEG1:4; - unsigned long :2; - unsigned long BRP:10; - unsigned long :2; - unsigned long SJW:2; - unsigned long :1; - unsigned long TSEG2:3; - unsigned long :7; - unsigned long CCLKS:1; - } BIT; - } BCR; - union { - unsigned char BYTE; - struct { - unsigned char RFEST:1; - unsigned char RFWST:1; - unsigned char RFFST:1; - unsigned char RFMLF:1; - unsigned char RFUST:3; - unsigned char RFE:1; - } BIT; - } RFCR; - unsigned char RFPCR; - union { - unsigned char BYTE; - struct { - unsigned char TFEST:1; - unsigned char TFFST:1; - unsigned char :2; - unsigned char TFUST:3; - unsigned char TFE:1; - } BIT; - } TFCR; - unsigned char TFPCR; - union { - unsigned char BYTE; - struct { - unsigned char BLIE:1; - unsigned char OLIE:1; - unsigned char ORIE:1; - unsigned char BORIE:1; - unsigned char BOEIE:1; - unsigned char EPIE:1; - unsigned char EWIE:1; - unsigned char BEIE:1; - } BIT; - } EIER; - union { - unsigned char BYTE; - struct { - unsigned char BLIF:1; - unsigned char OLIF:1; - unsigned char ORIF:1; - unsigned char BORIF:1; - unsigned char BOEIF:1; - unsigned char EPIF:1; - unsigned char EWIF:1; - unsigned char BEIF:1; - } BIT; - } EIFR; - unsigned char RECR; - unsigned char TECR; - union { - unsigned char BYTE; - struct { - unsigned char EDPM:1; - unsigned char ADEF:1; - unsigned char BE0F:1; - unsigned char BE1F:1; - unsigned char CEF:1; - unsigned char AEF:1; - unsigned char FEF:1; - unsigned char SEF:1; - } BIT; - } ECSR; - unsigned char CSSR; - union { - unsigned char BYTE; - struct { - unsigned char SEST:1; - unsigned char :2; - unsigned char MBNST:5; - } BIT; - } MSSR; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char MBSM:2; - } BIT; - } MSMR; - unsigned short TSR; - unsigned short AFSR; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char TSTM:2; - unsigned char TSTE:1; - } BIT; - } TCR; -}; - -struct st_cmt { - union { - unsigned short WORD; - struct { - unsigned short :14; - unsigned short STR1:1; - unsigned short STR0:1; - } BIT; - } CMSTR0; - char wk0[14]; - union { - unsigned short WORD; - struct { - unsigned short :14; - unsigned short STR3:1; - unsigned short STR2:1; - } BIT; - } CMSTR1; -}; - -struct st_cmt0 { - union { - unsigned short WORD; - struct { - unsigned short :9; - unsigned short CMIE:1; - unsigned short :4; - unsigned short CKS:2; - } BIT; - } CMCR; - unsigned short CMCNT; - unsigned short CMCOR; -}; - -struct st_crc { - union { - unsigned char BYTE; - struct { - unsigned char DORCLR:1; - unsigned char :4; - unsigned char LMS:1; - unsigned char GPS:2; - } BIT; - } CRCCR; - unsigned char CRCDIR; - unsigned short CRCDOR; -}; - -struct st_da { - unsigned short DADR0; - unsigned short DADR1; - union { - unsigned char BYTE; - struct { - unsigned char DAOE1:1; - unsigned char DAOE0:1; - unsigned char DAE:1; - } BIT; - } DACR; - union { - unsigned char BYTE; - struct { - unsigned char DPSEL:1; - } BIT; - } DADPR; - union { - unsigned char BYTE; - struct { - unsigned char DAADST:1; - } BIT; - } DAADSCR; -}; - -struct st_dmac { - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DMST:1; - } BIT; - } DMAST; -}; - -struct st_dmac0 { - unsigned long DMSAR; - unsigned long DMDAR; - unsigned long DMCRA; - unsigned short DMCRB; - char wk0[2]; - union { - unsigned short WORD; - struct { - unsigned short MD:2; - unsigned short DTS:2; - unsigned short :2; - unsigned short SZ:2; - unsigned short :6; - unsigned short DCTG:2; - } BIT; - } DMTMD; - char wk1[1]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char DTIE:1; - unsigned char ESIE:1; - unsigned char RPTIE:1; - unsigned char SARIE:1; - unsigned char DARIE:1; - } BIT; - } DMINT; - union { - unsigned short WORD; - struct { - unsigned short SM:2; - unsigned short :1; - unsigned short SARA:5; - unsigned short DM:2; - unsigned short :1; - unsigned short DARA:5; - } BIT; - } DMAMD; - char wk2[2]; - unsigned long DMOFR; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DTE:1; - } BIT; - } DMCNT; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char CLRS:1; - unsigned char :3; - unsigned char SWREQ:1; - } BIT; - } DMREQ; - union { - unsigned char BYTE; - struct { - unsigned char ACT:1; - unsigned char :2; - unsigned char DTIF:1; - unsigned char :3; - unsigned char ESIF:1; - } BIT; - } DMSTS; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DISEL:1; - } BIT; - } DMCSL; -}; - -struct st_dmac1 { - unsigned long DMSAR; - unsigned long DMDAR; - unsigned long DMCRA; - unsigned short DMCRB; - char wk0[2]; - union { - unsigned short WORD; - struct { - unsigned short MD:2; - unsigned short DTS:2; - unsigned short :2; - unsigned short SZ:2; - unsigned short :6; - unsigned short DCTG:2; - } BIT; - } DMTMD; - char wk1[1]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char DTIE:1; - unsigned char ESIE:1; - unsigned char RPTIE:1; - unsigned char SARIE:1; - unsigned char DARIE:1; - } BIT; - } DMINT; - union { - unsigned short WORD; - struct { - unsigned short SM:2; - unsigned short :1; - unsigned short SARA:5; - unsigned short DM:2; - unsigned short :1; - unsigned short DARA:5; - } BIT; - } DMAMD; - char wk2[6]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DTE:1; - } BIT; - } DMCNT; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char CLRS:1; - unsigned char :3; - unsigned char SWREQ:1; - } BIT; - } DMREQ; - union { - unsigned char BYTE; - struct { - unsigned char ACT:1; - unsigned char :2; - unsigned char DTIF:1; - unsigned char :3; - unsigned char ESIF:1; - } BIT; - } DMSTS; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DISEL:1; - } BIT; - } DMCSL; -}; - -struct st_dtc { - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char RRS:1; - } BIT; - } DTCCR; - char wk0[3]; - unsigned long DTCVBR; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char SHORT:1; - } BIT; - } DTCADMOD; - char wk1[3]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DTCST:1; - } BIT; - } DTCST; - char wk2[1]; - union { - unsigned short WORD; - struct { - unsigned short ACT:1; - unsigned short :7; - unsigned short VECN:8; - } BIT; - } DTCSTS; -}; - -struct st_edmac { - union { - unsigned long LONG; - struct { - unsigned long :25; - unsigned long DE:1; - unsigned long DL:2; - unsigned long :3; - unsigned long SWR:1; - } BIT; - } EDMR; - char wk0[4]; - union { - unsigned long LONG; - struct { - unsigned long :31; - unsigned long TR:1; - } BIT; - } EDTRR; - char wk1[4]; - union { - unsigned long LONG; - struct { - unsigned long :31; - unsigned long RR:1; - } BIT; - } EDRRR; - char wk2[4]; - unsigned long TDLAR; - char wk3[4]; - unsigned long RDLAR; - char wk4[4]; - union { - unsigned long LONG; - struct { - unsigned long :1; - unsigned long TWB:1; - unsigned long :3; - unsigned long TABT:1; - unsigned long RABT:1; - unsigned long RFCOF:1; - unsigned long ADE:1; - unsigned long ECI:1; - unsigned long TC:1; - unsigned long TDE:1; - unsigned long TFUF:1; - unsigned long FR:1; - unsigned long RDE:1; - unsigned long RFOF:1; - unsigned long :4; - unsigned long CND:1; - unsigned long DLC:1; - unsigned long CD:1; - unsigned long TRO:1; - unsigned long RMAF:1; - unsigned long :2; - unsigned long RRF:1; - unsigned long RTLF:1; - unsigned long RTSF:1; - unsigned long PRE:1; - unsigned long CERF:1; - } BIT; - } EESR; - char wk5[4]; - union { - unsigned long LONG; - struct { - unsigned long :1; - unsigned long TWBIP:1; - unsigned long :3; - unsigned long TABTIP:1; - unsigned long RABTIP:1; - unsigned long RFCOFIP:1; - unsigned long ADEIP:1; - unsigned long ECIIP:1; - unsigned long TCIP:1; - unsigned long TDEIP:1; - unsigned long TFUFIP:1; - unsigned long FRIP:1; - unsigned long RDEIP:1; - unsigned long RFOFIP:1; - unsigned long :4; - unsigned long CNDIP:1; - unsigned long DLCIP:1; - unsigned long CDIP:1; - unsigned long TROIP:1; - unsigned long RMAFIP:1; - unsigned long :2; - unsigned long RRFIP:1; - unsigned long RTLFIP:1; - unsigned long RTSFIP:1; - unsigned long PREIP:1; - unsigned long CERFIP:1; - } BIT; - } EESIPR; - char wk6[4]; - union { - unsigned long LONG; - struct { - unsigned long :20; - unsigned long CNDCE:1; - unsigned long DLCCE:1; - unsigned long CDCE:1; - unsigned long TROCE:1; - unsigned long RMAFCE:1; - unsigned long :2; - unsigned long RRFCE:1; - unsigned long RTLFCE:1; - unsigned long RTSFCE:1; - unsigned long PRECE:1; - unsigned long CERFCE:1; - } BIT; - } TRSCER; - char wk7[4]; - union { - unsigned long LONG; - struct { - unsigned long :16; - unsigned long MFC:16; - } BIT; - } RMFCR; - char wk8[4]; - union { - unsigned long LONG; - struct { - unsigned long :21; - unsigned long TFT:11; - } BIT; - } TFTR; - char wk9[4]; - union { - unsigned long LONG; - struct { - unsigned long :19; - unsigned long TFD:5; - unsigned long :3; - unsigned long RFD:5; - } BIT; - } FDR; - char wk10[4]; - union { - unsigned long LONG; - struct { - unsigned long :30; - unsigned long RNC:1; - unsigned long RNR:1; - } BIT; - } RMCR; - char wk11[8]; - union { - unsigned long LONG; - struct { - unsigned long :16; - unsigned long UNDER:16; - } BIT; - } TFUCR; - union { - unsigned long LONG; - struct { - unsigned long :16; - unsigned long OVER:16; - } BIT; - } RFOCR; - union { - unsigned long LONG; - struct { - unsigned long :31; - unsigned long ELB:1; - } BIT; - } IOSR; - union { - unsigned long LONG; - struct { - unsigned long :13; - unsigned long RFFO:3; - unsigned long :13; - unsigned long RFDO:3; - } BIT; - } FCFTR; - char wk12[4]; - union { - unsigned long LONG; - struct { - unsigned long :14; - unsigned long PADS:2; - unsigned long :10; - unsigned long PADR:6; - } BIT; - } RPADIR; - union { - unsigned long LONG; - struct { - unsigned long :27; - unsigned long TIM:1; - unsigned long :3; - unsigned long TIS:1; - } BIT; - } TRIMD; - char wk13[72]; - unsigned long RBWAR; - unsigned long RDFAR; - char wk14[4]; - unsigned long TBRAR; - unsigned long TDFAR; -}; - -struct st_etherc { - union { - unsigned long LONG; - struct { - unsigned long :11; - unsigned long TPC:1; - unsigned long ZPE:1; - unsigned long PFR:1; - unsigned long RXF:1; - unsigned long TXF:1; - unsigned long :3; - unsigned long PRCEF:1; - unsigned long :2; - unsigned long MPDE:1; - unsigned long :2; - unsigned long RE:1; - unsigned long TE:1; - unsigned long :1; - unsigned long ILB:1; - unsigned long RTM:1; - unsigned long DM:1; - unsigned long PRM:1; - } BIT; - } ECMR; - char wk0[4]; - union { - unsigned long LONG; - struct { - unsigned long :20; - unsigned long RFL:12; - } BIT; - } RFLR; - char wk1[4]; - union { - unsigned long LONG; - struct { - unsigned long :26; - unsigned long BFR:1; - unsigned long PSRTO:1; - unsigned long :1; - unsigned long LCHNG:1; - unsigned long MPD:1; - unsigned long ICD:1; - } BIT; - } ECSR; - char wk2[4]; - union { - unsigned long LONG; - struct { - unsigned long :26; - unsigned long BFSIPR:1; - unsigned long PSRTOIP:1; - unsigned long :1; - unsigned long LCHNGIP:1; - unsigned long MPDIP:1; - unsigned long ICDIP:1; - } BIT; - } ECSIPR; - char wk3[4]; - union { - unsigned long LONG; - struct { - unsigned long :28; - unsigned long MDI:1; - unsigned long MDO:1; - unsigned long MMD:1; - unsigned long MDC:1; - } BIT; - } PIR; - char wk4[4]; - union { - unsigned long LONG; - struct { - unsigned long :31; - unsigned long LMON:1; - } BIT; - } PSR; - char wk5[20]; - union { - unsigned long LONG; - struct { - unsigned long :12; - unsigned long RMD:20; - } BIT; - } RDMLR; - char wk6[12]; - union { - unsigned long LONG; - struct { - unsigned long :27; - unsigned long IPG:5; - } BIT; - } IPGR; - union { - unsigned long LONG; - struct { - unsigned long :16; - unsigned long AP:16; - } BIT; - } APR; - union { - unsigned long LONG; - struct { - unsigned long :16; - unsigned long MP:16; - } BIT; - } MPR; - char wk7[4]; - union { - unsigned long LONG; - struct { - unsigned long :24; - unsigned long RPAUSE:8; - } BIT; - } RFCF; - union { - unsigned long LONG; - struct { - unsigned long :16; - unsigned long TPAUSE:16; - } BIT; - } TPAUSER; - union { - unsigned long LONG; - struct { - unsigned long :24; - unsigned long TXP:8; - } BIT; - } TPAUSECR; - union { - unsigned long LONG; - struct { - unsigned long :16; - unsigned long BCF:16; - } BIT; - } BCFRR; - char wk8[80]; - unsigned long MAHR; - char wk9[4]; - union { - unsigned long LONG; - struct { - unsigned long :16; - unsigned long MA:16; - } BIT; - } MALR; - char wk10[4]; - unsigned long TROCR; - unsigned long CDCR; - unsigned long LCCR; - unsigned long CNDCR; - char wk11[4]; - unsigned long CEFCR; - unsigned long FRECR; - unsigned long TSFRCR; - unsigned long TLFRCR; - unsigned long RFCR; - unsigned long MAFCR; -}; - -struct st_exdmac { - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DMST:1; - } BIT; - } EDMAST; - char wk0[479]; - unsigned long CLSBR0; - unsigned long CLSBR1; - unsigned long CLSBR2; - unsigned long CLSBR3; - unsigned long CLSBR4; - unsigned long CLSBR5; - unsigned long CLSBR6; - unsigned long CLSBR7; -}; - -struct st_exdmac0 { - unsigned long EDMSAR; - unsigned long EDMDAR; - unsigned long EDMCRA; - unsigned short EDMCRB; - char wk0[2]; - union { - unsigned short WORD; - struct { - unsigned short MD:2; - unsigned short DTS:2; - unsigned short :2; - unsigned short SZ:2; - unsigned short :6; - unsigned short DCTG:2; - } BIT; - } EDMTMD; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char DACKS:1; - unsigned char DACKE:1; - unsigned char DACKW:1; - } BIT; - } EDMOMD; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char DTIE:1; - unsigned char ESIE:1; - unsigned char RPTIE:1; - unsigned char SARIE:1; - unsigned char DARIE:1; - } BIT; - } EDMINT; - union { - unsigned long LONG; - struct { - unsigned long :14; - unsigned long AMS:1; - unsigned long DIR:1; - unsigned long SM:2; - unsigned long :1; - unsigned long SARA:5; - unsigned long DM:2; - unsigned long :1; - unsigned long DARA:5; - } BIT; - } EDMAMD; - unsigned long EDMOFR; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DTE:1; - } BIT; - } EDMCNT; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char CLRS:1; - unsigned char :3; - unsigned char SWREQ:1; - } BIT; - } EDMREQ; - union { - unsigned char BYTE; - struct { - unsigned char ACT:1; - unsigned char :2; - unsigned char DTIF:1; - unsigned char :3; - unsigned char ESIF:1; - } BIT; - } EDMSTS; - char wk1[1]; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char DREQS:2; - } BIT; - } EDMRMD; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char EREQ:1; - } BIT; - } EDMERF; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char PREQ:1; - } BIT; - } EDMPRF; -}; - -struct st_exdmac1 { - unsigned long EDMSAR; - unsigned long EDMDAR; - unsigned long EDMCRA; - unsigned short EDMCRB; - char wk0[2]; - union { - unsigned short WORD; - struct { - unsigned short MD:2; - unsigned short DTS:2; - unsigned short :2; - unsigned short SZ:2; - unsigned short :6; - unsigned short DCTG:2; - } BIT; - } EDMTMD; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char DACKS:1; - unsigned char DACKE:1; - unsigned char DACKW:1; - } BIT; - } EDMOMD; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char DTIE:1; - unsigned char ESIE:1; - unsigned char RPTIE:1; - unsigned char SARIE:1; - unsigned char DARIE:1; - } BIT; - } EDMINT; - union { - unsigned long LONG; - struct { - unsigned long :14; - unsigned long AMS:1; - unsigned long DIR:1; - unsigned long SM:2; - unsigned long :1; - unsigned long SARA:5; - unsigned long DM:2; - unsigned long :1; - unsigned long DARA:5; - } BIT; - } EDMAMD; - char wk1[4]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DTE:1; - } BIT; - } EDMCNT; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char CLRS:1; - unsigned char :3; - unsigned char SWREQ:1; - } BIT; - } EDMREQ; - union { - unsigned char BYTE; - struct { - unsigned char ACT:1; - unsigned char :2; - unsigned char DTIF:1; - unsigned char :3; - unsigned char ESIF:1; - } BIT; - } EDMSTS; - char wk2[1]; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char DREQS:2; - } BIT; - } EDMRMD; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char EREQ:1; - } BIT; - } EDMERF; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char PREQ:1; - } BIT; - } EDMPRF; -}; - -struct st_flash { - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char FLWE:2; - } BIT; - } FWEPROR; - char wk0[7799147]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char FRDMD:1; - } BIT; - } FMODR; - char wk1[13]; - union { - unsigned char BYTE; - struct { - unsigned char ROMAE:1; - unsigned char :2; - unsigned char CMDLK:1; - unsigned char DFLAE:1; - unsigned char :1; - unsigned char DFLRPE:1; - unsigned char DFLWPE:1; - } BIT; - } FASTAT; - union { - unsigned char BYTE; - struct { - unsigned char ROMAEIE:1; - unsigned char :2; - unsigned char CMDLKIE:1; - unsigned char DFLAEIE:1; - unsigned char :1; - unsigned char DFLRPEIE:1; - unsigned char DFLWPEIE:1; - } BIT; - } FAEINT; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char FRDYIE:1; - } BIT; - } FRDYIE; - char wk2[45]; - union { - unsigned short WORD; - struct { - unsigned short KEY:8; - unsigned short DBRE07:1; - unsigned short DBRE06:1; - unsigned short DBRE05:1; - unsigned short DBRE04:1; - unsigned short DBRE03:1; - unsigned short DBRE02:1; - unsigned short DBRE01:1; - unsigned short DBRE00:1; - } BIT; - } DFLRE0; - union { - unsigned short WORD; - struct { - unsigned short KEY:8; - unsigned short DBRE15:1; - unsigned short DBRE14:1; - unsigned short DBRE13:1; - unsigned short DBRE12:1; - unsigned short DBRE11:1; - unsigned short DBRE10:1; - unsigned short DBRE09:1; - unsigned short DBRE08:1; - } BIT; - } DFLRE1; - char wk3[12]; - union { - unsigned short WORD; - struct { - unsigned short KEY:8; - unsigned short DBWE07:1; - unsigned short DBW006:1; - unsigned short DBWE05:1; - unsigned short DBWE04:1; - unsigned short DBWE03:1; - unsigned short DBWE02:1; - unsigned short DBWE01:1; - unsigned short DBWE00:1; - } BIT; - } DFLWE0; - union { - unsigned short WORD; - struct { - unsigned short KEY:8; - unsigned short DBWE15:1; - unsigned short DBWE14:1; - unsigned short DBWE13:1; - unsigned short DBWE12:1; - unsigned short DBWE11:1; - unsigned short DBWE10:1; - unsigned short DBWE09:1; - unsigned short DBWE08:1; - } BIT; - } DFLWE1; - union { - unsigned short WORD; - struct { - unsigned short KEY:8; - unsigned short :7; - unsigned short FCRME:1; - } BIT; - } FCURAME; - char wk4[15194]; - union { - unsigned char BYTE; - struct { - unsigned char FRDY:1; - unsigned char ILGLERR:1; - unsigned char ERSERR:1; - unsigned char PRGERR:1; - unsigned char SUSRDY:1; - unsigned char :1; - unsigned char ERSSPD:1; - unsigned char PRGSPD:1; - } BIT; - } FSTATR0; - union { - unsigned char BYTE; - struct { - unsigned char FCUERR:1; - unsigned char :2; - unsigned char FLOCKST:1; - } BIT; - } FSTATR1; - union { - unsigned short WORD; - struct { - unsigned short FEKEY:8; - unsigned short FENTRYD:1; - unsigned short :3; - unsigned short FENTRY3:1; - unsigned short FENTRY2:1; - unsigned short FENTRY1:1; - unsigned short FENTRY0:1; - } BIT; - } FENTRYR; - union { - unsigned short WORD; - struct { - unsigned short FPKEY:8; - unsigned short :7; - unsigned short FPROTCN:1; - } BIT; - } FPROTR; - union { - unsigned short WORD; - struct { - unsigned short FRKEY:8; - unsigned short :7; - unsigned short FRESET:1; - } BIT; - } FRESETR; - char wk5[2]; - union { - unsigned short WORD; - struct { - unsigned short CMDR:8; - unsigned short PCMDR:8; - } BIT; - } FCMDR; - char wk6[12]; - union { - unsigned short WORD; - struct { - unsigned short :15; - unsigned short ESUSPMD:1; - } BIT; - } FCPSR; - union { - unsigned short WORD; - struct { - unsigned short BCSIZE:1; - unsigned short :4; - unsigned short BCADR:11; - } BIT; - } DFLBCCNT; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short PEERRST:8; - } BIT; - } FPESTAT; - union { - unsigned short WORD; - struct { - unsigned short :15; - unsigned short BCST:1; - } BIT; - } DFLBCSTAT; - char wk7[24]; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short PCKA:8; - } BIT; - } PCKAR; -}; - -struct st_icu { - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char IR:1; - } BIT; - } IR[254]; - char wk0[2]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DTCE:1; - } BIT; - } DTCER[252]; - char wk1[4]; - union { - unsigned char BYTE; - struct { - unsigned char IEN7:1; - unsigned char IEN6:1; - unsigned char IEN5:1; - unsigned char IEN4:1; - unsigned char IEN3:1; - unsigned char IEN2:1; - unsigned char IEN1:1; - unsigned char IEN0:1; - } BIT; - } IER[32]; - char wk2[192]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char SWINT:1; - } BIT; - } SWINTR; - char wk3[15]; - union { - unsigned short WORD; - struct { - unsigned short FIEN:1; - unsigned short :7; - unsigned short FVCT:8; - } BIT; - } FIR; - char wk4[14]; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char IPR:4; - } BIT; - } IPR[254]; - char wk5[2]; - union { - unsigned char BYTE; - struct { - unsigned char DMRS:8; - } BIT; - } DMRSR0; - char wk6[3]; - union { - unsigned char BYTE; - struct { - unsigned char DMRS:8; - } BIT; - } DMRSR1; - char wk7[3]; - union { - unsigned char BYTE; - struct { - unsigned char DMRS:8; - } BIT; - } DMRSR2; - char wk8[3]; - union { - unsigned char BYTE; - struct { - unsigned char DMRS:8; - } BIT; - } DMRSR3; - char wk9[243]; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char IRQMD:2; - } BIT; - } IRQCR[16]; - union { - unsigned char BYTE; - struct { - unsigned char FLTEN7:1; - unsigned char FLTEN6:1; - unsigned char FLTEN5:1; - unsigned char FLTEN4:1; - unsigned char FLTEN3:1; - unsigned char FLTEN2:1; - unsigned char FLTEN1:1; - unsigned char FLTEN0:1; - } BIT; - } IRQFLTE0; - union { - unsigned char BYTE; - struct { - unsigned char FLTEN15:1; - unsigned char FLTEN14:1; - unsigned char FLTEN13:1; - unsigned char FLTEN12:1; - unsigned char FLTEN11:1; - unsigned char FLTEN10:1; - unsigned char FLTEN9:1; - unsigned char FLTEN8:1; - } BIT; - } IRQFLTE1; - char wk10[2]; - union { - unsigned short WORD; - struct { - unsigned short FCLKSEL7:2; - unsigned short FCLKSEL6:2; - unsigned short FCLKSEL5:2; - unsigned short FCLKSEL4:2; - unsigned short FCLKSEL3:2; - unsigned short FCLKSEL2:2; - unsigned short FCLKSEL1:2; - unsigned short FCLKSEL0:2; - } BIT; - } IRQFLTC0; - union { - unsigned short WORD; - struct { - unsigned short FCLKSEL15:2; - unsigned short FCLKSEL14:2; - unsigned short FCLKSEL13:2; - unsigned short FCLKSEL12:2; - unsigned short FCLKSEL11:2; - unsigned short FCLKSEL10:2; - unsigned short FCLKSEL9:2; - unsigned short FCLKSEL8:2; - } BIT; - } IRQFLTC1; - char wk11[104]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char LVD2ST:1; - unsigned char LVD1ST:1; - unsigned char IWDTST:1; - unsigned char WDTST:1; - unsigned char OSTST:1; - unsigned char NMIST:1; - } BIT; - } NMISR; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char LVD2EN:1; - unsigned char LVD1EN:1; - unsigned char IWDTEN:1; - unsigned char WDTEN:1; - unsigned char OSTEN:1; - unsigned char NMIEN:1; - } BIT; - } NMIER; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char LVD2CLR:1; - unsigned char LVD1CLR:1; - unsigned char IWDTCLR:1; - unsigned char WDTCLR:1; - unsigned char OSTCLR:1; - unsigned char NMICLR:1; - } BIT; - } NMICLR; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char NMIMD:1; - } BIT; - } NMICR; - char wk12[12]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char NFLTEN:1; - } BIT; - } NMIFLTE; - char wk13[3]; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char NFCLKSEL:2; - } BIT; - } NMIFLTC; - char wk14[19819]; - union { - unsigned long LONG; - struct { - unsigned long :16; - unsigned long IS15:1; - unsigned long IS14:1; - unsigned long IS13:1; - unsigned long IS12:1; - unsigned long IS11:1; - unsigned long IS10:1; - unsigned long IS9:1; - unsigned long IS8:1; - unsigned long IS7:1; - unsigned long IS6:1; - unsigned long IS5:1; - unsigned long IS4:1; - unsigned long IS3:1; - unsigned long IS2:1; - unsigned long IS1:1; - unsigned long IS0:1; - } BIT; - } GRP[13]; - char wk15[12]; - union { - unsigned long LONG; - struct { - unsigned long :16; - unsigned long EN15:1; - unsigned long EN14:1; - unsigned long EN13:1; - unsigned long EN12:1; - unsigned long EN11:1; - unsigned long EN10:1; - unsigned long EN9:1; - unsigned long EN8:1; - unsigned long EN7:1; - unsigned long EN6:1; - unsigned long EN5:1; - unsigned long EN4:1; - unsigned long EN3:1; - unsigned long EN2:1; - unsigned long EN1:1; - unsigned long EN0:1; - } BIT; - } GEN[13]; - char wk16[12]; - union { - unsigned long LONG; - struct { - unsigned long :16; - unsigned long CLR15:1; - unsigned long CLR14:1; - unsigned long CLR13:1; - unsigned long CLR12:1; - unsigned long CLR11:1; - unsigned long CLR10:1; - unsigned long CLR9:1; - unsigned long CLR8:1; - unsigned long CLR7:1; - unsigned long CLR6:1; - unsigned long CLR5:1; - unsigned long CLR4:1; - unsigned long CLR3:1; - unsigned long CLR2:1; - unsigned long CLR1:1; - unsigned long CLR0:1; - } BIT; - } GCR[13]; - char wk17[12]; - union { - unsigned long LONG; - struct { - unsigned long :26; - unsigned long CN5:1; - unsigned long CN4:1; - unsigned long CN3:1; - unsigned long CN2:1; - unsigned long CN1:1; - unsigned long CN0:1; - } BIT; - } SEL; -}; - -struct st_ieb { - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char IOL:1; - unsigned char DEE:1; - unsigned char :1; - unsigned char RE:1; - } BIT; - } IECTR; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char CMD:3; - } BIT; - } IECMR; - union { - unsigned char BYTE; - struct { - unsigned char SS:1; - unsigned char RN:3; - unsigned char CTL:4; - } BIT; - } IEMCR; - union { - unsigned char BYTE; - struct { - unsigned char IARL4:4; - unsigned char IMD:2; - unsigned char :1; - unsigned char STE:1; - } BIT; - } IEAR1; - union { - unsigned char BYTE; - struct { - unsigned char IARU8:8; - } BIT; - } IEAR2; - union { - unsigned char BYTE; - struct { - unsigned char ISAL4:4; - } BIT; - } IESA1; - union { - unsigned char BYTE; - struct { - unsigned char ISAU8:8; - } BIT; - } IESA2; - union { - unsigned char BYTE; - struct { - unsigned char IBFL:8; - } BIT; - } IETBFL; - char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char ISAL4:4; - } BIT; - } IEMA1; - union { - unsigned char BYTE; - struct { - unsigned char IMAU8:8; - } BIT; - } IEMA2; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char RCTL:4; - } BIT; - } IERCTL; - union { - unsigned char BYTE; - struct { - unsigned char RBFL:8; - } BIT; - } IERBFL; - char wk1[1]; - union { - unsigned char BYTE; - struct { - unsigned char ILAL8:8; - } BIT; - } IELA1; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char ILAU4:4; - } BIT; - } IELA2; - union { - unsigned char BYTE; - struct { - unsigned char CMX:1; - unsigned char MRQ:1; - unsigned char SRQ:1; - unsigned char SRE:1; - unsigned char LCK:1; - unsigned char :1; - unsigned char RSS:1; - unsigned char GG:1; - } BIT; - } IEFLG; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char TXS:1; - unsigned char TXF:1; - unsigned char :1; - unsigned char TXEAL:1; - unsigned char TXETTME:1; - unsigned char TXERO:1; - unsigned char TXEACK:1; - } BIT; - } IETSR; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char TXSE:1; - unsigned char TXFE:1; - unsigned char :1; - unsigned char TXEALE:1; - unsigned char TXETTMEE:1; - unsigned char TXEROE:1; - unsigned char TXEACKE:1; - } BIT; - } IEIET; - char wk2[1]; - union { - unsigned char BYTE; - struct { - unsigned char RXBSY:1; - unsigned char RXS:1; - unsigned char RXF:1; - unsigned char RXEDE:1; - unsigned char RXEOVE:1; - unsigned char RXERTME:1; - unsigned char RXEDLE:1; - unsigned char RXEPE:1; - } BIT; - } IERSR; - union { - unsigned char BYTE; - struct { - unsigned char RXBSYE:1; - unsigned char RXSE:1; - unsigned char RXFE:1; - unsigned char RXEDEE:1; - unsigned char RXEOVEE:1; - unsigned char RXERTMEE:1; - unsigned char RXEDLEE:1; - unsigned char RXEPEE:1; - } BIT; - } IEIER; - char wk3[2]; - union { - unsigned char BYTE; - struct { - unsigned char FLT:1; - unsigned char FCKS:2; - unsigned char CKS3:1; - unsigned char SRSTP:1; - unsigned char CKS:3; - } BIT; - } IECKSR; - char wk4[230]; - unsigned char IETB[33]; - char wk5[223]; - unsigned char IERB[33]; -}; - -struct st_iwdt { - unsigned char IWDTRR; - char wk0[1]; - union { - unsigned short WORD; - struct { - unsigned short :2; - unsigned short RPSS:2; - unsigned short :2; - unsigned short RPES:2; - unsigned short CKS:4; - unsigned short :2; - unsigned short TOPS:2; - } BIT; - } IWDTCR; - union { - unsigned short WORD; - struct { - unsigned short REFEF:1; - unsigned short UNDFF:1; - unsigned short CNTVAL:14; - } BIT; - } IWDTSR; - union { - unsigned char BYTE; - struct { - unsigned char RSTIRQS:1; - } BIT; - } IWDTRCR; - char wk1[1]; - union { - unsigned char BYTE; - struct { - unsigned char SLCSTP:1; - } BIT; - } IWDTCSTPR; -}; - -struct st_mpc { - union { - unsigned char BYTE; - struct { - unsigned char CS7E:1; - unsigned char CS6E:1; - unsigned char CS5E:1; - unsigned char CS4E:1; - unsigned char CS3E:1; - unsigned char CS2E:1; - unsigned char CS1E:1; - unsigned char CS0E:1; - } BIT; - } PFCSE; - char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char CS3S:2; - unsigned char CS2S:2; - unsigned char CS1S:2; - unsigned char :1; - unsigned char CS0S:1; - } BIT; - } PFCSS0; - union { - unsigned char BYTE; - struct { - unsigned char CS7S:2; - unsigned char CS6S:2; - unsigned char CS5S:2; - unsigned char CS4S:2; - } BIT; - } PFCSS1; - union { - unsigned char BYTE; - struct { - unsigned char A15E:1; - unsigned char A14E:1; - unsigned char A13E:1; - unsigned char A12E:1; - unsigned char A11E:1; - unsigned char A10E:1; - unsigned char A9E:1; - unsigned char A8E:1; - } BIT; - } PFAOE0; - union { - unsigned char BYTE; - struct { - unsigned char A23E:1; - unsigned char A22E:1; - unsigned char A21E:1; - unsigned char A20E:1; - unsigned char A19E:1; - unsigned char A18E:1; - unsigned char A17E:1; - unsigned char A16E:1; - } BIT; - } PFAOE1; - union { - unsigned char BYTE; - struct { - unsigned char WR32BC32E:1; - unsigned char WR1BC1E:1; - unsigned char DH32E:1; - unsigned char DHE:1; - unsigned char :2; - unsigned char ADRHMS:1; - unsigned char ADRLE:1; - } BIT; - } PFBCR0; - union { - unsigned char BYTE; - struct { - unsigned char SDCLKE:1; - unsigned char DQM1E:1; - unsigned char :1; - unsigned char MDSDE:1; - unsigned char :1; - unsigned char ALEOE:1; - unsigned char WAITS:2; - } BIT; - } PFBCR1; - char wk1[6]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PHYMODE:1; - } BIT; - } PFENET; - char wk2[5]; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char PUPHZS:1; - } BIT; - } PFUSB0; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char PUPHZS:1; - } BIT; - } PFUSB1; - char wk3[9]; - union { - unsigned char BYTE; - struct { - unsigned char B0WI:1; - unsigned char PFSWE:1; - } BIT; - } PWPR; - char wk4[32]; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } P00PFS; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } P01PFS; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } P02PFS; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } P03PFS; - char wk5[1]; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } P05PFS; - char wk6[1]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } P07PFS; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } P10PFS; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } P11PFS; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } P12PFS; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } P13PFS; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } P14PFS; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } P15PFS; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } P16PFS; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } P17PFS; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } P20PFS; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } P21PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } P22PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } P23PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } P24PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } P25PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } P26PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } P27PFS; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } P30PFS; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } P31PFS; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } P32PFS; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } P33PFS; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } P34PFS; - char wk7[3]; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char ISEL:1; - } BIT; - } P40PFS; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char ISEL:1; - } BIT; - } P41PFS; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char ISEL:1; - } BIT; - } P42PFS; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char ISEL:1; - } BIT; - } P43PFS; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char ISEL:1; - } BIT; - } P44PFS; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char ISEL:1; - } BIT; - } P45PFS; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char ISEL:1; - } BIT; - } P46PFS; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char ISEL:1; - } BIT; - } P47PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } P50PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } P51PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } P52PFS; - char wk8[1]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } P54PFS; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } P55PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } P56PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } P57PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } P60PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } P61PFS; - char wk9[4]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } P66PFS; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } P67PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } P70PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } P71PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } P72PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } P73PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } P74PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } P75PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } P76PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } P77PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } P80PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } P81PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } P82PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } P83PFS; - char wk10[2]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } P86PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } P87PFS; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char :2; - unsigned char PSEL:5; - } BIT; - } P90PFS; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char :2; - unsigned char PSEL:5; - } BIT; - } P91PFS; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char :2; - unsigned char PSEL:5; - } BIT; - } P92PFS; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char :2; - unsigned char PSEL:5; - } BIT; - } P93PFS; - char wk11[4]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } PA0PFS; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } PA1PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } PA2PFS; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } PA3PFS; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } PA4PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } PA5PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } PA6PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } PA7PFS; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } PB0PFS; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } PB1PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } PB2PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } PB3PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } PB4PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } PB5PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } PB6PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } PB7PFS; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } PC0PFS; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } PC1PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } PC2PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } PC3PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } PC4PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } PC5PFS; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } PC6PFS; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } PC7PFS; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } PD0PFS; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } PD1PFS; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } PD2PFS; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } PD3PFS; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } PD4PFS; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } PD5PFS; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } PD6PFS; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } PD7PFS; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char :2; - unsigned char PSEL:5; - } BIT; - } PE0PFS; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char :2; - unsigned char PSEL:5; - } BIT; - } PE1PFS; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } PE2PFS; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char :2; - unsigned char PSEL:5; - } BIT; - } PE3PFS; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char :2; - unsigned char PSEL:5; - } BIT; - } PE4PFS; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } PE5PFS; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } PE6PFS; - union { - unsigned char BYTE; - struct { - unsigned char ASEL:1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } PE7PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } PF0PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } PF1PFS; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } PF2PFS; - char wk12[2]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char ISEL:1; - unsigned char :1; - unsigned char PSEL:5; - } BIT; - } PF5PFS; - char wk13[21]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSEL:5; - } BIT; - } PJ3PFS; -}; - -struct st_mtu { - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char OE4D:1; - unsigned char OE4C:1; - unsigned char OE3D:1; - unsigned char OE4B:1; - unsigned char OE4A:1; - unsigned char OE3B:1; - } BIT; - } TOER; - char wk0[2]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char BDC:1; - unsigned char N:1; - unsigned char P:1; - unsigned char FB:1; - unsigned char WF:1; - unsigned char VF:1; - unsigned char UF:1; - } BIT; - } TGCR; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char PSYE:1; - unsigned char :2; - unsigned char TOCL:1; - unsigned char TOCS:1; - unsigned char OLSN:1; - unsigned char OLSP:1; - } BIT; - } TOCR1; - union { - unsigned char BYTE; - struct { - unsigned char BF:2; - unsigned char OLS3N:1; - unsigned char OLS3P:1; - unsigned char OLS2N:1; - unsigned char OLS2P:1; - unsigned char OLS1N:1; - unsigned char OLS1P:1; - } BIT; - } TOCR2; - char wk1[4]; - unsigned short TCDR; - unsigned short TDDR; - char wk2[8]; - unsigned short TCNTS; - unsigned short TCBR; - char wk3[12]; - union { - unsigned char BYTE; - struct { - unsigned char T3AEN:1; - unsigned char T3ACOR:3; - unsigned char T4VEN:1; - unsigned char T4VCOR:3; - } BIT; - } TITCR; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char T3ACNT:3; - unsigned char :1; - unsigned char T4VCNT:3; - } BIT; - } TITCNT; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char BTE:2; - } BIT; - } TBTER; - char wk4[1]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char TDER:1; - } BIT; - } TDER; - char wk5[1]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char OLS3N:1; - unsigned char OLS3P:1; - unsigned char OLS2N:1; - unsigned char OLS2P:1; - unsigned char OLS1N:1; - unsigned char OLS1P:1; - } BIT; - } TOLBR; - char wk6[41]; - union { - unsigned char BYTE; - struct { - unsigned char CCE:1; - unsigned char :6; - unsigned char WRE:1; - } BIT; - } TWCR; - char wk7[31]; - union { - unsigned char BYTE; - struct { - unsigned char CST4:1; - unsigned char CST3:1; - unsigned char :3; - unsigned char CST2:1; - unsigned char CST1:1; - unsigned char CST0:1; - } BIT; - } TSTR; - union { - unsigned char BYTE; - struct { - unsigned char SYNC4:1; - unsigned char SYNC3:1; - unsigned char :3; - unsigned char SYNC2:1; - unsigned char SYNC1:1; - unsigned char SYNC0:1; - } BIT; - } TSYR; - char wk8[2]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char RWE:1; - } BIT; - } TRWER; -}; - -struct st_mtu0 { - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char NFCS:2; - unsigned char NFDEN:1; - unsigned char NFCEN:1; - unsigned char NFBEN:1; - unsigned char NFAEN:1; - } BIT; - } NFCR; - char wk0[111]; - union { - unsigned char BYTE; - struct { - unsigned char CCLR:3; - unsigned char CKEG:2; - unsigned char TPSC:3; - } BIT; - } TCR; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char BFE:1; - unsigned char BFB:1; - unsigned char BFA:1; - unsigned char MD:4; - } BIT; - } TMDR; - union { - unsigned char BYTE; - struct { - unsigned char IOB:4; - unsigned char IOA:4; - } BIT; - } TIORH; - union { - unsigned char BYTE; - struct { - unsigned char IOD:4; - unsigned char IOC:4; - } BIT; - } TIORL; - union { - unsigned char BYTE; - struct { - unsigned char TTGE:1; - unsigned char :2; - unsigned char TCIEV:1; - unsigned char TGIED:1; - unsigned char TGIEC:1; - unsigned char TGIEB:1; - unsigned char TGIEA:1; - } BIT; - } TIER; - union { - unsigned char BYTE; - struct { - unsigned char TCFD:1; - } BIT; - } TSR; - unsigned short TCNT; - unsigned short TGRA; - unsigned short TGRB; - unsigned short TGRC; - unsigned short TGRD; - char wk1[16]; - unsigned short TGRE; - unsigned short TGRF; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char TGIEF:1; - unsigned char TGIEE:1; - } BIT; - } TIER2; - char wk2[1]; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char TTSE:1; - unsigned char TTSB:1; - unsigned char TTSA:1; - } BIT; - } TBTM; -}; - -struct st_mtu1 { - char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char NFCS:2; - unsigned char NFDEN:1; - unsigned char NFCEN:1; - unsigned char NFBEN:1; - unsigned char NFAEN:1; - } BIT; - } NFCR; - char wk1[238]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char CCLR:2; - unsigned char CKEG:2; - unsigned char TPSC:3; - } BIT; - } TCR; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char MD:4; - } BIT; - } TMDR; - union { - unsigned char BYTE; - struct { - unsigned char IOB:4; - unsigned char IOA:4; - } BIT; - } TIOR; - char wk2[1]; - union { - unsigned char BYTE; - struct { - unsigned char TTGE:1; - unsigned char :1; - unsigned char TCIEU:1; - unsigned char TCIEV:1; - unsigned char :2; - unsigned char TGIEB:1; - unsigned char TGIEA:1; - } BIT; - } TIER; - union { - unsigned char BYTE; - struct { - unsigned char TCFD:1; - } BIT; - } TSR; - unsigned short TCNT; - unsigned short TGRA; - unsigned short TGRB; - char wk3[4]; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char I2BE:1; - unsigned char I2AE:1; - unsigned char I1BE:1; - unsigned char I1AE:1; - } BIT; - } TICCR; -}; - -struct st_mtu2 { - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char NFCS:2; - unsigned char NFDEN:1; - unsigned char NFCEN:1; - unsigned char NFBEN:1; - unsigned char NFAEN:1; - } BIT; - } NFCR; - char wk0[365]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char CCLR:2; - unsigned char CKEG:2; - unsigned char TPSC:3; - } BIT; - } TCR; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char MD:4; - } BIT; - } TMDR; - union { - unsigned char BYTE; - struct { - unsigned char IOB:4; - unsigned char IOA:4; - } BIT; - } TIOR; - char wk1[1]; - union { - unsigned char BYTE; - struct { - unsigned char TTGE:1; - unsigned char :1; - unsigned char TCIEU:1; - unsigned char TCIEV:1; - unsigned char :2; - unsigned char TGIEB:1; - unsigned char TGIEA:1; - } BIT; - } TIER; - union { - unsigned char BYTE; - struct { - unsigned char TCFD:1; - } BIT; - } TSR; - unsigned short TCNT; - unsigned short TGRA; - unsigned short TGRB; -}; - -struct st_mtu3 { - union { - unsigned char BYTE; - struct { - unsigned char CCLR:3; - unsigned char CKEG:2; - unsigned char TPSC:3; - } BIT; - } TCR; - char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char BFB:1; - unsigned char BFA:1; - unsigned char MD:4; - } BIT; - } TMDR; - char wk1[1]; - union { - unsigned char BYTE; - struct { - unsigned char IOB:4; - unsigned char IOA:4; - } BIT; - } TIORH; - union { - unsigned char BYTE; - struct { - unsigned char IOD:4; - unsigned char IOC:4; - } BIT; - } TIORL; - char wk2[2]; - union { - unsigned char BYTE; - struct { - unsigned char TTGE:1; - unsigned char :2; - unsigned char TCIEV:1; - unsigned char TGIED:1; - unsigned char TGIEC:1; - unsigned char TGIEB:1; - unsigned char TGIEA:1; - } BIT; - } TIER; - char wk3[7]; - unsigned short TCNT; - char wk4[6]; - unsigned short TGRA; - unsigned short TGRB; - char wk5[8]; - unsigned short TGRC; - unsigned short TGRD; - char wk6[4]; - union { - unsigned char BYTE; - struct { - unsigned char TCFD:1; - } BIT; - } TSR; - char wk7[11]; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char TTSE:1; - unsigned char TTSB:1; - unsigned char TTSA:1; - } BIT; - } TBTM; - char wk8[90]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char NFCS:2; - unsigned char NFDEN:1; - unsigned char NFCEN:1; - unsigned char NFBEN:1; - unsigned char NFAEN:1; - } BIT; - } NFCR; -}; - -struct st_mtu4 { - char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char CCLR:3; - unsigned char CKEG:2; - unsigned char TPSC:3; - } BIT; - } TCR; - char wk1[1]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char BFB:1; - unsigned char BFA:1; - unsigned char MD:4; - } BIT; - } TMDR; - char wk2[2]; - union { - unsigned char BYTE; - struct { - unsigned char IOB:4; - unsigned char IOA:4; - } BIT; - } TIORH; - union { - unsigned char BYTE; - struct { - unsigned char IOD:4; - unsigned char IOC:4; - } BIT; - } TIORL; - char wk3[1]; - union { - unsigned char BYTE; - struct { - unsigned char TTGE:1; - unsigned char TTGE2:1; - unsigned char :1; - unsigned char TCIEV:1; - unsigned char TGIED:1; - unsigned char TGIEC:1; - unsigned char TGIEB:1; - unsigned char TGIEA:1; - } BIT; - } TIER; - char wk4[8]; - unsigned short TCNT; - char wk5[8]; - unsigned short TGRA; - unsigned short TGRB; - char wk6[8]; - unsigned short TGRC; - unsigned short TGRD; - char wk7[1]; - union { - unsigned char BYTE; - struct { - unsigned char TCFD:1; - } BIT; - } TSR; - char wk8[11]; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char TTSE:1; - unsigned char TTSB:1; - unsigned char TTSA:1; - } BIT; - } TBTM; - char wk9[6]; - union { - unsigned short WORD; - struct { - unsigned short BF:2; - unsigned short :6; - unsigned short UT4AE:1; - unsigned short DT4AE:1; - unsigned short UT4BE:1; - unsigned short DT4BE:1; - unsigned short ITA3AE:1; - unsigned short ITA4VE:1; - unsigned short ITB3AE:1; - unsigned short ITB4VE:1; - } BIT; - } TADCR; - char wk10[2]; - unsigned short TADCORA; - unsigned short TADCORB; - unsigned short TADCOBRA; - unsigned short TADCOBRB; - char wk11[72]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char NFCS:2; - unsigned char NFDEN:1; - unsigned char NFCEN:1; - unsigned char NFBEN:1; - unsigned char NFAEN:1; - } BIT; - } NFCR; -}; - -struct st_mtu5 { - char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char NFCS:2; - unsigned char :1; - unsigned char NFWEN:1; - unsigned char NFVEN:1; - unsigned char NFUEN:1; - } BIT; - } NFCR; - char wk1[490]; - unsigned short TCNTU; - unsigned short TGRU; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char TPSC:2; - } BIT; - } TCRU; - char wk2[1]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char IOC:5; - } BIT; - } TIORU; - char wk3[9]; - unsigned short TCNTV; - unsigned short TGRV; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char TPSC:2; - } BIT; - } TCRV; - char wk4[1]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char IOC:5; - } BIT; - } TIORV; - char wk5[9]; - unsigned short TCNTW; - unsigned short TGRW; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char TPSC:2; - } BIT; - } TCRW; - char wk6[1]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char IOC:5; - } BIT; - } TIORW; - char wk7[11]; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char TGIE5U:1; - unsigned char TGIE5V:1; - unsigned char TGIE5W:1; - } BIT; - } TIER; - char wk8[1]; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char CSTU5:1; - unsigned char CSTV5:1; - unsigned char CSTW5:1; - } BIT; - } TSTR; - char wk9[1]; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char CMPCLR5U:1; - unsigned char CMPCLR5V:1; - unsigned char CMPCLR5W:1; - } BIT; - } TCNTCMPCLR; -}; - -struct st_poe { - union { - unsigned short WORD; - struct { - unsigned short POE3F:1; - unsigned short POE2F:1; - unsigned short POE1F:1; - unsigned short POE0F:1; - unsigned short :3; - unsigned short PIE1:1; - unsigned short POE3M:2; - unsigned short POE2M:2; - unsigned short POE1M:2; - unsigned short POE0M:2; - } BIT; - } ICSR1; - union { - unsigned short WORD; - struct { - unsigned short OSF1:1; - unsigned short :5; - unsigned short OCE1:1; - unsigned short OIE1:1; - } BIT; - } OCSR1; - char wk0[4]; - union { - unsigned short WORD; - struct { - unsigned short :3; - unsigned short POE8F:1; - unsigned short :2; - unsigned short POE8E:1; - unsigned short PIE2:1; - unsigned short :6; - unsigned short POE8M:2; - } BIT; - } ICSR2; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char CH0HIZ:1; - unsigned char CH34HIZ:1; - } BIT; - } SPOER; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char PE3ZE:1; - unsigned char PE2ZE:1; - unsigned char PE1ZE:1; - unsigned char PE0ZE:1; - } BIT; - } POECR1; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char P1CZEA:1; - unsigned char P2CZEA:1; - unsigned char P3CZEA:1; - } BIT; - } POECR2; - char wk1[1]; - union { - unsigned short WORD; - struct { - unsigned short :3; - unsigned short OSTSTF:1; - unsigned short :2; - unsigned short OSTSTE:1; - } BIT; - } ICSR3; -}; - -struct st_port0 { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char :1; - unsigned char B5:1; - unsigned char :1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char :1; - unsigned char B5:1; - unsigned char :1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PODR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char :1; - unsigned char B5:1; - unsigned char :1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PIDR; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char :1; - unsigned char B5:1; - unsigned char :1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PMR; - char wk3[31]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char :1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR0; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :3; - unsigned char B2:1; - } BIT; - } ODR1; - char wk4[62]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char :1; - unsigned char B5:1; - unsigned char :1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; - char wk5[31]; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DSCR; -}; - -struct st_port1 { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PODR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PIDR; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PMR; - char wk3[32]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char :1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR0; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char :1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR1; - char wk4[61]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; -}; - -struct st_port2 { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PODR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PIDR; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PMR; - char wk3[33]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char :1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR0; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char :1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR1; - char wk4[60]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; - char wk5[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - } BIT; - } DSCR; -}; - -struct st_port3 { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PODR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PIDR; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PMR; - char wk3[34]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char :1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR0; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char :1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR1; - char wk4[59]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; -}; - -struct st_port4 { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PODR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PIDR; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PMR; - char wk3[35]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char :1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR0; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char :1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR1; - char wk4[58]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; -}; - -struct st_port5 { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PODR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PIDR; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PMR; - char wk3[36]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char :1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR0; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char :1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR1; - char wk4[57]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; - char wk5[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char :3; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DSCR; -}; - -struct st_port6 { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PODR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PIDR; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PMR; - char wk3[37]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char :1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR0; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char :1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR1; - char wk4[56]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; -}; - -struct st_port7 { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PODR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PIDR; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PMR; - char wk3[38]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char :1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR0; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char :1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR1; - char wk4[55]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; -}; - -struct st_port8 { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PODR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PIDR; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PMR; - char wk3[39]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char :1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR0; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char :1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR1; - char wk4[54]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; -}; - -struct st_port9 { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PODR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PIDR; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PMR; - char wk3[40]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char :1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR0; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char :1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR1; - char wk4[53]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; - char wk5[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DSCR; -}; - -struct st_porta { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PODR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PIDR; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PMR; - char wk3[41]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char :1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR0; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char :1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR1; - char wk4[52]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; - char wk5[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DSCR; -}; - -struct st_portb { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PODR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PIDR; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PMR; - char wk3[42]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char :1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR0; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char :1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR1; - char wk4[51]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; - char wk5[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DSCR; -}; - -struct st_portc { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PODR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PIDR; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PMR; - char wk3[43]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char :1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR0; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char :1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR1; - char wk4[50]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; - char wk5[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DSCR; -}; - -struct st_portd { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PODR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PIDR; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PMR; - char wk3[44]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char :1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR0; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char :1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR1; - char wk4[49]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; - char wk5[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DSCR; -}; - -struct st_porte { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PODR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PIDR; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PMR; - char wk3[45]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR0; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char :1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR1; - char wk4[48]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; - char wk5[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DSCR; -}; - -struct st_portf { - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PODR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PIDR; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PMR; - char wk3[46]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char :1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR0; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR1; - char wk4[47]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; -}; - -struct st_portg { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PODR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PIDR; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PMR; - char wk3[47]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char :1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR0; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - unsigned char :1; - unsigned char B4:1; - unsigned char :1; - unsigned char B2:1; - unsigned char :1; - unsigned char B0:1; - } BIT; - } ODR1; - char wk4[46]; - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; - char wk5[31]; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } DSCR; -}; - -struct st_porth { - union { - unsigned char BYTE; - struct { - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - } BIT; - } PCR; -}; - -struct st_portj { - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char B5:1; - unsigned char :1; - unsigned char B3:1; - } BIT; - } PDR; - char wk0[31]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char B5:1; - unsigned char :1; - unsigned char B3:1; - } BIT; - } PODR; - char wk1[31]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char B5:1; - unsigned char :1; - unsigned char B3:1; - } BIT; - } PIDR; - char wk2[31]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char B5:1; - unsigned char :1; - unsigned char B3:1; - } BIT; - } PMR; - char wk3[49]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char B6:1; - } BIT; - } ODR0; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char B2:1; - } BIT; - } ODR1; - char wk4[44]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char B5:1; - unsigned char :1; - unsigned char B3:1; - } BIT; - } PCR; -}; - -struct st_ppg0 { - union { - unsigned char BYTE; - struct { - unsigned char G3CMS:2; - unsigned char G2CMS:2; - unsigned char G1CMS:2; - unsigned char G0CMS:2; - } BIT; - } PCR; - union { - unsigned char BYTE; - struct { - unsigned char G3INV:1; - unsigned char G2INV:1; - unsigned char G1INV:1; - unsigned char G0INV:1; - unsigned char G3NOV:1; - unsigned char G2NOV:1; - unsigned char G1NOV:1; - unsigned char G0NOV:1; - } BIT; - } PMR; - union { - unsigned char BYTE; - struct { - unsigned char NDER15:1; - unsigned char NDER14:1; - unsigned char NDER13:1; - unsigned char NDER12:1; - unsigned char NDER11:1; - unsigned char NDER10:1; - unsigned char NDER9:1; - unsigned char NDER8:1; - } BIT; - } NDERH; - union { - unsigned char BYTE; - struct { - unsigned char NDER7:1; - unsigned char NDER6:1; - unsigned char NDER5:1; - unsigned char NDER4:1; - unsigned char NDER3:1; - unsigned char NDER2:1; - unsigned char NDER1:1; - unsigned char NDER0:1; - } BIT; - } NDERL; - union { - unsigned char BYTE; - struct { - unsigned char POD15:1; - unsigned char POD14:1; - unsigned char POD13:1; - unsigned char POD12:1; - unsigned char POD11:1; - unsigned char POD10:1; - unsigned char POD9:1; - unsigned char POD8:1; - } BIT; - } PODRH; - union { - unsigned char BYTE; - struct { - unsigned char POD7:1; - unsigned char POD6:1; - unsigned char POD5:1; - unsigned char POD4:1; - unsigned char POD3:1; - unsigned char POD2:1; - unsigned char POD1:1; - unsigned char POD0:1; - } BIT; - } PODRL; - union { - unsigned char BYTE; - struct { - unsigned char NDR15:1; - unsigned char NDR14:1; - unsigned char NDR13:1; - unsigned char NDR12:1; - unsigned char NDR11:1; - unsigned char NDR10:1; - unsigned char NDR9:1; - unsigned char NDR8:1; - } BIT; - } NDRH; - union { - unsigned char BYTE; - struct { - unsigned char NDR7:1; - unsigned char NDR6:1; - unsigned char NDR5:1; - unsigned char NDR4:1; - unsigned char NDR3:1; - unsigned char NDR2:1; - unsigned char NDR1:1; - unsigned char NDR0:1; - } BIT; - } NDRL; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char NDR11:1; - unsigned char NDR10:1; - unsigned char NDR9:1; - unsigned char NDR8:1; - } BIT; - } NDRH2; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char NDR3:1; - unsigned char NDR2:1; - unsigned char NDR1:1; - unsigned char NDR0:1; - } BIT; - } NDRL2; -}; - -struct st_ppg1 { - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char PTRSL:1; - } BIT; - } PTRSLR; - char wk0[5]; - union { - unsigned char BYTE; - struct { - unsigned char G3CMS:2; - unsigned char G2CMS:2; - unsigned char G1CMS:2; - unsigned char G0CMS:2; - } BIT; - } PCR; - union { - unsigned char BYTE; - struct { - unsigned char G3INV:1; - unsigned char G2INV:1; - unsigned char G1INV:1; - unsigned char G0INV:1; - unsigned char G3NOV:1; - unsigned char G2NOV:1; - unsigned char G1NOV:1; - unsigned char G0NOV:1; - } BIT; - } PMR; - union { - unsigned char BYTE; - struct { - unsigned char NDER31:1; - unsigned char NDER30:1; - unsigned char NDER29:1; - unsigned char NDER28:1; - unsigned char NDER27:1; - unsigned char NDER26:1; - unsigned char NDER25:1; - unsigned char NDER24:1; - } BIT; - } NDERH; - union { - unsigned char BYTE; - struct { - unsigned char NDER23:1; - unsigned char NDER22:1; - unsigned char NDER21:1; - unsigned char NDER20:1; - unsigned char NDER19:1; - unsigned char NDER18:1; - unsigned char NDER17:1; - unsigned char NDER16:1; - } BIT; - } NDERL; - union { - unsigned char BYTE; - struct { - unsigned char POD31:1; - unsigned char POD30:1; - unsigned char POD29:1; - unsigned char POD28:1; - unsigned char POD27:1; - unsigned char POD26:1; - unsigned char POD25:1; - unsigned char POD24:1; - } BIT; - } PODRH; - union { - unsigned char BYTE; - struct { - unsigned char POD23:1; - unsigned char POD22:1; - unsigned char POD21:1; - unsigned char POD20:1; - unsigned char POD19:1; - unsigned char POD18:1; - unsigned char POD17:1; - unsigned char POD16:1; - } BIT; - } PODRL; - union { - unsigned char BYTE; - struct { - unsigned char NDR31:1; - unsigned char NDR30:1; - unsigned char NDR29:1; - unsigned char NDR28:1; - unsigned char NDR27:1; - unsigned char NDR26:1; - unsigned char NDR25:1; - unsigned char NDR24:1; - } BIT; - } NDRH; - union { - unsigned char BYTE; - struct { - unsigned char NDR23:1; - unsigned char NDR22:1; - unsigned char NDR21:1; - unsigned char NDR20:1; - unsigned char NDR19:1; - unsigned char NDR18:1; - unsigned char NDR17:1; - unsigned char NDR16:1; - } BIT; - } NDRL; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char NDR27:1; - unsigned char NDR26:1; - unsigned char NDR25:1; - unsigned char NDR24:1; - } BIT; - } NDRH2; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char NDR19:1; - unsigned char NDR18:1; - unsigned char NDR17:1; - unsigned char NDR16:1; - } BIT; - } NDRL2; -}; - -struct st_riic0 { - union { - unsigned char BYTE; - struct { - unsigned char ICE:1; - unsigned char IICRST:1; - unsigned char CLO:1; - unsigned char SOWP:1; - unsigned char SCLO:1; - unsigned char SDAO:1; - unsigned char SCLI:1; - unsigned char SDAI:1; - } BIT; - } ICCR1; - union { - unsigned char BYTE; - struct { - unsigned char BBSY:1; - unsigned char MST:1; - unsigned char TRS:1; - unsigned char :1; - unsigned char SP:1; - unsigned char RS:1; - unsigned char ST:1; - } BIT; - } ICCR2; - union { - unsigned char BYTE; - struct { - unsigned char MTWP:1; - unsigned char CKS:3; - unsigned char BCWP:1; - unsigned char BC:3; - } BIT; - } ICMR1; - union { - unsigned char BYTE; - struct { - unsigned char DLCS:1; - unsigned char SDDL:3; - unsigned char :1; - unsigned char TMOH:1; - unsigned char TMOL:1; - unsigned char TMOS:1; - } BIT; - } ICMR2; - union { - unsigned char BYTE; - struct { - unsigned char SMBS:1; - unsigned char WAIT:1; - unsigned char RDRFS:1; - unsigned char ACKWP:1; - unsigned char ACKBT:1; - unsigned char ACKBR:1; - unsigned char NF:2; - } BIT; - } ICMR3; - union { - unsigned char BYTE; - struct { - unsigned char FMPE:1; - unsigned char SCLE:1; - unsigned char NFE:1; - unsigned char NACKE:1; - unsigned char SALE:1; - unsigned char NALE:1; - unsigned char MALE:1; - unsigned char TMOE:1; - } BIT; - } ICFER; - union { - unsigned char BYTE; - struct { - unsigned char HOAE:1; - unsigned char :1; - unsigned char DIDE:1; - unsigned char :1; - unsigned char GCAE:1; - unsigned char SAR2E:1; - unsigned char SAR1E:1; - unsigned char SAR0E:1; - } BIT; - } ICSER; - union { - unsigned char BYTE; - struct { - unsigned char TIE:1; - unsigned char TEIE:1; - unsigned char RIE:1; - unsigned char NAKIE:1; - unsigned char SPIE:1; - unsigned char STIE:1; - unsigned char ALIE:1; - unsigned char TMOIE:1; - } BIT; - } ICIER; - union { - unsigned char BYTE; - struct { - unsigned char HOA:1; - unsigned char :1; - unsigned char DID:1; - unsigned char :1; - unsigned char GCA:1; - unsigned char AAS2:1; - unsigned char AAS1:1; - unsigned char AAS0:1; - } BIT; - } ICSR1; - union { - unsigned char BYTE; - struct { - unsigned char TDRE:1; - unsigned char TEND:1; - unsigned char RDRF:1; - unsigned char NACKF:1; - unsigned char STOP:1; - unsigned char START:1; - unsigned char AL:1; - unsigned char TMOF:1; - } BIT; - } ICSR2; - union { - unsigned char BYTE; - struct { - unsigned char SVA:7; - unsigned char SVA0:1; - } BIT; - } SARL0; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char SVA:2; - unsigned char FS:1; - } BIT; - } SARU0; - union { - unsigned char BYTE; - struct { - unsigned char SVA:7; - unsigned char SVA0:1; - } BIT; - } SARL1; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char SVA:2; - unsigned char FS:1; - } BIT; - } SARU1; - union { - unsigned char BYTE; - struct { - unsigned char SVA:7; - unsigned char SVA0:1; - } BIT; - } SARL2; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char SVA:2; - unsigned char FS:1; - } BIT; - } SARU2; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char BRL:5; - } BIT; - } ICBRL; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char BRH:5; - } BIT; - } ICBRH; - unsigned char ICDRT; - unsigned char ICDRR; -}; - -struct st_riic1 { - union { - unsigned char BYTE; - struct { - unsigned char ICE:1; - unsigned char IICRST:1; - unsigned char CLO:1; - unsigned char SOWP:1; - unsigned char SCLO:1; - unsigned char SDAO:1; - unsigned char SCLI:1; - unsigned char SDAI:1; - } BIT; - } ICCR1; - union { - unsigned char BYTE; - struct { - unsigned char BBSY:1; - unsigned char MST:1; - unsigned char TRS:1; - unsigned char :1; - unsigned char SP:1; - unsigned char RS:1; - unsigned char ST:1; - } BIT; - } ICCR2; - union { - unsigned char BYTE; - struct { - unsigned char MTWP:1; - unsigned char CKS:3; - unsigned char BCWP:1; - unsigned char BC:3; - } BIT; - } ICMR1; - union { - unsigned char BYTE; - struct { - unsigned char DLCS:1; - unsigned char SDDL:3; - unsigned char :1; - unsigned char TMOH:1; - unsigned char TMOL:1; - unsigned char TMOS:1; - } BIT; - } ICMR2; - union { - unsigned char BYTE; - struct { - unsigned char SMBS:1; - unsigned char WAIT:1; - unsigned char RDRFS:1; - unsigned char ACKWP:1; - unsigned char ACKBT:1; - unsigned char ACKBR:1; - unsigned char NF:2; - } BIT; - } ICMR3; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char SCLE:1; - unsigned char NFE:1; - unsigned char NACKE:1; - unsigned char SALE:1; - unsigned char NALE:1; - unsigned char MALE:1; - unsigned char TMOE:1; - } BIT; - } ICFER; - union { - unsigned char BYTE; - struct { - unsigned char HOAE:1; - unsigned char :1; - unsigned char DIDE:1; - unsigned char :1; - unsigned char GCAE:1; - unsigned char SAR2E:1; - unsigned char SAR1E:1; - unsigned char SAR0E:1; - } BIT; - } ICSER; - union { - unsigned char BYTE; - struct { - unsigned char TIE:1; - unsigned char TEIE:1; - unsigned char RIE:1; - unsigned char NAKIE:1; - unsigned char SPIE:1; - unsigned char STIE:1; - unsigned char ALIE:1; - unsigned char TMOIE:1; - } BIT; - } ICIER; - union { - unsigned char BYTE; - struct { - unsigned char HOA:1; - unsigned char :1; - unsigned char DID:1; - unsigned char :1; - unsigned char GCA:1; - unsigned char AAS2:1; - unsigned char AAS1:1; - unsigned char AAS0:1; - } BIT; - } ICSR1; - union { - unsigned char BYTE; - struct { - unsigned char TDRE:1; - unsigned char TEND:1; - unsigned char RDRF:1; - unsigned char NACKF:1; - unsigned char STOP:1; - unsigned char START:1; - unsigned char AL:1; - unsigned char TMOF:1; - } BIT; - } ICSR2; - union { - unsigned char BYTE; - struct { - unsigned char SVA:7; - unsigned char SVA0:1; - } BIT; - } SARL0; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char SVA:2; - unsigned char FS:1; - } BIT; - } SARU0; - union { - unsigned char BYTE; - struct { - unsigned char SVA:7; - unsigned char SVA0:1; - } BIT; - } SARL1; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char SVA:2; - unsigned char FS:1; - } BIT; - } SARU1; - union { - unsigned char BYTE; - struct { - unsigned char SVA:7; - unsigned char SVA0:1; - } BIT; - } SARL2; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char SVA:2; - unsigned char FS:1; - } BIT; - } SARU2; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char BRL:5; - } BIT; - } ICBRL; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char BRH:5; - } BIT; - } ICBRH; - unsigned char ICDRT; - unsigned char ICDRR; -}; - -struct st_rspi { - union { - unsigned char BYTE; - struct { - unsigned char SPRIE:1; - unsigned char SPE:1; - unsigned char SPTIE:1; - unsigned char SPEIE:1; - unsigned char MSTR:1; - unsigned char MODFEN:1; - unsigned char TXMD:1; - unsigned char SPMS:1; - } BIT; - } SPCR; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char SSL3P:1; - unsigned char SSL2P:1; - unsigned char SSL1P:1; - unsigned char SSL0P:1; - } BIT; - } SSLP; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char MOIFE:1; - unsigned char MOIFV:1; - unsigned char :1; - unsigned char SPOM:1; - unsigned char SPLP2:1; - unsigned char SPLP:1; - } BIT; - } SPPCR; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char PERF:1; - unsigned char MODF:1; - unsigned char IDLNF:1; - unsigned char OVRF:1; - } BIT; - } SPSR; - unsigned long SPDR; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char SPSLN:3; - } BIT; - } SPSCR; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char SPECM:3; - unsigned char :1; - unsigned char SPCP:3; - } BIT; - } SPSSR; - union { - unsigned char BYTE; - struct { - unsigned char SPR7:1; - unsigned char SPR6:1; - unsigned char SPR5:1; - unsigned char SPR4:1; - unsigned char SPR3:1; - unsigned char SPR2:1; - unsigned char SPR1:1; - unsigned char SPR0:1; - } BIT; - } SPBR; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char SPLW:1; - unsigned char SPRDTD:1; - unsigned char SLSEL:2; - unsigned char SPFC:2; - } BIT; - } SPDCR; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char SCKDL:3; - } BIT; - } SPCKD; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char SLNDL:3; - } BIT; - } SSLND; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char SPNDL:3; - } BIT; - } SPND; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char PTE:1; - unsigned char SPIIE:1; - unsigned char SPOE:1; - unsigned char SPPE:1; - } BIT; - } SPCR2; - union { - unsigned short WORD; - struct { - unsigned short SCKDEN:1; - unsigned short SLNDEN:1; - unsigned short SPNDEN:1; - unsigned short LSBF:1; - unsigned short SPB:4; - unsigned short SSLKP:1; - unsigned short SSLA:3; - unsigned short BRDV:2; - unsigned short CPOL:1; - unsigned short CPHA:1; - } BIT; - } SPCMD0; - union { - unsigned short WORD; - struct { - unsigned short SCKDEN:1; - unsigned short SLNDEN:1; - unsigned short SPNDEN:1; - unsigned short LSBF:1; - unsigned short SPB:4; - unsigned short SSLKP:1; - unsigned short SSLA:3; - unsigned short BRDV:2; - unsigned short CPOL:1; - unsigned short CPHA:1; - } BIT; - } SPCMD1; - union { - unsigned short WORD; - struct { - unsigned short SCKDEN:1; - unsigned short SLNDEN:1; - unsigned short SPNDEN:1; - unsigned short LSBF:1; - unsigned short SPB:4; - unsigned short SSLKP:1; - unsigned short SSLA:3; - unsigned short BRDV:2; - unsigned short CPOL:1; - unsigned short CPHA:1; - } BIT; - } SPCMD2; - union { - unsigned short WORD; - struct { - unsigned short SCKDEN:1; - unsigned short SLNDEN:1; - unsigned short SPNDEN:1; - unsigned short LSBF:1; - unsigned short SPB:4; - unsigned short SSLKP:1; - unsigned short SSLA:3; - unsigned short BRDV:2; - unsigned short CPOL:1; - unsigned short CPHA:1; - } BIT; - } SPCMD3; - union { - unsigned short WORD; - struct { - unsigned short SCKDEN:1; - unsigned short SLNDEN:1; - unsigned short SPNDEN:1; - unsigned short LSBF:1; - unsigned short SPB:4; - unsigned short SSLKP:1; - unsigned short SSLA:3; - unsigned short BRDV:2; - unsigned short CPOL:1; - unsigned short CPHA:1; - } BIT; - } SPCMD4; - union { - unsigned short WORD; - struct { - unsigned short SCKDEN:1; - unsigned short SLNDEN:1; - unsigned short SPNDEN:1; - unsigned short LSBF:1; - unsigned short SPB:4; - unsigned short SSLKP:1; - unsigned short SSLA:3; - unsigned short BRDV:2; - unsigned short CPOL:1; - unsigned short CPHA:1; - } BIT; - } SPCMD5; - union { - unsigned short WORD; - struct { - unsigned short SCKDEN:1; - unsigned short SLNDEN:1; - unsigned short SPNDEN:1; - unsigned short LSBF:1; - unsigned short SPB:4; - unsigned short SSLKP:1; - unsigned short SSLA:3; - unsigned short BRDV:2; - unsigned short CPOL:1; - unsigned short CPHA:1; - } BIT; - } SPCMD6; - union { - unsigned short WORD; - struct { - unsigned short SCKDEN:1; - unsigned short SLNDEN:1; - unsigned short SPNDEN:1; - unsigned short LSBF:1; - unsigned short SPB:4; - unsigned short SSLKP:1; - unsigned short SSLA:3; - unsigned short BRDV:2; - unsigned short CPOL:1; - unsigned short CPHA:1; - } BIT; - } SPCMD7; -}; - -struct st_rtc { - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char F1HZ:1; - unsigned char F2HZ:1; - unsigned char F4HZ:1; - unsigned char F8HZ:1; - unsigned char F16HZ:1; - unsigned char F32HZ:1; - unsigned char F64HZ:1; - } BIT; - } R64CNT; - char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char SEC10:3; - unsigned char SEC1:4; - } BIT; - } RSECCNT; - char wk1[1]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char MIN10:3; - unsigned char MIN1:4; - } BIT; - } RMINCNT; - char wk2[1]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char PM:1; - unsigned char HR10:2; - unsigned char HR1:4; - } BIT; - } RHRCNT; - char wk3[1]; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char DAYW:3; - } BIT; - } RWKCNT; - char wk4[1]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char DATE10:2; - unsigned char DATE1:4; - } BIT; - } RDAYCNT; - char wk5[1]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char MON10:1; - unsigned char MON1:4; - } BIT; - } RMONCNT; - char wk6[1]; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short YR10:4; - unsigned short YR1:4; - } BIT; - } RYRCNT; - union { - unsigned char BYTE; - struct { - unsigned char ENB:1; - unsigned char SEC10:3; - unsigned char SEC1:4; - } BIT; - } RSECAR; - char wk7[1]; - union { - unsigned char BYTE; - struct { - unsigned char ENB:1; - unsigned char MIN10:3; - unsigned char MIN1:4; - } BIT; - } RMINAR; - char wk8[1]; - union { - unsigned char BYTE; - struct { - unsigned char ENB:1; - unsigned char PM:1; - unsigned char HR10:2; - unsigned char HR1:4; - } BIT; - } RHRAR; - char wk9[1]; - union { - unsigned char BYTE; - struct { - unsigned char ENB:1; - unsigned char :4; - unsigned char DAYW:3; - } BIT; - } RWKAR; - char wk10[1]; - union { - unsigned char BYTE; - struct { - unsigned char ENB:1; - unsigned char :1; - unsigned char DATE10:2; - unsigned char DATE1:4; - } BIT; - } RDAYAR; - char wk11[1]; - union { - unsigned char BYTE; - struct { - unsigned char ENB:1; - unsigned char :2; - unsigned char MON10:1; - unsigned char MON1:4; - } BIT; - } RMONAR; - char wk12[1]; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short YR10:4; - unsigned short YR1:4; - } BIT; - } RYRAR; - union { - unsigned char BYTE; - struct { - unsigned char ENB:1; - } BIT; - } RYRAREN; - char wk13[3]; - union { - unsigned char BYTE; - struct { - unsigned char PES:4; - unsigned char :1; - unsigned char PIE:1; - unsigned char CIE:1; - unsigned char AIE:1; - } BIT; - } RCR1; - char wk14[1]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char HR24:1; - unsigned char AADJP:1; - unsigned char AADJE:1; - unsigned char RTCOE:1; - unsigned char ADJ30:1; - unsigned char RESET:1; - unsigned char START:1; - } BIT; - } RCR2; - char wk15[1]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char RTCEN:1; - } BIT; - } RCR3; - char wk16[1]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char RCKSEL:1; - } BIT; - } RCR4; - char wk17[1]; - union { - unsigned short WORD; - struct { - unsigned short :15; - unsigned short RFC:1; - } BIT; - } RFRH; - union { - unsigned short WORD; - struct { - unsigned short RFC:16; - } BIT; - } RFRL; - union { - unsigned char BYTE; - struct { - unsigned char PMADJ:2; - unsigned char ADJ:6; - } BIT; - } RADJ; - char wk18[17]; - union { - unsigned char BYTE; - struct { - unsigned char TCEN:1; - unsigned char :1; - unsigned char TCNF:2; - unsigned char :1; - unsigned char TCST:1; - unsigned char TCCT:2; - } BIT; - } RTCCR0; - char wk19[1]; - union { - unsigned char BYTE; - struct { - unsigned char TCEN:1; - unsigned char :1; - unsigned char TCNF:2; - unsigned char :1; - unsigned char TCST:1; - unsigned char TCCT:2; - } BIT; - } RTCCR1; - char wk20[1]; - union { - unsigned char BYTE; - struct { - unsigned char TCEN:1; - unsigned char :1; - unsigned char TCNF:2; - unsigned char :1; - unsigned char TCST:1; - unsigned char TCCT:2; - } BIT; - } RTCCR2; - char wk21[13]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char SEC10:3; - unsigned char SEC1:4; - } BIT; - } RSECCP0; - char wk22[1]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char MIN10:3; - unsigned char MIN1:4; - } BIT; - } RMINCP0; - char wk23[1]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char PM:1; - unsigned char HR10:2; - unsigned char HR1:4; - } BIT; - } RHRCP0; - char wk24[3]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char DATE10:3; - unsigned char DATE1:4; - } BIT; - } RDAYCP0; - char wk25[1]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char MON10:1; - unsigned char MON1:4; - } BIT; - } RMONCP0; - char wk26[5]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char SEC10:3; - unsigned char SEC1:4; - } BIT; - } RSECCP1; - char wk27[1]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char MIN10:3; - unsigned char MIN1:4; - } BIT; - } RMINCP1; - char wk28[1]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char PM:1; - unsigned char HR10:2; - unsigned char HR1:4; - } BIT; - } RHRCP1; - char wk29[3]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char DATE10:3; - unsigned char DATE1:4; - } BIT; - } RDAYCP1; - char wk30[1]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char MON10:1; - unsigned char MON1:4; - } BIT; - } RMONCP1; - char wk31[5]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char SEC10:3; - unsigned char SEC1:4; - } BIT; - } RSECCP2; - char wk32[1]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char MIN10:3; - unsigned char MIN1:4; - } BIT; - } RMINCP2; - char wk33[1]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char PM:1; - unsigned char HR10:2; - unsigned char HR1:4; - } BIT; - } RHRCP2; - char wk34[3]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char DATE10:3; - unsigned char DATE1:4; - } BIT; - } RDAYCP2; - char wk35[1]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char MON10:1; - unsigned char MON1:4; - } BIT; - } RMONCP2; -}; - -struct st_s12ad { - union { - unsigned char BYTE; - struct { - unsigned char ADST:1; - unsigned char ADCS:1; - unsigned char :1; - unsigned char ADIE:1; - unsigned char CKS:2; - unsigned char TRGE:1; - unsigned char EXTRG:1; - } BIT; - } ADCSR; - char wk0[3]; - union { - unsigned short WORD; - struct { - unsigned short ANS0:16; - } BIT; - } ADANS0; - union { - unsigned short WORD; - struct { - unsigned short :11; - unsigned short ANS1:5; - } BIT; - } ADANS1; - union { - unsigned short WORD; - struct { - unsigned short ADS0:16; - } BIT; - } ADADS0; - union { - unsigned short WORD; - struct { - unsigned short :11; - unsigned short ADS1:5; - } BIT; - } ADADS1; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char ADC:2; - } BIT; - } ADADC; - char wk1[1]; - union { - unsigned short WORD; - struct { - unsigned short ADRFMT:1; - unsigned short :9; - unsigned short ACE:1; - } BIT; - } ADCER; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char ADSTRS:4; - } BIT; - } ADSTRGR; - char wk2[1]; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short OCS:1; - unsigned short TSS:1; - unsigned short :6; - unsigned short OCSAD:1; - unsigned short TSSAD:1; - } BIT; - } ADEXICR; - char wk3[6]; - unsigned short ADTSDR; - unsigned short ADOCDR; - char wk4[2]; - unsigned short ADDR0; - unsigned short ADDR1; - unsigned short ADDR2; - unsigned short ADDR3; - unsigned short ADDR4; - unsigned short ADDR5; - unsigned short ADDR6; - unsigned short ADDR7; - unsigned short ADDR8; - unsigned short ADDR9; - unsigned short ADDR10; - unsigned short ADDR11; - unsigned short ADDR12; - unsigned short ADDR13; - unsigned short ADDR14; - unsigned short ADDR15; - unsigned short ADDR16; - unsigned short ADDR17; - unsigned short ADDR18; - unsigned short ADDR19; - unsigned short ADDR20; - char wk5[38]; - union { - unsigned short WORD; - struct { - unsigned short SST2:8; - } BIT; - } ADSSTR23; -}; - -struct st_sci0 { - union { - unsigned char BYTE; - struct { - unsigned char CM:1; - unsigned char CHR:1; - unsigned char PE:1; - unsigned char PM:1; - unsigned char STOP:1; - unsigned char MP:1; - unsigned char CKS:2; - } BIT; - } SMR; - unsigned char BRR; - union { - unsigned char BYTE; - struct { - unsigned char TIE:1; - unsigned char RIE:1; - unsigned char TE:1; - unsigned char RE:1; - unsigned char MPIE:1; - unsigned char TEIE:1; - unsigned char CKE:2; - } BIT; - } SCR; - unsigned char TDR; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char ORER:1; - unsigned char FER:1; - unsigned char PER:1; - unsigned char TEND:1; - unsigned char MPB:1; - unsigned char MPBT:1; - } BIT; - } SSR; - unsigned char RDR; - union { - unsigned char BYTE; - struct { - unsigned char BCP2:1; - unsigned char :3; - unsigned char SDIR:1; - unsigned char SINV:1; - unsigned char :1; - unsigned char SMIF:1; - } BIT; - } SCMR; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char NFEN:1; - unsigned char ABCS:1; - unsigned char :3; - unsigned char ACS0:1; - } BIT; - } SEMR; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char NFCS:3; - } BIT; - } SNFR; - union { - unsigned char BYTE; - struct { - unsigned char IICDL:5; - unsigned char :2; - unsigned char IICM:1; - } BIT; - } SIMR1; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char IICACKT:1; - unsigned char :3; - unsigned char IICCSC:1; - unsigned char IICINTM:1; - } BIT; - } SIMR2; - union { - unsigned char BYTE; - struct { - unsigned char IICSCLS:2; - unsigned char IICSDAS:2; - unsigned char IICSTIF:1; - unsigned char IICSTPREQ:1; - unsigned char IICRSTAREQ:1; - unsigned char IICSTAREQ:1; - } BIT; - } SIMR3; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char IICACKR:1; - } BIT; - } SISR; - union { - unsigned char BYTE; - struct { - unsigned char CKPH:1; - unsigned char CKPOL:1; - unsigned char :1; - unsigned char MFF:1; - unsigned char :1; - unsigned char MSS:1; - unsigned char CTSE:1; - unsigned char SSE:1; - } BIT; - } SPMR; -}; - -struct st_sci7 { - union { - unsigned char BYTE; - struct { - unsigned char CM:1; - unsigned char CHR:1; - unsigned char PE:1; - unsigned char PM:1; - unsigned char STOP:1; - unsigned char MP:1; - unsigned char CKS:2; - } BIT; - } SMR; - unsigned char BRR; - union { - unsigned char BYTE; - struct { - unsigned char TIE:1; - unsigned char RIE:1; - unsigned char TE:1; - unsigned char RE:1; - unsigned char MPIE:1; - unsigned char TEIE:1; - unsigned char CKE:2; - } BIT; - } SCR; - unsigned char TDR; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char ORER:1; - unsigned char FER:1; - unsigned char PER:1; - unsigned char TEND:1; - unsigned char MPB:1; - unsigned char MPBT:1; - } BIT; - } SSR; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char MPB:1; - unsigned char MPBT:1; - } BIT; - } RDR; - union { - unsigned char BYTE; - struct { - unsigned char BCP2:1; - unsigned char :3; - unsigned char SDIR:1; - unsigned char SINV:1; - unsigned char :1; - unsigned char SMIF:1; - } BIT; - } SCMR; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char NFEN:1; - unsigned char ABCS:1; - unsigned char :3; - unsigned char ACS0:1; - } BIT; - } SEMR; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char NFCS:3; - } BIT; - } SNFR; - union { - unsigned char BYTE; - struct { - unsigned char IICDL:5; - unsigned char :2; - unsigned char IICM:1; - } BIT; - } SIMR1; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char IICACKT:1; - unsigned char :3; - unsigned char IICCSC:1; - unsigned char IICINTM:1; - } BIT; - } SIMR2; - union { - unsigned char BYTE; - struct { - unsigned char IICSCLS:2; - unsigned char IICSDAS:2; - unsigned char IICSTIF:1; - unsigned char IICSTPREQ:1; - unsigned char IICRSTAREQ:1; - unsigned char IICSTAREQ:1; - } BIT; - } SIMR3; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char IICACKR:1; - } BIT; - } SISR; - union { - unsigned char BYTE; - struct { - unsigned char CKPH:1; - unsigned char CKPOL:1; - unsigned char :1; - unsigned char MFF:1; - unsigned char :1; - unsigned char MSS:1; - unsigned char CTSE:1; - unsigned char SSE:1; - } BIT; - } SPMR; -}; - -struct st_sci12 { - union { - unsigned char BYTE; - struct { - unsigned char CM:1; - unsigned char CHR:1; - unsigned char PE:1; - unsigned char PM:1; - unsigned char STOP:1; - unsigned char MP:1; - unsigned char CKS:2; - } BIT; - } SMR; - unsigned char BRR; - union { - unsigned char BYTE; - struct { - unsigned char TIE:1; - unsigned char RIE:1; - unsigned char TE:1; - unsigned char RE:1; - unsigned char MPIE:1; - unsigned char TEIE:1; - unsigned char CKE:2; - } BIT; - } SCR; - unsigned char TDR; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char ORER:1; - unsigned char FER:1; - unsigned char PER:1; - unsigned char TEND:1; - unsigned char MPB:1; - unsigned char MPBT:1; - } BIT; - } SSR; - unsigned char RDR; - union { - unsigned char BYTE; - struct { - unsigned char BCP2:1; - unsigned char :3; - unsigned char SDIR:1; - unsigned char SINV:1; - unsigned char :1; - unsigned char SMIF:1; - } BIT; - } SCMR; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char NFEN:1; - unsigned char ABCS:1; - unsigned char :3; - unsigned char ACS0:1; - } BIT; - } SEMR; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char NFCS:3; - } BIT; - } SNFR; - union { - unsigned char BYTE; - struct { - unsigned char IICDL:5; - unsigned char :2; - unsigned char IICM:1; - } BIT; - } SIMR1; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char IICACKT:1; - unsigned char :3; - unsigned char IICCSC:1; - unsigned char IICINTM:1; - } BIT; - } SIMR2; - union { - unsigned char BYTE; - struct { - unsigned char IICSCLS:2; - unsigned char IICSDAS:2; - unsigned char IICSTIF:1; - unsigned char IICSTPREQ:1; - unsigned char IICRSTAREQ:1; - unsigned char IICSTAREQ:1; - } BIT; - } SIMR3; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char IICACKR:1; - } BIT; - } SISR; - union { - unsigned char BYTE; - struct { - unsigned char CKPH:1; - unsigned char CKPOL:1; - unsigned char :1; - unsigned char MFF:1; - unsigned char :1; - unsigned char MSS:1; - unsigned char CTSE:1; - unsigned char SSE:1; - } BIT; - } SPMR; - char wk0[18]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char ESME:1; - } BIT; - } ESMER; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char BRME:1; - unsigned char RXDSF:1; - unsigned char SFSF:1; - } BIT; - } CR0; - union { - unsigned char BYTE; - struct { - unsigned char PIBS:3; - unsigned char PIBE:1; - unsigned char CF1DS:2; - unsigned char CF0RE:1; - unsigned char BFE:1; - } BIT; - } CR1; - union { - unsigned char BYTE; - struct { - unsigned char RTS:2; - unsigned char BCCS:2; - unsigned char :1; - unsigned char DFCS:3; - } BIT; - } CR2; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char SDST:1; - } BIT; - } CR3; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char SHARPS:1; - unsigned char :2; - unsigned char RXDXPS:1; - unsigned char TXDXPS:1; - } BIT; - } PCR; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char AEDIE:1; - unsigned char BCDIE:1; - unsigned char PIBDIE:1; - unsigned char CF1MIE:1; - unsigned char CF0MIE:1; - unsigned char BFDIE:1; - } BIT; - } ICR; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char AEDF:1; - unsigned char BCDF:1; - unsigned char PIBDF:1; - unsigned char CF1MF:1; - unsigned char CF0MF:1; - unsigned char BFDF:1; - } BIT; - } STR; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char AEDCL:1; - unsigned char BCDCL:1; - unsigned char PIBDCL:1; - unsigned char CF1MCL:1; - unsigned char CF0MCL:1; - unsigned char BFDCL:1; - } BIT; - } STCR; - unsigned char CF0DR; - union { - unsigned char BYTE; - struct { - unsigned char CF0CE7:1; - unsigned char CF0CE6:1; - unsigned char CF0CE5:1; - unsigned char CF0CE4:1; - unsigned char CF0CE3:1; - unsigned char CF0CE2:1; - unsigned char CF0CE1:1; - unsigned char CF0CE0:1; - } BIT; - } CF0CR; - unsigned char CF0RR; - unsigned char PCF1DR; - unsigned char SCF1DR; - union { - unsigned char BYTE; - struct { - unsigned char CF1CE7:1; - unsigned char CF1CE6:1; - unsigned char CF1CE5:1; - unsigned char CF1CE4:1; - unsigned char CF1CE3:1; - unsigned char CF1CE2:1; - unsigned char CF1CE1:1; - unsigned char CF1CE0:1; - } BIT; - } CF1CR; - unsigned char CF1RR; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char TCST:1; - } BIT; - } TCR; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char TCSS:3; - unsigned char TWRC:1; - unsigned char :1; - unsigned char TOMS:2; - } BIT; - } TMR; - unsigned char TPRE; - unsigned char TCNT; -}; - -struct st_smci0 { - union { - unsigned char BYTE; - struct { - unsigned char GM:1; - unsigned char BCLK:1; - unsigned char PE:1; - unsigned char PM:1; - unsigned char BCP:2; - unsigned char CKS:2; - } BIT; - } SMR; - unsigned char BRR; - union { - unsigned char BYTE; - struct { - unsigned char TIE:1; - unsigned char RIE:1; - unsigned char TE:1; - unsigned char RE:1; - unsigned char MPIE:1; - unsigned char TEIE:1; - unsigned char CKE:2; - } BIT; - } SCR; - unsigned char TDR; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char ORER:1; - unsigned char ERS:1; - unsigned char PER:1; - unsigned char TEND:1; - unsigned char MPB:1; - unsigned char MPBT:1; - } BIT; - } SSR; - unsigned char RDR; - union { - unsigned char BYTE; - struct { - unsigned char BCP2:1; - unsigned char :3; - unsigned char SDIR:1; - unsigned char SINV:1; - unsigned char :1; - unsigned char SMIF:1; - } BIT; - } SCMR; -}; - -struct st_smci7 { - union { - unsigned char BYTE; - struct { - unsigned char GM:1; - unsigned char BCLK:1; - unsigned char PE:1; - unsigned char PM:1; - unsigned char BCP:2; - unsigned char CKS:2; - } BIT; - } SMR; - unsigned char BRR; - union { - unsigned char BYTE; - struct { - unsigned char TIE:1; - unsigned char RIE:1; - unsigned char TE:1; - unsigned char RE:1; - unsigned char MPIE:1; - unsigned char TEIE:1; - unsigned char CKE:2; - } BIT; - } SCR; - unsigned char TDR; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char ORER:1; - unsigned char ERS:1; - unsigned char PER:1; - unsigned char TEND:1; - } BIT; - } SSR; - unsigned char RDR; - union { - unsigned char BYTE; - struct { - unsigned char BCP2:1; - unsigned char :3; - unsigned char SDIR:1; - unsigned char SINV:1; - unsigned char :1; - unsigned char SMIF:1; - } BIT; - } SCMR; -}; - -struct st_system { - union { - unsigned short WORD; - struct { - unsigned short :15; - unsigned short MD:1; - } BIT; - } MDMONR; - union { - unsigned short WORD; - struct { - unsigned short :10; - unsigned short UBTS:1; - unsigned short BOTS:1; - unsigned short :2; - unsigned short EXB:1; - unsigned short IROM:1; - } BIT; - } MDSR; - char wk0[2]; - union { - unsigned short WORD; - struct { - unsigned short KEY:8; - unsigned short :6; - unsigned short EXBE:1; - unsigned short ROME:1; - } BIT; - } SYSCR0; - union { - unsigned short WORD; - struct { - unsigned short :15; - unsigned short RAME:1; - } BIT; - } SYSCR1; - char wk1[2]; - union { - unsigned short WORD; - struct { - unsigned short SSBY:1; - unsigned short OPE:1; - } BIT; - } SBYCR; - char wk2[2]; - union { - unsigned long LONG; - struct { - unsigned long ACSE:1; - unsigned long :1; - unsigned long MSTPA29:1; - unsigned long MSTPA28:1; - unsigned long MSTPA27:1; - unsigned long :2; - unsigned long MSTPA24:1; - unsigned long MSTPA23:1; - unsigned long :3; - unsigned long MSTPA19:1; - unsigned long :1; - unsigned long MSTPA17:1; - unsigned long :1; - unsigned long MSTPA15:1; - unsigned long MSTPA14:1; - unsigned long MSTPA13:1; - unsigned long MSTPA12:1; - unsigned long MSTPA11:1; - unsigned long MSTPA10:1; - unsigned long MSTPA9:1; - unsigned long :3; - unsigned long MSTPA5:1; - unsigned long MSTPA4:1; - } BIT; - } MSTPCRA; - union { - unsigned long LONG; - struct { - unsigned long MSTPB31:1; - unsigned long MSTPB30:1; - unsigned long MSTPB29:1; - unsigned long MSTPB28:1; - unsigned long MSTPB27:1; - unsigned long MSTPB26:1; - unsigned long MSTPB25:1; - unsigned long MSTPB24:1; - unsigned long MSTPB23:1; - unsigned long :1; - unsigned long MSTPB21:1; - unsigned long MSTPB20:1; - unsigned long MSTPB19:1; - unsigned long MSTPB18:1; - unsigned long MSTPB17:1; - unsigned long MSTPB16:1; - unsigned long MSTPB15:1; - unsigned long :6; - unsigned long MSTPB8:1; - unsigned long :3; - unsigned long MSTPB4:1; - unsigned long :1; - unsigned long MSTPB2:1; - unsigned long MSTPB1:1; - unsigned long MSTPB0:1; - } BIT; - } MSTPCRB; - union { - unsigned long LONG; - struct { - unsigned long :4; - unsigned long MSTPC27:1; - unsigned long MSTPC26:1; - unsigned long MSTPC25:1; - unsigned long MSTPC24:1; - unsigned long :1; - unsigned long MSTPC22:1; - unsigned long :2; - unsigned long MSTPC19:1; - unsigned long MSTPC18:1; - unsigned long MSTPC17:1; - unsigned long MSTPC16:1; - unsigned long :14; - unsigned long MSTPC1:1; - unsigned long MSTPC0:1; - } BIT; - } MSTPCRC; - char wk3[4]; - union { - unsigned long LONG; - struct { - unsigned long FCK:4; - unsigned long ICK:4; - unsigned long PSTOP1:1; - unsigned long PSTOP0:1; - unsigned long :2; - unsigned long BCK:4; - unsigned long PCKA:4; - unsigned long PCKB:4; - } BIT; - } SCKCR; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short UCK:4; - unsigned short IEBCK:4; - } BIT; - } SCKCR2; - union { - unsigned short WORD; - struct { - unsigned short :5; - unsigned short CKSEL:3; - } BIT; - } SCKCR3; - union { - unsigned short WORD; - struct { - unsigned short :2; - unsigned short STC:6; - unsigned short :6; - unsigned short PLIDIV:2; - } BIT; - } PLLCR; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char PLLEN:1; - } BIT; - } PLLCR2; - char wk4[5]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char BCLKDIV:1; - } BIT; - } BCKCR; - char wk5[1]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char MOSTP:1; - } BIT; - } MOSCCR; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char SOSTP:1; - } BIT; - } SOSCCR; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char LCSTP:1; - } BIT; - } LOCOCR; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char ILCSTP:1; - } BIT; - } ILOCOCR; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char HCSTP:1; - } BIT; - } HOCOCR; - char wk6[9]; - union { - unsigned char BYTE; - struct { - unsigned char OSTDE:1; - unsigned char :6; - unsigned char OSTDIE:1; - } BIT; - } OSTDCR; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char OSTDF:1; - } BIT; - } OSTDSR; - char wk7[94]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char OPCMTSF:1; - unsigned char :1; - unsigned char OPCM:3; - } BIT; - } OPCCR; - union { - unsigned char BYTE; - struct { - unsigned char RSTCKEN:1; - unsigned char :4; - unsigned char RSTCKSEL:3; - } BIT; - } RSTCKCR; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char MSTS:5; - } BIT; - } MOSCWTCR; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char SSTS:5; - } BIT; - } SOSCWTCR; - char wk8[2]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char PSTS:5; - } BIT; - } PLLWTCR; - char wk9[25]; - union { - unsigned char BYTE; - struct { - unsigned char :5; - unsigned char SWRF:1; - unsigned char WDTRF:1; - unsigned char IWTDRF:1; - } BIT; - } RSTSR2; - char wk10[1]; - unsigned short SWRR; - char wk11[28]; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char LVD1IDTSEL:2; - } BIT; - } LVD1CR1; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char LVD1MON:1; - unsigned char LVD1DET:1; - } BIT; - } LVD1SR; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char LVD2IDTSEL:2; - } BIT; - } LVD2CR1; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char LVD2MON:1; - unsigned char LVD2DET:1; - } BIT; - } LVD2SR; - char wk12[794]; - union { - unsigned short WORD; - struct { - unsigned short PRKEY:8; - unsigned short :4; - unsigned short PRC3:1; - unsigned short :1; - unsigned short PRC1:1; - unsigned short PRC0:1; - } BIT; - } PRCR; - char wk13[48768]; - union { - unsigned char BYTE; - struct { - unsigned char DPSBY:1; - unsigned char IOKEEP:1; - unsigned char :4; - unsigned char DEEPCUT:2; - } BIT; - } DPSBYCR; - char wk14[1]; - union { - unsigned char BYTE; - struct { - unsigned char DIRQ7E:1; - unsigned char DIRQ6E:1; - unsigned char DIRQ5E:1; - unsigned char DIRQ4E:1; - unsigned char DIRQ3E:1; - unsigned char DIRQ2E:1; - unsigned char DIRQ1E:1; - unsigned char DIRQ0E:1; - } BIT; - } DPSIER0; - union { - unsigned char BYTE; - struct { - unsigned char DIRQ15E:1; - unsigned char DIRQ14E:1; - unsigned char DIRQ13E:1; - unsigned char DIRQ12E:1; - unsigned char DIRQ11E:1; - unsigned char DIRQ10E:1; - unsigned char DIRQ9E:1; - unsigned char DIRQ8E:1; - } BIT; - } DPSIER1; - union { - unsigned char BYTE; - struct { - unsigned char DUSBIE:1; - unsigned char DIICCIE:1; - unsigned char DIICDIE:1; - unsigned char DNMIE:1; - unsigned char DRTCAIE:1; - unsigned char DRTCIIE:1; - unsigned char DLVD2IE:1; - unsigned char DLVD1IE:1; - } BIT; - } DPSIER2; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DCANIE:1; - } BIT; - } DPSIER3; - union { - unsigned char BYTE; - struct { - unsigned char DIRQ7F:1; - unsigned char DIRQ6F:1; - unsigned char DIRQ5F:1; - unsigned char DIRQ4F:1; - unsigned char DIRQ3F:1; - unsigned char DIRQ2F:1; - unsigned char DIRQ1F:1; - unsigned char DIRQ0F:1; - } BIT; - } DPSIFR0; - union { - unsigned char BYTE; - struct { - unsigned char DIRQ15F:1; - unsigned char DIRQ14F:1; - unsigned char DIRQ13F:1; - unsigned char DIRQ12F:1; - unsigned char DIRQ11F:1; - unsigned char DIRQ10F:1; - unsigned char DIRQ9F:1; - unsigned char DIRQ8F:1; - } BIT; - } DPSIFR1; - union { - unsigned char BYTE; - struct { - unsigned char DUSBIF:1; - unsigned char DIICCIF:1; - unsigned char DIICDIF:1; - unsigned char DNMIF:1; - unsigned char DRTCAIF:1; - unsigned char DRTCIIF:1; - unsigned char DLVD2IF:1; - unsigned char DLVD1IF:1; - } BIT; - } DPSIFR2; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DCANIF:1; - } BIT; - } DPSIFR3; - union { - unsigned char BYTE; - struct { - unsigned char DIRQ7EG:1; - unsigned char DIRQ6EG:1; - unsigned char DIRQ5EG:1; - unsigned char DIRQ4EG:1; - unsigned char DIRQ3EG:1; - unsigned char DIRQ2EG:1; - unsigned char DIRQ1EG:1; - unsigned char DIRQ0EG:1; - } BIT; - } DPSIEGR0; - union { - unsigned char BYTE; - struct { - unsigned char DIRQ15EG:1; - unsigned char DIRQ14EG:1; - unsigned char DIRQ13EG:1; - unsigned char DIRQ12EG:1; - unsigned char DIRQ11EG:1; - unsigned char DIRQ10EG:1; - unsigned char DIRQ9EG:1; - unsigned char DIRQ8EG:1; - } BIT; - } DPSIEGR1; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char DIICCEG:1; - unsigned char DIICDEG:1; - unsigned char DNMIEG:1; - unsigned char :2; - unsigned char DLVD2EG:1; - unsigned char DLVD1EG:1; - } BIT; - } DPSIEGR2; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char DCANIEG:1; - } BIT; - } DPSIEGR3; - char wk15[2]; - union { - unsigned char BYTE; - struct { - unsigned char DPSRSTF:1; - unsigned char :3; - unsigned char LVD2RF:1; - unsigned char LVD1RF:1; - unsigned char LVD0RF:1; - unsigned char PORF:1; - } BIT; - } RSTSR0; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char CWSF:1; - } BIT; - } RSTSR1; - char wk16[1]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char MOFXIN:1; - } BIT; - } MOFCR; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char HOCOPCNT:1; - } BIT; - } HOCOPCR; - char wk17[2]; - union { - unsigned char BYTE; - struct { - unsigned char :1; - unsigned char LVD2E:1; - unsigned char LVD1E:1; - } BIT; - } LVCMPCR; - union { - unsigned char BYTE; - struct { - unsigned char LVD2LVL:4; - unsigned char LVD1LVL:4; - } BIT; - } LVDLVLR; - char wk18[1]; - union { - unsigned char BYTE; - struct { - unsigned char LVD1RN:1; - unsigned char LVD1RI:1; - unsigned char LVD1FSAMP:2; - unsigned char :1; - unsigned char LVD1CMPE:1; - unsigned char LVD1DFDIS:1; - unsigned char LVD1RIE:1; - } BIT; - } LVD1CR0; - union { - unsigned char BYTE; - struct { - unsigned char LVD2RN:1; - unsigned char LVD2RI:1; - unsigned char LVD2FSAMP:2; - unsigned char :1; - unsigned char LVD2CMPE:1; - unsigned char LVD2DFDIS:1; - unsigned char LVD2RIE:1; - } BIT; - } LVD2CR0; - char wk19[1]; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char VBATTMNSEL:1; - } BIT; - } VBATTMNSELR; - union { - unsigned char BYTE; - struct { - unsigned char :7; - unsigned char VBATTMON:1; - } BIT; - } VBATTMONR; - char wk20[1]; - unsigned char DPSBKR[32]; - char wk21[1472]; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char SCK:2; - } BIT; - } SCK1; - char wk22[15]; - union { - unsigned char BYTE; - struct { - unsigned char :6; - unsigned char SCK:2; - } BIT; - } SCK2; -}; - -struct st_temps { - union { - unsigned char BYTE; - struct { - unsigned char TSEN:1; - unsigned char :2; - unsigned char TSOE:1; - } BIT; - } TSCR; -}; - -struct st_tmr0 { - union { - unsigned char BYTE; - struct { - unsigned char CMIEB:1; - unsigned char CMIEA:1; - unsigned char OVIE:1; - unsigned char CCLR:2; - } BIT; - } TCR; - char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char :3; - unsigned char ADTE:1; - unsigned char OSB:2; - unsigned char OSA:2; - } BIT; - } TCSR; - char wk1[1]; - unsigned char TCORA; - char wk2[1]; - unsigned char TCORB; - char wk3[1]; - unsigned char TCNT; - char wk4[1]; - union { - unsigned char BYTE; - struct { - unsigned char TMRIS:1; - unsigned char :2; - unsigned char CSS:2; - unsigned char CKS:3; - } BIT; - } TCCR; -}; - -struct st_tmr1 { - union { - unsigned char BYTE; - struct { - unsigned char CMIEB:1; - unsigned char CMIEA:1; - unsigned char OVIE:1; - unsigned char CCLR:2; - } BIT; - } TCR; - char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char :4; - unsigned char OSB:2; - unsigned char OSA:2; - } BIT; - } TCSR; - char wk1[1]; - unsigned char TCORA; - char wk2[1]; - unsigned char TCORB; - char wk3[1]; - unsigned char TCNT; - char wk4[1]; - union { - unsigned char BYTE; - struct { - unsigned char TMRIS:1; - unsigned char :2; - unsigned char CSS:2; - unsigned char CKS:3; - } BIT; - } TCCR; -}; - -struct st_tmr01 { - unsigned short TCORA; - unsigned short TCORB; - unsigned short TCNT; - unsigned short TCCR; -}; - -struct st_tpu0 { - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char NFCS:2; - unsigned char NFDEN:1; - unsigned char NFCEN:1; - unsigned char NFBEN:1; - unsigned char NFAEN:1; - } BIT; - } NFCR; - char wk0[7]; - union { - unsigned char BYTE; - struct { - unsigned char CCLR:3; - unsigned char CKEG:2; - unsigned char TPSC:3; - } BIT; - } TCR; - union { - unsigned char BYTE; - struct { - unsigned char ICSELD:1; - unsigned char ICSELB:1; - unsigned char BFB:1; - unsigned char BFA:1; - unsigned char MD:4; - } BIT; - } TMDR; - union { - unsigned char BYTE; - struct { - unsigned char IOB:4; - unsigned char IOA:4; - } BIT; - } TIORH; - union { - unsigned char BYTE; - struct { - unsigned char IOD:4; - unsigned char IOC:4; - } BIT; - } TIORL; - union { - unsigned char BYTE; - struct { - unsigned char TTGE:1; - unsigned char :1; - unsigned char TCIEU:1; - unsigned char TCIEV:1; - unsigned char TGIED:1; - unsigned char TGIEC:1; - unsigned char TGIEB:1; - unsigned char TGIEA:1; - } BIT; - } TIER; - union { - unsigned char BYTE; - struct { - unsigned char TCFD:1; - unsigned char :1; - unsigned char TCFU:1; - unsigned char TCFV:1; - unsigned char TGFD:1; - unsigned char TGFC:1; - unsigned char TGFB:1; - unsigned char TGFA:1; - } BIT; - } TSR; - unsigned short TCNT; - unsigned short TGRA; - unsigned short TGRB; - unsigned short TGRC; - unsigned short TGRD; -}; - -struct st_tpu1 { - char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char NFCS:2; - unsigned char NFDEN:1; - unsigned char NFCEN:1; - unsigned char NFBEN:1; - unsigned char NFAEN:1; - } BIT; - } NFCR; - char wk1[22]; - union { - unsigned char BYTE; - struct { - unsigned char CCLR:3; - unsigned char CKEG:2; - unsigned char TPSC:3; - } BIT; - } TCR; - union { - unsigned char BYTE; - struct { - unsigned char ICSELD:1; - unsigned char ICSELB:1; - unsigned char BFB:1; - unsigned char BFA:1; - unsigned char MD:4; - } BIT; - } TMDR; - union { - unsigned char BYTE; - struct { - unsigned char IOB:4; - unsigned char IOA:4; - } BIT; - } TIOR; - char wk2[1]; - union { - unsigned char BYTE; - struct { - unsigned char TTGE:1; - unsigned char :1; - unsigned char TCIEU:1; - unsigned char TCIEV:1; - unsigned char TGIED:1; - unsigned char TGIEC:1; - unsigned char TGIEB:1; - unsigned char TGIEA:1; - } BIT; - } TIER; - union { - unsigned char BYTE; - struct { - unsigned char TCFD:1; - unsigned char :1; - unsigned char TCFU:1; - unsigned char TCFV:1; - unsigned char TGFD:1; - unsigned char TGFC:1; - unsigned char TGFB:1; - unsigned char TGFA:1; - } BIT; - } TSR; - unsigned short TCNT; - unsigned short TGRA; - unsigned short TGRB; -}; - -struct st_tpu2 { - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char NFCS:2; - unsigned char NFDEN:1; - unsigned char NFCEN:1; - unsigned char NFBEN:1; - unsigned char NFAEN:1; - } BIT; - } NFCR; - char wk0[37]; - union { - unsigned char BYTE; - struct { - unsigned char CCLR:3; - unsigned char CKEG:2; - unsigned char TPSC:3; - } BIT; - } TCR; - union { - unsigned char BYTE; - struct { - unsigned char ICSELD:1; - unsigned char ICSELB:1; - unsigned char BFB:1; - unsigned char BFA:1; - unsigned char MD:4; - } BIT; - } TMDR; - union { - unsigned char BYTE; - struct { - unsigned char IOB:4; - unsigned char IOA:4; - } BIT; - } TIOR; - char wk1[1]; - union { - unsigned char BYTE; - struct { - unsigned char TTGE:1; - unsigned char :1; - unsigned char TCIEU:1; - unsigned char TCIEV:1; - unsigned char TGIED:1; - unsigned char TGIEC:1; - unsigned char TGIEB:1; - unsigned char TGIEA:1; - } BIT; - } TIER; - union { - unsigned char BYTE; - struct { - unsigned char TCFD:1; - unsigned char :1; - unsigned char TCFU:1; - unsigned char TCFV:1; - unsigned char TGFD:1; - unsigned char TGFC:1; - unsigned char TGFB:1; - unsigned char TGFA:1; - } BIT; - } TSR; - unsigned short TCNT; - unsigned short TGRA; - unsigned short TGRB; -}; - -struct st_tpu3 { - char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char NFCS:2; - unsigned char NFDEN:1; - unsigned char NFCEN:1; - unsigned char NFBEN:1; - unsigned char NFAEN:1; - } BIT; - } NFCR; - char wk1[52]; - union { - unsigned char BYTE; - struct { - unsigned char CCLR:3; - unsigned char CKEG:2; - unsigned char TPSC:3; - } BIT; - } TCR; - union { - unsigned char BYTE; - struct { - unsigned char ICSELD:1; - unsigned char ICSELB:1; - unsigned char BFB:1; - unsigned char BFA:1; - unsigned char MD:4; - } BIT; - } TMDR; - union { - unsigned char BYTE; - struct { - unsigned char IOB:4; - unsigned char IOA:4; - } BIT; - } TIORH; - union { - unsigned char BYTE; - struct { - unsigned char IOD:4; - unsigned char IOC:4; - } BIT; - } TIORL; - union { - unsigned char BYTE; - struct { - unsigned char TTGE:1; - unsigned char :1; - unsigned char TCIEU:1; - unsigned char TCIEV:1; - unsigned char TGIED:1; - unsigned char TGIEC:1; - unsigned char TGIEB:1; - unsigned char TGIEA:1; - } BIT; - } TIER; - union { - unsigned char BYTE; - struct { - unsigned char TCFD:1; - unsigned char :1; - unsigned char TCFU:1; - unsigned char TCFV:1; - unsigned char TGFD:1; - unsigned char TGFC:1; - unsigned char TGFB:1; - unsigned char TGFA:1; - } BIT; - } TSR; - unsigned short TCNT; - unsigned short TGRA; - unsigned short TGRB; - unsigned short TGRC; - unsigned short TGRD; -}; - -struct st_tpu4 { - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char NFCS:2; - unsigned char NFDEN:1; - unsigned char NFCEN:1; - unsigned char NFBEN:1; - unsigned char NFAEN:1; - } BIT; - } NFCR; - char wk0[67]; - union { - unsigned char BYTE; - struct { - unsigned char CCLR:3; - unsigned char CKEG:2; - unsigned char TPSC:3; - } BIT; - } TCR; - union { - unsigned char BYTE; - struct { - unsigned char ICSELD:1; - unsigned char ICSELB:1; - unsigned char BFB:1; - unsigned char BFA:1; - unsigned char MD:4; - } BIT; - } TMDR; - union { - unsigned char BYTE; - struct { - unsigned char IOB:4; - unsigned char IOA:4; - } BIT; - } TIOR; - char wk1[1]; - union { - unsigned char BYTE; - struct { - unsigned char TTGE:1; - unsigned char :1; - unsigned char TCIEU:1; - unsigned char TCIEV:1; - unsigned char TGIED:1; - unsigned char TGIEC:1; - unsigned char TGIEB:1; - unsigned char TGIEA:1; - } BIT; - } TIER; - union { - unsigned char BYTE; - struct { - unsigned char TCFD:1; - unsigned char :1; - unsigned char TCFU:1; - unsigned char TCFV:1; - unsigned char TGFD:1; - unsigned char TGFC:1; - unsigned char TGFB:1; - unsigned char TGFA:1; - } BIT; - } TSR; - unsigned short TCNT; - unsigned short TGRA; - unsigned short TGRB; -}; - -struct st_tpu5 { - char wk0[1]; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char NFCS:2; - unsigned char NFDEN:1; - unsigned char NFCEN:1; - unsigned char NFBEN:1; - unsigned char NFAEN:1; - } BIT; - } NFCR; - char wk1[82]; - union { - unsigned char BYTE; - struct { - unsigned char CCLR:3; - unsigned char CKEG:2; - unsigned char TPSC:3; - } BIT; - } TCR; - union { - unsigned char BYTE; - struct { - unsigned char ICSELD:1; - unsigned char ICSELB:1; - unsigned char BFB:1; - unsigned char BFA:1; - unsigned char MD:4; - } BIT; - } TMDR; - union { - unsigned char BYTE; - struct { - unsigned char IOB:4; - unsigned char IOA:4; - } BIT; - } TIOR; - char wk2[1]; - union { - unsigned char BYTE; - struct { - unsigned char TTGE:1; - unsigned char :1; - unsigned char TCIEU:1; - unsigned char TCIEV:1; - unsigned char TGIED:1; - unsigned char TGIEC:1; - unsigned char TGIEB:1; - unsigned char TGIEA:1; - } BIT; - } TIER; - union { - unsigned char BYTE; - struct { - unsigned char TCFD:1; - unsigned char :1; - unsigned char TCFU:1; - unsigned char TCFV:1; - unsigned char TGFD:1; - unsigned char TGFC:1; - unsigned char TGFB:1; - unsigned char TGFA:1; - } BIT; - } TSR; - unsigned short TCNT; - unsigned short TGRA; - unsigned short TGRB; -}; - -struct st_tpua { - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char CST5:1; - unsigned char CST4:1; - unsigned char CST3:1; - unsigned char CST2:1; - unsigned char CST1:1; - unsigned char CST0:1; - } BIT; - } TSTR; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char SYNC5:1; - unsigned char SYNC4:1; - unsigned char SYNC3:1; - unsigned char SYNC2:1; - unsigned char SYNC1:1; - unsigned char SYNC0:1; - } BIT; - } TSYR; -}; - -struct st_tpub { - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char CST11:1; - unsigned char CST10:1; - unsigned char CST9:1; - unsigned char CST8:1; - unsigned char CST7:1; - unsigned char CST6:1; - } BIT; - } TSTR; - union { - unsigned char BYTE; - struct { - unsigned char :2; - unsigned char SYNC11:1; - unsigned char SYNC10:1; - unsigned char SYNC9:1; - unsigned char SYNC8:1; - unsigned char SYNC7:1; - unsigned char SYNC6:1; - } BIT; - } TSYR; -}; - -struct st_usb { - union { - unsigned long LONG; - struct { - unsigned long DVSTS1:1; - unsigned long :5; - unsigned long DM1:1; - unsigned long DP1:1; - unsigned long DVBSTS0:1; - unsigned long :1; - unsigned long DOVCB0:1; - unsigned long DOVCA0:1; - unsigned long :2; - unsigned long DM0:1; - unsigned long DP0:1; - unsigned long :3; - unsigned long FIXPHY1:1; - unsigned long :3; - unsigned long SRPC1:1; - unsigned long :3; - unsigned long FIXPHY0:1; - unsigned long :3; - unsigned long SRPC0:1; - } BIT; - } DPUSR0R; - union { - unsigned long LONG; - struct { - unsigned long DVBINT1:1; - unsigned long :5; - unsigned long DMINT1:1; - unsigned long DPINT1:1; - unsigned long DVBINT0:1; - unsigned long :1; - unsigned long DOVRCRB0:1; - unsigned long DOVRCRA0:1; - unsigned long :2; - unsigned long DMINT0:1; - unsigned long DPINT0:1; - unsigned long DVBSE1:1; - unsigned long :5; - unsigned long DMINTE1:1; - unsigned long DPINTE1:1; - unsigned long DVBSE0:1; - unsigned long :1; - unsigned long DOVRCRBE0:1; - unsigned long DOVRCRAE0:1; - unsigned long :2; - unsigned long DMINTE0:1; - unsigned long DPINTE0:1; - } BIT; - } DPUSR1R; -}; - -struct st_usb0 { - union { - unsigned short WORD; - struct { - unsigned short :5; - unsigned short SCKE:1; - unsigned short :3; - unsigned short DCFM:1; - unsigned short DRPD:1; - unsigned short DPRPU:1; - unsigned short :3; - unsigned short USBE:1; - } BIT; - } SYSCFG; - char wk0[2]; - union { - unsigned short WORD; - struct { - unsigned short OVCMON:2; - unsigned short :7; - unsigned short HTACT:1; - unsigned short :3; - unsigned short IDMON:1; - unsigned short LNST:2; - } BIT; - } SYSSTS0; - char wk1[2]; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short HNPBTOA:1; - unsigned short EXICEN:1; - unsigned short VBUSEN:1; - unsigned short WKUP:1; - unsigned short RWUPE:1; - unsigned short USBRST:1; - unsigned short RESUME:1; - unsigned short UACT:1; - unsigned short :1; - unsigned short RHST:3; - } BIT; - } DVSTCTR0; - char wk2[10]; - unsigned short CFIFO; - char wk3[2]; - unsigned short D0FIFO; - char wk4[2]; - unsigned short D1FIFO; - char wk5[2]; - union { - unsigned short WORD; - struct { - unsigned short RCNT:1; - unsigned short REW:1; - unsigned short :3; - unsigned short MBW:1; - unsigned short :1; - unsigned short BIGEND:1; - unsigned short :2; - unsigned short ISEL:1; - unsigned short :1; - unsigned short CURPIPE:4; - } BIT; - } CFIFOSEL; - union { - unsigned short WORD; - struct { - unsigned short BVAL:1; - unsigned short BCLR:1; - unsigned short FRDY:1; - unsigned short :4; - unsigned short DTLN:9; - } BIT; - } CFIFOCTR; - char wk6[4]; - union { - unsigned short WORD; - struct { - unsigned short RCNT:1; - unsigned short REW:1; - unsigned short DCLRM:1; - unsigned short DREQE:1; - unsigned short :1; - unsigned short MBW:1; - unsigned short :1; - unsigned short BIGEND:1; - unsigned short :4; - unsigned short CURPIPE:4; - } BIT; - } D0FIFOSEL; - union { - unsigned short WORD; - struct { - unsigned short BVAL:1; - unsigned short BCLR:1; - unsigned short FRDY:1; - unsigned short :4; - unsigned short DTLN:9; - } BIT; - } D0FIFOCTR; - union { - unsigned short WORD; - struct { - unsigned short RCNT:1; - unsigned short REW:1; - unsigned short DCLRM:1; - unsigned short DREQE:1; - unsigned short :1; - unsigned short MBW:1; - unsigned short :1; - unsigned short BIGEND:1; - unsigned short :4; - unsigned short CURPIPE:4; - } BIT; - } D1FIFOSEL; - union { - unsigned short WORD; - struct { - unsigned short BVAL:1; - unsigned short BCLR:1; - unsigned short FRDY:1; - unsigned short :4; - unsigned short DTLN:9; - } BIT; - } D1FIFOCTR; - union { - unsigned short WORD; - struct { - unsigned short VBSE:1; - unsigned short RSME:1; - unsigned short SOFE:1; - unsigned short DVSE:1; - unsigned short CTRE:1; - unsigned short BEMPE:1; - unsigned short NRDYE:1; - unsigned short BRDYE:1; - } BIT; - } INTENB0; - union { - unsigned short WORD; - struct { - unsigned short OVRCRE:1; - unsigned short BCHGE:1; - unsigned short :1; - unsigned short DTCHE:1; - unsigned short ATTCHE:1; - unsigned short :4; - unsigned short EOFERRE:1; - unsigned short SIGNE:1; - unsigned short SACKE:1; - } BIT; - } INTENB1; - char wk7[2]; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short PIPE9BRDYE:1; - unsigned short PIPE8BRDYE:1; - unsigned short PIPE7BRDYE:1; - unsigned short PIPE6BRDYE:1; - unsigned short PIPE5BRDYE:1; - unsigned short PIPE4BRDYE:1; - unsigned short PIPE3BRDYE:1; - unsigned short PIPE2BRDYE:1; - unsigned short PIPE1BRDYE:1; - unsigned short PIPE0BRDYE:1; - } BIT; - } BRDYENB; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short PIPE9NRDYE:1; - unsigned short PIPE8NRDYE:1; - unsigned short PIPE7NRDYE:1; - unsigned short PIPE6NRDYE:1; - unsigned short PIPE5NRDYE:1; - unsigned short PIPE4NRDYE:1; - unsigned short PIPE3NRDYE:1; - unsigned short PIPE2NRDYE:1; - unsigned short PIPE1NRDYE:1; - unsigned short PIPE0NRDYE:1; - } BIT; - } NRDYENB; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short PIPE9BEMPE:1; - unsigned short PIPE8BEMPE:1; - unsigned short PIPE7BEMPE:1; - unsigned short PIPE6BEMPE:1; - unsigned short PIPE5BEMPE:1; - unsigned short PIPE4BEMPE:1; - unsigned short PIPE3BEMPE:1; - unsigned short PIPE2BEMPE:1; - unsigned short PIPE1BEMPE:1; - unsigned short PIPE0BEMPE:1; - } BIT; - } BEMPENB; - union { - unsigned short WORD; - struct { - unsigned short :7; - unsigned short TRNENSEL:1; - unsigned short :1; - unsigned short BRDYM:1; - unsigned short :1; - unsigned short EDGESTS:1; - } BIT; - } SOFCFG; - char wk8[2]; - union { - unsigned short WORD; - struct { - unsigned short VBINT:1; - unsigned short RESM:1; - unsigned short SOFR:1; - unsigned short DVST:1; - unsigned short CTRT:1; - unsigned short BEMP:1; - unsigned short NRDY:1; - unsigned short BRDY:1; - unsigned short VBSTS:1; - unsigned short DVSQ:3; - unsigned short VALID:1; - unsigned short CTSQ:3; - } BIT; - } INTSTS0; - union { - unsigned short WORD; - struct { - unsigned short OVRCR:1; - unsigned short BCHG:1; - unsigned short :1; - unsigned short DTCH:1; - unsigned short ATTCH:1; - unsigned short :4; - unsigned short EOFERR:1; - unsigned short SIGN:1; - unsigned short SACK:1; - } BIT; - } INTSTS1; - char wk9[2]; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short PIPE9BRDY:1; - unsigned short PIPE8BRDY:1; - unsigned short PIPE7BRDY:1; - unsigned short PIPE6BRDY:1; - unsigned short PIPE5BRDY:1; - unsigned short PIPE4BRDY:1; - unsigned short PIPE3BRDY:1; - unsigned short PIPE2BRDY:1; - unsigned short PIPE1BRDY:1; - unsigned short PIPE0BRDY:1; - } BIT; - } BRDYSTS; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short PIPE9NRDYE:1; - unsigned short PIPE8NRDYE:1; - unsigned short PIPE7NRDYE:1; - unsigned short PIPE6NRDYE:1; - unsigned short PIPE5NRDYE:1; - unsigned short PIPE4NRDYE:1; - unsigned short PIPE3NRDYE:1; - unsigned short PIPE2NRDYE:1; - unsigned short PIPE1NRDYE:1; - unsigned short PIPE0NRDYE:1; - } BIT; - } NRDYSTS; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short PIPE9BEMPE:1; - unsigned short PIPE8BEMPE:1; - unsigned short PIPE7BENP:1; - unsigned short PIPE6BENP:1; - unsigned short PIPE5BENP:1; - unsigned short PIPE4BENP:1; - unsigned short PIPE3BENP:1; - unsigned short PIPE2BENP:1; - unsigned short PIPE1BENP:1; - unsigned short PIPE0BENP:1; - } BIT; - } BEMPSTS; - union { - unsigned short WORD; - struct { - unsigned short OVRN:1; - unsigned short CRCE:1; - unsigned short :3; - unsigned short FRNM:11; - } BIT; - } FRMNUM; - union { - unsigned short WORD; - struct { - unsigned short DVCHG:1; - } BIT; - } DVCHGR; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short STSRECOV:4; - unsigned short :1; - unsigned short USBADDR:7; - } BIT; - } USBADDR; - char wk10[2]; - union { - unsigned short WORD; - struct { - unsigned short BREQUEST:8; - unsigned short BMREQUESTTYPE:8; - } BIT; - } USBREQ; - unsigned short USBVAL; - unsigned short USBINDX; - unsigned short USBLENG; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short SHTNAK:1; - unsigned short :2; - unsigned short DIR:1; - } BIT; - } DCPCFG; - union { - unsigned short WORD; - struct { - unsigned short DEVSEL:4; - unsigned short :5; - unsigned short MXPS:7; - } BIT; - } DCPMAXP; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short SUREQ:1; - unsigned short :2; - unsigned short SUREQCLR:1; - unsigned short :2; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :2; - unsigned short CCPL:1; - unsigned short PID:2; - } BIT; - } DCPCTR; - char wk11[2]; - union { - unsigned short WORD; - struct { - unsigned short :12; - unsigned short PIPESEL:4; - } BIT; - } PIPESEL; - char wk12[2]; - union { - unsigned short WORD; - struct { - unsigned short TYPE:2; - unsigned short :3; - unsigned short BFRE:1; - unsigned short DBLB:1; - unsigned short :1; - unsigned short SHTNAK:1; - unsigned short :2; - unsigned short DIR:1; - unsigned short EPNUM:4; - } BIT; - } PIPECFG; - char wk13[2]; - union { - unsigned short WORD; - struct { - unsigned short DEVSEL:4; - unsigned short :3; - unsigned short MXPS:9; - } BIT; - } PIPEMAXP; - union { - unsigned short WORD; - struct { - unsigned short :3; - unsigned short IFIS:1; - unsigned short :9; - unsigned short IITV:3; - } BIT; - } PIPEPERI; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short INBUFM:1; - unsigned short :3; - unsigned short ATREPM:1; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE1CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short INBUFM:1; - unsigned short :3; - unsigned short ATREPM:1; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE2CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short INBUFM:1; - unsigned short :3; - unsigned short ATREPM:1; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE3CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short INBUFM:1; - unsigned short :3; - unsigned short ATREPM:1; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE4CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short INBUFM:1; - unsigned short :3; - unsigned short ATREPM:1; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE5CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short :5; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE6CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short :5; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE7CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short :5; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE8CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short :5; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE9CTR; - char wk14[14]; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short TRENB:1; - unsigned short TRCLR:1; - } BIT; - } PIPE1TRE; - unsigned short PIPE1TRN; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short TRENB:1; - unsigned short TRCLR:1; - } BIT; - } PIPE2TRE; - unsigned short PIPE2TRN; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short TRENB:1; - unsigned short TRCLR:1; - } BIT; - } PIPE3TRE; - unsigned short PIPE3TRN; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short TRENB:1; - unsigned short TRCLR:1; - } BIT; - } PIPE4TRE; - unsigned short PIPE4TRN; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short TRENB:1; - unsigned short TRCLR:1; - } BIT; - } PIPE5TRE; - unsigned short PIPE5TRN; - char wk15[44]; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short USBSPD:2; - } BIT; - } DEVADD0; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short USBSPD:2; - } BIT; - } DEVADD1; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short USBSPD:2; - } BIT; - } DEVADD2; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short USBSPD:2; - } BIT; - } DEVADD3; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short USBSPD:2; - } BIT; - } DEVADD4; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short USBSPD:2; - } BIT; - } DEVADD5; -}; - -struct st_usb1 { - union { - unsigned short WORD; - struct { - unsigned short :5; - unsigned short SCKE:1; - unsigned short :3; - unsigned short DCFM:1; - unsigned short DRPD:1; - unsigned short DPRPU:1; - unsigned short :3; - unsigned short USBE:1; - } BIT; - } SYSCFG; - char wk0[2]; - union { - unsigned short WORD; - struct { - unsigned short OVCMON:2; - unsigned short :7; - unsigned short HTACT:1; - unsigned short :3; - unsigned short IDMON:1; - unsigned short LNST:2; - } BIT; - } SYSSTS0; - char wk1[2]; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short HNPBTOA:1; - unsigned short EXICEN:1; - unsigned short VBUSEN:1; - unsigned short WKUP:1; - unsigned short RWUPE:1; - unsigned short USBRST:1; - unsigned short RESUME:1; - unsigned short UACT:1; - unsigned short :1; - unsigned short RHST:3; - } BIT; - } DVSTCTR0; - char wk2[10]; - unsigned short CFIFO; - char wk3[2]; - unsigned short D0FIFO; - char wk4[2]; - unsigned short D1FIFO; - char wk5[2]; - union { - unsigned short WORD; - struct { - unsigned short RCNT:1; - unsigned short REW:1; - unsigned short :3; - unsigned short MBW:1; - unsigned short :1; - unsigned short BIGEND:1; - unsigned short :2; - unsigned short ISEL:1; - unsigned short :1; - unsigned short CURPIPE:4; - } BIT; - } CFIFOSEL; - union { - unsigned short WORD; - struct { - unsigned short BVAL:1; - unsigned short BCLR:1; - unsigned short FRDY:1; - unsigned short :4; - unsigned short DTLN:9; - } BIT; - } CFIFOCTR; - char wk6[4]; - union { - unsigned short WORD; - struct { - unsigned short RCNT:1; - unsigned short REW:1; - unsigned short DCLRM:1; - unsigned short DREQE:1; - unsigned short :1; - unsigned short MBW:1; - unsigned short :1; - unsigned short BIGEND:1; - unsigned short :4; - unsigned short CURPIPE:4; - } BIT; - } D0FIFOSEL; - union { - unsigned short WORD; - struct { - unsigned short BVAL:1; - unsigned short BCLR:1; - unsigned short FRDY:1; - unsigned short :4; - unsigned short DTLN:9; - } BIT; - } D0FIFOCTR; - union { - unsigned short WORD; - struct { - unsigned short RCNT:1; - unsigned short REW:1; - unsigned short DCLRM:1; - unsigned short DREQE:1; - unsigned short :1; - unsigned short MBW:1; - unsigned short :1; - unsigned short BIGEND:1; - unsigned short :4; - unsigned short CURPIPE:4; - } BIT; - } D1FIFOSEL; - union { - unsigned short WORD; - struct { - unsigned short BVAL:1; - unsigned short BCLR:1; - unsigned short FRDY:1; - unsigned short :4; - unsigned short DTLN:9; - } BIT; - } D1FIFOCTR; - union { - unsigned short WORD; - struct { - unsigned short VBSE:1; - unsigned short RSME:1; - unsigned short SOFE:1; - unsigned short DVSE:1; - unsigned short CTRE:1; - unsigned short BEMPE:1; - unsigned short NRDYE:1; - unsigned short BRDYE:1; - } BIT; - } INTENB0; - char wk7[4]; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short PIPE9BRDYE:1; - unsigned short PIPE8BRDYE:1; - unsigned short PIPE7BRDYE:1; - unsigned short PIPE6BRDYE:1; - unsigned short PIPE5BRDYE:1; - unsigned short PIPE4BRDYE:1; - unsigned short PIPE3BRDYE:1; - unsigned short PIPE2BRDYE:1; - unsigned short PIPE1BRDYE:1; - unsigned short PIPE0BRDYE:1; - } BIT; - } BRDYENB; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short PIPE9NRDYE:1; - unsigned short PIPE8NRDYE:1; - unsigned short PIPE7NRDYE:1; - unsigned short PIPE6NRDYE:1; - unsigned short PIPE5NRDYE:1; - unsigned short PIPE4NRDYE:1; - unsigned short PIPE3NRDYE:1; - unsigned short PIPE2NRDYE:1; - unsigned short PIPE1NRDYE:1; - unsigned short PIPE0NRDYE:1; - } BIT; - } NRDYENB; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short PIPE9BEMPE:1; - unsigned short PIPE8BEMPE:1; - unsigned short PIPE7BEMPE:1; - unsigned short PIPE6BEMPE:1; - unsigned short PIPE5BEMPE:1; - unsigned short PIPE4BEMPE:1; - unsigned short PIPE3BEMPE:1; - unsigned short PIPE2BEMPE:1; - unsigned short PIPE1BEMPE:1; - unsigned short PIPE0BEMPE:1; - } BIT; - } BEMPENB; - union { - unsigned short WORD; - struct { - unsigned short :9; - unsigned short BRDYM:1; - unsigned short :1; - unsigned short EDGESTS:1; - } BIT; - } SOFCFG; - char wk8[2]; - union { - unsigned short WORD; - struct { - unsigned short VBINT:1; - unsigned short RESM:1; - unsigned short SOFR:1; - unsigned short DVST:1; - unsigned short CTRT:1; - unsigned short BEMP:1; - unsigned short NRDY:1; - unsigned short BRDY:1; - unsigned short VBSTS:1; - unsigned short DVSQ:3; - unsigned short VALID:1; - unsigned short CTSQ:3; - } BIT; - } INTSTS0; - char wk9[4]; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short PIPE9BRDY:1; - unsigned short PIPE8BRDY:1; - unsigned short PIPE7BRDY:1; - unsigned short PIPE6BRDY:1; - unsigned short PIPE5BRDY:1; - unsigned short PIPE4BRDY:1; - unsigned short PIPE3BRDY:1; - unsigned short PIPE2BRDY:1; - unsigned short PIPE1BRDY:1; - unsigned short PIPE0BRDY:1; - } BIT; - } BRDYSTS; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short PIPE9NRDYE:1; - unsigned short PIPE8NRDYE:1; - unsigned short PIPE7NRDYE:1; - unsigned short PIPE6NRDYE:1; - unsigned short PIPE5NRDYE:1; - unsigned short PIPE4NRDYE:1; - unsigned short PIPE3NRDYE:1; - unsigned short PIPE2NRDYE:1; - unsigned short PIPE1NRDYE:1; - unsigned short PIPE0NRDYE:1; - } BIT; - } NRDYSTS; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short PIPE9BEMPE:1; - unsigned short PIPE8BEMPE:1; - unsigned short PIPE7BENP:1; - unsigned short PIPE6BENP:1; - unsigned short PIPE5BENP:1; - unsigned short PIPE4BENP:1; - unsigned short PIPE3BENP:1; - unsigned short PIPE2BENP:1; - unsigned short PIPE1BENP:1; - unsigned short PIPE0BENP:1; - } BIT; - } BEMPSTS; - union { - unsigned short WORD; - struct { - unsigned short OVRN:1; - unsigned short CRCE:1; - unsigned short :3; - unsigned short FRNM:11; - } BIT; - } FRMNUM; - union { - unsigned short WORD; - struct { - unsigned short DVCHG:1; - } BIT; - } DVCHGR; - union { - unsigned short WORD; - struct { - unsigned short :4; - unsigned short STSRECOV:4; - unsigned short :1; - unsigned short USBADDR:7; - } BIT; - } USBADDR; - char wk10[2]; - union { - unsigned short WORD; - struct { - unsigned short BREQUEST:8; - unsigned short BMREQUESTTYPE:8; - } BIT; - } USBREQ; - unsigned short USBVAL; - unsigned short USBINDX; - unsigned short USBLENG; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short SHTNAK:1; - unsigned short :2; - unsigned short DIR:1; - } BIT; - } DCPCFG; - union { - unsigned short WORD; - struct { - unsigned short DEVSEL:4; - unsigned short :5; - unsigned short MXPS:7; - } BIT; - } DCPMAXP; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short SUREQ:1; - unsigned short :2; - unsigned short SUREQCLR:1; - unsigned short :2; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :2; - unsigned short CCPL:1; - unsigned short PID:2; - } BIT; - } DCPCTR; - char wk11[2]; - union { - unsigned short WORD; - struct { - unsigned short :12; - unsigned short PIPESEL:4; - } BIT; - } PIPESEL; - char wk12[2]; - union { - unsigned short WORD; - struct { - unsigned short TYPE:2; - unsigned short :3; - unsigned short BFRE:1; - unsigned short DBLB:1; - unsigned short :1; - unsigned short SHTNAK:1; - unsigned short :2; - unsigned short DIR:1; - unsigned short EPNUM:4; - } BIT; - } PIPECFG; - char wk13[2]; - union { - unsigned short WORD; - struct { - unsigned short DEVSEL:4; - unsigned short :3; - unsigned short MXPS:9; - } BIT; - } PIPEMAXP; - union { - unsigned short WORD; - struct { - unsigned short :3; - unsigned short IFIS:1; - unsigned short :9; - unsigned short IITV:3; - } BIT; - } PIPEPERI; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short INBUFM:1; - unsigned short :3; - unsigned short ATREPM:1; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE1CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short INBUFM:1; - unsigned short :3; - unsigned short ATREPM:1; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE2CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short INBUFM:1; - unsigned short :3; - unsigned short ATREPM:1; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE3CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short INBUFM:1; - unsigned short :3; - unsigned short ATREPM:1; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE4CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short INBUFM:1; - unsigned short :3; - unsigned short ATREPM:1; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE5CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short :5; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE6CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short :5; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE7CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short :5; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE8CTR; - union { - unsigned short WORD; - struct { - unsigned short BSTS:1; - unsigned short :5; - unsigned short ACLRM:1; - unsigned short SQCLR:1; - unsigned short SQSET:1; - unsigned short SQMON:1; - unsigned short PBUSY:1; - unsigned short :3; - unsigned short PID:2; - } BIT; - } PIPE9CTR; - char wk14[14]; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short TRENB:1; - unsigned short TRCLR:1; - } BIT; - } PIPE1TRE; - unsigned short PIPE1TRN; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short TRENB:1; - unsigned short TRCLR:1; - } BIT; - } PIPE2TRE; - unsigned short PIPE2TRN; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short TRENB:1; - unsigned short TRCLR:1; - } BIT; - } PIPE3TRE; - unsigned short PIPE3TRN; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short TRENB:1; - unsigned short TRCLR:1; - } BIT; - } PIPE4TRE; - unsigned short PIPE4TRN; - union { - unsigned short WORD; - struct { - unsigned short :6; - unsigned short TRENB:1; - unsigned short TRCLR:1; - } BIT; - } PIPE5TRE; - unsigned short PIPE5TRN; - char wk15[44]; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short USBSPD:2; - } BIT; - } DEVADD0; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short USBSPD:2; - } BIT; - } DEVADD1; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short USBSPD:2; - } BIT; - } DEVADD2; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short USBSPD:2; - } BIT; - } DEVADD3; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short USBSPD:2; - } BIT; - } DEVADD4; - union { - unsigned short WORD; - struct { - unsigned short :8; - unsigned short USBSPD:2; - } BIT; - } DEVADD5; -}; - -struct st_wdt { - unsigned char WDTRR; - char wk0[1]; - union { - unsigned short WORD; - struct { - unsigned short :2; - unsigned short RPSS:2; - unsigned short :2; - unsigned short RPES:2; - unsigned short CKS:4; - unsigned short :2; - unsigned short TOPS:2; - } BIT; - } WDTCR; - union { - unsigned short WORD; - struct { - unsigned short REFEF:1; - unsigned short UNDFF:1; - unsigned short CNTVAL:14; - } BIT; - } WDTSR; - union { - unsigned char BYTE; - struct { - unsigned char RSTIRQS:1; - } BIT; - } WDTRCR; -}; - -enum enum_ir { -IR_BSC_BUSERR=16,IR_FCU_FIFERR=21, -IR_ICU_SWINT=27, -IR_CMT0_CMI0, -IR_CMT1_CMI1, -IR_CMT2_CMI2, -IR_CMT3_CMI3, -IR_ETHER_EINT, -IR_USB0_D0FIFO0,IR_USB0_D1FIFO0,IR_USB0_USBI0, -IR_USB1_D0FIFO1,IR_USB1_D1FIFO1,IR_USB1_USBI1, -IR_RSPI0_SPRI0,IR_RSPI0_SPTI0,IR_RSPI0_SPII0, -IR_RSPI1_SPRI1,IR_RSPI1_SPTI1,IR_RSPI1_SPII1, -IR_RSPI2_SPRI2,IR_RSPI2_SPTI2,IR_RSPI2_SPII2, -IR_CAN0_RXF0,IR_CAN0_TXF0,IR_CAN0_RXM0,IR_CAN0_TXM0, -IR_CAN1_RXF1,IR_CAN1_TXF1,IR_CAN1_RXM1,IR_CAN1_TXM1, -IR_CAN2_RXF2,IR_CAN2_TXF2,IR_CAN2_RXM2,IR_CAN2_TXM2, -IR_RTC_COUNTUP=62, -IR_ICU_IRQ0=64,IR_ICU_IRQ1,IR_ICU_IRQ2,IR_ICU_IRQ3,IR_ICU_IRQ4,IR_ICU_IRQ5,IR_ICU_IRQ6,IR_ICU_IRQ7,IR_ICU_IRQ8,IR_ICU_IRQ9,IR_ICU_IRQ10,IR_ICU_IRQ11,IR_ICU_IRQ12,IR_ICU_IRQ13,IR_ICU_IRQ14,IR_ICU_IRQ15, -IR_USB_USBR0=90,IR_USB_USBR1, -IR_RTC_ALARM,IR_RTC_PRD, -IR_AD0_ADI0=98, -IR_S12AD0_S12ADI0=102, -IR_ICU_GROUPE0=106,IR_ICU_GROUPE1,IR_ICU_GROUPE2,IR_ICU_GROUPE3,IR_ICU_GROUPE4,IR_ICU_GROUPE5,IR_ICU_GROUPE6,IR_ICU_GROUPL0=114, -IR_SCIX_SCIX0=122,IR_SCIX_SCIX1,IR_SCIX_SCIX2,IR_SCIX_SCIX3, -IR_TPU0_TGI0A,IR_TPU0_TGI0B,IR_TPU0_TGI0C,IR_TPU0_TGI0D, -IR_TPU1_TGI1A,IR_TPU1_TGI1B, -IR_TPU2_TGI2A,IR_TPU2_TGI2B, -IR_TPU3_TGI3A,IR_TPU3_TGI3B,IR_TPU3_TGI3C,IR_TPU3_TGI3D, -IR_TPU4_TGI4A,IR_TPU4_TGI4B, -IR_TPU5_TGI5A,IR_TPU5_TGI5B, -IR_TPU6_TGI6A,IR_TPU6_TGI6B,IR_TPU6_TGI6C,IR_TPU6_TGI6D, -IR_MTU0_TGIA0=142,IR_MTU0_TGIB0,IR_MTU0_TGIC0,IR_MTU0_TGID0,IR_MTU0_TGIE0,IR_MTU0_TGIF0, -IR_TPU7_TGI7A,IR_TPU7_TGI7B, -IR_MTU1_TGIA1=148,IR_MTU1_TGIB1, -IR_TPU8_TGI8A,IR_TPU8_TGI8B, -IR_MTU2_TGIA2=150,IR_MTU2_TGIB2, -IR_TPU9_TGI9A,IR_TPU9_TGI9B,IR_TPU9_TGI9C,IR_TPU9_TGI9D, -IR_MTU3_TGIA3=152,IR_MTU3_TGIB3,IR_MTU3_TGIC3,IR_MTU3_TGID3, -IR_TPU10_TGI10A,IR_TPU10_TGI10B, -IR_MTU4_TGIA4=156,IR_MTU4_TGIB4,IR_MTU4_TGIC4,IR_MTU4_TGID4,IR_MTU4_TCIV4, -IR_MTU5_TGIU5,IR_MTU5_TGIV5,IR_MTU5_TGIW5, -IR_TPU11_TGI11A,IR_TPU11_TGI11B, -IR_POE_OEI1,IR_POE_OEI2, -IR_TMR0_CMIA0=170,IR_TMR0_CMIB0,IR_TMR0_OVI0, -IR_TMR1_CMIA1,IR_TMR1_CMIB1,IR_TMR1_OVI1, -IR_TMR2_CMIA2,IR_TMR2_CMIB2,IR_TMR2_OVI2, -IR_TMR3_CMIA3,IR_TMR3_CMIB3,IR_TMR3_OVI3, -IR_RIIC0_EEI0,IR_RIIC0_RXI0,IR_RIIC0_TXI0,IR_RIIC0_TEI0, -IR_RIIC1_EEI1,IR_RIIC1_RXI1,IR_RIIC1_TXI1,IR_RIIC1_TEI1, -IR_RIIC2_EEI2,IR_RIIC2_RXI2,IR_RIIC2_TXI2,IR_RIIC2_TEI2, -IR_RIIC3_EEI3,IR_RIIC3_RXI3,IR_RIIC3_TXI3,IR_RIIC3_TEI3, -IR_DMAC_DMAC0I,IR_DMAC_DMAC1I,IR_DMAC_DMAC2I,IR_DMAC_DMAC3I, -IR_EXDMAC_EXDMAC0I,IR_EXDMAC_EXDMAC1I, -IR_SCI0_RXI0=214,IR_SCI0_TXI0,IR_SCI0_TEI0, -IR_SCI1_RXI1,IR_SCI1_TXI1,IR_SCI1_TEI1, -IR_SCI2_RXI2,IR_SCI2_TXI2,IR_SCI2_TEI2, -IR_SCI3_RXI3,IR_SCI3_TXI3,IR_SCI3_TEI3, -IR_SCI4_RXI4,IR_SCI4_TXI4,IR_SCI4_TEI4, -IR_SCI5_RXI5,IR_SCI5_TXI5,IR_SCI5_TEI5, -IR_SCI6_RXI6,IR_SCI6_TXI6,IR_SCI6_TEI6, -IR_SCI7_RXI7,IR_SCI7_TXI7,IR_SCI7_TEI7, -IR_SCI8_RXI8,IR_SCI8_TXI8,IR_SCI8_TEI8, -IR_SCI9_RXI9,IR_SCI9_TXI9,IR_SCI9_TEI9, -IR_SCI10_RXI10,IR_SCI10_TXI10,IR_SCI10_TEI10, -IR_SCI11_RXI11,IR_SCI11_TXI11,IR_SCI11_TEI11, -IR_SCI12_RXI12,IR_SCI12_TXI12,IR_SCI12_TEI12, -IR_IEB_IEBINT -}; - -enum enum_dtce { -DTCE_ICU_SWINT=27, -DTCE_CMT0_CMI0, -DTCE_CMT1_CMI1, -DTCE_CMT2_CMI2, -DTCE_CMT3_CMI3, -DTCE_USB0_D0FIFO0=33,DTCE_USB0_D1FIFO0, -DTCE_USB1_D0FIFO1=36,DTCE_USB1_D1FIFO1, -DTCE_RSPI0_SPRI0=39,DTCE_RSPI0_SPTI0, -DTCE_RSPI1_SPRI1=42,DTCE_RSPI1_SPTI1, -DTCE_RSPI2_SPRI2=45,DTCE_RSPI2_SPTI2, -DTCE_ICU_IRQ0=64,DTCE_ICU_IRQ1,DTCE_ICU_IRQ2,DTCE_ICU_IRQ3,DTCE_ICU_IRQ4,DTCE_ICU_IRQ5,DTCE_ICU_IRQ6,DTCE_ICU_IRQ7,DTCE_ICU_IRQ8,DTCE_ICU_IRQ9,DTCE_ICU_IRQ10,DTCE_ICU_IRQ11,DTCE_ICU_IRQ12,DTCE_ICU_IRQ13,DTCE_ICU_IRQ14,DTCE_ICU_IRQ15, -DTCE_AD0_ADI0=98, -DTCE_S12AD0_S12ADI0=102, -DTCE_TPU0_TGI0A=126,DTCE_TPU0_TGI0B,DTCE_TPU0_TGI0C,DTCE_TPU0_TGI0D, -DTCE_TPU1_TGI1A,DTCE_TPU1_TGI1B, -DTCE_TPU2_TGI2A,DTCE_TPU2_TGI2B, -DTCE_TPU3_TGI3A,DTCE_TPU3_TGI3B,DTCE_TPU3_TGI3C,DTCE_TPU3_TGI3D, -DTCE_TPU4_TGI4A,DTCE_TPU4_TGI4B, -DTCE_TPU5_TGI5A,DTCE_TPU5_TGI5B, -DTCE_TPU6_TGI6A,DTCE_TPU6_TGI6B,DTCE_TPU6_TGI6C,DTCE_TPU6_TGI6D, -DTCE_MTU0_TGIA0=142,DTCE_MTU0_TGIB0,DTCE_MTU0_TGIC0,DTCE_MTU0_TGID0, -DTCE_TPU7_TGI7A=148,DTCE_TPU7_TGI7B, -DTCE_MTU1_TGIA1=148,DTCE_MTU1_TGIB1, -DTCE_TPU8_TGI8A,DTCE_TPU8_TGI8B, -DTCE_MTU2_TGIA2=150,DTCE_MTU2_TGIB2, -DTCE_TPU9_TGI9A,DTCE_TPU9_TGI9B,DTCE_TPU9_TGI9C,DTCE_TPU9_TGI9D, -DTCE_MTU3_TGIA3=152,DTCE_MTU3_TGIB3,DTCE_MTU3_TGIC3,DTCE_MTU3_TGID3, -DTCE_TPU10_TGI10A,DTCE_TPU10_TGI10B, -DTCE_MTU4_TGIA4=156,DTCE_MTU4_TGIB4,DTCE_MTU4_TGIC4,DTCE_MTU4_TGID4,DTCE_MTU4_TCIV4, -DTCE_MTU5_TGIU5,DTCE_MTU5_TGIV5,DTCE_MTU5_TGIW5, -DTCE_TPU11_TGI11A,DTCE_TPU11_TGI11B, -DTCE_TMR0_CMIA0=170,DTCE_TMR0_CMIB0, -DTCE_TMR1_CMIA1=173,DTCE_TMR1_CMIB1, -DTCE_TMR2_CMIA2=176,DTCE_TMR2_CMIB2, -DTCE_TMR3_CMIA3=179,DTCE_TMR3_CMIB3, -DTCE_RIIC0_RXI0=183,DTCE_RIIC0_TXI0, -DTCE_RIIC1_RXI1=187,DTCE_RIIC1_TXI1, -DTCE_RIIC2_RXI2=191,DTCE_RIIC2_TXI2, -DTCE_RIIC3_RXI3=195,DTCE_RIIC3_TXI3, -DTCE_DMAC_DMAC0I=198,DTCE_DMAC_DMAC1I,DTCE_DMAC_DMAC2I,DTCE_DMAC_DMAC3I, -DTCE_EXDMAC_EXDMAC0I,DTCE_EXDMAC_EXDMAC1I, -DTCE_SCI0_RXI0=214,DTCE_SCI0_TXI0, -DTCE_SCI1_RXI1=217,DTCE_SCI1_TXI1, -DTCE_SCI2_RXI2=220,DTCE_SCI2_TXI2, -DTCE_SCI3_RXI3=223,DTCE_SCI3_TXI3, -DTCE_SCI4_RXI4=226,DTCE_SCI4_TXI4, -DTCE_SCI5_RXI5=229,DTCE_SCI5_TXI5, -DTCE_SCI6_RXI6=232,DTCE_SCI6_TXI6, -DTCE_SCI7_RXI7=235,DTCE_SCI7_TXI7, -DTCE_SCI8_RXI8=238,DTCE_SCI8_TXI8, -DTCE_SCI9_RXI9=241,DTCE_SCI9_TXI9, -DTCE_SCI10_RXI10=244,DTCE_SCI10_TXI10, -DTCE_SCI11_RXI11=247,DTCE_SCI11_TXI11, -DTCE_SCI12_RXI12=250,DTCE_SCI12_TXI12 -}; - -enum enum_ier { -IER_BSC_BUSERR=0x02, -IER_FCU_FIFERR=0x02,IER_FCU_FRDYI=0x02, -IER_ICU_SWINT=0x03, -IER_CMT0_CMI0=0x03, -IER_CMT1_CMI1=0x03, -IER_CMT2_CMI2=0x03, -IER_CMT3_CMI3=0x03, -IER_ETHER_EINT=0x04, -IER_USB0_D0FIFO0=0x04,IER_USB0_D1FIFO0=0x04,IER_USB0_USBI0=0x04, -IER_USB1_D0FIFO1=0x04,IER_USB1_D1FIFO1=0x04,IER_USB1_USBI1=0x04, -IER_RSPI0_SPRI0=0x04,IER_RSPI0_SPTI0=0x05,IER_RSPI0_SPII0=0x05, -IER_RSPI1_SPRI1=0x05,IER_RSPI1_SPTI1=0x05,IER_RSPI1_SPII1=0x05, -IER_RSPI2_SPRI2=0x05,IER_RSPI2_SPTI2=0x05,IER_RSPI2_SPII2=0x05, -IER_CAN0_RXF0=0x06,IER_CAN0_TXF0=0x06,IER_CAN0_RXM0=0x06,IER_CAN0_TXM0=0x06, -IER_CAN1_RXF1=0x06,IER_CAN1_TXF1=0x06,IER_CAN1_RXM1=0x06,IER_CAN1_TXM1=0x06, -IER_CAN2_RXF2=0x07,IER_CAN2_TXF2=0x07,IER_CAN2_RXM2=0x07,IER_CAN2_TXM2=0x07, -IER_RTC_COUNTUP=0x07, -IER_ICU_IRQ0=0x08,IER_ICU_IRQ1=0x08,IER_ICU_IRQ2=0x08,IER_ICU_IRQ3=0x08,IER_ICU_IRQ4=0x08,IER_ICU_IRQ5=0x08,IER_ICU_IRQ6=0x08,IER_ICU_IRQ7=0x08,IER_ICU_IRQ8=0x09,IER_ICU_IRQ9=0x09,IER_ICU_IRQ10=0x09,IER_ICU_IRQ11=0x09,IER_ICU_IRQ12=0x09,IER_ICU_IRQ13=0x09,IER_ICU_IRQ14=0x09,IER_ICU_IRQ15=0x09, -IER_USB_USBR0=0x0B,IER_USB_USBR1=0x0B, -IER_RTC_ALARM=0x0B,IER_RTC_PRD=0x0B, -IER_AD0_ADI0=0x0C, -IER_S12AD0_S12ADI0=0x0C, -IER_ICU_GROUPE0=0x0D,IER_ICU_GROUPE1=0x0D,IER_ICU_GROUPE2=0x0D,IER_ICU_GROUPE3=0x0D,IER_ICU_GROUPE4=0x0D,IER_ICU_GROUPE5=0x0D,IER_ICU_GROUPE6=0x0E,IER_ICU_GROUPL0=0x0E, -IER_SCIX_SCIX0=0x0F,IER_SCIX_SCIX1=0x0F,IER_SCIX_SCIX2=0x0F,IER_SCIX_SCIX3=0x0F, -IER_TPU0_TGI0A=0x0F,IER_TPU0_TGI0B=0x0F,IER_TPU0_TGI0C=0x10,IER_TPU0_TGI0D=0x10, -IER_TPU1_TGI1A=0x10,IER_TPU1_TGI1B=0x10, -IER_TPU2_TGI2A=0x10,IER_TPU2_TGI2B=0x10, -IER_TPU3_TGI3A=0x10,IER_TPU3_TGI3B=0x10,IER_TPU3_TGI3C=0x11,IER_TPU3_TGI3D=0x11, -IER_TPU4_TGI4A=0x11,IER_TPU4_TGI4B=0x11, -IER_TPU5_TGI5A=0x11,IER_TPU5_TGI5B=0x11, -IER_TPU6_TGI6A=0x11,IER_TPU6_TGI6B=0x11,IER_TPU6_TGI6C=0x12,IER_TPU6_TGI6D=0x12, -IER_MTU0_TGIA0=0x11,IER_MTU0_TGIB0=0x11,IER_MTU0_TGIC0=0x12,IER_MTU0_TGID0=0x12,IER_MTU0_TGIE0=0x12,IER_MTU0_TGIF0=0x12, -IER_TPU7_TGI7A=0x12,IER_TPU7_TGI7B=0x12, -IER_MTU1_TGIA1=0x12,IER_MTU1_TGIB1=0x12, -IER_TPU8_TGI8A=0x12,IER_TPU8_TGI8B=0x12, -IER_MTU2_TGIA2=0x12,IER_MTU2_TGIB2=0x12, -IER_TPU9_TGI9A=0x13,IER_TPU9_TGI9B=0x13,IER_TPU9_TGI9C=0x13,IER_TPU9_TGI9D=0x13, -IER_MTU3_TGIA3=0x13,IER_MTU3_TGIB3=0x13,IER_MTU3_TGIC3=0x13,IER_MTU3_TGID3=0x13, -IER_TPU10_TGI10A=0x13,IER_TPU10_TGI10B=0x13, -IER_MTU4_TGIA4=0x13,IER_MTU4_TGIB4=0x13,IER_MTU4_TGIC4=0x13,IER_MTU4_TGID4=0x13,IER_MTU4_TCIV4=0x14, -IER_MTU5_TGIU5=0x14,IER_MTU5_TGIV5=0x14,IER_MTU5_TGIW5=0x14, -IER_TPU11_TGI11A=0x14,IER_TPU11_TGI11B=0x14, -IER_POE_OEI1=0x14,IER_POE_OEI2=0x14, -IER_TMR0_CMIA0=0x15,IER_TMR0_CMIB0=0x15,IER_TMR0_OVI0=0x15, -IER_TMR1_CMIA1=0x15,IER_TMR1_CMIB1=0x15,IER_TMR1_OVI1=0x15, -IER_TMR2_CMIA2=0x16,IER_TMR2_CMIB2=0x16,IER_TMR2_OVI2=0x16, -IER_TMR3_CMIA3=0x16,IER_TMR3_CMIB3=0x16,IER_TMR3_OVI3=0x16, -IER_RIIC0_EEI0=0x16,IER_RIIC0_RXI0=0x16,IER_RIIC0_TXI0=0x17,IER_RIIC0_TEI0=0x17, -IER_RIIC1_EEI1=0x17,IER_RIIC1_RXI1=0x17,IER_RIIC1_TXI1=0x17,IER_RIIC1_TEI1=0x17, -IER_RIIC2_EEI2=0x17,IER_RIIC2_RXI2=0x17,IER_RIIC2_TXI2=0x18,IER_RIIC2_TEI2=0x18, -IER_RIIC3_EEI3=0x18,IER_RIIC3_RXI3=0x18,IER_RIIC3_TXI3=0x18,IER_RIIC3_TEI3=0x18, -IER_DMAC_DMAC0I=0x18,IER_DMAC_DMAC1I=0x18,IER_DMAC_DMAC2I=0x19,IER_DMAC_DMAC3I=0x19, -IER_EXDMAC_EXDMAC0I=0x19,IER_EXDMAC_EXDMAC1I=0x19, -IER_SCI0_RXI0=0x1A,IER_SCI0_TXI0=0x1A,IER_SCI0_TEI0=0x1B, -IER_SCI1_RXI1=0x1B,IER_SCI1_TXI1=0x1B,IER_SCI1_TEI1=0x1B, -IER_SCI2_RXI2=0x1B,IER_SCI2_TXI2=0x1B,IER_SCI2_TEI2=0x1B, -IER_SCI3_RXI3=0x1B,IER_SCI3_TXI3=0x1C,IER_SCI3_TEI3=0x1C, -IER_SCI4_RXI4=0x1C,IER_SCI4_TXI4=0x1C,IER_SCI4_TEI4=0x1C, -IER_SCI5_RXI5=0x1C,IER_SCI5_TXI5=0x1C,IER_SCI5_TEI5=0x1C, -IER_SCI6_RXI6=0x1D,IER_SCI6_TXI6=0x1D,IER_SCI6_TEI6=0x1D, -IER_SCI7_RXI7=0x1D,IER_SCI7_TXI7=0x1D,IER_SCI7_TEI7=0x1D, -IER_SCI8_RXI8=0x1D,IER_SCI8_TXI8=0x1D,IER_SCI8_TEI8=0x1E, -IER_SCI9_RXI9=0x1E,IER_SCI9_TXI9=0x1E,IER_SCI9_TEI9=0x1E, -IER_SCI10_RXI10=0x1E,IER_SCI10_TXI10=0x1E,IER_SCI10_TEI10=0x1E, -IER_SCI11_RXI11=0x1E,IER_SCI11_TXI11=0x1F,IER_SCI11_TEI11=0x1F, -IER_SCI12_RXI12=0x1F,IER_SCI12_TXI12=0x1F,IER_SCI12_TEI12=0x1F, -IER_IEB_IEBINT=0x1F -}; - -enum enum_ipr { -IPR_BSC_BUSERR=0, -IPR_FCU_FIFERR=1,IPR_FCU_FRDYI=2, -IPR_ICU_SWINT=3, -IPR_CMT0_CMI0=4, -IPR_CMT1_CMI1=5, -IPR_CMT2_CMI2=6, -IPR_CMT3_CMI3=7, -IPR_ETHER_EINT=32, -IPR_USB0_D0FIFO0=33,IPR_USB0_D1FIFO0=34,IPR_USB0_USBI0=35, -IPR_USB1_D0FIFO1=36,IPR_USB1_D1FIFO1=37,IPR_USB1_USBI1=38, -IPR_RSPI0_SPRI0=39,IPR_RSPI0_SPTI0=39,IPR_RSPI0_SPII0=39, -IPR_RSPI1_SPRI1=42,IPR_RSPI1_SPTI1=42,IPR_RSPI1_SPII1=42, -IPR_RSPI2_SPRI2=45,IPR_RSPI2_SPTI2=45,IPR_RSPI2_SPII2=45, -IPR_CAN0_RXF0=48,IPR_CAN0_TXF0=48,IPR_CAN0_RXM0=48,IPR_CAN0_TXM0=48, -IPR_CAN1_RXF1=52,IPR_CAN1_TXF1=52,IPR_CAN1_RXM1=52,IPR_CAN1_TXM1=52, -IPR_CAN2_RXF2=56,IPR_CAN2_TXF2=56,IPR_CAN2_RXM2=56,IPR_CAN2_TXM2=56, -IPR_RTC_COUNTUP=62, -IPR_ICU_IRQ0=64,IPR_ICU_IRQ1=65,IPR_ICU_IRQ2=66,IPR_ICU_IRQ3=67,IPR_ICU_IRQ4=68,IPR_ICU_IRQ5=69,IPR_ICU_IRQ6=70,IPR_ICU_IRQ7=71,IPR_ICU_IRQ8=72,IPR_ICU_IRQ9=73,IPR_ICU_IRQ10=74,IPR_ICU_IRQ11=75,IPR_ICU_IRQ12=76,IPR_ICU_IRQ13=77,IPR_ICU_IRQ14=78,IPR_ICU_IRQ15=79, -IPR_USB_USBR0=90,IPR_USB_USBR1=91, -IPR_RTC_ALARM=92,IPR_RTC_PRD=93, -IPR_AD0_ADI0=98, -IPR_S12AD0_S12ADI0=102, -IPR_ICU_GROUPE0=106,IPR_ICU_GROUPE1=107,IPR_ICU_GROUPE2=108,IPR_ICU_GROUPE3=109,IPR_ICU_GROUPE4=110,IPR_ICU_GROUPE5=111,IPR_ICU_GROUPE6=112,IPR_ICU_GROUPL0=114, -IPR_SCIX_SCIX0=122,IPR_SCIX_SCIX1=122,IPR_SCIX_SCIX2=122,IPR_SCIX_SCIX3=122, -IPR_TPU0_TGI0A=126,IPR_TPU0_TGI0B=126,IPR_TPU0_TGI0C=126,IPR_TPU0_TGI0D=126, -IPR_TPU1_TGI1A=130,IPR_TPU1_TGI1B=130, -IPR_TPU2_TGI2A=132,IPR_TPU2_TGI2B=132, -IPR_TPU3_TGI3A=134,IPR_TPU3_TGI3B=134,IPR_TPU3_TGI3C=134,IPR_TPU3_TGI3D=134, -IPR_TPU4_TGI4A=138,IPR_TPU4_TGI4B=138, -IPR_TPU5_TGI5A=140,IPR_TPU5_TGI5B=140, -IPR_TPU6_TGI6A=142,IPR_TPU6_TGI6B=142,IPR_TPU6_TGI6C=142,IPR_TPU6_TGI6D=142, -IPR_MTU0_TGIA0=142,IPR_MTU0_TGIB0=142,IPR_MTU0_TGIC0=142,IPR_MTU0_TGID0=142,IPR_MTU0_TGIE0=146,IPR_MTU0_TGIF0=146, -IPR_TPU7_TGI7A=148,IPR_TPU7_TGI7B=148, -IPR_MTU1_TGIA1=148,IPR_MTU1_TGIB1=148, -IPR_TPU8_TGI8A=150,IPR_TPU8_TGI8B=150, -IPR_MTU2_TGIA2=150,IPR_MTU2_TGIB2=150, -IPR_TPU9_TGI9A=152,IPR_TPU9_TGI9B=152,IPR_TPU9_TGI9C=152,IPR_TPU9_TGI9D=152, -IPR_MTU3_TGIA3=152,IPR_MTU3_TGIB3=152,IPR_MTU3_TGIC3=152,IPR_MTU3_TGID3=152, -IPR_TPU10_TGI10A=156,IPR_TPU10_TGI10B=156, -IPR_MTU4_TGIA4=156,IPR_MTU4_TGIB4=156,IPR_MTU4_TGIC4=156,IPR_MTU4_TGID4=156,IPR_MTU4_TCIV4=160, -IPR_MTU5_TGIU5=161,IPR_MTU5_TGIV5=161,IPR_MTU5_TGIW5=161, -IPR_TPU11_TGI11A=164,IPR_TPU11_TGI11B=164, -IPR_POE_OEI1=166,IPR_POE_OEI2=166, -IPR_TMR0_CMIA0=170,IPR_TMR0_CMIB0=170,IPR_TMR0_OVI0=170, -IPR_TMR1_CMIA1=173,IPR_TMR1_CMIB1=173,IPR_TMR1_OVI1=173, -IPR_TMR2_CMIA2=176,IPR_TMR2_CMIB2=176,IPR_TMR2_OVI2=176, -IPR_TMR3_CMIA3=179,IPR_TMR3_CMIB3=179,IPR_TMR3_OVI3=179, -IPR_RIIC0_EEI0=182,IPR_RIIC0_RXI0=183,IPR_RIIC0_TXI0=184,IPR_RIIC0_TEI0=185, -IPR_RIIC1_EEI1=186,IPR_RIIC1_RXI1=187,IPR_RIIC1_TXI1=188,IPR_RIIC1_TEI1=189, -IPR_RIIC2_EEI2=190,IPR_RIIC2_RXI2=191,IPR_RIIC2_TXI2=192,IPR_RIIC2_TEI2=193, -IPR_RIIC3_EEI3=194,IPR_RIIC3_RXI3=195,IPR_RIIC3_TXI3=196,IPR_RIIC3_TEI3=197, -IPR_DMAC_DMAC0I=198,IPR_DMAC_DMAC1I=199,IPR_DMAC_DMAC2I=200,IPR_DMAC_DMAC3I=201, -IPR_EXDMAC_EXDMAC0I=202,IPR_EXDMAC_EXDMAC1I=203, -IPR_SCI0_RXI0=214,IPR_SCI0_TXI0=214,IPR_SCI0_TEI0=214, -IPR_SCI1_RXI1=217,IPR_SCI1_TXI1=217,IPR_SCI1_TEI1=217, -IPR_SCI2_RXI2=220,IPR_SCI2_TXI2=220,IPR_SCI2_TEI2=220, -IPR_SCI3_RXI3=223,IPR_SCI3_TXI3=223,IPR_SCI3_TEI3=223, -IPR_SCI4_RXI4=226,IPR_SCI4_TXI4=226,IPR_SCI4_TEI4=226, -IPR_SCI5_RXI5=229,IPR_SCI5_TXI5=229,IPR_SCI5_TEI5=229, -IPR_SCI6_RXI6=232,IPR_SCI6_TXI6=232,IPR_SCI6_TEI6=232, -IPR_SCI7_RXI7=235,IPR_SCI7_TXI7=235,IPR_SCI7_TEI7=235, -IPR_SCI8_RXI8=238,IPR_SCI8_TXI8=238,IPR_SCI8_TEI8=238, -IPR_SCI9_RXI9=241,IPR_SCI9_TXI9=241,IPR_SCI9_TEI9=241, -IPR_SCI10_RXI10=244,IPR_SCI10_TXI10=244,IPR_SCI10_TEI10=244, -IPR_SCI11_RXI11=247,IPR_SCI11_TXI11=247,IPR_SCI11_TEI11=247, -IPR_SCI12_RXI12=250,IPR_SCI12_TXI12=250,IPR_SCI12_TEI12=250, -IPR_IEB_IEBINT=253, -IPR_BSC_=0, -IPR_CMT0_=4, -IPR_CMT1_=5, -IPR_CMT2_=6, -IPR_CMT3_=7, -IPR_ETHER_=32, -IPR_RSPI0_=39, -IPR_RSPI1_=42, -IPR_RSPI2_=45, -IPR_CAN0_=48, -IPR_CAN1_=52, -IPR_CAN2_=56, -IPR_AD0_=98, -IPR_S12AD0_=102, -IPR_SCIX_=122, -IPR_SCIX_SCI=122, -IPR_TPU0_=126, -IPR_TPU0_TGI=126, -IPR_TPU1_=130, -IPR_TPU1_TGI=130, -IPR_TPU2_=132, -IPR_TPU2_TGI=132, -IPR_TPU3_=134, -IPR_TPU3_TGI=134, -IPR_TPU4_=138, -IPR_TPU4_TGI=138, -IPR_TPU5_=140, -IPR_TPU5_TGI=140, -IPR_MTU5_=161, -IPR_MTU5_TGI=161, -IPR_TPU11_=164, -IPR_TPU11_TGI=164, -IPR_POE_=166, -IPR_POE_OEI=166, -IPR_TMR0_=170, -IPR_TMR1_=173, -IPR_TMR2_=176, -IPR_TMR3_=179, -IPR_SCI0_=214, -IPR_SCI1_=217, -IPR_SCI2_=220, -IPR_SCI3_=223, -IPR_SCI4_=226, -IPR_SCI5_=229, -IPR_SCI6_=232, -IPR_SCI7_=235, -IPR_SCI8_=238, -IPR_SCI9_=241, -IPR_SCI10_=244, -IPR_SCI11_=247, -IPR_SCI12_=250, -IPR_IEB_=253 -}; - -enum enum_grp { -GRP_CAN0_ERS0=0,GRP_CAN1_ERS1=0,GRP_CAN2_ERS2=0, -GRP_MTU0_TCIV0=1,GRP_MTU1_TCIV1=1,GRP_MTU1_TCIU1=1, -GRP_MTU2_TCIV2=2,GRP_MTU2_TCIU2=2,GRP_MTU3_TCIV3=2, -GRP_TPU0_TCI0V=3,GRP_TPU1_TCI1V=3,GRP_TPU1_TCI1U=3,GRP_TPU5_TCI5V=3,GRP_TPU5_TCI5U=3, -GRP_TPU2_TCI2V=4,GRP_TPU2_TCI2U=4,GRP_TPU3_TCI3V=4,GRP_TPU4_TCI4V=4,GRP_TPU4_TCI4U=4, -GRP_TPU6_TCI6V=5,GRP_TPU7_TCI7V=5,GRP_TPU7_TCI7U=5,GRP_TPU11_TCI11V=5,GRP_TPU11_TCI11U=5, -GRP_TPU8_TCI8V=6,GRP_TPU8_TCI8U=6,GRP_TPU9_TCI9V=6,GRP_TPU10_TCI10V=6,GRP_TPU10_TCI10U=6, -GRP_SCI0_ERI0=12,GRP_SCI1_ERI1=12,GRP_SCI2_ERI2=12,GRP_SCI3_ERI3=12,GRP_SCI4_ERI4=12,GRP_SCI5_ERI5=12,GRP_SCI6_ERI6=12, -GRP_SCI7_ERI7=12,GRP_SCI8_ERI8=12,GRP_SCI9_ERI9=12,GRP_SCI10_ERI10=12,GRP_SCI11_ERI11=12,GRP_SCI12_ERI12=12, -GRP_RSPI0_SPEI0=12,GRP_RSPI1_SPEI1=12,GRP_RSPI2_SPEI2=12 -}; - -enum enum_gen { -GEN_CAN0_ERS0=0,GEN_CAN1_ERS1=0,GEN_CAN2_ERS2=0, -GEN_MTU0_TCIV0=1,GEN_MTU1_TCIV1=1,GEN_MTU1_TCIU1=1, -GEN_MTU2_TCIV2=2,GEN_MTU2_TCIU2=2,GEN_MTU3_TCIV3=2, -GEN_TPU0_TCI0V=3,GEN_TPU1_TCI1V=3,GEN_TPU1_TCI1U=3,GEN_TPU5_TCI5V=3,GEN_TPU5_TCI5U=3, -GEN_TPU2_TCI2V=4,GEN_TPU2_TCI2U=4,GEN_TPU3_TCI3V=4,GEN_TPU4_TCI4V=4,GEN_TPU4_TCI4U=4, -GEN_TPU6_TCI6V=5,GEN_TPU7_TCI7V=5,GEN_TPU7_TCI7U=5,GEN_TPU11_TCI11V=5,GEN_TPU11_TCI11U=5, -GEN_TPU8_TCI8V=6,GEN_TPU8_TCI8U=6,GEN_TPU9_TCI9V=6,GEN_TPU10_TCI10V=6,GEN_TPU10_TCI10U=6, -GEN_SCI0_ERI0=12,GEN_SCI1_ERI1=12,GEN_SCI2_ERI2=12,GEN_SCI3_ERI3=12,GEN_SCI4_ERI4=12,GEN_SCI5_ERI5=12,GEN_SCI6_ERI6=12, -GEN_SCI7_ERI7=12,GEN_SCI8_ERI8=12,GEN_SCI9_ERI9=12,GEN_SCI10_ERI10=12,GEN_SCI11_ERI11=12,GEN_SCI12_ERI12=12, -GEN_RSPI0_SPEI0=12,GEN_RSPI1_SPEI1=12,GEN_RSPI2_SPEI2=12 -}; - -enum enum_gcr { -GCR_CAN0_ERS0=0,GCR_CAN1_ERS1=0,GCR_CAN2_ERS2=0, -GCR_MTU0_TCIV0=1,GCR_MTU1_TCIV1=1,GCR_MTU1_TCIU1=1, -GCR_MTU2_TCIV2=2,GCR_MTU2_TCIU2=2,GCR_MTU3_TCIV3=2, -GCR_TPU0_TCI0V=3,GCR_TPU1_TCI1V=3,GCR_TPU1_TCI1U=3,GCR_TPU5_TCI5V=3,GCR_TPU5_TCI5U=3, -GCR_TPU2_TCI2V=4,GCR_TPU2_TCI2U=4,GCR_TPU3_TCI3V=4,GCR_TPU4_TCI4V=4,GCR_TPU4_TCI4U=4, -GCR_TPU6_TCI6V=5,GCR_TPU7_TCI7V=5,GCR_TPU7_TCI7U=5,GCR_TPU11_TCI11V=5,GCR_TPU11_TCI11U=5, -GCR_TPU8_TCI8V=6,GCR_TPU8_TCI8U=6,GCR_TPU9_TCI9V=6,GCR_TPU10_TCI10V=6,GCR_TPU10_TCI10U=6, -GCR_SCI0_ERI0=12,GCR_SCI1_ERI1=12,GCR_SCI2_ERI2=12,GCR_SCI3_ERI3=12,GCR_SCI4_ERI4=12,GCR_SCI5_ERI5=12,GCR_SCI6_ERI6=12, -GCR_SCI7_ERI7=12,GCR_SCI8_ERI8=12,GCR_SCI9_ERI9=12,GCR_SCI10_ERI10=12,GCR_SCI11_ERI11=12,GCR_SCI12_ERI12=12, -GCR_RSPI0_SPEI0=12,GCR_RSPI1_SPEI1=12,GCR_RSPI2_SPEI2=12 -}; - -#define IEN_BSC_BUSERR IEN0 -#define IEN_FCU_FIFERR IEN5 -#define IEN_FCU_FRDYI IEN7 -#define IEN_ICU_SWINT IEN3 -#define IEN_CMT0_CMI0 IEN4 -#define IEN_CMT1_CMI1 IEN5 -#define IEN_CMT2_CMI2 IEN6 -#define IEN_CMT3_CMI3 IEN7 -#define IEN_ETHER_EINT IEN0 -#define IEN_USB0_D0FIFO0 IEN1 -#define IEN_USB0_D1FIFO0 IEN2 -#define IEN_USB0_USBI0 IEN3 -#define IEN_USB1_D0FIFO1 IEN4 -#define IEN_USB1_D1FIFO1 IEN5 -#define IEN_USB1_USBI1 IEN6 -#define IEN_RSPI0_SPRI0 IEN7 -#define IEN_RSPI0_SPTI0 IEN0 -#define IEN_RSPI0_SPII0 IEN1 -#define IEN_RSPI1_SPRI1 IEN2 -#define IEN_RSPI1_SPTI1 IEN3 -#define IEN_RSPI1_SPII1 IEN4 -#define IEN_RSPI2_SPRI2 IEN5 -#define IEN_RSPI2_SPTI2 IEN6 -#define IEN_RSPI2_SPII2 IEN7 -#define IEN_CAN0_RXF0 IEN0 -#define IEN_CAN0_TXF0 IEN1 -#define IEN_CAN0_RXM0 IEN2 -#define IEN_CAN0_TXM0 IEN3 -#define IEN_CAN1_RXF1 IEN4 -#define IEN_CAN1_TXF1 IEN5 -#define IEN_CAN1_RXM1 IEN6 -#define IEN_CAN1_TXM1 IEN7 -#define IEN_CAN2_RXF2 IEN0 -#define IEN_CAN2_TXF2 IEN1 -#define IEN_CAN2_RXM2 IEN2 -#define IEN_CAN2_TXM2 IEN3 -#define IEN_RTC_COUNTUP IEN6 -#define IEN_ICU_IRQ0 IEN0 -#define IEN_ICU_IRQ1 IEN1 -#define IEN_ICU_IRQ2 IEN2 -#define IEN_ICU_IRQ3 IEN3 -#define IEN_ICU_IRQ4 IEN4 -#define IEN_ICU_IRQ5 IEN5 -#define IEN_ICU_IRQ6 IEN6 -#define IEN_ICU_IRQ7 IEN7 -#define IEN_ICU_IRQ8 IEN0 -#define IEN_ICU_IRQ9 IEN1 -#define IEN_ICU_IRQ10 IEN2 -#define IEN_ICU_IRQ11 IEN3 -#define IEN_ICU_IRQ12 IEN4 -#define IEN_ICU_IRQ13 IEN5 -#define IEN_ICU_IRQ14 IEN6 -#define IEN_ICU_IRQ15 IEN7 -#define IEN_USB_USBR0 IEN2 -#define IEN_USB_USBR1 IEN3 -#define IEN_RTC_ALARM IEN4 -#define IEN_RTC_PRD IEN5 -#define IEN_AD0_ADI0 IEN2 -#define IEN_S12AD0_S12ADI0 IEN6 -#define IEN_ICU_GROUPE0 IEN2 -#define IEN_ICU_GROUPE1 IEN3 -#define IEN_ICU_GROUPE2 IEN4 -#define IEN_ICU_GROUPE3 IEN5 -#define IEN_ICU_GROUPE4 IEN6 -#define IEN_ICU_GROUPE5 IEN7 -#define IEN_ICU_GROUPE6 IEN0 -#define IEN_ICU_GROUPL0 IEN2 -#define IEN_SCIX_SCIX0 IEN2 -#define IEN_SCIX_SCIX1 IEN3 -#define IEN_SCIX_SCIX2 IEN4 -#define IEN_SCIX_SCIX3 IEN5 -#define IEN_TPU0_TGI0A IEN6 -#define IEN_TPU0_TGI0B IEN7 -#define IEN_TPU0_TGI0C IEN0 -#define IEN_TPU0_TGI0D IEN1 -#define IEN_TPU1_TGI1A IEN2 -#define IEN_TPU1_TGI1B IEN3 -#define IEN_TPU2_TGI2A IEN4 -#define IEN_TPU2_TGI2B IEN5 -#define IEN_TPU3_TGI3A IEN6 -#define IEN_TPU3_TGI3B IEN7 -#define IEN_TPU3_TGI3C IEN0 -#define IEN_TPU3_TGI3D IEN1 -#define IEN_TPU4_TGI4A IEN2 -#define IEN_TPU4_TGI4B IEN3 -#define IEN_TPU5_TGI5A IEN4 -#define IEN_TPU5_TGI5B IEN5 -#define IEN_TPU6_TGI6A IEN6 -#define IEN_TPU6_TGI6B IEN7 -#define IEN_TPU6_TGI6C IEN0 -#define IEN_TPU6_TGI6D IEN1 -#define IEN_MTU0_TGIA0 IEN6 -#define IEN_MTU0_TGIB0 IEN7 -#define IEN_MTU0_TGIC0 IEN0 -#define IEN_MTU0_TGID0 IEN1 -#define IEN_MTU0_TGIE0 IEN2 -#define IEN_MTU0_TGIF0 IEN3 -#define IEN_TPU7_TGI7A IEN4 -#define IEN_TPU7_TGI7B IEN5 -#define IEN_MTU1_TGIA1 IEN4 -#define IEN_MTU1_TGIB1 IEN5 -#define IEN_TPU8_TGI8A IEN6 -#define IEN_TPU8_TGI8B IEN7 -#define IEN_MTU2_TGIA2 IEN6 -#define IEN_MTU2_TGIB2 IEN7 -#define IEN_TPU9_TGI9A IEN0 -#define IEN_TPU9_TGI9B IEN1 -#define IEN_TPU9_TGI9C IEN2 -#define IEN_TPU9_TGI9D IEN3 -#define IEN_MTU3_TGIA3 IEN0 -#define IEN_MTU3_TGIB3 IEN1 -#define IEN_MTU3_TGIC3 IEN2 -#define IEN_MTU3_TGID3 IEN3 -#define IEN_TPU10_TGI10A IEN4 -#define IEN_TPU10_TGI10B IEN5 -#define IEN_MTU4_TGIA4 IEN4 -#define IEN_MTU4_TGIB4 IEN5 -#define IEN_MTU4_TGIC4 IEN6 -#define IEN_MTU4_TGID4 IEN7 -#define IEN_MTU4_TCIV4 IEN0 -#define IEN_MTU5_TGIU5 IEN1 -#define IEN_MTU5_TGIV5 IEN2 -#define IEN_MTU5_TGIW5 IEN3 -#define IEN_TPU11_TGI11A IEN4 -#define IEN_TPU11_TGI11B IEN5 -#define IEN_POE_OEI1 IEN6 -#define IEN_POE_OEI2 IEN7 -#define IEN_TMR0_CMIA0 IEN2 -#define IEN_TMR0_CMIB0 IEN3 -#define IEN_TMR0_OVI0 IEN4 -#define IEN_TMR1_CMIA1 IEN5 -#define IEN_TMR1_CMIB1 IEN6 -#define IEN_TMR1_OVI1 IEN7 -#define IEN_TMR2_CMIA2 IEN0 -#define IEN_TMR2_CMIB2 IEN1 -#define IEN_TMR2_OVI2 IEN2 -#define IEN_TMR3_CMIA3 IEN3 -#define IEN_TMR3_CMIB3 IEN4 -#define IEN_TMR3_OVI3 IEN5 -#define IEN_RIIC0_EEI0 IEN6 -#define IEN_RIIC0_RXI0 IEN7 -#define IEN_RIIC0_TXI0 IEN0 -#define IEN_RIIC0_TEI0 IEN1 -#define IEN_RIIC1_EEI1 IEN2 -#define IEN_RIIC1_RXI1 IEN3 -#define IEN_RIIC1_TXI1 IEN4 -#define IEN_RIIC1_TEI1 IEN5 -#define IEN_RIIC2_EEI2 IEN6 -#define IEN_RIIC2_RXI2 IEN7 -#define IEN_RIIC2_TXI2 IEN0 -#define IEN_RIIC2_TEI2 IEN1 -#define IEN_RIIC3_EEI3 IEN2 -#define IEN_RIIC3_RXI3 IEN3 -#define IEN_RIIC3_TXI3 IEN4 -#define IEN_RIIC3_TEI3 IEN5 -#define IEN_DMAC_DMAC0I IEN6 -#define IEN_DMAC_DMAC1I IEN7 -#define IEN_DMAC_DMAC2I IEN0 -#define IEN_DMAC_DMAC3I IEN1 -#define IEN_EXDMAC_EXDMAC0I IEN2 -#define IEN_EXDMAC_EXDMAC1I IEN3 -#define IEN_SCI0_RXI0 IEN6 -#define IEN_SCI0_TXI0 IEN7 -#define IEN_SCI0_TEI0 IEN0 -#define IEN_SCI1_RXI1 IEN1 -#define IEN_SCI1_TXI1 IEN2 -#define IEN_SCI1_TEI1 IEN3 -#define IEN_SCI2_RXI2 IEN4 -#define IEN_SCI2_TXI2 IEN5 -#define IEN_SCI2_TEI2 IEN6 -#define IEN_SCI3_RXI3 IEN7 -#define IEN_SCI3_TXI3 IEN0 -#define IEN_SCI3_TEI3 IEN1 -#define IEN_SCI4_RXI4 IEN2 -#define IEN_SCI4_TXI4 IEN3 -#define IEN_SCI4_TEI4 IEN4 -#define IEN_SCI5_RXI5 IEN5 -#define IEN_SCI5_TXI5 IEN6 -#define IEN_SCI5_TEI5 IEN7 -#define IEN_SCI6_RXI6 IEN0 -#define IEN_SCI6_TXI6 IEN1 -#define IEN_SCI6_TEI6 IEN2 -#define IEN_SCI7_RXI7 IEN3 -#define IEN_SCI7_TXI7 IEN4 -#define IEN_SCI7_TEI7 IEN5 -#define IEN_SCI8_RXI8 IEN6 -#define IEN_SCI8_TXI8 IEN7 -#define IEN_SCI8_TEI8 IEN0 -#define IEN_SCI9_RXI9 IEN1 -#define IEN_SCI9_TXI9 IEN2 -#define IEN_SCI9_TEI9 IEN3 -#define IEN_SCI10_RXI10 IEN4 -#define IEN_SCI10_TXI10 IEN5 -#define IEN_SCI10_TEI10 IEN6 -#define IEN_SCI11_RXI11 IEN7 -#define IEN_SCI11_TXI11 IEN0 -#define IEN_SCI11_TEI11 IEN1 -#define IEN_SCI12_RXI12 IEN2 -#define IEN_SCI12_TXI12 IEN3 -#define IEN_SCI12_TEI12 IEN4 -#define IEN_IEB_IEBINT IEN5 - -#define VECT_BSC_BUSERR 16 -#define VECT_FCU_FIFERR 21 -#define VECT_FCU_FRDYI 23 -#define VECT_ICU_SWINT 27 -#define VECT_CMT0_CMI0 28 -#define VECT_CMT1_CMI1 29 -#define VECT_CMT2_CMI2 30 -#define VECT_CMT3_CMI3 31 -#define VECT_ETHER_EINT 32 -#define VECT_USB0_D0FIFO0 33 -#define VECT_USB0_D1FIFO0 34 -#define VECT_USB0_USBI0 35 -#define VECT_USB1_D0FIFO1 36 -#define VECT_USB1_D1FIFO1 37 -#define VECT_USB1_USBI1 38 -#define VECT_RSPI0_SPRI0 39 -#define VECT_RSPI0_SPTI0 40 -#define VECT_RSPI0_SPII0 41 -#define VECT_RSPI1_SPRI1 42 -#define VECT_RSPI1_SPTI1 43 -#define VECT_RSPI1_SPII1 44 -#define VECT_RSPI2_SPRI2 45 -#define VECT_RSPI2_SPTI2 46 -#define VECT_RSPI2_SPII2 47 -#define VECT_CAN0_RXF0 48 -#define VECT_CAN0_TXF0 49 -#define VECT_CAN0_RXM0 50 -#define VECT_CAN0_TXM0 51 -#define VECT_CAN1_RXF1 52 -#define VECT_CAN1_TXF1 53 -#define VECT_CAN1_RXM1 54 -#define VECT_CAN1_TXM1 55 -#define VECT_CAN2_RXF2 56 -#define VECT_CAN2_TXF2 57 -#define VECT_CAN2_RXM2 58 -#define VECT_CAN2_TXM2 59 -#define VECT_RTC_COUNTUP 62 -#define VECT_ICU_IRQ0 64 -#define VECT_ICU_IRQ1 65 -#define VECT_ICU_IRQ2 66 -#define VECT_ICU_IRQ3 67 -#define VECT_ICU_IRQ4 68 -#define VECT_ICU_IRQ5 69 -#define VECT_ICU_IRQ6 70 -#define VECT_ICU_IRQ7 71 -#define VECT_ICU_IRQ8 72 -#define VECT_ICU_IRQ9 73 -#define VECT_ICU_IRQ10 74 -#define VECT_ICU_IRQ11 75 -#define VECT_ICU_IRQ12 76 -#define VECT_ICU_IRQ13 77 -#define VECT_ICU_IRQ14 78 -#define VECT_ICU_IRQ15 79 -#define VECT_USB_USBR0 90 -#define VECT_USB_USBR1 91 -#define VECT_RTC_ALARM 92 -#define VECT_RTC_PRD 93 -#define VECT_AD0_ADI0 98 -#define VECT_S12AD0_S12ADI0 102 -#define VECT_ICU_GROUPE0 106 -#define VECT_ICU_GROUPE1 107 -#define VECT_ICU_GROUPE2 108 -#define VECT_ICU_GROUPE3 109 -#define VECT_ICU_GROUPE4 110 -#define VECT_ICU_GROUPE5 111 -#define VECT_ICU_GROUPE6 112 -#define VECT_ICU_GROUPL0 114 -#define VECT_SCIX_SCIX0 122 -#define VECT_SCIX_SCIX1 123 -#define VECT_SCIX_SCIX2 124 -#define VECT_SCIX_SCIX3 125 -#define VECT_TPU0_TGI0A 126 -#define VECT_TPU0_TGI0B 127 -#define VECT_TPU0_TGI0C 128 -#define VECT_TPU0_TGI0D 129 -#define VECT_TPU1_TGI1A 130 -#define VECT_TPU1_TGI1B 131 -#define VECT_TPU2_TGI2A 132 -#define VECT_TPU2_TGI2B 133 -#define VECT_TPU3_TGI3A 134 -#define VECT_TPU3_TGI3B 135 -#define VECT_TPU3_TGI3C 136 -#define VECT_TPU3_TGI3D 137 -#define VECT_TPU4_TGI4A 138 -#define VECT_TPU4_TGI4B 139 -#define VECT_TPU5_TGI5A 140 -#define VECT_TPU5_TGI5B 141 -#define VECT_TPU6_TGI6A 142 -#define VECT_TPU6_TGI6B 143 -#define VECT_TPU6_TGI6C 144 -#define VECT_TPU6_TGI6D 145 -#define VECT_MTU0_TGIA0 142 -#define VECT_MTU0_TGIB0 143 -#define VECT_MTU0_TGIC0 144 -#define VECT_MTU0_TGID0 145 -#define VECT_MTU0_TGIE0 146 -#define VECT_MTU0_TGIF0 147 -#define VECT_TPU7_TGI7A 148 -#define VECT_TPU7_TGI7B 149 -#define VECT_MTU1_TGIA1 148 -#define VECT_MTU1_TGIB1 149 -#define VECT_TPU8_TGI8A 150 -#define VECT_TPU8_TGI8B 151 -#define VECT_MTU2_TGIA2 150 -#define VECT_MTU2_TGIB2 151 -#define VECT_TPU9_TGI9A 152 -#define VECT_TPU9_TGI9B 153 -#define VECT_TPU9_TGI9C 154 -#define VECT_TPU9_TGI9D 155 -#define VECT_MTU3_TGIA3 152 -#define VECT_MTU3_TGIB3 153 -#define VECT_MTU3_TGIC3 154 -#define VECT_MTU3_TGID3 155 -#define VECT_TPU10_TGI10A 156 -#define VECT_TPU10_TGI10B 157 -#define VECT_MTU4_TGIA4 156 -#define VECT_MTU4_TGIB4 157 -#define VECT_MTU4_TGIC4 158 -#define VECT_MTU4_TGID4 159 -#define VECT_MTU4_TCIV4 160 -#define VECT_MTU5_TGIU5 161 -#define VECT_MTU5_TGIV5 162 -#define VECT_MTU5_TGIW5 163 -#define VECT_TPU11_TGI11A 164 -#define VECT_TPU11_TGI11B 165 -#define VECT_POE_OEI1 166 -#define VECT_POE_OEI2 167 -#define VECT_TMR0_CMIA0 170 -#define VECT_TMR0_CMIB0 171 -#define VECT_TMR0_OVI0 172 -#define VECT_TMR1_CMIA1 173 -#define VECT_TMR1_CMIB1 174 -#define VECT_TMR1_OVI1 175 -#define VECT_TMR2_CMIA2 176 -#define VECT_TMR2_CMIB2 177 -#define VECT_TMR2_OVI2 178 -#define VECT_TMR3_CMIA3 179 -#define VECT_TMR3_CMIB3 180 -#define VECT_TMR3_OVI3 181 -#define VECT_RIIC0_EEI0 182 -#define VECT_RIIC0_RXI0 183 -#define VECT_RIIC0_TXI0 184 -#define VECT_RIIC0_TEI0 185 -#define VECT_RIIC1_EEI1 186 -#define VECT_RIIC1_RXI1 187 -#define VECT_RIIC1_TXI1 188 -#define VECT_RIIC1_TEI1 189 -#define VECT_RIIC2_EEI2 190 -#define VECT_RIIC2_RXI2 191 -#define VECT_RIIC2_TXI2 192 -#define VECT_RIIC2_TEI2 193 -#define VECT_RIIC3_EEI3 194 -#define VECT_RIIC3_RXI3 195 -#define VECT_RIIC3_TXI3 196 -#define VECT_RIIC3_TEI3 197 -#define VECT_DMAC_DMAC0I 198 -#define VECT_DMAC_DMAC1I 199 -#define VECT_DMAC_DMAC2I 200 -#define VECT_DMAC_DMAC3I 201 -#define VECT_EXDMAC_EXDMAC0I 202 -#define VECT_EXDMAC_EXDMAC1I 203 -#define VECT_SCI0_RXI0 214 -#define VECT_SCI0_TXI0 215 -#define VECT_SCI0_TEI0 216 -#define VECT_SCI1_RXI1 217 -#define VECT_SCI1_TXI1 218 -#define VECT_SCI1_TEI1 219 -#define VECT_SCI2_RXI2 220 -#define VECT_SCI2_TXI2 221 -#define VECT_SCI2_TEI2 222 -#define VECT_SCI3_RXI3 223 -#define VECT_SCI3_TXI3 224 -#define VECT_SCI3_TEI3 225 -#define VECT_SCI4_RXI4 226 -#define VECT_SCI4_TXI4 227 -#define VECT_SCI4_TEI4 228 -#define VECT_SCI5_RXI5 229 -#define VECT_SCI5_TXI5 230 -#define VECT_SCI5_TEI5 231 -#define VECT_SCI6_RXI6 232 -#define VECT_SCI6_TXI6 233 -#define VECT_SCI6_TEI6 234 -#define VECT_SCI7_RXI7 235 -#define VECT_SCI7_TXI7 236 -#define VECT_SCI7_TEI7 237 -#define VECT_SCI8_RXI8 238 -#define VECT_SCI8_TXI8 239 -#define VECT_SCI8_TEI8 240 -#define VECT_SCI9_RXI9 241 -#define VECT_SCI9_TXI9 242 -#define VECT_SCI9_TEI9 243 -#define VECT_SCI10_RXI10 244 -#define VECT_SCI10_TXI10 245 -#define VECT_SCI10_TEI10 246 -#define VECT_SCI11_RXI11 247 -#define VECT_SCI11_TXI11 248 -#define VECT_SCI11_TEI11 249 -#define VECT_SCI12_RXI12 250 -#define VECT_SCI12_TXI12 251 -#define VECT_SCI12_TEI12 252 -#define VECT_IEB_IEBINT 253 - -#define MSTP_DMAC SYSTEM.MSTPCRA.BIT.MSTPA28 -#define MSTP_DMAC0 SYSTEM.MSTPCRA.BIT.MSTPA28 -#define MSTP_DMAC1 SYSTEM.MSTPCRA.BIT.MSTPA28 -#define MSTP_DMAC2 SYSTEM.MSTPCRA.BIT.MSTPA28 -#define MSTP_DMAC3 SYSTEM.MSTPCRA.BIT.MSTPA28 -#define MSTP_DTC SYSTEM.MSTPCRA.BIT.MSTPA28 -#define MSTP_AD SYSTEM.MSTPCRA.BIT.MSTPA23 -#define MSTP_DA SYSTEM.MSTPCRA.BIT.MSTPA19 -#define MSTP_S12AD SYSTEM.MSTPCRA.BIT.MSTPA17 -#define MSTP_CMT0 SYSTEM.MSTPCRA.BIT.MSTPA15 -#define MSTP_CMT1 SYSTEM.MSTPCRA.BIT.MSTPA15 -#define MSTP_CMT2 SYSTEM.MSTPCRA.BIT.MSTPA14 -#define MSTP_CMT3 SYSTEM.MSTPCRA.BIT.MSTPA14 -#define MSTP_TPU0 SYSTEM.MSTPCRA.BIT.MSTPA13 -#define MSTP_TPU1 SYSTEM.MSTPCRA.BIT.MSTPA13 -#define MSTP_TPU2 SYSTEM.MSTPCRA.BIT.MSTPA13 -#define MSTP_TPU3 SYSTEM.MSTPCRA.BIT.MSTPA13 -#define MSTP_TPU4 SYSTEM.MSTPCRA.BIT.MSTPA13 -#define MSTP_TPU5 SYSTEM.MSTPCRA.BIT.MSTPA13 -#define MSTP_TPU6 SYSTEM.MSTPCRA.BIT.MSTPA12 -#define MSTP_TPU7 SYSTEM.MSTPCRA.BIT.MSTPA12 -#define MSTP_TPU8 SYSTEM.MSTPCRA.BIT.MSTPA12 -#define MSTP_TPU9 SYSTEM.MSTPCRA.BIT.MSTPA12 -#define MSTP_TPU10 SYSTEM.MSTPCRA.BIT.MSTPA12 -#define MSTP_TPU11 SYSTEM.MSTPCRA.BIT.MSTPA12 -#define MSTP_PPG0 SYSTEM.MSTPCRA.BIT.MSTPA11 -#define MSTP_PPG1 SYSTEM.MSTPCRA.BIT.MSTPA10 -#define MSTP_MTU SYSTEM.MSTPCRA.BIT.MSTPA9 -#define MSTP_MTU0 SYSTEM.MSTPCRA.BIT.MSTPA9 -#define MSTP_MTU1 SYSTEM.MSTPCRA.BIT.MSTPA9 -#define MSTP_MTU2 SYSTEM.MSTPCRA.BIT.MSTPA9 -#define MSTP_MTU3 SYSTEM.MSTPCRA.BIT.MSTPA9 -#define MSTP_MTU4 SYSTEM.MSTPCRA.BIT.MSTPA9 -#define MSTP_MTU5 SYSTEM.MSTPCRA.BIT.MSTPA9 -#define MSTP_TMR0 SYSTEM.MSTPCRA.BIT.MSTPA5 -#define MSTP_TMR1 SYSTEM.MSTPCRA.BIT.MSTPA5 -#define MSTP_TMR01 SYSTEM.MSTPCRA.BIT.MSTPA5 -#define MSTP_TMR2 SYSTEM.MSTPCRA.BIT.MSTPA4 -#define MSTP_TMR3 SYSTEM.MSTPCRA.BIT.MSTPA4 -#define MSTP_TMR23 SYSTEM.MSTPCRA.BIT.MSTPA4 -#define MSTP_SCI0 SYSTEM.MSTPCRB.BIT.MSTPB31 -#define MSTP_SMCI0 SYSTEM.MSTPCRB.BIT.MSTPB31 -#define MSTP_SCI1 SYSTEM.MSTPCRB.BIT.MSTPB30 -#define MSTP_SMCI1 SYSTEM.MSTPCRB.BIT.MSTPB30 -#define MSTP_SCI2 SYSTEM.MSTPCRB.BIT.MSTPB29 -#define MSTP_SMCI2 SYSTEM.MSTPCRB.BIT.MSTPB29 -#define MSTP_SCI3 SYSTEM.MSTPCRB.BIT.MSTPB28 -#define MSTP_SMCI3 SYSTEM.MSTPCRB.BIT.MSTPB28 -#define MSTP_SCI4 SYSTEM.MSTPCRB.BIT.MSTPB27 -#define MSTP_SMCI4 SYSTEM.MSTPCRB.BIT.MSTPB27 -#define MSTP_SCI5 SYSTEM.MSTPCRB.BIT.MSTPB26 -#define MSTP_SMCI5 SYSTEM.MSTPCRB.BIT.MSTPB26 -#define MSTP_SCI6 SYSTEM.MSTPCRB.BIT.MSTPB25 -#define MSTP_SMCI6 SYSTEM.MSTPCRB.BIT.MSTPB25 -#define MSTP_SCI7 SYSTEM.MSTPCRB.BIT.MSTPB24 -#define MSTP_SMCI7 SYSTEM.MSTPCRB.BIT.MSTPB24 -#define MSTP_CRC SYSTEM.MSTPCRB.BIT.MSTPB23 -#define MSTP_RIIC0 SYSTEM.MSTPCRB.BIT.MSTPB21 -#define MSTP_RIIC1 SYSTEM.MSTPCRB.BIT.MSTPB20 -#define MSTP_USB0 SYSTEM.MSTPCRB.BIT.MSTPB19 -#define MSTP_RSPI0 SYSTEM.MSTPCRB.BIT.MSTPB17 -#define MSTP_RSPI1 SYSTEM.MSTPCRB.BIT.MSTPB16 -#define MSTP_TEMPS SYSTEM.MSTPCRB.BIT.MSTPB8 -#define MSTP_SCI12 SYSTEM.MSTPCRB.BIT.MSTPB4 -#define MSTP_SMCI12 SYSTEM.MSTPCRB.BIT.MSTPB4 -#define MSTP_CAN2 SYSTEM.MSTPCRB.BIT.MSTPB2 -#define MSTP_CAN1 SYSTEM.MSTPCRB.BIT.MSTPB1 -#define MSTP_CAN0 SYSTEM.MSTPCRB.BIT.MSTPB0 -#define MSTP_SCI8 SYSTEM.MSTPCRC.BIT.MSTPC27 -#define MSTP_SMCI8 SYSTEM.MSTPCRC.BIT.MSTPC27 -#define MSTP_SCI9 SYSTEM.MSTPCRC.BIT.MSTPC26 -#define MSTP_SMCI9 SYSTEM.MSTPCRC.BIT.MSTPC26 -#define MSTP_SCI10 SYSTEM.MSTPCRC.BIT.MSTPC25 -#define MSTP_SMCI10 SYSTEM.MSTPCRC.BIT.MSTPC25 -#define MSTP_SCI11 SYSTEM.MSTPCRC.BIT.MSTPC24 -#define MSTP_SMCI11 SYSTEM.MSTPCRC.BIT.MSTPC24 -#define MSTP_RSPI2 SYSTEM.MSTPCRC.BIT.MSTPC22 -#define MSTP_LVD SYSTEM.MSTPCRC.BIT.MSTPC20 -#define MSTP_IEB SYSTEM.MSTPCRC.BIT.MSTPC18 -#define MSTP_RIIC2 SYSTEM.MSTPCRC.BIT.MSTPC17 -#define MSTP_RIIC3 SYSTEM.MSTPCRC.BIT.MSTPC16 -#define MSTP_RAM1 SYSTEM.MSTPCRC.BIT.MSTPC1 -#define MSTP_RAM0 SYSTEM.MSTPCRC.BIT.MSTPC0 - -#define IS_CAN0_ERS0 IS0 -#define IS_CAN1_ERS1 IS1 -#define IS_CAN2_ERS2 IS2 -#define IS_MTU0_TCIV0 IS0 -#define IS_MTU1_TCIV1 IS1 -#define IS_MTU1_TCIU1 IS2 -#define IS_MTU2_TCIV2 IS0 -#define IS_MTU2_TCIU2 IS1 -#define IS_MTU3_TCIV3 IS2 -#define IS_TPU0_TCI0V IS0 -#define IS_TPU1_TCI1V IS1 -#define IS_TPU1_TCI1U IS2 -#define IS_TPU5_TCI5V IS3 -#define IS_TPU5_TCI5U IS4 -#define IS_TPU2_TCI2V IS0 -#define IS_TPU2_TCI2U IS1 -#define IS_TPU3_TCI3V IS2 -#define IS_TPU4_TCI4V IS3 -#define IS_TPU4_TCI4U IS4 -#define IS_TPU6_TCI6V IS0 -#define IS_TPU7_TCI7V IS1 -#define IS_TPU7_TCI7U IS2 -#define IS_TPU11_TCI11V IS3 -#define IS_TPU11_TCI11U IS4 -#define IS_TPU8_TCI8V IS0 -#define IS_TPU8_TCI8U IS1 -#define IS_TPU9_TCI9V IS2 -#define IS_TPU10_TCI10V IS3 -#define IS_TPU10_TCI10U IS4 -#define IS_SCI0_ERI0 IS0 -#define IS_SCI1_ERI1 IS1 -#define IS_SCI2_ERI2 IS2 -#define IS_SCI3_ERI3 IS3 -#define IS_SCI4_ERI4 IS4 -#define IS_SCI5_ERI5 IS5 -#define IS_SCI6_ERI6 IS6 -#define IS_SCI7_ERI7 IS7 -#define IS_SCI8_ERI8 IS8 -#define IS_SCI9_ERI9 IS9 -#define IS_SCI10_ERI10 IS10 -#define IS_SCI11_ERI11 IS11 -#define IS_SCI12_ERI12 IS12 -#define IS_RSPI0_SPEI0 IS13 -#define IS_RSPI1_SPEI1 IS14 -#define IS_RSPI2_SPEI2 IS15 - -#define EN_CAN0_ERS0 EN0 -#define EN_CAN1_ERS1 EN1 -#define EN_CAN2_ERS2 EN2 -#define EN_MTU0_TCIV0 EN0 -#define EN_MTU1_TCIV1 EN1 -#define EN_MTU1_TCIU1 EN2 -#define EN_MTU2_TCIV2 EN0 -#define EN_MTU2_TCIU2 EN1 -#define EN_MTU3_TCIV3 EN2 -#define EN_TPU0_TCI0V EN0 -#define EN_TPU1_TCI1V EN1 -#define EN_TPU1_TCI1U EN2 -#define EN_TPU5_TCI5V EN3 -#define EN_TPU5_TCI5U EN4 -#define EN_TPU2_TCI2V EN0 -#define EN_TPU2_TCI2U EN1 -#define EN_TPU3_TCI3V EN2 -#define EN_TPU4_TCI4V EN3 -#define EN_TPU4_TCI4U EN4 -#define EN_TPU6_TCI6V EN0 -#define EN_TPU7_TCI7V EN1 -#define EN_TPU7_TCI7U EN2 -#define EN_TPU11_TCI11V EN3 -#define EN_TPU11_TCI11U EN4 -#define EN_TPU8_TCI8V EN0 -#define EN_TPU8_TCI8U EN1 -#define EN_TPU9_TCI9V EN2 -#define EN_TPU10_TCI10V EN3 -#define EN_TPU10_TCI10U EN4 -#define EN_SCI0_ERI0 EN0 -#define EN_SCI1_ERI1 EN1 -#define EN_SCI2_ERI2 EN2 -#define EN_SCI3_ERI3 EN3 -#define EN_SCI4_ERI4 EN4 -#define EN_SCI5_ERI5 EN5 -#define EN_SCI6_ERI6 EN6 -#define EN_SCI7_ERI7 EN7 -#define EN_SCI8_ERI8 EN8 -#define EN_SCI9_ERI9 EN9 -#define EN_SCI10_ERI10 EN10 -#define EN_SCI11_ERI11 EN11 -#define EN_SCI12_ERI12 EN12 -#define EN_RSPI0_SPEI0 EN13 -#define EN_RSPI1_SPEI1 EN14 -#define EN_RSPI2_SPEI2 EN15 - -#define CLR_CAN0_ERS0 CLR0 -#define CLR_CAN1_ERS1 CLR1 -#define CLR_CAN2_ERS2 CLR2 -#define CLR_MTU0_TCIV0 CLR0 -#define CLR_MTU1_TCIV1 CLR1 -#define CLR_MTU1_TCIU1 CLR2 -#define CLR_MTU2_TCIV2 CLR0 -#define CLR_MTU2_TCIU2 CLR1 -#define CLR_MTU3_TCIV3 CLR2 -#define CLR_TPU0_TCI0V CLR0 -#define CLR_TPU1_TCI1V CLR1 -#define CLR_TPU1_TCI1U CLR2 -#define CLR_TPU5_TCI5V CLR3 -#define CLR_TPU5_TCI5U CLR4 -#define CLR_TPU2_TCI2V CLR0 -#define CLR_TPU2_TCI2U CLR1 -#define CLR_TPU3_TCI3V CLR2 -#define CLR_TPU4_TCI4V CLR3 -#define CLR_TPU4_TCI4U CLR4 -#define CLR_TPU6_TCI6V CLR0 -#define CLR_TPU7_TCI7V CLR1 -#define CLR_TPU7_TCI7U CLR2 -#define CLR_TPU11_TCI11V CLR3 -#define CLR_TPU11_TCI11U CLR4 -#define CLR_TPU8_TCI8V CLR0 -#define CLR_TPU8_TCI8U CLR1 -#define CLR_TPU9_TCI9V CLR2 -#define CLR_TPU10_TCI10V CLR3 -#define CLR_TPU10_TCI10U CLR4 -#define CLR_SCI0_ERI0 CLR0 -#define CLR_SCI1_ERI1 CLR1 -#define CLR_SCI2_ERI2 CLR2 -#define CLR_SCI3_ERI3 CLR3 -#define CLR_SCI4_ERI4 CLR4 -#define CLR_SCI5_ERI5 CLR5 -#define CLR_SCI6_ERI6 CLR6 -#define CLR_SCI7_ERI7 CLR7 -#define CLR_SCI8_ERI8 CLR8 -#define CLR_SCI9_ERI9 CLR9 -#define CLR_SCI10_ERI10 CLR10 -#define CLR_SCI11_ERI11 CLR11 -#define CLR_SCI12_ERI12 CLR12 -#define CLR_RSPI0_SPEI0 CLR13 -#define CLR_RSPI1_SPEI1 CLR14 -#define CLR_RSPI2_SPEI2 CLR15 - -#define CN_TPU6_TGI6A CN0 -#define CN_TPU6_TGI6B CN0 -#define CN_TPU6_TGI6C CN0 -#define CN_TPU6_TGI6D CN0 -#define CN_MTU0_TGIA0 CN0 -#define CN_MTU0_TGIB0 CN0 -#define CN_MTU0_TGIC0 CN0 -#define CN_MTU0_TGID0 CN0 -#define CN_MTU0_TGIE0 CN0 -#define CN_MTU0_TGIF0 CN0 -#define CN_TPU7_TGI7A CN1 -#define CN_TPU7_TGI7B CN1 -#define CN_MTU1_TGIA1 CN1 -#define CN_MTU1_TGIB1 CN1 -#define CN_TPU8_TGI8A CN2 -#define CN_TPU8_TGI8B CN2 -#define CN_MTU2_TGIA2 CN2 -#define CN_MTU2_TGIB2 CN2 -#define CN_TPU9_TGI9A CN3 -#define CN_TPU9_TGI9B CN3 -#define CN_TPU9_TGI9C CN3 -#define CN_TPU9_TGI9D CN3 -#define CN_MTU3_TGIA3 CN3 -#define CN_MTU3_TGIB3 CN3 -#define CN_MTU3_TGIC3 CN3 -#define CN_MTU3_TGID3 CN3 -#define CN_TPU10_TGI10A CN4 -#define CN_TPU10_TGI10B CN4 -#define CN_MTU4_TGIA4 CN4 -#define CN_MTU4_TGIB4 CN4 -#define CN_MTU4_TGIC4 CN4 -#define CN_MTU4_TGID4 CN4 -#define CN_MTU4_TGIV4 CN4 -#define CN_TPU11_TGI11A CN5 -#define CN_TPU11_TGI11B CN5 -#define CN_MTU5_TGIU5 CN5 -#define CN_MTU5_TGIV5 CN5 -#define CN_MTU5_TGIW5 CN5 -#define CN_TPU6_ CN0 -#define CN_MTU0_ CN0 -#define CN_TPU7_ CN1 -#define CN_MTU1_ CN1 -#define CN_TPU8_ CN2 -#define CN_MTU2_ CN2 -#define CN_TPU9_ CN3 -#define CN_MTU3_ CN3 -#define CN_TPU10_ CN4 -#define CN_MTU4_ CN4 -#define CN_TPU11_ CN5 -#define CN_MTU5_ CN5 - -#define __IR( x ) ICU.IR[ IR ## x ].BIT.IR -#define _IR( x ) __IR( x ) -#define IR( x , y ) _IR( _ ## x ## _ ## y ) -#define __DTCE( x ) ICU.DTCER[ DTCE ## x ].BIT.DTCE -#define _DTCE( x ) __DTCE( x ) -#define DTCE( x , y ) _DTCE( _ ## x ## _ ## y ) -#define __IEN( x ) ICU.IER[ IER ## x ].BIT.IEN ## x -#define _IEN( x ) __IEN( x ) -#define IEN( x , y ) _IEN( _ ## x ## _ ## y ) -#define __IPR( x ) ICU.IPR[ IPR ## x ].BIT.IPR -#define _IPR( x ) __IPR( x ) -#define IPR( x , y ) _IPR( _ ## x ## _ ## y ) -#define __VECT( x ) VECT ## x -#define _VECT( x ) __VECT( x ) -#define VECT( x , y ) _VECT( _ ## x ## _ ## y ) -#define __MSTP( x ) MSTP ## x -#define _MSTP( x ) __MSTP( x ) -#define MSTP( x ) _MSTP( _ ## x ) - -#define __IS( x ) ICU.GRP[ GRP ## x ].BIT.IS ## x -#define _IS( x ) __IS( x ) -#define IS( x , y ) _IS( _ ## x ## _ ## y ) -#define __EN( x ) ICU.GEN[ GEN ## x ].BIT.EN ## x -#define _EN( x ) __EN( x ) -#define EN( x , y ) _EN( _ ## x ## _ ## y ) -#define __CLR( x ) ICU.GCR[ GCR ## x ].BIT.CLR ## x -#define _CLR( x ) __CLR( x ) -#define CLR( x , y ) _CLR( _ ## x ## _ ## y ) -#define __CN( x ) ICU.SEL.BIT.CN ## x -#define _CN( x ) __CN( x ) -#define CN( x , y ) _CN( _ ## x ## _ ## y ) - -#define AD (*(volatile struct st_ad __evenaccess *)0x89800) -#define BSC (*(volatile struct st_bsc __evenaccess *)0x81300) -#define CAN0 (*(volatile struct st_can __evenaccess *)0x90200) -#define CAN1 (*(volatile struct st_can __evenaccess *)0x91200) -#define CAN2 (*(volatile struct st_can __evenaccess *)0x92200) -#define CMT (*(volatile struct st_cmt __evenaccess *)0x88000) -#define CMT0 (*(volatile struct st_cmt0 __evenaccess *)0x88002) -#define CMT1 (*(volatile struct st_cmt0 __evenaccess *)0x88008) -#define CMT2 (*(volatile struct st_cmt0 __evenaccess *)0x88012) -#define CMT3 (*(volatile struct st_cmt0 __evenaccess *)0x88018) -#define CRC (*(volatile struct st_crc __evenaccess *)0x88280) -#define DA (*(volatile struct st_da __evenaccess *)0x880C0) -#define DMAC (*(volatile struct st_dmac __evenaccess *)0x82200) -#define DMAC0 (*(volatile struct st_dmac0 __evenaccess *)0x82000) -#define DMAC1 (*(volatile struct st_dmac1 __evenaccess *)0x82040) -#define DMAC2 (*(volatile struct st_dmac1 __evenaccess *)0x82080) -#define DMAC3 (*(volatile struct st_dmac1 __evenaccess *)0x820C0) -#define DTC (*(volatile struct st_dtc __evenaccess *)0x82400) -#define EDMAC (*(volatile struct st_edmac __evenaccess *)0xC0000) -#define ETHERC (*(volatile struct st_etherc __evenaccess *)0xC0100) -#define EXDMAC (*(volatile struct st_exdmac __evenaccess *)0x82A00) -#define EXDMAC0 (*(volatile struct st_exdmac0 __evenaccess *)0x82800) -#define EXDMAC1 (*(volatile struct st_exdmac1 __evenaccess *)0x82840) -#define FLASH (*(volatile struct st_flash __evenaccess *)0x8C296) -#define ICU (*(volatile struct st_icu __evenaccess *)0x87000) -#define IEB (*(volatile struct st_ieb __evenaccess *)0x8A800) -#define IWDT (*(volatile struct st_iwdt __evenaccess *)0x88030) -#define MPC (*(volatile struct st_mpc __evenaccess *)0x8C100) -#define MTU (*(volatile struct st_mtu __evenaccess *)0x8860A) -#define MTU0 (*(volatile struct st_mtu0 __evenaccess *)0x88690) -#define MTU1 (*(volatile struct st_mtu1 __evenaccess *)0x88690) -#define MTU2 (*(volatile struct st_mtu2 __evenaccess *)0x88692) -#define MTU3 (*(volatile struct st_mtu3 __evenaccess *)0x88600) -#define MTU4 (*(volatile struct st_mtu4 __evenaccess *)0x88600) -#define MTU5 (*(volatile struct st_mtu5 __evenaccess *)0x88694) -#define POE (*(volatile struct st_poe __evenaccess *)0x88900) -#define PORT0 (*(volatile struct st_port0 __evenaccess *)0x8C000) -#define PORT1 (*(volatile struct st_port1 __evenaccess *)0x8C001) -#define PORT2 (*(volatile struct st_port2 __evenaccess *)0x8C002) -#define PORT3 (*(volatile struct st_port3 __evenaccess *)0x8C003) -#define PORT4 (*(volatile struct st_port4 __evenaccess *)0x8C004) -#define PORT5 (*(volatile struct st_port5 __evenaccess *)0x8C005) -#define PORT6 (*(volatile struct st_port6 __evenaccess *)0x8C006) -#define PORT7 (*(volatile struct st_port7 __evenaccess *)0x8C007) -#define PORT8 (*(volatile struct st_port8 __evenaccess *)0x8C008) -#define PORT9 (*(volatile struct st_port9 __evenaccess *)0x8C009) -#define PORTA (*(volatile struct st_porta __evenaccess *)0x8C00A) -#define PORTB (*(volatile struct st_portb __evenaccess *)0x8C00B) -#define PORTC (*(volatile struct st_portc __evenaccess *)0x8C00C) -#define PORTD (*(volatile struct st_portd __evenaccess *)0x8C00D) -#define PORTE (*(volatile struct st_porte __evenaccess *)0x8C00E) -#define PORTF (*(volatile struct st_portf __evenaccess *)0x8C00F) -#define PORTG (*(volatile struct st_portg __evenaccess *)0x8C010) -#define PORTH (*(volatile struct st_porth __evenaccess *)0x8C0D1) -#define PORTJ (*(volatile struct st_portj __evenaccess *)0x8C012) -#define PPG0 (*(volatile struct st_ppg0 __evenaccess *)0x881E6) -#define PPG1 (*(volatile struct st_ppg1 __evenaccess *)0x881F0) -#define RIIC0 (*(volatile struct st_riic0 __evenaccess *)0x88300) -#define RIIC1 (*(volatile struct st_riic1 __evenaccess *)0x88320) -#define RIIC2 (*(volatile struct st_riic1 __evenaccess *)0x88340) -#define RIIC3 (*(volatile struct st_riic1 __evenaccess *)0x88360) -#define RSPI0 (*(volatile struct st_rspi __evenaccess *)0x88380) -#define RSPI1 (*(volatile struct st_rspi __evenaccess *)0x883A0) -#define RSPI2 (*(volatile struct st_rspi __evenaccess *)0x883C0) -#define RTC (*(volatile struct st_rtc __evenaccess *)0x8C400) -#define S12AD (*(volatile struct st_s12ad __evenaccess *)0x89000) -#define SCI0 (*(volatile struct st_sci0 __evenaccess *)0x8A000) -#define SCI1 (*(volatile struct st_sci0 __evenaccess *)0x8A020) -#define SCI2 (*(volatile struct st_sci0 __evenaccess *)0x8A040) -#define SCI3 (*(volatile struct st_sci0 __evenaccess *)0x8A060) -#define SCI4 (*(volatile struct st_sci0 __evenaccess *)0x8A080) -#define SCI5 (*(volatile struct st_sci0 __evenaccess *)0x8A0A0) -#define SCI6 (*(volatile struct st_sci0 __evenaccess *)0x8A0C0) -#define SCI7 (*(volatile struct st_sci7 __evenaccess *)0x8A0E0) -#define SCI8 (*(volatile struct st_sci0 __evenaccess *)0x8A100) -#define SCI9 (*(volatile struct st_sci0 __evenaccess *)0x8A120) -#define SCI10 (*(volatile struct st_sci0 __evenaccess *)0x8A140) -#define SCI11 (*(volatile struct st_sci0 __evenaccess *)0x8A160) -#define SCI12 (*(volatile struct st_sci12 __evenaccess *)0x8B300) -#define SMCI0 (*(volatile struct st_smci0 __evenaccess *)0x8A000) -#define SMCI1 (*(volatile struct st_smci0 __evenaccess *)0x8A020) -#define SMCI2 (*(volatile struct st_smci0 __evenaccess *)0x8A040) -#define SMCI3 (*(volatile struct st_smci0 __evenaccess *)0x8A060) -#define SMCI4 (*(volatile struct st_smci0 __evenaccess *)0x8A080) -#define SMCI5 (*(volatile struct st_smci0 __evenaccess *)0x8A0A0) -#define SMCI6 (*(volatile struct st_smci0 __evenaccess *)0x8A0C0) -#define SMCI7 (*(volatile struct st_smci7 __evenaccess *)0x8A0E0) -#define SMCI8 (*(volatile struct st_smci0 __evenaccess *)0x8A100) -#define SMCI9 (*(volatile struct st_smci0 __evenaccess *)0x8A120) -#define SMCI10 (*(volatile struct st_smci0 __evenaccess *)0x8A140) -#define SMCI11 (*(volatile struct st_smci0 __evenaccess *)0x8A160) -#define SMCI12 (*(volatile struct st_smci0 __evenaccess *)0x8B300) -#define SYSTEM (*(volatile struct st_system __evenaccess *)0x80000) -#define TEMPS (*(volatile struct st_temps __evenaccess *)0x8C500) -#define TMR0 (*(volatile struct st_tmr0 __evenaccess *)0x88200) -#define TMR1 (*(volatile struct st_tmr1 __evenaccess *)0x88201) -#define TMR2 (*(volatile struct st_tmr0 __evenaccess *)0x88210) -#define TMR3 (*(volatile struct st_tmr1 __evenaccess *)0x88211) -#define TMR01 (*(volatile struct st_tmr01 __evenaccess *)0x88204) -#define TMR23 (*(volatile struct st_tmr01 __evenaccess *)0x88214) -#define TPU0 (*(volatile struct st_tpu0 __evenaccess *)0x88108) -#define TPU1 (*(volatile struct st_tpu1 __evenaccess *)0x88108) -#define TPU2 (*(volatile struct st_tpu2 __evenaccess *)0x8810A) -#define TPU3 (*(volatile struct st_tpu3 __evenaccess *)0x8810A) -#define TPU4 (*(volatile struct st_tpu4 __evenaccess *)0x8810C) -#define TPU5 (*(volatile struct st_tpu5 __evenaccess *)0x8810C) -#define TPU6 (*(volatile struct st_tpu0 __evenaccess *)0x88178) -#define TPU7 (*(volatile struct st_tpu1 __evenaccess *)0x88178) -#define TPU8 (*(volatile struct st_tpu2 __evenaccess *)0x8817A) -#define TPU9 (*(volatile struct st_tpu3 __evenaccess *)0x8817A) -#define TPU10 (*(volatile struct st_tpu4 __evenaccess *)0x8817C) -#define TPU11 (*(volatile struct st_tpu5 __evenaccess *)0x8817C) -#define TPUA (*(volatile struct st_tpua __evenaccess *)0x88100) -#define TPUB (*(volatile struct st_tpub __evenaccess *)0x88170) -#define USB (*(volatile struct st_usb __evenaccess *)0xA0400) -#define USB0 (*(volatile struct st_usb0 __evenaccess *)0xA0000) -#define USB1 (*(volatile struct st_usb1 __evenaccess *)0xA0200) -#define WDT (*(volatile struct st_wdt __evenaccess *)0x88020) -#pragma bit_order -#pragma packoption -#endif diff --git a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/Renesas-Files/platform.h b/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/Renesas-Files/platform.h deleted file mode 100644 index 6a525384b..000000000 --- a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/Renesas-Files/platform.h +++ /dev/null @@ -1,75 +0,0 @@ -/*********************************************************************************************************************** -* DISCLAIMER -* This software is supplied by Renesas Electronics Corporation and is only intended for use with Renesas products. No -* other uses are authorized. This software is owned by Renesas Electronics Corporation and is protected under all -* applicable laws, including copyright laws. -* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING -* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, -* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED. TO THE MAXIMUM -* EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES -* SHALL BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON RELATED TO THIS -* SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. -* Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability of -* this software. By using this software, you agree to the additional terms and conditions found by accessing the -* following link: -* http://www.renesas.com/disclaimer -* -* Copyright (C) 2012 Renesas Electronics Corporation. All rights reserved. -***********************************************************************************************************************/ -/*********************************************************************************************************************** -* File Name : platform.h -* Version : 1.20 -* Description : The user chooses which MCU and board they are developing for in this file. If the board you are using -* is not listed below, please add your own or use the default 'User Board'. -***********************************************************************************************************************/ -/*********************************************************************************************************************** -* History : DD.MM.YYYY Version Description -* : 30.11.2011 1.00 First Release -* : 13.01.2012 1.10 Moved from having platform defined using macro defintion, to having platform defined -* by choosing an include path. This makes this file simpler and cleans up the issue -* where HEW shows all header files for all platforms under 'Dependencies'. -* : 14.02.2012 1.20 Added RX210 BSP. -***********************************************************************************************************************/ - -#ifndef _PLATFORM_H_ -#define _PLATFORM_H_ - -/*********************************************************************************************************************** -DEFINE YOUR SYSTEM - UNCOMMENT THE INCLUDE PATH FOR THE PLATFORM YOU ARE USING. -***********************************************************************************************************************/ -/* RSKRX610 */ -//#include "./board/rskrx610/r_bsp.h" - -/* RSKRX62N */ -//#include "./board/rskrx62n/r_bsp.h" - -/* RSKRX62T */ -//#include "./board/rskrx62t/r_bsp.h" - -/* RDKRX62N */ -//#include "./board/rdkrx62n/r_bsp.h" - -/* RSKRX630 */ -//#include "./board/rskrx630/r_bsp.h" - -/* RSKRX63N */ -//#include "./board/rskrx63n/r_bsp.h" - -/* RDKRX63N */ -#include "./board/rdkrx63n/r_bsp.h" - -/* RSKRX210 */ -//#include "./board/rskrx210/r_bsp.h" - -/* User Board - Define your own board here. */ -//#include "./board/user/r_bsp.h" - -/*********************************************************************************************************************** -MAKE SURE AT LEAST ONE PLATFORM WAS DEFINED - DO NOT EDIT BELOW THIS POINT -***********************************************************************************************************************/ -#ifndef PLATFORM_DEFINED -#error "Error - No platform defined in platform.h!" -#endif - -#endif /* _PLATFORM_H_ */ - diff --git a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/SimSessionRX600.hsf b/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/SimSessionRX600.hsf deleted file mode 100644 index fc1ca0381..000000000 --- a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/SimSessionRX600.hsf +++ /dev/null @@ -1,290 +0,0 @@ -[HIMDBVersion] -2.0 -[DATABASE_VERSION] -"2.3" -[SESSION_DETAILS] -"" -[INFORMATION] -"" -[GENERAL_DATA] -"FIRST_CONNECTION_TAG" "NO" -"RESET_CPU_AFTER_DOWNLOAD_TAG" "VARIANT_FALSE_STORE_TAG" -"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapCtrlECX_MAP_FIND_SYMBOL_LIST" "" -"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapCtrlViews" "0" -"{2BA6A3EE-6488-11D5-80D4-00C04F68EAD7}ECXLABEL_ADDDLG_ADDR" "" -"{2BA6A3EE-6488-11D5-80D4-00C04F68EAD7}LabelCtrlSymbolFileDir" "" -"{2BA6A3EE-6488-11D5-80D4-00C04F68EAD7}LabelCtrlSymbolFileName" "" -"{2BA6A3EE-6488-11D5-80D4-00C04F68EAD7}LabelCtrlViews" "0" -"{2BA6A3EF-6488-11D5-80D4-00C04F68EAD7}StatusCtrlViews" "0" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlBatchFileName" "" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlBreakpointFlag" "-1 " -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlBreakpointStatus" "-1 " -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlBrowseDirectory" "" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlLogFileName" "" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlSplitterPosition" "242" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlViews" "1" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlWindowProperties" "17" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineWndInstanceKey0" "{WK_00000001_CmdLine}" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}TclTkCtrlLogFileName" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_COMPARE_END_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_COMPARE_START_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_DISPLAY_DEST_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_DISPLAY_END_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_DISPLAY_START_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_FILL_END_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_FILL_START_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_MOVE_END_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_MOVE_START_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_SEARCH_END_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_SEARCH_START_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_SET_DEST_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_TEST_END_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_TEST_START_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryCtrlViews" "0" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_BREAK_BREAK_ACCESS_COUNT" "0" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_BREAK_BREAK_CYCLE_COUNT" "0" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_BREAK_BREAK_DATA_COUNT" "0" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_BREAK_BREAK_REGISTER_COUNT" "0" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_BREAK_BREAK_SEQUENCE_COUNT" "0" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_BREAK_PC_BREAK_COUNT" "0" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_BUSCYCLEOCCUR_COUNT" "0" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_CONFIG_CPU_FREQUENCY" "100000" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_CONFIG_ENDIAN" "LITTLE" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_CONFIG_PCLOCKRATE" "1" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_CONFIG_ROUND" "RM_NEAR" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_EXEC_EXEC_MODE" "STOP" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_EXEC_STEP_RATE" "40000" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_FILEIOPORT_COUNT" "0" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_FILEIOVARIALBE_COUNT" "0" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_INST_DECODE_CACHE_ENABLE_FLAG" "OFF" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_IODLL_COUNT" "0" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_MEMORY_AUTO_ALLOC_RESOURCE" "1" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_MEMORY_MAP_BUS_WIDTH" "32" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_MEMORY_MAP_MAP0" "0x00000000,0x0001FFFF,32, 1,RAM" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_MEMORY_MAP_MAP0_ENDIAN" "2" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_MEMORY_MAP_MAP0_WRITE_STATE" "1" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_MEMORY_MAP_MAP1" "0x00080000,0x000FFFFF,32, 1,I/O" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_MEMORY_MAP_MAP1_ENDIAN" "0" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_MEMORY_MAP_MAP1_WRITE_STATE" "1" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_MEMORY_MAP_MAP2" "0x00100000,0x00107FFF,32, 1,ROM" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_MEMORY_MAP_MAP2_ENDIAN" "2" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_MEMORY_MAP_MAP2_WRITE_STATE" "1" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_MEMORY_MAP_MAP3" "0x007F8000,0x007F9FFF,32, 1,RAM" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_MEMORY_MAP_MAP3_ENDIAN" "2" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_MEMORY_MAP_MAP3_WRITE_STATE" "1" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_MEMORY_MAP_MAP4" "0x007FC000,0x007FC4FF,32, 1,I/O" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_MEMORY_MAP_MAP4_ENDIAN" "0" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_MEMORY_MAP_MAP4_WRITE_STATE" "1" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_MEMORY_MAP_MAP5" "0x007FFC00,0x007FFFFF,32, 1,I/O" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_MEMORY_MAP_MAP5_ENDIAN" "0" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_MEMORY_MAP_MAP5_WRITE_STATE" "1" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_MEMORY_MAP_MAP6" "0x00E00000,0x00FFFFFF,32, 1,ROM" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_MEMORY_MAP_MAP6_ENDIAN" "2" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_MEMORY_MAP_MAP6_WRITE_STATE" "1" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_MEMORY_MAP_MAP7" "0xFEFFE000,0xFEFFFFFF,32, 1,ROM" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_MEMORY_MAP_MAP7_ENDIAN" "2" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_MEMORY_MAP_MAP7_WRITE_STATE" "1" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_MEMORY_MAP_MAP8" "0xFF7FC000,0xFF7FFFFF,32, 1,ROM" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_MEMORY_MAP_MAP8_ENDIAN" "2" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_MEMORY_MAP_MAP8_WRITE_STATE" "1" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_MEMORY_MAP_MAP9" "0xFFE00000,0xFFFFFFFF,32, 1,ROM" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_MEMORY_MAP_MAP9_ENDIAN" "2" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_MEMORY_MAP_MAP9_WRITE_STATE" "1" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_MEMORY_MAP_MEMORY_MAP_COUNT" "10" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_MEMORY_MAP_MEMORY_MODE" "0" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_MEMORY_MAP_PRG_WIDTH" "-1" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_MEMORY_RESOURCE_MEMORY_RESOURCE_COUNT" "5" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_MEMORY_RESOURCE_MEMRES0" "0x00000000,0x0001FFFF,3" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_MEMORY_RESOURCE_MEMRES1" "0x00080000,0x000FFFFF,3" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_MEMORY_RESOURCE_MEMRES2" "0x007FC000,0x007FC4FF,3" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_MEMORY_RESOURCE_MEMRES3" "0x007FFC00,0x007FFFFF,3" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_MEMORY_RESOURCE_MEMRES4" "0xFFFF8000,0xFFFFFFFF,3" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_SESSION_IS_SAVED" "YES" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_SYSTEM_CALL_Interrupt_Exception" "1" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_SYSTEM_CALL_SYSTEM_CALL_ADDRESS" "0x00000000" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_SYSTEM_CALL_SYSTEM_CALL_FLAG" "OFF" -"{3575AD59-64F7-49AB-BD50-52BB206A6DDE}T_TRACE2_TRACE2_ACQUISITION" "0,65536,0,0" -"{48FF5DA0-6FFA-11D5-B7CE-00E029352378}CoverageCtrlViews" "0" -"{48FF5DA0-6FFA-11D5-B7CE-00E029352378}CoverageCtrlViewsFromDiffFile" "0" -"{48FF5DA0-6FFA-11D5-B7CE-00E029352378}CoverageFileName" "0" -"{48FF5DA0-6FFA-11D5-B7CE-00E029352378}EcxCov_Cov_SL" "" -"{48FF5DA0-6FFA-11D5-B7CE-00E029352378}EcxCov_Open_End" "" -"{48FF5DA0-6FFA-11D5-B7CE-00E029352378}EcxCov_Open_Start" "" -"{48FF5DA0-6FFA-11D5-B7CE-00E029352378}EcxCov_Src_Open" "" -"{4F025ABC-BE66-4CB6-9CEE-06C61418278E}Trace2CtrlSaveFileDir" "" -"{4F025ABC-BE66-4CB6-9CEE-06C61418278E}Trace2CtrlSaveFileName" "" -"{4F025ABC-BE66-4CB6-9CEE-06C61418278E}Trace2CtrlViews" "0" -"{5F75FDA0-6FF0-11D5-B7CE-00E029352378}PACtrlPAState" "0" -"{5F75FDA0-6FF0-11D5-B7CE-00E029352378}PACtrlSaveFileDir" "" -"{5F75FDA0-6FF0-11D5-B7CE-00E029352378}PACtrlSaveFileName" "" -"{5F75FDA0-6FF0-11D5-B7CE-00E029352378}PACtrlViews" "0" -"{633553C0-6FE9-11D5-B7CE-00E029352378}ProfileCtrlChartMultiOpen" "0" -"{633553C0-6FE9-11D5-B7CE-00E029352378}ProfileCtrlEnable" "0" -"{633553C0-6FE9-11D5-B7CE-00E029352378}ProfileCtrlSaveListFileDir" "" -"{633553C0-6FE9-11D5-B7CE-00E029352378}ProfileCtrlSaveListFileName" "" -"{633553C0-6FE9-11D5-B7CE-00E029352378}ProfileCtrlSaveTreeFileDir" "" -"{633553C0-6FE9-11D5-B7CE-00E029352378}ProfileCtrlSaveTreeFileName" "" -"{633553C0-6FE9-11D5-B7CE-00E029352378}ProfileCtrlViews" "0" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_EVAL_DENORMAL_MODE" "0" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_EVAL_ROUND_MODE" "0" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_0" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_1" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_10" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_11" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_12" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_13" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_14" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_15" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_16" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_17" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_18" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_19" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_2" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_20" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_21" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_22" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_23" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_24" "0000000000000100" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_25" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_3" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_4" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_5" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_6" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_7" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_8" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_9" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_COUNT" "26" -"{6C4D5B81-FD67-46A9-A089-EA44DCDE47FD}RAMMonitorManagerCtrlBlockInfoFileDir" "" -"{6C4D5B81-FD67-46A9-A089-EA44DCDE47FD}RAMMonitorManagerCtrlBlockInfoFileName" "" -"{7943C44E-7D44-422A-9140-4CF55C88F7D3}DifferenceCtrlViews" "0" -"{7FA2E460-7EC0-11D5-8EB6-00004CC34E9D}SimIOCtrlViews" "0" -"{855C64C3-E49C-4450-9BCA-C9822566D214}OSObjectCtrlViews" "0" -"{85AC95E0-0CE6-11D6-8EB6-00004CC34E9D}TriggerCtrlViews" "0" -"{8A898260-6F1D-11D5-8EB6-00004CC34E9D}ECX_WAVE" "00000000,00000000,0,0" -"{8A898260-6F1D-11D5-8EB6-00004CC34E9D}ECX_WAVE_ADDRESS_NAME" "" -"{8A898260-6F1D-11D5-8EB6-00004CC34E9D}ECX_WAVE_COMB_ADDRESS" ",,,," -"{8A898260-6F1D-11D5-8EB6-00004CC34E9D}ECX_WAVE_COMB_BUFFER" ",,,," -"{8A898260-6F1D-11D5-8EB6-00004CC34E9D}ECX_WAVE_SAMPLING_RATE" "1000" -"{8A898260-6F1D-11D5-8EB6-00004CC34E9D}WaveformCtrlViews" "0" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersCtrlViews" "0" -"{99F424FE-E727-45AE-AE1F-11E29DEF272C}ECX_GuiIO_SAMPLING_RATE" "1000" -"{99F424FE-E727-45AE-AE1F-11E29DEF272C}PDGuiIOCtrlPDGuiIOLastSaveDirectory" "" -"{99F424FE-E727-45AE-AE1F-11E29DEF272C}PDGuiIOCtrlViews" "0" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_ADDRESS_NAME" "" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_BUFFER" "00000000,00000000,0,0" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_COLOR" "0,0,0,0" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_COMB_ADDRESS" ",,,," -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_COMB_PALETTE" ",,,," -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_PALETTE_NAME" "" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_REDRAW_CONTINUOUSLY" "0,2" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_SAMPLEING_RATE" "1000" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_VIEW" "0,0,0,0,0,0" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ImageCtrlViews" "0" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchCtrlViews" "0" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWndInitial_Radix" "0" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWndRecentFile_WatchRecord" "" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWndRecentFile_WatchSave" "" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWndUpdate_Interval" "100" -"{CBEBB610-1516-11D4-8F2D-00409545B67B}ElfDwarf2Objects" "1" -"{CBEBB610-1516-11D4-8F2D-00409545B67B}LoadModule0OBJ_ELFDWARF2_ARRAY_EXPAND_LIMIT" "-1" -"{CBEBB610-1516-11D4-8F2D-00409545B67B}LoadModule0OBJ_ELFDWARF2_STATIC_MEM_EXPAND" "1" -"{D595F9C0-EF22-11D5-B7DB-0000E10B3DA9}EventCtrlViews" "0" -"{EEDC9300-6FBE-11D5-8613-00A024591A38}LocalsCtrlViews" "0" -"{EEDC9301-6FBE-11D5-8613-00A024591A38}StackTraceCtrlViews" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOCtrlIOFile" "" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOCtrlSaveFileDir" "$(CONFIGDIR)" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOCtrlSaveFileName" "" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOCtrlViews" "0" -"{F923CED3-3318-4B43-B931-0AE76B289176}TaskTraceCtrlAnalyzeViews" "0" -"{F923CED3-3318-4B43-B931-0AE76B289176}TaskTraceCtrlFileSaveDirectory" "" -"{F923CED3-3318-4B43-B931-0AE76B289176}TaskTraceCtrlTraceViews" "0" -[LANGUAGE] -"English" -[CONFIG_INFO_VD1] -1 -[CONFIG_INFO_VD2] -0 -[CONFIG_INFO_VD3] -0 -[CONFIG_INFO_VD4] -0 -[WINDOW_POSITION_STATE_DATA_VD1] -"Help" "TOOLBAR 0" 59419 1 5 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_00000001_CmdLine}" "WINDOW" 59422 0 1 "0.07" 228 0 0 350 200 17 0 "32771|32772|32778|<>|32773|32774|<>|32820|<>|32801|32824" "0.0" -"{WK_00000001_OUTPUT}" "WINDOW" 59422 0 0 "1.00" 228 560 340 350 200 18 0 "36756|36757|36758|36759|<>|36746|36747|<>|39531|<>|39500|39534|<>|36687" "0.0" -"{WK_00000002_WORKSPACE}" "WINDOW" 59420 0 0 "1.00" 346 560 340 350 200 18 0 "" "0.0" -"{WK_TB00000001_STANDARD}" "TOOLBAR 0" 59419 0 2 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000002_EDITOR}" "TOOLBAR 0" 59419 0 0 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000003_BOOKMARKS}" "TOOLBAR 0" 59419 1 1 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000004_TEMPLATES}" "TOOLBAR 0" 59419 1 0 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000005_SEARCH}" "TOOLBAR 0" 59419 0 1 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000007_DEBUG}" "TOOLBAR 0" 59419 0 0 "0.00" 0 914 231 0 0 6 0 "" "0.0" -"{WK_TB00000008_DEBUGRUN}" "TOOLBAR 0" 59419 0 3 "0.00" 0 298 189 0 0 18 0 "" "0.0" -"{WK_TB00000009_VERSIONCONTROL}" "TOOLBAR 0" 59419 1 3 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000011_CPU}" "TOOLBAR 0" 59419 2 1 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000012_MAP}" "TOOLBAR 0" 59419 1 4 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000013_SYMBOL}" "TOOLBAR 0" 59419 2 2 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000014_CODE}" "TOOLBAR 0" 59419 2 4 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000015_PERFORMANCE}" "TOOLBAR 0" 59419 2 5 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000016_GRAPHIC}" "TOOLBAR 0" 59419 2 3 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000018_DEFAULTWINDOW}" "TOOLBAR 0" 59419 1 2 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000023_RTOS}" "TOOLBAR 0" 59419 2 6 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000025_HELPSYSTEMTOOL}" "TOOLBAR 0" 59419 0 0 "0.00" 0 788 192 0 0 5 0 "" "0.0" -"{WK_TB00000026_MACRO}" "TOOLBAR 0" 59419 1 6 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000028_RTOSDEBUG}" "TOOLBAR 0" 59419 0 0 "0.00" 0 559 254 0 0 5 0 "" "0.0" -"{WK_TB00000029_SYSTEMTOOL}" "TOOLBAR 0" 59419 2 0 "0.00" 0 0 0 0 0 17 0 "" "0.0" -[WINDOW_POSITION_STATE_DATA_VD2] -[WINDOW_POSITION_STATE_DATA_VD3] -[WINDOW_POSITION_STATE_DATA_VD4] -[WINDOW_Z_ORDER] -"{WK_TB00000007_DEBUG} TOOLBAR 0" -"{WK_TB00000028_RTOSDEBUG} TOOLBAR 0" -"{WK_TB00000025_HELPSYSTEMTOOL} TOOLBAR 0" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-MDK_Renesas\RTOSDemo\main-full.c" -[TARGET_NAME] -"RX600 Simulator" "" 0 -[STATUSBAR_STATEINFO_VD1] -"MasterShowState" 1 -"ApplicationShowState" 1 -"DebuggerShowState" 1 -[STATUSBAR_STATEINFO_VD2] -"MasterShowState" 1 -"ApplicationShowState" 1 -"DebuggerShowState" 1 -[STATUSBAR_STATEINFO_VD3] -"MasterShowState" 1 -"ApplicationShowState" 1 -"DebuggerShowState" 1 -[STATUSBAR_STATEINFO_VD4] -"MasterShowState" 1 -"ApplicationShowState" 1 -"DebuggerShowState" 1 -[STATUSBAR_DEBUGGER_PANESTATE_VD1] -[STATUSBAR_DEBUGGER_PANESTATE_VD2] -[STATUSBAR_DEBUGGER_PANESTATE_VD3] -[STATUSBAR_DEBUGGER_PANESTATE_VD4] -[DEBUGGER_OPTIONS] -"[V|VERSION|1] [S|MAP|^"0x00000000,0x0001FFFF,RAM,32,101 0x00080000,0x000FFFFF,I/O,32,101 0x00100000,0x00107FFF,ROM,32,101 0x007F8000,0x007F9FFF,RAM,32,101 0x007FC000,0x007FC4FF,I/O,32,101 0x007FFC00,0x007FFFFF,I/O,32,101 0x00E00000,0x00FFFFFF,ROM,32,101 0xFEFFE000,0xFEFFFFFF,ROM,32,101 0xFF7FC000,0xFF7FFFFF,ROM,32,101 0xFFE00000,0xFFFFFFFF,ROM,32,101^"] [S|RESOURCE|^"0x00000000,0x0001FFFF,R/W 0x00080000,0x000FFFFF,R/W 0x007FC000,0x007FC4FF,R/W 0x007FFC00,0x007FFFFF,R/W 0xFFFF8000,0xFFFFFFFF,R/W^"] [B|SIMIOF|0] [I|SIMIOADR|0x00000000] [I|BUS_MODE|0] [S|ENDIAN|^"LITTLE^"] [S|PATCH|^"OFF^"] [S|ROM_MODE|^"^"]" -[DOWNLOAD_MODULES] -"$(CONFIGDIR)\$(PROJECTNAME).abs" 0 "Elf/Dwarf2" 0 0 1 0 -[CONNECT_ON_GO] -"FALSE" -[DOWNLOAD_MODULES_AFTER_BUILD] -"TRUE" -[REMOVE_BREAKPOINTS_ON_DOWNLOAD] -"FALSE" -[DISABLE_MEMORY_ACCESS_PRIOR_TO_COMMAND_FILE_EXECUTION] -"FALSE" -[LIMIT_DISASSEMBLY_MEMORY_ACCESS] -"FALSE" -[DISABLE_MEMORY_ACCESS_DURING_EXECUTION] -"FALSE" -[DEBUGGER_OPTIONS_PROPERTIES] -"1" -[COMMAND_FILES] -[DEFAULT_DEBUG_FORMAT] -"Elf/Dwarf2" -[FLASH_DETAILS] -"0.000000" 0 0 "" 0 "" 0 0 "" 1 1 0 0 0 0 0 "" "" "" "" "" -[BREAKPOINTS] -[END] diff --git a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/main-blinky.c b/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/main-blinky.c deleted file mode 100644 index ac412f11d..000000000 --- a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/main-blinky.c +++ /dev/null @@ -1,235 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* - * This is a very simple demo that creates two tasks, one queue, and one - * software timer. For a much more complete and complex example select either - * the Debug or Debug_with_optimisation build configurations within the HEW, - * which build main_full.c in place of this file. - * - * One task (the queue receive task) blocks on the queue to wait for data to - * arrive, toggling LED0 each time '100' is received. The other task (the - * queue send task) repeatedly blocks for a fixed period before sending '100' - * to the queue (causing the first task to toggle the LED). - * - * The software timer is configured to auto-reload. The timer callback - * function periodically toggles LED1. - */ - -/* Kernel includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "timers.h" -#include "queue.h" - -/* Priorities at which the tasks are created. */ -#define configQUEUE_RECEIVE_TASK_PRIORITY ( tskIDLE_PRIORITY + 1 ) -#define configQUEUE_SEND_TASK_PRIORITY ( tskIDLE_PRIORITY + 2 ) - -/* The rate at which data is sent to the queue, specified in milliseconds. */ -#define mainQUEUE_SEND_PERIOD_MS ( 500 / portTICK_PERIOD_MS ) - -/* The period of the software timer, specified in milliseconds. */ -#define mainSOFTWARE_TIMER_PERIOD_MS ( 150 / portTICK_PERIOD_MS ) - -/* The number of items the queue can hold. This is 1 as the receive task -will remove items as they are added so the send task should always find the -queue empty. */ -#define mainQUEUE_LENGTH ( 1 ) - -/* The LEDs toggle by the task and timer respectively. */ -#define mainTASK_LED ( 0 ) -#define mainTIMER_LED ( 1 ) - -/* - * The tasks as defined at the top of this file. - */ -static void prvQueueReceiveTask( void *pvParameters ); -static void prvQueueSendTask( void *pvParameters ); - -/* - * The callback function used by the software timer. - */ -static void prvBlinkyTimerCallback( TimerHandle_t xTimer ); - -/* The queue used by both tasks. */ -static QueueHandle_t xQueue = NULL; - -/* This variable is not used by this simple Blinky example. It is defined -purely to allow the project to link as it is used by the full project. */ -volatile unsigned long ulHighFrequencyTickCount = 0UL; -/*-----------------------------------------------------------*/ - -void main(void) -{ -TimerHandle_t xTimer; - - /* Turn all LEDs off. */ - vParTestInitialise(); - - /* Create the queue. */ - xQueue = xQueueCreate( mainQUEUE_LENGTH, sizeof( unsigned long ) ); - - /* Create the software timer, as described at the top of this file. */ - xTimer = xTimerCreate( "BlinkyTimer", /* Just a text name to make debugging easier - not used by the scheduler. */ - mainSOFTWARE_TIMER_PERIOD_MS, /* The timer period. */ - pdTRUE, /* Set to pdTRUE for periodic timer, or pdFALSE for one-shot timer. */ - NULL, /* The timer ID is not required. */ - prvBlinkyTimerCallback ); /* The function executed when the timer expires. */ - - if( xTimer != NULL ) - { - /* Start the timer - it will not actually start running until the - scheduler has started. The block time is set to 0, although, because - xTimerStart() is being called before the scheduler has been started, - the any block time specified would be ignored anyway. */ - xTimerStart( xTimer, 0UL ); - } - - if( xQueue != NULL ) - { - /* Start the two tasks as described at the top of this file. */ - xTaskCreate( prvQueueReceiveTask, /* The function that implements the task. */ - "Rx", /* Just a text name to make debugging easier - not used by the scheduler. */ - configMINIMAL_STACK_SIZE, /* The size of the task stack, in words. */ - NULL, /* The task parameter is not used. */ - configQUEUE_RECEIVE_TASK_PRIORITY, /* The priority assigned to the task when it is created. */ - NULL ); /* The task handle is not used. */ - - xTaskCreate( prvQueueSendTask, "TX", configMINIMAL_STACK_SIZE, NULL, configQUEUE_SEND_TASK_PRIORITY, NULL ); - - /* Start the tasks running. */ - vTaskStartScheduler(); - } - - /* If all is well we will never reach here as the scheduler will now be - running. If we do reach here then it is likely that there was insufficient - heap available for the idle task to be created. */ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -static void prvQueueSendTask( void *pvParameters ) -{ -TickType_t xNextWakeTime; -const unsigned long ulValueToSend = 100UL; - - /* Initialise xNextWakeTime - this only needs to be done once. */ - xNextWakeTime = xTaskGetTickCount(); - - for( ;; ) - { - /* Place this task in the blocked state until it is time to run again. - The block state is specified in ticks, the constant used converts ticks - to ms. */ - vTaskDelayUntil( &xNextWakeTime, mainQUEUE_SEND_PERIOD_MS ); - - /* Send to the queue - causing the queue receive task to flash its LED. 0 - is used so the send does not block - it shouldn't need to as the queue - should always be empty here. */ - xQueueSend( xQueue, &ulValueToSend, 0 ); - } -} -/*-----------------------------------------------------------*/ - -static void prvQueueReceiveTask( void *pvParameters ) -{ -unsigned long ulReceivedValue; - - for( ;; ) - { - /* Wait until something arives in the queue - this will block - indefinitely provided INCLUDE_vTaskSuspend is set to 1 in - FreeRTOSConfig.h. */ - xQueueReceive( xQueue, &ulReceivedValue, portMAX_DELAY ); - - /* To get here something must have arrived, but is it the expected - value? If it is, toggle the LED. */ - if( ulReceivedValue == 100UL ) - { - vParTestToggleLED( mainTASK_LED ); - } - } -} -/*-----------------------------------------------------------*/ - -static void prvBlinkyTimerCallback( TimerHandle_t xTimer ) -{ - /* The software timer does nothing but toggle an LED. */ - vParTestToggleLED( mainTIMER_LED ); -} -/*-----------------------------------------------------------*/ - -void vApplicationSetupTimerInterrupt( void ) -{ - /* Enable compare match timer 0. */ - MSTP( CMT0 ) = 0; - - /* Interrupt on compare match. */ - CMT0.CMCR.BIT.CMIE = 1; - - /* Set the compare match value. */ - CMT0.CMCOR = ( unsigned short ) ( ( ( configPERIPHERAL_CLOCK_HZ / configTICK_RATE_HZ ) -1 ) / 8 ); - - /* Divide the PCLK by 8. */ - CMT0.CMCR.BIT.CKS = 0; - - /* Enable the interrupt... */ - _IEN( _CMT0_CMI0 ) = 1; - - /* ...and set its priority to the application defined kernel priority. */ - _IPR( _CMT0_CMI0 ) = configKERNEL_INTERRUPT_PRIORITY; - - /* Start the timer. */ - CMT.CMSTR0.BIT.STR0 = 1; -} -/*-----------------------------------------------------------*/ - -/* This function is explained by the comments above its prototype at the top -of this file. */ -void vApplicationMallocFailedHook( void ) -{ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -/* This function is explained by the comments above its prototype at the top -of this file. */ -void vApplicationStackOverflowHook( TaskHandle_t pxTask, char *pcTaskName ) -{ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -/* This function is explained by the comments above its prototype at the top -of this file. */ -void vApplicationIdleHook( void ) -{ - /* Just to prevent the variable getting optimised away. */ - ( void ) ulHighFrequencyTickCount; -} -/*-----------------------------------------------------------*/ diff --git a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/main-full.c b/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/main-full.c deleted file mode 100644 index 98571157c..000000000 --- a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/main-full.c +++ /dev/null @@ -1,672 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* **************************************************************************** - * This project includes a lot of tasks and tests and is therefore complex. - * If you would prefer a much simpler project to get started with then select - * the 'Blinky' build configuration within the HEW IDE. The Blinky - * configuration builds main-blinky.c in place of this file. - * **************************************************************************** - * - * Creates all the demo application tasks, then starts the scheduler. The web - * documentation provides more details of the standard demo application tasks, - * which provide no particular functionality but do provide a good example of - * how to use the FreeRTOS API. The tasks defined in flop.c are included in the - * set of standard demo tasks to ensure the floating point unit gets some - * exercise. - * - * In addition to the standard demo tasks, the following tasks and tests are - * defined and/or created within this file: - * - * Webserver ("uIP") task - This serves a number of dynamically generated WEB - * pages to a standard WEB browser. The IP and MAC addresses are configured by - * constants defined at the bottom of FreeRTOSConfig.h. Use either a standard - * Ethernet cable to connect through a hug, or a cross over (point to point) - * cable to connect directly. Ensure the IP address used is compatible with the - * IP address of the machine running the browser - the easiest way to achieve - * this is to ensure the first three octets of the IP addresses are the same. - * - * "Reg test" tasks - These fill the registers with known values, then check - * that each register still contains its expected value. Each task uses - * different values. The tasks run with very low priority so get preempted - * very frequently. A check variable is incremented on each iteration of the - * test loop. A register containing an unexpected value is indicative of an - * error in the context switching mechanism and will result in a branch to a - * null loop - which in turn will prevent the check variable from incrementing - * any further and allow the check task (described below) to determine that an - * error has occurred. The nature of the reg test tasks necessitates that they - * are written in assembly code. - * - * "Check" timer - The check software timer period is initially set to five - * seconds. The callback function associated with the check software timer - * checks that all the standard demo tasks, and the register check tasks, are - * not only still executing, but are executing without reporting any errors. If - * the check software timer discovers that a task has either stalled, or - * reported an error, then it changes its own execution period from the initial - * five seconds, to just 200ms. The check software timer callback function - * also toggles LED3 each time it is called. This provides a visual indication - * of the system status: If LED3 toggles every five seconds, then no issues - * have been discovered. If the LED toggles every 200ms, then an issue has been - * discovered with at least one task. - * - * "High frequency timer test" - A high frequency periodic interrupt is - * generated using a timer - the interrupt is assigned a priority above - * configMAX_SYSCALL_INTERRUPT_PRIORITY so should not be effected by anything - * the kernel is doing. The frequency and priority of the interrupt, in - * combination with other standard tests executed in this demo, should result - * in interrupts nesting at least 3 and probably 4 deep. This test is only - * included in build configurations that have the optimiser switched on. In - * optimised builds the count of high frequency ticks is used as the time base - * for the run time stats. - * - * *NOTE 1* If LED3 is toggling every 5 seconds then all the demo application - * tasks are executing as expected and no errors have been reported in any - * tasks. The toggle rate increasing to 200ms indicates that at least one task - * has reported unexpected behaviour. - * - * *NOTE 2* vApplicationSetupTimerInterrupt() is called by the kernel to let - * the application set up a timer to generate the tick interrupt. In this - * example a compare match timer is used for this purpose. - * - * *NOTE 3* The CPU must be in Supervisor mode when the scheduler is started. - * The PowerON_Reset_PC() supplied in resetprg.c with this demo has - * Change_PSW_PM_to_UserMode() commented out to ensure this is the case. - * - * *NOTE 4* The IntQueue common demo tasks test interrupt nesting and make use - * of all the 8bit timers (as two cascaded 16bit units). - * - * * -*/ - -#include - -/* Kernel includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "timers.h" -#include "semphr.h" - -/* Standard demo includes. */ -#include "partest.h" -#include "flash_timer.h" -#include "IntQueue.h" -#include "BlockQ.h" -#include "death.h" -#include "integer.h" -#include "blocktim.h" -#include "semtest.h" -#include "PollQ.h" -#include "GenQTest.h" -#include "QPeek.h" -#include "recmutex.h" -#include "flop.h" - -/* Values that are passed into the reg test tasks using the task parameter. The -tasks check that the values are passed in correctly. */ -#define mainREG_TEST_1_PARAMETER ( 0x12121212UL ) -#define mainREG_TEST_2_PARAMETER ( 0x12345678UL ) - -/* Priorities at which the tasks are created. */ -#define mainCHECK_TASK_PRIORITY ( configMAX_PRIORITIES - 1 ) -#define mainQUEUE_POLL_PRIORITY ( tskIDLE_PRIORITY + 1 ) -#define mainSEM_TEST_PRIORITY ( tskIDLE_PRIORITY + 1 ) -#define mainBLOCK_Q_PRIORITY ( tskIDLE_PRIORITY + 2 ) -#define mainCREATOR_TASK_PRIORITY ( tskIDLE_PRIORITY + 3 ) -#define mainuIP_TASK_PRIORITY ( tskIDLE_PRIORITY + 2 ) -#define mainINTEGER_TASK_PRIORITY ( tskIDLE_PRIORITY ) -#define mainGEN_QUEUE_TASK_PRIORITY ( tskIDLE_PRIORITY ) -#define mainFLOP_TASK_PRIORITY ( tskIDLE_PRIORITY ) - -/* The WEB server uses string handling functions, which in turn use a bit more -stack than most of the other tasks. */ -#define mainuIP_STACK_SIZE ( configMINIMAL_STACK_SIZE * 3 ) - -/* The LED toggled by the check timer. */ -#define mainCHECK_LED ( 3 ) - -/* The rate at which mainCHECK_LED will toggle when all the tasks are running -without error. Controlled by the check timer as described at the top of this -file. */ -#define mainNO_ERROR_CHECK_TIMER_PERIOD_MS ( 5000 / portTICK_PERIOD_MS ) - -/* The rate at which mainCHECK_LED will toggle when an error has been reported -by at least one task. Controlled by the check timer as described at the top of -this file. */ -#define mainERROR_CHECK_TIMER_PERIOD_MS ( 200 / portTICK_PERIOD_MS ) - -/* A block time of zero simply means "don't block". */ -#define mainDONT_BLOCK ( 0UL ) - -/* A set of timers are created, each of which toggles and LED. This specifies -the number of timers to create. */ -#define mainNUMBER_OF_LEDS_TO_FLASH ( 3 ) - -/* - * vApplicationMallocFailedHook() will only be called if - * configUSE_MALLOC_FAILED_HOOK is set to 1 in FreeRTOSConfig.h. It is a hook - * function that will execute if a call to pvPortMalloc() fails. - * pvPortMalloc() is called internally by the kernel whenever a task, queue or - * semaphore is created. It is also called by various parts of the demo - * application. - */ -void vApplicationMallocFailedHook( void ); - -/* - * vApplicationIdleHook() will only be called if configUSE_IDLE_HOOK is set to 1 - * in FreeRTOSConfig.h. It is a hook function that is called on each iteration - * of the idle task. It is essential that code added to this hook function - * never attempts to block in any way (for example, call xQueueReceive() with - * a block time specified). If the application makes use of the vTaskDelete() - * API function (as this demo application does) then it is also important that - * vApplicationIdleHook() is permitted to return to its calling function because - * it is the responsibility of the idle task to clean up memory allocated by the - * kernel to any task that has since been deleted. - */ -void vApplicationIdleHook( void ); - -/* - * vApplicationStackOverflowHook() will only be called if - * configCHECK_FOR_STACK_OVERFLOW is set to a non-zero value. The handle and - * name of the offending task should be passed in the function parameters, but - * it is possible that the stack overflow will have corrupted these - in which - * case pxCurrentTCB can be inspected to find the same information. - */ -void vApplicationStackOverflowHook( TaskHandle_t pxTask, char *pcTaskName ); - -/* - * The reg test tasks as described at the top of this file. - */ -static void prvRegTest1Task( void *pvParameters ); -static void prvRegTest2Task( void *pvParameters ); - -/* - * The actual implementation of the reg test functionality, which, because of - * the direct register access, have to be in assembly. - */ -static void prvRegTest1Implementation( void ); -static void prvRegTest2Implementation( void ); - -/* - * The check timer callback function, as described at the top of this file. - */ -static void prvCheckTimerCallback( TimerHandle_t xTimer ); - -/* - * Contains the implementation of the WEB server. - */ -extern void vuIP_Task( void *pvParameters ); - -/*-----------------------------------------------------------*/ - -/* Variables that are incremented on each iteration of the reg test tasks - -provided the tasks have not reported any errors. The check task inspects these -variables to ensure they are still incrementing as expected. If a variable -stops incrementing then it is likely that its associate task has stalled. */ -unsigned long ulRegTest1CycleCount = 0UL, ulRegTest2CycleCount = 0UL; - -/* The status message that is displayed at the bottom of the "task stats" web -page, which is served by the uIP task. This will report any errors picked up -by the reg test task. */ -const char *pcStatusMessage = "All tasks executing without error."; - -/*-----------------------------------------------------------*/ - -void main(void) -{ -TimerHandle_t xCheckTimer; -extern void HardwareSetup( void ); - - /* Turn all LEDs off. */ - vParTestInitialise(); - - /* Start the reg test tasks which test the context switching mechanism. */ - xTaskCreate( prvRegTest1Task, "RegTst1", configMINIMAL_STACK_SIZE, ( void * ) mainREG_TEST_1_PARAMETER, tskIDLE_PRIORITY, NULL ); - xTaskCreate( prvRegTest2Task, "RegTst2", configMINIMAL_STACK_SIZE, ( void * ) mainREG_TEST_2_PARAMETER, tskIDLE_PRIORITY, NULL ); - - /* The web server task. */ - xTaskCreate( vuIP_Task, "uIP", mainuIP_STACK_SIZE, NULL, mainuIP_TASK_PRIORITY, NULL ); - - /* Create the standard demo tasks. */ - vStartBlockingQueueTasks( mainBLOCK_Q_PRIORITY ); - vCreateBlockTimeTasks(); - vStartSemaphoreTasks( mainSEM_TEST_PRIORITY ); - vStartPolledQueueTasks( mainQUEUE_POLL_PRIORITY ); - vStartIntegerMathTasks( mainINTEGER_TASK_PRIORITY ); - vStartGenericQueueTasks( mainGEN_QUEUE_TASK_PRIORITY ); - vStartQueuePeekTasks(); - vStartRecursiveMutexTasks(); - vStartInterruptQueueTasks(); - vStartMathTasks( mainFLOP_TASK_PRIORITY ); - - /* Create the timers used to toggle the LEDs. */ - vStartLEDFlashTimers( mainNUMBER_OF_LEDS_TO_FLASH ); - - /* Create the software timer that performs the 'check' functionality, - as described at the top of this file. */ - xCheckTimer = xTimerCreate( "CheckTimer", /* A text name, purely to help debugging. */ - ( mainNO_ERROR_CHECK_TIMER_PERIOD_MS ), /* The timer period, in this case 5000ms (5s). */ - pdTRUE, /* This is an auto-reload timer, so xAutoReload is set to pdTRUE. */ - ( void * ) 0, /* The ID is not used, so can be set to anything. */ - prvCheckTimerCallback /* The callback function that inspects the status of all the other tasks. */ - ); - - if( xCheckTimer != NULL ) - { - xTimerStart( xCheckTimer, mainDONT_BLOCK ); - } - - /* The suicide tasks must be created last as they need to know how many - tasks were running prior to their creation in order to ascertain whether - or not the correct/expected number of tasks are running at any given time. */ - vCreateSuicidalTasks( mainCREATOR_TASK_PRIORITY ); - - /* Start the tasks running. */ - vTaskStartScheduler(); - - /* If all is well, the scheduler will now be running, and the following line - will never be reached. If the following line does execute, then there was - insufficient FreeRTOS heap memory available for the idle and/or timer tasks - to be created. See the memory management section on the FreeRTOS web site - for more details. */ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -static void prvCheckTimerCallback( TimerHandle_t xTimer ) -{ -static long lChangedTimerPeriodAlready = pdFALSE; -static unsigned long ulLastRegTest1CycleCount = 0, ulLastRegTest2CycleCount = 0; -long lErrorFound = pdFALSE; - - /* If this is being executed then the kernel has been started. Start the - high frequency timer test as described at the top of this file. This is - only included in the optimised build configuration - otherwise it takes up - too much CPU time and can disrupt other tests. */ - #ifdef INCLUDE_HIGH_FREQUENCY_TIMER_TEST - vSetupHighFrequencyTimer(); - #endif - - /* Check the standard demo tasks are running without error. */ - if( xAreGenericQueueTasksStillRunning() != pdTRUE ) - { - lErrorFound = pdTRUE; - pcStatusMessage = "Error: GenQueue"; - } - else if( xAreQueuePeekTasksStillRunning() != pdTRUE ) - { - lErrorFound = pdTRUE; - pcStatusMessage = "Error: QueuePeek"; - } - else if( xAreBlockingQueuesStillRunning() != pdTRUE ) - { - lErrorFound = pdTRUE; - pcStatusMessage = "Error: BlockQueue"; - } - else if( xAreBlockTimeTestTasksStillRunning() != pdTRUE ) - { - lErrorFound = pdTRUE; - pcStatusMessage = "Error: BlockTime"; - } - else if( xAreSemaphoreTasksStillRunning() != pdTRUE ) - { - lErrorFound = pdTRUE; - pcStatusMessage = "Error: SemTest"; - } - else if( xArePollingQueuesStillRunning() != pdTRUE ) - { - lErrorFound = pdTRUE; - pcStatusMessage = "Error: PollQueue"; - } - else if( xIsCreateTaskStillRunning() != pdTRUE ) - { - lErrorFound = pdTRUE; - pcStatusMessage = "Error: Death"; - } - else if( xAreIntegerMathsTaskStillRunning() != pdTRUE ) - { - lErrorFound = pdTRUE; - pcStatusMessage = "Error: IntMath"; - } - else if( xAreRecursiveMutexTasksStillRunning() != pdTRUE ) - { - lErrorFound = pdTRUE; - pcStatusMessage = "Error: RecMutex"; - } - else if( xAreIntQueueTasksStillRunning() != pdPASS ) - { - lErrorFound = pdTRUE; - pcStatusMessage = "Error: IntQueue"; - } - else if( xAreMathsTaskStillRunning() != pdPASS ) - { - lErrorFound = pdTRUE; - pcStatusMessage = "Error: Flop"; - } - - /* Check the reg test tasks are still cycling. They will stop incrementing - their loop counters if they encounter an error. */ - if( ulRegTest1CycleCount == ulLastRegTest1CycleCount ) - { - lErrorFound = pdTRUE; - pcStatusMessage = "Error: RegTest1"; - } - - if( ulRegTest2CycleCount == ulLastRegTest2CycleCount ) - { - lErrorFound = pdTRUE; - pcStatusMessage = "Error: RegTest2"; - } - - ulLastRegTest1CycleCount = ulRegTest1CycleCount; - ulLastRegTest2CycleCount = ulRegTest2CycleCount; - - /* Toggle the check LED to give an indication of the system status. If - the LED toggles every mainNO_ERROR_CHECK_TIMER_PERIOD_MS milliseconds then - everything is ok. A faster toggle indicates an error. */ - vParTestToggleLED( mainCHECK_LED ); - - /* Have any errors been latch in lErrorFound? If so, shorten the - period of the check timer to mainERROR_CHECK_TIMER_PERIOD_MS milliseconds. - This will result in an increase in the rate at which mainCHECK_LED - toggles. */ - if( lErrorFound != pdFALSE ) - { - if( lChangedTimerPeriodAlready == pdFALSE ) - { - lChangedTimerPeriodAlready = pdTRUE; - - /* This call to xTimerChangePeriod() uses a zero block time. - Functions called from inside of a timer callback function must - *never* attempt to block. */ - xTimerChangePeriod( xTimer, ( mainERROR_CHECK_TIMER_PERIOD_MS ), mainDONT_BLOCK ); - } - } -} -/*-----------------------------------------------------------*/ - -/* The RX port uses this callback function to configure its tick interrupt. -This allows the application to choose the tick interrupt source. */ -void vApplicationSetupTimerInterrupt( void ) -{ - /* Enable compare match timer 0. */ - MSTP( CMT0 ) = 0; - - /* Interrupt on compare match. */ - CMT0.CMCR.BIT.CMIE = 1; - - /* Set the compare match value. */ - CMT0.CMCOR = ( unsigned short ) ( ( ( configPERIPHERAL_CLOCK_HZ / configTICK_RATE_HZ ) -1 ) / 8 ); - - /* Divide the PCLK by 8. */ - CMT0.CMCR.BIT.CKS = 0; - - /* Enable the interrupt... */ - _IEN( _CMT0_CMI0 ) = 1; - - /* ...and set its priority to the application defined kernel priority. */ - _IPR( _CMT0_CMI0 ) = configKERNEL_INTERRUPT_PRIORITY; - - /* Start the timer. */ - CMT.CMSTR0.BIT.STR0 = 1; -} -/*-----------------------------------------------------------*/ - -/* This function is explained by the comments above its prototype at the top -of this file. */ -void vApplicationMallocFailedHook( void ) -{ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -/* This function is explained by the comments above its prototype at the top -of this file. */ -void vApplicationStackOverflowHook( TaskHandle_t pxTask, char *pcTaskName ) -{ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -/* This function is explained by the comments above its prototype at the top -of this file. */ -void vApplicationIdleHook( void ) -{ -} -/*-----------------------------------------------------------*/ - -/* This function is explained in the comments at the top of this file. */ -static void prvRegTest1Task( void *pvParameters ) -{ - if( ( ( unsigned long ) pvParameters ) != mainREG_TEST_1_PARAMETER ) - { - /* The parameter did not contain the expected value. */ - for( ;; ) - { - /* Stop the tick interrupt so its obvious something has gone wrong. */ - taskDISABLE_INTERRUPTS(); - } - } - - /* This is an inline asm function that never returns. */ - prvRegTest1Implementation(); -} -/*-----------------------------------------------------------*/ - -/* This function is explained in the comments at the top of this file. */ -static void prvRegTest2Task( void *pvParameters ) -{ - if( ( ( unsigned long ) pvParameters ) != mainREG_TEST_2_PARAMETER ) - { - /* The parameter did not contain the expected value. */ - for( ;; ) - { - /* Stop the tick interrupt so its obvious something has gone wrong. */ - taskDISABLE_INTERRUPTS(); - } - } - - /* This is an inline asm function that never returns. */ - prvRegTest2Implementation(); -} -/*-----------------------------------------------------------*/ - -/* This function is explained in the comments at the top of this file. */ -#pragma inline_asm prvRegTest1Implementation -static void prvRegTest1Implementation( void ) -{ - ; Put a known value in each register. - MOV.L #1, R1 - MOV.L #2, R2 - MOV.L #3, R3 - MOV.L #4, R4 - MOV.L #5, R5 - MOV.L #6, R6 - MOV.L #7, R7 - MOV.L #8, R8 - MOV.L #9, R9 - MOV.L #10, R10 - MOV.L #11, R11 - MOV.L #12, R12 - MOV.L #13, R13 - MOV.L #14, R14 - MOV.L #15, R15 - - ; Loop, checking each iteration that each register still contains the - ; expected value. -TestLoop1: - - ; Push the registers that are going to get clobbered. - PUSHM R14-R15 - - ; Increment the loop counter to show this task is still getting CPU time. - MOV.L #_ulRegTest1CycleCount, R14 - MOV.L [ R14 ], R15 - ADD #1, R15 - MOV.L R15, [ R14 ] - - ; Yield to extend the text coverage. Set the bit in the ITU SWINTR register. - MOV.L #1, R14 - MOV.L #0872E0H, R15 - MOV.B R14, [R15] - NOP - NOP - - ; Restore the clobbered registers. - POPM R14-R15 - - ; Now compare each register to ensure it still contains the value that was - ; set before this loop was entered. - CMP #1, R1 - BNE RegTest1Error - CMP #2, R2 - BNE RegTest1Error - CMP #3, R3 - BNE RegTest1Error - CMP #4, R4 - BNE RegTest1Error - CMP #5, R5 - BNE RegTest1Error - CMP #6, R6 - BNE RegTest1Error - CMP #7, R7 - BNE RegTest1Error - CMP #8, R8 - BNE RegTest1Error - CMP #9, R9 - BNE RegTest1Error - CMP #10, R10 - BNE RegTest1Error - CMP #11, R11 - BNE RegTest1Error - CMP #12, R12 - BNE RegTest1Error - CMP #13, R13 - BNE RegTest1Error - CMP #14, R14 - BNE RegTest1Error - CMP #15, R15 - BNE RegTest1Error - - ; All comparisons passed, start a new itteratio of this loop. - BRA TestLoop1 - -RegTest1Error: - ; A compare failed, just loop here so the loop counter stops incrementing - ; causing the check task to indicate the error. - BRA RegTest1Error -} -/*-----------------------------------------------------------*/ - -/* This function is explained in the comments at the top of this file. */ -#pragma inline_asm prvRegTest2Implementation -static void prvRegTest2Implementation( void ) -{ - ; Put a known value in each register. - MOV.L #10, R1 - MOV.L #20, R2 - MOV.L #30, R3 - MOV.L #40, R4 - MOV.L #50, R5 - MOV.L #60, R6 - MOV.L #70, R7 - MOV.L #80, R8 - MOV.L #90, R9 - MOV.L #100, R10 - MOV.L #110, R11 - MOV.L #120, R12 - MOV.L #130, R13 - MOV.L #140, R14 - MOV.L #150, R15 - - ; Loop, checking on each iteration that each register still contains the - ; expected value. -TestLoop2: - - ; Push the registers that are going to get clobbered. - PUSHM R14-R15 - - ; Increment the loop counter to show this task is still getting CPU time. - MOV.L #_ulRegTest2CycleCount, R14 - MOV.L [ R14 ], R15 - ADD #1, R15 - MOV.L R15, [ R14 ] - - ; Restore the clobbered registers. - POPM R14-R15 - - CMP #10, R1 - BNE RegTest2Error - CMP #20, R2 - BNE RegTest2Error - CMP #30, R3 - BNE RegTest2Error - CMP #40, R4 - BNE RegTest2Error - CMP #50, R5 - BNE RegTest2Error - CMP #60, R6 - BNE RegTest2Error - CMP #70, R7 - BNE RegTest2Error - CMP #80, R8 - BNE RegTest2Error - CMP #90, R9 - BNE RegTest2Error - CMP #100, R10 - BNE RegTest2Error - CMP #110, R11 - BNE RegTest2Error - CMP #120, R12 - BNE RegTest2Error - CMP #130, R13 - BNE RegTest2Error - CMP #140, R14 - BNE RegTest2Error - CMP #150, R15 - BNE RegTest2Error - - ; All comparisons passed, start a new itteratio of this loop. - BRA TestLoop2 - -RegTest2Error: - ; A compare failed, just loop here so the loop counter stops incrementing - ; - causing the check task to indicate the error. - BRA RegTest2Error -} -/*-----------------------------------------------------------*/ - -char *pcGetTaskStatusMessage( void ) -{ - /* Not bothered about a critical section here although technically because of - the task priorities the pointer could change it will be atomic if not near - atomic and its not critical. */ - return ( char * ) pcStatusMessage; -} -/*-----------------------------------------------------------*/ - - - diff --git a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/r_bsp_config.h b/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/r_bsp_config.h deleted file mode 100644 index cc008c554..000000000 --- a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/r_bsp_config.h +++ /dev/null @@ -1,149 +0,0 @@ -/*********************************************************************************************************************** -* DISCLAIMER -* This software is supplied by Renesas Electronics Corporation and is only intended for use with Renesas products. No -* other uses are authorized. This software is owned by Renesas Electronics Corporation and is protected under all -* applicable laws, including copyright laws. -* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING -* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, -* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED. TO THE MAXIMUM -* EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES -* SHALL BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON RELATED TO THIS -* SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. -* Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability of -* this software. By using this software, you agree to the additional terms and conditions found by accessing the -* following link: -* http://www.renesas.com/disclaimer -* -* Copyright (C) 2012 Renesas Electronics Corporation. All rights reserved. -***********************************************************************************************************************/ -/*********************************************************************************************************************** -* File Name : r_bsp_config_reference.c -* Device(s) : RX63x -* Description : The file r_bsp_config.h is used to configure your BSP. r_bsp_config.h should be included -* somewhere in your package so that the r_bsp code has access to it. This file (r_bsp_config_reference.h) -* is just a reference file that the user can use to make their own r_bsp_config.h file. -************************************************************************************************************************ -* History : DD.MM.YYYY Version Description -* : 13.03.2012 1.00 First Release -***********************************************************************************************************************/ -#ifndef R_BSP_CONFIG_REF_HEADER_FILE -#define R_BSP_CONFIG_REF_HEADER_FILE - -/*********************************************************************************************************************** -Configuration Options -***********************************************************************************************************************/ -/* The 'BSP_DECLARE_STACK' macro is checked so that the stack is only declared in one place (resetprg.c). Every time a - '#pragma stacksize' is encountered, the stack size is increased. This prevents multiplication of stack size. */ -#if defined(BSP_DECLARE_STACK) -/* User Stack size in bytes. The Renesas RX toolchain sets the stack size using the #pragma stacksize directive. */ -#pragma stacksize su=0x1000 -/* Interrupt Stack size in bytes. The Renesas RX toolchain sets the stack size using the #pragma stacksize directive. */ -#pragma stacksize si=0x400 -#endif - -/* Heap size in bytes. */ -#define HEAP_BYTES (0x4) - -/* After reset MCU will operate in Supervisor mode. To switch to User mode, set this macro to '1'. For more information - on the differences between these 2 modes see the CPU >> Processor Mode section of your MCU's hardware manual. - 0 = Stay in Supervisor mode. - 1 = Switch to User mode. -*/ -#define RUN_IN_USER_MODE (0) - -/* To get into User Boot Mode the user must control some pins on the MCU and also set some values in ROM. These values - in ROM are described in the Option-Setting Memory section of the hardware manual. This macro sets these values so - that User Boot Mode can be used. The user is still responsible for setting the MCU pins appropriately. - 0 = Single-Chip or USB Boot Mode - 1 = User Boot Mode -*/ -#define USER_BOOT_ENABLE (0) - -/* Set your desired ID code. NOTE, leave at the default (all 0xFF's) if you do not wish to use an ID code. If you set - this value and program it into the MCU then you will need to remember the ID code because the debugger will ask for - it when trying to connect. Note that the E1/E20 will ignore the ID code when programming the MCU during debugging. - If you set this value and then forget it then you can clear the ID code by connecting up in serial boot mode using - FDT. The ID Code is 16 bytes long. The macro below define the ID Code in 4-byte sections. */ -/* Lowest 4-byte section, address 0xFFFFFFA0. From MSB to LSB: Control Code, ID code 1, ID code 2, ID code 3. */ -#define ID_CODE_LONG_1 (0xFFFFFFFF) -/* 2nd ID Code section, address 0xFFFFFFA4. From MSB to LSB: ID code 4, ID code 5, ID code 6, ID code 7. */ -#define ID_CODE_LONG_2 (0xFFFFFFFF) -/* 3rd ID Code section, address 0xFFFFFFA8. From MSB to LSB: ID code 8, ID code 9, ID code 10, ID code 11. */ -#define ID_CODE_LONG_3 (0xFFFFFFFF) -/* 4th ID Code section, address 0xFFFFFFAC. From MSB to LSB: ID code 12, ID code 13, ID code 14, ID code 15. */ -#define ID_CODE_LONG_4 (0xFFFFFFFF) - -/* This macro lets other modules no if a RTOS is being used. - 0 = RTOS is not used. - 1 = RTOS is used. -*/ -#define RTOS_USED (0) - -/* Clock source select (CKSEL). - 0 = Low Speed On-Chip Oscillator (LOCO) - 1 = High Speed On-Chip Oscillator (HOCO) - 2 = Main Clock Oscillator - 3 = Sub-Clock Oscillator - 4 = PLL Circuit -*/ -#define CLOCK_SOURCE (4) - -/* Clock configuration options. - The input clock frequency is specified and then the system clocks are set by specifying the multipliers used. The - multiplier settings are used to set the clock registers in resetprg.c. If a 12MHz clock is used and the - ICLK is 96MHz, PCLKA is 48MHz, PCLKB is 48MHz, FCLK is 48MHz, USB Clock is 48MHz, and BCLK is 12MHz then the - settings would be: - - XTAL_HZ = 12000000 - PLL_DIV = 1 (no division) - PLL_MUL = 16 (12MHz x 16 = 192MHz) - ICK_DIV = 2 : System Clock (ICLK) = (((XTAL_HZ/PLL_DIV) * PLL_MUL) / ICK_DIV) = 96MHz - PCKA_DIV = 4 : Peripheral Clock A (PCLKA) = (((XTAL_HZ/PLL_DIV) * PLL_MUL) / PCKA_DIV) = 48MHz - PCKB_DIV = 4 : Peripheral Clock B (PCLKB) = (((XTAL_HZ/PLL_DIV) * PLL_MUL) / PCKB_DIV) = 48MHz - FCK_DIV = 4 : Flash IF Clock (FCLK) = (((XTAL_HZ/PLL_DIV) * PLL_MUL) / FCK_DIV) = 48MHz - BCK_DIV = 8 : External Bus Clock (BCK) = (((XTAL_HZ/PLL_DIV) * PLL_MUL) / BCK_DIV) = 24MHz - UCK_DIV = 4 : USB Clock (UCLK) = (((XTAL_HZ/PLL_DIV) * PLL_MUL) / UCK_DIV) = 48MHz -*/ -/* XTAL - Input clock frequency in Hz */ -#define XTAL_HZ (12000000) -/* PLL Input Frequency Divider Select (PLIDIV). - Available divisors = /1 (no division), /2, /4 -*/ -#define PLL_DIV (1) -/* PLL Frequency Multiplication Factor Select (STC). - Available multipliers = x8, x10, x12, x16, x20, x24, x25, x50 -*/ -#define PLL_MUL (16) -/* System Clock Divider (ICK). - Available divisors = /1 (no division), /2, /4, /8, /16, /32, /64 -*/ -#define ICK_DIV (2) -/* Peripheral Module Clock A Divider (PCKA). - Available divisors = /1 (no division), /2, /4, /8, /16, /32, /64 -*/ -#define PCKA_DIV (2) /* WAS 4 for 48MHz, attempting to make it equal ICLK by setting it to 2. */ -/* Peripheral Module Clock B Divider (PCKB). - Available divisors = /1 (no division), /2, /4, /8, /16, /32, /64 -*/ -#define PCKB_DIV (4) -/* External Bus Clock Divider (BCK). - Available divisors = /1 (no division), /2, /4, /8, /16, /32, /64 -*/ -#define BCK_DIV (8) -/* Flash IF Clock Divider (FCK). - Available divisors = /1 (no division), /2, /4, /8, /16, /32, /64 -*/ -#define FCK_DIV (4) -/* IEBUS Clock Divider Select. - Available divisors = /1 (no division), /2, /4, /6, /8, /16, /32, /64 -*/ -#define IEBCK_DIV (8) -/* USB Clock Divider Select. - Available divisors = /3, /4 -*/ -#define UCK_DIV (4) - -#endif /* R_BSP_CONFIG_REF_HEADER_FILE */ - - - diff --git a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/uIP_Task.c b/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/uIP_Task.c deleted file mode 100644 index 974381ef7..000000000 --- a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/uIP_Task.c +++ /dev/null @@ -1,319 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* Standard includes. */ -#include - -/* Scheduler includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "timers.h" -#include "queue.h" - -/* uip includes. */ -#include "net/uip.h" -#include "net/uip_arp.h" -#include "apps/httpd/httpd.h" -#include "sys/timer.h" -#include "net/clock-arch.h" -#include "r_ether.h" - -/* Demo includes. */ -#include "ParTest.h" - -/*-----------------------------------------------------------*/ - -/* How long to wait before attempting to connect the MAC again. */ -#define uipINIT_WAIT ( 100 / portTICK_PERIOD_MS ) - -/* Shortcut to the header within the Rx buffer. */ -#define xHeader ((struct uip_eth_hdr *) &uip_buf[ 0 ]) - -/* Standard constant. */ -#define uipTOTAL_FRAME_HEADER_SIZE 54 - -/* The ARP timer and the periodic timer share a callback function, so the -respective timer IDs are used to determine which timer actually expired. These -constants are assigned to the timer IDs. */ -#define uipARP_TIMER 0 -#define uipPERIODIC_TIMER 1 - -/* A block time of zero ticks simply means, "don't block". */ -#define uipDONT_BLOCK 0UL - -/*-----------------------------------------------------------*/ - -/* - * Setup the MAC address in the MAC itself, and in the uIP stack. - */ -static void prvSetMACAddress( void ); - -/* - * Perform any uIP initialisation necessary. - */ -static void prvInitialise_uIP( void ); - -/* - * The callback function that is assigned to both the periodic timer and the - * ARP timer. - */ -static void prvUIPTimerCallback( TimerHandle_t xTimer ); - -/* - * Port functions required by the uIP stack. - */ -clock_time_t clock_time( void ); - -/*-----------------------------------------------------------*/ - -/* The queue used to send TCP/IP events to the uIP stack. */ -QueueHandle_t xEMACEventQueue = NULL; - -/*-----------------------------------------------------------*/ - -clock_time_t clock_time( void ) -{ - return xTaskGetTickCount(); -} -/*-----------------------------------------------------------*/ - -void vuIP_Task( void *pvParameters ) -{ -portBASE_TYPE i; -unsigned long ulNewEvent = 0UL; -unsigned long ulUIP_Events = 0UL; - - ( void ) pvParameters; - - /* Initialise the uIP stack. */ - prvInitialise_uIP(); - - /* Initialise the MAC. */ - vInitEmac(); - - while( lEMACWaitForLink() != pdPASS ) - { - vTaskDelay( uipINIT_WAIT ); - } - - for( ;; ) - { - if( ( ulUIP_Events & uipETHERNET_RX_EVENT ) != 0UL ) - { - /* Is there received data ready to be processed? */ - uip_len = ( unsigned short ) ulEMACRead(); - - if( ( uip_len > 0 ) && ( uip_buf != NULL ) ) - { - /* Standard uIP loop taken from the uIP manual. */ - if( xHeader->type == htons( UIP_ETHTYPE_IP ) ) - { - uip_arp_ipin(); - uip_input(); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - uip_arp_out(); - vEMACWrite(); - } - } - else if( xHeader->type == htons( UIP_ETHTYPE_ARP ) ) - { - uip_arp_arpin(); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - vEMACWrite(); - } - } - } - else - { - ulUIP_Events &= ~uipETHERNET_RX_EVENT; - } - } - - if( ( ulUIP_Events & uipPERIODIC_TIMER_EVENT ) != 0UL ) - { - ulUIP_Events &= ~uipPERIODIC_TIMER_EVENT; - - for( i = 0; i < UIP_CONNS; i++ ) - { - uip_periodic( i ); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - uip_arp_out(); - vEMACWrite(); - } - } - } - - /* Call the ARP timer function every 10 seconds. */ - if( ( ulUIP_Events & uipARP_TIMER_EVENT ) != 0 ) - { - ulUIP_Events &= ~uipARP_TIMER_EVENT; - uip_arp_timer(); - } - - if( ulUIP_Events == pdFALSE ) - { - xQueueReceive( xEMACEventQueue, &ulNewEvent, portMAX_DELAY ); - ulUIP_Events |= ulNewEvent; - } - } -} -/*-----------------------------------------------------------*/ - -static void prvInitialise_uIP( void ) -{ -TimerHandle_t xARPTimer, xPeriodicTimer; -uip_ipaddr_t xIPAddr; -const unsigned long ul_uIPEventQueueLength = 10UL; - - /* Initialise the uIP stack. */ - uip_init(); - uip_ipaddr( &xIPAddr, configIP_ADDR0, configIP_ADDR1, configIP_ADDR2, configIP_ADDR3 ); - uip_sethostaddr( &xIPAddr ); - uip_ipaddr( &xIPAddr, configNET_MASK0, configNET_MASK1, configNET_MASK2, configNET_MASK3 ); - uip_setnetmask( &xIPAddr ); - prvSetMACAddress(); - httpd_init(); - - /* Create the queue used to sent TCP/IP events to the uIP stack. */ - xEMACEventQueue = xQueueCreate( ul_uIPEventQueueLength, sizeof( unsigned long ) ); - - /* Create and start the uIP timers. */ - xARPTimer = xTimerCreate( "ARPTimer", /* Just a name that is helpful for debugging, not used by the kernel. */ - ( 10000UL / portTICK_PERIOD_MS ), /* Timer period. */ - pdTRUE, /* Autor-reload. */ - ( void * ) uipARP_TIMER, - prvUIPTimerCallback - ); - - xPeriodicTimer = xTimerCreate( "PeriodicTimer", - ( 50 / portTICK_PERIOD_MS ), - pdTRUE, /* Autor-reload. */ - ( void * ) uipPERIODIC_TIMER, - prvUIPTimerCallback - ); - - configASSERT( xARPTimer ); - configASSERT( xPeriodicTimer ); - - xTimerStart( xARPTimer, portMAX_DELAY ); - xTimerStart( xPeriodicTimer, portMAX_DELAY ); -} -/*-----------------------------------------------------------*/ - -static void prvUIPTimerCallback( TimerHandle_t xTimer ) -{ -static const unsigned long ulARPTimerExpired = uipARP_TIMER_EVENT; -static const unsigned long ulPeriodicTimerExpired = uipPERIODIC_TIMER_EVENT; - - /* This is a time callback, so calls to xQueueSend() must not attempt to - block. */ - switch( ( int ) pvTimerGetTimerID( xTimer ) ) - { - case uipARP_TIMER : xQueueSend( xEMACEventQueue, &ulARPTimerExpired, uipDONT_BLOCK ); - break; - - case uipPERIODIC_TIMER : xQueueSend( xEMACEventQueue, &ulPeriodicTimerExpired, uipDONT_BLOCK ); - break; - - default : /* Should not get here. */ - break; - } -} -/*-----------------------------------------------------------*/ - -static void prvSetMACAddress( void ) -{ -struct uip_eth_addr xAddr; - - /* Configure the MAC address in the uIP stack. */ - xAddr.addr[ 0 ] = configMAC_ADDR0; - xAddr.addr[ 1 ] = configMAC_ADDR1; - xAddr.addr[ 2 ] = configMAC_ADDR2; - xAddr.addr[ 3 ] = configMAC_ADDR3; - xAddr.addr[ 4 ] = configMAC_ADDR4; - xAddr.addr[ 5 ] = configMAC_ADDR5; - uip_setethaddr( xAddr ); -} -/*-----------------------------------------------------------*/ - -void vApplicationProcessFormInput( char *pcInputString ) -{ -char *c; - - /* Only interested in processing form input if this is the IO page. */ - c = strstr( pcInputString, "io.shtml" ); - - if( c ) - { - /* Is there a command in the string? */ - c = strstr( pcInputString, "?" ); - if( c ) - { - /* Turn the LED's on or off in accordance with the check box status. */ - if( strstr( c, "LED0=1" ) != NULL ) - { - /* Turn the LEDs on. */ - vParTestSetLED( 7, 1 ); - vParTestSetLED( 8, 1 ); - vParTestSetLED( 9, 1 ); - vParTestSetLED( 10, 1 ); - } - else - { - /* Turn the LEDs off. */ - vParTestSetLED( 7, 0 ); - vParTestSetLED( 8, 0 ); - vParTestSetLED( 9, 0 ); - vParTestSetLED( 10, 0 ); - } - } - else - { - /* Commands to turn LEDs off are not always explicit. */ - vParTestSetLED( 7, 0 ); - vParTestSetLED( 8, 0 ); - vParTestSetLED( 9, 0 ); - vParTestSetLED( 10, 0 ); - } - } -} - diff --git a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/webserver/EMAC.c b/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/webserver/EMAC.c deleted file mode 100644 index 1a733061a..000000000 --- a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/webserver/EMAC.c +++ /dev/null @@ -1,534 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* FreeRTOS includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "semphr.h" - -/* Hardware specific includes. */ -#include "r_ether.h" -#include "phy.h" - -/* uIP includes. */ -#include "net/uip.h" - -/* The time to wait between attempts to obtain a free buffer. */ -#define emacBUFFER_WAIT_DELAY_ms ( 3 / portTICK_PERIOD_MS ) - -/* The number of times emacBUFFER_WAIT_DELAY_ms should be waited before giving -up on attempting to obtain a free buffer all together. */ -#define emacBUFFER_WAIT_ATTEMPTS ( 30 ) - -/* The number of Rx descriptors. */ -#define emacNUM_RX_DESCRIPTORS 8 - -/* The number of Tx descriptors. When using uIP there is not point in having -more than two. */ -#define emacNUM_TX_BUFFERS 2 - -/* The total number of EMAC buffers to allocate. */ -#define emacNUM_BUFFERS ( emacNUM_RX_DESCRIPTORS + emacNUM_TX_BUFFERS ) - -/* The time to wait for the Tx descriptor to become free. */ -#define emacTX_WAIT_DELAY_ms ( 10 / portTICK_PERIOD_MS ) - -/* The total number of times to wait emacTX_WAIT_DELAY_ms for the Tx descriptor to -become free. */ -#define emacTX_WAIT_ATTEMPTS ( 50 ) - -/* Only Rx end and Tx end interrupts are used by this driver. */ -#define emacTX_END_INTERRUPT ( 1UL << 21UL ) -#define emacRX_END_INTERRUPT ( 1UL << 18UL ) - -/*-----------------------------------------------------------*/ - -/* The buffers and descriptors themselves. */ -#pragma section _RX_DESC - volatile ethfifo xRxDescriptors[ emacNUM_RX_DESCRIPTORS ]; -#pragma section _TX_DESC - volatile ethfifo xTxDescriptors[ emacNUM_TX_BUFFERS ]; -#pragma section _ETHERNET_BUFFERS - struct - { - unsigned long ulAlignmentVariable; - char cBuffer[ emacNUM_BUFFERS ][ UIP_BUFSIZE ]; - } xEthernetBuffers; -#pragma section - - - - -/* Used to indicate which buffers are free and which are in use. If an index -contains 0 then the corresponding buffer in xEthernetBuffers is free, otherwise -the buffer is in use or about to be used. */ -static unsigned char ucBufferInUse[ emacNUM_BUFFERS ]; - -/*-----------------------------------------------------------*/ - -/* - * Initialise both the Rx and Tx descriptors. - */ -static void prvInitialiseDescriptors( void ); - -/* - * Return a pointer to a free buffer within xEthernetBuffers. - */ -static unsigned char *prvGetNextBuffer( void ); - -/* - * Return a buffer to the list of free buffers. - */ -static void prvReturnBuffer( unsigned char *pucBuffer ); - -/* - * Examine the status of the next Rx FIFO to see if it contains new data. - */ -static unsigned long prvCheckRxFifoStatus( void ); - -/* - * Setup the microcontroller for communication with the PHY. - */ -static void prvResetMAC( void ); - -/* - * Configure the Ethernet interface peripherals. - */ -static void prvConfigureEtherCAndEDMAC( void ); - -/* - * Something has gone wrong with the descriptor usage. Reset all the buffers - * and descriptors. - */ -static void prvResetEverything( void ); - -/*-----------------------------------------------------------*/ - -/* Points to the Rx descriptor currently in use. */ -static ethfifo *pxCurrentRxDesc = NULL; - -/* The buffer used by the uIP stack to both receive and send. This points to -one of the Ethernet buffers when its actually in use. */ -unsigned char *uip_buf = NULL; - -/*-----------------------------------------------------------*/ - -void vInitEmac( void ) -{ - /* Software reset. */ - prvResetMAC(); - - /* Set the Rx and Tx descriptors into their initial state. */ - prvInitialiseDescriptors(); - - /* Set the MAC address into the ETHERC */ - ETHERC.MAHR = ( ( unsigned long ) configMAC_ADDR0 << 24UL ) | - ( ( unsigned long ) configMAC_ADDR1 << 16UL ) | - ( ( unsigned long ) configMAC_ADDR2 << 8UL ) | - ( unsigned long ) configMAC_ADDR3; - - ETHERC.MALR.BIT.MA = ( ( unsigned long ) configMAC_ADDR4 << 8UL ) | - ( unsigned long ) configMAC_ADDR5; - - /* Perform rest of interface hardware configuration. */ - prvConfigureEtherCAndEDMAC(); - - /* Nothing received yet, so uip_buf points nowhere. */ - uip_buf = NULL; - - /* Initialize the PHY */ - configASSERT( phy_init() == R_PHY_OK ); -} -/*-----------------------------------------------------------*/ - -void vEMACWrite( void ) -{ -long x; - - /* Wait until the second transmission of the last packet has completed. */ - for( x = 0; x < emacTX_WAIT_ATTEMPTS; x++ ) - { - if( ( xTxDescriptors[ 1 ].status & ACT ) != 0 ) - { - /* Descriptor is still active. */ - vTaskDelay( emacTX_WAIT_DELAY_ms ); - } - else - { - break; - } - } - - /* Is the descriptor free after waiting for it? */ - if( ( xTxDescriptors[ 1 ].status & ACT ) != 0 ) - { - /* Something has gone wrong. */ - prvResetEverything(); - } - - /* Setup both descriptors to transmit the frame. */ - xTxDescriptors[ 0 ].buf_p = ( char * ) uip_buf; - xTxDescriptors[ 0 ].bufsize = uip_len; - xTxDescriptors[ 1 ].buf_p = ( char * ) uip_buf; - xTxDescriptors[ 1 ].bufsize = uip_len; - - /* uip_buf is being sent by the Tx descriptor. Allocate a new buffer - for use by the stack. */ - uip_buf = prvGetNextBuffer(); - - /* Clear previous settings and go. */ - xTxDescriptors[0].status &= ~( FP1 | FP0 ); - xTxDescriptors[0].status |= ( FP1 | FP0 | ACT ); - xTxDescriptors[1].status &= ~( FP1 | FP0 ); - xTxDescriptors[1].status |= ( FP1 | FP0 | ACT ); - - EDMAC.EDTRR.LONG = 0x00000001; -} -/*-----------------------------------------------------------*/ - -unsigned long ulEMACRead( void ) -{ -unsigned long ulBytesReceived; - - ulBytesReceived = prvCheckRxFifoStatus(); - - if( ulBytesReceived > 0 ) - { - /* Mark the pxDescriptor buffer as free as uip_buf is going to be set to - the buffer that contains the received data. */ - prvReturnBuffer( uip_buf ); - - /* Point uip_buf to the data about ot be processed. */ - uip_buf = ( void * ) pxCurrentRxDesc->buf_p; - - /* Allocate a new buffer to the descriptor, as uip_buf is now using it's - old descriptor. */ - pxCurrentRxDesc->buf_p = prvGetNextBuffer(); - - /* Prepare the descriptor to go again. */ - pxCurrentRxDesc->status &= ~( FP1 | FP0 ); - pxCurrentRxDesc->status |= ACT; - - /* Move onto the next buffer in the ring. */ - pxCurrentRxDesc = pxCurrentRxDesc->next; - - if( EDMAC.EDRRR.LONG == 0x00000000L ) - { - /* Restart Ethernet if it has stopped */ - EDMAC.EDRRR.LONG = 0x00000001L; - } - } - - return ulBytesReceived; -} -/*-----------------------------------------------------------*/ - -long lEMACWaitForLink( void ) -{ -long lReturn; - - /* Set the link status. */ - switch( phy_set_autonegotiate() ) - { - /* Half duplex link */ - case PHY_LINK_100H: - ETHERC.ECMR.BIT.DM = 0; - ETHERC.ECMR.BIT.RTM = 1; - lReturn = pdPASS; - break; - - case PHY_LINK_10H: - ETHERC.ECMR.BIT.DM = 0; - ETHERC.ECMR.BIT.RTM = 0; - lReturn = pdPASS; - break; - - - /* Full duplex link */ - case PHY_LINK_100F: - ETHERC.ECMR.BIT.DM = 1; - ETHERC.ECMR.BIT.RTM = 1; - lReturn = pdPASS; - break; - - case PHY_LINK_10F: - ETHERC.ECMR.BIT.DM = 1; - ETHERC.ECMR.BIT.RTM = 0; - lReturn = pdPASS; - break; - - default: - lReturn = pdFAIL; - break; - } - - if( lReturn == pdPASS ) - { - /* Enable receive and transmit. */ - ETHERC.ECMR.BIT.RE = 1; - ETHERC.ECMR.BIT.TE = 1; - - /* Enable EDMAC receive */ - EDMAC.EDRRR.LONG = 0x1; - } - - return lReturn; -} -/*-----------------------------------------------------------*/ - -static void prvInitialiseDescriptors( void ) -{ -ethfifo *pxDescriptor; -long x; - - for( x = 0; x < emacNUM_BUFFERS; x++ ) - { - /* Ensure none of the buffers are shown as in use at the start. */ - ucBufferInUse[ x ] = pdFALSE; - } - - /* Initialise the Rx descriptors. */ - for( x = 0; x < emacNUM_RX_DESCRIPTORS; x++ ) - { - pxDescriptor = &( xRxDescriptors[ x ] ); - pxDescriptor->buf_p = &( xEthernetBuffers.cBuffer[ x ][ 0 ] ); - - pxDescriptor->bufsize = UIP_BUFSIZE; - pxDescriptor->size = 0; - pxDescriptor->status = ACT; - pxDescriptor->next = &xRxDescriptors[ x + 1 ]; - - /* Mark this buffer as in use. */ - ucBufferInUse[ x ] = pdTRUE; - } - - /* The last descriptor points back to the start. */ - pxDescriptor->status |= DL; - pxDescriptor->next = &xRxDescriptors[ 0 ]; - - /* Initialise the Tx descriptors. */ - for( x = 0; x < emacNUM_TX_BUFFERS; x++ ) - { - pxDescriptor = &( xTxDescriptors[ x ] ); - - /* A buffer is not allocated to the Tx descriptor until a send is - actually required. */ - pxDescriptor->buf_p = NULL; - - pxDescriptor->bufsize = UIP_BUFSIZE; - pxDescriptor->size = 0; - pxDescriptor->status = 0; - pxDescriptor->next = &xTxDescriptors[ x + 1 ]; - } - - /* The last descriptor points back to the start. */ - pxDescriptor->status |= DL; - pxDescriptor->next = &( xTxDescriptors[ 0 ] ); - - /* Use the first Rx descriptor to start with. */ - pxCurrentRxDesc = &( xRxDescriptors[ 0 ] ); -} -/*-----------------------------------------------------------*/ - -static unsigned char *prvGetNextBuffer( void ) -{ -long x; -unsigned char *pucReturn = NULL; -unsigned long ulAttempts = 0; - - while( pucReturn == NULL ) - { - /* Look through the buffers to find one that is not in use by - anything else. */ - for( x = 0; x < emacNUM_BUFFERS; x++ ) - { - if( ucBufferInUse[ x ] == pdFALSE ) - { - ucBufferInUse[ x ] = pdTRUE; - pucReturn = ( unsigned char * ) &( xEthernetBuffers.cBuffer[ x ][ 0 ] ); - break; - } - } - - /* Was a buffer found? */ - if( pucReturn == NULL ) - { - ulAttempts++; - - if( ulAttempts >= emacBUFFER_WAIT_ATTEMPTS ) - { - break; - } - - /* Wait then look again. */ - vTaskDelay( emacBUFFER_WAIT_DELAY_ms ); - } - } - - return pucReturn; -} -/*-----------------------------------------------------------*/ - -static void prvReturnBuffer( unsigned char *pucBuffer ) -{ -unsigned long ul; - - /* Return a buffer to the pool of free buffers. */ - for( ul = 0; ul < emacNUM_BUFFERS; ul++ ) - { - if( &( xEthernetBuffers.cBuffer[ ul ][ 0 ] ) == ( void * ) pucBuffer ) - { - ucBufferInUse[ ul ] = pdFALSE; - break; - } - } -} -/*-----------------------------------------------------------*/ - -static void prvResetEverything( void ) -{ - /* Temporary code just to see if this gets called. This function has not - been implemented. */ - portDISABLE_INTERRUPTS(); - for( ;; ); -} -/*-----------------------------------------------------------*/ - -static unsigned long prvCheckRxFifoStatus( void ) -{ -unsigned long ulReturn = 0; - - if( ( pxCurrentRxDesc->status & ACT ) != 0 ) - { - /* Current descriptor is still active. */ - } - else if( ( pxCurrentRxDesc->status & FE ) != 0 ) - { - /* Frame error. Clear the error. */ - pxCurrentRxDesc->status &= ~( FP1 | FP0 | FE ); - pxCurrentRxDesc->status &= ~( RMAF | RRF | RTLF | RTSF | PRE | CERF ); - pxCurrentRxDesc->status |= ACT; - pxCurrentRxDesc = pxCurrentRxDesc->next; - - if( EDMAC.EDRRR.LONG == 0x00000000UL ) - { - /* Restart Ethernet if it has stopped. */ - EDMAC.EDRRR.LONG = 0x00000001UL; - } - } - else - { - /* The descriptor contains a frame. Because of the size of the buffers - the frame should always be complete. */ - if( ( pxCurrentRxDesc->status & FP0 ) == FP0 ) - { - ulReturn = pxCurrentRxDesc->size; - } - else - { - /* Do not expect to get here. */ - prvResetEverything(); - } - } - - return ulReturn; -} -/*-----------------------------------------------------------*/ - -static void prvResetMAC( void ) -{ - /* Ensure the EtherC and EDMAC are enabled. */ - SYSTEM.MSTPCRB.BIT.MSTPB15 = 0; - vTaskDelay( 100 / portTICK_PERIOD_MS ); - - EDMAC.EDMR.BIT.SWR = 1; - - /* Crude wait for reset to complete. */ - vTaskDelay( 500 / portTICK_PERIOD_MS ); -} -/*-----------------------------------------------------------*/ - -static void prvConfigureEtherCAndEDMAC( void ) -{ - /* Initialisation code taken from Renesas example project. */ - - /* TODO: Check bit 5 */ - ETHERC.ECSR.LONG = 0x00000037; /* Clear all ETHERC statuS BFR, PSRTO, LCHNG, MPD, ICD */ - - /* Set the EDMAC interrupt priority. */ - _IPR( _ETHER_EINT ) = configKERNEL_INTERRUPT_PRIORITY; - - /* TODO: Check bit 5 */ - /* Enable interrupts of interest only. */ - EDMAC.EESIPR.LONG = emacTX_END_INTERRUPT | emacRX_END_INTERRUPT; - ETHERC.RFLR.LONG = 1518; /* Ether payload is 1500+ CRC */ - ETHERC.IPGR.LONG = 0x00000014; /* Intergap is 96-bit time */ - - /* EDMAC */ - EDMAC.EESR.LONG = 0x47FF0F9F; /* Clear all ETHERC and EDMAC status bits */ - #ifdef __LIT - EDMAC.EDMR.BIT.DE = 1; - #endif - EDMAC.RDLAR = ( void * ) pxCurrentRxDesc; /* Initialaize Rx Descriptor List Address */ - EDMAC.TDLAR = &( xTxDescriptors[ 0 ] ); /* Initialaize Tx Descriptor List Address */ - EDMAC.TRSCER.LONG = 0x00000000; /* Copy-back status is RFE & TFE only */ - EDMAC.TFTR.LONG = 0x00000000; /* Threshold of Tx_FIFO */ - EDMAC.FDR.LONG = 0x00000000; /* Transmit fifo & receive fifo is 256 bytes */ - EDMAC.RMCR.LONG = 0x00000003; /* Receive function is normal mode(continued) */ - ETHERC.ECMR.BIT.PRM = 0; /* Ensure promiscuous mode is off. */ - - /* Enable the interrupt... */ - _IEN( _ETHER_EINT ) = 1; -} -/*-----------------------------------------------------------*/ - -#pragma interrupt ( vEMAC_ISR_Handler( vect = VECT_ETHER_EINT, enable ) ) -void vEMAC_ISR_Handler( void ) -{ -unsigned long ul = EDMAC.EESR.LONG; -long lHigherPriorityTaskWoken = pdFALSE; -extern QueueHandle_t xEMACEventQueue; -const unsigned long ulRxEvent = uipETHERNET_RX_EVENT; - - /* Has a Tx end occurred? */ - if( ul & emacTX_END_INTERRUPT ) - { - /* Only return the buffer to the pool once both Txes have completed. */ - prvReturnBuffer( ( void * ) xTxDescriptors[ 0 ].buf_p ); - EDMAC.EESR.LONG = emacTX_END_INTERRUPT; - } - - /* Has an Rx end occurred? */ - if( ul & emacRX_END_INTERRUPT ) - { - /* Make sure the Ethernet task is not blocked waiting for a packet. */ - xQueueSendFromISR( xEMACEventQueue, &ulRxEvent, &lHigherPriorityTaskWoken ); - portYIELD_FROM_ISR( lHigherPriorityTaskWoken ); - EDMAC.EESR.LONG = emacRX_END_INTERRUPT; - } -} - diff --git a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/webserver/httpd-cgi.c b/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/webserver/httpd-cgi.c deleted file mode 100644 index 016644aa0..000000000 --- a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/webserver/httpd-cgi.c +++ /dev/null @@ -1,277 +0,0 @@ -/** - * \addtogroup httpd - * @{ - */ - -/** - * \file - * Web server script interface - * \author - * Adam Dunkels - * - */ - -/* - * Copyright (c) 2001-2006, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: httpd-cgi.c,v 1.2 2006/06/11 21:46:37 adam Exp $ - * - */ -#include "net/uip.h" -#include "net/psock.h" -#include "apps/httpd/httpd.h" -#include "apps/httpd/httpd-cgi.h" -#include "apps/httpd/httpd-fs.h" - -#include -#include - -#include "FreeRTOS.h" -#include "task.h" - -HTTPD_CGI_CALL( file, "file-stats", file_stats ); -HTTPD_CGI_CALL( tcp, "tcp-connections", tcp_stats ); -HTTPD_CGI_CALL( net, "net-stats", net_stats ); -HTTPD_CGI_CALL( rtos, "rtos-stats", rtos_stats ); -HTTPD_CGI_CALL( run, "run-time", run_time ); -HTTPD_CGI_CALL( io, "led-io", led_io ); - -static const struct httpd_cgi_call *calls[] = { &file, &tcp, &net, &rtos, &run, &io, NULL }; - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( nullfunction ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - ( void ) PT_YIELD_FLAG; - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -httpd_cgifunction httpd_cgi( char *name ) -{ - const struct httpd_cgi_call **f; - - /* Find the matching name in the table, return the function. */ - for( f = calls; *f != NULL; ++f ) - { - if( strncmp((*f)->name, name, strlen((*f)->name)) == 0 ) - { - return( *f )->function; - } - } - - return nullfunction; -} - -/*---------------------------------------------------------------------------*/ -static unsigned short generate_file_stats( void *arg ) -{ - char *f = ( char * ) arg; - return sprintf( ( char * ) uip_appdata, "%5u", httpd_fs_count(f) ); -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( file_stats ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - - ( void ) PT_YIELD_FLAG; - - PSOCK_GENERATOR_SEND( &s->sout, generate_file_stats, strchr(ptr, ' ') + 1 ); - - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -static const char closed[] = /* "CLOSED",*/ { 0x43, 0x4c, 0x4f, 0x53, 0x45, 0x44, 0 }; -static const char syn_rcvd[] = /* "SYN-RCVD",*/ { 0x53, 0x59, 0x4e, 0x2d, 0x52, 0x43, 0x56, 0x44, 0 }; -static const char syn_sent[] = /* "SYN-SENT",*/ { 0x53, 0x59, 0x4e, 0x2d, 0x53, 0x45, 0x4e, 0x54, 0 }; -static const char established[] = /* "ESTABLISHED",*/ { 0x45, 0x53, 0x54, 0x41, 0x42, 0x4c, 0x49, 0x53, 0x48, 0x45, 0x44, 0 }; -static const char fin_wait_1[] = /* "FIN-WAIT-1",*/ { 0x46, 0x49, 0x4e, 0x2d, 0x57, 0x41, 0x49, 0x54, 0x2d, 0x31, 0 }; -static const char fin_wait_2[] = /* "FIN-WAIT-2",*/ { 0x46, 0x49, 0x4e, 0x2d, 0x57, 0x41, 0x49, 0x54, 0x2d, 0x32, 0 }; -static const char closing[] = /* "CLOSING",*/ { 0x43, 0x4c, 0x4f, 0x53, 0x49, 0x4e, 0x47, 0 }; -static const char time_wait[] = /* "TIME-WAIT,"*/ { 0x54, 0x49, 0x4d, 0x45, 0x2d, 0x57, 0x41, 0x49, 0x54, 0 }; -static const char last_ack[] = /* "LAST-ACK"*/ { 0x4c, 0x41, 0x53, 0x54, 0x2d, 0x41, 0x43, 0x4b, 0 }; - -static const char *states[] = { closed, syn_rcvd, syn_sent, established, fin_wait_1, fin_wait_2, closing, time_wait, last_ack }; - -static unsigned short generate_tcp_stats( void *arg ) -{ - struct uip_conn *conn; - struct httpd_state *s = ( struct httpd_state * ) arg; - - conn = &uip_conns[s->count]; - return sprintf( ( char * ) uip_appdata, - "\r\n", htons(conn->lport), - htons(conn->ripaddr.u16[0]) >> 8, htons(conn->ripaddr.u16[0]) & 0xff, htons(conn->ripaddr.u16[1]) >> 8, - htons(conn->ripaddr.u16[1]) & 0xff, htons(conn->rport), states[conn->tcpstateflags & UIP_TS_MASK], conn->nrtx, conn->timer, - (uip_outstanding(conn)) ? '*' : ' ', (uip_stopped(conn)) ? '!' : ' ' ); -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( tcp_stats ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - ( void ) PT_YIELD_FLAG; - for( s->count = 0; s->count < UIP_CONNS; ++s->count ) - { - if( (uip_conns[s->count].tcpstateflags & UIP_TS_MASK) != UIP_CLOSED ) - { - PSOCK_GENERATOR_SEND( &s->sout, generate_tcp_stats, s ); - } - } - - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -static unsigned short generate_net_stats( void *arg ) -{ - struct httpd_state *s = ( struct httpd_state * ) arg; - return sprintf( ( char * ) uip_appdata, "%5u\n", (( uip_stats_t * ) &uip_stat)[s->count] ); -} - -static PT_THREAD( net_stats ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - ( void ) PT_YIELD_FLAG; -#if UIP_STATISTICS - for( s->count = 0; s->count < sizeof(uip_stat) / sizeof(uip_stats_t); ++s->count ) - { - PSOCK_GENERATOR_SEND( &s->sout, generate_net_stats, s ); - } - -#endif /* UIP_STATISTICS */ - - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -extern void vTaskList( char *pcWriteBuffer ); -extern char *pcGetTaskStatusMessage( void ); -static char cCountBuf[128]; -long lRefreshCount = 0; -static unsigned short generate_rtos_stats( void *arg ) -{ - ( void ) arg; - lRefreshCount++; - sprintf( cCountBuf, "


Refresh count = %d


%s", ( int ) lRefreshCount, pcGetTaskStatusMessage() ); - vTaskList( ( char * ) uip_appdata ); - strcat( uip_appdata, cCountBuf ); - - return strlen( uip_appdata ); -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( rtos_stats ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - ( void ) PT_YIELD_FLAG; - PSOCK_GENERATOR_SEND( &s->sout, generate_rtos_stats, NULL ); - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -char *pcStatus; -unsigned long ulString; - -static unsigned short generate_io_state( void *arg ) -{ - extern long lParTestGetLEDState( unsigned long ulLED ); - ( void ) arg; - - /* Are the dynamically setable LEDs currently on or off? */ - if( lParTestGetLEDState( 3 ) ) - { - pcStatus = "checked"; - } - else - { - pcStatus = ""; - } - - sprintf( uip_appdata, "LED

", pcStatus ); - - return strlen( uip_appdata ); -} - -/*---------------------------------------------------------------------------*/ -extern void vTaskGetRunTimeStats( char *pcWriteBuffer ); -extern unsigned short usMaxJitter; -static char cJitterBuffer[ 200 ]; -static unsigned short generate_runtime_stats( void *arg ) -{ - ( void ) arg; - lRefreshCount++; - sprintf( cCountBuf, "


Refresh count = %d", ( int ) lRefreshCount ); - - #ifdef INCLUDE_HIGH_FREQUENCY_TIMER_TEST - { - sprintf( cJitterBuffer, "


Max high frequency timer jitter = %d peripheral clock periods.


", ( int ) usMaxJitter ); - vTaskGetRunTimeStats( ( char * ) uip_appdata ); - strcat( uip_appdata, cJitterBuffer ); - } - #else - { - ( void ) cJitterBuffer; - strcpy( uip_appdata, "

Run time stats are only available in the debug_with_optimisation build configuration.

" ); - } - #endif - - strcat( uip_appdata, cCountBuf ); - - return strlen( uip_appdata ); -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( run_time ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - ( void ) PT_YIELD_FLAG; - PSOCK_GENERATOR_SEND( &s->sout, generate_runtime_stats, NULL ); - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( led_io ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - ( void ) PT_YIELD_FLAG; - PSOCK_GENERATOR_SEND( &s->sout, generate_io_state, NULL ); - PSOCK_END( &s->sout ); -} - -/** @} */ diff --git a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/webserver/httpd-fs/404.html b/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/webserver/httpd-fs/404.html deleted file mode 100644 index 43e7f4cad..000000000 --- a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/webserver/httpd-fs/404.html +++ /dev/null @@ -1,8 +0,0 @@ - - -

-

404 - file not found

-

Go here instead.

-
- - \ No newline at end of file diff --git a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/webserver/httpd-fs/index.html b/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/webserver/httpd-fs/index.html deleted file mode 100644 index 4937dc69a..000000000 --- a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/webserver/httpd-fs/index.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Loading index.shtml. Click here if not automatically redirected. - - - - - diff --git a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/webserver/httpd-fs/index.shtml b/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/webserver/httpd-fs/index.shtml deleted file mode 100644 index 882d085ce..000000000 --- a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/webserver/httpd-fs/index.shtml +++ /dev/null @@ -1,20 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS Homepage | IO | 37K jpg -

-


-

-

Task statistics

-Page will refresh every 2 seconds.

-

Task          State  Priority  Stack	#
************************************************
-%! rtos-stats -
-
- - - diff --git a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/webserver/httpd-fs/io.shtml b/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/webserver/httpd-fs/io.shtml deleted file mode 100644 index 819e2d39b..000000000 --- a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/webserver/httpd-fs/io.shtml +++ /dev/null @@ -1,28 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS Homepage | IO | 37K jpg -

-


-LED and LCD IO
- -

- -Use the check box to turn on or off LED 4, then click "Update IO". - - -

-
-%! led-io -

- - -

- - - - diff --git a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/webserver/httpd-fs/runtime.shtml b/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/webserver/httpd-fs/runtime.shtml deleted file mode 100644 index 3464fd471..000000000 --- a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/webserver/httpd-fs/runtime.shtml +++ /dev/null @@ -1,20 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS Homepage | IO | 37K jpg -

-


-

-

Run-time statistics

-Page will refresh every 2 seconds.

-

Task            Abs Time      % Time
****************************************
-%! run-time -
-
- - - diff --git a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/webserver/httpd-fs/stats.shtml b/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/webserver/httpd-fs/stats.shtml deleted file mode 100644 index f54118606..000000000 --- a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/webserver/httpd-fs/stats.shtml +++ /dev/null @@ -1,47 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS Homepage | IO | 37K jpg -

-


-

-

Network statistics

-
LocalRemoteStateRetransmissionsTimerFlags
%d%u.%u.%u.%u:%u%s%u%u%c %c
-
-IP           Packets received
-             Packets sent
-             Forwaded
-             Dropped
-IP errors    IP version/header length
-             IP length, high byte
-             IP length, low byte
-             IP fragments
-             Header checksum
-             Wrong protocol
-ICMP	     Packets received
-             Packets sent
-             Packets dropped
-             Type errors
-             Checksum errors
-TCP          Packets received
-             Packets sent
-             Packets dropped
-             Checksum errors
-             Data packets without ACKs
-             Resets
-             Retransmissionsa
-             Syn to closed port
-UDP          Packets dropped
-             Packets received
-             Packets sent
-             Packets chkerr
-	     No connection avaliable
-
%! net-stats
-
- - - diff --git a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/webserver/httpd-fs/tcp.shtml b/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/webserver/httpd-fs/tcp.shtml deleted file mode 100644 index 23dcdcae3..000000000 --- a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/webserver/httpd-fs/tcp.shtml +++ /dev/null @@ -1,21 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS Homepage | IO | 37K jpg -

-


-
-

Network connections

-

- - -%! tcp-connections - - - - - diff --git a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/webserver/httpd-fsdata.c b/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/webserver/httpd-fsdata.c deleted file mode 100644 index 47823d100..000000000 --- a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/webserver/httpd-fsdata.c +++ /dev/null @@ -1,3871 +0,0 @@ -static const char data_404_html[] = { - /* /404.html */ - 0x2f, 0x34, 0x30, 0x34, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, 0xa, 0x20, 0x20, - 0x3c, 0x62, 0x6f, 0x64, 0x79, 0x20, 0x62, 0x67, 0x63, 0x6f, - 0x6c, 0x6f, 0x72, 0x3d, 0x22, 0x77, 0x68, 0x69, 0x74, 0x65, - 0x22, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x63, - 0x65, 0x6e, 0x74, 0x65, 0x72, 0x3e, 0xd, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x3c, 0x68, 0x31, 0x3e, 0x34, 0x30, - 0x34, 0x20, 0x2d, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x6e, - 0x6f, 0x74, 0x20, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x3c, 0x2f, - 0x68, 0x31, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x3c, 0x68, 0x33, 0x3e, 0x47, 0x6f, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x2f, 0x22, 0x3e, - 0x68, 0x65, 0x72, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x69, - 0x6e, 0x73, 0x74, 0x65, 0x61, 0x64, 0x2e, 0x3c, 0x2f, 0x68, - 0x33, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x2f, - 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x3e, 0xd, 0xa, 0x20, - 0x20, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xd, 0xa, - 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0}; - -static const char data_index_html[] = { - /* /index.html */ - 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x20, 0x6f, 0x6e, 0x4c, 0x6f, 0x61, 0x64, - 0x3d, 0x22, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x73, - 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x28, - 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x6c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x68, 0x72, 0x65, 0x66, 0x3d, - 0x27, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, - 0x6d, 0x6c, 0x27, 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x2c, - 0x31, 0x30, 0x30, 0x29, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x66, - 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, - 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xd, 0xa, 0x4c, - 0x6f, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x69, 0x6e, 0x64, - 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x2e, 0x20, - 0x20, 0x43, 0x6c, 0x69, 0x63, 0x6b, 0x20, 0x3c, 0x61, 0x20, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x68, - 0x65, 0x72, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x69, 0x66, - 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x61, 0x75, 0x74, 0x6f, 0x6d, - 0x61, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x6c, 0x79, 0x20, 0x72, - 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x65, 0x64, 0x2e, - 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xd, - 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xd, 0xa, - 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xd, 0xa, 0x3c, - 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, 0xa, 0xd, 0xa, -0}; - -static const char data_index_shtml[] = { - /* /index.shtml */ - 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x20, 0x6f, 0x6e, 0x4c, 0x6f, 0x61, 0x64, - 0x3d, 0x22, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x73, - 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x28, - 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x6c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x68, 0x72, 0x65, 0x66, 0x3d, - 0x27, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, - 0x6d, 0x6c, 0x27, 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x2c, - 0x32, 0x30, 0x30, 0x30, 0x29, 0x22, 0x3e, 0xd, 0xa, 0x3c, - 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, - 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xd, 0xa, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x53, 0x74, 0x61, - 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x72, 0x75, 0x6e, 0x74, 0x69, - 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x52, 0x75, 0x6e, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, - 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, - 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x54, 0x43, 0x50, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, - 0x6c, 0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, - 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, - 0x65, 0x65, 0x72, 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, - 0x2f, 0x22, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x20, 0x48, 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, - 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, - 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, - 0x66, 0x3d, 0x22, 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, - 0x6c, 0x22, 0x3e, 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0x20, - 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, - 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x6c, 0x6f, - 0x67, 0x6f, 0x2e, 0x6a, 0x70, 0x67, 0x22, 0x3e, 0x33, 0x37, - 0x4b, 0x20, 0x6a, 0x70, 0x67, 0x3c, 0x2f, 0x61, 0x3e, 0xd, - 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, - 0x3c, 0x68, 0x72, 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, - 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x32, 0x3e, 0x54, - 0x61, 0x73, 0x6b, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, - 0x74, 0x69, 0x63, 0x73, 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0xd, - 0xa, 0x50, 0x61, 0x67, 0x65, 0x20, 0x77, 0x69, 0x6c, 0x6c, - 0x20, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x20, 0x65, - 0x76, 0x65, 0x72, 0x79, 0x20, 0x32, 0x20, 0x73, 0x65, 0x63, - 0x6f, 0x6e, 0x64, 0x73, 0x2e, 0x3c, 0x70, 0x3e, 0xd, 0xa, - 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, - 0x3d, 0x22, 0x63, 0x6f, 0x75, 0x72, 0x69, 0x65, 0x72, 0x22, - 0x3e, 0x3c, 0x70, 0x72, 0x65, 0x3e, 0x54, 0x61, 0x73, 0x6b, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x53, 0x74, 0x61, 0x74, 0x65, 0x20, 0x20, 0x50, 0x72, 0x69, - 0x6f, 0x72, 0x69, 0x74, 0x79, 0x20, 0x20, 0x53, 0x74, 0x61, - 0x63, 0x6b, 0x9, 0x23, 0x3c, 0x62, 0x72, 0x3e, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x3c, 0x62, 0x72, 0x3e, - 0xd, 0xa, 0x25, 0x21, 0x20, 0x72, 0x74, 0x6f, 0x73, 0x2d, - 0x73, 0x74, 0x61, 0x74, 0x73, 0xd, 0xa, 0x3c, 0x2f, 0x70, - 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, - 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xd, - 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xd, 0xa, - 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, 0xa, 0xd, - 0xa, 0}; - -static const char data_io_shtml[] = { - /* /io.shtml */ - 0x2f, 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x6e, - 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, - 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x61, 0x20, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, - 0x61, 0x73, 0x6b, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x52, 0x75, 0x6e, - 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, 0x74, 0x61, 0x74, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x43, 0x50, - 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, - 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, - 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, 0x65, 0x65, 0x72, - 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x22, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x20, 0x48, - 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, - 0x6a, 0x70, 0x67, 0x22, 0x3e, 0x33, 0x37, 0x4b, 0x20, 0x6a, - 0x70, 0x67, 0x3c, 0x2f, 0x61, 0x3e, 0xd, 0xa, 0x3c, 0x62, - 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x72, - 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x3e, 0x4c, 0x45, 0x44, 0x20, - 0x61, 0x6e, 0x64, 0x20, 0x4c, 0x43, 0x44, 0x20, 0x49, 0x4f, - 0x3c, 0x2f, 0x62, 0x3e, 0x3c, 0x62, 0x72, 0x3e, 0xd, 0xa, - 0xd, 0xa, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0xd, 0xa, 0x55, - 0x73, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x68, 0x65, - 0x63, 0x6b, 0x20, 0x62, 0x6f, 0x78, 0x20, 0x74, 0x6f, 0x20, - 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6f, 0x6e, 0x20, 0x6f, 0x72, - 0x20, 0x6f, 0x66, 0x66, 0x20, 0x4c, 0x45, 0x44, 0x20, 0x34, - 0x2c, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x20, 0x63, 0x6c, 0x69, - 0x63, 0x6b, 0x20, 0x22, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x20, 0x49, 0x4f, 0x22, 0x2e, 0xd, 0xa, 0xd, 0xa, 0xd, - 0xa, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x72, - 0x6d, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x22, 0x61, 0x46, - 0x6f, 0x72, 0x6d, 0x22, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x3d, 0x22, 0x2f, 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, - 0x6d, 0x6c, 0x22, 0x20, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, - 0x3d, 0x22, 0x67, 0x65, 0x74, 0x22, 0x3e, 0xd, 0xa, 0x25, - 0x21, 0x20, 0x6c, 0x65, 0x64, 0x2d, 0x69, 0x6f, 0xd, 0xa, - 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x69, 0x6e, 0x70, 0x75, - 0x74, 0x20, 0x74, 0x79, 0x70, 0x65, 0x3d, 0x22, 0x73, 0x75, - 0x62, 0x6d, 0x69, 0x74, 0x22, 0x20, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x3d, 0x22, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, - 0x49, 0x4f, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, - 0x72, 0x6d, 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, - 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, - 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, - 0xd, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, - 0xa, 0xd, 0xa, 0}; - -static const char data_logo_jpg[] = { - /* /logo.jpg */ - 0x2f, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, 0x6a, 0x70, 0x67, 0, - 0xff, 0xd8, 0xff, 0xe0, 00, 0x10, 0x4a, 0x46, 0x49, 0x46, - 00, 0x1, 0x1, 00, 00, 0x1, 00, 0x1, 00, 00, - 0xff, 0xdb, 00, 0x43, 00, 0x3, 0x2, 0x2, 0x3, 0x2, - 0x2, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x3, 0x4, 0x5, - 0x8, 0x5, 0x5, 0x4, 0x4, 0x5, 0xa, 0x7, 0x7, 0x6, - 0x8, 0xc, 0xa, 0xc, 0xc, 0xb, 0xa, 0xb, 0xb, 0xd, - 0xe, 0x12, 0x10, 0xd, 0xe, 0x11, 0xe, 0xb, 0xb, 0x10, - 0x16, 0x10, 0x11, 0x13, 0x14, 0x15, 0x15, 0x15, 0xc, 0xf, - 0x17, 0x18, 0x16, 0x14, 0x18, 0x12, 0x14, 0x15, 0x14, 0xff, - 0xdb, 00, 0x43, 0x1, 0x3, 0x4, 0x4, 0x5, 0x4, 0x5, - 0x9, 0x5, 0x5, 0x9, 0x14, 0xd, 0xb, 0xd, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0xff, 0xc0, - 00, 0x11, 0x8, 0x1, 0x8, 0x2, 0xc2, 0x3, 0x1, 0x22, - 00, 0x2, 0x11, 0x1, 0x3, 0x11, 0x1, 0xff, 0xc4, 00, - 0x1f, 00, 00, 0x1, 0x5, 0x1, 0x1, 0x1, 0x1, 0x1, - 0x1, 00, 00, 00, 00, 00, 00, 00, 00, 0x1, - 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb, - 0xff, 0xc4, 00, 0xb5, 0x10, 00, 0x2, 0x1, 0x3, 0x3, - 0x2, 0x4, 0x3, 0x5, 0x5, 0x4, 0x4, 00, 00, 0x1, - 0x7d, 0x1, 0x2, 0x3, 00, 0x4, 0x11, 0x5, 0x12, 0x21, - 0x31, 0x41, 0x6, 0x13, 0x51, 0x61, 0x7, 0x22, 0x71, 0x14, - 0x32, 0x81, 0x91, 0xa1, 0x8, 0x23, 0x42, 0xb1, 0xc1, 0x15, - 0x52, 0xd1, 0xf0, 0x24, 0x33, 0x62, 0x72, 0x82, 0x9, 0xa, - 0x16, 0x17, 0x18, 0x19, 0x1a, 0x25, 0x26, 0x27, 0x28, 0x29, - 0x2a, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x43, 0x44, - 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x53, 0x54, 0x55, 0x56, - 0x57, 0x58, 0x59, 0x5a, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, - 0x69, 0x6a, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, - 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x92, 0x93, - 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0xa2, 0xa3, 0xa4, - 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xb2, 0xb3, 0xb4, 0xb5, - 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, - 0xc7, 0xc8, 0xc9, 0xca, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, - 0xd8, 0xd9, 0xda, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, - 0xe8, 0xe9, 0xea, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, - 0xf8, 0xf9, 0xfa, 0xff, 0xc4, 00, 0x1f, 0x1, 00, 0x3, - 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 00, - 00, 00, 00, 00, 00, 0x1, 0x2, 0x3, 0x4, 0x5, - 0x6, 0x7, 0x8, 0x9, 0xa, 0xb, 0xff, 0xc4, 00, 0xb5, - 0x11, 00, 0x2, 0x1, 0x2, 0x4, 0x4, 0x3, 0x4, 0x7, - 0x5, 0x4, 0x4, 00, 0x1, 0x2, 0x77, 00, 0x1, 0x2, - 0x3, 0x11, 0x4, 0x5, 0x21, 0x31, 0x6, 0x12, 0x41, 0x51, - 0x7, 0x61, 0x71, 0x13, 0x22, 0x32, 0x81, 0x8, 0x14, 0x42, - 0x91, 0xa1, 0xb1, 0xc1, 0x9, 0x23, 0x33, 0x52, 0xf0, 0x15, - 0x62, 0x72, 0xd1, 0xa, 0x16, 0x24, 0x34, 0xe1, 0x25, 0xf1, - 0x17, 0x18, 0x19, 0x1a, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x35, - 0x36, 0x37, 0x38, 0x39, 0x3a, 0x43, 0x44, 0x45, 0x46, 0x47, - 0x48, 0x49, 0x4a, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, - 0x5a, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x73, - 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x82, 0x83, 0x84, - 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x92, 0x93, 0x94, 0x95, - 0x96, 0x97, 0x98, 0x99, 0x9a, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, - 0xa7, 0xa8, 0xa9, 0xaa, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, - 0xb8, 0xb9, 0xba, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, - 0xc9, 0xca, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, - 0xda, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, - 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xff, - 0xda, 00, 0xc, 0x3, 0x1, 00, 0x2, 0x11, 0x3, 0x11, - 00, 0x3f, 00, 0xfd, 0x53, 0xa2, 0x8a, 0x28, 00, 0xa2, - 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, - 00, 0xaa, 0xf7, 0xfa, 0x85, 0xb6, 0x95, 0x67, 0x2d, 0xd5, - 0xe4, 0xf1, 0xdb, 0x5b, 0x44, 0xa5, 0x9e, 0x59, 0x58, 0x2a, - 0xa8, 0x1e, 0xf5, 0xc6, 0x7c, 0x4e, 0xf8, 0xb3, 0xa6, 0xfc, - 0x39, 0xb4, 0x48, 0xb0, 0xb7, 0xda, 0xd5, 0xc6, 0x5, 0xb6, - 0x9e, 0x8d, 0x86, 0x72, 0x4e, 0x37, 0x37, 0xf7, 0x57, 0xf9, - 0xf6, 0xaa, 0x16, 0x5f, 0xd, 0x9f, 0xc6, 0xd0, 0xc5, 0xa9, - 0xf8, 0xc6, 0xe1, 0xef, 0xa6, 0x99, 0x3, 0xa6, 0x9e, 0x84, - 0xad, 0xbd, 0xb6, 0x7b, 0x2a, 0xf7, 0x3e, 0xe7, 0x9a, 0xe0, - 0xa9, 0x89, 0xbc, 0xdd, 0x1a, 0xb, 0x9a, 0x6b, 0x7e, 0xcb, - 0xd5, 0xfe, 0x9b, 0x9c, 0xb2, 0xaf, 0x79, 0x3a, 0x74, 0xb5, - 0x92, 0xdf, 0xb2, 0xf5, 0xff, 00, 0x23, 0x93, 0xf1, 0xa7, - 0xed, 0x5f, 0xa1, 0x69, 0x1b, 0xa1, 0xd0, 0x2d, 0x64, 0xd6, - 0x2e, 0x1, 0xc7, 0x9b, 0x26, 0x62, 0x84, 0x7d, 0xf, 0x53, - 0xf9, 0x57, 0x91, 0x6b, 0x5f, 0xb5, 0xf, 0x8e, 0x35, 0x49, - 0x9, 0xb7, 0xba, 0xb7, 0xd3, 0x23, 0xec, 0x96, 0xd0, 0x29, - 0xfd, 0x5b, 0x26, 0xbe, 0x92, 0x7f, 0x81, 0x1e, 0xb, 0x7f, - 0xf9, 0x84, 0x46, 0x3e, 0x95, 0xb, 0xfe, 0xcf, 0xfe, 0xa, - 0x93, 0xae, 0x96, 0xa3, 0xe8, 0x6b, 0xc2, 0xaf, 0x84, 0xcd, - 0xab, 0xbb, 0xba, 0xa9, 0x2e, 0xc9, 0xb5, 0xfa, 0x5c, 0xf0, - 0xb1, 0x18, 0x4c, 0xce, 0xbb, 0xd2, 0xb2, 0x8a, 0xec, 0xb4, - 0xff, 00, 0x82, 0x7c, 0x91, 0x3f, 0xc6, 0xf, 0x19, 0x5c, - 0x48, 0x5d, 0xfc, 0x45, 0x7e, 0x58, 0xf5, 0xc4, 0xb8, 0x1f, - 0x90, 0xa7, 0x27, 0xc6, 0x5f, 0x1a, 0x46, 0xca, 0x57, 0xc4, - 0x57, 0xc0, 0xaf, 0x23, 0xf7, 0x99, 0xfe, 0x95, 0xf5, 0x73, - 0xfe, 0xce, 0x9e, 0x9, 0x7f, 0xf9, 0x87, 0x15, 0xfa, 0x35, - 0x43, 0x27, 0xec, 0xd7, 0xe0, 0xa7, 0xe9, 0x67, 0x2a, 0xfd, - 0x1e, 0xbc, 0xcf, 0xec, 0x7c, 0xc5, 0x3b, 0xa9, 0xff, 00, - 0xe4, 0xcc, 0xf3, 0x3f, 0xb1, 0xf3, 0x1d, 0xd5, 0x6f, 0xc5, - 0x9f, 0x31, 0x2f, 0xc7, 0x9f, 0x1e, 0x29, 0xcf, 0xfc, 0x24, - 0x77, 0x47, 0xea, 0x10, 0xff, 00, 0x4a, 0x9e, 0x2f, 0xda, - 0x17, 0xc7, 0xd1, 0xc, 0xf, 0x10, 0xcc, 0x7b, 0xfc, 0xd0, - 0xc6, 0x7f, 0x9a, 0xd7, 0xd1, 0xed, 0xfb, 0x31, 0xf8, 0x34, - 0xe7, 0x10, 0xce, 0x7, 0xfb, 0xff, 00, 0xfd, 0x6a, 0x81, - 0xff, 00, 0x65, 0xcf, 0x8, 0x37, 0x4f, 0xb4, 0x83, 0xfe, - 0xf0, 0xa7, 0xfd, 0x99, 0x9a, 0xad, 0xaa, 0x7f, 0xe4, 0xcc, - 0x3f, 0xb2, 0xf3, 0x45, 0xb5, 0x6f, 0xc5, 0x9f, 0x3d, 0xff, - 00, 0xc3, 0x46, 0x7c, 0x40, 0xff, 00, 0xa0, 0xfb, 0xff, - 00, 0xe0, 0x3c, 0x5f, 0xfc, 0x4d, 0x48, 0xbf, 0xb4, 0x8f, - 0x8f, 0xd4, 0xe7, 0xfb, 0x6f, 0x3e, 0xc6, 0xda, 0x2f, 0xfe, - 0x26, 0xbd, 0xe9, 0xff, 00, 0x65, 0x6f, 0x9, 0xb6, 0x71, - 0x25, 0xd0, 0xff, 00, 0x81, 0xa, 0x85, 0xff, 00, 0x64, - 0xff, 00, 0xb, 0x30, 0xe2, 0xe6, 0xed, 0x4f, 0xd4, 0x51, - 0xfd, 0x9d, 0x9b, 0x2f, 0xb6, 0xff, 00, 0xf0, 0x26, 0x1f, - 0xd9, 0xd9, 0xb2, 0xda, 0xb7, 0xfe, 0x4c, 0xcf, 0x11, 0x5f, - 0xda, 0x63, 0xc7, 0xca, 0x79, 0xd5, 0xa3, 0x6f, 0x63, 0x6b, - 0x1f, 0xf8, 0x54, 0xcb, 0xfb, 0x50, 0x78, 0xf1, 0x40, 0x1f, - 0x6f, 0xb6, 0x3e, 0xe6, 0xd5, 0x2b, 0xd8, 0x5b, 0xf6, 0x49, - 0xf0, 0xd1, 0xe9, 0x7f, 0x76, 0xbe, 0xdc, 0x54, 0xf, 0xfb, - 0x22, 0xe8, 0x24, 0x7c, 0xba, 0xa5, 0xd0, 0x3f, 0xee, 0x8a, - 0x5f, 0x52, 0xce, 0x17, 0xda, 0x7f, 0xf8, 0x17, 0xfc, 0x10, - 0xfa, 0x8e, 0x70, 0xbf, 0xe5, 0xef, 0xfe, 0x4c, 0x79, 0x7a, - 0xfe, 0xd5, 0x9e, 0x38, 0x4, 0x66, 0x4d, 0x3d, 0xb1, 0xd8, - 0xda, 0xf5, 0xfd, 0x6a, 0x55, 0xfd, 0xac, 0x7c, 0x6a, 0xbd, - 0x53, 0x4c, 0x6f, 0xad, 0xb3, 0x7f, 0xf1, 0x55, 0xe8, 0xcf, - 0xfb, 0x21, 0x68, 0xe7, 0xee, 0xea, 0xd7, 0x3, 0xea, 0xa2, - 0xa0, 0x7f, 0xd9, 0x3, 0x4e, 0x39, 0xdb, 0xac, 0x4c, 0x3e, - 0xa8, 0x29, 0xfd, 0x5b, 0x39, 0x5f, 0x69, 0xff, 00, 0xe0, - 0x48, 0x3e, 0xa9, 0x9d, 0x2f, 0xf9, 0x79, 0xf8, 0x9c, 0x18, - 0xfd, 0xad, 0x3c, 0x67, 0xff, 00, 0x3c, 0x74, 0xbf, 0xfc, - 0x7, 0x6f, 0xfe, 0x2e, 0x9e, 0x3f, 0x6b, 0x6f, 0x18, 0x77, - 0xb6, 0xd2, 0xcf, 0xfd, 0xb0, 0x7f, 0xfe, 0x2e, 0xbb, 0x37, - 0xfd, 0x8f, 0xac, 0xff, 00, 0x87, 0x5a, 0x93, 0xf1, 0x41, - 0x50, 0xbf, 0xec, 0x7b, 0x11, 0xfb, 0xba, 0xe3, 0xf, 0xac, - 0x74, 0x7b, 0x1c, 0xe9, 0x75, 0x7f, 0x7a, 0x17, 0xd5, 0xf3, - 0xb5, 0xf6, 0xff, 00, 0x14, 0x72, 0xc9, 0xfb, 0x5d, 0x78, - 0xb1, 0x4f, 0xcd, 0x63, 0xa5, 0xb0, 0xf4, 0xf2, 0x9c, 0x7f, - 0xec, 0xd5, 0x62, 0x2f, 0xda, 0xff, 00, 0xc4, 0x8a, 0xb8, - 0x7d, 0x27, 0x4d, 0x73, 0xea, 0x3, 0x8f, 0xfd, 0x9a, 0xb6, - 0x9f, 0xf6, 0x3d, 0x71, 0x8d, 0x9a, 0xd8, 0x3f, 0x58, 0xea, - 0x17, 0xfd, 0x8f, 0xee, 0x81, 0x3b, 0x75, 0x98, 0xcf, 0xa6, - 0x52, 0xa7, 0x93, 0x3a, 0x5f, 0xcd, 0xf7, 0xa0, 0xf6, 0x79, - 0xe2, 0xfb, 0x5f, 0x91, 0x4d, 0x7f, 0x6c, 0x4d, 0x6c, 0x1, - 0xbb, 0x42, 0xb0, 0x27, 0xb9, 0xe, 0xe3, 0x35, 0x3a, 0x7e, - 0xd8, 0xda, 0x98, 0x3f, 0x37, 0x87, 0x6d, 0x8, 0xf6, 0xb8, - 0x61, 0xfd, 0x29, 0xad, 0xfb, 0x21, 0x6a, 0x40, 0x71, 0xaa, - 0xc2, 0x4f, 0xa6, 0xda, 0x85, 0xff, 00, 0x64, 0x4d, 0x60, - 0x1f, 0x97, 0x53, 0x80, 0xfe, 0x14, 0xef, 0x9d, 0xae, 0xff, - 00, 0x80, 0x7f, 0xc2, 0xe2, 0xeb, 0xf9, 0x17, 0x7, 0xed, - 0x8f, 0x7b, 0xdf, 0xc3, 0x56, 0xdf, 0x85, 0xd3, 0x7f, 0xf1, - 0x35, 0x22, 0xfe, 0xd8, 0xf7, 0x3c, 0x6e, 0xf0, 0xd4, 0x3e, - 0xf8, 0xba, 0x3f, 0xfc, 0x4d, 0x64, 0x37, 0xec, 0x8f, 0xaf, - 0x1, 0xf2, 0xdf, 0xdb, 0x93, 0xe8, 0x6a, 0x16, 0xfd, 0x92, - 0xfc, 0x48, 0xf, 0xcb, 0x75, 0x6c, 0x47, 0xae, 0xea, 0x4e, - 0xae, 0x74, 0xbf, 0x9b, 0xee, 0x42, 0xe7, 0xcf, 0x17, 0xfc, - 0x32, 0x3a, 0x45, 0xfd, 0xb1, 0xf9, 0xf9, 0xbc, 0x32, 0x31, - 0xed, 0x77, 0xff, 00, 0xd8, 0xd4, 0xf1, 0xfe, 0xd8, 0xf6, - 0xd8, 0x3b, 0xfc, 0x37, 0x26, 0x7b, 0x6d, 0xba, 0x1f, 0xfc, - 0x4d, 0x71, 0x6f, 0xfb, 0x29, 0x78, 0xa9, 0x46, 0x43, 0xdb, - 0x93, 0xe9, 0xbc, 0x54, 0x2f, 0xfb, 0x2c, 0x78, 0xb5, 0x71, - 0x81, 0x9, 0xfa, 0x38, 0xa5, 0xf5, 0x9c, 0xe5, 0x74, 0x97, - 0xfe, 0x2, 0xbf, 0xc8, 0x7e, 0xdf, 0x3b, 0x5f, 0x67, 0xf0, - 0x47, 0xa2, 0x45, 0xfb, 0x62, 0xe9, 0x45, 0x7, 0x99, 0xe1, - 0xeb, 0xb0, 0xfe, 0x8b, 0x3a, 0x11, 0xfc, 0xaa, 0xc2, 0x7e, - 0xd8, 0x3a, 0x1, 0xc6, 0xfd, 0xf, 0x50, 0x5f, 0x5c, 0x3a, - 0x1f, 0xeb, 0x5e, 0x58, 0xff, 00, 0xb2, 0xff, 00, 0x8c, - 0x57, 0x38, 0x82, 0x26, 0xc7, 0xfb, 0x62, 0xa2, 0x6f, 0xd9, - 0x97, 0xc6, 0x63, 0x18, 0xb4, 0x43, 0xf4, 0x71, 0x4f, 0xeb, - 0xb9, 0xc2, 0xfb, 0x2f, 0xff, 00, 0x1, 0xff, 00, 0x80, - 0x1f, 0x5a, 0xce, 0x97, 0xd8, 0xfc, 0x11, 0xeb, 0xa3, 0xf6, - 0xbe, 0xf0, 0xd7, 0x7d, 0x23, 0x53, 0x1f, 0xf7, 0xef, 0xff, - 00, 0x8a, 0xa7, 0xaf, 0xed, 0x79, 0xe1, 0x72, 0x39, 0xd2, - 0xf5, 0x31, 0xff, 00, 0x1, 0x4f, 0xfe, 0x2a, 0xbc, 0x61, - 0xff, 00, 0x66, 0xcf, 0x1a, 0xa6, 0x71, 0xa7, 0x86, 0xc7, - 0xa3, 0x8a, 0x85, 0xff, 00, 0x67, 0x5f, 0x1b, 0xa0, 0xcf, - 0xf6, 0x53, 0x1f, 0xa3, 0xa, 0x3f, 0xb4, 0x33, 0x65, 0xf6, - 0x5f, 0xfe, 0x3, 0xff, 00, 00, 0x5f, 0x5e, 0xce, 0x56, - 0xf4, 0xff, 00, 0x3, 0xdc, 0x47, 0xed, 0x71, 0xe1, 0x42, - 0x46, 0x74, 0xfd, 0x4c, 0xf, 0xf7, 0x13, 0xff, 00, 0x8a, - 0xa9, 0xe3, 0xfd, 0xac, 0xfc, 0x1e, 0xc4, 0xee, 0xb6, 0xd4, - 0x90, 0x7f, 0xd7, 0x15, 0x3f, 0xfb, 0x35, 0x78, 0x3, 0x7e, - 0xcf, 0xfe, 0x36, 0x52, 0x47, 0xf6, 0x3c, 0x9f, 0x81, 0x15, - 0xb, 0xfc, 0x9, 0xf1, 0xa2, 0xc, 0xff, 00, 0x63, 0x4c, - 0x7e, 0x98, 0xa5, 0xfd, 0xa7, 0x9a, 0x2d, 0xe2, 0xff, 00, - 0xf0, 0x16, 0x1f, 0xda, 0x39, 0xba, 0xde, 0x9f, 0xe0, 0x7d, - 0x19, 0x1f, 0xed, 0x59, 0xe0, 0x97, 0x5c, 0xb7, 0xf6, 0x8a, - 0x1f, 0x43, 0x6c, 0xf, 0xfe, 0xcd, 0x53, 0xaf, 0xed, 0x4b, - 0xe0, 0x43, 0x8c, 0xdc, 0x5e, 0x8f, 0xad, 0xab, 0x71, 0x5f, - 0x33, 0xb7, 0xc1, 0x2f, 0x19, 0x29, 0xff, 00, 0x90, 0x2d, - 0xc7, 0xe5, 0x50, 0x37, 0xc1, 0xcf, 0x18, 0x20, 0xc9, 0xd1, - 0x2e, 0x71, 0xec, 0xb5, 0x5f, 0xda, 0xf9, 0x92, 0xde, 0x1f, - 0xf9, 0x2b, 0xf, 0xed, 0x5c, 0xd5, 0x6f, 0x4b, 0xf0, 0x7f, - 0xe6, 0x7d, 0x48, 0x3f, 0x69, 0xff, 00, 0x1, 0x1f, 0xf9, - 0x7f, 0xba, 0x1f, 0xf6, 0xe8, 0xff, 00, 0xe1, 0x4e, 0x1f, - 0xb4, 0xe7, 0x80, 0x4f, 0xfc, 0xc4, 0x6e, 0x7, 0xd6, 0xd1, - 0xff, 00, 0xc2, 0xbe, 0x54, 0x7f, 0x84, 0xde, 0x2d, 0x8f, - 0xae, 0x87, 0x77, 0xf8, 0x25, 0x40, 0xdf, 0xc, 0xfc, 0x50, - 0xa0, 0x93, 0xa3, 0x5d, 0xf1, 0xff, 00, 0x4c, 0xcd, 0x27, - 0x9d, 0x66, 0xb, 0xec, 0x2f, 0xfc, 0x5, 0xff, 00, 0x98, - 0xbf, 0xb6, 0x33, 0x35, 0xbd, 0x2f, 0xc1, 0xff, 00, 0x99, - 0xf5, 0xa8, 0xfd, 0xa5, 0xfc, 0x2, 0x46, 0x7f, 0xb5, 0x26, - 0x1f, 0x5b, 0x57, 0xff, 00, 0xa, 0x9d, 0x3f, 0x68, 0xdf, - 00, 0xb9, 0xc7, 0xf6, 0xd1, 0x5f, 0x76, 0xb7, 0x93, 0xff, - 00, 0x89, 0xaf, 0x8f, 0x9b, 0xe1, 0xe7, 0x89, 0x13, 0x19, - 0xd2, 0x2e, 0xc6, 0x7f, 0xe9, 0x99, 0xa8, 0xdb, 0xc0, 0xbe, - 0x20, 0x4c, 0xe7, 0x4a, 0xbb, 0x18, 0xeb, 0xfb, 0xb3, 0x4b, - 0xfb, 0x73, 0x1c, 0xb7, 0x82, 0xfb, 0x9f, 0xf9, 0x87, 0xf6, - 0xd6, 0x60, 0xb7, 0xa5, 0xf8, 0x3f, 0xf3, 0x3e, 0xcc, 0x8f, - 0xf6, 0x84, 0xf0, 0xc, 0x99, 0xff, 00, 0x89, 0xfc, 0x6b, - 0x8f, 0xef, 0x43, 0x20, 0xff, 00, 0xd9, 0x6a, 0x75, 0xf8, - 0xf1, 0xe0, 0x26, 0x50, 0x47, 0x88, 0xed, 0xb9, 0xf5, 0x57, - 0x1f, 0xd2, 0xbe, 0x27, 0x6f, 0x7, 0x6b, 0x8b, 0xd7, 0x4c, - 0xba, 0x1f, 0xf6, 0xcc, 0xd4, 0x6d, 0xe1, 0x6d, 0x65, 0x9, - 0x7, 0x4e, 0xba, 0x18, 0xff, 00, 0xa6, 0x66, 0x9f, 0xf6, - 0xfe, 0x2d, 0x6f, 0x5, 0xf7, 0x3f, 0xf3, 0x1f, 0xf6, 0xee, - 0x35, 0x6f, 0x47, 0xf0, 0x67, 0xdc, 0x23, 0xe3, 0x87, 0x81, - 0xf, 0xfc, 0xcc, 0xd6, 0x5f, 0x99, 0xff, 00, 0xa, 0x92, - 0x3f, 0x8d, 0x3e, 0x7, 0x90, 0x90, 0xbe, 0x26, 0xb0, 0xe3, - 0xd6, 0x4c, 0x7f, 0x4a, 0xf8, 0x54, 0xe8, 0x1a, 0xa2, 0x8c, - 0x9b, 0x1b, 0x80, 0x3f, 0xeb, 0x99, 0xa6, 0x1d, 0x1b, 0x51, - 0x5e, 0xb6, 0x93, 0x8f, 0xf8, 0x1, 0xa7, 0xfe, 0xb0, 0xe2, - 0x7f, 0x92, 0x3f, 0x8f, 0xf9, 0x87, 0xf6, 0xfe, 0x2f, 0xad, - 0x1f, 0xcc, 0xfb, 0xc9, 0x7e, 0x2f, 0x78, 0x2d, 0x86, 0x47, - 0x89, 0x74, 0xec, 0x7f, 0xd7, 0x61, 0x53, 0x47, 0xf1, 0x4f, - 0xc2, 0x12, 0x90, 0x17, 0xc4, 0x7a, 0x71, 0x27, 0xa7, 0xfa, - 0x42, 0xd7, 0xc0, 0xa7, 0x4b, 0xbe, 0x1d, 0x6d, 0xa5, 0x1f, - 0xf0, 0x3, 0x4d, 0x3a, 0x7d, 0xe2, 0xf5, 0xb7, 0x97, 0xfe, - 0xf8, 0x34, 0x7f, 0xac, 0x55, 0xfa, 0xc2, 0x3f, 0x88, 0xff, - 00, 0xd6, 0x1c, 0x42, 0xde, 0x8f, 0xe6, 0x7e, 0x82, 0xc3, - 0xf1, 0xb, 0xc3, 0x17, 0xd, 0xb6, 0x3f, 0x10, 0x69, 0xac, - 0x7a, 0xe3, 0xed, 0x28, 0x3f, 0xad, 0x5a, 0x4f, 0x17, 0xe8, - 0x52, 0x2e, 0x53, 0x59, 0xb0, 0x61, 0xea, 0x2e, 0x50, 0xff, - 00, 0x5a, 0xfc, 0xee, 0x36, 0xb7, 0x23, 0xac, 0x2e, 0x3f, - 0xe0, 0x26, 0x9a, 0x61, 0x98, 0x7f, 0xcb, 0x36, 0xfc, 0xaa, - 0xd7, 0x12, 0x54, 0xeb, 0x4d, 0x7d, 0xe5, 0x2e, 0x23, 0xab, - 0xd6, 0x8f, 0xe3, 0xff, 00, 00, 0xfd, 0x1c, 0x1a, 0xee, - 0x9a, 0x71, 0x8d, 0x42, 0xd4, 0xe7, 0xfe, 0x9b, 0x2f, 0xf8, - 0xd3, 0x86, 0xb3, 0xa7, 0x9e, 0x97, 0xd6, 0xc7, 0xfe, 0xdb, - 0x2f, 0xf8, 0xd7, 0xe7, 0x6, 0xc9, 0x47, 0xf0, 0x37, 0xe5, - 0x47, 0xef, 0x57, 0xb3, 0xa, 0xd3, 0xfd, 0x64, 0x97, 0xfc, - 0xfa, 0x5f, 0x7f, 0xfc, 0x1, 0xff, 00, 0xac, 0x92, 0xff, - 00, 0x9f, 0x3f, 0x8f, 0xfc, 0x3, 0xf4, 0x84, 0x6a, 0xb6, - 0x47, 0xa5, 0xe4, 0x7, 0xe9, 0x2a, 0xff, 00, 0x8d, 0x38, - 0x6a, 0x16, 0xad, 0x8c, 0x5c, 0xc2, 0x73, 0xe9, 0x20, 0xaf, - 0xcd, 0xc1, 0x24, 0xc3, 0xa1, 0x61, 0xf9, 0xd3, 0x85, 0xcd, - 0xc2, 0xf4, 0x77, 0x18, 0xff, 00, 0x68, 0xd3, 0x5c, 0x48, - 0xff, 00, 0xe7, 0xd7, 0xe3, 0xff, 00, 00, 0x7f, 0xeb, - 0x2f, 0x7a, 0x5f, 0x8f, 0xfc, 0x3, 0xf4, 0x95, 0x67, 0x8d, - 0xce, 0x16, 0x44, 0x63, 0xe8, 0x18, 0x1a, 0x7e, 0x47, 0xad, - 0x7e, 0x6d, 0xae, 0xa7, 0x7a, 0x87, 0x2b, 0x73, 0x32, 0x9f, - 0x51, 0x21, 0x1f, 0xd6, 0xa4, 0x1a, 0xe6, 0xa2, 0xbd, 0x2f, - 0x6e, 0x47, 0xd2, 0x66, 0xff, 00, 0x1a, 0xa5, 0xc4, 0x9d, - 0xe9, 0x7e, 0x3f, 0xf0, 0xa, 0xff, 00, 0x59, 0x63, 0xff, - 00, 0x3e, 0xbf, 0x1f, 0xf8, 0x7, 0xe9, 0x6, 0x45, 0x19, - 0xaf, 0xce, 0x31, 0xe2, 0x4d, 0x58, 0xc, 0xd, 0x4a, 0xf0, - 0xf, 0x69, 0xdf, 0xfc, 0x69, 0xc3, 0xc5, 0x3a, 0xc8, 0x3c, - 0x6a, 0x97, 0xc0, 0xff, 00, 0xd7, 0xc3, 0xff, 00, 0x8d, - 0x5f, 0xfa, 0xc7, 0x1f, 0xf9, 0xf5, 0xf8, 0xff, 00, 0xc0, - 0x1f, 0xfa, 0xcb, 0x4f, 0xfe, 0x7d, 0x3f, 0xbf, 0xfe, 0x1, - 0xfa, 0x35, 0x9a, 0x5a, 0xfc, 0xe8, 0x5f, 0x18, 0xeb, 0xb1, - 0xe4, 0x2e, 0xb1, 0x7e, 0xb9, 0xeb, 0x8b, 0x97, 0xe7, 0xf5, - 0xa9, 0x53, 0xc7, 0x7e, 0x22, 0x89, 0x76, 0xae, 0xb9, 0xa9, - 0x28, 0xf4, 0x17, 0x6f, 0xfe, 0x34, 0x7f, 0xac, 0x71, 0xff, - 00, 0x9f, 0x5f, 0x8f, 0xfc, 0x2, 0x97, 0x12, 0xd2, 0xeb, - 0x4d, 0xfd, 0xe7, 0xe8, 0x95, 0x15, 0xf9, 0xe8, 0x9f, 0x12, - 0xbc, 0x55, 0x19, 0x5, 0x7c, 0x43, 0xaa, 0x2, 0x3a, 0x7f, - 0xa5, 0xbf, 0xf8, 0xd4, 0xf1, 0xfc, 0x57, 0xf1, 0x84, 0x59, - 0xdb, 0xe2, 0x5d, 0x50, 0x67, 0xfe, 0x9e, 0x9f, 0xfc, 0x6a, - 0xd7, 0x11, 0xd3, 0xeb, 0x4d, 0xfd, 0xe8, 0xb5, 0xc4, 0x94, - 0x3a, 0xc1, 0xfe, 0x7, 0xe8, 0x25, 0x15, 0xf0, 00, 0xf8, - 0xc3, 0xe3, 0x40, 0x38, 0xf1, 0x3e, 0xa9, 0xff, 00, 0x81, - 0xd, 0x4f, 0x1f, 0x19, 0xbc, 0x6c, 0xe, 0x7f, 0xe1, 0x26, - 0xd4, 0x7f, 0xef, 0xf1, 0xaa, 0xff, 00, 0x58, 0xa8, 0xff, - 00, 0xcf, 0xb7, 0xf8, 0xf, 0xfd, 0x64, 0xc3, 0xff, 00, - 0x23, 0xfc, 0xf, 0xbf, 0x28, 0xaf, 0x82, 0x57, 0xe3, 0x8f, - 0x8e, 0x54, 0xe4, 0x78, 0x92, 0xf8, 0xfd, 0x5c, 0x7f, 0x85, - 0x4a, 0x9f, 0x1e, 0x3c, 0x74, 0x99, 0xc7, 0x88, 0xae, 0xcf, - 0xd7, 0x7, 0xfa, 0x53, 0xff, 00, 0x58, 0xa8, 0x7f, 0xcf, - 0xb9, 0x7e, 0x1f, 0xe6, 0x5a, 0xe2, 0x3c, 0x2f, 0xf2, 0xbf, - 0xc3, 0xfc, 0xcf, 0xbc, 0x68, 0xaf, 0x86, 0x23, 0xfd, 0xa1, - 0xfc, 0x7b, 0x18, 0x51, 0xfd, 0xbd, 0x23, 0x6d, 0xfe, 0xf4, - 0x48, 0x73, 0xf5, 0xe2, 0xac, 0xc7, 0xfb, 0x4a, 0xf8, 0xf6, - 0x37, 0xdd, 0xfd, 0xae, 0x8d, 0xec, 0xd6, 0xd1, 0x91, 0xfc, - 0xaa, 0xd7, 0x10, 0xe1, 0xba, 0xc2, 0x5f, 0x87, 0xf9, 0x96, - 0xb8, 0x8b, 0x9, 0xd9, 0xfd, 0xcb, 0xfc, 0xcf, 0xb7, 0xa8, - 0xaf, 0x8a, 0x17, 0xf6, 0x9f, 0xf1, 0xe8, 0x1c, 0xea, 0x36, - 0xed, 0xf5, 0xb4, 0x4f, 0xf0, 0xa7, 0x8f, 0xda, 0x8b, 0xc7, - 0x7f, 0xf3, 0xfb, 0x69, 0xff, 00, 0x80, 0xab, 0x57, 0xfe, - 0xb0, 0x61, 0x7b, 0x4b, 0xee, 0x5f, 0xe6, 0x57, 0xfa, 0xc3, - 0x83, 0xf3, 0xfb, 0xbf, 0xe0, 0x9f, 0x6a, 0x51, 0x5f, 0x17, - 0xaf, 0xed, 0x4f, 0xe3, 0x90, 0x46, 0x6e, 0x2c, 0xdb, 0xd8, - 0xdb, 0xa, 0x9e, 0x2f, 0xda, 0xb7, 0xc6, 0xb1, 0xb1, 0x2c, - 0x74, 0xf9, 0x6, 0x3a, 0x35, 0xb9, 0xfe, 0x86, 0x9f, 0xfa, - 0xc1, 0x84, 0xed, 0x2f, 0xbb, 0xfe, 0x9, 0x4b, 0x88, 0x30, - 0x5d, 0xdf, 0xdc, 0x7d, 0x93, 0x45, 0x7c, 0x7e, 0xbf, 0xb5, - 0xbf, 0x8b, 0x82, 0x80, 0x6d, 0x34, 0xb6, 0x3e, 0xbe, 0x4b, - 0xff, 00, 0xf1, 0x55, 0x3a, 0x7e, 0xd7, 0x9e, 0x29, 0xc, - 0xb, 0x69, 0xba, 0x5b, 0xe, 0xe3, 0x63, 0x8f, 0xfd, 0x9a, - 0xad, 0x67, 0xd8, 0x3f, 0x3f, 0xb8, 0xb5, 0x9f, 0x60, 0x7f, - 0x99, 0xfd, 0xc7, 0xd7, 0x34, 0x57, 0xc9, 0xab, 0xfb, 0x60, - 0xf8, 0x88, 0x67, 0x76, 0x8d, 0xa6, 0x1f, 0xa1, 0x90, 0x7f, - 0xec, 0xd4, 0xf1, 0xfb, 0x61, 0xeb, 0xdd, 0xf4, 0x3d, 0x37, - 0xfe, 0xfa, 0x93, 0xfc, 0x6a, 0xbf, 0xb7, 0x70, 0x5f, 0xcc, - 0xfe, 0xe6, 0x57, 0xf6, 0xee, 0x7, 0xf9, 0x9f, 0xdc, 0xcf, - 0xab, 0xe8, 0xaf, 0x94, 0xd7, 0xf6, 0xc4, 0xd6, 0xf8, 0xce, - 0x85, 0xa7, 0x9f, 0xa4, 0x8f, 0xfe, 0x35, 0x22, 0xfe, 0xd8, - 0x9a, 0xb6, 0x79, 0xd0, 0x2c, 0x88, 0xf6, 0x99, 0xe9, 0xff, - 00, 0x6e, 0x60, 0xbf, 0x99, 0xfd, 0xcc, 0x7f, 0xdb, 0x98, - 0x1f, 0xe7, 0xfc, 0x19, 0xf5, 0x45, 0x15, 0xf2, 0xf4, 0x7f, - 0xb6, 0x35, 0xe8, 0x5f, 0x9f, 0xc3, 0x76, 0xe5, 0xbd, 0x56, - 0xe9, 0x80, 0xff, 00, 0xd0, 0x6a, 0x65, 0xfd, 0xb2, 0x26, - 0xe3, 0x3e, 0x18, 0x8f, 0xdf, 0x17, 0x87, 0xff, 00, 0x88, - 0xaa, 0x59, 0xde, 0x7, 0xf9, 0xff, 00, 0x7, 0xfe, 0x45, - 0x2c, 0xeb, 0x2, 0xff, 00, 0xe5, 0xe7, 0xe0, 0xff, 00, - 0xc8, 0xfa, 0x6e, 0x8a, 0xf9, 0xba, 0x3f, 0xdb, 0x22, 0xc, - 0xfc, 0xfe, 0x17, 0x90, 0xf, 0xf6, 0x6f, 0x47, 0xff, 00, - 0x11, 0x5b, 0xda, 0x47, 0xed, 0x6f, 0xe1, 0x6b, 0xb8, 0xd7, - 0xed, 0xf6, 0x37, 0xf6, 0x12, 0x13, 0x82, 0x15, 0x56, 0x55, - 0x3, 0xd7, 0x20, 0x83, 0xfa, 0x56, 0xb0, 0xcd, 0xf0, 0x33, - 0x76, 0x55, 0x3f, 0x35, 0xf9, 0xa3, 0x58, 0x66, 0xd8, 0x29, - 0xbb, 0x2a, 0x8b, 0xf1, 0x5f, 0x99, 0xee, 0x74, 0x57, 0x31, - 0xe1, 0xaf, 0x89, 0x9e, 0x17, 0xf1, 0x7b, 0x4, 0xd2, 0x75, - 0xbb, 0x4b, 0xb9, 0x8f, 0x3e, 0x4e, 0xfd, 0xb2, 0x7f, 0xdf, - 0x2d, 0x83, 0xfa, 0x57, 0x4f, 0x5e, 0xac, 0x2a, 0x42, 0xa2, - 0xe6, 0x83, 0xba, 0xf2, 0x3d, 0x48, 0x4e, 0x15, 0x17, 0x34, - 0x1d, 0xd7, 0x90, 0x51, 0x45, 0x15, 0x65, 0x85, 0x14, 0x51, - 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, - 0x14, 0x51, 0x40, 0x5, 0x70, 0x7f, 0x18, 0x7e, 0x28, 0xdb, - 0x7c, 0x2f, 0xf0, 0xc3, 0xdd, 0xfe, 0xee, 0x7d, 0x4e, 0x73, - 0xe5, 0xda, 0x5a, 0xbb, 0x63, 0x7b, 0x77, 0x62, 0x3a, 0xed, - 0x1d, 0x4f, 0xe0, 0x3b, 0xd7, 0x75, 0x24, 0x8b, 0x12, 0x33, - 0xbb, 0x5, 0x45, 0x4, 0x96, 0x3d, 00, 0xaf, 0x82, 0x7e, - 0x32, 0x7c, 0x40, 0x7f, 0x88, 0xde, 0x3a, 0xbd, 0xbf, 0x57, - 0x26, 0xc2, 0x13, 0xf6, 0x7b, 0x34, 0xcf, 0x2, 0x35, 0x3d, - 0x7f, 0xe0, 0x47, 0x27, 0xf1, 0xaf, 0x17, 0x35, 0xc6, 0xbc, - 0x1d, 0xf, 0x73, 0xe2, 0x96, 0x8b, 0xfc, 0xcf, 0xf, 0x37, - 0xc7, 0xfd, 0x46, 0x87, 0xb9, 0xf1, 0xcb, 0x45, 0xfe, 0x7f, - 0x23, 0xa3, 0xf8, 0x39, 0xa7, 0xea, 0x1f, 0x13, 0x7e, 0x2a, - 0xc5, 0xa9, 0x6a, 0x92, 0xbd, 0xe3, 0xac, 0x86, 0xe2, 0x79, - 0x24, 0x39, 0xfa, 0xf, 0x61, 0xe8, 0x2b, 0xed, 0x40, 0x2, - 0x80, 0x7, 00, 0x57, 0x83, 0xfe, 0xca, 0x7e, 0x10, 0xfe, - 0xcc, 0xf0, 0xd5, 0xce, 0xb1, 0x34, 0x78, 0x9a, 0xe9, 0xf6, - 0xa1, 0x23, 0xf8, 0x45, 0x7b, 0xcd, 0x63, 0x92, 0x50, 0x74, - 0xb0, 0xbe, 0xd2, 0x5b, 0xcd, 0xdf, 0xfc, 0x83, 0x27, 0xa0, - 0xe9, 0x61, 0x54, 0xa7, 0xf1, 0x4b, 0x56, 0x14, 0x51, 0x45, - 0x7d, 0x1, 0xee, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x84, - 0x64, 0x70, 0x71, 0xef, 0x40, 0x18, 0x1c, 0x92, 0x7e, 0xb4, - 00, 0xb4, 0x53, 0x2, 0xed, 0x39, 0xde, 0x48, 0xf4, 0x3d, - 0x29, 0xc0, 0x83, 0xd0, 0xe6, 0x80, 0x16, 0x8a, 0x28, 0xa0, - 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, - 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, - 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, - 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x93, 0x2, 0x96, - 0x8a, 00, 0x4c, 0xf, 0x4a, 0x4d, 0x8a, 0x7b, 0xf, 0xca, - 0x9d, 0x45, 00, 0x37, 0xca, 0x43, 0xfc, 0xb, 0xf9, 0x53, - 0x4c, 0x11, 0x1e, 0xb1, 0xa7, 0xfd, 0xf2, 0x2a, 0x4a, 0x29, - 0x58, 0x8, 0xbe, 0xcb, 0xf, 0xfc, 0xf1, 0x8f, 0xfe, 0xf9, - 0x14, 0xd3, 0x65, 0x6e, 0x7a, 0xc1, 0x17, 0xfd, 0xf0, 0x2a, - 0x7a, 0x28, 0xb2, 0x15, 0x91, 0x59, 0xb4, 0xeb, 0x46, 0xeb, - 0x6b, 0x9, 0xfa, 0xc6, 0x29, 0x87, 0x47, 0xb1, 0x6e, 0xb6, - 0x70, 0x1f, 0xac, 0x63, 0xfc, 0x2a, 0xe5, 0x14, 0xb9, 0x63, - 0xd8, 0x2c, 0xbb, 0x19, 0xe7, 0x40, 0xd3, 0x1b, 0xad, 0x85, - 0xb1, 0xff, 00, 0xb6, 0x4b, 0xfe, 0x14, 0xc6, 0xf0, 0xce, - 0x92, 0xdd, 0x74, 0xdb, 0x53, 0xff, 00, 0x6c, 0x85, 0x69, - 0xd1, 0x4b, 0xd9, 0xc3, 0xb2, 0x17, 0x2c, 0x7b, 0x19, 0x7, - 0xc2, 0x3a, 0x2b, 0x75, 0xd2, 0xed, 0x4f, 0xfd, 0xb2, 0x15, - 0x1b, 0x78, 0x2b, 0x41, 0x73, 0x93, 0xa4, 0x59, 0x93, 0xef, - 0xa, 0xd6, 0xdd, 0x15, 0x3e, 0xca, 0x9b, 0xfb, 0x2b, 0xee, - 0x17, 0x24, 0x3b, 0x1c, 0xf3, 0x7c, 0x3f, 0xf0, 0xe3, 0x75, - 0xd1, 0xed, 0x3f, 0xef, 0xd0, 0xa8, 0x9b, 0xe1, 0xaf, 0x86, - 0x1f, 0xae, 0x8b, 0x69, 0xff, 00, 0x7e, 0xc5, 0x74, 0xd4, - 0x54, 0xfd, 0x5e, 0x8b, 0xfb, 0xb, 0xee, 0x44, 0xfb, 0x2a, - 0x6f, 0xec, 0xaf, 0xb8, 0xe4, 0xdf, 0xe1, 0x5f, 0x85, 0x5f, - 0x39, 0xd1, 0x6d, 0xb9, 0xff, 00, 0x60, 0x54, 0x2d, 0xf0, - 0x87, 0xc2, 0x4f, 0xd7, 0x45, 0xb7, 0xff, 00, 0xbe, 0x6b, - 0xb2, 0xa2, 0xa3, 0xea, 0xb4, 0x1f, 0xd8, 0x5f, 0x72, 0x17, - 0xb0, 0xa5, 0xfc, 0xab, 0xee, 0x38, 0x76, 0xf8, 0x2f, 0xe0, - 0xf7, 0xeb, 0xa3, 0x41, 0xf9, 0x54, 0x2f, 0xf0, 0x2f, 0xc1, - 0x8f, 0xff, 00, 0x30, 0x78, 0xc7, 0xd2, 0xbb, 0xea, 0x2a, - 0x5e, 0xb, 0xc, 0xf7, 0xa6, 0xbe, 0xe4, 0x4f, 0xd5, 0xa8, - 0xbf, 0xb0, 0xbe, 0xe3, 0xce, 0x9f, 0xe0, 0x17, 0x83, 0x1f, - 0xfe, 0x61, 0x6a, 0x3e, 0x86, 0xa0, 0x7f, 0xd9, 0xe3, 0xc1, - 0x8f, 0xff, 00, 0x2e, 0x4, 0x7d, 0xd, 0x7a, 0x65, 0x15, - 0xf, 0x1, 0x84, 0x7f, 0xf2, 0xe9, 0x7d, 0xc8, 0x9f, 0xaa, - 0x50, 0x7f, 0x61, 0x7d, 0xc7, 0x96, 0xbf, 0xec, 0xe1, 0xe0, - 0xd7, 0xff, 00, 0x97, 0x37, 0x1f, 0xf0, 0x2a, 0x81, 0xff, - 00, 0x66, 0x7f, 0x7, 0x37, 0xfc, 0xb0, 0x94, 0x7d, 0x1a, - 0xbd, 0x66, 0x8a, 0x9f, 0xec, 0xdc, 0x1b, 0xff, 00, 0x97, - 0x4b, 0xee, 0x23, 0xea, 0x58, 0x67, 0xff, 00, 0x2e, 0xd7, - 0xdc, 0x79, 0x3, 0xfe, 0xcb, 0xfe, 0xf, 0x7f, 0xe0, 0xb8, - 0x5f, 0xa3, 0xd4, 0xd, 0xfb, 0x2c, 0x78, 0x4c, 0xf4, 0x7b, - 0x81, 0xf8, 0x8a, 0xf6, 0x6a, 0x2a, 0x1e, 0x57, 0x82, 0x7f, - 0xf2, 0xe9, 0x12, 0xf0, 0x18, 0x57, 0xff, 00, 0x2e, 0xd7, - 0xdc, 0x78, 0x9b, 0xfe, 0xca, 0x7e, 0x16, 0x6e, 0x97, 0x17, - 0x23, 0xf1, 0x15, 0xb, 0xfe, 0xc9, 0xbe, 0x1b, 0x6f, 0xbb, - 0x79, 0x72, 0x3f, 0x2a, 0xf7, 0x2a, 0x2a, 0x7f, 0xb2, 0x70, - 0x3f, 0xf3, 0xe9, 0x12, 0xf2, 0xec, 0x23, 0xff, 00, 0x97, - 0x68, 0xf0, 0x76, 0xfd, 0x92, 0x74, 0x3, 0xd3, 0x50, 0xb9, - 0x1f, 0x80, 0xa8, 0x5b, 0xf6, 0x45, 0xd1, 0xf, 0x4d, 0x52, - 0xe0, 0x7f, 0xc0, 0x45, 0x7b, 0xf5, 0x15, 0x3f, 0xd9, 0x18, - 0x1f, 0xf9, 0xf7, 0xf9, 0x90, 0xf2, 0xbc, 0x1b, 0xff, 00, - 0x97, 0x68, 0xf9, 0xe9, 0xff, 00, 0x64, 0x2d, 0x2c, 0xfd, - 0xdd, 0x62, 0x7f, 0xc5, 0x5, 0x40, 0xff, 00, 0xb2, 0x5, - 0x97, 0xf0, 0xeb, 0x12, 0x7e, 0x28, 0x2b, 0xe8, 0xca, 0x2a, - 0x3f, 0xb1, 0xb0, 0x3f, 0xf3, 0xef, 0xf1, 0x7f, 0xe6, 0x4b, - 0xca, 0x70, 0x4f, 0xfe, 0x5d, 0xa3, 0xe6, 0xd6, 0xfd, 0x90, - 0x21, 0xfe, 0x1d, 0x65, 0xbf, 0x14, 0xa8, 0x5f, 0xf6, 0x40, - 0x3f, 0xc3, 0xac, 0x7e, 0x69, 0x5f, 0x4c, 0x51, 0x53, 0xfd, - 0x89, 0x81, 0xfe, 0x4f, 0xc5, 0x91, 0xfd, 0x91, 0x82, 0xff, - 00, 0x9f, 0x67, 0xcc, 0xf, 0xfb, 0x20, 0x4f, 0xfc, 0x3a, - 0xba, 0xfe, 0x2b, 0x50, 0xbf, 0xec, 0x83, 0x7e, 0x3e, 0xee, - 0xaf, 0x11, 0xfa, 0xad, 0x7d, 0x4b, 0x45, 0x4f, 0xf6, 0x1e, - 0x7, 0xf9, 0x5f, 0xde, 0xc9, 0x79, 0x36, 0x5, 0xfd, 0x83, - 0xe5, 0x37, 0xfd, 0x91, 0x35, 0x51, 0xd3, 0x53, 0x84, 0xfe, - 0x15, 0x3, 0xfe, 0xc9, 0x1a, 0xd8, 0xe9, 0x7d, 0xb, 0x57, - 0xd6, 0x74, 0x54, 0xbc, 0x87, 0x5, 0xd9, 0xfd, 0xec, 0x87, - 0x92, 0x60, 0x7f, 0x93, 0xf1, 0x3e, 0x46, 0x7f, 0xd9, 0x33, - 0xc4, 0x23, 0xa5, 0xd4, 0x7, 0xf1, 0xa8, 0x1f, 0xf6, 0x51, - 0xf1, 0x28, 0xfb, 0xb2, 0xc2, 0x7f, 0x1a, 0xfb, 0x2, 0x8a, - 0x8f, 0xec, 0xc, 0x1f, 0x9f, 0xde, 0x4f, 0xf6, 0x16, 0xb, - 0xf9, 0x7f, 0x13, 0xe3, 0x87, 0xfd, 0x95, 0x7c, 0x54, 0x3e, - 0xe9, 0x85, 0xbf, 0xe0, 0x42, 0xa1, 0x7f, 0xd9, 0x6f, 0xc5, - 0xeb, 0xd2, 0x38, 0x8f, 0xd1, 0xc5, 0x7d, 0x9b, 0x45, 0x4f, - 0xfa, 0xbf, 0x84, 0xee, 0xfe, 0xff, 00, 0xf8, 0x4, 0xff, - 00, 0x60, 0xe0, 0xbb, 0x3f, 0xbc, 0xf8, 0xad, 0xff, 00, - 0x66, 0x3f, 0x18, 0xaf, 0x4b, 0x64, 0x3f, 0xf0, 0x31, 0x50, - 0xbf, 0xec, 0xd7, 0xe3, 0x35, 0xff, 00, 0x97, 0x20, 0x7f, - 0xe0, 0x42, 0xbe, 0xda, 0xa2, 0xa7, 0xfd, 0x5e, 0xc3, 0x7f, - 0x34, 0xbf, 0xf, 0xf2, 0x23, 0xfd, 0x5f, 0xc1, 0xf9, 0xfd, - 0xe7, 0xc3, 0xcd, 0xfb, 0x39, 0xf8, 0xd1, 0x7f, 0xe6, 0x1a, - 0x4f, 0xfc, 0x8, 0x54, 0x2f, 0xfb, 0x3d, 0xf8, 0xd1, 0x7f, - 0xe6, 0x14, 0xe7, 0xf1, 0x15, 0xf7, 0x3d, 0x15, 0x3f, 0xea, - 0xee, 0x1f, 0xf9, 0xe5, 0xf8, 0x7f, 0x91, 0x3f, 0xea, 0xf6, - 0x13, 0xcf, 0xef, 0x3e, 0x12, 0x3f, 0x1, 0xbc, 0x6d, 0xb, - 0x6, 0x5d, 0x22, 0x60, 0xc3, 0xa3, 0x29, 0xc1, 0x15, 0xde, - 0x78, 0x43, 0xc6, 0xbf, 0x14, 0xfe, 0x15, 0x6c, 0x5d, 0x57, - 0x4c, 0xbc, 0xd7, 0x34, 0x55, 0xfb, 0xf0, 0x5d, 0x12, 0xd2, - 0xa2, 0xff, 00, 0xb1, 0x27, 0x5f, 0xc0, 0xe4, 0x7d, 0x2b, - 0xeb, 0x1a, 0x82, 0xf2, 0xde, 0x2b, 0x9b, 0x69, 0x12, 0x64, - 0x59, 0x10, 0xa9, 0xc8, 0x61, 0x5a, 0xd2, 0xc9, 0x56, 0x19, - 0xf3, 0xd0, 0xab, 0x24, 0xfe, 0x45, 0x53, 0xc8, 0xe9, 0xd0, - 0x7c, 0xf8, 0x7a, 0x92, 0x8b, 0xfe, 0xb7, 0xee, 0x73, 0xbe, - 00, 0xf8, 0x91, 0xa2, 0x7c, 0x48, 0xd2, 0x8d, 0xe6, 0x91, - 0x73, 0xba, 0x58, 0xf0, 0x2e, 0x2d, 0x24, 0xf9, 0x66, 0xb7, - 0x63, 0xfc, 0x2e, 0xbd, 0xbe, 0xbd, 0xd, 0x75, 0x35, 0xf1, - 0x7, 0xc4, 0x6d, 0x72, 0xff, 00, 0xe1, 0x4f, 0xc4, 0x43, - 0xae, 0x78, 0x66, 0x63, 0x69, 0x74, 0x24, 0xfd, 0xfc, 0x20, - 0xfe, 0xee, 0xe1, 0x1, 0xc9, 0x8d, 0xc7, 0x70, 0x7f, 0x31, - 0xda, 0xbe, 0xae, 0xf8, 0x4f, 0xf1, 0x3b, 0x4d, 0xf8, 0xb7, - 0xe0, 0xcb, 0x5d, 0x7f, 0x4d, 0x47, 0x80, 0x3b, 0x34, 0x53, - 0xda, 0xca, 0x46, 0xf8, 0x25, 0x5e, 0x19, 0xf, 0xaf, 0xa8, - 0x3d, 0xc1, 0x6, 0xbd, 0xc, 0xe, 0x35, 0x62, 0x79, 0xa9, - 0xcb, 0xe2, 0x8e, 0x8c, 0xe8, 0xc0, 0x66, 0x4a, 0xbd, 0x59, - 0x61, 0x6a, 0xe9, 0x52, 0x3f, 0x73, 0x5d, 0xd7, 0xea, 0x8e, - 0xc6, 0x8a, 0x28, 0xaf, 0x54, 0xf7, 0x42, 0x8a, 0x28, 0xa0, - 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0xf, 0x37, - 0xfd, 0xa0, 0x7c, 0x6a, 0x3c, 0x17, 0xf0, 0xd7, 0x51, 0x74, - 0x72, 0x97, 0x97, 0xe3, 0xec, 0x56, 0xfb, 0x4e, 0x8, 0x67, - 0x7, 0x24, 0x7d, 0x17, 0x26, 0xbe, 0x25, 0xd0, 0xb4, 0xb9, - 0x35, 0x8d, 0x56, 0xd2, 0xca, 0x15, 0xdc, 0xf3, 0x48, 0x10, - 0x1, 0x5e, 0xd3, 0xfb, 0x5a, 0xf8, 0xcb, 0xfb, 0x5b, 0xc6, - 0x16, 0x7e, 0x1f, 0x85, 0xf3, 0x6, 0x97, 0x1f, 0x99, 0x28, - 0x7, 0x83, 0x33, 0x8c, 0xfe, 0x8b, 0x8f, 0xfb, 0xe8, 0xd6, - 0x77, 0xec, 0xc3, 0xe1, 0x1, 0xaf, 0x78, 0xd8, 0x5f, 0x4d, - 0x1e, 0xeb, 0x7b, 0x25, 0x2f, 0x93, 0xd3, 0x77, 0x6a, 0xfc, - 0xf7, 0x33, 0x93, 0xc7, 0x63, 0xd6, 0x1e, 0x3b, 0x2d, 0x3f, - 0xcc, 0xfc, 0xef, 0x1e, 0xde, 0x63, 0x9a, 0x2a, 0x11, 0xda, - 0x3a, 0x7f, 0x9f, 0xf5, 0xe4, 0x7d, 0x67, 0xe1, 0x3d, 0x12, - 0x3f, 0xe, 0xf8, 0x72, 0xc3, 0x4f, 0x8d, 0x42, 0x88, 0x22, - 0x55, 0x38, 0xf5, 0xc7, 0x35, 0xaf, 0x45, 0x15, 0xfa, 0x4, - 0x62, 0xa1, 0x15, 0x18, 0xec, 0x8f, 0xd0, 0xa2, 0x94, 0x52, - 0x48, 0x28, 0xa2, 0x8a, 0xa2, 0x82, 0x8a, 0x2b, 0xcd, 0xbf, - 0x68, 0xaf, 0x8d, 0xda, 0x47, 0xec, 0xf1, 0xf0, 0x83, 0xc4, - 0x1e, 0x39, 0xd6, 0xe, 0xe8, 0xf4, 0xf8, 0x71, 0x6d, 0x6e, - 0x3e, 0xf5, 0xc5, 0xc3, 0x7c, 0xb1, 0x44, 0x3e, 0xac, 0x46, - 0x7d, 0x6, 0x4f, 0x6a, 00, 0xe7, 0x3f, 0x69, 0x9f, 0xda, - 0xf3, 0xe1, 0xf7, 0xec, 0xaf, 0xa0, 0x47, 0x79, 0xe2, 0xcb, - 0xe7, 0x9f, 0x55, 0xba, 0x52, 0xd6, 0x3a, 0x25, 0x88, 0xf, - 0x77, 0x73, 0x8e, 0xe0, 0x67, 0xa, 0x99, 0xfe, 0x36, 0x20, - 0x7d, 0x4f, 0x15, 0xf9, 0x5d, 0xf1, 0x87, 0xfe, 0xa, 0xd5, - 0xf1, 0x9b, 0xe2, 0x5, 0xc5, 0xdd, 0xbf, 0x85, 0xe5, 0xb1, - 0xf0, 0x1e, 0x90, 0xec, 0x44, 0x4b, 0xa7, 0xc2, 0x26, 0xbb, - 0x9, 0x9e, 0x37, 0x4d, 0x26, 0x46, 0x71, 0xfd, 0xd5, 0x5a, - 0xf9, 0xb3, 0x5d, 0xd7, 0xfc, 0x7d, 0xfb, 0x57, 0x7c, 0x67, - 0x4b, 0x8b, 0xc9, 0x2e, 0x3c, 0x4b, 0xe3, 0x3f, 0x11, 0xdd, - 0xac, 0x10, 0x44, 0xf, 00, 0x93, 0xf2, 0xc6, 0x83, 0xa2, - 0x46, 0xa3, 0x3c, 0x74, 00, 0x13, 0xea, 0x6b, 0xf4, 0x67, - 0xc1, 0x1f, 0xf0, 0x48, 0xaf, 0x87, 0xff, 00, 0xf, 0x7e, - 0x1c, 0xdf, 0x78, 0x9b, 0xe2, 0xf7, 0x8b, 0x75, 0x1b, 0xeb, - 0x9d, 0x3e, 0xca, 0x4b, 0xeb, 0xe8, 0x74, 0x69, 0x56, 0xda, - 0xd6, 0xd9, 0x11, 0xb, 0xb0, 0xe, 0xca, 0x59, 0xf0, 0x1, - 0xe7, 0xe5, 0xcf, 0xa5, 0x32, 0x6e, 0xde, 0xc7, 0xe7, 0x17, - 0x88, 0x7f, 0x68, 0xbf, 0x8a, 0x7e, 0x2b, 0xb9, 0x92, 0x7d, - 0x5b, 0xe2, 0x37, 0x8a, 0x2f, 0x64, 0x90, 0xe5, 0x83, 0xea, - 0xf3, 0x85, 0x27, 0xfd, 0xd0, 0xc0, 0xf, 0xca, 0xbf, 0x5a, - 0xbf, 0xe0, 0x92, 0x3e, 0xb, 0xd6, 0xed, 0xfe, 0x3, 0xea, - 0x3e, 0x39, 0xf1, 0x6, 0xad, 0xa9, 0x6a, 0xb7, 0x9e, 0x23, - 0xbe, 0x74, 0xb3, 0x17, 0xf7, 0x52, 0x4c, 0x22, 0xb6, 0x80, - 0x94, 0x1b, 0x43, 0x13, 0x8d, 0xd2, 0x79, 0x84, 0x91, 0xd4, - 0x5, 0xaf, 0xc7, 0x4d, 0x1b, 0xc3, 0x7f, 0xf0, 0x9e, 0xfc, - 0x44, 0xb2, 0xd0, 0x7c, 0x39, 0x6f, 0x24, 0x4b, 0xac, 0x6a, - 0x89, 0x67, 0xa7, 0xc1, 0x2b, 0x6f, 0x64, 0x12, 0xca, 0x16, - 0x30, 0xcd, 0x8e, 0x70, 0x18, 0x64, 0xfb, 0x13, 0x5f, 0xd1, - 0xcf, 0x86, 0xb4, 0x4d, 0x3, 0xf6, 0x7b, 0xf8, 0x2d, 0x65, - 0xa6, 0xc6, 0x52, 0xcf, 0xc3, 0xfe, 0x13, 0xd1, 0xc0, 0x67, - 0x3c, 0x1, 0x1c, 0x31, 0xe5, 0xdc, 0xfb, 0x9c, 0x12, 0x7d, - 0xcd, 0xc, 0x48, 0xf8, 0xf, 0xc4, 0x7f, 0xf0, 0x59, 0xa9, - 0xfc, 0x25, 0xe2, 0xcd, 0x6b, 0x42, 0xd4, 0x3e, 0x14, 0xab, - 0xcd, 0xa6, 0x5e, 0xcf, 0x65, 0x24, 0x90, 0x6b, 0x7c, 0x33, - 0x47, 0x23, 0x21, 0x20, 0x18, 0x7d, 0x56, 0xbe, 0xec, 0xfd, - 0x9c, 0x3e, 0x34, 0x47, 0xfb, 0x42, 0x7c, 0x1b, 0xf0, 0xff, - 00, 0x8f, 0x62, 0xd2, 0xdf, 0x46, 0x4d, 0x59, 0x24, 0x61, - 0x64, 0xf2, 0xf9, 0xa6, 0x3d, 0xb2, 0x32, 0x7d, 0xec, 0xc, - 0xe7, 0x6e, 0x7a, 0x77, 0xaf, 0xe7, 0x2f, 0xc6, 0x7a, 0xf9, - 0xf1, 0x5f, 0x8b, 0xf5, 0xdd, 0x6d, 0x86, 0xd6, 0xd4, 0xaf, - 0xe7, 0xbd, 0x23, 0xd0, 0xc9, 0x23, 0x3f, 0xfe, 0xcd, 0x5f, - 0xd1, 0x27, 0xec, 0x91, 0xf0, 0xfe, 0x4f, 0x85, 0xff, 00, - 0xb3, 0x57, 0xc3, 0x9f, 0xd, 0xce, 0x9e, 0x5d, 0xdd, 0xae, - 0x8d, 0x3, 0xdc, 0xaf, 0xa4, 0xd2, 0x2f, 0x99, 0x27, 0xfe, - 0x3c, 0xe6, 0x81, 0xa7, 0x73, 0xd6, 0xc9, 0xc0, 0xc9, 0xe0, - 0x57, 0xce, 0xda, 0xff, 00, 0xed, 0xf, 0xae, 0x43, 0xae, - 0x5f, 0x47, 0xa6, 0xc7, 0x64, 0xda, 0x7a, 0x4a, 0xcb, 0x9, - 0x96, 0x26, 0x2c, 0x54, 0x1c, 0x64, 0x9d, 0xc3, 0xaf, 0x5f, - 0xc6, 0xbd, 0x7b, 0xe2, 0x97, 0x89, 0x47, 0x85, 0xbc, 0x11, - 0xa9, 0x5d, 0xab, 0x6d, 0x9d, 0xd3, 0xc8, 0x87, 0xfd, 0xf7, - 0xe0, 0x7e, 0x5c, 0x9f, 0xc2, 0xbe, 0x40, 0xaf, 0x86, 0xe2, - 0x2c, 0xca, 0xae, 0x1a, 0x70, 0xa3, 0x42, 0x5c, 0xaf, 0x77, - 0x6f, 0xc3, 0xf5, 0x3c, 0x9c, 0x75, 0x79, 0x53, 0x6a, 0x10, - 0x76, 0x3d, 0x5d, 0x3f, 0x69, 0xf, 0x12, 0xaf, 0xde, 0xb3, - 0xd3, 0x9b, 0xfe, 0xd9, 0xb8, 0xff, 00, 0xd9, 0xaa, 0x74, - 0xfd, 0xa5, 0x75, 0xe1, 0xf7, 0xb4, 0xdd, 0x3d, 0xbe, 0x81, - 0xc7, 0xfe, 0xcd, 0x5e, 0x43, 0x45, 0x7c, 0x82, 0xce, 0x73, - 0x5, 0xff, 00, 0x2f, 0x5f, 0xe0, 0x79, 0x9f, 0x5a, 0xad, - 0xfc, 0xc7, 0xb3, 0x47, 0xfb, 0x4c, 0xea, 0x83, 0xef, 0xe8, - 0xb6, 0x8d, 0xfe, 0xec, 0xac, 0x3f, 0xc6, 0xa7, 0x4f, 0xda, - 0x72, 0xef, 0xf8, 0xbc, 0x3f, 0x9, 0xfa, 0x5d, 0x11, 0xff, - 00, 0xb2, 0xd7, 0x89, 0x51, 0x5a, 0x2c, 0xf3, 0x31, 0x5f, - 0xf2, 0xf7, 0xf0, 0x5f, 0xe4, 0x57, 0xd7, 0x2b, 0xff, 00, - 0x31, 0xee, 0xd1, 0x7e, 0xd3, 0x83, 0xfe, 0x5a, 0x78, 0x7f, - 0x1f, 0xee, 0xdd, 0x7f, 0xf6, 0x35, 0x66, 0x3f, 0xda, 0x6e, - 0xc8, 0xfd, 0xfd, 0xa, 0x71, 0xfe, 0xec, 0xea, 0x7f, 0xa5, - 0x78, 0x5, 0x15, 0xaa, 0xe2, 0xc, 0xc5, 0x7f, 0xcb, 0xcf, - 0xc1, 0x7f, 0x91, 0x5f, 0x5d, 0xaf, 0xfc, 0xdf, 0x91, 0xf4, - 0x3c, 0x7f, 0xb4, 0xc6, 0x90, 0x7e, 0xfe, 0x91, 0x7a, 0xbf, - 0xee, 0xb2, 0x1f, 0xeb, 0x5a, 0x56, 0x7f, 0xb4, 0x5f, 0x85, - 0xee, 0x8, 0x13, 0x45, 0x7f, 0x6b, 0xee, 0xf0, 0x86, 0x1f, - 0xf8, 0xeb, 0x1a, 0xf9, 0x9a, 0x8a, 0xd6, 0x3c, 0x47, 0x8f, - 0x8e, 0xed, 0x3f, 0x97, 0xf9, 0x14, 0xb1, 0xf5, 0x97, 0x53, - 0xec, 0x4d, 0x7, 0xe2, 0x67, 0x86, 0x7c, 0x48, 0xeb, 0x1d, - 0x8e, 0xaf, 0x3, 0x4c, 0xdd, 0x22, 0x97, 0x31, 0xb9, 0xfa, - 0x6, 0xc6, 0x7f, 0xa, 0xe9, 0xeb, 0xe1, 0x4a, 0xed, 0x7c, - 0x17, 0xf1, 0x6b, 0x5f, 0xf0, 0x6c, 0xa8, 0x89, 0x72, 0xd7, - 0xd6, 00, 0xfc, 0xd6, 0x97, 0x2c, 0x59, 0x71, 0xfe, 0xc9, - 0xea, 0xbf, 0x87, 0x1e, 0xd5, 0xed, 0xe1, 0x38, 0xa1, 0x36, - 0xa3, 0x8a, 0x85, 0xbc, 0xd7, 0xf9, 0x7f, 0xc1, 0x3a, 0xe9, - 0x66, 0x37, 0x76, 0xa8, 0xbe, 0xe3, 0xeb, 0x6a, 0x2b, 0x13, - 0xc2, 0x1e, 0x2f, 0xd3, 0xfc, 0x6b, 0xa3, 0xa6, 0xa1, 0xa7, - 0xc8, 0x4a, 0x13, 0xb6, 0x48, 0xdb, 0x86, 0x8d, 0xfb, 0xa9, - 0x15, 0xb7, 0x5f, 0x75, 0x4e, 0xa4, 0x6a, 0xc5, 0x4e, 0xe, - 0xe9, 0x9e, 0xc4, 0x64, 0xa4, 0xae, 0xb6, 0xa, 0xc0, 0xf1, - 0x17, 0x8e, 0xb4, 0x2f, 0x9, 0xdc, 0x43, 0x6, 0xab, 0xa8, - 0x25, 0xa4, 0xb3, 0x29, 0x74, 0x56, 0x56, 0x39, 00, 0xe3, - 0x3c, 0x3, 0x5b, 0xf5, 0xf2, 0x87, 0xc6, 0xed, 0x74, 0x6b, - 0x9f, 0x10, 0xaf, 0xc2, 0x36, 0xe8, 0xac, 0xc2, 0xda, 0xa7, - 0xfc, 0x7, 0xef, 0x7f, 0xe3, 0xc5, 0xab, 0xc8, 0xcd, 0xf3, - 0x7, 0x97, 0x61, 0xd5, 0x48, 0x24, 0xe4, 0xdd, 0x95, 0xce, - 0x5c, 0x55, 0x77, 0x42, 0x1c, 0xcb, 0x73, 0xe8, 0x4, 0xf8, - 0xb9, 0xe0, 0xf7, 0xe9, 0xaf, 0x5b, 0xf, 0xf7, 0xb7, 0xf, - 0xe6, 0x2a, 0x74, 0xf8, 0xa1, 0xe1, 0x37, 0xe9, 0xe2, 0xb, - 0x1f, 0xc6, 0x50, 0x2b, 0xe3, 0xca, 0x2b, 0xe3, 0x97, 0x14, - 0xe2, 0x7a, 0xd3, 0x8f, 0xe3, 0xfe, 0x67, 0x97, 0xfd, 0xa3, - 0x53, 0xb2, 0x3e, 0xca, 0x8f, 0xe2, 0x17, 0x86, 0x25, 0xfb, - 0xba, 0xfe, 0x9c, 0x7f, 0xed, 0xe5, 0x3f, 0xc6, 0xad, 0x47, - 0xe3, 0xd, 0xa, 0x6f, 0xb9, 0xac, 0xd8, 0x37, 0xd2, 0xe5, - 0x3f, 0xc6, 0xbe, 0x2b, 0xa2, 0xb5, 0x5c, 0x55, 0x5b, 0xad, - 0x25, 0xf7, 0xb2, 0xbf, 0xb4, 0x67, 0xd6, 0x27, 0xdb, 0x89, - 0xaf, 0x69, 0x92, 0x7d, 0xdd, 0x46, 0xd1, 0xbe, 0x93, 0xaf, - 0xf8, 0xd4, 0xc9, 0xa9, 0x5a, 0x49, 0xf7, 0x2e, 0xa0, 0x6f, - 0xa4, 0x80, 0xff, 00, 0x5a, 0xf8, 0x76, 0x8c, 0x91, 0x5a, - 0x2e, 0x2b, 0x97, 0x5a, 0x3f, 0x8f, 0xfc, 0x2, 0xbf, 0xb4, - 0x9f, 0xf2, 0xfe, 0x27, 0xdd, 0xb, 0x2a, 0x37, 0xdd, 0x75, - 0x3f, 0x43, 0x4e, 0xdc, 0x3d, 0x45, 0x7c, 0x30, 0x25, 0x75, - 0xe8, 0xec, 0x3e, 0x86, 0xa4, 0x4b, 0xeb, 0x98, 0xfe, 0xed, - 0xc4, 0xab, 0xf4, 0x72, 0x2b, 0x45, 0xc5, 0x6b, 0xad, 0x1f, - 0xfc, 0x9b, 0xfe, 0x1, 0x5f, 0xda, 0x5f, 0xdc, 0xfc, 0x7f, - 0xe0, 0x1f, 0x72, 0x51, 0x5f, 0x10, 0xa6, 0xb9, 0xa9, 0x47, - 0xf7, 0x75, 0xb, 0xa5, 0xfa, 0x4c, 0xdf, 0xe3, 0x52, 0xaf, - 0x89, 0xb5, 0x84, 0xfb, 0xba, 0xad, 0xf2, 0xfd, 0x2e, 0x5c, - 0x7f, 0x5a, 0xd1, 0x71, 0x5d, 0x3e, 0xb4, 0x5f, 0xdf, 0xff, - 00, 00, 0x7f, 0xda, 0x4b, 0xf9, 0x7f, 0x13, 0xed, 0x9a, - 0x2b, 0xe2, 0xc4, 0xf1, 0x96, 0xbf, 0x1f, 0xdd, 0xd7, 0x35, - 0x25, 0xfa, 0x5d, 0xc9, 0xfe, 0x35, 0xda, 0x7c, 0x25, 0xf1, - 0x7, 0x88, 0x75, 0xff, 00, 0x1e, 0xe9, 0x76, 0x93, 0x6b, - 0x3a, 0x84, 0xf6, 0xc1, 0xda, 0x59, 0x52, 0x4b, 0x97, 0x65, - 0x2a, 0xaa, 0x4e, 0x8, 0x27, 0xa6, 0x70, 0x3f, 0x1a, 0xe9, - 0xa1, 0xc4, 0xb4, 0xab, 0xd5, 0x8d, 0x25, 0x49, 0xde, 0x4d, - 0x2d, 0xd7, 0x53, 0x48, 0x63, 0xe3, 0x39, 0x28, 0xa8, 0xee, - 0x7d, 0x3f, 0x45, 0x14, 0x57, 0xd9, 0x1e, 0xa8, 0x51, 0x45, - 0x14, 00, 0x51, 0x5c, 0xf7, 0x88, 0xfc, 0x7f, 0xa0, 0x78, - 0x4f, 0x8d, 0x4f, 0x52, 0x86, 0x9, 0x7f, 0xe7, 0x8a, 0xe5, - 0xe4, 0xff, 00, 0xbe, 0x57, 0x26, 0xbc, 0xef, 0x5b, 0xfd, - 0xa5, 0x74, 0xcb, 0x70, 0xcb, 0xa5, 0xe9, 0x97, 0x17, 0x6f, - 0xd9, 0xee, 0x18, 0x44, 0xbf, 0x90, 0xc9, 0xfe, 0x55, 0xe6, - 0xe2, 0x33, 0x2c, 0x26, 0x17, 0x4a, 0xb5, 0x12, 0x7d, 0xb7, - 0x7f, 0x72, 0x39, 0xe7, 0x5e, 0x95, 0x3f, 0x8a, 0x47, 0xb2, - 0xd1, 0x5f, 0x34, 0x5f, 0x7e, 0xd1, 0x9e, 0x26, 0xb8, 0x63, - 0xf6, 0x78, 0x2c, 0x2d, 0x13, 0xb6, 0x22, 0x67, 0x23, 0xf1, - 0x2d, 0x8f, 0xd2, 0xb1, 0xae, 0x3e, 0x37, 0xf8, 0xce, 0x72, - 0x7f, 0xe2, 0x6d, 0xe5, 0x3, 0xda, 0x38, 0x23, 0x18, 0xff, - 00, 0xc7, 0x6b, 0xc5, 0x9f, 0x13, 0x60, 0x63, 0xf0, 0xa9, - 0x3f, 0x97, 0xf9, 0xb4, 0x72, 0x3c, 0xc2, 0x8a, 0xda, 0xec, - 0xfa, 0xbc, 0x8c, 0xd2, 0x79, 0x63, 0xdf, 0xf3, 0x35, 0xf2, - 0x2b, 0x7c, 0x5d, 0xf1, 0x83, 0x1c, 0x9d, 0x76, 0xe4, 0x7d, - 0x2, 0x8f, 0xe9, 0x52, 0x45, 0xf1, 0x8b, 0xc6, 0x31, 0x1c, - 0x8d, 0x72, 0x63, 0xfe, 0xf4, 0x68, 0xdf, 0xcd, 0x6b, 0xf, - 0xf5, 0xa3, 0x9, 0xfc, 0x92, 0xfc, 0x3f, 0xcc, 0x9f, 0xed, - 0x1a, 0x7d, 0x99, 0xf5, 0xc5, 0x15, 0xf2, 0xb5, 0xb7, 0xc7, - 0x9f, 0x18, 0xdb, 0xfd, 0xeb, 0xf8, 0x6e, 0x3f, 0xeb, 0xad, - 0xba, 0x7f, 0x40, 0x2b, 0x7f, 0x4d, 0xfd, 0xa5, 0x75, 0xa8, - 0x58, 0xb, 0xed, 0x32, 0xce, 0xe9, 0x7b, 0xf9, 0x25, 0xa2, - 0x3f, 0xa9, 0x61, 0x5d, 0x54, 0xf8, 0x93, 0x1, 0x3f, 0x8a, - 0xeb, 0xd5, 0x7f, 0x95, 0xcd, 0x16, 0x3e, 0x8b, 0xde, 0xe8, - 0xfa, 0x2a, 0x8a, 0xf2, 0xdd, 0x17, 0xf6, 0x87, 0xf0, 0xd6, - 0xa3, 0xb5, 0x6f, 0x52, 0xeb, 0x4c, 0x90, 0xf5, 0x32, 0x26, - 0xf4, 0xfc, 0xd7, 0x27, 0xf4, 0xaf, 0x45, 0xd2, 0xb5, 0x9b, - 0x1d, 0x72, 0xd5, 0x6e, 0x74, 0xfb, 0xb8, 0x6f, 0x20, 0x6e, - 0x8f, 0xb, 0x86, 0x1f, 0x8f, 0xa5, 0x7b, 0x98, 0x7c, 0x6e, - 0x1f, 0x15, 0xfc, 0x19, 0xa9, 0x7e, 0x7f, 0x76, 0xe7, 0x64, - 0x2a, 0xd3, 0xa9, 0xf0, 0x3b, 0x97, 0x68, 0xa2, 0x8a, 0xed, - 0x35, 0xa, 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa2, 0x80, 0xa, - 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa6, 0xbc, 0x8b, 0x12, 0x96, - 0x76, 0x8, 0xa3, 0xa9, 0x63, 0x81, 0x40, 0xe, 0xa2, 0xb0, - 0xb5, 0xf, 0x1d, 0xf8, 0x77, 0x4b, 0x24, 0x5d, 0x6b, 0x56, - 0x30, 0xb0, 0xea, 0xa6, 0x75, 0x27, 0xf2, 0x7, 0x35, 0x8b, - 0x71, 0xf1, 0xa7, 0xc1, 0xb6, 0xe7, 0x7, 0x5a, 0x47, 0xff, - 00, 0xae, 0x70, 0xc8, 0xff, 00, 0xc9, 0x6b, 0x92, 0x78, - 0xbc, 0x35, 0x3d, 0x27, 0x52, 0x2b, 0xd5, 0xa3, 0x27, 0x56, - 0x9c, 0x77, 0x92, 0xfb, 0xce, 0xde, 0x98, 0x5d, 0xb3, 0xf7, - 0xf, 0xe6, 0x2b, 0x82, 0x3f, 0x1d, 0xfc, 0x18, 0xf, 0xfc, - 0x84, 0xe4, 0x3f, 0xf6, 0xed, 0x2f, 0xff, 00, 0x13, 0x4a, - 0xbf, 0x1d, 0x7c, 0x18, 0xc7, 0xfe, 0x42, 0x8e, 0x3e, 0xb6, - 0xb2, 0xff, 00, 0xf1, 0x35, 0x8f, 0xf6, 0x8e, 0xb, 0xfe, - 0x7f, 0x47, 0xff, 00, 0x2, 0x44, 0xfb, 0x7a, 0x5f, 0xce, - 0xbe, 0xf3, 0xbe, 0xc9, 0xc7, 0x4a, 0x4d, 0xc7, 0xfb, 0xa7, - 0xf4, 0xae, 0x3e, 0xdf, 0xe3, 0xf, 0x83, 0xae, 0x7e, 0xee, - 0xb9, 0x2, 0x7f, 0xd7, 0x45, 0x74, 0xfe, 0x60, 0x56, 0xcd, - 0x8f, 0x8c, 0xb4, 0x1d, 0x4f, 0x1f, 0x65, 0xd6, 0x2c, 0x67, - 0x27, 0xa0, 0x59, 0xd7, 0x3f, 0x96, 0x6b, 0x78, 0x62, 0xb0, - 0xf5, 0x3e, 0xa, 0x89, 0xfa, 0x34, 0x5a, 0xa9, 0x9, 0x6d, - 0x24, 0x6c, 0xd1, 0x4d, 0x47, 0x59, 0x17, 0x2a, 0xc1, 0x87, - 0xa8, 0x39, 0xa7, 0x57, 0x51, 0xa0, 0x51, 0x45, 0x30, 0x31, - 0xf3, 0x4a, 0x9e, 0x98, 0xc8, 0x34, 00, 0xfa, 0x28, 0xa2, - 0x80, 0xa, 0x82, 0xf5, 0xfc, 0xbb, 0x39, 0xdb, 0xd1, 0x9, - 0xfd, 0x2a, 0x7a, 0xa3, 0xad, 0xbf, 0x97, 0xa4, 0x5d, 0xb1, - 0x38, 0xc4, 0x66, 0xa6, 0x4e, 0xc9, 0xb1, 0x3d, 0x13, 0x3e, - 0x1c, 0xf8, 0xdf, 0x37, 0xda, 0x3c, 0x49, 0x28, 0xeb, 0x82, - 0x6b, 0x2f, 0xf6, 0x63, 0xf8, 0x99, 0x27, 0xc3, 0x6f, 0x8d, - 0x16, 0xba, 0x44, 0xf2, 0x95, 0xd1, 0x3c, 0x4a, 0x45, 0xa4, - 0x88, 0x71, 0x84, 0xb8, 0x19, 0xf2, 0x9f, 0xdb, 0xba, 0x9f, - 0xf7, 0x85, 0x49, 0xf1, 0x56, 0x7f, 0x3f, 0xc4, 0xd7, 0x3d, - 0xf0, 0x4d, 0x78, 0x7, 0xc5, 0x7b, 0x89, 0x2c, 0xb4, 0xe1, - 0x75, 0x6e, 0xed, 0x15, 0xcd, 0xbb, 0x9, 0xa2, 0x91, 0x4e, - 0xa, 0xba, 0x9c, 0xa9, 0x1f, 0x88, 0xaf, 0xce, 0x32, 0xfa, - 0xce, 0x38, 0xc9, 0x49, 0x77, 0x67, 0xe3, 0x98, 0xbc, 0x4c, - 0xb0, 0xd9, 0xac, 0x31, 0x11, 0xe9, 0x24, 0xbe, 0x4f, 0x46, - 0x7e, 0xc0, 0x51, 0x5c, 0x1f, 0x80, 0xfe, 0x28, 0xe9, 0x5e, - 0x21, 0xf0, 0x37, 0x87, 0x75, 0x59, 0x2e, 0xcb, 0x49, 0x7d, - 0xa7, 0x5b, 0x5c, 0xb1, 0x2a, 0x72, 0x4b, 0xc4, 0xac, 0x7f, - 0x9d, 0x15, 0xfa, 0x45, 0xcf, 0xd8, 0xee, 0x99, 0xde, 0x51, - 0x45, 0x14, 0xc6, 0x14, 0x51, 0x45, 00, 0x15, 0x53, 0x56, - 0xd4, 0xed, 0xf4, 0x5d, 0x2e, 0xee, 0xfe, 0xea, 0x41, 0x15, - 0xb5, 0xb4, 0x4d, 0x2c, 0x8e, 0x7b, 0x2a, 0x8c, 0x9a, 0xb7, - 0x5e, 0x2b, 0xfb, 0x55, 0x78, 0xc4, 0x68, 0x1f, 0xf, 0x86, - 0x93, 0x13, 0xe2, 0xeb, 0x58, 0x93, 0xca, 0xc0, 0xff, 00, - 0x9e, 0x4b, 0x86, 0x73, 0xff, 00, 0xa0, 0x8f, 0xc6, 0xb9, - 0xb1, 0x35, 0x96, 0x1e, 0x8c, 0xaa, 0xbe, 0x88, 0xe4, 0xc5, - 0xd7, 0x58, 0x5a, 0x13, 0xac, 0xfa, 0x2f, 0xf8, 0x63, 0xe4, - 0xcf, 0x12, 0xeb, 0x93, 0xf8, 0xa7, 0xc4, 0x7a, 0x8e, 0xad, - 0x71, 0x8f, 0x3e, 0xfa, 0xe1, 0xe6, 0x60, 0x3a, 0xc, 0x9e, - 00, 0xf6, 0x3, 0x2, 0xbe, 0xc2, 0xfd, 0x9b, 0x3c, 0x23, - 0xff, 00, 0x8, 0xe7, 0x80, 0xa3, 0xb9, 0x91, 0x36, 0xdc, - 0x5e, 0xb1, 0x90, 0xe4, 0x73, 0xb7, 0xb5, 0x7c, 0x91, 0xe0, - 0x6f, 0xf, 0xc9, 0xe2, 0x6f, 0x14, 0x69, 0xda, 0x7c, 0x6a, - 0x5b, 0xcd, 0x95, 0x41, 0xc7, 0xa6, 0x79, 0xaf, 0xd0, 0x8d, - 0x32, 0xc2, 0x2d, 0x2f, 0x4f, 0xb7, 0xb4, 0x85, 0x42, 0x47, - 0xa, 0x4, 0x50, 0x3d, 0x85, 0x7c, 0x6e, 0x43, 0x45, 0xd6, - 0xaf, 0x3c, 0x4c, 0xfa, 0x7e, 0x6c, 0xf8, 0xfe, 0x1d, 0xa0, - 0xea, 0x4e, 0x78, 0xa9, 0xef, 0xfa, 0xbd, 0xcb, 0x54, 0x51, - 0x45, 0x7d, 0xd9, 0xf7, 0x61, 0x45, 0x14, 0x50, 0x1, 0x5f, - 0x98, 0xbf, 0xf0, 0x5b, 0x2f, 0x1d, 0xdc, 0x5a, 0xf8, 0x77, - 0xe1, 0xaf, 0x83, 0x62, 0x25, 0x6d, 0xaf, 0x6e, 0x6e, 0xb5, - 0x59, 0xf0, 0x48, 0xc9, 0x89, 0x52, 0x34, 0x7, 0xd4, 0x7e, - 0xf9, 0xcf, 0xe1, 0x5f, 0xa7, 0x55, 0xf9, 0xe5, 0xff, 00, - 0x5, 0x88, 0xf8, 0x15, 0xab, 0x78, 0xf7, 0xe1, 0x97, 0x86, - 0x3c, 0x79, 0xa2, 0x59, 0xcd, 0x7f, 0x2f, 0x85, 0xa6, 0x9a, - 0x2b, 0xf8, 0x60, 0x42, 0xcc, 0x96, 0x93, 0x5, 0x26, 0x5c, - 0xe, 0x70, 0x8f, 0x1a, 0xe7, 0xd0, 0x31, 0x3d, 0xa8, 0x13, - 0xd8, 0xf8, 0x57, 0xfe, 0x9, 0xbb, 0xf1, 0x4b, 0xc1, 0xff, - 00, 0x8, 0x7f, 0x6a, 0x4d, 0x1f, 0x5d, 0xf1, 0xb5, 0xec, - 0x1a, 0x5e, 0x92, 0xf6, 0x37, 0x36, 0x91, 0xea, 0x17, 0x23, - 0xf7, 0x56, 0xd3, 0xc8, 0xa0, 0x23, 0xb1, 0xfe, 0x10, 0x40, - 0x65, 0xdd, 0xdb, 0x77, 0x3c, 0x57, 0xe8, 0x87, 0xfc, 0x15, - 0x1f, 0xf6, 0x8d, 0xd2, 0x7c, 0x31, 0xfb, 0x2e, 0x36, 0x8b, - 0xe1, 0xed, 0x62, 0xcf, 0x51, 0xbb, 0xf1, 0xb4, 0xc2, 0xc2, - 0x29, 0x6c, 0xae, 0x16, 0x55, 0xfb, 0x2a, 0xe1, 0xe7, 0x70, - 0x54, 0x91, 0x82, 0x36, 0xa7, 0xfd, 0xb4, 0xaf, 0xc4, 0xea, - 0x37, 0x12, 00, 0xc9, 0xc0, 0xe8, 0x2a, 0xac, 0x45, 0xcf, - 0xb5, 0x7f, 0xe0, 0x94, 0x9f, 0xc, 0xb4, 0xcf, 0x13, 0xfe, - 0xd0, 0x57, 0x3e, 0x35, 0xd7, 0xee, 0x6d, 0xac, 0xf4, 0x4f, - 0x5, 0x59, 0x1b, 0xe3, 0x3d, 0xe4, 0x8b, 0x1c, 0x42, 0xe6, - 0x4c, 0xa4, 0x59, 0x66, 0xc0, 0xe0, 0x79, 0x8d, 0xf5, 0x51, - 0x5e, 0xd9, 0xff, 00, 0x5, 0x2f, 0xff, 00, 0x82, 0x80, - 0xf8, 0x77, 0xc6, 0x7e, 0x11, 0xbb, 0xf8, 0x4f, 0xf0, 0xd7, - 0x53, 0x8f, 0x59, 0xb6, 0xbe, 0x64, 0x3a, 0xd6, 0xbd, 0x65, - 0x29, 0x30, 0x6c, 0x56, 0xd, 0xf6, 0x78, 0x98, 0x7d, 0xfc, - 0x90, 0x37, 0x30, 0xf9, 0x71, 0xc7, 0x39, 0x38, 0xfc, 0xc0, - 0x12, 0xba, 0xc6, 0xd1, 0x87, 0x61, 0x1b, 0x10, 0x59, 0x1, - 0xe0, 0x91, 0xd3, 0x22, 0xbd, 0x33, 0xe0, 0x1f, 0xec, 0xe5, - 0xe3, 0x9f, 0xda, 0x43, 0xc6, 0x50, 0x78, 0x7f, 0xc1, 0xba, - 0x4c, 0x97, 0x44, 0xb7, 0xfa, 0x4e, 0xa3, 0x2a, 0x95, 0xb4, - 0xb3, 0x4e, 0xed, 0x2c, 0x98, 0xc0, 0xf6, 0x1d, 0x4f, 0x60, - 0x68, 0xb, 0xf4, 0x3b, 0xbf, 0xd8, 0x3f, 0xf6, 0x70, 0x9f, - 0xf6, 0x92, 0xf8, 0xff, 00, 0xa3, 0x69, 0x33, 0xc2, 0xe7, - 0xc3, 0x7a, 0x53, 0x2e, 0xa7, 0xac, 0x4e, 0x17, 0x2a, 0x21, - 0x46, 0x5, 0x62, 0xcf, 0x4c, 0xc8, 0xd8, 0x5c, 0x7a, 0x16, - 0x3d, 0xab, 0xfa, 0xd, 0x44, 0x58, 0x91, 0x51, 0x14, 0x2a, - 0xa8, 0xc0, 0x3, 0xa0, 0x15, 0xe2, 0xff, 00, 0xb2, 0x8f, - 0xec, 0xb7, 0xe1, 0xaf, 0xd9, 0x53, 0xe1, 0xa4, 0x3e, 0x1b, - 0xd1, 0x7f, 0xd3, 0x35, 0x3b, 0x82, 0x27, 0xd5, 0x75, 0x67, - 0x5c, 0x49, 0x79, 0x3e, 0x31, 0x9f, 0x64, 0x1d, 0x15, 0x7b, - 0xf, 0x72, 0x4d, 0x7b, 0x43, 0xba, 0xc6, 0x8c, 0xec, 0x42, - 0xaa, 0x8c, 0x92, 0x7b, 0xa, 0x96, 0xcb, 0x4a, 0xc7, 0x81, - 0xfe, 0xd2, 0x9e, 0x23, 0x13, 0x5e, 0xe9, 0x9a, 0x24, 0x6f, - 0x91, 0x8, 0x37, 0x33, 0x1, 0xfd, 0xe3, 0xc2, 0x8f, 0xcb, - 0x77, 0xe7, 0x5e, 0x25, 0x5b, 0xbe, 0x39, 0xd7, 0xcf, 0x8a, - 0x3c, 0x5b, 0xaa, 0x6a, 0x79, 0x26, 0x39, 0xa6, 0x3e, 0x5e, - 0x7f, 0xb8, 0x3e, 0x55, 0xfd, 00, 0xac, 0x2a, 0xfc, 0x4b, - 0x33, 0xc4, 0xfd, 0x6f, 0x17, 0x52, 0xaf, 0x4b, 0xe9, 0xe8, - 0xb4, 0x47, 0xc9, 0x62, 0x2a, 0x7b, 0x5a, 0xb2, 0x90, 0x51, - 0x45, 0x15, 0xe6, 0x18, 0x16, 0xec, 0x74, 0x8b, 0xed, 0x50, - 0x39, 0xb3, 0xb2, 0xb8, 0xbb, 0x9, 0x8d, 0xde, 0x44, 0x4c, - 0xfb, 0x73, 0xd3, 0x38, 0x1c, 0x54, 0xd2, 0x78, 0x6f, 0x57, - 0x88, 0x65, 0xf4, 0xab, 0xd4, 0x1e, 0xad, 0x6c, 0xe3, 0xfa, - 0x57, 0xd2, 0x1f, 00, 0x74, 0xf, 0xec, 0x8f, 0x2, 0x47, - 0x74, 0xe9, 0xb6, 0x6d, 0x42, 0x56, 0x9c, 0x92, 0x39, 0xd8, - 0x3e, 0x55, 0xfd, 0x1, 0x3f, 0x8d, 0x7a, 0x55, 0x7d, 0xd6, - 0x13, 0x86, 0xa3, 0x88, 0xc3, 0xc2, 0xac, 0xea, 0x34, 0xe4, - 0xaf, 0x6b, 0x77, 0x3d, 0x8a, 0x58, 0x5, 0x38, 0x29, 0x39, - 0x5a, 0xe7, 0xc3, 0x12, 0xc1, 0x2c, 0x7, 0x12, 0xc6, 0xf1, - 0x9f, 0x47, 0x52, 0x2a, 0x3a, 0xfb, 0x96, 0xe2, 0xce, 0xde, - 0xed, 0xa, 0x4f, 0x4, 0x73, 0x21, 0xfe, 0x19, 0x10, 0x30, - 0xfd, 0x6b, 0x8c, 0xf1, 0x3f, 0xc1, 0xaf, 0xc, 0xf8, 0x8e, - 0xde, 0x40, 0x96, 0x11, 0xe9, 0xb7, 0x44, 0x1d, 0xb7, 0x16, - 0x6a, 0x10, 0x83, 0xee, 0xa3, 0x83, 0xf9, 0x54, 0xd6, 0xe1, - 0x6a, 0xb1, 0x57, 0xa3, 0x51, 0x3f, 0x26, 0xad, 0xfe, 0x62, - 0x9e, 0x5d, 0x24, 0xbd, 0xd9, 0x5c, 0xf9, 0x36, 0x8a, 0xd4, - 0xf1, 0x3f, 0x87, 0xae, 0x7c, 0x2b, 0xaf, 0x5e, 0x69, 0x57, - 0x78, 0x33, 0x5b, 0x3e, 0xd2, 0xcb, 0xd1, 0x81, 0x19, 0xc, - 0x3e, 0xa0, 0x83, 0x59, 0x75, 0xf1, 0x53, 0x84, 0xa9, 0xc9, - 0xc2, 0x4a, 0xcd, 0x68, 0x79, 0x2d, 0x34, 0xec, 0xc2, 0x8a, - 0x28, 0xa8, 0x11, 0xe9, 0xbf, 00, 0x3c, 0x49, 0x36, 0x93, - 0xe3, 0x68, 0xf4, 0xed, 0xc7, 0xec, 0xba, 0x8a, 0x32, 0x32, - 0x76, 0xe, 0xa0, 0xb2, 0x9f, 0xd0, 0x8f, 0xc6, 0xbe, 0x9e, - 0xaf, 0x92, 0xbe, 0xb, 0xda, 0x3d, 0xdf, 0xc4, 0xad, 0x1b, - 0x68, 0x24, 0x46, 0xcf, 0x23, 0x11, 0xd8, 0x4, 0x6f, 0xfe, - 0xb5, 0x7d, 0x6b, 0x5f, 0xa9, 0xf0, 0xcc, 0xe7, 0x2c, 0x13, - 0x52, 0xd9, 0x49, 0xdb, 0xee, 0x4c, 0xfa, 0x2c, 0xbd, 0xb7, - 0x49, 0xa7, 0xdc, 0xa5, 0xad, 0xea, 0x71, 0xe8, 0xda, 0x3d, - 0xed, 0xfc, 0xa7, 0x11, 0xdb, 0x42, 0xf2, 0x9c, 0xff, 00, - 0xb2, 0x9, 0xaf, 0x89, 0xae, 0xae, 0x64, 0xbd, 0xb9, 0x9a, - 0xe2, 0x56, 0xdd, 0x2c, 0xae, 0x64, 0x76, 0xf5, 0x24, 0xe4, - 0xd7, 0xda, 0x3e, 0x28, 0xf0, 0xf4, 0x3e, 0x2a, 0xd0, 0xee, - 0x74, 0xbb, 0x89, 0xa6, 0x82, 0xb, 0x80, 0x3, 0xbc, 0x4, - 0x6, 0xc0, 0x20, 0xe3, 0x90, 0x7d, 0x2b, 0xcd, 0xa4, 0xfd, - 0x9a, 0xb4, 0x16, 0xfb, 0x9a, 0x9e, 0xa0, 0xbf, 0x52, 0x87, - 0xff, 00, 0x65, 0xa8, 0xcf, 0x72, 0xfc, 0x5e, 0x61, 0x28, - 0x2a, 0x9, 0x72, 0xc6, 0xfd, 0x7a, 0xb1, 0x63, 0x28, 0x55, - 0xac, 0xd7, 0x22, 0xd1, 0x1f, 0x39, 0x51, 0x5f, 0x42, 0x49, - 0xfb, 0x33, 0x69, 0x87, 0xee, 0x6b, 0x57, 0x6b, 0xfe, 0xf4, - 0x6a, 0x6a, 0xb4, 0x9f, 0xb3, 0x1c, 0x7, 0xee, 0x6b, 0xf2, - 0xf, 0xf7, 0xad, 0x81, 0xff, 00, 0xd9, 0xab, 0xe4, 0x9f, - 0xf, 0xe6, 0x2b, 0xec, 0x7e, 0x2b, 0xfc, 0xcf, 0x33, 0xea, - 0x55, 0xfb, 0x7e, 0x27, 0x82, 0x51, 0x5e, 0x9b, 0xf1, 0x17, - 0xe0, 0xd2, 0x78, 0x3, 0x42, 0x1a, 0x8b, 0x6b, 0x3f, 0x6b, - 0x2f, 0x32, 0xc2, 0x90, 0xfd, 0x9f, 0x61, 0x62, 0x72, 0x7a, - 0xee, 0x3d, 00, 0x3d, 0xab, 0xcc, 0xab, 0xc7, 0xc4, 0xe1, - 0x6b, 0x60, 0xea, 0x7b, 0x2a, 0xca, 0xcf, 0xe4, 0xff, 00, - 0x23, 0x96, 0xa5, 0x39, 0x52, 0x97, 0x2c, 0xd6, 0xa1, 0x45, - 0x14, 0x57, 0x21, 0x98, 0x51, 0x45, 0x7a, 0x44, 0x1f, 00, - 0x7c, 0x55, 0x73, 0x6b, 0xd, 0xc4, 0x6b, 0x66, 0x56, 0x54, - 0x59, 0x2, 0x99, 0xc8, 0x20, 0x11, 0x9c, 0x1e, 0x3a, 0xd7, - 0x55, 0xc, 0x2d, 0x7c, 0x4d, 0xfd, 0x8c, 0x1c, 0xad, 0xbd, - 0x8d, 0x21, 0x4e, 0x75, 0x3e, 0x5, 0x73, 0xcd, 0xe8, 0xaf, - 0x46, 0x93, 0xe0, 0xf, 0x8c, 0x13, 0xa5, 0xa5, 0xb3, 0xff, - 00, 0xbb, 0x72, 0xb5, 0x56, 0x5f, 0x81, 0xfe, 0x32, 0x8b, - 0xa6, 0x94, 0x1f, 0xfd, 0xcb, 0x88, 0xff, 00, 0xf8, 0xaa, - 0xe8, 0x79, 0x6e, 0x35, 0x6f, 0x46, 0x5f, 0x73, 0x2f, 0xd8, - 0x55, 0x5f, 0x65, 0xfd, 0xc7, 0x7, 0x5e, 0xd3, 0xfb, 0x34, - 0x69, 0x3e, 0x6e, 0xaf, 0xab, 0xea, 0x4c, 0xbc, 0x43, 0xa, - 0xc0, 0x8d, 0xee, 0xc7, 0x27, 0xf4, 0x51, 0xf9, 0xd7, 0x12, - 0xff, 00, 0x7, 0x3c, 0x64, 0x9d, 0x74, 0x29, 0x8f, 0xfb, - 0xb2, 0x46, 0x7f, 0xf6, 0x6a, 0xf7, 0x9f, 0x82, 0x9e, 0x12, - 0xb9, 0xf0, 0x9f, 0x83, 0x84, 0x77, 0xd0, 0x1b, 0x6b, 0xeb, - 0x89, 0x9e, 0x59, 0x63, 0x6e, 0xab, 0xfc, 0x2a, 0xf, 0xe0, - 0x33, 0xf8, 0xd7, 0xb7, 0x91, 0xe0, 0x2b, 0xac, 0x74, 0x67, - 0x56, 0xd, 0x28, 0xdd, 0xea, 0x9a, 0xf2, 0xfd, 0x4e, 0xbc, - 0x1d, 0x19, 0xfb, 0x64, 0xe4, 0xad, 0x63, 0xbf, 0xa2, 0x8a, - 0xf3, 0x4f, 0x8a, 0xff, 00, 0x17, 0xa0, 0xf0, 0x54, 0x6d, - 0xa7, 0x69, 0xfb, 0x6e, 0x35, 0xa7, 0x5c, 0xf3, 0xca, 0x40, - 0xf, 0x76, 0xf5, 0x3e, 0x83, 0xf3, 0xf7, 0xfd, 0x27, 0x13, - 0x89, 0xa5, 0x84, 0xa4, 0xea, 0xd6, 0x76, 0x48, 0xf7, 0xea, - 0x54, 0x8d, 0x28, 0xf3, 0x49, 0xe8, 0x74, 0xde, 0x33, 0xf8, - 0x83, 0xa3, 0xf8, 0x1a, 0xd3, 0xcc, 0xd4, 0x2e, 0x33, 0x70, - 0xcb, 0x98, 0xad, 0x63, 0xe6, 0x59, 0x3e, 0x83, 0xb0, 0xf7, - 0x3c, 0x57, 0xcf, 0xde, 0x32, 0xf8, 0xe3, 0xaf, 0xf8, 0xa3, - 0x7c, 0x36, 0xaf, 0xfd, 0x91, 0x62, 0x4f, 0xfa, 0xbb, 0x66, - 0x3e, 0x63, 0xf, 0xf6, 0x9f, 0xaf, 0xe5, 0x8a, 0xe1, 0x35, - 0x3d, 0x4e, 0xef, 0x59, 0xbd, 0x96, 0xf2, 0xfa, 0xe2, 0x4b, - 0xab, 0x99, 0x4e, 0x5e, 0x49, 0xe, 0x49, 0xff, 00, 0x3e, - 0x95, 0x56, 0xbf, 0x2f, 0xcc, 0x33, 0xec, 0x46, 0x31, 0xb8, - 0x53, 0x7c, 0x90, 0xec, 0xb7, 0x7e, 0xac, 0xf9, 0xda, 0xf8, - 0xca, 0x95, 0x74, 0x8e, 0x88, 0x57, 0x76, 0x91, 0x8b, 0x33, - 0x16, 0x62, 0x72, 0x49, 0x39, 0x26, 0x92, 0x8a, 0x2b, 0xe6, - 0x4e, 00, 0xa2, 0x8a, 0x96, 0xde, 0xd2, 0x7b, 0xc7, 0xd9, - 0x4, 0x32, 0x4e, 0xdf, 0xdd, 0x8d, 0xb, 0x1f, 0xd2, 0x9a, - 0x4d, 0xbb, 0x20, 0x22, 0xa2, 0xb5, 0x47, 0x84, 0xb5, 0xc2, - 0x32, 0x34, 0x5d, 0x47, 0x1e, 0xbf, 0x64, 0x93, 0xfc, 0x2a, - 0x95, 0xd6, 0x9f, 0x75, 0x62, 0x71, 0x73, 0x6d, 0x35, 0xb9, - 0xf4, 0x96, 0x32, 0xbf, 0xce, 0xae, 0x54, 0xe7, 0x15, 0x79, - 0x45, 0xaf, 0x90, 0xdc, 0x5a, 0xdd, 0x15, 0xe8, 0xa2, 0x8a, - 0xcc, 0x41, 0x57, 0x34, 0xad, 0x66, 0xfb, 0x43, 0xba, 0x5b, - 0x9d, 0x3e, 0xee, 0x6b, 0x39, 0xd4, 0xe7, 0x7c, 0x2e, 0x57, - 0x3f, 0x5f, 0x5f, 0xa1, 0xaa, 0x74, 0x55, 0x46, 0x4e, 0x2f, - 0x9a, 0x2e, 0xcc, 0x13, 0x6b, 0x54, 0x7b, 0xef, 0xc3, 0xef, - 0xda, 0x9, 0x2e, 0xe5, 0x8e, 0xc7, 0xc4, 0xc1, 0x20, 0x73, - 0x85, 0x5b, 0xf8, 0xc6, 0x14, 0x9f, 0xf6, 0xc7, 0x6f, 0xa8, - 0xe3, 0xd8, 0x57, 0xb6, 0x47, 0x22, 0x4d, 0x1a, 0xc9, 0x1b, - 0x7, 0x46, 0x19, 0x56, 0x53, 0x90, 0x47, 0xa8, 0x35, 0xf0, - 0xb5, 0x7a, 0xc7, 0xc1, 0x9f, 0x8b, 0x12, 0x78, 0x76, 0xf2, - 0x1d, 0x17, 0x55, 0x98, 0xbe, 0x93, 0x2b, 0x6d, 0x8a, 0x47, - 0x3f, 0xf1, 0xee, 0xc7, 0xa7, 0x3f, 0xdd, 0x3f, 0xa7, 0xe7, - 0x5f, 0x77, 0x94, 0x67, 0xf2, 0xe6, 0x58, 0x7c, 0x63, 0xba, - 0x7b, 0x4b, 0xfc, 0xff, 00, 0xcf, 0xef, 0x3d, 0x9c, 0x2e, - 0x35, 0xdd, 0x42, 0xaf, 0xde, 0x7d, 0x27, 0x45, 0x20, 0x20, - 0x8c, 0x8e, 0x41, 0xa5, 0xaf, 0xd0, 0xcf, 0x70, 0x28, 0xa2, - 0xaa, 0xea, 0x7a, 0x9d, 0xb6, 0x8d, 0xa7, 0xcf, 0x7b, 0x79, - 0x32, 0xc1, 0x6d, 0x2, 0x17, 0x92, 0x46, 0xe8, 00, 0xa4, - 0xda, 0x8a, 0xbb, 0xd8, 0x4d, 0xdb, 0x56, 0x59, 0x66, 0x8, - 0xa5, 0x98, 0x80, 0x7, 0x24, 0x9e, 0xd5, 0xe6, 0xfe, 0x30, - 0xf8, 0xed, 0xa0, 0x78, 0x6f, 0x7c, 0x36, 0x4d, 0xfd, 0xb1, - 0x7a, 0x38, 0xd9, 0x6e, 0xd8, 0x8d, 0x4f, 0xbb, 0xf4, 0xfc, - 0xb3, 0x5e, 0x45, 0xf1, 0x27, 0xe3, 0x16, 0xa1, 0xe3, 0x29, - 0xe5, 0xb4, 0xb1, 0x79, 0x2c, 0x34, 0x60, 0x70, 0x22, 0x53, - 0x87, 0x98, 0x7a, 0xb9, 0x1d, 0xbf, 0xd9, 0xe9, 0xf5, 0xaf, - 0x3a, 0xaf, 0x80, 0xcc, 0x78, 0x95, 0xa6, 0xe9, 0xe0, 0xd7, - 0xfd, 0xbc, 0xff, 00, 0x45, 0xfe, 0x7f, 0x71, 0xe2, 0xd7, - 0xc7, 0xbb, 0xf2, 0xd2, 0xfb, 0xcf, 0x47, 0xf1, 0x7, 0xc7, - 0xbf, 0x14, 0x6b, 0x3b, 0x92, 0xda, 0x68, 0xb4, 0xa8, 0x4f, - 0xf0, 0xda, 0xaf, 0xcd, 0xff, 00, 0x7d, 0x36, 0x4f, 0xe5, - 0x8a, 0xe1, 0x6f, 0xf5, 0xad, 0x43, 0x54, 0x62, 0xd7, 0x97, - 0xd7, 0x37, 0x64, 0xf7, 0x9a, 0x56, 0x7f, 0xe6, 0x6a, 0x95, - 0x15, 0xf1, 0x75, 0xf1, 0x98, 0x8c, 0x4b, 0xbd, 0x69, 0xb7, - 0xf3, 0xfd, 0xf, 0x26, 0x75, 0x67, 0x53, 0xe2, 0x77, 0xa, - 0x28, 0xa2, 0xb8, 0xcc, 0xc2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, - 0x28, 0xa0, 0xb, 0x76, 0x7a, 0xbd, 0xf6, 0x9c, 0xc1, 0xad, - 0x6f, 0x6e, 0x2d, 0x88, 0xef, 0xc, 0xac, 0x9f, 0xc8, 0xd7, - 0x5b, 0xa2, 0x7c, 0x68, 0xf1, 0x6e, 0x8a, 0x55, 0x57, 0x53, - 0x6b, 0xd8, 0xc7, 0x1e, 0x5d, 0xe2, 0x89, 0x33, 0xf8, 0xfd, - 0xef, 0xd6, 0xb8, 0x7a, 0xdb, 0xf0, 0x4e, 0x96, 0x75, 0xaf, - 0x17, 0x68, 0xf6, 0x41, 0x77, 0x9, 0x6e, 0xa3, 0xc, 0x3f, - 0xd9, 0x7, 0x2d, 0xfa, 0x3, 0x5d, 0xd8, 0x6a, 0xf8, 0x88, - 0x54, 0x8c, 0x68, 0xcd, 0xa6, 0xdd, 0xb4, 0x66, 0xb4, 0xe7, - 0x35, 0x24, 0xa0, 0xec, 0x7d, 0x8d, 0xa5, 0xcb, 0x71, 0x3e, - 0x9b, 0x6b, 0x25, 0xda, 0xaa, 0x5d, 0x3c, 0x4a, 0xd2, 0xaa, - 0xc, 00, 0xc4, 0xc, 0x81, 0xf8, 0xd5, 0x9c, 0x73, 0x9a, - 0x5a, 0x2b, 0xf7, 0x14, 0xac, 0x92, 0x3e, 0xbd, 0x5, 0x14, - 0x51, 0x4c, 0x61, 0x58, 0xfe, 0x2e, 0x97, 0xca, 0xf0, 0xed, - 0xeb, 0x74, 0xf9, 0xd, 0x6c, 0x57, 0x33, 0xf1, 0x12, 0x6f, - 0x27, 0xc2, 0xb7, 0x7d, 0xb2, 0x31, 0x58, 0xd6, 0x7c, 0xb4, - 0xe4, 0xfc, 0x8c, 0xea, 0x3b, 0x41, 0xb3, 0xe1, 0x4f, 0x88, - 0x13, 0x79, 0xde, 0x22, 0xbb, 0x6f, 0xf6, 0x8d, 0x78, 0x7, - 0xc6, 0x8b, 0x8f, 0x2f, 0x47, 0x9b, 0x9f, 0xe1, 0x35, 0xee, - 0x5e, 0x2e, 0x97, 0xcd, 0xd6, 0x6f, 0x1b, 0xfd, 0xb3, 0x5f, - 0x3c, 0x7c, 0x78, 0xb9, 0xf2, 0xb4, 0x6b, 0x9f, 0x68, 0xcf, - 0xf2, 0xaf, 0xcd, 0xb2, 0xc5, 0xcd, 0x5e, 0xfe, 0xa7, 0xe2, - 0x18, 0xbf, 0xde, 0xe3, 0xe9, 0xc7, 0xbc, 0xd7, 0xe6, 0x7e, - 0x94, 0xfc, 0xc, 0xf0, 0x98, 0x5f, 0x82, 0x7f, 0xf, 0x84, - 0x90, 0xb0, 0x90, 0x78, 0x7b, 0x4f, 0xd, 0x91, 0xce, 0x7e, - 0xcd, 0x1e, 0x68, 0xaf, 0x59, 0xf8, 0x75, 0x66, 0x2c, 0xfe, - 0x1f, 0x78, 0x62, 0xdc, 0xc6, 0x10, 0xc5, 0xa5, 0xda, 0xc7, - 0xb7, 0x1d, 0x31, 0x12, 0x8c, 0x51, 0x5f, 0xa6, 0x24, 0x7e, - 0xe0, 0xa3, 0xa1, 0xd1, 0xd1, 0x45, 0x15, 0x65, 0x85, 0x14, - 0x51, 0x40, 0x5, 0x7c, 0x4d, 0xfb, 0x4b, 0xf8, 0xc4, 0xf8, - 0xa3, 0xe2, 0x65, 0xcd, 0xac, 0x6e, 0x1a, 0xd3, 0x49, 0x51, - 0x69, 0x1e, 0x31, 0x8d, 0xfd, 0x5c, 0xe4, 0x7b, 0x9c, 0x7e, - 0x15, 0xf5, 0xdf, 0x8e, 0xfc, 0x51, 0xf, 0x82, 0xfc, 0x21, - 0xaa, 0xeb, 0x33, 0x9f, 0x96, 0xd2, 0x6, 0x75, 0x5c, 0xe3, - 0x73, 0xe3, 0xa, 0xa3, 0xdc, 0x9c, 0x57, 0xe7, 0x9b, 0xcb, - 0x3e, 0xa5, 0x7a, 0xf3, 0x4c, 0xc6, 0x5b, 0x9b, 0x89, 0xb, - 0xbb, 0x1e, 0xac, 0xcc, 0x72, 0x4f, 0xe6, 0x6b, 0xe4, 0x78, - 0x83, 0x13, 0xcb, 0x4e, 0x34, 0x17, 0x5d, 0x5f, 0xa2, 0x3e, - 0x33, 0x88, 0xf1, 0x36, 0x84, 0x30, 0xd1, 0xde, 0x5a, 0xbf, - 0x45, 0xb7, 0xe3, 0xf9, 0x1e, 0xfb, 0xfb, 0x27, 0x78, 0x3f, - 0xed, 0xba, 0xdd, 0xe6, 0xb5, 0x32, 0xe6, 0x3b, 0x65, 0xdb, - 0x1e, 0x47, 0xf1, 0x1a, 0xfa, 0xb6, 0xbc, 0xff, 00, 0xe0, - 0x77, 0x85, 0x7, 0x85, 0x7e, 0x1f, 0xe9, 0xf1, 0x32, 0x6d, - 0x9e, 0x75, 0xf3, 0xa4, 0xfa, 0x9a, 0xf4, 0xa, 0xf5, 0xf2, - 0xac, 0x3f, 0xd5, 0xb0, 0x90, 0x8b, 0xdd, 0xea, 0xfe, 0x67, - 0xd0, 0x65, 0xb8, 0x7f, 0xaa, 0xe1, 0x61, 0xe, 0xbb, 0xbf, - 0x98, 0x51, 0x45, 0x15, 0xeb, 0x9e, 0x98, 0x51, 0x45, 0x14, - 00, 0x53, 0x26, 0x86, 0x3b, 0x98, 0x64, 0x86, 0x68, 0xd6, - 0x58, 0xa4, 0x52, 0xae, 0x8e, 0x32, 0xac, 0xf, 0x4, 0x11, - 0xdc, 0x56, 0x5f, 0x8a, 0xfc, 0x5b, 0xa3, 0x78, 0x1b, 0xc3, - 0xf7, 0xba, 0xe7, 0x88, 0x35, 0x3b, 0x5d, 0x1f, 0x48, 0xb2, - 0x8c, 0xcb, 0x71, 0x7b, 0x79, 0x20, 0x8e, 0x38, 0xd4, 0x77, - 0x24, 0xd7, 0xe7, 0xf7, 0xc6, 0xdf, 0xf8, 0x2c, 0x9f, 0x82, - 0xfc, 0x31, 0x3c, 0xd6, 0x1f, 0xd, 0xbc, 0x39, 0x73, 0xe3, - 0xb, 0x84, 0x3b, 0x7f, 0xb4, 0xb5, 0x16, 0x36, 0x96, 0x9f, - 0x55, 0x5c, 0x19, 0x1f, 0xf1, 0xb, 0x40, 0x1e, 0x85, 0xf1, - 0x93, 0xfe, 0x9, 0x37, 0xf0, 0x6b, 0xe2, 0x76, 0xa3, 0x73, - 0xa9, 0xe8, 0x9f, 0xda, 0x3e, 0x3, 0xd4, 0x6e, 0x1c, 0xc9, - 0x20, 0xd2, 0x1d, 0x5e, 0xd4, 0xb1, 0xeb, 0xfb, 0x97, 0x4, - 0x2f, 0xd1, 0xa, 0x8a, 0xf0, 0xd9, 0xbf, 0xe0, 0x88, 0xb0, - 0xfd, 0xb3, 0x31, 0x7c, 0x58, 0x90, 0x5a, 0x67, 0xa3, 0xe8, - 0xa0, 0xc9, 0x8f, 0xa8, 0x9b, 0x15, 0xe2, 0x1a, 0xa7, 0xfc, - 0x16, 0xf, 0xe3, 0xc5, 0xf4, 0xcc, 0xd6, 0xd0, 0x78, 0x57, - 0x4e, 0x8c, 0xfd, 0xd4, 0x87, 0x4c, 0x76, 0xc7, 0xe2, 0xf2, - 0xb6, 0x6b, 0xed, 0xf, 0xf8, 0x26, 0xc7, 0xed, 0x35, 0xf1, - 0x77, 0xf6, 0xa3, 0x93, 0xc5, 0xba, 0xcf, 0x8e, 0x2e, 0xb4, - 0xb6, 0xf0, 0xde, 0x91, 0xe5, 0x5a, 0x5b, 0x8b, 0x1b, 0x11, - 0xb, 0xcb, 0x74, 0xff, 00, 0x33, 0x65, 0xb2, 0x78, 0x54, - 0x3, 0x81, 0xfd, 0xf1, 0x4f, 0x52, 0x74, 0x65, 0xf, 0x87, - 0x1f, 0xf0, 0x47, 0x3f, 0x84, 0x5e, 0x16, 0xb8, 0x4b, 0x8f, - 0x13, 0xeb, 0x1a, 0xef, 0x8c, 0xa4, 0x52, 0xf, 0x91, 0x2c, - 0xab, 0x67, 0x6e, 0x48, 0xf5, 0x58, 0xfe, 0x7f, 0xfc, 0x7e, - 0xbe, 0xd5, 0xf0, 0x27, 0xc3, 0xef, 0xd, 0xfc, 0x31, 0xf0, - 0xe5, 0xb6, 0x81, 0xe1, 0x4d, 0x12, 0xcb, 0x40, 0xd1, 0xed, - 0x86, 0x23, 0xb4, 0xb1, 0x88, 0x46, 0x83, 0xd4, 0x9c, 0x75, - 0x27, 0xb9, 0x39, 0x26, 0xbc, 0x43, 0xc5, 0x7f, 0xf0, 0x50, - 0xef, 0x80, 0xbe, 0x6, 0xf1, 0x76, 0xaf, 0xe1, 0x8d, 0x7b, - 0xc6, 0xaf, 0xa6, 0x6b, 0x5a, 0x55, 0xd4, 0x96, 0x77, 0x96, - 0xd2, 0xe9, 0x77, 0x67, 0xcb, 0x95, 0x1b, 0x6b, 0xd, 0xc2, - 0x22, 0xa7, 0x91, 0xd4, 0x1c, 0x1a, 0xf5, 0xbf, 0x84, 0xbf, - 0x19, 0xbc, 0x1d, 0xf1, 0xcf, 0xc2, 0xed, 0xe2, 0x2f, 0x3, - 0xeb, 0x51, 0xeb, 0xba, 0x3a, 0xdc, 0x35, 0xab, 0x5c, 0xc7, - 0x1b, 0xc6, 0x4, 0x8a, 0x1, 0x65, 0xc3, 0xa8, 0x3c, 0x6, - 0x1d, 0xbb, 0xd2, 0x19, 0xda, 0xd7, 0x11, 0xf1, 0x93, 0xc4, - 0x43, 0xc3, 0xbe, 0x1, 0xd4, 0x59, 0x5f, 0x6c, 0xf7, 0x4b, - 0xf6, 0x58, 0xb9, 0xe7, 0x2f, 0xc1, 0xfc, 0x97, 0x71, 0xae, - 0xde, 0xbe, 0x76, 0xfd, 0xa4, 0x7c, 0x43, 0xf6, 0xcd, 0x7e, - 0xc3, 0x48, 0x8d, 0xf2, 0x96, 0x91, 0x19, 0x64, 0x3, 0xfb, - 0xef, 0xd3, 0xf2, 00, 0x7e, 0x75, 0xe2, 0xe7, 0x18, 0x9f, - 0xaa, 0xe0, 0xa7, 0x35, 0xbb, 0xd1, 0x7a, 0xbf, 0xea, 0xe7, - 0x2e, 0x2a, 0xa7, 0xb3, 0xa4, 0xdf, 0xc8, 0xf1, 0xda, 0x28, - 0xa2, 0xbf, 0x19, 0x3e, 0x54, 0x2a, 0xe6, 0x8f, 0xa6, 0x49, - 0xac, 0xea, 0xd6, 0x76, 0x10, 0x82, 0x65, 0xb9, 0x99, 0x22, - 0x5c, 0x76, 0xdc, 0x40, 0xcd, 0x53, 0xaf, 0x44, 0xf8, 0x18, - 0x9a, 0x64, 0x3e, 0x33, 0xfb, 0x7e, 0xa9, 0x79, 0x6d, 0x67, - 0x15, 0x9c, 0x4c, 0xf1, 0x1b, 0x89, 0x42, 0x6, 0x90, 0xfc, - 0xa3, 0x19, 0xeb, 0x80, 0x58, 0xfe, 0x55, 0xd7, 0x84, 0xa2, - 0xb1, 0x18, 0x88, 0x52, 0x6e, 0xc9, 0xbd, 0x7d, 0x3a, 0x9a, - 0x52, 0x8f, 0x3c, 0xd4, 0x59, 0xf4, 0xfe, 0x9f, 0x63, 0x16, - 0x99, 0x61, 0x6f, 0x69, 0x2, 0xec, 0x86, 0x8, 0xd6, 0x24, - 0x51, 0xd8, 0x1, 0x81, 0x56, 0x2b, 0x2a, 0x3f, 0x16, 0x68, - 0x93, 0x7d, 0xcd, 0x5e, 0xc5, 0xff, 00, 0xdd, 0xb9, 0x43, - 0xfd, 0x6a, 0x43, 0xe2, 0x4d, 0x25, 0x46, 0x4e, 0xa9, 0x66, - 0x7, 0xaf, 0x9e, 0x9f, 0xe3, 0x5f, 0xb7, 0xc6, 0xa5, 0x24, - 0xac, 0xa4, 0xad, 0xea, 0x7d, 0x72, 0x94, 0x6d, 0xa3, 0x34, - 0x69, 0x9, 0xa, 0x9, 0x27, 00, 0x72, 0x49, 0xae, 0x5b, - 0x55, 0xf8, 0xa5, 0xe1, 0x5d, 0x1a, 0x36, 0x69, 0xf5, 0xbb, - 0x57, 0x23, 0xf8, 0x20, 0x7f, 0x35, 0xbf, 0x25, 0xcd, 0x78, - 0xf7, 0xc4, 0x9f, 0x8f, 0x12, 0x6b, 0xf6, 0xb2, 0xe9, 0x9a, - 0xa, 0x49, 0x69, 0x67, 0x20, 0x29, 0x2d, 0xd4, 0x9c, 0x49, - 0x22, 0x9e, 0xa1, 0x47, 0xf0, 0x8f, 0x7e, 0xbf, 0x4a, 0xf3, - 0x71, 0x99, 0xb6, 0x13, 0x7, 0x6, 0xe5, 0x34, 0xdf, 0x64, - 0xee, 0xcc, 0x2a, 0xe2, 0x69, 0xd2, 0x57, 0x6e, 0xec, 0xe2, - 0x3e, 0x27, 0x78, 0x82, 0x2f, 0x13, 0xf8, 0xe7, 0x55, 0xbf, - 0x80, 0x83, 0x6e, 0xd2, 0x8, 0xe3, 0x61, 0xfc, 0x4a, 0x80, - 0x28, 0x3f, 0x8e, 0x33, 0xf8, 0xd7, 0x2d, 0x45, 0x15, 0xf8, - 0xed, 0x6a, 0xb2, 0xaf, 0x52, 0x55, 0x65, 0xbc, 0x9b, 0x7f, - 0x79, 0xf2, 0xd2, 0x93, 0x9c, 0x9c, 0x9f, 0x50, 0xa2, 0x8a, - 0xe9, 0x3c, 0x7, 0xe0, 0x6b, 0xdf, 0x1e, 0x6b, 0x69, 0x65, - 0x6a, 0xc, 0x70, 0x2f, 0xcd, 0x3d, 0xc1, 0x1f, 0x2c, 0x49, - 0xfe, 0x27, 0xb0, 0xa5, 0x4a, 0x94, 0xeb, 0xcd, 0x53, 0xa6, - 0xae, 0xd8, 0x46, 0x2e, 0x6d, 0x46, 0x3b, 0x9e, 0xab, 0xfb, - 0x36, 0xf8, 0x58, 0xa4, 0x57, 0xfa, 0xfc, 0xc8, 0x41, 0x7f, - 0xf4, 0x6b, 0x72, 0x47, 0x51, 0xc1, 0x72, 0x3f, 0x1c, 0xf, - 0xc0, 0xd7, 0xb9, 0x55, 0x3d, 0x23, 0x4a, 0xb6, 0xd0, 0xf4, - 0xcb, 0x6b, 0xb, 0x38, 0xc4, 0x56, 0xd6, 0xf1, 0x88, 0xd1, - 0x47, 0xa0, 0xfe, 0xb5, 0x72, 0xbf, 0x6a, 0xcb, 0xf0, 0x8b, - 0x3, 0x86, 0x85, 0x5, 0xba, 0xdf, 0xd7, 0xa9, 0xf5, 0x94, - 0x29, 0x7b, 0x1a, 0x6a, 0x1, 0x45, 0x14, 0x57, 0xa2, 0x6e, - 0x14, 0x51, 0x45, 00, 0x7c, 0xf7, 0xfb, 0x4a, 0xeb, 0xa6, - 0x7d, 0x67, 0x4c, 0xd2, 0x11, 0xbe, 0x4b, 0x78, 0x8d, 0xc3, - 0x8f, 0xf6, 0x98, 0xe0, 0x7e, 0x41, 0x4f, 0xe7, 0x5e, 0x31, - 0x5d, 0x3f, 0xc4, 0xcd, 0x77, 0xfe, 0x12, 0x3f, 0x1c, 0xea, - 0xf7, 0x81, 0xb7, 0x45, 0xe7, 0x18, 0xa3, 0x3f, 0xec, 0x27, - 0xca, 0x3f, 0x96, 0x7f, 0x1a, 0xe6, 0x2b, 0xf1, 0x3c, 0xcf, - 0x11, 0xf5, 0x9c, 0x65, 0x4a, 0x8b, 0x6b, 0xe9, 0xe8, 0xb4, - 0x47, 0xc9, 0x62, 0x27, 0xed, 0x2a, 0xca, 0x41, 0x45, 0x14, - 0x57, 0x96, 0x73, 0x9b, 0x3e, 0xd, 0xd0, 0xcf, 0x89, 0x3c, - 0x55, 0xa5, 0xe9, 0xb8, 0xca, 0xdc, 0x4e, 0xaa, 0xff, 00, - 0xee, 0xe, 0x5b, 0xf4, 0x6, 0xbe, 0xd1, 0x55, 0xa, 0xa0, - 0x1, 0x80, 0x6, 00, 0xaf, 0x9a, 0xff, 00, 0x67, 0x4d, - 0x18, 0xdf, 0x78, 0xce, 0x7b, 0xf6, 0x5c, 0xc7, 0x63, 0x6e, - 0xc4, 0x1f, 0xf6, 0xdf, 0xe5, 0x1f, 0xa6, 0xea, 0xfa, 0x56, - 0xbf, 0x50, 0xe1, 0x8a, 0x1e, 0xcf, 0xb, 0x2a, 0xaf, 0x79, - 0x3f, 0xc1, 0x7f, 0xc1, 0xb9, 0xf4, 0x19, 0x7c, 0x2d, 0x4d, - 0xcb, 0xb8, 0x51, 0x45, 0x15, 0xf6, 0x7, 0xaa, 0x14, 0x51, - 0x55, 0xb5, 0x1d, 0x42, 0xd, 0x2a, 0xc2, 0xe2, 0xf6, 0xe5, - 0xc4, 0x76, 0xf6, 0xf1, 0xb4, 0xb2, 0x39, 0xec, 0xa0, 0x64, - 0xd2, 0x6d, 0x45, 0x5d, 0x83, 0x76, 0xd4, 0xe3, 0x3e, 0x2d, - 0x7c, 0x47, 0x4f, 0x1, 0x68, 0xaa, 0xb6, 0xfb, 0x5f, 0x55, - 0xba, 0x5, 0x60, 0x43, 0xce, 0xc1, 0xdd, 0xc8, 0xf4, 0x1d, - 0xbd, 0x4d, 0x7c, 0xab, 0x73, 0x73, 0x2d, 0xe5, 0xc4, 0xb3, - 0xcf, 0x23, 0x4b, 0x34, 0xac, 0x5d, 0xe4, 0x73, 0x92, 0xc4, - 0xf5, 0x26, 0xb6, 0x3c, 0x6d, 0xe2, 0xa9, 0xfc, 0x65, 0xe2, - 0x4b, 0xcd, 0x52, 0x72, 0x42, 0xc8, 0xdb, 0x62, 0x8c, 0xff, - 00, 0xcb, 0x38, 0xc7, 0xdd, 0x5f, 0xcb, 0xf5, 0x26, 0xb0, - 0xab, 0xf1, 0xdc, 0xdf, 0x32, 0x96, 0x61, 0x5d, 0xb4, 0xfd, - 0xc5, 0xb2, 0xfd, 0x7e, 0x67, 0xcb, 0x62, 0x6b, 0xba, 0xf3, - 0xf2, 0x5b, 0x5, 0x14, 0x51, 0x5e, 0x11, 0xc6, 0x15, 0xa7, - 0xe1, 0xdf, 0xe, 0x6a, 0x1e, 0x2a, 0xd5, 0x22, 0xb0, 0xd3, - 0x6d, 0xda, 0x79, 0xdc, 0xf6, 0xfb, 0xa8, 0x3f, 0xbc, 0xc7, - 0xb0, 0xf7, 0xa8, 0x34, 0x7d, 0x22, 0xeb, 0x5e, 0xd4, 0xed, - 0xb4, 0xfb, 0x28, 0x8c, 0xd7, 0x57, 0xe, 0x11, 0x10, 0x7a, - 0xfb, 0xfb, 0xe, 0xb5, 0xf5, 0xc7, 0xc3, 0xff, 00, 0x1, - 0xd9, 0x78, 0xb, 0x45, 0x5b, 0x4b, 0x71, 0xbe, 0xe6, 0x40, - 0x1a, 0xe6, 0xe0, 0xf5, 0x91, 0xf1, 0xfa, 0x1, 0xd8, 0x57, - 0xbf, 0x94, 0xe5, 0x52, 0xcc, 0xaa, 0x5d, 0xe9, 0x5, 0xbb, - 0xfd, 0x17, 0xf5, 0xa1, 0xdb, 0x86, 0xc3, 0x3a, 0xf2, 0xd7, - 0x64, 0x71, 0xde, 0xf, 0xfd, 0x9f, 0x34, 0x6d, 0x26, 0x28, - 0xe6, 0xd6, 0x98, 0xea, 0xd7, 0x9d, 0x4c, 0x79, 0x2b, 0xa, - 0x9f, 0x4c, 0x75, 0x6f, 0xc7, 0xf2, 0xaf, 0x50, 0xb2, 0xd3, - 0xed, 0x74, 0xd8, 0x16, 0x1b, 0x4b, 0x68, 0xad, 0xa2, 0x51, - 0x80, 0x91, 0x20, 0x50, 0x3f, 0x1, 0x56, 0x28, 0xaf, 0xd5, - 0x30, 0xd8, 0x2c, 0x3e, 0x12, 0x3c, 0xb4, 0x60, 0x97, 0xe7, - 0xf7, 0x9f, 0x45, 0x4e, 0x94, 0x29, 0x2b, 0x41, 0x58, 0x2a, - 0x2b, 0x8b, 0x58, 0x6e, 0xe2, 0x68, 0xe7, 0x89, 0x26, 0x8d, - 0x86, 0xa, 0x48, 0xa1, 0x81, 0xfc, 0xd, 0x4b, 0x45, 0x76, - 0x34, 0x9e, 0x8c, 0xd8, 0xf2, 0xef, 0x1a, 0xfc, 0x5, 0xd1, - 0x75, 0xe8, 0x65, 0x9f, 0x49, 0x51, 0xa4, 0xea, 0x7, 0x2c, - 0x2, 0x67, 0xc9, 0x73, 0xe8, 0x57, 0xb7, 0xd4, 0x7e, 0x46, - 0xbe, 0x72, 0xd6, 0x74, 0x6b, 0xcf, 0xf, 0xea, 0x73, 0xd8, - 0x5f, 0xc0, 0xd6, 0xf7, 0x50, 0xb6, 0xd7, 0x46, 0xfe, 0x63, - 0xd4, 0x1f, 0x5a, 0xfb, 0x7a, 0xbc, 0x83, 0xf6, 0x87, 0xf0, - 0x7c, 0x5a, 0x87, 0x87, 0xd3, 0x5e, 0x89, 0x31, 0x77, 0x64, - 0x55, 0x25, 0x61, 0xfc, 0x51, 0x31, 0xc7, 0x3f, 0x42, 0x47, - 0xe6, 0x6b, 0xe2, 0xf3, 0xcc, 0x9a, 0x94, 0xa8, 0xcb, 0x13, - 0x87, 0x8f, 0x2c, 0xa3, 0xab, 0x4b, 0x66, 0xba, 0xfc, 0xcf, - 0x23, 0x19, 0x85, 0x8b, 0x8b, 0xa9, 0x5, 0x66, 0x8f, 0x9c, - 0xe8, 0xa2, 0x8a, 0xfc, 0xd0, 0xf0, 0x42, 0x8a, 0x28, 0xa0, - 0xf, 0xa8, 0x7e, 0x5, 0x78, 0xd2, 0x4f, 0x14, 0x78, 0x54, - 0xd9, 0xdd, 0x3e, 0xfb, 0xcd, 0x34, 0xac, 0x25, 0x89, 0xe5, - 0xe3, 0xc7, 0xc8, 0x4f, 0xbf, 0x4, 0x7e, 0x15, 0xe9, 0x55, - 0xf2, 0xd7, 0xc0, 0x5d, 0x71, 0xf4, 0x9f, 0x88, 0x16, 0xd6, - 0xfb, 0xb1, 0xd, 0xfa, 0x34, 0xe, 0x3b, 0x67, 0x1b, 0x94, - 0xfe, 0x63, 0x1f, 0x8d, 0x7d, 0x4b, 0x5f, 0xb0, 0x64, 0x58, - 0xb7, 0x8b, 0xc1, 0x45, 0xc9, 0xeb, 0x1d, 0x1f, 0xcb, 0x6f, - 0xc0, 0xfa, 0x7c, 0x1d, 0x47, 0x52, 0x92, 0xbe, 0xeb, 0x40, - 0xaf, 0x9c, 0x7e, 0x3f, 0xf8, 0xf1, 0xf5, 0x6d, 0x67, 0xfb, - 0x2, 0xd2, 0x42, 0x2c, 0xac, 0x88, 0x33, 0xed, 0x3c, 0x49, - 0x2f, 0xa7, 0xd1, 0x7f, 0x9e, 0x7d, 0x2b, 0xe8, 0x6d, 0x42, - 0xf1, 0x34, 0xfb, 0xb, 0x9b, 0xa9, 0xe, 0x12, 0x8, 0x9a, - 0x46, 0xfa, 00, 0x4f, 0xf4, 0xaf, 0x88, 0xef, 0xef, 0x24, - 0xd4, 0x6f, 0xae, 0x2e, 0xe6, 0x39, 0x96, 0x79, 0x1a, 0x57, - 0x3e, 0xec, 0x72, 0x7f, 0x9d, 0x79, 0x9c, 0x4d, 0x8b, 0x95, - 0x1a, 0x11, 0xa1, 0x7, 0xf1, 0xef, 0xe8, 0x8e, 0x7c, 0xc2, - 0xab, 0x8c, 0x14, 0x17, 0x52, 0xa, 0x28, 0xa2, 0xbf, 0x32, - 0x3c, 00, 0xa2, 0x8a, 0x96, 0xd2, 0xdd, 0xae, 0xee, 0xa1, - 0x81, 0x8, 0xf, 0x2b, 0xac, 0x60, 0x9e, 0x99, 0x27, 0x14, - 0xd2, 0x6d, 0xd9, 0x1, 0x7f, 0x40, 0xf0, 0xc6, 0xab, 0xe2, - 0x8b, 0xaf, 0xb3, 0xe9, 0x76, 0x33, 0x5e, 0x48, 0x3e, 0xf7, - 0x96, 0xbf, 0x2a, 0xff, 00, 0xbc, 0xdd, 0x7, 0xe3, 0x5e, - 0x8d, 0xa7, 0x7e, 0xcd, 0xfe, 0x20, 0xb9, 0x40, 0xd7, 0x57, - 0xb6, 0x56, 0x79, 0xfe, 0x1d, 0xcd, 0x23, 0xf, 0xc8, 0x63, - 0xf5, 0xaf, 0x7a, 0xf0, 0xb7, 0x86, 0xac, 0xfc, 0x27, 0xa1, - 0xda, 0xe9, 0xb6, 0x51, 0x85, 0x8e, 0x25, 0x1, 0x9b, 0x1c, - 0xc8, 0xdd, 0xd8, 0xfb, 0x93, 0x5a, 0xf5, 0xfa, 0x5e, 0x13, - 0x86, 0x70, 0xf0, 0x82, 0x78, 0x96, 0xe5, 0x2f, 0xb9, 0x7f, - 0x99, 0xef, 0xd2, 0xcb, 0xe0, 0x95, 0xea, 0x6a, 0xcf, 0x2, - 0x5f, 0xd9, 0x8e, 0xeb, 0x1f, 0x36, 0xbf, 0x8, 0x3e, 0xd6, - 0xc4, 0xff, 00, 0xec, 0xd4, 0xd7, 0xfd, 0x98, 0xef, 00, - 0xf9, 0x35, 0xe8, 0x9, 0xff, 00, 0x6a, 0xd9, 0x87, 0xfe, - 0xcd, 0x5e, 0xff, 00, 0x45, 0x7a, 0x5f, 0xea, 0xfe, 0x5d, - 0xff, 00, 0x3e, 0xff, 00, 0x17, 0xfe, 0x67, 0x47, 0xd4, - 0xa8, 0x76, 0xfc, 0x59, 0xf3, 0x8d, 0xd7, 0xec, 0xd7, 0xaf, - 0x44, 0x9, 0x83, 0x51, 0xb0, 0x9f, 0xd9, 0x8b, 0xa1, 0xff, - 00, 0xd0, 0x4d, 0x73, 0x3a, 0xb7, 0xc1, 0x7f, 0x17, 0x69, - 0x21, 0x99, 0xb4, 0xa6, 0xba, 0x41, 0xfc, 0x56, 0x8e, 0x24, - 0xfd, 0x7, 0x3f, 0xa5, 0x7d, 0x69, 0x45, 0x73, 0x54, 0xe1, - 0xac, 0xc, 0xd7, 0xb9, 0x78, 0xfc, 0xff, 00, 0xcc, 0xce, - 0x59, 0x7d, 0x17, 0xb5, 0xd1, 0xf0, 0xe5, 0xee, 0x9d, 0x77, - 0xa6, 0xc9, 0xe5, 0xdd, 0xda, 0xcd, 0x6b, 0x27, 0xf7, 0x66, - 0x8c, 0xa1, 0xfc, 0x8d, 0x7a, 0x5f, 0xec, 0xed, 0xa3, 0xb, - 0xff, 00, 0x1b, 0xcb, 0x78, 0xe3, 0x2b, 0x63, 0x6e, 0xce, - 0xa7, 0xd1, 0x9b, 0xe5, 0x1f, 0xa1, 0x6a, 0xfa, 0x3e, 0xff, - 00, 0x4d, 0xb4, 0xd5, 0x6d, 0xda, 0xb, 0xcb, 0x68, 0xae, - 0xa1, 0x61, 0x83, 0x1c, 0xc8, 0x18, 0x1f, 0xc0, 0xd6, 0x4f, - 0x86, 0xfc, 0xd, 0xa3, 0x78, 0x46, 0xea, 0xf6, 0x7d, 0x26, - 0xd3, 0xec, 0x8d, 0x77, 0xb7, 0xcc, 0x55, 0x62, 0x57, 0xe5, - 0xce, 0x30, 0xf, 0x4e, 0xa7, 0xa5, 0x71, 0x61, 0xb8, 0x71, - 0xe1, 0x71, 0x74, 0xeb, 0x29, 0xa9, 0x45, 0x3b, 0xeb, 0xa3, - 0xf2, 0xfc, 0x4c, 0x69, 0xe0, 0x1d, 0x3a, 0x91, 0x95, 0xee, - 0x91, 0xbf, 0x45, 0x14, 0x57, 0xdc, 0x1e, 0xc0, 0x51, 0x45, - 0x14, 00, 0x57, 0x13, 0xf1, 0x6e, 0xe3, 0xc8, 0xf0, 0xa4, - 0xe3, 0xfb, 0xc0, 0xd7, 0x6d, 0x5e, 0x6b, 0xf1, 0xca, 0xe3, - 0xc9, 0xf0, 0xbb, 0xc, 0xe3, 0x2a, 0xd5, 0xc5, 0x8d, 0x97, - 0x2e, 0x1e, 0x6f, 0xc8, 0xe7, 0xc4, 0x3b, 0x52, 0x93, 0xf2, - 0x3e, 0x20, 0xf1, 0x4, 0xbe, 0x65, 0xfd, 0xd3, 0x7a, 0xb9, - 0xaf, 0x9e, 0xfe, 0x34, 0xc4, 0x75, 0x29, 0x6d, 0xec, 0x14, - 0xe0, 0xdd, 0x4f, 0x1c, 00, 0xff, 00, 0xbc, 0xc1, 0x7f, - 0xad, 0x7b, 0xe6, 0xae, 0xfb, 0xa5, 0x98, 0xfa, 0xb1, 0xaf, - 0x12, 0xf1, 0x1d, 0xa7, 0xf6, 0xd7, 0xc5, 0x2f, 0x6, 0xe9, - 0xa3, 0xfe, 0x5e, 0xb5, 0xdb, 0x18, 0x78, 0xf7, 0x9d, 0x5, - 0x7c, 0x1e, 0x4d, 0x1b, 0xd4, 0x47, 0xe2, 0xf4, 0xd7, 0xb4, - 0xcd, 0x28, 0xaf, 0xef, 0x1f, 0xb2, 0xba, 0x6c, 0x1f, 0x65, - 0xd3, 0xed, 0x61, 0xff, 00, 0x9e, 0x71, 0x2a, 0x7e, 0x40, - 0xa, 0x2a, 0xcd, 0x15, 0xfa, 0x49, 0xfb, 0x80, 0x51, 0x45, - 0x14, 00, 0x51, 0x45, 0x21, 0x21, 0x41, 0x24, 0xe0, 0xe, - 0x49, 0xa0, 0xf, 0x9d, 0x7f, 0x6b, 0xdf, 0x1a, 0x2d, 0xb6, - 0x93, 0xa6, 0x78, 0x5e, 0x16, 0x6, 0x5b, 0xa7, 0xfb, 0x5d, - 0xc0, 0xd, 0xc8, 0x45, 0x38, 0x50, 0x47, 0xbb, 0x64, 0xff, - 00, 0xc0, 0x6b, 0xc3, 0xbe, 0x10, 0xf8, 0x59, 0xbc, 0x59, - 0xe3, 0xad, 0x36, 0xcf, 0x69, 0x68, 0x84, 0x81, 0xdf, 0x3, - 0xb0, 0xe6, 0x9d, 0xf1, 0xa3, 0xc6, 0x63, 0xc7, 0x7f, 0x11, - 0xf5, 0x5d, 0x46, 0x27, 0xdf, 0x67, 0x1b, 0x7d, 0x9a, 0xd8, - 0x83, 0x91, 0xe5, 0xa7, 00, 0x8f, 0x62, 0x77, 0x37, 0xe3, - 0x5e, 0xd3, 0xfb, 0x25, 0xf8, 0x3f, 0xca, 0xb7, 0xbe, 0xd7, - 0x66, 0x8c, 0x65, 0x8f, 0x95, 0x13, 0x11, 0xf9, 0xd7, 0xe7, - 0x55, 0x3f, 0xe1, 0x4f, 0x33, 0x51, 0x5a, 0xc6, 0xff, 00, - 0x82, 0xff, 00, 0x3f, 0xd4, 0xfc, 0xe6, 0x2f, 0xfb, 0x53, - 0x35, 0x72, 0xde, 0x29, 0xfe, 0xb, 0xfc, 0xcf, 0xa3, 0x60, - 0x85, 0x6d, 0xe1, 0x8e, 0x24, 0x18, 0x44, 0x50, 0xa0, 0x7b, - 0xa, 0x92, 0x8a, 0x2b, 0xf4, 0x5d, 0x8f, 0xd1, 0x82, 0x8a, - 0x28, 0xa0, 0x2, 0xb3, 0x3c, 0x4d, 0xe2, 0x4d, 0x33, 0xc1, - 0xde, 0x1e, 0xd4, 0x75, 0xcd, 0x66, 0xf2, 0x2d, 0x3f, 0x4a, - 0xd3, 0xe0, 0x7b, 0x9b, 0xab, 0xa9, 0x9b, 0x6a, 0x45, 0x1a, - 0x8c, 0xb3, 0x13, 0xf4, 0x15, 0xa7, 0x5f, 0x1, 0xff, 00, - 0xc1, 0x62, 0x3e, 0x30, 0xc9, 0xe0, 0xdf, 0x81, 0x1a, 0x3f, - 0x82, 0x2c, 0xa7, 0x31, 0xde, 0x78, 0xae, 0xfb, 0xfd, 0x20, - 0x2b, 0x60, 0xfd, 0x92, 0xc, 0x3b, 0xf, 0xa1, 0x73, 0x10, - 0xfa, 0x3, 0x40, 0x1f, 0x9e, 0x9f, 0xb6, 0x97, 0xed, 0x9b, - 0xe2, 0x4f, 0xda, 0xaf, 0xc7, 0x93, 0xb7, 0x9f, 0x36, 0x9b, - 0xe0, 0x8b, 0x9, 0x5e, 0x3d, 0x2b, 0x47, 0x8e, 0x42, 0x11, - 0x90, 0x37, 0x13, 0xcc, 0x3a, 0x34, 0x8c, 00, 0x3c, 0xfd, - 0xde, 0x83, 0xb9, 0x3a, 0x7f, 0x7, 0xbf, 0xe0, 0x9b, 0x1f, - 0x1c, 0x7e, 0x32, 0x68, 0x56, 0xfa, 0xdd, 0x9e, 0x81, 0x6b, - 0xe1, 0xdd, 0x1e, 0xe6, 0x31, 0x35, 0xbd, 0xd7, 0x88, 0x2e, - 0x7e, 0xcc, 0x66, 0x43, 0xc8, 0x65, 0x8c, 0x6, 0x7c, 0x63, - 0x9c, 0x95, 00, 0xd6, 0x6f, 0xfc, 0x13, 0xbb, 0xe1, 0xbe, - 0x87, 0xf1, 0x4b, 0xf6, 0xb4, 0xf0, 0x66, 0x93, 0xe2, 0x25, - 0x82, 0x7d, 0x32, 0xdc, 0xcd, 0xa8, 0x1b, 0x4b, 0x90, 0xa, - 0x5d, 0x3c, 0x31, 0x97, 0x48, 0xf0, 0x7a, 0xfc, 0xc0, 0x36, - 0x3b, 0x85, 0x35, 0xfb, 0x39, 0xfb, 0x62, 0x7c, 0x66, 0xb7, - 0xf8, 0x5, 0xfb, 0x39, 0x78, 0xc3, 0xc5, 0x2, 0x45, 0x86, - 0xf9, 0x2c, 0xcd, 0x96, 0x9a, 0x83, 0x8d, 0xd7, 0x52, 0x8d, - 0x91, 00, 0x3d, 0x89, 0xdd, 0xf4, 0x53, 0x4c, 0x84, 0xaf, - 0xab, 0x3f, 0x9e, 0x6f, 0x16, 0x78, 0x7d, 0xbc, 0x27, 0xe2, - 0x7d, 0x5b, 0x45, 0x7b, 0xcb, 0x6d, 0x41, 0xf4, 0xeb, 0xa9, - 0x2d, 0x5a, 0xea, 0xcd, 0x8b, 0x43, 0x29, 0x46, 0x2a, 0x59, - 0x9, 00, 0x95, 0x24, 0x70, 0x70, 0x2b, 0xf7, 0xe7, 0xf6, - 0x3, 0xf8, 0x22, 0x3e, 0x5, 0x7e, 0xcc, 0x3e, 0x14, 0xd2, - 0x67, 0x8b, 0xcb, 0xd6, 0x35, 0x38, 0xbf, 0xb6, 0x35, 0x1c, - 0x8f, 0x9b, 0xce, 0x9c, 0x6, 0xda, 0x7f, 0xdd, 0x4d, 0x89, - 0xff, 00, 0x1, 0xaf, 0xc5, 0x9f, 0xd8, 0xf3, 0xe0, 0xb4, - 0xbf, 0xb4, 0xf, 0xed, 0x17, 0xe1, 0xf, 0xa, 0x3a, 0x79, - 0xb6, 0x12, 0x5d, 0xb, 0xdd, 0x49, 0x98, 0x64, 0xb, 0x58, - 0xbf, 0x79, 0x2e, 0x7f, 0xde, 00, 0x27, 0xd5, 0xc5, 0x7e, - 0xd9, 0xfe, 0xd9, 0x7f, 0xb4, 0x8e, 0x8d, 0xfb, 0x30, 0x7c, - 0xf, 0xd5, 0xf5, 0x56, 0xbb, 0x82, 0x1f, 0x11, 0x5d, 0x5b, - 0x3d, 0x9e, 0x83, 0xa7, 0xe4, 0x6f, 0x9a, 0xe0, 0xae, 0xd5, - 0x60, 0xbd, 0x76, 0x26, 0x43, 0x31, 0xec, 0x6, 0x3a, 0x91, - 0x43, 0x5, 0xdc, 0xfc, 0x4a, 0xfd, 0xb3, 0x75, 0xfb, 0x5f, - 0x13, 0x7e, 0xd5, 0x7f, 0x14, 0xf5, 0x1b, 0x26, 0x57, 0xb5, - 0x93, 0x5e, 0xb9, 0x44, 0x74, 0xe8, 0xdb, 0x1b, 0x61, 0x3f, - 0x89, 0x52, 0x6b, 0xf5, 0x7f, 0xfe, 0x9, 0x19, 0xa1, 0x49, - 0xa4, 0xfe, 0xc8, 0x36, 0x77, 0x72, 0x2e, 0xdf, 0xed, 0x3d, - 0x66, 0xf6, 0xe5, 0x33, 0xdd, 0x43, 0x2c, 0x59, 0xfc, 0xe3, - 0x6a, 0xfc, 0x50, 0xd1, 0xf4, 0x9d, 0x57, 0xc7, 0x5e, 0x2a, - 0xb3, 0xd3, 0x6c, 0xd2, 0x4d, 0x43, 0x5a, 0xd5, 0xef, 0x12, - 0x8, 0x97, 0xab, 0xcd, 0x3c, 0xaf, 0x81, 0xf8, 0x96, 0x6a, - 0xfe, 0x91, 0x3e, 0x2, 0xfc, 0x2c, 0xb5, 0xf8, 0x27, 0xf0, - 0x73, 0xc2, 0x3e, 0x8, 0xb4, 0xda, 0x53, 0x46, 0xd3, 0xe3, - 0xb7, 0x92, 0x45, 0x1c, 0x49, 0x2e, 0x37, 0x4a, 0xff, 00, - 0xf0, 0x27, 0x2c, 0x7f, 0x1a, 0x18, 0x2d, 0xee, 0x77, 0x53, - 0xcc, 0x96, 0xd0, 0xc9, 0x34, 0x8c, 0x12, 0x38, 0xd4, 0xb3, - 0x31, 0xe8, 00, 0x19, 0x26, 0xbe, 0x2c, 0xf1, 0x46, 0xb5, - 0x27, 0x88, 0xfc, 0x45, 0xa8, 0xea, 0x52, 0x12, 0x4d, 0xcc, - 0xed, 0x20, 0xcf, 0x65, 0xcf, 0xca, 0x3f, 0x1, 0x81, 0x5f, - 0x4a, 0xfc, 0x73, 0xf1, 0x11, 0xd0, 0x7c, 0x3, 0x75, 0x1c, - 0x6f, 0xb2, 0xe2, 0xf9, 0x85, 0xaa, 0x63, 0xae, 0xf, 0x2f, - 0xff, 00, 0x8e, 0x82, 0x3f, 0x1a, 0xf9, 0x5a, 0xbf, 0x38, - 0xe2, 0x8c, 0x4f, 0x35, 0x48, 0x61, 0x97, 0x4d, 0x5f, 0xcf, - 0x6f, 0xeb, 0xcc, 0xf1, 0x33, 0x1a, 0x97, 0x92, 0xa6, 0xba, - 0x5, 0x14, 0x51, 0x5f, 0xa, 0x79, 0x1, 0x45, 0x14, 0x50, - 0x1, 0x46, 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa2, 0x80, 0xa, - 0x7c, 0x10, 0x49, 0x73, 0x32, 0xc5, 0xc, 0x6f, 0x2c, 0xae, - 0x70, 0xa8, 0x8a, 0x59, 0x89, 0xf6, 0x2, 0xb4, 0x3c, 0x3f, - 0xa9, 0xd9, 0xe9, 0x5a, 0x82, 0xcd, 0x7d, 0xa5, 0xc3, 0xab, - 0x5b, 0xff, 00, 0x14, 0x12, 0xc8, 0xc9, 0xf9, 0x15, 0x3d, - 0x7e, 0xb9, 0xaf, 0xa9, 0xbe, 0x1a, 0x5c, 0xf8, 0x5f, 0x58, - 0xd1, 0x56, 0xff, 00, 0xc3, 0xda, 0x7d, 0xbd, 0x90, 0xce, - 0xc9, 0x63, 0x58, 0x82, 0xc9, 0x1b, 0xe3, 0xee, 0xb1, 0xea, - 0x7e, 0xb9, 0xe6, 0xbd, 0xdc, 0xb3, 0x2c, 0x8e, 0x63, 0x2e, - 0x5f, 0x6a, 0xa2, 0xfb, 0x6b, 0x7f, 0xf2, 0xfc, 0x4e, 0xbc, - 0x3e, 0x1d, 0x57, 0x76, 0xe6, 0xb1, 0xe2, 0xbe, 0x9, 0xf8, - 0xd, 0xad, 0x78, 0x86, 0x54, 0x9b, 0x55, 0x56, 0xd1, 0xec, - 0x3a, 0x9f, 0x30, 0x7e, 0xf9, 0xc7, 0xa0, 0x5e, 0xdf, 0x53, - 0xf9, 0x1a, 0xfa, 0x1f, 0xc3, 0x5e, 0x18, 0xd3, 0xbc, 0x25, - 0xa5, 0xc7, 0x61, 0xa6, 0xc0, 0x20, 0x81, 0x79, 0x27, 0xab, - 0x39, 0xee, 0xcc, 0x7b, 0x9a, 0xd5, 0xa2, 0xbf, 0x4b, 0xc0, - 0x65, 0x58, 0x6c, 0xbd, 0x5e, 0x92, 0xbc, 0xbb, 0xbd, 0xff, - 00, 0xe0, 0x1f, 0x41, 0x47, 0xd, 0x4e, 0x87, 0xc3, 0xbf, - 0x70, 0xa2, 0x8a, 0x2b, 0xd8, 0x3a, 0x82, 0x8a, 0x28, 0xa0, - 0x2, 0xb1, 0x3c, 0x69, 0xac, 0xaf, 0x87, 0xbc, 0x27, 0xaa, - 0xea, 0x5, 0xb6, 0x98, 0x2d, 0xdc, 0xa7, 0xfb, 0xe4, 0x61, - 0x47, 0xe6, 0x45, 0x6d, 0xd7, 0x91, 0xfe, 0xd1, 0xfa, 0xd9, - 0xb2, 0xf0, 0xa5, 0x9e, 0x9c, 0x8d, 0x87, 0xbd, 0xb8, 0xcb, - 0xf, 0x54, 0x41, 0x93, 0xff, 00, 0x8f, 0x15, 0xaf, 0x3f, - 0x30, 0xaf, 0xf5, 0x5c, 0x2d, 0x4a, 0xdd, 0x97, 0xe3, 0xd3, - 0xf1, 0x30, 0xaf, 0x3f, 0x67, 0x4e, 0x52, 0x3e, 0x70, 0x24, - 0x93, 0x93, 0xc9, 0xa2, 0x8a, 0x2b, 0xf0, 0xf3, 0xe4, 0x42, - 0x8a, 0x29, 0x42, 0x96, 0x20, 0x1, 0x92, 0x78, 0x2, 0x80, - 0x3e, 0x93, 0xfd, 0x9c, 0xf4, 0x71, 0x65, 0xe0, 0xcb, 0x8b, - 0xe6, 0x5c, 0x49, 0x7b, 0x72, 0xc4, 0x1f, 0xf6, 0x13, 0xe5, - 0x1f, 0xae, 0xea, 0xf5, 0x7a, 0xc4, 0xf0, 0x5e, 0x88, 0x3c, - 0x39, 0xe1, 0x4d, 0x2f, 0x4e, 00, 0x6, 0x82, 0x5, 0xf, - 0x8e, 0xec, 0x79, 0x63, 0xf9, 0x93, 0x5b, 0x75, 0xfb, 0x8e, - 0x2, 0x87, 0xd5, 0xb0, 0xb4, 0xe9, 0x76, 0x4b, 0xef, 0xeb, - 0xf8, 0x9f, 0x5d, 0x42, 0x1e, 0xce, 0x9c, 0x62, 0x14, 0x51, - 0x45, 0x77, 0x9b, 0x85, 0x79, 0x1f, 0xed, 0x15, 0xe2, 0x86, - 0xd3, 0x3c, 0x35, 0x6d, 0xa4, 0x42, 0xfb, 0x65, 0xd4, 0x1f, - 0x32, 0x1, 0xd7, 0xca, 0x5c, 0x13, 0xf9, 0x9c, 0x7e, 0x46, - 0xbd, 0x72, 0xbe, 0x51, 0xf8, 0xdd, 0xae, 0xb6, 0xb7, 0xf1, - 0xb, 0x50, 0x4d, 0xdb, 0xa1, 0xb3, 0xc5, 0xac, 0x63, 0x3d, - 0x36, 0x8f, 0x9b, 0xff, 00, 0x1e, 0x2d, 0x5f, 0x37, 0x9f, - 0xe2, 0x9e, 0x1b, 0x5, 0x25, 0x1d, 0xe5, 0xa7, 0xf9, 0xfe, - 0x7, 0x6, 0x36, 0xa7, 0x25, 0x16, 0x97, 0x5d, 0xe, 0xa, - 0x8a, 0x28, 0xaf, 0xc8, 0xcf, 0x99, 0xa, 0x28, 0xa9, 0x2d, - 0xe0, 0x7b, 0xab, 0x88, 0xa1, 0x88, 0x6e, 0x92, 0x46, 0x8, - 0xab, 0xea, 0x49, 0xc0, 0x14, 0xd2, 0xbe, 0x88, 0xf, 0x79, - 0xfd, 0x9c, 0xfc, 0x18, 0xb1, 0x5a, 0x5c, 0x78, 0x92, 0xe1, - 0x33, 0x24, 0xa5, 0xa0, 0xb6, 0xc8, 0xe8, 0xa3, 0xef, 0x30, - 0xfa, 0x9e, 0x3f, 0x3, 0xeb, 0x5e, 0xdd, 0x59, 0xbe, 0x1b, - 0xd1, 0x62, 0xf0, 0xee, 0x83, 0x61, 0xa6, 0xc2, 00, 0x4b, - 0x68, 0x56, 0x3c, 0x8e, 0xe4, 0xe, 0x4f, 0xe2, 0x72, 0x7f, - 0x1a, 0xd2, 0xaf, 0xdb, 0xb2, 0xfc, 0x2a, 0xc1, 0x61, 0xa1, - 0x45, 0x6e, 0x96, 0xbe, 0xbd, 0x4f, 0xae, 0xa1, 0x4d, 0x52, - 0xa6, 0xa2, 0x14, 0x51, 0x45, 0x7a, 0x26, 0xe1, 0x45, 0x14, - 0x50, 0x1, 0x59, 0x1e, 0x2e, 0xd3, 0xd7, 0x56, 0xf0, 0xb6, - 0xad, 0x66, 0xe3, 0x2b, 0x35, 0xac, 0x8b, 0xf8, 0xed, 0x38, - 0xfd, 0x6b, 0x5e, 0xaa, 0x6a, 0xf2, 0x88, 0x34, 0x9b, 0xd9, - 0x1b, 0xee, 0xa4, 0xe, 0xc7, 0xf0, 0x53, 0x59, 0xd5, 0x4a, - 0x50, 0x92, 0x7b, 0x59, 0x93, 0x25, 0x78, 0xb4, 0xcf, 0x87, - 0xe8, 0xa2, 0x8a, 0xfc, 0xc, 0xf8, 0xc0, 0xa2, 0x8a, 0x28, - 0x3, 0x7b, 0xc0, 0x57, 0x26, 0xd3, 0xc6, 0xda, 0x14, 0xa0, - 0xe3, 0x17, 0xb0, 0x8f, 0xc0, 0xb8, 0x7, 0xf9, 0xd7, 0xd9, - 0xb5, 0xf1, 0x67, 0x83, 0x62, 0x33, 0x78, 0xbb, 0x44, 0x45, - 0xea, 0xd7, 0xb0, 0x8f, 0xfc, 0x7c, 0x57, 0xda, 0x75, 0xfa, - 0x47, 0xa, 0xb7, 0xec, 0x6a, 0xae, 0x97, 0x5f, 0x91, 0xee, - 0xe5, 0xbf, 0xc, 0x8c, 0x3f, 0x1c, 0x86, 0x6f, 0x5, 0xeb, - 0xa1, 0x33, 0xbb, 0xec, 0x33, 0x63, 0x1f, 0xee, 0x1a, 0xf8, - 0xc2, 0xbe, 0xe6, 0xb9, 0xb7, 0x4b, 0xbb, 0x69, 0x60, 0x90, - 0x6e, 0x8e, 0x54, 0x28, 0xc0, 0xf7, 0x4, 0x60, 0xd7, 0xc5, - 0x9e, 0x25, 0xd0, 0xa7, 0xf0, 0xd6, 0xbd, 0x7d, 0xa6, 0x5c, - 0x29, 0x59, 0x2d, 0xe5, 0x28, 0x9, 0x1f, 0x79, 0x7f, 0x85, - 0xbf, 0x11, 0x83, 0xf8, 0xd7, 0x37, 0x15, 0x52, 0x95, 0xe9, - 0x55, 0xe9, 0xaa, 0x23, 0x32, 0x8b, 0xbc, 0x64, 0x66, 0x51, - 0x45, 0x15, 0xf0, 0x7, 0x8a, 0x14, 0xaa, 0xc5, 0x18, 0x32, - 0x92, 0x18, 0x1c, 0x82, 0x3b, 0x52, 0x51, 0x40, 0x1f, 0x49, - 0xfc, 0x39, 0xf8, 0xe5, 0xa6, 0x6b, 0x16, 0x30, 0x59, 0x6b, - 0x93, 0xae, 0x9f, 0xa9, 0x46, 0xa1, 0xc, 0xf2, 0x9c, 0x45, - 0x37, 0x6c, 0xe7, 0xf8, 0x4f, 0xa8, 0x3f, 0x85, 0x7a, 0xac, - 0x53, 0x47, 0x3c, 0x6b, 0x24, 0x4e, 0xb2, 0x46, 0xc3, 0x21, - 0x90, 0xe4, 0x11, 0xf5, 0xaf, 0x85, 0xeb, 0x63, 0x43, 0xf1, - 0x86, 0xb7, 0xe1, 0xa3, 0xff, 00, 0x12, 0xcd, 0x4e, 0xe6, - 0xd1, 0x7f, 0xe7, 0x9a, 0x3e, 0x50, 0xff, 00, 0xc0, 0x4f, - 0x1f, 0xa5, 0x7d, 0xbe, 0xb, 0x89, 0xaa, 0x52, 0x8a, 0x86, - 0x26, 0x3c, 0xd6, 0xea, 0xb7, 0xff, 00, 0x83, 0xf8, 0x1e, - 0xbd, 0x2c, 0xc2, 0x51, 0x56, 0xa8, 0xae, 0x7d, 0xa7, 0x45, - 0x7c, 0xdf, 0xa0, 0xfe, 0xd1, 0xda, 0xed, 0x8e, 0xd4, 0xd4, - 0xed, 0x2d, 0xf5, 0x38, 0xc7, 0x56, 0x5f, 0xdd, 0x49, 0xf9, - 0x8c, 0x8f, 0xd2, 0xbb, 0xed, 0x13, 0xf6, 0x87, 0xf0, 0xd6, - 0xa4, 0xc1, 0x2f, 0x52, 0xe7, 0x4b, 0x73, 0xfc, 0x52, 0xa6, - 0xf4, 0xfc, 0xd7, 0x27, 0xf3, 0x15, 0xf5, 0x74, 0x33, 0xcc, - 0x5, 0x7f, 0xf9, 0x79, 0xca, 0xfc, 0xf4, 0xff, 00, 0x81, - 0xf8, 0x9e, 0x8c, 0x31, 0x94, 0x67, 0xd6, 0xde, 0xa7, 0xa9, - 0x51, 0x59, 0xba, 0x3f, 0x89, 0x34, 0xaf, 0x10, 0x45, 0xe6, - 0x69, 0xba, 0x85, 0xbd, 0xea, 0xf7, 0xf2, 0x64, 0xc, 0x47, - 0xd4, 0x75, 0x15, 0xa5, 0x5e, 0xe4, 0x65, 0x19, 0xae, 0x68, - 0xbb, 0xa3, 0xb1, 0x34, 0xd5, 0xd0, 0x51, 0x45, 0x15, 0x43, - 0xa, 0x28, 0xa2, 0x80, 0xa, 0x28, 0xa2, 0x80, 0xa, 0xf2, - 0xf, 0xda, 0x1e, 0xeb, 0xca, 0xd0, 0x36, 0xe7, 0xfe, 0x59, - 0x9a, 0xf5, 0xfa, 0xf0, 0x6f, 0xda, 0x5e, 0xf8, 0x47, 0x61, - 0xe5, 0x67, 0x91, 0x1d, 0x79, 0x19, 0xb4, 0xb9, 0x30, 0x75, - 0x1f, 0x91, 0xc1, 0x8e, 0x97, 0x2e, 0x1e, 0x4c, 0xf9, 0x7, - 0x53, 0x6f, 0x95, 0xcf, 0xb9, 0xaf, 0x34, 0xf0, 0x2d, 0x92, - 0xeb, 0x9f, 0xb5, 0x7, 0xc3, 0x3b, 0x26, 0x1b, 0x81, 0xd7, - 0xad, 0xe4, 0xc7, 0xfb, 0x84, 0xbf, 0xfe, 0xcb, 0x5e, 0x8d, - 0xaa, 0x36, 0x22, 0x63, 0xec, 0x6b, 0x94, 0xfd, 0x9b, 0xec, - 0xff, 00, 0xb6, 0x3f, 0x6c, 0xbf, 0x87, 0xf1, 0xe3, 0x70, - 0x86, 0x7b, 0x9b, 0x93, 0xed, 0xb2, 0xda, 0x53, 0x9f, 0xcf, - 0x15, 0xf2, 0xd9, 0x24, 0x7d, 0xf3, 0xf2, 0x3c, 0xb1, 0x7b, - 0x4c, 0xe2, 0x97, 0x95, 0xd9, 0xfa, 0xcf, 0x45, 0x14, 0x57, - 0xe8, 0x7, 0xed, 0x61, 0x45, 0x14, 0x50, 0x1, 0x5c, 0x3f, - 0xc6, 0x8f, 0x18, 0xf, 0x4, 0x7c, 0x37, 0xd6, 0x35, 0x5, - 0x62, 0xb7, 0xf, 0x17, 0xd9, 0xad, 0xf6, 0xf5, 0xf3, 0x1f, - 0xe5, 0x53, 0xf8, 0x64, 0x9f, 0xc2, 0xbb, 0x8a, 0xf9, 0x5f, - 0xf6, 0xbf, 0xf1, 0x87, 0xda, 0xb5, 0x6d, 0x2b, 0xc3, 0x31, - 0x1f, 0x92, 0xd9, 0x3e, 0xd9, 0x39, 0xe7, 0xef, 0x36, 0x42, - 0x8f, 0xcb, 0x27, 0xf1, 0xaf, 0x37, 0x31, 0xc4, 0x7d, 0x5b, - 0xd, 0x39, 0xf5, 0xd9, 0x7a, 0xb3, 0xca, 0xcd, 0x31, 0x3f, - 0x54, 0xc2, 0x4e, 0xa2, 0xdf, 0x65, 0xea, 0xff, 00, 0xab, - 0x9f, 0x3e, 0x58, 0x5a, 0xbd, 0xe5, 0xd4, 0x30, 0x46, 0x37, - 0x3b, 0xb0, 0x50, 0x7, 0xa9, 0xaf, 0xd0, 0x3f, 0x86, 0x9e, - 0x19, 0x8f, 0xc2, 0x7e, 0xc, 0xd3, 0x6c, 0x11, 0x2, 0xb8, - 0x88, 0x34, 0x9e, 0xec, 0x47, 0x35, 0xf2, 0x27, 0xec, 0xf7, - 0xe1, 0x13, 0xe2, 0x9f, 0x1f, 0x5a, 0x97, 0x5c, 0xdb, 0xdb, - 0x7e, 0xf5, 0xcf, 0xd3, 0xa5, 0x7d, 0xc4, 0xa0, 0x28, 00, - 0x70, 0x7, 0x15, 0xf3, 0xdc, 0x3d, 0x87, 0xd2, 0x78, 0x87, - 0xe8, 0xbf, 0x53, 0xc2, 0xe1, 0xcc, 0x37, 0x25, 0x39, 0x57, - 0x7d, 0x74, 0x42, 0xd1, 0x45, 0x15, 0xf6, 0x67, 0xd9, 0x5, - 0x14, 0x51, 0x40, 0x5, 0x7e, 0x55, 0x7f, 0xc1, 0x6d, 0x3c, - 0x2b, 0xa8, 0x36, 0xa3, 0xf0, 0xc7, 0xc4, 0x81, 0x19, 0xb4, - 0xa5, 0x8a, 0xef, 0x4f, 0x67, 0x1d, 0x12, 0x62, 0x52, 0x40, - 0xf, 0xd5, 0x43, 0x7f, 0xdf, 0x26, 0xbf, 0x52, 0xb5, 0x4d, - 0x5e, 0xc7, 0x43, 0xb3, 0x6b, 0xbd, 0x46, 0xf6, 0xde, 0xc2, - 0xd5, 0x48, 0x56, 0x9e, 0xea, 0x55, 0x8d, 0x1, 0x27, 00, - 0x16, 0x62, 0x7, 0x24, 0x81, 0x5e, 0x73, 0xf1, 0xc7, 0xe1, - 0xf, 0x82, 0xff, 00, 0x69, 0xef, 0x86, 0x1a, 0x8f, 0x83, - 0x35, 0xeb, 0x98, 0xee, 0xf4, 0xeb, 0xbd, 0xb2, 0xc5, 0x73, - 0x63, 0x3a, 0x99, 0x6d, 0xa6, 0x5e, 0x52, 0x54, 0x23, 0x3c, - 0x83, 0xdb, 0xa1, 0x4, 0x83, 0xc1, 0xa0, 0x4f, 0x53, 0xf9, - 0xcd, 0xf0, 0xaf, 0x8a, 0xb5, 0x8f, 0x3, 0xf8, 0x8b, 0x4f, - 0xd7, 0xb4, 0xd, 0x46, 0xe3, 0x49, 0xd6, 0x74, 0xf9, 0x44, - 0xf6, 0xb7, 0xb6, 0xaf, 0xb6, 0x48, 0x9c, 0x74, 0x20, 0xfe, - 0x9e, 0xe0, 0x90, 0x6b, 0xd8, 0x7e, 0x39, 0x7e, 0xda, 0xdf, - 0x14, 0xbf, 0x68, 0xbf, 0x1, 0x68, 0xfe, 0x13, 0xf1, 0xce, - 0xa9, 0x69, 0xa9, 0x58, 0x69, 0x97, 0x42, 0xf1, 0x27, 0x86, - 0xd1, 0x60, 0x9a, 0x69, 0x2, 0x32, 0x3, 0x29, 0x5c, 0x2b, - 0x60, 0x33, 0x74, 0x51, 0xc9, 0xaf, 0x44, 0xf8, 0xd9, 0xff, - 00, 0x4, 0xbf, 0xf8, 0xd9, 0xf0, 0xa2, 0xfa, 0xea, 0x5d, - 0x27, 0x44, 0x1e, 0x39, 0xd0, 0x91, 0xd8, 0xc5, 0x7d, 0xa1, - 0xb6, 0xf9, 0x76, 0x67, 0x82, 0xf0, 0x1c, 0x38, 0x6c, 0x76, - 0x50, 0xc3, 0xde, 0xbe, 0x79, 0xb8, 0xf8, 0x25, 0xf1, 0x12, - 0xd2, 0xe4, 0xdb, 0xcd, 0xe0, 0x3f, 0x12, 0xc5, 0x38, 0x38, - 0xf2, 0xdb, 0x48, 0xb8, 0xd, 0x9f, 0xa6, 0xca, 0xa2, 0x35, - 0x3a, 0x5f, 0xd9, 0xdb, 0xf6, 0x95, 0xf1, 0x47, 0xec, 0xc5, - 0xe2, 0xd, 0x5f, 0x5f, 0xf0, 0x7d, 0xa6, 0x96, 0xfa, 0xe5, - 0xfd, 0x9f, 0xd8, 0x56, 0xf7, 0x51, 0xb7, 0x33, 0x1b, 0x68, - 0xcb, 0x6, 0x6f, 0x2c, 0x6e, 0x3, 0x2c, 0x55, 0x73, 0x9c, - 0xfd, 0xd1, 0x5c, 0xdf, 0xc5, 0x9f, 0x8d, 0x1e, 0x35, 0xf8, - 0xe5, 0xe2, 0x63, 0xaf, 0xf8, 0xe3, 0xc4, 0x37, 0x7e, 0x20, - 0xd4, 0x82, 0x94, 0x8d, 0xee, 0x8, 0x9, 0xa, 0x67, 0x3b, - 0x23, 0x45, 0x1, 0x51, 0x7d, 0x94, 0xa, 0xf4, 0xdf, 0x86, - 0x7f, 0xb0, 0x3f, 0xc7, 0x6f, 0x8a, 0x97, 0x31, 0x2e, 0x99, - 0xe0, 0xd, 0x47, 0x4c, 0xb5, 0x7e, 0xb7, 0xba, 0xda, 0xfd, - 0x86, 0x15, 0x1e, 0xa7, 0xcc, 0xc3, 0x1f, 0xc1, 0x4d, 0x7e, - 0x8b, 0xfe, 0xc9, 0xff, 00, 0xf0, 0x4a, 0xf, 0xb, 0xfc, - 0x27, 0xbd, 0xb2, 0xf1, 0x37, 0xc4, 0xbb, 0xb8, 0x3c, 0x65, - 0xe2, 0x6b, 0x79, 0x16, 0x6b, 0x7d, 0x3e, 0x10, 0x46, 0x9d, - 0x6a, 0xe3, 0x90, 0x48, 0x60, 0xc, 0xcc, 0xf, 0x76, 0x1, - 0x78, 0x1f, 0x2f, 0x7a, 0x2, 0xcc, 0xf3, 0xaf, 0xf8, 0x25, - 0x8f, 0xec, 0x3b, 0x79, 0xa4, 0xdd, 0xda, 0xfc, 0x65, 0xf1, - 0xde, 0x9b, 0xf6, 0x79, 0xc, 0x64, 0xf8, 0x73, 0x4d, 0xba, - 0x8c, 0x89, 0x13, 0x3c, 0x1b, 0xb7, 0x53, 0xd3, 0x23, 0x21, - 0x7, 0x5e, 0x4b, 0x7a, 0x57, 0xea, 0x25, 0x22, 0xa8, 0x45, - 0xa, 0xa0, 0x2a, 0x81, 0x80, 00, 0xc0, 0x2, 0xa2, 0xbc, - 0xbb, 0x8e, 0xc6, 0xd2, 0x6b, 0x99, 0x9b, 0x64, 0x30, 0xa1, - 0x91, 0xd8, 0xf6, 00, 0x64, 0xd4, 0xb7, 0x6d, 0x59, 0x7b, - 0x23, 0xe7, 0x5f, 0xda, 0x33, 0xc4, 0x23, 0x50, 0xf1, 0x4d, - 0xae, 0x97, 0x1b, 0xe6, 0x3b, 0x8, 0xb2, 0xe0, 0x1e, 0x3c, - 0xc7, 0xe4, 0xff, 00, 0xe3, 0xa1, 0x7f, 0x3a, 0xf2, 0x4a, - 0xbf, 0xaf, 0x6a, 0xb2, 0x6b, 0xba, 0xd5, 0xf6, 0xa1, 0x29, - 0x26, 0x4b, 0x99, 0x9e, 0x53, 0x9e, 0xd9, 0x39, 0x3, 0xf0, - 0x1c, 0x55, 0xa, 0xfc, 0x3b, 0x1f, 0x89, 0x78, 0xbc, 0x4c, - 0xeb, 0x77, 0x7f, 0x87, 0x4f, 0xc0, 0xf9, 0x1a, 0xd5, 0x3d, - 0xad, 0x47, 0x3e, 0xe1, 0x45, 0x14, 0x57, 0x1, 0x89, 0xdd, - 0x7c, 0x28, 0xf8, 0x72, 0x9f, 0x10, 0xf5, 0x4b, 0xc8, 0xae, - 0x66, 0x96, 0xda, 0xce, 0xda, 0x20, 0xcd, 0x24, 0x20, 0x67, - 0x79, 0x3f, 0x28, 0xe4, 0x63, 0xb3, 0x7e, 0x55, 0xe8, 0xf3, - 0x7e, 0xcc, 0x96, 0x4, 0x1f, 0x27, 0x5c, 0xb9, 0x43, 0xdb, - 0x7c, 0x2a, 0xdf, 0xc8, 0x8a, 0xde, 0xf8, 0x1, 0xe1, 0xd6, - 0xd1, 0xbc, 0xe, 0x2e, 0xe5, 0x5d, 0xb3, 0x6a, 0x32, 0x99, - 0xf9, 0xeb, 0xb0, 0x70, 0xbf, 0xc8, 0x9f, 0xc6, 0xbd, 0x32, - 0xbf, 0x50, 0xcb, 0x32, 0x5c, 0x2c, 0xf0, 0x70, 0x96, 0x22, - 0x9d, 0xe4, 0xf5, 0xeb, 0xd7, 0x6f, 0xc0, 0xfa, 0x1c, 0x3e, - 0x12, 0x9b, 0xa4, 0x9c, 0xd6, 0xac, 0xf9, 0xa7, 0xc5, 0x1f, - 0xb3, 0xd6, 0xb7, 0xa2, 0x59, 0xc9, 0x75, 0xa7, 0xdc, 0xc7, - 0xab, 0xa4, 0x63, 0x2d, 0x14, 0x68, 0x52, 0x5c, 0x7b, 0x2e, - 0x48, 0x3f, 0x9e, 0x6b, 0xca, 0xd9, 0x4a, 0xb1, 0x56, 0x4, - 0x10, 0x70, 0x41, 0xea, 0x2b, 0xee, 0xaa, 0xf9, 0x77, 0xe3, - 0xd7, 0x85, 0xe2, 0xf0, 0xff, 00, 0x8d, 0x3e, 0xd3, 0x6c, - 0x81, 0x20, 0xd4, 0x63, 0xfb, 0x41, 0x51, 0xd0, 0x49, 0x92, - 0x1f, 0x1f, 0xa1, 0xfc, 0x6b, 0xc5, 0xcf, 0x32, 0x5a, 0x58, - 0x3a, 0x4b, 0x11, 0x87, 0xd1, 0x6c, 0xd6, 0xff, 00, 0x33, - 0x93, 0x17, 0x84, 0x8d, 0x28, 0xf3, 0xc3, 0x63, 0xcd, 0xa8, - 0xa2, 0x8a, 0xf8, 0x93, 0xc9, 0xa, 0xf5, 0xdf, 0xd9, 0xbf, - 0x5b, 0x7b, 0x5f, 0x14, 0xde, 0xe9, 0x85, 0xbf, 0x73, 0x77, - 0x6f, 0xe6, 0x5, 0xff, 00, 0x6d, 0xf, 0x1f, 0xa1, 0x6a, - 0xf2, 0x2a, 0xed, 0xbe, 0xc, 0x5d, 0x7d, 0x93, 0xe2, 0x5e, - 0x8a, 0x73, 0x80, 0xee, 0xf1, 0x9f, 0xc5, 0x18, 0xf, 0xd7, - 0x15, 0xea, 0x65, 0x75, 0x5d, 0x1c, 0x6d, 0x29, 0x2e, 0xe9, - 0x7d, 0xfa, 0x1d, 0x18, 0x79, 0x72, 0xd6, 0x8b, 0xf3, 0x3e, - 0xb5, 0xa2, 0x8a, 0x2b, 0xf6, 0xc3, 0xeb, 0x42, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0xbe, 0x61, 0xfd, 0xa0, - 0xb5, 0xef, 0xed, 0x5f, 0x1d, 0x1b, 0x35, 0x6c, 0xc5, 0xa7, - 0xc2, 0xb1, 0x63, 0xfd, 0xb6, 0xf9, 0x9b, 0xf9, 0xa8, 0xfc, - 0x2b, 0xe9, 0xa9, 0xe7, 0x4b, 0x68, 0x24, 0x9a, 0x43, 0xb6, - 0x38, 0xd4, 0xbb, 0x13, 0xd8, 0x1, 0x93, 0x5f, 0x14, 0xf8, - 0x8f, 0x57, 0x6d, 0x7b, 0x5e, 0xd4, 0x35, 0x17, 0xce, 0x6e, - 0xa7, 0x79, 0x70, 0x7b, 0x2, 0x78, 0x1f, 0x96, 0x2b, 0xe3, - 0x38, 0x9f, 0x11, 0xc9, 0x86, 0x85, 0x15, 0xf6, 0x9f, 0xe0, - 0xbf, 0xe0, 0xd8, 0xf2, 0x73, 0x19, 0xda, 0xa, 0x1d, 0xcc, - 0xea, 0x28, 0xa2, 0xbf, 0x32, 0x3c, 00, 0xae, 0x8f, 0xe1, - 0xd6, 0x8c, 0x75, 0xff, 00, 0x1b, 0xe8, 0xd6, 0x7b, 0x77, - 0x23, 0x5c, 0x2b, 0xb8, 0xc7, 0xf0, 0x2f, 0xcc, 0xdf, 0xa0, - 0x35, 0xce, 0x57, 0xb0, 0x7e, 0xcd, 0x9a, 0x3f, 0xda, 0x7c, - 0x49, 0xa9, 0x6a, 0x2c, 0x32, 0xb6, 0xb6, 0xe2, 0x35, 0x3f, - 0xed, 0x39, 0xff, 00, 0x5, 0x3f, 0x9d, 0x7a, 0x59, 0x6d, - 0xf, 0xac, 0xe3, 0x29, 0xd2, 0xee, 0xff, 00, 0x5, 0xab, - 0x37, 0xa1, 0xf, 0x69, 0x56, 0x31, 0x3e, 0x8b, 0xa2, 0x8a, - 0x2b, 0xf6, 0xe3, 0xeb, 0x82, 0x8a, 0x28, 0xa0, 0x8, 0xee, - 0x26, 0x5b, 0x6b, 0x79, 0x65, 0x73, 0x84, 0x8d, 0x4b, 0x13, - 0xec, 0x6, 0x6b, 0xe2, 0x2d, 0x52, 0xf9, 0xf5, 0x3d, 0x4e, - 0xee, 0xf2, 0x43, 0x97, 0xb8, 0x95, 0xe5, 0x6f, 0xab, 0x12, - 0x7f, 0xad, 0x7d, 0x89, 0xe3, 0xa9, 0xda, 0xd7, 0xc1, 0x5a, - 0xf4, 0xa8, 0x70, 0xc9, 0x63, 0x31, 0x7, 0xdf, 0x61, 0xaf, - 0x8c, 0x6b, 0xf3, 0xce, 0x2a, 0xa8, 0xf9, 0xa9, 0x53, 0xf5, - 0x7f, 0x91, 0xe1, 0xe6, 0x52, 0xd6, 0x31, 0xa, 0x28, 0xa2, - 0xbe, 0x8, 0xf1, 0x82, 0xba, 0xbf, 0x85, 0x9a, 0x60, 0xd5, - 0xbe, 0x20, 0xe8, 0x70, 0x30, 0xca, 0x2d, 0xc0, 0x95, 0xbe, - 0x88, 0xb, 0x7f, 0xec, 0xb5, 0xca, 0x57, 0xa2, 0x7c, 0x4, - 0x50, 0x7e, 0x24, 0xd9, 0x13, 0xd4, 0x45, 0x29, 0x1f, 0xf7, - 0xc1, 0xaf, 0x43, 0x2f, 0x82, 0xa9, 0x8b, 0xa5, 0x17, 0xd6, - 0x4b, 0xf3, 0x36, 0xa2, 0xb9, 0xaa, 0xc5, 0x79, 0xa3, 0xea, - 0x7a, 0x28, 0xa2, 0xbf, 0x70, 0x3e, 0xbc, 0x28, 0xa2, 0x8a, - 00, 0x28, 0xa2, 0x8a, 00, 0x2b, 0x95, 0xf8, 0xa3, 0xaa, - 0xd, 0x1f, 0xe1, 0xfe, 0xb9, 0x71, 0x9c, 0x31, 0xb7, 0x68, - 0x97, 0xfd, 0xe7, 0xf9, 0x47, 0xf3, 0xae, 0xaa, 0xbc, 0x67, - 0xf6, 0x92, 0xf1, 0x1a, 0xdb, 0x68, 0xb6, 0x1a, 0x2a, 0x37, - 0xef, 0x6e, 0xa4, 0xf3, 0xe4, 0x1e, 0x88, 0xbd, 0x3f, 0x36, - 0x3f, 0xf8, 0xed, 0x79, 0x99, 0x9d, 0x75, 0x86, 0xc1, 0xd4, - 0xa8, 0xfb, 0x69, 0xea, 0xf4, 0x47, 0x3e, 0x22, 0x7e, 0xce, - 0x94, 0xa4, 0x7c, 0xf5, 0x45, 0x14, 0x57, 0xe2, 0x47, 0xc9, - 0x5, 0x14, 0x51, 0x40, 0x1d, 0x6f, 0xc2, 0x7b, 0x3f, 0xb7, - 0x7c, 0x45, 0xd0, 0xa3, 0xc6, 0x42, 0xdc, 0x9, 0xf, 0xfc, - 0x4, 0x16, 0xfe, 0x95, 0xf5, 0xf5, 0x7c, 0xe3, 0xfb, 0x37, - 0xe8, 0x7f, 0x6c, 0xf1, 0x45, 0xee, 0xa6, 0xcb, 0x94, 0xb2, - 0x83, 0x62, 0x9f, 0xf6, 0xdc, 0xe3, 0xf9, 0x6, 0xfc, 0xeb, - 0xe8, 0xea, 0xfd, 0x4f, 0x86, 0x68, 0xba, 0x78, 0x27, 0x37, - 0xf6, 0x9b, 0x7f, 0x76, 0x87, 0xd1, 0x65, 0xf1, 0xb5, 0x2b, - 0xf7, 0x61, 0x5e, 0x6b, 0xf1, 0x7f, 0xe1, 0x58, 0xf1, 0xbd, - 0xa2, 0xdf, 0xd8, 0x5, 0x8f, 0x58, 0xb7, 0x42, 00, 0x3c, - 0x9, 0xd7, 0xfb, 0xa4, 0xfa, 0xfa, 0x1f, 0xc3, 0xe9, 0xe9, - 0x54, 0x57, 0xd1, 0xe2, 0x70, 0xd4, 0xf1, 0x74, 0x9d, 0x1a, - 0xaa, 0xe9, 0x9d, 0xf5, 0x29, 0xc6, 0xac, 0x5c, 0x65, 0xb1, - 0xf0, 0xdd, 0xed, 0x8d, 0xc6, 0x9b, 0x75, 0x25, 0xb5, 0xd4, - 0x32, 0x5b, 0xdc, 0x46, 0x76, 0xbc, 0x52, 0x2e, 0xd6, 0x53, - 0xee, 0x2a, 0xa, 0xfb, 0x17, 0xc6, 0x3f, 0xf, 0x34, 0x4f, - 0x1c, 0x42, 0xa3, 0x52, 0xb6, 0xfd, 0xfa, 0xc, 0x25, 0xcc, - 0x47, 0x6c, 0x8b, 0xf8, 0xf7, 0x1e, 0xc7, 0x22, 0xbc, 0x3f, - 0xc5, 0x3f, 0xb3, 0xde, 0xbb, 0xa4, 0x34, 0x92, 0xe9, 0x4f, - 0x1e, 0xaf, 0x6a, 0x39, 0xa, 0xe, 0xc9, 0x80, 0xff, 00, - 0x74, 0xf0, 0x7f, 0x3, 0xf8, 0x57, 0xe6, 0x38, 0xee, 0x1f, - 0xc5, 0x61, 0x5b, 0x95, 0x25, 0xcf, 0x1f, 0x2d, 0xfe, 0x6b, - 0xfc, 0x8f, 0x9e, 0xad, 0x82, 0xa9, 0x4f, 0x58, 0xea, 0x8f, - 0x2a, 0xa2, 0xac, 0x5f, 0x69, 0xf7, 0x5a, 0x65, 0xc3, 0x41, - 0x79, 0x6f, 0x2d, 0xac, 0xcb, 0xd6, 0x39, 0x90, 0xab, 0xf, - 0xc0, 0xd5, 0x7a, 0xf9, 0x86, 0x9c, 0x5d, 0x99, 0xe7, 0xec, - 0x14, 0x51, 0x45, 0x20, 0xa, 0x28, 0xa2, 0x80, 0x25, 0xb5, - 0xbb, 0x9e, 0xc6, 0x75, 0x9a, 0xda, 0x69, 0x2d, 0xe6, 0x5e, - 0x56, 0x48, 0x9c, 0xab, 0xf, 0xa1, 0x15, 0xe9, 0x5e, 0x11, - 0xf8, 0xfb, 0xaf, 0x68, 0x6e, 0x91, 0x6a, 0x64, 0x6b, 0x36, - 0x9d, 0xf, 0x98, 0x42, 0xca, 0xbf, 0x46, 0xc7, 0x3f, 0x8e, - 0x7e, 0xb5, 0xe6, 0x14, 0x57, 0x66, 0x1b, 0x19, 0x5f, 0x9, - 0x2e, 0x6a, 0x13, 0x6b, 0xf2, 0xfb, 0xb6, 0x35, 0xa7, 0x56, - 0x74, 0x9d, 0xe0, 0xec, 0x7d, 0x8f, 0xe0, 0xdf, 0x1f, 0xe8, - 0xfe, 0x38, 0xb4, 0xf3, 0x74, 0xeb, 0x8f, 0xdf, 0x28, 0xfd, - 0xe5, 0xb4, 0xbf, 0x2c, 0xa9, 0xf5, 0x1d, 0xc7, 0xb8, 0xe2, - 0xba, 0x4a, 0xf8, 0x7b, 0x4b, 0xd5, 0x2e, 0xf4, 0x5d, 0x42, - 0xb, 0xdb, 0x19, 0xda, 0xde, 0xea, 0x16, 0xdc, 0x92, 0x27, - 0x50, 0x7f, 0xcf, 0x6a, 0xfa, 0xa3, 0xe1, 0x4f, 0xc4, 0x88, - 0xbc, 0x7d, 0xa3, 0x91, 0x36, 0x23, 0xd5, 0x6d, 0x80, 0x17, - 0x31, 0x81, 0x85, 0x6c, 0xf4, 0x75, 0xf6, 0x38, 0xfc, 0xf, - 0xe1, 0x5f, 0xa4, 0xe5, 0x19, 0xdc, 0x71, 0xcf, 0xd8, 0xd6, - 0x56, 0x9f, 0xe0, 0xff, 00, 0xe0, 0xf9, 0x1e, 0xf6, 0x17, - 0x16, 0xab, 0x7b, 0x93, 0xd1, 0xfe, 0x67, 0x73, 0x45, 0x14, - 0x57, 0xd5, 0x9e, 0x90, 0x51, 0x45, 0x14, 00, 0x57, 0xcc, - 0xff, 00, 0xb4, 0xf5, 0xdf, 0xef, 0xd9, 0x33, 0xd1, 0x71, - 0x5f, 0x4c, 0x57, 0xc9, 0xbf, 0xb4, 0xbd, 0xd1, 0x7d, 0x52, - 0x55, 0xcf, 0xf1, 0x1a, 0xf9, 0xdc, 0xf6, 0x56, 0xc1, 0xb5, - 0xdc, 0xf1, 0xb3, 0x69, 0x72, 0xe1, 0x64, 0x7c, 0xdf, 0xac, - 0x36, 0xdb, 0x77, 0x3e, 0xd5, 0x4f, 0xf6, 0x27, 0xb6, 0xfe, - 0xd1, 0xfd, 0xb2, 0xf4, 0xc7, 0x20, 0x37, 0xd9, 0x34, 0xab, - 0xe9, 0xf9, 0xed, 0x95, 0x54, 0xcf, 0xfe, 0x3f, 0x53, 0x78, - 0x81, 0xf6, 0xd9, 0xc8, 0x7f, 0xd9, 0x35, 0x77, 0xfe, 0x9, - 0xe7, 0x69, 0xf6, 0xef, 0xda, 0xbb, 0x5c, 0xb9, 0xea, 0x2d, - 0x3c, 0x3b, 0x3f, 0xe6, 0xd3, 0xc2, 0x3f, 0xa1, 0xaf, 0x27, - 0x23, 0x8e, 0xb7, 0x3f, 0x34, 0xc8, 0x23, 0xcf, 0x9b, 0xa7, - 0xd9, 0x33, 0xf4, 0xee, 0x8a, 0x28, 0xaf, 0xb8, 0x3f, 0x64, - 0xa, 0x28, 0xa2, 0x80, 0x23, 0xb9, 0xb8, 0x8e, 0xd2, 0xde, - 0x59, 0xe5, 0x60, 0x91, 0x44, 0xa5, 0xdd, 0x8f, 0x40, 00, - 0xc9, 0x35, 0xf9, 0xe1, 0xe3, 0xcf, 0x13, 0xc9, 0xe3, 0x3f, - 0x19, 0xea, 0xfa, 0xcb, 0x9c, 0x8b, 0xbb, 0x86, 0x68, 0xfd, - 0xa3, 0x1c, 0x20, 0xff, 00, 0xbe, 0x40, 0xaf, 0xaf, 0x3f, - 0x69, 0x7f, 0x18, 0x9f, 0xa, 0x7c, 0x33, 0xbb, 0x82, 0x17, - 0xdb, 0x77, 0xaa, 0xb7, 0xd8, 0xa3, 0xf5, 0xda, 0xc0, 0x97, - 0x3f, 0xf7, 0xc8, 0x3f, 0x98, 0xaf, 0x8d, 0x7c, 0x3d, 0xa5, - 0x3e, 0xb3, 0xac, 0xd9, 0xd9, 0x46, 0x9, 0x69, 0xa4, 0x54, - 00, 0x7b, 0x9a, 0xf8, 0x7e, 0x20, 0xc4, 0x39, 0x4e, 0x18, - 0x78, 0xf4, 0xd7, 0xe6, 0xf6, 0x3e, 0xb, 0x88, 0x6b, 0xba, - 0xb5, 0xa9, 0xe1, 0x21, 0xd3, 0x57, 0xea, 0xf6, 0xfe, 0xbc, - 0xcf, 0xab, 0x3f, 0x65, 0x6f, 0x8, 0x7f, 0x65, 0x78, 0x5a, - 0x6d, 0x5e, 0x58, 0xf6, 0xcd, 0x76, 0xc5, 0x54, 0x91, 0xfc, - 0x22, 0xbd, 0xd6, 0xb2, 0xbc, 0x2d, 0xa2, 0xc7, 0xe1, 0xef, - 0xf, 0xd8, 0xe9, 0xf1, 0x28, 0x55, 0x82, 0x20, 0xbc, 0xe, - 0xfd, 0xeb, 0x56, 0xbe, 0xab, 0x5, 0x87, 0x58, 0x5c, 0x3c, - 0x29, 0x76, 0x5f, 0x8f, 0x53, 0xec, 0xb0, 0x94, 0x16, 0x1e, - 0x84, 0x69, 0x2e, 0x88, 0x28, 0xa2, 0x8a, 0xee, 0x3a, 0xc2, - 0x8a, 0x28, 0xa0, 0xf, 0xcb, 0xbf, 0xf8, 0x2d, 0x1f, 0xc6, - 0x4b, 0xfb, 0x3b, 0x6f, 0x5, 0xfc, 0x31, 0xb3, 0x73, 0x15, - 0x8d, 0xea, 0x36, 0xb5, 0xa8, 0x60, 0x90, 0x65, 0xda, 0xc6, - 0x38, 0x50, 0xf6, 0x20, 0x1d, 0xed, 0xf5, 0xb, 0xe9, 0x5f, - 0x9b, 0x5f, 0xb, 0x34, 0xfd, 0x7b, 0xc5, 0x3e, 0x3e, 0xf0, - 0xe7, 0x86, 0xb4, 0x3d, 0x52, 0xf3, 0x4f, 0xbc, 0xd5, 0xf5, - 0x8, 0x2c, 0x22, 0x92, 0xda, 0x77, 0x8f, 0x61, 0x92, 0x40, - 0x9b, 0xbe, 0x52, 0x3a, 0x67, 0x3f, 0x85, 0x7e, 0x9a, 0xff, - 00, 0xc1, 0x49, 0xec, 0xfe, 0xd, 0xfe, 0xd2, 0xba, 0x1d, - 0xa6, 0xa7, 0xe1, 0xbf, 0x8a, 0xfe, 0x12, 0xb7, 0xf8, 0x87, - 0xe1, 0x7f, 0x36, 0xd9, 0x74, 0xfb, 0xbd, 0x52, 0x28, 0x56, - 0xee, 0x2d, 0xdf, 0x3c, 0x5, 0x98, 0x80, 0xae, 0xac, 0x9, - 0x5c, 0x9c, 0x64, 0xb0, 0x38, 0xce, 0x47, 0xe5, 0xa7, 0x85, - 0xfc, 0x47, 0xa8, 0x78, 0xb, 0xc5, 0xfa, 0x56, 0xb9, 0xa6, - 0xca, 0xb1, 0xea, 0x9a, 0x3d, 0xec, 0x77, 0x70, 0x48, 0xac, - 0x1d, 0x44, 0x91, 0x38, 0x65, 0xe4, 0x1c, 0x30, 0xca, 0xf6, - 0x38, 0x22, 0xa9, 0x10, 0xf7, 0x3f, 0xa6, 0x8f, 0x9, 0x78, - 0x6a, 0xd7, 0xc1, 0xde, 0x17, 0xd2, 0xb4, 0x2b, 0x22, 0xe6, - 0xd7, 0x4e, 0xb6, 0x8e, 0xd6, 0x36, 0x91, 0x8b, 0x3b, 0x4, - 0x50, 0x37, 0x31, 0x3c, 0x92, 0x71, 0x92, 0x4f, 0x52, 0x6b, - 0x5e, 0xbe, 0x30, 0xf8, 0x1b, 0xff, 00, 0x5, 0x54, 0xf8, - 0x37, 0xf1, 0x2b, 0x43, 0xb4, 0x5f, 0x15, 0xea, 0xa7, 0xc0, - 0x3e, 0x22, 0xd8, 0x5, 0xc5, 0xa6, 0xa6, 0x8c, 0xd6, 0xc5, - 0xf1, 0xc9, 0x8e, 0x75, 0x5, 0x76, 0xfa, 0x6e, 0xda, 0x7d, - 0xab, 0xd9, 0xad, 0x7f, 0x6d, 0x3f, 0x80, 0xf7, 0x87, 0x11, - 0xfc, 0x5b, 0xf0, 0x88, 0x3f, 0xf4, 0xd3, 0x55, 0x89, 0x3f, - 0xf4, 0x22, 0x2a, 0x4b, 0x3d, 0xa6, 0x8a, 0xf3, 0x1d, 0x3f, - 0xf6, 0xa0, 0xf8, 0x3d, 0xab, 0x48, 0x12, 0xcb, 0xe2, 0x97, - 0x83, 0xee, 0x9c, 0xf4, 0x58, 0xb5, 0xcb, 0x66, 0x3f, 0xfa, - 0x1d, 0x77, 0x7a, 0xf, 0x89, 0xb4, 0x8f, 0x14, 0xda, 0x35, - 0xd6, 0x8d, 0xaa, 0xd9, 0x6a, 0xd6, 0xaa, 0xdb, 0xc, 0xd6, - 0x37, 0x9, 0x32, 0x6, 0xc6, 0x70, 0x4a, 0x92, 0x33, 0x82, - 0x3f, 0x3a, 00, 0xd3, 0xaf, 0x36, 0xf8, 0xf9, 0xe2, 0x1f, - 0xec, 0x6f, 0x2, 0x4b, 0x6b, 0x1c, 0x9b, 0x27, 0xd4, 0x24, - 0x10, 00, 0xf, 0x3b, 0x3a, 0xbf, 0xe8, 0x31, 0xff, 00, - 0x2, 0xaf, 0x49, 0xaf, 0x98, 0xff, 00, 0x68, 0x3f, 0x10, - 0x7f, 0x6a, 0xf8, 0xdf, 0xec, 0x28, 0xfb, 0xa0, 0xd3, 0xe2, - 0x11, 0xe0, 0x74, 0xde, 0xdf, 0x33, 0x7f, 0xec, 0xa3, 0xf0, - 0xaf, 0x3, 0x3c, 0xc5, 0x7d, 0x57, 0x3, 0x36, 0xb7, 0x96, - 0x8b, 0xe7, 0xff, 00, 0x2, 0xe7, 0x16, 0x32, 0xa7, 0xb3, - 0xa2, 0xfc, 0xf4, 0x3c, 0xc2, 0x8a, 0x28, 0xaf, 0xc7, 0x8f, - 0x97, 0xa, 0xb7, 0xa4, 0xe9, 0xb3, 0x6b, 0x3a, 0xa5, 0xa5, - 0x8c, 00, 0xb4, 0xd7, 0x32, 0xac, 0x4a, 00, 0xee, 0x4e, - 0x2a, 0xa5, 0x7a, 0x8f, 0xec, 0xf3, 0xa0, 0x1d, 0x4f, 0xc6, - 0xad, 0x7e, 0xe9, 0x98, 0x74, 0xf8, 0x4b, 0xee, 0x23, 0x8f, - 0x31, 0xbe, 0x55, 0x1f, 0x96, 0xe3, 0xf8, 0x57, 0x6e, 0xb, - 0xe, 0xf1, 0x58, 0x98, 0x51, 0x5d, 0x5f, 0xe1, 0xd7, 0xf0, - 0x35, 0xa5, 0xf, 0x69, 0x35, 0xe, 0xe7, 0xd2, 0x3a, 0x75, - 0x8c, 0x7a, 0x66, 0x9f, 0x6d, 0x69, 0x8, 0xdb, 0x14, 0x11, - 0xac, 0x48, 0x3d, 0x80, 0xc0, 0xfe, 0x55, 0x66, 0x8a, 0x2b, - 0xf7, 0x24, 0x94, 0x55, 0x91, 0xf6, 0x9, 0x5b, 0x40, 0xaf, - 0x11, 0xfd, 0xa6, 0xec, 0x43, 0x58, 0x68, 0x57, 0x9d, 0xd2, - 0x59, 0x62, 0x3f, 0xf0, 0x20, 0xf, 0xfe, 0xcb, 0x5e, 0xdd, - 0x5e, 0x4f, 0xfb, 0x48, 0xc3, 0xe6, 0x78, 0x26, 0xce, 0x4c, - 0x7f, 0xab, 0xbe, 0x43, 0xf9, 0xa3, 0x8a, 0xf1, 0xb3, 0xa8, - 0x73, 0xe5, 0xf5, 0x57, 0x95, 0xfe, 0xe7, 0x73, 0x93, 0x16, - 0xaf, 0x42, 0x47, 0xcd, 0x94, 0x51, 0x45, 0x7e, 0x32, 0x7c, - 0xa8, 0x56, 0xc7, 0x83, 0x6f, 0x8e, 0x9b, 0xe2, 0xdd, 0x1a, - 0xe8, 0x1c, 0x79, 0x57, 0x71, 0x31, 0x3e, 0xdb, 0x86, 0x7f, - 0x4a, 0xc7, 0xa7, 0x47, 0x21, 0x86, 0x45, 0x91, 0x7e, 0xf2, - 0x90, 0xc3, 0xf0, 0xad, 0x29, 0xcf, 0xd9, 0xce, 0x33, 0x5d, - 0x1d, 0xc7, 0x17, 0x66, 0x99, 0xf7, 0x4d, 0x15, 0x5b, 0x4c, - 0xb9, 0x17, 0xba, 0x75, 0xad, 0xc0, 0xe9, 0x2c, 0x49, 0x20, - 0xfc, 0x40, 0x35, 0x66, 0xbf, 0x7b, 0x4e, 0xe9, 0x34, 0x7d, - 0x9a, 0xd4, 0x28, 0xa2, 0x8a, 0x63, 0xa, 0x28, 0xa2, 0x80, - 0x38, 0xbf, 0x8c, 0x3a, 0xc8, 0xd1, 0x3e, 0x1e, 0x6a, 0xd2, - 0x6, 0xdb, 0x24, 0xf1, 0xfd, 0x99, 0x30, 0x79, 0x25, 0xce, - 0xe, 0x3f, 0xc, 0x9f, 0xc2, 0xbe, 0x48, 0xaf, 0x75, 0xfd, - 0xa6, 0x35, 0xa3, 0x9d, 0x1f, 0x49, 0x46, 0xf9, 0x7e, 0x7b, - 0x99, 0x14, 0x7f, 0xdf, 0x2b, 0xff, 00, 0xb3, 0x57, 0x85, - 0x57, 0xe5, 0x1c, 0x47, 0x88, 0xf6, 0xd8, 0xde, 0x45, 0xb4, - 0x12, 0x5f, 0xaf, 0xea, 0x7c, 0xde, 0x3e, 0x7c, 0xd5, 0xad, - 0xd8, 0x28, 0xa2, 0x8a, 0xf9, 0x63, 0xce, 0xa, 0xfa, 0x7b, - 0xf6, 0x7d, 0xd0, 0xff, 00, 0xb2, 0xfc, 0x8, 0x2e, 0xd9, - 0x71, 0x2d, 0xfc, 0xcd, 0x2e, 0x48, 0xe7, 0x68, 0xf9, 0x57, - 0xf9, 0x13, 0xf8, 0xd7, 0xcc, 0x71, 0x44, 0xd3, 0x4a, 0x91, - 0xa0, 0x2c, 0xee, 0x42, 0xa8, 0x1d, 0xc9, 0xe9, 0x5f, 0x6b, - 0x78, 0x67, 0x49, 0x5d, 0xb, 0xc3, 0xda, 0x6e, 0x9c, 0xbf, - 0xf2, 0xed, 0x6e, 0x91, 0x1f, 0x72, 0x14, 0x64, 0xfe, 0x75, - 0xf6, 0x9c, 0x2f, 0x43, 0x9f, 0x11, 0x3a, 0xcf, 0xec, 0xaf, - 0xc5, 0xff, 00, 0xc0, 0x3d, 0x5c, 0xbe, 0x17, 0xa8, 0xe5, - 0xd8, 0xd3, 0xa2, 0x8a, 0x2b, 0xf4, 0xc3, 0xe8, 0x2, 0x8a, - 0x28, 0xa0, 0xc, 0x3f, 0x1c, 0xdb, 0xb5, 0xd7, 0x82, 0xf5, - 0xd8, 0x50, 0x65, 0xde, 0xc6, 0x65, 00, 0x7a, 0xec, 0x35, - 0xf1, 0x87, 0x5a, 0xfb, 0xa2, 0x58, 0x96, 0x78, 0x9e, 0x37, - 0x19, 0x47, 0x52, 0xa4, 0x1e, 0xe0, 0xd7, 0xc4, 0xfe, 0x21, - 0xd2, 0x5f, 0x42, 0xd7, 0x75, 0xd, 0x3a, 0x40, 0x77, 0x5b, - 0x4e, 0xf1, 0x73, 0xdc, 0x3, 0xc1, 0xfc, 0x46, 0xd, 0x7e, - 0x7d, 0xc5, 0x54, 0x9d, 0xe9, 0x55, 0xe9, 0xaa, 0xfd, 0x4f, - 0x13, 0x32, 0x8e, 0xb1, 0x91, 0x9f, 0x45, 0x14, 0x57, 0xc0, - 0x1e, 0x28, 0x57, 0x5f, 0xf0, 0x97, 0x55, 0x5d, 0x1f, 0xe2, - 0x1e, 0x8b, 0x33, 0x9c, 0x23, 0xcd, 0xe4, 0x31, 0x3f, 0xed, - 0x82, 0xa3, 0xf5, 0x22, 0xb9, 0xa, 0x74, 0x52, 0xbc, 0x32, - 0xa4, 0x91, 0xb1, 0x57, 0x42, 0x19, 0x58, 0x75, 0x4, 0x74, - 0x35, 0xbd, 0xa, 0xae, 0x85, 0x58, 0x55, 0x5f, 0x65, 0xa7, - 0xf7, 0x15, 0x9, 0x72, 0x49, 0x4b, 0xb1, 0xf7, 0x4d, 0x15, - 0xcb, 0x7c, 0x38, 0xf1, 0xb4, 0x1e, 0x39, 0xf0, 0xcd, 0xbd, - 0xea, 0xb2, 0xad, 0xda, 0xf, 0x2e, 0xe6, 0x10, 0x79, 0x47, - 0x1f, 0xd0, 0xf5, 0x1f, 0x5a, 0xea, 0x6b, 0xf7, 0x3a, 0x35, - 0x61, 0x5e, 0x9c, 0x6a, 0xd3, 0x77, 0x4f, 0x53, 0xec, 0x63, - 0x25, 0x38, 0xa9, 0x47, 0x66, 0x14, 0x51, 0x45, 0x6c, 0x50, - 0x51, 0x45, 0x23, 0x30, 0x45, 0x2c, 0xc4, 0x2a, 0x81, 0x92, - 0x4f, 0x41, 0x40, 0x11, 0xdd, 0x5d, 0x45, 0x63, 0x6d, 0x2d, - 0xc4, 0xf2, 0x2c, 0x50, 0x44, 0x85, 0xdd, 0xd8, 0xe0, 0x2a, - 0x81, 0x92, 0x4d, 0x7c, 0x79, 0xf1, 0x7, 0xc5, 0xaf, 0xe3, - 0x5f, 0x15, 0x5e, 0x6a, 0x64, 0x15, 0x85, 0x8f, 0x97, 0x2, - 0x1f, 0xe1, 0x8d, 0x78, 0x5f, 0xcf, 0xaf, 0xd4, 0x9a, 0xef, - 0xfe, 0x36, 0x7c, 0x58, 0x4d, 0x74, 0xbe, 0x83, 0xa3, 0xcd, - 0xba, 0xc1, 0x1b, 0xfd, 0x22, 0xe5, 0x1b, 0x89, 0x88, 0xfe, - 0x11, 0xfe, 0xc8, 0xf5, 0xee, 0x7d, 0xba, 0xf8, 0xed, 0x7e, - 0x63, 0xc4, 0x39, 0x9c, 0x71, 0x33, 0x58, 0x6a, 0x2e, 0xf1, - 0x8e, 0xef, 0xbb, 0xff, 00, 0x80, 0x7c, 0xf6, 0x3b, 0x10, - 0xaa, 0x3f, 0x67, 0x1d, 0x90, 0x51, 0x45, 0x15, 0xf1, 0xa7, - 0x96, 0x14, 0x51, 0x5d, 0x67, 0xc3, 0x2f, 0x6, 0x3f, 0x8d, - 0xfc, 0x57, 0x6d, 0x66, 0xca, 0xdf, 0x63, 0x8f, 0xf7, 0xd7, - 0x2e, 0x7, 0x44, 0x1d, 0xbf, 0x13, 0x81, 0xf8, 0xfb, 0x56, - 0xd4, 0x68, 0xcf, 0x11, 0x52, 0x34, 0xa9, 0xad, 0x5b, 0xb1, - 0x51, 0x8b, 0x9c, 0x94, 0x56, 0xec, 0xf7, 0xbf, 0x81, 0x7e, - 0x17, 0x6f, 0xe, 0xf8, 0x1e, 0x19, 0xa6, 0x5d, 0xb7, 0x3a, - 0x83, 0x7d, 0xa9, 0x81, 0x1c, 0x85, 0x20, 0x4, 0x1f, 0x90, - 0xcf, 0xe3, 0x5e, 0x89, 0x4d, 0x8e, 0x35, 0x8a, 0x35, 0x44, - 0x50, 0xa8, 0xa0, 0x28, 0x51, 0xd0, 0xa, 0x75, 0x7e, 0xe3, - 0x86, 0xa1, 0x1c, 0x2d, 0x18, 0x51, 0x8e, 0xd1, 0x56, 0x3e, - 0xbe, 0x9c, 0x15, 0x38, 0x28, 0x2e, 0x81, 0x45, 0x14, 0x57, - 0x49, 0xa0, 0x51, 0x45, 0x14, 0x1, 0x53, 0x51, 0xd2, 0x2c, - 0x75, 0x78, 0x4c, 0x37, 0xd6, 0x70, 0x5e, 0x44, 0x7a, 0xa4, - 0xf1, 0x87, 0x1f, 0xad, 0x79, 0xf6, 0xbf, 0xfb, 0x3f, 0xf8, - 0x63, 0x57, 0x2d, 0x25, 0xa2, 0xcf, 0xa5, 0x4a, 0x7f, 0xe7, - 0xdd, 0xf2, 0x99, 0xff, 00, 0x75, 0xb3, 0xfa, 0x11, 0x5e, - 0x99, 0x45, 0x72, 0x57, 0xc1, 0xe1, 0xf1, 0x2a, 0xd5, 0xa0, - 0xa5, 0xfd, 0x77, 0x32, 0x9d, 0x28, 0x54, 0xf8, 0xd5, 0xcf, - 0x9b, 0x3c, 0x45, 0xfb, 0x3a, 0xeb, 0xba, 0x68, 0x69, 0x34, - 0xbb, 0x88, 0x75, 0x58, 0x87, 0x44, 0xff, 00, 0x55, 0x26, - 0x3e, 0x84, 0xe0, 0xfe, 0x75, 0xe6, 0xba, 0xb6, 0x87, 0xa8, - 0x68, 0x37, 0x3f, 0x67, 0xd4, 0x6c, 0xa7, 0xb2, 0x9b, 0xfb, - 0xb3, 0x21, 0x5c, 0xfd, 0x3d, 0x7f, 0xa, 0xfb, 0x76, 0xa9, - 0xea, 0x9a, 0x45, 0x96, 0xb7, 0x68, 0xf6, 0xb7, 0xf6, 0xb1, - 0x5d, 0xdb, 0xb7, 0x58, 0xe5, 0x50, 0xc3, 0xff, 00, 0xad, - 0x5f, 0x2f, 0x8a, 0xe1, 0x8c, 0x3d, 0x4b, 0xbc, 0x3c, 0x9c, - 0x5f, 0x6d, 0xd7, 0xf9, 0x9e, 0x75, 0x4c, 0xbe, 0x12, 0xd6, - 0xe, 0xc7, 0xc4, 0x14, 0x57, 0xa5, 0x7c, 0x60, 0xf8, 0x56, - 0xbe, 0x5, 0xb8, 0x8a, 0xfb, 0x4f, 0x2f, 0x26, 0x93, 0x72, - 0xe5, 0x70, 0xfc, 0x98, 0x5f, 0xa8, 0x5c, 0xf7, 0x4, 0x67, - 0x7, 0xda, 0xbc, 0xd6, 0xbf, 0x3c, 0xc5, 0x61, 0xaa, 0xe0, - 0xea, 0xba, 0x35, 0x55, 0x9a, 0x3c, 0x4a, 0x94, 0xe5, 0x4a, - 0x4e, 0x32, 0xdc, 0x28, 0xa2, 0x8a, 0xe5, 0x33, 0xa, 0xea, - 0x7e, 0x19, 0x78, 0x96, 0x5f, 0xb, 0x78, 0xd3, 0x4d, 0xba, - 0x46, 0x22, 0x19, 0x25, 0x10, 0x4e, 0xb9, 0xe1, 0xa3, 0x62, - 0x1, 0xcf, 0xd3, 0x83, 0xf8, 0x57, 0x2d, 0x4a, 0xac, 0x55, - 0x81, 0x7, 0x4, 0x1c, 0x82, 0x2b, 0x6a, 0x35, 0x65, 0x42, - 0xac, 0x6a, 0xc7, 0x74, 0xee, 0x54, 0x24, 0xe1, 0x25, 0x25, - 0xd0, 0xfb, 0xaa, 0x8a, 0x82, 0xc5, 0xda, 0x5b, 0x2b, 0x77, - 0x6e, 0x19, 0xa3, 0x52, 0x7e, 0xb8, 0xa9, 0xeb, 0xf7, 0x94, - 0xee, 0xae, 0x7d, 0x9a, 0xd4, 0x28, 0xa2, 0x8a, 0x60, 0x21, - 0x38, 0x15, 0xf1, 0xaf, 0xed, 0xf, 0x77, 0xe7, 0x6b, 0xb2, - 0x8f, 0x57, 0x3f, 0xce, 0xbe, 0xc8, 0x94, 0xed, 0x89, 0xcf, - 0xa2, 0x93, 0x5f, 0x10, 0x7c, 0x73, 0xb9, 0xf3, 0xbc, 0x45, - 0x2f, 0xfb, 0xed, 0xfc, 0xeb, 0xe5, 0x78, 0x86, 0x56, 0xc3, - 0xc6, 0x3d, 0xd9, 0xf3, 0xb9, 0xec, 0xb9, 0x70, 0xac, 0xf1, - 0x1f, 0x14, 0xc9, 0xb2, 0xc2, 0x6f, 0xf7, 0x4d, 0x76, 0x9f, - 0xf0, 0x4c, 0x9d, 0x3c, 0x5d, 0x7c, 0x65, 0xf8, 0x91, 0xa9, - 0x11, 0x9f, 0xb3, 0xe9, 0x96, 0xd6, 0xe1, 0xb1, 0xfd, 0xf9, - 0x59, 0x8f, 0xfe, 0x81, 0x5c, 0xf, 0x8d, 0x25, 0xd9, 0xa6, - 0x4d, 0xf4, 0x35, 0xeb, 0xff, 00, 0xf0, 0x4b, 0x2b, 0xd, - 0xf7, 0x3f, 0x15, 0x35, 0x22, 0x3e, 0xfd, 0xcd, 0x95, 0xba, - 0x9f, 0xf7, 0x52, 0x46, 0x3f, 0xfa, 0x10, 0xac, 0x72, 0x38, - 0xe9, 0x73, 0xe1, 0xb8, 0x5e, 0x3c, 0xd9, 0x95, 0x49, 0x76, - 0x47, 0xdf, 0x74, 0x51, 0x45, 0x7d, 0x81, 0xfa, 0xd8, 0x51, - 0x45, 0x66, 0x78, 0x9b, 0x5d, 0x83, 0xc3, 0x1e, 0x1e, 0xd4, - 0x75, 0x6b, 0x93, 0x88, 0x6c, 0xe0, 0x79, 0xd8, 0x67, 0x19, - 0xda, 0x33, 0x8f, 0xa9, 0xe9, 0x4a, 0x4d, 0x45, 0x36, 0xfa, - 0x13, 0x29, 0x28, 0xa7, 0x27, 0xb2, 0x3e, 0x49, 0xfd, 0xaa, - 0xfc, 0x62, 0xda, 0xef, 0xc4, 0x25, 0xd1, 0xe3, 0x72, 0x6d, - 0x34, 0x88, 0x82, 0x15, 0xc8, 0x20, 0xca, 0xe0, 0x33, 0x1f, - 0xcb, 0x68, 0xfc, 0xd, 0x27, 0xec, 0xc1, 0xe1, 0xf, 0xed, - 0xcf, 0x1b, 0xad, 0xfc, 0xd1, 0xee, 0xb7, 0xb2, 0x52, 0xf9, - 0x23, 0x8d, 0xdd, 0xab, 0xc8, 0xf5, 0x6d, 0x52, 0xe3, 0x5e, - 0xd5, 0xef, 0x35, 0x1b, 0xa7, 0x32, 0x5c, 0xdd, 0xcc, 0xd3, - 0x48, 0xc7, 0xd5, 0x8e, 0x6b, 0xec, 0x9f, 0xd9, 0xaf, 0xc2, - 0x3f, 0xf0, 0x8f, 0x78, 0x12, 0x3b, 0xb9, 0x13, 0x6d, 0xc5, - 0xe3, 0x17, 0x39, 0xfe, 0xef, 0x6a, 0xfc, 0xef, 0x8, 0x9e, - 0x63, 0x99, 0x7b, 0x49, 0x6d, 0x7b, 0xfc, 0x96, 0xdf, 0xa1, - 0xf9, 0xd6, 0x5c, 0x9e, 0x63, 0x99, 0x4b, 0x11, 0x2d, 0x93, - 0xbf, 0xf9, 0x1e, 0xbb, 0x45, 0x14, 0x57, 0xe8, 0xa7, 0xe8, - 0xe1, 0x45, 0x79, 0xef, 0xed, 0x1, 0xf1, 0x6a, 0xcb, 0xe0, - 0x67, 0xc1, 0xbf, 0x15, 0xf8, 0xde, 0xf9, 0x94, 0x2e, 0x93, - 0x62, 0xf2, 0xc2, 0x8d, 0xd2, 0x59, 0xc8, 0xdb, 0xa, 0x7f, - 0xc0, 0x9c, 0xa8, 0xfc, 0x6b, 0xf2, 0x66, 0xc3, 0xfe, 0xb, - 0x29, 0xf1, 0xba, 0xdd, 0x97, 0xed, 0x5a, 0x2f, 0x83, 0xae, - 0xd0, 0x75, 0x2, 0xc2, 0xe2, 0x32, 0x7f, 0x11, 0x39, 0xfe, - 0x54, 0xa, 0xf6, 0x3f, 0x6a, 0x2b, 0xc7, 0x7f, 0x6b, 0xaf, - 0x8c, 0xf0, 0x7c, 0x4, 0xfd, 0x9e, 0xbc, 0x63, 0xe2, 0xe7, - 0x90, 0x2d, 0xe4, 0x36, 0x8d, 0x6d, 0x60, 0xb9, 0xc1, 0x7b, - 0xa9, 0x7f, 0x77, 0x10, 0x1f, 0x46, 0x6d, 0xc7, 0xd9, 0x4d, - 0x5f, 0xfd, 0x98, 0xbe, 0x21, 0x78, 0xaf, 0xe2, 0xc7, 0xc1, - 0x1f, 0xc, 0xf8, 0xc3, 0xc6, 0x5a, 0x5d, 0x96, 0x8b, 0xac, - 0x6b, 0x50, 0x7d, 0xb1, 0x6c, 0x6c, 0x43, 0xec, 0x8e, 0x6, - 0x3f, 0xba, 0x27, 0x79, 0x27, 0x2c, 0xb8, 0x6f, 0xf8, 0x10, - 0x15, 0x6f, 0xe3, 0x9f, 0xec, 0xf9, 0xe0, 0xaf, 0xda, 0x37, - 0xc3, 0x16, 0x9e, 0x1e, 0xf1, 0xd5, 0x85, 0xce, 0xa5, 0xa4, - 0xdb, 0x5c, 0x8b, 0xc8, 0xe0, 0xb7, 0xbc, 0x96, 0xdf, 0xf7, - 0xa1, 0x59, 0x43, 0x13, 0x1b, 0x2, 0x70, 0x19, 0xb8, 0x3c, - 0x73, 0x40, 0xcf, 0xe6, 0xc6, 0x59, 0x5e, 0x79, 0x5e, 0x49, - 0x18, 0xbc, 0x8e, 0x4b, 0x33, 0x31, 0xc9, 0x24, 0xf5, 0x26, - 0x9b, 0x5f, 0xba, 0x57, 0x5f, 0xf0, 0x49, 0xbf, 0xd9, 0xda, - 0xe1, 0x8, 0x8f, 0x40, 0xd6, 0x2d, 0x4f, 0xf7, 0xa2, 0xd6, - 0x67, 0x27, 0xff, 00, 0x1e, 0x26, 0xb0, 0x6f, 0x7f, 0xe0, - 0x8f, 0x3f, 0x2, 0x6e, 0x3, 0x79, 0x17, 0x5e, 0x2a, 0xb4, - 0x27, 0xa6, 0xdd, 0x4a, 0x36, 0x3, 0xf3, 0x8a, 0xaa, 0xe4, - 0x72, 0xb3, 0xf1, 0x2e, 0x8a, 0xfd, 0x8a, 0xd4, 0x7f, 0xe0, - 0x8b, 0x1f, 0xc, 0x27, 0x2c, 0x6c, 0xfc, 0x6d, 0xe2, 0xab, - 0x4f, 0x40, 0xff, 00, 0x67, 0x90, 0xf, 0xfc, 0x86, 0xd, - 0x72, 0xf7, 0xdf, 0xf0, 0x44, 0x8d, 0x5, 0xd9, 0xbe, 0xc5, - 0xf1, 0x4b, 0x51, 0x88, 0x76, 0x13, 0xe9, 0x51, 0xbf, 0xf2, - 0x91, 0x68, 0xb8, 0xb9, 0x59, 0xf9, 0x39, 0x8f, 0x6a, 0xfe, - 0x88, 0x7f, 0x62, 0xf, 0x82, 0xb1, 0xfc, 0x7, 0xfd, 0x9a, - 0xbc, 0x1f, 0xe1, 0xd6, 0x89, 0x53, 0x53, 0xb8, 0xb6, 0x1a, - 0x96, 0xa2, 0xc0, 0x60, 0xb5, 0xcc, 0xe0, 0x3b, 0x3, 0xfe, - 0xe8, 0x2a, 0x9f, 0x45, 0x15, 0xf1, 0xe7, 0x83, 0xff, 00, - 0xe0, 0x8b, 0xe9, 0xe1, 0xcf, 0x1e, 0x68, 0x3a, 0xad, 0xff, - 00, 0xc4, 0x68, 0x75, 0x8d, 0x16, 0xc6, 0xfa, 0x1b, 0x9b, - 0xab, 0x6, 0xd2, 0x8c, 0x4f, 0x71, 0x1a, 0x38, 0x63, 0x1e, - 0xef, 0x34, 0x81, 0xbb, 0x18, 0xe9, 0xde, 0xbf, 0x4e, 0x95, - 0x42, 0x28, 0x55, 0x1, 0x54, 0xc, 00, 0x3a, 0x1, 0x49, - 0x94, 0x95, 0x8a, 0x9a, 0xbe, 0xa5, 0x16, 0x8f, 0xa5, 0x5d, - 0xdf, 0x4c, 0x40, 0x8a, 0xda, 0x26, 0x95, 0x89, 0xf4, 0x3, - 0x35, 0xf1, 0x4e, 0xa5, 0xa8, 0x4d, 0xaa, 0xea, 0x17, 0x37, - 0xb7, 0xd, 0xbe, 0x7b, 0x89, 0x1a, 0x57, 0x3e, 0xe4, 0xe4, - 0xd7, 0xd6, 0x7f, 0x14, 0xf4, 0xd, 0x5f, 0xc5, 0x1e, 0x13, - 0x97, 0x4b, 0xd1, 0xcc, 0x2b, 0x2d, 0xc4, 0x8a, 0x25, 0x33, - 0x39, 0x51, 0xe5, 0x8e, 0x48, 0x1c, 0x1e, 0xa4, 0xf, 0xd6, - 0xbc, 0x32, 0x4f, 0xd9, 0xfb, 0xc5, 0xc8, 0x38, 0x82, 0xd2, - 0x4f, 0xf7, 0x6e, 0x7, 0xf5, 0xc5, 0x7c, 0x17, 0x11, 0x51, - 0xc5, 0x62, 0xaa, 0x42, 0x9d, 0x1a, 0x6d, 0xc6, 0x2a, 0xfa, - 0x2e, 0xaf, 0xfc, 0x8f, 0x23, 0x1d, 0x1a, 0x95, 0x24, 0x94, - 0x62, 0xda, 0x47, 0x9b, 0x51, 0x5d, 0xec, 0xdf, 0x3, 0x7c, - 0x67, 0xf, 0xfc, 0xc2, 0x84, 0x9f, 0xee, 0x5c, 0x46, 0x7f, - 0xf6, 0x6a, 0xa5, 0x2f, 0xc2, 0x2f, 0x18, 0x43, 0xf7, 0xb4, - 0x2b, 0x83, 0xfe, 0xe9, 0x56, 0xfe, 0x46, 0xbe, 0x2a, 0x58, - 0xc, 0x5c, 0x77, 0xa5, 0x2f, 0xb9, 0x9e, 0x4b, 0xa3, 0x55, - 0x7d, 0x97, 0xf7, 0x1c, 0x7d, 0x7d, 0x3f, 0xfb, 0x3f, 0xe8, - 0x1f, 0xd9, 0x3e, 0x4, 0x4b, 0xb7, 0x4d, 0xb3, 0x6a, 0x12, - 0xb4, 0xc4, 0x91, 0xce, 0xc1, 0xf2, 0xaf, 0xf2, 0x27, 0xf1, - 0xaf, 0x9, 0xb7, 0xf8, 0x63, 0xe2, 0x79, 0x6f, 0x60, 0xb7, - 0x93, 0x44, 0xbd, 0x84, 0x49, 0x22, 0xa1, 0x91, 0xa1, 0x3b, - 0x57, 0x27, 0x19, 0x27, 0xd0, 0x57, 0xd7, 0x3a, 0x75, 0x8c, - 0x5a, 0x5d, 0x85, 0xb5, 0x9c, 0xb, 0xb6, 0x18, 0x23, 0x58, - 0x90, 0x7a, 00, 0x30, 0x2b, 0xeb, 0x38, 0x6b, 0x5, 0x38, - 0xd7, 0x9d, 0x7a, 0xb1, 0x6b, 0x95, 0x59, 0x5d, 0x5b, 0x57, - 0xff, 00, 0x3, 0xf3, 0x3d, 0x2c, 0x5, 0x26, 0xa6, 0xe7, - 0x25, 0xb1, 0x66, 0x8a, 0x28, 0xaf, 0xd1, 0x4f, 0x74, 0x2b, - 0xcd, 0x7f, 0x68, 0x38, 0xbc, 0xcf, 0x87, 0x53, 0x36, 0x3e, - 0xe5, 0xcc, 0x4d, 0xfa, 0xe3, 0xfa, 0xd7, 0xa5, 0x57, 0x3, - 0xf1, 0xce, 0x2f, 0x37, 0xe1, 0x9e, 0xa8, 0x7f, 0xb8, 0xd1, - 0x37, 0xfe, 0x44, 0x5f, 0xf1, 0xaf, 0x37, 0x32, 0x5c, 0xd8, - 0x2a, 0xcb, 0xfb, 0xaf, 0xf2, 0x39, 0xf1, 0xa, 0xf4, 0xa5, - 0xe8, 0x7c, 0xa5, 0x45, 0x14, 0x57, 0xe2, 0x27, 0xc9, 0x5, - 0x14, 0x51, 0x40, 0x1f, 0x64, 0x7c, 0x3a, 0xba, 0xfb, 0x67, - 0x80, 0xf4, 0x9, 0x49, 0xc9, 0x36, 0x51, 0x3, 0xf5, 0xa, - 0x7, 0xf4, 0xae, 0x8e, 0xb8, 0x4f, 0x82, 0x17, 0x86, 0xf3, - 0xe1, 0xa6, 0x95, 0x93, 0x93, 0x17, 0x99, 0x11, 0xfc, 0x1d, - 0xb1, 0xfa, 0x62, 0xbb, 0xba, 0xfd, 0xd3, 0x5, 0x3f, 0x69, - 0x86, 0xa5, 0x3e, 0xf1, 0x5f, 0x91, 0xf6, 0x14, 0x5f, 0x35, - 0x38, 0xbf, 0x24, 0x14, 0x51, 0x45, 0x76, 0x1a, 0x85, 0x14, - 0x56, 0x7f, 0x88, 0x35, 0x68, 0xf4, 0x1d, 0xe, 0xff, 00, - 0x51, 0x97, 0xee, 0x5a, 0xc2, 0xf2, 0x9f, 0x7c, 0xe, 0x5, - 0x4c, 0xa4, 0xa1, 0x17, 0x29, 0x6c, 0x84, 0xdd, 0x95, 0xd9, - 0xf2, 0xbf, 0xc6, 0xd, 0x78, 0xf8, 0x83, 0xe2, 0x6, 0xa9, - 0x20, 0x6d, 0xd0, 0xdb, 0xbf, 0xd9, 0x63, 0xfa, 0x27, 0x7, - 0xff, 00, 0x1e, 0xdc, 0x7f, 0x1a, 0xe3, 0x2a, 0x4b, 0x89, - 0xde, 0xea, 0x79, 0x66, 0x90, 0xee, 0x92, 0x46, 0x2e, 0xc7, - 0xd4, 0x93, 0x93, 0x51, 0xd7, 0xe1, 0x38, 0x8a, 0xcf, 0x11, - 0x5a, 0x75, 0x65, 0xf6, 0x9b, 0x67, 0xc7, 0x4e, 0x4e, 0x72, - 0x72, 0x7d, 0x42, 0x8a, 0x28, 0xae, 0x72, 0xe, 0xb7, 0xe1, - 0x46, 0x8f, 0xfd, 0xb7, 0xf1, 0x7, 0x46, 0x81, 0x97, 0x7c, - 0x69, 0x37, 0x9e, 0xe3, 0xb6, 0x10, 0x16, 0xfe, 0x60, 0x57, - 0xd7, 0xd5, 0xf3, 0xdf, 0xec, 0xd1, 0xa3, 0xf9, 0xfa, 0xd6, - 0xad, 0xa9, 0xb2, 0xf1, 0x6f, 0xa, 0xc0, 0x87, 0xdd, 0xce, - 0x4f, 0xe8, 0xbf, 0xad, 0x7d, 0x9, 0x5f, 0xaa, 0xf0, 0xd5, - 0xf, 0x67, 0x82, 0xf6, 0x8f, 0x79, 0x36, 0xfe, 0x4b, 0x43, - 0xe8, 0xf0, 0x10, 0xe5, 0xa5, 0xcd, 0xdc, 0x28, 0xa2, 0x8a, - 0xfa, 0xb3, 0xd2, 0xa, 0x28, 0xa2, 0x80, 0xa, 0xf9, 0xdb, - 0xf6, 0x88, 0xf0, 0x69, 0xd3, 0xf5, 0x98, 0x7c, 0x41, 0x6e, - 0x9f, 0xe8, 0xf7, 0x98, 0x8e, 0x7c, 0xf, 0xbb, 0x28, 0x1c, - 0x1f, 0xc4, 0xf, 0xfc, 0x77, 0xde, 0xbe, 0x89, 0xac, 0xdf, - 0x10, 0xe8, 0x36, 0x9e, 0x27, 0xd1, 0xae, 0xb4, 0xcb, 0xd4, - 0xdf, 0x6f, 0x70, 0xbb, 0x5b, 0x1d, 0x54, 0xf5, 0x4, 0x7b, - 0x83, 0xcd, 0x79, 0x59, 0x9e, 0x9, 0x63, 0xf0, 0xd2, 0xa3, - 0xd7, 0x75, 0xeb, 0xfd, 0x68, 0x73, 0x62, 0x28, 0xfb, 0x6a, - 0x6e, 0x3d, 0x4f, 0x89, 0xa8, 0xae, 0x8b, 0xc7, 0x1e, 0x8, - 0xbf, 0xf0, 0x2e, 0xb5, 0x25, 0x95, 0xe2, 0x16, 0x88, 0x92, - 0x60, 0xb8, 0x3, 0xe5, 0x95, 0x3d, 0x47, 0xbf, 0xa8, 0xed, - 0x5c, 0xed, 0x7e, 0x33, 0x56, 0x94, 0xe8, 0xcd, 0xd3, 0xa8, - 0xac, 0xd1, 0xf2, 0xb2, 0x8b, 0x8b, 0xe5, 0x96, 0xe1, 0x45, - 0x14, 0x56, 0x44, 0x9b, 0x7e, 0x12, 0xf1, 0x86, 0xa7, 0xe0, - 0xbd, 0x51, 0x6f, 0xb4, 0xd9, 0xb6, 0x3f, 0xdd, 0x92, 0x36, - 0xe5, 0x25, 0x5f, 0x46, 0x15, 0xf4, 0x1f, 0x85, 0x3e, 0x3e, - 0x78, 0x7b, 0x5d, 0x44, 0x8f, 0x50, 0x66, 0xd1, 0xee, 0xb8, - 0x4, 0x4f, 0xcc, 0x44, 0xfb, 0x38, 0xe9, 0xf8, 0xe2, 0xbe, - 0x61, 0xa2, 0xbd, 0xac, 0x6, 0x6d, 0x89, 0xcb, 0xfd, 0xda, - 0x6e, 0xf1, 0xec, 0xf6, 0xff, 00, 0x80, 0x75, 0x51, 0xc4, - 0xd4, 0xa1, 0xa4, 0x76, 0xec, 0x7d, 0xb7, 0x69, 0xe2, 0xd, - 0x2e, 0xfd, 0x3, 0x5b, 0x6a, 0x36, 0x97, 0xa, 0x46, 0x73, - 0x1c, 0xea, 0xdf, 0xc8, 0xd4, 0xb3, 0x6a, 0xf6, 0x36, 0xeb, - 0xba, 0x5b, 0xdb, 0x78, 0x97, 0xd5, 0xe5, 0x50, 0x3f, 0x9d, - 0x7c, 0x3f, 0x8a, 0x31, 0x5f, 0x46, 0xb8, 0xae, 0x76, 0xd6, - 0x8e, 0xbe, 0xbf, 0xf0, 0xe, 0xff, 00, 0xed, 0x27, 0xfc, - 0xbf, 0x89, 0xf5, 0x9f, 0x88, 0xbe, 0x32, 0xf8, 0x5b, 0xc3, - 0xb1, 0x9c, 0xea, 0x2b, 0x7f, 0x38, 0xe9, 0xd, 0x96, 0x24, - 0x3f, 0x98, 0xe0, 0x7e, 0x26, 0xbc, 0x47, 0xe2, 0x7, 0xc6, - 0xad, 0x5b, 0xc6, 0x4b, 0x25, 0xa5, 0xa8, 0x3a, 0x66, 0x96, - 0xc0, 0xab, 0x43, 0x1b, 0x65, 0xe5, 0x1f, 0xed, 0xb7, 0xa7, - 0xb0, 0xe3, 0xeb, 0x5e, 0x75, 0x45, 0x78, 0x98, 0xdc, 0xf7, - 0x17, 0x8c, 0x8b, 0x85, 0xf9, 0x62, 0xfa, 0x2f, 0xf3, 0x39, - 0x2a, 0xe3, 0x2a, 0xd5, 0x56, 0xd9, 0x5, 0x14, 0x51, 0x5f, - 0x3a, 0x70, 0x85, 0x14, 0x55, 0x8b, 0xd, 0x3e, 0xe7, 0x55, - 0xbc, 0x86, 0xd2, 0xd2, 0x17, 0xb8, 0xb9, 0x95, 0x82, 0xa4, - 0x68, 0x32, 0x58, 0xd3, 0x49, 0xc9, 0xd9, 0x6e, 0x1b, 0x89, - 0x65, 0x65, 0x3e, 0xa3, 0x77, 0xd, 0xad, 0xb4, 0x4d, 0x35, - 0xc4, 0xcc, 0x11, 0x23, 0x41, 0x92, 0xc4, 0xf6, 0xaf, 0xad, - 0x3e, 0x18, 0xf8, 0x6, 0x2f, 00, 0xf8, 0x7d, 0x6d, 0xdb, - 0x64, 0x9a, 0x84, 0xe7, 0xcc, 0xb9, 0x99, 0x7b, 0xb7, 0x65, - 0x1e, 0xc3, 0xfc, 0x4f, 0x7a, 0xc6, 0xf8, 0x4b, 0xf0, 0x9a, - 0x2f, 0x4, 0x5b, 0xfd, 0xbf, 0x50, 0x9, 0x36, 0xb5, 0x2a, - 0xe0, 0x95, 0x39, 0x58, 0x14, 0xff, 00, 0xa, 0xfb, 0xfa, - 0x9f, 0xc3, 0xeb, 0xe9, 0x35, 0xfa, 0x86, 0x47, 0x94, 0x3c, - 0x1a, 0xfa, 0xc5, 0x75, 0xef, 0xbd, 0x97, 0x65, 0xfe, 0x67, - 0xd0, 0xe0, 0xf0, 0xbe, 0xcb, 0xdf, 0x9e, 0xff, 00, 0x90, - 0x51, 0x45, 0x23, 0x30, 0x55, 0x24, 0x9c, 0x1, 0xc9, 0x35, - 0xf5, 0xe7, 0xa8, 0x71, 0xba, 0xef, 0xc5, 0x8d, 0xf, 0xc3, - 0x5e, 0x29, 0xfe, 0xc4, 0xd4, 0x64, 0x7b, 0x77, 0xf2, 0x96, - 0x43, 0x73, 0xb7, 0x31, 0xa9, 0x39, 0xf9, 0x5b, 0x1c, 0x8e, - 0x30, 0x73, 0x8c, 0x73, 0x5d, 0x55, 0x8e, 0xa3, 0x6b, 0xaa, - 0x40, 0xb3, 0xd9, 0xdc, 0xc5, 0x75, 0xb, 0x72, 0x24, 0x85, - 0xc3, 0x29, 0xfc, 0x45, 0x7c, 0x75, 0xe3, 0x8d, 0x78, 0xf8, - 0x9b, 0xc5, 0xba, 0xa6, 0xa5, 0x9c, 0xa4, 0xd3, 0xb7, 0x97, - 0xfe, 0xe0, 0xe1, 0x7f, 0x40, 0x2a, 0x86, 0x93, 0xae, 0x6a, - 0x1a, 0xd, 0xc8, 0xb8, 0xd3, 0xaf, 0x67, 0xb2, 0x97, 0xfb, - 0xd0, 0xb9, 0x5c, 0xfd, 0x7d, 0x7f, 0x1a, 0xfc, 0xf5, 0x71, - 0x3c, 0xa9, 0xd7, 0x9c, 0x67, 0xe, 0x68, 0x5d, 0xda, 0xda, - 0x3b, 0x7e, 0xbf, 0x81, 0xe1, 0xac, 0xc1, 0xa9, 0xb4, 0xd5, - 0xd1, 0xf6, 0xed, 0x15, 0xf3, 0x26, 0x8d, 0xfb, 0x43, 0x78, - 0x9f, 0x4e, 0xda, 0xb7, 0x82, 0xd7, 0x53, 0x8c, 0x75, 0xf3, - 0x63, 0xd8, 0xe7, 0xf1, 0x5c, 0xf, 0xd2, 0xbb, 0x6d, 0x2f, - 0xf6, 0x96, 0xd2, 0xa6, 0x55, 0x1a, 0x86, 0x95, 0x77, 0x6c, - 0xdd, 0xcc, 0xc, 0xb2, 0x2f, 0xeb, 0xb4, 0xd7, 0xd0, 0x51, - 0xcf, 0xf0, 0x15, 0xb7, 0x9f, 0x2b, 0xf3, 0x5f, 0xd2, 0x3b, - 0x61, 0x8d, 0xa3, 0x2e, 0xb6, 0x3d, 0x96, 0x8a, 0xf3, 0xcb, - 0x5f, 0x8f, 0x5e, 0xe, 0xb8, 0xc6, 0xeb, 0xe9, 0xad, 0xcf, - 0xa4, 0xb6, 0xef, 0xfd, 0x1, 0xad, 0x8, 0xbe, 0x31, 0x78, - 0x3a, 0x51, 0xc6, 0xb9, 0x2, 0xff, 00, 0xbc, 0xae, 0x3f, - 0x98, 0xaf, 0x4a, 0x39, 0x86, 0xe, 0x7f, 0xd, 0x58, 0xfd, - 0xe8, 0xe8, 0x55, 0xe9, 0x3d, 0xa4, 0xbe, 0xf3, 0xb3, 0xa2, - 0xb8, 0xa9, 0xfe, 0x32, 0xf8, 0x36, 0x1, 0x93, 0xad, 0xc4, - 0xff, 00, 0xf5, 0xce, 0x37, 0x6f, 0xe4, 0x2b, 0x9b, 0xd7, - 0x7f, 0x68, 0xcd, 0x2, 0xca, 0x16, 0x1a, 0x65, 0xbd, 0xce, - 0xa3, 0x3f, 0xf0, 0xee, 0x5f, 0x2a, 0x3f, 0xc4, 0x9e, 0x7f, - 0x4a, 0x8a, 0x99, 0x9e, 0xa, 0x92, 0xbc, 0xaa, 0xc7, 0xef, - 0xbf, 0xe4, 0x29, 0x62, 0x29, 0x45, 0x5d, 0xc9, 0x16, 0xbf, - 0x68, 0x6d, 0x4a, 0xde, 0xd7, 0xc0, 0x46, 0xd6, 0x42, 0x3e, - 0xd1, 0x75, 0x71, 0x18, 0x89, 0x7b, 0xfc, 0xa7, 0x73, 0x1f, - 0xc8, 0x63, 0xf1, 0xaf, 0x98, 0xeb, 0x7b, 0xc6, 0x3e, 0x35, - 0xd4, 0xfc, 0x71, 0xaa, 0x7d, 0xb7, 0x52, 0x90, 0x12, 0xa3, - 0x6c, 0x50, 0xc6, 0x30, 0x91, 0xaf, 0xa0, 0x1f, 0xd7, 0xad, - 0x60, 0xd7, 0xe5, 0x99, 0xbe, 0x3a, 0x38, 0xfc, 0x53, 0xab, - 0x5, 0xee, 0xa5, 0x64, 0x7c, 0xe6, 0x26, 0xb2, 0xad, 0x53, - 0x99, 0x6c, 0x14, 0x51, 0x45, 0x78, 0xa7, 0x28, 0x55, 0xcd, - 0x1e, 0xc5, 0xb5, 0x3d, 0x5e, 0xca, 0xcd, 0x46, 0x5a, 0xe2, - 0x74, 0x88, 0x1, 0xfe, 0xd3, 0x1, 0xfd, 0x6a, 0x9d, 0x7a, - 0x77, 0xc0, 0x1f, 0xa, 0x9d, 0x73, 0xc6, 0x1f, 0xda, 0x12, - 0xa9, 0x36, 0xda, 0x6a, 0xf9, 0xb9, 0xec, 0x64, 0x3c, 0x20, - 0xfe, 0x67, 0xf0, 0x15, 0xdb, 0x82, 0xc3, 0xcb, 0x15, 0x88, - 0x85, 0x18, 0xf5, 0x7f, 0x87, 0x5f, 0xc0, 0xd6, 0x94, 0x1d, - 0x49, 0xa8, 0xae, 0xa7, 0xd3, 0x68, 0xa1, 0x14, 0x28, 0xe8, - 0x6, 0x29, 0xd4, 0x51, 0x5f, 0xb9, 0x9f, 0x60, 0x14, 0x51, - 0x45, 00, 0x56, 0xd4, 0x5f, 0xcb, 0xb0, 0xb8, 0x6e, 0x98, - 0x43, 0xfc, 0xab, 0xe1, 0x1f, 0x8b, 0xd7, 0x1e, 0x77, 0x88, - 0xe5, 0xef, 0xf3, 0x1f, 0xe7, 0x5f, 0x72, 0xf8, 0x92, 0x5f, - 0x27, 0x43, 0xbc, 0x6e, 0x98, 0x8c, 0xd7, 0xc1, 0x5f, 0x12, - 0xa6, 0xf3, 0xbc, 0x45, 0x3f, 0xb3, 0x1a, 0xf8, 0xce, 0x22, - 0x97, 0xbb, 0x4e, 0x3e, 0x67, 0xc9, 0xf1, 0xc, 0xad, 0x41, - 0x23, 0xc8, 0x3e, 0x20, 0x4b, 0xb3, 0x4a, 0x9b, 0xe8, 0x6b, - 0xe9, 0x1f, 0xf8, 0x25, 0xa6, 0x9e, 0x23, 0xf8, 0x57, 0xe3, - 0x5b, 0xfc, 0x7c, 0xd7, 0x5e, 0x20, 0x64, 0xcf, 0xb2, 0x41, - 0x1f, 0xff, 00, 0x14, 0x6b, 0xe6, 0x1f, 0x89, 0x93, 0x6c, - 0xd2, 0x65, 0xfa, 0x1f, 0xe5, 0x5f, 0x60, 0x7f, 0xc1, 0x32, - 0x6c, 0x3e, 0xcd, 0xfb, 0x35, 0x1b, 0xad, 0xb8, 0x37, 0xba, - 0xe5, 0xec, 0xd9, 0xf5, 00, 0xaa, 0x7f, 0xec, 0x95, 0xd9, - 0x92, 0xc6, 0xd4, 0xcf, 0x99, 0xe1, 0x18, 0xdf, 0x13, 0x5e, - 0x7e, 0x87, 0xd6, 0x74, 0x51, 0x45, 0x7d, 0x39, 0xfa, 0x90, - 0x57, 0x82, 0xfe, 0xd6, 0xde, 0x35, 0x3a, 0x3f, 0x84, 0x6d, - 0x3c, 0x3f, 0x3, 0x62, 0x7d, 0x56, 0x4d, 0xd2, 0xe0, 0xf2, - 0x22, 0x42, 0xf, 0xea, 0xd8, 0x1f, 0x81, 0xaf, 0x7a, 0xaf, - 0x85, 0xbf, 0x68, 0x3f, 0x1a, 0x1f, 0x1a, 0x7c, 0x4b, 0xd4, - 0x1a, 0x29, 0x4, 0x96, 0x5a, 0x79, 0xfb, 0x15, 0xbe, 0xd2, - 0x70, 0x42, 0x9f, 0x98, 0xfe, 0x2d, 0x9f, 0xc8, 0x57, 0x85, - 0x9c, 0xe2, 0x3d, 0x86, 0x15, 0xa5, 0xbc, 0xb4, 0xff, 00, - 0x33, 0xe7, 0xb3, 0xdc, 0x4f, 0xd5, 0xf0, 0x6e, 0x29, 0xeb, - 0x2d, 0x3f, 0xcf, 0xf0, 0x39, 0x5f, 0x2, 0xf8, 0x7e, 0x4f, - 0x12, 0xf8, 0xa3, 0x4f, 0xd3, 0xe3, 0x5d, 0xde, 0x6c, 0xaa, - 0xf, 0xd3, 0x3c, 0xd7, 0xe8, 0x46, 0x95, 0xa7, 0xc7, 0xa5, - 0x69, 0xd6, 0xf6, 0x91, 00, 0xb1, 0xc2, 0x81, 00, 0x1e, - 0xd5, 0xf2, 0xef, 0xec, 0x9d, 0xe0, 0xff, 00, 0xb6, 0x6b, - 0x77, 0x7a, 0xd4, 0xc9, 0x98, 0xed, 0xd3, 0x6c, 0x64, 0x8e, - 0x37, 0x1a, 0xfa, 0xb6, 0xb8, 0xb8, 0x7f, 0xf, 0xc9, 0x46, - 0x55, 0xde, 0xf2, 0xfc, 0x91, 0x87, 0xf, 0xe1, 0xbd, 0x8e, - 0x1b, 0xda, 0x3d, 0xe5, 0xf9, 0x5, 0x14, 0x51, 0x5f, 0x54, - 0x7d, 0x41, 0xf9, 0x87, 0xff, 00, 0x5, 0x9e, 0xf8, 0xdd, - 0x1d, 0xb6, 0x8b, 0xe1, 0x2f, 0x85, 0x76, 0x17, 0x2c, 0x2e, - 0x2e, 0x65, 0xfe, 0xda, 0xd4, 0xe3, 0x46, 0xc0, 0xf2, 0x97, - 0x72, 0x40, 0x8d, 0xeb, 0x96, 0xde, 0xd8, 0xff, 00, 0x61, - 0x4d, 0x7e, 0x72, 0xfe, 0xcf, 0x7f, 0xa, 0xe5, 0xf8, 0xdb, - 0xf1, 0xb3, 0xc1, 0xbe, 0x7, 0x89, 0xfc, 0xb5, 0xd6, 0x75, - 0x8, 0xe0, 0x99, 0xf3, 0x8d, 0xb0, 0x8c, 0xbc, 0xa4, 0x7b, - 0x88, 0xd5, 0xc8, 0xf7, 0xaf, 0x55, 0xff, 00, 0x82, 0x90, - 0x6b, 0xf7, 0x9a, 0xff, 00, 0xed, 0x9f, 0xf1, 0x1c, 0xdd, - 0xc8, 0xce, 0xb6, 0x77, 0x30, 0x59, 0x40, 0xac, 0x73, 0xb2, - 0x34, 0xb7, 0x8c, 00, 0x3d, 0xb2, 0x58, 0xff, 00, 0xc0, - 0x8d, 0x7c, 0xfb, 0xe1, 0x5f, 0x15, 0x6a, 0xfe, 0x7, 0xf1, - 0x1e, 0x9d, 0xaf, 0xe8, 0x3a, 0x84, 0xfa, 0x56, 0xb3, 0xa7, - 0xcc, 0xb7, 0x16, 0xb7, 0x96, 0xcd, 0xb6, 0x48, 0x9c, 0x74, - 0x20, 0xff, 00, 0x9c, 0xf4, 0xaa, 0x33, 0x6f, 0x53, 0xfa, - 0x71, 0x51, 0xa7, 0xf8, 0x4b, 0xc3, 0xc0, 0x7c, 0x96, 0x7a, - 0x5e, 0x99, 0x6b, 0x8f, 0x45, 0x8a, 0x18, 0xd3, 0xf9, 0x5, - 0x5f, 0xd2, 0xbf, 0xe, 0xbe, 0x24, 0x7f, 0xc1, 0x4e, 0x7e, - 0x37, 0x6a, 0x3f, 0x13, 0x7c, 0x4b, 0xa8, 0xf8, 0x57, 0xc6, - 0xd3, 0xe9, 0x9e, 0x1a, 0x9a, 0xfe, 0x66, 0xd3, 0x74, 0xe3, - 0x67, 0x6e, 0xe9, 0xd, 0xbe, 0xe2, 0x23, 0x1f, 0x34, 0x64, - 0xe7, 0x68, 0x4, 0xe4, 0x9e, 0x49, 0xa8, 0x3c, 0x61, 0xff, - 00, 0x5, 0x45, 0xf8, 0xd9, 0xe3, 0xcf, 0x86, 0xda, 0xd7, - 0x83, 0x35, 0x89, 0xf4, 0x49, 0xac, 0xf5, 0x6b, 0x17, 0xb0, - 0xb9, 0xbe, 0x86, 0xc5, 0xa2, 0xba, 0xf2, 0xdd, 0x76, 0xb1, - 0xc, 0xae, 0x14, 0x31, 0x19, 0x19, 0xdb, 0xdc, 0xd7, 0xc8, - 0xb4, 0x92, 0x1b, 0x7d, 0x8f, 0xdf, 0x7f, 0xf8, 0x27, 0x7f, - 0xc4, 0x8f, 0x88, 0xff, 00, 0x18, 0xbe, 0x1, 0x47, 0xe3, - 0x6f, 0x88, 0xfa, 0xc2, 0xea, 0xb7, 0x7a, 0xad, 0xf4, 0xa3, - 0x4f, 0x9, 0x69, 0x1d, 0xb8, 0x8e, 0xda, 0x33, 0xe5, 0xe4, - 0x84, 0x51, 0x92, 0xce, 0xae, 0x72, 0x7b, 0x1, 0x5f, 0x50, - 0xd7, 0xe3, 0xaf, 0xc3, 0xf, 0xf8, 0x2b, 0xf6, 0xa3, 0xf0, - 0xbf, 0xc0, 0xfa, 0x7, 0x85, 0x34, 0xff, 00, 0x84, 0xda, - 0x50, 0xd2, 0xb4, 0x6b, 0x38, 0xac, 0xa0, 0x58, 0x75, 0x69, - 0x23, 0x25, 0x51, 0x40, 0xc9, 0xfd, 0xd1, 0xe4, 0xf2, 0x4f, - 0xb9, 0x35, 0xe8, 0x5a, 0x7f, 0xfc, 0x16, 0xee, 0x16, 0x61, - 0xf6, 0xef, 0x84, 0xb2, 0x46, 0xbd, 0xcd, 0xbe, 0xb8, 0x1f, - 0xf9, 0xc0, 0x28, 0xb1, 0x57, 0x47, 0xea, 0x45, 0x15, 0xf9, - 0xbd, 0x65, 0xff, 00, 0x5, 0xb1, 0xf0, 0x3c, 0x85, 0x7e, - 0xd7, 0xf0, 0xe3, 0xc4, 0x10, 0xe, 0xe6, 0x1b, 0xc8, 0x24, - 0xc7, 0xe7, 0xb6, 0xba, 0xed, 0x3, 0xfe, 0xb, 0x19, 0xf0, - 0x8b, 0x5c, 0xbd, 0xb6, 0xb3, 0x3e, 0x19, 0xf1, 0x84, 0x17, - 0x57, 0x12, 0x2c, 0x51, 0xc6, 0x2d, 0x20, 0x93, 0x73, 0xb1, - 0xc0, 0x51, 0xb6, 0x6e, 0x72, 0x48, 0xed, 0x48, 0x2e, 0x8f, - 0xbc, 0xe8, 0xa8, 0xad, 0xa6, 0x37, 0x16, 0xd1, 0x4a, 0x63, - 0x78, 0x4b, 0xa0, 0x63, 0x1c, 0x98, 0xdc, 0xb9, 0x19, 0xc1, - 0xc7, 0x71, 0x59, 0x1e, 0x36, 0xf1, 0xae, 0x89, 0xf0, 0xe7, - 0xc2, 0x9a, 0x9f, 0x89, 0x7c, 0x47, 0x7f, 0x1e, 0x97, 0xa2, - 0x69, 0xb0, 0x99, 0xee, 0xee, 0xe5, 0x4, 0xac, 0x48, 0x3b, - 0xe0, 0x2, 0x4f, 0x5e, 0x80, 0x50, 0x33, 0x72, 0x8a, 0xf0, - 0x2b, 0xf, 0xdb, 0xdb, 0xf6, 0x7d, 0xd4, 0x63, 0xf, 0x1f, - 0xc5, 0x6f, 0xf, 0xc6, 0xf, 0x6b, 0x89, 0x9a, 0x23, 0xf9, - 0x32, 0x8a, 0xdc, 0xb1, 0xfd, 0xb1, 0x7e, 0x6, 0xea, 0x3f, - 0xea, 0x3e, 0x2d, 0x78, 0x40, 0xff, 00, 0xbf, 0xac, 0x42, - 0x9f, 0xfa, 0x13, 0xa, 00, 0xf6, 0x1a, 0x2b, 0x82, 0xd2, - 0x7e, 0x3e, 0x7c, 0x33, 0xd7, 0xbf, 0xe4, 0x1d, 0xf1, 0xb, - 0xc2, 0xf7, 0xdf, 0xf5, 0xc3, 0x58, 0xb7, 0x7f, 0xe4, 0xf5, - 0xd1, 0xd9, 0x78, 0xd7, 0xc3, 0xda, 0x91, 0x2, 0xd3, 0x5e, - 0xd3, 0x2e, 0x89, 0xe8, 0x21, 0xbc, 0x8d, 0xf3, 0xf9, 0x35, - 00, 0x6d, 0x51, 0x51, 0xa5, 0xc4, 0x52, 0x7d, 0xc9, 0x51, - 0xbf, 0xdd, 0x60, 0x6a, 0x4a, 00, 0x28, 0xa2, 0x8a, 00, - 0x2a, 0xbd, 0xfe, 0x9f, 0x6d, 0xaa, 0x5a, 0x49, 0x6b, 0x79, - 0x6f, 0x1d, 0xd5, 0xb4, 0x98, 0xdf, 0x14, 0xca, 0x19, 0x5b, - 0x9c, 0xf2, 0xf, 0xbd, 0x58, 0xa2, 0x93, 0x49, 0xab, 0x30, - 0x6a, 0xfa, 0x33, 0x96, 0x9b, 0xe1, 0x77, 0x84, 0xe7, 0x1f, - 0x36, 0x81, 0x62, 0x3f, 0xdc, 0x8b, 0x6f, 0xf2, 0xaa, 0x53, - 0x7c, 0x17, 0xf0, 0x6c, 0xfd, 0x74, 0x54, 0x5f, 0xf7, 0x25, - 0x91, 0x7f, 0x93, 0x57, 0x6d, 0x45, 0x72, 0x4b, 0x5, 0x85, - 0x96, 0xf4, 0xa3, 0xf7, 0x23, 0x27, 0x46, 0x9b, 0xde, 0x2b, - 0xee, 0x3c, 0xf6, 0x4f, 0x80, 0xde, 0xc, 0x7e, 0x9a, 0x74, - 0xa9, 0xfe, 0xed, 0xd4, 0x9f, 0xd5, 0xaa, 0xac, 0x9f, 0xb3, - 0xd7, 0x84, 0x9f, 0xee, 0xa5, 0xe4, 0x7f, 0xee, 0xdc, 0x7f, - 0x88, 0xaf, 0x4c, 0xa2, 0xb0, 0x79, 0x66, 0x9, 0xef, 0x46, - 0x3f, 0x72, 0x23, 0xea, 0xf4, 0x7f, 0x95, 0x18, 0x7e, 0xf, - 0xf0, 0x85, 0x97, 0x82, 0x74, 0x93, 0xa7, 0x58, 0x3c, 0xcf, - 0x6f, 0xe6, 0x34, 0xa3, 0xcf, 0x60, 0xc4, 0x13, 0x8c, 0x8c, - 0x80, 0x38, 0xe2, 0xb7, 0x28, 0xa2, 0xbb, 0xe9, 0xd3, 0x8d, - 0x28, 0xa8, 0x41, 0x59, 0x23, 0x68, 0xc5, 0x45, 0x59, 0x6c, - 0x14, 0x51, 0x45, 0x68, 0x50, 0x57, 0x25, 0xf1, 0x4b, 0xc3, - 0xfa, 0x9f, 0x8a, 0x7c, 0x1f, 0x73, 0xa5, 0xe9, 0x46, 0x21, - 0x3c, 0xee, 0x81, 0xcc, 0xce, 0x50, 0x6c, 0x7, 0x27, 0x9c, - 0x1f, 0x41, 0x5d, 0x6d, 0x15, 0x8d, 0x6a, 0x51, 0xaf, 0x4e, - 0x54, 0xa5, 0xb3, 0x56, 0x22, 0x71, 0x53, 0x8b, 0x8b, 0xea, - 0x7c, 0xb5, 0x2f, 0xc0, 0xf, 0x18, 0x47, 0xd2, 0xd6, 0xda, - 0x4f, 0xf7, 0x2e, 0x17, 0xfa, 0xe2, 0xa9, 0xcb, 0xf0, 0x47, - 0xc6, 0x71, 0xff, 00, 0xcc, 0x1f, 0x7f, 0xfb, 0xb3, 0xc7, - 0xff, 00, 0xc5, 0x57, 0xd6, 0x34, 0x57, 0xcb, 0xcb, 0x86, - 0x30, 0x4f, 0x69, 0x49, 0x7c, 0xd7, 0xf9, 0x1e, 0x7b, 0xcb, - 0xe9, 0x77, 0x67, 0xc8, 0x53, 0x7c, 0x25, 0xf1, 0x7c, 0x7, - 0xe6, 0xd0, 0x6e, 0x8f, 0xfb, 0x9b, 0x5b, 0xf9, 0x1a, 0xa3, - 0x3f, 0xc3, 0xef, 0x13, 0x5b, 0xff, 00, 0xac, 0xd0, 0x75, - 0x1, 0xf4, 0xb7, 0x63, 0xfc, 0x85, 0x7d, 0x97, 0x45, 0x61, - 0x2e, 0x16, 0xc3, 0x7d, 0x9a, 0x92, 0xfc, 0x3f, 0xc8, 0x87, - 0x97, 0x43, 0xa4, 0x99, 0xe7, 0xdf, 0x3, 0xbc, 0x37, 0x2f, - 0x87, 0x7c, 0xb, 0xf, 0xda, 0x61, 0x78, 0x2e, 0xee, 0xe5, - 0x79, 0xe4, 0x49, 0x14, 0xab, 0x2f, 0x3b, 0x54, 0x10, 0x7a, - 0x70, 0xa0, 0xfe, 0x35, 0xe8, 0x34, 0x51, 0x5f, 0x59, 0x86, - 0xa1, 0x1c, 0x35, 0x18, 0xd1, 0x8e, 0xd1, 0x56, 0x3d, 0x2a, - 0x70, 0x54, 0xe0, 0xa0, 0xba, 0x5, 0x14, 0x51, 0x5d, 0x26, - 0x81, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x6, 0x57, - 0x88, 0xfc, 0x33, 0xa6, 0xf8, 0xb3, 0x4d, 0x7b, 0x1d, 0x4e, - 0xd9, 0x6e, 0x20, 0x6e, 0x46, 0x78, 0x64, 0x3e, 0xaa, 0x7a, - 0x83, 0x5f, 0x3a, 0xf8, 0xef, 0xe0, 0x66, 0xb1, 0xe1, 0x97, - 0x96, 0xe7, 0x4d, 0x56, 0xd5, 0xb4, 0xd1, 0xc8, 0x31, 0x8c, - 0xcc, 0x83, 0xfd, 0xa5, 0x1d, 0x7e, 0xa3, 0xf2, 0x15, 0xf4, - 0xfd, 0x15, 0xe3, 0xe3, 0xf2, 0xac, 0x3e, 0x60, 0xbf, 0x78, - 0xad, 0x2e, 0xeb, 0x7f, 0xf8, 0x27, 0x2d, 0x6c, 0x34, 0x2b, - 0xfc, 0x5b, 0xf7, 0x3e, 0x15, 0x20, 0xa9, 0x20, 0x8c, 0x11, - 0xc1, 0x7, 0xb5, 0x25, 0x7d, 0x89, 0xe2, 0x7f, 0x86, 0xde, - 0x1e, 0xf1, 0x70, 0x63, 0x7f, 0xa7, 0x47, 0xe7, 0x9f, 0xf9, - 0x78, 0x87, 0xe4, 0x90, 0x7e, 0x23, 0xaf, 0xe3, 0x9a, 0xf3, - 0x2d, 0x6b, 0xf6, 0x66, 0x53, 0xb9, 0xb4, 0x9d, 0x64, 0x8f, - 0x48, 0xaf, 0x23, 0xcf, 0xfe, 0x3c, 0xbf, 0xe1, 0x5f, 0x5, - 0x89, 0xe1, 0xbc, 0x65, 0x17, 0x7a, 0x56, 0x9a, 0xfb, 0x9f, - 0xdc, 0xff, 00, 0xcc, 0xf1, 0xaa, 0x60, 0x2a, 0xc7, 0xe1, - 0xd4, 0xf0, 0x8a, 0x2b, 0xd0, 0x35, 0x3f, 0x81, 0x5e, 0x30, - 0xd3, 0xdc, 0x84, 0xb0, 0x8e, 0xf5, 0x7, 0xf1, 0xdb, 0x4c, - 0xa7, 0xf4, 0x62, 0xf, 0xe9, 0x58, 0x57, 0x3f, 0xe, 0x3c, - 0x53, 0x68, 0x71, 0x26, 0x81, 0x7f, 0xff, 00, 00, 0x81, - 0x9c, 0x7e, 0x99, 0xaf, 0xa, 0xa6, 0x7, 0x15, 0x49, 0xda, - 0x74, 0xa4, 0xbe, 0x4c, 0xe2, 0x74, 0x6a, 0x47, 0x78, 0xb3, - 0x9c, 0xa2, 0xb4, 0xe4, 0xf0, 0xc6, 0xb3, 0x11, 0xc3, 0xe9, - 0x37, 0xca, 0x7d, 0xd, 0xb3, 0xff, 00, 0x85, 0x35, 0x7c, - 0x39, 0xab, 0x31, 0xc0, 0xd2, 0xaf, 0x4f, 0xd2, 0xd9, 0xff, - 00, 0xc2, 0xb9, 0xbd, 0x95, 0x4f, 0xe5, 0x7f, 0x71, 0x1c, - 0xb2, 0xec, 0x67, 0x51, 0x5b, 0xf6, 0xfe, 00, 0xf1, 0x2d, - 0xd1, 0x1e, 0x56, 0x83, 0xa8, 0xb6, 0x7a, 0x13, 0x6c, 0xe0, - 0x7e, 0x64, 0x56, 0xe6, 0x9d, 0xf0, 0x47, 0xc6, 0x3a, 0x83, - 0xa8, 0x3a, 0x5f, 0xd9, 0x50, 0xff, 00, 0x1d, 0xc4, 0xa8, - 0xa0, 0x7e, 0x19, 0x27, 0xf4, 0xae, 0x88, 0x60, 0xb1, 0x35, - 0x3e, 0xa, 0x52, 0x7f, 0x26, 0x5a, 0xa5, 0x52, 0x5b, 0x45, - 0x9c, 0x25, 0x15, 0xee, 0x3a, 0x2f, 0xec, 0xcf, 0x2b, 0x6d, - 0x6d, 0x5b, 0x58, 0x54, 0xf5, 0x8a, 0xce, 0x3c, 0x9f, 0xfb, - 0xe9, 0xbf, 0xc2, 0xbd, 0x2f, 0xc3, 0x1f, 0xa, 0x7c, 0x35, - 0xe1, 0x4d, 0xaf, 0x6b, 0xa7, 0xac, 0xf7, 0x2b, 0xff, 00, - 0x2f, 0x17, 0x5f, 0xbc, 0x7f, 0xc3, 0x3c, 0xf, 0xc0, 0xa, - 0xf7, 0x30, 0xdc, 0x39, 0x8d, 0xac, 0xef, 0x51, 0x28, 0x2f, - 0x3d, 0x5f, 0xdc, 0xbf, 0xe0, 0x1d, 0x94, 0xf0, 0x35, 0x67, - 0xf1, 0x68, 0x7c, 0xfd, 0xe0, 0xbf, 0x83, 0x9a, 0xff, 00, - 0x8c, 0xc, 0x73, 0x18, 0x7f, 0xb3, 0xb4, 0xf6, 0x23, 0x37, - 0x37, 0x20, 0x82, 0x47, 0xaa, 0xaf, 0x56, 0xfd, 0x7, 0xbd, - 0x7d, 0xf, 0xe0, 0x9f, 0x87, 0x3a, 0x37, 0x81, 0x6d, 0xb6, - 0xd8, 0xc1, 0xe6, 0x5d, 0x32, 0xe2, 0x5b, 0xb9, 0x79, 0x91, - 0xff, 00, 0xc0, 0x7b, 0xa, 0xea, 0x68, 0xaf, 0xba, 0xc0, - 0x64, 0xd8, 0x6c, 0x7, 0xbd, 0x15, 0xcd, 0x2e, 0xef, 0xf4, - 0xec, 0x7b, 0x14, 0x30, 0xb4, 0xe8, 0xea, 0xb5, 0x7d, 0xc2, - 0x8a, 0x28, 0xaf, 0x74, 0xec, 0xa, 0xe5, 0x7e, 0x28, 0x6b, - 0xe3, 0xc3, 0x7e, 0x5, 0xd5, 0xae, 0xc3, 0x6d, 0x95, 0xa2, - 0x30, 0xc4, 0x7b, 0xef, 0x7f, 0x94, 0x7e, 0x59, 0xcf, 0xe1, - 0x5d, 0x55, 0x78, 0xc7, 0xed, 0x29, 0x71, 0x76, 0xfa, 0x46, - 0x95, 0x69, 0xd, 0xbc, 0xcf, 0x6d, 0xe6, 0xb4, 0xf3, 0x4a, - 0x88, 0x4a, 0x29, 0x3, 0xa, 0x9, 0xe9, 0xfc, 0x4d, 0xf9, - 0x57, 0x99, 0x99, 0xd7, 0x78, 0x7c, 0x1d, 0x4a, 0x91, 0xde, - 0xda, 0x7c, 0xf4, 0x39, 0xf1, 0x13, 0x70, 0xa5, 0x29, 0x23, - 0xe7, 0xba, 0x28, 0xa2, 0xbf, 0x12, 0x3e, 0x48, 0x28, 0xa2, - 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, - 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0xbb, 0x3f, 0x5, 0x7c, - 0x27, 0xd7, 0xbc, 0x69, 0x2c, 0x4f, 0x15, 0xbb, 0x59, 0x69, - 0xed, 0xc9, 0xbd, 0xb8, 0x5c, 0x2e, 0x3f, 0xd9, 0x1d, 0x5b, - 0xf0, 0xe3, 0xde, 0xb7, 0xa3, 0x42, 0xae, 0x22, 0x6a, 0x9d, - 0x18, 0xb6, 0xfc, 0x8b, 0x84, 0x25, 0x37, 0x68, 0xab, 0xb3, - 0x9c, 0xd0, 0x34, 0x1b, 0xdf, 0x13, 0x6a, 0xd6, 0xfa, 0x76, - 0x9f, 0x17, 0x9d, 0x73, 0x33, 0x60, 0xe, 0xca, 0x3b, 0xb1, - 0x3d, 0x80, 0xf5, 0xaf, 0xae, 0xbc, 0xb, 0xe0, 0xeb, 0x5f, - 0x3, 0xf8, 0x7a, 0xd, 0x3a, 0xdc, 0x6, 0x90, 0xd, 0xf3, - 0xcc, 0x6, 0xc, 0xb2, 0x1e, 0xa7, 0xfa, 0xf, 0x6a, 0x87, - 0xc0, 0xdf, 0xf, 0xb4, 0xbf, 0x1, 0x58, 0x18, 0x2c, 0x50, - 0xc9, 0x71, 0x26, 0x3c, 0xeb, 0xa9, 00, 0xdf, 0x21, 0xfe, - 0x83, 0xd8, 0x57, 0x4f, 0x5f, 0xa9, 0x64, 0xd9, 0x3a, 0xcb, - 0xe3, 0xed, 0x6a, 0xeb, 0x51, 0xfe, 0xb, 0xb7, 0xf9, 0x9f, - 0x43, 0x85, 0xc2, 0xfb, 0x5, 0xcd, 0x2f, 0x88, 0x28, 0xa2, - 0x8a, 0xfa, 0x73, 0xd1, 0xa, 0x28, 0xa2, 0x80, 0x30, 0x7c, - 0x73, 0x37, 0x91, 0xe1, 0x8b, 0xd6, 0xe9, 0xf2, 0xe2, 0xbe, - 0x8, 0xf1, 0xc4, 0xbe, 0x66, 0xbd, 0x72, 0x73, 0xfc, 0x46, - 0xbe, 0xe8, 0xf8, 0x9f, 0x37, 0x93, 0xe1, 0x2b, 0xa3, 0x9a, - 0xf8, 0x2f, 0xc5, 0xd, 0xbf, 0x55, 0xba, 0x6c, 0xff, 00, - 0x11, 0xaf, 0x84, 0xe2, 0x19, 0x7e, 0xfa, 0x9c, 0x4f, 0x88, - 0xe2, 0x49, 0x7b, 0x91, 0x47, 0x8f, 0x7c, 0x59, 0x9f, 0xcb, - 0xd2, 0x64, 0xe7, 0xb1, 0xfe, 0x55, 0xf7, 0x67, 0xfc, 0x13, - 0xa2, 0xc9, 0xad, 0x3f, 0x64, 0xaf, 0x8, 0xbb, 0xc, 0x1b, - 0x89, 0xaf, 0x67, 0xfc, 0xd, 0xd4, 0xa3, 0xfa, 0x57, 0xc0, - 0x5f, 0x19, 0xa6, 0xf2, 0xf4, 0xa9, 0x79, 0xe3, 0x69, 0xaf, - 0xd2, 0x7f, 0xd8, 0xaf, 0x4a, 0x1a, 0x3f, 0xec, 0xaf, 0xf0, - 0xda, 00, 0x41, 0xdf, 0xa5, 0x25, 0xc1, 0xc7, 0xac, 0x8c, - 0xd2, 0x7f, 0xec, 0xd5, 0xed, 0xe5, 0xa, 0xd4, 0x91, 0xe6, - 0xf0, 0x74, 0x7d, 0xda, 0xf3, 0xf3, 0x3d, 0xb2, 0x8a, 0x28, - 0xaf, 0xa0, 0x3f, 0x49, 0x39, 0x5f, 0x8a, 0x1e, 0x30, 0x4f, - 0x2, 0x78, 0x13, 0x56, 0xd6, 0x18, 0xfe, 0xf2, 0x18, 0xb6, - 0xc2, 0x3d, 0x65, 0x6f, 0x95, 0x7, 0xe6, 0x45, 0x7e, 0x7e, - 0xa7, 0x99, 0x77, 0x71, 0x96, 0x26, 0x49, 0xa5, 0x6c, 0xb3, - 0x1e, 0x4b, 0x31, 0x3c, 0x9f, 0xce, 0xbe, 0x93, 0xfd, 0xaf, - 0xfc, 0x64, 0xf, 0xf6, 0x4f, 0x85, 0xa1, 0x3c, 0xff, 00, - 0xc7, 0xf5, 0xc1, 0xf6, 0xe5, 0x50, 0x7f, 0xe8, 0x47, 0xf0, - 0x15, 0xe3, 0xbf, 0x8, 0x3c, 0x2a, 0xde, 0x2d, 0xf1, 0xd6, - 0x9b, 0x69, 0xb4, 0xb4, 0x42, 0x40, 0xf2, 0x7b, 0x28, 0xe6, - 0xbf, 0x3e, 0xce, 0xab, 0x4b, 0x13, 0x8b, 0x8e, 0x1e, 0x1d, - 0x34, 0xf9, 0xb3, 0xf3, 0xbc, 0xe2, 0xa3, 0xc6, 0xe3, 0xe3, - 0x86, 0x86, 0xd1, 0xd3, 0xe6, 0xf7, 0xfd, 0xf, 0xae, 0xfe, - 0x7, 0x78, 0x51, 0x7c, 0x2b, 0xf0, 0xff, 00, 0x4f, 0x8c, - 0xa8, 0x59, 0xe7, 0x5f, 0x36, 0x43, 0x8e, 0xe6, 0xbd, 0x2, - 0xa3, 0xb7, 0x81, 0x2d, 0xa0, 0x8e, 0x14, 0x1b, 0x51, 0x14, - 0x28, 0x3, 0xd0, 0x54, 0x95, 0xf7, 0x54, 0x29, 0x2a, 0x14, - 0xa3, 0x4a, 0x3b, 0x25, 0x63, 0xef, 0xe9, 0x53, 0x54, 0xa1, - 0x18, 0x47, 0x64, 0x14, 0x51, 0x45, 0x6e, 0x6a, 0x7e, 0x70, - 0xff, 00, 0xc1, 0x43, 0xbf, 0xe0, 0x9c, 0x3a, 0xf7, 0xc6, - 0x5f, 0x19, 0x5d, 0x7c, 0x4c, 0xf8, 0x6b, 0xf6, 0x7b, 0x8d, - 0x7a, 0xea, 0x24, 0x1a, 0xae, 0x87, 0x33, 0x88, 0x9a, 0xe9, - 0xd1, 0x42, 0xac, 0xb1, 0x39, 0xf9, 0x77, 0x95, 0x55, 0x52, - 0xad, 0x8c, 0xed, 0x4, 0x1e, 0xb5, 0xf9, 0x9d, 0xe2, 0x4f, - 0xd9, 0xa7, 0xe2, 0xcf, 0x84, 0x2e, 0xe4, 0xb6, 0xd5, 0xfe, - 0x1b, 0x78, 0xaa, 0xce, 0x54, 0xfb, 0xc4, 0xe9, 0x13, 0xba, - 0x7e, 0xe, 0xaa, 0x54, 0xfe, 0x6, 0xbf, 0xa4, 0xfa, 0xe7, - 0xbe, 0x21, 0x78, 0xca, 0xdb, 0xe1, 0xe7, 0x81, 0xb5, 0xef, - 0x13, 0x5e, 0x47, 0x24, 0xd6, 0xfa, 0x55, 0x9c, 0xb7, 0x6d, - 0x14, 0x2a, 0x59, 0xe4, 0xda, 0xa4, 0x84, 0x50, 0x39, 0x2c, - 0xc7, 00, 0x1, 0xdc, 0xd3, 0xb9, 0x2d, 0x5c, 0xfe, 0x63, - 0xef, 0xac, 0x6e, 0x74, 0xcb, 0xb9, 0x6d, 0x6f, 0x2d, 0xe5, - 0xb4, 0xba, 0x85, 0xb6, 0x49, 0x4, 0xe8, 0x51, 0xd1, 0xbd, - 0xa, 0x9e, 0x41, 0xfa, 0xd5, 0x7a, 0xeb, 0x3e, 0x21, 0x5c, - 0x78, 0x93, 0xc5, 0xbe, 0x32, 0xd7, 0x7c, 0x49, 0xae, 0x69, - 0xb7, 0xb0, 0xea, 0x1a, 0xb5, 0xf4, 0xd7, 0xf7, 0x6, 0x68, - 0x1d, 0x70, 0xf2, 0x39, 0x72, 0x39, 0x1d, 0x1, 0x38, 0xaf, - 0xd9, 0xef, 0xf8, 0x27, 0x3f, 0xec, 0xbd, 0xe1, 0xaf, 0x8, - 0x7e, 0xcb, 0x5e, 0x1e, 0xbd, 0xf1, 0x2f, 0x86, 0xf4, 0xcd, - 0x5b, 0x58, 0xf1, 0x29, 0x3a, 0xcc, 0xe7, 0x52, 0xb1, 0x49, - 0x9a, 0x38, 0xe4, 00, 0x42, 0x9f, 0x38, 0x38, 0xc4, 0x6a, - 0xa7, 0x1e, 0xac, 0x69, 0xdc, 0x9b, 0x5c, 0xfc, 0x36, 0xa2, - 0xbf, 0xa4, 0x3d, 0x67, 0xf6, 0x53, 0xf8, 0x37, 0xe2, 0x2, - 0x7f, 0xb4, 0x3e, 0x17, 0xf8, 0x52, 0xe7, 0x3e, 0xba, 0x4c, - 0x23, 0xf9, 0x28, 0xae, 0x53, 0x54, 0xfd, 0x81, 0x7f, 0x67, - 0xbd, 0x5c, 0x62, 0x6f, 0x85, 0x5a, 0xc, 0x5f, 0xf5, 0xeb, - 0x1b, 0xc1, 0xff, 00, 0xa0, 0x30, 0xa5, 0x71, 0xf2, 0x9f, - 0xcf, 0x3d, 0x7d, 0x3f, 0xff, 00, 0x4, 0xe1, 0xf8, 0x2a, - 0x7e, 0x34, 0x7e, 0xd4, 0xfe, 0x18, 0x8e, 0xe2, 0x3, 0x2e, - 0x8f, 0xe1, 0xf6, 0xfe, 0xdc, 0xbe, 0xc8, 0x3b, 0x71, 0x9, - 0x6, 0x25, 0x27, 0xde, 0x53, 0x1f, 0xe0, 0xd, 0x7e, 0xa9, - 0x6a, 0x5f, 0xf0, 0x4c, 0x4f, 0xd9, 0xc3, 0x51, 0x18, 0xff, - 00, 0x84, 00, 0xda, 0xfb, 0xdb, 0x6a, 0x97, 0x69, 0xff, - 00, 0xb5, 0x6b, 0xd0, 0x3e, 00, 0xfe, 0xc8, 0x5f, 0xc, - 0xbf, 0x66, 0x6d, 0x43, 0x59, 0xbd, 0xf0, 0xe, 0x8d, 0x71, - 0xa6, 0xdc, 0xea, 0xd1, 0xc7, 0xd, 0xd3, 0xdc, 0x5e, 0xcb, - 0x72, 0x4a, 0x21, 0x62, 0xa1, 0x7c, 0xc2, 0x76, 0x8c, 0xb1, - 0xce, 0x3a, 0xf1, 0xe9, 0x45, 0xc3, 0x94, 0xf6, 0x7a, 0xfc, - 0xf8, 0xff, 00, 0x82, 0xc6, 0xfc, 0x66, 0x3e, 0x11, 0xf8, - 0x31, 0xa1, 0x7c, 0x3f, 0xb3, 0x98, 0xa5, 0xef, 0x8a, 0x6e, - 0xfc, 0xeb, 0x90, 0xa7, 0x9f, 0xb2, 0x5b, 0x95, 0x62, 0xf, - 0xd6, 0x46, 0x8f, 0xfe, 0xf9, 0x35, 0xfa, 0xf, 0x5f, 0x23, - 0xfe, 0xd6, 0x9f, 0xf0, 0x4f, 0x2d, 0x1b, 0xf6, 0xb2, 0xf1, - 0xd5, 0xaf, 0x8a, 0x35, 0x7f, 0x1c, 0x6b, 0x1a, 0x34, 0xf6, - 0x96, 0x6b, 0x65, 0x6d, 0x65, 0x6f, 0x6f, 0x14, 0x90, 0x44, - 0x80, 0x96, 0x24, 0x3, 0x83, 0x96, 0x66, 0x24, 0xf3, 0xd8, - 0x7a, 0x52, 0x29, 0x9f, 0x83, 0xf4, 0x57, 0xea, 0x9e, 0xa5, - 0xff, 00, 0x4, 0x45, 0xb5, 0x20, 0xfd, 0x83, 0xe2, 0xc4, - 0xca, 0x7b, 0xb, 0x9d, 0x10, 0x1f, 0xd5, 0x66, 0x15, 0xcf, - 0x5d, 0xff, 00, 0xc1, 0x11, 0xbc, 0x42, 0xaa, 0x4d, 0xaf, - 0xc5, 0x6d, 0x32, 0x46, 0xec, 0x26, 0xd1, 0xe4, 0x41, 0xf9, - 0x89, 0x4f, 0xf2, 0xaa, 0xb9, 0x16, 0x67, 0xe6, 0x66, 0x7, - 0xa5, 0x49, 0x14, 0xf2, 0x42, 0x7f, 0x77, 0x23, 0xc7, 0xfe, - 0xeb, 0x11, 0x5f, 0xa2, 0x1a, 0x87, 0xfc, 0x11, 0x57, 0xe2, - 0x44, 0x8, 0x4d, 0x9f, 0x8f, 0x3c, 0x31, 0x74, 0x7b, 0x2c, - 0x91, 0xdc, 0x47, 0xff, 00, 0xb2, 0x1a, 0xe3, 0xf5, 0x4f, - 0xf8, 0x23, 0xd7, 0xc7, 0x5b, 0x32, 0xdf, 0x65, 0xb9, 0xf0, - 0xb5, 0xfa, 0x8e, 0x9e, 0x5e, 0xa4, 0xe8, 0x4f, 0xfd, 0xf5, - 0x10, 0xa2, 0xe1, 0x66, 0x7c, 0x69, 0xa6, 0xf8, 0xcf, 0xc4, - 0x1a, 0x3b, 0x87, 0xb0, 0xd7, 0x75, 0x3b, 0x17, 0x1d, 0x1a, - 0xda, 0xf2, 0x48, 0xcf, 0xe8, 0xc2, 0xba, 0x9d, 0x3f, 0xf6, - 0x87, 0xf8, 0xa7, 0xa5, 0x38, 0x6b, 0x4f, 0x89, 0x1e, 0x2c, - 0x84, 0x8e, 0x9b, 0x75, 0xab, 0x9c, 0xf, 0xc3, 0x7d, 0x7b, - 0xce, 0xa5, 0xff, 00, 0x4, 0xab, 0xfd, 0xa2, 0x74, 0xf0, - 0x4a, 0x78, 0x5b, 0x4f, 0xbd, 0x3, 0xfe, 0x7d, 0x75, 0x68, - 0xe, 0x7f, 0xef, 0xa6, 0x15, 0xc9, 0xea, 0x7f, 0xf0, 0x4e, - 0xbf, 0xda, 0x27, 0x4a, 0x4, 0xbf, 0xc3, 0x2d, 0x46, 0x75, - 0x1d, 0xed, 0xae, 0x2d, 0xe5, 0xfd, 0x16, 0x4c, 0xd0, 0x16, - 0x67, 0x33, 0x61, 0xfb, 0x69, 0x7c, 0x76, 0xd3, 0x48, 0xf2, - 0x3e, 0x2b, 0xf8, 0xa7, 0x8e, 0x82, 0x4d, 0x41, 0xe4, 0x1f, - 0xf8, 0xf6, 0x6b, 0xa1, 0xb4, 0xff, 00, 0x82, 0x86, 0xfe, - 0xd1, 0x56, 0x61, 0x44, 0x7f, 0x14, 0xb5, 0x56, 0x3, 0xfe, - 0x7a, 0xc1, 0x6f, 0x27, 0xfe, 0x85, 0x19, 0xae, 0x67, 0x53, - 0xfd, 0x8d, 0xfe, 0x39, 0x69, 0x19, 0xfb, 0x4f, 0xc2, 0x9f, - 0x15, 0xe0, 0x75, 0x31, 0x69, 0x92, 0x4b, 0xff, 00, 0xa0, - 0x3, 0x5c, 0xdd, 0xd7, 0xec, 0xf7, 0xf1, 0x4a, 0xc7, 0x3f, - 0x68, 0xf8, 0x6f, 0xe2, 0xd8, 0x71, 0xd7, 0x7e, 0x87, 0x72, - 0x3f, 0xf6, 0x4a, 0x3, 0x53, 0xda, 0x2c, 0xbf, 0xe0, 0xa7, - 0x9f, 0xb4, 0x7d, 0x96, 0x3f, 0xe2, 0xbf, 0x17, 00, 0x76, - 0x9f, 0x4a, 0xb4, 0x6c, 0xff, 00, 0xe4, 0x2a, 0xea, 0x34, - 0xff, 00, 0xf8, 0x2b, 0x87, 0xed, 0x5, 0x64, 0x81, 0x65, - 0xd4, 0x3c, 0x3f, 0x7d, 0x8e, 0xf7, 0x1a, 0x4a, 0x82, 0x7f, - 0xef, 0x96, 0x5a, 0xf9, 0x4e, 0xf7, 0xe1, 0xaf, 0x8b, 0xf4, - 0xd0, 0x4d, 0xdf, 0x85, 0x75, 0xbb, 0x50, 0x3a, 0xf9, 0xfa, - 0x74, 0xc9, 0x8f, 0xcd, 0x6b, 0xe, 0xeb, 0x4f, 0xba, 0xb2, - 0x38, 0xb8, 0xb6, 0x9a, 0x3, 0xe9, 0x2c, 0x65, 0x7f, 0x9d, - 0x1, 0x76, 0x7d, 0xe7, 0xa5, 0x7f, 0xc1, 0x66, 0x3e, 0x30, - 0xda, 0x15, 0xfb, 0x6f, 0x87, 0x7c, 0x2b, 0x7e, 0x7, 0x5f, - 0xf4, 0x79, 0xa2, 0xcf, 0xe5, 0x25, 0x75, 0x76, 0x1f, 0xf0, - 0x5b, 0x3f, 0x18, 0xc5, 0x8f, 0xb6, 0xfc, 0x33, 0xd0, 0xee, - 0x3d, 0x7c, 0x8d, 0x42, 0x68, 0xbf, 0x9a, 0xb5, 0x7e, 0x6c, - 0xe4, 0x52, 0xd1, 0x60, 0xbb, 0x3f, 0x53, 0x74, 0xef, 0xf8, - 0x2d, 0xd0, 0x38, 0xfb, 0x7f, 0xc2, 0x82, 0xbe, 0xbf, 0x66, - 0xd6, 0xb3, 0xfc, 0xe1, 0x15, 0xd2, 0xd9, 0xff, 00, 0xc1, - 0x6c, 0xfc, 0x1a, 0xe0, 0x7d, 0xaf, 0xe1, 0xae, 0xbb, 0x11, - 0xef, 0xe4, 0xdf, 0x42, 0xff, 00, 0xcc, 0x2d, 0x7e, 0x46, - 0xd1, 0x45, 0x82, 0xec, 0xfd, 0x8f, 0xb1, 0xff, 00, 0x82, - 0xd2, 0xfc, 0x29, 0x9b, 0x2, 0xe7, 0xc1, 0x9e, 0x2e, 0xb6, - 0xf5, 0x2b, 0x1d, 0xb3, 0x8f, 0xfd, 0x1c, 0x2b, 0xa4, 0xd3, - 0xbf, 0xe0, 0xb0, 0xff, 00, 0x2, 0xef, 0x31, 0xf6, 0x9b, - 0x5f, 0x14, 0xd8, 0x13, 0xff, 00, 0x3d, 0x74, 0xd4, 0x70, - 0x3f, 0xef, 0x89, 0xd, 0x7e, 0x26, 0x51, 0x45, 0x87, 0xcc, - 0xcf, 0xdd, 0xdd, 0x3f, 0xfe, 0xa, 0xad, 0xfb, 0x3a, 0x5f, - 0x85, 0xdd, 0xe2, 0xbb, 0xfb, 0x46, 0x3f, 0xc3, 0x71, 0xa3, - 0xdc, 0x8c, 0x7e, 0x21, 0x8, 0xae, 0xb7, 0x4b, 0xff, 00, - 0x82, 0x89, 0x7e, 0xce, 0xfa, 0xaa, 0x6, 0x4f, 0x89, 0xba, - 0x6d, 0xb9, 0x3f, 0xc3, 0x75, 0xc, 0xd1, 0x1f, 0xd5, 0x2b, - 0xf9, 0xf5, 0xa2, 0x8b, 0x7, 0x31, 0xfd, 0x18, 0x69, 0xdf, - 0xb6, 0x8f, 0xc0, 0x8d, 0x51, 0x41, 0x83, 0xe2, 0xcf, 0x84, - 0xf9, 0xe8, 0x25, 0xd4, 0xe3, 0x88, 0xfe, 0x4e, 0x41, 0xae, - 0xa3, 0x4a, 0xfd, 0xa0, 0xbe, 0x18, 0x6b, 0x60, 0x7d, 0x83, - 0xe2, 0x1f, 0x85, 0xee, 0xf3, 0xff, 00, 0x3c, 0xb5, 0x7b, - 0x73, 0xff, 00, 0xb3, 0xd7, 0xf3, 0x4f, 0x45, 0x2b, 0x7, - 0x31, 0xfd, 0x3c, 0xd9, 0xf8, 0xff, 00, 0xc2, 0xfa, 0x81, - 0xc5, 0xaf, 0x89, 0x34, 0x8b, 0x92, 0x7b, 0x43, 0x7d, 0x13, - 0xff, 00, 0x26, 0xad, 0x58, 0x75, 0x5b, 0x2b, 0x83, 0x88, - 0xaf, 0x2d, 0xe4, 0x3e, 0x89, 0x2a, 0x9f, 0xeb, 0x5f, 0xcb, - 0x86, 0x7, 0xa5, 0x5a, 0xb4, 0xd5, 0x2f, 0x34, 0xf6, 0x6, - 0xd6, 0xee, 0x7b, 0x62, 0x3a, 0x18, 0x65, 0x64, 0xfe, 0x46, - 0x8b, 0xf, 0x98, 0xfe, 0xa3, 0x83, 0x3, 0xd0, 0x83, 0x4b, - 0x5f, 0xcc, 0x86, 0x9f, 0xf1, 0x5b, 0xc6, 0xda, 0x49, 0x6, - 0xc7, 0xc6, 0x3a, 0xfd, 0x91, 0x1d, 0xd, 0xbe, 0xa9, 0x3c, - 0x7f, 0xc9, 0xeb, 0xa8, 0xd2, 0xff, 00, 0x6a, 0x6f, 0x8c, - 0x5a, 0x2c, 0x8a, 0xf6, 0x9f, 0x14, 0x3c, 0x5a, 0x85, 0x7a, - 0x6f, 0xd6, 0x27, 0x90, 0x7e, 0x4c, 0xc4, 0x51, 0x60, 0xe6, - 0x3f, 0xa4, 0x7a, 0x2b, 0xf9, 0xe6, 0xb3, 0xfd, 0xbf, 0x3f, - 0x68, 0x4b, 0x12, 0xbe, 0x5f, 0xc5, 0x5d, 0x71, 0xb6, 0xf4, - 0x12, 0x98, 0xe4, 0x1f, 0xf8, 0xf2, 0x1a, 0xe8, 0xec, 0x7f, - 0xe0, 0xa6, 0x9f, 0xb4, 0x7d, 0x96, 0xd1, 0xff, 00, 0xb, - 0xd, 0xee, 0x15, 0x7b, 0x4f, 0xa6, 0x5a, 0x36, 0x7e, 0xa7, - 0xca, 0xcd, 0x16, 0xe, 0x64, 0x7e, 0xfb, 0x51, 0x5f, 0x86, - 0x76, 0x3f, 0xf0, 0x56, 0xcf, 0xda, 0x12, 0xce, 0x35, 0x57, - 0xd5, 0x34, 0x2b, 0xbc, 0x7f, 0x14, 0xfa, 0x42, 0x64, 0xff, - 00, 0xdf, 0x24, 0x56, 0xdd, 0x97, 0xfc, 0x16, 0x33, 0xe3, - 0xad, 0xb6, 0x4, 0xda, 0x7f, 0x84, 0x2e, 0xfd, 0xe4, 0xd3, - 0x66, 0x53, 0xff, 00, 0x8e, 0xce, 0x28, 0xb0, 0x5d, 0x1f, - 0xb6, 0x34, 0x57, 0xe3, 0xb6, 0x9d, 0xff, 00, 0x5, 0xa8, - 0xf8, 0x9b, 0x2, 0xa8, 0xbd, 0xf0, 0x3f, 0x85, 0xee, 0xdb, - 0xb9, 0x8d, 0xae, 0x22, 0xcf, 0xfe, 0x3e, 0x6b, 0xa5, 0xd3, - 0xff, 00, 0xe0, 0xb7, 0x1a, 0xfc, 0x78, 0xfb, 0x77, 0xc2, - 0xbd, 0x36, 0x7f, 0xfa, 0xf7, 0xd5, 0xe4, 0x8f, 0xf9, 0xc4, - 0xd4, 0x58, 0x77, 0x47, 0xeb, 0x25, 0x15, 0xf9, 0x8b, 0xa5, - 0x7f, 0xc1, 0x6e, 0x34, 0x77, 0x51, 0xfd, 0xa5, 0xf0, 0xae, - 0xfa, 0x16, 0xef, 0xf6, 0x5d, 0x5d, 0x24, 0x1f, 0xf8, 0xf4, - 0x6b, 0x5d, 0xd, 0xaf, 0xfc, 0x16, 0xbf, 0xe1, 0xe3, 0x91, - 0xf6, 0x9f, 0x87, 0xbe, 0x27, 0x88, 0x7a, 0xc5, 0x35, 0xb3, - 0xff, 00, 0x37, 0x5a, 0x2, 0xe8, 0xfd, 0x19, 0xa2, 0xbe, - 0x1, 0xd3, 0x7f, 0xe0, 0xb3, 0xbf, 0x7, 0xae, 0xdc, 0xb, - 0xaf, 0xc, 0x78, 0xc2, 0xc4, 0x7f, 0x79, 0xed, 0xad, 0x9c, - 0x7f, 0xe3, 0xb3, 0x1a, 0xeb, 0x74, 0xef, 0xf8, 0x2b, 0x87, - 0xec, 0xfb, 0x79, 0x8f, 0x3b, 0x50, 0xd7, 0xac, 0x49, 0xff, - 00, 0x9e, 0xfa, 0x4b, 0x9c, 0x7f, 0xdf, 0x24, 0xd2, 0xb, - 0xa3, 0xed, 0x1a, 0x2b, 0xe5, 0x5d, 0x33, 0xfe, 0xa, 0x7d, - 0xfb, 0x39, 0xea, 0x78, 0x1f, 0xf0, 0x9d, 0x3d, 0xa1, 0x3d, - 0xae, 0xb4, 0xcb, 0x94, 0xfd, 0x7c, 0xbc, 0x57, 0x57, 0xa6, - 0xfe, 0xdf, 0x1f, 0xb3, 0xee, 0xa8, 0x7, 0x95, 0xf1, 0x4f, - 0x42, 0x8c, 0x9e, 0xd7, 0x12, 0x3c, 0x47, 0xff, 00, 0x1e, - 0x51, 0x40, 0xcf, 0x7f, 0xa2, 0xbc, 0x9b, 0x4e, 0xfd, 0xad, - 0x7e, 0xb, 0x6a, 0xc4, 0xb, 0x5f, 0x8a, 0x7e, 0x13, 0x90, - 0x9e, 0xcd, 0xab, 0xc2, 0xa7, 0xf5, 0x61, 0x5d, 0x4d, 0x87, - 0xc6, 0x4f, 00, 0xea, 0xb8, 0xfb, 0x17, 0x8d, 0xbc, 0x3b, - 0x77, 0x9e, 0x9e, 0x4e, 0xab, 0x3, 0x67, 0xf2, 0x7a, 00, - 0xec, 0x28, 0xac, 0x9b, 0x7f, 0x17, 0x68, 0x57, 0x78, 0xf2, - 0x35, 0xad, 0x3a, 0x6c, 0xff, 00, 0xcf, 0x3b, 0xa8, 0xdb, - 0xf9, 0x1a, 0xd0, 0x8a, 0xf2, 0x9, 0xff, 00, 0xd5, 0xcf, - 0x1c, 0x9f, 0xee, 0xb8, 0x34, 0x1, 0x35, 0x14, 0x51, 0x40, - 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, 0x51, 0x40, 0x5, 0x14, - 0x51, 0x40, 0x5, 0x23, 0x28, 0x60, 0x41, 00, 0x83, 0xd4, - 0x1a, 0x5a, 0x28, 0x3, 0x97, 0xd5, 0xbe, 0x19, 0x78, 0x5b, - 0x5b, 0x2c, 0xd7, 0x5a, 0x25, 0xae, 0xf6, 0xeb, 0x24, 0x4b, - 0xe5, 0x31, 0xfc, 0x57, 0x15, 0xc5, 0xea, 0xff, 00, 0xb3, - 0x7e, 0x83, 0x76, 0x4b, 0x58, 0x5e, 0xdd, 0xd8, 0x1e, 0xca, - 0xc4, 0x4a, 0xbf, 0xae, 0xf, 0xeb, 0x5e, 0xb9, 0x45, 0x79, - 0xd5, 0xb2, 0xec, 0x1e, 0x23, 0xf8, 0x94, 0x93, 0xf9, 0x59, - 0xfd, 0xe8, 0xc2, 0x74, 0x29, 0x4f, 0xe2, 0x8a, 0x3e, 0x7b, - 0xbd, 0xfd, 0x99, 0xb5, 0x38, 0xf2, 0x6d, 0x35, 0x9b, 0x59, - 0x87, 0x61, 0x34, 0x4d, 0x1f, 0xf2, 0xdd, 0x58, 0x17, 0xbf, - 0xb3, 0xff, 00, 0x8b, 0xad, 0x9, 0xf2, 0xe0, 0xb5, 0xbb, - 0x3, 0xbc, 0x33, 0x8f, 0xfd, 0x9b, 0x15, 0xf5, 0x1d, 0x15, - 0xe4, 0x54, 0xe1, 0xcc, 0x4, 0xfe, 0x14, 0xd7, 0xa3, 0xff, - 00, 0x3b, 0x9c, 0xb2, 0xc0, 0x51, 0x7b, 0x68, 0x7c, 0x87, - 0x3f, 0xc2, 0x3f, 0x18, 0x5b, 0xe7, 0x76, 0x83, 0x72, 0xc3, - 0xd5, 0xa, 0xb7, 0xf2, 0x35, 0x49, 0xfe, 0x1d, 0x78, 0xa2, - 0x33, 0xcf, 0x87, 0xf5, 0x1f, 0xc2, 0xd9, 0xcf, 0xf4, 0xaf, - 0xb2, 0x68, 0xae, 0x27, 0xc2, 0xd8, 0x6e, 0x95, 0x25, 0xf8, - 0x7f, 0x91, 0x93, 0xcb, 0xa1, 0xd2, 0x4c, 0xf8, 0xd0, 0x7c, - 0x3d, 0xf1, 0x3b, 0x1e, 0x3c, 0x3f, 0xa9, 0x7f, 0xe0, 0x2b, - 0xff, 00, 0x85, 0x5c, 0xb7, 0xf8, 0x53, 0xe2, 0xeb, 0xaf, - 0xb9, 0xa0, 0x5d, 0x8f, 0xfa, 0xe8, 0x2, 0x7f, 0xe8, 0x44, - 0x57, 0xd7, 0xf4, 0x50, 0xb8, 0x5b, 0xf, 0xd6, 0xa4, 0xbf, - 0xf, 0xf2, 0x5, 0x97, 0x43, 0xac, 0x99, 0xf2, 0xe6, 0x9f, - 0xf0, 0x3, 0xc5, 0xb7, 0xa4, 0x79, 0xb0, 0x5b, 0x59, 0x2f, - 0xac, 0xf3, 0x83, 0xfa, 0x2e, 0x6b, 0xa9, 0xd2, 0xbf, 0x66, - 0x59, 0x4b, 0x2b, 0x6a, 0x5a, 0xda, 0x2a, 0xf7, 0x4b, 0x58, - 0x72, 0x7f, 0xef, 0xa6, 0x3f, 0xd2, 0xbd, 0xea, 0x8a, 0xef, - 0xa5, 0xc3, 0xb8, 0xa, 0x7a, 0xca, 0x2e, 0x5e, 0xaf, 0xfc, - 0xac, 0x6d, 0x1c, 0xd, 0x18, 0xee, 0xae, 0x71, 0x5e, 0x1e, - 0xf8, 0x3d, 0xe1, 0x6f, 0xe, 0xec, 0x78, 0xf4, 0xd5, 0xbc, - 0xb8, 0x5e, 0x7c, 0xeb, 0xc3, 0xe6, 0x1c, 0xfa, 0xe0, 0xf0, - 0x3f, 0x1, 0x5d, 0xa0, 0x1, 0x40, 00, 0x60, 0xe, 0x80, - 0x52, 0xd1, 0x5e, 0xfd, 0x1a, 0x14, 0xb0, 0xf1, 0xe5, 0xa5, - 0x15, 0x15, 0xe4, 0x8e, 0xd8, 0xc2, 0x30, 0x56, 0x8a, 0xb0, - 0x51, 0x45, 0x15, 0xb9, 0x61, 0x45, 0x14, 0x50, 0x1, 0x45, - 0x14, 0x50, 0x7, 0x1, 0xf1, 0xa6, 0xef, 0xec, 0xde, 0x11, - 0x7f, 0x73, 0x5f, 0xa, 0x6b, 0x72, 0x79, 0x97, 0x97, 0xc, - 0x7b, 0xb1, 0xaf, 0xb5, 0x7f, 0x68, 0x1b, 0x9f, 0x27, 0xc3, - 0x8, 0x9e, 0xb9, 0x35, 0xf1, 0x1e, 0xa8, 0xfb, 0xa4, 0x94, - 0xfa, 0xb1, 0xaf, 0xce, 0xf3, 0xd9, 0x73, 0x63, 0x23, 0x1e, - 0xc8, 0xfc, 0xfb, 0x89, 0x67, 0xef, 0x24, 0x78, 0x67, 0xc7, - 0x2b, 0x8d, 0x9a, 0x5c, 0xe3, 0xfd, 0x93, 0xfc, 0xab, 0xf5, - 0x97, 0xf6, 0x7f, 0xd2, 0x46, 0x85, 0xf0, 0x37, 0xc0, 0x16, - 0xb, 0x9c, 0x41, 0xa1, 0x59, 0xaf, 0x3e, 0xbe, 0x4a, 0xe6, - 0xbf, 0x22, 0xfe, 0x38, 0x39, 0x9a, 0x23, 0xa, 0xe5, 0x9a, - 0x46, 0x8, 00, 0xea, 0x49, 0xe2, 0xbf, 0x68, 0x3c, 0x33, - 0x62, 0x9a, 0x5f, 0x86, 0xf4, 0xab, 0x38, 0xc6, 0xd4, 0xb7, - 0xb4, 0x8a, 0x25, 0x7, 0xb0, 0x54, 0x3, 0xfa, 0x57, 0xd5, - 0xe5, 0x6a, 0xd4, 0x51, 0x5c, 0x1d, 0x1b, 0x61, 0x27, 0x2e, - 0xf2, 0x66, 0x9d, 0x14, 0x51, 0x5e, 0xc9, 0xf7, 0xe7, 0xe7, - 0xef, 0xc5, 0xdf, 0x13, 0x3f, 0x8b, 0x3e, 0x26, 0xf8, 0x82, - 0xf9, 0xf8, 0xb, 0x72, 0x6d, 0x90, 0x7a, 0x2c, 0x7f, 0x20, - 0xff, 00, 0xd0, 0x49, 0xfc, 0x6b, 0xdc, 0xbf, 0x64, 0xbf, - 0x8, 0xf9, 0x76, 0xd7, 0xda, 0xe4, 0xa9, 0xc9, 0x3e, 0x54, - 0x44, 0xfe, 0xb5, 0xf3, 0x7d, 0xfc, 0x6f, 0xa9, 0xf8, 0xdf, - 0x58, 0x86, 0x31, 0xba, 0x49, 0x35, 0x3b, 0x85, 00, 0x7a, - 0xf9, 0xad, 0x5f, 0x7c, 0x7c, 0x35, 0xf0, 0xd2, 0x78, 0x53, - 0xc1, 0x9a, 0x6d, 0x82, 0xa0, 0x46, 0x58, 0x83, 0x3f, 0xfb, - 0xc4, 0x57, 0xc1, 0x65, 0x94, 0x25, 0x5f, 0x30, 0x95, 0x59, - 0xfd, 0x9b, 0xbf, 0x9b, 0x3f, 0x39, 0xe1, 0xfa, 0x6f, 0x17, - 0x89, 0x9e, 0x2a, 0x7d, 0x2e, 0xfe, 0x6c, 0xea, 0x28, 0xa2, - 0x8a, 0xfb, 0xd3, 0xf4, 0x60, 0xa2, 0x8a, 0x28, 00, 0xa2, - 0x9a, 0xe8, 0x1c, 0x60, 0xe7, 0xd7, 0x83, 0x8a, 0x5c, 0x7b, - 0x9a, 00, 0xaf, 0x73, 0xa6, 0xda, 0x5e, 0x29, 0x17, 0x16, - 0xb0, 0xce, 0xf, 0x69, 0x23, 0xd, 0xfc, 0xc5, 0x4f, 0x1c, - 0x49, 0xc, 0x6b, 0x1c, 0x68, 0xb1, 0xc6, 0x80, 0x2a, 0xaa, - 0x8c, 00, 0x7, 0x40, 0x5, 0x3a, 0x8a, 00, 0x28, 0xa2, - 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, - 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x28, 0xa2, - 0x8a, 00, 0x28, 0xa2, 0x8a, 00, 0x46, 0x50, 0xc3, 0x4, - 0x2, 0x3d, 0xd, 0x67, 0x5e, 0x78, 0x6b, 0x48, 0xd4, 0x3f, - 0xe3, 0xeb, 0x4a, 0xb2, 0xb9, 0xff, 00, 0xae, 0xd6, 0xe8, - 0xff, 00, 0xcc, 0x56, 0x95, 0x14, 0x1, 0xc5, 0x6a, 0x9f, - 0x4, 0xfe, 0x1e, 0xeb, 0x60, 0x8d, 0x43, 0xc0, 0xde, 0x1c, - 0xbd, 0xdd, 0xd7, 0xcf, 0xd2, 0xa0, 0x7c, 0xfe, 0x6b, 0x5c, - 0xa6, 0xa7, 0xfb, 0x1f, 0x7c, 0x10, 0xd6, 0x14, 0x8b, 0xbf, - 0x85, 0x5e, 0x13, 0x70, 0x7a, 0xec, 0xd2, 0xa2, 0x4f, 0xfd, - 0x4, 0xa, 0xf6, 0xa, 0x28, 0x3, 0xe7, 0x4d, 0x57, 0xfe, - 0x9, 0xe5, 0xfb, 0x3c, 0x6a, 0xe0, 0x89, 0x7e, 0x18, 0x69, - 0x50, 0xe7, 0xfe, 0x7d, 0x64, 0x9a, 0xf, 0xfd, 0x1, 0xc5, - 0x72, 0xb7, 0x9f, 0xf0, 0x4a, 0xff, 00, 0xd9, 0xbe, 0xe8, - 0xb1, 0x5f, 0x5, 0xdd, 0xdb, 0x13, 0xff, 00, 0x3c, 0x75, - 0xab, 0xce, 0x3f, 0x3, 0x29, 0x15, 0xf5, 0xad, 0x14, 0x1, - 0xf1, 0x76, 0xa3, 0xff, 00, 0x4, 0x8e, 0xfd, 0x9f, 0x6f, - 0x50, 0xac, 0x1a, 0x7e, 0xbf, 0xa7, 0x9f, 0xef, 0x41, 0xab, - 0xbb, 0x1f, 0xfc, 0x7c, 0x35, 0x72, 0xba, 0x97, 0xfc, 0x11, - 0x97, 0xe0, 0xe5, 0xca, 0x9f, 0xb1, 0x78, 0x93, 0xc5, 0xd6, - 0x4d, 0xfe, 0xd5, 0xd5, 0xbc, 0x80, 0x7e, 0x70, 0x8a, 0xfb, - 0xee, 0x8a, 0x5, 0x64, 0x7e, 0x6d, 0xea, 0x1f, 0xf0, 0x44, - 0xdf, 0x5, 0xbc, 0x6d, 0xf6, 0x1f, 0x89, 0x1a, 0xf4, 0x2f, - 0xfc, 0x3f, 0x68, 0xb3, 0x82, 0x40, 0x3f, 0x2d, 0xb5, 0xc8, - 0xea, 0x1f, 0xf0, 0x44, 0x5b, 0x80, 0x18, 0xd8, 0xfc, 0x58, - 0x8c, 0x9f, 0xe1, 0x5b, 0x8d, 0x10, 0x8f, 0xcc, 0x89, 0xbf, - 0xa5, 0x7e, 0xa9, 0x51, 0x4c, 0x2c, 0x8f, 0xc8, 0x5b, 0xff, - 00, 0xf8, 0x22, 0x7f, 0x8e, 0xe2, 0xc, 0x6c, 0xfe, 0x22, - 0xf8, 0x7e, 0xe3, 0xfb, 0xa2, 0x6b, 0x49, 0xe3, 0xcf, 0xe5, - 0xba, 0xb9, 0x1d, 0x43, 0xfe, 0x8, 0xd9, 0xf1, 0xba, 0xd9, - 0x9b, 0xec, 0xba, 0xcf, 0x83, 0xef, 0x10, 0x74, 0xcd, 0xfc, - 0xf1, 0xb1, 0xfc, 0xc, 0x18, 0xfd, 0x6b, 0xf6, 0xa2, 0x8a, - 0x2e, 0x16, 0x47, 0xe1, 0xd5, 0xd7, 0xfc, 0x12, 0x2b, 0xf6, - 0x81, 0xb7, 0x56, 0x29, 0x69, 0xe1, 0xcb, 0x9c, 0x76, 0x8b, - 0x56, 0x19, 0x3f, 0xf7, 0xd2, 0xa, 0xe6, 0x35, 0x1f, 0xf8, - 0x25, 0xef, 0xed, 0x1b, 0x60, 0x5b, 0x6f, 0x81, 0xa2, 0xbc, - 0xb, 0xde, 0xdb, 0x55, 0xb5, 0x39, 0xfa, 0x66, 0x40, 0x6b, - 0xf7, 0xb2, 0x8a, 0x2e, 0x2e, 0x54, 0x7f, 0x3d, 0x77, 0xdf, - 0xf0, 0x4f, 0xdf, 0xda, 0x1b, 0x4f, 0x24, 0x49, 0xf0, 0xb3, - 0x59, 0x7c, 0x77, 0x80, 0xc5, 0x2f, 0xfe, 0x82, 0xe6, 0xb9, - 0x2d, 0x53, 0xf6, 0x4e, 0xf8, 0xd1, 0xa3, 0xbb, 0x25, 0xd7, - 0xc2, 0xdf, 0x16, 0x23, 0x2f, 0x5f, 0x2f, 0x48, 0x9a, 0x4f, - 0xfd, 0x5, 0x4d, 0x7f, 0x48, 0x34, 0x51, 0x70, 0xe5, 0x3f, - 0x99, 0x4d, 0x47, 0xe1, 0xf, 0x8e, 0xf4, 0x76, 0x2b, 0x7d, - 0xe0, 0xaf, 0x11, 0x59, 0xb0, 0xea, 0x27, 0xd2, 0xa7, 0x4c, - 0x7e, 0x69, 0x5c, 0xf5, 0xe6, 0x8d, 0xa8, 0x69, 0xcc, 0x56, - 0xee, 0xc6, 0xe6, 0xd4, 0x8e, 0xa2, 0x68, 0x59, 0x3f, 0x98, - 0xaf, 0xea, 0x2c, 0x80, 0x7a, 0x8a, 0xad, 0x71, 0xa5, 0x59, - 0x5d, 0xff, 00, 0xaf, 0xb3, 0xb7, 0x9b, 0xfe, 0xba, 0x44, - 0xad, 0xfc, 0xc5, 0x17, 0xe, 0x53, 0xf9, 0x70, 0xc8, 0xf5, - 0xa5, 0xaf, 0xe9, 0xe6, 0xeb, 0xe1, 0xf7, 0x85, 0xaf, 0xb3, - 0xf6, 0x9f, 0xd, 0x69, 0x17, 0x19, 0xeb, 0xe6, 0xd8, 0x44, - 0xd9, 0xfc, 0xd6, 0xb9, 0xcd, 0x4f, 0xf6, 0x78, 0xf8, 0x5b, - 0xac, 0xe7, 0xed, 0xdf, 0xe, 0xbc, 0x2d, 0x73, 0x9e, 0xbe, - 0x66, 0x91, 0x1, 0xcf, 0xfe, 0x39, 0x45, 0xc5, 0xca, 0x7f, - 0x35, 0x34, 0x57, 0xf4, 0x53, 0xa8, 0xfe, 0xc4, 0x7f, 0x1, - 0x75, 0x56, 0x2d, 0x3f, 0xc2, 0x7f, 0xb, 0x86, 0x3d, 0x4c, - 0x36, 0xb, 0x17, 0xfe, 0x83, 0x8a, 0xe5, 0xb5, 0x3f, 0xf8, - 0x26, 0xf7, 0xec, 0xeb, 0xaa, 0x67, 0x77, 0xc3, 0x8b, 0x4b, - 0x62, 0x7f, 0xe7, 0xd6, 0xee, 0xe2, 0x2f, 0xe5, 0x25, 0x17, - 0xe, 0x53, 0xf9, 0xff, 00, 0xa2, 0xbf, 0x75, 0x35, 0x5f, - 0xf8, 0x24, 0xf7, 0xec, 0xf1, 0xa8, 0xee, 0x31, 0x78, 0x7f, - 0x56, 0xd3, 0xc9, 0xef, 0x6b, 0xab, 0xcd, 0xc7, 0xe0, 0xe5, - 0xab, 0x91, 0xd4, 0x3f, 0xe0, 0x8d, 0x9f, 0x5, 0x2e, 0x77, - 0x7d, 0x9b, 0x5a, 0xf1, 0x75, 0x91, 0x3d, 0x36, 0xdf, 0x42, - 0xe0, 0x7f, 0xdf, 0x50, 0xd3, 0xb8, 0x72, 0x9f, 0x8b, 0x34, - 0x57, 0xec, 0x35, 0xd7, 0xfc, 0x11, 0x53, 0xe1, 0x9b, 0x83, - 0xf6, 0x7f, 0x1e, 0x78, 0xae, 0x13, 0xdb, 0xcc, 0x5b, 0x67, - 0x3, 0xf2, 0x8c, 0x57, 0x3f, 0xa8, 0x7f, 0xc1, 0x12, 0x7c, - 0x3a, 0xc0, 0xfd, 0x87, 0xe2, 0x8e, 0xa9, 0x19, 0xec, 0x2e, - 0x34, 0xb8, 0xdf, 0xf5, 0xe, 0x28, 0xb8, 0xac, 0xcf, 0xc9, - 0x9a, 0x2b, 0xf4, 0xeb, 0x51, 0xff, 00, 0x82, 0x23, 0x6a, - 0xe1, 0x98, 0xd8, 0x7c, 0x56, 0xb2, 0x65, 0xec, 0xb7, 0x1a, - 0x33, 0x83, 0xf9, 0x89, 0x4f, 0xf2, 0xae, 0x5b, 0x52, 0xff, - 00, 0x82, 0x2b, 0x7c, 0x4a, 0x81, 0x8f, 0xd8, 0x7c, 0x75, - 0xe1, 0x8b, 0xb5, 0x1d, 0x3c, 0xe4, 0xb8, 0x88, 0x9f, 0xc9, - 0x1a, 0x8b, 0x85, 0x99, 0xf9, 0xdd, 0x49, 0x5f, 0x73, 0xea, - 0x7f, 0xf0, 0x47, 0x7f, 0x8e, 0x76, 0x84, 0xfd, 0x92, 0xf7, - 0xc2, 0xb7, 0xeb, 0xfe, 0xce, 0xa3, 0x22, 0x1f, 0xfc, 0x7a, - 0x2a, 0xe3, 0xb5, 0x4f, 0xf8, 0x25, 0x87, 0xed, 0x1b, 0xa7, - 0x48, 0x56, 0x2f, 0x7, 0xd9, 0xea, 00, 0x7f, 0x1d, 0xae, - 0xaf, 0x6d, 0x83, 0xff, 00, 0x7d, 0xba, 0x9a, 0x2e, 0x16, - 0x67, 0xc9, 0x40, 0xed, 0x39, 0x1c, 0x1f, 0x51, 0x5a, 0xda, - 0x77, 0x8b, 0xb5, 0xdd, 0x1d, 0x81, 0xb0, 0xd6, 0xb5, 0x1b, - 0x12, 0x3a, 0x1b, 0x6b, 0xb9, 0x23, 0xc7, 0xe4, 0x45, 0x7b, - 0xe5, 0xdf, 0xfc, 0x13, 0x8f, 0xf6, 0x8e, 0xb3, 0x7d, 0xad, - 0xf0, 0xc2, 0xfe, 0x4f, 0x78, 0x6f, 0x2d, 0x5c, 0x7e, 0x92, - 0xd6, 0xe, 0xa3, 0xfb, 0xc, 0x7c, 0x7e, 0xd2, 0x89, 0x13, - 0xfc, 0x28, 0xf1, 0x23, 0x63, 0xbc, 0x16, 0xbe, 0x70, 0xfc, - 0xd0, 0x9a, 0x3, 0x53, 0x85, 0xb0, 0xf8, 0xf3, 0xf1, 0x2f, - 0x4b, 0x60, 0xd6, 0x9f, 0x10, 0x7c, 0x53, 0x6e, 0x47, 0x4d, - 0x9a, 0xcd, 0xc0, 0xc7, 0xfe, 0x3f, 0x5d, 0x4e, 0x9f, 0xfb, - 0x63, 0xfc, 0x71, 0xd2, 0xd9, 0x4d, 0xbf, 0xc5, 0x5f, 0x15, - 0x64, 0x74, 0xf3, 0x75, 0x29, 0x25, 0x1f, 0x93, 0x13, 0x58, - 0xfa, 0xaf, 0xec, 0xcb, 0xf1, 0x73, 0x44, 0x24, 0x5e, 0xfc, - 0x32, 0xf1, 0x64, 0x4, 0x7a, 0xe8, 0xd7, 0x7, 0xf9, 0x25, - 0x73, 0x1a, 0x9f, 0xc3, 0x3f, 0x18, 0x68, 0x80, 0x9d, 0x47, - 0xc2, 0x7a, 0xe5, 0x80, 0x1d, 0x4d, 0xd6, 0x9b, 0x34, 0x7f, - 0xfa, 0x12, 0x8a, 0x3, 0x53, 0xda, 0x6c, 0x7f, 0xe0, 0xa2, - 0x5f, 0xb4, 0x55, 0x86, 0xd0, 0xbf, 0x13, 0xf5, 0x39, 0x40, - 0xed, 0x3c, 0x16, 0xf2, 0x7f, 0x38, 0xeb, 0xa8, 0xd3, 0xbf, - 0xe0, 0xa9, 0xdf, 0xb4, 0x66, 0x9e, 0x81, 0x4f, 0x8c, 0x6d, - 0x2e, 0xc0, 0xff, 00, 0x9f, 0x8d, 0x22, 0xd5, 0x89, 0xfc, - 0x42, 0x3, 0x5f, 0x28, 0x4f, 0x65, 0x71, 0x6a, 0x71, 0x34, - 0x12, 0xc2, 0x7f, 0xe9, 0xa2, 0x15, 0xfe, 0x75, 0x6, 0x47, - 0xad, 0x1, 0x76, 0x7d, 0xb1, 0x67, 0xff, 00, 0x5, 0x79, - 0xf8, 0xff, 00, 0x6a, 0xa0, 0x49, 0x37, 0x86, 0xae, 0xcf, - 0xf7, 0xa6, 0xd2, 0x70, 0x4f, 0xfd, 0xf2, 0xeb, 0x5b, 0x96, - 0x3f, 0xf0, 0x59, 0x6f, 0x8d, 0x76, 0xe0, 0xb, 0x8d, 0x7, - 0xc1, 0xb7, 0x63, 0xb9, 0x36, 0x37, 0x8, 0x4f, 0xe5, 0x3d, - 0x7c, 0x19, 0x45, 0x16, 0xb, 0xb3, 0xf4, 0x7f, 0x4a, 0xff, - 00, 0x82, 0xd8, 0x78, 0xe6, 0x8, 0xf1, 0xa8, 0xfc, 0x39, - 0xd0, 0x2f, 0x1f, 0xfb, 0xd6, 0xf7, 0x93, 0x40, 0x3f, 0x22, - 0x1e, 0xba, 0x8d, 0x27, 0xfe, 0xb, 0x73, 0x37, 0xfc, 0xc4, - 0xfe, 0x14, 0x47, 0xff, 00, 0x6e, 0x9a, 0xc9, 0xff, 00, - 0xd9, 0xa1, 0xaf, 0xcb, 0x8a, 0x28, 0xb0, 0x5d, 0x9f, 0xad, - 0xfa, 0x5f, 0xfc, 0x16, 0xcf, 0xc2, 0x12, 0x11, 0xfd, 0xa3, - 0xf0, 0xd3, 0x5b, 0xb7, 0x1d, 0xcd, 0xad, 0xf4, 0x32, 0xff, - 00, 0xe8, 0x41, 0x6b, 0xa8, 0xd3, 0x3f, 0xe0, 0xb3, 0xdf, - 0x8, 0xae, 0xdc, 0xb, 0xbf, 0xa, 0xf8, 0xb6, 0xc4, 0x7f, - 0x78, 0xc1, 0x6f, 0x27, 0xf2, 0x96, 0xbf, 0x1a, 0x28, 0xa2, - 0xc1, 0xcc, 0xcf, 0xdc, 0x3b, 0x1f, 0xf8, 0x2b, 0xb7, 0xec, - 0xff, 00, 0x76, 0x47, 0x9d, 0x75, 0xe2, 0x3b, 0x2f, 0x79, - 0xb4, 0x92, 0x7f, 0xf4, 0x6, 0x6a, 0xdc, 0xb3, 0xff, 00, - 0x82, 0xaa, 0x7e, 0xce, 0x57, 0x6c, 0x14, 0xf8, 0xbe, 0xfa, - 0xdf, 0x3d, 0xe6, 0xd1, 0xae, 0x80, 0x1f, 0x94, 0x66, 0xbf, - 0x8, 0x28, 0xa2, 0xc3, 0xe6, 0x3f, 0xa0, 0xd, 0x3f, 0xfe, - 0xa, 0x47, 0xfb, 0x39, 0x6a, 0x2c, 0x15, 0x3e, 0x25, 0x5a, - 0x42, 0x4f, 0xfc, 0xfc, 0x59, 0x5d, 0x44, 0x3f, 0x36, 0x88, - 0xa, 0xea, 0x6c, 0x3f, 0x6d, 0xef, 0x80, 0x9a, 0x88, 0x5f, - 0x27, 0xe2, 0xcf, 0x85, 0x81, 0x6e, 0x82, 0x5d, 0x41, 0x63, - 0x3f, 0x93, 0x62, 0xbf, 0x9d, 0x6a, 0x29, 0x58, 0x39, 0x8f, - 0xe9, 0x53, 0x4e, 0xfd, 0xa2, 0xfe, 0x16, 0x6a, 0xca, 0xd, - 0x9f, 0xc4, 0x6f, 0xb, 0x4e, 0xf, 0x4d, 0xba, 0xc4, 0x1c, - 0xff, 00, 0xe3, 0xf5, 0xd3, 0xd8, 0x78, 0xf3, 0xc3, 0x5a, - 0xa8, 0x6, 0xcb, 0xc4, 0x3a, 0x55, 0xd8, 0x3d, 0xc, 0x17, - 0xb1, 0xbe, 0x7f, 0x26, 0xaf, 0xe6, 0x12, 0x95, 0x58, 0xa9, - 0xc8, 0x24, 0x1f, 0x6a, 0x2c, 0x1c, 0xc7, 0xf5, 0x23, 0xd, - 0xed, 0xbd, 0xc8, 0x6, 0x29, 0xe2, 0x94, 0x1f, 0xee, 0x38, - 0x3f, 0xca, 0xa6, 0xaf, 0xe5, 0xf2, 0xc7, 0xc5, 0x9a, 0xde, - 0x96, 00, 0xb3, 0xd6, 0x75, 0xb, 0x40, 0x3a, 0x79, 0x17, - 0x4e, 0x98, 0xfc, 0x8d, 0x6e, 0x5a, 0xfc, 0x66, 0xf8, 0x83, - 0x63, 0x8f, 0xb3, 0x78, 0xef, 0xc4, 0xd6, 0xf8, 0xe9, 0xe5, - 0x6b, 0x17, 0xb, 0xfc, 0x9e, 0x8b, 0xf, 0x98, 0xfe, 0x99, - 0xe8, 0xaf, 0xe6, 0xd6, 0xc7, 0xf6, 0xa0, 0xf8, 0xc1, 0xa6, - 0xe3, 0xec, 0xff, 00, 0x14, 0x3c, 0x5c, 0x98, 0xe9, 0x9d, - 0x6a, 0xe1, 0xbf, 0x9b, 0x9a, 0xe9, 0xb4, 0xef, 0xdb, 0x9f, - 0xe3, 0xf6, 0x96, 00, 0x83, 0xe2, 0xbf, 0x88, 0xc8, 0x1d, - 0xa6, 0xb9, 0x12, 0xff, 00, 0xe8, 0x60, 0xd1, 0x60, 0xe6, - 0x3f, 0xa2, 0x4a, 0x2b, 0xf0, 0x7, 0x4d, 0xff, 00, 0x82, - 0x94, 0x7e, 0xd1, 0xba, 0x6e, 0x31, 0xf1, 0x1e, 0xe2, 0xe8, - 0xe, 0xd7, 0x36, 0x36, 0xaf, 0xfa, 0xf9, 0x79, 0xae, 0xb7, - 0x4c, 0xff, 00, 0x82, 0xb2, 0x7e, 0xd0, 0xba, 0x78, 0x51, - 0x2e, 0xb5, 0xa3, 0x5f, 0x81, 0xff, 00, 0x3f, 0x3a, 0x4c, - 0x79, 0x3f, 0xf7, 0xce, 0xda, 0x2c, 0x1c, 0xc8, 0xfd, 0xd1, - 0xa2, 0xbf, 0x16, 0x74, 0xdf, 0xf8, 0x2c, 0x9f, 0xc6, 0xbb, - 0x45, 0xb, 0x75, 0xa2, 0x78, 0x46, 0xfb, 0x1d, 0x59, 0xac, - 0xa7, 0x42, 0x7f, 0xef, 0x99, 0xb1, 0xfa, 0x57, 0xeb, 0x5f, - 0xc0, 0x9f, 0x1c, 0x6a, 0x7f, 0x13, 0x3e, 0xc, 0xf8, 0x2b, - 0xc5, 0xba, 0xcd, 0xb4, 0x16, 0x5a, 0xa6, 0xb7, 0xa4, 0xdb, - 0x6a, 0x17, 0x16, 0xf6, 0xc0, 0x88, 0xe3, 0x79, 0x23, 0xe, - 0x55, 0x72, 0x49, 0xc0, 0xcf, 0x73, 0x48, 0x77, 0xb9, 0xdd, - 0xd1, 0x45, 0x14, 0xc, 0x28, 0xa2, 0x8a, 00, 0xf1, 0x4f, - 0xda, 0x4e, 0xe7, 0xcb, 0xd1, 0xa1, 0x4c, 0xff, 00, 0x9, - 0x35, 0xf1, 0xa6, 0xa0, 0xdc, 0x39, 0xf5, 0x26, 0xbe, 0xb3, - 0xfd, 0xa7, 0x6e, 0xb6, 0xc0, 0x89, 0x9e, 0x89, 0x8a, 0xf9, - 0x23, 0x51, 0x6c, 0x46, 0xdf, 0x8d, 0x7e, 0x69, 0x9b, 0x3e, - 0x7c, 0xc2, 0x5e, 0x56, 0x3f, 0x31, 0xe2, 0x59, 0xfe, 0xf4, - 0xf0, 0xdf, 0x1d, 0xc4, 0xda, 0x9f, 0x8e, 0x3c, 0x39, 0x62, - 0x83, 0x73, 0xdc, 0xea, 0xd6, 0xb0, 0x85, 0xf5, 0x2d, 0x2a, - 0xc, 0x7e, 0xb5, 0xfb, 0x56, 00, 00, 0x1, 0xd0, 0x57, - 0xe3, 0x1d, 0x9d, 0xa3, 0xeb, 0x5f, 0xb4, 0x7, 0xc3, 0x8b, - 0x18, 0xcf, 0xcf, 0x2f, 0x89, 0x6c, 0x3f, 0x49, 0xd1, 0x8f, - 0xf2, 0xaf, 0xd9, 0xda, 0xfb, 0x8c, 0xbd, 0x5a, 0x8a, 0x3d, - 0xae, 0x13, 0x8f, 0x2e, 0x5a, 0x9f, 0x76, 0xc2, 0x8a, 0x28, - 0xaf, 0x4c, 0xfb, 0x43, 0xf3, 0xa6, 0xf6, 0x59, 0x3e, 0x1f, - 0x7c, 0x74, 0xd7, 0xac, 0xb5, 0x48, 0xb6, 0xc9, 0x6d, 0xa9, - 0xc9, 0x72, 0x23, 0x27, 0x21, 0x92, 0x43, 0xe6, 0x21, 0xfc, - 0x98, 0x57, 0xd7, 0x5a, 0x47, 0xed, 0x13, 0xe1, 0xdb, 0x8b, - 0x48, 0x7c, 0xd9, 0x15, 0x1f, 0x68, 0xc8, 0xd, 0xd3, 0x8a, - 0xf0, 0x9f, 0xdb, 0xc7, 0xe1, 0x85, 0xed, 0x86, 0xa5, 0xa7, - 0x7c, 0x48, 0xd2, 0xd5, 0x9e, 0x25, 0x44, 0xb1, 0xd4, 0x63, - 0x41, 0xf7, 0x70, 0x4f, 0x97, 0x21, 0xf6, 0xe7, 0x69, 0x3f, - 0xee, 0xd7, 0xce, 0xfe, 0x1f, 0xf1, 0x7c, 0x37, 0xf1, 0x28, - 0xf3, 0x36, 0xc9, 0xdd, 0x49, 0xaf, 0x8a, 0xaf, 0xf5, 0x9c, - 0xb6, 0xac, 0xe5, 0x87, 0xd5, 0x33, 0xf2, 0x6f, 0xaf, 0xd5, - 0xe1, 0xcc, 0x55, 0x5c, 0x2b, 0x8f, 0xb8, 0xdd, 0xd3, 0xf2, - 0x67, 0xe8, 0xc4, 0x3f, 0x1c, 0x7c, 0x33, 0x2f, 0xfc, 0xbd, - 0x1, 0xff, 00, 0x2, 0x15, 0xa1, 0x7, 0xc5, 0x9f, 0xe, - 0x4f, 0xd2, 0xf5, 0x47, 0xe3, 0x5f, 0x9f, 0xb0, 0xea, 0x21, - 0xc6, 0x44, 0xa4, 0x7e, 0x35, 0x65, 0x35, 0x29, 0xd7, 0xee, - 0xdc, 0xb8, 0xfa, 0x35, 0x72, 0x2c, 0xff, 00, 0x15, 0x1f, - 0x8a, 0x8, 0xf6, 0x21, 0xc4, 0xf2, 0x7f, 0x65, 0x1f, 0xa0, - 0xd0, 0xfc, 0x44, 0xd0, 0x26, 0xc6, 0x2f, 0xe3, 0xe7, 0xde, - 0xae, 0x47, 0xe2, 0xfd, 0x1e, 0x50, 0xa, 0xdf, 0xc2, 0x73, - 0xfe, 0xd5, 0x7e, 0x7a, 0x26, 0xb9, 0x7d, 0x18, 0xf9, 0x6f, - 0x25, 0x1f, 0xf0, 0x3a, 0xb5, 0x1f, 0x8b, 0x35, 0x68, 0xbe, - 0xed, 0xfc, 0xdf, 0xf7, 0xd5, 0x6c, 0xb8, 0x8a, 0xaa, 0xf8, - 0xa9, 0xaf, 0xbc, 0xea, 0x8f, 0x12, 0xc7, 0xac, 0xf, 0xd0, - 0xa4, 0xd7, 0xf4, 0xe9, 0x3e, 0xed, 0xe4, 0x27, 0xfe, 0x5, - 0x53, 0xae, 0xa3, 0x6a, 0xdd, 0x2e, 0x22, 0x3f, 0x47, 0x15, - 0xf9, 0xf3, 0x17, 0x8f, 0xf5, 0xd8, 0x47, 0xcb, 0x7f, 0x2f, - 0xe2, 0x6a, 0xf4, 0x3f, 0x15, 0x3c, 0x45, 0xf, 0x4b, 0xe7, - 0x3f, 0x8d, 0x6e, 0xb8, 0x8d, 0x7d, 0xaa, 0x7f, 0x89, 0xd1, - 0x1e, 0x23, 0xa0, 0xf7, 0x8b, 0x3e, 0xfd, 0x59, 0xe3, 0x6e, - 0x92, 0x29, 0xfa, 0x30, 0xa7, 0xee, 0x1e, 0xa2, 0xbe, 0xf, - 0xb7, 0xf8, 0xd9, 0xe2, 0x48, 0x31, 0xfe, 0x92, 0xcd, 0xf5, - 0x35, 0xa3, 0x6f, 0xfb, 0x40, 0xf8, 0x8a, 0x12, 0x33, 0x33, - 0x1c, 0x7a, 0x35, 0x6e, 0xb8, 0x8a, 0x8f, 0x58, 0x33, 0xa2, - 0x3c, 0x41, 0x85, 0x7b, 0xdc, 0xfb, 0x82, 0x8a, 0xf8, 0xd2, - 0xdb, 0xf6, 0x97, 0xd7, 0x62, 0x18, 0x62, 0xed, 0xff, 00, - 0x2, 0xad, 0x3b, 0x6f, 0xda, 0x93, 0x54, 0x4f, 0xbe, 0xae, - 0x7f, 0x1c, 0xd6, 0xeb, 0x3f, 0xc2, 0x3d, 0xee, 0xbe, 0x46, - 0xf1, 0xcf, 0x30, 0x72, 0xfb, 0x47, 0xd7, 0x14, 0x57, 0xcb, - 0x96, 0xff, 00, 0xb5, 0x64, 0xe0, 00, 0xf1, 0x37, 0xe4, - 0x2b, 0x52, 0xd7, 0xf6, 0xab, 0x84, 0xe3, 0xcd, 0x8b, 0xf3, - 0x15, 0xbc, 0x73, 0xbc, 0x13, 0xfb, 0x5f, 0x81, 0xd1, 0x1c, - 0xdb, 0x7, 0x2f, 0xb6, 0x7d, 0x1f, 0x45, 0x78, 0x34, 0x1f, - 0xb5, 0x2e, 0x9a, 0xff, 00, 0x7a, 0x35, 0x15, 0xab, 0x6b, - 0xfb, 0x4a, 0x68, 0x72, 0x91, 0xb8, 0x28, 0xff, 00, 0x81, - 0x62, 0xb7, 0x8e, 0x6d, 0x82, 0x97, 0xfc, 0xbc, 0x47, 0x44, - 0x73, 0xc, 0x34, 0xb6, 0x9a, 0x3d, 0x92, 0x8a, 0xf2, 0xdb, - 0x7f, 0xda, 0x7, 0xc3, 0xf3, 0x11, 0xf3, 0x81, 0xff, 00, - 0x3, 0x15, 0xa7, 0x7, 0xc6, 0xaf, 0xe, 0xcc, 0x33, 0xe7, - 0x81, 0xff, 00, 0x2, 0x15, 0xd1, 0x1c, 0x7e, 0x16, 0x5b, - 0x54, 0x46, 0xcb, 0x15, 0x46, 0x5b, 0x49, 0x1d, 0xfd, 0x15, - 0xc7, 0xc1, 0xf1, 0x53, 0xc3, 0xf3, 0x8e, 0x2e, 0xc0, 0xfa, - 0x91, 0x57, 0xe2, 0xf1, 0xee, 0x89, 0x30, 0x4, 0x5e, 0xa7, - 0xe7, 0x5b, 0xac, 0x45, 0x19, 0x6d, 0x35, 0xf7, 0x9a, 0xaa, - 0xb4, 0xde, 0xd2, 0x47, 0x43, 0x45, 0x64, 0xc7, 0xe2, 0xad, - 0x2a, 0x51, 0xf2, 0xde, 0xc5, 0xff, 00, 0x7d, 0x55, 0x95, - 0xd6, 0xac, 0x1f, 0xa5, 0xdc, 0x27, 0xfe, 0x6, 0x2b, 0x55, - 0x38, 0x3d, 0x99, 0x6a, 0x51, 0x7d, 0x4b, 0xb4, 0x54, 0x9, - 0x7d, 0x6f, 0x27, 0xdd, 0x9e, 0x33, 0xf4, 0x61, 0x52, 0x9, - 0xa3, 0x3d, 0x1d, 0x4f, 0xd0, 0xd5, 0x5d, 0xe, 0xe3, 0xe8, - 0xa4, 0x4, 0x1e, 0x87, 0x34, 0xb4, 0xc6, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0xc7, 0x89, - 0x24, 0xfb, 0xe8, 0xad, 0xfe, 0xf0, 0xcd, 0x3e, 0x8a, 00, - 0xcb, 0xbc, 0xf0, 0xbe, 0x8d, 0xa8, 0x9c, 0xdd, 0xe9, 0x16, - 0x37, 0x47, 0xd6, 0x6b, 0x64, 0x7f, 0xe6, 0x2b, 0x9a, 0xd5, - 0xfe, 0x5, 0xfc, 0x38, 0xd7, 0xc1, 0xfe, 0xd2, 0xf0, 0x17, - 0x86, 0xaf, 0xb3, 0xd7, 0xed, 0x1a, 0x4c, 0xf, 0xfc, 0xd2, - 0xbb, 0x9a, 0x28, 0x3, 0xc7, 0x6f, 0x7f, 0x63, 0x9f, 0x81, - 0x9a, 0x89, 0x26, 0x7f, 0x84, 0x9e, 0xe, 0x24, 0xf7, 0x4d, - 0x1a, 0x4, 0x3f, 0xf8, 0xea, 0x8a, 0xc5, 0xd4, 0x3f, 0x60, - 0xaf, 0xd9, 0xf7, 0x52, 0x42, 0x92, 0xfc, 0x29, 0xf0, 0xfc, - 0x60, 0xf7, 0xb7, 0x85, 0xa1, 0x3f, 0x9a, 0x30, 0xaf, 0x7c, - 0xa2, 0x80, 0x3e, 0x5a, 0xd4, 0xff, 00, 0xe0, 0x99, 0x3f, - 0xb3, 0x96, 0xa4, 0xf, 0xfc, 0x5b, 0xf1, 0x68, 0x4f, 0xf1, - 0x5b, 0x6a, 0x57, 0x49, 0xff, 00, 0xb5, 0x48, 0xae, 0x4b, - 0x52, 0xff, 00, 0x82, 0x47, 0x7e, 0xcf, 0xf7, 0xa0, 0xf9, - 0x16, 0x1a, 0xf5, 0x81, 0xf5, 0x83, 0x56, 0x76, 0xff, 00, - 0xd0, 0xc1, 0xaf, 0xb4, 0xa8, 0xa0, 0x56, 0x3e, 0x1, 0xd5, - 0x7f, 0xe0, 0x8c, 0x9f, 0x8, 0x6e, 0xb2, 0x6c, 0xbc, 0x4d, - 0xe2, 0xcb, 0x3, 0xe8, 0x67, 0x82, 0x50, 0x3f, 0x38, 0xbf, - 0xad, 0x72, 0x9a, 0x9f, 0xfc, 0x11, 0x33, 0xc2, 0x32, 0x3, - 0xfd, 0x9f, 0xf1, 0x2f, 0x5a, 0x80, 0xf6, 0x17, 0x36, 0x10, - 0xc8, 0x3f, 0x42, 0xb5, 0xfa, 0x53, 0x45, 0x1, 0x64, 0x7e, - 0x56, 0x6a, 0x1f, 0xf0, 0x44, 0x4b, 0x92, 0x49, 0xb1, 0xf8, - 0xb7, 0x10, 0x1d, 0x85, 0xc6, 0x84, 0x4f, 0xea, 0x27, 0xac, - 0x2b, 0xcf, 0xf8, 0x22, 0x57, 0x8b, 0xa3, 0x52, 0x6d, 0x7e, - 0x27, 0x68, 0xb3, 0x9e, 0xc2, 0x5d, 0x36, 0x68, 0xf3, 0xf9, - 0x3b, 0x57, 0xeb, 0x85, 0x14, 0xee, 0x16, 0x47, 0xe3, 0x4e, - 0xa7, 0xff, 00, 0x4, 0x60, 0xf8, 0xb5, 0x6e, 0x9, 0xb1, - 0xf1, 0x5f, 0x85, 0x2f, 0x71, 0xd0, 0x3c, 0xb7, 0x11, 0x67, - 0xff, 00, 0x21, 0x1a, 0xe4, 0xf5, 0xf, 0xf8, 0x24, 0x47, - 0xc7, 0xfb, 0x36, 0x22, 0xb, 0x6f, 0xe, 0x5f, 0x1, 0xde, - 0xd, 0x58, 0x2e, 0x7f, 0xef, 0xb4, 0x5a, 0xfd, 0xc2, 0xa2, - 0x8b, 0x8a, 0xc8, 0xfc, 0x14, 0xd5, 0x3f, 0xe0, 0x97, 0x9f, - 0xb4, 0x76, 0x9a, 0x7e, 0x4f, 0x3, 0x45, 0x7d, 0xef, 0x6b, - 0xaa, 0xda, 0x9f, 0xfd, 0xa, 0x41, 0x5c, 0xed, 0xe7, 0xfc, - 0x13, 0xbf, 0xf6, 0x8b, 0xb1, 0xcf, 0x99, 0xf0, 0xb7, 0x54, - 0x7c, 0x7f, 0xcf, 0x1b, 0x8b, 0x69, 0x3f, 0xf4, 0x19, 0x4d, - 0x7f, 0x41, 0xb4, 0x51, 0x70, 0xe5, 0x47, 0xf3, 0xa5, 0xa9, - 0xfe, 0xc5, 0x3f, 0x1d, 0xf4, 0x8c, 0xfd, 0xa7, 0xe1, 0x4f, - 0x89, 0xf8, 0xff, 00, 0x9e, 0x36, 0x2d, 0x2f, 0xfe, 0x81, - 0x9a, 0xe5, 0xf5, 0x1f, 0xd9, 0xd7, 0xe2, 0xa6, 0x90, 0x9, - 0xbd, 0xf8, 0x6d, 0xe2, 0xcb, 0x60, 0x3a, 0x99, 0x34, 0x5b, - 0x91, 0xff, 00, 0xb2, 0x57, 0xf4, 0xab, 0x45, 0x17, 0xe, - 0x53, 0xf9, 0x81, 0xd4, 0xfc, 0x11, 0xe2, 0x3d, 0x10, 0x13, - 0xa8, 0xe8, 0x1a, 0xa5, 0x80, 0x1d, 0x7e, 0xd5, 0x65, 0x24, - 0x78, 0xff, 00, 0xbe, 0x94, 0x56, 0x29, 0xf9, 0x4e, 0xf, - 0x7, 0xd0, 0xd7, 0xf5, 0x25, 0x3d, 0x9c, 0x17, 0x23, 0x13, - 0x41, 0x1c, 0xbf, 0xef, 0xa0, 0x3f, 0xce, 0xb2, 0xb5, 0xf, - 0x3, 0xf8, 0x73, 0x57, 0x4d, 0xb7, 0xde, 0x1f, 0xd2, 0xef, - 0x57, 0xd2, 0xe2, 0xca, 0x39, 0x7, 0xea, 0xb4, 0x5c, 0x39, - 0x4f, 0xe6, 0xa, 0x8a, 0xfe, 0x95, 0xf5, 0x2f, 0xd9, 0xe7, - 0xe1, 0x6e, 0xae, 0x85, 0x2f, 0x7e, 0x1c, 0xf8, 0x56, 0xe5, - 0x4f, 0x50, 0xfa, 0x35, 0xb9, 0xff, 00, 0xd9, 0x2b, 0x99, - 0xbc, 0xfd, 0x8b, 0xfe, 0x4, 0x5f, 0x82, 0x25, 0xf8, 0x49, - 0xe1, 0x1e, 0x7a, 0x98, 0xf4, 0x98, 0xa3, 0x3f, 0x9a, 0x81, - 0x45, 0xc5, 0xca, 0x7f, 0x3a, 0x30, 0xc0, 0xf7, 0x33, 0x47, - 0xc, 0x4a, 0x5e, 0x49, 0x18, 0x22, 0xa8, 0xea, 0x49, 0x38, - 0x2, 0xbf, 0xa7, 0xf, 0x86, 0x5e, 0x1f, 0x1e, 0x14, 0xf8, - 0x6f, 0xe1, 0x5d, 0x10, 0x74, 0xd3, 0xb4, 0xab, 0x5b, 0x4e, - 0x98, 0xfb, 0x91, 0x2a, 0xff, 00, 0x4a, 0xf2, 0x56, 0xfd, - 0x81, 0xbf, 0x67, 0xef, 0x3e, 0x29, 0xe3, 0xf8, 0x5d, 0xa3, - 0x5b, 0xcd, 0x13, 0x89, 0x12, 0x4b, 0x7f, 0x32, 0x32, 0xac, - 0xe, 0x41, 0x1b, 0x5c, 0x77, 0xaf, 0x7e, 00, 0x28, 00, - 0x70, 0x5, 0x5, 0x25, 0x61, 0x68, 0xa2, 0x8a, 0x43, 0xa, - 0x28, 0xa2, 0x80, 0x3e, 0x65, 0xfd, 0xa7, 0xae, 0xf3, 0x74, - 0xc9, 0x9e, 0x80, 0xa, 0xf9, 0x6f, 0x55, 0x6c, 0x40, 0xdf, - 0x4a, 0xfa, 0x2b, 0xf6, 0x96, 0xbb, 0xdf, 0xab, 0xca, 0xb9, - 0xe8, 0xd8, 0xaf, 0x9b, 0xf5, 0xa7, 0xdb, 0x6c, 0xe7, 0xfd, - 0x93, 0x5f, 0x97, 0x63, 0x5f, 0x3e, 0x61, 0x37, 0xe6, 0x7e, - 0x49, 0xc4, 0x93, 0xbd, 0x59, 0x1c, 0x17, 0xc1, 0x6b, 0x21, - 0xad, 0xfe, 0xd7, 0xdf, 0xc, 0x2d, 0x58, 0xf0, 0xba, 0xbf, - 0xda, 0x3f, 0x18, 0xe2, 0x79, 0x7, 0xfe, 0x81, 0x5f, 0xb0, - 0x35, 0xf9, 0x3d, 0xfb, 0x20, 0x69, 0x8b, 0xad, 0xfe, 0xd9, - 0xde, 0x16, 0x2c, 0x37, 0xb, 0x1b, 0x7b, 0xcb, 0xb1, 0xec, - 0x44, 0x25, 0x41, 0xff, 00, 0xc7, 0xeb, 0xf5, 0x86, 0xbf, - 0x44, 0xc1, 0xab, 0x52, 0x47, 0xda, 0x70, 0xdc, 0x39, 0x32, - 0xca, 0x41, 0x45, 0x14, 0x57, 0x69, 0xf4, 0xe5, 0x1d, 0x6b, - 0x45, 0xb1, 0xf1, 0x1e, 0x93, 0x75, 0xa6, 0x6a, 0x56, 0xb1, - 0xde, 0xd8, 0x5d, 0x46, 0x62, 0x9a, 0x9, 0x57, 0x2a, 0xea, - 0x7a, 0x83, 0x5f, 0x9e, 0x3f, 0x1f, 0x3f, 0x63, 0x7d, 0x73, - 0xe1, 0xc6, 0xa7, 0x73, 0xac, 0x78, 0x5c, 0x4b, 0xa8, 0xf8, - 0x71, 0x98, 0xba, 0x94, 0x3b, 0xa5, 0xb5, 0x1f, 0xdd, 0x71, - 0xdc, 0xf, 0xef, 0x7e, 0x78, 0xaf, 0xd1, 0xca, 0x42, 0x3, - 0x2, 0x8, 0xc8, 0x3d, 0x41, 0xae, 0x6a, 0xd4, 0x15, 0x65, - 0xd9, 0x9e, 0x2e, 0x67, 0x94, 0xd0, 0xcd, 0x29, 0xa8, 0xd5, - 0xd1, 0xad, 0x9a, 0xe9, 0xfe, 0x6b, 0xc8, 0xfc, 0x79, 0x4f, - 0xf8, 0x49, 0xb4, 0xae, 0x1e, 0x13, 0x22, 0x8e, 0x3a, 0x73, - 0x52, 0xf, 0x16, 0x6a, 0xb0, 0xff, 00, 0xac, 0xb4, 0x90, - 0x7f, 0xc0, 0x4d, 0x7e, 0xa5, 0x78, 0xa7, 0xe0, 0xb7, 0x84, - 0x3c, 0x5b, 0xbd, 0xaf, 0x34, 0x88, 0xa1, 0x99, 0x8e, 0x4c, - 0xd6, 0xa0, 0x46, 0xc4, 0xfa, 0x9c, 0x70, 0x7f, 0x11, 0x5e, - 0x7f, 0x7f, 0xfb, 0x1e, 0xf8, 0x4a, 0xe9, 0xcb, 0x45, 0x77, - 0x77, 0x8, 0x3d, 0x1, 0x54, 0x6c, 0x7e, 0x82, 0xbc, 0xa, - 0x99, 0x75, 0x5b, 0xfc, 0x29, 0xfe, 0x7, 0xc4, 0xcf, 0x84, - 0x9c, 0x3e, 0x1d, 0x7d, 0x1d, 0xbf, 0x3, 0xf3, 0xe5, 0x7c, - 0x79, 0x75, 0x1f, 0xdf, 0xb7, 0x71, 0xf5, 0x6, 0xa6, 0x4f, - 0x88, 0xc4, 0x70, 0xc8, 0xc3, 0xf0, 0xaf, 0xb9, 0x6e, 0xff, - 00, 0x62, 0x6d, 0x12, 0x40, 0x7c, 0x9d, 0x65, 0xd4, 0xff, - 00, 0xb7, 0x6c, 0xf, 0xfe, 0xcd, 0x58, 0x57, 0x9f, 0xb0, - 0xcc, 0x4e, 0xf, 0x93, 0xac, 0xdb, 0x39, 0xf4, 0x78, 0xa, - 0x8f, 0xeb, 0x5c, 0xaf, 0x2e, 0x9f, 0x5a, 0x5f, 0x8a, 0xff, - 00, 0x33, 0x96, 0x5c, 0x2f, 0x5e, 0x3b, 0x29, 0x7d, 0xeb, - 0xfc, 0xcf, 0x8f, 0xe3, 0xf8, 0x8f, 0x9, 0xeb, 0xb8, 0x55, - 0xa8, 0xfe, 0x22, 0x5b, 0x37, 0xf1, 0xd7, 0xd2, 0x97, 0xff, - 00, 0xb0, 0xbe, 0xa6, 0xa7, 0xf7, 0x33, 0x69, 0xd3, 0x8f, - 0x5d, 0xc5, 0x7f, 0x9a, 0xd7, 0x3f, 0x7f, 0xfb, 0xe, 0x78, - 0x89, 0xf, 0xee, 0xec, 0x6d, 0xa7, 0xf7, 0x8e, 0x64, 0x1f, - 0xcc, 0x8a, 0xe7, 0x96, 0x5f, 0xde, 0x93, 0x39, 0xa5, 0xc3, - 0xf8, 0xa8, 0xec, 0xe5, 0xf7, 0x5c, 0xf1, 0x48, 0xfc, 0x79, - 0x6a, 0xd8, 0xfd, 0xe0, 0xfc, 0x45, 0x59, 0x8f, 0xc6, 0x96, - 0x8d, 0xff, 00, 0x2d, 0x56, 0xbd, 0xe, 0xf3, 0xf6, 0x2d, - 0xf1, 0x44, 0x4c, 0x40, 0xd1, 0x25, 0x6c, 0x77, 0x49, 0x10, - 0xff, 00, 0x26, 0xac, 0x2b, 0xcf, 0xd9, 0x13, 0xc5, 0x96, - 0xec, 0x47, 0xf6, 0x16, 0xa3, 0xc7, 0xfc, 0xf3, 0x89, 0x9b, - 0xf9, 0x56, 0x2f, 0x3, 0x4f, 0xac, 0x24, 0xbe, 0x47, 0x3b, - 0xc9, 0xf1, 0x91, 0xfb, 0x4f, 0xe7, 0x16, 0x60, 0xa7, 0x8a, - 0xed, 0x1f, 0xfe, 0x5a, 0xa7, 0xe7, 0x56, 0x13, 0xc4, 0x56, - 0xcc, 0x3e, 0xfa, 0xfe, 0x75, 0x5e, 0xf7, 0xf6, 0x6c, 0xf1, - 0x2d, 0x96, 0xe2, 0xfa, 0x6e, 0xa7, 0x10, 0x1d, 0xda, 0x16, - 00, 0x7e, 0x95, 0x87, 0x71, 0xf0, 0x6f, 0x5a, 0xb5, 0x62, - 0x18, 0xdc, 0x21, 0x1d, 0x99, 0x6b, 0x9d, 0xe0, 0xa8, 0xf7, - 0x68, 0xe7, 0x78, 0xc, 0x64, 0x7e, 0xda, 0xf9, 0xa3, 0xa9, - 0x5d, 0x66, 0xdd, 0xbf, 0x88, 0x54, 0x83, 0x53, 0x80, 0xff, - 00, 0x10, 0xae, 0x16, 0x4f, 0x86, 0xfa, 0xec, 0x1f, 0x76, - 0x49, 0x4f, 0xd5, 0x6a, 0xbb, 0xf8, 0x43, 0xc4, 0x56, 0xfd, - 0x1d, 0x8f, 0xd4, 0x1a, 0xcf, 0xea, 0x34, 0x9e, 0xd3, 0x32, - 0xfa, 0xbe, 0x35, 0x7f, 0x2b, 0x3d, 0x18, 0x5f, 0x42, 0x7f, - 0x88, 0x53, 0x85, 0xd4, 0x47, 0xa3, 0xd7, 0x98, 0x9d, 0x2b, - 0xc4, 0xb0, 0xff, 00, 0xb, 0x37, 0xe3, 0x4d, 0xdf, 0xe2, - 0x38, 0x3a, 0xc0, 0xc7, 0xf1, 0xa9, 0xfe, 0xcf, 0x8b, 0xda, - 0x62, 0xf6, 0x78, 0xd5, 0xf6, 0x13, 0xf9, 0x9e, 0xa6, 0xb7, - 0x2b, 0xd9, 0xff, 00, 0x5a, 0x91, 0x6e, 0xd8, 0x74, 0x94, - 0xfe, 0x75, 0xe5, 0x3, 0x59, 0xd7, 0xa1, 0xfb, 0xd6, 0x92, - 0x1f, 0xc2, 0x9c, 0x3c, 0x59, 0xaa, 0xc5, 0xf7, 0xed, 0x24, - 0x1f, 0x81, 0xa8, 0x79, 0x6b, 0x7b, 0x34, 0x2e, 0x6c, 0x5c, - 0x77, 0xa4, 0xfe, 0xf3, 0xd6, 0xd3, 0x52, 0xb8, 0x4f, 0xbb, - 0x70, 0xe3, 0xe8, 0xd5, 0x62, 0x3d, 0x7f, 0x50, 0x8f, 0xee, - 0xdd, 0xc8, 0x3f, 0xe0, 0x55, 0xe4, 0xb, 0xe3, 0xbb, 0xb8, - 0xfe, 0xfd, 0xbb, 0x8f, 0xc0, 0xd4, 0xc9, 0xf1, 0xc, 0xaf, - 0xde, 0x8d, 0x87, 0xe7, 0x59, 0xbc, 0xba, 0xa2, 0xda, 0xc3, - 0xfa, 0xd6, 0x26, 0x1b, 0xc2, 0x48, 0xf6, 0x38, 0xbc, 0x63, - 0xac, 0x43, 0x8d, 0x97, 0xb2, 0xc, 0x7b, 0xd5, 0xb8, 0xbe, - 0x22, 0x6b, 0xb0, 0x9e, 0x2f, 0x58, 0xfd, 0x6b, 0xc6, 0x63, - 0xf8, 0x8d, 0x17, 0x7c, 0x8f, 0xc6, 0xac, 0xc7, 0xf1, 0xe, - 0xd8, 0xf5, 0x7a, 0x5f, 0x52, 0xc4, 0x47, 0x6f, 0xcc, 0xb5, - 0x99, 0xd6, 0x8e, 0xfc, 0xcb, 0xef, 0x3d, 0xb2, 0xf, 0x8b, - 0x7e, 0x21, 0x83, 0xa5, 0xd6, 0x7e, 0xb5, 0xa1, 0x6f, 0xf1, - 0xc3, 0xc4, 0x50, 0x11, 0x99, 0xb7, 0x62, 0xbc, 0x36, 0x3f, - 0x1e, 0xda, 0x37, 0xfc, 0xb5, 0x15, 0x66, 0x3f, 0x1a, 0xda, - 0x37, 0xfc, 0xb5, 0x5a, 0x7e, 0xcb, 0x17, 0x1d, 0x9b, 0xfb, - 0xd9, 0xb4, 0x73, 0xba, 0xb1, 0xfb, 0x6d, 0x1e, 0xf9, 0x6f, - 0xfb, 0x43, 0x78, 0x82, 0x10, 0x1, 0x73, 0xf9, 0xd6, 0xa5, - 0xaf, 0xed, 0x2f, 0xac, 0xc5, 0xf7, 0xb2, 0x6b, 0xe7, 0x74, - 0xf1, 0x6d, 0xa3, 0x7f, 0xcb, 0x54, 0xfc, 0xea, 0x74, 0xf1, - 0x25, 0xab, 0xff, 00, 0x1a, 0xfe, 0x75, 0x4a, 0xae, 0x3a, - 0x1b, 0x4e, 0x47, 0x4c, 0x78, 0x86, 0xaa, 0xff, 00, 0x97, - 0xa7, 0xd2, 0xd0, 0x7e, 0xd4, 0xfa, 0x82, 0xe3, 0x7a, 0xb6, - 0x3e, 0x95, 0xab, 0x6b, 0xfb, 0x55, 0xb8, 0xc7, 0x98, 0x9f, - 0x9a, 0xd7, 0xcb, 0x4b, 0xad, 0xdb, 0xb7, 0xf1, 0x8f, 0xce, - 0xa5, 0x5d, 0x56, 0x3, 0xfc, 0x43, 0xf3, 0xab, 0x58, 0xec, - 0x7c, 0x7e, 0xdb, 0x3a, 0xe3, 0xc4, 0x75, 0xff, 00, 0xe7, - 0xe2, 0x3e, 0xb4, 0xb6, 0xfd, 0xaa, 0xad, 0x9c, 0xfc, 0xe8, - 0xa3, 0xfe, 0x3, 0x5a, 0xb6, 0xdf, 0xb4, 0xfe, 0x94, 0xf8, - 0xde, 0x13, 0xf2, 0x22, 0xbe, 0x39, 0x17, 0xf0, 0xb7, 0xf1, - 0xa, 0x78, 0xbb, 0x88, 0xf4, 0x71, 0x5a, 0xac, 0xdb, 0x1f, - 0x1f, 0xb5, 0xf8, 0x1d, 0x91, 0xe2, 0x4a, 0xfd, 0xd3, 0x3e, - 0xd6, 0xb6, 0xfd, 0xa4, 0x34, 0x29, 0xb1, 0xb8, 0xa8, 0xfc, - 0x6b, 0x52, 0xf, 0x8f, 0x5e, 0x1d, 0x94, 0xc, 0xca, 0x6, - 0x7d, 0xd, 0x7c, 0x2e, 0x2e, 0x53, 0xb3, 0xfe, 0xb5, 0x22, - 0xdd, 0x63, 0xa4, 0xa7, 0xf0, 0x35, 0xaa, 0xcf, 0x31, 0xb1, - 0xde, 0xcf, 0xe4, 0x75, 0x47, 0x89, 0x6a, 0xf5, 0x8a, 0x3e, - 0xf5, 0xb7, 0xf8, 0xcb, 0xe1, 0xd9, 0xff, 00, 0xe5, 0xe3, - 0x15, 0xa1, 0x17, 0xc4, 0xed, 0x2, 0x5e, 0x97, 0x80, 0x7d, - 0x6b, 0xf3, 0xf9, 0x2f, 0x65, 0x5f, 0xbb, 0x3b, 0x8f, 0xa3, - 0x54, 0xc9, 0xab, 0xdd, 0xc7, 0xf7, 0x6e, 0xa4, 0x1f, 0xf0, - 0x23, 0x5b, 0xae, 0x20, 0xc4, 0x2d, 0xe0, 0x8e, 0x98, 0xf1, - 0x2c, 0xba, 0xc0, 0xfd, 0x7, 0x8b, 0xc7, 0x3a, 0x2c, 0xdf, - 0x76, 0xf5, 0x3f, 0x1a, 0xb4, 0x9e, 0x28, 0xd2, 0xe4, 0xfb, - 0xb7, 0xb1, 0x9f, 0xc6, 0xbf, 0x3d, 0xa3, 0xf1, 0x2e, 0xa7, - 0x1f, 0xdd, 0xbd, 0x97, 0xfe, 0xfa, 0x35, 0x6a, 0x2f, 0x1b, - 0x6b, 0x30, 0x91, 0xb6, 0xf6, 0x4e, 0x3d, 0x58, 0xd6, 0xcb, - 0x88, 0xa7, 0xd6, 0x9f, 0xe2, 0x74, 0x2e, 0x24, 0x87, 0x58, - 0x1f, 0xa1, 0x11, 0xea, 0xf6, 0x52, 0xfd, 0xdb, 0x98, 0xcf, - 0xfc, 0xa, 0xa6, 0x5b, 0xc8, 0x1b, 0xa4, 0xc8, 0x7e, 0x8c, - 0x2b, 0xf3, 0xfa, 0x1f, 0x89, 0x7a, 0xf4, 0x23, 0x8b, 0xc7, - 0xfc, 0xcd, 0x5e, 0x83, 0xe3, 0x7, 0x88, 0x20, 0xc6, 0x2e, - 0x58, 0xe3, 0xfd, 0xa3, 0x5b, 0xc7, 0x88, 0xa3, 0xd6, 0x9b, - 0x3a, 0x23, 0xc4, 0x58, 0x77, 0xba, 0x67, 0xde, 0xe2, 0x45, - 0x6e, 0x8c, 0xf, 0xd0, 0xd2, 0xe6, 0xbe, 0x18, 0x87, 0xe3, - 0xb7, 0x88, 0x22, 0xc0, 0xf3, 0xf, 0xfd, 0xf4, 0x6b, 0x4e, - 0xdf, 0xf6, 0x8a, 0xd7, 0x21, 0x23, 0x3b, 0x8e, 0x3f, 0xda, - 0x35, 0xba, 0xe2, 0x1a, 0x1d, 0x62, 0xce, 0x88, 0xe7, 0xf8, - 0x47, 0xbb, 0x3e, 0xd5, 0xa2, 0xbe, 0x3e, 0x83, 0xf6, 0x9c, - 0xd5, 0xd0, 0x8d, 0xe1, 0xb1, 0xfe, 0xf1, 0xad, 0x5b, 0x5f, - 0xda, 0x9a, 0xed, 0x71, 0xbd, 0xf, 0x15, 0xbc, 0x73, 0xec, - 0x23, 0xde, 0xeb, 0xe4, 0x74, 0x47, 0x3a, 0xc1, 0xcb, 0xed, - 0x1f, 0x56, 0x51, 0x5f, 0x33, 0xdb, 0x7e, 0xd5, 0x44, 0x91, - 0xe6, 0x20, 0x1f, 0x51, 0x5a, 0xd6, 0xff, 00, 0xb5, 0x35, - 0x91, 0x3, 0x7a, 0xa7, 0xe4, 0x6b, 0xa2, 0x39, 0xd6, 0xa, - 0x5f, 0x6c, 0xe8, 0x8e, 0x69, 0x84, 0x96, 0xd3, 0x47, 0xd0, - 0x54, 0x57, 0x88, 0xdb, 0x7e, 0xd3, 0x5a, 0x4c, 0xa4, 0x6f, - 0x11, 0x8f, 0xc4, 0xd6, 0x9c, 0x1f, 0xb4, 0x56, 0x83, 0x26, - 0x32, 0xf1, 0xe7, 0xd9, 0xeb, 0x78, 0xe6, 0xb8, 0x39, 0x6d, - 0x51, 0x1b, 0xac, 0x76, 0x1e, 0x5b, 0x4d, 0x1e, 0xb7, 0x45, - 0x79, 0xbd, 0xbf, 0xc7, 0x4f, 0xf, 0xcf, 0xff, 00, 0x2d, - 0x94, 0x7f, 0xc0, 0xeb, 0x46, 0x1f, 0x8b, 0xfe, 0x1e, 0x9b, - 0x3, 0xed, 0x40, 0x1f, 0xad, 0x74, 0x47, 0x1b, 0x86, 0x96, - 0xd5, 0x17, 0xde, 0x6c, 0xb1, 0x14, 0x5e, 0xd2, 0x47, 0x6f, - 0x45, 0x72, 0xf0, 0x7c, 0x49, 0xd0, 0x67, 0xe9, 0x7a, 0x83, - 0xea, 0x6a, 0xdc, 0x7e, 0x36, 0xd1, 0x65, 0xfb, 0xb7, 0xf1, - 0x9f, 0xc6, 0xb6, 0x55, 0xe9, 0x3d, 0xa4, 0xbe, 0xf2, 0xd5, - 0x58, 0x3d, 0xa4, 0x8d, 0xda, 0x2b, 0x32, 0x3f, 0x12, 0x69, - 0x92, 0xfd, 0xdb, 0xd8, 0xbf, 0xef, 0xaa, 0x9d, 0x35, 0x7b, - 0x29, 0x3e, 0xed, 0xd4, 0x47, 0xfe, 0x4, 0x2b, 0x45, 0x38, - 0xbd, 0x99, 0x7c, 0xd1, 0xee, 0x5c, 0xa2, 0xa1, 0x5b, 0xb8, - 0x1f, 0xee, 0xca, 0x87, 0xfe, 0x4, 0x2a, 0x41, 0x22, 0x37, - 0x46, 0x53, 0xf4, 0x35, 0x57, 0x45, 0xe, 0xa2, 0x93, 0x39, - 0xa5, 0xa6, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, - 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, - 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, - 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, - 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, 0x1, 0x45, 0x14, 0x50, - 0x1, 0x45, 0x14, 0x50, 0x1, 0x48, 0x78, 0x14, 0xb4, 0xc9, - 0x5b, 0x64, 0x4e, 0xde, 0x80, 0x9a, 00, 0xf8, 0xdb, 0xf6, - 0x85, 0xba, 0xf3, 0x75, 0xd9, 0x87, 0xfb, 0x67, 0xf9, 0xd7, - 0x80, 0x78, 0x89, 0xf6, 0x59, 0x4d, 0xfe, 0xe9, 0xaf, 0x68, - 0xf8, 0xe1, 0x73, 0xe6, 0xf8, 0x82, 0x50, 0x4f, 0xf1, 0x93, - 0xfa, 0xd7, 0x84, 0x78, 0xc6, 0xf0, 0x41, 0xa7, 0x4c, 0x72, - 0x7, 0xca, 0x6b, 0xf2, 0xb7, 0xfb, 0xcc, 0x6c, 0xdf, 0x99, - 0xf8, 0xb7, 0x10, 0xce, 0xf5, 0x66, 0x6f, 0x7f, 0xc1, 0x3d, - 0xac, 0x1b, 0x50, 0xfd, 0xab, 0x75, 0x8b, 0xbd, 0xb9, 0x8e, - 0xcb, 0xc3, 0xf7, 0x4, 0x9f, 0x46, 0x79, 0xa1, 0x51, 0xfa, - 0x66, 0xbf, 0x4f, 0x2b, 0xf3, 0x97, 0xfe, 0x9, 0x81, 0x68, - 0x6f, 0xfe, 0x2d, 0x7c, 0x4d, 0xd5, 0xa, 0x9d, 0xb6, 0xfa, - 0x75, 0xa5, 0xb0, 0x6c, 0x71, 0x99, 0x25, 0x91, 0x88, 0xcf, - 0xfd, 0xb3, 0x15, 0xfa, 0x35, 0x5f, 0xa5, 0xe1, 0xd5, 0xa9, - 0xa3, 0xf5, 0xc, 0x9e, 0x1e, 0xcf, 0x1, 0x4a, 0x3e, 0x48, - 0x28, 0xa2, 0x8a, 0xe9, 0x3d, 0x90, 0xa2, 0x8a, 0x28, 00, - 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa2, 0x8a, - 0x28, 00, 0xa2, 0x8a, 0x28, 00, 0xa8, 0xe4, 0x82, 0x29, - 0x46, 0x1e, 0x34, 0x71, 0xe8, 0xca, 0xd, 0x49, 0x45, 00, - 0x50, 0x9f, 0x41, 0xd3, 0x2e, 0x46, 0x26, 0xd3, 0xad, 0x25, - 0x1e, 0x8f, 0x2, 0x9f, 0xe6, 0x2b, 0x3e, 0xe3, 0xc0, 0x1e, - 0x19, 0xbb, 0xff, 00, 0x5b, 0xa0, 0x69, 0xad, 0xff, 00, - 0x6e, 0xa8, 0x3f, 0x90, 0xad, 0xfa, 0x2a, 0x1c, 0x20, 0xf7, - 0x46, 0x6e, 0x9c, 0x25, 0xbc, 0x51, 0xc5, 0xdd, 0xfc, 0x19, - 0xf0, 0x55, 0xe9, 0xcc, 0x9e, 0x1e, 0xb4, 0x1f, 0xf5, 0xcc, - 0x14, 0xfe, 0x44, 0x56, 0x45, 0xdf, 0xec, 0xe9, 0xe0, 0x4b, - 0xbc, 0xff, 00, 0xc4, 0xa0, 0xc3, 0x9f, 0xf9, 0xe7, 0x33, - 0x71, 0xf9, 0x93, 0x5e, 0x97, 0x45, 0x62, 0xf0, 0xd4, 0x65, - 0xbc, 0x17, 0xdc, 0x63, 0x2c, 0x26, 0x1e, 0x5b, 0xd3, 0x5f, - 0x72, 0x3c, 0x66, 0xef, 0xf6, 0x51, 0xf0, 0x4d, 0xce, 0x76, - 0x8b, 0xc8, 0x73, 0xfd, 0xd9, 0x10, 0xff, 00, 0x35, 0xac, - 0x9b, 0xaf, 0xd8, 0xeb, 0xc2, 0x93, 0x3, 0xe5, 0xdf, 0x5d, - 0xc6, 0x7f, 0xda, 0x54, 0x6f, 0xe8, 0x2b, 0xdf, 0x28, 0xac, - 0x9e, 0xb, 0xe, 0xfe, 0xc2, 0x30, 0x79, 0x76, 0x11, 0xff, - 00, 0xcb, 0xb4, 0x7c, 0xd5, 0x79, 0xfb, 0x13, 0xe8, 0xd2, - 0xff, 00, 0xa9, 0xd6, 0x9d, 0x7d, 0x9e, 0xd8, 0x1f, 0xfd, - 0x9a, 0xb0, 0xaf, 0x7f, 0x61, 0xa4, 0x6c, 0xf9, 0x1a, 0xbd, - 0xb3, 0xff, 00, 0xd7, 0x48, 0x4a, 0xff, 00, 0x8d, 0x7d, - 0x65, 0x45, 0x66, 0xf2, 0xfc, 0x3b, 0xfb, 0x3f, 0x8b, 0x32, - 0x79, 0x56, 0x11, 0xfd, 0x9f, 0xc5, 0xff, 00, 0x99, 0xf1, - 0x6d, 0xef, 0xec, 0x2f, 0xa9, 0xe0, 0x98, 0xee, 0x34, 0xe9, - 0x7d, 0x83, 0x11, 0xfc, 0xd6, 0xb9, 0xeb, 0xdf, 0xd8, 0x7f, - 0xc4, 0x28, 0xe, 0xcb, 0xb, 0x79, 0x7f, 0xdc, 0x99, 0x3f, - 0xa9, 0x15, 0xf7, 0x9d, 0x15, 0x9b, 0xcb, 0x68, 0xf4, 0x6d, - 0x7c, 0xcc, 0x25, 0x93, 0x61, 0x9e, 0xd7, 0x5f, 0x33, 0xf3, - 0xb6, 0xf3, 0xf6, 0x2d, 0xf1, 0x4c, 0x4a, 0x48, 0xd0, 0xe4, - 0x3f, 0xf5, 0xce, 0x44, 0x6f, 0xe4, 0xd5, 0x87, 0x7d, 0xfb, - 0x22, 0x78, 0xae, 0xd7, 0x27, 0xfb, 0xb, 0x50, 0xff, 00, - 0x80, 0x46, 0xcd, 0xfc, 0xab, 0xf4, 0xba, 0x8a, 0x8f, 0xec, - 0xc8, 0xf4, 0x9b, 0xfc, 0xe, 0x79, 0x64, 0x54, 0x1e, 0xd2, - 0x7f, 0x87, 0xf9, 0x1f, 0x96, 0x37, 0xbf, 0xb3, 0x77, 0x88, - 0xec, 0x98, 0xac, 0x9a, 0x6e, 0xa5, 0xb, 0x7a, 0x34, 0x2c, - 0x3f, 0xa5, 0x62, 0xdd, 0x7c, 0x18, 0xd6, 0xad, 0x1b, 0x69, - 0x17, 0x31, 0x91, 0xd9, 0x97, 0x15, 0xfa, 0xd1, 0x51, 0xbd, - 0xbc, 0x52, 0xe7, 0x7c, 0x48, 0xf9, 0xfe, 0xf2, 0x83, 0x50, - 0xf2, 0xd9, 0x74, 0xa9, 0xf8, 0x7f, 0xc1, 0x39, 0x65, 0xc3, - 0xb4, 0xa5, 0xf6, 0x97, 0xfe, 0x3, 0xff, 00, 0x4, 0xfc, - 0x8c, 0x97, 0xe1, 0xa6, 0xb9, 0x7, 0xdd, 0x92, 0x5f, 0xc5, - 0x4d, 0x57, 0x7f, 0x6, 0xf8, 0x86, 0xe, 0x8e, 0xdc, 0x7a, - 0x82, 0x2b, 0xf5, 0xae, 0x7f, 0xb, 0xe8, 0xd7, 0x24, 0x99, - 0xb4, 0x9b, 0x19, 0x49, 0xea, 0x5e, 0xdd, 0xf, 0xf4, 0xac, - 0xd9, 0xbe, 0x19, 0xf8, 0x4e, 0xe0, 0x93, 0x27, 0x87, 0x74, - 0xd2, 0x4f, 0x53, 0xf6, 0x65, 0x1f, 0xd2, 0xb3, 0x79, 0x75, - 0x6e, 0x93, 0x5f, 0x71, 0xc7, 0x3e, 0x18, 0xa6, 0xff, 00, - 0x97, 0xee, 0x3f, 0x28, 0xe, 0x8f, 0xe2, 0x38, 0x3d, 0x4f, - 0xe2, 0x69, 0x9f, 0xf1, 0x51, 0xc1, 0xd6, 0x26, 0x6f, 0xc6, - 0xbf, 0x54, 0x67, 0xf8, 0x29, 0xe0, 0x8b, 0x90, 0x43, 0xf8, - 0x76, 0xd0, 0x67, 0xba, 0xee, 0x5f, 0xe4, 0x6b, 0x1e, 0xef, - 0xf6, 0x6e, 0xf0, 0xd, 0xd0, 0xe3, 0x48, 0x68, 0x4f, 0xac, - 0x73, 0xbf, 0xf5, 0x26, 0xb2, 0x79, 0x75, 0x7f, 0xee, 0xbf, - 0xeb, 0xd0, 0xe4, 0x9f, 0xa, 0x45, 0xed, 0x18, 0xfd, 0xef, - 0xfc, 0x8f, 0xcc, 0x7f, 0xed, 0x6d, 0x7a, 0x1f, 0xbd, 0x6c, - 0xe6, 0x94, 0x78, 0xa7, 0x56, 0x8b, 0xef, 0xda, 0xc9, 0xff, - 00, 0x7c, 0x9a, 0xfd, 0x1f, 0xbc, 0xfd, 0x93, 0xbc, 0xf, - 0x73, 0xfe, 0xad, 0x2f, 0x20, 0xff, 00, 0x76, 0x45, 0x3f, - 0xcd, 0x6b, 0x12, 0xf7, 0xf6, 0x35, 0xf0, 0xbc, 0xf9, 0xf2, - 0x35, 0xb, 0x98, 0xbf, 0xdf, 0x8d, 0x5b, 0xf9, 0x62, 0xb1, - 0x96, 0x5f, 0x5b, 0xf9, 0x13, 0x38, 0xe5, 0xc2, 0x8d, 0x6d, - 0x1f, 0xba, 0x47, 0xe7, 0xf0, 0xf1, 0xcd, 0xe4, 0x63, 0xe7, - 0xb7, 0x71, 0xf5, 0x6, 0xa6, 0x4f, 0x88, 0x4e, 0xbf, 0x7a, - 0x32, 0x3f, 0x3a, 0xfb, 0x82, 0xef, 0xf6, 0x24, 0xd3, 0x64, - 0x3f, 0xb9, 0xd6, 0x94, 0xf, 0xf6, 0xed, 0x7f, 0xfb, 0x2a, - 0xc5, 0xbd, 0xfd, 0x86, 0x4b, 0x67, 0xc9, 0xd5, 0xac, 0xe4, - 0xf4, 0xf3, 0x22, 0x65, 0xff, 00, 0x1a, 0xc1, 0xe0, 0x2a, - 0x75, 0xa3, 0xf8, 0xaf, 0xf3, 0x39, 0x65, 0xc3, 0x15, 0x56, - 0xd1, 0x97, 0xde, 0xbf, 0xcc, 0xf9, 0x6, 0x3f, 0x88, 0xa9, - 0xfc, 0x40, 0x8a, 0xb5, 0x1f, 0xc4, 0x4b, 0x73, 0xd5, 0xb1, - 0xf8, 0xd7, 0xd2, 0xb7, 0xbf, 0xb0, 0xae, 0xaa, 0x1, 0xf2, - 0xa7, 0xd3, 0x26, 0xff, 00, 0x81, 0x11, 0xfc, 0xd6, 0xb9, - 0xfb, 0xef, 0xd8, 0x77, 0xc4, 0x71, 0x3, 0xb2, 0xc2, 0xd6, - 0x6f, 0xfa, 0xe7, 0x32, 0xff, 00, 0x52, 0x2b, 0x9, 0x60, - 0x7b, 0xd2, 0x67, 0x3c, 0xb8, 0x7b, 0x13, 0x1d, 0x9c, 0xfe, - 0xeb, 0x9e, 0x27, 0x1f, 0x8f, 0xad, 0x5b, 0x1f, 0xbc, 0xc5, - 0x59, 0x4f, 0x1b, 0x5a, 0xb7, 0xfc, 0xb5, 0x5f, 0xc6, 0xbd, - 0xe, 0xff, 00, 0xf6, 0x31, 0xf1, 0x4d, 0xbe, 0x4f, 0xf6, - 0x1c, 0x8c, 0x3d, 0x63, 0x60, 0xdf, 0xc8, 0xd7, 0x3f, 0x7b, - 0xfb, 0x28, 0xf8, 0x9a, 0xd4, 0x9c, 0xe8, 0x5a, 0x8a, 0xfb, - 0xac, 0xe, 0x7f, 0xa5, 0x61, 0x2c, 0x15, 0x35, 0xbc, 0x1a, - 0xf9, 0x1c, 0xd2, 0xc9, 0xb1, 0x70, 0xfb, 0x6f, 0xe7, 0x16, - 0x62, 0x27, 0x8b, 0xed, 0x5b, 0xfe, 0x5a, 0xa7, 0xe7, 0x53, - 0xa7, 0x89, 0xad, 0x9f, 0xa4, 0x89, 0xf9, 0xd5, 0x7b, 0xcf, - 0xd9, 0xd7, 0xc4, 0x36, 0x79, 0x2f, 0xa7, 0xea, 0x11, 0x1, - 0xfd, 0xe8, 0x58, 0x7f, 0x4a, 0xc6, 0xb8, 0xf8, 0x3b, 0xac, - 0xdb, 0x67, 0xfe, 0x3e, 0x13, 0x1f, 0xde, 0x43, 0x58, 0x3c, - 0x1d, 0xf, 0x34, 0x60, 0xf2, 0xfc, 0x64, 0x7e, 0xda, 0xf9, - 0xa3, 0xa8, 0x5d, 0x7a, 0xdd, 0xbf, 0x8d, 0x7f, 0x3a, 0x95, - 0x75, 0x78, 0xf, 0xf1, 0xa, 0xe1, 0x24, 0xf8, 0x6f, 0xad, - 0xc3, 0x9d, 0xb2, 0xc9, 0xf8, 0xa1, 0xaa, 0xef, 0xe0, 0xfd, - 0x7e, 0xe, 0x92, 0x31, 0xfc, 0xd, 0x47, 0xd4, 0xa8, 0xbd, - 0xa4, 0x67, 0xf5, 0x5c, 0x6a, 0xeb, 0x16, 0x7a, 0x38, 0xd4, - 0xa1, 0x6f, 0xe2, 0x14, 0xe1, 0x7d, 0x9, 0xfe, 0x31, 0x5e, - 0x62, 0xda, 0x47, 0x88, 0xa0, 0xe8, 0x49, 0xfc, 0x4d, 0x34, - 0xff, 00, 0xc2, 0x43, 0x7, 0x58, 0xd9, 0xbf, 0x1a, 0x87, - 0x97, 0xc7, 0xa4, 0x89, 0xf6, 0x58, 0xe5, 0xf6, 0x13, 0xf9, - 0x9e, 0xa6, 0x2e, 0xa3, 0x3f, 0xc4, 0x29, 0xc2, 0xe1, 0x4f, - 0x47, 0xfd, 0x6b, 0xca, 0x7f, 0xb5, 0xb5, 0xd8, 0x7e, 0xf5, - 0xb4, 0x87, 0xf0, 0xa7, 0xf, 0x14, 0xea, 0xb1, 0x7d, 0xeb, - 0x69, 0x3f, 0xef, 0x9a, 0x97, 0x97, 0x3e, 0x92, 0x44, 0xff, - 00, 0xb5, 0xc7, 0x7a, 0x47, 0xab, 0x8b, 0x93, 0xda, 0x53, - 0xf9, 0xd4, 0x89, 0x7d, 0x32, 0xfd, 0xd9, 0xd8, 0x7f, 0xc0, - 0xab, 0xc9, 0xd7, 0xc7, 0x17, 0x91, 0xfd, 0xfb, 0x77, 0x1f, - 0x81, 0xa9, 0x93, 0xe2, 0x13, 0xaf, 0xde, 0x8d, 0x85, 0x64, - 0xf2, 0xd9, 0xf4, 0xb0, 0x7b, 0x7c, 0x44, 0x77, 0xa7, 0x23, - 0xd6, 0x53, 0x58, 0xbd, 0x4f, 0xbb, 0x75, 0x28, 0xff, 00, - 0x81, 0x1a, 0xb1, 0x1f, 0x89, 0xb5, 0x38, 0xbe, 0xed, 0xe4, - 0xa3, 0xfe, 0x4, 0x6b, 0xc9, 0xa3, 0xf8, 0x88, 0x9d, 0xc3, - 0xf, 0xc6, 0xac, 0xc7, 0xf1, 0xa, 0x3, 0xfc, 0x44, 0x54, - 0x7f, 0x67, 0xd6, 0x5b, 0x21, 0xac, 0xc2, 0xac, 0x77, 0x52, - 0x5f, 0x79, 0xeb, 0x71, 0xf8, 0xe3, 0x5a, 0x8b, 0xa5, 0xf4, - 0x9f, 0xf7, 0xd5, 0x5c, 0x83, 0xe2, 0x6e, 0xbd, 0x6, 0x31, - 0x74, 0xc7, 0xea, 0x4d, 0x79, 0x14, 0x7e, 0x3e, 0xb6, 0x6e, - 0xaf, 0x8a, 0xb3, 0x1f, 0x8d, 0xad, 0x5b, 0xfe, 0x5a, 0x8a, - 0x5f, 0x55, 0xc4, 0x47, 0x6b, 0xfd, 0xec, 0xd5, 0x66, 0xf3, - 0x8f, 0xdb, 0x92, 0x3d, 0x8e, 0x1f, 0x8c, 0x3e, 0x20, 0x8b, - 0x1f, 0xe9, 0x4, 0xe3, 0xdc, 0xd6, 0x8d, 0xbf, 0xc7, 0x7d, - 0x7a, 0x1c, 0x7c, 0xe4, 0xff, 00, 0xc0, 0x8d, 0x78, 0x9a, - 0x78, 0xbe, 0xd5, 0xbf, 0xe5, 0xaa, 0xfe, 0x75, 0x3a, 0x78, - 0x9e, 0xd9, 0xff, 00, 0xe5, 0xa2, 0xfe, 0x74, 0x72, 0xe2, - 0xe1, 0xb3, 0x7f, 0x7b, 0x3a, 0x23, 0x9e, 0x54, 0x5f, 0xf2, - 0xf5, 0x9e, 0xef, 0x6f, 0xfb, 0x45, 0x6b, 0x71, 0x63, 0x73, - 0x31, 0xff, 00, 0x81, 0x1a, 0xd6, 0xb6, 0xfd, 0xa6, 0xf5, - 0x48, 0xb1, 0xb8, 0x39, 0xff, 00, 0x81, 0x57, 0xcf, 0x29, - 0xaf, 0xdb, 0xb7, 0xf1, 0xaf, 0xe7, 0x52, 0xae, 0xb1, 0x3, - 0x7f, 0x10, 0xfc, 0xea, 0xd6, 0x23, 0x1b, 0xd, 0xa6, 0xce, - 0xb8, 0x71, 0x5, 0x65, 0xb5, 0x53, 0xe9, 0x4b, 0x6f, 0xda, - 0x92, 0xec, 0x7f, 0xac, 0xdd, 0x5a, 0xd6, 0xdf, 0xb5, 0x42, - 0xf1, 0xbd, 0x41, 0xfa, 0x8a, 0xf9, 0x65, 0x75, 0x38, 0x4f, - 0xf1, 0xf, 0xce, 0x9e, 0x2f, 0xa1, 0x6f, 0xe2, 0x15, 0xa2, - 0xcc, 0x71, 0xf1, 0xfb, 0x6c, 0xeb, 0x8f, 0x11, 0x62, 0x3f, - 0x9d, 0x1f, 0x5b, 0xdb, 0x7e, 0xd4, 0x56, 0x6f, 0x8f, 0x30, - 0x20, 0xfc, 0x2b, 0x56, 0xf, 0xda, 0x63, 0x49, 0x93, 0x19, - 0xf2, 0xfe, 0xb9, 0x22, 0xbe, 0x35, 0x17, 0x31, 0x1f, 0xe2, - 0x14, 0xf1, 0x3a, 0x1e, 0x8f, 0xfa, 0xd6, 0xcb, 0x38, 0xc7, - 0x47, 0xed, 0x7e, 0x7, 0x5c, 0x78, 0x8f, 0x11, 0xe4, 0xcf, - 0xb6, 0xad, 0xff, 00, 0x68, 0x6d, 0xe, 0x5c, 0x6e, 0x78, - 0xc7, 0xfc, 0xa, 0xb4, 0xa0, 0xf8, 0xe7, 0xe1, 0xf9, 0xb1, - 0x89, 0x57, 0xfe, 0xfa, 0xaf, 0x85, 0x44, 0xe3, 0xb3, 0xfe, - 0xb4, 0xf5, 0xba, 0x91, 0x7a, 0x4a, 0xc3, 0xe8, 0xd5, 0xb2, - 0xcf, 0x71, 0x8b, 0x74, 0x8e, 0xa8, 0xf1, 0x25, 0x5e, 0xb1, - 0x3e, 0xf8, 0xb7, 0xf8, 0xb9, 0xa0, 0x4c, 0x1, 0xfb, 0x48, - 0x1f, 0x8d, 0x5d, 0x8b, 0xe2, 0x4e, 0x83, 0x37, 0xdd, 0xbc, - 0x5a, 0xfc, 0xff, 00, 0x5d, 0x46, 0xe5, 0x7a, 0x5c, 0x3f, - 0xfd, 0xf5, 0x53, 0xc7, 0xae, 0xea, 0x11, 0xfd, 0xdb, 0xb9, - 0x7, 0xd1, 0xab, 0x75, 0xc4, 0x35, 0xd6, 0xf0, 0x47, 0x44, - 0x78, 0x91, 0xf5, 0x81, 0xfa, 0xd, 0x1f, 0x8d, 0x74, 0x69, - 0x7a, 0x5f, 0x46, 0x3e, 0xa6, 0xac, 0xc7, 0xe2, 0x5d, 0x32, - 0x5f, 0xbb, 0x7b, 0x11, 0xfc, 0x6b, 0xf3, 0xe5, 0x3c, 0x5b, - 0xab, 0x47, 0x8c, 0x5e, 0xcb, 0xff, 00, 0x7d, 0x55, 0xb8, - 0x7c, 0x7f, 0xad, 0xc3, 0xf7, 0x6f, 0x5f, 0xf1, 0x35, 0xb2, - 0xe2, 0x29, 0x7d, 0xaa, 0x7f, 0x89, 0xd1, 0x1e, 0x24, 0xa6, - 0xf7, 0x89, 0xfa, 0x6, 0x9a, 0xb5, 0x9b, 0xfd, 0xdb, 0xa8, - 0x8f, 0xfc, 0x8, 0x54, 0xa9, 0x79, 0x3, 0xfd, 0xd9, 0x91, - 0xbe, 0x8c, 0x2b, 0xe0, 0x48, 0x7e, 0x29, 0xeb, 0xf1, 0x1f, - 0xf8, 0xfb, 0x73, 0xf8, 0xd6, 0x84, 0x1f, 0x1a, 0x7c, 0x41, - 0x7, 0xfc, 0xb7, 0x27, 0xf1, 0xad, 0xe3, 0xc4, 0x50, 0xeb, - 0x4d, 0xfe, 0x7, 0x44, 0x78, 0x87, 0xe, 0xf7, 0x4c, 0xfb, - 0xbc, 0x3a, 0x9e, 0x8c, 0xf, 0xe3, 0x4b, 0x90, 0x7b, 0xd7, - 0xc3, 0xf6, 0xff, 00, 0x1f, 0x35, 0xc8, 0xb1, 0xba, 0x47, - 0x6f, 0xf8, 0x15, 0x6a, 0x5b, 0xfe, 0xd2, 0x1a, 0xc4, 0x3d, - 0x4b, 0xff, 00, 0xdf, 0x55, 0xd1, 0x1e, 0x21, 0xc3, 0xbd, - 0xe2, 0xd1, 0xd1, 0x1c, 0xfb, 0x8, 0xfa, 0x9f, 0x66, 0xd1, - 0x5f, 0x22, 0xdb, 0x7e, 0xd3, 0xba, 0x8a, 0xe3, 0xcc, 0x32, - 0x1f, 0x6c, 0xd6, 0xad, 0xbf, 0xed, 0x4d, 0x38, 0xc6, 0xe0, - 0xdf, 0x8e, 0x2b, 0x68, 0xe7, 0xd8, 0x37, 0xbb, 0x6b, 0xe4, - 0x6f, 0x1c, 0xe7, 0x7, 0x2f, 0xb4, 0x7d, 0x4b, 0x45, 0x7c, - 0xdf, 0x6b, 0xfb, 0x52, 0x46, 0x71, 0xe6, 0x7e, 0xa2, 0xb5, - 0x2d, 0xff, 00, 0x69, 0xfb, 0x17, 0xc0, 0x65, 0x5f, 0xa9, - 0xad, 0xe3, 0x9d, 0x60, 0xa5, 0xf6, 0xce, 0x88, 0xe6, 0x78, - 0x59, 0x6d, 0x33, 0xdf, 0x28, 0xaf, 0x18, 0xb7, 0xfd, 0xa4, - 0x74, 0x87, 0xc6, 0xf3, 0x18, 0xff, 00, 0x81, 0x56, 0x9d, - 0xbf, 0xed, 0x3, 0xa1, 0xcd, 0x8e, 0x57, 0xfe, 0xfb, 0xae, - 0x88, 0xe6, 0x78, 0x39, 0x6d, 0x51, 0x1b, 0xac, 0x6e, 0x1e, - 0x5b, 0x4d, 0x1e, 0xa9, 0x45, 0x79, 0xec, 0x1f, 0x1a, 0xf4, - 0x9, 0x40, 0xcc, 0xa0, 0x7f, 0xc0, 0x85, 0x5f, 0x83, 0xe2, - 0xc6, 0x83, 0x39, 0xe2, 0xe3, 0x1f, 0x88, 0xae, 0x85, 0x8c, - 0xc3, 0xcb, 0x69, 0xa3, 0x55, 0x88, 0xa4, 0xf6, 0x92, 0x3b, - 0x3a, 0x2b, 0x9a, 0x8f, 0xe2, 0x16, 0x87, 0x27, 0xfc, 0xbe, - 0x28, 0xfc, 0x6a, 0xdc, 0x5e, 0x32, 0xd2, 0x26, 0x3f, 0x2d, - 0xec, 0x7f, 0x9d, 0x6c, 0xab, 0x52, 0x7b, 0x49, 0x1a, 0x2a, - 0x90, 0x7d, 0x4d, 0xaa, 0x2b, 0x39, 0x3c, 0x41, 0xa7, 0x3f, - 0x4b, 0xc8, 0xbf, 0xef, 0xaa, 0x9d, 0x35, 0x4b, 0x49, 0x3e, - 0xed, 0xcc, 0x67, 0xfe, 0x4, 0x2a, 0xd4, 0xe2, 0xf6, 0x65, - 0x73, 0x27, 0xd4, 0xb5, 0x55, 0xb5, 0x27, 0xf2, 0xac, 0x2e, - 0x1b, 0xd1, 0x9, 0xfd, 0x2a, 0x41, 0x73, 0xb, 0x74, 0x95, - 0xf, 0xfc, 0x8, 0x56, 0x4f, 0x8b, 0xb5, 0x58, 0x34, 0xef, - 0xf, 0x5e, 0xcd, 0x24, 0xaa, 0x2, 0xc6, 0x7f, 0x88, 0x52, - 0x9c, 0x92, 0x8b, 0x62, 0x94, 0x92, 0x8b, 0x67, 0xc3, 0xff, - 00, 0x18, 0xef, 0x47, 0xf6, 0xe4, 0xc4, 0x9f, 0xe2, 0x3f, - 0xce, 0xbe, 0x6a, 0xf8, 0x9d, 0xe2, 0x25, 0x8a, 0xdd, 0xe2, - 0x57, 0xc1, 0xc1, 0xef, 0x5e, 0xa7, 0xf1, 0xaf, 0xc6, 0xf0, - 0x7f, 0x69, 0x5c, 0x4a, 0xae, 0x32, 0x58, 0xe0, 0x66, 0xbe, - 0x67, 0xbe, 0x87, 0x53, 0xf8, 0x83, 0xe2, 0x5b, 0x1d, 0x13, - 0x4b, 0x89, 0xee, 0x75, 0x2d, 0x4a, 0xe1, 0x6d, 0xad, 0xe2, - 0x5e, 0x4b, 0x33, 0x1c, 0xa, 0xf8, 0x3c, 0xbf, 0xc, 0xe5, - 0x39, 0x56, 0x7d, 0x5b, 0xb1, 0xf8, 0x9d, 0x78, 0x4b, 0x33, - 0xcc, 0xb9, 0x21, 0xf0, 0xa6, 0x7e, 0x80, 0x7f, 0xc1, 0x2d, - 0xbc, 0x19, 0x36, 0x97, 0xf0, 0xa3, 0xc5, 0x3e, 0x28, 0xb8, - 0x8c, 0xab, 0x6b, 0xda, 0xb6, 0xd8, 0x58, 0xff, 00, 0x14, - 0x30, 0x26, 0xc0, 0x7f, 0xef, 0xb6, 0x93, 0xf2, 0xaf, 0xb5, - 0x6b, 0x88, 0xf8, 0x27, 0xf0, 0xda, 0xdf, 0xe1, 0xf, 0xc2, - 0x9f, 0xc, 0xf8, 0x42, 0xdc, 0xab, 0x8d, 0x2e, 0xcd, 0x22, - 0x92, 0x45, 0x18, 0xf3, 0x25, 0x3f, 0x34, 0x8d, 0xf8, 0xb1, - 0x63, 0x5d, 0xbd, 0x7d, 0xec, 0x23, 0xcb, 0x14, 0x8f, 0xda, - 0x68, 0xc3, 0xd9, 0x53, 0x8c, 0x3b, 0x20, 0xa2, 0x8a, 0x2a, - 0xcd, 0x82, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, - 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, - 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0x2, 0xa3, 0x92, - 0xde, 0x29, 0x86, 0x24, 0x89, 0x1c, 0x7f, 0xb4, 0xa0, 0xd4, - 0x94, 0x51, 0xb8, 0x19, 0x97, 0x3e, 0x19, 0xd1, 0xef, 0x41, - 0x17, 0x1a, 0x55, 0x94, 0xc0, 0xf6, 0x92, 0xdd, 0xf, 0xf3, - 0x15, 0x97, 0x75, 0xf0, 0xcb, 0xc2, 0x77, 0x83, 0x12, 0xf8, - 0x7b, 0x4f, 0x3f, 0xee, 0xc0, 0xab, 0xfc, 0xb1, 0x5d, 0x3d, - 0x15, 0x9b, 0xa7, 0x9, 0x6f, 0x14, 0x64, 0xe9, 0x53, 0x97, - 0xc5, 0x14, 0xfe, 0x47, 0x5, 0x75, 0xf0, 0x2b, 0xc0, 0xd7, - 0x9f, 0x7f, 0x40, 0x85, 0x7f, 0xdc, 0x91, 0xd7, 0xf9, 0x35, - 0x64, 0xdc, 0x7e, 0xcd, 0x1e, 0x2, 0xb8, 0x24, 0xff, 00, - 0x65, 0xcb, 0x1e, 0x7b, 0x24, 0xed, 0xfd, 0x73, 0x5e, 0xa7, - 0x45, 0x62, 0xf0, 0xb4, 0x1e, 0xf0, 0x5f, 0x71, 0x83, 0xc1, - 0xe1, 0xa5, 0xbd, 0x35, 0xf7, 0x23, 0xc5, 0xae, 0x7f, 0x64, - 0xbf, 0x3, 0x5c, 0x64, 0xa8, 0xbe, 0x8b, 0x3d, 0x2, 0xca, - 0xa4, 0xf, 0xcd, 0x6b, 0x16, 0xeb, 0xf6, 0x32, 0xf0, 0xb4, - 0xa1, 0xbc, 0xad, 0x46, 0xee, 0x33, 0xdb, 0x72, 0x29, 0xff, - 00, 0xa, 0xfa, 0xe, 0x8a, 0xcd, 0xe0, 0x70, 0xef, 0xec, - 0x19, 0x3c, 0xbb, 0x8, 0xff, 00, 0xe5, 0xda, 0x3e, 0x61, - 0xbb, 0xfd, 0x88, 0xb4, 0xe7, 0x53, 0xe4, 0xeb, 0x99, 0x3d, - 0x83, 0xdb, 0x60, 0x7f, 0xe8, 0x55, 0xcf, 0xdf, 0x7e, 0xc3, - 0x77, 0x27, 0xfd, 0x46, 0xa5, 0x63, 0x2f, 0xfb, 0xe1, 0x97, - 0xff, 00, 0x65, 0x35, 0xf5, 0xf5, 0x15, 0x93, 0xcb, 0xb0, - 0xef, 0x64, 0xd7, 0xcd, 0x98, 0xbc, 0xab, 0x8, 0xfe, 0xcd, - 0xbe, 0x6c, 0xf8, 0x92, 0xf7, 0xf6, 0x18, 0xd6, 0xb9, 0xf2, - 0xdb, 0x4e, 0x97, 0xfd, 0xd9, 0x48, 0xfe, 0x6a, 0x2b, 0x6, - 0xfb, 0xf6, 0x1e, 0xf1, 0x2c, 0x64, 0xec, 0xd3, 0xad, 0xa6, - 0xf7, 0x4b, 0x84, 0xfe, 0xa4, 0x57, 0xdf, 0x34, 0x54, 0x3c, - 0xb2, 0x8f, 0x46, 0xfe, 0xf3, 0x7, 0x93, 0x61, 0x9f, 0x57, - 0xf7, 0xff, 00, 0xc0, 0x3f, 0x39, 0xaf, 0x7f, 0x63, 0x1f, - 0x15, 0xdb, 0x92, 0x3f, 0xb0, 0x65, 0x6f, 0xfa, 0xe7, 0x22, - 0xb7, 0xf2, 0x26, 0xb0, 0x2f, 0x7f, 0x65, 0xf, 0x14, 0x5a, - 0x12, 0xe, 0x83, 0xa8, 0xae, 0x3f, 0xbb, 0x13, 0x37, 0xf2, - 0x15, 0xfa, 0x71, 0x45, 0x43, 0xcb, 0x23, 0xd2, 0x6c, 0xc2, - 0x59, 0x15, 0x7, 0xb4, 0x9f, 0xe1, 0xfe, 0x47, 0xe5, 0x3d, - 0xef, 0xec, 0xfd, 0xad, 0xd9, 0x13, 0xe6, 0x59, 0x5e, 0xc3, - 0xfe, 0xfa, 0x11, 0xfc, 0xc5, 0x64, 0x4f, 0xf0, 0x8f, 0x56, - 0xb7, 0x24, 0x3, 0x32, 0xff, 00, 0xbc, 0x2b, 0xf5, 0xb8, - 0xa8, 0x3d, 0x40, 0x35, 0xc, 0x96, 0x16, 0xd3, 0xc, 0x49, - 0x6f, 0x14, 0x83, 0xfd, 0xa4, 0x6, 0xb3, 0x79, 0x6c, 0xfa, - 0x54, 0xfc, 0x3f, 0xe0, 0x9c, 0x92, 0xe1, 0xda, 0x72, 0xfb, - 0x4b, 0xff, 00, 0x1, 0xff, 00, 0x82, 0x7e, 0x45, 0xc9, - 0xf0, 0xeb, 0x5a, 0x83, 0xa4, 0x8f, 0xf8, 0xa9, 0xaa, 0xcf, - 0xe1, 0x1d, 0x7e, 0x1e, 0x8f, 0xf9, 0xe4, 0x57, 0xeb, 0x7c, - 0xfe, 0x15, 0xd1, 0x6e, 0xbf, 0xd7, 0x69, 0x16, 0x32, 0xff, - 00, 0xbf, 0x6c, 0x87, 0xfa, 0x56, 0x65, 0xcf, 0xc3, 0xf, - 0x9, 0x5d, 0xff, 00, 0xad, 0xf0, 0xee, 0x9c, 0x7d, 0xc5, - 0xba, 0xaf, 0xf2, 0xa8, 0x79, 0x75, 0x6e, 0x93, 0x4f, 0xe4, - 0x72, 0x4f, 0x86, 0x29, 0xbd, 0xb9, 0x7e, 0xe3, 0xf2, 0x7c, - 0xe9, 0x3e, 0x22, 0x83, 0xa7, 0x3f, 0xf0, 0x23, 0x4d, 0xff, - 00, 0x8a, 0x8a, 0x1f, 0xf9, 0x66, 0x5b, 0x1e, 0xf5, 0xfa, - 0x9b, 0x75, 0xf0, 0x2b, 0xc0, 0xb7, 0x79, 0xdf, 0xe1, 0xeb, - 0x75, 0xcf, 0xfc, 0xf3, 0x77, 0x5f, 0xe4, 0x6b, 0x26, 0xe7, - 0xf6, 0x67, 0xf0, 0x5, 0xc0, 0x23, 0xfb, 0x2a, 0x48, 0xb3, - 0xdd, 0x27, 0x6f, 0xeb, 0x9a, 0xc9, 0xe5, 0xf5, 0xff, 00, - 0xba, 0xff, 00, 0xaf, 0x43, 0x8e, 0x7c, 0x29, 0x17, 0xf6, - 0x63, 0xf7, 0xbf, 0xf2, 0x3f, 0x32, 0x3f, 0xb5, 0xb5, 0xc8, - 0x4f, 0xcd, 0x6e, 0xe7, 0xf0, 0xcd, 0x28, 0xf1, 0x46, 0xab, - 0x17, 0xdf, 0xb7, 0x7f, 0xfb, 0xe6, 0xbf, 0x48, 0x2e, 0xff, - 00, 0x64, 0xbf, 0x2, 0xdc, 0x8f, 0x91, 0x2f, 0x61, 0xff, - 00, 0x76, 0x55, 0x3f, 0xcd, 0x6b, 0x1e, 0xf3, 0xf6, 0x33, - 0xf0, 0xa4, 0xc3, 0xf7, 0x1a, 0x85, 0xe4, 0x47, 0xfd, 0xb5, - 0x56, 0xff, 00, 0xa, 0xc9, 0xe0, 0x2b, 0x7f, 0x22, 0x67, - 0x24, 0xb8, 0x51, 0xad, 0xa1, 0xf7, 0x48, 0xfc, 0xfa, 0x5f, - 0x1c, 0x5d, 0xc7, 0xf7, 0xe1, 0x61, 0xff, 00, 0x1, 0x35, - 0x32, 0x7c, 0x41, 0x71, 0xf7, 0x90, 0x8f, 0xce, 0xbe, 0xe2, - 0xbd, 0xfd, 0x88, 0x74, 0xc9, 0x3f, 0xe3, 0xdf, 0x5b, 0xc0, - 0xff, 00, 0xa6, 0x96, 0xdf, 0xe0, 0xd5, 0x81, 0x79, 0xfb, - 0xc, 0x4e, 0xcc, 0x7c, 0x9d, 0x52, 0xc5, 0xd7, 0xb6, 0xf5, - 0x65, 0x3f, 0xfa, 0x9, 0xac, 0x1e, 0x2, 0xa7, 0x5a, 0x5f, - 0x91, 0xcb, 0x2e, 0x17, 0xab, 0x1d, 0xa3, 0x2f, 0xbd, 0x7f, - 0x99, 0xf2, 0x24, 0x7f, 0x11, 0x13, 0xbe, 0x6a, 0xd4, 0x7f, - 0x10, 0xa0, 0x38, 0xcb, 0x11, 0x5f, 0x4a, 0x5d, 0xfe, 0xc2, - 0xfa, 0xcf, 0x3e, 0x5b, 0xe9, 0xb2, 0xe, 0xd8, 0x90, 0x8f, - 0xe6, 0xb5, 0x83, 0x79, 0xfb, 0xe, 0xf8, 0x99, 0x41, 0x29, - 0xa7, 0xdb, 0x49, 0xfe, 0xe5, 0xc2, 0xf, 0xeb, 0x58, 0x3c, - 0xf, 0x7a, 0x4c, 0xe6, 0x97, 0xe, 0xe2, 0x23, 0xb7, 0x3f, - 0xdd, 0x73, 0xc4, 0xa3, 0xf1, 0xed, 0xb3, 0x7f, 0xcb, 0x4f, - 0xd2, 0xac, 0xc7, 0xe3, 0x7b, 0x66, 0xff, 00, 0x96, 0xa2, - 0xbd, 0x16, 0xf7, 0xf6, 0x2e, 0xf1, 0x64, 0xa, 0xcd, 0xfd, - 0x83, 0x23, 0x1, 0xff, 00, 0x3c, 0xe5, 0x56, 0xfd, 0x3, - 0x57, 0x3f, 0x7d, 0xfb, 0x28, 0x78, 0xa6, 0xd0, 0x16, 0x7d, - 0x3, 0x51, 0x50, 0x3b, 0xac, 0x4c, 0x7f, 0xa5, 0x60, 0xf0, - 0x54, 0xd6, 0xf0, 0x6b, 0xe4, 0x73, 0xcb, 0x25, 0xc5, 0xc3, - 0xed, 0xc9, 0x7a, 0xa6, 0x61, 0x27, 0x8c, 0x2d, 0x5b, 0xfe, - 0x5a, 0xad, 0x58, 0x4f, 0x14, 0x5b, 0x3f, 0xfc, 0xb4, 0x5f, - 0xce, 0xaa, 0x5f, 0x7e, 0xcf, 0xda, 0xe5, 0x8e, 0x7c, 0xdb, - 0x1b, 0xf8, 0xf, 0xfb, 0x71, 0xb0, 0xfe, 0x62, 0xb2, 0x27, - 0xf8, 0x47, 0xaa, 0xdb, 0xe7, 0x99, 0xd7, 0xea, 0xb5, 0x83, - 0xc2, 0x50, 0xf4, 0x39, 0xde, 0x5f, 0x8b, 0x8f, 0xfc, 0xbc, - 0x5f, 0x34, 0x75, 0x2b, 0xaf, 0xdb, 0xb7, 0xf1, 0x8f, 0xce, - 0xa5, 0x5d, 0x62, 0x16, 0xee, 0x2b, 0x83, 0x93, 0xe1, 0xd6, - 0xb3, 0xf, 0xdd, 0x95, 0xc7, 0xd5, 0x6a, 0xbb, 0xf8, 0x3f, - 0x5e, 0x83, 0xa4, 0x9f, 0xce, 0xb3, 0xfa, 0x95, 0x17, 0xb4, - 0x88, 0xfa, 0xae, 0x35, 0x6d, 0x28, 0xb3, 0xd2, 0x6, 0xa9, - 0x9, 0xfe, 0x2a, 0x78, 0xbf, 0x84, 0xff, 00, 0x10, 0xaf, - 0x2f, 0x3a, 0x37, 0x88, 0x61, 0xe8, 0x73, 0xff, 00, 0x2, - 0xa6, 0x95, 0xf1, 0xc, 0x3d, 0x50, 0x9f, 0xa3, 0x54, 0xbc, - 0xbe, 0x1d, 0x24, 0x4f, 0xb1, 0xc7, 0x2f, 0xb2, 0x9f, 0xcc, - 0xf5, 0x51, 0x77, 0x11, 0xfe, 0x2a, 0x70, 0x9e, 0x33, 0xfc, - 0x55, 0xe5, 0x3, 0x52, 0xd7, 0xa1, 0xfb, 0xd0, 0x39, 0xa7, - 0x7f, 0xc2, 0x4d, 0xaa, 0xc5, 0xf7, 0xe0, 0x93, 0xfe, 0xf9, - 0xa9, 0x79, 0x77, 0x69, 0x12, 0xd6, 0x32, 0x3b, 0xd2, 0x3d, - 0x58, 0x4c, 0xbd, 0x9a, 0x9e, 0xb3, 0x11, 0xd2, 0x43, 0xf9, - 0xd7, 0x94, 0x2f, 0x8d, 0x6f, 0x53, 0xef, 0x42, 0xff, 00, - 0x8a, 0x9a, 0x95, 0x3e, 0x20, 0x4a, 0xbf, 0x79, 0x18, 0x7e, - 0x6, 0xb3, 0x79, 0x6c, 0xfa, 0x32, 0x7d, 0xae, 0x22, 0x3b, - 0xd2, 0x67, 0xaa, 0xad, 0xd4, 0x8b, 0xd2, 0x56, 0x1f, 0x8d, - 0x4c, 0x9a, 0xa5, 0xda, 0x7d, 0xdb, 0x89, 0x7, 0xd1, 0xab, - 0xcb, 0x23, 0xf8, 0x88, 0xbd, 0xc1, 0x15, 0x66, 0x3f, 0x88, - 0x50, 0x9e, 0xac, 0x6b, 0x37, 0x97, 0x55, 0x5d, 0x3, 0xeb, - 0xb5, 0x23, 0xbc, 0x64, 0x8f, 0x51, 0x8f, 0xc4, 0x3a, 0x8c, - 0x47, 0x2b, 0x75, 0x27, 0xfd, 0xf4, 0x6a, 0xdc, 0x5e, 0x33, - 0xd6, 0x22, 0xfb, 0xb7, 0x8e, 0x3f, 0x1a, 0xf2, 0xd8, 0xfc, - 0x7d, 0x6e, 0x7f, 0x8c, 0xd4, 0xeb, 0xe3, 0xab, 0x6c, 0x64, - 0xcb, 0x8a, 0xcf, 0xea, 0x35, 0xa3, 0xb2, 0x34, 0x59, 0xa4, - 0xa3, 0xd6, 0x4b, 0xef, 0x3d, 0x56, 0x1f, 0x88, 0x9a, 0xe4, - 0x3d, 0x2e, 0xd8, 0xfd, 0x4d, 0x5e, 0x8f, 0xe2, 0xe6, 0xbd, - 0x7, 0xfc, 0xbc, 0xd7, 0x8b, 0x5c, 0x7c, 0x42, 0xb4, 0x88, - 0x1f, 0xde, 0xd6, 0x16, 0xa7, 0xf1, 0x4e, 0xde, 0x30, 0x76, - 0x36, 0xe3, 0x5d, 0x14, 0xf0, 0x78, 0xa7, 0xb3, 0x6b, 0xe6, - 0xcd, 0x16, 0x73, 0x5f, 0x6a, 0x6e, 0x4c, 0xfa, 0x2f, 0xfe, - 0x17, 0xe6, 0xb1, 0x62, 0x32, 0xd3, 0xee, 0x23, 0xde, 0xb8, - 0x5f, 0x88, 0x3f, 0xb4, 0xad, 0xfd, 0xed, 0x94, 0xd0, 0xbd, - 0xe3, 0x7c, 0xc3, 0x5, 0x1, 0xe2, 0xbe, 0x7b, 0xd6, 0x7e, - 0x22, 0xde, 0x5f, 0x16, 0x58, 0x89, 0x55, 0x35, 0x99, 0xe1, - 0xdf, 0xb, 0xf8, 0x87, 0xe2, 0x26, 0xbb, 0x6f, 0xa5, 0xe8, - 0xd6, 0x17, 0x3a, 0xae, 0xa3, 0x70, 0xdb, 0x63, 0x82, 0x4, - 0x2c, 0x4f, 0xf8, 0x1, 0xea, 0x78, 0x15, 0xed, 0xd0, 0xc0, - 0xd4, 0x4a, 0xd5, 0x66, 0xdf, 0x95, 0xcd, 0xe3, 0x8b, 0xcc, - 0x71, 0x5e, 0xe5, 0x49, 0xf2, 0xc5, 0xf4, 0xea, 0xc8, 0x7c, - 0x53, 0xe2, 0xcb, 0x9f, 0x10, 0x5d, 0x33, 0xb3, 0x33, 0x64, - 0xf0, 0x7, 0x7a, 0xfb, 0xf3, 0xf6, 0x15, 0xfd, 0x91, 0x66, - 0xf0, 0x1a, 0x45, 0xf1, 0xf, 0xc6, 0x76, 0x5e, 0x5f, 0x88, - 0xee, 0x13, 0x3a, 0x5d, 0x94, 0x87, 0x26, 0xce, 0x26, 0x5e, - 0x64, 0x71, 0xda, 0x46, 0x7, 0xa7, 0xf0, 0x8f, 0x73, 0xc6, - 0xcf, 0xec, 0xb3, 0xfb, 0xb, 0xe9, 0xff, 00, 0xc, 0x65, - 0xb7, 0xf1, 0x37, 0x8d, 0xd2, 0xdf, 0x57, 0xf1, 0x3a, 0x10, - 0xf6, 0xd6, 0x6a, 0x7c, 0xcb, 0x7b, 0x2e, 0x3a, 0x9c, 0x8c, - 0x3c, 0x9e, 0xfd, 0x7, 0x6c, 0xf5, 0xaf, 0xae, 0xab, 0xe9, - 0xf0, 0xf8, 0x75, 0x4, 0x9b, 0x5e, 0x88, 0xfd, 0xf, 0x26, - 0xca, 0x56, 0x12, 0x2a, 0xa5, 0x45, 0x67, 0xd1, 0x7f, 0x9f, - 0x98, 0x51, 0x45, 0x15, 0xe8, 0x1f, 0x58, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, - 00, 0x14, 0x51, 0x45, 00, 0x14, 0x51, 0x45, 00, 0x14, - 0x51, 0x45, 00, 0x21, 00, 0xf5, 0xa8, 0xa5, 0xb3, 0xb7, - 0x9b, 0xfd, 0x64, 0x11, 0xc9, 0xfe, 0xf2, 0x3, 0x45, 0x14, - 0xad, 0x71, 0x5a, 0xe5, 0x19, 0xfc, 0x2d, 0xa3, 0x5c, 0x92, - 0x66, 0xd2, 0x2c, 0x65, 0x27, 0xbb, 0xdb, 0x21, 0xfe, 0x95, - 0x9b, 0x71, 0xf0, 0xcf, 0xc2, 0x77, 0x44, 0x99, 0x7c, 0x3b, - 0xa6, 0xb1, 0x3f, 0xf4, 0xec, 0xa3, 0xf9, 0xa, 0x28, 0xa8, - 0x74, 0xe0, 0xf7, 0x8a, 0x33, 0x74, 0xa9, 0xcb, 0x78, 0xaf, - 0xb8, 0xc7, 0xbb, 0xf8, 0x13, 0xe0, 0x5b, 0xdc, 0xef, 0xf0, - 0xfd, 0xba, 0x93, 0xde, 0x36, 0x65, 0xfe, 0x46, 0xb1, 0xee, - 0xff, 00, 0x66, 0x4f, 0x1, 0x5d, 0x74, 0xd3, 0xa5, 0x87, - 0xfe, 0xb9, 0xcc, 0x7f, 0xae, 0x68, 0xa2, 0xb1, 0x78, 0x5a, - 0xf, 0x78, 0x2f, 0xb8, 0xc2, 0x58, 0x3c, 0x34, 0xb7, 0xa6, - 0xbe, 0xe4, 0x63, 0x5d, 0x7e, 0xc8, 0xbe, 0xa, 0x9f, 0xee, - 0x49, 0x7d, 0x17, 0xb0, 0x74, 0x3f, 0xfb, 0x2d, 0x64, 0x5d, - 0x7e, 0xc6, 0x1e, 0x19, 0x97, 0x3e, 0x4e, 0xa9, 0x77, 0x17, - 0xfb, 0xd1, 0xab, 0x7f, 0x85, 0x14, 0x56, 0x6f, 0x3, 0x86, - 0x7f, 0x60, 0xc5, 0xe5, 0xd8, 0x47, 0xff, 00, 0x2e, 0xd1, - 0x8b, 0x7b, 0xfb, 0x10, 0x69, 0xd2, 0x3, 0xe4, 0x6b, 0xdc, - 0xf6, 0x12, 0x5a, 0xff, 00, 0x83, 0x56, 0xd, 0xf7, 0xec, - 0x31, 0x71, 0x83, 0xf6, 0x7d, 0x5a, 0xca, 0x53, 0xd8, 0x49, - 0x1b, 0x2f, 0xf4, 0x34, 0x51, 0x59, 0xbc, 0xbb, 0xe, 0xf6, - 0x56, 0xf9, 0xb3, 0x27, 0x95, 0x61, 0x1f, 0xd9, 0xb7, 0xcd, - 0x98, 0x17, 0xdf, 0xb0, 0xce, 0xb8, 0xa0, 0xf9, 0x6d, 0xa7, - 0x4f, 0xec, 0xb2, 0x63, 0xf9, 0xa8, 0xae, 0x7e, 0xff, 00, - 0xf6, 0x24, 0xf1, 0x44, 0x59, 0xd9, 0xa5, 0xc1, 0x37, 0xbc, - 0x73, 0x47, 0xfd, 0x5a, 0x8a, 0x2b, 0x29, 0x65, 0xb4, 0xba, - 0x37, 0xf7, 0xff, 00, 0xc0, 0x39, 0xe5, 0x93, 0x61, 0xba, - 0x37, 0xf7, 0xff, 00, 0xc0, 0x30, 0x2f, 0x3f, 0x63, 0x6f, - 0x16, 0x43, 0xff, 00, 0x32, 0xfc, 0xed, 0xff, 00, 0x5c, - 0xd9, 0x5b, 0xf9, 0x1a, 0xc1, 0xbf, 0xfd, 0x94, 0x3c, 0x55, - 0x6d, 0x90, 0x7c, 0x3f, 0xa9, 0x8f, 0x75, 0x85, 0x98, 0x7e, - 0x82, 0x8a, 0x2b, 0x86, 0xa6, 0x16, 0x34, 0xf6, 0x93, 0xfe, - 0xbe, 0x47, 0x97, 0x5f, 0x2c, 0xa3, 0x4d, 0x68, 0xdf, 0xe1, - 0xfe, 0x46, 0xb, 0x7e, 0xcc, 0x1e, 0x23, 0xb9, 0x9f, 0xcb, - 0x5d, 0x1e, 0xfc, 0xbe, 0x7a, 0x1b, 0x77, 0x3f, 0xd2, 0xb4, - 0x34, 0xff, 00, 0xd8, 0x8f, 0xc7, 0x7a, 0xc4, 0xaa, 0xb0, - 0xe8, 0x57, 0x10, 0x8c, 0xfd, 0xfb, 0x8c, 0x44, 0xb8, 0xf5, - 0xf9, 0x88, 0xa2, 0x8a, 0x58, 0x7a, 0x4e, 0xa4, 0xac, 0xe4, - 0xff, 00, 0xf, 0xf2, 0x38, 0x68, 0x65, 0x54, 0x31, 0x4e, - 0xd3, 0x6d, 0x7a, 0x5b, 0xfc, 0x8f, 0x62, 0xf8, 0x79, 0xff, - 00, 0x4, 0xdc, 0x88, 0x3a, 0x5c, 0x78, 0xc3, 0x5c, 0x8, - 0xa0, 0x83, 0xf6, 0x3d, 0x34, 0x6e, 0x63, 0xec, 0x64, 0x61, - 0x81, 0xf8, 0x3, 0xf5, 0xaf, 0xae, 0x3e, 0x1d, 0xfc, 0x27, - 0xf0, 0xaf, 0xc2, 0xad, 0x29, 0x6c, 0x3c, 0x33, 0xa3, 0xdb, - 0xe9, 0xc9, 0x8c, 0x3c, 0xca, 0xbb, 0xa6, 0x97, 0xdd, 0xdc, - 0xf2, 0x68, 0xa2, 0xbe, 0x82, 0x14, 0x61, 0x4f, 0x6d, 0xcf, - 0xac, 0xc1, 0xe5, 0x98, 0x5c, 0xe, 0xb4, 0x61, 0xaf, 0x77, - 0xab, 0xfb, 0xff, 00, 0xc8, 0xeb, 0xa8, 0xa2, 0x8a, 0xd8, - 0xf5, 0x42, 0x8a, 0x28, 0xa0, 0x2, 0x8a, 0x28, 0xa0, 0xf, - 0xff, 0xd9, 0}; - -static const char data_runtime_shtml[] = { - /* /runtime.shtml */ - 0x2f, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x20, 0x6f, 0x6e, 0x4c, 0x6f, 0x61, 0x64, - 0x3d, 0x22, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x73, - 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x28, - 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x6c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x68, 0x72, 0x65, 0x66, 0x3d, - 0x27, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x73, - 0x68, 0x74, 0x6d, 0x6c, 0x27, 0x26, 0x71, 0x75, 0x6f, 0x74, - 0x3b, 0x2c, 0x32, 0x30, 0x30, 0x30, 0x29, 0x22, 0x3e, 0xd, - 0xa, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, - 0x65, 0x3d, 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x3e, - 0xd, 0xa, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, - 0x22, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, - 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x53, - 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, - 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x72, 0x75, 0x6e, - 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x52, 0x75, 0x6e, 0x20, 0x54, 0x69, 0x6d, 0x65, - 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, - 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x73, - 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, - 0x22, 0x3e, 0x54, 0x43, 0x50, 0x20, 0x53, 0x74, 0x61, 0x74, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, - 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61, 0x3e, - 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, - 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, - 0x66, 0x72, 0x65, 0x65, 0x72, 0x74, 0x6f, 0x73, 0x2e, 0x6f, - 0x72, 0x67, 0x2f, 0x22, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, - 0x54, 0x4f, 0x53, 0x20, 0x48, 0x6f, 0x6d, 0x65, 0x70, 0x61, - 0x67, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6f, 0x2e, 0x73, 0x68, - 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x49, 0x4f, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x6c, 0x6f, 0x67, 0x6f, 0x2e, 0x6a, 0x70, 0x67, 0x22, 0x3e, - 0x33, 0x37, 0x4b, 0x20, 0x6a, 0x70, 0x67, 0x3c, 0x2f, 0x61, - 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, - 0xd, 0xa, 0x3c, 0x68, 0x72, 0x3e, 0xd, 0xa, 0x3c, 0x62, - 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x32, - 0x3e, 0x52, 0x75, 0x6e, 0x2d, 0x74, 0x69, 0x6d, 0x65, 0x20, - 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, - 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0xd, 0xa, 0x50, 0x61, 0x67, - 0x65, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x72, 0x65, 0x66, - 0x72, 0x65, 0x73, 0x68, 0x20, 0x65, 0x76, 0x65, 0x72, 0x79, - 0x20, 0x32, 0x20, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, - 0x2e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x6e, - 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x63, 0x6f, - 0x75, 0x72, 0x69, 0x65, 0x72, 0x22, 0x3e, 0x3c, 0x70, 0x72, - 0x65, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x41, 0x62, - 0x73, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x25, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x3c, 0x62, - 0x72, 0x3e, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x2a, 0x2a, 0x3c, 0x62, 0x72, 0x3e, 0xd, 0xa, 0x25, 0x21, - 0x20, 0x72, 0x75, 0x6e, 0x2d, 0x74, 0x69, 0x6d, 0x65, 0xd, - 0xa, 0x3c, 0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, - 0x6f, 0x6e, 0x74, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, - 0x6e, 0x74, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, - 0x79, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, - 0x3e, 0xd, 0xa, 0xd, 0xa, 0}; - -static const char data_stats_shtml[] = { - /* /stats.shtml */ - 0x2f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x6e, - 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, - 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x61, 0x20, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, - 0x61, 0x73, 0x6b, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x52, 0x75, 0x6e, - 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, 0x74, 0x61, 0x74, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x43, 0x50, - 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, - 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, - 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, 0x65, 0x65, 0x72, - 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x22, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x20, 0x48, - 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, - 0x6a, 0x70, 0x67, 0x22, 0x3e, 0x33, 0x37, 0x4b, 0x20, 0x6a, - 0x70, 0x67, 0x3c, 0x2f, 0x61, 0x3e, 0xd, 0xa, 0x3c, 0x62, - 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x72, - 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, - 0xd, 0xa, 0x3c, 0x68, 0x32, 0x3e, 0x4e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, - 0x74, 0x69, 0x63, 0x73, 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0xd, - 0xa, 0x3c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x77, 0x69, - 0x64, 0x74, 0x68, 0x3d, 0x22, 0x33, 0x30, 0x30, 0x22, 0x20, - 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x3d, 0x22, 0x30, 0x22, - 0x3e, 0xd, 0xa, 0x3c, 0x74, 0x72, 0x3e, 0x3c, 0x74, 0x64, - 0x20, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x3d, 0x22, 0x6c, 0x65, - 0x66, 0x74, 0x22, 0x3e, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, - 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x63, 0x6f, 0x75, 0x72, - 0x69, 0x65, 0x72, 0x22, 0x3e, 0x3c, 0x70, 0x72, 0x65, 0x3e, - 0xd, 0xa, 0x49, 0x50, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, - 0x74, 0x73, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, - 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, 0xd, 0xa, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x64, 0x65, - 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x44, 0x72, 0x6f, 0x70, - 0x70, 0x65, 0x64, 0xd, 0xa, 0x49, 0x50, 0x20, 0x65, 0x72, - 0x72, 0x6f, 0x72, 0x73, 0x20, 0x20, 0x20, 0x20, 0x49, 0x50, - 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, 0x6c, 0x65, 0x6e, 0x67, - 0x74, 0x68, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x49, 0x50, 0x20, - 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x2c, 0x20, 0x68, 0x69, - 0x67, 0x68, 0x20, 0x62, 0x79, 0x74, 0x65, 0xd, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x49, 0x50, 0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, - 0x68, 0x2c, 0x20, 0x6c, 0x6f, 0x77, 0x20, 0x62, 0x79, 0x74, - 0x65, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x49, 0x50, 0x20, 0x66, - 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0xd, 0xa, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, - 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0xd, 0xa, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x57, 0x72, 0x6f, 0x6e, 0x67, 0x20, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0xd, 0xa, 0x49, - 0x43, 0x4d, 0x50, 0x9, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, - 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x72, 0x65, 0x63, - 0x65, 0x69, 0x76, 0x65, 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x73, 0x65, - 0x6e, 0x74, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, - 0x6b, 0x65, 0x74, 0x73, 0x20, 0x64, 0x72, 0x6f, 0x70, 0x70, - 0x65, 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x54, 0x79, 0x70, - 0x65, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0xd, 0xa, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, - 0x6d, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0xd, 0xa, - 0x54, 0x43, 0x50, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, - 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0xd, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, 0xd, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x64, - 0x72, 0x6f, 0x70, 0x70, 0x65, 0x64, 0xd, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x20, - 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0xd, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x44, 0x61, 0x74, 0x61, 0x20, 0x70, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x73, 0x20, 0x77, 0x69, 0x74, 0x68, 0x6f, 0x75, - 0x74, 0x20, 0x41, 0x43, 0x4b, 0x73, 0xd, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x52, 0x65, 0x73, 0x65, 0x74, 0x73, 0xd, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x52, 0x65, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, - 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x61, 0xd, 0xa, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x53, 0x79, 0x6e, 0x20, 0x74, 0x6f, 0x20, - 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x64, 0x20, 0x70, 0x6f, 0x72, - 0x74, 0xd, 0xa, 0x55, 0x44, 0x50, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x73, 0x20, 0x64, 0x72, 0x6f, 0x70, 0x70, 0x65, - 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x73, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, - 0x65, 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, - 0x6b, 0x65, 0x74, 0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, 0xd, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x73, 0x20, 0x63, 0x68, 0x6b, 0x65, 0x72, 0x72, 0xd, 0xa, - 0x9, 0x20, 0x20, 0x20, 0x20, 0x20, 0x4e, 0x6f, 0x20, 0x63, - 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, - 0x61, 0x76, 0x61, 0x6c, 0x69, 0x61, 0x62, 0x6c, 0x65, 0xd, - 0xa, 0x3c, 0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, - 0x6f, 0x6e, 0x74, 0x3e, 0x3c, 0x2f, 0x74, 0x64, 0x3e, 0x3c, - 0x74, 0x64, 0x3e, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, - 0x61, 0x63, 0x65, 0x3d, 0x22, 0x63, 0x6f, 0x75, 0x72, 0x69, - 0x65, 0x72, 0x22, 0x3e, 0x3c, 0x70, 0x72, 0x65, 0x3e, 0x25, - 0x21, 0x20, 0x6e, 0x65, 0x74, 0x2d, 0x73, 0x74, 0x61, 0x74, - 0x73, 0xd, 0xa, 0x3c, 0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, - 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0x3c, 0x2f, 0x74, 0x64, - 0x3e, 0x3c, 0x2f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x3e, 0xd, - 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xd, 0xa, - 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xd, 0xa, 0x3c, - 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, 0xa, 0}; - -static const char data_tcp_shtml[] = { - /* /tcp.shtml */ - 0x2f, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, - 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, - 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, - 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, - 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, - 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, - 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, - 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, - 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, - 0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, - 0x4f, 0x44, 0x59, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x6e, - 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, - 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x61, 0x20, - 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, - 0x61, 0x73, 0x6b, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, - 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, - 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, - 0x3d, 0x22, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x52, 0x75, 0x6e, - 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, 0x74, 0x61, 0x74, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x43, 0x50, - 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, - 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, - 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, - 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, - 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, 0x65, 0x65, 0x72, - 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x22, 0x3e, - 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x20, 0x48, - 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, - 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, - 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, - 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, - 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, - 0x6a, 0x70, 0x67, 0x22, 0x3e, 0x33, 0x37, 0x4b, 0x20, 0x6a, - 0x70, 0x67, 0x3c, 0x2f, 0x61, 0x3e, 0xd, 0xa, 0x3c, 0x62, - 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x72, - 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0xd, 0xa, 0x3c, - 0x68, 0x32, 0x3e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, - 0x20, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0xd, 0xa, 0x3c, - 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x74, 0x61, 0x62, 0x6c, 0x65, - 0x3e, 0xd, 0xa, 0x3c, 0x74, 0x72, 0x3e, 0x3c, 0x74, 0x68, - 0x3e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x3c, 0x2f, 0x74, 0x68, - 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x52, 0x65, 0x6d, 0x6f, 0x74, - 0x65, 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, - 0x53, 0x74, 0x61, 0x74, 0x65, 0x3c, 0x2f, 0x74, 0x68, 0x3e, - 0x3c, 0x74, 0x68, 0x3e, 0x52, 0x65, 0x74, 0x72, 0x61, 0x6e, - 0x73, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x3c, - 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x54, 0x69, - 0x6d, 0x65, 0x72, 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, - 0x68, 0x3e, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x3c, 0x2f, 0x74, - 0x68, 0x3e, 0x3c, 0x2f, 0x74, 0x72, 0x3e, 0xd, 0xa, 0x25, - 0x21, 0x20, 0x74, 0x63, 0x70, 0x2d, 0x63, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0xd, 0xa, 0x3c, - 0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, - 0x74, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, - 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, - 0xd, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, - 0xa, 0xd, 0xa, 0}; - -const struct httpd_fsdata_file file_404_html[] = {{NULL, data_404_html, data_404_html + 10, sizeof(data_404_html) - 10}}; - -const struct httpd_fsdata_file file_index_html[] = {{file_404_html, data_index_html, data_index_html + 12, sizeof(data_index_html) - 12}}; - -const struct httpd_fsdata_file file_index_shtml[] = {{file_index_html, data_index_shtml, data_index_shtml + 13, sizeof(data_index_shtml) - 13}}; - -const struct httpd_fsdata_file file_io_shtml[] = {{file_index_shtml, data_io_shtml, data_io_shtml + 10, sizeof(data_io_shtml) - 10}}; - -const struct httpd_fsdata_file file_logo_jpg[] = {{file_io_shtml, data_logo_jpg, data_logo_jpg + 10, sizeof(data_logo_jpg) - 10}}; - -const struct httpd_fsdata_file file_runtime_shtml[] = {{file_logo_jpg, data_runtime_shtml, data_runtime_shtml + 15, sizeof(data_runtime_shtml) - 15}}; - -const struct httpd_fsdata_file file_stats_shtml[] = {{file_runtime_shtml, data_stats_shtml, data_stats_shtml + 13, sizeof(data_stats_shtml) - 13}}; - -const struct httpd_fsdata_file file_tcp_shtml[] = {{file_stats_shtml, data_tcp_shtml, data_tcp_shtml + 11, sizeof(data_tcp_shtml) - 11}}; - -#define HTTPD_FS_ROOT file_tcp_shtml - -#define HTTPD_FS_NUMFILES 8 diff --git a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/webserver/makefsdata b/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/webserver/makefsdata deleted file mode 100644 index a953cdd76..000000000 --- a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/webserver/makefsdata +++ /dev/null @@ -1,79 +0,0 @@ -#!/usr/bin/perl - -open(OUTPUT, "> httpd-fsdata.c"); - -chdir("httpd-fs"); - -opendir(DIR, "."); -@files = grep { !/^\./ && !/(CVS|~)/ } readdir(DIR); -closedir(DIR); - -foreach $file (@files) { - - if(-d $file && $file !~ /^\./) { - print "Processing directory $file\n"; - opendir(DIR, $file); - @newfiles = grep { !/^\./ && !/(CVS|~)/ } readdir(DIR); - closedir(DIR); - printf "Adding files @newfiles\n"; - @files = (@files, map { $_ = "$file/$_" } @newfiles); - next; - } -} - -foreach $file (@files) { - if(-f $file) { - - print "Adding file $file\n"; - - open(FILE, $file) || die "Could not open file $file\n"; - binmode FILE; - - $file =~ s-^-/-; - $fvar = $file; - $fvar =~ s-/-_-g; - $fvar =~ s-\.-_-g; - # for AVR, add PROGMEM here - print(OUTPUT "static const char data".$fvar."[] = {\n"); - print(OUTPUT "\t/* $file */\n\t"); - for($j = 0; $j < length($file); $j++) { - printf(OUTPUT "%#02x, ", unpack("C", substr($file, $j, 1))); - } - printf(OUTPUT "0,\n"); - - - $i = 0; - while(read(FILE, $data, 1)) { - if($i == 0) { - print(OUTPUT "\t"); - } - printf(OUTPUT "%#02x, ", unpack("C", $data)); - $i++; - if($i == 10) { - print(OUTPUT "\n"); - $i = 0; - } - } - print(OUTPUT "0};\n\n"); - close(FILE); - push(@fvars, $fvar); - push(@pfiles, $file); - } -} - -for($i = 0; $i < @fvars; $i++) { - $file = $pfiles[$i]; - $fvar = $fvars[$i]; - - if($i == 0) { - $prevfile = "NULL"; - } else { - $prevfile = "file" . $fvars[$i - 1]; - } - print(OUTPUT "const struct httpd_fsdata_file file".$fvar."[] = {{$prevfile, data$fvar, "); - print(OUTPUT "data$fvar + ". (length($file) + 1) .", "); - print(OUTPUT "sizeof(data$fvar) - ". (length($file) + 1) ."}};\n\n"); -} - -print(OUTPUT "#define HTTPD_FS_ROOT file$fvars[$i - 1]\n\n"); -print(OUTPUT "#define HTTPD_FS_NUMFILES $i\n"); diff --git a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/webserver/phy.c b/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/webserver/phy.c deleted file mode 100644 index e260ed51e..000000000 --- a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/webserver/phy.c +++ /dev/null @@ -1,468 +0,0 @@ -/****************************************************************************** -* DISCLAIMER - -* This software is supplied by Renesas Technology Corp. and is only -* intended for use with Renesas products. No other uses are authorized. - -* This software is owned by Renesas Technology Corp. and is protected under -* all applicable laws, including copyright laws. - -* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES -* REGARDING THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, -* INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A -* PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY -* DISCLAIMED. - -* TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS -* TECHNOLOGY CORP. NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE -* FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES -* FOR ANY REASON RELATED TO THE THIS SOFTWARE, EVEN IF RENESAS OR ITS -* AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - -* Renesas reserves the right, without notice, to make changes to this -* software and to discontinue the availability of this software. -* By using this software, you agree to the additional terms and -* conditions found by accessing the following link: -* http://www.renesas.com/disclaimer -****************************************************************************** -* Copyright (C) 2008. Renesas Technology Corp., All Rights Reserved. -******************************************************************************* -* File Name : phy.c -* Version : 1.01 -* Description : Ethernet PHY device driver -****************************************************************************** -* History : DD.MM.YYYY Version Description -* : 15.02.2010 1.00 First Release -* : 06.04.2010 1.01 RX62N changes -******************************************************************************/ - - -/****************************************************************************** -Includes , "Project Includes" -******************************************************************************/ -#include "FreeRTOS.h" -#include "task.h" - -#include "r_ether.h" -#include "phy.h" - -/****************************************************************************** -Typedef definitions -******************************************************************************/ - -/****************************************************************************** -Macro definitions -******************************************************************************/ - -/****************************************************************************** -Imported global variables and functions (from other files) -******************************************************************************/ - -/****************************************************************************** -Exported global variables and functions (to be accessed by other files) -******************************************************************************/ - -/****************************************************************************** -Private global variables and functions -******************************************************************************/ -uint16_t _phy_read( uint16_t reg_addr ); -void _phy_write( uint16_t reg_addr, uint16_t data ); -void _phy_preamble( void ); -void _phy_reg_set( uint16_t reg_addr, int32_t option ); -void _phy_reg_read( uint16_t *data ); -void _phy_reg_write( uint16_t data ); -void _phy_ta_z0( void ); -void _phy_ta_10( void ); -void _phy_mii_write_1( void ); -void _phy_mii_write_0( void ); - -/** - * External functions - */ - -/****************************************************************************** -* Function Name: phy_init -* Description : Resets Ethernet PHY device -* Arguments : none -* Return Value : none -******************************************************************************/ -int16_t phy_init( void ) -{ - uint16_t reg; - uint32_t count; - - /* Reset PHY */ - _phy_write(BASIC_MODE_CONTROL_REG, 0x8000); - - count = 0; - - do - { - vTaskDelay( 2 / portTICK_PERIOD_MS ); - reg = _phy_read(BASIC_MODE_CONTROL_REG); - count++; - } while (reg & 0x8000 && count < PHY_RESET_WAIT); - - if( count < PHY_RESET_WAIT ) - { - return R_PHY_OK; - } - - return R_PHY_ERROR; -} - -/****************************************************************************** -* Function Name: phy_set_100full -* Description : Set Ethernet PHY device to 100 Mbps full duplex -* Arguments : none -* Return Value : none -******************************************************************************/ -void phy_set_100full( void ) -{ - _phy_write(BASIC_MODE_CONTROL_REG, 0x2100); -} - -/****************************************************************************** -* Function Name: phy_set_10half -* Description : Sets Ethernet PHY device to 10 Mbps half duplexR -* Arguments : none -* Return Value : none -******************************************************************************/ -void phy_set_10half( void ) -{ - _phy_write(BASIC_MODE_CONTROL_REG, 0x0000); -} - -/****************************************************************************** -* Function Name: phy_set_autonegotiate -* Description : Starts autonegotiate and reports the other side's -* : physical capability -* Arguments : none -* Return Value : bit 8 - Full duplex 100 mbps -* : bit 7 - Half duplex 100 mbps -* : bit 6 - Full duplex 10 mbps -* : bit 5 - Half duplex 10 mbps -* : bit 4:0 - Always set to 00001 (IEEE 802.3) -* : -1 if error -******************************************************************************/ -int16_t phy_set_autonegotiate( void ) -{ - uint16_t reg; - uint32_t count; - - _phy_write(AN_ADVERTISEMENT_REG, 0x01E1); - _phy_write(BASIC_MODE_CONTROL_REG, 0x1200); - - count = 0; - - do - { - reg = _phy_read(BASIC_MODE_STATUS_REG); - count++; - vTaskDelay( 100 / portTICK_PERIOD_MS ); - - /* Make sure we don't break out if reg just contains 0xffff. */ - if( reg == 0xffff ) - { - reg = 0; - } - - } while (!(reg & 0x0020) && (count < PHY_AUTO_NEGOTIATON_WAIT)); - - if (count >= PHY_AUTO_NEGOTIATON_WAIT) - { - return R_PHY_ERROR; - } - else - { - /* Get the link partner response */ - reg = (int16_t)_phy_read(AN_LINK_PARTNER_ABILITY_REG); - - if (reg & ( 1 << 8 ) ) - { - return PHY_LINK_100F; - } - if (reg & ( 1 << 7 ) ) - { - return PHY_LINK_100H; - } - if (reg & ( 1 << 6 ) ) - { - return PHY_LINK_10F; - } - if (reg & 1 << 5 ) - { - return PHY_LINK_10H; - } - - return (-1); - } -} - - -/** - * Internal functions - */ - -/****************************************************************************** -* Function Name: _phy_read -* Description : Reads a PHY register -* Arguments : reg_addr - address of the PHY register -* Return Value : read value -******************************************************************************/ -uint16_t _phy_read( uint16_t reg_addr ) -{ - uint16_t data; - - _phy_preamble(); - _phy_reg_set( reg_addr, PHY_READ ); - _phy_ta_z0(); - _phy_reg_read( &data ); - _phy_ta_z0(); - - return( data ); -} - -/****************************************************************************** -* Function Name: _phy_write -* Description : Writes to a PHY register -* Arguments : reg_addr - address of the PHY register -* : data - value -* Return Value : none -******************************************************************************/ -void _phy_write( uint16_t reg_addr, uint16_t data ) -{ - _phy_preamble(); - _phy_reg_set( reg_addr, PHY_WRITE ); - _phy_ta_10(); - _phy_reg_write( data ); - _phy_ta_z0(); -} - -/****************************************************************************** -* Function Name: _phy_preamble -* Description : As preliminary preparation for access to the PHY module register, -* "1" is output via the MII management interface. -* Arguments : none -* Return Value : none -******************************************************************************/ -void _phy_preamble( void ) -{ - int16_t i; - - i = 32; - while( i > 0 ) - { - _phy_mii_write_1(); - i--; - } -} - -/****************************************************************************** -* Function Name: _phy_reg_set -* Description : Sets a PHY device to read or write mode -* Arguments : reg_addr - address of the PHY register -* : option - mode -* Return Value : none -******************************************************************************/ -void _phy_reg_set( uint16_t reg_addr, int32_t option ) -{ - int32_t i; - uint16_t data; - - data = 0; - data = (PHY_ST << 14); /* ST code */ - - if( option == PHY_READ ) - { - data |= (PHY_READ << 12); /* OP code(RD) */ - } - else - { - data |= (PHY_WRITE << 12); /* OP code(WT) */ - } - - data |= (PHY_ADDR << 7); /* PHY Address */ - data |= (reg_addr << 2); /* Reg Address */ - - i = 14; - while( i > 0 ) - { - if( (data & 0x8000) == 0 ) - { - _phy_mii_write_0(); - } - else - { - _phy_mii_write_1(); - } - data <<= 1; - i--; - } -} - -/****************************************************************************** -* Function Name: _phy_reg_read -* Description : Reads PHY register through MII interface -* Arguments : data - pointer to store the data read -* Return Value : none -******************************************************************************/ -void _phy_reg_read( uint16_t *data ) -{ - int32_t i, j; - uint16_t reg_data; - - reg_data = 0; - i = 16; - while( i > 0 ) - { - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000000; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000001; - } - - reg_data <<= 1; - reg_data |= (uint16_t)((ETHERC.PIR.LONG & 0x00000008) >> 3); /* MDI read */ - - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000001; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000000; - } - i--; - } - *data = reg_data; -} - -/****************************************************************************** -* Function Name: _phy_reg_write -* Description : Writes to PHY register through MII interface -* Arguments : data - value to write -* Return Value : none -******************************************************************************/ -void _phy_reg_write( uint16_t data ) -{ - int32_t i; - - i = 16; - while( i > 0 ) - { - if( (data & 0x8000) == 0 ) - { - _phy_mii_write_0(); - } - else - { - _phy_mii_write_1(); - } - i--; - data <<= 1; - } -} - -/****************************************************************************** -* Function Name: _phy_ta_z0 -* Description : Performs bus release so that PHY can drive data -* : for read operation -* Arguments : none -* Return Value : none -******************************************************************************/ -void _phy_ta_z0( void ) -{ - int32_t j; - - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000000; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000001; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000001; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000000; - } -} - -/****************************************************************************** -* Function Name: _phy_ta_10 -* Description : Switches data bus so MII interface can drive data -* : for write operation -* Arguments : none -* Return Value : none -******************************************************************************/ -void _phy_ta_10(void) -{ - _phy_mii_write_1(); - _phy_mii_write_0(); -} - -/****************************************************************************** -* Function Name: _phy_mii_write_1 -* Description : Outputs 1 to the MII interface -* Arguments : none -* Return Value : none -******************************************************************************/ -void _phy_mii_write_1( void ) -{ - int32_t j; - - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000006; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000007; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000007; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000006; - } -} - -/****************************************************************************** -* Function Name: _phy_mii_write_0 -* Description : Outputs 0 to the MII interface -* Arguments : none -* Return Value : none -******************************************************************************/ -void _phy_mii_write_0( void ) -{ - int32_t j; - - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000002; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000003; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000003; - } - for(j = MDC_WAIT; j > 0; j--) - { - ETHERC.PIR.LONG = 0x00000002; - } -} - - diff --git a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/webserver/phy.h b/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/webserver/phy.h deleted file mode 100644 index 48a172510..000000000 --- a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/webserver/phy.h +++ /dev/null @@ -1,84 +0,0 @@ -/****************************************************************************** -* DISCLAIMER -* Please refer to http://www.renesas.com/disclaimer -****************************************************************************** - Copyright (C) 2008. Renesas Technology Corp., All Rights Reserved. -******************************************************************************* -* File Name : phy.h -* Version : 1.02 -* Description : Ethernet PHY device driver -****************************************************************************** -* History : DD.MM.YYYY Version Description -* : 15.02.2010 1.00 First Release -* : 17.03.2010 1.01 Modification of macro definitions for access timing -* : 06.04.2010 1.02 RX62N changes -******************************************************************************/ - -#ifndef PHY_H -#define PHY_H - -/****************************************************************************** -Includes , "Project Includes" -******************************************************************************/ -#include - -/****************************************************************************** -Typedef definitions -******************************************************************************/ - -/****************************************************************************** -Macro definitions -******************************************************************************/ -/* Standard PHY Registers */ -#define BASIC_MODE_CONTROL_REG 0 -#define BASIC_MODE_STATUS_REG 1 -#define PHY_IDENTIFIER1_REG 2 -#define PHY_IDENTIFIER2_REG 3 -#define AN_ADVERTISEMENT_REG 4 -#define AN_LINK_PARTNER_ABILITY_REG 5 -#define AN_EXPANSION_REG 6 - -/* Media Independent Interface */ -#define PHY_ST 1 -#define PHY_READ 2 -#define PHY_WRITE 1 -#define PHY_ADDR 0x1 - -#define MDC_WAIT 2 - -/* PHY return definitions */ -#define R_PHY_OK 0 -#define R_PHY_ERROR -1 - -/* Auto-Negotiation Link Partner Status */ -#define PHY_AN_LINK_PARTNER_100BASE 0x0180 -#define PHY_AN_LINK_PARTNER_FULL 0x0140 -#define PHY_AN_COMPLETE ( 1 << 5 ) - -/* - * Wait counter definitions of PHY-LSI initialization - * ICLK = 96MHz -*/ -#define PHY_RESET_WAIT 0x00000020L -#define PHY_AUTO_NEGOTIATON_WAIT 75 - -#define PHY_AN_ENABLE 0x1200 -#define PHY_AN_10_100_F_H 0xde1 - -/****************************************************************************** -Variable Externs -******************************************************************************/ - -/****************************************************************************** -Functions Prototypes -******************************************************************************/ -/** - * External prototypes - **/ -int16_t phy_init( void ); -void phy_set_100full( void ); -void phy_set_10half( void ); -int16_t phy_set_autonegotiate( void ); - -#endif /* PHY_H */ - diff --git a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/webserver/r_ether.h b/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/webserver/r_ether.h deleted file mode 100644 index 13157ab5c..000000000 --- a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/webserver/r_ether.h +++ /dev/null @@ -1,185 +0,0 @@ -/****************************************************************************** -* DISCLAIMER -* Please refer to http://www.renesas.com/disclaimer -****************************************************************************** - Copyright (C) 2008. Renesas Technology Corp., All Rights Reserved. -******************************************************************************* -* File Name : r_ether.h -* Version : 1.02 -* Description : Ethernet module device driver -****************************************************************************** -* History : DD.MM.YYYY Version Description -* : 15.02.2010 1.00 First Release -* : 03.03.2010 1.01 Buffer size is aligned on the 32-byte boundary. -* : 04.06.2010 1.02 RX62N changes -******************************************************************************/ - -#ifndef R_ETHER_H -#define R_ETHER_H - -/****************************************************************************** -Includes , "Project Includes" -******************************************************************************/ -#include - -/****************************************************************************** -Typedef definitions -******************************************************************************/ -struct Descriptor -{ - __evenaccess uint32_t status; -#if __LIT -/* Little endian */ - __evenaccess uint16_t size; - __evenaccess uint16_t bufsize; -#else -/* Big endian */ - __evenaccess uint16_t bufsize; - __evenaccess uint16_t size; - -#endif - int8_t *buf_p; - struct Descriptor *next; -}; - -typedef struct Descriptor ethfifo; - -typedef enum _NETLNK -{ - PHY_NO_LINK = 0, - PHY_LINK_10H, - PHY_LINK_10F, - PHY_LINK_100H, - PHY_LINK_100F - -} NETLNK; - -/****************************************************************************** -Macro definitions -******************************************************************************/ -#define BUFSIZE 256 /* Must be 32-bit aligned */ -#define ENTRY 8 /* Number of RX and TX buffers */ - -#define ACT 0x80000000 -#define DL 0x40000000 -#define FP1 0x20000000 -#define FP0 0x10000000 -#define FE 0x08000000 - -#define RFOVER 0x00000200 -#define RAD 0x00000100 -#define RMAF 0x00000080 -#define RRF 0x00000010 -#define RTLF 0x00000008 -#define RTSF 0x00000004 -#define PRE 0x00000002 -#define CERF 0x00000001 - -#define TAD 0x00000100 -#define CND 0x00000008 -#define DLC 0x00000004 -#define CD 0x00000002 -#define TRO 0x00000001 - -/** - * Renesas Ethernet API return defines - **/ -#define R_ETHER_OK 0 -#define R_ETHER_ERROR -1 - -/* Ether Interface definitions */ -#define ETH_RMII_MODE 0 -#define ETH_MII_MODE 1 -/* Select Ether Interface Mode */ -#define ETH_MODE_SEL ETH_MII_MODE - -/****************************************************************************** -Variable Externs -******************************************************************************/ - -/****************************************************************************** -Functions Prototypes -******************************************************************************/ -/** - * Renesas Ethernet API prototypes - **/ -int32_t R_Ether_Open(uint32_t ch, uint8_t mac_addr[]); -int32_t R_Ether_Close(uint32_t ch); -int32_t R_Ether_Write(uint32_t ch, void *buf, uint32_t len); -int32_t R_Ether_Read(uint32_t ch, void *buf); - -/** - * FreeRTOS Ethernet API prototypes. - */ - -/* - * Configure all the ethernet components (MAC, DMA, PHY) ready for communication. - */ -void vInitEmac( void ); - -/* - * Auto negotiate the link, returning pass or fail depending on whether a link - * was established or not. - */ -long lEMACWaitForLink( void ); - -/* - * Check the Rx status, and return the number of bytes received if any. - */ -unsigned long ulEMACRead( void ); - -/* - * Send uip_len bytes from uip_buf to the Tx descriptors and initiate a Tx. - */ -void vEMACWrite( void ); - - - - -/****************************************************/ -/* Ethernet statistic collection data */ -struct enet_stats -{ - uint32_t rx_packets; /* total packets received */ - uint32_t tx_packets; /* total packets transmitted */ - uint32_t rx_errors; /* bad packets received */ - uint32_t tx_errors; /* packet transmit problems */ - uint32_t rx_dropped; /* no space in buffers */ - uint32_t tx_dropped; /* no space available */ - uint32_t multicast; /* multicast packets received */ - uint32_t collisions; - - /* detailed rx_errors: */ - uint32_t rx_length_errors; - uint32_t rx_over_errors; /* receiver ring buffer overflow */ - uint32_t rx_crc_errors; /* recved pkt with crc error */ - uint32_t rx_frame_errors; /* recv'd frame alignment error */ - uint32_t rx_fifo_errors; /* recv'r fifo overrun */ - uint32_t rx_missed_errors; /* receiver missed packet */ - - /* detailed tx_errors */ - uint32_t tx_aborted_errors; - uint32_t tx_carrier_errors; - uint32_t tx_fifo_errors; - uint32_t tx_heartbeat_errors; - uint32_t tx_window_errors; -}; - -struct ei_device -{ - const int8_t *name; - uint8_t open; - uint8_t Tx_act; - uint8_t Rx_act; - uint8_t txing; /* Transmit Active */ - uint8_t irqlock; /* EDMAC's interrupt disabled when '1'. */ - uint8_t dmaing; /* EDMAC Active */ - ethfifo *rxcurrent; /* current receive discripter */ - ethfifo *txcurrent; /* current transmit discripter */ - uint8_t save_irq; /* Original dev->irq value. */ - struct enet_stats stat; - uint8_t mac_addr[6]; -}; - -#endif /* R_ETHER_H */ - diff --git a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/webserver/uip-conf.h b/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/webserver/uip-conf.h deleted file mode 100644 index 00f739647..000000000 --- a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/webserver/uip-conf.h +++ /dev/null @@ -1,167 +0,0 @@ -/** - * \addtogroup uipopt - * @{ - */ - -/** - * \name Project-specific configuration options - * @{ - * - * uIP has a number of configuration options that can be overridden - * for each project. These are kept in a project-specific uip-conf.h - * file and all configuration names have the prefix UIP_CONF. - */ - -/* - * Copyright (c) 2006, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: uip-conf.h,v 1.6 2006/06/12 08:00:31 adam Exp $ - */ - -/** - * \file - * An example uIP configuration file - * \author - * Adam Dunkels - */ - -#ifndef __UIP_CONF_H__ -#define __UIP_CONF_H__ - -#define UIP_CONF_EXTERNAL_BUFFER -#define UIP_CONF_PROCESS_HTTPD_FORMS 1 - -/** - * 8 bit datatype - * - * This typedef defines the 8-bit type used throughout uIP. - * - * \hideinitializer - */ -typedef unsigned char u8_t; - -/** - * 16 bit datatype - * - * This typedef defines the 16-bit type used throughout uIP. - * - * \hideinitializer - */ -typedef unsigned short u16_t; - -typedef unsigned long u32_t; - -/** - * Statistics datatype - * - * This typedef defines the dataype used for keeping statistics in - * uIP. - * - * \hideinitializer - */ -typedef unsigned short uip_stats_t; - -/** - * Maximum number of TCP connections. - * - * \hideinitializer - */ -#define UIP_CONF_MAX_CONNECTIONS 40 - -/** - * Maximum number of listening TCP ports. - * - * \hideinitializer - */ -#define UIP_CONF_MAX_LISTENPORTS 40 - -/** - * uIP buffer size. - * - * \hideinitializer - */ -#define UIP_CONF_BUFFER_SIZE 1480 - -/** - * CPU byte order. - * - * \hideinitializer - */ -#ifdef __LIT -#define UIP_CONF_BYTE_ORDER UIP_LITTLE_ENDIAN -#else -#define UIP_CONF_BYTE_ORDER UIP_BIG_ENDIAN -#endif - -/** - * Logging on or off - * - * \hideinitializer - */ -#define UIP_CONF_LOGGING 0 - -/** - * UDP support on or off - * - * \hideinitializer - */ -#define UIP_CONF_UDP 0 - -/** - * UDP checksums on or off - * - * \hideinitializer - */ -#define UIP_CONF_UDP_CHECKSUMS 1 - -/** - * uIP statistics on or off - * - * \hideinitializer - */ -#define UIP_CONF_STATISTICS 1 - -/* Here we include the header file for the application(s) we use in - our project. */ -/*#include "smtp.h"*/ -/*#include "hello-world.h"*/ -/*#include "telnetd.h"*/ -#include "webserver.h" -/*#include "dhcpc.h"*/ -/*#include "resolv.h"*/ -/*#include "webclient.h"*/ - -#define CCIF -#define CC_REGISTER_ARG - -#endif /* __UIP_CONF_H__ */ - -/** @} */ -/** @} */ diff --git a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/webserver/webserver.h b/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/webserver/webserver.h deleted file mode 100644 index 5267f0587..000000000 --- a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/RTOSDemo/webserver/webserver.h +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright (c) 2002, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials provided - * with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: webserver.h,v 1.2 2006/06/11 21:46:38 adam Exp $ - * - */ -#ifndef __WEBSERVER_H__ -#define __WEBSERVER_H__ - -#include "apps/httpd/httpd.h" - -typedef struct httpd_state uip_tcp_appstate_t; -/* UIP_APPCALL: the name of the application function. This function - must return void and take no arguments (i.e., C type "void - appfunc(void)"). */ -#define UIP_APPCALL httpd_appcall - - -#endif /* __WEBSERVER_H__ */ diff --git a/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/ReadMe.txt b/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/ReadMe.txt new file mode 100644 index 000000000..12c70d213 --- /dev/null +++ b/FreeRTOS/Demo/RX600_RX63N-RDK_Renesas/ReadMe.txt @@ -0,0 +1 @@ +The third party uIP TCP/IP stack and the demo project that used to be in this directory was removed in FreeRTOS version V10.4.3 due to security vulnerabilities identified in uIP. In a future version this demo may be replaced by a version which does not use TCP/IP or uses FreeRTOS’s own TCP/IP stack in place of the original third party stack. \ No newline at end of file diff --git a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo.hws b/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo.hws deleted file mode 100644 index b679a05d4..000000000 --- a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo.hws +++ /dev/null @@ -1,41 +0,0 @@ -[HIMDBVersion] -2.0 -[DATABASE_VERSION] -"11.0" -[WORKSPACE_DETAILS] -"RTOSDemo" "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas" "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo.hws" "SuperH RISC engine" "Renesas SuperH Standard" -[SHARED_WORKSPACE_CONTROL_STATUS] -"" "" "" -"" "" "" -[PROJECTS] -"RTOSDemo" "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo" "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\RTOSDemo.hwp" 0 -[INFORMATION] -"No workspace information available" -[SCRAP] -[PROJECT_DEPENDENCY] -[WORKSPACE_PROPERTIES] -[HELP_FILES] -"c:\devtools\renesas\hew\tools\renesas\sh\9_3_2\hew\stdlib.chm" "C/C++ Standard Library Help" 1 -[GENERAL_DATA_PROJECT] -[USERMENUTOOLS] -[CUSTOMPLACEHOLDERS] -[MAKEFILE_BUILD_INFO] -"$(WORKSPDIR)\make\$(PROJECTNAME)_$(CONFIGNAME).mak" "" "$(WORKSPDIR)\make" 0 0 0 -[VD_CONFIGURATION_OPTIONS] -"ACTIVE_DESKTOP" "0" -[VD_CONFIGURATIONS] -"0" "Default1" "1" -"1" "Default2" "1" -"2" "Default3" "1" -"3" "Default4" "1" -[OPTIONS_DEBUG_TAB] -0 0 0 0 0 -[VCS] -"" "" "" 0 -[VCS_PROJECT] -[MAKEFILE_ENV_STRINGS] -[MAKEFILE_ENV_FLAGS] -1 0 0 -[MAKEFILE_CLEAN_INFO] -"" -[END] diff --git a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo.tws b/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo.tws deleted file mode 100644 index 2f08700ff..000000000 --- a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo.tws +++ /dev/null @@ -1,15 +0,0 @@ -[HIMDBVersion] -2.0 -[DATABASE_VERSION] -"1.2" -[CURRENT_PROJECT] -"RTOSDemo" -[GENERAL_DATA] -[BREAKPOINTS] -[OPEN_WORKSPACE_FILES] -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\main.c" -[WORKSPACE_FILE_STATES] -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\main.c" -4 -23 1316 554 1 0 -[LOADED_PROJECTS] -"RTOSDemo" -[END] diff --git a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/FreeRTOSConfig.h b/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/FreeRTOSConfig.h deleted file mode 100644 index 33f315388..000000000 --- a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/FreeRTOSConfig.h +++ /dev/null @@ -1,118 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -#include "iodefine.h" - -#ifndef FREERTOS_CONFIG_H -#define FREERTOS_CONFIG_H - -/*----------------------------------------------------------- - * Application specific definitions. - * - * These definitions should be adjusted for your particular hardware and - * application requirements. - * - * THESE PARAMETERS ARE DESCRIBED WITHIN THE 'CONFIGURATION' SECTION OF THE - * FreeRTOS API DOCUMENTATION AVAILABLE ON THE FreeRTOS.org WEB SITE. - * - * See http://www.freertos.org/a00110.html - *----------------------------------------------------------*/ - -#define configUSE_PREEMPTION 1 -#define configUSE_IDLE_HOOK 1 -#define configUSE_TICK_HOOK 1 /* Must be set to one for the timer interrupt to be cleared. */ -#define configCPU_CLOCK_HZ ( 200000000UL ) -#define configPERIPHERAL_CLOCK_HZ ( 50000000UL ) -#define configTICK_RATE_HZ ( ( TickType_t ) 1000 ) -#define configMINIMAL_STACK_SIZE ( ( unsigned short ) 140 ) -#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 36 * 1024 ) ) -#define configMAX_TASK_NAME_LEN ( 12 ) -#define configUSE_TRACE_FACILITY 1 -#define configUSE_16_BIT_TICKS 0 -#define configIDLE_SHOULD_YIELD 1 -#define configUSE_CO_ROUTINES 0 -#define configUSE_MUTEXES 1 -#define configGENERATE_RUN_TIME_STATS 1 -#define configCHECK_FOR_STACK_OVERFLOW 2 -#define configUSE_RECURSIVE_MUTEXES 1 -#define configQUEUE_REGISTRY_SIZE 0 -#define configUSE_MALLOC_FAILED_HOOK 1 -#define configUSE_APPLICATION_TASK_TAG 1 /* Must be set to one for floating point support in this port. */ - -#define configMAX_PRIORITIES ( 5 ) -#define configMAX_CO_ROUTINE_PRIORITIES ( 2 ) - -/* Set the following definitions to 1 to include the API function, or zero -to exclude the API function. */ - -#define INCLUDE_vTaskPrioritySet 1 -#define INCLUDE_uxTaskPriorityGet 1 -#define INCLUDE_vTaskDelete 1 -#define INCLUDE_vTaskCleanUpResources 0 -#define INCLUDE_vTaskSuspend 1 -#define INCLUDE_vTaskDelayUntil 1 -#define INCLUDE_vTaskDelay 1 -#define INCLUDE_uxTaskGetStackHighWaterMark 1 -#define INCLUDE_xTaskGetSchedulerState 1 - -/* This demo makes use of one or more example stats formatting functions. These -format the raw data provided by the uxTaskGetSystemState() function in to human -readable ASCII form. See the notes in the implementation of vTaskList() within -FreeRTOS/Source/tasks.c for limitations. */ -#define configUSE_STATS_FORMATTING_FUNCTIONS 1 - -void vSetupClockForRunTimeStats( void ); -#define portCONFIGURE_TIMER_FOR_RUN_TIME_STATS() vSetupClockForRunTimeStats() - -extern unsigned long ulRunTime; -#define portGET_RUN_TIME_COUNTER_VALUE() ulRunTime - -/*----------------------------------------------------------- - * Ethernet configuration. - *-----------------------------------------------------------*/ - -/* MAC address configuration. */ -#define configMAC_ADDR0 0x00 -#define configMAC_ADDR1 0x12 -#define configMAC_ADDR2 0x13 -#define configMAC_ADDR3 0x10 -#define configMAC_ADDR4 0x15 -#define configMAC_ADDR5 0x11 - -/* IP address configuration. */ -#define configIP_ADDR0 192 -#define configIP_ADDR1 168 -#define configIP_ADDR2 0 -#define configIP_ADDR3 201 - -/* Netmask configuration. */ -#define configNET_MASK0 255 -#define configNET_MASK1 255 -#define configNET_MASK2 255 -#define configNET_MASK3 0 - -#endif /* FREERTOS_CONFIG_H */ diff --git a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/ParTest/ParTest.c b/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/ParTest/ParTest.c deleted file mode 100644 index a27722c8d..000000000 --- a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/ParTest/ParTest.c +++ /dev/null @@ -1,114 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/*----------------------------------------------------------- - * Simple IO routines to control the LEDs. - *-----------------------------------------------------------*/ - -/* Scheduler includes. */ -#include "FreeRTOS.h" -#include "task.h" - -/* Demo includes. */ -#include "partest.h" - -#define partestNUM_LEDS ( 6 ) -#define partestALL_LEDS ( usLEDMasks[ 0 ] | usLEDMasks[ 1 ] | usLEDMasks[ 2 ] | usLEDMasks[ 3 ] | usLEDMasks[ 4 ] | usLEDMasks[ 5 ] ) - -static const unsigned short usLEDMasks[ partestNUM_LEDS ] = { ( 1 << 9 ), ( 1 << 11 ), ( 1 << 12 ), ( 1 << 13 ), ( 1 << 14 ), ( 1 << 15 ) }; -/*-----------------------------------------------------------*/ - -void vParTestInitialise( void ) -{ - /* Select port functions for PE9 to PE15. */ - PFC.PECRL3.WORD &= ( unsigned short ) ~partestALL_LEDS; - - /* Turn all LEDs off. */ - PE.DR.WORD &= ( unsigned short ) ~partestALL_LEDS; - - /* Set all LEDs to output. */ - PFC.PEIORL.WORD |= ( unsigned short ) partestALL_LEDS; -} -/*-----------------------------------------------------------*/ - -void vParTestSetLED( unsigned portBASE_TYPE uxLED, signed portBASE_TYPE xValue ) -{ - if( uxLED < partestNUM_LEDS ) - { - if( xValue ) - { - /* Turn the LED on. */ - taskENTER_CRITICAL(); - { - PE.DR.WORD |= usLEDMasks[ uxLED ]; - } - taskEXIT_CRITICAL(); - } - else - { - /* Turn the LED off. */ - taskENTER_CRITICAL(); - { - PE.DR.WORD &= ( unsigned short ) ~usLEDMasks[ uxLED ]; - } - taskEXIT_CRITICAL(); - } - } -} -/*-----------------------------------------------------------*/ - -void vParTestToggleLED( unsigned portBASE_TYPE uxLED ) -{ - if( uxLED < partestNUM_LEDS ) - { - taskENTER_CRITICAL(); - { - if( ( PE.DR.WORD & usLEDMasks[ uxLED ] ) != 0x00 ) - { - PE.DR.WORD &= ( unsigned short ) ~usLEDMasks[ uxLED ]; - } - else - { - PE.DR.WORD |= usLEDMasks[ uxLED ]; - } - } - taskEXIT_CRITICAL(); - } -} -/*-----------------------------------------------------------*/ - -long lParTestGetLEDState( void ) -{ - /* Returns the state of the fifth LED. */ - return !( PE.DR.WORD & usLEDMasks[ 4 ] ); -} -/*-----------------------------------------------------------*/ - - - - - \ No newline at end of file diff --git a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/RTOSDemo.c b/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/RTOSDemo.c deleted file mode 100644 index 03891c5c2..000000000 --- a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/RTOSDemo.c +++ /dev/null @@ -1,15 +0,0 @@ - -void main(void); - -void main(void) -{ -volatile unsigned long ul; - - for( ;; ) - { - ul++; - ul++; - } -} - - diff --git a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/RTOSDemo.hwp b/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/RTOSDemo.hwp deleted file mode 100644 index 885525df7..000000000 --- a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/RTOSDemo.hwp +++ /dev/null @@ -1,239 +0,0 @@ -[HIMDBVersion] -2.0 -[DATABASE_VERSION] -"2.8" -[PROJECT_DETAILS] -"RTOSDemo" "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo" "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\RTOSDemo.hwp" "SuperH RISC engine" "Renesas SuperH Standard" "Application" "SH2A-FPU" "Other" -[INFORMATION] -"No project information available" -[TOOL_CHAIN] -"Renesas SuperH RISC engine Standard Toolchain" "9.3.2.0" -[CONFIGURATIONS] -"Debug_SH7216_E10A-USB_SYSTEM__SH" "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\Debug_SH7216_E10A-USB_SYSTEM__SH" -[BUILD_PHASES] -"Renesas OptLinker" 1 -"Renesas SH Assembler" 1 -"Renesas SH C/C++ Compiler" 1 -"Renesas SH C/C++ Library Generator" 1 -[TOOL_ENVIRONMENT] -[EXTENSIONS] -"Absolute file" "ABS" -"Assembly include file" "INC" -"Assembly list file" "LIS" -"Assembly source file" "ASM" -"Assembly source file" "SRC" -"Binary file" "BIN" -"C header file" "H" -"C list file" "LST" -"C source file" "C" -"C++ header file" "HPP" -"C++ list file" "LPP" -"C++ source file" "CC" -"C++ source file" "CP" -"C++ source file" "CPP" -"CPU information file" "CPU" -"Calling information file" "CAL" -"Debug information file" "DBG" -"Expanded assembly source file" "EXP" -"Hex file" "HEX" -"Library file" "LIB" -"Library information file" "LBP" -"Linkage map file" "MAP" -"Linkage symbol file" "FSY" -"Object file" "OBJ" -"Optimize map file" "bls" -"Preprocessed C source file" "P" -"Preprocessed C++ source file" "PP" -"Profile file" "PRO" -"Relocatable file" "REL" -"Rts information file" "RTS" -"S-Record file" "MOT" -"Stack information file" "SNI" -"TD include object file" "RTI" -[FILE_GROUPS] -"Absolute file" "BIN" "NONE" "" -"Assembly include file" "TEXT" "EDITOR" "" -"Assembly list file" "TEXT" "EDITOR" "" -"Assembly source file" "TEXT" "EDITOR" "" -"Binary file" "BIN" "NONE" "" -"C header file" "TEXT" "EDITOR" "" -"C list file" "TEXT" "EDITOR" "" -"C source file" "TEXT" "EDITOR" "" -"C++ header file" "TEXT" "EDITOR" "" -"C++ list file" "TEXT" "EDITOR" "" -"C++ source file" "TEXT" "EDITOR" "" -"CPU information file" "BIN" "NONE" "" -"Calling information file" "BIN" "NONE" "" -"Debug information file" "BIN" "NONE" "" -"Expanded assembly source file" "TEXT" "EDITOR" "" -"Hex file" "TEXT" "EDITOR" "" -"Library file" "BIN" "NONE" "" -"Library information file" "TEXT" "EDITOR" "" -"Linkage map file" "TEXT" "EDITOR" "" -"Linkage symbol file" "TEXT" "EDITOR" "" -"Object file" "BIN" "NONE" "" -"Optimize map file" "BIN" "NONE" "" -"Preprocessed C source file" "TEXT" "EDITOR" "" -"Preprocessed C++ source file" "TEXT" "EDITOR" "" -"Profile file" "BIN" "NONE" "" -"Relocatable file" "BIN" "NONE" "" -"Rts information file" "BIN" "NONE" "" -"S-Record file" "TEXT" "EDITOR" "" -"Stack information file" "BIN" "NONE" "" -"TD include object file" "BIN" "NONE" "" -[ASSOCIATED_APPLICATIONS] -[TOOLCHAIN_PHASE] -"Renesas OptLinker" -"Renesas SH Assembler" -"Renesas SH C/C++ Compiler" -"Renesas SH C/C++ Library Generator" -[UTILITY_PHASE] -[CUSTOM_PHASES] -[CUSTOM_PHASE_INPUT_GROUP] -[CUSTOM_PHASE_OUTPUT_SYNTAX] -[BUILD_ORDER] -"Renesas SH C/C++ Library Generator" 1 -"Renesas SH C/C++ Compiler" 1 -"Renesas SH Assembler" 1 -"Renesas OptLinker" 1 -[BUILD_PHASE_DETAILS] -"Renesas OptLinker" "Object file|Library file|Relocatable file" 0 -"Renesas SH Assembler" "Assembly source file|Linkage symbol file" 1 -"Renesas SH C/C++ Compiler" "C source file|C++ source file" 1 -"Renesas SH C/C++ Library Generator" "" 0 -[BUILD_FILE_ORDER_Assembly source file] -"Renesas SH Assembler" 1 -[BUILD_FILE_ORDER_C source file] -"Renesas SH C/C++ Compiler" 1 -[BUILD_FILE_ORDER_C++ source file] -"Renesas SH C/C++ Compiler" 1 -[BUILD_FILE_ORDER_Linkage symbol file] -"Renesas SH Assembler" 1 -[SCRAP] -"Project Generator Setup File" "$(PROJDIR)\RTOSDemo.pgs" -[MAPPINGS] -"Assembly source file" "Renesas SH Assembler" "Renesas SH C/C++ Compiler" -"Library file" "Renesas OptLinker" "Renesas SH C/C++ Library Generator" -"Object file" "Renesas OptLinker" "Renesas SH Assembler" -"Object file" "Renesas OptLinker" "Renesas SH C/C++ Compiler" -[PROJECT_FILES] -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\BlockQ.c" "User" "C source file|Standard Demo Tasks" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\GenQTest.c" "User" "C source file|Standard Demo Tasks" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\PollQ.c" "User" "C source file|Standard Demo Tasks" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\QPeek.c" "User" "C source file|Standard Demo Tasks" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\blocktim.c" "User" "C source file|Standard Demo Tasks" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\death.c" "User" "C source file|Standard Demo Tasks" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\flash.c" "User" "C source file|Standard Demo Tasks" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\integer.c" "User" "C source file|Standard Demo Tasks" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\recmutex.c" "User" "C source file|Standard Demo Tasks" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\semtest.c" "User" "C source file|Standard Demo Tasks" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\apps\httpd\http-strings.c" "User" "C source file|FreeTCPIP" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd-fs.c" "User" "C source file|FreeTCPIP" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd.c" "User" "C source file|FreeTCPIP" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\psock.c" "User" "C source file|FreeTCPIP" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\timer.c" "User" "C source file|FreeTCPIP" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\uip.c" "User" "C source file|FreeTCPIP" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\uip_arp.c" "User" "C source file|FreeTCPIP" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\ParTest\ParTest.c" "User" "C source file" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\RenesasCode\hwEthernetPhyRTL8201.c" "User" "C source file|RenesasCode" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\dbsct.c" "User" "C source file" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\flop.c" "User" "C source file|Standard Demo Tasks" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\intprg.c" "User" "C source file" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\main.c" "User" "C source file" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\printf-stdarg.c" "User" "C source file" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\regtest.src" "User" "Assembly source file" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\resetprg.c" "User" "C source file" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\uIP_Task.c" "User" "C source file" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\vecttbl.c" "User" "C source file" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\webserver\EMAC.c" "User" "C source file" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\webserver\EMAC_ISR.src" "User" "Assembly source file" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\webserver\httpd-cgi.c" "User" "C source file|FreeTCPIP" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\list.c" "User" "C source file|FreeRTOS" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\MemMang\heap_2.c" "User" "C source file|FreeRTOS" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\Renesas\SH2A_FPU\port.c" "User" "C source file|FreeRTOS" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\Renesas\SH2A_FPU\portasm.src" "User" "C source file|FreeRTOS" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\queue.c" "User" "C source file|FreeRTOS" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\tasks.c" "User" "C source file|FreeRTOS" 2 -[FOLDER] -"Assembly source file" "Assembly source file" -"C header file" "C header file" -"C source file" "C source file" -"C source file|FreeRTOS" "" -"C source file|FreeTCPIP" "" -"C source file|RenesasCode" "" -"C source file|Standard Demo Tasks" "" -[GENERAL_DATA_PROJECT] -"USE_CUSTOM_LINKAGE_ORDER" "0" -[ON_DEMAND_COMPONENTS_LOADED] -[SYNC_SESSION_NAMES] -[SESSIONS] -"SessionSH7216_E10A-USB_SYSTEM__SH" "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\SessionSH7216_E10A-USB_SYSTEM__SH.hsf" 0 -[GENERAL_DATA_SESSION_SessionSH7216_E10A-USB_SYSTEM__SH] -[OPTIONS_Debug_SH7216_E10A-USB_SYSTEM__SH_Renesas OptLinker] -"Single Shot" "02ce8974bdcaac10" 5 -[OPTIONS_Debug_SH7216_E10A-USB_SYSTEM__SH_Renesas SH Assembler] -"Assembly source file" "099e0cfb35eaac10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\regtest.src" "099e0cfb35eaac10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\webserver\EMAC_ISR.src" "099e0cfb35eaac10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\Renesas\SH2A_FPU\portasm.src" "099e0cfb35eaac10" 3 -"Linkage symbol file" "05db08d6f178ac10" 4 -[OPTIONS_Debug_SH7216_E10A-USB_SYSTEM__SH_Renesas SH C/C++ Compiler] -"C source file" "0e01c1b7cefaac10" 2 -"C++ source file" "0e01c1b7cefaac10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\BlockQ.c" "0e01c1b7cefaac10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\GenQTest.c" "0e01c1b7cefaac10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\PollQ.c" "0e01c1b7cefaac10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\QPeek.c" "0e01c1b7cefaac10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\blocktim.c" "0e01c1b7cefaac10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\death.c" "0e01c1b7cefaac10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\flash.c" "0e01c1b7cefaac10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\integer.c" "0e01c1b7cefaac10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\recmutex.c" "0e01c1b7cefaac10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\semtest.c" "0e01c1b7cefaac10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\apps\httpd\http-strings.c" "0e01c1b7cefaac10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd-fs.c" "0e01c1b7cefaac10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd.c" "0e01c1b7cefaac10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\psock.c" "0e01c1b7cefaac10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\timer.c" "0e01c1b7cefaac10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\uip.c" "0e01c1b7cefaac10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\uip_arp.c" "0e01c1b7cefaac10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\ParTest\ParTest.c" "0e01c1b7cefaac10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\RenesasCode\hwEthernetPhyRTL8201.c" "0e01c1b7cefaac10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\dbsct.c" "0e01c1b7cefaac10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\flop.c" "0e01c1b7cefaac10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\intprg.c" "0e01c1b7cefaac10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\main.c" "0e01c1b7cefaac10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\printf-stdarg.c" "0e01c1b7cefaac10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\resetprg.c" "0e01c1b7cefaac10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\uIP_Task.c" "0e01c1b7cefaac10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\vecttbl.c" "0e01c1b7cefaac10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\webserver\EMAC.c" "0e01c1b7cefaac10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\webserver\httpd-cgi.c" "0e01c1b7cefaac10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\list.c" "0e01c1b7cefaac10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\MemMang\heap_2.c" "0e01c1b7cefaac10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\Renesas\SH2A_FPU\port.c" "0e01c1b7cefaac10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\queue.c" "0e01c1b7cefaac10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\tasks.c" "0e01c1b7cefaac10" 2 -[OPTIONS_Debug_SH7216_E10A-USB_SYSTEM__SH_Renesas SH C/C++ Library Generator] -"Single Shot" "0a60f44dc2baac10" 1 -[OPTIONS_Debug_SH7216_E10A-USB_SYSTEM__SH] -"" 0 -"[V|VERSION|1] [B|DEBUG|1] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(FILELEAF).obj^"] [S|LITERAL|POOL|BRANCH|JUMP|RETURN] [S|DISPSIZE|12] [I|TAB|8] [B|ERRORPATH|1] [B|CHGINCPATH|1] [S|CPU|SH2AFPU] [S|ENDIAN|BIG] [S|ROUND|NEAREST] [B|DENORMALIZE|0] [B|SKIPDEPENDENCY|1] -" 4 -"[V|VERSION|1] [S|INCLUDE|^"$(PROJDIR)\..\..\..\Source\portable\Renesas\SH2A_FPU^"] [B|DEBUG|1] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(FILELEAF).obj^"] [S|LITERAL|POOL|BRANCH|JUMP|RETURN] [S|DISPSIZE|12] [I|TAB|8] [B|ERRORPATH|1] [B|CHGINCPATH|1] [S|CPU|SH2AFPU] [S|ENDIAN|BIG] [S|ROUND|NEAREST] [B|DENORMALIZE|0] [B|SKIPDEPENDENCY|1] -" 3 -"[V|VERSION|6] [S|FORM|STYPE] [S|BYTE_COUNT_VALUE|FF] [B|DEBUG|1] [S|ROM|(D,R)] [S|CRC|NONE|00000000] [B|LIST|1] [S|LIST|^"$(CONFIGDIR)\$(PROJECTNAME).map^"] [S|SHOW|METHODCUSTOM|] [S|OUTPUT|^"$(CONFIGDIR)\$(PROJECTNAME).mot^"] [I|SPACE|^"FF^"] [B|OPTIMIZE|0] [I|CACHESIZE|000000008] [I|CACHELINE|000000020] [S|START|DVECTTBL,DINTTBL(00)|PResetPRG,PIntPRG(0800)|P,C,C$BSEC,C$DSEC,D(01000)|B,R(0FFF80000)|BTX_DESCR(0FFF91100)|BRX_DESCR(0FFF91200)|B_ETHERNET_BUFFERS(0FFF93100)|S(0FFF9FC00)] [B|SKIPDEPENDENCY|1] -" 5 -"[V|VERSION|7] [S|INCLUDE|^"$(PROJDIR)\..\..\..\Source\portable\Renesas\SH2A_FPU^"|^"$(PROJDIR)\..\..\..\Source\include^"|^"$(PROJDIR)\.^"|^"$(PROJDIR)\..\..\Common\include^"|^"$(PROJDIR)\..\..\Common\ethernet\FreeTCPIP^"|^"$(PROJDIR)\webserver^"|^"$(PROJDIR)\RenesasCode^"] [S|DEFINE|PACK_STRUCT_END=UNPACK] [S|NOMESSAGE|5|6|8] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(FILELEAF).obj^"] [B|DEBUG|1] [S|ALIGN4|ALL] [S|ASSEMBLY|^"[V|VERSION|1]] [S|OUTPUTPATH|^"^"$(CONFIGDIR)\$(FILELEAF).obj^"^"]] [S|LITERAL|POOL|BRANCH|JUMP|RETURN]] [S|DISPSIZE|12]] [I|TAB|8]] [B|CHGINCPATH|1]] [S|CPU|SH2AFPU]] [S|ENDIAN|BIG]] [S|ROUND|NEAREST]] [B|DENORMALIZE|0]]^"] [B|TBR|0] [B|STUFF|0] [S|BSS_ORDER|DECLARATION] [S|MXGEN_MEM0|00000000] [S|MXGEN_MEM1|00000000] [B|LIST|0] [S|GBR|AUTO] [S|INLINE|DEFAULT] [I|INLINE|20] [S|MISRA2004_CHECK_RULE|ALL] [S|MISRA2004_RULE|1.1|3.4|4.1|5.2|5.3|5.4|5.5|5.6|5.7|6.1|6.2|6.3|6.4|6.5|7.1|8.1|8.2|8.3|8.5|8.6|8.7|8.8|8.11|8.12|9.2|9.3|10.1|10.2|10.3|10.4|10.5|10.6|11.1|11.2|11.3|11.4|11.5|12.1|12.2|12.3|12.4|12.5|12.6|12.7|12.8|12.9|12.10|12.11|12.12|12.13|13.1|13.2|13.3|13.4|13.7|14.1|14.2|14.3|14.4|14.5|14.6|14.7|14.8|14.9|14.10|15.1|15.2|15.3|15.4|15.5|16.1|16.2|16.3|16.4|16.5|16.6|16.8|16.9|17.3|17.4|17.5|17.6|18.1|18.2|18.4|19.1|20.2|20.4|20.5|20.7|20.8|20.9|20.10|20.11|20.12] [S|MISRA1998_CHECK_RULE|ALL] [S|MISRA1998_RULE|1|5|8|12|13|14|17|18|19|20|21|22|24|28|29|31|32|33|34|35|36|37|38|39|40|42|43|44|45|46|48|49|50|51|53|54|55|56|57|58|59|60|61|62|63|64|65|68|69|70|71|72|73|74|75|76|77|78|79|80|82|83|84|85|99|101|102|103|104|105|106|108|110|111|112|113|115|118|119|121|122|123|124|125|126|127] [S|MISRA_GROUP_FILE_PATH|^"$(PROJDIR)\$(PROJECTNAME).rde^"] [S|OPT_RANGE|ALL] [I|MAX_UNROLL|1] [S|FPSCR|SAFE] [S|CPU|SH2AFPU] [S|ROUND|NEAREST] [B|CHGINCPATH|1] [B|SKIPDEPENDENCY|1] [N|DEPENDSCAN|1] -" 2 -"[V|VERSION|7] [S|MODE|BUILD/CHANGED] [S|EXISTOUTPUTPATH|^"$(CONFIGDIR)\$(PROJECTNAME).lib^"] [B|RUNTIME|1] [B|STDARG|1] [B|STDLIB|1] [B|STRING|1] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(PROJECTNAME).lib^"] [B|REENT|1] [S|ALIGN4|ALL] [B|STUFF|0] [S|BSS_ORDER|DECLARATION] [S|GBR|AUTO] [S|INLINE|DEFAULT] [I|INLINE|20] [S|OPT_RANGE|ALL] [I|MAX_UNROLL|1] [B|SAVE_CONT_REG|1] [S|CPU|SH2AFPU] [S|ROUND|NEAREST] [B|SKIPDEPENDENCY|1] -" 1 -[EXCLUDED_FILES_Debug_SH7216_E10A-USB_SYSTEM__SH] -[LINKAGE_ORDER_Debug_SH7216_E10A-USB_SYSTEM__SH] -[GENERAL_DATA_CONFIGURATION_Debug_SH7216_E10A-USB_SYSTEM__SH] -[GENERAL_DATA_CONFIGURATION_SESSION_Debug_SH7216_E10A-USB_SYSTEM__SH_SessionSH7216_E10A-USB_SYSTEM__SH] -[SESSION_DATA_CONFIGURATION_SESSION_Debug_SH7216_E10A-USB_SYSTEM__SH_SessionSH7216_E10A-USB_SYSTEM__SH] -"MEMORY_MAPPING_OPTIONS" "Unknown Options" -[EXT_DEBUGGER_INFO] -0 "" "" "" "" -[END] diff --git a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/RTOSDemo.nav b/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/RTOSDemo.nav deleted file mode 100644 index 802271886..000000000 Binary files a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/RTOSDemo.nav and /dev/null differ diff --git a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/RTOSDemo.pgs b/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/RTOSDemo.pgs deleted file mode 100644 index 5aa07f7ab..000000000 --- a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/RTOSDemo.pgs +++ /dev/null @@ -1,35 +0,0 @@ -; Project Generator Setup Infomation - -[PGS Version] -Version=1.0 - -[Toolchain] -Toolchain=Renesas SuperH Standard -Toolchain Name=Renesas SuperH RISC engine Standard Toolchain -Toolchain Version=9.3.2.0 - -[CPU] -CPU Family=SuperH RISC engine -CPU Series=SH2A-FPU -CPU Type=Other -Operating Mode=Not Support -Address Space=Not Support -Multiple=Not Support -Divide=Not Support - -[Project] -Project Name=RTOSDemo -Project Type=Application - -[Stack Settings] -Stack Pointer Address=H'FFFC0000 -Stack Size=H'400 -Stack Section Name=S -Stack Section Address= -Source File Name=stacksct.h -Description=#pragma stacksize 0x400 /* Do not modify this line. */ -Default Stack Pointer Address=H'FFFC0000 -Default Stack Size=H'400 - -[Initial Settings] -Simulator I/O=disable diff --git a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/RTOSDemo.tps b/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/RTOSDemo.tps deleted file mode 100644 index 804f6fa50..000000000 --- a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/RTOSDemo.tps +++ /dev/null @@ -1,20 +0,0 @@ -[HIMDBVersion] -2.0 -[DATABASE_VERSION] -"1.1" -[SESSIONS_] -"SessionSH7216_E10A-USB_SYSTEM__SH" -[CONFIGURATIONS] -"Debug_SH7216_E10A-USB_SYSTEM__SH" -[CURRENT_CONFIGURATION] -"Debug_SH7216_E10A-USB_SYSTEM__SH" -[CURRENT_SESSION] -"SessionSH7216_E10A-USB_SYSTEM__SH" -[GENERAL_DATA_PROJECT] -[GENERAL_DATA_CONFIGURATION_Debug_SH7216_E10A-USB_SYSTEM__SH] -"PROJECT_FILES_MODIFIED_DATA_TAG" "FALSE" -[SESSIONS_Debug_SH7216_E10A-USB_SYSTEM__SH] -"SessionSH7216_E10A-USB_SYSTEM__SH" -[GENERAL_DATA_SESSION_SessionSH7216_E10A-USB_SYSTEM__SH] -[GENERAL_DATA_CONFIGURATION_SESSION_Debug_SH7216_E10A-USB_SYSTEM__SH_SessionSH7216_E10A-USB_SYSTEM__SH] -[END] diff --git a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/RenesasCode/compiler.h b/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/RenesasCode/compiler.h deleted file mode 100644 index 99ea877b9..000000000 --- a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/RenesasCode/compiler.h +++ /dev/null @@ -1,94 +0,0 @@ -/****************************************************************************** -* File Name : compiler.h -* Version : 1.0 -* Device(s) : Renesas -* Tool-Chain : Renesas SH2A V9+ -* OS : None -* H/W Platform : SH2A -* Description : Compiler specific defines for abstraction -******************************************************************************* -* History : DD.MM.YYYY Ver. Description -* : 01.08.2009 1.00 MAB First Release -******************************************************************************/ - -/****************************************************************************** -* DISCLAIMER -* This software is supplied by Renesas Technology Corp. and is only -* intended for use with Renesas products. No other uses are authorized. -* This software is owned by Renesas Technology Corp. and is protected under -* all applicable laws, including copyright laws. -* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES -* REGARDING THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, -* INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A -* PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY -* DISCLAIMED. -* TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS -* TECHNOLOGY CORP. NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE -* FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES -* FOR ANY REASON RELATED TO THE THIS SOFTWARE, EVEN IF RENESAS OR ITS -* AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. -* Renesas reserves the right, without notice, to make changes to this -* software and to discontinue the availability of this software. -* By using this software, you agree to the additional terms and -* conditions found by accessing the following link: -* http://www.renesas.com/disclaimer -******************************************************************************/ -/* Copyright (C) 2008. Renesas Technology Corp., All Rights Reserved. */ -/* Copyright (C) 2009. Renesas Technology Europe Ltd., All Rights Reserved. */ -/*****************************************************************************/ - -#ifndef COMPILER_H_INCLUDED -#define COMPILER_H_INCLUDED - -/****************************************************************************** -Defines -******************************************************************************/ - -/* Embedded CPU data type definitions */ - -/* Set a few #defines for potential compilers used */ -#define MCS 0 /* Hitachi */ -#define GNU 1 /* Hitachi + many other devices */ -#define IAR 2 /* Hitachi + some other devices */ -#define MSV 3 /* Microsoft Visual C */ - -/* Test the compiler intrinisic defs */ -#ifdef __GNUC__ /* GNU compiler - C mode */ -#define COMPILER GNU - -#elif defined(__GNUG__) /* GNU compiler - C++ mode */ -#define COMPILER GNU - -#elif defined __IAR_SYSTEMS_ICC /* IAR compiler */ -#define COMPILER IAR - -#elif defined _MSC_VER /* Microsoft c compiler */ -#define COMPILER MSV -#else - -#define COMPILER MCS /* MCS compiler */ - /* MCS compiler has MSB first even in little - endian mode unless #pragma or command - line switch used to change it */ -#define _BITFIELDS_MSB_FIRST_ -#endif - -/****************************************************************************** -Pragma macros -******************************************************************************/ - /* Visual Cpp */ -#if COMPILER == MSV -#define PACK1 pack(1) -#define UNPACK pack() -#else - /* MCS SH & H8S series recently got unified - pragma syntax */ -#define PACK1 # ## pragma pack 1 -#define UNPACK # ## pragma unpack -#endif - -#endif /* COMPILER_H_INCLUDED */ - -/****************************************************************************** -End Of File -******************************************************************************/ diff --git a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/RenesasCode/hwEthernet.h b/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/RenesasCode/hwEthernet.h deleted file mode 100644 index 11075f83b..000000000 --- a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/RenesasCode/hwEthernet.h +++ /dev/null @@ -1,152 +0,0 @@ -/****************************************************************************** -* DISCLAIMER -* Please refer to http://www.renesas.com/disclaimer -****************************************************************************** - Copyright (C) 2008. Renesas Technology Corp., All Rights Reserved. -******************************************************************************* -* File Name : hwEthernet.h -* Version : 1.00 -* Description : Ethernet module device driver -****************************************************************************** -* History : DD.MM.YYYY Version Description -* : 06.10.2009 1.00 First Release -******************************************************************************/ - -#ifndef HWETHERNET_H_INCLUDED -#define HWETHERNET_H_INCLUDED - -/****************************************************************************** -Includes , "Project Includes" -******************************************************************************/ - -#include "typedefine.h" - -/****************************************************************************** -Typedef definitions -******************************************************************************/ -typedef struct Discript -{ - uint32_t status; - ushort16_t bufsize; - ushort16_t size; - char8_t *buf_p; - struct Discript *next; -} ethfifo; - -/****************************************************************************** -Macro definitions -******************************************************************************/ -#define BUFSIZE 256 -#define ENTRY 8 - -#define ACT 0x80000000 -#define DL 0x40000000 -#define FP1 0x20000000 -#define FP0 0x10000000 -#define FE 0x08000000 - -#define RFOVER 0x00000200 -#define RMAF 0x00000080 -#define RRF 0x00000010 -#define RTLF 0x00000008 -#define RTSF 0x00000004 -#define PRE 0x00000002 -#define CERF 0x00000001 - -#define ITF 0x00000010 -#define CND 0x00000008 -#define DLC 0x00000004 -#define CD 0x00000002 -#define TRO 0x00000001 - -/** - * Renesas Ethernet API return defines - **/ -#define R_ETHER_OK 0 -#define R_ETHER_ERROR -1 - - -/****************************************************************************** -Variable Externs -******************************************************************************/ - -/****************************************************************************** -Functions Prototypes -******************************************************************************/ -/** - * Renesas Ethernet API prototypes - **/ - -#ifdef __cplusplus -extern "C" { -#endif - -extern int32_t R_Ether_Open(uint32_t ch, uint8_t mac_addr[]); -extern int32_t R_Ether_Close(uint32_t ch); -extern int32_t R_Ether_Write(uint32_t ch, void *buf, uint32_t len); -extern int32_t R_Ether_Read(uint32_t ch, void *buf); - -/* Added for the FreeRTOS demo project. */ -unsigned long ulEMACRead( void ); -void vEMACWrite( void ); -void vInitEmac( void ); -long lEMACWaitForLink( void ); - -/* Extension of the API functions added to allow PnP link */ - -/* R_Ether_OpenEx opens irrispective of link status */ -extern int32_t R_Ether_OpenEx(uint32_t ch, uint8_t mac_addr[]); -/* Enables/disables operation for the current link */ -extern int32_t R_Ether_EnableEx(uint32_t ch, int iEnable); - -#ifdef __cplusplus -} -#endif - -/****************************************************/ -/* Ethernet statistic collection data */ -struct enet_stats -{ - uint32_t rx_packets; /* total packets received */ - uint32_t tx_packets; /* total packets transmitted */ - uint32_t rx_errors; /* bad packets received */ - uint32_t tx_errors; /* packet transmit problems */ - uint32_t rx_dropped; /* no space in buffers */ - uint32_t tx_dropped; /* no space available */ - uint32_t multicast; /* multicast packets received */ - uint32_t collisions; - - /* detailed rx_errors: */ - uint32_t rx_length_errors; - uint32_t rx_over_errors; /* receiver ring buffer overflow */ - uint32_t rx_crc_errors; /* recved pkt with crc error */ - uint32_t rx_frame_errors; /* recv'd frame alignment error */ - uint32_t rx_fifo_errors; /* recv'r fifo overrun */ - uint32_t rx_missed_errors; /* receiver missed packet */ - - /* detailed tx_errors */ - uint32_t tx_aborted_errors; - uint32_t tx_carrier_errors; - uint32_t tx_fifo_errors; - uint32_t tx_heartbeat_errors; - uint32_t tx_window_errors; -}; - -struct ei_device -{ - const char8_t *name; - uchar8_t open; - uchar8_t Tx_act; - uchar8_t Rx_act; - uchar8_t txing; /* Transmit Active */ - uchar8_t irqlock; /* EDMAC's interrupt disabled when '1'. */ - uchar8_t dmaing; /* EDMAC Active */ - ethfifo *rxcurrent; /* current receive discriptor */ - ethfifo *txcurrent; /* current transmit discriptor */ - uchar8_t save_irq; /* Original dev->irq value. */ - struct enet_stats stat; - uchar8_t mac_addr[6]; -}; - -#endif /* HWETHERNET_H_INCLUDED */ - diff --git a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/RenesasCode/hwEthernetPhy.h b/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/RenesasCode/hwEthernetPhy.h deleted file mode 100644 index d3255ee36..000000000 --- a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/RenesasCode/hwEthernetPhy.h +++ /dev/null @@ -1,91 +0,0 @@ -/****************************************************************************** -* File Name : hwEthernetPhy.h -* Version : 1.0 -* Device(s) : Renesas -* Tool-Chain : Renesas SH2A V9+ -* OS : None -* H/W Platform : SH2A -* Description : Hardware driver for the LAN8700 PHY -******************************************************************************* -* History : DD.MM.YYYY Ver. Description -* : 01.08.2009 1.00 MAB First Release -******************************************************************************/ - -/****************************************************************************** -* DISCLAIMER -* This software is supplied by Renesas Technology Corp. and is only -* intended for use with Renesas products. No other uses are authorized. -* This software is owned by Renesas Technology Corp. and is protected under -* all applicable laws, including copyright laws. -* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES -* REGARDING THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, -* INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A -* PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY -* DISCLAIMED. -* TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS -* TECHNOLOGY CORP. NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE -* FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES -* FOR ANY REASON RELATED TO THE THIS SOFTWARE, EVEN IF RENESAS OR ITS -* AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. -* Renesas reserves the right, without notice, to make changes to this -* software and to discontinue the availability of this software. -* By using this software, you agree to the additional terms and -* conditions found by accessing the following link: -* http://www.renesas.com/disclaimer -******************************************************************************/ -/* Copyright (C) 2008. Renesas Technology Corp., All Rights Reserved. */ -/* Copyright (C) 2009. Renesas Technology Europe Ltd., All Rights Reserved. */ -/*****************************************************************************/ - -#ifndef HWETHERNETPHY_H_INCLUDED -#define HWETHERNETPHY_H_INCLUDED - -/***************************************************************************** -Enumerated Types -******************************************************************************/ - -typedef enum _NETLNK -{ - PHY_NO_LINK = 0, - PHY_LINK_10H, - PHY_LINK_10F, - PHY_LINK_100H, - PHY_LINK_100F - -} NETLNK; - -/***************************************************************************** -Public Functions -******************************************************************************/ - -#ifdef __cplusplus -extern "C" { -#endif - -/***************************************************************************** -Function Name: phyReset -Description: Executes software reset of PHY and sets to auto negotiate link -Parameters: None -Return value: 0 for success -1 on error -******************************************************************************/ - -extern int phyReset(void); - -/***************************************************************************** -Function Name: phyStatus -Description: Function to reurn the type of physical link -Parameters: none -Return value: The link type -*****************************************************************************/ - -extern NETLNK phyStatus(void); - -#ifdef __cplusplus -} -#endif - -#endif /* HWETHERNETPHY_H_INCLUDED */ - -/***************************************************************************** -End Of File -******************************************************************************/ \ No newline at end of file diff --git a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/RenesasCode/hwEthernetPhyRTL8201.c b/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/RenesasCode/hwEthernetPhyRTL8201.c deleted file mode 100644 index f9d198699..000000000 --- a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/RenesasCode/hwEthernetPhyRTL8201.c +++ /dev/null @@ -1,435 +0,0 @@ -/****************************************************************************** -* File Name : hwEthernetPhy.c -* Version : 1.0 -* Device(s) : Renesas -* Tool-Chain : Renesas SH2A V9+ -* OS : None -* H/W Platform : SH2A -* Description : Hardware driver for the LAN8700 PHY -******************************************************************************* -* History : DD.MM.YYYY Ver. Description -* : 01.08.2009 1.00 MAB First Release -******************************************************************************/ - -/****************************************************************************** -* DISCLAIMER -* This software is supplied by Renesas Technology Corp. and is only -* intended for use with Renesas products. No other uses are authorized. -* This software is owned by Renesas Technology Corp. and is protected under -* all applicable laws, including copyright laws. -* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES -* REGARDING THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, -* INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A -* PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY -* DISCLAIMED. -* TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS -* TECHNOLOGY CORP. NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE -* FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES -* FOR ANY REASON RELATED TO THE THIS SOFTWARE, EVEN IF RENESAS OR ITS -* AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. -* Renesas reserves the right, without notice, to make changes to this -* software and to discontinue the availability of this software. -* By using this software, you agree to the additional terms and -* conditions found by accessing the following link: -* http://www.renesas.com/disclaimer -******************************************************************************/ -/* Copyright (C) 2008. Renesas Technology Corp., All Rights Reserved. */ -/* Copyright (C) 2009. Renesas Technology Europe Ltd., All Rights Reserved. */ -/*****************************************************************************/ - -/***************************************************************************** -System Includes -******************************************************************************/ - -#include -/* Header file for sleep() and nop() functions */ -#include - -/***************************************************************************** -User Includes -******************************************************************************/ - -/* Defines for I/O registers */ -#include "iodefine.h" -/* rsk7216def.h provides common defines for widely used items. */ -#include "rsk7216def.h" -/* Physical layer functions */ -#include "hwEthernetPhy.h" -#include "Trace.h" - -#include "FreeRTOS.h" -#include "task.h" - -/***************************************************************************** -Constant Macros -******************************************************************************/ - -/* Preamble */ -#define PHY_ST 0x0001 -/* Operation to be executed on PHY registers */ -#define PHY_READ 0x0002 -#define PHY_WRITE 0x0001 -/* Physical address of PHY device */ -#define PHY_ADDR 0x001F - -/* Description of PHY data registers */ -#define PHY_BASIC_MODE_CONTROL 0x0000 -#define PHY_BASIC_MODE_STATUS 0x0001 -#define PHY_IDENTIFIER1 0x0002 -#define PHY_IDENTIFIER2 0x0003 -#define PHY_AN_ADVERTISEMENT 0x0004 -#define PHY_AN_LINK_PARTNER_ABILITY 0x0005 - -/* Definitions of some configuration bits */ -#define PHY_RESET 0x8000 -#define PHY_AN_ENABLE 0x1200 -/* Bits for auto negotiation for 100, 10 half and full duplex set */ -#define PHY_AN_10_100_F_H 0xDE1 -/* Link partner ability register bits for establising the result of the - auto negotiation */ -#define PHY_AN_100F BIT_8 -#define PHY_AN_100H BIT_7 -#define PHY_AN_10F BIT_6 -#define PHY_AN_10H BIT_5 - -/***************************************************************************** -Function Prototypes -******************************************************************************/ - -static USHORT phyReadReg(USHORT usRegAddr); -static void phyWriteReg(USHORT usRegAddr, USHORT usData); -static void phyPreamble(void); -static void phyMiiWrite1(void); -static void phyMiiWrite0(void); -static void phyRegSet(USHORT usRegAddr, long lOption); -static void phyRegRead(PUSHORT pusData); -static void phyRegWrite(USHORT usData); -static void phyTaZ0(void); -static void phyTa10(void); -static void phyDelay(void); - -/***************************************************************************** -Public Functions -******************************************************************************/ - -/***************************************************************************** -Function Name: phyReset -Description: Executes software reset of PHY and sets to auto negotiate link -Parameters: None -Return value: 0 for success -1 on error -******************************************************************************/ -int phyReset(void) -{ - /* One second of attempting to reset the PHY */ - int iCount = 1000; - /* Set software reset */ - phyWriteReg(PHY_BASIC_MODE_CONTROL, PHY_RESET); - while (iCount--) - { - USHORT usData; - - vTaskDelay( 2 / portTICK_PERIOD_MS ); - - /* Read the status of the PHY */ - usData = phyReadReg(PHY_BASIC_MODE_CONTROL); - /* Wait for the reset flag to be cleared */ - if ((usData & PHY_RESET) == 0) - { - /* Set auto negoatiation for 10,100 full and half duplex */ - phyWriteReg(PHY_AN_ADVERTISEMENT, PHY_AN_10_100_F_H); - /* Set auto negotiate and restart auto negotiate bits */ - phyWriteReg(PHY_BASIC_MODE_CONTROL, PHY_AN_ENABLE); - - /* Auto negotiation will now take place wait for two seconds */ - vTaskDelay( 2000 / portTICK_PERIOD_MS ); - - /* Success */ - return 0; - } - } - /* Phy did not respond to software reset */ - return -1; -} -/***************************************************************************** -End of function phyReset - ******************************************************************************/ - -/***************************************************************************** -Function Name: phyStatus -Description: Function to reurn the type of physical link -Parameters: none -Return value: The link type -*****************************************************************************/ -NETLNK phyStatus(void) -{ - /* The state of this flag depens on the hardware connection to the MAC */ - if (!EtherC.PSR.BIT.LMON) - { - /* Read the auto negotiation link partner ability register to establish - the type of link */ - USHORT usData = phyReadReg(PHY_AN_LINK_PARTNER_ABILITY); - if (usData & PHY_AN_100F) - { - return PHY_LINK_100F; - } - if (usData & PHY_AN_100H) - { - return PHY_LINK_100H; - } - if (usData & PHY_AN_10F) - { - return PHY_LINK_10F; - } - if (usData & PHY_AN_10H) - { - return PHY_LINK_10H; - } - } - return PHY_NO_LINK; -} -/***************************************************************************** -End of function phyStatus -******************************************************************************/ - -/***************************************************************************** -Private Functions -******************************************************************************/ - -/***************************************************************************** -Function Name: phyReadReg -Description: Reads data from a register with the address usRegAddr -Parameters: (USHORT) usRegAddr - address to be read; -Return value: (USHORT) - value from read register; -******************************************************************************/ -static USHORT phyReadReg(USHORT usRegAddr) -{ - USHORT usData; - phyPreamble(); - phyRegSet(usRegAddr, PHY_READ); - phyTaZ0(); - phyRegRead(&usData); - phyTaZ0(); - return usData; -} -/***************************************************************************** -End of function phyReadReg -******************************************************************************/ - -/***************************************************************************** -Function Name: phyWriteReg -Description: Write data to register with the address usRegAddr -Parameters: (USHORT) usRegAddr - address of register where to be written; - (USHORT) usData - value to write; -Return value: None -******************************************************************************/ -static void phyWriteReg(USHORT usRegAddr, USHORT usData) -{ - phyPreamble(); - phyRegSet(usRegAddr, PHY_WRITE); - phyTa10(); - phyRegWrite(usData); - phyTaZ0(); -} -/***************************************************************************** -End of function phyWriteReg -******************************************************************************/ - -/***************************************************************************** -Function Name: phyPreamble -Description: Writing 32 bits of '1' -Parameters: None -Return value: None -******************************************************************************/ -static void phyPreamble(void) -{ - int iCount = 32; - while (iCount--) - { - phyMiiWrite1(); - } -} -/***************************************************************************** -End of function phyPreamble -******************************************************************************/ - -/***************************************************************************** -Function Name: phyRegSet -Description: Sets the address of register -Parameters: (USHORT) usRegAddr - address to be set; - (long) lOption - PHY_READ or PHY_WRITE; -Return value: None -******************************************************************************/ -static void phyRegSet(USHORT usRegAddr, long lOption) -{ - int iBit = 14; - USHORT usData; - - /* Format of PHY Address Set Transmission */ - /* ST R/W PAddress Address */ - /* 1 10 11111 xxxx 00 */ //Read - /* 1 01 11111 xxxx 00 */ //Write - - usData = 0; - /* ST code */ - usData = (PHY_ST << 14); - if (lOption == PHY_READ) - { - /* Option code (RD) */ - usData |= (PHY_READ << 12); - } - else - { - /* Option code (WT) */ - usData |= (PHY_WRITE << 12); - } - /* PHY Address */ - usData |= ((BYTE)PHY_ADDR << 7); - /* Reg Address */ - usData |= (USHORT)(usRegAddr << 2); - - while (iBit--) - { - if ((usData & 0x8000) == 0) - { - phyMiiWrite0(); - } - else - { - phyMiiWrite1(); - } - usData <<= 1; - } -} -/***************************************************************************** -End of function phyRegSet -******************************************************************************/ - -/***************************************************************************** -Function Name: phyRegRead -Description: Read data from register -Parameters: IN pusDest - value to be read; -Return value: None -******************************************************************************/ -static void phyRegRead(PUSHORT pusDest) -{ - USHORT usData = 0; - int iBit = 16; - while (iBit--) - { - EtherC.PIR.LONG = 0x00UL; - EtherC.PIR.LONG = 0x01UL; - usData <<= 1; - - /* MDI read */ - usData |= (USHORT)((EtherC.PIR.LONG & 0x08UL) >> 3); - - EtherC.PIR.LONG = 0x01UL; - EtherC.PIR.LONG = 0x00UL; - } - *pusDest = usData; -} -/***************************************************************************** -End of function phyRegRead -******************************************************************************/ - -/***************************************************************************** -Function Name: phyRegWrite -Description: Write 2 bytes (16 bit) to MII -Parameters: IN usData - value to be written; -Return value: None -******************************************************************************/ -static void phyRegWrite(USHORT usData) -{ - int iBit = 16; - while (iBit--) - { - if ((usData & 0x8000) == 0) - { - phyMiiWrite0(); - } - else - { - phyMiiWrite1(); - } - usData <<= 1; - } -} -/***************************************************************************** -End of function phyRegWrite -******************************************************************************/ - -/***************************************************************************** -Function Name: phyTaZ0 -Description: Set bus to high Z -Parameters: None -Return value: None -******************************************************************************/ -static void phyTaZ0(void) -{ - EtherC.PIR.LONG = 0x00UL; - EtherC.PIR.LONG = 0x01UL; - EtherC.PIR.LONG = 0x01UL; - EtherC.PIR.LONG = 0x00UL; -} -/***************************************************************************** -End of function phyTaZ0 -******************************************************************************/ - -/***************************************************************************** -Function Name: phyTa10 -Description: Set bus to output -Parameters: None -Return value: None -******************************************************************************/ -static void phyTa10(void) -{ - EtherC.PIR.LONG = 0x06UL; - EtherC.PIR.LONG = 0x07UL; - EtherC.PIR.LONG = 0x07UL; - EtherC.PIR.LONG = 0x06UL; - EtherC.PIR.LONG = 0x02UL; - EtherC.PIR.LONG = 0x03UL; - EtherC.PIR.LONG = 0x03UL; - EtherC.PIR.LONG = 0x02UL; -} -/***************************************************************************** -End of function phyTa10 -******************************************************************************/ - -/***************************************************************************** -Function Name: phyMiiWrite1 -Description: Write 1 to MII -Parameters: None -Return value: None -******************************************************************************/ -static void phyMiiWrite1(void) -{ - EtherC.PIR.LONG = 0x06UL; - EtherC.PIR.LONG = 0x07UL; - EtherC.PIR.LONG = 0x07UL; - EtherC.PIR.LONG = 0x06UL; -} -/***************************************************************************** -End of function phyMiiWrite1 -******************************************************************************/ - -/***************************************************************************** -Function Name: phyMiiWrite0 -Description: Write 0 to MII -Parameters: None -Return value: None -******************************************************************************/ -static void phyMiiWrite0(void) -{ - EtherC.PIR.LONG = 0x02UL; - EtherC.PIR.LONG = 0x03UL; - EtherC.PIR.LONG = 0x03UL; - EtherC.PIR.LONG = 0x02UL; -} -/***************************************************************************** -End of function phyMiiWrite0 -******************************************************************************/ - -/***************************************************************************** -End Of File -******************************************************************************/ diff --git a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/RenesasCode/rsk7216def.h b/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/RenesasCode/rsk7216def.h deleted file mode 100644 index e827b288d..000000000 --- a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/RenesasCode/rsk7216def.h +++ /dev/null @@ -1,106 +0,0 @@ -/****************************************************************************** -* File Name : rsk7670def.h -* Version : 1.0 -* Device(s) : SH2A/7670 -* Tool-Chain : Renesas SH2A V9+ -* OS : None -* H/W Platform : RSK+SH7670 -* Description : Defines for RSK2+SH7670 kit. -******************************************************************************* -* History : DD.MM.YYYY Ver. Description -* : 01.08.2009 1.00 MAB First Release -******************************************************************************/ - -/****************************************************************************** -* DISCLAIMER -* This software is supplied by Renesas Technology Corp. and is only -* intended for use with Renesas products. No other uses are authorized. -* This software is owned by Renesas Technology Corp. and is protected under -* all applicable laws, including copyright laws. -* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES -* REGARDING THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, -* INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A -* PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY -* DISCLAIMED. -* TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS -* TECHNOLOGY CORP. NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE -* FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES -* FOR ANY REASON RELATED TO THE THIS SOFTWARE, EVEN IF RENESAS OR ITS -* AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. -* Renesas reserves the right, without notice, to make changes to this -* software and to discontinue the availability of this software. -* By using this software, you agree to the additional terms and -* conditions found by accessing the following link: -* http://www.renesas.com/disclaimer -******************************************************************************/ -/* Copyright (C) 2008. Renesas Technology Corp., All Rights Reserved. */ -/* Copyright (C) 2009. Renesas Technology Europe Ltd., All Rights Reserved. */ -/*****************************************************************************/ - -#ifndef RSK7216DEF_H -#define RSK7216DEF_H - -/****************************************************************************** -Macro Defines -******************************************************************************/ - -/* General Values */ -#define LED_ON (1) -#define LED_OFF (0) -#define SET_BIT_HIGH (1) -#define SET_BIT_LOW (0) -#define SET_BYTE_HIGH (0xFF) -#define SET_BYTE_LOW (0x00) - -/* Define switches to be polled if not available as interrupts */ -#define SW_ACTIVE FALSE - -#define SW1 PORT.PDDRL.BIT.PD16DR //"IRQ0" PD16 -#define SW2 PORT.PADRL.BIT.PA20DR //"IRQ6" PA20 - - -/* LEDs */ -#define LED0 PE.DR.BIT.B9 -#define LED1 PE.DR.BIT.B11 -#define LED2 PE.DR.BIT.B12 -#define LED3 PE.DR.BIT.B13 -#define LED4 PE.DR.BIT.B14 -#define LED5 PE.DR.BIT.B15 - -#define ID_LED1 1 -#define ID_LED2 2 -#define ID_LED3 4 -#define ID_LED4 8 -#define ID_LED5 16 -#define ID_LED6 32 -#define ID_LED_ALL (ID_LED1 | ID_LED2 | ID_LED3 | ID_LED4 | ID_LED5 | ID_LED6) - -#define PERIPHERAL_CLOCK_FREQUENCY 50000000UL - -/****************************************************************************** -Constant Macros -******************************************************************************/ - -#define BOARD_NAME "SH7216 CPU BOARD" - -/****************************************************************************** -Public Functions -******************************************************************************/ - -#ifdef __cplusplus -extern "C" { -#endif - -extern void led_init(void); -extern void led_on(unsigned short ledno); -extern void led_off(unsigned short ledno); - -#ifdef __cplusplus -} -#endif - -#endif /* RSK7216DEF_H */ - -/****************************************************************************** -End Of File -******************************************************************************/ \ No newline at end of file diff --git a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/RenesasCode/trace.h b/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/RenesasCode/trace.h deleted file mode 100644 index 2a2998bc1..000000000 --- a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/RenesasCode/trace.h +++ /dev/null @@ -1,104 +0,0 @@ -/****************************************************************************** -* File Name : trace.h -* Version : 1.0 -* Device(s) : Renesas -* Tool-Chain : Renesas SH2A V9+ -* OS : None -* H/W Platform : SH2A -* Description : Debug formatted output routine -* TRACE print function enabled with define _TRACE_ON_ -******************************************************************************* -* History : DD.MM.YYYY Ver. Description -* : 01.08.2009 1.00 MAB First Release -******************************************************************************/ - -/****************************************************************************** -* DISCLAIMER -* This software is supplied by Renesas Technology Corp. and is only -* intended for use with Renesas products. No other uses are authorized. -* This software is owned by Renesas Technology Corp. and is protected under -* all applicable laws, including copyright laws. -* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES -* REGARDING THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, -* INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A -* PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY -* DISCLAIMED. -* TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS -* TECHNOLOGY CORP. NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE -* FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES -* FOR ANY REASON RELATED TO THE THIS SOFTWARE, EVEN IF RENESAS OR ITS -* AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. -* Renesas reserves the right, without notice, to make changes to this -* software and to discontinue the availability of this software. -* By using this software, you agree to the additional terms and -* conditions found by accessing the following link: -* http://www.renesas.com/disclaimer -******************************************************************************/ -/* Copyright (C) 2008. Renesas Technology Corp., All Rights Reserved. */ -/* Copyright (C) 2009. Renesas Technology Europe Ltd., All Rights Reserved. */ -/*****************************************************************************/ - -#ifndef TRACE_H_INCLUDED -#define TRACE_H_INCLUDED - -/****************************************************************************** -User Includes -******************************************************************************/ - -#include "types.h" - -/****************************************************************************** -Function Macros -******************************************************************************/ - -/* Some function macros for TRACE output - NOTE: debugging TRACE statements require double braces - so the debug strings can be removed from the output load module: - TRACE(("My Variable = %u\r\n", uiMyVariable)); - See ANSI C formatted output for more detail on the format specifiers */ - -#ifdef _TRACE_ON_ /* Trace ON */ -#define TRACE(_x_) Trace _x_ -#else /* _NO_TRACE_ON_ */ -#define TRACE(_x_) /* TRACE REMOVED */ -#endif /* _TRACE_ON_ */ - -/****************************************************************************** -Public Functions -******************************************************************************/ - -#ifdef __cplusplus -extern "C" { -#endif - -/****************************************************************************** -Function Name: Trace -Description: Function to perform a formatted print output for debugging -Parameters: IN pszFormat - Pointer to a null terminated format string - I/O ... - The parameters -Return value: The number of chars output -******************************************************************************/ -#ifdef _TRACE_ON_ /* Trace ON */ -extern int Trace(const char *pszFormat, ...); -#endif - -/****************************************************************************** -Function Name: dbgPrintBuffer -Description: Function to print a data buffer in hex format -Parameters: IN pbyBuffer - Pointer to the buffer - IN stLength - The length of the buffer -Return value: none -******************************************************************************/ -#ifdef _TRACE_ON_ /* Trace ON */ -extern void dbgPrintBuffer(PBYTE pbyBuffer, size_t stLength); -#endif - -#ifdef __cplusplus -} -#endif - -#endif /* TRACE_H_INCLUDED */ - -/****************************************************************************** -End Of File -******************************************************************************/ \ No newline at end of file diff --git a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/RenesasCode/typedefine.h b/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/RenesasCode/typedefine.h deleted file mode 100644 index 836e402b4..000000000 --- a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/RenesasCode/typedefine.h +++ /dev/null @@ -1,56 +0,0 @@ -/****************************************************************************** -* File Name : typedefine.h -* Version : 1.0 -* Device(s) : Renesas -* Tool-Chain : Renesas SH2A V9+ -* OS : None -* H/W Platform : SH2A -* Description : Type Definition File -******************************************************************************* -* History : DD.MM.YYYY Ver. Description -* : 01.08.2009 1.00 MAB First Release -******************************************************************************/ - -/****************************************************************************** -* DISCLAIMER -* This software is supplied by Renesas Technology Corp. and is only -* intended for use with Renesas products. No other uses are authorized. -* This software is owned by Renesas Technology Corp. and is protected under -* all applicable laws, including copyright laws. -* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES -* REGARDING THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, -* INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A -* PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY -* DISCLAIMED. -* TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS -* TECHNOLOGY CORP. NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE -* FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES -* FOR ANY REASON RELATED TO THE THIS SOFTWARE, EVEN IF RENESAS OR ITS -* AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. -* Renesas reserves the right, without notice, to make changes to this -* software and to discontinue the availability of this software. -* By using this software, you agree to the additional terms and -* conditions found by accessing the following link: -* http://www.renesas.com/disclaimer -******************************************************************************/ -/* Copyright (C) 2008. Renesas Technology Corp., All Rights Reserved. */ -/* Copyright (C) 2009. Renesas Technology Europe Ltd., All Rights Reserved. */ -/*****************************************************************************/ - -#ifndef _TYPE_DEFINE_H_ -#define _TYPE_DEFINE_H_ - -#include - -typedef unsigned char Bool; - -// type defs for API standard - -typedef signed char char8_t; -typedef unsigned char uchar8_t; -typedef signed short short16_t; -typedef unsigned short ushort16_t; -typedef signed long long32_t; -typedef unsigned long ulong32_t; - -#endif /* TYPEDEFINE_H */ diff --git a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/RenesasCode/types.h b/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/RenesasCode/types.h deleted file mode 100644 index 0d76ab53a..000000000 --- a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/RenesasCode/types.h +++ /dev/null @@ -1,476 +0,0 @@ -/****************************************************************************** -* File Name : types.h -* Version : 1.0 -* Device(s) : Renesas -* Tool-Chain : Renesas SH2A V9+ -* OS : None -* H/W Platform : SH2A -* Description : User Defined Type Definition File -******************************************************************************* -* History : DD.MM.YYYY Ver. Description -* : 01.08.2009 1.00 MAB First Release -******************************************************************************/ - -/****************************************************************************** -* DISCLAIMER -* This software is supplied by Renesas Technology Corp. and is only -* intended for use with Renesas products. No other uses are authorized. -* This software is owned by Renesas Technology Corp. and is protected under -* all applicable laws, including copyright laws. -* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES -* REGARDING THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, -* INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A -* PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY -* DISCLAIMED. -* TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS -* TECHNOLOGY CORP. NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE -* FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES -* FOR ANY REASON RELATED TO THE THIS SOFTWARE, EVEN IF RENESAS OR ITS -* AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. -* Renesas reserves the right, without notice, to make changes to this -* software and to discontinue the availability of this software. -* By using this software, you agree to the additional terms and -* conditions found by accessing the following link: -* http://www.renesas.com/disclaimer -******************************************************************************/ -/* Copyright (C) 2008. Renesas Technology Corp., All Rights Reserved. */ -/* Copyright (C) 2009. Renesas Technology Europe Ltd., All Rights Reserved. */ -/*****************************************************************************/ - -#ifndef TYPES_H_INCLUDED -#define TYPES_H_INCLUDED - -/****************************************************************************** -User Includes -******************************************************************************/ - -#include "Compiler.h" - -/****************************************************************************** -Function Macros -******************************************************************************/ - -#ifndef SWAPWORD -#define SWAPWORD(x) (WORD)((((x) & 0xFF) << 8) | (((x) >> 8) & 0xFF)) -#endif - -#ifndef LOBYTE -#define LOBYTE(x) (BYTE)(x) -#endif - -#ifndef HIBYTE -#define HIBYTE(x) (BYTE)((x) >> 8) -#endif - -#ifndef MAKEWORD -#define MAKEWORD(a, b) ((WORD) (((BYTE) (a)) |\ - ((WORD) ((BYTE) (b))) << 8)) -#endif - -/****************************************************************************** -Typedefs -******************************************************************************/ - -/* Generic definitions */ -#ifndef NULL /* set null ((void *)0) */ -#define NULL 0 -#endif - -#ifndef PNULL -#define PNULL ((PVOID)0) -#endif - -#ifndef BIT_0 /* set bits */ -#define BIT_0 0x1 -#define BIT_1 0x2 -#define BIT_2 0x4 -#define BIT_3 0x8 -#define BIT_4 0x10 -#define BIT_5 0x20 -#define BIT_6 0x40 -#define BIT_7 0x80 - -#define BIT_8 0x100 -#define BIT_9 0x200 -#define BIT_10 0x400 -#define BIT_11 0x800 -#define BIT_12 0x1000 -#define BIT_13 0x2000 -#define BIT_14 0x4000 -#define BIT_15 0x8000 - -#define BIT_16 0x10000L -#define BIT_17 0x20000L -#define BIT_18 0x40000L -#define BIT_19 0x80000L -#define BIT_20 0x100000L -#define BIT_21 0x200000L -#define BIT_22 0x400000L -#define BIT_23 0x800000L - -#define BIT_24 0x1000000L -#define BIT_25 0x2000000L -#define BIT_26 0x4000000L -#define BIT_27 0x8000000L -#define BIT_28 0x10000000L -#define BIT_29 0x20000000L -#define BIT_30 0x40000000L -#define BIT_31 0x80000000L -#endif - -#ifndef TRUE /* true and false */ -#define TRUE (BOOL)1 -#endif - -#ifndef FALSE -#define FALSE (BOOL)0 -#endif - -#if defined(WIN32_SH4) && defined(__cplusplus) -#define _SIZE_T -#else -#ifndef _SIZE_T -#define _SIZE_T -typedef unsigned long size_t; -#endif -#endif - -#ifndef BOOL -#define BOOL BOOL -typedef unsigned char BOOL; -#endif - -#ifndef PBOOL -#define PBOOL PBOOL -typedef unsigned char *PBOOL; -#endif - -#ifndef TCHAR -#define TCHAR TCHAR -typedef char TCHAR; -#endif - -#ifndef PTCHAR -#define PTCHAR PTCHAR -typedef char *PTCHAR; -#endif - -#ifndef PCTCHAR -#define PCTCHAR PCTCHAR -typedef char *const PCTCHAR; -#endif - -#ifndef CPCTCHAR -#define CPCTCHAR CPCTCHAR -typedef const char *const CPCTCHAR; -#endif - -#ifndef CHAR -#define CHAR CHAR -typedef char CHAR; -#endif - -#ifndef CCHAR -#define CCHAR CCHAR -typedef const char CCHAR; -#endif - -#ifndef PCHAR -#define PCHAR PCHAR -typedef char *PCHAR; -#endif - -#ifndef CPCHAR -#define CPCHAR CPCHAR -typedef const char *CPCHAR; -#endif - -#ifndef PCCHAR -#define PCCHAR PCCHAR -typedef char *const PCCHAR; -#endif - -#ifndef CPCCHAR -#define CPCCHAR CPCCHAR -typedef const char *const CPCCHAR; -#endif - -#ifndef PTSTR -#define PTSTR PTSTR -typedef const char *PTSTR; -#endif - -#ifndef PCTSTR -#define PCTSTR PCTSTR -typedef char *const PCTSTR; -#endif - -#ifndef PCTSTR -#define PCTSTR PCTSTR -typedef const char *PCTSTR; -#endif - -#ifndef PTSTR -#define PTSTR PTSTR -typedef char *PTSTR; -#endif - -#ifndef BYTE -#define BYTE BYTE -typedef unsigned char BYTE; -#endif - -#ifndef PBYTE -#define PBYTE PBYTE -typedef unsigned char *PBYTE; -#endif - -#ifndef PCBYTE -#define PCBYTE PCBYTE -typedef unsigned char *const PCBYTE; -#endif - -#ifndef CPBYTE -#define CPBYTE CPBYTE -typedef const unsigned char *CPBYTE; -#endif - -#ifndef SHORT -#define SHORT SHORT -typedef short SHORT; -#endif - -#ifndef PSHORT -#define PSHORT PSHORT -typedef short *PSHORT; -#endif - -#ifndef PCSHORT -#define PCSHORT PCSHORT -typedef short *const PCSHORT; -#endif - -#ifndef CPSHORT -#define CPSHORT CPSHORT -typedef const short *CPSHORT; -#endif - -#ifndef USHORT -#define USHORT USHORT -typedef unsigned short USHORT; -#endif - -#ifndef PUSHORT -#define PUSHORT PUSHORT -typedef unsigned short *PUSHORT; -#endif - -#ifndef PCUSHORT -#define PCUSHORT PCUSHORT -typedef unsigned short *const PCUSHORT; -#endif - -#ifndef CPUSHORT -#define CPUSHORT CPUSHORT -typedef const unsigned short *CPUSHORT; -#endif - -#ifndef WORD -#define WORD WORD -typedef unsigned short WORD; -#endif - -#ifndef PWORD -#define PWORD PWORD -typedef unsigned short *PWORD; -#endif - -#ifndef PCWORD -#define PCWORD PCWORD -typedef unsigned short *const PCWORD; -#endif - -#ifndef INT -#define INT INT -typedef int INT; -#endif - -#ifndef CINT -#define CINT CINT -typedef const int CINT; -#endif - -#ifndef PINT -#define PINT PINT -typedef int *PINT; -#endif - -#ifndef PCINT -#define PCINT PCINT -typedef int *const PCINT; -#endif - -#ifndef CPINT -#define CPINT CPINT -typedef const int *CPINT; -#endif - -#ifndef UINT -#define UINT UINT -typedef unsigned int UINT; -#endif - -#ifndef PUINT -#define PUINT PUINT -typedef unsigned int *PUINT; -#endif - -#ifndef PCUINT -#define PCUINT PCUINT -typedef unsigned int *const PCUINT; -#endif - -#ifndef CPUINT -#define CPUINT CPUINT -typedef const unsigned int *CPUINT; -#endif - -#ifndef DWORD -#define DWORD DWORD -typedef unsigned long DWORD; -#endif - -#ifndef PDWORD -#define PDWORD PDWORD -typedef unsigned long *PDWORD; -#endif - -#ifndef PCDWORD -#define PCDWORD PCDWORD -typedef unsigned long *const PCDWORD; -#endif - -#ifndef CPDWORD -#define CPDWORD CPDWORD -typedef const unsigned long *CPDWORD; -#endif - -#ifndef LONG -#define LONG LONG -typedef long LONG; -#endif - -#ifndef PLONG -#define PLONG PLONG -typedef long *PLONG; -#endif - -#ifndef PCLONG -#define PCLONG PCLONG -typedef long *const PCLONG; -#endif - -#ifndef CPLONG -#define CPLONG CPLONG -typedef const long *CPLONG; -#endif - -#ifndef ULONG -#define ULONG ULONG -typedef unsigned long ULONG; -#endif - -#ifndef PULONG -#define PULONG PULONG -typedef unsigned long *PULONG; -#endif - -#ifndef PCULONG -#define PCULONG PCULONG -typedef unsigned long *const PCULONG; -#endif - -#ifndef CPULONG -#define CPULONG CPULONG -typedef const unsigned long *CPULONG; -#endif - -#ifndef FLOAT -#define FLOAT FLOAT -typedef float FLOAT; -#endif - -#ifndef DOUBLE -#define DOUBLE DOUBLE -typedef long double DOUBLE; -#endif - -#ifndef PDOUBLE -#define PDOUBLE PDOUBLE -typedef long double *PDOUBLE; -#endif - -#ifndef CPDOUBLE -#define CPDOUBLE CPDOUBLE -typedef const long double *CPDOUBLE; -#endif - -#ifndef PCDOUBLE -#define PCDOUBLE PCDOUBLE -typedef long double *const PCDOUBLE; -#endif - -#ifndef PVOID -#define PVOID PVOID -typedef void *PVOID; -#endif - -#ifndef VOID -#define VOID VOID -typedef void VOID; -#endif - -#ifndef IOID -#define IOID IOID -typedef unsigned short IOID; -#endif - -#ifndef PIOID -#define PIOID PIOID -typedef unsigned short *PIOID; -#endif - -#ifndef BBYTE -#define BBYTE BBYTE -typedef union { - unsigned char BYTE; /*lint -e46 */ - /* this is correct */ - struct { - #ifdef _BITFIELDS_MSB_FIRST_ - unsigned char B7:1; - unsigned char B6:1; - unsigned char B5:1; - unsigned char B4:1; - unsigned char B3:1; - unsigned char B2:1; - unsigned char B1:1; - unsigned char B0:1; - #else - unsigned char B0:1; - unsigned char B1:1; - unsigned char B2:1; - unsigned char B3:1; - unsigned char B4:1; - unsigned char B5:1; - unsigned char B6:1; - unsigned char B7:1; - #endif - } BIT; -} BBYTE; -#endif - -#endif /* TYPES_H_INCLUDED */ - -/****************************************************************************** -End Of File -******************************************************************************/ diff --git a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/SessionSH7216_E10A-USB_SYSTEM__SH.hsf b/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/SessionSH7216_E10A-USB_SYSTEM__SH.hsf deleted file mode 100644 index c9e996a3c..000000000 --- a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/SessionSH7216_E10A-USB_SYSTEM__SH.hsf +++ /dev/null @@ -1,527 +0,0 @@ -[HIMDBVersion] -2.0 -[DATABASE_VERSION] -"2.3" -[SESSION_DETAILS] -"" -[INFORMATION] -"" -[GENERAL_DATA] -"FIRST_CONNECTION_TAG" "NO" -"MRULABELS_DATAMANAGER_KEY" "FFFFFFFF|00000000|FFFE4305|fff80300|fff80688" -"RESET_CPU_AFTER_DOWNLOAD_TAG" "VARIANT_FALSE_STORE_TAG" -"{08009853-4189-4ADA-848F-0F1A84AFE443}MonitorCtrlLabelAddress" "" -"{08009853-4189-4ADA-848F-0F1A84AFE443}MonitorCtrlMonitorLastSaveLogDirectory" "" -"{08009853-4189-4ADA-848F-0F1A84AFE443}MonitorCtrlViews" "0" -"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapCtrlECX_MAP_FIND_SYMBOL_LIST" "" -"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapCtrlViews" "0" -"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapCtrlViewsSCT" "1" -"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapCtrlViewsSYM" "0" -"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapSctListWnd0ColWidth0" "124" -"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapSctListWnd0ColWidth1" "156" -"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapSctListWnd0ColWidth2" "132" -"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapSctListWnd0ColWidth3" "129" -"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapSctListWnd0ColWidth4" "84" -"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapSctSetTreeWnd0Exp0" "1" -"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapSctSetTreeWnd0Exp1" "1" -"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapSctSetTreeWnd0Exp10" "0" -"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapSctSetTreeWnd0Exp11" "1" -"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapSctSetTreeWnd0Exp12" "0" -"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapSctSetTreeWnd0Exp13" "1" -"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapSctSetTreeWnd0Exp14" "0" -"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapSctSetTreeWnd0Exp15" "1" -"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapSctSetTreeWnd0Exp16" "0" -"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapSctSetTreeWnd0Exp17" "1" -"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapSctSetTreeWnd0Exp18" "0" -"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapSctSetTreeWnd0Exp19" "0" -"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapSctSetTreeWnd0Exp2" "0" -"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapSctSetTreeWnd0Exp20" "1" -"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapSctSetTreeWnd0Exp21" "0" -"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapSctSetTreeWnd0Exp3" "1" -"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapSctSetTreeWnd0Exp4" "0" -"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapSctSetTreeWnd0Exp5" "1" -"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapSctSetTreeWnd0Exp6" "0" -"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapSctSetTreeWnd0Exp7" "1" -"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapSctSetTreeWnd0Exp8" "0" -"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapSctSetTreeWnd0Exp9" "1" -"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapSctSetTreeWnd0ScrollHorz" "0" -"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapSctSetTreeWnd0ScrollVert" "0" -"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapSctSetTreeWndInstanceKey0" "{WK_00000001_MAPSCT}RTOSDemoSessionSH7216_E10A-USB_SYSTEM__SH" -"{2BA6A3EE-6488-11D5-80D4-00C04F68EAD7}ECXLABEL_ADDDLG_ADDR" "" -"{2BA6A3EE-6488-11D5-80D4-00C04F68EAD7}LabelCtrlSymbolFileDir" "" -"{2BA6A3EE-6488-11D5-80D4-00C04F68EAD7}LabelCtrlSymbolFileName" "" -"{2BA6A3EE-6488-11D5-80D4-00C04F68EAD7}LabelCtrlViews" "0" -"{2BA6A3EF-6488-11D5-80D4-00C04F68EAD7}StatusCtrlViews" "1" -"{2BA6A3EF-6488-11D5-80D4-00C04F68EAD7}StatusWnd0ColWidth0" "224" -"{2BA6A3EF-6488-11D5-80D4-00C04F68EAD7}StatusWnd0ColWidth1" "152" -"{2BA6A3EF-6488-11D5-80D4-00C04F68EAD7}StatusWnd0ScrollHorz" "0" -"{2BA6A3EF-6488-11D5-80D4-00C04F68EAD7}StatusWnd0ScrollVert" "0" -"{2BA6A3EF-6488-11D5-80D4-00C04F68EAD7}StatusWnd1ColWidth0" "160" -"{2BA6A3EF-6488-11D5-80D4-00C04F68EAD7}StatusWnd1ColWidth1" "512" -"{2BA6A3EF-6488-11D5-80D4-00C04F68EAD7}StatusWnd1ScrollHorz" "0" -"{2BA6A3EF-6488-11D5-80D4-00C04F68EAD7}StatusWnd1ScrollVert" "0" -"{2BA6A3EF-6488-11D5-80D4-00C04F68EAD7}StatusWnd2ColWidth0" "80" -"{2BA6A3EF-6488-11D5-80D4-00C04F68EAD7}StatusWnd2ColWidth1" "360" -"{2BA6A3EF-6488-11D5-80D4-00C04F68EAD7}StatusWnd2ScrollHorz" "0" -"{2BA6A3EF-6488-11D5-80D4-00C04F68EAD7}StatusWnd2ScrollVert" "0" -"{30F726A1-F13D-4E21-9A4F-FD7FF70EDFDA}TraceCtrlSaveFileDir" "" -"{30F726A1-F13D-4E21-9A4F-FD7FF70EDFDA}TraceCtrlSaveFileName" "" -"{30F726A1-F13D-4E21-9A4F-FD7FF70EDFDA}TraceCtrlViews" "0" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlBatchFileName" "" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlBreakpointFlag" "-1 " -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlBreakpointStatus" "-1 " -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlBrowseDirectory" "" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlLogFileName" "" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlSplitterPosition" "242" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlViews" "1" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlWindowProperties" "17" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineWndInstanceKey0" "{WK_00000001_CmdLine}" -"{313F4FC1-6566-11D5-8BBE-0004E2013C71}TclTkCtrlLogFileName" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_COMPARE_END_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_COMPARE_START_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_DISPLAY_DEST_ADDRESS" "FFFE4305" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_DISPLAY_END_ADDRESS" "FFFFFFFF" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_DISPLAY_START_ADDRESS" "00000000" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_FILL_END_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_FILL_START_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_MOVE_END_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_MOVE_START_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_SEARCH_END_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_SEARCH_START_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_SET_DEST_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_TEST_END_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_TEST_START_ADDRESS" "" -"{313F4FC2-6566-11D5-8BBE-0004E2013C71}MemoryCtrlViews" "0" -"{5F75FDA0-6FF0-11D5-B7CE-00E029352378}PACtrlSaveFileDir" "" -"{5F75FDA0-6FF0-11D5-B7CE-00E029352378}PACtrlSaveFileName" "" -"{5F75FDA0-6FF0-11D5-B7CE-00E029352378}PACtrlViews" "0" -"{633553C0-6FE9-11D5-B7CE-00E029352378}ProfileCtrlChartMultiOpen" "0" -"{633553C0-6FE9-11D5-B7CE-00E029352378}ProfileCtrlEnable" "0" -"{633553C0-6FE9-11D5-B7CE-00E029352378}ProfileCtrlSaveListFileDir" "" -"{633553C0-6FE9-11D5-B7CE-00E029352378}ProfileCtrlSaveListFileName" "" -"{633553C0-6FE9-11D5-B7CE-00E029352378}ProfileCtrlSaveTreeFileDir" "" -"{633553C0-6FE9-11D5-B7CE-00E029352378}ProfileCtrlSaveTreeFileName" "" -"{633553C0-6FE9-11D5-B7CE-00E029352378}ProfileCtrlViews" "0" -"{6C4D5B81-FD67-46A9-A089-EA44DCDE47FD}RAMMonitorManagerCtrlBlockInfoFileDir" "" -"{6C4D5B81-FD67-46A9-A089-EA44DCDE47FD}RAMMonitorManagerCtrlBlockInfoFileName" "" -"{7943C44E-7D44-422A-9140-4CF55C88F7D3}DifferenceCtrlViews" "0" -"{855C64C3-E49C-4450-9BCA-C9822566D214}OSObjectCtrlViews" "0" -"{8A898260-6F1D-11D5-8EB6-00004CC34E9D}ECX_WAVE" "00000000,00000000,0,0" -"{8A898260-6F1D-11D5-8EB6-00004CC34E9D}ECX_WAVE_ADDRESS_NAME" "" -"{8A898260-6F1D-11D5-8EB6-00004CC34E9D}ECX_WAVE_COMB_ADDRESS" ",,,," -"{8A898260-6F1D-11D5-8EB6-00004CC34E9D}ECX_WAVE_COMB_BUFFER" ",,,," -"{8A898260-6F1D-11D5-8EB6-00004CC34E9D}ECX_WAVE_SAMPLING_RATE" "1000" -"{8A898260-6F1D-11D5-8EB6-00004CC34E9D}WaveformCtrlViews" "0" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersCtrlViews" "0" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWnd0ColumnWidth" "50,171,144" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWnd0ECX_REGISTER_COUNT" "82" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWnd0ECX_REGISTER_DISPLAYED" "1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWnd0HideFLAGs" "1" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWnd0HideRadix" "0" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWnd0LastFileName" "" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWnd0RadixList" "16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,2,16,16,16,16,16,16,16,2,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16," -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndInstanceKey0" "{WK_00000001_REGISTERS}RTOSDemoSessionSH7216_E10A-USB_SYSTEM__SH" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndViewB0ColumnWidth" "50,456,35" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndViewB0ECX_REGISTER_COUNT" "82" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndViewB0ECX_REGISTER_DISPLAYED" "1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndViewB0HideFLAGs" "1" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndViewB0HideRadix" "0" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndViewB0LastFileName" "" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndViewB0RadixList" "16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,2,16,16,16,16,16,16,16,2,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16," -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWndViewBInstanceKey0" "{WK_00000001_REGISTERS}RTOSDemoSessionSH7216_E10A-USB_SYSTEM__SHViewB" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_ADDRESS_NAME" "" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_BUFFER" "00000000,00000000,0,0" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_COLOR" "0,0,0,0" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_COMB_ADDRESS" ",,,," -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_COMB_PALETTE" ",,,," -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_PALETTE_NAME" "" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_REDRAW_CONTINUOUSLY" "0,2" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_SAMPLEING_RATE" "1000" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_VIEW" "0,0,0,0,0,0" -"{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ImageCtrlViews" "0" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchCtrlViews" "4" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ColWidth0" "175" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ColWidth1" "341" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ColWidth12" "150" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ColWidth2" "120" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ColWidth3" "200" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0000" "us, 10, 0, P, Col, Hex, N" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0000_SCOPE" "Current Scope," -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0001" "xCurrentRxDesc, 10, 0, P, Col, Hex, N" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0001_SCOPE" "Current Scope," -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0002" "uip_len, 2, 0, P, Col, Hex, MN" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0002_SCOPE" "Current Scope," -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0003" "uip_buf[21], 2, 0, P, Col, Hex, MN" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0003_SCOPE" "Current Scope," -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0004" "xEventListItem, 11, 0, C0001, Col, Hex, MN" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0005" "uxPriority, 2, 0, C0001, Col, Hex, MN" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0006" "pxStack, 4, 0, C0001, Col, Hex, MN" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0007" "pcTaskName, 6, 0, C0001, Col, Hex, MN" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0008" "uxCriticalNesting, 2, 0, C0001, Col, Hex, MN" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0009" "uxTCBNumber, 2, 0, C0001, Col, Hex, MN" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0010" "uxBasePriority, 2, 0, C0001, Col, Hex, MN" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0011" "pxTaskTag, 9, 0, C0001, Col, Hex, N" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0012" "ulRunTimeCounter, 2, 0, C0001, Col, Hex, MN" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEMCnt" "1" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd1ColWidth0" "120" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd1ColWidth1" "150" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd1ColWidth12" "150" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd1ColWidth2" "120" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd1ColWidth3" "200" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd1ECX_WATCH_ITEMCnt" "0" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd2ColWidth0" "120" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd2ColWidth1" "150" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd2ColWidth12" "150" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd2ColWidth2" "120" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd2ColWidth3" "200" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd2ECX_WATCH_ITEMCnt" "0" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd3ColWidth0" "120" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd3ColWidth1" "150" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd3ColWidth12" "150" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd3ColWidth2" "120" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd3ColWidth3" "200" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd3ECX_WATCH_ITEMCnt" "0" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWndInitial_Radix" "0" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWndInstanceKey0" "{WK_00000001_WATCH}RTOSDemoSessionSH7216_E10A-USB_SYSTEM__SH" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWndRecentFile_WatchRecord" "" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWndRecentFile_WatchSave" "" -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWndUpdate_Interval" "100" -"{CBEBB610-1516-11D4-8F2D-00409545B67B}ElfDwarf2Objects" "1" -"{CBEBB610-1516-11D4-8F2D-00409545B67B}LoadModule0OBJ_ELFDWARF2_ARRAY_EXPAND_LIMIT" "-1" -"{CBEBB610-1516-11D4-8F2D-00409545B67B}LoadModule0OBJ_ELFDWARF2_STATIC_MEM_EXPAND" "1" -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_COLUMN_BC0_1" "0,0,0,0,0,0," -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_COLUMN_BC0_2" "" -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_COLUMN_BC0_3" "" -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_COLUMN_BC10_1" "0,0,0,0,0,0," -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_COLUMN_BC10_2" "" -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_COLUMN_BC10_3" "" -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_COLUMN_BC1_1" "0,0,0,0,0,0," -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_COLUMN_BC1_2" "" -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_COLUMN_BC1_3" "" -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_COLUMN_BC2_1" "0,0,0,0,0,0," -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_COLUMN_BC2_2" "" -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_COLUMN_BC2_3" "" -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_COLUMN_BC3_1" "0,0,0,0,0,0," -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_COLUMN_BC3_2" "" -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_COLUMN_BC3_3" "" -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_COLUMN_BC4_1" "0,0,0,0,0,0," -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_COLUMN_BC4_2" "" -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_COLUMN_BC4_3" "" -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_COLUMN_BC5_1" "0,0,0,0,0,0," -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_COLUMN_BC5_2" "" -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_COLUMN_BC5_3" "" -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_COLUMN_BC6_1" "0,0,0,0,0,0," -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_COLUMN_BC6_2" "" -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_COLUMN_BC6_3" "" -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_COLUMN_BC7_1" "0,0,0,0,0,0," -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_COLUMN_BC7_2" "" -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_COLUMN_BC7_3" "" -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_COLUMN_BC8_1" "0,0,0,0,0,0," -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_COLUMN_BC8_2" "" -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_COLUMN_BC8_3" "" -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_COLUMN_BC9_1" "0,0,0,0,0,0," -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_COLUMN_BC9_2" "" -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_COLUMN_BC9_3" "" -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_CONFIG_AUDCLOCK" "2 " -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_CONFIG_AUDINIT_PININFO" "00000000" -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_CONFIG_EEPROM_MODE" "0" -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_CONFIG_ERAM_0" "0 0 0 0 " -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_CONFIG_ERAM_1" "0 0 0 0 " -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_CONFIG_ERAM_2" "0 0 0 0 " -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_CONFIG_ERAM_3" "0 0 0 0 " -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_CONFIG_ERAM_4" "0 0 0 0 " -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_CONFIG_ERAM_5" "0 0 0 0 " -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_CONFIG_ERAM_6" "0 0 0 0 " -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_CONFIG_ERAM_7" "0 0 0 0 " -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_CONFIG_ERAM_INFO" "0" -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_CONFIG_FCU_ERROR" "0 1" -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_CONFIG_FLASHMODE" "0" -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_CONFIG_FLO_INFO" "0" -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_CONFIG_FM_FILE" "" -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_CONFIG_FM_LOAD" "0 0 3 0 0 0" -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_CONFIG_GOOPTION" "0 0 0 1 0" -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_CONFIG_MEMORYAREA" "0 0 0" -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_CONFIG_RECOVERY" "0 0 0 0 0" -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_CONFIG_ROUND" "RM_ZERO" -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_CONFIG_RW_ON_THE_FLY" "1" -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_CONFIG_SBSTK_INFO" "1" -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_CONFIG_START_FUNC" "0, H'0" -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_CONFIG_STEPOPTION" "0" -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_CONFIG_STOP_FUNC" "0, H'0" -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_EVENT_BC10_1" "0,0,1,0,1,0," -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_EVENT_BC10_2" "1,0" -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_EVENT_BC11_1" "0,0,1,0,0,0" -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_EVENT_BC1_1" "0,0,1,0,0,0," -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_EVENT_BC1_2" "1,0,0,0,0,0,0,1,1," -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_EVENT_BC1_3" "1,0" -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_EVENT_BC2_1" "0,0,1,0,0,0," -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_EVENT_BC2_2" "1,0,0,0,0,0,0," -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_EVENT_BC2_3" "1,0" -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_EVENT_BC3_1" "0,0,1,0,1,0," -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_EVENT_BC3_2" "1,0" -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_EVENT_BC4_1" "0,0,1,0,1,0," -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_EVENT_BC4_2" "1,0" -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_EVENT_BC5_1" "0,0,1,0,1,0," -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_EVENT_BC5_2" "1,0" -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_EVENT_BC6_1" "0,0,1,0,1,0," -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_EVENT_BC6_2" "1,0" -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_EVENT_BC7_1" "0,0,1,0,1,0," -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_EVENT_BC7_2" "1,0" -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_EVENT_BC8_1" "0,0,1,0,1,0," -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_EVENT_BC8_2" "1,0" -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_EVENT_BC9_1" "0,0,1,0,1,0," -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_EVENT_BC9_2" "1,0" -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_EVENT_SEQPTOP_0" "0 0" -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_PERFORM_PERFORM_SET" "0,0,0,0,0" -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_PROFILE_PROFILE_SELECT" "0,0,0,0" -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_SESSION_IS_SAVED" "YES" -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_TRACE_TRACE_ACQUISITION" "0,0,1,0,0,0,2,0,0,0,0,2,0,0,0,2,0,1,1,1,1,1,1" -"{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_TRACE_TRACE_ACQUISITION2" "1,0,1,1,1,1,1,0,0,0,0,0,0" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_EVAL_DENORMAL_MODE" "16777216" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_EVAL_ROUND_MODE" "768" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_0" "0000000000000001" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_1" "00000000FFFE771B" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_10" "00000000FFFFFFFD" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_11" "0000000092492493" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_12" "0000000000039447" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_13" "00000000FFFE771B" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_14" "0000000000000000" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_15" "00000000FFF83C38" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_16" "00000000000065FE" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_17" "0000000000000001" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_18" "0000000000000000" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_19" "0000000000000000" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_2" "000000000000007B" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_20" "0000000000000000" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_21" "0000000000049AB0" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_22" "00000000491CE5CE" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_23" "0000000000003760" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_24" "0000000000000070" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_25" "0000000000040001" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_26" "0000000000000000" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_27" "000000000000000C" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_28" "000000000000000D" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_29" "000000000000000E" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_3" "0000000000000003" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_30" "000000000000000F" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_31" "0000000000000010" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_32" "0000000000000011" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_33" "0000000000000012" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_34" "0000000000000013" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_35" "000000000000006E" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_36" "000000000000006F" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_37" "0000000000000070" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_38" "0000000000000071" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_39" "0000000000000072" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_4" "00000000000394C2" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_40" "000000000000000E" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_41" "0000000000000000" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_42" "000000000000000C" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_43" "0000000D0000000E" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_44" "0000000F00000010" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_45" "0000001100000012" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_46" "000000130000006E" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_47" "0000006F00000070" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_48" "0000007100000072" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_49" "0000000E00000000" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_5" "00000000FFF541BA" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_6" "00000000FFFE771B" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_7" "00000000FFF541BA" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_8" "00000000000065FC" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_9" "000000000000661E" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_COUNT" "50" -"{D595F9C0-EF22-11D5-B7DB-0000E10B3DA9}EventCtrlViews" "0" -"{EEDC9300-6FBE-11D5-8613-00A024591A38}LocalsCtrlViews" "0" -"{EEDC9301-6FBE-11D5-8613-00A024591A38}StackTraceCtrlViews" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOCtrlIOFile" "" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOCtrlSaveFileDir" "$(CONFIGDIR)" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOCtrlSaveFileName" "" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOCtrlViews" "1" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOSelection IOWnd0" "" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0ColWidth0" "381" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0ColWidth1" "100" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0ColWidth2" "100" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0ColWidth3" "100" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp0" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp1" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp10" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp11" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp12" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp13" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp14" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp15" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp16" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp17" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp18" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp19" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp2" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp20" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp21" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp22" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp23" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp24" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp25" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp26" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp27" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp28" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp29" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp3" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp30" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp31" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp32" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp33" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp34" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp35" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp36" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp37" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp38" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp39" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp4" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp40" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp41" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp42" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp43" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp44" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp45" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp46" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp47" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp48" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp49" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp5" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp50" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp51" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp52" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp53" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp54" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp55" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp56" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp57" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp58" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp59" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp6" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp60" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp61" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp62" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp63" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp64" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp65" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp66" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp67" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp68" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp69" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp7" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp70" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp71" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp72" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp8" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0Exp9" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0ScrollHorz" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd0ScrollVert" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd1ColWidth0" "200" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd1ColWidth1" "100" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd1ColWidth2" "100" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd1ColWidth3" "100" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd1ScrollHorz" "0" -"{F866DB60-6186-11D5-8BBE-0004E2013C71}IOWnd1ScrollVert" "0" -"{F923CED3-3318-4B43-B931-0AE76B289176}TaskTraceCtrlAnalyzeViews" "0" -"{F923CED3-3318-4B43-B931-0AE76B289176}TaskTraceCtrlFileSaveDirectory" "" -"{F923CED3-3318-4B43-B931-0AE76B289176}TaskTraceCtrlTraceViews" "0" -"{FB0C49C2-C2FE-4E92-BCC1-56FE7254C804}CacheCtrlCacheLastSaveDirectory" "" -"{FB0C49C2-C2FE-4E92-BCC1-56FE7254C804}CacheCtrlViews" "0" -[LANGUAGE] -"English" -[CONFIG_INFO_VD1] -1 -[CONFIG_INFO_VD2] -0 -[CONFIG_INFO_VD3] -0 -[CONFIG_INFO_VD4] -0 -[WINDOW_POSITION_STATE_DATA_VD1] -"Help" "TOOLBAR 0" 59419 1 5 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_00000001_CmdLine}RTOSDemoSessionSH7216_E10A-USB_SYSTEM__SH" "WINDOW" 59422 0 0 "0.23" 220 0 0 350 200 17 0 "32771|32772|32778|<>|32773|32774|<>|32820|<>|32801|32824" "0.0" -"{WK_00000001_CmdLine}" "WINDOW" 59422 0 1 "0.08" 324 0 0 350 200 17 0 "32771|32772|32778|<>|32773|32774|<>|32820|<>|32801|32824" "0.0" -"{WK_00000001_DISASSEMBLY}" "WINDOW" 0 0 0 "0.00" 0 -4 -23 892 659 9 0 "" "0.0" -"{WK_00000001_EVENT}RTOSDemoSessionSH7216_E10A-USB_SYSTEM__SH" "WINDOW" 59422 0 0 "0.50" 292 0 0 350 200 2065 0 "32774|32775|32777|<>|32780|<>" "0.0" -"{WK_00000001_IO}RTOSDemoSessionSH7216_E10A-USB_SYSTEM__SH" "WINDOW" 59422 0 3 "0.31" 324 0 0 350 200 17 0 "32817|32826|32819|32820|32821" "0.0" -"{WK_00000001_MAPSCT}RTOSDemoSessionSH7216_E10A-USB_SYSTEM__SH" "WINDOW" 59422 0 0 "0.86" 316 0 0 350 200 2065 0 "32812|<>|32813|32814|<>|32816|<>|32822|32821|<>|32796|32797|<>|32833|<>|32825|32829|<>|32852" "31.7" -"{WK_00000001_MEMORY}RTOSDemoSessionSH7216_E10A-USB_SYSTEM__SH" "WINDOW" 59422 0 0 "0.85" 391 0 0 350 200 2065 0 "42202|42203|42204|42233|<>|42206|42205|42230|42229|42207|<>|42208|42209|42210|49076|42228|42227|<>|42231|42232|42234|42235|<>|42211|<>" "0.0" -"{WK_00000001_OUTPUT}" "WINDOW" 59422 0 2 "0.55" 324 560 340 350 200 18 0 "36756|36757|36758|36759|<>|36746|36747|<>|39531|<>|39500|39534|<>|36687" "0.0" -"{WK_00000001_REGISTERS}RTOSDemoSessionSH7216_E10A-USB_SYSTEM__SH" "WINDOW" 59421 0 0 "1.00" 360 0 0 350 200 2065 0 "" "0.0" -"{WK_00000001_STACKTRACE}RTOSDemoSessionSH7216_E10A-USB_SYSTEM__SH" "WINDOW" 59422 0 0 "0.50" 219 0 0 350 200 2065 0 "" "0.0" -"{WK_00000001_STATUS}RTOSDemoSessionSH7216_E10A-USB_SYSTEM__SH" "WINDOW" 59422 0 4 "0.50" 324 0 0 350 200 17 0 "" "0.0" -"{WK_00000001_WATCH}RTOSDemoSessionSH7216_E10A-USB_SYSTEM__SH" "WINDOW" 59422 0 0 "0.45" 324 0 0 350 200 18 0 "32781|32783|<>|32771|32829|32772|32827|32773|<>|32786|<>|32810|32811|32831" "0.0" -"{WK_00000002_WORKSPACE}" "WINDOW" 59420 0 0 "1.00" 340 560 340 350 200 18 0 "" "0.0" -"{WK_TB00000001_STANDARD}" "TOOLBAR 0" 59419 0 2 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000002_EDITOR}" "TOOLBAR 0" 59419 0 0 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000003_BOOKMARKS}" "TOOLBAR 0" 59419 1 1 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000004_TEMPLATES}" "TOOLBAR 0" 59419 1 0 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000005_SEARCH}" "TOOLBAR 0" 59419 0 1 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000007_DEBUG}" "TOOLBAR 0" 59419 2 0 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000008_DEBUGRUN}" "TOOLBAR 0" 59419 2 1 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000009_VERSIONCONTROL}" "TOOLBAR 0" 59419 1 3 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000011_CPU}" "TOOLBAR 0" 59419 2 3 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000012_MAP}" "TOOLBAR 0" 59419 1 4 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000013_SYMBOL}" "TOOLBAR 0" 59419 2 5 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000014_CODE}" "TOOLBAR 0" 59419 2 8 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000015_PERFORMANCE}" "TOOLBAR 0" 59419 2 7 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000016_GRAPHIC}" "TOOLBAR 0" 59419 2 6 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000018_DEFAULTWINDOW}" "TOOLBAR 0" 59419 1 2 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000023_RTOS}" "TOOLBAR 0" 59419 2 9 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000026_MACRO}" "TOOLBAR 0" 59419 1 6 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000028_RTOSDEBUG}" "TOOLBAR 0" 59419 2 2 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000029_SYSTEMTOOL}" "TOOLBAR 0" 59419 2 4 "0.00" 0 0 0 0 0 17 0 "" "0.0" -[WINDOW_POSITION_STATE_DATA_VD2] -[WINDOW_POSITION_STATE_DATA_VD3] -[WINDOW_POSITION_STATE_DATA_VD4] -[WINDOW_Z_ORDER] -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\main.c" -[TARGET_NAME] -"SH7216 E10A-USB SYSTEM (SH2A-FPU)" "" 0 -[STATUSBAR_STATEINFO_VD1] -"MasterShowState" 1 -"ApplicationShowState" 1 -"DebuggerShowState" 1 -[STATUSBAR_STATEINFO_VD2] -"MasterShowState" 1 -"ApplicationShowState" 1 -"DebuggerShowState" 1 -[STATUSBAR_STATEINFO_VD3] -"MasterShowState" 1 -"ApplicationShowState" 1 -"DebuggerShowState" 1 -[STATUSBAR_STATEINFO_VD4] -"MasterShowState" 1 -"ApplicationShowState" 1 -"DebuggerShowState" 1 -[STATUSBAR_DEBUGGER_PANESTATE_VD1] -[STATUSBAR_DEBUGGER_PANESTATE_VD2] -[STATUSBAR_DEBUGGER_PANESTATE_VD3] -[STATUSBAR_DEBUGGER_PANESTATE_VD4] -[DEBUGGER_OPTIONS] -"[B|SIMIOF|1] [I|SIMIOADR|0x00000000] [S|ROM_MODE|^"^"] [S|MAP|^"^"] [S|RESOURCE|^"^"]" -[DOWNLOAD_MODULES] -"$(CONFIGDIR)\$(PROJECTNAME).abs" 0 "Elf/Dwarf2" 0 0 1 0 -[CONNECT_ON_GO] -"FALSE" -[DOWNLOAD_MODULES_AFTER_BUILD] -"TRUE" -[REMOVE_BREAKPOINTS_ON_DOWNLOAD] -"FALSE" -[DISABLE_MEMORY_ACCESS_PRIOR_TO_COMMAND_FILE_EXECUTION] -"FALSE" -[LIMIT_DISASSEMBLY_MEMORY_ACCESS] -"TRUE" -[DISABLE_MEMORY_ACCESS_DURING_EXECUTION] -"FALSE" -[DEBUGGER_OPTIONS_PROPERTIES] -"1" -[COMMAND_FILES] -[DEFAULT_DEBUG_FORMAT] -"Elf/Dwarf2" -[FLASH_DETAILS] -"" 0 0 "" 0 "" 0 0 "" 0 0 0 0 0 0 0 "" "" "" "" "" -[BREAKPOINTS] -"c:\e\dev\freertos\workingcopy\demo\superh_sh7216_renesas\rtosdemo\main.c" 221 0 1 "{00000000-0000-0000-C000-000000000046}" "" -[END] diff --git a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/SessionSH7216_E10A-USB_SYSTEM__SH.ini b/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/SessionSH7216_E10A-USB_SYSTEM__SH.ini deleted file mode 100644 index 4f273cfef..000000000 --- a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/SessionSH7216_E10A-USB_SYSTEM__SH.ini +++ /dev/null @@ -1,4 +0,0 @@ -[E10A USB Cpu Select] -FREQUENCY=12.50 -[Key] -Key=1 diff --git a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/SessionSH7216_E10A-USB_SYSTEM__SH_Heush2acustom1.ini b/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/SessionSH7216_E10A-USB_SYSTEM__SH_Heush2acustom1.ini deleted file mode 100644 index b82cebe4b..000000000 --- a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/SessionSH7216_E10A-USB_SYSTEM__SH_Heush2acustom1.ini +++ /dev/null @@ -1,3 +0,0 @@ -[E10A USB Cpu Select] -CPU Select=5 -FREQUENCY=12.50 diff --git a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/dbsct.c b/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/dbsct.c deleted file mode 100644 index 5ee520579..000000000 --- a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/dbsct.c +++ /dev/null @@ -1,30 +0,0 @@ -/***********************************************************************/ -/* */ -/* FILE :dbsct.c */ -/* DATE :Sun, Dec 27, 2009 */ -/* DESCRIPTION :Setting of B,R Section */ -/* CPU TYPE :Other */ -/* */ -/* This file is generated by Renesas Project Generator (Ver.4.16). */ -/* */ -/***********************************************************************/ - - - -#include "typedefine.h" - -#pragma section $DSEC -static const struct { - _UBYTE *rom_s; /* Start address of the initialized data section in ROM */ - _UBYTE *rom_e; /* End address of the initialized data section in ROM */ - _UBYTE *ram_s; /* Start address of the initialized data section in RAM */ -} DTBL[] = { - { __sectop("D"), __secend("D"), __sectop("R") } -}; -#pragma section $BSEC -static const struct { - _UBYTE *b_s; /* Start address of non-initialized data section */ - _UBYTE *b_e; /* End address of non-initialized data section */ -} BTBL[] = { - { __sectop("B"), __secend("B") } -}; diff --git a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/flop.c b/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/flop.c deleted file mode 100644 index 409ee1f02..000000000 --- a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/flop.c +++ /dev/null @@ -1,323 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* - * Creates eight tasks, each of which loops continuously performing a floating - * point calculation and in so doing test the floating point context switching. - * This file also demonstrates the use of the xPortUsesFloatingPoint() function - * which informs the kernel that the task requires its floating point context - * saved on each switch. - * - * All the tasks run at the idle priority and never block or yield. This causes - * all eight tasks to time slice with the idle task. Running at the idle - * priority means that these tasks will get pre-empted any time another task is - * ready to run or a time slice occurs. More often than not the pre-emption - * will occur mid calculation, creating a good test of the schedulers context - * switch mechanism - a calculation producing an unexpected result could be a - * symptom of a corruption in the context of a task. - */ - -#include -#include - -/* Scheduler include files. */ -#include "FreeRTOS.h" -#include "task.h" - -/* Demo program include files. */ -#include "flop.h" - -#define mathSTACK_SIZE configMINIMAL_STACK_SIZE -#define mathNUMBER_OF_TASKS ( 8 ) - -/* Four tasks, each of which performs a different floating point calculation. -Each of the four is created twice. */ -static void vCompetingMathTask1( void *pvParameters ); -static void vCompetingMathTask2( void *pvParameters ); -static void vCompetingMathTask3( void *pvParameters ); -static void vCompetingMathTask4( void *pvParameters ); - -/* These variables are used to check that all the tasks are still running. If a -task gets a calculation wrong it will stop incrementing its check variable, -otherwise the check variable will get incremented on each iteration of the -tasks execution. */ -static volatile unsigned short usTaskCheck[ mathNUMBER_OF_TASKS ] = { ( unsigned short ) 0 }; - -/*-----------------------------------------------------------*/ - -void vStartMathTasks( unsigned portBASE_TYPE uxPriority ) -{ -TaskHandle_t xCreatedTask; - - /* Create one of the floating point tasks... */ - xTaskCreate( vCompetingMathTask1, "Math1", mathSTACK_SIZE, ( void * ) &( usTaskCheck[ 0 ] ), uxPriority, &xCreatedTask ); - - /* ... then enable floating point support for the created task so its flop - flop registers are maintained in a consistent state. */ - xPortUsesFloatingPoint( xCreatedTask ); - - xTaskCreate( vCompetingMathTask2, "Math2", mathSTACK_SIZE, ( void * ) &( usTaskCheck[ 1 ] ), uxPriority, &xCreatedTask ); - xPortUsesFloatingPoint( xCreatedTask ); - - xTaskCreate( vCompetingMathTask3, "Math3", mathSTACK_SIZE, ( void * ) &( usTaskCheck[ 2 ] ), uxPriority, &xCreatedTask ); - xPortUsesFloatingPoint( xCreatedTask ); - - xTaskCreate( vCompetingMathTask4, "Math4", mathSTACK_SIZE, ( void * ) &( usTaskCheck[ 3 ] ), uxPriority, &xCreatedTask ); - xPortUsesFloatingPoint( xCreatedTask ); - - xTaskCreate( vCompetingMathTask1, "Math5", mathSTACK_SIZE, ( void * ) &( usTaskCheck[ 4 ] ), uxPriority, &xCreatedTask ); - xPortUsesFloatingPoint( xCreatedTask ); - - xTaskCreate( vCompetingMathTask2, "Math6", mathSTACK_SIZE, ( void * ) &( usTaskCheck[ 5 ] ), uxPriority, &xCreatedTask ); - xPortUsesFloatingPoint( xCreatedTask ); - - xTaskCreate( vCompetingMathTask3, "Math7", mathSTACK_SIZE, ( void * ) &( usTaskCheck[ 6 ] ), uxPriority, &xCreatedTask ); - xPortUsesFloatingPoint( xCreatedTask ); - - xTaskCreate( vCompetingMathTask4, "Math8", mathSTACK_SIZE, ( void * ) &( usTaskCheck[ 7 ] ), uxPriority, &xCreatedTask ); - xPortUsesFloatingPoint( xCreatedTask ); -} -/*-----------------------------------------------------------*/ - -static void vCompetingMathTask1( void *pvParameters ) -{ -volatile double d1, d2, d3, d4; -volatile unsigned short *pusTaskCheckVariable; -volatile double dAnswer; -short sError = pdFALSE; - - d1 = 123.4567; - d2 = 2345.6789; - d3 = -918.222; - - /* Calculate the expected answer. */ - dAnswer = ( d1 + d2 ) * d3; - - /* The variable this task increments to show it is still running is passed in - as the parameter. */ - pusTaskCheckVariable = ( unsigned short * ) pvParameters; - - /* Keep performing a calculation and checking the result against a constant. */ - for(;;) - { - /* Perform the calculation. */ - d1 = 123.4567; - d2 = 2345.6789; - d3 = -918.222; - - d4 = ( d1 + d2 ) * d3; - - /* If the calculation does not match the expected constant, stop the - increment of the check variable. */ - if( fabs( d4 - dAnswer ) > 0.001 ) - { - sError = pdTRUE; - } - - if( sError == pdFALSE ) - { - /* If the calculation has always been correct, increment the check - variable so we know this task is still running okay. */ - ( *pusTaskCheckVariable )++; - } - } -} -/*-----------------------------------------------------------*/ - -static void vCompetingMathTask2( void *pvParameters ) -{ -volatile double d1, d2, d3, d4; -volatile unsigned short *pusTaskCheckVariable; -volatile double dAnswer; -short sError = pdFALSE; - - d1 = -389.38; - d2 = 32498.2; - d3 = -2.0001; - - /* Calculate the expected answer. */ - dAnswer = ( d1 / d2 ) * d3; - - - /* The variable this task increments to show it is still running is passed in - as the parameter. */ - pusTaskCheckVariable = ( unsigned short * ) pvParameters; - - /* Keep performing a calculation and checking the result against a constant. */ - for( ;; ) - { - /* Perform the calculation. */ - d1 = -389.38; - d2 = 32498.2; - d3 = -2.0001; - - d4 = ( d1 / d2 ) * d3; - - /* If the calculation does not match the expected constant, stop the - increment of the check variable. */ - if( fabs( d4 - dAnswer ) > 0.001 ) - { - sError = pdTRUE; - } - - if( sError == pdFALSE ) - { - /* If the calculation has always been correct, increment the check - variable so we know - this task is still running okay. */ - ( *pusTaskCheckVariable )++; - } - } -} -/*-----------------------------------------------------------*/ - -static void vCompetingMathTask3( void *pvParameters ) -{ -volatile double *pdArray, dTotal1, dTotal2, dDifference; -volatile unsigned short *pusTaskCheckVariable; -const size_t xArraySize = 10; -size_t xPosition; -short sError = pdFALSE; - - /* The variable this task increments to show it is still running is passed - in as the parameter. */ - pusTaskCheckVariable = ( unsigned short * ) pvParameters; - - /* Allocate memory for use as an array. */ - pdArray = ( double * ) pvPortMalloc( xArraySize * sizeof( double ) ); - - /* Keep filling an array, keeping a running total of the values placed in - the array. Then run through the array adding up all the values. If the two - totals do not match, stop the check variable from incrementing. */ - for( ;; ) - { - dTotal1 = 0.0; - dTotal2 = 0.0; - - for( xPosition = 0; xPosition < xArraySize; xPosition++ ) - { - pdArray[ xPosition ] = ( double ) xPosition + 5.5; - dTotal1 += ( double ) xPosition + 5.5; - } - - for( xPosition = 0; xPosition < xArraySize; xPosition++ ) - { - dTotal2 += pdArray[ xPosition ]; - } - - dDifference = dTotal1 - dTotal2; - if( fabs( dDifference ) > 0.001 ) - { - sError = pdTRUE; - } - - if( sError == pdFALSE ) - { - /* If the calculation has always been correct, increment the check - variable so we know this task is still running okay. */ - ( *pusTaskCheckVariable )++; - } - } -} -/*-----------------------------------------------------------*/ - -static void vCompetingMathTask4( void *pvParameters ) -{ -volatile double *pdArray, dTotal1, dTotal2, dDifference; -volatile unsigned short *pusTaskCheckVariable; -const size_t xArraySize = 10; -size_t xPosition; -short sError = pdFALSE; - - /* The variable this task increments to show it is still running is passed in - as the parameter. */ - pusTaskCheckVariable = ( unsigned short * ) pvParameters; - - /* Allocate RAM for use as an array. */ - pdArray = ( double * ) pvPortMalloc( xArraySize * sizeof( double ) ); - - /* Keep filling an array, keeping a running total of the values placed in the - array. Then run through the array adding up all the values. If the two totals - do not match, stop the check variable from incrementing. */ - for( ;; ) - { - dTotal1 = 0.0; - dTotal2 = 0.0; - - for( xPosition = 0; xPosition < xArraySize; xPosition++ ) - { - pdArray[ xPosition ] = ( double ) xPosition * 12.123; - dTotal1 += ( double ) xPosition * 12.123; - } - - for( xPosition = 0; xPosition < xArraySize; xPosition++ ) - { - dTotal2 += pdArray[ xPosition ]; - } - - dDifference = dTotal1 - dTotal2; - if( fabs( dDifference ) > 0.001 ) - { - sError = pdTRUE; - } - - if( sError == pdFALSE ) - { - /* If the calculation has always been correct, increment the check - variable so we know this task is still running okay. */ - ( *pusTaskCheckVariable )++; - } - } -} -/*-----------------------------------------------------------*/ - -/* This is called to check that all the created tasks are still running. */ -portBASE_TYPE xAreMathsTaskStillRunning( void ) -{ -/* Keep a history of the check variables so we know if they have been -incremented since the last call. */ -static unsigned short usLastTaskCheck[ mathNUMBER_OF_TASKS ] = { ( unsigned short ) 0 }; -portBASE_TYPE xReturn = pdTRUE, xTask; - - /* Check the maths tasks are still running by ensuring their check variables - are still incrementing. */ - for( xTask = 0; xTask < mathNUMBER_OF_TASKS; xTask++ ) - { - if( usTaskCheck[ xTask ] == usLastTaskCheck[ xTask ] ) - { - /* The check has not incremented so an error exists. */ - xReturn = pdFALSE; - } - - usLastTaskCheck[ xTask ] = usTaskCheck[ xTask ]; - } - - return xReturn; -} - - - diff --git a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/intprg.c b/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/intprg.c deleted file mode 100644 index 00d268536..000000000 --- a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/intprg.c +++ /dev/null @@ -1,526 +0,0 @@ -/***********************************************************************/ -/* */ -/* FILE :intprg.c */ -/* DATE :Sun, Dec 27, 2009 */ -/* DESCRIPTION :Interrupt Program */ -/* CPU TYPE :Other */ -/* */ -/* This file is generated by Renesas Project Generator (Ver.4.16). */ -/* */ -/***********************************************************************/ - - - -#include -#include "vect.h" -#pragma section IntPRG - -// 4 Illegal code -void INT_Illegal_code(void){for( ;; ); /* sleep(); */} - -// 5 Reserved - -// 6 Illegal slot -void INT_Illegal_slot(void){for( ;; ); /* sleep(); */} -// 7 Reserved - -// 8 Reserved - -// 9 CPU Address error -void INT_CPU_Address(void){for( ;; ); /* sleep(); */} -// 10 DMAC Address error -void INT_DMAC_Address(void){for( ;; ); /* sleep(); */} -// 11 NMI -void INT_NMI(void){for( ;; ); /* sleep(); */} -// 12 User breakpoint trap -void INT_User_Break(void){for( ;; ); /* sleep(); */} -// 13 Reserved - -// 14 H-UDI -void INT_HUDI(void){for( ;; ); /* sleep(); */} -// 15 Register bank over -void INT_Bank_Overflow(void){for( ;; ); /* sleep(); */} -// 16 Register bank under -void INT_Bank_Underflow(void){for( ;; ); /* sleep(); */} -// 17 ZERO DIV -void INT_Divide_by_Zero(void){for( ;; ); /* sleep(); */} -// 18 OVER DIV -void INT_Divide_Overflow(void){for( ;; ); /* sleep(); */} -// 19 Reserved - -// 20 Reserved - -// 21 Reserved - -// 22 Reserved - -// 23 Reserved - -// 24 Reserved - -// 25 Reserved - -// 26 Reserved - -// 27 Reserved - -// 28 Reserved - -// 29 Reserved - -// 30 Reserved - -// 31 Reserved - -// 32 TRAPA (User Vecter) -void INT_TRAPA32(void){ for( ;; ); /* sleep(); */ } -// 33 TRAPA (User Vecter) -void INT_TRAPA33(void){for( ;; ); /* sleep(); */} -// 34 TRAPA (User Vecter) -void INT_TRAPA34(void){for( ;; ); /* sleep(); */} -// 35 TRAPA (User Vecter) -void INT_TRAPA35(void){for( ;; ); /* sleep(); */} -// 36 TRAPA (User Vecter) -void INT_TRAPA36(void){for( ;; ); /* sleep(); */} -// 37 TRAPA (User Vecter) -void INT_TRAPA37(void){for( ;; ); /* sleep(); */} -// 38 TRAPA (User Vecter) -void INT_TRAPA38(void){for( ;; ); /* sleep(); */} -// 39 TRAPA (User Vecter) -void INT_TRAPA39(void){for( ;; ); /* sleep(); */} -// 40 TRAPA (User Vecter) -void INT_TRAPA40(void){for( ;; ); /* sleep(); */} -// 41 TRAPA (User Vecter) -void INT_TRAPA41(void){for( ;; ); /* sleep(); */} -// 42 TRAPA (User Vecter) -void INT_TRAPA42(void){for( ;; ); /* sleep(); */} -// 43 TRAPA (User Vecter) -void INT_TRAPA43(void){for( ;; ); /* sleep(); */} -// 44 TRAPA (User Vecter) -void INT_TRAPA44(void){for( ;; ); /* sleep(); */} -// 45 TRAPA (User Vecter) -void INT_TRAPA45(void){for( ;; ); /* sleep(); */} -// 46 TRAPA (User Vecter) -void INT_TRAPA46(void){for( ;; ); /* sleep(); */} -// 47 TRAPA (User Vecter) -void INT_TRAPA47(void){for( ;; ); /* sleep(); */} -// 48 TRAPA (User Vecter) -void INT_TRAPA48(void){for( ;; ); /* sleep(); */} -// 49 TRAPA (User Vecter) -void INT_TRAPA49(void){for( ;; ); /* sleep(); */} -// 50 TRAPA (User Vecter) -void INT_TRAPA50(void){for( ;; ); /* sleep(); */} -// 51 TRAPA (User Vecter) -void INT_TRAPA51(void){for( ;; ); /* sleep(); */} -// 52 TRAPA (User Vecter) -void INT_TRAPA52(void){for( ;; ); /* sleep(); */} -// 53 TRAPA (User Vecter) -void INT_TRAPA53(void){for( ;; ); /* sleep(); */} -// 54 TRAPA (User Vecter) -void INT_TRAPA54(void){for( ;; ); /* sleep(); */} -// 55 TRAPA (User Vecter) -void INT_TRAPA55(void){for( ;; ); /* sleep(); */} -// 56 TRAPA (User Vecter) -void INT_TRAPA56(void){for( ;; ); /* sleep(); */} -// 57 TRAPA (User Vecter) -void INT_TRAPA57(void){for( ;; ); /* sleep(); */} -// 58 TRAPA (User Vecter) -void INT_TRAPA58(void){for( ;; ); /* sleep(); */} -// 59 TRAPA (User Vecter) -void INT_TRAPA59(void){for( ;; ); /* sleep(); */} -// 60 TRAPA (User Vecter) -void INT_TRAPA60(void){for( ;; ); /* sleep(); */} -// 61 TRAPA (User Vecter) -void INT_TRAPA61(void){for( ;; ); /* sleep(); */} -// 62 TRAPA (User Vecter) -void INT_TRAPA62(void){for( ;; ); /* sleep(); */} -// 63 TRAPA (User Vecter) -void INT_TRAPA63(void){for( ;; ); /* sleep(); */} -// 64 Interrupt IRQ0 -void INT_IRQ0(void){for( ;; ); /* sleep(); */} -// 65 Interrupt IRQ1 -void INT_IRQ1(void){for( ;; ); /* sleep(); */} -// 66 Interrupt IRQ2 -void INT_IRQ2(void){for( ;; ); /* sleep(); */} -// 67 Interrupt IRQ3 -void INT_IRQ3(void){for( ;; ); /* sleep(); */} -// 68 Interrupt IRQ4 -void INT_IRQ4(void){for( ;; ); /* sleep(); */} -// 69 Interrupt IRQ5 -void INT_IRQ5(void){for( ;; ); /* sleep(); */} -// 70 Interrupt IRQ6 -void INT_IRQ6(void){for( ;; ); /* sleep(); */} -// 71 Interrupt IRQ7 -void INT_IRQ7(void){for( ;; ); /* sleep(); */} -// 72 Reserved - -// 73 Reserved - -// 74 Reserved - -// 75 Reserved - -// 76 Reserved - -// 77 Reserved - -// 78 Reserved - -// 79 Reserved - -// 80 Interrupt PINT0 -void INT_PINT0(void){for( ;; ); /* sleep(); */} -// 81 Interrupt PINT1 -void INT_PINT1(void){for( ;; ); /* sleep(); */} -// 82 Interrupt PINT2 -void INT_PINT2(void){for( ;; ); /* sleep(); */} -// 83 Interrupt PINT3 -void INT_PINT3(void){for( ;; ); /* sleep(); */} -// 84 Interrupt PINT4 -void INT_PINT4(void){for( ;; ); /* sleep(); */} -// 85 Interrupt PINT5 -void INT_PINT5(void){for( ;; ); /* sleep(); */} -// 86 Interrupt PINT6 -void INT_PINT6(void){for( ;; ); /* sleep(); */} -// 87 Interrupt PINT7 -void INT_PINT7(void){for( ;; ); /* sleep(); */} -// 88 Reserved - -// 89 Reserved - -// 90 Reserved - -// 91 ROM FIFE -void INT_ROM_FIFE(void){for( ;; ); /* sleep(); */} -// 92 A/D ADI0 -void INT_AD_ADI0(void){for( ;; ); /* sleep(); */} -// 93 Reserved - -// 94 Reserved - -// 95 Reserved - -// 96 A/D ADI1 -void INT_AD_ADI1(void){for( ;; ); /* sleep(); */} -// 97 Reserved - -// 98 Reserved - -// 99 Reserved - -// 100 Reserved - -// 101 Reserved - -// 102 Reserved - -// 103 Reserved - -// 104 RCANET0 ERS_0 -void INT_RCANET0_ERS_0(void){for( ;; ); /* sleep(); */} -// 105 RCANET0 OVR_0 -void INT_RCANET0_OVR_0(void){for( ;; ); /* sleep(); */} -// 106 RCANET0 RM01_0 -void INT_RCANET0_RM01_0(void){for( ;; ); /* sleep(); */} -// 107 RCANET0 SLE_0 -void INT_RCANET0_SLE_0(void){for( ;; ); /* sleep(); */} -// 108 DMAC0 DEI0 -void INT_DMAC0_DEI0(void){for( ;; ); /* sleep(); */} -// 109 DMAC0 HEI0 -void INT_DMAC0_HEI0(void){for( ;; ); /* sleep(); */} -// 110 Reserved - -// 111 Reserved - -// 112 DMAC1 DEI1 -void INT_DMAC1_DEI1(void){for( ;; ); /* sleep(); */} -// 113 DMAC1 HEI1 -void INT_DMAC1_HEI1(void){for( ;; ); /* sleep(); */} -// 114 Reserved - -// 115 Reserved - -// 116 DMAC2 DEI2 -void INT_DMAC2_DEI2(void){for( ;; ); /* sleep(); */} -// 117 DMAC2 HEI2 -void INT_DMAC2_HEI2(void){for( ;; ); /* sleep(); */} -// 118 Reserved - -// 119 Reserved - -// 120 DMAC3 DEI3 -void INT_DMAC3_DEI3(void){for( ;; ); /* sleep(); */} -// 121 DMAC3 HEI3 -void INT_DMAC3_HEI3(void){for( ;; ); /* sleep(); */} -// 122 Reserved - -// 123 Reserved - -// 124 DMAC4 DEI4 -void INT_DMAC4_DEI4(void){for( ;; ); /* sleep(); */} -// 125 DMAC4 HEI4 -void INT_DMAC4_HEI4(void){for( ;; ); /* sleep(); */} -// 126 Reserved - -// 127 Reserved - -// 128 DMAC5 DEI5 -void INT_DMAC5_DEI5(void){for( ;; ); /* sleep(); */} -// 129 DMAC5 HEI5 -void INT_DMAC5_HEI5(void){for( ;; ); /* sleep(); */} -// 130 Reserved - -// 131 Reserved - -// 132 DMAC6 DEI6 -void INT_DMAC6_DEI6(void){for( ;; ); /* sleep(); */} -// 133 DMAC6 HEI6 -void INT_DMAC6_HEI6(void){for( ;; ); /* sleep(); */} -// 134 Reserved - -// 135 Reserved - -// 136 DMAC7 DEI7 -void INT_DMAC7_DEI7(void){for( ;; ); /* sleep(); */} -// 137 DMAC7 HEI7 -void INT_DMAC7_HEI7(void){for( ;; ); /* sleep(); */} -// 138 Reserved - -// 139 Reserved - -// 140 CMT CMI0 -//void INT_CMT_CMI0(void){for( ;; ); /* sleep(); */} -// 141 Reserved - -// 142 Reserved - -// 143 Reserved - -// 144 CMT CMI1 -void INT_CMT_CMI1(void){for( ;; ); /* sleep(); */} -// 145 Reserved - -// 146 Reserved - -// 147 Reserved - -// 148 BSC CMTI -void INT_BSC_CMTI(void){for( ;; ); /* sleep(); */} -// 149 Reserved - -// 150 USB EP4FULL -void INT_USB_EP4FULL(void){for( ;; ); /* sleep(); */} -// 151 USB EP5EMPTY -void INT_USB_EP5EMPTY(void){for( ;; ); /* sleep(); */} -// 152 WDT ITI -void INT_WDT_ITI(void){for( ;; ); /* sleep(); */} -// 153 E-DMAC EINT0 -void INT_EDMAC_EINT0(void){for( ;; ); /* sleep(); */} -// 154 USB EP1FULL -void INT_USB_EP1FULL(void){for( ;; ); /* sleep(); */} -// 155 USB EP2EMPTY -void INT_USB_EP2EMPTY(void){for( ;; ); /* sleep(); */} -// 156 MTU2 MTU0 TGI0A -void INT_MTU2_MTU0_TGI0A(void){for( ;; ); /* sleep(); */} -// 157 MTU2 MTU0 TGI0B -void INT_MTU2_MTU0_TGI0B(void){for( ;; ); /* sleep(); */} -// 158 MTU2 MTU0 TGI0C -void INT_MTU2_MTU0_TGI0C(void){for( ;; ); /* sleep(); */} -// 159 MTU2 MTU0 TGI0D -void INT_MTU2_MTU0_TGI0D(void){for( ;; ); /* sleep(); */} -// 160 MTU2 MTU0 TGI0V -void INT_MTU2_MTU0_TGI0V(void){for( ;; ); /* sleep(); */} -// 161 MTU2 MTU0 TGI0E -void INT_MTU2_MTU0_TGI0E(void){for( ;; ); /* sleep(); */} -// 162 MTU2 MTU0 TGI0F -void INT_MTU2_MTU0_TGI0F(void){for( ;; ); /* sleep(); */} -// 163 Reserved - -// 164 MTU2 MTU1 TGI1A -void INT_MTU2_MTU1_TGI1A(void){for( ;; ); /* sleep(); */} -// 165 MTU2 MTU1 TGI1B -void INT_MTU2_MTU1_TGI1B(void){for( ;; ); /* sleep(); */} -// 166 Reserved - -// 167 Reserved - -// 168 MTU2 MTU1 TGI1V -void INT_MTU2_MTU1_TGI1V(void){for( ;; ); /* sleep(); */} -// 169 MTU2 MTU1 TGI1U -void INT_MTU2_MTU1_TGI1U(void){for( ;; ); /* sleep(); */} -// 170 Reserved - -// 171 Reserved - -// 172 MTU2 MTU2 TGI2A -void INT_MTU2_MTU2_TGI2A(void){for( ;; ); /* sleep(); */} -// 173 MTU2 MTU2 TGI2B -void INT_MTU2_MTU2_TGI2B(void){for( ;; ); /* sleep(); */} -// 174 Reserved - -// 175 Reserved - -// 176 MTU2 MTU2 TGI2V -void INT_MTU2_MTU2_TGI2V(void){for( ;; ); /* sleep(); */} -// 177 MTU2 MTU2 TGI2U -void INT_MTU2_MTU2_TGI2U(void){for( ;; ); /* sleep(); */} -// 178 Reserved - -// 179 Reserved - -// 180 MTU2 MTU3 TGI3A -void INT_MTU2_MTU3_TGI3A(void){for( ;; ); /* sleep(); */} -// 181 MTU2 MTU3 TGI3B -void INT_MTU2_MTU3_TGI3B(void){for( ;; ); /* sleep(); */} -// 182 MTU2 MTU3 TGI3C -void INT_MTU2_MTU3_TGI3C(void){for( ;; ); /* sleep(); */} -// 183 MTU2 MTU3 TGI3D -void INT_MTU2_MTU3_TGI3D(void){for( ;; ); /* sleep(); */} -// 184 MTU2 MTU3 TGI3V -void INT_MTU2_MTU3_TGI3V(void){for( ;; ); /* sleep(); */} -// 185 Reserved - -// 186 Reserved - -// 187 Reserved - -// 188 MTU2 MTU4 TGI4A -void INT_MTU2_MTU4_TGI4A(void){for( ;; ); /* sleep(); */} -// 189 MTU2 MTU4 TGI4B -void INT_MTU2_MTU4_TGI4B(void){for( ;; ); /* sleep(); */} -// 190 MTU2 MTU4 TGI4C -void INT_MTU2_MTU4_TGI4C(void){for( ;; ); /* sleep(); */} -// 191 MTU2 MTU4 TGI4D -void INT_MTU2_MTU4_TGI4D(void){for( ;; ); /* sleep(); */} -// 192 MTU2 MTU4 TGI4V -void INT_MTU2_MTU4_TGI4V(void){for( ;; ); /* sleep(); */} -// 193 Reserved - -// 194 Reserved - -// 195 Reserved - -// 196 MTU2 MTU5 TGI5U -void INT_MTU2_MTU5_TGI5U(void){for( ;; ); /* sleep(); */} -// 197 MTU2 MTU5 TGI5V -void INT_MTU2_MTU5_TGI5V(void){for( ;; ); /* sleep(); */} -// 198 MTU2 MTU5 TGI5W -void INT_MTU2_MTU5_TGI5W(void){for( ;; ); /* sleep(); */} -// 199 Reserved - -// 200 POE2 OEI1 -void INT_POE2_OEI1(void){for( ;; ); /* sleep(); */} -// 201 POE2 OEI2 -void INT_POE2_OEI2(void){for( ;; ); /* sleep(); */} -// 202 Reserved - -// 203 Reserved - -// 204 MTU2S MTU3S TGI3A -void INT_MTU2S_MTU3S_TGI3A(void){for( ;; ); /* sleep(); */} -// 205 MTU2S MTU3S TGI3B -void INT_MTU2S_MTU3S_TGI3B(void){for( ;; ); /* sleep(); */} -// 206 MTU2S MTU3S TGI3C -void INT_MTU2S_MTU3S_TGI3C(void){for( ;; ); /* sleep(); */} -// 207 MTU2S MTU3S TGI3D -void INT_MTU2S_MTU3S_TGI3D(void){for( ;; ); /* sleep(); */} -// 208 MTU2S MTU3S TGI3V -void INT_MTU2S_MTU3S_TGI3V(void){for( ;; ); /* sleep(); */} -// 209 Reserved - -// 210 Reserved - -// 211 Reserved - -// 212 MTU2S MTU4S TGI4A -void INT_MTU2S_MTU4S_TGI4A(void){for( ;; ); /* sleep(); */} -// 213 MTU2S MTU4S TGI4B -void INT_MTU2S_MTU4S_TGI4B(void){for( ;; ); /* sleep(); */} -// 214 MTU2S MTU4S TGI4C -void INT_MTU2S_MTU4S_TGI4C(void){for( ;; ); /* sleep(); */} -// 215 MTU2S MTU4S TGI4D -void INT_MTU2S_MTU4S_TGI4D(void){for( ;; ); /* sleep(); */} -// 216 MTU2S MTU4S TGI4V -void INT_MTU2S_MTU4S_TGI4V(void){for( ;; ); /* sleep(); */} -// 217 Reserved - -// 218 Reserved - -// 219 Reserved - -// 220 MTU2S MTU5S TGI5U -void INT_MTU2S_MTU5S_TGI5U(void){for( ;; ); /* sleep(); */} -// 221 MTU2S MTU5S TGI5V -void INT_MTU2S_MTU5S_TGI5V(void){for( ;; ); /* sleep(); */} -// 222 MTU2S MTU5S TGI5W -void INT_MTU2S_MTU5S_TGI5W(void){for( ;; ); /* sleep(); */} -// 223 Reserved - -// 224 POE2 OEI3 -void INT_POE2_OEI3(void){for( ;; ); /* sleep(); */} -// 225 Reserved - -// 226 USB USI0 -void INT_USB_USI0(void){for( ;; ); /* sleep(); */} -// 227 USB USI1 -void INT_USB_USI1(void){for( ;; ); /* sleep(); */} -// 228 IIC3 STPI -void INT_IIC3_STPI(void){for( ;; ); /* sleep(); */} -// 229 IIC3 NAKI -void INT_IIC3_NAKI(void){for( ;; ); /* sleep(); */} -// 230 IIC3 RXI -void INT_IIC3_RXI(void){for( ;; ); /* sleep(); */} -// 231 IIC3 TXI -void INT_IIC3_TXI(void){for( ;; ); /* sleep(); */} -// 232 IIC3 TEI -void INT_IIC3_TEI(void){for( ;; ); /* sleep(); */} -// 233 RSPI SPERI -void INT_RSPI_SPERI(void){for( ;; ); /* sleep(); */} -// 234 RSPI SPRXI -void INT_RSPI_SPRXI(void){for( ;; ); /* sleep(); */} -// 235 RSPI SPTXI -void INT_RSPI_SPTXI(void){for( ;; ); /* sleep(); */} -// 236 SCI SCI4 ERI4 -void INT_SCI_SCI4_ERI4(void){for( ;; ); /* sleep(); */} -// 237 SCI SCI4 RXI4 -void INT_SCI_SCI4_RXI4(void){for( ;; ); /* sleep(); */} -// 238 SCI SCI4 TXI4 -void INT_SCI_SCI4_TXI4(void){for( ;; ); /* sleep(); */} -// 239 SCI SCI4 TEI4 -void INT_SCI_SCI4_TEI4(void){for( ;; ); /* sleep(); */} -// 240 SCI SCI0 ERI0 -void INT_SCI_SCI0_ERI0(void){for( ;; ); /* sleep(); */} -// 241 SCI SCI0 RXI0 -void INT_SCI_SCI0_RXI0(void){for( ;; ); /* sleep(); */} -// 242 SCI SCI0 TXI0 -void INT_SCI_SCI0_TXI0(void){for( ;; ); /* sleep(); */} -// 243 SCI SCI0 TEI0 -void INT_SCI_SCI0_TEI0(void){for( ;; ); /* sleep(); */} -// 244 SCI SCI1 ERI1 -void INT_SCI_SCI1_ERI1(void){for( ;; ); /* sleep(); */} -// 245 SCI SCI1 RXI1 -void INT_SCI_SCI1_RXI1(void){for( ;; ); /* sleep(); */} -// 246 SCI SCI1 TXI1 -void INT_SCI_SCI1_TXI1(void){for( ;; ); /* sleep(); */} -// 247 SCI SCI1 TEI1 -void INT_SCI_SCI1_TEI1(void){for( ;; ); /* sleep(); */} -// 248 SCI SCI2 ERI2 -void INT_SCI_SCI2_ERI2(void){for( ;; ); /* sleep(); */} -// 249 SCI SCI2 RXI2 -void INT_SCI_SCI2_RXI2(void){for( ;; ); /* sleep(); */} -// 250 SCI SCI2 TXI2 -void INT_SCI_SCI2_TXI2(void){for( ;; ); /* sleep(); */} -// 251 SCI SCI2 TEI2 -void INT_SCI_SCI2_TEI2(void){for( ;; ); /* sleep(); */} -// 252 SCIF SCIF3 BRI3 -void INT_SCIF_SCIF3_BRI3(void){for( ;; ); /* sleep(); */} -// 253 SCIF SCIF3 ERI3 -void INT_SCIF_SCIF3_ERI3(void){for( ;; ); /* sleep(); */} -// 254 SCIF SCIF3 RXI3 -void INT_SCIF_SCIF3_RXI3(void){for( ;; ); /* sleep(); */} -// 255 SCIF SCIF3 TXI3 -void INT_SCIF_SCIF3_TXI3(void){for( ;; ); /* sleep(); */} -// Dummy -void Dummy(void){ for( ;; ); sleep(); } - -/* End of File */ diff --git a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/iodefine.h b/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/iodefine.h deleted file mode 100644 index 2b9032979..000000000 --- a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/iodefine.h +++ /dev/null @@ -1,5006 +0,0 @@ -/****************************************************************************** -* DISCLAIMER -* -* This software is supplied by Renesas Technology Corp. and is only -* intended for use with Renesas products. No other uses are authorized. -* -* This software is owned by Renesas Technology Corp. and is protected under -* all applicable laws, including copyright laws. -* -* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES -* REGARDING THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, -* INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A -* PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY -* DISCLAIMED. -* -* TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS -* TECHNOLOGY CORP. NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE -* FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES -* FOR ANY REASON RELATED TO THE THIS SOFTWARE, EVEN IF RENESAS OR ITS -* AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. -* -* Renesas reserves the right, without notice, to make changes to this -* software and to discontinue the availability of this software. -* By using this software, you agree to the additional terms and -* conditions found by accessing the following link: -* http://www.renesas.com/disclaimer -******************************************************************************** -* Copyright (C) 2009. Renesas Technology Corp., All Rights Reserved. -*""FILE COMMENT""*********** Technical reference data ************************** -* System Name : SH7216 Sample Program -* File Name : iodefine.h -* Abstract : SH7216 IO register definition -* Version : 0.05.00 -* Device : SH7216 -* Tool-Chain : High-performance Embedded Workshop (Ver.4.05.01). -* : C/C++ compiler package for the SuperH RISC engine family -* : (Ver.9.03 Release00). -* OS : None -* H/W Platform: R0K572167 (CPU board) -* Description : -******************************************************************************** -* History : Mar.10,2009 Ver.0.05.00 -*""FILE COMMENT END""**********************************************************/ -#ifndef _IODEFINE_H_ -#define _IODEFINE_H_ - -struct st_cpg { /* struct CPG */ - union { /* FRQCR *///FFFE0010 - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short : 5; /* */ - unsigned short STC : 3; /* STC */ - unsigned short : 1; /* */ - unsigned short IFC : 3; /* IFC */ - unsigned short : 1; /* */ - unsigned short _PFC : 3; /* PFC */ - } BIT; /* */ - } FRQCR; /* */ - char wk1[10]; /* *///FFFE001C-FFFE0010-2 - union { /* OSCCR *///FFFE001C - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 5; /* */ - unsigned char OSCSTOP : 1; /* OSCSTOP */ - unsigned char : 1; /* */ - unsigned char OSCERS : 1; /* OSCERS */ - } BIT; /* */ - } OSCCR; /* */ - char wk2[1011]; /* *///FFFE0410-FFFE001C-1 - union { /* MCLKCR *///FFFE0410 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 2; /* */ - unsigned char : 4; /* */ - unsigned char MSDIVS : 2; /* MSDIVS */ - } BIT; /* */ - } MCLKCR; /* */ - char wk3[3]; /* *///FFFE0414-FFFE0410-1 - union { /* ACLKCR *///FFFE0414 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 2; /* */ - unsigned char : 4; /* */ - unsigned char ASDIVS : 2; /* ASDIVS */ - } BIT; /* */ - } ACLKCR; /* */ -}; /* */ -struct st_intc { /* struct INTC */ - union { /* ICR0 *///FFFE0800 - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short NMIL : 1; /* NMIL */ - unsigned short : 6; /* */ - unsigned short NMIE : 1; /* NMIE */ - } BIT; /* */ - } ICR0; /* */ - union { /* ICR1 *///FFFE0802 - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short IRQ7S : 2; /* IRQ7S */ - unsigned short IRQ6S : 2; /* IRQ6S */ - unsigned short IRQ5S : 2; /* IRQ5S */ - unsigned short IRQ4S : 2; /* IRQ4S */ - unsigned short IRQ3S : 2; /* IRQ3S */ - unsigned short IRQ2S : 2; /* IRQ2S */ - unsigned short IRQ1S : 2; /* IRQ1S */ - unsigned short IRQ0S : 2; /* IRQ0S */ - } BIT; /* */ - } ICR1; /* */ - char wk1[2]; /* *///FFFE0806-FFFE0802-2 - union { /* IRQRR *///FFFE0806 - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short : 8; /* */ - unsigned short IRQ7F : 1; /* IRQ7F */ - unsigned short IRQ6F : 1; /* IRQ6F */ - unsigned short IRQ5F : 1; /* IRQ5F */ - unsigned short IRQ4F : 1; /* IRQ4F */ - unsigned short IRQ3F : 1; /* IRQ3F */ - unsigned short IRQ2F : 1; /* IRQ2F */ - unsigned short IRQ1F : 1; /* IRQ1F */ - unsigned short IRQ0F : 1; /* IRQ0F */ - } BIT; /* */ - } IRQRR; /* */ - char wk2[4]; /* *///FFFE080C-FFFE0806-2 - union { /* IBCR *///FFFE080C - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short E15 : 1; /* E15 */ - unsigned short E14 : 1; /* E14 */ - unsigned short E13 : 1; /* E13 */ - unsigned short E12 : 1; /* E12 */ - unsigned short E11 : 1; /* E11 */ - unsigned short E10 : 1; /* E10 */ - unsigned short E9 : 1; /* E9 */ - unsigned short E8 : 1; /* E8 */ - unsigned short E7 : 1; /* E7 */ - unsigned short E6 : 1; /* E6 */ - unsigned short E5 : 1; /* E5 */ - unsigned short E4 : 1; /* E4 */ - unsigned short E3 : 1; /* E3 */ - unsigned short E2 : 1; /* E2 */ - unsigned short E1 : 1; /* E1 */ - } BIT; /* */ - } IBCR; /* */ - union { /* IBNR *///FFFE080E - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short BE : 2; /* BE */ - unsigned short BOVE : 1; /* BOVE */ - unsigned short : 9; /* */ - unsigned short BN : 4; /* BN */ - } BIT; /* */ - } IBNR; /* */ - char wk3[8]; /* *///FFFE0818-FFFE080C-4 - union { /* IPR01 *///FFFE0818 - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short _IRQ0 : 4; /* IRQ0 */ - unsigned short _IRQ1 : 4; /* IRQ1 */ - unsigned short _IRQ2 : 4; /* IRQ2 */ - unsigned short _IRQ3 : 4; /* IRQ3 */ - } BIT; /* */ - } IPR01; /* */ - union { /* IPR02 *///FFFE081A - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short _IRQ4 : 4; /* IRQ4 */ - unsigned short _IRQ5 : 4; /* IRQ5 */ - unsigned short _IRQ6 : 4; /* IRQ6 */ - unsigned short _IRQ7 : 4; /* IRQ7 */ - } BIT; /* */ - } IPR02; /* */ - char wk4[4]; /* *///FFFE0820-FFFE081A-2 - union { /* IPR05 *///FFFE0820 - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short : 4; /* */ - unsigned short : 4; /* */ - unsigned short _AD0 : 4; /* AD0 */ - unsigned short _AD1 : 4; /* AD1 */ - } BIT; /* */ - } IPR05; /* */ - char wk5[990]; /* *///FFFE0C00-FFFE0820-2 - union { /* IPR06 *///FFFE0C00 - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short _DMAC0 : 4; /* DMAC0 */ - unsigned short _DMAC1 : 4; /* DMAC1 */ - unsigned short _DMAC2 : 4; /* DMAC2 */ - unsigned short _DMAC3 : 4; /* DMAC3 */ - } BIT; /* */ - } IPR06; /* */ - union { /* IPR07 *///FFFE0C02 - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short _DMAC4 : 4; /* DMAC4 */ - unsigned short _DMAC5 : 4; /* DMAC5 */ - unsigned short _DMAC6 : 4; /* DMAC6 */ - unsigned short _DMAC7 : 4; /* DMAC7 */ - } BIT; /* */ - } IPR07; /* */ - union { /* IPR08 *///FFFE0C04 - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short _CMT0 : 4; /* CMT0 */ - unsigned short _CMT1 : 4; /* CMT1 */ - unsigned short _BSC : 4; /* BSC */ - unsigned short _WDT : 4; /* WDT */ - } BIT; /* */ - } IPR08; /* */ - union { /* IPR09 *///FFFE0C06 - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short _MTU20G : 4; /* MTU20 TGI */ - unsigned short _MTU20C : 4; /* MTU20 TCI */ - unsigned short _MTU21G : 4; /* MTU21 TGI */ - unsigned short _MTU21C : 4; /* MTU21 TCI */ - } BIT; /* */ - } IPR09; /* */ - union { /* IPR10 *///FFFE0C08 - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short _MTU22G : 4; /* MTU22 TGI */ - unsigned short _MTU22C : 4; /* MTU22 TCI */ - unsigned short _MTU23G : 4; /* MTU23 TGI */ - unsigned short _MTU23C : 4; /* MTU23 TCI */ - } BIT; /* */ - } IPR10; /* */ - union { /* IPR11 *///FFFE0C0A - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short _MTU24G : 4; /* MTU24 TGI */ - unsigned short _MTU24C : 4; /* MTU24 TCI */ - unsigned short _MTU25 : 4; /* MTU25 */ - unsigned short _POE2 : 4; /* POE2 */ - } BIT; /* */ - } IPR11; /* */ - union { /* IPR12 *///FFFE0C0C - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short _MTU2S3G : 4; /* MTU2S3 TGI*/ - unsigned short _MTU2S3C : 4; /* MTU2S3 TCI*/ - unsigned short _MTU2S4G : 4; /* MTU2S4 TGI*/ - unsigned short _MTU2S4C : 4; /* MTU2S4 TCI*/ - } BIT; /* */ - } IPR12; /* */ - union { /* IPR13 *///FFFE0C0E - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short _MTU2S5 : 4; /* MTU2S5 */ - unsigned short _POE2 : 4; /* POE2 */ - unsigned short _IIC3 : 4; /* IIC3 */ - } BIT; /* */ - } IPR13; /* */ - union { /* IPR14 *///FFFE0C10 - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short : 4; /* */ - unsigned short : 4; /* */ - unsigned short : 4; /* */ - unsigned short _SCIF3 : 4; /* SCIF3 */ - } BIT; /* */ - } IPR14; /* */ - union { /* IPR15 *///FFFE0C12 - unsigned short WORD; /* Word Access */ - } IPR15; /* */ - union { /* IPR16 *///FFFE0C14 - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short _SCI0 : 4; /* SCI0 */ - unsigned short _SCI1 : 4; /* SCI1 */ - unsigned short _SCI2 : 4; /* SCI2 */ - } BIT; /* */ - } IPR16; /* */ - union { /* IPR17 *///FFFE0C16 - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short _RSPI : 4; /* RSPI */ - unsigned short _SCI4 : 4; /* SCI4 */ - } BIT; /* */ - } IPR17; /* */ - union { /* IPR18 *///FFFE0C18 - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short _USB : 4; /* USB */ - unsigned short _RCAN : 4; /* RCAN */ - unsigned short _EP1FULL : 4; /* EP1FULL */ - unsigned short _EP2EMPTY : 4; /* EP2EMPTY */ - } BIT; /* */ - } IPR18; /* */ - union { /* IPR19 *///FFFE0C1A - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short _EP4FULL : 4; /* EP4FULL */ - unsigned short _EP5EMPTY : 4; /* EP5EMPTY */ - unsigned short _EDMAC : 4; /* E-DMAC */ - } BIT; /* */ - } IPR19; /* */ - char wk6[52]; /* *///FFFE0C50-FFFE0C1A-2 - union { /* USDTENDRR *///FFFE0C50 - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short _RXF0 : 1; /* RXF0 */ - unsigned short _TXF0 : 1; /* TXF0 */ - unsigned short _RXF1 : 1; /* RXF1 */ - unsigned short _TXF1 : 1; /* TXF1 */ - } BIT; /* */ - } USDTENDRR; /* */ -}; /* */ -struct st_ubc { /* struct UBC */ - union { /* BRCR *///FFFC04C0 - unsigned int LONG; /* Long Access */ - struct { /* Bit Access */ - unsigned int :14; /* */ - unsigned int CKS : 2; /* CKS */ - unsigned int SCMFC0 : 1; /* SCMFC0 */ - unsigned int SCMFC1 : 1; /* SCMFC1 */ - unsigned int SCMFC2 : 1; /* SCMFC2 */ - unsigned int SCMFC3 : 1; /* SCMFC3 */ - unsigned int SCMFD0 : 1; /* SCMFD0 */ - unsigned int SCMFD1 : 1; /* SCMFD1 */ - unsigned int SCMFD2 : 1; /* SCMFD2 */ - unsigned int SCMFD3 : 1; /* SCMFD3 */ - unsigned int PCB3 : 1; /* PCB3 */ - unsigned int PCB2 : 1; /* PCB2 */ - unsigned int PCB1 : 1; /* PCB1 */ - unsigned int PCB0 : 1; /* PCB0 */ - } BIT; /* */ - } BRCR; /* */ -}; /* */ -struct st_ubc0 { /* struct UBC0/1*///FFFC0400/FFFC0410 - void *BAR; /* BAR */ - unsigned int BAMR; /* BAMR */ - char wk1[152]; /* *///FFFC04A0-FFFC0400-8 - union { /* BBR *///FFFC04A0 - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short : 2; /* */ - unsigned short UBID : 1; /* UBID */ - unsigned short : 2; /* */ - unsigned short CP : 3; /* CP */ - unsigned short CD : 2; /* CD */ - unsigned short ID : 2; /* ID */ - unsigned short RW : 2; /* RW */ - unsigned short SZ : 2; /* SZ */ - } BIT; /* */ - } BBR; /* */ -}; /* */ -struct st_ubc2 { /* struct UBC2/3*///FFFC0420/FFFC0430 - void *BAR; /* BAR */ - unsigned int BAMR; /* BAMR */ - char wk1[124]; /* *///FFFC04A4-FFFC0424-4 - union { /* BBR *///FFFC04A4 - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short : 2; /* */ - unsigned short UBID : 1; /* UBID */ - unsigned short : 2; /* */ - unsigned short CP : 3; /* CP */ - unsigned short CD : 2; /* CD */ - unsigned short ID : 2; /* ID */ - unsigned short RW : 2; /* RW */ - unsigned short SZ : 2; /* SZ */ - } BIT; /* */ - } BBR; /* */ -}; /* */ -struct st_dtc { /* struct DTC */ - union { /* DTCERA *///FFFE6000 - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned char IRQ0 : 1; /* IRQ0 */ - unsigned char IRQ1 : 1; /* IRQ1 */ - unsigned char IRQ2 : 1; /* IRQ2 */ - unsigned char IRQ3 : 1; /* IRQ3 */ - unsigned char IRQ4 : 1; /* IRQ4 */ - unsigned char IRQ5 : 1; /* IRQ5 */ - unsigned char IRQ6 : 1; /* IRQ6 */ - unsigned char IRQ7 : 1; /* IRQ7 */ - unsigned char ADI0 : 1; /* ADI0 */ - unsigned char ADI1 : 1; /* ADI1 */ - unsigned char : 1; /* */ - unsigned char RM0 : 1; /* RM0(RCAN) */ - unsigned char CMI0 : 1; /* CMI0 */ - unsigned char CMI1 : 1; /* CMI1 */ - unsigned char USBRXI0 : 1; /* USBRXI0 *///USB EP1FULL - unsigned char USBTXI0 : 1; /* USBTXI0 *///USB EP2EMPTY - } BIT; /* */ - } DTCERA; /* */ - union { /* DTCERB *///FFFE6002 - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned char TGIA0 : 1; /* TGIA0 *///MTU2 - unsigned char TGIB0 : 1; /* TGIB0 */ - unsigned char TGIC0 : 1; /* TGIC0 */ - unsigned char TGID0 : 1; /* TGID0 */ - unsigned char TGIA1 : 1; /* TGIA1 */ - unsigned char TGIB1 : 1; /* TGIB1 */ - unsigned char TGIA2 : 1; /* TGIA2 */ - unsigned char TGIB2 : 1; /* TGIB2 */ - unsigned char TGIA3 : 1; /* TGIA3 */ - unsigned char TGIB3 : 1; /* TGIB3 */ - unsigned char TGIC3 : 1; /* TGIC3 */ - unsigned char TGID3 : 1; /* TGID3 */ - unsigned char TGIA4 : 1; /* TGIA4 */ - unsigned char TGIB4 : 1; /* TGIB4 */ - unsigned char TGIC4 : 1; /* TGIC4 */ - unsigned char TGID4 : 1; /* TGID4 */ - } BIT; /* */ - } DTCERB; /* */ - union { /* DTCERC *///FFFE6004 - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned char TCIV4 : 1; /* TCIV4 */ - unsigned char TGIU5 : 1; /* TGIU5 */ - unsigned char TGIV5 : 1; /* TGIV5 */ - unsigned char TGIW5 : 1; /* TGIW5 *///MTU2 - unsigned char : 4; /* */ - unsigned char : 4; /* */ - unsigned char TGIA3S : 1; /* TGIA3S *///MTU2S - unsigned char TGIB3S : 1; /* TGIB3S */ - unsigned char TGIC3S : 1; /* TGIC3S */ - unsigned char TGID3S : 1; /* TGID3S */ - } BIT; /* */ - } DTCERC; /* */ - union { /* DTCERD *///FFFE6006 - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned char TGIA4S : 1; /* TGIA4S */ - unsigned char TGIB4S : 1; /* TGIB4S */ - unsigned char TGIC4S : 1; /* TGIC4S */ - unsigned char TGID4S : 1; /* TGID4S */ - unsigned char TCIV4S : 1; /* TCIV4S */ - unsigned char TGIU5S : 1; /* TGIU5S */ - unsigned char TGIV5S : 1; /* TGIV5S */ - unsigned char TGIW5S : 1; /* TGIW5S *///MTU2S - unsigned char RXI : 1; /* RXI *///IIC3 - unsigned char TXI : 1; /* TXI *///IIC3 - unsigned char SPRXI : 1; /* SPRXI *///RSPI - unsigned char SPTXI : 1; /* SPTXI *///RSPI - unsigned char RXI4 : 1; /* RXI4 *///SCI4 - unsigned char TXI4 : 1; /* TXI4 *///SCI4 - } BIT; /* */ - } DTCERD; /* */ - union { /* DTCERE *///FFFE6008 - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned char RXI0 : 1; /* RXI0 *///SCI0 - unsigned char TXI0 : 1; /* TXI0 *///SCI0 - unsigned char RXI1 : 1; /* RXI1 *///SCI1 - unsigned char TXI1 : 1; /* TXI1 *///SCI1 - unsigned char RXI2 : 1; /* RXI2 *///SCI2 - unsigned char TXI2 : 1; /* TXI2 *///SCI2 - unsigned char RXI3 : 1; /* RXIF3 *///SCIF3 - unsigned char TXI3 : 1; /* TXIF3 *///SCIF3 - unsigned char USBRXI1 : 1; /* USBRXI1 *///USB EP4FULL - unsigned char USBTXI1 : 1; /* USBTXI1 *///USB EP5EMPTY - } BIT; /* */ - } DTCERE; /* */ - char wk1[6]; /* *///FFFE6010-FFFE6008-2 - union { /* DTCCR *///FFFE6010 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 3; /* */ - unsigned char RRS : 1; /* RRS */ - unsigned char RCHNE : 1; /* RCHNE */ - unsigned char : 2; /* */ - unsigned char ERR : 1; /* ERR */ - } BIT; /* */ - } DTCCR; /* */ - char wk2[3]; /* *///FFFE6014-FFFE6010-1 - unsigned int DTCVBR; /* DTCVBR *///FFFE6014 -}; /* */ -struct st_bsc { /* struct BSC */ - union { /* CMNCR *///FFFC0000 - unsigned int LONG; /* Long Access */ - struct { /* Bit Access */ - unsigned int :20; /* */ - unsigned int BLOCK : 1; /* BLOCK */ - unsigned int DPRTY : 2; /* DPRTY */ - unsigned int DMAIW : 3; /* DMAIW */ - unsigned int DMAIWA : 1; /* DMAIWA */ - unsigned int : 2; /* */ - unsigned int HIZCKIO : 1; /* HIZCKIO */ - unsigned int HIZMEM : 1; /* HIZMEM */ - unsigned int HIZCNT : 1; /* HIZCNT */ - } BIT; /* */ - } CMNCR; /* */ - union { /* CS0BCR *///FFFC0004 - unsigned int LONG; /* Long Access */ - struct { /* Bit Access */ - unsigned int : 1; /* */ - unsigned int IWW : 3; /* IWW */ - unsigned int IWRWD : 3; /* IWRWD */ - unsigned int IWRWS : 3; /* IWRWS */ - unsigned int IWRRD : 3; /* IWRRD */ - unsigned int IWRRS : 3; /* IWRRS */ - unsigned int : 1; /* */ - unsigned int TYPE : 3; /* TYPE */ - unsigned int ENDIAN : 1; /* ENDIAN */ - unsigned int BSZ : 2; /* BSZ */ - } BIT; /* */ - } CS0BCR; /* */ - union { /* CS1BCR *///FFFC0008 - unsigned int LONG; /* Long Access */ - struct { /* Bit Access */ - unsigned int : 1; /* */ - unsigned int IWW : 3; /* IWW */ - unsigned int IWRWD : 3; /* IWRWD */ - unsigned int IWRWS : 3; /* IWRWS */ - unsigned int IWRRD : 3; /* IWRRD */ - unsigned int IWRRS : 3; /* IWRRS */ - unsigned int : 1; /* */ - unsigned int TYPE : 3; /* TYPE */ - unsigned int ENDIAN : 1; /* ENDIAN */ - unsigned int BSZ : 2; /* BSZ */ - } BIT; /* */ - } CS1BCR; /* */ - union { /* CS2BCR *///FFFC000C - unsigned int LONG; /* Long Access */ - struct { /* Bit Access */ - unsigned int : 1; /* */ - unsigned int IWW : 3; /* IWW */ - unsigned int IWRWD : 3; /* IWRWD */ - unsigned int IWRWS : 3; /* IWRWS */ - unsigned int IWRRD : 3; /* IWRRD */ - unsigned int IWRRS : 3; /* IWRRS */ - unsigned int : 1; /* */ - unsigned int TYPE : 3; /* TYPE */ - unsigned int ENDIAN : 1; /* ENDIAN */ - unsigned int BSZ : 2; /* BSZ */ - } BIT; /* */ - } CS2BCR; /* */ - union { /* CS3BCR *///FFFC0010 - unsigned int LONG; /* Long Access */ - struct { /* Bit Access */ - unsigned int : 1; /* */ - unsigned int IWW : 3; /* IWW */ - unsigned int IWRWD : 3; /* IWRWD */ - unsigned int IWRWS : 3; /* IWRWS */ - unsigned int IWRRD : 3; /* IWRRD */ - unsigned int IWRRS : 3; /* IWRRS */ - unsigned int : 1; /* */ - unsigned int TYPE : 3; /* TYPE */ - unsigned int ENDIAN : 1; /* ENDIAN */ - unsigned int BSZ : 2; /* BSZ */ - } BIT; /* */ - } CS3BCR; /* */ - union { /* CS4BCR *///FFFC0014 - unsigned int LONG; /* Long Access */ - struct { /* Bit Access */ - unsigned int : 1; /* */ - unsigned int IWW : 3; /* IWW */ - unsigned int IWRWD : 3; /* IWRWD */ - unsigned int IWRWS : 3; /* IWRWS */ - unsigned int IWRRD : 3; /* IWRRD */ - unsigned int IWRRS : 3; /* IWRRS */ - unsigned int : 1; /* */ - unsigned int TYPE : 3; /* TYPE */ - unsigned int ENDIAN : 1; /* ENDIAN */ - unsigned int BSZ : 2; /* BSZ */ - } BIT; /* */ - } CS4BCR; /* */ - union { /* CS5BCR *///FFFC0018 - unsigned int LONG; /* Long Access */ - struct { /* Bit Access */ - unsigned int : 1; /* */ - unsigned int IWW : 3; /* IWW */ - unsigned int IWRWD : 3; /* IWRWD */ - unsigned int IWRWS : 3; /* IWRWS */ - unsigned int IWRRD : 3; /* IWRRD */ - unsigned int IWRRS : 3; /* IWRRS */ - unsigned int : 1; /* */ - unsigned int TYPE : 3; /* TYPE */ - unsigned int ENDIAN : 1; /* ENDIAN */ - unsigned int BSZ : 2; /* BSZ */ - } BIT; /* */ - } CS5BCR; /* */ - union { /* CS6BCR *///FFFC001C - unsigned int LONG; /* Long Access */ - struct { /* Bit Access */ - unsigned int : 1; /* */ - unsigned int IWW : 3; /* IWW */ - unsigned int IWRWD : 3; /* IWRWD */ - unsigned int IWRWS : 3; /* IWRWS */ - unsigned int IWRRD : 3; /* IWRRD */ - unsigned int IWRRS : 3; /* IWRRS */ - unsigned int : 1; /* */ - unsigned int TYPE : 3; /* TYPE */ - unsigned int ENDIAN : 1; /* ENDIAN */ - unsigned int BSZ : 2; /* BSZ */ - } BIT; /* */ - } CS6BCR; /* */ - union { /* CS7BCR *///FFFC0020 - unsigned int LONG; /* Long Access */ - struct { /* Bit Access */ - unsigned int : 1; /* */ - unsigned int IWW : 3; /* IWW */ - unsigned int IWRWD : 3; /* IWRWD */ - unsigned int IWRWS : 3; /* IWRWS */ - unsigned int IWRRD : 3; /* IWRRD */ - unsigned int IWRRS : 3; /* IWRRS */ - unsigned int : 1; /* */ - unsigned int TYPE : 3; /* TYPE */ - unsigned int ENDIAN : 1; /* ENDIAN */ - unsigned int BSZ : 2; /* BSZ */ - } BIT; /* */ - } CS7BCR; /* */ - char wk1[4]; /* *///FFFC0028-FFFC0020-4 - unsigned int CS0WCR; /* CS0WCR *///FFFC0028 - unsigned int CS1WCR; /* CS1WCR *///FFFC002C - unsigned int CS2WCR; /* CS2WCR *///FFFC0030 - unsigned int CS3WCR; /* CS3WCR *///FFFC0034 - unsigned int CS4WCR; /* CS4WCR *///FFFC0038 - unsigned int CS5WCR; /* CS5WCR *///FFFC003C - unsigned int CS6WCR; /* CS6WCR *///FFFC0040 - unsigned int CS7WCR; /* CS7WCR *///FFFC0044 - char wk2[4]; /* *///FFFC004C-FFFC0044-4 - union { /* SDCR *///FFFC004C - unsigned int LONG; /* Long Access */ - struct { /* Bit Access */ - unsigned int :11; /* */ - unsigned int A2ROW : 2; /* A2ROW */ - unsigned int : 1; /* */ - unsigned int A2COL : 2; /* A2COL */ - unsigned int : 2; /* */ - unsigned int DEEP : 1; /* DEEP */ - unsigned int SLOW : 1; /* SLOW */ - unsigned int RFSH : 1; /* RFSH */ - unsigned int RMODE : 1; /* RMODE */ - unsigned int PDOWN : 1; /* PDOWN */ - unsigned int BACTV : 1; /* BACTV */ - unsigned int : 3; /* */ - unsigned int A3ROW : 2; /* A3ROW */ - unsigned int : 1; /* */ - unsigned int A3COL : 2; /* A3COL */ - } BIT; /* */ - } SDCR; /* */ - union { /* RTCSR *///FFFC0050 - unsigned int LONG; /* Long Access */ - struct { /* Bit Access */ - unsigned int :24; /* */ - unsigned int CMF : 1; /* CMF */ - unsigned int CMIE : 1; /* CMIE */ - unsigned int CKS : 3; /* CKS */ - unsigned int RRC : 3; /* RRC */ - } BIT; /* */ - } RTCSR; /* */ - unsigned int RTCNT; /* RTCNT *///FFFC0054 - unsigned int RTCOR; /* RTCOR *///FFFC0058 - char wk3[146366]; /* *///FFFE3C1A-FFFC0058-4 - union { /* BSCEHR *///FFFE3C1A - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short DTLOCK : 1; /* DTLOCK */ - unsigned short : 3; /* */ - unsigned short DTBST : 1; /* DTBST */ - unsigned short DTSA : 1; /* DTSA */ - unsigned short : 1; /* */ - unsigned short DTPR : 1; /* DTPR */ - } BIT; /* */ - } BSCEHR; /* */ -}; /* */ -struct st_dmac { /* struct DMAC */ - union { /* DMAOR *///FFFE1200 - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned char : 2; /* */ - unsigned char CMS : 2; /* CMS */ - unsigned char : 2; /* */ - unsigned char PR : 2; /* PR */ - unsigned char : 5; /* */ - unsigned char AE : 1; /* AE */ - unsigned char NMIF : 1; /* NMIF */ - unsigned char DME : 1; /* DME */ - } BIT; /* */ - } DMAOR; /* */ - char wk1[254]; /* *///FFFE1300-FFFE1200-2 - union { /* DMARS0 *///FFFE1300 - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short C1MID : 6; /* C1MID */ - unsigned short C1RID : 2; /* C1RID */ - unsigned short C0MID : 6; /* C0MID */ - unsigned short C0RID : 2; /* C0RID */ - } BIT; /* */ - } DMARS0; /* */ - char wk2[2]; /* *///FFFE1304-FFFE1300-2 - union { /* DMARS1 *///FFFE1304 - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short C3MID : 6; /* C3MID */ - unsigned short C3RID : 2; /* C3RID */ - unsigned short C2MID : 6; /* C2MID */ - unsigned short C2RID : 2; /* C2RID */ - } BIT; /* */ - } DMARS1; /* */ - char wk3[2]; /* *///FFFE1308-FFFE1304-2 - union { /* DMARS2 *///FFFE1308 - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short C5MID : 6; /* C5MID */ - unsigned short C5RID : 2; /* C5RID */ - unsigned short C4MID : 6; /* C4MID */ - unsigned short C4RID : 2; /* C4RID */ - } BIT; /* */ - } DMARS2; /* */ - char wk4[2]; /* *///FFFE130C-FFFE1308-2 - union { /* DMARS3 *///FFFE130C - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short C7MID : 6; /* C7MID */ - unsigned short C7RID : 2; /* C7RID */ - unsigned short C6MID : 6; /* C6MID */ - unsigned short C6RID : 2; /* C6RID */ - } BIT; /* */ - } DMARS3; /* */ -}; /* */ -struct st_dmac0 { /* struct DMAC0 *///FFFE1000 - /* struct DMAC1 *///FFFE1010 - void *SAR; /* SAR *///FFFE1000 - void *DAR; /* DAR *///FFFE1004 - unsigned int DMATCR; /* DMATCR *///FFFE1008 - union { /* CHCR *///FFFE100C - unsigned int LONG; /* Long Access */ - struct { /* Word Access */ - unsigned short H; /* High Word */ - unsigned short L; /* Low Word */ - } WORD; /* */ - struct { /* Bit Access */ - unsigned char TC : 1; /* TC */ - unsigned char : 2; /* */ - unsigned char RLD : 1; /* RLD */ - unsigned char : 4; /* */ - unsigned char DO : 1; /* DO */ - unsigned char TL : 1; /* TL */ - unsigned char : 2; /* */ - unsigned char HE : 1; /* HE */ - unsigned char HIE : 1; /* HIE */ - unsigned char AM : 1; /* AM */ - unsigned char AL : 1; /* AL */ - unsigned char DM : 2; /* DM */ - unsigned char SM : 2; /* SM */ - unsigned char RS : 4; /* RS */ - unsigned char DL : 1; /* DL */ - unsigned char DS : 1; /* DS */ - unsigned char TB : 1; /* TB */ - unsigned char TS : 2; /* TS */ - unsigned char IE : 1; /* IE */ - unsigned char TE : 1; /* TE */ - unsigned char DE : 1; /* DE */ - } BIT; /* */ - } CHCR; /* */ - char wk1[240]; /* *///FFFE1100-FFFE100C-4 - void *RSAR; /* RSAR *///FFFE1100 - void *RDAR; /* RDAR *///FFFE1104 - unsigned int RDMATCR; /* RDMATCR *///FFFE1108 -}; /* */ -struct st_dmac2 { /* struct DMAC2 *///FFFE1020 - /* struct DMAC3 *///FFFE1030 - void *SAR; /* SAR *///FFFE1020 - void *DAR; /* DAR *///FFFE1024 - unsigned int DMATCR; /* DMATCR *///FFFE1028 - union { /* CHCR *///FFFE102C - unsigned int LONG; /* Long Access */ - struct { /* Word Access */ - unsigned short H; /* High Word */ - unsigned short L; /* Low Word */ - } WORD; /* */ - struct { /* Bit Access */ - unsigned char TC : 1; /* TC */ - unsigned char : 2; /* */ - unsigned char RLD : 1; /* RLD */ - unsigned char : 4; /* */ - unsigned char DO : 1; /* DO */ - unsigned char : 3; /* */ - unsigned char HE : 1; /* HE */ - unsigned char HIE : 1; /* HIE */ - unsigned char AM : 1; /* AM */ - unsigned char AL : 1; /* AL */ - unsigned char DM : 2; /* DM */ - unsigned char SM : 2; /* SM */ - unsigned char RS : 4; /* RS */ - unsigned char DL : 1; /* DL */ - unsigned char DS : 1; /* DS */ - unsigned char TB : 1; /* TB */ - unsigned char TS : 2; /* TS */ - unsigned char IE : 1; /* IE */ - unsigned char TE : 1; /* TE */ - unsigned char DE : 1; /* DE */ - } BIT; /* */ - } CHCR; /* */ - char wk1[240]; /* *///FFFE1120-FFFE102C-4 - void *RSAR; /* RSAR *///FFFE1120 - void *RDAR; /* RDAR *///FFFE1124 - unsigned int RDMATCR; /* RDMATCR *///FFFE1128 -}; /* */ -struct st_dmac4 { /* struct DMAC4 *///FFFE1040 - /* struct DMAC5 *///FFFE1050 - /* struct DMAC6 *///FFFE1060 - /* struct DMAC7 *///FFFE1070 - void *SAR; /* SAR *///FFFE1040 - void *DAR; /* DAR *///FFFE1044 - unsigned int DMATCR; /* DMATCR *///FFFE1048 - union { /* CHCR *///FFFE104C - unsigned int LONG; /* Long Access */ - struct { /* Word Access */ - unsigned short H; /* High Word */ - unsigned short L; /* Low Word */ - } WORD; /* */ - struct { /* Bit Access */ - unsigned char TC : 1; /* TC */ - unsigned char : 2; /* */ - unsigned char RLD : 1; /* RLD */ - unsigned char : 4; /* */ - unsigned char : 4; /* */ - unsigned char HE : 1; /* HE */ - unsigned char HIE : 1; /* HIE */ - unsigned char : 2; /* */ - unsigned char DM : 2; /* DM */ - unsigned char SM : 2; /* SM */ - unsigned char RS : 4; /* RS */ - unsigned char : 2; /* */ - unsigned char TB : 1; /* TB */ - unsigned char TS : 2; /* TS */ - unsigned char IE : 1; /* IE */ - unsigned char TE : 1; /* TE */ - unsigned char DE : 1; /* DE */ - } BIT; /* */ - } CHCR; /* */ - char wk1[240]; /* *///FFFE1140-FFFE104C-4 - void *RSAR; /* RSAR *///FFFE1140 - void *RDAR; /* RDAR *///FFFE1144 - unsigned int RDMATCR; /* RDMATCR *///FFFE1148 -}; /* */ -struct st_mtu2 { /* struct MTU2 */ - union { /* TOER *///FFFE420A - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 2; /* */ - unsigned char OE4D : 1; /* OE4D */ - unsigned char OE4C : 1; /* OE4C */ - unsigned char OE3D : 1; /* OE3D */ - unsigned char OE4B : 1; /* OE4B */ - unsigned char OE4A : 1; /* OE4A */ - unsigned char OE3B : 1; /* OE3B */ - } BIT; /* */ - } TOER; /* */ - char wk1[2]; /* *///FFFE420D-FFFE420A-1 - union { /* TGCR *///FFFE420D - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 1; /* */ - unsigned char BDC : 1; /* BDC */ - unsigned char N : 1; /* N */ - unsigned char P : 1; /* P */ - unsigned char FB : 1; /* FB */ - unsigned char WF : 1; /* WF */ - unsigned char VF : 1; /* VF */ - unsigned char UF : 1; /* UF */ - } BIT; /* */ - } TGCR; /* */ - union { /* TOCR1 *///FFFE420E - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 1; /* */ - unsigned char PSYE : 1; /* PSYE */ - unsigned char : 2; /* */ - unsigned char TOCL : 1; /* TOCL */ - unsigned char TOCS : 1; /* TOCS */ - unsigned char OLSN : 1; /* OLSN */ - unsigned char OLSP : 1; /* OLSP */ - } BIT; /* */ - } TOCR1; /* */ - union { /* TOCR2 *///FFFE420F - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char BF : 2; /* BF */ - unsigned char OLS3N : 1; /* OLS3N */ - unsigned char OLS3P : 1; /* OLS3P */ - unsigned char OLS2N : 1; /* OLS2N */ - unsigned char OLS2P : 1; /* OLS2P */ - unsigned char OLS1N : 1; /* OLS1N */ - unsigned char OLS1P : 1; /* OLS1P */ - } BIT; /* */ - } TOCR2; /* */ - char wk2[4]; /* *///FFFE4214-FFFE420F-1 - unsigned short TCDR; /* TCDR *///FFFE4214 - unsigned short TDDR; /* TDDR *///FFFE4216 - char wk3[8]; /* *///FFFE4220-FFFE4216-2 - unsigned short TCNTS; /* TCNTS *///FFFE4220 - unsigned short TCBR; /* TCBR *///FFFE4222 - char wk4[12]; /* *///FFFE4230-FFFE4222-2 - union { /* TITCR *///FFFE4230 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char T3AEN : 1; /* T3AEN */ - unsigned char T3ACOR : 3; /* T3ACOR */ - unsigned char T4VEN : 1; /* T4VEN */ - unsigned char T4VCOR : 3; /* T4VCOR */ - } BIT; /* */ - } TITCR; /* */ - union { /* TITCNT *///FFFE4231 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 1; /* */ - unsigned char T3ACNT : 3; /* T3ACNT */ - unsigned char : 1; /* */ - unsigned char T4VCNT : 3; /* T4VCNT */ - } BIT; /* */ - } TITCNT; /* */ - union { /* TBTER *///FFFE4232 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 6; /* */ - unsigned char BTE : 2; /* BTE */ - } BIT; /* */ - } TBTER; /* */ - char wk5[1]; /* *///FFFE4234-FFFE4232-1 - union { /* TDER *///FFFE4234 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 7; /* */ - unsigned char TDER : 1; /* TDER */ - } BIT; /* */ - } TDER; /* */ - char wk6[1]; /* *///FFFE4236-FFFE4234-1 - union { /* TOLBR *///FFFE4236 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 2; /* */ - unsigned char OLS3N : 1; /* OLS3N */ - unsigned char OLS3P : 1; /* OLS3P */ - unsigned char OLS2N : 1; /* OLS2N */ - unsigned char OLS2P : 1; /* OLS2P */ - unsigned char OLS1N : 1; /* OLS1N */ - unsigned char OLS1P : 1; /* OLS1P */ - } BIT; /* */ - } TOLBR; /* */ - char wk7[41]; /* *///FFFE4260-FFFE4236-1 - union { /* TWCR *///FFFE4260 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char CCE : 1; /* CCE */ - unsigned char : 5; /* */ - unsigned char : 1; /* */ - unsigned char WRE : 1; /* WRE */ - } BIT; /* */ - } TWCR; /* */ - char wk8[31]; /* *///FFFE4280-FFFE4260-1 - union { /* TSTR *///FFFE4280 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char CST4 : 1; /* CST4 */ - unsigned char CST3 : 1; /* CST3 */ - unsigned char : 3; /* */ - unsigned char CST2 : 1; /* CST2 */ - unsigned char CST1 : 1; /* CST1 */ - unsigned char CST0 : 1; /* CST0 */ - } BIT; /* */ - } TSTR; /* */ - union { /* TSYR *///FFFE4281 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char SYNC4 : 1; /* SYNC4 */ - unsigned char SYNC3 : 1; /* SYNC3 */ - unsigned char : 3; /* */ - unsigned char SYNC2 : 1; /* SYNC2 */ - unsigned char SYNC1 : 1; /* SYNC1 */ - unsigned char SYNC0 : 1; /* SYNC0 */ - } BIT; /* */ - } TSYR; /* */ - union { /* TCSYSTR *///FFFE4282 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char SCH0 : 1; /* SCH0 */ - unsigned char SCH1 : 1; /* SCH1 */ - unsigned char SCH2 : 1; /* SCH2 */ - unsigned char SCH3 : 1; /* SCH3 */ - unsigned char SCH4 : 1; /* SCH4 */ - unsigned char : 1; /* */ - unsigned char SCH3S : 1; /* SCH3S */ - unsigned char SCH4S : 1; /* SCH4S */ - } BIT; /* */ - } TCSYSTR; /* */ - char wk9[1]; /* *///FFFE4284-FFFE4282-1 - union { /* TRWER *///FFFE4284 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 7; /* */ - unsigned char RWE : 1; /* RWE */ - } BIT; /* */ - } TRWER; /* */ -}; /* */ -struct st_mtu20 { /* struct MTU20 */ - union { /* TCR *///FFFE4300 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char CCLR : 3; /* CCLR */ - unsigned char CKEG : 2; /* CKEG */ - unsigned char TPSC : 3; /* TPSC */ - } BIT; /* */ - } TCR; /* */ - union { /* TMDR *///FFFE4301 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 1; /* */ - unsigned char BFE : 1; /* BFE */ - unsigned char BFB : 1; /* BFB */ - unsigned char BFA : 1; /* BFA */ - unsigned char MD : 4; /* MD */ - } BIT; /* */ - } TMDR; /* */ - union { /* TIOR *///FFFE4302 - unsigned short WORD; /* Word Access */ - struct { /* Byte Access */ - unsigned char H; /* TIORH */ - unsigned char L; /* TIORL */ - } BYTE; /* */ - struct { /* Bit Access */ - unsigned char IOB : 4; /* IOB */ - unsigned char IOA : 4; /* IOA */ - unsigned char IOD : 4; /* IOD */ - unsigned char IOC : 4; /* IOC */ - } BIT; /* */ - } TIOR; /* */ - union { /* TIER *///FFFE4304 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char TTGE : 1; /* TTGE */ - unsigned char : 2; /* */ - unsigned char TCIEV : 1; /* TCIEV */ - unsigned char TGIED : 1; /* TGIED */ - unsigned char TGIEC : 1; /* TGIEC */ - unsigned char TGIEB : 1; /* TGIEB */ - unsigned char TGIEA : 1; /* TGIEA */ - } BIT; /* */ - } TIER; /* */ - union { /* TSR *///FFFE4305 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 3; /* */ - unsigned char TCFV : 1; /* TCFV */ - unsigned char TGFD : 1; /* TGFD */ - unsigned char TGFC : 1; /* TGFC */ - unsigned char TGFB : 1; /* TGFB */ - unsigned char TGFA : 1; /* TGFA */ - } BIT; /* */ - } TSR; /* */ - unsigned short TCNT; /* TCNT *///FFFE4306 - unsigned short TGRA; /* TGRA *///FFFE4308 - unsigned short TGRB; /* TGRB *///FFFE430A - unsigned short TGRC; /* TGRC *///FFFE430C - unsigned short TGRD; /* TGRD *///FFFE430E - char wk1[16]; /* *///FFFE4320-FFFE430E-2 - unsigned short TGRE; /* TGRE *///FFFE4320 - unsigned short TGRF; /* TGRF *///FFFE4322 - union { /* TIER2 *///FFFE4324 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char TTGE2 : 1; /* TTGE2 */ - unsigned char : 5; /* */ - unsigned char TGIEF : 1; /* TGIEF */ - unsigned char TGIEE : 1; /* TGIEE */ - } BIT; /* */ - } TIER2; /* */ - union { /* TSR2 *///FFFE4325 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 6; /* */ - unsigned char TGFF : 1; /* TGFF */ - unsigned char TGFE : 1; /* TGFE */ - } BIT; /* */ - } TSR2; /* */ - union { /* TBTM *///FFFE4326 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 5; /* */ - unsigned char TTSE : 1; /* TTSE */ - unsigned char TTSB : 1; /* TTSB */ - unsigned char TTSA : 1; /* TTSA */ - } BIT; /* */ - } TBTM; /* */ -}; /* */ -struct st_mtu21 { /* struct MTU21 */ - union { /* TCR *///FFFE4380 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 1; /* */ - unsigned char CCLR : 2; /* CCLR */ - unsigned char CKEG : 2; /* CKEG */ - unsigned char TPSC : 3; /* TPSC */ - } BIT; /* */ - } TCR; /* */ - union { /* TMDR *///FFFE4381 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 4; /* */ - unsigned char MD : 4; /* MD */ - } BIT; /* */ - } TMDR; /* */ - union { /* TIOR *///FFFE4382 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char IOB : 4; /* IOB */ - unsigned char IOA : 4; /* IOA */ - } BIT; /* */ - } TIOR; /* */ - char wk1[1]; /* *///FFFE4384-FFFE4382-1 - union { /* TIER *///FFFE4384 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char TTGE : 1; /* TTGE */ - unsigned char : 1; /* */ - unsigned char TCIEU : 1; /* TCIEU */ - unsigned char TCIEV : 1; /* TCIEV */ - unsigned char : 2; /* */ - unsigned char TGIEB : 1; /* TGIEB */ - unsigned char TGIEA : 1; /* TGIEA */ - } BIT; /* */ - } TIER; /* */ - union { /* TSR *///FFFE4385 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char TCFD : 1; /* TCFD */ - unsigned char : 1; /* */ - unsigned char TCFU : 1; /* TCFU */ - unsigned char TCFV : 1; /* TCFV */ - unsigned char : 2; /* */ - unsigned char TGFB : 1; /* TGFB */ - unsigned char TGFA : 1; /* TGFA */ - } BIT; /* */ - } TSR; /* */ - unsigned short TCNT; /* TCNT *///FFFE4386 - unsigned short TGRA; /* TGRA *///FFFE4388 - unsigned short TGRB; /* TGRB *///FFFE438A - char wk2[4]; /* *///FFFE4390-FFFE438A-2 - union { /* TICCR *///FFFE4390 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 4; /* */ - unsigned char I2BE : 1; /* I2BE */ - unsigned char I2AE : 1; /* I2AE */ - unsigned char I1BE : 1; /* I1BE */ - unsigned char I1AE : 1; /* I1AE */ - } BIT; /* */ - } TICCR; /* */ -}; /* */ -struct st_mtu22 { /* struct MTU22 */ - union { /* TCR *///FFFE4000 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 1; /* */ - unsigned char CCLR : 2; /* CCLR */ - unsigned char CKEG : 2; /* CKEG */ - unsigned char TPSC : 3; /* TPSC */ - } BIT; /* */ - } TCR; /* */ - union { /* TMDR *///FFFE4001 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 4; /* */ - unsigned char MD : 4; /* MD */ - } BIT; /* */ - } TMDR; /* */ - union { /* TIOR *///FFFE4002 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char IOB : 4; /* IOB */ - unsigned char IOA : 4; /* IOA */ - } BIT; /* */ - } TIOR; /* */ - char wk1[1]; /* *///FFFE4004-FFFE4002-1 - union { /* TIER *///FFFE4004 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char TTGE : 1; /* TTGE */ - unsigned char : 1; /* */ - unsigned char TCIEU : 1; /* TCIEU */ - unsigned char TCIEV : 1; /* TCIEV */ - unsigned char : 2; /* */ - unsigned char TGIEB : 1; /* TGIEB */ - unsigned char TGIEA : 1; /* TGIEA */ - } BIT; /* */ - } TIER; /* */ - union { /* TSR *///FFFE4005 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char TCFD : 1; /* TCFD */ - unsigned char : 1; /* */ - unsigned char TCFU : 1; /* TCFU */ - unsigned char TCFV : 1; /* TCFV */ - unsigned char : 2; /* */ - unsigned char TGFB : 1; /* TGFB */ - unsigned char TGFA : 1; /* TGFA */ - } BIT; /* */ - } TSR; /* */ - unsigned short TCNT; /* TCNT *///FFFE4006 - unsigned short TGRA; /* TGRA *///FFFE4008 - unsigned short TGRB; /* TGRB *///FFFE400A -}; /* */ -struct st_mtu23 { /* struct MTU23 */ - union { /* TCR *///FFFE4200 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char CCLR : 3; /* CCLR */ - unsigned char CKEG : 2; /* CKEG */ - unsigned char TPSC : 3; /* TPSC */ - } BIT; /* */ - } TCR; /* */ - char wk1[1]; /* *///FFFE4202-FFFE4200-1 - union { /* TMDR *///FFFE4202 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 2; /* */ - unsigned char BFB : 1; /* BFB */ - unsigned char BFA : 1; /* BFA */ - unsigned char MD : 4; /* MD */ - } BIT; /* */ - } TMDR; /* */ - char wk2[1]; /* *///FFFE4204-FFFE4202-1 - union { /* TIOR *///FFFE4204 - unsigned short WORD; /* Word Access */ - struct { /* Byte Access */ - unsigned char H; /* TIORH */ - unsigned char L; /* TIORL */ - } BYTE; /* */ - struct { /* Bit Access */ - unsigned char IOB : 4; /* IOB */ - unsigned char IOA : 4; /* IOA */ - unsigned char IOD : 4; /* IOD */ - unsigned char IOC : 4; /* IOC */ - } BIT; /* */ - } TIOR; /* */ - char wk3[2]; /* *///FFFE4208-FFFE4204-2 - union { /* TIER *///FFFE4208 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char TTGE : 1; /* TTGE */ - unsigned char : 2; /* */ - unsigned char TCIEV : 1; /* TCIEV */ - unsigned char TGIED : 1; /* TGIED */ - unsigned char TGIEC : 1; /* TGIEC */ - unsigned char TGIEB : 1; /* TGIEB */ - unsigned char TGIEA : 1; /* TGIEA */ - } BIT; /* */ - } TIER; /* */ - char wk4[7]; /* *///FFFE4210-FFFE4208-1 - unsigned short TCNT; /* TCNT *///FFFE4210 - char wk5[6]; /* *///FFFE4218-FFFE4210-2 - unsigned short TGRA; /* TGRA *///FFFE4218 - unsigned short TGRB; /* TGRB *///FFFE421A - char wk6[8]; /* *///FFFE4224-FFFE421A-2 - unsigned short TGRC; /* TGRC *///FFFE4224 - unsigned short TGRD; /* TGRD *///FFFE4226 - char wk7[4]; /* *///FFFE422C-FFFE4226-2 - union { /* TSR *///FFFE422C - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char TCFD : 1; /* TCFD */ - unsigned char : 2; /* */ - unsigned char TCFV : 1; /* TCFV */ - unsigned char TGFD : 1; /* TGFD */ - unsigned char TGFC : 1; /* TGFC */ - unsigned char TGFB : 1; /* TGFB */ - unsigned char TGFA : 1; /* TGFA */ - } BIT; /* */ - } TSR; /* */ - char wk8[11]; /* *///FFFE4238-FFFE422C-1 - union { /* TBTM *///FFFE4238 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 6; /* */ - unsigned char TTSB : 1; /* TTSB */ - unsigned char TTSA : 1; /* TTSA */ - } BIT; /* */ - } TBTM; /* */ -}; /* */ -struct st_mtu24 { /* struct MTU24 */ - char wk1[1]; /* *///FFFE4200 - union { /* TCR *///FFFE4201 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char CCLR : 3; /* CCLR */ - unsigned char CKEG : 2; /* CKEG */ - unsigned char TPSC : 3; /* TPSC */ - } BIT; /* */ - } TCR; /* */ - char wk2[1]; /* *///FFFE4203-FFFE4201-1 - union { /* TMDR *///FFFE4203 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 2; /* */ - unsigned char BFB : 1; /* BFB */ - unsigned char BFA : 1; /* BFA */ - unsigned char MD : 4; /* MD */ - } BIT; /* */ - } TMDR; /* */ - char wk3[2]; /* *///FFFE4206-FFFE4203-1 - union { /* TIOR *///FFFE4206 - unsigned short WORD; /* Word Access */ - struct { /* Byte Access */ - unsigned char H; /* TIORH */ - unsigned char L; /* TIORL */ - } BYTE; /* */ - struct { /* Bit Access */ - unsigned char IOB : 4; /* IOB */ - unsigned char IOA : 4; /* IOA */ - unsigned char IOD : 4; /* IOD */ - unsigned char IOC : 4; /* IOC */ - } BIT; /* */ - } TIOR; /* */ - char wk4[1]; /* *///FFFE4209-FFFE4206-2 - union { /* TIER *///FFFE4209 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char TTGE : 1; /* TTGE */ - unsigned char TTGE2 : 1; /* TTGE2 */ - unsigned char : 1; /* */ - unsigned char TCIEV : 1; /* TCIEV */ - unsigned char TGIED : 1; /* TGIED */ - unsigned char TGIEC : 1; /* TGIEC */ - unsigned char TGIEB : 1; /* TGIEB */ - unsigned char TGIEA : 1; /* TGIEA */ - } BIT; /* */ - } TIER; /* */ - char wk5[8]; /* *///FFFE4212-FFFE4209-1 - unsigned short TCNT; /* TCNT *///FFFE4212 - char wk6[8]; /* *///FFFE421C-FFFE4212-2 - unsigned short TGRA; /* TGRA *///FFFE421C - unsigned short TGRB; /* TGRB *///FFFE421E - char wk7[8]; /* *///FFFE4228-FFFE421E-2 - unsigned short TGRC; /* TGRC *///FFFE4228 - unsigned short TGRD; /* TGRD *///FFFE422A - char wk8[1]; /* *///FFFE422D-FFFE422A-2 - union { /* TSR *///FFFE422D - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char TCFD : 1; /* TCFD */ - unsigned char : 2; /* */ - unsigned char TCFV : 1; /* TCFV */ - unsigned char TGFD : 1; /* TGFD */ - unsigned char TGFC : 1; /* TGFC */ - unsigned char TGFB : 1; /* TGFB */ - unsigned char TGFA : 1; /* TGFA */ - } BIT; /* */ - } TSR; /* */ - char wk9[11]; /* *///FFFE4239-FFFE422D-1 - union { /* TBTM *///FFFE4239 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 6; /* */ - unsigned char TTSB : 1; /* TTSB */ - unsigned char TTSA : 1; /* TTSA */ - } BIT; /* */ - } TBTM; /* */ - char wk10[6]; /* *///FFFE4240-FFFE4239-1 - union { /* TADCR *///FFFE4240 - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short BF : 2; /* BF */ - unsigned short : 6; /* */ - unsigned short UT4AE : 1; /* UT4AE */ - unsigned short DT4AE : 1; /* DT4AE */ - unsigned short UT4BE : 1; /* UT4BE */ - unsigned short DT4BE : 1; /* DT4BE */ - unsigned short ITA3AE : 1; /* ITA3AE */ - unsigned short ITA4VE : 1; /* ITA4VE */ - unsigned short ITB3AE : 1; /* ITB3AE */ - unsigned short ITB4VE : 1; /* ITB4VE */ - } BIT; /* */ - } TADCR; /* */ - char wk11[2]; /* *///FFFE4244-FFFE4240-2 - unsigned short TADCORA; /* TADCORA *///FFFE4244 - unsigned short TADCORB; /* TADCORB *///FFFE4246 - unsigned short TADCOBRA; /* TADCOBRA *///FFFE4248 - unsigned short TADCOBRB; /* TADCOBRB *///FFFE424A -}; /* */ -struct st_mtu25 { /* struct MTU25 */ - unsigned short TCNTU; /* TCNTU *///FFFE4080 - unsigned short TGRU; /* TGRU *///FFFE4082 - union { /* TCRU *///FFFE4084 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 6; /* */ - unsigned char TPSC : 2; /* TPSC */ - } BIT; /* */ - } TCRU; /* */ - char wk1[1]; /* *///FFFE4086-FFFE4084-1 - union { /* TIORU *///FFFE4086 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 3; /* */ - unsigned char IOC : 5; /* IOC */ - } BIT; /* */ - } TIORU; /* */ - char wk2[9]; /* *///FFFE4090-FFFE4086-1 - unsigned short TCNTV; /* TCNTV *///FFFE4090 - unsigned short TGRV; /* TGRV *///FFFE4092 - union { /* TCRV *///FFFE4094 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 6; /* */ - unsigned char TPSC : 2; /* TPSC */ - } BIT; /* */ - } TCRV; /* */ - char wk3[1]; /* *///FFFE4096-FFFE4094-1 - union { /* TIORV *///FFFE4096 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 3; /* */ - unsigned char IOC : 5; /* IOC */ - } BIT; /* */ - } TIORV; /* */ - char wk4[9]; /* *///FFFE40A0-FFFE4096-1 - unsigned short TCNTW; /* TCNTW *///FFFE40A0 - unsigned short TGRW; /* TGRW *///FFFE40A2 - union { /* TCRW *///FFFE40A4 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 6; /* */ - unsigned char TPSC : 2; /* TPSC */ - } BIT; /* */ - } TCRW; /* */ - char wk5[1]; /* *///FFFE40A6-FFFE40A4-1 - union { /* TIORW *///FFFE40A6 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 3; /* */ - unsigned char IOC : 5; /* IOC */ - } BIT; /* */ - } TIORW; /* */ - char wk6[9]; /* *///FFFE40B0-FFFE40A6-1 - union { /* TSR *///FFFE40B0 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 5; /* */ - unsigned char CMFU : 1; /* CMFU */ - unsigned char CMFV : 1; /* CMFV */ - unsigned char CMFW : 1; /* CMFW */ - } BIT; /* */ - } TSR; /* */ - char wk7[1]; /* *///FFFE40B2-FFFE40B0-1 - union { /* TIER *///FFFE40B2 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 5; /* */ - unsigned char TGIEU : 1; /* TGIEU */ - unsigned char TGIEV : 1; /* TGIEV */ - unsigned char TGIEW : 1; /* TGIEW */ - } BIT; /* */ - } TIER; /* */ - char wk8[1]; /* *///FFFE40B4-FFFE40B2-1 - union { /* TSTR *///FFFE40B4 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 5; /* */ - unsigned char CSTU : 1; /* CSTU */ - unsigned char CSTV : 1; /* CSTV */ - unsigned char CSTW : 1; /* CSTW */ - } BIT; /* */ - } TSTR; /* */ - char wk9[1]; /* *///FFFE40B6-FFFE40B4-1 - union { /* TCNTCMPCLR *///FFFE40B6 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 5; /* */ - unsigned char CLRU : 1; /* CLRU */ - unsigned char CLRV : 1; /* CLRV */ - unsigned char CLRW : 1; /* CLRW */ - } BIT; /* */ - } TCNTCMPCLR; /* */ -}; /* */ -struct st_mtu2s { /* struct MTU2S */ - union { /* TOERS *///FFFE4A0A - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 2; /* */ - unsigned char OE4D : 1; /* OE4D */ - unsigned char OE4C : 1; /* OE4C */ - unsigned char OE3D : 1; /* OE3D */ - unsigned char OE4B : 1; /* OE4B */ - unsigned char OE4A : 1; /* OE4A */ - unsigned char OE3B : 1; /* OE3B */ - } BIT; /* */ - } TOER; /* */ - char wk1[2]; /* *///FFFE4A0D-FFFE4A0A-1 - union { /* TGCRS *///FFFE4A0D - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 1; /* */ - unsigned char BDC : 1; /* BDC */ - unsigned char N : 1; /* N */ - unsigned char P : 1; /* P */ - unsigned char FB : 1; /* FB */ - unsigned char WF : 1; /* WF */ - unsigned char VF : 1; /* VF */ - unsigned char UF : 1; /* UF */ - } BIT; /* */ - } TGCR; /* */ - union { /* TOCR1S *///FFFE4A0E - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 1; /* */ - unsigned char PSYE : 1; /* PSYE */ - unsigned char : 2; /* */ - unsigned char TOCL : 1; /* TOCL */ - unsigned char TOCS : 1; /* TOCS */ - unsigned char OLSN : 1; /* OLSN */ - unsigned char OLSP : 1; /* OLSP */ - } BIT; /* */ - } TOCR1; /* */ - union { /* TOCR2S *///FFFE4A0F - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char BF : 2; /* BF */ - unsigned char OLS3N : 1; /* OLS3N */ - unsigned char OLS3P : 1; /* OLS3P */ - unsigned char OLS2N : 1; /* OLS2N */ - unsigned char OLS2P : 1; /* OLS2P */ - unsigned char OLS1N : 1; /* OLS1N */ - unsigned char OLS1P : 1; /* OLS1P */ - } BIT; /* */ - } TOCR2; /* */ - char wk2[4]; /* *///FFFE4A14-FFFE4A0F-1 - unsigned short TCDR; /* TCDRS *///FFFE4A14 - unsigned short TDDR; /* TDDRS *///FFFE4A16 - char wk3[8]; /* *///FFFE4A20-FFFE4A16-2 - unsigned short TCNTS; /* TCNTS *///FFFE4A20 - unsigned short TCBR; /* TCBRS *///FFFE4A22 - char wk4[12]; /* *///FFFE4A30-FFFE4A22-2 - union { /* TITCRS *///FFFE4A30 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char T3AEN : 1; /* T3AEN */ - unsigned char T3ACOR : 3; /* T3ACOR */ - unsigned char T4VEN : 1; /* T4VEN */ - unsigned char T4VCOR : 3; /* T4VCOR */ - } BIT; /* */ - } TITCR; /* */ - union { /* TITCNTS *///FFFE4A31 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 1; /* */ - unsigned char T3ACNT : 3; /* T3ACNT */ - unsigned char : 1; /* */ - unsigned char T4VCNT : 3; /* T4VCNT */ - } BIT; /* */ - } TITCNT; /* */ - union { /* TBTERS *///FFFE4A32 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 6; /* */ - unsigned char BTE : 2; /* BTE */ - } BIT; /* */ - } TBTER; /* */ - char wk5[1]; /* *///FFFE4A34-FFFE4A32-1 - union { /* TDER *///FFFE4A34 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 7; /* */ - unsigned char TDER : 1; /* TDER */ - } BIT; /* */ - } TDER; /* */ - char wk6[1]; /* *///FFFE4A36-FFFE4A34-1 - union { /* TOLBR *///FFFE4A36 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 2; /* */ - unsigned char OLS3N : 1; /* OLS3N */ - unsigned char OLS3P : 1; /* OLS3P */ - unsigned char OLS2N : 1; /* OLS2N */ - unsigned char OLS2P : 1; /* OLS2P */ - unsigned char OLS1N : 1; /* OLS1N */ - unsigned char OLS1P : 1; /* OLS1P */ - } BIT; /* */ - } TOLBR; /* */ - char wk7[25]; /* *///FFFE4A50-FFFE4A36-1 - union { /* TSYCRS *///FFFE4A50 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char CE0A : 1; /* CE0A */ - unsigned char CE0B : 1; /* CE0B */ - unsigned char CE0C : 1; /* CE0C */ - unsigned char CE0D : 1; /* CE0D */ - unsigned char CE1A : 1; /* CE1A */ - unsigned char CE1B : 1; /* CE1B */ - unsigned char CE2A : 1; /* CE2A */ - unsigned char CE2B : 1; /* CE2B */ - } BIT; /* */ - } TSYCRS; /* */ - char wk8[15]; /* *///FFFE4A60-FFFE4A50-1 - union { /* TWCRS *///FFFE4A60 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char CCE : 1; /* CCE */ - unsigned char : 5; /* */ - unsigned char SCC : 1; /* SCC */ - unsigned char WRE : 1; /* WRE */ - } BIT; /* */ - } TWCR; /* */ - char wk9[31]; /* *///FFFE4A80-FFFE4A60-1 - union { /* TSTRS *///FFFE4A80 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char CST4 : 1; /* CST4 */ - unsigned char CST3 : 1; /* CST3 */ - unsigned char : 3; /* */ - unsigned char CST2 : 1; /* CST2 */ - unsigned char CST1 : 1; /* CST1 */ - unsigned char CST0 : 1; /* CST0 */ - } BIT; /* */ - } TSTR; /* */ - union { /* TSYRS *///FFFE4A81 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char SYNC4 : 1; /* SYNC4 */ - unsigned char SYNC3 : 1; /* SYNC3 */ - unsigned char : 3; /* */ - unsigned char SYNC2 : 1; /* SYNC2 */ - unsigned char SYNC1 : 1; /* SYNC1 */ - unsigned char SYNC0 : 1; /* SYNC0 */ - } BIT; /* */ - } TSYR; /* */ - char wk10[2]; /* *///FFFE4A84-FFFE4A81-1 - union { /* TRWERS *///FFFE4A84 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 7; /* */ - unsigned char RWE : 1; /* RWE */ - } BIT; /* */ - } TRWER; /* */ -}; /* */ -struct st_poe2 { /* struct POE2 */ - union { /* ICSR1 *///FFFE5000 - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short POE3F : 1; /* POE3F */ - unsigned short POE2F : 1; /* POE2F */ - unsigned short POE1F : 1; /* POE1F */ - unsigned short POE0F : 1; /* POE0F */ - unsigned short : 3; /* */ - unsigned short PIE1 : 1; /* PIE1 */ - unsigned short POE3M : 2; /* POE3M */ - unsigned short POE2M : 2; /* POE2M */ - unsigned short POE1M : 2; /* POE1M */ - unsigned short POE0M : 2; /* POE0M */ - } BIT; /* */ - } ICSR1; /* */ - union { /* OCSR1 *///FFFE5002 - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short OSF1 : 1; /* OSF1 */ - unsigned short : 5; /* */ - unsigned short OCE1 : 1; /* OCE1 */ - unsigned short OIE1 : 1; /* OIE1 */ - } BIT; /* */ - } OCSR1; /* */ - union { /* ICSR2 *///FFFE5004 - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short : 3; /* */ - unsigned short POE4F : 1; /* POE4F */ - unsigned short : 3; /* */ - unsigned short PIE2 : 1; /* PIE2 */ - unsigned short : 6; /* */ - unsigned short POE4M : 2; /* POE4M */ - } BIT; /* */ - } ICSR2; /* */ - union { /* OCSR2 *///FFFE5006 - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short OSF2 : 1; /* OSF2 */ - unsigned short : 5; /* */ - unsigned short OCE2 : 1; /* OCE2 */ - unsigned short OIE2 : 1; /* OIE2 */ - } BIT; /* */ - } OCSR2; /* */ - union { /* ICSR3 *///FFFE5008 - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short : 3; /* */ - unsigned short POE8F : 1; /* POE8F */ - unsigned short : 2; /* */ - unsigned short POE8E : 1; /* POE8E */ - unsigned short PIE3 : 1; /* PIE3 */ - unsigned short : 6; /* */ - unsigned short POE8M : 2; /* POE8M */ - } BIT; /* */ - } ICSR3; /* */ - union { /* SPOER *///FFFE500A - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 5; /* */ - unsigned char MTU2SHIZ : 1; /* MTU2SHIZ */ - unsigned char MTU2CH0HIZ : 1; /* MTU2CH0HIZ*/ - unsigned char MTU2CH34HIZ : 1; /* MTU2CH34HI*/ - } BIT; /* */ - } SPOER; /* */ - union { /* POECR1 *///FFFE500B - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char MTU2PB4ZE : 1; /* MTU2PB4ZE */ - unsigned char MTU2PB3ZE : 1; /* MTU2PB3ZE */ - unsigned char MTU2PB2ZE : 1; /* MTU2PB2ZE */ - unsigned char MTU2PB1ZE : 1; /* MTU2PB1ZE */ - unsigned char MTU2PE3ZE : 1; /* MTU2PE3ZE */ - unsigned char MTU2PE2ZE : 1; /* MTU2PE2ZE */ - unsigned char MTU2PE1ZE : 1; /* MTU2PE1ZE */ - unsigned char MTU2PE0ZE : 1; /* MTU2PE0ZE */ - } BIT; /* */ - } POECR1; /* */ - union { /* POECR2 *///FFFE500C - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short : 1; /* */ - unsigned short MTU2P1CZE : 1; /* MTU2P1CZE */ - unsigned short MTU2P2CZE : 1; /* MTU2P2CZE */ - unsigned short MTU2P3CZE : 1; /* MTU2P3CZE */ - unsigned short : 1; /* */ - unsigned short MTU2SP1CZE : 1; /* MTU2SP1CZE*/ - unsigned short MTU2SP2CZE : 1; /* MTU2SP2CZE*/ - unsigned short MTU2SP3CZE : 1; /* MTU2SP3CZE*/ - unsigned short : 1; /* */ - unsigned short MTU2SP4CZE : 1; /* MTU2SP4CZE*/ - unsigned short MTU2SP5CZE : 1; /* MTU2SP5CZE*/ - unsigned short MTU2SP6CZE : 1; /* MTU2SP6CZE*/ - unsigned short : 1; /* */ - unsigned short MTU2SP7CZE : 1; /* MTU2SP7CZE*/ - unsigned short MTU2SP8CZE : 1; /* MTU2SP8CZE*/ - unsigned short MTU2SP9CZE : 1; /* MTU2SP9CZE*/ - } BIT; /* */ - } POECR2; /* */ -}; /* */ -struct st_cmt { /* struct CMT */ - union { /* CMSTR *///FFFEC000 - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short :14; /* */ - unsigned short STR1 : 1; /* STR1 */ - unsigned short STR0 : 1; /* STR0 */ - } BIT; /* */ - } CMSTR; /* */ -}; /* */ -struct st_cmt0 { /* struct CMT0 */ - union { /* CMCSR *///FFFEC002/FFFEC008 - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short : 8; /* */ - unsigned short CMF : 1; /* CMF */ - unsigned short CMIE : 1; /* CMIE */ - unsigned short : 4; /* */ - unsigned short CKS : 2; /* CKS */ - } BIT; /* */ - } CMCSR; /* */ - unsigned short CMCNT; /* CMCNT *///FFFEC004/FFFEC00A - unsigned short CMCOR; /* CMCOR *///FFFEC006/FFFEC00C -}; /* */ -union un_wdt { /* union WDT */ - struct { /* Read Access */ - union { /* WTCSR *///FFFE0000 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char IOVF : 1; /* IOVF */ - unsigned char WTIT : 1; /* WT/IT */ - unsigned char TME : 1; /* TME */ - unsigned char : 2; /* */ - unsigned char CKS : 3; /* CKS */ - } BIT; /* */ - } WTCSR; /* */ - char wk1[1]; /* *///FFFE0002-FFFE0000-1 - unsigned char WTCNT; /* WTCNT *///FFFE0002 - char wk2[1]; /* *///FFFE0004-FFFE0002-1 - union { /* WRCSR *///FFFE0004 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char WOVF : 1; /* WOVF */ - unsigned char RSTE : 1; /* RSTE */ - unsigned char RSTS : 1; /* RSTS */ - } BIT; /* */ - } WRCSR; /* */ - } READ; /* */ - struct { /* Write Access */ - unsigned short WTCSR; /* WTCSR *///FFFE0000 - unsigned short WTCNT; /* WTCNT *///FFFE0002 - unsigned short WRCSR; /* WRCSR *///FFFE0004 - } WRITE; /* */ -}; /* */ -struct st_sci { /* struct SCI */ - union { /* SCSMR *///FFFF8000 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char CA : 1; /* C/A */ - unsigned char CHR : 1; /* CHR */ - unsigned char _PE : 1; /* PE */ - unsigned char OE : 1; /* O/E */ - unsigned char STOP : 1; /* STOP */ - unsigned char MP : 1; /* MP */ - unsigned char CKS : 2; /* CKS */ - } BIT; /* */ - } SCSMR; /* */ - char wk1[1]; /* *///FFFF8002-FFFF8000-1 - unsigned char SCBRR; /* SCBRR *///FFFF8002 - char wk2[1]; /* *///FFFF8004-FFFF8002-1 - union { /* SCSCR *///FFFF8004 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char TIE : 1; /* TIE */ - unsigned char RIE : 1; /* RIE */ - unsigned char TE : 1; /* TE */ - unsigned char RE : 1; /* RE */ - unsigned char MPIE : 1; /* MPIE */ - unsigned char TEIE : 1; /* TEIE */ - unsigned char CKE : 2; /* CKE */ - } BIT; /* */ - } SCSCR; /* */ - char wk3[1]; /* *///FFFF8006-FFFF8004-1 - unsigned char SCTDR; /* SCTDR *///FFFF8006 - char wk4[1]; /* *///FFFF8008-FFFF8006-1 - union { /* SCSSR *///FFFF8008 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char TDRE : 1; /* TDRE */ - unsigned char RDRF : 1; /* RDRF */ - unsigned char ORER : 1; /* ORER */ - unsigned char FER : 1; /* FER */ - unsigned char PER : 1; /* PER */ - unsigned char TEND : 1; /* TEND */ - unsigned char MPB : 1; /* MPB */ - unsigned char MPBT : 1; /* MPBT */ - } BIT; /* */ - } SCSSR; /* */ - char wk5[1]; /* *///FFFF800A-FFFF8008-1 - unsigned char SCRDR; /* SCRDR *///FFFF800A - char wk6[1]; /* *///FFFF800C-FFFF800A-1 - union { /* SCSDCR *///FFFF800C - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 4; /* */ - unsigned char DIR : 1; /* DIR */ - } BIT; /* */ - } SCSDCR; /* */ - char wk7[1]; /* *///FFFF800E-FFFF800C-1 - union { /* SCSPTR *///FFFF800E - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char EIO : 1; /* EIO */ - unsigned char : 3; /* */ - unsigned char SPB1IO : 1; /* SPB1IO */ - unsigned char SPB1DT : 1; /* SPB1DT */ - unsigned char : 1; /* */ - unsigned char SPB0DT : 1; /* SPB0DT */ - } BIT; /* */ - } SCSPTR; /* */ -}; /* */ -struct st_scif { /* struct SCIF */ - union { /* SCSMR *///FFFE9800 - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short : 8; /* */ - unsigned short CA : 1; /* C/A */ - unsigned short CHR : 1; /* CHR */ - unsigned short _PE : 1; /* PE */ - unsigned short OE : 1; /* O/E */ - unsigned short STOP : 1; /* STOP */ - unsigned short : 1; /* */ - unsigned short CKS : 2; /* CKS */ - } BIT; /* */ - } SCSMR; /* */ - char wk1[2]; /* *///FFFE9804-FFFE9800-2 - unsigned char SCBRR; /* SCBRR *///FFFE9804 - char wk2[3]; /* *///FFFE9808-FFFE9804-1 - union { /* SCSCR *///FFFE9808 - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short : 8; /* */ - unsigned short TIE : 1; /* TIE */ - unsigned short RIE : 1; /* RIE */ - unsigned short TE : 1; /* TE */ - unsigned short RE : 1; /* RE */ - unsigned short REIE : 1; /* REIE */ - unsigned short : 1; /* */ - unsigned short CKE : 2; /* CKE */ - } BIT; /* */ - } SCSCR; /* */ - char wk3[2]; /* *///FFFE980C-FFFE9808-2 - unsigned char SCFTDR; /* SCFTDR *///FFFE980C - char wk4[3]; /* *///FFFE9810-FFFE980C-1 - union { /* SCFSR *///FFFE9810 - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short PERC : 4; /* PER3-0 */ - unsigned short FERC : 4; /* FER3-0 */ - unsigned short ER : 1; /* ER */ - unsigned short TEND : 1; /* TEND */ - unsigned short TDFE : 1; /* TDFE */ - unsigned short BRK : 1; /* BRK */ - unsigned short FER : 1; /* FER */ - unsigned short PER : 1; /* PER */ - unsigned short RDF : 1; /* RDF */ - unsigned short DR : 1; /* DR */ - } BIT; /* */ - } SCFSR; /* */ - char wk5[2]; /* *///FFFE9814-FFFE9810-2 - unsigned char SCFRDR; /* SCFRDR *///FFFE9814 - char wk6[3]; /* *///FFFE9818-FFFE9814-1 - union { /* SCFCR *///FFFE9818 - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short : 8; /* */ - unsigned short RTRG : 2; /* RTRG */ - unsigned short TTRG : 2; /* TTRG */ - unsigned short : 1; /* */ - unsigned short TFRST : 1; /* TFRST */ - unsigned short RFRST : 1; /* RFRST */ - unsigned short LOOP : 1; /* LOOP */ - } BIT; /* */ - } SCFCR; /* */ - char wk7[2]; /* *///FFFE981C-FFFE9818-2 - union { /* SCFDR *///FFFE981C - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short : 3; /* */ - unsigned short T : 5; /* T */ - unsigned short : 3; /* */ - unsigned short R : 5; /* R */ - } BIT; /* */ - } SCFDR; /* */ - char wk8[2]; /* *///FFFE9820-FFFE981C-2 - union { /* SCSPTR *///FFFE9820 - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short : 8; /* */ - unsigned short : 4; /* */ - unsigned short SCKIO : 1; /* SCKIO */ - unsigned short SCKDT : 1; /* SCKDT */ - unsigned short SPB2IO : 1; /* SPB2IO */ - unsigned short SPB2DT : 1; /* SPB2DT */ - } BIT; /* */ - } SCSPTR; /* */ - char wk9[2]; /* *///FFFE9824-FFFE9820-2 - union { /* SCLSR *///FFFE9824 - unsigned short WORD; /* Word Access */ - struct { /* Bit Accesss */ - unsigned short :15; /* */ - unsigned short ORER : 1; /* ORER */ - } BIT; /* */ - } SCLSR; /* */ - char wk10[218]; /* *///FFFE9900-FFFE9824-2 - union { /* SCSEMR *///FFFE9900 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char ABCS : 1; /* ABCS */ - } BIT; /* */ - } SCSEMR; /* */ -}; /* */ -struct st_rspi { /* struct RSPI */ - union { /* SPCR *///FFFFB000 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char SPRIE : 1; /* SPRIE */ - unsigned char SPE : 1; /* SPE */ - unsigned char SPTIE : 1; /* SPTIE */ - unsigned char SPEIE : 1; /* SPEIE */ - unsigned char MSTR : 1; /* MSTR */ - unsigned char MODFEN : 1; /* MODFEN */ - unsigned char : 1; /* */ - unsigned char SPMS : 1; /* SPMS */ - } BIT; /* */ - } SPCR; /* */ - union { /* SSLP *///FFFFB0001 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 4; /* */ - unsigned char SSL3P : 1; /* SSL3P */ - unsigned char SSL2P : 1; /* SSL2P */ - unsigned char SSL1P : 1; /* SSL1P */ - unsigned char SSL0P : 1; /* SSL0P */ - } BIT; /* */ - } SSLP; /* */ - union { /* SPPCR *///FFFFB002 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 2; /* */ - unsigned char MOIFE : 1; /* MOIFE */ - unsigned char MOIFV : 1; /* MOIFV */ - unsigned char : 1; /* */ - unsigned char SPOM : 1; /* SPOM */ - unsigned char : 1; /* */ - unsigned char SPLP : 1; /* SPLP */ - } BIT; /* */ - } SPPCR; /* */ - union { /* SPSR *///FFFFB003 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char SPRF : 1; /* SPRF */ - unsigned char : 1; /* */ - unsigned char SPTEF : 1; /* SPTEF */ - unsigned char : 2; /* */ - unsigned char MODF : 1; /* MODF */ - unsigned char MIDLE : 1; /* MIDLE */ - unsigned char OVRF : 1; /* OVRF */ - } BIT; /* */ - } SPSR; /* */ - union { /* SPDR *///FFFFB004 - unsigned int LONG; /* Long Access */ - unsigned short WORD; /* Word Access */ - } SPDR; /* */ - union { /* SPSCR *///FFFFB008 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 5; /* */ - unsigned char SPSLN : 3; /* SPSLN */ - } BIT; /* */ - } SPSCR; /* */ - union { /* SPSSR *///FFFFB009 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 2; /* */ - unsigned char SPECM : 2; /* SPECM */ - unsigned char : 2; /* */ - unsigned char SPCP : 2; /* SPCP */ - } BIT; /* */ - } SPSSR; /* */ - union { /* SPBR *///FFFFB00A - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char SPR : 8; /* SPR */ - } BIT; /* */ - } SPBR; /* */ - union { /* SPDCR *///FFFFB00B - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 2; /* */ - unsigned char SPLW : 1; /* SPLW */ - unsigned char SPRDTD : 1; /* SPRDTD */ - unsigned char : 2; /* */ - unsigned char SPFC : 2; /* SPFC */ - } BIT; /* */ - } SPDCR; /* */ - union { /* SPCKD *///FFFFB00C - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 5; /* */ - unsigned char SCKDL : 3; /* SCKDL */ - } BIT; /* */ - } SPCKD; /* */ - union { /* SSLND *///FFFFB00D - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 5; /* */ - unsigned char SLNDL : 3; /* SLNDL */ - } BIT; /* */ - } SSLND; /* */ - union { /* SPND *///FFFFB00E - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 5; /* */ - unsigned char SPNDL : 3; /* SPNDL */ - } BIT; /* */ - } SPND; /* */ - unsigned char wk1[1]; /* *///FFFFB010-FFFFB00E-1 - union { /* SPCMD0 *///FFFFB010 - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short SCKDEN : 1; /* SCKDEN */ - unsigned short SLNDEN : 1; /* SLNDEN */ - unsigned short SPNDEN : 1; /* SPNDEN */ - unsigned short LSBF : 1; /* LSBF */ - unsigned short SPB : 4; /* SPB */ - unsigned short SSLKP : 1; /* SSLKP */ - unsigned short SSLA : 3; /* SSLA */ - unsigned short BRDV : 2; /* BRDV */ - unsigned short CPOL : 1; /* CPOL */ - unsigned short CPHA : 1; /* CPHA */ - } BIT; /* */ - } SPCMD0; /* */ - union { /* SPCMD1 *///FFFFB012 - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short SCKDEN : 1; /* SCKDEN */ - unsigned short SLNDEN : 1; /* SLNDEN */ - unsigned short SPNDEN : 1; /* SPNDEN */ - unsigned short LSBF : 1; /* LSBF */ - unsigned short SPB : 4; /* SPB */ - unsigned short SSLKP : 1; /* SSLKP */ - unsigned short SSLA : 3; /* SSLA */ - unsigned short BRDV : 2; /* BRDV */ - unsigned short CPOL : 1; /* CPOL */ - unsigned short CPHA : 1; /* CPHA */ - } BIT; /* */ - } SPCMD1; /* */ - union { /* SPCMD2 *///FFFFB014 - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short SCKDEN : 1; /* SCKDEN */ - unsigned short SLNDEN : 1; /* SLNDEN */ - unsigned short SPNDEN : 1; /* SPNDEN */ - unsigned short LSBF : 1; /* LSBF */ - unsigned short SPB : 4; /* SPB */ - unsigned short SSLKP : 1; /* SSLKP */ - unsigned short SSLA : 3; /* SSLA */ - unsigned short BRDV : 2; /* BRDV */ - unsigned short CPOL : 1; /* CPOL */ - unsigned short CPHA : 1; /* CPHA */ - } BIT; /* */ - } SPCMD2; /* */ - union { /* SPCMD3 *///FFFFB016 - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short SCKDEN : 1; /* SCKDEN */ - unsigned short SLNDEN : 1; /* SLNDEN */ - unsigned short SPNDEN : 1; /* SPNDEN */ - unsigned short LSBF : 1; /* LSBF */ - unsigned short SPB : 4; /* SPB */ - unsigned short SSLKP : 1; /* SSLKP */ - unsigned short SSLA : 3; /* SSLA */ - unsigned short BRDV : 2; /* BRDV */ - unsigned short CPOL : 1; /* CPOL */ - unsigned short CPHA : 1; /* CPHA */ - } BIT; /* */ - } SPCMD3; /* */ -}; /* */ -struct st_iic3 { /* struct IIC3 */ - union { /* ICCR1 *///FFFEE000 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char ICE : 1; /* ICE */ - unsigned char RCVD : 1; /* RCVD */ - unsigned char MST : 1; /* MST */ - unsigned char TRS : 1; /* TRS */ - unsigned char CKS : 4; /* CKS */ - } BIT; /* */ - } ICCR1; /* */ - union { /* ICCR2 *///FFFEE001 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char BBSY : 1; /* BBSY */ - unsigned char SCP : 1; /* SCP */ - unsigned char SDAO : 1; /* SDAO */ - unsigned char SDAOP : 1; /* SDAOP */ - unsigned char SCLO : 1; /* SCLO */ - unsigned char : 1; /* */ - unsigned char IICRST : 1; /* IICRST */ - } BIT; /* */ - } ICCR2; /* */ - union { /* ICMR *///FFFEE002 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char MLS : 1; /* MLS */ - unsigned char : 3; /* */ - unsigned char BCWP : 1; /* BCWP */ - unsigned char BC : 3; /* BC */ - } BIT; /* */ - } ICMR; /* */ - union { /* ICIER *///FFFEE003 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char TIE : 1; /* TIE */ - unsigned char TEIE : 1; /* TEIE */ - unsigned char RIE : 1; /* RIE */ - unsigned char NAKIE : 1; /* NAKIE */ - unsigned char STIE : 1; /* STIE */ - unsigned char ACKE : 1; /* ACKE */ - unsigned char ACKBR : 1; /* ACKBR */ - unsigned char ACKBT : 1; /* ACKBT */ - } BIT; /* */ - } ICIER; /* */ - union { /* ICSR *///FFFEE0040 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char TDRE : 1; /* TDRE */ - unsigned char TEND : 1; /* TEND */ - unsigned char RDRF : 1; /* RDRF */ - unsigned char NACKF : 1; /* NACKF */ - unsigned char STOP : 1; /* STOP */ - unsigned char ALOVE : 1; /* ALOVE */ - unsigned char AAS : 1; /* AAS */ - unsigned char ADZ : 1; /* ADZ */ - } BIT; /* */ - } ICSR; /* */ - union { /* SAR *///FFFEE005 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char SVA : 7; /* SVA */ - unsigned char FS : 1; /* FS */ - } BIT; /* */ - } SAR; /* */ - unsigned char ICDRT; /* ICDRT *///FFFEE006 - unsigned char ICDRR; /* ICDRR *///FFFEE007 - union { /* NF2CYC *///FFFEE008 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 7; /* */ - unsigned char NF2CYC : 1; /* NF2CYC */ - } BIT; /* */ - } NF2CYC; /* */ -}; /* */ -struct st_adc0 { /* struct ADC0 */ - union { /* ADCR *///FFFFE800 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char ADST : 1; /* ADST */ - unsigned char ADCS : 1; /* ADCS */ - unsigned char ACE : 1; /* ACE */ - unsigned char ADIE : 1; /* ADIE */ - unsigned char : 2; /* */ - unsigned char TRGE : 1; /* TRGE */ - unsigned char EXTRG : 1; /* EXTRG */ - } BIT; /* */ - } ADCR; /* */ - char wk1[1]; /* *///FFFFE802-FFFFE800-1 - union { /* ADSR *///FFFFE802 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 7; /* */ - unsigned char ADF : 1; /* ADF */ - } BIT; /* */ - } ADSR; /* */ - char wk2[25]; /* *///FFFFE81C-FFFFE802-1 - union { /* ADSTRGR *///FFFFE81C - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 1; /* */ - unsigned char STR6 : 1; /* STR6 */ - unsigned char STR5 : 1; /* STR5 */ - unsigned char STR4 : 1; /* STR4 */ - unsigned char STR3 : 1; /* STR3 */ - unsigned char STR2 : 1; /* STR2 */ - unsigned char STR1 : 1; /* STR1 */ - unsigned char STR0 : 1; /* STR0 */ - } BIT; /* */ - } ADSTRGR; /* */ - char wk3[3]; /* *///FFFFE820-FFFFE81C-1 - union { /* ADANSR *///FFFFE820 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 4; /* */ - unsigned char ANS3 : 1; /* ANS3 */ - unsigned char ANS2 : 1; /* ANS2 */ - unsigned char ANS1 : 1; /* ANS1 */ - unsigned char ANS0 : 1; /* ANS0 */ - } BIT; /* */ - } ADANSR; /* */ - char wk4[15]; /* *///FFFFE830-FFFFE820-1 - union { /* ADBYPSCR *///FFFFE830 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 6; /* */ - unsigned char : 1; /* */ - unsigned char SH : 1; /* SH */ - } BIT; /* */ - } ADBYPSCR; /* */ - char wk5[15]; /* *///FFFFE840-FFFFE830-1 - unsigned short ADDR0; /* ADDR0 *///FFFFE840 - unsigned short ADDR1; /* ADDR1 *///FFFFE842 - unsigned short ADDR2; /* ADDR2 *///FFFFE844 - unsigned short ADDR3; /* ADDR3 *///FFFFE846 -}; /* */ -struct st_adc1 { /* struct ADC1 */ - union { /* ADCR *///FFFFEC00 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char ADST : 1; /* ADST */ - unsigned char ADCS : 1; /* ADCS */ - unsigned char ACE : 1; /* ACE */ - unsigned char ADIE : 1; /* ADIE */ - unsigned char : 2; /* */ - unsigned char TRGE : 1; /* TRGE */ - unsigned char EXTRG : 1; /* EXTRG */ - } BIT; /* */ - } ADCR; /* */ - char wk1; /* *///FFFFEC02-FFFFEC00-1 - union { /* ADSR *///FFFFEC02 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 7; /* */ - unsigned char ADF : 1; /* ADF */ - } BIT; /* */ - } ADSR; /* */ - char wk2[25]; /* *///FFFFEC1C-FFFFEC02-1 - union { /* ADSTRGR *///FFFFEC1C - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 1; /* */ - unsigned char STR6 : 1; /* STR6 */ - unsigned char STR5 : 1; /* STR5 */ - unsigned char STR4 : 1; /* STR4 */ - unsigned char STR3 : 1; /* STR3 */ - unsigned char STR2 : 1; /* STR2 */ - unsigned char STR1 : 1; /* STR1 */ - unsigned char STR0 : 1; /* STR0 */ - } BIT; /* */ - } ADSTRGR; /* */ - char wk3[3]; /* *///FFFFEC20-FFFFEC1C-1 - union { /* ADANSR *///FFFFEC20 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 4; /* */ - unsigned char ANS3 : 1; /* ANS3 */ - unsigned char ANS2 : 1; /* ANS2 */ - unsigned char ANS1 : 1; /* ANS1 */ - unsigned char ANS0 : 1; /* ANS0 */ - } BIT; /* */ - } ADANSR; /* */ - char wk4[15]; /* *///FFFFEC30-FFFFEC20-1 - union { /* ADBYPSCR *///FFFFEC30 - unsigned char BYTE; /* Byte Access */ - } ADBYPSCR; /* */ - char wk5[15]; /* *///FFFFEC40-FFFFEC30-1 - unsigned short ADDR4; /* ADDR4 *///FFFFEC40 - unsigned short ADDR5; /* ADDR5 *///FFFFEC42 - unsigned short ADDR6; /* ADDR6 *///FFFFEC44 - unsigned short ADDR7; /* ADDR7 *///FFFFEC46 -}; /* */ -struct st_rcanet { /* structRCAN-ET*/ - union { /* MCR *///FFFFD000 - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short IDR : 1; /* IDR */ - unsigned short AHBO : 1; /* AHBO */ - unsigned short : 3; /* */ - unsigned short TST : 3; /* TST */ - unsigned short AWM : 1; /* AWM */ - unsigned short HDBO : 1; /* HDBO */ - unsigned short SLPM : 1; /* SLPM */ - unsigned short : 2; /* */ - unsigned short MTP : 1; /* MTP */ - unsigned short HLTRQ : 1; /* HLTRQ */ - unsigned short RSTRQ : 1; /* RSTRQ */ - } BIT; /* */ - } MCR; /* */ - union { /* GSR *///FFFFD002 - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short :10; /* */ - unsigned short EPSB : 1; /* EPSB */ - unsigned short HSSB : 1; /* HSSB */ - unsigned short RSB : 1; /* RSB */ - unsigned short MTPF : 1; /* MTPF */ - unsigned short TRWF : 1; /* TRWF */ - unsigned short BOF : 1; /* BOF */ - } BIT; /* */ - } GSR; /* */ - union { /* BCR1 *///FFFFD004 - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short TSG1 : 4; /* TSG1 */ - unsigned short : 1; /* */ - unsigned short TSG2 : 3; /* TSG2 */ - unsigned short : 2; /* */ - unsigned short SJW : 2; /* SJW */ - unsigned short : 3; /* */ - unsigned short BSP : 1; /* BSP */ - } BIT; /* */ - } BCR1; /* */ - union { /* BCR0 *///FFFFD006 - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short : 8; /* */ - unsigned short BRP : 8; /* BRP */ - } BIT; /* */ - } BCR0; /* */ - union { /* IRR */ - unsigned short WORD; /* Word Access *///FFFFD008 - struct { /* Bit Access */ - unsigned short : 2; /* */ - unsigned short MEIF : 1; /* MEIF */ - unsigned short BASMIF : 1; /* BASMIF */ - unsigned short : 2; /* */ - unsigned short MOOIF : 1; /* MOOIF */ - unsigned short MBEIF : 1; /* MBEIF */ - unsigned short OLFIF : 1; /* OLFIF */ - unsigned short BOFIF : 1; /* BOFIF */ - unsigned short EPIF : 1; /* EPIF */ - unsigned short RECWIF : 1; /* RECWIF */ - unsigned short TECWIF : 1; /* TECWIF */ - unsigned short RFRIF : 1; /* RFRIF */ - unsigned short DFRIF : 1; /* DFRIF */ - unsigned short RSTIF : 1; /* RSTIF */ - } BIT; /* */ - } IRR; /* */ - union { /* IMR *///FFFFD00A - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short : 2; /* */ - unsigned short MEIM : 1; /* MEIM */ - unsigned short BASMIM : 1; /* BASMIM */ - unsigned short : 2; /* */ - unsigned short MOOIM : 1; /* MOOIM */ - unsigned short MBEIM : 1; /* MBEIM */ - unsigned short OLFIM : 1; /* OLFIM */ - unsigned short BOFIM : 1; /* BOFIM */ - unsigned short EPIM : 1; /* EPIM */ - unsigned short RECWIM : 1; /* RECWIM */ - unsigned short TECWIM : 1; /* TECWIM */ - unsigned short RFRIM : 1; /* RFRIM */ - unsigned short DFRIM : 1; /* DFRIM */ - unsigned short RSTIM : 1; /* RSTIM */ - } BIT; /* */ - } IMR; /* */ - union { /* TECREC *///FFFFD00C - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short TEC : 8; /* TEC */ - unsigned short REC : 8; /* REC */ - } BIT; /* */ - } TECREC; /* */ - char wk1[18]; /* *///FFFFD020-FFFFD00C-2 - union { /* TXPR1,0 *///FFFFD020 - unsigned int LONG; /* Long Access */ - struct { /* Bit Access */ - unsigned int MB31 : 1; /* MB31 */ - unsigned int MB30 : 1; /* MB30 */ - unsigned int MB29 : 1; /* MB29 */ - unsigned int MB28 : 1; /* MB28 */ - unsigned int MB27 : 1; /* MB27 */ - unsigned int MB26 : 1; /* MB26 */ - unsigned int MB25 : 1; /* MB25 */ - unsigned int MB24 : 1; /* MB24 */ - unsigned int MB23 : 1; /* MB23 */ - unsigned int MB22 : 1; /* MB22 */ - unsigned int MB21 : 1; /* MB21 */ - unsigned int MB20 : 1; /* MB20 */ - unsigned int MB19 : 1; /* MB19 */ - unsigned int MB18 : 1; /* MB18 */ - unsigned int MB17 : 1; /* MB17 */ - unsigned int MB16 : 1; /* MB16 */ - unsigned int MB15 : 1; /* MB15 */ - unsigned int MB14 : 1; /* MB14 */ - unsigned int MB13 : 1; /* MB13 */ - unsigned int MB12 : 1; /* MB12 */ - unsigned int MB11 : 1; /* MB11 */ - unsigned int MB10 : 1; /* MB10 */ - unsigned int MB9 : 1; /* MB9 */ - unsigned int MB8 : 1; /* MB8 */ - unsigned int MB7 : 1; /* MB7 */ - unsigned int MB6 : 1; /* MB6 */ - unsigned int MB5 : 1; /* MB5 */ - unsigned int MB4 : 1; /* MB4 */ - unsigned int MB3 : 1; /* MB3 */ - unsigned int MB2 : 1; /* MB2 */ - unsigned int MB1 : 1; /* MB1 */ - } BIT; /* */ - } TXPR10; /* */ - char wk2[6]; /* */ - union { /* TXCR0 *///FFFFD02A - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short MB15 : 1; /* MB15 */ - unsigned short MB14 : 1; /* MB14 */ - unsigned short MB13 : 1; /* MB13 */ - unsigned short MB12 : 1; /* MB12 */ - unsigned short MB11 : 1; /* MB11 */ - unsigned short MB10 : 1; /* MB10 */ - unsigned short MB9 : 1; /* MB9 */ - unsigned short MB8 : 1; /* MB8 */ - unsigned short MB7 : 1; /* MB7 */ - unsigned short MB6 : 1; /* MB6 */ - unsigned short MB5 : 1; /* MB5 */ - unsigned short MB4 : 1; /* MB4 */ - unsigned short MB3 : 1; /* MB3 */ - unsigned short MB2 : 1; /* MB2 */ - unsigned short MB1 : 1; /* MB1 */ - } BIT; /* */ - } TXCR0; /* */ - char wk3[6]; /* */ - union { /* TXACK0 *///FFFFD032 - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short MB15 : 1; /* MB15 */ - unsigned short MB14 : 1; /* MB14 */ - unsigned short MB13 : 1; /* MB13 */ - unsigned short MB12 : 1; /* MB12 */ - unsigned short MB11 : 1; /* MB11 */ - unsigned short MB10 : 1; /* MB10 */ - unsigned short MB9 : 1; /* MB9 */ - unsigned short MB8 : 1; /* MB8 */ - unsigned short MB7 : 1; /* MB7 */ - unsigned short MB6 : 1; /* MB6 */ - unsigned short MB5 : 1; /* MB5 */ - unsigned short MB4 : 1; /* MB4 */ - unsigned short MB3 : 1; /* MB3 */ - unsigned short MB2 : 1; /* MB2 */ - unsigned short MB1 : 1; /* MB1 */ - } BIT; /* */ - } TXACK0; /* */ - char wk4[6]; /* */ - union { /* ABACK0 *///FFFFD03A - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short MB15 : 1; /* MB15 */ - unsigned short MB14 : 1; /* MB14 */ - unsigned short MB13 : 1; /* MB13 */ - unsigned short MB12 : 1; /* MB12 */ - unsigned short MB11 : 1; /* MB11 */ - unsigned short MB10 : 1; /* MB10 */ - unsigned short MB9 : 1; /* MB9 */ - unsigned short MB8 : 1; /* MB8 */ - unsigned short MB7 : 1; /* MB7 */ - unsigned short MB6 : 1; /* MB6 */ - unsigned short MB5 : 1; /* MB5 */ - unsigned short MB4 : 1; /* MB4 */ - unsigned short MB3 : 1; /* MB3 */ - unsigned short MB2 : 1; /* MB2 */ - unsigned short MB1 : 1; /* MB1 */ - } BIT; /* */ - } ABACK0; /* */ - char wk5[6]; /* */ - union { /* RXPR0 *///FFFFD042 - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short MB15 : 1; /* MB15 */ - unsigned short MB14 : 1; /* MB14 */ - unsigned short MB13 : 1; /* MB13 */ - unsigned short MB12 : 1; /* MB12 */ - unsigned short MB11 : 1; /* MB11 */ - unsigned short MB10 : 1; /* MB10 */ - unsigned short MB9 : 1; /* MB9 */ - unsigned short MB8 : 1; /* MB8 */ - unsigned short MB7 : 1; /* MB7 */ - unsigned short MB6 : 1; /* MB6 */ - unsigned short MB5 : 1; /* MB5 */ - unsigned short MB4 : 1; /* MB4 */ - unsigned short MB3 : 1; /* MB3 */ - unsigned short MB2 : 1; /* MB2 */ - unsigned short MB1 : 1; /* MB1 */ - unsigned short MB0 : 1; /* MB0 */ - } BIT; /* */ - } RXPR0; /* */ - char wk6[6]; /* */ - union { /* RFPR0 *///FFFFD04A - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short MB15 : 1; /* MB15 */ - unsigned short MB14 : 1; /* MB14 */ - unsigned short MB13 : 1; /* MB13 */ - unsigned short MB12 : 1; /* MB12 */ - unsigned short MB11 : 1; /* MB11 */ - unsigned short MB10 : 1; /* MB10 */ - unsigned short MB9 : 1; /* MB9 */ - unsigned short MB8 : 1; /* MB8 */ - unsigned short MB7 : 1; /* MB7 */ - unsigned short MB6 : 1; /* MB6 */ - unsigned short MB5 : 1; /* MB5 */ - unsigned short MB4 : 1; /* MB4 */ - unsigned short MB3 : 1; /* MB3 */ - unsigned short MB2 : 1; /* MB2 */ - unsigned short MB1 : 1; /* MB1 */ - unsigned short MB0 : 1; /* MB0 */ - } BIT; /* */ - } RFPR0; /* */ - char wk7[6]; /* */ - union { /* MBIMR0 *///FFFFD052 - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short MB15 : 1; /* MB15 */ - unsigned short MB14 : 1; /* MB14 */ - unsigned short MB13 : 1; /* MB13 */ - unsigned short MB12 : 1; /* MB12 */ - unsigned short MB11 : 1; /* MB11 */ - unsigned short MB10 : 1; /* MB10 */ - unsigned short MB9 : 1; /* MB9 */ - unsigned short MB8 : 1; /* MB8 */ - unsigned short MB7 : 1; /* MB7 */ - unsigned short MB6 : 1; /* MB6 */ - unsigned short MB5 : 1; /* MB5 */ - unsigned short MB4 : 1; /* MB4 */ - unsigned short MB3 : 1; /* MB3 */ - unsigned short MB2 : 1; /* MB2 */ - unsigned short MB1 : 1; /* MB1 */ - unsigned short MB0 : 1; /* MB0 */ - } BIT; /* */ - } MBIMR0; /* */ - char wk8[6]; /* */ - union { /* UMSR0 *///FFFFD05A - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short MB15 : 1; /* MB15 */ - unsigned short MB14 : 1; /* MB14 */ - unsigned short MB13 : 1; /* MB13 */ - unsigned short MB12 : 1; /* MB12 */ - unsigned short MB11 : 1; /* MB11 */ - unsigned short MB10 : 1; /* MB10 */ - unsigned short MB9 : 1; /* MB9 */ - unsigned short MB8 : 1; /* MB8 */ - unsigned short MB7 : 1; /* MB7 */ - unsigned short MB6 : 1; /* MB6 */ - unsigned short MB5 : 1; /* MB5 */ - unsigned short MB4 : 1; /* MB4 */ - unsigned short MB3 : 1; /* MB3 */ - unsigned short MB2 : 1; /* MB2 */ - unsigned short MB1 : 1; /* MB1 */ - unsigned short MB0 : 1; /* MB0 */ - } BIT; /* */ - } UMSR0; /* */ - char wk9[164]; /* */ - struct { /* MB */ - union { /* CTRL0 *///FFFFD100 - unsigned int LONG; /* Long Access*/ - struct { /* Word Access*/ - unsigned short H; /* High */ - unsigned short L; /* Low */ - } WORD; /* */ - struct { /* Bit Access */ - unsigned int IDE : 1; /* IDE */ - unsigned int RTR : 1; /* RTR */ - unsigned int : 1; /* */ - unsigned int STDID :11; /* STDID */ - unsigned int EXDID :18; /* EXDID */ - } BIT; /* */ - } CTRL0; /* */ - union { /* LAFM *///FFFFD104 - unsigned int LONG; /* Long Access*/ - struct { /* Word Access*/ - unsigned short H; /* High */ - unsigned short L; /* Low */ - } WORD; /* */ - struct { /* Bit Access */ - unsigned int IDE : 1; /* IDE */ - unsigned int : 2; /* */ - unsigned int STDID :11; /* STDID */ - unsigned int EXDID :18; /* EXDID */ - } BIT; /* */ - } LAFM; /* */ - unsigned char MSG_DATA[8]; /* MSG_DATA *///FFFFD108 - union { /* CTRL1 *///FFFFD110 - unsigned short WORD; /* Word Access*/ - struct { /* Byte Access*/ - unsigned char H; /* High */ - unsigned char L; /* Low */ - } BYTE; /* */ - struct { /* Bit Access */ - unsigned char : 2; /* */ - unsigned char NMC : 1; /* NMC */ - unsigned char ATX : 1; /* ATX */ - unsigned char DART : 1; /* DART */ - unsigned char MBC : 3; /* MBC */ - unsigned char : 4; /* */ - unsigned char DLC : 4; /* DLC */ - } BIT; /* */ - } CTRL1; /* */ - char wk[14]; /* *///FFFFD120-FFFFD110-2 - } MB[16]; /* *///FFFFD120 -}; /* */ -struct st_pfc { /* struct PFC */ - union { /* PAIORH *///FFFE3804 - unsigned short WORD; /* Word Access */ - struct { /* Byte Access */ - unsigned char H; /* High */ - unsigned char L; /* Low */ - } BYTE; /* */ - struct { /* Bit Access */ - unsigned char : 8; /* */ - unsigned char : 2; /* */ - unsigned char B21 : 1; /* Bit 21 */ - unsigned char B20 : 1; /* Bit 20 */ - unsigned char B19 : 1; /* Bit 19 */ - unsigned char B18 : 1; /* Bit 18 */ - unsigned char B17 : 1; /* Bit 17 */ - unsigned char B16 : 1; /* Bit 16 */ - } BIT; /* */ - } PAIORH; /* */ - union { /* PAIORL *///FFFE3806 - unsigned short WORD; /* Word Access */ - struct { /* Byte Access */ - unsigned char H; /* High */ - unsigned char L; /* Low */ - } BYTE; /* */ - struct { /* Bit Access */ - unsigned char B15 : 1; /* Bit 15 */ - unsigned char B14 : 1; /* Bit 14 */ - unsigned char B13 : 1; /* Bit 13 */ - unsigned char B12 : 1; /* Bit 12 */ - unsigned char B11 : 1; /* Bit 11 */ - unsigned char B10 : 1; /* Bit 10 */ - unsigned char B9 : 1; /* Bit 9 */ - unsigned char B8 : 1; /* Bit 8 */ - unsigned char B7 : 1; /* Bit 7 */ - unsigned char B6 : 1; /* Bit 6 */ - unsigned char B5 : 1; /* Bit 5 */ - unsigned char B4 : 1; /* Bit 4 */ - unsigned char B3 : 1; /* Bit 3 */ - unsigned char B2 : 1; /* Bit 2 */ - unsigned char B1 : 1; /* Bit 1 */ - unsigned char B0 : 1; /* Bit 0 */ - } BIT; /* */ - } PAIORL; /* */ - char wk1[4]; /* *///FFFE380C-FFFE3806-2 - union { /* PACRH2 *///FFFE380C - unsigned short WORD; /* Word Access */ - struct { /* Byte Access */ - unsigned char H; /* High */ - unsigned char L; /* Low */ - } BYTE; /* */ - struct { /* Bit Access */ - unsigned char : 1; /* */ - unsigned char : 3; /* */ - unsigned char : 1; /* */ - unsigned char : 3; /* */ - unsigned char : 1; /* */ - unsigned char PA21MD : 3; /* PA21MD */ - unsigned char : 1; /* */ - unsigned char PA20MD : 3; /* PA20MD */ - } BIT; /* */ - } PACRH2; /* */ - union { /* PACRH1 *///FFFE380E - unsigned short WORD; /* Word Access */ - struct { /* Byte Access */ - unsigned char H; /* High */ - unsigned char L; /* Low */ - } BYTE; /* */ - struct { /* Bit Access */ - unsigned char : 1; /* */ - unsigned char PA19MD : 3; /* PA19MD */ - unsigned char : 1; /* */ - unsigned char PA18MD : 3; /* PA18MD */ - unsigned char : 1; /* */ - unsigned char PA17MD : 3; /* PA17MD */ - unsigned char : 1; /* */ - unsigned char PA16MD : 3; /* PA16MD */ - } BIT; /* */ - } PACRH1; /* */ - union { /* PACRL4 *///FFFE3810 - unsigned short WORD; /* Word Access */ - struct { /* Byte Access */ - unsigned char H; /* High */ - unsigned char L; /* Low */ - } BYTE; /* */ - struct { /* Bit Access */ - unsigned char : 1; /* */ - unsigned char PA15MD : 3; /* PA15MD */ - unsigned char : 1; /* */ - unsigned char PA14MD : 3; /* PA14MD */ - unsigned char : 1; /* */ - unsigned char PA13MD : 3; /* PA13MD */ - unsigned char : 1; /* */ - unsigned char PA12MD : 3; /* PA12MD */ - } BIT; /* */ - } PACRL4; /* */ - union { /* PACRL3 *///FFFE3812 - unsigned short WORD; /* Word Access */ - struct { /* Byte Access */ - unsigned char H; /* High */ - unsigned char L; /* Low */ - } BYTE; /* */ - struct { /* Bit Access */ - unsigned char : 1; /* */ - unsigned char PA11MD : 3; /* PA11MD */ - unsigned char : 1; /* */ - unsigned char PA10MD : 3; /* PA10MD */ - unsigned char : 1; /* */ - unsigned char PA9MD : 3; /* PA9MD */ - unsigned char : 1; /* */ - unsigned char PA8MD : 3; /* PA8MD */ - } BIT; /* */ - } PACRL3; /* */ - union { /* PACRL2 *///FFFE3814 - unsigned short WORD; /* Word Access */ - struct { /* Byte Access */ - unsigned char H; /* High */ - unsigned char L; /* Low */ - } BYTE; /* */ - struct { /* Bit Access */ - unsigned char : 1; /* */ - unsigned char PA7MD : 3; /* PA7MD */ - unsigned char : 1; /* */ - unsigned char PA6MD : 3; /* PA6MD */ - unsigned char : 1; /* */ - unsigned char PA5MD : 3; /* PA5MD */ - unsigned char : 1; /* */ - unsigned char PA4MD : 3; /* PA4MD */ - } BIT; /* */ - } PACRL2; /* */ - union { /* PACRL1 *///FFFE3816 - unsigned short WORD; /* Word Access */ - struct { /* Byte Access */ - unsigned char H; /* High */ - unsigned char L; /* Low */ - } BYTE; /* */ - struct { /* Bit Access */ - unsigned char : 1; /* */ - unsigned char PA3MD : 3; /* PA3MD */ - unsigned char : 1; /* */ - unsigned char PA2MD : 3; /* PA2MD */ - unsigned char : 1; /* */ - unsigned char PA1MD : 3; /* PA1MD */ - unsigned char : 1; /* */ - unsigned char PA0MD : 3; /* PA0MD */ - } BIT; /* */ - } PACRL1; /* */ - char wk2[16]; /* *///FFFE3828-FFFE3810-8 - union { /* PAPCRH *///FFFE3828 - unsigned short WORD; /* Word Access */ - struct { /* Byte Access */ - unsigned char H; /* High */ - unsigned char L; /* Low */ - } BYTE; /* */ - struct { /* Bit Access */ - unsigned char : 8; /* */ - unsigned char : 2; /* */ - unsigned char PA21PCR : 1; /* PA21PCR */ - unsigned char PA20PCR : 1; /* PA20PCR */ - unsigned char PA19PCR : 1; /* PA19PCR */ - unsigned char PA18PCR : 1; /* PA18PCR */ - unsigned char PA17PCR : 1; /* PA17PCR */ - unsigned char PA16PCR : 1; /* PA16PCR */ - } BIT; /* */ - } PAPCRH; /* */ - union { /* PAPCRL *///FFFE382A - unsigned short WORD; /* Word Access */ - struct { /* Byte Access */ - unsigned char H; /* High */ - unsigned char L; /* Low */ - } BYTE; /* */ - struct { /* Bit Access */ - unsigned char PA15PCR : 1; /* PA15PCR */ - unsigned char PA14PCR : 1; /* PA14PCR */ - unsigned char PA13PCR : 1; /* PA13PCR */ - unsigned char PA12PCR : 1; /* PA12PCR */ - unsigned char PA11PCR : 1; /* PA11PCR */ - unsigned char PA10PCR : 1; /* PA10PCR */ - unsigned char PA9PCR : 1; /* PA9PCR */ - unsigned char PA8PCR : 1; /* PA8PCR */ - unsigned char PA7PCR : 1; /* PA7PCR */ - unsigned char PA6PCR : 1; /* PA6PCR */ - unsigned char PA5PCR : 1; /* PA5PCR */ - unsigned char PA4PCR : 1; /* PA4PCR */ - unsigned char PA3PCR : 1; /* PA3PCR */ - unsigned char PA2PCR : 1; /* PA2PCR */ - unsigned char PA1PCR : 1; /* PA1PCR */ - unsigned char PA0PCR : 1; /* PA0PCR */ - } BIT; /* */ - } PAPCRL; /* */ - char wk3[90]; /* *///FFFE3886-FFFE3828-4 - union { /* PBIORL *///FFFE3886 - unsigned short WORD; /* Word Access */ - struct { /* Byte Access */ - unsigned char H; /* High */ - unsigned char L; /* Low */ - } BYTE; /* */ - struct { /* Bit Access */ - unsigned char B15 : 1; /* Bit 15 */ - unsigned char B14 : 1; /* Bit 14 */ - unsigned char B13 : 1; /* Bit 13 */ - unsigned char B12 : 1; /* Bit 12 */ - unsigned char B11 : 1; /* Bit 11 */ - unsigned char B10 : 1; /* Bit 10 */ - unsigned char B9 : 1; /* Bit 9 */ - unsigned char B8 : 1; /* Bit 8 */ - unsigned char B7 : 1; /* Bit 7 */ - unsigned char B6 : 1; /* Bit 6 */ - unsigned char B5 : 1; /* Bit 5 */ - unsigned char B4 : 1; /* Bit 4 */ - unsigned char B3 : 1; /* Bit 3 */ - unsigned char B2 : 1; /* Bit 2 */ - unsigned char B1 : 1; /* Bit 1 */ - unsigned char B0 : 1; /* Bit 0 */ - } BIT; /* */ - } PBIORL; /* */ - char wk4[8]; /* *///FFFE3890-FFFE3884-4 - union { /* PBCRL4 *///FFFE3890 - unsigned short WORD; /* Word Access */ - struct { /* Byte Access */ - unsigned char H; /* High */ - unsigned char L; /* Low */ - } BYTE; /* */ - struct { /* Bit Access */ - unsigned char : 1; /* */ - unsigned char PB15MD : 3; /* PB15MD */ - unsigned char : 1; /* */ - unsigned char PB14MD : 3; /* PB14MD */ - unsigned char : 1; /* */ - unsigned char PB13MD : 3; /* PB13MD */ - unsigned char : 1; /* */ - unsigned char PB12MD : 3; /* PB12MD */ - } BIT; /* */ - } PBCRL4; /* */ - union { /* PBCRL3 *///FFFE3892 - unsigned short WORD; /* Word Access */ - struct { /* Byte Access */ - unsigned char H; /* High */ - unsigned char L; /* Low */ - } BYTE; /* */ - struct { /* Bit Access */ - unsigned char : 1; /* */ - unsigned char PB11MD : 3; /* PB11MD */ - unsigned char : 1; /* */ - unsigned char PB10MD : 3; /* PB10MD */ - unsigned char : 1; /* */ - unsigned char PB9MD : 3; /* PB9MD */ - unsigned char : 1; /* */ - unsigned char PB8MD : 3; /* PB8MD */ - } BIT; /* */ - } PBCRL3; /* */ - union { /* PBCRL2 *///FFFE3894 - unsigned short WORD; /* Word Access */ - struct { /* Byte Access */ - unsigned char H; /* High */ - unsigned char L; /* Low */ - } BYTE; /* */ - struct { /* Bit Access */ - unsigned char : 1; /* */ - unsigned char PB7MD : 3; /* PB7MD */ - unsigned char : 1; /* */ - unsigned char PB6MD : 3; /* PB6MD */ - unsigned char : 1; /* */ - unsigned char PB5MD : 3; /* PB5MD */ - unsigned char : 1; /* */ - unsigned char PB4MD : 3; /* PB4MD */ - } BIT; /* */ - } PBCRL2; /* */ - union { /* PBCRL1 *///FFFE3896 - unsigned short WORD; /* Word Access */ - struct { /* Byte Access */ - unsigned char H; /* High */ - unsigned char L; /* Low */ - } BYTE; /* */ - struct { /* Bit Access */ - unsigned char : 1; /* */ - unsigned char PB3MD : 3; /* PB3MD */ - unsigned char : 1; /* */ - unsigned char PB2MD : 3; /* PB2MD */ - unsigned char : 1; /* */ - unsigned char PB1MD : 3; /* PB1MD */ - unsigned char : 1; /* */ - unsigned char PB0MD : 3; /* PB0MD */ - } BIT; /* */ - } PBCRL1; /* */ - char wk5[18]; /* *///FFFE38AA-FFFE3896-2 - union { /* PBPCRL *///FFFE38AA - unsigned short WORD; /* Word Access */ - struct { /* Byte Access */ - unsigned char H; /* High */ - unsigned char L; /* Low */ - } BYTE; /* */ - struct { /* Bit Access */ - unsigned char PB15PCR : 1; /* PB15PCR */ - unsigned char PB14PCR : 1; /* PB14PCR */ - unsigned char PB13PCR : 1; /* PB13PCR */ - unsigned char PB12PCR : 1; /* PB12PCR */ - unsigned char PB11PCR : 1; /* PB11PCR */ - unsigned char PB10PCR : 1; /* PB10PCR */ - unsigned char PB9PCR : 1; /* PB9PCR */ - unsigned char PB8PCR : 1; /* PB8PCR */ - unsigned char PB7PCR : 1; /* PB7PCR */ - unsigned char PB6PCR : 1; /* PB6PCR */ - unsigned char PB5PCR : 1; /* PB5PCR */ - unsigned char PB4PCR : 1; /* PB4PCR */ - unsigned char PB3PCR : 1; /* PB3PCR */ - unsigned char PB2PCR : 1; /* PB2PCR */ - unsigned char PB1PCR : 1; /* PB1PCR */ - unsigned char PB0PCR : 1; /* PB0PCR */ - } BIT; /* */ - } PBPCRL; /* */ - char wk6[90]; /* *///FFFE3906-FFFE38A8-4 - union { /* PCIORL *///FFFE3906 - unsigned short WORD; /* Word Access */ - struct { /* Byte Access */ - unsigned char H; /* High */ - unsigned char L; /* Low */ - } BYTE; /* */ - struct { /* Bit Access */ - unsigned char B15 : 1; /* Bit 15 */ - unsigned char B14 : 1; /* Bit 14 */ - unsigned char B13 : 1; /* Bit 13 */ - unsigned char B12 : 1; /* Bit 12 */ - unsigned char B11 : 1; /* Bit 11 */ - unsigned char B10 : 1; /* Bit 10 */ - unsigned char B9 : 1; /* Bit 9 */ - unsigned char B8 : 1; /* Bit 8 */ - unsigned char B7 : 1; /* Bit 7 */ - unsigned char B6 : 1; /* Bit 6 */ - unsigned char B5 : 1; /* Bit 5 */ - unsigned char B4 : 1; /* Bit 4 */ - unsigned char B3 : 1; /* Bit 3 */ - unsigned char B2 : 1; /* Bit 2 */ - unsigned char B1 : 1; /* Bit 1 */ - unsigned char B0 : 1; /* Bit 0 */ - } BIT; /* */ - } PCIORL; /* */ - char wk7[8]; /* *///FFFE3910-FFFE3906-2 - union { /* PCCRL4 *///FFFE3910 - unsigned short WORD; /* Word Access */ - struct { /* Byte Access */ - unsigned char H; /* High */ - unsigned char L; /* Low */ - } BYTE; /* */ - struct { /* Bit Access */ - unsigned char : 1; /* */ - unsigned char PC15MD : 3; /* PC15MD */ - unsigned char : 1; /* */ - unsigned char PC14MD : 3; /* PC14MD */ - unsigned char : 1; /* */ - unsigned char PC13MD : 3; /* PC13MD */ - unsigned char : 1; /* */ - unsigned char PC12MD : 3; /* PC12MD */ - } BIT; /* */ - } PCCRL4; /* */ - union { /* PCCRL3 *///FFFE3912 - unsigned short WORD; /* Word Access */ - struct { /* Byte Access */ - unsigned char H; /* High */ - unsigned char L; /* Low */ - } BYTE; /* */ - struct { /* Bit Access */ - unsigned char : 1; /* */ - unsigned char PC11MD : 3; /* PC11MD */ - unsigned char : 1; /* */ - unsigned char PC10MD : 3; /* PC10MD */ - unsigned char : 1; /* */ - unsigned char PC9MD : 3; /* PC9MD */ - unsigned char : 1; /* */ - unsigned char PC8MD : 3; /* PC8MD */ - } BIT; /* */ - } PCCRL3; /* */ - union { /* PCCRL2 *///FFFE3914 - unsigned short WORD; /* Word Access */ - struct { /* Byte Access */ - unsigned char H; /* High */ - unsigned char L; /* Low */ - } BYTE; /* */ - struct { /* Bit Access */ - unsigned char : 1; /* */ - unsigned char PC7MD : 3; /* PC7MD */ - unsigned char : 1; /* */ - unsigned char PC6MD : 3; /* PC6MD */ - unsigned char : 1; /* */ - unsigned char PC5MD : 3; /* PC5MD */ - unsigned char : 1; /* */ - unsigned char PC4MD : 3; /* PC4MD */ - } BIT; /* */ - } PCCRL2; /* */ - union { /* PCCRL1 *///FFFE3916 - unsigned short WORD; /* Word Access */ - struct { /* Byte Access */ - unsigned char H; /* High */ - unsigned char L; /* Low */ - } BYTE; /* */ - struct { /* Bit Access */ - unsigned char : 1; /* */ - unsigned char PC3MD : 3; /* PC3MD */ - unsigned char : 1; /* */ - unsigned char PC2MD : 3; /* PC2MD */ - unsigned char : 1; /* */ - unsigned char PC1MD : 3; /* PC1MD */ - unsigned char : 1; /* */ - unsigned char PC0MD : 3; /* PC0MD */ - } BIT; /* */ - } PCCRL1; /* */ - char wk8[18]; /* *///FFFE392A-FFFE3916-2 - union { /* PCPCRL *///FFFE392A - unsigned short WORD; /* Word Access */ - struct { /* Byte Access */ - unsigned char H; /* High */ - unsigned char L; /* Low */ - } BYTE; /* */ - struct { /* Bit Access */ - unsigned char PC15PCR : 1; /* PC15PCR */ - unsigned char PC14PCR : 1; /* PC14PCR */ - unsigned char PC13PCR : 1; /* PC13PCR */ - unsigned char PC12PCR : 1; /* PC12PCR */ - unsigned char PC11PCR : 1; /* PC11PCR */ - unsigned char PC10PCR : 1; /* PC10PCR */ - unsigned char PC9PCR : 1; /* PC9PCR */ - unsigned char PC8PCR : 1; /* PC8PCR */ - unsigned char PC7PCR : 1; /* PC7PCR */ - unsigned char PC6PCR : 1; /* PC6PCR */ - unsigned char PC5PCR : 1; /* PC2PCR */ - unsigned char PC4PCR : 1; /* PC1PCR */ - unsigned char PC3PCR : 1; /* PC0PCR */ - unsigned char PC2PCR : 1; /* PC2PCR */ - unsigned char PC1PCR : 1; /* PC1PCR */ - unsigned char PC0PCR : 1; /* PC0PCR */ - } BIT; /* */ - } PCPCRL; /* */ - char wk9[88]; /* *///FFFE3984-FFFE392A-2 - union { /* PDIORH *///FFFE3984 - unsigned short WORD; /* Word Access */ - struct { /* Byte Access */ - unsigned char H; /* High */ - unsigned char L; /* Low */ - } BYTE; /* */ - struct { /* Bit Access */ - unsigned char B31 : 1; /* Bit 31 */ - unsigned char B30 : 1; /* Bit 30 */ - unsigned char B29 : 1; /* Bit 29 */ - unsigned char B28 : 1; /* Bit 28 */ - unsigned char B27 : 1; /* Bit 27 */ - unsigned char B26 : 1; /* Bit 26 */ - unsigned char B25 : 1; /* Bit 25 */ - unsigned char B24 : 1; /* Bit 24 */ - unsigned char B23 : 1; /* Bit 23 */ - unsigned char B22 : 1; /* Bit 22 */ - unsigned char B21 : 1; /* Bit 21 */ - unsigned char B20 : 1; /* Bit 20 */ - unsigned char B19 : 1; /* Bit 19 */ - unsigned char B18 : 1; /* Bit 18 */ - unsigned char B17 : 1; /* Bit 17 */ - unsigned char B16 : 1; /* Bit 16 */ - } BIT; /* */ - } PDIORH; /* */ - union { /* PDIORL *///FFFE3986 - unsigned short WORD; /* Word Access */ - struct { /* Byte Access */ - unsigned char H; /* High */ - unsigned char L; /* Low */ - } BYTE; /* */ - struct { /* Bit Access */ - unsigned char B15 : 1; /* Bit 15 */ - unsigned char B14 : 1; /* Bit 14 */ - unsigned char B13 : 1; /* Bit 13 */ - unsigned char B12 : 1; /* Bit 12 */ - unsigned char B11 : 1; /* Bit 11 */ - unsigned char B10 : 1; /* Bit 10 */ - unsigned char B9 : 1; /* Bit 9 */ - unsigned char B8 : 1; /* Bit 8 */ - unsigned char B7 : 1; /* Bit 7 */ - unsigned char B6 : 1; /* Bit 6 */ - unsigned char B5 : 1; /* Bit 5 */ - unsigned char B4 : 1; /* Bit 4 */ - unsigned char B3 : 1; /* Bit 3 */ - unsigned char B2 : 1; /* Bit 2 */ - unsigned char B1 : 1; /* Bit 1 */ - unsigned char B0 : 1; /* Bit 0 */ - } BIT; /* */ - } PDIORL; /* */ - union { /* PDCRH4 *///FFFE3988 - unsigned short WORD; /* Word Access */ - struct { /* Byte Access */ - unsigned char H; /* High */ - unsigned char L; /* Low */ - } BYTE; /* */ - struct { /* Bit Access */ - unsigned char : 1; /* */ - unsigned char PD31MD : 3; /* PD31MD */ - unsigned char : 1; /* */ - unsigned char PD30MD : 3; /* PD30MD */ - unsigned char : 1; /* */ - unsigned char PD29MD : 3; /* PD29MD */ - unsigned char : 1; /* */ - unsigned char PD28MD : 3; /* PD28MD */ - } BIT; /* */ - } PDCRH4; /* */ - union { /* PDCRH3 *///FFFE398A - unsigned short WORD; /* Word Access */ - struct { /* Byte Access */ - unsigned char H; /* High */ - unsigned char L; /* Low */ - } BYTE; /* */ - struct { /* Bit Access */ - unsigned char : 1; /* */ - unsigned char PD27MD : 3; /* PD27MD */ - unsigned char : 1; /* */ - unsigned char PD26MD : 3; /* PD26MD */ - unsigned char : 1; /* */ - unsigned char PD25MD : 3; /* PD25MD */ - unsigned char : 1; /* */ - unsigned char PD24MD : 3; /* PD24MD */ - } BIT; /* */ - } PDCRH3; /* */ - union { /* PDCRH2 *///FFFE398C - unsigned short WORD; /* Word Access */ - struct { /* Byte Access */ - unsigned char H; /* High */ - unsigned char L; /* Low */ - } BYTE; /* */ - struct { /* Bit Access */ - unsigned char : 1; /* */ - unsigned char PD23MD : 3; /* PD23MD */ - unsigned char : 1; /* */ - unsigned char PD22MD : 3; /* PD22MD */ - unsigned char : 1; /* */ - unsigned char PD21MD : 3; /* PD21MD */ - unsigned char : 1; /* */ - unsigned char PD20MD : 3; /* PD20MD */ - } BIT; /* */ - } PDCRH2; /* */ - union { /* PDCRH1 *///FFFE398E - unsigned short WORD; /* Word Access */ - struct { /* Byte Access */ - unsigned char H; /* High */ - unsigned char L; /* Low */ - } BYTE; /* */ - struct { /* Bit Access */ - unsigned char : 1; /* */ - unsigned char PD19MD : 3; /* PD19MD */ - unsigned char : 1; /* */ - unsigned char PD18MD : 3; /* PD18MD */ - unsigned char : 1; /* */ - unsigned char PD17MD : 3; /* PD17MD */ - unsigned char : 1; /* */ - unsigned char PD16MD : 3; /* PD16MD */ - } BIT; /* */ - } PDCRH1; /* */ - union { /* PDCRL4 *///FFFE3990 - unsigned short WORD; /* Word Access */ - struct { /* Byte Access */ - unsigned char H; /* High */ - unsigned char L; /* Low */ - } BYTE; /* */ - struct { /* Bit Access */ - unsigned char : 1; /* */ - unsigned char PD15MD : 3; /* PD15MD */ - unsigned char : 1; /* */ - unsigned char PD14MD : 3; /* PD14MD */ - unsigned char : 1; /* */ - unsigned char PD13MD : 3; /* PD13MD */ - unsigned char : 1; /* */ - unsigned char PD12MD : 3; /* PD12MD */ - } BIT; /* */ - } PDCRL4; /* */ - union { /* PDCRL3 *///FFFE3992 - unsigned short WORD; /* Word Access */ - struct { /* Byte Access */ - unsigned char H; /* High */ - unsigned char L; /* Low */ - } BYTE; /* */ - struct { /* Bit Access */ - unsigned char : 1; /* */ - unsigned char PD11MD : 3; /* PD11MD */ - unsigned char : 1; /* */ - unsigned char PD10MD : 3; /* PD10MD */ - unsigned char : 1; /* */ - unsigned char PD9MD : 3; /* PD9MD */ - unsigned char : 1; /* */ - unsigned char PD8MD : 3; /* PD8MD */ - } BIT; /* */ - } PDCRL3; /* */ - union { /* PDCRL2 *///FFFE3994 - unsigned short WORD; /* Word Access */ - struct { /* Byte Access */ - unsigned char H; /* High */ - unsigned char L; /* Low */ - } BYTE; /* */ - struct { /* Bit Access */ - unsigned char : 1; /* */ - unsigned char PD7MD : 3; /* PD7MD */ - unsigned char : 1; /* */ - unsigned char PD6MD : 3; /* PD6MD */ - unsigned char : 1; /* */ - unsigned char PD5MD : 3; /* PD5MD */ - unsigned char : 1; /* */ - unsigned char PD4MD : 3; /* PD4MD */ - } BIT; /* */ - } PDCRL2; /* */ - union { /* PDCRL1 *///FFFE3996 - unsigned short WORD; /* Word Access */ - struct { /* Byte Access */ - unsigned char H; /* High */ - unsigned char L; /* Low */ - } BYTE; /* */ - struct { /* Bit Access */ - unsigned char : 1; /* */ - unsigned char PD3MD : 3; /* PD3MD */ - unsigned char : 1; /* */ - unsigned char PD2MD : 3; /* PD2MD */ - unsigned char : 1; /* */ - unsigned char PD1MD : 3; /* PD1MD */ - unsigned char : 1; /* */ - unsigned char PD0MD : 3; /* PD0MD */ - } BIT; /* */ - } PDCRL1; /* */ - char wk10[16]; /* *///FFFE39A8-FFFE3996-2 - union { /* PDPCRH *///FFFE39A8 - unsigned short WORD; /* Word Access */ - struct { /* Byte Access */ - unsigned char H; /* High */ - unsigned char L; /* Low */ - } BYTE; /* */ - struct { /* Bit Access */ - unsigned char PD31PCR : 1; /* PD31PCR */ - unsigned char PD30PCR : 1; /* PD30PCR */ - unsigned char PD29PCR : 1; /* PD29PCR */ - unsigned char PD28PCR : 1; /* PD28PCR */ - unsigned char PD27PCR : 1; /* PD27PCR */ - unsigned char PD26PCR : 1; /* PD26PCR */ - unsigned char PD25PCR : 1; /* PD25PCR */ - unsigned char PD24PCR : 1; /* PD24PCR */ - unsigned char PD23PCR : 1; /* PD23PCR */ - unsigned char PD22PCR : 1; /* PD22PCR */ - unsigned char PD21PCR : 1; /* PD21PCR */ - unsigned char PD20PCR : 1; /* PD20PCR */ - unsigned char PD19PCR : 1; /* PD19PCR */ - unsigned char PD18PCR : 1; /* PD18PCR */ - unsigned char PD17PCR : 1; /* PD17PCR */ - unsigned char PD16PCR : 1; /* PD16PCR */ - } BIT; /* */ - } PDPCRH; /* */ - union { /* PDPCRL *///FFFE39AA - unsigned short WORD; /* Word Access */ - struct { /* Byte Access */ - unsigned char H; /* High */ - unsigned char L; /* Low */ - } BYTE; /* */ - struct { /* Bit Access */ - unsigned char PD15PCR : 1; /* PD15PCR */ - unsigned char PD14PCR : 1; /* PD14PCR */ - unsigned char PD13PCR : 1; /* PD13PCR */ - unsigned char PD12PCR : 1; /* PD12PCR */ - unsigned char PD11PCR : 1; /* PD11PCR */ - unsigned char PD10PCR : 1; /* PD10PCR */ - unsigned char PD9PCR : 1; /* PD9PCR */ - unsigned char PD8PCR : 1; /* PD8PCR */ - unsigned char PD7PCR : 1; /* PD7PCR */ - unsigned char PD6PCR : 1; /* PD6PCR */ - unsigned char PD5PCR : 1; /* PD5PCR */ - unsigned char PD4PCR : 1; /* PD4PCR */ - unsigned char PD3PCR : 1; /* PD3PCR */ - unsigned char PD2PCR : 1; /* PD2PCR */ - unsigned char PD1PCR : 1; /* PD1PCR */ - unsigned char PD0PCR : 1; /* PD0PCR */ - } BIT; /* */ - } PDPCRL; /* */ - char wk11[90]; /* *///FFFE3A06-FFFE39AA-2 - union { /* PEIORL *///FFFE3A06 - unsigned short WORD; /* Word Access */ - struct { /* Byte Access */ - unsigned char H; /* High */ - unsigned char L; /* Low */ - } BYTE; /* */ - struct { /* Bit Access */ - unsigned char B15 : 1; /* Bit 15 */ - unsigned char B14 : 1; /* Bit 14 */ - unsigned char B13 : 1; /* Bit 13 */ - unsigned char B12 : 1; /* Bit 12 */ - unsigned char B11 : 1; /* Bit 11 */ - unsigned char B10 : 1; /* Bit 10 */ - unsigned char B9 : 1; /* Bit 9 */ - unsigned char B8 : 1; /* Bit 8 */ - unsigned char B7 : 1; /* Bit 7 */ - unsigned char B6 : 1; /* Bit 6 */ - unsigned char B5 : 1; /* Bit 5 */ - unsigned char B4 : 1; /* Bit 4 */ - unsigned char B3 : 1; /* Bit 3 */ - unsigned char B2 : 1; /* Bit 2 */ - unsigned char B1 : 1; /* Bit 1 */ - unsigned char B0 : 1; /* Bit 0 */ - } BIT; /* */ - } PEIORL; /* */ - char wk12[8]; /* *///FFFE3A10-FFFE3A06-2 - union { /* PECRL4 *///FFFE3A10 - unsigned short WORD; /* Word Access */ - struct { /* Byte Access */ - unsigned char H; /* High */ - unsigned char L; /* Low */ - } BYTE; /* */ - struct { /* Bit Access */ - unsigned char : 1; /* */ - unsigned char PE15MD : 3; /* PE15MD */ - unsigned char : 1; /* */ - unsigned char PE14MD : 3; /* PE14MD */ - unsigned char : 1; /* */ - unsigned char PE13MD : 3; /* PE13MD */ - unsigned char : 1; /* */ - unsigned char PE12MD : 3; /* PE12MD */ - } BIT; /* */ - } PECRL4; /* */ - union { /* PECRL3 *///FFFE3A12 - unsigned short WORD; /* Word Access */ - struct { /* Byte Access */ - unsigned char H; /* High */ - unsigned char L; /* Low */ - } BYTE; /* */ - struct { /* Bit Access */ - unsigned char : 1; /* */ - unsigned char PE11MD : 3; /* PE11MD */ - unsigned char : 1; /* */ - unsigned char PE10MD : 3; /* PE10MD */ - unsigned char : 1; /* */ - unsigned char PE9MD : 3; /* PE9MD */ - unsigned char : 1; /* */ - unsigned char PE8MD : 3; /* PE8MD */ - } BIT; /* */ - } PECRL3; /* */ - union { /* PECRL2 *///FFFE3A14 - unsigned short WORD; /* Word Access */ - struct { /* Byte Access */ - unsigned char H; /* High */ - unsigned char L; /* Low */ - } BYTE; /* */ - struct { /* Bit Access */ - unsigned char : 1; /* */ - unsigned char PE7MD : 3; /* PE7MD */ - unsigned char : 1; /* */ - unsigned char PE6MD : 3; /* PE6MD */ - unsigned char : 1; /* */ - unsigned char PE5MD : 3; /* PE5MD */ - unsigned char : 1; /* */ - unsigned char PE4MD : 3; /* PE4MD */ - } BIT; /* */ - } PECRL2; /* */ - union { /* PECRL1 *///FFFE3A16 - unsigned short WORD; /* Word Access */ - struct { /* Byte Access */ - unsigned char H; /* High */ - unsigned char L; /* Low */ - } BYTE; /* */ - struct { /* Bit Access */ - unsigned char : 1; /* */ - unsigned char PE3MD : 3; /* PE3MD */ - unsigned char : 1; /* */ - unsigned char PE2MD : 3; /* PE2MD */ - unsigned char : 1; /* */ - unsigned char PE1MD : 3; /* PE1MD */ - unsigned char : 1; /* */ - unsigned char PE0MD : 3; /* PE0MD */ - } BIT; /* */ - } PECRL1; /* */ - char wk13[8]; /* *///FFFE3A20-FFFE3A16-2 - union { /* HCPCR *///FFFE3A20 - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned char : 8; /* */ - unsigned char : 4; /* */ - unsigned char MZIZDH : 1; /* MZIZDH */ - unsigned char MZIZDL : 1; /* MZIZDL */ - unsigned char MZIZEH : 1; /* MZIZEH */ - unsigned char MZIZEL : 1; /* MZIZEL */ - } BIT; /* */ - } HCPCR; /* */ - union { /* IFCR *///FFFE3A22 - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned char : 8; /* */ - unsigned char : 4; /* */ - unsigned char IRQMD32 : 2; /* IRQMD3/2 */ - unsigned char IRQMD10 : 2; /* IRQMD1/0 */ - } BIT; /* */ - } IFCR; /* */ - char wk14[6]; /* *///FFFE3A2A-FFFE3A22-2 - union { /* PEPCRL *///FFFE3A2A - unsigned short WORD; /* Word Access */ - struct { /* Byte Access */ - unsigned char H; /* High */ - unsigned char L; /* Low */ - } BYTE; /* */ - struct { /* Bit Access */ - unsigned char PE15PCR : 1; /* PE15PCR */ - unsigned char PE14PCR : 1; /* PE14PCR */ - unsigned char PE13PCR : 1; /* PE13PCR */ - unsigned char PE12PCR : 1; /* PE12PCR */ - unsigned char PE11PCR : 1; /* PE11PCR */ - unsigned char PE10PCR : 1; /* PE10PCR */ - unsigned char PE9PCR : 1; /* PE9PCR */ - unsigned char PE8PCR : 1; /* PE8PCR */ - unsigned char PE7PCR : 1; /* PE7PCR */ - unsigned char PE6PCR : 1; /* PE6PCR */ - unsigned char PE5PCR : 1; /* PE5PCR */ - unsigned char PE4PCR : 1; /* PE4PCR */ - unsigned char PE3PCR : 1; /* PE3PCR */ - unsigned char PE2PCR : 1; /* PE2PCR */ - unsigned char PE1PCR : 1; /* PE1PCR */ - unsigned char PE0PCR : 1; /* PE0PCR */ - } BIT; /* */ - } PEPCRL; /* */ - union { /* PDACKCR *///FFFE3A2C - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned char : 8; /* */ - unsigned char : 4; /* */ - unsigned char DACK3TMG : 1; /* DACK3TMG */ - unsigned char DACK2TMG : 1; /* DACK2TMG */ - unsigned char DACK1TMG : 1; /* DACK1TMG */ - unsigned char DACK0TMG : 1; /* DACK0TMG */ - } BIT; /* */ - } PDACKCR; /* */ -}; /* */ -struct st_pa { /* struct PA */ - union { /* PADR *///FFFE3800 - unsigned int LONG; /* Long Access */ - struct { /* Word Access */ - unsigned short H; /* High */ - unsigned short L; /* Low */ - } WORD; /* */ - struct { /* Byte Access */ - unsigned char HH; /* High,High */ - unsigned char HL; /* High,Low */ - unsigned char LH; /* Low,High */ - unsigned char LL; /* Low,Low */ - } BYTE; /* */ - struct { /* Bit Access */ - unsigned char : 8; /* */ - unsigned char : 2; /* */ - unsigned char B21 : 1; /* Bit 21 */ - unsigned char B20 : 1; /* Bit 20 */ - unsigned char B19 : 1; /* Bit 19 */ - unsigned char B18 : 1; /* Bit 18 */ - unsigned char B17 : 1; /* Bit 17 */ - unsigned char B16 : 1; /* Bit 16 */ - unsigned char B15 : 1; /* Bit 15 */ - unsigned char B14 : 1; /* Bit 14 */ - unsigned char B13 : 1; /* Bit 13 */ - unsigned char B12 : 1; /* Bit 12 */ - unsigned char B11 : 1; /* Bit 11 */ - unsigned char B10 : 1; /* Bit 10 */ - unsigned char B9 : 1; /* Bit 9 */ - unsigned char B8 : 1; /* Bit 8 */ - unsigned char B7 : 1; /* Bit 7 */ - unsigned char B6 : 1; /* Bit 6 */ - unsigned char B5 : 1; /* Bit 5 */ - unsigned char B4 : 1; /* Bit 4 */ - unsigned char B3 : 1; /* Bit 3 */ - unsigned char B2 : 1; /* Bit 2 */ - unsigned char B1 : 1; /* Bit 1 */ - unsigned char B0 : 1; /* Bit 0 */ - } BIT; /* */ - } DR; /* */ - char wk1[24]; /* *///FFFE381C-FFFEE3800-4 - union { /* PAPR *///FFFE381C - unsigned int LONG; /* Long Access */ - struct { /* Word Access */ - unsigned short H; /* High */ - unsigned short L; /* Low */ - } WORD; /* */ - struct { /* Byte Access */ - unsigned char HH; /* High,High */ - unsigned char HL; /* High,Low */ - unsigned char LH; /* Low,High */ - unsigned char LL; /* Low,Low */ - } BYTE; /* */ - struct { /* Bit Access */ - unsigned char : 8; /* */ - unsigned char : 2; /* */ - unsigned char B21 : 1; /* Bit 21 */ - unsigned char B20 : 1; /* Bit 20 */ - unsigned char B19 : 1; /* Bit 19 */ - unsigned char B18 : 1; /* Bit 18 */ - unsigned char B17 : 1; /* Bit 17 */ - unsigned char B16 : 1; /* Bit 16 */ - unsigned char B15 : 1; /* Bit 15 */ - unsigned char B14 : 1; /* Bit 14 */ - unsigned char B13 : 1; /* Bit 13 */ - unsigned char B12 : 1; /* Bit 12 */ - unsigned char B11 : 1; /* Bit 11 */ - unsigned char B10 : 1; /* Bit 10 */ - unsigned char B9 : 1; /* Bit 9 */ - unsigned char B8 : 1; /* Bit 8 */ - unsigned char B7 : 1; /* Bit 7 */ - unsigned char B6 : 1; /* Bit 6 */ - unsigned char B5 : 1; /* Bit 5 */ - unsigned char B4 : 1; /* Bit 4 */ - unsigned char B3 : 1; /* Bit 3 */ - unsigned char B2 : 1; /* Bit 2 */ - unsigned char B1 : 1; /* Bit 1 */ - unsigned char B0 : 1; /* Bit 0 */ - } BIT; /* */ - } PR; /* */ -}; /* */ -struct st_pb { /* struct PB */ - char wk1[2]; /* *///FFFE3800 - union { /* PBDR *///FFFE3882 - unsigned short WORD; /* Word Access */ - struct { /* Byte Access */ - unsigned char H; /* High */ - unsigned char L; /* Low */ - } BYTE; /* */ - struct { /* Bit Access */ - unsigned char B15 : 1; /* Bit 15 */ - unsigned char B14 : 1; /* Bit 14 */ - unsigned char B13 : 1; /* Bit 13 */ - unsigned char B12 : 1; /* Bit 12 */ - unsigned char B11 : 1; /* Bit 11 */ - unsigned char B10 : 1; /* Bit 10 */ - unsigned char B9 : 1; /* Bit 9 */ - unsigned char B8 : 1; /* Bit 8 */ - unsigned char B7 : 1; /* Bit 7 */ - unsigned char B6 : 1; /* Bit 6 */ - unsigned char B5 : 1; /* Bit 5 */ - unsigned char B4 : 1; /* Bit 4 */ - unsigned char B3 : 1; /* Bit 3 */ - unsigned char B2 : 1; /* Bit 2 */ - unsigned char B1 : 1; /* Bit 1 */ - unsigned char B0 : 1; /* Bit 0 */ - } BIT; /* */ - } DR; /* */ - char wk2[26]; /* *///FFFE389E-FFFE3882-2 - union { /* PBPR *///FFFE389E - unsigned short WORD; /* Word Access */ - struct { /* Byte Access */ - unsigned char H; /* High */ - unsigned char L; /* High */ - } BYTE; /* */ - struct { /* Bit Access */ - unsigned char B15 : 1; /* Bit 15 */ - unsigned char B14 : 1; /* Bit 14 */ - unsigned char B13 : 1; /* Bit 13 */ - unsigned char B12 : 1; /* Bit 12 */ - unsigned char B11 : 1; /* Bit 11 */ - unsigned char B10 : 1; /* Bit 10 */ - unsigned char B9 : 1; /* Bit 9 */ - unsigned char B8 : 1; /* Bit 8 */ - unsigned char B7 : 1; /* Bit 7 */ - unsigned char B6 : 1; /* Bit 6 */ - unsigned char B5 : 1; /* Bit 5 */ - unsigned char B4 : 1; /* Bit 4 */ - unsigned char B3 : 1; /* Bit 3 */ - unsigned char B2 : 1; /* Bit 2 */ - unsigned char B1 : 1; /* Bit 1 */ - unsigned char B0 : 1; /* Bit 0 */ - } BIT; /* */ - } PR; /* */ -}; /* */ -struct st_pc { /* struct PC */ - char wk1[2]; /* *///FFFE3900 - union { /* PCDR *///FFFE3902 - unsigned short WORD; /* Word Access */ - struct { /* Byte Access */ - unsigned char H; /* High */ - unsigned char L; /* Low */ - } BYTE; /* */ - struct { /* Bit Access */ - unsigned char B15 : 1; /* Bit 15 */ - unsigned char B14 : 1; /* Bit 14 */ - unsigned char B13 : 1; /* Bit 13 */ - unsigned char B12 : 1; /* Bit 12 */ - unsigned char B11 : 1; /* Bit 11 */ - unsigned char B10 : 1; /* Bit 10 */ - unsigned char B9 : 1; /* Bit 9 */ - unsigned char B8 : 1; /* Bit 8 */ - unsigned char B7 : 1; /* Bit 7 */ - unsigned char B6 : 1; /* Bit 6 */ - unsigned char B5 : 1; /* Bit 5 */ - unsigned char B4 : 1; /* Bit 4 */ - unsigned char B3 : 1; /* Bit 3 */ - unsigned char B2 : 1; /* Bit 2 */ - unsigned char B1 : 1; /* Bit 1 */ - unsigned char B0 : 1; /* Bit 0 */ - } BIT; /* */ - } DR; /* */ - char wk2[26]; /* *///FFFE391E-FFFE3902-2 - union { /* PCPR *///FFFE391E - unsigned short WORD; /* Word Access */ - struct { /* Byte Access */ - unsigned char H; /* High */ - unsigned char L; /* Low */ - } BYTE; /* */ - struct { /* Bit Access */ - unsigned char B15 : 1; /* Bit 15 */ - unsigned char B14 : 1; /* Bit 14 */ - unsigned char B13 : 1; /* Bit 13 */ - unsigned char B12 : 1; /* Bit 12 */ - unsigned char B11 : 1; /* Bit 11 */ - unsigned char B10 : 1; /* Bit 10 */ - unsigned char B9 : 1; /* Bit 9 */ - unsigned char B8 : 1; /* Bit 8 */ - unsigned char B7 : 1; /* Bit 7 */ - unsigned char B6 : 1; /* Bit 6 */ - unsigned char B5 : 1; /* Bit 5 */ - unsigned char B4 : 1; /* Bit 4 */ - unsigned char B3 : 1; /* Bit 3 */ - unsigned char B2 : 1; /* Bit 2 */ - unsigned char B1 : 1; /* Bit 1 */ - unsigned char B0 : 1; /* Bit 0 */ - } BIT; /* */ - } PR; /* */ -}; /* */ -struct st_pd { /* struct PD */ - union { /* PDDR *///FFFE3980 - unsigned int LONG; /* Long Access */ - struct { /* Word Access */ - unsigned short H; /* High */ - unsigned short L; /* Low */ - } WORD; /* */ - struct { /* Byte Access */ - unsigned char HH; /* High,High */ - unsigned char HL; /* High,Low */ - unsigned char LH; /* Low,High */ - unsigned char LL; /* Low,Low */ - } BYTE; /* */ - struct { /* Bit Access */ - unsigned char B31 : 1; /* Bit 31 */ - unsigned char B30 : 1; /* Bit 30 */ - unsigned char B29 : 1; /* Bit 29 */ - unsigned char B28 : 1; /* Bit 28 */ - unsigned char B27 : 1; /* Bit 27 */ - unsigned char B26 : 1; /* Bit 26 */ - unsigned char B25 : 1; /* Bit 25 */ - unsigned char B24 : 1; /* Bit 24 */ - unsigned char B23 : 1; /* Bit 23 */ - unsigned char B22 : 1; /* Bit 22 */ - unsigned char B21 : 1; /* Bit 21 */ - unsigned char B20 : 1; /* Bit 20 */ - unsigned char B19 : 1; /* Bit 19 */ - unsigned char B18 : 1; /* Bit 18 */ - unsigned char B17 : 1; /* Bit 17 */ - unsigned char B16 : 1; /* Bit 16 */ - unsigned char B15 : 1; /* Bit 15 */ - unsigned char B14 : 1; /* Bit 14 */ - unsigned char B13 : 1; /* Bit 13 */ - unsigned char B12 : 1; /* Bit 12 */ - unsigned char B11 : 1; /* Bit 11 */ - unsigned char B10 : 1; /* Bit 10 */ - unsigned char B9 : 1; /* Bit 9 */ - unsigned char B8 : 1; /* Bit 8 */ - unsigned char B7 : 1; /* Bit 7 */ - unsigned char B6 : 1; /* Bit 6 */ - unsigned char B5 : 1; /* Bit 5 */ - unsigned char B4 : 1; /* Bit 4 */ - unsigned char B3 : 1; /* Bit 3 */ - unsigned char B2 : 1; /* Bit 2 */ - unsigned char B1 : 1; /* Bit 1 */ - unsigned char B0 : 1; /* Bit 0 */ - } BIT; /* */ - } DR; /* */ - char wk1[24]; /* *///FFFE399C-FFFE3980-4 - union { /* PDPR *///FFFE399C - unsigned int LONG; /* Long Access */ - struct { /* Word Access */ - unsigned short H; /* High */ - unsigned short L; /* Low */ - } WORD; /* */ - struct { /* Byte Access */ - unsigned char HH; /* High,High */ - unsigned char HL; /* High,Low */ - unsigned char LH; /* Low,High */ - unsigned char LL; /* Low,Low */ - } BYTE; /* */ - struct { /* Bit Access */ - unsigned char B31 : 1; /* Bit 31 */ - unsigned char B30 : 1; /* Bit 30 */ - unsigned char B29 : 1; /* Bit 29 */ - unsigned char B28 : 1; /* Bit 28 */ - unsigned char B27 : 1; /* Bit 27 */ - unsigned char B26 : 1; /* Bit 26 */ - unsigned char B25 : 1; /* Bit 25 */ - unsigned char B24 : 1; /* Bit 24 */ - unsigned char B23 : 1; /* Bit 23 */ - unsigned char B22 : 1; /* Bit 22 */ - unsigned char B21 : 1; /* Bit 21 */ - unsigned char B20 : 1; /* Bit 20 */ - unsigned char B19 : 1; /* Bit 19 */ - unsigned char B18 : 1; /* Bit 18 */ - unsigned char B17 : 1; /* Bit 17 */ - unsigned char B16 : 1; /* Bit 16 */ - unsigned char B15 : 1; /* Bit 15 */ - unsigned char B14 : 1; /* Bit 14 */ - unsigned char B13 : 1; /* Bit 13 */ - unsigned char B12 : 1; /* Bit 12 */ - unsigned char B11 : 1; /* Bit 11 */ - unsigned char B10 : 1; /* Bit 10 */ - unsigned char B9 : 1; /* Bit 9 */ - unsigned char B8 : 1; /* Bit 8 */ - unsigned char B7 : 1; /* Bit 7 */ - unsigned char B6 : 1; /* Bit 6 */ - unsigned char B5 : 1; /* Bit 5 */ - unsigned char B4 : 1; /* Bit 4 */ - unsigned char B3 : 1; /* Bit 3 */ - unsigned char B2 : 1; /* Bit 2 */ - unsigned char B1 : 1; /* Bit 1 */ - unsigned char B0 : 1; /* Bit 0 */ - } BIT; /* */ - } PR; /* */ -}; /* */ -struct st_pe { /* struct PE */ - char wk1[2]; /* *///FFFE3A00 - union { /* PEDR *///FFFE3A02 - unsigned short WORD; /* Word Access */ - struct { /* Byte Access */ - unsigned char H; /* High */ - unsigned char L; /* Low */ - } BYTE; /* */ - struct { /* Bit Access */ - unsigned char B15 : 1; /* Bit 15 */ - unsigned char B14 : 1; /* Bit 14 */ - unsigned char B13 : 1; /* Bit 13 */ - unsigned char B12 : 1; /* Bit 12 */ - unsigned char B11 : 1; /* Bit 11 */ - unsigned char B10 : 1; /* Bit 10 */ - unsigned char B9 : 1; /* Bit 9 */ - unsigned char B8 : 1; /* Bit 8 */ - unsigned char B7 : 1; /* Bit 7 */ - unsigned char B6 : 1; /* Bit 6 */ - unsigned char B5 : 1; /* Bit 5 */ - unsigned char B4 : 1; /* Bit 4 */ - unsigned char B3 : 1; /* Bit 3 */ - unsigned char B2 : 1; /* Bit 2 */ - unsigned char B1 : 1; /* Bit 1 */ - unsigned char B0 : 1; /* Bit 0 */ - } BIT; /* */ - } DR; /* */ - char wk2[26]; /* *///FFFE3A1E-FFFE3A02-2 - union { /* PEPR *///FFFE3A1E - unsigned short WORD; /* Word Access */ - struct { /* Byte Access */ - unsigned char H; /* High */ - unsigned char L; /* Low */ - } BYTE; /* */ - struct { /* Bit Access */ - unsigned char B15 : 1; /* Bit 15 */ - unsigned char B14 : 1; /* Bit 14 */ - unsigned char B13 : 1; /* Bit 13 */ - unsigned char B12 : 1; /* Bit 12 */ - unsigned char B11 : 1; /* Bit 11 */ - unsigned char B10 : 1; /* Bit 10 */ - unsigned char B9 : 1; /* Bit 9 */ - unsigned char B8 : 1; /* Bit 8 */ - unsigned char B7 : 1; /* Bit 7 */ - unsigned char B6 : 1; /* Bit 6 */ - unsigned char B5 : 1; /* Bit 5 */ - unsigned char B4 : 1; /* Bit 4 */ - unsigned char B3 : 1; /* Bit 3 */ - unsigned char B2 : 1; /* Bit 2 */ - unsigned char B1 : 1; /* Bit 1 */ - unsigned char B0 : 1; /* Bit 0 */ - } BIT; /* */ - } PR; /* */ -}; /* */ -struct st_pf { /* struct PF */ - char wk1[2]; /* *///FFFE3A80 - union { /* PFDR *///FFFE3A82 - unsigned short WORD; /* Word Access */ - struct { /* Byte Access */ - char wk2[1]; /* */ - unsigned char L; /* Low */ - } BYTE; /* */ - struct { /* Bit Access */ - unsigned char : 8; /* */ - unsigned char B7 : 1; /* Bit 7 */ - unsigned char B6 : 1; /* Bit 6 */ - unsigned char B5 : 1; /* Bit 5 */ - unsigned char B4 : 1; /* Bit 4 */ - unsigned char B3 : 1; /* Bit 3 */ - unsigned char B2 : 1; /* Bit 2 */ - unsigned char B1 : 1; /* Bit 1 */ - unsigned char B0 : 1; /* Bit 0 */ - } BIT; /* */ - } DR; /* */ -}; /* */ -struct st_usb { /* struct USB */ - union { /* USBIFR0 *///FFFE7000 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char BRST : 1; /* BRST */ - unsigned char CFDN : 1; /* CFDN */ - unsigned char : 2; /* */ - unsigned char SETC : 1; /* SETC */ - unsigned char SETI : 1; /* SETI */ - unsigned char VBUSMN : 1; /* VBUSMN */ - unsigned char VBUSF : 1; /* VBUSF */ - } BIT; /* */ - } USBIFR0; /* */ - union { /* USBIFR1 *///FFFE7001 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 3; /* */ - unsigned char SOF : 1; /* SOF */ - unsigned char SETUPTS : 1; /* SETUPTS */ - unsigned char EP0oTS : 1; /* EP0oTS */ - unsigned char EP0iTR : 1; /* EP0iTR */ - unsigned char EP0iTS : 1; /* EP0iTS */ - } BIT; /* */ - } USBIFR1; /* */ - union { /* USBIFR2 *///FFFE7002 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 2; /* */ - unsigned char EP3TR : 1; /* EP3TR */ - unsigned char EP3TS : 1; /* EP3TS */ - unsigned char EP2TR : 1; /* EP2TR */ - unsigned char EP2EMPTY : 1; /* EP2EMPTY */ - unsigned char EP2ALLEMP : 1; /* EP2ALLEMP */ - unsigned char EP1FULL : 1; /* EP1FULL */ - } BIT; /* */ - } USBIFR2; /* */ - union { /* USBIFR3 *///FFFE7003 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 2; /* */ - unsigned char EP6TR : 1; /* EP6TR */ - unsigned char EP6TS : 1; /* EP6TS */ - unsigned char EP5TR : 1; /* EP5TR */ - unsigned char EP5EMPTY : 1; /* EP5EMPTY */ - unsigned char EP5ALLEMP : 1; /* EP5ALLEMP */ - unsigned char EP4FULL : 1; /* EP4FULL */ - } BIT; /* */ - } USBIFR3; /* */ - union { /* USBIFR4 *///FFFE7004 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 2; /* */ - unsigned char EP9TR : 1; /* EP9TR */ - unsigned char EP9TS : 1; /* EP9TS */ - unsigned char EP8TR : 1; /* EP8TR */ - unsigned char EP8EMPTY : 1; /* EP8EMPTY */ - unsigned char : 1; /* */ - unsigned char EP7FULL : 1; /* EP7FULL */ - } BIT; /* */ - } USBIFR4; /* */ - char wk1[3]; /* *///FFFE7008-FFFE7004-1 - union { /* USBIER0 *///FFFE7008 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char BRSTE : 1; /* BRSTE */ - unsigned char CFDFN : 1; /* CFDFN */ - unsigned char : 2; /* */ - unsigned char SETCE : 1; /* SETCE */ - unsigned char SETIE : 1; /* SETIE */ - unsigned char : 1; /* */ - unsigned char VBUSFE : 1; /* VBUSFE */ - } BIT; /* */ - } USBIER0; /* */ - union { /* USBIER1 *///FFFE7009 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 3; /* */ - unsigned char SOFE : 1; /* SOFE */ - unsigned char SETUPTSE : 1; /* SETUPTSE */ - unsigned char EP0oTSE : 1; /* EP0oTSE */ - unsigned char EP0iTRE : 1; /* EP0iTRE */ - unsigned char EP0iTSE : 1; /* EP0iTSE */ - } BIT; /* */ - } USBIER1; /* */ - union { /* USBIER2 *///FFFE700A - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 2; /* */ - unsigned char EP3TRE : 1; /* EP3TRE */ - unsigned char EP3TSE : 1; /* EP3TSE */ - unsigned char EP2TRE : 1; /* EP2TRE */ - unsigned char EP2EMPTYE : 1; /* EP2EMPTYE */ - unsigned char EP2ALLEMPE : 1; /* EP2ALLEMPE*/ - unsigned char EP1FULLE : 1; /* EP1FULLE */ - } BIT; /* */ - } USBIER2; /* */ - union { /* USBIER3 *///FFFE700B - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 2; /* */ - unsigned char EP6TRE : 1; /* EP6TRE */ - unsigned char EP6TSE : 1; /* EP6TSE */ - unsigned char EP5TRE : 1; /* EP5TRE */ - unsigned char EP5EMPTYE : 1; /* EP5EMPTYE */ - unsigned char EP5ALLEMPE : 1; /* EP5ALLEMPE*/ - unsigned char EP4FULLE : 1; /* EP4FULLE */ - } BIT; /* */ - } USBIER3; /* */ - union { /* USBIER4 *///FFFE700C - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 2; /* */ - unsigned char EP9TRE : 1; /* EP9TRE */ - unsigned char EP9TSE : 1; /* EP9TSE */ - unsigned char EP8TRE : 1; /* EP8TRE */ - unsigned char EP8EMPTYE : 1; /* EP8EMPTYE */ - unsigned char : 1; /* */ - unsigned char EP7FULLE : 1; /* EP7FULLE */ - } BIT; /* */ - } USBIER4; /* */ - char wk2[3]; /* *///FFFE7010-FFFE700C-1 - union { /* USBISR0 *///FFFE7010 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char BRSTS : 1; /* BRSTS */ - unsigned char CFDNS : 1; /* CFDNS */ - unsigned char : 2; /* */ - unsigned char SETCS : 1; /* SETCS */ - unsigned char SETIS : 1; /* SETIS */ - unsigned char : 1; /* */ - unsigned char VBUSFS : 1; /* VBUSFS */ - } BIT; /* */ - } USBISR0; /* */ - union { /* USBISR1 *///FFFE7011 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 3; /* */ - unsigned char SOFS : 1; /* SOFS */ - unsigned char SETUPTSS : 1; /* SETUPTSS */ - unsigned char EP0oTSS : 1; /* EP0oTSS */ - unsigned char EP0iTRS : 1; /* EP0iTRS */ - unsigned char EP0iTSS : 1; /* EP0iTSS */ - } BIT; /* */ - } USBISR1; /* */ - union { /* USBISR2 *///FFFE7012 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 2; /* */ - unsigned char EP3TRS : 1; /* EP3TRS */ - unsigned char EP3TSS : 1; /* EP3TSS */ - unsigned char EP2TRS : 1; /* EP2TRS */ - unsigned char EP2EMPTYS : 1; /* EP2EMPTYS */ - unsigned char EP2ALLEMPS : 1; /* EP2ALLEMPS*/ - unsigned char EP1FULLS : 1; /* EP1FULLS */ - } BIT; /* */ - } USBISR2; /* */ - union { /* USBISR3 *///FFFE7013 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 2; /* */ - unsigned char EP6TRS : 1; /* EP6TRS */ - unsigned char EP6TSS : 1; /* EP6TSS */ - unsigned char EP5TRS : 1; /* EP5TRS */ - unsigned char EP5EMPTYS : 1; /* EP5EMPTYS */ - unsigned char EP5ALLEMPS : 1; /* EP5ALLEMPS*/ - unsigned char EP4FULLE : 1; /* EP4FULLS */ - } BIT; /* */ - } USBISR3; /* */ - union { /* USBISR4 *///FFFE7014 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 2; /* */ - unsigned char EP9TRS : 1; /* EP9TRS */ - unsigned char EP9TSS : 1; /* EP9TSS */ - unsigned char EP8TRS : 1; /* EP8TRS */ - unsigned char EP8EMPTYS : 1; /* EP8EMPTYS */ - unsigned char : 1; /* */ - unsigned char EP7FULLS : 1; /* EP7FULLS */ - } BIT; /* */ - } USBISR4; /* */ - char wk3[11]; /* *///FFFE7020-FFFE7014-1 - unsigned char USBEPDR0i; /* USBEPDR0i *///FFFE7020 - char wk4[3]; /* *///FFFE7024-FFFE7020-1 - unsigned char USBEPDR0o; /* USBEPDR0o *///FFFE7024 - char wk5[3]; /* *///FFFE7028-FFFE7024-1 - unsigned char USBEPDR0s; /* USBEPDR0s *///FFFE7028 - char wk6[7]; /* *///FFFE7030-FFFE7028-1 - unsigned char USBEPDR1; /* USBEPDR1 *///FFFE7030 - char wk7[3]; /* *///FFFE7034-FFFE7030-1 - unsigned char USBEPDR2; /* USBEPDR2 *///FFFE7034 - char wk8[3]; /* *///FFFE7038-FFFE7034-1 - unsigned char USBEPDR3; /* USBEPDR3 *///FFFE7038 - char wk9[7]; /* *///FFFE7040-FFFE7038-1 - unsigned char USBEPDR4; /* USBEPDR4 *///FFFE7040 - char wk10[3]; /* *///FFFE7044-FFFE7040-1 - unsigned char USBEPDR5; /* USBEPDR5 *///FFFE7044 - char wk11[3]; /* *///FFFE7048-FFFE7044-1 - unsigned char USBEPDR6; /* USBEPDR6 *///FFFE7048 - char wk12[7]; /* *///FFFE7050-FFFE7048-1 - unsigned char USBEPDR7; /* USBEPDR7 *///FFFE7050 - char wk13[3]; /* *///FFFE7054-FFFE7050-1 - unsigned char USBEPDR8; /* USBEPDR8 *///FFFE7054 - char wk14[3]; /* *///FFFE7058-FFFE7054-1 - unsigned char USBEPDR9; /* USBEPDR9 *///FFFE7058 - char wk15[39]; /* *///FFFE7080-FFFE7058-1 - unsigned char USBEPSZ0o; /* USBEPSZ0o *///FFFE7080 - unsigned char USBEPSZ1; /* USBEPSZ1 *///FFFE7081 - unsigned char USBEPSZ4; /* USBEPSZ4 *///FFFE7082 - unsigned char USBEPSZ7; /* USBEPSZ7 *///FFFE7083 - char wk16[4]; /* *///FFFE7088-FFFE7083-1 - union { /* USBDASTS0 *///FFFE7088 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 7; /* */ - unsigned char EP0iDE : 1; /* EP0iDE */ - } BIT; /* */ - } USBDASTS0; /* */ - union { /* USBDASTS1 *///FFFE7089 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 5; /* */ - unsigned char EP3DE : 1; /* EP3DE */ - unsigned char EP2DE : 1; /* EP2DE */ - unsigned char : 1; /* */ - } BIT; /* */ - } USBDASTS1; /* */ - union { /* USBDASTS2 *///FFFE708A - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 5; /* */ - unsigned char EP6DE : 1; /* EP6DE */ - unsigned char EP5DE : 1; /* EP5DE */ - unsigned char : 1; /* */ - } BIT; /* */ - } USBDASTS2; /* */ - union { /* USBDASTS3 *///FFFE708B - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 5; /* */ - unsigned char EP9DE : 1; /* EP9DE */ - unsigned char EP8DE : 1; /* EP8DE */ - unsigned char : 1; /* */ - } BIT; /* */ - } USBDASTS3; /* */ - char wk17[4]; /* *///FFFE7090-FFFE708B-1 - union { /* USBTRG0 *///FFFE7090 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 5; /* */ - unsigned char EP0sRDFN : 1; /* EP0SRDFN */ - unsigned char EP0oRDFN : 1; /* EP0ORDFN */ - unsigned char EP0iPKTE : 1; /* EP0IPKTE */ - } BIT; /* */ - } USBTRG0; /* */ - union { /* USBTRG1 *///FFFE7091 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 5; /* */ - unsigned char EP3PKTE : 1; /* EP3PKTE */ - unsigned char EP2PKTE : 1; /* EP2PKTE */ - unsigned char EP1RDFN : 1; /* EP1RDFN */ - } BIT; /* */ - } USBTRG1; /* */ - union { /* USBTRG2 *///FFFE7092 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 5; /* */ - unsigned char EP6PKTE : 1; /* EP6PKTE */ - unsigned char EP5PKTE : 1; /* EP5PKTE */ - unsigned char EP4RDFN : 1; /* EP4RDFN */ - } BIT; /* */ - } USBTRG2; /* */ - union { /* USBTRG3 *///FFFE7093 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 5; /* */ - unsigned char EP9PKTE : 1; /* EP9PKTE */ - unsigned char EP8PKTE : 1; /* EP8PKTE */ - unsigned char EP7RDFN : 1; /* EP7RDFN */ - } BIT; /* */ - } USBTRG3; /* */ - char wk18[4]; /* *///FFFE7098-FFFE7093-1 - union { /* USBFCLR0 *///FFFE7098 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 6; /* */ - unsigned char EP0oCLR : 1; /* EP0oCLR */ - unsigned char EP0iCLR : 1; /* EP0iCLR */ - } BIT; /* */ - } USBFCLR0; /* */ - union { /* USBFCLR1 *///FFFE7099 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 5; /* */ - unsigned char EP3CLR : 1; /* EP3CLR */ - unsigned char EP2CLR : 1; /* EP2CLR */ - unsigned char EP1CLR : 1; /* EP1CLR */ - } BIT; /* */ - } USBFCLR1; /* */ - union { /* USBFCLR2 *///FFFE709A - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 5; /* */ - unsigned char EP6CLR : 1; /* EP6CLR */ - unsigned char EP5CLR : 1; /* EP5CLR */ - unsigned char EP4CLR : 1; /* EP4CLR */ - } BIT; /* */ - } USBFCLR2; /* */ - union { /* USBFCLR3 *///FFFE709B - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 5; /* */ - unsigned char EP9CLR : 1; /* EP9CLR */ - unsigned char EP8CLR : 1; /* EP8CLR */ - unsigned char EP7CLR : 1; /* EP7CLR */ - } BIT; /* */ - } USBFCLR3; /* */ - char wk19[4]; /* *///FFFE70A0-FFFE709B-1 - union { /* USBEPSTL0 *///FFFE70A0 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 3; /* */ - unsigned char EP0STLC : 1; /* EP0STLC */ - unsigned char : 3; /* */ - unsigned char EP0STLS : 1; /* EP0STLS */ - } BIT; /* */ - } USBEPSTL0; /* */ - union { /* USBEPSTL1 *///FFFE70A1 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 1; /* */ - unsigned char EP3STLC : 1; /* EP3STLC */ - unsigned char EP2STLC : 1; /* EP2STLC */ - unsigned char EP1STLC : 1; /* EP1STLC */ - unsigned char : 1; /* */ - unsigned char EP3STLS : 1; /* EP3STLS */ - unsigned char EP2STLS : 1; /* EP2STLS */ - unsigned char EP1STLS : 1; /* EP1STLS */ - } BIT; /* */ - } USBEPSTL1; /* */ - union { /* USBEPSTL2 *///FFFE70A2 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 1; /* */ - unsigned char EP6STLC : 1; /* EP6STLC */ - unsigned char EP5STLC : 1; /* EP5STLC */ - unsigned char EP4STLC : 1; /* EP4STLC */ - unsigned char : 1; /* */ - unsigned char EP6STLS : 1; /* EP6STLS */ - unsigned char EP5STLS : 1; /* EP5STLS */ - unsigned char EP4STLS : 1; /* EP4STLS */ - } BIT; /* */ - } USBEPSTL2; /* */ - union { /* USBEPSTL3 *///FFFE70A3 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 1; /* */ - unsigned char EP9STLC : 1; /* EP9STLC */ - unsigned char EP8STLC : 1; /* EP8STLC */ - unsigned char EP7STLC : 1; /* EP7STLC */ - unsigned char : 1; /* */ - unsigned char EP9STLS : 1; /* EP9STLS */ - unsigned char EP8STLS : 1; /* EP8STLS */ - unsigned char EP7STLS : 1; /* EP7STLS */ - } BIT; /* */ - } USBEPSTL3; /* */ - char wk20[5]; /* *///FFFE70A9-FFFE70A3-1 - union { /* USBSTLSR1 *///FFFE70A9 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 1; /* */ - unsigned char EP3ASCE : 1; /* EP3ASCE */ - unsigned char EP2ASCE : 1; /* EP2ASCE */ - unsigned char EP1ASCE : 1; /* EP1ASCE */ - unsigned char : 1; /* */ - unsigned char EP3STLST : 1; /* EP3STLST */ - unsigned char EP2STLST : 1; /* EP2STLST */ - unsigned char EP1STLST : 1; /* EP1STLST */ - } BIT; /* */ - } USBSTLSR1; /* */ - union { /* USBSTLSR2 *///FFFE70AA - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 1; /* */ - unsigned char EP6ASCE : 1; /* EP6ASCE */ - unsigned char EP5ASCE : 1; /* EP5ASCE */ - unsigned char EP4ASCE : 1; /* EP4ASCE */ - unsigned char : 1; /* */ - unsigned char EP6STLST : 1; /* EP6STLST */ - unsigned char EP5STLST : 1; /* EP5STLST */ - unsigned char EP4STLST : 1; /* EP4STLST */ - } BIT; /* */ - } USBSTLSR2; /* */ - union { /* USBSTLSR3 *///FFFE70AB - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 1; /* */ - unsigned char EP9ASCE : 1; /* EP9ASCE */ - unsigned char EP8ASCE : 1; /* EP8ASCE */ - unsigned char EP7ASCE : 1; /* EP7ASCE */ - unsigned char : 1; /* */ - unsigned char EP9STLST : 1; /* EP9STLST */ - unsigned char EP8STLST : 1; /* EP8STLST */ - unsigned char EP7STLST : 1; /* EP7STLST */ - } BIT; /* */ - } USBSTLSR3; /* */ - char wk21[4]; /* *///FFFE70B0-FFFE70AB-1 - union { /* USBDMAR *///FFFE70B0 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 3; /* */ - unsigned char EP5DMAE : 1; /* EP5DMAE */ - unsigned char EP4DMAE : 1; /* EP4DMAE */ - unsigned char : 1; /* */ - unsigned char EP2DMAE : 1; /* EP2DMAE */ - unsigned char EP1DMAE : 1; /* EP1DMAE */ - } BIT; /* */ - } USBDMAR; /* */ - char wk22[3]; /* *///FFFE70B4-FFFE70B0-1 - union { /* USBCVR *///FFFE70B4 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char CNFV : 2; /* CNFV */ - unsigned char INTV : 2; /* INTV */ - unsigned char : 1; /* */ - unsigned char ALTV : 3; /* ALTV */ - } BIT; /* */ - } USBCVR; /* */ - char wk23[3]; /* *///FFFE70B8-FFFE70B4-1 - union { /* USBCTLR *///FFFE70B8 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 6; /* */ - unsigned char EP0ASCE : 1; /* EP0ASCE */ - unsigned char PRTRST : 1; /* PRTRST */ - } BIT; /* */ - } USBCTLR; /* */ - char wk24[7]; /* *///FFFE70C0-FFFE70B8-1 - unsigned char USBEPIR; /* USBEPIR *///FFFE70C0 - char wk25[15]; /* *///FFFE70D0-FFFE70C0-1 - union { /* USBTRNTREG0 *///FFFE70D0 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char PTSTE : 1; /* PTSTE */ - unsigned char : 3; /* */ - unsigned char SUSPEND : 1; /* SUSPEND */ - unsigned char txenl : 1; /* txenl */ - unsigned char txse0 : 1; /* txse0 */ - unsigned char txdata : 1; /* txdata */ - } BIT; /* */ - } USBTRNTREG0; /* */ - union { /* USBTRNTREG1 *///FFFE70D1 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 5; /* */ - unsigned char xver_data : 1; /* xver_data */ - unsigned char dpls : 1; /* dpls */ - unsigned char dmns : 1; /* dmns */ - } BIT; /* */ - } USBTRNTREG1; /* */ -}; /* */ -struct st_etherc { /* struct EtherC*/ - union { /* ECMR *///FFFC3100 - unsigned int LONG; /* Long Access */ - struct { /* Bit Access */ - unsigned int :11; /* */ - unsigned int TPC : 1; /* TPC */ - unsigned int ZPF : 1; /* ZPF */ - unsigned int PFR : 1; /* PFR */ - unsigned int RXF : 1; /* RXF */ - unsigned int TXF : 1; /* TXF */ - unsigned int : 3; /* */ - unsigned int PRCEF : 1; /* PRCEF */ - unsigned int : 2; /* */ - unsigned int MPDE : 1; /* MPDE */ - unsigned int : 2; /* */ - unsigned int RE : 1; /* RE */ - unsigned int TE : 1; /* TE */ - unsigned int : 1; /* */ - unsigned int ILB : 1; /* ILB */ - unsigned int ELB : 1; /* ELB */ - unsigned int DM : 1; /* DM */ - unsigned int PRM : 1; /* PRM */ - } BIT; /* */ - } ECMR; /* */ - char wk1[4]; /* *///FFFC3108-FFFC3100-4 - union { /* RFLR *///FFFC3108 - unsigned int LONG; /* Long Access */ - struct { /* Bit Access */ - unsigned int :20; /* */ - unsigned int RFL :12; /* RFL */ - } BIT; /* */ - } RFLR; /* */ - char wk2[4]; /* *///FFFC3110-FFFC3108-4 - union { /* ECSR *///FFFC3110 - unsigned int LONG; /* Long Access */ - struct { /* Bit Access */ - unsigned int :26; /* */ - unsigned int BFR : 1; /* BFR */ - unsigned int PSRTO : 1; /* PSRTO */ - unsigned int : 1; /* */ - unsigned int LCHNG : 1; /* LCHNG */ - unsigned int MPD : 1; /* MPD */ - unsigned int ICD : 1; /* ICD */ - } BIT; /* */ - } ECSR; /* */ - char wk3[4]; /* *///FFFC3118-FFFC3110-4 - union { /* ECSIPR *///FFFC3118 - unsigned int LONG; /* Long Access */ - struct { /* Bit Access */ - unsigned int :26; /* */ - unsigned int BFSIPR : 1; /* BFSIPR */ - unsigned int PSRTOIP : 1; /* PSRTOIP */ - unsigned int : 1; /* */ - unsigned int LCHNGIP : 1; /* LCHNGIP */ - unsigned int MPDIP : 1; /* MPDIP */ - unsigned int ICDIP : 1; /* ICDIP */ - } BIT; /* */ - } ECSIPR; /* */ - char wk4[4]; /* *///FFFC3120-FFFC3118-4 - union { /* PIR *///FFFC3120 - unsigned int LONG; /* Long Access */ - struct { /* Bit Access */ - unsigned int :28; /* */ - unsigned int MDI : 1; /* MDI */ - unsigned int MDO : 1; /* MDO */ - unsigned int MMD : 1; /* MMD */ - unsigned int MDC : 1; /* MDC */ - } BIT; /* */ - } PIR; /* */ - char wk5[4]; /* *///FFFC3128-FFFC3120-4 - union { /* PSR *///FFFC3128 - unsigned int LONG; /* Long Access */ - struct { /* Bit Access */ - unsigned int :31; /* */ - unsigned int LMON : 1; /* LMON */ - } BIT; /* */ - } PSR; /* */ - char wk6[20]; /* *///FFFC3140-FFFC3128-4 - union { /* RDMLR *///FFFC3140 - unsigned int LONG; /* Long Access */ - struct { /* Bit Access */ - unsigned int :12; /* */ - unsigned int RMD :20; /* RMD */ - } BIT; /* */ - } RDMLR; /* */ - char wk7[12]; /* *///FFFC3150-FFFC3140-4 - union { /* IPGR *///FFFC3150 - unsigned int LONG; /* Long Access */ - struct { /* Bit Access */ - unsigned int :27; /* */ - unsigned int IPG : 5; /* IPG */ - } BIT; /* */ - } IPGR; /* */ - union { /* APR *///FFFC3154 - unsigned int LONG; /* Long Access */ - struct { /* Bit Access */ - unsigned int :16; /* */ - unsigned int AP :16; /* AP */ - } BIT; /* */ - } APR; /* */ - union { /* MPR *///FFFC3158 - unsigned int LONG; /* Long Access */ - struct { /* Bit Access */ - unsigned int :16; /* */ - unsigned int MP :16; /* MP */ - } BIT; /* */ - } MPR; /* */ - char wk8[4]; /* *///FFFC3160-FFFC3158-4 - union { /* RFCF *///FFFC3160 - unsigned int LONG; /* Long Access */ - struct { /* Bit Access */ - unsigned int :24; /* */ - unsigned int RPAUSE : 8; /* RPAUSE */ - } BIT; /* */ - } RFCF; /* */ - union { /* TPAUSER *///FFFC3164 - unsigned int LONG; /* Long Access */ - struct { /* Bit Access */ - unsigned int :16; /* */ - unsigned int TPAUSE :16; /* TPAUSE */ - } BIT; /* */ - } TPAUSER; /* */ - union { /* TPAUSECR *///FFFC3168 - unsigned int LONG; /* Long Access */ - struct { /* Bit Access */ - unsigned int :24; /* */ - unsigned int TXP : 8; /* TXP */ - } BIT; /* */ - } TPAUSECR; /* */ - union { /* BCFRR *///FFFC316C - unsigned int LONG; /* Long Access */ - struct { /* Bit Access */ - unsigned int :16; /* */ - unsigned int BCF :16; /* BCF */ - } BIT; /* */ - } BCFRR; /* */ - char wk9[80]; /* *///FFFC31C0-FFFC316C-4 - unsigned int MAHR; /* MAHR *///FFFC31C0 - char wk10[4]; /* *///FFFC31C8-FFFC31C0-4 - union { /* MALR *///FFFC31C8 - unsigned int LONG; /* Long Access */ - struct { /* Bit Access */ - unsigned int :16; /* */ - unsigned int MA :16; /* MA */ - } BIT; /* */ - } MALR; /* */ - char wk11[4]; /* *///FFFC31D0-FFFC31C8-4 - unsigned int TROCR; /* TROCR *///FFFC31D0 - unsigned int CDCR; /* CDCR *///FFFC31D4 - unsigned int LCCR; /* LCCR *///FFFC31D8 - unsigned int CNDCR; /* CNDCR *///FFFC31DC - char wk12[4]; /* *///FFFC31E4-FFFC31DC-4 - unsigned int CEFCR; /* CEFCR *///FFFC31E4 - unsigned int FRECR; /* FRECR *///FFFC31E8 - unsigned int TSFRCR; /* TSFRCR *///FFFC31EC - unsigned int TLFRCR; /* TLFRCR *///FFFC31F0 - unsigned int RFCR; /* RFCR *///FFFC31F4 - unsigned int MAFCR; /* MAFCR *///FFFC31F8 -}; /* */ -struct st_edmac { /* struct EDMAC */ - union { /* EDMR *///FFFC3000 - unsigned int LONG; /* Long Access */ - struct { /* Bit Access */ - unsigned int :25; /* */ - unsigned int DE : 1; /* DE */ - unsigned int DL : 2; /* DL */ - unsigned int : 3; /* */ - unsigned int SWR : 1; /* SWR */ - } BIT; /* */ - } EDMR; /* */ - char wk1[4]; /* *///FFFC3008-FFFC3004-4 - union { /* EDTRR *///FFFC3008 - unsigned int LONG; /* Long Access */ - struct { /* Bit Access */ - unsigned int :31; /* */ - unsigned int TR : 1; /* TR */ - } BIT; /* */ - } EDTRR; /* */ - char wk2[4]; /* *///FFFC3010-FFFC3008-4 - union { /* EDRRR *///FFFC3008 - unsigned int LONG; /* Long Access */ - struct { /* Bit Access */ - unsigned int :31; /* */ - unsigned int RR : 1; /* RR */ - } BIT; /* */ - } EDRRR; /* */ - char wk3[4]; /* *///FFFC3018-FFFC3008-4 - void *TDLAR; /* TDLAR *///FFFC3018 - char wk4[4]; /* *///FFFC3020-FFFC3018-4 - void *RDLAR; /* RDLAR *///FFFC3020 - char wk5[4]; /* *///FFFC3028-FFFC3020-4 - union { /* EESR *///FFFC3028 - unsigned int LONG; /* Long Access */ - struct { /* Bit Access */ - unsigned int : 1; /* */ - unsigned int TWB : 1; /* TWB */ - unsigned int : 3; /* */ - unsigned int TABT : 1; /* TABT */ - unsigned int RABT : 1; /* RABT */ - unsigned int RFCOF : 1; /* RFCOF */ - unsigned int ADE : 1; /* ADE */ - unsigned int ECI : 1; /* ECI */ - unsigned int TC : 1; /* TC */ - unsigned int TDE : 1; /* TDE */ - unsigned int TFUF : 1; /* TFUF */ - unsigned int FR : 1; /* FR */ - unsigned int RDE : 1; /* RDE */ - unsigned int RFOF : 1; /* RFOF */ - unsigned int : 4; /* */ - unsigned int CND : 1; /* CND */ - unsigned int DLC : 1; /* DLC */ - unsigned int CD : 1; /* CD */ - unsigned int TRO : 1; /* TRO */ - unsigned int RMAF : 1; /* RMAF */ - unsigned int : 2; /* */ - unsigned int RRF : 1; /* RRF */ - unsigned int RTLF : 1; /* RTLF */ - unsigned int RTSF : 1; /* RTSF */ - unsigned int PRE : 1; /* PRE */ - unsigned int CERF : 1; /* CERF */ - } BIT; /* */ - } EESR; /* */ - char wk6[4]; /* *///FFFC3030-FFFC3028-4 - union { /* EESIPR *///FFFC3030 - unsigned int LONG; /* Long Access */ - struct { /* Bit Access */ - unsigned int : 1; /* */ - unsigned int TWBIP : 1; /* TWBIP */ - unsigned int : 3; /* */ - unsigned int TABTIP : 1; /* TABTIP */ - unsigned int RABTIP : 1; /* RABTIP */ - unsigned int RFCOFIP : 1; /* RFCOFIP */ - unsigned int ADEIP : 1; /* ADEIP */ - unsigned int ECIIP : 1; /* ECIIP */ - unsigned int TCIP : 1; /* TCIP */ - unsigned int TDEIP : 1; /* TDEIP */ - unsigned int TFUFIP : 1; /* TFUFIP */ - unsigned int FRIP : 1; /* FRIP */ - unsigned int RDEIP : 1; /* RDEIP */ - unsigned int RFOFIP : 1; /* RFOFIP */ - unsigned int : 4; /* */ - unsigned int CNDIP : 1; /* CNDIP */ - unsigned int DLCIP : 1; /* DLCIP */ - unsigned int CDIP : 1; /* CDIP */ - unsigned int TROIP : 1; /* TROIP */ - unsigned int RMAFIP : 1; /* RMAFIP */ - unsigned int : 2; /* */ - unsigned int RRFIP : 1; /* RRFIP */ - unsigned int RTLFIP : 1; /* RTLFIP */ - unsigned int RTSFIP : 1; /* RTSFIP */ - unsigned int PREIP : 1; /* PREIP */ - unsigned int CERFIP : 1; /* CERFIP */ - } BIT; /* */ - } EESIPR; /* */ - char wk7[4]; /* *///FFFC3038-FFFC3030-4 - union { /* TRSCER *///FFFC3038 - unsigned int LONG; /* Long Access */ - struct { /* Bit Access */ - unsigned int :20; /* */ - unsigned int CNDCE : 1; /* CNDCE */ - unsigned int DLCCE : 1; /* DLCCE */ - unsigned int CDCE : 1; /* CDCE */ - unsigned int TROCE : 1; /* TROCE */ - unsigned int RMAFCE : 1; /* RMAFCE */ - unsigned int : 2; /* */ - unsigned int RRFCE : 1; /* RRFCE */ - unsigned int RTLFCE : 1; /* RTLFCE */ - unsigned int RTSFCE : 1; /* RTSFCE */ - unsigned int PRECE : 1; /* PRECE */ - unsigned int CERFCE : 1; /* CERFCE */ - } BIT; /* */ - } TRSCER; /* */ - char wk8[4]; /* *///FFFC3040-FFFC3038-4 - union { /* RMFCR *///FFFC3040 - unsigned int LONG; /* Long Access */ - struct { /* Bit Access */ - unsigned short :16; /* */ - unsigned short MFC :16; /* MFC */ - } BIT; /* */ - } RMFCR; /* */ - char wk9[4]; /* *///FFFC3048-FFFC3040-4 - union { /* TFTR *///FFFC3048 - unsigned int LONG; /* Long Access */ - struct { /* Bit Access */ - unsigned int :21; /* */ - unsigned int TFT :11; /* TFT */ - } BIT; /* */ - } TFTR; /* */ - char wk10[4]; /* *///FFFC3050-FFFC3048-4 - union { /* FDR *///FFFC3050 - unsigned int LONG; /* Long Access */ - struct { /* Bit Access */ - unsigned int :19; /* */ - unsigned int TFD : 5; /* TFD */ - unsigned int : 3; /* */ - unsigned int RFD : 5; /* RFD */ - } BIT; /* */ - } FDR; /* */ - char wk11[4]; /* *///FFFC3058-FFFC3050-4 - union { /* RMCR *///FFFC3058 - unsigned int LONG; /* Long Access */ - struct { /* Bit Access */ - unsigned int :30; /* */ - unsigned int RNC : 1; /* RNC */ - unsigned int RNR : 1; /* RNR */ - } BIT; /* */ - } RMCR; /* */ - char wk12[8]; /* *///FFFC3064-FFFC3058-4 - union { /* TFUCR *///FFFC3064 - unsigned int LONG; /* Long Access */ - struct { /* Bit Access */ - unsigned int :16; /* */ - unsigned int UNDER :16; /* UNDER */ - } BIT; /* */ - } TFUCR; /* */ - union { /* RFOCR *///FFFC3068 - unsigned int LONG; /* Long Access */ - struct { /* Bit Access */ - unsigned int :16; /* */ - unsigned int OVER :16; /* OVER */ - } BIT; /* */ - } RFOCR; /* */ - union { /* IOSR *///FFFC306C - unsigned int LONG; /* Long Access */ - struct { /* Bit Access */ - unsigned int :31; /* */ - unsigned int ELB : 1; /* ELB */ - } BIT; /* */ - } IOSR; /* */ - union { /* FCFTR *///FFFC3070 - unsigned int LONG; /* Long Access */ - struct { /* Bit Access */ - unsigned int :13; /* */ - unsigned int RFFO : 3; /* RFFO */ - unsigned int :13; /* */ - unsigned int RFDO : 3; /* RFDO */ - } BIT; /* */ - } FCFTR; /* */ - char wk13[8]; /* *///FFFC307C-FFFC3070-4 - union { /* TRIMD *///FFFC307C - unsigned int LONG; /* Long Access */ - struct { /* Bit Access */ - unsigned int :27; /* */ - unsigned int TIM : 1; /* TIM */ - unsigned int : 3; /* */ - unsigned int TIS : 1; /* TIS */ - } BIT; /* */ - } TRIMD; /* */ - char wk14[72]; /* *///FFFC30C8-FFFC307C-4 - unsigned int RBWAR; /* RBWAR *///FFFC30C8 - unsigned int RDFAR; /* RDFAR *///FFFC30CC - char wk15[4]; /* *///FFFC30D4-FFFC30CC-4 - unsigned int TBRAR; /* TBRAR *///FFFC30D4 - unsigned int TDFAR; /* TDFAR *///FFFC30D8 - char wk16[8]; /* *///FFFC30E4-FFFC30D8-4 - union { /* EDOCR *///FFFC30E4 - unsigned int LONG; /* Long Access */ - struct { /* Bit Access */ - unsigned int :28; /* */ - unsigned int FEC : 1; /* FEC */ - unsigned int AEC : 1; /* AEC */ - unsigned int EDH : 1; /* EDH */ - unsigned int NMIE : 1; /* NMIE */ - } BIT; /* */ - } EDOCR; /* */ -}; /* */ -struct st_fld { /* struct FLD */ - union { /* FPMON *///FFFFA800 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char FWE : 1; /* FWE */ - } BIT; /* */ - } FPMON; /* */ - char wk1[1]; /* *///FFFFA802-FFFFA800-1 - union { /* FMODR *///FFFFA802 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 3; /* */ - unsigned char FRDMD : 1; /* FRDMD */ - } BIT; /* */ - } FMODR; /* */ - char wk2[13]; /* *///FFFFA810-FFFFA802-1 - union { /* FASTAT *///FFFFA810 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char ROMAE : 1; /* ROMAE */ - unsigned char : 2; /* */ - unsigned char CMDLK : 1; /* CMDLK */ - unsigned char EEPAE : 1; /* EEPAE */ - unsigned char EEPIFE : 1; /* EEPIFE */ - unsigned char EEPRPE : 1; /* EEPRPE */ - unsigned char EEPWPE : 1; /* EEPWPE */ - } BIT; /* */ - } FASTAT; /* */ - union { /* FAEINT *///FFFFA811 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char ROMAIE : 1; /* ROMAIE */ - unsigned char : 2; /* */ - unsigned char CMDLKIE : 1; /* CMDLKIE */ - unsigned char EEPAEIE : 1; /* EEPAEIE */ - unsigned char EEPIFEIE : 1; /* EEPIFEIE */ - unsigned char EEPRPEIE : 1; /* EEPRPEIE */ - unsigned char EEPWPEIE : 1; /* EEPWPEIE */ - } BIT; /* */ - } FAEINT; /* */ - char wk3[14]; /* *///FFFFA820-FFFFA811-1 - union { /* ROMMAT *///FFFFA820 - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned char KEY : 8; /* KEY */ - unsigned char : 7; /* */ - unsigned char ROMSEL : 1; /* ROMSEL */ - } BIT; /* */ - } ROMMAT; /* */ - char wk4[30]; /* *///FFFFA840-FFFFA820-2 - union { /* EEPRE0 *///FFFFA840 - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned char KEY : 8; /* KEY */ - unsigned char : 4; /* */ - unsigned char DBRE0 : 4; /* DBRE0 */ - } BIT; /* */ - } EEPRE0; /* */ - char wk5[14]; /* *///FFFFA850-FFFFA840-2 - union { /* EEPWE0 *///FFFFA850 - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned char KEY : 8; /* KEY */ - unsigned char : 4; /* */ - unsigned char DBWE0 : 4; /* DBWE0 */ - } BIT; /* */ - } EEPWE0; /* */ - char wk6[2]; /* *///FFFFA854-FFFFA850-2 - union { /* FCURAME *///FFFFA854 - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned char KEY : 8; /* KEY */ - unsigned char : 7; /* */ - unsigned char FCRME : 1; /* FCRME */ - } BIT; /* */ - } FCURAME; /* */ - char wk7[170]; /* *///FFFFA900-FFFFA854-2 - union { /* FSTATR0 *///FFFFA900 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char FRDY : 1; /* FRDY */ - unsigned char ILGERR : 1; /* ILGERR */ - unsigned char ERSERR : 1; /* ERSERR */ - unsigned char PRGERR : 1; /* PRGERR */ - unsigned char SUSRDY : 1; /* SUSRDY */ - unsigned char : 1; /* */ - unsigned char ERSSPD : 1; /* ERSSPD */ - unsigned char PRGSPD : 1; /* PRGSPD */ - } BIT; /* */ - } FSTATR0; /* */ - union { /* FSTATR1 *///FFFFA901 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char FCUERR : 1; /* FCUERR */ - unsigned char : 2; /* */ - unsigned char FLOCKST : 1; /* FLOCKST */ - unsigned char : 2; /* */ - unsigned char FRDTCT : 1; /* FRDTCT */ - unsigned char FRCRCT : 1; /* FRCRCT */ - } BIT; /* */ - } FSTATR1; /* */ - union { /* FENTRYR *///FFFFA902 - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned char FKEY : 8; /* FKEY */ - unsigned char FENTRYD : 1; /* FENTRYD */ - unsigned char : 6; /* */ - unsigned char FENTRY0 : 1; /* FENTRY0 */ - } BIT; /* */ - } FENTRYR; /* */ - union { /* FPROTR *///FFFFA904 - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned char FPKEY : 8; /* FPKEY */ - unsigned char : 7; /* */ - unsigned char FPROTCN : 1; /* FPROTCN */ - } BIT; /* */ - } FPROTR; /* */ - union { /* FRESETR *///FFFFA906 - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned char FPKEY : 8; /* FPKEY */ - unsigned char : 7; /* */ - unsigned char FRESET : 1; /* FRESET */ - } BIT; /* */ - } FRESETR; /* */ - char wk8[2]; /* *///FFFFA90A-FFFFA906-2 - union { /* FCMDR *///FFFFA90A - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned char CMDR : 8; /* CMDR */ - unsigned char PCMDR : 8; /* PCMDR */ - } BIT; /* */ - } FCMDR; /* */ - union { /* FRAMECCR *///FFFFA90C - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 7; /* */ - unsigned char FRDCLE : 1; /* FRDCLE */ - unsigned char FRCCLE : 1; /* FRCCLE */ - } BIT; /* */ - } FRAMECCR; /* */ - char wk9[10]; /* *///FFFFA918-FFFFA90C-2 - union { /* FCPSR *///FFFFA918 - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned char : 8; /* */ - unsigned char : 7; /* */ - unsigned char ESUSPMD : 1; /* ESUSPMD */ - } BIT; /* */ - } FCPSR; /* */ - union { /* EEPBCCNT *///FFFFA91A - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short : 3; /* */ - unsigned short BCADR :10; /* BCADR */ - unsigned short : 2; /* */ - unsigned short BCSIZE : 1; /* BCSIZE */ - } BIT; /* */ - } EEPBCCNT; /* */ - union { /* FPESTAT *///FFFFA91C - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned char : 8; /* */ - unsigned char PEERRST : 8; /* PEERRST */ - } BIT; /* */ - } FPESTAT; /* */ - union { /* EEPBCSTAT *///FFFFA91E - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned char : 8; /* */ - unsigned char : 7; /* */ - unsigned char BCST : 1; /* BCST */ - } BIT; /* */ - } EEPBCSTAT; /* */ -}; /* */ -struct st_romccr { /* struct ROMCCR*/ - union { /* RCCR *///FFFC1400 - unsigned int LONG; /* Long Access */ - struct { /* Bit Access */ - unsigned int :28; /* */ - unsigned int RCF : 1; /* RCF */ - unsigned int : 3; /* */ - } BIT; /* */ - } RCCR; /* */ -}; /* */ -struct st_stb { /* struct STB */ - union { /* STBCR *///FFFE0014 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char STBY : 1; /* STBY */ - } BIT; /* */ - } CR; /* */ - char wk1[3]; /* *///FFFE0018-FFFE0014-1 - union { /* STBCR2 *///FFFE0018 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char _HUDI : 1; /* H-UDI */ - unsigned char _UBC : 1; /* UBC */ - unsigned char _DMAC : 1; /* DMAC */ - unsigned char : 3; /* */ - unsigned char _DTC : 1; /* DTC */ - } BIT; /* */ - } CR2; /* */ - char wk2[1007]; /* *///FFFE0408-FFFE0018-1 - union { /* STBCR3 *///FFFE0408 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char HIZ : 1; /* HIZ */ - unsigned char _MTU2S : 1; /* MTU2S */ - unsigned char _MTU2 : 1; /* MTU2 */ - unsigned char _POE2 : 1; /* POE2 */ - unsigned char _IIC3 : 1; /* IIC3 */ - unsigned char _ADC0 : 1; /* ADC0 */ - unsigned char : 1; /* */ - unsigned char _FLASH : 1; /* FLASH */ - } BIT; /* */ - } CR3; /* */ - char wk3[3]; /* *///FFFE040C-FFFE0408-1 - union { /* STBCR4 *///FFFE040C - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 3; /* */ - unsigned char _SCIF3 : 1; /* SCIF3 */ - unsigned char : 1; /* */ - unsigned char _CMT : 1; /* CMT */ - unsigned char : 1; /* */ - unsigned char _ETHER : 1; /* ETHER */ - } BIT; /* */ - } CR4; /* */ - char wk4[11]; /* *///FFFE0418-FFFE040C-1 - union { /* STBCR5 *///FFFE0418 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char _SCI0 : 1; /* SCI0 */ - unsigned char _SCI1 : 1; /* SCI1 */ - unsigned char _SCI2 : 1; /* SCI2 */ - unsigned char : 1; /* */ - unsigned char _SCI4 : 1; /* SCI4 */ - unsigned char _ADC1 : 1; /* ADC1 */ - unsigned char : 1; /* */ - unsigned char _RSPI : 1; /* RSPI */ - } BIT; /* */ - } CR5; /* */ - char wk5[3]; /* *///FFFE041C-FFFE0418-1 - union { /* STBCR6 *///FFFE041C - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char USBSEL : 1; /* USBSEL */ - unsigned char _USB : 1; /* USB */ - unsigned char USBCLK : 1; /* USBCLK */ - unsigned char _RCAN : 1; /* RCAN */ - } BIT; /* */ - } CR6; /* */ -}; /* */ -struct st_sys { /* struct SYS */ - union { /* SYSCR1 *///FFFE0402 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 4; /* */ - unsigned char RAME3 : 1; /* RAME3 */ - unsigned char RAME2 : 1; /* RAME2 */ - unsigned char RAME1 : 1; /* RAME1 */ - unsigned char RAME0 : 1; /* RAME0 */ - } BIT; /* */ - } CR1; /* */ - char wk1[1]; /* *///FFFE0404-FFFE0402-1 - union { /* SYSCR2 *///FFFE0404 - unsigned char BYTE; /* Byte Access */ - struct { /* Bit Access */ - unsigned char : 4; /* */ - unsigned char RAMWE3 : 1; /* RAMWE3 */ - unsigned char RAMWE2 : 1; /* RAMWE2 */ - unsigned char RAMWE1 : 1; /* RAMWE1 */ - unsigned char RAMWE0 : 1; /* RAMWE0 */ - } BIT; /* */ - } CR2; /* */ -}; /* */ -struct st_hudi { /* struct H-UDI */ - union { /* SDIR *///FFFE2000 - unsigned short WORD; /* Word Access */ - struct { /* Bit Access */ - unsigned short TI : 4; /* TI */ - } BIT; /* */ - } SDIR; /* */ -}; /* */ - -#define CPG (*(volatile struct st_cpg *)0xFFFE0010) /* CPG Address*/ -#define INTC (*(volatile struct st_intc *)0xFFFE0800) /* INTC Address*/ -#define UBC (*(volatile struct st_ubc *)0xFFFC04C0) /* UBC Address*/ -#define UBC0 (*(volatile struct st_ubc0 *)0xFFFC0400) /* UBC0 Address*/ -#define UBC1 (*(volatile struct st_ubc0 *)0xFFFC0410) /* UBC1 Address*/ -#define UBC2 (*(volatile struct st_ubc2 *)0xFFFC0420) /* UBC2 Address*/ -#define UBC3 (*(volatile struct st_ubc2 *)0xFFFC0430) /* UBC3 Address*/ -#define DTC (*(volatile struct st_dtc *)0xFFFE6000) /* DTC Address*/ -#define BSC (*(volatile struct st_bsc *)0xFFFC0000) /* BSC Address*/ -#define DMAC (*(volatile struct st_dmac *)0xFFFE1200) /* DMAC Address*/ -#define DMAC0 (*(volatile struct st_dmac0 *)0xFFFE1000) /* DMAC0 Address*/ -#define DMAC1 (*(volatile struct st_dmac0 *)0xFFFE1010) /* DMAC1 Address*/ -#define DMAC2 (*(volatile struct st_dmac2 *)0xFFFE1020) /* DMAC2 Address*/ -#define DMAC3 (*(volatile struct st_dmac2 *)0xFFFE1030) /* DMAC3 Address*/ -#define DMAC4 (*(volatile struct st_dmac4 *)0xFFFE1040) /* DMAC4 Address*/ -#define DMAC5 (*(volatile struct st_dmac4 *)0xFFFE1050) /* DMAC5 Address*/ -#define DMAC6 (*(volatile struct st_dmac4 *)0xFFFE1060) /* DMAC6 Address*/ -#define DMAC7 (*(volatile struct st_dmac4 *)0xFFFE1070) /* DMAC7 Address*/ -#define MTU2 (*(volatile struct st_mtu2 *)0xFFFE420A) /* MTU2 Address*/ -#define MTU20 (*(volatile struct st_mtu20 *)0xFFFE4300) /* MTU20 Address*/ -#define MTU21 (*(volatile struct st_mtu21 *)0xFFFE4380) /* MTU21 Address*/ -#define MTU22 (*(volatile struct st_mtu22 *)0xFFFE4000) /* MTU22 Address*/ -#define MTU23 (*(volatile struct st_mtu23 *)0xFFFE4200) /* MTU23 Address*/ -#define MTU24 (*(volatile struct st_mtu24 *)0xFFFE4200) /* MTU24 Address*/ -#define MTU25 (*(volatile struct st_mtu25 *)0xFFFE4080) /* MTU25 Address*/ -#define MTU2S (*(volatile struct st_mtu2s *)0xFFFE4A0A) /* MTU2S Address*/ -#define MTU2S3 (*(volatile struct st_mtu23 *)0xFFFE4A00) /* MTU2S3 Address*/ -#define MTU2S4 (*(volatile struct st_mtu24 *)0xFFFE4A00) /* MTU2S4 Address*/ -#define MTU2S5 (*(volatile struct st_mtu25 *)0xFFFE4880) /* MTU2S5 Address*/ -#define POE2 (*(volatile struct st_poe2 *)0xFFFE5000) /* POE Address*/ -#define CMT (*(volatile struct st_cmt *)0xFFFEC000) /* CMT Address*/ -#define CMT0 (*(volatile struct st_cmt0 *)0xFFFEC002) /* CMT0 Address*/ -#define CMT1 (*(volatile struct st_cmt0 *)0xFFFEC008) /* CMT1 Address*/ -#define WDT (*(volatile union un_wdt *)0xFFFE0000) /* WDT Address*/ -#define SCI0 (*(volatile struct st_sci *)0xFFFF8000) /* SCI0 Address*/ -#define SCI1 (*(volatile struct st_sci *)0xFFFF8800) /* SCI1 Address*/ -#define SCI2 (*(volatile struct st_sci *)0xFFFF9000) /* SCI2 Address*/ -#define SCI4 (*(volatile struct st_sci *)0xFFFFA000) /* SCI4 Address*/ -#define SCIF3 (*(volatile struct st_scif *)0xFFFE9800) /* SCIF3 Address*/ -#define RSPI (*(volatile struct st_rspi *)0xFFFFB000) /* RSPI Address*/ -#define IIC3 (*(volatile struct st_iic3 *)0xFFFEE000) /* IIC3 Address*/ -#define ADC0 (*(volatile struct st_adc0 *)0xFFFFE800) /* ADC0 Address*/ -#define ADC1 (*(volatile struct st_adc1 *)0xFFFFEC00) /* ADC1 Address*/ -#define RCANET (*(volatile struct st_rcanet *)0xFFFFD000) /* RCAN Address*/ -#define PFC (*(volatile struct st_pfc *)0xFFFE3804) /* PFC Address*/ -#define PA (*(volatile struct st_pa *)0xFFFE3800) /* PA Address*/ -#define PB (*(volatile struct st_pb *)0xFFFE3880) /* PB Address*/ -#define PC (*(volatile struct st_pc *)0xFFFE3900) /* PC Address*/ -#define PD (*(volatile struct st_pd *)0xFFFE3980) /* PD Address*/ -#define PE (*(volatile struct st_pe *)0xFFFE3A00) /* PE Address*/ -#define PF (*(volatile struct st_pf *)0xFFFE3A80) /* PF Address*/ -#define USB (*(volatile struct st_usb *)0xFFFE7000) /* USB Address*/ -#define EtherC (*(volatile struct st_etherc *)0xFFFC3100) /* EtherC Address*/ -#define EDMAC (*(volatile struct st_edmac *)0xFFFC3000) /* EDMAC Address*/ -#define FLD (*(volatile struct st_fld *)0xFFFFA800) /* FLD Address*/ -#define ROMCCR (*(volatile struct st_romccr *)0xFFFC1400) /* ROMCCR Address*/ -#define STB (*(volatile struct st_stb *)0xFFFE0014) /* STB Address*/ -#define SYS (*(volatile struct st_sys *)0xFFFE0402) /* SYS Address*/ -#define HUDI (*(volatile struct st_hudi *)0xFFFE2000) /* H-UDI Address*/ - -#endif /* _IODEFINE_H_ */ - -/* End of File */ diff --git a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/main.c b/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/main.c deleted file mode 100644 index 58bc67a22..000000000 --- a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/main.c +++ /dev/null @@ -1,502 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - - - -/* - * Creates all the demo application tasks, then starts the scheduler. The WEB - * documentation provides more details of the standard demo application tasks, - * which provide no particular functionality but do provide a good example of - * how to use the FreeRTOS API. In addition to the standard demo tasks, the - * following tasks and tests are defined and/or created within this file: - * - * Webserver ("uIP") task - This serves a number of dynamically generated WEB - * pages to a standard WEB browser. The IP and MAC addresses are configured by - * constants defined at the bottom of FreeRTOSConfig.h. Use either a standard - * Ethernet cable to connect through a hug, or a cross over (point to point) - * cable to connect directly. Ensure the IP address used is compatible with the - * IP address of the machine running the browser - the easiest way to achieve - * this is to ensure the first three octets of the IP addresses are the same. - * - * "Reg test" tasks - These fill the registers with known values, then check - * that each register still contains its expected value. Each task uses - * different values. The tasks run with very low priority so get preempted very - * frequently. A register containing an unexpected value is indicative of an - * error in the context switching mechanism. Both standard and floating point - * registers are checked. The nature of the reg test tasks necessitates that - * they are written in assembly code. They are defined in regtest.src. - * - * "math" tasks - These are a set of 8 tasks that perform various double - * precision floating point calculations in order to check that the tasks - * floating point registers are being correctly saved and restored during - * context switches. The math tasks are defined in flop.c. - * - * "Check" task - This only executes every five seconds but has a high priority - * to ensure it gets processor time. Its main function is to check that all the - * standard demo tasks are still operational. While no errors have been - * discovered the check task will toggle an LED every 5 seconds - the toggle - * rate increasing to 200ms being a visual indication that at least one task has - * reported unexpected behaviour. - * - * *NOTE 1* If LED5 is toggling every 5 seconds then all the demo application - * tasks are executing as expected and no errors have been reported in any - * tasks. The toggle rate increasing to 200ms indicates that at least one task - * has reported unexpected behaviour. - * - * *NOTE 2* This file and flop.c both demonstrate the use of - * xPortUsesFloatingPoint() which informs the kernel that a task should maintain - * a floating point context. - * - * *NOTE 3* vApplicationSetupTimerInterrupt() is called by the kernel to let - * the application set up a timer to generate the tick interrupt. In this - * example a compare match timer is used for this purpose. - * vApplicationTickHook() is used to clear the timer interrupt and relies on - * configUSE_TICK_HOOK being set to 1 in FreeRTOSConfig.h. - * - * *NOTE 4* The traceTASK_SWITCHED_IN and traceTASK_SWITCHED_OUT trace hooks - * are used to save and restore the floating point context respectively for - * those tasks that require it (those for which xPortUsesFloatingPoint() has - * been called). - * - * *NOTE 5* Any interrupt that can cause a context switch requires an asm - * wrapper and must be assigned an interrupt priority of - * portKERNEL_INTERRUPT_PRIORITY. - * - * *NOTE 6* vSetupClockForRunTimeStats() is called by the kernel (via the - * portCONFIGURE_TIMER_FOR_RUN_TIME_STATS()) macro to configure an MTU channel - * to produce a time base that is used to log how much processor time each task - * is consuming. The MTU is used to generate a high(ish) frequency interrupt, - * and so also provides an example of how interrupts that don't make use of the - * FreeRTOS kernel can be assigned a priority above any priority used by the - * kernel itself. - */ - -/* Kernel includes. */ -#include "FreeRTOS.h" -#include "task.h" - -/* Demo application includes. */ -#include "BlockQ.h" -#include "death.h" -#include "integer.h" -#include "blocktim.h" -#include "flash.h" -#include "partest.h" -#include "semtest.h" -#include "PollQ.h" -#include "GenQTest.h" -#include "QPeek.h" -#include "recmutex.h" -#include "flop.h" - -/* Constants required to configure the hardware. */ -#define mainFRQCR_VALUE ( 0x0303 ) /* Input = 12.5MHz, I Clock = 200MHz, B Clock = 50MHz, P Clock = 50MHz */ - -/* Task priorities. */ -#define mainQUEUE_POLL_PRIORITY ( tskIDLE_PRIORITY + 1 ) -#define mainCHECK_TASK_PRIORITY ( tskIDLE_PRIORITY + 3 ) -#define mainSEM_TEST_PRIORITY ( tskIDLE_PRIORITY + 1 ) -#define mainBLOCK_Q_PRIORITY ( tskIDLE_PRIORITY + 2 ) -#define mainCREATOR_TASK_PRIORITY ( tskIDLE_PRIORITY + 3 ) -#define mainFLASH_TASK_PRIORITY ( tskIDLE_PRIORITY + 1 ) -#define mainuIP_TASK_PRIORITY ( tskIDLE_PRIORITY + 2 ) -#define mainINTEGER_TASK_PRIORITY ( tskIDLE_PRIORITY ) -#define mainGEN_QUEUE_TASK_PRIORITY ( tskIDLE_PRIORITY ) -#define mainFLOP_TASK_PRIORITY ( tskIDLE_PRIORITY ) - -/* The WEB server uses string handling functions, which in turn use a bit more -stack than most of the other tasks. */ -#define mainuIP_STACK_SIZE ( configMINIMAL_STACK_SIZE * 3 ) - -/* The LED toggled by the check task. */ -#define mainCHECK_LED ( 5 ) - -/* The rate at which mainCHECK_LED will toggle when all the tasks are running -without error. */ -#define mainNO_ERROR_CYCLE_TIME ( 5000 / portTICK_PERIOD_MS ) - -/* The rate at which mainCHECK_LED will toggle when an error has been reported -by at least one task. */ -#define mainERROR_CYCLE_TIME ( 200 / portTICK_PERIOD_MS ) - -/* - * vApplicationMallocFailedHook() will only be called if - * configUSE_MALLOC_FAILED_HOOK is set to 1 in FreeRTOSConfig.h. It is a hook - * function that will execute if a call to pvPortMalloc() fails. - * pvPortMalloc() is called internally by the kernel whenever a task, queue or - * semaphore is created. It is also called by various parts of the demo - * application. - */ -void vApplicationMallocFailedHook( void ); - -/* - * vApplicationIdleHook() will only be called if configUSE_IDLE_HOOK is set to 1 - * in FreeRTOSConfig.h. It is a hook function that is called on each iteration - * of the idle task. It is essential that code added to this hook function - * never attempts to block in any way (for example, call xQueueReceive() with - * a block time specified). If the application makes use of the vTaskDelete() - * API function (as this demo application does) then it is also important that - * vApplicationIdleHook() is permitted to return to its calling function because - * it is the responsibility of the idle task to clean up memory allocated by the - * kernel to any task that has since been deleted. - */ -void vApplicationIdleHook( void ); - -/* - * Just sets up clocks, ports, etc. used by the demo application. - */ -static void prvSetupHardware( void ); - -/* - * The check task as described at the top of this file. - */ -static void prvCheckTask( void *pvParameters ); - -/* - * The reg test tasks as described at the top of this file. - */ -extern void vRegTest1Task( void *pvParameters ); -extern void vRegTest2Task( void *pvParameters ); - -/* - * Contains the implementation of the WEB server. - */ -extern void vuIP_Task( void *pvParameters ); - -/* - * The interrupt handler for the MTU - which is used to maintain the time base - * used by the run time stats. - */ -#pragma interrupt MTU_Match -void MTU_Match( void ); - -/*-----------------------------------------------------------*/ - -/* Variables that are incremented on each iteration of the reg test tasks - -provided the tasks have not reported any errors. The check task inspects these -variables to ensure they are still incrementing as expected. */ -volatile unsigned long ulRegTest1CycleCount = 0UL, ulRegTest2CycleCount = 0UL; - -/* The status message that is displayed at the bottom of the "task stats" WEB -page, which is served by the uIP task. */ -const char *pcStatusMessage = "All tasks executing without error."; - -/* The time use for the run time stats. */ -unsigned long ulRunTime = 0UL; - -/*-----------------------------------------------------------*/ - -/* - * Creates the majority of the demo application tasks before starting the - * scheduler. - */ -void main(void) -{ -TaskHandle_t xCreatedTask; - - prvSetupHardware(); - - /* Start the reg test tasks which test the context switching mechanism. */ - xTaskCreate( vRegTest1Task, "RegTst1", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, &xCreatedTask ); - xPortUsesFloatingPoint( xCreatedTask ); - - xTaskCreate( vRegTest2Task, "RegTst2", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, &xCreatedTask ); - xPortUsesFloatingPoint( xCreatedTask ); - - xTaskCreate( vuIP_Task, "uIP", mainuIP_STACK_SIZE, NULL, mainuIP_TASK_PRIORITY, NULL ); - - /* Start the check task as described at the top of this file. */ - xTaskCreate( prvCheckTask, "Check", configMINIMAL_STACK_SIZE, NULL, mainCHECK_TASK_PRIORITY, NULL ); - - /* Start the standard demo tasks. These don't perform any particular useful - functionality, other than to demonstrate the FreeRTOS API being used. */ - vStartBlockingQueueTasks( mainBLOCK_Q_PRIORITY ); - vCreateBlockTimeTasks(); - vStartSemaphoreTasks( mainSEM_TEST_PRIORITY ); - vStartPolledQueueTasks( mainQUEUE_POLL_PRIORITY ); - vStartIntegerMathTasks( mainINTEGER_TASK_PRIORITY ); - vStartGenericQueueTasks( mainGEN_QUEUE_TASK_PRIORITY ); - vStartLEDFlashTasks( mainFLASH_TASK_PRIORITY ); - vStartQueuePeekTasks(); - vStartRecursiveMutexTasks(); - - /* Start the math tasks as described at the top of this file. */ - vStartMathTasks( mainFLOP_TASK_PRIORITY ); - - /* The suicide tasks must be created last as they need to know how many - tasks were running prior to their creation in order to ascertain whether - or not the correct/expected number of tasks are running at any given time. */ - vCreateSuicidalTasks( mainCREATOR_TASK_PRIORITY ); - - /* Start the tasks running. */ - vTaskStartScheduler(); - - /* Will only get here if there was insufficient heap memory to create the idle - task. Increase the configTOTAL_HEAP_SIZE setting in FreeRTOSConfig.h. */ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -static void prvCheckTask( void *pvParameter ) -{ -TickType_t xNextWakeTime, xCycleFrequency = mainNO_ERROR_CYCLE_TIME; -unsigned long ulLastRegTest1CycleCount = 0UL, ulLastRegTest2CycleCount = 0UL; - - /* Just to remove compiler warning. */ - ( void ) pvParameter; - - /* Initialise xNextWakeTime - this only needs to be done once. */ - xNextWakeTime = xTaskGetTickCount(); - - for( ;; ) - { - /* Place this task in the blocked state until it is time to run again. */ - vTaskDelayUntil( &xNextWakeTime, xCycleFrequency ); - - /* Inspect all the other tasks to ensure none have experienced any errors. */ - if( xAreGenericQueueTasksStillRunning() != pdTRUE ) - { - /* Increase the rate at which this task cycles, which will increase the - rate at which mainCHECK_LED flashes to give visual feedback that an error - has occurred. */ - xCycleFrequency = mainERROR_CYCLE_TIME; - pcStatusMessage = "Error in GenQ test."; - } - else if( xAreQueuePeekTasksStillRunning() != pdTRUE ) - { - xCycleFrequency = mainERROR_CYCLE_TIME; - pcStatusMessage = "Error in Queue Peek test."; - } - else if( xAreBlockingQueuesStillRunning() != pdTRUE ) - { - xCycleFrequency = mainERROR_CYCLE_TIME; - pcStatusMessage = "Error in Blocking Queue test."; - } - else if( xAreBlockTimeTestTasksStillRunning() != pdTRUE ) - { - xCycleFrequency = mainERROR_CYCLE_TIME; - pcStatusMessage = "Error in BlockTim test."; - } - else if( xAreSemaphoreTasksStillRunning() != pdTRUE ) - { - xCycleFrequency = mainERROR_CYCLE_TIME; - pcStatusMessage = "Error in Semaphore test."; - } - else if( xArePollingQueuesStillRunning() != pdTRUE ) - { - xCycleFrequency = mainERROR_CYCLE_TIME; - pcStatusMessage = "Error in Polling Queue test."; - } - else if( xIsCreateTaskStillRunning() != pdTRUE ) - { - xCycleFrequency = mainERROR_CYCLE_TIME; - pcStatusMessage = "Error in Create test."; - } - else if( xAreIntegerMathsTaskStillRunning() != pdTRUE ) - { - xCycleFrequency = mainERROR_CYCLE_TIME; - pcStatusMessage = "Error in integer Math test."; - } - else if( xAreRecursiveMutexTasksStillRunning() != pdTRUE ) - { - xCycleFrequency = mainERROR_CYCLE_TIME; - pcStatusMessage = "Error in recursive mutex test."; - } - else if( xAreMathsTaskStillRunning() != pdTRUE ) - { - xCycleFrequency = mainERROR_CYCLE_TIME; - pcStatusMessage = "Error in floating point Math test."; - } - - /* Check the reg test tasks are still cycling. They will stop incrementing - their loop counters if they encounter an error. */ - if( ulRegTest1CycleCount == ulLastRegTest1CycleCount ) - { - xCycleFrequency = mainERROR_CYCLE_TIME; - pcStatusMessage = "Error in RegTest."; - } - - if( ulRegTest2CycleCount == ulLastRegTest2CycleCount ) - { - xCycleFrequency = mainERROR_CYCLE_TIME; - pcStatusMessage = "Error in RegTest."; - } - - ulLastRegTest1CycleCount = ulRegTest1CycleCount; - ulLastRegTest2CycleCount = ulRegTest2CycleCount; - - /* Toggle the check LED to give an indication of the system status. If the - LED toggles every 5 seconds then everything is ok. A faster toggle indicates - an error. */ - vParTestToggleLED( mainCHECK_LED ); - } -} -/*-----------------------------------------------------------*/ - -void vApplicationMallocFailedHook( void ) -{ - /* A call to vPortMalloc() failed, probably during the creation of a task, - queue or semaphore. Inspect pxCurrentTCB to find which task is currently - executing. */ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -void vApplicationIdleHook( void ) -{ - /* Code can be added to the idle task here. This function must *NOT* attempt - to block. Also, if the application uses the vTaskDelete() API function then - this function must return regularly to ensure the idle task gets a chance to - clean up the memory used by deleted tasks. */ -} -/*-----------------------------------------------------------*/ - -void vApplicationStackOverflowHook( TaskHandle_t pxTask, char *pcTaskName ) -{ - /* Just to remove compiler warnings. This function will only actually - get called if configCHECK_FOR_STACK_OVERFLOW is set to a non zero value. - By default this demo does not use the stack overflow checking functionality - as the SuperH will normally execute an exception if the stack overflows. */ - ( void ) pxTask; - ( void ) pcTaskName; - - taskDISABLE_INTERRUPTS(); - for( ;; ); -} -/*-----------------------------------------------------------*/ - -static void prvSetupHardware( void ) -{ -volatile unsigned long ul; - - /* Set the CPU and peripheral clocks. */ - CPG.FRQCR.WORD = mainFRQCR_VALUE; - - /* Wait for the clock to settle. */ - for( ul = 0; ul < 99; ul++ ) - { - nop(); - } - - /* Initialise the ports used to toggle LEDs. */ - vParTestInitialise(); -} -/*-----------------------------------------------------------*/ - -void vApplicationSetupTimerInterrupt( void ) -{ -/* The peripheral clock is divided by 32 before feeding the compare match -peripheral (CMT). */ -const unsigned long ulCompareMatch = ( configPERIPHERAL_CLOCK_HZ / ( configTICK_RATE_HZ * 32 ) ) + 1; - - /* Configure a timer to create the RTOS tick interrupt. This example uses - the compare match timer, but the multi function timer or possible even the - watchdog timer could also be used. Ensure vPortTickInterrupt() is installed - as the interrupt handler for whichever peripheral is used. */ - - /* Turn the CMT on. */ - STB.CR4.BIT._CMT = 0; - - /* Set the compare match value for the required tick frequency. */ - CMT0.CMCOR = ( unsigned short ) ulCompareMatch; - - /* Divide the peripheral clock by 32. */ - CMT0.CMCSR.BIT.CKS = 0x01; - - /* Set the CMT interrupt priority - the interrupt priority must be - configKERNEL_INTERRUPT_PRIORITY no matter which peripheral is used to generate - the tick interrupt. */ - INTC.IPR08.BIT._CMT0 = portKERNEL_INTERRUPT_PRIORITY; - - /* Clear the interrupt flag. */ - CMT0.CMCSR.BIT.CMF = 0; - - /* Enable the compare match interrupt. */ - CMT0.CMCSR.BIT.CMIE = 0x01; - - /* Start the timer. */ - CMT.CMSTR.BIT.STR0 = 0x01; -} -/*-----------------------------------------------------------*/ - -void vApplicationTickHook( void ) -{ - /* Clear the tick inerrupt. This is called from an interrupt context. */ - CMT0.CMCSR.BIT.CMF = 0; -} -/*-----------------------------------------------------------*/ - -void vSetupClockForRunTimeStats( void ) -{ - /* Configure an MTU channel to generate a periodic interrupt that is used - as the run time stats time base. The run time stats keep a track of how - much processing time each task is using. */ - - /* Turn the MTU2 on. */ - STB.CR3.BIT._MTU2 = 0; - - /* Clear counter on compare match A. */ - MTU20.TCR.BIT.CCLR = 0x01; - - /* Compare match value to give very approximately 10 interrupts per - millisecond. */ - MTU20.TGRA = 5000; - - /* Ensure the interrupt is clear. */ - MTU20.TSR.BIT.TGFA = 0; - - /* Enable the compare match interrupt. */ - MTU20.TIER.BIT.TGIEA = 0x01; - - /* Set the interrupt priority. */ - INTC.IPR09.BIT._MTU20G = portKERNEL_INTERRUPT_PRIORITY + 1; - - /* Start the count. */ - MTU2.TSTR.BIT.CST0 = 1; -} -/*-----------------------------------------------------------*/ - -void MTU_Match( void ) -{ -volatile unsigned char ucStatus; - - /* Increment the run time stats time base. */ - ulRunTime++; - - /* Clear the interrupt. */ - ucStatus = MTU20.TSR.BYTE; - MTU20.TSR.BIT.TGFA = 0; -} -/*-----------------------------------------------------------*/ - -char *pcGetTaskStatusMessage( void ) -{ - /* Not bothered about a critical section here. This just returns a string - that is displaed on the "Task Stats" WEB page served by this demo. */ - return pcStatusMessage; -} -/*-----------------------------------------------------------*/ diff --git a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/printf-stdarg.c b/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/printf-stdarg.c deleted file mode 100644 index b5ac41be7..000000000 --- a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/printf-stdarg.c +++ /dev/null @@ -1,293 +0,0 @@ -/* - Copyright 2001, 2002 Georges Menie (www.menie.org) - stdarg version contributed by Christian Ettinger - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU Lesser General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -*/ - -/* - putchar is the only external dependency for this file, - if you have a working putchar, leave it commented out. - If not, uncomment the define below and - replace outbyte(c) by your own function call. - -*/ - -#define putchar(c) c - -#include - -static void printchar(char **str, int c) -{ - //extern int putchar(int c); - - if (str) { - **str = (char)c; - ++(*str); - } - else - { - (void)putchar(c); - } -} - -#define PAD_RIGHT 1 -#define PAD_ZERO 2 - -static int prints(char **out, const char *string, int width, int pad) -{ - register int pc = 0, padchar = ' '; - - if (width > 0) { - register int len = 0; - register const char *ptr; - for (ptr = string; *ptr; ++ptr) ++len; - if (len >= width) width = 0; - else width -= len; - if (pad & PAD_ZERO) padchar = '0'; - } - if (!(pad & PAD_RIGHT)) { - for ( ; width > 0; --width) { - printchar (out, padchar); - ++pc; - } - } - for ( ; *string ; ++string) { - printchar (out, *string); - ++pc; - } - for ( ; width > 0; --width) { - printchar (out, padchar); - ++pc; - } - - return pc; -} - -/* the following should be enough for 32 bit int */ -#define PRINT_BUF_LEN 12 - -static int printi(char **out, int i, int b, int sg, int width, int pad, int letbase) -{ - char print_buf[PRINT_BUF_LEN]; - register char *s; - register int t, neg = 0, pc = 0; - register unsigned int u = (unsigned int)i; - - if (i == 0) { - print_buf[0] = '0'; - print_buf[1] = '\0'; - return prints (out, print_buf, width, pad); - } - - if (sg && b == 10 && i < 0) { - neg = 1; - u = (unsigned int)-i; - } - - s = print_buf + PRINT_BUF_LEN-1; - *s = '\0'; - - while (u) { - t = (unsigned int)u % b; - if( t >= 10 ) - t += letbase - '0' - 10; - *--s = (char)(t + '0'); - u /= b; - } - - if (neg) { - if( width && (pad & PAD_ZERO) ) { - printchar (out, '-'); - ++pc; - --width; - } - else { - *--s = '-'; - } - } - - return pc + prints (out, s, width, pad); -} - -static int print( char **out, const char *format, va_list args ) -{ - register int width, pad; - register int pc = 0; - char scr[2]; - - for (; *format != 0; ++format) { - if (*format == '%') { - ++format; - width = pad = 0; - if (*format == '\0') break; - if (*format == '%') goto out; - if (*format == '-') { - ++format; - pad = PAD_RIGHT; - } - while (*format == '0') { - ++format; - pad |= PAD_ZERO; - } - for ( ; *format >= '0' && *format <= '9'; ++format) { - width *= 10; - width += *format - '0'; - } - if( *format == 's' ) { - register char *s = (char *)va_arg( args, int ); - pc += prints (out, s?s:"(null)", width, pad); - continue; - } - if( *format == 'd' ) { - pc += printi (out, va_arg( args, int ), 10, 1, width, pad, 'a'); - continue; - } - if( *format == 'x' ) { - pc += printi (out, va_arg( args, int ), 16, 0, width, pad, 'a'); - continue; - } - if( *format == 'X' ) { - pc += printi (out, va_arg( args, int ), 16, 0, width, pad, 'A'); - continue; - } - if( *format == 'u' ) { - pc += printi (out, va_arg( args, int ), 10, 0, width, pad, 'a'); - continue; - } - if( *format == 'c' ) { - /* char are converted to int then pushed on the stack */ - scr[0] = (char)va_arg( args, int ); - scr[1] = '\0'; - pc += prints (out, scr, width, pad); - continue; - } - } - else { - out: - printchar (out, *format); - ++pc; - } - } - if (out) **out = '\0'; - va_end( args ); - return pc; -} - -int printf(const char *format, ...) -{ - va_list args; - - va_start( args, format ); - return print( 0, format, args ); -} - -int sprintf(char *out, const char *format, ...) -{ - va_list args; - - va_start( args, format ); - return print( &out, format, args ); -} - - -int snprintf( char *buf, unsigned int count, const char *format, ... ) -{ - va_list args; - - ( void ) count; - - va_start( args, format ); - return print( &buf, format, args ); -} - - -#ifdef TEST_PRINTF -int main(void) -{ - char *ptr = "Hello world!"; - char *np = 0; - int i = 5; - unsigned int bs = sizeof(int)*8; - int mi; - char buf[80]; - - mi = (1 << (bs-1)) + 1; - printf("%s\n", ptr); - printf("printf test\n"); - printf("%s is null pointer\n", np); - printf("%d = 5\n", i); - printf("%d = - max int\n", mi); - printf("char %c = 'a'\n", 'a'); - printf("hex %x = ff\n", 0xff); - printf("hex %02x = 00\n", 0); - printf("signed %d = unsigned %u = hex %x\n", -3, -3, -3); - printf("%d %s(s)%", 0, "message"); - printf("\n"); - printf("%d %s(s) with %%\n", 0, "message"); - sprintf(buf, "justif: \"%-10s\"\n", "left"); printf("%s", buf); - sprintf(buf, "justif: \"%10s\"\n", "right"); printf("%s", buf); - sprintf(buf, " 3: %04d zero padded\n", 3); printf("%s", buf); - sprintf(buf, " 3: %-4d left justif.\n", 3); printf("%s", buf); - sprintf(buf, " 3: %4d right justif.\n", 3); printf("%s", buf); - sprintf(buf, "-3: %04d zero padded\n", -3); printf("%s", buf); - sprintf(buf, "-3: %-4d left justif.\n", -3); printf("%s", buf); - sprintf(buf, "-3: %4d right justif.\n", -3); printf("%s", buf); - - return 0; -} - -/* - * if you compile this file with - * gcc -Wall $(YOUR_C_OPTIONS) -DTEST_PRINTF -c printf.c - * you will get a normal warning: - * printf.c:214: warning: spurious trailing `%' in format - * this line is testing an invalid % at the end of the format string. - * - * this should display (on 32bit int machine) : - * - * Hello world! - * printf test - * (null) is null pointer - * 5 = 5 - * -2147483647 = - max int - * char a = 'a' - * hex ff = ff - * hex 00 = 00 - * signed -3 = unsigned 4294967293 = hex fffffffd - * 0 message(s) - * 0 message(s) with % - * justif: "left " - * justif: " right" - * 3: 0003 zero padded - * 3: 3 left justif. - * 3: 3 right justif. - * -3: -003 zero padded - * -3: -3 left justif. - * -3: -3 right justif. - */ - -#endif - - -/* To keep linker happy. */ -int write( int i, char* c, int n) -{ - (void)i; - (void)n; - (void)c; - return 0; -} - diff --git a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/regtest.src b/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/regtest.src deleted file mode 100644 index 3f189ecd1..000000000 --- a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/regtest.src +++ /dev/null @@ -1,451 +0,0 @@ -;/* -; * FreeRTOS V202011.00 -; * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. -; * -; * Permission is hereby granted, free of charge, to any person obtaining a copy of -; * this software and associated documentation files (the "Software"), to deal in -; * the Software without restriction, including without limitation the rights to -; * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -; * the Software, and to permit persons to whom the Software is furnished to do so, -; * subject to the following conditions: -; * -; * The above copyright notice and this permission notice shall be included in all -; * copies or substantial portions of the Software. -; * -; * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -; * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -; * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -; * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -; * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -; * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -; * -; * http://www.FreeRTOS.org -; * http://aws.amazon.com/freertos -; * -; * 1 tab == 4 spaces! -; */ - - .import _ulRegTest1CycleCount - .import _ulRegTest2CycleCount - .import _vPortYield - - .export _vRegTest1Task - .export _vRegTest2Task - - .section P, code, align=4 - - - -_vRegTest1Task: - - ; Fill the registers with known values. - mov #2, r1 - mov #3, r2 - mov #4, r3 - mov #5, r4 - mov #6, r5 - mov #7, r6 - mov #8, r7 - mov #9, r8 - mov #10, r9 - mov #11, r10 - mov #12, r11 - mov #13, r12 - mov #14, r13 - mov #15, r14 - - mov #16, r0 - lds r0, macl - mov #17, r0 - lds r0, mach - mov #18, r0 - ldc r0, gbr - - ; Also fill the flop registers with known values. - lds r1, fpul - fsts fpul, fr1 - lds r2, fpul - fsts fpul, fr2 - lds r3, fpul - fsts fpul, fr3 - lds r4, fpul - fsts fpul, fr4 - lds r5, fpul - fsts fpul, fr5 - lds r6, fpul - fsts fpul, fr6 - lds r7, fpul - fsts fpul, fr7 - lds r8, fpul - fsts fpul, fr8 - lds r9, fpul - fsts fpul, fr9 - lds r10, fpul - fsts fpul, fr10 - lds r11, fpul - fsts fpul, fr11 - lds r12, fpul - fsts fpul, fr12 - lds r13, fpul - fsts fpul, fr13 - lds r14, fpul - fsts fpul, fr14 - -_vRegTest1Loop: - - ; Reset r1 which was used in the tests. - mov #2, r1 - - ; Test that the registers still contain the expected values. If not, jump to - ; vRegTestError, which will stop this function looping and so cause it to stop - ; incrementing its loop counter. Both the standard and flop registers are - ; checked. - mov #2, r0 - cmp/eq r0, r1 - bf _vRegTest1Error - flds fr1, fpul - sts fpul, r1 - cmp/eq r0, r1 - bf _vRegTest1Error - - mov #3, r0 - cmp/eq r0, r2 - bf _vRegTest1Error - flds fr2, fpul - sts fpul, r1 - cmp/eq r0, r1 - bf _vRegTest1Error - - mov #4, r0 - cmp/eq r0, r3 - bf _vRegTest1Error - flds fr3, fpul - sts fpul, r1 - cmp/eq r0, r1 - bf _vRegTest1Error - - mov #5, r0 - cmp/eq r0, r4 - bf _vRegTest1Error - flds fr4, fpul - sts fpul, r1 - cmp/eq r0, r1 - bf _vRegTest1Error - - mov #6, r0 - cmp/eq r0, r5 - bf _vRegTest1Error - flds fr5, fpul - sts fpul, r1 - cmp/eq r0, r1 - bf _vRegTest1Error - - mov #7, r0 - cmp/eq r0, r6 - bf _vRegTest1Error - flds fr6, fpul - sts fpul, r1 - cmp/eq r0, r1 - bf _vRegTest1Error - - mov #8, r0 - cmp/eq r0, r7 - bf _vRegTest1Error - flds fr7, fpul - sts fpul, r1 - cmp/eq r0, r1 - bf _vRegTest1Error - - mov #9, r0 - cmp/eq r0, r8 - bf _vRegTest1Error - flds fr8, fpul - sts fpul, r1 - cmp/eq r0, r1 - bf _vRegTest1Error - - mov #10, r0 - cmp/eq r0, r9 - bf _vRegTest1Error - flds fr9, fpul - sts fpul, r1 - cmp/eq r0, r1 - bf _vRegTest1Error - - mov #11, r0 - cmp/eq r0, r10 - bf _vRegTest1Error - flds fr10, fpul - sts fpul, r1 - cmp/eq r0, r1 - bf _vRegTest1Error - - mov #12, r0 - cmp/eq r0, r11 - bf _vRegTest1Error - flds fr11, fpul - sts fpul, r1 - cmp/eq r0, r1 - bf _vRegTest1Error - - mov #13, r0 - cmp/eq r0, r12 - bf _vRegTest1Error - flds fr12, fpul - sts fpul, r1 - cmp/eq r0, r1 - bf _vRegTest1Error - - mov #14, r0 - cmp/eq r0, r13 - bf _vRegTest1Error - flds fr13, fpul - sts fpul, r1 - cmp/eq r0, r1 - bf _vRegTest1Error - - mov #15, r0 - cmp/eq r0, r14 - bf _vRegTest1Error - flds fr14, fpul - sts fpul, r1 - cmp/eq r0, r1 - bf _vRegTest1Error - - sts macl, r0 - mov #16, r1 - cmp/eq r0, r1 - bf _vRegTest1Error - - sts mach, r0 - mov #17, r1 - cmp/eq r0, r1 - bf _vRegTest1Error - - stc gbr, r0 - mov #18, r1 - cmp/eq r0, r1 - bf _vRegTest1Error - - ; Increment the loop counter to indicate that this task is still running and - ; still healthy. - mov.l #_ulRegTest1CycleCount, r0 - mov.l @r0, r1 - add #1, r1 - mov.l r1, @r0 - - ; Jump back to test all the registers again. - bra _vRegTest1Loop - nop - -;----------------------------------------------------------- - -_vRegTest1Error: - bra _vRegTest1Error - nop - -;----------------------------------------------------------- - -_vRegTest2Task: - - ; Fill the standard registers with known values. - mov #12, r1 - mov #13, r2 - mov #14, r3 - mov #15, r4 - mov #16, r5 - mov #17, r6 - mov #18, r7 - mov #19, r8 - mov #110, r9 - mov #111, r10 - mov #112, r11 - mov #113, r12 - mov #114, r13 - - mov #115, r0 - lds r0, macl - mov #116, r0 - lds r0, mach - mov #117, r0 - ldc r0, gbr - - ; Also fill the flop registers with known values. - lds r1, fpul - fsts fpul, fr1 - lds r2, fpul - fsts fpul, fr2 - lds r3, fpul - fsts fpul, fr3 - lds r4, fpul - fsts fpul, fr4 - lds r5, fpul - fsts fpul, fr5 - lds r6, fpul - fsts fpul, fr6 - lds r7, fpul - fsts fpul, fr7 - lds r8, fpul - fsts fpul, fr8 - lds r9, fpul - fsts fpul, fr9 - lds r10, fpul - fsts fpul, fr10 - lds r11, fpul - fsts fpul, fr11 - lds r12, fpul - fsts fpul, fr12 - lds r13, fpul - fsts fpul, fr13 - lds r14, fpul - fsts fpul, fr14 - -_vRegTest2Loop: - - ; Reset r1 which was used in the tests. - mov #12, r1 - - ; Test that the registers still contain the expected values. If not, jump to - ; vRegTestError, which will stop this function looping and so cause it to stop - ; incrementing its loop counter. Both the standard and flop registers are - ; checked. - mov #12, r0 - cmp/eq r0, r1 - bf _vRegTest2Error - flds fr1, fpul - sts fpul, r1 - cmp/eq r0, r1 - bf _vRegTest2Error - - mov #13, r0 - cmp/eq r0, r2 - bf _vRegTest2Error - flds fr2, fpul - sts fpul, r1 - cmp/eq r0, r1 - bf _vRegTest2Error - - mov #14, r0 - cmp/eq r0, r3 - bf _vRegTest2Error - flds fr3, fpul - sts fpul, r1 - cmp/eq r0, r1 - bf _vRegTest2Error - - mov #15, r0 - cmp/eq r0, r4 - bf _vRegTest2Error - flds fr4, fpul - sts fpul, r1 - cmp/eq r0, r1 - bf _vRegTest2Error - - mov #16, r0 - cmp/eq r0, r5 - bf _vRegTest2Error - flds fr5, fpul - sts fpul, r1 - cmp/eq r0, r1 - bf _vRegTest2Error - - mov #17, r0 - cmp/eq r0, r6 - bf _vRegTest2Error - flds fr6, fpul - sts fpul, r1 - cmp/eq r0, r1 - bf _vRegTest2Error - - mov #18, r0 - cmp/eq r0, r7 - bf _vRegTest2Error - flds fr7, fpul - sts fpul, r1 - cmp/eq r0, r1 - bf _vRegTest2Error - - mov #19, r0 - cmp/eq r0, r8 - bf _vRegTest2Error - flds fr8, fpul - sts fpul, r1 - cmp/eq r0, r1 - bf _vRegTest2Error - - mov #110, r0 - cmp/eq r0, r9 - bf _vRegTest2Error - flds fr9, fpul - sts fpul, r1 - cmp/eq r0, r1 - bf _vRegTest2Error - - mov #111, r0 - cmp/eq r0, r10 - bf _vRegTest2Error - flds fr10, fpul - sts fpul, r1 - cmp/eq r0, r1 - bf _vRegTest2Error - - mov #112, r0 - cmp/eq r0, r11 - bf _vRegTest2Error - flds fr11, fpul - sts fpul, r1 - cmp/eq r0, r1 - bf _vRegTest2Error - - mov #113, r0 - cmp/eq r0, r12 - bf _vRegTest2Error - flds fr12, fpul - sts fpul, r1 - cmp/eq r0, r1 - bf _vRegTest2Error - - mov #114, r0 - cmp/eq r0, r13 - bf _vRegTest2Error - flds fr13, fpul - sts fpul, r1 - cmp/eq r0, r1 - bf _vRegTest2Error - - sts macl, r0 - mov #115, r1 - cmp/eq r0, r1 - bf _vRegTest2Error - - sts mach, r0 - mov #116, r1 - cmp/eq r0, r1 - bf _vRegTest2Error - - stc gbr, r0 - mov #117, r1 - cmp/eq r0, r1 - bf _vRegTest2Error - - ; Increment the loop counter to indicate that this task is still running and - ; still healthy. - mov.l #_ulRegTest2CycleCount, r0 - mov.l @r0, r1 - add #1, r1 - mov.l r1, @r0 - - ; Jump back to test all the registers again. - bra _vRegTest2Loop - nop - -;----------------------------------------------------------- - -_vRegTest2Error: - - bra _vRegTest2Error - nop - - - .end - diff --git a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/resetprg.c b/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/resetprg.c deleted file mode 100644 index f3b5d3044..000000000 --- a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/resetprg.c +++ /dev/null @@ -1,106 +0,0 @@ -/***********************************************************************/ -/* */ -/* FILE :resetprg.c */ -/* DATE :Sun, Dec 27, 2009 */ -/* DESCRIPTION :Reset Program */ -/* CPU TYPE :Other */ -/* */ -/* This file is generated by Renesas Project Generator (Ver.4.16). */ -/* */ -/***********************************************************************/ - - - -#include -#include <_h_c_lib.h> -//#include // Remove the comment when you use errno -//#include // Remove the comment when you use rand() -#include "typedefine.h" -#include "stacksct.h" - -#define SR_Init 0x000000F0 -#ifdef _FPD // when -fpu=double is specified -#define FPSCR_Init 0x000C0001 -#else -#define FPSCR_Init 0x00040001 -#endif -#define INT_OFFSET 0x10 - -extern _UINT INT_Vectors; - -#ifdef __cplusplus -extern "C" { -#endif -void PowerON_Reset_PC(void); -void Manual_Reset_PC(void); -void main(void); -#ifdef __cplusplus -} -#endif - -//#ifdef __cplusplus // Enable I/O in the application(both SIM I/O and hardware I/O) -//extern "C" { -//#endif -//extern void _INIT_IOLIB(void); -//extern void _CLOSEALL(void); -//#ifdef __cplusplus -//} -//#endif - -//extern void srand(_UINT); // Remove the comment when you use rand() -//extern _SBYTE *_s1ptr; // Remove the comment when you use strtok() - -//#ifdef __cplusplus // Use Hardware Setup -//extern "C" { -//#endif -//extern void HardwareSetup(void); -//#ifdef __cplusplus -//} -//#endif - -//#ifdef __cplusplus // Remove the comment when you use global class object -//extern "C" { // Sections C$INIT and C$END will be generated -//#endif -//extern void _CALL_INIT(void); -//extern void _CALL_END(void); -//#ifdef __cplusplus -//} -//#endif - -#pragma section ResetPRG - -#pragma entry PowerON_Reset_PC - -void PowerON_Reset_PC(void) -{ - set_vbr((void *)((_UBYTE *)&INT_Vectors - INT_OFFSET)); - - set_fpscr(FPSCR_Init); - - _INITSCT(); - -// _CALL_INIT(); // Remove the comment when you use global class object - -// _INIT_IOLIB(); // Enable I/O in the application(both SIM I/O and hardware I/O) - -// errno=0; // Remove the comment when you use errno -// srand((_UINT)1); // Remove the comment when you use rand() -// _s1ptr=NULL; // Remove the comment when you use strtok() - -// HardwareSetup(); // Use Hardware Setup - - set_cr(SR_Init); - - main(); - -// _CLOSEALL(); // Close I/O in the application(both SIM I/O andhardware I/O) - -// _CALL_END(); // Remove the comment when you use global class object - - sleep(); -} - -//#pragma entry Manual_Reset_PC // Remove the comment when you use Manual Reset -void Manual_Reset_PC(void) -{ -} diff --git a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/stacksct.h b/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/stacksct.h deleted file mode 100644 index fb2eddb1a..000000000 --- a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/stacksct.h +++ /dev/null @@ -1,11 +0,0 @@ -/***********************************************************************/ -/* */ -/* FILE :stacksct.h */ -/* DATE :Sun, Dec 27, 2009 */ -/* DESCRIPTION :Setting of Stack area */ -/* CPU TYPE :Other */ -/* */ -/* This file is generated by Renesas Project Generator (Ver.4.16). */ -/* */ -/***********************************************************************/ -#pragma stacksize 0x400 /* Do not modify this line. */ diff --git a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/stdint.h b/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/stdint.h deleted file mode 100644 index 6d86149ca..000000000 --- a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/stdint.h +++ /dev/null @@ -1,27 +0,0 @@ - -#ifndef FREERTOS_STDINT -#define FREERTOS_STDINT - -/******************************************************************************* - * THIS IS NOT A FULL stdint.h IMPLEMENTATION - It only contains the definitions - * necessary to build the FreeRTOS code. It is provided to allow FreeRTOS to be - * built using compilers that do not provide their own stdint.h definition. - * - * To use this file: - * - * 1) Copy this file into the directory that contains your FreeRTOSConfig.h - * header file, as that directory will already be in the compilers include - * path. - * - * 2) Rename the copied file stdint.h. - * - */ - -typedef signed char int8_t; -typedef unsigned char uint8_t; -typedef short int16_t; -typedef unsigned short uint16_t; -typedef long int32_t; -typedef unsigned long uint32_t; - -#endif /* FREERTOS_STDINT */ diff --git a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/typedefine.h b/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/typedefine.h deleted file mode 100644 index 372d68078..000000000 --- a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/typedefine.h +++ /dev/null @@ -1,23 +0,0 @@ -/***********************************************************************/ -/* */ -/* FILE :typedefine.h */ -/* DATE :Sun, Dec 27, 2009 */ -/* DESCRIPTION :Aliases of Integer Type */ -/* CPU TYPE :Other */ -/* */ -/* This file is generated by Renesas Project Generator (Ver.4.16). */ -/* */ -/***********************************************************************/ - - - -typedef signed char _SBYTE; -typedef unsigned char _UBYTE; -typedef signed short _SWORD; -typedef unsigned short _UWORD; -typedef signed int _SINT; -typedef unsigned int _UINT; -typedef signed long _SDWORD; -typedef unsigned long _UDWORD; -typedef signed long long _SQWORD; -typedef unsigned long long _UQWORD; diff --git a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/uIP_Task.c b/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/uIP_Task.c deleted file mode 100644 index 217c650c6..000000000 --- a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/uIP_Task.c +++ /dev/null @@ -1,234 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* Standard includes. */ -#include - -/* Scheduler includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "semphr.h" - -/* uip includes. */ -#include "net/uip.h" -#include "net/uip_arp.h" -#include "apps/httpd/httpd.h" -#include "sys/timer.h" -#include "net/clock-arch.h" - -/* Demo includes. */ -#include "ParTest.h" - -/* Hardware includes. */ -#include "hwEthernet.h" - -/*-----------------------------------------------------------*/ - -/* How long to wait before attempting to connect the MAC again. */ -#define uipINIT_WAIT ( 100 / portTICK_PERIOD_MS ) - -/* Shortcut to the header within the Rx buffer. */ -#define xHeader ((struct uip_eth_hdr *) &uip_buf[ 0 ]) - -/* Standard constant. */ -#define uipTOTAL_FRAME_HEADER_SIZE 54 - -/*-----------------------------------------------------------*/ - -/* - * Setup the MAC address in the MAC itself, and in the uIP stack. - */ -static void prvSetMACAddress( void ); - -/* - * Port functions required by the uIP stack. - */ -void clock_init( void ); -clock_time_t clock_time( void ); - -/*-----------------------------------------------------------*/ - -/* The semaphore used by the ISR to wake the uIP task. */ -SemaphoreHandle_t xEMACSemaphore = NULL; - -/*-----------------------------------------------------------*/ - -void clock_init(void) -{ - /* This is done when the scheduler starts. */ -} -/*-----------------------------------------------------------*/ - -clock_time_t clock_time( void ) -{ - return xTaskGetTickCount(); -} -/*-----------------------------------------------------------*/ - -void vuIP_Task( void *pvParameters ) -{ -portBASE_TYPE i; -uip_ipaddr_t xIPAddr; -struct timer periodic_timer, arp_timer; -extern void ( vEMAC_ISR_Wrapper )( void ); - - ( void ) pvParameters; - - /* Initialise the uIP stack. */ - timer_set( &periodic_timer, configTICK_RATE_HZ / 2 ); - timer_set( &arp_timer, configTICK_RATE_HZ * 10 ); - uip_init(); - uip_ipaddr( &xIPAddr, configIP_ADDR0, configIP_ADDR1, configIP_ADDR2, configIP_ADDR3 ); - uip_sethostaddr( &xIPAddr ); - uip_ipaddr( &xIPAddr, configNET_MASK0, configNET_MASK1, configNET_MASK2, configNET_MASK3 ); - uip_setnetmask( &xIPAddr ); - prvSetMACAddress(); - httpd_init(); - - /* Create the semaphore used to wake the uIP task. */ - vSemaphoreCreateBinary( xEMACSemaphore ); - - /* Initialise the MAC. */ - vInitEmac(); - - while( lEMACWaitForLink() != pdPASS ) - { - vTaskDelay( uipINIT_WAIT ); - } - - for( ;; ) - { - /* Is there received data ready to be processed? */ - uip_len = ( unsigned short ) ulEMACRead(); - - if( ( uip_len > 0 ) && ( uip_buf != NULL ) ) - { - /* Standard uIP loop taken from the uIP manual. */ - if( xHeader->type == htons( UIP_ETHTYPE_IP ) ) - { - uip_arp_ipin(); - uip_input(); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - uip_arp_out(); - vEMACWrite(); - } - } - else if( xHeader->type == htons( UIP_ETHTYPE_ARP ) ) - { - uip_arp_arpin(); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - vEMACWrite(); - } - } - } - else - { - if( timer_expired( &periodic_timer ) && ( uip_buf != NULL ) ) - { - timer_reset( &periodic_timer ); - for( i = 0; i < UIP_CONNS; i++ ) - { - uip_periodic( i ); - - /* If the above function invocation resulted in data that - should be sent out on the network, the global variable - uip_len is set to a value > 0. */ - if( uip_len > 0 ) - { - uip_arp_out(); - vEMACWrite(); - } - } - - /* Call the ARP timer function every 10 seconds. */ - if( timer_expired( &arp_timer ) ) - { - timer_reset( &arp_timer ); - uip_arp_timer(); - } - } - else - { - /* We did not receive a packet, and there was no periodic - processing to perform. Block for a fixed period. If a packet - is received during this period we will be woken by the ISR - giving us the Semaphore. */ - xSemaphoreTake( xEMACSemaphore, configTICK_RATE_HZ / 2 ); - } - } - } -} -/*-----------------------------------------------------------*/ - -static void prvSetMACAddress( void ) -{ -struct uip_eth_addr xAddr; - - /* Configure the MAC address in the uIP stack. */ - xAddr.addr[ 0 ] = configMAC_ADDR0; - xAddr.addr[ 1 ] = configMAC_ADDR1; - xAddr.addr[ 2 ] = configMAC_ADDR2; - xAddr.addr[ 3 ] = configMAC_ADDR3; - xAddr.addr[ 4 ] = configMAC_ADDR4; - xAddr.addr[ 5 ] = configMAC_ADDR5; - uip_setethaddr( xAddr ); -} -/*-----------------------------------------------------------*/ - -void vApplicationProcessFormInput( char *pcInputString ) -{ -char *c; - - /* Process the form input sent by the IO page of the served HTML. */ - - c = strstr( pcInputString, "?" ); - if( c ) - { - /* Turn the FIO1 LED's on or off in accordance with the check box status. */ - if( strstr( c, "LED0=1" ) != NULL ) - { - /* Turn LED 4 on. */ - vParTestSetLED( 4, 1 ); - } - else - { - /* Turn LED 4 off. */ - vParTestSetLED( 4, 0 ); - } - } -} - diff --git a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/vect.h b/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/vect.h deleted file mode 100644 index 6d3f73f12..000000000 --- a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/vect.h +++ /dev/null @@ -1,902 +0,0 @@ -/****************************************************************************** -* DISCLAIMER -* -* This software is supplied by Renesas Technology Corp. and is only -* intended for use with Renesas products. No other uses are authorized. -* -* This software is owned by Renesas Technology Corp. and is protected under -* all applicable laws, including copyright laws. -* -* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES -* REGARDING THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, -* INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A -* PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY -* DISCLAIMED. -* -* TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS -* TECHNOLOGY CORP. NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE -* FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES -* FOR ANY REASON RELATED TO THE THIS SOFTWARE, EVEN IF RENESAS OR ITS -* AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. -* -* Renesas reserves the right, without notice, to make changes to this -* software and to discontinue the availability of this software. -* By using this software, you agree to the additional terms and -* conditions found by accessing the following link: -* http://www.renesas.com/disclaimer -******************************************************************************** -* Copyright (C) 2009. Renesas Technology Corp., All Rights Reserved. -*""FILE COMMENT""*********** Technical reference data ************************** -* System Name : SH7216 Sample Program -* File Name : vect.h -* Abstract : Definition of Vector -* Version : 0.02.00 -* Device : SH7216 -* Tool-Chain : High-performance Embedded Workshop (Ver.4.05.01). -* : C/C++ compiler package for the SuperH RISC engine family -* : (Ver.9.03 Release00). -* OS : None -* H/W Platform: R0K572167 (CPU board) -* Description : -******************************************************************************** -* History : Mar.30,2009 Ver.0.02.00 -*""FILE COMMENT END""**********************************************************/ -#ifndef VECT_H -#define VECT_H - - -//;<> -// 0 Power On Reset PC -extern void PowerON_Reset_PC(void); - -//;<> -// 1 Power On Reset SP - -//;<> -// 2 Manual Reset PC -extern void Manual_Reset_PC(void); - -//;<> -// 3 Manual Reset SP - -// 4 Illegal code -#pragma interrupt INT_Illegal_code -extern void INT_Illegal_code(void); - -// 5 Reserved - -// 6 Illegal slot -#pragma interrupt INT_Illegal_slot -extern void INT_Illegal_slot(void); - -// 7 Reserved - -// 8 Reserved - -// 9 CPU Address error -#pragma interrupt INT_CPU_Address -extern void INT_CPU_Address(void); - -// 10 DMAC Address error -#pragma interrupt INT_DMAC_Address -extern void INT_DMAC_Address(void); - -// 11 NMI -#pragma interrupt INT_NMI -extern void INT_NMI(void); - -// 12 User breakpoint trap -#pragma interrupt INT_User_Break -extern void INT_User_Break(void); - -// 13 Reserved - -// 14 H-UDI -#pragma interrupt INT_HUDI -extern void INT_HUDI(void); - -// 15 Register bank over -#pragma interrupt INT_Bank_Overflow -extern void INT_Bank_Overflow(void); - -// 16 Register bank under -#pragma interrupt INT_Bank_Underflow -extern void INT_Bank_Underflow(void); - -// 17 ZERO_DIV -#pragma interrupt INT_Divide_by_Zero -extern void INT_Divide_by_Zero(void); - -// 18 OVER_DIV -#pragma interrupt INT_Divide_Overflow -extern void INT_Divide_Overflow(void); - -// 19 Reserved - -// 20 Reserved - -// 21 Reserved - -// 22 Reserved - -// 23 Reserved - -// 24 Reserved - -// 25 Reserved - -// 26 Reserved - -// 27 Reserved - -// 28 Reserved - -// 29 Reserved - -// 30 Reserved - -// 31 Reserved - -// 32 TRAPA (User Vecter) -#pragma interrupt INT_TRAPA32 -extern void INT_TRAPA32(void); - -// 33 TRAPA (User Vecter) -#pragma interrupt INT_TRAPA33 -extern void INT_TRAPA33(void); - -// 34 TRAPA (User Vecter) -#pragma interrupt INT_TRAPA34 -extern void INT_TRAPA34(void); - -// 35 TRAPA (User Vecter) -#pragma interrupt INT_TRAPA35 -extern void INT_TRAPA35(void); - -// 36 TRAPA (User Vecter) -#pragma interrupt INT_TRAPA36 -extern void INT_TRAPA36(void); - -// 37 TRAPA (User Vecter) -#pragma interrupt INT_TRAPA37 -extern void INT_TRAPA37(void); - -// 38 TRAPA (User Vecter) -#pragma interrupt INT_TRAPA38 -extern void INT_TRAPA38(void); - -// 39 TRAPA (User Vecter) -#pragma interrupt INT_TRAPA39 -extern void INT_TRAPA39(void); - -// 40 TRAPA (User Vecter) -#pragma interrupt INT_TRAPA40 -extern void INT_TRAPA40(void); - -// 41 TRAPA (User Vecter) -#pragma interrupt INT_TRAPA41 -extern void INT_TRAPA41(void); - -// 42 TRAPA (User Vecter) -#pragma interrupt INT_TRAPA42 -extern void INT_TRAPA42(void); - -// 43 TRAPA (User Vecter) -#pragma interrupt INT_TRAPA43 -extern void INT_TRAPA43(void); - -// 44 TRAPA (User Vecter) -#pragma interrupt INT_TRAPA44 -extern void INT_TRAPA44(void); - -// 45 TRAPA (User Vecter) -#pragma interrupt INT_TRAPA45 -extern void INT_TRAPA45(void); - -// 46 TRAPA (User Vecter) -#pragma interrupt INT_TRAPA46 -extern void INT_TRAPA46(void); - -// 47 TRAPA (User Vecter) -#pragma interrupt INT_TRAPA47 -extern void INT_TRAPA47(void); - -// 48 TRAPA (User Vecter) -#pragma interrupt INT_TRAPA48 -extern void INT_TRAPA48(void); - -// 49 TRAPA (User Vecter) -#pragma interrupt INT_TRAPA49 -extern void INT_TRAPA49(void); - -// 50 TRAPA (User Vecter) -#pragma interrupt INT_TRAPA50 -extern void INT_TRAPA50(void); - -// 51 TRAPA (User Vecter) -#pragma interrupt INT_TRAPA51 -extern void INT_TRAPA51(void); - -// 52 TRAPA (User Vecter) -#pragma interrupt INT_TRAPA52 -extern void INT_TRAPA52(void); - -// 53 TRAPA (User Vecter) -#pragma interrupt INT_TRAPA53 -extern void INT_TRAPA53(void); - -// 54 TRAPA (User Vecter) -#pragma interrupt INT_TRAPA54 -extern void INT_TRAPA54(void); - -// 55 TRAPA (User Vecter) -#pragma interrupt INT_TRAPA55 -extern void INT_TRAPA55(void); - -// 56 TRAPA (User Vecter) -#pragma interrupt INT_TRAPA56 -extern void INT_TRAPA56(void); - -// 57 TRAPA (User Vecter) -#pragma interrupt INT_TRAPA57 -extern void INT_TRAPA57(void); - -// 58 TRAPA (User Vecter) -#pragma interrupt INT_TRAPA58 -extern void INT_TRAPA58(void); - -// 59 TRAPA (User Vecter) -#pragma interrupt INT_TRAPA59 -extern void INT_TRAPA59(void); - -// 60 TRAPA (User Vecter) -#pragma interrupt INT_TRAPA60 -extern void INT_TRAPA60(void); - -// 61 TRAPA (User Vecter) -#pragma interrupt INT_TRAPA61 -extern void INT_TRAPA61(void); - -// 62 TRAPA (User Vecter) -#pragma interrupt INT_TRAPA62 -extern void INT_TRAPA62(void); - -// 63 TRAPA (User Vecter) -#pragma interrupt INT_TRAPA63 -extern void INT_TRAPA63(void); - -// 64 Interrupt IRQ0 -#pragma interrupt INT_IRQ0(resbank) -extern void INT_IRQ0(void); - -// 65 Interrupt IRQ1 -#pragma interrupt INT_IRQ1(resbank) -extern void INT_IRQ1(void); - -// 66 Interrupt IRQ2 -#pragma interrupt INT_IRQ2(resbank) -extern void INT_IRQ2(void); - -// 67 Interrupt IRQ3 -#pragma interrupt INT_IRQ3(resbank) -extern void INT_IRQ3(void); - -// 68 Interrupt IRQ4 -#pragma interrupt INT_IRQ4(resbank) -extern void INT_IRQ4(void); - -// 69 Interrupt IRQ5 -#pragma interrupt INT_IRQ5(resbank) -extern void INT_IRQ5(void); - -// 70 Interrupt IRQ6 -#pragma interrupt INT_IRQ6(resbank) -extern void INT_IRQ6(void); - -// 71 Interrupt IRQ7 -#pragma interrupt INT_IRQ7(resbank) -extern void INT_IRQ7(void); - -// 72 Reserved - -// 73 Reserved - -// 74 Reserved - -// 75 Reserved - -// 76 Reserved - -// 77 Reserved - -// 78 Reserved - -// 79 Reserved - -// 80 Interrupt PINT0 -#pragma interrupt INT_PINT0(resbank) -extern void INT_PINT0(void); - -// 81 Interrupt PINT1 -#pragma interrupt INT_PINT1(resbank) -extern void INT_PINT1(void); - -// 82 Interrupt PINT2 -#pragma interrupt INT_PINT2(resbank) -extern void INT_PINT2(void); - -// 83 Interrupt PINT3 -#pragma interrupt INT_PINT3(resbank) -extern void INT_PINT3(void); - -// 84 Interrupt PINT4 -#pragma interrupt INT_PINT4(resbank) -extern void INT_PINT4(void); - -// 85 Interrupt PINT5 -#pragma interrupt INT_PINT5(resbank) -extern void INT_PINT5(void); - -// 86 Interrupt PINT6 -#pragma interrupt INT_PINT6(resbank) -extern void INT_PINT6(void); - -// 87 Interrupt PINT7 -#pragma interrupt INT_PINT7(resbank) -extern void INT_PINT7(void); - -// 88 Reserved - -// 89 Reserved - -// 90 Reserved - -// 91 ROM FIFE -#pragma interrupt INT_ROM_FIFE(resbank) -extern void INT_ROM_FIFE(void); - -// 92 A/D ADI0 -#pragma interrupt INT_AD_ADI0(resbank) -extern void INT_AD_ADI0(void); - -// 93 Reserved - -// 94 Reserved - -// 95 Reserved - -// 96 A/D ADI1 -#pragma interrupt INT_AD_ADI1(resbank) -extern void INT_AD_ADI1(void); - -// 97 Reserved - -// 98 Reserved - -// 99 Reserved - -// 100 Reserved - -// 101 Reserved - -// 102 Reserved - -// 103 Reserved - -// 104 RCANET0 ERS_0 -#pragma interrupt INT_RCANET0_ERS_0 -extern void INT_RCANET0_ERS_0(void); - -// 105 RCANET0 OVR_0 -#pragma interrupt INT_RCANET0_OVR_0 -extern void INT_RCANET0_OVR_0(void); - -// 106 RCANET0 RM01_0 -#pragma interrupt INT_RCANET0_RM01_0 -extern void INT_RCANET0_RM01_0(void); - -// 107 RCANET0 SLE_0 -#pragma interrupt INT_RCANET0_SLE_0 -extern void INT_RCANET0_SLE_0(void); - -// 108 DMAC0 DEI0 -#pragma interrupt INT_DMAC0_DEI0(resbank) -extern void INT_DMAC0_DEI0(void); - -// 109 DMAC0 HEI0 -#pragma interrupt INT_DMAC0_HEI0(resbank) -extern void INT_DMAC0_HEI0(void); - -// 110 Reserved - -// 111 Reserved - -// 112 DMAC1 DEI1 -#pragma interrupt INT_DMAC1_DEI1(resbank) -extern void INT_DMAC1_DEI1(void); - -// 113 DMAC1 HEI1 -#pragma interrupt INT_DMAC1_HEI1(resbank) -extern void INT_DMAC1_HEI1(void); - -// 114 Reserved - -// 115 Reserved - -// 116 DMAC2 DEI2 -#pragma interrupt INT_DMAC2_DEI2(resbank) -extern void INT_DMAC2_DEI2(void); - -// 117 DMAC2 HEI2 -#pragma interrupt INT_DMAC2_HEI2(resbank) -extern void INT_DMAC2_HEI2(void); - -// 118 Reserved - -// 119 Reserved - -// 120 DMAC3 DEI3 -#pragma interrupt INT_DMAC3_DEI3(resbank) -extern void INT_DMAC3_DEI3(void); - -// 121 DMAC3 HEI3 -#pragma interrupt INT_DMAC3_HEI3(resbank) -extern void INT_DMAC3_HEI3(void); - -// 122 Reserved - -// 123 Reserved - -// 124 DMAC4 DEI4 -#pragma interrupt INT_DMAC4_DEI4(resbank) -extern void INT_DMAC4_DEI4(void); - -// 125 DMAC4 HEI4 -#pragma interrupt INT_DMAC4_HEI4(resbank) -extern void INT_DMAC4_HEI4(void); - -// 126 Reserved - -// 127 Reserved - -// 128 DMAC5 DEI5 -#pragma interrupt INT_DMAC5_DEI5(resbank) -extern void INT_DMAC5_DEI5(void); - -// 129 DMAC5 HEI5 -#pragma interrupt INT_DMAC5_HEI5(resbank) -extern void INT_DMAC5_HEI5(void); - -// 130 Reserved - -// 131 Reserved - -// 132 DMAC6 DEI6 -#pragma interrupt INT_DMAC6_DEI6(resbank) -extern void INT_DMAC6_DEI6(void); - -// 133 DMAC6 HEI6 -#pragma interrupt INT_DMAC6_HEI6(resbank) -extern void INT_DMAC6_HEI6(void); - -// 134 Reserved - -// 135 Reserved - -// 136 DMAC7 DEI7 -#pragma interrupt INT_DMAC7_DEI7(resbank) -extern void INT_DMAC7_DEI7(void); - -// 137 DMAC7 HEI7 -#pragma interrupt INT_DMAC7_HEI7(resbank) -extern void INT_DMAC7_HEI7(void); - -// 138 Reserved - -// 139 Reserved - -// 140 CMT CMI0 -#pragma interrupt INT_CMT_CMI0(resbank) -extern void INT_CMT_CMI0(void); - -// 141 Reserved - -// 142 Reserved - -// 143 Reserved - -// 144 CMT CMI1 -#pragma interrupt INT_CMT_CMI1(resbank) -extern void INT_CMT_CMI1(void); - -// 145 Reserved - -// 146 Reserved - -// 147 Reserved - -// 148 BSC CMTI -#pragma interrupt INT_BSC_CMTI(resbank) -extern void INT_BSC_CMTI(void); - -// 149 Reserved - -// 150 USB EP4FULL -#pragma interrupt INT_USB_EP4FULL(resbank) -extern void INT_USB_EP4FULL(void); - -// 151 USB EP5EMPTY -#pragma interrupt INT_USB_EP5EMPTY(resbank) -extern void INT_USB_EP5EMPTY(void); - -// 152 WDT ITI -#pragma interrupt INT_WDT_ITI(resbank) -extern void INT_WDT_ITI(void); - -// 153 E-DMAC EINT0 -#pragma interrupt INT_EDMAC_EINT0(resbank) -extern void INT_EDMAC_EINT0(void); - -// 154 USB EP1FULL -#pragma interrupt INT_USB_EP1FULL(resbank) -extern void INT_USB_EP1FULL(void); - -// 155 USB EP2EMPTY -#pragma interrupt INT_USB_EP2EMPTY(resbank) -extern void INT_USB_EP2EMPTY(void); - -// 156 MTU2 MTU0 TGI0A -#pragma interrupt INT_MTU2_MTU0_TGI0A(resbank) -extern void INT_MTU2_MTU0_TGI0A(void); - -// 157 MTU2 MTU0 TGI0B -#pragma interrupt INT_MTU2_MTU0_TGI0B(resbank) -extern void INT_MTU2_MTU0_TGI0B(void); - -// 158 MTU2 MTU0 TGI0C -#pragma interrupt INT_MTU2_MTU0_TGI0C(resbank) -extern void INT_MTU2_MTU0_TGI0C(void); - -// 159 MTU2 MTU0 TGI0D -#pragma interrupt INT_MTU2_MTU0_TGI0D(resbank) -extern void INT_MTU2_MTU0_TGI0D(void); - -// 160 MTU2 MTU0 TGI0V -#pragma interrupt INT_MTU2_MTU0_TGI0V(resbank) -extern void INT_MTU2_MTU0_TGI0V(void); - -// 161 MTU2 MTU0 TGI0E -#pragma interrupt INT_MTU2_MTU0_TGI0E(resbank) -extern void INT_MTU2_MTU0_TGI0E(void); - -// 162 MTU2 MTU0 TGI0F -#pragma interrupt INT_MTU2_MTU0_TGI0F(resbank) -extern void INT_MTU2_MTU0_TGI0F(void); - -// 163 Reserved - -// 164 MTU2 MTU1 TGI1A -#pragma interrupt INT_MTU2_MTU1_TGI1A(resbank) -extern void INT_MTU2_MTU1_TGI1A(void); - -// 165 MTU2 MTU1 TGI1B -#pragma interrupt INT_MTU2_MTU1_TGI1B(resbank) -extern void INT_MTU2_MTU1_TGI1B(void); - -// 166 Reserved - -// 167 Reserved - -// 168 MTU2 MTU1 TGI1V -#pragma interrupt INT_MTU2_MTU1_TGI1V(resbank) -extern void INT_MTU2_MTU1_TGI1V(void); - -// 169 MTU2 MTU1 TGI1U -#pragma interrupt INT_MTU2_MTU1_TGI1U(resbank) -extern void INT_MTU2_MTU1_TGI1U(void); - -// 170 Reserved - -// 171 Reserved - -// 172 MTU2 MTU2 TGI2A -#pragma interrupt INT_MTU2_MTU2_TGI2A(resbank) -extern void INT_MTU2_MTU2_TGI2A(void); - -// 173 MTU2 MTU2 TGI2B -#pragma interrupt INT_MTU2_MTU2_TGI2B(resbank) -extern void INT_MTU2_MTU2_TGI2B(void); - -// 174 Reserved - -// 175 Reserved - -// 176 MTU2 MTU2 TGI2V -#pragma interrupt INT_MTU2_MTU2_TGI2V(resbank) -extern void INT_MTU2_MTU2_TGI2V(void); - -// 177 MTU2 MTU2 TGI2U -#pragma interrupt INT_MTU2_MTU2_TGI2U(resbank) -extern void INT_MTU2_MTU2_TGI2U(void); - -// 178 Reserved - -// 179 Reserved - -// 180 MTU2 MTU3 TGI3A -#pragma interrupt INT_MTU2_MTU3_TGI3A(resbank) -extern void INT_MTU2_MTU3_TGI3A(void); - -// 181 MTU2 MTU3 TGI3B -#pragma interrupt INT_MTU2_MTU3_TGI3B(resbank) -extern void INT_MTU2_MTU3_TGI3B(void); - -// 182 MTU2 MTU3 TGI3C -#pragma interrupt INT_MTU2_MTU3_TGI3C(resbank) -extern void INT_MTU2_MTU3_TGI3C(void); - -// 183 MTU2 MTU3 TGI3D -#pragma interrupt INT_MTU2_MTU3_TGI3D(resbank) -extern void INT_MTU2_MTU3_TGI3D(void); - -// 184 MTU2 MTU3 TGI3V -#pragma interrupt INT_MTU2_MTU3_TGI3V(resbank) -extern void INT_MTU2_MTU3_TGI3V(void); - -// 185 Reserved - -// 186 Reserved - -// 187 Reserved - -// 188 MTU2 MTU4 TGI4A -#pragma interrupt INT_MTU2_MTU4_TGI4A(resbank) -extern void INT_MTU2_MTU4_TGI4A(void); - -// 189 MTU2 MTU4 TGI4B -#pragma interrupt INT_MTU2_MTU4_TGI4B(resbank) -extern void INT_MTU2_MTU4_TGI4B(void); - -// 190 MTU2 MTU4 TGI4C -#pragma interrupt INT_MTU2_MTU4_TGI4C(resbank) -extern void INT_MTU2_MTU4_TGI4C(void); - -// 191 MTU2 MTU4 TGI4D -#pragma interrupt INT_MTU2_MTU4_TGI4D(resbank) -extern void INT_MTU2_MTU4_TGI4D(void); - -// 192 MTU2 MTU4 TGI4V -#pragma interrupt INT_MTU2_MTU4_TGI4V(resbank) -extern void INT_MTU2_MTU4_TGI4V(void); - -// 193 Reserved - -// 194 Reserved - -// 195 Reserved - -// 196 MTU2 MTU5 TGI5U -#pragma interrupt INT_MTU2_MTU5_TGI5U(resbank) -extern void INT_MTU2_MTU5_TGI5U(void); - -// 197 MTU2 MTU5 TGI5V -#pragma interrupt INT_MTU2_MTU5_TGI5V(resbank) -extern void INT_MTU2_MTU5_TGI5V(void); - -// 198 MTU2 MTU5 TGI5W -#pragma interrupt INT_MTU2_MTU5_TGI5W(resbank) -extern void INT_MTU2_MTU5_TGI5W(void); - -// 199 Reserved - -// 200 POE2 OEI1 -#pragma interrupt INT_POE2_OEI1(resbank) -extern void INT_POE2_OEI1(void); - -// 201 POE2 OEI2 -#pragma interrupt INT_POE2_OEI2(resbank) -extern void INT_POE2_OEI2(void); - -// 202 Reserved - -// 203 Reserved - -// 204 MTU2S MTU3S TGI3A -#pragma interrupt INT_MTU2S_MTU3S_TGI3A(resbank) -extern void INT_MTU2S_MTU3S_TGI3A(void); - -// 205 MTU2S MTU3S TGI3B -#pragma interrupt INT_MTU2S_MTU3S_TGI3B(resbank) -extern void INT_MTU2S_MTU3S_TGI3B(void); - -// 206 MTU2S MTU3S TGI3C -#pragma interrupt INT_MTU2S_MTU3S_TGI3C(resbank) -extern void INT_MTU2S_MTU3S_TGI3C(void); - -// 207 MTU2S MTU3S TGI3D -#pragma interrupt INT_MTU2S_MTU3S_TGI3D(resbank) -extern void INT_MTU2S_MTU3S_TGI3D(void); - -// 208 MTU2S MTU3S TGI3V -#pragma interrupt INT_MTU2S_MTU3S_TGI3V(resbank) -extern void INT_MTU2S_MTU3S_TGI3V(void); - -// 209 Reserved - -// 210 Reserved - -// 211 Reserved - -// 212 MTU2S MTU4S TGI4A -#pragma interrupt INT_MTU2S_MTU4S_TGI4A(resbank) -extern void INT_MTU2S_MTU4S_TGI4A(void); - -// 213 MTU2S MTU4S TGI4B -#pragma interrupt INT_MTU2S_MTU4S_TGI4B(resbank) -extern void INT_MTU2S_MTU4S_TGI4B(void); - -// 214 MTU2S MTU4S TGI4C -#pragma interrupt INT_MTU2S_MTU4S_TGI4C(resbank) -extern void INT_MTU2S_MTU4S_TGI4C(void); - -// 215 MTU2S MTU4S TGI4D -#pragma interrupt INT_MTU2S_MTU4S_TGI4D(resbank) -extern void INT_MTU2S_MTU4S_TGI4D(void); - -// 216 MTU2S MTU4S TGI4V -#pragma interrupt INT_MTU2S_MTU4S_TGI4V(resbank) -extern void INT_MTU2S_MTU4S_TGI4V(void); - -// 217 Reserved - -// 218 Reserved - -// 219 Reserved - -// 220 MTU2S MTU5S TGI5U -#pragma interrupt INT_MTU2S_MTU5S_TGI5U(resbank) -extern void INT_MTU2S_MTU5S_TGI5U(void); - -// 221 MTU2S MTU5S TGI5V -#pragma interrupt INT_MTU2S_MTU5S_TGI5V(resbank) -extern void INT_MTU2S_MTU5S_TGI5V(void); - -// 222 MTU2S MTU5S TGI5W -#pragma interrupt INT_MTU2S_MTU5S_TGI5W(resbank) -extern void INT_MTU2S_MTU5S_TGI5W(void); - -// 223 Reserved - -// 224 POE2 OEI3 -#pragma interrupt INT_POE2_OEI3(resbank) -extern void INT_POE2_OEI3(void); - -// 225 Reserved - -// 226 USB USI0 -#pragma interrupt INT_USB_USI0(resbank) -extern void INT_USB_USI0(void); - -// 227 USB USI1 -#pragma interrupt INT_USB_USI1(resbank) -extern void INT_USB_USI1(void); - -// 228 IIC3 STPI -#pragma interrupt INT_IIC3_STPI(resbank) -extern void INT_IIC3_STPI(void); - -// 229 IIC3 NAKI -#pragma interrupt INT_IIC3_NAKI(resbank) -extern void INT_IIC3_NAKI(void); - -// 230 IIC3 RXI -#pragma interrupt INT_IIC3_RXI(resbank) -extern void INT_IIC3_RXI(void); - -// 231 IIC3 TXI -#pragma interrupt INT_IIC3_TXI(resbank) -extern void INT_IIC3_TXI(void); - -// 232 IIC3 TEI -#pragma interrupt INT_IIC3_TEI(resbank) -extern void INT_IIC3_TEI(void); - -// 233 RSPI SPERI -#pragma interrupt INT_RSPI_SPERI(resbank) -extern void INT_RSPI_SPERI(void); - -// 234 RSPI SPRXI -#pragma interrupt INT_RSPI_SPRXI(resbank) -extern void INT_RSPI_SPRXI(void); - -// 235 RSPI SPTXI -#pragma interrupt INT_RSPI_SPTXI(resbank) -extern void INT_RSPI_SPTXI(void); - -// 236 SCI SCI4 ERI4 -#pragma interrupt INT_SCI_SCI4_ERI4(resbank) -extern void INT_SCI_SCI4_ERI4(void); - -// 237 SCI SCI4 RXI4 -#pragma interrupt INT_SCI_SCI4_RXI4(resbank) -extern void INT_SCI_SCI4_RXI4(void); - -// 238 SCI SCI4 TXI4 -#pragma interrupt INT_SCI_SCI4_TXI4(resbank) -extern void INT_SCI_SCI4_TXI4(void); - -// 239 SCI SCI4 TEI4 -#pragma interrupt INT_SCI_SCI4_TEI4(resbank) -extern void INT_SCI_SCI4_TEI4(void); - -// 240 SCI SCI0 ERI0 -#pragma interrupt INT_SCI_SCI0_ERI0(resbank) -extern void INT_SCI_SCI0_ERI0(void); - -// 241 SCI SCI0 RXI0 -#pragma interrupt INT_SCI_SCI0_RXI0(resbank) -extern void INT_SCI_SCI0_RXI0(void); - -// 242 SCI SCI0 TXI0 -#pragma interrupt INT_SCI_SCI0_TXI0(resbank) -extern void INT_SCI_SCI0_TXI0(void); - -// 243 SCI SCI0 TEI0 -#pragma interrupt INT_SCI_SCI0_TEI0(resbank) -extern void INT_SCI_SCI0_TEI0(void); - -// 244 SCI SCI1 ERI1 -#pragma interrupt INT_SCI_SCI1_ERI1(resbank) -extern void INT_SCI_SCI1_ERI1(void); - -// 245 SCI SCI1 RXI1 -#pragma interrupt INT_SCI_SCI1_RXI1(resbank) -extern void INT_SCI_SCI1_RXI1(void); - -// 246 SCI SCI1 TXI1 -#pragma interrupt INT_SCI_SCI1_TXI1(resbank) -extern void INT_SCI_SCI1_TXI1(void); - -// 247 SCI SCI1 TEI1 -#pragma interrupt INT_SCI_SCI1_TEI1(resbank) -extern void INT_SCI_SCI1_TEI1(void); - -// 248 SCI SCI2 ERI2 -#pragma interrupt INT_SCI_SCI2_ERI2(resbank) -extern void INT_SCI_SCI2_ERI2(void); - -// 249 SCI SCI2 RXI2 -#pragma interrupt INT_SCI_SCI2_RXI2(resbank) -extern void INT_SCI_SCI2_RXI2(void); - -// 250 SCI SCI2 TXI2 -#pragma interrupt INT_SCI_SCI2_TXI2(resbank) -extern void INT_SCI_SCI2_TXI2(void); - -// 251 SCI SCI2 TEI2 -#pragma interrupt INT_SCI_SCI2_TEI2(resbank) -extern void INT_SCI_SCI2_TEI2(void); - -// 252 SCIF SCIF3 BRI3 -#pragma interrupt INT_SCIF_SCIF3_BRI3(resbank) -extern void INT_SCIF_SCIF3_BRI3(void); - -// 253 SCIF SCIF3 ERI3 -#pragma interrupt INT_SCIF_SCIF3_ERI3(resbank) -extern void INT_SCIF_SCIF3_ERI3(void); - -// 254 SCIF SCIF3 RXI3 -#pragma interrupt INT_SCIF_SCIF3_RXI3(resbank) -extern void INT_SCIF_SCIF3_RXI3(void); - -// 255 SCIF SCIF3 TXI3 -#pragma interrupt INT_SCIF_SCIF3_TXI3(resbank) -extern void INT_SCIF_SCIF3_TXI3(void); - -// Dummy -#pragma interrupt Dummy(resbank) -extern void Dummy(void); - -#endif /* VECT_H */ - -/* End of File */ diff --git a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/vecttbl.c b/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/vecttbl.c deleted file mode 100644 index 2d488d439..000000000 --- a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/vecttbl.c +++ /dev/null @@ -1,553 +0,0 @@ -/***********************************************************************/ -/* */ -/* FILE :vecttbl.c */ -/* DATE :Sun, Dec 27, 2009 */ -/* DESCRIPTION :Initialize of Vector Table */ -/* CPU TYPE :Other */ -/* */ -/* This file is generated by Renesas Project Generator (Ver.4.16). */ -/* */ -/***********************************************************************/ - - - -#include "vect.h" - -extern void vPortStartFirstTask( void ); -extern void vPortYieldHandler( void ); -extern void vPortPreemptiveTick( void ); -extern void vEMAC_ISR_Wrapper( void ); -extern void MTU_Match( void ); - -#pragma section VECTTBL - -void *RESET_Vectors[] = { -//;<> -//;0 Power On Reset PC - (void*) PowerON_Reset_PC, -//;<> -// 1 Power On Reset SP - __secend("S"), -//;<> -//;2 Manual Reset PC - (void*) Manual_Reset_PC, -//;<> -// 3 Manual Reset SP - __secend("S") - -}; -#pragma section INTTBL -void *INT_Vectors[] = { -// 4 Illegal code - (void*) INT_Illegal_code, -// 5 Reserved - (void*) Dummy, -// 6 Illegal slot - (void*) INT_Illegal_slot, -// 7 Reserved - (void*) Dummy, -// 8 Reserved - (void*) Dummy, -// 9 CPU Address error - (void*) INT_CPU_Address, -// 10 DMAC Address error - (void*) INT_DMAC_Address, -// 11 NMI - (void*) INT_NMI, -// 12 User breakpoint trap - (void*) INT_User_Break, -// 13 Reserved - (void*) Dummy, -// 14 H-UDI - (void*) INT_HUDI, -// 15 Register bank over - (void*) INT_Bank_Overflow, -// 16 Register bank under - (void*) INT_Bank_Underflow, -// 17 ZERO_DIV - (void*) INT_Divide_by_Zero, -// 18 OVER_DIV - (void*) INT_Divide_Overflow, -// 19 Reserved - (void*) Dummy, -// 20 Reserved - (void*) Dummy, -// 21 Reserved - (void*) Dummy, -// 22 Reserved - (void*) Dummy, -// 23 Reserved - (void*) Dummy, -// 24 Reserved - (void*) Dummy, -// 25 Reserved - (void*) Dummy, -// 26 Reserved - (void*) Dummy, -// 27 Reserved - (void*) Dummy, -// 28 Reserved - (void*) Dummy, -// 29 Reserved - (void*) Dummy, -// 30 Reserved - (void*) Dummy, -// 31 Reserved - (void*) Dummy, -// 32 TRAPA (User Vecter) -// (void*) INT_TRAPA32, - (void*) vPortStartFirstTask, -// 33 TRAPA (User Vecter) -// (void*) INT_TRAPA33, - (void*) vPortYieldHandler, -// 34 TRAPA (User Vecter) - (void*) INT_TRAPA34, -// 35 TRAPA (User Vecter) - (void*) INT_TRAPA35, -// 36 TRAPA (User Vecter) - (void*) INT_TRAPA36, -// 37 TRAPA (User Vecter) - (void*) INT_TRAPA37, -// 38 TRAPA (User Vecter) - (void*) INT_TRAPA38, -// 39 TRAPA (User Vecter) - (void*) INT_TRAPA39, -// 40 TRAPA (User Vecter) - (void*) INT_TRAPA40, -// 41 TRAPA (User Vecter) - (void*) INT_TRAPA41, -// 42 TRAPA (User Vecter) - (void*) INT_TRAPA42, -// 43 TRAPA (User Vecter) - (void*) INT_TRAPA43, -// 44 TRAPA (User Vecter) - (void*) INT_TRAPA44, -// 45 TRAPA (User Vecter) - (void*) INT_TRAPA45, -// 46 TRAPA (User Vecter) - (void*) INT_TRAPA46, -// 47 TRAPA (User Vecter) - (void*) INT_TRAPA47, -// 48 TRAPA (User Vecter) - (void*) INT_TRAPA48, -// 49 TRAPA (User Vecter) - (void*) INT_TRAPA49, -// 50 TRAPA (User Vecter) - (void*) INT_TRAPA50, -// 51 TRAPA (User Vecter) - (void*) INT_TRAPA51, -// 52 TRAPA (User Vecter) - (void*) INT_TRAPA52, -// 53 TRAPA (User Vecter) - (void*) INT_TRAPA53, -// 54 TRAPA (User Vecter) - (void*) INT_TRAPA54, -// 55 TRAPA (User Vecter) - (void*) INT_TRAPA55, -// 56 TRAPA (User Vecter) - (void*) INT_TRAPA56, -// 57 TRAPA (User Vecter) - (void*) INT_TRAPA57, -// 58 TRAPA (User Vecter) - (void*) INT_TRAPA58, -// 59 TRAPA (User Vecter) - (void*) INT_TRAPA59, -// 60 TRAPA (User Vecter) - (void*) INT_TRAPA60, -// 61 TRAPA (User Vecter) - (void*) INT_TRAPA61, -// 62 TRAPA (User Vecter) - (void*) INT_TRAPA62, -// 63 TRAPA (User Vecter) - (void*) INT_TRAPA63, -// 64 Interrupt IRQ0 - (void*) INT_IRQ0, -// 65 Interrupt IRQ1 - (void*) INT_IRQ1, -// 66 Interrupt IRQ2 - (void*) INT_IRQ2, -// 67 Interrupt IRQ3 - (void*) INT_IRQ3, -// 68 Interrupt IRQ4 - (void*) INT_IRQ4, -// 69 Interrupt IRQ5 - (void*) INT_IRQ5, -// 70 Interrupt IRQ6 - (void*) INT_IRQ6, -// 71 Interrupt IRQ7 - (void*) INT_IRQ7, -// 72 Reserved - (void*) Dummy, -// 73 Reserved - (void*) Dummy, -// 74 Reserved - (void*) Dummy, -// 75 Reserved - (void*) Dummy, -// 76 Reserved - (void*) Dummy, -// 77 Reserved - (void*) Dummy, -// 78 Reserved - (void*) Dummy, -// 79 Reserved - (void*) Dummy, -// 80 Interrupt PINT0 - (void*) INT_PINT0, -// 81 Interrupt PINT1 - (void*) INT_PINT1, -// 82 Interrupt PINT2 - (void*) INT_PINT2, -// 83 Interrupt PINT3 - (void*) INT_PINT3, -// 84 Interrupt PINT4 - (void*) INT_PINT4, -// 85 Interrupt PINT5 - (void*) INT_PINT5, -// 86 Interrupt PINT6 - (void*) INT_PINT6, -// 87 Interrupt PINT7 - (void*) INT_PINT7, -// 88 Reserved - (void*) Dummy, -// 89 Reserved - (void*) Dummy, -// 90 Reserved - (void*) Dummy, -// 91 ROM FIFE - (void*) INT_ROM_FIFE, -// 92 A/D ADI0 - (void*) INT_AD_ADI0, -// 93 Reserved - (void*) Dummy, -// 94 Reserved - (void*) Dummy, -// 95 Reserved - (void*) Dummy, -// 96 A/D ADI1 - (void*) INT_AD_ADI1, -// 97 Reserved - (void*) Dummy, -// 98 Reserved - (void*) Dummy, -// 99 Reserved - (void*) Dummy, -// 100 Reserved - (void*) Dummy, -// 101 Reserved - (void*) Dummy, -// 102 Reserved - (void*) Dummy, -// 103 Reserved - (void*) Dummy, -// 104 RCANET0 ERS_0 - (void*) INT_RCANET0_ERS_0, -// 105 RCANET0 OVR_0 - (void*) INT_RCANET0_OVR_0, -// 106 RCANET0 RM01_0 - (void*) INT_RCANET0_RM01_0, -// 107 RCANET0 SLE_0 - (void*) INT_RCANET0_SLE_0, -// 108 DMAC0 DEI0 - (void*) INT_DMAC0_DEI0, -// 109 DMAC0 HEI0 - (void*) INT_DMAC0_HEI0, -// 110 Reserved - (void*) Dummy, -// 111 Reserved - (void*) Dummy, -// 112 DMAC1 DEI1 - (void*) INT_DMAC1_DEI1, -// 113 DMAC1 HEI1 - (void*) INT_DMAC1_HEI1, -// 114 Reserved - (void*) Dummy, -// 115 Reserved - (void*) Dummy, -// 116 DMAC2 DEI2 - (void*) INT_DMAC2_DEI2, -// 117 DMAC2 HEI2 - (void*) INT_DMAC2_HEI2, -// 118 Reserved - (void*) Dummy, -// 119 Reserved - (void*) Dummy, -// 120 DMAC3 DEI3 - (void*) INT_DMAC3_DEI3, -// 121 DMAC3 HEI3 - (void*) INT_DMAC3_HEI3, -// 122 Reserved - (void*) Dummy, -// 123 Reserved - (void*) Dummy, -// 124 DMAC4 DEI4 - (void*) INT_DMAC4_DEI4, -// 125 DMAC4 HEI4 - (void*) INT_DMAC4_HEI4, -// 126 Reserved - (void*) Dummy, -// 127 Reserved - (void*) Dummy, -// 128 DMAC5 DEI5 - (void*) INT_DMAC5_DEI5, -// 129 DMAC5 HEI5 - (void*) INT_DMAC5_HEI5, -// 130 Reserved - (void*) Dummy, -// 131 Reserved - (void*) Dummy, -// 132 DMAC6 DEI6 - (void*) INT_DMAC6_DEI6, -// 133 DMAC6 HEI6 - (void*) INT_DMAC6_HEI6, -// 134 Reserved - (void*) Dummy, -// 135 Reserved - (void*) Dummy, -// 136 DMAC7 DEI7 - (void*) INT_DMAC7_DEI7, -// 137 DMAC7 HEI7 - (void*) INT_DMAC7_HEI7, -// 138 Reserved - (void*) Dummy, -// 139 Reserved - (void*) Dummy, -// 140 CMT CMI0 -// (void*) INT_CMT_CMI0, - (void*) vPortPreemptiveTick, -// 141 Reserved - (void*) Dummy, -// 142 Reserved - (void*) Dummy, -// 143 Reserved - (void*) Dummy, -// 144 CMT CMI1 - (void*) INT_CMT_CMI1, -// 145 Reserved - (void*) Dummy, -// 146 Reserved - (void*) Dummy, -// 147 Reserved - (void*) Dummy, -// 148 BSC CMTI - (void*) INT_BSC_CMTI, -// 149 Reserved - (void*) Dummy, -// 150 USB EP4FULL - (void*) INT_USB_EP4FULL, -// 151 USB EP5EMPTY - (void*) INT_USB_EP5EMPTY, -// 152 WDT ITI - (void*) INT_WDT_ITI, -// 153 E-DMAC EINT0 - (void*) vEMAC_ISR_Wrapper, -// 154 USB EP1FULL - (void*) INT_USB_EP1FULL, -// 155 USB EP2EMPTY - (void*) INT_USB_EP2EMPTY, -// 156 MTU2 MTU0 TGI0A -// (void*) INT_MTU2_MTU0_TGI0A, - (void*) MTU_Match, -// 157 MTU2 MTU0 TGI0B - (void*) INT_MTU2_MTU0_TGI0B, -// 158 MTU2 MTU0 TGI0C - (void*) INT_MTU2_MTU0_TGI0C, -// 159 MTU2 MTU0 TGI0D - (void*) INT_MTU2_MTU0_TGI0D, -// 160 MTU2 MTU0 TGI0V - (void*) INT_MTU2_MTU0_TGI0V, -// 161 MTU2 MTU0 TGI0E - (void*) INT_MTU2_MTU0_TGI0E, -// 162 MTU2 MTU0 TGI0F - (void*) INT_MTU2_MTU0_TGI0F, -// 163 Reserved - (void*) Dummy, -// 164 MTU2 MTU1 TGI1A - (void*) INT_MTU2_MTU1_TGI1A, -// 165 MTU2 MTU1 TGI1B - (void*) INT_MTU2_MTU1_TGI1B, -// 166 Reserved - (void*) Dummy, -// 167 Reserved - (void*) Dummy, -// 168 MTU2 MTU1 TGI1V - (void*) INT_MTU2_MTU1_TGI1V, -// 169 MTU2 MTU1 TGI1U - (void*) INT_MTU2_MTU1_TGI1U, -// 170 Reserved - (void*) Dummy, -// 171 Reserved - (void*) Dummy, -// 172 MTU2 MTU2 TGI2A - (void*) INT_MTU2_MTU2_TGI2A, -// 173 MTU2 MTU2 TGI2B - (void*) INT_MTU2_MTU2_TGI2B, -// 174 Reserved - (void*) Dummy, -// 175 Reserved - (void*) Dummy, -// 176 MTU2 MTU2 TGI2V - (void*) INT_MTU2_MTU2_TGI2V, -// 177 MTU2 MTU2 TGI2U - (void*) INT_MTU2_MTU2_TGI2U, -// 178 Reserved - (void*) Dummy, -// 179 Reserved - (void*) Dummy, -// 180 MTU2 MTU3 TGI3A - (void*) INT_MTU2_MTU3_TGI3A, -// 181 MTU2 MTU3 TGI3B - (void*) INT_MTU2_MTU3_TGI3B, -// 182 MTU2 MTU3 TGI3C - (void*) INT_MTU2_MTU3_TGI3C, -// 183 MTU2 MTU3 TGI3D - (void*) INT_MTU2_MTU3_TGI3D, -// 184 MTU2 MTU3 TGI3V - (void*) INT_MTU2_MTU3_TGI3V, -// 185 Reserved - (void*) Dummy, -// 186 Reserved - (void*) Dummy, -// 187 Reserved - (void*) Dummy, -// 188 MTU2 MTU4 TGI4A - (void*) INT_MTU2_MTU4_TGI4A, -// 189 MTU2 MTU4 TGI4B - (void*) INT_MTU2_MTU4_TGI4B, -// 190 MTU2 MTU4 TGI4C - (void*) INT_MTU2_MTU4_TGI4C, -// 191 MTU2 MTU4 TGI4D - (void*) INT_MTU2_MTU4_TGI4D, -// 192 MTU2 MTU4 TGI4V - (void*) INT_MTU2_MTU4_TGI4V, -// 193 Reserved - (void*) Dummy, -// 194 Reserved - (void*) Dummy, -// 195 Reserved - (void*) Dummy, -// 196 MTU2 MTU5 TGI5U - (void*) INT_MTU2_MTU5_TGI5U, -// 197 MTU2 MTU5 TGI5V - (void*) INT_MTU2_MTU5_TGI5V, -// 198 MTU2 MTU5 TGI5W - (void*) INT_MTU2_MTU5_TGI5W, -// 199 Reserved - (void*) Dummy, -// 200 POE2 OEI1 - (void*) INT_POE2_OEI1, -// 201 POE2 OEI2 - (void*) INT_POE2_OEI2, -// 202 Reserved - (void*) Dummy, -// 203 Reserved - (void*) Dummy, -// 204 MTU2S MTU3S TGI3A - (void*) INT_MTU2S_MTU3S_TGI3A, -// 205 MTU2S MTU3S TGI3B - (void*) INT_MTU2S_MTU3S_TGI3B, -// 206 MTU2S MTU3S TGI3C - (void*) INT_MTU2S_MTU3S_TGI3C, -// 207 MTU2S MTU3S TGI3D - (void*) INT_MTU2S_MTU3S_TGI3D, -// 208 MTU2S MTU3S TGI3V - (void*) INT_MTU2S_MTU3S_TGI3V, -// 209 Reserved - (void*) Dummy, -// 210 Reserved - (void*) Dummy, -// 211 Reserved - (void*) Dummy, -// 212 MTU2S MTU4S TGI4A - (void*) INT_MTU2S_MTU4S_TGI4A, -// 213 MTU2S MTU4S TGI4B - (void*) INT_MTU2S_MTU4S_TGI4B, -// 214 MTU2S MTU4S TGI4C - (void*) INT_MTU2S_MTU4S_TGI4C, -// 215 MTU2S MTU4S TGI4D - (void*) INT_MTU2S_MTU4S_TGI4D, -// 216 MTU2S MTU4S TGI4V - (void*) INT_MTU2S_MTU4S_TGI4V, -// 217 Reserved - (void*) Dummy, -// 218 Reserved - (void*) Dummy, -// 219 Reserved - (void*) Dummy, -// 220 MTU2S MTU5S TGI5U - (void*) INT_MTU2S_MTU5S_TGI5U, -// 221 MTU2S MTU5S TGI5V - (void*) INT_MTU2S_MTU5S_TGI5V, -// 222 MTU2S MTU5S TGI5W - (void*) INT_MTU2S_MTU5S_TGI5W, -// 223 Reserved - (void*) Dummy, -// 224 POE2 OEI3 - (void*) INT_POE2_OEI3, -// 225 Reserved - (void*) Dummy, -// 226 USB USI0 - (void*) INT_USB_USI0, -// 227 USB USI1 - (void*) INT_USB_USI1, -// 228 IIC3 STPI - (void*) INT_IIC3_STPI, -// 229 IIC3 NAKI - (void*) INT_IIC3_NAKI, -// 230 IIC3 RXI - (void*) INT_IIC3_RXI, -// 231 IIC3 TXI - (void*) INT_IIC3_TXI, -// 232 IIC3 TEI - (void*) INT_IIC3_TEI, -// 233 RSPI SPERI - (void*) INT_RSPI_SPERI, -// 234 RSPI SPRXI - (void*) INT_RSPI_SPRXI, -// 235 RSPI SPTXI - (void*) INT_RSPI_SPTXI, -// 236 SCI SCI4 ERI4 - (void*) INT_SCI_SCI4_ERI4, -// 237 SCI SCI4 RXI4 - (void*) INT_SCI_SCI4_RXI4, -// 238 SCI SCI4 TXI4 - (void*) INT_SCI_SCI4_TXI4, -// 239 SCI SCI4 TEI4 - (void*) INT_SCI_SCI4_TEI4, -// 240 SCI SCI0 ERI0 - (void*) INT_SCI_SCI0_ERI0, -// 241 SCI SCI0 RXI0 - (void*) INT_SCI_SCI0_RXI0, -// 242 SCI SCI0 TXI0 - (void*) INT_SCI_SCI0_TXI0, -// 243 SCI SCI0 TEI0 - (void*) INT_SCI_SCI0_TEI0, -// 244 SCI SCI1 ERI1 - (void*) INT_SCI_SCI1_ERI1, -// 245 SCI SCI1 RXI1 - (void*) INT_SCI_SCI1_RXI1, -// 246 SCI SCI1 TXI1 - (void*) INT_SCI_SCI1_TXI1, -// 247 SCI SCI1 TEI1 - (void*) INT_SCI_SCI1_TEI1, -// 248 SCI SCI2 ERI2 - (void*) INT_SCI_SCI2_ERI2, -// 249 SCI SCI2 RXI2 - (void*) INT_SCI_SCI2_RXI2, -// 250 SCI SCI2 TXI2 - (void*) INT_SCI_SCI2_TXI2, -// 251 SCI SCI2 TEI2 - (void*) INT_SCI_SCI2_TEI2, -// 252 SCIF SCIF3 BRI3 - (void*) INT_SCIF_SCIF3_BRI3, -// 253 SCIF SCIF3 ERI3 - (void*) INT_SCIF_SCIF3_ERI3, -// 254 SCIF SCIF3 RXI3 - (void*) INT_SCIF_SCIF3_RXI3, -// 255 SCIF SCIF3 TXI3 - (void*) INT_SCIF_SCIF3_TXI3, -// xx Reserved - (void*) Dummy -}; - -/* End of File */ diff --git a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/EMAC.c b/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/EMAC.c deleted file mode 100644 index 5d4bba033..000000000 --- a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/EMAC.c +++ /dev/null @@ -1,532 +0,0 @@ -/* - * FreeRTOS V202011.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * http://www.FreeRTOS.org - * http://aws.amazon.com/freertos - * - * 1 tab == 4 spaces! - */ - -/* Hardware specific includes. */ -#include "iodefine.h" -#include "typedefine.h" -#include "hwEthernet.h" -#include "hwEthernetPhy.h" - -/* FreeRTOS includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "semphr.h" - -/* uIP includes. */ -#include "net/uip.h" - -/* The time to wait between attempts to obtain a free buffer. */ -#define emacBUFFER_WAIT_DELAY_ms ( 3 / portTICK_PERIOD_MS ) - -/* The number of times emacBUFFER_WAIT_DELAY_ms should be waited before giving -up on attempting to obtain a free buffer all together. */ -#define emacBUFFER_WAIT_ATTEMPTS ( 30 ) - -/* The number of Rx descriptors. */ -#define emacNUM_RX_DESCRIPTORS 3 - -/* The number of Tx descriptors. When using uIP there is not point in having -more than two. */ -#define emacNUM_TX_BUFFERS 2 - -/* The total number of EMAC buffers to allocate. */ -#define emacNUM_BUFFERS ( emacNUM_RX_DESCRIPTORS + emacNUM_TX_BUFFERS ) - -/* The time to wait for the Tx descriptor to become free. */ -#define emacTX_WAIT_DELAY_ms ( 10 / portTICK_PERIOD_MS ) - -/* The total number of times to wait emacTX_WAIT_DELAY_ms for the Tx descriptor to -become free. */ -#define emacTX_WAIT_ATTEMPTS ( 5 ) - -/* Only Rx end and Tx end interrupts are used by this driver. */ -#define emacTX_END_INTERRUPT ( 1UL << 21UL ) -#define emacRX_END_INTERRUPT ( 1UL << 18UL ) - -/*-----------------------------------------------------------*/ - -/* The buffers and descriptors themselves. */ -#pragma section RX_DESCR - ethfifo xRxDescriptors[ emacNUM_RX_DESCRIPTORS ]; -#pragma section TX_DESCR - ethfifo xTxDescriptors[ emacNUM_TX_BUFFERS ]; -#pragma section _ETHERNET_BUFFERS - char xEthernetBuffers[ emacNUM_BUFFERS ][ UIP_BUFSIZE ]; -#pragma section - -/* Used to indicate which buffers are free and which are in use. If an index -contains 0 then the corresponding buffer in xEthernetBuffers is free, otherwise -the buffer is in use or about to be used. */ -static unsigned char ucBufferInUse[ emacNUM_BUFFERS ]; - -/*-----------------------------------------------------------*/ - -/* - * Initialise both the Rx and Tx descriptors. - */ -static void prvInitialiseDescriptors( void ); - -/* - * Return a pointer to a free buffer within xEthernetBuffers. - */ -static unsigned char *prvGetNextBuffer( void ); - -/* - * Return a buffer to the list of free buffers. - */ -static void prvReturnBuffer( unsigned char *pucBuffer ); - -/* - * Examine the status of the next Rx FIFO to see if it contains new data. - */ -static unsigned long prvCheckRxFifoStatus( void ); - -/* - * Setup the microcontroller for communication with the PHY. - */ -static void prvSetupPortPinsAndReset( void ); - -/* - * Configure the Ethernet interface peripherals. - */ -static void prvConfigureEtherCAndEDMAC( void ); - -/* - * Something has gone wrong with the descriptor usage. Reset all the buffers - * and descriptors. - */ -static void prvResetEverything( void ); - -/*-----------------------------------------------------------*/ - -/* Points to the Rx descriptor currently in use. */ -static ethfifo *xCurrentRxDesc = NULL; - -/* The buffer used by the uIP stack to both receive and send. This points to -one of the Ethernet buffers when its actually in use. */ -unsigned char *uip_buf = NULL; - -/*-----------------------------------------------------------*/ - -void vInitEmac( void ) -{ - /* Setup the SH hardware for MII communications. */ - prvSetupPortPinsAndReset(); - - /* Set the Rx and Tx descriptors into their initial state. */ - prvInitialiseDescriptors(); - - /* Set the MAC address into the ETHERC */ - EtherC.MAHR = ( ( unsigned long ) configMAC_ADDR0 << 24UL ) | - ( ( unsigned long ) configMAC_ADDR1 << 16UL ) | - ( ( unsigned long ) configMAC_ADDR2 << 8UL ) | - ( unsigned long ) configMAC_ADDR3; - - EtherC.MALR.BIT.MA = ( ( unsigned long ) configMAC_ADDR4 << 8UL ) | - ( unsigned long ) configMAC_ADDR5; - - /* Perform rest of interface hardware configuration. */ - prvConfigureEtherCAndEDMAC(); - - /* Nothing received yet, so uip_buf points nowhere. */ - uip_buf = NULL; - - /* Initialize the PHY */ - phyReset(); -} -/*-----------------------------------------------------------*/ - -void vEMACWrite( void ) -{ -long x; - - /* Wait until the second transmission of the last packet has completed. */ - for( x = 0; x < emacTX_WAIT_ATTEMPTS; x++ ) - { - if( ( xTxDescriptors[ 1 ].status & ACT ) != 0 ) - { - /* Descriptor is still active. */ - vTaskDelay( emacTX_WAIT_DELAY_ms ); - } - else - { - break; - } - } - - /* Is the descriptor free after waiting for it? */ - if( ( xTxDescriptors[ 1 ].status & ACT ) != 0 ) - { - /* Something has gone wrong. */ - prvResetEverything(); - } - - /* Setup both descriptors to transmit the frame. */ - xTxDescriptors[ 0 ].buf_p = ( char * ) uip_buf; - xTxDescriptors[ 0 ].bufsize = uip_len; - xTxDescriptors[ 1 ].buf_p = ( char * ) uip_buf; - xTxDescriptors[ 1 ].bufsize = uip_len; - - /* uip_buf is being sent by the Tx descriptor. Allocate a new buffer - for use by the stack. */ - uip_buf = prvGetNextBuffer(); - - /* Clear previous settings and go. */ - xTxDescriptors[0].status &= ~( FP1 | FP0 ); - xTxDescriptors[0].status |= ( FP1 | FP0 | ACT ); - xTxDescriptors[1].status &= ~( FP1 | FP0 ); - xTxDescriptors[1].status |= ( FP1 | FP0 | ACT ); - - EDMAC.EDTRR.LONG = 0x00000001; -} -/*-----------------------------------------------------------*/ - -unsigned long ulEMACRead( void ) -{ -unsigned long ulBytesReceived; - - ulBytesReceived = prvCheckRxFifoStatus(); - - if( ulBytesReceived > 0 ) - { - xCurrentRxDesc->status &= ~( FP1 | FP0 ); - xCurrentRxDesc->status |= ACT; - - if( EDMAC.EDRRR.LONG == 0x00000000L ) - { - /* Restart Ethernet if it has stopped */ - EDMAC.EDRRR.LONG = 0x00000001L; - } - - /* Mark the pxDescriptor buffer as free as uip_buf is going to be set to - the buffer that contains the received data. */ - prvReturnBuffer( uip_buf ); - - uip_buf = ( void * ) xCurrentRxDesc->buf_p; - - /* Move onto the next buffer in the ring. */ - xCurrentRxDesc = xCurrentRxDesc->next; - } - - return ulBytesReceived; -} -/*-----------------------------------------------------------*/ - -long lEMACWaitForLink( void ) -{ -long lReturn; - - /* Set the link status. */ - switch( phyStatus() ) - { - /* Half duplex link */ - case PHY_LINK_100H: - case PHY_LINK_10H: - EtherC.ECMR.BIT.DM = 0; - lReturn = pdPASS; - break; - - /* Full duplex link */ - case PHY_LINK_100F: - case PHY_LINK_10F: - EtherC.ECMR.BIT.DM = 1; - lReturn = pdPASS; - break; - - default: - lReturn = pdFAIL; - break; - } - - if( lReturn == pdPASS ) - { - /* Enable receive and transmit. */ - EtherC.ECMR.BIT.RE = 1; - EtherC.ECMR.BIT.TE = 1; - - /* Enable EDMAC receive */ - EDMAC.EDRRR.LONG = 0x1; - } - - return lReturn; -} -/*-----------------------------------------------------------*/ - -static void prvInitialiseDescriptors( void ) -{ -ethfifo *pxDescriptor; -long x; - - for( x = 0; x < emacNUM_BUFFERS; x++ ) - { - /* Ensure none of the buffers are shown as in use at the start. */ - ucBufferInUse[ x ] = pdFALSE; - } - - /* Initialise the Rx descriptors. */ - for( x = 0; x < emacNUM_RX_DESCRIPTORS; x++ ) - { - pxDescriptor = &( xRxDescriptors[ x ] ); - pxDescriptor->buf_p = &( xEthernetBuffers[ x ][ 0 ] ); - - pxDescriptor->bufsize = UIP_BUFSIZE; - pxDescriptor->size = 0; - pxDescriptor->status = ACT; - pxDescriptor->next = &xRxDescriptors[ x + 1 ]; - - /* Mark this buffer as in use. */ - ucBufferInUse[ x ] = pdTRUE; - } - - /* The last descriptor points back to the start. */ - pxDescriptor->status |= DL; - pxDescriptor->next = &xRxDescriptors[ 0 ]; - - /* Initialise the Tx descriptors. */ - for( x = 0; x < emacNUM_TX_BUFFERS; x++ ) - { - pxDescriptor = &( xTxDescriptors[ x ] ); - - /* A buffer is not allocated to the Tx descriptor until a send is - actually required. */ - pxDescriptor->buf_p = NULL; - - pxDescriptor->bufsize = UIP_BUFSIZE; - pxDescriptor->size = 0; - pxDescriptor->status = 0; - pxDescriptor->next = &xTxDescriptors[ x + 1 ]; - } - - /* The last descriptor points back to the start. */ - pxDescriptor->status |= DL; - pxDescriptor->next = &( xTxDescriptors[ 0 ] ); - - /* Use the first Rx descriptor to start with. */ - xCurrentRxDesc = &( xRxDescriptors[ 0 ] ); -} -/*-----------------------------------------------------------*/ - -static unsigned char *prvGetNextBuffer( void ) -{ -long x; -unsigned char *pucReturn = NULL; -unsigned long ulAttempts = 0; - - while( pucReturn == NULL ) - { - /* Look through the buffers to find one that is not in use by - anything else. */ - for( x = 0; x < emacNUM_BUFFERS; x++ ) - { - if( ucBufferInUse[ x ] == pdFALSE ) - { - ucBufferInUse[ x ] = pdTRUE; - pucReturn = ( unsigned char * ) &( xEthernetBuffers[ x ][ 0 ] ); - break; - } - } - - /* Was a buffer found? */ - if( pucReturn == NULL ) - { - ulAttempts++; - - if( ulAttempts >= emacBUFFER_WAIT_ATTEMPTS ) - { - break; - } - - /* Wait then look again. */ - vTaskDelay( emacBUFFER_WAIT_DELAY_ms ); - } - } - - return pucReturn; -} -/*-----------------------------------------------------------*/ - -static void prvReturnBuffer( unsigned char *pucBuffer ) -{ -unsigned long ul; - - /* Return a buffer to the pool of free buffers. */ - for( ul = 0; ul < emacNUM_BUFFERS; ul++ ) - { - if( &( xEthernetBuffers[ ul ][ 0 ] ) == ( void * ) pucBuffer ) - { - ucBufferInUse[ ul ] = pdFALSE; - break; - } - } -} -/*-----------------------------------------------------------*/ - -static void prvResetEverything( void ) -{ - /* Temporary code just to see if this gets called. This function has not - been implemented. */ - portDISABLE_INTERRUPTS(); - for( ;; ); -} -/*-----------------------------------------------------------*/ - -static unsigned long prvCheckRxFifoStatus( void ) -{ -unsigned long ulReturn = 0; - - if( ( xCurrentRxDesc->status & ACT ) != 0 ) - { - /* Current descriptor is still active. */ - } - else if( ( xCurrentRxDesc->status & FE ) != 0 ) - { - /* Frame error. Clear the error. */ - xCurrentRxDesc->status &= ~( FP1 | FP0 | FE ); - xCurrentRxDesc->status &= ~( RMAF | RRF | RTLF | RTSF | PRE | CERF ); - xCurrentRxDesc->status |= ACT; - xCurrentRxDesc = xCurrentRxDesc->next; - - if( EDMAC.EDRRR.LONG == 0x00000000UL ) - { - /* Restart Ethernet if it has stopped. */ - EDMAC.EDRRR.LONG = 0x00000001UL; - } - } - else - { - /* The descriptor contains a frame. Because of the size of the buffers - the frame should always be complete. */ - if( (xCurrentRxDesc->status & FP0) == FP0 ) - { - ulReturn = xCurrentRxDesc->size; - } - else - { - /* Do not expect to get here. */ - prvResetEverything(); - } - } - - return ulReturn; -} -/*-----------------------------------------------------------*/ - -static void prvSetupPortPinsAndReset( void ) -{ - /* Initialisation code taken from Renesas example project. */ - - PFC.PACRL4.BIT.PA12MD = 0x7; /* Set TX_CLK input (EtherC) */ - PFC.PACRL3.BIT.PA11MD = 0x7; /* Set TX_EN output (EtherC) */ - PFC.PACRL3.BIT.PA10MD = 0x7; /* Set MII_TXD0 output (EtherC) */ - PFC.PACRL3.BIT.PA9MD = 0x7; /* Set MII_TXD1 output (EtherC) */ - PFC.PACRL3.BIT.PA8MD = 0x7; /* Set MII_TXD2 output (EtherC) */ - PFC.PACRL2.BIT.PA7MD = 0x7; /* Set MII_TXD3 output (EtherC) */ - PFC.PACRL2.BIT.PA6MD = 0x7; /* Set TX_ER output (EtherC) */ - PFC.PDCRH4.BIT.PD31MD = 0x7; /* Set RX_DV input (EtherC) */ - PFC.PDCRH4.BIT.PD30MD = 0x7; /* Set RX_ER input (EtherC) */ - PFC.PDCRH4.BIT.PD29MD = 0x7; /* Set MII_RXD3 input (EtherC) */ - PFC.PDCRH4.BIT.PD28MD = 0x7; /* Set MII_RXD2 input (EtherC) */ - PFC.PDCRH3.BIT.PD27MD = 0x7; /* Set MII_RXD1 input (EtherC) */ - PFC.PDCRH3.BIT.PD26MD = 0x7; /* Set MII_RXD0 input (EtherC) */ - PFC.PDCRH3.BIT.PD25MD = 0x7; /* Set RX_CLK input (EtherC) */ - PFC.PDCRH3.BIT.PD24MD = 0x7; /* Set CRS input (EtherC) */ - PFC.PDCRH2.BIT.PD23MD = 0x7; /* Set COL input (EtherC) */ - PFC.PDCRH2.BIT.PD22MD = 0x7; /* Set WOL output (EtherC) */ - PFC.PDCRH2.BIT.PD21MD = 0x7; /* Set EXOUT output (EtherC) */ - PFC.PDCRH2.BIT.PD20MD = 0x7; /* Set MDC output (EtherC) */ - PFC.PDCRH1.BIT.PD19MD = 0x7; /* Set LINKSTA input (EtherC) */ - PFC.PDCRH1.BIT.PD18MD = 0x7; /* Set MDIO input/output (EtherC) */ - - STB.CR4.BIT._ETHER = 0x0; - EDMAC.EDMR.BIT.SWR = 1; - - /* Crude wait for reset to complete. */ - vTaskDelay( 500 / portTICK_PERIOD_MS ); -} -/*-----------------------------------------------------------*/ - -static void prvConfigureEtherCAndEDMAC( void ) -{ - /* Initialisation code taken from Renesas example project. */ - - /* TODO: Check bit 5 */ - EtherC.ECSR.LONG = 0x00000037; /* Clear all EtherC statuS BFR, PSRTO, LCHNG, MPD, ICD */ - - /* TODO: Check bit 5 */ - EtherC.ECSIPR.LONG = 0x00000020; /* Disable EtherC status change interrupt */ - EtherC.RFLR.LONG = 1518; /* Ether payload is 1500+ CRC */ - EtherC.IPGR.LONG = 0x00000014; /* Intergap is 96-bit time */ - - /* EDMAC */ - EDMAC.EESR.LONG = 0x47FF0F9F; /* Clear all EtherC and EDMAC status bits */ - EDMAC.RDLAR = ( void * ) xCurrentRxDesc; /* Initialaize Rx Descriptor List Address */ - EDMAC.TDLAR = &( xTxDescriptors[ 0 ] ); /* Initialaize Tx Descriptor List Address */ - EDMAC.TRSCER.LONG = 0x00000000; /* Copy-back status is RFE & TFE only */ - EDMAC.TFTR.LONG = 0x00000000; /* Threshold of Tx_FIFO */ - EDMAC.FDR.LONG = 0x00000000; /* Transmit fifo & receive fifo is 256 bytes */ - EDMAC.RMCR.LONG = 0x00000003; /* Receive function is normal mode(continued) */ - - /* Set the EDMAC interrupt priority - the interrupt priority must be - configKERNEL_INTERRUPT_PRIORITY no matter which peripheral is used to - generate the tick interrupt. */ - INTC.IPR19.BIT._EDMAC = portKERNEL_INTERRUPT_PRIORITY; - EDMAC.EESIPR.LONG = emacTX_END_INTERRUPT | emacRX_END_INTERRUPT; /* Enable Rx and Tx end interrupts. */ - - /* Clear the interrupt flag. */ - CMT0.CMCSR.BIT.CMF = 0; -} -/*-----------------------------------------------------------*/ - -void vEMAC_ISR_Handler( void ) -{ -unsigned long ul = EDMAC.EESR.LONG; -long lHigherPriorityTaskWoken = pdFALSE; -extern SemaphoreHandle_t xEMACSemaphore; -static long ulTxEndInts = 0; - - /* Has a Tx end occurred? */ - if( ul & emacTX_END_INTERRUPT ) - { - ++ulTxEndInts; - if( ulTxEndInts >= 2 ) - { - /* Only return the buffer to the pool once both Txes have completed. */ - prvReturnBuffer( ( void * ) xTxDescriptors[ 0 ].buf_p ); - ulTxEndInts = 0; - } - EDMAC.EESR.LONG = emacTX_END_INTERRUPT; - } - - /* Has an Rx end occurred? */ - if( ul & emacRX_END_INTERRUPT ) - { - /* Make sure the Ethernet task is not blocked waiting for a packet. */ - xSemaphoreGiveFromISR( xEMACSemaphore, &lHigherPriorityTaskWoken ); - portYIELD_FROM_ISR( lHigherPriorityTaskWoken ); - EDMAC.EESR.LONG = emacRX_END_INTERRUPT; - } -} diff --git a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/EMAC_ISR.src b/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/EMAC_ISR.src deleted file mode 100644 index 8bf031975..000000000 --- a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/EMAC_ISR.src +++ /dev/null @@ -1,53 +0,0 @@ -;/* -; * FreeRTOS V202011.00 -; * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. -; * -; * Permission is hereby granted, free of charge, to any person obtaining a copy of -; * this software and associated documentation files (the "Software"), to deal in -; * the Software without restriction, including without limitation the rights to -; * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -; * the Software, and to permit persons to whom the Software is furnished to do so, -; * subject to the following conditions: -; * -; * The above copyright notice and this permission notice shall be included in all -; * copies or substantial portions of the Software. -; * -; * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -; * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -; * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -; * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -; * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -; * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -; * -; * http://www.FreeRTOS.org -; * http://aws.amazon.com/freertos -; * -; * 1 tab == 4 spaces! -; */ - - .import _vEMAC_ISR_Handler - .import _pxCurrentTCB - .export _vEMAC_ISR_Wrapper - - .INCLUDE "ISR_Support.inc" - - .section P - -;----------------------------------------------------------- - -_vEMAC_ISR_Wrapper: - - portSAVE_CONTEXT - - mov.l #_vEMAC_ISR_Handler, r0 - jsr @r0 - nop - - portRESTORE_CONTEXT - -;----------------------------------------------------------- - - - - .end - diff --git a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/httpd-cgi.c b/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/httpd-cgi.c deleted file mode 100644 index 6c2ae8161..000000000 --- a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/httpd-cgi.c +++ /dev/null @@ -1,254 +0,0 @@ -/** - * \addtogroup httpd - * @{ - */ - -/** - * \file - * Web server script interface - * \author - * Adam Dunkels - * - */ - -/* - * Copyright (c) 2001-2006, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack. - * - * $Id: httpd-cgi.c,v 1.2 2006/06/11 21:46:37 adam Exp $ - * - */ -#include "net/uip.h" -#include "net/psock.h" -#include "apps/httpd/httpd.h" -#include "apps/httpd/httpd-cgi.h" -#include "apps/httpd/httpd-fs.h" - -#include -#include - -#include "FreeRTOS.h" -#include "task.h" - -HTTPD_CGI_CALL( file, "file-stats", file_stats ); -HTTPD_CGI_CALL( tcp, "tcp-connections", tcp_stats ); -HTTPD_CGI_CALL( net, "net-stats", net_stats ); -HTTPD_CGI_CALL( rtos, "rtos-stats", rtos_stats ); -HTTPD_CGI_CALL( run, "run-time", run_time ); -HTTPD_CGI_CALL( io, "led-io", led_io ); - -static const struct httpd_cgi_call *calls[] = { &file, &tcp, &net, &rtos, &run, &io, NULL }; - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( nullfunction ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -httpd_cgifunction httpd_cgi( char *name ) -{ - const struct httpd_cgi_call **f; - - /* Find the matching name in the table, return the function. */ - for( f = calls; *f != NULL; ++f ) - { - if( strncmp((*f)->name, name, strlen((*f)->name)) == 0 ) - { - return( *f )->function; - } - } - - return nullfunction; -} - -/*---------------------------------------------------------------------------*/ -static unsigned short generate_file_stats( void *arg ) -{ - char *f = ( char * ) arg; - return sprintf( ( char * ) uip_appdata, "%5u", httpd_fs_count(f) ); -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( file_stats ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - - PSOCK_GENERATOR_SEND( &s->sout, generate_file_stats, strchr(ptr, ' ') + 1 ); - - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -static const char closed[] = /* "CLOSED",*/ { 0x43, 0x4c, 0x4f, 0x53, 0x45, 0x44, 0 }; -static const char syn_rcvd[] = /* "SYN-RCVD",*/ { 0x53, 0x59, 0x4e, 0x2d, 0x52, 0x43, 0x56, 0x44, 0 }; -static const char syn_sent[] = /* "SYN-SENT",*/ { 0x53, 0x59, 0x4e, 0x2d, 0x53, 0x45, 0x4e, 0x54, 0 }; -static const char established[] = /* "ESTABLISHED",*/ { 0x45, 0x53, 0x54, 0x41, 0x42, 0x4c, 0x49, 0x53, 0x48, 0x45, 0x44, 0 }; -static const char fin_wait_1[] = /* "FIN-WAIT-1",*/ { 0x46, 0x49, 0x4e, 0x2d, 0x57, 0x41, 0x49, 0x54, 0x2d, 0x31, 0 }; -static const char fin_wait_2[] = /* "FIN-WAIT-2",*/ { 0x46, 0x49, 0x4e, 0x2d, 0x57, 0x41, 0x49, 0x54, 0x2d, 0x32, 0 }; -static const char closing[] = /* "CLOSING",*/ { 0x43, 0x4c, 0x4f, 0x53, 0x49, 0x4e, 0x47, 0 }; -static const char time_wait[] = /* "TIME-WAIT,"*/ { 0x54, 0x49, 0x4d, 0x45, 0x2d, 0x57, 0x41, 0x49, 0x54, 0 }; -static const char last_ack[] = /* "LAST-ACK"*/ { 0x4c, 0x41, 0x53, 0x54, 0x2d, 0x41, 0x43, 0x4b, 0 }; - -static const char *states[] = { closed, syn_rcvd, syn_sent, established, fin_wait_1, fin_wait_2, closing, time_wait, last_ack }; - -static unsigned short generate_tcp_stats( void *arg ) -{ - struct uip_conn *conn; - struct httpd_state *s = ( struct httpd_state * ) arg; - - conn = &uip_conns[s->count]; - return sprintf( ( char * ) uip_appdata, - "\r\n", htons(conn->lport), - htons(conn->ripaddr.u16[0]) >> 8, htons(conn->ripaddr.u16[0]) & 0xff, htons(conn->ripaddr.u16[1]) >> 8, - htons(conn->ripaddr.u16[1]) & 0xff, htons(conn->rport), states[conn->tcpstateflags & UIP_TS_MASK], conn->nrtx, conn->timer, - (uip_outstanding(conn)) ? '*' : ' ', (uip_stopped(conn)) ? '!' : ' ' ); -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( tcp_stats ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - for( s->count = 0; s->count < UIP_CONNS; ++s->count ) - { - if( (uip_conns[s->count].tcpstateflags & UIP_TS_MASK) != UIP_CLOSED ) - { - PSOCK_GENERATOR_SEND( &s->sout, generate_tcp_stats, s ); - } - } - - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -static unsigned short generate_net_stats( void *arg ) -{ - struct httpd_state *s = ( struct httpd_state * ) arg; - return sprintf( ( char * ) uip_appdata, "%5u\n", (( uip_stats_t * ) &uip_stat)[s->count] ); -} - -static PT_THREAD( net_stats ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; -#if UIP_STATISTICS - for( s->count = 0; s->count < sizeof(uip_stat) / sizeof(uip_stats_t); ++s->count ) - { - PSOCK_GENERATOR_SEND( &s->sout, generate_net_stats, s ); - } - -#endif /* UIP_STATISTICS */ - - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -extern void vTaskList( char *pcWriteBuffer ); -extern char *pcGetTaskStatusMessage( void ); -static char cCountBuf[128]; -long lRefreshCount = 0; -static unsigned short generate_rtos_stats( void *arg ) -{ - ( void ) arg; - lRefreshCount++; - sprintf( cCountBuf, "


Refresh count = %d


%s", ( int ) lRefreshCount, pcGetTaskStatusMessage() ); - vTaskList( ( char * ) uip_appdata ); - strcat( uip_appdata, cCountBuf ); - - return strlen( uip_appdata ); -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( rtos_stats ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - PSOCK_GENERATOR_SEND( &s->sout, generate_rtos_stats, NULL ); - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -char *pcStatus; -unsigned long ulString; - -static unsigned short generate_io_state( void *arg ) -{ - extern long lParTestGetLEDState( void ); - ( void ) arg; - - /* Get the state of the LEDs that are on the FIO1 port. */ - if( lParTestGetLEDState() ) - { - pcStatus = ""; - } - else - { - pcStatus = "checked"; - } - - sprintf( uip_appdata, "LED

", pcStatus ); - - return strlen( uip_appdata ); -} - -/*---------------------------------------------------------------------------*/ -extern void vTaskGetRunTimeStats( char *pcWriteBuffer ); -static unsigned short generate_runtime_stats( void *arg ) -{ - ( void ) arg; - lRefreshCount++; - sprintf( cCountBuf, "


Refresh count = %d", ( int ) lRefreshCount ); - vTaskGetRunTimeStats( ( char * ) uip_appdata ); - strcat( uip_appdata, cCountBuf ); - - return strlen( uip_appdata ); -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( run_time ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - PSOCK_GENERATOR_SEND( &s->sout, generate_runtime_stats, NULL ); - PSOCK_END( &s->sout ); -} - -/*---------------------------------------------------------------------------*/ -static PT_THREAD( led_io ( struct httpd_state *s, char *ptr ) ) -{ - PSOCK_BEGIN( &s->sout ); - ( void ) ptr; - PSOCK_GENERATOR_SEND( &s->sout, generate_io_state, NULL ); - PSOCK_END( &s->sout ); -} - -/** @} */ diff --git a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/httpd-fs/404.html b/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/httpd-fs/404.html deleted file mode 100644 index 43e7f4cad..000000000 --- a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/httpd-fs/404.html +++ /dev/null @@ -1,8 +0,0 @@ - - -

-

404 - file not found

-

Go here instead.

-
- - \ No newline at end of file diff --git a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/httpd-fs/index.html b/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/httpd-fs/index.html deleted file mode 100644 index 4937dc69a..000000000 --- a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/httpd-fs/index.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Loading index.shtml. Click here if not automatically redirected. - - - - - diff --git a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/httpd-fs/index.shtml b/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/httpd-fs/index.shtml deleted file mode 100644 index 882d085ce..000000000 --- a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/httpd-fs/index.shtml +++ /dev/null @@ -1,20 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS Homepage | IO | 37K jpg -

-


-

-

Task statistics

-Page will refresh every 2 seconds.

-

Task          State  Priority  Stack	#
************************************************
-%! rtos-stats -
-
- - - diff --git a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/httpd-fs/io.shtml b/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/httpd-fs/io.shtml deleted file mode 100644 index 819e2d39b..000000000 --- a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/httpd-fs/io.shtml +++ /dev/null @@ -1,28 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS Homepage | IO | 37K jpg -

-


-LED and LCD IO
- -

- -Use the check box to turn on or off LED 4, then click "Update IO". - - -

-
-%! led-io -

- - -

- - - - diff --git a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/httpd-fs/runtime.shtml b/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/httpd-fs/runtime.shtml deleted file mode 100644 index 3464fd471..000000000 --- a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/httpd-fs/runtime.shtml +++ /dev/null @@ -1,20 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS Homepage | IO | 37K jpg -

-


-

-

Run-time statistics

-Page will refresh every 2 seconds.

-

Task            Abs Time      % Time
****************************************
-%! run-time -
-
- - - diff --git a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/httpd-fs/stats.shtml b/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/httpd-fs/stats.shtml deleted file mode 100644 index f54118606..000000000 --- a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/httpd-fs/stats.shtml +++ /dev/null @@ -1,47 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS Homepage | IO | 37K jpg -

-


-

-

Network statistics

-
LocalRemoteStateRetransmissionsTimerFlags
%d%u.%u.%u.%u:%u%s%u%u%c %c
-
-IP           Packets received
-             Packets sent
-             Forwaded
-             Dropped
-IP errors    IP version/header length
-             IP length, high byte
-             IP length, low byte
-             IP fragments
-             Header checksum
-             Wrong protocol
-ICMP	     Packets received
-             Packets sent
-             Packets dropped
-             Type errors
-             Checksum errors
-TCP          Packets received
-             Packets sent
-             Packets dropped
-             Checksum errors
-             Data packets without ACKs
-             Resets
-             Retransmissionsa
-             Syn to closed port
-UDP          Packets dropped
-             Packets received
-             Packets sent
-             Packets chkerr
-	     No connection avaliable
-
%! net-stats
-
- - - diff --git a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/httpd-fs/tcp.shtml b/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/httpd-fs/tcp.shtml deleted file mode 100644 index 23dcdcae3..000000000 --- a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/httpd-fs/tcp.shtml +++ /dev/null @@ -1,21 +0,0 @@ - - - - FreeRTOS.org uIP WEB server demo - - - -Task Stats | Run Time Stats | TCP Stats | Connections | FreeRTOS Homepage | IO | 37K jpg -

-


-
-

Network connections

-

- - -%! tcp-connections - - - - - diff --git a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/httpd-fsdata.c b/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/httpd-fsdata.c deleted file mode 100644 index 5bee12c84..000000000 --- a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/httpd-fsdata.c +++ /dev/null @@ -1,4376 +0,0 @@ -static const char data_404_html[] = { -/* /404.html */ -0x2f, 0x34, 0x30, 0x34, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x00, -0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0x0d, 0x0a, 0x20, 0x20, -0x3c, 0x62, 0x6f, 0x64, 0x79, 0x20, 0x62, 0x67, 0x63, 0x6f, -0x6c, 0x6f, 0x72, 0x3d, 0x22, 0x77, 0x68, 0x69, 0x74, 0x65, -0x22, 0x3e, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x63, -0x65, 0x6e, 0x74, 0x65, 0x72, 0x3e, 0x0d, 0x0a, 0x20, 0x20, -0x20, 0x20, 0x20, 0x20, 0x3c, 0x68, 0x31, 0x3e, 0x34, 0x30, -0x34, 0x20, 0x2d, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x6e, -0x6f, 0x74, 0x20, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x3c, 0x2f, -0x68, 0x31, 0x3e, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, -0x20, 0x3c, 0x68, 0x33, 0x3e, 0x47, 0x6f, 0x20, 0x3c, 0x61, -0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x2f, 0x22, 0x3e, -0x68, 0x65, 0x72, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x69, -0x6e, 0x73, 0x74, 0x65, 0x61, 0x64, 0x2e, 0x3c, 0x2f, 0x68, -0x33, 0x3e, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x2f, -0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x3e, 0x0d, 0x0a, 0x20, -0x20, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0x0d, 0x0a, -0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, }; - -static const char data_index_html[] = { -/* /index.html */ -0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x00, -0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, -0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, -0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, -0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, -0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, -0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, -0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, -0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, -0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, -0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, -0x22, 0x3e, 0x0d, 0x0a, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, -0x0d, 0x0a, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, -0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, -0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, -0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, -0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, -0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, -0x6c, 0x65, 0x3e, 0x0d, 0x0a, 0x20, 0x20, 0x3c, 0x2f, 0x68, -0x65, 0x61, 0x64, 0x3e, 0x0d, 0x0a, 0x20, 0x20, 0x3c, 0x42, -0x4f, 0x44, 0x59, 0x20, 0x6f, 0x6e, 0x4c, 0x6f, 0x61, 0x64, -0x3d, 0x22, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x73, -0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x28, -0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x6c, 0x6f, 0x63, 0x61, -0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x68, 0x72, 0x65, 0x66, 0x3d, -0x27, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, -0x6d, 0x6c, 0x27, 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x2c, -0x31, 0x30, 0x30, 0x29, 0x22, 0x3e, 0x0d, 0x0a, 0x3c, 0x66, -0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, -0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x3e, 0x0d, 0x0a, 0x4c, -0x6f, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x69, 0x6e, 0x64, -0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x2e, 0x20, -0x20, 0x43, 0x6c, 0x69, 0x63, 0x6b, 0x20, 0x3c, 0x61, 0x20, -0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, -0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x68, -0x65, 0x72, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x69, 0x66, -0x20, 0x6e, 0x6f, 0x74, 0x20, 0x61, 0x75, 0x74, 0x6f, 0x6d, -0x61, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x6c, 0x79, 0x20, 0x72, -0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x65, 0x64, 0x2e, -0x0d, 0x0a, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0x0d, -0x0a, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0x0d, 0x0a, -0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0x0d, 0x0a, 0x3c, -0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0x0d, 0x0a, 0x0d, 0x0a, -}; - -static const char data_index_shtml[] = { -/* /index.shtml */ -0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x00, -0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, -0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, -0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, -0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, -0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, -0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, -0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, -0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, -0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, -0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, -0x22, 0x3e, 0x0d, 0x0a, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, -0x0d, 0x0a, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, -0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, -0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, -0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, -0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, -0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, -0x6c, 0x65, 0x3e, 0x0d, 0x0a, 0x20, 0x20, 0x3c, 0x2f, 0x68, -0x65, 0x61, 0x64, 0x3e, 0x0d, 0x0a, 0x20, 0x20, 0x3c, 0x42, -0x4f, 0x44, 0x59, 0x20, 0x6f, 0x6e, 0x4c, 0x6f, 0x61, 0x64, -0x3d, 0x22, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x73, -0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x28, -0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x6c, 0x6f, 0x63, 0x61, -0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x68, 0x72, 0x65, 0x66, 0x3d, -0x27, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, -0x6d, 0x6c, 0x27, 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x2c, -0x32, 0x30, 0x30, 0x30, 0x29, 0x22, 0x3e, 0x0d, 0x0a, 0x3c, -0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, -0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x3e, 0x0d, 0x0a, -0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, -0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, -0x22, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x53, 0x74, 0x61, -0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, -0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, -0x72, 0x65, 0x66, 0x3d, 0x22, 0x72, 0x75, 0x6e, 0x74, 0x69, -0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, -0x52, 0x75, 0x6e, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, -0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, -0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, -0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, -0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, -0x54, 0x43, 0x50, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, -0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, -0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, -0x3d, 0x22, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, -0x6c, 0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, -0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, -0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, -0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, -0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, -0x65, 0x65, 0x72, 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, -0x2f, 0x22, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, -0x53, 0x20, 0x48, 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, -0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, -0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, -0x66, 0x3d, 0x22, 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, -0x6c, 0x22, 0x3e, 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0x20, -0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, -0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x6c, 0x6f, -0x67, 0x6f, 0x2e, 0x6a, 0x70, 0x67, 0x22, 0x3e, 0x33, 0x37, -0x4b, 0x20, 0x6a, 0x70, 0x67, 0x3c, 0x2f, 0x61, 0x3e, 0x0d, -0x0a, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0x0d, 0x0a, -0x3c, 0x68, 0x72, 0x3e, 0x0d, 0x0a, 0x3c, 0x62, 0x72, 0x3e, -0x3c, 0x70, 0x3e, 0x0d, 0x0a, 0x3c, 0x68, 0x32, 0x3e, 0x54, -0x61, 0x73, 0x6b, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, -0x74, 0x69, 0x63, 0x73, 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0x0d, -0x0a, 0x50, 0x61, 0x67, 0x65, 0x20, 0x77, 0x69, 0x6c, 0x6c, -0x20, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x20, 0x65, -0x76, 0x65, 0x72, 0x79, 0x20, 0x32, 0x20, 0x73, 0x65, 0x63, -0x6f, 0x6e, 0x64, 0x73, 0x2e, 0x3c, 0x70, 0x3e, 0x0d, 0x0a, -0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, -0x3d, 0x22, 0x63, 0x6f, 0x75, 0x72, 0x69, 0x65, 0x72, 0x22, -0x3e, 0x3c, 0x70, 0x72, 0x65, 0x3e, 0x54, 0x61, 0x73, 0x6b, -0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, -0x53, 0x74, 0x61, 0x74, 0x65, 0x20, 0x20, 0x50, 0x72, 0x69, -0x6f, 0x72, 0x69, 0x74, 0x79, 0x20, 0x20, 0x53, 0x74, 0x61, -0x63, 0x6b, 0x09, 0x23, 0x3c, 0x62, 0x72, 0x3e, 0x2a, 0x2a, -0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, -0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, -0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, -0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, -0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x3c, 0x62, 0x72, 0x3e, -0x0d, 0x0a, 0x25, 0x21, 0x20, 0x72, 0x74, 0x6f, 0x73, 0x2d, -0x73, 0x74, 0x61, 0x74, 0x73, 0x0d, 0x0a, 0x3c, 0x2f, 0x70, -0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, -0x0d, 0x0a, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0x0d, -0x0a, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0x0d, 0x0a, -0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0x0d, 0x0a, 0x0d, -0x0a, }; - -static const char data_io_shtml[] = { -/* /io.shtml */ -0x2f, 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x00, -0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, -0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, -0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, -0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, -0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, -0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, -0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, -0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, -0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, -0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, -0x22, 0x3e, 0x0d, 0x0a, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, -0x0d, 0x0a, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, -0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, -0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, -0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, -0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, -0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, -0x6c, 0x65, 0x3e, 0x0d, 0x0a, 0x20, 0x20, 0x3c, 0x2f, 0x68, -0x65, 0x61, 0x64, 0x3e, 0x0d, 0x0a, 0x20, 0x20, 0x3c, 0x42, -0x4f, 0x44, 0x59, 0x3e, 0x0d, 0x0a, 0x3c, 0x66, 0x6f, 0x6e, -0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, -0x69, 0x61, 0x6c, 0x22, 0x3e, 0x0d, 0x0a, 0x3c, 0x61, 0x20, -0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, -0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, -0x61, 0x73, 0x6b, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, -0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, -0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, -0x3d, 0x22, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, -0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x52, 0x75, 0x6e, -0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, 0x74, 0x61, 0x74, -0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, -0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, -0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, -0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x43, 0x50, -0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, -0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, -0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, -0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, -0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, -0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, -0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, -0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, -0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, 0x65, 0x65, 0x72, -0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x22, 0x3e, -0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x20, 0x48, -0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, -0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, -0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, -0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, -0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, -0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, -0x72, 0x65, 0x66, 0x3d, 0x22, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, -0x6a, 0x70, 0x67, 0x22, 0x3e, 0x33, 0x37, 0x4b, 0x20, 0x6a, -0x70, 0x67, 0x3c, 0x2f, 0x61, 0x3e, 0x0d, 0x0a, 0x3c, 0x62, -0x72, 0x3e, 0x3c, 0x70, 0x3e, 0x0d, 0x0a, 0x3c, 0x68, 0x72, -0x3e, 0x0d, 0x0a, 0x3c, 0x62, 0x3e, 0x4c, 0x45, 0x44, 0x20, -0x61, 0x6e, 0x64, 0x20, 0x4c, 0x43, 0x44, 0x20, 0x49, 0x4f, -0x3c, 0x2f, 0x62, 0x3e, 0x3c, 0x62, 0x72, 0x3e, 0x0d, 0x0a, -0x0d, 0x0a, 0x3c, 0x70, 0x3e, 0x0d, 0x0a, 0x0d, 0x0a, 0x55, -0x73, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x68, 0x65, -0x63, 0x6b, 0x20, 0x62, 0x6f, 0x78, 0x20, 0x74, 0x6f, 0x20, -0x74, 0x75, 0x72, 0x6e, 0x20, 0x6f, 0x6e, 0x20, 0x6f, 0x72, -0x20, 0x6f, 0x66, 0x66, 0x20, 0x4c, 0x45, 0x44, 0x20, 0x34, -0x2c, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x20, 0x63, 0x6c, 0x69, -0x63, 0x6b, 0x20, 0x22, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, -0x20, 0x49, 0x4f, 0x22, 0x2e, 0x0d, 0x0a, 0x0d, 0x0a, 0x0d, -0x0a, 0x3c, 0x70, 0x3e, 0x0d, 0x0a, 0x3c, 0x66, 0x6f, 0x72, -0x6d, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x22, 0x61, 0x46, -0x6f, 0x72, 0x6d, 0x22, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, -0x6e, 0x3d, 0x22, 0x2f, 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, -0x6d, 0x6c, 0x22, 0x20, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, -0x3d, 0x22, 0x67, 0x65, 0x74, 0x22, 0x3e, 0x0d, 0x0a, 0x25, -0x21, 0x20, 0x6c, 0x65, 0x64, 0x2d, 0x69, 0x6f, 0x0d, 0x0a, -0x3c, 0x70, 0x3e, 0x0d, 0x0a, 0x3c, 0x69, 0x6e, 0x70, 0x75, -0x74, 0x20, 0x74, 0x79, 0x70, 0x65, 0x3d, 0x22, 0x73, 0x75, -0x62, 0x6d, 0x69, 0x74, 0x22, 0x20, 0x76, 0x61, 0x6c, 0x75, -0x65, 0x3d, 0x22, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, -0x49, 0x4f, 0x22, 0x3e, 0x0d, 0x0a, 0x3c, 0x2f, 0x66, 0x6f, -0x72, 0x6d, 0x3e, 0x0d, 0x0a, 0x3c, 0x62, 0x72, 0x3e, 0x3c, -0x70, 0x3e, 0x0d, 0x0a, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, -0x3e, 0x0d, 0x0a, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, -0x0d, 0x0a, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0x0d, -0x0a, 0x0d, 0x0a, }; - -static const char data_logo_jpg[] = { -/* /logo.jpg */ -0x2f, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, 0x6a, 0x70, 0x67, 0x00, -0xff, 0xd8, 0xff, 0xe0, 0x00, 0x10, 0x4a, 0x46, 0x49, 0x46, -0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, -0xff, 0xdb, 0x00, 0x43, 0x00, 0x03, 0x02, 0x02, 0x03, 0x02, -0x02, 0x03, 0x03, 0x03, 0x03, 0x04, 0x03, 0x03, 0x04, 0x05, -0x08, 0x05, 0x05, 0x04, 0x04, 0x05, 0x0a, 0x07, 0x07, 0x06, -0x08, 0x0c, 0x0a, 0x0c, 0x0c, 0x0b, 0x0a, 0x0b, 0x0b, 0x0d, -0x0e, 0x12, 0x10, 0x0d, 0x0e, 0x11, 0x0e, 0x0b, 0x0b, 0x10, -0x16, 0x10, 0x11, 0x13, 0x14, 0x15, 0x15, 0x15, 0x0c, 0x0f, -0x17, 0x18, 0x16, 0x14, 0x18, 0x12, 0x14, 0x15, 0x14, 0xff, -0xdb, 0x00, 0x43, 0x01, 0x03, 0x04, 0x04, 0x05, 0x04, 0x05, -0x09, 0x05, 0x05, 0x09, 0x14, 0x0d, 0x0b, 0x0d, 0x14, 0x14, -0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, -0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, -0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, -0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, -0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0xff, 0xc0, -0x00, 0x11, 0x08, 0x01, 0x9b, 0x02, 0xd0, 0x03, 0x01, 0x22, -0x00, 0x02, 0x11, 0x01, 0x03, 0x11, 0x01, 0xff, 0xc4, 0x00, -0x1f, 0x00, 0x00, 0x01, 0x05, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, -0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, -0xff, 0xc4, 0x00, 0xb5, 0x10, 0x00, 0x02, 0x01, 0x03, 0x03, -0x02, 0x04, 0x03, 0x05, 0x05, 0x04, 0x04, 0x00, 0x00, 0x01, -0x7d, 0x01, 0x02, 0x03, 0x00, 0x04, 0x11, 0x05, 0x12, 0x21, -0x31, 0x41, 0x06, 0x13, 0x51, 0x61, 0x07, 0x22, 0x71, 0x14, -0x32, 0x81, 0x91, 0xa1, 0x08, 0x23, 0x42, 0xb1, 0xc1, 0x15, -0x52, 0xd1, 0xf0, 0x24, 0x33, 0x62, 0x72, 0x82, 0x09, 0x0a, -0x16, 0x17, 0x18, 0x19, 0x1a, 0x25, 0x26, 0x27, 0x28, 0x29, -0x2a, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x43, 0x44, -0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x53, 0x54, 0x55, 0x56, -0x57, 0x58, 0x59, 0x5a, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, -0x69, 0x6a, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, -0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x92, 0x93, -0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0xa2, 0xa3, 0xa4, -0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xb2, 0xb3, 0xb4, 0xb5, -0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, -0xc7, 0xc8, 0xc9, 0xca, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, -0xd8, 0xd9, 0xda, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, -0xe8, 0xe9, 0xea, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, -0xf8, 0xf9, 0xfa, 0xff, 0xc4, 0x00, 0x1f, 0x01, 0x00, 0x03, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, -0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0xff, 0xc4, 0x00, 0xb5, -0x11, 0x00, 0x02, 0x01, 0x02, 0x04, 0x04, 0x03, 0x04, 0x07, -0x05, 0x04, 0x04, 0x00, 0x01, 0x02, 0x77, 0x00, 0x01, 0x02, -0x03, 0x11, 0x04, 0x05, 0x21, 0x31, 0x06, 0x12, 0x41, 0x51, -0x07, 0x61, 0x71, 0x13, 0x22, 0x32, 0x81, 0x08, 0x14, 0x42, -0x91, 0xa1, 0xb1, 0xc1, 0x09, 0x23, 0x33, 0x52, 0xf0, 0x15, -0x62, 0x72, 0xd1, 0x0a, 0x16, 0x24, 0x34, 0xe1, 0x25, 0xf1, -0x17, 0x18, 0x19, 0x1a, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x35, -0x36, 0x37, 0x38, 0x39, 0x3a, 0x43, 0x44, 0x45, 0x46, 0x47, -0x48, 0x49, 0x4a, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, -0x5a, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x73, -0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x82, 0x83, 0x84, -0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x92, 0x93, 0x94, 0x95, -0x96, 0x97, 0x98, 0x99, 0x9a, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, -0xa7, 0xa8, 0xa9, 0xaa, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, -0xb8, 0xb9, 0xba, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, -0xc9, 0xca, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, -0xda, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, -0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xff, -0xda, 0x00, 0x0c, 0x03, 0x01, 0x00, 0x02, 0x11, 0x03, 0x11, -0x00, 0x3f, 0x00, 0xfd, 0x53, 0xa2, 0x8a, 0x28, 0x00, 0xa2, -0x8a, 0x28, 0x00, 0xa6, 0x93, 0xe9, 0x41, 0x34, 0x94, 0x00, -0x53, 0x49, 0xa1, 0x8d, 0x46, 0xed, 0xc5, 0x00, 0x2b, 0x35, -0x31, 0x9e, 0xa3, 0x77, 0xa8, 0x9e, 0x4a, 0x00, 0x91, 0xa5, -0xc0, 0xa8, 0x5a, 0x60, 0x3a, 0xd0, 0xa9, 0x24, 0xe0, 0xec, -0x5c, 0xfb, 0x9e, 0x94, 0xd7, 0xf0, 0xf4, 0x37, 0x84, 0x35, -0xe3, 0x3c, 0xf8, 0x1f, 0xea, 0xb7, 0x11, 0x1e, 0x7b, 0xf0, -0x3a, 0xfe, 0x39, 0xf6, 0xc5, 0x44, 0x9b, 0x5f, 0x0a, 0xb9, -0x13, 0x72, 0x4b, 0xdd, 0x57, 0x66, 0x16, 0xb1, 0xe3, 0xcd, -0x0f, 0x45, 0x46, 0x37, 0x5a, 0x94, 0x3b, 0xc7, 0xfc, 0xb2, -0x84, 0xf9, 0xb2, 0x7f, 0xdf, 0x29, 0x93, 0xfa, 0x57, 0x15, -0x7d, 0xf1, 0xe2, 0xca, 0x26, 0x2b, 0x69, 0xe1, 0xdd, 0x7a, -0xf4, 0x0f, 0xe3, 0x5b, 0x3d, 0xaa, 0x7f, 0x33, 0x9f, 0xd2, -0xbd, 0x62, 0xdf, 0xc3, 0xda, 0x5d, 0xa7, 0xfa, 0x9d, 0x3a, -0xd6, 0x23, 0xea, 0x90, 0xa8, 0xfe, 0x95, 0x6c, 0x5a, 0x42, -0xa3, 0x88, 0x90, 0x7d, 0x14, 0x57, 0x93, 0x5e, 0x8e, 0x61, -0x57, 0xf8, 0x75, 0xa3, 0x0f, 0x48, 0xdd, 0xfd, 0xed, 0xfe, -0x87, 0x87, 0x88, 0xc3, 0xe6, 0x95, 0xdf, 0xee, 0xab, 0xc6, -0x9a, 0xf2, 0x87, 0x33, 0xfb, 0xdb, 0xfd, 0x0f, 0x02, 0x9b, -0xf6, 0x86, 0xb8, 0x8d, 0x8f, 0xfc, 0x51, 0xba, 0xb8, 0x1e, -0xe9, 0xff, 0x00, 0xd6, 0xa8, 0x8f, 0xed, 0x25, 0x1a, 0x0f, -0xde, 0x78, 0x53, 0x57, 0x53, 0xec, 0xa2, 0xbe, 0x81, 0x6b, -0x2b, 0x76, 0xeb, 0x04, 0x6d, 0xf5, 0x41, 0x51, 0x36, 0x91, -0x63, 0x27, 0x5b, 0x38, 0x0f, 0xd6, 0x35, 0xff, 0x00, 0x0a, -0xe0, 0x78, 0x1c, 0xdb, 0xec, 0xe3, 0x17, 0xfe, 0x00, 0xbf, -0xcc, 0xf2, 0xde, 0x5b, 0x9e, 0x27, 0x78, 0xe3, 0xd7, 0xce, -0x9c, 0x7f, 0xcc, 0xf0, 0x33, 0xfb, 0x4c, 0x69, 0x8a, 0x7f, -0x79, 0xe1, 0xfd, 0x65, 0x3e, 0x91, 0x21, 0xff, 0x00, 0xd9, -0xa9, 0x47, 0xed, 0x3f, 0xe1, 0xf5, 0x20, 0x3e, 0x91, 0xad, -0x2f, 0xfd, 0xb0, 0x8c, 0xff, 0x00, 0xed, 0x4a, 0xf7, 0x66, -0xf0, 0xe6, 0x93, 0x27, 0xde, 0xd3, 0x6d, 0x1b, 0xeb, 0x02, -0xff, 0x00, 0x85, 0x57, 0x7f, 0x07, 0xe8, 0x52, 0xfd, 0xed, -0x1e, 0xc4, 0xff, 0x00, 0xdb, 0xba, 0x7f, 0x85, 0x66, 0xf0, -0x79, 0xe2, 0xdb, 0x17, 0x1f, 0x9c, 0x3f, 0xe0, 0x99, 0x3c, -0x07, 0x11, 0xaf, 0x87, 0x1d, 0x07, 0xeb, 0x4f, 0xfc, 0x99, -0xe2, 0xf1, 0x7e, 0xd3, 0x5e, 0x14, 0x90, 0xfc, 0xf0, 0x6a, -0x90, 0xfb, 0xbd, 0xb0, 0xfe, 0x8c, 0x6a, 0xf4, 0x5f, 0xb4, -0x5f, 0x82, 0xa4, 0x3f, 0x35, 0xf5, 0xc4, 0x5f, 0xef, 0xda, -0x49, 0xfd, 0x01, 0xaf, 0x52, 0x97, 0xe1, 0xe7, 0x86, 0xa6, -0xfb, 0xfa, 0x15, 0x81, 0xff, 0x00, 0xb6, 0x0b, 0xfe, 0x15, -0x4e, 0x4f, 0x84, 0xfe, 0x10, 0x97, 0xef, 0x78, 0x7e, 0xc7, -0xfe, 0xfd, 0x01, 0x42, 0xa3, 0x9f, 0xc7, 0x6a, 0xd4, 0xdf, -0xac, 0x65, 0xfa, 0x30, 0x58, 0x7e, 0x27, 0x86, 0xd8, 0x8a, -0x32, 0xf5, 0x84, 0x97, 0xe4, 0xce, 0x16, 0x2f, 0x8f, 0x9e, -0x06, 0x97, 0x18, 0xd7, 0x55, 0x73, 0xfd, 0xeb, 0x79, 0x97, -0xf9, 0xa5, 0x5d, 0x87, 0xe3, 0x47, 0x83, 0x67, 0x38, 0x5f, -0x10, 0xda, 0x0f, 0xf7, 0xd8, 0xaf, 0xf3, 0x02, 0xba, 0x19, -0x7e, 0x09, 0xf8, 0x2e, 0x5e, 0xba, 0x0d, 0xb0, 0xfa, 0x2e, -0x2a, 0x8c, 0xbf, 0xb3, 0xf7, 0x81, 0xe6, 0xcf, 0xfc, 0x49, -0xd5, 0x7f, 0xdd, 0x38, 0xa7, 0x7e, 0x20, 0x8f, 0xfc, 0xfa, -0x7f, 0xf8, 0x1a, 0xfd, 0x59, 0x57, 0xe2, 0x88, 0xff, 0x00, -0xcf, 0x87, 0xff, 0x00, 0x81, 0xaf, 0xd5, 0x91, 0xc3, 0xf1, -0x3b, 0xc2, 0x93, 0xfd, 0xdf, 0x12, 0x69, 0x5f, 0x43, 0x79, -0x1a, 0x9f, 0xd4, 0xd5, 0xa8, 0x7c, 0x7f, 0xe1, 0xc9, 0x7e, -0xe6, 0xbf, 0xa6, 0x37, 0xd2, 0xf2, 0x33, 0xff, 0x00, 0xb3, -0x56, 0x5c, 0xff, 0x00, 0xb3, 0x47, 0x82, 0x25, 0x1c, 0x59, -0x4b, 0x1f, 0xfb, 0xb2, 0x55, 0x19, 0xbf, 0x65, 0x7f, 0x05, -0xc9, 0xf7, 0x52, 0xed, 0x3e, 0x92, 0xff, 0x00, 0xf5, 0xa8, -0xf6, 0xf9, 0xf2, 0xde, 0x8d, 0x37, 0xff, 0x00, 0x6f, 0x3f, -0xd5, 0x07, 0xd6, 0x78, 0x9a, 0x3f, 0xf3, 0x0f, 0x49, 0xfa, -0x4e, 0x4b, 0xf4, 0x3a, 0xb4, 0xf1, 0x8e, 0x8d, 0x27, 0xdd, -0xd5, 0xec, 0x4f, 0xd2, 0xe5, 0x3f, 0xc6, 0xa7, 0x8f, 0xc4, -0x9a, 0x6b, 0xfd, 0xdd, 0x46, 0xd5, 0xbe, 0x93, 0xa9, 0xfe, -0xb5, 0xc0, 0xcb, 0xfb, 0x25, 0xf8, 0x49, 0xfe, 0xe5, 0xc5, -0xf4, 0x7f, 0x49, 0x14, 0xff, 0x00, 0x4a, 0xac, 0xdf, 0xb2, -0x47, 0x87, 0xd4, 0xfe, 0xe7, 0x55, 0xd4, 0x22, 0xfa, 0x32, -0xff, 0x00, 0x85, 0x2f, 0xae, 0x67, 0x8b, 0x7c, 0x24, 0x5f, -0xa4, 0xff, 0x00, 0xe0, 0x13, 0xf5, 0xfe, 0x23, 0x8e, 0xf8, -0x28, 0x3f, 0x4a, 0x9f, 0xe7, 0x13, 0xd4, 0x63, 0xd5, 0xad, -0x65, 0xfb, 0x97, 0x31, 0x3f, 0xfb, 0xae, 0x0d, 0x4e, 0x97, -0x22, 0x41, 0x95, 0x60, 0xc3, 0xd4, 0x1a, 0xf2, 0x26, 0xfd, -0x94, 0xed, 0xe2, 0xcf, 0x91, 0xe2, 0x4d, 0x4a, 0x31, 0xff, -0x00, 0x5d, 0x31, 0xfc, 0x85, 0x44, 0xff, 0x00, 0xb3, 0x0d, -0xf4, 0x7f, 0xea, 0x7c, 0x5b, 0xa8, 0xaf, 0xfd, 0xb6, 0x61, -0x4f, 0xfb, 0x47, 0x36, 0x8f, 0xc5, 0x82, 0xfb, 0xa6, 0xbf, -0xc8, 0xa5, 0x9a, 0xe7, 0x71, 0xf8, 0xf2, 0xef, 0xba, 0xa4, -0x7f, 0xc8, 0xf6, 0x61, 0x70, 0x28, 0xfb, 0x47, 0xbd, 0x78, -0x93, 0xfe, 0xcd, 0xfe, 0x24, 0x8b, 0x98, 0x3c, 0x65, 0xa8, -0x0f, 0xfb, 0x7a, 0x71, 0xfd, 0x6a, 0xbc, 0x9f, 0x00, 0x7c, -0x79, 0x17, 0xfa, 0x9f, 0x1a, 0xea, 0x3f, 0x85, 0xf4, 0xa3, -0xfa, 0xd4, 0xbc, 0xdf, 0x31, 0x8e, 0xf8, 0x09, 0x7c, 0xa5, -0x12, 0x1e, 0x7b, 0x9a, 0xc3, 0xe2, 0xcb, 0x27, 0xf2, 0x94, -0x59, 0xee, 0xe2, 0x6a, 0x3c, 0xfa, 0xf0, 0x4f, 0xf8, 0x53, -0x5f, 0x14, 0xed, 0x8f, 0xee, 0x7c, 0x5f, 0x7a, 0xe0, 0x74, -0xdf, 0x78, 0xcd, 0xfc, 0xcd, 0x2a, 0xfc, 0x3d, 0xf8, 0xcb, -0x69, 0xc4, 0x5e, 0x21, 0x92, 0x40, 0x3f, 0xbf, 0x24, 0x6d, -0xff, 0x00, 0xa1, 0x03, 0x53, 0xfd, 0xbb, 0x89, 0x5f, 0x1e, -0x06, 0xa7, 0xca, 0xcf, 0xf5, 0x25, 0x71, 0x26, 0x32, 0x3f, -0x1e, 0x5b, 0x5b, 0xe5, 0xca, 0xff, 0x00, 0x53, 0xdf, 0x7c, -0xef, 0x4a, 0x5f, 0x34, 0x57, 0x81, 0x8f, 0x0f, 0xfc, 0x72, -0xb6, 0x18, 0x5d, 0x4e, 0x39, 0x47, 0xa3, 0x47, 0x6e, 0x7f, -0x5d, 0xb4, 0xa3, 0xfe, 0x17, 0x95, 0xa9, 0x04, 0xc3, 0x6b, -0x73, 0xec, 0xd1, 0x45, 0xfd, 0x31, 0x55, 0xfe, 0xb0, 0xdb, -0xe2, 0xc2, 0x56, 0x5f, 0xf6, 0xe7, 0xf9, 0x32, 0x97, 0x14, -0xdb, 0xe3, 0xc0, 0xd7, 0x5f, 0xf7, 0x0e, 0xff, 0x00, 0x94, -0x8f, 0x7b, 0xf3, 0xa9, 0x44, 0xb9, 0xaf, 0x06, 0x1e, 0x27, -0xf8, 0xd3, 0x69, 0xf7, 0xfc, 0x3b, 0x61, 0x36, 0x3d, 0x61, -0x3f, 0xd2, 0x41, 0x4c, 0x6f, 0x88, 0xbf, 0x17, 0x2d, 0xff, -0x00, 0xd6, 0xf8, 0x42, 0xc9, 0x87, 0xfb, 0x31, 0x48, 0x3f, -0xf6, 0xa1, 0xa7, 0xfe, 0xb2, 0x61, 0x97, 0xc7, 0x4a, 0xa2, -0xff, 0x00, 0xb8, 0x72, 0x2b, 0xfd, 0x6d, 0xc1, 0xc7, 0xe3, -0xa1, 0x55, 0x7a, 0xd3, 0x91, 0xef, 0xe2, 0x60, 0x05, 0x28, -0x9b, 0x3d, 0xeb, 0xe7, 0xb6, 0xf8, 0xc5, 0xf1, 0x26, 0xd8, -0x7e, 0xfb, 0xc1, 0x71, 0x1c, 0x77, 0x51, 0x20, 0xfe, 0xa6, -0xa2, 0x3f, 0x1f, 0xbc, 0x6b, 0x6c, 0x7f, 0x7f, 0xe0, 0xbc, -0x0f, 0xf6, 0x7c, 0xcf, 0xf0, 0xa9, 0xff, 0x00, 0x5a, 0x72, -0xe5, 0xf1, 0x73, 0xaf, 0x58, 0x4b, 0xfc, 0x88, 0xff, 0x00, -0x5d, 0x32, 0x95, 0xf1, 0xf3, 0xaf, 0x5a, 0x73, 0xff, 0x00, -0x23, 0xe8, 0xaf, 0x30, 0x9a, 0x37, 0x9a, 0xf9, 0xe1, 0x3f, -0x69, 0x4d, 0x66, 0x13, 0xfe, 0x91, 0xe1, 0x1b, 0x81, 0xeb, -0xb7, 0x77, 0xf5, 0xab, 0x11, 0xfe, 0xd4, 0xa9, 0x1f, 0xfa, -0xef, 0x0b, 0xdf, 0x0f, 0x5d, 0xae, 0x07, 0xf3, 0xaa, 0x8f, -0x14, 0xe5, 0x2f, 0x7a, 0xb6, 0xf5, 0x52, 0xff, 0x00, 0x22, -0xe3, 0xc6, 0x99, 0x1c, 0xb7, 0xad, 0x6f, 0x58, 0xc9, 0x7e, -0x87, 0xd0, 0x2b, 0x25, 0x2f, 0x99, 0xef, 0x5e, 0x0d, 0x17, -0xed, 0x53, 0xa4, 0x36, 0x7c, 0xdd, 0x12, 0xfe, 0x1f, 0xa9, -0x06, 0xae, 0x41, 0xfb, 0x51, 0x78, 0x61, 0xc0, 0xf3, 0x6d, -0xef, 0xa2, 0xff, 0x00, 0xb6, 0x59, 0xae, 0x88, 0xf1, 0x26, -0x51, 0x2d, 0xb1, 0x11, 0x3a, 0x63, 0xc5, 0xb9, 0x1c, 0xf6, -0xc5, 0x47, 0xe7, 0x75, 0xf9, 0xa3, 0xdb, 0xbc, 0xc1, 0x46, -0xf1, 0x5e, 0x3d, 0x1f, 0xed, 0x35, 0xe0, 0xb2, 0x3e, 0x69, -0xef, 0x50, 0xfb, 0xda, 0xb1, 0xfe, 0x55, 0x61, 0x7f, 0x69, -0x6f, 0x02, 0x9f, 0xbd, 0xa8, 0xdc, 0x27, 0xfb, 0xd6, 0x92, -0x7f, 0x45, 0xae, 0x85, 0x9e, 0xe5, 0x6f, 0xfe, 0x62, 0x61, -0xff, 0x00, 0x81, 0x23, 0xa9, 0x71, 0x26, 0x4a, 0xf6, 0xc5, -0xd3, 0xff, 0x00, 0xc0, 0x91, 0xeb, 0x5e, 0x68, 0xf5, 0xa3, -0xcd, 0xf7, 0xaf, 0x2b, 0x5f, 0xda, 0x3f, 0xc0, 0x0d, 0xd7, -0x5b, 0x75, 0x3e, 0xf6, 0x73, 0xff, 0x00, 0xf1, 0x15, 0x6e, -0x1f, 0x8f, 0xde, 0x03, 0x9c, 0xfc, 0xbe, 0x21, 0x84, 0x7f, -0xbf, 0x14, 0x8b, 0xfc, 0xd6, 0xb4, 0x8e, 0x73, 0x96, 0xcb, -0xe1, 0xc4, 0xc3, 0xff, 0x00, 0x02, 0x5f, 0xe6, 0x6d, 0x1c, -0xff, 0x00, 0x28, 0x9f, 0xc3, 0x8b, 0xa7, 0xff, 0x00, 0x81, -0xc7, 0xfc, 0xcf, 0x4a, 0x0f, 0x9a, 0x5d, 0xd5, 0xc2, 0xc1, -0xf1, 0x93, 0xc1, 0x53, 0x7d, 0xdf, 0x13, 0x69, 0xc3, 0x3f, -0xde, 0x9c, 0x2f, 0xf3, 0xab, 0xf0, 0x7c, 0x4b, 0xf0, 0xa5, -0xc6, 0x3c, 0xaf, 0x13, 0x69, 0x0f, 0x9f, 0x4b, 0xd8, 0xff, -0x00, 0xf8, 0xaa, 0xea, 0x8e, 0x3f, 0x09, 0x3f, 0x86, 0xac, -0x5f, 0xcd, 0x7f, 0x99, 0xd9, 0x0c, 0xcb, 0x03, 0x53, 0xe0, -0xaf, 0x07, 0xff, 0x00, 0x6f, 0x2f, 0xf3, 0x3a, 0xbd, 0xd4, -0xa1, 0xab, 0x0a, 0x0f, 0x17, 0xe8, 0xb7, 0x44, 0x08, 0x75, -0x8b, 0x19, 0x49, 0xec, 0x97, 0x28, 0x7f, 0x91, 0xad, 0x08, -0xaf, 0xa1, 0xb8, 0xc9, 0x8e, 0x68, 0xe4, 0xc7, 0xf7, 0x1c, -0x1a, 0xe9, 0x8d, 0x5a, 0x73, 0xf8, 0x64, 0x9f, 0xcc, 0xec, -0x8d, 0x7a, 0x53, 0xf8, 0x26, 0x9f, 0xa3, 0x45, 0xef, 0x30, -0x52, 0xef, 0xaa, 0xab, 0x32, 0xff, 0x00, 0x78, 0x7e, 0x74, -0xef, 0x39, 0x4f, 0xf1, 0x56, 0x97, 0x46, 0xb7, 0x45, 0x8f, -0x33, 0x34, 0xbb, 0xfd, 0xea, 0xbf, 0x98, 0x3d, 0x69, 0x77, -0x8a, 0x61, 0x72, 0xc6, 0xef, 0x7a, 0x37, 0x7b, 0xd5, 0x7d, -0xe2, 0x97, 0xcc, 0x1e, 0xb4, 0x0c, 0x9f, 0x77, 0xbd, 0x19, -0x35, 0x07, 0x9a, 0x3d, 0x69, 0x43, 0xe6, 0x80, 0x27, 0xdd, -0x46, 0xea, 0x87, 0x75, 0x1b, 0xa8, 0x02, 0x6d, 0xd4, 0xa0, -0xe6, 0xa1, 0x0d, 0x4e, 0xf3, 0x28, 0x02, 0x4a, 0x2a, 0x3d, -0xf4, 0xa1, 0xf3, 0xde, 0x80, 0x24, 0xcd, 0x19, 0xfa, 0xd4, -0x7b, 0xfd, 0xe9, 0x77, 0x7b, 0xd0, 0x03, 0xf3, 0x46, 0x4d, -0x33, 0x75, 0x1b, 0xa8, 0x01, 0xf9, 0x34, 0x6e, 0xa6, 0x6e, -0xa5, 0xdd, 0x40, 0x0e, 0xdd, 0x4a, 0x0e, 0x69, 0x9b, 0xa8, -0x07, 0x34, 0x00, 0xfc, 0xd2, 0xd3, 0x28, 0xa0, 0x07, 0xd1, -0x4c, 0xa2, 0x80, 0x1f, 0x45, 0x37, 0x3f, 0x5a, 0x33, 0xf5, -0xa0, 0x07, 0x51, 0x4d, 0x07, 0xd6, 0x97, 0x34, 0x00, 0xb4, -0x52, 0x66, 0x96, 0x80, 0x0a, 0x28, 0xa2, 0x80, 0x0a, 0x28, -0xa2, 0x80, 0x0a, 0x28, 0xa2, 0x80, 0x0a, 0x28, 0xa2, 0x80, -0x0a, 0x28, 0xa2, 0x80, 0x0a, 0x42, 0x71, 0x4b, 0x4d, 0x3d, -0x68, 0x01, 0x29, 0xa4, 0xd2, 0x93, 0x51, 0xb3, 0x0a, 0x00, -0x47, 0x6a, 0x85, 0xdf, 0x9a, 0x57, 0x6a, 0xad, 0x24, 0x98, -0xef, 0x40, 0x0b, 0x24, 0x98, 0xa7, 0x5a, 0x5b, 0x1b, 0x8f, -0x9d, 0xb8, 0x41, 0xfa, 0xd7, 0x31, 0xa9, 0xf8, 0x89, 0x1b, -0x5b, 0x8b, 0x44, 0xb4, 0x3e, 0x65, 0xfb, 0xa8, 0x96, 0x6d, -0xbc, 0x79, 0x11, 0x1c, 0x80, 0xc4, 0xf4, 0xc9, 0x23, 0x00, -0x75, 0xef, 0xd0, 0x57, 0x6b, 0x6b, 0x18, 0x8a, 0x08, 0xd4, -0x0c, 0x00, 0x31, 0x51, 0x19, 0xa9, 0x36, 0x97, 0x43, 0x38, -0xd4, 0x8c, 0xdb, 0x51, 0xe9, 0xf9, 0x92, 0xaa, 0x84, 0x00, -0x01, 0x80, 0x29, 0x68, 0xa2, 0xac, 0xd0, 0x28, 0xa2, 0xb9, -0xff, 0x00, 0x18, 0xf8, 0xfb, 0x40, 0xf0, 0x06, 0x9e, 0x6f, -0xb5, 0xfd, 0x4a, 0x2d, 0x36, 0xd4, 0x7f, 0x1c, 0x80, 0x9f, -0xd0, 0x02, 0x68, 0x03, 0xa0, 0xa2, 0xbe, 0x27, 0xf8, 0x95, -0xff, 0x00, 0x05, 0x3a, 0xf0, 0x1f, 0x83, 0xef, 0x66, 0x87, -0x4b, 0x91, 0x35, 0x54, 0x8c, 0x90, 0x19, 0x43, 0xae, 0x71, -0xf5, 0x5a, 0xf3, 0x7f, 0x0c, 0xff, 0x00, 0xc1, 0x5a, 0xac, -0xbc, 0x55, 0xe2, 0x28, 0x34, 0xdb, 0x6d, 0x05, 0xf7, 0x4a, -0xc1, 0x41, 0x56, 0x3e, 0xb8, 0xfe, 0xed, 0x00, 0x7e, 0x90, -0x51, 0x5c, 0xe7, 0x87, 0xbc, 0x5d, 0x15, 0xef, 0x84, 0xac, -0x35, 0x9d, 0x48, 0xa6, 0x9e, 0x2e, 0x61, 0x59, 0x4a, 0xc8, -0xdf, 0x77, 0x35, 0x62, 0xd7, 0xc6, 0xba, 0x1d, 0xf4, 0x8b, -0x1c, 0x1a, 0xa5, 0xbc, 0xae, 0xdc, 0x05, 0x56, 0xeb, 0x40, -0x1b, 0x74, 0x52, 0x02, 0x18, 0x64, 0x72, 0x3d, 0x6a, 0x2b, -0x8b, 0x88, 0xed, 0x63, 0x32, 0x48, 0xdb, 0x54, 0x75, 0x26, -0x93, 0x69, 0x2b, 0xb1, 0x36, 0xa2, 0xae, 0xc9, 0xa8, 0xac, -0x31, 0xe3, 0x0d, 0x2c, 0x92, 0x05, 0xc7, 0x4f, 0x63, 0x52, -0x0f, 0x15, 0x69, 0x6d, 0xff, 0x00, 0x2f, 0x03, 0xf2, 0x35, -0xcd, 0xf5, 0xaa, 0x0f, 0xed, 0xaf, 0xbc, 0xe4, 0x58, 0xcc, -0x33, 0xff, 0x00, 0x97, 0x8b, 0xef, 0x46, 0xc5, 0x15, 0x94, -0x3c, 0x4b, 0xa6, 0xb7, 0x4b, 0x91, 0xf9, 0x1a, 0x78, 0xf1, -0x06, 0x9e, 0x7a, 0x5c, 0x2f, 0xe4, 0x6a, 0xd6, 0x22, 0x93, -0xda, 0x4b, 0xef, 0x2d, 0x62, 0x68, 0x3d, 0xa6, 0xbe, 0xf4, -0x69, 0x51, 0x59, 0xe3, 0x5b, 0xb2, 0x6f, 0xf9, 0x6e, 0xb4, -0xf1, 0xab, 0xda, 0x1e, 0x93, 0xad, 0x57, 0xb5, 0xa6, 0xfe, -0xd2, 0xfb, 0xca, 0x55, 0xe9, 0x3f, 0xb4, 0xbe, 0xf2, 0xed, -0x15, 0x50, 0x6a, 0x56, 0xc7, 0xa4, 0xcb, 0x4f, 0x5b, 0xc8, -0x5f, 0xa4, 0x8a, 0x7f, 0x1a, 0xa5, 0x38, 0xbd, 0x99, 0x6a, -0xa4, 0x1e, 0xcd, 0x16, 0x28, 0xa6, 0x23, 0xab, 0x8e, 0x08, -0x34, 0xfa, 0xb3, 0x4b, 0xdc, 0x28, 0xa2, 0x8a, 0x00, 0x28, -0xa2, 0x8a, 0x00, 0x29, 0x31, 0x4b, 0x45, 0x00, 0x26, 0xd1, -0xe8, 0x29, 0x86, 0x25, 0x3d, 0x54, 0x7e, 0x55, 0x25, 0x14, -0xac, 0x85, 0x64, 0xc8, 0x0d, 0xa4, 0x2d, 0xd6, 0x24, 0x3f, -0xf0, 0x1a, 0x63, 0x69, 0x96, 0x8f, 0xd6, 0xda, 0x26, 0xff, -0x00, 0x80, 0x0a, 0xb5, 0x45, 0x4b, 0x84, 0x5e, 0xe8, 0x97, -0x4e, 0x0f, 0x74, 0x8c, 0xe7, 0xf0, 0xfe, 0x9b, 0x2f, 0xde, -0xb1, 0x81, 0xbf, 0xed, 0x98, 0xaa, 0xb2, 0x78, 0x33, 0x44, -0x9b, 0xef, 0xe9, 0x76, 0xcd, 0xff, 0x00, 0x6c, 0xc5, 0x6d, -0xd1, 0x59, 0xbc, 0x3d, 0x29, 0x6f, 0x05, 0xf7, 0x23, 0x19, -0x61, 0xa8, 0x4b, 0xe2, 0x82, 0x7f, 0x24, 0x73, 0x32, 0xfc, -0x37, 0xf0, 0xdc, 0xff, 0x00, 0x7b, 0x48, 0xb6, 0x3f, 0xf0, -0x0a, 0xa7, 0x37, 0xc2, 0x1f, 0x09, 0xcd, 0xf7, 0xb4, 0x88, -0x7f, 0x01, 0x5d, 0x95, 0x15, 0xcf, 0x2c, 0x06, 0x12, 0x5f, -0x15, 0x28, 0xfd, 0xc8, 0xe5, 0x96, 0x59, 0x81, 0x9f, 0xc5, -0x46, 0x2f, 0xfe, 0xdd, 0x47, 0x9f, 0x4b, 0xf0, 0x2b, 0xc1, -0xd2, 0x93, 0x9d, 0x29, 0x17, 0xe8, 0x6a, 0x94, 0xdf, 0xb3, -0xaf, 0x82, 0xa6, 0xff, 0x00, 0x97, 0x07, 0x5f, 0xf7, 0x5f, -0xff, 0x00, 0xad, 0x5e, 0x9d, 0x45, 0x73, 0x4b, 0x27, 0xcb, -0xa5, 0xf1, 0x50, 0x8f, 0xdc, 0x8e, 0x49, 0xe4, 0x39, 0x54, -0xfe, 0x2c, 0x34, 0x3f, 0xf0, 0x14, 0x79, 0x24, 0xbf, 0xb3, -0x1f, 0x82, 0xa4, 0xe9, 0x05, 0xca, 0x7d, 0x24, 0x1f, 0xe1, -0x55, 0x25, 0xfd, 0x95, 0x7c, 0x1d, 0x27, 0x21, 0xaf, 0x13, -0xe9, 0x20, 0xff, 0x00, 0x0a, 0xf6, 0x6a, 0x2b, 0x9e, 0x5c, -0x3f, 0x95, 0x4b, 0x7c, 0x3c, 0x7e, 0xe3, 0x96, 0x5c, 0x2f, -0x92, 0xcf, 0x7c, 0x24, 0x3e, 0xe3, 0xc3, 0x66, 0xfd, 0x92, -0xbc, 0x2c, 0xff, 0x00, 0x72, 0xf2, 0xf5, 0x3f, 0xe0, 0x4b, -0xfe, 0x15, 0x46, 0x5f, 0xd9, 0x0f, 0x43, 0x1f, 0xea, 0xf5, -0x6b, 0xc5, 0x3f, 0x45, 0xaf, 0xa0, 0x28, 0xac, 0x1f, 0x0c, -0xe5, 0x12, 0xff, 0x00, 0x98, 0x75, 0xf8, 0xff, 0x00, 0x99, -0xcd, 0x2e, 0x0f, 0xc8, 0xa5, 0xff, 0x00, 0x30, 0xb1, 0xf9, -0x5d, 0x7e, 0xa7, 0xce, 0xef, 0xfb, 0x24, 0xc2, 0x9f, 0xea, -0x3c, 0x43, 0x75, 0x1d, 0x43, 0x2f, 0xec, 0xb1, 0xaa, 0x47, -0xfe, 0xa3, 0xc5, 0x97, 0x2b, 0xf5, 0x77, 0xfe, 0x86, 0xbe, -0x8e, 0xa2, 0xb1, 0x7c, 0x2b, 0x95, 0x74, 0xa6, 0xd7, 0xa4, -0xa5, 0xfe, 0x66, 0x0f, 0x82, 0xf2, 0x47, 0xf0, 0xd2, 0x6b, -0xd2, 0x52, 0x5f, 0xa9, 0xf3, 0x5f, 0xfc, 0x33, 0x4f, 0x8b, -0x2d, 0x8e, 0x6d, 0xfc, 0x63, 0x28, 0xf4, 0xcc, 0xb2, 0x7f, -0x8d, 0x39, 0x7e, 0x06, 0x7c, 0x4a, 0xb4, 0xe6, 0xdf, 0xc6, -0x1f, 0xf9, 0x15, 0xbf, 0xc2, 0xbe, 0x92, 0xa2, 0xa7, 0xfd, -0x56, 0xc0, 0x2f, 0x81, 0xcd, 0x7a, 0x4e, 0x5f, 0xe6, 0x47, -0xfa, 0x99, 0x96, 0x2f, 0x82, 0x55, 0x23, 0xe9, 0x52, 0x5f, -0xe6, 0x7c, 0xe0, 0x3e, 0x18, 0x7c, 0x60, 0xb4, 0xff, 0x00, -0x55, 0xe2, 0xd0, 0xc3, 0xd3, 0xce, 0x3c, 0xff, 0x00, 0xe3, -0x94, 0xab, 0xe1, 0x0f, 0x8d, 0x56, 0x9d, 0x35, 0xc8, 0x26, -0xff, 0x00, 0x7a, 0x4c, 0xff, 0x00, 0xec, 0xb5, 0xf4, 0x75, -0x15, 0x4b, 0x87, 0x28, 0xaf, 0x86, 0xbd, 0x55, 0xff, 0x00, -0x6f, 0xb2, 0xff, 0x00, 0xd5, 0x3c, 0x3c, 0x7e, 0x0c, 0x4d, -0x65, 0xff, 0x00, 0x71, 0x24, 0x7c, 0xec, 0x2d, 0xfe, 0x37, -0x59, 0x7f, 0xcb, 0x6b, 0x29, 0xbe, 0xab, 0xbb, 0xfa, 0x52, -0x36, 0xbb, 0xf1, 0xb6, 0xdf, 0xad, 0x96, 0x9d, 0x27, 0xd6, -0x0f, 0xf0, 0x35, 0xf4, 0x55, 0x15, 0x7f, 0xd8, 0x53, 0x5f, -0x06, 0x2e, 0xaa, 0xff, 0x00, 0xb7, 0xaf, 0xfa, 0x15, 0xfe, -0xad, 0x4e, 0x3a, 0x53, 0xc7, 0x56, 0x5f, 0xf6, 0xf5, 0xff, -0x00, 0x34, 0x7c, 0xde, 0xfe, 0x3b, 0xf8, 0xcd, 0x6a, 0x7e, -0x7d, 0x13, 0x4e, 0x97, 0xeb, 0x6c, 0xff, 0x00, 0xd1, 0xc5, -0x42, 0xdf, 0x16, 0xbe, 0x2d, 0xdb, 0x9f, 0xde, 0x78, 0x67, -0x4d, 0x61, 0xed, 0x6d, 0x28, 0x3f, 0xfa, 0x32, 0xbe, 0x95, -0xc5, 0x18, 0x1e, 0x95, 0x9b, 0xc8, 0xf1, 0x4b, 0xe1, 0xc7, -0x54, 0xfc, 0x3f, 0xc8, 0xc9, 0xf0, 0xe6, 0x35, 0x7c, 0x19, -0x95, 0x55, 0xff, 0x00, 0x80, 0xbf, 0xd0, 0xf9, 0xa5, 0x7e, -0x3c, 0x7c, 0x44, 0xb6, 0x18, 0xb9, 0xf0, 0x7d, 0xab, 0x9e, -0xfb, 0x04, 0x8b, 0xfd, 0x4d, 0x4c, 0xbf, 0xb4, 0x9f, 0x89, -0xed, 0xff, 0x00, 0xe3, 0xe3, 0xc0, 0xc4, 0xff, 0x00, 0xbb, -0x70, 0xeb, 0xff, 0x00, 0xb2, 0x1a, 0xfa, 0x43, 0x68, 0xf4, -0x1f, 0x95, 0x30, 0xc4, 0x87, 0xaa, 0xaf, 0xe5, 0x49, 0x65, -0x19, 0x9c, 0x7e, 0x1c, 0xc2, 0x5f, 0x38, 0xc5, 0x82, 0xc8, -0xb3, 0x88, 0x7c, 0x19, 0xa4, 0xfe, 0x70, 0x83, 0x3e, 0x78, -0x4f, 0xda, 0x96, 0xf5, 0x48, 0x13, 0xf8, 0x22, 0xea, 0x31, -0xdf, 0x65, 0xd6, 0xef, 0xe7, 0x18, 0xab, 0x10, 0xfe, 0xd5, -0xd6, 0x23, 0xfe, 0x3e, 0x7c, 0x2f, 0xaa, 0x45, 0xfe, 0xe3, -0x2b, 0x7f, 0x3c, 0x57, 0xbd, 0xb5, 0x94, 0x0f, 0xd6, 0x18, -0xcf, 0xd5, 0x45, 0x44, 0xfa, 0x3d, 0x94, 0x9f, 0x7a, 0xca, -0x03, 0xf5, 0x8d, 0x6a, 0x96, 0x5f, 0x9c, 0xc7, 0x6c, 0x72, -0x7e, 0xb4, 0xe3, 0xfa, 0x58, 0xa5, 0x95, 0xf1, 0x04, 0x76, -0xcc, 0x53, 0xf5, 0xa5, 0x1f, 0xd2, 0xc7, 0x8a, 0xa7, 0xed, -0x61, 0xe1, 0x90, 0x3f, 0x79, 0xa3, 0xeb, 0x71, 0x9f, 0xfa, -0xe3, 0x19, 0x1f, 0xfa, 0x32, 0xa6, 0x4f, 0xda, 0xbb, 0xc2, -0x0d, 0xf7, 0xad, 0x75, 0x68, 0xff, 0x00, 0xde, 0xb7, 0x5f, -0xe8, 0xf5, 0xeb, 0xb2, 0x78, 0x63, 0x48, 0x97, 0xef, 0x69, -0x96, 0x8d, 0xf5, 0x85, 0x7f, 0xc2, 0xab, 0x49, 0xe0, 0x6f, -0x0f, 0x4b, 0xf7, 0xf4, 0x5b, 0x16, 0xfa, 0xdb, 0xaf, 0xf8, -0x55, 0x7d, 0x5b, 0x3d, 0x5b, 0x62, 0x60, 0xfd, 0x60, 0xff, -0x00, 0x46, 0x53, 0xc1, 0xf1, 0x2c, 0x7e, 0x1c, 0x5d, 0x37, -0xeb, 0x4d, 0xff, 0x00, 0xf2, 0x47, 0x99, 0x27, 0xed, 0x4f, -0xe0, 0xa6, 0xfb, 0xc7, 0x50, 0x4f, 0xad, 0xaf, 0xff, 0x00, -0x5e, 0xac, 0xc1, 0xfb, 0x4e, 0x78, 0x1e, 0x62, 0x01, 0xbc, -0xb9, 0x8f, 0x3f, 0xdf, 0xb7, 0x22, 0xbb, 0x99, 0x7e, 0x19, -0xf8, 0x56, 0x6e, 0x5f, 0x40, 0xd3, 0xce, 0x7f, 0xe9, 0x82, -0xff, 0x00, 0x85, 0x54, 0x97, 0xe0, 0xf7, 0x83, 0xa5, 0xce, -0x7c, 0x3f, 0x62, 0x33, 0xe9, 0x08, 0x1f, 0xd2, 0xa7, 0xd9, -0x71, 0x02, 0xda, 0xad, 0x27, 0xff, 0x00, 0x6e, 0xcb, 0xfc, -0xc5, 0xec, 0x78, 0xa2, 0x3f, 0xf2, 0xfa, 0x8b, 0xff, 0x00, -0xb7, 0x24, 0xbf, 0xf6, 0xe3, 0x0a, 0x1f, 0xda, 0x17, 0xc0, -0xb3, 0x01, 0xff, 0x00, 0x13, 0xa4, 0x8f, 0x3f, 0xdf, 0x52, -0x2a, 0xfc, 0x3f, 0x1b, 0xfc, 0x0d, 0x3f, 0xdd, 0xf1, 0x1d, -0x9f, 0xe2, 0xc7, 0xfc, 0x29, 0x65, 0xf8, 0x15, 0xe0, 0x99, -0x3f, 0xe6, 0x07, 0x6c, 0xbf, 0xee, 0xa0, 0x15, 0x52, 0x5f, -0xd9, 0xeb, 0xc1, 0x52, 0xf4, 0xd2, 0xd1, 0x7f, 0xdd, 0xaa, -0x4f, 0x3f, 0x8e, 0xea, 0x93, 0xff, 0x00, 0xc0, 0x91, 0x6a, -0x5c, 0x4f, 0x1d, 0xd5, 0x19, 0x7f, 0xe0, 0x68, 0xd8, 0x83, -0xe2, 0xa7, 0x84, 0xee, 0x7f, 0xd5, 0xeb, 0xd6, 0x6d, 0xff, -0x00, 0x6d, 0x2b, 0x4a, 0x0f, 0x1b, 0xe8, 0x37, 0x1f, 0xea, -0xf5, 0x8b, 0x23, 0xff, 0x00, 0x6d, 0xd4, 0x7f, 0x5a, 0xe2, -0x26, 0xfd, 0x9a, 0xbc, 0x1b, 0x37, 0x4b, 0x46, 0x4f, 0xa5, -0x50, 0x9b, 0xf6, 0x59, 0xf0, 0x9c, 0x9f, 0x74, 0xca, 0x9f, -0x4a, 0xaf, 0xac, 0x67, 0x91, 0xde, 0x85, 0x37, 0xe9, 0x26, -0xbf, 0x41, 0xac, 0x57, 0x12, 0x43, 0x7c, 0x35, 0x39, 0x7a, -0x4d, 0xaf, 0xcd, 0x33, 0xd4, 0x53, 0xc4, 0x7a, 0x5c, 0x9f, -0x73, 0x52, 0xb4, 0x6f, 0xa4, 0xeb, 0xfe, 0x35, 0x61, 0x35, -0x3b, 0x59, 0x31, 0xb2, 0xe6, 0x16, 0xfa, 0x38, 0x35, 0xe3, -0x12, 0xfe, 0xc9, 0x9e, 0x1b, 0x71, 0xf2, 0x5e, 0x5c, 0x27, -0xfc, 0x07, 0xff, 0x00, 0xaf, 0x54, 0xe5, 0xfd, 0x90, 0xf4, -0x57, 0xfb, 0x9a, 0xb4, 0xeb, 0xff, 0x00, 0x6c, 0xc1, 0xfe, -0xb5, 0x2f, 0x1b, 0x9d, 0x2f, 0xf9, 0x83, 0x8b, 0xff, 0x00, -0xb8, 0x8b, 0xff, 0x00, 0x91, 0x25, 0xe6, 0x3c, 0x43, 0x1f, -0xf9, 0x80, 0x8b, 0xf4, 0xaa, 0xbf, 0x58, 0x9e, 0xf2, 0x27, -0x42, 0x38, 0x70, 0x7f, 0x1a, 0x76, 0xfc, 0xf7, 0xaf, 0x9d, -0x6e, 0x3f, 0x64, 0x18, 0x06, 0x4d, 0xae, 0xbf, 0x24, 0x6d, -0xdb, 0xf7, 0x58, 0xfe, 0xb5, 0x97, 0x7d, 0xf0, 0x27, 0xe2, -0x57, 0x86, 0xb9, 0xd0, 0x7c, 0x61, 0x78, 0xf1, 0xa8, 0xe1, -0x05, 0xdb, 0xa2, 0xfd, 0x36, 0x96, 0xc7, 0xe9, 0x59, 0xff, -0x00, 0x6b, 0x66, 0x74, 0xf5, 0xad, 0x80, 0x76, 0xfe, 0xec, -0xd4, 0xbf, 0x0b, 0x23, 0x2f, 0xed, 0xcc, 0xe2, 0x8e, 0xb8, -0x8c, 0xb2, 0x56, 0xfe, 0xec, 0xe3, 0x2f, 0xc2, 0xc8, 0xfa, -0x7f, 0x76, 0x68, 0xc9, 0xaf, 0x98, 0xf4, 0xdf, 0x19, 0xfc, -0x6b, 0xf0, 0x30, 0xd9, 0xa9, 0x68, 0xb0, 0x78, 0x8e, 0xd5, -0x33, 0xcb, 0xcf, 0x1a, 0xb9, 0xff, 0x00, 0x81, 0x03, 0x9f, -0xd2, 0xba, 0x8d, 0x0f, 0xf6, 0xb1, 0xf0, 0xe2, 0x07, 0x87, -0xc5, 0xd6, 0x17, 0xbe, 0x0f, 0xbd, 0x4f, 0xe1, 0x9e, 0x26, -0xb8, 0x85, 0xff, 0x00, 0xdd, 0x78, 0xd4, 0x9f, 0xcd, 0x47, -0xd6, 0xbd, 0x1a, 0x19, 0xd6, 0x1a, 0xa5, 0x95, 0x54, 0xe9, -0xbf, 0xef, 0xa6, 0xbf, 0x1d, 0xbf, 0x13, 0xd5, 0xc3, 0xf1, -0x06, 0x12, 0xad, 0x95, 0x75, 0x2a, 0x52, 0xed, 0x38, 0xb8, -0xfe, 0x3f, 0x0f, 0xe2, 0x7b, 0xb7, 0x5a, 0x2b, 0x2b, 0x41, -0xf1, 0x1e, 0x9b, 0xe2, 0x7d, 0x32, 0x1d, 0x43, 0x4a, 0xbc, -0x86, 0xfe, 0xca, 0x51, 0x94, 0x9a, 0x16, 0xca, 0x91, 0x5a, -0x3b, 0xab, 0xdc, 0x8c, 0x94, 0x97, 0x34, 0x5d, 0xd1, 0xf4, -0x91, 0x92, 0x9a, 0x52, 0x8b, 0xba, 0x64, 0xa0, 0xe2, 0x8d, -0xd4, 0xc0, 0x71, 0x4a, 0x0e, 0x6a, 0x8a, 0x1e, 0x0e, 0x69, -0x69, 0x94, 0xb9, 0xc5, 0x00, 0x3a, 0x8a, 0x4c, 0xd2, 0xd0, -0x01, 0x45, 0x14, 0x50, 0x01, 0x45, 0x14, 0x50, 0x01, 0x45, -0x14, 0x84, 0xe2, 0x80, 0x10, 0x9a, 0x42, 0x71, 0x45, 0x35, -0x8d, 0x00, 0x35, 0x8e, 0x0d, 0x45, 0x23, 0x01, 0x4e, 0x66, -0xa8, 0x24, 0x6a, 0x00, 0x64, 0x8f, 0x8c, 0xf3, 0x58, 0x7e, -0x23, 0xd7, 0xed, 0x3c, 0x39, 0xa3, 0x5f, 0x6a, 0x97, 0xd2, -0x88, 0x6c, 0xec, 0xe1, 0x79, 0xe5, 0x73, 0xd9, 0x54, 0x64, -0xfd, 0x4f, 0xb7, 0x7a, 0xd4, 0x99, 0xfd, 0xeb, 0xe6, 0x8f, -0xdb, 0x2f, 0xc5, 0xf7, 0x56, 0xfa, 0x27, 0x87, 0xfc, 0x27, -0x64, 0xcc, 0xb2, 0xeb, 0xd7, 0x44, 0x4a, 0x57, 0xbc, 0x48, -0x57, 0x23, 0xf1, 0x66, 0x5f, 0xc2, 0xb8, 0x71, 0xd8, 0x95, -0x84, 0xc3, 0xce, 0xb7, 0x65, 0xa7, 0xaf, 0x4f, 0xc4, 0xf3, -0x73, 0x1c, 0x5a, 0xc0, 0xe1, 0x2a, 0x62, 0x3a, 0xa5, 0xa7, -0xae, 0xcb, 0xf1, 0x3b, 0x6f, 0xd9, 0xf6, 0xe2, 0xf3, 0xc4, -0xd6, 0x57, 0x9e, 0x2b, 0xd4, 0x97, 0xfd, 0x3b, 0x59, 0x9c, -0xcf, 0x83, 0xff, 0x00, 0x2c, 0xe2, 0x1c, 0x46, 0x83, 0xd8, -0x0f, 0xd7, 0x27, 0xbd, 0x7b, 0xd4, 0x59, 0xf2, 0xc6, 0x6b, -0xcf, 0xfe, 0x18, 0x68, 0x29, 0xa2, 0x78, 0x76, 0xc2, 0xcd, -0x17, 0x6a, 0xc3, 0x0a, 0xa6, 0x3e, 0x82, 0xbd, 0x08, 0x0c, -0x00, 0x2a, 0xf0, 0x94, 0xdd, 0x2a, 0x10, 0x84, 0xb7, 0xb6, -0xbe, 0xaf, 0x57, 0xf8, 0x97, 0x81, 0xa2, 0xe8, 0x61, 0xa1, -0x09, 0x6a, 0xed, 0xaf, 0xab, 0xd5, 0xfe, 0x22, 0xd1, 0x45, -0x23, 0x30, 0x45, 0x2c, 0x4e, 0x00, 0x19, 0x26, 0xba, 0xce, -0xf3, 0x93, 0xf8, 0x9d, 0xf1, 0x1f, 0x49, 0xf8, 0x59, 0xe1, -0x4b, 0x9d, 0x73, 0x58, 0x9d, 0x60, 0xb6, 0x8b, 0x80, 0x5b, -0xb9, 0xf4, 0xaf, 0xc4, 0x2f, 0xdb, 0x07, 0xf6, 0xd5, 0xf1, -0x0f, 0xc5, 0xbf, 0x15, 0xea, 0x36, 0x16, 0x57, 0xec, 0x34, -0x68, 0xe6, 0x65, 0x89, 0x11, 0xd8, 0x71, 0xf4, 0xcd, 0x7d, -0x1b, 0xff, 0x00, 0x05, 0x5c, 0xfd, 0xa3, 0xe5, 0xbc, 0x4d, -0x33, 0xc2, 0x1a, 0x4d, 0xca, 0xc6, 0xab, 0x2b, 0x34, 0xc1, -0x5b, 0x24, 0x81, 0x5f, 0x0d, 0x7e, 0xcf, 0xdf, 0xb3, 0x8f, -0x88, 0xfe, 0x3f, 0x6b, 0xed, 0x06, 0x97, 0x14, 0x85, 0x16, -0x41, 0xe6, 0x48, 0x22, 0x2e, 0x0e, 0x4d, 0x00, 0x78, 0xfc, -0xb7, 0x93, 0xcc, 0xec, 0xcf, 0x33, 0xb1, 0x27, 0x27, 0x2c, -0x6b, 0xe8, 0x3f, 0xd8, 0x9b, 0xc0, 0xad, 0xe3, 0x5f, 0x8c, -0x5a, 0x2d, 0xbb, 0x21, 0x91, 0x5a, 0xe1, 0x78, 0xf6, 0x07, -0x35, 0xdd, 0x7e, 0xd4, 0xff, 0x00, 0xb2, 0xd0, 0xfd, 0x9f, -0x3c, 0x1f, 0x13, 0xdf, 0xa0, 0x17, 0x92, 0x9d, 0xa0, 0x95, -0x2a, 0x7a, 0x7d, 0x6b, 0xd9, 0x7f, 0xe0, 0x92, 0xff, 0x00, -0x0d, 0xff, 0x00, 0xb4, 0xfc, 0x7f, 0xfd, 0xb1, 0x2c, 0x4c, -0x62, 0xb3, 0xb7, 0x69, 0x37, 0x11, 0xc6, 0xe2, 0x78, 0xe6, -0x80, 0x3e, 0xa0, 0xff, 0x00, 0x82, 0x8f, 0x7c, 0x44, 0xd4, -0x7e, 0x12, 0xfc, 0x24, 0xd3, 0x6d, 0xf4, 0x76, 0x92, 0x39, -0x5d, 0x52, 0x15, 0x11, 0x39, 0x5c, 0x28, 0xc0, 0x3d, 0x08, -0xaf, 0x87, 0x7f, 0x65, 0x2f, 0xda, 0x2f, 0xc4, 0x5e, 0x2b, -0xf8, 0xa9, 0x61, 0x6b, 0x73, 0x7b, 0x70, 0xf0, 0xc6, 0xc3, -0x2a, 0xf2, 0xb1, 0x04, 0xe7, 0xeb, 0x5f, 0x55, 0xff, 0x00, -0xc1, 0x57, 0xfc, 0x45, 0x04, 0x1e, 0x13, 0xf2, 0x9d, 0xc1, -0x68, 0x63, 0xda, 0x8a, 0x5b, 0xf8, 0x8f, 0xff, 0x00, 0xae, -0xbe, 0x10, 0xff, 0x00, 0x82, 0x7f, 0x68, 0x72, 0xeb, 0xff, -0x00, 0x1b, 0xf4, 0x8b, 0x48, 0xd4, 0xb6, 0xf9, 0x95, 0xdc, -0x81, 0x9e, 0x01, 0x14, 0x01, 0xfb, 0xef, 0xa0, 0xb3, 0xc9, -0xa3, 0x59, 0xbc, 0x9f, 0x7d, 0xa2, 0x56, 0x3f, 0x88, 0xae, -0x63, 0xe2, 0x66, 0xa8, 0xd6, 0x3a, 0x43, 0x84, 0x72, 0xac, -0x47, 0x6a, 0xec, 0xe2, 0x8c, 0x45, 0x12, 0x22, 0xfd, 0xd5, -0x00, 0x0a, 0xf2, 0x3f, 0x8b, 0x7a, 0x8f, 0x99, 0x32, 0xdb, -0x83, 0xc1, 0x35, 0xe1, 0x67, 0x55, 0xfd, 0x86, 0x0a, 0x72, -0x5b, 0xbd, 0x0f, 0x9b, 0xe2, 0x1c, 0x4f, 0xd5, 0xb2, 0xfa, -0x92, 0x4f, 0x57, 0xa1, 0xe7, 0xab, 0x7d, 0x74, 0x3f, 0xe5, -0xbb, 0x53, 0xd7, 0x53, 0xbb, 0x5f, 0xf9, 0x6c, 0x7f, 0x3a, -0xaf, 0x45, 0x7e, 0x38, 0xa7, 0x3e, 0xec, 0xfc, 0x05, 0x54, -0x9a, 0xda, 0x4f, 0xef, 0x2d, 0xae, 0xb1, 0x7a, 0xbf, 0xf2, -0xd4, 0xfe, 0x75, 0x20, 0xd7, 0x6f, 0x87, 0xfc, 0xb5, 0xfd, -0x6a, 0x85, 0x15, 0x4a, 0xad, 0x45, 0xb4, 0x99, 0x6a, 0xbd, -0x55, 0xb4, 0xdf, 0xde, 0x68, 0xaf, 0x88, 0xef, 0x94, 0xff, -0x00, 0xac, 0x3f, 0x9d, 0x48, 0x3c, 0x51, 0x7e, 0xbf, 0xc6, -0x4f, 0xe3, 0x59, 0x54, 0x55, 0x2c, 0x45, 0x65, 0xb4, 0xd9, -0x6b, 0x15, 0x88, 0x5b, 0x54, 0x66, 0xca, 0xf8, 0xbe, 0xf9, -0x7f, 0x88, 0xfe, 0x75, 0x3c, 0x7e, 0x38, 0xbd, 0x8f, 0xbb, -0x7e, 0x75, 0xcf, 0xd1, 0x5a, 0xac, 0x66, 0x22, 0x3b, 0x4d, -0x9a, 0xc7, 0x1f, 0x8a, 0x8e, 0xd5, 0x19, 0xdf, 0x68, 0xff, -0x00, 0x13, 0xae, 0x60, 0x70, 0x1d, 0x72, 0x3d, 0xeb, 0xbe, -0xd0, 0xbc, 0x6f, 0x06, 0xaa, 0xca, 0xae, 0x52, 0x32, 0x6b, -0xc0, 0xea, 0x6b, 0x4b, 0xc9, 0x6c, 0xa5, 0x12, 0x2b, 0xb7, -0x1d, 0xb3, 0x5e, 0xd6, 0x0f, 0x3e, 0xc5, 0x61, 0xda, 0x55, -0x1f, 0x34, 0x4f, 0xa2, 0xc0, 0x71, 0x36, 0x33, 0x0b, 0x24, -0xaa, 0xbe, 0x68, 0x9f, 0x4e, 0xa3, 0x87, 0x01, 0x94, 0x82, -0x0f, 0x43, 0x4f, 0xae, 0x13, 0xe1, 0xf7, 0x8b, 0x7f, 0xb4, -0xed, 0x52, 0x09, 0x88, 0x56, 0x5e, 0x06, 0x4f, 0x5a, 0xee, -0xeb, 0xf5, 0x1c, 0x26, 0x26, 0x18, 0xba, 0x4a, 0xad, 0x3d, -0x99, 0xfb, 0x36, 0x0b, 0x19, 0x4f, 0x1d, 0x42, 0x35, 0xa9, -0x3d, 0x18, 0x55, 0x4d, 0x46, 0xed, 0x6c, 0x2c, 0x67, 0x9d, -0xba, 0x46, 0x85, 0xbf, 0x4a, 0xb7, 0x5c, 0xc7, 0xc4, 0x2b, -0xbf, 0xb2, 0xf8, 0x66, 0xec, 0x67, 0x05, 0xe3, 0x20, 0x1f, -0xc2, 0xaf, 0x13, 0x57, 0xd8, 0xd1, 0x9d, 0x4e, 0xc9, 0x97, -0x8c, 0xad, 0xf5, 0x7c, 0x3c, 0xea, 0xf6, 0x4d, 0x9c, 0x6b, -0x7c, 0x52, 0x6f, 0x31, 0xb1, 0x28, 0xc6, 0x6a, 0x64, 0xf8, -0xa4, 0xdf, 0xf3, 0xd0, 0x57, 0x95, 0xed, 0x19, 0xe9, 0x46, -0xc1, 0xe9, 0x5f, 0x92, 0xac, 0xf7, 0x1b, 0xfc, 0xc7, 0xe1, -0xab, 0x89, 0x33, 0x14, 0xef, 0xce, 0x7a, 0xda, 0x7c, 0x51, -0xf5, 0x75, 0xa9, 0xe3, 0xf8, 0x9e, 0xbe, 0xa8, 0x7f, 0x0a, -0xf1, 0xdd, 0x82, 0x8d, 0xa2, 0xb4, 0x5c, 0x41, 0x8d, 0x5d, -0x4d, 0xe3, 0xc5, 0x19, 0x82, 0xfb, 0x47, 0xb4, 0xaf, 0xc4, -0xd8, 0x8f, 0x5d, 0x95, 0x32, 0xfc, 0x48, 0x80, 0xf5, 0xdb, -0x5e, 0x21, 0xb7, 0xdc, 0xd1, 0x82, 0x3f, 0x88, 0xd6, 0xcb, -0x88, 0xf1, 0x88, 0xde, 0x3c, 0x5b, 0x8f, 0x5b, 0x9e, 0xea, -0xbf, 0x11, 0x2d, 0x4f, 0x5d, 0xb5, 0x32, 0xf8, 0xfe, 0xcc, -0xfa, 0x57, 0x82, 0x86, 0x71, 0xfc, 0x66, 0x9c, 0x25, 0x94, -0x74, 0x90, 0xd6, 0xcb, 0x89, 0xb1, 0x4b, 0x74, 0x6f, 0x1e, -0x30, 0xc6, 0x2d, 0xe2, 0x7b, 0xf2, 0xf8, 0xea, 0xc8, 0xf7, -0x1f, 0x9d, 0x4a, 0xbe, 0x35, 0xb0, 0x3d, 0x5e, 0xbe, 0x7e, -0x17, 0x13, 0x0f, 0xf9, 0x6a, 0xd4, 0xa2, 0xf2, 0xe9, 0x7a, -0x4c, 0x6b, 0x55, 0xc5, 0x15, 0xd6, 0xf1, 0x37, 0x8f, 0x19, -0xe2, 0x56, 0xf0, 0x3e, 0x85, 0x4f, 0x17, 0x58, 0x37, 0xfc, -0xb4, 0xab, 0x56, 0x9a, 0xf5, 0xa5, 0xec, 0xbb, 0x23, 0x93, -0x2d, 0x5f, 0x39, 0x0d, 0x42, 0xec, 0x74, 0x98, 0xd7, 0x79, -0xf0, 0xb3, 0xed, 0x37, 0x97, 0xcf, 0x24, 0x8e, 0x59, 0x73, -0x8a, 0xf4, 0xf0, 0x5c, 0x43, 0x53, 0x17, 0x5e, 0x34, 0x79, -0x37, 0x3d, 0x7c, 0xbb, 0x8a, 0x6b, 0x63, 0x71, 0x30, 0xc3, -0xfb, 0x3d, 0xcf, 0x63, 0xa2, 0x8a, 0x2b, 0xee, 0xcf, 0xd2, -0xc2, 0x8a, 0x29, 0x92, 0x48, 0x22, 0x52, 0xcc, 0x70, 0xa2, -0x81, 0x37, 0x6d, 0x58, 0xfa, 0x4c, 0xe2, 0xb9, 0xbd, 0x6b, -0xc6, 0x96, 0x5a, 0x62, 0x61, 0x65, 0x47, 0x7f, 0x4c, 0xd7, -0x03, 0xac, 0xfc, 0x54, 0xb9, 0x97, 0x74, 0x71, 0x2e, 0x07, -0xb5, 0x78, 0xb8, 0xbc, 0xdf, 0x09, 0x84, 0xd2, 0x72, 0xbb, -0xf2, 0x3e, 0x7f, 0x1b, 0x9e, 0xe0, 0xb0, 0x3a, 0x4e, 0x77, -0x7d, 0x91, 0xeb, 0xc6, 0x78, 0xc7, 0x57, 0x5f, 0xce, 0xa1, -0x7d, 0x4a, 0xda, 0x3e, 0xb2, 0xaf, 0xe7, 0x5e, 0x01, 0x73, -0xe3, 0x1b, 0xdb, 0x90, 0x7f, 0x78, 0xe8, 0x4d, 0x50, 0x6d, -0x62, 0xf5, 0x8e, 0x7e, 0xd2, 0xff, 0x00, 0x9d, 0x7c, 0xed, -0x4e, 0x2a, 0xa6, 0xbe, 0x0a, 0x77, 0x3e, 0x52, 0xa7, 0x1a, -0xd2, 0x5f, 0xc3, 0xa4, 0xdf, 0xcc, 0xfa, 0x34, 0x6a, 0x96, -0xc7, 0xa4, 0x8b, 0x52, 0x25, 0xec, 0x32, 0x1c, 0x2c, 0x80, -0xd7, 0xcd, 0xcb, 0xad, 0x5f, 0xaf, 0x4b, 0xa7, 0xa9, 0xa0, -0xf1, 0x2e, 0xa5, 0x13, 0x03, 0xf6, 0x96, 0xa8, 0x8f, 0x15, -0x47, 0xed, 0x53, 0x64, 0x43, 0x8d, 0x60, 0xdf, 0xbd, 0x49, -0x9f, 0x49, 0x67, 0x34, 0xb5, 0xe1, 0x5a, 0x6f, 0xc4, 0x3b, -0xdb, 0x62, 0x3c, 0xd9, 0xc9, 0x15, 0xdd, 0xf8, 0x7b, 0xe2, -0x25, 0xad, 0xe2, 0x84, 0x99, 0xc1, 0x73, 0xef, 0x5e, 0xee, -0x17, 0x3d, 0xc2, 0x62, 0x9a, 0x8d, 0xf9, 0x5f, 0x99, 0xf4, -0x98, 0x2e, 0x24, 0xc1, 0x63, 0x1a, 0x8d, 0xf9, 0x5f, 0x99, -0xdd, 0x51, 0x50, 0x5b, 0x5c, 0xa5, 0xdc, 0x61, 0xd0, 0xe5, -0x4d, 0x4f, 0x5f, 0x42, 0x9a, 0x92, 0xba, 0x3e, 0xa9, 0x35, -0x25, 0x74, 0x14, 0x51, 0x45, 0x31, 0x85, 0x14, 0x51, 0x40, -0x05, 0x14, 0x51, 0x40, 0x05, 0x14, 0x9d, 0x2a, 0xbd, 0xd5, -0xf4, 0x36, 0x71, 0x97, 0x91, 0xc2, 0x81, 0xef, 0x49, 0xb5, -0x15, 0x76, 0x4c, 0xa4, 0xa2, 0xaf, 0x26, 0x59, 0xa2, 0xb9, -0xe9, 0xbc, 0x6d, 0xa6, 0xc1, 0xf7, 0xa4, 0x03, 0xf1, 0xaa, -0x13, 0x7c, 0x4a, 0xd2, 0xd3, 0x81, 0x20, 0x3f, 0x56, 0xae, -0x19, 0x63, 0xf0, 0xb0, 0xf8, 0xaa, 0x23, 0xce, 0x9e, 0x67, -0x83, 0xa7, 0xf1, 0x55, 0x5f, 0x79, 0xd8, 0x51, 0x5c, 0x62, -0xfc, 0x4a, 0xd3, 0xcf, 0xfc, 0xb4, 0x4f, 0xce, 0xa7, 0x8b, -0xe2, 0x1e, 0x9c, 0xe7, 0xfd, 0x6a, 0x7f, 0xdf, 0x55, 0x0b, -0x32, 0xc2, 0x4b, 0x6a, 0x88, 0xce, 0x39, 0xb6, 0x06, 0x5b, -0x55, 0x5f, 0x79, 0xd6, 0x51, 0x58, 0xb6, 0xbe, 0x2b, 0xd3, -0xae, 0x71, 0x8b, 0x84, 0x04, 0xff, 0x00, 0xb5, 0x5a, 0x09, -0xa8, 0xda, 0xcb, 0xf7, 0x27, 0x43, 0xf8, 0xd7, 0x5c, 0x2b, -0xd2, 0x9e, 0xb1, 0x92, 0x7f, 0x33, 0xbe, 0x18, 0x8a, 0x35, -0x15, 0xe1, 0x34, 0xfe, 0x65, 0xaa, 0x6b, 0x8d, 0xca, 0x41, -0xa1, 0x18, 0x30, 0xc8, 0x39, 0xfa, 0x52, 0x48, 0xdb, 0x50, -0x9a, 0xdc, 0xe8, 0x39, 0xdd, 0x5e, 0x15, 0x65, 0x60, 0x54, -0x66, 0xbc, 0xb3, 0xc6, 0xbe, 0x12, 0xd3, 0x35, 0xb8, 0x5e, -0x2b, 0xdb, 0x18, 0x6e, 0x14, 0xff, 0x00, 0x7d, 0x01, 0x3f, -0x9d, 0x7a, 0x9e, 0xab, 0x20, 0x20, 0xd7, 0x0f, 0xae, 0x30, -0x65, 0x6a, 0x89, 0xd3, 0x85, 0x45, 0xcb, 0x35, 0x74, 0x67, -0x3a, 0x50, 0xab, 0x1e, 0x59, 0xc5, 0x35, 0xe6, 0x7c, 0xff, -0x00, 0x6f, 0xa1, 0x6b, 0x5f, 0x08, 0xb5, 0xb5, 0xd5, 0xfc, -0x15, 0xa8, 0xcf, 0x0a, 0x23, 0x16, 0x97, 0x47, 0xb9, 0x94, -0x9b, 0x3b, 0x80, 0x7a, 0xab, 0x2f, 0x18, 0x3e, 0x8c, 0x39, -0x06, 0xbe, 0x9f, 0xf8, 0x5d, 0xf1, 0x3b, 0x4e, 0xf8, 0x9b, -0xa0, 0x7d, 0xae, 0xd5, 0xd6, 0x1d, 0x46, 0xdc, 0x88, 0xaf, -0xec, 0x0e, 0x43, 0xdb, 0x4d, 0x80, 0x4a, 0x9c, 0xf5, 0x1e, -0x8c, 0x38, 0x3d, 0x8f, 0x07, 0x1e, 0x25, 0xe2, 0x68, 0xc3, -0x23, 0xf3, 0x5e, 0x31, 0xa9, 0xf8, 0xaf, 0x50, 0xf8, 0x7b, -0xe2, 0x28, 0xb5, 0xfd, 0x26, 0xe3, 0xec, 0xd7, 0xf6, 0xed, -0x9c, 0x91, 0x95, 0x95, 0x7b, 0xa3, 0x0e, 0xea, 0x7a, 0x7f, -0x2c, 0x1a, 0xe3, 0xa7, 0x86, 0x8e, 0x16, 0xee, 0x8e, 0x91, -0xed, 0xd3, 0xe5, 0xd8, 0xe0, 0xa5, 0x84, 0x86, 0x0a, 0xee, -0x86, 0x91, 0xeb, 0x1e, 0x9f, 0x2e, 0xc7, 0xe8, 0x40, 0x7c, -0xd3, 0x95, 0xab, 0xce, 0x3e, 0x0c, 0x7c, 0x65, 0xd1, 0xbe, -0x33, 0x78, 0x55, 0x75, 0x5d, 0x36, 0x44, 0x8e, 0xee, 0x22, -0x23, 0xbd, 0xb1, 0xde, 0x19, 0xed, 0xa4, 0xf4, 0x3d, 0xf0, -0x7a, 0x83, 0x8e, 0x45, 0x7a, 0x08, 0x71, 0x5d, 0xc9, 0xa9, -0x2b, 0xa3, 0xd1, 0x8c, 0x94, 0x95, 0xd1, 0x63, 0x39, 0xa7, -0x66, 0xa1, 0x56, 0xe2, 0x9e, 0x1a, 0x99, 0x44, 0x94, 0xa0, -0xd3, 0x41, 0xcf, 0x7a, 0x5a, 0x00, 0x7d, 0x14, 0xd0, 0x69, -0xd4, 0x00, 0x51, 0x45, 0x14, 0x00, 0x53, 0x4f, 0x5a, 0x53, -0xd2, 0x9b, 0x40, 0x06, 0x71, 0x51, 0xb9, 0xa7, 0x31, 0xa8, -0xd9, 0xb8, 0xa0, 0x08, 0xdf, 0xbd, 0x55, 0x95, 0xf1, 0x9a, -0x9a, 0x56, 0xe2, 0xa9, 0xca, 0xf4, 0x01, 0x04, 0xef, 0xc5, -0x7c, 0xb9, 0xf1, 0x59, 0xc7, 0x8e, 0x7f, 0x69, 0xef, 0x0d, -0x68, 0x8a, 0xbb, 0xed, 0xf4, 0x2b, 0x25, 0xb8, 0x97, 0x38, -0x20, 0x49, 0x23, 0x16, 0x23, 0xfe, 0xf9, 0x58, 0xff, 0x00, -0x3a, 0xfa, 0x66, 0xf2, 0x75, 0x89, 0x1d, 0xd8, 0xe1, 0x54, -0x16, 0x24, 0xf6, 0x15, 0xf2, 0xef, 0xec, 0xf5, 0x3f, 0xfc, -0x2c, 0x1f, 0x8c, 0x3e, 0x3e, 0xf1, 0x63, 0x0d, 0xe8, 0xd7, -0x62, 0x08, 0x19, 0x86, 0x70, 0x83, 0x2a, 0x30, 0x7e, 0x8a, -0x3f, 0x3a, 0xf0, 0xf3, 0x3b, 0x55, 0x95, 0x1c, 0x37, 0xf3, -0x49, 0x7d, 0xd1, 0xd7, 0xfc, 0x8f, 0x9c, 0xce, 0x1a, 0xad, -0x2c, 0x3e, 0x13, 0xf9, 0xe6, 0x9b, 0xf4, 0x8f, 0xbc, 0xff, -0x00, 0x24, 0x7d, 0x69, 0xe1, 0xeb, 0x6f, 0x2a, 0xdd, 0x07, -0xa0, 0xad, 0xca, 0xa7, 0xa6, 0xc5, 0xe5, 0xc2, 0x3e, 0x95, -0x72, 0xbd, 0xc3, 0xe8, 0xc2, 0xb9, 0xbf, 0x88, 0xba, 0xe2, -0xf8, 0x73, 0xc1, 0x7a, 0xad, 0xfb, 0x36, 0xd3, 0x1c, 0x0d, -0x83, 0xef, 0x8a, 0xe9, 0x2b, 0xc7, 0x3f, 0x6a, 0xcb, 0xc9, -0x6c, 0xbe, 0x0f, 0xeb, 0x12, 0x23, 0x14, 0x44, 0x89, 0x9d, -0xdb, 0x38, 0xe0, 0x0a, 0x00, 0xfc, 0x2b, 0xfd, 0xa6, 0x3c, -0x55, 0x2f, 0x8f, 0xfe, 0x35, 0x5d, 0x86, 0x90, 0xca, 0xa2, -0x72, 0xa0, 0x93, 0x9e, 0xf5, 0xfa, 0xd5, 0xff, 0x00, 0x04, -0xd6, 0xf8, 0x43, 0xa7, 0xf8, 0x23, 0xe0, 0x92, 0x6b, 0xb2, -0x5a, 0xc4, 0x2f, 0x2f, 0x9c, 0xc8, 0x24, 0xd8, 0x32, 0x14, -0x7b, 0xd7, 0xe2, 0x6e, 0xa5, 0xad, 0xb5, 0xd7, 0x8f, 0x2e, -0x75, 0x09, 0x72, 0xde, 0x65, 0xd1, 0x6c, 0xb1, 0xed, 0xbb, -0xfc, 0x2b, 0xf6, 0x87, 0xf6, 0x5c, 0xfd, 0xa9, 0xfc, 0x1f, -0x6d, 0xf0, 0x1a, 0xd3, 0x4b, 0x9a, 0xfa, 0x1d, 0x3e, 0x5b, -0x2b, 0x73, 0x1a, 0xab, 0x3a, 0xee, 0x63, 0xc9, 0x27, 0xad, -0x00, 0x7c, 0x67, 0xff, 0x00, 0x05, 0x5c, 0xf8, 0x8e, 0xfe, -0x21, 0xf8, 0x8d, 0xa7, 0x68, 0x31, 0x4a, 0xcc, 0x90, 0xee, -0x76, 0x4c, 0xf1, 0x5f, 0x67, 0x7f, 0xc1, 0x30, 0xbc, 0x00, -0xbe, 0x14, 0xf8, 0x47, 0x75, 0xad, 0x4d, 0x18, 0x8d, 0xee, -0x40, 0x01, 0x88, 0xe7, 0x68, 0xe4, 0xff, 0x00, 0x21, 0x5f, -0x95, 0x5f, 0xb4, 0x47, 0x8d, 0x23, 0xf8, 0xb3, 0xfb, 0x42, -0xea, 0x17, 0xc9, 0x3f, 0x99, 0x68, 0x26, 0xf2, 0xd1, 0x98, -0xe4, 0x60, 0x1e, 0xd5, 0xfa, 0x67, 0xae, 0xfe, 0xd5, 0xde, -0x0e, 0xfd, 0x99, 0xff, 0x00, 0x67, 0x5d, 0x33, 0x40, 0xb0, -0x99, 0x6f, 0xf5, 0x79, 0xec, 0x7f, 0xe5, 0xd1, 0xd7, 0xf7, -0x6c, 0x47, 0x53, 0x93, 0xd6, 0x80, 0x3e, 0x54, 0xff, 0x00, -0x82, 0xa2, 0xfc, 0x56, 0x8f, 0xc4, 0xfe, 0x2c, 0xfe, 0xc8, -0xb7, 0x97, 0x7a, 0xac, 0xd9, 0x60, 0x1b, 0x3d, 0x2b, 0x73, -0xfe, 0x09, 0x0d, 0xf0, 0xe4, 0xea, 0xff, 0x00, 0x11, 0x75, -0x1f, 0x10, 0x49, 0x16, 0xe8, 0xac, 0xa3, 0x0a, 0xac, 0x47, -0x7e, 0xbf, 0xd6, 0xbe, 0x21, 0xf1, 0x27, 0x89, 0x35, 0x7f, -0x8d, 0x1f, 0x10, 0x16, 0x59, 0xa4, 0x96, 0x7b, 0x8b, 0xc9, -0xce, 0xd0, 0xf9, 0x24, 0x64, 0xe6, 0xbf, 0x6c, 0xff, 0x00, -0xe0, 0x9c, 0x9f, 0x01, 0xff, 0x00, 0xe1, 0x50, 0xfc, 0x21, -0x37, 0x57, 0x51, 0xa0, 0xbf, 0xd4, 0x64, 0xde, 0x58, 0x29, -0x07, 0x6e, 0x07, 0xaf, 0xf9, 0xe2, 0x80, 0x3e, 0xb3, 0x99, -0xbc, 0xb8, 0x99, 0xbd, 0x06, 0x6b, 0xc0, 0x3c, 0x79, 0x7d, -0xf6, 0xed, 0x7e, 0x4e, 0x72, 0x13, 0x8a, 0xf7, 0x2d, 0x7a, -0xe8, 0x59, 0xe9, 0x37, 0x12, 0x93, 0xd1, 0x4d, 0x7c, 0xe7, -0x7f, 0x72, 0x6f, 0x2f, 0xa7, 0x98, 0xff, 0x00, 0x13, 0x1a, -0xf8, 0x2e, 0x29, 0xaf, 0x68, 0x42, 0x8a, 0xeb, 0xa9, 0xf9, -0x97, 0x1a, 0x62, 0x2d, 0x4e, 0x9e, 0x1d, 0x3d, 0xf5, 0x2b, -0xd1, 0x45, 0x15, 0xf9, 0xc9, 0xf9, 0x38, 0x51, 0x52, 0xdb, -0x5b, 0xbd, 0xd4, 0xeb, 0x12, 0x0c, 0xb3, 0x1e, 0x2b, 0xa1, -0x4f, 0x00, 0xea, 0x32, 0x20, 0x71, 0x13, 0x73, 0xf5, 0xae, -0x9a, 0x58, 0x6a, 0xd5, 0xee, 0xe9, 0x46, 0xe7, 0x5d, 0x1c, -0x25, 0x7c, 0x4d, 0xdd, 0x18, 0x37, 0x63, 0x99, 0xa2, 0xba, -0x49, 0x7c, 0x09, 0xa8, 0x46, 0xb9, 0xf2, 0x5c, 0xfe, 0x15, -0x97, 0x75, 0xa1, 0x5f, 0x5a, 0x1f, 0x9a, 0xda, 0x4c, 0x7d, -0x29, 0xcf, 0x0b, 0x5e, 0x9f, 0xc7, 0x06, 0x8a, 0xa9, 0x82, -0xc4, 0xd1, 0x57, 0x9d, 0x36, 0xbe, 0x46, 0x7d, 0x14, 0xe6, -0x46, 0x8d, 0xb0, 0xea, 0x54, 0xfa, 0x1a, 0x6d, 0x73, 0x1c, -0x41, 0x45, 0x14, 0x52, 0x03, 0x67, 0xc2, 0x9a, 0x9b, 0x69, -0xda, 0xb4, 0x4c, 0x09, 0xe4, 0xf4, 0xcd, 0x7d, 0x0b, 0x63, -0x38, 0xb8, 0xb6, 0x8d, 0xc1, 0xce, 0x45, 0x7c, 0xcb, 0x6c, -0xfe, 0x5d, 0xc4, 0x6c, 0x3a, 0x83, 0xc5, 0x7d, 0x11, 0xe1, -0x47, 0xdf, 0xa2, 0xc1, 0x93, 0x96, 0xc7, 0x35, 0xfa, 0x0f, -0x0b, 0x56, 0x93, 0xe7, 0xa4, 0xf6, 0x3f, 0x52, 0xe0, 0xbc, -0x44, 0x9f, 0xb4, 0xa0, 0xf6, 0x5a, 0x9b, 0x55, 0xe6, 0xff, -0x00, 0x17, 0xb5, 0x1f, 0x2a, 0xc6, 0x3b, 0x70, 0x79, 0x7e, -0xb5, 0xe8, 0xf9, 0xe0, 0x9a, 0xf0, 0xef, 0x8a, 0x5a, 0xaf, -0xdb, 0x35, 0xd3, 0x0a, 0x9f, 0x96, 0x31, 0x5e, 0xf7, 0x10, -0x57, 0xf6, 0x38, 0x19, 0x2e, 0xb2, 0xd0, 0xfa, 0x5e, 0x28, -0xc4, 0xac, 0x3e, 0x5d, 0x25, 0x7d, 0x65, 0xa1, 0xc5, 0xd1, -0x46, 0x68, 0xcd, 0x7e, 0x40, 0x7e, 0x0e, 0x14, 0x51, 0x45, -0x03, 0x0a, 0x28, 0xa2, 0x80, 0x0a, 0x28, 0xa2, 0x80, 0x0a, -0x28, 0xa2, 0x80, 0x0a, 0xf6, 0x0f, 0x84, 0x96, 0x5b, 0x74, -0xc1, 0x39, 0x1f, 0x7b, 0x26, 0xbc, 0x7c, 0x8d, 0xd8, 0x03, -0xa9, 0x38, 0xaf, 0xa0, 0x7c, 0x05, 0x63, 0xf6, 0x1f, 0x0f, -0xdb, 0x0c, 0x60, 0x95, 0xaf, 0xad, 0xe1, 0xaa, 0x5e, 0xd3, -0x18, 0xe5, 0xfc, 0xa8, 0xfb, 0x8e, 0x10, 0xa1, 0xed, 0x71, -0xee, 0xa7, 0x48, 0xa3, 0xa5, 0xa2, 0x8a, 0xce, 0xd6, 0x35, -0x98, 0x34, 0x6b, 0x66, 0x96, 0x66, 0xc6, 0x07, 0x03, 0x3d, -0x6b, 0xf5, 0x39, 0xce, 0x34, 0xe2, 0xe5, 0x27, 0x64, 0x8f, -0xda, 0x6a, 0x54, 0x8d, 0x28, 0xb9, 0xcd, 0xd9, 0x22, 0x7b, -0xdb, 0xf8, 0xb4, 0xeb, 0x76, 0x9a, 0x66, 0xda, 0xaa, 0x32, -0x6b, 0xc9, 0x7c, 0x59, 0xf1, 0x22, 0x6b, 0x99, 0x5e, 0x1b, -0x36, 0xfd, 0xd7, 0x4e, 0x0d, 0x64, 0xf8, 0xb3, 0xc7, 0x97, -0x3a, 0xf4, 0xa5, 0x21, 0x67, 0x8a, 0x0e, 0x98, 0x3d, 0xeb, -0x93, 0xaf, 0xcd, 0x33, 0x6c, 0xfa, 0x55, 0xdb, 0xa5, 0x85, -0x76, 0x8f, 0x7e, 0xe7, 0xe4, 0x39, 0xe7, 0x13, 0x4f, 0x10, -0xdd, 0x0c, 0x1b, 0xb4, 0x7a, 0xbe, 0xe4, 0xb7, 0x57, 0x52, -0xde, 0x49, 0xbe, 0x46, 0x24, 0xf5, 0xeb, 0x51, 0x51, 0x45, -0x7c, 0x5b, 0x6e, 0x4e, 0xec, 0xfc, 0xf5, 0xb7, 0x27, 0xcd, -0x27, 0x76, 0x14, 0x51, 0x45, 0x21, 0x05, 0x14, 0x51, 0x40, -0x06, 0x07, 0xa5, 0x49, 0x0d, 0xc4, 0xb6, 0xec, 0x1a, 0x33, -0x83, 0x51, 0xd1, 0x4d, 0x69, 0xaa, 0x04, 0xda, 0x77, 0x47, -0x79, 0xe1, 0x1f, 0x1d, 0xcb, 0x67, 0x2a, 0x45, 0x71, 0x29, -0x2b, 0xf5, 0xaf, 0x5f, 0xd3, 0x6f, 0xe3, 0xd4, 0xad, 0x96, -0x68, 0xce, 0x54, 0x8a, 0xf9, 0x90, 0x12, 0xad, 0xb9, 0x4e, -0x0d, 0x7a, 0x27, 0xc3, 0xcf, 0x19, 0xbd, 0xbd, 0xc2, 0x5a, -0xce, 0xcc, 0xea, 0xdc, 0x0e, 0x78, 0x15, 0xf6, 0xf9, 0x1e, -0x73, 0x28, 0x4d, 0x61, 0xeb, 0xbd, 0x1e, 0xcc, 0xfd, 0x1f, -0x87, 0x38, 0x82, 0x54, 0xea, 0x2c, 0x2e, 0x25, 0xe8, 0xf6, -0x67, 0xb1, 0x51, 0x4c, 0x8e, 0x41, 0x22, 0x86, 0x5e, 0x41, -0xef, 0x4f, 0xaf, 0xd2, 0xf7, 0x3f, 0x5d, 0x4e, 0xfa, 0x85, -0x14, 0x51, 0x40, 0xc2, 0xa8, 0xea, 0x1a, 0xb5, 0xbe, 0x9d, -0x13, 0x3c, 0xb2, 0x01, 0x8e, 0xd9, 0xac, 0x3f, 0x15, 0xf8, -0xde, 0xdf, 0xc3, 0xf1, 0x94, 0x07, 0x7c, 0xe7, 0xa0, 0x06, -0xbc, 0x6f, 0x5c, 0xf1, 0x4d, 0xde, 0xb9, 0x3b, 0x33, 0x49, -0x22, 0x2f, 0xa0, 0x35, 0xf3, 0x19, 0x9e, 0x79, 0x47, 0x03, -0x78, 0x43, 0xde, 0x9f, 0x63, 0xe3, 0xf3, 0x8e, 0x23, 0xa1, -0x97, 0x5e, 0x9c, 0x3d, 0xe9, 0xf6, 0xec, 0x77, 0x9e, 0x22, -0xf8, 0xa4, 0x80, 0x34, 0x50, 0x29, 0x1d, 0xb2, 0x2b, 0x84, -0xd4, 0xbc, 0x57, 0x7d, 0x7f, 0xd2, 0x77, 0x0b, 0xe9, 0x9a, -0xc7, 0x24, 0x9e, 0xbc, 0xfd, 0x69, 0x2b, 0xf3, 0x9c, 0x56, -0x69, 0x8a, 0xc5, 0xbb, 0xce, 0x5a, 0x1f, 0x93, 0x63, 0x73, -0x9c, 0x6e, 0x3a, 0x4d, 0xd4, 0x9d, 0x97, 0x64, 0x4c, 0xf7, -0xb7, 0x12, 0x7d, 0xf9, 0x09, 0xfa, 0xd4, 0x44, 0x96, 0x39, -0x3c, 0xd2, 0x51, 0x5e, 0x53, 0x6d, 0xee, 0xcf, 0x11, 0xca, -0x52, 0xdd, 0xdc, 0x36, 0x8a, 0x3a, 0x51, 0x45, 0x22, 0x6c, -0x4f, 0x15, 0xec, 0xb0, 0x60, 0xab, 0x1e, 0x3d, 0xeb, 0x4e, -0xd7, 0xc5, 0xb7, 0x76, 0xa4, 0x63, 0x71, 0x03, 0xfd, 0xaa, -0xc5, 0xa2, 0xb6, 0xa7, 0x5a, 0xad, 0x2f, 0x82, 0x56, 0x3a, -0x69, 0xe2, 0x2b, 0x51, 0xfe, 0x1c, 0x9a, 0x3d, 0x6b, 0xc1, -0xbf, 0x10, 0x25, 0xd4, 0x25, 0x16, 0xee, 0x9f, 0x8e, 0x6b, -0xbb, 0xbc, 0xba, 0x02, 0x21, 0xce, 0x32, 0x33, 0x5e, 0x49, -0xf0, 0xc3, 0x47, 0x69, 0xe6, 0x7b, 0x93, 0xd3, 0x38, 0x15, -0xe9, 0x5a, 0xa4, 0x9b, 0x46, 0x07, 0x61, 0x5f, 0xac, 0x64, -0x35, 0xab, 0xd7, 0xc2, 0xa9, 0xd7, 0x77, 0xec, 0x7e, 0xdf, -0xc3, 0x55, 0xf1, 0x38, 0x9c, 0x1a, 0xa9, 0x89, 0x77, 0xec, -0x64, 0xea, 0xb7, 0x83, 0x69, 0xe6, 0xb8, 0x9d, 0x66, 0xf3, -0xef, 0x73, 0x5b, 0x7a, 0xc4, 0xe4, 0x2b, 0x73, 0x5c, 0x1e, -0xb7, 0x7a, 0x50, 0x37, 0x35, 0xf4, 0xa7, 0xd7, 0x1c, 0xcf, -0x88, 0x6e, 0xb2, 0x1e, 0xbe, 0x61, 0xf8, 0xd1, 0xaf, 0x0b, -0x7f, 0xb4, 0x28, 0x6c, 0x6d, 0xc8, 0xeb, 0x5e, 0xf5, 0xe2, -0x4d, 0x5c, 0xc5, 0x1c, 0xad, 0x93, 0x80, 0x2b, 0xe3, 0x8f, -0x8d, 0xbe, 0x25, 0xf3, 0xef, 0x2e, 0x23, 0x0c, 0x72, 0x58, -0x8a, 0xf2, 0x33, 0x2a, 0xde, 0xc6, 0x8d, 0xd7, 0x53, 0xc3, -0xcd, 0xf1, 0x1f, 0x57, 0xa1, 0x75, 0xbb, 0x33, 0xbe, 0x03, -0x7e, 0xd1, 0x5a, 0x87, 0xc1, 0x4f, 0x8b, 0x76, 0xba, 0xaa, -0xcf, 0x2f, 0xf6, 0x45, 0xd3, 0x88, 0x2f, 0xa0, 0x12, 0x10, -0x8e, 0x84, 0xf0, 0x58, 0x77, 0xc1, 0x3d, 0x7b, 0x64, 0xd7, -0xec, 0x57, 0x86, 0xbc, 0x47, 0x65, 0xe2, 0x9d, 0x12, 0xd3, -0x54, 0xb0, 0x97, 0xcd, 0xb4, 0xb9, 0x40, 0xe8, 0x48, 0xc1, -0x1e, 0xc7, 0xdc, 0x57, 0xf3, 0xf1, 0xe2, 0x09, 0x37, 0x2b, -0xd7, 0xe9, 0x17, 0xfc, 0x13, 0x33, 0xf6, 0x84, 0x93, 0xc6, -0x5e, 0x16, 0xb8, 0xf0, 0x6e, 0xa7, 0x72, 0xf3, 0x5f, 0x69, -0xdf, 0x24, 0x6d, 0x23, 0x64, 0xe0, 0x0c, 0xa9, 0xfc, 0x54, -0x7e, 0x68, 0x6b, 0x9f, 0x2a, 0xad, 0x29, 0xc1, 0xc2, 0x47, -0x26, 0x49, 0x88, 0x9d, 0x4a, 0x6e, 0x13, 0x3e, 0xfb, 0x47, -0xc9, 0xa9, 0x83, 0x55, 0x18, 0xa4, 0xf7, 0xab, 0x09, 0x25, -0x7b, 0xe7, 0xd3, 0x96, 0x83, 0x53, 0xf7, 0x55, 0x75, 0x6c, -0xd4, 0xaa, 0x72, 0x28, 0x02, 0x4a, 0x70, 0x39, 0xa6, 0x03, -0x4b, 0x40, 0x0f, 0xa2, 0x90, 0x1a, 0x5a, 0x00, 0x46, 0xe9, -0x4d, 0xa5, 0x6e, 0xb4, 0x87, 0xa5, 0x00, 0x46, 0xc6, 0xa1, -0x73, 0xc5, 0x4a, 0xf5, 0x0b, 0x9c, 0x50, 0x04, 0x12, 0x9e, -0x2a, 0x94, 0xcd, 0x80, 0x6a, 0xd4, 0xad, 0x8a, 0xa1, 0x72, -0x70, 0x0d, 0x00, 0x79, 0xef, 0xc7, 0x0f, 0x16, 0x9f, 0x05, -0xfc, 0x2b, 0xf1, 0x36, 0xb0, 0xa4, 0x89, 0x60, 0xb3, 0x64, -0x88, 0x83, 0xff, 0x00, 0x2d, 0x1c, 0x88, 0xd3, 0xff, 0x00, -0x1e, 0x75, 0xaf, 0x3a, 0xfd, 0x89, 0xfc, 0x2a, 0x74, 0xaf, -0x87, 0xef, 0x77, 0x22, 0x91, 0x25, 0xe4, 0xe6, 0x4c, 0x9e, -0xa4, 0x01, 0x81, 0xfd, 0x6b, 0x27, 0xf6, 0xd6, 0xd7, 0x9c, -0x78, 0x4b, 0x41, 0xf0, 0xec, 0x2e, 0x04, 0x9a, 0xa6, 0xa0, -0xac, 0xe9, 0x93, 0xb8, 0xa2, 0x0e, 0x3f, 0x0d, 0xc4, 0x7e, -0x42, 0xbd, 0xcf, 0xe0, 0x9f, 0x87, 0x53, 0xc3, 0xbe, 0x0c, -0xd3, 0x2c, 0xd1, 0x42, 0xf9, 0x50, 0xa0, 0x20, 0x0e, 0xf8, -0xaf, 0x9d, 0xff, 0x00, 0x78, 0xcd, 0xbc, 0xa9, 0xc7, 0xf1, -0x97, 0xfc, 0x03, 0xe5, 0x17, 0xfb, 0x56, 0x79, 0xa6, 0xd4, -0x61, 0xf8, 0xcb, 0xfe, 0x01, 0xe9, 0xb0, 0x2e, 0xc8, 0xc0, -0xa9, 0x29, 0x07, 0x03, 0x14, 0xb5, 0xf4, 0x47, 0xd5, 0x85, -0x79, 0x07, 0xed, 0x57, 0xa2, 0x5d, 0xf8, 0x8b, 0xe0, 0xbe, -0xb9, 0xa7, 0xd9, 0xa9, 0x67, 0x9a, 0x32, 0x18, 0x81, 0x9c, -0x2e, 0x0e, 0x6b, 0xd7, 0xeb, 0x3b, 0xc4, 0x1a, 0x52, 0x6b, -0x7a, 0x35, 0xdd, 0x8c, 0x83, 0x29, 0x3c, 0x65, 0x0f, 0xe3, -0x40, 0x1f, 0xcc, 0x47, 0x8e, 0xf4, 0xd3, 0xa4, 0x78, 0xab, -0x51, 0xb6, 0xc6, 0xd1, 0x14, 0xce, 0x80, 0x63, 0x1d, 0x0e, -0x29, 0xfa, 0x3f, 0x8e, 0xb5, 0x2d, 0x16, 0xd5, 0xa0, 0xb7, -0x9e, 0x45, 0x56, 0x04, 0x70, 0xf5, 0xf5, 0xbf, 0xed, 0xc5, -0xfb, 0x28, 0xea, 0x9e, 0x06, 0xf1, 0xa5, 0xe6, 0xa5, 0x6b, -0x6f, 0x15, 0xbd, 0x84, 0xce, 0xcf, 0x1a, 0x05, 0xe7, 0x19, -0x27, 0x3c, 0x0a, 0xf8, 0xae, 0xee, 0xd2, 0x4b, 0x39, 0xda, -0x27, 0x1f, 0x32, 0x9c, 0x50, 0x04, 0xd0, 0xea, 0x72, 0xc5, -0x7a, 0x6e, 0x49, 0x26, 0x52, 0x72, 0x5b, 0x3c, 0xe6, 0xae, -0xeb, 0x9e, 0x2e, 0xd4, 0xfc, 0x40, 0xea, 0x6e, 0xee, 0xe5, -0x99, 0x14, 0x6d, 0x0a, 0xed, 0x9e, 0x2b, 0x2e, 0xda, 0xd9, -0xee, 0xa4, 0x09, 0x18, 0xcb, 0x1e, 0xd5, 0xf4, 0xf7, 0xec, -0xcd, 0xfb, 0x15, 0xf8, 0x9b, 0xe2, 0xe7, 0x89, 0x2d, 0x5a, -0xf2, 0xd0, 0x47, 0xa4, 0x30, 0xdc, 0xd2, 0x1c, 0xf3, 0xcf, -0xd2, 0x80, 0x3b, 0x3f, 0xf8, 0x27, 0x5f, 0xec, 0xc3, 0x79, -0xf1, 0x3b, 0xe2, 0x65, 0x8e, 0xb1, 0x7f, 0x6d, 0x22, 0xe9, -0x96, 0xe3, 0xcc, 0x12, 0x32, 0x1d, 0xa7, 0xf1, 0xaf, 0xdc, -0x2d, 0x0b, 0x46, 0x83, 0x40, 0xd2, 0x6d, 0xac, 0x2d, 0x94, -0x24, 0x30, 0x20, 0x50, 0x05, 0x70, 0x9f, 0x02, 0xbe, 0x09, -0xe8, 0xbf, 0x05, 0xbc, 0x17, 0x61, 0xa4, 0x69, 0x96, 0xf1, -0xa4, 0x91, 0x44, 0x16, 0x49, 0x02, 0x8c, 0x93, 0xf5, 0xc0, -0xaf, 0x4b, 0xa0, 0x0e, 0x43, 0xe2, 0x55, 0xff, 0x00, 0xd9, -0x3c, 0x3d, 0x38, 0x07, 0x96, 0x15, 0xe1, 0x03, 0xa5, 0x7a, -0xaf, 0xc5, 0xdd, 0x43, 0x10, 0x24, 0x00, 0xfd, 0xe3, 0x8c, -0x57, 0x95, 0x57, 0xe4, 0xbc, 0x47, 0x5b, 0xda, 0xe3, 0x79, -0x7f, 0x95, 0x58, 0xfc, 0x37, 0x8b, 0x2b, 0xfb, 0x6c, 0xc1, -0xc5, 0x7d, 0x95, 0x60, 0xa2, 0x8a, 0x2b, 0xe5, 0x8f, 0x8c, -0x3a, 0x7f, 0x87, 0x96, 0x22, 0xf7, 0xc4, 0x09, 0x9e, 0x91, -0x8c, 0xd7, 0xbd, 0x45, 0x18, 0x48, 0xd5, 0x40, 0x18, 0x02, -0xbc, 0x8f, 0xe0, 0xed, 0x8f, 0x9b, 0x7d, 0x75, 0x39, 0xed, -0x80, 0x2b, 0xd8, 0x6b, 0xf5, 0x7e, 0x1b, 0xa2, 0xa1, 0x83, -0xe7, 0xfe, 0x66, 0x7e, 0xdb, 0xc2, 0x34, 0x3d, 0x9e, 0x5f, -0xed, 0x1a, 0xd6, 0x4d, 0x8c, 0x31, 0xa9, 0xea, 0x07, 0xe5, -0x54, 0x6f, 0xb4, 0x5b, 0x7b, 0xd4, 0x21, 0x90, 0x03, 0xeb, -0x8a, 0xd1, 0xa2, 0xbe, 0xa6, 0x50, 0x8c, 0xd5, 0xa4, 0xae, -0x7d, 0x9c, 0xe9, 0xc2, 0xa2, 0xe5, 0x9a, 0xb9, 0xe1, 0xff, -0x00, 0x10, 0xfc, 0x2e, 0xba, 0x4d, 0xe7, 0x99, 0x16, 0x48, -0x61, 0xda, 0xb8, 0x9a, 0xf6, 0xbf, 0x8a, 0xb1, 0x20, 0xd2, -0x3c, 0xc3, 0xf7, 0xfa, 0x0a, 0xf1, 0x4c, 0x62, 0xbf, 0x1f, -0xcf, 0x30, 0xd0, 0xc2, 0xe3, 0x1c, 0x61, 0xb3, 0xd4, 0xfc, -0x1f, 0x88, 0xf0, 0x94, 0xf0, 0x78, 0xf9, 0x46, 0x9e, 0x89, -0xea, 0x14, 0x51, 0x45, 0x7c, 0xf9, 0xf2, 0xe4, 0xd6, 0x51, -0xf9, 0xb7, 0x91, 0x2f, 0xbd, 0x7d, 0x11, 0xe1, 0x68, 0x4c, -0x3a, 0x3c, 0x20, 0xf5, 0x23, 0x35, 0xe1, 0x1e, 0x18, 0xb3, -0x37, 0x9a, 0xb4, 0x4a, 0x06, 0x79, 0x02, 0xbe, 0x87, 0xb3, -0x87, 0xc8, 0xb5, 0x8e, 0x31, 0xfc, 0x2a, 0x05, 0x7e, 0x83, -0xc2, 0xb4, 0x9f, 0xef, 0x2a, 0xbf, 0x43, 0xf5, 0x2e, 0x0a, -0xa0, 0xff, 0x00, 0x79, 0x59, 0xfa, 0x13, 0x32, 0xee, 0x04, -0x7a, 0xd7, 0x0d, 0xab, 0x7c, 0x39, 0xb7, 0xd4, 0xaf, 0x24, -0x9d, 0xd4, 0x96, 0x63, 0x5d, 0xdd, 0x15, 0xf6, 0xf8, 0x8c, -0x2d, 0x2c, 0x52, 0x51, 0xaa, 0xae, 0x91, 0xfa, 0x26, 0x2f, -0x05, 0x43, 0x1b, 0x15, 0x1a, 0xf1, 0xba, 0x47, 0x99, 0xbf, -0xc2, 0x7b, 0x6f, 0xee, 0x9f, 0xd6, 0xa0, 0x7f, 0x84, 0xb0, -0x9e, 0x99, 0xfd, 0x6b, 0xd4, 0xe8, 0xaf, 0x31, 0xe4, 0x78, -0x17, 0xf6, 0x0f, 0x1e, 0x5c, 0x39, 0x97, 0x4b, 0xfe, 0x5d, -0xa3, 0xc6, 0x75, 0x7f, 0x86, 0xf1, 0x69, 0xb6, 0xaf, 0x36, -0xf3, 0xf2, 0x8c, 0xf3, 0x5c, 0x0b, 0x80, 0x1d, 0x80, 0xe8, -0x0d, 0x7b, 0x87, 0xc4, 0xdd, 0x47, 0xec, 0x5a, 0x14, 0x8a, -0x31, 0x97, 0x18, 0xaf, 0x0d, 0x15, 0xf9, 0xee, 0x79, 0x86, -0xa1, 0x84, 0xc4, 0x2a, 0x54, 0x15, 0xb4, 0xd4, 0xfc, 0xbb, -0x89, 0x30, 0x98, 0x6c, 0x0e, 0x2a, 0x34, 0x70, 0xea, 0xda, -0x6a, 0x14, 0x51, 0x45, 0x7c, 0xe1, 0xf2, 0x43, 0xe1, 0x89, -0xa6, 0x95, 0x51, 0x7a, 0xb5, 0x74, 0x50, 0xf8, 0x0b, 0x50, -0xb8, 0x88, 0x48, 0xb9, 0xc1, 0xff, 0x00, 0x66, 0xaa, 0x78, -0x42, 0xcf, 0xed, 0xba, 0xd4, 0x60, 0x8c, 0x85, 0xaf, 0xa0, -0x6d, 0x2c, 0xa3, 0x86, 0xd9, 0x10, 0x20, 0xc0, 0x03, 0xb5, -0x7d, 0x66, 0x4d, 0x94, 0x43, 0x30, 0x84, 0xa7, 0x55, 0xe8, -0x8f, 0xb7, 0xe1, 0xfc, 0x8a, 0x9e, 0x6b, 0x4e, 0x55, 0x2a, -0xbb, 0x24, 0x78, 0x43, 0x78, 0x07, 0x52, 0x5f, 0xe1, 0xcf, -0xfc, 0x00, 0xd4, 0x2d, 0xe0, 0x9d, 0x4d, 0x7f, 0xe5, 0x9e, -0x7f, 0x0a, 0xfa, 0x0b, 0xec, 0xb1, 0xff, 0x00, 0x70, 0x7e, -0x54, 0x86, 0xca, 0x23, 0xfc, 0x02, 0xbe, 0x85, 0xf0, 0xbe, -0x1d, 0xed, 0x26, 0x7d, 0x4b, 0xe0, 0xcc, 0x2b, 0xda, 0x4c, -0xf0, 0x1b, 0x0f, 0x06, 0x6a, 0x2f, 0xa8, 0x40, 0xad, 0x11, -0xd9, 0xb8, 0x13, 0xc1, 0xaf, 0x78, 0xd2, 0x2d, 0x8d, 0xae, -0x9f, 0x04, 0x44, 0x60, 0xaa, 0xd4, 0xc9, 0x67, 0x0a, 0x30, -0x21, 0x06, 0x6a, 0x6e, 0x82, 0xbd, 0x8c, 0xb3, 0x2a, 0xa7, -0x96, 0xf3, 0x38, 0xbb, 0xb6, 0x7d, 0x06, 0x4f, 0x92, 0x52, -0xca, 0x39, 0xdc, 0x1d, 0xdc, 0x88, 0x2f, 0x2e, 0x92, 0xd2, -0x07, 0x95, 0xc8, 0x0a, 0xa3, 0x35, 0xe1, 0xbe, 0x38, 0xf1, -0x74, 0xba, 0xdd, 0xf7, 0x96, 0x8d, 0x88, 0x97, 0x8e, 0x0f, -0x15, 0xd5, 0xfc, 0x4d, 0xf1, 0x63, 0x40, 0xcd, 0x63, 0x03, -0x75, 0x5e, 0x6b, 0xca, 0x39, 0xef, 0xc9, 0xaf, 0x94, 0xe2, -0x1c, 0xd1, 0xd4, 0x97, 0xd5, 0x69, 0x3d, 0x16, 0xe7, 0xc4, -0x71, 0x56, 0x72, 0xea, 0x4f, 0xea, 0x54, 0x5e, 0x8b, 0x7f, -0x50, 0xa2, 0x8a, 0x2b, 0xe1, 0x4f, 0xcd, 0x82, 0x8a, 0x50, -0x09, 0x38, 0x1c, 0x9a, 0xec, 0x3c, 0x23, 0xe0, 0x39, 0xf5, -0xa7, 0x12, 0xbf, 0xcb, 0x18, 0x3d, 0xeb, 0xab, 0x0f, 0x86, -0xab, 0x8a, 0x9a, 0xa7, 0x49, 0x5d, 0x9d, 0x98, 0x4c, 0x1d, -0x6c, 0x6d, 0x55, 0x4a, 0x84, 0x6e, 0xce, 0x52, 0xda, 0xd2, -0x5b, 0xb6, 0xdb, 0x1a, 0x9c, 0xfd, 0x2a, 0xf7, 0xfc, 0x23, -0x17, 0xc4, 0x64, 0x29, 0xc7, 0xd2, 0xbd, 0xcf, 0x4c, 0xf0, -0x7e, 0x9f, 0x61, 0x12, 0x8f, 0x21, 0x59, 0xc7, 0x7c, 0x56, -0x87, 0xf6, 0x35, 0xa6, 0x31, 0xe4, 0xa8, 0x15, 0xf6, 0x94, -0xb8, 0x59, 0xb8, 0xfe, 0xf2, 0x7a, 0x9f, 0xa1, 0x50, 0xe0, -0xb9, 0x38, 0x5e, 0xb5, 0x4d, 0x4f, 0x9c, 0xe7, 0xd2, 0x2e, -0x6d, 0xb9, 0x90, 0x63, 0xeb, 0x55, 0x33, 0xce, 0x2b, 0xe8, -0xab, 0xff, 0x00, 0x09, 0x69, 0xf7, 0x91, 0x32, 0xb4, 0x23, -0x26, 0xbc, 0x97, 0xc6, 0x7e, 0x0f, 0x7d, 0x22, 0x53, 0x24, -0x71, 0x84, 0x8f, 0xd6, 0xbc, 0x7c, 0xc7, 0x22, 0xab, 0x82, -0x8f, 0xb4, 0x8b, 0xbc, 0x4f, 0x0b, 0x35, 0xe1, 0xba, 0xf9, -0x74, 0x3d, 0xac, 0x1f, 0x34, 0x4e, 0x3e, 0x8a, 0x5a, 0x4a, -0xf9, 0x93, 0xe3, 0x82, 0xa7, 0xb3, 0xb9, 0x6b, 0x4b, 0xa8, -0xe4, 0x43, 0x82, 0x0d, 0x41, 0x41, 0xa6, 0x9b, 0x8b, 0x52, -0x43, 0x52, 0x70, 0x6a, 0x4b, 0x74, 0x7d, 0x15, 0xe1, 0x0b, -0xf1, 0xa9, 0x68, 0x50, 0x4b, 0x9c, 0x9c, 0x62, 0xb7, 0x2b, -0xcf, 0xfe, 0x12, 0xde, 0xf9, 0xda, 0x49, 0x88, 0x9e, 0x13, -0x81, 0x9a, 0xf4, 0x0a, 0xfd, 0xc3, 0x2e, 0xad, 0xed, 0xf0, -0x94, 0xea, 0x3e, 0xc7, 0xf4, 0x76, 0x53, 0x88, 0xfa, 0xce, -0x0a, 0x95, 0x5e, 0xe9, 0x05, 0x65, 0xeb, 0xfa, 0xd4, 0x5a, -0x25, 0x93, 0x4d, 0x21, 0x00, 0xe3, 0x8e, 0x6b, 0x49, 0x9b, -0x6a, 0x92, 0x7b, 0x57, 0x8d, 0xfc, 0x50, 0xf1, 0x29, 0xbc, -0xbb, 0x4b, 0x58, 0x8e, 0x15, 0x7a, 0xd6, 0x39, 0xa6, 0x39, -0x60, 0x70, 0xee, 0xa7, 0x5e, 0x87, 0x3e, 0x75, 0x98, 0xac, -0xb7, 0x09, 0x2a, 0xbf, 0x6b, 0x64, 0x71, 0xda, 0xde, 0xad, -0x2e, 0xb1, 0x7d, 0x24, 0xd2, 0x36, 0x46, 0xe3, 0x8a, 0xa1, -0x45, 0x15, 0xf8, 0xbc, 0xe7, 0x2a, 0x92, 0x73, 0x93, 0xbb, -0x67, 0xf3, 0xdd, 0x4a, 0x92, 0xab, 0x37, 0x39, 0xbb, 0xb6, -0x14, 0x51, 0x4e, 0x8e, 0x36, 0x99, 0xc2, 0x20, 0xcb, 0x1e, -0x82, 0xa7, 0x72, 0x12, 0xbe, 0x88, 0x6d, 0x19, 0xae, 0x87, -0x4d, 0xf0, 0x5d, 0xfd, 0xf0, 0x04, 0xc4, 0x76, 0xd6, 0xaa, -0x7c, 0x36, 0x99, 0xba, 0x82, 0x2b, 0xd1, 0xa7, 0x97, 0x62, -0xaa, 0xae, 0x68, 0xc1, 0x9e, 0xb5, 0x2c, 0xab, 0x1b, 0x59, -0x73, 0x42, 0x9b, 0x38, 0x9c, 0xd1, 0x5d, 0xa4, 0x9f, 0x0d, -0xa5, 0x51, 0xfc, 0x55, 0x9f, 0x75, 0xe0, 0x8b, 0x8b, 0x65, -0x24, 0x6e, 0x34, 0x4f, 0x2e, 0xc5, 0xc1, 0x5e, 0x50, 0x0a, -0x99, 0x4e, 0x36, 0x9a, 0xbc, 0xa9, 0x9c, 0xdd, 0x06, 0xac, -0x5c, 0xd8, 0x4d, 0x6a, 0xc5, 0x5a, 0x26, 0xfc, 0xa9, 0x2c, -0x60, 0x6b, 0x9b, 0xc8, 0xa3, 0xc6, 0x0b, 0x30, 0x15, 0xc1, -0xc9, 0x2e, 0x65, 0x06, 0xb5, 0x3c, 0xcf, 0x67, 0x2e, 0x65, -0x06, 0xb5, 0x3d, 0x8b, 0xe1, 0xd6, 0x9d, 0xf6, 0x3d, 0x1a, -0x36, 0x23, 0x04, 0x8c, 0xd6, 0x96, 0xad, 0x26, 0x59, 0xaa, -0xf6, 0x93, 0x6c, 0x2c, 0x74, 0xb8, 0x93, 0xd1, 0x05, 0x63, -0xea, 0xf2, 0x72, 0x6b, 0xf7, 0x1c, 0x05, 0x15, 0x43, 0x0d, -0x0a, 0x7d, 0x91, 0xfd, 0x1f, 0x96, 0xd0, 0x58, 0x6c, 0x25, -0x3a, 0x4b, 0xa2, 0x39, 0x4d, 0x6e, 0x5f, 0xbd, 0x5e, 0x7b, -0xe2, 0x09, 0xf0, 0xad, 0x5d, 0xae, 0xb9, 0x37, 0xde, 0xe6, -0xbc, 0xeb, 0xc4, 0x53, 0xe1, 0x5b, 0x9a, 0xef, 0x3d, 0x33, -0xcc, 0xbc, 0x73, 0x7b, 0xe4, 0xd8, 0xce, 0xd9, 0xc7, 0x06, -0xbe, 0x1f, 0xf8, 0xab, 0xa9, 0x34, 0xda, 0xdd, 0xc0, 0xcf, -0x01, 0x8d, 0x7d, 0x7d, 0xf1, 0x3f, 0x50, 0xf2, 0x74, 0xf9, -0x06, 0x71, 0x9c, 0xd7, 0xc3, 0xfe, 0x3c, 0xbd, 0xf3, 0xf5, -0x8b, 0xc6, 0xce, 0x7e, 0x73, 0x5f, 0x2d, 0x9c, 0x4a, 0xee, -0x30, 0x3e, 0x33, 0x3f, 0x9f, 0x33, 0x8d, 0x33, 0x83, 0xd6, -0x6e, 0xb7, 0x6e, 0x04, 0xd7, 0xb1, 0x7f, 0xc1, 0x3d, 0xbc, -0x67, 0x27, 0x85, 0xbf, 0x68, 0xfb, 0x78, 0x03, 0x91, 0x15, -0xed, 0xbe, 0x0a, 0xe7, 0x00, 0xba, 0x3a, 0x90, 0x7f, 0xef, -0x92, 0xe3, 0xf1, 0xaf, 0x0a, 0xd5, 0x66, 0x3e, 0x61, 0xe6, -0xbd, 0x0f, 0xf6, 0x3f, 0xf3, 0x13, 0xf6, 0x8e, 0xf0, 0xeb, -0xc7, 0xfd, 0xd9, 0xf3, 0xff, 0x00, 0x7e, 0xdb, 0x1f, 0xae, -0x2b, 0x6c, 0xbe, 0x3c, 0x8d, 0x1b, 0x65, 0x51, 0xe4, 0x92, -0x3f, 0x7a, 0x61, 0x98, 0x10, 0x0e, 0x78, 0xab, 0x91, 0xbd, -0x62, 0xd8, 0xca, 0x5a, 0x08, 0xb3, 0xd7, 0x68, 0xfe, 0x55, -0xa5, 0x13, 0xf4, 0xaf, 0xa3, 0x3e, 0xb4, 0xbe, 0x8d, 0x53, -0x29, 0xaa, 0xb1, 0xbe, 0x40, 0xa9, 0xd0, 0xfb, 0xd0, 0x05, -0x80, 0x69, 0xf5, 0x12, 0x1a, 0x7a, 0x9a, 0x00, 0x91, 0x69, -0x69, 0x9d, 0x29, 0xd4, 0x00, 0xda, 0x46, 0xe2, 0x96, 0x98, -0xe6, 0x80, 0x23, 0x63, 0x50, 0xbd, 0x4a, 0xc6, 0xa0, 0x90, -0xf0, 0x68, 0x02, 0xb4, 0xc6, 0xb3, 0xae, 0x5a, 0xae, 0xcc, -0xdd, 0x6b, 0x27, 0x51, 0xba, 0x4b, 0x3b, 0x79, 0xa7, 0x95, -0xb6, 0xc5, 0x12, 0x17, 0x63, 0xe8, 0x00, 0xc9, 0xa0, 0x4d, -0xd9, 0x5d, 0x9f, 0x22, 0xfc, 0x5d, 0xb9, 0x3f, 0x10, 0xbf, -0x6a, 0x8d, 0x13, 0x42, 0x8c, 0x99, 0x6d, 0xb4, 0x68, 0xe3, -0x57, 0x5e, 0xa1, 0x5d, 0x87, 0x98, 0xdf, 0xa6, 0xca, 0xfb, -0x43, 0xc2, 0xf6, 0xa2, 0x0b, 0x34, 0x00, 0x60, 0x00, 0x2b, -0xe3, 0x0f, 0xd9, 0x7a, 0xc6, 0x4f, 0x1d, 0xfc, 0x50, 0xf1, -0x47, 0x8c, 0xaf, 0x41, 0x96, 0x69, 0xee, 0x9c, 0xa4, 0x87, -0x8c, 0x6e, 0x6e, 0x07, 0x1e, 0x8a, 0x00, 0xaf, 0xb8, 0x34, -0xa8, 0x84, 0x50, 0x0c, 0x0e, 0xd5, 0xf3, 0xb9, 0x3a, 0x75, -0x55, 0x5c, 0x5b, 0xff, 0x00, 0x97, 0x92, 0x76, 0xf4, 0x5a, -0x23, 0xe5, 0x72, 0x04, 0xeb, 0x2a, 0xf8, 0xd7, 0xff, 0x00, -0x2f, 0x26, 0xed, 0xe8, 0xb4, 0x5f, 0x91, 0x7a, 0x8a, 0x28, -0xaf, 0xa2, 0x3e, 0xac, 0x28, 0xa2, 0xb1, 0xfc, 0x4b, 0xe2, -0xed, 0x27, 0xc2, 0x36, 0x66, 0xeb, 0x56, 0xbd, 0x8e, 0xce, -0x1c, 0x67, 0x74, 0x87, 0xad, 0x00, 0x63, 0x78, 0xf3, 0xe1, -0x47, 0x87, 0x3e, 0x23, 0x40, 0x53, 0x5c, 0xd3, 0xd2, 0xf0, -0x85, 0xc2, 0x96, 0x24, 0x62, 0xbe, 0x59, 0xf1, 0xd7, 0xfc, -0x13, 0xc7, 0xc2, 0x7a, 0xbd, 0xec, 0x92, 0x58, 0xe8, 0xd1, -0x22, 0xb1, 0xcf, 0x0c, 0xd5, 0xb7, 0xf1, 0x47, 0xfe, 0x0a, -0x09, 0xe1, 0x8f, 0x05, 0xde, 0x34, 0x5a, 0x6d, 0xc5, 0xb5, -0xf2, 0xa9, 0xc1, 0x3b, 0x58, 0xd7, 0x9b, 0xe9, 0xdf, 0xf0, -0x54, 0x8b, 0x3d, 0x4b, 0x5a, 0xb7, 0xd3, 0xe2, 0xd3, 0xed, -0xd9, 0xa4, 0x6d, 0xb9, 0x11, 0xbf, 0xf8, 0xd0, 0x07, 0x6f, -0xe0, 0x8f, 0xf8, 0x26, 0xdf, 0xc3, 0xdb, 0x12, 0xb3, 0x6a, -0x7a, 0x4c, 0x66, 0x45, 0xc1, 0xe0, 0x9e, 0xb5, 0xf5, 0x57, -0x82, 0x3c, 0x03, 0xa3, 0xfc, 0x3f, 0xd2, 0x22, 0xd3, 0xb4, -0x7b, 0x55, 0xb6, 0xb7, 0x8c, 0x6d, 0x00, 0x7a, 0x53, 0xbc, -0x19, 0xe2, 0x8f, 0xf8, 0x48, 0xfc, 0x27, 0xa7, 0xeb, 0x17, -0x2a, 0x96, 0xbf, 0x6a, 0x88, 0x49, 0x86, 0x3b, 0x40, 0x07, -0xeb, 0x5b, 0x31, 0x5f, 0xdb, 0x4e, 0x40, 0x8e, 0xe2, 0x29, -0x09, 0xec, 0xae, 0x0d, 0x00, 0x58, 0xa6, 0x3b, 0xed, 0x52, -0x4f, 0x61, 0x4f, 0xaa, 0x1a, 0xd5, 0xc7, 0xd9, 0x74, 0xf9, -0x5f, 0x38, 0x38, 0xa8, 0x9c, 0xb9, 0x22, 0xe4, 0xfa, 0x19, -0xd4, 0x9a, 0xa7, 0x07, 0x37, 0xd0, 0xf1, 0x5f, 0x89, 0x3a, -0x8f, 0xdb, 0x75, 0x85, 0x8c, 0x1c, 0x84, 0xce, 0x6b, 0x92, -0xab, 0x9a, 0xbd, 0xd9, 0xbd, 0xd4, 0xee, 0x25, 0x63, 0x9c, -0xb6, 0x05, 0x53, 0xaf, 0xc2, 0xf1, 0x75, 0x9d, 0x7c, 0x44, -0xea, 0x77, 0x67, 0xf3, 0x66, 0x3e, 0xbb, 0xc4, 0xe2, 0xaa, -0x55, 0x7d, 0x58, 0x50, 0x7a, 0x51, 0x52, 0x5b, 0xc5, 0xe7, -0xcf, 0x1c, 0x7f, 0xdf, 0x60, 0x2b, 0x91, 0x2b, 0xe8, 0x8e, -0x24, 0xae, 0xec, 0x8f, 0x63, 0xf8, 0x4d, 0x61, 0xf6, 0x6d, -0x21, 0xa5, 0x23, 0x05, 0xf9, 0xae, 0xfe, 0xb1, 0x3c, 0x29, -0x64, 0xb6, 0x5a, 0x44, 0x28, 0xbf, 0xdd, 0x15, 0xb7, 0x5f, -0xb8, 0xe5, 0xd4, 0x7e, 0xaf, 0x85, 0xa7, 0x4f, 0xb2, 0x3f, -0xa3, 0xb2, 0xac, 0x3f, 0xd5, 0x70, 0x54, 0xa9, 0x76, 0x41, -0x45, 0x35, 0x9c, 0x2f, 0x53, 0x8a, 0xc4, 0xf1, 0x17, 0x89, -0xed, 0xb4, 0x4b, 0x56, 0x66, 0x70, 0x5f, 0x1c, 0x0e, 0xb5, -0xd7, 0x56, 0xb4, 0x28, 0xc1, 0xce, 0x6e, 0xc9, 0x1d, 0xf5, -0xab, 0xd3, 0xc3, 0xc1, 0xd4, 0xa8, 0xec, 0x91, 0xc5, 0x7c, -0x5e, 0xd5, 0x42, 0xb4, 0x16, 0x8a, 0xdc, 0xe3, 0x71, 0x15, -0xe5, 0x75, 0xa7, 0xe2, 0x2d, 0x6a, 0x5d, 0x77, 0x52, 0x7b, -0x89, 0x1f, 0x77, 0x61, 0x59, 0x95, 0xf8, 0xb6, 0x67, 0x8b, -0xfa, 0xee, 0x2a, 0x75, 0x56, 0xdd, 0x0f, 0xe7, 0xbc, 0xe3, -0x1c, 0xb3, 0x0c, 0x6c, 0xeb, 0xc7, 0x6e, 0x9e, 0x81, 0x45, -0x15, 0x24, 0x10, 0xb5, 0xc4, 0xcb, 0x1a, 0x0c, 0x93, 0x5e, -0x66, 0xfa, 0x23, 0xc6, 0x49, 0xb7, 0x64, 0x77, 0x9f, 0x0a, -0xf4, 0xa3, 0x71, 0x7a, 0xb7, 0x0c, 0xbf, 0x28, 0x39, 0xaf, -0x66, 0xae, 0x6b, 0xc0, 0xfa, 0x14, 0x7a, 0x46, 0x87, 0x6c, -0x02, 0xe2, 0x57, 0x40, 0x58, 0x9a, 0xe9, 0x6b, 0xf6, 0x7c, -0x9f, 0x09, 0xf5, 0x4c, 0x24, 0x60, 0xf7, 0x7a, 0xb3, 0xfa, -0x0b, 0x21, 0xc0, 0xbc, 0x06, 0x06, 0x10, 0x96, 0xef, 0x57, -0xf3, 0x0a, 0x28, 0xa2, 0xbd, 0xb3, 0xe8, 0x82, 0x8a, 0x2a, -0x29, 0x9f, 0xcb, 0x89, 0x9b, 0xd0, 0x52, 0x6e, 0xc2, 0x6e, -0xca, 0xe7, 0x94, 0x7c, 0x5f, 0xd4, 0x37, 0xcb, 0x0d, 0xb8, -0x3e, 0xe6, 0xbc, 0xd6, 0xba, 0x2f, 0x1e, 0x6a, 0x06, 0xff, -0x00, 0xc4, 0x13, 0x73, 0x90, 0x9c, 0x0a, 0xe7, 0x6b, 0xf1, -0x3c, 0xd6, 0xbf, 0xd6, 0x31, 0x95, 0x27, 0xe7, 0x6f, 0xb8, -0xfe, 0x76, 0xce, 0xb1, 0x3f, 0x5a, 0xc7, 0xd5, 0xa9, 0xd2, -0xf6, 0xfb, 0x82, 0x8a, 0x29, 0x1b, 0xa5, 0x79, 0x27, 0x86, -0x77, 0x9f, 0x0a, 0xb4, 0xff, 0x00, 0xb4, 0x5f, 0x19, 0x58, -0x71, 0x9a, 0xf6, 0xba, 0xf3, 0xdf, 0x85, 0x7a, 0x62, 0xc1, -0xa7, 0x89, 0x71, 0xcf, 0xad, 0x7a, 0x15, 0x7e, 0xc3, 0x90, -0xd0, 0xf6, 0x18, 0x28, 0xdf, 0x77, 0xa9, 0xfb, 0xdf, 0x0c, -0xe1, 0xbe, 0xaf, 0x97, 0x42, 0xfb, 0xbd, 0x42, 0x8a, 0x28, -0xaf, 0xa2, 0x3e, 0xac, 0x2b, 0x23, 0xc4, 0xda, 0x9a, 0xe9, -0x3a, 0x4c, 0xd3, 0xb1, 0xc1, 0xc6, 0x05, 0x6b, 0xd7, 0x92, -0xfc, 0x58, 0xf1, 0x0b, 0xbc, 0x82, 0xc2, 0x37, 0xf9, 0x41, -0xe7, 0x15, 0xe4, 0xe6, 0x98, 0xb5, 0x82, 0xc2, 0xca, 0xa7, -0x5e, 0x9e, 0xa7, 0x89, 0x9c, 0xe3, 0x96, 0x5f, 0x83, 0x9d, -0x57, 0xbe, 0xcb, 0xd4, 0xe0, 0x35, 0x8b, 0xf7, 0xd4, 0xb5, -0x29, 0x67, 0x63, 0x9c, 0x9a, 0xa5, 0x45, 0x15, 0xf8, 0xac, -0xa4, 0xe7, 0x27, 0x29, 0x6e, 0xcf, 0xe7, 0x89, 0xcd, 0xd4, -0x93, 0x9c, 0xb7, 0x61, 0x45, 0x15, 0xa5, 0xa0, 0x69, 0x6d, -0xab, 0xea, 0x96, 0xf0, 0x63, 0x2a, 0xcd, 0xcd, 0x38, 0x42, -0x55, 0x24, 0xa1, 0x1d, 0xd8, 0xe9, 0xd3, 0x95, 0x59, 0xaa, -0x70, 0xdd, 0x9b, 0xde, 0x02, 0xf0, 0x8b, 0xeb, 0x77, 0x1e, -0x74, 0x89, 0xfb, 0xa4, 0x6e, 0xf5, 0xed, 0xd6, 0x96, 0x91, -0x59, 0xc4, 0x12, 0x24, 0x0a, 0xa0, 0x74, 0x15, 0x53, 0x42, -0xd1, 0x60, 0xd1, 0x2c, 0x96, 0x18, 0x57, 0x6f, 0xad, 0x69, -0xd7, 0xec, 0x79, 0x56, 0x5b, 0x1c, 0xbe, 0x8a, 0x5f, 0x69, -0xee, 0xcf, 0xdf, 0xb2, 0x4c, 0xa6, 0x19, 0x5e, 0x1d, 0x45, -0xaf, 0x7d, 0xee, 0xc2, 0x8a, 0x28, 0xaf, 0x70, 0xfa, 0x30, -0xac, 0x4f, 0x14, 0xe9, 0x51, 0xea, 0x5a, 0x64, 0xa1, 0x97, -0x73, 0x01, 0x9a, 0xdb, 0xa8, 0xe6, 0x50, 0xf1, 0x30, 0x23, -0x20, 0x8e, 0x95, 0x8d, 0x6a, 0x6a, 0xad, 0x37, 0x09, 0x6c, -0xcc, 0x2b, 0xd2, 0x8d, 0x6a, 0x52, 0xa7, 0x25, 0xa3, 0x47, -0xcc, 0xda, 0x8d, 0xb3, 0x5a, 0x5e, 0xcb, 0x1b, 0x70, 0x41, -0xe9, 0x55, 0xab, 0xa1, 0xf1, 0xbd, 0xb0, 0xb7, 0xd7, 0x25, -0x3d, 0x37, 0x1a, 0xe7, 0xab, 0xf0, 0xbc, 0x45, 0x3f, 0x65, -0x5a, 0x50, 0xec, 0xcf, 0xe6, 0xbc, 0x5d, 0x2f, 0x61, 0x5e, -0x74, 0xfb, 0x36, 0x14, 0x51, 0x45, 0x73, 0x1c, 0xa7, 0xa5, -0xfc, 0x1f, 0x94, 0xf9, 0xb2, 0x47, 0x9c, 0x28, 0xaf, 0x5b, -0xaf, 0x17, 0xf8, 0x4f, 0x23, 0x0d, 0x4f, 0xcb, 0x1d, 0xce, -0x4d, 0x7b, 0x45, 0x7e, 0xbb, 0xc3, 0xd2, 0xe6, 0xc0, 0xc5, -0x76, 0x3f, 0x75, 0xe1, 0x59, 0xf3, 0x65, 0xb1, 0x5d, 0x9b, -0x33, 0x75, 0xfb, 0xc1, 0x63, 0xa4, 0xdc, 0x4c, 0x78, 0x21, -0x4e, 0x2b, 0xe7, 0x7d, 0x62, 0xe8, 0xde, 0x6a, 0x32, 0x48, -0x4e, 0x6b, 0xd8, 0x3e, 0x2a, 0x6a, 0x2f, 0x6b, 0xa3, 0x2c, -0x28, 0xdb, 0x4c, 0x87, 0x9a, 0xf1, 0x42, 0x72, 0xc4, 0xd7, -0xcb, 0xf1, 0x3e, 0x27, 0x9e, 0xbc, 0x68, 0x2e, 0x88, 0xf8, -0xde, 0x31, 0xc5, 0xfb, 0x4c, 0x4c, 0x70, 0xeb, 0x68, 0xa1, -0x28, 0xa2, 0x8a, 0xf8, 0xa3, 0xf3, 0xc0, 0x27, 0x15, 0xe8, -0xff, 0x00, 0x0e, 0xbc, 0x18, 0x2f, 0x24, 0x5b, 0xbb, 0x98, -0xfe, 0x50, 0x32, 0x2b, 0xcf, 0x6d, 0x23, 0x13, 0x5d, 0x43, -0x19, 0xe8, 0xcc, 0x01, 0xaf, 0xa2, 0xbc, 0x35, 0x6d, 0x1d, -0xb6, 0x93, 0x0a, 0xc6, 0x30, 0x31, 0x5f, 0x59, 0xc3, 0xd8, -0x28, 0x62, 0xb1, 0x0e, 0xa5, 0x4d, 0x54, 0x4f, 0xb7, 0xe1, -0x5c, 0xba, 0x9e, 0x33, 0x14, 0xea, 0x55, 0xd5, 0x43, 0xa7, -0x99, 0xa5, 0x0d, 0xba, 0x5b, 0xa0, 0x44, 0x50, 0x14, 0x76, -0xa9, 0x30, 0x3d, 0x29, 0x68, 0xaf, 0xd5, 0x92, 0x49, 0x59, -0x1f, 0xb6, 0xa4, 0x92, 0xb2, 0x1b, 0xb0, 0x7a, 0x0a, 0x63, -0x5b, 0xc6, 0xe3, 0x94, 0x53, 0xf8, 0x54, 0xb4, 0x51, 0x64, -0xc1, 0xa4, 0xf7, 0x46, 0x0e, 0xa9, 0xe1, 0x5b, 0x5b, 0xf5, -0x3b, 0x63, 0x45, 0x27, 0xda, 0xb8, 0xd8, 0x7e, 0x1c, 0xbd, -0xb6, 0xbd, 0x14, 0xbc, 0x79, 0x60, 0xee, 0xaf, 0x50, 0xa6, -0x14, 0x1f, 0x7b, 0x03, 0x35, 0xe5, 0xe2, 0x32, 0xcc, 0x36, -0x22, 0x4a, 0x72, 0x8e, 0xa9, 0xdc, 0xf1, 0x71, 0x39, 0x3e, -0x13, 0x15, 0x38, 0xce, 0x71, 0xd5, 0x3b, 0x99, 0xf7, 0x47, -0xcb, 0x87, 0x6f, 0xa5, 0x72, 0x7a, 0xc4, 0xbf, 0x7a, 0xba, -0x6d, 0x4e, 0x4c, 0x03, 0x5c, 0x6e, 0xb5, 0x29, 0x1b, 0xab, -0xd4, 0x4a, 0xda, 0x1e, 0xd2, 0x56, 0x56, 0x38, 0xfd, 0x72, -0x5c, 0x6e, 0xaf, 0x37, 0xf1, 0x25, 0xc7, 0xde, 0xe6, 0xbb, -0x9d, 0x72, 0x7f, 0xbd, 0xcd, 0x79, 0x9f, 0x89, 0x6e, 0x70, -0x18, 0xe6, 0x98, 0xcf, 0x0b, 0xf8, 0xc9, 0xa9, 0x88, 0xad, -0xe5, 0x5c, 0xf4, 0x06, 0xbe, 0x30, 0xf1, 0x4d, 0xc7, 0x99, -0x79, 0x70, 0xd9, 0xea, 0xe4, 0xd7, 0xd3, 0x3f, 0x1b, 0xb5, -0x92, 0x16, 0x70, 0x1b, 0xd6, 0xbe, 0x53, 0xf1, 0x05, 0xc1, -0x2d, 0x21, 0x3d, 0x49, 0xaf, 0x8b, 0xc7, 0xcb, 0xda, 0xe2, -0x6c, 0x8f, 0xcf, 0x73, 0x29, 0xfb, 0x6c, 0x5f, 0x2f, 0x63, -0x90, 0xd4, 0x64, 0xdc, 0xed, 0x5e, 0xfb, 0xfb, 0x02, 0xf8, -0x6a, 0x4d, 0x7b, 0xe3, 0xbc, 0x77, 0x21, 0x77, 0x47, 0x69, -0x6e, 0x17, 0x3e, 0x8e, 0xf2, 0x20, 0x1f, 0xf8, 0xe8, 0x7a, -0xf9, 0xea, 0xf6, 0x4c, 0x93, 0x5f, 0x7c, 0xff, 0x00, 0xc1, -0x2f, 0xbc, 0x0c, 0x86, 0x4b, 0xff, 0x00, 0x10, 0x4b, 0x06, -0x5e, 0x69, 0x59, 0x96, 0x4e, 0x99, 0x48, 0xc0, 0x55, 0xfc, -0x9d, 0xd8, 0xd7, 0xb1, 0x83, 0x87, 0xbc, 0x8f, 0x7f, 0x01, -0x0f, 0x79, 0x79, 0x1f, 0xa6, 0x36, 0xcf, 0x80, 0xa0, 0x74, -0x15, 0xa5, 0x0b, 0xe2, 0xb1, 0x6d, 0xa4, 0xe9, 0x5a, 0x90, -0x36, 0x6b, 0xdc, 0x3e, 0x8c, 0xd3, 0x89, 0xaa, 0xcc, 0x67, -0x26, 0xa8, 0xc4, 0x7a, 0x55, 0xb8, 0xcf, 0x14, 0x01, 0x6d, -0x4e, 0x78, 0xa9, 0x2a, 0x04, 0xa9, 0x41, 0xed, 0x40, 0x12, -0x53, 0x81, 0xcd, 0x34, 0x74, 0xa7, 0x03, 0x40, 0x0d, 0xa8, -0xd8, 0x1a, 0x92, 0x98, 0xc6, 0x80, 0x20, 0x7c, 0xd4, 0x12, -0xf4, 0x35, 0x61, 0xcd, 0x55, 0x99, 0xb8, 0xa0, 0x0a, 0x53, -0x9e, 0xb5, 0xe4, 0xff, 0x00, 0xb4, 0x6f, 0x8a, 0x4f, 0x84, -0xbe, 0x0f, 0xf8, 0x92, 0xf5, 0x0e, 0x26, 0x7b, 0x7f, 0xb3, -0x45, 0xce, 0x3e, 0x79, 0x08, 0x41, 0xfc, 0xeb, 0xd5, 0x6e, -0x1a, 0xbe, 0x58, 0xfd, 0xb5, 0x75, 0xa7, 0xbd, 0xb3, 0xf0, -0x8f, 0x84, 0xed, 0xd8, 0x99, 0x75, 0x0b, 0xe3, 0x73, 0x2a, -0x01, 0xce, 0xc4, 0x1b, 0x57, 0xf3, 0x67, 0x27, 0xfe, 0x03, -0x5e, 0x5e, 0x67, 0x5f, 0xea, 0xf8, 0x3a, 0x95, 0x16, 0xf6, -0xb2, 0xf5, 0x7a, 0x23, 0xc6, 0xce, 0x31, 0x2f, 0x0b, 0x80, -0xab, 0x55, 0x6f, 0x6b, 0x2f, 0x57, 0xa2, 0xfc, 0x59, 0xd4, -0x7e, 0xc7, 0x9e, 0x15, 0xfe, 0xc7, 0xf8, 0x75, 0x67, 0x3b, -0x2f, 0xef, 0x2e, 0xd8, 0xca, 0x7e, 0x9d, 0x07, 0xf2, 0xaf, -0xa8, 0x2d, 0x97, 0x6c, 0x42, 0xbc, 0xef, 0xe1, 0x4e, 0x80, -0x9a, 0x17, 0x86, 0x34, 0xdb, 0x34, 0x1b, 0x56, 0x08, 0x11, -0x00, 0xfa, 0x0a, 0xf4, 0x74, 0x18, 0x50, 0x2b, 0x6c, 0x0d, -0x0f, 0xab, 0x61, 0xa9, 0xd2, 0xec, 0x91, 0xbe, 0x5b, 0x87, -0xfa, 0xa6, 0x0e, 0x95, 0x0e, 0xc9, 0x0e, 0xa2, 0x8a, 0x42, -0x70, 0x32, 0x6b, 0xb8, 0xf4, 0x8c, 0xbf, 0x12, 0xf8, 0x9a, -0xc3, 0xc2, 0x5a, 0x4c, 0xda, 0x8e, 0xa5, 0x30, 0x86, 0xda, -0x21, 0x96, 0x6a, 0xfc, 0x56, 0xfd, 0xbc, 0x3f, 0x6d, 0x8d, -0x57, 0xe2, 0x37, 0x8d, 0xef, 0xb4, 0x4d, 0x1e, 0x5f, 0x2f, -0x47, 0xb6, 0x63, 0x1c, 0x6c, 0x84, 0x83, 0xfa, 0x1a, 0xfa, -0x63, 0xfe, 0x0a, 0x97, 0xfb, 0x4d, 0x9d, 0x03, 0x41, 0xb5, -0xf0, 0xa6, 0x8d, 0x71, 0x89, 0xa5, 0x63, 0xe7, 0x95, 0x3f, -0xfd, 0x6a, 0xfc, 0xcb, 0xf8, 0x57, 0xf0, 0x3b, 0xc5, 0x7f, -0x1b, 0xb5, 0x86, 0xfe, 0xc5, 0xb3, 0x6b, 0xa2, 0xf2, 0x7c, -0xed, 0xea, 0x73, 0x40, 0x1e, 0x7b, 0x36, 0xb3, 0x7b, 0x3b, -0x16, 0x7b, 0xa9, 0x58, 0x93, 0x9e, 0x58, 0x9a, 0xf6, 0x8f, -0xd9, 0x37, 0xc2, 0xb7, 0x1e, 0x36, 0xf8, 0xaf, 0xa3, 0x5b, -0x16, 0x77, 0x0d, 0x75, 0x1a, 0xf5, 0xed, 0x9c, 0x9a, 0xa9, -0xf1, 0xdb, 0xf6, 0x7c, 0xd5, 0x7e, 0x09, 0x5a, 0xdb, 0xae, -0xb1, 0x6a, 0x2d, 0xa7, 0x95, 0xf6, 0x81, 0x9e, 0xf5, 0xf5, -0x0f, 0xfc, 0x12, 0x9f, 0xe1, 0xa7, 0xf6, 0xf7, 0xc4, 0xab, -0x6d, 0x4e, 0x58, 0xb7, 0x45, 0x68, 0x7c, 0xf2, 0x4f, 0xb7, -0x4a, 0x00, 0xfb, 0x33, 0xf6, 0xf1, 0xf8, 0x97, 0x77, 0xf0, -0x3b, 0xe0, 0xe6, 0x96, 0x96, 0x0f, 0x22, 0x48, 0x22, 0x58, -0x10, 0x47, 0xec, 0x06, 0x4f, 0xeb, 0x5f, 0x29, 0x7e, 0xc5, -0xdf, 0xb4, 0xe6, 0xb9, 0xf1, 0x0b, 0xe2, 0xad, 0xbd, 0xad, -0xcd, 0xc4, 0xaf, 0x04, 0x6b, 0xd1, 0xc9, 0xe4, 0x92, 0x3d, -0xeb, 0xdc, 0xff, 0x00, 0xe0, 0xab, 0x9a, 0xa4, 0x07, 0xc1, -0xb0, 0xc5, 0x23, 0x8f, 0xf4, 0x78, 0x8b, 0x05, 0x23, 0xab, -0x57, 0xc7, 0x3f, 0xf0, 0x4c, 0x7d, 0x1d, 0xf5, 0x8f, 0x8d, -0x16, 0x36, 0xc8, 0xa4, 0x82, 0xde, 0x6b, 0x9f, 0x60, 0x45, -0x00, 0x7e, 0xe5, 0xd9, 0x31, 0x7b, 0x38, 0x59, 0xbe, 0xf1, -0x40, 0x4f, 0xe5, 0x5c, 0xd7, 0xc4, 0x4d, 0x43, 0xec, 0x7a, -0x34, 0x83, 0x3d, 0x41, 0xae, 0xa9, 0x54, 0x22, 0x85, 0x1d, -0x00, 0xc5, 0x79, 0x5f, 0xc5, 0xdd, 0x4b, 0xe4, 0x48, 0x14, -0xf5, 0x35, 0xe3, 0x66, 0xf5, 0xfe, 0xaf, 0x83, 0x9c, 0xbc, -0x8f, 0x9f, 0xcf, 0xb1, 0x3f, 0x56, 0xcb, 0xea, 0x4f, 0xca, -0xc7, 0x97, 0x82, 0x4f, 0x27, 0xa9, 0xe6, 0x8a, 0x28, 0xaf, -0xc5, 0x4f, 0xe7, 0xa0, 0xa9, 0xec, 0xe7, 0xfb, 0x35, 0xcc, -0x72, 0xe3, 0x25, 0x0e, 0x45, 0x41, 0x45, 0x52, 0x6e, 0x2e, -0xe8, 0x71, 0x6e, 0x2d, 0x49, 0x74, 0x3b, 0xfb, 0x3f, 0x8a, -0x37, 0x36, 0xb1, 0x2a, 0x08, 0xc6, 0x05, 0x59, 0x93, 0xe2, -0xe4, 0xfb, 0x7f, 0xd5, 0x7e, 0x95, 0xe6, 0xf4, 0x57, 0xb3, -0x1c, 0xeb, 0x1d, 0x15, 0x65, 0x33, 0xe8, 0x23, 0xc4, 0x19, -0x8c, 0x23, 0xca, 0xaa, 0x1d, 0xa5, 0xf7, 0xc4, 0xbb, 0x9b, -0xa1, 0x85, 0x52, 0xb5, 0xcc, 0x6a, 0x1a, 0xb5, 0xc6, 0xa3, -0x26, 0xe9, 0x64, 0x24, 0x7a, 0x55, 0x2a, 0x2b, 0x86, 0xb6, -0x33, 0x11, 0x88, 0xfe, 0x2c, 0xae, 0x79, 0xd8, 0x8c, 0xc3, -0x15, 0x8a, 0xd2, 0xb4, 0xdb, 0x0a, 0x29, 0x40, 0xcd, 0x59, -0xb5, 0xd3, 0x6e, 0x2f, 0x24, 0x0a, 0x91, 0x37, 0x3d, 0xf1, -0x5c, 0x91, 0x8c, 0xa4, 0xed, 0x15, 0x73, 0x86, 0x30, 0x94, -0xdd, 0xa2, 0xae, 0xca, 0xb5, 0xe8, 0xff, 0x00, 0x0e, 0x3c, -0x16, 0xd3, 0xdc, 0x2d, 0xed, 0xca, 0xfe, 0xec, 0x0c, 0x81, -0x52, 0xf8, 0x43, 0xe1, 0x9b, 0x99, 0x52, 0xe2, 0xf3, 0x06, -0x3f, 0x4a, 0xf5, 0x3b, 0x5b, 0x58, 0xec, 0xe1, 0x58, 0xa2, -0x50, 0xaa, 0x3a, 0x57, 0xdd, 0xe4, 0xb9, 0x1c, 0xf9, 0xd6, -0x23, 0x12, 0xac, 0x96, 0xc8, 0xfd, 0x2f, 0x87, 0xb8, 0x72, -0x7e, 0xd1, 0x62, 0xb1, 0x8a, 0xc9, 0x6c, 0x89, 0x12, 0x31, -0x1a, 0xaa, 0xaf, 0x0a, 0x3a, 0x0a, 0x7d, 0x14, 0x57, 0xe8, -0xc7, 0xeb, 0x0b, 0x40, 0xa2, 0x8a, 0x28, 0x00, 0xac, 0xed, -0x76, 0xe7, 0xec, 0xba, 0x64, 0xce, 0x7d, 0x2b, 0x46, 0xb9, -0x0f, 0x89, 0x3a, 0x87, 0xd8, 0xf4, 0x19, 0x46, 0x70, 0x48, -0xc5, 0x71, 0xe3, 0x2a, 0xfb, 0x1c, 0x3c, 0xea, 0x76, 0x4c, -0xf3, 0xf1, 0xf5, 0x96, 0x1f, 0x0b, 0x52, 0xab, 0xe8, 0x99, -0xe2, 0x1a, 0x84, 0xe6, 0xe6, 0xfe, 0xe2, 0x5f, 0xef, 0x39, -0xaa, 0xf4, 0x75, 0xa2, 0xbf, 0x0a, 0x93, 0x72, 0x6e, 0x4f, -0xa9, 0xfc, 0xd9, 0x29, 0x39, 0xc9, 0xc9, 0xf5, 0x0a, 0x92, -0x08, 0xbc, 0xfb, 0x98, 0x63, 0xfe, 0xf3, 0x0a, 0x8e, 0xb5, -0x7c, 0x2f, 0x68, 0x6f, 0x35, 0xa8, 0x46, 0x32, 0x14, 0xe6, -0xae, 0x94, 0x3d, 0xa5, 0x48, 0xc1, 0x75, 0x68, 0xd2, 0x8d, -0x37, 0x56, 0xac, 0x69, 0xae, 0xad, 0x1e, 0xe5, 0xe0, 0xdb, -0x3f, 0xb1, 0xe8, 0xf1, 0x8f, 0x5a, 0xdf, 0xaa, 0xba, 0x74, -0x5e, 0x45, 0x94, 0x49, 0xe8, 0xb5, 0x6a, 0xbf, 0x76, 0xc3, -0xd3, 0xf6, 0x54, 0xa3, 0x05, 0xd1, 0x1f, 0xd2, 0xb8, 0x5a, -0x6a, 0x8d, 0x18, 0x53, 0x5d, 0x10, 0x51, 0x45, 0x15, 0xd0, -0x75, 0x10, 0x5d, 0x4e, 0x2d, 0xa0, 0x92, 0x53, 0xd1, 0x46, -0x6b, 0xe7, 0x5f, 0x14, 0x6a, 0x07, 0x53, 0xd6, 0x6e, 0x25, -0x27, 0x23, 0x79, 0xaf, 0x6d, 0xf1, 0xd6, 0xa4, 0x34, 0xed, -0x0a, 0x76, 0xce, 0x0b, 0x0c, 0x57, 0xcf, 0xf2, 0x36, 0xf7, -0x66, 0xee, 0x4d, 0x7e, 0x75, 0xc5, 0x38, 0x8b, 0xca, 0x14, -0x13, 0xf3, 0x67, 0xe5, 0x1c, 0x69, 0x8a, 0xbc, 0xa9, 0xe1, -0x93, 0xdb, 0x56, 0x36, 0x8a, 0x28, 0xaf, 0x81, 0x3f, 0x31, -0x0a, 0xf5, 0x2f, 0x85, 0x7a, 0x08, 0xc2, 0x5e, 0x38, 0xe4, -0x0c, 0x8a, 0xf3, 0x08, 0x63, 0x32, 0xcc, 0x88, 0x3f, 0x88, -0x81, 0x5f, 0x44, 0x78, 0x53, 0x4b, 0x1a, 0x66, 0x91, 0x04, -0x78, 0xc1, 0xda, 0x2b, 0xeb, 0x78, 0x73, 0x0a, 0xab, 0xe2, -0x9d, 0x59, 0x2d, 0x23, 0xf9, 0x9f, 0x71, 0xc2, 0x78, 0x25, -0x89, 0xc6, 0x3a, 0xd2, 0x5a, 0x43, 0xf3, 0x36, 0xe8, 0xa2, -0x8a, 0xfd, 0x58, 0xfd, 0xb4, 0x28, 0xa2, 0x8a, 0x00, 0x29, -0x08, 0xf9, 0x48, 0xa5, 0xa6, 0x48, 0xdb, 0x50, 0x9f, 0x6a, -0x04, 0xf6, 0x3c, 0x1f, 0xe2, 0x3f, 0xfc, 0x8c, 0x12, 0x7a, -0x0e, 0x2b, 0x94, 0xae, 0xa7, 0xe2, 0x1c, 0xa2, 0x4d, 0x70, -0xaf, 0x71, 0xcd, 0x72, 0xd5, 0xf8, 0x6e, 0x61, 0x6f, 0xad, -0xd4, 0xb7, 0x73, 0xf9, 0xbf, 0x35, 0xd7, 0x1d, 0x55, 0xae, -0xec, 0x28, 0xa2, 0x8a, 0xf3, 0x8f, 0x2c, 0xf4, 0x1f, 0x84, -0xa8, 0x05, 0xfc, 0x8e, 0x7a, 0xf4, 0x15, 0xec, 0xb5, 0xe4, -0x5f, 0x08, 0xa1, 0x2f, 0x70, 0xcd, 0x8e, 0x06, 0x4d, 0x7a, -0xed, 0x7e, 0xbb, 0xc3, 0xb1, 0xb6, 0x06, 0x27, 0xee, 0xbc, -0x2b, 0x1b, 0x65, 0xb1, 0xf9, 0x9e, 0x57, 0xf1, 0x76, 0xe4, -0x17, 0x8d, 0x3f, 0xba, 0x2b, 0xcb, 0x47, 0x4a, 0xf4, 0x6f, -0x8b, 0x88, 0xcb, 0x72, 0xb9, 0xfe, 0x33, 0x5e, 0x73, 0x5f, -0x01, 0x9e, 0x49, 0xcb, 0x1f, 0x3b, 0x9f, 0x98, 0x71, 0x1c, -0xdc, 0xb3, 0x3a, 0x97, 0x0a, 0x28, 0xa2, 0xbc, 0x13, 0xe6, -0x49, 0x20, 0x97, 0xc9, 0x99, 0x24, 0xf4, 0x35, 0xee, 0x1e, -0x04, 0xf1, 0x2c, 0x57, 0xd6, 0x31, 0xc0, 0xdc, 0x3a, 0x8e, -0xf5, 0xe1, 0x75, 0x7f, 0x4a, 0xd6, 0x26, 0xd2, 0xee, 0x16, -0x45, 0x76, 0xc0, 0xec, 0x2b, 0xdb, 0xca, 0xb3, 0x17, 0x97, -0xd6, 0xe6, 0xfb, 0x2f, 0x73, 0xe8, 0x72, 0x5c, 0xd5, 0xe5, -0x55, 0xf9, 0xed, 0x78, 0xbd, 0xcf, 0xa5, 0xb3, 0x9a, 0x5a, -0xf3, 0x0f, 0x0f, 0xfc, 0x4e, 0x46, 0x51, 0x1c, 0xa8, 0x7f, -0x1a, 0xee, 0x74, 0xbf, 0x10, 0xdb, 0xea, 0x43, 0xe5, 0x60, -0x0f, 0xd6, 0xbf, 0x54, 0xc2, 0xe6, 0x58, 0x6c, 0x5a, 0x5e, -0xce, 0x5a, 0x9f, 0xb6, 0x60, 0xf3, 0x6c, 0x26, 0x39, 0x27, -0x4a, 0x7a, 0xf6, 0x35, 0xa8, 0xa4, 0x52, 0x08, 0xe0, 0xe6, -0x96, 0xbd, 0x43, 0xd8, 0x0a, 0x64, 0xa7, 0x08, 0x69, 0xf5, -0x05, 0xcb, 0xed, 0x4a, 0x00, 0xc4, 0xd4, 0xe4, 0xeb, 0x5c, -0x4e, 0xb9, 0x2e, 0x37, 0x57, 0x59, 0xaa, 0x4b, 0xc1, 0xae, -0x1f, 0x5f, 0x9b, 0x05, 0xb9, 0xa0, 0x0e, 0x2b, 0x5d, 0x9b, -0x0a, 0xfc, 0xd7, 0x96, 0x78, 0xb2, 0xef, 0xcb, 0x82, 0x66, -0xcf, 0x40, 0x6b, 0xd1, 0x3c, 0x41, 0x3e, 0x11, 0xab, 0xc7, -0xbc, 0x7d, 0x7d, 0xe4, 0xd8, 0x4c, 0x73, 0xd4, 0x62, 0xa6, -0x4f, 0x96, 0x2d, 0x91, 0x39, 0x72, 0xc5, 0xb3, 0xe5, 0x5f, -0x8d, 0x1a, 0x9f, 0x99, 0x34, 0x8a, 0x0f, 0x53, 0x5f, 0x3b, -0xeb, 0xd3, 0x7c, 0xcf, 0xf5, 0xaf, 0x5e, 0xf8, 0xa7, 0xa8, -0xf9, 0xfa, 0x93, 0x8c, 0xf4, 0x26, 0xbc, 0x53, 0x5c, 0x97, -0x32, 0x35, 0x7c, 0x2a, 0x7e, 0xd3, 0x11, 0x26, 0x7e, 0x6d, -0x17, 0xed, 0x71, 0x52, 0x91, 0xcf, 0x5e, 0x3f, 0x5a, 0xfd, -0x6d, 0xff, 0x00, 0x82, 0x7c, 0xf8, 0x50, 0x78, 0x7f, 0xe0, -0xce, 0x9d, 0x70, 0x55, 0x96, 0x4b, 0x88, 0x12, 0x43, 0x9f, -0xf6, 0xc9, 0x7e, 0x3f, 0x02, 0xb5, 0xf9, 0x2f, 0x67, 0x61, -0x26, 0xb1, 0xab, 0x59, 0x58, 0x44, 0x71, 0x2d, 0xd4, 0xe9, -0x02, 0x9c, 0x67, 0x96, 0x60, 0xa3, 0xf9, 0xd7, 0xee, 0x3f, -0xc0, 0xad, 0x0e, 0x3f, 0x0f, 0x7c, 0x3c, 0xd2, 0xad, 0x62, -0x5d, 0xb1, 0x84, 0xc2, 0x80, 0x31, 0x85, 0x03, 0x6a, 0xfe, -0x82, 0xbe, 0xab, 0x06, 0xad, 0x76, 0x7d, 0xb6, 0x02, 0x3a, -0x36, 0x7a, 0xad, 0xab, 0x74, 0xad, 0x68, 0x0f, 0x4a, 0xc5, -0xb5, 0x3d, 0x2b, 0x5a, 0xdc, 0xe7, 0x15, 0xe9, 0x1e, 0xb1, -0xa9, 0x09, 0xab, 0x91, 0x9e, 0x95, 0x42, 0x0e, 0xd5, 0x7a, -0x2c, 0xd0, 0x05, 0xa4, 0xe9, 0x53, 0x2d, 0x42, 0x87, 0x8a, -0x95, 0x4d, 0x00, 0x48, 0xb4, 0xe5, 0xa6, 0x8e, 0x94, 0xe1, -0xd6, 0x80, 0x12, 0xa2, 0x73, 0x52, 0x1e, 0x95, 0x13, 0x1c, -0xd0, 0x04, 0x6f, 0xde, 0xa9, 0xcd, 0xd0, 0xd5, 0xa7, 0x35, -0x4e, 0x73, 0xd6, 0x80, 0x28, 0x4e, 0x7a, 0xd7, 0xc7, 0xde, -0x3a, 0x94, 0xfc, 0x42, 0xfd, 0xad, 0xad, 0x74, 0xef, 0xde, -0x49, 0x6d, 0xa2, 0x45, 0x1c, 0x6c, 0x8d, 0xf7, 0x55, 0x80, -0xde, 0xc4, 0x0f, 0x7d, 0xcb, 0x5f, 0x59, 0xeb, 0xda, 0x9c, -0x3a, 0x3e, 0x97, 0x7b, 0x7f, 0x70, 0xdb, 0x6d, 0xed, 0x21, -0x79, 0xe4, 0x6e, 0x98, 0x55, 0x52, 0xc7, 0xf4, 0x15, 0xf2, -0x6f, 0xec, 0x7b, 0xa6, 0x4f, 0xe2, 0x6f, 0x11, 0xf8, 0x8b, -0xc5, 0xb7, 0xa0, 0xb5, 0xd5, 0xec, 0xec, 0xe5, 0x88, 0xe3, -0x73, 0xb1, 0x66, 0xc7, 0xf2, 0xaf, 0x9d, 0xcd, 0x5f, 0xb6, -0xab, 0x43, 0x08, 0xbe, 0xd4, 0xae, 0xfd, 0x23, 0xaf, 0xe6, -0x7c, 0xa6, 0x76, 0xfd, 0xbd, 0x6c, 0x36, 0x05, 0x7d, 0xb9, -0x73, 0x3f, 0x48, 0xeb, 0xf9, 0xd8, 0xfb, 0x2f, 0xc3, 0x96, -0xc2, 0x1b, 0x68, 0xc6, 0x31, 0xc5, 0x6f, 0xd5, 0x1d, 0x32, -0x2d, 0x91, 0x81, 0xe8, 0x2a, 0xf5, 0x7d, 0x11, 0xf5, 0x61, -0x58, 0x9e, 0x34, 0xd6, 0x57, 0xc3, 0xfe, 0x15, 0xd5, 0x35, -0x06, 0x60, 0x82, 0x08, 0x19, 0x81, 0x3e, 0xb8, 0xe2, 0xb6, -0xeb, 0xc6, 0x7f, 0x6b, 0x1d, 0x56, 0x5d, 0x37, 0xe0, 0xfe, -0xaf, 0xe4, 0x96, 0x5c, 0xc6, 0x4b, 0x32, 0x9c, 0x60, 0x01, -0x40, 0x1f, 0x87, 0xdf, 0xb5, 0xef, 0x8d, 0xee, 0xbe, 0x21, -0xfc, 0x65, 0xb9, 0x8e, 0x49, 0x9a, 0x60, 0x92, 0x15, 0x03, -0x27, 0x8c, 0x9a, 0xfd, 0x4f, 0xff, 0x00, 0x82, 0x6a, 0xfc, -0x16, 0xd2, 0x7c, 0x11, 0xfb, 0x3e, 0xd9, 0x78, 0x8a, 0xe2, -0xcd, 0x7f, 0xb5, 0x2e, 0xe5, 0x96, 0x5f, 0x31, 0xc0, 0x24, -0x28, 0x27, 0x1d, 0xab, 0xf1, 0x7f, 0x5a, 0xd6, 0x4d, 0xf7, -0xc4, 0x6b, 0xbb, 0xd7, 0xcb, 0xef, 0xbb, 0x20, 0x1e, 0xbc, -0x6e, 0xc5, 0x7e, 0xe4, 0xfc, 0x03, 0xf8, 0xad, 0xa0, 0x59, -0x7e, 0xcb, 0x7a, 0x6a, 0xa5, 0xfd, 0xa5, 0xab, 0xda, 0xdb, -0x32, 0x79, 0x6d, 0x30, 0x0c, 0x48, 0x04, 0x93, 0x8a, 0x00, -0xfc, 0xe2, 0xff, 0x00, 0x82, 0x9c, 0xf8, 0xf4, 0xf8, 0xaf, -0xe3, 0x0d, 0xae, 0x8d, 0x1c, 0x81, 0x92, 0xd4, 0x9c, 0xaa, -0xf6, 0x27, 0x8f, 0xeb, 0x5f, 0x68, 0xff, 0x00, 0xc1, 0x2a, -0x3e, 0x1f, 0x2e, 0x87, 0xf0, 0xf6, 0xff, 0x00, 0x5c, 0x92, -0x20, 0xad, 0x2f, 0xc8, 0xac, 0x7d, 0x3b, 0xd7, 0xe5, 0xcf, -0xc4, 0x0d, 0x71, 0xfe, 0x28, 0x7e, 0xd0, 0xba, 0xa5, 0xdb, -0x4a, 0x24, 0x8d, 0xef, 0x99, 0x51, 0xb7, 0x6e, 0x5c, 0x6e, -0xc7, 0x5a, 0xfd, 0x77, 0xd1, 0xbe, 0x29, 0x78, 0x7b, 0xf6, -0x62, 0xfd, 0x94, 0xac, 0x52, 0x4b, 0x98, 0x1b, 0x52, 0x96, -0xc1, 0xe4, 0x58, 0xc4, 0xaa, 0xac, 0x18, 0x83, 0x82, 0x45, -0x00, 0x7c, 0x85, 0xff, 0x00, 0x05, 0x5a, 0xf8, 0x9c, 0xba, -0x9e, 0xb3, 0x1e, 0x8f, 0x0c, 0xdb, 0xf7, 0x48, 0x43, 0x28, -0x27, 0xa0, 0x35, 0xbb, 0xff, 0x00, 0x04, 0x7a, 0xf8, 0x76, -0x6e, 0x7c, 0x47, 0xab, 0xf8, 0x92, 0x58, 0xc9, 0x58, 0x61, -0xd8, 0x8c, 0x7a, 0x75, 0x03, 0xfc, 0x6b, 0xe0, 0x5f, 0x8a, -0x7f, 0x10, 0x35, 0x1f, 0x8c, 0x3e, 0x3a, 0x6b, 0xdb, 0x89, -0x0c, 0xaf, 0x34, 0xa4, 0x22, 0xe4, 0x9c, 0x02, 0x7d, 0xeb, -0xf7, 0x13, 0xfe, 0x09, 0xf1, 0xf0, 0x8c, 0x7c, 0x2e, 0xf8, -0x11, 0xa6, 0xf9, 0xd1, 0x14, 0xbc, 0xbd, 0x02, 0x57, 0x2c, -0xbb, 0x4e, 0x3a, 0xff, 0x00, 0x5a, 0x00, 0xfa, 0x76, 0x46, -0x11, 0xa1, 0x63, 0xd8, 0x57, 0x83, 0x7c, 0x46, 0xbf, 0xfb, -0x66, 0xb9, 0xb3, 0x39, 0x08, 0x2b, 0xda, 0xf5, 0xdb, 0x9f, -0xb2, 0xe9, 0xb2, 0xbf, 0xb5, 0x7c, 0xeb, 0xab, 0x5c, 0x9b, -0xcd, 0x4e, 0xe2, 0x53, 0xce, 0x5a, 0xbe, 0x13, 0x8a, 0x31, -0x1c, 0xb4, 0xa1, 0x45, 0x75, 0x3f, 0x35, 0xe3, 0x3c, 0x57, -0x2d, 0x18, 0x61, 0xd7, 0x57, 0x72, 0xa5, 0x14, 0x51, 0x5f, -0x9b, 0x9f, 0x92, 0x05, 0x14, 0xa0, 0x64, 0xf1, 0xcd, 0x3f, -0xec, 0xd3, 0xf6, 0x85, 0xcf, 0xe1, 0x4e, 0xcd, 0xec, 0x16, -0x6f, 0x64, 0x47, 0x45, 0x39, 0xa3, 0x91, 0x3e, 0xf4, 0x6c, -0x3f, 0x0a, 0x6d, 0x01, 0xb6, 0xe1, 0x45, 0x14, 0x52, 0x02, -0xd6, 0x9c, 0xaa, 0xd7, 0x48, 0x1b, 0x18, 0xcf, 0x7a, 0xf7, -0x2f, 0x09, 0x69, 0xb6, 0x12, 0x58, 0x2b, 0xac, 0x51, 0x33, -0xfd, 0x2b, 0xc0, 0xc8, 0xcf, 0x7c, 0x57, 0xa3, 0xfc, 0x29, -0xd5, 0x9d, 0x6e, 0x4d, 0xb9, 0x39, 0xcf, 0xa9, 0xaf, 0xa9, -0xc8, 0x31, 0x30, 0xa5, 0x89, 0x54, 0xe7, 0x1b, 0xf3, 0x1f, -0x67, 0xc2, 0xf8, 0xba, 0x74, 0x71, 0x6a, 0x95, 0x48, 0xdf, -0x9b, 0xa9, 0xeb, 0x88, 0xa1, 0x06, 0x00, 0x00, 0x0e, 0xc2, -0x9f, 0x45, 0x15, 0xfa, 0xd1, 0xfb, 0x90, 0x51, 0x45, 0x14, -0x00, 0x51, 0x45, 0x14, 0x00, 0x57, 0x94, 0xfc, 0x5f, 0xd4, -0x3e, 0x48, 0xad, 0x94, 0xfd, 0xe3, 0x5e, 0xa7, 0x23, 0x6c, -0x42, 0x7d, 0x05, 0x78, 0x2f, 0xc4, 0x4b, 0xf3, 0x7b, 0xaf, -0xba, 0xe7, 0x88, 0xf8, 0xaf, 0x95, 0xe2, 0x3a, 0xfe, 0xcb, -0x06, 0xe0, 0xbe, 0xd6, 0x87, 0xc5, 0x71, 0x66, 0x27, 0xd8, -0xe5, 0xee, 0x0b, 0x79, 0x3b, 0x1c, 0xb5, 0x14, 0x51, 0x5f, -0x93, 0x1f, 0x87, 0x85, 0x76, 0x7f, 0x0c, 0x2c, 0x7e, 0xd3, -0xaa, 0x99, 0x08, 0xc8, 0xce, 0x2b, 0x8c, 0x63, 0x80, 0x6b, -0xd7, 0x3e, 0x13, 0xe9, 0xde, 0x5d, 0xa0, 0x94, 0x8e, 0x71, -0x9e, 0x95, 0xee, 0x64, 0xb4, 0x3d, 0xbe, 0x36, 0x0b, 0xb6, -0xa7, 0xd1, 0xf0, 0xf6, 0x1f, 0xeb, 0x39, 0x8d, 0x35, 0xd1, -0x6a, 0x7a, 0x42, 0xae, 0xd0, 0x07, 0xa5, 0x3a, 0x8a, 0x2b, -0xf6, 0x73, 0xfa, 0x08, 0x28, 0xa2, 0x9a, 0xcd, 0xb4, 0x13, -0xe9, 0x40, 0x1e, 0x67, 0xf1, 0x7b, 0x51, 0xdb, 0x6d, 0x15, -0xb8, 0x3f, 0x78, 0xd7, 0x93, 0xd7, 0x5f, 0xf1, 0x32, 0xf4, -0xdd, 0x6b, 0xdb, 0x33, 0x90, 0x95, 0xc8, 0x57, 0xe2, 0xf9, -0xcd, 0x7f, 0x6f, 0x8d, 0x9c, 0xbb, 0x68, 0x7f, 0x3e, 0x71, -0x06, 0x27, 0xeb, 0x39, 0x8d, 0x49, 0x74, 0x5a, 0x7d, 0xc1, -0x45, 0x14, 0x57, 0x88, 0x7c, 0xe9, 0xad, 0xe1, 0x7b, 0x2f, -0xb7, 0x6b, 0x56, 0xa9, 0x8c, 0xfc, 0xe3, 0xf9, 0xd7, 0xd1, -0xa8, 0x81, 0x10, 0x01, 0xc0, 0x03, 0x15, 0xe2, 0xff, 0x00, -0x0a, 0xac, 0x7e, 0xd1, 0xac, 0x89, 0x08, 0xe1, 0x06, 0x6b, -0xda, 0xeb, 0xf5, 0x1e, 0x18, 0xa3, 0xc9, 0x85, 0x95, 0x4f, -0xe6, 0x7f, 0x91, 0xfb, 0x3f, 0x07, 0x61, 0xfd, 0x9e, 0x0a, -0x55, 0x5f, 0xda, 0x7f, 0x90, 0x51, 0x45, 0x15, 0xf6, 0x47, -0xdf, 0x05, 0x14, 0x51, 0x40, 0x05, 0x41, 0x78, 0xfe, 0x5d, -0xbc, 0x87, 0xd0, 0x54, 0xf5, 0x8b, 0xe2, 0xdb, 0xbf, 0xb1, -0xe8, 0xd3, 0x3e, 0x71, 0xf2, 0xd6, 0x35, 0xa6, 0xa9, 0xd3, -0x94, 0xdf, 0x44, 0x73, 0xe2, 0x2a, 0x2a, 0x54, 0xa5, 0x51, -0xf4, 0x47, 0x84, 0xf8, 0xaa, 0xeb, 0xed, 0x7a, 0xed, 0xcb, -0xe7, 0x80, 0x71, 0x59, 0x34, 0xf9, 0xe4, 0x33, 0x4f, 0x24, -0x84, 0xe4, 0xb3, 0x13, 0x4c, 0xaf, 0xc1, 0xea, 0xcf, 0xda, -0x54, 0x94, 0xfb, 0xb6, 0x7f, 0x34, 0x57, 0xa9, 0xed, 0x6a, -0xca, 0xa3, 0xea, 0xdb, 0x0a, 0x28, 0xa7, 0x20, 0xcb, 0x01, -0x59, 0x18, 0xef, 0xa1, 0xeb, 0xff, 0x00, 0x08, 0x6c, 0xfc, -0xbd, 0x3a, 0x69, 0x8f, 0x73, 0x8a, 0xf4, 0x5a, 0xe5, 0x7e, -0x1c, 0x5a, 0xfd, 0x97, 0xc2, 0xd6, 0xe7, 0x18, 0x2e, 0x4b, -0x7e, 0xb5, 0xd5, 0x57, 0xed, 0xd9, 0x55, 0x2f, 0x65, 0x82, -0xa5, 0x1f, 0x23, 0xfa, 0x2b, 0x25, 0xa3, 0xec, 0x32, 0xfa, -0x30, 0xf2, 0x4f, 0xef, 0x3c, 0xcb, 0xe2, 0xce, 0x9e, 0xcf, -0x08, 0x9f, 0x19, 0x03, 0x80, 0x6b, 0xc9, 0xab, 0xe8, 0xff, -0x00, 0x12, 0x69, 0x23, 0x56, 0xd3, 0x64, 0x8b, 0x1f, 0x36, -0x38, 0xaf, 0x9f, 0xf5, 0xbd, 0x2d, 0xf4, 0xbb, 0xe9, 0x22, -0x20, 0x9c, 0x1e, 0xb8, 0xaf, 0x82, 0xe2, 0x4c, 0x1c, 0xa9, -0x62, 0x3e, 0xb0, 0x96, 0x92, 0x3f, 0x33, 0xe2, 0xec, 0x04, -0xe8, 0xe2, 0xbe, 0xb2, 0x97, 0xbb, 0x2f, 0xcc, 0xa1, 0x45, -0x14, 0x57, 0xc7, 0x1f, 0x02, 0x14, 0x51, 0x45, 0x00, 0x28, -0x66, 0x5e, 0x55, 0x8a, 0x9a, 0xd0, 0xd3, 0xb5, 0xeb, 0xbd, -0x3d, 0xc3, 0x0b, 0x89, 0x00, 0x1e, 0xf5, 0x9d, 0x45, 0x69, -0x09, 0xce, 0x9b, 0xe6, 0x83, 0xb1, 0xa5, 0x3a, 0x93, 0xa5, -0x2e, 0x68, 0x36, 0x99, 0xe9, 0xbe, 0x1b, 0xf8, 0x94, 0xa8, -0xc1, 0x27, 0x72, 0xff, 0x00, 0x5c, 0xd7, 0xa4, 0xe9, 0x5a, -0xc4, 0x3a, 0xb4, 0x3b, 0xe3, 0x3c, 0x57, 0xcd, 0x3c, 0x8e, -0x87, 0x1f, 0x4a, 0xdf, 0xf0, 0xbf, 0x89, 0xa6, 0xd1, 0xaf, -0x54, 0x97, 0x2e, 0x87, 0x8c, 0x13, 0xc5, 0x7d, 0x7e, 0x5b, -0xc4, 0x15, 0x69, 0x49, 0x53, 0xc4, 0x6b, 0x1e, 0xe7, 0xde, -0x65, 0x1c, 0x53, 0x5a, 0x84, 0xa3, 0x4b, 0x15, 0xac, 0x7b, -0x9f, 0x43, 0xd5, 0x3b, 0xd7, 0xc2, 0x9a, 0xad, 0xa1, 0x6b, -0x31, 0xea, 0xf6, 0x6b, 0x2a, 0x90, 0x09, 0x1d, 0x33, 0x4b, -0xa8, 0x3e, 0x01, 0xaf, 0xd3, 0x29, 0xd4, 0x8d, 0x58, 0xa9, -0xc5, 0xe8, 0xcf, 0xd8, 0x29, 0x55, 0x85, 0x68, 0x2a, 0x90, -0x77, 0x4c, 0xe7, 0xb5, 0x49, 0x31, 0x9e, 0x6b, 0x82, 0xd7, -0xe5, 0xf9, 0x9b, 0x9a, 0xec, 0x75, 0x59, 0x7e, 0xf5, 0x79, -0xfe, 0xbd, 0x37, 0xcc, 0xdc, 0xd6, 0x86, 0xa7, 0x11, 0xe2, -0x29, 0xf8, 0x6a, 0xf0, 0xaf, 0x8a, 0xba, 0x8f, 0x93, 0x60, -0xc3, 0x3e, 0xa6, 0xbd, 0x8b, 0xc4, 0xb7, 0x3c, 0x3f, 0x35, -0xf3, 0x57, 0xc6, 0x9d, 0x67, 0xca, 0x49, 0x53, 0x3d, 0x01, -0x15, 0xc7, 0x8b, 0x9f, 0xb3, 0xa2, 0xd9, 0xc1, 0x8e, 0xa9, -0xec, 0xa8, 0x49, 0x9f, 0x30, 0x78, 0xe2, 0xf3, 0xed, 0x1a, -0x8c, 0xed, 0x9e, 0x84, 0xd7, 0x95, 0xea, 0xf2, 0x66, 0x57, -0xfa, 0xd7, 0x71, 0xe2, 0x2b, 0xaf, 0x32, 0x59, 0x5b, 0x3d, -0x58, 0x9a, 0xf3, 0xdd, 0x49, 0xf3, 0x2b, 0xfd, 0x6b, 0xe4, -0x30, 0x8b, 0x9a, 0x4e, 0x47, 0xc1, 0xe0, 0x17, 0x34, 0x9c, -0x99, 0xdb, 0xfe, 0xce, 0xda, 0x0f, 0xfc, 0x24, 0x7f, 0x19, -0xbc, 0x3f, 0x0b, 0x26, 0xf8, 0xad, 0xe5, 0x37, 0x4e, 0x3d, -0x90, 0x12, 0x3f, 0x5c, 0x57, 0xed, 0x9f, 0x86, 0x6c, 0x7f, -0xb3, 0x34, 0x6b, 0x1b, 0x5e, 0x86, 0x18, 0x51, 0x0e, 0x3d, -0x40, 0xe7, 0xf5, 0xaf, 0xca, 0xcf, 0xf8, 0x27, 0x8f, 0x84, -0xce, 0xbf, 0xf1, 0x57, 0x50, 0xd4, 0x19, 0x37, 0x47, 0x69, -0x1c, 0x51, 0x03, 0x8e, 0xee, 0xc5, 0x8f, 0x3f, 0x48, 0xcf, -0xe7, 0x5f, 0xac, 0x36, 0xbc, 0x60, 0x57, 0xd8, 0xe1, 0xe3, -0x6a, 0x67, 0xdf, 0xe1, 0x23, 0xcb, 0x4c, 0xd6, 0xb6, 0x3d, -0x2b, 0x5e, 0xd8, 0xf1, 0x59, 0x16, 0xbd, 0xb9, 0xad, 0x9b, -0x61, 0xd2, 0xba, 0x8e, 0xc3, 0x42, 0x0e, 0xd5, 0x7e, 0x23, -0xd2, 0xa8, 0xc1, 0x57, 0xa2, 0xe9, 0x40, 0x16, 0x63, 0xe9, -0x53, 0x25, 0x42, 0x86, 0xa7, 0x43, 0x9a, 0x00, 0x78, 0x39, -0xa5, 0xa4, 0x1d, 0x29, 0xc3, 0xad, 0x00, 0x31, 0x8d, 0x42, -0xd5, 0x2b, 0x9a, 0x85, 0xcd, 0x00, 0x45, 0x21, 0xc5, 0x51, -0x9d, 0xba, 0xd5, 0xb9, 0x4e, 0x05, 0x51, 0x9d, 0xb8, 0x34, -0x01, 0xe2, 0xff, 0x00, 0xb5, 0x67, 0x89, 0xd7, 0xc3, 0x7f, -0x06, 0x35, 0xdc, 0x36, 0xd9, 0xaf, 0x95, 0x6c, 0xa3, 0xe7, -0x92, 0x5d, 0x80, 0x3f, 0xa6, 0x6a, 0xaf, 0xec, 0x9f, 0xe1, -0x53, 0xa2, 0x7c, 0x39, 0xd3, 0x4b, 0x26, 0xd7, 0xb8, 0x1e, -0x73, 0x71, 0xeb, 0xd2, 0xbc, 0xeb, 0xf6, 0xd1, 0xd5, 0xa4, -0xd6, 0xb5, 0xef, 0x05, 0x78, 0x3a, 0xdd, 0x98, 0xb5, 0xcc, -0xcd, 0x7b, 0x32, 0x2f, 0x71, 0x9f, 0x2d, 0x3d, 0xfa, 0xef, -0x3f, 0x85, 0x7d, 0x35, 0xf0, 0xef, 0x45, 0x4d, 0x17, 0x41, -0xb2, 0xb5, 0x8d, 0x76, 0xac, 0x31, 0x2a, 0x00, 0x07, 0xa0, -0xaf, 0x9d, 0xa5, 0xfe, 0xd1, 0x9a, 0xd4, 0x9f, 0x4a, 0x71, -0x4b, 0xe6, 0xf5, 0x7f, 0x81, 0xf2, 0x74, 0x7f, 0xda, 0xb3, -0xba, 0xb5, 0x3a, 0x52, 0x8a, 0x8f, 0xce, 0x5a, 0xb3, 0xb9, -0xb5, 0x5d, 0xb1, 0x8a, 0x9a, 0x9b, 0x18, 0xda, 0x80, 0x53, -0xab, 0xe8, 0x8f, 0xac, 0x0a, 0xf1, 0x2f, 0xdb, 0x0a, 0xda, -0xe2, 0xf3, 0xe0, 0x5e, 0xbf, 0x05, 0xa4, 0x66, 0x49, 0xe5, -0x88, 0xa0, 0x03, 0xd3, 0xbd, 0x7b, 0x6d, 0x73, 0xbf, 0x10, -0x34, 0x15, 0xf1, 0x37, 0x84, 0x35, 0x3d, 0x38, 0xae, 0xe3, -0x3c, 0x2c, 0x83, 0x8c, 0xf5, 0x14, 0x01, 0xfc, 0xc9, 0x78, -0xaa, 0xd5, 0xf4, 0xbf, 0x11, 0xde, 0xc3, 0xca, 0xbc, 0x52, -0xb0, 0xce, 0x7b, 0xe7, 0x9a, 0xeb, 0x74, 0x6f, 0x8d, 0x7a, -0xee, 0x8f, 0xe1, 0xb6, 0xd2, 0x63, 0xd4, 0x6e, 0xc4, 0x05, -0x4a, 0xec, 0x12, 0x9d, 0xbc, 0xf5, 0xe2, 0xbd, 0x2f, 0xf6, -0xb7, 0xfd, 0x9f, 0x35, 0x6f, 0x87, 0x3e, 0x3f, 0xd4, 0xa4, -0x8e, 0xc6, 0x44, 0xb1, 0x32, 0x17, 0x12, 0xb8, 0x23, 0x76, -0x4e, 0x49, 0xe9, 0x5f, 0x37, 0x10, 0x54, 0xe0, 0xd0, 0x06, -0xae, 0x89, 0xae, 0x4b, 0xa5, 0x6a, 0xa2, 0xf4, 0x3b, 0x09, -0x83, 0x6e, 0xdc, 0x0f, 0x39, 0xcd, 0x75, 0x9e, 0x3a, 0xf8, -0xd3, 0xe2, 0x5f, 0x1b, 0x41, 0x1d, 0xa5, 0xe6, 0xa7, 0x71, -0x35, 0x94, 0x68, 0x11, 0x62, 0x79, 0x09, 0x18, 0xaf, 0x3f, -0x55, 0x2e, 0x40, 0x50, 0x49, 0x3d, 0x85, 0x7a, 0x47, 0xc2, -0x3f, 0x81, 0x5e, 0x24, 0xf8, 0xad, 0xe2, 0x4b, 0x5d, 0x36, -0xcb, 0x4d, 0xbb, 0xf2, 0xa6, 0x60, 0x3c, 0xf5, 0x88, 0xed, -0x1c, 0xfa, 0xe2, 0x80, 0x3d, 0x03, 0xf6, 0x2e, 0xf8, 0x15, -0xa8, 0x7c, 0x5e, 0xf8, 0xb3, 0xa6, 0x40, 0xb6, 0xcc, 0xf6, -0x71, 0x9f, 0x31, 0xd8, 0xa8, 0x23, 0x19, 0xf7, 0xaf, 0xe8, -0x3b, 0xc3, 0xda, 0x3c, 0x5e, 0x1f, 0xd1, 0x6c, 0xf4, 0xf8, -0x14, 0x24, 0x56, 0xf1, 0x2a, 0x00, 0xa3, 0x03, 0x81, 0x5f, -0x3e, 0x7e, 0xc7, 0xff, 0x00, 0xb2, 0x9e, 0x97, 0xf0, 0x13, -0xc2, 0x76, 0x32, 0xbc, 0x29, 0x26, 0xac, 0xf0, 0x00, 0xf2, -0x90, 0x0b, 0x03, 0x8e, 0xfc, 0x0a, 0xfa, 0x52, 0x80, 0x39, -0x0f, 0x88, 0xba, 0x8f, 0xd8, 0xf4, 0x79, 0x00, 0x38, 0x24, -0x57, 0x84, 0x03, 0x9c, 0x9f, 0x5e, 0x6b, 0xd3, 0xbe, 0x2d, -0xea, 0x5d, 0x2d, 0xd4, 0xfd, 0xe2, 0x05, 0x79, 0x8d, 0x7e, -0x47, 0xc4, 0x35, 0xfd, 0xae, 0x35, 0xc7, 0xa4, 0x4f, 0xc2, -0xf8, 0xab, 0x13, 0xed, 0xf3, 0x07, 0x05, 0xb4, 0x55, 0x82, -0x8a, 0x28, 0xaf, 0x98, 0x3e, 0x34, 0xd7, 0xf0, 0xae, 0x9b, -0xfd, 0xa9, 0xac, 0xc5, 0x11, 0xe5, 0x7a, 0x9a, 0xf6, 0xbb, -0x6f, 0x07, 0x5a, 0x2c, 0x28, 0x1a, 0x34, 0x27, 0x1f, 0xdd, -0xaf, 0x3b, 0xf8, 0x51, 0xa6, 0xfd, 0xa2, 0xf9, 0xe7, 0x23, -0x80, 0x70, 0x0d, 0x7b, 0x38, 0xe2, 0xbf, 0x4b, 0xe1, 0xdc, -0x15, 0x37, 0x86, 0xf6, 0xb5, 0x23, 0x76, 0xd9, 0xfb, 0x07, -0x0a, 0x65, 0xd4, 0xa5, 0x83, 0x75, 0xaa, 0xc6, 0xee, 0x4c, -0xe3, 0x35, 0xbf, 0x01, 0xc3, 0x75, 0x6c, 0xde, 0x4a, 0x20, -0x38, 0xec, 0x2b, 0xc7, 0xb5, 0xcd, 0x29, 0xf4, 0x9b, 0xc7, -0x89, 0xb2, 0x79, 0xf4, 0xaf, 0xa5, 0x3a, 0xd7, 0x92, 0xfc, -0x58, 0xd2, 0xd6, 0x17, 0x17, 0x08, 0xb8, 0x1e, 0x82, 0x96, -0x7f, 0x96, 0x52, 0x54, 0x3e, 0xb1, 0x4d, 0x59, 0xa2, 0x78, -0x9f, 0x27, 0xa2, 0xb0, 0xcf, 0x13, 0x49, 0x59, 0xc4, 0xf3, -0x4a, 0x28, 0xa2, 0xbf, 0x35, 0x3f, 0x22, 0x0a, 0xea, 0xfe, -0x1c, 0x4b, 0xe5, 0xeb, 0x68, 0x07, 0xde, 0x73, 0x81, 0x5c, -0xa5, 0x74, 0x9e, 0x02, 0x65, 0x4d, 0x76, 0x37, 0x63, 0xd0, -0xf1, 0xf5, 0xaf, 0x43, 0x2f, 0x7c, 0xb8, 0xba, 0x6f, 0xcc, -0xf4, 0xf2, 0xb7, 0xcb, 0x8d, 0xa4, 0xfc, 0xd1, 0xf4, 0x08, -0xe9, 0x4b, 0x4c, 0x4e, 0x53, 0xf0, 0xa7, 0xd7, 0xee, 0x68, -0xfe, 0x91, 0x41, 0x45, 0x14, 0x50, 0x30, 0xa2, 0x8a, 0x28, -0x02, 0x9e, 0xab, 0x70, 0x2d, 0xac, 0x65, 0x7c, 0xf4, 0x15, -0xf3, 0x96, 0xb1, 0x73, 0xf6, 0xbd, 0x52, 0xe6, 0x4c, 0xe7, -0x2e, 0x6b, 0xdc, 0xbc, 0x7b, 0xa8, 0xad, 0x8e, 0x89, 0x31, -0x2d, 0x82, 0x46, 0x2b, 0xc0, 0x49, 0xc9, 0x24, 0xf5, 0x27, -0x35, 0xf9, 0xbf, 0x14, 0xd7, 0xbd, 0x48, 0x51, 0x5d, 0x35, -0x3f, 0x24, 0xe3, 0x4c, 0x47, 0x35, 0x5a, 0x74, 0x17, 0x4d, -0x44, 0xa2, 0x8a, 0x2b, 0xe1, 0x0f, 0xcd, 0x45, 0x44, 0xf3, -0x25, 0x44, 0x1f, 0xc4, 0xd8, 0xaf, 0x7f, 0xf0, 0x2d, 0x88, -0xb5, 0xd1, 0xe3, 0x3d, 0x09, 0x15, 0xe1, 0xda, 0x0d, 0xaf, -0xdb, 0x35, 0x78, 0x13, 0x19, 0xc1, 0xcd, 0x7d, 0x13, 0xa3, -0x5b, 0xfd, 0x97, 0x4e, 0x85, 0x31, 0xd1, 0x6b, 0xee, 0xf8, -0x5a, 0x8d, 0xea, 0x4e, 0xb3, 0xf4, 0x3f, 0x4a, 0xe0, 0xbc, -0x3f, 0x35, 0x5a, 0x95, 0xdf, 0x4d, 0x0b, 0xd4, 0x51, 0x45, -0x7e, 0x90, 0x7e, 0xb6, 0x15, 0x05, 0xdb, 0xf9, 0x56, 0xf2, -0x37, 0xa2, 0xd4, 0xf5, 0x99, 0xe2, 0x19, 0xbc, 0x8d, 0x1a, -0xe5, 0xc7, 0x5d, 0x86, 0xb2, 0xab, 0x2e, 0x48, 0x4a, 0x5d, -0x91, 0x8d, 0x69, 0xfb, 0x3a, 0x72, 0x9f, 0x64, 0xcf, 0x9f, -0xfc, 0x49, 0x72, 0x6e, 0xf5, 0x8b, 0x99, 0x33, 0x9f, 0x9c, -0xd6, 0x65, 0x4f, 0x7a, 0x73, 0x77, 0x26, 0x7d, 0x6a, 0x0a, -0xfc, 0x1a, 0xac, 0x9c, 0xea, 0x4a, 0x4f, 0xab, 0x3f, 0x99, -0xab, 0xcd, 0xd4, 0xab, 0x39, 0x3e, 0xad, 0x85, 0x14, 0x50, -0x4e, 0x05, 0x64, 0x60, 0xcf, 0x56, 0xf8, 0x3d, 0x6c, 0x04, -0x53, 0xcd, 0xeb, 0xc0, 0xaf, 0x50, 0xae, 0x07, 0xe1, 0x4d, -0xb0, 0x87, 0x4a, 0x1e, 0xa4, 0x64, 0xd7, 0x7d, 0x5f, 0xb3, -0xe4, 0xb0, 0xf6, 0x78, 0x1a, 0x68, 0xfe, 0x83, 0xe1, 0xea, -0x7e, 0xcf, 0x2d, 0xa4, 0xbc, 0x82, 0x8a, 0x28, 0xaf, 0x70, -0xfa, 0x30, 0xa2, 0x8a, 0x28, 0x00, 0xae, 0x0b, 0xe2, 0xa6, -0xa4, 0x2d, 0xf4, 0x87, 0x88, 0x1e, 0x5b, 0x8a, 0xee, 0xd8, -0x85, 0x52, 0x4f, 0x41, 0x5e, 0x29, 0xf1, 0x43, 0x57, 0x17, -0x97, 0xab, 0x0a, 0x36, 0x40, 0x3c, 0xd7, 0xcf, 0x67, 0xb8, -0x8f, 0x61, 0x82, 0x97, 0x77, 0xa1, 0xf2, 0xbc, 0x4b, 0x8b, -0x58, 0x6c, 0xbe, 0x6a, 0xfa, 0xcb, 0x43, 0x86, 0x1d, 0x28, -0xa2, 0x8a, 0xfc, 0x74, 0xfc, 0x10, 0x2a, 0xce, 0x9f, 0x0f, -0x9f, 0x77, 0x1a, 0x0e, 0xe4, 0x55, 0x6a, 0xe8, 0xbc, 0x0f, -0xa7, 0x9b, 0xfd, 0x62, 0x11, 0xb7, 0x23, 0x78, 0xae, 0x8c, -0x3d, 0x37, 0x5a, 0xb4, 0x69, 0xae, 0xac, 0xea, 0xc2, 0x52, -0x75, 0xeb, 0xc2, 0x9a, 0xea, 0xcf, 0x72, 0xf0, 0xfd, 0xa8, -0xb3, 0xd1, 0xed, 0x62, 0x1c, 0x61, 0x2b, 0x4a, 0x99, 0x1a, -0x08, 0xd1, 0x54, 0x74, 0x03, 0x14, 0xfa, 0xfd, 0xde, 0x9c, -0x79, 0x20, 0xa2, 0xba, 0x1f, 0xd2, 0xd4, 0xa0, 0xa9, 0xd3, -0x8c, 0x17, 0x45, 0x61, 0x0f, 0x35, 0xc6, 0x78, 0xcb, 0xc1, -0xcb, 0xab, 0x44, 0xd2, 0x42, 0xaa, 0xad, 0x8e, 0x70, 0x2b, -0xb4, 0xa6, 0xb2, 0x82, 0x08, 0x23, 0x23, 0xd2, 0xb1, 0xc4, -0xe1, 0xa9, 0xe2, 0xa9, 0xba, 0x75, 0x16, 0x87, 0x3e, 0x2f, -0x09, 0x4b, 0x1b, 0x49, 0xd2, 0xaa, 0xae, 0x99, 0xf3, 0x3e, -0xa5, 0xa5, 0x4b, 0xa5, 0xce, 0xe8, 0xe0, 0x9c, 0x1e, 0xb5, -0x4c, 0x1c, 0xfb, 0x57, 0xd0, 0x9a, 0xdf, 0x84, 0xad, 0x75, -0x44, 0x62, 0xb1, 0x22, 0xb9, 0xef, 0x8a, 0xf3, 0x6d, 0x7f, -0xe1, 0xbd, 0xd5, 0xab, 0xb3, 0xc6, 0x7e, 0x5f, 0x6a, 0xfc, -0xbf, 0x1f, 0x90, 0xe2, 0x30, 0xcd, 0xca, 0x92, 0xe6, 0x89, -0xf8, 0xce, 0x67, 0xc3, 0x38, 0xac, 0x1b, 0x72, 0xa2, 0xb9, -0xa2, 0x70, 0x94, 0x55, 0x9b, 0xcb, 0x09, 0x6c, 0x1f, 0x6c, -0x80, 0xfe, 0x55, 0x58, 0x1c, 0xd7, 0xcb, 0xc9, 0x38, 0xbb, -0x49, 0x59, 0x9f, 0x1d, 0x28, 0xca, 0x0f, 0x96, 0x4a, 0xcc, -0x28, 0xa2, 0x8a, 0x42, 0x0a, 0x0f, 0x4e, 0x38, 0xa2, 0x8a, -0x18, 0x99, 0xdf, 0x7c, 0x37, 0xf1, 0x0b, 0x5b, 0xdc, 0x08, -0x1d, 0x89, 0xcf, 0x00, 0x13, 0x5e, 0x95, 0x7f, 0x2e, 0xe5, -0xcf, 0x6a, 0xf0, 0x3d, 0x06, 0xf0, 0xd9, 0xea, 0x91, 0x38, -0x24, 0x73, 0x8c, 0x0a, 0xf6, 0x8f, 0x3f, 0x7d, 0x84, 0x6c, -0x4e, 0x49, 0x5a, 0xfd, 0x3f, 0x86, 0x71, 0x52, 0xab, 0x41, -0xd2, 0x97, 0xd9, 0x3f, 0x64, 0xe0, 0xfc, 0x6c, 0xab, 0xe1, -0xa5, 0x46, 0x6f, 0xe1, 0x31, 0x35, 0x79, 0x70, 0x8d, 0x5e, -0x7d, 0xaf, 0xcd, 0x82, 0xf5, 0xda, 0xeb, 0x52, 0xe1, 0x48, -0xaf, 0x3c, 0xf1, 0x0c, 0xd8, 0x0d, 0xcd, 0x7d, 0xa1, 0xfa, -0x11, 0xe7, 0xbe, 0x27, 0xb9, 0xc2, 0xb9, 0xcf, 0xad, 0x7c, -0x8f, 0xf1, 0xb3, 0x56, 0xdd, 0x24, 0xfc, 0xf7, 0x35, 0xf5, -0x07, 0x8c, 0xef, 0x44, 0x36, 0x93, 0xbe, 0x71, 0x80, 0x6b, -0xe3, 0x0f, 0x8b, 0xda, 0x9f, 0x9d, 0x76, 0xeb, 0x9e, 0xa4, -0xd7, 0x85, 0x9b, 0x54, 0xe5, 0xa5, 0xca, 0x7c, 0xd6, 0x79, -0x57, 0x96, 0x8f, 0x2f, 0x73, 0xc6, 0x35, 0xc9, 0xbe, 0xf5, -0x70, 0xf7, 0xcf, 0x97, 0x6a, 0xea, 0xb5, 0xc9, 0xb8, 0x6e, -0x6b, 0x8f, 0xbd, 0x6c, 0x93, 0x5e, 0x4e, 0x0a, 0x36, 0x47, -0x89, 0x97, 0xc2, 0xd1, 0x3f, 0x43, 0xff, 0x00, 0xe0, 0x9a, -0x3e, 0x10, 0xfb, 0x1f, 0x85, 0xaf, 0x75, 0x97, 0x8c, 0xef, -0xbb, 0xb8, 0x92, 0x50, 0xc4, 0x63, 0xe5, 0x50, 0x23, 0x5f, -0xd4, 0x39, 0xfc, 0x6b, 0xef, 0x7b, 0x51, 0x5f, 0x39, 0xfe, -0xc6, 0x5e, 0x13, 0x1e, 0x18, 0xf8, 0x45, 0xa5, 0xc6, 0x54, -0x87, 0x36, 0xf0, 0xa1, 0xca, 0xe3, 0x9d, 0xbb, 0x89, 0xe8, -0x3a, 0x96, 0xfd, 0x2b, 0xe8, 0xeb, 0x45, 0xe0, 0x57, 0xd8, -0x41, 0x5a, 0x29, 0x1f, 0x79, 0x4d, 0x72, 0xc1, 0x23, 0x56, -0xd5, 0x79, 0x15, 0xb1, 0x00, 0xe9, 0x59, 0x36, 0x8b, 0x93, -0x5b, 0x16, 0xe3, 0x91, 0x56, 0x68, 0x5f, 0x84, 0xd5, 0xd8, -0x6a, 0xa4, 0x22, 0xae, 0xc4, 0x31, 0x40, 0x13, 0xa5, 0x4c, -0xb5, 0x12, 0x0a, 0x99, 0x45, 0x00, 0x48, 0x3a, 0x52, 0x8e, -0xb4, 0x94, 0xab, 0x40, 0x10, 0xb5, 0x44, 0xdc, 0x83, 0x4f, -0x63, 0x50, 0xb9, 0xc5, 0x00, 0x41, 0x33, 0x55, 0x0b, 0x86, -0xe0, 0xd5, 0xb9, 0x9a, 0xb9, 0xdf, 0x17, 0xeb, 0x71, 0x78, -0x77, 0xc3, 0x5a, 0xae, 0xab, 0x39, 0x61, 0x0d, 0x8d, 0xac, -0xb7, 0x2f, 0xb0, 0x64, 0xed, 0x45, 0x2c, 0x71, 0xf9, 0x54, -0xc9, 0xa8, 0xa7, 0x27, 0xd0, 0x99, 0x49, 0x46, 0x2e, 0x4f, -0x64, 0x7c, 0x9f, 0x7b, 0xff, 0x00, 0x17, 0x37, 0xf6, 0xb8, -0xbc, 0x99, 0x3f, 0x7d, 0x65, 0xa3, 0x22, 0x5b, 0xab, 0x2f, -0xcc, 0x06, 0xc1, 0xcf, 0x3f, 0xef, 0xb3, 0x57, 0xda, 0x3a, -0x25, 0xb7, 0x97, 0x6f, 0x18, 0xc5, 0x7c, 0x7d, 0xfb, 0x18, -0x68, 0xd3, 0xea, 0xf3, 0x6b, 0xbe, 0x26, 0xbc, 0xf9, 0xae, -0x6f, 0xee, 0x49, 0x2e, 0x7a, 0xe4, 0x92, 0xcd, 0xfa, 0x9a, -0xfb, 0x4a, 0xc2, 0x2d, 0x91, 0x0f, 0x6a, 0xf0, 0x72, 0x54, -0xe7, 0x46, 0x58, 0x97, 0xbd, 0x49, 0x37, 0xf2, 0xe9, 0xf8, -0x1f, 0x31, 0xc3, 0xc9, 0xd4, 0xc3, 0xcf, 0x17, 0x2d, 0xea, -0xc9, 0xcb, 0xe5, 0xb2, 0xfc, 0x0b, 0x74, 0x51, 0x45, 0x7d, -0x01, 0xf5, 0x26, 0x6f, 0x88, 0x35, 0xfb, 0x3f, 0x0c, 0xe9, -0x33, 0xea, 0x37, 0xf2, 0xac, 0x36, 0xd0, 0x8c, 0xb3, 0x31, -0xc0, 0xaf, 0x9c, 0x35, 0x0f, 0xf8, 0x28, 0x6f, 0xc2, 0x7d, -0x33, 0x5b, 0x9b, 0x4e, 0xb8, 0xd7, 0x2d, 0x52, 0x48, 0x9b, -0x6b, 0x66, 0xe1, 0x78, 0x35, 0xb3, 0xfb, 0x6e, 0xf8, 0xb2, -0x4f, 0x0d, 0xfc, 0x22, 0xba, 0x58, 0x4b, 0x06, 0x90, 0x33, -0x31, 0x53, 0xd8, 0x0a, 0xfe, 0x7f, 0xb5, 0x7d, 0x6a, 0xe7, -0x59, 0xf1, 0x55, 0xd5, 0xc7, 0x98, 0xc5, 0xe7, 0xb9, 0x3c, -0x93, 0x9e, 0xa6, 0x80, 0x3f, 0x74, 0x7c, 0x69, 0xe1, 0x3f, -0x86, 0x5f, 0xb6, 0x2e, 0x9f, 0x29, 0xd2, 0xef, 0x56, 0xfe, -0x7f, 0x2c, 0x9f, 0xdc, 0xfc, 0xe3, 0x18, 0xf6, 0x35, 0xf2, -0x1f, 0x8b, 0xff, 0x00, 0xe0, 0x97, 0x77, 0xab, 0xaa, 0x4b, -0xfd, 0x9d, 0xa4, 0xdc, 0xbd, 0xbe, 0x7e, 0x52, 0x22, 0x3f, -0xe3, 0x5f, 0x49, 0xff, 0x00, 0xc1, 0x2f, 0xfc, 0x20, 0xf6, -0x1f, 0x0d, 0xae, 0xf5, 0x79, 0x98, 0x31, 0x94, 0x88, 0x90, -0xe2, 0xbe, 0xe1, 0xa0, 0x0f, 0xca, 0x6f, 0x87, 0x1f, 0xf0, -0x49, 0xd4, 0xd4, 0x6f, 0xe2, 0x9b, 0x59, 0x33, 0x58, 0x22, -0xb6, 0x48, 0x74, 0x23, 0xff, 0x00, 0x66, 0xaf, 0xbc, 0x7e, -0x08, 0x7e, 0xcb, 0xde, 0x17, 0xf8, 0x2f, 0x63, 0x14, 0x56, -0x56, 0xd1, 0x5c, 0x4f, 0x18, 0xc0, 0x99, 0x94, 0xe7, 0xf9, -0x9a, 0xf6, 0x8a, 0x28, 0x01, 0x00, 0x0a, 0x30, 0x06, 0x00, -0xed, 0x4c, 0x99, 0xc4, 0x68, 0xcc, 0x7b, 0x0c, 0xd4, 0x95, -0x9b, 0xaf, 0x5c, 0x8b, 0x4d, 0x32, 0x67, 0x3e, 0x95, 0x9d, -0x49, 0x28, 0x41, 0xc9, 0xf4, 0x32, 0xab, 0x35, 0x4e, 0x0e, -0x6f, 0xa2, 0x3c, 0x4b, 0xe2, 0x0e, 0xa1, 0xf6, 0xdd, 0x75, -0x94, 0x1c, 0x84, 0xae, 0x62, 0xad, 0x6a, 0x77, 0x06, 0xeb, -0x51, 0xb8, 0x94, 0xf7, 0x73, 0x55, 0x6b, 0xf0, 0xac, 0x55, -0x57, 0x5a, 0xbc, 0xea, 0x3e, 0xac, 0xfe, 0x6b, 0xc6, 0x56, -0x78, 0x8c, 0x45, 0x4a, 0xaf, 0xab, 0x61, 0x45, 0x15, 0x2d, -0xac, 0x3e, 0x7d, 0xd4, 0x51, 0x8e, 0xac, 0xc0, 0x57, 0x32, -0x57, 0x76, 0x47, 0x22, 0x4e, 0x4d, 0x24, 0x7b, 0x17, 0xc2, -0xbd, 0x30, 0xda, 0xe9, 0x2b, 0x2b, 0x2e, 0x0b, 0xf3, 0x5d, -0xfd, 0x63, 0xf8, 0x5e, 0xcf, 0xec, 0x7a, 0x44, 0x2b, 0x8e, -0xd5, 0xb1, 0x5f, 0xb8, 0xe5, 0xf4, 0x56, 0x1f, 0x0b, 0x0a, -0x7d, 0x91, 0xfd, 0x1f, 0x95, 0xe1, 0xd6, 0x17, 0x07, 0x4e, -0x92, 0xe8, 0x82, 0xb8, 0x3f, 0x8a, 0x90, 0x09, 0x34, 0x9f, -0x30, 0xf4, 0x41, 0x9a, 0xef, 0x2b, 0x8e, 0xf8, 0x95, 0x18, -0x97, 0x43, 0x60, 0x7a, 0x0e, 0x6b, 0x3c, 0xd6, 0x3c, 0xf8, -0x3a, 0x8b, 0xc8, 0xcb, 0x3a, 0x8f, 0x3e, 0x5f, 0x55, 0x79, -0x1e, 0x14, 0x3a, 0x73, 0x45, 0x19, 0xce, 0x4d, 0x15, 0xf8, -0x89, 0xfc, 0xe6, 0x82, 0xb7, 0xbc, 0x16, 0xd8, 0xd7, 0xa0, -0xc9, 0xf9, 0x41, 0xc9, 0xac, 0x1a, 0xd8, 0xf0, 0x9f, 0xfc, -0x86, 0xed, 0xc7, 0xab, 0x0c, 0xd7, 0x5e, 0x11, 0xdb, 0x11, -0x07, 0xe6, 0x8e, 0xec, 0x0b, 0xe5, 0xc5, 0x53, 0x7e, 0x68, -0xfa, 0x2a, 0x26, 0xdf, 0x1a, 0x9f, 0x51, 0x52, 0x54, 0x50, -0x10, 0xd1, 0x29, 0x1d, 0x31, 0x52, 0xd7, 0xee, 0xcb, 0x63, -0xfa, 0x5a, 0x3b, 0x20, 0xa2, 0x8a, 0x2a, 0x8a, 0x0a, 0x28, -0xa6, 0xbb, 0x6d, 0x52, 0x7d, 0x05, 0x00, 0x79, 0x7f, 0xc5, -0xfd, 0x4b, 0x11, 0x47, 0x6c, 0xad, 0xcb, 0x1e, 0x45, 0x79, -0x5d, 0x75, 0x9f, 0x12, 0x75, 0x0f, 0xb6, 0xeb, 0xc5, 0x33, -0xc2, 0x0a, 0xe4, 0xeb, 0xf1, 0x6c, 0xe2, 0xbf, 0xb7, 0xc6, -0xd4, 0x97, 0x45, 0xa1, 0xfc, 0xf5, 0x9f, 0x62, 0x7e, 0xb3, -0x98, 0xd4, 0x9f, 0x44, 0xed, 0xf7, 0x05, 0x14, 0x50, 0x4e, -0x01, 0xaf, 0x14, 0xf9, 0xe3, 0xad, 0xf8, 0x6f, 0xa7, 0x1b, -0xbd, 0x5b, 0x7e, 0x32, 0x07, 0x15, 0xee, 0xc8, 0x9b, 0x14, -0x01, 0xd8, 0x62, 0xbc, 0xcb, 0xe1, 0x2e, 0x9d, 0xb2, 0x2f, -0x34, 0x8f, 0x7a, 0xf5, 0x0a, 0xfd, 0x6f, 0x87, 0xa8, 0x7b, -0x1c, 0x12, 0x93, 0xde, 0x5a, 0x9f, 0xba, 0x70, 0xae, 0x1b, -0xd8, 0x65, 0xea, 0x4f, 0x79, 0x6a, 0x14, 0x51, 0x45, 0x7d, -0x41, 0xf6, 0x41, 0x58, 0xfe, 0x2a, 0xff, 0x00, 0x90, 0x34, -0xf9, 0xe9, 0x83, 0x9a, 0xd8, 0xac, 0x5f, 0x17, 0x02, 0xda, -0x1d, 0xc2, 0x8e, 0xa5, 0x71, 0x5c, 0xb8, 0xaf, 0xe0, 0x4f, -0xd1, 0x9c, 0x78, 0xcf, 0xf7, 0x7a, 0x9e, 0x8c, 0xf9, 0xde, -0xe5, 0xb7, 0xdc, 0xca, 0xde, 0xac, 0x6a, 0x3a, 0x92, 0xe4, -0x05, 0xb9, 0x91, 0x47, 0x63, 0x8a, 0x8e, 0xbf, 0x08, 0x96, -0xec, 0xfe, 0x68, 0x97, 0xc4, 0xc2, 0x8a, 0x28, 0x35, 0x2c, -0x93, 0xdb, 0x7e, 0x16, 0x7c, 0xda, 0x39, 0x62, 0x79, 0x3d, -0x05, 0x77, 0x35, 0xe6, 0x7f, 0x09, 0x2f, 0x83, 0xc3, 0x24, -0x7d, 0x31, 0xc0, 0x15, 0xe9, 0x95, 0xfb, 0x4e, 0x4f, 0x35, -0x3c, 0x0d, 0x36, 0xbb, 0x1f, 0xd0, 0x99, 0x05, 0x45, 0x53, -0x2e, 0xa4, 0xd7, 0x60, 0xa2, 0x8a, 0x2b, 0xda, 0x3e, 0x84, -0x28, 0xa2, 0x99, 0x24, 0x82, 0x25, 0x2c, 0xc7, 0x0a, 0x28, -0x13, 0x76, 0x32, 0xbc, 0x4d, 0xac, 0xc5, 0xa3, 0xe9, 0x93, -0x48, 0xec, 0x03, 0x6d, 0xe0, 0x66, 0xbe, 0x7b, 0xd4, 0xaf, -0x5b, 0x50, 0xbb, 0x79, 0x98, 0xe7, 0x24, 0xe2, 0xbb, 0x2f, -0x89, 0x5e, 0x28, 0xfe, 0xd0, 0xbd, 0x92, 0xd6, 0x23, 0xfb, -0xb5, 0xe2, 0xb8, 0x30, 0x30, 0x2b, 0xf2, 0x6c, 0xff, 0x00, -0x30, 0xfa, 0xdd, 0x7f, 0x65, 0x07, 0xee, 0xc7, 0xf3, 0x3f, -0x10, 0xe2, 0x8c, 0xcf, 0xeb, 0xb8, 0x9f, 0x63, 0x4d, 0xfb, -0xb0, 0xfc, 0xc2, 0x8a, 0x28, 0xaf, 0x95, 0x3e, 0x28, 0x0f, -0x4a, 0xf5, 0x7f, 0x85, 0x5a, 0x03, 0x45, 0x12, 0x5d, 0xc8, -0x87, 0x9e, 0x72, 0x6b, 0xcc, 0xb4, 0xdb, 0x26, 0xbf, 0xbb, -0x8e, 0x25, 0xee, 0x45, 0x7d, 0x13, 0xa0, 0x69, 0xeb, 0xa6, -0xe9, 0x76, 0xf0, 0xaf, 0x65, 0x19, 0xaf, 0xb0, 0xe1, 0xbc, -0x1f, 0xb6, 0xc4, 0x3a, 0xd2, 0xda, 0x3f, 0x99, 0xf7, 0xbc, -0x25, 0x80, 0xfa, 0xc6, 0x29, 0xe2, 0x26, 0xb4, 0x86, 0xde, -0xa6, 0x9d, 0x14, 0x51, 0x5f, 0xa9, 0x9f, 0xb4, 0x05, 0x14, -0x51, 0x40, 0x05, 0x45, 0x24, 0x11, 0xce, 0x30, 0xea, 0x1b, -0xeb, 0x52, 0xd1, 0x49, 0xa4, 0xf7, 0x13, 0x49, 0xe8, 0xce, -0x6b, 0x5a, 0xf0, 0x75, 0x9d, 0xfa, 0x92, 0xb0, 0xa8, 0x63, -0x5e, 0x63, 0xe2, 0x9f, 0x01, 0xdd, 0x69, 0x81, 0xe6, 0x45, -0x3e, 0x58, 0xf4, 0x15, 0xee, 0x75, 0x53, 0x50, 0xb2, 0x4b, -0xdb, 0x57, 0x8d, 0xd4, 0x1c, 0x8e, 0x33, 0x5e, 0x0e, 0x3f, -0x27, 0xc3, 0xe3, 0x22, 0xdd, 0xad, 0x2f, 0x23, 0xe6, 0x33, -0x3c, 0x87, 0x0b, 0x8f, 0x83, 0x76, 0xb4, 0xbc, 0x8f, 0x99, -0x4a, 0x95, 0x38, 0x3d, 0x69, 0x2b, 0x73, 0xc6, 0x1a, 0x6f, -0xf6, 0x66, 0xa9, 0x22, 0xf6, 0x27, 0x81, 0x58, 0x75, 0xf9, -0x0d, 0x6a, 0x6e, 0x8d, 0x49, 0x53, 0x96, 0xe8, 0xfc, 0x26, -0xbd, 0x19, 0x61, 0xea, 0xca, 0x94, 0xb7, 0x41, 0x41, 0xe9, -0x45, 0x07, 0xa5, 0x62, 0xce, 0x76, 0x36, 0xde, 0x4d, 0x97, -0xd0, 0x9e, 0xc0, 0x82, 0x6b, 0xd8, 0xb4, 0xfb, 0x93, 0x36, -0x99, 0x1b, 0x1e, 0x38, 0xe2, 0xbc, 0x6e, 0xd5, 0x7c, 0xdb, -0xd4, 0x03, 0xa9, 0x60, 0x2b, 0xd7, 0xe0, 0x5f, 0xb3, 0xe9, -0xb1, 0x27, 0xa2, 0xd7, 0xde, 0xf0, 0xa4, 0x5d, 0xe6, 0xfa, -0x1f, 0xa7, 0x70, 0x4c, 0x25, 0xcd, 0x52, 0x5d, 0x0c, 0x4d, -0x6e, 0x6e, 0xa3, 0x35, 0xe7, 0x3e, 0x25, 0xb8, 0xc0, 0x6e, -0x7b, 0x57, 0x6f, 0xad, 0xcd, 0xcb, 0x73, 0x5e, 0x6d, 0xe2, -0x8b, 0x8c, 0x6e, 0xfa, 0x57, 0xe8, 0xc7, 0xeb, 0x07, 0x92, -0xfc, 0x4a, 0xd4, 0x45, 0xbe, 0x99, 0x37, 0xcd, 0x82, 0x73, -0x5f, 0x15, 0xfc, 0x46, 0xd4, 0x3e, 0xd1, 0xa9, 0x49, 0xce, -0x40, 0xcd, 0x7d, 0x53, 0xf1, 0x8f, 0x53, 0xf2, 0x6d, 0x19, -0x33, 0x8f, 0x94, 0xd7, 0xc6, 0xde, 0x2d, 0xbb, 0xf3, 0xae, -0xe7, 0x6c, 0xf7, 0xaf, 0x92, 0xcd, 0xa7, 0xcd, 0x51, 0x40, -0xf8, 0x6c, 0xf2, 0xa7, 0x3d, 0x58, 0xd3, 0x47, 0x0b, 0xad, -0xcd, 0x92, 0x79, 0xac, 0xcf, 0x0e, 0xe9, 0x12, 0xf8, 0x8f, -0xc5, 0x9a, 0x3e, 0x95, 0x08, 0x2d, 0x2d, 0xe5, 0xe4, 0x50, -0x00, 0x06, 0x7e, 0xf3, 0x81, 0x9c, 0x7b, 0x67, 0x35, 0x36, -0xad, 0x26, 0xe9, 0x0d, 0x7a, 0x2f, 0xec, 0x9d, 0xe1, 0x86, -0xf1, 0x3f, 0xc7, 0x2d, 0x1c, 0x84, 0x0e, 0x96, 0x2a, 0xf7, -0x24, 0x37, 0x42, 0xd8, 0xd8, 0xbf, 0x8e, 0x5c, 0x1f, 0xc2, -0xb7, 0xc1, 0xc3, 0x64, 0x74, 0xe0, 0x29, 0xfc, 0x28, 0xfd, -0x70, 0xf8, 0x59, 0xa4, 0xae, 0x8f, 0xe0, 0xdd, 0x36, 0xdd, -0x53, 0x6a, 0xec, 0xdc, 0x07, 0xa0, 0xed, 0xfa, 0x62, 0xbb, -0xfb, 0x41, 0x8c, 0x56, 0x2e, 0x95, 0x6a, 0xb6, 0x96, 0xd0, -0xc2, 0xa3, 0xe5, 0x8d, 0x02, 0x0c, 0x7b, 0x0c, 0x56, 0xed, -0xb0, 0xe9, 0x5f, 0x4c, 0x7d, 0x81, 0xa9, 0x68, 0x3a, 0x56, -0xbd, 0xb8, 0xce, 0x2b, 0x32, 0xd4, 0x60, 0x0f, 0xad, 0x6b, -0x5b, 0x8e, 0x28, 0x02, 0xf4, 0x23, 0xa5, 0x5d, 0x88, 0x74, -0xaa, 0x70, 0x8e, 0x95, 0x76, 0x2e, 0xd4, 0x01, 0x32, 0x54, -0xeb, 0xda, 0xa1, 0x5a, 0x99, 0x68, 0x01, 0xd4, 0xe1, 0xd2, -0x9b, 0x4f, 0xa0, 0x0a, 0x8f, 0x50, 0x48, 0x78, 0xa9, 0x5a, -0xab, 0xca, 0x71, 0x40, 0x15, 0x66, 0x35, 0xe2, 0xff, 0x00, -0xb5, 0x7d, 0xe8, 0xb6, 0xf8, 0x17, 0xe2, 0x68, 0xfc, 0xdf, -0x2e, 0x4b, 0x85, 0x86, 0x04, 0x19, 0xe5, 0xf7, 0x4c, 0x99, -0x51, 0xf5, 0x5d, 0xd5, 0xec, 0xb3, 0x35, 0x7c, 0xcf, 0xfb, -0x5e, 0x6a, 0x6f, 0xa9, 0xcf, 0xe0, 0xbf, 0x08, 0x42, 0xc7, -0x7e, 0xab, 0xa8, 0x89, 0xa4, 0x5f, 0x54, 0x4e, 0x3f, 0x9b, -0x57, 0x97, 0x99, 0xd4, 0xf6, 0x78, 0x3a, 0xaf, 0xab, 0x56, -0x5e, 0xaf, 0x45, 0xf9, 0x9e, 0x36, 0x71, 0x57, 0xd9, 0x60, -0x2b, 0x3e, 0xad, 0x59, 0x7a, 0xbd, 0x17, 0xe2, 0xce, 0xe3, -0xf6, 0x60, 0xf0, 0xaf, 0xfc, 0x23, 0xdf, 0x0e, 0xf4, 0xa8, -0xda, 0x3d, 0x8f, 0x22, 0x79, 0xac, 0x3d, 0xcf, 0x35, 0xef, -0xd0, 0xae, 0xd8, 0xc0, 0xae, 0x37, 0xc0, 0x7a, 0x52, 0xe9, -0xba, 0x45, 0xb4, 0x0a, 0xb8, 0x58, 0xd1, 0x54, 0x0f, 0xa0, -0xae, 0xd4, 0x70, 0x31, 0x5d, 0x58, 0x5a, 0x2a, 0x85, 0x08, -0x52, 0x5d, 0x12, 0x47, 0x6e, 0x0e, 0x82, 0xc2, 0xe1, 0xa9, -0xd1, 0x5f, 0x65, 0x24, 0x2d, 0x14, 0x52, 0x12, 0x00, 0x24, -0xf0, 0x05, 0x75, 0x1d, 0x87, 0xcf, 0x1f, 0xb7, 0x0f, 0x85, -0x27, 0xf1, 0x47, 0xc1, 0x5d, 0x56, 0x1b, 0x54, 0x2f, 0x70, -0xf1, 0x94, 0x1b, 0x41, 0x24, 0x0c, 0x1c, 0xf4, 0xaf, 0xe7, -0xfb, 0x5e, 0xd1, 0xee, 0x3c, 0x33, 0xe2, 0x59, 0xad, 0xe5, -0x82, 0x48, 0x4c, 0x33, 0x10, 0x0c, 0x8a, 0x41, 0x38, 0x3d, -0x6b, 0xf6, 0xbb, 0xf6, 0xd4, 0xfd, 0xb5, 0x2c, 0xbe, 0x11, -0xdd, 0xc5, 0xe1, 0x78, 0xac, 0xe2, 0xbb, 0x9a, 0xee, 0x36, -0xdf, 0xbf, 0x9d, 0xa3, 0xf2, 0xaf, 0xc7, 0x7f, 0x8c, 0xfe, -0x37, 0x8f, 0xc6, 0xde, 0x29, 0xb8, 0xd4, 0x22, 0x89, 0x21, -0x57, 0x62, 0x42, 0xa0, 0xe0, 0x73, 0x40, 0x1f, 0xaf, 0xff, -0x00, 0xf0, 0x4d, 0x1f, 0x89, 0xfa, 0x5d, 0xdf, 0xc2, 0xc8, -0x34, 0x4f, 0x3e, 0x28, 0x64, 0x83, 0x99, 0x1a, 0x47, 0x55, -0x2c, 0xdc, 0x7a, 0x9a, 0xfb, 0x81, 0x27, 0x8e, 0x45, 0x05, -0x24, 0x56, 0x07, 0xb8, 0x60, 0x6b, 0xf9, 0xba, 0xf8, 0x2b, -0xf1, 0xfb, 0x59, 0xf8, 0x59, 0xa9, 0x45, 0x24, 0x5a, 0x84, -0xd1, 0x5a, 0xab, 0x02, 0x63, 0x50, 0x30, 0x79, 0xfa, 0x57, -0xdb, 0x9e, 0x15, 0xff, 0x00, 0x82, 0xa8, 0xe9, 0xfa, 0x66, -0x9b, 0x0c, 0x17, 0x42, 0x57, 0x91, 0x40, 0x05, 0x88, 0x7c, -0x9f, 0xfc, 0x76, 0x80, 0x3f, 0x5b, 0x37, 0x03, 0xdc, 0x7e, -0x74, 0xb5, 0xf9, 0x81, 0x65, 0xff, 0x00, 0x05, 0x5c, 0xf0, -0xf3, 0x91, 0xbd, 0xe4, 0x4f, 0xfb, 0xe8, 0x7f, 0xec, 0xb5, -0xef, 0x7f, 0xb3, 0x97, 0xed, 0xb9, 0xa4, 0xfc, 0x6d, 0xf1, -0x1d, 0xbe, 0x9b, 0x60, 0xef, 0x23, 0xcc, 0xe1, 0x46, 0x49, -0xfe, 0xab, 0x40, 0x1f, 0x62, 0x57, 0x1d, 0xf1, 0x27, 0x51, -0x16, 0x7a, 0x34, 0x8b, 0x9c, 0x12, 0x2b, 0xb1, 0xaf, 0x26, -0xf8, 0xbb, 0xa9, 0x6e, 0xd9, 0x00, 0x3d, 0x4d, 0x78, 0x99, -0xcd, 0x7f, 0x61, 0x82, 0x9c, 0xbb, 0x9f, 0x3b, 0x9f, 0xe2, -0x7e, 0xad, 0x97, 0xd4, 0x97, 0x56, 0xac, 0x79, 0x90, 0xe7, -0x9f, 0x5e, 0x68, 0xa2, 0x8a, 0xfc, 0x5c, 0xfe, 0x7b, 0x0a, -0xdb, 0xf0, 0x6d, 0x97, 0xdb, 0x7c, 0x41, 0x6e, 0x31, 0x90, -0xa7, 0x26, 0xb1, 0x2b, 0xbe, 0xf8, 0x51, 0xa7, 0x79, 0xf7, -0xef, 0x39, 0x1d, 0x2b, 0xd2, 0xcb, 0xa8, 0xfb, 0x7c, 0x5d, -0x38, 0x79, 0x9e, 0xbe, 0x53, 0x87, 0x78, 0x9c, 0x75, 0x2a, -0x7e, 0x7f, 0x91, 0xec, 0x56, 0xb1, 0xf9, 0x50, 0x22, 0xfa, -0x0a, 0x9a, 0x90, 0x71, 0x4b, 0x5f, 0xb8, 0x25, 0x65, 0x63, -0xfa, 0x39, 0x2e, 0x55, 0x60, 0xae, 0x4b, 0xe2, 0x4e, 0x3f, -0xe1, 0x1f, 0x90, 0x77, 0x3c, 0x57, 0x5b, 0x5c, 0x8f, 0xc4, -0x75, 0x23, 0x42, 0x91, 0xc7, 0x40, 0x0d, 0x79, 0xd9, 0x8f, -0xfb, 0xa5, 0x4f, 0x43, 0xca, 0xcd, 0xbf, 0xdc, 0x6a, 0xfa, -0x33, 0xc2, 0x0e, 0x32, 0x71, 0xd2, 0x92, 0x8c, 0x63, 0xeb, -0x45, 0x7e, 0x1c, 0x7f, 0x38, 0x05, 0x69, 0x78, 0x79, 0x8a, -0x6a, 0xd0, 0x9e, 0xe4, 0xe0, 0x56, 0x6d, 0x68, 0x68, 0x24, -0x2e, 0xad, 0x03, 0x1e, 0x8a, 0x73, 0x5b, 0xd0, 0xd2, 0xac, -0x5f, 0x9a, 0x3a, 0x30, 0xce, 0xd5, 0xe1, 0xea, 0x8f, 0xa3, -0xec, 0xc6, 0xdb, 0x58, 0x87, 0xfb, 0x22, 0xa7, 0xaa, 0xba, -0x69, 0x26, 0xc6, 0x12, 0x7a, 0x95, 0x15, 0x6a, 0xbf, 0x79, -0x87, 0xc2, 0x8f, 0xe9, 0x9a, 0x7a, 0xc1, 0x3f, 0x20, 0xa2, -0x8a, 0x2a, 0xcd, 0x02, 0xaa, 0xea, 0x12, 0xf9, 0x16, 0x53, -0xb9, 0xfe, 0x14, 0x26, 0xad, 0x56, 0x1f, 0x8c, 0x6f, 0x3e, -0xc7, 0xa0, 0x5e, 0x3f, 0xfd, 0x33, 0x6f, 0xe5, 0x58, 0x57, -0x9a, 0xa7, 0x4a, 0x53, 0x7d, 0x13, 0x39, 0xb1, 0x35, 0x15, -0x2a, 0x33, 0xa8, 0xfa, 0x26, 0x78, 0x1e, 0xb5, 0x75, 0xf6, -0xcd, 0x56, 0xe6, 0x5c, 0xe7, 0x2c, 0x45, 0x51, 0xa5, 0x2c, -0x5c, 0x92, 0x7a, 0x93, 0x9a, 0x4a, 0xfc, 0x1a, 0x72, 0xe7, -0x93, 0x93, 0xea, 0x7f, 0x33, 0x54, 0x9b, 0xa9, 0x37, 0x37, -0xd5, 0xdc, 0x28, 0x0b, 0xbd, 0x95, 0x47, 0x52, 0x71, 0x45, -0x5c, 0xd1, 0xed, 0xfe, 0xd5, 0xaa, 0x5b, 0xc7, 0x8c, 0xe5, -0xb3, 0x44, 0x63, 0xcf, 0x25, 0x15, 0xd4, 0x21, 0x07, 0x52, -0x6a, 0x0b, 0xab, 0x3d, 0xc3, 0xe1, 0xfd, 0x97, 0xd9, 0x74, -0x74, 0x38, 0xea, 0x31, 0x5d, 0x55, 0x67, 0x68, 0x76, 0xc2, -0xd7, 0x4d, 0x85, 0x07, 0x1c, 0x66, 0xb4, 0x6b, 0xf7, 0x5c, -0x25, 0x3f, 0x65, 0x42, 0x10, 0xec, 0x8f, 0xe9, 0x4c, 0x0d, -0x1f, 0x61, 0x86, 0x85, 0x3e, 0xc8, 0x28, 0xa2, 0x8a, 0xeb, -0x3b, 0x82, 0xb3, 0xb5, 0xf8, 0xbc, 0xdd, 0x2a, 0xe0, 0x77, -0xda, 0x71, 0x5a, 0x35, 0x15, 0xc2, 0x09, 0x61, 0x75, 0x3c, -0x82, 0x2b, 0x3a, 0x91, 0xe7, 0x83, 0x8f, 0x73, 0x2a, 0xb1, -0xe7, 0xa7, 0x28, 0xf7, 0x47, 0xcc, 0xfa, 0x94, 0x3e, 0x45, -0xf4, 0xa8, 0x7a, 0xe7, 0x9a, 0xad, 0x5b, 0xbe, 0x32, 0xb1, -0x6b, 0x2d, 0x66, 0x5c, 0x8c, 0x6f, 0x39, 0xac, 0x2a, 0xfc, -0x23, 0x11, 0x07, 0x4a, 0xb4, 0xa0, 0xfa, 0x33, 0xf9, 0xa3, -0x15, 0x4d, 0xd1, 0xaf, 0x3a, 0x6f, 0xa3, 0x61, 0x45, 0x14, -0x57, 0x39, 0xcc, 0x75, 0x7f, 0x0f, 0xf5, 0x91, 0xa6, 0x6a, -0xd1, 0xab, 0x1e, 0x09, 0xc7, 0xeb, 0x5e, 0xf1, 0x1c, 0x82, -0x55, 0x0c, 0xa4, 0x10, 0x7d, 0x2b, 0xe6, 0x08, 0x26, 0x6b, -0x79, 0x92, 0x45, 0x24, 0x15, 0x39, 0xe2, 0xbd, 0x4f, 0xc2, -0x9f, 0x11, 0xa3, 0x58, 0x12, 0x19, 0x57, 0x27, 0xa6, 0x4d, -0x7d, 0xdf, 0x0f, 0xe6, 0x94, 0xe8, 0x45, 0xe1, 0xeb, 0x3b, -0x2e, 0x87, 0xe9, 0x5c, 0x2d, 0x9c, 0xd2, 0xc3, 0x41, 0xe1, -0x71, 0x12, 0xb2, 0xe8, 0x7a, 0x7d, 0x15, 0x95, 0x6b, 0xe2, -0x0b, 0x5b, 0x98, 0xc3, 0x07, 0x03, 0x3e, 0xf5, 0x1d, 0xef, -0x8a, 0x6c, 0xac, 0x97, 0x73, 0xb8, 0xfc, 0xeb, 0xf4, 0x07, -0x88, 0xa2, 0xa3, 0xcc, 0xe4, 0xac, 0x7e, 0xa0, 0xf1, 0x74, -0x14, 0x79, 0xdc, 0xd5, 0x8d, 0x76, 0x60, 0xaa, 0x49, 0x38, -0x15, 0xe7, 0xff, 0x00, 0x10, 0x7c, 0x6f, 0x1d, 0x95, 0xab, -0xda, 0xdb, 0x3e, 0x66, 0xe8, 0x71, 0x54, 0x7c, 0x57, 0xf1, -0x36, 0x17, 0xb6, 0x78, 0x6c, 0x9b, 0x12, 0x1e, 0x33, 0x5e, -0x61, 0x79, 0x79, 0x2d, 0xf4, 0xed, 0x2c, 0xad, 0xb9, 0xcd, -0x7c, 0x5e, 0x73, 0x9e, 0xc2, 0x31, 0x74, 0x30, 0xae, 0xed, -0xee, 0xcf, 0xcf, 0xb3, 0xfe, 0x25, 0x84, 0x60, 0xf0, 0xd8, -0x39, 0x5d, 0xbd, 0xd9, 0x1c, 0xd3, 0x35, 0xc4, 0xcf, 0x2b, -0x9c, 0xb3, 0x1c, 0x9a, 0x65, 0x14, 0x57, 0xe7, 0x2d, 0xdf, -0x56, 0x7e, 0x4c, 0xdb, 0x7a, 0xb0, 0xa2, 0x8a, 0xd4, 0xf0, -0xf6, 0x8d, 0x2e, 0xb3, 0xa9, 0x43, 0x1a, 0x26, 0x53, 0x3c, -0x9a, 0xba, 0x74, 0xe5, 0x56, 0x6a, 0x10, 0x5a, 0xb3, 0x5a, -0x54, 0xa5, 0x5a, 0x6a, 0x9c, 0x15, 0xdb, 0x3b, 0x7f, 0x85, -0x5e, 0x1c, 0xf3, 0x99, 0xee, 0xe6, 0x4e, 0x01, 0xe3, 0x35, -0xeb, 0x40, 0x60, 0x62, 0xb3, 0x74, 0x1d, 0x29, 0x34, 0x8b, -0x04, 0x81, 0x07, 0x4e, 0xb5, 0xa7, 0x5f, 0xb5, 0x65, 0x98, -0x35, 0x82, 0xc3, 0x46, 0x9f, 0x5e, 0xa7, 0xf4, 0x2e, 0x4f, -0x80, 0x59, 0x76, 0x12, 0x34, 0x7a, 0xf5, 0xf5, 0x0a, 0x40, -0x41, 0xe8, 0x73, 0x59, 0x3e, 0x27, 0xd4, 0xbf, 0xb2, 0xf4, -0x99, 0xa6, 0x07, 0x0d, 0x8c, 0x0a, 0xf3, 0xff, 0x00, 0x0f, -0x7c, 0x48, 0x51, 0x76, 0xc9, 0x70, 0xe5, 0x86, 0x71, 0x46, -0x27, 0x32, 0xa1, 0x85, 0xab, 0x1a, 0x35, 0x5d, 0x9b, 0x0c, -0x5e, 0x6f, 0x86, 0xc1, 0x57, 0x8d, 0x0a, 0xce, 0xce, 0x47, -0xab, 0xd1, 0x59, 0x9a, 0x66, 0xbb, 0x6d, 0xa9, 0x80, 0x62, -0x35, 0xa5, 0x9c, 0xd7, 0xa3, 0x0a, 0x91, 0xa8, 0xb9, 0xa0, -0xee, 0x8f, 0x5a, 0x9d, 0x58, 0x55, 0x8f, 0x34, 0x1d, 0xd0, -0xb4, 0x51, 0x45, 0x68, 0x6a, 0x14, 0xc7, 0x6c, 0x21, 0xa7, -0xd6, 0x47, 0x88, 0xb5, 0x78, 0xb4, 0x8d, 0x36, 0x69, 0x19, -0xc0, 0x60, 0xbc, 0x0a, 0xca, 0xa5, 0x48, 0xd2, 0x83, 0x9c, -0xb6, 0x46, 0x35, 0xaa, 0x46, 0x8d, 0x37, 0x39, 0xbb, 0x24, -0x78, 0xd7, 0xc4, 0x6b, 0x85, 0x9b, 0x5f, 0x75, 0x5e, 0x89, -0x5c, 0xad, 0x5b, 0xd5, 0xaf, 0x9b, 0x51, 0xd4, 0xa7, 0x9d, -0xbf, 0x88, 0xf1, 0x55, 0x2b, 0xf0, 0xbc, 0x5d, 0x6f, 0x6d, -0x5e, 0x75, 0x17, 0x56, 0x7f, 0x36, 0x63, 0xab, 0xac, 0x46, -0x26, 0xa5, 0x55, 0xd5, 0xb0, 0xa6, 0xb9, 0xc2, 0xd3, 0xaa, -0x2b, 0x86, 0xc2, 0x1a, 0xe3, 0x67, 0x03, 0x2e, 0xf8, 0x6e, -0xd8, 0xdd, 0x6a, 0xf0, 0x80, 0x32, 0x37, 0x66, 0xbd, 0x4e, -0xf5, 0xbc, 0xb8, 0x36, 0xfa, 0x0a, 0xe2, 0x7e, 0x1f, 0x58, -0x17, 0xbc, 0xf3, 0x98, 0x70, 0x06, 0x6b, 0xaf, 0xd5, 0xe5, -0xc2, 0x1a, 0xfd, 0x5b, 0x86, 0xb0, 0xfe, 0xcb, 0x0a, 0xe6, -0xfa, 0xb3, 0xf6, 0xee, 0x11, 0xc3, 0x7b, 0x1c, 0x13, 0xa8, -0xfe, 0xd3, 0x38, 0xfd, 0x6a, 0x6f, 0xbd, 0xcd, 0x79, 0x97, -0x8a, 0xa7, 0xcb, 0xb7, 0x35, 0xe8, 0x1a, 0xd4, 0xdc, 0x37, -0x35, 0xe5, 0x7e, 0x2d, 0xba, 0xd8, 0x25, 0x6c, 0xf4, 0x15, -0xf5, 0xe7, 0xdd, 0x1f, 0x37, 0xfc, 0x6e, 0xd5, 0xb0, 0x67, -0x1b, 0xb1, 0x81, 0x8e, 0x6b, 0xe5, 0x0d, 0x7a, 0x7d, 0xcc, -0xe7, 0xd4, 0xd7, 0xbe, 0x7c, 0x6a, 0xd5, 0x7c, 0xc9, 0x67, -0x01, 0x89, 0xc9, 0xaf, 0x9d, 0x75, 0xc9, 0xb8, 0x6a, 0xf8, -0x6c, 0x54, 0xbd, 0xae, 0x24, 0xfc, 0xdb, 0x1b, 0x3f, 0x6d, -0x8c, 0x39, 0x3d, 0x42, 0x4c, 0xbb, 0x77, 0xaf, 0xac, 0xff, -0x00, 0xe0, 0x9c, 0x9e, 0x15, 0x1a, 0x97, 0x8c, 0x75, 0x6d, -0x55, 0xe2, 0x2c, 0xb1, 0xcb, 0x0c, 0x41, 0x8f, 0x41, 0xb7, -0x73, 0x9f, 0xaf, 0x6f, 0xd2, 0xbe, 0x44, 0xbd, 0x7e, 0x5a, -0xbf, 0x47, 0xbf, 0xe0, 0x9c, 0x1e, 0x14, 0xfe, 0xcf, 0xf8, -0x72, 0xda, 0xab, 0xab, 0x07, 0xbd, 0x9a, 0x69, 0xf2, 0xdc, -0x60, 0x6f, 0xf2, 0xd7, 0xf4, 0x8c, 0x9f, 0xc6, 0xbe, 0x83, -0x05, 0x1d, 0x4f, 0xa9, 0xcb, 0xe1, 0xef, 0x1f, 0x6a, 0xda, -0x8f, 0x5a, 0xd8, 0xb5, 0x07, 0x8a, 0xcb, 0xb5, 0x5e, 0x45, -0x6c, 0x5b, 0x2f, 0x4a, 0xf6, 0x4f, 0xa0, 0x35, 0x2d, 0x46, -0x71, 0x5a, 0xd6, 0xe3, 0x38, 0xac, 0xbb, 0x65, 0xe4, 0x56, -0xb4, 0x0b, 0xc0, 0xa0, 0x0b, 0xb1, 0x0a, 0xb9, 0x18, 0xe6, -0xaa, 0x42, 0x2a, 0xda, 0x76, 0xa0, 0x09, 0xd0, 0x64, 0xd4, -0xa3, 0xa5, 0x40, 0x9d, 0xaa, 0x65, 0xa0, 0x07, 0x0e, 0xb4, -0xfa, 0x67, 0x4a, 0x70, 0xe9, 0x40, 0x14, 0x9a, 0xab, 0x4c, -0x7a, 0xd5, 0x87, 0x35, 0x52, 0x63, 0x40, 0x15, 0x27, 0x3c, -0x57, 0xc8, 0x5e, 0x21, 0xd4, 0x0f, 0xc4, 0x0f, 0xdb, 0x26, -0xd2, 0xda, 0x2e, 0x6d, 0x3c, 0x3f, 0x10, 0xb7, 0x39, 0x18, -0xcb, 0x84, 0x2c, 0xc7, 0xbf, 0xf1, 0x38, 0x1d, 0xbe, 0xef, -0xe3, 0x5f, 0x59, 0x6a, 0xf7, 0xb1, 0xe9, 0xd6, 0x37, 0x37, -0x52, 0x9c, 0x45, 0x04, 0x6d, 0x23, 0x9c, 0xf6, 0x03, 0x27, -0xf9, 0x57, 0xc9, 0x3f, 0xb2, 0x35, 0x8c, 0x9e, 0x2a, 0xf1, -0xd7, 0x89, 0xbc, 0x5b, 0x30, 0x2e, 0xd7, 0x97, 0x72, 0x3a, -0xc8, 0xc7, 0x24, 0xee, 0x62, 0xc7, 0xf9, 0x8a, 0xf9, 0xfc, -0xcd, 0xba, 0x95, 0x70, 0xf8, 0x65, 0xf6, 0xa5, 0x77, 0xe9, -0x1d, 0x7f, 0x3b, 0x1f, 0x2d, 0x9c, 0xb7, 0x56, 0xbe, 0x17, -0x08, 0xbe, 0xd4, 0xd4, 0x9f, 0xa4, 0x75, 0xfc, 0xec, 0x7d, -0x9f, 0xa1, 0xdb, 0x79, 0x50, 0x20, 0xf4, 0x15, 0xaf, 0x55, -0x6c, 0x13, 0x64, 0x75, 0xc5, 0x7c, 0x42, 0xf8, 0xd9, 0xe1, -0x9f, 0x86, 0xa5, 0x13, 0x56, 0xbb, 0xd9, 0x2b, 0x9c, 0x04, -0x51, 0x93, 0x5f, 0x40, 0x7d, 0x49, 0xdf, 0xd6, 0x7e, 0xbd, -0x7c, 0xba, 0x76, 0x93, 0x73, 0x3b, 0x9c, 0x2a, 0xa1, 0xe6, -0xbc, 0xf7, 0xc1, 0x9f, 0xb4, 0x3f, 0x86, 0x3c, 0x73, 0xa8, -0x25, 0xa6, 0x9b, 0x2b, 0xc9, 0x23, 0x10, 0x07, 0x15, 0xd6, -0xfc, 0x41, 0xd2, 0x6f, 0x35, 0xbf, 0x0a, 0x5f, 0xda, 0x58, -0x60, 0xdc, 0xcb, 0x0b, 0x2a, 0x02, 0x71, 0xc9, 0x18, 0xa0, -0x0f, 0xc0, 0x6f, 0xdb, 0xaf, 0xe2, 0x3f, 0xfc, 0x27, 0xff, -0x00, 0x1f, 0x35, 0x89, 0xa0, 0x91, 0xfe, 0xcf, 0x68, 0x4c, -0x09, 0xb8, 0xfa, 0x1e, 0x7a, 0x1a, 0xf9, 0xd8, 0xb1, 0x6e, -0xa4, 0x9f, 0xad, 0x7e, 0x92, 0x78, 0xc3, 0xfe, 0x09, 0x9d, -0xe3, 0xfd, 0x6b, 0x5d, 0xbf, 0xd4, 0x5e, 0xc2, 0x09, 0x5e, -0xe6, 0x66, 0x90, 0x9d, 0xe3, 0x3c, 0x93, 0x5c, 0x75, 0xef, -0xfc, 0x13, 0x23, 0xc7, 0xf6, 0xe4, 0xff, 0x00, 0xc4, 0x9e, -0x17, 0xfa, 0x3d, 0x00, 0x7c, 0x17, 0x45, 0x7d, 0xad, 0x7b, -0xff, 0x00, 0x04, 0xe2, 0xf8, 0x81, 0x6f, 0x9c, 0xe8, 0x20, -0xfd, 0x24, 0xae, 0x7a, 0xfb, 0xf6, 0x02, 0xf1, 0xed, 0xa9, -0x39, 0xf0, 0xfb, 0xff, 0x00, 0xc0, 0x64, 0xff, 0x00, 0xeb, -0xd0, 0x07, 0xc9, 0x4a, 0x37, 0x10, 0x07, 0x53, 0xc5, 0x7e, -0xb1, 0xff, 0x00, 0xc1, 0x27, 0x7e, 0x16, 0x18, 0xe7, 0x93, -0x5e, 0x94, 0x2e, 0xdb, 0x78, 0xf2, 0x0f, 0x7d, 0xc7, 0xf0, -0xaf, 0x90, 0x6d, 0x3f, 0x61, 0xef, 0x1b, 0xc5, 0xa9, 0x5b, -0xa4, 0x9a, 0x04, 0xea, 0xa6, 0x41, 0x93, 0xbc, 0x70, 0x3f, -0x3a, 0xfd, 0x77, 0xfd, 0x89, 0x3e, 0x10, 0x4d, 0xf0, 0xa7, -0xe1, 0x74, 0x70, 0x5d, 0xc1, 0xe4, 0x5d, 0x4e, 0x72, 0xca, -0x4e, 0x4e, 0x05, 0x00, 0x7d, 0x14, 0xed, 0xb4, 0x13, 0xe9, -0x5e, 0x01, 0xe3, 0xfd, 0x43, 0xed, 0xda, 0xe3, 0x28, 0x3c, -0x25, 0x7b, 0xc5, 0xf9, 0x2b, 0x6b, 0x21, 0x5e, 0xb8, 0xaf, -0x9f, 0x75, 0x3d, 0x12, 0xf2, 0xe7, 0x50, 0xb8, 0x98, 0xa3, -0x7c, 0xcc, 0x71, 0xc5, 0x7c, 0x4f, 0x13, 0xca, 0x72, 0xa5, -0x0a, 0x50, 0x57, 0xbb, 0x3f, 0x3a, 0xe3, 0x19, 0x55, 0x95, -0x0a, 0x74, 0x69, 0xab, 0xdd, 0xea, 0x62, 0x51, 0x57, 0xdb, -0x43, 0xba, 0x5f, 0xe0, 0x34, 0xc3, 0xa4, 0xdc, 0x81, 0xf7, -0x6b, 0xf3, 0x77, 0x4a, 0xa2, 0xde, 0x2c, 0xfc, 0x95, 0xd0, -0xaa, 0xb7, 0x8b, 0x29, 0x9e, 0x95, 0xed, 0x1f, 0x0b, 0x34, -0xcf, 0xb2, 0xe9, 0x29, 0x2b, 0x75, 0x61, 0x9a, 0xf2, 0x38, -0x74, 0x9b, 0x89, 0x27, 0x8d, 0x36, 0xfd, 0xe6, 0x02, 0xbe, -0x82, 0xf0, 0xbd, 0x97, 0xd8, 0x74, 0x98, 0x63, 0xef, 0xb4, -0x57, 0xd7, 0xf0, 0xd6, 0x19, 0xcb, 0x13, 0x2a, 0xb2, 0x5b, -0x23, 0xee, 0xb8, 0x43, 0x07, 0x29, 0x63, 0x25, 0x5a, 0x6b, -0xe1, 0x46, 0xc5, 0x14, 0x51, 0x5f, 0xa7, 0x9f, 0xb2, 0x85, -0x72, 0x7f, 0x11, 0x8e, 0x74, 0x47, 0x1d, 0xba, 0x9a, 0xeb, -0x2b, 0x92, 0xf8, 0x8e, 0xf8, 0xf0, 0xfc, 0x8a, 0x06, 0x59, -0xb8, 0xaf, 0x3b, 0x31, 0xff, 0x00, 0x74, 0xa9, 0xe8, 0x79, -0x39, 0xaf, 0xfb, 0x8d, 0x5f, 0x46, 0x78, 0x36, 0x77, 0x12, -0x7d, 0x4d, 0x14, 0xa4, 0x36, 0xe3, 0xf2, 0x9c, 0x66, 0x93, -0x9f, 0x43, 0x5f, 0x86, 0x9f, 0xce, 0x01, 0x57, 0x34, 0x83, -0x8d, 0x4a, 0x0f, 0xaf, 0x35, 0x4f, 0x38, 0xec, 0x6a, 0x7d, -0x3a, 0x4d, 0xb7, 0xd0, 0x81, 0xdd, 0x80, 0xad, 0x29, 0xbb, -0x4e, 0x3e, 0xa6, 0x94, 0x9d, 0xaa, 0x45, 0xf9, 0xa3, 0xe9, -0x2d, 0x26, 0x4f, 0x37, 0x4f, 0x85, 0xb1, 0x8e, 0x2a, 0xed, -0x67, 0xe8, 0x67, 0x76, 0x99, 0x07, 0xb0, 0xad, 0x0a, 0xfd, -0xe6, 0x8b, 0xbd, 0x38, 0xbf, 0x23, 0xfa, 0x6a, 0x83, 0xbd, -0x28, 0xbf, 0x24, 0x14, 0x51, 0x45, 0x6c, 0x6e, 0x15, 0xc1, -0x7c, 0x55, 0xd4, 0x44, 0x1a, 0x2b, 0xc3, 0xdd, 0xc6, 0xda, -0xef, 0x0f, 0x15, 0xe3, 0x5f, 0x16, 0xb5, 0x2f, 0x3b, 0x50, -0x8a, 0xdc, 0x1e, 0x9c, 0xe2, 0xbe, 0x7f, 0x3c, 0xaf, 0xec, -0x30, 0x53, 0x7d, 0x5e, 0x87, 0xcb, 0xf1, 0x26, 0x27, 0xea, -0xd9, 0x75, 0x47, 0xd5, 0xe9, 0xf7, 0x9e, 0x7f, 0x45, 0x14, -0x57, 0xe3, 0x87, 0xe0, 0x41, 0x5d, 0x17, 0x80, 0xac, 0x8d, -0xef, 0x88, 0x62, 0xc7, 0x44, 0xae, 0x76, 0xbd, 0x07, 0xe1, -0x15, 0x91, 0x7d, 0x41, 0xa6, 0x23, 0x8a, 0xf5, 0x32, 0xba, -0x5e, 0xdb, 0x19, 0x4e, 0x1e, 0x67, 0xb3, 0x93, 0x50, 0xfa, -0xc6, 0x3e, 0x95, 0x3f, 0x33, 0xd8, 0x62, 0x5d, 0x88, 0xab, -0xe8, 0x31, 0x52, 0x51, 0x45, 0x7e, 0xdc, 0x95, 0x8f, 0xe8, -0xb4, 0xad, 0xa0, 0x51, 0x45, 0x14, 0xc6, 0x14, 0x51, 0x45, -0x00, 0x79, 0x57, 0xc5, 0x3f, 0x0e, 0xb9, 0xff, 0x00, 0x4b, -0x8c, 0x0f, 0x52, 0x4f, 0xa5, 0x79, 0x70, 0xe6, 0xbe, 0x95, -0xd6, 0xb4, 0xc4, 0xd4, 0xec, 0x9e, 0x26, 0x01, 0x8e, 0x38, -0xcd, 0x78, 0x0f, 0x89, 0xb4, 0x79, 0x34, 0x9d, 0x4a, 0x64, -0x61, 0xc6, 0x78, 0xc5, 0x7e, 0x5d, 0xc4, 0x58, 0x07, 0x46, -0xb7, 0xd6, 0x20, 0xb4, 0x96, 0xe7, 0xe3, 0x3c, 0x57, 0x96, -0x3a, 0x15, 0xfe, 0xb7, 0x05, 0xee, 0xcb, 0x7f, 0x53, 0x22, -0x8a, 0x28, 0xaf, 0x8d, 0x3e, 0x00, 0x29, 0x55, 0x9d, 0x0e, -0x55, 0x88, 0xa4, 0xa2, 0x80, 0x2d, 0xc7, 0xaa, 0xdd, 0xc4, -0xb8, 0x59, 0x9a, 0x9b, 0x2e, 0xa7, 0x75, 0x28, 0xf9, 0xa5, -0x24, 0x55, 0x6a, 0x2b, 0x4f, 0x69, 0x3b, 0x5b, 0x99, 0x9a, -0x7b, 0x5a, 0x8d, 0x5b, 0x99, 0xdb, 0xd4, 0x52, 0x4b, 0x1c, -0x9e, 0x4d, 0x25, 0x14, 0x56, 0x66, 0x61, 0x45, 0x15, 0x35, -0xad, 0xa4, 0x97, 0xb3, 0x2c, 0x51, 0x29, 0x2c, 0x4e, 0x29, -0xa4, 0xe4, 0xec, 0xb7, 0x1a, 0x4e, 0x4e, 0xd1, 0x5a, 0x8e, -0xb0, 0xb1, 0x97, 0x53, 0xba, 0x48, 0x21, 0x19, 0x76, 0x38, -0xaf, 0x6e, 0xf0, 0x27, 0x84, 0x17, 0x42, 0xb2, 0x47, 0x94, -0x0f, 0x38, 0xf3, 0xc5, 0x66, 0xfc, 0x3d, 0xf0, 0x3f, 0xf6, -0x52, 0x7d, 0xa6, 0xe9, 0x47, 0x9c, 0x7a, 0x57, 0xa1, 0x57, -0xe9, 0xb9, 0x16, 0x51, 0xec, 0x22, 0xb1, 0x35, 0xd7, 0xbc, -0xf6, 0x5d, 0x8f, 0xd8, 0x78, 0x6b, 0x21, 0x58, 0x58, 0xac, -0x5e, 0x21, 0x7b, 0xef, 0x65, 0xd8, 0x28, 0xa2, 0x90, 0xf1, -0x5f, 0x6a, 0x7e, 0x86, 0x79, 0xff, 0x00, 0xc5, 0x7d, 0x50, -0x5b, 0xd8, 0x45, 0x6e, 0x0f, 0x2d, 0xc9, 0xaf, 0x1a, 0x56, -0x65, 0x6d, 0xca, 0x70, 0x6b, 0xb9, 0xf8, 0xaf, 0xa9, 0x0b, -0x9d, 0x7f, 0xc9, 0x53, 0xc4, 0x68, 0x2b, 0x86, 0xaf, 0xc7, -0x33, 0xca, 0xfe, 0xdf, 0x1d, 0x3e, 0xd1, 0xd0, 0xfc, 0x07, -0x89, 0x31, 0x3f, 0x59, 0xcc, 0x6a, 0x59, 0xe9, 0x1d, 0x3e, -0xe3, 0x53, 0x4f, 0xf1, 0x25, 0xee, 0x9e, 0xdf, 0x2c, 0x9c, -0x57, 0x4d, 0xa7, 0x7c, 0x4d, 0x9a, 0x02, 0x3c, 0xe6, 0x63, -0xf4, 0xae, 0x16, 0x8c, 0x0a, 0xf3, 0xa8, 0xe6, 0x18, 0x9c, -0x3d, 0xbd, 0x9c, 0xd9, 0xe5, 0xe1, 0xf3, 0x3c, 0x66, 0x17, -0xf8, 0x55, 0x1d, 0x8f, 0x5f, 0xb5, 0xf8, 0xb3, 0x62, 0x55, -0x43, 0x89, 0x33, 0xf4, 0xff, 0x00, 0xeb, 0xd5, 0xbf, 0xf8, -0x5a, 0x9a, 0x67, 0xfb, 0x7f, 0xa7, 0xf8, 0xd7, 0x8a, 0x6d, -0x14, 0x6d, 0x06, 0xbd, 0x88, 0xf1, 0x1e, 0x36, 0x2a, 0xda, -0x7d, 0xc7, 0xbd, 0x1e, 0x2d, 0xcc, 0x62, 0xad, 0xa7, 0xdc, -0x7a, 0xcd, 0xff, 0x00, 0xc5, 0x98, 0xd7, 0x3e, 0x40, 0x27, -0xea, 0x3f, 0xfa, 0xf5, 0xc3, 0x78, 0x8f, 0xc5, 0xf7, 0x3e, -0x20, 0x62, 0x1f, 0x2a, 0xa6, 0xb9, 0xf0, 0x80, 0x76, 0xa5, -0xaf, 0x3b, 0x15, 0x9b, 0x62, 0xf1, 0x6b, 0x96, 0xa4, 0xb4, -0xec, 0x79, 0x58, 0xcc, 0xf3, 0x1d, 0x8e, 0x8b, 0x85, 0x59, -0xe9, 0xd8, 0x28, 0xa2, 0x8a, 0xf1, 0xcf, 0x00, 0x29, 0x21, -0xb6, 0x7b, 0xeb, 0x98, 0xe1, 0x4c, 0x65, 0x9a, 0x86, 0xed, -0x5d, 0xb7, 0xc3, 0xdf, 0x0d, 0x3c, 0xf7, 0x0d, 0x77, 0x2a, -0x61, 0x57, 0xa6, 0x6b, 0xbb, 0x05, 0x85, 0x96, 0x32, 0xbc, -0x69, 0x45, 0x6f, 0xb9, 0xe9, 0x65, 0xd8, 0x29, 0xe3, 0xf1, -0x50, 0xa1, 0x15, 0xbb, 0xd7, 0xd0, 0xe8, 0x74, 0x2d, 0x17, -0xfb, 0x1a, 0xd7, 0x9f, 0xbc, 0x56, 0xb3, 0xf5, 0xa9, 0xba, -0x8a, 0xea, 0x35, 0x17, 0x0a, 0x0e, 0x3a, 0x0a, 0xe2, 0xb5, -0xa9, 0xb9, 0x6e, 0x6b, 0xf6, 0xfa, 0x14, 0x63, 0x87, 0xa6, -0xa9, 0xc3, 0x64, 0x7f, 0x46, 0xe1, 0xb0, 0xf0, 0xc2, 0xd2, -0x8d, 0x28, 0x6c, 0x8e, 0x3f, 0x5e, 0x9f, 0x08, 0xdd, 0x6b, -0xc7, 0x7c, 0x7d, 0x7e, 0x20, 0xb2, 0xb9, 0x72, 0x7f, 0x86, -0xbd, 0x47, 0xc4, 0x33, 0xe2, 0x36, 0xe6, 0xbc, 0x23, 0xe2, -0xce, 0xa2, 0x20, 0xd3, 0xdc, 0x67, 0xae, 0x6a, 0xea, 0xcb, -0x96, 0x0d, 0x97, 0x5a, 0x5c, 0x94, 0xe5, 0x23, 0xe5, 0x0f, -0x8a, 0xda, 0x9f, 0x9f, 0x7e, 0xea, 0x09, 0x3c, 0xd7, 0x8a, -0x6b, 0x93, 0x67, 0x35, 0xe8, 0xbe, 0x3c, 0xbd, 0xf3, 0xf5, -0x29, 0x8e, 0x78, 0xcd, 0x79, 0x6e, 0xb3, 0x2e, 0x5c, 0xd7, -0xc2, 0xd2, 0xf7, 0xeb, 0x39, 0x1f, 0x9b, 0x51, 0xfd, 0xed, -0x79, 0x48, 0xc1, 0xbb, 0x7e, 0xb5, 0xfa, 0xf9, 0xfb, 0x1a, -0xe8, 0x67, 0x4b, 0xf8, 0x17, 0xe1, 0x99, 0x1e, 0x3f, 0x2d, -0xe6, 0xb2, 0x87, 0x2a, 0x7a, 0x82, 0x10, 0x67, 0xf5, 0x26, -0xbf, 0x23, 0xf4, 0x5d, 0x2d, 0xf5, 0xef, 0x10, 0x69, 0xda, -0x6a, 0x0c, 0xb5, 0xdd, 0xcc, 0x70, 0x81, 0xfe, 0xf3, 0x01, -0x5f, 0xb7, 0xff, 0x00, 0x0c, 0x74, 0xb4, 0xd2, 0x3c, 0x0d, -0xa1, 0xda, 0x46, 0x15, 0x56, 0x3b, 0x54, 0xc0, 0x5e, 0x9d, -0x33, 0x5f, 0x5d, 0x84, 0x8d, 0x93, 0x67, 0xdc, 0xe0, 0x23, -0x64, 0xd9, 0xda, 0xda, 0x0e, 0x95, 0xb1, 0x6a, 0xb8, 0x22, -0xb3, 0x2d, 0x16, 0xb5, 0xed, 0x57, 0x91, 0x5e, 0x89, 0xeb, -0x1a, 0x76, 0xc3, 0x02, 0xb5, 0x60, 0x18, 0x02, 0xb3, 0x6d, -0xc6, 0x71, 0x5a, 0x90, 0xd0, 0x05, 0xb8, 0x6a, 0xd2, 0xd5, -0x78, 0x7b, 0x55, 0x94, 0x1d, 0x28, 0x02, 0x45, 0x15, 0x32, -0xd4, 0x69, 0xda, 0xa5, 0x1d, 0x28, 0x00, 0xa7, 0xd3, 0x47, -0x5a, 0x75, 0x00, 0x67, 0x3f, 0x5a, 0xa7, 0x31, 0xab, 0x72, -0x9c, 0x55, 0x29, 0x9b, 0xad, 0x00, 0x78, 0xff, 0x00, 0xed, -0x45, 0xe2, 0xd1, 0xe1, 0x2f, 0x83, 0x1e, 0x20, 0x99, 0x65, -0x11, 0xdc, 0xde, 0x46, 0x2c, 0x2d, 0xfa, 0xe4, 0xbc, 0x87, -0x1c, 0x7b, 0x85, 0xdc, 0x7f, 0x0a, 0xc5, 0xfd, 0x90, 0xbc, -0x25, 0xfd, 0x85, 0xf0, 0xeb, 0x4d, 0x91, 0xa3, 0xdb, 0x2d, -0xce, 0xe9, 0xdb, 0x3e, 0xe7, 0x8f, 0xd3, 0x15, 0xc4, 0x7e, -0xda, 0x9a, 0xc3, 0xea, 0xd7, 0xfe, 0x0a, 0xf0, 0x7d, 0xbb, -0x31, 0x7b, 0xbb, 0xb3, 0x79, 0x2a, 0x0e, 0x84, 0x0f, 0x91, -0x3f, 0xf4, 0x27, 0xed, 0xe9, 0x5f, 0x48, 0x7c, 0x30, 0xd1, -0x17, 0x46, 0xf0, 0xfe, 0x9f, 0x6a, 0xab, 0x85, 0x86, 0x25, -0x41, 0xf8, 0x0a, 0xf9, 0xda, 0x7f, 0xed, 0x19, 0xac, 0xe5, -0xd2, 0x9c, 0x52, 0xf9, 0xbd, 0x5f, 0xe0, 0x7c, 0xa5, 0x2f, -0xf6, 0xac, 0xee, 0xa4, 0xfa, 0x52, 0x8a, 0x8f, 0xce, 0x5a, -0xbf, 0xc0, 0xed, 0xe6, 0x99, 0x6c, 0x6c, 0x65, 0x99, 0xce, -0x16, 0x34, 0x2e, 0x4f, 0xd0, 0x57, 0xe1, 0x8f, 0xed, 0xff, -0x00, 0xf1, 0xf7, 0xc4, 0x1a, 0xa7, 0xc5, 0xf9, 0xac, 0xac, -0xf5, 0x19, 0x22, 0x82, 0xdc, 0xb1, 0xdb, 0x1b, 0x10, 0x33, -0x9f, 0xad, 0x7e, 0xcf, 0x7c, 0x68, 0xf1, 0x22, 0x78, 0x57, -0xe1, 0xce, 0xb1, 0x7a, 0xee, 0x13, 0x10, 0xb2, 0x82, 0x7e, -0x95, 0xfc, 0xe6, 0x7c, 0x5f, 0xf1, 0x03, 0xf8, 0xe3, 0xe2, -0x96, 0xaf, 0x76, 0x18, 0x3f, 0x9d, 0x74, 0x51, 0x4a, 0xf2, -0x31, 0xbb, 0x15, 0xf4, 0x47, 0xd5, 0x9f, 0xa0, 0xdf, 0xf0, -0x4b, 0x7b, 0x1d, 0x7f, 0xc6, 0x3e, 0x27, 0x83, 0x53, 0xd4, -0x6f, 0x27, 0x9e, 0xde, 0x32, 0xd2, 0x9d, 0xcd, 0xc7, 0x1d, -0x2b, 0xf5, 0x57, 0x59, 0xd7, 0xac, 0xf4, 0x18, 0x16, 0x5b, -0xb9, 0x92, 0x25, 0x63, 0x85, 0xde, 0xd8, 0xcd, 0x7c, 0x67, -0xff, 0x00, 0x04, 0xc6, 0xf8, 0x7c, 0x9e, 0x1d, 0xf8, 0x64, -0x75, 0x22, 0xa3, 0x73, 0xa0, 0x8c, 0x37, 0xf3, 0xaf, 0x13, -0xff, 0x00, 0x82, 0xb5, 0xfc, 0x79, 0xd6, 0xfc, 0x19, 0xe2, -0x0f, 0x09, 0xe8, 0x9a, 0x1d, 0xf1, 0xb5, 0x76, 0x49, 0xa6, -0x97, 0x07, 0xd0, 0xa8, 0x1c, 0x03, 0x40, 0x1f, 0xa5, 0x9a, -0x6f, 0x8c, 0xb4, 0xdd, 0x56, 0x61, 0x14, 0x13, 0xa3, 0xb1, -0xfe, 0xeb, 0x66, 0xb7, 0x3a, 0xd7, 0xe3, 0xa7, 0xfc, 0x13, -0xb7, 0xc7, 0x9e, 0x37, 0xf8, 0x8d, 0xe3, 0xb6, 0x92, 0xfb, -0x50, 0x69, 0xad, 0x95, 0x95, 0x06, 0x54, 0xff, 0x00, 0x8d, -0x7e, 0xc4, 0xc4, 0xa5, 0x22, 0x45, 0x27, 0x24, 0x00, 0x28, -0x00, 0x31, 0x23, 0x75, 0x55, 0x3f, 0x51, 0x4c, 0x6b, 0x3b, -0x77, 0xfb, 0xd0, 0x46, 0xdf, 0x54, 0x06, 0xa6, 0xa2, 0x80, -0x2a, 0x1d, 0x26, 0xc4, 0x90, 0x4d, 0x95, 0xb9, 0x23, 0xbf, -0x94, 0xbf, 0xe1, 0x56, 0x63, 0x8d, 0x62, 0x50, 0xa8, 0xa1, -0x14, 0x74, 0x0a, 0x30, 0x29, 0xd4, 0x50, 0x03, 0x5b, 0x04, -0x60, 0x8c, 0x8a, 0xaa, 0xda, 0x55, 0xa3, 0xf5, 0xb7, 0x4f, -0xfb, 0xe6, 0xae, 0x51, 0x52, 0xe2, 0xa5, 0xba, 0x22, 0x50, -0x8c, 0xbe, 0x25, 0x73, 0x3c, 0xe8, 0x96, 0x2d, 0xd6, 0xd9, -0x3f, 0x2a, 0x8d, 0xbc, 0x37, 0xa7, 0xb7, 0xfc, 0xbb, 0x2f, -0xe5, 0x5a, 0x94, 0x56, 0x4e, 0x85, 0x27, 0xbc, 0x57, 0xdc, -0x64, 0xf0, 0xf4, 0x5e, 0xf0, 0x5f, 0x72, 0x31, 0xd7, 0xc2, -0xda, 0x72, 0x48, 0xae, 0x2d, 0xd4, 0x32, 0x9c, 0x8a, 0xd5, -0x44, 0x08, 0xa1, 0x47, 0x00, 0x76, 0xa7, 0xd1, 0x55, 0x0a, -0x50, 0xa7, 0xf0, 0x2b, 0x15, 0x4e, 0x8d, 0x3a, 0x5f, 0x04, -0x52, 0xf4, 0x0a, 0x28, 0xa2, 0xb5, 0x36, 0x0a, 0xcc, 0xd6, -0xf4, 0x94, 0xd6, 0x2d, 0x4c, 0x2c, 0x71, 0x5a, 0x74, 0x54, -0x4e, 0x11, 0xa9, 0x17, 0x09, 0x2d, 0x19, 0x9d, 0x4a, 0x71, -0xab, 0x07, 0x09, 0xab, 0xa6, 0x79, 0xdb, 0x7c, 0x2b, 0x87, -0xb3, 0xd4, 0x0f, 0xf0, 0xab, 0xae, 0x1f, 0xf9, 0x57, 0xa5, -0xd1, 0x5e, 0x33, 0xc9, 0x70, 0x4f, 0xec, 0x1e, 0x04, 0xb8, -0x7f, 0x2e, 0x97, 0xfc, 0xbb, 0x3c, 0xb2, 0x4f, 0x85, 0x52, -0x76, 0x23, 0xf3, 0x14, 0xcb, 0x7f, 0x85, 0xf7, 0x10, 0xdd, -0x24, 0x98, 0x1f, 0x29, 0xf6, 0xaf, 0x56, 0xa2, 0xb2, 0xfe, -0xc2, 0xc1, 0x5e, 0xfc, 0xa6, 0x3f, 0xea, 0xd6, 0x5f, 0x74, -0xd4, 0x4a, 0xba, 0x75, 0xa9, 0xb3, 0xb4, 0x8e, 0x23, 0xd5, -0x47, 0x35, 0x6a, 0x8a, 0x2b, 0xdf, 0x8c, 0x54, 0x52, 0x8a, -0xe8, 0x7d, 0x3c, 0x62, 0xa1, 0x15, 0x15, 0xb2, 0x0a, 0x28, -0xa2, 0xa8, 0xa2, 0x39, 0x73, 0xb1, 0xb1, 0xd7, 0x15, 0xe2, -0x7e, 0x31, 0xd0, 0xae, 0xf5, 0x2d, 0x72, 0x69, 0x84, 0x6e, -0x54, 0x70, 0x2b, 0xdc, 0x2a, 0x26, 0x82, 0x37, 0xea, 0x8a, -0x7f, 0x0a, 0xf2, 0x33, 0x2c, 0xbe, 0x39, 0x8d, 0x35, 0x4e, -0x4e, 0xd6, 0x3c, 0x2c, 0xdb, 0x2a, 0x86, 0x6b, 0x49, 0x52, -0x9c, 0xac, 0x93, 0xb9, 0xf3, 0xab, 0x78, 0x62, 0xe9, 0x7f, -0x81, 0xea, 0x26, 0xf0, 0xf5, 0xca, 0x9f, 0xb8, 0xf5, 0xf4, -0x61, 0xb2, 0x80, 0xf5, 0x8d, 0x7f, 0x2a, 0x8d, 0xb4, 0xbb, -0x56, 0xeb, 0x0a, 0x9a, 0xf9, 0x97, 0xc2, 0xd0, 0xe9, 0x33, -0xe3, 0xe5, 0xc1, 0x74, 0xfa, 0x54, 0xfc, 0x0f, 0x9c, 0xa4, -0xd1, 0x6e, 0x14, 0x7d, 0xd3, 0x5e, 0xb7, 0xf0, 0xbf, 0x47, -0x6b, 0x1b, 0x2d, 0xec, 0x30, 0x71, 0x5d, 0x73, 0x68, 0x76, -0x4d, 0xff, 0x00, 0x2c, 0x56, 0xad, 0x43, 0x6f, 0x1d, 0xb2, -0x6d, 0x8d, 0x42, 0x8f, 0x4a, 0xef, 0xcb, 0xb2, 0x15, 0x81, -0xaf, 0xed, 0x9c, 0xaf, 0x63, 0xd3, 0xca, 0x78, 0x66, 0x39, -0x6e, 0x27, 0xeb, 0x0e, 0x77, 0xb1, 0x35, 0x14, 0x51, 0x5f, -0x5c, 0x7d, 0xd0, 0x51, 0x45, 0x14, 0x00, 0x51, 0x45, 0x14, -0x00, 0x57, 0x27, 0xe2, 0xff, 0x00, 0x09, 0x47, 0xac, 0x42, -0xcf, 0x14, 0x63, 0xcd, 0xc7, 0x26, 0xba, 0xca, 0x2b, 0x9f, -0x11, 0x42, 0x18, 0x9a, 0x6e, 0x9d, 0x45, 0xa3, 0x39, 0x71, -0x38, 0x6a, 0x78, 0xba, 0x4e, 0x95, 0x55, 0x74, 0xcf, 0x9b, -0xf5, 0x9f, 0x0e, 0xdc, 0x69, 0x33, 0x30, 0x93, 0x27, 0x15, -0x91, 0xb8, 0x66, 0xbe, 0x92, 0xd4, 0xbc, 0x3f, 0x69, 0xa8, -0xab, 0x6f, 0x8f, 0x2c, 0x7b, 0xd7, 0x03, 0xae, 0xfc, 0x35, -0x9a, 0x56, 0x66, 0xb7, 0x51, 0x8a, 0xfc, 0xd7, 0x1d, 0xc3, -0xb5, 0xa8, 0xb7, 0x2a, 0x1a, 0xa3, 0xf2, 0x2c, 0xcb, 0x85, -0x2b, 0xd0, 0x6e, 0x78, 0x6f, 0x79, 0x76, 0x3c, 0xb2, 0x8a, -0xe9, 0xee, 0xbe, 0x1f, 0x6a, 0x90, 0x67, 0xe4, 0x1c, 0x7b, -0x1a, 0xca, 0x97, 0xc3, 0x5a, 0x84, 0x67, 0x1e, 0x5f, 0x35, -0xf3, 0x55, 0x30, 0x98, 0x8a, 0x7f, 0x1c, 0x19, 0xf1, 0xf5, -0x30, 0x18, 0xba, 0x4e, 0xd3, 0xa6, 0xfe, 0xe3, 0x36, 0x8a, -0xbe, 0xba, 0x06, 0xa0, 0xc7, 0x02, 0x12, 0x6a, 0x64, 0xf0, -0xc6, 0xa2, 0xdf, 0xf2, 0xee, 0xdf, 0x95, 0x64, 0xa8, 0x56, -0x7b, 0x41, 0xfd, 0xc6, 0x4b, 0x0b, 0x5e, 0x5b, 0x53, 0x7f, -0x71, 0x95, 0x4a, 0x01, 0x6f, 0xba, 0x33, 0x5d, 0x4e, 0x97, -0xe0, 0x0b, 0xcb, 0xe9, 0x55, 0x64, 0x8d, 0xe3, 0x07, 0xbd, -0x76, 0xfa, 0x37, 0xc2, 0xc8, 0xed, 0x1d, 0x5e, 0x47, 0xcf, -0xb5, 0x7a, 0xb8, 0x6c, 0x9b, 0x19, 0x89, 0x7a, 0x46, 0xc8, -0xf6, 0xb0, 0x79, 0x06, 0x3f, 0x18, 0xf4, 0x85, 0x97, 0x99, -0xe6, 0xba, 0x27, 0x86, 0x6e, 0xb5, 0xa9, 0x42, 0x2a, 0x32, -0x8a, 0xf5, 0xdf, 0x0a, 0x78, 0x0a, 0xdf, 0x47, 0x8c, 0x3c, -0xe8, 0x1e, 0x5f, 0x7c, 0x57, 0x49, 0x63, 0xa4, 0xdb, 0xe9, -0xe8, 0x04, 0x71, 0x81, 0xef, 0x57, 0xab, 0xef, 0xf2, 0xdc, -0x8a, 0x8e, 0x0e, 0xd3, 0xa9, 0xef, 0x48, 0xfd, 0x43, 0x29, -0xe1, 0xbc, 0x3e, 0x5f, 0x6a, 0x95, 0x3d, 0xe9, 0x8c, 0x55, -0x0a, 0x30, 0x38, 0x02, 0x9f, 0x45, 0x15, 0xf5, 0x07, 0xd9, -0x05, 0x55, 0xd4, 0x2e, 0x05, 0xad, 0xac, 0x92, 0x1e, 0xc2, -0xad, 0x56, 0x57, 0x88, 0xad, 0xa5, 0xba, 0xd3, 0x24, 0x48, -0x86, 0x58, 0x8a, 0xc6, 0xb3, 0x71, 0xa7, 0x27, 0x1d, 0xec, -0x61, 0x5e, 0x52, 0x8d, 0x29, 0x4a, 0x2a, 0xee, 0xc7, 0x81, -0xf8, 0xa2, 0xf3, 0xed, 0xfa, 0xf5, 0xd4, 0xb9, 0xce, 0x5b, -0x15, 0x95, 0x5b, 0x9a, 0xa7, 0x85, 0xb5, 0x0b, 0x6b, 0x89, -0x59, 0xa1, 0x38, 0x27, 0x39, 0xac, 0x67, 0xb7, 0x9a, 0x23, -0x87, 0x4c, 0x57, 0xe1, 0x98, 0x98, 0xd5, 0xf6, 0xb2, 0x95, -0x48, 0xb4, 0xdb, 0x67, 0xf3, 0x6e, 0x2e, 0x9d, 0x65, 0x5a, -0x53, 0xab, 0x16, 0x9b, 0x6c, 0x65, 0x14, 0x51, 0x9a, 0xe4, -0xd0, 0xe2, 0xd0, 0x28, 0xa3, 0x34, 0x53, 0xb2, 0x0b, 0x20, -0xa2, 0x8a, 0x4d, 0xdc, 0xe2, 0x96, 0x81, 0xa0, 0xb4, 0x72, -0x48, 0x03, 0xad, 0x5d, 0xb2, 0xd1, 0xae, 0xf5, 0x12, 0x04, -0x11, 0xe7, 0x35, 0xe8, 0x3e, 0x15, 0xf8, 0x66, 0xee, 0x56, -0x5b, 0xd5, 0xd9, 0x8e, 0x6b, 0xd2, 0xc2, 0x65, 0xd8, 0x8c, -0x64, 0x94, 0x69, 0xc7, 0x4e, 0xe7, 0xad, 0x81, 0xca, 0xb1, -0x59, 0x84, 0xd4, 0x69, 0x43, 0x4e, 0xfd, 0x0e, 0x6b, 0xc2, -0x7e, 0x0b, 0x9f, 0x57, 0xb9, 0x47, 0x96, 0x32, 0x23, 0x07, -0x35, 0xeb, 0xb1, 0x69, 0x71, 0xe9, 0x36, 0x5e, 0x54, 0x6a, -0x07, 0xd2, 0xb5, 0x6c, 0x34, 0xe8, 0xb4, 0xe8, 0x44, 0x71, -0x0c, 0x01, 0xde, 0xaa, 0x6a, 0xb2, 0x7c, 0xa6, 0xbf, 0x54, -0xca, 0xf2, 0xaa, 0x79, 0x7c, 0x3b, 0xc9, 0xf5, 0x3f, 0x6b, -0xc9, 0xb2, 0x5a, 0x39, 0x55, 0x3d, 0x35, 0x9b, 0xdd, 0x9c, -0xae, 0xa6, 0x48, 0x0d, 0xcd, 0x70, 0xda, 0xcb, 0x1f, 0x9b, -0x9a, 0xec, 0xf5, 0x59, 0x78, 0x6a, 0xe0, 0xf5, 0xb9, 0xbe, -0xf5, 0x7b, 0xc7, 0xd2, 0x9c, 0x27, 0x89, 0x64, 0x24, 0x35, -0x7c, 0xe1, 0xf1, 0xba, 0xfc, 0xc5, 0x13, 0x20, 0x3f, 0xc3, -0x9e, 0x2b, 0xe8, 0x1f, 0x12, 0x5c, 0x7d, 0xee, 0x6b, 0xe5, -0x3f, 0x8f, 0x7a, 0xa8, 0x13, 0x4c, 0xb9, 0xe8, 0xb8, 0xc5, -0x79, 0xd8, 0xf9, 0xf2, 0x50, 0x6c, 0xf2, 0xb3, 0x39, 0xfb, -0x3c, 0x34, 0x99, 0xf3, 0x1f, 0x89, 0xee, 0x0b, 0xdc, 0xce, -0xc4, 0xf5, 0x35, 0xe7, 0x9a, 0x9b, 0xe6, 0x43, 0x5d, 0x96, -0xbd, 0x3e, 0x4b, 0x93, 0xdc, 0x9a, 0xe1, 0xb5, 0x07, 0xcb, -0x35, 0x7c, 0xae, 0x0d, 0x5f, 0x53, 0xe2, 0xb0, 0x11, 0xbe, -0xa7, 0x77, 0xfb, 0x36, 0x68, 0x07, 0xc4, 0x9f, 0x1b, 0x7c, -0x39, 0x07, 0x97, 0xe6, 0xa4, 0x32, 0xb5, 0xcb, 0x0c, 0xf0, -0x36, 0x29, 0x23, 0xeb, 0xf3, 0x6d, 0x1f, 0x8d, 0x7e, 0xce, -0xe8, 0x16, 0x9f, 0x62, 0xd2, 0xed, 0x2d, 0xc0, 0xc0, 0x8e, -0x25, 0x5c, 0x7d, 0x05, 0x7e, 0x5d, 0x7f, 0xc1, 0x3e, 0xbc, -0x28, 0x75, 0xaf, 0x8a, 0x57, 0xfa, 0x93, 0x21, 0x2b, 0x6f, -0x0a, 0x5b, 0x29, 0xed, 0xf3, 0xb8, 0x66, 0xfc, 0x40, 0x8c, -0x7e, 0x75, 0xfa, 0xa9, 0x6a, 0xb8, 0xc5, 0x7d, 0x8e, 0x1d, -0x5a, 0x07, 0xdf, 0x61, 0x23, 0xcb, 0x4c, 0xd4, 0xb4, 0x1c, -0x0a, 0xd7, 0xb5, 0x52, 0x6b, 0x32, 0xd9, 0x7a, 0x56, 0xbd, -0xa2, 0xe3, 0x15, 0xd4, 0x76, 0x1a, 0x36, 0xdd, 0x85, 0x6a, -0x42, 0xb5, 0x9f, 0x6e, 0xbc, 0x8a, 0xd2, 0x84, 0x74, 0xa0, -0x0b, 0x71, 0x0e, 0x95, 0x61, 0x05, 0x43, 0x18, 0xe2, 0xa7, -0x5a, 0x00, 0x91, 0x05, 0x4b, 0x4c, 0x4a, 0x7d, 0x00, 0x2a, -0xd3, 0xa9, 0x07, 0x4a, 0x5a, 0x00, 0xcb, 0x94, 0xf5, 0xaa, -0x33, 0x9a, 0xb7, 0x31, 0xeb, 0x58, 0x1e, 0x29, 0xd6, 0xa2, -0xf0, 0xee, 0x81, 0xa9, 0x6a, 0xb3, 0xb2, 0xac, 0x36, 0x56, -0xf2, 0x5c, 0x31, 0x63, 0x81, 0x85, 0x52, 0x71, 0xfa, 0x52, -0x6d, 0x45, 0x36, 0xc9, 0x94, 0x94, 0x53, 0x93, 0xd9, 0x1f, -0x22, 0x5e, 0x5c, 0x1f, 0x8a, 0xff, 0x00, 0xb5, 0xcd, 0xf3, -0x6d, 0xcd, 0x8e, 0x82, 0x7e, 0xca, 0x9d, 0xc1, 0x31, 0x70, -0xc7, 0xdb, 0xe7, 0x2c, 0x3f, 0x01, 0x5f, 0x6b, 0x78, 0x7e, -0xd4, 0x43, 0x6f, 0x18, 0x1d, 0x85, 0x7c, 0x6d, 0xfb, 0x18, -0x68, 0x73, 0x6a, 0xb7, 0xba, 0xe7, 0x89, 0x6e, 0xd4, 0xbd, -0xc5, 0xec, 0xec, 0xcd, 0x21, 0x1f, 0x78, 0xb3, 0x16, 0x63, -0xf9, 0x9a, 0xfb, 0x63, 0x4e, 0x8f, 0x64, 0x43, 0xe9, 0x5f, -0x3f, 0x92, 0x27, 0x3a, 0x33, 0xc4, 0xcb, 0x7a, 0x92, 0x6f, -0xe5, 0xb2, 0xfc, 0x0f, 0x97, 0xe1, 0xd8, 0xba, 0x98, 0x79, -0xe2, 0xe5, 0xbd, 0x59, 0x39, 0x7c, 0xb6, 0x5f, 0x81, 0xf2, -0xff, 0x00, 0xfc, 0x14, 0x43, 0xc7, 0x12, 0x78, 0x3f, 0xe0, -0x8e, 0xa2, 0xf1, 0xb1, 0x5f, 0xdd, 0x31, 0xc8, 0x38, 0xe4, -0x8c, 0x01, 0x5f, 0x81, 0xf6, 0xda, 0x83, 0x43, 0xa9, 0xad, -0xe3, 0xae, 0xf7, 0x12, 0x6f, 0x20, 0xf7, 0x39, 0xaf, 0xdb, -0x3f, 0xf8, 0x2a, 0xdc, 0x17, 0x97, 0xbf, 0x07, 0xed, 0xed, -0x6d, 0x23, 0x66, 0x8d, 0x98, 0xc9, 0x70, 0xe3, 0xa0, 0x51, -0xeb, 0x5f, 0x88, 0x52, 0x29, 0x57, 0x20, 0xfa, 0xd7, 0xd0, -0x9f, 0x54, 0x7e, 0x9b, 0x7e, 0xcc, 0x3f, 0xf0, 0x50, 0x74, -0xf8, 0x5b, 0xf0, 0xda, 0xdb, 0x41, 0x7d, 0x32, 0xdc, 0xf9, -0x2b, 0x9f, 0x31, 0xa5, 0x39, 0x63, 0xf4, 0x02, 0xbe, 0x43, -0xfd, 0xb3, 0x3e, 0x3f, 0xcd, 0xfb, 0x41, 0xfc, 0x51, 0x1a, -0xcb, 0xc2, 0xb0, 0x43, 0x6d, 0x11, 0x86, 0x35, 0x56, 0x2c, -0x39, 0x3c, 0xf5, 0x1e, 0xd5, 0xe0, 0xeb, 0x71, 0x2a, 0x0f, -0x96, 0x57, 0x5f, 0xa3, 0x11, 0x4c, 0x66, 0x2e, 0x72, 0xc4, -0xb1, 0xf5, 0x26, 0x80, 0x3e, 0xfc, 0xfd, 0x82, 0x7e, 0x3c, -0x68, 0x3f, 0x05, 0x2d, 0x16, 0x4b, 0xcb, 0x58, 0xa7, 0x97, -0xef, 0x16, 0x66, 0xc1, 0xcf, 0xe5, 0x5f, 0x76, 0x5a, 0xff, -0x00, 0xc1, 0x45, 0x3c, 0x2f, 0x38, 0xf9, 0xac, 0xe3, 0x5f, -0xfb, 0x6a, 0x7f, 0xc2, 0xbf, 0x08, 0x2d, 0xf5, 0x5b, 0xcb, -0x51, 0x88, 0x6e, 0xa6, 0x88, 0x7f, 0xb0, 0xe4, 0x55, 0xa4, -0xf1, 0x46, 0xaf, 0x1f, 0xdd, 0xd4, 0x6e, 0x47, 0xfd, 0xb4, -0x34, 0x01, 0xfb, 0xd7, 0x6d, 0xfb, 0x7e, 0xf8, 0x46, 0x7f, -0xbd, 0x0a, 0xaf, 0xfd, 0xb4, 0x3f, 0xfc, 0x4d, 0x6c, 0x5a, -0xfe, 0xdc, 0x5e, 0x0b, 0xb8, 0x03, 0x24, 0x2e, 0x7f, 0xdb, -0x3f, 0xe1, 0x5f, 0x80, 0x91, 0xf8, 0xdf, 0x5d, 0x8b, 0xee, -0xea, 0x77, 0x03, 0xfe, 0x06, 0x6b, 0x73, 0xc3, 0x3e, 0x39, -0xf1, 0x25, 0xfe, 0xb3, 0x69, 0x6a, 0x9a, 0x94, 0xed, 0xbe, -0x41, 0xc6, 0xe3, 0x40, 0x1f, 0xd2, 0x1f, 0xc3, 0xdf, 0x89, -0x1a, 0x6f, 0xc4, 0x6d, 0x3d, 0xae, 0xf4, 0xdc, 0x98, 0xd4, -0x02, 0x79, 0xcf, 0x5a, 0xeb, 0x19, 0x82, 0xa9, 0x62, 0x70, -0x07, 0x24, 0xd7, 0xcd, 0xdf, 0xb0, 0x86, 0x81, 0x7d, 0xa5, -0xfc, 0x16, 0xb3, 0xbb, 0xd4, 0x19, 0xde, 0xe2, 0xef, 0x0d, -0x97, 0xeb, 0x8c, 0x57, 0xb3, 0x7c, 0x52, 0xf1, 0x0f, 0xfc, -0x23, 0x1e, 0x08, 0xd4, 0xef, 0x83, 0x84, 0x75, 0x89, 0x82, -0x93, 0xf4, 0xa0, 0x0a, 0x3a, 0xf7, 0xc6, 0xaf, 0x09, 0xf8, -0x72, 0xfc, 0xd9, 0xde, 0xea, 0x4b, 0x1c, 0xe0, 0x64, 0xae, -0x0f, 0x14, 0xc8, 0x3e, 0x38, 0xf8, 0x32, 0xe3, 0x1b, 0x75, -0x88, 0xf9, 0xf5, 0x53, 0x5f, 0x85, 0x9f, 0x1f, 0x3f, 0x69, -0xef, 0x12, 0xea, 0x1f, 0x14, 0xb5, 0x86, 0xb7, 0xbc, 0x2d, -0x0c, 0x52, 0x14, 0x5d, 0xae, 0xc0, 0x75, 0xfa, 0xd7, 0x19, -0x6f, 0xfb, 0x50, 0x78, 0xae, 0x0c, 0x7f, 0xa4, 0xc8, 0x7f, -0xed, 0xa3, 0x7f, 0x8d, 0x00, 0x7f, 0x42, 0xb0, 0xfc, 0x59, -0xf0, 0x9c, 0xf8, 0xd9, 0xac, 0xc0, 0x73, 0xf5, 0xff, 0x00, -0x0a, 0xb9, 0x17, 0xc4, 0x2f, 0x0e, 0x4c, 0x3e, 0x5d, 0x5e, -0xdc, 0xfe, 0x26, 0xbf, 0x9f, 0x2b, 0x5f, 0xda, 0xd7, 0xc5, -0x30, 0xf5, 0xb9, 0x9f, 0x8f, 0x49, 0x1b, 0xfc, 0x6b, 0x5a, -0xdb, 0xf6, 0xcb, 0xf1, 0x34, 0x3d, 0x6f, 0x2e, 0x07, 0xd2, -0x46, 0xff, 0x00, 0x1a, 0x00, 0xfe, 0x80, 0x62, 0xf1, 0x76, -0x8d, 0x36, 0x36, 0x6a, 0x36, 0xed, 0x9f, 0x46, 0xab, 0x29, -0xae, 0xe9, 0xf2, 0x7d, 0xdb, 0xc8, 0x5b, 0xe8, 0xe2, 0xbf, -0x03, 0x6c, 0xbf, 0x6e, 0x1f, 0x11, 0x5b, 0x91, 0x9b, 0xeb, -0x91, 0xff, 0x00, 0x03, 0x6f, 0xf1, 0xad, 0xbb, 0x3f, 0xdb, -0xdf, 0x5f, 0x87, 0xae, 0xa5, 0x72, 0x3f, 0xe0, 0x4f, 0xfe, -0x34, 0x01, 0xfb, 0xbc, 0xba, 0x85, 0xb3, 0xfd, 0xdb, 0x88, -0xcf, 0xd1, 0x85, 0x48, 0xb3, 0xc4, 0xdd, 0x24, 0x43, 0xf4, -0x61, 0x5f, 0x87, 0x36, 0x7f, 0xf0, 0x50, 0xbd, 0x6e, 0x2c, -0x67, 0x55, 0x9c, 0x7e, 0x32, 0x56, 0xed, 0x97, 0xfc, 0x14, -0x73, 0x57, 0x8b, 0xae, 0xb1, 0x28, 0xfa, 0x97, 0xa0, 0x0f, -0xda, 0xbd, 0xea, 0x7b, 0x8f, 0xce, 0x9d, 0x5f, 0x8e, 0x7a, -0x7f, 0xfc, 0x14, 0xab, 0x53, 0x43, 0xce, 0xb4, 0x7f, 0x16, -0x7f, 0xf1, 0xae, 0x86, 0xcb, 0xfe, 0x0a, 0x65, 0x7e, 0xa0, -0x6e, 0xd6, 0x14, 0xfd, 0x59, 0xbf, 0xc6, 0x80, 0x3f, 0x5a, -0xe8, 0xaf, 0xcb, 0x0b, 0x0f, 0xf8, 0x29, 0xb5, 0xc8, 0xc6, -0xed, 0x56, 0x23, 0xf5, 0x66, 0xff, 0x00, 0x1a, 0xe8, 0x2c, -0xbf, 0xe0, 0xa6, 0xcd, 0xf2, 0xef, 0xbf, 0xb7, 0x6f, 0xce, -0x80, 0x3f, 0x4b, 0xe8, 0xaf, 0xcf, 0x0b, 0x0f, 0xf8, 0x29, -0x95, 0xbb, 0x01, 0xe6, 0x5d, 0x5a, 0x37, 0xd4, 0x7f, 0xf5, -0xeb, 0x7e, 0xcb, 0xfe, 0x0a, 0x4f, 0xa6, 0x3e, 0x3c, 0xc9, -0x6c, 0xcf, 0xe0, 0x7f, 0xc6, 0x80, 0x3e, 0xf0, 0xa2, 0xbe, -0x2b, 0xb4, 0xff, 0x00, 0x82, 0x8c, 0xe8, 0x32, 0x63, 0x7b, -0xd9, 0xfe, 0x4d, 0xfe, 0x35, 0xb5, 0x69, 0xff, 0x00, 0x05, -0x08, 0xf0, 0xb4, 0xd8, 0xde, 0xf6, 0xa3, 0xe8, 0x5b, 0xfc, -0x68, 0x03, 0xeb, 0xaa, 0x2b, 0xe5, 0xfb, 0x3f, 0xdb, 0xc3, -0xc1, 0x97, 0x00, 0x6e, 0x9e, 0x05, 0xcf, 0xa1, 0x35, 0xb1, -0x6b, 0xfb, 0x6c, 0x78, 0x16, 0x7c, 0x6e, 0xbd, 0x89, 0x7f, -0xe0, 0x46, 0x80, 0x3e, 0x88, 0xa2, 0xbc, 0x36, 0xd7, 0xf6, -0xbf, 0xf0, 0x0d, 0xc6, 0x3f, 0xe2, 0x65, 0x12, 0xe7, 0xfd, -0xaa, 0xd5, 0xb6, 0xfd, 0xa9, 0x3c, 0x03, 0x71, 0x8f, 0xf8, -0x9c, 0x42, 0xb9, 0xf5, 0x34, 0x01, 0xeb, 0xb4, 0x57, 0x9a, -0xc1, 0xfb, 0x44, 0x78, 0x12, 0x7c, 0x63, 0x5c, 0x80, 0x67, -0xd4, 0xd5, 0xf8, 0x7e, 0x37, 0xf8, 0x2a, 0x7c, 0x6d, 0xd7, -0xad, 0xb9, 0xff, 0x00, 0x6a, 0x80, 0x3b, 0xba, 0x2b, 0x92, -0x8b, 0xe2, 0xc7, 0x84, 0xa6, 0xfb, 0x9a, 0xed, 0xa7, 0xe2, -0xf8, 0xab, 0x91, 0x7c, 0x41, 0xf0, 0xe4, 0xd8, 0xd9, 0xac, -0xd9, 0xb7, 0xfd, 0xb5, 0x14, 0x01, 0xd0, 0xd1, 0x59, 0x31, -0xf8, 0xb3, 0x45, 0x97, 0xee, 0x6a, 0xb6, 0x8d, 0xff, 0x00, -0x6d, 0x97, 0xfc, 0x6a, 0xc2, 0x6b, 0xba, 0x6b, 0xfd, 0xdb, -0xfb, 0x63, 0xf4, 0x99, 0x7f, 0xc6, 0x80, 0x2f, 0x51, 0x55, -0x97, 0x52, 0xb4, 0x7f, 0xbb, 0x75, 0x0b, 0x7d, 0x24, 0x1f, -0xe3, 0x52, 0x0b, 0x98, 0x5b, 0xa4, 0xa8, 0x7e, 0x8c, 0x28, -0x02, 0x5a, 0x29, 0xa2, 0x45, 0x3d, 0x18, 0x7e, 0x74, 0xb9, -0x07, 0xbd, 0x00, 0x2d, 0x14, 0x51, 0x40, 0x05, 0x14, 0x51, -0x40, 0x11, 0x3d, 0xba, 0x48, 0x3e, 0x65, 0x06, 0xa9, 0xc9, -0xa1, 0xda, 0x3f, 0x26, 0x31, 0xf9, 0x56, 0x8d, 0x15, 0x9c, -0xa9, 0xc2, 0x5f, 0x12, 0x32, 0x95, 0x28, 0x4f, 0xe2, 0x8d, -0xcc, 0xd8, 0xf4, 0x1b, 0x48, 0xce, 0x44, 0x63, 0xf2, 0xab, -0x09, 0xa7, 0xc1, 0x1f, 0x44, 0x5f, 0xca, 0xad, 0x51, 0x49, -0x52, 0x84, 0x76, 0x42, 0x8d, 0x1a, 0x70, 0xf8, 0x62, 0x86, -0x04, 0x55, 0x3c, 0x00, 0x3f, 0x0a, 0x7d, 0x14, 0x56, 0xbb, -0x1a, 0xda, 0xdb, 0x05, 0x14, 0x51, 0x40, 0xc2, 0x8a, 0x28, -0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x0a, 0x77, 0x9a, 0x5c, 0x37, -0xca, 0x44, 0x8a, 0x0e, 0x7d, 0xab, 0x9b, 0xbe, 0xf8, 0x6f, -0xa7, 0xde, 0x12, 0x73, 0xb4, 0xff, 0x00, 0xbb, 0x5d, 0x85, -0x15, 0xc9, 0x5b, 0x09, 0x42, 0xbf, 0xf1, 0x20, 0x99, 0xc3, -0x5f, 0x03, 0x86, 0xc4, 0xff, 0x00, 0x1a, 0x09, 0x9e, 0x6d, -0x73, 0xf0, 0x8e, 0xd5, 0xbe, 0xe4, 0x8d, 0xf9, 0x56, 0x45, -0xdf, 0xc2, 0x73, 0x19, 0xf9, 0x24, 0x73, 0xf8, 0x57, 0xb0, -0x52, 0x10, 0x0f, 0x6a, 0xf2, 0x6a, 0x64, 0x58, 0x1a, 0x9f, -0x62, 0xc7, 0x89, 0x57, 0x86, 0xb2, 0xda, 0xbf, 0xf2, 0xee, -0xc7, 0x88, 0xb7, 0xc2, 0xe9, 0xf3, 0xc3, 0xb8, 0xfc, 0x2a, -0x78, 0xbe, 0x13, 0xce, 0xe3, 0xfe, 0x3e, 0x08, 0xfc, 0x2b, -0xd9, 0xb6, 0x0f, 0xee, 0x8a, 0x36, 0x8f, 0x41, 0x5c, 0xcb, -0x87, 0x30, 0x49, 0xea, 0x8e, 0x38, 0xf0, 0x96, 0x5e, 0x9e, -0xa8, 0xf2, 0x48, 0x7e, 0x10, 0x5c, 0x33, 0x0c, 0xdc, 0x71, -0xf4, 0xad, 0xed, 0x2f, 0xe1, 0x65, 0xbd, 0xb1, 0x1e, 0x7b, -0x09, 0x3f, 0x0a, 0xef, 0xe8, 0xae, 0xca, 0x59, 0x26, 0x06, -0x93, 0xba, 0x81, 0xdf, 0x43, 0x87, 0x32, 0xda, 0x0f, 0x99, -0x53, 0xbb, 0xf3, 0x32, 0x6c, 0x3c, 0x33, 0x63, 0xa7, 0x63, -0xca, 0x89, 0x41, 0x1e, 0xd5, 0xaa, 0x06, 0x29, 0x68, 0xaf, -0x6a, 0x9d, 0x38, 0x52, 0x5c, 0xb0, 0x56, 0x47, 0xd0, 0xd3, -0xa5, 0x4e, 0x8c, 0x79, 0x69, 0xc6, 0xcb, 0xc8, 0x46, 0x38, -0x52, 0x6b, 0x07, 0x57, 0x97, 0xe5, 0x35, 0xb7, 0x39, 0xc2, -0x57, 0x33, 0xab, 0xc9, 0xc1, 0xad, 0x0d, 0x4e, 0x5b, 0x58, -0x9b, 0x0a, 0x6b, 0x82, 0xd6, 0xe7, 0xe1, 0xab, 0xb1, 0xd6, -0xe6, 0xe0, 0x8a, 0xf3, 0xed, 0x7a, 0x7c, 0x2b, 0x50, 0x07, -0x9f, 0xf8, 0x9e, 0xef, 0x6a, 0x48, 0x7d, 0x2b, 0xe3, 0x3f, -0x8e, 0x9a, 0xc1, 0x9b, 0x50, 0x99, 0x7d, 0x78, 0xfd, 0x6b, -0xeb, 0x2f, 0x1b, 0xdf, 0x08, 0x2c, 0x67, 0x62, 0x71, 0xc1, -0xaf, 0x88, 0xbe, 0x2e, 0x6a, 0x1e, 0x7e, 0xaf, 0x20, 0xce, -0x7f, 0xfd, 0x75, 0xf3, 0xd9, 0xc4, 0xed, 0x4d, 0x47, 0xb9, -0xf2, 0xb9, 0xf5, 0x4b, 0x52, 0x50, 0x5d, 0x4f, 0x23, 0xd6, -0xe7, 0xfb, 0xd5, 0xc6, 0xde, 0x3e, 0x49, 0xae, 0x93, 0x5b, -0x9b, 0x24, 0x8a, 0xe5, 0x6e, 0xdb, 0xad, 0x79, 0xf8, 0x48, -0xda, 0x28, 0xf3, 0x30, 0x30, 0xb4, 0x51, 0xfa, 0x21, 0xff, -0x00, 0x04, 0xde, 0xf0, 0x72, 0xda, 0x78, 0x46, 0x7d, 0x65, -0xb3, 0xbe, 0xe6, 0x79, 0x66, 0xe4, 0x74, 0xc6, 0x23, 0x5e, -0x7e, 0x80, 0xd7, 0xdd, 0x36, 0x8b, 0x9c, 0x57, 0x80, 0xfe, -0xc7, 0xbe, 0x12, 0x3e, 0x15, 0xf8, 0x3b, 0xa1, 0xdb, 0xbc, -0x62, 0x39, 0xbe, 0xcb, 0x10, 0x90, 0x01, 0xfc, 0x65, 0x43, -0xb8, 0xff, 0x00, 0xbe, 0x98, 0xd7, 0xd0, 0x96, 0x8b, 0x9c, -0x57, 0xd7, 0x41, 0x5a, 0x29, 0x1f, 0x73, 0x4d, 0x72, 0xc1, -0x23, 0x4e, 0xd9, 0x7a, 0x56, 0xbd, 0xaa, 0x60, 0x0a, 0xcd, -0xb5, 0x5e, 0x45, 0x6b, 0xdb, 0x2f, 0x02, 0xac, 0xd0, 0xbf, -0x6c, 0xb5, 0xa3, 0x08, 0xaa, 0x56, 0xe3, 0x81, 0x5a, 0x10, -0x8a, 0x00, 0xb3, 0x18, 0xc6, 0x2a, 0x65, 0xa8, 0x92, 0xa6, -0x5e, 0xb4, 0x01, 0x2a, 0x53, 0xa9, 0x16, 0x96, 0x80, 0x1c, -0x3a, 0x52, 0xd1, 0x45, 0x00, 0x63, 0x4c, 0xd5, 0xe1, 0x7f, -0xb5, 0xdf, 0x8a, 0x8f, 0x86, 0xfe, 0x0b, 0x6a, 0xb1, 0xc6, -0xfb, 0x2e, 0x35, 0x27, 0x4b, 0x18, 0xc0, 0xc6, 0x4e, 0xf3, -0xf3, 0x63, 0xfe, 0x02, 0x0d, 0x7b, 0x84, 0xc7, 0xad, 0x7c, -0x89, 0xfb, 0x67, 0x6a, 0x4f, 0xe2, 0x2f, 0x1b, 0x78, 0x13, -0xc1, 0xb0, 0x1d, 0xdb, 0x9d, 0xaf, 0x66, 0x8c, 0x1c, 0xe4, -0xb1, 0x11, 0xa6, 0x47, 0x4e, 0x00, 0x93, 0xf3, 0xed, 0x5e, -0x3e, 0x6f, 0x59, 0xd1, 0xc1, 0x54, 0x71, 0xdd, 0xe8, 0xbd, -0x5e, 0x87, 0x83, 0x9e, 0xd7, 0x78, 0x7c, 0xba, 0xac, 0xa3, -0xbb, 0x5c, 0xab, 0xd6, 0x5a, 0x7e, 0xa7, 0xa7, 0xfe, 0xcb, -0x3e, 0x15, 0x1a, 0x07, 0xc3, 0x8d, 0x28, 0x14, 0xdb, 0x24, -0xc9, 0xe7, 0x3e, 0x47, 0x73, 0xcd, 0x7d, 0x09, 0x6e, 0xbb, -0x62, 0x15, 0xc5, 0x78, 0x0b, 0x4a, 0x8f, 0x4a, 0xd1, 0xed, -0x2d, 0x94, 0x05, 0x58, 0xa3, 0x54, 0x00, 0x0e, 0xc0, 0x01, -0x5d, 0xc2, 0xe3, 0x68, 0xc7, 0x4a, 0xed, 0xc2, 0x51, 0x58, -0x7c, 0x3c, 0x29, 0x2e, 0x89, 0x23, 0xd1, 0xc0, 0xe1, 0xd6, -0x17, 0x0d, 0x4e, 0x8a, 0xfb, 0x29, 0x23, 0xca, 0xff, 0x00, -0x68, 0xbf, 0x84, 0x96, 0xff, 0x00, 0x17, 0x3c, 0x05, 0x77, -0xa5, 0xcb, 0x01, 0x9e, 0x46, 0x52, 0x15, 0x00, 0xce, 0x6b, -0xf1, 0x97, 0xe2, 0xff, 0x00, 0xec, 0x1f, 0xe3, 0x7f, 0x0d, -0xeb, 0x37, 0x32, 0x2d, 0x9b, 0x41, 0x6c, 0x5d, 0x8a, 0x2f, -0x90, 0xdd, 0x33, 0xc7, 0x7a, 0xfd, 0xf0, 0xac, 0x2d, 0x7f, -0xc1, 0x9a, 0x57, 0x89, 0x39, 0xbf, 0xb6, 0x59, 0x7e, 0xa3, -0x35, 0xd6, 0x76, 0x9f, 0xcd, 0x77, 0x8d, 0x3e, 0x10, 0x6b, -0x5e, 0x05, 0xb7, 0x69, 0xb5, 0x14, 0x28, 0xa0, 0xe3, 0x94, -0x2b, 0x5c, 0x7e, 0x9b, 0xa6, 0x4f, 0xaa, 0xdc, 0x79, 0x36, -0xe8, 0x5e, 0x4f, 0x40, 0x33, 0x5f, 0xa2, 0xff, 0x00, 0xf0, -0x55, 0xa8, 0x7c, 0x3f, 0xe1, 0x6b, 0x8d, 0x37, 0x45, 0xd1, -0xa1, 0x58, 0xee, 0x25, 0x93, 0x74, 0x9b, 0x54, 0x0e, 0x2b, -0xc6, 0xbf, 0xe0, 0x9e, 0x5f, 0x05, 0x6c, 0xbe, 0x2d, 0x78, -0xea, 0xfa, 0x3d, 0x41, 0x01, 0x86, 0x17, 0x8d, 0x06, 0xe8, -0xf7, 0x0c, 0x9c, 0xe6, 0x80, 0x3e, 0x70, 0x6f, 0x85, 0xbe, -0x22, 0x54, 0x0f, 0xf6, 0x09, 0x08, 0x23, 0x23, 0xe5, 0x3f, -0xe1, 0x55, 0x64, 0xf8, 0x7b, 0xaf, 0xc7, 0xd7, 0x4e, 0x97, -0xf0, 0x53, 0x5f, 0xd0, 0x0b, 0xfe, 0xc5, 0x9e, 0x09, 0x30, -0xa2, 0x2c, 0x71, 0x8d, 0xaa, 0x07, 0xfc, 0x7b, 0xaf, 0xf8, -0xd6, 0x55, 0xd7, 0xec, 0x2d, 0xe0, 0xf9, 0xb3, 0xb4, 0xc2, -0x3e, 0xb6, 0xe3, 0xfc, 0x68, 0x03, 0xf0, 0x26, 0x4f, 0x07, -0x6b, 0x31, 0xf5, 0xd3, 0xe6, 0xfc, 0x14, 0xd7, 0x7d, 0xf0, -0x23, 0xc0, 0x7a, 0x96, 0xad, 0xf1, 0x06, 0xc6, 0x29, 0x2c, -0x27, 0xc6, 0xf5, 0x1c, 0xa1, 0xee, 0x6b, 0xf6, 0x7e, 0xf3, -0xf6, 0x00, 0xf0, 0xcc, 0xf9, 0xd9, 0x2d, 0xb8, 0xfa, 0xc1, -0x5a, 0xdf, 0x0e, 0xff, 0x00, 0x62, 0x6d, 0x03, 0xc0, 0xde, -0x20, 0x8f, 0x51, 0x5f, 0xb3, 0xc8, 0x51, 0x83, 0x00, 0xb1, -0x01, 0xd2, 0x80, 0x3d, 0xb3, 0xe1, 0x17, 0x87, 0x57, 0xc2, -0xbf, 0x0e, 0x74, 0x1d, 0x39, 0x53, 0xcb, 0x31, 0xda, 0xa1, -0x65, 0xc6, 0x39, 0x23, 0x35, 0xe4, 0x5f, 0xb7, 0x07, 0x8d, -0x47, 0x84, 0x7e, 0x10, 0xea, 0x2c, 0x1b, 0x6b, 0x34, 0x2e, -0x78, 0xfa, 0x62, 0xbe, 0x8b, 0x44, 0x11, 0xa2, 0xa2, 0x8c, -0x2a, 0x8c, 0x01, 0x5e, 0x2f, 0xfb, 0x4a, 0xfc, 0x16, 0xbb, -0xf8, 0xc9, 0xe1, 0x99, 0x74, 0xdb, 0x72, 0xb8, 0x74, 0xd8, -0x43, 0x63, 0x18, 0xfc, 0x68, 0x03, 0xf9, 0xd1, 0xd7, 0xaf, -0xa5, 0xd5, 0x75, 0x7b, 0xcb, 0xc9, 0x03, 0x16, 0x9a, 0x56, -0x7c, 0x91, 0xea, 0x6b, 0x3e, 0xbf, 0x5c, 0x6f, 0xbf, 0xe0, -0x98, 0xb7, 0xbf, 0xc1, 0x6d, 0x6e, 0x7f, 0xe0, 0x0b, 0xfe, -0x35, 0xcd, 0x5f, 0x7f, 0xc1, 0x31, 0xb5, 0x55, 0xdd, 0xb7, -0x4e, 0x84, 0xfd, 0x23, 0x4f, 0xf1, 0xa0, 0x0f, 0xcb, 0x3a, -0x2b, 0xf4, 0xaa, 0xff, 0x00, 0xfe, 0x09, 0x9d, 0xad, 0x26, -0x4a, 0xe9, 0x31, 0xb7, 0xd1, 0x17, 0xfc, 0x6b, 0x9e, 0xbf, -0xff, 0x00, 0x82, 0x6e, 0xeb, 0xb1, 0x67, 0x1a, 0x40, 0xe3, -0xfd, 0x80, 0x3f, 0xad, 0x00, 0x7e, 0x7b, 0x51, 0x5f, 0x74, -0xdf, 0x7f, 0xc1, 0x3c, 0x3c, 0x43, 0x00, 0x6c, 0x69, 0x2e, -0x3e, 0x8a, 0x3f, 0xc6, 0xb9, 0xeb, 0xcf, 0xd8, 0x1b, 0xc4, -0x50, 0xee, 0xc6, 0x9b, 0x30, 0xc7, 0xa0, 0x1f, 0xe3, 0x40, -0x1f, 0x1b, 0xd1, 0x5f, 0x56, 0xde, 0xfe, 0xc3, 0x3e, 0x23, -0x87, 0x3f, 0xe8, 0x33, 0x8f, 0xc0, 0x7f, 0x8d, 0x63, 0x5c, -0xfe, 0xc5, 0xfe, 0x24, 0x87, 0x38, 0xb5, 0xb8, 0x18, 0xf5, -0x5c, 0xff, 0x00, 0x5a, 0x00, 0xf9, 0xae, 0x8a, 0xf7, 0xcb, -0xbf, 0xd9, 0x1b, 0xc4, 0xd6, 0xff, 0x00, 0xf2, 0xc2, 0x61, -0xf5, 0x51, 0xfe, 0x35, 0x95, 0x71, 0xfb, 0x2f, 0xf8, 0x9e, -0x0c, 0xfe, 0xe5, 0xcf, 0xd5, 0x28, 0x03, 0xc6, 0x77, 0x11, -0xdc, 0xd2, 0x89, 0x5d, 0x7a, 0x3b, 0x0f, 0xa1, 0xaf, 0x53, -0x9f, 0xf6, 0x74, 0xf1, 0x3c, 0x39, 0xfd, 0xc3, 0x7f, 0xdf, -0x3f, 0xfd, 0x7a, 0xcf, 0x9f, 0xe0, 0x4f, 0x8a, 0x20, 0xff, -0x00, 0x97, 0x6c, 0xfe, 0x94, 0x01, 0xc0, 0x2d, 0xe4, 0xe9, -0xd2, 0x57, 0x1f, 0x46, 0xa9, 0x57, 0x56, 0xbc, 0x4e, 0x97, -0x32, 0x0f, 0xf8, 0x15, 0x75, 0x73, 0x7c, 0x1d, 0xf1, 0x34, -0x39, 0xcd, 0x96, 0x71, 0xef, 0x54, 0xe4, 0xf8, 0x61, 0xe2, -0x38, 0xba, 0xe9, 0xec, 0x7f, 0xe0, 0x42, 0x80, 0x31, 0x57, -0xc4, 0x3a, 0x92, 0x7d, 0xdb, 0xc9, 0x47, 0xfc, 0x0a, 0xa7, -0x4f, 0x17, 0x6b, 0x11, 0xf4, 0xbf, 0x97, 0xf3, 0x15, 0x66, -0x5f, 0x00, 0x6b, 0xf1, 0x7d, 0xed, 0x3a, 0x4f, 0xc0, 0x8f, -0xf1, 0xa8, 0x1f, 0xc1, 0xda, 0xcc, 0x7d, 0x74, 0xf9, 0x7f, -0x4a, 0x00, 0x9e, 0x3f, 0x1f, 0x6b, 0xd1, 0x0c, 0x2e, 0xa3, -0x28, 0xfc, 0xbf, 0xc2, 0xad, 0x45, 0xf1, 0x3f, 0xc4, 0x91, -0x74, 0xd4, 0x9f, 0xf1, 0x02, 0xb1, 0x9f, 0xc3, 0x9a, 0x9a, -0x7d, 0xeb, 0x29, 0x47, 0xe1, 0x51, 0x36, 0x8f, 0x7a, 0x9f, -0x7a, 0xda, 0x41, 0xf8, 0x50, 0x07, 0x53, 0x17, 0xc6, 0x1f, -0x14, 0x45, 0xd3, 0x50, 0x63, 0xf5, 0x02, 0xaf, 0x41, 0xf1, -0xdb, 0xc5, 0x50, 0xe3, 0xfd, 0x33, 0x35, 0xc1, 0xb5, 0x8d, -0xc2, 0xf5, 0x86, 0x41, 0xff, 0x00, 0x01, 0xa8, 0xfc, 0x89, -0x07, 0x58, 0xd8, 0x7d, 0x41, 0xa0, 0x0f, 0x51, 0xb7, 0xfd, -0xa3, 0x3c, 0x55, 0x09, 0xff, 0x00, 0x8f, 0x92, 0x7e, 0x86, -0xb4, 0xa0, 0xfd, 0xa8, 0xbc, 0x53, 0x16, 0x3f, 0x7c, 0xfc, -0x7a, 0x30, 0xff, 0x00, 0x0a, 0xf1, 0xa2, 0xa4, 0x75, 0x07, -0xf2, 0xa4, 0xa0, 0x0f, 0x7a, 0xb6, 0xfd, 0xad, 0xfc, 0x4f, -0x06, 0x3f, 0x7d, 0x27, 0x1e, 0x8f, 0xff, 0x00, 0xd6, 0xad, -0x6b, 0x4f, 0xdb, 0x37, 0xc4, 0x90, 0x10, 0x4c, 0xf3, 0x0c, -0x7f, 0xb4, 0x3f, 0xc2, 0xbe, 0x6f, 0xa2, 0x80, 0x3e, 0xaa, -0xb4, 0xfd, 0xb8, 0xfc, 0x43, 0x16, 0x3f, 0xd2, 0x67, 0x18, -0xf5, 0x61, 0xfe, 0x15, 0xb7, 0x67, 0xfb, 0x7b, 0x6b, 0xf0, -0xe3, 0xfd, 0x36, 0x61, 0xff, 0x00, 0x02, 0x1f, 0xe1, 0x5f, -0x1d, 0x51, 0x40, 0x1f, 0x70, 0x59, 0xff, 0x00, 0xc1, 0x41, -0xf5, 0xc8, 0xb1, 0x9d, 0x46, 0x41, 0xf5, 0x61, 0xfe, 0x15, -0xd0, 0xd8, 0xff, 0x00, 0xc1, 0x46, 0x75, 0x98, 0xb1, 0x9d, -0x4c, 0x8f, 0xab, 0xaf, 0xf8, 0x57, 0xe7, 0xf5, 0x14, 0x01, -0xfa, 0x43, 0x63, 0xff, 0x00, 0x05, 0x26, 0xd5, 0x63, 0xc6, -0x75, 0x65, 0xfc, 0x64, 0x5f, 0xf0, 0xae, 0x86, 0xc3, 0xfe, -0x0a, 0x63, 0xa8, 0x80, 0x33, 0xaa, 0x46, 0x7e, 0xb2, 0x2f, -0xf8, 0x57, 0xe5, 0xed, 0x14, 0x01, 0xfa, 0xc7, 0x65, 0xff, -0x00, 0x05, 0x33, 0xbc, 0xe3, 0x3a, 0x84, 0x27, 0xfe, 0xda, -0xa7, 0xf8, 0x57, 0x47, 0x61, 0xff, 0x00, 0x05, 0x31, 0x90, -0x85, 0xdf, 0x73, 0x03, 0x7d, 0x5d, 0x7f, 0xc2, 0xbf, 0x1e, -0xb7, 0x1f, 0x53, 0x4e, 0x59, 0xe4, 0x4f, 0xbb, 0x23, 0x0f, -0xa1, 0x34, 0x01, 0xfb, 0x43, 0x67, 0xff, 0x00, 0x05, 0x29, -0x89, 0xf1, 0xbe, 0x4b, 0x76, 0xff, 0x00, 0x81, 0xaf, 0xf8, -0x56, 0xed, 0x9f, 0xfc, 0x14, 0x7b, 0x4e, 0x93, 0x1b, 0xc5, -0xb1, 0xff, 0x00, 0xb6, 0x8b, 0x5f, 0x88, 0xab, 0x7f, 0x72, -0x9d, 0x27, 0x90, 0x7d, 0x18, 0xd4, 0xcb, 0xad, 0xdf, 0xa7, -0xdd, 0xbb, 0x98, 0x7f, 0xc0, 0xcd, 0x00, 0x7e, 0xe9, 0x59, -0xff, 0x00, 0xc1, 0x43, 0x74, 0x29, 0x71, 0xbe, 0x3b, 0x6f, -0xfb, 0xfa, 0x2b, 0x72, 0xcf, 0xf6, 0xfa, 0xf0, 0xbc, 0xf8, -0xde, 0x90, 0x7e, 0x13, 0x8a, 0xfc, 0x17, 0x4f, 0x13, 0xea, -0xb1, 0xfd, 0xdb, 0xe9, 0xc7, 0xfc, 0x0c, 0xd5, 0x98, 0xfc, -0x6f, 0xad, 0xc7, 0x8c, 0x6a, 0x13, 0x7f, 0xdf, 0x46, 0x80, -0x3f, 0x7e, 0x2d, 0xbf, 0x6e, 0x3f, 0x07, 0xcd, 0x8d, 0xde, -0x48, 0xff, 0x00, 0xb7, 0x81, 0xfe, 0x15, 0xad, 0x6b, 0xfb, -0x65, 0x78, 0x2a, 0xe3, 0x19, 0x9a, 0x35, 0xff, 0x00, 0xb6, -0xeb, 0xfe, 0x15, 0xfc, 0xfe, 0x47, 0xf1, 0x23, 0x5f, 0x8b, -0xa6, 0xa1, 0x37, 0xfd, 0xf6, 0x6a, 0xdc, 0x3f, 0x16, 0xbc, -0x47, 0x0e, 0x31, 0x7d, 0x27, 0x1f, 0xed, 0x1a, 0x00, 0xfe, -0x83, 0x6d, 0x7f, 0x6b, 0x0f, 0x03, 0xdc, 0x90, 0x3e, 0xdb, -0x12, 0xff, 0x00, 0xdb, 0x65, 0x35, 0xab, 0x07, 0xed, 0x27, -0xe0, 0x99, 0xfa, 0x6a, 0x90, 0x8f, 0xac, 0xab, 0x5f, 0xcf, -0x5c, 0x3f, 0x1b, 0xbc, 0x4b, 0x0e, 0x3f, 0xd2, 0xdc, 0xe3, -0xfe, 0x9a, 0x1a, 0xbf, 0x0f, 0xed, 0x09, 0xe2, 0x68, 0xb1, -0xfb, 0xf9, 0x0e, 0x3f, 0xe9, 0xb1, 0xa0, 0x0f, 0xe8, 0x62, -0x0f, 0x8e, 0xde, 0x0d, 0x9f, 0x18, 0xd5, 0xe0, 0x1f, 0x59, -0x07, 0xf8, 0xd5, 0xf8, 0x7e, 0x2f, 0x78, 0x4e, 0x6f, 0xbb, -0xac, 0xdb, 0x7f, 0xdf, 0xc1, 0xfe, 0x35, 0xfc, 0xf4, 0x5b, -0xfe, 0xd3, 0x1e, 0x26, 0x83, 0xa4, 0x92, 0x1f, 0xa4, 0xe4, -0x7f, 0x4a, 0xd2, 0xb7, 0xfd, 0xab, 0xbc, 0x4d, 0x0e, 0x32, -0xf3, 0x7f, 0xdf, 0xf3, 0x40, 0x1f, 0xd0, 0x94, 0x3f, 0x11, -0xfc, 0x35, 0x3f, 0xdc, 0xd6, 0x2d, 0x3f, 0x19, 0x47, 0xf8, -0xd5, 0xc8, 0xbc, 0x63, 0xa1, 0xcd, 0xf7, 0x35, 0x5b, 0x46, -0xfa, 0x4a, 0xb5, 0xfc, 0xfc, 0x5a, 0xfe, 0xd8, 0xde, 0x24, -0x83, 0xac, 0x97, 0x3f, 0x84, 0xe6, 0xb5, 0xed, 0x3f, 0x6d, -0xbf, 0x10, 0x45, 0x8c, 0xcd, 0x76, 0x0f, 0xfd, 0x76, 0x34, -0x01, 0xfb, 0xf2, 0x9a, 0xfe, 0x99, 0x27, 0xdd, 0xd4, 0x2d, -0x9b, 0xe9, 0x2a, 0xff, 0x00, 0x8d, 0x4e, 0xba, 0x95, 0xa3, -0xfd, 0xdb, 0xa8, 0x5b, 0xe9, 0x20, 0xaf, 0xc1, 0xab, 0x3f, -0xdb, 0xc3, 0x5c, 0x83, 0x19, 0xba, 0xbb, 0x1f, 0x59, 0x58, -0xd6, 0xed, 0x9f, 0xfc, 0x14, 0x13, 0x58, 0x8f, 0x19, 0xbf, -0xba, 0x1f, 0xf6, 0xd5, 0xa8, 0x03, 0xf7, 0x35, 0x6e, 0x22, -0x71, 0x95, 0x91, 0x08, 0xf6, 0x61, 0x4f, 0x0c, 0x0f, 0x42, -0x0d, 0x7e, 0x27, 0xd8, 0x7f, 0xc1, 0x45, 0x35, 0x58, 0x80, -0xdd, 0xa9, 0x5c, 0x0f, 0xac, 0xad, 0x5d, 0x0e, 0x9f, 0xff, -0x00, 0x05, 0x22, 0xd4, 0x93, 0x19, 0xd4, 0xe6, 0xff, 0x00, -0xbf, 0xcd, 0xfe, 0x14, 0x01, 0xfb, 0x21, 0x45, 0x7e, 0x49, -0xe9, 0xff, 0x00, 0xf0, 0x52, 0xdb, 0xf1, 0x8c, 0xea, 0x52, -0x7e, 0x33, 0x37, 0xf8, 0x57, 0x43, 0x61, 0xff, 0x00, 0x05, -0x31, 0xba, 0xe3, 0x75, 0xf3, 0x37, 0xd6, 0x53, 0xfe, 0x14, -0x01, 0xfa, 0x97, 0x45, 0x7e, 0x6c, 0x69, 0xff, 0x00, 0xf0, -0x52, 0xf6, 0x60, 0x37, 0xce, 0x1b, 0xfe, 0xda, 0x13, 0xfd, -0x2b, 0x7e, 0xcf, 0xfe, 0x0a, 0x53, 0x6e, 0xd8, 0xde, 0x50, -0xfd, 0x5c, 0xff, 0x00, 0x85, 0x00, 0x7e, 0x84, 0x51, 0x5f, -0x0a, 0xd9, 0x7f, 0xc1, 0x48, 0x34, 0xd9, 0x31, 0xbd, 0x23, -0x3f, 0x56, 0xff, 0x00, 0xeb, 0x56, 0xdd, 0x97, 0xfc, 0x14, -0x4f, 0x42, 0x94, 0x80, 0xf0, 0xc7, 0xf8, 0x31, 0xff, 0x00, -0x0a, 0x00, 0xfb, 0x3e, 0x8a, 0xf9, 0x32, 0xd3, 0xf6, 0xff, -0x00, 0xf0, 0xbc, 0xa0, 0x6f, 0x8d, 0x32, 0x7f, 0xdb, 0x3f, -0xe1, 0x5b, 0xd6, 0x1f, 0xb7, 0x27, 0x83, 0xae, 0xb1, 0xbb, -0x6a, 0xe7, 0xfd, 0xb3, 0xff, 0x00, 0xc4, 0xd0, 0x07, 0xd1, -0x97, 0x8f, 0xb5, 0x6b, 0x94, 0xd5, 0xa5, 0xce, 0x6b, 0x85, -0xd1, 0x7f, 0x69, 0xff, 0x00, 0x08, 0xf8, 0xa2, 0xe1, 0x2d, -0xa0, 0x9f, 0x12, 0xc8, 0x70, 0xa0, 0x1c, 0xf3, 0xf9, 0x57, -0x5b, 0xa8, 0x5c, 0xac, 0xb0, 0xef, 0x53, 0x95, 0x61, 0x91, -0x40, 0x1c, 0xa6, 0xb9, 0x37, 0xde, 0xaf, 0x3b, 0xf1, 0x0c, -0xd8, 0x56, 0xae, 0xdb, 0x5b, 0x9b, 0x25, 0xab, 0xce, 0x7c, -0x49, 0x3f, 0x0d, 0xcd, 0x00, 0x79, 0x17, 0xc5, 0x1d, 0x43, -0xc8, 0xd2, 0xe4, 0x19, 0xc1, 0x39, 0xaf, 0x89, 0x7e, 0x21, -0xde, 0x79, 0xda, 0xac, 0xc7, 0x35, 0xf5, 0x87, 0xc6, 0x6d, -0x4f, 0xca, 0xb5, 0x29, 0x9e, 0xc6, 0xbe, 0x35, 0xf1, 0x7d, -0xd7, 0x9b, 0x7b, 0x33, 0x67, 0xa9, 0x35, 0xf2, 0x19, 0xac, -0xf9, 0xab, 0x28, 0x9f, 0x09, 0x9d, 0xd4, 0xe7, 0xaf, 0x18, -0x1c, 0x1e, 0xb1, 0x2e, 0x5c, 0xd4, 0x3e, 0x0f, 0xd0, 0xcf, -0x8a, 0x3c, 0x67, 0xa2, 0xe9, 0x41, 0x3c, 0xc1, 0x77, 0x79, -0x1c, 0x6c, 0xbe, 0xa9, 0xb8, 0x6e, 0xff, 0x00, 0xc7, 0x73, -0x51, 0xea, 0x72, 0x65, 0xda, 0xbd, 0x23, 0xf6, 0x4f, 0xf0, -0xfb, 0x78, 0x87, 0xe3, 0x76, 0x92, 0x15, 0x37, 0x7d, 0x95, -0x24, 0x9f, 0x9e, 0x80, 0xe3, 0x68, 0xfd, 0x5a, 0xba, 0xf0, -0x91, 0xd5, 0x23, 0xb7, 0x05, 0x4e, 0xee, 0x28, 0xfd, 0x6d, -0xf8, 0x69, 0xa6, 0xae, 0x99, 0xe1, 0x0d, 0x36, 0x20, 0xa1, -0x73, 0x1e, 0xfc, 0x01, 0x8e, 0xbd, 0x3f, 0x4c, 0x57, 0x77, -0x68, 0xbc, 0x0a, 0xc4, 0xd2, 0x6d, 0x56, 0xd2, 0xce, 0xde, -0x05, 0x18, 0x58, 0xa3, 0x54, 0x03, 0x1d, 0x80, 0xc5, 0x74, -0x16, 0x8b, 0x85, 0x15, 0xf4, 0x87, 0xd7, 0x1a, 0x56, 0xab, -0xc8, 0xad, 0x78, 0x17, 0xa5, 0x66, 0xda, 0x2e, 0x48, 0xad, -0x68, 0x17, 0x91, 0x40, 0x17, 0xa1, 0x5e, 0x95, 0xa1, 0x08, -0xe9, 0x54, 0xe1, 0x15, 0x7a, 0x2a, 0x00, 0x9d, 0x6a, 0x55, -0xa8, 0xd0, 0x54, 0xab, 0x40, 0x12, 0x0e, 0x94, 0xe1, 0xd6, -0x92, 0x95, 0x68, 0x01, 0xd4, 0x51, 0x45, 0x00, 0x60, 0x4c, -0x7a, 0xd7, 0xc4, 0x3a, 0x6e, 0xaf, 0x1f, 0xc4, 0x3f, 0xda, -0xcf, 0x5d, 0xd4, 0xb2, 0x65, 0xb7, 0xd3, 0xa4, 0x36, 0xf1, -0x6f, 0x50, 0x36, 0x88, 0x86, 0xcc, 0x71, 0xfe, 0xd6, 0x6b, -0xec, 0xaf, 0x16, 0x6a, 0xa9, 0xa1, 0x78, 0x73, 0x56, 0xd4, -0xe4, 0x3f, 0x25, 0x95, 0xa4, 0xb7, 0x0d, 0xce, 0x38, 0x44, -0x2c, 0x79, 0xed, 0xd2, 0xbe, 0x04, 0xfd, 0x92, 0xae, 0xe4, -0xd4, 0x3c, 0x45, 0xad, 0x6a, 0xb7, 0x2d, 0xbe, 0xe2, 0x63, -0xbd, 0xdf, 0xd5, 0xd9, 0x8b, 0x31, 0xfc, 0xeb, 0xe6, 0xf3, -0x47, 0xed, 0x71, 0x38, 0x6c, 0x3f, 0x47, 0x2b, 0xbf, 0x91, -0xf2, 0x59, 0xcb, 0xf6, 0xd8, 0xbc, 0x1e, 0x17, 0xa3, 0x97, -0x33, 0xff, 0x00, 0xb7, 0x51, 0xf7, 0x9e, 0x8d, 0x7e, 0x16, -0x15, 0xe7, 0x8a, 0xe9, 0xad, 0x35, 0x0f, 0x94, 0x0c, 0xd7, -0x98, 0xe9, 0x3a, 0xa8, 0xda, 0x06, 0xea, 0xe8, 0xad, 0x35, -0x6e, 0x07, 0xcd, 0x5f, 0x48, 0x7d, 0x69, 0xdd, 0x25, 0xd2, -0x38, 0xeb, 0x8a, 0x59, 0xa5, 0x5f, 0x29, 0x80, 0x3c, 0x90, -0x71, 0x5c, 0xa2, 0x6a, 0xf8, 0x1d, 0x7f, 0x5a, 0x73, 0x6b, -0x5c, 0x7d, 0xef, 0xd6, 0x80, 0x3e, 0x62, 0xfd, 0xa0, 0xbf, -0x63, 0xf3, 0xf1, 0x8f, 0xc6, 0x12, 0x6a, 0xd7, 0x56, 0x90, -0xdc, 0x8d, 0xbb, 0x50, 0xc8, 0x37, 0x57, 0x5f, 0xfb, 0x2b, -0xfe, 0xcb, 0xf6, 0x1f, 0x03, 0xe5, 0xbb, 0x98, 0x58, 0x5b, -0xc1, 0x34, 0xce, 0x1f, 0x7a, 0x26, 0x0f, 0x00, 0x8f, 0x4a, -0xf6, 0xd5, 0xd6, 0xc7, 0xaf, 0xeb, 0x52, 0x2e, 0xb4, 0x3f, -0xbd, 0x40, 0x1d, 0x57, 0x98, 0xbf, 0xde, 0x14, 0x6f, 0x5f, -0x51, 0x5c, 0xc0, 0xd6, 0x47, 0xad, 0x3c, 0x6b, 0x20, 0x9e, -0xbf, 0xad, 0x00, 0x74, 0xbb, 0x81, 0xee, 0x28, 0xc8, 0xf5, -0xae, 0x77, 0xfb, 0x60, 0x1e, 0xff, 0x00, 0xad, 0x3c, 0x6a, -0xea, 0x7b, 0xd0, 0x06, 0xfe, 0x68, 0xcd, 0x61, 0x8d, 0x58, -0x7a, 0xd3, 0x86, 0xaa, 0x3f, 0xbd, 0xfa, 0xd0, 0x06, 0xdd, -0x15, 0x8e, 0xba, 0xa8, 0xfe, 0xf7, 0xeb, 0x4f, 0x1a, 0xa8, -0xfe, 0xf0, 0xa0, 0x0d, 0x5a, 0x2b, 0x30, 0x6a, 0x9e, 0xf4, -0xff, 0x00, 0xed, 0x20, 0x7b, 0x8a, 0x00, 0xbe, 0x54, 0x37, -0x50, 0x0f, 0xd6, 0xa3, 0x6b, 0x58, 0x5f, 0xef, 0x43, 0x19, -0xfa, 0xa8, 0xaa, 0xc3, 0x52, 0x04, 0xf6, 0xa7, 0x0d, 0x41, -0x7d, 0xa8, 0x01, 0x5b, 0x49, 0xb1, 0x7f, 0xbd, 0x67, 0x6e, -0xdf, 0x58, 0x94, 0xff, 0x00, 0x4a, 0x85, 0xfc, 0x3b, 0xa5, -0x49, 0xf7, 0xf4, 0xcb, 0x36, 0xff, 0x00, 0x7a, 0xdd, 0x0f, -0xf4, 0xa9, 0xc5, 0xfa, 0x52, 0x8b, 0xe4, 0x3e, 0xd4, 0x01, -0x42, 0x4f, 0x07, 0x68, 0x33, 0x7d, 0xfd, 0x17, 0x4f, 0x6f, -0xad, 0xaa, 0x7f, 0x85, 0x55, 0x93, 0xe1, 0xd7, 0x85, 0xa5, -0xfb, 0xfe, 0x1e, 0xd3, 0x4f, 0xfd, 0xba, 0xa0, 0xfe, 0x95, -0xb7, 0xf6, 0xc4, 0xa5, 0xfb, 0x52, 0x7a, 0xd0, 0x07, 0x2f, -0x37, 0xc2, 0x3f, 0x06, 0x4f, 0x9d, 0xfe, 0x1a, 0xd3, 0x9b, -0x3f, 0xf4, 0xee, 0xb5, 0x4a, 0x6f, 0x81, 0x9e, 0x03, 0x9f, -0x3b, 0xbc, 0x31, 0xa7, 0xf3, 0xe9, 0x08, 0x15, 0xdb, 0x0b, -0x84, 0x3d, 0xe9, 0x7c, 0xf4, 0xf5, 0xa0, 0x0f, 0x37, 0xb8, -0xfd, 0x9c, 0x3e, 0x1d, 0xdc, 0x92, 0x5b, 0xc3, 0x16, 0x23, -0xe9, 0x18, 0xac, 0xcb, 0x8f, 0xd9, 0x4b, 0xe1, 0xad, 0xc7, -0x5f, 0x0e, 0x5a, 0x03, 0xed, 0x18, 0xaf, 0x5c, 0x12, 0xa1, -0xfe, 0x21, 0x4b, 0xe6, 0x2f, 0xa8, 0xa0, 0x0f, 0x0f, 0xb9, -0xfd, 0x8e, 0x7e, 0x1b, 0x4e, 0x0f, 0xfc, 0x48, 0xed, 0xc7, -0xd2, 0x31, 0x59, 0x37, 0x5f, 0xb0, 0xff, 0x00, 0xc3, 0xa9, -0xf3, 0xb7, 0x4a, 0x81, 0x33, 0xff, 0x00, 0x4c, 0xc5, 0x7d, -0x0d, 0xbd, 0x4f, 0x71, 0x4b, 0xb8, 0x7a, 0x8a, 0x00, 0xf9, -0x7e, 0xef, 0xf6, 0x04, 0xf0, 0x0d, 0xc1, 0x25, 0x6c, 0x6d, -0xd4, 0xff, 0x00, 0xb9, 0x58, 0xb7, 0x7f, 0xf0, 0x4e, 0xdf, -0x06, 0x4d, 0x9d, 0x90, 0x5a, 0x0c, 0xfa, 0xa9, 0x15, 0xf5, -0xd6, 0x47, 0xad, 0x2d, 0x00, 0x7c, 0x55, 0x79, 0xff, 0x00, -0x04, 0xd9, 0xf0, 0xbc, 0xb9, 0xf2, 0xe3, 0xb2, 0xe7, 0xd5, -0x4f, 0xf8, 0x56, 0x15, 0xef, 0xfc, 0x13, 0x2b, 0x45, 0x91, -0x5b, 0xcb, 0x86, 0xc0, 0x9f, 0xc7, 0xfc, 0x2b, 0xef, 0x2a, -0x28, 0x03, 0xf3, 0xb6, 0xf7, 0xfe, 0x09, 0x7f, 0x68, 0xdf, -0xea, 0xed, 0x6c, 0x08, 0xff, 0x00, 0x3e, 0xd5, 0xcf, 0x5f, -0xff, 0x00, 0xc1, 0x2e, 0xfa, 0xec, 0xd3, 0xac, 0xdb, 0xe8, -0xb9, 0xfe, 0x95, 0xfa, 0x67, 0x45, 0x00, 0x7e, 0x56, 0x5e, -0xff, 0x00, 0xc1, 0x2f, 0x6e, 0x40, 0x3b, 0x34, 0x8b, 0x56, -0xfa, 0x46, 0x7f, 0xc2, 0xb9, 0xeb, 0xff, 0x00, 0xf8, 0x26, -0x3e, 0xa5, 0x1e, 0x76, 0xe8, 0x91, 0x9f, 0xa4, 0x6d, 0xfd, -0x05, 0x7e, 0xba, 0x51, 0x40, 0x1f, 0x8d, 0x57, 0xdf, 0xf0, -0x4d, 0x6d, 0x66, 0x2c, 0xed, 0xd0, 0xce, 0x3f, 0xd9, 0x47, -0xff, 0x00, 0x0a, 0xc0, 0xbc, 0xff, 0x00, 0x82, 0x73, 0xeb, -0x91, 0x03, 0xff, 0x00, 0x12, 0x59, 0x47, 0xfc, 0x06, 0x41, -0xfd, 0x2b, 0xf6, 0xcf, 0x68, 0x3d, 0x85, 0x31, 0xa0, 0x8d, -0xba, 0xa2, 0x9f, 0xa8, 0xa0, 0x0f, 0xc3, 0x0b, 0xdf, 0xf8, -0x27, 0xd6, 0xbf, 0x0e, 0x71, 0xa3, 0xdc, 0x8f, 0xa0, 0x92, -0xb0, 0xef, 0xbf, 0x61, 0x2f, 0x10, 0xdb, 0x9e, 0x34, 0xab, -0xa1, 0xf4, 0x57, 0xff, 0x00, 0x0a, 0xfd, 0xe7, 0x6b, 0x0b, -0x67, 0xfb, 0xd0, 0x46, 0xdf, 0x55, 0x15, 0x04, 0x9a, 0x0e, -0x9d, 0x37, 0xdf, 0xb2, 0x85, 0xbe, 0xa8, 0x28, 0x03, 0xf0, -0x12, 0xeb, 0xf6, 0x2a, 0xf1, 0x1c, 0x39, 0xff, 0x00, 0x89, -0x75, 0xd0, 0xff, 0x00, 0x80, 0x3f, 0xf8, 0x56, 0x45, 0xcf, -0xec, 0x81, 0xe2, 0x58, 0x73, 0x8b, 0x2b, 0x91, 0xf5, 0x89, -0xff, 0x00, 0xc2, 0xbf, 0xa0, 0x99, 0x3c, 0x1f, 0xa2, 0xcb, -0xf7, 0xb4, 0xdb, 0x73, 0xff, 0x00, 0x00, 0xaa, 0x72, 0xfc, -0x39, 0xf0, 0xd4, 0xdf, 0x7f, 0x47, 0xb6, 0x3f, 0x81, 0x1f, -0xd6, 0x80, 0x3f, 0x9e, 0xcb, 0x9f, 0xd9, 0x57, 0xc4, 0xd1, -0x67, 0xfd, 0x16, 0xe0, 0x7d, 0x63, 0x6f, 0xf0, 0xac, 0xbb, -0x8f, 0xd9, 0xaf, 0xc5, 0x10, 0x7f, 0xcb, 0xb4, 0x9f, 0x8c, -0x6d, 0xfe, 0x15, 0xfd, 0x0d, 0xcf, 0xf0, 0x8b, 0xc2, 0x37, -0x03, 0xe7, 0xd1, 0x2d, 0xff, 0x00, 0x0c, 0xff, 0x00, 0x8d, -0x66, 0xdc, 0x7c, 0x04, 0xf0, 0x45, 0xc6, 0x77, 0x68, 0xb1, -0x8f, 0xa3, 0x1a, 0x00, 0xfe, 0x79, 0x67, 0xf8, 0x01, 0xe2, -0x78, 0x7f, 0xe5, 0xd5, 0xcf, 0xfd, 0xb3, 0x6f, 0xf0, 0xaa, -0x13, 0x7c, 0x13, 0xf1, 0x3c, 0x3d, 0x6c, 0xd8, 0xff, 0x00, -0xc0, 0x4f, 0xf8, 0x57, 0xf4, 0x2d, 0x73, 0xfb, 0x33, 0x78, -0x0a, 0xe3, 0xae, 0x92, 0x07, 0xd1, 0x8d, 0x65, 0x5d, 0x7e, -0xc9, 0x3e, 0x01, 0xb8, 0x1f, 0xf1, 0xe1, 0xb7, 0xf5, 0xfe, -0xb4, 0x01, 0xfc, 0xf9, 0x4d, 0xf0, 0x9b, 0xc4, 0x90, 0x83, -0x9b, 0x07, 0x3f, 0xf0, 0x13, 0xfe, 0x15, 0x4a, 0x4f, 0x87, -0x5e, 0x20, 0x8b, 0xae, 0x9b, 0x37, 0xe0, 0xa6, 0xbf, 0xa0, -0x3b, 0xaf, 0xd8, 0xb3, 0xc0, 0x97, 0x19, 0xc4, 0x05, 0x4f, -0xd0, 0xff, 0x00, 0x8d, 0x62, 0xdd, 0x7e, 0xc1, 0xfe, 0x0a, -0x9b, 0x3b, 0x48, 0x1f, 0x54, 0x3f, 0xe3, 0x40, 0x1f, 0x81, -0xb2, 0x78, 0x2b, 0x5c, 0x8b, 0xae, 0x9b, 0x3f, 0xfd, 0xf1, -0x55, 0xdf, 0xc3, 0x1a, 0xb4, 0x7f, 0x7b, 0x4f, 0xb8, 0x1f, -0xf6, 0xcc, 0xd7, 0xef, 0x0d, 0xdf, 0xfc, 0x13, 0xe3, 0xc2, -0x53, 0x64, 0xa4, 0xca, 0x3e, 0xa8, 0x7f, 0xf8, 0xaa, 0xc5, -0xbb, 0xff, 0x00, 0x82, 0x72, 0xf8, 0x7a, 0x5c, 0xf9, 0x77, -0x09, 0xff, 0x00, 0x7c, 0x9f, 0xf1, 0xa0, 0x0f, 0xc3, 0x27, -0xd1, 0x35, 0x08, 0xfa, 0xd9, 0x5c, 0x7f, 0xdf, 0xb6, 0xff, -0x00, 0x0a, 0x88, 0xe9, 0xd7, 0x6b, 0xd6, 0xd6, 0x61, 0xf5, -0x8c, 0xd7, 0xed, 0xad, 0xf7, 0xfc, 0x13, 0x5f, 0x4b, 0x70, -0x7c, 0xbb, 0x88, 0xcf, 0xfc, 0x07, 0xff, 0x00, 0xaf, 0x5c, -0xf5, 0xef, 0xfc, 0x13, 0x36, 0x16, 0xce, 0xc9, 0x11, 0xbf, -0xe0, 0x3f, 0xfd, 0x7a, 0x00, 0xfc, 0x68, 0x36, 0x73, 0x8e, -0xb0, 0xc8, 0x3e, 0xa8, 0x69, 0xa6, 0x19, 0x07, 0x54, 0x61, -0xf8, 0x57, 0xeb, 0xcd, 0xef, 0xfc, 0x13, 0x26, 0x53, 0x9d, -0x88, 0xad, 0xf4, 0x8f, 0xff, 0x00, 0xaf, 0x58, 0x17, 0xbf, -0xf0, 0x4c, 0x9b, 0xfe, 0x76, 0xda, 0x16, 0xfa, 0x42, 0x4f, -0xf5, 0xa0, 0x0f, 0xca, 0x32, 0xa4, 0x75, 0x04, 0x52, 0x57, -0xe9, 0xde, 0xa3, 0xff, 0x00, 0x04, 0xd0, 0xd5, 0xa3, 0x07, -0x1a, 0x74, 0x84, 0x7b, 0x42, 0xdf, 0xe3, 0x5c, 0xdd, 0xf7, -0xfc, 0x13, 0x73, 0x57, 0x8f, 0x38, 0xd2, 0xa5, 0x1f, 0xf6, -0xc5, 0x85, 0x00, 0x7e, 0x74, 0x51, 0x5f, 0x7b, 0x5e, 0xff, -0x00, 0xc1, 0x3b, 0x35, 0xa8, 0xb3, 0x8d, 0x2a, 0x7f, 0xc2, -0x16, 0xac, 0x0b, 0xcf, 0xf8, 0x27, 0xfe, 0xb7, 0x16, 0x71, -0xa6, 0x5c, 0x8c, 0x7a, 0x44, 0xd4, 0x01, 0xf1, 0x45, 0x15, -0xf5, 0xc5, 0xf7, 0xec, 0x29, 0xae, 0x5b, 0xe7, 0xfd, 0x06, -0xed, 0x7f, 0xed, 0x9b, 0x56, 0x25, 0xd7, 0xec, 0x53, 0xe2, -0x08, 0xb3, 0x8b, 0x5b, 0xc1, 0xff, 0x00, 0x6c, 0x4d, 0x00, -0x7c, 0xc5, 0x45, 0x7d, 0x0b, 0x73, 0xfb, 0x20, 0x78, 0x86, -0x13, 0xc4, 0x57, 0x5f, 0xf7, 0xe0, 0xd6, 0x5d, 0xcf, 0xec, -0xab, 0xe2, 0x48, 0x3f, 0xe5, 0x9d, 0xc0, 0xfa, 0xdb, 0x9a, -0x00, 0xf0, 0xfd, 0xc4, 0x77, 0x3f, 0x9d, 0x3c, 0x5c, 0x48, -0xa3, 0x89, 0x1c, 0x7d, 0x18, 0xd7, 0xac, 0x5c, 0x7e, 0xcd, -0x9e, 0x25, 0x84, 0x9f, 0xdd, 0xcb, 0xc7, 0xfd, 0x30, 0x35, -0x9f, 0x37, 0xc0, 0x2f, 0x11, 0xc5, 0x9f, 0xdd, 0x39, 0xff, -0x00, 0xb6, 0x46, 0x80, 0x3c, 0xe4, 0x5f, 0x5c, 0xaf, 0x4b, -0x89, 0x47, 0xd1, 0xcd, 0x4a, 0x35, 0x7b, 0xe5, 0xe9, 0x7b, -0x70, 0x3e, 0x92, 0xb7, 0xf8, 0xd7, 0x69, 0x37, 0xc1, 0x4f, -0x11, 0x45, 0xff, 0x00, 0x2e, 0xee, 0x7f, 0xed, 0x99, 0xaa, -0x53, 0x7c, 0x27, 0xf1, 0x0c, 0x5f, 0xf2, 0xe7, 0x21, 0xff, -0x00, 0x80, 0x1a, 0x00, 0xe7, 0x57, 0xc4, 0x3a, 0xa2, 0x7d, -0xdd, 0x46, 0xe8, 0x7d, 0x26, 0x6f, 0xf1, 0xab, 0x30, 0x78, -0xcf, 0x5c, 0xb7, 0xfb, 0x9a, 0xad, 0xd8, 0xff, 0x00, 0xb6, -0xad, 0xfe, 0x35, 0x72, 0x6f, 0x87, 0x7a, 0xec, 0x23, 0x26, -0xc6, 0x43, 0xff, 0x00, 0x01, 0x35, 0x9d, 0x37, 0x86, 0x35, -0x4b, 0x7f, 0xf5, 0x96, 0x33, 0x2f, 0xfc, 0x00, 0xd0, 0x07, -0xd3, 0xbf, 0xb0, 0xf6, 0xa1, 0xe2, 0x5f, 0x18, 0xfc, 0x65, -0xd2, 0xad, 0xe4, 0xbf, 0x9e, 0x7b, 0x58, 0xd8, 0x3b, 0xab, -0xb1, 0x23, 0xad, 0x7e, 0xd2, 0x4e, 0xc6, 0x3b, 0x15, 0x07, -0x8c, 0x0c, 0x57, 0xe5, 0xa7, 0xfc, 0x12, 0xcb, 0xc1, 0x8d, -0x77, 0xe3, 0x3d, 0x53, 0x54, 0x9e, 0xdd, 0x93, 0xec, 0xea, -0x15, 0x4b, 0xa9, 0x1c, 0xfb, 0x57, 0xea, 0x3e, 0xac, 0xfe, -0x5d, 0xb0, 0x1d, 0x28, 0x03, 0x8d, 0xd6, 0xe6, 0xe5, 0xb9, -0xaf, 0x35, 0xf1, 0x2d, 0xc7, 0xde, 0xe6, 0xbb, 0xcd, 0x72, -0x6e, 0x1e, 0xbc, 0xbb, 0xc5, 0x57, 0x5e, 0x5c, 0x72, 0x36, -0x7a, 0x03, 0x49, 0xe8, 0x27, 0xa1, 0xf3, 0x57, 0xc6, 0xed, -0x5c, 0x97, 0x98, 0x6f, 0xc8, 0x19, 0xc7, 0x35, 0xf2, 0xaf, -0x88, 0xa7, 0xcc, 0x8e, 0x73, 0x9c, 0xd7, 0xbb, 0xfc, 0x63, -0xd5, 0x0c, 0xb7, 0x12, 0x8c, 0xf5, 0x26, 0xbe, 0x79, 0xf1, -0x0c, 0xdf, 0x33, 0x73, 0x5f, 0x0b, 0x5e, 0x5e, 0xd7, 0x14, -0xcf, 0xcd, 0xb1, 0x32, 0xf6, 0xd8, 0xc6, 0x72, 0x97, 0xcf, -0x96, 0x35, 0xf5, 0xbf, 0xfc, 0x13, 0x83, 0xc2, 0x4b, 0xa8, -0xf8, 0xb7, 0x5d, 0xd6, 0x24, 0x8f, 0x70, 0x8d, 0xa1, 0xb6, -0x8d, 0xb6, 0xf1, 0x81, 0xba, 0x47, 0x19, 0xfa, 0x88, 0xeb, -0xe4, 0x2b, 0xc7, 0xce, 0x6b, 0xf4, 0xa3, 0xfe, 0x09, 0xdf, -0xe1, 0x31, 0xa4, 0xfc, 0x36, 0x4b, 0xe2, 0x00, 0x92, 0xe7, -0x7d, 0xc3, 0x10, 0x3a, 0xef, 0x6c, 0x29, 0x3f, 0xf0, 0x14, -0xaf, 0xa3, 0xc1, 0xc7, 0xde, 0x3e, 0xb3, 0x01, 0x0f, 0x7a, -0xfd, 0x8f, 0xb1, 0xed, 0x47, 0x4a, 0xda, 0xb5, 0xe8, 0x2b, -0x22, 0xd5, 0x79, 0x15, 0xb5, 0x6c, 0xbc, 0x0a, 0xf6, 0x0f, -0x78, 0xd4, 0xb5, 0xed, 0x5a, 0xd6, 0xe3, 0xa5, 0x66, 0x5b, -0x2f, 0x02, 0xb5, 0x2d, 0xd6, 0x80, 0x2f, 0xc2, 0x3a, 0x55, -0xf8, 0xc7, 0x15, 0x4a, 0x11, 0xd3, 0xb5, 0x5e, 0x8c, 0x71, -0x40, 0x12, 0xad, 0x4c, 0xa2, 0xa2, 0x5a, 0x99, 0x68, 0x01, -0xd4, 0xe1, 0xd2, 0x9b, 0x4f, 0xa0, 0x02, 0x8a, 0x28, 0xa0, -0x0f, 0x24, 0xf8, 0xfb, 0x74, 0xd6, 0x5f, 0x05, 0x7c, 0x77, -0x22, 0x9f, 0x98, 0x68, 0x97, 0x8a, 0x08, 0xec, 0x4c, 0x2c, -0x3f, 0xad, 0x7c, 0x33, 0xfb, 0x2b, 0x5d, 0x8b, 0x4b, 0x0b, -0xe7, 0xe8, 0x5a, 0x45, 0x1f, 0xa5, 0x7d, 0xc5, 0xfb, 0x41, -0x40, 0xf7, 0x3f, 0x04, 0x7c, 0x78, 0x91, 0x8d, 0xcf, 0xfd, -0x89, 0x78, 0xc0, 0x7a, 0xe2, 0x16, 0x27, 0xf4, 0x15, 0xf9, -0xfb, 0xfb, 0x3d, 0x5f, 0x8b, 0x4d, 0x1e, 0xe4, 0xe7, 0x1f, -0xbd, 0xfe, 0x95, 0xe0, 0x57, 0x8d, 0xf3, 0x3a, 0x2d, 0xf4, -0x8b, 0x3e, 0x5f, 0x15, 0x1e, 0x6c, 0xe2, 0x83, 0x7d, 0x23, -0x23, 0xec, 0x2d, 0x2f, 0x5c, 0xdb, 0xb7, 0xe6, 0xae, 0x86, -0xdb, 0x5c, 0x1b, 0x47, 0xcd, 0x5e, 0x1e, 0x9e, 0x2f, 0x82, -0xcd, 0x41, 0x69, 0x81, 0x3e, 0xc4, 0x53, 0xcf, 0xc5, 0x08, -0x20, 0x5f, 0x96, 0x65, 0x1f, 0x88, 0xaf, 0x66, 0x75, 0xa9, -0xc3, 0xe2, 0x67, 0xd0, 0x54, 0xaf, 0x4e, 0x9f, 0xc4, 0xcf, -0x7a, 0x4d, 0x7b, 0xde, 0x9e, 0xda, 0xe8, 0xc7, 0x5a, 0xf9, -0xf5, 0xbe, 0x2e, 0xc4, 0x9f, 0xf2, 0xf2, 0xa3, 0xf1, 0x15, -0x19, 0xf8, 0xc3, 0x0f, 0x3f, 0xe9, 0x49, 0xf9, 0x8a, 0xe5, -0x78, 0xea, 0x09, 0xda, 0xe7, 0x1b, 0xcc, 0xb0, 0xe9, 0xdb, -0x98, 0xfa, 0x08, 0x6b, 0xa3, 0xfb, 0xd5, 0x22, 0xeb, 0x99, -0xfe, 0x2a, 0xf9, 0xf2, 0x2f, 0x8b, 0xb0, 0x93, 0xff, 0x00, -0x1f, 0x2b, 0xf9, 0x8a, 0xb7, 0x17, 0xc5, 0xa8, 0x4f, 0xfc, -0xb7, 0x4f, 0xcc, 0x55, 0x2c, 0x6d, 0x17, 0xf6, 0x8a, 0x59, -0x86, 0x1d, 0xfd, 0xa3, 0xdf, 0x06, 0xb8, 0x3f, 0xbd, 0x4f, -0x1a, 0xe0, 0x1f, 0xc5, 0x5e, 0x15, 0x17, 0xc5, 0x5b, 0x73, -0xd6, 0x65, 0xfc, 0xc5, 0x59, 0x4f, 0x8a, 0x56, 0xc7, 0x1f, -0xbd, 0x5f, 0xfb, 0xe8, 0x56, 0x8b, 0x15, 0x45, 0xfd, 0xa3, -0x55, 0x8c, 0xa0, 0xfe, 0xd1, 0xee, 0x0b, 0xae, 0x0f, 0xef, -0x53, 0xd7, 0x5b, 0xff, 0x00, 0x6a, 0xbc, 0x56, 0x3f, 0x89, -0xb6, 0x87, 0xfe, 0x5a, 0xaf, 0xe6, 0x2a, 0xd4, 0x7f, 0x12, -0x2c, 0xcf, 0xfc, 0xb6, 0x1f, 0xf7, 0xd0, 0xaa, 0x58, 0x8a, -0x4f, 0xed, 0x1a, 0x2c, 0x4d, 0x17, 0xf6, 0x8f, 0x64, 0x5d, -0x6f, 0xfd, 0xaa, 0x90, 0x6b, 0x7e, 0xff, 0x00, 0xad, 0x78, -0xf2, 0x7c, 0x44, 0xb2, 0x3f, 0xf2, 0xdc, 0x7e, 0x62, 0xac, -0xa7, 0x8f, 0xac, 0xcf, 0xfc, 0xb7, 0x1f, 0x98, 0xab, 0x55, -0x60, 0xfa, 0x96, 0xab, 0x53, 0x7b, 0x49, 0x1e, 0xb6, 0x35, -0xbe, 0x3e, 0xf5, 0x48, 0x35, 0xbf, 0x7a, 0xf2, 0x68, 0xfc, -0x75, 0x66, 0x7f, 0xe5, 0xe0, 0x7e, 0x62, 0xac, 0x2f, 0x8d, -0x6d, 0x4f, 0xfc, 0xbc, 0xa7, 0xfd, 0xf4, 0x29, 0xfb, 0x48, -0xbe, 0xa5, 0x2a, 0x90, 0x7d, 0x4f, 0x54, 0x1a, 0xdf, 0xfb, -0x55, 0x20, 0xd6, 0xff, 0x00, 0xda, 0xaf, 0x2e, 0x4f, 0x18, -0x5b, 0x36, 0x31, 0x72, 0x9f, 0xf7, 0xd0, 0xa9, 0x97, 0xc5, -0x96, 0xff, 0x00, 0xf3, 0xf0, 0x9f, 0xf7, 0xd0, 0xaa, 0xe6, -0x5d, 0xca, 0xe6, 0x8f, 0x73, 0xd3, 0x97, 0x5a, 0xff, 0x00, -0x6a, 0x9e, 0x35, 0xbf, 0xf6, 0xab, 0xcd, 0x13, 0xc5, 0x10, -0x9e, 0x04, 0xe8, 0x7f, 0xe0, 0x42, 0xa4, 0x5f, 0x13, 0x44, -0x47, 0xfa, 0xd5, 0xff, 0x00, 0xbe, 0x85, 0x3b, 0xa1, 0xdd, -0x1e, 0x96, 0xba, 0xdf, 0xfb, 0x54, 0xf1, 0xad, 0xfb, 0xd7, -0x9b, 0x0f, 0x12, 0x46, 0x7f, 0xe5, 0xaa, 0xfe, 0x62, 0xa4, -0x1e, 0x23, 0x4c, 0x7f, 0xac, 0x1f, 0x81, 0x14, 0xee, 0x87, -0x74, 0x7a, 0x42, 0xeb, 0x7f, 0xed, 0x53, 0xc6, 0xb6, 0x3d, -0x6b, 0xce, 0x57, 0xc4, 0x49, 0xff, 0x00, 0x3d, 0x17, 0xf3, -0xa9, 0x57, 0xc4, 0x0b, 0xff, 0x00, 0x3d, 0x07, 0xe7, 0x40, -0x1e, 0x8a, 0xba, 0xd7, 0xbd, 0x3c, 0x6b, 0x43, 0xd6, 0xbc, -0xec, 0x6b, 0xcb, 0x8f, 0xf5, 0x9f, 0xad, 0x3d, 0x75, 0xe5, -0xfe, 0xfd, 0x00, 0x7a, 0x22, 0xeb, 0x23, 0xd6, 0xa4, 0x1a, -0xcf, 0xa9, 0xaf, 0x3a, 0x5d, 0x79, 0x7f, 0xbe, 0x2a, 0x55, -0xd7, 0x57, 0xfb, 0xe3, 0xf3, 0xa0, 0x0f, 0x43, 0x1a, 0xc0, -0xf5, 0xa7, 0x8d, 0x5c, 0x7a, 0xd7, 0x9e, 0x0d, 0x74, 0x7f, -0x7f, 0xf5, 0xa9, 0x06, 0xba, 0x3f, 0xe7, 0xa0, 0xfc, 0xe8, -0x03, 0xd0, 0x97, 0x56, 0x1e, 0xb4, 0xe5, 0xd5, 0x87, 0xad, -0x79, 0xf0, 0xd7, 0x46, 0x3e, 0xf8, 0xa9, 0x17, 0x5d, 0x1f, -0xdf, 0x14, 0x01, 0xe8, 0x03, 0x56, 0x1f, 0xde, 0xc5, 0x3c, -0x6a, 0xc3, 0xfb, 0xd5, 0xe7, 0xeb, 0xae, 0x0f, 0xef, 0x8a, -0x91, 0x75, 0xc1, 0xfd, 0xfa, 0x00, 0xef, 0xd7, 0x54, 0x00, -0x7d, 0xea, 0x70, 0xd5, 0x41, 0x3d, 0x6b, 0x82, 0x5d, 0x70, -0x7f, 0x7e, 0x9e, 0x35, 0xc1, 0xfd, 0xe1, 0x40, 0x1d, 0xe8, -0xd4, 0xc1, 0xee, 0x29, 0x46, 0xa4, 0x0f, 0xa5, 0x70, 0x83, -0x5c, 0x1f, 0xde, 0x14, 0xf5, 0xd6, 0xc7, 0xf7, 0xa8, 0x03, -0xbb, 0x1a, 0x82, 0x9f, 0x4a, 0x51, 0x7e, 0xbe, 0xd5, 0xc3, -0x8d, 0x70, 0x7f, 0x78, 0x53, 0xd7, 0x5c, 0x1f, 0xde, 0xa0, -0x0e, 0xdc, 0x5e, 0xa9, 0xa5, 0x17, 0x88, 0x6b, 0x8a, 0x1a, -0xe0, 0xfe, 0xf5, 0x48, 0xba, 0xe0, 0xfe, 0xf0, 0xa0, 0x0e, -0xcc, 0x5d, 0x21, 0xa5, 0x17, 0x08, 0x7b, 0xd7, 0x1c, 0x35, -0xb1, 0xfd, 0xe1, 0x52, 0x2e, 0xb6, 0x3f, 0xbd, 0x40, 0x1d, -0x77, 0x9e, 0x9e, 0xb4, 0xa2, 0x55, 0x3d, 0xeb, 0x93, 0x5d, -0x6d, 0x7f, 0xbd, 0x4f, 0x5d, 0x6c, 0x7f, 0x78, 0x50, 0x07, -0x55, 0xe6, 0x2f, 0xa8, 0xa3, 0x7a, 0xfa, 0x8a, 0xe6, 0x06, -0xb2, 0xb8, 0xfb, 0xc2, 0x9e, 0x35, 0x95, 0x3f, 0xc4, 0x28, -0x03, 0xa5, 0xc8, 0xf5, 0xa3, 0x35, 0xce, 0x8d, 0x65, 0x7f, -0xbc, 0x3f, 0x3a, 0x78, 0xd6, 0x17, 0x3f, 0x78, 0x50, 0x06, -0xfe, 0x69, 0x6b, 0x08, 0x6a, 0xea, 0x7f, 0x88, 0x53, 0x86, -0xac, 0xa7, 0xf8, 0xe8, 0x03, 0x6e, 0x8a, 0xc7, 0x1a, 0xb0, -0xfe, 0xf0, 0xa7, 0x8d, 0x54, 0x7f, 0x78, 0x50, 0x06, 0xad, -0x15, 0x98, 0xba, 0xa2, 0xf7, 0x61, 0x4f, 0x1a, 0xa2, 0xfa, -0x8a, 0x00, 0xd0, 0xa2, 0xa8, 0x8d, 0x49, 0x73, 0xd4, 0x52, -0x8d, 0x45, 0x7b, 0x91, 0x40, 0x16, 0xca, 0x29, 0xea, 0xa0, -0xfe, 0x14, 0xd6, 0xb7, 0x8d, 0xba, 0xc6, 0x87, 0xea, 0xa2, -0xa0, 0xfe, 0xd0, 0x4f, 0x51, 0x4e, 0x17, 0xc8, 0x7b, 0xd0, -0x00, 0xfa, 0x6d, 0xa4, 0x9f, 0x7a, 0xda, 0x26, 0xfa, 0xa8, -0xaa, 0xf2, 0x78, 0x77, 0x4c, 0x9b, 0xef, 0xd8, 0xc0, 0xdf, -0x54, 0x15, 0x64, 0x5e, 0x21, 0xef, 0x4a, 0x2e, 0xe3, 0x3d, -0xe8, 0x03, 0x2a, 0x5f, 0x05, 0x68, 0x93, 0xe7, 0x7e, 0x9b, -0x01, 0xcf, 0xfb, 0x02, 0xa9, 0x4d, 0xf0, 0xc7, 0xc3, 0x53, -0x8f, 0x9b, 0x4b, 0x87, 0xf0, 0x15, 0xd2, 0x0b, 0x94, 0x3d, -0xe9, 0x44, 0xe8, 0x7f, 0x8a, 0x80, 0x38, 0x9b, 0x8f, 0x82, -0x9e, 0x11, 0xb9, 0xce, 0xfd, 0x2d, 0x39, 0xf4, 0xc7, 0xf8, -0x56, 0x74, 0xff, 0x00, 0xb3, 0xc7, 0x82, 0xae, 0x33, 0xbb, -0x4e, 0x23, 0x3e, 0x84, 0x7f, 0x85, 0x7a, 0x47, 0x9c, 0x9f, -0xde, 0x14, 0x79, 0xab, 0xfd, 0xe1, 0x40, 0x1e, 0x47, 0x73, -0xfb, 0x2d, 0x78, 0x16, 0xe7, 0x39, 0xb2, 0x75, 0xcf, 0xa1, -0x5f, 0xf0, 0xac, 0xab, 0xbf, 0xd8, 0xf3, 0xc0, 0xb7, 0x39, -0xfd, 0xd4, 0xab, 0x9f, 0x65, 0x3f, 0xd2, 0xbd, 0xcb, 0x7a, -0xfa, 0x8a, 0x0c, 0x8a, 0x3f, 0x88, 0x7e, 0x74, 0x01, 0xf3, -0x6e, 0xa9, 0xfb, 0x0d, 0xf8, 0x36, 0xf2, 0x32, 0x22, 0x66, -0x52, 0x7f, 0xbc, 0xa3, 0xfc, 0x2b, 0xcf, 0xfc, 0x41, 0xff, -0x00, 0x04, 0xf5, 0xd1, 0x65, 0xdc, 0xd0, 0x5c, 0x27, 0xe2, -0x71, 0xff, 0x00, 0xb2, 0xd7, 0xd9, 0x57, 0x17, 0xa9, 0x1a, -0xf0, 0x6b, 0x16, 0xfb, 0x54, 0x03, 0x3f, 0x30, 0xa0, 0x0f, -0x09, 0xf8, 0x17, 0xf0, 0x0a, 0xd3, 0xe0, 0xae, 0x9f, 0x79, -0x04, 0x7b, 0x4c, 0x93, 0x36, 0x4b, 0x2f, 0x7f, 0xd2, 0xbb, -0x9d, 0x7a, 0x5f, 0xdd, 0x9c, 0x56, 0xb6, 0xa5, 0xa9, 0xa9, -0xcf, 0xcc, 0x2b, 0x8c, 0xd6, 0xb5, 0x31, 0xb4, 0xfc, 0xc2, -0x80, 0x39, 0x6d, 0x7a, 0x6c, 0x2b, 0xf3, 0x5e, 0x43, 0xe3, -0xdb, 0xe1, 0x06, 0x9f, 0x70, 0xd9, 0xec, 0x45, 0x7a, 0x46, -0xbd, 0xa9, 0x29, 0x56, 0xe4, 0x57, 0x88, 0xfc, 0x55, 0xd4, -0xc4, 0x5a, 0x73, 0x80, 0xc3, 0x90, 0x78, 0xac, 0x6b, 0x4b, -0x92, 0x9b, 0x67, 0x3e, 0x22, 0x7c, 0x94, 0xa5, 0x23, 0xe5, -0x0f, 0x8a, 0x17, 0xfe, 0x7d, 0xf3, 0x8c, 0xf7, 0x35, 0xe2, -0xfa, 0xf4, 0xb9, 0x90, 0xd7, 0xa3, 0xf8, 0xe6, 0xf3, 0xce, -0xbf, 0x94, 0xe7, 0x38, 0xaf, 0x2c, 0xd6, 0xa5, 0xdd, 0x29, -0xaf, 0x86, 0xa1, 0xef, 0xd5, 0x72, 0x3f, 0x37, 0xc3, 0x7e, -0xf2, 0xbc, 0xa4, 0x60, 0xdc, 0x65, 0xdc, 0x28, 0xfb, 0xc4, -0xe0, 0x57, 0xec, 0x97, 0xec, 0xcd, 0xe1, 0xaf, 0xf8, 0x46, -0x3e, 0x17, 0x69, 0x36, 0xa4, 0x61, 0x92, 0x18, 0xe3, 0x23, -0xd0, 0xaa, 0x0c, 0xfe, 0xb9, 0xaf, 0xc8, 0xff, 0x00, 0x87, -0x3a, 0x01, 0xf1, 0x57, 0xc4, 0x5f, 0x0e, 0xe9, 0x42, 0x31, -0x2a, 0x5c, 0x5f, 0xc2, 0xb2, 0x21, 0x19, 0xcc, 0x61, 0x81, -0x7f, 0xfc, 0x74, 0x1a, 0xfd, 0xad, 0xf0, 0x3d, 0x89, 0xb1, -0xf0, 0xe5, 0x84, 0x64, 0x61, 0xbc, 0xb0, 0xc7, 0x3e, 0xfc, -0xff, 0x00, 0x5a, 0xfb, 0x0c, 0x24, 0x6d, 0x16, 0xcf, 0xbd, -0xc0, 0xc6, 0xd1, 0x6c, 0xeb, 0x2d, 0x47, 0x23, 0xad, 0x6d, -0x5a, 0xe3, 0x02, 0xb2, 0x2d, 0x17, 0x18, 0xad, 0xab, 0x55, -0xe9, 0x5d, 0xe7, 0xa6, 0x6a, 0x5b, 0x0e, 0x82, 0xb5, 0x2d, -0xc7, 0x02, 0xb3, 0xed, 0x85, 0x69, 0x5b, 0x8e, 0x94, 0x01, -0x76, 0x2a, 0xbb, 0x1f, 0x35, 0x52, 0x11, 0x57, 0x23, 0xe9, -0x40, 0x13, 0x2d, 0x4a, 0xb5, 0x1a, 0x76, 0xa9, 0x07, 0x4a, -0x00, 0x5a, 0x7d, 0x34, 0x75, 0xa7, 0x50, 0x01, 0x45, 0x14, -0x50, 0x07, 0x0f, 0xe3, 0x6d, 0x38, 0x6a, 0xfe, 0x12, 0xd7, -0x2c, 0x59, 0x77, 0x0b, 0xab, 0x19, 0xe0, 0x23, 0xd7, 0x74, -0x6c, 0xbf, 0xd6, 0xbf, 0x2b, 0x7c, 0x17, 0x76, 0xde, 0x14, -0xb8, 0xd6, 0x34, 0xb9, 0x09, 0x46, 0x86, 0xe0, 0xaf, 0x27, -0x9c, 0x0e, 0x9f, 0xa5, 0x7e, 0xb5, 0xce, 0xa1, 0x94, 0x83, -0xd0, 0xf1, 0x5f, 0x97, 0xbf, 0xb4, 0xe7, 0x82, 0x25, 0xf0, -0x0f, 0xc5, 0x3d, 0x59, 0x90, 0x6d, 0xb6, 0xbc, 0x25, 0xd0, -0x8e, 0xc7, 0xa8, 0xfd, 0x08, 0xfc, 0x8d, 0x78, 0x19, 0xb3, -0x74, 0x63, 0x0c, 0x4c, 0x7e, 0xcb, 0xfc, 0x1f, 0xfc, 0x13, -0xe6, 0x33, 0xc6, 0xe8, 0x46, 0x9e, 0x32, 0x3f, 0x61, 0xd9, -0xfa, 0x3f, 0xf8, 0x36, 0x38, 0xcd, 0x7f, 0xe2, 0x3b, 0xdb, -0x48, 0xd1, 0x89, 0x7e, 0x9d, 0x6b, 0x8f, 0xbd, 0xf1, 0xe5, -0xe4, 0xec, 0x76, 0x4a, 0x40, 0xfa, 0x9a, 0xc1, 0xb9, 0x8e, -0x4b, 0x87, 0x76, 0x73, 0x96, 0x35, 0x9c, 0xe8, 0xf1, 0xb7, -0x7c, 0x57, 0xc1, 0xd5, 0xc6, 0x54, 0xc4, 0x37, 0x76, 0x7e, -0x67, 0x5f, 0x1f, 0x57, 0x15, 0x26, 0xf9, 0x8e, 0x81, 0xbc, -0x5d, 0x7c, 0x4f, 0x33, 0x37, 0xe6, 0x69, 0xa7, 0xc5, 0x77, -0x9f, 0xf3, 0xdd, 0xbf, 0x33, 0x58, 0x1e, 0x66, 0x71, 0x4c, -0x92, 0xb9, 0x75, 0xee, 0x70, 0xda, 0x4d, 0xea, 0xce, 0x8d, -0x3c, 0x5f, 0x7a, 0x3f, 0xe5, 0xe1, 0xbf, 0x3a, 0xb1, 0x1f, -0x8d, 0xaf, 0x94, 0x7f, 0xae, 0x27, 0xf1, 0x35, 0xc8, 0x51, -0x55, 0xaf, 0x73, 0x4b, 0x49, 0x6d, 0x26, 0x76, 0xc9, 0xe3, -0xeb, 0xf5, 0xff, 0x00, 0x96, 0xa7, 0xf3, 0x35, 0x61, 0x3e, -0x22, 0x5f, 0x2f, 0xfc, 0xb5, 0x3f, 0x99, 0xae, 0x0b, 0x71, -0xa3, 0x71, 0xa7, 0xcd, 0x35, 0xf6, 0x8a, 0x4e, 0xa2, 0xfb, -0x4c, 0xf4, 0x68, 0xfe, 0x26, 0x5e, 0xaf, 0xfc, 0xb4, 0x3f, -0x99, 0xab, 0x51, 0x7c, 0x52, 0xbc, 0x4c, 0x7e, 0xf1, 0xbf, -0x33, 0x5e, 0x61, 0xe6, 0x1f, 0x5a, 0x5f, 0x31, 0xbd, 0x6a, -0x95, 0x4a, 0xab, 0xed, 0x0d, 0x54, 0xac, 0xb6, 0x99, 0xea, -0xf1, 0x7c, 0x5a, 0xba, 0x5f, 0xf9, 0x68, 0xc3, 0xf1, 0x35, -0x6e, 0x3f, 0x8b, 0xd7, 0x0a, 0x39, 0x99, 0xbf, 0x5a, 0xf1, -0xd1, 0x33, 0x7a, 0xd2, 0xf9, 0xef, 0xeb, 0x54, 0xab, 0x56, -0x5f, 0x68, 0xd1, 0x62, 0x31, 0x0b, 0x69, 0x9e, 0xd9, 0x17, -0xc6, 0x49, 0x46, 0x3f, 0x7a, 0x7f, 0x5a, 0xb9, 0x17, 0xc6, -0x69, 0x07, 0x59, 0xff, 0x00, 0x9d, 0x78, 0x47, 0xda, 0x5f, -0xd6, 0x97, 0xed, 0x4f, 0x56, 0xb1, 0x55, 0xd7, 0xda, 0x2d, -0x63, 0x31, 0x4b, 0x69, 0x1f, 0x41, 0x45, 0xf1, 0xa4, 0xf1, -0xfb, 0xfe, 0x7f, 0x1a, 0xb9, 0x17, 0xc6, 0x83, 0xde, 0x71, -0xf9, 0x9a, 0xf9, 0xc8, 0x5d, 0x3f, 0xbd, 0x38, 0x5e, 0xb8, -0xab, 0x58, 0xdc, 0x42, 0xea, 0x68, 0xb3, 0x0c, 0x5a, 0xea, -0x7d, 0x31, 0x0f, 0xc6, 0x8e, 0x47, 0xef, 0xff, 0x00, 0x53, -0x57, 0x62, 0xf8, 0xcc, 0x09, 0xff, 0x00, 0x5f, 0xfa, 0x9a, -0xf9, 0x70, 0x5f, 0xb8, 0xe8, 0x4f, 0xe7, 0x4f, 0x1a, 0x93, -0xe7, 0xef, 0x1a, 0xd1, 0x66, 0x18, 0x85, 0xd4, 0xd5, 0x66, -0x98, 0xb5, 0xd4, 0xfa, 0xb2, 0x2f, 0x8c, 0xcb, 0xff, 0x00, -0x3f, 0x1c, 0xfd, 0x4d, 0x5d, 0x87, 0xe3, 0x22, 0x9f, 0xf9, -0x78, 0xc7, 0xe2, 0x6b, 0xe4, 0x91, 0xaa, 0xc8, 0xbd, 0x1c, -0xd4, 0x8b, 0xad, 0x4c, 0x3f, 0x88, 0xd6, 0xab, 0x34, 0xc4, -0x23, 0x65, 0x9c, 0xe2, 0x91, 0xf5, 0xfc, 0x3f, 0x18, 0xd7, -0xfe, 0x7e, 0x7f, 0x53, 0x57, 0x22, 0xf8, 0xc4, 0xa7, 0xfe, -0x5e, 0x7f, 0x53, 0x5f, 0x1c, 0xae, 0xbf, 0x32, 0xff, 0x00, -0xcb, 0x42, 0x2a, 0x54, 0xf1, 0x2d, 0xc8, 0xe9, 0x29, 0xad, -0x56, 0x6f, 0x5d, 0x1b, 0x2c, 0xf7, 0x12, 0xba, 0x1f, 0x67, -0xc5, 0xf1, 0x80, 0x7f, 0xcf, 0xc8, 0xfc, 0xcd, 0x5a, 0x8b, -0xe2, 0xe8, 0x3f, 0xf2, 0xf0, 0x0f, 0xe2, 0x6b, 0xe2, 0xc4, -0xf1, 0x55, 0xd8, 0xff, 0x00, 0x96, 0x95, 0x32, 0xf8, 0xca, -0xf1, 0x7a, 0x48, 0x2b, 0x45, 0x9d, 0x56, 0x5b, 0x9b, 0x2e, -0x21, 0xae, 0xba, 0x1f, 0x6d, 0x45, 0xf1, 0x6c, 0x63, 0xfd, -0x7a, 0xd5, 0xb8, 0xfe, 0x2c, 0x29, 0xc7, 0xef, 0x94, 0xd7, -0xc4, 0x51, 0xf8, 0xe2, 0xf5, 0x71, 0xf3, 0xe6, 0xac, 0x27, -0xc4, 0x1b, 0xd4, 0x3f, 0x78, 0x7e, 0x75, 0xb2, 0xcf, 0x2a, -0x75, 0x46, 0xd1, 0xe2, 0x4a, 0xab, 0x73, 0xed, 0xf8, 0xbe, -0x2a, 0x29, 0xff, 0x00, 0x96, 0x89, 0x56, 0xa3, 0xf8, 0xa1, -0x19, 0x3f, 0x7d, 0x7f, 0x5a, 0xf8, 0x79, 0x3e, 0x23, 0xde, -0x2f, 0x7f, 0xd6, 0xac, 0xc7, 0xf1, 0x3a, 0xed, 0x71, 0xd6, -0xb5, 0x59, 0xf4, 0xba, 0x9d, 0x11, 0xe2, 0x69, 0x75, 0x3e, -0xe2, 0x4f, 0x89, 0x90, 0x91, 0xf7, 0x87, 0xe6, 0x6a, 0xc4, -0x7f, 0x12, 0x20, 0x27, 0xef, 0x8f, 0xc0, 0x9a, 0xf8, 0x7e, -0x2f, 0x8a, 0xb7, 0x2a, 0x3a, 0x9f, 0xf3, 0xf8, 0xd5, 0xa8, -0xbe, 0x2e, 0x4e, 0xbd, 0xdb, 0xfc, 0xfe, 0x35, 0xb2, 0xcf, -0x97, 0x53, 0x78, 0xf1, 0x32, 0xea, 0x7d, 0xbc, 0x9f, 0x10, -0xad, 0xcf, 0xfc, 0xb4, 0xc7, 0xe3, 0x56, 0x13, 0xc7, 0xd6, -0xc7, 0xfe, 0x5a, 0xd7, 0xc4, 0x91, 0xfc, 0x60, 0x94, 0x75, -0x63, 0x56, 0xe2, 0xf8, 0xc6, 0xe0, 0xf2, 0xc6, 0xb6, 0x8e, -0x7d, 0x0e, 0xa6, 0xf1, 0xe2, 0x68, 0x75, 0x3e, 0xd9, 0x4f, -0x1c, 0xdb, 0x1f, 0xf9, 0x6b, 0x53, 0x27, 0x8c, 0xed, 0xcf, -0xfc, 0xb6, 0x15, 0xf1, 0x6c, 0x5f, 0x19, 0x5b, 0xbb, 0xe3, -0xfc, 0xfd, 0x6a, 0xec, 0x5f, 0x19, 0xb1, 0xfc, 0x75, 0xb2, -0xcf, 0x29, 0xb3, 0xa2, 0x3c, 0x47, 0x49, 0xee, 0x7d, 0x98, -0xbe, 0x30, 0x81, 0xb1, 0xfb, 0xe1, 0x53, 0x27, 0x8b, 0x21, -0x6f, 0xf9, 0x6c, 0x2b, 0xe3, 0x88, 0x7e, 0x33, 0x0e, 0x3e, -0x7f, 0xd7, 0xff, 0x00, 0xaf, 0x57, 0x61, 0xf8, 0xca, 0xbd, -0xdf, 0xfc, 0xfe, 0x75, 0xaa, 0xce, 0xa9, 0x33, 0x78, 0xf1, -0x0d, 0x06, 0x7d, 0x82, 0xbe, 0x27, 0x8c, 0xff, 0x00, 0xcb, -0x65, 0xfc, 0xea, 0x54, 0xf1, 0x2a, 0x1e, 0x92, 0x03, 0xf8, -0xd7, 0xc8, 0xf1, 0x7c, 0x64, 0x43, 0xfc, 0x7f, 0xad, 0x5c, -0x8b, 0xe3, 0x12, 0x63, 0x99, 0x3f, 0x5a, 0xdd, 0x66, 0xf4, -0x59, 0xd0, 0xb3, 0xdc, 0x3b, 0x3e, 0xb2, 0x5f, 0x10, 0x8f, -0xef, 0x8f, 0xce, 0xa4, 0x4f, 0x10, 0x67, 0xf8, 0xc5, 0x7c, -0xab, 0x17, 0xc6, 0x14, 0x27, 0xfd, 0x67, 0xeb, 0xff, 0x00, -0xd7, 0xab, 0xb0, 0xfc, 0x60, 0x4c, 0x7f, 0xad, 0xc7, 0xe3, -0xff, 0x00, 0xd7, 0xad, 0x16, 0x69, 0x41, 0xf5, 0x36, 0x8e, -0x75, 0x86, 0x7d, 0x4f, 0xa8, 0x97, 0x5f, 0xff, 0x00, 0x6a, -0x9e, 0xba, 0xff, 0x00, 0xfb, 0x55, 0xf3, 0x34, 0x3f, 0x17, -0xd0, 0x9c, 0x79, 0xb5, 0x72, 0x2f, 0x8b, 0x8b, 0x81, 0xfb, -0xd1, 0xf9, 0xd6, 0xab, 0x31, 0xa0, 0xfa, 0x9b, 0x2c, 0xd7, -0x0c, 0xfa, 0x9f, 0x48, 0x8d, 0x78, 0x7f, 0x7e, 0xa4, 0x5d, -0x78, 0x71, 0xf3, 0x57, 0xce, 0xd1, 0xfc, 0x5b, 0x56, 0xff, -0x00, 0x96, 0x80, 0xd5, 0xc8, 0x7e, 0x2c, 0x2f, 0x1f, 0x3a, -0xd6, 0x8b, 0x1d, 0x45, 0xf5, 0x35, 0x59, 0x96, 0x1d, 0xfd, -0xa3, 0xe8, 0x15, 0xd7, 0x47, 0xf7, 0xa9, 0xe3, 0x5d, 0x1f, -0xdf, 0xaf, 0x05, 0x8f, 0xe2, 0xaa, 0x1e, 0x37, 0x2d, 0x5a, -0x8f, 0xe2, 0x8c, 0x64, 0xf2, 0x56, 0xb4, 0x58, 0xba, 0x2f, -0xa9, 0xaa, 0xc7, 0x50, 0x7f, 0x68, 0xf7, 0x41, 0xae, 0x7f, -0xb5, 0x4f, 0x5d, 0x73, 0x9f, 0xbd, 0x5e, 0x23, 0x1f, 0xc4, -0xd8, 0x8f, 0x71, 0x56, 0x93, 0xe2, 0x4c, 0x07, 0xad, 0x5a, -0xc4, 0x52, 0x7f, 0x68, 0xd1, 0x62, 0xe8, 0xbf, 0xb4, 0x7b, -0x42, 0xeb, 0x7f, 0xed, 0x54, 0x8b, 0xae, 0x7f, 0xb5, 0x5e, -0x36, 0x9f, 0x11, 0xad, 0xce, 0x39, 0xc7, 0xe3, 0x56, 0x13, -0xe2, 0x05, 0xb3, 0x7f, 0x11, 0xcd, 0x5a, 0xad, 0x4d, 0xf5, -0x2d, 0x62, 0x29, 0x3f, 0xb4, 0x7a, 0xfa, 0xeb, 0x9f, 0xed, -0x53, 0xc6, 0xb7, 0xcf, 0xde, 0xaf, 0x25, 0x4f, 0x1d, 0xdb, -0x37, 0x47, 0x22, 0xac, 0x2f, 0x8d, 0xad, 0xd8, 0x71, 0x27, -0xe7, 0x55, 0xed, 0x21, 0xdc, 0xb5, 0x56, 0x9b, 0xda, 0x47, -0xaa, 0x8d, 0x73, 0xfd, 0xaa, 0x90, 0x6b, 0x78, 0xfe, 0x2a, -0xf2, 0xd4, 0xf1, 0x8c, 0x07, 0xfe, 0x5a, 0x54, 0xc9, 0xe2, -0xd8, 0x4f, 0xfc, 0xb5, 0x14, 0xf9, 0xe3, 0xdc, 0xa5, 0x38, -0xbd, 0x99, 0xe9, 0xeb, 0xad, 0xff, 0x00, 0xb5, 0x52, 0x0d, -0x6f, 0xfd, 0xaa, 0xf3, 0x24, 0xf1, 0x4c, 0x47, 0xfe, 0x5a, -0x0a, 0x99, 0x7c, 0x4a, 0x87, 0xf8, 0xc7, 0xe7, 0x55, 0x74, -0x3e, 0x64, 0xcf, 0x4a, 0x1a, 0xdf, 0xfb, 0x54, 0xf1, 0xad, -0x7f, 0xb4, 0x6b, 0xcd, 0xd7, 0xc4, 0x6a, 0x71, 0xf3, 0x8f, -0xce, 0xa5, 0x5f, 0x10, 0x0e, 0xbb, 0xa9, 0x95, 0xa1, 0xe8, -0xeb, 0xad, 0xff, 0x00, 0xb5, 0x4f, 0x5d, 0x6f, 0xa7, 0xcd, -0x5e, 0x72, 0xba, 0xf8, 0xc7, 0xde, 0xa9, 0x46, 0xbc, 0x3b, -0x35, 0x00, 0x7a, 0x20, 0xd6, 0xbf, 0xda, 0xa9, 0x17, 0x5b, -0xff, 0x00, 0x6a, 0xbc, 0xe9, 0x75, 0xe1, 0xfd, 0xea, 0x91, -0x75, 0xd1, 0xc7, 0xcd, 0x40, 0x1e, 0x88, 0xba, 0xd7, 0xfb, -0x54, 0xf5, 0xd6, 0xbf, 0xda, 0xaf, 0x3c, 0x5d, 0x70, 0x7f, -0x7a, 0xa4, 0x5d, 0x70, 0x7f, 0x7a, 0x80, 0x3d, 0x09, 0x75, -0xa1, 0xeb, 0x4d, 0x93, 0x5a, 0x1f, 0xde, 0xae, 0x09, 0x75, -0xc1, 0xfd, 0xea, 0x6c, 0xba, 0xe7, 0xcb, 0xf7, 0xa8, 0x03, -0xad, 0xbb, 0xd6, 0xb2, 0x0f, 0xcd, 0x58, 0x17, 0xda, 0xcf, -0x5f, 0x9a, 0xb9, 0xeb, 0xbd, 0x70, 0x0c, 0xfc, 0xd9, 0xac, -0x0b, 0xfd, 0x77, 0x39, 0xf9, 0xa8, 0x03, 0x6f, 0x53, 0xd6, -0x78, 0x3f, 0x35, 0x71, 0x9a, 0xc6, 0xb1, 0xf2, 0x93, 0xba, -0xa8, 0x6a, 0x3a, 0xef, 0x5f, 0x9a, 0xb8, 0xed, 0x67, 0x5e, -0xc2, 0x91, 0xba, 0x80, 0x1f, 0xae, 0x6b, 0x39, 0xdd, 0xf3, -0x57, 0x83, 0xfc, 0x5e, 0xd7, 0x7f, 0x72, 0xcb, 0xbf, 0xa2, -0xd7, 0x73, 0xad, 0x6b, 0x65, 0xb7, 0x7c, 0xd5, 0xf3, 0xff, -0x00, 0xc5, 0x9d, 0x70, 0x96, 0x94, 0x16, 0xed, 0x5c, 0x18, -0xd7, 0xfb, 0x96, 0x79, 0x99, 0x8b, 0xb6, 0x1d, 0xd8, 0xf1, -0x8f, 0x10, 0xde, 0xf9, 0xb3, 0xca, 0xc4, 0xe7, 0x26, 0xb8, -0x0d, 0x51, 0xf7, 0x4a, 0xd5, 0xd2, 0xea, 0x37, 0x25, 0xcb, -0x9f, 0xad, 0x72, 0xba, 0x86, 0x4b, 0x13, 0x5f, 0x2d, 0x84, -0x85, 0x99, 0xf1, 0x98, 0x28, 0x72, 0xb3, 0xdb, 0xbf, 0x62, -0x6f, 0x0b, 0x0f, 0x12, 0x7c, 0x64, 0x5b, 0x86, 0x46, 0x75, -0xb3, 0x83, 0x8c, 0x0e, 0x8c, 0xec, 0x14, 0x1f, 0xcb, 0x75, -0x7e, 0xb7, 0x59, 0xc6, 0xb1, 0xa2, 0xaa, 0x8c, 0x28, 0x18, -0x00, 0x76, 0x15, 0xf9, 0xe1, 0xff, 0x00, 0x04, 0xda, 0xf0, -0xc8, 0x9a, 0xe7, 0x5a, 0xd5, 0xdb, 0x9c, 0xdd, 0x2c, 0x2b, -0xc7, 0xf7, 0x13, 0x71, 0xff, 0x00, 0xd0, 0xd6, 0xbf, 0x44, -0xed, 0x97, 0xa5, 0x7d, 0x8d, 0x05, 0x68, 0x23, 0xef, 0x30, -0xd1, 0xe5, 0xa6, 0x8d, 0x5b, 0x45, 0xe4, 0x56, 0xcd, 0xaa, -0x74, 0xac, 0x8b, 0x41, 0xd3, 0x8a, 0xda, 0xb4, 0x1c, 0x0a, -0xdc, 0xea, 0x34, 0xed, 0x57, 0xa5, 0x69, 0xc0, 0x2b, 0x3e, -0x05, 0xc6, 0x2b, 0x4e, 0x01, 0xd2, 0x80, 0x2d, 0xc2, 0x3a, -0x55, 0xa5, 0xaa, 0xf0, 0x8e, 0x2a, 0xca, 0xd0, 0x04, 0x8b, -0x53, 0x2d, 0x44, 0x83, 0x26, 0xa5, 0x1d, 0x28, 0x01, 0x69, -0xf4, 0xd1, 0xd6, 0x9d, 0x40, 0x05, 0x14, 0x51, 0x40, 0x18, -0xb3, 0x2d, 0x7c, 0xef, 0xfb, 0x5b, 0x7c, 0x1f, 0x1f, 0x10, -0x3c, 0x2a, 0x35, 0x3b, 0x74, 0x53, 0x77, 0x62, 0x87, 0x77, -0x1c, 0xed, 0xec, 0xdf, 0x86, 0x4e, 0x7d, 0x89, 0xaf, 0xa3, -0x24, 0x4c, 0xd5, 0x2b, 0xab, 0x74, 0x9a, 0x36, 0x8e, 0x44, -0x59, 0x11, 0x81, 0x0c, 0xac, 0x32, 0x08, 0xf4, 0x22, 0xb2, -0xab, 0x4a, 0x15, 0xa9, 0xca, 0x9c, 0xd5, 0xd3, 0x30, 0xaf, -0x46, 0x18, 0x8a, 0x72, 0xa3, 0x51, 0x5e, 0x32, 0x56, 0x67, -0xe3, 0x6e, 0xa3, 0xe1, 0xe9, 0x2d, 0x2e, 0x24, 0x86, 0x58, -0xca, 0x48, 0x84, 0x86, 0x52, 0x39, 0x06, 0xb2, 0x2e, 0x34, -0x8e, 0xbc, 0x57, 0xdd, 0x1f, 0xb4, 0x0f, 0xec, 0xc5, 0x37, -0xda, 0x2e, 0xf5, 0xbd, 0x06, 0x01, 0x25, 0xa8, 0x1b, 0xde, -0x31, 0x8d, 0xc9, 0x93, 0xc8, 0xc6, 0x39, 0x51, 0xd8, 0xf6, -0x15, 0xf2, 0xe5, 0xef, 0x84, 0x6e, 0x2d, 0xef, 0x3e, 0xcd, -0x34, 0x5e, 0x5c, 0x84, 0xfe, 0x07, 0xe8, 0x6b, 0xf1, 0x7c, -0xcb, 0x05, 0x89, 0xca, 0xea, 0xf2, 0xcd, 0x5e, 0x0f, 0x69, -0x74, 0xff, 0x00, 0x80, 0xcf, 0xe7, 0xcc, 0xdf, 0x2e, 0xc5, -0xe4, 0xb5, 0xdc, 0x66, 0xaf, 0x4d, 0xbf, 0x76, 0x5d, 0x3d, -0x1f, 0x66, 0x79, 0x54, 0x9a, 0x39, 0x3d, 0xaa, 0xb4, 0x9a, -0x3b, 0xf6, 0x53, 0x5e, 0xe7, 0x65, 0xf0, 0xe2, 0x49, 0x14, -0x1f, 0x28, 0x1f, 0xca, 0xae, 0x9f, 0x85, 0xce, 0x57, 0xfe, -0x3d, 0xf3, 0xf8, 0x8a, 0x28, 0xaa, 0x93, 0x57, 0x15, 0x05, -0x56, 0xa2, 0xb9, 0xf3, 0xc9, 0xd2, 0x64, 0x5f, 0xe1, 0x3f, -0x95, 0x30, 0xe9, 0xb2, 0x0f, 0x5f, 0xca, 0xbe, 0x82, 0x93, -0xe1, 0x71, 0xe7, 0xf7, 0x03, 0xf3, 0x15, 0x56, 0x4f, 0x85, -0xcd, 0xff, 0x00, 0x3c, 0x7f, 0x95, 0x75, 0x7b, 0x3a, 0xa7, -0x6f, 0xb3, 0xac, 0x78, 0x21, 0xd3, 0xe4, 0x1e, 0xb4, 0xdf, -0xb1, 0x49, 0xe9, 0x5e, 0xe7, 0x27, 0xc2, 0xc6, 0xff, 0x00, -0x9e, 0x27, 0xf2, 0xff, 0x00, 0xeb, 0x55, 0x69, 0x3e, 0x16, -0xb0, 0xff, 0x00, 0x96, 0x43, 0xf1, 0xa5, 0xcb, 0x53, 0xb0, -0x72, 0x56, 0xec, 0x78, 0x99, 0xb4, 0x90, 0x76, 0xa4, 0x36, -0xcf, 0xe9, 0x5e, 0xc9, 0x27, 0xc3, 0x07, 0xe7, 0x11, 0x8f, -0xcc, 0x55, 0x79, 0x3e, 0x17, 0xcb, 0xff, 0x00, 0x3c, 0xff, -0x00, 0x5a, 0x56, 0xa9, 0xd8, 0x5f, 0xbd, 0x5d, 0x0f, 0x22, -0xf2, 0x1f, 0xd2, 0x90, 0xc2, 0xe3, 0xf8, 0x4d, 0x7a, 0xb4, -0x9f, 0x0c, 0xa7, 0x1f, 0xc0, 0x6a, 0xbc, 0x9f, 0x0d, 0xae, -0x17, 0xa2, 0x7e, 0xb4, 0x5e, 0x7d, 0x85, 0x7a, 0x9f, 0xca, -0x79, 0x87, 0x96, 0xde, 0x86, 0x93, 0x63, 0x7a, 0x1a, 0xf4, -0x87, 0xf8, 0x73, 0x72, 0x33, 0xf2, 0x8f, 0xfb, 0xe8, 0x54, -0x0f, 0xf0, 0xf2, 0xe8, 0x0f, 0xb9, 0xfc, 0xa9, 0x5e, 0x5d, -0x83, 0x9e, 0x5d, 0x51, 0xe7, 0xc5, 0x48, 0xa0, 0x8c, 0x57, -0x76, 0xfe, 0x00, 0xbc, 0x03, 0xfd, 0x59, 0x35, 0x03, 0xf8, -0x0e, 0xf0, 0x7f, 0xcb, 0x2f, 0xd6, 0x8e, 0x67, 0xd8, 0x39, -0xdf, 0x54, 0x71, 0x54, 0x57, 0x5e, 0xfe, 0x0a, 0xba, 0x5f, -0xf9, 0x66, 0x2a, 0x06, 0xf0, 0x7d, 0xdf, 0xfc, 0xf2, 0xa3, -0x9b, 0xc8, 0x3d, 0xa7, 0x91, 0xcb, 0xd1, 0x5d, 0x23, 0x78, -0x4e, 0xe8, 0x75, 0x8a, 0xa2, 0x6f, 0x0b, 0xdc, 0x0f, 0xf9, -0x66, 0x7f, 0x3a, 0x39, 0xd0, 0x7b, 0x44, 0x60, 0x51, 0x5b, -0x6d, 0xe1, 0xbb, 0x81, 0xff, 0x00, 0x2c, 0xcd, 0x44, 0xda, -0x04, 0xeb, 0xd5, 0x0d, 0x1c, 0xe8, 0x7e, 0xd2, 0x26, 0x4d, -0x15, 0xa6, 0xda, 0x24, 0xc3, 0xf8, 0x4d, 0x31, 0xb4, 0x79, -0xc7, 0xf0, 0xb7, 0xe2, 0x29, 0xf3, 0x47, 0xb8, 0x7b, 0x48, -0xf7, 0x28, 0x67, 0xeb, 0x46, 0xe3, 0xeb, 0x57, 0x0e, 0x99, -0x32, 0xff, 0x00, 0x09, 0x1f, 0x85, 0x30, 0xe9, 0xf2, 0x8f, -0x4a, 0x39, 0xa3, 0xdc, 0x7e, 0xd2, 0x3d, 0xca, 0xdb, 0xcf, -0xa9, 0xa5, 0xf3, 0x1b, 0xd6, 0xa6, 0x36, 0x12, 0x8e, 0xd4, -0x86, 0xce, 0x41, 0xda, 0x9d, 0xd7, 0x70, 0xe6, 0x89, 0x17, -0x98, 0xde, 0xb4, 0xef, 0x39, 0xbd, 0x69, 0xdf, 0x65, 0x90, -0x76, 0xa4, 0xfb, 0x33, 0xfa, 0x51, 0x74, 0x3b, 0xc4, 0x4f, -0x3d, 0xbd, 0x69, 0x7e, 0xd2, 0xd4, 0x9e, 0x43, 0xfa, 0x52, -0x18, 0x9b, 0xd2, 0x8d, 0x02, 0xd1, 0x24, 0xfb, 0x5b, 0xd2, -0xfd, 0xad, 0xfd, 0xea, 0x1f, 0x2d, 0x87, 0x6a, 0x4d, 0x87, -0xd0, 0xd1, 0x64, 0x2e, 0x58, 0x96, 0x7e, 0xdc, 0xde, 0x9f, -0xad, 0x38, 0x6a, 0x0e, 0x3b, 0x9f, 0xce, 0xaa, 0x60, 0xfa, -0x1a, 0x4a, 0x5c, 0xa8, 0x39, 0x22, 0x5f, 0x5d, 0x4d, 0xc1, -0xfb, 0xed, 0xf9, 0x9a, 0x91, 0x75, 0x79, 0x17, 0xa4, 0x8c, -0x3f, 0x13, 0x59, 0x94, 0x53, 0xe5, 0x41, 0xc9, 0x13, 0x5d, -0x75, 0xd9, 0x81, 0xe2, 0x57, 0xfc, 0xea, 0x44, 0xf1, 0x05, -0xc2, 0xf4, 0x99, 0xbf, 0xef, 0xa3, 0x58, 0x94, 0x52, 0xe5, -0x42, 0xe4, 0x47, 0x42, 0x9e, 0x26, 0xba, 0x1f, 0xf2, 0xdd, -0x8f, 0xe3, 0x53, 0x27, 0x8b, 0x6e, 0xd4, 0xff, 0x00, 0xae, -0x63, 0xff, 0x00, 0x02, 0xae, 0x62, 0x8a, 0x76, 0x7d, 0xc7, -0xca, 0xfa, 0x33, 0xad, 0x4f, 0x1a, 0x5e, 0x2f, 0x49, 0x4f, -0xfd, 0xf4, 0x6a, 0xc2, 0x78, 0xee, 0xf5, 0x7f, 0xe5, 0xa3, -0x1f, 0xf8, 0x11, 0xae, 0x2f, 0x71, 0xf7, 0xa3, 0x71, 0xa6, -0x9c, 0x97, 0x52, 0xbd, 0xfe, 0x92, 0x67, 0x78, 0x9f, 0x10, -0xef, 0x53, 0xf8, 0x8f, 0xfd, 0xf5, 0x56, 0x23, 0xf8, 0x93, -0x78, 0xa7, 0xef, 0x37, 0xe0, 0xd5, 0xe7, 0x7b, 0xcf, 0xad, -0x2e, 0xf6, 0xf5, 0x35, 0x5c, 0xd5, 0x3a, 0x48, 0x6a, 0x55, -0x57, 0xda, 0x3d, 0x32, 0x3f, 0x8a, 0x37, 0x69, 0xdd, 0xff, -0x00, 0xef, 0xaa, 0xb7, 0x1f, 0xc5, 0x7b, 0x91, 0xd5, 0x9f, -0xfe, 0xfa, 0xaf, 0x28, 0xf3, 0x1b, 0xd6, 0x97, 0xce, 0x7f, -0x53, 0x4d, 0x55, 0xaa, 0xbe, 0xd1, 0x6a, 0xad, 0x75, 0xb4, -0x8f, 0x60, 0x8b, 0xe2, 0xec, 0xcb, 0xd5, 0xdf, 0xfe, 0xfa, -0x35, 0x6e, 0x3f, 0x8c, 0x32, 0x8e, 0xb2, 0x30, 0xff, 0x00, -0x81, 0x57, 0x8b, 0x0b, 0x87, 0x1d, 0xe8, 0x17, 0x2e, 0x3b, -0xd5, 0xac, 0x45, 0x75, 0xf6, 0x8b, 0x58, 0x9c, 0x4a, 0xfb, -0x47, 0xba, 0x45, 0xf1, 0x91, 0x87, 0x59, 0x1b, 0xfe, 0xfa, -0x35, 0x72, 0x2f, 0x8c, 0xc7, 0xfe, 0x7a, 0x1f, 0xfb, 0xe8, -0xd7, 0x80, 0x7d, 0xa9, 0xe9, 0xc2, 0xf1, 0xfd, 0x6a, 0xd6, -0x2f, 0x10, 0xba, 0x9a, 0x2c, 0x6e, 0x29, 0x7d, 0xa3, 0xe8, -0xa8, 0x7e, 0x33, 0x8e, 0xf2, 0x9f, 0xfb, 0xea, 0xad, 0xc5, -0xf1, 0x9d, 0x4f, 0xfc, 0xb5, 0x3f, 0xf7, 0xd5, 0x7c, 0xd8, -0xb7, 0xad, 0xeb, 0x4e, 0x1a, 0x83, 0x8f, 0xe2, 0x3f, 0x9d, -0x68, 0xb1, 0xd8, 0x85, 0xd4, 0xd1, 0x66, 0x58, 0xb5, 0xd4, -0xfa, 0x7e, 0x1f, 0x8c, 0xc8, 0x3f, 0xe5, 0xa9, 0xff, 0x00, -0xbe, 0x8d, 0x5b, 0x8b, 0xe3, 0x2a, 0x71, 0xfb, 0xd3, 0xff, -0x00, 0x7d, 0x1a, 0xf9, 0x5c, 0x6a, 0x4e, 0x3a, 0x3b, 0x7e, -0x66, 0x9e, 0xba, 0xbc, 0x83, 0xfe, 0x5a, 0x30, 0xfc, 0x4d, -0x68, 0xb3, 0x1c, 0x42, 0x35, 0x59, 0xb6, 0x2d, 0x1f, 0x59, -0x43, 0xf1, 0x91, 0x0f, 0xfc, 0xb6, 0x3f, 0xf7, 0xd5, 0x5c, -0x8b, 0xe3, 0x1c, 0x64, 0x0f, 0xdf, 0xb7, 0xfd, 0xf4, 0x6b, -0xe4, 0x55, 0xd6, 0xa6, 0x1f, 0xf2, 0xd5, 0xff, 0x00, 0x33, -0x52, 0x2f, 0x88, 0x6e, 0x07, 0x49, 0x9f, 0xf3, 0xad, 0x16, -0x6b, 0x88, 0x46, 0xcb, 0x3a, 0xc5, 0x23, 0xec, 0x48, 0x7e, -0x30, 0x46, 0x71, 0xfb, 0xf2, 0x3f, 0xe0, 0x46, 0xae, 0x45, -0xf1, 0x81, 0x0e, 0x3f, 0xd2, 0x0f, 0xe6, 0x6b, 0xe3, 0x44, -0xf1, 0x35, 0xd2, 0xff, 0x00, 0xcb, 0xc3, 0x7e, 0x75, 0x32, -0x78, 0xb6, 0xed, 0x7a, 0x4e, 0xdf, 0xad, 0x6a, 0xb3, 0x8a, -0xe8, 0xd9, 0x67, 0xd8, 0x95, 0xba, 0x3e, 0xd1, 0x8b, 0xe2, -0xea, 0x7f, 0xcf, 0x73, 0xff, 0x00, 0x7d, 0x1a, 0xb5, 0x17, -0xc5, 0xc4, 0x3f, 0xf2, 0xdf, 0xf5, 0xaf, 0x8a, 0x93, 0xc6, -0x97, 0xaa, 0x3f, 0xd7, 0xb7, 0xe6, 0x6a, 0x64, 0xf1, 0xdd, -0xea, 0xf4, 0x94, 0xfe, 0x66, 0xb6, 0x59, 0xdd, 0x55, 0xd0, -0xdd, 0x71, 0x15, 0x75, 0xba, 0x3e, 0xdb, 0x87, 0xe2, 0xc4, -0x67, 0xfe, 0x5a, 0x83, 0xf8, 0xd5, 0xb8, 0xfe, 0x2b, 0x44, -0x7f, 0xe5, 0xa0, 0xfc, 0xeb, 0xe2, 0x28, 0xfe, 0x21, 0xde, -0xaf, 0x59, 0x4f, 0xe6, 0x6a, 0xc2, 0x7c, 0x4a, 0xbc, 0x5f, -0xf9, 0x68, 0x7f, 0x33, 0x5a, 0xac, 0xf6, 0x7d, 0x8d, 0xe3, -0xc4, 0x95, 0x16, 0xe8, 0xfb, 0x7a, 0x3f, 0x8a, 0x50, 0x91, -0xcb, 0x03, 0xf8, 0xd4, 0xb2, 0x7c, 0x4e, 0x81, 0x87, 0xde, -0x1f, 0x9d, 0x7c, 0x4b, 0x1f, 0xc5, 0x0b, 0xc5, 0xeb, 0x21, -0xfc, 0xcd, 0x4c, 0x3e, 0x2b, 0xdc, 0xa7, 0xfc, 0xb4, 0x7f, -0xd6, 0xb7, 0x8e, 0x7a, 0xde, 0xe7, 0x44, 0x38, 0x95, 0xf5, -0x3e, 0xcb, 0x97, 0xe2, 0x15, 0xbc, 0xbf, 0xc7, 0x8f, 0xc6, -0xb3, 0xee, 0xbc, 0x63, 0x6f, 0x28, 0x38, 0x97, 0x9f, 0x73, -0x5f, 0x24, 0x27, 0xc6, 0x07, 0x4f, 0xbd, 0x23, 0x7e, 0x20, -0xd4, 0xe9, 0xf1, 0x85, 0x5c, 0xe3, 0xce, 0x39, 0xfc, 0x6b, -0xd3, 0xa5, 0x9b, 0xc2, 0x7b, 0x9e, 0xc5, 0x0c, 0xfa, 0x9c, -0xfe, 0x26, 0x7d, 0x1d, 0xa9, 0x78, 0x90, 0x30, 0x24, 0x3e, -0x7e, 0x86, 0xb9, 0x1d, 0x4f, 0x5d, 0x32, 0x12, 0x03, 0x57, -0x96, 0x41, 0xf1, 0x1b, 0xed, 0x7f, 0xf2, 0xd8, 0x8a, 0xd0, -0x8b, 0xc4, 0xd1, 0xce, 0x39, 0x7c, 0xd7, 0xb1, 0x4f, 0x15, -0x4e, 0xae, 0xcc, 0xf7, 0xe8, 0xe3, 0x69, 0x56, 0xd9, 0x9b, -0x5a, 0xa6, 0xa2, 0x4a, 0x30, 0xcf, 0x3f, 0x5a, 0xf0, 0x8f, -0x89, 0x77, 0x2d, 0x3c, 0xf2, 0x1e, 0xd5, 0xeb, 0x37, 0x57, -0x8b, 0x74, 0x0e, 0xd6, 0xc8, 0xaf, 0x24, 0xf1, 0xfa, 0x0d, -0xd2, 0x0e, 0xf5, 0x96, 0x39, 0xfe, 0xea, 0xe6, 0x19, 0x8c, -0x97, 0xb0, 0xba, 0x3c, 0x9a, 0xe1, 0x7a, 0xd6, 0x1e, 0xa0, -0x83, 0x06, 0xba, 0x1b, 0x84, 0xeb, 0x5a, 0xbf, 0x0c, 0xfc, -0x07, 0x73, 0xf1, 0x17, 0xc7, 0xba, 0x6e, 0x8d, 0x04, 0x65, -0xe2, 0x69, 0x04, 0xb7, 0x2c, 0x31, 0xf2, 0x42, 0xa4, 0x6e, -0x3c, 0xfd, 0x40, 0xfa, 0x91, 0x5f, 0x37, 0x86, 0xbc, 0xa4, -0x92, 0x3e, 0x4f, 0x09, 0x79, 0x4d, 0x45, 0x75, 0x3f, 0x40, -0x7f, 0x61, 0x6f, 0x03, 0x3f, 0x85, 0x7e, 0x14, 0x58, 0x49, -0x34, 0x66, 0x39, 0xe7, 0x43, 0x3b, 0x82, 0x39, 0xdd, 0x23, -0x16, 0xfd, 0x17, 0x68, 0xfc, 0x2b, 0xea, 0x7b, 0x65, 0xae, -0x3f, 0xe1, 0xf7, 0x87, 0x53, 0xc3, 0x7e, 0x1c, 0xb3, 0xb2, -0x54, 0x11, 0xb0, 0x50, 0xcc, 0xa3, 0xb1, 0xc7, 0x4f, 0xc0, -0x00, 0x3f, 0x0a, 0xed, 0x2d, 0x97, 0xa5, 0x7d, 0x9c, 0x57, -0x2a, 0x48, 0xfd, 0x02, 0x31, 0xe5, 0x8a, 0x46, 0x9d, 0xa2, -0xe0, 0x0a, 0xd9, 0xb4, 0x5e, 0x95, 0x97, 0x6a, 0xbc, 0x0a, -0xd9, 0xb3, 0x5e, 0x05, 0x51, 0x46, 0x8c, 0x03, 0x91, 0x5a, -0x30, 0xf6, 0xaa, 0x56, 0xeb, 0xcd, 0x5f, 0x89, 0x7a, 0x50, -0x05, 0xa8, 0x87, 0x02, 0xac, 0xa0, 0xa8, 0x23, 0x1c, 0x55, -0x85, 0x14, 0x01, 0x22, 0xd4, 0xa3, 0xa5, 0x46, 0xb5, 0x25, -0x00, 0x2a, 0xf5, 0xa7, 0x53, 0x56, 0x9d, 0x40, 0x05, 0x14, -0x51, 0x40, 0x19, 0xce, 0xb9, 0xed, 0x55, 0xa4, 0x4e, 0x6a, -0xe9, 0x5a, 0x89, 0xd2, 0x80, 0x33, 0x26, 0x88, 0x10, 0x72, -0x33, 0x9a, 0xf1, 0xff, 0x00, 0x89, 0xdf, 0x00, 0x74, 0xaf, -0x17, 0xab, 0xde, 0x69, 0xd1, 0x25, 0x8e, 0xa3, 0x9d, 0xe4, -0x00, 0x7c, 0xb9, 0x4f, 0xd3, 0x3f, 0x29, 0xf7, 0x1f, 0x95, -0x7b, 0x54, 0x91, 0xe2, 0xab, 0x49, 0x17, 0x5a, 0xce, 0xa5, -0x38, 0x55, 0x8b, 0x85, 0x45, 0x74, 0xfa, 0x33, 0x2a, 0xb4, -0xa9, 0xd7, 0x83, 0xa7, 0x56, 0x29, 0xc5, 0xee, 0x99, 0xf1, -0xcd, 0xc7, 0x82, 0xb5, 0x1f, 0x06, 0xc8, 0x57, 0x56, 0xd3, -0x2e, 0x6d, 0xe1, 0x5e, 0x3e, 0xd2, 0xa8, 0x5e, 0x2f, 0x4f, -0xbc, 0x38, 0xa9, 0xd6, 0xdb, 0x4e, 0xb9, 0xc2, 0xc5, 0x75, -0x0b, 0x13, 0xd0, 0x6f, 0x00, 0xfe, 0x55, 0xf5, 0x94, 0xf6, -0xcb, 0x22, 0x95, 0x65, 0x0c, 0xa7, 0x82, 0xac, 0x32, 0x0d, -0x72, 0xba, 0x9f, 0xc3, 0x3f, 0x0d, 0x6a, 0x1b, 0x8c, 0x9a, -0x25, 0x9a, 0xb1, 0xe4, 0xbc, 0x50, 0x84, 0x27, 0xf1, 0x15, -0xe0, 0xcf, 0x24, 0xc3, 0xff, 0x00, 0xcb, 0xa6, 0xe3, 0xf8, -0xfe, 0x67, 0xcc, 0xcf, 0x87, 0x30, 0x9f, 0xf2, 0xe5, 0xb8, -0x7e, 0x2b, 0xf1, 0x3e, 0x75, 0x93, 0xc3, 0xca, 0x79, 0x03, -0x23, 0xda, 0xa2, 0x6f, 0x0e, 0x8f, 0xee, 0x7e, 0x95, 0xed, -0x57, 0x3f, 0x03, 0x7c, 0x38, 0xc7, 0x30, 0xc7, 0x73, 0x6c, -0xde, 0xb1, 0xcc, 0x7f, 0x95, 0x67, 0xcd, 0xf0, 0x3a, 0xd0, -0x67, 0xc8, 0xd5, 0xf5, 0x18, 0x3e, 0x92, 0x66, 0xb9, 0x5e, -0x49, 0x3f, 0xb3, 0x53, 0xf0, 0x38, 0xa5, 0xc3, 0xb5, 0x3e, -0xcd, 0x5f, 0xc0, 0xf2, 0x07, 0xf0, 0xd8, 0xfe, 0xe7, 0xe9, -0x51, 0xb7, 0x86, 0x97, 0xfb, 0x9f, 0xa5, 0x7a, 0xbc, 0x9f, -0x04, 0x9d, 0x7e, 0xe7, 0x88, 0xaf, 0x87, 0xfb, 0xca, 0x1b, -0xfa, 0xd4, 0x0d, 0xf0, 0x62, 0xf9, 0x7e, 0xe7, 0x89, 0x66, -0xff, 0x00, 0x81, 0xda, 0x86, 0xff, 0x00, 0xd9, 0xeb, 0x37, -0x92, 0xd7, 0xfe, 0x75, 0xf8, 0x99, 0x3e, 0x1e, 0xc4, 0x74, -0x9a, 0xfc, 0x4f, 0x29, 0x6f, 0x0c, 0x2e, 0x7f, 0xd5, 0xfe, -0x95, 0x13, 0x78, 0x5d, 0x09, 0x3f, 0xbb, 0xfd, 0x2b, 0xd4, -0xdf, 0xe1, 0x16, 0xb3, 0x1f, 0xfa, 0xbd, 0x7a, 0x29, 0x7f, -0xeb, 0xa5, 0xb6, 0x3f, 0xf6, 0x63, 0x55, 0x65, 0xf8, 0x65, -0xe2, 0x98, 0xff, 0x00, 0xd5, 0xde, 0x69, 0xb2, 0x8f, 0xf6, -0xc3, 0xa9, 0xff, 0x00, 0xd0, 0x4d, 0x64, 0xf2, 0x7c, 0x4a, -0xd9, 0xa3, 0x19, 0x64, 0x38, 0xb5, 0xb3, 0x4f, 0xe7, 0xff, -0x00, 0x00, 0xf3, 0x06, 0xf0, 0xac, 0x67, 0x3f, 0xbb, 0xfd, -0x2a, 0x16, 0xf0, 0x8c, 0x5f, 0xf3, 0xce, 0xbd, 0x32, 0x4f, -0x01, 0x78, 0xb2, 0x1e, 0x7c, 0x8d, 0x3e, 0x7f, 0xf7, 0x25, -0x23, 0xf9, 0x81, 0x55, 0xe4, 0xf0, 0x9f, 0x8a, 0xe3, 0x1f, -0xf2, 0x02, 0x86, 0x4f, 0x74, 0xb9, 0x4f, 0xea, 0x6b, 0x17, -0x95, 0x62, 0xd7, 0xd9, 0x4f, 0xe6, 0x73, 0xbc, 0x93, 0x1c, -0xbe, 0xca, 0x7f, 0x34, 0x79, 0xa3, 0x78, 0x3e, 0x23, 0x9f, -0xdd, 0xfe, 0x95, 0x0b, 0xf8, 0x32, 0x23, 0xff, 0x00, 0x2c, -0xff, 0x00, 0x9d, 0x7a, 0x53, 0x78, 0x7b, 0xc4, 0xc9, 0x9d, -0xfe, 0x1b, 0x63, 0xfe, 0xed, 0xc2, 0x1f, 0xeb, 0x50, 0xbe, -0x95, 0xad, 0xc7, 0xfe, 0xb3, 0xc3, 0x77, 0x0b, 0xfe, 0xeb, -0xab, 0x54, 0x3c, 0xb3, 0x16, 0xbf, 0xe5, 0xdf, 0xe2, 0xbf, -0xcc, 0xc9, 0xe4, 0xf8, 0xe5, 0xff, 0x00, 0x2e, 0xbf, 0x15, -0xfe, 0x67, 0x9a, 0xb7, 0x82, 0x62, 0x3f, 0xf2, 0xcf, 0xf4, -0xaa, 0xef, 0xe0, 0x68, 0x4f, 0xf0, 0x1f, 0xca, 0xbd, 0x29, -0xe3, 0xb9, 0x88, 0x7e, 0xf7, 0x44, 0xbe, 0x4f, 0xa4, 0x61, -0xbf, 0xad, 0x42, 0xf7, 0x10, 0xaf, 0x0f, 0x61, 0x7d, 0x1f, -0xfb, 0xd6, 0xe7, 0xfc, 0x6b, 0x17, 0x80, 0xc4, 0xad, 0xe9, -0x33, 0x17, 0x95, 0xe2, 0xd6, 0xf4, 0x59, 0xe6, 0x92, 0x78, -0x0e, 0x3f, 0xee, 0x1f, 0xca, 0xab, 0xbf, 0x80, 0x90, 0xff, -0x00, 0x07, 0xe8, 0x7f, 0xc6, 0xbd, 0x41, 0xaf, 0x74, 0xe5, -0xfb, 0xe6, 0x58, 0xbf, 0xdf, 0x85, 0x87, 0xf4, 0xa8, 0xfe, -0xdb, 0xa4, 0x37, 0xfc, 0xbd, 0x2f, 0xfd, 0xf0, 0xdf, 0xe1, -0x58, 0xbc, 0x25, 0x65, 0xbd, 0x37, 0xf7, 0x33, 0x9d, 0xe0, -0x71, 0x0b, 0x7a, 0x32, 0xfb, 0x99, 0xe5, 0x8f, 0xe0, 0x04, -0x3f, 0xc1, 0xfa, 0x1a, 0xaf, 0x27, 0xc3, 0xc4, 0x3f, 0xc0, -0x7f, 0x2a, 0xf5, 0xbf, 0x37, 0x4b, 0x7e, 0x97, 0x51, 0x7e, -0x23, 0x14, 0xbe, 0x4e, 0x9e, 0xff, 0x00, 0x76, 0xe2, 0x13, -0xf8, 0xd6, 0x6f, 0x0d, 0x35, 0xbc, 0x1f, 0xdc, 0xcc, 0x9e, -0x12, 0xa2, 0xde, 0x9b, 0xfb, 0x99, 0xe3, 0x52, 0x7c, 0x39, -0x5f, 0xf9, 0xe7, 0x9f, 0xa8, 0xaa, 0xcf, 0xf0, 0xe4, 0x7f, -0xcf, 0x31, 0xf9, 0x57, 0xb8, 0xff, 0x00, 0x66, 0x5b, 0x49, -0xf7, 0x65, 0x88, 0xff, 0x00, 0xc0, 0x85, 0x27, 0xf6, 0x24, -0x67, 0xa1, 0x43, 0xf4, 0x20, 0xd6, 0x4e, 0x92, 0x5b, 0xa3, -0x07, 0x46, 0x2b, 0x78, 0xb3, 0xc1, 0x9f, 0xe1, 0xca, 0x67, -0xfd, 0x5f, 0xe8, 0x6a, 0xb3, 0xfc, 0x37, 0x43, 0xff, 0x00, -0x2c, 0x8f, 0xe0, 0x2b, 0xe8, 0x26, 0xf0, 0xf0, 0x3d, 0x14, -0x1a, 0x89, 0xbc, 0x38, 0x3f, 0xb8, 0x0f, 0xe1, 0x59, 0xfb, -0x38, 0x19, 0x7b, 0x2a, 0x67, 0xcf, 0x52, 0x7c, 0x37, 0x1c, -0xe2, 0x16, 0xfc, 0xaa, 0xac, 0x9f, 0x0d, 0xbf, 0xe9, 0x89, -0xfc, 0x8d, 0x7d, 0x14, 0xfe, 0x1b, 0x1f, 0xf3, 0xcc, 0x7e, -0x42, 0xa2, 0x6f, 0x0d, 0x2e, 0x7f, 0xd5, 0x8f, 0xca, 0xa7, -0xd9, 0x41, 0x8b, 0xd8, 0x53, 0x67, 0xce, 0x12, 0x7c, 0x37, -0x1f, 0xf3, 0xcc, 0x8f, 0xc2, 0xab, 0x49, 0xf0, 0xe0, 0x7f, -0x70, 0xff, 0x00, 0xdf, 0x35, 0xf4, 0x9b, 0x78, 0x65, 0x7f, -0xb8, 0x3f, 0x2a, 0x89, 0xbc, 0x2e, 0xa7, 0x39, 0x41, 0xf9, -0x52, 0xf6, 0x10, 0x27, 0xea, 0xd4, 0xcf, 0x9a, 0x64, 0xf8, -0x6e, 0x7b, 0x21, 0xff, 0x00, 0xbe, 0x6a, 0xb3, 0xfc, 0x37, -0x6f, 0xee, 0x1f, 0xca, 0xbe, 0x98, 0x7f, 0x09, 0xc6, 0x7f, -0xe5, 0x92, 0xfe, 0x55, 0x0b, 0xf8, 0x46, 0x2c, 0x7f, 0xaa, -0x5f, 0xca, 0x97, 0xd5, 0xe0, 0x4f, 0xd5, 0x60, 0x7c, 0xca, -0xff, 0x00, 0x0f, 0x18, 0x7f, 0x09, 0xfc, 0xaa, 0xbc, 0x9f, -0x0f, 0xe4, 0xec, 0x0f, 0xe5, 0x5f, 0x4e, 0xbf, 0x84, 0x23, -0x3f, 0xc0, 0x3f, 0x2a, 0x85, 0xfc, 0x1b, 0x19, 0x1c, 0xa0, -0xfc, 0xaa, 0x7e, 0xad, 0x1e, 0x8c, 0x9f, 0xaa, 0x47, 0xb9, -0xf3, 0x03, 0xf8, 0x06, 0x61, 0xfc, 0x2d, 0xf9, 0x54, 0x0f, -0xe0, 0x49, 0xc7, 0xf0, 0x37, 0xfd, 0xf3, 0x5f, 0x4f, 0x3f, -0x82, 0x61, 0x3f, 0xf2, 0xcc, 0x7e, 0x55, 0x5d, 0xfc, 0x0b, -0x17, 0x68, 0xd7, 0xf2, 0xa5, 0xf5, 0x6f, 0x31, 0x3c, 0x1f, -0x99, 0xf3, 0x0b, 0xf8, 0x26, 0x71, 0xfc, 0x27, 0xfe, 0xf9, -0xa8, 0x5f, 0xc1, 0xd3, 0x8f, 0xe0, 0x3f, 0xf7, 0xcd, 0x7d, -0x3c, 0xfe, 0x04, 0x4f, 0xee, 0x8f, 0xca, 0xa0, 0x93, 0xc0, -0x4a, 0x7f, 0x84, 0x7e, 0x42, 0x97, 0xd5, 0x9f, 0x72, 0x7e, -0xa8, 0xfb, 0x9f, 0x31, 0x3f, 0x84, 0xa7, 0x1f, 0xf2, 0xcc, -0xff, 0x00, 0xdf, 0x35, 0x0b, 0x78, 0x5e, 0x61, 0xff, 0x00, -0x2c, 0xcf, 0xe2, 0x2b, 0xe9, 0xa9, 0x3e, 0x1f, 0xa3, 0x7f, -0x00, 0xfc, 0xaa, 0xbb, 0xfc, 0x3c, 0x5e, 0x7f, 0x76, 0xbf, -0xf7, 0xcd, 0x2f, 0xab, 0xcf, 0xa3, 0x17, 0xd5, 0x67, 0xdc, -0xf9, 0xa1, 0xbc, 0x37, 0x38, 0xff, 0x00, 0x96, 0x44, 0xfe, -0x15, 0x13, 0x78, 0x7a, 0x61, 0xff, 0x00, 0x2c, 0xdb, 0xf2, -0xaf, 0xa5, 0x24, 0xf8, 0x77, 0xff, 0x00, 0x4c, 0xd7, 0xf2, -0xaa, 0xd2, 0xfc, 0x3a, 0x07, 0xfe, 0x59, 0x2f, 0xfd, 0xf2, -0x29, 0x7b, 0x09, 0xf7, 0x27, 0xea, 0xf5, 0x57, 0x53, 0xe6, -0xf3, 0xa1, 0xca, 0x3f, 0x80, 0xfe, 0x54, 0xd3, 0xa3, 0x49, -0x9f, 0xb8, 0x7f, 0x2a, 0xfa, 0x29, 0xfe, 0x1c, 0x8f, 0xf9, -0xe4, 0x3f, 0x21, 0x55, 0x9f, 0xe1, 0xc7, 0xfd, 0x32, 0x1f, -0x95, 0x2f, 0x65, 0x50, 0x5e, 0xc6, 0xaf, 0x73, 0xe7, 0xa3, -0xa4, 0x4a, 0x3f, 0x85, 0xbf, 0x2a, 0x63, 0x69, 0xb2, 0x0e, -0xc7, 0xf2, 0xaf, 0x7f, 0x93, 0xe1, 0xb7, 0x5f, 0xdd, 0x2f, -0xe0, 0x2a, 0xac, 0x9f, 0x0d, 0xc0, 0xff, 0x00, 0x96, 0x5f, -0xa0, 0xa5, 0xec, 0xea, 0x0b, 0xd9, 0xd6, 0x47, 0x83, 0x9b, -0x07, 0x1d, 0x69, 0xa6, 0xc6, 0x41, 0xdb, 0xf4, 0xaf, 0x71, -0x93, 0xe1, 0xcf, 0xfd, 0x33, 0xfd, 0x07, 0xf8, 0xd5, 0x69, -0x3e, 0x1b, 0xe7, 0xfe, 0x59, 0x8f, 0xfb, 0xe6, 0x97, 0x2d, -0x4e, 0xc2, 0xe5, 0xad, 0xd8, 0xf1, 0x63, 0x67, 0x20, 0xed, -0x4d, 0xfb, 0x33, 0xfa, 0x57, 0xb1, 0x3f, 0xc3, 0x62, 0x33, -0xf2, 0x01, 0xf8, 0x55, 0x67, 0xf8, 0x74, 0xc3, 0xf8, 0x3f, -0x4a, 0x56, 0x9f, 0x61, 0x7e, 0xf7, 0xb1, 0xe4, 0xbf, 0x67, -0x7f, 0x4a, 0x43, 0x0b, 0x8f, 0xe1, 0x35, 0xea, 0x6f, 0xf0, -0xee, 0x4e, 0xc9, 0xfa, 0x55, 0x77, 0xf8, 0x7b, 0x2f, 0xf7, -0x29, 0x5e, 0x7d, 0x82, 0xf3, 0xec, 0x79, 0x9f, 0x94, 0xc3, -0xf8, 0x4d, 0x1b, 0x1b, 0xd0, 0xd7, 0xa2, 0xc9, 0xe0, 0x09, -0x80, 0xfb, 0xa6, 0xab, 0xc9, 0xe0, 0x5b, 0x8f, 0xee, 0x1a, -0x39, 0x9f, 0x60, 0xe7, 0x92, 0xfb, 0x27, 0x03, 0xb0, 0xfa, -0x1a, 0x31, 0x5d, 0xbb, 0xf8, 0x22, 0xe0, 0x1f, 0xb8, 0x7f, -0x2a, 0x85, 0xfc, 0x1b, 0x70, 0x3f, 0x80, 0xfe, 0x54, 0xb9, -0xdf, 0x61, 0x7b, 0x47, 0xd5, 0x1c, 0x6e, 0x31, 0x45, 0x75, -0x8f, 0xe1, 0x1b, 0x81, 0xff, 0x00, 0x2c, 0xcd, 0x42, 0xde, -0x15, 0x9c, 0x1f, 0xf5, 0x74, 0xf9, 0xfc, 0x83, 0xda, 0x79, -0x1c, 0xcd, 0x15, 0xd0, 0x37, 0x86, 0xa7, 0x1f, 0xf2, 0xca, -0xa3, 0x3e, 0x1f, 0x98, 0x1f, 0xf5, 0x67, 0xf0, 0xa3, 0x9d, -0x0f, 0xda, 0xa3, 0x0e, 0x8a, 0xd8, 0x6d, 0x0a, 0x61, 0xff, -0x00, 0x2c, 0xc8, 0xa8, 0xce, 0x8d, 0x28, 0xfe, 0x03, 0x47, -0x3c, 0x43, 0xda, 0xc4, 0xcb, 0xa2, 0xb4, 0x4e, 0x93, 0x20, -0xfe, 0x13, 0x4c, 0x3a, 0x64, 0x83, 0xb7, 0xe7, 0x4f, 0x9e, -0x23, 0xf6, 0x91, 0xee, 0x51, 0xa5, 0xdc, 0x6a, 0xd9, 0xd3, -0xa4, 0xf4, 0x34, 0xc3, 0x60, 0xe3, 0xff, 0x00, 0xd5, 0x4f, -0x9a, 0x3d, 0xc7, 0xcf, 0x1e, 0xe5, 0x7d, 0xe6, 0x99, 0x23, -0x1c, 0x75, 0xab, 0x3f, 0x63, 0x7a, 0x63, 0xda, 0x3e, 0x29, -0xa9, 0x22, 0x94, 0xa2, 0x53, 0x3c, 0xd3, 0x42, 0x63, 0xb9, -0xab, 0x62, 0xc9, 0xbd, 0xc5, 0x1f, 0x66, 0x3d, 0x2b, 0x4e, -0x64, 0x69, 0xce, 0xba, 0x10, 0xc7, 0x73, 0x35, 0xb9, 0xca, -0xb1, 0x15, 0xad, 0xa7, 0x78, 0x9e, 0x58, 0x5c, 0x09, 0x1a, -0xb2, 0x64, 0x88, 0x8e, 0x31, 0x50, 0x34, 0x44, 0x8f, 0x6a, -0xeb, 0xa5, 0x5e, 0x50, 0x77, 0x8b, 0x3b, 0x28, 0xe2, 0x67, -0x49, 0xa7, 0x16, 0x7a, 0x2d, 0xa7, 0x89, 0x56, 0x48, 0xb2, -0x1f, 0x9f, 0xad, 0x72, 0x5e, 0x2f, 0xbe, 0x17, 0x6e, 0xc4, -0x9e, 0x48, 0xac, 0x88, 0x6e, 0x24, 0xb5, 0xe8, 0x4e, 0xdf, -0x4a, 0x8b, 0x50, 0x91, 0xee, 0x30, 0xdc, 0x91, 0x5e, 0xd7, -0xd7, 0x5d, 0x5a, 0x7c, 0xad, 0x9f, 0x47, 0xfd, 0xa2, 0xeb, -0x52, 0xe4, 0x93, 0x39, 0x8b, 0x90, 0x79, 0x35, 0xf7, 0x4f, -0xec, 0x43, 0xf0, 0x75, 0xb4, 0x6f, 0x0e, 0xff, 0x00, 0xc2, -0x41, 0xa9, 0x5a, 0x18, 0xae, 0x6e, 0xdf, 0xcd, 0x02, 0x45, -0xc3, 0x14, 0xc7, 0xee, 0xc7, 0xfe, 0xcd, 0xf8, 0x8a, 0xf1, -0xcf, 0xd9, 0xef, 0xf6, 0x7a, 0xbb, 0xf1, 0xd6, 0xb3, 0x06, -0xa7, 0xaa, 0x5a, 0xe3, 0x4c, 0x42, 0x1e, 0x18, 0x65, 0x00, -0x89, 0xbf, 0xda, 0x23, 0xb2, 0x8f, 0x7e, 0xb5, 0xfa, 0x17, -0xe1, 0xad, 0x12, 0x1d, 0x0f, 0x4c, 0x86, 0xce, 0x01, 0xf2, -0xa0, 0xe4, 0x81, 0x8d, 0xc7, 0xb9, 0xaf, 0x6f, 0x2c, 0xc3, -0x4a, 0x2b, 0xdb, 0x4f, 0xe4, 0x7d, 0x16, 0x51, 0x84, 0x94, -0x57, 0xb7, 0x9a, 0xdf, 0x6f, 0xf3, 0x37, 0x2d, 0x13, 0x1d, -0xab, 0x5e, 0xd6, 0x31, 0x91, 0x59, 0xf6, 0xd1, 0xd6, 0xbd, -0xac, 0x75, 0xef, 0x9f, 0x4e, 0x68, 0xdb, 0x20, 0xe2, 0xb6, -0x2d, 0x53, 0x00, 0x56, 0x6d, 0xb2, 0x72, 0x2b, 0x62, 0xd9, -0x7e, 0x51, 0x40, 0x17, 0x6d, 0x97, 0x15, 0x7e, 0x21, 0x55, -0x60, 0x15, 0x76, 0x11, 0x40, 0x13, 0xc6, 0xb8, 0xa9, 0xd7, -0xb5, 0x46, 0x8a, 0x6a, 0x60, 0x31, 0x40, 0x0f, 0x4e, 0xd4, -0xfa, 0x45, 0xa5, 0xa0, 0x07, 0x0e, 0x94, 0xb4, 0x51, 0x40, -0x05, 0x14, 0x51, 0x40, 0x15, 0xca, 0xf1, 0x51, 0x32, 0x55, -0x82, 0xb4, 0xd2, 0xb9, 0x34, 0x01, 0x4d, 0xd3, 0x9a, 0x85, -0xe2, 0xe0, 0xd5, 0xe6, 0x5a, 0x8d, 0xa3, 0xa0, 0x0c, 0xe7, -0x87, 0xda, 0xab, 0xc9, 0x07, 0xb5, 0x6a, 0x18, 0xb3, 0x50, -0xbc, 0x34, 0x01, 0x94, 0xf0, 0x7b, 0x54, 0x0d, 0x6d, 0x9e, -0xd5, 0xae, 0xd0, 0x66, 0xa3, 0x6b, 0x7e, 0x28, 0x03, 0x19, -0xed, 0xb3, 0xd0, 0x54, 0x4d, 0x6b, 0xed, 0x5b, 0x26, 0xdb, -0x8f, 0xfe, 0xb5, 0x46, 0xd6, 0xd4, 0x01, 0x8d, 0xf6, 0x51, -0xe9, 0x51, 0xb5, 0xaf, 0x6a, 0xdb, 0xfb, 0x2e, 0x7f, 0xfd, -0x55, 0x19, 0xb4, 0xe6, 0x80, 0x31, 0x0d, 0xa6, 0x29, 0x86, -0xcf, 0x27, 0xa0, 0xad, 0xc3, 0x6b, 0xc5, 0x30, 0xda, 0x50, -0x06, 0x1b, 0xd9, 0xf1, 0xd2, 0xa3, 0x6b, 0x4f, 0x6a, 0xdd, -0x36, 0xbc, 0xd4, 0x6d, 0x69, 0xc5, 0x00, 0x61, 0x1b, 0x21, -0xfd, 0xda, 0x8e, 0x4b, 0x25, 0x63, 0x82, 0x80, 0xfd, 0x45, -0x6f, 0xfd, 0x92, 0x98, 0xd6, 0x78, 0xa0, 0x0e, 0x6e, 0x4d, -0x1a, 0xde, 0x4f, 0xbd, 0x6f, 0x1b, 0x7d, 0x50, 0x1a, 0xac, -0xfe, 0x1c, 0xb0, 0x7f, 0xbd, 0x61, 0x6e, 0xdf, 0x58, 0x54, -0xff, 0x00, 0x4a, 0xea, 0x8d, 0xa0, 0x3f, 0xfe, 0xaa, 0x63, -0x59, 0x0c, 0x7f, 0xf5, 0xa8, 0x03, 0x91, 0x7f, 0x07, 0xe9, -0x0f, 0xf7, 0xb4, 0xab, 0x36, 0xfa, 0xdb, 0xa1, 0xfe, 0x95, -0x52, 0x6f, 0x01, 0x68, 0x52, 0xf0, 0x74, 0x7b, 0x31, 0xfe, -0xec, 0x21, 0x7f, 0x90, 0xae, 0xdf, 0xec, 0x94, 0xd6, 0xb2, -0xcf, 0xff, 0x00, 0xaa, 0x80, 0x3c, 0xf6, 0x6f, 0x85, 0xde, -0x1d, 0x97, 0x96, 0xd3, 0x10, 0x7f, 0xb9, 0x23, 0xaf, 0xf2, -0x35, 0x03, 0x7c, 0x28, 0xd0, 0x3f, 0x86, 0xce, 0x54, 0xff, -0x00, 0x76, 0xe2, 0x4f, 0xfe, 0x2a, 0xbd, 0x1c, 0xd8, 0x8f, -0xf2, 0x29, 0x8d, 0x67, 0xc7, 0x1c, 0x52, 0x69, 0x3d, 0xc4, -0xd2, 0x7b, 0x9e, 0x6c, 0x7e, 0x15, 0x68, 0xf8, 0xc2, 0xfd, -0xa9, 0x3f, 0xdd, 0xb8, 0x7f, 0xf1, 0xaa, 0xf3, 0x7c, 0x2a, -0xb2, 0x3f, 0xea, 0xaf, 0x2f, 0xa2, 0xfa, 0x4c, 0x4d, 0x7a, -0x77, 0xd8, 0x69, 0x86, 0xcb, 0x3d, 0x05, 0x43, 0xa7, 0x07, -0xbc, 0x51, 0x9b, 0xa5, 0x4d, 0xef, 0x15, 0xf7, 0x1e, 0x55, -0x27, 0xc2, 0x92, 0x39, 0x8f, 0x59, 0xbe, 0x4f, 0x62, 0xd9, -0x15, 0x5d, 0xbe, 0x19, 0xea, 0x28, 0x7f, 0x75, 0xad, 0x39, -0xff, 0x00, 0xae, 0x91, 0x83, 0xfd, 0x2b, 0xd6, 0x5a, 0xca, -0x99, 0xf6, 0x1a, 0x87, 0x87, 0xa3, 0x2d, 0xe0, 0xbe, 0xe4, -0x67, 0x2c, 0x2d, 0x09, 0x6f, 0x4d, 0x7d, 0xc8, 0xf2, 0x39, -0x3e, 0x1e, 0x6b, 0xca, 0x7e, 0x5d, 0x5e, 0xdd, 0x87, 0xfb, -0x70, 0x0f, 0xf0, 0xa8, 0x5f, 0xc0, 0x5e, 0x24, 0x4f, 0xbb, -0x7f, 0x60, 0xdf, 0xef, 0x46, 0x47, 0xfe, 0xcb, 0x5e, 0xbc, -0xd6, 0x46, 0x9a, 0xd6, 0x5c, 0x7f, 0xf5, 0xab, 0x27, 0x83, -0xc3, 0x3f, 0xf9, 0x76, 0xbe, 0xe4, 0x62, 0xf2, 0xfc, 0x23, -0xde, 0x94, 0x7e, 0xe4, 0x78, 0xf3, 0x78, 0x2f, 0xc4, 0xc9, -0xfc, 0x5a, 0x74, 0xbf, 0x42, 0xc3, 0xf9, 0xad, 0x42, 0xfe, -0x1a, 0xf1, 0x2c, 0x59, 0xff, 0x00, 0x89, 0x6d, 0xac, 0xd8, -0xfe, 0xec, 0xc0, 0x7f, 0x3c, 0x57, 0xb1, 0x9b, 0x2f, 0xf3, -0x8a, 0x4f, 0xb0, 0xfa, 0x0f, 0xd2, 0xb2, 0x79, 0x7e, 0x15, -0xef, 0x4d, 0x18, 0xcb, 0x2a, 0xc1, 0x4b, 0x7a, 0x48, 0xf1, -0x76, 0xd1, 0xf5, 0xf8, 0xf3, 0xbf, 0x40, 0xe9, 0xfd, 0xc9, -0x50, 0xff, 0x00, 0x5a, 0x81, 0xe0, 0xd4, 0x63, 0xff, 0x00, -0x59, 0xe1, 0xfb, 0xc3, 0x8f, 0xf9, 0xe6, 0x9b, 0xbf, 0x95, -0x7b, 0x5b, 0x58, 0xff, 0x00, 0x9c, 0x53, 0x7e, 0xc3, 0xed, -0xfa, 0x56, 0x4f, 0x2a, 0xc2, 0x3f, 0xb3, 0xf8, 0xb3, 0x07, -0x92, 0xe0, 0x5f, 0xd8, 0xfc, 0x59, 0xe2, 0x0d, 0x24, 0xc3, -0xef, 0x68, 0x5a, 0x92, 0xff, 0x00, 0xdb, 0xb9, 0xa8, 0xda, -0xea, 0x31, 0xf7, 0xb4, 0xbd, 0x41, 0x3e, 0xb0, 0x7f, 0xf5, -0xeb, 0xdc, 0x5a, 0xcb, 0x02, 0xa3, 0x36, 0x5e, 0xd5, 0x9b, -0xca, 0x30, 0xaf, 0xa3, 0xfb, 0xcc, 0x9e, 0x43, 0x82, 0x7d, -0x1f, 0xde, 0x78, 0x79, 0xbc, 0xb2, 0x1f, 0x7e, 0x0b, 0x98, -0xff, 0x00, 0xde, 0x84, 0xd2, 0x1b, 0xdd, 0x24, 0xf0, 0xd3, -0x14, 0xff, 0x00, 0x7e, 0x36, 0x1f, 0xd2, 0xbd, 0xae, 0x4d, -0x32, 0x37, 0x3f, 0x34, 0x6a, 0x7e, 0xa2, 0xab, 0xc9, 0xa1, -0xda, 0xb8, 0xf9, 0xad, 0xa2, 0x23, 0xde, 0x31, 0x59, 0x3c, -0x97, 0x0e, 0xf6, 0x6d, 0x7c, 0xff, 0x00, 0xe0, 0x18, 0xbe, -0x1f, 0xc2, 0x3d, 0x9c, 0x97, 0xcf, 0xfe, 0x01, 0xe3, 0xaa, -0xfa, 0x5b, 0x9e, 0x2e, 0xa1, 0x1f, 0x53, 0x8a, 0x71, 0xb7, -0xd3, 0xdb, 0xa5, 0xd5, 0xb1, 0xff, 0x00, 0xb6, 0xab, 0xfe, -0x35, 0xea, 0xb2, 0xf8, 0x4f, 0x4d, 0x9b, 0x3b, 0xec, 0xa1, -0x39, 0xff, 0x00, 0x62, 0xa9, 0x49, 0xe0, 0x4d, 0x16, 0x43, -0x96, 0xd3, 0xa1, 0x27, 0xe9, 0x59, 0x3c, 0x92, 0x9f, 0x49, -0xbf, 0xc0, 0xc1, 0xf0, 0xed, 0x2f, 0xb3, 0x51, 0xfe, 0x07, -0x9b, 0xff, 0x00, 0x67, 0xd9, 0xb7, 0x4b, 0x88, 0x0f, 0xd1, -0xc5, 0x34, 0xe8, 0xf0, 0x37, 0x46, 0x8c, 0xfd, 0x1a, 0xbd, -0x11, 0xfe, 0x1c, 0xe8, 0x4f, 0xd7, 0x4f, 0x4f, 0xc1, 0x98, -0x7f, 0x5a, 0x81, 0xfe, 0x1a, 0x68, 0x4d, 0xca, 0xd9, 0x94, -0xff, 0x00, 0x76, 0x57, 0xff, 0x00, 0xe2, 0xaa, 0x1e, 0x48, -0xba, 0x54, 0xfc, 0x0c, 0xdf, 0x0e, 0x47, 0xa5, 0x57, 0xf7, -0x7f, 0xc1, 0x38, 0x1f, 0xec, 0x04, 0x6e, 0x81, 0x4f, 0xe3, -0x4d, 0x6f, 0x0e, 0x0f, 0xf9, 0xe6, 0x3f, 0x2a, 0xee, 0x1f, -0xe1, 0x86, 0x98, 0xdf, 0x71, 0xee, 0xa2, 0xff, 0x00, 0x76, -0x63, 0xfd, 0x6a, 0x06, 0xf8, 0x63, 0x6c, 0xbf, 0xea, 0xf5, -0x2b, 0xf5, 0xfa, 0xba, 0x9f, 0xe9, 0x59, 0x3c, 0x92, 0x6b, -0x6a, 0x9f, 0x81, 0x8b, 0xe1, 0xda, 0x9d, 0x2a, 0xfe, 0x07, -0x12, 0x7c, 0x34, 0xbf, 0xf3, 0xcc, 0x7e, 0x55, 0x13, 0x78, -0x69, 0x7f, 0xe7, 0x98, 0xfc, 0xab, 0xb7, 0x6f, 0x87, 0x33, -0xaf, 0xfa, 0xad, 0x6a, 0xe1, 0x7f, 0xde, 0x8c, 0x1f, 0xea, -0x2a, 0x3f, 0xf8, 0x57, 0xfa, 0x98, 0xe9, 0xaf, 0xb7, 0xe3, -0x6a, 0x0f, 0xfe, 0xcd, 0x59, 0x7f, 0x62, 0xd7, 0xe9, 0x35, -0xf8, 0x98, 0xbe, 0x1e, 0xc4, 0xf4, 0x9a, 0xfc, 0x4e, 0x1d, -0xbc, 0x30, 0x87, 0xfe, 0x59, 0x0f, 0xca, 0xa1, 0x7f, 0x0b, -0x46, 0x47, 0xfa, 0xa1, 0xf9, 0x57, 0x7e, 0x3c, 0x0b, 0xaa, -0x0f, 0xf9, 0x8e, 0xe7, 0xeb, 0x66, 0xbf, 0xfc, 0x55, 0x29, -0xf0, 0x66, 0xa6, 0xbf, 0xf3, 0x15, 0x89, 0xff, 0x00, 0xde, -0xb5, 0xc7, 0xf2, 0x6a, 0xcd, 0xe4, 0xf8, 0x95, 0xd5, 0x7e, -0x3f, 0xe4, 0x64, 0xf2, 0x0c, 0x5a, 0xd9, 0xc5, 0xfc, 0xdf, -0xf9, 0x1e, 0x74, 0xde, 0x14, 0x88, 0xff, 0x00, 0xcb, 0x11, -0xf9, 0x54, 0x2f, 0xe1, 0x28, 0x8f, 0xfc, 0xb1, 0x51, 0xf8, -0x57, 0xa5, 0x7f, 0xc2, 0x29, 0xaa, 0x28, 0xff, 0x00, 0x8f, -0x9b, 0x37, 0xff, 0x00, 0x7a, 0x16, 0x1f, 0xfb, 0x35, 0x46, -0xfe, 0x1c, 0xd5, 0x13, 0xfe, 0x59, 0xda, 0xc9, 0xf4, 0x2c, -0xbf, 0xe3, 0x59, 0x3c, 0xab, 0x16, 0xbe, 0xca, 0x7f, 0x33, -0x09, 0x64, 0x98, 0xe5, 0xf6, 0x53, 0xf9, 0x9e, 0x66, 0xfe, -0x0e, 0x84, 0xff, 0x00, 0xcb, 0x21, 0xf9, 0x54, 0x12, 0x78, -0x2e, 0x03, 0xff, 0x00, 0x2c, 0x85, 0x7a, 0x6b, 0xe8, 0xba, -0xa2, 0x8e, 0x34, 0xe8, 0x5c, 0xfb, 0x5c, 0xe3, 0xff, 0x00, -0x65, 0xaa, 0xb2, 0xe9, 0xda, 0xa2, 0x7f, 0xcc, 0x1c, 0x37, -0xfb, 0xb7, 0x19, 0xff, 0x00, 0xd9, 0x6b, 0x3f, 0xec, 0xcc, -0x5f, 0xfc, 0xfb, 0xfc, 0x57, 0xf9, 0x99, 0x7f, 0x63, 0xe3, -0xbf, 0xe7, 0xd7, 0xe2, 0xbf, 0xcc, 0xf3, 0x57, 0xf0, 0x44, -0x3f, 0xf3, 0xc8, 0x7e, 0x55, 0x0b, 0xf8, 0x1e, 0x13, 0xff, -0x00, 0x2c, 0x97, 0xf2, 0xaf, 0x46, 0x78, 0x35, 0x35, 0x38, -0x3a, 0x14, 0xa7, 0xfd, 0xd9, 0x41, 0xfe, 0x95, 0x0b, 0x0b, -0xd5, 0x3f, 0x36, 0x87, 0x76, 0x3e, 0x8b, 0x9f, 0xe9, 0x53, -0xfd, 0x99, 0x8a, 0xff, 0x00, 0x9f, 0x7f, 0x8a, 0xff, 0x00, -0x32, 0x5e, 0x4f, 0x8d, 0x5f, 0xf2, 0xeb, 0xf1, 0x5f, 0xe6, -0x79, 0xc3, 0xf8, 0x12, 0x23, 0xff, 0x00, 0x2c, 0xc7, 0xe5, -0x55, 0xa4, 0xf0, 0x04, 0x47, 0xfe, 0x59, 0x0a, 0xf4, 0xe2, -0xd2, 0x0f, 0xbf, 0xa4, 0x5f, 0x27, 0xd6, 0x16, 0xa8, 0x9a, -0xf2, 0xd1, 0x3f, 0xd6, 0xdb, 0xdc, 0x45, 0xfe, 0xf4, 0x46, -0xb3, 0x79, 0x7e, 0x21, 0x6f, 0x49, 0x99, 0x4b, 0x2a, 0xc5, -0x2d, 0xe8, 0xb3, 0xcb, 0xe4, 0xf8, 0x7f, 0x1f, 0xfc, 0xf2, -0x5f, 0xc6, 0xab, 0xbf, 0xc3, 0xd4, 0x3f, 0xf2, 0xc5, 0x7f, -0x2a, 0xf5, 0x51, 0x7f, 0xa4, 0xb9, 0xe6, 0x56, 0x5f, 0xf7, -0x93, 0x14, 0xf1, 0x26, 0x94, 0xfc, 0x7d, 0xad, 0x17, 0xea, -0x31, 0x58, 0x3c, 0x1d, 0x55, 0xbd, 0x37, 0xf7, 0x1c, 0xd2, -0xc0, 0x56, 0x8f, 0xc5, 0x49, 0xfd, 0xcc, 0xf1, 0xf7, 0xf8, -0x74, 0xbf, 0xf3, 0xc1, 0x7f, 0x23, 0x55, 0x9f, 0xe1, 0xc2, -0xff, 0x00, 0xcf, 0x15, 0x3f, 0x85, 0x7b, 0x49, 0x8b, 0x4c, -0x6e, 0x97, 0xb0, 0xfe, 0x26, 0x81, 0x69, 0xa7, 0x30, 0xe2, -0xf6, 0xdf, 0xfe, 0xfb, 0x03, 0xfa, 0xd6, 0x6f, 0x0c, 0xd6, -0xf0, 0x7f, 0x73, 0x30, 0x78, 0x49, 0x2d, 0xe9, 0xbf, 0xb9, -0x9e, 0x1a, 0xff, 0x00, 0x0e, 0x07, 0xfc, 0xf0, 0x1f, 0x95, -0x57, 0x7f, 0x87, 0x03, 0xfe, 0x78, 0x2f, 0xe5, 0x5e, 0xf6, -0x34, 0x8b, 0x59, 0x7e, 0xe5, 0xc4, 0x4f, 0xfe, 0xeb, 0x83, -0xfd, 0x69, 0xff, 0x00, 0xf0, 0x8d, 0xa3, 0x8c, 0xa9, 0x0c, -0x3d, 0x85, 0x62, 0xe8, 0xc5, 0x6e, 0x8c, 0x65, 0x87, 0x8a, -0xf8, 0x91, 0xf3, 0xc4, 0x9f, 0x0d, 0x97, 0xfe, 0x78, 0x0f, -0xc8, 0xd5, 0x69, 0x3e, 0x1b, 0x2f, 0xfc, 0xf0, 0xfd, 0x0d, -0x7d, 0x18, 0xfe, 0x17, 0x1f, 0xdd, 0xcf, 0xe1, 0x51, 0x37, -0x85, 0x97, 0xfb, 0xbf, 0xa5, 0x67, 0xec, 0xa9, 0x99, 0xfb, -0x1a, 0x47, 0xcd, 0xf2, 0x7c, 0x36, 0x1f, 0xf3, 0xc3, 0xf4, -0xaa, 0xaf, 0xf0, 0xd8, 0x7f, 0xcf, 0x1c, 0x7e, 0x15, 0xf4, -0xab, 0x78, 0x51, 0x4f, 0xf0, 0xfe, 0x95, 0x0b, 0x78, 0x49, -0x0f, 0xf0, 0x7e, 0x94, 0xbd, 0x8c, 0x08, 0x78, 0x7a, 0x6c, -0xf9, 0xa2, 0x4f, 0x86, 0xf8, 0xff, 0x00, 0x96, 0x5f, 0xa1, -0xaa, 0x77, 0x3f, 0x0e, 0x59, 0x54, 0xe2, 0x2f, 0xd0, 0xd7, -0xd3, 0xcf, 0xe1, 0x18, 0xc9, 0xfb, 0x9f, 0xa5, 0x57, 0x9f, -0xc1, 0x71, 0x30, 0x3f, 0x27, 0xe9, 0x4b, 0xea, 0xf0, 0xe8, -0x2f, 0xaa, 0xd3, 0x3e, 0x50, 0xbc, 0xf0, 0x44, 0xb0, 0x83, -0x84, 0xc7, 0xe1, 0x58, 0x77, 0x7e, 0x1e, 0x9a, 0x02, 0x77, -0x46, 0x7f, 0x2a, 0xfa, 0xca, 0xf7, 0xe1, 0xfc, 0x52, 0x83, -0xf2, 0xe0, 0xff, 0x00, 0xbb, 0xff, 0x00, 0xd7, 0xae, 0x53, -0x5a, 0xf8, 0x6a, 0x8a, 0xac, 0x42, 0x92, 0x3d, 0x42, 0xd7, -0x35, 0x5a, 0x0e, 0x2a, 0xf1, 0x39, 0x2a, 0xe1, 0xa5, 0x05, -0x78, 0x33, 0xe6, 0x89, 0x34, 0x93, 0x9e, 0x54, 0xd4, 0x47, -0x4b, 0x23, 0xf8, 0x6b, 0xd7, 0xb5, 0x3f, 0x87, 0xf3, 0x99, -0x8a, 0xdb, 0xc2, 0xf2, 0xbf, 0xf7, 0x51, 0x09, 0xad, 0x4f, -0x0c, 0xfc, 0x08, 0xd5, 0x7c, 0x46, 0xe4, 0x3e, 0x6d, 0xb8, -0xce, 0xd1, 0x1e, 0xf6, 0x1f, 0x5e, 0x46, 0x3f, 0x3a, 0xcb, -0x0f, 0x4b, 0x17, 0x89, 0x97, 0x25, 0x18, 0x37, 0xf9, 0x7d, -0xfb, 0x18, 0xe1, 0x68, 0x63, 0x71, 0x93, 0xe4, 0xa1, 0x4d, -0xcb, 0xf2, 0xfb, 0xf6, 0x3c, 0x25, 0x74, 0x29, 0x6e, 0xa5, -0x11, 0xc3, 0x0b, 0xca, 0xec, 0x70, 0xa8, 0x8a, 0x49, 0x3f, -0x41, 0x5e, 0xe5, 0xf0, 0x73, 0xf6, 0x67, 0xb8, 0xd7, 0x67, -0x8a, 0xf3, 0x5b, 0xb6, 0x06, 0x2e, 0x1d, 0x6d, 0xa4, 0xce, -0xd5, 0xff, 0x00, 0xae, 0x9f, 0xfc, 0x4f, 0xe7, 0x5e, 0xf1, -0xe0, 0x2f, 0xd9, 0xe7, 0x4a, 0xf0, 0xba, 0xc5, 0x2c, 0xa4, -0xcb, 0x73, 0x8f, 0xde, 0x31, 0x19, 0x62, 0x7e, 0xb9, 0xc0, -0x1f, 0x41, 0xf8, 0xd7, 0xaf, 0x69, 0xba, 0x64, 0x36, 0x30, -0xac, 0x30, 0x44, 0xb1, 0x46, 0xbd, 0x15, 0x45, 0x7d, 0xfe, -0x5d, 0x93, 0x3a, 0x36, 0xa9, 0x89, 0x77, 0x7d, 0xba, 0x7f, -0xc1, 0x3f, 0x4f, 0xca, 0xb2, 0x07, 0x42, 0xd5, 0x71, 0x8e, -0xf2, 0xed, 0xd1, 0x7a, 0xf7, 0xfc, 0x8a, 0x5e, 0x19, 0xf0, -0xcd, 0x97, 0x87, 0x2c, 0x92, 0xde, 0xd2, 0x14, 0x4c, 0x28, -0x05, 0x82, 0xe3, 0x3f, 0xe0, 0x3d, 0xab, 0xa8, 0xb5, 0x8b, -0x38, 0xa8, 0x2d, 0xe0, 0xe4, 0x56, 0xa5, 0xb4, 0x15, 0xf5, -0x47, 0xdb, 0x16, 0x6d, 0xa3, 0xe9, 0x5a, 0xb6, 0xb1, 0xf4, -0xe2, 0xab, 0x5b, 0xc1, 0xed, 0x5a, 0xb6, 0xf0, 0xe2, 0x80, -0x2d, 0x5b, 0x47, 0x8c, 0x56, 0xb5, 0xbc, 0x7c, 0x0e, 0x2a, -0x95, 0xb4, 0x55, 0xab, 0x04, 0x74, 0x01, 0x62, 0x15, 0xe9, -0x57, 0x22, 0x5a, 0x82, 0x24, 0xe6, 0xad, 0xc6, 0x31, 0x40, -0x12, 0xad, 0x4a, 0x05, 0x46, 0xbd, 0xaa, 0x64, 0xe9, 0x40, -0x0a, 0x3a, 0x52, 0x8e, 0xb4, 0x52, 0xaf, 0x5a, 0x00, 0x75, -0x14, 0x51, 0x40, 0x05, 0x14, 0x51, 0x40, 0x0c, 0xa4, 0x23, -0xd2, 0x9c, 0x46, 0x29, 0x28, 0x02, 0x32, 0x29, 0xbb, 0x6a, -0x62, 0x33, 0x4d, 0xdb, 0x40, 0x10, 0x14, 0xa6, 0x98, 0xf2, -0x3a, 0x54, 0xe5, 0x69, 0x36, 0xfb, 0x50, 0x05, 0x56, 0x8f, -0x8e, 0x94, 0xc3, 0x17, 0xb5, 0x5b, 0x29, 0xed, 0x49, 0xb6, -0x80, 0x29, 0x98, 0x87, 0x71, 0x4c, 0xf2, 0x6a, 0xe1, 0x4e, -0x69, 0x3c, 0xba, 0x00, 0xa4, 0x61, 0xc7, 0x24, 0x53, 0x7c, -0x91, 0xe9, 0x57, 0x8c, 0x74, 0x9e, 0x55, 0x00, 0x50, 0xf2, -0x07, 0xa5, 0x30, 0xdb, 0x83, 0xda, 0xb4, 0x3c, 0xbf, 0x6a, -0x0c, 0x7e, 0xd4, 0x01, 0x9d, 0xf6, 0x7f, 0x6a, 0x63, 0x5b, -0x8c, 0xf4, 0xad, 0x13, 0x0f, 0xad, 0x27, 0x95, 0x8e, 0xd4, -0x01, 0x9a, 0x6d, 0x87, 0xb0, 0xa6, 0x35, 0xb0, 0xcd, 0x69, -0x18, 0x32, 0x69, 0x3c, 0x9f, 0x6a, 0x00, 0xcc, 0xfb, 0x35, -0x35, 0xad, 0xab, 0x50, 0xc1, 0xea, 0x29, 0xa6, 0x00, 0x07, -0x4a, 0x00, 0xca, 0xfb, 0x2f, 0xb5, 0x37, 0xec, 0xde, 0xd9, -0xad, 0x53, 0x0f, 0xad, 0x21, 0x80, 0x50, 0x06, 0x51, 0xb6, -0xf6, 0xa6, 0x35, 0xa8, 0x07, 0xa5, 0x6b, 0x79, 0x1e, 0xf4, -0x86, 0xdc, 0x66, 0x80, 0x32, 0x0d, 0xaf, 0xb5, 0x30, 0xda, -0xf3, 0xd2, 0xb5, 0xcc, 0x1e, 0xd4, 0x9f, 0x66, 0xc7, 0x6a, -0x00, 0xc5, 0x7b, 0x61, 0xe9, 0x4d, 0x36, 0xbe, 0xd5, 0xb2, -0xd6, 0xb9, 0x3d, 0x29, 0x9f, 0x65, 0xf6, 0xfd, 0x28, 0x03, -0x18, 0xda, 0x80, 0x69, 0xa6, 0xd3, 0x35, 0xb0, 0xd6, 0xdc, -0xd3, 0x7e, 0xcb, 0xed, 0x40, 0x18, 0xc6, 0xd3, 0x03, 0x34, -0xc3, 0x6b, 0xc5, 0x6d, 0x35, 0xaf, 0xb5, 0x33, 0xec, 0xc3, -0xd2, 0x80, 0x31, 0x8d, 0xa7, 0xb0, 0xa6, 0x9b, 0x3c, 0x76, -0x15, 0xb5, 0xf6, 0x5f, 0x6a, 0x6b, 0x5a, 0xf1, 0xcd, 0x00, -0x62, 0x35, 0xa0, 0xf4, 0xa6, 0x1b, 0x4c, 0x75, 0x15, 0xb4, -0x6d, 0x4f, 0x61, 0x4d, 0x6b, 0x5a, 0x00, 0xc3, 0x6b, 0x40, -0x3b, 0x53, 0x1a, 0xd3, 0x3d, 0xb1, 0x5b, 0x9f, 0x66, 0xe3, -0xa5, 0x30, 0xdb, 0x63, 0xad, 0x00, 0x61, 0x9b, 0x30, 0x07, -0xbd, 0x45, 0xf6, 0x4f, 0x6a, 0xdf, 0x36, 0xd9, 0x1d, 0x2a, -0x33, 0x69, 0x40, 0x18, 0x4d, 0x67, 0x4c, 0x36, 0x5e, 0xc2, -0xb7, 0x4d, 0xaf, 0xb5, 0x34, 0xda, 0x63, 0xb5, 0x00, 0x61, -0x9b, 0x3c, 0x76, 0xa8, 0xcd, 0x9e, 0x49, 0xe2, 0xb7, 0x8d, -0xa8, 0xc7, 0xdd, 0xa8, 0xcd, 0xa7, 0xb1, 0xfc, 0xa8, 0x03, -0x0c, 0xd9, 0xfb, 0x53, 0x5a, 0xd3, 0xd0, 0x56, 0xe9, 0xb4, -0xc7, 0x63, 0x4c, 0x6b, 0x5e, 0xd8, 0xa0, 0x0c, 0x13, 0x67, -0xed, 0x4c, 0x6b, 0x4c, 0x76, 0xad, 0xef, 0xb1, 0x8f, 0x4a, -0x63, 0x5a, 0x73, 0x40, 0x18, 0x26, 0xd3, 0xbe, 0x29, 0x86, -0xd3, 0x3d, 0xab, 0x79, 0xad, 0x3f, 0x1a, 0x8c, 0xda, 0x1f, -0x4a, 0x00, 0xc2, 0x36, 0x9d, 0xba, 0x54, 0x66, 0xd3, 0x1d, -0xab, 0x74, 0xd9, 0xf3, 0xd2, 0x9a, 0xf6, 0x84, 0xf1, 0x8c, -0x50, 0x06, 0x11, 0xb5, 0xe3, 0xa5, 0x33, 0xec, 0x99, 0xed, -0x5b, 0x9f, 0x63, 0xf6, 0xa4, 0x36, 0x9c, 0x7d, 0xda, 0x00, -0xc3, 0x36, 0x87, 0xd3, 0x14, 0xc6, 0xb5, 0xf6, 0xad, 0xb3, -0x69, 0x9e, 0xa2, 0x93, 0xec, 0x7e, 0xd8, 0xa0, 0x0c, 0x09, -0x2c, 0x12, 0x4f, 0xbd, 0x1a, 0xb0, 0xff, 0x00, 0x68, 0x03, -0x55, 0xa4, 0xd0, 0x2c, 0xa4, 0xce, 0xfb, 0x3b, 0x77, 0xfa, -0xc4, 0xa7, 0xfa, 0x57, 0x4a, 0xd6, 0x98, 0x14, 0xcf, 0xb2, -0x7b, 0x50, 0x07, 0x26, 0xde, 0x16, 0xd3, 0x1b, 0xfe, 0x61, -0xd6, 0xbf, 0xf7, 0xe5, 0x7f, 0xc2, 0xa2, 0x7f, 0x07, 0xe9, -0x47, 0xae, 0x9f, 0x07, 0xe0, 0xb8, 0xae, 0xb8, 0xda, 0x64, -0xd3, 0x0d, 0xa6, 0x07, 0x4a, 0x00, 0xe2, 0xe4, 0xf0, 0x3e, -0x93, 0x27, 0xfc, 0xb9, 0xaa, 0xff, 0x00, 0xba, 0x6a, 0xb3, -0xfc, 0x3e, 0xd2, 0x8f, 0x48, 0xa4, 0x53, 0xfe, 0xcb, 0x9a, -0xee, 0x8d, 0xa7, 0x3d, 0x2a, 0x26, 0xb4, 0xf4, 0x14, 0x0a, -0xc8, 0xe2, 0x07, 0x81, 0x2c, 0x97, 0xee, 0x4d, 0x77, 0x1f, -0xfb, 0xb3, 0x7f, 0xf5, 0xa8, 0xff, 0x00, 0x84, 0x26, 0x30, -0x3e, 0x4d, 0x4b, 0x51, 0x4f, 0xa4, 0xff, 0x00, 0xfd, 0x6a, -0xed, 0x8d, 0xa1, 0x1d, 0xaa, 0x36, 0xb5, 0xf6, 0xcd, 0x66, -0xe9, 0xc1, 0xef, 0x14, 0x66, 0xe9, 0x53, 0x96, 0xf1, 0x5f, -0x71, 0xc4, 0xbf, 0x83, 0x67, 0xfe, 0x0d, 0x5e, 0xf1, 0x7f, -0xde, 0x21, 0xaa, 0x26, 0xf0, 0x7e, 0xa2, 0x3e, 0xe6, 0xb2, -0xe4, 0x7a, 0x3c, 0x20, 0xff, 0x00, 0x5a, 0xee, 0x4d, 0xaf, -0xb5, 0x21, 0xb6, 0xc7, 0x63, 0x59, 0xbc, 0x3d, 0x17, 0xf6, -0x17, 0xdc, 0x8c, 0x9e, 0x13, 0x0e, 0xf7, 0xa6, 0xbe, 0xe4, -0x70, 0x87, 0xc3, 0x3a, 0xd2, 0x67, 0x6d, 0xfc, 0x0f, 0xfe, -0xfc, 0x64, 0x53, 0x1b, 0x43, 0xf1, 0x00, 0xe3, 0xcd, 0xb0, -0x71, 0xeb, 0x86, 0x1f, 0xd2, 0xbb, 0xd3, 0x6f, 0xec, 0x45, -0x27, 0xd9, 0xff, 0x00, 0x1a, 0xcd, 0xe0, 0xb0, 0xcf, 0x7a, -0x6b, 0xee, 0x31, 0x79, 0x76, 0x12, 0x5b, 0xd2, 0x5f, 0x71, -0xe7, 0xcd, 0xe1, 0xbd, 0x7a, 0x4e, 0xb2, 0x58, 0x2f, 0xb8, -0xdd, 0xfe, 0x14, 0xab, 0xe0, 0x0b, 0x9b, 0xae, 0x6e, 0xb5, -0x00, 0x07, 0x75, 0x8a, 0x3e, 0xbf, 0x89, 0x3f, 0xd2, 0xbd, -0x04, 0x5b, 0x64, 0xf4, 0xa7, 0x0b, 0x6a, 0x71, 0xc2, 0x61, -0xe1, 0xb4, 0x17, 0xdc, 0x54, 0x70, 0x18, 0x58, 0x6b, 0x1a, -0x6b, 0xee, 0x38, 0xeb, 0x2f, 0x87, 0xfa, 0x55, 0xa3, 0x06, -0x31, 0xbc, 0xe7, 0xfe, 0x9a, 0x9c, 0x8f, 0xc8, 0x0a, 0xe8, -0x6d, 0x34, 0xd8, 0x6d, 0x63, 0x11, 0xc1, 0x12, 0x44, 0x83, -0xf8, 0x51, 0x70, 0x2b, 0x51, 0x6d, 0x7d, 0xaa, 0x54, 0xb5, -0xf6, 0xae, 0xa4, 0x92, 0x56, 0x48, 0xed, 0x49, 0x45, 0x59, -0x14, 0xe2, 0xb7, 0xab, 0x91, 0x5b, 0x70, 0x2a, 0xcc, 0x56, -0xb9, 0xed, 0x56, 0xe3, 0xb6, 0xe0, 0x71, 0x4c, 0x64, 0x30, -0x5b, 0x63, 0x15, 0xa5, 0x6d, 0x6f, 0xd3, 0x8a, 0x58, 0x2d, -0xbd, 0x8d, 0x69, 0x5b, 0xdb, 0xf4, 0xe2, 0x80, 0x16, 0xda, -0x0a, 0xd3, 0x82, 0x2e, 0x05, 0x36, 0x08, 0x31, 0x8e, 0x2a, -0xfc, 0x31, 0x62, 0x80, 0x25, 0xb7, 0x8f, 0xa5, 0x68, 0xc2, -0x98, 0x15, 0x04, 0x31, 0xe3, 0xb5, 0x5f, 0x89, 0x3d, 0xa8, -0x02, 0x44, 0x18, 0xab, 0x08, 0xb8, 0xa6, 0x22, 0x73, 0xc8, -0xa9, 0x95, 0x78, 0xa0, 0x07, 0x01, 0xe9, 0x52, 0x2d, 0x35, -0x45, 0x3e, 0x80, 0x0a, 0x75, 0x20, 0x14, 0xea, 0x00, 0x28, -0xa2, 0x8a, 0x00, 0x28, 0xa2, 0x8a, 0x00, 0x28, 0xa2, 0x8a, -0x00, 0x6e, 0x0d, 0x27, 0x4a, 0x7d, 0x26, 0x28, 0x01, 0x98, -0x14, 0x60, 0x53, 0xf1, 0xee, 0x68, 0xc5, 0x00, 0x46, 0x47, -0xb7, 0x14, 0x9b, 0x69, 0xf4, 0x50, 0x04, 0x7b, 0x45, 0x1b, -0x05, 0x49, 0x45, 0x00, 0x47, 0xb0, 0x53, 0x7c, 0xba, 0x9a, -0x8c, 0x0a, 0x00, 0x80, 0xa5, 0x26, 0xca, 0x9b, 0x6e, 0x69, -0x36, 0x7b, 0x50, 0x04, 0x5b, 0x29, 0xac, 0x99, 0xa9, 0xf6, -0x7b, 0x51, 0xb7, 0xda, 0x80, 0x2b, 0x79, 0x74, 0x79, 0x75, -0x67, 0x60, 0xf4, 0xa4, 0xda, 0x28, 0x02, 0xb7, 0x97, 0xed, -0x41, 0x8b, 0x35, 0x67, 0x60, 0xa4, 0xd9, 0x40, 0x15, 0x7c, -0x9a, 0x4f, 0x2b, 0xda, 0xad, 0x6c, 0x34, 0x9b, 0x73, 0x40, -0x15, 0x4c, 0x43, 0xb8, 0xa6, 0x98, 0xc5, 0x5c, 0xf2, 0xe9, -0x36, 0x50, 0x05, 0x33, 0x10, 0xa6, 0xf9, 0x23, 0xd2, 0xae, -0xf9, 0x74, 0x9e, 0x5e, 0x28, 0x02, 0x91, 0x84, 0x53, 0x3c, -0xae, 0x78, 0xab, 0xed, 0x1f, 0xb5, 0x34, 0xc7, 0x40, 0x14, -0x4c, 0x34, 0x9e, 0x45, 0x5f, 0xf2, 0xa9, 0x0c, 0x5e, 0xd4, -0x01, 0x9e, 0x6d, 0xc6, 0x29, 0xbe, 0x45, 0x68, 0x98, 0x87, -0xa5, 0x37, 0xc9, 0xa0, 0x0c, 0xe3, 0x6f, 0x48, 0x6d, 0xf3, -0xda, 0xb4, 0x7c, 0x91, 0xe9, 0x48, 0x62, 0x14, 0x01, 0x98, -0xd6, 0xc0, 0x76, 0xa6, 0x1b, 0x71, 0xe9, 0x5a, 0xa6, 0x15, -0xf4, 0xa6, 0x98, 0x68, 0x03, 0x2f, 0xec, 0xb9, 0xa8, 0xcd, -0xb0, 0x27, 0xa5, 0x6b, 0xf9, 0x3e, 0xd4, 0xc3, 0x07, 0x14, -0x01, 0x94, 0x6d, 0xb8, 0xa8, 0x8d, 0xa8, 0xf4, 0xad, 0x83, -0x06, 0x7b, 0x52, 0x1b, 0x7a, 0x00, 0xc7, 0xfb, 0x36, 0x29, -0x8d, 0x6d, 0xcf, 0x4a, 0xd9, 0xfb, 0x38, 0xf4, 0xa6, 0x9b, -0x71, 0x9e, 0xd4, 0x01, 0x8d, 0xf6, 0x6a, 0x69, 0xb5, 0xf6, -0xad, 0x9f, 0xb3, 0x03, 0xdb, 0x34, 0x9f, 0x66, 0xf6, 0x14, -0x01, 0x8c, 0x6d, 0x72, 0x3a, 0x53, 0x0d, 0xb7, 0xb5, 0x6d, -0x1b, 0x6f, 0x6a, 0x61, 0xb6, 0xc7, 0x6a, 0x00, 0xc5, 0x36, -0xbc, 0x70, 0x29, 0x86, 0xd4, 0x63, 0xa6, 0x6b, 0x6d, 0xad, -0x86, 0x29, 0xbf, 0x65, 0x1e, 0x94, 0x01, 0x86, 0xd6, 0xbe, -0xd4, 0xc3, 0x68, 0x3d, 0x2b, 0x6d, 0xad, 0x79, 0xe9, 0x4d, -0xfb, 0x2e, 0x3b, 0x50, 0x06, 0x1f, 0xd9, 0x00, 0xed, 0x4c, -0x6b, 0x41, 0x9e, 0x95, 0xb8, 0x6d, 0x79, 0xa6, 0xfd, 0x94, -0x50, 0x06, 0x17, 0xd9, 0x07, 0xa5, 0x35, 0xad, 0x00, 0xad, -0xd6, 0xb5, 0xe2, 0x99, 0xf6, 0x50, 0x7b, 0x50, 0x06, 0x11, -0xb4, 0x19, 0xe9, 0x4d, 0x36, 0x75, 0xbd, 0xf6, 0x4f, 0x6a, -0x63, 0x5a, 0x0f, 0x4a, 0x00, 0xc1, 0x6b, 0x41, 0xe9, 0x4c, -0x36, 0x63, 0xd0, 0x56, 0xf7, 0xd9, 0x47, 0xa6, 0x29, 0x86, -0xd0, 0x7a, 0x50, 0x06, 0x01, 0xb3, 0x07, 0xb6, 0x69, 0x8f, -0x67, 0xfe, 0xcd, 0x74, 0x06, 0xcf, 0xda, 0xa3, 0x36, 0x80, -0xf5, 0x14, 0x01, 0x80, 0xd6, 0x63, 0x1f, 0x76, 0xa3, 0xfb, -0x27, 0xb6, 0x2b, 0xa0, 0x6b, 0x30, 0x07, 0x4a, 0x61, 0xb3, -0x18, 0xe9, 0x40, 0x1c, 0xfb, 0x5a, 0xfb, 0x53, 0x7e, 0xc9, -0x5b, 0xe6, 0xd3, 0xdb, 0x14, 0xc6, 0xb4, 0x1d, 0xff, 0x00, -0x95, 0x00, 0x60, 0x9b, 0x4a, 0x43, 0x6b, 0xed, 0x5b, 0xc6, -0xcf, 0xd8, 0x0a, 0x69, 0xb3, 0x03, 0xb5, 0x00, 0x60, 0x9b, -0x4f, 0x6a, 0x4f, 0xb2, 0x67, 0xb7, 0xe7, 0x5b, 0xc6, 0xcb, -0xda, 0x90, 0x59, 0x0c, 0xf4, 0xa0, 0x0c, 0x3f, 0xb2, 0x7b, -0x52, 0xfd, 0x93, 0xfd, 0x9a, 0xdc, 0x16, 0x63, 0x3f, 0x76, -0x94, 0x59, 0x83, 0xd4, 0x50, 0x06, 0x28, 0xb3, 0x23, 0xa8, -0xa9, 0x52, 0xd3, 0xda, 0xb6, 0x16, 0xcc, 0x7a, 0x54, 0xa9, -0x68, 0x3d, 0x28, 0x03, 0x2a, 0x3b, 0x4e, 0x7a, 0x55, 0xb8, -0xad, 0x46, 0x7a, 0x56, 0x8a, 0x5a, 0x0f, 0x4a, 0xb1, 0x1d, -0xaf, 0xb5, 0x00, 0x52, 0x86, 0xdb, 0x18, 0xad, 0x1b, 0x7b, -0x7f, 0x6a, 0x9e, 0x2b, 0x50, 0x3b, 0x73, 0x57, 0x22, 0xb7, -0xc0, 0xe9, 0x40, 0x11, 0x43, 0x00, 0x18, 0xab, 0xb1, 0x42, -0x05, 0x3a, 0x38, 0x00, 0xed, 0x56, 0xe3, 0x8a, 0x80, 0x12, -0x28, 0xea, 0xd2, 0x2e, 0x31, 0x42, 0x26, 0x05, 0x4c, 0xab, -0x40, 0x0e, 0x55, 0xa9, 0x02, 0xe2, 0x91, 0x56, 0x9e, 0x06, -0x68, 0x01, 0x40, 0xc5, 0x39, 0x69, 0x29, 0xc0, 0x60, 0x50, -0x02, 0xd1, 0x45, 0x14, 0x00, 0x51, 0x45, 0x14, 0x00, 0x51, -0x45, 0x14, 0x00, 0x51, 0x45, 0x14, 0x00, 0x51, 0x45, 0x14, -0x00, 0x51, 0x45, 0x14, 0x00, 0x52, 0x62, 0x96, 0x8a, 0x00, -0x4c, 0x51, 0x8a, 0x5a, 0x28, 0x01, 0x30, 0x29, 0x08, 0xa7, -0x51, 0x40, 0x0c, 0xa2, 0x9f, 0x45, 0x00, 0x32, 0x8a, 0x76, -0x28, 0xc5, 0x00, 0x36, 0x8a, 0x76, 0x28, 0xc0, 0xa0, 0x06, -0xd1, 0x8a, 0x76, 0x05, 0x1b, 0x68, 0x01, 0xb8, 0x14, 0x98, -0x14, 0xed, 0xb4, 0x6d, 0xa0, 0x06, 0x91, 0x4d, 0xdb, 0xed, -0x52, 0x11, 0x8a, 0x4a, 0x00, 0x8f, 0x6d, 0x1b, 0x6a, 0x4a, -0x28, 0x02, 0x3d, 0xb9, 0xa4, 0xd9, 0x52, 0xe2, 0x8c, 0x50, -0x04, 0x5b, 0x28, 0xd9, 0xed, 0x52, 0x60, 0x51, 0x81, 0x40, -0x11, 0x14, 0xa6, 0xec, 0xa9, 0xf0, 0x28, 0xdb, 0x40, 0x10, -0x6c, 0xf6, 0xa6, 0x98, 0xf1, 0x56, 0x76, 0x8a, 0x69, 0x19, -0xa0, 0x08, 0x36, 0x52, 0x6c, 0xf6, 0xcd, 0x4f, 0xb6, 0x93, -0x6f, 0xb5, 0x00, 0x43, 0xb3, 0xda, 0x98, 0x63, 0xc9, 0xab, -0x3b, 0x7d, 0xa9, 0x36, 0x1a, 0x00, 0xad, 0xe5, 0xd1, 0xb0, -0x55, 0x9d, 0x86, 0x93, 0x65, 0x00, 0x56, 0xf2, 0xbd, 0xa9, -0xad, 0x17, 0xb5, 0x5b, 0xd9, 0x49, 0xb3, 0x14, 0x01, 0x53, -0xc9, 0xf6, 0xa4, 0xf2, 0x7d, 0xaa, 0xde, 0xd1, 0x46, 0xd1, -0x40, 0x14, 0xfc, 0x9a, 0x69, 0x83, 0x35, 0x73, 0xcb, 0xa4, -0xf2, 0xe8, 0x02, 0x91, 0x83, 0x14, 0x9e, 0x4e, 0x6a, 0xe9, -0x8e, 0x93, 0xcb, 0x14, 0x01, 0x40, 0xdb, 0xfb, 0x53, 0x4c, -0x22, 0xaf, 0x94, 0xe6, 0x93, 0xca, 0x1e, 0x94, 0x01, 0x9e, -0x6d, 0xf9, 0xe0, 0x53, 0x4d, 0xbf, 0xb5, 0x68, 0xf9, 0x5e, -0xd4, 0x9e, 0x50, 0x3d, 0xb3, 0x40, 0x19, 0xdf, 0x66, 0xcf, -0x6a, 0x69, 0xb5, 0x15, 0xa4, 0xd1, 0x71, 0x4c, 0xf2, 0x85, -0x00, 0x66, 0xfd, 0x98, 0x67, 0xa5, 0x21, 0xb6, 0xe2, 0xb4, -0xfc, 0x9a, 0x4f, 0x26, 0x80, 0x32, 0xbe, 0xcb, 0xed, 0xcd, -0x30, 0xdb, 0x71, 0xd2, 0xb5, 0x9a, 0x13, 0xe9, 0x4c, 0x36, -0xf8, 0xed, 0x40, 0x19, 0x46, 0xd7, 0xda, 0xa3, 0xfb, 0x2f, -0xb5, 0x6c, 0x18, 0x38, 0xe9, 0x4c, 0x30, 0x7b, 0x50, 0x06, -0x43, 0x5a, 0xd3, 0x3e, 0xcb, 0xed, 0x5b, 0x3f, 0x67, 0xa8, -0xcc, 0x03, 0x34, 0x01, 0x91, 0xf6, 0x6f, 0x6a, 0x43, 0x6d, -0x9e, 0x82, 0xb5, 0xfe, 0xce, 0x0f, 0x6a, 0x6f, 0xd9, 0xc7, -0x7a, 0x00, 0xc6, 0xfb, 0x37, 0xb5, 0x27, 0xd9, 0xbd, 0xab, -0x67, 0xec, 0xc3, 0xd2, 0x90, 0xdb, 0x0a, 0x00, 0xc6, 0x16, -0xb9, 0xed, 0x4a, 0x6d, 0x40, 0xfe, 0x1a, 0xd7, 0xfb, 0x28, -0x1d, 0xa8, 0x36, 0xd4, 0x01, 0x90, 0x2d, 0x73, 0xda, 0x94, -0x5a, 0x67, 0xb5, 0x6b, 0x2d, 0xb7, 0x1d, 0x29, 0x45, 0xbf, -0xb5, 0x00, 0x65, 0x2d, 0xae, 0x3b, 0x54, 0x8b, 0x69, 0xed, -0x5a, 0x42, 0xdc, 0x0e, 0xd5, 0x22, 0xdb, 0x7b, 0x50, 0x06, -0x7a, 0x5a, 0xfb, 0x55, 0x88, 0xed, 0xb1, 0x8e, 0x2a, 0xe0, -0x80, 0x01, 0x52, 0xa4, 0x3d, 0x38, 0xa0, 0x0a, 0xa9, 0x07, -0xb5, 0x58, 0x8e, 0x1c, 0x62, 0xac, 0x24, 0x5c, 0xd4, 0xa8, -0x98, 0xed, 0x40, 0x11, 0xc7, 0x17, 0x15, 0x3a, 0x27, 0x14, -0xe5, 0x4a, 0x94, 0x2e, 0x3b, 0x50, 0x03, 0x51, 0x7a, 0x54, -0xa1, 0x71, 0x40, 0x5c, 0x53, 0xc0, 0xe2, 0x80, 0x00, 0x29, -0xd4, 0x52, 0x81, 0x9a, 0x00, 0x00, 0xe6, 0x9d, 0x45, 0x14, -0x00, 0x51, 0x45, 0x14, 0x00, 0x51, 0x45, 0x14, 0x00, 0x51, -0x45, 0x14, 0x00, 0x51, 0x45, 0x14, 0x00, 0x51, 0x45, 0x14, -0x00, 0x51, 0x45, 0x14, 0x00, 0x51, 0x45, 0x14, 0x00, 0x51, -0x45, 0x14, 0x00, 0x51, 0x45, 0x14, 0x00, 0x51, 0x45, 0x14, -0x00, 0x51, 0x45, 0x14, 0x00, 0x51, 0x45, 0x14, 0x00, 0x51, -0x45, 0x14, 0x00, 0x51, 0x45, 0x14, 0x00, 0x52, 0x60, 0x52, -0xd1, 0x40, 0x09, 0x81, 0x46, 0x3d, 0xcd, 0x2d, 0x14, 0x00, -0x98, 0xf7, 0x34, 0x9b, 0x69, 0xd4, 0x50, 0x03, 0x76, 0xd1, -0xb6, 0x9d, 0x45, 0x00, 0x37, 0x6d, 0x1b, 0x69, 0xd4, 0x50, -0x03, 0x70, 0x69, 0x08, 0xa7, 0xd2, 0x62, 0x80, 0x19, 0x81, -0x46, 0x05, 0x3f, 0x1e, 0xe6, 0x8c, 0x7b, 0x9a, 0x00, 0x66, -0x05, 0x1b, 0x69, 0xdb, 0x68, 0xdb, 0x40, 0x0d, 0xdb, 0x46, -0xda, 0x76, 0xda, 0x36, 0xd0, 0x03, 0x76, 0xd2, 0x6d, 0xcd, -0x3f, 0x6d, 0x18, 0x34, 0x00, 0xcd, 0x94, 0x9b, 0x2a, 0x4c, -0x1a, 0x31, 0xf5, 0xa0, 0x08, 0x8a, 0x52, 0x6c, 0xf6, 0xa9, -0x4a, 0xd2, 0x60, 0x50, 0x04, 0x5b, 0x7d, 0xa8, 0xdb, 0x52, -0xed, 0xa3, 0x6d, 0x00, 0x41, 0xb2, 0x8d, 0x95, 0x3e, 0xda, -0x36, 0xd0, 0x05, 0x7f, 0x2f, 0xda, 0x8f, 0x2e, 0xa7, 0xdb, -0x46, 0xda, 0x00, 0xae, 0x63, 0x14, 0x9b, 0x3d, 0xaa, 0xce, -0xdf, 0x6a, 0x4d, 0x94, 0x01, 0x59, 0x93, 0x8e, 0x94, 0xdd, -0x86, 0xad, 0x79, 0x78, 0xa4, 0x29, 0x8a, 0x00, 0xad, 0xe5, -0xe6, 0x93, 0xca, 0xf6, 0xab, 0x3b, 0x69, 0x36, 0xd0, 0x05, -0x6f, 0x26, 0x9a, 0x63, 0xcf, 0x6a, 0xb6, 0x56, 0x93, 0x67, -0xb5, 0x00, 0x52, 0xf2, 0x68, 0xf2, 0x6a, 0xe7, 0x97, 0x49, -0xb2, 0x80, 0x29, 0xf9, 0x1f, 0xe7, 0x14, 0x79, 0x15, 0x73, -0x60, 0xa4, 0xd9, 0x40, 0x14, 0xfc, 0x9a, 0x4f, 0x23, 0xda, -0xae, 0xf9, 0x74, 0x9e, 0x5d, 0x00, 0x52, 0xfb, 0x3d, 0x27, -0x91, 0xed, 0x57, 0xbc, 0xba, 0x3c, 0xba, 0x00, 0xa1, 0xe4, -0x63, 0xb6, 0x29, 0xc2, 0x1e, 0xf5, 0x6f, 0xcb, 0xf6, 0xa5, -0x11, 0xf1, 0x40, 0x15, 0x04, 0x34, 0xe5, 0x86, 0xad, 0x79, -0x74, 0xa2, 0x3c, 0x50, 0x05, 0x71, 0x16, 0x69, 0xcb, 0x16, -0x2a, 0xc0, 0x4c, 0x53, 0x82, 0x50, 0x04, 0x4b, 0x1e, 0x05, -0x3d, 0x52, 0xa4, 0x0b, 0x83, 0xcd, 0x3b, 0x6f, 0xb5, 0x00, -0x34, 0x27, 0xad, 0x3b, 0x6f, 0xb5, 0x38, 0x0e, 0x29, 0x68, -0x01, 0x00, 0xa5, 0xa5, 0x03, 0x34, 0xa0, 0x62, 0x80, 0x10, -0x0a, 0x75, 0x14, 0x50, 0x01, 0x45, 0x14, 0x50, 0x01, 0x45, -0x14, 0x50, 0x01, 0x45, 0x14, 0x50, 0x01, 0x45, 0x14, 0x50, -0x01, 0x45, 0x14, 0x50, 0x01, 0x45, 0x14, 0x50, 0x01, 0x45, -0x14, 0x50, 0x01, 0x45, 0x14, 0x50, 0x01, 0x45, 0x14, 0x50, -0x01, 0x45, 0x14, 0x50, 0x01, 0x45, 0x14, 0x50, 0x01, 0x45, -0x14, 0x50, 0x01, 0x45, 0x14, 0x50, 0x01, 0x45, 0x14, 0x50, -0x01, 0x45, 0x14, 0x50, 0x01, 0x45, 0x14, 0x50, 0x01, 0x45, -0x14, 0x50, 0x01, 0x45, 0x14, 0x50, 0x01, 0x45, 0x14, 0x50, -0x01, 0x45, 0x14, 0x50, 0x01, 0x45, 0x14, 0x50, 0x01, 0x45, -0x14, 0x50, 0x01, 0x45, 0x14, 0x50, 0x01, 0x45, 0x14, 0x50, -0x01, 0x45, 0x14, 0x50, 0x01, 0x45, 0x14, 0x50, 0x02, 0x11, -0x9a, 0x4d, 0xb4, 0xea, 0x28, 0x01, 0xbb, 0x68, 0xdb, 0x4e, -0xa2, 0x80, 0x1b, 0x83, 0x46, 0x0d, 0x3a, 0x8a, 0x00, 0x66, -0x31, 0x45, 0x3e, 0x8a, 0x00, 0x65, 0x14, 0xfa, 0x28, 0x01, -0x94, 0x9b, 0x69, 0xf8, 0xa6, 0xd0, 0x02, 0x6d, 0xa4, 0xdb, -0x4e, 0xa2, 0x80, 0x1b, 0xb6, 0x8d, 0xbe, 0xd4, 0xea, 0x28, -0x01, 0x9b, 0x7d, 0xa8, 0xdb, 0xed, 0x4f, 0xa2, 0x80, 0x19, -0xb7, 0xeb, 0x49, 0xb3, 0xda, 0xa4, 0xa2, 0x80, 0x23, 0xda, -0x28, 0xda, 0x2a, 0x4a, 0x28, 0x02, 0x3d, 0x82, 0x93, 0x65, -0x49, 0x81, 0x46, 0x05, 0x00, 0x47, 0xb2, 0x8d, 0xbe, 0xd5, -0x26, 0x05, 0x21, 0x18, 0xa0, 0x06, 0x6d, 0xa7, 0x05, 0xc7, -0x6a, 0x29, 0xf4, 0x00, 0xcd, 0xb4, 0xa0, 0x53, 0xa8, 0xa0, -0x04, 0xdb, 0x4b, 0x45, 0x38, 0x74, 0xa0, 0x04, 0x03, 0x34, -0xa0, 0x52, 0xd1, 0x40, 0x05, 0x14, 0x51, 0x40, 0x05, 0x14, -0x51, 0x40, 0x05, 0x14, 0x51, 0x40, 0x05, 0x14, 0x51, 0x40, -0x05, 0x14, 0x51, 0x40, 0x05, 0x14, 0x51, 0x40, 0x1f, 0xff, -0xd9, }; - -static const char data_runtime_shtml[] = { -/* /runtime.shtml */ -0x2f, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x00, -0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, -0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, -0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, -0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, -0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, -0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, -0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, -0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, -0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, -0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, -0x22, 0x3e, 0x0d, 0x0a, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, -0x0d, 0x0a, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, -0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, -0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, -0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, -0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, -0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, -0x6c, 0x65, 0x3e, 0x0d, 0x0a, 0x20, 0x20, 0x3c, 0x2f, 0x68, -0x65, 0x61, 0x64, 0x3e, 0x0d, 0x0a, 0x20, 0x20, 0x3c, 0x42, -0x4f, 0x44, 0x59, 0x20, 0x6f, 0x6e, 0x4c, 0x6f, 0x61, 0x64, -0x3d, 0x22, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x73, -0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x28, -0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x6c, 0x6f, 0x63, 0x61, -0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x68, 0x72, 0x65, 0x66, 0x3d, -0x27, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x73, -0x68, 0x74, 0x6d, 0x6c, 0x27, 0x26, 0x71, 0x75, 0x6f, 0x74, -0x3b, 0x2c, 0x32, 0x30, 0x30, 0x30, 0x29, 0x22, 0x3e, 0x0d, -0x0a, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, -0x65, 0x3d, 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x3e, -0x0d, 0x0a, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, -0x22, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, -0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x53, -0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, -0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, -0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x72, 0x75, 0x6e, -0x74, 0x69, 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, -0x22, 0x3e, 0x52, 0x75, 0x6e, 0x20, 0x54, 0x69, 0x6d, 0x65, -0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, -0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, -0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x73, -0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, -0x22, 0x3e, 0x54, 0x43, 0x50, 0x20, 0x53, 0x74, 0x61, 0x74, -0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, -0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, -0x65, 0x66, 0x3d, 0x22, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, -0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, -0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61, 0x3e, -0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, -0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, -0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, -0x66, 0x72, 0x65, 0x65, 0x72, 0x74, 0x6f, 0x73, 0x2e, 0x6f, -0x72, 0x67, 0x2f, 0x22, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, -0x54, 0x4f, 0x53, 0x20, 0x48, 0x6f, 0x6d, 0x65, 0x70, 0x61, -0x67, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, -0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, -0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6f, 0x2e, 0x73, 0x68, -0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x49, 0x4f, 0x3c, 0x2f, 0x61, -0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, -0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, -0x6c, 0x6f, 0x67, 0x6f, 0x2e, 0x6a, 0x70, 0x67, 0x22, 0x3e, -0x33, 0x37, 0x4b, 0x20, 0x6a, 0x70, 0x67, 0x3c, 0x2f, 0x61, -0x3e, 0x0d, 0x0a, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, -0x0d, 0x0a, 0x3c, 0x68, 0x72, 0x3e, 0x0d, 0x0a, 0x3c, 0x62, -0x72, 0x3e, 0x3c, 0x70, 0x3e, 0x0d, 0x0a, 0x3c, 0x68, 0x32, -0x3e, 0x52, 0x75, 0x6e, 0x2d, 0x74, 0x69, 0x6d, 0x65, 0x20, -0x73, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, -0x3c, 0x2f, 0x68, 0x32, 0x3e, 0x0d, 0x0a, 0x50, 0x61, 0x67, -0x65, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x72, 0x65, 0x66, -0x72, 0x65, 0x73, 0x68, 0x20, 0x65, 0x76, 0x65, 0x72, 0x79, -0x20, 0x32, 0x20, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, -0x2e, 0x3c, 0x70, 0x3e, 0x0d, 0x0a, 0x3c, 0x66, 0x6f, 0x6e, -0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x63, 0x6f, -0x75, 0x72, 0x69, 0x65, 0x72, 0x22, 0x3e, 0x3c, 0x70, 0x72, -0x65, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x20, 0x20, 0x20, -0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x41, 0x62, -0x73, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x20, 0x20, 0x20, -0x20, 0x20, 0x25, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x3c, 0x62, -0x72, 0x3e, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, -0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, -0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, -0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, -0x2a, 0x2a, 0x3c, 0x62, 0x72, 0x3e, 0x0d, 0x0a, 0x25, 0x21, -0x20, 0x72, 0x75, 0x6e, 0x2d, 0x74, 0x69, 0x6d, 0x65, 0x0d, -0x0a, 0x3c, 0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, -0x6f, 0x6e, 0x74, 0x3e, 0x0d, 0x0a, 0x3c, 0x2f, 0x66, 0x6f, -0x6e, 0x74, 0x3e, 0x0d, 0x0a, 0x3c, 0x2f, 0x62, 0x6f, 0x64, -0x79, 0x3e, 0x0d, 0x0a, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, -0x3e, 0x0d, 0x0a, 0x0d, 0x0a, }; - -static const char data_stats_shtml[] = { -/* /stats.shtml */ -0x2f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x00, -0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, -0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, -0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, -0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, -0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, -0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, -0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, -0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, -0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, -0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, -0x22, 0x3e, 0x0d, 0x0a, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, -0x0d, 0x0a, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, -0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, -0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, -0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, -0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, -0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, -0x6c, 0x65, 0x3e, 0x0d, 0x0a, 0x20, 0x20, 0x3c, 0x2f, 0x68, -0x65, 0x61, 0x64, 0x3e, 0x0d, 0x0a, 0x20, 0x20, 0x3c, 0x42, -0x4f, 0x44, 0x59, 0x3e, 0x0d, 0x0a, 0x3c, 0x66, 0x6f, 0x6e, -0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, -0x69, 0x61, 0x6c, 0x22, 0x3e, 0x0d, 0x0a, 0x3c, 0x61, 0x20, -0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, -0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, -0x61, 0x73, 0x6b, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, -0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, -0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, -0x3d, 0x22, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, -0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x52, 0x75, 0x6e, -0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, 0x74, 0x61, 0x74, -0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, -0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, -0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, -0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x43, 0x50, -0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, -0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, -0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, -0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, -0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, -0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, -0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, -0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, -0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, 0x65, 0x65, 0x72, -0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x22, 0x3e, -0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x20, 0x48, -0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, -0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, -0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, -0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, -0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, -0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, -0x72, 0x65, 0x66, 0x3d, 0x22, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, -0x6a, 0x70, 0x67, 0x22, 0x3e, 0x33, 0x37, 0x4b, 0x20, 0x6a, -0x70, 0x67, 0x3c, 0x2f, 0x61, 0x3e, 0x0d, 0x0a, 0x3c, 0x62, -0x72, 0x3e, 0x3c, 0x70, 0x3e, 0x0d, 0x0a, 0x3c, 0x68, 0x72, -0x3e, 0x0d, 0x0a, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, -0x0d, 0x0a, 0x3c, 0x68, 0x32, 0x3e, 0x4e, 0x65, 0x74, 0x77, -0x6f, 0x72, 0x6b, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, -0x74, 0x69, 0x63, 0x73, 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0x0d, -0x0a, 0x3c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x77, 0x69, -0x64, 0x74, 0x68, 0x3d, 0x22, 0x33, 0x30, 0x30, 0x22, 0x20, -0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x3d, 0x22, 0x30, 0x22, -0x3e, 0x0d, 0x0a, 0x3c, 0x74, 0x72, 0x3e, 0x3c, 0x74, 0x64, -0x20, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x3d, 0x22, 0x6c, 0x65, -0x66, 0x74, 0x22, 0x3e, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, -0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x63, 0x6f, 0x75, 0x72, -0x69, 0x65, 0x72, 0x22, 0x3e, 0x3c, 0x70, 0x72, 0x65, 0x3e, -0x0d, 0x0a, 0x49, 0x50, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, -0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, -0x74, 0x73, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, -0x64, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, -0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, -0x65, 0x74, 0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, 0x0d, 0x0a, -0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, -0x20, 0x20, 0x20, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x64, 0x65, -0x64, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, -0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x44, 0x72, 0x6f, 0x70, -0x70, 0x65, 0x64, 0x0d, 0x0a, 0x49, 0x50, 0x20, 0x65, 0x72, -0x72, 0x6f, 0x72, 0x73, 0x20, 0x20, 0x20, 0x20, 0x49, 0x50, -0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x2f, 0x68, -0x65, 0x61, 0x64, 0x65, 0x72, 0x20, 0x6c, 0x65, 0x6e, 0x67, -0x74, 0x68, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, -0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x49, 0x50, 0x20, -0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x2c, 0x20, 0x68, 0x69, -0x67, 0x68, 0x20, 0x62, 0x79, 0x74, 0x65, 0x0d, 0x0a, 0x20, -0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, -0x20, 0x20, 0x49, 0x50, 0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, -0x68, 0x2c, 0x20, 0x6c, 0x6f, 0x77, 0x20, 0x62, 0x79, 0x74, -0x65, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, -0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x49, 0x50, 0x20, 0x66, -0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x0d, 0x0a, -0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, -0x20, 0x20, 0x20, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, -0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x0d, 0x0a, -0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, -0x20, 0x20, 0x20, 0x57, 0x72, 0x6f, 0x6e, 0x67, 0x20, 0x70, -0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x0d, 0x0a, 0x49, -0x43, 0x4d, 0x50, 0x09, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, -0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x72, 0x65, 0x63, -0x65, 0x69, 0x76, 0x65, 0x64, 0x0d, 0x0a, 0x20, 0x20, 0x20, -0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, -0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x73, 0x65, -0x6e, 0x74, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, -0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, -0x6b, 0x65, 0x74, 0x73, 0x20, 0x64, 0x72, 0x6f, 0x70, 0x70, -0x65, 0x64, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, -0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x54, 0x79, 0x70, -0x65, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x0d, 0x0a, -0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, -0x20, 0x20, 0x20, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, -0x6d, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x0d, 0x0a, -0x54, 0x43, 0x50, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, -0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, -0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x0d, -0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, -0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, -0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, 0x0d, 0x0a, 0x20, 0x20, -0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, -0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x64, -0x72, 0x6f, 0x70, 0x70, 0x65, 0x64, 0x0d, 0x0a, 0x20, 0x20, -0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, -0x20, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x20, -0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x0d, 0x0a, 0x20, 0x20, -0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, -0x20, 0x44, 0x61, 0x74, 0x61, 0x20, 0x70, 0x61, 0x63, 0x6b, -0x65, 0x74, 0x73, 0x20, 0x77, 0x69, 0x74, 0x68, 0x6f, 0x75, -0x74, 0x20, 0x41, 0x43, 0x4b, 0x73, 0x0d, 0x0a, 0x20, 0x20, -0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, -0x20, 0x52, 0x65, 0x73, 0x65, 0x74, 0x73, 0x0d, 0x0a, 0x20, -0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, -0x20, 0x20, 0x52, 0x65, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, -0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x61, 0x0d, 0x0a, -0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, -0x20, 0x20, 0x20, 0x53, 0x79, 0x6e, 0x20, 0x74, 0x6f, 0x20, -0x63, 0x6c, 0x6f, 0x73, 0x65, 0x64, 0x20, 0x70, 0x6f, 0x72, -0x74, 0x0d, 0x0a, 0x55, 0x44, 0x50, 0x20, 0x20, 0x20, 0x20, -0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, -0x65, 0x74, 0x73, 0x20, 0x64, 0x72, 0x6f, 0x70, 0x70, 0x65, -0x64, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, -0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, -0x65, 0x74, 0x73, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, -0x65, 0x64, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, -0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, -0x6b, 0x65, 0x74, 0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, 0x0d, -0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, -0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, -0x73, 0x20, 0x63, 0x68, 0x6b, 0x65, 0x72, 0x72, 0x0d, 0x0a, -0x09, 0x20, 0x20, 0x20, 0x20, 0x20, 0x4e, 0x6f, 0x20, 0x63, -0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, -0x61, 0x76, 0x61, 0x6c, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x0d, -0x0a, 0x3c, 0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, -0x6f, 0x6e, 0x74, 0x3e, 0x3c, 0x2f, 0x74, 0x64, 0x3e, 0x3c, -0x74, 0x64, 0x3e, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, -0x61, 0x63, 0x65, 0x3d, 0x22, 0x63, 0x6f, 0x75, 0x72, 0x69, -0x65, 0x72, 0x22, 0x3e, 0x3c, 0x70, 0x72, 0x65, 0x3e, 0x25, -0x21, 0x20, 0x6e, 0x65, 0x74, 0x2d, 0x73, 0x74, 0x61, 0x74, -0x73, 0x0d, 0x0a, 0x3c, 0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, -0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0x3c, 0x2f, 0x74, 0x64, -0x3e, 0x3c, 0x2f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x3e, 0x0d, -0x0a, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0x0d, 0x0a, -0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0x0d, 0x0a, 0x3c, -0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0x0d, 0x0a, }; - -static const char data_tcp_shtml[] = { -/* /tcp.shtml */ -0x2f, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x00, -0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, -0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, -0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, -0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, -0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, -0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, -0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, -0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, -0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, -0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, -0x22, 0x3e, 0x0d, 0x0a, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, -0x0d, 0x0a, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, -0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, -0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, -0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, -0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, -0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, -0x6c, 0x65, 0x3e, 0x0d, 0x0a, 0x20, 0x20, 0x3c, 0x2f, 0x68, -0x65, 0x61, 0x64, 0x3e, 0x0d, 0x0a, 0x20, 0x20, 0x3c, 0x42, -0x4f, 0x44, 0x59, 0x3e, 0x0d, 0x0a, 0x3c, 0x66, 0x6f, 0x6e, -0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, -0x69, 0x61, 0x6c, 0x22, 0x3e, 0x0d, 0x0a, 0x3c, 0x61, 0x20, -0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, -0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, -0x61, 0x73, 0x6b, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, -0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, -0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, -0x3d, 0x22, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, -0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x52, 0x75, 0x6e, -0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, 0x74, 0x61, 0x74, -0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, -0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, -0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, -0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x43, 0x50, -0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, -0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, -0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, -0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, -0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, -0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, -0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, -0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, -0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, 0x65, 0x65, 0x72, -0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x22, 0x3e, -0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x20, 0x48, -0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, -0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, -0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, -0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, -0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, -0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, -0x72, 0x65, 0x66, 0x3d, 0x22, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, -0x6a, 0x70, 0x67, 0x22, 0x3e, 0x33, 0x37, 0x4b, 0x20, 0x6a, -0x70, 0x67, 0x3c, 0x2f, 0x61, 0x3e, 0x0d, 0x0a, 0x3c, 0x62, -0x72, 0x3e, 0x3c, 0x70, 0x3e, 0x0d, 0x0a, 0x3c, 0x68, 0x72, -0x3e, 0x0d, 0x0a, 0x3c, 0x62, 0x72, 0x3e, 0x0d, 0x0a, 0x3c, -0x68, 0x32, 0x3e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, -0x20, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, -0x6e, 0x73, 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0x0d, 0x0a, 0x3c, -0x70, 0x3e, 0x0d, 0x0a, 0x3c, 0x74, 0x61, 0x62, 0x6c, 0x65, -0x3e, 0x0d, 0x0a, 0x3c, 0x74, 0x72, 0x3e, 0x3c, 0x74, 0x68, -0x3e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x3c, 0x2f, 0x74, 0x68, -0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x52, 0x65, 0x6d, 0x6f, 0x74, -0x65, 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, -0x53, 0x74, 0x61, 0x74, 0x65, 0x3c, 0x2f, 0x74, 0x68, 0x3e, -0x3c, 0x74, 0x68, 0x3e, 0x52, 0x65, 0x74, 0x72, 0x61, 0x6e, -0x73, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x3c, -0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x54, 0x69, -0x6d, 0x65, 0x72, 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, -0x68, 0x3e, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x3c, 0x2f, 0x74, -0x68, 0x3e, 0x3c, 0x2f, 0x74, 0x72, 0x3e, 0x0d, 0x0a, 0x25, -0x21, 0x20, 0x74, 0x63, 0x70, 0x2d, 0x63, 0x6f, 0x6e, 0x6e, -0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x0d, 0x0a, 0x3c, -0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, -0x74, 0x3e, 0x0d, 0x0a, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, -0x3e, 0x0d, 0x0a, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, -0x0d, 0x0a, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0x0d, -0x0a, 0x0d, 0x0a, }; - - - -const struct httpd_fsdata_file file_404_html[] = {NULL, data_404_html, data_404_html + 10, sizeof(data_404_html) - 10, 0}; - -const struct httpd_fsdata_file file_index_html[] = {file_404_html, data_index_html, data_index_html + 12, sizeof(data_index_html) - 12, 0}; - -const struct httpd_fsdata_file file_index_shtml[] = {file_index_html, data_index_shtml, data_index_shtml + 13, sizeof(data_index_shtml) - 13, 0}; - -const struct httpd_fsdata_file file_io_shtml[] = {file_index_shtml, data_io_shtml, data_io_shtml + 10, sizeof(data_io_shtml) - 10, 0}; - -const struct httpd_fsdata_file file_logo_jpg[] = {file_io_shtml, data_logo_jpg, data_logo_jpg + 10, sizeof(data_logo_jpg) - 10, 0}; - -const struct httpd_fsdata_file file_runtime_shtml[] = {file_logo_jpg, data_runtime_shtml, data_runtime_shtml + 15, sizeof(data_runtime_shtml) - 15, 0}; - -const struct httpd_fsdata_file file_stats_shtml[] = {file_runtime_shtml, data_stats_shtml, data_stats_shtml + 13, sizeof(data_stats_shtml) - 13, 0}; - -const struct httpd_fsdata_file file_tcp_shtml[] = {file_stats_shtml, data_tcp_shtml, data_tcp_shtml + 11, sizeof(data_tcp_shtml) - 11, 0}; - -#define HTTPD_FS_ROOT file_tcp_shtml - -#define HTTPD_FS_NUMFILES 8 diff --git a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/makefsdata b/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/makefsdata deleted file mode 100644 index 8d2715a8a..000000000 --- a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/makefsdata +++ /dev/null @@ -1,78 +0,0 @@ -#!/usr/bin/perl - -open(OUTPUT, "> httpd-fsdata.c"); - -chdir("httpd-fs"); - -opendir(DIR, "."); -@files = grep { !/^\./ && !/(CVS|~)/ } readdir(DIR); -closedir(DIR); - -foreach $file (@files) { - - if(-d $file && $file !~ /^\./) { - print "Processing directory $file\n"; - opendir(DIR, $file); - @newfiles = grep { !/^\./ && !/(CVS|~)/ } readdir(DIR); - closedir(DIR); - printf "Adding files @newfiles\n"; - @files = (@files, map { $_ = "$file/$_" } @newfiles); - next; - } -} - -foreach $file (@files) { - if(-f $file) { - - print "Adding file $file\n"; - - open(FILE, $file) || die "Could not open file $file\n"; - - $file =~ s-^-/-; - $fvar = $file; - $fvar =~ s-/-_-g; - $fvar =~ s-\.-_-g; - # for AVR, add PROGMEM here - print(OUTPUT "static const unsigned char data".$fvar."[] = {\n"); - print(OUTPUT "\t/* $file */\n\t"); - for($j = 0; $j < length($file); $j++) { - printf(OUTPUT "%#02x, ", unpack("C", substr($file, $j, 1))); - } - printf(OUTPUT "0,\n"); - - - $i = 0; - while(read(FILE, $data, 1)) { - if($i == 0) { - print(OUTPUT "\t"); - } - printf(OUTPUT "%#02x, ", unpack("C", $data)); - $i++; - if($i == 10) { - print(OUTPUT "\n"); - $i = 0; - } - } - print(OUTPUT "0};\n\n"); - close(FILE); - push(@fvars, $fvar); - push(@pfiles, $file); - } -} - -for($i = 0; $i < @fvars; $i++) { - $file = $pfiles[$i]; - $fvar = $fvars[$i]; - - if($i == 0) { - $prevfile = "NULL"; - } else { - $prevfile = "file" . $fvars[$i - 1]; - } - print(OUTPUT "const struct httpd_fsdata_file file".$fvar."[] = {{$prevfile, data$fvar, "); - print(OUTPUT "data$fvar + ". (length($file) + 1) .", "); - print(OUTPUT "sizeof(data$fvar) - ". (length($file) + 1) ."}};\n\n"); -} - -print(OUTPUT "#define HTTPD_FS_ROOT file$fvars[$i - 1]\n\n"); -print(OUTPUT "#define HTTPD_FS_NUMFILES $i\n"); diff --git a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/uip-conf.h b/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/uip-conf.h deleted file mode 100644 index 62572085f..000000000 --- a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/uip-conf.h +++ /dev/null @@ -1,163 +0,0 @@ -/** - * \addtogroup uipopt - * @{ - */ - -/** - * \name Project-specific configuration options - * @{ - * - * uIP has a number of configuration options that can be overridden - * for each project. These are kept in a project-specific uip-conf.h - * file and all configuration names have the prefix UIP_CONF. - */ - -/* - * Copyright (c) 2006, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: uip-conf.h,v 1.6 2006/06/12 08:00:31 adam Exp $ - */ - -/** - * \file - * An example uIP configuration file - * \author - * Adam Dunkels - */ - -#ifndef __UIP_CONF_H__ -#define __UIP_CONF_H__ - -#define UIP_CONF_EXTERNAL_BUFFER -#define UIP_CONF_PROCESS_HTTPD_FORMS 1 - -/** - * 8 bit datatype - * - * This typedef defines the 8-bit type used throughout uIP. - * - * \hideinitializer - */ -typedef unsigned char u8_t; - -/** - * 16 bit datatype - * - * This typedef defines the 16-bit type used throughout uIP. - * - * \hideinitializer - */ -typedef unsigned short u16_t; - -typedef unsigned long u32_t; - -/** - * Statistics datatype - * - * This typedef defines the dataype used for keeping statistics in - * uIP. - * - * \hideinitializer - */ -typedef unsigned short uip_stats_t; - -/** - * Maximum number of TCP connections. - * - * \hideinitializer - */ -#define UIP_CONF_MAX_CONNECTIONS 40 - -/** - * Maximum number of listening TCP ports. - * - * \hideinitializer - */ -#define UIP_CONF_MAX_LISTENPORTS 40 - -/** - * uIP buffer size. - * - * \hideinitializer - */ -#define UIP_CONF_BUFFER_SIZE 1480 - -/** - * CPU byte order. - * - * \hideinitializer - */ -#define UIP_CONF_BYTE_ORDER UIP_BIG_ENDIAN - -/** - * Logging on or off - * - * \hideinitializer - */ -#define UIP_CONF_LOGGING 0 - -/** - * UDP support on or off - * - * \hideinitializer - */ -#define UIP_CONF_UDP 0 - -/** - * UDP checksums on or off - * - * \hideinitializer - */ -#define UIP_CONF_UDP_CHECKSUMS 1 - -/** - * uIP statistics on or off - * - * \hideinitializer - */ -#define UIP_CONF_STATISTICS 1 - -/* Here we include the header file for the application(s) we use in - our project. */ -/*#include "smtp.h"*/ -/*#include "hello-world.h"*/ -/*#include "telnetd.h"*/ -#include "webserver.h" -/*#include "dhcpc.h"*/ -/*#include "resolv.h"*/ -/*#include "webclient.h"*/ - -#define CCIF -#define CC_REGISTER_ARG - -#endif /* __UIP_CONF_H__ */ - -/** @} */ -/** @} */ diff --git a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/webserver.h b/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/webserver.h deleted file mode 100644 index 5267f0587..000000000 --- a/FreeRTOS/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/webserver.h +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright (c) 2002, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials provided - * with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This file is part of the uIP TCP/IP stack - * - * $Id: webserver.h,v 1.2 2006/06/11 21:46:38 adam Exp $ - * - */ -#ifndef __WEBSERVER_H__ -#define __WEBSERVER_H__ - -#include "apps/httpd/httpd.h" - -typedef struct httpd_state uip_tcp_appstate_t; -/* UIP_APPCALL: the name of the application function. This function - must return void and take no arguments (i.e., C type "void - appfunc(void)"). */ -#define UIP_APPCALL httpd_appcall - - -#endif /* __WEBSERVER_H__ */ diff --git a/FreeRTOS/Demo/SuperH_SH7216_Renesas/ReadMe.txt b/FreeRTOS/Demo/SuperH_SH7216_Renesas/ReadMe.txt new file mode 100644 index 000000000..12c70d213 --- /dev/null +++ b/FreeRTOS/Demo/SuperH_SH7216_Renesas/ReadMe.txt @@ -0,0 +1 @@ +The third party uIP TCP/IP stack and the demo project that used to be in this directory was removed in FreeRTOS version V10.4.3 due to security vulnerabilities identified in uIP. In a future version this demo may be replaced by a version which does not use TCP/IP or uses FreeRTOS’s own TCP/IP stack in place of the original third party stack. \ No newline at end of file
LocalRemoteStateRetransmissionsTimerFlags